<?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>170513</bug_id>
          
          <creation_ts>2017-04-05 11:16:01 -0700</creation_ts>
          <short_desc>Update to Speedometer 2.0 w/updated frameworks + new workloads</short_desc>
          <delta_ts>2018-01-17 19:12:21 -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>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>171305</dependson>
    
    <dependson>171306</dependson>
    
    <dependson>171307</dependson>
    
    <dependson>171308</dependson>
    
    <dependson>171323</dependson>
    
    <dependson>171325</dependson>
    
    <dependson>171329</dependson>
    
    <dependson>171342</dependson>
    
    <dependson>171343</dependson>
    
    <dependson>171411</dependson>
    
    <dependson>171444</dependson>
    
    <dependson>171448</dependson>
    
    <dependson>171452</dependson>
    
    <dependson>171464</dependson>
    
    <dependson>171471</dependson>
    
    <dependson>172077</dependson>
    
    <dependson>172211</dependson>
    
    <dependson>172213</dependson>
          <blocked>172335</blocked>
    
    <blocked>172339</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Addy Osmani">addyo</reporter>
          <assigned_to name="Addy Osmani">addyo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>joepeck</cc>
    
    <cc>lforschler</cc>
    
    <cc>mjs</cc>
    
    <cc>rniwa</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1294570</commentid>
    <comment_count>0</comment_count>
    <who name="Addy Osmani">addyo</who>
    <bug_when>2017-04-05 11:16:01 -0700</bug_when>
    <thetext>I&apos;ve been coordinating with rniwa@ (and other vendors) as I&apos;ve been working on updating Speedometer to use the latest version of all frameworks in the benchmark while expanding the workloads it tests. This issue is to track upstreaming this work into Webkit. At present, this work is hosted in a private GitHub repo but we would love to land in trunk so everyone is working off the same canonical version. 

Given the number of changes involved, rniwa@ suggested trying to land each framework implementation piecemeal. We&apos;re happy to do this. I&apos;m also more than happy to welcome help from anyone interested in helping upstream this work as I&apos;m still new to the Webkit contribution process :) 

More information about the updates to the benchmark can be found below:

Speedometer 2.0 is an incremental rewrite of the 1.0 benchmark to both update and expand it’s workloads to better reflect modern patterns, libraries &amp; bundling used in the JS ecosystem. 

What’s new?
---------------------

All Speedometer 1.0 framework apps rewritten for their latest versions.

S1 was released in 2014 and included six popular JS frameworks &amp; libraries at the time: Ember, Angular, React, Backbone, jQuery and Flight. Although there have been some large shifts in these libraries over the last two years the benchmark versions have remained stale until now. S2 includes a full rewrite of these apps to use the latest patterns and dependencies for these frameworks.

For example, the Ember app was updated using Ember CLI, the now the prescribed way to create new Ember apps in that community. The React app was rewritten with newer best practices and also no longer uses a runtime based JSX transformer (now deprecated). Instead just uses Babel + a build-time Babel-plugin for accomplishing the same.

New frameworks and libraries added, including work reflecting modern bundler output

The popularity of React has spawned a whole suite of libraries that iterated on it, focusing on different characteristics of performance and lower parse/eval costs and overall developer experience. Two such frameworks are Preact and VueJS (used by and supported by Alibaba). The S2 versions of these apps use Webpack + RollUp (as prescribed by their respective tooling). Vue is predicted to gain significant traction in 2017/18 and is worth tracking. S2 also now tracks state management patterns, via a React + Redux implementation.

TypeScript now supported
---------------------------------

S2 includes an Angular.js 2.0 implementation transpiled from TypeScript to JS. We believe this to be a common workflow Angular developers will use for new projects in 2017 and transpiled TS code to become more widely used as framework authors warm to it.

TypeScript (TS) is a typed superset of JS from Microsoft that required transpilation back to JS in order to be executed. It has been gaining traction in the ecosystem due to considering types as a first-class syntax, generally fast compilation and rich tooling for type-aware autocompletion and error highlighting during iteration. Framework rewrites, such as Angular 2.0 have gone all-in on TS as the default language for their developers and there may be value in engines tracking transpiled TS code.

Better reflective of ES2015 code and workflows
----------------------------------------------------

S1 included a vanilla JS implementation. S2 builds on this, introducing an ES2015 implementation taking advantage of features like Classes, const/let, arrow functions and Template strings.

Although tracking vanilla ES2015 support has value, the reality is transpilers like Babel have made it trivial to transpile all of your sources back to ES5 for maximum cross-browser compatibility. To reflect this increasingly common workload, S2 includes an ES2015 implementation that uses both ES Modules and has ES5 output generated by Babel. As V8 gains full support for module semantics, we can also include a non-Babelified version of this workload.

Future facing
-----------------------

We identified functional programming patterns as a set of concepts that aren’t well tracked or optimized for today. Consulting the FP JS community, two primary suggestions that arose were supporting Elm and PureScript, both of which transpile down to JS. S2 includes implementations for both of these. Other alternatives like Om and ClojureScript were considered, but have patterns sufficiently close to the other two that we should be covered.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297987</commentid>
    <comment_count>1</comment_count>
      <attachid>307290</attachid>
    <who name="Addy Osmani">addyo</who>
    <bug_when>2017-04-17 13:22:31 -0700</bug_when>
    <thetext>Created attachment 307290
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297989</commentid>
    <comment_count>2</comment_count>
    <who name="Addy Osmani">addyo</who>
    <bug_when>2017-04-17 13:25:22 -0700</bug_when>
    <thetext>Getting to grips with the contribution process as this is my first Webkit patch - some additional styling issues &amp; a bug in the new Ember implementation I&apos;ll be addressing shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1298111</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-04-17 17:38:34 -0700</bug_when>
    <thetext>I think the patch here is too big for me to review. As in, I can&apos;t even open it.

Please split into chunks of 1MB patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1298112</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-04-17 17:40:17 -0700</bug_when>
    <thetext>Please describe what changes you&apos;re making under &quot;reviewed by NOBODY (OOPS!)&quot; followed by a blank line. You don&apos;t need per-function/CSS rule comment starting with (~): for each file other than modifications to the existing files. It&apos;s sufficient have a list of times for updating frameworks.

I think it&apos;s best to split the patch that modifies existing files from patches that add new files / updates frameworks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1298116</commentid>
    <comment_count>5</comment_count>
    <who name="Addy Osmani">addyo</who>
    <bug_when>2017-04-17 17:50:49 -0700</bug_when>
    <thetext>That&apos;s reasonable. I&apos;ll follow up with patches that match those suggestions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300564</commentid>
    <comment_count>6</comment_count>
      <attachid>307989</attachid>
    <who name="Addy Osmani">addyo</who>
    <bug_when>2017-04-24 10:45:14 -0700</bug_when>
    <thetext>Created attachment 307989
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300581</commentid>
    <comment_count>7</comment_count>
    <who name="Addy Osmani">addyo</who>
    <bug_when>2017-04-24 11:23:36 -0700</bug_when>
    <thetext>Resubmitted with just an update to Vanilla as a start as I had a question:

We&apos;ve switched from Bower -&gt; npm for package management. Is the way this is being done in the latest patch okay (checked in node_modules)? If so, I&apos;ll follow through with the other apps similarly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300591</commentid>
    <comment_count>8</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-04-24 11:52:46 -0700</bug_when>
    <thetext>(In reply to Addy Osmani from comment #7)
&gt; Resubmitted with just an update to Vanilla as a start as I had a question:
&gt; 
&gt; We&apos;ve switched from Bower -&gt; npm for package management. Is the way this is
&gt; being done in the latest patch okay (checked in node_modules)? If so, I&apos;ll
&gt; follow through with the other apps similarly.

What&apos;s the benefit of switching to npm here? What does this accomplish for the benchmark?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300724</commentid>
    <comment_count>9</comment_count>
    <who name="Addy Osmani">addyo</who>
    <bug_when>2017-04-24 16:54:55 -0700</bug_when>
    <thetext>The benefit of switching to npm (with a package.json for each implem) is that it enables us to more easily update app dependencies over time. With most of the front-end ecosystem switching from Bower to npm for this purpose, this change allows us pull deps from their canonical locations on npm vs. trying to make Bower continue to work for us. 

To give a more concrete example, many of the frameworks we want to benchmark now recommend a CLI (written in Node, using npm) for creating apps with them. A lot of the app rewrites for S2 use such as CLI and focus on node_modules as their source of truth for library code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300737</commentid>
    <comment_count>10</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-04-24 17:12:34 -0700</bug_when>
    <thetext>(In reply to Addy Osmani from comment #9)
&gt; The benefit of switching to npm (with a package.json for each implem) is
&gt; that it enables us to more easily update app dependencies over time. With
&gt; most of the front-end ecosystem switching from Bower to npm for this
&gt; purpose, this change allows us pull deps from their canonical locations on
&gt; npm vs. trying to make Bower continue to work for us. 
Sounds reasonable to me.
 
&gt; To give a more concrete example, many of the frameworks we want to benchmark
&gt; now recommend a CLI (written in Node, using npm) for creating apps with
&gt; them. A lot of the app rewrites for S2 use such as CLI and focus on
&gt; node_modules as their source of truth for library code.

If such apps rely on a CLI, how do they ship to the browser? Do they do something a-la browserify to bundle all the dependencies? If so, do we plan to do the same?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300745</commentid>
    <comment_count>11</comment_count>
    <who name="Addy Osmani">addyo</who>
    <bug_when>2017-04-24 17:17:14 -0700</bug_when>
    <thetext>Good question :) The output of these tools is generally a `dist` directory which in many cases uses Webpack (or another module bundler) to turn everything into a browser-friendly version of the app.

The benchmark runs against the `dist` version (which I&apos;m also planning on checking in for those apps) so we don&apos;t need to run anything extra on our side.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300780</commentid>
    <comment_count>12</comment_count>
      <attachid>307989</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-04-24 18:24:05 -0700</bug_when>
    <thetext>Comment on attachment 307989
Patch

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

&gt; PerformanceTests/ChangeLog:7
&gt; +Update the Speedometer &gt; Vanilla application implementation to latest TodoMVC. This change also switches to npm for packaging.

This line should be indented like all other lines.
We should have a separate bug for each one of these updates,
and we should make them block this umbrella bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300781</commentid>
    <comment_count>13</comment_count>
      <attachid>308035</attachid>
    <who name="Addy Osmani">addyo</who>
    <bug_when>2017-04-24 18:25:37 -0700</bug_when>
    <thetext>Created attachment 308035
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1301401</commentid>
    <comment_count>14</comment_count>
    <who name="Addy Osmani">addyo</who>
    <bug_when>2017-04-25 18:47:25 -0700</bug_when>
    <thetext>
&gt; We should have a separate bug for each one of these updates,
&gt; and we should make them block this umbrella bug.

That sounds completely reasonable. I&apos;ve started the ball rolling on individual bugs for each of these updates.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1301594</commentid>
    <comment_count>15</comment_count>
    <who name="Addy Osmani">addyo</who>
    <bug_when>2017-04-26 08:41:21 -0700</bug_when>
    <thetext>Fyi, work on each patch here is going to be split into two parts:

1. Updating/adding the newer implementation
2. Hooking up the implementation to the benchmark runner so both Full.html and Interactive can be run against them individually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302924</commentid>
    <comment_count>16</comment_count>
      <attachid>308636</attachid>
    <who name="Addy Osmani">addyo</who>
    <bug_when>2017-04-28 18:09:10 -0700</bug_when>
    <thetext>Created attachment 308636
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302951</commentid>
    <comment_count>17</comment_count>
    <who name="Addy Osmani">addyo</who>
    <bug_when>2017-04-28 19:02:13 -0700</bug_when>
    <thetext>Quick update:

- This patch (170513) now includes the updated benchmark runner
- Patches updating ReactJS, AngularJS, Backbone, jQuery, EmberJS, VanillaJS, FlightJS are up
- Patches adding Angular 2, React + Redux, Preact, VueJS, Inferno, ES2015, ES2015 (transpiled) with Babel + Webpack and Elm are all up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1306270</commentid>
    <comment_count>18</comment_count>
      <attachid>308636</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-05-08 22:52:02 -0700</bug_when>
    <thetext>Comment on attachment 308636
Patch

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

&gt; PerformanceTests/Speedometer/InteractiveRunner.html:78
&gt; +// Parse query string parameters in case a specific &apos;suite&apos; is specified
&gt; +// Part of enabling InteractiveRunner.html?suite=React-TodoMVC support
&gt; +// so that an individual test can be automatically run via a URL

In WebKit, we avoid adding comments these &quot;what&quot; comments.

&gt; PerformanceTests/Speedometer/InteractiveRunner.html:79
&gt; +var queryString = (function(a) {

Instad, we use a descriptive function name like &quot;function parseQueryString()&quot;.

Also, please don&apos;t use a single letter variable like &quot;a&quot;:
https://webkit.org/code-style-guidelines/#names-full-words
How about pairList?

Also, for any anonymous function, there should be a space between function and ().
See https://trac.webkit.org/wiki/WebInspectorCodingStyleGuide

&gt; PerformanceTests/Speedometer/InteractiveRunner.html:80
&gt; +    if (a == &apos;&apos;) return {};

How can this ever be true? I think we can remove this code.
If we need to keep this code, return should be on a separate line with an indention as in:
if (~)
    return {};
https://webkit.org/code-style-guidelines/#linebreaking-multiple-statements

&gt; PerformanceTests/Speedometer/InteractiveRunner.html:83
&gt; +    for (var i = 0; i &lt; a.length; ++i)
&gt; +    {

Please place { after for followed by exactly one space as in: for (~) {.

&gt; PerformanceTests/Speedometer/InteractiveRunner.html:84
&gt; +        var p=a[i].split(&apos;=&apos;, 2);

There should be a space around each assignment and comparison operator such as =:
https://webkit.org/code-style-guidelines/#spacing-binary-ternary-op

So pairList[i].split(&apos;=&apos;, 2);
I&apos;d call this variable pair or keyValue.

&gt; PerformanceTests/Speedometer/InteractiveRunner.html:95
&gt; +    if (suiteName !== undefined &amp;&amp; suiteName !== &apos;&apos;) {

We prefer early exits over wrapping in if so:
if (~)
  return;
Suites.forEach...

&gt; PerformanceTests/Speedometer/InteractiveRunner.html:99
&gt; +            if (element.name !== suiteName) {
&gt; +                element.disabled = true;
&gt; +            }

No curly braces around a single statement: https://webkit.org/code-style-guidelines/#braces-one-line

&gt; PerformanceTests/Speedometer/InteractiveRunner.html:105
&gt; +    var queryParam = queryString[&apos;suite&apos;];

Why don&apos;t we call parseQueryString here and store the parsed query string in a local variable instead of a global variable?

&gt; PerformanceTests/Speedometer/InteractiveRunner.html:107
&gt; +        // Reset all selected options except selection

This comment repeats the code below. Please remove, and remove the curly braces since it would be a single line statement.

&gt; PerformanceTests/Speedometer/InteractiveRunner.html:154
&gt; +    if (queryParam !== undefined) {
&gt; +        // Individually run the specified test automatically
&gt; +        document.getElementById(&apos;runSuites&apos;).click();
&gt; +    }

I think this should be a separate query string option like autoStart, startOnLoad, startAutomatically.
Again, the comment repeats what the code below says. Please remove along with the curly braces.

&gt; PerformanceTests/Speedometer/resources/tests.js:4
&gt; +function triggerKeyboardEvent(el, keyCode) {

Please don&apos;t use abbreviations such as el:
https://webkit.org/code-style-guidelines/#names-full-words

&gt; PerformanceTests/Speedometer/resources/tests.js:6
&gt; +   var eventObj = document.createEventObject ?
&gt; +       document.createEventObject() : document.createEvent(&quot;Events&quot;);

Do we really need a separate branch for IE?
I tried to stay way from having IE-specific code for the sake of running the same code on all browsers.

&gt; PerformanceTests/Speedometer/resources/tests.js:11
&gt; +      eventObj.initEvent(&quot;keydown&quot;, true, true);

Nit: indentation here is three spaces. Also, no braces around a single line statement.

&gt; PerformanceTests/Speedometer/resources/tests.js:17
&gt; +   el.dispatchEvent ? el.dispatchEvent(eventObj) : el.fireEvent(&quot;onkeydown&quot;, eventObj);

Do we really need to have a branch for fireEvent?

&gt; PerformanceTests/Speedometer/resources/tests.js:33
&gt; +                triggerKeyboardEvent(newTodo, 13);

Instead of repeating the magic key code of 13 everywhere, can we define a variable with a descriptive name somewhere?
e.g. var ENTER_KEY_CODE = 13 in the global code.

&gt; PerformanceTests/Speedometer/resources/tests.js:67
&gt; +            for (var i = 0; i &lt; checkboxes.length; i++)

Given this is a ES2015 test, we might as well as use for (const box of checkboxes) here.

&gt; PerformanceTests/Speedometer/resources/tests.js:72
&gt; +            for (var i = 0; i &lt; deleteButtons.length; i++)

Ditto.

&gt; PerformanceTests/Speedometer/resources/tests.js:126
&gt; +                var keydownEvent = document.createEvent(&apos;Event&apos;);
&gt; +                keydownEvent.initEvent(&apos;keydown&apos;, true, true);
&gt; +                keydownEvent.which = 13; // VK_ENTER
&gt; +                newTodo.dispatchEvent(keydownEvent);

We can&apos;t use triggerKeyboardEvent here?

&gt; PerformanceTests/Speedometer/resources/tests.js:132
&gt; +            for (var i = 0; i &lt; checkboxes.length; i++)
&gt; +                checkboxes[i].click();

Does this click result in React doing some work?
If it&apos;s just dirtying React tests, we might be just testing how fast click executes, which isn&apos;t really all that interesting.
This is why my Ember test case had manually called emberRun to force flushing of the DOM state updates
since what we&apos;re really interested in measuring how long framework code takes to run after user interaction
not so much how many user interactions it can handle per their event loop (since a normal user would never click 25 elements in a single task).

&gt; PerformanceTests/Speedometer/resources/tests.js:318
&gt; +                var keydownEvent = document.createEvent(&apos;Event&apos;);
&gt; +                keydownEvent.initEvent(&apos;keydown&apos;, true, true);
&gt; +                keydownEvent.which = 13;
&gt; +                newTodo.dispatchEvent(keydownEvent);

Can&apos;t use triggerKeyboardEvent here either?

&gt; PerformanceTests/Speedometer/resources/tests.js:359
&gt; -            for (var i = 0; i &lt; checkboxes.length; i++)
&gt; +            for (var i = 0; i &lt; checkboxes.length; i++) {
&gt;                  itemIndexToId[i] = $(checkboxes[i]).closest(&apos;li&apos;).data(&apos;id&apos;);
&gt; +            } 

Nit: This code change is unnecessary, and in fact makes the code violate WebKit&apos;s code style guideline:
https://webkit.org/code-style-guidelines/#braces-one-line

&gt; PerformanceTests/Speedometer/resources/tests.js:381
&gt; +            var clear = contentDocument.querySelector(&apos;#clear-completed&apos;);
&gt; +            if (clear !== null) {
&gt; +                clear.click();
&gt; +            }

Huh, it&apos;s kind of interesting that we only clear items in the jQuery test case. It&apos;s probably an oversight when I first wrote it.
But why do we need to add this if now? It&apos;s bad for benchmarks to sometimes call clear.
Either we should get rid this call to clear() altogether or make the test case deterministic.
r- because we can&apos;t have this non-determinism / ambiguity.

&gt; PerformanceTests/Speedometer/resources/tests.js:395
&gt; -    name: &apos;AngularJS-TodoMVC&apos;,
&gt; -    url: &apos;todomvc/architecture-examples/angularjs/index.html&apos;,
&gt; +    name: &apos;Preact-TodoMVC&apos;,
&gt; +    url: &apos;todomvc/architecture-examples/preact/build/index.html&apos;,

I would have preferred if you didn&apos;t change the ordering so that the diff doesn&apos;t look so crazy but perhaps you&apos;re ordering them lexicologically?
If so, we could just do that after all suites are added.

&gt; PerformanceTests/Speedometer/resources/tests.js:424
&gt; +    url: &apos;todomvc/vanilla-examples/es2015-babel-webpack/dist/index.html&apos;,

I think you meant to refer to todomvc/architecture-examples/inferno/index.html ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308239</commentid>
    <comment_count>19</comment_count>
      <attachid>309999</attachid>
    <who name="Addy Osmani">addyo</who>
    <bug_when>2017-05-12 19:43:22 -0700</bug_when>
    <thetext>Created attachment 309999
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308240</commentid>
    <comment_count>20</comment_count>
    <who name="Addy Osmani">addyo</who>
    <bug_when>2017-05-12 19:45:48 -0700</bug_when>
    <thetext>This is a revision to the original CL with the following:

- Attempted to address feedback, in particular around style
- Fewer considerations for older browsers (IE), simplifying event code
- Added &apos;startAutomatically&apos; support. Works with the full suite or individual suites
- Discovered some apps we committed required some very minor fixes to work with the updated runner
- Tested both Full.html and InteractiveRunner.html in multiple browsers. Appears to now be working end to end</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308250</commentid>
    <comment_count>21</comment_count>
      <attachid>309999</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-05-12 20:10:03 -0700</bug_when>
    <thetext>Comment on attachment 309999
Patch

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

&gt; PerformanceTests/Speedometer/InteractiveRunner.html:79
&gt; +    for (var i = 0; i &lt; pairList.length; ++i)
&gt; +    {

Nit: { should be on the same line as for with a space as in: for (~) {

&gt; PerformanceTests/Speedometer/InteractiveRunner.html:89
&gt; +// Disable all suites other than a suite specified with a query string

This comment repeats what the code below says. Please remove it.

&gt; PerformanceTests/Speedometer/resources/tests.js:13
&gt; +var eventCache = {};
&gt; +[&apos;keyup&apos;, &apos;keydown&apos;, &apos;keypress&apos;].forEach(function (type) {
&gt; +    var event = document.createEvent(&apos;Events&apos;);
&gt; +    event.initEvent(type, true, true);
&gt; +    Object.defineProperty(event, &apos;keyCode&apos;, {value: ENTER_KEY_CODE});
&gt; +    Object.defineProperty(event, &apos;which&apos;, {value: ENTER_KEY_CODE});
&gt; +    event.key = &apos;ENTER&apos;;
&gt; +    eventCache[type] = event;
&gt; +})

I think it&apos;s better to create new events each time. Re-using events like this is not a common pattern.

&gt; PerformanceTests/Speedometer/resources/tests.js:215
&gt; +            var appView = contentWindow.appView;
&gt; +            var fakeEvent = {which: 13};

Do we need appView/fakeEvent here?

&gt; PerformanceTests/Speedometer/resources/tests.js:348
&gt; -            var todomvc = contentWindow.todomvc;
&gt; +            var app = contentWindow.app;

Looks like this variable is never used?

&gt; PerformanceTests/Speedometer/resources/tests.js:355
&gt; +            var app = contentWindow.app;

Ditto.

&gt; PerformanceTests/Speedometer/resources/tests.js:364
&gt; +            if (clear !== null) {
&gt; +                clear.click();
&gt; +            }

Nit: No curly braces around a single statement.

&gt; PerformanceTests/Speedometer/resources/tests.js:371
&gt; +            for (var i = 0; i &lt; deleteButtons.length; i++) {
&gt; +                app.currentItemIndex = i;
&gt; +                app.destroy({ target: deleteButtons[i] });
&gt; +            }

Really!? We can&apos;t invoke click() on the buttons?

&gt; PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs/index.html:9
&gt; -    &lt;base href=&quot;/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs&quot; /&gt;
&gt; +    &lt;base href=&quot;/Speedometer/resources/todomvc/architecture-examples/emberjs/&quot; /&gt;

Please get rid of this base altogether. Speedometer is not always hosted at the top-level directory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308257</commentid>
    <comment_count>22</comment_count>
      <attachid>310006</attachid>
    <who name="Addy Osmani">addyo</who>
    <bug_when>2017-05-12 20:49:11 -0700</bug_when>
    <thetext>Created attachment 310006
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308258</commentid>
    <comment_count>23</comment_count>
      <attachid>310007</attachid>
    <who name="Addy Osmani">addyo</who>
    <bug_when>2017-05-12 20:50:53 -0700</bug_when>
    <thetext>Created attachment 310007
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308259</commentid>
    <comment_count>24</comment_count>
      <attachid>310008</attachid>
    <who name="Addy Osmani">addyo</who>
    <bug_when>2017-05-12 21:02:33 -0700</bug_when>
    <thetext>Created attachment 310008
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308260</commentid>
    <comment_count>25</comment_count>
    <who name="Addy Osmani">addyo</who>
    <bug_when>2017-05-12 21:03:06 -0700</bug_when>
    <thetext>Thanks for the feedback. PTAL. 

&gt; Really!? We can&apos;t invoke click() on the buttons?

I thought this was necessary due to an Edge bug, but it appears to work just fine with the pattern used in the other apps. Switched to this in the latest changes.

&gt; I think it&apos;s better to create new events each time. Re-using events like this is not a common pattern.

Switched to a pattern that doesn&apos;t use caching.


&gt; Emberjs
&gt; Please get rid of this base altogether. Speedometer is not always hosted at the top-level directory.

The version of ember-cli used for this application prescribes the use of base to specify the root (yes, it&apos;s a bizarre pattern). Without this in place, the rest of their routing and configuration fails to correctly load. I&apos;ve read that there are some hacks possible to work around this limitation, but figured getting this working initially would allow us to chase that up in a follow up CL. I&apos;m happy to work on that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308262</commentid>
    <comment_count>26</comment_count>
      <attachid>310007</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-05-12 21:09:17 -0700</bug_when>
    <thetext>Comment on attachment 310007
Patch

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

&gt; PerformanceTests/Speedometer/InteractiveRunner.html:142
&gt; +    if (parseQueryString[&apos;startAutomatically&apos;] !== undefined)

I guess we could also do &apos;startAutomatically&apos; in parseQueryString.

&gt; PerformanceTests/Speedometer/resources/tests.js:9
&gt; +    Object.defineProperty(event, &apos;keyCode&apos;, {value: ENTER_KEY_CODE});
&gt; +    Object.defineProperty(event, &apos;which&apos;, {value: ENTER_KEY_CODE});

Why do we need to use defineProperty? Probably deserves a comment here or a comment in the change log in the form of
Speedometer/resources/tests.js
(triggerEnter): ~

&gt; PerformanceTests/Speedometer/resources/tests.js:178
&gt; +            var appView = contentWindow.App;

It looks like this variable is not used.

&gt; PerformanceTests/Speedometer/resources/tests.js:210
&gt; +            var appView = contentWindow.appView;
&gt; +            var fakeEvent = {which: 13};

It looks like these variables aren&apos;t used.

&gt; PerformanceTests/Speedometer/resources/tests.js:274
&gt; +            var appView = contentWindow.App;

Ditto.

&gt; PerformanceTests/Speedometer/resources/tests.js:308
&gt;              var todomvc = contentWindow.todomvc;

It looks like this variable is never used either.
We might as well as delete it while we&apos;re at.

&gt; PerformanceTests/Speedometer/resources/tests.js:356
&gt; +            var clear = contentDocument.querySelector(&apos;#clear-completed&apos;);
&gt; +            if (clear !== null)
&gt; +                clear.click();

Not saying that we should in this patch but we should consider either deleting this code or doing it in all other test cases.
It&apos;s odd to do this only in jQuery test case.

&gt; PerformanceTests/Speedometer/resources/tests.js:358
&gt; +

Maybe delete this blank line? We don&apos;t have it elsewhere.

&gt; PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angular/dist/index.html:12
&gt; -&lt;link href=&quot;styles.d41d8cd98f00b204e980.bundle.css&quot; rel=&quot;stylesheet&quot;/&gt;&lt;/head&gt;
&gt; +&lt;/head&gt;

For these changes in the benchmark contents, you should explain why you&apos;re making changes.

&gt; PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs/index.html:9
&gt; -    &lt;base href=&quot;/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs&quot; /&gt;
&gt; +    &lt;base href=&quot;/Speedometer/resources/todomvc/architecture-examples/emberjs/&quot; /&gt;

Again, please get rid of this base element. We can&apos;t require the benchmark be always hosted on a server or placed at /.

&gt; PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs/source/app/services/repo.js:2
&gt; -import * as localStorageMemory from &apos;./memory&apos;;
&gt; +import localStorageMemory from &apos;./memory&apos;;

Why is this change needed at all even it&apos;s not be used in the benchmark?
You should at least explain the rationale in the change log after &lt;filename&gt;:.

&gt; PerformanceTests/Speedometer/resources/todomvc/architecture-examples/jquery/node_modules/director/LICENSE:1
&gt; +Copyright (c) 2011 Charlie Robbins, Paolo Fragomeni, &amp; the Contributors.

You should explain in the change log why you&apos;re adding these files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308263</commentid>
    <comment_count>27</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-05-12 21:10:40 -0700</bug_when>
    <thetext>(In reply to Addy Osmani from comment #25)
&gt;
&gt; The version of ember-cli used for this application prescribes the use of
&gt; base to specify the root (yes, it&apos;s a bizarre pattern). Without this in
&gt; place, the rest of their routing and configuration fails to correctly load.
&gt; I&apos;ve read that there are some hacks possible to work around this limitation,
&gt; but figured getting this working initially would allow us to chase that up
&gt; in a follow up CL. I&apos;m happy to work on that.

Okay, that certainly needs to be fixed. We shouldn&apos;t be requiring the benchmark to be always hosted on a server or be placed at /.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308264</commentid>
    <comment_count>28</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-05-12 21:28:37 -0700</bug_when>
    <thetext>As you suggested we can fix it in a separate patch but we can&apos;t call it done until that&apos;s fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308269</commentid>
    <comment_count>29</comment_count>
      <attachid>310011</attachid>
    <who name="Addy Osmani">addyo</who>
    <bug_when>2017-05-12 22:18:15 -0700</bug_when>
    <thetext>Created attachment 310011
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308271</commentid>
    <comment_count>30</comment_count>
    <who name="Addy Osmani">addyo</who>
    <bug_when>2017-05-12 22:23:23 -0700</bug_when>
    <thetext>&gt; Ember fixes

I completely agree. I&apos;ll file a separate bug and self-assign to address the path issue.

&gt; Maybe delete this blank line? We don&apos;t have it elsewhere.

Deleted

&gt; Not saying that we should in this patch but we should consider either deleting this code or doing it in all other test cases.
It&apos;s odd to do this only in jQuery test case.

Removed this from the test.

&gt; It looks like this variable is never used either.
We might as well as delete it while we&apos;re at.

Removed.

&gt; It looks like this variable is not used.

Removed x2

&gt; Why do we need to use defineProperty? 

Dropped in favor of event.x assignment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308396</commentid>
    <comment_count>31</comment_count>
      <attachid>310057</attachid>
    <who name="Addy Osmani">addyo</who>
    <bug_when>2017-05-13 20:47:17 -0700</bug_when>
    <thetext>Created attachment 310057
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308397</commentid>
    <comment_count>32</comment_count>
    <who name="Addy Osmani">addyo</who>
    <bug_when>2017-05-13 20:50:39 -0700</bug_when>
    <thetext>In addition to the other requested edits addressed, I have also fixed the issue of the Ember implementation needing a base tag to function correctly in https://bugs.webkit.org/attachment.cgi?id=310057&amp;action=diff#a/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs/index.html_sec1.

The workaround was fixing Ember&apos;s embedded environment configuration to set locationType to &apos;none&apos;. The decoded version of that string is accordingly:

```
&lt;meta name=&quot;todomvc/config/environment&quot; content=&quot;{&quot;modulePrefix&quot;:&quot;todomvc&quot;,&quot;environment&quot;:&quot;development&quot;,&quot;locationType&quot;:&quot;none&quot;,&quot;EmberENV&quot;:{&quot;FEATURES&quot;:{}},&quot;APP&quot;:{&quot;name&quot;:&quot;todomvc&quot;,&quot;version&quot;:&quot;0.0.0 2c3f8158&quot;},&quot;exportApplicationGlobal&quot;:true}&quot; /&gt;
```

which has the (encoded/final built) form of:

```
&lt;meta name=&quot;todomvc/config/environment&quot; content=&quot;%7B%22modulePrefix%22%3A%22todomvc%22%2C%22environment%22%3A%22development%22%2C%22locationType%22%3A%22none%22%2C%22EmberENV%22%3A%7B%22FEATURES%22%3A%7B%7D%7D%2C%22APP%22%3A%7B%22name%22%3A%22todomvc%22%2C%22version%22%3A%220.0.0%202c3f8158%22%7D%2C%22exportApplicationGlobal%22%3Atrue%7D&quot; /&gt;
```</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308842</commentid>
    <comment_count>33</comment_count>
      <attachid>310057</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-05-15 16:09:03 -0700</bug_when>
    <thetext>Comment on attachment 310057
Patch

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

&gt; PerformanceTests/ChangeLog:8
&gt; +        Speedometer: refresh test runner and fix apps to work with it

I don&apos;t think &quot;Speedometer: &quot; prefix is needed. Also please end the sentence with a period.

&gt; PerformanceTests/ChangeLog:11
&gt; +        (parseQueryString): Adds support for startAutomatically param

Nit: query parameter* and missing a period.

&gt; PerformanceTests/ChangeLog:18
&gt; +        (base): enable Ember TodoMVC to be run from any directory/level

Nit: Capitalize &quot;enable&quot; and add a period as well.

&gt; PerformanceTests/ChangeLog:31
&gt; +        (director): Add missing director.js dependency for jQuery TodoMVC implementation

(~) is used for a function. Here, you&apos;re talking about adding a new directory
so your comment should appear next to the first file being added.
Since it&apos;s a long time, you can wrap the line after the first sentence
and align your second line of comment to &quot;* &quot; at the beginning of each file as in:
        * Speedometer/~/: This is some comment.
        More comment here.

&gt; PerformanceTests/ChangeLog:33
&gt; +        (path): Fix path to built Elm TodoMVC scripts (build -&gt; dist)

You&apos;re not fixing a function named path so this should appear after : in the previous line.
You can wrap the line at a reasonable length, of course.

&gt; PerformanceTests/Speedometer/InteractiveRunner.html:90
&gt; +    if (suiteName === undefined || suiteName === &apos;&apos;)
&gt; +        return;

Why are we checking this twice in its call site and here?

&gt; PerformanceTests/Speedometer/resources/tests.js:56
&gt; +                newTodo.value = &apos;Something to do&apos; + i;

I think we should have a space after &quot;do&quot; otherwise, the text would look like &quot;Something to do5&quot;.

&gt; PerformanceTests/Speedometer/resources/tests.js:86
&gt; +                newTodo.value = &apos;Something to do&apos; + i;

Ditto about having a space after do.

&gt; PerformanceTests/Speedometer/resources/tests.js:150
&gt; +                newTodo.value = &apos;Something to do&apos; + i;

Ditto about having a space after do.

&gt; PerformanceTests/Speedometer/resources/tests.js:179
&gt; +                newTodo.value = &apos;Something to do&apos; + i;

Ditto about having a space after do.

&gt; PerformanceTests/Speedometer/resources/tests.js:272
&gt; +                newTodo.value = &apos;Something to do&apos; + i;

Ditto about having a space after do.

&gt; PerformanceTests/Speedometer/resources/tests.js:306
&gt; +                newTodo.value = &apos;Something to do &apos; + i;
&gt; +                newTodo.value = &apos;Something to do&apos; + i;

Duplicated code. Also the first statement contains one extra space.

&gt; PerformanceTests/Speedometer/resources/tests.js:368
&gt; +                newTodo.value = &apos;Something to do&apos; + i;

Ditto about having a space after do.

&gt; PerformanceTests/Speedometer/resources/tests.js:397
&gt; +                newTodo.value = &apos;Something to do&apos; + i;

Ditto about having a space after do.

&gt; PerformanceTests/Speedometer/resources/tests.js:430
&gt; +                newTodo.value = &apos;Something to do&apos; + i;

Ditto about having a space after do.

&gt; PerformanceTests/Speedometer/resources/tests.js:463
&gt; +                newTodo.value = &apos;Something to do&apos; + i;

Ditto about having a space after do.

&gt; PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs/index.html:20
&gt; -    &lt;script src=&quot;/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs/assets/vendor.js&quot;&gt;&lt;/script&gt;
&gt; -    &lt;script src=&quot;/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs/assets/todomvc.js&quot;&gt;&lt;/script&gt;
&gt; +    &lt;script src=&quot;assets/vendor.js&quot;&gt;&lt;/script&gt;
&gt; +    &lt;script src=&quot;assets/todomvc.js&quot;&gt;&lt;/script&gt;

Nice fix!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1309015</commentid>
    <comment_count>34</comment_count>
      <attachid>310234</attachid>
    <who name="Addy Osmani">addyo</who>
    <bug_when>2017-05-16 00:03:52 -0700</bug_when>
    <thetext>Created attachment 310234
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1309017</commentid>
    <comment_count>35</comment_count>
      <attachid>310234</attachid>
    <who name="Addy Osmani">addyo</who>
    <bug_when>2017-05-16 00:04:50 -0700</bug_when>
    <thetext>Comment on attachment 310234
Patch

PTAL if you get a chance. Sorry for last round of nits!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1309274</commentid>
    <comment_count>36</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-05-16 13:48:34 -0700</bug_when>
    <thetext>Thanks for updating the frameworks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1309283</commentid>
    <comment_count>37</comment_count>
      <attachid>310234</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-05-16 14:16:56 -0700</bug_when>
    <thetext>Comment on attachment 310234
Patch

Clearing flags on attachment: 310234

Committed r216946: &lt;http://trac.webkit.org/changeset/216946&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1309284</commentid>
    <comment_count>38</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-05-16 14:16:58 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1390356</commentid>
    <comment_count>39</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-01-17 19:12:21 -0800</bug_when>
    <thetext>*** Bug 147768 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307290</attachid>
            <date>2017-04-17 13:22:31 -0700</date>
            <delta_ts>2017-04-24 10:45:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170513-20170417132229.patch</filename>
            <type>text/plain</type>
            <size>20563787</size>
            <attacher name="Addy Osmani">addyo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1NDE4CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDBiYTU0YjY3MmYw
NmRiYzFlMzg4ZGExNTNmMGU0ZTk4OGQ3YzYwMjUuLmRjNzZkYzE3NzM3NzM3NzM3YjBmZTRjNmQ5
M2I3YTM0ZmYyZGFjZmQgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYxMjMgQEAKKzIwMTct
MDQtMTcgIEFkZHkgT3NtYW5pICA8YWRkeW9zbWFuaUBnbWFpbC5jb20+CisKKyAgICAgICAgVXBk
YXRlIHRvIFNwZWVkb21ldGVyIDIuMCB3L3VwZGF0ZWQgZnJhbWV3b3JrcyArIG5ldyB3b3JrbG9h
ZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDUx
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU3Bl
ZWRvbWV0ZXIvRnVsbC5odG1sOgorICAgICAgICAqIFNwZWVkb21ldGVyL0ludGVyYWN0aXZlUnVu
bmVyLmh0bWw6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL21haW4uanM6CisgICAg
ICAgIChjb21wdXRlU2NvcmUpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90ZXN0
cy5qczoKKyAgICAgICAgKFN1aXRlcy5wdXNoLnByZXBhcmUpOgorICAgICAgICAoU3VpdGVzLnB1
c2guY29udGVudFdpbmRvdy5hcHAuVXRpbHMuc3RvcmUpOgorICAgICAgICAoU3VpdGVzLnB1c2gu
aS5wYXJhbXMuZW1iZXJSdW4pOiBEZWxldGVkLgorICAgICAgICAoU3VpdGVzLnB1c2guY29udGVu
dFdpbmRvdy5VdGlscy5zdG9yZSk6IERlbGV0ZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvLmFuZ3VsYXItY2xp
Lmpzb246IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyLy5lZGl0b3Jjb25maWc6IEFkZGVkLgorICAgICAg
ICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9h
bmd1bGFyL1JFQURNRS5tZDogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvZGlzdC9hc3NldHMvY3NzL3Rv
ZG9tdmMtYXBwLmNzczogQWRkZWQuCisgICAgICAgIChodG1sLCk6CisgICAgICAgIChidXR0b24p
OgorICAgICAgICAoYm9keSk6CisgICAgICAgICg6Zm9jdXMpOgorICAgICAgICAoLmhpZGRlbik6
CisgICAgICAgICgudG9kb2FwcCk6CisgICAgICAgICgudG9kb2FwcCBpbnB1dDo6LXdlYmtpdC1p
bnB1dC1wbGFjZWhvbGRlcik6CisgICAgICAgICgudG9kb2FwcCBpbnB1dDo6LW1vei1wbGFjZWhv
bGRlcik6CisgICAgICAgICgudG9kb2FwcCBpbnB1dDo6aW5wdXQtcGxhY2Vob2xkZXIpOgorICAg
ICAgICAoLnRvZG9hcHAgaDEpOgorICAgICAgICAoLm5ldy10b2RvLCk6CisgICAgICAgICgubmV3
LXRvZG8pOgorICAgICAgICAoLm1haW4pOgorICAgICAgICAobGFiZWxbZm9yPSd0b2dnbGUtYWxs
J10pOgorICAgICAgICAoLnRvZ2dsZS1hbGwpOgorICAgICAgICAoLnRvZ2dsZS1hbGw6YmVmb3Jl
KToKKyAgICAgICAgKC50b2dnbGUtYWxsOmNoZWNrZWQ6YmVmb3JlKToKKyAgICAgICAgKC50b2Rv
LWxpc3QpOgorICAgICAgICAoLnRvZG8tbGlzdCBsaSk6CisgICAgICAgICgudG9kby1saXN0IGxp
Omxhc3QtY2hpbGQpOgorICAgICAgICAoLnRvZG8tbGlzdCBsaS5lZGl0aW5nKToKKyAgICAgICAg
KC50b2RvLWxpc3QgbGkuZWRpdGluZyAuZWRpdCk6CisgICAgICAgICgudG9kby1saXN0IGxpLmVk
aXRpbmcgLnZpZXcpOgorICAgICAgICAoLnRvZG8tbGlzdCBsaSAudG9nZ2xlKToKKyAgICAgICAg
KC50b2RvLWxpc3QgbGkgLnRvZ2dsZTphZnRlcik6CisgICAgICAgICgudG9kby1saXN0IGxpIC50
b2dnbGU6Y2hlY2tlZDphZnRlcik6CisgICAgICAgICgudG9kby1saXN0IGxpIGxhYmVsKToKKyAg
ICAgICAgKC50b2RvLWxpc3QgbGkuY29tcGxldGVkIGxhYmVsKToKKyAgICAgICAgKC50b2RvLWxp
c3QgbGkgLmRlc3Ryb3kpOgorICAgICAgICAoLnRvZG8tbGlzdCBsaSAuZGVzdHJveTpob3Zlcik6
CisgICAgICAgICgudG9kby1saXN0IGxpIC5kZXN0cm95OmFmdGVyKToKKyAgICAgICAgKC50b2Rv
LWxpc3QgbGk6aG92ZXIgLmRlc3Ryb3kpOgorICAgICAgICAoLnRvZG8tbGlzdCBsaSAuZWRpdCk6
CisgICAgICAgICgudG9kby1saXN0IGxpLmVkaXRpbmc6bGFzdC1jaGlsZCk6CisgICAgICAgICgu
Zm9vdGVyKToKKyAgICAgICAgKC5mb290ZXI6YmVmb3JlKToKKyAgICAgICAgKC50b2RvLWNvdW50
KToKKyAgICAgICAgKC50b2RvLWNvdW50IHN0cm9uZyk6CisgICAgICAgICguZmlsdGVycyk6Cisg
ICAgICAgICguZmlsdGVycyBsaSk6CisgICAgICAgICguZmlsdGVycyBsaSBhKToKKyAgICAgICAg
KC5maWx0ZXJzIGxpIGE6aG92ZXIpOgorICAgICAgICAoLmZpbHRlcnMgbGkgYS5zZWxlY3RlZCk6
CisgICAgICAgICguY2xlYXItY29tcGxldGVkLCk6CisgICAgICAgICguY2xlYXItY29tcGxldGVk
OmhvdmVyKToKKyAgICAgICAgKC5pbmZvKToKKyAgICAgICAgKC5pbmZvIHApOgorICAgICAgICAo
LmluZm8gYSk6CisgICAgICAgICguaW5mbyBhOmhvdmVyKToKKyAgICAgICAgKEBtZWRpYSBzY3Jl
ZW4gYW5kICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86MCkpOgorICAgICAgICAoLnRv
Z2dsZS1hbGwsKToKKyAgICAgICAgKEBtZWRpYSAobWF4LXdpZHRoOiA0MzBweCkpOgorICAgICAg
ICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9h
bmd1bGFyL2Rpc3QvYXNzZXRzL2Nzcy90b2RvbXZjLWNvbW1vbi5jc3M6IEFkZGVkLgorICAgICAg
ICAoaHIpOgorICAgICAgICAoLmxlYXJuIGEpOgorICAgICAgICAoLmxlYXJuIGE6aG92ZXIpOgor
ICAgICAgICAoLmxlYXJuIGgzLCk6CisgICAgICAgICgubGVhcm4gaDMpOgorICAgICAgICAoLmxl
YXJuIGg0KToKKyAgICAgICAgKC5sZWFybiBoNSk6CisgICAgICAgICgubGVhcm4gdWwpOgorICAg
ICAgICAoLmxlYXJuIGxpKToKKyAgICAgICAgKC5sZWFybiBwKToKKyAgICAgICAgKCNpc3N1ZS1j
b3VudCk6CisgICAgICAgICgucXVvdGUpOgorICAgICAgICAoLnF1b3RlIHApOgorICAgICAgICAo
LnF1b3RlIHA6YmVmb3JlKToKKyAgICAgICAgKC5xdW90ZSBwOmFmdGVyKToKKyAgICAgICAgKC5x
dW90ZSBmb290ZXIpOgorICAgICAgICAoLnF1b3RlIGZvb3RlciBpbWcpOgorICAgICAgICAoLnF1
b3RlIGZvb3RlciBhKToKKyAgICAgICAgKC5zcGVlY2gtYnViYmxlKToKKyAgICAgICAgKC5zcGVl
Y2gtYnViYmxlOmFmdGVyKToKKyAgICAgICAgKC5sZWFybi1iYXIgPiAubGVhcm4pOgorICAgICAg
ICAoQG1lZGlhIChtaW4td2lkdGg6IDg5OXB4KSk6CisgICAgICAgICgubGVhcm4tYmFyKToKKyAg
ICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvYW5ndWxhci9kaXN0L2Zhdmljb24uaWNvOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9kaXN0L2lu
ZGV4Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL2Rpc3QvaW5saW5lLmIzNDJkMTAyYmE0YTUz
YmYyMDAyLmJ1bmRsZS5qczogQWRkZWQuCisgICAgICAgIChyKToKKyAgICAgICAgKHdpbmRvdy53
ZWJwYWNrSnNvbnApOgorICAgICAgICAoci5lKToKKyAgICAgICAgKHIuaSk6CisgICAgICAgIChy
LmQpOgorICAgICAgICAoZ2V0IHIubik6CisgICAgICAgIChyLm8pOgorICAgICAgICAoci5vZSk6
CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2FuZ3VsYXIvZGlzdC9tYWluLjc3OWViMmYxZGRiZTIzYWM2MWM3LmJ1bmRsZS5qczog
QWRkZWQuCisgICAgICAgIChuLmtleXMpOgorICAgICAgICAoc3RyaW5nX2FwcGVhcmVkX2hlcmUp
OgorICAgICAgICAobCk6CisgICAgICAgIChvKToKKyAgICAgICAgKF8pOgorICAgICAgICAoSWtz
cCk6CisgICAgICAgIChOaTVmKToKKyAgICAgICAgKHJldHVybi50LnByb3RvdHlwZS5hZGRUb2Rv
KToKKyAgICAgICAgKHQucHJvdG90eXBlLnRvZ2dsZVRvZG9Db21wbGV0ZSk6CisgICAgICAgICh0
LnByb3RvdHlwZS5yZW1vdmVUb2RvKToKKyAgICAgICAgKGdldCB0LmN0b3JQYXJhbWV0ZXJzKToK
KyAgICAgICAgKGFLYTMpOgorICAgICAgICAodC5wcm90b3R5cGUuZGVsZXRlVG9kb0J5SWQpOgor
ICAgICAgICAodC5wcm90b3R5cGUudXBkYXRlVG9kb0J5SWQpOgorICAgICAgICAodC5wcm90b3R5
cGUuZ2V0QWxsVG9kb3MpOgorICAgICAgICAodC5wcm90b3R5cGUuZ2V0VG9kb0J5SWQpOgorICAg
ICAgICAodC5jdG9yUGFyYW1ldGVycyk6CisgICAgICAgIChqM2VuKToKKyAgICAgICAgKGtacWwp
OgorICAgICAgICAoZ2V0IE9iamVjdCk6CisgICAgICAgIChnZXQgZS5wcm90b3R5cGUuY3JlYXRl
SW50ZXJuYWwpOgorICAgICAgICAoZS5wcm90b3R5cGUuZ2V0SW50ZXJuYWwpOgorICAgICAgICAo
ZS5wcm90b3R5cGUuZGVzdHJveUludGVybmFsKToKKyAgICAgICAgKHgzNWIpOgorICAgICAgICAq
IFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1
bGFyL2Rpc3QvcG9seWZpbGxzLjJkNDVhNGM3M2M4NWUyNGZlNDc0LmJ1bmRsZS5qczogQWRkZWQu
CisgICAgICAgICh0LmV4cG9ydHMpOgorICAgICAgICAoc3RyaW5nX2FwcGVhcmVkX2hlcmUpOgor
ICAgICAgICAoVCk6CisgICAgICAgIChEKToKKyAgICAgICAgKDEpOgorICAgICAgICAoZik6Cisg
ICAgICAgIChsKToKKyAgICAgICAgKHApOgorICAgICAgICAoaCk6CisgICAgICAgIChyLmV4cCk6
CisgICAgICAgICh1KToKKyAgICAgICAgKHMpOgorICAgICAgICAoYyk6CisgICAgICAgIChBMTZM
KToKKyAgICAgICAgKEE1MkIpOgorICAgICAgICAoQmJ5Rik6CisgICAgICAgIChDRW5lKToKKyAg
ICAgICAgKGdldCBzdHJpbmdfYXBwZWFyZWRfaGVyZSk6CisgICAgICAgIChDaEdyKToKKyAgICAg
ICAgKERJVlApOgorICAgICAgICAoeSk6CisgICAgICAgICh0LmV4cG9ydHMuKToKKyAgICAgICAg
KHQuZXhwb3J0cy5kZWYpOgorICAgICAgICAodC5leHBvcnRzLnNldFN0cm9uZyk6CisgICAgICAg
IChEczVQKToKKyAgICAgICAgKG4pOgorICAgICAgICAoRHVSMik6CisgICAgICAgIChyLmV4cC4p
OgorICAgICAgICAoRnJ5Uik6CisgICAgICAgIChJUkozKToKKyAgICAgICAgKEpHMzQpOgorICAg
ICAgICAoS0Ixbyk6CisgICAgICAgIChLT3JkKToKKyAgICAgICAgKExoVGEpOgorICAgICAgICAo
TXN1USk6CisgICAgICAgIChzZXQgZ2V0IE5IYUopOgorICAgICAgICAoT3pJcSk6CisgICAgICAg
IChQSEN4KToKKyAgICAgICAgKFBIcWgpOgorICAgICAgICAoUHVUZCk6CisgICAgICAgICh0LmV4
cG9ydHMuT2JqZWN0LnByb3BlcnR5SXNFbnVtZXJhYmxlLk9iamVjdCk6CisgICAgICAgIChRNk5m
KToKKyAgICAgICAgKFFHN3UpOgorICAgICAgICAoUUtYbSk6CisgICAgICAgIChRaDE0KToKKyAg
ICAgICAgKG4uaW5zcGVjdFNvdXJjZSk6CisgICAgICAgIChSM0FQKToKKyAgICAgICAgKFJlR3Up
OgorICAgICAgICAoUnc0Syk6CisgICAgICAgICh0LmV4cG9ydHMubi5nZXRJdGVyYXRvck1ldGhv
ZCk6CisgICAgICAgIChTSGU5KToKKyAgICAgICAgKFNQdFUpOgorICAgICAgICAoVldnRik6Cisg
ICAgICAgIChyKToKKyAgICAgICAgKG8pOgorICAgICAgICAoaSk6CisgICAgICAgIChhKToKKyAg
ICAgICAgKHAubmV4dFRpY2spOgorICAgICAgICAoYy5wcm90b3R5cGUucnVuKToKKyAgICAgICAg
KHAuYmluZGluZyk6CisgICAgICAgIChwLmN3ZCk6CisgICAgICAgIChwLmNoZGlyKToKKyAgICAg
ICAgKHAudW1hc2spOgorICAgICAgICAoVzJuVSk6CisgICAgICAgIChXQmNMKToKKyAgICAgICAg
KFdjTzEpOgorICAgICAgICAoWDdhSyk6CisgICAgICAgIChYTzFSKToKKyAgICAgICAgKFhTMjUp
OgorICAgICAgICAoWFNPWik6CisgICAgICAgIChYdlVzKToKKyAgICAgICAgKFkxTjMpOgorICAg
ICAgICAoWTFhQSk6CisgICAgICAgIChZVXI3KToKKyAgICAgICAgKHYpOgorICAgICAgICAoZC5n
ZXQgaWYpOgorICAgICAgICAoZCk6CisgICAgICAgIChadHdFKToKKyAgICAgICAgKGJOMXApOgor
ICAgICAgICAoYlVZMCk6CisgICAgICAgIChzZXQgYlVxTyk6CisgICAgICAgIChnZXQgYm9vMik6
CisgICAgICAgIChkMDc1KToKKyAgICAgICAgKGRTVXcpOgorICAgICAgICAoZC5wcm90b3R5cGUu
aGFzKToKKyAgICAgICAgKGQucHJvdG90eXBlLmRlbGV0ZSk6CisgICAgICAgICh0LmV4cG9ydHMu
Z2V0Q29uc3RydWN0b3IpOgorICAgICAgICAoZlUyNSk6CisgICAgICAgICh0LmV4cG9ydHMuc2V0
IE9iamVjdCk6CisgICAgICAgIChndkR0KToKKyAgICAgICAgKGpoeGYpOgorICAgICAgICAoa2lj
NSk6CisgICAgICAgIChra0N3KToKKyAgICAgICAgKGUuZi5uLk9iamVjdC5kZWZpbmVQcm9wZXJ0
eSk6CisgICAgICAgIChsRExrKToKKyAgICAgICAgKG1UcDcpOgorICAgICAgICAobVpPTik6Cisg
ICAgICAgIChvWWQ3KToKKyAgICAgICAgKG9laWgpOgorICAgICAgICAob3Q1cyk6CisgICAgICAg
IChwbFNWKToKKyAgICAgICAgKHRyeS5pLnJldHVybik6CisgICAgICAgICh0cnkuYS5uZXh0KToK
KyAgICAgICAgKHRyeS5pLnIpOgorICAgICAgICAocWt5Yyk6CisgICAgICAgIChyRnpZKToKKyAg
ICAgICAgKHM0ajApOgorICAgICAgICAodC5leHBvcnRzLm4uT2JqZWN0LmRlZmluZVByb3BlcnRp
ZXMpOgorICAgICAgICAodHd4TSk6CisgICAgICAgIChPKToKKyAgICAgICAgKHVjMkEpOgorICAg
ICAgICAodWxUWSk6CisgICAgICAgIChpLmV4cCk6CisgICAgICAgICh2M2hVKToKKyAgICAgICAg
KGUudC5leHBvcnRzKToKKyAgICAgICAgKHZtU08pOgorICAgICAgICAodm1TdSk6CisgICAgICAg
ICh2c2g2KToKKyAgICAgICAgKHdDMU4pOgorICAgICAgICAoZS5mLm4ucyk6CisgICAgICAgICh4
OXp2KToKKyAgICAgICAgKGdldCB5SjJ4KToKKyAgICAgICAgKHlPdEUpOgorICAgICAgICAoeVl2
Syk6CisgICAgICAgICh5ZEQ1KToKKyAgICAgICAgKHl4MVUpOgorICAgICAgICAoelpIcSk6Cisg
ICAgICAgICh6Z0l0KToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9kaXN0L3N0eWxlcy5kNDFkOGNkOThmMDBiMjA0
ZTk4MC5idW5kbGUuY3NzOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9kaXN0L3ZlbmRvci5iNGJlODE4
Y2I2ZDgwMjhmOTE5Mi5idW5kbGUuanM6IEFkZGVkLgorICAgICAgICAocik6CisgICAgICAgIChv
KToKKyAgICAgICAgKHN0cmluZ19hcHBlYXJlZF9oZXJlKToKKyAgICAgICAgKGUuaXNBcnJheUxp
a2UpOgorICAgICAgICAoaSk6CisgICAgICAgIChzKToKKyAgICAgICAgKGEpOgorICAgICAgICAo
dSk6CisgICAgICAgIChjKToKKyAgICAgICAgKGwpOgorICAgICAgICAocCk6CisgICAgICAgIChm
KToKKyAgICAgICAgKGgpOgorICAgICAgICAoZCk6CisgICAgICAgICh5KToKKyAgICAgICAgKG0p
OgorICAgICAgICAoZyk6CisgICAgICAgICh2KToKKyAgICAgICAgKF8pOgorICAgICAgICAoYik6
CisgICAgICAgIChDKToKKyAgICAgICAgKE8pOgorICAgICAgICAoeCk6CisgICAgICAgIChTKToK
KyAgICAgICAgKFApOgorICAgICAgICAoQSk6CisgICAgICAgIChuKToKKyAgICAgICAgKHJldHVy
bi50LnByb3RvdHlwZS5nZXRCYXNlSHJlZkZyb21ET00pOgorICAgICAgICAodC5wcm90b3R5cGUu
b25Qb3BTdGF0ZSk6CisgICAgICAgICh0LnByb3RvdHlwZS5vbkhhc2hDaGFuZ2UpOgorICAgICAg
ICAoZ2V0IE9iamVjdCk6CisgICAgICAgIChnZXQgdC5wcm90b3R5cGUucmVwbGFjZVN0YXRlKToK
KyAgICAgICAgKHQucHJvdG90eXBlLnB1c2hTdGF0ZSk6CisgICAgICAgICh0LnByb3RvdHlwZS5m
b3J3YXJkKToKKyAgICAgICAgKHQucHJvdG90eXBlLmJhY2spOgorICAgICAgICAocmV0dXJuLnQu
cHJvdG90eXBlLnBhdGgpOgorICAgICAgICAodC5wcm90b3R5cGUuaXNDdXJyZW50UGF0aEVxdWFs
VG8pOgorICAgICAgICAodC5wcm90b3R5cGUubm9ybWFsaXplKToKKyAgICAgICAgKHQucHJvdG90
eXBlLnByZXBhcmVFeHRlcm5hbFVybCk6CisgICAgICAgICh0LnByb3RvdHlwZS5nbyk6CisgICAg
ICAgICh0LnByb3RvdHlwZS5yZXBsYWNlU3RhdGUpOgorICAgICAgICAodC5wcm90b3R5cGUuc3Vi
c2NyaWJlKToKKyAgICAgICAgKHQubm9ybWFsaXplUXVlcnlQYXJhbXMpOgorICAgICAgICAodC5q
b2luV2l0aFNsYXNoKToKKyAgICAgICAgKHQuc3RyaXBUcmFpbGluZ1NsYXNoKToKKyAgICAgICAg
KGopOgorICAgICAgICAoai5jdG9yUGFyYW1ldGVycyk6CisgICAgICAgIChlLnByb3RvdHlwZS5v
blBvcFN0YXRlKToKKyAgICAgICAgKGUucHJvdG90eXBlLmdldEJhc2VIcmVmKToKKyAgICAgICAg
KGUucHJvdG90eXBlLnBhdGgpOgorICAgICAgICAoZS5wcm90b3R5cGUucHJlcGFyZUV4dGVybmFs
VXJsKToKKyAgICAgICAgKGUucHJvdG90eXBlLnB1c2hTdGF0ZSk6CisgICAgICAgIChlLnByb3Rv
dHlwZS5yZXBsYWNlU3RhdGUpOgorICAgICAgICAoZS5wcm90b3R5cGUuZm9yd2FyZCk6CisgICAg
ICAgIChlLnByb3RvdHlwZS5iYWNrKToKKyAgICAgICAgKFIpOgorICAgICAgICAoUi5jdG9yUGFy
YW1ldGVycyk6CisgICAgICAgIChEKToKKyAgICAgICAgKEQuY3RvclBhcmFtZXRlcnMpOgorICAg
ICAgICAocmV0dXJuLnQucHJvdG90eXBlLmdldFBsdXJhbENhdGVnb3J5KToKKyAgICAgICAgKEkp
OgorICAgICAgICAoZS5wcm90b3R5cGUuZ2V0UGx1cmFsQ2F0ZWdvcnkpOgorICAgICAgICAoRik6
CisgICAgICAgIChGLmN0b3JQYXJhbWV0ZXJzKToKKyAgICAgICAgKHNldCBPYmplY3QpOgorICAg
ICAgICAoc2V0IHQucHJvdG90eXBlLm5nRG9DaGVjayk6CisgICAgICAgICh0LnByb3RvdHlwZS5f
Y2xlYW51cENsYXNzZXMpOgorICAgICAgICAodC5wcm90b3R5cGUuX2FwcGx5S2V5VmFsdWVDaGFu
Z2VzKToKKyAgICAgICAgKHQucHJvdG90eXBlLl9hcHBseUl0ZXJhYmxlQ2hhbmdlcyk6CisgICAg
ICAgICh0LnByb3RvdHlwZS5fYXBwbHlJbml0aWFsQ2xhc3Nlcyk6CisgICAgICAgICh0LnByb3Rv
dHlwZS5fYXBwbHlDbGFzc2VzKToKKyAgICAgICAgKHQucHJvdG90eXBlLl90b2dnbGVDbGFzcyk6
CisgICAgICAgIChzZXQgdCk6CisgICAgICAgIChMKToKKyAgICAgICAgKEwuY3RvclBhcmFtZXRl
cnMpOgorICAgICAgICAoZ2V0IHQpOgorICAgICAgICAoVik6CisgICAgICAgIChyZXR1cm4udC5w
cm90b3R5cGUubmdPbkNoYW5nZXMpOgorICAgICAgICAodC5wcm90b3R5cGUubmdPbkRlc3Ryb3kp
OgorICAgICAgICAoVSk6CisgICAgICAgIChVLmN0b3JQYXJhbWV0ZXJzKToKKyAgICAgICAgKHNl
dCBnZXQgT2JqZWN0KToKKyAgICAgICAgKHNldCB0LnByb3RvdHlwZS5uZ09uQ2hhbmdlcyk6Cisg
ICAgICAgICh0LnByb3RvdHlwZS5uZ0RvQ2hlY2spOgorICAgICAgICAodC5wcm90b3R5cGUuX2Fw
cGx5Q2hhbmdlcyk6CisgICAgICAgICh0LnByb3RvdHlwZS5fcGVyVmlld0NoYW5nZSk6CisgICAg
ICAgIChHKToKKyAgICAgICAgKEcuY3RvclBhcmFtZXRlcnMpOgorICAgICAgICAoQik6CisgICAg
ICAgICh6KToKKyAgICAgICAgKHNldCB0LnByb3RvdHlwZS5fdXBkYXRlVmlldyk6CisgICAgICAg
IChxKToKKyAgICAgICAgKHEuY3RvclBhcmFtZXRlcnMpOgorICAgICAgICAoWik6CisgICAgICAg
IChyZXR1cm4udC5wcm90b3R5cGUuY3JlYXRlKToKKyAgICAgICAgKHQucHJvdG90eXBlLmRlc3Ry
b3kpOgorICAgICAgICAodC5wcm90b3R5cGUuZW5mb3JjZVN0YXRlKToKKyAgICAgICAgKFcpOgor
ICAgICAgICAoc2V0IHQucHJvdG90eXBlLl9hZGRDYXNlKToKKyAgICAgICAgKHQucHJvdG90eXBl
Ll9hZGREZWZhdWx0KToKKyAgICAgICAgKHQucHJvdG90eXBlLl9tYXRjaENhc2UpOgorICAgICAg
ICAodC5wcm90b3R5cGUuX3VwZGF0ZURlZmF1bHRDYXNlcyk6CisgICAgICAgIChLKToKKyAgICAg
ICAgKEsuY3RvclBhcmFtZXRlcnMpOgorICAgICAgICAocmV0dXJuLnQucHJvdG90eXBlLm5nRG9D
aGVjayk6CisgICAgICAgIChYKToKKyAgICAgICAgKFguY3RvclBhcmFtZXRlcnMpOgorICAgICAg
ICAoUSk6CisgICAgICAgIChRLmN0b3JQYXJhbWV0ZXJzKToKKyAgICAgICAgKHNldCB0LnByb3Rv
dHlwZS5hZGRDYXNlKToKKyAgICAgICAgKHQucHJvdG90eXBlLl91cGRhdGVWaWV3KToKKyAgICAg
ICAgKHQucHJvdG90eXBlLl9jbGVhclZpZXdzKToKKyAgICAgICAgKHQucHJvdG90eXBlLl9hY3Rp
dmF0ZVZpZXcpOgorICAgICAgICAoSik6CisgICAgICAgIChKLmN0b3JQYXJhbWV0ZXJzKToKKyAg
ICAgICAgKGN0b3JQYXJhbWV0ZXJzKToKKyAgICAgICAgKHQucHJvdG90eXBlLl9zZXRTdHlsZSk6
CisgICAgICAgIChZKToKKyAgICAgICAgKFkuY3RvclBhcmFtZXRlcnMpOgorICAgICAgICAodHQp
OgorICAgICAgICAodHQuY3RvclBhcmFtZXRlcnMpOgorICAgICAgICAocmV0dXJuLnQuc3Vic2Ny
aWJlKToKKyAgICAgICAgKHJldHVybi50LnByb3RvdHlwZS5jcmVhdGVTdWJzY3JpcHRpb24pOgor
ICAgICAgICAodC5wcm90b3R5cGUuZGlzcG9zZSk6CisgICAgICAgICh0LnByb3RvdHlwZS5vbkRl
c3Ryb3kpOgorICAgICAgICAobnQpOgorICAgICAgICAocnQpOgorICAgICAgICAocmV0dXJuLnQu
cHJvdG90eXBlLm5nT25EZXN0cm95KToKKyAgICAgICAgKHQucHJvdG90eXBlLnRyYW5zZm9ybSk6
CisgICAgICAgICh0LnByb3RvdHlwZS5fc3Vic2NyaWJlKToKKyAgICAgICAgKHQucHJvdG90eXBl
Ll9zZWxlY3RTdHJhdGVneSk6CisgICAgICAgICh0LnByb3RvdHlwZS5fZGlzcG9zZSk6CisgICAg
ICAgICh0LnByb3RvdHlwZS5fdXBkYXRlTGF0ZXN0VmFsdWUpOgorICAgICAgICAoc3QpOgorICAg
ICAgICAoc3QuY3RvclBhcmFtZXRlcnMpOgorICAgICAgICAocmV0dXJuLnQucHJvdG90eXBlLnRy
YW5zZm9ybSk6CisgICAgICAgIChhdCk6CisgICAgICAgIChhdC5jdG9yUGFyYW1ldGVycyk6Cisg
ICAgICAgICh1dCk6CisgICAgICAgICh1dC5jdG9yUGFyYW1ldGVycyk6CisgICAgICAgIChjdCk6
CisgICAgICAgIChjdC5jdG9yUGFyYW1ldGVycyk6CisgICAgICAgIChyZXR1cm4udC5mb3JtYXQp
OgorICAgICAgICAocHQpOgorICAgICAgICAoc2V0IGdldCBBKToKKyAgICAgICAgKHJldHVybi50
LnJlcXVpcmVkKToKKyAgICAgICAgKHQucmVxdWlyZWRUcnVlKToKKyAgICAgICAgKHQuZW1haWwp
OgorICAgICAgICAodC5taW5MZW5ndGgpOgorICAgICAgICAodC5tYXhMZW5ndGgpOgorICAgICAg
ICAodC5wYXR0ZXJuKToKKyAgICAgICAgKHQubnVsbFZhbGlkYXRvcik6CisgICAgICAgIChyZXR1
cm4uMC5lLmxlbmd0aC5udWxsKToKKyAgICAgICAgKHQuY29tcG9zZSk6CisgICAgICAgICh0LmNv
bXBvc2VBc3luYyk6CisgICAgICAgICh0aGlzLm9uQ2hhbmdlKToKKyAgICAgICAgKHRoaXMub25U
b3VjaGVkKToKKyAgICAgICAgKHJldHVybi50LnByb3RvdHlwZS53cml0ZVZhbHVlKToKKyAgICAg
ICAgKHQucHJvdG90eXBlLnJlZ2lzdGVyT25DaGFuZ2UpOgorICAgICAgICAodC5wcm90b3R5cGUu
cmVnaXN0ZXJPblRvdWNoZWQpOgorICAgICAgICAodC5wcm90b3R5cGUuc2V0RGlzYWJsZWRTdGF0
ZSk6CisgICAgICAgICh0LnByb3RvdHlwZS5faGFuZGxlSW5wdXQpOgorICAgICAgICAodC5wcm90
b3R5cGUuX2NvbXBvc2l0aW9uU3RhcnQpOgorICAgICAgICAodC5wcm90b3R5cGUuX2NvbXBvc2l0
aW9uRW5kKToKKyAgICAgICAgKGdldCBlLnByb3RvdHlwZS52aWV3VG9Nb2RlbFVwZGF0ZSk6Cisg
ICAgICAgIChnZXQgZSk6CisgICAgICAgIChyZXR1cm4udC5wcm90b3R5cGUuYWRkKToKKyAgICAg
ICAgKHQucHJvdG90eXBlLnJlbW92ZSk6CisgICAgICAgICh0LnByb3RvdHlwZS5zZWxlY3QpOgor
ICAgICAgICAodC5wcm90b3R5cGUuX2lzU2FtZUdyb3VwKToKKyAgICAgICAgKG50LmN0b3JQYXJh
bWV0ZXJzKToKKyAgICAgICAgKHJldHVybi50LnByb3RvdHlwZS5uZ09uSW5pdCk6CisgICAgICAg
ICh0LnByb3RvdHlwZS53cml0ZVZhbHVlKToKKyAgICAgICAgKHQucHJvdG90eXBlLmZpcmVVbmNo
ZWNrKToKKyAgICAgICAgKHQucHJvdG90eXBlLl9jaGVja05hbWUpOgorICAgICAgICAodC5wcm90
b3R5cGUuX3Rocm93TmFtZUVycm9yKToKKyAgICAgICAgKHJ0LmN0b3JQYXJhbWV0ZXJzKToKKyAg
ICAgICAgKGl0KToKKyAgICAgICAgKGl0LmN0b3JQYXJhbWV0ZXJzKToKKyAgICAgICAgKHNldCB0
LnByb3RvdHlwZS53cml0ZVZhbHVlKToKKyAgICAgICAgKHQucHJvdG90eXBlLl9yZWdpc3Rlck9w
dGlvbik6CisgICAgICAgICh0LnByb3RvdHlwZS5fZ2V0T3B0aW9uSWQpOgorICAgICAgICAodC5w
cm90b3R5cGUuX2dldE9wdGlvblZhbHVlKToKKyAgICAgICAgKHNldCB0LnByb3RvdHlwZS5fc2V0
RWxlbWVudFZhbHVlKToKKyAgICAgICAgKGVsc2Uubik6CisgICAgICAgIChsdCk6CisgICAgICAg
IChsdC5jdG9yUGFyYW1ldGVycyk6CisgICAgICAgICh0LnByb3RvdHlwZS5fc2V0U2VsZWN0ZWQp
OgorICAgICAgICAocHQuY3RvclBhcmFtZXRlcnMpOgorICAgICAgICAoZS5wcm90b3R5cGUubmdP
bkluaXQpOgorICAgICAgICAoZS5wcm90b3R5cGUubmdPbkRlc3Ryb3kpOgorICAgICAgICAoZ2V0
IGUucHJvdG90eXBlLl9jaGVja1BhcmVudFR5cGUpOgorICAgICAgICAobXQpOgorICAgICAgICAo
ZHQpOgorICAgICAgICAobXQuY3RvclBhcmFtZXRlcnMpOgorICAgICAgICAoZ3QpOgorICAgICAg
ICAoaHQpOgorICAgICAgICAoZ3QuY3RvclBhcmFtZXRlcnMpOgorICAgICAgICAodGhpcy5fb25D
b2xsZWN0aW9uQ2hhbmdlKToKKyAgICAgICAgKGdldCB0LnByb3RvdHlwZS5zZXRWYWxpZGF0b3Jz
KToKKyAgICAgICAgKHQucHJvdG90eXBlLnNldEFzeW5jVmFsaWRhdG9ycyk6CisgICAgICAgICh0
LnByb3RvdHlwZS5jbGVhclZhbGlkYXRvcnMpOgorICAgICAgICAodC5wcm90b3R5cGUuY2xlYXJB
c3luY1ZhbGlkYXRvcnMpOgorICAgICAgICAodC5wcm90b3R5cGUubWFya0FzVG91Y2hlZCk6Cisg
ICAgICAgICh0LnByb3RvdHlwZS5tYXJrQXNVbnRvdWNoZWQpOgorICAgICAgICAodC5wcm90b3R5
cGUubWFya0FzRGlydHkpOgorICAgICAgICAodC5wcm90b3R5cGUubWFya0FzUHJpc3RpbmUpOgor
ICAgICAgICAodC5wcm90b3R5cGUubWFya0FzUGVuZGluZyk6CisgICAgICAgICh0LnByb3RvdHlw
ZS5kaXNhYmxlKToKKyAgICAgICAgKHQucHJvdG90eXBlLmVuYWJsZSk6CisgICAgICAgICh0LnBy
b3RvdHlwZS5fdXBkYXRlQW5jZXN0b3JzKToKKyAgICAgICAgKHQucHJvdG90eXBlLnNldFBhcmVu
dCk6CisgICAgICAgICh0LnByb3RvdHlwZS5zZXRWYWx1ZSk6CisgICAgICAgICh0LnByb3RvdHlw
ZS5wYXRjaFZhbHVlKToKKyAgICAgICAgKHQucHJvdG90eXBlLnJlc2V0KToKKyAgICAgICAgKHQu
cHJvdG90eXBlLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkpOgorICAgICAgICAodC5wcm90b3R5cGUu
X3VwZGF0ZVRyZWVWYWxpZGl0eSk6CisgICAgICAgICh0LnByb3RvdHlwZS5fc2V0SW5pdGlhbFN0
YXR1cyk6CisgICAgICAgICh0LnByb3RvdHlwZS5fcnVuVmFsaWRhdG9yKToKKyAgICAgICAgKHQu
cHJvdG90eXBlLl9ydW5Bc3luY1ZhbGlkYXRvcik6CisgICAgICAgICh0LnByb3RvdHlwZS5fY2Fu
Y2VsRXhpc3RpbmdTdWJzY3JpcHRpb24pOgorICAgICAgICAodC5wcm90b3R5cGUuc2V0RXJyb3Jz
KToKKyAgICAgICAgKHQucHJvdG90eXBlKToKKyAgICAgICAgKHQucHJvdG90eXBlLmdldEVycm9y
KToKKyAgICAgICAgKHQucHJvdG90eXBlLmhhc0Vycm9yKToKKyAgICAgICAgKGdldCB0LnByb3Rv
dHlwZS5fdXBkYXRlQ29udHJvbHNFcnJvcnMpOgorICAgICAgICAodC5wcm90b3R5cGUuX2luaXRP
YnNlcnZhYmxlcyk6CisgICAgICAgICh0LnByb3RvdHlwZS5fY2FsY3VsYXRlU3RhdHVzKToKKyAg
ICAgICAgKHQucHJvdG90eXBlLl91cGRhdGVWYWx1ZSk6CisgICAgICAgICh0LnByb3RvdHlwZS5f
Zm9yRWFjaENoaWxkKToKKyAgICAgICAgKHQucHJvdG90eXBlLl9hbnlDb250cm9scyk6CisgICAg
ICAgICh0LnByb3RvdHlwZS5fYWxsQ29udHJvbHNEaXNhYmxlZCk6CisgICAgICAgICh0LnByb3Rv
dHlwZS5fYW55Q29udHJvbHNIYXZlU3RhdHVzKToKKyAgICAgICAgKHQucHJvdG90eXBlLl9hbnlD
b250cm9sc0RpcnR5KToKKyAgICAgICAgKHQucHJvdG90eXBlLl9hbnlDb250cm9sc1RvdWNoZWQp
OgorICAgICAgICAodC5wcm90b3R5cGUuX3VwZGF0ZVByaXN0aW5lKToKKyAgICAgICAgKHQucHJv
dG90eXBlLl91cGRhdGVUb3VjaGVkKToKKyAgICAgICAgKHQucHJvdG90eXBlLl9pc0JveGVkVmFs
dWUpOgorICAgICAgICAodC5wcm90b3R5cGUuX3JlZ2lzdGVyT25Db2xsZWN0aW9uQ2hhbmdlKToK
KyAgICAgICAgKGUucHJvdG90eXBlLnNldFZhbHVlKToKKyAgICAgICAgKGUucHJvdG90eXBlLnBh
dGNoVmFsdWUpOgorICAgICAgICAoZS5wcm90b3R5cGUucmVzZXQpOgorICAgICAgICAoZS5wcm90
b3R5cGUuX3VwZGF0ZVZhbHVlKToKKyAgICAgICAgKGUucHJvdG90eXBlLl9hbnlDb250cm9scyk6
CisgICAgICAgIChlLnByb3RvdHlwZS5fYWxsQ29udHJvbHNEaXNhYmxlZCk6CisgICAgICAgIChl
LnByb3RvdHlwZS5yZWdpc3Rlck9uQ2hhbmdlKToKKyAgICAgICAgKGUucHJvdG90eXBlLl9jbGVh
ckNoYW5nZUZucyk6CisgICAgICAgIChlLnByb3RvdHlwZS5yZWdpc3Rlck9uRGlzYWJsZWRDaGFu
Z2UpOgorICAgICAgICAoZS5wcm90b3R5cGUuX2ZvckVhY2hDaGlsZCk6CisgICAgICAgIChlLnBy
b3RvdHlwZS5fYXBwbHlGb3JtU3RhdGUpOgorICAgICAgICAoRXQpOgorICAgICAgICAoZS5wcm90
b3R5cGUucmVnaXN0ZXJDb250cm9sKToKKyAgICAgICAgKGUucHJvdG90eXBlLmFkZENvbnRyb2wp
OgorICAgICAgICAoZS5wcm90b3R5cGUucmVtb3ZlQ29udHJvbCk6CisgICAgICAgIChlLnByb3Rv
dHlwZS5zZXRDb250cm9sKToKKyAgICAgICAgKGUucHJvdG90eXBlLmNvbnRhaW5zKToKKyAgICAg
ICAgKGUucHJvdG90eXBlLmdldFJhd1ZhbHVlKToKKyAgICAgICAgKGUucHJvdG90eXBlLl90aHJv
d0lmQ29udHJvbE1pc3NpbmcpOgorICAgICAgICAoZS5wcm90b3R5cGUuX3NldFVwQ29udHJvbHMp
OgorICAgICAgICAoZS5wcm90b3R5cGUuX3JlZHVjZVZhbHVlKToKKyAgICAgICAgKGUucHJvdG90
eXBlLl9yZWR1Y2VDaGlsZHJlbik6CisgICAgICAgIChlLnByb3RvdHlwZS5fY2hlY2tBbGxWYWx1
ZXNQcmVzZW50KToKKyAgICAgICAgKE90KToKKyAgICAgICAgKGUucHJvdG90eXBlLmF0KToKKyAg
ICAgICAgKGUucHJvdG90eXBlLnB1c2gpOgorICAgICAgICAoZS5wcm90b3R5cGUuaW5zZXJ0KToK
KyAgICAgICAgKGUucHJvdG90eXBlLnJlbW92ZUF0KToKKyAgICAgICAgKGdldCBlLnByb3RvdHlw
ZS5zZXRWYWx1ZSk6CisgICAgICAgIChlLnByb3RvdHlwZS5fcmVnaXN0ZXJDb250cm9sKToKKyAg
ICAgICAgKHh0KToKKyAgICAgICAgKGdldCBlLnByb3RvdHlwZS5hZGRDb250cm9sKToKKyAgICAg
ICAgKGUucHJvdG90eXBlLmdldENvbnRyb2wpOgorICAgICAgICAoZS5wcm90b3R5cGUuYWRkRm9y
bUdyb3VwKToKKyAgICAgICAgKGUucHJvdG90eXBlLnJlbW92ZUZvcm1Hcm91cCk6CisgICAgICAg
IChlLnByb3RvdHlwZS5nZXRGb3JtR3JvdXApOgorICAgICAgICAoZS5wcm90b3R5cGUudXBkYXRl
TW9kZWwpOgorICAgICAgICAoZS5wcm90b3R5cGUub25TdWJtaXQpOgorICAgICAgICAoZS5wcm90
b3R5cGUub25SZXNldCk6CisgICAgICAgIChlLnByb3RvdHlwZS5yZXNldEZvcm0pOgorICAgICAg
ICAoZS5wcm90b3R5cGUuX2ZpbmRDb250YWluZXIpOgorICAgICAgICAoQXQpOgorICAgICAgICAo
QXQuY3RvclBhcmFtZXRlcnMpOgorICAgICAgICAocmV0dXJuLnQubW9kZWxQYXJlbnRFeGNlcHRp
b24pOgorICAgICAgICAodC5mb3JtR3JvdXBOYW1lRXhjZXB0aW9uKToKKyAgICAgICAgKHQubWlz
c2luZ05hbWVFeGNlcHRpb24pOgorICAgICAgICAodC5tb2RlbEdyb3VwUGFyZW50RXhjZXB0aW9u
KToKKyAgICAgICAgKGt0KToKKyAgICAgICAgKEN0KToKKyAgICAgICAgKGUucHJvdG90eXBlLl9j
aGVja1BhcmVudFR5cGUpOgorICAgICAgICAoTXQpOgorICAgICAgICAoTXQuY3RvclBhcmFtZXRl
cnMpOgorICAgICAgICAoZS5wcm90b3R5cGUubmdPbkNoYW5nZXMpOgorICAgICAgICAoZS5wcm90
b3R5cGUuX3NldFVwQ29udHJvbCk6CisgICAgICAgIChlLnByb3RvdHlwZS5faXNTdGFuZGFsb25l
KToKKyAgICAgICAgKGUucHJvdG90eXBlLl9zZXRVcFN0YW5kYWxvbmUpOgorICAgICAgICAoZS5w
cm90b3R5cGUuX2NoZWNrRm9yRXJyb3JzKToKKyAgICAgICAgKGUucHJvdG90eXBlLl9jaGVja05h
bWUpOgorICAgICAgICAoZS5wcm90b3R5cGUuX3VwZGF0ZURpc2FibGVkKToKKyAgICAgICAgKFJ0
KToKKyAgICAgICAgKFJ0LmN0b3JQYXJhbWV0ZXJzKToKKyAgICAgICAgKHJldHVybi50LmNvbnRy
b2xQYXJlbnRFeGNlcHRpb24pOgorICAgICAgICAodC5uZ01vZGVsR3JvdXBFeGNlcHRpb24pOgor
ICAgICAgICAodC5taXNzaW5nRm9ybUV4Y2VwdGlvbik6CisgICAgICAgICh0Lmdyb3VwUGFyZW50
RXhjZXB0aW9uKToKKyAgICAgICAgKHQuYXJyYXlQYXJlbnRFeGNlcHRpb24pOgorICAgICAgICAo
dC5kaXNhYmxlZEF0dHJXYXJuaW5nKToKKyAgICAgICAgKER0KToKKyAgICAgICAgKHNldCBlLnBy
b3RvdHlwZS5uZ09uQ2hhbmdlcyk6CisgICAgICAgIChzZXQgZSk6CisgICAgICAgIChlLnByb3Rv
dHlwZS5faXNDb250cm9sQ2hhbmdlZCk6CisgICAgICAgIChGdCk6CisgICAgICAgIChGdC5jdG9y
UGFyYW1ldGVycyk6CisgICAgICAgIChlLnByb3RvdHlwZS5hZGRGb3JtQXJyYXkpOgorICAgICAg
ICAoZS5wcm90b3R5cGUucmVtb3ZlRm9ybUFycmF5KToKKyAgICAgICAgKGUucHJvdG90eXBlLmdl
dEZvcm1BcnJheSk6CisgICAgICAgIChlLnByb3RvdHlwZS5fdXBkYXRlRG9tVmFsdWUpOgorICAg
ICAgICAoZS5wcm90b3R5cGUuX3VwZGF0ZVJlZ2lzdHJhdGlvbnMpOgorICAgICAgICAoZS5wcm90
b3R5cGUuX3VwZGF0ZVZhbGlkYXRvcnMpOgorICAgICAgICAoZS5wcm90b3R5cGUuX2NoZWNrRm9y
bVByZXNlbnQpOgorICAgICAgICAoTHQpOgorICAgICAgICAoTHQuY3RvclBhcmFtZXRlcnMpOgor
ICAgICAgICAoQnQpOgorICAgICAgICAoQnQuY3RvclBhcmFtZXRlcnMpOgorICAgICAgICAoenQp
OgorICAgICAgICAoenQuY3RvclBhcmFtZXRlcnMpOgorICAgICAgICAoZS5wcm90b3R5cGUudmll
d1RvTW9kZWxVcGRhdGUpOgorICAgICAgICAoWnQpOgorICAgICAgICAoWnQuY3RvclBhcmFtZXRl
cnMpOgorICAgICAgICAoc2V0IGdldCB0LnByb3RvdHlwZS52YWxpZGF0ZSk6CisgICAgICAgICh0
LnByb3RvdHlwZS5yZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKToKKyAgICAgICAgKHNldCBnZXQg
dCk6CisgICAgICAgIChYdCk6CisgICAgICAgIChYdC5jdG9yUGFyYW1ldGVycyk6CisgICAgICAg
IChlLnByb3RvdHlwZS52YWxpZGF0ZSk6CisgICAgICAgIChRdCk6CisgICAgICAgIChRdC5jdG9y
UGFyYW1ldGVycyk6CisgICAgICAgIChzZXQgdC5wcm90b3R5cGUudmFsaWRhdGUpOgorICAgICAg
ICAodCk6CisgICAgICAgICh0LmN0b3JQYXJhbWV0ZXJzKToKKyAgICAgICAgKHQucHJvdG90eXBl
LnZhbGlkYXRlKToKKyAgICAgICAgKHQucHJvdG90eXBlLl9jcmVhdGVWYWxpZGF0b3IpOgorICAg
ICAgICAodGUpOgorICAgICAgICAodGUuY3RvclBhcmFtZXRlcnMpOgorICAgICAgICAobmUpOgor
ICAgICAgICAobmUuY3RvclBhcmFtZXRlcnMpOgorICAgICAgICAob2UpOgorICAgICAgICAob2Uu
Y3RvclBhcmFtZXRlcnMpOgorICAgICAgICAocmV0dXJuLnQucHJvdG90eXBlLmdyb3VwKToKKyAg
ICAgICAgKHQucHJvdG90eXBlLmNvbnRyb2wpOgorICAgICAgICAodC5wcm90b3R5cGUuYXJyYXkp
OgorICAgICAgICAodC5wcm90b3R5cGUuX3JlZHVjZUNvbnRyb2xzKToKKyAgICAgICAgKHQucHJv
dG90eXBlLl9jcmVhdGVDb250cm9sKToKKyAgICAgICAgKGllKToKKyAgICAgICAgKGllLmN0b3JQ
YXJhbWV0ZXJzKToKKyAgICAgICAgKHNlLmN0b3JQYXJhbWV0ZXJzKToKKyAgICAgICAgKGxlKToK
KyAgICAgICAgKGxlLmN0b3JQYXJhbWV0ZXJzKToKKyAgICAgICAgKHBlKToKKyAgICAgICAgKHBl
LmN0b3JQYXJhbWV0ZXJzKToKKyAgICAgICAgKGZlKToKKyAgICAgICAgKGZlLmN0b3JQYXJhbWV0
ZXJzKToKKyAgICAgICAgKHcpOgorICAgICAgICAoRSk6CisgICAgICAgIChUKToKKyAgICAgICAg
KE0pOgorICAgICAgICAocmV0dXJuLnQucHJvdG90eXBlLmhhc1Byb3BlcnR5KToKKyAgICAgICAg
KHQucHJvdG90eXBlLnNldFByb3BlcnR5KToKKyAgICAgICAgKHQucHJvdG90eXBlLmdldFByb3Bl
cnR5KToKKyAgICAgICAgKHQucHJvdG90eXBlLmludm9rZSk6CisgICAgICAgICh0LnByb3RvdHlw
ZS5sb2dFcnJvcik6CisgICAgICAgICh0LnByb3RvdHlwZS5sb2cpOgorICAgICAgICAodC5wcm90
b3R5cGUubG9nR3JvdXApOgorICAgICAgICAodC5wcm90b3R5cGUubG9nR3JvdXBFbmQpOgorICAg
ICAgICAoc2V0IGdldCB0LnByb3RvdHlwZS5jb250YWlucyk6CisgICAgICAgICh0LnByb3RvdHlw
ZS5wYXJzZSk6CisgICAgICAgICh0LnByb3RvdHlwZS5xdWVyeVNlbGVjdG9yKToKKyAgICAgICAg
KHQucHJvdG90eXBlLnF1ZXJ5U2VsZWN0b3JBbGwpOgorICAgICAgICAodC5wcm90b3R5cGUub24p
OgorICAgICAgICAodC5wcm90b3R5cGUub25BbmRDYW5jZWwpOgorICAgICAgICAodC5wcm90b3R5
cGUuZGlzcGF0Y2hFdmVudCk6CisgICAgICAgICh0LnByb3RvdHlwZS5jcmVhdGVNb3VzZUV2ZW50
KToKKyAgICAgICAgKHQucHJvdG90eXBlLmNyZWF0ZUV2ZW50KToKKyAgICAgICAgKHQucHJvdG90
eXBlLnByZXZlbnREZWZhdWx0KToKKyAgICAgICAgKHQucHJvdG90eXBlLmlzUHJldmVudGVkKToK
KyAgICAgICAgKHQucHJvdG90eXBlLmdldElubmVySFRNTCk6CisgICAgICAgICh0LnByb3RvdHlw
ZS5nZXRUZW1wbGF0ZUNvbnRlbnQpOgorICAgICAgICAodC5wcm90b3R5cGUuZ2V0T3V0ZXJIVE1M
KToKKyAgICAgICAgKHQucHJvdG90eXBlLm5vZGVOYW1lKToKKyAgICAgICAgKHQucHJvdG90eXBl
Lm5vZGVWYWx1ZSk6CisgICAgICAgICh0LnByb3RvdHlwZS50eXBlKToKKyAgICAgICAgKHQucHJv
dG90eXBlLmNvbnRlbnQpOgorICAgICAgICAodC5wcm90b3R5cGUuZmlyc3RDaGlsZCk6CisgICAg
ICAgICh0LnByb3RvdHlwZS5uZXh0U2libGluZyk6CisgICAgICAgICh0LnByb3RvdHlwZS5wYXJl
bnRFbGVtZW50KToKKyAgICAgICAgKHQucHJvdG90eXBlLmNoaWxkTm9kZXMpOgorICAgICAgICAo
dC5wcm90b3R5cGUuY2hpbGROb2Rlc0FzTGlzdCk6CisgICAgICAgICh0LnByb3RvdHlwZS5jbGVh
ck5vZGVzKToKKyAgICAgICAgKHQucHJvdG90eXBlLmFwcGVuZENoaWxkKToKKyAgICAgICAgKHQu
cHJvdG90eXBlLnJlbW92ZUNoaWxkKToKKyAgICAgICAgKHQucHJvdG90eXBlLnJlcGxhY2VDaGls
ZCk6CisgICAgICAgICh0LnByb3RvdHlwZS5pbnNlcnRCZWZvcmUpOgorICAgICAgICAodC5wcm90
b3R5cGUuaW5zZXJ0QWxsQmVmb3JlKToKKyAgICAgICAgKHQucHJvdG90eXBlLmluc2VydEFmdGVy
KToKKyAgICAgICAgKHQucHJvdG90eXBlLnNldElubmVySFRNTCk6CisgICAgICAgICh0LnByb3Rv
dHlwZS5nZXRUZXh0KToKKyAgICAgICAgKHQucHJvdG90eXBlLnNldFRleHQpOgorICAgICAgICAo
dC5wcm90b3R5cGUuZ2V0VmFsdWUpOgorICAgICAgICAodC5wcm90b3R5cGUuZ2V0Q2hlY2tlZCk6
CisgICAgICAgICh0LnByb3RvdHlwZS5zZXRDaGVja2VkKToKKyAgICAgICAgKHQucHJvdG90eXBl
LmNyZWF0ZUNvbW1lbnQpOgorICAgICAgICAodC5wcm90b3R5cGUuY3JlYXRlVGVtcGxhdGUpOgor
ICAgICAgICAodC5wcm90b3R5cGUuY3JlYXRlRWxlbWVudCk6CisgICAgICAgICh0LnByb3RvdHlw
ZS5jcmVhdGVFbGVtZW50TlMpOgorICAgICAgICAodC5wcm90b3R5cGUuY3JlYXRlVGV4dE5vZGUp
OgorICAgICAgICAodC5wcm90b3R5cGUuY3JlYXRlU2NyaXB0VGFnKToKKyAgICAgICAgKHQucHJv
dG90eXBlLmNyZWF0ZVN0eWxlRWxlbWVudCk6CisgICAgICAgICh0LnByb3RvdHlwZS5jcmVhdGVT
aGFkb3dSb290KToKKyAgICAgICAgKHQucHJvdG90eXBlLmdldFNoYWRvd1Jvb3QpOgorICAgICAg
ICAodC5wcm90b3R5cGUuZ2V0SG9zdCk6CisgICAgICAgICh0LnByb3RvdHlwZS5nZXREaXN0cmli
dXRlZE5vZGVzKToKKyAgICAgICAgKHQucHJvdG90eXBlLmNsb25lKToKKyAgICAgICAgKHQucHJv
dG90eXBlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUpOgorICAgICAgICAodC5wcm90b3R5cGUuZ2V0
RWxlbWVudHNCeVRhZ05hbWUpOgorICAgICAgICAodC5wcm90b3R5cGUuY2xhc3NMaXN0KToKKyAg
ICAgICAgKHQucHJvdG90eXBlLmFkZENsYXNzKToKKyAgICAgICAgKHQucHJvdG90eXBlLnJlbW92
ZUNsYXNzKToKKyAgICAgICAgKHQucHJvdG90eXBlLmhhc0NsYXNzKToKKyAgICAgICAgKHQucHJv
dG90eXBlLnNldFN0eWxlKToKKyAgICAgICAgKHQucHJvdG90eXBlLnJlbW92ZVN0eWxlKToKKyAg
ICAgICAgKHQucHJvdG90eXBlLmdldFN0eWxlKToKKyAgICAgICAgKHQucHJvdG90eXBlLmhhc1N0
eWxlKToKKyAgICAgICAgKHQucHJvdG90eXBlLnRhZ05hbWUpOgorICAgICAgICAodC5wcm90b3R5
cGUuYXR0cmlidXRlTWFwKToKKyAgICAgICAgKHQucHJvdG90eXBlLmhhc0F0dHJpYnV0ZSk6Cisg
ICAgICAgICh0LnByb3RvdHlwZS5oYXNBdHRyaWJ1dGVOUyk6CisgICAgICAgICh0LnByb3RvdHlw
ZS5nZXRBdHRyaWJ1dGUpOgorICAgICAgICAodC5wcm90b3R5cGUuZ2V0QXR0cmlidXRlTlMpOgor
ICAgICAgICAodC5wcm90b3R5cGUuc2V0QXR0cmlidXRlKToKKyAgICAgICAgKHQucHJvdG90eXBl
LnNldEF0dHJpYnV0ZU5TKToKKyAgICAgICAgKHQucHJvdG90eXBlLnJlbW92ZUF0dHJpYnV0ZSk6
CisgICAgICAgICh0LnByb3RvdHlwZS5yZW1vdmVBdHRyaWJ1dGVOUyk6CisgICAgICAgICh0LnBy
b3RvdHlwZS50ZW1wbGF0ZUF3YXJlUm9vdCk6CisgICAgICAgICh0LnByb3RvdHlwZS5jcmVhdGVI
dG1sRG9jdW1lbnQpOgorICAgICAgICAodC5wcm90b3R5cGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0
KToKKyAgICAgICAgKHQucHJvdG90eXBlLmdldFRpdGxlKToKKyAgICAgICAgKHQucHJvdG90eXBl
LnNldFRpdGxlKToKKyAgICAgICAgKHQucHJvdG90eXBlLmVsZW1lbnRNYXRjaGVzKToKKyAgICAg
ICAgKHQucHJvdG90eXBlLmlzVGVtcGxhdGVFbGVtZW50KToKKyAgICAgICAgKHQucHJvdG90eXBl
LmlzVGV4dE5vZGUpOgorICAgICAgICAodC5wcm90b3R5cGUuaXNDb21tZW50Tm9kZSk6CisgICAg
ICAgICh0LnByb3RvdHlwZS5pc0VsZW1lbnROb2RlKToKKyAgICAgICAgKHQucHJvdG90eXBlLmhh
c1NoYWRvd1Jvb3QpOgorICAgICAgICAodC5wcm90b3R5cGUuaXNTaGFkb3dSb290KToKKyAgICAg
ICAgKHQucHJvdG90eXBlLmltcG9ydEludG9Eb2MpOgorICAgICAgICAodC5wcm90b3R5cGUuYWRv
cHROb2RlKToKKyAgICAgICAgKHQucHJvdG90eXBlLmdldEhyZWYpOgorICAgICAgICAodC5wcm90
b3R5cGUuZ2V0RXZlbnRLZXkpOgorICAgICAgICAodC5wcm90b3R5cGUucmVzb2x2ZUFuZFNldEhy
ZWYpOgorICAgICAgICAodC5wcm90b3R5cGUuc3VwcG9ydHNET01FdmVudHMpOgorICAgICAgICAo
dC5wcm90b3R5cGUuc3VwcG9ydHNOYXRpdmVTaGFkb3dET00pOgorICAgICAgICAodC5wcm90b3R5
cGUuZ2V0R2xvYmFsRXZlbnRUYXJnZXQpOgorICAgICAgICAodC5wcm90b3R5cGUuZ2V0SGlzdG9y
eSk6CisgICAgICAgICh0LnByb3RvdHlwZS5nZXRMb2NhdGlvbik6CisgICAgICAgICh0LnByb3Rv
dHlwZS5nZXRCYXNlSHJlZik6CisgICAgICAgICh0LnByb3RvdHlwZS5yZXNldEJhc2VFbGVtZW50
KToKKyAgICAgICAgKHQucHJvdG90eXBlLmdldFVzZXJBZ2VudCk6CisgICAgICAgICh0LnByb3Rv
dHlwZS5zZXREYXRhKToKKyAgICAgICAgKHQucHJvdG90eXBlLmdldENvbXB1dGVkU3R5bGUpOgor
ICAgICAgICAodC5wcm90b3R5cGUuZ2V0RGF0YSk6CisgICAgICAgICh0LnByb3RvdHlwZS5zZXRH
bG9iYWxWYXIpOgorICAgICAgICAodC5wcm90b3R5cGUuc3VwcG9ydHNXZWJBbmltYXRpb24pOgor
ICAgICAgICAodC5wcm90b3R5cGUucGVyZm9ybWFuY2VOb3cpOgorICAgICAgICAodC5wcm90b3R5
cGUuZ2V0QW5pbWF0aW9uUHJlZml4KToKKyAgICAgICAgKHQucHJvdG90eXBlLmdldFRyYW5zaXRp
b25FbmQpOgorICAgICAgICAodC5wcm90b3R5cGUuc3VwcG9ydHNBbmltYXRpb24pOgorICAgICAg
ICAodC5wcm90b3R5cGUuc3VwcG9ydHNDb29raWVzKToKKyAgICAgICAgKHQucHJvdG90eXBlLmdl
dENvb2tpZSk6CisgICAgICAgICh0LnByb3RvdHlwZS5zZXRDb29raWUpOgorICAgICAgICAoZS5w
cm90b3R5cGUuZ2V0RGlzdHJpYnV0ZWROb2Rlcyk6CisgICAgICAgIChlLnByb3RvdHlwZS5yZXNv
bHZlQW5kU2V0SHJlZik6CisgICAgICAgIChlLnByb3RvdHlwZS5zdXBwb3J0c0RPTUV2ZW50cyk6
CisgICAgICAgIChlLnByb3RvdHlwZS5zdXBwb3J0c05hdGl2ZVNoYWRvd0RPTSk6CisgICAgICAg
IChlLnByb3RvdHlwZS5nZXRBbmltYXRpb25QcmVmaXgpOgorICAgICAgICAoZS5wcm90b3R5cGUu
Z2V0VHJhbnNpdGlvbkVuZCk6CisgICAgICAgIChlLnByb3RvdHlwZS5zdXBwb3J0c0FuaW1hdGlv
bik6CisgICAgICAgIChIKToKKyAgICAgICAgKGouQy5Ob2RlKToKKyAgICAgICAgKGUucHJvdG90
eXBlLnBhcnNlKToKKyAgICAgICAgKGUubWFrZUN1cnJlbnQpOgorICAgICAgICAoZS5wcm90b3R5
cGUuaGFzUHJvcGVydHkpOgorICAgICAgICAoZS5wcm90b3R5cGUuc2V0UHJvcGVydHkpOgorICAg
ICAgICAoZS5wcm90b3R5cGUuZ2V0UHJvcGVydHkpOgorICAgICAgICAoZS5wcm90b3R5cGUuaW52
b2tlKToKKyAgICAgICAgKGUucHJvdG90eXBlLmxvZ0Vycm9yKToKKyAgICAgICAgKGUucHJvdG90
eXBlLmxvZyk6CisgICAgICAgIChlLnByb3RvdHlwZS5sb2dHcm91cCk6CisgICAgICAgIChlLnBy
b3RvdHlwZS5sb2dHcm91cEVuZCk6CisgICAgICAgIChnZXQgZS5wcm90b3R5cGUuY29udGFpbnMp
OgorICAgICAgICAoZS5wcm90b3R5cGUucXVlcnlTZWxlY3Rvcik6CisgICAgICAgIChlLnByb3Rv
dHlwZS5xdWVyeVNlbGVjdG9yQWxsKToKKyAgICAgICAgKGUucHJvdG90eXBlLm9uKToKKyAgICAg
ICAgKGUucHJvdG90eXBlLm9uQW5kQ2FuY2VsKToKKyAgICAgICAgKGUucHJvdG90eXBlLmRpc3Bh
dGNoRXZlbnQpOgorICAgICAgICAoZS5wcm90b3R5cGUuY3JlYXRlTW91c2VFdmVudCk6CisgICAg
ICAgIChlLnByb3RvdHlwZS5jcmVhdGVFdmVudCk6CisgICAgICAgIChlLnByb3RvdHlwZS5wcmV2
ZW50RGVmYXVsdCk6CisgICAgICAgIChlLnByb3RvdHlwZS5pc1ByZXZlbnRlZCk6CisgICAgICAg
IChlLnByb3RvdHlwZS5nZXRJbm5lckhUTUwpOgorICAgICAgICAoZS5wcm90b3R5cGUuZ2V0VGVt
cGxhdGVDb250ZW50KToKKyAgICAgICAgKGUucHJvdG90eXBlLmdldE91dGVySFRNTCk6CisgICAg
ICAgIChlLnByb3RvdHlwZS5ub2RlTmFtZSk6CisgICAgICAgIChlLnByb3RvdHlwZS5ub2RlVmFs
dWUpOgorICAgICAgICAoZS5wcm90b3R5cGUudHlwZSk6CisgICAgICAgIChlLnByb3RvdHlwZS5j
b250ZW50KToKKyAgICAgICAgKGUucHJvdG90eXBlLmZpcnN0Q2hpbGQpOgorICAgICAgICAoZS5w
cm90b3R5cGUubmV4dFNpYmxpbmcpOgorICAgICAgICAoZS5wcm90b3R5cGUucGFyZW50RWxlbWVu
dCk6CisgICAgICAgIChlLnByb3RvdHlwZS5jaGlsZE5vZGVzKToKKyAgICAgICAgKGUucHJvdG90
eXBlLmNoaWxkTm9kZXNBc0xpc3QpOgorICAgICAgICAoZS5wcm90b3R5cGUuY2xlYXJOb2Rlcyk6
CisgICAgICAgIChlLnByb3RvdHlwZS5hcHBlbmRDaGlsZCk6CisgICAgICAgIChlLnByb3RvdHlw
ZS5yZW1vdmVDaGlsZCk6CisgICAgICAgIChlLnByb3RvdHlwZS5yZXBsYWNlQ2hpbGQpOgorICAg
ICAgICAoZS5wcm90b3R5cGUucmVtb3ZlKToKKyAgICAgICAgKGUucHJvdG90eXBlLmluc2VydEJl
Zm9yZSk6CisgICAgICAgIChlLnByb3RvdHlwZS5pbnNlcnRBbGxCZWZvcmUpOgorICAgICAgICAo
ZS5wcm90b3R5cGUuaW5zZXJ0QWZ0ZXIpOgorICAgICAgICAoZS5wcm90b3R5cGUuc2V0SW5uZXJI
VE1MKToKKyAgICAgICAgKGUucHJvdG90eXBlLmdldFRleHQpOgorICAgICAgICAoZS5wcm90b3R5
cGUuc2V0VGV4dCk6CisgICAgICAgIChlLnByb3RvdHlwZS5nZXRWYWx1ZSk6CisgICAgICAgIChl
LnByb3RvdHlwZS5nZXRDaGVja2VkKToKKyAgICAgICAgKGUucHJvdG90eXBlLnNldENoZWNrZWQp
OgorICAgICAgICAoZS5wcm90b3R5cGUuY3JlYXRlQ29tbWVudCk6CisgICAgICAgIChlLnByb3Rv
dHlwZS5jcmVhdGVUZW1wbGF0ZSk6CisgICAgICAgIChlLnByb3RvdHlwZS5jcmVhdGVFbGVtZW50
KToKKyAgICAgICAgKGUucHJvdG90eXBlLmNyZWF0ZUVsZW1lbnROUyk6CisgICAgICAgIChlLnBy
b3RvdHlwZS5jcmVhdGVUZXh0Tm9kZSk6CisgICAgICAgIChlLnByb3RvdHlwZS5jcmVhdGVTY3Jp
cHRUYWcpOgorICAgICAgICAoZS5wcm90b3R5cGUuY3JlYXRlU3R5bGVFbGVtZW50KToKKyAgICAg
ICAgKGUucHJvdG90eXBlLmNyZWF0ZVNoYWRvd1Jvb3QpOgorICAgICAgICAoZS5wcm90b3R5cGUu
Z2V0U2hhZG93Um9vdCk6CisgICAgICAgIChlLnByb3RvdHlwZS5nZXRIb3N0KToKKyAgICAgICAg
KGUucHJvdG90eXBlLmNsb25lKToKKyAgICAgICAgKGUucHJvdG90eXBlLmdldEVsZW1lbnRzQnlD
bGFzc05hbWUpOgorICAgICAgICAoZS5wcm90b3R5cGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUpOgor
ICAgICAgICAoZS5wcm90b3R5cGUuY2xhc3NMaXN0KToKKyAgICAgICAgKGUucHJvdG90eXBlLmFk
ZENsYXNzKToKKyAgICAgICAgKGUucHJvdG90eXBlLnJlbW92ZUNsYXNzKToKKyAgICAgICAgKGUu
cHJvdG90eXBlLmhhc0NsYXNzKToKKyAgICAgICAgKGUucHJvdG90eXBlLnNldFN0eWxlKToKKyAg
ICAgICAgKGUucHJvdG90eXBlLnJlbW92ZVN0eWxlKToKKyAgICAgICAgKGUucHJvdG90eXBlLmdl
dFN0eWxlKToKKyAgICAgICAgKGUucHJvdG90eXBlLmhhc1N0eWxlKToKKyAgICAgICAgKGUucHJv
dG90eXBlLnRhZ05hbWUpOgorICAgICAgICAoZS5wcm90b3R5cGUuYXR0cmlidXRlTWFwKToKKyAg
ICAgICAgKGUucHJvdG90eXBlLmhhc0F0dHJpYnV0ZSk6CisgICAgICAgIChlLnByb3RvdHlwZS5o
YXNBdHRyaWJ1dGVOUyk6CisgICAgICAgIChlLnByb3RvdHlwZS5nZXRBdHRyaWJ1dGUpOgorICAg
ICAgICAoZS5wcm90b3R5cGUuZ2V0QXR0cmlidXRlTlMpOgorICAgICAgICAoZS5wcm90b3R5cGUu
c2V0QXR0cmlidXRlKToKKyAgICAgICAgKGUucHJvdG90eXBlLnNldEF0dHJpYnV0ZU5TKToKKyAg
ICAgICAgKGUucHJvdG90eXBlLnJlbW92ZUF0dHJpYnV0ZSk6CisgICAgICAgIChlLnByb3RvdHlw
ZS5yZW1vdmVBdHRyaWJ1dGVOUyk6CisgICAgICAgIChlLnByb3RvdHlwZS50ZW1wbGF0ZUF3YXJl
Um9vdCk6CisgICAgICAgIChlLnByb3RvdHlwZS5jcmVhdGVIdG1sRG9jdW1lbnQpOgorICAgICAg
ICAoZS5wcm90b3R5cGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KToKKyAgICAgICAgKGUucHJvdG90
eXBlLmdldFRpdGxlKToKKyAgICAgICAgKGUucHJvdG90eXBlLnNldFRpdGxlKToKKyAgICAgICAg
KGUucHJvdG90eXBlLmVsZW1lbnRNYXRjaGVzKToKKyAgICAgICAgKGUucHJvdG90eXBlLmlzVGVt
cGxhdGVFbGVtZW50KToKKyAgICAgICAgKGUucHJvdG90eXBlLmlzVGV4dE5vZGUpOgorICAgICAg
ICAoZS5wcm90b3R5cGUuaXNDb21tZW50Tm9kZSk6CisgICAgICAgIChlLnByb3RvdHlwZS5pc0Vs
ZW1lbnROb2RlKToKKyAgICAgICAgKGUucHJvdG90eXBlLmhhc1NoYWRvd1Jvb3QpOgorICAgICAg
ICAoZS5wcm90b3R5cGUuaXNTaGFkb3dSb290KToKKyAgICAgICAgKGUucHJvdG90eXBlLmltcG9y
dEludG9Eb2MpOgorICAgICAgICAoZS5wcm90b3R5cGUuYWRvcHROb2RlKToKKyAgICAgICAgKGUu
cHJvdG90eXBlLmdldEhyZWYpOgorICAgICAgICAoZS5wcm90b3R5cGUuZ2V0RXZlbnRLZXkpOgor
ICAgICAgICAoZS5wcm90b3R5cGUuZ2V0R2xvYmFsRXZlbnRUYXJnZXQpOgorICAgICAgICAoZS5w
cm90b3R5cGUuZ2V0SGlzdG9yeSk6CisgICAgICAgIChlLnByb3RvdHlwZS5nZXRMb2NhdGlvbik6
CisgICAgICAgIChlLnByb3RvdHlwZS5yZXNldEJhc2VFbGVtZW50KToKKyAgICAgICAgKGUucHJv
dG90eXBlLmdldFVzZXJBZ2VudCk6CisgICAgICAgIChlLnByb3RvdHlwZS5zZXREYXRhKToKKyAg
ICAgICAgKGUucHJvdG90eXBlLmdldERhdGEpOgorICAgICAgICAoZS5wcm90b3R5cGUuZ2V0Q29t
cHV0ZWRTdHlsZSk6CisgICAgICAgIChlLnByb3RvdHlwZS5zZXRHbG9iYWxWYXIpOgorICAgICAg
ICAoZS5wcm90b3R5cGUuc3VwcG9ydHNXZWJBbmltYXRpb24pOgorICAgICAgICAoZS5wcm90b3R5
cGUucGVyZm9ybWFuY2VOb3cpOgorICAgICAgICAoZS5wcm90b3R5cGUuc3VwcG9ydHNDb29raWVz
KToKKyAgICAgICAgKGUucHJvdG90eXBlLmdldENvb2tpZSk6CisgICAgICAgIChlLnByb3RvdHlw
ZS5zZXRDb29raWUpOgorICAgICAgICAoZS5wcm90b3R5cGUuX2luaXQpOgorICAgICAgICAoZ2V0
IGUucHJvdG90eXBlLmdldEJhc2VIcmVmRnJvbURPTSk6CisgICAgICAgIChlLnByb3RvdHlwZS5v
bkhhc2hDaGFuZ2UpOgorICAgICAgICAoZ2V0IGUucHJvdG90eXBlLnB1c2hTdGF0ZSk6CisgICAg
ICAgIChyZXR1cm4udC5wcm90b3R5cGUuYWRkVGFnKToKKyAgICAgICAgKHQucHJvdG90eXBlLmFk
ZFRhZ3MpOgorICAgICAgICAodC5wcm90b3R5cGUuZ2V0VGFnKToKKyAgICAgICAgKHQucHJvdG90
eXBlLmdldFRhZ3MpOgorICAgICAgICAodC5wcm90b3R5cGUudXBkYXRlVGFnKToKKyAgICAgICAg
KHQucHJvdG90eXBlLnJlbW92ZVRhZyk6CisgICAgICAgICh0LnByb3RvdHlwZS5yZW1vdmVUYWdF
bGVtZW50KToKKyAgICAgICAgKHQucHJvdG90eXBlLl9nZXRPckNyZWF0ZUVsZW1lbnQpOgorICAg
ICAgICAodC5wcm90b3R5cGUuX3NldE1ldGFFbGVtZW50QXR0cmlidXRlcyk6CisgICAgICAgICh0
LnByb3RvdHlwZS5fcGFyc2VTZWxlY3Rvcik6CisgICAgICAgICh0LnByb3RvdHlwZS5fY29udGFp
bnNBdHRyaWJ1dGVzKToKKyAgICAgICAgKHJldHVybi50LmluaXQpOgorICAgICAgICAoai5DLmdl
dEFuZ3VsYXJUZXN0YWJpbGl0eSk6CisgICAgICAgIChqLkMuZ2V0QWxsQW5ndWxhclRlc3RhYmls
aXRpZXMpOgorICAgICAgICAoai5DLmdldEFsbEFuZ3VsYXJSb290RWxlbWVudHMpOgorICAgICAg
ICAoZSk6CisgICAgICAgICh0LnByb3RvdHlwZS5hZGRUb1dpbmRvdyk6CisgICAgICAgICh0LnBy
b3RvdHlwZS5maW5kVGVzdGFiaWxpdHlJblRyZWUpOgorICAgICAgICAocmV0dXJuLnQucHJvdG90
eXBlLmdldFRpdGxlKToKKyAgICAgICAgKG90KToKKyAgICAgICAgKHJldHVybi50LnByb3RvdHlw
ZS5hZGRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKHQucHJvdG90eXBlLmFkZEdsb2JhbEV2ZW50
TGlzdGVuZXIpOgorICAgICAgICAodC5wcm90b3R5cGUuZ2V0Wm9uZSk6CisgICAgICAgICh0LnBy
b3RvdHlwZS5fZmluZFBsdWdpbkZvcik6CisgICAgICAgIChyZXR1cm4udC5wcm90b3R5cGUuc3Vw
cG9ydHMpOgorICAgICAgICAodC5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAg
IChyZXR1cm4udC5wcm90b3R5cGUuYWRkU3R5bGVzKToKKyAgICAgICAgKHQucHJvdG90eXBlLm9u
U3R5bGVzQWRkZWQpOgorICAgICAgICAodC5wcm90b3R5cGUuZ2V0QWxsU3R5bGVzKToKKyAgICAg
ICAgKGUucHJvdG90eXBlLl9hZGRTdHlsZXNUb0hvc3QpOgorICAgICAgICAoZS5wcm90b3R5cGUu
YWRkSG9zdCk6CisgICAgICAgIChlLnByb3RvdHlwZS5yZW1vdmVIb3N0KToKKyAgICAgICAgKGUu
cHJvdG90eXBlLm9uU3R5bGVzQWRkZWQpOgorICAgICAgICAocmV0dXJuLnQucHJvdG90eXBlLmNy
ZWF0ZVJlbmRlcmVyKToKKyAgICAgICAgKHJldHVybi50LnByb3RvdHlwZS5kZXN0cm95KToKKyAg
ICAgICAgKHQucHJvdG90eXBlLmNyZWF0ZVRleHQpOgorICAgICAgICAodC5wcm90b3R5cGUuc2Vs
ZWN0Um9vdEVsZW1lbnQpOgorICAgICAgICAodC5wcm90b3R5cGUucGFyZW50Tm9kZSk6CisgICAg
ICAgICh0LnByb3RvdHlwZS5saXN0ZW4pOgorICAgICAgICAoZS5wcm90b3R5cGUuYXBwbHlUb0hv
c3QpOgorICAgICAgICAoX3QpOgorICAgICAgICAoZS5wcm90b3R5cGUubm9kZU9yU2hhZG93Um9v
dCk6CisgICAgICAgIChlLnByb3RvdHlwZS5kZXN0cm95KToKKyAgICAgICAgKGUucHJvdG90eXBl
LnBhcmVudE5vZGUpOgorICAgICAgICAoYnQpOgorICAgICAgICAoZS5wcm90b3R5cGUuc3VwcG9y
dHMpOgorICAgICAgICAoZS5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICh3
dCk6CisgICAgICAgICh3dC5jdG9yUGFyYW1ldGVycyk6CisgICAgICAgIChyZXR1cm4udC5wcm90
b3R5cGUuYnVpbGRIYW1tZXIpOgorICAgICAgICAoT3QuY3RvclBhcmFtZXRlcnMpOgorICAgICAg
ICAoZS5wcm90b3R5cGUuaXNDdXN0b21FdmVudCk6CisgICAgICAgICh4dC5jdG9yUGFyYW1ldGVy
cyk6CisgICAgICAgIChQdC5hbHQpOgorICAgICAgICAoUHQuY29udHJvbCk6CisgICAgICAgIChQ
dC5tZXRhKToKKyAgICAgICAgKFB0LnNoaWZ0KToKKyAgICAgICAgKGUucGFyc2VFdmVudE5hbWUp
OgorICAgICAgICAoZS5nZXRFdmVudEZ1bGxLZXkpOgorICAgICAgICAoZS5ldmVudENhbGxiYWNr
KToKKyAgICAgICAgKGUuX25vcm1hbGl6ZUtleSk6CisgICAgICAgIChyZXR1cm4udC5wcm90b3R5
cGUuc2FuaXRpemVDaGlsZHJlbik6CisgICAgICAgICh0LnByb3RvdHlwZS5zdGFydEVsZW1lbnQp
OgorICAgICAgICAodC5wcm90b3R5cGUuZW5kRWxlbWVudCk6CisgICAgICAgICh0LnByb3RvdHlw
ZS5jaGFycyk6CisgICAgICAgIChyZXR1cm4udC5wcm90b3R5cGUuc2FuaXRpemUpOgorICAgICAg
ICAodC5wcm90b3R5cGUuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwpOgorICAgICAgICAodC5wcm90
b3R5cGUuYnlwYXNzU2VjdXJpdHlUcnVzdFN0eWxlKToKKyAgICAgICAgKHQucHJvdG90eXBlLmJ5
cGFzc1NlY3VyaXR5VHJ1c3RTY3JpcHQpOgorICAgICAgICAodC5wcm90b3R5cGUuYnlwYXNzU2Vj
dXJpdHlUcnVzdFVybCk6CisgICAgICAgICh0LnByb3RvdHlwZS5ieXBhc3NTZWN1cml0eVRydXN0
UmVzb3VyY2VVcmwpOgorICAgICAgICAoZWUpOgorICAgICAgICAoZS5wcm90b3R5cGUuc2FuaXRp
emUpOgorICAgICAgICAoZS5wcm90b3R5cGUuY2hlY2tOb3RTYWZlVmFsdWUpOgorICAgICAgICAo
ZS5wcm90b3R5cGUuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwpOgorICAgICAgICAoZS5wcm90b3R5
cGUuYnlwYXNzU2VjdXJpdHlUcnVzdFN0eWxlKToKKyAgICAgICAgKGUucHJvdG90eXBlLmJ5cGFz
c1NlY3VyaXR5VHJ1c3RTY3JpcHQpOgorICAgICAgICAoZS5wcm90b3R5cGUuYnlwYXNzU2VjdXJp
dHlUcnVzdFVybCk6CisgICAgICAgIChlLnByb3RvdHlwZS5ieXBhc3NTZWN1cml0eVRydXN0UmVz
b3VyY2VVcmwpOgorICAgICAgICAocmV0dXJuLnQucHJvdG90eXBlLmdldFR5cGVOYW1lKToKKyAg
ICAgICAgKHQucHJvdG90eXBlLnRvU3RyaW5nKToKKyAgICAgICAgKHJlKToKKyAgICAgICAgKGUu
cHJvdG90eXBlLmdldFR5cGVOYW1lKToKKyAgICAgICAgKHNlKToKKyAgICAgICAgKGFlKToKKyAg
ICAgICAgKHVlKToKKyAgICAgICAgKHJldHVybi50LndpdGhTZXJ2ZXJUcmFuc2l0aW9uKToKKyAg
ICAgICAgKGRlKToKKyAgICAgICAgKHQucHJvdG90eXBlLnRpbWVDaGFuZ2VEZXRlY3Rpb24pOgor
ICAgICAgICAodC5hbGwpOgorICAgICAgICAodC5jc3MpOgorICAgICAgICAodC5kaXJlY3RpdmUp
OgorICAgICAgICAoZS5wcm90b3R5cGUuX25leHQpOgorICAgICAgICAoZS5wcm90b3R5cGUuX2Vy
cm9yKToKKyAgICAgICAgKGUucHJvdG90eXBlLl9jb21wbGV0ZSk6CisgICAgICAgIChRcVJLKToK
KyAgICAgICAgKGUuY3JlYXRlKToKKyAgICAgICAgKGUuZGlzcGF0Y2gpOgorICAgICAgICAoZS5w
cm90b3R5cGUuX3N1YnNjcmliZSk6CisgICAgICAgIChSUlZ2KToKKyAgICAgICAgKFNLSDYpOgor
ICAgICAgICAoVk9mWik6CisgICAgICAgIChXaFZjKToKKyAgICAgICAgKFhham8pOgorICAgICAg
ICAoZS5vZik6CisgICAgICAgIChZaDhRKToKKyAgICAgICAgKGUucHJvdG90eXBlLnVuc3Vic2Ny
aWJlKToKKyAgICAgICAgKFpKZjgpOgorICAgICAgICAoYVFsNyk6CisgICAgICAgIChyZXR1cm4u
dC5wcm90b3R5cGUuY2FsbCk6CisgICAgICAgIChlLnByb3RvdHlwZS5ub3RpZnlDb21wbGV0ZSk6
CisgICAgICAgIChjYnVYKToKKyAgICAgICAgKGNkbU4pOgorICAgICAgICAoZS5uLnN0cmluZ19h
cHBlYXJlZF9oZXJlLnR5cGVvZi50LnQpOgorICAgICAgICAoZW1Pdyk6CisgICAgICAgIChmV2JQ
KToKKyAgICAgICAgKGhZQlkpOgorICAgICAgICAoakJFRik6CisgICAgICAgIChra2IwKToKKyAg
ICAgICAgKGxIc0IpOgorICAgICAgICAobWJWQyk6CisgICAgICAgIChlLnByb3RvdHlwZS5hLnJ4
U3Vic2NyaWJlcik6CisgICAgICAgIChlLnByb3RvdHlwZS5uZXh0KToKKyAgICAgICAgKGUucHJv
dG90eXBlLmVycm9yKToKKyAgICAgICAgKGUucHJvdG90eXBlLmNvbXBsZXRlKToKKyAgICAgICAg
KGUucHJvdG90eXBlLl91bnN1YnNjcmliZUFuZFJlY3ljbGUpOgorICAgICAgICAoZS5wcm90b3R5
cGUuX190cnlPclVuc3ViKToKKyAgICAgICAgKGUucHJvdG90eXBlLl9fdHJ5T3JTZXRFcnJvcik6
CisgICAgICAgIChlLnByb3RvdHlwZS5fdW5zdWJzY3JpYmUpOgorICAgICAgICAobW1WUyk6Cisg
ICAgICAgIChyOFpZKToKKyAgICAgICAgKHJldHVybi50LnByb3RvdHlwZS5saWZ0KToKKyAgICAg
ICAgKHQucHJvdG90eXBlLl90cnlTdWJzY3JpYmUpOgorICAgICAgICAodC5wcm90b3R5cGUuZm9y
RWFjaCk6CisgICAgICAgICh0LnByb3RvdHlwZS5pLm9ic2VydmFibGUpOgorICAgICAgICAodC5j
cmVhdGUpOgorICAgICAgICAockNUZik6CisgICAgICAgIChlLnByb3RvdHlwZS5nZXRTdWJqZWN0
KToKKyAgICAgICAgKGUucHJvdG90eXBlLmNvbm5lY3QpOgorICAgICAgICAoZS5wcm90b3R5cGUu
cmVmQ291bnQpOgorICAgICAgICAoc0lZTyk6CisgICAgICAgIChlLnByb3RvdHlwZS5ub3RpZnlO
ZXh0KToKKyAgICAgICAgKHQycXYpOgorICAgICAgICAoZS5wcm90b3R5cGUubm90aWZ5RXJyb3Ip
OgorICAgICAgICAod0FrRCk6CisgICAgICAgICh4QUpzKToKKyAgICAgICAgKGUuZW1wdHkubmV4
dCk6CisgICAgICAgIChlLmVtcHR5LmVycm9yKToKKyAgICAgICAgKGUuZW1wdHkuY29tcGxldGUp
OgorICAgICAgICAoeXJvdSk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvZTJlL2FwcC5lMmUtc3BlYy50czogQWRk
ZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2FuZ3VsYXIvZTJlL2FwcC5wby50czogQWRkZWQuCisgICAgICAgICogU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvZTJl
L3RzY29uZmlnLmUyZS5qc29uOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9rYXJtYS5jb25mLmpzOiBB
ZGRlZC4KKyAgICAgICAgKG1vZHVsZS5leHBvcnRzKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9wYWNrYWdlLmpz
b246IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL3Byb3RyYWN0b3IuY29uZi5qczogQWRkZWQuCisgICAg
ICAgIChleHBvcnRzLmNvbmZpZy5qYXNtaW5lTm9kZU9wdHMucHJpbnQpOgorICAgICAgICAoZXhw
b3J0cy5jb25maWcuYmVmb3JlTGF1bmNoKToKKyAgICAgICAgKGV4cG9ydHMuY29uZmlnLm9uUHJl
cGFyZSk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2FuZ3VsYXIvc3JjL2FwcC9hcHAuY29tcG9uZW50LmNzczogQWRkZWQuCisg
ICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2FuZ3VsYXIvc3JjL2FwcC9hcHAuY29tcG9uZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAq
IFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1
bGFyL3NyYy9hcHAvYXBwLmNvbXBvbmVudC5zcGVjLnRzOiBBZGRlZC4KKyAgICAgICAgKiBTcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9z
cmMvYXBwL2FwcC5jb21wb25lbnQudHM6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL3NyYy9hcHAvYXBw
Lm1vZHVsZS50czogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvc3JjL2FwcC90b2RvLWRhdGEuc2Vydmlj
ZS5zcGVjLnRzOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9zcmMvYXBwL3RvZG8tZGF0YS5zZXJ2aWNl
LnRzOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9zcmMvYXBwL3RvZG8uc3BlYy50czogQWRkZWQuCisg
ICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2FuZ3VsYXIvc3JjL2FwcC90b2RvLnRzOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9zcmMvYXNz
ZXRzLy5naXRrZWVwOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9zcmMvYXNzZXRzL2Nzcy90b2RvbXZj
LWFwcC5jc3M6IEFkZGVkLgorICAgICAgICAoaHRtbCwpOgorICAgICAgICAoYnV0dG9uKToKKyAg
ICAgICAgKGJvZHkpOgorICAgICAgICAoOmZvY3VzKToKKyAgICAgICAgKC5oaWRkZW4pOgorICAg
ICAgICAoLnRvZG9hcHApOgorICAgICAgICAoLnRvZG9hcHAgaW5wdXQ6Oi13ZWJraXQtaW5wdXQt
cGxhY2Vob2xkZXIpOgorICAgICAgICAoLnRvZG9hcHAgaW5wdXQ6Oi1tb3otcGxhY2Vob2xkZXIp
OgorICAgICAgICAoLnRvZG9hcHAgaW5wdXQ6OmlucHV0LXBsYWNlaG9sZGVyKToKKyAgICAgICAg
KC50b2RvYXBwIGgxKToKKyAgICAgICAgKC5uZXctdG9kbywpOgorICAgICAgICAoLm5ldy10b2Rv
KToKKyAgICAgICAgKC5tYWluKToKKyAgICAgICAgKGxhYmVsW2Zvcj0ndG9nZ2xlLWFsbCddKToK
KyAgICAgICAgKC50b2dnbGUtYWxsKToKKyAgICAgICAgKC50b2dnbGUtYWxsOmJlZm9yZSk6Cisg
ICAgICAgICgudG9nZ2xlLWFsbDpjaGVja2VkOmJlZm9yZSk6CisgICAgICAgICgudG9kby1saXN0
KToKKyAgICAgICAgKC50b2RvLWxpc3QgbGkpOgorICAgICAgICAoLnRvZG8tbGlzdCBsaTpsYXN0
LWNoaWxkKToKKyAgICAgICAgKC50b2RvLWxpc3QgbGkuZWRpdGluZyk6CisgICAgICAgICgudG9k
by1saXN0IGxpLmVkaXRpbmcgLmVkaXQpOgorICAgICAgICAoLnRvZG8tbGlzdCBsaS5lZGl0aW5n
IC52aWV3KToKKyAgICAgICAgKC50b2RvLWxpc3QgbGkgLnRvZ2dsZSk6CisgICAgICAgICgudG9k
by1saXN0IGxpIC50b2dnbGU6YWZ0ZXIpOgorICAgICAgICAoLnRvZG8tbGlzdCBsaSAudG9nZ2xl
OmNoZWNrZWQ6YWZ0ZXIpOgorICAgICAgICAoLnRvZG8tbGlzdCBsaSBsYWJlbCk6CisgICAgICAg
ICgudG9kby1saXN0IGxpLmNvbXBsZXRlZCBsYWJlbCk6CisgICAgICAgICgudG9kby1saXN0IGxp
IC5kZXN0cm95KToKKyAgICAgICAgKC50b2RvLWxpc3QgbGkgLmRlc3Ryb3k6aG92ZXIpOgorICAg
ICAgICAoLnRvZG8tbGlzdCBsaSAuZGVzdHJveTphZnRlcik6CisgICAgICAgICgudG9kby1saXN0
IGxpOmhvdmVyIC5kZXN0cm95KToKKyAgICAgICAgKC50b2RvLWxpc3QgbGkgLmVkaXQpOgorICAg
ICAgICAoLnRvZG8tbGlzdCBsaS5lZGl0aW5nOmxhc3QtY2hpbGQpOgorICAgICAgICAoLmZvb3Rl
cik6CisgICAgICAgICguZm9vdGVyOmJlZm9yZSk6CisgICAgICAgICgudG9kby1jb3VudCk6Cisg
ICAgICAgICgudG9kby1jb3VudCBzdHJvbmcpOgorICAgICAgICAoLmZpbHRlcnMpOgorICAgICAg
ICAoLmZpbHRlcnMgbGkpOgorICAgICAgICAoLmZpbHRlcnMgbGkgYSk6CisgICAgICAgICguZmls
dGVycyBsaSBhOmhvdmVyKToKKyAgICAgICAgKC5maWx0ZXJzIGxpIGEuc2VsZWN0ZWQpOgorICAg
ICAgICAoLmNsZWFyLWNvbXBsZXRlZCwpOgorICAgICAgICAoLmNsZWFyLWNvbXBsZXRlZDpob3Zl
cik6CisgICAgICAgICguaW5mbyk6CisgICAgICAgICguaW5mbyBwKToKKyAgICAgICAgKC5pbmZv
IGEpOgorICAgICAgICAoLmluZm8gYTpob3Zlcik6CisgICAgICAgIChAbWVkaWEgc2NyZWVuIGFu
ZCAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOjApKToKKyAgICAgICAgKC50b2dnbGUt
YWxsLCk6CisgICAgICAgIChAbWVkaWEgKG1heC13aWR0aDogNDMwcHgpKToKKyAgICAgICAgKiBT
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxh
ci9zcmMvYXNzZXRzL2Nzcy90b2RvbXZjLWNvbW1vbi5jc3M6IEFkZGVkLgorICAgICAgICAoaHIp
OgorICAgICAgICAoLmxlYXJuIGEpOgorICAgICAgICAoLmxlYXJuIGE6aG92ZXIpOgorICAgICAg
ICAoLmxlYXJuIGgzLCk6CisgICAgICAgICgubGVhcm4gaDMpOgorICAgICAgICAoLmxlYXJuIGg0
KToKKyAgICAgICAgKC5sZWFybiBoNSk6CisgICAgICAgICgubGVhcm4gdWwpOgorICAgICAgICAo
LmxlYXJuIGxpKToKKyAgICAgICAgKC5sZWFybiBwKToKKyAgICAgICAgKCNpc3N1ZS1jb3VudCk6
CisgICAgICAgICgucXVvdGUpOgorICAgICAgICAoLnF1b3RlIHApOgorICAgICAgICAoLnF1b3Rl
IHA6YmVmb3JlKToKKyAgICAgICAgKC5xdW90ZSBwOmFmdGVyKToKKyAgICAgICAgKC5xdW90ZSBm
b290ZXIpOgorICAgICAgICAoLnF1b3RlIGZvb3RlciBpbWcpOgorICAgICAgICAoLnF1b3RlIGZv
b3RlciBhKToKKyAgICAgICAgKC5zcGVlY2gtYnViYmxlKToKKyAgICAgICAgKC5zcGVlY2gtYnVi
YmxlOmFmdGVyKToKKyAgICAgICAgKC5sZWFybi1iYXIgPiAubGVhcm4pOgorICAgICAgICAoQG1l
ZGlhIChtaW4td2lkdGg6IDg5OXB4KSk6CisgICAgICAgICgubGVhcm4tYmFyKToKKyAgICAgICAg
KiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5n
dWxhci9zcmMvZW52aXJvbm1lbnRzL2Vudmlyb25tZW50LnByb2QudHM6IEFkZGVkLgorICAgICAg
ICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9h
bmd1bGFyL3NyYy9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQudHM6IEFkZGVkLgorICAgICAgICAq
IFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1
bGFyL3NyYy9mYXZpY29uLmljbzogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvc3JjL2luZGV4Lmh0bWw6
IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9hbmd1bGFyL3NyYy9tYWluLnRzOiBBZGRlZC4KKyAgICAgICAgKiBTcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9z
cmMvcG9seWZpbGxzLnRzOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9zcmMvc3R5bGVzLmNzczogQWRk
ZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2FuZ3VsYXIvc3JjL3Rlc3QudHM6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL3NyYy90
c2NvbmZpZy5hcHAuanNvbjogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvc3JjL3RzY29uZmlnLnNwZWMu
anNvbjogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvc3JjL3R5cGluZ3MuZC50czogQWRkZWQuCisgICAg
ICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2FuZ3VsYXIvdHNjb25maWcuanNvbjogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvdHNsaW50Lmpzb246
IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9hbmd1bGFyanMvYm93ZXIuanNvbjogUmVtb3ZlZC4KKyAgICAgICAgKiBT
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxh
cmpzL2Jvd2VyX2NvbXBvbmVudHMvYW5ndWxhci1tb2Nrcy9hbmd1bGFyLW1vY2tzLmpzOiBSZW1v
dmVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9hbmd1bGFyanMvYm93ZXJfY29tcG9uZW50cy9hbmd1bGFyL2FuZ3VsYXIuanM6
IFJlbW92ZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ib3dlcl9jb21wb25lbnRzL3RvZG9tdmMtY29tbW9u
L2Jhc2UuY3NzOiBSZW1vdmVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvYm93ZXJfY29tcG9uZW50cy90b2Rv
bXZjLWNvbW1vbi9iYXNlLmpzOiBSZW1vdmVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvYm93ZXJfY29tcG9u
ZW50cy90b2RvbXZjLWNvbW1vbi9iZy5wbmc6IFJlbW92ZWQuCisgICAgICAgICogU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9pbmRl
eC5odG1sOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9hbmd1bGFyanMvanMvYXBwLmpzOgorICAgICAgICAoc3RyaW5nX2FwcGVh
cmVkX2hlcmUuY29uZmlnLnJvdXRlQ29uZmlnLnJlc29sdmUuc3RvcmUpOgorICAgICAgICAoc3Ry
aW5nX2FwcGVhcmVkX2hlcmUuY29uZmlnKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL2pzL2NvbnRyb2xsZXJz
L3RvZG9DdHJsLmpzOgorICAgICAgICAoc2NvcGUuYWRkVG9kbyk6CisgICAgICAgIChzY29wZS5l
ZGl0VG9kbyk6CisgICAgICAgIChzY29wZS5zYXZlRWRpdHMpOgorICAgICAgICAoc2NvcGUucmV2
ZXJ0RWRpdHMpOgorICAgICAgICAoc2NvcGUucmVtb3ZlVG9kbyk6CisgICAgICAgIChzY29wZS5z
YXZlVG9kbyk6CisgICAgICAgIChzY29wZS50b2dnbGVDb21wbGV0ZWQpOgorICAgICAgICAoc2Nv
cGUuY2xlYXJDb21wbGV0ZWRUb2Rvcyk6CisgICAgICAgIChzY29wZS5tYXJrQWxsKToKKyAgICAg
ICAgKFRvZG9DdHJsKToKKyAgICAgICAgKHNjb3BlLmRvbmVFZGl0aW5nKTogRGVsZXRlZC4KKyAg
ICAgICAgKHNjb3BlLnJldmVydEVkaXRpbmcpOiBEZWxldGVkLgorICAgICAgICAqIFNwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvanMv
ZGlyZWN0aXZlcy90b2RvQmx1ci5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL2pzL2RpcmVj
dGl2ZXMvdG9kb0VzY2FwZS5qczoKKyAgICAgICAgKHJldHVybik6CisgICAgICAgICogU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9q
cy9kaXJlY3RpdmVzL3RvZG9Gb2N1cy5qczoKKyAgICAgICAgKHRvZG9Gb2N1cyk6CisgICAgICAg
ICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2Fu
Z3VsYXJqcy9qcy9zZXJ2aWNlcy90b2RvU3RvcmFnZS5qczoKKyAgICAgICAgKHJldHVybi5Qcm9t
aXNlLnJlc29sdmUudGhlbik6CisgICAgICAgIChzdG9yZS5fZ2V0RnJvbUxvY2FsQ2FjaGUpOgor
ICAgICAgICAoc3RvcmUuX3NhdmVUb0xvY2FsQ2FjaGUpOgorICAgICAgICAoc3RvcmUuY2xlYXJD
b21wbGV0ZWQpOgorICAgICAgICAoc3RvcmUuZGVsZXRlKToKKyAgICAgICAgKHN0b3JlLmluc2Vy
dCk6CisgICAgICAgIChzdG9yZS5wdXQpOgorICAgICAgICAobG9jYWxTdG9yYWdlLmdldEl0ZW0p
OiBEZWxldGVkLgorICAgICAgICAobG9jYWxTdG9yYWdlLnNldEl0ZW0pOiBEZWxldGVkLgorICAg
ICAgICAocmV0dXJuLnB1dCk6IERlbGV0ZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ub2RlX21vZHVsZXMv
YW5ndWxhci1tb2Nrcy9MSUNFTlNFLm1kOiBDb3BpZWQgZnJvbSBQZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2xhYnMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Jl
YWN0L2Jvd2VyX2NvbXBvbmVudHMvZGlyZWN0b3IvTElDRU5TRS4KKyAgICAgICAgKiBTcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL25v
ZGVfbW9kdWxlcy9hbmd1bGFyLW1vY2tzL1JFQURNRS5tZDogQ29waWVkIGZyb20gUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9sYWJzL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9yZWFjdC9ib3dlcl9jb21wb25lbnRzL2RpcmVjdG9yL0xJQ0VOU0UuCisgICAgICAg
ICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2Fu
Z3VsYXJqcy9ub2RlX21vZHVsZXMvYW5ndWxhci1tb2Nrcy9hbmd1bGFyLW1vY2tzLmpzOiBBZGRl
ZC4KKyAgICAgICAgKHRoaXMpOgorICAgICAgICAoYW5ndWxhci5tb2NrLkJyb3dzZXJQcm92aWRl
cik6CisgICAgICAgIChzZWxmLm9uVXJsQ2hhbmdlKToKKyAgICAgICAgKHNlbGYuZGVmZXIpOgor
ICAgICAgICAoc2VsZi5kZWZlci5jYW5jZWwpOgorICAgICAgICAoc2VsZi5kZWZlci5mbHVzaCk6
CisgICAgICAgIChzZWxmLmJhc2VIcmVmKToKKyAgICAgICAgKGFuZ3VsYXIubW9jay5Ccm93c2Vy
KToKKyAgICAgICAgKGFuZ3VsYXIubW9jay5Ccm93c2VyLnByb3RvdHlwZS5wb2xsKToKKyAgICAg
ICAgKGFuZ3VsYXIubW9jay5Ccm93c2VyLnByb3RvdHlwZS51cmwpOgorICAgICAgICAoYW5ndWxh
ci5tb2NrLkJyb3dzZXIucHJvdG90eXBlLnN0YXRlKToKKyAgICAgICAgKGFuZ3VsYXIubW9jay5C
cm93c2VyLnByb3RvdHlwZS5ub3RpZnlXaGVuTm9PdXRzdGFuZGluZ1JlcXVlc3RzKToKKyAgICAg
ICAgKHN3aXRjaC5oYW5kbGVyKToKKyAgICAgICAgKHRoaXMubW9kZSk6CisgICAgICAgIChhbmd1
bGFyLm1vY2suRXhjZXB0aW9uSGFuZGxlclByb3ZpZGVyKToKKyAgICAgICAgKGNvbmNhdCk6Cisg
ICAgICAgICh0aGlzLmRlYnVnRW5hYmxlZCk6CisgICAgICAgIChsb2cubG9nKToKKyAgICAgICAg
KGxvZy53YXJuKToKKyAgICAgICAgKGxvZy5pbmZvKToKKyAgICAgICAgKGxvZy5lcnJvcik6Cisg
ICAgICAgIChsb2cuZGVidWcpOgorICAgICAgICAobG9nLnJlc2V0KToKKyAgICAgICAgKGxvZy5h
c3NlcnRFbXB0eSk6CisgICAgICAgIChhbmd1bGFyLm1vY2suTG9nUHJvdmlkZXIpOgorICAgICAg
ICAodGljayk6CisgICAgICAgIChpbnRlcnZhbCk6CisgICAgICAgIChpbnRlcnZhbC5jYW5jZWwp
OgorICAgICAgICAoaW50ZXJ2YWwuZmx1c2gpOgorICAgICAgICAoYW5ndWxhci5tb2NrLkludGVy
dmFsUHJvdmlkZXIpOgorICAgICAgICAoanNvblN0cmluZ1RvRGF0ZSk6CisgICAgICAgICh0b0lu
dCk6CisgICAgICAgIChwYWROdW1iZXJJbk1vY2spOgorICAgICAgICAoc2VsZi5nZXRUaW1lKToK
KyAgICAgICAgKHNlbGYudG9Mb2NhbGVEYXRlU3RyaW5nKToKKyAgICAgICAgKHNlbGYuZ2V0RnVs
bFllYXIpOgorICAgICAgICAoc2VsZi5nZXRNb250aCk6CisgICAgICAgIChzZWxmLmdldERhdGUp
OgorICAgICAgICAoc2VsZi5nZXRIb3Vycyk6CisgICAgICAgIChzZWxmLmdldE1pbnV0ZXMpOgor
ICAgICAgICAoc2VsZi5nZXRTZWNvbmRzKToKKyAgICAgICAgKHNlbGYuZ2V0TWlsbGlzZWNvbmRz
KToKKyAgICAgICAgKHNlbGYuZ2V0VGltZXpvbmVPZmZzZXQpOgorICAgICAgICAoc2VsZi5nZXRV
VENGdWxsWWVhcik6CisgICAgICAgIChzZWxmLmdldFVUQ01vbnRoKToKKyAgICAgICAgKHNlbGYu
Z2V0VVRDRGF0ZSk6CisgICAgICAgIChzZWxmLmdldFVUQ0hvdXJzKToKKyAgICAgICAgKHNlbGYu
Z2V0VVRDTWludXRlcyk6CisgICAgICAgIChzZWxmLmdldFVUQ1NlY29uZHMpOgorICAgICAgICAo
c2VsZi5nZXRVVENNaWxsaXNlY29uZHMpOgorICAgICAgICAoc2VsZi5nZXREYXkpOgorICAgICAg
ICAoc2VsZi50b0lTT1N0cmluZyk6CisgICAgICAgIChhbmd1bGFyLm1vY2suVHpEYXRlKToKKyAg
ICAgICAgKHJlZmxvd0ZuKToKKyAgICAgICAgKHF1ZXVlRm4pOgorICAgICAgICAocXVldWVGbi5m
bHVzaCk6CisgICAgICAgIChhbmltYXRlSnNDb25zdHJ1Y3Rvcik6CisgICAgICAgIChhbmltYXRl
SnNDb25zdHJ1Y3Rvci5jbG9zZUFuZEZsdXNoKToKKyAgICAgICAgKGFuaW1hdGVDc3NDb25zdHJ1
Y3Rvcik6CisgICAgICAgIChhbmltYXRlQ3NzQ29uc3RydWN0b3IuY2xvc2VBbmRGbHVzaCk6Cisg
ICAgICAgIChhbmltYXRlLmdldCByZWZsb3dzKToKKyAgICAgICAgKGFuaW1hdGUuY2xvc2VBbmRG
bHVzaCk6CisgICAgICAgIChhbmltYXRlLmZsdXNoKToKKyAgICAgICAgKGFuaW1hdGUubWV0aG9k
KToKKyAgICAgICAgKHNlcmlhbGl6ZSk6CisgICAgICAgIChzZXJpYWxpemVTY29wZSk6CisgICAg
ICAgIChhbmd1bGFyLm1vY2suZHVtcCk6CisgICAgICAgIChhbmd1bGFyLm1vY2suSHR0cEJhY2tl
bmRQcm92aWRlcik6CisgICAgICAgIChjcmVhdGVSZXNwb25zZSk6CisgICAgICAgIChwcmV0dHlQ
cmludCk6CisgICAgICAgICh3cmFwUmVzcG9uc2UuaGFuZGxlUmVzcG9uc2UpOgorICAgICAgICAo
d3JhcFJlc3BvbnNlLmhhbmRsZVRpbWVvdXQpOgorICAgICAgICAod3JhcFJlc3BvbnNlKToKKyAg
ICAgICAgKGh0dHBCYWNrZW5kKToKKyAgICAgICAgKGNoYWluLnJlc3BvbmQpOgorICAgICAgICAo
Y2hhaW4ucGFzc1Rocm91Z2gpOgorICAgICAgICAoaHR0cEJhY2tlbmQud2hlbik6CisgICAgICAg
IChodHRwQmFja2VuZC53aGVuUm91dGUpOgorICAgICAgICAocGFyc2VSb3V0ZSk6CisgICAgICAg
IChodHRwQmFja2VuZC5leHBlY3QpOgorICAgICAgICAoaHR0cEJhY2tlbmQuZXhwZWN0Um91dGUp
OgorICAgICAgICAoaHR0cEJhY2tlbmQuZmx1c2gpOgorICAgICAgICAoaHR0cEJhY2tlbmQudmVy
aWZ5Tm9PdXRzdGFuZGluZ0V4cGVjdGF0aW9uKToKKyAgICAgICAgKGh0dHBCYWNrZW5kLnZlcmlm
eU5vT3V0c3RhbmRpbmdSZXF1ZXN0KToKKyAgICAgICAgKGh0dHBCYWNrZW5kLnJlc2V0RXhwZWN0
YXRpb25zKToKKyAgICAgICAgKGNyZWF0ZVNob3J0TWV0aG9kcy4pOgorICAgICAgICAoY3JlYXRl
U2hvcnRNZXRob2RzKToKKyAgICAgICAgKGNyZWF0ZUh0dHBCYWNrZW5kTW9jayk6CisgICAgICAg
IChnZXRVcmxQYXJhbXMpOgorICAgICAgICAoY29tcGFyZVVybCk6CisgICAgICAgICh0aGlzLm1h
dGNoKToKKyAgICAgICAgKHRoaXMubWF0Y2hVcmwpOgorICAgICAgICAodGhpcy5tYXRjaEhlYWRl
cnMpOgorICAgICAgICAodGhpcy5tYXRjaERhdGEpOgorICAgICAgICAodGhpcy50b1N0cmluZyk6
CisgICAgICAgIChwYXRoUGFyYW1zKToKKyAgICAgICAgKHBhcnNlUXVlcnkpOgorICAgICAgICAo
dHJ5RGVjb2RlVVJJQ29tcG9uZW50KToKKyAgICAgICAgKHRoaXMucGFyYW1zKToKKyAgICAgICAg
KGNyZWF0ZU1vY2tYaHIpOgorICAgICAgICAoTW9ja1hoci50aGlzLm9wZW4pOgorICAgICAgICAo
TW9ja1hoci50aGlzLnNlbmQpOgorICAgICAgICAoTW9ja1hoci50aGlzLnNldFJlcXVlc3RIZWFk
ZXIpOgorICAgICAgICAoTW9ja1hoci50aGlzLmdldFJlc3BvbnNlSGVhZGVyKToKKyAgICAgICAg
KE1vY2tYaHIudGhpcy5nZXRBbGxSZXNwb25zZUhlYWRlcnMpOgorICAgICAgICAoTW9ja1hoci50
aGlzLmFkZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoTW9ja1hocik6CisgICAgICAgIChkZWxl
Z2F0ZS5mbHVzaCk6CisgICAgICAgIChkZWxlZ2F0ZS52ZXJpZnlOb1BlbmRpbmdUYXNrcyk6Cisg
ICAgICAgIChmb3JtYXRQZW5kaW5nVGFza3NBc1N0cmluZyk6CisgICAgICAgIChyYWZGbik6Cisg
ICAgICAgIChyYWZGbi5mbHVzaCk6CisgICAgICAgIChhbmd1bGFyLm1vY2suUm9vdEVsZW1lbnRQ
cm92aWRlcik6CisgICAgICAgIChyZXR1cm4pOgorICAgICAgICAoQ29tcG9uZW50Q29udHJvbGxl
clByb3ZpZGVyLnJldHVybi5jb21wb25lbnRDb250cm9sbGVyKToKKyAgICAgICAgKENvbXBvbmVu
dENvbnRyb2xsZXJQcm92aWRlcik6CisgICAgICAgIChjb3VudENoaWxkU2NvcGVzKToKKyAgICAg
ICAgKGNvdW50V2F0Y2hlcnMpOgorICAgICAgICAod2FzSW5qZWN0b3JDcmVhdGVkKToKKyAgICAg
ICAgKGFuZ3VsYXIuaW5qZWN0b3IuYW5ub3RhdGUpOgorICAgICAgICAod29ya0ZuLmVsc2UuKToK
KyAgICAgICAgKHdvcmtGbik6CisgICAgICAgIChtb2R1bGUud2luZG93Lm1vZHVsZS5hbmd1bGFy
Lm1vY2subW9kdWxlKToKKyAgICAgICAgKG1vZHVsZS5jdXJyZW50U3BlYyk6CisgICAgICAgICht
b2R1bGUuc2hhcmVkSW5qZWN0b3IpOgorICAgICAgICAobW9kdWxlLmJlZm9yZUVhY2gpOgorICAg
ICAgICAobW9kdWxlLmFmdGVyRWFjaCk6CisgICAgICAgIChtb2R1bGUuY2xlYW51cCk6CisgICAg
ICAgIChFcnJvckFkZGluZ0RlY2xhcmF0aW9uTG9jYXRpb25TdGFjayk6CisgICAgICAgIChXb3Jr
Rm4pOgorICAgICAgICAod2luZG93LmluamVjdC5hbmd1bGFyLm1vY2suaW5qZWN0KToKKyAgICAg
ICAgKGFuZ3VsYXIubW9jay5pbmplY3Quc3RyaWN0RGkpOgorICAgICAgICAoSW5qZWN0b3JTdGF0
ZS50aGlzLmNsZWFudXBBZnRlckVhY2gpOgorICAgICAgICAoSW5qZWN0b3JTdGF0ZSk6CisgICAg
ICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2FuZ3VsYXJqcy9ub2RlX21vZHVsZXMvYW5ndWxhci1tb2Nrcy9ib3dlci5qc29uOiBBZGRlZC4K
KyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvYW5ndWxhcmpzL25vZGVfbW9kdWxlcy9hbmd1bGFyLW1vY2tzL25nQW5pbWF0ZU1vY2su
anM6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvbm9kZV9tb2R1bGVzL2FuZ3VsYXItbW9ja3MvbmdN
b2NrLmpzOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL25vZGVfbW9kdWxlcy9hbmd1bGFyLW1vY2tz
L25nTW9ja0UyRS5qczogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ub2RlX21vZHVsZXMvYW5ndWxh
ci1tb2Nrcy9wYWNrYWdlLmpzb246IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvbm9kZV9tb2R1bGVz
L2FuZ3VsYXItcmVzb3VyY2UvTElDRU5TRS5tZDogQ29waWVkIGZyb20gUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9sYWJzL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9yZWFjdC9ib3dlcl9jb21wb25lbnRzL2RpcmVjdG9yL0xJQ0VOU0UuCisgICAgICAgICogU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJq
cy9ub2RlX21vZHVsZXMvYW5ndWxhci1yZXNvdXJjZS9SRUFETUUubWQ6IEFkZGVkLgorICAgICAg
ICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9h
bmd1bGFyanMvbm9kZV9tb2R1bGVzL2FuZ3VsYXItcmVzb3VyY2UvYW5ndWxhci1yZXNvdXJjZS5q
czogQWRkZWQuCisgICAgICAgIChpc1ZhbGlkRG90dGVkUGF0aCk6CisgICAgICAgIChzaGFsbG93
Q2xlYXJBbmRDb3B5KToKKyAgICAgICAgKFJlc291cmNlUHJvdmlkZXIuZW5jb2RlVXJpU2VnbWVu
dCk6CisgICAgICAgIChSZXNvdXJjZVByb3ZpZGVyLmVuY29kZVVyaVF1ZXJ5KToKKyAgICAgICAg
KFJlc291cmNlUHJvdmlkZXIuKToKKyAgICAgICAgKFJlc291cmNlUHJvdmlkZXIuUm91dGUucHJv
dG90eXBlLik6CisgICAgICAgIChSZXNvdXJjZVByb3ZpZGVyLlJvdXRlLnByb3RvdHlwZS5zZXRV
cmxQYXJhbXMpOgorICAgICAgICAoUmVzb3VyY2VQcm92aWRlci5leHRyYWN0UGFyYW1zKToKKyAg
ICAgICAgKFJlc291cmNlUHJvdmlkZXIuZGVmYXVsdFJlc3BvbnNlSW50ZXJjZXB0b3IpOgorICAg
ICAgICAoUmVzb3VyY2VQcm92aWRlci5SZXNvdXJjZSk6CisgICAgICAgIChSZXNvdXJjZVByb3Zp
ZGVyLlJlc291cmNlLnByb3RvdHlwZS50b0pTT04pOgorICAgICAgICAoUmVzb3VyY2VQcm92aWRl
ci5SZXNvdXJjZS5iaW5kKToKKyAgICAgICAgKFJlc291cmNlUHJvdmlkZXIpOgorICAgICAgICAq
IFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1
bGFyanMvbm9kZV9tb2R1bGVzL2FuZ3VsYXItcmVzb3VyY2UvYW5ndWxhci1yZXNvdXJjZS5taW4u
anM6IEFkZGVkLgorICAgICAgICAoRyk6CisgICAgICAgIChBKToKKyAgICAgICAgKGIpOgorICAg
ICAgICAoTik6CisgICAgICAgIChtKToKKyAgICAgICAgKG0ucHJvdG90eXBlLnRvSlNPTik6Cisg
ICAgICAgIChtLmJpbmQpOgorICAgICAgICAoQi5wcm90b3R5cGUuKToKKyAgICAgICAgKEIucHJv
dG90eXBlLnNldFVybFBhcmFtcyk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ub2RlX21vZHVsZXMvYW5ndWxh
ci1yZXNvdXJjZS9hbmd1bGFyLXJlc291cmNlLm1pbi5qcy5tYXA6IEFkZGVkLgorICAgICAgICAq
IFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1
bGFyanMvbm9kZV9tb2R1bGVzL2FuZ3VsYXItcmVzb3VyY2UvYm93ZXIuanNvbjogQWRkZWQuCisg
ICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2FuZ3VsYXJqcy9ub2RlX21vZHVsZXMvYW5ndWxhci1yZXNvdXJjZS9pbmRleC5qczogQWRk
ZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2FuZ3VsYXJqcy9ub2RlX21vZHVsZXMvYW5ndWxhci1yZXNvdXJjZS9wYWNrYWdl
Lmpzb246IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvbm9kZV9tb2R1bGVzL2FuZ3VsYXItcm91dGUv
TElDRU5TRS5tZDogQ29waWVkIGZyb20gUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9sYWJzL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ib3dlcl9jb21w
b25lbnRzL2RpcmVjdG9yL0xJQ0VOU0UuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ub2RlX21vZHVsZXMvYW5n
dWxhci1yb3V0ZS9SRUFETUUubWQ6IENvcGllZCBmcm9tIFBlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvbGFicy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qv
Ym93ZXJfY29tcG9uZW50cy9kaXJlY3Rvci9MSUNFTlNFLgorICAgICAgICAqIFNwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvbm9kZV9t
b2R1bGVzL2FuZ3VsYXItcm91dGUvYW5ndWxhci1yb3V0ZS5qczogQWRkZWQuCisgICAgICAgIChz
aGFsbG93Q29weSk6CisgICAgICAgIChSb3V0ZVByb3ZpZGVyLmluaGVyaXQpOgorICAgICAgICAo
Um91dGVQcm92aWRlci50aGlzLndoZW4pOgorICAgICAgICAoUm91dGVQcm92aWRlci4pOgorICAg
ICAgICAoUm91dGVQcm92aWRlci5wYXRoUmVnRXhwKToKKyAgICAgICAgKFJvdXRlUHJvdmlkZXIu
dGhpcy5vdGhlcndpc2UpOgorICAgICAgICAoUm91dGVQcm92aWRlci5yb3V0ZS5mYWtlTG9jYXRp
b25FdmVudC5wcmV2ZW50RGVmYXVsdCk6CisgICAgICAgIChSb3V0ZVByb3ZpZGVyLnJvdXRlLnJl
bG9hZCk6CisgICAgICAgIChSb3V0ZVByb3ZpZGVyLnJvdXRlLnVwZGF0ZVBhcmFtcyk6CisgICAg
ICAgIChSb3V0ZVByb3ZpZGVyLnN3aXRjaFJvdXRlTWF0Y2hlcik6CisgICAgICAgIChSb3V0ZVBy
b3ZpZGVyLnByZXBhcmVSb3V0ZSk6CisgICAgICAgIChSb3V0ZVByb3ZpZGVyLmNvbW1pdFJvdXRl
LmVsc2UpOgorICAgICAgICAoUm91dGVQcm92aWRlci5jb21taXRSb3V0ZSk6CisgICAgICAgIChS
b3V0ZVByb3ZpZGVyLmdldFRlbXBsYXRlRm9yKToKKyAgICAgICAgKFJvdXRlUHJvdmlkZXIucGFy
c2VSb3V0ZSk6CisgICAgICAgIChSb3V0ZVByb3ZpZGVyKToKKyAgICAgICAgKFJvdXRlUGFyYW1z
UHJvdmlkZXIudGhpcyk6CisgICAgICAgIChSb3V0ZVBhcmFtc1Byb3ZpZGVyKToKKyAgICAgICAg
KHJldHVybi5jbGVhbnVwTGFzdFZpZXcpOgorICAgICAgICAocmV0dXJuLnVwZGF0ZSk6CisgICAg
ICAgIChyZXR1cm4ubGluayk6CisgICAgICAgIChuZ1ZpZXdGYWN0b3J5KToKKyAgICAgICAgKG5n
Vmlld0ZpbGxDb250ZW50RmFjdG9yeSk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ub2RlX21vZHVsZXMvYW5n
dWxhci1yb3V0ZS9hbmd1bGFyLXJvdXRlLm1pbi5qczogQWRkZWQuCisgICAgICAgIChyZXR1cm4u
cCk6CisgICAgICAgIChyZXR1cm4uKToKKyAgICAgICAgKHJldHVybi5saW5rKToKKyAgICAgICAg
KHkpOgorICAgICAgICAodyk6CisgICAgICAgICh0KToKKyAgICAgICAgKGwpOgorICAgICAgICAo
dGhpcy53aGVuKToKKyAgICAgICAgKHRoaXMub3RoZXJ3aXNlKToKKyAgICAgICAgKGgpOgorICAg
ICAgICAobik6CisgICAgICAgIChzKToKKyAgICAgICAgKHYuYS5wcmV2ZW50RGVmYXVsdCk6Cisg
ICAgICAgICh2LnJlbG9hZCk6CisgICAgICAgICh2LnVwZGF0ZVBhcmFtcyk6CisgICAgICAgICh0
aGlzKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvYW5ndWxhcmpzL25vZGVfbW9kdWxlcy9hbmd1bGFyLXJvdXRlL2FuZ3VsYXIt
cm91dGUubWluLmpzLm1hcDogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ub2RlX21vZHVsZXMvYW5n
dWxhci1yb3V0ZS9ib3dlci5qc29uOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL25vZGVfbW9kdWxl
cy9hbmd1bGFyLXJvdXRlL2luZGV4LmpzOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL25vZGVfbW9k
dWxlcy9hbmd1bGFyLXJvdXRlL3BhY2thZ2UuanNvbjogQWRkZWQuCisgICAgICAgICogU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9u
b2RlX21vZHVsZXMvYW5ndWxhci9SRUFETUUubWQ6IENvcGllZCBmcm9tIFBlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvbGFicy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvcmVhY3QvYm93ZXJfY29tcG9uZW50cy9kaXJlY3Rvci9MSUNFTlNFLgorICAgICAgICAqIFNw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFy
anMvbm9kZV9tb2R1bGVzL2FuZ3VsYXIvYW5ndWxhci1jc3AuY3NzOiBBZGRlZC4KKyAgICAgICAg
KEBjaGFyc2V0ICJVVEYtOCI7KToKKyAgICAgICAgKG5nXDpmb3JtKToKKyAgICAgICAgKC5uZy1h
bmltYXRlLXNoaW0pOgorICAgICAgICAoLm5nLWFuY2hvcik6CisgICAgICAgICogU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ub2Rl
X21vZHVsZXMvYW5ndWxhci9hbmd1bGFyLmpzOiBBZGRlZC4KKyAgICAgICAgKG1pbkVycik6Cisg
ICAgICAgIChsb3dlcmNhc2UpOgorICAgICAgICAodXBwZXJjYXNlKToKKyAgICAgICAgKG1hbnVh
bExvd2VyY2FzZSk6CisgICAgICAgIChtYW51YWxVcHBlcmNhc2UpOgorICAgICAgICAoc3RyaW5n
X2FwcGVhcmVkX2hlcmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUudG9Mb3dlckNhc2UpOgorICAgICAg
ICAoaXNBcnJheUxpa2UpOgorICAgICAgICAoZm9yRWFjaCk6CisgICAgICAgIChmb3JFYWNoU29y
dGVkKToKKyAgICAgICAgKHJldmVyc2VQYXJhbXMpOgorICAgICAgICAobmV4dFVpZCk6CisgICAg
ICAgIChzZXRIYXNoS2V5KToKKyAgICAgICAgKGJhc2VFeHRlbmQpOgorICAgICAgICAoZXh0ZW5k
KToKKyAgICAgICAgKG1lcmdlKToKKyAgICAgICAgKHRvSW50KToKKyAgICAgICAgKGluaGVyaXQp
OgorICAgICAgICAobm9vcCk6CisgICAgICAgIChoYXNDdXN0b21Ub1N0cmluZyk6CisgICAgICAg
IChpc1VuZGVmaW5lZCk6CisgICAgICAgIChpc0RlZmluZWQpOgorICAgICAgICAoaXNPYmplY3Qp
OgorICAgICAgICAoaXNCbGFua09iamVjdCk6CisgICAgICAgIChpc1N0cmluZyk6CisgICAgICAg
IChpc051bWJlcik6CisgICAgICAgIChpc0RhdGUpOgorICAgICAgICAoaXNGdW5jdGlvbik6Cisg
ICAgICAgIChpc1JlZ0V4cCk6CisgICAgICAgIChpc1dpbmRvdyk6CisgICAgICAgIChpc1Njb3Bl
KToKKyAgICAgICAgKGlzRmlsZSk6CisgICAgICAgIChpc0Zvcm1EYXRhKToKKyAgICAgICAgKGlz
QmxvYik6CisgICAgICAgIChpc0Jvb2xlYW4pOgorICAgICAgICAoaXNQcm9taXNlTGlrZSk6Cisg
ICAgICAgIChpc1R5cGVkQXJyYXkpOgorICAgICAgICAodHJpbSk6CisgICAgICAgIChlc2NhcGVG
b3JSZWdleHApOgorICAgICAgICAoaXNFbGVtZW50KToKKyAgICAgICAgKG1ha2VNYXApOgorICAg
ICAgICAobm9kZU5hbWVfKToKKyAgICAgICAgKGluY2x1ZGVzKToKKyAgICAgICAgKGFycmF5UmVt
b3ZlKToKKyAgICAgICAgKGNvcHkpOgorICAgICAgICAoc2hhbGxvd0NvcHkpOgorICAgICAgICAo
ZXF1YWxzKToKKyAgICAgICAgKGNzcCk6CisgICAgICAgIChqcSk6CisgICAgICAgIChzbGljZUFy
Z3MpOgorICAgICAgICAoYmluZCk6CisgICAgICAgICh0b0pzb25SZXBsYWNlcik6CisgICAgICAg
ICh0b0pzb24pOgorICAgICAgICAoZnJvbUpzb24pOgorICAgICAgICAodGltZXpvbmVUb09mZnNl
dCk6CisgICAgICAgIChhZGREYXRlTWludXRlcyk6CisgICAgICAgIChjb252ZXJ0VGltZXpvbmVU
b0xvY2FsKToKKyAgICAgICAgKHN0YXJ0aW5nVGFnKToKKyAgICAgICAgKHRyeURlY29kZVVSSUNv
bXBvbmVudCk6CisgICAgICAgIChwYXJzZUtleVZhbHVlKToKKyAgICAgICAgKHRvS2V5VmFsdWUp
OgorICAgICAgICAoZW5jb2RlVXJpU2VnbWVudCk6CisgICAgICAgIChlbmNvZGVVcmlRdWVyeSk6
CisgICAgICAgIChnZXROZ0F0dHJpYnV0ZSk6CisgICAgICAgIChhbmd1bGFySW5pdCk6CisgICAg
ICAgIChkb0Jvb3RzdHJhcCk6CisgICAgICAgIChhbmd1bGFyLnJlc3VtZUJvb3RzdHJhcCk6Cisg
ICAgICAgIChyZWxvYWRXaXRoRGVidWdJbmZvKToKKyAgICAgICAgKGdldFRlc3RhYmlsaXR5KToK
KyAgICAgICAgKHNuYWtlX2Nhc2UpOgorICAgICAgICAoYmluZEpRdWVyeS5qUXVlcnkuY2xlYW5E
YXRhKToKKyAgICAgICAgKGJpbmRKUXVlcnkpOgorICAgICAgICAoYXNzZXJ0QXJnKToKKyAgICAg
ICAgKGFzc2VydEFyZ0ZuKToKKyAgICAgICAgKGFzc2VydE5vdEhhc093blByb3BlcnR5KToKKyAg
ICAgICAgKGdldHRlcik6CisgICAgICAgIChnZXRCbG9ja05vZGVzKToKKyAgICAgICAgKGNyZWF0
ZU1hcCk6CisgICAgICAgIChzZXR1cE1vZHVsZUxvYWRlci5lbnN1cmUpOgorICAgICAgICAoc2V0
dXBNb2R1bGVMb2FkZXIuKToKKyAgICAgICAgKHNldHVwTW9kdWxlTG9hZGVyKToKKyAgICAgICAg
KHRvRGVidWdTdHJpbmcucHVibGlzaEV4dGVybmFsQVBJKToKKyAgICAgICAgKHRvRGVidWdTdHJp
bmcuYWRkRXZlbnRMaXN0ZW5lckZuKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcucmVtb3ZlRXZl
bnRMaXN0ZW5lckZuKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuSlFMaXRlLl9kYXRhKToKKyAg
ICAgICAgKHRvRGVidWdTdHJpbmcuanFOZXh0SWQpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5j
YW1lbENhc2UpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5qcUxpdGVJc1RleHROb2RlKToKKyAg
ICAgICAgKHRvRGVidWdTdHJpbmcuanFMaXRlQWNjZXB0c0RhdGEpOgorICAgICAgICAodG9EZWJ1
Z1N0cmluZy5qcUxpdGVIYXNEYXRhKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuanFMaXRlQnVp
bGRGcmFnbWVudCk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLmpxTGl0ZVBhcnNlSFRNTCk6Cisg
ICAgICAgICh0b0RlYnVnU3RyaW5nLkpRTGl0ZSk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLmpx
TGl0ZUNsb25lKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuanFMaXRlRGVhbG9jKToKKyAgICAg
ICAgKHRvRGVidWdTdHJpbmcuanFMaXRlT2ZmKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcpOgor
ICAgICAgICAodG9EZWJ1Z1N0cmluZy5qcUxpdGVFeHBhbmRvU3RvcmUpOgorICAgICAgICAodG9E
ZWJ1Z1N0cmluZy5qcUxpdGVEYXRhKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuanFMaXRlSGFz
Q2xhc3MpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5qcUxpdGVSZW1vdmVDbGFzcyk6CisgICAg
ICAgICh0b0RlYnVnU3RyaW5nLmpxTGl0ZUFkZENsYXNzKToKKyAgICAgICAgKHRvRGVidWdTdHJp
bmcuanFMaXRlQWRkTm9kZXMpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5qcUxpdGVDb250cm9s
bGVyKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuanFMaXRlSW5oZXJpdGVkRGF0YSk6CisgICAg
ICAgICh0b0RlYnVnU3RyaW5nLmpxTGl0ZVJlbW92ZSk6CisgICAgICAgICh0b0RlYnVnU3RyaW5n
LmpxTGl0ZURvY3VtZW50TG9hZGVkKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuSlFMaXRlUHJv
dG90eXBlLkpRTGl0ZS5wcm90b3R5cGUudHJpZ2dlcik6CisgICAgICAgICh0b0RlYnVnU3RyaW5n
LkpRTGl0ZVByb3RvdHlwZS5KUUxpdGUucHJvdG90eXBlLnJlYWR5KToKKyAgICAgICAgKHRvRGVi
dWdTdHJpbmcuSlFMaXRlUHJvdG90eXBlLkpRTGl0ZS5wcm90b3R5cGUudG9TdHJpbmcpOgorICAg
ICAgICAodG9EZWJ1Z1N0cmluZy5KUUxpdGVQcm90b3R5cGUuSlFMaXRlLnByb3RvdHlwZS5lcSk6
CisgICAgICAgICh0b0RlYnVnU3RyaW5nLmdldEJvb2xlYW5BdHRyTmFtZSk6CisgICAgICAgICh0
b0RlYnVnU3RyaW5nLmdldEFsaWFzZWRBdHRyTmFtZSk6CisgICAgICAgICh0b0RlYnVnU3RyaW5n
LmZvckVhY2gpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5mb3JFYWNoLik6CisgICAgICAgICh0
b0RlYnVnU3RyaW5nLik6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLmV2ZW50LmlzRGVmYXVsdFBy
ZXZlbnRlZCk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLmV2ZW50LnN0b3BJbW1lZGlhdGVQcm9w
YWdhdGlvbik6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLmV2ZW50LmlzSW1tZWRpYXRlUHJvcGFn
YXRpb25TdG9wcGVkKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuZXZlbnRIYW5kbGVyKToKKyAg
ICAgICAgKHRvRGVidWdTdHJpbmcuanFMaXRlUHJvdmlkZXIudGhpcy5qcUxpdGUuKToKKyAgICAg
ICAgKHRvRGVidWdTdHJpbmcuanFMaXRlUHJvdmlkZXIudGhpcyk6CisgICAgICAgICh0b0RlYnVn
U3RyaW5nLnRoaXMubmV4dFVpZCk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLkhhc2hNYXApOgor
ICAgICAgICAodG9EZWJ1Z1N0cmluZy5IYXNoTWFwLnByb3RvdHlwZS5wdXQpOgorICAgICAgICAo
dG9EZWJ1Z1N0cmluZy5IYXNoTWFwLnByb3RvdHlwZS5yZW1vdmUpOgorICAgICAgICAodG9EZWJ1
Z1N0cmluZy50aGlzKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuSGFzaE1hcFByb3ZpZGVyKToK
KyAgICAgICAgKHRvRGVidWdTdHJpbmcuYW5vbkZuKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcu
YW5ub3RhdGUpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5zdXBwb3J0T2JqZWN0KToKKyAgICAg
ICAgKHRvRGVidWdTdHJpbmcucHJvdmlkZXIpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5yZXR1
cm4uZW5mb3JjZWRSZXR1cm5WYWx1ZSk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLmVuZm9yY2VS
ZXR1cm5WYWx1ZSk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLmZhY3RvcnkpOgorICAgICAgICAo
dG9EZWJ1Z1N0cmluZy5nZXQgc2VydmljZSk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLnZhbHVl
KToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuY29uc3RhbnQpOgorICAgICAgICAodG9EZWJ1Z1N0
cmluZy5nZXQgcmV0dXJuKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcub3JpZ1Byb3ZpZGVyKToK
KyAgICAgICAgKHRvRGVidWdTdHJpbmcuZ2V0U2VydmljZSk6CisgICAgICAgICh0b0RlYnVnU3Ry
aW5nLmludm9rZSk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLmluc3RhbnRpYXRlKToKKyAgICAg
ICAgKHRvRGVidWdTdHJpbmcucmV0dXJuLmhhcyk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLkFu
Y2hvclNjcm9sbFByb3ZpZGVyLnRoaXMuZGlzYWJsZUF1dG9TY3JvbGxpbmcpOgorICAgICAgICAo
dG9EZWJ1Z1N0cmluZy5BbmNob3JTY3JvbGxQcm92aWRlci5nZXRGaXJzdEFuY2hvcik6CisgICAg
ICAgICh0b0RlYnVnU3RyaW5nLkFuY2hvclNjcm9sbFByb3ZpZGVyLmdldFlPZmZzZXQpOgorICAg
ICAgICAodG9EZWJ1Z1N0cmluZy5BbmNob3JTY3JvbGxQcm92aWRlci5zY3JvbGxUbyk6CisgICAg
ICAgICh0b0RlYnVnU3RyaW5nLkFuY2hvclNjcm9sbFByb3ZpZGVyLnNjcm9sbCk6CisgICAgICAg
ICh0b0RlYnVnU3RyaW5nLkFuY2hvclNjcm9sbFByb3ZpZGVyLik6CisgICAgICAgICh0b0RlYnVn
U3RyaW5nLkFuY2hvclNjcm9sbFByb3ZpZGVyKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcubWVy
Z2VDbGFzc2VzKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuZXh0cmFjdEVsZW1lbnROb2RlKToK
KyAgICAgICAgKHRvRGVidWdTdHJpbmcuc3BsaXRDbGFzc2VzKToKKyAgICAgICAgKHRvRGVidWdT
dHJpbmcucHJlcGFyZUFuaW1hdGVPcHRpb25zKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuQW5p
bWF0ZVJ1bm5lcik6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLkFuaW1hdGVSdW5uZXIucHJvdG90
eXBlLnRoZW4pOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5Db3JlQW5pbWF0ZVJ1bm5lclByb3Zp
ZGVyKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcucmV0dXJuLnB1c2gpOgorICAgICAgICAodG9E
ZWJ1Z1N0cmluZy5hZGRSZW1vdmVDbGFzc2VzUG9zdERpZ2VzdCk6CisgICAgICAgICh0b0RlYnVn
U3RyaW5nLkNvcmVBbmltYXRlUXVldWVQcm92aWRlcik6CisgICAgICAgICh0b0RlYnVnU3RyaW5n
LnRoaXMucmVnaXN0ZXIpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy50aGlzLmNsYXNzTmFtZUZp
bHRlcik6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLmRvbUluc2VydCk6CisgICAgICAgICh0b0Rl
YnVnU3RyaW5nLnJldHVybi5jYW5jZWwpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5yZXR1cm4u
ZW50ZXIpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5yZXR1cm4ubW92ZSk6CisgICAgICAgICh0
b0RlYnVnU3RyaW5nLnJldHVybi5sZWF2ZSk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLnJldHVy
bi5hZGRDbGFzcyk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLnJldHVybi5yZW1vdmVDbGFzcyk6
CisgICAgICAgICh0b0RlYnVnU3RyaW5nLnJldHVybi5zZXRDbGFzcyk6CisgICAgICAgICh0b0Rl
YnVnU3RyaW5nLnJldHVybi5hbmltYXRlKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuQXN5bmND
YWxsYmFja1Byb3ZpZGVyLik6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLkFzeW5jQ2FsbGJhY2tQ
cm92aWRlcik6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLnNlbGYuaW5jT3V0c3RhbmRpbmdSZXF1
ZXN0Q291bnQpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5jb21wbGV0ZU91dHN0YW5kaW5nUmVx
dWVzdCk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLmdldEhhc2gpOgorICAgICAgICAodG9EZWJ1
Z1N0cmluZy5zZWxmLm5vdGlmeVdoZW5Ob091dHN0YW5kaW5nUmVxdWVzdHMpOgorICAgICAgICAo
dG9EZWJ1Z1N0cmluZy5zZWxmLnVybCk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLnNlbGYuc3Rh
dGUpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5jYWNoZVN0YXRlQW5kRmlyZVVybENoYW5nZSk6
CisgICAgICAgICh0b0RlYnVnU3RyaW5nLmdldEN1cnJlbnRTdGF0ZSk6CisgICAgICAgICh0b0Rl
YnVnU3RyaW5nLmNhY2hlU3RhdGUpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5maXJlVXJsQ2hh
bmdlKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuc2VsZi5vblVybENoYW5nZSk6CisgICAgICAg
ICh0b0RlYnVnU3RyaW5nLnNlbGYuYXBwbGljYXRpb25EZXN0cm95ZWQpOgorICAgICAgICAodG9E
ZWJ1Z1N0cmluZy5zZWxmLmJhc2VIcmVmKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuc2VsZi5k
ZWZlcik6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLnNlbGYuZGVmZXIuY2FuY2VsKToKKyAgICAg
ICAgKHRvRGVidWdTdHJpbmcuQnJvd3Nlcik6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLkJyb3dz
ZXJQcm92aWRlcik6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLkNhY2hlRmFjdG9yeVByb3ZpZGVy
LnJldHVybi5jYWNoZXMuY2FjaGVJZC5wdXQpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5DYWNo
ZUZhY3RvcnlQcm92aWRlci5yZXR1cm4uY2FjaGVzLmNhY2hlSWQuZ2V0IGlmKToKKyAgICAgICAg
KHRvRGVidWdTdHJpbmcuQ2FjaGVGYWN0b3J5UHJvdmlkZXIucmV0dXJuLmNhY2hlcy5jYWNoZUlk
KToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuQ2FjaGVGYWN0b3J5UHJvdmlkZXIucmV0dXJuLmNh
Y2hlcy5jYWNoZUlkLnJlbW92ZSk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLkNhY2hlRmFjdG9y
eVByb3ZpZGVyLnJldHVybi5jYWNoZXMuY2FjaGVJZC5yZW1vdmVBbGwpOgorICAgICAgICAodG9E
ZWJ1Z1N0cmluZy5DYWNoZUZhY3RvcnlQcm92aWRlci5yZXR1cm4uY2FjaGVzLmNhY2hlSWQuZGVz
dHJveSk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLkNhY2hlRmFjdG9yeVByb3ZpZGVyLnJldHVy
bi5jYWNoZXMuY2FjaGVJZC5pbmZvKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuQ2FjaGVGYWN0
b3J5UHJvdmlkZXIuKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuQ2FjaGVGYWN0b3J5UHJvdmlk
ZXIubGluayk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLkNhY2hlRmFjdG9yeVByb3ZpZGVyLmNh
Y2hlRmFjdG9yeS5pbmZvKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuQ2FjaGVGYWN0b3J5UHJv
dmlkZXIuY2FjaGVGYWN0b3J5KToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuQ2FjaGVGYWN0b3J5
UHJvdmlkZXIudGhpcyk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLkNhY2hlRmFjdG9yeVByb3Zp
ZGVyKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuVGVtcGxhdGVDYWNoZVByb3ZpZGVyKToKKyAg
ICAgICAgKHRvRGVidWdTdHJpbmcucGFyc2VEaXJlY3RpdmVCaW5kaW5ncyk6CisgICAgICAgICh0
b0RlYnVnU3RyaW5nLmFzc2VydFZhbGlkRGlyZWN0aXZlTmFtZSk6CisgICAgICAgICh0b0RlYnVn
U3RyaW5nLnRoaXMuZGlyZWN0aXZlKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcudGhpcy5hSHJl
ZlNhbml0aXphdGlvbldoaXRlbGlzdCk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLnRoaXMuaW1n
U3JjU2FuaXRpemF0aW9uV2hpdGVsaXN0KToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcudGhpcy5k
ZWJ1Z0luZm9FbmFibGVkKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuQXR0cmlidXRlcyk6Cisg
ICAgICAgICh0b0RlYnVnU3RyaW5nLkF0dHJpYnV0ZXMucHJvdG90eXBlLmFkZENsYXNzKToKKyAg
ICAgICAgKHRvRGVidWdTdHJpbmcuQXR0cmlidXRlcy5wcm90b3R5cGUucmVtb3ZlQ2xhc3MpOgor
ICAgICAgICAodG9EZWJ1Z1N0cmluZy5BdHRyaWJ1dGVzLnByb3RvdHlwZS51cGRhdGVDbGFzcyk6
CisgICAgICAgICh0b0RlYnVnU3RyaW5nLkF0dHJpYnV0ZXMucHJvdG90eXBlLnNldCB2YXIpOgor
ICAgICAgICAodG9EZWJ1Z1N0cmluZy5BdHRyaWJ1dGVzLnByb3RvdHlwZSk6CisgICAgICAgICh0
b0RlYnVnU3RyaW5nLkF0dHJpYnV0ZXMucHJvdG90eXBlLm9ic2VydmUpOgorICAgICAgICAodG9E
ZWJ1Z1N0cmluZy5zYWZlQWRkQ2xhc3MpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5kZW5vcm1h
bGl6ZVRlbXBsYXRlLmlkZW50aXR5KToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuY29tcGlsZS5h
ZGRCaW5kaW5nSW5mby5kZWJ1Z0luZm9FbmFibGVkLmFkZEJpbmRpbmdJbmZvKToKKyAgICAgICAg
KHRvRGVidWdTdHJpbmcuY29tcGlsZS5hZGRCaW5kaW5nQ2xhc3MuZGVidWdJbmZvRW5hYmxlZC5h
ZGRCaW5kaW5nQ2xhc3MpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5jb21waWxlLmFkZFNjb3Bl
SW5mby5kZWJ1Z0luZm9FbmFibGVkLmFkZFNjb3BlSW5mbyk6CisgICAgICAgICh0b0RlYnVnU3Ry
aW5nLmNvbXBpbGUuYWRkU2NvcGVDbGFzcy5kZWJ1Z0luZm9FbmFibGVkLmFkZFNjb3BlQ2xhc3Mp
OgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5yZXR1cm4ucHVibGljTGlua0ZuKToKKyAgICAgICAg
KHRvRGVidWdTdHJpbmcuY29tcGlsZSk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLmRldGVjdE5h
bWVzcGFjZUZvckNoaWxkRWxlbWVudHMpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5jb21wb3Np
dGVMaW5rRm4pOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5jb21waWxlTm9kZXMpOgorICAgICAg
ICAodG9EZWJ1Z1N0cmluZy5ib3VuZFRyYW5zY2x1ZGVGbik6CisgICAgICAgICh0b0RlYnVnU3Ry
aW5nLmNyZWF0ZUJvdW5kVHJhbnNjbHVkZUZuKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuY29s
bGVjdERpcmVjdGl2ZXMpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5ncm91cFNjYW4pOgorICAg
ICAgICAodG9EZWJ1Z1N0cmluZy5ncm91cEVsZW1lbnRzTGlua0ZuV3JhcHBlcik6CisgICAgICAg
ICh0b0RlYnVnU3RyaW5nLmFkZExpbmtGbnMpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5nZXRD
b250cm9sbGVycyk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLnNldHVwQ29udHJvbGxlcnMpOgor
ICAgICAgICAodG9EZWJ1Z1N0cmluZy5ub2RlTGlua0ZuKToKKyAgICAgICAgKHRvRGVidWdTdHJp
bmcuYXBwbHlEaXJlY3RpdmVzVG9Ob2RlKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcubWFya0Rp
cmVjdGl2ZXNBc0lzb2xhdGUpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5kaXJlY3RpdmVJc011
bHRpRWxlbWVudCk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLm1lcmdlVGVtcGxhdGVBdHRyaWJ1
dGVzKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcucmV0dXJuLmRlbGF5ZWROb2RlTGlua0ZuKToK
KyAgICAgICAgKHRvRGVidWdTdHJpbmcuYnlQcmlvcml0eSk6CisgICAgICAgICh0b0RlYnVnU3Ry
aW5nLndyYXBNb2R1bGVOYW1lSWZEZWZpbmVkKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuYXNz
ZXJ0Tm9EdXBsaWNhdGUpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5kaXJlY3RpdmVzLnB1c2gu
KToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuZGlyZWN0aXZlcy5wdXNoKToKKyAgICAgICAgKHRv
RGVidWdTdHJpbmcuYWRkVGV4dEludGVycG9sYXRlRGlyZWN0aXZlKToKKyAgICAgICAgKHRvRGVi
dWdTdHJpbmcuZ2V0VHJ1c3RlZENvbnRleHQpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5hZGRB
dHRySW50ZXJwb2xhdGVEaXJlY3RpdmUpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5jbG9uZUFu
ZEFubm90YXRlRm4pOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5pbnZva2VMaW5rRm4pOgorICAg
ICAgICAodG9EZWJ1Z1N0cmluZy5kZXN0cm95QmluZGluZ3Mub25OZXdTY29wZURlc3Ryb3llZC5k
ZXN0cm95QmluZGluZ3MpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5pbml0aWFsaXplRGlyZWN0
aXZlQmluZGluZ3MpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5Db21waWxlUHJvdmlkZXIpOgor
ICAgICAgICAodG9EZWJ1Z1N0cmluZy5kaXJlY3RpdmVOb3JtYWxpemUpOgorICAgICAgICAodG9E
ZWJ1Z1N0cmluZy5ub2Rlc2V0TGlua2luZ0ZuKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuZGly
ZWN0aXZlTGlua2luZ0ZuKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcudG9rZW5EaWZmZXJlbmNl
KToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcucmVtb3ZlQ29tbWVudHMpOgorICAgICAgICAodG9E
ZWJ1Z1N0cmluZy5Db250cm9sbGVyUHJvdmlkZXIudGhpcy5yZWdpc3Rlcik6CisgICAgICAgICh0
b0RlYnVnU3RyaW5nLkNvbnRyb2xsZXJQcm92aWRlci50aGlzLmFsbG93R2xvYmFscyk6CisgICAg
ICAgICh0b0RlYnVnU3RyaW5nLkNvbnRyb2xsZXJQcm92aWRlci5hZGRJZGVudGlmaWVyKToKKyAg
ICAgICAgKHRvRGVidWdTdHJpbmcuQ29udHJvbGxlclByb3ZpZGVyKToKKyAgICAgICAgKHRvRGVi
dWdTdHJpbmcuRG9jdW1lbnRQcm92aWRlcik6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLkV4Y2Vw
dGlvbkhhbmRsZXJQcm92aWRlcik6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLkh0dHBQYXJhbVNl
cmlhbGl6ZXJQcm92aWRlci5yZXR1cm4ubmdQYXJhbVNlcmlhbGl6ZXIpOgorICAgICAgICAodG9E
ZWJ1Z1N0cmluZy5IdHRwUGFyYW1TZXJpYWxpemVyUHJvdmlkZXIudGhpcyk6CisgICAgICAgICh0
b0RlYnVnU3RyaW5nLkh0dHBQYXJhbVNlcmlhbGl6ZXJQcm92aWRlcik6CisgICAgICAgICh0b0Rl
YnVnU3RyaW5nLkh0dHBQYXJhbVNlcmlhbGl6ZXJKUUxpa2VQcm92aWRlci5yZXR1cm4ualF1ZXJ5
TGlrZVBhcmFtU2VyaWFsaXplci5wYXJhbXMuc2VyaWFsaXplKToKKyAgICAgICAgKHRvRGVidWdT
dHJpbmcuSHR0cFBhcmFtU2VyaWFsaXplckpRTGlrZVByb3ZpZGVyLnJldHVybi5qUXVlcnlMaWtl
UGFyYW1TZXJpYWxpemVyKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuSHR0cFBhcmFtU2VyaWFs
aXplckpRTGlrZVByb3ZpZGVyLnRoaXMpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5IdHRwUGFy
YW1TZXJpYWxpemVySlFMaWtlUHJvdmlkZXIpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5kZWZh
dWx0SHR0cFJlc3BvbnNlVHJhbnNmb3JtKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuaXNKc29u
TGlrZSk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLnBhcnNlSGVhZGVycy5oZWFkZXJzLmZpbGxJ
blBhcnNlZCk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLnBhcnNlSGVhZGVycyk6CisgICAgICAg
ICh0b0RlYnVnU3RyaW5nLmhlYWRlcnNHZXR0ZXIpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy50
cmFuc2Zvcm1EYXRhKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuaXNTdWNjZXNzKToKKyAgICAg
ICAgKHRvRGVidWdTdHJpbmcuSHR0cFByb3ZpZGVyLmRlZmF1bHRzLnRoaXMuZGVmYXVsdHMudHJh
bnNmb3JtUmVxdWVzdCk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLkh0dHBQcm92aWRlci50aGlz
LnVzZUFwcGx5QXN5bmMpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5IdHRwUHJvdmlkZXIuaHR0
cC5yZXF1ZXN0Q29uZmlnLnNlcnZlclJlcXVlc3QpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5I
dHRwUHJvdmlkZXIuaHR0cC5yZXF1ZXN0Q29uZmlnLnByb21pc2Uuc3VjY2Vzcyk6CisgICAgICAg
ICh0b0RlYnVnU3RyaW5nLkh0dHBQcm92aWRlci5odHRwLnJlcXVlc3RDb25maWcucHJvbWlzZS5l
cnJvcik6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLkh0dHBQcm92aWRlci5odHRwLnJlcXVlc3RD
b25maWcudHJhbnNmb3JtUmVzcG9uc2UpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5IdHRwUHJv
dmlkZXIuaHR0cC5yZXF1ZXN0Q29uZmlnLmV4ZWN1dGVIZWFkZXJGbnMpOgorICAgICAgICAodG9E
ZWJ1Z1N0cmluZy5IdHRwUHJvdmlkZXIuaHR0cC5yZXF1ZXN0Q29uZmlnLm1lcmdlSGVhZGVycyk6
CisgICAgICAgICh0b0RlYnVnU3RyaW5nLkh0dHBQcm92aWRlci4pOgorICAgICAgICAodG9EZWJ1
Z1N0cmluZy5IdHRwUHJvdmlkZXIuY3JlYXRlU2hvcnRNZXRob2RzLm5hbWVzLmh0dHAubmFtZSk6
CisgICAgICAgICh0b0RlYnVnU3RyaW5nLkh0dHBQcm92aWRlci5jcmVhdGVTaG9ydE1ldGhvZHMp
OgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5IdHRwUHJvdmlkZXIuY3JlYXRlU2hvcnRNZXRob2Rz
V2l0aERhdGEubmFtZS5odHRwLm5hbWUpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5IdHRwUHJv
dmlkZXIucmVxRGF0YS5zdGF0dXNUZXh0LnJlc29sdmVIdHRwUHJvbWlzZSk6CisgICAgICAgICh0
b0RlYnVnU3RyaW5nLkh0dHBQcm92aWRlci5yZXFEYXRhLmRvbmUpOgorICAgICAgICAodG9EZWJ1
Z1N0cmluZy5IdHRwUHJvdmlkZXIucmVxRGF0YS5yZXNvbHZlUHJvbWlzZSk6CisgICAgICAgICh0
b0RlYnVnU3RyaW5nLkh0dHBQcm92aWRlci5yZXFEYXRhLnJlc29sdmVQcm9taXNlV2l0aFJlc3Vs
dCk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLkh0dHBQcm92aWRlci5yZXFEYXRhLnJlbW92ZVBl
bmRpbmdSZXEpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5IdHRwUHJvdmlkZXIuYnVpbGRVcmwp
OgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5IdHRwUHJvdmlkZXIpOgorICAgICAgICAodG9EZWJ1
Z1N0cmluZy5jcmVhdGVYaHIpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5IdHRwQmFja2VuZFBy
b3ZpZGVyKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcucmF3RG9jdW1lbnQubG93ZXJjYXNlLnN0
cmluZ19hcHBlYXJlZF9oZXJlLmNhbGxiYWNrcy5jYWxsYmFja0lkKToKKyAgICAgICAgKHRvRGVi
dWdTdHJpbmcucmF3RG9jdW1lbnQuZWxzZS54aHIub25sb2FkKToKKyAgICAgICAgKHRvRGVidWdT
dHJpbmcucmF3RG9jdW1lbnQuZWxzZS5yZXF1ZXN0RXJyb3IpOgorICAgICAgICAodG9EZWJ1Z1N0
cmluZy5yYXdEb2N1bWVudC50aW1lb3V0UmVxdWVzdCk6CisgICAgICAgICh0b0RlYnVnU3RyaW5n
LnJhd0RvY3VtZW50LmNvbXBsZXRlUmVxdWVzdCk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLnJh
d0RvY3VtZW50LmRvbmUuY2FsbGJhY2spOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5yYXdEb2N1
bWVudC5qc29ucFJlcSk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLmNyZWF0ZUh0dHBCYWNrZW5k
KToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuaW50ZXJwb2xhdGVNaW5FcnIudGhyb3dOb2NvbmNh
dCk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLmludGVycG9sYXRlTWluRXJyLmludGVycik6Cisg
ICAgICAgICh0b0RlYnVnU3RyaW5nLkludGVycG9sYXRlUHJvdmlkZXIudGhpcy5zdGFydFN5bWJv
bCk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLkludGVycG9sYXRlUHJvdmlkZXIudGhpcy5lbmRT
eW1ib2wpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5JbnRlcnBvbGF0ZVByb3ZpZGVyLmVzY2Fw
ZSk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLkludGVycG9sYXRlUHJvdmlkZXIudW5lc2NhcGVU
ZXh0KToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuSW50ZXJwb2xhdGVQcm92aWRlci5zdHJpbmdp
ZnkpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5JbnRlcnBvbGF0ZVByb3ZpZGVyLmFsbE9yTm90
aGluZy5tdXN0SGF2ZUV4cHJlc3Npb24uZXhwcmVzc2lvbnMubGVuZ3RoLmNvbXB1dGUpOgorICAg
ICAgICAodG9EZWJ1Z1N0cmluZy5JbnRlcnBvbGF0ZVByb3ZpZGVyLmFsbE9yTm90aGluZy5tdXN0
SGF2ZUV4cHJlc3Npb24uZXhwcmVzc2lvbnMubGVuZ3RoLmdldFZhbHVlKToKKyAgICAgICAgKHRv
RGVidWdTdHJpbmcuSW50ZXJwb2xhdGVQcm92aWRlci5hbGxPck5vdGhpbmcubXVzdEhhdmVFeHBy
ZXNzaW9uLmV4cHJlc3Npb25zLmxlbmd0aC5yZXR1cm4uZXh0ZW5kLmludGVycG9sYXRpb25Gbik6
CisgICAgICAgICh0b0RlYnVnU3RyaW5nLkludGVycG9sYXRlUHJvdmlkZXIuYWxsT3JOb3RoaW5n
Lm11c3RIYXZlRXhwcmVzc2lvbi5leHByZXNzaW9ucy5sZW5ndGgud2F0Y2hEZWxlZ2F0ZSk6Cisg
ICAgICAgICh0b0RlYnVnU3RyaW5nLkludGVycG9sYXRlUHJvdmlkZXIuYWxsT3JOb3RoaW5nKToK
KyAgICAgICAgKHRvRGVidWdTdHJpbmcuSW50ZXJwb2xhdGVQcm92aWRlci5pbnRlcnBvbGF0ZSk6
CisgICAgICAgICh0b0RlYnVnU3RyaW5nLkludGVycG9sYXRlUHJvdmlkZXIuaW50ZXJwb2xhdGUu
c3RhcnRTeW1ib2wpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5JbnRlcnBvbGF0ZVByb3ZpZGVy
LmludGVycG9sYXRlLmVuZFN5bWJvbCk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLkludGVycG9s
YXRlUHJvdmlkZXIpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5JbnRlcnZhbFByb3ZpZGVyLmlu
dm9rZUFwcGx5LmZuKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuSW50ZXJ2YWxQcm92aWRlci5p
bnZva2VBcHBseS5wcm9taXNlLmludGVydmFsSWQuc2V0SW50ZXJ2YWwudGljayk6CisgICAgICAg
ICh0b0RlYnVnU3RyaW5nLkludGVydmFsUHJvdmlkZXIuKToKKyAgICAgICAgKHRvRGVidWdTdHJp
bmcuSW50ZXJ2YWxQcm92aWRlci5pbnRlcnZhbC5jYW5jZWwpOgorICAgICAgICAodG9EZWJ1Z1N0
cmluZy5JbnRlcnZhbFByb3ZpZGVyKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuTG9jYWxlUHJv
dmlkZXIucmV0dXJuLnBsdXJhbENhdCk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLkxvY2FsZVBy
b3ZpZGVyLnRoaXMpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5Mb2NhbGVQcm92aWRlcik6Cisg
ICAgICAgICh0b0RlYnVnU3RyaW5nLmVuY29kZVBhdGgpOgorICAgICAgICAodG9EZWJ1Z1N0cmlu
Zy5wYXJzZUFic29sdXRlVXJsKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcucGFyc2VBcHBVcmwp
OgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5iZWdpbnNXaXRoKToKKyAgICAgICAgKHRvRGVidWdT
dHJpbmcuc3RyaXBIYXNoKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcudHJpbUVtcHR5SGFzaCk6
CisgICAgICAgICh0b0RlYnVnU3RyaW5nLnN0cmlwRmlsZSk6CisgICAgICAgICh0b0RlYnVnU3Ry
aW5nLnNlcnZlckJhc2UpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5iYXNlUHJlZml4LnRoaXMu
cGFyc2UpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5iYXNlUHJlZml4LnRoaXMuY29tcG9zZSk6
CisgICAgICAgICh0b0RlYnVnU3RyaW5nLmJhc2VQcmVmaXgudGhpcy5wYXJzZUxpbmtVcmwpOgor
ICAgICAgICAodG9EZWJ1Z1N0cmluZy5Mb2NhdGlvbkh0bWw1VXJsKToKKyAgICAgICAgKHRvRGVi
dWdTdHJpbmcuaGFzaFByZWZpeC5yZW1vdmVXaW5kb3dzRHJpdmVOYW1lKToKKyAgICAgICAgKHRv
RGVidWdTdHJpbmcuaGFzaFByZWZpeC50aGlzLnBhcnNlKToKKyAgICAgICAgKHRvRGVidWdTdHJp
bmcuaGFzaFByZWZpeC50aGlzLmNvbXBvc2UpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5oYXNo
UHJlZml4LnRoaXMucGFyc2VMaW5rVXJsKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuTG9jYXRp
b25IYXNoYmFuZ1VybCk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLkxvY2F0aW9uSGFzaGJhbmdJ
bkh0bWw1VXJsKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcubG9jYXRpb25Qcm90b3R5cGUudXJs
KToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcubG9jYXRpb25Qcm90b3R5cGUuc2VhcmNoKToKKyAg
ICAgICAgKHRvRGVidWdTdHJpbmcubG9jYXRpb25Qcm90b3R5cGUucmVwbGFjZSk6CisgICAgICAg
ICh0b0RlYnVnU3RyaW5nLkxvY2F0aW9uLnByb3RvdHlwZS5zdGF0ZSk6CisgICAgICAgICh0b0Rl
YnVnU3RyaW5nLmxvY2F0aW9uR2V0dGVyKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcubG9jYXRp
b25HZXR0ZXJTZXR0ZXIpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5Mb2NhdGlvblByb3ZpZGVy
LnRoaXMuaGFzaFByZWZpeCk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLkxvY2F0aW9uUHJvdmlk
ZXIudGhpcy5odG1sNU1vZGUpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5Mb2NhdGlvblByb3Zp
ZGVyLnNldEJyb3dzZXJVcmxXaXRoRmFsbGJhY2spOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5M
b2NhdGlvblByb3ZpZGVyLnJvb3RTY29wZS53YXRjaC5sb2NhdGlvbldhdGNoKToKKyAgICAgICAg
KHRvRGVidWdTdHJpbmcuTG9jYXRpb25Qcm92aWRlci5hZnRlckxvY2F0aW9uQ2hhbmdlKToKKyAg
ICAgICAgKHRvRGVidWdTdHJpbmcuTG9jYXRpb25Qcm92aWRlcik6CisgICAgICAgICh0b0RlYnVn
U3RyaW5nLkxvZ1Byb3ZpZGVyLnRoaXMuZGVidWdFbmFibGVkKToKKyAgICAgICAgKHRvRGVidWdT
dHJpbmcuTG9nUHJvdmlkZXIucmV0dXJuLmRlYnVnKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcu
TG9nUHJvdmlkZXIuZm9ybWF0RXJyb3IpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5Mb2dQcm92
aWRlci5jb25zb2xlTG9nKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuTG9nUHJvdmlkZXIpOgor
ICAgICAgICAodG9EZWJ1Z1N0cmluZy5lbnN1cmVTYWZlTWVtYmVyTmFtZSk6CisgICAgICAgICh0
b0RlYnVnU3RyaW5nLmVuc3VyZVNhZmVPYmplY3QpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5l
bnN1cmVTYWZlRnVuY3Rpb24pOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5MZXhlcik6CisgICAg
ICAgICh0b0RlYnVnU3RyaW5nLkxleGVyLnByb3RvdHlwZS5sZXgpOgorICAgICAgICAodG9EZWJ1
Z1N0cmluZy5MZXhlci5wcm90b3R5cGUuaXMpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5MZXhl
ci5wcm90b3R5cGUucGVlayk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLkxleGVyLnByb3RvdHlw
ZS5pc051bWJlcik6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLkxleGVyLnByb3RvdHlwZS5pc1do
aXRlc3BhY2UpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5MZXhlci5wcm90b3R5cGUuaXNJZGVu
dCk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLkxleGVyLnByb3RvdHlwZS5pc0V4cE9wZXJhdG9y
KToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuTGV4ZXIucHJvdG90eXBlLnRocm93RXJyb3IpOgor
ICAgICAgICAodG9EZWJ1Z1N0cmluZy5MZXhlci5wcm90b3R5cGUucmVhZE51bWJlcik6CisgICAg
ICAgICh0b0RlYnVnU3RyaW5nLkxleGVyLnByb3RvdHlwZS5yZWFkSWRlbnQpOgorICAgICAgICAo
dG9EZWJ1Z1N0cmluZy5MZXhlci5wcm90b3R5cGUucmVhZFN0cmluZyk6CisgICAgICAgICh0b0Rl
YnVnU3RyaW5nLkFTVCk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLkFTVC5wcm90b3R5cGUuYXN0
KToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuQVNULnByb3RvdHlwZS5wcm9ncmFtKToKKyAgICAg
ICAgKHRvRGVidWdTdHJpbmcuQVNULnByb3RvdHlwZS5leHByZXNzaW9uU3RhdGVtZW50KToKKyAg
ICAgICAgKHRvRGVidWdTdHJpbmcuQVNULnByb3RvdHlwZS5maWx0ZXJDaGFpbik6CisgICAgICAg
ICh0b0RlYnVnU3RyaW5nLkFTVC5wcm90b3R5cGUuZXhwcmVzc2lvbik6CisgICAgICAgICh0b0Rl
YnVnU3RyaW5nLkFTVC5wcm90b3R5cGUuYXNzaWdubWVudCk6CisgICAgICAgICh0b0RlYnVnU3Ry
aW5nLkFTVC5wcm90b3R5cGUudGVybmFyeSk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLkFTVC5w
cm90b3R5cGUubG9naWNhbE9SKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuQVNULnByb3RvdHlw
ZS5sb2dpY2FsQU5EKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuQVNULnByb3RvdHlwZS5lcXVh
bGl0eSk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLkFTVC5wcm90b3R5cGUucmVsYXRpb25hbCk6
CisgICAgICAgICh0b0RlYnVnU3RyaW5nLkFTVC5wcm90b3R5cGUuYWRkaXRpdmUpOgorICAgICAg
ICAodG9EZWJ1Z1N0cmluZy5BU1QucHJvdG90eXBlLm11bHRpcGxpY2F0aXZlKToKKyAgICAgICAg
KHRvRGVidWdTdHJpbmcuQVNULnByb3RvdHlwZS51bmFyeSk6CisgICAgICAgICh0b0RlYnVnU3Ry
aW5nLkFTVC5wcm90b3R5cGUucHJpbWFyeSk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLkFTVC5w
cm90b3R5cGUuZmlsdGVyKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuQVNULnByb3RvdHlwZS5w
YXJzZUFyZ3VtZW50cyk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLkFTVC5wcm90b3R5cGUuaWRl
bnRpZmllcik6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLkFTVC5wcm90b3R5cGUuY29uc3RhbnQp
OgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5BU1QucHJvdG90eXBlLmFycmF5RGVjbGFyYXRpb24p
OgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5BU1QucHJvdG90eXBlLm9iamVjdCk6CisgICAgICAg
ICh0b0RlYnVnU3RyaW5nLkFTVC5wcm90b3R5cGUudGhyb3dFcnJvcik6CisgICAgICAgICh0b0Rl
YnVnU3RyaW5nLkFTVC5wcm90b3R5cGUuY29uc3VtZSk6CisgICAgICAgICh0b0RlYnVnU3RyaW5n
LkFTVC5wcm90b3R5cGUucGVla1Rva2VuKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuQVNULnBy
b3RvdHlwZS5wZWVrKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuQVNULnByb3RvdHlwZS5wZWVr
QWhlYWQpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5BU1QucHJvdG90eXBlLmV4cGVjdCk6Cisg
ICAgICAgICh0b0RlYnVnU3RyaW5nLmlmRGVmaW5lZCk6CisgICAgICAgICh0b0RlYnVnU3RyaW5n
LnBsdXNGbik6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLmlzU3RhdGVsZXNzKToKKyAgICAgICAg
KHRvRGVidWdTdHJpbmcuZmluZENvbnN0YW50QW5kV2F0Y2hFeHByZXNzaW9ucyk6CisgICAgICAg
ICh0b0RlYnVnU3RyaW5nLmdldElucHV0cyk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLmlzQXNz
aWduYWJsZSk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLmFzc2lnbmFibGVBU1QpOgorICAgICAg
ICAodG9EZWJ1Z1N0cmluZy5pc0xpdGVyYWwpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5pc0Nv
bnN0YW50KToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuQVNUQ29tcGlsZXIpOgorICAgICAgICAo
dG9EZWJ1Z1N0cmluZy5BU1RDb21waWxlci5wcm90b3R5cGUuY29tcGlsZSk6CisgICAgICAgICh0
b0RlYnVnU3RyaW5nLkFTVENvbXBpbGVyLnByb3RvdHlwZS53YXRjaEZucyk6CisgICAgICAgICh0
b0RlYnVnU3RyaW5nLkFTVENvbXBpbGVyLnByb3RvdHlwZS5nZW5lcmF0ZUZ1bmN0aW9uKToKKyAg
ICAgICAgKHRvRGVidWdTdHJpbmcuQVNUQ29tcGlsZXIucHJvdG90eXBlLmZpbHRlclByZWZpeCk6
CisgICAgICAgICh0b0RlYnVnU3RyaW5nLkFTVENvbXBpbGVyLnByb3RvdHlwZS52YXJzUHJlZml4
KToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuQVNUQ29tcGlsZXIucHJvdG90eXBlLmJvZHkpOgor
ICAgICAgICAodG9EZWJ1Z1N0cmluZy5BU1RDb21waWxlci5wcm90b3R5cGUuc3dpdGNoLmFzdC50
eXBlLik6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLkFTVENvbXBpbGVyLnByb3RvdHlwZS5zd2l0
Y2guYXN0LnR5cGUuZWxzZS4pOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5BU1RDb21waWxlci5w
cm90b3R5cGUucmVjdXJzZSk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLkFTVENvbXBpbGVyLnBy
b3RvdHlwZS5nZXRIYXNPd25Qcm9wZXJ0eSk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLkFTVENv
bXBpbGVyLnByb3RvdHlwZS5hc3NpZ24pOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5BU1RDb21w
aWxlci5wcm90b3R5cGUuZmlsdGVyKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuQVNUQ29tcGls
ZXIucHJvdG90eXBlLmlmRGVmaW5lZCk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLkFTVENvbXBp
bGVyLnByb3RvdHlwZS5wbHVzKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuQVNUQ29tcGlsZXIu
cHJvdG90eXBlLnJldHVybl8pOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5BU1RDb21waWxlci5w
cm90b3R5cGUuaWZfKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuQVNUQ29tcGlsZXIucHJvdG90
eXBlLm5vdCk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLkFTVENvbXBpbGVyLnByb3RvdHlwZS5u
b3ROdWxsKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuQVNUQ29tcGlsZXIucHJvdG90eXBlLm5v
bkNvbXB1dGVkTWVtYmVyKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuQVNUQ29tcGlsZXIucHJv
dG90eXBlLmNvbXB1dGVkTWVtYmVyKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuQVNUQ29tcGls
ZXIucHJvdG90eXBlLm1lbWJlcik6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLkFTVENvbXBpbGVy
LnByb3RvdHlwZS5hZGRFbnN1cmVTYWZlT2JqZWN0KToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcu
QVNUQ29tcGlsZXIucHJvdG90eXBlLmFkZEVuc3VyZVNhZmVNZW1iZXJOYW1lKToKKyAgICAgICAg
KHRvRGVidWdTdHJpbmcuQVNUQ29tcGlsZXIucHJvdG90eXBlLmFkZEVuc3VyZVNhZmVGdW5jdGlv
bik6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLkFTVENvbXBpbGVyLnByb3RvdHlwZS5lbnN1cmVT
YWZlT2JqZWN0KToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuQVNUQ29tcGlsZXIucHJvdG90eXBl
LmVuc3VyZVNhZmVNZW1iZXJOYW1lKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuQVNUQ29tcGls
ZXIucHJvdG90eXBlLmVuc3VyZVNhZmVGdW5jdGlvbik6CisgICAgICAgICh0b0RlYnVnU3RyaW5n
LkFTVENvbXBpbGVyLnByb3RvdHlwZS5sYXp5UmVjdXJzZSk6CisgICAgICAgICh0b0RlYnVnU3Ry
aW5nLkFTVENvbXBpbGVyLnByb3RvdHlwZS5sYXp5QXNzaWduKToKKyAgICAgICAgKHRvRGVidWdT
dHJpbmcuQVNUQ29tcGlsZXIucHJvdG90eXBlLnN0cmluZ0VzY2FwZUZuKToKKyAgICAgICAgKHRv
RGVidWdTdHJpbmcuQVNUQ29tcGlsZXIucHJvdG90eXBlLmVzY2FwZSk6CisgICAgICAgICh0b0Rl
YnVnU3RyaW5nLkFTVENvbXBpbGVyLnByb3RvdHlwZS5uZXh0SWQpOgorICAgICAgICAodG9EZWJ1
Z1N0cmluZy5BU1RDb21waWxlci5wcm90b3R5cGUuY3VycmVudCk6CisgICAgICAgICh0b0RlYnVn
U3RyaW5nLkFTVEludGVycHJldGVyKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuQVNUSW50ZXJw
cmV0ZXIucHJvdG90eXBlLmFzdC5ib2R5Lmxlbmd0aC4xLmV4cHJlc3Npb25zLjApOgorICAgICAg
ICAodG9EZWJ1Z1N0cmluZy5BU1RJbnRlcnByZXRlci5wcm90b3R5cGUuYXNzaWduLmZuLmFzc2ln
bik6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLkFTVEludGVycHJldGVyLnByb3RvdHlwZS5jb21w
aWxlKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuQVNUSW50ZXJwcmV0ZXIucHJvdG90eXBlLnN3
aXRjaC5hc3QudHlwZSk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLkFTVEludGVycHJldGVyLnBy
b3RvdHlwZS5yZWN1cnNlKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuQVNUSW50ZXJwcmV0ZXIu
cHJvdG90eXBlLnN0cmluZ19hcHBlYXJlZF9oZXJlKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcu
QVNUSW50ZXJwcmV0ZXIucHJvdG90eXBlLnZhbHVlKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcu
QVNUSW50ZXJwcmV0ZXIucHJvdG90eXBlLmlkZW50aWZpZXIpOgorICAgICAgICAodG9EZWJ1Z1N0
cmluZy5BU1RJbnRlcnByZXRlci5wcm90b3R5cGUuY29tcHV0ZWRNZW1iZXIpOgorICAgICAgICAo
dG9EZWJ1Z1N0cmluZy5BU1RJbnRlcnByZXRlci5wcm90b3R5cGUubm9uQ29tcHV0ZWRNZW1iZXIp
OgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5BU1RJbnRlcnByZXRlci5wcm90b3R5cGUuaW5wdXRz
KToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuUGFyc2VyKToKKyAgICAgICAgKHRvRGVidWdTdHJp
bmcuUGFyc2VyLnByb3RvdHlwZS5wYXJzZSk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLnNldHRl
cik6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLmlzUG9zc2libHlEYW5nZXJvdXNNZW1iZXJOYW1l
KToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuZ2V0VmFsdWVPZik6CisgICAgICAgICh0b0RlYnVn
U3RyaW5nLlBhcnNlUHJvdmlkZXIucmV0dXJuLnBhcnNlKToKKyAgICAgICAgKHRvRGVidWdTdHJp
bmcuUGFyc2VQcm92aWRlci5leHByZXNzaW9uSW5wdXREaXJ0eUNoZWNrKToKKyAgICAgICAgKHRv
RGVidWdTdHJpbmcuUGFyc2VQcm92aWRlci5wcmV0dHlQcmludEV4cHJlc3Npb24uaW5wdXRFeHBy
ZXNzaW9ucy5sZW5ndGguMS5yZXR1cm4uc2NvcGUud2F0Y2guZXhwcmVzc2lvbklucHV0V2F0Y2gp
OgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5QYXJzZVByb3ZpZGVyLnByZXR0eVByaW50RXhwcmVz
c2lvbi5yZXR1cm4uc2NvcGUud2F0Y2guZXhwcmVzc2lvbklucHV0c1dhdGNoKToKKyAgICAgICAg
KHRvRGVidWdTdHJpbmcuUGFyc2VQcm92aWRlci5pbnB1dHNXYXRjaERlbGVnYXRlKToKKyAgICAg
ICAgKHRvRGVidWdTdHJpbmcuUGFyc2VQcm92aWRlci5wYXJzZWRFeHByZXNzaW9uLnJldHVybi51
bndhdGNoLnNjb3BlLndhdGNoLm9uZVRpbWVXYXRjaCk6CisgICAgICAgICh0b0RlYnVnU3RyaW5n
LlBhcnNlUHJvdmlkZXIucGFyc2VkRXhwcmVzc2lvbi5vbmVUaW1lTGlzdGVuZXIpOgorICAgICAg
ICAodG9EZWJ1Z1N0cmluZy5QYXJzZVByb3ZpZGVyLm9uZVRpbWVXYXRjaERlbGVnYXRlKToKKyAg
ICAgICAgKHRvRGVidWdTdHJpbmcuUGFyc2VQcm92aWRlci5wYXJzZWRFeHByZXNzaW9uLmlzQWxs
RGVmaW5lZCk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLlBhcnNlUHJvdmlkZXIub25lVGltZUxp
dGVyYWxXYXRjaERlbGVnYXRlKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuUGFyc2VQcm92aWRl
ci5wYXJzZWRFeHByZXNzaW9uLnJldHVybi51bndhdGNoLnNjb3BlLndhdGNoLmNvbnN0YW50V2F0
Y2gpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5QYXJzZVByb3ZpZGVyLnBhcnNlZEV4cHJlc3Np
b24uY29uc3RhbnRMaXN0ZW5lcik6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLlBhcnNlUHJvdmlk
ZXIuY29uc3RhbnRXYXRjaERlbGVnYXRlKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuUGFyc2VQ
cm92aWRlci5pbnRlcmNlcHRvckZuLmZuLnJlZ3VsYXJXYXRjaC5yZWd1bGFySW50ZXJjZXB0ZWRF
eHByZXNzaW9uKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuUGFyc2VQcm92aWRlci5pbnRlcmNl
cHRvckZuKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuUGFyc2VQcm92aWRlci5hZGRJbnRlcmNl
cHRvcik6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLlBhcnNlUHJvdmlkZXIpOgorICAgICAgICAo
dG9EZWJ1Z1N0cmluZy5RUHJvdmlkZXIpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5leGNlcHRp
b25IYW5kbGVyLnJlamVjdEZuLndyYXApOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5leGNlcHRp
b25IYW5kbGVyLmNhbGxPbmNlKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuZXhjZXB0aW9uSGFu
ZGxlci5kZWZlcik6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLmV4Y2VwdGlvbkhhbmRsZXIuUHJv
bWlzZSk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLmV4Y2VwdGlvbkhhbmRsZXIuUHJvbWlzZS5w
cm90b3R5cGUudGhlbik6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLmV4Y2VwdGlvbkhhbmRsZXIu
UHJvbWlzZS5wcm90b3R5cGUuc3RyaW5nX2FwcGVhcmVkX2hlcmUpOgorICAgICAgICAodG9EZWJ1
Z1N0cmluZy5leGNlcHRpb25IYW5kbGVyLnNpbXBsZUJpbmQpOgorICAgICAgICAodG9EZWJ1Z1N0
cmluZy5leGNlcHRpb25IYW5kbGVyLnByb2Nlc3NRdWV1ZSk6CisgICAgICAgICh0b0RlYnVnU3Ry
aW5nLmV4Y2VwdGlvbkhhbmRsZXIuc2NoZWR1bGVQcm9jZXNzUXVldWUpOgorICAgICAgICAodG9E
ZWJ1Z1N0cmluZy5leGNlcHRpb25IYW5kbGVyLkRlZmVycmVkKToKKyAgICAgICAgKHRvRGVidWdT
dHJpbmcuZXhjZXB0aW9uSGFuZGxlci5EZWZlcnJlZC5wcm90b3R5cGUucmVzb2x2ZSk6CisgICAg
ICAgICh0b0RlYnVnU3RyaW5nLmV4Y2VwdGlvbkhhbmRsZXIuRGVmZXJyZWQucHJvdG90eXBlLnJl
amVjdCk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLmV4Y2VwdGlvbkhhbmRsZXIuRGVmZXJyZWQu
cHJvdG90eXBlLm5vdGlmeSk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLmV4Y2VwdGlvbkhhbmRs
ZXIucmVqZWN0KToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuZXhjZXB0aW9uSGFuZGxlci5tYWtl
UHJvbWlzZSk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLmV4Y2VwdGlvbkhhbmRsZXIuaGFuZGxl
Q2FsbGJhY2spOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5leGNlcHRpb25IYW5kbGVyLndoZW4p
OgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5leGNlcHRpb25IYW5kbGVyLmFsbC5wcm9taXNlcy4p
OgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5leGNlcHRpb25IYW5kbGVyLmFsbCk6CisgICAgICAg
ICh0b0RlYnVnU3RyaW5nLmV4Y2VwdGlvbkhhbmRsZXIuUS5RLnJlc29sdmVyLnJlc29sdmVGbik6
CisgICAgICAgICh0b0RlYnVnU3RyaW5nLmV4Y2VwdGlvbkhhbmRsZXIuUS5RLnJlc29sdmVyLnJl
amVjdEZuKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuZXhjZXB0aW9uSGFuZGxlci5RKToKKyAg
ICAgICAgKHRvRGVidWdTdHJpbmcucUZhY3RvcnkpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5S
QUZQcm92aWRlci4pOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5SQUZQcm92aWRlci5mbHVzaCk6
CisgICAgICAgICh0b0RlYnVnU3RyaW5nLlJBRlByb3ZpZGVyLnF1ZXVlRm4uYXN5bmNGbi5yZXR1
cm4uY2FuY2VsUXVldWVGbik6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLlJBRlByb3ZpZGVyLnF1
ZXVlRm4pOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5SQUZQcm92aWRlcik6CisgICAgICAgICh0
b0RlYnVnU3RyaW5nLlJvb3RTY29wZVByb3ZpZGVyLnRoaXMuZGlnZXN0VHRsKToKKyAgICAgICAg
KHRvRGVidWdTdHJpbmcuUm9vdFNjb3BlUHJvdmlkZXIuY3JlYXRlQ2hpbGRTY29wZUNsYXNzLnBh
cmVudC5DaGlsZFNjb3BlKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuUm9vdFNjb3BlUHJvdmlk
ZXIuY3JlYXRlQ2hpbGRTY29wZUNsYXNzKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuUm9vdFNj
b3BlUHJvdmlkZXIuZGVzdHJveUNoaWxkU2NvcGUpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5S
b290U2NvcGVQcm92aWRlci5TY29wZSk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLlJvb3RTY29w
ZVByb3ZpZGVyLlNjb3BlLnByb3RvdHlwZS5uZXcpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5S
b290U2NvcGVQcm92aWRlci5TY29wZS5wcm90b3R5cGUucmV0dXJuLmRlcmVnaXN0ZXJXYXRjaCk6
CisgICAgICAgICh0b0RlYnVnU3RyaW5nLlJvb3RTY29wZVByb3ZpZGVyLlNjb3BlLnByb3RvdHlw
ZS53YXRjaEV4cHJlc3Npb25zLmxlbmd0aC5yZXR1cm4uZGVyZWdpc3RlcldhdGNoR3JvdXApOgor
ICAgICAgICAodG9EZWJ1Z1N0cmluZy5Sb290U2NvcGVQcm92aWRlci5TY29wZS5wcm90b3R5cGUu
d2F0Y2hFeHByZXNzaW9ucy5sZW5ndGguMS53YXRjaEdyb3VwQWN0aW9uKToKKyAgICAgICAgKHRv
RGVidWdTdHJpbmcuUm9vdFNjb3BlUHJvdmlkZXIuU2NvcGUucHJvdG90eXBlLndhdGNoR3JvdXBB
Y3Rpb24pOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5Sb290U2NvcGVQcm92aWRlci5TY29wZS5w
cm90b3R5cGUucmV0dXJuLmRlcmVnaXN0ZXJXYXRjaEdyb3VwKToKKyAgICAgICAgKHRvRGVidWdT
dHJpbmcuUm9vdFNjb3BlUHJvdmlkZXIuU2NvcGUucHJvdG90eXBlLndhdGNoR3JvdXApOgorICAg
ICAgICAodG9EZWJ1Z1N0cmluZy5Sb290U2NvcGVQcm92aWRlci5TY29wZS5wcm90b3R5cGUud2F0
Y2hDb2xsZWN0aW9uSW50ZXJjZXB0b3IpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5Sb290U2Nv
cGVQcm92aWRlci5TY29wZS5wcm90b3R5cGUud2F0Y2hDb2xsZWN0aW9uQWN0aW9uKToKKyAgICAg
ICAgKHRvRGVidWdTdHJpbmcuUm9vdFNjb3BlUHJvdmlkZXIuU2NvcGUucHJvdG90eXBlLndhdGNo
Q29sbGVjdGlvbik6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLlJvb3RTY29wZVByb3ZpZGVyLlNj
b3BlLnByb3RvdHlwZS5kaWdlc3QpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5Sb290U2NvcGVQ
cm92aWRlci5TY29wZS5wcm90b3R5cGUudGhpcy5vbi50aGlzLndhdGNoLnRoaXMud2F0Y2hHcm91
cCk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLlJvb3RTY29wZVByb3ZpZGVyLlNjb3BlLnByb3Rv
dHlwZS5kZXN0cm95KToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuUm9vdFNjb3BlUHJvdmlkZXIu
U2NvcGUucHJvdG90eXBlLmV2YWwpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5Sb290U2NvcGVQ
cm92aWRlci5TY29wZS5wcm90b3R5cGUuZXZhbEFzeW5jKToKKyAgICAgICAgKHRvRGVidWdTdHJp
bmcuUm9vdFNjb3BlUHJvdmlkZXIuU2NvcGUucHJvdG90eXBlLnBvc3REaWdlc3QpOgorICAgICAg
ICAodG9EZWJ1Z1N0cmluZy5Sb290U2NvcGVQcm92aWRlci5TY29wZS5wcm90b3R5cGUuYXBwbHkp
OgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5Sb290U2NvcGVQcm92aWRlci5TY29wZS5wcm90b3R5
cGUuYXBwbHlBc3luY0V4cHJlc3Npb24pOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5Sb290U2Nv
cGVQcm92aWRlci5TY29wZS5wcm90b3R5cGUuYXBwbHlBc3luYyk6CisgICAgICAgICh0b0RlYnVn
U3RyaW5nLlJvb3RTY29wZVByb3ZpZGVyLlNjb3BlLnByb3RvdHlwZS5vbik6CisgICAgICAgICh0
b0RlYnVnU3RyaW5nLlJvb3RTY29wZVByb3ZpZGVyLlNjb3BlLnByb3RvdHlwZS5ldmVudC5zdG9w
UHJvcGFnYXRpb24pOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5Sb290U2NvcGVQcm92aWRlci5T
Y29wZS5wcm90b3R5cGUuZXZlbnQucHJldmVudERlZmF1bHQpOgorICAgICAgICAodG9EZWJ1Z1N0
cmluZy5Sb290U2NvcGVQcm92aWRlci5TY29wZS5wcm90b3R5cGUuZW1pdCk6CisgICAgICAgICh0
b0RlYnVnU3RyaW5nLlJvb3RTY29wZVByb3ZpZGVyLlNjb3BlLnByb3RvdHlwZS5icm9hZGNhc3Qp
OgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5Sb290U2NvcGVQcm92aWRlci5iZWdpblBoYXNlKToK
KyAgICAgICAgKHRvRGVidWdTdHJpbmcuUm9vdFNjb3BlUHJvdmlkZXIuY2xlYXJQaGFzZSk6Cisg
ICAgICAgICh0b0RlYnVnU3RyaW5nLlJvb3RTY29wZVByb3ZpZGVyLmluY3JlbWVudFdhdGNoZXJz
Q291bnQpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5Sb290U2NvcGVQcm92aWRlci4pOgorICAg
ICAgICAodG9EZWJ1Z1N0cmluZy5Sb290U2NvcGVQcm92aWRlci5mbHVzaEFwcGx5QXN5bmMpOgor
ICAgICAgICAodG9EZWJ1Z1N0cmluZy5Sb290U2NvcGVQcm92aWRlci5zY2hlZHVsZUFwcGx5QXN5
bmMpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5TYW5pdGl6ZVVyaVByb3ZpZGVyLnRoaXMuYUhy
ZWZTYW5pdGl6YXRpb25XaGl0ZWxpc3QpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5TYW5pdGl6
ZVVyaVByb3ZpZGVyLnRoaXMuaW1nU3JjU2FuaXRpemF0aW9uV2hpdGVsaXN0KToKKyAgICAgICAg
KHRvRGVidWdTdHJpbmcuU2FuaXRpemVVcmlQcm92aWRlci5yZXR1cm4uc2FuaXRpemVVcmkpOgor
ICAgICAgICAodG9EZWJ1Z1N0cmluZy5TYW5pdGl6ZVVyaVByb3ZpZGVyLnRoaXMpOgorICAgICAg
ICAodG9EZWJ1Z1N0cmluZy5TYW5pdGl6ZVVyaVByb3ZpZGVyKToKKyAgICAgICAgKHRvRGVidWdT
dHJpbmcuYWRqdXN0TWF0Y2hlcik6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLmFkanVzdE1hdGNo
ZXJzKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuU2NlRGVsZWdhdGVQcm92aWRlci50aGlzLnJl
c291cmNlVXJsV2hpdGVsaXN0KToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuU2NlRGVsZWdhdGVQ
cm92aWRlci50aGlzLnJlc291cmNlVXJsQmxhY2tsaXN0KToKKyAgICAgICAgKHRvRGVidWdTdHJp
bmcuU2NlRGVsZWdhdGVQcm92aWRlci5odG1sU2FuaXRpemVyKToKKyAgICAgICAgKHRvRGVidWdT
dHJpbmcuU2NlRGVsZWdhdGVQcm92aWRlci5tYXRjaFVybCk6CisgICAgICAgICh0b0RlYnVnU3Ry
aW5nLlNjZURlbGVnYXRlUHJvdmlkZXIuaXNSZXNvdXJjZVVybEFsbG93ZWRCeVBvbGljeSk6Cisg
ICAgICAgICh0b0RlYnVnU3RyaW5nLlNjZURlbGVnYXRlUHJvdmlkZXIuZ2VuZXJhdGVIb2xkZXJU
eXBlLkJhc2UuaG9sZGVyVHlwZS5UcnVzdGVkVmFsdWVIb2xkZXJUeXBlLnRydXN0ZWRWYWx1ZS50
aGlzLnVud3JhcFRydXN0ZWRWYWx1ZSk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLlNjZURlbGVn
YXRlUHJvdmlkZXIuZ2VuZXJhdGVIb2xkZXJUeXBlLkJhc2UuaG9sZGVyVHlwZSk6CisgICAgICAg
ICh0b0RlYnVnU3RyaW5nLlNjZURlbGVnYXRlUHJvdmlkZXIuZ2VuZXJhdGVIb2xkZXJUeXBlLkJh
c2UuaG9sZGVyVHlwZS5wcm90b3R5cGUudmFsdWVPZik6CisgICAgICAgICh0b0RlYnVnU3RyaW5n
LlNjZURlbGVnYXRlUHJvdmlkZXIuZ2VuZXJhdGVIb2xkZXJUeXBlLkJhc2UuaG9sZGVyVHlwZS5w
cm90b3R5cGUudG9TdHJpbmcpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5TY2VEZWxlZ2F0ZVBy
b3ZpZGVyLmdlbmVyYXRlSG9sZGVyVHlwZSk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLlNjZURl
bGVnYXRlUHJvdmlkZXIudHJ1c3RBcyk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLlNjZURlbGVn
YXRlUHJvdmlkZXIudmFsdWVPZik6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLlNjZURlbGVnYXRl
UHJvdmlkZXIuZ2V0VHJ1c3RlZCk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLlNjZURlbGVnYXRl
UHJvdmlkZXIpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5TY2VQcm92aWRlci50aGlzLmVuYWJs
ZWQpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5TY2VQcm92aWRlci5zY2UuaXNFbmFibGVkKToK
KyAgICAgICAgKHRvRGVidWdTdHJpbmcuU2NlUHJvdmlkZXIuZW5hYmxlZC5zY2UudHJ1c3RBcy5z
Y2UuZ2V0VHJ1c3RlZCk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLlNjZVByb3ZpZGVyLnNjZS5w
YXJzZUFzKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuU2NlUHJvdmlkZXIuc2NlLmNhbWVsQ2Fz
ZSk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLlNjZVByb3ZpZGVyKToKKyAgICAgICAgKHRvRGVi
dWdTdHJpbmcuU25pZmZlclByb3ZpZGVyLnJldHVybi5oYXNFdmVudCk6CisgICAgICAgICh0b0Rl
YnVnU3RyaW5nLlNuaWZmZXJQcm92aWRlcik6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLlRlbXBs
YXRlUmVxdWVzdFByb3ZpZGVyLmlnbm9yZVJlcXVlc3RFcnJvci5oYW5kbGVFcnJvcik6CisgICAg
ICAgICh0b0RlYnVnU3RyaW5nLlRlbXBsYXRlUmVxdWVzdFByb3ZpZGVyLmhhbmRsZVJlcXVlc3RG
bik6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLlRlbXBsYXRlUmVxdWVzdFByb3ZpZGVyKToKKyAg
ICAgICAgKHRvRGVidWdTdHJpbmcuVGVzdGFiaWxpdHlQcm92aWRlci50ZXN0YWJpbGl0eS5maW5k
QmluZGluZ3MpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5UZXN0YWJpbGl0eVByb3ZpZGVyLnRl
c3RhYmlsaXR5LmZpbmRNb2RlbHMpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5UZXN0YWJpbGl0
eVByb3ZpZGVyLnRlc3RhYmlsaXR5LmdldExvY2F0aW9uKToKKyAgICAgICAgKHRvRGVidWdTdHJp
bmcuVGVzdGFiaWxpdHlQcm92aWRlci50ZXN0YWJpbGl0eS5zZXRMb2NhdGlvbik6CisgICAgICAg
ICh0b0RlYnVnU3RyaW5nLlRlc3RhYmlsaXR5UHJvdmlkZXIudGVzdGFiaWxpdHkud2hlblN0YWJs
ZSk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLlRlc3RhYmlsaXR5UHJvdmlkZXIpOgorICAgICAg
ICAodG9EZWJ1Z1N0cmluZy5UaW1lb3V0UHJvdmlkZXIuKToKKyAgICAgICAgKHRvRGVidWdTdHJp
bmcuVGltZW91dFByb3ZpZGVyLnRpbWVvdXQuY2FuY2VsKToKKyAgICAgICAgKHRvRGVidWdTdHJp
bmcuVGltZW91dFByb3ZpZGVyKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcudXJsUmVzb2x2ZSk6
CisgICAgICAgICh0b0RlYnVnU3RyaW5nLnVybElzU2FtZU9yaWdpbik6CisgICAgICAgICh0b0Rl
YnVnU3RyaW5nLldpbmRvd1Byb3ZpZGVyKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuQ29va2ll
UmVhZGVyLmRvY3VtZW50LnNhZmVEZWNvZGVVUklDb21wb25lbnQpOgorICAgICAgICAodG9EZWJ1
Z1N0cmluZy5Db29raWVSZWFkZXIpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5Db29raWVSZWFk
ZXJQcm92aWRlcik6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLkZpbHRlclByb3ZpZGVyLnByb3Zp
ZGUucmVnaXN0ZXIpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5GaWx0ZXJQcm92aWRlcik6Cisg
ICAgICAgICh0b0RlYnVnU3RyaW5nLmZpbHRlckZpbHRlcik6CisgICAgICAgICh0b0RlYnVnU3Ry
aW5nLm1hdGNoQWdhaW5zdEFueVByb3AuZWxzZS5pc0Z1bmN0aW9uLmNvbXBhcmF0b3IpOgorICAg
ICAgICAodG9EZWJ1Z1N0cmluZy5tYXRjaEFnYWluc3RBbnlQcm9wLnByZWRpY2F0ZUZuKToKKyAg
ICAgICAgKHRvRGVidWdTdHJpbmcuY3JlYXRlUHJlZGljYXRlRm4pOgorICAgICAgICAodG9EZWJ1
Z1N0cmluZy5kZWVwQ29tcGFyZSk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLmdldFR5cGVGb3JG
aWx0ZXIpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5jdXJyZW5jeUZpbHRlcik6CisgICAgICAg
ICh0b0RlYnVnU3RyaW5nLm51bWJlckZpbHRlcik6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLmZv
cm1hdE51bWJlcik6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLnBhZE51bWJlcik6CisgICAgICAg
ICh0b0RlYnVnU3RyaW5nLmRhdGVHZXR0ZXIpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy50aW1l
Wm9uZUdldHRlcik6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLmdldEZpcnN0VGh1cnNkYXlPZlll
YXIpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5nZXRUaHVyc2RheVRoaXNXZWVrKToKKyAgICAg
ICAgKHRvRGVidWdTdHJpbmcud2Vla0dldHRlcik6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLmFt
cG1HZXR0ZXIpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5lcmFHZXR0ZXIpOgorICAgICAgICAo
dG9EZWJ1Z1N0cmluZy5sb25nRXJhR2V0dGVyKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuZGF0
ZUZpbHRlcik6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLmpzb25GaWx0ZXIpOgorICAgICAgICAo
dG9EZWJ1Z1N0cmluZy5saW1pdFRvRmlsdGVyKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcub3Jk
ZXJCeUZpbHRlci5nZXRDb21wYXJpc29uT2JqZWN0KToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcu
b3JkZXJCeUZpbHRlci5kb0NvbXBhcmlzb24pOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5vcmRl
ckJ5RmlsdGVyLik6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLm9yZGVyQnlGaWx0ZXIucHJvY2Vz
c1ByZWRpY2F0ZXMpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5vcmRlckJ5RmlsdGVyLmdldCBp
c1ByaW1pdGl2ZSk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLm9yZGVyQnlGaWx0ZXIub2JqZWN0
VmFsdWUpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5vcmRlckJ5RmlsdGVyLmdldFByZWRpY2F0
ZVZhbHVlKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcub3JkZXJCeUZpbHRlci5jb21wYXJlKToK
KyAgICAgICAgKHRvRGVidWdTdHJpbmcubmdEaXJlY3RpdmUpOgorICAgICAgICAodG9EZWJ1Z1N0
cmluZy5odG1sQW5jaG9yRGlyZWN0aXZlLnZhbHVlRm4uKToKKyAgICAgICAgKHRvRGVidWdTdHJp
bmcuaHRtbEFuY2hvckRpcmVjdGl2ZS52YWx1ZUZuKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcu
b3JkZXJCeUZpbHRlcik6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLm51bGxGb3JtUmVuYW1lQ29u
dHJvbCk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLmZvcm0ucm9sbGJhY2tWaWV3VmFsdWUpOgor
ICAgICAgICAodG9EZWJ1Z1N0cmluZy5mb3JtLmNvbW1pdFZpZXdWYWx1ZSk6CisgICAgICAgICh0
b0RlYnVnU3RyaW5nLmZvcm0uYWRkQ29udHJvbCk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLmZv
cm0ucmVuYW1lQ29udHJvbCk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLmZvcm0ucmVtb3ZlQ29u
dHJvbCk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLmFkZFNldFZhbGlkaXR5TWV0aG9kKToKKyAg
ICAgICAgKHRvRGVidWdTdHJpbmcuc2V0IGZvcm0uc2V0RGlydHkpOgorICAgICAgICAodG9EZWJ1
Z1N0cmluZy5mb3JtLnNldFByaXN0aW5lKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuZm9ybS5z
ZXRVbnRvdWNoZWQpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5mb3JtLnNldFN1Ym1pdHRlZCk6
CisgICAgICAgICh0b0RlYnVnU3RyaW5nLmZvcm1EaXJlY3RpdmUucmV0dXJuLmhhbmRsZUZvcm1T
dWJtaXNzaW9uKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuZm9ybURpcmVjdGl2ZS5yZXR1cm4u
cHJlKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuZm9ybURpcmVjdGl2ZS5jb21waWxlKToKKyAg
ICAgICAgKHRvRGVidWdTdHJpbmcuZm9ybURpcmVjdGl2ZUZhY3RvcnkpOgorICAgICAgICAodG9E
ZWJ1Z1N0cmluZy5zdHJpbmdCYXNlZElucHV0VHlwZSk6CisgICAgICAgICh0b0RlYnVnU3RyaW5n
Lmxpc3RlbmVyKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuZWxzZS5kZWZlckxpc3RlbmVyKToK
KyAgICAgICAgKHRvRGVidWdTdHJpbmcuY3RybC5yZW5kZXIpOgorICAgICAgICAodG9EZWJ1Z1N0
cmluZy5iYXNlSW5wdXRUeXBlKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuY3JlYXRlRGF0ZVBh
cnNlcik6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLmN0cmwudmFsaWRhdG9ycy5taW4pOgorICAg
ICAgICAodG9EZWJ1Z1N0cmluZy5jdHJsLnZhbGlkYXRvcnMubWF4KToKKyAgICAgICAgKHRvRGVi
dWdTdHJpbmcucmV0dXJuLmR5bmFtaWNEYXRlSW5wdXRUeXBlKToKKyAgICAgICAgKHRvRGVidWdT
dHJpbmcuY3JlYXRlRGF0ZUlucHV0VHlwZSk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLmJhZElu
cHV0Q2hlY2tlcik6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLmN0cmwudmFsaWRhdG9ycy51cmwp
OgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5jdHJsLnZhbGlkYXRvcnMuZW1haWwpOgorICAgICAg
ICAodG9EZWJ1Z1N0cmluZy5lbWFpbElucHV0VHlwZSk6CisgICAgICAgICh0b0RlYnVnU3RyaW5n
LnJhZGlvSW5wdXRUeXBlKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcucGFyc2VDb25zdGFudEV4
cHIpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5jdHJsLmlzRW1wdHkpOgorICAgICAgICAodG9E
ZWJ1Z1N0cmluZy5jaGVja2JveElucHV0VHlwZSk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLnJl
dHVybi5saW5rLnByZSk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLnNldCBmb3JtKToKKyAgICAg
ICAgKHRvRGVidWdTdHJpbmcuRm9ybUNvbnRyb2xsZXIpOgorICAgICAgICAodG9EZWJ1Z1N0cmlu
Zy5yZXR1cm4ucmV0dXJuLm5nVmFsdWVDb25zdGFudExpbmspOgorICAgICAgICAodG9EZWJ1Z1N0
cmluZy5yZXR1cm4uZWxzZS5yZXR1cm4ubmdWYWx1ZUxpbmspOgorICAgICAgICAodG9EZWJ1Z1N0
cmluZy5yZXR1cm4uY29tcGlsZSk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLm5nVmFsdWVEaXJl
Y3RpdmUpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5yZXR1cm4uY29tcGlsZS5uZ0JpbmRDb21w
aWxlLnJldHVybi5uZ0JpbmRMaW5rKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcucmV0dXJuLmNv
bXBpbGUubmdCaW5kVGVtcGxhdGVDb21waWxlLnJldHVybi5uZ0JpbmRUZW1wbGF0ZUxpbmspOgor
ICAgICAgICAodG9EZWJ1Z1N0cmluZy5yZXR1cm4ucmV0dXJuLm5nQmluZEh0bWxMaW5rKToKKyAg
ICAgICAgKHRvRGVidWdTdHJpbmcubmdDaGFuZ2VEaXJlY3RpdmUudmFsdWVGbi4pOgorICAgICAg
ICAodG9EZWJ1Z1N0cmluZy5uZ0NoYW5nZURpcmVjdGl2ZS52YWx1ZUZuKToKKyAgICAgICAgKHRv
RGVidWdTdHJpbmcucmV0dXJuLik6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLnJldHVybi5yZW1v
dmVDbGFzc2VzKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcucmV0dXJuLmRpZ2VzdENsYXNzQ291
bnRzKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcucmV0dXJuLnVwZGF0ZUNsYXNzZXMpOgorICAg
ICAgICAodG9EZWJ1Z1N0cmluZy5yZXR1cm4ubmdDbGFzc1dhdGNoQWN0aW9uKToKKyAgICAgICAg
KHRvRGVidWdTdHJpbmcucmV0dXJuLmxpbmspOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5hcnJh
eURpZmZlcmVuY2UpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5hcnJheUNsYXNzZXMpOgorICAg
ICAgICAodG9EZWJ1Z1N0cmluZy5uZ0Nsb2FrRGlyZWN0aXZlLm5nRGlyZWN0aXZlKToKKyAgICAg
ICAgKHRvRGVidWdTdHJpbmcubmdDb250cm9sbGVyRGlyZWN0aXZlKToKKyAgICAgICAgKHRvRGVi
dWdTdHJpbmcucmV0dXJuLmNsZWFudXBMYXN0SW5jbHVkZUNvbnRlbnQpOgorICAgICAgICAodG9E
ZWJ1Z1N0cmluZy5uZ0luaXREaXJlY3RpdmUubmdEaXJlY3RpdmUuKToKKyAgICAgICAgKHRvRGVi
dWdTdHJpbmcubmdJbml0RGlyZWN0aXZlLm5nRGlyZWN0aXZlKToKKyAgICAgICAgKHRvRGVidWdT
dHJpbmcucmV0dXJuLnBhcnNlKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcucmV0dXJuLmN0cmwu
aXNFbXB0eSk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLm5nTGlzdERpcmVjdGl2ZSk6CisgICAg
ICAgICh0b0RlYnVnU3RyaW5nLm5nTW9kZWxHZXQpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5u
Z01vZGVsU2V0KToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcudGhpcy5zZXRPcHRpb25zKToKKyAg
ICAgICAgKHRvRGVidWdTdHJpbmcudGhpcy5pc0VtcHR5KToKKyAgICAgICAgKHRvRGVidWdTdHJp
bmcuc2V0IHRoaXMuc2V0UHJpc3RpbmUpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy50aGlzLnNl
dERpcnR5KToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcudGhpcy5zZXRVbnRvdWNoZWQpOgorICAg
ICAgICAodG9EZWJ1Z1N0cmluZy50aGlzLnNldFRvdWNoZWQpOgorICAgICAgICAodG9EZWJ1Z1N0
cmluZy50aGlzLnJvbGxiYWNrVmlld1ZhbHVlKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcudGhp
cy52YWxpZGF0ZSk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLnByb2Nlc3NQYXJzZUVycm9ycyk6
CisgICAgICAgICh0b0RlYnVnU3RyaW5nLnByb2Nlc3NTeW5jVmFsaWRhdG9ycyk6CisgICAgICAg
ICh0b0RlYnVnU3RyaW5nLnByb2Nlc3NBc3luY1ZhbGlkYXRvcnMuKToKKyAgICAgICAgKHRvRGVi
dWdTdHJpbmcucHJvY2Vzc0FzeW5jVmFsaWRhdG9ycyk6CisgICAgICAgICh0b0RlYnVnU3RyaW5n
LnNldFZhbGlkaXR5KToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcudmFsaWRhdGlvbkRvbmUpOgor
ICAgICAgICAodG9EZWJ1Z1N0cmluZy50aGlzLnJ1blZhbGlkYXRvcnMpOgorICAgICAgICAodG9E
ZWJ1Z1N0cmluZy50aGlzLmNvbW1pdFZpZXdWYWx1ZSk6CisgICAgICAgICh0b0RlYnVnU3RyaW5n
LnRoaXMucGFyc2VBbmRWYWxpZGF0ZSk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLnRoaXMud3Jp
dGVNb2RlbFRvU2NvcGUpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy50aGlzLnNldFZpZXdWYWx1
ZSk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLnRoaXMuZGVib3VuY2VWaWV3VmFsdWVDb21taXQp
OgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5zZXQgdGhpcyk6CisgICAgICAgICh0b0RlYnVnU3Ry
aW5nLnJldHVybi5jb21waWxlLm5nTW9kZWxDb21waWxlLnJldHVybi5wcmUpOgorICAgICAgICAo
dG9EZWJ1Z1N0cmluZy5yZXR1cm4uY29tcGlsZS5uZ01vZGVsQ29tcGlsZS5yZXR1cm4ucG9zdCk6
CisgICAgICAgICh0b0RlYnVnU3RyaW5nLm5nTW9kZWxPcHRpb25zRGlyZWN0aXZlKToKKyAgICAg
ICAgKHRvRGVidWdTdHJpbmcuYWRkU2V0VmFsaWRpdHlNZXRob2QuY3JlYXRlQW5kU2V0KToKKyAg
ICAgICAgKHRvRGVidWdTdHJpbmcuYWRkU2V0VmFsaWRpdHlNZXRob2Quc2V0IHVuc2V0QW5kQ2xl
YW51cCk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLmFkZFNldFZhbGlkaXR5TWV0aG9kLmNhY2hl
ZFRvZ2dsZUNsYXNzKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuYWRkU2V0VmFsaWRpdHlNZXRo
b2QudG9nZ2xlVmFsaWRhdGlvbkNzcyk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLmdldFRyYWNr
QnlWYWx1ZSk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLk9wdGlvbik6CisgICAgICAgICh0b0Rl
YnVnU3RyaW5nLmdldE9wdGlvblZhbHVlc0tleXMpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5y
ZXR1cm4ucmV0dXJuLmdldE9wdGlvbkZyb21WaWV3VmFsdWUpOgorICAgICAgICAodG9EZWJ1Z1N0
cmluZy5yZXR1cm4ucmV0dXJuLmdldFZpZXdWYWx1ZUZyb21PcHRpb24pOgorICAgICAgICAodG9E
ZWJ1Z1N0cmluZy5yZXR1cm4uZ2V0T3B0aW9ucyk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLnBh
cnNlT3B0aW9uc0V4cHJlc3Npb24pOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5yZXR1cm4ucmVu
ZGVyRW1wdHlPcHRpb24pOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5yZXR1cm4ucmVtb3ZlRW1w
dHlPcHRpb24pOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5yZXR1cm4ucmVuZGVyVW5rbm93bk9w
dGlvbik6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLnJldHVybi5yZW1vdmVVbmtub3duT3B0aW9u
KToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcucmV0dXJuLnNlbGVjdEN0cmwud3JpdGVWYWx1ZSk6
CisgICAgICAgICh0b0RlYnVnU3RyaW5nLnJldHVybi5zZWxlY3RDdHJsLnJlYWRWYWx1ZSk6Cisg
ICAgICAgICh0b0RlYnVnU3RyaW5nLnJldHVybi5lbHNlLm5nTW9kZWxDdHJsLmlzRW1wdHkpOgor
ICAgICAgICAodG9EZWJ1Z1N0cmluZy5yZXR1cm4uZWxzZS5zZWxlY3RDdHJsLndyaXRlVmFsdWUp
OgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5yZXR1cm4uZWxzZS5zZWxlY3RDdHJsLnJlYWRWYWx1
ZSk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLnJldHVybi51cGRhdGVPcHRpb25FbGVtZW50KToK
KyAgICAgICAgKHRvRGVidWdTdHJpbmcucmV0dXJuLmFkZE9yUmV1c2VFbGVtZW50KToKKyAgICAg
ICAgKHRvRGVidWdTdHJpbmcucmV0dXJuLnJlbW92ZUV4Y2Vzc0VsZW1lbnRzKToKKyAgICAgICAg
KHRvRGVidWdTdHJpbmcucmV0dXJuLnNraXBFbXB0eUFuZFVua25vd25PcHRpb25zKToKKyAgICAg
ICAgKHRvRGVidWdTdHJpbmcucmV0dXJuLnVwZGF0ZU9wdGlvbnMpOgorICAgICAgICAodG9EZWJ1
Z1N0cmluZy51cGRhdGVTY29wZSk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLmdldEJsb2NrU3Rh
cnQpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5nZXRCbG9ja0VuZCk6CisgICAgICAgICh0b0Rl
YnVnU3RyaW5nLnJldHVybi5lbHNlLnRyYWNrQnlJZEFycmF5Rm4pOgorICAgICAgICAodG9EZWJ1
Z1N0cmluZy5yZXR1cm4uZWxzZS50cmFja0J5SWRPYmpGbik6CisgICAgICAgICh0b0RlYnVnU3Ry
aW5nLnJldHVybi50cmFja0J5SWRFeHBGbik6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLnJldHVy
bi5yZXR1cm4ubmdSZXBlYXRMaW5rKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcucmV0dXJuLm5n
U3dpdGNoQ29udHJvbGxlcik6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLnJldHVybi5zcGxpY2VG
YWN0b3J5KToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcubmdTd2l0Y2hXaGVuRGlyZWN0aXZlLm5n
RGlyZWN0aXZlKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcubmdTd2l0Y2hEZWZhdWx0RGlyZWN0
aXZlLm5nRGlyZWN0aXZlKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcubmdUcmFuc2NsdWRlRGly
ZWN0aXZlLm5nRGlyZWN0aXZlLik6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLm5nVHJhbnNjbHVk
ZURpcmVjdGl2ZS5uZ0RpcmVjdGl2ZSk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLnNlbGYucmVu
ZGVyVW5rbm93bk9wdGlvbik6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLnNlbGYucmVtb3ZlVW5r
bm93bk9wdGlvbik6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLnNlbGYucmVhZFZhbHVlKToKKyAg
ICAgICAgKHRvRGVidWdTdHJpbmcuc2VsZi53cml0ZVZhbHVlKToKKyAgICAgICAgKHRvRGVidWdT
dHJpbmcuc2VsZi5hZGRPcHRpb24pOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5zZWxmLnJlbW92
ZU9wdGlvbik6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLnNlbGYuaGFzT3B0aW9uKToKKyAgICAg
ICAgKHRvRGVidWdTdHJpbmcucmV0dXJuLm5nTW9kZWxDdHJsLnJlbmRlcik6CisgICAgICAgICh0
b0RlYnVnU3RyaW5nLnJldHVybi5uZ01vZGVsQ3RybC5pc0VtcHR5KToKKyAgICAgICAgKHRvRGVi
dWdTdHJpbmcuc2VsZWN0RGlyZWN0aXZlKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcuY2hyb21l
SGFjayk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLnJldHVybi5jdHJsLnZhbGlkYXRvcnMucmVx
dWlyZWQpOgorICAgICAgICAodG9EZWJ1Z1N0cmluZy5yZXF1aXJlZERpcmVjdGl2ZSk6CisgICAg
ICAgICh0b0RlYnVnU3RyaW5nLnJldHVybi5jdHJsLnZhbGlkYXRvcnMucGF0dGVybik6CisgICAg
ICAgICh0b0RlYnVnU3RyaW5nLnBhdHRlcm5EaXJlY3RpdmUpOgorICAgICAgICAodG9EZWJ1Z1N0
cmluZy5yZXR1cm4uY3RybC52YWxpZGF0b3JzLm1heGxlbmd0aCk6CisgICAgICAgICh0b0RlYnVn
U3RyaW5nLm1heGxlbmd0aERpcmVjdGl2ZSk6CisgICAgICAgICh0b0RlYnVnU3RyaW5nLnJldHVy
bi5jdHJsLnZhbGlkYXRvcnMubWlubGVuZ3RoKToKKyAgICAgICAgKHRvRGVidWdTdHJpbmcubWlu
bGVuZ3RoRGlyZWN0aXZlKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL25vZGVfbW9kdWxlcy9hbmd1bGFyL2Fu
Z3VsYXIubWluLmpzOiBBZGRlZC4KKyAgICAgICAgKEouRWEpOgorICAgICAgICAoSi5tKToKKyAg
ICAgICAgKEoub2MpOgorICAgICAgICAoSi5wYyk6CisgICAgICAgIChKLlVkKToKKyAgICAgICAg
KEoucWMpOgorICAgICAgICAoSi5OYik6CisgICAgICAgIChKLlApOgorICAgICAgICAoSi5WZCk6
CisgICAgICAgIChKLlcpOgorICAgICAgICAoSi5PYik6CisgICAgICAgIChKLnYpOgorICAgICAg
ICAoSi5ZYSk6CisgICAgICAgIChKLnJhKToKKyAgICAgICAgKEoucmMpOgorICAgICAgICAoSi5B
KToKKyAgICAgICAgKEoudyk6CisgICAgICAgIChKLkgpOgorICAgICAgICAoSi5uYyk6CisgICAg
ICAgIChKLkwpOgorICAgICAgICAoSi5WKToKKyAgICAgICAgKEouYWEpOgorICAgICAgICAoSi56
KToKKyAgICAgICAgKEouWmEpOgorICAgICAgICAoSi5XYSk6CisgICAgICAgIChKLmEpOgorICAg
ICAgICAoSi5hYik6CisgICAgICAgIChKLnRjKToKKyAgICAgICAgKEouV2QpOgorICAgICAgICAo
Si50YSk6CisgICAgICAgIChKLmJiKToKKyAgICAgICAgKEouZmEpOgorICAgICAgICAoSi5pYSk6
CisgICAgICAgIChKLmthKToKKyAgICAgICAgKEouY2IpOgorICAgICAgICAoSi4pOgorICAgICAg
ICAoSi52Yyk6CisgICAgICAgIChKLlhkKToKKyAgICAgICAgKEouZGIpOgorICAgICAgICAoSi53
Yyk6CisgICAgICAgIChKLnhjKToKKyAgICAgICAgKEouUGIpOgorICAgICAgICAoSi51YSk6Cisg
ICAgICAgIChKLnljKToKKyAgICAgICAgKEouemMpOgorICAgICAgICAoSi5RYik6CisgICAgICAg
IChKLm9iKToKKyAgICAgICAgKEoubWEpOgorICAgICAgICAoSik6CisgICAgICAgIChKLlpkKToK
KyAgICAgICAgKEouZCk6CisgICAgICAgIChKLmNhLnJlc3VtZUJvb3RzdHJhcCk6CisgICAgICAg
IChKLmFlKToKKyAgICAgICAgKEouQmMpOgorICAgICAgICAoSi5jZS4pOgorICAgICAgICAoSi5T
Yik6CisgICAgICAgIChKLlFhKToKKyAgICAgICAgKEouUmEpOgorICAgICAgICAoSi5EYyk6Cisg
ICAgICAgIChKLnFiKToKKyAgICAgICAgKEouZ2EpOgorICAgICAgICAoSi5kZS5hKToKKyAgICAg
ICAgKEouZGUuKToKKyAgICAgICAgKEouZGUpOgorICAgICAgICAoSi5NYyk6CisgICAgICAgIChK
Lk5jKToKKyAgICAgICAgKEouUSk6CisgICAgICAgIChKLlZiKToKKyAgICAgICAgKEoudGIpOgor
ICAgICAgICAoSi5QYyk6CisgICAgICAgIChKLnViKToKKyAgICAgICAgKEouV2IpOgorICAgICAg
ICAoSi53Yik6CisgICAgICAgIChKLnhiKToKKyAgICAgICAgKEoueWIpOgorICAgICAgICAoSi5P
Yyk6CisgICAgICAgIChKLlFjKToKKyAgICAgICAgKEouemIpOgorICAgICAgICAoSi5SYyk6Cisg
ICAgICAgIChKLlhiKToKKyAgICAgICAgKEouRWYpOgorICAgICAgICAoSi5TYyk6CisgICAgICAg
IChKLkZmKToKKyAgICAgICAgKEouYy5pc0RlZmF1bHRQcmV2ZW50ZWQpOgorICAgICAgICAoSi5j
LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbik6CisgICAgICAgIChKLmMuaXNJbW1lZGlhdGVQcm9w
YWdhdGlvblN0b3BwZWQpOgorICAgICAgICAoSi5jKToKKyAgICAgICAgKEouR2YpOgorICAgICAg
ICAoSi52Zi4pOgorICAgICAgICAoSi52Zi50aGlzKToKKyAgICAgICAgKEoudmYpOgorICAgICAg
ICAoSi50aGlzLm5leHRVaWQpOgorICAgICAgICAoSi5TYSk6CisgICAgICAgIChKLkhmKToKKyAg
ICAgICAgKEouZSk6CisgICAgICAgIChKLmYpOgorICAgICAgICAoSi5nZXQgZyk6CisgICAgICAg
IChKLnJldHVybi5pbnN0YW50aWF0ZSk6CisgICAgICAgIChKLnJldHVybi5oYXMpOgorICAgICAg
ICAoSi5yZXR1cm4uZ2V0IGQpOgorICAgICAgICAoSi5yLnByb3ZpZGUuYyk6CisgICAgICAgIChK
LnIucHJvdmlkZS5kZWNvcmF0b3IpOgorICAgICAgICAoSi5oKToKKyAgICAgICAgKEouZWIpOgor
ICAgICAgICAoSi5SZS50aGlzLmRpc2FibGVBdXRvU2Nyb2xsaW5nKToKKyAgICAgICAgKEouUmUu
ZSk6CisgICAgICAgIChKLlJlLmYpOgorICAgICAgICAoSi5SZS5nKToKKyAgICAgICAgKEouUmUu
KToKKyAgICAgICAgKEouUmUpOgorICAgICAgICAoSi5qYik6CisgICAgICAgIChKLklmKToKKyAg
ICAgICAgKEouSWEpOgorICAgICAgICAoSi5nKToKKyAgICAgICAgKEoubC5pbmNPdXRzdGFuZGlu
Z1JlcXVlc3RDb3VudCk6CisgICAgICAgIChKLmwubm90aWZ5V2hlbk5vT3V0c3RhbmRpbmdSZXF1
ZXN0cyk6CisgICAgICAgIChKLmwudXJsKToKKyAgICAgICAgKEoubC5zdGF0ZSk6CisgICAgICAg
IChKLmwub25VcmxDaGFuZ2UpOgorICAgICAgICAoSi5sLmFwcGxpY2F0aW9uRGVzdHJveWVkKToK
KyAgICAgICAgKEoubC5iYXNlSHJlZik6CisgICAgICAgIChKLmwuZGVmZXIpOgorICAgICAgICAo
Si5sLmRlZmVyLmNhbmNlbCk6CisgICAgICAgIChKLlZlKToKKyAgICAgICAgKEouV2UuZSk6Cisg
ICAgICAgIChKLldlLik6CisgICAgICAgIChKLldlLnJldHVybi5hLmIucHV0KToKKyAgICAgICAg
KEouV2UucmV0dXJuLmEuYi5nZXQgaWYpOgorICAgICAgICAoSi5XZS5yZXR1cm4uYS5iKToKKyAg
ICAgICAgKEouV2UucmV0dXJuLmEuYi5yZW1vdmUpOgorICAgICAgICAoSi5XZS5yZXR1cm4uYS5i
LnJlbW92ZUFsbCk6CisgICAgICAgIChKLldlLnJldHVybi5hLmIuZGVzdHJveSk6CisgICAgICAg
IChKLldlLnJldHVybi5hLmIuaW5mbyk6CisgICAgICAgIChKLldlLmIuaW5mbyk6CisgICAgICAg
IChKLldlLmIpOgorICAgICAgICAoSi5XZS50aGlzKToKKyAgICAgICAgKEouV2UpOgorICAgICAg
ICAoSi5wZik6CisgICAgICAgIChKLnRoaXMuZGlyZWN0aXZlKToKKyAgICAgICAgKEoudGhpcy5h
SHJlZlNhbml0aXphdGlvbldoaXRlbGlzdCk6CisgICAgICAgIChKLnRoaXMuaW1nU3JjU2FuaXRp
emF0aW9uV2hpdGVsaXN0KToKKyAgICAgICAgKEoudGhpcy5kZWJ1Z0luZm9FbmFibGVkKToKKyAg
ICAgICAgKEouRCk6CisgICAgICAgIChKLlopOgorICAgICAgICAoSi5TKToKKyAgICAgICAgKEou
dmEpOgorICAgICAgICAoSi5ZYyk6CisgICAgICAgIChKLm4pOgorICAgICAgICAoSi5CKToKKyAg
ICAgICAgKEoueCk6CisgICAgICAgIChKLnMpOgorICAgICAgICAoSi5FKToKKyAgICAgICAgKEou
YWQpOgorICAgICAgICAoSi5KKToKKyAgICAgICAgKEouTyk6CisgICAgICAgIChKLmQuYS5wdXNo
Lik6CisgICAgICAgIChKLmQuYS5wdXNoKToKKyAgICAgICAgKEoueGEpOgorICAgICAgICAoSi5j
LnB1c2guKToKKyAgICAgICAgKEouYy5wdXNoKToKKyAgICAgICAgKEouWCk6CisgICAgICAgIChK
LlkpOgorICAgICAgICAoSi5hYS5wcm90b3R5cGUuYWRkQ2xhc3MpOgorICAgICAgICAoSi5hYS5w
cm90b3R5cGUucmVtb3ZlQ2xhc3MpOgorICAgICAgICAoSi5hYS5wcm90b3R5cGUudXBkYXRlQ2xh
c3MpOgorICAgICAgICAoSi5hYS5wcm90b3R5cGUuc2V0IHZhcik6CisgICAgICAgIChKLmFhLnBy
b3RvdHlwZSk6CisgICAgICAgIChKLmFhLnByb3RvdHlwZS5vYnNlcnZlKToKKyAgICAgICAgKEou
ZmEuc3RyaW5nX2FwcGVhcmVkX2hlcmUuY2Euc3RyaW5nX2FwcGVhcmVkX2hlcmUuZGEuWWEpOgor
ICAgICAgICAoSi5FYyk6CisgICAgICAgIChKLndhKToKKyAgICAgICAgKEouYmQpOgorICAgICAg
ICAoSi5YZS50aGlzLnJlZ2lzdGVyKToKKyAgICAgICAgKEouWGUudGhpcy5hbGxvd0dsb2JhbHMp
OgorICAgICAgICAoSi5YZS5lKToKKyAgICAgICAgKEouWGUpOgorICAgICAgICAoSi5ZZSk6Cisg
ICAgICAgIChKLlplKToKKyAgICAgICAgKEouWmIpOgorICAgICAgICAoSi5jZi4pOgorICAgICAg
ICAoSi5jZi50aGlzKToKKyAgICAgICAgKEouY2YpOgorICAgICAgICAoSi5kZi4pOgorICAgICAg
ICAoSi5kZi5hKToKKyAgICAgICAgKEouZGYudGhpcyk6CisgICAgICAgIChKLmRmKToKKyAgICAg
ICAgKEouYik6CisgICAgICAgIChKLmRkKToKKyAgICAgICAgKEouZWQpOgorICAgICAgICAoSi5m
ZCk6CisgICAgICAgIChKLmJmLmIudGhpcy5kZWZhdWx0cy50cmFuc2Zvcm1SZXF1ZXN0KToKKyAg
ICAgICAgKEouYmYudGhpcy51c2VBcHBseUFzeW5jKToKKyAgICAgICAgKEouYmYuay5jKToKKyAg
ICAgICAgKEouYmYuay5kKToKKyAgICAgICAgKEouYmYuay5lLmhlYWRlcnMpOgorICAgICAgICAo
Si5iZi5rLmYpOgorICAgICAgICAoSi5iZi5rLmcuc3VjY2Vzcyk6CisgICAgICAgIChKLmJmLmsu
Zy5lcnJvcik6CisgICAgICAgIChKLmJmLmspOgorICAgICAgICAoSi5iZi5mKToKKyAgICAgICAg
KEouYmYubCk6CisgICAgICAgIChKLmJmLik6CisgICAgICAgIChKLmJmLm0pOgorICAgICAgICAo
Si5iZi5uKToKKyAgICAgICAgKEouYmYucik6CisgICAgICAgIChKLmJmKToKKyAgICAgICAgKEou
UmYpOgorICAgICAgICAoSi5lZik6CisgICAgICAgIChKLkMpOgorICAgICAgICAoSi5GKToKKyAg
ICAgICAgKEouZC51KToKKyAgICAgICAgKEouZWxzZS5LLm9ubG9hZCk6CisgICAgICAgIChKLmVs
c2UuZSk6CisgICAgICAgIChKLlNmKToKKyAgICAgICAgKEouZS50aGlzLnN0YXJ0U3ltYm9sKToK
KyAgICAgICAgKEouZS50aGlzLmVuZFN5bWJvbCk6CisgICAgICAgIChKLmUuZik6CisgICAgICAg
IChKLmUuZyk6CisgICAgICAgIChKLmUudSk6CisgICAgICAgIChKLmUuUyk6CisgICAgICAgIChK
LmUuKToKKyAgICAgICAgKEouZS5oKToKKyAgICAgICAgKEouZS5oLnN0YXJ0U3ltYm9sKToKKyAg
ICAgICAgKEouZS5oLmVuZFN5bWJvbCk6CisgICAgICAgIChKLmFmLmUpOgorICAgICAgICAoSi5h
Zi5lLmNhbmNlbCk6CisgICAgICAgIChKLmFmKToKKyAgICAgICAgKEouZ2UucmV0dXJuLnBsdXJh
bENhdCk6CisgICAgICAgIChKLmdlLnRoaXMpOgorICAgICAgICAoSi5nZSk6CisgICAgICAgIChK
LmJjKToKKyAgICAgICAgKEouaGQpOgorICAgICAgICAoSi5pZCk6CisgICAgICAgIChKLkphKToK
KyAgICAgICAgKEouQmIpOgorICAgICAgICAoSi5jYyk6CisgICAgICAgIChKLnRoaXMucGFyc2Up
OgorICAgICAgICAoSi50aGlzLmNvbXBvc2UpOgorICAgICAgICAoSi50aGlzLnBhcnNlTGlua1Vy
bCk6CisgICAgICAgIChKLmRjKToKKyAgICAgICAgKEouZWMpOgorICAgICAgICAoSi5qZCk6Cisg
ICAgICAgIChKLkRiKToKKyAgICAgICAgKEoua2QpOgorICAgICAgICAoSi5mZi50aGlzLmhhc2hQ
cmVmaXgpOgorICAgICAgICAoSi5mZi50aGlzLmh0bWw1TW9kZSk6CisgICAgICAgIChKLmZmLmgp
OgorICAgICAgICAoSi5mZi5sKToKKyAgICAgICAgKEouZmYuKToKKyAgICAgICAgKEouZmYpOgor
ICAgICAgICAoSi5nZi50aGlzLmRlYnVnRW5hYmxlZCk6CisgICAgICAgIChKLmdmLmQpOgorICAg
ICAgICAoSi5nZi5lKToKKyAgICAgICAgKEouZ2YucmV0dXJuLmRlYnVnKToKKyAgICAgICAgKEou
Z2YpOgorICAgICAgICAoSi5DYSk6CisgICAgICAgIChKLm9hKToKKyAgICAgICAgKEoubGQpOgor
ICAgICAgICAoSi5YZik6CisgICAgICAgIChKLm1kKToKKyAgICAgICAgKEouVCk6CisgICAgICAg
IChKLm9kKToKKyAgICAgICAgKEoucGQpOgorICAgICAgICAoSi5xZCk6CisgICAgICAgIChKLnNk
KToKKyAgICAgICAgKEouRWIpOgorICAgICAgICAoSi5GYik6CisgICAgICAgIChKLmZjKToKKyAg
ICAgICAgKEouaGYuZSk6CisgICAgICAgIChKLmhmLmYpOgorICAgICAgICAoSi5oZi4pOgorICAg
ICAgICAoSi5oZi5rKToKKyAgICAgICAgKEouaGYpOgorICAgICAgICAoSi5rZik6CisgICAgICAg
IChKLmxmKToKKyAgICAgICAgKEouZC5wcm90b3R5cGUudGhlbik6CisgICAgICAgIChKLmQucHJv
dG90eXBlLnN0cmluZ19hcHBlYXJlZF9oZXJlKToKKyAgICAgICAgKEouZy5wcm90b3R5cGUucmVz
b2x2ZSk6CisgICAgICAgIChKLmcucHJvdG90eXBlLnJlamVjdCk6CisgICAgICAgIChKLmcucHJv
dG90eXBlLm5vdGlmeSk6CisgICAgICAgIChKLmwpOgorICAgICAgICAoSi5rKToKKyAgICAgICAg
KEoucik6CisgICAgICAgIChKLnIuZGVmZXIpOgorICAgICAgICAoSi5yLnJlamVjdCk6CisgICAg
ICAgIChKLnIuYWxsKToKKyAgICAgICAgKEoudGQpOgorICAgICAgICAoSi51Zi5jKToKKyAgICAg
ICAgKEoudWYuZCk6CisgICAgICAgIChKLnVmLik6CisgICAgICAgIChKLnVmKToKKyAgICAgICAg
KEouamYuYi5iKToKKyAgICAgICAgKEouamYuYik6CisgICAgICAgIChKLmpmLnRoaXMuZGlnZXN0
VHRsKToKKyAgICAgICAgKEouamYuayk6CisgICAgICAgIChKLmpmLm4pOgorICAgICAgICAoSi5q
Zi5yKToKKyAgICAgICAgKEouamYucyk6CisgICAgICAgIChKLmpmLik6CisgICAgICAgIChKLmpm
LkYpOgorICAgICAgICAoSi5qZi51Lm51bGwuZSk6CisgICAgICAgIChKLmpmLnUpOgorICAgICAg
ICAoSi5qZi5uLnByb3RvdHlwZS5uZXcpOgorICAgICAgICAoSi5qZi5uLnByb3RvdHlwZS4pOgor
ICAgICAgICAoSi5qZi5uLnByb3RvdHlwZS53YXRjaEdyb3VwKToKKyAgICAgICAgKEouamYubi5w
cm90b3R5cGUud2F0Y2hDb2xsZWN0aW9uKToKKyAgICAgICAgKEouamYubi5wcm90b3R5cGUuZGln
ZXN0KToKKyAgICAgICAgKEouamYubi5wcm90b3R5cGUudGhpcy5vbi50aGlzLndhdGNoLnRoaXMu
d2F0Y2hHcm91cCk6CisgICAgICAgIChKLmpmLm4ucHJvdG90eXBlLmRlc3Ryb3kpOgorICAgICAg
ICAoSi5qZi5uLnByb3RvdHlwZS5ldmFsKToKKyAgICAgICAgKEouamYubi5wcm90b3R5cGUuZXZh
bEFzeW5jKToKKyAgICAgICAgKEouamYubi5wcm90b3R5cGUucG9zdERpZ2VzdCk6CisgICAgICAg
IChKLmpmLm4ucHJvdG90eXBlLmFwcGx5KToKKyAgICAgICAgKEouamYubi5wcm90b3R5cGUuYXBw
bHlBc3luYyk6CisgICAgICAgIChKLmpmLm4ucHJvdG90eXBlLm9uKToKKyAgICAgICAgKEouamYu
bi5wcm90b3R5cGUuaC5zdG9wUHJvcGFnYXRpb24pOgorICAgICAgICAoSi5qZi5uLnByb3RvdHlw
ZS5oLnByZXZlbnREZWZhdWx0KToKKyAgICAgICAgKEouamYubi5wcm90b3R5cGUuZW1pdCk6Cisg
ICAgICAgIChKLmpmLm4ucHJvdG90eXBlLmUucHJldmVudERlZmF1bHQpOgorICAgICAgICAoSi5q
Zi5uLnByb3RvdHlwZS5icm9hZGNhc3QpOgorICAgICAgICAoSi5oZS50aGlzLmFIcmVmU2FuaXRp
emF0aW9uV2hpdGVsaXN0KToKKyAgICAgICAgKEouaGUudGhpcy5pbWdTcmNTYW5pdGl6YXRpb25X
aGl0ZWxpc3QpOgorICAgICAgICAoSi5oZS50aGlzKToKKyAgICAgICAgKEouaGUpOgorICAgICAg
ICAoSi5aZik6CisgICAgICAgIChKLnZkKToKKyAgICAgICAgKEoubmYudGhpcy5yZXNvdXJjZVVy
bFdoaXRlbGlzdCk6CisgICAgICAgIChKLm5mLnRoaXMucmVzb3VyY2VVcmxCbGFja2xpc3QpOgor
ICAgICAgICAoSi5uZi5kKToKKyAgICAgICAgKEoubmYuZS50aGlzLnVud3JhcFRydXN0ZWRWYWx1
ZSk6CisgICAgICAgIChKLm5mLmUuYik6CisgICAgICAgIChKLm5mLmUuYi5wcm90b3R5cGUudmFs
dWVPZik6CisgICAgICAgIChKLm5mLmUuYi5wcm90b3R5cGUudG9TdHJpbmcpOgorICAgICAgICAo
Si5uZi5lKToKKyAgICAgICAgKEoubmYuZik6CisgICAgICAgIChKLm5mLnJldHVybi50cnVzdEFz
KToKKyAgICAgICAgKEoubmYucmV0dXJuLmdldFRydXN0ZWQpOgorICAgICAgICAoSi5uZi5yZXR1
cm4udmFsdWVPZik6CisgICAgICAgIChKLm5mKToKKyAgICAgICAgKEoubWYudGhpcy5lbmFibGVk
KToKKyAgICAgICAgKEoubWYuZC5pc0VuYWJsZWQpOgorICAgICAgICAoSi5tZi5iKToKKyAgICAg
ICAgKEoubWYuZC5wYXJzZUFzKToKKyAgICAgICAgKEoubWYuKToKKyAgICAgICAgKEoubWYpOgor
ICAgICAgICAoSi5vZi5yZXR1cm4uaGFzRXZlbnQpOgorICAgICAgICAoSi5vZik6CisgICAgICAg
IChKLnFmLmUpOgorICAgICAgICAoSi5xZik6CisgICAgICAgIChKLnJmLnJldHVybi4pOgorICAg
ICAgICAoSi5yZi5yZXR1cm4uZmluZEJpbmRpbmdzKToKKyAgICAgICAgKEoucmYucmV0dXJuLmZp
bmRNb2RlbHMpOgorICAgICAgICAoSi5yZi5yZXR1cm4uZ2V0TG9jYXRpb24pOgorICAgICAgICAo
Si5yZi5yZXR1cm4uc2V0TG9jYXRpb24pOgorICAgICAgICAoSi5yZi5yZXR1cm4ud2hlblN0YWJs
ZSk6CisgICAgICAgIChKLnJmKToKKyAgICAgICAgKEouc2YuZik6CisgICAgICAgIChKLnNmLmYu
Y2FuY2VsKToKKyAgICAgICAgKEouc2YpOgorICAgICAgICAoSi5CYSk6CisgICAgICAgIChKLmdk
KToKKyAgICAgICAgKEoudGYpOgorICAgICAgICAoSi54ZC5hKToKKyAgICAgICAgKEoueGQpOgor
ICAgICAgICAoSi54Zik6CisgICAgICAgIChKLkxjLmEpOgorICAgICAgICAoSi5MYyk6CisgICAg
ICAgIChKLjAuYS5hLmthLnopOgorICAgICAgICAoSi5lZyk6CisgICAgICAgIChKLkxhKToKKyAg
ICAgICAgKEouaWMpOgorICAgICAgICAoSi55ZCk6CisgICAgICAgIChKLkFkKToKKyAgICAgICAg
KEouQ2QpOgorICAgICAgICAoSi5HYik6CisgICAgICAgIChKLkhiKToKKyAgICAgICAgKEouRWQp
OgorICAgICAgICAoSi5qYyk6CisgICAgICAgIChKLnpkLmEpOgorICAgICAgICAoSi56ZCk6Cisg
ICAgICAgIChKLmFnKToKKyAgICAgICAgKEouYmcpOgorICAgICAgICAoSi5CZC4pOgorICAgICAg
ICAoSi5CZC5hKToKKyAgICAgICAgKEouQmQuZ2V0IGMpOgorICAgICAgICAoSi5CZCk6CisgICAg
ICAgIChKLk1hKToKKyAgICAgICAgKEouZi5yb2xsYmFja1ZpZXdWYWx1ZSk6CisgICAgICAgIChK
LmYuY29tbWl0Vmlld1ZhbHVlKToKKyAgICAgICAgKEouZi5hZGRDb250cm9sKToKKyAgICAgICAg
KEouZi5yZW5hbWVDb250cm9sKToKKyAgICAgICAgKEouZi5yZW1vdmVDb250cm9sKToKKyAgICAg
ICAgKEouSGQpOgorICAgICAgICAoSi5zZXQgZi5zZXREaXJ0eSk6CisgICAgICAgIChKLmYuc2V0
UHJpc3RpbmUpOgorICAgICAgICAoSi5mLnNldFVudG91Y2hlZCk6CisgICAgICAgIChKLmYuc2V0
U3VibWl0dGVkKToKKyAgICAgICAgKEoua2MpOgorICAgICAgICAoSi5lbHNlLmspOgorICAgICAg
ICAoSi5lbHNlLm4pOgorICAgICAgICAoSi5kLnJlbmRlcik6CisgICAgICAgIChKLmgudmFsaWRh
dG9ycy5taW4pOgorICAgICAgICAoSi5oLnZhbGlkYXRvcnMubWF4KToKKyAgICAgICAgKEoubGIp
OgorICAgICAgICAoSi5yZXR1cm4uKToKKyAgICAgICAgKEoucmV0dXJuLmspOgorICAgICAgICAo
Si5yZXR1cm4ubGluayk6CisgICAgICAgIChKLmxjKToKKyAgICAgICAgKEouSGQuYSk6CisgICAg
ICAgIChKLkhkLmQuc2V0VmFsaWRpdHkpOgorICAgICAgICAoSi5MZCk6CisgICAgICAgIChKLk0p
OgorICAgICAgICAoSi5yYik6CisgICAgICAgIChKLlIpOgorICAgICAgICAoSi51ZCk6CisgICAg
ICAgIChKLmZiKToKKyAgICAgICAgKEoucGIpOgorICAgICAgICAoSi5RLl9kYXRhKToKKyAgICAg
ICAgKEouUGEuUS5wcm90b3R5cGUuKToKKyAgICAgICAgKEouUGEuUS5wcm90b3R5cGUucmVhZHkp
OgorICAgICAgICAoSi5QYS5RLnByb3RvdHlwZS50b1N0cmluZyk6CisgICAgICAgIChKLlBhLlEu
cHJvdG90eXBlLmVxKToKKyAgICAgICAgKEoubS4pOgorICAgICAgICAoSi5TYS5wcm90b3R5cGUu
cHV0KToKKyAgICAgICAgKEouU2EucHJvdG90eXBlLnJlbW92ZSk6CisgICAgICAgIChKLnRoaXMp
OgorICAgICAgICAoSi53Zik6CisgICAgICAgIChKLmViLmFubm90YXRlKToKKyAgICAgICAgKEou
VWUpOgorICAgICAgICAoSi5yZXR1cm4ucHVzaCk6CisgICAgICAgIChKLlRlKToKKyAgICAgICAg
KEoudGhpcy5yZWdpc3Rlcik6CisgICAgICAgIChKLnRoaXMuY2xhc3NOYW1lRmlsdGVyKToKKyAg
ICAgICAgKEoucmV0dXJuLmNhbmNlbCk6CisgICAgICAgIChKLnJldHVybi5lbnRlcik6CisgICAg
ICAgIChKLnJldHVybi5tb3ZlKToKKyAgICAgICAgKEoucmV0dXJuLmxlYXZlKToKKyAgICAgICAg
KEoucmV0dXJuLmFkZENsYXNzKToKKyAgICAgICAgKEoucmV0dXJuLnJlbW92ZUNsYXNzKToKKyAg
ICAgICAgKEoucmV0dXJuLnNldENsYXNzKToKKyAgICAgICAgKEoucmV0dXJuLmFuaW1hdGUpOgor
ICAgICAgICAoSi5XYyk6CisgICAgICAgIChKLlNhLnByb3RvdHlwZS5nZXQgcmV0dXJuKToKKyAg
ICAgICAgKEouU2EucHJvdG90eXBlKToKKyAgICAgICAgKEouS2EudGhyb3dOb2NvbmNhdCk6Cisg
ICAgICAgIChKLkthLmludGVycik6CisgICAgICAgIChKLnBnLnVybCk6CisgICAgICAgIChKLnNl
dCBmKToKKyAgICAgICAgKEoucGcuc2VhcmNoKToKKyAgICAgICAgKEoucGcucmVwbGFjZSk6Cisg
ICAgICAgIChKLkdkKToKKyAgICAgICAgKEouYS5wcm90b3R5cGUuc3RhdGUpOgorICAgICAgICAo
Si5nYyk6CisgICAgICAgIChKLmdjLnByb3RvdHlwZS5sZXgpOgorICAgICAgICAoSi5nYy5wcm90
b3R5cGUuaXMpOgorICAgICAgICAoSi5nYy5wcm90b3R5cGUucGVlayk6CisgICAgICAgIChKLmdj
LnByb3RvdHlwZS5pc051bWJlcik6CisgICAgICAgIChKLmdjLnByb3RvdHlwZS5pc1doaXRlc3Bh
Y2UpOgorICAgICAgICAoSi5nYy5wcm90b3R5cGUuaXNJZGVudCk6CisgICAgICAgIChKLmdjLnBy
b3RvdHlwZS5pc0V4cE9wZXJhdG9yKToKKyAgICAgICAgKEouZ2MucHJvdG90eXBlLnRocm93RXJy
b3IpOgorICAgICAgICAoSi5nYy5wcm90b3R5cGUucmVhZE51bWJlcik6CisgICAgICAgIChKLmdj
LnByb3RvdHlwZS5yZWFkSWRlbnQpOgorICAgICAgICAoSi5nYy5wcm90b3R5cGUucmVhZFN0cmlu
Zyk6CisgICAgICAgIChKLnEpOgorICAgICAgICAoSi5xLnByb3RvdHlwZS5hc3QpOgorICAgICAg
ICAoSi5xLnByb3RvdHlwZS5wcm9ncmFtKToKKyAgICAgICAgKEoucS5wcm90b3R5cGUuZXhwcmVz
c2lvblN0YXRlbWVudCk6CisgICAgICAgIChKLnEucHJvdG90eXBlLmZpbHRlckNoYWluKToKKyAg
ICAgICAgKEoucS5wcm90b3R5cGUuZXhwcmVzc2lvbik6CisgICAgICAgIChKLnEucHJvdG90eXBl
LmFzc2lnbm1lbnQpOgorICAgICAgICAoSi5xLnByb3RvdHlwZS50ZXJuYXJ5KToKKyAgICAgICAg
KEoucS5wcm90b3R5cGUubG9naWNhbE9SKToKKyAgICAgICAgKEoucS5wcm90b3R5cGUubG9naWNh
bEFORCk6CisgICAgICAgIChKLnEucHJvdG90eXBlLmVxdWFsaXR5KToKKyAgICAgICAgKEoucS5w
cm90b3R5cGUucmVsYXRpb25hbCk6CisgICAgICAgIChKLnEucHJvdG90eXBlLmFkZGl0aXZlKToK
KyAgICAgICAgKEoucS5wcm90b3R5cGUubXVsdGlwbGljYXRpdmUpOgorICAgICAgICAoSi5xLnBy
b3RvdHlwZS51bmFyeSk6CisgICAgICAgIChKLnEucHJvdG90eXBlLnByaW1hcnkpOgorICAgICAg
ICAoSi5xLnByb3RvdHlwZS5maWx0ZXIpOgorICAgICAgICAoSi5xLnByb3RvdHlwZS5wYXJzZUFy
Z3VtZW50cyk6CisgICAgICAgIChKLnEucHJvdG90eXBlLmlkZW50aWZpZXIpOgorICAgICAgICAo
Si5xLnByb3RvdHlwZS5jb25zdGFudCk6CisgICAgICAgIChKLnEucHJvdG90eXBlLmFycmF5RGVj
bGFyYXRpb24pOgorICAgICAgICAoSi5xLnByb3RvdHlwZS5vYmplY3QpOgorICAgICAgICAoSi5x
LnByb3RvdHlwZS50aHJvd0Vycm9yKToKKyAgICAgICAgKEoucS5wcm90b3R5cGUuY29uc3VtZSk6
CisgICAgICAgIChKLnEucHJvdG90eXBlLnBlZWtUb2tlbik6CisgICAgICAgIChKLnEucHJvdG90
eXBlLnBlZWspOgorICAgICAgICAoSi5xLnByb3RvdHlwZS5wZWVrQWhlYWQpOgorICAgICAgICAo
Si5xLnByb3RvdHlwZS5leHBlY3QpOgorICAgICAgICAoSi5yZC5wcm90b3R5cGUuY29tcGlsZSk6
CisgICAgICAgIChKLnJkLnByb3RvdHlwZS53YXRjaEZucyk6CisgICAgICAgIChKLnJkLnByb3Rv
dHlwZS5nZW5lcmF0ZUZ1bmN0aW9uKToKKyAgICAgICAgKEoucmQucHJvdG90eXBlLmZpbHRlclBy
ZWZpeCk6CisgICAgICAgIChKLnJkLnByb3RvdHlwZS52YXJzUHJlZml4KToKKyAgICAgICAgKEou
cmQucHJvdG90eXBlLmJvZHkpOgorICAgICAgICAoSi5yZC5wcm90b3R5cGUuZWxzZS5zd2l0Y2gu
YS50eXBlLik6CisgICAgICAgIChKLnJkLnByb3RvdHlwZS5yZWN1cnNlKToKKyAgICAgICAgKEou
cmQucHJvdG90eXBlLmdldEhhc093blByb3BlcnR5KToKKyAgICAgICAgKEoucmQucHJvdG90eXBl
LmFzc2lnbik6CisgICAgICAgIChKLnJkLnByb3RvdHlwZS5maWx0ZXIpOgorICAgICAgICAoSi5y
ZC5wcm90b3R5cGUuaWZEZWZpbmVkKToKKyAgICAgICAgKEoucmQucHJvdG90eXBlLnBsdXMpOgor
ICAgICAgICAoSi5yZC5wcm90b3R5cGUucmV0dXJuXyk6CisgICAgICAgIChKLnJkLnByb3RvdHlw
ZS5pZl8pOgorICAgICAgICAoSi5yZC5wcm90b3R5cGUubm90KToKKyAgICAgICAgKEoucmQucHJv
dG90eXBlLm5vdE51bGwpOgorICAgICAgICAoSi5yZC5wcm90b3R5cGUubm9uQ29tcHV0ZWRNZW1i
ZXIpOgorICAgICAgICAoSi5yZC5wcm90b3R5cGUuY29tcHV0ZWRNZW1iZXIpOgorICAgICAgICAo
Si5yZC5wcm90b3R5cGUubWVtYmVyKToKKyAgICAgICAgKEoucmQucHJvdG90eXBlLmFkZEVuc3Vy
ZVNhZmVPYmplY3QpOgorICAgICAgICAoSi5yZC5wcm90b3R5cGUuYWRkRW5zdXJlU2FmZU1lbWJl
ck5hbWUpOgorICAgICAgICAoSi5yZC5wcm90b3R5cGUuYWRkRW5zdXJlU2FmZUZ1bmN0aW9uKToK
KyAgICAgICAgKEoucmQucHJvdG90eXBlLmVuc3VyZVNhZmVPYmplY3QpOgorICAgICAgICAoSi5y
ZC5wcm90b3R5cGUuZW5zdXJlU2FmZU1lbWJlck5hbWUpOgorICAgICAgICAoSi5yZC5wcm90b3R5
cGUuZW5zdXJlU2FmZUZ1bmN0aW9uKToKKyAgICAgICAgKEoucmQucHJvdG90eXBlLmxhenlSZWN1
cnNlKToKKyAgICAgICAgKEoucmQucHJvdG90eXBlLmxhenlBc3NpZ24pOgorICAgICAgICAoSi5y
ZC5wcm90b3R5cGUuc3RyaW5nRXNjYXBlRm4pOgorICAgICAgICAoSi5yZC5wcm90b3R5cGUuZXNj
YXBlKToKKyAgICAgICAgKEoucmQucHJvdG90eXBlLm5leHRJZCk6CisgICAgICAgIChKLnJkLnBy
b3RvdHlwZS5jdXJyZW50KToKKyAgICAgICAgKEouc2QucHJvdG90eXBlLjEuZS5ib2R5Lmxlbmd0
aC5sLjApOgorICAgICAgICAoSi5zZC5wcm90b3R5cGUuZy5mLmFzc2lnbik6CisgICAgICAgIChK
LnNkLnByb3RvdHlwZS5jb21waWxlKToKKyAgICAgICAgKEouc2QucHJvdG90eXBlLnN3aXRjaC5h
LnR5cGUpOgorICAgICAgICAoSi5zZC5wcm90b3R5cGUucmVjdXJzZSk6CisgICAgICAgIChKLnNk
LnByb3RvdHlwZS5zdHJpbmdfYXBwZWFyZWRfaGVyZSk6CisgICAgICAgIChKLnNkLnByb3RvdHlw
ZS52YWx1ZSk6CisgICAgICAgIChKLnNkLnByb3RvdHlwZS5pZGVudGlmaWVyKToKKyAgICAgICAg
KEouc2QucHJvdG90eXBlLmNvbXB1dGVkTWVtYmVyKToKKyAgICAgICAgKEouc2QucHJvdG90eXBl
Lm5vbkNvbXB1dGVkTWVtYmVyKToKKyAgICAgICAgKEouc2QucHJvdG90eXBlLmlucHV0cyk6Cisg
ICAgICAgIChKLmhjKToKKyAgICAgICAgKEouaGMucHJvdG90eXBlLnBhcnNlKToKKyAgICAgICAg
KEouaGcuYSk6CisgICAgICAgIChKLmhnLlopOgorICAgICAgICAoSi5oZy5HR0dHKToKKyAgICAg
ICAgKEouaWUucmEuKToKKyAgICAgICAgKEouaWUucmEpOgorICAgICAgICAoSi5JYi5yZW5hbWVD
b250cm9sKToKKyAgICAgICAgKEoucmV0dXJuLnJldHVybi5uKToKKyAgICAgICAgKEoucmV0dXJu
LnJldHVybi5wcmUpOgorICAgICAgICAoSi5yZXR1cm4uY29tcGlsZSk6CisgICAgICAgIChKLk9k
KToKKyAgICAgICAgKEouVGQudGV4dCk6CisgICAgICAgIChKLlRkLmUudmFsaWRhdG9ycy5taW4p
OgorICAgICAgICAoSi5UZC5lLnZhbGlkYXRvcnMubWF4KToKKyAgICAgICAgKEouVGQubnVtYmVy
KToKKyAgICAgICAgKEouVGQuZS52YWxpZGF0b3JzLnVybCk6CisgICAgICAgIChKLlRkLnVybCk6
CisgICAgICAgIChKLlRkLmUudmFsaWRhdG9ycy5lbWFpbCk6CisgICAgICAgIChKLlRkLmVtYWls
KToKKyAgICAgICAgKEouVGQuZS5yZW5kZXIpOgorICAgICAgICAoSi5UZC5yYWRpbyk6CisgICAg
ICAgIChKLlRkLmUuaXNFbXB0eSk6CisgICAgICAgIChKLlRkLmNoZWNrYm94KToKKyAgICAgICAg
KEoucmV0dXJuLmxpbmsucHJlKToKKyAgICAgICAgKEouT2UpOgorICAgICAgICAoSi5OZS5yYS4p
OgorICAgICAgICAoSi5OZS5yYSk6CisgICAgICAgIChKLnVlLk1hKToKKyAgICAgICAgKEoudmUp
OgorICAgICAgICAoSi5yZXR1cm4udik6CisgICAgICAgIChKLkFlLk1hLik6CisgICAgICAgIChK
LkFlLk1hKToKKyAgICAgICAgKEoucmV0dXJuLmUuaXNFbXB0eSk6CisgICAgICAgIChKLk1lKToK
KyAgICAgICAgKEoudGhpcy5zZXRPcHRpb25zKToKKyAgICAgICAgKEoudGhpcy5pc0VtcHR5KToK
KyAgICAgICAgKEouc2V0IHRoaXMuc2V0UHJpc3RpbmUpOgorICAgICAgICAoSi50aGlzLnNldERp
cnR5KToKKyAgICAgICAgKEoudGhpcy5zZXRVbnRvdWNoZWQpOgorICAgICAgICAoSi50aGlzLnNl
dFRvdWNoZWQpOgorICAgICAgICAoSi50aGlzLnJvbGxiYWNrVmlld1ZhbHVlKToKKyAgICAgICAg
KEoudGhpcy52YWxpZGF0ZSk6CisgICAgICAgIChKLmYuKToKKyAgICAgICAgKEoudGhpcy5ydW5W
YWxpZGF0b3JzKToKKyAgICAgICAgKEoudGhpcy5jb21taXRWaWV3VmFsdWUpOgorICAgICAgICAo
Si50aGlzLnBhcnNlQW5kVmFsaWRhdGUpOgorICAgICAgICAoSi50aGlzLndyaXRlTW9kZWxUb1Nj
b3BlKToKKyAgICAgICAgKEoudGhpcy5zZXRWaWV3VmFsdWUpOgorICAgICAgICAoSi50aGlzLmRl
Ym91bmNlVmlld1ZhbHVlQ29tbWl0KToKKyAgICAgICAgKEouc2V0IHRoaXMpOgorICAgICAgICAo
Si5yZXR1cm4ucmV0dXJuLnBvc3QpOgorICAgICAgICAoSi5QZSk6CisgICAgICAgIChKLnJldHVy
bi5yZXR1cm4uZ2V0T3B0aW9uRnJvbVZpZXdWYWx1ZSk6CisgICAgICAgIChKLnJldHVybi5yZXR1
cm4uZ2V0Vmlld1ZhbHVlRnJvbU9wdGlvbik6CisgICAgICAgIChKLnJldHVybi5nZXRPcHRpb25z
KToKKyAgICAgICAgKEoucmV0dXJuLnMpOgorICAgICAgICAoSi5yZXR1cm4ucSk6CisgICAgICAg
IChKLnJldHVybi50KToKKyAgICAgICAgKEoucmV0dXJuLnEudS5hKToKKyAgICAgICAgKEoucmV0
dXJuLnUpOgorICAgICAgICAoSi5yZXR1cm4ubik6CisgICAgICAgIChKLkhlLk1hKToKKyAgICAg
ICAgKEouSWUuTWEpOgorICAgICAgICAoSi5LZS5NYS4pOgorICAgICAgICAoSi5LZS5NYSk6Cisg
ICAgICAgIChKLmUucmVuZGVyVW5rbm93bk9wdGlvbik6CisgICAgICAgIChKLmUucmVtb3ZlVW5r
bm93bk9wdGlvbik6CisgICAgICAgIChKLmUucmVhZFZhbHVlKToKKyAgICAgICAgKEouZS53cml0
ZVZhbHVlKToKKyAgICAgICAgKEouZS5hZGRPcHRpb24pOgorICAgICAgICAoSi5lLnJlbW92ZU9w
dGlvbik6CisgICAgICAgIChKLmUuaGFzT3B0aW9uKToKKyAgICAgICAgKEoucmV0dXJuLmYucmVu
ZGVyKToKKyAgICAgICAgKEoucmV0dXJuLmcucmVhZFZhbHVlKToKKyAgICAgICAgKEoucmV0dXJu
Lmcud3JpdGVWYWx1ZSk6CisgICAgICAgIChKLnJldHVybi5mLmlzRW1wdHkpOgorICAgICAgICAo
Si5sZSk6CisgICAgICAgIChKLkhjKToKKyAgICAgICAgKEoucmV0dXJuLmUudmFsaWRhdG9ycy5w
YXR0ZXJuKToKKyAgICAgICAgKEouR2MpOgorICAgICAgICAoSi5yZXR1cm4uZS52YWxpZGF0b3Jz
Lm1heGxlbmd0aCk6CisgICAgICAgIChKLkpjKToKKyAgICAgICAgKEoucmV0dXJuLmUudmFsaWRh
dG9ycy5taW5sZW5ndGgpOgorICAgICAgICAoSi5JYyk6CisgICAgICAgICogU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ub2RlX21v
ZHVsZXMvYW5ndWxhci9hbmd1bGFyLm1pbi5qcy5nemlwOiBBZGRlZC4KKyAgICAgICAgKiBTcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpz
L25vZGVfbW9kdWxlcy9hbmd1bGFyL2FuZ3VsYXIubWluLmpzLm1hcDogQWRkZWQuCisgICAgICAg
ICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2Fu
Z3VsYXJqcy9ub2RlX21vZHVsZXMvYW5ndWxhci9ib3dlci5qc29uOiBBZGRlZC4KKyAgICAgICAg
KiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5n
dWxhcmpzL25vZGVfbW9kdWxlcy9hbmd1bGFyL2luZGV4LmpzOiBBZGRlZC4KKyAgICAgICAgKiBT
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxh
cmpzL25vZGVfbW9kdWxlcy9hbmd1bGFyL3BhY2thZ2UuanNvbjogQWRkZWQuCisgICAgICAgICog
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3Vs
YXJqcy9ub2RlX21vZHVsZXMvdG9kb212Yy1hcHAtY3NzL2luZGV4LmNzczogQWRkZWQuCisgICAg
ICAgIChodG1sLCk6CisgICAgICAgIChidXR0b24pOgorICAgICAgICAoYm9keSk6CisgICAgICAg
IChidXR0b24sKToKKyAgICAgICAgKC5oaWRkZW4pOgorICAgICAgICAoI3RvZG9hcHApOgorICAg
ICAgICAoI3RvZG9hcHAgaW5wdXQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIpOgorICAgICAg
ICAoI3RvZG9hcHAgaW5wdXQ6Oi1tb3otcGxhY2Vob2xkZXIpOgorICAgICAgICAoI3RvZG9hcHAg
aW5wdXQ6OmlucHV0LXBsYWNlaG9sZGVyKToKKyAgICAgICAgKCN0b2RvYXBwIGgxKToKKyAgICAg
ICAgKCNuZXctdG9kbywpOgorICAgICAgICAoI25ldy10b2RvKToKKyAgICAgICAgKCNtYWluKToK
KyAgICAgICAgKGxhYmVsW2Zvcj0ndG9nZ2xlLWFsbCddKToKKyAgICAgICAgKCN0b2dnbGUtYWxs
KToKKyAgICAgICAgKCN0b2dnbGUtYWxsOmJlZm9yZSk6CisgICAgICAgICgjdG9nZ2xlLWFsbDpj
aGVja2VkOmJlZm9yZSk6CisgICAgICAgICgjdG9kby1saXN0KToKKyAgICAgICAgKCN0b2RvLWxp
c3QgbGkpOgorICAgICAgICAoI3RvZG8tbGlzdCBsaTpsYXN0LWNoaWxkKToKKyAgICAgICAgKCN0
b2RvLWxpc3QgbGkuZWRpdGluZyk6CisgICAgICAgICgjdG9kby1saXN0IGxpLmVkaXRpbmcgLmVk
aXQpOgorICAgICAgICAoI3RvZG8tbGlzdCBsaS5lZGl0aW5nIC52aWV3KToKKyAgICAgICAgKCN0
b2RvLWxpc3QgbGkgLnRvZ2dsZSk6CisgICAgICAgICgjdG9kby1saXN0IGxpIC50b2dnbGU6YWZ0
ZXIpOgorICAgICAgICAoI3RvZG8tbGlzdCBsaSAudG9nZ2xlOmNoZWNrZWQ6YWZ0ZXIpOgorICAg
ICAgICAoI3RvZG8tbGlzdCBsaSBsYWJlbCk6CisgICAgICAgICgjdG9kby1saXN0IGxpLmNvbXBs
ZXRlZCBsYWJlbCk6CisgICAgICAgICgjdG9kby1saXN0IGxpIC5kZXN0cm95KToKKyAgICAgICAg
KCN0b2RvLWxpc3QgbGkgLmRlc3Ryb3k6aG92ZXIpOgorICAgICAgICAoI3RvZG8tbGlzdCBsaSAu
ZGVzdHJveTphZnRlcik6CisgICAgICAgICgjdG9kby1saXN0IGxpOmhvdmVyIC5kZXN0cm95KToK
KyAgICAgICAgKCN0b2RvLWxpc3QgbGkgLmVkaXQpOgorICAgICAgICAoI3RvZG8tbGlzdCBsaS5l
ZGl0aW5nOmxhc3QtY2hpbGQpOgorICAgICAgICAoI2Zvb3Rlcik6CisgICAgICAgICgjZm9vdGVy
OmJlZm9yZSk6CisgICAgICAgICgjdG9kby1jb3VudCk6CisgICAgICAgICgjdG9kby1jb3VudCBz
dHJvbmcpOgorICAgICAgICAoI2ZpbHRlcnMpOgorICAgICAgICAoI2ZpbHRlcnMgbGkpOgorICAg
ICAgICAoI2ZpbHRlcnMgbGkgYSk6CisgICAgICAgICgjZmlsdGVycyBsaSBhLnNlbGVjdGVkLCk6
CisgICAgICAgICgjZmlsdGVycyBsaSBhLnNlbGVjdGVkKToKKyAgICAgICAgKCNjbGVhci1jb21w
bGV0ZWQsKToKKyAgICAgICAgKCNjbGVhci1jb21wbGV0ZWQ6aG92ZXIpOgorICAgICAgICAoI2lu
Zm8pOgorICAgICAgICAoI2luZm8gcCk6CisgICAgICAgICgjaW5mbyBhKToKKyAgICAgICAgKCNp
bmZvIGE6aG92ZXIpOgorICAgICAgICAoQG1lZGlhIHNjcmVlbiBhbmQgKC13ZWJraXQtbWluLWRl
dmljZS1waXhlbC1yYXRpbzowKSk6CisgICAgICAgICgjdG9nZ2xlLWFsbCwpOgorICAgICAgICAo
QG1lZGlhIChtYXgtd2lkdGg6IDQzMHB4KSk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ub2RlX21vZHVsZXMv
dG9kb212Yy1hcHAtY3NzL3BhY2thZ2UuanNvbjogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ub2Rl
X21vZHVsZXMvdG9kb212Yy1hcHAtY3NzL3JlYWRtZS5tZDogQWRkZWQuCisgICAgICAgICogU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJq
cy9ub2RlX21vZHVsZXMvdG9kb212Yy1jb21tb24vYmFzZS5jc3M6IEFkZGVkLgorICAgICAgICAo
aHIpOgorICAgICAgICAoLmxlYXJuIGEpOgorICAgICAgICAoLmxlYXJuIGE6aG92ZXIpOgorICAg
ICAgICAoLmxlYXJuIGgzLCk6CisgICAgICAgICgubGVhcm4gaDMpOgorICAgICAgICAoLmxlYXJu
IGg0KToKKyAgICAgICAgKC5sZWFybiBoNSk6CisgICAgICAgICgubGVhcm4gdWwpOgorICAgICAg
ICAoLmxlYXJuIGxpKToKKyAgICAgICAgKC5sZWFybiBwKToKKyAgICAgICAgKCNpc3N1ZS1jb3Vu
dCk6CisgICAgICAgICgucXVvdGUpOgorICAgICAgICAoLnF1b3RlIHApOgorICAgICAgICAoLnF1
b3RlIHA6YmVmb3JlKToKKyAgICAgICAgKC5xdW90ZSBwOmFmdGVyKToKKyAgICAgICAgKC5xdW90
ZSBmb290ZXIpOgorICAgICAgICAoLnF1b3RlIGZvb3RlciBpbWcpOgorICAgICAgICAoLnF1b3Rl
IGZvb3RlciBhKToKKyAgICAgICAgKC5zcGVlY2gtYnViYmxlKToKKyAgICAgICAgKC5zcGVlY2gt
YnViYmxlOmFmdGVyKToKKyAgICAgICAgKC5sZWFybi1iYXIgPiAubGVhcm4pOgorICAgICAgICAo
QG1lZGlhIChtaW4td2lkdGg6IDg5OXB4KSk6CisgICAgICAgICgubGVhcm4tYmFyKToKKyAgICAg
ICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
YW5ndWxhcmpzL25vZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1vbi9iYXNlLmpzOiBDb3BpZWQgZnJv
bSBQZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2RlcGVuZGVu
Y3ktZXhhbXBsZXMvZmxpZ2h0L2Jvd2VyX2NvbXBvbmVudHMvdG9kb212Yy1jb21tb24vYmFzZS5q
cy4KKyAgICAgICAgKF8uZGVmYXVsdHMpOgorICAgICAgICAodGVtcGxhdGUpOgorICAgICAgICAo
ZXNjYXBlci5fLnRlbXBsYXRlKToKKyAgICAgICAgKF8pOgorICAgICAgICAobG9jYXRpb24uaG9z
dG5hbWUuc3RyaW5nX2FwcGVhcmVkX2hlcmUuaS5yLmkucik6CisgICAgICAgIChyZWRpcmVjdCk6
CisgICAgICAgIChmaW5kUm9vdCk6CisgICAgICAgICh4aHIub25sb2FkKToKKyAgICAgICAgKGdl
dEZpbGUpOgorICAgICAgICAoTGVhcm4pOgorICAgICAgICAoTGVhcm4ucHJvdG90eXBlLmFwcGVu
ZCk6CisgICAgICAgIChMZWFybi5wcm90b3R5cGUuZmV0Y2hJc3N1ZUNvdW50KToKKyAgICAgICAg
KiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5n
dWxhcmpzL25vZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1vbi9wYWNrYWdlLmpzb246IEFkZGVkLgor
ICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9hbmd1bGFyanMvbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL3JlYWRtZS5tZDogQWRk
ZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2FuZ3VsYXJqcy9wYWNrYWdlLmpzb246IEFkZGVkLgorICAgICAgICAqIFNwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMv
cmVhZG1lLm1kOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvdGVzdC9jb25maWcva2FybWEuY29uZi5qczogQWRk
ZWQuCisgICAgICAgIChtb2R1bGUuZXhwb3J0cyk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy90ZXN0L2NvbmZp
Zy90ZXN0YWN1bGFyLmNvbmYuanM6IFJlbW92ZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy90ZXN0L3BhY2th
Z2UuanNvbjogUmVtb3ZlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL3Rlc3QvcmVhZG1lLm1kOiBSZW1vdmVk
LgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9hbmd1bGFyanMvdGVzdC91bml0L2RpcmVjdGl2ZXNTcGVjLmpzOgorICAgICAgICAo
YmVmb3JlRWFjaC5pbmplY3QpOgorICAgICAgICAoc2NvcGUuYXBwbHkpOgorICAgICAgICAobW9j
ay5jYWxsKTogRGVsZXRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL3Rlc3QvdW5pdC90b2RvQ3RybFNwZWMu
anM6CisgICAgICAgIChiZWZvcmVFYWNoLmluamVjdC5sb2NhbFN0b3JhZ2UuX2dldEZyb21Mb2Nh
bFN0b3JhZ2UpOgorICAgICAgICAoYmVmb3JlRWFjaC5pbmplY3QubG9jYWxTdG9yYWdlLl9zYXZl
VG9Mb2NhbFN0b3JhZ2UpOgorICAgICAgICAoYmVmb3JlRWFjaC5pbmplY3QpOgorICAgICAgICAo
aW5qZWN0KToKKyAgICAgICAgKHRvZG9TdG9yYWdlLnB1dCk6IERlbGV0ZWQuCisgICAgICAgICgp
OiBEZWxldGVkLgorICAgICAgICAodG9kb1N0b3JhZ2UuZ2V0IHJldHVybik6IERlbGV0ZWQuCisg
ICAgICAgICh0b2RvU3RvcmFnZSk6IERlbGV0ZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy90b2RvbXZjLWlu
ZGV4Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ib3dlci5qc29uOiBSZW1vdmVkLgorICAg
ICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9iYWNrYm9uZS9ib3dlcl9jb21wb25lbnRzL2JhY2tib25lLmxvY2FsU3RvcmFnZS9iYWNrYm9u
ZS5sb2NhbFN0b3JhZ2UuanM6IFJlbW92ZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL2Jvd2VyX2NvbXBvbmVu
dHMvanF1ZXJ5L2pxdWVyeS5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvYm93ZXJfY29tcG9u
ZW50cy90b2RvbXZjLWNvbW1vbi9iYXNlLmNzczogUmVtb3ZlZC4KKyAgICAgICAgKiBTcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvYm93
ZXJfY29tcG9uZW50cy90b2RvbXZjLWNvbW1vbi9iYXNlLmpzOiBSZW1vdmVkLgorICAgICAgICAq
IFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNr
Ym9uZS9ib3dlcl9jb21wb25lbnRzL3RvZG9tdmMtY29tbW9uL2JnLnBuZzogUmVtb3ZlZC4KKyAg
ICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvYmFja2JvbmUvYm93ZXJfY29tcG9uZW50cy91bmRlcnNjb3JlL3VuZGVyc2NvcmUuanM6IFJl
bW92ZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2JhY2tib25lL2luZGV4Lmh0bWw6CisgICAgICAgICogU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL2pzL2FwcC5q
czoKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvYmFja2JvbmUvanMvYmFja2JvbmUuc3luYy5qczogQWRkZWQuCisgICAgICAgIChC
YWNrYm9uZS5zeW5jKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvanMvY29sbGVjdGlvbnMvdG9kb3MuanM6Cisg
ICAgICAgIChUb2Rvcy5CYWNrYm9uZS5Db2xsZWN0aW9uLmV4dGVuZC5jb21wbGV0ZWQpOgorICAg
ICAgICAoVG9kb3MuQmFja2JvbmUuQ29sbGVjdGlvbi5leHRlbmQucmVtYWluaW5nKToKKyAgICAg
ICAgKFRvZG9zLkJhY2tib25lLkNvbGxlY3Rpb24uZXh0ZW5kLm5leHRPcmRlcik6CisgICAgICAg
IChUb2Rvcy5CYWNrYm9uZS5Db2xsZWN0aW9uLmV4dGVuZC5jb21wYXJhdG9yKTogRGVsZXRlZC4K
KyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvYmFja2JvbmUvanMvbW9kZWxzL3RvZG8uanM6CisgICAgICAgIChhcHAuVG9kby5CYWNr
Ym9uZS5Nb2RlbC5leHRlbmQudG9nZ2xlKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvanMvcm91dGVycy9yb3V0
ZXIuanM6CisgICAgICAgIChUb2RvUm91dGVyLkJhY2tib25lLlJvdXRlci5leHRlbmQuc2V0Rmls
dGVyKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvYmFja2JvbmUvanMvdmlld3MvYXBwLXZpZXcuanM6CisgICAgICAgIChhcHAu
QXBwVmlldy5CYWNrYm9uZS5WaWV3LmV4dGVuZC5pbml0aWFsaXplKToKKyAgICAgICAgKGFwcC5B
cHBWaWV3LkJhY2tib25lLlZpZXcuZXh0ZW5kLnJlbmRlcik6CisgICAgICAgIChhcHAuQXBwVmll
dy5CYWNrYm9uZS5WaWV3LmV4dGVuZC5hZGRPbmUpOgorICAgICAgICAoYXBwLkFwcFZpZXcuQmFj
a2JvbmUuVmlldy5leHRlbmQuYWRkQWxsKToKKyAgICAgICAgKGFwcC5BcHBWaWV3LkJhY2tib25l
LlZpZXcuZXh0ZW5kLmZpbHRlck9uZSk6CisgICAgICAgIChhcHAuQXBwVmlldy5CYWNrYm9uZS5W
aWV3LmV4dGVuZC5maWx0ZXJBbGwpOgorICAgICAgICAoYXBwLkFwcFZpZXcuQmFja2JvbmUuVmll
dy5leHRlbmQubmV3QXR0cmlidXRlcyk6CisgICAgICAgIChhcHAuQXBwVmlldy5CYWNrYm9uZS5W
aWV3LmV4dGVuZC5jcmVhdGVPbkVudGVyKToKKyAgICAgICAgKGFwcC5BcHBWaWV3LkJhY2tib25l
LlZpZXcuZXh0ZW5kLmNsZWFyQ29tcGxldGVkKToKKyAgICAgICAgKGFwcC5BcHBWaWV3LkJhY2ti
b25lLlZpZXcuZXh0ZW5kLnRvZ2dsZUFsbENvbXBsZXRlKToKKyAgICAgICAgKiBTcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvanMvdmll
d3MvdG9kby12aWV3LmpzOgorICAgICAgICAoYXBwLlRvZG9WaWV3LkJhY2tib25lLlZpZXcuZXh0
ZW5kLmluaXRpYWxpemUpOgorICAgICAgICAoYXBwLlRvZG9WaWV3LkJhY2tib25lLlZpZXcuZXh0
ZW5kLnJlbmRlcik6CisgICAgICAgIChhcHAuVG9kb1ZpZXcuQmFja2JvbmUuVmlldy5leHRlbmQu
dG9nZ2xlVmlzaWJsZSk6CisgICAgICAgIChhcHAuVG9kb1ZpZXcuQmFja2JvbmUuVmlldy5leHRl
bmQuaXNIaWRkZW4pOgorICAgICAgICAoYXBwLlRvZG9WaWV3LkJhY2tib25lLlZpZXcuZXh0ZW5k
LnRvZ2dsZUNvbXBsZXRlZCk6CisgICAgICAgIChhcHAuVG9kb1ZpZXcuQmFja2JvbmUuVmlldy5l
eHRlbmQuZWRpdCk6CisgICAgICAgIChhcHAuVG9kb1ZpZXcuQmFja2JvbmUuVmlldy5leHRlbmQu
Y2xvc2UpOgorICAgICAgICAoYXBwLlRvZG9WaWV3LkJhY2tib25lLlZpZXcuZXh0ZW5kLnVwZGF0
ZU9uRW50ZXIpOgorICAgICAgICAoYXBwLlRvZG9WaWV3LkJhY2tib25lLlZpZXcuZXh0ZW5kLnJl
dmVydE9uRXNjYXBlKToKKyAgICAgICAgKGFwcC5Ub2RvVmlldy5CYWNrYm9uZS5WaWV3LmV4dGVu
ZC5jbGVhcik6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9iYWNrYm9uZS9MSUNFTlNFOiBB
ZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2JhY2tib25lL1JFQURNRS5tZDogQWRk
ZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9iYWNrYm9uZS9iYWNrYm9uZS1taW4uanM6
IEFkZGVkLgorICAgICAgICAoZWxzZSk6CisgICAgICAgIChlLm5vQ29uZmxpY3QpOgorICAgICAg
ICAoYSk6CisgICAgICAgIChoKToKKyAgICAgICAgKG8pOgorICAgICAgICAobCk6CisgICAgICAg
IChmKToKKyAgICAgICAgKHUub24pOgorICAgICAgICAoZCk6CisgICAgICAgICh1Lmxpc3RlblRv
KToKKyAgICAgICAgKHYpOgorICAgICAgICAodS5vZmYpOgorICAgICAgICAodS5zdG9wTGlzdGVu
aW5nKToKKyAgICAgICAgKGcpOgorICAgICAgICAodS5vbmNlKToKKyAgICAgICAgKHUubGlzdGVu
VG9PbmNlKToKKyAgICAgICAgKHApOgorICAgICAgICAodS50cmlnZ2VyKToKKyAgICAgICAgKG0p
OgorICAgICAgICAoXyk6CisgICAgICAgICh5LmUuTW9kZWwpOgorICAgICAgICAoaW5pdGlhbGl6
ZSk6CisgICAgICAgICh0b0pTT04pOgorICAgICAgICAoc3luYyk6CisgICAgICAgIChlc2NhcGUp
OgorICAgICAgICAoaGFzKToKKyAgICAgICAgKG1hdGNoZXMpOgorICAgICAgICAoc2V0IGlmKToK
KyAgICAgICAgKHVuc2V0KToKKyAgICAgICAgKGNsZWFyKToKKyAgICAgICAgKGhhc0NoYW5nZWQp
OgorICAgICAgICAoY2hhbmdlZEF0dHJpYnV0ZXMpOgorICAgICAgICAocHJldmlvdXMpOgorICAg
ICAgICAocHJldmlvdXNBdHRyaWJ1dGVzKToKKyAgICAgICAgKHQuc3VjY2Vzcyk6CisgICAgICAg
IChmZXRjaCk6CisgICAgICAgIChyLnN1Y2Nlc3MpOgorICAgICAgICAoc2F2ZSk6CisgICAgICAg
IChzKToKKyAgICAgICAgKGRlc3Ryb3kpOgorICAgICAgICAodXJsKToKKyAgICAgICAgKHBhcnNl
KToKKyAgICAgICAgKGNsb25lKToKKyAgICAgICAgKGlzTmV3KToKKyAgICAgICAgKGlzVmFsaWQp
OgorICAgICAgICAoX3ZhbGlkYXRlKToKKyAgICAgICAgKHguZS5Db2xsZWN0aW9uKToKKyAgICAg
ICAgKEkpOgorICAgICAgICAoYWRkKToKKyAgICAgICAgKHJlbW92ZSk6CisgICAgICAgIChyZXNl
dCk6CisgICAgICAgIChwdXNoKToKKyAgICAgICAgKHBvcCk6CisgICAgICAgICh1bnNoaWZ0KToK
KyAgICAgICAgKHNoaWZ0KToKKyAgICAgICAgKHNsaWNlKToKKyAgICAgICAgKGF0KToKKyAgICAg
ICAgKHdoZXJlKToKKyAgICAgICAgKGZpbmRXaGVyZSk6CisgICAgICAgIChzb3J0KToKKyAgICAg
ICAgKHBsdWNrKToKKyAgICAgICAgKGUuc3VjY2Vzcyk6CisgICAgICAgIChjcmVhdGUpOgorICAg
ICAgICAobW9kZWxJZCk6CisgICAgICAgIChfcmVzZXQpOgorICAgICAgICAoX3ByZXBhcmVNb2Rl
bCk6CisgICAgICAgIChfcmVtb3ZlTW9kZWxzKToKKyAgICAgICAgKF9pc01vZGVsKToKKyAgICAg
ICAgKF9hZGRSZWZlcmVuY2UpOgorICAgICAgICAoX3JlbW92ZVJlZmVyZW5jZSk6CisgICAgICAg
IChfb25Nb2RlbEV2ZW50KToKKyAgICAgICAgKGsuZS5WaWV3KToKKyAgICAgICAgKHJlbmRlcik6
CisgICAgICAgIChfcmVtb3ZlRWxlbWVudCk6CisgICAgICAgIChzZXRFbGVtZW50KToKKyAgICAg
ICAgKF9zZXRFbGVtZW50KToKKyAgICAgICAgKGRlbGVnYXRlRXZlbnRzKToKKyAgICAgICAgKGRl
bGVnYXRlKToKKyAgICAgICAgKHVuZGVsZWdhdGVFdmVudHMpOgorICAgICAgICAodW5kZWxlZ2F0
ZSk6CisgICAgICAgIChfY3JlYXRlRWxlbWVudCk6CisgICAgICAgIChfZW5zdXJlRWxlbWVudCk6
CisgICAgICAgIChfc2V0QXR0cmlidXRlcyk6CisgICAgICAgIChuLmVtdWxhdGVIVFRQLm4uYmVm
b3JlU2VuZCk6CisgICAgICAgIChuLmVycm9yKToKKyAgICAgICAgKGUuc3luYyk6CisgICAgICAg
IChlLmFqYXgpOgorICAgICAgICAoZS5Sb3V0ZXIpOgorICAgICAgICAoTi5lLkhpc3RvcnkpOgor
ICAgICAgICAoZWxzZS5uKToKKyAgICAgICAgKHEpOgorICAgICAgICAoRik6CisgICAgICAgIChl
LmVycm9yKToKKyAgICAgICAgKEIpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvYmFja2Jv
bmUvYmFja2JvbmUtbWluLm1hcDogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9i
YWNrYm9uZS9iYWNrYm9uZS5qczogUmVuYW1lZCBmcm9tIFBlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL2Jv
d2VyX2NvbXBvbmVudHMvYmFja2JvbmUvYmFja2JvbmUuanMuCisgICAgICAgIChlbHNlKToKKyAg
ICAgICAgKGFkZE1ldGhvZCk6CisgICAgICAgIChhZGRVbmRlcnNjb3JlTWV0aG9kcyk6CisgICAg
ICAgIChjYik6CisgICAgICAgIChtb2RlbE1hdGNoZXIpOgorICAgICAgICAoZXZlbnRzQXBpKToK
KyAgICAgICAgKEV2ZW50cy5vbik6CisgICAgICAgIChpbnRlcm5hbE9uKToKKyAgICAgICAgKEV2
ZW50cy5saXN0ZW5Ubyk6CisgICAgICAgIChvbkFwaSk6CisgICAgICAgIChFdmVudHMub2ZmKToK
KyAgICAgICAgKEV2ZW50cy5zdG9wTGlzdGVuaW5nKToKKyAgICAgICAgKG9mZkFwaSk6CisgICAg
ICAgIChFdmVudHMub25jZSk6CisgICAgICAgIChFdmVudHMubGlzdGVuVG9PbmNlKToKKyAgICAg
ICAgKG9uY2VNYXApOgorICAgICAgICAoRXZlbnRzLnRyaWdnZXIpOgorICAgICAgICAodHJpZ2dl
ckFwaSk6CisgICAgICAgICh0cmlnZ2VyRXZlbnRzKToKKyAgICAgICAgKE1vZGVsLkJhY2tib25l
Lk1vZGVsKToKKyAgICAgICAgKG1hdGNoZXMpOgorICAgICAgICAoc2V0IGlmKToKKyAgICAgICAg
KGNoYW5nZWRBdHRyaWJ1dGVzKToKKyAgICAgICAgKG9wdGlvbnMuc3VjY2Vzcyk6CisgICAgICAg
IChmZXRjaCk6CisgICAgICAgIChzYXZlKToKKyAgICAgICAgKGRlc3Ryb3kpOgorICAgICAgICAo
dXJsKToKKyAgICAgICAgKGlzTmV3KToKKyAgICAgICAgKGlzVmFsaWQpOgorICAgICAgICAoX3Zh
bGlkYXRlKToKKyAgICAgICAgKENvbGxlY3Rpb24uQmFja2JvbmUuQ29sbGVjdGlvbik6CisgICAg
ICAgIChzcGxpY2UpOgorICAgICAgICAodG9KU09OKToKKyAgICAgICAgKGFkZCk6CisgICAgICAg
IChyZW1vdmUpOgorICAgICAgICAoc2V0IHZhcik6CisgICAgICAgIChzZXQgb3JkZXJDaGFuZ2Vk
LnRoaXMubGVuZ3RoLnNldCBsZW5ndGgpOgorICAgICAgICAoc2V0IHRoaXMpOgorICAgICAgICAo
cmVzZXQpOgorICAgICAgICAocHVzaCk6CisgICAgICAgIChwb3ApOgorICAgICAgICAodW5zaGlm
dCk6CisgICAgICAgIChzaGlmdCk6CisgICAgICAgIChzbGljZSk6CisgICAgICAgIChoYXMpOgor
ICAgICAgICAoYXQpOgorICAgICAgICAod2hlcmUpOgorICAgICAgICAoc29ydCk6CisgICAgICAg
IChwbHVjayk6CisgICAgICAgIChjcmVhdGUpOgorICAgICAgICAoY2xvbmUpOgorICAgICAgICAo
bW9kZWxJZCk6CisgICAgICAgIChfcHJlcGFyZU1vZGVsKToKKyAgICAgICAgKF9yZW1vdmVNb2Rl
bHMpOgorICAgICAgICAoX2lzTW9kZWwpOgorICAgICAgICAoX2FkZFJlZmVyZW5jZSk6CisgICAg
ICAgIChfcmVtb3ZlUmVmZXJlbmNlKToKKyAgICAgICAgKF9vbk1vZGVsRXZlbnQpOgorICAgICAg
ICAoVmlldy5CYWNrYm9uZS5WaWV3KToKKyAgICAgICAgKF9yZW1vdmVFbGVtZW50KToKKyAgICAg
ICAgKHNldEVsZW1lbnQpOgorICAgICAgICAoX3NldEVsZW1lbnQpOgorICAgICAgICAoZGVsZWdh
dGVFdmVudHMpOgorICAgICAgICAoZGVsZWdhdGUpOgorICAgICAgICAodW5kZWxlZ2F0ZUV2ZW50
cyk6CisgICAgICAgICh1bmRlbGVnYXRlKToKKyAgICAgICAgKF9jcmVhdGVFbGVtZW50KToKKyAg
ICAgICAgKF9lbnN1cmVFbGVtZW50KToKKyAgICAgICAgKF9zZXRBdHRyaWJ1dGVzKToKKyAgICAg
ICAgKG9wdGlvbnMuZXJyb3IpOgorICAgICAgICAoQmFja2JvbmUuc3luYyk6CisgICAgICAgIChI
aXN0b3J5LkJhY2tib25lLkhpc3RvcnkpOgorICAgICAgICAoZXh0ZW5kKToKKyAgICAgICAgKHdy
YXBFcnJvcik6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9iYWNrYm9uZS9wYWNrYWdlLmpz
b246IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L0FVVEhPUlMudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9MSUNFTlNFLnR4dDog
QWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvUkVBRE1FLm1kOiBBZGRl
ZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9ib3dlci5qc29uOiBBZGRlZC4K
KyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9kaXN0L2NvcmUuanM6IEFkZGVkLgor
ICAgICAgICAoalF1ZXJ5KToKKyAgICAgICAgKGZjYW1lbENhc2UpOgorICAgICAgICAoalF1ZXJ5
LmZuLmpRdWVyeS5wcm90b3R5cGUudG9BcnJheSk6CisgICAgICAgIChqUXVlcnkuZm4ualF1ZXJ5
LnByb3RvdHlwZS5nZXQgaWYpOgorICAgICAgICAoalF1ZXJ5LmZuLmpRdWVyeS5wcm90b3R5cGUp
OgorICAgICAgICAoalF1ZXJ5LmZuLmpRdWVyeS5wcm90b3R5cGUucHVzaFN0YWNrKToKKyAgICAg
ICAgKGpRdWVyeS5mbi5qUXVlcnkucHJvdG90eXBlLmVhY2gpOgorICAgICAgICAoalF1ZXJ5LmZu
LmpRdWVyeS5wcm90b3R5cGUubWFwKToKKyAgICAgICAgKGpRdWVyeS5mbi5qUXVlcnkucHJvdG90
eXBlLnNsaWNlKToKKyAgICAgICAgKGpRdWVyeS5mbi5qUXVlcnkucHJvdG90eXBlLmZpcnN0KToK
KyAgICAgICAgKGpRdWVyeS5mbi5qUXVlcnkucHJvdG90eXBlLmxhc3QpOgorICAgICAgICAoalF1
ZXJ5LmZuLmpRdWVyeS5wcm90b3R5cGUuZXEpOgorICAgICAgICAoalF1ZXJ5LmZuLmpRdWVyeS5w
cm90b3R5cGUuZW5kKToKKyAgICAgICAgKGpRdWVyeS5leHRlbmQualF1ZXJ5LmZuLmV4dGVuZCk6
CisgICAgICAgIChqUXVlcnkuZXh0ZW5kLmVycm9yKToKKyAgICAgICAgKGpRdWVyeS5leHRlbmQu
bm9vcCk6CisgICAgICAgIChqUXVlcnkuZXh0ZW5kLmlzRnVuY3Rpb24pOgorICAgICAgICAoalF1
ZXJ5LmV4dGVuZC5pc1dpbmRvdyk6CisgICAgICAgIChqUXVlcnkuZXh0ZW5kLmlzTnVtZXJpYyk6
CisgICAgICAgIChqUXVlcnkuZXh0ZW5kLmlzUGxhaW5PYmplY3QpOgorICAgICAgICAoalF1ZXJ5
LmV4dGVuZC5pc0VtcHR5T2JqZWN0KToKKyAgICAgICAgKGpRdWVyeS5leHRlbmQudHlwZSk6Cisg
ICAgICAgIChqUXVlcnkuZXh0ZW5kLmdsb2JhbEV2YWwpOgorICAgICAgICAoalF1ZXJ5LmV4dGVu
ZC5jYW1lbENhc2UpOgorICAgICAgICAoalF1ZXJ5LmV4dGVuZC5ub2RlTmFtZSk6CisgICAgICAg
IChqUXVlcnkuZXh0ZW5kLmVhY2gpOgorICAgICAgICAoalF1ZXJ5LmV4dGVuZC50cmltKToKKyAg
ICAgICAgKGpRdWVyeS5leHRlbmQubWFrZUFycmF5KToKKyAgICAgICAgKGpRdWVyeS5leHRlbmQu
aW5BcnJheSk6CisgICAgICAgIChqUXVlcnkuZXh0ZW5kLm1lcmdlKToKKyAgICAgICAgKGpRdWVy
eS5leHRlbmQuZ3JlcCk6CisgICAgICAgIChqUXVlcnkuZXh0ZW5kLm1hcCk6CisgICAgICAgIChq
UXVlcnkuZXh0ZW5kLnByb3h5KToKKyAgICAgICAgKGlzQXJyYXlMaWtlKToKKyAgICAgICAgKiBT
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2Jv
bmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9kaXN0L2pxdWVyeS5qczogQ29waWVkIGZyb20gUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvZW1iZXJqcy9ib3dlcl9jb21wb25lbnRzL2pxdWVyeS9qcXVlcnkuanMuCisgICAgICAg
IChqUXVlcnkpOgorICAgICAgICAoalF1ZXJ5LmZuLmpRdWVyeS5wcm90b3R5cGUuZ2V0IGlmKToK
KyAgICAgICAgKGpRdWVyeS5mbi5qUXVlcnkucHJvdG90eXBlKToKKyAgICAgICAgKGpRdWVyeS5m
bi5qUXVlcnkucHJvdG90eXBlLnB1c2hTdGFjayk6CisgICAgICAgIChqUXVlcnkuZm4ualF1ZXJ5
LnByb3RvdHlwZS5lYWNoKToKKyAgICAgICAgKGpRdWVyeS5mbi5qUXVlcnkucHJvdG90eXBlLm1h
cCk6CisgICAgICAgIChqUXVlcnkuZm4ualF1ZXJ5LnByb3RvdHlwZS5lcSk6CisgICAgICAgIChq
UXVlcnkuZm4ualF1ZXJ5LnByb3RvdHlwZS5lbmQpOgorICAgICAgICAoalF1ZXJ5LmV4dGVuZC5q
UXVlcnkuZm4uZXh0ZW5kKToKKyAgICAgICAgKGpRdWVyeS5leHRlbmQuaXNGdW5jdGlvbik6Cisg
ICAgICAgIChqUXVlcnkuZXh0ZW5kLmlzTnVtZXJpYyk6CisgICAgICAgIChqUXVlcnkuZXh0ZW5k
LmlzUGxhaW5PYmplY3QpOgorICAgICAgICAoalF1ZXJ5LmV4dGVuZC5pc0VtcHR5T2JqZWN0KToK
KyAgICAgICAgKGpRdWVyeS5leHRlbmQudHlwZSk6CisgICAgICAgIChqUXVlcnkuZXh0ZW5kLmds
b2JhbEV2YWwpOgorICAgICAgICAoalF1ZXJ5LmV4dGVuZC5lYWNoKToKKyAgICAgICAgKGpRdWVy
eS5leHRlbmQudHJpbSk6CisgICAgICAgIChqUXVlcnkuZXh0ZW5kLm1ha2VBcnJheSk6CisgICAg
ICAgIChqUXVlcnkuZXh0ZW5kLm1hcCk6CisgICAgICAgIChpc0FycmF5TGlrZSk6CisgICAgICAg
IChpbmRleE9mKToKKyAgICAgICAgKHJuYXRpdmUuZnVuZXNjYXBlKToKKyAgICAgICAgKHJuYXRp
dmUuZmNzc2VzY2FwZSk6CisgICAgICAgIChybmF0aXZlLnVubG9hZEhhbmRsZXIpOgorICAgICAg
ICAocm5hdGl2ZS5TaXp6bGUpOgorICAgICAgICAocm5hdGl2ZS5hc3NlcnQpOgorICAgICAgICAo
cm5hdGl2ZS5hZGRIYW5kbGUpOgorICAgICAgICAocm5hdGl2ZS5zaWJsaW5nQ2hlY2spOgorICAg
ICAgICAocm5hdGl2ZS5jcmVhdGVEaXNhYmxlZFBzZXVkbyk6CisgICAgICAgIChybmF0aXZlLik6
CisgICAgICAgIChybmF0aXZlLkV4cHIuZmluZC5zdHJpbmdfYXBwZWFyZWRfaGVyZSk6CisgICAg
ICAgIChybmF0aXZlLmVsc2UuRXhwci5maWx0ZXIuc3RyaW5nX2FwcGVhcmVkX2hlcmUpOgorICAg
ICAgICAocm5hdGl2ZS5lbHNlLkV4cHIuZmluZC5zdHJpbmdfYXBwZWFyZWRfaGVyZSk6CisgICAg
ICAgIChybmF0aXZlLnNldERvY3VtZW50LlNpenpsZS5zZXREb2N1bWVudCk6CisgICAgICAgIChy
bmF0aXZlLlNpenpsZS5tYXRjaGVzU2VsZWN0b3IpOgorICAgICAgICAocm5hdGl2ZS5TaXp6bGUu
ZXNjYXBlKToKKyAgICAgICAgKHJuYXRpdmUuRXhwci5TaXp6bGUuc2VsZWN0b3JzLnByZUZpbHRl
ci5zdHJpbmdfYXBwZWFyZWRfaGVyZSk6CisgICAgICAgIChybmF0aXZlLkV4cHIuU2l6emxlLnNl
bGVjdG9ycy5maWx0ZXIuc3RyaW5nX2FwcGVhcmVkX2hlcmUpOgorICAgICAgICAocm5hdGl2ZS5F
eHByLlNpenpsZS5zZWxlY3RvcnMuZmlsdGVyLik6CisgICAgICAgIChybmF0aXZlLkV4cHIuU2l6
emxlLnNlbGVjdG9ycy5wc2V1ZG9zLik6CisgICAgICAgIChybmF0aXZlLnRva2VuaXplLlNpenps
ZS50b2tlbml6ZSk6CisgICAgICAgIChybmF0aXZlLmFkZENvbWJpbmF0b3IpOgorICAgICAgICAo
cm5hdGl2ZS5tdWx0aXBsZUNvbnRleHRzKToKKyAgICAgICAgKHJuYXRpdmUuc2V0TWF0Y2hlcik6
CisgICAgICAgIChybmF0aXZlLm1hdGNoZXJGcm9tVG9rZW5zLm1hdGNoZXJzKToKKyAgICAgICAg
KHJuYXRpdmUuc3VwZXJNYXRjaGVyKToKKyAgICAgICAgKHJuYXRpdmUubWF0Y2hlckZyb21Hcm91
cE1hdGNoZXJzKToKKyAgICAgICAgKHJuYXRpdmUuY29tcGlsZS5TaXp6bGUuY29tcGlsZSk6Cisg
ICAgICAgIChybmF0aXZlLnNlbGVjdC5TaXp6bGUuc2VsZWN0KToKKyAgICAgICAgKHJuYXRpdmUu
ZGlyKToKKyAgICAgICAgKHJuYXRpdmUuc2libGluZ3MpOgorICAgICAgICAocm5hdGl2ZSk6Cisg
ICAgICAgIChybmF0aXZlLmpRdWVyeS5maWx0ZXIpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnku
Zm4uZXh0ZW5kLmZpbmQpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5kLmZpbHRl
cik6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5mbi5leHRlbmQubm90KToKKyAgICAgICAgKHJu
YXRpdmUuaW5pdC5qUXVlcnkuZm4uaW5pdCk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5mbi5l
eHRlbmQuaGFzKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmZuLmV4dGVuZC5jbG9zZXN0KToK
KyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmZuLmV4dGVuZC5pbmRleCk6CisgICAgICAgIChybmF0
aXZlLmpRdWVyeS5mbi5leHRlbmQuYWRkKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmZuLmV4
dGVuZC5hZGRCYWNrKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmVhY2gucGFyZW50cyk6Cisg
ICAgICAgIChybmF0aXZlLmpRdWVyeS5lYWNoLnBhcmVudHNVbnRpbCk6CisgICAgICAgIChybmF0
aXZlLmpRdWVyeS5lYWNoLm5leHRBbGwpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZWFjaC5w
cmV2QWxsKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmVhY2gubmV4dFVudGlsKToKKyAgICAg
ICAgKHJuYXRpdmUualF1ZXJ5LmVhY2gucHJldlVudGlsKToKKyAgICAgICAgKHJuYXRpdmUualF1
ZXJ5LmVhY2guc2libGluZ3MpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZWFjaC5jaGlsZHJl
bik6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5mbi5uYW1lKToKKyAgICAgICAgKHJuYXRpdmUu
Y3JlYXRlT3B0aW9ucyk6CisgICAgICAgIChybmF0aXZlLmZpcmUpOgorICAgICAgICAocm5hdGl2
ZS5zZWxmLmxpc3QuYWRkKToKKyAgICAgICAgKHJuYXRpdmUuc2VsZi5hZGQpOgorICAgICAgICAo
cm5hdGl2ZS5zZWxmLnJlbW92ZSk6CisgICAgICAgIChybmF0aXZlLnNlbGYuaGFzKToKKyAgICAg
ICAgKHJuYXRpdmUuc2VsZi5lbXB0eSk6CisgICAgICAgIChybmF0aXZlLnNlbGYuZGlzYWJsZSk6
CisgICAgICAgIChybmF0aXZlLnNlbGYubG9jayk6CisgICAgICAgIChybmF0aXZlLnNlbGYubG9j
a2VkKToKKyAgICAgICAgKHJuYXRpdmUuc2VsZi5maXJlV2l0aCk6CisgICAgICAgIChybmF0aXZl
LklkZW50aXR5KToKKyAgICAgICAgKHJuYXRpdmUuVGhyb3dlcik6CisgICAgICAgIChybmF0aXZl
LmFkb3B0VmFsdWUpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZXh0ZW5kLnByb21pc2Uuc3Ry
aW5nX2FwcGVhcmVkX2hlcmUpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZXh0ZW5kLnByb21p
c2UuKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmV4dGVuZC5wcm9taXNlLnBpcGUpOgorICAg
ICAgICAocm5hdGl2ZS5qUXVlcnkuZXh0ZW5kLnByb21pc2UubWlnaHRUaHJvdyk6CisgICAgICAg
IChybmF0aXZlLmpRdWVyeS5leHRlbmQucHJvbWlzZS5wcm9jZXNzLnNwZWNpYWwubWlnaHRUaHJv
dyk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5leHRlbmQucHJvbWlzZS5yZXNvbHZlKToKKyAg
ICAgICAgKHJuYXRpdmUualF1ZXJ5LmV4dGVuZC5wcm9taXNlLnRoZW4pOgorICAgICAgICAocm5h
dGl2ZS5qUXVlcnkuZXh0ZW5kLik6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5leHRlbmQuRGVm
ZXJyZWQpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZXh0ZW5kLnVwZGF0ZUZ1bmMpOgorICAg
ICAgICAocm5hdGl2ZS5qUXVlcnkuZXh0ZW5kLndoZW4pOgorICAgICAgICAocm5hdGl2ZS5qUXVl
cnkuRGVmZXJyZWQuZXhjZXB0aW9uSG9vayk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5yZWFk
eUV4Y2VwdGlvbik6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5mbi5yZWFkeSk6CisgICAgICAg
IChybmF0aXZlLmpRdWVyeS5leHRlbmQucmVhZHkpOgorICAgICAgICAocm5hdGl2ZS5jb21wbGV0
ZWQpOgorICAgICAgICAocm5hdGl2ZS5hY2Nlc3MpOgorICAgICAgICAocm5hdGl2ZS5hY2NlcHRE
YXRhKToKKyAgICAgICAgKHJuYXRpdmUuRGF0YSk6CisgICAgICAgIChybmF0aXZlLkRhdGEucHJv
dG90eXBlLmNhY2hlKToKKyAgICAgICAgKHJuYXRpdmUuRGF0YS5wcm90b3R5cGUuc2V0IG93bmVy
KToKKyAgICAgICAgKHJuYXRpdmUuRGF0YS5wcm90b3R5cGUuZ2V0IG93bmVyKToKKyAgICAgICAg
KHJuYXRpdmUuRGF0YS5wcm90b3R5cGUuYWNjZXNzKToKKyAgICAgICAgKHJuYXRpdmUuRGF0YS5w
cm90b3R5cGUucmVtb3ZlKToKKyAgICAgICAgKHJuYXRpdmUuRGF0YS5wcm90b3R5cGUuaGFzRGF0
YSk6CisgICAgICAgIChybmF0aXZlLmdldERhdGEpOgorICAgICAgICAocm5hdGl2ZS5kYXRhQXR0
cik6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5leHRlbmQuaGFzRGF0YSk6CisgICAgICAgIChy
bmF0aXZlLmpRdWVyeS5leHRlbmQuZGF0YSk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5leHRl
bmQucmVtb3ZlRGF0YSk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5leHRlbmQuX2RhdGEpOgor
ICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZXh0ZW5kLl9yZW1vdmVEYXRhKToKKyAgICAgICAgKHJu
YXRpdmUualF1ZXJ5LmZuLmV4dGVuZC4pOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0
ZW5kLmRhdGEpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5kLnJlbW92ZURhdGEp
OgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZXh0ZW5kLnF1ZXVlKToKKyAgICAgICAgKHJuYXRp
dmUualF1ZXJ5LmV4dGVuZC5kZXF1ZXVlKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmV4dGVu
ZC5fcXVldWVIb29rcyk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5mbi5leHRlbmQucXVldWUp
OgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5kLmRlcXVldWUpOgorICAgICAgICAo
cm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5kLnByb21pc2UpOgorICAgICAgICAocm5hdGl2ZS5pc0hp
ZGRlbldpdGhpblRyZWUpOgorICAgICAgICAocm5hdGl2ZS5zd2FwKToKKyAgICAgICAgKHJuYXRp
dmUudHdlZW4pOgorICAgICAgICAocm5hdGl2ZS5hZGp1c3RDU1MpOgorICAgICAgICAocm5hdGl2
ZS5zaG93SGlkZSk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5mbi5leHRlbmQuc2hvdyk6Cisg
ICAgICAgIChybmF0aXZlLmpRdWVyeS5mbi5leHRlbmQuaGlkZSk6CisgICAgICAgIChybmF0aXZl
LmpRdWVyeS5mbi5leHRlbmQudG9nZ2xlKToKKyAgICAgICAgKHJuYXRpdmUuZ2V0QWxsKToKKyAg
ICAgICAgKHJuYXRpdmUuc2V0R2xvYmFsRXZhbCk6CisgICAgICAgIChybmF0aXZlLmJ1aWxkRnJh
Z21lbnQpOgorICAgICAgICAocm5hdGl2ZS5yZXR1cm5GYWxzZSk6CisgICAgICAgIChybmF0aXZl
LnNhZmVBY3RpdmVFbGVtZW50KToKKyAgICAgICAgKHJuYXRpdmUub25lLm9uZS4xLmZuKToKKyAg
ICAgICAgKHJuYXRpdmUub24pOgorICAgICAgICAocm5hdGl2ZS5EYXRhLnByb3RvdHlwZSk6Cisg
ICAgICAgIChybmF0aXZlLmpRdWVyeS5ldmVudC5ldmVudEhhbmRsZS5lbGVtRGF0YS5oYW5kbGUp
OgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZXZlbnQuYWRkKToKKyAgICAgICAgKHJuYXRpdmUu
alF1ZXJ5LmV2ZW50LnJlbW92ZSk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5ldmVudC5kaXNw
YXRjaCk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5ldmVudC5oYW5kbGVycyk6CisgICAgICAg
IChybmF0aXZlLmpRdWVyeS5ldmVudC5nZXQgalF1ZXJ5KToKKyAgICAgICAgKHJuYXRpdmUualF1
ZXJ5LmV2ZW50Lik6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5ldmVudC5zZXQgT2JqZWN0KToK
KyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmV2ZW50LmFkZFByb3ApOgorICAgICAgICAocm5hdGl2
ZS5qUXVlcnkuZXZlbnQuZml4KToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmV2ZW50LnNwZWNp
YWwuYmVmb3JldW5sb2FkLnBvc3REaXNwYXRjaCk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5y
ZW1vdmVFdmVudCk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5FdmVudCk6CisgICAgICAgIChy
bmF0aXZlLmpRdWVyeS5FdmVudC5wcm90b3R5cGUucHJldmVudERlZmF1bHQpOgorICAgICAgICAo
cm5hdGl2ZS5qUXVlcnkuRXZlbnQucHJvdG90eXBlLnN0b3BQcm9wYWdhdGlvbik6CisgICAgICAg
IChybmF0aXZlLmpRdWVyeS5FdmVudC5wcm90b3R5cGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9u
KToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmVhY2gpOgorICAgICAgICAocm5hdGl2ZS5qUXVl
cnkuZXZlbnQuc3BlY2lhbC5vcmlnLmhhbmRsZSk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5m
bi5leHRlbmQub24pOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5kLm9uZSk6Cisg
ICAgICAgIChybmF0aXZlLmpRdWVyeS5mbi5leHRlbmQub2ZmKToKKyAgICAgICAgKHJuYXRpdmUu
bWFuaXB1bGF0aW9uVGFyZ2V0KToKKyAgICAgICAgKHJuYXRpdmUuZGlzYWJsZVNjcmlwdCk6Cisg
ICAgICAgIChybmF0aXZlLnJlc3RvcmVTY3JpcHQpOgorICAgICAgICAocm5hdGl2ZS5jbG9uZUNv
cHlFdmVudCk6CisgICAgICAgIChybmF0aXZlLmRvbU1hbmlwKToKKyAgICAgICAgKHJuYXRpdmUu
cmVtb3ZlKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmV4dGVuZC5odG1sUHJlZmlsdGVyKToK
KyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmV4dGVuZC5jbG9uZSk6CisgICAgICAgIChybmF0aXZl
LmpRdWVyeS5leHRlbmQuY2xlYW5EYXRhKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmZuLmV4
dGVuZC5kZXRhY2gpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5kLnJlbW92ZSk6
CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5mbi5leHRlbmQudGV4dCk6CisgICAgICAgIChybmF0
aXZlLmpRdWVyeS5mbi5leHRlbmQuYXBwZW5kKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmZu
LmV4dGVuZC5wcmVwZW5kKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmZuLmV4dGVuZC5iZWZv
cmUpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5kLmFmdGVyKToKKyAgICAgICAg
KHJuYXRpdmUualF1ZXJ5LmZuLmV4dGVuZC5lbXB0eSk6CisgICAgICAgIChybmF0aXZlLmpRdWVy
eS5mbi5leHRlbmQuY2xvbmUpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5kLmh0
bWwpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5kLnJlcGxhY2VXaXRoKToKKyAg
ICAgICAgKHJuYXRpdmUuZ2V0U3R5bGVzKToKKyAgICAgICAgKHJuYXRpdmUuY29tcHV0ZVN0eWxl
VGVzdHMpOgorICAgICAgICAocm5hdGl2ZS5ob29rRm4ucmV0dXJuLmdldCBpZik6CisgICAgICAg
IChybmF0aXZlLmhvb2tGbi5yZXR1cm4pOgorICAgICAgICAocm5hdGl2ZS5hZGRHZXRIb29rSWYp
OgorICAgICAgICAocm5hdGl2ZS52ZW5kb3JQcm9wTmFtZSk6CisgICAgICAgIChybmF0aXZlLnNl
dFBvc2l0aXZlTnVtYmVyKToKKyAgICAgICAgKHJuYXRpdmUuYXVnbWVudFdpZHRoT3JIZWlnaHQp
OgorICAgICAgICAocm5hdGl2ZS5nZXRXaWR0aE9ySGVpZ2h0KToKKyAgICAgICAgKHJuYXRpdmUu
alF1ZXJ5LmV4dGVuZC5jc3NIb29rcy5vcGFjaXR5LmdldCBpZik6CisgICAgICAgIChybmF0aXZl
LmpRdWVyeS5leHRlbmQuY3NzSG9va3Mub3BhY2l0eSk6CisgICAgICAgIChybmF0aXZlLmpRdWVy
eS5leHRlbmQuc3R5bGUpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZXh0ZW5kLmNzcyk6Cisg
ICAgICAgIChybmF0aXZlLmpRdWVyeS5jc3NIb29rcy5uYW1lLmdldCBpZik6CisgICAgICAgIChy
bmF0aXZlLmpRdWVyeS5jc3NIb29rcy5uYW1lKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmNz
c0hvb2tzLm5hbWUuc2V0IHZhcik6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5jc3NIb29rcy5w
cmVmaXguc3VmZml4LmV4cGFuZCk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5mbi5leHRlbmQu
Y3NzKToKKyAgICAgICAgKHJuYXRpdmUuVHdlZW4ucHJvdG90eXBlLmluaXQpOgorICAgICAgICAo
cm5hdGl2ZS5Ud2Vlbi5wcm9wSG9va3MuX2RlZmF1bHQuZ2V0IHR3ZWVuKToKKyAgICAgICAgKHJu
YXRpdmUuVHdlZW4ucHJvcEhvb2tzLl9kZWZhdWx0LnNldCB0d2Vlbik6CisgICAgICAgIChybmF0
aXZlLmpRdWVyeS5lYXNpbmcuc3dpbmcpOgorICAgICAgICAocm5hdGl2ZS5yYWYpOgorICAgICAg
ICAocm5hdGl2ZS5jcmVhdGVGeE5vdyk6CisgICAgICAgIChybmF0aXZlLmdlbkZ4KToKKyAgICAg
ICAgKHJuYXRpdmUuY3JlYXRlVHdlZW4pOgorICAgICAgICAocm5hdGl2ZS5kZWZhdWx0UHJlZmls
dGVyKToKKyAgICAgICAgKHJuYXRpdmUucHJvcEZpbHRlcik6CisgICAgICAgIChybmF0aXZlLm9w
dGlvbnMudGljayk6CisgICAgICAgIChybmF0aXZlLm9wdGlvbnMuYW5pbWF0aW9uLmRlZmVycmVk
LnByb21pc2Uuc3RvcCk6CisgICAgICAgIChybmF0aXZlLkFuaW1hdGlvbik6CisgICAgICAgIChy
bmF0aXZlLnR3ZWVuZXJzLnN0cmluZ19hcHBlYXJlZF9oZXJlKToKKyAgICAgICAgKHJuYXRpdmUu
VHdlZW4ucHJvcEhvb2tzLnNjcm9sbFRvcC5Ud2Vlbi5wcm9wSG9va3Muc2Nyb2xsTGVmdCk6Cisg
ICAgICAgIChybmF0aXZlLnR3ZWVuZXIpOgorICAgICAgICAocm5hdGl2ZS5wcmVmaWx0ZXIpOgor
ICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5kLmZhZGVUbyk6CisgICAgICAgIChybmF0
aXZlLmpRdWVyeS5mbi5leHRlbmQuZG9BbmltYXRpb24pOgorICAgICAgICAocm5hdGl2ZS5qUXVl
cnkuZm4uZXh0ZW5kLmFuaW1hdGUpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5k
LnN0b3ApOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5kLmZpbmlzaCk6CisgICAg
ICAgIChybmF0aXZlLmpRdWVyeS5meC50aWNrKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmZ4
LnN0YXJ0KToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmZ4LnN0b3ApOgorICAgICAgICAocm5h
dGl2ZS5ob29rcy5zdG9wKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmZuLmRlbGF5KToKKyAg
ICAgICAgKHJuYXRpdmUualF1ZXJ5LmZuLmV4dGVuZC5yZW1vdmVBdHRyKToKKyAgICAgICAgKHJu
YXRpdmUualF1ZXJ5LmV4dGVuZC5hdHRyKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmV4dGVu
ZC5hdHRySG9va3MudHlwZS5zZXQgaWYpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZXh0ZW5k
LmF0dHJIb29rcy50eXBlKToKKyAgICAgICAgKHJuYXRpdmUuVHdlZW4ucHJvcEhvb2tzLl9kZWZh
dWx0KToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmV4dGVuZC5yZW1vdmVBdHRyKToKKyAgICAg
ICAgKHJuYXRpdmUuYm9vbEhvb2suc2V0IGVsZW0pOgorICAgICAgICAocm5hdGl2ZS5hdHRySGFu
ZGxlLm5hbWUpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5kLnJlbW92ZVByb3Ap
OgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZXh0ZW5kLnByb3ApOgorICAgICAgICAocm5hdGl2
ZS5qUXVlcnkuZXh0ZW5kLnByb3BIb29rcy50YWJJbmRleC5nZXQgdmFyKToKKyAgICAgICAgKHJu
YXRpdmUualF1ZXJ5LmV4dGVuZC5wcm9wSG9va3MudGFiSW5kZXgpOgorICAgICAgICAocm5hdGl2
ZS5ib29sSG9vayk6CisgICAgICAgIChybmF0aXZlLnN1cHBvcnQub3B0U2VsZWN0ZWQualF1ZXJ5
LnByb3BIb29rcy5zZWxlY3RlZC5nZXQgZWxlbSk6CisgICAgICAgIChybmF0aXZlLnN1cHBvcnQu
b3B0U2VsZWN0ZWQualF1ZXJ5LnByb3BIb29rcy5zZWxlY3RlZC5zZXQgZWxlbSk6CisgICAgICAg
IChybmF0aXZlLnN0cmlwQW5kQ29sbGFwc2UpOgorICAgICAgICAocm5hdGl2ZS5nZXRDbGFzcyk6
CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5mbi5leHRlbmQuYWRkQ2xhc3MpOgorICAgICAgICAo
cm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5kLnJlbW92ZUNsYXNzKToKKyAgICAgICAgKHJuYXRpdmUu
alF1ZXJ5LmZuLmV4dGVuZC50b2dnbGVDbGFzcyk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5m
bi5leHRlbmQuaGFzQ2xhc3MpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5kLnZh
bCk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5leHRlbmQudmFsSG9va3Muc2VsZWN0LmdldCB2
YXIpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZXh0ZW5kLnZhbEhvb2tzLnNlbGVjdCk6Cisg
ICAgICAgIChybmF0aXZlLmpRdWVyeS5leHRlbmQudmFsSG9va3Muc2VsZWN0LnNldCB2YXIpOgor
ICAgICAgICAocm5hdGl2ZS5qUXVlcnkudmFsSG9va3MudGhpcy5zZXQgaWYpOgorICAgICAgICAo
cm5hdGl2ZS5qUXVlcnkudmFsSG9va3MudGhpcyk6CisgICAgICAgIChybmF0aXZlLnRyaWdnZXIp
OgorICAgICAgICAocm5hdGl2ZS5zaW11bGF0ZSk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5m
bi5leHRlbmQudHJpZ2dlcik6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5mbi5leHRlbmQudHJp
Z2dlckhhbmRsZXIpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5kLmhvdmVyKToK
KyAgICAgICAgKHJuYXRpdmUuc3VwcG9ydC5mb2N1c2luLmhhbmRsZXIpOgorICAgICAgICAocm5h
dGl2ZS5zdXBwb3J0LmZvY3VzaW4ualF1ZXJ5LmV2ZW50LnNwZWNpYWwuZml4LnNldHVwKToKKyAg
ICAgICAgKHJuYXRpdmUuc3VwcG9ydC5mb2N1c2luLmpRdWVyeS5ldmVudC5zcGVjaWFsLmZpeC50
ZWFyZG93bik6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5wYXJzZVhNTCk6CisgICAgICAgIChy
bmF0aXZlLmJ1aWxkUGFyYW1zKToKKyAgICAgICAgKHJuYXRpdmUuYWRkKToKKyAgICAgICAgKHJu
YXRpdmUualF1ZXJ5LnBhcmFtKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmZuLmV4dGVuZC5z
ZXJpYWxpemUpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5kLnNlcmlhbGl6ZUFy
cmF5KToKKyAgICAgICAgKHJuYXRpdmUuYWRkVG9QcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKToKKyAg
ICAgICAgKHJuYXRpdmUuanFYSFIuaW5zcGVjdCk6CisgICAgICAgIChybmF0aXZlLmluc3BlY3RQ
cmVmaWx0ZXJzT3JUcmFuc3BvcnRzKToKKyAgICAgICAgKHJuYXRpdmUuYWpheEV4dGVuZCk6Cisg
ICAgICAgIChybmF0aXZlLmFqYXhIYW5kbGVSZXNwb25zZXMpOgorICAgICAgICAocm5hdGl2ZS5h
amF4Q29udmVydCk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5leHRlbmQuanFYSFIuZ2V0UmVz
cG9uc2VIZWFkZXIpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZXh0ZW5kLmpxWEhSLmdldEFs
bFJlc3BvbnNlSGVhZGVycyk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5leHRlbmQuanFYSFIu
c2V0UmVxdWVzdEhlYWRlcik6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5leHRlbmQuanFYSFIu
b3ZlcnJpZGVNaW1lVHlwZSk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5leHRlbmQuanFYSFIu
c3RhdHVzQ29kZSk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5leHRlbmQuZG9uZSk6CisgICAg
ICAgIChybmF0aXZlLmpRdWVyeS5leHRlbmQuYWpheCk6CisgICAgICAgIChybmF0aXZlLmpRdWVy
eS5tZXRob2QpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuX2V2YWxVcmwpOgorICAgICAgICAo
cm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5kLndyYXBBbGwpOgorICAgICAgICAocm5hdGl2ZS5qUXVl
cnkuZm4uZXh0ZW5kLndyYXBJbm5lcik6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5mbi5leHRl
bmQud3JhcCk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5mbi5leHRlbmQudW53cmFwKToKKyAg
ICAgICAgKHJuYXRpdmUualF1ZXJ5LmV4cHIucHNldWRvcy5oaWRkZW4pOgorICAgICAgICAocm5h
dGl2ZS5qUXVlcnkuZXhwci5wc2V1ZG9zLnZpc2libGUpOgorICAgICAgICAocm5hdGl2ZS5qUXVl
cnkuYWpheFNldHRpbmdzLnhocik6CisgICAgICAgIChybmF0aXZlLnJldHVybi5jYWxsYmFjayk6
CisgICAgICAgIChybmF0aXZlLnJldHVybi5lbHNlLnhoci5vbnJlYWR5c3RhdGVjaGFuZ2UpOgor
ICAgICAgICAocm5hdGl2ZS5yZXR1cm4uc2VuZCk6CisgICAgICAgIChybmF0aXZlLnMuY29udmVy
dGVycy5zdHJpbmdfYXBwZWFyZWRfaGVyZSk6CisgICAgICAgIChybmF0aXZlLnN1cHBvcnQuY3Jl
YXRlSFRNTERvY3VtZW50KToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LnBhcnNlSFRNTCk6Cisg
ICAgICAgIChybmF0aXZlLmpRdWVyeS5mbi5sb2FkKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5
LmZuLnR5cGUpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZXhwci5wc2V1ZG9zLmFuaW1hdGVk
KToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5Lm9mZnNldC5zZXRPZmZzZXQpOgorICAgICAgICAo
cm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5kLm9mZnNldCk6CisgICAgICAgIChybmF0aXZlLmpRdWVy
eS5mbi5leHRlbmQucG9zaXRpb24pOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5k
Lm9mZnNldFBhcmVudCk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5mbi5tZXRob2QpOgorICAg
ICAgICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5kLmJpbmQpOgorICAgICAgICAocm5hdGl2ZS5q
UXVlcnkuZm4uZXh0ZW5kLnVuYmluZCk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5mbi5leHRl
bmQuZGVsZWdhdGUpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5kLnVuZGVsZWdh
dGUpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L2Rpc3QvanF1ZXJ5Lm1pbi5q
czogQWRkZWQuCisgICAgICAgIChyKToKKyAgICAgICAgKHYpOgorICAgICAgICAoci5mbi5yLnBy
b3RvdHlwZS50b0FycmF5KToKKyAgICAgICAgKHIuZm4uci5wcm90b3R5cGUucHVzaFN0YWNrKToK
KyAgICAgICAgKHIuZm4uci5wcm90b3R5cGUuZWFjaCk6CisgICAgICAgIChyLmZuLnIucHJvdG90
eXBlLm1hcCk6CisgICAgICAgIChyLmZuLnIucHJvdG90eXBlLnNsaWNlKToKKyAgICAgICAgKHIu
Zm4uci5wcm90b3R5cGUuZmlyc3QpOgorICAgICAgICAoci5mbi5yLnByb3RvdHlwZS5sYXN0KToK
KyAgICAgICAgKHIuZm4uci5wcm90b3R5cGUuZXEpOgorICAgICAgICAoci5mbi5yLnByb3RvdHlw
ZS5lbmQpOgorICAgICAgICAoci5leHRlbmQuci5mbi5leHRlbmQpOgorICAgICAgICAoci5leHRl
bmQpOgorICAgICAgICAoci5leHRlbmQuKToKKyAgICAgICAgKEIpOgorICAgICAgICAoSSk6Cisg
ICAgICAgIChZLmFhKToKKyAgICAgICAgKFkuY2EpOgorICAgICAgICAoWS5kYSk6CisgICAgICAg
IChZLmNhdGNoLkcpOgorICAgICAgICAoWS5nYSk6CisgICAgICAgIChZLmhhKToKKyAgICAgICAg
KFkuaWEpOgorICAgICAgICAoWS5qYSk6CisgICAgICAgIChZLmthKToKKyAgICAgICAgKFkubGEp
OgorICAgICAgICAoWS5tYSk6CisgICAgICAgIChZLm5hKToKKyAgICAgICAgKFkub2EpOgorICAg
ICAgICAoWS5wYS4pOgorICAgICAgICAoWS5wYSk6CisgICAgICAgIChZLik6CisgICAgICAgIChZ
LmYuZ2EuaXNYTUwpOgorICAgICAgICAoWS5tLmdhLnNldERvY3VtZW50KToKKyAgICAgICAgKFku
Z2EubWF0Y2hlcyk6CisgICAgICAgIChZLmdhLm1hdGNoZXNTZWxlY3Rvcik6CisgICAgICAgIChZ
LmdhLmNvbnRhaW5zKToKKyAgICAgICAgKFkuZ2EuYXR0cik6CisgICAgICAgIChZLmdhLmVzY2Fw
ZSk6CisgICAgICAgIChZLmdhLmVycm9yKToKKyAgICAgICAgKFkuZ2EudW5pcXVlU29ydCk6Cisg
ICAgICAgIChZLmUuZ2EuZ2V0VGV4dCk6CisgICAgICAgIChZLmQuZ2Euc2VsZWN0b3JzLnByZUZp
bHRlci5BVFRSKToKKyAgICAgICAgKFkuZC5nYS5zZWxlY3RvcnMucHJlRmlsdGVyLkNISUxEKToK
KyAgICAgICAgKFkuZC5nYS5zZWxlY3RvcnMucHJlRmlsdGVyLlBTRVVETyk6CisgICAgICAgIChZ
LmQuZ2Euc2VsZWN0b3JzLmZpbHRlci4pOgorICAgICAgICAoWS5kLmdhLnNlbGVjdG9ycy5maWx0
ZXIuVEFHKToKKyAgICAgICAgKFkuZC5nYS5zZWxlY3RvcnMuZmlsdGVyLkNMQVNTKToKKyAgICAg
ICAgKFkuZC5nYS5zZWxlY3RvcnMuZmlsdGVyLkFUVFIpOgorICAgICAgICAoWS5kLmdhLnNlbGVj
dG9ycy5maWx0ZXIuQ0hJTEQpOgorICAgICAgICAoWS5kLmdhLnNlbGVjdG9ycy5maWx0ZXIuUFNF
VURPKToKKyAgICAgICAgKFkuZC5nYS5zZWxlY3RvcnMucHNldWRvcy4pOgorICAgICAgICAoWS5k
LmdhLnNlbGVjdG9ycy5wc2V1ZG9zLnRhcmdldCk6CisgICAgICAgIChZLmQuZ2Euc2VsZWN0b3Jz
LnBzZXVkb3Mucm9vdCk6CisgICAgICAgIChZLmQuZ2Euc2VsZWN0b3JzLnBzZXVkb3MuZm9jdXMp
OgorICAgICAgICAoWS5kLmdhLnNlbGVjdG9ycy5wc2V1ZG9zLmNoZWNrZWQpOgorICAgICAgICAo
WS5kLmdhLnNlbGVjdG9ycy5wc2V1ZG9zLnNlbGVjdGVkKToKKyAgICAgICAgKFkuZC5nYS5zZWxl
Y3RvcnMucHNldWRvcy5lbXB0eSk6CisgICAgICAgIChZLmQuZ2Euc2VsZWN0b3JzLnBzZXVkb3Mu
cGFyZW50KToKKyAgICAgICAgKFkuZC5nYS5zZWxlY3RvcnMucHNldWRvcy5oZWFkZXIpOgorICAg
ICAgICAoWS5kLmdhLnNlbGVjdG9ycy5wc2V1ZG9zLmlucHV0KToKKyAgICAgICAgKFkuZC5nYS5z
ZWxlY3RvcnMucHNldWRvcy5idXR0b24pOgorICAgICAgICAoWS5kLmdhLnNlbGVjdG9ycy5wc2V1
ZG9zLnRleHQpOgorICAgICAgICAoWS5yYSk6CisgICAgICAgIChZLmcuZ2EudG9rZW5pemUpOgor
ICAgICAgICAoWS5zYSk6CisgICAgICAgIChZLnRhKToKKyAgICAgICAgKFkudWEpOgorICAgICAg
ICAoWS52YSk6CisgICAgICAgIChZLndhKToKKyAgICAgICAgKFkueGEpOgorICAgICAgICAoWS55
YSk6CisgICAgICAgIChZLmYpOgorICAgICAgICAoWS56YSk6CisgICAgICAgIChZLnJldHVybi5o
LmdhLmNvbXBpbGUpOgorICAgICAgICAoWS5pLmdhLnNlbGVjdCk6CisgICAgICAgIChZLnkpOgor
ICAgICAgICAoWS56KToKKyAgICAgICAgKFkpOgorICAgICAgICAoWS5yLmZpbHRlcik6CisgICAg
ICAgIChZLnIuZm4uZXh0ZW5kLik6CisgICAgICAgIChZLnIuZm4uZXh0ZW5kKToKKyAgICAgICAg
KFkuRy5yLmZuLmluaXQpOgorICAgICAgICAoWS5yLmVhY2gpOgorICAgICAgICAoWS5MKToKKyAg
ICAgICAgKFkuaSk6CisgICAgICAgIChZLmouKToKKyAgICAgICAgKFkuai5hZGQpOgorICAgICAg
ICAoWS5qLnJlbW92ZSk6CisgICAgICAgIChZLmouaGFzKToKKyAgICAgICAgKFkuai5lbXB0eSk6
CisgICAgICAgIChZLmouZGlzYWJsZSk6CisgICAgICAgIChZLmouZGlzYWJsZWQpOgorICAgICAg
ICAoWS5qLmxvY2spOgorICAgICAgICAoWS5qLmxvY2tlZCk6CisgICAgICAgIChZLmouZmlyZVdp
dGgpOgorICAgICAgICAoWS5qLmZpcmUpOgorICAgICAgICAoWS5qLmZpcmVkKToKKyAgICAgICAg
KFkuci5DYWxsYmFja3MpOgorICAgICAgICAoWS5NKToKKyAgICAgICAgKFkuTik6CisgICAgICAg
IChZLk8pOgorICAgICAgICAoWS5yLmV4dGVuZC4pOgorICAgICAgICAoWS5yLmV4dGVuZCk6Cisg
ICAgICAgIChZLnIuRGVmZXJyZWQuZXhjZXB0aW9uSG9vayk6CisgICAgICAgIChZLnIucmVhZHlF
eGNlcHRpb24pOgorICAgICAgICAoWS5yLmZuLnJlYWR5KToKKyAgICAgICAgKFkuUik6CisgICAg
ICAgIChZLlMpOgorICAgICAgICAoWS5UKToKKyAgICAgICAgKFkuVSk6CisgICAgICAgIChZLlUu
cHJvdG90eXBlLmNhY2hlKToKKyAgICAgICAgKFkuVS5wcm90b3R5cGUuYWNjZXNzKToKKyAgICAg
ICAgKFkuVS5wcm90b3R5cGUucmVtb3ZlKToKKyAgICAgICAgKFkuVS5wcm90b3R5cGUuaGFzRGF0
YSk6CisgICAgICAgIChZLlopOgorICAgICAgICAoWS5lYSk6CisgICAgICAgIChZLnIuZXZlbnQu
KToKKyAgICAgICAgKFkuci5ldmVudC5hZGQpOgorICAgICAgICAoWS5yLmV2ZW50LnJlbW92ZSk6
CisgICAgICAgIChZLnIuZXZlbnQuZGlzcGF0Y2gpOgorICAgICAgICAoWS5yLmV2ZW50LmhhbmRs
ZXJzKToKKyAgICAgICAgKFkuci5ldmVudC5hZGRQcm9wKToKKyAgICAgICAgKFkuci5ldmVudC5z
ZXQgZ2V0IGZpeCk6CisgICAgICAgIChZLnIuZXZlbnQuc3BlY2lhbC5mb2N1cy50cmlnZ2VyKToK
KyAgICAgICAgKFkuci5ldmVudC5zcGVjaWFsLmJsdXIudHJpZ2dlcik6CisgICAgICAgIChZLnIu
ZXZlbnQuc3BlY2lhbC5jbGljay50cmlnZ2VyKToKKyAgICAgICAgKFkuci5ldmVudC5zcGVjaWFs
LmNsaWNrLl9kZWZhdWx0KToKKyAgICAgICAgKFkuci5ldmVudC5zcGVjaWFsLmJlZm9yZXVubG9h
ZC5wb3N0RGlzcGF0Y2gpOgorICAgICAgICAoWS5yLnJlbW92ZUV2ZW50KToKKyAgICAgICAgKFku
ci5FdmVudCk6CisgICAgICAgIChZLnIuRXZlbnQucHJvdG90eXBlLnByZXZlbnREZWZhdWx0KToK
KyAgICAgICAgKFkuci5FdmVudC5wcm90b3R5cGUuc3RvcFByb3BhZ2F0aW9uKToKKyAgICAgICAg
KFkuci5FdmVudC5wcm90b3R5cGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKToKKyAgICAgICAg
KFkuRGEpOgorICAgICAgICAoWS5FYSk6CisgICAgICAgIChZLkZhKToKKyAgICAgICAgKFkuR2Ep
OgorICAgICAgICAoWS5KYSk6CisgICAgICAgIChZLk1hKToKKyAgICAgICAgKFkuYik6CisgICAg
ICAgIChZLlVhKToKKyAgICAgICAgKFkuVmEpOgorICAgICAgICAoWS5XYSk6CisgICAgICAgIChZ
LlhhKToKKyAgICAgICAgKFkuZ2V0IHIpOgorICAgICAgICAoWS5zZXQgZ2V0IHIpOgorICAgICAg
ICAoWS5ZYS5wcm90b3R5cGUuaW5pdCk6CisgICAgICAgIChZLllhLnByb3RvdHlwZS5jdXIpOgor
ICAgICAgICAoWS5ZYS5wcm90b3R5cGUucnVuKToKKyAgICAgICAgKFkuci5lYXNpbmcubGluZWFy
KToKKyAgICAgICAgKFkuci5lYXNpbmcuc3dpbmcpOgorICAgICAgICAoWS5iYik6CisgICAgICAg
IChZLmNiKToKKyAgICAgICAgKFkuZGIpOgorICAgICAgICAoWS5lYik6CisgICAgICAgIChZLmZi
KToKKyAgICAgICAgKFkuai5oLnByb21pc2UpOgorICAgICAgICAoWS5oYik6CisgICAgICAgIChZ
LmUuY29tcGxldGUpOgorICAgICAgICAoWS5yLnNwZWVkKToKKyAgICAgICAgKFkuci5meC50aWNr
KToKKyAgICAgICAgKFkuci5meC50aW1lcik6CisgICAgICAgIChZLnIuZnguc3RhcnQpOgorICAg
ICAgICAoWS5yLmZ4LnN0b3ApOgorICAgICAgICAoWS5yLmZuLmRlbGF5KToKKyAgICAgICAgKFku
WWEucHJvcEhvb2tzLnNjcm9sbFRvcC5ZYS5wcm9wSG9va3Muc2Nyb2xsTGVmdC5zZXQgYSk6Cisg
ICAgICAgIChZLllhLnByb3BIb29rcy5zY3JvbGxUb3AuWWEucHJvcEhvb2tzLnNjcm9sbExlZnQp
OgorICAgICAgICAoWS5zZXQgaWIuc2V0IHJldHVybik6CisgICAgICAgIChZLnNldCBpYik6Cisg
ICAgICAgIChZLmdldCBvLm9wdFNlbGVjdGVkKToKKyAgICAgICAgKFkuZ2V0IG8pOgorICAgICAg
ICAoWS5uYik6CisgICAgICAgIChZLnNldCB2YXIpOgorICAgICAgICAoWS5yLnBhcnNlWE1MKToK
KyAgICAgICAgKFkueGIpOgorICAgICAgICAoWS5lKToKKyAgICAgICAgKFkuci5wYXJhbSk6Cisg
ICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvZGlzdC9qcXVlcnkubWluLm1hcDogQWRk
ZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvZGlzdC9qcXVlcnkuc2xpbS5q
czogQ29waWVkIGZyb20gUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9ib3dlcl9jb21wb25lbnRzL2pxdWVy
eS9qcXVlcnkuanMuCisgICAgICAgICh0eXBlb2YubW9kdWxlLnN0cmluZ19hcHBlYXJlZF9oZXJl
LnR5cGVvZi5tb2R1bGUuZXhwb3J0cy5zdHJpbmdfYXBwZWFyZWRfaGVyZS50cnVlKToKKyAgICAg
ICAgKGpRdWVyeSk6CisgICAgICAgIChmY2FtZWxDYXNlKToKKyAgICAgICAgKGpRdWVyeS5mbi5q
UXVlcnkucHJvdG90eXBlLnRvQXJyYXkpOgorICAgICAgICAoalF1ZXJ5LmZuLmpRdWVyeS5wcm90
b3R5cGUuZ2V0IGlmKToKKyAgICAgICAgKGpRdWVyeS5mbi5qUXVlcnkucHJvdG90eXBlKToKKyAg
ICAgICAgKGpRdWVyeS5mbi5qUXVlcnkucHJvdG90eXBlLnB1c2hTdGFjayk6CisgICAgICAgIChq
UXVlcnkuZm4ualF1ZXJ5LnByb3RvdHlwZS5lYWNoKToKKyAgICAgICAgKGpRdWVyeS5mbi5qUXVl
cnkucHJvdG90eXBlLm1hcCk6CisgICAgICAgIChqUXVlcnkuZm4ualF1ZXJ5LnByb3RvdHlwZS5z
bGljZSk6CisgICAgICAgIChqUXVlcnkuZm4ualF1ZXJ5LnByb3RvdHlwZS5maXJzdCk6CisgICAg
ICAgIChqUXVlcnkuZm4ualF1ZXJ5LnByb3RvdHlwZS5sYXN0KToKKyAgICAgICAgKGpRdWVyeS5m
bi5qUXVlcnkucHJvdG90eXBlLmVxKToKKyAgICAgICAgKGpRdWVyeS5mbi5qUXVlcnkucHJvdG90
eXBlLmVuZCk6CisgICAgICAgIChqUXVlcnkuZXh0ZW5kLmpRdWVyeS5mbi5leHRlbmQpOgorICAg
ICAgICAoalF1ZXJ5LmV4dGVuZC5lcnJvcik6CisgICAgICAgIChqUXVlcnkuZXh0ZW5kLm5vb3Ap
OgorICAgICAgICAoalF1ZXJ5LmV4dGVuZC5pc0Z1bmN0aW9uKToKKyAgICAgICAgKGpRdWVyeS5l
eHRlbmQuaXNXaW5kb3cpOgorICAgICAgICAoalF1ZXJ5LmV4dGVuZC5pc051bWVyaWMpOgorICAg
ICAgICAoalF1ZXJ5LmV4dGVuZC5pc1BsYWluT2JqZWN0KToKKyAgICAgICAgKGpRdWVyeS5leHRl
bmQuaXNFbXB0eU9iamVjdCk6CisgICAgICAgIChqUXVlcnkuZXh0ZW5kLnR5cGUpOgorICAgICAg
ICAoalF1ZXJ5LmV4dGVuZC5nbG9iYWxFdmFsKToKKyAgICAgICAgKGpRdWVyeS5leHRlbmQuY2Ft
ZWxDYXNlKToKKyAgICAgICAgKGpRdWVyeS5leHRlbmQubm9kZU5hbWUpOgorICAgICAgICAoalF1
ZXJ5LmV4dGVuZC5lYWNoKToKKyAgICAgICAgKGpRdWVyeS5leHRlbmQudHJpbSk6CisgICAgICAg
IChqUXVlcnkuZXh0ZW5kLm1ha2VBcnJheSk6CisgICAgICAgIChqUXVlcnkuZXh0ZW5kLmluQXJy
YXkpOgorICAgICAgICAoalF1ZXJ5LmV4dGVuZC5tZXJnZSk6CisgICAgICAgIChqUXVlcnkuZXh0
ZW5kLmdyZXApOgorICAgICAgICAoalF1ZXJ5LmV4dGVuZC5tYXApOgorICAgICAgICAoalF1ZXJ5
LmV4dGVuZC5wcm94eSk6CisgICAgICAgIChpc0FycmF5TGlrZSk6CisgICAgICAgIChzb3J0T3Jk
ZXIpOgorICAgICAgICAoaW5kZXhPZik6CisgICAgICAgIChybmF0aXZlLmZ1bmVzY2FwZSk6Cisg
ICAgICAgIChybmF0aXZlLmZjc3Nlc2NhcGUpOgorICAgICAgICAocm5hdGl2ZS51bmxvYWRIYW5k
bGVyKToKKyAgICAgICAgKHJuYXRpdmUuY2F0Y2gucHVzaCk6CisgICAgICAgIChybmF0aXZlLlNp
enpsZSk6CisgICAgICAgIChybmF0aXZlLmNyZWF0ZUNhY2hlKToKKyAgICAgICAgKHJuYXRpdmUu
bWFya0Z1bmN0aW9uKToKKyAgICAgICAgKHJuYXRpdmUuYXNzZXJ0KToKKyAgICAgICAgKHJuYXRp
dmUuYWRkSGFuZGxlKToKKyAgICAgICAgKHJuYXRpdmUuc2libGluZ0NoZWNrKToKKyAgICAgICAg
KHJuYXRpdmUuY3JlYXRlSW5wdXRQc2V1ZG8pOgorICAgICAgICAocm5hdGl2ZS5jcmVhdGVCdXR0
b25Qc2V1ZG8pOgorICAgICAgICAocm5hdGl2ZS5jcmVhdGVEaXNhYmxlZFBzZXVkbyk6CisgICAg
ICAgIChybmF0aXZlLmNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8uKToKKyAgICAgICAgKHJuYXRpdmUu
Y3JlYXRlUG9zaXRpb25hbFBzZXVkbyk6CisgICAgICAgIChybmF0aXZlLik6CisgICAgICAgIChy
bmF0aXZlLmlzWE1MLlNpenpsZS5pc1hNTCk6CisgICAgICAgIChybmF0aXZlLkV4cHIuZmlsdGVy
LnN0cmluZ19hcHBlYXJlZF9oZXJlKToKKyAgICAgICAgKHJuYXRpdmUuRXhwci5maW5kLnN0cmlu
Z19hcHBlYXJlZF9oZXJlKToKKyAgICAgICAgKHJuYXRpdmUuZWxzZS5FeHByLmZpbHRlci5zdHJp
bmdfYXBwZWFyZWRfaGVyZSk6CisgICAgICAgIChybmF0aXZlLmVsc2UuRXhwci5maW5kLnN0cmlu
Z19hcHBlYXJlZF9oZXJlKToKKyAgICAgICAgKHJuYXRpdmUuc2V0RG9jdW1lbnQuU2l6emxlLnNl
dERvY3VtZW50KToKKyAgICAgICAgKHJuYXRpdmUuU2l6emxlLm1hdGNoZXMpOgorICAgICAgICAo
cm5hdGl2ZS5TaXp6bGUubWF0Y2hlc1NlbGVjdG9yKToKKyAgICAgICAgKHJuYXRpdmUuU2l6emxl
LmNvbnRhaW5zKToKKyAgICAgICAgKHJuYXRpdmUuU2l6emxlLmF0dHIpOgorICAgICAgICAocm5h
dGl2ZS5TaXp6bGUuZXNjYXBlKToKKyAgICAgICAgKHJuYXRpdmUuU2l6emxlLmVycm9yKToKKyAg
ICAgICAgKHJuYXRpdmUuU2l6emxlLnVuaXF1ZVNvcnQpOgorICAgICAgICAocm5hdGl2ZS5nZXRU
ZXh0LlNpenpsZS5nZXRUZXh0KToKKyAgICAgICAgKHJuYXRpdmUuRXhwci5TaXp6bGUuc2VsZWN0
b3JzLnByZUZpbHRlci5zdHJpbmdfYXBwZWFyZWRfaGVyZSk6CisgICAgICAgIChybmF0aXZlLkV4
cHIuU2l6emxlLnNlbGVjdG9ycy5maWx0ZXIuKToKKyAgICAgICAgKHJuYXRpdmUuRXhwci5TaXp6
bGUuc2VsZWN0b3JzLmZpbHRlci5zdHJpbmdfYXBwZWFyZWRfaGVyZSk6CisgICAgICAgIChybmF0
aXZlLkV4cHIuU2l6emxlLnNlbGVjdG9ycy5wc2V1ZG9zLik6CisgICAgICAgIChybmF0aXZlLkV4
cHIuU2l6emxlLnNlbGVjdG9ycy5wc2V1ZG9zLnN0cmluZ19hcHBlYXJlZF9oZXJlKToKKyAgICAg
ICAgKHJuYXRpdmUuc2V0RmlsdGVycyk6CisgICAgICAgIChybmF0aXZlLnRva2VuaXplLlNpenps
ZS50b2tlbml6ZSk6CisgICAgICAgIChybmF0aXZlLnRvU2VsZWN0b3IpOgorICAgICAgICAocm5h
dGl2ZS5hZGRDb21iaW5hdG9yKToKKyAgICAgICAgKHJuYXRpdmUuZWxlbWVudE1hdGNoZXIpOgor
ICAgICAgICAocm5hdGl2ZS5tdWx0aXBsZUNvbnRleHRzKToKKyAgICAgICAgKHJuYXRpdmUuY29u
ZGVuc2UpOgorICAgICAgICAocm5hdGl2ZS5zZXRNYXRjaGVyKToKKyAgICAgICAgKHJuYXRpdmUu
bWF0Y2hlckZyb21Ub2tlbnMubWF0Y2hlcnMpOgorICAgICAgICAocm5hdGl2ZS5zdXBlck1hdGNo
ZXIpOgorICAgICAgICAocm5hdGl2ZS5tYXRjaGVyRnJvbUdyb3VwTWF0Y2hlcnMpOgorICAgICAg
ICAocm5hdGl2ZS5jb21waWxlLlNpenpsZS5jb21waWxlKToKKyAgICAgICAgKHJuYXRpdmUuc2Vs
ZWN0LlNpenpsZS5zZWxlY3QpOgorICAgICAgICAocm5hdGl2ZS5kaXIpOgorICAgICAgICAocm5h
dGl2ZS5zaWJsaW5ncyk6CisgICAgICAgIChybmF0aXZlKToKKyAgICAgICAgKHJuYXRpdmUualF1
ZXJ5LmZpbHRlcik6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5mbi5leHRlbmQuZmluZCk6Cisg
ICAgICAgIChybmF0aXZlLmpRdWVyeS5mbi5leHRlbmQuZmlsdGVyKToKKyAgICAgICAgKHJuYXRp
dmUualF1ZXJ5LmZuLmV4dGVuZC5ub3QpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0
ZW5kLmlzKToKKyAgICAgICAgKHJuYXRpdmUuaW5pdC5qUXVlcnkuZm4uaW5pdCk6CisgICAgICAg
IChybmF0aXZlLmpRdWVyeS5mbi5leHRlbmQuaGFzKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5
LmZuLmV4dGVuZC5jbG9zZXN0KToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmZuLmV4dGVuZC5p
bmRleCk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5mbi5leHRlbmQuYWRkKToKKyAgICAgICAg
KHJuYXRpdmUualF1ZXJ5LmZuLmV4dGVuZC5hZGRCYWNrKToKKyAgICAgICAgKHJuYXRpdmUualF1
ZXJ5LmVhY2gucGFyZW50KToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmVhY2gucGFyZW50cyk6
CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5lYWNoLnBhcmVudHNVbnRpbCk6CisgICAgICAgIChy
bmF0aXZlLmpRdWVyeS5lYWNoLm5leHQpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZWFjaC5w
cmV2KToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmVhY2gubmV4dEFsbCk6CisgICAgICAgIChy
bmF0aXZlLmpRdWVyeS5lYWNoLnByZXZBbGwpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZWFj
aC5uZXh0VW50aWwpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZWFjaC5wcmV2VW50aWwpOgor
ICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZWFjaC5zaWJsaW5ncyk6CisgICAgICAgIChybmF0aXZl
LmpRdWVyeS5lYWNoLmNoaWxkcmVuKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmVhY2guY29u
dGVudHMpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZm4ubmFtZSk6CisgICAgICAgIChybmF0
aXZlLmNyZWF0ZU9wdGlvbnMpOgorICAgICAgICAocm5hdGl2ZS5maXJlKToKKyAgICAgICAgKHJu
YXRpdmUuc2VsZi5saXN0LmFkZCk6CisgICAgICAgIChybmF0aXZlLnNlbGYuYWRkKToKKyAgICAg
ICAgKHJuYXRpdmUuc2VsZi5yZW1vdmUpOgorICAgICAgICAocm5hdGl2ZS5zZWxmLmhhcyk6Cisg
ICAgICAgIChybmF0aXZlLnNlbGYuZW1wdHkpOgorICAgICAgICAocm5hdGl2ZS5zZWxmLmRpc2Fi
bGUpOgorICAgICAgICAocm5hdGl2ZS5zZWxmLmRpc2FibGVkKToKKyAgICAgICAgKHJuYXRpdmUu
c2VsZi5sb2NrKToKKyAgICAgICAgKHJuYXRpdmUuc2VsZi5sb2NrZWQpOgorICAgICAgICAocm5h
dGl2ZS5zZWxmLmZpcmVXaXRoKToKKyAgICAgICAgKHJuYXRpdmUuc2VsZi5maXJlKToKKyAgICAg
ICAgKHJuYXRpdmUuc2VsZi5maXJlZCk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5DYWxsYmFj
a3MpOgorICAgICAgICAocm5hdGl2ZS5JZGVudGl0eSk6CisgICAgICAgIChybmF0aXZlLlRocm93
ZXIpOgorICAgICAgICAocm5hdGl2ZS5hZG9wdFZhbHVlKToKKyAgICAgICAgKHJuYXRpdmUualF1
ZXJ5LmV4dGVuZC5wcm9taXNlLnN0YXRlKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmV4dGVu
ZC5wcm9taXNlLmFsd2F5cyk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5leHRlbmQucHJvbWlz
ZS5zdHJpbmdfYXBwZWFyZWRfaGVyZSk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5leHRlbmQu
cHJvbWlzZS4pOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZXh0ZW5kLnByb21pc2UucGlwZSk6
CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5leHRlbmQucHJvbWlzZS5taWdodFRocm93KToKKyAg
ICAgICAgKHJuYXRpdmUualF1ZXJ5LmV4dGVuZC5wcm9taXNlLnByb2Nlc3Muc3BlY2lhbC5taWdo
dFRocm93KToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmV4dGVuZC5wcm9taXNlLnJlc29sdmUp
OgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZXh0ZW5kLnByb21pc2UudGhlbik6CisgICAgICAg
IChybmF0aXZlLmpRdWVyeS5leHRlbmQucHJvbWlzZS5wcm9taXNlKToKKyAgICAgICAgKHJuYXRp
dmUualF1ZXJ5LmV4dGVuZC4pOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZXh0ZW5kLkRlZmVy
cmVkKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmV4dGVuZC51cGRhdGVGdW5jKToKKyAgICAg
ICAgKHJuYXRpdmUualF1ZXJ5LmV4dGVuZC53aGVuKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5
LkRlZmVycmVkLmV4Y2VwdGlvbkhvb2spOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkucmVhZHlF
eGNlcHRpb24pOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZm4ucmVhZHkpOgorICAgICAgICAo
cm5hdGl2ZS5qUXVlcnkuZXh0ZW5kLmhvbGRSZWFkeSk6CisgICAgICAgIChybmF0aXZlLmpRdWVy
eS5leHRlbmQucmVhZHkpOgorICAgICAgICAocm5hdGl2ZS5jb21wbGV0ZWQpOgorICAgICAgICAo
cm5hdGl2ZS5lbHNlLnZhbHVlLnVuZGVmaW5lZC5idWxrLmVsc2UuZm4pOgorICAgICAgICAocm5h
dGl2ZS5hY2Nlc3MpOgorICAgICAgICAocm5hdGl2ZS5hY2NlcHREYXRhKToKKyAgICAgICAgKHJu
YXRpdmUuRGF0YSk6CisgICAgICAgIChybmF0aXZlLkRhdGEucHJvdG90eXBlLmNhY2hlKToKKyAg
ICAgICAgKHJuYXRpdmUuRGF0YS5wcm90b3R5cGUuc2V0IG93bmVyKToKKyAgICAgICAgKHJuYXRp
dmUuRGF0YS5wcm90b3R5cGUuZ2V0IG93bmVyKToKKyAgICAgICAgKHJuYXRpdmUuRGF0YS5wcm90
b3R5cGUuYWNjZXNzKToKKyAgICAgICAgKHJuYXRpdmUuRGF0YS5wcm90b3R5cGUucmVtb3ZlKToK
KyAgICAgICAgKHJuYXRpdmUuRGF0YS5wcm90b3R5cGUuaGFzRGF0YSk6CisgICAgICAgIChybmF0
aXZlLmdldERhdGEpOgorICAgICAgICAocm5hdGl2ZS5kYXRhQXR0cik6CisgICAgICAgIChybmF0
aXZlLmpRdWVyeS5leHRlbmQuaGFzRGF0YSk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5leHRl
bmQuZGF0YSk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5leHRlbmQucmVtb3ZlRGF0YSk6Cisg
ICAgICAgIChybmF0aXZlLmpRdWVyeS5leHRlbmQuX2RhdGEpOgorICAgICAgICAocm5hdGl2ZS5q
UXVlcnkuZXh0ZW5kLl9yZW1vdmVEYXRhKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmZuLmV4
dGVuZC4pOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5kLmRhdGEpOgorICAgICAg
ICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5kLnJlbW92ZURhdGEpOgorICAgICAgICAocm5hdGl2
ZS5qUXVlcnkuZXh0ZW5kLnF1ZXVlKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmV4dGVuZC5u
ZXh0KToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmV4dGVuZC5kZXF1ZXVlKToKKyAgICAgICAg
KHJuYXRpdmUualF1ZXJ5LmV4dGVuZC5fcXVldWVIb29rcyk6CisgICAgICAgIChybmF0aXZlLmpR
dWVyeS5mbi5leHRlbmQucXVldWUpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5k
LmRlcXVldWUpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5kLmNsZWFyUXVldWUp
OgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5kLnJlc29sdmUpOgorICAgICAgICAo
cm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5kLnByb21pc2UpOgorICAgICAgICAocm5hdGl2ZS5pc0hp
ZGRlbldpdGhpblRyZWUpOgorICAgICAgICAocm5hdGl2ZS5zd2FwKToKKyAgICAgICAgKHJuYXRp
dmUudHdlZW4pOgorICAgICAgICAocm5hdGl2ZS5hZGp1c3RDU1MpOgorICAgICAgICAocm5hdGl2
ZS5zaG93SGlkZSk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5mbi5leHRlbmQuc2hvdyk6Cisg
ICAgICAgIChybmF0aXZlLmpRdWVyeS5mbi5leHRlbmQuaGlkZSk6CisgICAgICAgIChybmF0aXZl
LmpRdWVyeS5mbi5leHRlbmQudG9nZ2xlKToKKyAgICAgICAgKHJuYXRpdmUuZ2V0QWxsKToKKyAg
ICAgICAgKHJuYXRpdmUuc2V0R2xvYmFsRXZhbCk6CisgICAgICAgIChybmF0aXZlLmJ1aWxkRnJh
Z21lbnQpOgorICAgICAgICAocm5hdGl2ZS5yZXR1cm5GYWxzZSk6CisgICAgICAgIChybmF0aXZl
LnNhZmVBY3RpdmVFbGVtZW50KToKKyAgICAgICAgKHJuYXRpdmUub25lLm9uZS4xLmZuKToKKyAg
ICAgICAgKHJuYXRpdmUub24pOgorICAgICAgICAocm5hdGl2ZS5EYXRhLnByb3RvdHlwZSk6Cisg
ICAgICAgIChybmF0aXZlLmpRdWVyeS5ldmVudC5ldmVudEhhbmRsZS5lbGVtRGF0YS5oYW5kbGUp
OgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZXZlbnQuYWRkKToKKyAgICAgICAgKHJuYXRpdmUu
alF1ZXJ5LmV2ZW50LnJlbW92ZSk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5ldmVudC5kaXNw
YXRjaCk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5ldmVudC5oYW5kbGVycyk6CisgICAgICAg
IChybmF0aXZlLmpRdWVyeS5ldmVudC5nZXQgalF1ZXJ5KToKKyAgICAgICAgKHJuYXRpdmUualF1
ZXJ5LmV2ZW50Lik6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5ldmVudC5zZXQgT2JqZWN0KToK
KyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmV2ZW50LmFkZFByb3ApOgorICAgICAgICAocm5hdGl2
ZS5qUXVlcnkuZXZlbnQuZml4KToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmV2ZW50LnNwZWNp
YWwuZm9jdXMudHJpZ2dlcik6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5ldmVudC5zcGVjaWFs
LmJsdXIudHJpZ2dlcik6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5ldmVudC5zcGVjaWFsLmNs
aWNrLnRyaWdnZXIpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZXZlbnQuc3BlY2lhbC5jbGlj
ay5fZGVmYXVsdCk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5ldmVudC5zcGVjaWFsLmJlZm9y
ZXVubG9hZC5wb3N0RGlzcGF0Y2gpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkucmVtb3ZlRXZl
bnQpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuRXZlbnQpOgorICAgICAgICAocm5hdGl2ZS5q
UXVlcnkuRXZlbnQucHJvdG90eXBlLnByZXZlbnREZWZhdWx0KToKKyAgICAgICAgKHJuYXRpdmUu
alF1ZXJ5LkV2ZW50LnByb3RvdHlwZS5zdG9wUHJvcGFnYXRpb24pOgorICAgICAgICAocm5hdGl2
ZS5qUXVlcnkuRXZlbnQucHJvdG90eXBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbik6CisgICAg
ICAgIChybmF0aXZlLmpRdWVyeS5lYWNoKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmV2ZW50
LnNwZWNpYWwub3JpZy5oYW5kbGUpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5k
Lm9uKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmZuLmV4dGVuZC5vbmUpOgorICAgICAgICAo
cm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5kLm9mZik6CisgICAgICAgIChybmF0aXZlLm1hbmlwdWxh
dGlvblRhcmdldCk6CisgICAgICAgIChybmF0aXZlLmRpc2FibGVTY3JpcHQpOgorICAgICAgICAo
cm5hdGl2ZS5yZXN0b3JlU2NyaXB0KToKKyAgICAgICAgKHJuYXRpdmUuY2xvbmVDb3B5RXZlbnQp
OgorICAgICAgICAocm5hdGl2ZS5maXhJbnB1dCk6CisgICAgICAgIChybmF0aXZlLmRvbU1hbmlw
KToKKyAgICAgICAgKHJuYXRpdmUucmVtb3ZlKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmV4
dGVuZC5odG1sUHJlZmlsdGVyKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmV4dGVuZC5jbG9u
ZSk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5leHRlbmQuY2xlYW5EYXRhKToKKyAgICAgICAg
KHJuYXRpdmUualF1ZXJ5LmZuLmV4dGVuZC5kZXRhY2gpOgorICAgICAgICAocm5hdGl2ZS5qUXVl
cnkuZm4uZXh0ZW5kLnJlbW92ZSk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5mbi5leHRlbmQu
dGV4dCk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5mbi5leHRlbmQuYXBwZW5kKToKKyAgICAg
ICAgKHJuYXRpdmUualF1ZXJ5LmZuLmV4dGVuZC5wcmVwZW5kKToKKyAgICAgICAgKHJuYXRpdmUu
alF1ZXJ5LmZuLmV4dGVuZC5iZWZvcmUpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0
ZW5kLmFmdGVyKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmZuLmV4dGVuZC5lbXB0eSk6Cisg
ICAgICAgIChybmF0aXZlLmpRdWVyeS5mbi5leHRlbmQuY2xvbmUpOgorICAgICAgICAocm5hdGl2
ZS5qUXVlcnkuZm4uZXh0ZW5kLmh0bWwpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0
ZW5kLnJlcGxhY2VXaXRoKToKKyAgICAgICAgKHJuYXRpdmUuZ2V0U3R5bGVzKToKKyAgICAgICAg
KHJuYXRpdmUuY29tcHV0ZVN0eWxlVGVzdHMpOgorICAgICAgICAocm5hdGl2ZS5ob29rRm4ucmV0
dXJuLmdldCBpZik6CisgICAgICAgIChybmF0aXZlLmhvb2tGbi5yZXR1cm4pOgorICAgICAgICAo
cm5hdGl2ZS5hZGRHZXRIb29rSWYpOgorICAgICAgICAocm5hdGl2ZS52ZW5kb3JQcm9wTmFtZSk6
CisgICAgICAgIChybmF0aXZlLnNldFBvc2l0aXZlTnVtYmVyKToKKyAgICAgICAgKHJuYXRpdmUu
YXVnbWVudFdpZHRoT3JIZWlnaHQpOgorICAgICAgICAocm5hdGl2ZS5nZXRXaWR0aE9ySGVpZ2h0
KToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmV4dGVuZC5jc3NIb29rcy5vcGFjaXR5LmdldCBp
Zik6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5leHRlbmQuY3NzSG9va3Mub3BhY2l0eSk6Cisg
ICAgICAgIChybmF0aXZlLmpRdWVyeS5leHRlbmQuc3R5bGUpOgorICAgICAgICAocm5hdGl2ZS5q
UXVlcnkuZXh0ZW5kLmNzcyk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5jc3NIb29rcy5uYW1l
LmdldCBpZik6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5jc3NIb29rcy5uYW1lKToKKyAgICAg
ICAgKHJuYXRpdmUualF1ZXJ5LmNzc0hvb2tzLm5hbWUuc2V0IHZhcik6CisgICAgICAgIChybmF0
aXZlLmpRdWVyeS5jc3NIb29rcy5wcmVmaXguc3VmZml4LmV4cGFuZCk6CisgICAgICAgIChybmF0
aXZlLmpRdWVyeS5mbi5leHRlbmQuY3NzKToKKyAgICAgICAgKHJuYXRpdmUuaG9va3Muc3RvcCk6
CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5mbi5kZWxheSk6CisgICAgICAgIChybmF0aXZlLmpR
dWVyeS5mbi5leHRlbmQuYXR0cik6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5mbi5leHRlbmQu
cmVtb3ZlQXR0cik6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5leHRlbmQuYXR0cik6CisgICAg
ICAgIChybmF0aXZlLmpRdWVyeS5leHRlbmQuYXR0ckhvb2tzLnR5cGUuc2V0IGlmKToKKyAgICAg
ICAgKHJuYXRpdmUualF1ZXJ5LmV4dGVuZC5hdHRySG9va3MudHlwZSk6CisgICAgICAgIChybmF0
aXZlLmpRdWVyeS5leHRlbmQucmVtb3ZlQXR0cik6CisgICAgICAgIChybmF0aXZlLmJvb2xIb29r
LnNldCBlbGVtKToKKyAgICAgICAgKHJuYXRpdmUuYXR0ckhhbmRsZS5uYW1lKToKKyAgICAgICAg
KHJuYXRpdmUualF1ZXJ5LmZuLmV4dGVuZC5wcm9wKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5
LmZuLmV4dGVuZC5yZW1vdmVQcm9wKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmV4dGVuZC5w
cm9wKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmV4dGVuZC5wcm9wSG9va3MudGFiSW5kZXgu
Z2V0IHZhcik6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5leHRlbmQucHJvcEhvb2tzLnRhYklu
ZGV4KToKKyAgICAgICAgKHJuYXRpdmUuYm9vbEhvb2spOgorICAgICAgICAocm5hdGl2ZS5zdXBw
b3J0Lm9wdFNlbGVjdGVkLmpRdWVyeS5wcm9wSG9va3Muc2VsZWN0ZWQuZ2V0IGVsZW0pOgorICAg
ICAgICAocm5hdGl2ZS5zdXBwb3J0Lm9wdFNlbGVjdGVkLmpRdWVyeS5wcm9wSG9va3Muc2VsZWN0
ZWQuc2V0IGVsZW0pOgorICAgICAgICAocm5hdGl2ZS5zdHJpcEFuZENvbGxhcHNlKToKKyAgICAg
ICAgKHJuYXRpdmUuZ2V0Q2xhc3MpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5k
LmFkZENsYXNzKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmZuLmV4dGVuZC5yZW1vdmVDbGFz
cyk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5mbi5leHRlbmQudG9nZ2xlQ2xhc3MpOgorICAg
ICAgICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5kLmhhc0NsYXNzKToKKyAgICAgICAgKHJuYXRp
dmUualF1ZXJ5LmZuLmV4dGVuZC52YWwpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZXh0ZW5k
LnZhbEhvb2tzLnNlbGVjdC5nZXQgdmFyKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmV4dGVu
ZC52YWxIb29rcy5zZWxlY3QpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZXh0ZW5kLnZhbEhv
b2tzLnNlbGVjdC5zZXQgdmFyKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LnZhbEhvb2tzLnRo
aXMuc2V0IGlmKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LnZhbEhvb2tzLnRoaXMpOgorICAg
ICAgICAocm5hdGl2ZS50cmlnZ2VyKToKKyAgICAgICAgKHJuYXRpdmUuc2ltdWxhdGUpOgorICAg
ICAgICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5kLnRyaWdnZXIpOgorICAgICAgICAocm5hdGl2
ZS5qUXVlcnkuZm4uZXh0ZW5kLnRyaWdnZXJIYW5kbGVyKToKKyAgICAgICAgKHJuYXRpdmUualF1
ZXJ5LmZuLmV4dGVuZC5ob3Zlcik6CisgICAgICAgIChybmF0aXZlLnN1cHBvcnQuZm9jdXNpbi5o
YW5kbGVyKToKKyAgICAgICAgKHJuYXRpdmUuc3VwcG9ydC5mb2N1c2luLmpRdWVyeS5ldmVudC5z
cGVjaWFsLmZpeC5zZXR1cCk6CisgICAgICAgIChybmF0aXZlLnN1cHBvcnQuZm9jdXNpbi5qUXVl
cnkuZXZlbnQuc3BlY2lhbC5maXgudGVhcmRvd24pOgorICAgICAgICAocm5hdGl2ZS5idWlsZFBh
cmFtcyk6CisgICAgICAgIChybmF0aXZlLmFkZCk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5w
YXJhbSk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5mbi5leHRlbmQuc2VyaWFsaXplKToKKyAg
ICAgICAgKHJuYXRpdmUualF1ZXJ5LmZuLmV4dGVuZC5zZXJpYWxpemVBcnJheSk6CisgICAgICAg
IChybmF0aXZlLmpRdWVyeS5mbi5leHRlbmQud3JhcEFsbCk6CisgICAgICAgIChybmF0aXZlLmpR
dWVyeS5mbi5leHRlbmQud3JhcElubmVyKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmZuLmV4
dGVuZC53cmFwKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmZuLmV4dGVuZC51bndyYXApOgor
ICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZXhwci5wc2V1ZG9zLmhpZGRlbik6CisgICAgICAgIChy
bmF0aXZlLmpRdWVyeS5leHByLnBzZXVkb3MudmlzaWJsZSk6CisgICAgICAgIChybmF0aXZlLnN1
cHBvcnQuY3JlYXRlSFRNTERvY3VtZW50KToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LnBhcnNl
SFRNTCk6CisgICAgICAgIChybmF0aXZlLmdldFdpbmRvdyk6CisgICAgICAgIChybmF0aXZlLmpR
dWVyeS5vZmZzZXQuc2V0T2Zmc2V0KToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmZuLmV4dGVu
ZC5vZmZzZXQpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5kLnBvc2l0aW9uKToK
KyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmZuLmV4dGVuZC5vZmZzZXRQYXJlbnQpOgorICAgICAg
ICAocm5hdGl2ZS5qUXVlcnkuZm4ubWV0aG9kKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5Lm5v
Q29uZmxpY3QpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L2Rpc3QvanF1ZXJ5
LnNsaW0ubWluLmpzOiBBZGRlZC4KKyAgICAgICAgKHIpOgorICAgICAgICAodik6CisgICAgICAg
IChyLmZuLnIucHJvdG90eXBlLnRvQXJyYXkpOgorICAgICAgICAoci5mbi5yLnByb3RvdHlwZS5w
dXNoU3RhY2spOgorICAgICAgICAoci5mbi5yLnByb3RvdHlwZS5lYWNoKToKKyAgICAgICAgKHIu
Zm4uci5wcm90b3R5cGUubWFwKToKKyAgICAgICAgKHIuZm4uci5wcm90b3R5cGUuc2xpY2UpOgor
ICAgICAgICAoci5mbi5yLnByb3RvdHlwZS5maXJzdCk6CisgICAgICAgIChyLmZuLnIucHJvdG90
eXBlLmxhc3QpOgorICAgICAgICAoci5mbi5yLnByb3RvdHlwZS5lcSk6CisgICAgICAgIChyLmZu
LnIucHJvdG90eXBlLmVuZCk6CisgICAgICAgIChyLmV4dGVuZC5yLmZuLmV4dGVuZCk6CisgICAg
ICAgIChyLmV4dGVuZCk6CisgICAgICAgIChyLmV4dGVuZC4pOgorICAgICAgICAoQik6CisgICAg
ICAgIChJKToKKyAgICAgICAgKFkuYWEpOgorICAgICAgICAoWS5jYSk6CisgICAgICAgIChZLmRh
KToKKyAgICAgICAgKFkuY2F0Y2guRyk6CisgICAgICAgIChZLmdhKToKKyAgICAgICAgKFkuaGEp
OgorICAgICAgICAoWS5pYSk6CisgICAgICAgIChZLmphKToKKyAgICAgICAgKFkua2EpOgorICAg
ICAgICAoWS5sYSk6CisgICAgICAgIChZLm1hKToKKyAgICAgICAgKFkubmEpOgorICAgICAgICAo
WS5vYSk6CisgICAgICAgIChZLnBhLik6CisgICAgICAgIChZLnBhKToKKyAgICAgICAgKFkuKToK
KyAgICAgICAgKFkuZi5nYS5pc1hNTCk6CisgICAgICAgIChZLm0uZ2Euc2V0RG9jdW1lbnQpOgor
ICAgICAgICAoWS5nYS5tYXRjaGVzKToKKyAgICAgICAgKFkuZ2EubWF0Y2hlc1NlbGVjdG9yKToK
KyAgICAgICAgKFkuZ2EuY29udGFpbnMpOgorICAgICAgICAoWS5nYS5hdHRyKToKKyAgICAgICAg
KFkuZ2EuZXNjYXBlKToKKyAgICAgICAgKFkuZ2EuZXJyb3IpOgorICAgICAgICAoWS5nYS51bmlx
dWVTb3J0KToKKyAgICAgICAgKFkuZS5nYS5nZXRUZXh0KToKKyAgICAgICAgKFkuZC5nYS5zZWxl
Y3RvcnMucHJlRmlsdGVyLkFUVFIpOgorICAgICAgICAoWS5kLmdhLnNlbGVjdG9ycy5wcmVGaWx0
ZXIuQ0hJTEQpOgorICAgICAgICAoWS5kLmdhLnNlbGVjdG9ycy5wcmVGaWx0ZXIuUFNFVURPKToK
KyAgICAgICAgKFkuZC5nYS5zZWxlY3RvcnMuZmlsdGVyLik6CisgICAgICAgIChZLmQuZ2Euc2Vs
ZWN0b3JzLmZpbHRlci5UQUcpOgorICAgICAgICAoWS5kLmdhLnNlbGVjdG9ycy5maWx0ZXIuQ0xB
U1MpOgorICAgICAgICAoWS5kLmdhLnNlbGVjdG9ycy5maWx0ZXIuQVRUUik6CisgICAgICAgIChZ
LmQuZ2Euc2VsZWN0b3JzLmZpbHRlci5DSElMRCk6CisgICAgICAgIChZLmQuZ2Euc2VsZWN0b3Jz
LmZpbHRlci5QU0VVRE8pOgorICAgICAgICAoWS5kLmdhLnNlbGVjdG9ycy5wc2V1ZG9zLik6Cisg
ICAgICAgIChZLmQuZ2Euc2VsZWN0b3JzLnBzZXVkb3MudGFyZ2V0KToKKyAgICAgICAgKFkuZC5n
YS5zZWxlY3RvcnMucHNldWRvcy5yb290KToKKyAgICAgICAgKFkuZC5nYS5zZWxlY3RvcnMucHNl
dWRvcy5mb2N1cyk6CisgICAgICAgIChZLmQuZ2Euc2VsZWN0b3JzLnBzZXVkb3MuY2hlY2tlZCk6
CisgICAgICAgIChZLmQuZ2Euc2VsZWN0b3JzLnBzZXVkb3Muc2VsZWN0ZWQpOgorICAgICAgICAo
WS5kLmdhLnNlbGVjdG9ycy5wc2V1ZG9zLmVtcHR5KToKKyAgICAgICAgKFkuZC5nYS5zZWxlY3Rv
cnMucHNldWRvcy5wYXJlbnQpOgorICAgICAgICAoWS5kLmdhLnNlbGVjdG9ycy5wc2V1ZG9zLmhl
YWRlcik6CisgICAgICAgIChZLmQuZ2Euc2VsZWN0b3JzLnBzZXVkb3MuaW5wdXQpOgorICAgICAg
ICAoWS5kLmdhLnNlbGVjdG9ycy5wc2V1ZG9zLmJ1dHRvbik6CisgICAgICAgIChZLmQuZ2Euc2Vs
ZWN0b3JzLnBzZXVkb3MudGV4dCk6CisgICAgICAgIChZLnJhKToKKyAgICAgICAgKFkuZy5nYS50
b2tlbml6ZSk6CisgICAgICAgIChZLnNhKToKKyAgICAgICAgKFkudGEpOgorICAgICAgICAoWS51
YSk6CisgICAgICAgIChZLnZhKToKKyAgICAgICAgKFkud2EpOgorICAgICAgICAoWS54YSk6Cisg
ICAgICAgIChZLnlhKToKKyAgICAgICAgKFkuZik6CisgICAgICAgIChZLnphKToKKyAgICAgICAg
KFkucmV0dXJuLmguZ2EuY29tcGlsZSk6CisgICAgICAgIChZLmkuZ2Euc2VsZWN0KToKKyAgICAg
ICAgKFkueSk6CisgICAgICAgIChZLnopOgorICAgICAgICAoWSk6CisgICAgICAgIChZLnIuZmls
dGVyKToKKyAgICAgICAgKFkuci5mbi5leHRlbmQuKToKKyAgICAgICAgKFkuci5mbi5leHRlbmQp
OgorICAgICAgICAoWS5HLnIuZm4uaW5pdCk6CisgICAgICAgIChZLnIuZWFjaCk6CisgICAgICAg
IChZLkwpOgorICAgICAgICAoWS5pKToKKyAgICAgICAgKFkuai4pOgorICAgICAgICAoWS5qLmFk
ZCk6CisgICAgICAgIChZLmoucmVtb3ZlKToKKyAgICAgICAgKFkuai5oYXMpOgorICAgICAgICAo
WS5qLmVtcHR5KToKKyAgICAgICAgKFkuai5kaXNhYmxlKToKKyAgICAgICAgKFkuai5kaXNhYmxl
ZCk6CisgICAgICAgIChZLmoubG9jayk6CisgICAgICAgIChZLmoubG9ja2VkKToKKyAgICAgICAg
KFkuai5maXJlV2l0aCk6CisgICAgICAgIChZLmouZmlyZSk6CisgICAgICAgIChZLmouZmlyZWQp
OgorICAgICAgICAoWS5yLkNhbGxiYWNrcyk6CisgICAgICAgIChZLk0pOgorICAgICAgICAoWS5O
KToKKyAgICAgICAgKFkuTyk6CisgICAgICAgIChZLnIuZXh0ZW5kLik6CisgICAgICAgIChZLnIu
ZXh0ZW5kKToKKyAgICAgICAgKFkuci5EZWZlcnJlZC5leGNlcHRpb25Ib29rKToKKyAgICAgICAg
KFkuci5yZWFkeUV4Y2VwdGlvbik6CisgICAgICAgIChZLnIuZm4ucmVhZHkpOgorICAgICAgICAo
WS5SKToKKyAgICAgICAgKFkuUyk6CisgICAgICAgIChZLlQpOgorICAgICAgICAoWS5VKToKKyAg
ICAgICAgKFkuVS5wcm90b3R5cGUuY2FjaGUpOgorICAgICAgICAoWS5VLnByb3RvdHlwZS5hY2Nl
c3MpOgorICAgICAgICAoWS5VLnByb3RvdHlwZS5yZW1vdmUpOgorICAgICAgICAoWS5VLnByb3Rv
dHlwZS5oYXNEYXRhKToKKyAgICAgICAgKFkuWik6CisgICAgICAgIChZLmVhKToKKyAgICAgICAg
KFkuci5ldmVudC4pOgorICAgICAgICAoWS5yLmV2ZW50LmFkZCk6CisgICAgICAgIChZLnIuZXZl
bnQucmVtb3ZlKToKKyAgICAgICAgKFkuci5ldmVudC5kaXNwYXRjaCk6CisgICAgICAgIChZLnIu
ZXZlbnQuaGFuZGxlcnMpOgorICAgICAgICAoWS5yLmV2ZW50LmFkZFByb3ApOgorICAgICAgICAo
WS5yLmV2ZW50LnNldCBnZXQgZml4KToKKyAgICAgICAgKFkuci5ldmVudC5zcGVjaWFsLmZvY3Vz
LnRyaWdnZXIpOgorICAgICAgICAoWS5yLmV2ZW50LnNwZWNpYWwuYmx1ci50cmlnZ2VyKToKKyAg
ICAgICAgKFkuci5ldmVudC5zcGVjaWFsLmNsaWNrLnRyaWdnZXIpOgorICAgICAgICAoWS5yLmV2
ZW50LnNwZWNpYWwuY2xpY2suX2RlZmF1bHQpOgorICAgICAgICAoWS5yLmV2ZW50LnNwZWNpYWwu
YmVmb3JldW5sb2FkLnBvc3REaXNwYXRjaCk6CisgICAgICAgIChZLnIucmVtb3ZlRXZlbnQpOgor
ICAgICAgICAoWS5yLkV2ZW50KToKKyAgICAgICAgKFkuci5FdmVudC5wcm90b3R5cGUucHJldmVu
dERlZmF1bHQpOgorICAgICAgICAoWS5yLkV2ZW50LnByb3RvdHlwZS5zdG9wUHJvcGFnYXRpb24p
OgorICAgICAgICAoWS5yLkV2ZW50LnByb3RvdHlwZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24p
OgorICAgICAgICAoWS5EYSk6CisgICAgICAgIChZLkVhKToKKyAgICAgICAgKFkuRmEpOgorICAg
ICAgICAoWS5HYSk6CisgICAgICAgIChZLkphKToKKyAgICAgICAgKFkuTWEpOgorICAgICAgICAo
WS5iKToKKyAgICAgICAgKFkuVWEpOgorICAgICAgICAoWS5WYSk6CisgICAgICAgIChZLldhKToK
KyAgICAgICAgKFkuWGEpOgorICAgICAgICAoWS5nZXQgcik6CisgICAgICAgIChZLnNldCBnZXQg
cik6CisgICAgICAgIChZLnIuZm4uZGVsYXkpOgorICAgICAgICAoWS5zZXQgWWEuc2V0IHJldHVy
bik6CisgICAgICAgIChZLnNldCBZYSk6CisgICAgICAgIChZLmdldCBvLm9wdFNlbGVjdGVkKToK
KyAgICAgICAgKFkuZ2V0IG8pOgorICAgICAgICAoWS5iYik6CisgICAgICAgIChZLnNldCB2YXIp
OgorICAgICAgICAoWS5pYik6CisgICAgICAgIChZLmUpOgorICAgICAgICAoWS5yLnBhcmFtKToK
KyAgICAgICAgKFkuci5leHByLnBzZXVkb3MuaGlkZGVuKToKKyAgICAgICAgKFkuci5leHByLnBz
ZXVkb3MudmlzaWJsZSk6CisgICAgICAgIChZLm8uY3JlYXRlSFRNTERvY3VtZW50KToKKyAgICAg
ICAgKFkuci5wYXJzZUhUTUwpOgorICAgICAgICAoWS5yLm9mZnNldC5zZXRPZmZzZXQpOgorICAg
ICAgICAoWS5yZXR1cm4uci5ub0NvbmZsaWN0KToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVz
L2pxdWVyeS9kaXN0L2pxdWVyeS5zbGltLm1pbi5tYXA6IEFkZGVkLgorICAgICAgICAqIFNwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9u
b2RlX21vZHVsZXMvanF1ZXJ5L2V4dGVybmFsL3NpenpsZS9MSUNFTlNFLnR4dDogQWRkZWQuCisg
ICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvZXh0ZXJuYWwvc2l6emxlL2Rpc3Qvc2l6
emxlLmpzOiBBZGRlZC4KKyAgICAgICAgKHNvcnRPcmRlcik6CisgICAgICAgIChpbmRleE9mKToK
KyAgICAgICAgKHJuYXRpdmUuZnVuZXNjYXBlKToKKyAgICAgICAgKHJuYXRpdmUuZmNzc2VzY2Fw
ZSk6CisgICAgICAgIChybmF0aXZlLnVubG9hZEhhbmRsZXIpOgorICAgICAgICAocm5hdGl2ZS5k
aXNhYmxlZEFuY2VzdG9yLmFkZENvbWJpbmF0b3IpOgorICAgICAgICAocm5hdGl2ZS5yZXR1cm4u
ZWxlbS5kaXNhYmxlZC50cnVlKToKKyAgICAgICAgKHJuYXRpdmUuY2F0Y2gucHVzaCk6CisgICAg
ICAgIChybmF0aXZlLmNhdGNoKToKKyAgICAgICAgKHJuYXRpdmUuU2l6emxlKToKKyAgICAgICAg
KHJuYXRpdmUuY3JlYXRlQ2FjaGUpOgorICAgICAgICAocm5hdGl2ZS5tYXJrRnVuY3Rpb24pOgor
ICAgICAgICAocm5hdGl2ZS5hc3NlcnQpOgorICAgICAgICAocm5hdGl2ZS5hZGRIYW5kbGUpOgor
ICAgICAgICAocm5hdGl2ZS5zaWJsaW5nQ2hlY2spOgorICAgICAgICAocm5hdGl2ZS5jcmVhdGVJ
bnB1dFBzZXVkbyk6CisgICAgICAgIChybmF0aXZlLmNyZWF0ZUJ1dHRvblBzZXVkbyk6CisgICAg
ICAgIChybmF0aXZlLmNyZWF0ZURpc2FibGVkUHNldWRvKToKKyAgICAgICAgKHJuYXRpdmUuY3Jl
YXRlUG9zaXRpb25hbFBzZXVkby4pOgorICAgICAgICAocm5hdGl2ZS5jcmVhdGVQb3NpdGlvbmFs
UHNldWRvKToKKyAgICAgICAgKHJuYXRpdmUuKToKKyAgICAgICAgKHJuYXRpdmUuaXNYTUwuU2l6
emxlLmlzWE1MKToKKyAgICAgICAgKHJuYXRpdmUuRXhwci5maWx0ZXIuc3RyaW5nX2FwcGVhcmVk
X2hlcmUpOgorICAgICAgICAocm5hdGl2ZS5FeHByLmZpbmQuc3RyaW5nX2FwcGVhcmVkX2hlcmUp
OgorICAgICAgICAocm5hdGl2ZS5lbHNlLkV4cHIuZmlsdGVyLnN0cmluZ19hcHBlYXJlZF9oZXJl
KToKKyAgICAgICAgKHJuYXRpdmUuZWxzZS5FeHByLmZpbmQuc3RyaW5nX2FwcGVhcmVkX2hlcmUp
OgorICAgICAgICAocm5hdGl2ZS5zZXREb2N1bWVudC5TaXp6bGUuc2V0RG9jdW1lbnQpOgorICAg
ICAgICAocm5hdGl2ZS5TaXp6bGUubWF0Y2hlcyk6CisgICAgICAgIChybmF0aXZlLlNpenpsZS5t
YXRjaGVzU2VsZWN0b3IpOgorICAgICAgICAocm5hdGl2ZS5TaXp6bGUuY29udGFpbnMpOgorICAg
ICAgICAocm5hdGl2ZS5TaXp6bGUuYXR0cik6CisgICAgICAgIChybmF0aXZlLlNpenpsZS5lc2Nh
cGUpOgorICAgICAgICAocm5hdGl2ZS5TaXp6bGUuZXJyb3IpOgorICAgICAgICAocm5hdGl2ZS5T
aXp6bGUudW5pcXVlU29ydCk6CisgICAgICAgIChybmF0aXZlLmdldFRleHQuU2l6emxlLmdldFRl
eHQpOgorICAgICAgICAocm5hdGl2ZS5FeHByLlNpenpsZS5zZWxlY3RvcnMucHJlRmlsdGVyLnN0
cmluZ19hcHBlYXJlZF9oZXJlKToKKyAgICAgICAgKHJuYXRpdmUuRXhwci5TaXp6bGUuc2VsZWN0
b3JzLmZpbHRlci4pOgorICAgICAgICAocm5hdGl2ZS5FeHByLlNpenpsZS5zZWxlY3RvcnMuZmls
dGVyLnN0cmluZ19hcHBlYXJlZF9oZXJlKToKKyAgICAgICAgKHJuYXRpdmUuRXhwci5TaXp6bGUu
c2VsZWN0b3JzLnBzZXVkb3Muc3RyaW5nX2FwcGVhcmVkX2hlcmUubWFya0Z1bmN0aW9uKToKKyAg
ICAgICAgKHJuYXRpdmUuRXhwci5TaXp6bGUuc2VsZWN0b3JzLnBzZXVkb3Muc3RyaW5nX2FwcGVh
cmVkX2hlcmUpOgorICAgICAgICAocm5hdGl2ZS5FeHByLlNpenpsZS5zZWxlY3RvcnMucHNldWRv
cy5zdHJpbmdfYXBwZWFyZWRfaGVyZS5jcmVhdGVQb3NpdGlvbmFsUHNldWRvKToKKyAgICAgICAg
KHJuYXRpdmUuc2V0RmlsdGVycyk6CisgICAgICAgIChybmF0aXZlLnRva2VuaXplLlNpenpsZS50
b2tlbml6ZSk6CisgICAgICAgIChybmF0aXZlLnRvU2VsZWN0b3IpOgorICAgICAgICAocm5hdGl2
ZS5hZGRDb21iaW5hdG9yKToKKyAgICAgICAgKHJuYXRpdmUuZWxlbWVudE1hdGNoZXIpOgorICAg
ICAgICAocm5hdGl2ZS5tdWx0aXBsZUNvbnRleHRzKToKKyAgICAgICAgKHJuYXRpdmUuY29uZGVu
c2UpOgorICAgICAgICAocm5hdGl2ZS5zZXRNYXRjaGVyKToKKyAgICAgICAgKHJuYXRpdmUubWF0
Y2hlckZyb21Ub2tlbnMubWF0Y2hlcnMpOgorICAgICAgICAocm5hdGl2ZS5zdXBlck1hdGNoZXIp
OgorICAgICAgICAocm5hdGl2ZS5tYXRjaGVyRnJvbUdyb3VwTWF0Y2hlcnMpOgorICAgICAgICAo
cm5hdGl2ZS5jb21waWxlLlNpenpsZS5jb21waWxlKToKKyAgICAgICAgKHJuYXRpdmUuc2VsZWN0
LlNpenpsZS5zZWxlY3QpOgorICAgICAgICAocm5hdGl2ZS5zdXBwb3J0LnNvcnREZXRhY2hlZC5h
c3NlcnQpOgorICAgICAgICAocm5hdGl2ZS5yZXR1cm4uZWwuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1
dGUpOgorICAgICAgICAocm5hdGl2ZS5zdXBwb3J0LmF0dHJpYnV0ZXMuYXNzZXJ0KToKKyAgICAg
ICAgKHJuYXRpdmUucmV0dXJuLmVsLmdldEF0dHJpYnV0ZSk6CisgICAgICAgIChybmF0aXZlLlNp
enpsZS5ub0NvbmZsaWN0KToKKyAgICAgICAgKHJuYXRpdmUudHlwZW9mLmRlZmluZS5zdHJpbmdf
YXBwZWFyZWRfaGVyZS5kZWZpbmUuYW1kLmRlZmluZSk6CisgICAgICAgIChybmF0aXZlLmVsc2Up
OgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L2V4dGVybmFsL3NpenpsZS9kaXN0
L3NpenpsZS5taW4uanM6IEFkZGVkLgorICAgICAgICAoQik6CisgICAgICAgIChJKToKKyAgICAg
ICAgKFkuYWEpOgorICAgICAgICAoWS5jYSk6CisgICAgICAgIChZLmRhKToKKyAgICAgICAgKFku
ZWEudGEpOgorICAgICAgICAoWS5yZXR1cm4uYS5kaXNhYmxlZC4wKToKKyAgICAgICAgKFkuY2F0
Y2guRyk6CisgICAgICAgIChZLmNhdGNoKToKKyAgICAgICAgKFkuZ2EpOgorICAgICAgICAoWS5o
YSk6CisgICAgICAgIChZLmlhKToKKyAgICAgICAgKFkuamEpOgorICAgICAgICAoWS5rYSk6Cisg
ICAgICAgIChZLmxhKToKKyAgICAgICAgKFkubWEpOgorICAgICAgICAoWS5uYSk6CisgICAgICAg
IChZLm9hKToKKyAgICAgICAgKFkucGEuKToKKyAgICAgICAgKFkucGEpOgorICAgICAgICAoWS4p
OgorICAgICAgICAoWS5mLmdhLmlzWE1MKToKKyAgICAgICAgKFkubS5nYS5zZXREb2N1bWVudCk6
CisgICAgICAgIChZLmdhLm1hdGNoZXMpOgorICAgICAgICAoWS5nYS5tYXRjaGVzU2VsZWN0b3Ip
OgorICAgICAgICAoWS5nYS5jb250YWlucyk6CisgICAgICAgIChZLmdhLmF0dHIpOgorICAgICAg
ICAoWS5nYS5lc2NhcGUpOgorICAgICAgICAoWS5nYS5lcnJvcik6CisgICAgICAgIChZLmdhLnVu
aXF1ZVNvcnQpOgorICAgICAgICAoWS5lLmdhLmdldFRleHQpOgorICAgICAgICAoWS5kLmdhLnNl
bGVjdG9ycy5wcmVGaWx0ZXIuQVRUUik6CisgICAgICAgIChZLmQuZ2Euc2VsZWN0b3JzLnByZUZp
bHRlci5DSElMRCk6CisgICAgICAgIChZLmQuZ2Euc2VsZWN0b3JzLnByZUZpbHRlci5QU0VVRE8p
OgorICAgICAgICAoWS5kLmdhLnNlbGVjdG9ycy5maWx0ZXIuKToKKyAgICAgICAgKFkuZC5nYS5z
ZWxlY3RvcnMuZmlsdGVyLlRBRyk6CisgICAgICAgIChZLmQuZ2Euc2VsZWN0b3JzLmZpbHRlci5D
TEFTUyk6CisgICAgICAgIChZLmQuZ2Euc2VsZWN0b3JzLmZpbHRlci5BVFRSKToKKyAgICAgICAg
KFkuZC5nYS5zZWxlY3RvcnMuZmlsdGVyLkNISUxEKToKKyAgICAgICAgKFkuZC5nYS5zZWxlY3Rv
cnMuZmlsdGVyLlBTRVVETyk6CisgICAgICAgIChZLmQuZ2Euc2VsZWN0b3JzLnBzZXVkb3Mubm90
LmlhKToKKyAgICAgICAgKFkuZC5nYS5zZWxlY3RvcnMucHNldWRvcy5oYXMuaWEpOgorICAgICAg
ICAoWS5kLmdhLnNlbGVjdG9ycy5wc2V1ZG9zLmNvbnRhaW5zLmlhKToKKyAgICAgICAgKFkuZC5n
YS5zZWxlY3RvcnMucHNldWRvcy5sYW5nLmlhKToKKyAgICAgICAgKFkuZC5nYS5zZWxlY3RvcnMu
cHNldWRvcy50YXJnZXQpOgorICAgICAgICAoWS5kLmdhLnNlbGVjdG9ycy5wc2V1ZG9zLnJvb3Qp
OgorICAgICAgICAoWS5kLmdhLnNlbGVjdG9ycy5wc2V1ZG9zLmZvY3VzKToKKyAgICAgICAgKFku
ZC5nYS5zZWxlY3RvcnMucHNldWRvcy5jaGVja2VkKToKKyAgICAgICAgKFkuZC5nYS5zZWxlY3Rv
cnMucHNldWRvcy5zZWxlY3RlZCk6CisgICAgICAgIChZLmQuZ2Euc2VsZWN0b3JzLnBzZXVkb3Mu
ZW1wdHkpOgorICAgICAgICAoWS5kLmdhLnNlbGVjdG9ycy5wc2V1ZG9zLnBhcmVudCk6CisgICAg
ICAgIChZLmQuZ2Euc2VsZWN0b3JzLnBzZXVkb3MuaGVhZGVyKToKKyAgICAgICAgKFkuZC5nYS5z
ZWxlY3RvcnMucHNldWRvcy5pbnB1dCk6CisgICAgICAgIChZLmQuZ2Euc2VsZWN0b3JzLnBzZXVk
b3MuYnV0dG9uKToKKyAgICAgICAgKFkuZC5nYS5zZWxlY3RvcnMucHNldWRvcy50ZXh0KToKKyAg
ICAgICAgKFkuZC5nYS5zZWxlY3RvcnMucHNldWRvcy5maXJzdC5wYSk6CisgICAgICAgIChZLmQu
Z2Euc2VsZWN0b3JzLnBzZXVkb3MubGFzdC5wYSk6CisgICAgICAgIChZLmQuZ2Euc2VsZWN0b3Jz
LnBzZXVkb3MuZXEucGEpOgorICAgICAgICAoWS5kLmdhLnNlbGVjdG9ycy5wc2V1ZG9zLmV2ZW4u
cGEpOgorICAgICAgICAoWS5kLmdhLnNlbGVjdG9ycy5wc2V1ZG9zLm9kZC5wYSk6CisgICAgICAg
IChZLmQuZ2Euc2VsZWN0b3JzLnBzZXVkb3MubHQucGEpOgorICAgICAgICAoWS5kLmdhLnNlbGVj
dG9ycy5wc2V1ZG9zLmd0LnBhKToKKyAgICAgICAgKFkucmEpOgorICAgICAgICAoWS5nLmdhLnRv
a2VuaXplKToKKyAgICAgICAgKFkuc2EpOgorICAgICAgICAoWS50YSk6CisgICAgICAgIChZLnVh
KToKKyAgICAgICAgKFkudmEpOgorICAgICAgICAoWS53YSk6CisgICAgICAgIChZLnhhKToKKyAg
ICAgICAgKFkueWEpOgorICAgICAgICAoWS5mKToKKyAgICAgICAgKFkuemEpOgorICAgICAgICAo
WS5oLmdhLmNvbXBpbGUpOgorICAgICAgICAoWS5pLmdhLnNlbGVjdCk6CisgICAgICAgIChZLmMu
c29ydERldGFjaGVkLmphKToKKyAgICAgICAgKFkuYy5hdHRyaWJ1dGVzLmphKToKKyAgICAgICAg
KFkuZ2Eubm9Db25mbGljdCk6CisgICAgICAgIChZLnN0cmluZ19hcHBlYXJlZF9oZXJlLnR5cGVv
Zi5kZWZpbmUuZGVmaW5lLmFtZC5kZWZpbmUpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMv
anF1ZXJ5L2V4dGVybmFsL3NpenpsZS9kaXN0L3NpenpsZS5taW4ubWFwOiBBZGRlZC4KKyAgICAg
ICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
YmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9wYWNrYWdlLmpzb246IEFkZGVkLgorICAgICAg
ICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9i
YWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9hamF4LmpzOiBBZGRlZC4KKyAgICAgICAg
KGFkZFRvUHJlZmlsdGVyc09yVHJhbnNwb3J0cyk6CisgICAgICAgIChpbnNwZWN0UHJlZmlsdGVy
c09yVHJhbnNwb3J0cyk6CisgICAgICAgIChhamF4RXh0ZW5kKToKKyAgICAgICAgKGFqYXhIYW5k
bGVSZXNwb25zZXMpOgorICAgICAgICAoYWpheENvbnZlcnQpOgorICAgICAgICAoalF1ZXJ5LmV4
dGVuZC5hamF4U2V0dXApOgorICAgICAgICAoalF1ZXJ5LmV4dGVuZC5qcVhIUi5nZXRSZXNwb25z
ZUhlYWRlcik6CisgICAgICAgIChqUXVlcnkuZXh0ZW5kLmpxWEhSLmdldEFsbFJlc3BvbnNlSGVh
ZGVycyk6CisgICAgICAgIChqUXVlcnkuZXh0ZW5kLmpxWEhSLnNldFJlcXVlc3RIZWFkZXIpOgor
ICAgICAgICAoalF1ZXJ5LmV4dGVuZC5qcVhIUi5vdmVycmlkZU1pbWVUeXBlKToKKyAgICAgICAg
KGpRdWVyeS5leHRlbmQuanFYSFIuc3RhdHVzQ29kZSk6CisgICAgICAgIChqUXVlcnkuZXh0ZW5k
LmpxWEhSLmFib3J0KToKKyAgICAgICAgKGpRdWVyeS5leHRlbmQuZG9uZSk6CisgICAgICAgIChq
UXVlcnkuZXh0ZW5kLmFqYXgpOgorICAgICAgICAoalF1ZXJ5LmV4dGVuZC5nZXRKU09OKToKKyAg
ICAgICAgKGpRdWVyeS5leHRlbmQuZ2V0U2NyaXB0KToKKyAgICAgICAgKGpRdWVyeS5tZXRob2Qp
OgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9hamF4L2pzb25wLmpzOiBB
ZGRlZC4KKyAgICAgICAgKGpRdWVyeS5hamF4U2V0dXAuanNvbnBDYWxsYmFjayk6CisgICAgICAg
IChqc29uUHJvcC5zLmRhdGFUeXBlcy4wLnN0cmluZ19hcHBlYXJlZF9oZXJlLmVsc2UpOgorICAg
ICAgICAoanNvblByb3Aucy5kYXRhVHlwZXMuMC5zdHJpbmdfYXBwZWFyZWRfaGVyZS5zLmNvbnZl
cnRlcnMuc3RyaW5nX2FwcGVhcmVkX2hlcmUpOgorICAgICAgICAoanNvblByb3Aucy5kYXRhVHlw
ZXMuMC5zdHJpbmdfYXBwZWFyZWRfaGVyZS53aW5kb3cuY2FsbGJhY2tOYW1lKToKKyAgICAgICAg
KGpzb25Qcm9wLnMuZGF0YVR5cGVzLjAuc3RyaW5nX2FwcGVhcmVkX2hlcmUuanFYSFIuYWx3YXlz
KToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvYWpheC9sb2FkLmpzOiBB
ZGRlZC4KKyAgICAgICAgKGpRdWVyeS5mbi5sb2FkKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1
bGVzL2pxdWVyeS9zcmMvYWpheC9wYXJzZVhNTC5qczogQWRkZWQuCisgICAgICAgIChqUXVlcnku
cGFyc2VYTUwpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9hamF4L3Nj
cmlwdC5qczogQWRkZWQuCisgICAgICAgIChqUXVlcnkuYWpheFByZWZpbHRlcik6CisgICAgICAg
IChqUXVlcnkuYWpheFNldHVwLmNvbnZlcnRlcnMuc3RyaW5nX2FwcGVhcmVkX2hlcmUpOgorICAg
ICAgICAocy5jcm9zc0RvbWFpbi5yZXR1cm4uKToKKyAgICAgICAgKHMuY3Jvc3NEb21haW4ucmV0
dXJuLnNlbmQpOgorICAgICAgICAocy5jcm9zc0RvbWFpbi5yZXR1cm4uYWJvcnQpOgorICAgICAg
ICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9i
YWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9hamF4L3Zhci9sb2NhdGlvbi5qczogQWRk
ZWQuCisgICAgICAgIChkZWZpbmUpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5
L3NyYy9hamF4L3Zhci9ub25jZS5qczogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxl
cy9qcXVlcnkvc3JjL2FqYXgvdmFyL3JxdWVyeS5qczogQWRkZWQuCisgICAgICAgIChkZWZpbmUp
OgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9hamF4L3hoci5qczogQWRk
ZWQuCisgICAgICAgIChqUXVlcnkuYWpheFNldHRpbmdzLnhocik6CisgICAgICAgIChqUXVlcnku
YWpheFRyYW5zcG9ydC5yZXR1cm4uY2FsbGJhY2spOgorICAgICAgICAoalF1ZXJ5LmFqYXhUcmFu
c3BvcnQucmV0dXJuLmVsc2UueGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSk6CisgICAgICAgIChqUXVl
cnkuYWpheFRyYW5zcG9ydC5yZXR1cm4uc2VuZCk6CisgICAgICAgIChqUXVlcnkuYWpheFRyYW5z
cG9ydC5yZXR1cm4uYWJvcnQpOgorICAgICAgICAoalF1ZXJ5LmFqYXhUcmFuc3BvcnQpOgorICAg
ICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9hdHRyaWJ1dGVzLmpzOiBBZGRlZC4K
KyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvYXR0cmlidXRlcy9hdHRyLmpz
OiBBZGRlZC4KKyAgICAgICAgKGpRdWVyeS5mbi5leHRlbmQuYXR0cik6CisgICAgICAgIChqUXVl
cnkuZm4uZXh0ZW5kLnJlbW92ZUF0dHIpOgorICAgICAgICAoalF1ZXJ5LmV4dGVuZC5hdHRyKToK
KyAgICAgICAgKGpRdWVyeS5leHRlbmQuYXR0ckhvb2tzLnR5cGUuc2V0IGlmKToKKyAgICAgICAg
KGpRdWVyeS5leHRlbmQuYXR0ckhvb2tzLnR5cGUpOgorICAgICAgICAoalF1ZXJ5LmV4dGVuZC5y
ZW1vdmVBdHRyKToKKyAgICAgICAgKGJvb2xIb29rLnNldCBpZik6CisgICAgICAgIChib29sSG9v
ayk6CisgICAgICAgIChhdHRySGFuZGxlLm5hbWUpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVs
ZXMvanF1ZXJ5L3NyYy9hdHRyaWJ1dGVzL2NsYXNzZXMuanM6IEFkZGVkLgorICAgICAgICAoZ2V0
Q2xhc3MpOgorICAgICAgICAoalF1ZXJ5LmZuLmV4dGVuZC5hZGRDbGFzcyk6CisgICAgICAgIChq
UXVlcnkuZm4uZXh0ZW5kLnJlbW92ZUNsYXNzKToKKyAgICAgICAgKGpRdWVyeS5mbi5leHRlbmQu
dG9nZ2xlQ2xhc3MpOgorICAgICAgICAoalF1ZXJ5LmZuLmV4dGVuZC5oYXNDbGFzcyk6CisgICAg
ICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2F0dHJpYnV0ZXMvcHJvcC5qczogQWRk
ZWQuCisgICAgICAgIChqUXVlcnkuZm4uZXh0ZW5kLnByb3ApOgorICAgICAgICAoalF1ZXJ5LmZu
LmV4dGVuZC5yZW1vdmVQcm9wKToKKyAgICAgICAgKGpRdWVyeS5leHRlbmQucHJvcCk6CisgICAg
ICAgIChqUXVlcnkuZXh0ZW5kLnByb3BIb29rcy50YWJJbmRleC5nZXQgdmFyKToKKyAgICAgICAg
KGpRdWVyeS5leHRlbmQucHJvcEhvb2tzLnRhYkluZGV4KToKKyAgICAgICAgKHN1cHBvcnQub3B0
U2VsZWN0ZWQualF1ZXJ5LnByb3BIb29rcy5zZWxlY3RlZC5nZXQgdmFyKToKKyAgICAgICAgKHN1
cHBvcnQub3B0U2VsZWN0ZWQualF1ZXJ5LnByb3BIb29rcy5zZWxlY3RlZCk6CisgICAgICAgIChz
dXBwb3J0Lm9wdFNlbGVjdGVkLmpRdWVyeS5wcm9wSG9va3Muc2VsZWN0ZWQuc2V0IHZhcik6Cisg
ICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2F0dHJpYnV0ZXMvc3VwcG9ydC5q
czogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2F0dHJpYnV0
ZXMvdmFsLmpzOiBBZGRlZC4KKyAgICAgICAgKGpRdWVyeS5mbi5leHRlbmQuKToKKyAgICAgICAg
KGpRdWVyeS5mbi5leHRlbmQudmFsKToKKyAgICAgICAgKGpRdWVyeS5leHRlbmQudmFsSG9va3Mu
c2VsZWN0LmdldCB2YXIpOgorICAgICAgICAoalF1ZXJ5LmV4dGVuZC52YWxIb29rcy5zZWxlY3Qp
OgorICAgICAgICAoalF1ZXJ5LmV4dGVuZC52YWxIb29rcy5zZWxlY3Quc2V0IHZhcik6CisgICAg
ICAgIChqUXVlcnkudmFsSG9va3MudGhpcy5zZXQgaWYpOgorICAgICAgICAoalF1ZXJ5LnZhbEhv
b2tzLnRoaXMpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9jYWxsYmFj
a3MuanM6IEFkZGVkLgorICAgICAgICAoY3JlYXRlT3B0aW9ucyk6CisgICAgICAgIChmaXJlKToK
KyAgICAgICAgKHNlbGYuYWRkKToKKyAgICAgICAgKHNlbGYucmVtb3ZlKToKKyAgICAgICAgKHNl
bGYuaGFzKToKKyAgICAgICAgKHNlbGYuZW1wdHkpOgorICAgICAgICAoc2VsZi5kaXNhYmxlKToK
KyAgICAgICAgKHNlbGYuZGlzYWJsZWQpOgorICAgICAgICAoc2VsZi5sb2NrKToKKyAgICAgICAg
KHNlbGYubG9ja2VkKToKKyAgICAgICAgKHNlbGYuZmlyZVdpdGgpOgorICAgICAgICAoc2VsZi5m
aXJlKToKKyAgICAgICAgKHNlbGYuZmlyZWQpOgorICAgICAgICAoalF1ZXJ5LkNhbGxiYWNrcyk6
CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2NvcmUuanM6IEFkZGVkLgor
ICAgICAgICAoalF1ZXJ5KToKKyAgICAgICAgKGZjYW1lbENhc2UpOgorICAgICAgICAoalF1ZXJ5
LmZuLmpRdWVyeS5wcm90b3R5cGUudG9BcnJheSk6CisgICAgICAgIChqUXVlcnkuZm4ualF1ZXJ5
LnByb3RvdHlwZS5nZXQgaWYpOgorICAgICAgICAoalF1ZXJ5LmZuLmpRdWVyeS5wcm90b3R5cGUp
OgorICAgICAgICAoalF1ZXJ5LmZuLmpRdWVyeS5wcm90b3R5cGUucHVzaFN0YWNrKToKKyAgICAg
ICAgKGpRdWVyeS5mbi5qUXVlcnkucHJvdG90eXBlLmVhY2gpOgorICAgICAgICAoalF1ZXJ5LmZu
LmpRdWVyeS5wcm90b3R5cGUubWFwKToKKyAgICAgICAgKGpRdWVyeS5mbi5qUXVlcnkucHJvdG90
eXBlLnNsaWNlKToKKyAgICAgICAgKGpRdWVyeS5mbi5qUXVlcnkucHJvdG90eXBlLmZpcnN0KToK
KyAgICAgICAgKGpRdWVyeS5mbi5qUXVlcnkucHJvdG90eXBlLmxhc3QpOgorICAgICAgICAoalF1
ZXJ5LmZuLmpRdWVyeS5wcm90b3R5cGUuZXEpOgorICAgICAgICAoalF1ZXJ5LmZuLmpRdWVyeS5w
cm90b3R5cGUuZW5kKToKKyAgICAgICAgKGpRdWVyeS5leHRlbmQualF1ZXJ5LmZuLmV4dGVuZCk6
CisgICAgICAgIChqUXVlcnkuZXh0ZW5kLmVycm9yKToKKyAgICAgICAgKGpRdWVyeS5leHRlbmQu
bm9vcCk6CisgICAgICAgIChqUXVlcnkuZXh0ZW5kLmlzRnVuY3Rpb24pOgorICAgICAgICAoalF1
ZXJ5LmV4dGVuZC5pc1dpbmRvdyk6CisgICAgICAgIChqUXVlcnkuZXh0ZW5kLmlzTnVtZXJpYyk6
CisgICAgICAgIChqUXVlcnkuZXh0ZW5kLmlzUGxhaW5PYmplY3QpOgorICAgICAgICAoalF1ZXJ5
LmV4dGVuZC5pc0VtcHR5T2JqZWN0KToKKyAgICAgICAgKGpRdWVyeS5leHRlbmQudHlwZSk6Cisg
ICAgICAgIChqUXVlcnkuZXh0ZW5kLmdsb2JhbEV2YWwpOgorICAgICAgICAoalF1ZXJ5LmV4dGVu
ZC5jYW1lbENhc2UpOgorICAgICAgICAoalF1ZXJ5LmV4dGVuZC5ub2RlTmFtZSk6CisgICAgICAg
IChqUXVlcnkuZXh0ZW5kLmVhY2gpOgorICAgICAgICAoalF1ZXJ5LmV4dGVuZC50cmltKToKKyAg
ICAgICAgKGpRdWVyeS5leHRlbmQubWFrZUFycmF5KToKKyAgICAgICAgKGpRdWVyeS5leHRlbmQu
aW5BcnJheSk6CisgICAgICAgIChqUXVlcnkuZXh0ZW5kLm1lcmdlKToKKyAgICAgICAgKGpRdWVy
eS5leHRlbmQuZ3JlcCk6CisgICAgICAgIChqUXVlcnkuZXh0ZW5kLm1hcCk6CisgICAgICAgIChq
UXVlcnkuZXh0ZW5kLnByb3h5KToKKyAgICAgICAgKGlzQXJyYXlMaWtlKToKKyAgICAgICAgKiBT
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2Jv
bmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvY29yZS9ET01FdmFsLmpzOiBBZGRlZC4KKyAgICAg
ICAgKERPTUV2YWwpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9jb3Jl
L2FjY2Vzcy5qczogQWRkZWQuCisgICAgICAgIChlbHNlLmVsc2UuZm4pOgorICAgICAgICAoYWNj
ZXNzKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvY29yZS9pbml0Lmpz
OiBBZGRlZC4KKyAgICAgICAgKGluaXQualF1ZXJ5LmZuLmluaXQpOgorICAgICAgICAqIFNwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9u
b2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9jb3JlL3BhcnNlSFRNTC5qczogQWRkZWQuCisgICAgICAg
IChqUXVlcnkucGFyc2VIVE1MKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9z
cmMvY29yZS9yZWFkeS1uby1kZWZlcnJlZC5qczogQWRkZWQuCisgICAgICAgICh3aGVuUmVhZHkp
OgorICAgICAgICAoZXhlY3V0ZVJlYWR5KToKKyAgICAgICAgKGpRdWVyeS5mbi5yZWFkeSk6Cisg
ICAgICAgIChqUXVlcnkuZXh0ZW5kLmhvbGRSZWFkeSk6CisgICAgICAgIChqUXVlcnkuZXh0ZW5k
LndoZW5SZWFkeSk6CisgICAgICAgIChqUXVlcnkuZXh0ZW5kLnJlYWR5KToKKyAgICAgICAgKGNv
bXBsZXRlZCk6CisgICAgICAgIChkb2N1bWVudC5yZWFkeVN0YXRlLnN0cmluZ19hcHBlYXJlZF9o
ZXJlKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvY29yZS9yZWFkeS5q
czogQWRkZWQuCisgICAgICAgIChqUXVlcnkuZm4ucmVhZHkpOgorICAgICAgICAoalF1ZXJ5LmV4
dGVuZC5ob2xkUmVhZHkpOgorICAgICAgICAoalF1ZXJ5LmV4dGVuZC5yZWFkeSk6CisgICAgICAg
IChjb21wbGV0ZWQpOgorICAgICAgICAoZG9jdW1lbnQucmVhZHlTdGF0ZS5zdHJpbmdfYXBwZWFy
ZWRfaGVyZSk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2NvcmUvcmVh
ZHlFeGNlcHRpb24uanM6IEFkZGVkLgorICAgICAgICAoalF1ZXJ5LnJlYWR5RXhjZXB0aW9uKToK
KyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvY29yZS9zdHJpcEFuZENvbGxh
cHNlLmpzOiBBZGRlZC4KKyAgICAgICAgKHN0cmlwQW5kQ29sbGFwc2UpOgorICAgICAgICAqIFNw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9u
ZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9jb3JlL3N1cHBvcnQuanM6IEFkZGVkLgorICAgICAg
ICAoc3VwcG9ydC5jcmVhdGVIVE1MRG9jdW1lbnQpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVs
ZXMvanF1ZXJ5L3NyYy9jb3JlL3Zhci9yc2luZ2xlVGFnLmpzOiBBZGRlZC4KKyAgICAgICAgKGRl
ZmluZSk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2Nzcy5qczogQWRk
ZWQuCisgICAgICAgICh2ZW5kb3JQcm9wTmFtZSk6CisgICAgICAgIChzZXRQb3NpdGl2ZU51bWJl
cik6CisgICAgICAgIChhdWdtZW50V2lkdGhPckhlaWdodCk6CisgICAgICAgIChnZXRXaWR0aE9y
SGVpZ2h0KToKKyAgICAgICAgKGpRdWVyeS5leHRlbmQuY3NzSG9va3Mub3BhY2l0eS5nZXQgaWYp
OgorICAgICAgICAoalF1ZXJ5LmV4dGVuZC5jc3NIb29rcy5vcGFjaXR5KToKKyAgICAgICAgKGpR
dWVyeS5leHRlbmQuc3R5bGUpOgorICAgICAgICAoalF1ZXJ5LmV4dGVuZC5jc3MpOgorICAgICAg
ICAoalF1ZXJ5LmNzc0hvb2tzLm5hbWUuZ2V0IGlmKToKKyAgICAgICAgKGpRdWVyeS5jc3NIb29r
cy5uYW1lKToKKyAgICAgICAgKGpRdWVyeS5jc3NIb29rcy5uYW1lLnNldCB2YXIpOgorICAgICAg
ICAoalF1ZXJ5LmNzc0hvb2tzLnByZWZpeC5zdWZmaXguZXhwYW5kKToKKyAgICAgICAgKHJtYXJn
aW4udGVzdCk6CisgICAgICAgIChqUXVlcnkuZm4uZXh0ZW5kLmNzcyk6CisgICAgICAgICogU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25l
L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2Nzcy9hZGRHZXRIb29rSWYuanM6IEFkZGVkLgorICAg
ICAgICAoZGVmaW5lLnJldHVybi5nZXQgaWYpOgorICAgICAgICAoZGVmaW5lLnJldHVybik6Cisg
ICAgICAgIChkZWZpbmUuYWRkR2V0SG9va0lmKToKKyAgICAgICAgKGRlZmluZSk6CisgICAgICAg
ICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2Jh
Y2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2Nzcy9hZGp1c3RDU1MuanM6IEFkZGVkLgor
ICAgICAgICAoYWRqdXN0Q1NTKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9z
cmMvY3NzL2N1ckNTUy5qczogQWRkZWQuCisgICAgICAgIChjdXJDU1MpOgorICAgICAgICAqIFNw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9u
ZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9jc3MvaGlkZGVuVmlzaWJsZVNlbGVjdG9ycy5qczog
QWRkZWQuCisgICAgICAgIChqUXVlcnkuZXhwci5wc2V1ZG9zLmhpZGRlbik6CisgICAgICAgIChq
UXVlcnkuZXhwci5wc2V1ZG9zLnZpc2libGUpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMv
anF1ZXJ5L3NyYy9jc3Mvc2hvd0hpZGUuanM6IEFkZGVkLgorICAgICAgICAoc2hvd0hpZGUpOgor
ICAgICAgICAoalF1ZXJ5LmZuLmV4dGVuZC5zaG93KToKKyAgICAgICAgKGpRdWVyeS5mbi5leHRl
bmQuaGlkZSk6CisgICAgICAgIChqUXVlcnkuZm4uZXh0ZW5kLnRvZ2dsZSk6CisgICAgICAgICog
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2ti
b25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2Nzcy9zdXBwb3J0LmpzOiBBZGRlZC4KKyAgICAg
ICAgKGNvbXB1dGVTdHlsZVRlc3RzKToKKyAgICAgICAgKHBpeGVsUG9zaXRpb24pOgorICAgICAg
ICAoYm94U2l6aW5nUmVsaWFibGUpOgorICAgICAgICAocGl4ZWxNYXJnaW5SaWdodCk6CisgICAg
ICAgIChyZWxpYWJsZU1hcmdpbkxlZnQpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1
ZXJ5L3NyYy9jc3MvdmFyL2Nzc0V4cGFuZC5qczogQWRkZWQuCisgICAgICAgIChkZWZpbmUpOgor
ICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9jc3MvdmFyL2dldFN0eWxlcy5q
czogQWRkZWQuCisgICAgICAgIChkZWZpbmUpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMv
anF1ZXJ5L3NyYy9jc3MvdmFyL2lzSGlkZGVuV2l0aGluVHJlZS5qczogQWRkZWQuCisgICAgICAg
IChyZXR1cm4pOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9jc3MvdmFy
L3JtYXJnaW4uanM6IEFkZGVkLgorICAgICAgICAoZGVmaW5lKToKKyAgICAgICAgKiBTcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9k
ZV9tb2R1bGVzL2pxdWVyeS9zcmMvY3NzL3Zhci9ybnVtbm9ucHguanM6IEFkZGVkLgorICAgICAg
ICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9i
YWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9jc3MvdmFyL3N3YXAuanM6IEFkZGVkLgor
ICAgICAgICAoZGVmaW5lKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMv
ZGF0YS5qczogQWRkZWQuCisgICAgICAgIChnZXREYXRhKToKKyAgICAgICAgKGRhdGFBdHRyKToK
KyAgICAgICAgKGpRdWVyeS5leHRlbmQuaGFzRGF0YSk6CisgICAgICAgIChqUXVlcnkuZXh0ZW5k
LmRhdGEpOgorICAgICAgICAoalF1ZXJ5LmV4dGVuZC5yZW1vdmVEYXRhKToKKyAgICAgICAgKGpR
dWVyeS5leHRlbmQuX2RhdGEpOgorICAgICAgICAoalF1ZXJ5LmV4dGVuZC5fcmVtb3ZlRGF0YSk6
CisgICAgICAgIChqUXVlcnkuZm4uZXh0ZW5kLik6CisgICAgICAgIChqUXVlcnkuZm4uZXh0ZW5k
LmRhdGEpOgorICAgICAgICAoalF1ZXJ5LmZuLmV4dGVuZC5yZW1vdmVEYXRhKToKKyAgICAgICAg
KiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFj
a2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvZGF0YS9EYXRhLmpzOiBBZGRlZC4KKyAgICAg
ICAgKERhdGEpOgorICAgICAgICAoRGF0YS5wcm90b3R5cGUuY2FjaGUpOgorICAgICAgICAoRGF0
YS5wcm90b3R5cGUuc2V0IHZhcik6CisgICAgICAgIChEYXRhLnByb3RvdHlwZSk6CisgICAgICAg
IChEYXRhLnByb3RvdHlwZS5hY2Nlc3MpOgorICAgICAgICAoRGF0YS5wcm90b3R5cGUucmVtb3Zl
KToKKyAgICAgICAgKERhdGEucHJvdG90eXBlLmhhc0RhdGEpOgorICAgICAgICAqIFNwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2Rl
X21vZHVsZXMvanF1ZXJ5L3NyYy9kYXRhL3Zhci9hY2NlcHREYXRhLmpzOiBBZGRlZC4KKyAgICAg
ICAgKGRlZmluZSk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2RhdGEv
dmFyL2RhdGFQcml2LmpzOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVy
eS9zcmMvZGF0YS92YXIvZGF0YVVzZXIuanM6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21v
ZHVsZXMvanF1ZXJ5L3NyYy9kZWZlcnJlZC5qczogQWRkZWQuCisgICAgICAgIChJZGVudGl0eSk6
CisgICAgICAgIChUaHJvd2VyKToKKyAgICAgICAgKGFkb3B0VmFsdWUpOgorICAgICAgICAoalF1
ZXJ5LmV4dGVuZC5wcm9taXNlLnN0YXRlKToKKyAgICAgICAgKGpRdWVyeS5leHRlbmQucHJvbWlz
ZS5hbHdheXMpOgorICAgICAgICAoalF1ZXJ5LmV4dGVuZC5wcm9taXNlLnN0cmluZ19hcHBlYXJl
ZF9oZXJlKToKKyAgICAgICAgKGpRdWVyeS5leHRlbmQucHJvbWlzZS4pOgorICAgICAgICAoalF1
ZXJ5LmV4dGVuZC5wcm9taXNlLnBpcGUpOgorICAgICAgICAoalF1ZXJ5LmV4dGVuZC5wcm9taXNl
Lm1pZ2h0VGhyb3cpOgorICAgICAgICAoalF1ZXJ5LmV4dGVuZC5wcm9taXNlLnByb2Nlc3Muc3Bl
Y2lhbC5taWdodFRocm93KToKKyAgICAgICAgKGpRdWVyeS5leHRlbmQucHJvbWlzZS5yZXNvbHZl
KToKKyAgICAgICAgKGpRdWVyeS5leHRlbmQucHJvbWlzZS50aGVuKToKKyAgICAgICAgKGpRdWVy
eS5leHRlbmQucHJvbWlzZS5wcm9taXNlKToKKyAgICAgICAgKGpRdWVyeS5leHRlbmQuKToKKyAg
ICAgICAgKGpRdWVyeS5leHRlbmQuRGVmZXJyZWQpOgorICAgICAgICAoalF1ZXJ5LmV4dGVuZC51
cGRhdGVGdW5jKToKKyAgICAgICAgKGpRdWVyeS5leHRlbmQud2hlbik6CisgICAgICAgICogU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25l
L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2RlZmVycmVkL2V4Y2VwdGlvbkhvb2suanM6IEFkZGVk
LgorICAgICAgICAoalF1ZXJ5LkRlZmVycmVkLmV4Y2VwdGlvbkhvb2spOgorICAgICAgICAqIFNw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9u
ZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9kZXByZWNhdGVkLmpzOiBBZGRlZC4KKyAgICAgICAg
KGpRdWVyeS5mbi5leHRlbmQuYmluZCk6CisgICAgICAgIChqUXVlcnkuZm4uZXh0ZW5kLnVuYmlu
ZCk6CisgICAgICAgIChqUXVlcnkuZm4uZXh0ZW5kLmRlbGVnYXRlKToKKyAgICAgICAgKGpRdWVy
eS5mbi5leHRlbmQudW5kZWxlZ2F0ZSk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVl
cnkvc3JjL2RpbWVuc2lvbnMuanM6IEFkZGVkLgorICAgICAgICAoalF1ZXJ5LmZuLmZ1bmNOYW1l
KToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvZWZmZWN0cy5qczogQWRk
ZWQuCisgICAgICAgIChyYWYpOgorICAgICAgICAoY3JlYXRlRnhOb3cpOgorICAgICAgICAoY3Jl
YXRlVHdlZW4pOgorICAgICAgICAoaG9va3MuZW1wdHkuZmlyZSk6CisgICAgICAgIChkZWZhdWx0
UHJlZmlsdGVyKToKKyAgICAgICAgKHByb3BGaWx0ZXIpOgorICAgICAgICAodGljayk6CisgICAg
ICAgIChhbmltYXRpb24uZGVmZXJyZWQucHJvbWlzZSk6CisgICAgICAgIChBbmltYXRpb24pOgor
ICAgICAgICAodHdlZW5lcnMuc3RyaW5nX2FwcGVhcmVkX2hlcmUpOgorICAgICAgICAodHdlZW5l
cik6CisgICAgICAgIChwcmVmaWx0ZXIpOgorICAgICAgICAob3B0LmNvbXBsZXRlKToKKyAgICAg
ICAgKGpRdWVyeS5zcGVlZCk6CisgICAgICAgIChqUXVlcnkuZm4uZXh0ZW5kLmZhZGVUbyk6Cisg
ICAgICAgIChqUXVlcnkuZm4uZXh0ZW5kLmRvQW5pbWF0aW9uKToKKyAgICAgICAgKGpRdWVyeS5m
bi5leHRlbmQuYW5pbWF0ZSk6CisgICAgICAgIChqUXVlcnkuZm4uZXh0ZW5kLnN0b3BRdWV1ZSk6
CisgICAgICAgIChqUXVlcnkuZm4uZXh0ZW5kLnN0b3ApOgorICAgICAgICAoalF1ZXJ5LmZuLmV4
dGVuZC5maW5pc2gpOgorICAgICAgICAoalF1ZXJ5LmZuLm5hbWUpOgorICAgICAgICAoalF1ZXJ5
LmZ4LnRpY2spOgorICAgICAgICAoalF1ZXJ5LmZ4LnRpbWVyKToKKyAgICAgICAgKGpRdWVyeS5m
eC5zdGFydCk6CisgICAgICAgIChqUXVlcnkuZnguc3RvcCk6CisgICAgICAgICogU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVf
bW9kdWxlcy9qcXVlcnkvc3JjL2VmZmVjdHMvVHdlZW4uanM6IEFkZGVkLgorICAgICAgICAoVHdl
ZW4pOgorICAgICAgICAoVHdlZW4ucHJvdG90eXBlLmluaXQpOgorICAgICAgICAoVHdlZW4ucHJv
dG90eXBlLmN1cik6CisgICAgICAgIChUd2Vlbi5wcm90b3R5cGUucnVuKToKKyAgICAgICAgKFR3
ZWVuLnByb3BIb29rcy5fZGVmYXVsdC5nZXQgdmFyKToKKyAgICAgICAgKFR3ZWVuLnByb3BIb29r
cy5fZGVmYXVsdCk6CisgICAgICAgIChUd2Vlbi5wcm9wSG9va3MuX2RlZmF1bHQuc2V0IGlmKToK
KyAgICAgICAgKFR3ZWVuLnByb3BIb29rcy5zY3JvbGxUb3AuVHdlZW4ucHJvcEhvb2tzLnNjcm9s
bExlZnQuc2V0IGlmKToKKyAgICAgICAgKFR3ZWVuLnByb3BIb29rcy5zY3JvbGxUb3AuVHdlZW4u
cHJvcEhvb2tzLnNjcm9sbExlZnQpOgorICAgICAgICAoalF1ZXJ5LmVhc2luZy5saW5lYXIpOgor
ICAgICAgICAoalF1ZXJ5LmVhc2luZy5zd2luZyk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxl
cy9qcXVlcnkvc3JjL2VmZmVjdHMvYW5pbWF0ZWRTZWxlY3Rvci5qczogQWRkZWQuCisgICAgICAg
IChqUXVlcnkuZXhwci5wc2V1ZG9zLmFuaW1hdGVkKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1
bGVzL2pxdWVyeS9zcmMvZXZlbnQuanM6IEFkZGVkLgorICAgICAgICAocmV0dXJuRmFsc2UpOgor
ICAgICAgICAoc2FmZUFjdGl2ZUVsZW1lbnQpOgorICAgICAgICAoZm4pOgorICAgICAgICAob24p
OgorICAgICAgICAoalF1ZXJ5LmV2ZW50LmV2ZW50SGFuZGxlLmVsZW1EYXRhLmhhbmRsZSk6Cisg
ICAgICAgIChqUXVlcnkuZXZlbnQuYWRkKToKKyAgICAgICAgKGpRdWVyeS5ldmVudC5yZW1vdmUp
OgorICAgICAgICAoalF1ZXJ5LmV2ZW50LmRpc3BhdGNoKToKKyAgICAgICAgKGpRdWVyeS5ldmVu
dC5oYW5kbGVycyk6CisgICAgICAgIChqUXVlcnkuZXZlbnQuKToKKyAgICAgICAgKGpRdWVyeS5l
dmVudC5hZGRQcm9wKToKKyAgICAgICAgKGpRdWVyeS5ldmVudC5zZXQgZ2V0IGZpeCk6CisgICAg
ICAgIChqUXVlcnkuZXZlbnQuc3BlY2lhbC5mb2N1cy50cmlnZ2VyKToKKyAgICAgICAgKGpRdWVy
eS5ldmVudC5zcGVjaWFsLmJsdXIudHJpZ2dlcik6CisgICAgICAgIChqUXVlcnkuZXZlbnQuc3Bl
Y2lhbC5jbGljay50cmlnZ2VyKToKKyAgICAgICAgKGpRdWVyeS5ldmVudC5zcGVjaWFsLmNsaWNr
Ll9kZWZhdWx0KToKKyAgICAgICAgKGpRdWVyeS5ldmVudC5zcGVjaWFsLmJlZm9yZXVubG9hZC5w
b3N0RGlzcGF0Y2gpOgorICAgICAgICAoalF1ZXJ5LnJlbW92ZUV2ZW50KToKKyAgICAgICAgKGpR
dWVyeS5FdmVudCk6CisgICAgICAgIChqUXVlcnkuRXZlbnQucHJvdG90eXBlLnByZXZlbnREZWZh
dWx0KToKKyAgICAgICAgKGpRdWVyeS5FdmVudC5wcm90b3R5cGUuc3RvcFByb3BhZ2F0aW9uKToK
KyAgICAgICAgKGpRdWVyeS5FdmVudC5wcm90b3R5cGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9u
KToKKyAgICAgICAgKGpRdWVyeS5lYWNoKToKKyAgICAgICAgKGpRdWVyeS5ldmVudC5zcGVjaWFs
Lm9yaWcuaGFuZGxlKToKKyAgICAgICAgKGpRdWVyeS5mbi5leHRlbmQub24pOgorICAgICAgICAo
alF1ZXJ5LmZuLmV4dGVuZC5vbmUpOgorICAgICAgICAoalF1ZXJ5LmZuLmV4dGVuZC5vZmYpOgor
ICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9ldmVudC9hamF4LmpzOiBBZGRl
ZC4KKyAgICAgICAgKGpRdWVyeS5mbi50eXBlKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVz
L2pxdWVyeS9zcmMvZXZlbnQvYWxpYXMuanM6IEFkZGVkLgorICAgICAgICAoalF1ZXJ5LmZuLm5h
bWUpOgorICAgICAgICAoalF1ZXJ5LmZuLmV4dGVuZC5ob3Zlcik6CisgICAgICAgICogU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25v
ZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2V2ZW50L2ZvY3VzaW4uanM6IEFkZGVkLgorICAgICAgICAo
c3VwcG9ydC5mb2N1c2luLmhhbmRsZXIpOgorICAgICAgICAoc3VwcG9ydC5mb2N1c2luLmpRdWVy
eS5ldmVudC5zcGVjaWFsLmZpeC5zZXR1cCk6CisgICAgICAgIChzdXBwb3J0LmZvY3VzaW4ualF1
ZXJ5LmV2ZW50LnNwZWNpYWwuZml4LnRlYXJkb3duKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1
bGVzL2pxdWVyeS9zcmMvZXZlbnQvc3VwcG9ydC5qczogQWRkZWQuCisgICAgICAgICogU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25v
ZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2V2ZW50L3RyaWdnZXIuanM6IEFkZGVkLgorICAgICAgICAo
dHJpZ2dlcik6CisgICAgICAgIChzaW11bGF0ZSk6CisgICAgICAgIChqUXVlcnkuZm4uZXh0ZW5k
LnRyaWdnZXIpOgorICAgICAgICAoalF1ZXJ5LmZuLmV4dGVuZC50cmlnZ2VySGFuZGxlcik6Cisg
ICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2V4cG9ydHMvYW1kLmpzOiBBZGRl
ZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvZXhwb3J0cy9nbG9iYWwu
anM6IEFkZGVkLgorICAgICAgICAoalF1ZXJ5Lm5vQ29uZmxpY3QpOgorICAgICAgICAqIFNwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9u
b2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9qcXVlcnkuanM6IEFkZGVkLgorICAgICAgICAqIFNwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9u
b2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9tYW5pcHVsYXRpb24uanM6IEFkZGVkLgorICAgICAgICAo
bWFuaXB1bGF0aW9uVGFyZ2V0KToKKyAgICAgICAgKGRpc2FibGVTY3JpcHQpOgorICAgICAgICAo
cmVzdG9yZVNjcmlwdCk6CisgICAgICAgIChjbG9uZUNvcHlFdmVudCk6CisgICAgICAgIChmaXhJ
bnB1dCk6CisgICAgICAgIChkb21NYW5pcCk6CisgICAgICAgIChyZW1vdmUpOgorICAgICAgICAo
alF1ZXJ5LmV4dGVuZC5odG1sUHJlZmlsdGVyKToKKyAgICAgICAgKGpRdWVyeS5leHRlbmQuY2xv
bmUpOgorICAgICAgICAoalF1ZXJ5LmV4dGVuZC5jbGVhbkRhdGEpOgorICAgICAgICAoalF1ZXJ5
LmZuLmV4dGVuZC5kZXRhY2gpOgorICAgICAgICAoalF1ZXJ5LmZuLmV4dGVuZC5yZW1vdmUpOgor
ICAgICAgICAoalF1ZXJ5LmZuLmV4dGVuZC4pOgorICAgICAgICAoalF1ZXJ5LmZuLmV4dGVuZC50
ZXh0KToKKyAgICAgICAgKGpRdWVyeS5mbi5leHRlbmQuYXBwZW5kKToKKyAgICAgICAgKGpRdWVy
eS5mbi5leHRlbmQucHJlcGVuZCk6CisgICAgICAgIChqUXVlcnkuZm4uZXh0ZW5kLmJlZm9yZSk6
CisgICAgICAgIChqUXVlcnkuZm4uZXh0ZW5kLmFmdGVyKToKKyAgICAgICAgKGpRdWVyeS5mbi5l
eHRlbmQuZW1wdHkpOgorICAgICAgICAoalF1ZXJ5LmZuLmV4dGVuZC5jbG9uZSk6CisgICAgICAg
IChqUXVlcnkuZm4uZXh0ZW5kLmh0bWwpOgorICAgICAgICAoalF1ZXJ5LmZuLmV4dGVuZC5yZXBs
YWNlV2l0aCk6CisgICAgICAgIChqUXVlcnkuZm4ubmFtZSk6CisgICAgICAgICogU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVf
bW9kdWxlcy9qcXVlcnkvc3JjL21hbmlwdWxhdGlvbi9fZXZhbFVybC5qczogQWRkZWQuCisgICAg
ICAgIChqUXVlcnkuX2V2YWxVcmwpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5
L3NyYy9tYW5pcHVsYXRpb24vYnVpbGRGcmFnbWVudC5qczogQWRkZWQuCisgICAgICAgIChidWls
ZEZyYWdtZW50KToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvbWFuaXB1
bGF0aW9uL2dldEFsbC5qczogQWRkZWQuCisgICAgICAgIChnZXRBbGwpOgorICAgICAgICAqIFNw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9u
ZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9tYW5pcHVsYXRpb24vc2V0R2xvYmFsRXZhbC5qczog
QWRkZWQuCisgICAgICAgIChzZXRHbG9iYWxFdmFsKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1
bGVzL2pxdWVyeS9zcmMvbWFuaXB1bGF0aW9uL3N1cHBvcnQuanM6IEFkZGVkLgorICAgICAgICAq
IFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNr
Ym9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9tYW5pcHVsYXRpb24vdmFyL3JjaGVja2FibGVU
eXBlLmpzOiBBZGRlZC4KKyAgICAgICAgKGRlZmluZSk6CisgICAgICAgICogU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9k
dWxlcy9qcXVlcnkvc3JjL21hbmlwdWxhdGlvbi92YXIvcnNjcmlwdFR5cGUuanM6IEFkZGVkLgor
ICAgICAgICAoZGVmaW5lKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMv
bWFuaXB1bGF0aW9uL3Zhci9ydGFnTmFtZS5qczogQWRkZWQuCisgICAgICAgIChkZWZpbmUpOgor
ICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9tYW5pcHVsYXRpb24vd3JhcE1h
cC5qczogQWRkZWQuCisgICAgICAgIChkZWZpbmUpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVs
ZXMvanF1ZXJ5L3NyYy9vZmZzZXQuanM6IEFkZGVkLgorICAgICAgICAoZ2V0V2luZG93KToKKyAg
ICAgICAgKGpRdWVyeS5vZmZzZXQuc2V0T2Zmc2V0KToKKyAgICAgICAgKGpRdWVyeS5mbi5leHRl
bmQub2Zmc2V0KToKKyAgICAgICAgKGpRdWVyeS5mbi5leHRlbmQucG9zaXRpb24pOgorICAgICAg
ICAoalF1ZXJ5LmZuLmV4dGVuZC5vZmZzZXRQYXJlbnQpOgorICAgICAgICAoalF1ZXJ5LmZuLm1l
dGhvZCk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL3F1ZXVlLmpzOiBB
ZGRlZC4KKyAgICAgICAgKGpRdWVyeS5leHRlbmQucXVldWUpOgorICAgICAgICAoalF1ZXJ5LmV4
dGVuZC5uZXh0KToKKyAgICAgICAgKGpRdWVyeS5leHRlbmQuZGVxdWV1ZSk6CisgICAgICAgIChq
UXVlcnkuZXh0ZW5kLik6CisgICAgICAgIChqUXVlcnkuZXh0ZW5kLl9xdWV1ZUhvb2tzKToKKyAg
ICAgICAgKGpRdWVyeS5mbi5leHRlbmQucXVldWUpOgorICAgICAgICAoalF1ZXJ5LmZuLmV4dGVu
ZC5kZXF1ZXVlKToKKyAgICAgICAgKGpRdWVyeS5mbi5leHRlbmQuY2xlYXJRdWV1ZSk6CisgICAg
ICAgIChqUXVlcnkuZm4uZXh0ZW5kLnJlc29sdmUpOgorICAgICAgICAoalF1ZXJ5LmZuLmV4dGVu
ZC5wcm9taXNlKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvcXVldWUv
ZGVsYXkuanM6IEFkZGVkLgorICAgICAgICAoalF1ZXJ5LmZuLmRlbGF5KToKKyAgICAgICAgKiBT
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2Jv
bmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvc2VsZWN0b3ItbmF0aXZlLmpzOiBBZGRlZC4KKyAg
ICAgICAgKGZjc3Nlc2NhcGUpOgorICAgICAgICAoc29ydE9yZGVyKToKKyAgICAgICAgKHVuaXF1
ZVNvcnQpOgorICAgICAgICAoZXNjYXBlKToKKyAgICAgICAgKGpRdWVyeS5leHRlbmQuZmluZCk6
CisgICAgICAgIChqUXVlcnkuZXh0ZW5kLnRleHQpOgorICAgICAgICAoalF1ZXJ5LmV4dGVuZC5j
b250YWlucyk6CisgICAgICAgIChqUXVlcnkuZXh0ZW5kLmlzWE1MRG9jKToKKyAgICAgICAgKG1h
dGNoZXMpOgorICAgICAgICAobWF0Y2hlc1NlbGVjdG9yKToKKyAgICAgICAgKGF0dHIpOgorICAg
ICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9zZWxlY3Rvci1zaXp6bGUuanM6IEFk
ZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9zZWxlY3Rvci5qczog
QWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL3NlcmlhbGl6ZS5q
czogQWRkZWQuCisgICAgICAgIChidWlsZFBhcmFtcyk6CisgICAgICAgIChhZGQpOgorICAgICAg
ICAoalF1ZXJ5LnBhcmFtKToKKyAgICAgICAgKGpRdWVyeS5mbi5leHRlbmQuc2VyaWFsaXplKToK
KyAgICAgICAgKGpRdWVyeS5mbi5leHRlbmQuKToKKyAgICAgICAgKGpRdWVyeS5mbi5leHRlbmQu
c2VyaWFsaXplQXJyYXkpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy90
cmF2ZXJzaW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKGpRdWVyeS5mbi5leHRlbmQuaGFzKToKKyAg
ICAgICAgKGpRdWVyeS5mbi5leHRlbmQuY2xvc2VzdCk6CisgICAgICAgIChqUXVlcnkuZm4uZXh0
ZW5kLmluZGV4KToKKyAgICAgICAgKGpRdWVyeS5mbi5leHRlbmQuYWRkKToKKyAgICAgICAgKGpR
dWVyeS5mbi5leHRlbmQuYWRkQmFjayk6CisgICAgICAgIChqUXVlcnkuZWFjaC5wYXJlbnQpOgor
ICAgICAgICAoalF1ZXJ5LmVhY2gucGFyZW50cyk6CisgICAgICAgIChqUXVlcnkuZWFjaC5wYXJl
bnRzVW50aWwpOgorICAgICAgICAoalF1ZXJ5LmVhY2gubmV4dCk6CisgICAgICAgIChqUXVlcnku
ZWFjaC5wcmV2KToKKyAgICAgICAgKGpRdWVyeS5lYWNoLm5leHRBbGwpOgorICAgICAgICAoalF1
ZXJ5LmVhY2gucHJldkFsbCk6CisgICAgICAgIChqUXVlcnkuZWFjaC5uZXh0VW50aWwpOgorICAg
ICAgICAoalF1ZXJ5LmVhY2gucHJldlVudGlsKToKKyAgICAgICAgKGpRdWVyeS5lYWNoLnNpYmxp
bmdzKToKKyAgICAgICAgKGpRdWVyeS5lYWNoLmNoaWxkcmVuKToKKyAgICAgICAgKGpRdWVyeS5l
YWNoLmNvbnRlbnRzKToKKyAgICAgICAgKGpRdWVyeS5mbi5uYW1lKToKKyAgICAgICAgKiBTcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUv
bm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvdHJhdmVyc2luZy9maW5kRmlsdGVyLmpzOiBBZGRlZC4K
KyAgICAgICAgKGpRdWVyeS5maWx0ZXIpOgorICAgICAgICAoalF1ZXJ5LmZuLmV4dGVuZC5maW5k
KToKKyAgICAgICAgKGpRdWVyeS5mbi5leHRlbmQuZmlsdGVyKToKKyAgICAgICAgKGpRdWVyeS5m
bi5leHRlbmQubm90KToKKyAgICAgICAgKGpRdWVyeS5mbi5leHRlbmQuaXMpOgorICAgICAgICAq
IFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNr
Ym9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy90cmF2ZXJzaW5nL3Zhci9kaXIuanM6IEFkZGVk
LgorICAgICAgICAocmV0dXJuKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9z
cmMvdHJhdmVyc2luZy92YXIvcm5lZWRzQ29udGV4dC5qczogQWRkZWQuCisgICAgICAgICogU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25l
L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL3RyYXZlcnNpbmcvdmFyL3NpYmxpbmdzLmpzOiBBZGRl
ZC4KKyAgICAgICAgKGRlZmluZSk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkv
c3JjL3Zhci9PYmplY3RGdW5jdGlvblN0cmluZy5qczogQWRkZWQuCisgICAgICAgICogU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25v
ZGVfbW9kdWxlcy9qcXVlcnkvc3JjL3Zhci9hcnIuanM6IEFkZGVkLgorICAgICAgICAoZGVmaW5l
KToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvdmFyL2NsYXNzMnR5cGUu
anM6IEFkZGVkLgorICAgICAgICAoZGVmaW5lKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVz
L2pxdWVyeS9zcmMvdmFyL2NvbmNhdC5qczogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9k
dWxlcy9qcXVlcnkvc3JjL3Zhci9kb2N1bWVudC5qczogQWRkZWQuCisgICAgICAgIChkZWZpbmUp
OgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy92YXIvZG9jdW1lbnRFbGVt
ZW50LmpzOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvdmFy
L2ZuVG9TdHJpbmcuanM6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5
L3NyYy92YXIvZ2V0UHJvdG8uanM6IEFkZGVkLgorICAgICAgICAoZGVmaW5lKToKKyAgICAgICAg
KiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFj
a2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvdmFyL2hhc093bi5qczogQWRkZWQuCisgICAg
ICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL3Zhci9pbmRleE9mLmpzOiBBZGRlZC4K
KyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvdmFyL3BudW0uanM6IEFkZGVk
LgorICAgICAgICAoZGVmaW5lKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9z
cmMvdmFyL3B1c2guanM6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5
L3NyYy92YXIvcmNzc051bS5qczogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9q
cXVlcnkvc3JjL3Zhci9ybm90aHRtbHdoaXRlLmpzOiBBZGRlZC4KKyAgICAgICAgKGRlZmluZSk6
CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL3Zhci9zbGljZS5qczogQWRk
ZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL3Zhci9zdXBwb3J0Lmpz
OiBBZGRlZC4KKyAgICAgICAgKGRlZmluZSk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9q
cXVlcnkvc3JjL3Zhci90b1N0cmluZy5qczogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9k
dWxlcy9qcXVlcnkvc3JjL3dyYXAuanM6IEFkZGVkLgorICAgICAgICAoalF1ZXJ5LmZuLmV4dGVu
ZC53cmFwQWxsKToKKyAgICAgICAgKGpRdWVyeS5mbi5leHRlbmQud3JhcElubmVyKToKKyAgICAg
ICAgKGpRdWVyeS5mbi5leHRlbmQud3JhcCk6CisgICAgICAgIChqUXVlcnkuZm4uZXh0ZW5kLnVu
d3JhcCk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy90b2RvbXZjLWFwcC1jc3MvaW5kZXgu
Y3NzOiBBZGRlZC4KKyAgICAgICAgKGh0bWwsKToKKyAgICAgICAgKGJ1dHRvbik6CisgICAgICAg
IChib2R5KToKKyAgICAgICAgKDpmb2N1cyk6CisgICAgICAgICguaGlkZGVuKToKKyAgICAgICAg
KC50b2RvYXBwKToKKyAgICAgICAgKC50b2RvYXBwIGlucHV0Ojotd2Via2l0LWlucHV0LXBsYWNl
aG9sZGVyKToKKyAgICAgICAgKC50b2RvYXBwIGlucHV0OjotbW96LXBsYWNlaG9sZGVyKToKKyAg
ICAgICAgKC50b2RvYXBwIGlucHV0OjppbnB1dC1wbGFjZWhvbGRlcik6CisgICAgICAgICgudG9k
b2FwcCBoMSk6CisgICAgICAgICgubmV3LXRvZG8sKToKKyAgICAgICAgKC5uZXctdG9kbyk6Cisg
ICAgICAgICgubWFpbik6CisgICAgICAgIChsYWJlbFtmb3I9J3RvZ2dsZS1hbGwnXSk6CisgICAg
ICAgICgudG9nZ2xlLWFsbCk6CisgICAgICAgICgudG9nZ2xlLWFsbDpiZWZvcmUpOgorICAgICAg
ICAoLnRvZ2dsZS1hbGw6Y2hlY2tlZDpiZWZvcmUpOgorICAgICAgICAoLnRvZG8tbGlzdCk6Cisg
ICAgICAgICgudG9kby1saXN0IGxpKToKKyAgICAgICAgKC50b2RvLWxpc3QgbGk6bGFzdC1jaGls
ZCk6CisgICAgICAgICgudG9kby1saXN0IGxpLmVkaXRpbmcpOgorICAgICAgICAoLnRvZG8tbGlz
dCBsaS5lZGl0aW5nIC5lZGl0KToKKyAgICAgICAgKC50b2RvLWxpc3QgbGkuZWRpdGluZyAudmll
dyk6CisgICAgICAgICgudG9kby1saXN0IGxpIC50b2dnbGUpOgorICAgICAgICAoLnRvZG8tbGlz
dCBsaSAudG9nZ2xlOmFmdGVyKToKKyAgICAgICAgKC50b2RvLWxpc3QgbGkgLnRvZ2dsZTpjaGVj
a2VkOmFmdGVyKToKKyAgICAgICAgKC50b2RvLWxpc3QgbGkgbGFiZWwpOgorICAgICAgICAoLnRv
ZG8tbGlzdCBsaS5jb21wbGV0ZWQgbGFiZWwpOgorICAgICAgICAoLnRvZG8tbGlzdCBsaSAuZGVz
dHJveSk6CisgICAgICAgICgudG9kby1saXN0IGxpIC5kZXN0cm95OmhvdmVyKToKKyAgICAgICAg
KC50b2RvLWxpc3QgbGkgLmRlc3Ryb3k6YWZ0ZXIpOgorICAgICAgICAoLnRvZG8tbGlzdCBsaTpo
b3ZlciAuZGVzdHJveSk6CisgICAgICAgICgudG9kby1saXN0IGxpIC5lZGl0KToKKyAgICAgICAg
KC50b2RvLWxpc3QgbGkuZWRpdGluZzpsYXN0LWNoaWxkKToKKyAgICAgICAgKC5mb290ZXIpOgor
ICAgICAgICAoLmZvb3RlcjpiZWZvcmUpOgorICAgICAgICAoLnRvZG8tY291bnQpOgorICAgICAg
ICAoLnRvZG8tY291bnQgc3Ryb25nKToKKyAgICAgICAgKC5maWx0ZXJzKToKKyAgICAgICAgKC5m
aWx0ZXJzIGxpKToKKyAgICAgICAgKC5maWx0ZXJzIGxpIGEpOgorICAgICAgICAoLmZpbHRlcnMg
bGkgYTpob3Zlcik6CisgICAgICAgICguZmlsdGVycyBsaSBhLnNlbGVjdGVkKToKKyAgICAgICAg
KC5jbGVhci1jb21wbGV0ZWQsKToKKyAgICAgICAgKC5jbGVhci1jb21wbGV0ZWQ6aG92ZXIpOgor
ICAgICAgICAoLmluZm8pOgorICAgICAgICAoLmluZm8gcCk6CisgICAgICAgICguaW5mbyBhKToK
KyAgICAgICAgKC5pbmZvIGE6aG92ZXIpOgorICAgICAgICAoQG1lZGlhIHNjcmVlbiBhbmQgKC13
ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzowKSk6CisgICAgICAgICgudG9nZ2xlLWFsbCwp
OgorICAgICAgICAoQG1lZGlhIChtYXgtd2lkdGg6IDQzMHB4KSk6CisgICAgICAgICogU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25v
ZGVfbW9kdWxlcy90b2RvbXZjLWFwcC1jc3MvcGFja2FnZS5qc29uOiBBZGRlZC4KKyAgICAgICAg
KiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFj
a2JvbmUvbm9kZV9tb2R1bGVzL3RvZG9tdmMtYXBwLWNzcy9yZWFkbWUubWQ6IEFkZGVkLgorICAg
ICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvdG9kb212Yy1jb21tb24vYmFzZS5jc3M6IEFkZGVkLgor
ICAgICAgICAoaHIpOgorICAgICAgICAoLmxlYXJuIGEpOgorICAgICAgICAoLmxlYXJuIGE6aG92
ZXIpOgorICAgICAgICAoLmxlYXJuIGgzLCk6CisgICAgICAgICgubGVhcm4gaDMpOgorICAgICAg
ICAoLmxlYXJuIGg0KToKKyAgICAgICAgKC5sZWFybiBoNSk6CisgICAgICAgICgubGVhcm4gdWwp
OgorICAgICAgICAoLmxlYXJuIGxpKToKKyAgICAgICAgKC5sZWFybiBwKToKKyAgICAgICAgKCNp
c3N1ZS1jb3VudCk6CisgICAgICAgICgucXVvdGUpOgorICAgICAgICAoLnF1b3RlIHApOgorICAg
ICAgICAoLnF1b3RlIHA6YmVmb3JlKToKKyAgICAgICAgKC5xdW90ZSBwOmFmdGVyKToKKyAgICAg
ICAgKC5xdW90ZSBmb290ZXIpOgorICAgICAgICAoLnF1b3RlIGZvb3RlciBpbWcpOgorICAgICAg
ICAoLnF1b3RlIGZvb3RlciBhKToKKyAgICAgICAgKC5zcGVlY2gtYnViYmxlKToKKyAgICAgICAg
KC5zcGVlY2gtYnViYmxlOmFmdGVyKToKKyAgICAgICAgKC5sZWFybi1iYXIgPiAubGVhcm4pOgor
ICAgICAgICAoQG1lZGlhIChtaW4td2lkdGg6IDg5OXB4KSk6CisgICAgICAgICgubGVhcm4tYmFy
KToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jhc2UuanM6IENv
cGllZCBmcm9tIFBlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
bGFicy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QvYm93ZXJfY29tcG9uZW50cy90b2RvbXZj
LWNvbW1vbi9iYXNlLmpzLgorICAgICAgICAoXy5kZWZhdWx0cyk6CisgICAgICAgICh0ZW1wbGF0
ZSk6CisgICAgICAgIChlc2NhcGVyLl8udGVtcGxhdGUpOgorICAgICAgICAoXyk6CisgICAgICAg
IChsb2NhdGlvbi5ob3N0bmFtZS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5pLnIuaS5yKToKKyAgICAg
ICAgKHJlZGlyZWN0KToKKyAgICAgICAgKGZpbmRSb290KToKKyAgICAgICAgKHhoci5vbmxvYWQp
OgorICAgICAgICAoZ2V0RmlsZSk6CisgICAgICAgIChMZWFybik6CisgICAgICAgIChMZWFybi5w
cm90b3R5cGUuYXBwZW5kKToKKyAgICAgICAgKExlYXJuLnByb3RvdHlwZS5mZXRjaElzc3VlQ291
bnQpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvdG9kb212Yy1jb21tb24vcGFja2FnZS5q
c29uOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL3Jl
YWRtZS5tZDogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy91bmRlcnNjb3JlL0xJ
Q0VOU0U6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvdW5kZXJzY29yZS9SRUFE
TUUubWQ6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvdW5kZXJzY29yZS9wYWNr
YWdlLmpzb246IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvdW5kZXJzY29yZS91
bmRlcnNjb3JlLW1pbi5qczogQWRkZWQuCisgICAgICAgIChuLnQpOgorICAgICAgICAobik6Cisg
ICAgICAgICh0KToKKyAgICAgICAgKHIpOgorICAgICAgICAoZSk6CisgICAgICAgIChkKToKKyAg
ICAgICAgKG0pOgorICAgICAgICAoYik6CisgICAgICAgICh4KToKKyAgICAgICAgKG0uaXRlcmF0
ZWUpOgorICAgICAgICAoXyk6CisgICAgICAgIChqKToKKyAgICAgICAgKHcpOgorICAgICAgICAo
ayk6CisgICAgICAgIChtLmVhY2gubS5mb3JFYWNoKToKKyAgICAgICAgKG0ubWFwLm0uY29sbGVj
dCk6CisgICAgICAgIChtLmZpbmQubS5kZXRlY3QpOgorICAgICAgICAobS5maWx0ZXIubS5zZWxl
Y3QpOgorICAgICAgICAobS5yZWplY3QpOgorICAgICAgICAobS5ldmVyeS5tLmFsbCk6CisgICAg
ICAgIChtLnNvbWUubS5hbnkpOgorICAgICAgICAobS5jb250YWlucy5tLmluY2x1ZGVzLm0uaW5j
bHVkZSk6CisgICAgICAgIChtLmludm9rZSk6CisgICAgICAgIChtLnBsdWNrKToKKyAgICAgICAg
KG0ud2hlcmUpOgorICAgICAgICAobS5maW5kV2hlcmUpOgorICAgICAgICAobS5tYXgpOgorICAg
ICAgICAobS5taW4pOgorICAgICAgICAobS5zaHVmZmxlKToKKyAgICAgICAgKG0uc2FtcGxlKToK
KyAgICAgICAgKG0uc29ydEJ5KToKKyAgICAgICAgKEYpOgorICAgICAgICAobS5ncm91cEJ5LkYp
OgorICAgICAgICAobS5pbmRleEJ5LkYpOgorICAgICAgICAobS5jb3VudEJ5LkYpOgorICAgICAg
ICAobS50b0FycmF5KToKKyAgICAgICAgKG0uc2l6ZSk6CisgICAgICAgIChtLnBhcnRpdGlvbik6
CisgICAgICAgIChtLmZpcnN0Lm0uaGVhZC5tLnRha2UpOgorICAgICAgICAobS5pbml0aWFsKToK
KyAgICAgICAgKG0ubGFzdCk6CisgICAgICAgIChtLnJlc3QubS50YWlsLm0uZHJvcCk6CisgICAg
ICAgIChtLmNvbXBhY3QpOgorICAgICAgICAoUyk6CisgICAgICAgIChtLmZsYXR0ZW4pOgorICAg
ICAgICAobS53aXRob3V0KToKKyAgICAgICAgKG0udW5pcS5tLnVuaXF1ZSk6CisgICAgICAgICht
LnVuaW9uKToKKyAgICAgICAgKG0uaW50ZXJzZWN0aW9uKToKKyAgICAgICAgKG0uZGlmZmVyZW5j
ZSk6CisgICAgICAgIChtLnppcCk6CisgICAgICAgIChtLnVuemlwKToKKyAgICAgICAgKG0ub2Jq
ZWN0KToKKyAgICAgICAgKG0uc29ydGVkSW5kZXgpOgorICAgICAgICAobS5yYW5nZSk6CisgICAg
ICAgIChFKToKKyAgICAgICAgKG0uYmluZCk6CisgICAgICAgIChtLnBhcnRpYWwpOgorICAgICAg
ICAobS5iaW5kQWxsKToKKyAgICAgICAgKG0ubWVtb2l6ZSk6CisgICAgICAgIChtLmRlbGF5KToK
KyAgICAgICAgKGMpOgorICAgICAgICAobS50aHJvdHRsZSk6CisgICAgICAgIChtLmRlYm91bmNl
KToKKyAgICAgICAgKG0ud3JhcCk6CisgICAgICAgIChtLm5lZ2F0ZSk6CisgICAgICAgIChtLmNv
bXBvc2UpOgorICAgICAgICAobS5hZnRlcik6CisgICAgICAgIChtLmJlZm9yZSk6CisgICAgICAg
IChtLmtleXMpOgorICAgICAgICAobS5hbGxLZXlzKToKKyAgICAgICAgKG0udmFsdWVzKToKKyAg
ICAgICAgKG0ubWFwT2JqZWN0KToKKyAgICAgICAgKG0ucGFpcnMpOgorICAgICAgICAobS5pbnZl
cnQpOgorICAgICAgICAobS5mdW5jdGlvbnMubS5tZXRob2RzKToKKyAgICAgICAgKG0uZmluZEtl
eSk6CisgICAgICAgIChtLnBpY2spOgorICAgICAgICAoZWxzZS50KToKKyAgICAgICAgKG0ub21p
dCk6CisgICAgICAgIChtLmNyZWF0ZSk6CisgICAgICAgIChtLmNsb25lKToKKyAgICAgICAgKG0u
dGFwKToKKyAgICAgICAgKG0uaXNNYXRjaCk6CisgICAgICAgIChOKToKKyAgICAgICAgKG0uaXNF
cXVhbCk6CisgICAgICAgIChtLmlzRW1wdHkpOgorICAgICAgICAobS5pc0VsZW1lbnQpOgorICAg
ICAgICAobS5pc0FycmF5LmgpOgorICAgICAgICAobS5pc09iamVjdCk6CisgICAgICAgIChtLnN0
cmluZ19hcHBlYXJlZF9oZXJlLm4pOgorICAgICAgICAobS5pc0FyZ3VtZW50cy5hcmd1bWVudHMu
bS5pc0FyZ3VtZW50cyk6CisgICAgICAgIChzdHJpbmdfYXBwZWFyZWRfaGVyZS50eXBlb2Yuc3Ry
aW5nX2FwcGVhcmVkX2hlcmUudHlwZW9mLkludDhBcnJheS5tLmlzRnVuY3Rpb24pOgorICAgICAg
ICAobS5pc0Zpbml0ZSk6CisgICAgICAgIChtLmlzTmFOKToKKyAgICAgICAgKG0uaXNCb29sZWFu
KToKKyAgICAgICAgKG0uaXNOdWxsKToKKyAgICAgICAgKG0uaXNVbmRlZmluZWQpOgorICAgICAg
ICAobS5oYXMpOgorICAgICAgICAobS5ub0NvbmZsaWN0KToKKyAgICAgICAgKG0uaWRlbnRpdHkp
OgorICAgICAgICAobS5jb25zdGFudCk6CisgICAgICAgIChtLm5vb3ApOgorICAgICAgICAobS5w
cm9wZXJ0eU9mKToKKyAgICAgICAgKG0ubWF0Y2hlci5tLm1hdGNoZXMpOgorICAgICAgICAobS50
aW1lcyk6CisgICAgICAgIChtLnJhbmRvbSk6CisgICAgICAgIChtLm5vdy5EYXRlLm5vdyk6Cisg
ICAgICAgIChSKToKKyAgICAgICAgKG0ucmVzdWx0KToKKyAgICAgICAgKG0udW5pcXVlSWQpOgor
ICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvdW5kZXJzY29yZS91bmRlcnNjb3JlLW1pbi5tYXA6
IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvdW5kZXJzY29yZS91bmRlcnNjb3Jl
LmpzOiBBZGRlZC4KKyAgICAgICAgKEN0b3IpOgorICAgICAgICAoXyk6CisgICAgICAgIChvcHRp
bWl6ZUNiKToKKyAgICAgICAgKGNiKToKKyAgICAgICAgKF8uaXRlcmF0ZWUpOgorICAgICAgICAo
Y3JlYXRlQXNzaWduZXIpOgorICAgICAgICAoYmFzZUNyZWF0ZSk6CisgICAgICAgIChwcm9wZXJ0
eSk6CisgICAgICAgIChpc0FycmF5TGlrZSk6CisgICAgICAgIChfLmVhY2guXy5mb3JFYWNoKToK
KyAgICAgICAgKF8ubWFwLl8uY29sbGVjdCk6CisgICAgICAgIChjcmVhdGVSZWR1Y2UuaXRlcmF0
b3IpOgorICAgICAgICAoY3JlYXRlUmVkdWNlKToKKyAgICAgICAgKF8uZmluZC5fLmRldGVjdCk6
CisgICAgICAgIChfLmZpbHRlci5fLnNlbGVjdCk6CisgICAgICAgIChfLnJlamVjdCk6CisgICAg
ICAgIChfLmV2ZXJ5Ll8uYWxsKToKKyAgICAgICAgKF8uc29tZS5fLmFueSk6CisgICAgICAgIChf
LmNvbnRhaW5zLl8uaW5jbHVkZXMuXy5pbmNsdWRlKToKKyAgICAgICAgKF8uaW52b2tlKToKKyAg
ICAgICAgKF8ucGx1Y2spOgorICAgICAgICAoXy53aGVyZSk6CisgICAgICAgIChfLmZpbmRXaGVy
ZSk6CisgICAgICAgIChfLm1heCk6CisgICAgICAgIChfLm1pbik6CisgICAgICAgIChfLnNhbXBs
ZSk6CisgICAgICAgIChfLnNvcnRCeSk6CisgICAgICAgIChncm91cCk6CisgICAgICAgIChfLnRv
QXJyYXkpOgorICAgICAgICAoXy5zaXplKToKKyAgICAgICAgKF8ucGFydGl0aW9uKToKKyAgICAg
ICAgKF8uZmlyc3QuXy5oZWFkLl8udGFrZSk6CisgICAgICAgIChfLmluaXRpYWwpOgorICAgICAg
ICAoXy5sYXN0KToKKyAgICAgICAgKF8ucmVzdC5fLnRhaWwuXy5kcm9wKToKKyAgICAgICAgKF8u
Y29tcGFjdCk6CisgICAgICAgIChmbGF0dGVuKToKKyAgICAgICAgKF8uZmxhdHRlbik6CisgICAg
ICAgIChfLndpdGhvdXQpOgorICAgICAgICAoXy51bmlxLl8udW5pcXVlKToKKyAgICAgICAgKF8u
dW5pb24pOgorICAgICAgICAoXy5pbnRlcnNlY3Rpb24pOgorICAgICAgICAoXy5kaWZmZXJlbmNl
KToKKyAgICAgICAgKF8uemlwKToKKyAgICAgICAgKF8udW56aXApOgorICAgICAgICAoXy5vYmpl
Y3QpOgorICAgICAgICAoY3JlYXRlUHJlZGljYXRlSW5kZXhGaW5kZXIpOgorICAgICAgICAoXy5z
b3J0ZWRJbmRleCk6CisgICAgICAgIChjcmVhdGVJbmRleEZpbmRlcik6CisgICAgICAgIChfLnJh
bmdlKToKKyAgICAgICAgKGV4ZWN1dGVCb3VuZCk6CisgICAgICAgIChib3VuZCk6CisgICAgICAg
IChfLmJpbmQpOgorICAgICAgICAoXy5wYXJ0aWFsKToKKyAgICAgICAgKF8uYmluZEFsbCk6Cisg
ICAgICAgIChtZW1vaXplKToKKyAgICAgICAgKF8ubWVtb2l6ZSk6CisgICAgICAgIChfLmRlbGF5
KToKKyAgICAgICAgKGxhdGVyKToKKyAgICAgICAgKF8udGhyb3R0bGUpOgorICAgICAgICAoXy5k
ZWJvdW5jZSk6CisgICAgICAgIChfLndyYXApOgorICAgICAgICAoXy5uZWdhdGUpOgorICAgICAg
ICAoXy5jb21wb3NlKToKKyAgICAgICAgKF8uYWZ0ZXIpOgorICAgICAgICAoXy5iZWZvcmUpOgor
ICAgICAgICAoY29sbGVjdE5vbkVudW1Qcm9wcyk6CisgICAgICAgIChfLmtleXMpOgorICAgICAg
ICAoXy5hbGxLZXlzKToKKyAgICAgICAgKF8udmFsdWVzKToKKyAgICAgICAgKF8ubWFwT2JqZWN0
KToKKyAgICAgICAgKF8ucGFpcnMpOgorICAgICAgICAoXy5pbnZlcnQpOgorICAgICAgICAoXy5m
dW5jdGlvbnMuXy5tZXRob2RzKToKKyAgICAgICAgKF8uZmluZEtleSk6CisgICAgICAgIChlbHNl
Lml0ZXJhdGVlKToKKyAgICAgICAgKF8ucGljayk6CisgICAgICAgIChfLm9taXQpOgorICAgICAg
ICAoXy5jcmVhdGUpOgorICAgICAgICAoXy5jbG9uZSk6CisgICAgICAgIChfLnRhcCk6CisgICAg
ICAgIChfLmlzTWF0Y2gpOgorICAgICAgICAoZXEpOgorICAgICAgICAoXy5pc0VxdWFsKToKKyAg
ICAgICAgKF8uaXNFbXB0eSk6CisgICAgICAgIChfLmlzRWxlbWVudCk6CisgICAgICAgIChfLmlz
T2JqZWN0KToKKyAgICAgICAgKF8uaXNBcmd1bWVudHMpOgorICAgICAgICAoXy5pc0Z1bmN0aW9u
KToKKyAgICAgICAgKF8uaXNGaW5pdGUpOgorICAgICAgICAoXy5pc05hTik6CisgICAgICAgIChf
LmlzQm9vbGVhbik6CisgICAgICAgIChfLmlzTnVsbCk6CisgICAgICAgIChfLmlzVW5kZWZpbmVk
KToKKyAgICAgICAgKF8uaGFzKToKKyAgICAgICAgKF8ubm9Db25mbGljdCk6CisgICAgICAgIChf
LmlkZW50aXR5KToKKyAgICAgICAgKF8uY29uc3RhbnQpOgorICAgICAgICAoXy5ub29wKToKKyAg
ICAgICAgKF8ucHJvcGVydHlPZik6CisgICAgICAgIChfLm1hdGNoZXIuXy5tYXRjaGVzKToKKyAg
ICAgICAgKF8udGltZXMpOgorICAgICAgICAoXy5yYW5kb20pOgorICAgICAgICAoZXNjYXBlcik6
CisgICAgICAgIChjcmVhdGVFc2NhcGVyKToKKyAgICAgICAgKF8ucmVzdWx0KToKKyAgICAgICAg
KF8udW5pcXVlSWQpOgorICAgICAgICAoZXNjYXBlci5lc2NhcGVDaGFyKToKKyAgICAgICAgKHRl
bXBsYXRlKToKKyAgICAgICAgKF8udGVtcGxhdGUpOgorICAgICAgICAoXy5jaGFpbik6CisgICAg
ICAgIChyZXN1bHQpOgorICAgICAgICAoXy5taXhpbik6CisgICAgICAgIChfLnByb3RvdHlwZS52
YWx1ZSk6CisgICAgICAgIChfLnByb3RvdHlwZS50b1N0cmluZyk6CisgICAgICAgICogU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL3Bh
Y2thZ2UuanNvbjogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvYXNzZXRzL3RvZG9tdmMtZDQxZDhjZDk4
ZjAwYjIwNGU5ODAwOTk4ZWNmODQyN2UuY3NzOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9hc3NldHMv
dG9kb212Yy1mZGQyYzQ4Y2Y2NzU3NTNkZTRhNzljODU3MzQzZTIzZi5qczogQWRkZWQuCisgICAg
ICAgIChlLmRlZmF1bHQudC5kZWZhdWx0LkNvbXBvbmVudC5leHRlbmQuYWN0aW9ucy5zdGFydEVk
aXRpbmcpOgorICAgICAgICAoZS5kZWZhdWx0LnQuZGVmYXVsdC5Db21wb25lbnQuZXh0ZW5kLmFj
dGlvbnMuZG9uZUVkaXRpbmcpOgorICAgICAgICAoZS5kZWZhdWx0LnQuZGVmYXVsdC5Db21wb25l
bnQuZXh0ZW5kLmFjdGlvbnMuaGFuZGxlS2V5ZG93bik6CisgICAgICAgIChlLmRlZmF1bHQudC5k
ZWZhdWx0LkNvbXBvbmVudC5leHRlbmQuYWN0aW9ucy50b2dnbGVDb21wbGV0ZWQpOgorICAgICAg
ICAoZS5kZWZhdWx0LnQuZGVmYXVsdC5Db21wb25lbnQuZXh0ZW5kLmFjdGlvbnMucmVtb3ZlVG9k
byk6CisgICAgICAgIChlLmRlZmF1bHQudC5kZWZhdWx0LkNvbXBvbmVudC5leHRlbmQuZm9jdXNJ
bnB1dCk6CisgICAgICAgIChlLmRlZmF1bHQudC5kZWZhdWx0LkNvbXBvbmVudC5leHRlbmQuYWN0
aW9ucy5lbmFibGVUb2dnbGUpOgorICAgICAgICAoZS5kZWZhdWx0LnQuZGVmYXVsdC5Db21wb25l
bnQuZXh0ZW5kLmFjdGlvbnMuZGlzYWJsZVRvZ2dsZSk6CisgICAgICAgIChlLmRlZmF1bHQudC5k
ZWZhdWx0LkNvbXBvbmVudC5leHRlbmQuYWN0aW9ucy50b2dnbGVBbGwpOgorICAgICAgICAoZS5k
ZWZhdWx0LnQuZGVmYXVsdC5Db250cm9sbGVyLmV4dGVuZC5hY3Rpb25zLmNyZWF0ZVRvZG8pOgor
ICAgICAgICAoZS5kZWZhdWx0LnQuZGVmYXVsdC5Db250cm9sbGVyLmV4dGVuZC5hY3Rpb25zLmNs
ZWFyQ29tcGxldGVkKToKKyAgICAgICAgKG4pOgorICAgICAgICAocik6CisgICAgICAgIChhKToK
KyAgICAgICAgKGUuZGVmYXVsdC5pbml0aWFsaXplKToKKyAgICAgICAgKHIuKToKKyAgICAgICAg
KHQpOgorICAgICAgICAoci5tYXApOgorICAgICAgICAoZS5kZWZhdWx0LnQuZGVmYXVsdC5Sb3V0
ZS5leHRlbmQubW9kZWwpOgorICAgICAgICAoZS5kZWZhdWx0LnQuZGVmYXVsdC5TZXJ2aWNlLmV4
dGVuZC5maW5kQWxsKToKKyAgICAgICAgKGUuZGVmYXVsdC50LmRlZmF1bHQuU2VydmljZS5leHRl
bmQuYWRkKToKKyAgICAgICAgKGUuZGVmYXVsdC50LmRlZmF1bHQuU2VydmljZS5leHRlbmQuZGVs
ZXRlKToKKyAgICAgICAgKGUuZGVmYXVsdC50LmRlZmF1bHQuU2VydmljZS5leHRlbmQucGVyc2lz
dCk6CisgICAgICAgIChnZXQgcmV0dXJuKToKKyAgICAgICAgKHJldHVybi5idWlsZEZyYWdtZW50
KToKKyAgICAgICAgKHJldHVybi5idWlsZFJlbmRlck5vZGVzKToKKyAgICAgICAgKGUuZGVmYXVs
dC5FbWJlci5IVE1MQmFycy50ZW1wbGF0ZS5yZXR1cm4uYnVpbGRGcmFnbWVudCk6CisgICAgICAg
IChlLmRlZmF1bHQuRW1iZXIuSFRNTEJhcnMudGVtcGxhdGUucmV0dXJuLmJ1aWxkUmVuZGVyTm9k
ZXMpOgorICAgICAgICAoZS5kZWZhdWx0LkVtYmVyLkhUTUxCYXJzLnRlbXBsYXRlLmUpOgorICAg
ICAgICAoZS5kZWZhdWx0LkVtYmVyLkhUTUxCYXJzLnRlbXBsYXRlLnQpOgorICAgICAgICAoZS5k
ZWZhdWx0LkVtYmVyLkhUTUxCYXJzLnRlbXBsYXRlLm4pOgorICAgICAgICAoZS5kZWZhdWx0LkVt
YmVyLkhUTUxCYXJzLnRlbXBsYXRlLnIpOgorICAgICAgICAoZS5kZWZhdWx0LkVtYmVyLkhUTUxC
YXJzLnRlbXBsYXRlKToKKyAgICAgICAgKGNhdGNoKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9hc3NldHMvdmVu
ZG9yLTdiNWM5ODUyMDkxMGFmYTU4ZDc0ZTA1ZWM4NmNkODczLmNzczogQWRkZWQuCisgICAgICAg
ICgjaXNzdWUtY291bnQsLmhpZGRlbixsYWJlbFtmb3I9dG9nZ2xlLWFsbF0pOgorICAgICAgICAo
I2Zvb3RlciwjaW5mbywjdG9kb2FwcCBoMSwjdG9nZ2xlLWFsbCk6CisgICAgICAgIChocik6Cisg
ICAgICAgICgubGVhcm4gYSk6CisgICAgICAgICgubGVhcm4gYTpob3Zlcik6CisgICAgICAgICgu
bGVhcm4gaDMsLmxlYXJuIGg0LC5sZWFybiBoNSk6CisgICAgICAgICgubGVhcm4gaDMpOgorICAg
ICAgICAoLmxlYXJuIGg0KToKKyAgICAgICAgKC5sZWFybiBoNSk6CisgICAgICAgICgubGVhcm4g
dWwpOgorICAgICAgICAoLmxlYXJuIGxpKToKKyAgICAgICAgKC5sZWFybiBwKToKKyAgICAgICAg
KC5xdW90ZSBwOmFmdGVyLC5xdW90ZSBwOmJlZm9yZSk6CisgICAgICAgICgucXVvdGUpOgorICAg
ICAgICAoLnF1b3RlIHApOgorICAgICAgICAoLnF1b3RlIHA6YmVmb3JlKToKKyAgICAgICAgKC5x
dW90ZSBwOmFmdGVyKToKKyAgICAgICAgKC5xdW90ZSBmb290ZXIpOgorICAgICAgICAoLnF1b3Rl
IGZvb3RlciBpbWcpOgorICAgICAgICAoLnF1b3RlIGZvb3RlciBhKToKKyAgICAgICAgKC5zcGVl
Y2gtYnViYmxlKToKKyAgICAgICAgKC5zcGVlY2gtYnViYmxlOmFmdGVyKToKKyAgICAgICAgKC5s
ZWFybi1iYXI+LmxlYXJuKToKKyAgICAgICAgKCNtYWluLCNuZXctdG9kbywjdG9kby1saXN0IGxp
LCN0b2RvYXBwLC5lZGl0KToKKyAgICAgICAgKC5sZWFybi1iYXIpOgorICAgICAgICAoQG1lZGlh
IChtaW4td2lkdGg6ODk5cHgpKToKKyAgICAgICAgKGJvZHksYnV0dG9uLGh0bWwpOgorICAgICAg
ICAoYnV0dG9uKToKKyAgICAgICAgKGJvZHkpOgorICAgICAgICAoYnV0dG9uLGlucHV0W3R5cGU9
Y2hlY2tib3hdKToKKyAgICAgICAgKCN0b2RvYXBwKToKKyAgICAgICAgKCN0b2RvYXBwIGlucHV0
Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyKToKKyAgICAgICAgKCN0b2RvYXBwIGlucHV0Ojot
bW96LXBsYWNlaG9sZGVyKToKKyAgICAgICAgKCN0b2RvYXBwIGlucHV0OjppbnB1dC1wbGFjZWhv
bGRlcik6CisgICAgICAgICgjdG9kb2FwcCBoMSk6CisgICAgICAgICgjbmV3LXRvZG8sLmVkaXQp
OgorICAgICAgICAoI25ldy10b2RvKToKKyAgICAgICAgKCNtYWluKToKKyAgICAgICAgKCN0b2dn
bGUtYWxsKToKKyAgICAgICAgKCN0b2dnbGUtYWxsOmJlZm9yZSk6CisgICAgICAgICgjdG9nZ2xl
LWFsbDpjaGVja2VkOmJlZm9yZSk6CisgICAgICAgICgjdG9kby1saXN0KToKKyAgICAgICAgKCN0
b2RvLWxpc3QgbGkpOgorICAgICAgICAoI3RvZG8tbGlzdCBsaTpsYXN0LWNoaWxkKToKKyAgICAg
ICAgKCN0b2RvLWxpc3QgbGkuZWRpdGluZyk6CisgICAgICAgICgjdG9kby1saXN0IGxpLmVkaXRp
bmcgLmVkaXQpOgorICAgICAgICAoI3RvZG8tbGlzdCBsaS5lZGl0aW5nIC52aWV3KToKKyAgICAg
ICAgKCN0b2RvLWxpc3QgbGkgLnRvZ2dsZSk6CisgICAgICAgICgjdG9kby1saXN0IGxpIC50b2dn
bGU6YWZ0ZXIpOgorICAgICAgICAoI3RvZG8tbGlzdCBsaSAudG9nZ2xlOmNoZWNrZWQ6YWZ0ZXIp
OgorICAgICAgICAoI3RvZG8tbGlzdCBsaSBsYWJlbCk6CisgICAgICAgICgjdG9kby1saXN0IGxp
LmNvbXBsZXRlZCBsYWJlbCk6CisgICAgICAgICgjdG9kby1saXN0IGxpIC5kZXN0cm95KToKKyAg
ICAgICAgKCNmaWx0ZXJzLCNmb290ZXI6YmVmb3JlKToKKyAgICAgICAgKCN0b2RvLWxpc3QgbGkg
LmRlc3Ryb3k6aG92ZXIpOgorICAgICAgICAoI2ZpbHRlcnMgbGkgYSwjaW5mbyBhKToKKyAgICAg
ICAgKCN0b2RvLWxpc3QgbGkgLmRlc3Ryb3k6YWZ0ZXIpOgorICAgICAgICAoI3RvZG8tbGlzdCBs
aTpob3ZlciAuZGVzdHJveSk6CisgICAgICAgICgjdG9kby1saXN0IGxpIC5lZGl0KToKKyAgICAg
ICAgKCN0b2RvLWxpc3QgbGkuZWRpdGluZzpsYXN0LWNoaWxkKToKKyAgICAgICAgKCNmb290ZXIp
OgorICAgICAgICAoI2Zvb3RlcjpiZWZvcmUpOgorICAgICAgICAoI3RvZG8tY291bnQpOgorICAg
ICAgICAoI3RvZG8tY291bnQgc3Ryb25nKToKKyAgICAgICAgKCNmaWx0ZXJzKToKKyAgICAgICAg
KCNmaWx0ZXJzIGxpKToKKyAgICAgICAgKCNmaWx0ZXJzIGxpIGEpOgorICAgICAgICAoI2ZpbHRl
cnMgbGkgYS5zZWxlY3RlZCwjZmlsdGVycyBsaSBhOmhvdmVyKToKKyAgICAgICAgKCNmaWx0ZXJz
IGxpIGEuc2VsZWN0ZWQpOgorICAgICAgICAoI2NsZWFyLWNvbXBsZXRlZCxodG1sICNjbGVhci1j
b21wbGV0ZWQ6YWN0aXZlKToKKyAgICAgICAgKCNjbGVhci1jb21wbGV0ZWQ6aG92ZXIsI2luZm8g
YTpob3Zlcik6CisgICAgICAgICgjaW5mbyk6CisgICAgICAgICgjaW5mbyBwKToKKyAgICAgICAg
KCNpbmZvIGEpOgorICAgICAgICAoI3RvZG8tbGlzdCBsaSAudG9nZ2xlLCN0b2dnbGUtYWxsKToK
KyAgICAgICAgKEBtZWRpYSBzY3JlZW4gYW5kICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0
aW86MCkpOgorICAgICAgICAoQG1lZGlhIChtYXgtd2lkdGg6NDMwcHgpKToKKyAgICAgICAgKiBT
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJq
cy9hc3NldHMvdmVuZG9yLTk4MzZhYzhiMDE2ZmNlYTZmODljY2Y5MjkxNzc3MmY2LmpzOiBBZGRl
ZC4KKyAgICAgICAgKGNyZWF0ZURlcHJlY2F0ZWRNb2R1bGUpOgorICAgICAgICAodCk6CisgICAg
ICAgIChyKToKKyAgICAgICAgKG4pOgorICAgICAgICAoaSk6CisgICAgICAgIChvKToKKyAgICAg
ICAgKGEpOgorICAgICAgICAocyk6CisgICAgICAgICh1KToKKyAgICAgICAgKHJlcXVpcmVqcy5y
ZXF1aXJlLnJlcXVpcmVNb2R1bGUpOgorICAgICAgICAobG9hZGVyLm5vQ29uZmxpY3QpOgorICAg
ICAgICAoZi5BcnJheS5pc0FycmF5LkFycmF5LmlzQXJyYXkpOgorICAgICAgICAobi5wcm90b3R5
cGUubWFrZURlZmF1bHRFeHBvcnQpOgorICAgICAgICAobi5wcm90b3R5cGUuZXhwb3J0cyk6Cisg
ICAgICAgIChuLnByb3RvdHlwZS51bnNlZSk6CisgICAgICAgIChuLnByb3RvdHlwZS5yZWlmeSk6
CisgICAgICAgIChuLnByb3RvdHlwZS5maW5kRGVwcyk6CisgICAgICAgICh0Lmhhcyk6CisgICAg
ICAgIChuLnByb3RvdHlwZS5tYWtlUmVxdWlyZSk6CisgICAgICAgIChkZWZpbmUpOgorICAgICAg
ICAoZGVmaW5lLmFsaWFzKToKKyAgICAgICAgKHJlcXVpcmVqcy51bnNlZSk6CisgICAgICAgIChy
ZXF1aXJlanMuY2xlYXIpOgorICAgICAgICAobCk6CisgICAgICAgIChjKToKKyAgICAgICAgKGYp
OgorICAgICAgICAoZCk6CisgICAgICAgIChwKToKKyAgICAgICAgKGgpOgorICAgICAgICAobSk6
CisgICAgICAgICh2KToKKyAgICAgICAgKGIpOgorICAgICAgICAoZyk6CisgICAgICAgICh5KToK
KyAgICAgICAgKF8pOgorICAgICAgICAoayk6CisgICAgICAgIChDKToKKyAgICAgICAgKEUpOgor
ICAgICAgICAoTyk6CisgICAgICAgIChOKToKKyAgICAgICAgKFMpOgorICAgICAgICAoQSk6Cisg
ICAgICAgIChQKToKKyAgICAgICAgKGopOgorICAgICAgICAoUik6CisgICAgICAgIChMKToKKyAg
ICAgICAgKEQpOgorICAgICAgICAoTSk6CisgICAgICAgIChJKToKKyAgICAgICAgKGwucy5wcm9t
aXNlKToKKyAgICAgICAgKEgpOgorICAgICAgICAoVik6CisgICAgICAgIChxKToKKyAgICAgICAg
KHopOgorICAgICAgICAoQik6CisgICAgICAgIChVKToKKyAgICAgICAgKFcpOgorICAgICAgICAo
Syk6CisgICAgICAgIChvZSk6CisgICAgICAgIChsZSk6CisgICAgICAgIChvZS5mbi5vZS5wcm90
b3R5cGUudG9BcnJheSk6CisgICAgICAgIChvZS5mbi5vZS5wcm90b3R5cGUucHVzaFN0YWNrKToK
KyAgICAgICAgKG9lLmZuLm9lLnByb3RvdHlwZS5lYWNoKToKKyAgICAgICAgKG9lLmZuLm9lLnBy
b3RvdHlwZS5tYXApOgorICAgICAgICAob2UuZm4ub2UucHJvdG90eXBlLnNsaWNlKToKKyAgICAg
ICAgKG9lLmZuLm9lLnByb3RvdHlwZS5maXJzdCk6CisgICAgICAgIChvZS5mbi5vZS5wcm90b3R5
cGUubGFzdCk6CisgICAgICAgIChvZS5mbi5vZS5wcm90b3R5cGUuZXEpOgorICAgICAgICAob2Uu
Zm4ub2UucHJvdG90eXBlLmVuZCk6CisgICAgICAgIChvZS5leHRlbmQub2UuZm4uZXh0ZW5kKToK
KyAgICAgICAgKG9lLmV4dGVuZCk6CisgICAgICAgIChvZS5leHRlbmQuKToKKyAgICAgICAgKHIu
ZSk6CisgICAgICAgIChsLik6CisgICAgICAgIChlZSk6CisgICAgICAgICh2ZS5DSElMRCk6Cisg
ICAgICAgICh2ZS5QU0VVRE8pOgorICAgICAgICAoZmlsdGVyLik6CisgICAgICAgIChmaWx0ZXIu
VEFHKToKKyAgICAgICAgKGZpbHRlci5DTEFTUyk6CisgICAgICAgIChmaWx0ZXIuQVRUUik6Cisg
ICAgICAgIChmaWx0ZXIuQ0hJTEQpOgorICAgICAgICAoZmlsdGVyLlBTRVVETyk6CisgICAgICAg
IChwc2V1ZG9zLik6CisgICAgICAgIChwc2V1ZG9zLnRhcmdldCk6CisgICAgICAgIChwc2V1ZG9z
LnJvb3QpOgorICAgICAgICAocHNldWRvcy5mb2N1cyk6CisgICAgICAgIChwc2V1ZG9zLmVuYWJs
ZWQpOgorICAgICAgICAocHNldWRvcy5kaXNhYmxlZCk6CisgICAgICAgIChwc2V1ZG9zLmNoZWNr
ZWQpOgorICAgICAgICAocHNldWRvcy5zZWxlY3RlZCk6CisgICAgICAgIChwc2V1ZG9zLmVtcHR5
KToKKyAgICAgICAgKHBzZXVkb3MucGFyZW50KToKKyAgICAgICAgKHBzZXVkb3MuaGVhZGVyKToK
KyAgICAgICAgKHBzZXVkb3MuaW5wdXQpOgorICAgICAgICAocHNldWRvcy5idXR0b24pOgorICAg
ICAgICAocHNldWRvcy50ZXh0KToKKyAgICAgICAgKGNlKToKKyAgICAgICAgKEUudC50b2tlbml6
ZSk6CisgICAgICAgIChPLnQuY29tcGlsZSk6CisgICAgICAgIChULnQuc2VsZWN0KToKKyAgICAg
ICAgKGZlKToKKyAgICAgICAgKGRlKToKKyAgICAgICAgKG9lLmZpbHRlcik6CisgICAgICAgIChv
ZS5mbi5leHRlbmQuKToKKyAgICAgICAgKG9lLmZuLmV4dGVuZCk6CisgICAgICAgIChnZS5vZS5m
bi5pbml0KToKKyAgICAgICAgKG9lLmVhY2gpOgorICAgICAgICAoYy4pOgorICAgICAgICAoYy5h
ZGQpOgorICAgICAgICAoYy5yZW1vdmUpOgorICAgICAgICAoYy5oYXMpOgorICAgICAgICAoYy5l
bXB0eSk6CisgICAgICAgIChjLmRpc2FibGUpOgorICAgICAgICAoYy5kaXNhYmxlZCk6CisgICAg
ICAgIChjLmxvY2spOgorICAgICAgICAoYy5sb2NrZWQpOgorICAgICAgICAoYy5maXJlV2l0aCk6
CisgICAgICAgIChjLmZpcmUpOgorICAgICAgICAoYy5maXJlZCk6CisgICAgICAgIChvZS5DYWxs
YmFja3MpOgorICAgICAgICAob2UuZm4ucmVhZHkpOgorICAgICAgICAob2UucmVhZHkucHJvbWlz
ZSk6CisgICAgICAgIChrZSk6CisgICAgICAgIChDZSk6CisgICAgICAgIChzLnByb3RvdHlwZS5y
ZWdpc3Rlcik6CisgICAgICAgIChzLnByb3RvdHlwZS5jYWNoZSk6CisgICAgICAgIChzLnByb3Rv
dHlwZS5hY2Nlc3MpOgorICAgICAgICAocy5wcm90b3R5cGUucmVtb3ZlKToKKyAgICAgICAgKHMu
cHJvdG90eXBlLmhhc0RhdGEpOgorICAgICAgICAoamUpOgorICAgICAgICAob2UuZXZlbnQuKToK
KyAgICAgICAgKG9lLmV2ZW50LmFkZCk6CisgICAgICAgIChvZS5ldmVudC5yZW1vdmUpOgorICAg
ICAgICAob2UuZXZlbnQuZGlzcGF0Y2gpOgorICAgICAgICAob2UuZXZlbnQuaGFuZGxlcnMpOgor
ICAgICAgICAob2UuZXZlbnQua2V5SG9va3MuZmlsdGVyKToKKyAgICAgICAgKG9lLmV2ZW50Lm1v
dXNlSG9va3MuZmlsdGVyKToKKyAgICAgICAgKG9lLmV2ZW50LmZpeCk6CisgICAgICAgIChzLnBy
b3RvdHlwZS5nZXQgcmV0dXJuKToKKyAgICAgICAgKG9lLmV2ZW50LnNwZWNpYWwuZm9jdXMudHJp
Z2dlcik6CisgICAgICAgIChvZS5ldmVudC5zcGVjaWFsLmJsdXIudHJpZ2dlcik6CisgICAgICAg
IChvZS5ldmVudC5zcGVjaWFsLmNsaWNrLnRyaWdnZXIpOgorICAgICAgICAob2UuZXZlbnQuc3Bl
Y2lhbC5jbGljay5fZGVmYXVsdCk6CisgICAgICAgIChvZS5ldmVudC5zcGVjaWFsLmJlZm9yZXVu
bG9hZC5wb3N0RGlzcGF0Y2gpOgorICAgICAgICAocy5wcm90b3R5cGUpOgorICAgICAgICAob2Uu
cmVtb3ZlRXZlbnQpOgorICAgICAgICAob2UuRXZlbnQpOgorICAgICAgICAob2UuRXZlbnQucHJv
dG90eXBlLnByZXZlbnREZWZhdWx0KToKKyAgICAgICAgKG9lLkV2ZW50LnByb3RvdHlwZS5zdG9w
UHJvcGFnYXRpb24pOgorICAgICAgICAob2UuRXZlbnQucHJvdG90eXBlLnN0b3BJbW1lZGlhdGVQ
cm9wYWdhdGlvbik6CisgICAgICAgIChZZSk6CisgICAgICAgIChYZSk6CisgICAgICAgIChzLnBy
b3RvdHlwZS5zZXQgdmFyKToKKyAgICAgICAgKGdldCBvZSk6CisgICAgICAgIChzZXQgZ2V0IG9l
KToKKyAgICAgICAgKFIucHJvdG90eXBlLmluaXQpOgorICAgICAgICAoUi5wcm90b3R5cGUuY3Vy
KToKKyAgICAgICAgKFIucHJvdG90eXBlLnJ1bik6CisgICAgICAgIChvZS5lYXNpbmcubGluZWFy
KToKKyAgICAgICAgKG9lLmVhc2luZy5zd2luZyk6CisgICAgICAgIChuLmNvbXBsZXRlKToKKyAg
ICAgICAgKG9lLnNwZWVkKToKKyAgICAgICAgKG9lLmZ4LnRpY2spOgorICAgICAgICAob2UuZngu
dGltZXIpOgorICAgICAgICAob2UuZnguc3RhcnQpOgorICAgICAgICAob2UuZnguc3RvcCk6Cisg
ICAgICAgIChvZS5mbi5kZWxheSk6CisgICAgICAgIChSLnByb3BIb29rcy5zY3JvbGxUb3AuUi5w
cm9wSG9va3Muc2Nyb2xsTGVmdC5zZXQgZSk6CisgICAgICAgIChSLnByb3BIb29rcy5zY3JvbGxU
b3AuUi5wcm9wSG9va3Muc2Nyb2xsTGVmdCk6CisgICAgICAgIChzZXQgdXQuc2V0IHJldHVybik6
CisgICAgICAgIChzZXQgdXQpOgorICAgICAgICAob3B0U2VsZWN0ZWQpOgorICAgICAgICAoc2V0
IHZhcik6CisgICAgICAgIChvZS5wYXJzZUpTT04pOgorICAgICAgICAob2UucGFyc2VYTUwpOgor
ICAgICAgICAoZGVib3VuY2UpOgorICAgICAgICAoY2FuY2VsVGltZXJzKToKKyAgICAgICAgKGhh
c1RpbWVycyk6CisgICAgICAgIChjYW5jZWwpOgorICAgICAgICAoX2NhbmNlbEl0ZW0pOgorICAg
ICAgICAoX3J1bkV4cGlyZWRUaW1lcnMpOgorICAgICAgICAoX3NjaGVkdWxlRXhwaXJlZFRpbWVy
cyk6CisgICAgICAgIChfcmVpbnN0YWxsVGltZXJUaW1lb3V0KToKKyAgICAgICAgKF9jbGVhclRp
bWVyVGltZW91dCk6CisgICAgICAgIChfaW5zdGFsbFRpbWVyVGltZW91dCk6CisgICAgICAgIChu
LnByb3RvdHlwZS5zY2hlZHVsZSk6CisgICAgICAgIChuLnByb3RvdHlwZS5mbHVzaCk6CisgICAg
ICAgIChyLnByb3RvdHlwZS5wdXNoKToKKyAgICAgICAgKHIucHJvdG90eXBlLnB1c2hVbmlxdWVX
aXRob3V0R3VpZCk6CisgICAgICAgIChyLnByb3RvdHlwZS50YXJnZXRRdWV1ZSk6CisgICAgICAg
IChyLnByb3RvdHlwZS5wdXNoVW5pcXVlV2l0aEd1aWQpOgorICAgICAgICAoci5wcm90b3R5cGUu
cHVzaFVuaXF1ZSk6CisgICAgICAgIChyLnByb3RvdHlwZS5pbnZva2UpOgorICAgICAgICAoci5w
cm90b3R5cGUuaW52b2tlV2l0aE9uRXJyb3IpOgorICAgICAgICAoci5wcm90b3R5cGUuZmx1c2gp
OgorICAgICAgICAoci5wcm90b3R5cGUuY2FuY2VsKToKKyAgICAgICAgKHQuc2V0IGUpOgorICAg
ICAgICAodyk6CisgICAgICAgICh1LnByb3RvdHlwZS5sb29rdXApOgorICAgICAgICAodS5wcm90
b3R5cGUubG9va3VwRmFjdG9yeSk6CisgICAgICAgICh1LnByb3RvdHlwZS5kZXN0cm95KToKKyAg
ICAgICAgKHUucHJvdG90eXBlLnJlc2V0KToKKyAgICAgICAgKHUucHJvdG90eXBlLm93bmVySW5q
ZWN0aW9uKToKKyAgICAgICAgKHUucHJvdG90eXBlLmNvbnRhaW5lcik6CisgICAgICAgICh1LnBy
b3RvdHlwZS5yZWdpc3Rlcik6CisgICAgICAgICh1LnByb3RvdHlwZS51bnJlZ2lzdGVyKToKKyAg
ICAgICAgKHUucHJvdG90eXBlLnJlc29sdmUpOgorICAgICAgICAodS5wcm90b3R5cGUuZGVzY3Jp
YmUpOgorICAgICAgICAodS5wcm90b3R5cGUubm9ybWFsaXplRnVsbE5hbWUpOgorICAgICAgICAo
dS5wcm90b3R5cGUubm9ybWFsaXplKToKKyAgICAgICAgKHUucHJvdG90eXBlLm1ha2VUb1N0cmlu
Zyk6CisgICAgICAgICh1LnByb3RvdHlwZS5oYXMpOgorICAgICAgICAodS5wcm90b3R5cGUub3B0
aW9uc0ZvclR5cGUpOgorICAgICAgICAodS5wcm90b3R5cGUuZ2V0T3B0aW9uc0ZvclR5cGUpOgor
ICAgICAgICAodS5wcm90b3R5cGUub3B0aW9ucyk6CisgICAgICAgICh1LnByb3RvdHlwZS5nZXRP
cHRpb25zKToKKyAgICAgICAgKHUucHJvdG90eXBlLmdldE9wdGlvbik6CisgICAgICAgICh1LnBy
b3RvdHlwZS50eXBlSW5qZWN0aW9uKToKKyAgICAgICAgKHUucHJvdG90eXBlLmluamVjdGlvbik6
CisgICAgICAgICh1LnByb3RvdHlwZS5mYWN0b3J5VHlwZUluamVjdGlvbik6CisgICAgICAgICh1
LnByb3RvdHlwZS5mYWN0b3J5SW5qZWN0aW9uKToKKyAgICAgICAgKHUucHJvdG90eXBlLmtub3du
Rm9yVHlwZSk6CisgICAgICAgICh1LnByb3RvdHlwZS52YWxpZGF0ZUZ1bGxOYW1lKToKKyAgICAg
ICAgKHUucHJvdG90eXBlLmlzVmFsaWRGdWxsTmFtZSk6CisgICAgICAgICh1LnByb3RvdHlwZS52
YWxpZGF0ZUluamVjdGlvbnMpOgorICAgICAgICAodS5wcm90b3R5cGUubm9ybWFsaXplSW5qZWN0
aW9uc0hhc2gpOgorICAgICAgICAodS5wcm90b3R5cGUuZ2V0SW5qZWN0aW9ucyk6CisgICAgICAg
ICh1LnByb3RvdHlwZS5nZXRUeXBlSW5qZWN0aW9ucyk6CisgICAgICAgICh1LnByb3RvdHlwZS5n
ZXRGYWN0b3J5SW5qZWN0aW9ucyk6CisgICAgICAgICh1LnByb3RvdHlwZS5nZXRGYWN0b3J5VHlw
ZUluamVjdGlvbnMpOgorICAgICAgICAodS5wcm90b3R5cGUuZXhwYW5kTG9jYWxMb29rdXApOgor
ICAgICAgICAobi5wcm90b3R5cGUuYWRkKToKKyAgICAgICAgKG4ucHJvdG90eXBlLm1hcCk6Cisg
ICAgICAgIChuLnByb3RvdHlwZS5hZGRFZGdlKToKKyAgICAgICAgKG4ucHJvdG90eXBlLnRvcHNv
cnQpOgorICAgICAgICAobi5wcm90b3R5cGUuYWRkRWRnZXMpOgorICAgICAgICAobC5wcm90b3R5
cGUuZ2V0U3RhdGUpOgorICAgICAgICAobC5wcm90b3R5cGUuc2V0U3RhdGUpOgorICAgICAgICAo
bC5wcm90b3R5cGUuY2xlYXIpOgorICAgICAgICAobC5wcm90b3R5cGUuZGVzdHJveSk6CisgICAg
ICAgICh4LmdldEVsZW1lbnRCeUlkKToKKyAgICAgICAgKHguaW5zZXJ0QmVmb3JlKToKKyAgICAg
ICAgKHguYXBwZW5kQ2hpbGQpOgorICAgICAgICAoeC5jaGlsZEF0KToKKyAgICAgICAgKHguY2hp
bGRBdEluZGV4KToKKyAgICAgICAgKHguYXBwZW5kVGV4dCk6CisgICAgICAgICh4LnNldEF0dHJp
YnV0ZSk6CisgICAgICAgICh4LmdldEF0dHJpYnV0ZSk6CisgICAgICAgICh4LnNldEF0dHJpYnV0
ZU5TKToKKyAgICAgICAgKHguZ2V0QXR0cmlidXRlTlMpOgorICAgICAgICAoZy54LnJlbW92ZUF0
dHJpYnV0ZSk6CisgICAgICAgICh4LnJlbW92ZUF0dHJpYnV0ZSk6CisgICAgICAgICh4LnNldFBy
b3BlcnR5U3RyaWN0KToKKyAgICAgICAgKHguZ2V0UHJvcGVydHlTdHJpY3QpOgorICAgICAgICAo
eC5zZXRQcm9wZXJ0eSk6CisgICAgICAgIChtLm0uY3JlYXRlRWxlbWVudE5TLnguY3JlYXRlRWxl
bWVudCk6CisgICAgICAgICh4LmNyZWF0ZUVsZW1lbnQpOgorICAgICAgICAoeC5zZXROYW1lc3Bh
Y2UpOgorICAgICAgICAoeC5kZXRlY3ROYW1lc3BhY2UpOgorICAgICAgICAoeC5jcmVhdGVEb2N1
bWVudEZyYWdtZW50KToKKyAgICAgICAgKHguY3JlYXRlVGV4dE5vZGUpOgorICAgICAgICAoeC5j
cmVhdGVDb21tZW50KToKKyAgICAgICAgKHgucmVwYWlyQ2xvbmVkTm9kZSk6CisgICAgICAgICh4
LmNsb25lTm9kZSk6CisgICAgICAgICh4LmNyZWF0ZUF0dHJNb3JwaCk6CisgICAgICAgICh4LmNy
ZWF0ZUVsZW1lbnRNb3JwaCk6CisgICAgICAgICh4LmNyZWF0ZVVuc2FmZUF0dHJNb3JwaCk6Cisg
ICAgICAgICh4LmNyZWF0ZU1vcnBoKToKKyAgICAgICAgKHguY3JlYXRlRnJhZ21lbnRNb3JwaCk6
CisgICAgICAgICh4LnJlcGxhY2VDb250ZW50V2l0aE1vcnBoKToKKyAgICAgICAgKHguY3JlYXRl
VW5zYWZlTW9ycGgpOgorICAgICAgICAoeC5jcmVhdGVNb3JwaEF0KToKKyAgICAgICAgKHguY3Jl
YXRlVW5zYWZlTW9ycGhBdCk6CisgICAgICAgICh4Lmluc2VydE1vcnBoQmVmb3JlKToKKyAgICAg
ICAgKHguYXBwZW5kTW9ycGgpOgorICAgICAgICAoeC5pbnNlcnRCb3VuZGFyeSk6CisgICAgICAg
ICh4LnNldE1vcnBoSFRNTCk6CisgICAgICAgICh4LnBhcnNlSFRNTCk6CisgICAgICAgICh1LmUu
YnVpbGRIVE1MRE9NLnApOgorICAgICAgICAodS5lLmFkZENsYXNzZXMubyk6CisgICAgICAgIChl
LnJlbW92ZUNsYXNzZXMuYSk6CisgICAgICAgIChtLmQuZGVmYXVsdC5leHRlbmQuaW5pdCk6Cisg
ICAgICAgIChtLmQuZGVmYXVsdC5leHRlbmQuYm9vdCk6CisgICAgICAgIChtLmQuZGVmYXVsdC5l
eHRlbmQuX2Jvb3RTeW5jKToKKyAgICAgICAgKG0uZC5kZWZhdWx0LmV4dGVuZC5kaWRDcmVhdGVS
b290Vmlldyk6CisgICAgICAgIChtLmQuZGVmYXVsdC5leHRlbmQuc3RhcnRSb3V0aW5nKToKKyAg
ICAgICAgKG0uZC5kZWZhdWx0LmV4dGVuZC5zZXR1cFJvdXRlcik6CisgICAgICAgIChtLmQuZGVm
YXVsdC5leHRlbmQuaGFuZGxlVVJMKToKKyAgICAgICAgKG0uZC5kZWZhdWx0LmV4dGVuZC5zZXR1
cEV2ZW50RGlzcGF0Y2hlcik6CisgICAgICAgIChtLmQuZGVmYXVsdC5leHRlbmQuZ2V0VVJMKToK
KyAgICAgICAgKG0uZC5kZWZhdWx0LmV4dGVuZC5pKToKKyAgICAgICAgKG0uZC5kZWZhdWx0LmV4
dGVuZC5hKToKKyAgICAgICAgKG0uZC5kZWZhdWx0LmV4dGVuZC52aXNpdCk6CisgICAgICAgICho
LnByb3RvdHlwZS50b0Vudmlyb25tZW50KToKKyAgICAgICAgKHJldHVybi5sb29rdXApOgorICAg
ICAgICAoZ2V0IHZhcik6CisgICAgICAgIChNLmUuY3JlYXRlKToKKyAgICAgICAgKEkuZS5jcmVh
dGUpOgorICAgICAgICAoRi5lLmNyZWF0ZSk6CisgICAgICAgIChGKToKKyAgICAgICAgKGouZGVm
YXVsdC5leHRlbmQuaW5pdCk6CisgICAgICAgIChqLmRlZmF1bHQuZXh0ZW5kLmJ1aWxkSW5zdGFu
Y2UpOgorICAgICAgICAoai5kZWZhdWx0LmV4dGVuZC5fcHJlcGFyZUZvckdsb2JhbHNNb2RlKToK
KyAgICAgICAgKGouZGVmYXVsdC5leHRlbmQuX2J1aWxkRGVwcmVjYXRlZEluc3RhbmNlKToKKyAg
ICAgICAgKGouZGVmYXVsdC5leHRlbmQud2FpdEZvckRPTVJlYWR5KToKKyAgICAgICAgKGouZGVm
YXVsdC5leHRlbmQuZG9tUmVhZHkpOgorICAgICAgICAoai5kZWZhdWx0LmV4dGVuZC5kZWZlclJl
YWRpbmVzcyk6CisgICAgICAgIChqLmRlZmF1bHQuZXh0ZW5kLmFkdmFuY2VSZWFkaW5lc3MpOgor
ICAgICAgICAoai5kZWZhdWx0LmV4dGVuZC5ib290KToKKyAgICAgICAgKGouZGVmYXVsdC5leHRl
bmQuX2Jvb3RTeW5jKToKKyAgICAgICAgKGouZGVmYXVsdC5leHRlbmQuKToKKyAgICAgICAgKGou
ZGVmYXVsdC5leHRlbmQucmVzZXQpOgorICAgICAgICAoai5kZWZhdWx0LmV4dGVuZC5kaWRCZWNv
bWVSZWFkeSk6CisgICAgICAgIChqLmRlZmF1bHQuZXh0ZW5kLnJlYWR5KToKKyAgICAgICAgKGou
ZGVmYXVsdC5leHRlbmQud2lsbERlc3Ryb3kpOgorICAgICAgICAoai5kZWZhdWx0LmV4dGVuZC52
aXNpdCk6CisgICAgICAgIChyZW9wZW5DbGFzcy5idWlsZFJlZ2lzdHJ5KToKKyAgICAgICAgKGlu
aXQpOgorICAgICAgICAodW5yZWdpc3Rlcik6CisgICAgICAgICh3aWxsRGVzdHJveSk6CisgICAg
ICAgIChidWlsZEluc3RhbmNlKToKKyAgICAgICAgKGJ1aWxkUmVnaXN0cnkpOgorICAgICAgICAo
aW5pdGlhbGl6ZXIpOgorICAgICAgICAoaW5zdGFuY2VJbml0aWFsaXplcik6CisgICAgICAgIChy
dW5Jbml0aWFsaXplcnMpOgorICAgICAgICAocnVuSW5zdGFuY2VJbml0aWFsaXplcnMpOgorICAg
ICAgICAoX3J1bkluaXRpYWxpemVyKToKKyAgICAgICAgKGcucmVvcGVuQ2xhc3MuYnVpbGRSZWdp
c3RyeSk6CisgICAgICAgIChlLmRlZmF1bHQuaS5kZWZhdWx0LmV4dGVuZC5pbml0KToKKyAgICAg
ICAgKGUuZGVmYXVsdC5pLmRlZmF1bHQuZXh0ZW5kLm5vcm1hbGl6ZSk6CisgICAgICAgIChlLmRl
ZmF1bHQuaS5kZWZhdWx0LmV4dGVuZC5yZXNvbHZlKToKKyAgICAgICAgKGUuZGVmYXVsdC5pLmRl
ZmF1bHQuZXh0ZW5kLnBhcnNlTmFtZSk6CisgICAgICAgIChlLmRlZmF1bHQuaS5kZWZhdWx0LmV4
dGVuZC5fcGFyc2VOYW1lKToKKyAgICAgICAgKGUuZGVmYXVsdC5pLmRlZmF1bHQuZXh0ZW5kLmxv
b2t1cERlc2NyaXB0aW9uKToKKyAgICAgICAgKGUuZGVmYXVsdC5pLmRlZmF1bHQuZXh0ZW5kLm1h
a2VUb1N0cmluZyk6CisgICAgICAgIChlLmRlZmF1bHQuaS5kZWZhdWx0LmV4dGVuZC51c2VSb3V0
ZXJOYW1pbmcpOgorICAgICAgICAoZS5kZWZhdWx0LmkuZGVmYXVsdC5leHRlbmQucmVzb2x2ZVRl
bXBsYXRlKToKKyAgICAgICAgKGUuZGVmYXVsdC5pLmRlZmF1bHQuZXh0ZW5kLnJlc29sdmVWaWV3
KToKKyAgICAgICAgKGUuZGVmYXVsdC5pLmRlZmF1bHQuZXh0ZW5kLnJlc29sdmVDb250cm9sbGVy
KToKKyAgICAgICAgKGUuZGVmYXVsdC5pLmRlZmF1bHQuZXh0ZW5kLnJlc29sdmVSb3V0ZSk6Cisg
ICAgICAgIChlLmRlZmF1bHQuaS5kZWZhdWx0LmV4dGVuZC5yZXNvbHZlTW9kZWwpOgorICAgICAg
ICAoZS5kZWZhdWx0LmkuZGVmYXVsdC5leHRlbmQucmVzb2x2ZUhlbHBlcik6CisgICAgICAgIChl
LmRlZmF1bHQuaS5kZWZhdWx0LmV4dGVuZC5yZXNvbHZlT3RoZXIpOgorICAgICAgICAoZS5kZWZh
dWx0LmkuZGVmYXVsdC5leHRlbmQucmVzb2x2ZU1haW4pOgorICAgICAgICAoZS5kZWZhdWx0Lmku
ZGVmYXVsdC5leHRlbmQuX2xvZ0xvb2t1cCk6CisgICAgICAgIChlLmRlZmF1bHQuaS5kZWZhdWx0
LmV4dGVuZC5rbm93bkZvclR5cGUpOgorICAgICAgICAoZS5kZWZhdWx0LmkuZGVmYXVsdC5leHRl
bmQudHJhbnNsYXRlVG9Db250YWluZXJGdWxsbmFtZSk6CisgICAgICAgIChlLmRlZmF1bHQuYS5k
ZWZhdWx0LmV4dGVuZC5jYW5DYXRhbG9nRW50cmllc0J5VHlwZSk6CisgICAgICAgIChlLmRlZmF1
bHQuYS5kZWZhdWx0LmV4dGVuZC5jYXRhbG9nRW50cmllc0J5VHlwZSk6CisgICAgICAgIChlLmRl
ZmF1bHQuby5kZWZhdWx0LmV4dGVuZC5pbml0KToKKyAgICAgICAgKGUuZGVmYXVsdC5vLmRlZmF1
bHQuZXh0ZW5kLmdldEZpbHRlcnMpOgorICAgICAgICAoZS5kZWZhdWx0Lm8uZGVmYXVsdC5leHRl
bmQucyk6CisgICAgICAgIChlLmRlZmF1bHQuby5kZWZhdWx0LmV4dGVuZC53YXRjaE1vZGVsVHlw
ZXMpOgorICAgICAgICAoZS5kZWZhdWx0Lm8uZGVmYXVsdC5leHRlbmQuX25hbWVUb0NsYXNzKToK
KyAgICAgICAgKGUuZGVmYXVsdC5vLmRlZmF1bHQuZXh0ZW5kLmYpOgorICAgICAgICAoZS5kZWZh
dWx0Lm8uZGVmYXVsdC5leHRlbmQucCk6CisgICAgICAgIChlLmRlZmF1bHQuby5kZWZhdWx0LmV4
dGVuZC5oLndpbGxDaGFuZ2UpOgorICAgICAgICAoZS5kZWZhdWx0Lm8uZGVmYXVsdC5leHRlbmQu
aSk6CisgICAgICAgIChlLmRlZmF1bHQuby5kZWZhdWx0LmV4dGVuZC53YXRjaFJlY29yZHMpOgor
ICAgICAgICAoZS5kZWZhdWx0Lm8uZGVmYXVsdC5leHRlbmQud2lsbERlc3Ryb3kpOgorICAgICAg
ICAoZS5kZWZhdWx0Lm8uZGVmYXVsdC5leHRlbmQuZGV0ZWN0KToKKyAgICAgICAgKGUuZGVmYXVs
dC5vLmRlZmF1bHQuZXh0ZW5kLmNvbHVtbnNGb3JUeXBlKToKKyAgICAgICAgKGUuZGVmYXVsdC5v
LmRlZmF1bHQuZXh0ZW5kLmEpOgorICAgICAgICAoZS5kZWZhdWx0Lm8uZGVmYXVsdC5leHRlbmQu
cy5kaWRDaGFuZ2UpOgorICAgICAgICAoZS5kZWZhdWx0Lm8uZGVmYXVsdC5leHRlbmQucy53aWxs
Q2hhbmdlKToKKyAgICAgICAgKGUuZGVmYXVsdC5vLmRlZmF1bHQuZXh0ZW5kLnUpOgorICAgICAg
ICAoZS5kZWZhdWx0Lm8uZGVmYXVsdC5leHRlbmQub2JzZXJ2ZU1vZGVsVHlwZSk6CisgICAgICAg
IChlLmRlZmF1bHQuby5kZWZhdWx0LmV4dGVuZC53cmFwTW9kZWxUeXBlKToKKyAgICAgICAgKGUu
ZGVmYXVsdC5vLmRlZmF1bHQuZXh0ZW5kLmdldE1vZGVsVHlwZXMpOgorICAgICAgICAoZS5kZWZh
dWx0Lm8uZGVmYXVsdC5leHRlbmQuX2dldE9iamVjdHNPbk5hbWVzcGFjZXMpOgorICAgICAgICAo
ZS5kZWZhdWx0Lm8uZGVmYXVsdC5leHRlbmQuZ2V0UmVjb3Jkcyk6CisgICAgICAgIChlLmRlZmF1
bHQuby5kZWZhdWx0LmV4dGVuZC53cmFwUmVjb3JkKToKKyAgICAgICAgKGUuZGVmYXVsdC5vLmRl
ZmF1bHQuZXh0ZW5kLmdldFJlY29yZENvbHVtblZhbHVlcyk6CisgICAgICAgIChlLmRlZmF1bHQu
by5kZWZhdWx0LmV4dGVuZC5nZXRSZWNvcmRLZXl3b3Jkcyk6CisgICAgICAgIChlLmRlZmF1bHQu
by5kZWZhdWx0LmV4dGVuZC5nZXRSZWNvcmRGaWx0ZXJWYWx1ZXMpOgorICAgICAgICAoZS5kZWZh
dWx0Lm8uZGVmYXVsdC5leHRlbmQuZ2V0UmVjb3JkQ29sb3IpOgorICAgICAgICAoZS5kZWZhdWx0
Lm8uZGVmYXVsdC5leHRlbmQub2JzZXJ2ZVJlY29yZCk6CisgICAgICAgIChuLnQuZGVmYXVsdC5l
eHRlbmQucmVjb21wdXRlKToKKyAgICAgICAgKGEuZ2V0U2VsZik6CisgICAgICAgIChhLmJpbmRT
ZWxmKToKKyAgICAgICAgKGEudXBkYXRlU2VsZik6CisgICAgICAgIChhLmdldEJsb2NrKToKKyAg
ICAgICAgKGEuaGFzQmxvY2spOgorICAgICAgICAoYS5iaW5kQmxvY2spOgorICAgICAgICAoYS5n
ZXRDb21wb25lbnQpOgorICAgICAgICAoYS5iaW5kQ29tcG9uZW50KToKKyAgICAgICAgKGEuZ2V0
Vmlldyk6CisgICAgICAgIChhLmJpbmRWaWV3KToKKyAgICAgICAgKGEuZ2V0QXR0cnMpOgorICAg
ICAgICAoYS5iaW5kQXR0cnMpOgorICAgICAgICAoYS5oYXNMb2NhbCk6CisgICAgICAgIChhLmhh
c093bkxvY2FsKToKKyAgICAgICAgKGEuZ2V0TG9jYWwpOgorICAgICAgICAoYS5iaW5kTG9jYWwp
OgorICAgICAgICAocy5nZXRTZWxmKToKKyAgICAgICAgKHMuYmluZFNlbGYpOgorICAgICAgICAo
cy51cGRhdGVTZWxmKToKKyAgICAgICAgKHMuZ2V0QmxvY2spOgorICAgICAgICAocy5iaW5kQmxv
Y2spOgorICAgICAgICAocy5oYXNCbG9jayk6CisgICAgICAgIChzLmdldENvbXBvbmVudCk6Cisg
ICAgICAgIChzLmJpbmRDb21wb25lbnQpOgorICAgICAgICAocy5nZXRWaWV3KToKKyAgICAgICAg
KHMuYmluZFZpZXcpOgorICAgICAgICAocy5nZXRBdHRycyk6CisgICAgICAgIChzLmJpbmRBdHRy
cyk6CisgICAgICAgIChzLmhhc0xvY2FsKToKKyAgICAgICAgKHMuaGFzT3duTG9jYWwpOgorICAg
ICAgICAocy5nZXRMb2NhbCk6CisgICAgICAgIChzLmJpbmRMb2NhbCk6CisgICAgICAgIChDLmku
ZGVmYXVsdC5leHRlbmQuaW5pdCk6CisgICAgICAgIChDLmkuZGVmYXVsdC5leHRlbmQuY29tcHV0
ZSk6CisgICAgICAgIChlLmRlZmF1bHQpOgorICAgICAgICAoZS5kZWZhdWx0LnNldHVwU3RhdGUp
OgorICAgICAgICAoZS5kZWZhdWx0LnJlbmRlcik6CisgICAgICAgIChmLnIuZGVmYXVsdC5leHRl
bmQuaW5pdCk6CisgICAgICAgIChmLnIuZGVmYXVsdC5leHRlbmQua2V5KToKKyAgICAgICAgKGYu
ci5kZWZhdWx0LmV4dGVuZC5jb21wdXRlKToKKyAgICAgICAgKGYuci5kZWZhdWx0LmV4dGVuZC5z
ZXRWYWx1ZSk6CisgICAgICAgIChmLnIuZGVmYXVsdC5leHRlbmQucmV2YWxpZGF0ZSk6CisgICAg
ICAgIChmLnIuZGVmYXVsdC5leHRlbmQuX2NsZWFyT2JzZXJ2ZWRPYmplY3QpOgorICAgICAgICAo
ZS5kZWZhdWx0LnJlcmVuZGVyKToKKyAgICAgICAgKHAubi5kZWZhdWx0LmV4dGVuZC5mLmluaXQp
OgorICAgICAgICAocC5uLmRlZmF1bHQuZXh0ZW5kLmYuci51cGRhdGUpOgorICAgICAgICAocC5u
LmRlZmF1bHQuZXh0ZW5kLmYuY2VsbCk6CisgICAgICAgIChmLnMuSU5WT0tFKToKKyAgICAgICAg
KGguaS5kZWZhdWx0LmV4dGVuZC5pbml0KToKKyAgICAgICAgKGguaS5kZWZhdWx0LmV4dGVuZC5j
b21wdXRlKToKKyAgICAgICAgKGguaS5kZWZhdWx0LmV4dGVuZC5zZXRWYWx1ZSk6CisgICAgICAg
IChlLmRlZmF1bHQud2lsbFJlbmRlcik6CisgICAgICAgIChlLmRlZmF1bHQuY2hpbGRFbnYpOgor
ICAgICAgICAoZS5kZWZhdWx0LmlzU3RhYmxlKToKKyAgICAgICAgKGUuZGVmYXVsdC5pc0VtcHR5
KToKKyAgICAgICAgKG8uci5kZWZhdWx0LmV4dGVuZC5pbml0KToKKyAgICAgICAgKG8uci5kZWZh
dWx0LmV4dGVuZC52YWx1ZSk6CisgICAgICAgIChvLnIuZGVmYXVsdC5leHRlbmQubm90aWZ5KToK
KyAgICAgICAgKHMuZGlkSW5pdCk6CisgICAgICAgIChzLndpbGxTZXRDb250ZW50KToKKyAgICAg
ICAgKGEuYWRkRGVzdHJ1Y3Rpb24pOgorICAgICAgICAoYS5jbGVhbnVwKToKKyAgICAgICAgKGEu
ZGlkUmVuZGVyKToKKyAgICAgICAgKHgpOgorICAgICAgICAoaC5jcmVhdGUpOgorICAgICAgICAo
aC5wcm90b3R5cGUucmVuZGVyKToKKyAgICAgICAgKGgucHJvdG90eXBlLnJlcmVuZGVyKToKKyAg
ICAgICAgKGgucHJvdG90eXBlLmRlc3Ryb3kpOgorICAgICAgICAobi50LmRlZmF1bHQuZXh0ZW5k
LmluaXQpOgorICAgICAgICAobi50LmRlZmF1bHQuZXh0ZW5kLmNvbXB1dGUpOgorICAgICAgICAo
bi50LmRlZmF1bHQuZXh0ZW5kLmRlYWN0aXZhdGUpOgorICAgICAgICAoZS5pbml0aWFsaXplci5p
bml0aWFsaXplLmEuZGVmYXVsdC5oYXNET00ubCk6CisgICAgICAgIChzZXQgZyk6CisgICAgICAg
IChnZXQgZyk6CisgICAgICAgIChpLmJ1aWxkKToKKyAgICAgICAgKGkucHJvdG90eXBlLmNoaWxk
V2l0aE1ldGEpOgorICAgICAgICAoaS5wcm90b3R5cGUuY2hpbGRXaXRoVmlldyk6CisgICAgICAg
IChpLnByb3RvdHlwZS5jaGlsZFdpdGhPdXRsZXRTdGF0ZSk6CisgICAgICAgIChnZXQgcmV0dXJu
KToKKyAgICAgICAgKHJldHVybi5idWlsZEZyYWdtZW50KToKKyAgICAgICAgKHJldHVybi5idWls
ZFJlbmRlck5vZGVzKToKKyAgICAgICAgKGUpOgorICAgICAgICAodC4pOgorICAgICAgICAodC5k
ZWZhdWx0LkVYVEVORF9QUk9UT1RZUEVTLjAudC5kZWZhdWx0LkVYVEVORF9QUk9UT1RZUEVTLlN0
cmluZy5TdHJpbmcucHJvdG90eXBlLmh0bWxTYWZlKToKKyAgICAgICAgKGwucHJvdG90eXBlLnBy
ZXJlbmRlclRvcExldmVsVmlldyk6CisgICAgICAgIChsLnByb3RvdHlwZS5yZW5kZXJUb3BMZXZl
bFZpZXcpOgorICAgICAgICAobC5wcm90b3R5cGUucmV2YWxpZGF0ZVRvcExldmVsVmlldyk6Cisg
ICAgICAgIChsLnByb3RvdHlwZS5kaXNwYXRjaExpZmVjeWNsZUhvb2tzKToKKyAgICAgICAgKGwu
cHJvdG90eXBlLmVuc3VyZVZpZXdOb3RSZW5kZXJpbmcpOgorICAgICAgICAoYy5wcm90b3R5cGUu
YWRkKToKKyAgICAgICAgKGMucHJvdG90eXBlLmhhcyk6CisgICAgICAgIChjLnByb3RvdHlwZS5j
bGVhcik6CisgICAgICAgIChsLnByb3RvdHlwZS5jbGVhclJlbmRlcmVkVmlld3MpOgorICAgICAg
ICAobC5wcm90b3R5cGUuYXBwZW5kVG8pOgorICAgICAgICAobC5wcm90b3R5cGUucmVwbGFjZUlu
KToKKyAgICAgICAgKGwucHJvdG90eXBlLmNyZWF0ZUVsZW1lbnQpOgorICAgICAgICAobC5wcm90
b3R5cGUuZGlkQ3JlYXRlRWxlbWVudCk6CisgICAgICAgIChsLnByb3RvdHlwZS53aWxsSW5zZXJ0
RWxlbWVudCk6CisgICAgICAgIChsLnByb3RvdHlwZS5zZXRBdHRycyk6CisgICAgICAgIChsLnBy
b3RvdHlwZS5jb21wb25lbnRJbml0QXR0cnMpOgorICAgICAgICAobC5wcm90b3R5cGUuZGlkSW5z
ZXJ0RWxlbWVudCk6CisgICAgICAgIChsLnByb3RvdHlwZS5kaWRVcGRhdGUpOgorICAgICAgICAo
bC5wcm90b3R5cGUuZGlkUmVuZGVyKToKKyAgICAgICAgKGwucHJvdG90eXBlLnVwZGF0ZUF0dHJz
KToKKyAgICAgICAgKGwucHJvdG90eXBlLmNvbXBvbmVudFVwZGF0ZUF0dHJzKToKKyAgICAgICAg
KGwucHJvdG90eXBlLndpbGxVcGRhdGUpOgorICAgICAgICAobC5wcm90b3R5cGUuY29tcG9uZW50
V2lsbFVwZGF0ZSk6CisgICAgICAgIChsLnByb3RvdHlwZS53aWxsUmVuZGVyKToKKyAgICAgICAg
KGwucHJvdG90eXBlLmNvbXBvbmVudFdpbGxSZW5kZXIpOgorICAgICAgICAobC5wcm90b3R5cGUu
cmVyZW5kZXIpOgorICAgICAgICAobC5wcm90b3R5cGUucmVtb3ZlKToKKyAgICAgICAgKGwucHJv
dG90eXBlLnJlbmRlckVsZW1lbnRSZW1vdmFsKToKKyAgICAgICAgKGwucHJvdG90eXBlLndpbGxS
ZW1vdmVFbGVtZW50KToKKyAgICAgICAgKGwucHJvdG90eXBlLndpbGxEZXN0cm95RWxlbWVudCk6
CisgICAgICAgIChsLnByb3RvdHlwZS5kaWREZXN0cm95RWxlbWVudCk6CisgICAgICAgIChmLmNy
ZWF0ZSk6CisgICAgICAgIChkLmNyZWF0ZSk6CisgICAgICAgIChmLnByb3RvdHlwZSk6CisgICAg
ICAgIChmLnByb3RvdHlwZS53aWxsV2F0Y2gpOgorICAgICAgICAoZi5wcm90b3R5cGUuZGlkVW53
YXRjaCk6CisgICAgICAgIChmLnByb3RvdHlwZS5zZXR1cCk6CisgICAgICAgIChmLnByb3RvdHlw
ZS50ZWFyZG93bik6CisgICAgICAgIChmLnByb3RvdHlwZS5yZWFkT25seSk6CisgICAgICAgIChm
LnByb3RvdHlwZS5vbmVXYXkpOgorICAgICAgICAoZi5wcm90b3R5cGUuY29weSk6CisgICAgICAg
IChmLnByb3RvdHlwZS5mcm9tKToKKyAgICAgICAgKGYucHJvdG90eXBlLnRvKToKKyAgICAgICAg
KGYucHJvdG90eXBlLnRvU3RyaW5nKToKKyAgICAgICAgKGYucHJvdG90eXBlLmNvbm5lY3QpOgor
ICAgICAgICAoZi5wcm90b3R5cGUuZGlzY29ubmVjdCk6CisgICAgICAgIChmLnByb3RvdHlwZS5m
cm9tRGlkQ2hhbmdlKToKKyAgICAgICAgKGYucHJvdG90eXBlLnRvRGlkQ2hhbmdlKToKKyAgICAg
ICAgKGYucHJvdG90eXBlLl9zY2hlZHVsZVN5bmMpOgorICAgICAgICAoZi5wcm90b3R5cGUuX3N5
bmMpOgorICAgICAgICAoZnJvbSk6CisgICAgICAgICh0byk6CisgICAgICAgIChyLnByb3RvdHlw
ZS5zZXQgZSk6CisgICAgICAgIChyLnByb3RvdHlwZS5nZXQgZSk6CisgICAgICAgIChyLnByb3Rv
dHlwZS5wdXJnZSk6CisgICAgICAgICh1LnByb3RvdHlwZS5hZGQpOgorICAgICAgICAodS5wcm90
b3R5cGUucmVtb3ZlKToKKyAgICAgICAgKHUucHJvdG90eXBlLnJldmFsaWRhdGVBbGwpOgorICAg
ICAgICAodS5wcm90b3R5cGUucmV2YWxpZGF0ZSk6CisgICAgICAgICh1LnByb3RvdHlwZS5ub3Rp
ZnkpOgorICAgICAgICAoZC5wcm90b3R5cGUudmFsdWUpOgorICAgICAgICAoZC5wcm90b3R5cGUu
ZGVzdHJveSk6CisgICAgICAgIChkLnByb3RvdHlwZS5jb3B5KToKKyAgICAgICAgKGQucHJvdG90
eXBlLmFkZCk6CisgICAgICAgIChkLnByb3RvdHlwZS5yZW1vdmUpOgorICAgICAgICAoZC5wcm90
b3R5cGUuY2hhaW4pOgorICAgICAgICAoZC5wcm90b3R5cGUudW5jaGFpbik6CisgICAgICAgIChk
LnByb3RvdHlwZS5ub3RpZnkpOgorICAgICAgICAoZC5wcm90b3R5cGUucG9wdWxhdGVBZmZlY3Rl
ZCk6CisgICAgICAgIChoLnZvbGF0aWxlKToKKyAgICAgICAgKGgucmVhZE9ubHkpOgorICAgICAg
ICAoaC5wcm9wZXJ0eSk6CisgICAgICAgIChoLm1ldGEpOgorICAgICAgICAoaC5kaWRDaGFuZ2Up
OgorICAgICAgICAoaC5fdGhyb3dSZWFkT25seUVycm9yKToKKyAgICAgICAgKGguY2xvYmJlclNl
dCk6CisgICAgICAgIChoLnZvbGF0aWxlU2V0KToKKyAgICAgICAgKGguc2V0V2l0aFN1c3BlbmQp
OgorICAgICAgICAoaC5fc2V0KToKKyAgICAgICAgKGgudGVhcmRvd24pOgorICAgICAgICAocC5y
ZW1vdmUpOgorICAgICAgICAoYy5lLnQpOgorICAgICAgICAodC5nZXQgdCk6CisgICAgICAgICh0
LnNldCB0KToKKyAgICAgICAgKG4udG9TdHJpbmcpOgorICAgICAgICAoZi5hc3NlcnQpOgorICAg
ICAgICAoZi5pbmZvKToKKyAgICAgICAgKGYud2Fybik6CisgICAgICAgIChmLmRlYnVnKToKKyAg
ICAgICAgKGYuZGVwcmVjYXRlKToKKyAgICAgICAgKGYuZGVwcmVjYXRlRnVuYyk6CisgICAgICAg
IChmLnJ1bkluRGVidWcpOgorICAgICAgICAoZi5kZWJ1Z1NlYWwpOgorICAgICAgICAoby5hKToK
KyAgICAgICAgKG8uc2V0IGUpOgorICAgICAgICAoci5kZWZhdWx0LkRlYnVnLnJlZ2lzdGVyRGVw
cmVjYXRpb25IYW5kbGVyKToKKyAgICAgICAgKHIuZGVmYXVsdC5EZWJ1Zy5yZWdpc3Rlcldhcm5I
YW5kbGVyKToKKyAgICAgICAgKHJldHVybi50LnQuYmluZC5lKToKKyAgICAgICAgKGUuZmxhZ2dl
ZEluc3RydW1lbnQuYyk6CisgICAgICAgIChuLnByb3RvdHlwZS5fZ2V0TGlicmFyeUJ5TmFtZSk6
CisgICAgICAgIChuLnByb3RvdHlwZS5yZWdpc3Rlcik6CisgICAgICAgIChuLnByb3RvdHlwZS5y
ZWdpc3RlckNvcmVMaWJyYXJ5KToKKyAgICAgICAgKG4ucHJvdG90eXBlLmRlUmVnaXN0ZXIpOgor
ICAgICAgICAoaS5lLm4uc3RyaW5nX2FwcGVhcmVkX2hlcmUudHlwZW9mLmkuYXBwbHkubik6Cisg
ICAgICAgIChpLmUubik6CisgICAgICAgICh1LmNyZWF0ZSk6CisgICAgICAgICh1LnByb3RvdHlw
ZS5jbGVhcik6CisgICAgICAgICh1LnByb3RvdHlwZS5kZWxldGUpOgorICAgICAgICAodS5wcm90
b3R5cGUuaXNFbXB0eSk6CisgICAgICAgICh1LnByb3RvdHlwZS5mb3JFYWNoKToKKyAgICAgICAg
KHUucHJvdG90eXBlLnRvQXJyYXkpOgorICAgICAgICAodS5wcm90b3R5cGUuY29weSk6CisgICAg
ICAgIChsLmNyZWF0ZSk6CisgICAgICAgIChsLnByb3RvdHlwZS5nZXQgZSk6CisgICAgICAgIChs
LnByb3RvdHlwZS5zZXQgZSk6CisgICAgICAgIChsLnByb3RvdHlwZS5kZWxldGUpOgorICAgICAg
ICAobC5wcm90b3R5cGUuaGFzKToKKyAgICAgICAgKGwucHJvdG90eXBlLjAudGhpcy5zaXplLnQp
OgorICAgICAgICAobC5wcm90b3R5cGUuZm9yRWFjaCk6CisgICAgICAgIChsLnByb3RvdHlwZS5j
b3B5KToKKyAgICAgICAgKGMuY3JlYXRlKToKKyAgICAgICAgKGMucHJvdG90eXBlLmNvcHkpOgor
ICAgICAgICAodC50LnByb3RvdHlwZS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5uKToKKyAgICAgICAg
KHQudC5wcm90b3R5cGUuc3RyaW5nX2FwcGVhcmVkX2hlcmUuaSk6CisgICAgICAgIChuLnByb3Rv
dHlwZS5fZ2V0T3JDcmVhdGVPd25NYXApOgorICAgICAgICAobi5wcm90b3R5cGUuX2dldEluaGVy
aXRlZCk6CisgICAgICAgIChuLnByb3RvdHlwZS5fZmluZEluaGVyaXRlZCk6CisgICAgICAgIChu
LnByb3RvdHlwZS5fZm9yRWFjaEluKToKKyAgICAgICAgKGkuYWRkVG9MaXN0ZW5lcnMpOgorICAg
ICAgICAoaS5fZmluYWxpemVMaXN0ZW5lcnMpOgorICAgICAgICAoaS5yZW1vdmVGcm9tTGlzdGVu
ZXJzKToKKyAgICAgICAgKGkubWF0Y2hpbmdMaXN0ZW5lcnMpOgorICAgICAgICAoaS5zdXNwZW5k
TGlzdGVuZXJzKToKKyAgICAgICAgKGkud2F0Y2hlZEV2ZW50cyk6CisgICAgICAgIChpLl9pbml0
aWFsaXplTGlzdGVuZXJzKToKKyAgICAgICAgKFQpOgorICAgICAgICAoci5uKToKKyAgICAgICAg
KHIuaSk6CisgICAgICAgICh6LmEpOgorICAgICAgICAoVS5hKToKKyAgICAgICAgKE0uYXBwbHlQ
YXJ0aWFsKToKKyAgICAgICAgKE0uY3JlYXRlKToKKyAgICAgICAgKEcucmVvcGVuKToKKyAgICAg
ICAgKEcuYXBwbHkpOgorICAgICAgICAoRy5hcHBseVBhcnRpYWwpOgorICAgICAgICAoRy50b1N0
cmluZyk6CisgICAgICAgIChHLmRldGVjdCk6CisgICAgICAgIChHLndpdGhvdXQpOgorICAgICAg
ICAoRy5rZXlzKToKKyAgICAgICAgKE0ubWl4aW5zKToKKyAgICAgICAgKFcudG9TdHJpbmcpOgor
ICAgICAgICAobi5wcm90b3R5cGUuY2xlYXIpOgorICAgICAgICAoYS5lLnQpOgorICAgICAgICAo
dS5lLnQpOgorICAgICAgICAodC5yZXR1cm4udGhpcy5fc3VwZXIuZ2V0IGUpOgorICAgICAgICAo
Yy5wcm90b3R5cGUpOgorICAgICAgICAoYy5wcm90b3R5cGUuX3N1cGVyLmdldCBsKToKKyAgICAg
ICAgKGwucHJvdG90eXBlKToKKyAgICAgICAgKHUuam9pbik6CisgICAgICAgICh1LmJpbmQpOgor
ICAgICAgICAodS5iZWdpbik6CisgICAgICAgICh1LmVuZCk6CisgICAgICAgICh1LnNjaGVkdWxl
KToKKyAgICAgICAgKHUuaGFzU2NoZWR1bGVkVGltZXJzKToKKyAgICAgICAgKHUuY2FuY2VsVGlt
ZXJzKToKKyAgICAgICAgKHUuc3luYyk6CisgICAgICAgICh1LmxhdGVyKToKKyAgICAgICAgKHUu
b25jZSk6CisgICAgICAgICh1LnNjaGVkdWxlT25jZSk6CisgICAgICAgICh1Lm5leHQpOgorICAg
ICAgICAodS5jYW5jZWwpOgorICAgICAgICAodS5kZWJvdW5jZSk6CisgICAgICAgICh1LnRocm90
dGxlKToKKyAgICAgICAgKHUuX2FkZFF1ZXVlKToKKyAgICAgICAgKHN1YnNjcmliZSk6CisgICAg
ICAgICh1bnN1YnNjcmliZSk6CisgICAgICAgIChyZXBsYWNlKToKKyAgICAgICAgKGdldFZhbHVl
KToKKyAgICAgICAgKHNldFZhbHVlKToKKyAgICAgICAgKGUuZGVmYXVsdC5vLmRlZmF1bHQuZXh0
ZW5kLmNvbXB1dGUpOgorICAgICAgICAoZS5kZWZhdWx0Lm8uZGVmYXVsdC5leHRlbmQuc2V0VmFs
dWUpOgorICAgICAgICAoZS5kZWZhdWx0Lm8uZGVmYXVsdC5leHRlbmQuc2V0U291cmNlKToKKyAg
ICAgICAgKGUuZGVmYXVsdC5vLmRlZmF1bHQuZXh0ZW5kLnJldmFsaWRhdGUpOgorICAgICAgICAo
ZS5kZWZhdWx0Lm8uZGVmYXVsdC5leHRlbmQuX2NsZWFyT2JzZXJ2ZWRPYmplY3QpOgorICAgICAg
ICAoZS5kZWZhdWx0Lm8uZGVmYXVsdC5leHRlbmQuZGVhY3RpdmF0ZSk6CisgICAgICAgIChuLnIu
ZGVmYXVsdC5leHRlbmQuaW5pdCk6CisgICAgICAgIChuLnIuZGVmYXVsdC5leHRlbmQuY29tcHV0
ZSk6CisgICAgICAgIChuLnIuZGVmYXVsdC5leHRlbmQuc2V0VmFsdWUpOgorICAgICAgICAobi5y
LmRlZmF1bHQuZXh0ZW5kLnNldFNvdXJjZSk6CisgICAgICAgIChkLnByb3RvdHlwZS5faW5pdCk6
CisgICAgICAgIChkLnByb3RvdHlwZS5fbWFrZUNoaWxkU3RyZWFtKToKKyAgICAgICAgKGQucHJv
dG90eXBlLnJlbW92ZUNoaWxkKToKKyAgICAgICAgKGQucHJvdG90eXBlLmdldEtleSk6CisgICAg
ICAgIChkLnByb3RvdHlwZS5nZXQgZSk6CisgICAgICAgIChkLnByb3RvdHlwZS5hZGRNdXRhYmxl
RGVwZW5kZW5jeSk6CisgICAgICAgIChkLnByb3RvdHlwZS5hZGREZXBlbmRlbmN5KToKKyAgICAg
ICAgKGQucHJvdG90eXBlLnN1YnNjcmliZURlcGVuZGVuY2llcyk6CisgICAgICAgIChkLnByb3Rv
dHlwZS51bnN1YnNjcmliZURlcGVuZGVuY2llcyk6CisgICAgICAgIChkLnByb3RvdHlwZS5tYXli
ZURlYWN0aXZhdGUpOgorICAgICAgICAoZC5wcm90b3R5cGUuYWN0aXZhdGUpOgorICAgICAgICAo
ZC5wcm90b3R5cGUucmV2YWxpZGF0ZSk6CisgICAgICAgIChkLnByb3RvdHlwZS5fY2xlYXJPYnNl
cnZlZFByb3h5KToKKyAgICAgICAgKGQucHJvdG90eXBlLmRlYWN0aXZhdGUpOgorICAgICAgICAo
ZC5wcm90b3R5cGUuY29tcHV0ZSk6CisgICAgICAgIChkLnByb3RvdHlwZS5zZXRWYWx1ZSk6Cisg
ICAgICAgIChkLnByb3RvdHlwZS5ub3RpZnlFeGNlcHQpOgorICAgICAgICAoZC5wcm90b3R5cGUu
c3Vic2NyaWJlKToKKyAgICAgICAgKGQucHJvdG90eXBlLnBydW5lKToKKyAgICAgICAgKGQucHJv
dG90eXBlLnVuc3Vic2NyaWJlKToKKyAgICAgICAgKGQucHJvdG90eXBlLm5vdGlmeVN1YnNjcmli
ZXJzKToKKyAgICAgICAgKGQuZXh0ZW5kKToKKyAgICAgICAgKGcuZC5leHRlbmQuaW5pdCk6Cisg
ICAgICAgIChnLmQuZXh0ZW5kLmNvbXB1dGUpOgorICAgICAgICAocmVtb3ZlRnJvbSk6CisgICAg
ICAgICh4LnIuZGVmYXVsdC5leHRlbmQuaW5pdCk6CisgICAgICAgICh4LnIuZGVmYXVsdC5leHRl
bmQubGFiZWwpOgorICAgICAgICAoeC5yLmRlZmF1bHQuZXh0ZW5kLmNvbXB1dGUpOgorICAgICAg
ICAoaS51KToKKyAgICAgICAgKGkuZS5tYXJrT2JqZWN0QXNEaXJ0eS5sKToKKyAgICAgICAgKGVs
c2UuZS5tYXJrT2JqZWN0QXNEaXJ0eS5sKToKKyAgICAgICAgKHQucik6CisgICAgICAgIChvLnBy
b3RvdHlwZSk6CisgICAgICAgIChvLnByb3RvdHlwZS5oYXMpOgorICAgICAgICAoby5wcm90b3R5
cGUuZGVsZXRlKToKKyAgICAgICAgKGUuZGVmYXVsdC5lLmNsZWFudXApOgorICAgICAgICAoZi5w
dXNoLik6CisgICAgICAgIChmLnB1c2gpOgorICAgICAgICAobC5yZWdpc3RlckFjdGlvbik6Cisg
ICAgICAgIChsLnVucmVnaXN0ZXJBY3Rpb24pOgorICAgICAgICAoZC5wcm90b3R5cGUpOgorICAg
ICAgICAodi51LmRlZmF1bHQuZXh0ZW5kKToKKyAgICAgICAgKHYudS5kZWZhdWx0LmV4dGVuZC4p
OgorICAgICAgICAoc2V0IGdldCB2LnRvU3RyaW5nKToKKyAgICAgICAgKHNldCBnZXQgdik6Cisg
ICAgICAgIChuLnQuZGVmYXVsdC5leHRlbmQpOgorICAgICAgICAoci5kZWZhdWx0LnJlb3Blbik6
CisgICAgICAgIChlLmRlZmF1bHQuY3JlYXRlKToKKyAgICAgICAgKGUuZGVmYXVsdC5fZ2V0SGFz
aCk6CisgICAgICAgIChlLmRlZmF1bHQuYS5kZWZhdWx0LmV4dGVuZCk6CisgICAgICAgIChlLmRl
ZmF1bHQuby5kZWZhdWx0LmV4dGVuZCk6CisgICAgICAgIChlLmRlZmF1bHQuby5kZWZhdWx0LmV4
dGVuZC4pOgorICAgICAgICAoZS5kZWZhdWx0LmkuZGVmYXVsdC5leHRlbmQpOgorICAgICAgICAo
ZS5kZWZhdWx0LmkuZGVmYXVsdC5leHRlbmQuKToKKyAgICAgICAgKG8uZ2V0IHJldHVybik6Cisg
ICAgICAgIChvLik6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvYm93ZXIuanNvbjogUmVtb3ZlZC4KKyAgICAgICAg
KiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1i
ZXJqcy9ib3dlcl9jb21wb25lbnRzL2VtYmVyLWRhdGEvZW1iZXItZGF0YS5qczogUmVtb3ZlZC4K
KyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvZW1iZXJqcy9ib3dlcl9jb21wb25lbnRzL2VtYmVyLWxvY2Fsc3RvcmFnZS1hZGFwdGVy
L2xvY2Fsc3RvcmFnZV9hZGFwdGVyLmpzOiBSZW1vdmVkLgorICAgICAgICAqIFNwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL2Jvd2VyX2Nv
bXBvbmVudHMvZW1iZXIvZW1iZXIuanM6IFJlbW92ZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvYm93ZXJfY29t
cG9uZW50cy9oYW5kbGViYXJzL2hhbmRsZWJhcnMuanM6IFJlbW92ZWQuCisgICAgICAgICogU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMv
Ym93ZXJfY29tcG9uZW50cy90b2RvbXZjLWNvbW1vbi9iYXNlLmNzczogUmVtb3ZlZC4KKyAgICAg
ICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
ZW1iZXJqcy9ib3dlcl9jb21wb25lbnRzL3RvZG9tdmMtY29tbW9uL2JnLnBuZzogUmVtb3ZlZC4K
KyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvZW1iZXJqcy9jcm9zc2RvbWFpbi54bWw6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL2luZGV4
Lmh0bWw6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2VtYmVyanMvanMvYXBwLmpzOiBSZW1vdmVkLgorICAgICAgICAqIFNwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL2pz
L2NvbnRyb2xsZXJzL3RvZG9fY29udHJvbGxlci5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBTcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9q
cy9jb250cm9sbGVycy90b2Rvc19jb250cm9sbGVyLmpzOiBSZW1vdmVkLgorICAgICAgICAqIFNw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpz
L2pzL2hlbHBlcnMvcGx1cmFsaXplLmpzOiBSZW1vdmVkLgorICAgICAgICAqIFNwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL2pzL21vZGVs
cy90b2RvLmpzOiBSZW1vdmVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL2pzL3JvdXRlci5qczogUmVtb3ZlZC4K
KyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvZW1iZXJqcy9qcy92aWV3cy9lZGl0X3RvZG9fdmlldy5qczogUmVtb3ZlZC4KKyAgICAg
ICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
ZW1iZXJqcy9qcy92aWV3cy90b2Rvc192aWV3LmpzOiBSZW1vdmVkLgorICAgICAgICAqIFNwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3Jl
YWRtZS5tZDogUmVtb3ZlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9yb2JvdHMudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
ZW1iZXJqcy9zb3VyY2UvYXNzZXRzOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvY3Jvc3Nk
b21haW4ueG1sOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvZGV2Lmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9lbWJlcmpzL3NvdXJjZS9pbmRleC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3Vy
Y2Uvcm9ib3RzLnR4dDogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNlL3RvZG9tdmMvLmJvd2Vy
cmM6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS90b2RvbXZjLy5lZGl0b3Jjb25maWc6IEFk
ZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS90b2RvbXZjLy5lbWJlci1jbGk6IEFkZGVkLgorICAg
ICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9lbWJlcmpzL3NvdXJjZS90b2RvbXZjLy5naXRpZ25vcmU6IEFkZGVkLgorICAgICAgICAqIFNw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpz
L3NvdXJjZS90b2RvbXZjLy5qc2hpbnRyYzogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNlL3Rv
ZG9tdmMvLnRyYXZpcy55bWw6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS90b2RvbXZjLy53
YXRjaG1hbmNvbmZpZzogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNlL3RvZG9tdmMvUkVBRE1F
Lm1kOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvdG9kb212Yy9hcHAvYXBwLmpzOiBBZGRl
ZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvdG9kb212Yy9hcHAvY29tcG9uZW50cy8uZ2l0a2VlcDog
QWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNlL3RvZG9tdmMvYXBwL2NvbXBvbmVudHMvdG9kby1p
dGVtLmpzOiBBZGRlZC4KKyAgICAgICAgKGV4cG9ydC5kZWZhdWx0LkVtYmVyLkNvbXBvbmVudC5l
eHRlbmQuYWN0aW9ucy5zdGFydEVkaXRpbmcpOgorICAgICAgICAoZXhwb3J0LmRlZmF1bHQuRW1i
ZXIuQ29tcG9uZW50LmV4dGVuZC5hY3Rpb25zLmRvbmVFZGl0aW5nKToKKyAgICAgICAgKGV4cG9y
dC5kZWZhdWx0LkVtYmVyLkNvbXBvbmVudC5leHRlbmQuYWN0aW9ucy5oYW5kbGVLZXlkb3duKToK
KyAgICAgICAgKGV4cG9ydC5kZWZhdWx0LkVtYmVyLkNvbXBvbmVudC5leHRlbmQuYWN0aW9ucy50
b2dnbGVDb21wbGV0ZWQpOgorICAgICAgICAoZXhwb3J0LmRlZmF1bHQuRW1iZXIuQ29tcG9uZW50
LmV4dGVuZC5hY3Rpb25zLnJlbW92ZVRvZG8pOgorICAgICAgICAoZXhwb3J0LmRlZmF1bHQuRW1i
ZXIuQ29tcG9uZW50LmV4dGVuZC5mb2N1c0lucHV0KToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvdG9k
b212Yy9hcHAvY29tcG9uZW50cy90b2RvLWxpc3QuanM6IEFkZGVkLgorICAgICAgICAoZXhwb3J0
LmRlZmF1bHQuRW1iZXIuQ29tcG9uZW50LmV4dGVuZC5hY3Rpb25zLmVuYWJsZVRvZ2dsZSk6Cisg
ICAgICAgIChleHBvcnQuZGVmYXVsdC5FbWJlci5Db21wb25lbnQuZXh0ZW5kLmFjdGlvbnMuZGlz
YWJsZVRvZ2dsZSk6CisgICAgICAgIChleHBvcnQuZGVmYXVsdC5FbWJlci5Db21wb25lbnQuZXh0
ZW5kLmFjdGlvbnMudG9nZ2xlQWxsKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvdG9kb212Yy9hcHAv
Y29udHJvbGxlcnMvYWN0aXZlLmpzOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvdG9kb212
Yy9hcHAvY29udHJvbGxlcnMvYXBwbGljYXRpb24uanM6IEFkZGVkLgorICAgICAgICAoZXhwb3J0
LmRlZmF1bHQuRW1iZXIuQ29udHJvbGxlci5leHRlbmQuYWN0aW9ucy5jcmVhdGVUb2RvKToKKyAg
ICAgICAgKGV4cG9ydC5kZWZhdWx0LkVtYmVyLkNvbnRyb2xsZXIuZXh0ZW5kLmFjdGlvbnMuY2xl
YXJDb21wbGV0ZWQpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS90b2RvbXZjL2FwcC9jb250cm9sbGVy
cy9jb21wbGV0ZWQuanM6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS90b2RvbXZjL2FwcC9o
ZWxwZXJzL2d0LmpzOiBBZGRlZC4KKyAgICAgICAgKGV4cG9ydC5ndCk6CisgICAgICAgICogU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMv
c291cmNlL3RvZG9tdmMvYXBwL2hlbHBlcnMvcGx1cmFsaXplLmpzOiBBZGRlZC4KKyAgICAgICAg
KGV4cG9ydC5wbHVyYWxpemVIZWxwZXIpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS90b2RvbXZjL2Fw
cC9pbmRleC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvdG9kb212Yy9hcHAvaW5z
dGFuY2UtaW5pdGlhbGl6ZXJzL2dsb2JhbC5qczogQWRkZWQuCisgICAgICAgIChleHBvcnQuaW5p
dGlhbGl6ZSk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNlL3RvZG9tdmMvYXBwL21vZGVscy8uZ2l0a2Vl
cDogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNlL3RvZG9tdmMvYXBwL3Jlc29sdmVyLmpzOiBB
ZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvdG9kb212Yy9hcHAvcm91dGVyLmpzOiBBZGRlZC4K
KyAgICAgICAgKFJvdXRlci5tYXApOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS90b2RvbXZjL2FwcC9y
b3V0ZXMvLmdpdGtlZXA6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS90b2RvbXZjL2FwcC9y
b3V0ZXMvYXBwbGljYXRpb24uanM6IEFkZGVkLgorICAgICAgICAoZXhwb3J0LmRlZmF1bHQuRW1i
ZXIuUm91dGUuZXh0ZW5kLm1vZGVsKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvdG9kb212Yy9hcHAv
c2VydmljZXMvcmVwby5qczogQWRkZWQuCisgICAgICAgIChleHBvcnQuZGVmYXVsdC5FbWJlci5T
ZXJ2aWNlLmV4dGVuZC5maW5kQWxsKToKKyAgICAgICAgKGV4cG9ydC5kZWZhdWx0LkVtYmVyLlNl
cnZpY2UuZXh0ZW5kLmFkZCk6CisgICAgICAgIChleHBvcnQuZGVmYXVsdC5FbWJlci5TZXJ2aWNl
LmV4dGVuZC5kZWxldGUpOgorICAgICAgICAoZXhwb3J0LmRlZmF1bHQuRW1iZXIuU2VydmljZS5l
eHRlbmQucGVyc2lzdCk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNlL3RvZG9tdmMvYXBwL3N0eWxlcy9h
cHAuY3NzOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvdG9kb212Yy9hcHAvdGVtcGxhdGVz
L2FjdGl2ZS5oYnM6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS90b2RvbXZjL2FwcC90ZW1w
bGF0ZXMvYXBwbGljYXRpb24uaGJzOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvdG9kb212
Yy9hcHAvdGVtcGxhdGVzL2NvbXBsZXRlZC5oYnM6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJj
ZS90b2RvbXZjL2FwcC90ZW1wbGF0ZXMvY29tcG9uZW50cy8uZ2l0a2VlcDogQWRkZWQuCisgICAg
ICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2VtYmVyanMvc291cmNlL3RvZG9tdmMvYXBwL3RlbXBsYXRlcy9jb21wb25lbnRzL3RvZG8taXRl
bS5oYnM6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS90b2RvbXZjL2FwcC90ZW1wbGF0ZXMv
Y29tcG9uZW50cy90b2RvLWxpc3QuaGJzOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvdG9k
b212Yy9hcHAvdGVtcGxhdGVzL2luZGV4LmhiczogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNl
L3RvZG9tdmMvYm93ZXIuanNvbjogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNlL3RvZG9tdmMv
Y29uZmlnL2Vudmlyb25tZW50LmpzOiBBZGRlZC4KKyAgICAgICAgKG1vZHVsZS5leHBvcnRzKToK
KyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvZW1iZXJqcy9zb3VyY2UvdG9kb212Yy9kaXN0L2Fzc2V0cy90b2RvbXZjLWQ0MWQ4Y2Q5
OGYwMGIyMDRlOTgwMDk5OGVjZjg0MjdlLmNzczogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNl
L3RvZG9tdmMvZGlzdC9hc3NldHMvdG9kb212Yy1mZGQyYzQ4Y2Y2NzU3NTNkZTRhNzljODU3MzQz
ZTIzZi5qczogQWRkZWQuCisgICAgICAgIChlLmRlZmF1bHQudC5kZWZhdWx0LkNvbXBvbmVudC5l
eHRlbmQuYWN0aW9ucy5zdGFydEVkaXRpbmcpOgorICAgICAgICAoZS5kZWZhdWx0LnQuZGVmYXVs
dC5Db21wb25lbnQuZXh0ZW5kLmFjdGlvbnMuZG9uZUVkaXRpbmcpOgorICAgICAgICAoZS5kZWZh
dWx0LnQuZGVmYXVsdC5Db21wb25lbnQuZXh0ZW5kLmFjdGlvbnMuaGFuZGxlS2V5ZG93bik6Cisg
ICAgICAgIChlLmRlZmF1bHQudC5kZWZhdWx0LkNvbXBvbmVudC5leHRlbmQuYWN0aW9ucy50b2dn
bGVDb21wbGV0ZWQpOgorICAgICAgICAoZS5kZWZhdWx0LnQuZGVmYXVsdC5Db21wb25lbnQuZXh0
ZW5kLmFjdGlvbnMucmVtb3ZlVG9kbyk6CisgICAgICAgIChlLmRlZmF1bHQudC5kZWZhdWx0LkNv
bXBvbmVudC5leHRlbmQuZm9jdXNJbnB1dCk6CisgICAgICAgIChlLmRlZmF1bHQudC5kZWZhdWx0
LkNvbXBvbmVudC5leHRlbmQuYWN0aW9ucy5lbmFibGVUb2dnbGUpOgorICAgICAgICAoZS5kZWZh
dWx0LnQuZGVmYXVsdC5Db21wb25lbnQuZXh0ZW5kLmFjdGlvbnMuZGlzYWJsZVRvZ2dsZSk6Cisg
ICAgICAgIChlLmRlZmF1bHQudC5kZWZhdWx0LkNvbXBvbmVudC5leHRlbmQuYWN0aW9ucy50b2dn
bGVBbGwpOgorICAgICAgICAoZS5kZWZhdWx0LnQuZGVmYXVsdC5Db250cm9sbGVyLmV4dGVuZC5h
Y3Rpb25zLmNyZWF0ZVRvZG8pOgorICAgICAgICAoZS5kZWZhdWx0LnQuZGVmYXVsdC5Db250cm9s
bGVyLmV4dGVuZC5hY3Rpb25zLmNsZWFyQ29tcGxldGVkKToKKyAgICAgICAgKG4pOgorICAgICAg
ICAocik6CisgICAgICAgIChhKToKKyAgICAgICAgKGUuZGVmYXVsdC5pbml0aWFsaXplKToKKyAg
ICAgICAgKHIuKToKKyAgICAgICAgKHQpOgorICAgICAgICAoci5tYXApOgorICAgICAgICAoZS5k
ZWZhdWx0LnQuZGVmYXVsdC5Sb3V0ZS5leHRlbmQubW9kZWwpOgorICAgICAgICAoZS5kZWZhdWx0
LnQuZGVmYXVsdC5TZXJ2aWNlLmV4dGVuZC5maW5kQWxsKToKKyAgICAgICAgKGUuZGVmYXVsdC50
LmRlZmF1bHQuU2VydmljZS5leHRlbmQuYWRkKToKKyAgICAgICAgKGUuZGVmYXVsdC50LmRlZmF1
bHQuU2VydmljZS5leHRlbmQuZGVsZXRlKToKKyAgICAgICAgKGUuZGVmYXVsdC50LmRlZmF1bHQu
U2VydmljZS5leHRlbmQucGVyc2lzdCk6CisgICAgICAgIChnZXQgcmV0dXJuKToKKyAgICAgICAg
KHJldHVybi5idWlsZEZyYWdtZW50KToKKyAgICAgICAgKHJldHVybi5idWlsZFJlbmRlck5vZGVz
KToKKyAgICAgICAgKGUuZGVmYXVsdC5FbWJlci5IVE1MQmFycy50ZW1wbGF0ZS5yZXR1cm4uYnVp
bGRGcmFnbWVudCk6CisgICAgICAgIChlLmRlZmF1bHQuRW1iZXIuSFRNTEJhcnMudGVtcGxhdGUu
cmV0dXJuLmJ1aWxkUmVuZGVyTm9kZXMpOgorICAgICAgICAoZS5kZWZhdWx0LkVtYmVyLkhUTUxC
YXJzLnRlbXBsYXRlLmUpOgorICAgICAgICAoZS5kZWZhdWx0LkVtYmVyLkhUTUxCYXJzLnRlbXBs
YXRlLnQpOgorICAgICAgICAoZS5kZWZhdWx0LkVtYmVyLkhUTUxCYXJzLnRlbXBsYXRlLm4pOgor
ICAgICAgICAoZS5kZWZhdWx0LkVtYmVyLkhUTUxCYXJzLnRlbXBsYXRlLnIpOgorICAgICAgICAo
ZS5kZWZhdWx0LkVtYmVyLkhUTUxCYXJzLnRlbXBsYXRlKToKKyAgICAgICAgKGNhdGNoKToKKyAg
ICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvZW1iZXJqcy9zb3VyY2UvdG9kb212Yy9kaXN0L2Fzc2V0cy92ZW5kb3ItN2I1Yzk4NTIwOTEw
YWZhNThkNzRlMDVlYzg2Y2Q4NzMuY3NzOiBBZGRlZC4KKyAgICAgICAgKCNpc3N1ZS1jb3VudCwu
aGlkZGVuLGxhYmVsW2Zvcj10b2dnbGUtYWxsXSk6CisgICAgICAgICgjZm9vdGVyLCNpbmZvLCN0
b2RvYXBwIGgxLCN0b2dnbGUtYWxsKToKKyAgICAgICAgKGhyKToKKyAgICAgICAgKC5sZWFybiBh
KToKKyAgICAgICAgKC5sZWFybiBhOmhvdmVyKToKKyAgICAgICAgKC5sZWFybiBoMywubGVhcm4g
aDQsLmxlYXJuIGg1KToKKyAgICAgICAgKC5sZWFybiBoMyk6CisgICAgICAgICgubGVhcm4gaDQp
OgorICAgICAgICAoLmxlYXJuIGg1KToKKyAgICAgICAgKC5sZWFybiB1bCk6CisgICAgICAgICgu
bGVhcm4gbGkpOgorICAgICAgICAoLmxlYXJuIHApOgorICAgICAgICAoLnF1b3RlIHA6YWZ0ZXIs
LnF1b3RlIHA6YmVmb3JlKToKKyAgICAgICAgKC5xdW90ZSk6CisgICAgICAgICgucXVvdGUgcCk6
CisgICAgICAgICgucXVvdGUgcDpiZWZvcmUpOgorICAgICAgICAoLnF1b3RlIHA6YWZ0ZXIpOgor
ICAgICAgICAoLnF1b3RlIGZvb3Rlcik6CisgICAgICAgICgucXVvdGUgZm9vdGVyIGltZyk6Cisg
ICAgICAgICgucXVvdGUgZm9vdGVyIGEpOgorICAgICAgICAoLnNwZWVjaC1idWJibGUpOgorICAg
ICAgICAoLnNwZWVjaC1idWJibGU6YWZ0ZXIpOgorICAgICAgICAoLmxlYXJuLWJhcj4ubGVhcm4p
OgorICAgICAgICAoI21haW4sI25ldy10b2RvLCN0b2RvLWxpc3QgbGksI3RvZG9hcHAsLmVkaXQp
OgorICAgICAgICAoLmxlYXJuLWJhcik6CisgICAgICAgIChAbWVkaWEgKG1pbi13aWR0aDo4OTlw
eCkpOgorICAgICAgICAoYm9keSxidXR0b24saHRtbCk6CisgICAgICAgIChidXR0b24pOgorICAg
ICAgICAoYm9keSk6CisgICAgICAgIChidXR0b24saW5wdXRbdHlwZT1jaGVja2JveF0pOgorICAg
ICAgICAoI3RvZG9hcHApOgorICAgICAgICAoI3RvZG9hcHAgaW5wdXQ6Oi13ZWJraXQtaW5wdXQt
cGxhY2Vob2xkZXIpOgorICAgICAgICAoI3RvZG9hcHAgaW5wdXQ6Oi1tb3otcGxhY2Vob2xkZXIp
OgorICAgICAgICAoI3RvZG9hcHAgaW5wdXQ6OmlucHV0LXBsYWNlaG9sZGVyKToKKyAgICAgICAg
KCN0b2RvYXBwIGgxKToKKyAgICAgICAgKCNuZXctdG9kbywuZWRpdCk6CisgICAgICAgICgjbmV3
LXRvZG8pOgorICAgICAgICAoI21haW4pOgorICAgICAgICAoI3RvZ2dsZS1hbGwpOgorICAgICAg
ICAoI3RvZ2dsZS1hbGw6YmVmb3JlKToKKyAgICAgICAgKCN0b2dnbGUtYWxsOmNoZWNrZWQ6YmVm
b3JlKToKKyAgICAgICAgKCN0b2RvLWxpc3QpOgorICAgICAgICAoI3RvZG8tbGlzdCBsaSk6Cisg
ICAgICAgICgjdG9kby1saXN0IGxpOmxhc3QtY2hpbGQpOgorICAgICAgICAoI3RvZG8tbGlzdCBs
aS5lZGl0aW5nKToKKyAgICAgICAgKCN0b2RvLWxpc3QgbGkuZWRpdGluZyAuZWRpdCk6CisgICAg
ICAgICgjdG9kby1saXN0IGxpLmVkaXRpbmcgLnZpZXcpOgorICAgICAgICAoI3RvZG8tbGlzdCBs
aSAudG9nZ2xlKToKKyAgICAgICAgKCN0b2RvLWxpc3QgbGkgLnRvZ2dsZTphZnRlcik6CisgICAg
ICAgICgjdG9kby1saXN0IGxpIC50b2dnbGU6Y2hlY2tlZDphZnRlcik6CisgICAgICAgICgjdG9k
by1saXN0IGxpIGxhYmVsKToKKyAgICAgICAgKCN0b2RvLWxpc3QgbGkuY29tcGxldGVkIGxhYmVs
KToKKyAgICAgICAgKCN0b2RvLWxpc3QgbGkgLmRlc3Ryb3kpOgorICAgICAgICAoI2ZpbHRlcnMs
I2Zvb3RlcjpiZWZvcmUpOgorICAgICAgICAoI3RvZG8tbGlzdCBsaSAuZGVzdHJveTpob3Zlcik6
CisgICAgICAgICgjZmlsdGVycyBsaSBhLCNpbmZvIGEpOgorICAgICAgICAoI3RvZG8tbGlzdCBs
aSAuZGVzdHJveTphZnRlcik6CisgICAgICAgICgjdG9kby1saXN0IGxpOmhvdmVyIC5kZXN0cm95
KToKKyAgICAgICAgKCN0b2RvLWxpc3QgbGkgLmVkaXQpOgorICAgICAgICAoI3RvZG8tbGlzdCBs
aS5lZGl0aW5nOmxhc3QtY2hpbGQpOgorICAgICAgICAoI2Zvb3Rlcik6CisgICAgICAgICgjZm9v
dGVyOmJlZm9yZSk6CisgICAgICAgICgjdG9kby1jb3VudCk6CisgICAgICAgICgjdG9kby1jb3Vu
dCBzdHJvbmcpOgorICAgICAgICAoI2ZpbHRlcnMpOgorICAgICAgICAoI2ZpbHRlcnMgbGkpOgor
ICAgICAgICAoI2ZpbHRlcnMgbGkgYSk6CisgICAgICAgICgjZmlsdGVycyBsaSBhLnNlbGVjdGVk
LCNmaWx0ZXJzIGxpIGE6aG92ZXIpOgorICAgICAgICAoI2ZpbHRlcnMgbGkgYS5zZWxlY3RlZCk6
CisgICAgICAgICgjY2xlYXItY29tcGxldGVkLGh0bWwgI2NsZWFyLWNvbXBsZXRlZDphY3RpdmUp
OgorICAgICAgICAoI2NsZWFyLWNvbXBsZXRlZDpob3ZlciwjaW5mbyBhOmhvdmVyKToKKyAgICAg
ICAgKCNpbmZvKToKKyAgICAgICAgKCNpbmZvIHApOgorICAgICAgICAoI2luZm8gYSk6CisgICAg
ICAgICgjdG9kby1saXN0IGxpIC50b2dnbGUsI3RvZ2dsZS1hbGwpOgorICAgICAgICAoQG1lZGlh
IHNjcmVlbiBhbmQgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzowKSk6CisgICAgICAg
IChAbWVkaWEgKG1heC13aWR0aDo0MzBweCkpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS90b2RvbXZj
L2Rpc3QvYXNzZXRzL3ZlbmRvci05ODM2YWM4YjAxNmZjZWE2Zjg5Y2NmOTI5MTc3NzJmNi5qczog
QWRkZWQuCisgICAgICAgIChjcmVhdGVEZXByZWNhdGVkTW9kdWxlKToKKyAgICAgICAgKHQpOgor
ICAgICAgICAocik6CisgICAgICAgIChuKToKKyAgICAgICAgKGkpOgorICAgICAgICAobyk6Cisg
ICAgICAgIChhKToKKyAgICAgICAgKHMpOgorICAgICAgICAodSk6CisgICAgICAgIChyZXF1aXJl
anMucmVxdWlyZS5yZXF1aXJlTW9kdWxlKToKKyAgICAgICAgKGxvYWRlci5ub0NvbmZsaWN0KToK
KyAgICAgICAgKGYuQXJyYXkuaXNBcnJheS5BcnJheS5pc0FycmF5KToKKyAgICAgICAgKG4ucHJv
dG90eXBlLm1ha2VEZWZhdWx0RXhwb3J0KToKKyAgICAgICAgKG4ucHJvdG90eXBlLmV4cG9ydHMp
OgorICAgICAgICAobi5wcm90b3R5cGUudW5zZWUpOgorICAgICAgICAobi5wcm90b3R5cGUucmVp
ZnkpOgorICAgICAgICAobi5wcm90b3R5cGUuZmluZERlcHMpOgorICAgICAgICAodC5oYXMpOgor
ICAgICAgICAobi5wcm90b3R5cGUubWFrZVJlcXVpcmUpOgorICAgICAgICAoZGVmaW5lKToKKyAg
ICAgICAgKGRlZmluZS5hbGlhcyk6CisgICAgICAgIChyZXF1aXJlanMudW5zZWUpOgorICAgICAg
ICAocmVxdWlyZWpzLmNsZWFyKToKKyAgICAgICAgKGwpOgorICAgICAgICAoYyk6CisgICAgICAg
IChmKToKKyAgICAgICAgKGQpOgorICAgICAgICAocCk6CisgICAgICAgIChoKToKKyAgICAgICAg
KG0pOgorICAgICAgICAodik6CisgICAgICAgIChiKToKKyAgICAgICAgKGcpOgorICAgICAgICAo
eSk6CisgICAgICAgIChfKToKKyAgICAgICAgKGspOgorICAgICAgICAoQyk6CisgICAgICAgIChF
KToKKyAgICAgICAgKE8pOgorICAgICAgICAoTik6CisgICAgICAgIChTKToKKyAgICAgICAgKEEp
OgorICAgICAgICAoUCk6CisgICAgICAgIChqKToKKyAgICAgICAgKFIpOgorICAgICAgICAoTCk6
CisgICAgICAgIChEKToKKyAgICAgICAgKE0pOgorICAgICAgICAoSSk6CisgICAgICAgIChsLnMu
cHJvbWlzZSk6CisgICAgICAgIChIKToKKyAgICAgICAgKFYpOgorICAgICAgICAocSk6CisgICAg
ICAgICh6KToKKyAgICAgICAgKEIpOgorICAgICAgICAoVSk6CisgICAgICAgIChXKToKKyAgICAg
ICAgKEspOgorICAgICAgICAob2UpOgorICAgICAgICAobGUpOgorICAgICAgICAob2UuZm4ub2Uu
cHJvdG90eXBlLnRvQXJyYXkpOgorICAgICAgICAob2UuZm4ub2UucHJvdG90eXBlLnB1c2hTdGFj
ayk6CisgICAgICAgIChvZS5mbi5vZS5wcm90b3R5cGUuZWFjaCk6CisgICAgICAgIChvZS5mbi5v
ZS5wcm90b3R5cGUubWFwKToKKyAgICAgICAgKG9lLmZuLm9lLnByb3RvdHlwZS5zbGljZSk6Cisg
ICAgICAgIChvZS5mbi5vZS5wcm90b3R5cGUuZmlyc3QpOgorICAgICAgICAob2UuZm4ub2UucHJv
dG90eXBlLmxhc3QpOgorICAgICAgICAob2UuZm4ub2UucHJvdG90eXBlLmVxKToKKyAgICAgICAg
KG9lLmZuLm9lLnByb3RvdHlwZS5lbmQpOgorICAgICAgICAob2UuZXh0ZW5kLm9lLmZuLmV4dGVu
ZCk6CisgICAgICAgIChvZS5leHRlbmQpOgorICAgICAgICAob2UuZXh0ZW5kLik6CisgICAgICAg
IChyLmUpOgorICAgICAgICAobC4pOgorICAgICAgICAoZWUpOgorICAgICAgICAodmUuQ0hJTEQp
OgorICAgICAgICAodmUuUFNFVURPKToKKyAgICAgICAgKGZpbHRlci4pOgorICAgICAgICAoZmls
dGVyLlRBRyk6CisgICAgICAgIChmaWx0ZXIuQ0xBU1MpOgorICAgICAgICAoZmlsdGVyLkFUVFIp
OgorICAgICAgICAoZmlsdGVyLkNISUxEKToKKyAgICAgICAgKGZpbHRlci5QU0VVRE8pOgorICAg
ICAgICAocHNldWRvcy4pOgorICAgICAgICAocHNldWRvcy50YXJnZXQpOgorICAgICAgICAocHNl
dWRvcy5yb290KToKKyAgICAgICAgKHBzZXVkb3MuZm9jdXMpOgorICAgICAgICAocHNldWRvcy5l
bmFibGVkKToKKyAgICAgICAgKHBzZXVkb3MuZGlzYWJsZWQpOgorICAgICAgICAocHNldWRvcy5j
aGVja2VkKToKKyAgICAgICAgKHBzZXVkb3Muc2VsZWN0ZWQpOgorICAgICAgICAocHNldWRvcy5l
bXB0eSk6CisgICAgICAgIChwc2V1ZG9zLnBhcmVudCk6CisgICAgICAgIChwc2V1ZG9zLmhlYWRl
cik6CisgICAgICAgIChwc2V1ZG9zLmlucHV0KToKKyAgICAgICAgKHBzZXVkb3MuYnV0dG9uKToK
KyAgICAgICAgKHBzZXVkb3MudGV4dCk6CisgICAgICAgIChjZSk6CisgICAgICAgIChFLnQudG9r
ZW5pemUpOgorICAgICAgICAoTy50LmNvbXBpbGUpOgorICAgICAgICAoVC50LnNlbGVjdCk6Cisg
ICAgICAgIChmZSk6CisgICAgICAgIChkZSk6CisgICAgICAgIChvZS5maWx0ZXIpOgorICAgICAg
ICAob2UuZm4uZXh0ZW5kLik6CisgICAgICAgIChvZS5mbi5leHRlbmQpOgorICAgICAgICAoZ2Uu
b2UuZm4uaW5pdCk6CisgICAgICAgIChvZS5lYWNoKToKKyAgICAgICAgKGMuKToKKyAgICAgICAg
KGMuYWRkKToKKyAgICAgICAgKGMucmVtb3ZlKToKKyAgICAgICAgKGMuaGFzKToKKyAgICAgICAg
KGMuZW1wdHkpOgorICAgICAgICAoYy5kaXNhYmxlKToKKyAgICAgICAgKGMuZGlzYWJsZWQpOgor
ICAgICAgICAoYy5sb2NrKToKKyAgICAgICAgKGMubG9ja2VkKToKKyAgICAgICAgKGMuZmlyZVdp
dGgpOgorICAgICAgICAoYy5maXJlKToKKyAgICAgICAgKGMuZmlyZWQpOgorICAgICAgICAob2Uu
Q2FsbGJhY2tzKToKKyAgICAgICAgKG9lLmZuLnJlYWR5KToKKyAgICAgICAgKG9lLnJlYWR5LnBy
b21pc2UpOgorICAgICAgICAoa2UpOgorICAgICAgICAoQ2UpOgorICAgICAgICAocy5wcm90b3R5
cGUucmVnaXN0ZXIpOgorICAgICAgICAocy5wcm90b3R5cGUuY2FjaGUpOgorICAgICAgICAocy5w
cm90b3R5cGUuYWNjZXNzKToKKyAgICAgICAgKHMucHJvdG90eXBlLnJlbW92ZSk6CisgICAgICAg
IChzLnByb3RvdHlwZS5oYXNEYXRhKToKKyAgICAgICAgKGplKToKKyAgICAgICAgKG9lLmV2ZW50
Lik6CisgICAgICAgIChvZS5ldmVudC5hZGQpOgorICAgICAgICAob2UuZXZlbnQucmVtb3ZlKToK
KyAgICAgICAgKG9lLmV2ZW50LmRpc3BhdGNoKToKKyAgICAgICAgKG9lLmV2ZW50LmhhbmRsZXJz
KToKKyAgICAgICAgKG9lLmV2ZW50LmtleUhvb2tzLmZpbHRlcik6CisgICAgICAgIChvZS5ldmVu
dC5tb3VzZUhvb2tzLmZpbHRlcik6CisgICAgICAgIChvZS5ldmVudC5maXgpOgorICAgICAgICAo
cy5wcm90b3R5cGUuZ2V0IHJldHVybik6CisgICAgICAgIChvZS5ldmVudC5zcGVjaWFsLmZvY3Vz
LnRyaWdnZXIpOgorICAgICAgICAob2UuZXZlbnQuc3BlY2lhbC5ibHVyLnRyaWdnZXIpOgorICAg
ICAgICAob2UuZXZlbnQuc3BlY2lhbC5jbGljay50cmlnZ2VyKToKKyAgICAgICAgKG9lLmV2ZW50
LnNwZWNpYWwuY2xpY2suX2RlZmF1bHQpOgorICAgICAgICAob2UuZXZlbnQuc3BlY2lhbC5iZWZv
cmV1bmxvYWQucG9zdERpc3BhdGNoKToKKyAgICAgICAgKHMucHJvdG90eXBlKToKKyAgICAgICAg
KG9lLnJlbW92ZUV2ZW50KToKKyAgICAgICAgKG9lLkV2ZW50KToKKyAgICAgICAgKG9lLkV2ZW50
LnByb3RvdHlwZS5wcmV2ZW50RGVmYXVsdCk6CisgICAgICAgIChvZS5FdmVudC5wcm90b3R5cGUu
c3RvcFByb3BhZ2F0aW9uKToKKyAgICAgICAgKG9lLkV2ZW50LnByb3RvdHlwZS5zdG9wSW1tZWRp
YXRlUHJvcGFnYXRpb24pOgorICAgICAgICAoWWUpOgorICAgICAgICAoWGUpOgorICAgICAgICAo
cy5wcm90b3R5cGUuc2V0IHZhcik6CisgICAgICAgIChnZXQgb2UpOgorICAgICAgICAoc2V0IGdl
dCBvZSk6CisgICAgICAgIChSLnByb3RvdHlwZS5pbml0KToKKyAgICAgICAgKFIucHJvdG90eXBl
LmN1cik6CisgICAgICAgIChSLnByb3RvdHlwZS5ydW4pOgorICAgICAgICAob2UuZWFzaW5nLmxp
bmVhcik6CisgICAgICAgIChvZS5lYXNpbmcuc3dpbmcpOgorICAgICAgICAobi5jb21wbGV0ZSk6
CisgICAgICAgIChvZS5zcGVlZCk6CisgICAgICAgIChvZS5meC50aWNrKToKKyAgICAgICAgKG9l
LmZ4LnRpbWVyKToKKyAgICAgICAgKG9lLmZ4LnN0YXJ0KToKKyAgICAgICAgKG9lLmZ4LnN0b3Ap
OgorICAgICAgICAob2UuZm4uZGVsYXkpOgorICAgICAgICAoUi5wcm9wSG9va3Muc2Nyb2xsVG9w
LlIucHJvcEhvb2tzLnNjcm9sbExlZnQuc2V0IGUpOgorICAgICAgICAoUi5wcm9wSG9va3Muc2Ny
b2xsVG9wLlIucHJvcEhvb2tzLnNjcm9sbExlZnQpOgorICAgICAgICAoc2V0IHV0LnNldCByZXR1
cm4pOgorICAgICAgICAoc2V0IHV0KToKKyAgICAgICAgKG9wdFNlbGVjdGVkKToKKyAgICAgICAg
KHNldCB2YXIpOgorICAgICAgICAob2UucGFyc2VKU09OKToKKyAgICAgICAgKG9lLnBhcnNlWE1M
KToKKyAgICAgICAgKGRlYm91bmNlKToKKyAgICAgICAgKGNhbmNlbFRpbWVycyk6CisgICAgICAg
IChoYXNUaW1lcnMpOgorICAgICAgICAoY2FuY2VsKToKKyAgICAgICAgKF9jYW5jZWxJdGVtKToK
KyAgICAgICAgKF9ydW5FeHBpcmVkVGltZXJzKToKKyAgICAgICAgKF9zY2hlZHVsZUV4cGlyZWRU
aW1lcnMpOgorICAgICAgICAoX3JlaW5zdGFsbFRpbWVyVGltZW91dCk6CisgICAgICAgIChfY2xl
YXJUaW1lclRpbWVvdXQpOgorICAgICAgICAoX2luc3RhbGxUaW1lclRpbWVvdXQpOgorICAgICAg
ICAobi5wcm90b3R5cGUuc2NoZWR1bGUpOgorICAgICAgICAobi5wcm90b3R5cGUuZmx1c2gpOgor
ICAgICAgICAoci5wcm90b3R5cGUucHVzaCk6CisgICAgICAgIChyLnByb3RvdHlwZS5wdXNoVW5p
cXVlV2l0aG91dEd1aWQpOgorICAgICAgICAoci5wcm90b3R5cGUudGFyZ2V0UXVldWUpOgorICAg
ICAgICAoci5wcm90b3R5cGUucHVzaFVuaXF1ZVdpdGhHdWlkKToKKyAgICAgICAgKHIucHJvdG90
eXBlLnB1c2hVbmlxdWUpOgorICAgICAgICAoci5wcm90b3R5cGUuaW52b2tlKToKKyAgICAgICAg
KHIucHJvdG90eXBlLmludm9rZVdpdGhPbkVycm9yKToKKyAgICAgICAgKHIucHJvdG90eXBlLmZs
dXNoKToKKyAgICAgICAgKHIucHJvdG90eXBlLmNhbmNlbCk6CisgICAgICAgICh0LnNldCBlKToK
KyAgICAgICAgKHcpOgorICAgICAgICAodS5wcm90b3R5cGUubG9va3VwKToKKyAgICAgICAgKHUu
cHJvdG90eXBlLmxvb2t1cEZhY3RvcnkpOgorICAgICAgICAodS5wcm90b3R5cGUuZGVzdHJveSk6
CisgICAgICAgICh1LnByb3RvdHlwZS5yZXNldCk6CisgICAgICAgICh1LnByb3RvdHlwZS5vd25l
ckluamVjdGlvbik6CisgICAgICAgICh1LnByb3RvdHlwZS5jb250YWluZXIpOgorICAgICAgICAo
dS5wcm90b3R5cGUucmVnaXN0ZXIpOgorICAgICAgICAodS5wcm90b3R5cGUudW5yZWdpc3Rlcik6
CisgICAgICAgICh1LnByb3RvdHlwZS5yZXNvbHZlKToKKyAgICAgICAgKHUucHJvdG90eXBlLmRl
c2NyaWJlKToKKyAgICAgICAgKHUucHJvdG90eXBlLm5vcm1hbGl6ZUZ1bGxOYW1lKToKKyAgICAg
ICAgKHUucHJvdG90eXBlLm5vcm1hbGl6ZSk6CisgICAgICAgICh1LnByb3RvdHlwZS5tYWtlVG9T
dHJpbmcpOgorICAgICAgICAodS5wcm90b3R5cGUuaGFzKToKKyAgICAgICAgKHUucHJvdG90eXBl
Lm9wdGlvbnNGb3JUeXBlKToKKyAgICAgICAgKHUucHJvdG90eXBlLmdldE9wdGlvbnNGb3JUeXBl
KToKKyAgICAgICAgKHUucHJvdG90eXBlLm9wdGlvbnMpOgorICAgICAgICAodS5wcm90b3R5cGUu
Z2V0T3B0aW9ucyk6CisgICAgICAgICh1LnByb3RvdHlwZS5nZXRPcHRpb24pOgorICAgICAgICAo
dS5wcm90b3R5cGUudHlwZUluamVjdGlvbik6CisgICAgICAgICh1LnByb3RvdHlwZS5pbmplY3Rp
b24pOgorICAgICAgICAodS5wcm90b3R5cGUuZmFjdG9yeVR5cGVJbmplY3Rpb24pOgorICAgICAg
ICAodS5wcm90b3R5cGUuZmFjdG9yeUluamVjdGlvbik6CisgICAgICAgICh1LnByb3RvdHlwZS5r
bm93bkZvclR5cGUpOgorICAgICAgICAodS5wcm90b3R5cGUudmFsaWRhdGVGdWxsTmFtZSk6Cisg
ICAgICAgICh1LnByb3RvdHlwZS5pc1ZhbGlkRnVsbE5hbWUpOgorICAgICAgICAodS5wcm90b3R5
cGUudmFsaWRhdGVJbmplY3Rpb25zKToKKyAgICAgICAgKHUucHJvdG90eXBlLm5vcm1hbGl6ZUlu
amVjdGlvbnNIYXNoKToKKyAgICAgICAgKHUucHJvdG90eXBlLmdldEluamVjdGlvbnMpOgorICAg
ICAgICAodS5wcm90b3R5cGUuZ2V0VHlwZUluamVjdGlvbnMpOgorICAgICAgICAodS5wcm90b3R5
cGUuZ2V0RmFjdG9yeUluamVjdGlvbnMpOgorICAgICAgICAodS5wcm90b3R5cGUuZ2V0RmFjdG9y
eVR5cGVJbmplY3Rpb25zKToKKyAgICAgICAgKHUucHJvdG90eXBlLmV4cGFuZExvY2FsTG9va3Vw
KToKKyAgICAgICAgKG4ucHJvdG90eXBlLmFkZCk6CisgICAgICAgIChuLnByb3RvdHlwZS5tYXAp
OgorICAgICAgICAobi5wcm90b3R5cGUuYWRkRWRnZSk6CisgICAgICAgIChuLnByb3RvdHlwZS50
b3Bzb3J0KToKKyAgICAgICAgKG4ucHJvdG90eXBlLmFkZEVkZ2VzKToKKyAgICAgICAgKGwucHJv
dG90eXBlLmdldFN0YXRlKToKKyAgICAgICAgKGwucHJvdG90eXBlLnNldFN0YXRlKToKKyAgICAg
ICAgKGwucHJvdG90eXBlLmNsZWFyKToKKyAgICAgICAgKGwucHJvdG90eXBlLmRlc3Ryb3kpOgor
ICAgICAgICAoeC5nZXRFbGVtZW50QnlJZCk6CisgICAgICAgICh4Lmluc2VydEJlZm9yZSk6Cisg
ICAgICAgICh4LmFwcGVuZENoaWxkKToKKyAgICAgICAgKHguY2hpbGRBdCk6CisgICAgICAgICh4
LmNoaWxkQXRJbmRleCk6CisgICAgICAgICh4LmFwcGVuZFRleHQpOgorICAgICAgICAoeC5zZXRB
dHRyaWJ1dGUpOgorICAgICAgICAoeC5nZXRBdHRyaWJ1dGUpOgorICAgICAgICAoeC5zZXRBdHRy
aWJ1dGVOUyk6CisgICAgICAgICh4LmdldEF0dHJpYnV0ZU5TKToKKyAgICAgICAgKGcueC5yZW1v
dmVBdHRyaWJ1dGUpOgorICAgICAgICAoeC5yZW1vdmVBdHRyaWJ1dGUpOgorICAgICAgICAoeC5z
ZXRQcm9wZXJ0eVN0cmljdCk6CisgICAgICAgICh4LmdldFByb3BlcnR5U3RyaWN0KToKKyAgICAg
ICAgKHguc2V0UHJvcGVydHkpOgorICAgICAgICAobS5tLmNyZWF0ZUVsZW1lbnROUy54LmNyZWF0
ZUVsZW1lbnQpOgorICAgICAgICAoeC5jcmVhdGVFbGVtZW50KToKKyAgICAgICAgKHguc2V0TmFt
ZXNwYWNlKToKKyAgICAgICAgKHguZGV0ZWN0TmFtZXNwYWNlKToKKyAgICAgICAgKHguY3JlYXRl
RG9jdW1lbnRGcmFnbWVudCk6CisgICAgICAgICh4LmNyZWF0ZVRleHROb2RlKToKKyAgICAgICAg
KHguY3JlYXRlQ29tbWVudCk6CisgICAgICAgICh4LnJlcGFpckNsb25lZE5vZGUpOgorICAgICAg
ICAoeC5jbG9uZU5vZGUpOgorICAgICAgICAoeC5jcmVhdGVBdHRyTW9ycGgpOgorICAgICAgICAo
eC5jcmVhdGVFbGVtZW50TW9ycGgpOgorICAgICAgICAoeC5jcmVhdGVVbnNhZmVBdHRyTW9ycGgp
OgorICAgICAgICAoeC5jcmVhdGVNb3JwaCk6CisgICAgICAgICh4LmNyZWF0ZUZyYWdtZW50TW9y
cGgpOgorICAgICAgICAoeC5yZXBsYWNlQ29udGVudFdpdGhNb3JwaCk6CisgICAgICAgICh4LmNy
ZWF0ZVVuc2FmZU1vcnBoKToKKyAgICAgICAgKHguY3JlYXRlTW9ycGhBdCk6CisgICAgICAgICh4
LmNyZWF0ZVVuc2FmZU1vcnBoQXQpOgorICAgICAgICAoeC5pbnNlcnRNb3JwaEJlZm9yZSk6Cisg
ICAgICAgICh4LmFwcGVuZE1vcnBoKToKKyAgICAgICAgKHguaW5zZXJ0Qm91bmRhcnkpOgorICAg
ICAgICAoeC5zZXRNb3JwaEhUTUwpOgorICAgICAgICAoeC5wYXJzZUhUTUwpOgorICAgICAgICAo
dS5lLmJ1aWxkSFRNTERPTS5wKToKKyAgICAgICAgKHUuZS5hZGRDbGFzc2VzLm8pOgorICAgICAg
ICAoZS5yZW1vdmVDbGFzc2VzLmEpOgorICAgICAgICAobS5kLmRlZmF1bHQuZXh0ZW5kLmluaXQp
OgorICAgICAgICAobS5kLmRlZmF1bHQuZXh0ZW5kLmJvb3QpOgorICAgICAgICAobS5kLmRlZmF1
bHQuZXh0ZW5kLl9ib290U3luYyk6CisgICAgICAgIChtLmQuZGVmYXVsdC5leHRlbmQuZGlkQ3Jl
YXRlUm9vdFZpZXcpOgorICAgICAgICAobS5kLmRlZmF1bHQuZXh0ZW5kLnN0YXJ0Um91dGluZyk6
CisgICAgICAgIChtLmQuZGVmYXVsdC5leHRlbmQuc2V0dXBSb3V0ZXIpOgorICAgICAgICAobS5k
LmRlZmF1bHQuZXh0ZW5kLmhhbmRsZVVSTCk6CisgICAgICAgIChtLmQuZGVmYXVsdC5leHRlbmQu
c2V0dXBFdmVudERpc3BhdGNoZXIpOgorICAgICAgICAobS5kLmRlZmF1bHQuZXh0ZW5kLmdldFVS
TCk6CisgICAgICAgIChtLmQuZGVmYXVsdC5leHRlbmQuaSk6CisgICAgICAgIChtLmQuZGVmYXVs
dC5leHRlbmQuYSk6CisgICAgICAgIChtLmQuZGVmYXVsdC5leHRlbmQudmlzaXQpOgorICAgICAg
ICAoaC5wcm90b3R5cGUudG9FbnZpcm9ubWVudCk6CisgICAgICAgIChyZXR1cm4ubG9va3VwKToK
KyAgICAgICAgKGdldCB2YXIpOgorICAgICAgICAoTS5lLmNyZWF0ZSk6CisgICAgICAgIChJLmUu
Y3JlYXRlKToKKyAgICAgICAgKEYuZS5jcmVhdGUpOgorICAgICAgICAoRik6CisgICAgICAgIChq
LmRlZmF1bHQuZXh0ZW5kLmluaXQpOgorICAgICAgICAoai5kZWZhdWx0LmV4dGVuZC5idWlsZElu
c3RhbmNlKToKKyAgICAgICAgKGouZGVmYXVsdC5leHRlbmQuX3ByZXBhcmVGb3JHbG9iYWxzTW9k
ZSk6CisgICAgICAgIChqLmRlZmF1bHQuZXh0ZW5kLl9idWlsZERlcHJlY2F0ZWRJbnN0YW5jZSk6
CisgICAgICAgIChqLmRlZmF1bHQuZXh0ZW5kLndhaXRGb3JET01SZWFkeSk6CisgICAgICAgIChq
LmRlZmF1bHQuZXh0ZW5kLmRvbVJlYWR5KToKKyAgICAgICAgKGouZGVmYXVsdC5leHRlbmQuZGVm
ZXJSZWFkaW5lc3MpOgorICAgICAgICAoai5kZWZhdWx0LmV4dGVuZC5hZHZhbmNlUmVhZGluZXNz
KToKKyAgICAgICAgKGouZGVmYXVsdC5leHRlbmQuYm9vdCk6CisgICAgICAgIChqLmRlZmF1bHQu
ZXh0ZW5kLl9ib290U3luYyk6CisgICAgICAgIChqLmRlZmF1bHQuZXh0ZW5kLik6CisgICAgICAg
IChqLmRlZmF1bHQuZXh0ZW5kLnJlc2V0KToKKyAgICAgICAgKGouZGVmYXVsdC5leHRlbmQuZGlk
QmVjb21lUmVhZHkpOgorICAgICAgICAoai5kZWZhdWx0LmV4dGVuZC5yZWFkeSk6CisgICAgICAg
IChqLmRlZmF1bHQuZXh0ZW5kLndpbGxEZXN0cm95KToKKyAgICAgICAgKGouZGVmYXVsdC5leHRl
bmQudmlzaXQpOgorICAgICAgICAocmVvcGVuQ2xhc3MuYnVpbGRSZWdpc3RyeSk6CisgICAgICAg
IChpbml0KToKKyAgICAgICAgKHVucmVnaXN0ZXIpOgorICAgICAgICAod2lsbERlc3Ryb3kpOgor
ICAgICAgICAoYnVpbGRJbnN0YW5jZSk6CisgICAgICAgIChidWlsZFJlZ2lzdHJ5KToKKyAgICAg
ICAgKGluaXRpYWxpemVyKToKKyAgICAgICAgKGluc3RhbmNlSW5pdGlhbGl6ZXIpOgorICAgICAg
ICAocnVuSW5pdGlhbGl6ZXJzKToKKyAgICAgICAgKHJ1bkluc3RhbmNlSW5pdGlhbGl6ZXJzKToK
KyAgICAgICAgKF9ydW5Jbml0aWFsaXplcik6CisgICAgICAgIChnLnJlb3BlbkNsYXNzLmJ1aWxk
UmVnaXN0cnkpOgorICAgICAgICAoZS5kZWZhdWx0LmkuZGVmYXVsdC5leHRlbmQuaW5pdCk6Cisg
ICAgICAgIChlLmRlZmF1bHQuaS5kZWZhdWx0LmV4dGVuZC5ub3JtYWxpemUpOgorICAgICAgICAo
ZS5kZWZhdWx0LmkuZGVmYXVsdC5leHRlbmQucmVzb2x2ZSk6CisgICAgICAgIChlLmRlZmF1bHQu
aS5kZWZhdWx0LmV4dGVuZC5wYXJzZU5hbWUpOgorICAgICAgICAoZS5kZWZhdWx0LmkuZGVmYXVs
dC5leHRlbmQuX3BhcnNlTmFtZSk6CisgICAgICAgIChlLmRlZmF1bHQuaS5kZWZhdWx0LmV4dGVu
ZC5sb29rdXBEZXNjcmlwdGlvbik6CisgICAgICAgIChlLmRlZmF1bHQuaS5kZWZhdWx0LmV4dGVu
ZC5tYWtlVG9TdHJpbmcpOgorICAgICAgICAoZS5kZWZhdWx0LmkuZGVmYXVsdC5leHRlbmQudXNl
Um91dGVyTmFtaW5nKToKKyAgICAgICAgKGUuZGVmYXVsdC5pLmRlZmF1bHQuZXh0ZW5kLnJlc29s
dmVUZW1wbGF0ZSk6CisgICAgICAgIChlLmRlZmF1bHQuaS5kZWZhdWx0LmV4dGVuZC5yZXNvbHZl
Vmlldyk6CisgICAgICAgIChlLmRlZmF1bHQuaS5kZWZhdWx0LmV4dGVuZC5yZXNvbHZlQ29udHJv
bGxlcik6CisgICAgICAgIChlLmRlZmF1bHQuaS5kZWZhdWx0LmV4dGVuZC5yZXNvbHZlUm91dGUp
OgorICAgICAgICAoZS5kZWZhdWx0LmkuZGVmYXVsdC5leHRlbmQucmVzb2x2ZU1vZGVsKToKKyAg
ICAgICAgKGUuZGVmYXVsdC5pLmRlZmF1bHQuZXh0ZW5kLnJlc29sdmVIZWxwZXIpOgorICAgICAg
ICAoZS5kZWZhdWx0LmkuZGVmYXVsdC5leHRlbmQucmVzb2x2ZU90aGVyKToKKyAgICAgICAgKGUu
ZGVmYXVsdC5pLmRlZmF1bHQuZXh0ZW5kLnJlc29sdmVNYWluKToKKyAgICAgICAgKGUuZGVmYXVs
dC5pLmRlZmF1bHQuZXh0ZW5kLl9sb2dMb29rdXApOgorICAgICAgICAoZS5kZWZhdWx0LmkuZGVm
YXVsdC5leHRlbmQua25vd25Gb3JUeXBlKToKKyAgICAgICAgKGUuZGVmYXVsdC5pLmRlZmF1bHQu
ZXh0ZW5kLnRyYW5zbGF0ZVRvQ29udGFpbmVyRnVsbG5hbWUpOgorICAgICAgICAoZS5kZWZhdWx0
LmEuZGVmYXVsdC5leHRlbmQuY2FuQ2F0YWxvZ0VudHJpZXNCeVR5cGUpOgorICAgICAgICAoZS5k
ZWZhdWx0LmEuZGVmYXVsdC5leHRlbmQuY2F0YWxvZ0VudHJpZXNCeVR5cGUpOgorICAgICAgICAo
ZS5kZWZhdWx0Lm8uZGVmYXVsdC5leHRlbmQuaW5pdCk6CisgICAgICAgIChlLmRlZmF1bHQuby5k
ZWZhdWx0LmV4dGVuZC5nZXRGaWx0ZXJzKToKKyAgICAgICAgKGUuZGVmYXVsdC5vLmRlZmF1bHQu
ZXh0ZW5kLnMpOgorICAgICAgICAoZS5kZWZhdWx0Lm8uZGVmYXVsdC5leHRlbmQud2F0Y2hNb2Rl
bFR5cGVzKToKKyAgICAgICAgKGUuZGVmYXVsdC5vLmRlZmF1bHQuZXh0ZW5kLl9uYW1lVG9DbGFz
cyk6CisgICAgICAgIChlLmRlZmF1bHQuby5kZWZhdWx0LmV4dGVuZC5mKToKKyAgICAgICAgKGUu
ZGVmYXVsdC5vLmRlZmF1bHQuZXh0ZW5kLnApOgorICAgICAgICAoZS5kZWZhdWx0Lm8uZGVmYXVs
dC5leHRlbmQuaC53aWxsQ2hhbmdlKToKKyAgICAgICAgKGUuZGVmYXVsdC5vLmRlZmF1bHQuZXh0
ZW5kLmkpOgorICAgICAgICAoZS5kZWZhdWx0Lm8uZGVmYXVsdC5leHRlbmQud2F0Y2hSZWNvcmRz
KToKKyAgICAgICAgKGUuZGVmYXVsdC5vLmRlZmF1bHQuZXh0ZW5kLndpbGxEZXN0cm95KToKKyAg
ICAgICAgKGUuZGVmYXVsdC5vLmRlZmF1bHQuZXh0ZW5kLmRldGVjdCk6CisgICAgICAgIChlLmRl
ZmF1bHQuby5kZWZhdWx0LmV4dGVuZC5jb2x1bW5zRm9yVHlwZSk6CisgICAgICAgIChlLmRlZmF1
bHQuby5kZWZhdWx0LmV4dGVuZC5hKToKKyAgICAgICAgKGUuZGVmYXVsdC5vLmRlZmF1bHQuZXh0
ZW5kLnMuZGlkQ2hhbmdlKToKKyAgICAgICAgKGUuZGVmYXVsdC5vLmRlZmF1bHQuZXh0ZW5kLnMu
d2lsbENoYW5nZSk6CisgICAgICAgIChlLmRlZmF1bHQuby5kZWZhdWx0LmV4dGVuZC51KToKKyAg
ICAgICAgKGUuZGVmYXVsdC5vLmRlZmF1bHQuZXh0ZW5kLm9ic2VydmVNb2RlbFR5cGUpOgorICAg
ICAgICAoZS5kZWZhdWx0Lm8uZGVmYXVsdC5leHRlbmQud3JhcE1vZGVsVHlwZSk6CisgICAgICAg
IChlLmRlZmF1bHQuby5kZWZhdWx0LmV4dGVuZC5nZXRNb2RlbFR5cGVzKToKKyAgICAgICAgKGUu
ZGVmYXVsdC5vLmRlZmF1bHQuZXh0ZW5kLl9nZXRPYmplY3RzT25OYW1lc3BhY2VzKToKKyAgICAg
ICAgKGUuZGVmYXVsdC5vLmRlZmF1bHQuZXh0ZW5kLmdldFJlY29yZHMpOgorICAgICAgICAoZS5k
ZWZhdWx0Lm8uZGVmYXVsdC5leHRlbmQud3JhcFJlY29yZCk6CisgICAgICAgIChlLmRlZmF1bHQu
by5kZWZhdWx0LmV4dGVuZC5nZXRSZWNvcmRDb2x1bW5WYWx1ZXMpOgorICAgICAgICAoZS5kZWZh
dWx0Lm8uZGVmYXVsdC5leHRlbmQuZ2V0UmVjb3JkS2V5d29yZHMpOgorICAgICAgICAoZS5kZWZh
dWx0Lm8uZGVmYXVsdC5leHRlbmQuZ2V0UmVjb3JkRmlsdGVyVmFsdWVzKToKKyAgICAgICAgKGUu
ZGVmYXVsdC5vLmRlZmF1bHQuZXh0ZW5kLmdldFJlY29yZENvbG9yKToKKyAgICAgICAgKGUuZGVm
YXVsdC5vLmRlZmF1bHQuZXh0ZW5kLm9ic2VydmVSZWNvcmQpOgorICAgICAgICAobi50LmRlZmF1
bHQuZXh0ZW5kLnJlY29tcHV0ZSk6CisgICAgICAgIChhLmdldFNlbGYpOgorICAgICAgICAoYS5i
aW5kU2VsZik6CisgICAgICAgIChhLnVwZGF0ZVNlbGYpOgorICAgICAgICAoYS5nZXRCbG9jayk6
CisgICAgICAgIChhLmhhc0Jsb2NrKToKKyAgICAgICAgKGEuYmluZEJsb2NrKToKKyAgICAgICAg
KGEuZ2V0Q29tcG9uZW50KToKKyAgICAgICAgKGEuYmluZENvbXBvbmVudCk6CisgICAgICAgIChh
LmdldFZpZXcpOgorICAgICAgICAoYS5iaW5kVmlldyk6CisgICAgICAgIChhLmdldEF0dHJzKToK
KyAgICAgICAgKGEuYmluZEF0dHJzKToKKyAgICAgICAgKGEuaGFzTG9jYWwpOgorICAgICAgICAo
YS5oYXNPd25Mb2NhbCk6CisgICAgICAgIChhLmdldExvY2FsKToKKyAgICAgICAgKGEuYmluZExv
Y2FsKToKKyAgICAgICAgKHMuZ2V0U2VsZik6CisgICAgICAgIChzLmJpbmRTZWxmKToKKyAgICAg
ICAgKHMudXBkYXRlU2VsZik6CisgICAgICAgIChzLmdldEJsb2NrKToKKyAgICAgICAgKHMuYmlu
ZEJsb2NrKToKKyAgICAgICAgKHMuaGFzQmxvY2spOgorICAgICAgICAocy5nZXRDb21wb25lbnQp
OgorICAgICAgICAocy5iaW5kQ29tcG9uZW50KToKKyAgICAgICAgKHMuZ2V0Vmlldyk6CisgICAg
ICAgIChzLmJpbmRWaWV3KToKKyAgICAgICAgKHMuZ2V0QXR0cnMpOgorICAgICAgICAocy5iaW5k
QXR0cnMpOgorICAgICAgICAocy5oYXNMb2NhbCk6CisgICAgICAgIChzLmhhc093bkxvY2FsKToK
KyAgICAgICAgKHMuZ2V0TG9jYWwpOgorICAgICAgICAocy5iaW5kTG9jYWwpOgorICAgICAgICAo
Qy5pLmRlZmF1bHQuZXh0ZW5kLmluaXQpOgorICAgICAgICAoQy5pLmRlZmF1bHQuZXh0ZW5kLmNv
bXB1dGUpOgorICAgICAgICAoZS5kZWZhdWx0KToKKyAgICAgICAgKGUuZGVmYXVsdC5zZXR1cFN0
YXRlKToKKyAgICAgICAgKGUuZGVmYXVsdC5yZW5kZXIpOgorICAgICAgICAoZi5yLmRlZmF1bHQu
ZXh0ZW5kLmluaXQpOgorICAgICAgICAoZi5yLmRlZmF1bHQuZXh0ZW5kLmtleSk6CisgICAgICAg
IChmLnIuZGVmYXVsdC5leHRlbmQuY29tcHV0ZSk6CisgICAgICAgIChmLnIuZGVmYXVsdC5leHRl
bmQuc2V0VmFsdWUpOgorICAgICAgICAoZi5yLmRlZmF1bHQuZXh0ZW5kLnJldmFsaWRhdGUpOgor
ICAgICAgICAoZi5yLmRlZmF1bHQuZXh0ZW5kLl9jbGVhck9ic2VydmVkT2JqZWN0KToKKyAgICAg
ICAgKGUuZGVmYXVsdC5yZXJlbmRlcik6CisgICAgICAgIChwLm4uZGVmYXVsdC5leHRlbmQuZi5p
bml0KToKKyAgICAgICAgKHAubi5kZWZhdWx0LmV4dGVuZC5mLnIudXBkYXRlKToKKyAgICAgICAg
KHAubi5kZWZhdWx0LmV4dGVuZC5mLmNlbGwpOgorICAgICAgICAoZi5zLklOVk9LRSk6CisgICAg
ICAgIChoLmkuZGVmYXVsdC5leHRlbmQuaW5pdCk6CisgICAgICAgIChoLmkuZGVmYXVsdC5leHRl
bmQuY29tcHV0ZSk6CisgICAgICAgIChoLmkuZGVmYXVsdC5leHRlbmQuc2V0VmFsdWUpOgorICAg
ICAgICAoZS5kZWZhdWx0LndpbGxSZW5kZXIpOgorICAgICAgICAoZS5kZWZhdWx0LmNoaWxkRW52
KToKKyAgICAgICAgKGUuZGVmYXVsdC5pc1N0YWJsZSk6CisgICAgICAgIChlLmRlZmF1bHQuaXNF
bXB0eSk6CisgICAgICAgIChvLnIuZGVmYXVsdC5leHRlbmQuaW5pdCk6CisgICAgICAgIChvLnIu
ZGVmYXVsdC5leHRlbmQudmFsdWUpOgorICAgICAgICAoby5yLmRlZmF1bHQuZXh0ZW5kLm5vdGlm
eSk6CisgICAgICAgIChzLmRpZEluaXQpOgorICAgICAgICAocy53aWxsU2V0Q29udGVudCk6Cisg
ICAgICAgIChhLmFkZERlc3RydWN0aW9uKToKKyAgICAgICAgKGEuY2xlYW51cCk6CisgICAgICAg
IChhLmRpZFJlbmRlcik6CisgICAgICAgICh4KToKKyAgICAgICAgKGguY3JlYXRlKToKKyAgICAg
ICAgKGgucHJvdG90eXBlLnJlbmRlcik6CisgICAgICAgIChoLnByb3RvdHlwZS5yZXJlbmRlcik6
CisgICAgICAgIChoLnByb3RvdHlwZS5kZXN0cm95KToKKyAgICAgICAgKG4udC5kZWZhdWx0LmV4
dGVuZC5pbml0KToKKyAgICAgICAgKG4udC5kZWZhdWx0LmV4dGVuZC5jb21wdXRlKToKKyAgICAg
ICAgKG4udC5kZWZhdWx0LmV4dGVuZC5kZWFjdGl2YXRlKToKKyAgICAgICAgKGUuaW5pdGlhbGl6
ZXIuaW5pdGlhbGl6ZS5hLmRlZmF1bHQuaGFzRE9NLmwpOgorICAgICAgICAoc2V0IGcpOgorICAg
ICAgICAoZ2V0IGcpOgorICAgICAgICAoaS5idWlsZCk6CisgICAgICAgIChpLnByb3RvdHlwZS5j
aGlsZFdpdGhNZXRhKToKKyAgICAgICAgKGkucHJvdG90eXBlLmNoaWxkV2l0aFZpZXcpOgorICAg
ICAgICAoaS5wcm90b3R5cGUuY2hpbGRXaXRoT3V0bGV0U3RhdGUpOgorICAgICAgICAoZ2V0IHJl
dHVybik6CisgICAgICAgIChyZXR1cm4uYnVpbGRGcmFnbWVudCk6CisgICAgICAgIChyZXR1cm4u
YnVpbGRSZW5kZXJOb2Rlcyk6CisgICAgICAgIChlKToKKyAgICAgICAgKHQuKToKKyAgICAgICAg
KHQuZGVmYXVsdC5FWFRFTkRfUFJPVE9UWVBFUy4wLnQuZGVmYXVsdC5FWFRFTkRfUFJPVE9UWVBF
Uy5TdHJpbmcuU3RyaW5nLnByb3RvdHlwZS5odG1sU2FmZSk6CisgICAgICAgIChsLnByb3RvdHlw
ZS5wcmVyZW5kZXJUb3BMZXZlbFZpZXcpOgorICAgICAgICAobC5wcm90b3R5cGUucmVuZGVyVG9w
TGV2ZWxWaWV3KToKKyAgICAgICAgKGwucHJvdG90eXBlLnJldmFsaWRhdGVUb3BMZXZlbFZpZXcp
OgorICAgICAgICAobC5wcm90b3R5cGUuZGlzcGF0Y2hMaWZlY3ljbGVIb29rcyk6CisgICAgICAg
IChsLnByb3RvdHlwZS5lbnN1cmVWaWV3Tm90UmVuZGVyaW5nKToKKyAgICAgICAgKGMucHJvdG90
eXBlLmFkZCk6CisgICAgICAgIChjLnByb3RvdHlwZS5oYXMpOgorICAgICAgICAoYy5wcm90b3R5
cGUuY2xlYXIpOgorICAgICAgICAobC5wcm90b3R5cGUuY2xlYXJSZW5kZXJlZFZpZXdzKToKKyAg
ICAgICAgKGwucHJvdG90eXBlLmFwcGVuZFRvKToKKyAgICAgICAgKGwucHJvdG90eXBlLnJlcGxh
Y2VJbik6CisgICAgICAgIChsLnByb3RvdHlwZS5jcmVhdGVFbGVtZW50KToKKyAgICAgICAgKGwu
cHJvdG90eXBlLmRpZENyZWF0ZUVsZW1lbnQpOgorICAgICAgICAobC5wcm90b3R5cGUud2lsbElu
c2VydEVsZW1lbnQpOgorICAgICAgICAobC5wcm90b3R5cGUuc2V0QXR0cnMpOgorICAgICAgICAo
bC5wcm90b3R5cGUuY29tcG9uZW50SW5pdEF0dHJzKToKKyAgICAgICAgKGwucHJvdG90eXBlLmRp
ZEluc2VydEVsZW1lbnQpOgorICAgICAgICAobC5wcm90b3R5cGUuZGlkVXBkYXRlKToKKyAgICAg
ICAgKGwucHJvdG90eXBlLmRpZFJlbmRlcik6CisgICAgICAgIChsLnByb3RvdHlwZS51cGRhdGVB
dHRycyk6CisgICAgICAgIChsLnByb3RvdHlwZS5jb21wb25lbnRVcGRhdGVBdHRycyk6CisgICAg
ICAgIChsLnByb3RvdHlwZS53aWxsVXBkYXRlKToKKyAgICAgICAgKGwucHJvdG90eXBlLmNvbXBv
bmVudFdpbGxVcGRhdGUpOgorICAgICAgICAobC5wcm90b3R5cGUud2lsbFJlbmRlcik6CisgICAg
ICAgIChsLnByb3RvdHlwZS5jb21wb25lbnRXaWxsUmVuZGVyKToKKyAgICAgICAgKGwucHJvdG90
eXBlLnJlcmVuZGVyKToKKyAgICAgICAgKGwucHJvdG90eXBlLnJlbW92ZSk6CisgICAgICAgIChs
LnByb3RvdHlwZS5yZW5kZXJFbGVtZW50UmVtb3ZhbCk6CisgICAgICAgIChsLnByb3RvdHlwZS53
aWxsUmVtb3ZlRWxlbWVudCk6CisgICAgICAgIChsLnByb3RvdHlwZS53aWxsRGVzdHJveUVsZW1l
bnQpOgorICAgICAgICAobC5wcm90b3R5cGUuZGlkRGVzdHJveUVsZW1lbnQpOgorICAgICAgICAo
Zi5jcmVhdGUpOgorICAgICAgICAoZC5jcmVhdGUpOgorICAgICAgICAoZi5wcm90b3R5cGUpOgor
ICAgICAgICAoZi5wcm90b3R5cGUud2lsbFdhdGNoKToKKyAgICAgICAgKGYucHJvdG90eXBlLmRp
ZFVud2F0Y2gpOgorICAgICAgICAoZi5wcm90b3R5cGUuc2V0dXApOgorICAgICAgICAoZi5wcm90
b3R5cGUudGVhcmRvd24pOgorICAgICAgICAoZi5wcm90b3R5cGUucmVhZE9ubHkpOgorICAgICAg
ICAoZi5wcm90b3R5cGUub25lV2F5KToKKyAgICAgICAgKGYucHJvdG90eXBlLmNvcHkpOgorICAg
ICAgICAoZi5wcm90b3R5cGUuZnJvbSk6CisgICAgICAgIChmLnByb3RvdHlwZS50byk6CisgICAg
ICAgIChmLnByb3RvdHlwZS50b1N0cmluZyk6CisgICAgICAgIChmLnByb3RvdHlwZS5jb25uZWN0
KToKKyAgICAgICAgKGYucHJvdG90eXBlLmRpc2Nvbm5lY3QpOgorICAgICAgICAoZi5wcm90b3R5
cGUuZnJvbURpZENoYW5nZSk6CisgICAgICAgIChmLnByb3RvdHlwZS50b0RpZENoYW5nZSk6Cisg
ICAgICAgIChmLnByb3RvdHlwZS5fc2NoZWR1bGVTeW5jKToKKyAgICAgICAgKGYucHJvdG90eXBl
Ll9zeW5jKToKKyAgICAgICAgKGZyb20pOgorICAgICAgICAodG8pOgorICAgICAgICAoci5wcm90
b3R5cGUuc2V0IGUpOgorICAgICAgICAoci5wcm90b3R5cGUuZ2V0IGUpOgorICAgICAgICAoci5w
cm90b3R5cGUucHVyZ2UpOgorICAgICAgICAodS5wcm90b3R5cGUuYWRkKToKKyAgICAgICAgKHUu
cHJvdG90eXBlLnJlbW92ZSk6CisgICAgICAgICh1LnByb3RvdHlwZS5yZXZhbGlkYXRlQWxsKToK
KyAgICAgICAgKHUucHJvdG90eXBlLnJldmFsaWRhdGUpOgorICAgICAgICAodS5wcm90b3R5cGUu
bm90aWZ5KToKKyAgICAgICAgKGQucHJvdG90eXBlLnZhbHVlKToKKyAgICAgICAgKGQucHJvdG90
eXBlLmRlc3Ryb3kpOgorICAgICAgICAoZC5wcm90b3R5cGUuY29weSk6CisgICAgICAgIChkLnBy
b3RvdHlwZS5hZGQpOgorICAgICAgICAoZC5wcm90b3R5cGUucmVtb3ZlKToKKyAgICAgICAgKGQu
cHJvdG90eXBlLmNoYWluKToKKyAgICAgICAgKGQucHJvdG90eXBlLnVuY2hhaW4pOgorICAgICAg
ICAoZC5wcm90b3R5cGUubm90aWZ5KToKKyAgICAgICAgKGQucHJvdG90eXBlLnBvcHVsYXRlQWZm
ZWN0ZWQpOgorICAgICAgICAoaC52b2xhdGlsZSk6CisgICAgICAgIChoLnJlYWRPbmx5KToKKyAg
ICAgICAgKGgucHJvcGVydHkpOgorICAgICAgICAoaC5tZXRhKToKKyAgICAgICAgKGguZGlkQ2hh
bmdlKToKKyAgICAgICAgKGguX3Rocm93UmVhZE9ubHlFcnJvcik6CisgICAgICAgIChoLmNsb2Ji
ZXJTZXQpOgorICAgICAgICAoaC52b2xhdGlsZVNldCk6CisgICAgICAgIChoLnNldFdpdGhTdXNw
ZW5kKToKKyAgICAgICAgKGguX3NldCk6CisgICAgICAgIChoLnRlYXJkb3duKToKKyAgICAgICAg
KHAucmVtb3ZlKToKKyAgICAgICAgKGMuZS50KToKKyAgICAgICAgKHQuZ2V0IHQpOgorICAgICAg
ICAodC5zZXQgdCk6CisgICAgICAgIChuLnRvU3RyaW5nKToKKyAgICAgICAgKGYuYXNzZXJ0KToK
KyAgICAgICAgKGYuaW5mbyk6CisgICAgICAgIChmLndhcm4pOgorICAgICAgICAoZi5kZWJ1Zyk6
CisgICAgICAgIChmLmRlcHJlY2F0ZSk6CisgICAgICAgIChmLmRlcHJlY2F0ZUZ1bmMpOgorICAg
ICAgICAoZi5ydW5JbkRlYnVnKToKKyAgICAgICAgKGYuZGVidWdTZWFsKToKKyAgICAgICAgKG8u
YSk6CisgICAgICAgIChvLnNldCBlKToKKyAgICAgICAgKHIuZGVmYXVsdC5EZWJ1Zy5yZWdpc3Rl
ckRlcHJlY2F0aW9uSGFuZGxlcik6CisgICAgICAgIChyLmRlZmF1bHQuRGVidWcucmVnaXN0ZXJX
YXJuSGFuZGxlcik6CisgICAgICAgIChyZXR1cm4udC50LmJpbmQuZSk6CisgICAgICAgIChlLmZs
YWdnZWRJbnN0cnVtZW50LmMpOgorICAgICAgICAobi5wcm90b3R5cGUuX2dldExpYnJhcnlCeU5h
bWUpOgorICAgICAgICAobi5wcm90b3R5cGUucmVnaXN0ZXIpOgorICAgICAgICAobi5wcm90b3R5
cGUucmVnaXN0ZXJDb3JlTGlicmFyeSk6CisgICAgICAgIChuLnByb3RvdHlwZS5kZVJlZ2lzdGVy
KToKKyAgICAgICAgKGkuZS5uLnN0cmluZ19hcHBlYXJlZF9oZXJlLnR5cGVvZi5pLmFwcGx5Lm4p
OgorICAgICAgICAoaS5lLm4pOgorICAgICAgICAodS5jcmVhdGUpOgorICAgICAgICAodS5wcm90
b3R5cGUuY2xlYXIpOgorICAgICAgICAodS5wcm90b3R5cGUuZGVsZXRlKToKKyAgICAgICAgKHUu
cHJvdG90eXBlLmlzRW1wdHkpOgorICAgICAgICAodS5wcm90b3R5cGUuZm9yRWFjaCk6CisgICAg
ICAgICh1LnByb3RvdHlwZS50b0FycmF5KToKKyAgICAgICAgKHUucHJvdG90eXBlLmNvcHkpOgor
ICAgICAgICAobC5jcmVhdGUpOgorICAgICAgICAobC5wcm90b3R5cGUuZ2V0IGUpOgorICAgICAg
ICAobC5wcm90b3R5cGUuc2V0IGUpOgorICAgICAgICAobC5wcm90b3R5cGUuZGVsZXRlKToKKyAg
ICAgICAgKGwucHJvdG90eXBlLmhhcyk6CisgICAgICAgIChsLnByb3RvdHlwZS4wLnRoaXMuc2l6
ZS50KToKKyAgICAgICAgKGwucHJvdG90eXBlLmZvckVhY2gpOgorICAgICAgICAobC5wcm90b3R5
cGUuY29weSk6CisgICAgICAgIChjLmNyZWF0ZSk6CisgICAgICAgIChjLnByb3RvdHlwZS5jb3B5
KToKKyAgICAgICAgKHQudC5wcm90b3R5cGUuc3RyaW5nX2FwcGVhcmVkX2hlcmUubik6CisgICAg
ICAgICh0LnQucHJvdG90eXBlLnN0cmluZ19hcHBlYXJlZF9oZXJlLmkpOgorICAgICAgICAobi5w
cm90b3R5cGUuX2dldE9yQ3JlYXRlT3duTWFwKToKKyAgICAgICAgKG4ucHJvdG90eXBlLl9nZXRJ
bmhlcml0ZWQpOgorICAgICAgICAobi5wcm90b3R5cGUuX2ZpbmRJbmhlcml0ZWQpOgorICAgICAg
ICAobi5wcm90b3R5cGUuX2ZvckVhY2hJbik6CisgICAgICAgIChpLmFkZFRvTGlzdGVuZXJzKToK
KyAgICAgICAgKGkuX2ZpbmFsaXplTGlzdGVuZXJzKToKKyAgICAgICAgKGkucmVtb3ZlRnJvbUxp
c3RlbmVycyk6CisgICAgICAgIChpLm1hdGNoaW5nTGlzdGVuZXJzKToKKyAgICAgICAgKGkuc3Vz
cGVuZExpc3RlbmVycyk6CisgICAgICAgIChpLndhdGNoZWRFdmVudHMpOgorICAgICAgICAoaS5f
aW5pdGlhbGl6ZUxpc3RlbmVycyk6CisgICAgICAgIChUKToKKyAgICAgICAgKHIubik6CisgICAg
ICAgIChyLmkpOgorICAgICAgICAoei5hKToKKyAgICAgICAgKFUuYSk6CisgICAgICAgIChNLmFw
cGx5UGFydGlhbCk6CisgICAgICAgIChNLmNyZWF0ZSk6CisgICAgICAgIChHLnJlb3Blbik6Cisg
ICAgICAgIChHLmFwcGx5KToKKyAgICAgICAgKEcuYXBwbHlQYXJ0aWFsKToKKyAgICAgICAgKEcu
dG9TdHJpbmcpOgorICAgICAgICAoRy5kZXRlY3QpOgorICAgICAgICAoRy53aXRob3V0KToKKyAg
ICAgICAgKEcua2V5cyk6CisgICAgICAgIChNLm1peGlucyk6CisgICAgICAgIChXLnRvU3RyaW5n
KToKKyAgICAgICAgKG4ucHJvdG90eXBlLmNsZWFyKToKKyAgICAgICAgKGEuZS50KToKKyAgICAg
ICAgKHUuZS50KToKKyAgICAgICAgKHQucmV0dXJuLnRoaXMuX3N1cGVyLmdldCBlKToKKyAgICAg
ICAgKGMucHJvdG90eXBlKToKKyAgICAgICAgKGMucHJvdG90eXBlLl9zdXBlci5nZXQgbCk6Cisg
ICAgICAgIChsLnByb3RvdHlwZSk6CisgICAgICAgICh1LmpvaW4pOgorICAgICAgICAodS5iaW5k
KToKKyAgICAgICAgKHUuYmVnaW4pOgorICAgICAgICAodS5lbmQpOgorICAgICAgICAodS5zY2hl
ZHVsZSk6CisgICAgICAgICh1Lmhhc1NjaGVkdWxlZFRpbWVycyk6CisgICAgICAgICh1LmNhbmNl
bFRpbWVycyk6CisgICAgICAgICh1LnN5bmMpOgorICAgICAgICAodS5sYXRlcik6CisgICAgICAg
ICh1Lm9uY2UpOgorICAgICAgICAodS5zY2hlZHVsZU9uY2UpOgorICAgICAgICAodS5uZXh0KToK
KyAgICAgICAgKHUuY2FuY2VsKToKKyAgICAgICAgKHUuZGVib3VuY2UpOgorICAgICAgICAodS50
aHJvdHRsZSk6CisgICAgICAgICh1Ll9hZGRRdWV1ZSk6CisgICAgICAgIChzdWJzY3JpYmUpOgor
ICAgICAgICAodW5zdWJzY3JpYmUpOgorICAgICAgICAocmVwbGFjZSk6CisgICAgICAgIChnZXRW
YWx1ZSk6CisgICAgICAgIChzZXRWYWx1ZSk6CisgICAgICAgIChlLmRlZmF1bHQuby5kZWZhdWx0
LmV4dGVuZC5jb21wdXRlKToKKyAgICAgICAgKGUuZGVmYXVsdC5vLmRlZmF1bHQuZXh0ZW5kLnNl
dFZhbHVlKToKKyAgICAgICAgKGUuZGVmYXVsdC5vLmRlZmF1bHQuZXh0ZW5kLnNldFNvdXJjZSk6
CisgICAgICAgIChlLmRlZmF1bHQuby5kZWZhdWx0LmV4dGVuZC5yZXZhbGlkYXRlKToKKyAgICAg
ICAgKGUuZGVmYXVsdC5vLmRlZmF1bHQuZXh0ZW5kLl9jbGVhck9ic2VydmVkT2JqZWN0KToKKyAg
ICAgICAgKGUuZGVmYXVsdC5vLmRlZmF1bHQuZXh0ZW5kLmRlYWN0aXZhdGUpOgorICAgICAgICAo
bi5yLmRlZmF1bHQuZXh0ZW5kLmluaXQpOgorICAgICAgICAobi5yLmRlZmF1bHQuZXh0ZW5kLmNv
bXB1dGUpOgorICAgICAgICAobi5yLmRlZmF1bHQuZXh0ZW5kLnNldFZhbHVlKToKKyAgICAgICAg
KG4uci5kZWZhdWx0LmV4dGVuZC5zZXRTb3VyY2UpOgorICAgICAgICAoZC5wcm90b3R5cGUuX2lu
aXQpOgorICAgICAgICAoZC5wcm90b3R5cGUuX21ha2VDaGlsZFN0cmVhbSk6CisgICAgICAgIChk
LnByb3RvdHlwZS5yZW1vdmVDaGlsZCk6CisgICAgICAgIChkLnByb3RvdHlwZS5nZXRLZXkpOgor
ICAgICAgICAoZC5wcm90b3R5cGUuZ2V0IGUpOgorICAgICAgICAoZC5wcm90b3R5cGUuYWRkTXV0
YWJsZURlcGVuZGVuY3kpOgorICAgICAgICAoZC5wcm90b3R5cGUuYWRkRGVwZW5kZW5jeSk6Cisg
ICAgICAgIChkLnByb3RvdHlwZS5zdWJzY3JpYmVEZXBlbmRlbmNpZXMpOgorICAgICAgICAoZC5w
cm90b3R5cGUudW5zdWJzY3JpYmVEZXBlbmRlbmNpZXMpOgorICAgICAgICAoZC5wcm90b3R5cGUu
bWF5YmVEZWFjdGl2YXRlKToKKyAgICAgICAgKGQucHJvdG90eXBlLmFjdGl2YXRlKToKKyAgICAg
ICAgKGQucHJvdG90eXBlLnJldmFsaWRhdGUpOgorICAgICAgICAoZC5wcm90b3R5cGUuX2NsZWFy
T2JzZXJ2ZWRQcm94eSk6CisgICAgICAgIChkLnByb3RvdHlwZS5kZWFjdGl2YXRlKToKKyAgICAg
ICAgKGQucHJvdG90eXBlLmNvbXB1dGUpOgorICAgICAgICAoZC5wcm90b3R5cGUuc2V0VmFsdWUp
OgorICAgICAgICAoZC5wcm90b3R5cGUubm90aWZ5RXhjZXB0KToKKyAgICAgICAgKGQucHJvdG90
eXBlLnN1YnNjcmliZSk6CisgICAgICAgIChkLnByb3RvdHlwZS5wcnVuZSk6CisgICAgICAgIChk
LnByb3RvdHlwZS51bnN1YnNjcmliZSk6CisgICAgICAgIChkLnByb3RvdHlwZS5ub3RpZnlTdWJz
Y3JpYmVycyk6CisgICAgICAgIChkLmV4dGVuZCk6CisgICAgICAgIChnLmQuZXh0ZW5kLmluaXQp
OgorICAgICAgICAoZy5kLmV4dGVuZC5jb21wdXRlKToKKyAgICAgICAgKHJlbW92ZUZyb20pOgor
ICAgICAgICAoeC5yLmRlZmF1bHQuZXh0ZW5kLmluaXQpOgorICAgICAgICAoeC5yLmRlZmF1bHQu
ZXh0ZW5kLmxhYmVsKToKKyAgICAgICAgKHguci5kZWZhdWx0LmV4dGVuZC5jb21wdXRlKToKKyAg
ICAgICAgKGkudSk6CisgICAgICAgIChpLmUubWFya09iamVjdEFzRGlydHkubCk6CisgICAgICAg
IChlbHNlLmUubWFya09iamVjdEFzRGlydHkubCk6CisgICAgICAgICh0LnIpOgorICAgICAgICAo
by5wcm90b3R5cGUpOgorICAgICAgICAoby5wcm90b3R5cGUuaGFzKToKKyAgICAgICAgKG8ucHJv
dG90eXBlLmRlbGV0ZSk6CisgICAgICAgIChlLmRlZmF1bHQuZS5jbGVhbnVwKToKKyAgICAgICAg
KGYucHVzaC4pOgorICAgICAgICAoZi5wdXNoKToKKyAgICAgICAgKGwucmVnaXN0ZXJBY3Rpb24p
OgorICAgICAgICAobC51bnJlZ2lzdGVyQWN0aW9uKToKKyAgICAgICAgKGQucHJvdG90eXBlKToK
KyAgICAgICAgKHYudS5kZWZhdWx0LmV4dGVuZCk6CisgICAgICAgICh2LnUuZGVmYXVsdC5leHRl
bmQuKToKKyAgICAgICAgKHNldCBnZXQgdi50b1N0cmluZyk6CisgICAgICAgIChzZXQgZ2V0IHYp
OgorICAgICAgICAobi50LmRlZmF1bHQuZXh0ZW5kKToKKyAgICAgICAgKHIuZGVmYXVsdC5yZW9w
ZW4pOgorICAgICAgICAoZS5kZWZhdWx0LmNyZWF0ZSk6CisgICAgICAgIChlLmRlZmF1bHQuX2dl
dEhhc2gpOgorICAgICAgICAoZS5kZWZhdWx0LmEuZGVmYXVsdC5leHRlbmQpOgorICAgICAgICAo
ZS5kZWZhdWx0Lm8uZGVmYXVsdC5leHRlbmQpOgorICAgICAgICAoZS5kZWZhdWx0Lm8uZGVmYXVs
dC5leHRlbmQuKToKKyAgICAgICAgKGUuZGVmYXVsdC5pLmRlZmF1bHQuZXh0ZW5kKToKKyAgICAg
ICAgKGUuZGVmYXVsdC5pLmRlZmF1bHQuZXh0ZW5kLik6CisgICAgICAgIChvLmdldCByZXR1cm4p
OgorICAgICAgICAoby4pOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS90b2RvbXZjL2Rpc3QvY3Jvc3Nk
b21haW4ueG1sOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvdG9kb212Yy9kaXN0L2luZGV4
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS90b2RvbXZjL2Rpc3Qvcm9ib3RzLnR4
dDogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNlL3RvZG9tdmMvZW1iZXItY2xpLWJ1aWxkLmpz
OiBBZGRlZC4KKyAgICAgICAgKG1vZHVsZS5leHBvcnRzKToKKyAgICAgICAgKiBTcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2Uv
dG9kb212Yy9wYWNrYWdlLmpzb246IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS90b2RvbXZj
L3B1YmxpYy9jcm9zc2RvbWFpbi54bWw6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS90b2Rv
bXZjL3B1YmxpYy9yb2JvdHMudHh0OiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvdG9kb212
Yy90ZXN0ZW0uanM6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS90b2RvbXZjL3Rlc3RzLy5q
c2hpbnRyYzogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNlL3RvZG9tdmMvdGVzdHMvaGVscGVy
cy9kZXN0cm95LWFwcC5qczogQWRkZWQuCisgICAgICAgIChleHBvcnQuZGVmYXVsdC5kZXN0cm95
QXBwKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvdG9kb212Yy90ZXN0cy9oZWxwZXJzL21vZHVsZS1m
b3ItYWNjZXB0YW5jZS5qczogQWRkZWQuCisgICAgICAgIChleHBvcnQuZGVmYXVsdCk6CisgICAg
ICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2VtYmVyanMvc291cmNlL3RvZG9tdmMvdGVzdHMvaGVscGVycy9yZXNvbHZlci5qczogQWRkZWQu
CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2VtYmVyanMvc291cmNlL3RvZG9tdmMvdGVzdHMvaGVscGVycy9zdGFydC1hcHAuanM6
IEFkZGVkLgorICAgICAgICAoZXhwb3J0LmRlZmF1bHQuc3RhcnRBcHApOgorICAgICAgICAqIFNw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpz
L3NvdXJjZS90b2RvbXZjL3Rlc3RzL2luZGV4Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIFNwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3Nv
dXJjZS90b2RvbXZjL3Rlc3RzL2ludGVncmF0aW9uLy5naXRrZWVwOiBBZGRlZC4KKyAgICAgICAg
KiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1i
ZXJqcy9zb3VyY2UvdG9kb212Yy90ZXN0cy90ZXN0LWhlbHBlci5qczogQWRkZWQuCisgICAgICAg
ICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2Vt
YmVyanMvc291cmNlL3RvZG9tdmMvdGVzdHMvdW5pdC8uZ2l0a2VlcDogQWRkZWQuCisgICAgICAg
ICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2Vt
YmVyanMvc291cmNlL3RvZG9tdmMvdmVuZG9yLy5naXRrZWVwOiBBZGRlZC4KKyAgICAgICAgKiBT
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJq
cy9zb3VyY2UvdG9kb212Yy92ZW5kb3IvYmFzZS5jc3M6IEFkZGVkLgorICAgICAgICAoaHIpOgor
ICAgICAgICAoLmxlYXJuIGEpOgorICAgICAgICAoLmxlYXJuIGE6aG92ZXIpOgorICAgICAgICAo
LmxlYXJuIGgzLCk6CisgICAgICAgICgubGVhcm4gaDMpOgorICAgICAgICAoLmxlYXJuIGg0KToK
KyAgICAgICAgKC5sZWFybiBoNSk6CisgICAgICAgICgubGVhcm4gdWwpOgorICAgICAgICAoLmxl
YXJuIGxpKToKKyAgICAgICAgKC5sZWFybiBwKToKKyAgICAgICAgKCNpc3N1ZS1jb3VudCk6Cisg
ICAgICAgICgucXVvdGUpOgorICAgICAgICAoLnF1b3RlIHApOgorICAgICAgICAoLnF1b3RlIHA6
YmVmb3JlKToKKyAgICAgICAgKC5xdW90ZSBwOmFmdGVyKToKKyAgICAgICAgKC5xdW90ZSBmb290
ZXIpOgorICAgICAgICAoLnF1b3RlIGZvb3RlciBpbWcpOgorICAgICAgICAoLnF1b3RlIGZvb3Rl
ciBhKToKKyAgICAgICAgKC5zcGVlY2gtYnViYmxlKToKKyAgICAgICAgKC5zcGVlY2gtYnViYmxl
OmFmdGVyKToKKyAgICAgICAgKC5sZWFybi1iYXIgPiAubGVhcm4pOgorICAgICAgICAoQG1lZGlh
IChtaW4td2lkdGg6IDg5OXB4KSk6CisgICAgICAgICgubGVhcm4tYmFyKToKKyAgICAgICAgKiBT
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJq
cy9zb3VyY2UvdG9kb212Yy92ZW5kb3IvaW5kZXguY3NzOiBBZGRlZC4KKyAgICAgICAgKGh0bWws
KToKKyAgICAgICAgKGJ1dHRvbik6CisgICAgICAgIChib2R5KToKKyAgICAgICAgKGJ1dHRvbiwp
OgorICAgICAgICAoLmhpZGRlbik6CisgICAgICAgICgjdG9kb2FwcCk6CisgICAgICAgICgjdG9k
b2FwcCBpbnB1dDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlcik6CisgICAgICAgICgjdG9kb2Fw
cCBpbnB1dDo6LW1vei1wbGFjZWhvbGRlcik6CisgICAgICAgICgjdG9kb2FwcCBpbnB1dDo6aW5w
dXQtcGxhY2Vob2xkZXIpOgorICAgICAgICAoI3RvZG9hcHAgaDEpOgorICAgICAgICAoI25ldy10
b2RvLCk6CisgICAgICAgICgjbmV3LXRvZG8pOgorICAgICAgICAoI21haW4pOgorICAgICAgICAo
bGFiZWxbZm9yPSd0b2dnbGUtYWxsJ10pOgorICAgICAgICAoI3RvZ2dsZS1hbGwpOgorICAgICAg
ICAoI3RvZ2dsZS1hbGw6YmVmb3JlKToKKyAgICAgICAgKCN0b2dnbGUtYWxsOmNoZWNrZWQ6YmVm
b3JlKToKKyAgICAgICAgKCN0b2RvLWxpc3QpOgorICAgICAgICAoI3RvZG8tbGlzdCBsaSk6Cisg
ICAgICAgICgjdG9kby1saXN0IGxpOmxhc3QtY2hpbGQpOgorICAgICAgICAoI3RvZG8tbGlzdCBs
aS5lZGl0aW5nKToKKyAgICAgICAgKCN0b2RvLWxpc3QgbGkuZWRpdGluZyAuZWRpdCk6CisgICAg
ICAgICgjdG9kby1saXN0IGxpLmVkaXRpbmcgLnZpZXcpOgorICAgICAgICAoI3RvZG8tbGlzdCBs
aSAudG9nZ2xlKToKKyAgICAgICAgKCN0b2RvLWxpc3QgbGkgLnRvZ2dsZTphZnRlcik6CisgICAg
ICAgICgjdG9kby1saXN0IGxpIC50b2dnbGU6Y2hlY2tlZDphZnRlcik6CisgICAgICAgICgjdG9k
by1saXN0IGxpIGxhYmVsKToKKyAgICAgICAgKCN0b2RvLWxpc3QgbGkuY29tcGxldGVkIGxhYmVs
KToKKyAgICAgICAgKCN0b2RvLWxpc3QgbGkgLmRlc3Ryb3kpOgorICAgICAgICAoI3RvZG8tbGlz
dCBsaSAuZGVzdHJveTpob3Zlcik6CisgICAgICAgICgjdG9kby1saXN0IGxpIC5kZXN0cm95OmFm
dGVyKToKKyAgICAgICAgKCN0b2RvLWxpc3QgbGk6aG92ZXIgLmRlc3Ryb3kpOgorICAgICAgICAo
I3RvZG8tbGlzdCBsaSAuZWRpdCk6CisgICAgICAgICgjdG9kby1saXN0IGxpLmVkaXRpbmc6bGFz
dC1jaGlsZCk6CisgICAgICAgICgjZm9vdGVyKToKKyAgICAgICAgKCNmb290ZXI6YmVmb3JlKToK
KyAgICAgICAgKCN0b2RvLWNvdW50KToKKyAgICAgICAgKCN0b2RvLWNvdW50IHN0cm9uZyk6Cisg
ICAgICAgICgjZmlsdGVycyk6CisgICAgICAgICgjZmlsdGVycyBsaSk6CisgICAgICAgICgjZmls
dGVycyBsaSBhKToKKyAgICAgICAgKCNmaWx0ZXJzIGxpIGEuc2VsZWN0ZWQsKToKKyAgICAgICAg
KCNmaWx0ZXJzIGxpIGEuc2VsZWN0ZWQpOgorICAgICAgICAoI2NsZWFyLWNvbXBsZXRlZCwpOgor
ICAgICAgICAoI2NsZWFyLWNvbXBsZXRlZDpob3Zlcik6CisgICAgICAgICgjaW5mbyk6CisgICAg
ICAgICgjaW5mbyBwKToKKyAgICAgICAgKCNpbmZvIGEpOgorICAgICAgICAoI2luZm8gYTpob3Zl
cik6CisgICAgICAgIChAbWVkaWEgc2NyZWVuIGFuZCAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVs
LXJhdGlvOjApKToKKyAgICAgICAgKCN0b2dnbGUtYWxsLCk6CisgICAgICAgIChAbWVkaWEgKG1h
eC13aWR0aDogNDMwcHgpKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvaW5mZXJuby9kaXN0L2J1bmRsZS5qczogQWRkZWQuCisg
ICAgICAgICh0KToKKyAgICAgICAgKG8pOgorICAgICAgICAocik6CisgICAgICAgIChpKToKKyAg
ICAgICAgKGwpOgorICAgICAgICAodC5vLnVwZGF0ZSk6CisgICAgICAgICh0LndpbmRvdy5vbmhh
c2hjaGFuZ2UpOgorICAgICAgICAodC5vLmNvbXBvbmVudFdpbGxNb3VudCk6CisgICAgICAgICh0
Lm8uYWRkKToKKyAgICAgICAgKHQuby5lZGl0KToKKyAgICAgICAgKHQuby5mb2N1cyk6CisgICAg
ICAgICh0Lm8uYmx1cik6CisgICAgICAgICh0Lm8ucmVtb3ZlKToKKyAgICAgICAgKHQuby50b2dn
bGVPbmUpOgorICAgICAgICAodC5vLnRvZ2dsZUFsbCk6CisgICAgICAgICh0Lm8uY2xlYXJDb21w
bGV0ZWQpOgorICAgICAgICAodC5wcm90b3R5cGUucmVuZGVyKToKKyAgICAgICAgKF8pOgorICAg
ICAgICAobik6CisgICAgICAgICh0LmZpbHRlcnMuYWxsKToKKyAgICAgICAgKHQuZmlsdGVycy5h
Y3RpdmUpOgorICAgICAgICAodC5maWx0ZXJzLmNvbXBsZXRlZCk6CisgICAgICAgICh1KToKKyAg
ICAgICAgKGEpOgorICAgICAgICAoYyk6CisgICAgICAgIChkKToKKyAgICAgICAgKGYpOgorICAg
ICAgICAocyk6CisgICAgICAgIChwKToKKyAgICAgICAgKHYpOgorICAgICAgICAoaCk6CisgICAg
ICAgIChnKToKKyAgICAgICAgKHkpOgorICAgICAgICAoYik6CisgICAgICAgIChrKToKKyAgICAg
ICAgKHcpOgorICAgICAgICAoQyk6CisgICAgICAgIChTKToKKyAgICAgICAgKE8pOgorICAgICAg
ICAoeCk6CisgICAgICAgIChUKToKKyAgICAgICAgKGdldCBlLnN0b3BQcm9wYWdhdGlvbik6Cisg
ICAgICAgIChJKToKKyAgICAgICAgKEEpOgorICAgICAgICAoRCk6CisgICAgICAgIChqKToKKyAg
ICAgICAgKFIpOgorICAgICAgICAoTCk6CisgICAgICAgIChCKToKKyAgICAgICAgKEYpOgorICAg
ICAgICAoSik6CisgICAgICAgIChHKToKKyAgICAgICAgKEspOgorICAgICAgICAocSk6CisgICAg
ICAgIChIKToKKyAgICAgICAgKFkpOgorICAgICAgICAoWCk6CisgICAgICAgIChRKToKKyAgICAg
ICAgKFopOgorICAgICAgICAoZWUpOgorICAgICAgICAodGUpOgorICAgICAgICAobmUpOgorICAg
ICAgICAob2UpOgorICAgICAgICAocmUpOgorICAgICAgICAoaWUpOgorICAgICAgICAobGUpOgor
ICAgICAgICAoYWUpOgorICAgICAgICAoZGUpOgorICAgICAgICAocGUpOgorICAgICAgICAodmUp
OgorICAgICAgICAoaGUpOgorICAgICAgICAobWUpOgorICAgICAgICAoZ2UpOgorICAgICAgICAo
X2UpOgorICAgICAgICAoTmUpOgorICAgICAgICAoYmUpOgorICAgICAgICAoa2UpOgorICAgICAg
ICAod2UpOgorICAgICAgICAoQ2UpOgorICAgICAgICAoU2UpOgorICAgICAgICAoT2UpOgorICAg
ICAgICAoeGUpOgorICAgICAgICAoVWUpOgorICAgICAgICAoRWUpOgorICAgICAgICAoVmUpOgor
ICAgICAgICAoUGUpOgorICAgICAgICAoQWUpOgorICAgICAgICAoRGUpOgorICAgICAgICAoamUp
OgorICAgICAgICAoUmUpOgorICAgICAgICAoV2UpOgorICAgICAgICAoTGUpOgorICAgICAgICAo
QmUpOgorICAgICAgICAoRmUpOgorICAgICAgICAoSmUpOgorICAgICAgICAoR2UpOgorICAgICAg
ICAoS2UpOgorICAgICAgICAocWUpOgorICAgICAgICAoSGUpOgorICAgICAgICAoWWUpOgorICAg
ICAgICAoZSk6CisgICAgICAgICh6ZSk6CisgICAgICAgIChYZSk6CisgICAgICAgIChRZSk6Cisg
ICAgICAgIChaZSk6CisgICAgICAgIChldCk6CisgICAgICAgICh0dCk6CisgICAgICAgIChudCk6
CisgICAgICAgIChydCk6CisgICAgICAgIChpdCk6CisgICAgICAgIChsdCk6CisgICAgICAgIChh
dCk6CisgICAgICAgIChjdCk6CisgICAgICAgIChkdCk6CisgICAgICAgIChfdCk6CisgICAgICAg
IChfdC5wcm90b3R5cGUuYWRkTGlzdGVuZXIpOgorICAgICAgICAoX3QucHJvdG90eXBlLnRyaWdn
ZXIpOgorICAgICAgICAoaS5lKToKKyAgICAgICAgKG0pOgorICAgICAgICAodGhpcy5jb21wb25l
bnRXaWxsUmVjZWl2ZVByb3BzKToKKyAgICAgICAgKHRoaXMuc2hvdWxkQ29tcG9uZW50VXBkYXRl
KToKKyAgICAgICAgKHRoaXMuY29tcG9uZW50V2lsbFVwZGF0ZSk6CisgICAgICAgICh0aGlzLmNv
bXBvbmVudERpZFVwZGF0ZSk6CisgICAgICAgICh0aGlzLnNldFRleHQpOgorICAgICAgICAoYS5l
LnRoaXMpOgorICAgICAgICAoYS5lLnRoaXMuYWRkKToKKyAgICAgICAgKGEuZS50aGlzLnB1dCk6
CisgICAgICAgIChhLmUudGhpcy5kZWwpOgorICAgICAgICAoYS5lLnRoaXMudG9nZ2xlKToKKyAg
ICAgICAgKGEuZS50aGlzLnRvZ2dsZUFsbCk6CisgICAgICAgIChhLmUudGhpcy5jbGVhckNvbXBs
ZXRlZCk6CisgICAgICAgIChoLnByb3RvdHlwZS5hZGRMaXN0ZW5lcik6CisgICAgICAgIChoLnBy
b3RvdHlwZS50cmlnZ2VyKToKKyAgICAgICAgKHJldHVybi55LnByb3RvdHlwZS5yZW5kZXIpOgor
ICAgICAgICAoeS5wcm90b3R5cGUuZm9yY2VVcGRhdGUpOgorICAgICAgICAoeS5wcm90b3R5cGUu
c2V0U3RhdGUpOgorICAgICAgICAoeS5wcm90b3R5cGUuY29tcG9uZW50V2lsbE1vdW50KToKKyAg
ICAgICAgKHkucHJvdG90eXBlLmNvbXBvbmVudERpZE1vdW50KToKKyAgICAgICAgKHkucHJvdG90
eXBlLmNvbXBvbmVudFdpbGxVbm1vdW50KToKKyAgICAgICAgKHkucHJvdG90eXBlLmNvbXBvbmVu
dERpZFVwZGF0ZSk6CisgICAgICAgICh5LnByb3RvdHlwZS5zaG91bGRDb21wb25lbnRVcGRhdGUp
OgorICAgICAgICAoeS5wcm90b3R5cGUuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyk6CisgICAg
ICAgICh5LnByb3RvdHlwZS5jb21wb25lbnRXaWxsVXBkYXRlKToKKyAgICAgICAgKHkucHJvdG90
eXBlLmdldENoaWxkQ29udGV4dCk6CisgICAgICAgICh5LnByb3RvdHlwZS5fdXBkYXRlQ29tcG9u
ZW50KToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvaW5mZXJuby9pbmRleC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvaW5mZXJuby9wYWNr
YWdlLmpzb246IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9pbmZlcm5vL3NyYy9iYXNlLmpzOiBBZGRlZC4KKyAgICAg
ICAgKGV4cG9ydC5IZWFkKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvaW5mZXJuby9zcmMvaW5kZXguanM6IEFkZGVkLgorICAg
ICAgICAoQXBwLnByb3RvdHlwZS5jb21wb25lbnRXaWxsTW91bnQpOgorICAgICAgICAoQXBwLnBy
b3RvdHlwZS5lZGl0KToKKyAgICAgICAgKEFwcC5wcm90b3R5cGUucmVuZGVyKToKKyAgICAgICAg
KEFwcCk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2luZmVybm8vc3JjL2l0ZW0uanM6IEFkZGVkLgorICAgICAgICAoZXhwb3J0
LmRlZmF1bHQuSXRlbS5wcm90b3R5cGUucmVuZGVyKToKKyAgICAgICAgKGV4cG9ydC5kZWZhdWx0
Lkl0ZW0pOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9pbmZlcm5vL3NyYy9tb2RlbC5qczogQWRkZWQuCisgICAgICAgIChleHBv
cnQuZGVmYXVsdC5Nb2RlbC5wcm90b3R5cGUuc2V0IGdldCBhcnIpOgorICAgICAgICAoZXhwb3J0
LmRlZmF1bHQuTW9kZWwpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9pbmZlcm5vL3NyYy9zaGFyZS5qczogQWRkZWQuCisgICAg
ICAgIChleHBvcnQucmVhZCk6CisgICAgICAgIChleHBvcnQuYXNzaWduKToKKyAgICAgICAgKGV4
cG9ydC5pc0VxdWFsKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvaW5mZXJuby90ZXN0Ly5naXRpZ25vcmU6IEFkZGVkLgorICAg
ICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9pbmZlcm5vL3Rlc3QvUkVBRE1FLm1kOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvaW5mZXJuby90ZXN0L2luZGV4
LmpzOiBBZGRlZC4KKyAgICAgICAgKHRvZG9NVkNUZXN0KToKKyAgICAgICAgKiBTcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvaW5mZXJuby90ZXN0L2tu
b3duSXNzdWVzLmpzOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvaW5mZXJuby90ZXN0L2xlYXJuLmpzb246IEFkZGVk
LgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9pbmZlcm5vL3Rlc3QvbWVtb3J5LWV4Y2VwdGlvbnMuanNvbjogQWRkZWQuCisgICAg
ICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2luZmVybm8vdGVzdC9tZW1vcnkuanM6IEFkZGVkLgorICAgICAgICAoaWRBcHApOgorICAgICAg
ICAobmV3VG9kb1NlbGVjdG9yKToKKyAgICAgICAgKGxpc3RTZWxlY3Rvcik6CisgICAgICAgIChk
cm9vbC5mbG93LnNldHVwKToKKyAgICAgICAgKGRyb29sLmZsb3cuYWN0aW9uKToKKyAgICAgICAg
KGRyb29sLmZsb3cuYXNzZXJ0KToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvaW5mZXJuby90ZXN0L3BhY2thZ2UuanNvbjogQWRk
ZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2luZmVybm8vdGVzdC9wYWdlLmpzOiBBZGRlZC4KKyAgICAgICAgKG1vZHVsZS5l
eHBvcnRzLlBhZ2UudGhpcy5nZXRNYWluU2VjdGlvbkNzcyk6CisgICAgICAgIChtb2R1bGUuZXhw
b3J0cy5QYWdlLnRoaXMuZ2V0Rm9vdGVyU2VjdGlvbkNzcyk6CisgICAgICAgIChtb2R1bGUuZXhw
b3J0cy5QYWdlLnRoaXMuZ2V0Q2xlYXJDb21wbGV0ZWRCdXR0b25Dc3MpOgorICAgICAgICAobW9k
dWxlLmV4cG9ydHMuUGFnZS50aGlzLmdldE5ld0lucHV0Q3NzKToKKyAgICAgICAgKG1vZHVsZS5l
eHBvcnRzLlBhZ2UudGhpcy5nZXRUb2dnbGVBbGxDc3MpOgorICAgICAgICAobW9kdWxlLmV4cG9y
dHMuUGFnZS50aGlzLmdldEl0ZW1Db3VudENzcyk6CisgICAgICAgIChtb2R1bGUuZXhwb3J0cy5Q
YWdlLnRoaXMuZ2V0RmlsdGVyQ3NzKToKKyAgICAgICAgKG1vZHVsZS5leHBvcnRzLlBhZ2UudGhp
cy5nZXRTZWxlY3RlZEZpbHRlckNzcyk6CisgICAgICAgIChtb2R1bGUuZXhwb3J0cy5QYWdlLnRo
aXMuZ2V0RmlsdGVyQWxsQ3NzKToKKyAgICAgICAgKG1vZHVsZS5leHBvcnRzLlBhZ2UudGhpcy5n
ZXRGaWx0ZXJBY3RpdmVDc3MpOgorICAgICAgICAobW9kdWxlLmV4cG9ydHMuUGFnZS50aGlzLmdl
dEZpbHRlckNvbXBsZXRlZENzcyk6CisgICAgICAgIChtb2R1bGUuZXhwb3J0cy5QYWdlLnRoaXMu
Z2V0TGlzdENzcyk6CisgICAgICAgIChtb2R1bGUuZXhwb3J0cy5QYWdlLnRoaXMuZ2V0TGlzdEl0
ZW1Dc3MpOgorICAgICAgICAobW9kdWxlLmV4cG9ydHMuUGFnZS50aGlzLmdldExpc3RJdGVtVG9n
Z2xlQ3NzKToKKyAgICAgICAgKG1vZHVsZS5leHBvcnRzLlBhZ2UudGhpcy5nZXRMaXN0SXRlbUxh
YmVsQ3NzKToKKyAgICAgICAgKG1vZHVsZS5leHBvcnRzLlBhZ2UudGhpcy5nZXRMYXN0TGlzdEl0
ZW1MYWJlbENzcyk6CisgICAgICAgIChtb2R1bGUuZXhwb3J0cy5QYWdlLnRoaXMuZ2V0TGlzdEl0
ZW1JbnB1dENzcyk6CisgICAgICAgIChtb2R1bGUuZXhwb3J0cy5QYWdlLnRoaXMuZ2V0RWRpdGlu
Z0xpc3RJdGVtSW5wdXRDc3MpOgorICAgICAgICAobW9kdWxlLmV4cG9ydHMuUGFnZS50aGlzLmdl
dExpc3RJdGVtc1dpdGhDb21wbGV0ZWRTdGF0ZXNDc3MpOgorICAgICAgICAobW9kdWxlLmV4cG9y
dHMuUGFnZS50aGlzLmJhY2spOgorICAgICAgICAobW9kdWxlLmV4cG9ydHMuUGFnZS50aGlzLmdl
dEVsZW1lbnRzKToKKyAgICAgICAgKG1vZHVsZS5leHBvcnRzLlBhZ2UudGhpcy53YWl0Rm9yRWxl
bWVudCk6CisgICAgICAgIChtb2R1bGUuZXhwb3J0cy5QYWdlLnRoaXMud2FpdEZvckZvY3VzZWRF
bGVtZW50KToKKyAgICAgICAgKG1vZHVsZS5leHBvcnRzLlBhZ2UudGhpcy53YWl0Rm9yQmx1cnJl
ZEVsZW1lbnQpOgorICAgICAgICAobW9kdWxlLmV4cG9ydHMuUGFnZS50aGlzLndhaXRGb3JMaXN0
SXRlbUNvdW50KToKKyAgICAgICAgKG1vZHVsZS5leHBvcnRzLlBhZ2UudGhpcy53YWl0Rm9yQ2xl
YXJDb21wbGV0ZUJ1dHRvbik6CisgICAgICAgIChtb2R1bGUuZXhwb3J0cy5QYWdlLnRoaXMud2Fp
dEZvclRvZ2dsZUZvckl0ZW0pOgorICAgICAgICAobW9kdWxlLmV4cG9ydHMuUGFnZS50aGlzLndh
aXRGb3JJdGVtTGFiZWwpOgorICAgICAgICAobW9kdWxlLmV4cG9ydHMuUGFnZS50aGlzLndhaXRG
b3JOZXdJdGVtSW5wdXRGaWVsZCk6CisgICAgICAgIChtb2R1bGUuZXhwb3J0cy5QYWdlLnRoaXMu
d2FpdEZvck1hcmtBbGxDb21wbGV0ZWRDaGVja0JveCk6CisgICAgICAgIChtb2R1bGUuZXhwb3J0
cy5QYWdlLnRoaXMuZ2V0TGlzdEl0ZW1zKToKKyAgICAgICAgKG1vZHVsZS5leHBvcnRzLlBhZ2Uu
dGhpcy53YWl0Rm9yVmlzaWJpbGl0eSk6CisgICAgICAgIChtb2R1bGUuZXhwb3J0cy5QYWdlLnRo
aXMud2FpdEZvck1haW5TZWN0aW9uUmVtb3ZlZE9yRW1wdHkpOgorICAgICAgICAobW9kdWxlLmV4
cG9ydHMuUGFnZS50aGlzLndhaXRGb3JDaGVja2VkU3RhdHVzKToKKyAgICAgICAgKG1vZHVsZS5l
eHBvcnRzLlBhZ2UudGhpcy53YWl0Rm9yVGV4dENvbnRlbnQpOgorICAgICAgICAobW9kdWxlLmV4
cG9ydHMuUGFnZS50aGlzLmVuc3VyZUFwcElzVmlzaWJsZUFuZExvYWRlZCk6CisgICAgICAgICht
b2R1bGUuZXhwb3J0cy5QYWdlLnRoaXMuY2xpY2tNYXJrQWxsQ29tcGxldGVkQ2hlY2tCb3gpOgor
ICAgICAgICAobW9kdWxlLmV4cG9ydHMuUGFnZS50aGlzLmNsaWNrQ2xlYXJDb21wbGV0ZUJ1dHRv
bik6CisgICAgICAgIChtb2R1bGUuZXhwb3J0cy5QYWdlLnRoaXMuZW50ZXJJdGVtKToKKyAgICAg
ICAgKG1vZHVsZS5leHBvcnRzLlBhZ2UudGhpcy50b2dnbGVJdGVtQXRJbmRleCk6CisgICAgICAg
IChtb2R1bGUuZXhwb3J0cy5QYWdlLnRoaXMuZWRpdEl0ZW1BdEluZGV4KToKKyAgICAgICAgKG1v
ZHVsZS5leHBvcnRzLlBhZ2UudGhpcy5kb3VibGVDbGlja0l0ZW1BdEluZGV4KToKKyAgICAgICAg
KG1vZHVsZS5leHBvcnRzLlBhZ2UudGhpcy5maWx0ZXJCeSk6CisgICAgICAgIChtb2R1bGUuZXhw
b3J0cy5QYWdlLnRoaXMuZmlsdGVyQnlBY3RpdmVJdGVtcyk6CisgICAgICAgIChtb2R1bGUuZXhw
b3J0cy5QYWdlLnRoaXMuZmlsdGVyQnlDb21wbGV0ZWRJdGVtcyk6CisgICAgICAgIChtb2R1bGUu
ZXhwb3J0cy5QYWdlLnRoaXMuZmlsdGVyQnlBbGxJdGVtcyk6CisgICAgICAgIChtb2R1bGUuZXhw
b3J0cyk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2luZmVybm8vdGVzdC9wYWdlTGF4TW9kZS5qczogQWRkZWQuCisgICAgICAg
IChtb2R1bGUuZXhwb3J0cy5QYWdlTGF4TW9kZS50aGlzLmdldE1haW5TZWN0aW9uQ3NzKToKKyAg
ICAgICAgKG1vZHVsZS5leHBvcnRzLlBhZ2VMYXhNb2RlLnRoaXMuZ2V0Rm9vdGVyU2VjdGlvbkNz
cyk6CisgICAgICAgIChtb2R1bGUuZXhwb3J0cy5QYWdlTGF4TW9kZS50aGlzLmdldExpc3RDc3Mp
OgorICAgICAgICAobW9kdWxlLmV4cG9ydHMuUGFnZUxheE1vZGUudGhpcy5nZXRUb2dnbGVBbGxD
c3MpOgorICAgICAgICAobW9kdWxlLmV4cG9ydHMuUGFnZUxheE1vZGUudGhpcy5nZXRDbGVhckNv
bXBsZXRlZEJ1dHRvbkNzcyk6CisgICAgICAgIChtb2R1bGUuZXhwb3J0cy5QYWdlTGF4TW9kZS50
aGlzLmdldEl0ZW1Db3VudENzcyk6CisgICAgICAgIChtb2R1bGUuZXhwb3J0cy5QYWdlTGF4TW9k
ZS50aGlzLmdldEZpbHRlckNzcyk6CisgICAgICAgIChtb2R1bGUuZXhwb3J0cy5QYWdlTGF4TW9k
ZS50aGlzLmdldE5ld0lucHV0Q3NzKToKKyAgICAgICAgKG1vZHVsZS5leHBvcnRzLlBhZ2VMYXhN
b2RlLnRoaXMuZ2V0TGlzdEl0ZW1Ub2dnbGVDc3MpOgorICAgICAgICAobW9kdWxlLmV4cG9ydHMu
UGFnZUxheE1vZGUudGhpcy5nZXRMaXN0SXRlbUlucHV0Q3NzKToKKyAgICAgICAgKG1vZHVsZS5l
eHBvcnRzKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvaW5mZXJuby90ZXN0L3J1bi5zaDogQWRkZWQuCisgICAgICAgICogU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2luZmVybm8v
dGVzdC9zZXJ2ZXIuanM6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9pbmZlcm5vL3Rlc3QvdGVzdE9wZXJhdGlvbnMu
anM6IEFkZGVkLgorICAgICAgICAoVGVzdE9wZXJhdGlvbnMudGhpcy5hc3NlcnRJdGVtSW5wdXRG
b2N1c2VkKToKKyAgICAgICAgKFRlc3RPcGVyYXRpb25zLnRoaXMuYXNzZXJ0TmV3SW5wdXRGb2N1
c2VkKToKKyAgICAgICAgKFRlc3RPcGVyYXRpb25zLnRoaXMuYXNzZXJ0TmV3SW5wdXRCbHVycmVk
KToKKyAgICAgICAgKFRlc3RPcGVyYXRpb25zLnRoaXMuYXNzZXJ0SXRlbUNvdW50KToKKyAgICAg
ICAgKFRlc3RPcGVyYXRpb25zLnRoaXMuYXNzZXJ0Q2xlYXJDb21wbGV0ZUJ1dHRvblRleHQpOgor
ICAgICAgICAoVGVzdE9wZXJhdGlvbnMudGhpcy5hc3NlcnRDbGVhckNvbXBsZXRlQnV0dG9uVmlz
aWJpbGl0eSk6CisgICAgICAgIChUZXN0T3BlcmF0aW9ucy50aGlzLmFzc2VydE1haW5TZWN0aW9u
VmlzaWJpbGl0eSk6CisgICAgICAgIChUZXN0T3BlcmF0aW9ucy50aGlzLmFzc2VydEZvb3RlclZp
c2liaWxpdHkpOgorICAgICAgICAoVGVzdE9wZXJhdGlvbnMudGhpcy5hc3NlcnRJdGVtVG9nZ2xl
SXNIaWRkZW4pOgorICAgICAgICAoVGVzdE9wZXJhdGlvbnMudGhpcy5hc3NlcnRJdGVtTGFiZWxJ
c0hpZGRlbik6CisgICAgICAgIChUZXN0T3BlcmF0aW9ucy50aGlzLmFzc2VydE5ld0l0ZW1JbnB1
dEZpZWxkVGV4dCk6CisgICAgICAgIChUZXN0T3BlcmF0aW9ucy50aGlzLmFzc2VydEl0ZW1UZXh0
KToKKyAgICAgICAgKFRlc3RPcGVyYXRpb25zLik6CisgICAgICAgIChUZXN0T3BlcmF0aW9ucy50
aGlzLmFzc2VydEl0ZW1zKToKKyAgICAgICAgKFRlc3RPcGVyYXRpb25zLnRoaXMuYXNzZXJ0SXRl
bUNvdW50VGV4dCk6CisgICAgICAgIChUZXN0T3BlcmF0aW9ucy50aGlzLmFzc2VydEl0ZW1Db21w
bGV0ZWRTdGF0ZXMpOgorICAgICAgICAoVGVzdE9wZXJhdGlvbnMudGhpcy5hc3NlcnRGaWx0ZXJB
dEluZGV4SXNTZWxlY3RlZCk6CisgICAgICAgIChUZXN0T3BlcmF0aW9ucy50aGlzLmFzc2VydENv
bXBsZXRlQWxsQ2hlY2tlZFN0YXR1cyk6CisgICAgICAgIChUZXN0T3BlcmF0aW9ucyk6CisgICAg
ICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2luZmVybm8vdGVzdC95YXJuLmxvY2s6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9pbmZlcm5vL3dlYnBhY2suY29u
ZmlnLmpzOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvaW5mZXJuby95YXJuLmxvY2s6IEFkZGVkLgorICAgICAgICAq
IFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVl
cnkvYm93ZXIuanNvbjogUmVtb3ZlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L2Jvd2VyX2NvbXBvbmVudHMvaGFu
ZGxlYmFycy9oYW5kbGViYXJzLmpzOiBSZW1vdmVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvYm93ZXJfY29tcG9u
ZW50cy9qcXVlcnkvanF1ZXJ5LmpzOiBSZW1vdmVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvYm93ZXJfY29tcG9u
ZW50cy90b2RvbXZjLWNvbW1vbi9iYXNlLmNzczogUmVtb3ZlZC4KKyAgICAgICAgKiBTcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L2Jvd2Vy
X2NvbXBvbmVudHMvdG9kb212Yy1jb21tb24vYmFzZS5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBT
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5
L2Jvd2VyX2NvbXBvbmVudHMvdG9kb212Yy1jb21tb24vYmcucG5nOiBSZW1vdmVkLgorICAgICAg
ICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9q
cXVlcnkvaW5kZXguaHRtbDoKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L2pzL2FwcC5qczoKKyAgICAgICAgKGpRdWVy
eS51dGlsLnV1aWQpOgorICAgICAgICAoalF1ZXJ5LnV0aWwucGx1cmFsaXplKToKKyAgICAgICAg
KGpRdWVyeS51dGlsLnN0b3JlKToKKyAgICAgICAgKGpRdWVyeS5BcHAubmV3LlJvdXRlcik6Cisg
ICAgICAgIChqUXVlcnkuQXBwLmluaXQpOgorICAgICAgICAoalF1ZXJ5LkFwcC5iaW5kRXZlbnRz
KToKKyAgICAgICAgKGpRdWVyeS5BcHAucmVuZGVyKToKKyAgICAgICAgKGpRdWVyeS5BcHAucmVu
ZGVyRm9vdGVyKToKKyAgICAgICAgKGpRdWVyeS5BcHAudG9nZ2xlQWxsKToKKyAgICAgICAgKGpR
dWVyeS5BcHAuZ2V0QWN0aXZlVG9kb3MpOgorICAgICAgICAoalF1ZXJ5LkFwcC5nZXRDb21wbGV0
ZWRUb2Rvcyk6CisgICAgICAgIChqUXVlcnkuQXBwLmdldEZpbHRlcmVkVG9kb3MpOgorICAgICAg
ICAoalF1ZXJ5LkFwcC5kZXN0cm95Q29tcGxldGVkKToKKyAgICAgICAgKGpRdWVyeS5BcHAuaW5k
ZXhGcm9tRWwpOgorICAgICAgICAoalF1ZXJ5LkFwcC5jcmVhdGUpOgorICAgICAgICAoalF1ZXJ5
LkFwcC50b2dnbGUpOgorICAgICAgICAoalF1ZXJ5LkFwcC5lZGl0KToKKyAgICAgICAgKGpRdWVy
eS5BcHAuZWRpdEtleXVwKToKKyAgICAgICAgKGpRdWVyeS5BcHAudXBkYXRlKToKKyAgICAgICAg
KGpRdWVyeS5BcHAuZGVzdHJveSk6CisgICAgICAgIChqUXVlcnkpOgorICAgICAgICAoalF1ZXJ5
LlV0aWxzLnV1aWQpOiBEZWxldGVkLgorICAgICAgICAoalF1ZXJ5LlV0aWxzLnBsdXJhbGl6ZSk6
IERlbGV0ZWQuCisgICAgICAgIChqUXVlcnkuVXRpbHMuc3RvcmUpOiBEZWxldGVkLgorICAgICAg
ICAoalF1ZXJ5LkFwcC5jYWNoZUVsZW1lbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKGpRdWVyeS5B
cHAuYWN0aXZlVG9kb0NvdW50KTogRGVsZXRlZC4KKyAgICAgICAgKGpRdWVyeS5BcHAuZ2V0VG9k
byk6IERlbGV0ZWQuCisgICAgICAgIChqUXVlcnkuQXBwLmJsdXJPbkVudGVyKTogRGVsZXRlZC4K
KyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci8ubnBtaWdub3JlOiBBZGRlZC4KKyAg
ICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci8udHJhdmlzLnltbDogQWRkZWQuCisgICAg
ICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvTElDRU5TRTogQ29waWVkIGZyb20gUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9sYWJzL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9yZWFjdC9ib3dlcl9jb21wb25lbnRzL2RpcmVjdG9yL0xJQ0VOU0UuCisgICAg
ICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvUkVBRE1FLm1kOiBDb3BpZWQgZnJvbSBQZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2xhYnMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL3JlYWN0L2Jvd2VyX2NvbXBvbmVudHMvZGlyZWN0b3IvUkVBRE1FLm1kLgor
ICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL2Jpbi9idWlsZDogQWRkZWQuCisgICAg
ICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvYm93ZXIuanNvbjogQWRkZWQuCisgICAgICAg
ICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2px
dWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvZXhhbXBsZXMvaHR0cC5qczogQWRkZWQuCisgICAg
ICAgIChzZXJ2ZXIuaHR0cC5jcmVhdGVTZXJ2ZXIpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVz
L2RpcmVjdG9yL2xpYi9kaXJlY3Rvci5qczogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVs
ZXMvZGlyZWN0b3IvbGliL2RpcmVjdG9yL2Jyb3dzZXIuanM6IEFkZGVkLgorICAgICAgICAoZGxv
Y0hhc2hFbXB0eSk6CisgICAgICAgIChsaXN0ZW5lci5jaGVjayk6CisgICAgICAgIChsaXN0ZW5l
ci5maXJlKToKKyAgICAgICAgKGxpc3RlbmVyLik6CisgICAgICAgIChsaXN0ZW5lci5pbml0KToK
KyAgICAgICAgKGxpc3RlbmVyLmRlc3Ryb3kpOgorICAgICAgICAobGlzdGVuZXIuc2V0SGFzaCk6
CisgICAgICAgIChsaXN0ZW5lci53cml0ZUZyYW1lKToKKyAgICAgICAgKGxpc3RlbmVyLnN5bmNI
YXNoKToKKyAgICAgICAgKGxpc3RlbmVyLm9uSGFzaENoYW5nZWQpOgorICAgICAgICAoUm91dGVy
LmV4cG9ydHMuUm91dGVyKToKKyAgICAgICAgKHRoaXMuaGFuZGxlcik6CisgICAgICAgIChSb3V0
ZXIucHJvdG90eXBlLmluaXQpOgorICAgICAgICAoUm91dGVyLnByb3RvdHlwZS5leHBsb2RlKToK
KyAgICAgICAgKFJvdXRlci5wcm90b3R5cGUuc2V0Um91dGUpOgorICAgICAgICAocm91dGUpOgor
ICAgICAgICAoUm91dGVyLnByb3RvdHlwZS5pbnNlcnRFeCk6CisgICAgICAgIChSb3V0ZXIucHJv
dG90eXBlLmdldFJvdXRlKToKKyAgICAgICAgKFJvdXRlci5wcm90b3R5cGUuZGVzdHJveSk6Cisg
ICAgICAgIChSb3V0ZXIucHJvdG90eXBlLmdldFBhdGgpOgorICAgICAgICAqIFNwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1
bGVzL2RpcmVjdG9yL2xpYi9kaXJlY3Rvci9jbGkuanM6IEFkZGVkLgorICAgICAgICAoUm91dGVy
LmV4cG9ydHMuUm91dGVyKToKKyAgICAgICAgKFJvdXRlci5wcm90b3R5cGUuY29uZmlndXJlKToK
KyAgICAgICAgKFJvdXRlci5wcm90b3R5cGUuZGlzcGF0Y2gpOgorICAgICAgICAqIFNwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9t
b2R1bGVzL2RpcmVjdG9yL2xpYi9kaXJlY3Rvci9odHRwL2luZGV4LmpzOiBBZGRlZC4KKyAgICAg
ICAgKE9iamVjdC5rZXlzLnJlc3BvbnNlcy5mb3JFYWNoKToKKyAgICAgICAgKFJvdXRlci5leHBv
cnRzLlJvdXRlcik6CisgICAgICAgIChSb3V0ZXIucHJvdG90eXBlLmNvbmZpZ3VyZSk6CisgICAg
ICAgIChSb3V0ZXIucHJvdG90eXBlLm9uKToKKyAgICAgICAgKFJvdXRlci5wcm90b3R5cGUuYXR0
YWNoKToKKyAgICAgICAgKFJvdXRlci5wcm90b3R5cGUuZGlzcGF0Y2gpOgorICAgICAgICAoUm91
dGVyLnByb3RvdHlwZS5wYXJzZSk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3Iv
bGliL2RpcmVjdG9yL2h0dHAvbWV0aG9kcy5qczogQWRkZWQuCisgICAgICAgIChSRkM1Nzg5Lm1h
cCk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvbGliL2RpcmVjdG9yL2h0dHAv
cmVzcG9uc2VzLmpzOiBBZGRlZC4KKyAgICAgICAgKGV4cG9ydHMuTm90TW9kaWZpZWQpOgorICAg
ICAgICAoZXhwb3J0cy5CYWRSZXF1ZXN0KToKKyAgICAgICAgKGV4cG9ydHMuTm90QXV0aG9yaXpl
ZCk6CisgICAgICAgIChleHBvcnRzLkZvcmJpZGRlbik6CisgICAgICAgIChleHBvcnRzLk5vdEZv
dW5kKToKKyAgICAgICAgKGV4cG9ydHMuTWV0aG9kTm90QWxsb3dlZCk6CisgICAgICAgIChleHBv
cnRzLk5vdEFjY2VwdGFibGUpOgorICAgICAgICAoZXhwb3J0cy5Ob3RJbXBsZW1lbnRlZCk6Cisg
ICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvbGliL2RpcmVjdG9yL3JvdXRlci5qczog
QWRkZWQuCisgICAgICAgIChfZXZlcnkpOgorICAgICAgICAoX2FzeW5jRXZlcnlTZXJpZXMpOgor
ICAgICAgICAocmVnaWZ5U3RyaW5nKToKKyAgICAgICAgKHRlcm1pbmF0b3IpOgorICAgICAgICAo
Um91dGVyLmV4cG9ydHMuUm91dGVyKToKKyAgICAgICAgKFJvdXRlci5wcm90b3R5cGUuY29uZmln
dXJlKToKKyAgICAgICAgKHRoaXMucGFyYW1zLnRva2VuKToKKyAgICAgICAgKFJvdXRlci5wcm90
b3R5cGUucGFyYW0pOgorICAgICAgICAoUm91dGVyLnByb3RvdHlwZS5vbi5Sb3V0ZXIucHJvdG90
eXBlLnJvdXRlKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9wYWNrYWdlLmpz
b246IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL3Rlc3QvYnJvd3Nl
ci9iYWNrZW5kL2JhY2tlbmQuanM6IEFkZGVkLgorICAgICAgICAoZmlsZVNlcnZlcik6CisgICAg
ICAgIChyb3V0ZXIubmV3LmRpcmVjdG9yLmh0dHAuUm91dGVyLnN0cmluZ19hcHBlYXJlZF9oZXJl
LnN0cmluZ19hcHBlYXJlZF9oZXJlLmdldCBmaWxlU2VydmVyKToKKyAgICAgICAgKiBTcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVf
bW9kdWxlcy9kaXJlY3Rvci90ZXN0L2Jyb3dzZXIvYnJvd3NlcmlmeS1oYXJuZXNzLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL3Rlc3QvYnJvd3Nlci9oZWxw
ZXJzL2FwaS5qczogQWRkZWQuCisgICAgICAgIChzZXR1cCk6CisgICAgICAgICh0ZWFyZG93bik6
CisgICAgICAgIChjcmVhdGVUZXN0KToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rv
ci90ZXN0L2Jyb3dzZXIvaHRtbDUtcm91dGVzLWhhcm5lc3MuaHRtbDogQWRkZWQuCisgICAgICAg
ICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2px
dWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvdGVzdC9icm93c2VyL2h0bWw1LXJvdXRlcy10ZXN0
LmpzOiBBZGRlZC4KKyAgICAgICAgKHN0cmluZ19hcHBlYXJlZF9oZXJlLnN0cmluZ19hcHBlYXJl
ZF9oZXJlLnN0cmluZ19hcHBlYXJlZF9oZXJlKToKKyAgICAgICAgKHN0cmluZ19hcHBlYXJlZF9o
ZXJlLnN0cmluZ19hcHBlYXJlZF9oZXJlLm9uKToKKyAgICAgICAgKHN0cmluZ19hcHBlYXJlZF9o
ZXJlLm9uKToKKyAgICAgICAgKHN0cmluZ19hcHBlYXJlZF9oZXJlLnN0cmluZ19hcHBlYXJlZF9o
ZXJlLm9uY2UpOgorICAgICAgICAoc3RyaW5nX2FwcGVhcmVkX2hlcmUub25jZSk6CisgICAgICAg
IChzdHJpbmdfYXBwZWFyZWRfaGVyZSk6CisgICAgICAgIChzdHJpbmdfYXBwZWFyZWRfaGVyZS5z
dHJpbmdfYXBwZWFyZWRfaGVyZS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5vbik6CisgICAgICAgIChz
aGFyZWQuZmlyZWQucHVzaCk6CisgICAgICAgIChzdHJpbmdfYXBwZWFyZWRfaGVyZS5zdHJpbmdf
YXBwZWFyZWRfaGVyZS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5hZnRlcik6CisgICAgICAgIChzaGFy
ZWQuZmlyZWQucHVzaC5hZnRlcik6CisgICAgICAgIChzaGFyZWQuZmlyZWQucHVzaC5ub3Rmb3Vu
ZCk6CisgICAgICAgIChzaGFyZWQuZmlyZWQucHVzaC5vbik6CisgICAgICAgIChyZXNvdXJjZS5m
MSk6CisgICAgICAgIChyZXNvdXJjZS5mMik6CisgICAgICAgIChyb290KToKKyAgICAgICAgKGFm
dW5jKToKKyAgICAgICAgKHNldFRpbWVvdXQpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2Rp
cmVjdG9yL3Rlc3QvYnJvd3Nlci9yb3V0ZXMtaGFybmVzcy5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1
ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci90ZXN0L2Jyb3dzZXIvcm91dGVzLXRlc3QuanM6IEFk
ZGVkLgorICAgICAgICAoc3RyaW5nX2FwcGVhcmVkX2hlcmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUu
c3RyaW5nX2FwcGVhcmVkX2hlcmUpOgorICAgICAgICAoc3RyaW5nX2FwcGVhcmVkX2hlcmUuc3Ry
aW5nX2FwcGVhcmVkX2hlcmUub24pOgorICAgICAgICAoc3RyaW5nX2FwcGVhcmVkX2hlcmUub24p
OgorICAgICAgICAoc3RyaW5nX2FwcGVhcmVkX2hlcmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUub25j
ZSk6CisgICAgICAgIChzdHJpbmdfYXBwZWFyZWRfaGVyZS5vbmNlKToKKyAgICAgICAgKHN0cmlu
Z19hcHBlYXJlZF9oZXJlKToKKyAgICAgICAgKHN0cmluZ19hcHBlYXJlZF9oZXJlLnN0cmluZ19h
cHBlYXJlZF9oZXJlLnN0cmluZ19hcHBlYXJlZF9oZXJlLm9uKToKKyAgICAgICAgKHNoYXJlZC5m
aXJlZC5wdXNoKToKKyAgICAgICAgKHN0cmluZ19hcHBlYXJlZF9oZXJlLnN0cmluZ19hcHBlYXJl
ZF9oZXJlLnN0cmluZ19hcHBlYXJlZF9oZXJlLmFmdGVyKToKKyAgICAgICAgKHNoYXJlZC5maXJl
ZC5wdXNoLmFmdGVyKToKKyAgICAgICAgKHNoYXJlZC5maXJlZC5wdXNoLm5vdGZvdW5kKToKKyAg
ICAgICAgKHNoYXJlZC5maXJlZC5wdXNoLm9uKToKKyAgICAgICAgKHJlc291cmNlLmYxKToKKyAg
ICAgICAgKHJlc291cmNlLmYyKToKKyAgICAgICAgKHJvb3QpOgorICAgICAgICAoYWZ1bmMpOgor
ICAgICAgICAoc2V0VGltZW91dCk6CisgICAgICAgIChyb3V0ZXIubmV3LndpbmRvdy5Sb3V0ZXIu
d2luZG93LlJvdXRlckFsaWFzLnN0cmluZ19hcHBlYXJlZF9oZXJlKToKKyAgICAgICAgKHJvdXRl
ci5uZXcud2luZG93LlJvdXRlci53aW5kb3cuUm91dGVyQWxpYXMpOgorICAgICAgICAocm91dGVz
LnN0cmluZ19hcHBlYXJlZF9oZXJlKToKKyAgICAgICAgKHJvdXRlcy5pbml0aWFsUGF0aCk6Cisg
ICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvdGVzdC9zZXJ2ZXIvY2xpL2Rpc3BhdGNo
LXRlc3QuanM6IEFkZGVkLgorICAgICAgICAodm93cy5kZXNjcmliZS5zdHJpbmdfYXBwZWFyZWRf
aGVyZS5hZGRCYXRjaC5zdHJpbmdfYXBwZWFyZWRfaGVyZS50b3BpYyk6CisgICAgICAgICh2b3dz
LmRlc2NyaWJlLnN0cmluZ19hcHBlYXJlZF9oZXJlLmFkZEJhdGNoLnN0cmluZ19hcHBlYXJlZF9o
ZXJlLnN0cmluZ19hcHBlYXJlZF9oZXJlKToKKyAgICAgICAgKHZvd3MuZGVzY3JpYmUuc3RyaW5n
X2FwcGVhcmVkX2hlcmUuYWRkQmF0Y2guc3RyaW5nX2FwcGVhcmVkX2hlcmUuc3RyaW5nX2FwcGVh
cmVkX2hlcmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVz
L2RpcmVjdG9yL3Rlc3Qvc2VydmVyL2NsaS9tb3VudC10ZXN0LmpzOiBBZGRlZC4KKyAgICAgICAg
KHZvd3MuZGVzY3JpYmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUuYWRkQmF0Y2guc3RyaW5nX2FwcGVh
cmVkX2hlcmUudG9waWMubmV3LmRpcmVjdG9yLmNsaS5Sb3V0ZXIuc3RyaW5nX2FwcGVhcmVkX2hl
cmUpOgorICAgICAgICAodm93cy5kZXNjcmliZS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5hZGRCYXRj
aC5zdHJpbmdfYXBwZWFyZWRfaGVyZS5zdHJpbmdfYXBwZWFyZWRfaGVyZSk6CisgICAgICAgICog
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVy
eS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvdGVzdC9zZXJ2ZXIvY2xpL3BhdGgtdGVzdC5qczogQWRk
ZWQuCisgICAgICAgICh2b3dzLmRlc2NyaWJlLnN0cmluZ19hcHBlYXJlZF9oZXJlLmFkZEJhdGNo
LnN0cmluZ19hcHBlYXJlZF9oZXJlLnN0cmluZ19hcHBlYXJlZF9oZXJlLik6CisgICAgICAgICh2
b3dzLmRlc2NyaWJlLnN0cmluZ19hcHBlYXJlZF9oZXJlLmFkZEJhdGNoLnN0cmluZ19hcHBlYXJl
ZF9oZXJlLnN0cmluZ19hcHBlYXJlZF9oZXJlLnN0cmluZ19hcHBlYXJlZF9oZXJlKToKKyAgICAg
ICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
anF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci90ZXN0L3NlcnZlci9jb3JlL2Rpc3BhdGNoLXRl
c3QuanM6IEFkZGVkLgorICAgICAgICAodm93cy5kZXNjcmliZS5zdHJpbmdfYXBwZWFyZWRfaGVy
ZS5hZGRCYXRjaC5zdHJpbmdfYXBwZWFyZWRfaGVyZS50aGF0Lm1hdGNoZWQuc3RyaW5nX2FwcGVh
cmVkX2hlcmUucm91dGVyLm5ldy5kaXJlY3Rvci5Sb3V0ZXIuKToKKyAgICAgICAgKHZvd3MuZGVz
Y3JpYmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUuYWRkQmF0Y2guc3RyaW5nX2FwcGVhcmVkX2hlcmUu
dG9waWMpOgorICAgICAgICAodm93cy5kZXNjcmliZS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5hZGRC
YXRjaC5zdHJpbmdfYXBwZWFyZWRfaGVyZS5zdHJpbmdfYXBwZWFyZWRfaGVyZSk6CisgICAgICAg
ICh2b3dzLmRlc2NyaWJlLnN0cmluZ19hcHBlYXJlZF9oZXJlLmFkZEJhdGNoLnN0cmluZ19hcHBl
YXJlZF9oZXJlLnN0cmluZ19hcHBlYXJlZF9oZXJlLnN0cmluZ19hcHBlYXJlZF9oZXJlKToKKyAg
ICAgICAgKHZvd3MuZGVzY3JpYmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUuYWRkQmF0Y2guc3RyaW5n
X2FwcGVhcmVkX2hlcmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUu
dG9waWMpOgorICAgICAgICAodm93cy5kZXNjcmliZS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5hZGRC
YXRjaC5zdHJpbmdfYXBwZWFyZWRfaGVyZS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5zdHJpbmdfYXBw
ZWFyZWRfaGVyZS5zdHJpbmdfYXBwZWFyZWRfaGVyZSk6CisgICAgICAgICogU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVs
ZXMvZGlyZWN0b3IvdGVzdC9zZXJ2ZXIvY29yZS9pbnNlcnQtdGVzdC5qczogQWRkZWQuCisgICAg
ICAgICh2b3dzLmRlc2NyaWJlLnN0cmluZ19hcHBlYXJlZF9oZXJlLmFkZEJhdGNoLnN0cmluZ19h
cHBlYXJlZF9oZXJlLnN0cmluZ19hcHBlYXJlZF9oZXJlLik6CisgICAgICAgICh2b3dzLmRlc2Ny
aWJlLnN0cmluZ19hcHBlYXJlZF9oZXJlLmFkZEJhdGNoLnN0cmluZ19hcHBlYXJlZF9oZXJlLnN0
cmluZ19hcHBlYXJlZF9oZXJlLnN0cmluZ19hcHBlYXJlZF9oZXJlKToKKyAgICAgICAgKiBTcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25v
ZGVfbW9kdWxlcy9kaXJlY3Rvci90ZXN0L3NlcnZlci9jb3JlL21vdW50LXRlc3QuanM6IEFkZGVk
LgorICAgICAgICAoYXNzZXJ0Um91dGUpOgorICAgICAgICAodm93cy5kZXNjcmliZS5zdHJpbmdf
YXBwZWFyZWRfaGVyZS5hZGRCYXRjaC5zdHJpbmdfYXBwZWFyZWRfaGVyZS5zdHJpbmdfYXBwZWFy
ZWRfaGVyZS5zdHJpbmdfYXBwZWFyZWRfaGVyZS4pOgorICAgICAgICAodm93cy5kZXNjcmliZS5z
dHJpbmdfYXBwZWFyZWRfaGVyZS5hZGRCYXRjaC5zdHJpbmdfYXBwZWFyZWRfaGVyZS5zdHJpbmdf
YXBwZWFyZWRfaGVyZS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5mb29zdGFyKToKKyAgICAgICAgKHZv
d3MuZGVzY3JpYmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUuYWRkQmF0Y2guc3RyaW5nX2FwcGVhcmVk
X2hlcmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUuZm9vYmF6emJ1
enopOgorICAgICAgICAodm93cy5kZXNjcmliZS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5hZGRCYXRj
aC5zdHJpbmdfYXBwZWFyZWRfaGVyZS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5zdHJpbmdfYXBwZWFy
ZWRfaGVyZS5mb29kb2cpOgorICAgICAgICAodm93cy5kZXNjcmliZS5zdHJpbmdfYXBwZWFyZWRf
aGVyZS5hZGRCYXRjaC5zdHJpbmdfYXBwZWFyZWRfaGVyZS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5z
dHJpbmdfYXBwZWFyZWRfaGVyZS5yb290KToKKyAgICAgICAgKHZvd3MuZGVzY3JpYmUuc3RyaW5n
X2FwcGVhcmVkX2hlcmUuYWRkQmF0Y2guc3RyaW5nX2FwcGVhcmVkX2hlcmUuc3RyaW5nX2FwcGVh
cmVkX2hlcmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUpOgorICAg
ICAgICAodm93cy5kZXNjcmliZS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5hZGRCYXRjaC5zdHJpbmdf
YXBwZWFyZWRfaGVyZS5zdHJpbmdfYXBwZWFyZWRfaGVyZS50b3BpYyk6CisgICAgICAgICh2b3dz
LmRlc2NyaWJlLnN0cmluZ19hcHBlYXJlZF9oZXJlLmFkZEJhdGNoLnN0cmluZ19hcHBlYXJlZF9o
ZXJlLnN0cmluZ19hcHBlYXJlZF9oZXJlLik6CisgICAgICAgICh2b3dzLmRlc2NyaWJlLnN0cmlu
Z19hcHBlYXJlZF9oZXJlLmFkZEJhdGNoLnN0cmluZ19hcHBlYXJlZF9oZXJlLnN0cmluZ19hcHBl
YXJlZF9oZXJlLmNvdW50cnlDaXR5WmlwKToKKyAgICAgICAgKHZvd3MuZGVzY3JpYmUuc3RyaW5n
X2FwcGVhcmVkX2hlcmUuYWRkQmF0Y2guc3RyaW5nX2FwcGVhcmVkX2hlcmUuc3RyaW5nX2FwcGVh
cmVkX2hlcmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVz
L2RpcmVjdG9yL3Rlc3Qvc2VydmVyL2NvcmUvb24tdGVzdC5qczogQWRkZWQuCisgICAgICAgICh2
b3dzLmRlc2NyaWJlLnN0cmluZ19hcHBlYXJlZF9oZXJlLmFkZEJhdGNoLnN0cmluZ19hcHBlYXJl
ZF9oZXJlLnN0cmluZ19hcHBlYXJlZF9oZXJlLik6CisgICAgICAgICh2b3dzLmRlc2NyaWJlLnN0
cmluZ19hcHBlYXJlZF9oZXJlLmFkZEJhdGNoLnN0cmluZ19hcHBlYXJlZF9oZXJlLnN0cmluZ19h
cHBlYXJlZF9oZXJlLnN0cmluZ19hcHBlYXJlZF9oZXJlKToKKyAgICAgICAgKiBTcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9k
dWxlcy9kaXJlY3Rvci90ZXN0L3NlcnZlci9jb3JlL3BhdGgtdGVzdC5qczogQWRkZWQuCisgICAg
ICAgICh2b3dzLmRlc2NyaWJlLnN0cmluZ19hcHBlYXJlZF9oZXJlLmFkZEJhdGNoLnN0cmluZ19h
cHBlYXJlZF9oZXJlLnJvdXRlci5uZXcuZGlyZWN0b3IuUm91dGVyKToKKyAgICAgICAgKHZvd3Mu
ZGVzY3JpYmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUuYWRkQmF0Y2guc3RyaW5nX2FwcGVhcmVkX2hl
cmUudG9waWMpOgorICAgICAgICAodm93cy5kZXNjcmliZS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5h
ZGRCYXRjaC5zdHJpbmdfYXBwZWFyZWRfaGVyZS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5zdHJpbmdf
YXBwZWFyZWRfaGVyZSk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvdGVzdC9z
ZXJ2ZXIvY29yZS9yZWdpZnlzdHJpbmctdGVzdC5qczogQWRkZWQuCisgICAgICAgIChjYWxsYmFj
ayk6CisgICAgICAgICh0ZXN0Um91dGUpOgorICAgICAgICAodm93cy5kZXNjcmliZS5zdHJpbmdf
YXBwZWFyZWRfaGVyZS5hZGRCYXRjaC5zdHJpbmdfYXBwZWFyZWRfaGVyZS50b3BpYyk6CisgICAg
ICAgICh2b3dzLmRlc2NyaWJlLnN0cmluZ19hcHBlYXJlZF9oZXJlLmFkZEJhdGNoLnN0cmluZ19h
cHBlYXJlZF9oZXJlLnN0cmluZ19hcHBlYXJlZF9oZXJlKToKKyAgICAgICAgKiBTcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9k
dWxlcy9kaXJlY3Rvci90ZXN0L3NlcnZlci9oZWxwZXJzL2luZGV4LmpzOiBBZGRlZC4KKyAgICAg
ICAgKGV4cG9ydHMuY3JlYXRlU2VydmVyKToKKyAgICAgICAgKGV4cG9ydHMuaGFuZGxlcnMucmVz
cG9uZFdpdGhJZCk6CisgICAgICAgIChleHBvcnRzLmhhbmRsZXJzLnJlc3BvbmRXaXRoRGF0YSk6
CisgICAgICAgIChleHBvcnRzLmhhbmRsZXJzLnJlc3BvbmRXaXRoT2spOgorICAgICAgICAoZXhw
b3J0cy5oYW5kbGVycy5zdHJlYW1Cb2R5KToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJl
Y3Rvci90ZXN0L3NlcnZlci9oZWxwZXJzL21hY3Jvcy5qczogQWRkZWQuCisgICAgICAgIChjb250
ZXh0LnRvcGljKToKKyAgICAgICAgKGNvbnRleHQuc3RyaW5nX2FwcGVhcmVkX2hlcmUuZXhwZWN0
ZWQuc3RyaW5nX2FwcGVhcmVkX2hlcmUpOgorICAgICAgICAoZXhwb3J0cy5hc3NlcnRHZXQpOgor
ICAgICAgICAocmV0dXJuLnRvcGljKToKKyAgICAgICAgKHJldHVybi5zdHJpbmdfYXBwZWFyZWRf
aGVyZSk6CisgICAgICAgIChleHBvcnRzLmFzc2VydDQwNCk6CisgICAgICAgIChleHBvcnRzLmFz
c2VydFBvc3QpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL3Rlc3Qvc2VydmVy
L2h0dHAvYWNjZXB0LXRlc3QuanM6IEFkZGVkLgorICAgICAgICAoYXBpRWFzeS5kZXNjcmliZS5z
dHJpbmdfYXBwZWFyZWRfaGVyZS5hZGRCYXRjaC5zdHJpbmdfYXBwZWFyZWRfaGVyZS5zdHJpbmdf
YXBwZWFyZWRfaGVyZS4pOgorICAgICAgICAoYXBpRWFzeS5kZXNjcmliZS5zdHJpbmdfYXBwZWFy
ZWRfaGVyZS5hZGRCYXRjaC5zdHJpbmdfYXBwZWFyZWRfaGVyZS5zdHJpbmdfYXBwZWFyZWRfaGVy
ZS50b3BpYyk6CisgICAgICAgIChhcGlFYXN5LmRlc2NyaWJlLnN0cmluZ19hcHBlYXJlZF9oZXJl
LmFkZEJhdGNoLnN0cmluZ19hcHBlYXJlZF9oZXJlLnN0cmluZ19hcHBlYXJlZF9oZXJlLnN0cmlu
Z19hcHBlYXJlZF9oZXJlKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci90ZXN0
L3NlcnZlci9odHRwL2F0dGFjaC10ZXN0LmpzOiBBZGRlZC4KKyAgICAgICAgKGFzc2VydERhdGEp
OgorICAgICAgICAodm93cy5kZXNjcmliZS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5hZGRCYXRjaC5z
dHJpbmdfYXBwZWFyZWRfaGVyZS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5zdHJpbmdfYXBwZWFyZWRf
aGVyZSk6CisgICAgICAgICh2b3dzLmRlc2NyaWJlLnN0cmluZ19hcHBlYXJlZF9oZXJlLmFkZEJh
dGNoLnN0cmluZ19hcHBlYXJlZF9oZXJlLnN0cmluZ19hcHBlYXJlZF9oZXJlLnN0cmluZ19hcHBl
YXJlZF9oZXJlLnRvcGljKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci90ZXN0
L3NlcnZlci9odHRwL2JlZm9yZS10ZXN0LmpzOiBBZGRlZC4KKyAgICAgICAgKHZvd3MuZGVzY3Jp
YmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUuYWRkQmF0Y2guc3RyaW5nX2FwcGVhcmVkX2hlcmUuc3Ry
aW5nX2FwcGVhcmVkX2hlcmUudG9waWMpOgorICAgICAgICAodm93cy5kZXNjcmliZS5zdHJpbmdf
YXBwZWFyZWRfaGVyZS5hZGRCYXRjaC5zdHJpbmdfYXBwZWFyZWRfaGVyZS5zdHJpbmdfYXBwZWFy
ZWRfaGVyZS5zdHJpbmdfYXBwZWFyZWRfaGVyZSk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMv
ZGlyZWN0b3IvdGVzdC9zZXJ2ZXIvaHR0cC9jb25maWd1cmUtdGVzdC5qczogQWRkZWQuCisgICAg
ICAgICh2b3dzLmRlc2NyaWJlLnN0cmluZ19hcHBlYXJlZF9oZXJlLmFkZEJhdGNoLnN0cmluZ19h
cHBlYXJlZF9oZXJlLnN0cmluZ19hcHBlYXJlZF9oZXJlLnN0cmluZ19hcHBlYXJlZF9oZXJlLnN0
cmluZ19hcHBlYXJlZF9oZXJlKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci90
ZXN0L3NlcnZlci9odHRwL2h0dHAtdGVzdC5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnRCYXJr
KToKKyAgICAgICAgKHZvd3MuZGVzY3JpYmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUuYWRkQmF0Y2gu
c3RyaW5nX2FwcGVhcmVkX2hlcmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUuc3RyaW5nX2FwcGVhcmVk
X2hlcmUpOgorICAgICAgICAodm93cy5kZXNjcmliZS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5hZGRC
YXRjaC5zdHJpbmdfYXBwZWFyZWRfaGVyZS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5zdHJpbmdfYXBw
ZWFyZWRfaGVyZS50b3BpYyk6CisgICAgICAgICh2b3dzLmRlc2NyaWJlLnN0cmluZ19hcHBlYXJl
ZF9oZXJlLmFkZEJhdGNoLnN0cmluZ19hcHBlYXJlZF9oZXJlLnN0cmluZ19hcHBlYXJlZF9oZXJl
LnN0cmluZ19hcHBlYXJlZF9oZXJlLnN0cmluZ19hcHBlYXJlZF9oZXJlKToKKyAgICAgICAgKiBT
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5
L25vZGVfbW9kdWxlcy9kaXJlY3Rvci90ZXN0L3NlcnZlci9odHRwL21ldGhvZHMtdGVzdC5qczog
QWRkZWQuCisgICAgICAgICh2b3dzLmRlc2NyaWJlLnN0cmluZ19hcHBlYXJlZF9oZXJlLmFkZEJh
dGNoLnN0cmluZ19hcHBlYXJlZF9oZXJlLnN0cmluZ19hcHBlYXJlZF9oZXJlKToKKyAgICAgICAg
KHZvd3MuZGVzY3JpYmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUuYWRkQmF0Y2guc3RyaW5nX2FwcGVh
cmVkX2hlcmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUuKToKKyAg
ICAgICAgKHZvd3MuZGVzY3JpYmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUuYWRkQmF0Y2guc3RyaW5n
X2FwcGVhcmVkX2hlcmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUu
bW9kaWZ5UmVzb3VyY2UpOgorICAgICAgICAodm93cy5kZXNjcmliZS5zdHJpbmdfYXBwZWFyZWRf
aGVyZS5hZGRCYXRjaC5zdHJpbmdfYXBwZWFyZWRfaGVyZS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5z
dHJpbmdfYXBwZWFyZWRfaGVyZS5zdHJpbmdfYXBwZWFyZWRfaGVyZSk6CisgICAgICAgICogU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9u
b2RlX21vZHVsZXMvZGlyZWN0b3IvdGVzdC9zZXJ2ZXIvaHR0cC9yZWN1cnNpb24tdGVzdC5qczog
QWRkZWQuCisgICAgICAgICh2b3dzLmRlc2NyaWJlLnN0cmluZ19hcHBlYXJlZF9oZXJlLmFkZEJh
dGNoLnN0cmluZ19hcHBlYXJlZF9oZXJlLnN0cmluZ19hcHBlYXJlZF9oZXJlLik6CisgICAgICAg
ICh2b3dzLmRlc2NyaWJlLnN0cmluZ19hcHBlYXJlZF9oZXJlLmFkZEJhdGNoLnN0cmluZ19hcHBl
YXJlZF9oZXJlLnN0cmluZ19hcHBlYXJlZF9oZXJlLmJldGEpOgorICAgICAgICAodm93cy5kZXNj
cmliZS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5hZGRCYXRjaC5zdHJpbmdfYXBwZWFyZWRfaGVyZS5z
dHJpbmdfYXBwZWFyZWRfaGVyZS5nYW1tYSk6CisgICAgICAgICh2b3dzLmRlc2NyaWJlLnN0cmlu
Z19hcHBlYXJlZF9oZXJlLmFkZEJhdGNoLnN0cmluZ19hcHBlYXJlZF9oZXJlLnN0cmluZ19hcHBl
YXJlZF9oZXJlLnN0cmluZ19hcHBlYXJlZF9oZXJlKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxl
cy9kaXJlY3Rvci90ZXN0L3NlcnZlci9odHRwL3Jlc3BvbnNlcy10ZXN0LmpzOiBBZGRlZC4KKyAg
ICAgICAgKHZvd3MuZGVzY3JpYmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUuYWRkQmF0Y2guc3RyaW5n
X2FwcGVhcmVkX2hlcmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUpOgorICAgICAgICAqIFNwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9t
b2R1bGVzL2RpcmVjdG9yL3Rlc3Qvc2VydmVyL2h0dHAvc3RyZWFtLXRlc3QuanM6IEFkZGVkLgor
ICAgICAgICAoaGFuZGxlcnMuaGVscGVycy5oYW5kbGVycy52b3dzLmRlc2NyaWJlLnN0cmluZ19h
cHBlYXJlZF9oZXJlLmFkZEJhdGNoLnN0cmluZ19hcHBlYXJlZF9oZXJlLnN0cmluZ19hcHBlYXJl
ZF9oZXJlLnRvcGljKToKKyAgICAgICAgKGhhbmRsZXJzLmhlbHBlcnMuaGFuZGxlcnMudm93cy5k
ZXNjcmliZS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5hZGRCYXRjaC5zdHJpbmdfYXBwZWFyZWRfaGVy
ZS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5zdHJpbmdfYXBwZWFyZWRfaGVyZS50b3BpYyk6CisgICAg
ICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy8uZ2l0bW9kdWxlczogQWRkZWQuCisgICAg
ICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy8uaXN0YW5idWwueW1sOiBBZGRlZC4KKyAg
ICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzLy5ucG1pZ25vcmU6IEFkZGVkLgorICAg
ICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvQ09OVFJJQlVUSU5HLm1kOiBBZGRlZC4K
KyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL0ZBUS5tZDogQWRkZWQuCisgICAg
ICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9MSUNFTlNFOiBDb3BpZWQgZnJvbSBQZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2xhYnMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL3JlYWN0L2Jvd2VyX2NvbXBvbmVudHMvZGlyZWN0b3IvTElDRU5TRS4KKyAg
ICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL1JFQURNRS5tYXJrZG93bjogQWRkZWQu
CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9iaW4vaGFuZGxlYmFyczogQWRk
ZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2FtZC9oYW5kbGVi
YXJzLmpzOiBBZGRlZC4KKyAgICAgICAgKF9pbnRlcm9wUmVxdWlyZURlZmF1bHQpOgorICAgICAg
ICAoY3JlYXRlLmhiLmNvbXBpbGUpOgorICAgICAgICAoY3JlYXRlLmhiLnByZWNvbXBpbGUpOgor
ICAgICAgICAoY3JlYXRlKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rp
c3QvYW1kL2hhbmRsZWJhcnMucnVudGltZS5qczogQWRkZWQuCisgICAgICAgIChfaW50ZXJvcFJl
cXVpcmVEZWZhdWx0KToKKyAgICAgICAgKGNyZWF0ZS5oYi50ZW1wbGF0ZSk6CisgICAgICAgIChj
cmVhdGUpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9hbWQvaGFu
ZGxlYmFycy9iYXNlLmpzOiBBZGRlZC4KKyAgICAgICAgKF9pbnRlcm9wUmVxdWlyZURlZmF1bHQp
OgorICAgICAgICAoSGFuZGxlYmFyc0Vudmlyb25tZW50KToKKyAgICAgICAgKEhhbmRsZWJhcnNF
bnZpcm9ubWVudC5wcm90b3R5cGUucmVnaXN0ZXJIZWxwZXIpOgorICAgICAgICAoSGFuZGxlYmFy
c0Vudmlyb25tZW50LnByb3RvdHlwZS51bnJlZ2lzdGVySGVscGVyKToKKyAgICAgICAgKEhhbmRs
ZWJhcnNFbnZpcm9ubWVudC5wcm90b3R5cGUucmVnaXN0ZXJQYXJ0aWFsKToKKyAgICAgICAgKEhh
bmRsZWJhcnNFbnZpcm9ubWVudC5wcm90b3R5cGUudW5yZWdpc3RlclBhcnRpYWwpOgorICAgICAg
ICAoSGFuZGxlYmFyc0Vudmlyb25tZW50LnByb3RvdHlwZS5yZWdpc3RlckRlY29yYXRvcik6Cisg
ICAgICAgIChIYW5kbGViYXJzRW52aXJvbm1lbnQucHJvdG90eXBlLnVucmVnaXN0ZXJEZWNvcmF0
b3IpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9hbWQvaGFuZGxl
YmFycy9jb21waWxlci9hc3QuanM6IEFkZGVkLgorICAgICAgICAoQVNULmhlbHBlcnMuaGVscGVy
RXhwcmVzc2lvbik6CisgICAgICAgIChBU1QuaGVscGVycy5zY29wZWRJZCk6CisgICAgICAgIChB
U1QuaGVscGVycy5zaW1wbGVJZCk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFy
cy9kaXN0L2FtZC9oYW5kbGViYXJzL2NvbXBpbGVyL2Jhc2UuanM6IEFkZGVkLgorICAgICAgICAo
X2ludGVyb3BSZXF1aXJlRGVmYXVsdCk6CisgICAgICAgICh5eS5sb2NJbmZvKToKKyAgICAgICAg
KHBhcnNlKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvYW1kL2hh
bmRsZWJhcnMvY29tcGlsZXIvY29kZS1nZW4uanM6IEFkZGVkLgorICAgICAgICAoY2F0Y2gpOgor
ICAgICAgICAoU291cmNlTm9kZS5Tb3VyY2VOb2RlKToKKyAgICAgICAgKFNvdXJjZU5vZGUuU291
cmNlTm9kZS5wcm90b3R5cGUuYWRkKToKKyAgICAgICAgKFNvdXJjZU5vZGUuU291cmNlTm9kZS5w
cm90b3R5cGUucHJlcGVuZCk6CisgICAgICAgIChTb3VyY2VOb2RlLlNvdXJjZU5vZGUucHJvdG90
eXBlLnRvU3RyaW5nV2l0aFNvdXJjZU1hcCk6CisgICAgICAgIChTb3VyY2VOb2RlLlNvdXJjZU5v
ZGUucHJvdG90eXBlLnRvU3RyaW5nKToKKyAgICAgICAgKGNhc3RDaHVuayk6CisgICAgICAgIChD
b2RlR2VuKToKKyAgICAgICAgKENvZGVHZW4ucHJvdG90eXBlLmlzRW1wdHkpOgorICAgICAgICAo
Q29kZUdlbi5wcm90b3R5cGUucHJlcGVuZCk6CisgICAgICAgIChDb2RlR2VuLnByb3RvdHlwZS5w
dXNoKToKKyAgICAgICAgKENvZGVHZW4ucHJvdG90eXBlLm1lcmdlKToKKyAgICAgICAgKENvZGVH
ZW4ucHJvdG90eXBlLmVhY2gpOgorICAgICAgICAoQ29kZUdlbi5wcm90b3R5cGUuZW1wdHkpOgor
ICAgICAgICAoQ29kZUdlbi5wcm90b3R5cGUud3JhcCk6CisgICAgICAgIChDb2RlR2VuLnByb3Rv
dHlwZS5mdW5jdGlvbkNhbGwpOgorICAgICAgICAoQ29kZUdlbi5wcm90b3R5cGUucXVvdGVkU3Ry
aW5nKToKKyAgICAgICAgKENvZGVHZW4ucHJvdG90eXBlKToKKyAgICAgICAgKiBTcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9k
dWxlcy9oYW5kbGViYXJzL2Rpc3QvYW1kL2hhbmRsZWJhcnMvY29tcGlsZXIvY29tcGlsZXIuanM6
IEFkZGVkLgorICAgICAgICAoX2ludGVyb3BSZXF1aXJlRGVmYXVsdCk6CisgICAgICAgIChDb21w
aWxlcik6CisgICAgICAgIChDb21waWxlci5wcm90b3R5cGUuZXF1YWxzKToKKyAgICAgICAgKENv
bXBpbGVyLnByb3RvdHlwZS5jb21waWxlKToKKyAgICAgICAgKENvbXBpbGVyLnByb3RvdHlwZS5j
b21waWxlUHJvZ3JhbSk6CisgICAgICAgIChDb21waWxlci5wcm90b3R5cGUuYWNjZXB0KToKKyAg
ICAgICAgKENvbXBpbGVyLnByb3RvdHlwZS5Qcm9ncmFtKToKKyAgICAgICAgKENvbXBpbGVyLnBy
b3RvdHlwZS5CbG9ja1N0YXRlbWVudCk6CisgICAgICAgIChDb21waWxlci5wcm90b3R5cGUuRGVj
b3JhdG9yQmxvY2spOgorICAgICAgICAoQ29tcGlsZXIucHJvdG90eXBlLlBhcnRpYWxTdGF0ZW1l
bnQpOgorICAgICAgICAoQ29tcGlsZXIucHJvdG90eXBlLlBhcnRpYWxCbG9ja1N0YXRlbWVudCk6
CisgICAgICAgIChDb21waWxlci5wcm90b3R5cGUuTXVzdGFjaGVTdGF0ZW1lbnQpOgorICAgICAg
ICAoQ29tcGlsZXIucHJvdG90eXBlLkRlY29yYXRvcik6CisgICAgICAgIChDb21waWxlci5wcm90
b3R5cGUuQ29udGVudFN0YXRlbWVudCk6CisgICAgICAgIChDb21waWxlci5wcm90b3R5cGUuQ29t
bWVudFN0YXRlbWVudCk6CisgICAgICAgIChDb21waWxlci5wcm90b3R5cGUuU3ViRXhwcmVzc2lv
bik6CisgICAgICAgIChDb21waWxlci5wcm90b3R5cGUuYW1iaWd1b3VzU2V4cHIpOgorICAgICAg
ICAoQ29tcGlsZXIucHJvdG90eXBlLnNpbXBsZVNleHByKToKKyAgICAgICAgKENvbXBpbGVyLnBy
b3RvdHlwZS5oZWxwZXJTZXhwcik6CisgICAgICAgIChDb21waWxlci5wcm90b3R5cGUuUGF0aEV4
cHJlc3Npb24pOgorICAgICAgICAoQ29tcGlsZXIucHJvdG90eXBlLlN0cmluZ0xpdGVyYWwpOgor
ICAgICAgICAoQ29tcGlsZXIucHJvdG90eXBlLk51bWJlckxpdGVyYWwpOgorICAgICAgICAoQ29t
cGlsZXIucHJvdG90eXBlLkJvb2xlYW5MaXRlcmFsKToKKyAgICAgICAgKENvbXBpbGVyLnByb3Rv
dHlwZS5VbmRlZmluZWRMaXRlcmFsKToKKyAgICAgICAgKENvbXBpbGVyLnByb3RvdHlwZS5OdWxs
TGl0ZXJhbCk6CisgICAgICAgIChDb21waWxlci5wcm90b3R5cGUuSGFzaCk6CisgICAgICAgIChD
b21waWxlci5wcm90b3R5cGUub3Bjb2RlKToKKyAgICAgICAgKENvbXBpbGVyLnByb3RvdHlwZS5h
ZGREZXB0aCk6CisgICAgICAgIChDb21waWxlci5wcm90b3R5cGUuY2xhc3NpZnlTZXhwcik6Cisg
ICAgICAgIChDb21waWxlci5wcm90b3R5cGUucHVzaFBhcmFtcyk6CisgICAgICAgIChDb21waWxl
ci5wcm90b3R5cGUucHVzaFBhcmFtKToKKyAgICAgICAgKENvbXBpbGVyLnByb3RvdHlwZSk6Cisg
ICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2FtZC9oYW5kbGViYXJzL2Nv
bXBpbGVyL2hlbHBlcnMuanM6IEFkZGVkLgorICAgICAgICAoX2ludGVyb3BSZXF1aXJlRGVmYXVs
dCk6CisgICAgICAgICh2YWxpZGF0ZUNsb3NlKToKKyAgICAgICAgKFNvdXJjZUxvY2F0aW9uKToK
KyAgICAgICAgKGlkKToKKyAgICAgICAgKHN0cmlwRmxhZ3MpOgorICAgICAgICAoc3RyaXBDb21t
ZW50KToKKyAgICAgICAgKHByZXBhcmVQYXRoKToKKyAgICAgICAgKHByZXBhcmVNdXN0YWNoZSk6
CisgICAgICAgIChwcmVwYXJlUmF3QmxvY2spOgorICAgICAgICAocHJlcGFyZUJsb2NrKToKKyAg
ICAgICAgKHByZXBhcmVQcm9ncmFtKToKKyAgICAgICAgKHByZXBhcmVQYXJ0aWFsQmxvY2spOgor
ICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9hbWQvaGFuZGxlYmFycy9j
b21waWxlci9qYXZhc2NyaXB0LWNvbXBpbGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKF9pbnRlcm9w
UmVxdWlyZURlZmF1bHQpOgorICAgICAgICAoTGl0ZXJhbCk6CisgICAgICAgIChKYXZhU2NyaXB0
Q29tcGlsZXIpOgorICAgICAgICAoSmF2YVNjcmlwdENvbXBpbGVyLnByb3RvdHlwZS5uYW1lTG9v
a3VwKToKKyAgICAgICAgKEphdmFTY3JpcHRDb21waWxlci5wcm90b3R5cGUuZGVwdGhlZExvb2t1
cCk6CisgICAgICAgIChKYXZhU2NyaXB0Q29tcGlsZXIucHJvdG90eXBlLmNvbXBpbGVySW5mbyk6
CisgICAgICAgIChKYXZhU2NyaXB0Q29tcGlsZXIucHJvdG90eXBlLmFwcGVuZFRvQnVmZmVyKToK
KyAgICAgICAgKEphdmFTY3JpcHRDb21waWxlci5wcm90b3R5cGUuaW5pdGlhbGl6ZUJ1ZmZlcik6
CisgICAgICAgIChKYXZhU2NyaXB0Q29tcGlsZXIucHJvdG90eXBlLmNvbXBpbGUpOgorICAgICAg
ICAoSmF2YVNjcmlwdENvbXBpbGVyLnByb3RvdHlwZS5wcmVhbWJsZSk6CisgICAgICAgIChKYXZh
U2NyaXB0Q29tcGlsZXIucHJvdG90eXBlLmNyZWF0ZUZ1bmN0aW9uQ29udGV4dCk6CisgICAgICAg
IChKYXZhU2NyaXB0Q29tcGlsZXIucHJvdG90eXBlLm1lcmdlU291cmNlKToKKyAgICAgICAgKEph
dmFTY3JpcHRDb21waWxlci5wcm90b3R5cGUuYmxvY2tWYWx1ZSk6CisgICAgICAgIChKYXZhU2Ny
aXB0Q29tcGlsZXIucHJvdG90eXBlLmFtYmlndW91c0Jsb2NrVmFsdWUpOgorICAgICAgICAoSmF2
YVNjcmlwdENvbXBpbGVyLnByb3RvdHlwZS5hcHBlbmRDb250ZW50KToKKyAgICAgICAgKEphdmFT
Y3JpcHRDb21waWxlci5wcm90b3R5cGUuYXBwZW5kKToKKyAgICAgICAgKEphdmFTY3JpcHRDb21w
aWxlci5wcm90b3R5cGUuYXBwZW5kRXNjYXBlZCk6CisgICAgICAgIChKYXZhU2NyaXB0Q29tcGls
ZXIucHJvdG90eXBlLmdldENvbnRleHQpOgorICAgICAgICAoSmF2YVNjcmlwdENvbXBpbGVyLnBy
b3RvdHlwZS5wdXNoQ29udGV4dCk6CisgICAgICAgIChKYXZhU2NyaXB0Q29tcGlsZXIucHJvdG90
eXBlLmxvb2t1cE9uQ29udGV4dCk6CisgICAgICAgIChKYXZhU2NyaXB0Q29tcGlsZXIucHJvdG90
eXBlLmxvb2t1cEJsb2NrUGFyYW0pOgorICAgICAgICAoSmF2YVNjcmlwdENvbXBpbGVyLnByb3Rv
dHlwZS5sb29rdXBEYXRhKToKKyAgICAgICAgKEphdmFTY3JpcHRDb21waWxlci5wcm90b3R5cGUu
cmVzb2x2ZVBhdGgpOgorICAgICAgICAoSmF2YVNjcmlwdENvbXBpbGVyLnByb3RvdHlwZS5yZXNv
bHZlUG9zc2libGVMYW1iZGEpOgorICAgICAgICAoSmF2YVNjcmlwdENvbXBpbGVyLnByb3RvdHlw
ZS5wdXNoU3RyaW5nUGFyYW0pOgorICAgICAgICAoSmF2YVNjcmlwdENvbXBpbGVyLnByb3RvdHlw
ZS5lbXB0eUhhc2gpOgorICAgICAgICAoSmF2YVNjcmlwdENvbXBpbGVyLnByb3RvdHlwZS5wdXNo
SGFzaCk6CisgICAgICAgIChKYXZhU2NyaXB0Q29tcGlsZXIucHJvdG90eXBlLnBvcEhhc2gpOgor
ICAgICAgICAoSmF2YVNjcmlwdENvbXBpbGVyLnByb3RvdHlwZS5wdXNoU3RyaW5nKToKKyAgICAg
ICAgKEphdmFTY3JpcHRDb21waWxlci5wcm90b3R5cGUucHVzaExpdGVyYWwpOgorICAgICAgICAo
SmF2YVNjcmlwdENvbXBpbGVyLnByb3RvdHlwZS5wdXNoUHJvZ3JhbSk6CisgICAgICAgIChKYXZh
U2NyaXB0Q29tcGlsZXIucHJvdG90eXBlLnJlZ2lzdGVyRGVjb3JhdG9yKToKKyAgICAgICAgKEph
dmFTY3JpcHRDb21waWxlci5wcm90b3R5cGUuaW52b2tlSGVscGVyKToKKyAgICAgICAgKEphdmFT
Y3JpcHRDb21waWxlci5wcm90b3R5cGUuaW52b2tlS25vd25IZWxwZXIpOgorICAgICAgICAoSmF2
YVNjcmlwdENvbXBpbGVyLnByb3RvdHlwZS5pbnZva2VBbWJpZ3VvdXMpOgorICAgICAgICAoSmF2
YVNjcmlwdENvbXBpbGVyLnByb3RvdHlwZS5pbnZva2VQYXJ0aWFsKToKKyAgICAgICAgKEphdmFT
Y3JpcHRDb21waWxlci5wcm90b3R5cGUuYXNzaWduVG9IYXNoKToKKyAgICAgICAgKEphdmFTY3Jp
cHRDb21waWxlci5wcm90b3R5cGUucHVzaElkKToKKyAgICAgICAgKEphdmFTY3JpcHRDb21waWxl
ci5wcm90b3R5cGUuY29tcGlsZUNoaWxkcmVuKToKKyAgICAgICAgKEphdmFTY3JpcHRDb21waWxl
ci5wcm90b3R5cGUubWF0Y2hFeGlzdGluZ1Byb2dyYW0pOgorICAgICAgICAoSmF2YVNjcmlwdENv
bXBpbGVyLnByb3RvdHlwZS5wcm9ncmFtRXhwcmVzc2lvbik6CisgICAgICAgIChKYXZhU2NyaXB0
Q29tcGlsZXIucHJvdG90eXBlLnVzZVJlZ2lzdGVyKToKKyAgICAgICAgKEphdmFTY3JpcHRDb21w
aWxlci5wcm90b3R5cGUucHVzaCk6CisgICAgICAgIChKYXZhU2NyaXB0Q29tcGlsZXIucHJvdG90
eXBlLnB1c2hTdGFja0xpdGVyYWwpOgorICAgICAgICAoSmF2YVNjcmlwdENvbXBpbGVyLnByb3Rv
dHlwZS5wdXNoU291cmNlKToKKyAgICAgICAgKEphdmFTY3JpcHRDb21waWxlci5wcm90b3R5cGUu
cmVwbGFjZVN0YWNrKToKKyAgICAgICAgKEphdmFTY3JpcHRDb21waWxlci5wcm90b3R5cGUuaW5j
clN0YWNrKToKKyAgICAgICAgKEphdmFTY3JpcHRDb21waWxlci5wcm90b3R5cGUudG9wU3RhY2tO
YW1lKToKKyAgICAgICAgKEphdmFTY3JpcHRDb21waWxlci5wcm90b3R5cGUuZmx1c2hJbmxpbmUp
OgorICAgICAgICAoSmF2YVNjcmlwdENvbXBpbGVyLnByb3RvdHlwZS5pc0lubGluZSk6CisgICAg
ICAgIChKYXZhU2NyaXB0Q29tcGlsZXIucHJvdG90eXBlLnBvcFN0YWNrKToKKyAgICAgICAgKEph
dmFTY3JpcHRDb21waWxlci5wcm90b3R5cGUudG9wU3RhY2spOgorICAgICAgICAoSmF2YVNjcmlw
dENvbXBpbGVyLnByb3RvdHlwZS5jb250ZXh0TmFtZSk6CisgICAgICAgIChKYXZhU2NyaXB0Q29t
cGlsZXIucHJvdG90eXBlLnF1b3RlZFN0cmluZyk6CisgICAgICAgIChKYXZhU2NyaXB0Q29tcGls
ZXIucHJvdG90eXBlLm9iamVjdExpdGVyYWwpOgorICAgICAgICAoSmF2YVNjcmlwdENvbXBpbGVy
LnByb3RvdHlwZS5hbGlhc2FibGUpOgorICAgICAgICAoSmF2YVNjcmlwdENvbXBpbGVyLnByb3Rv
dHlwZS5zZXR1cEhlbHBlcik6CisgICAgICAgIChKYXZhU2NyaXB0Q29tcGlsZXIucHJvdG90eXBl
LnNldHVwUGFyYW1zKToKKyAgICAgICAgKEphdmFTY3JpcHRDb21waWxlci5wcm90b3R5cGUuc2V0
dXBIZWxwZXJBcmdzKToKKyAgICAgICAgKEphdmFTY3JpcHRDb21waWxlci5pc1ZhbGlkSmF2YVNj
cmlwdFZhcmlhYmxlTmFtZSk6CisgICAgICAgIChzdHJpY3RMb29rdXApOgorICAgICAgICAqIFNw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkv
bm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9hbWQvaGFuZGxlYmFycy9jb21waWxlci9wYXJz
ZXIuanM6IEFkZGVkLgorICAgICAgICAocGFyc2VyLnRyYWNlKToKKyAgICAgICAgKHBhcnNlci5w
ZXJmb3JtQWN0aW9uKToKKyAgICAgICAgKHBhcnNlci5wYXJzZUVycm9yKToKKyAgICAgICAgKHBh
cnNlci5wYXJzZS5wYXJzZS5wb3BTdGFjayk6CisgICAgICAgIChwYXJzZXIucGFyc2UucGFyc2Uu
bGV4KToKKyAgICAgICAgKHBhcnNlci5wYXJzZSk6CisgICAgICAgIChQYXJzZXIpOgorICAgICAg
ICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9q
cXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9hbWQvaGFuZGxlYmFycy9jb21waWxl
ci9wcmludGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKF9pbnRlcm9wUmVxdWlyZURlZmF1bHQpOgor
ICAgICAgICAocHJpbnQpOgorICAgICAgICAoUHJpbnRWaXNpdG9yKToKKyAgICAgICAgKFByaW50
VmlzaXRvci5wcm90b3R5cGUucGFkKToKKyAgICAgICAgKFByaW50VmlzaXRvci5wcm90b3R5cGUu
UHJvZ3JhbSk6CisgICAgICAgIChQcmludFZpc2l0b3IucHJvdG90eXBlLk11c3RhY2hlU3RhdGVt
ZW50KToKKyAgICAgICAgKFByaW50VmlzaXRvci5wcm90b3R5cGUuRGVjb3JhdG9yKToKKyAgICAg
ICAgKFByaW50VmlzaXRvci5wcm90b3R5cGUuQmxvY2tTdGF0ZW1lbnQuUHJpbnRWaXNpdG9yLnBy
b3RvdHlwZS5EZWNvcmF0b3JCbG9jayk6CisgICAgICAgIChQcmludFZpc2l0b3IucHJvdG90eXBl
LlBhcnRpYWxTdGF0ZW1lbnQpOgorICAgICAgICAoUHJpbnRWaXNpdG9yLnByb3RvdHlwZS5QYXJ0
aWFsQmxvY2tTdGF0ZW1lbnQpOgorICAgICAgICAoUHJpbnRWaXNpdG9yLnByb3RvdHlwZS5Db250
ZW50U3RhdGVtZW50KToKKyAgICAgICAgKFByaW50VmlzaXRvci5wcm90b3R5cGUuQ29tbWVudFN0
YXRlbWVudCk6CisgICAgICAgIChQcmludFZpc2l0b3IucHJvdG90eXBlLlN1YkV4cHJlc3Npb24p
OgorICAgICAgICAoUHJpbnRWaXNpdG9yLnByb3RvdHlwZS5QYXRoRXhwcmVzc2lvbik6CisgICAg
ICAgIChQcmludFZpc2l0b3IucHJvdG90eXBlLlN0cmluZ0xpdGVyYWwpOgorICAgICAgICAoUHJp
bnRWaXNpdG9yLnByb3RvdHlwZS5OdW1iZXJMaXRlcmFsKToKKyAgICAgICAgKFByaW50VmlzaXRv
ci5wcm90b3R5cGUuQm9vbGVhbkxpdGVyYWwpOgorICAgICAgICAoUHJpbnRWaXNpdG9yLnByb3Rv
dHlwZS5VbmRlZmluZWRMaXRlcmFsKToKKyAgICAgICAgKFByaW50VmlzaXRvci5wcm90b3R5cGUu
TnVsbExpdGVyYWwpOgorICAgICAgICAoUHJpbnRWaXNpdG9yLnByb3RvdHlwZS5IYXNoKToKKyAg
ICAgICAgKFByaW50VmlzaXRvci5wcm90b3R5cGUuSGFzaFBhaXIpOgorICAgICAgICAqIFNwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9k
ZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9hbWQvaGFuZGxlYmFycy9jb21waWxlci92aXNpdG9y
LmpzOiBBZGRlZC4KKyAgICAgICAgKF9pbnRlcm9wUmVxdWlyZURlZmF1bHQpOgorICAgICAgICAo
VmlzaXRvcik6CisgICAgICAgIChWaXNpdG9yLnByb3RvdHlwZS5hY2NlcHRLZXkpOgorICAgICAg
ICAoVmlzaXRvci5wcm90b3R5cGUuYWNjZXB0UmVxdWlyZWQpOgorICAgICAgICAoVmlzaXRvci5w
cm90b3R5cGUuYWNjZXB0QXJyYXkpOgorICAgICAgICAoVmlzaXRvci5wcm90b3R5cGUuYWNjZXB0
KToKKyAgICAgICAgKFZpc2l0b3IucHJvdG90eXBlLlByb2dyYW0pOgorICAgICAgICAoVmlzaXRv
ci5wcm90b3R5cGUuUGFydGlhbEJsb2NrU3RhdGVtZW50KToKKyAgICAgICAgKFZpc2l0b3IucHJv
dG90eXBlLkNvbnRlbnRTdGF0ZW1lbnQpOgorICAgICAgICAoVmlzaXRvci5wcm90b3R5cGUuQ29t
bWVudFN0YXRlbWVudCk6CisgICAgICAgIChWaXNpdG9yLnByb3RvdHlwZS5QYXRoRXhwcmVzc2lv
bik6CisgICAgICAgIChWaXNpdG9yLnByb3RvdHlwZS5TdHJpbmdMaXRlcmFsKToKKyAgICAgICAg
KFZpc2l0b3IucHJvdG90eXBlLk51bWJlckxpdGVyYWwpOgorICAgICAgICAoVmlzaXRvci5wcm90
b3R5cGUuQm9vbGVhbkxpdGVyYWwpOgorICAgICAgICAoVmlzaXRvci5wcm90b3R5cGUuVW5kZWZp
bmVkTGl0ZXJhbCk6CisgICAgICAgIChWaXNpdG9yLnByb3RvdHlwZS5OdWxsTGl0ZXJhbCk6Cisg
ICAgICAgIChWaXNpdG9yLnByb3RvdHlwZS5IYXNoKToKKyAgICAgICAgKFZpc2l0b3IucHJvdG90
eXBlLkhhc2hQYWlyKToKKyAgICAgICAgKHZpc2l0U3ViRXhwcmVzc2lvbik6CisgICAgICAgICh2
aXNpdEJsb2NrKToKKyAgICAgICAgKHZpc2l0UGFydGlhbCk6CisgICAgICAgICogU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21v
ZHVsZXMvaGFuZGxlYmFycy9kaXN0L2FtZC9oYW5kbGViYXJzL2NvbXBpbGVyL3doaXRlc3BhY2Ut
Y29udHJvbC5qczogQWRkZWQuCisgICAgICAgIChfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KToKKyAg
ICAgICAgKFdoaXRlc3BhY2VDb250cm9sKToKKyAgICAgICAgKFdoaXRlc3BhY2VDb250cm9sLnBy
b3RvdHlwZS5Qcm9ncmFtKToKKyAgICAgICAgKFdoaXRlc3BhY2VDb250cm9sLnByb3RvdHlwZS5C
bG9ja1N0YXRlbWVudC5XaGl0ZXNwYWNlQ29udHJvbC5wcm90b3R5cGUuRGVjb3JhdG9yQmxvY2su
V2hpdGVzcGFjZUNvbnRyb2wucHJvdG90eXBlLlBhcnRpYWxCbG9ja1N0YXRlbWVudCk6CisgICAg
ICAgIChXaGl0ZXNwYWNlQ29udHJvbC5wcm90b3R5cGUuRGVjb3JhdG9yLldoaXRlc3BhY2VDb250
cm9sLnByb3RvdHlwZS5NdXN0YWNoZVN0YXRlbWVudCk6CisgICAgICAgIChXaGl0ZXNwYWNlQ29u
dHJvbC5wcm90b3R5cGUuUGFydGlhbFN0YXRlbWVudC5XaGl0ZXNwYWNlQ29udHJvbC5wcm90b3R5
cGUuQ29tbWVudFN0YXRlbWVudCk6CisgICAgICAgIChpc1ByZXZXaGl0ZXNwYWNlKToKKyAgICAg
ICAgKGlzTmV4dFdoaXRlc3BhY2UpOgorICAgICAgICAob21pdFJpZ2h0KToKKyAgICAgICAgKG9t
aXRMZWZ0KToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvYW1kL2hh
bmRsZWJhcnMvZGVjb3JhdG9ycy5qczogQWRkZWQuCisgICAgICAgIChfaW50ZXJvcFJlcXVpcmVE
ZWZhdWx0KToKKyAgICAgICAgKHJlZ2lzdGVyRGVmYXVsdERlY29yYXRvcnMpOgorICAgICAgICAq
IFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVl
cnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9hbWQvaGFuZGxlYmFycy9kZWNvcmF0b3Jz
L2lubGluZS5qczogQWRkZWQuCisgICAgICAgIChtb2R1bGUuZXhwb3J0cyk6CisgICAgICAgICog
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVy
eS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2FtZC9oYW5kbGViYXJzL2V4Y2VwdGlvbi5q
czogQWRkZWQuCisgICAgICAgIChFeGNlcHRpb24pOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVz
L2hhbmRsZWJhcnMvZGlzdC9hbWQvaGFuZGxlYmFycy9oZWxwZXJzLmpzOiBBZGRlZC4KKyAgICAg
ICAgKF9pbnRlcm9wUmVxdWlyZURlZmF1bHQpOgorICAgICAgICAocmVnaXN0ZXJEZWZhdWx0SGVs
cGVycyk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2FtZC9oYW5k
bGViYXJzL2hlbHBlcnMvYmxvY2staGVscGVyLW1pc3NpbmcuanM6IEFkZGVkLgorICAgICAgICAo
bW9kdWxlLmV4cG9ydHMpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlz
dC9hbWQvaGFuZGxlYmFycy9oZWxwZXJzL2VhY2guanM6IEFkZGVkLgorICAgICAgICAoX2ludGVy
b3BSZXF1aXJlRGVmYXVsdCk6CisgICAgICAgIChtb2R1bGUuZXhwb3J0cyk6CisgICAgICAgICog
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVy
eS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2FtZC9oYW5kbGViYXJzL2hlbHBlcnMvaGVs
cGVyLW1pc3NpbmcuanM6IEFkZGVkLgorICAgICAgICAoX2ludGVyb3BSZXF1aXJlRGVmYXVsdCk6
CisgICAgICAgIChtb2R1bGUuZXhwb3J0cyk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFu
ZGxlYmFycy9kaXN0L2FtZC9oYW5kbGViYXJzL2hlbHBlcnMvaWYuanM6IEFkZGVkLgorICAgICAg
ICAobW9kdWxlLmV4cG9ydHMpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMv
ZGlzdC9hbWQvaGFuZGxlYmFycy9oZWxwZXJzL2xvZy5qczogQWRkZWQuCisgICAgICAgIChtb2R1
bGUuZXhwb3J0cyk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2Ft
ZC9oYW5kbGViYXJzL2hlbHBlcnMvbG9va3VwLmpzOiBBZGRlZC4KKyAgICAgICAgKG1vZHVsZS5l
eHBvcnRzKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvYW1kL2hh
bmRsZWJhcnMvaGVscGVycy93aXRoLmpzOiBBZGRlZC4KKyAgICAgICAgKG1vZHVsZS5leHBvcnRz
KToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvYW1kL2hhbmRsZWJh
cnMvbG9nZ2VyLmpzOiBBZGRlZC4KKyAgICAgICAgKGxvZ2dlci5sb29rdXBMZXZlbCk6CisgICAg
ICAgIChsb2dnZXIubG9nKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rp
c3QvYW1kL2hhbmRsZWJhcnMvbm8tY29uZmxpY3QuanM6IEFkZGVkLgorICAgICAgICAoSGFuZGxl
YmFycy5ub0NvbmZsaWN0KToKKyAgICAgICAgKG1vZHVsZS5leHBvcnRzKToKKyAgICAgICAgKiBT
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5
L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvYW1kL2hhbmRsZWJhcnMvcnVudGltZS5qczog
QWRkZWQuCisgICAgICAgIChfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KToKKyAgICAgICAgKGNoZWNr
UmV2aXNpb24pOgorICAgICAgICAoaW52b2tlUGFydGlhbFdyYXBwZXIpOgorICAgICAgICAoY29u
dGFpbmVyLnN0cmljdCk6CisgICAgICAgIChjb250YWluZXIubG9va3VwKToKKyAgICAgICAgKGNv
bnRhaW5lci5sYW1iZGEpOgorICAgICAgICAoY29udGFpbmVyLmZuKToKKyAgICAgICAgKGNvbnRh
aW5lci5wcm9ncmFtKToKKyAgICAgICAgKGNvbnRhaW5lci5kYXRhKToKKyAgICAgICAgKGNvbnRh
aW5lci5tZXJnZSk6CisgICAgICAgIChyZXQubWFpbik6CisgICAgICAgIChyZXQpOgorICAgICAg
ICAocmV0Ll9zZXR1cCk6CisgICAgICAgIChyZXQuX2NoaWxkKToKKyAgICAgICAgKHRlbXBsYXRl
KToKKyAgICAgICAgKHByb2cpOgorICAgICAgICAod3JhcFByb2dyYW0pOgorICAgICAgICAocmVz
b2x2ZVBhcnRpYWwpOgorICAgICAgICAoaW52b2tlUGFydGlhbCk6CisgICAgICAgIChub29wKToK
KyAgICAgICAgKGluaXREYXRhKToKKyAgICAgICAgKGV4ZWN1dGVEZWNvcmF0b3JzKToKKyAgICAg
ICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
anF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvYW1kL2hhbmRsZWJhcnMvc2FmZS1z
dHJpbmcuanM6IEFkZGVkLgorICAgICAgICAoU2FmZVN0cmluZyk6CisgICAgICAgIChTYWZlU3Ry
aW5nLnByb3RvdHlwZS50b1N0cmluZy5TYWZlU3RyaW5nLnByb3RvdHlwZS50b0hUTUwpOgorICAg
ICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9hbWQvaGFuZGxlYmFycy91dGls
cy5qczogQWRkZWQuCisgICAgICAgIChiYWRDaGFycy5wb3NzaWJsZSk6CisgICAgICAgIChleHRl
bmQpOgorICAgICAgICAoaXNGdW5jdGlvbik6CisgICAgICAgIChpc0Z1bmN0aW9uLmV4cG9ydHMu
aXNGdW5jdGlvbi5pc0Z1bmN0aW9uKToKKyAgICAgICAgKGlzQXJyYXkuQXJyYXkuaXNBcnJheSk6
CisgICAgICAgIChpbmRleE9mKToKKyAgICAgICAgKGVzY2FwZUV4cHJlc3Npb24pOgorICAgICAg
ICAoaXNFbXB0eSk6CisgICAgICAgIChjcmVhdGVGcmFtZSk6CisgICAgICAgIChibG9ja1BhcmFt
cyk6CisgICAgICAgIChhcHBlbmRDb250ZXh0UGF0aCk6CisgICAgICAgICogU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVs
ZXMvaGFuZGxlYmFycy9kaXN0L2FtZC9wcmVjb21waWxlci5qczogQWRkZWQuCisgICAgICAgIChf
aW50ZXJvcFJlcXVpcmVEZWZhdWx0KToKKyAgICAgICAgKG1vZHVsZS5leHBvcnRzLmxvYWRUZW1w
bGF0ZXMpOgorICAgICAgICAobW9kdWxlLmV4cG9ydHMuY2xpKToKKyAgICAgICAgKGFycmF5Q2Fz
dCk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2Nqcy9oYW5kbGVi
YXJzLmpzOiBBZGRlZC4KKyAgICAgICAgKF9pbnRlcm9wUmVxdWlyZURlZmF1bHQpOgorICAgICAg
ICAoY3JlYXRlLmhiLmNvbXBpbGUpOgorICAgICAgICAoY3JlYXRlLmhiLnByZWNvbXBpbGUpOgor
ICAgICAgICAoY3JlYXRlKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rp
c3QvY2pzL2hhbmRsZWJhcnMucnVudGltZS5qczogQWRkZWQuCisgICAgICAgIChfaW50ZXJvcFJl
cXVpcmVEZWZhdWx0KToKKyAgICAgICAgKF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKToKKyAgICAg
ICAgKGNyZWF0ZS5oYi50ZW1wbGF0ZSk6CisgICAgICAgIChjcmVhdGUpOgorICAgICAgICAqIFNw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkv
bm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9janMvaGFuZGxlYmFycy9iYXNlLmpzOiBBZGRl
ZC4KKyAgICAgICAgKF9pbnRlcm9wUmVxdWlyZURlZmF1bHQpOgorICAgICAgICAoSGFuZGxlYmFy
c0Vudmlyb25tZW50KToKKyAgICAgICAgKEhhbmRsZWJhcnNFbnZpcm9ubWVudC5wcm90b3R5cGUu
cmVnaXN0ZXJIZWxwZXIpOgorICAgICAgICAoSGFuZGxlYmFyc0Vudmlyb25tZW50LnByb3RvdHlw
ZS51bnJlZ2lzdGVySGVscGVyKToKKyAgICAgICAgKEhhbmRsZWJhcnNFbnZpcm9ubWVudC5wcm90
b3R5cGUucmVnaXN0ZXJQYXJ0aWFsKToKKyAgICAgICAgKEhhbmRsZWJhcnNFbnZpcm9ubWVudC5w
cm90b3R5cGUudW5yZWdpc3RlclBhcnRpYWwpOgorICAgICAgICAoSGFuZGxlYmFyc0Vudmlyb25t
ZW50LnByb3RvdHlwZS5yZWdpc3RlckRlY29yYXRvcik6CisgICAgICAgIChIYW5kbGViYXJzRW52
aXJvbm1lbnQucHJvdG90eXBlLnVucmVnaXN0ZXJEZWNvcmF0b3IpOgorICAgICAgICAqIFNwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9k
ZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9janMvaGFuZGxlYmFycy9jb21waWxlci9hc3QuanM6
IEFkZGVkLgorICAgICAgICAoQVNULmhlbHBlcnMuaGVscGVyRXhwcmVzc2lvbik6CisgICAgICAg
IChBU1QuaGVscGVycy5zY29wZWRJZCk6CisgICAgICAgIChBU1QuaGVscGVycy5zaW1wbGVJZCk6
CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2Nqcy9oYW5kbGViYXJz
L2NvbXBpbGVyL2Jhc2UuanM6IEFkZGVkLgorICAgICAgICAoX2ludGVyb3BSZXF1aXJlV2lsZGNh
cmQpOgorICAgICAgICAoX2ludGVyb3BSZXF1aXJlRGVmYXVsdCk6CisgICAgICAgICh5eS5sb2NJ
bmZvKToKKyAgICAgICAgKHBhcnNlKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGVi
YXJzL2Rpc3QvY2pzL2hhbmRsZWJhcnMvY29tcGlsZXIvY29kZS1nZW4uanM6IEFkZGVkLgorICAg
ICAgICAoY2F0Y2gpOgorICAgICAgICAoU291cmNlTm9kZS5Tb3VyY2VOb2RlKToKKyAgICAgICAg
KFNvdXJjZU5vZGUuU291cmNlTm9kZS5wcm90b3R5cGUuYWRkKToKKyAgICAgICAgKFNvdXJjZU5v
ZGUuU291cmNlTm9kZS5wcm90b3R5cGUucHJlcGVuZCk6CisgICAgICAgIChTb3VyY2VOb2RlLlNv
dXJjZU5vZGUucHJvdG90eXBlLnRvU3RyaW5nV2l0aFNvdXJjZU1hcCk6CisgICAgICAgIChTb3Vy
Y2VOb2RlLlNvdXJjZU5vZGUucHJvdG90eXBlLnRvU3RyaW5nKToKKyAgICAgICAgKGNhc3RDaHVu
ayk6CisgICAgICAgIChDb2RlR2VuKToKKyAgICAgICAgKENvZGVHZW4ucHJvdG90eXBlLmlzRW1w
dHkpOgorICAgICAgICAoQ29kZUdlbi5wcm90b3R5cGUucHJlcGVuZCk6CisgICAgICAgIChDb2Rl
R2VuLnByb3RvdHlwZS5wdXNoKToKKyAgICAgICAgKENvZGVHZW4ucHJvdG90eXBlLm1lcmdlKToK
KyAgICAgICAgKENvZGVHZW4ucHJvdG90eXBlLmVhY2gpOgorICAgICAgICAoQ29kZUdlbi5wcm90
b3R5cGUuZW1wdHkpOgorICAgICAgICAoQ29kZUdlbi5wcm90b3R5cGUud3JhcCk6CisgICAgICAg
IChDb2RlR2VuLnByb3RvdHlwZS5mdW5jdGlvbkNhbGwpOgorICAgICAgICAoQ29kZUdlbi5wcm90
b3R5cGUucXVvdGVkU3RyaW5nKToKKyAgICAgICAgKENvZGVHZW4ucHJvdG90eXBlKToKKyAgICAg
ICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
anF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvY2pzL2hhbmRsZWJhcnMvY29tcGls
ZXIvY29tcGlsZXIuanM6IEFkZGVkLgorICAgICAgICAoX2ludGVyb3BSZXF1aXJlRGVmYXVsdCk6
CisgICAgICAgIChDb21waWxlcik6CisgICAgICAgIChDb21waWxlci5wcm90b3R5cGUuZXF1YWxz
KToKKyAgICAgICAgKENvbXBpbGVyLnByb3RvdHlwZS5jb21waWxlKToKKyAgICAgICAgKENvbXBp
bGVyLnByb3RvdHlwZS5jb21waWxlUHJvZ3JhbSk6CisgICAgICAgIChDb21waWxlci5wcm90b3R5
cGUuYWNjZXB0KToKKyAgICAgICAgKENvbXBpbGVyLnByb3RvdHlwZS5Qcm9ncmFtKToKKyAgICAg
ICAgKENvbXBpbGVyLnByb3RvdHlwZS5CbG9ja1N0YXRlbWVudCk6CisgICAgICAgIChDb21waWxl
ci5wcm90b3R5cGUuRGVjb3JhdG9yQmxvY2spOgorICAgICAgICAoQ29tcGlsZXIucHJvdG90eXBl
LlBhcnRpYWxTdGF0ZW1lbnQpOgorICAgICAgICAoQ29tcGlsZXIucHJvdG90eXBlLlBhcnRpYWxC
bG9ja1N0YXRlbWVudCk6CisgICAgICAgIChDb21waWxlci5wcm90b3R5cGUuTXVzdGFjaGVTdGF0
ZW1lbnQpOgorICAgICAgICAoQ29tcGlsZXIucHJvdG90eXBlLkRlY29yYXRvcik6CisgICAgICAg
IChDb21waWxlci5wcm90b3R5cGUuQ29udGVudFN0YXRlbWVudCk6CisgICAgICAgIChDb21waWxl
ci5wcm90b3R5cGUuQ29tbWVudFN0YXRlbWVudCk6CisgICAgICAgIChDb21waWxlci5wcm90b3R5
cGUuU3ViRXhwcmVzc2lvbik6CisgICAgICAgIChDb21waWxlci5wcm90b3R5cGUuYW1iaWd1b3Vz
U2V4cHIpOgorICAgICAgICAoQ29tcGlsZXIucHJvdG90eXBlLnNpbXBsZVNleHByKToKKyAgICAg
ICAgKENvbXBpbGVyLnByb3RvdHlwZS5oZWxwZXJTZXhwcik6CisgICAgICAgIChDb21waWxlci5w
cm90b3R5cGUuUGF0aEV4cHJlc3Npb24pOgorICAgICAgICAoQ29tcGlsZXIucHJvdG90eXBlLlN0
cmluZ0xpdGVyYWwpOgorICAgICAgICAoQ29tcGlsZXIucHJvdG90eXBlLk51bWJlckxpdGVyYWwp
OgorICAgICAgICAoQ29tcGlsZXIucHJvdG90eXBlLkJvb2xlYW5MaXRlcmFsKToKKyAgICAgICAg
KENvbXBpbGVyLnByb3RvdHlwZS5VbmRlZmluZWRMaXRlcmFsKToKKyAgICAgICAgKENvbXBpbGVy
LnByb3RvdHlwZS5OdWxsTGl0ZXJhbCk6CisgICAgICAgIChDb21waWxlci5wcm90b3R5cGUuSGFz
aCk6CisgICAgICAgIChDb21waWxlci5wcm90b3R5cGUub3Bjb2RlKToKKyAgICAgICAgKENvbXBp
bGVyLnByb3RvdHlwZS5hZGREZXB0aCk6CisgICAgICAgIChDb21waWxlci5wcm90b3R5cGUuY2xh
c3NpZnlTZXhwcik6CisgICAgICAgIChDb21waWxlci5wcm90b3R5cGUucHVzaFBhcmFtcyk6Cisg
ICAgICAgIChDb21waWxlci5wcm90b3R5cGUucHVzaFBhcmFtKToKKyAgICAgICAgKENvbXBpbGVy
LnByb3RvdHlwZSk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2Nq
cy9oYW5kbGViYXJzL2NvbXBpbGVyL2hlbHBlcnMuanM6IEFkZGVkLgorICAgICAgICAoX2ludGVy
b3BSZXF1aXJlRGVmYXVsdCk6CisgICAgICAgICh2YWxpZGF0ZUNsb3NlKToKKyAgICAgICAgKFNv
dXJjZUxvY2F0aW9uKToKKyAgICAgICAgKGlkKToKKyAgICAgICAgKHN0cmlwRmxhZ3MpOgorICAg
ICAgICAoc3RyaXBDb21tZW50KToKKyAgICAgICAgKHByZXBhcmVQYXRoKToKKyAgICAgICAgKHBy
ZXBhcmVNdXN0YWNoZSk6CisgICAgICAgIChwcmVwYXJlUmF3QmxvY2spOgorICAgICAgICAocHJl
cGFyZUJsb2NrKToKKyAgICAgICAgKHByZXBhcmVQcm9ncmFtKToKKyAgICAgICAgKHByZXBhcmVQ
YXJ0aWFsQmxvY2spOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9j
anMvaGFuZGxlYmFycy9jb21waWxlci9qYXZhc2NyaXB0LWNvbXBpbGVyLmpzOiBBZGRlZC4KKyAg
ICAgICAgKF9pbnRlcm9wUmVxdWlyZURlZmF1bHQpOgorICAgICAgICAoTGl0ZXJhbCk6CisgICAg
ICAgIChKYXZhU2NyaXB0Q29tcGlsZXIpOgorICAgICAgICAoSmF2YVNjcmlwdENvbXBpbGVyLnBy
b3RvdHlwZS5uYW1lTG9va3VwKToKKyAgICAgICAgKEphdmFTY3JpcHRDb21waWxlci5wcm90b3R5
cGUuZGVwdGhlZExvb2t1cCk6CisgICAgICAgIChKYXZhU2NyaXB0Q29tcGlsZXIucHJvdG90eXBl
LmNvbXBpbGVySW5mbyk6CisgICAgICAgIChKYXZhU2NyaXB0Q29tcGlsZXIucHJvdG90eXBlLmFw
cGVuZFRvQnVmZmVyKToKKyAgICAgICAgKEphdmFTY3JpcHRDb21waWxlci5wcm90b3R5cGUuaW5p
dGlhbGl6ZUJ1ZmZlcik6CisgICAgICAgIChKYXZhU2NyaXB0Q29tcGlsZXIucHJvdG90eXBlLmNv
bXBpbGUpOgorICAgICAgICAoSmF2YVNjcmlwdENvbXBpbGVyLnByb3RvdHlwZS5wcmVhbWJsZSk6
CisgICAgICAgIChKYXZhU2NyaXB0Q29tcGlsZXIucHJvdG90eXBlLmNyZWF0ZUZ1bmN0aW9uQ29u
dGV4dCk6CisgICAgICAgIChKYXZhU2NyaXB0Q29tcGlsZXIucHJvdG90eXBlLm1lcmdlU291cmNl
KToKKyAgICAgICAgKEphdmFTY3JpcHRDb21waWxlci5wcm90b3R5cGUuYmxvY2tWYWx1ZSk6Cisg
ICAgICAgIChKYXZhU2NyaXB0Q29tcGlsZXIucHJvdG90eXBlLmFtYmlndW91c0Jsb2NrVmFsdWUp
OgorICAgICAgICAoSmF2YVNjcmlwdENvbXBpbGVyLnByb3RvdHlwZS5hcHBlbmRDb250ZW50KToK
KyAgICAgICAgKEphdmFTY3JpcHRDb21waWxlci5wcm90b3R5cGUuYXBwZW5kKToKKyAgICAgICAg
KEphdmFTY3JpcHRDb21waWxlci5wcm90b3R5cGUuYXBwZW5kRXNjYXBlZCk6CisgICAgICAgIChK
YXZhU2NyaXB0Q29tcGlsZXIucHJvdG90eXBlLmdldENvbnRleHQpOgorICAgICAgICAoSmF2YVNj
cmlwdENvbXBpbGVyLnByb3RvdHlwZS5wdXNoQ29udGV4dCk6CisgICAgICAgIChKYXZhU2NyaXB0
Q29tcGlsZXIucHJvdG90eXBlLmxvb2t1cE9uQ29udGV4dCk6CisgICAgICAgIChKYXZhU2NyaXB0
Q29tcGlsZXIucHJvdG90eXBlLmxvb2t1cEJsb2NrUGFyYW0pOgorICAgICAgICAoSmF2YVNjcmlw
dENvbXBpbGVyLnByb3RvdHlwZS5sb29rdXBEYXRhKToKKyAgICAgICAgKEphdmFTY3JpcHRDb21w
aWxlci5wcm90b3R5cGUucmVzb2x2ZVBhdGgpOgorICAgICAgICAoSmF2YVNjcmlwdENvbXBpbGVy
LnByb3RvdHlwZS5yZXNvbHZlUG9zc2libGVMYW1iZGEpOgorICAgICAgICAoSmF2YVNjcmlwdENv
bXBpbGVyLnByb3RvdHlwZS5wdXNoU3RyaW5nUGFyYW0pOgorICAgICAgICAoSmF2YVNjcmlwdENv
bXBpbGVyLnByb3RvdHlwZS5lbXB0eUhhc2gpOgorICAgICAgICAoSmF2YVNjcmlwdENvbXBpbGVy
LnByb3RvdHlwZS5wdXNoSGFzaCk6CisgICAgICAgIChKYXZhU2NyaXB0Q29tcGlsZXIucHJvdG90
eXBlLnBvcEhhc2gpOgorICAgICAgICAoSmF2YVNjcmlwdENvbXBpbGVyLnByb3RvdHlwZS5wdXNo
U3RyaW5nKToKKyAgICAgICAgKEphdmFTY3JpcHRDb21waWxlci5wcm90b3R5cGUucHVzaExpdGVy
YWwpOgorICAgICAgICAoSmF2YVNjcmlwdENvbXBpbGVyLnByb3RvdHlwZS5wdXNoUHJvZ3JhbSk6
CisgICAgICAgIChKYXZhU2NyaXB0Q29tcGlsZXIucHJvdG90eXBlLnJlZ2lzdGVyRGVjb3JhdG9y
KToKKyAgICAgICAgKEphdmFTY3JpcHRDb21waWxlci5wcm90b3R5cGUuaW52b2tlSGVscGVyKToK
KyAgICAgICAgKEphdmFTY3JpcHRDb21waWxlci5wcm90b3R5cGUuaW52b2tlS25vd25IZWxwZXIp
OgorICAgICAgICAoSmF2YVNjcmlwdENvbXBpbGVyLnByb3RvdHlwZS5pbnZva2VBbWJpZ3VvdXMp
OgorICAgICAgICAoSmF2YVNjcmlwdENvbXBpbGVyLnByb3RvdHlwZS5pbnZva2VQYXJ0aWFsKToK
KyAgICAgICAgKEphdmFTY3JpcHRDb21waWxlci5wcm90b3R5cGUuYXNzaWduVG9IYXNoKToKKyAg
ICAgICAgKEphdmFTY3JpcHRDb21waWxlci5wcm90b3R5cGUucHVzaElkKToKKyAgICAgICAgKEph
dmFTY3JpcHRDb21waWxlci5wcm90b3R5cGUuY29tcGlsZUNoaWxkcmVuKToKKyAgICAgICAgKEph
dmFTY3JpcHRDb21waWxlci5wcm90b3R5cGUubWF0Y2hFeGlzdGluZ1Byb2dyYW0pOgorICAgICAg
ICAoSmF2YVNjcmlwdENvbXBpbGVyLnByb3RvdHlwZS5wcm9ncmFtRXhwcmVzc2lvbik6CisgICAg
ICAgIChKYXZhU2NyaXB0Q29tcGlsZXIucHJvdG90eXBlLnVzZVJlZ2lzdGVyKToKKyAgICAgICAg
KEphdmFTY3JpcHRDb21waWxlci5wcm90b3R5cGUucHVzaCk6CisgICAgICAgIChKYXZhU2NyaXB0
Q29tcGlsZXIucHJvdG90eXBlLnB1c2hTdGFja0xpdGVyYWwpOgorICAgICAgICAoSmF2YVNjcmlw
dENvbXBpbGVyLnByb3RvdHlwZS5wdXNoU291cmNlKToKKyAgICAgICAgKEphdmFTY3JpcHRDb21w
aWxlci5wcm90b3R5cGUucmVwbGFjZVN0YWNrKToKKyAgICAgICAgKEphdmFTY3JpcHRDb21waWxl
ci5wcm90b3R5cGUuaW5jclN0YWNrKToKKyAgICAgICAgKEphdmFTY3JpcHRDb21waWxlci5wcm90
b3R5cGUudG9wU3RhY2tOYW1lKToKKyAgICAgICAgKEphdmFTY3JpcHRDb21waWxlci5wcm90b3R5
cGUuZmx1c2hJbmxpbmUpOgorICAgICAgICAoSmF2YVNjcmlwdENvbXBpbGVyLnByb3RvdHlwZS5p
c0lubGluZSk6CisgICAgICAgIChKYXZhU2NyaXB0Q29tcGlsZXIucHJvdG90eXBlLnBvcFN0YWNr
KToKKyAgICAgICAgKEphdmFTY3JpcHRDb21waWxlci5wcm90b3R5cGUudG9wU3RhY2spOgorICAg
ICAgICAoSmF2YVNjcmlwdENvbXBpbGVyLnByb3RvdHlwZS5jb250ZXh0TmFtZSk6CisgICAgICAg
IChKYXZhU2NyaXB0Q29tcGlsZXIucHJvdG90eXBlLnF1b3RlZFN0cmluZyk6CisgICAgICAgIChK
YXZhU2NyaXB0Q29tcGlsZXIucHJvdG90eXBlLm9iamVjdExpdGVyYWwpOgorICAgICAgICAoSmF2
YVNjcmlwdENvbXBpbGVyLnByb3RvdHlwZS5hbGlhc2FibGUpOgorICAgICAgICAoSmF2YVNjcmlw
dENvbXBpbGVyLnByb3RvdHlwZS5zZXR1cEhlbHBlcik6CisgICAgICAgIChKYXZhU2NyaXB0Q29t
cGlsZXIucHJvdG90eXBlLnNldHVwUGFyYW1zKToKKyAgICAgICAgKEphdmFTY3JpcHRDb21waWxl
ci5wcm90b3R5cGUuc2V0dXBIZWxwZXJBcmdzKToKKyAgICAgICAgKEphdmFTY3JpcHRDb21waWxl
ci5pc1ZhbGlkSmF2YVNjcmlwdFZhcmlhYmxlTmFtZSk6CisgICAgICAgIChzdHJpY3RMb29rdXAp
OgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9janMvaGFuZGxlYmFy
cy9jb21waWxlci9wYXJzZXIuanM6IEFkZGVkLgorICAgICAgICAocGFyc2VyLnRyYWNlKToKKyAg
ICAgICAgKHBhcnNlci5wZXJmb3JtQWN0aW9uKToKKyAgICAgICAgKHBhcnNlci5wYXJzZUVycm9y
KToKKyAgICAgICAgKHBhcnNlci5wYXJzZS5wYXJzZS5wb3BTdGFjayk6CisgICAgICAgIChwYXJz
ZXIucGFyc2UucGFyc2UubGV4KToKKyAgICAgICAgKHBhcnNlci5wYXJzZSk6CisgICAgICAgIChQ
YXJzZXIpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9janMvaGFu
ZGxlYmFycy9jb21waWxlci9wcmludGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKF9pbnRlcm9wUmVx
dWlyZURlZmF1bHQpOgorICAgICAgICAocHJpbnQpOgorICAgICAgICAoUHJpbnRWaXNpdG9yKToK
KyAgICAgICAgKFByaW50VmlzaXRvci5wcm90b3R5cGUucGFkKToKKyAgICAgICAgKFByaW50Vmlz
aXRvci5wcm90b3R5cGUuUHJvZ3JhbSk6CisgICAgICAgIChQcmludFZpc2l0b3IucHJvdG90eXBl
Lk11c3RhY2hlU3RhdGVtZW50KToKKyAgICAgICAgKFByaW50VmlzaXRvci5wcm90b3R5cGUuRGVj
b3JhdG9yKToKKyAgICAgICAgKFByaW50VmlzaXRvci5wcm90b3R5cGUuQmxvY2tTdGF0ZW1lbnQu
UHJpbnRWaXNpdG9yLnByb3RvdHlwZS5EZWNvcmF0b3JCbG9jayk6CisgICAgICAgIChQcmludFZp
c2l0b3IucHJvdG90eXBlLlBhcnRpYWxTdGF0ZW1lbnQpOgorICAgICAgICAoUHJpbnRWaXNpdG9y
LnByb3RvdHlwZS5QYXJ0aWFsQmxvY2tTdGF0ZW1lbnQpOgorICAgICAgICAoUHJpbnRWaXNpdG9y
LnByb3RvdHlwZS5Db250ZW50U3RhdGVtZW50KToKKyAgICAgICAgKFByaW50VmlzaXRvci5wcm90
b3R5cGUuQ29tbWVudFN0YXRlbWVudCk6CisgICAgICAgIChQcmludFZpc2l0b3IucHJvdG90eXBl
LlN1YkV4cHJlc3Npb24pOgorICAgICAgICAoUHJpbnRWaXNpdG9yLnByb3RvdHlwZS5QYXRoRXhw
cmVzc2lvbik6CisgICAgICAgIChQcmludFZpc2l0b3IucHJvdG90eXBlLlN0cmluZ0xpdGVyYWwp
OgorICAgICAgICAoUHJpbnRWaXNpdG9yLnByb3RvdHlwZS5OdW1iZXJMaXRlcmFsKToKKyAgICAg
ICAgKFByaW50VmlzaXRvci5wcm90b3R5cGUuQm9vbGVhbkxpdGVyYWwpOgorICAgICAgICAoUHJp
bnRWaXNpdG9yLnByb3RvdHlwZS5VbmRlZmluZWRMaXRlcmFsKToKKyAgICAgICAgKFByaW50Vmlz
aXRvci5wcm90b3R5cGUuTnVsbExpdGVyYWwpOgorICAgICAgICAoUHJpbnRWaXNpdG9yLnByb3Rv
dHlwZS5IYXNoKToKKyAgICAgICAgKFByaW50VmlzaXRvci5wcm90b3R5cGUuSGFzaFBhaXIpOgor
ICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9janMvaGFuZGxlYmFycy9j
b21waWxlci92aXNpdG9yLmpzOiBBZGRlZC4KKyAgICAgICAgKF9pbnRlcm9wUmVxdWlyZURlZmF1
bHQpOgorICAgICAgICAoVmlzaXRvcik6CisgICAgICAgIChWaXNpdG9yLnByb3RvdHlwZS5hY2Nl
cHRLZXkpOgorICAgICAgICAoVmlzaXRvci5wcm90b3R5cGUuYWNjZXB0UmVxdWlyZWQpOgorICAg
ICAgICAoVmlzaXRvci5wcm90b3R5cGUuYWNjZXB0QXJyYXkpOgorICAgICAgICAoVmlzaXRvci5w
cm90b3R5cGUuYWNjZXB0KToKKyAgICAgICAgKFZpc2l0b3IucHJvdG90eXBlLlByb2dyYW0pOgor
ICAgICAgICAoVmlzaXRvci5wcm90b3R5cGUuUGFydGlhbEJsb2NrU3RhdGVtZW50KToKKyAgICAg
ICAgKFZpc2l0b3IucHJvdG90eXBlLkNvbnRlbnRTdGF0ZW1lbnQpOgorICAgICAgICAoVmlzaXRv
ci5wcm90b3R5cGUuQ29tbWVudFN0YXRlbWVudCk6CisgICAgICAgIChWaXNpdG9yLnByb3RvdHlw
ZS5QYXRoRXhwcmVzc2lvbik6CisgICAgICAgIChWaXNpdG9yLnByb3RvdHlwZS5TdHJpbmdMaXRl
cmFsKToKKyAgICAgICAgKFZpc2l0b3IucHJvdG90eXBlLk51bWJlckxpdGVyYWwpOgorICAgICAg
ICAoVmlzaXRvci5wcm90b3R5cGUuQm9vbGVhbkxpdGVyYWwpOgorICAgICAgICAoVmlzaXRvci5w
cm90b3R5cGUuVW5kZWZpbmVkTGl0ZXJhbCk6CisgICAgICAgIChWaXNpdG9yLnByb3RvdHlwZS5O
dWxsTGl0ZXJhbCk6CisgICAgICAgIChWaXNpdG9yLnByb3RvdHlwZS5IYXNoKToKKyAgICAgICAg
KFZpc2l0b3IucHJvdG90eXBlLkhhc2hQYWlyKToKKyAgICAgICAgKHZpc2l0U3ViRXhwcmVzc2lv
bik6CisgICAgICAgICh2aXNpdEJsb2NrKToKKyAgICAgICAgKHZpc2l0UGFydGlhbCk6CisgICAg
ICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2Nqcy9oYW5kbGViYXJzL2NvbXBp
bGVyL3doaXRlc3BhY2UtY29udHJvbC5qczogQWRkZWQuCisgICAgICAgIChfaW50ZXJvcFJlcXVp
cmVEZWZhdWx0KToKKyAgICAgICAgKFdoaXRlc3BhY2VDb250cm9sKToKKyAgICAgICAgKFdoaXRl
c3BhY2VDb250cm9sLnByb3RvdHlwZS5Qcm9ncmFtKToKKyAgICAgICAgKFdoaXRlc3BhY2VDb250
cm9sLnByb3RvdHlwZS5CbG9ja1N0YXRlbWVudC5XaGl0ZXNwYWNlQ29udHJvbC5wcm90b3R5cGUu
RGVjb3JhdG9yQmxvY2suV2hpdGVzcGFjZUNvbnRyb2wucHJvdG90eXBlLlBhcnRpYWxCbG9ja1N0
YXRlbWVudCk6CisgICAgICAgIChXaGl0ZXNwYWNlQ29udHJvbC5wcm90b3R5cGUuRGVjb3JhdG9y
LldoaXRlc3BhY2VDb250cm9sLnByb3RvdHlwZS5NdXN0YWNoZVN0YXRlbWVudCk6CisgICAgICAg
IChXaGl0ZXNwYWNlQ29udHJvbC5wcm90b3R5cGUuUGFydGlhbFN0YXRlbWVudC5XaGl0ZXNwYWNl
Q29udHJvbC5wcm90b3R5cGUuQ29tbWVudFN0YXRlbWVudCk6CisgICAgICAgIChpc1ByZXZXaGl0
ZXNwYWNlKToKKyAgICAgICAgKGlzTmV4dFdoaXRlc3BhY2UpOgorICAgICAgICAob21pdFJpZ2h0
KToKKyAgICAgICAgKG9taXRMZWZ0KToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGVi
YXJzL2Rpc3QvY2pzL2hhbmRsZWJhcnMvZGVjb3JhdG9ycy5qczogQWRkZWQuCisgICAgICAgIChf
aW50ZXJvcFJlcXVpcmVEZWZhdWx0KToKKyAgICAgICAgKHJlZ2lzdGVyRGVmYXVsdERlY29yYXRv
cnMpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9janMvaGFuZGxl
YmFycy9kZWNvcmF0b3JzL2lubGluZS5qczogQWRkZWQuCisgICAgICAgIChleHBvcnRzLnN0cmlu
Z19hcHBlYXJlZF9oZXJlKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rp
c3QvY2pzL2hhbmRsZWJhcnMvZXhjZXB0aW9uLmpzOiBBZGRlZC4KKyAgICAgICAgKEV4Y2VwdGlv
bik6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2Nqcy9oYW5kbGVi
YXJzL2hlbHBlcnMuanM6IEFkZGVkLgorICAgICAgICAoX2ludGVyb3BSZXF1aXJlRGVmYXVsdCk6
CisgICAgICAgIChyZWdpc3RlckRlZmF1bHRIZWxwZXJzKToKKyAgICAgICAgKiBTcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9k
dWxlcy9oYW5kbGViYXJzL2Rpc3QvY2pzL2hhbmRsZWJhcnMvaGVscGVycy9ibG9jay1oZWxwZXIt
bWlzc2luZy5qczogQWRkZWQuCisgICAgICAgIChleHBvcnRzLnN0cmluZ19hcHBlYXJlZF9oZXJl
KToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvY2pzL2hhbmRsZWJh
cnMvaGVscGVycy9lYWNoLmpzOiBBZGRlZC4KKyAgICAgICAgKF9pbnRlcm9wUmVxdWlyZURlZmF1
bHQpOgorICAgICAgICAoZXhwb3J0cy5zdHJpbmdfYXBwZWFyZWRfaGVyZSk6CisgICAgICAgICog
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVy
eS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2Nqcy9oYW5kbGViYXJzL2hlbHBlcnMvaGVs
cGVyLW1pc3NpbmcuanM6IEFkZGVkLgorICAgICAgICAoX2ludGVyb3BSZXF1aXJlRGVmYXVsdCk6
CisgICAgICAgIChleHBvcnRzLnN0cmluZ19hcHBlYXJlZF9oZXJlKToKKyAgICAgICAgKiBTcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25v
ZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvY2pzL2hhbmRsZWJhcnMvaGVscGVycy9pZi5qczog
QWRkZWQuCisgICAgICAgIChleHBvcnRzLnN0cmluZ19hcHBlYXJlZF9oZXJlKToKKyAgICAgICAg
KiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1
ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvY2pzL2hhbmRsZWJhcnMvaGVscGVycy9s
b2cuanM6IEFkZGVkLgorICAgICAgICAoZXhwb3J0cy5zdHJpbmdfYXBwZWFyZWRfaGVyZSk6Cisg
ICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2Nqcy9oYW5kbGViYXJzL2hl
bHBlcnMvbG9va3VwLmpzOiBBZGRlZC4KKyAgICAgICAgKGV4cG9ydHMuc3RyaW5nX2FwcGVhcmVk
X2hlcmUpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9janMvaGFu
ZGxlYmFycy9oZWxwZXJzL3dpdGguanM6IEFkZGVkLgorICAgICAgICAoZXhwb3J0cy5zdHJpbmdf
YXBwZWFyZWRfaGVyZSk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0
L2Nqcy9oYW5kbGViYXJzL2xvZ2dlci5qczogQWRkZWQuCisgICAgICAgIChsb2dnZXIubG9va3Vw
TGV2ZWwpOgorICAgICAgICAobG9nZ2VyLmxvZyk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMv
aGFuZGxlYmFycy9kaXN0L2Nqcy9oYW5kbGViYXJzL25vLWNvbmZsaWN0LmpzOiBBZGRlZC4KKyAg
ICAgICAgKEhhbmRsZWJhcnMubm9Db25mbGljdCk6CisgICAgICAgIChleHBvcnRzLnN0cmluZ19h
cHBlYXJlZF9oZXJlKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3Qv
Y2pzL2hhbmRsZWJhcnMvcnVudGltZS5qczogQWRkZWQuCisgICAgICAgIChfaW50ZXJvcFJlcXVp
cmVEZWZhdWx0KToKKyAgICAgICAgKF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKToKKyAgICAgICAg
KGNoZWNrUmV2aXNpb24pOgorICAgICAgICAoaW52b2tlUGFydGlhbFdyYXBwZXIpOgorICAgICAg
ICAoY29udGFpbmVyLnN0cmljdCk6CisgICAgICAgIChjb250YWluZXIubG9va3VwKToKKyAgICAg
ICAgKGNvbnRhaW5lci5sYW1iZGEpOgorICAgICAgICAoY29udGFpbmVyLmZuKToKKyAgICAgICAg
KGNvbnRhaW5lci5wcm9ncmFtKToKKyAgICAgICAgKGNvbnRhaW5lci5kYXRhKToKKyAgICAgICAg
KGNvbnRhaW5lci5tZXJnZSk6CisgICAgICAgIChyZXQubWFpbik6CisgICAgICAgIChyZXQpOgor
ICAgICAgICAocmV0Ll9zZXR1cCk6CisgICAgICAgIChyZXQuX2NoaWxkKToKKyAgICAgICAgKHRl
bXBsYXRlKToKKyAgICAgICAgKHByb2cpOgorICAgICAgICAod3JhcFByb2dyYW0pOgorICAgICAg
ICAocmVzb2x2ZVBhcnRpYWwpOgorICAgICAgICAoaW52b2tlUGFydGlhbCk6CisgICAgICAgIChu
b29wKToKKyAgICAgICAgKGluaXREYXRhKToKKyAgICAgICAgKGV4ZWN1dGVEZWNvcmF0b3JzKToK
KyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvY2pzL2hhbmRsZWJhcnMv
c2FmZS1zdHJpbmcuanM6IEFkZGVkLgorICAgICAgICAoU2FmZVN0cmluZyk6CisgICAgICAgIChT
YWZlU3RyaW5nLnByb3RvdHlwZS50b1N0cmluZy5TYWZlU3RyaW5nLnByb3RvdHlwZS50b0hUTUwp
OgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9janMvaGFuZGxlYmFy
cy91dGlscy5qczogQWRkZWQuCisgICAgICAgIChiYWRDaGFycy5wb3NzaWJsZSk6CisgICAgICAg
IChleHRlbmQpOgorICAgICAgICAoaXNGdW5jdGlvbik6CisgICAgICAgIChpc0Z1bmN0aW9uLmV4
cG9ydHMuaXNGdW5jdGlvbi5pc0Z1bmN0aW9uKToKKyAgICAgICAgKGlzQXJyYXkuQXJyYXkuaXNB
cnJheSk6CisgICAgICAgIChpbmRleE9mKToKKyAgICAgICAgKGVzY2FwZUV4cHJlc3Npb24pOgor
ICAgICAgICAoaXNFbXB0eSk6CisgICAgICAgIChjcmVhdGVGcmFtZSk6CisgICAgICAgIChibG9j
a1BhcmFtcyk6CisgICAgICAgIChhcHBlbmRDb250ZXh0UGF0aCk6CisgICAgICAgICogU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2Rl
X21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2Nqcy9wcmVjb21waWxlci5qczogQWRkZWQuCisgICAg
ICAgIChfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCk6CisgICAgICAgIChfaW50ZXJvcFJlcXVpcmVE
ZWZhdWx0KToKKyAgICAgICAgKG1vZHVsZS5leHBvcnRzLmxvYWRUZW1wbGF0ZXMpOgorICAgICAg
ICAobW9kdWxlLmV4cG9ydHMuY2xpKToKKyAgICAgICAgKGFycmF5Q2FzdCk6CisgICAgICAgICog
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVy
eS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2hhbmRsZWJhcnMuYW1kLmpzOiBBZGRlZC4K
KyAgICAgICAgKGJhZENoYXJzLnBvc3NpYmxlKToKKyAgICAgICAgKGV4dGVuZCk6CisgICAgICAg
IChpc0Z1bmN0aW9uKToKKyAgICAgICAgKGlzRnVuY3Rpb24uZXhwb3J0cy5pc0Z1bmN0aW9uLmlz
RnVuY3Rpb24pOgorICAgICAgICAoaXNBcnJheS5BcnJheS5pc0FycmF5KToKKyAgICAgICAgKGlu
ZGV4T2YpOgorICAgICAgICAoZXNjYXBlRXhwcmVzc2lvbik6CisgICAgICAgIChpc0VtcHR5KToK
KyAgICAgICAgKGNyZWF0ZUZyYW1lKToKKyAgICAgICAgKGJsb2NrUGFyYW1zKToKKyAgICAgICAg
KGFwcGVuZENvbnRleHRQYXRoKToKKyAgICAgICAgKEV4Y2VwdGlvbik6CisgICAgICAgIChtb2R1
bGUuZXhwb3J0cyk6CisgICAgICAgIChfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KToKKyAgICAgICAg
KHJlZ2lzdGVyRGVmYXVsdEhlbHBlcnMpOgorICAgICAgICAocmVnaXN0ZXJEZWZhdWx0RGVjb3Jh
dG9ycyk6CisgICAgICAgIChsb2dnZXIubG9va3VwTGV2ZWwpOgorICAgICAgICAobG9nZ2VyLmxv
Zyk6CisgICAgICAgIChIYW5kbGViYXJzRW52aXJvbm1lbnQpOgorICAgICAgICAoSGFuZGxlYmFy
c0Vudmlyb25tZW50LnByb3RvdHlwZS5yZWdpc3RlckhlbHBlcik6CisgICAgICAgIChIYW5kbGVi
YXJzRW52aXJvbm1lbnQucHJvdG90eXBlLnVucmVnaXN0ZXJIZWxwZXIpOgorICAgICAgICAoSGFu
ZGxlYmFyc0Vudmlyb25tZW50LnByb3RvdHlwZS5yZWdpc3RlclBhcnRpYWwpOgorICAgICAgICAo
SGFuZGxlYmFyc0Vudmlyb25tZW50LnByb3RvdHlwZS51bnJlZ2lzdGVyUGFydGlhbCk6CisgICAg
ICAgIChIYW5kbGViYXJzRW52aXJvbm1lbnQucHJvdG90eXBlLnJlZ2lzdGVyRGVjb3JhdG9yKToK
KyAgICAgICAgKEhhbmRsZWJhcnNFbnZpcm9ubWVudC5wcm90b3R5cGUudW5yZWdpc3RlckRlY29y
YXRvcik6CisgICAgICAgIChTYWZlU3RyaW5nKToKKyAgICAgICAgKFNhZmVTdHJpbmcucHJvdG90
eXBlLnRvU3RyaW5nLlNhZmVTdHJpbmcucHJvdG90eXBlLnRvSFRNTCk6CisgICAgICAgIChjaGVj
a1JldmlzaW9uKToKKyAgICAgICAgKGludm9rZVBhcnRpYWxXcmFwcGVyKToKKyAgICAgICAgKGNv
bnRhaW5lci5zdHJpY3QpOgorICAgICAgICAoY29udGFpbmVyLmxvb2t1cCk6CisgICAgICAgIChj
b250YWluZXIubGFtYmRhKToKKyAgICAgICAgKGNvbnRhaW5lci5mbik6CisgICAgICAgIChjb250
YWluZXIucHJvZ3JhbSk6CisgICAgICAgIChjb250YWluZXIuZGF0YSk6CisgICAgICAgIChjb250
YWluZXIubWVyZ2UpOgorICAgICAgICAocmV0Lm1haW4pOgorICAgICAgICAocmV0KToKKyAgICAg
ICAgKHJldC5fc2V0dXApOgorICAgICAgICAocmV0Ll9jaGlsZCk6CisgICAgICAgICh0ZW1wbGF0
ZSk6CisgICAgICAgIChwcm9nKToKKyAgICAgICAgKHdyYXBQcm9ncmFtKToKKyAgICAgICAgKHJl
c29sdmVQYXJ0aWFsKToKKyAgICAgICAgKGludm9rZVBhcnRpYWwpOgorICAgICAgICAobm9vcCk6
CisgICAgICAgIChpbml0RGF0YSk6CisgICAgICAgIChleGVjdXRlRGVjb3JhdG9ycyk6CisgICAg
ICAgIChIYW5kbGViYXJzLm5vQ29uZmxpY3QpOgorICAgICAgICAoY3JlYXRlLmhiLnRlbXBsYXRl
KToKKyAgICAgICAgKGNyZWF0ZSk6CisgICAgICAgIChBU1QuaGVscGVycy5oZWxwZXJFeHByZXNz
aW9uKToKKyAgICAgICAgKEFTVC5oZWxwZXJzLnNjb3BlZElkKToKKyAgICAgICAgKEFTVC5oZWxw
ZXJzLnNpbXBsZUlkKToKKyAgICAgICAgKHBhcnNlci50cmFjZSk6CisgICAgICAgIChwYXJzZXIu
cGVyZm9ybUFjdGlvbik6CisgICAgICAgIChwYXJzZXIucGFyc2VFcnJvcik6CisgICAgICAgIChw
YXJzZXIucGFyc2UucGFyc2UucG9wU3RhY2spOgorICAgICAgICAocGFyc2VyLnBhcnNlLnBhcnNl
LmxleCk6CisgICAgICAgIChwYXJzZXIucGFyc2UpOgorICAgICAgICAoUGFyc2VyKToKKyAgICAg
ICAgKFZpc2l0b3IpOgorICAgICAgICAoVmlzaXRvci5wcm90b3R5cGUuYWNjZXB0S2V5KToKKyAg
ICAgICAgKFZpc2l0b3IucHJvdG90eXBlLmFjY2VwdFJlcXVpcmVkKToKKyAgICAgICAgKFZpc2l0
b3IucHJvdG90eXBlLmFjY2VwdEFycmF5KToKKyAgICAgICAgKFZpc2l0b3IucHJvdG90eXBlLmFj
Y2VwdCk6CisgICAgICAgIChWaXNpdG9yLnByb3RvdHlwZS5Qcm9ncmFtKToKKyAgICAgICAgKFZp
c2l0b3IucHJvdG90eXBlLlBhcnRpYWxCbG9ja1N0YXRlbWVudCk6CisgICAgICAgIChWaXNpdG9y
LnByb3RvdHlwZS5Db250ZW50U3RhdGVtZW50KToKKyAgICAgICAgKFZpc2l0b3IucHJvdG90eXBl
LkNvbW1lbnRTdGF0ZW1lbnQpOgorICAgICAgICAoVmlzaXRvci5wcm90b3R5cGUuUGF0aEV4cHJl
c3Npb24pOgorICAgICAgICAoVmlzaXRvci5wcm90b3R5cGUuU3RyaW5nTGl0ZXJhbCk6CisgICAg
ICAgIChWaXNpdG9yLnByb3RvdHlwZS5OdW1iZXJMaXRlcmFsKToKKyAgICAgICAgKFZpc2l0b3Iu
cHJvdG90eXBlLkJvb2xlYW5MaXRlcmFsKToKKyAgICAgICAgKFZpc2l0b3IucHJvdG90eXBlLlVu
ZGVmaW5lZExpdGVyYWwpOgorICAgICAgICAoVmlzaXRvci5wcm90b3R5cGUuTnVsbExpdGVyYWwp
OgorICAgICAgICAoVmlzaXRvci5wcm90b3R5cGUuSGFzaCk6CisgICAgICAgIChWaXNpdG9yLnBy
b3RvdHlwZS5IYXNoUGFpcik6CisgICAgICAgICh2aXNpdFN1YkV4cHJlc3Npb24pOgorICAgICAg
ICAodmlzaXRCbG9jayk6CisgICAgICAgICh2aXNpdFBhcnRpYWwpOgorICAgICAgICAoV2hpdGVz
cGFjZUNvbnRyb2wpOgorICAgICAgICAoV2hpdGVzcGFjZUNvbnRyb2wucHJvdG90eXBlLlByb2dy
YW0pOgorICAgICAgICAoV2hpdGVzcGFjZUNvbnRyb2wucHJvdG90eXBlLkJsb2NrU3RhdGVtZW50
LldoaXRlc3BhY2VDb250cm9sLnByb3RvdHlwZS5EZWNvcmF0b3JCbG9jay5XaGl0ZXNwYWNlQ29u
dHJvbC5wcm90b3R5cGUuUGFydGlhbEJsb2NrU3RhdGVtZW50KToKKyAgICAgICAgKFdoaXRlc3Bh
Y2VDb250cm9sLnByb3RvdHlwZS5EZWNvcmF0b3IuV2hpdGVzcGFjZUNvbnRyb2wucHJvdG90eXBl
Lk11c3RhY2hlU3RhdGVtZW50KToKKyAgICAgICAgKFdoaXRlc3BhY2VDb250cm9sLnByb3RvdHlw
ZS5QYXJ0aWFsU3RhdGVtZW50LldoaXRlc3BhY2VDb250cm9sLnByb3RvdHlwZS5Db21tZW50U3Rh
dGVtZW50KToKKyAgICAgICAgKGlzUHJldldoaXRlc3BhY2UpOgorICAgICAgICAoaXNOZXh0V2hp
dGVzcGFjZSk6CisgICAgICAgIChvbWl0UmlnaHQpOgorICAgICAgICAob21pdExlZnQpOgorICAg
ICAgICAodmFsaWRhdGVDbG9zZSk6CisgICAgICAgIChTb3VyY2VMb2NhdGlvbik6CisgICAgICAg
IChpZCk6CisgICAgICAgIChzdHJpcEZsYWdzKToKKyAgICAgICAgKHN0cmlwQ29tbWVudCk6Cisg
ICAgICAgIChwcmVwYXJlUGF0aCk6CisgICAgICAgIChwcmVwYXJlTXVzdGFjaGUpOgorICAgICAg
ICAocHJlcGFyZVJhd0Jsb2NrKToKKyAgICAgICAgKHByZXBhcmVCbG9jayk6CisgICAgICAgIChw
cmVwYXJlUHJvZ3JhbSk6CisgICAgICAgIChwcmVwYXJlUGFydGlhbEJsb2NrKToKKyAgICAgICAg
KG9wdGlvbnMueXkubG9jSW5mbyk6CisgICAgICAgIChwYXJzZSk6CisgICAgICAgIChDb21waWxl
cik6CisgICAgICAgIChDb21waWxlci5wcm90b3R5cGUuZXF1YWxzKToKKyAgICAgICAgKENvbXBp
bGVyLnByb3RvdHlwZS5jb21waWxlKToKKyAgICAgICAgKENvbXBpbGVyLnByb3RvdHlwZS5jb21w
aWxlUHJvZ3JhbSk6CisgICAgICAgIChDb21waWxlci5wcm90b3R5cGUuYWNjZXB0KToKKyAgICAg
ICAgKENvbXBpbGVyLnByb3RvdHlwZS5Qcm9ncmFtKToKKyAgICAgICAgKENvbXBpbGVyLnByb3Rv
dHlwZS5CbG9ja1N0YXRlbWVudCk6CisgICAgICAgIChDb21waWxlci5wcm90b3R5cGUuRGVjb3Jh
dG9yQmxvY2spOgorICAgICAgICAoQ29tcGlsZXIucHJvdG90eXBlLlBhcnRpYWxTdGF0ZW1lbnQp
OgorICAgICAgICAoQ29tcGlsZXIucHJvdG90eXBlLlBhcnRpYWxCbG9ja1N0YXRlbWVudCk6Cisg
ICAgICAgIChDb21waWxlci5wcm90b3R5cGUuTXVzdGFjaGVTdGF0ZW1lbnQpOgorICAgICAgICAo
Q29tcGlsZXIucHJvdG90eXBlLkRlY29yYXRvcik6CisgICAgICAgIChDb21waWxlci5wcm90b3R5
cGUuQ29udGVudFN0YXRlbWVudCk6CisgICAgICAgIChDb21waWxlci5wcm90b3R5cGUuQ29tbWVu
dFN0YXRlbWVudCk6CisgICAgICAgIChDb21waWxlci5wcm90b3R5cGUuU3ViRXhwcmVzc2lvbik6
CisgICAgICAgIChDb21waWxlci5wcm90b3R5cGUuYW1iaWd1b3VzU2V4cHIpOgorICAgICAgICAo
Q29tcGlsZXIucHJvdG90eXBlLnNpbXBsZVNleHByKToKKyAgICAgICAgKENvbXBpbGVyLnByb3Rv
dHlwZS5oZWxwZXJTZXhwcik6CisgICAgICAgIChDb21waWxlci5wcm90b3R5cGUuUGF0aEV4cHJl
c3Npb24pOgorICAgICAgICAoQ29tcGlsZXIucHJvdG90eXBlLlN0cmluZ0xpdGVyYWwpOgorICAg
ICAgICAoQ29tcGlsZXIucHJvdG90eXBlLk51bWJlckxpdGVyYWwpOgorICAgICAgICAoQ29tcGls
ZXIucHJvdG90eXBlLkJvb2xlYW5MaXRlcmFsKToKKyAgICAgICAgKENvbXBpbGVyLnByb3RvdHlw
ZS5VbmRlZmluZWRMaXRlcmFsKToKKyAgICAgICAgKENvbXBpbGVyLnByb3RvdHlwZS5OdWxsTGl0
ZXJhbCk6CisgICAgICAgIChDb21waWxlci5wcm90b3R5cGUuSGFzaCk6CisgICAgICAgIChDb21w
aWxlci5wcm90b3R5cGUub3Bjb2RlKToKKyAgICAgICAgKENvbXBpbGVyLnByb3RvdHlwZS5hZGRE
ZXB0aCk6CisgICAgICAgIChDb21waWxlci5wcm90b3R5cGUuY2xhc3NpZnlTZXhwcik6CisgICAg
ICAgIChDb21waWxlci5wcm90b3R5cGUucHVzaFBhcmFtcyk6CisgICAgICAgIChDb21waWxlci5w
cm90b3R5cGUucHVzaFBhcmFtKToKKyAgICAgICAgKENvbXBpbGVyLnByb3RvdHlwZSk6CisgICAg
ICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2hhbmRsZWJhcnMuYW1kLm1pbi5q
czogQWRkZWQuCisgICAgICAgIChiKToKKyAgICAgICAgKGMpOgorICAgICAgICAoZCk6CisgICAg
ICAgIChlKToKKyAgICAgICAgKGYpOgorICAgICAgICAoaCk6CisgICAgICAgIChpKToKKyAgICAg
ICAgKHRoaXMuZGVmYXVsdEFjdGlvbnMucC5xLnRoaXMuZGVmYXVsdEFjdGlvbnMucC5udWxsLm4u
c3RyaW5nX2FwcGVhcmVkX2hlcmUudHlwZW9mLm4ubi5iKToKKyAgICAgICAgKHN3aXRjaCk6Cisg
ICAgICAgIChhLnBhcnNlRXJyb3IpOgorICAgICAgICAoYS5zZXRJbnB1dCk6CisgICAgICAgIChh
LmlucHV0KToKKyAgICAgICAgKGEudW5wdXQpOgorICAgICAgICAoYS5tb3JlKToKKyAgICAgICAg
KGEubGVzcyk6CisgICAgICAgIChhLnBhc3RJbnB1dCk6CisgICAgICAgIChhLnVwY29taW5nSW5w
dXQpOgorICAgICAgICAoYS5zaG93UG9zaXRpb24pOgorICAgICAgICAoYS5uZXh0KToKKyAgICAg
ICAgKGEubGV4KToKKyAgICAgICAgKGEuYmVnaW4pOgorICAgICAgICAoYS5wb3BTdGF0ZSk6Cisg
ICAgICAgIChhLl9jdXJyZW50UnVsZXMpOgorICAgICAgICAoYS50b3BTdGF0ZSk6CisgICAgICAg
IChhLnB1c2hTdGF0ZSk6CisgICAgICAgIChhLnBlcmZvcm1BY3Rpb24pOgorICAgICAgICAoYS5y
dWxlcy5kKToKKyAgICAgICAgKGEucnVsZXMuZSk6CisgICAgICAgIChhLnJ1bGVzLik6CisgICAg
ICAgIChhLnJ1bGVzLmcpOgorICAgICAgICAoYS5ydWxlcy5oKToKKyAgICAgICAgKGEucnVsZXMu
ZS5wcm90b3R5cGUuYWNjZXB0S2V5KToKKyAgICAgICAgKGEucnVsZXMuZS5wcm90b3R5cGUuYWNj
ZXB0UmVxdWlyZWQpOgorICAgICAgICAoYS5ydWxlcy5lLnByb3RvdHlwZS5hY2NlcHRBcnJheSk6
CisgICAgICAgIChhLnJ1bGVzLmUucHJvdG90eXBlLmFjY2VwdCk6CisgICAgICAgIChhLnJ1bGVz
LmUucHJvdG90eXBlLlByb2dyYW0pOgorICAgICAgICAoYS5ydWxlcy5lLnByb3RvdHlwZS5QYXJ0
aWFsQmxvY2tTdGF0ZW1lbnQpOgorICAgICAgICAoYS5ydWxlcy5lLnByb3RvdHlwZS5Db250ZW50
U3RhdGVtZW50KToKKyAgICAgICAgKGEucnVsZXMuZS5wcm90b3R5cGUuQ29tbWVudFN0YXRlbWVu
dCk6CisgICAgICAgIChhLnJ1bGVzLmUucHJvdG90eXBlLlBhdGhFeHByZXNzaW9uKToKKyAgICAg
ICAgKGEucnVsZXMuZS5wcm90b3R5cGUuU3RyaW5nTGl0ZXJhbCk6CisgICAgICAgIChhLnJ1bGVz
LmUucHJvdG90eXBlLk51bWJlckxpdGVyYWwpOgorICAgICAgICAoYS5ydWxlcy5lLnByb3RvdHlw
ZS5Cb29sZWFuTGl0ZXJhbCk6CisgICAgICAgIChhLnJ1bGVzLmUucHJvdG90eXBlLlVuZGVmaW5l
ZExpdGVyYWwpOgorICAgICAgICAoYS5ydWxlcy5lLnByb3RvdHlwZS5OdWxsTGl0ZXJhbCk6Cisg
ICAgICAgIChhLnJ1bGVzLmUucHJvdG90eXBlLkhhc2gpOgorICAgICAgICAoYS5ydWxlcy5lLnBy
b3RvdHlwZS5IYXNoUGFpcik6CisgICAgICAgIChhLnJ1bGVzLmYpOgorICAgICAgICAoYS5ydWxl
cy5pKToKKyAgICAgICAgKGEucnVsZXMuZS5wcm90b3R5cGUuQmxvY2tTdGF0ZW1lbnQuZS5wcm90
b3R5cGUuRGVjb3JhdG9yQmxvY2suZS5wcm90b3R5cGUuUGFydGlhbEJsb2NrU3RhdGVtZW50KToK
KyAgICAgICAgKGEucnVsZXMuZS5wcm90b3R5cGUuRGVjb3JhdG9yLmUucHJvdG90eXBlLk11c3Rh
Y2hlU3RhdGVtZW50KToKKyAgICAgICAgKGEucnVsZXMuZS5wcm90b3R5cGUuUGFydGlhbFN0YXRl
bWVudC5lLnByb3RvdHlwZS5Db21tZW50U3RhdGVtZW50KToKKyAgICAgICAgKGEucnVsZXMuYyk6
CisgICAgICAgIChhLnJ1bGVzLmopOgorICAgICAgICAoYS5ydWxlcy5rKToKKyAgICAgICAgKGEu
cnVsZXMubCk6CisgICAgICAgIChhLnJ1bGVzLm0pOgorICAgICAgICAoYS5ydWxlcy5uKToKKyAg
ICAgICAgKGEucnVsZXMuYi5qLmxvY0luZm8pOgorICAgICAgICAoYS5ydWxlcy5jLmQpOgorICAg
ICAgICAoYS5ydWxlcy5jLmUpOgorICAgICAgICAoYS5ydWxlcy5jLnJldHVybi5lLl9zZXR1cCk6
CisgICAgICAgIChhLnJ1bGVzLmMuZS5fY2hpbGQpOgorICAgICAgICAoYS5ydWxlcy5mLnByb3Rv
dHlwZS5lcXVhbHMpOgorICAgICAgICAoYS5ydWxlcy5mLnByb3RvdHlwZS5jb21waWxlKToKKyAg
ICAgICAgKGEucnVsZXMuZi5wcm90b3R5cGUuY29tcGlsZVByb2dyYW0pOgorICAgICAgICAoYS5y
dWxlcy5mLnByb3RvdHlwZS5hY2NlcHQpOgorICAgICAgICAoYS5ydWxlcy5mLnByb3RvdHlwZS5Q
cm9ncmFtKToKKyAgICAgICAgKGEucnVsZXMuZi5wcm90b3R5cGUuQmxvY2tTdGF0ZW1lbnQpOgor
ICAgICAgICAoYS5ydWxlcy5mLnByb3RvdHlwZS5EZWNvcmF0b3JCbG9jayk6CisgICAgICAgIChh
LnJ1bGVzLmYucHJvdG90eXBlLlBhcnRpYWxTdGF0ZW1lbnQpOgorICAgICAgICAoYS5ydWxlcy5m
LnByb3RvdHlwZS5QYXJ0aWFsQmxvY2tTdGF0ZW1lbnQpOgorICAgICAgICAoYS5ydWxlcy5mLnBy
b3RvdHlwZS5NdXN0YWNoZVN0YXRlbWVudCk6CisgICAgICAgIChhLnJ1bGVzLmYucHJvdG90eXBl
LkRlY29yYXRvcik6CisgICAgICAgIChhLnJ1bGVzLmYucHJvdG90eXBlLkNvbnRlbnRTdGF0ZW1l
bnQpOgorICAgICAgICAoYS5ydWxlcy5mLnByb3RvdHlwZS5Db21tZW50U3RhdGVtZW50KToKKyAg
ICAgICAgKGEucnVsZXMuZi5wcm90b3R5cGUuU3ViRXhwcmVzc2lvbik6CisgICAgICAgIChhLnJ1
bGVzLmYucHJvdG90eXBlLmFtYmlndW91c1NleHByKToKKyAgICAgICAgKGEucnVsZXMuZi5wcm90
b3R5cGUuc2ltcGxlU2V4cHIpOgorICAgICAgICAoYS5ydWxlcy5mLnByb3RvdHlwZS5oZWxwZXJT
ZXhwcik6CisgICAgICAgIChhLnJ1bGVzLmYucHJvdG90eXBlLlBhdGhFeHByZXNzaW9uKToKKyAg
ICAgICAgKGEucnVsZXMuZi5wcm90b3R5cGUuU3RyaW5nTGl0ZXJhbCk6CisgICAgICAgIChhLnJ1
bGVzLmYucHJvdG90eXBlLk51bWJlckxpdGVyYWwpOgorICAgICAgICAoYS5ydWxlcy5mLnByb3Rv
dHlwZS5Cb29sZWFuTGl0ZXJhbCk6CisgICAgICAgIChhLnJ1bGVzLmYucHJvdG90eXBlLlVuZGVm
aW5lZExpdGVyYWwpOgorICAgICAgICAoYS5ydWxlcy5mLnByb3RvdHlwZS5OdWxsTGl0ZXJhbCk6
CisgICAgICAgIChhLnJ1bGVzLmYucHJvdG90eXBlLkhhc2gpOgorICAgICAgICAoYS5ydWxlcy5m
LnByb3RvdHlwZS5vcGNvZGUpOgorICAgICAgICAoYS5ydWxlcy5mLnByb3RvdHlwZS5hZGREZXB0
aCk6CisgICAgICAgIChhLnJ1bGVzLmYucHJvdG90eXBlLmNsYXNzaWZ5U2V4cHIpOgorICAgICAg
ICAoYS5ydWxlcy5mLnByb3RvdHlwZS5wdXNoUGFyYW1zKToKKyAgICAgICAgKGEucnVsZXMuZi5w
cm90b3R5cGUucHVzaFBhcmFtKToKKyAgICAgICAgKGEucnVsZXMuZi5wcm90b3R5cGUuZW1wdHlI
YXNoKToKKyAgICAgICAgKGEucnVsZXMuZi5wcm90b3R5cGUucHVzaEhhc2gpOgorICAgICAgICAo
YS5ydWxlcy5mLnByb3RvdHlwZS5wb3BIYXNoKToKKyAgICAgICAgKGEucnVsZXMuZi5wcm90b3R5
cGUucHVzaFN0cmluZyk6CisgICAgICAgIChhLnJ1bGVzLmYucHJvdG90eXBlLnB1c2hMaXRlcmFs
KToKKyAgICAgICAgKGEucnVsZXMuZi5wcm90b3R5cGUucHVzaFByb2dyYW0pOgorICAgICAgICAo
YS5ydWxlcy5mLnByb3RvdHlwZS5yZWdpc3RlckRlY29yYXRvcik6CisgICAgICAgIChhLnJ1bGVz
LmYucHJvdG90eXBlLmludm9rZUhlbHBlcik6CisgICAgICAgIChhLnJ1bGVzLmYucHJvdG90eXBl
Lmludm9rZUtub3duSGVscGVyKToKKyAgICAgICAgKGEucnVsZXMuZi5wcm90b3R5cGUuaW52b2tl
QW1iaWd1b3VzKToKKyAgICAgICAgKGEucnVsZXMuZi5wcm90b3R5cGUuaW52b2tlUGFydGlhbCk6
CisgICAgICAgIChhLnJ1bGVzLmYucHJvdG90eXBlLmFzc2lnblRvSGFzaCk6CisgICAgICAgIChh
LnJ1bGVzLmYucHJvdG90eXBlLnB1c2hJZCk6CisgICAgICAgIChhLnJ1bGVzLmYucHJvdG90eXBl
LmNvbXBpbGVDaGlsZHJlbik6CisgICAgICAgIChhLnJ1bGVzLmYucHJvdG90eXBlLm1hdGNoRXhp
c3RpbmdQcm9ncmFtKToKKyAgICAgICAgKGEucnVsZXMuZi5wcm90b3R5cGUucHJvZ3JhbUV4cHJl
c3Npb24pOgorICAgICAgICAoYS5ydWxlcy5mLnByb3RvdHlwZS51c2VSZWdpc3Rlcik6CisgICAg
ICAgIChhLnJ1bGVzLmYucHJvdG90eXBlLnB1c2gpOgorICAgICAgICAoYS5ydWxlcy5mLnByb3Rv
dHlwZS5wdXNoU3RhY2tMaXRlcmFsKToKKyAgICAgICAgKGEucnVsZXMuZi5wcm90b3R5cGUucHVz
aFNvdXJjZSk6CisgICAgICAgIChhLnJ1bGVzLmYucHJvdG90eXBlLnJlcGxhY2VTdGFjayk6Cisg
ICAgICAgIChhLnJ1bGVzLmYucHJvdG90eXBlLmluY3JTdGFjayk6CisgICAgICAgIChhLnJ1bGVz
LmYucHJvdG90eXBlLnRvcFN0YWNrTmFtZSk6CisgICAgICAgIChhLnJ1bGVzLmYucHJvdG90eXBl
LmZsdXNoSW5saW5lKToKKyAgICAgICAgKGEucnVsZXMuZi5wcm90b3R5cGUuaXNJbmxpbmUpOgor
ICAgICAgICAoYS5ydWxlcy5mLnByb3RvdHlwZS5wb3BTdGFjayk6CisgICAgICAgIChhLnJ1bGVz
LmYucHJvdG90eXBlLnRvcFN0YWNrKToKKyAgICAgICAgKGEucnVsZXMuZi5wcm90b3R5cGUuY29u
dGV4dE5hbWUpOgorICAgICAgICAoYS5ydWxlcy5mLnByb3RvdHlwZS5xdW90ZWRTdHJpbmcpOgor
ICAgICAgICAoYS5ydWxlcy5mLnByb3RvdHlwZS5vYmplY3RMaXRlcmFsKToKKyAgICAgICAgKGEu
cnVsZXMuZi5wcm90b3R5cGUuYWxpYXNhYmxlKToKKyAgICAgICAgKGEucnVsZXMuZi5wcm90b3R5
cGUuc2V0dXBIZWxwZXIpOgorICAgICAgICAoYS5ydWxlcy5mLnByb3RvdHlwZS5zZXR1cFBhcmFt
cyk6CisgICAgICAgIChhLnJ1bGVzLmYucHJvdG90eXBlLnNldHVwSGVscGVyQXJncyk6CisgICAg
ICAgIChhLnJ1bGVzLmkuaXNWYWxpZEphdmFTY3JpcHRWYXJpYWJsZU5hbWUpOgorICAgICAgICAo
YS5ydWxlcy5rLnJldHVybi5hLmNvbXBpbGUpOgorICAgICAgICAoYS5ydWxlcy5rLmEucHJlY29t
cGlsZSk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2hhbmRsZWJh
cnMuanM6IEFkZGVkLgorICAgICAgICAod2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24p
OgorICAgICAgICAocmV0dXJuKToKKyAgICAgICAgKGNyZWF0ZS5oYi5jb21waWxlKToKKyAgICAg
ICAgKGNyZWF0ZS5oYi5wcmVjb21waWxlKToKKyAgICAgICAgKGNyZWF0ZSk6CisgICAgICAgIChl
eHBvcnRzLnN0cmluZ19hcHBlYXJlZF9oZXJlKToKKyAgICAgICAgKGNyZWF0ZS5oYi50ZW1wbGF0
ZSk6CisgICAgICAgIChIYW5kbGViYXJzRW52aXJvbm1lbnQpOgorICAgICAgICAoSGFuZGxlYmFy
c0Vudmlyb25tZW50LnByb3RvdHlwZS5yZWdpc3RlckhlbHBlcik6CisgICAgICAgIChIYW5kbGVi
YXJzRW52aXJvbm1lbnQucHJvdG90eXBlLnVucmVnaXN0ZXJIZWxwZXIpOgorICAgICAgICAoSGFu
ZGxlYmFyc0Vudmlyb25tZW50LnByb3RvdHlwZS5yZWdpc3RlclBhcnRpYWwpOgorICAgICAgICAo
SGFuZGxlYmFyc0Vudmlyb25tZW50LnByb3RvdHlwZS51bnJlZ2lzdGVyUGFydGlhbCk6CisgICAg
ICAgIChIYW5kbGViYXJzRW52aXJvbm1lbnQucHJvdG90eXBlLnJlZ2lzdGVyRGVjb3JhdG9yKToK
KyAgICAgICAgKEhhbmRsZWJhcnNFbnZpcm9ubWVudC5wcm90b3R5cGUudW5yZWdpc3RlckRlY29y
YXRvcik6CisgICAgICAgIChiYWRDaGFycy5wb3NzaWJsZSk6CisgICAgICAgIChleHRlbmQpOgor
ICAgICAgICAoaXNGdW5jdGlvbik6CisgICAgICAgIChpc0Z1bmN0aW9uLmV4cG9ydHMuaXNGdW5j
dGlvbi5pc0Z1bmN0aW9uKToKKyAgICAgICAgKGlzQXJyYXkuQXJyYXkuaXNBcnJheSk6CisgICAg
ICAgIChpbmRleE9mKToKKyAgICAgICAgKGVzY2FwZUV4cHJlc3Npb24pOgorICAgICAgICAoaXNF
bXB0eSk6CisgICAgICAgIChjcmVhdGVGcmFtZSk6CisgICAgICAgIChibG9ja1BhcmFtcyk6Cisg
ICAgICAgIChhcHBlbmRDb250ZXh0UGF0aCk6CisgICAgICAgIChFeGNlcHRpb24pOgorICAgICAg
ICAobW9kdWxlLmV4cG9ydHMpOgorICAgICAgICAocmVnaXN0ZXJEZWZhdWx0SGVscGVycyk6Cisg
ICAgICAgIChyZWdpc3RlckRlZmF1bHREZWNvcmF0b3JzKToKKyAgICAgICAgKGxvZ2dlci5sb29r
dXBMZXZlbCk6CisgICAgICAgIChsb2dnZXIubG9nKToKKyAgICAgICAgKFNhZmVTdHJpbmcpOgor
ICAgICAgICAoU2FmZVN0cmluZy5wcm90b3R5cGUudG9TdHJpbmcuU2FmZVN0cmluZy5wcm90b3R5
cGUudG9IVE1MKToKKyAgICAgICAgKGNoZWNrUmV2aXNpb24pOgorICAgICAgICAoaW52b2tlUGFy
dGlhbFdyYXBwZXIpOgorICAgICAgICAoY29udGFpbmVyLnN0cmljdCk6CisgICAgICAgIChjb250
YWluZXIubG9va3VwKToKKyAgICAgICAgKGNvbnRhaW5lci5sYW1iZGEpOgorICAgICAgICAoY29u
dGFpbmVyLmZuKToKKyAgICAgICAgKGNvbnRhaW5lci5wcm9ncmFtKToKKyAgICAgICAgKGNvbnRh
aW5lci5kYXRhKToKKyAgICAgICAgKGNvbnRhaW5lci5tZXJnZSk6CisgICAgICAgIChyZXQubWFp
bik6CisgICAgICAgIChyZXQpOgorICAgICAgICAocmV0Ll9zZXR1cCk6CisgICAgICAgIChyZXQu
X2NoaWxkKToKKyAgICAgICAgKHRlbXBsYXRlKToKKyAgICAgICAgKHByb2cpOgorICAgICAgICAo
d3JhcFByb2dyYW0pOgorICAgICAgICAocmVzb2x2ZVBhcnRpYWwpOgorICAgICAgICAoaW52b2tl
UGFydGlhbCk6CisgICAgICAgIChub29wKToKKyAgICAgICAgKGluaXREYXRhKToKKyAgICAgICAg
KGV4ZWN1dGVEZWNvcmF0b3JzKToKKyAgICAgICAgKEhhbmRsZWJhcnMubm9Db25mbGljdCk6Cisg
ICAgICAgIChBU1QuaGVscGVycy5oZWxwZXJFeHByZXNzaW9uKToKKyAgICAgICAgKEFTVC5oZWxw
ZXJzLnNjb3BlZElkKToKKyAgICAgICAgKEFTVC5oZWxwZXJzLnNpbXBsZUlkKToKKyAgICAgICAg
KHl5LmxvY0luZm8pOgorICAgICAgICAocGFyc2UpOgorICAgICAgICAocGFyc2VyLnRyYWNlKToK
KyAgICAgICAgKHBhcnNlci5wZXJmb3JtQWN0aW9uKToKKyAgICAgICAgKHBhcnNlci5wYXJzZUVy
cm9yKToKKyAgICAgICAgKHBhcnNlci5wYXJzZS5wYXJzZS5wb3BTdGFjayk6CisgICAgICAgIChw
YXJzZXIucGFyc2UucGFyc2UubGV4KToKKyAgICAgICAgKHBhcnNlci5wYXJzZSk6CisgICAgICAg
IChQYXJzZXIpOgorICAgICAgICAoV2hpdGVzcGFjZUNvbnRyb2wpOgorICAgICAgICAoV2hpdGVz
cGFjZUNvbnRyb2wucHJvdG90eXBlLlByb2dyYW0pOgorICAgICAgICAoV2hpdGVzcGFjZUNvbnRy
b2wucHJvdG90eXBlLkJsb2NrU3RhdGVtZW50LldoaXRlc3BhY2VDb250cm9sLnByb3RvdHlwZS5E
ZWNvcmF0b3JCbG9jay5XaGl0ZXNwYWNlQ29udHJvbC5wcm90b3R5cGUuUGFydGlhbEJsb2NrU3Rh
dGVtZW50KToKKyAgICAgICAgKFdoaXRlc3BhY2VDb250cm9sLnByb3RvdHlwZS5EZWNvcmF0b3Iu
V2hpdGVzcGFjZUNvbnRyb2wucHJvdG90eXBlLk11c3RhY2hlU3RhdGVtZW50KToKKyAgICAgICAg
KFdoaXRlc3BhY2VDb250cm9sLnByb3RvdHlwZS5QYXJ0aWFsU3RhdGVtZW50LldoaXRlc3BhY2VD
b250cm9sLnByb3RvdHlwZS5Db21tZW50U3RhdGVtZW50KToKKyAgICAgICAgKGlzUHJldldoaXRl
c3BhY2UpOgorICAgICAgICAoaXNOZXh0V2hpdGVzcGFjZSk6CisgICAgICAgIChvbWl0UmlnaHQp
OgorICAgICAgICAob21pdExlZnQpOgorICAgICAgICAoVmlzaXRvcik6CisgICAgICAgIChWaXNp
dG9yLnByb3RvdHlwZS5hY2NlcHRLZXkpOgorICAgICAgICAoVmlzaXRvci5wcm90b3R5cGUuYWNj
ZXB0UmVxdWlyZWQpOgorICAgICAgICAoVmlzaXRvci5wcm90b3R5cGUuYWNjZXB0QXJyYXkpOgor
ICAgICAgICAoVmlzaXRvci5wcm90b3R5cGUuYWNjZXB0KToKKyAgICAgICAgKFZpc2l0b3IucHJv
dG90eXBlLlByb2dyYW0pOgorICAgICAgICAoVmlzaXRvci5wcm90b3R5cGUuUGFydGlhbEJsb2Nr
U3RhdGVtZW50KToKKyAgICAgICAgKFZpc2l0b3IucHJvdG90eXBlLkNvbnRlbnRTdGF0ZW1lbnQp
OgorICAgICAgICAoVmlzaXRvci5wcm90b3R5cGUuQ29tbWVudFN0YXRlbWVudCk6CisgICAgICAg
IChWaXNpdG9yLnByb3RvdHlwZS5QYXRoRXhwcmVzc2lvbik6CisgICAgICAgIChWaXNpdG9yLnBy
b3RvdHlwZS5TdHJpbmdMaXRlcmFsKToKKyAgICAgICAgKFZpc2l0b3IucHJvdG90eXBlLk51bWJl
ckxpdGVyYWwpOgorICAgICAgICAoVmlzaXRvci5wcm90b3R5cGUuQm9vbGVhbkxpdGVyYWwpOgor
ICAgICAgICAoVmlzaXRvci5wcm90b3R5cGUuVW5kZWZpbmVkTGl0ZXJhbCk6CisgICAgICAgIChW
aXNpdG9yLnByb3RvdHlwZS5OdWxsTGl0ZXJhbCk6CisgICAgICAgIChWaXNpdG9yLnByb3RvdHlw
ZS5IYXNoKToKKyAgICAgICAgKFZpc2l0b3IucHJvdG90eXBlLkhhc2hQYWlyKToKKyAgICAgICAg
KHZpc2l0U3ViRXhwcmVzc2lvbik6CisgICAgICAgICh2aXNpdEJsb2NrKToKKyAgICAgICAgKHZp
c2l0UGFydGlhbCk6CisgICAgICAgICh2YWxpZGF0ZUNsb3NlKToKKyAgICAgICAgKFNvdXJjZUxv
Y2F0aW9uKToKKyAgICAgICAgKGlkKToKKyAgICAgICAgKHN0cmlwRmxhZ3MpOgorICAgICAgICAo
c3RyaXBDb21tZW50KToKKyAgICAgICAgKHByZXBhcmVQYXRoKToKKyAgICAgICAgKHByZXBhcmVN
dXN0YWNoZSk6CisgICAgICAgIChwcmVwYXJlUmF3QmxvY2spOgorICAgICAgICAocHJlcGFyZUJs
b2NrKToKKyAgICAgICAgKHByZXBhcmVQcm9ncmFtKToKKyAgICAgICAgKHByZXBhcmVQYXJ0aWFs
QmxvY2spOgorICAgICAgICAoQ29tcGlsZXIpOgorICAgICAgICAoQ29tcGlsZXIucHJvdG90eXBl
LmVxdWFscyk6CisgICAgICAgIChDb21waWxlci5wcm90b3R5cGUuY29tcGlsZSk6CisgICAgICAg
IChDb21waWxlci5wcm90b3R5cGUuY29tcGlsZVByb2dyYW0pOgorICAgICAgICAoQ29tcGlsZXIu
cHJvdG90eXBlLmFjY2VwdCk6CisgICAgICAgIChDb21waWxlci5wcm90b3R5cGUuUHJvZ3JhbSk6
CisgICAgICAgIChDb21waWxlci5wcm90b3R5cGUuQmxvY2tTdGF0ZW1lbnQpOgorICAgICAgICAo
Q29tcGlsZXIucHJvdG90eXBlLkRlY29yYXRvckJsb2NrKToKKyAgICAgICAgKENvbXBpbGVyLnBy
b3RvdHlwZS5QYXJ0aWFsU3RhdGVtZW50KToKKyAgICAgICAgKENvbXBpbGVyLnByb3RvdHlwZS5Q
YXJ0aWFsQmxvY2tTdGF0ZW1lbnQpOgorICAgICAgICAoQ29tcGlsZXIucHJvdG90eXBlLk11c3Rh
Y2hlU3RhdGVtZW50KToKKyAgICAgICAgKENvbXBpbGVyLnByb3RvdHlwZS5EZWNvcmF0b3IpOgor
ICAgICAgICAoQ29tcGlsZXIucHJvdG90eXBlLkNvbnRlbnRTdGF0ZW1lbnQpOgorICAgICAgICAo
Q29tcGlsZXIucHJvdG90eXBlLkNvbW1lbnRTdGF0ZW1lbnQpOgorICAgICAgICAoQ29tcGlsZXIu
cHJvdG90eXBlLlN1YkV4cHJlc3Npb24pOgorICAgICAgICAoQ29tcGlsZXIucHJvdG90eXBlLmFt
YmlndW91c1NleHByKToKKyAgICAgICAgKENvbXBpbGVyLnByb3RvdHlwZS5zaW1wbGVTZXhwcik6
CisgICAgICAgIChDb21waWxlci5wcm90b3R5cGUuaGVscGVyU2V4cHIpOgorICAgICAgICAoQ29t
cGlsZXIucHJvdG90eXBlLlBhdGhFeHByZXNzaW9uKToKKyAgICAgICAgKENvbXBpbGVyLnByb3Rv
dHlwZS5TdHJpbmdMaXRlcmFsKToKKyAgICAgICAgKENvbXBpbGVyLnByb3RvdHlwZS5OdW1iZXJM
aXRlcmFsKToKKyAgICAgICAgKENvbXBpbGVyLnByb3RvdHlwZS5Cb29sZWFuTGl0ZXJhbCk6Cisg
ICAgICAgIChDb21waWxlci5wcm90b3R5cGUuVW5kZWZpbmVkTGl0ZXJhbCk6CisgICAgICAgIChD
b21waWxlci5wcm90b3R5cGUuTnVsbExpdGVyYWwpOgorICAgICAgICAoQ29tcGlsZXIucHJvdG90
eXBlLkhhc2gpOgorICAgICAgICAoQ29tcGlsZXIucHJvdG90eXBlLm9wY29kZSk6CisgICAgICAg
IChDb21waWxlci5wcm90b3R5cGUuYWRkRGVwdGgpOgorICAgICAgICAoQ29tcGlsZXIucHJvdG90
eXBlLmNsYXNzaWZ5U2V4cHIpOgorICAgICAgICAoQ29tcGlsZXIucHJvdG90eXBlLnB1c2hQYXJh
bXMpOgorICAgICAgICAoQ29tcGlsZXIucHJvdG90eXBlLnB1c2hQYXJhbSk6CisgICAgICAgIChD
b21waWxlci5wcm90b3R5cGUpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMv
ZGlzdC9oYW5kbGViYXJzLm1pbi5qczogQWRkZWQuCisgICAgICAgIChyZXR1cm4uYik6CisgICAg
ICAgIChyZXR1cm4pOgorICAgICAgICAoZC5yZXR1cm4uYS5jb21waWxlKToKKyAgICAgICAgKGQu
YS5wcmVjb21waWxlKToKKyAgICAgICAgKGQpOgorICAgICAgICAoYi5zdHJpbmdfYXBwZWFyZWRf
aGVyZSk6CisgICAgICAgIChkLmEudGVtcGxhdGUpOgorICAgICAgICAoZC5wcm90b3R5cGUucmVn
aXN0ZXJIZWxwZXIpOgorICAgICAgICAoZC5wcm90b3R5cGUudW5yZWdpc3RlckhlbHBlcik6Cisg
ICAgICAgIChkLnByb3RvdHlwZS5yZWdpc3RlclBhcnRpYWwpOgorICAgICAgICAoZC5wcm90b3R5
cGUudW5yZWdpc3RlclBhcnRpYWwpOgorICAgICAgICAoZC5wcm90b3R5cGUucmVnaXN0ZXJEZWNv
cmF0b3IpOgorICAgICAgICAoZC5wcm90b3R5cGUudW5yZWdpc3RlckRlY29yYXRvcik6CisgICAg
ICAgIChjKToKKyAgICAgICAgKGUpOgorICAgICAgICAoZik6CisgICAgICAgIChnKToKKyAgICAg
ICAgKGkpOgorICAgICAgICAoaik6CisgICAgICAgIChwYXJzZUVycm9yKToKKyAgICAgICAgKHBh
cnNlKToKKyAgICAgICAgKGEucGFyc2VFcnJvcik6CisgICAgICAgIChhLnNldElucHV0KToKKyAg
ICAgICAgKGEuaW5wdXQpOgorICAgICAgICAoYS51bnB1dCk6CisgICAgICAgIChhLm1vcmUpOgor
ICAgICAgICAoYS5sZXNzKToKKyAgICAgICAgKGEucGFzdElucHV0KToKKyAgICAgICAgKGEudXBj
b21pbmdJbnB1dCk6CisgICAgICAgIChhLnNob3dQb3NpdGlvbik6CisgICAgICAgIChhLm5leHQp
OgorICAgICAgICAoYS5sZXgpOgorICAgICAgICAoYS5iZWdpbik6CisgICAgICAgIChhLnBvcFN0
YXRlKToKKyAgICAgICAgKGEuX2N1cnJlbnRSdWxlcyk6CisgICAgICAgIChhLnRvcFN0YXRlKToK
KyAgICAgICAgKGEucHVzaFN0YXRlKToKKyAgICAgICAgKGEucGVyZm9ybUFjdGlvbik6CisgICAg
ICAgIChhLnJ1bGVzLmQpOgorICAgICAgICAoYS5ydWxlcy5lKToKKyAgICAgICAgKGEucnVsZXMu
Zik6CisgICAgICAgIChhLnJ1bGVzLmcpOgorICAgICAgICAoYS5ydWxlcy5oKToKKyAgICAgICAg
KGEucnVsZXMuZC5wcm90b3R5cGUuUHJvZ3JhbSk6CisgICAgICAgIChhLnJ1bGVzLmQucHJvdG90
eXBlLkJsb2NrU3RhdGVtZW50LmQucHJvdG90eXBlLkRlY29yYXRvckJsb2NrLmQucHJvdG90eXBl
LlBhcnRpYWxCbG9ja1N0YXRlbWVudCk6CisgICAgICAgIChhLnJ1bGVzLmQucHJvdG90eXBlLkRl
Y29yYXRvci5kLnByb3RvdHlwZS5NdXN0YWNoZVN0YXRlbWVudCk6CisgICAgICAgIChhLnJ1bGVz
LmQucHJvdG90eXBlLlBhcnRpYWxTdGF0ZW1lbnQuZC5wcm90b3R5cGUuQ29tbWVudFN0YXRlbWVu
dCk6CisgICAgICAgIChhLnJ1bGVzLik6CisgICAgICAgIChhLnJ1bGVzLmQucHJvdG90eXBlLmFj
Y2VwdEtleSk6CisgICAgICAgIChhLnJ1bGVzLmQucHJvdG90eXBlLmFjY2VwdFJlcXVpcmVkKToK
KyAgICAgICAgKGEucnVsZXMuZC5wcm90b3R5cGUuYWNjZXB0QXJyYXkpOgorICAgICAgICAoYS5y
dWxlcy5kLnByb3RvdHlwZS5hY2NlcHQpOgorICAgICAgICAoYS5ydWxlcy5kLnByb3RvdHlwZS5Q
YXJ0aWFsQmxvY2tTdGF0ZW1lbnQpOgorICAgICAgICAoYS5ydWxlcy5kLnByb3RvdHlwZS5Db250
ZW50U3RhdGVtZW50KToKKyAgICAgICAgKGEucnVsZXMuZC5wcm90b3R5cGUuQ29tbWVudFN0YXRl
bWVudCk6CisgICAgICAgIChhLnJ1bGVzLmQucHJvdG90eXBlLlBhdGhFeHByZXNzaW9uKToKKyAg
ICAgICAgKGEucnVsZXMuZC5wcm90b3R5cGUuU3RyaW5nTGl0ZXJhbCk6CisgICAgICAgIChhLnJ1
bGVzLmQucHJvdG90eXBlLk51bWJlckxpdGVyYWwpOgorICAgICAgICAoYS5ydWxlcy5kLnByb3Rv
dHlwZS5Cb29sZWFuTGl0ZXJhbCk6CisgICAgICAgIChhLnJ1bGVzLmQucHJvdG90eXBlLlVuZGVm
aW5lZExpdGVyYWwpOgorICAgICAgICAoYS5ydWxlcy5kLnByb3RvdHlwZS5OdWxsTGl0ZXJhbCk6
CisgICAgICAgIChhLnJ1bGVzLmQucHJvdG90eXBlLkhhc2gpOgorICAgICAgICAoYS5ydWxlcy5k
LnByb3RvdHlwZS5IYXNoUGFpcik6CisgICAgICAgIChhLnJ1bGVzLmkpOgorICAgICAgICAoYS5y
dWxlcy5qKToKKyAgICAgICAgKGEucnVsZXMuayk6CisgICAgICAgIChhLnJ1bGVzLmwpOgorICAg
ICAgICAoYS5ydWxlcy5tKToKKyAgICAgICAgKGEucnVsZXMubik6CisgICAgICAgIChhLnJ1bGVz
LmMuZCk6CisgICAgICAgIChhLnJ1bGVzLmMuZSk6CisgICAgICAgIChhLnJ1bGVzLmMucmV0dXJu
LmUuX3NldHVwKToKKyAgICAgICAgKGEucnVsZXMuYy5lLl9jaGlsZCk6CisgICAgICAgIChhLnJ1
bGVzLmQucHJvdG90eXBlLmVxdWFscyk6CisgICAgICAgIChhLnJ1bGVzLmQucHJvdG90eXBlLmNv
bXBpbGUpOgorICAgICAgICAoYS5ydWxlcy5kLnByb3RvdHlwZS5jb21waWxlUHJvZ3JhbSk6Cisg
ICAgICAgIChhLnJ1bGVzLmQucHJvdG90eXBlLkJsb2NrU3RhdGVtZW50KToKKyAgICAgICAgKGEu
cnVsZXMuZC5wcm90b3R5cGUuRGVjb3JhdG9yQmxvY2spOgorICAgICAgICAoYS5ydWxlcy5kLnBy
b3RvdHlwZS5QYXJ0aWFsU3RhdGVtZW50KToKKyAgICAgICAgKGEucnVsZXMuZC5wcm90b3R5cGUu
TXVzdGFjaGVTdGF0ZW1lbnQpOgorICAgICAgICAoYS5ydWxlcy5kLnByb3RvdHlwZS5EZWNvcmF0
b3IpOgorICAgICAgICAoYS5ydWxlcy5kLnByb3RvdHlwZS5TdWJFeHByZXNzaW9uKToKKyAgICAg
ICAgKGEucnVsZXMuZC5wcm90b3R5cGUuYW1iaWd1b3VzU2V4cHIpOgorICAgICAgICAoYS5ydWxl
cy5kLnByb3RvdHlwZS5zaW1wbGVTZXhwcik6CisgICAgICAgIChhLnJ1bGVzLmQucHJvdG90eXBl
LmhlbHBlclNleHByKToKKyAgICAgICAgKGEucnVsZXMuZC5wcm90b3R5cGUub3Bjb2RlKToKKyAg
ICAgICAgKGEucnVsZXMuZC5wcm90b3R5cGUuYWRkRGVwdGgpOgorICAgICAgICAoYS5ydWxlcy5k
LnByb3RvdHlwZS5jbGFzc2lmeVNleHByKToKKyAgICAgICAgKGEucnVsZXMuZC5wcm90b3R5cGUu
cHVzaFBhcmFtcyk6CisgICAgICAgIChhLnJ1bGVzLmQucHJvdG90eXBlLnB1c2hQYXJhbSk6Cisg
ICAgICAgIChhLnJ1bGVzLmQucHJvdG90eXBlLmludm9rZVBhcnRpYWwpOgorICAgICAgICAoYS5y
dWxlcy5kLnByb3RvdHlwZS5hc3NpZ25Ub0hhc2gpOgorICAgICAgICAoYS5ydWxlcy5kLnByb3Rv
dHlwZS5wdXNoSWQpOgorICAgICAgICAoYS5ydWxlcy5kLnByb3RvdHlwZS5jb21waWxlQ2hpbGRy
ZW4pOgorICAgICAgICAoYS5ydWxlcy5kLnByb3RvdHlwZS5tYXRjaEV4aXN0aW5nUHJvZ3JhbSk6
CisgICAgICAgIChhLnJ1bGVzLmQucHJvdG90eXBlLnByb2dyYW1FeHByZXNzaW9uKToKKyAgICAg
ICAgKGEucnVsZXMuZC5wcm90b3R5cGUudXNlUmVnaXN0ZXIpOgorICAgICAgICAoYS5ydWxlcy5k
LnByb3RvdHlwZS5wdXNoKToKKyAgICAgICAgKGEucnVsZXMuZC5wcm90b3R5cGUucHVzaFN0YWNr
TGl0ZXJhbCk6CisgICAgICAgIChhLnJ1bGVzLmQucHJvdG90eXBlLnB1c2hTb3VyY2UpOgorICAg
ICAgICAoYS5ydWxlcy5kLnByb3RvdHlwZS5yZXBsYWNlU3RhY2spOgorICAgICAgICAoYS5ydWxl
cy5kLnByb3RvdHlwZS5pbmNyU3RhY2spOgorICAgICAgICAoYS5ydWxlcy5kLnByb3RvdHlwZS50
b3BTdGFja05hbWUpOgorICAgICAgICAoYS5ydWxlcy5kLnByb3RvdHlwZS5mbHVzaElubGluZSk6
CisgICAgICAgIChhLnJ1bGVzLmQucHJvdG90eXBlLmlzSW5saW5lKToKKyAgICAgICAgKGEucnVs
ZXMuZC5wcm90b3R5cGUucG9wU3RhY2spOgorICAgICAgICAoYS5ydWxlcy5kLnByb3RvdHlwZS50
b3BTdGFjayk6CisgICAgICAgIChhLnJ1bGVzLmQucHJvdG90eXBlLmNvbnRleHROYW1lKToKKyAg
ICAgICAgKGEucnVsZXMuZC5wcm90b3R5cGUucXVvdGVkU3RyaW5nKToKKyAgICAgICAgKGEucnVs
ZXMuZC5wcm90b3R5cGUub2JqZWN0TGl0ZXJhbCk6CisgICAgICAgIChhLnJ1bGVzLmQucHJvdG90
eXBlLmFsaWFzYWJsZSk6CisgICAgICAgIChhLnJ1bGVzLmQucHJvdG90eXBlLnNldHVwSGVscGVy
KToKKyAgICAgICAgKGEucnVsZXMuZC5wcm90b3R5cGUuc2V0dXBQYXJhbXMpOgorICAgICAgICAo
YS5ydWxlcy5kLnByb3RvdHlwZS5zZXR1cEhlbHBlckFyZ3MpOgorICAgICAgICAoYS5ydWxlcy5l
LmlzVmFsaWRKYXZhU2NyaXB0VmFyaWFibGVOYW1lKToKKyAgICAgICAgKGEucnVsZXMuZy5nKToK
KyAgICAgICAgKGEucnVsZXMuZy5wcm90b3R5cGUuYWRkKToKKyAgICAgICAgKGEucnVsZXMuZy5w
cm90b3R5cGUucHJlcGVuZCk6CisgICAgICAgIChhLnJ1bGVzLmcucHJvdG90eXBlLnRvU3RyaW5n
V2l0aFNvdXJjZU1hcCk6CisgICAgICAgIChhLnJ1bGVzLmcucHJvdG90eXBlLnRvU3RyaW5nKToK
KyAgICAgICAgKGEucnVsZXMuZS5wcm90b3R5cGUuaXNFbXB0eSk6CisgICAgICAgIChhLnJ1bGVz
LmUucHJvdG90eXBlLnByZXBlbmQpOgorICAgICAgICAoYS5ydWxlcy5lLnByb3RvdHlwZS5wdXNo
KToKKyAgICAgICAgKGEucnVsZXMuZS5wcm90b3R5cGUubWVyZ2UpOgorICAgICAgICAoYS5ydWxl
cy5lLnByb3RvdHlwZS5lYWNoKToKKyAgICAgICAgKGEucnVsZXMuZS5wcm90b3R5cGUuZW1wdHkp
OgorICAgICAgICAoYS5ydWxlcy5lLnByb3RvdHlwZS53cmFwKToKKyAgICAgICAgKGEucnVsZXMu
ZS5wcm90b3R5cGUuZnVuY3Rpb25DYWxsKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5k
bGViYXJzL2Rpc3QvaGFuZGxlYmFycy5ydW50aW1lLmFtZC5qczogQWRkZWQuCisgICAgICAgIChi
YWRDaGFycy5wb3NzaWJsZSk6CisgICAgICAgIChleHRlbmQpOgorICAgICAgICAoaXNGdW5jdGlv
bik6CisgICAgICAgIChpc0Z1bmN0aW9uLmV4cG9ydHMuaXNGdW5jdGlvbi5pc0Z1bmN0aW9uKToK
KyAgICAgICAgKGlzQXJyYXkuQXJyYXkuaXNBcnJheSk6CisgICAgICAgIChpbmRleE9mKToKKyAg
ICAgICAgKGVzY2FwZUV4cHJlc3Npb24pOgorICAgICAgICAoaXNFbXB0eSk6CisgICAgICAgIChj
cmVhdGVGcmFtZSk6CisgICAgICAgIChibG9ja1BhcmFtcyk6CisgICAgICAgIChhcHBlbmRDb250
ZXh0UGF0aCk6CisgICAgICAgIChFeGNlcHRpb24pOgorICAgICAgICAobW9kdWxlLmV4cG9ydHMp
OgorICAgICAgICAoX2ludGVyb3BSZXF1aXJlRGVmYXVsdCk6CisgICAgICAgIChyZWdpc3RlckRl
ZmF1bHRIZWxwZXJzKToKKyAgICAgICAgKHJlZ2lzdGVyRGVmYXVsdERlY29yYXRvcnMpOgorICAg
ICAgICAobG9nZ2VyLmxvb2t1cExldmVsKToKKyAgICAgICAgKGxvZ2dlci5sb2cpOgorICAgICAg
ICAoSGFuZGxlYmFyc0Vudmlyb25tZW50KToKKyAgICAgICAgKEhhbmRsZWJhcnNFbnZpcm9ubWVu
dC5wcm90b3R5cGUucmVnaXN0ZXJIZWxwZXIpOgorICAgICAgICAoSGFuZGxlYmFyc0Vudmlyb25t
ZW50LnByb3RvdHlwZS51bnJlZ2lzdGVySGVscGVyKToKKyAgICAgICAgKEhhbmRsZWJhcnNFbnZp
cm9ubWVudC5wcm90b3R5cGUucmVnaXN0ZXJQYXJ0aWFsKToKKyAgICAgICAgKEhhbmRsZWJhcnNF
bnZpcm9ubWVudC5wcm90b3R5cGUudW5yZWdpc3RlclBhcnRpYWwpOgorICAgICAgICAoSGFuZGxl
YmFyc0Vudmlyb25tZW50LnByb3RvdHlwZS5yZWdpc3RlckRlY29yYXRvcik6CisgICAgICAgIChI
YW5kbGViYXJzRW52aXJvbm1lbnQucHJvdG90eXBlLnVucmVnaXN0ZXJEZWNvcmF0b3IpOgorICAg
ICAgICAoU2FmZVN0cmluZyk6CisgICAgICAgIChTYWZlU3RyaW5nLnByb3RvdHlwZS50b1N0cmlu
Zy5TYWZlU3RyaW5nLnByb3RvdHlwZS50b0hUTUwpOgorICAgICAgICAoY2hlY2tSZXZpc2lvbik6
CisgICAgICAgIChpbnZva2VQYXJ0aWFsV3JhcHBlcik6CisgICAgICAgIChjb250YWluZXIuc3Ry
aWN0KToKKyAgICAgICAgKGNvbnRhaW5lci5sb29rdXApOgorICAgICAgICAoY29udGFpbmVyLmxh
bWJkYSk6CisgICAgICAgIChjb250YWluZXIuZm4pOgorICAgICAgICAoY29udGFpbmVyLnByb2dy
YW0pOgorICAgICAgICAoY29udGFpbmVyLmRhdGEpOgorICAgICAgICAoY29udGFpbmVyLm1lcmdl
KToKKyAgICAgICAgKHJldC5tYWluKToKKyAgICAgICAgKHJldCk6CisgICAgICAgIChyZXQuX3Nl
dHVwKToKKyAgICAgICAgKHJldC5fY2hpbGQpOgorICAgICAgICAodGVtcGxhdGUpOgorICAgICAg
ICAocHJvZyk6CisgICAgICAgICh3cmFwUHJvZ3JhbSk6CisgICAgICAgIChyZXNvbHZlUGFydGlh
bCk6CisgICAgICAgIChpbnZva2VQYXJ0aWFsKToKKyAgICAgICAgKG5vb3ApOgorICAgICAgICAo
aW5pdERhdGEpOgorICAgICAgICAoZXhlY3V0ZURlY29yYXRvcnMpOgorICAgICAgICAoSGFuZGxl
YmFycy5ub0NvbmZsaWN0KToKKyAgICAgICAgKGNyZWF0ZS5oYi50ZW1wbGF0ZSk6CisgICAgICAg
IChjcmVhdGUpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9oYW5k
bGViYXJzLnJ1bnRpbWUuYW1kLm1pbi5qczogQWRkZWQuCisgICAgICAgIChiKToKKyAgICAgICAg
KGMpOgorICAgICAgICAoZCk6CisgICAgICAgIChlKToKKyAgICAgICAgKGYpOgorICAgICAgICAo
aCk6CisgICAgICAgIChpKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rp
c3QvaGFuZGxlYmFycy5ydW50aW1lLmpzOiBBZGRlZC4KKyAgICAgICAgKHdlYnBhY2tVbml2ZXJz
YWxNb2R1bGVEZWZpbml0aW9uKToKKyAgICAgICAgKHJldHVybik6CisgICAgICAgIChjcmVhdGUu
aGIudGVtcGxhdGUpOgorICAgICAgICAoY3JlYXRlKToKKyAgICAgICAgKGV4cG9ydHMuc3RyaW5n
X2FwcGVhcmVkX2hlcmUpOgorICAgICAgICAoSGFuZGxlYmFyc0Vudmlyb25tZW50KToKKyAgICAg
ICAgKEhhbmRsZWJhcnNFbnZpcm9ubWVudC5wcm90b3R5cGUucmVnaXN0ZXJIZWxwZXIpOgorICAg
ICAgICAoSGFuZGxlYmFyc0Vudmlyb25tZW50LnByb3RvdHlwZS51bnJlZ2lzdGVySGVscGVyKToK
KyAgICAgICAgKEhhbmRsZWJhcnNFbnZpcm9ubWVudC5wcm90b3R5cGUucmVnaXN0ZXJQYXJ0aWFs
KToKKyAgICAgICAgKEhhbmRsZWJhcnNFbnZpcm9ubWVudC5wcm90b3R5cGUudW5yZWdpc3RlclBh
cnRpYWwpOgorICAgICAgICAoSGFuZGxlYmFyc0Vudmlyb25tZW50LnByb3RvdHlwZS5yZWdpc3Rl
ckRlY29yYXRvcik6CisgICAgICAgIChIYW5kbGViYXJzRW52aXJvbm1lbnQucHJvdG90eXBlLnVu
cmVnaXN0ZXJEZWNvcmF0b3IpOgorICAgICAgICAoYmFkQ2hhcnMucG9zc2libGUpOgorICAgICAg
ICAoZXh0ZW5kKToKKyAgICAgICAgKGlzRnVuY3Rpb24pOgorICAgICAgICAoaXNGdW5jdGlvbi5l
eHBvcnRzLmlzRnVuY3Rpb24uaXNGdW5jdGlvbik6CisgICAgICAgIChpc0FycmF5LkFycmF5Lmlz
QXJyYXkpOgorICAgICAgICAoaW5kZXhPZik6CisgICAgICAgIChlc2NhcGVFeHByZXNzaW9uKToK
KyAgICAgICAgKGlzRW1wdHkpOgorICAgICAgICAoY3JlYXRlRnJhbWUpOgorICAgICAgICAoYmxv
Y2tQYXJhbXMpOgorICAgICAgICAoYXBwZW5kQ29udGV4dFBhdGgpOgorICAgICAgICAoRXhjZXB0
aW9uKToKKyAgICAgICAgKG1vZHVsZS5leHBvcnRzKToKKyAgICAgICAgKHJlZ2lzdGVyRGVmYXVs
dEhlbHBlcnMpOgorICAgICAgICAocmVnaXN0ZXJEZWZhdWx0RGVjb3JhdG9ycyk6CisgICAgICAg
IChsb2dnZXIubG9va3VwTGV2ZWwpOgorICAgICAgICAobG9nZ2VyLmxvZyk6CisgICAgICAgIChT
YWZlU3RyaW5nKToKKyAgICAgICAgKFNhZmVTdHJpbmcucHJvdG90eXBlLnRvU3RyaW5nLlNhZmVT
dHJpbmcucHJvdG90eXBlLnRvSFRNTCk6CisgICAgICAgIChjaGVja1JldmlzaW9uKToKKyAgICAg
ICAgKGludm9rZVBhcnRpYWxXcmFwcGVyKToKKyAgICAgICAgKGNvbnRhaW5lci5zdHJpY3QpOgor
ICAgICAgICAoY29udGFpbmVyLmxvb2t1cCk6CisgICAgICAgIChjb250YWluZXIubGFtYmRhKToK
KyAgICAgICAgKGNvbnRhaW5lci5mbik6CisgICAgICAgIChjb250YWluZXIucHJvZ3JhbSk6Cisg
ICAgICAgIChjb250YWluZXIuZGF0YSk6CisgICAgICAgIChjb250YWluZXIubWVyZ2UpOgorICAg
ICAgICAocmV0Lm1haW4pOgorICAgICAgICAocmV0KToKKyAgICAgICAgKHJldC5fc2V0dXApOgor
ICAgICAgICAocmV0Ll9jaGlsZCk6CisgICAgICAgICh0ZW1wbGF0ZSk6CisgICAgICAgIChwcm9n
KToKKyAgICAgICAgKHdyYXBQcm9ncmFtKToKKyAgICAgICAgKHJlc29sdmVQYXJ0aWFsKToKKyAg
ICAgICAgKGludm9rZVBhcnRpYWwpOgorICAgICAgICAobm9vcCk6CisgICAgICAgIChpbml0RGF0
YSk6CisgICAgICAgIChleGVjdXRlRGVjb3JhdG9ycyk6CisgICAgICAgIChIYW5kbGViYXJzLm5v
Q29uZmxpY3QpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9oYW5k
bGViYXJzLnJ1bnRpbWUubWluLmpzOiBBZGRlZC4KKyAgICAgICAgKHJldHVybi5iKToKKyAgICAg
ICAgKHJldHVybik6CisgICAgICAgIChkLmEudGVtcGxhdGUpOgorICAgICAgICAoZCk6CisgICAg
ICAgIChiLnN0cmluZ19hcHBlYXJlZF9oZXJlKToKKyAgICAgICAgKGQucHJvdG90eXBlLnJlZ2lz
dGVySGVscGVyKToKKyAgICAgICAgKGQucHJvdG90eXBlLnVucmVnaXN0ZXJIZWxwZXIpOgorICAg
ICAgICAoZC5wcm90b3R5cGUucmVnaXN0ZXJQYXJ0aWFsKToKKyAgICAgICAgKGQucHJvdG90eXBl
LnVucmVnaXN0ZXJQYXJ0aWFsKToKKyAgICAgICAgKGQucHJvdG90eXBlLnJlZ2lzdGVyRGVjb3Jh
dG9yKToKKyAgICAgICAgKGQucHJvdG90eXBlLnVucmVnaXN0ZXJEZWNvcmF0b3IpOgorICAgICAg
ICAoYyk6CisgICAgICAgIChlKToKKyAgICAgICAgKGYpOgorICAgICAgICAoZyk6CisgICAgICAg
IChpKToKKyAgICAgICAgKGopOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMv
ZG9jcy9jb21waWxlci1hcGkubWQ6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hh
bmRsZWJhcnMvZG9jcy9kZWNvcmF0b3JzLWFwaS5tZDogQWRkZWQuCisgICAgICAgICogU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2Rl
X21vZHVsZXMvaGFuZGxlYmFycy9saWIvaGFuZGxlYmFycy5qczogQWRkZWQuCisgICAgICAgIChj
cmVhdGUuaGIuY29tcGlsZSk6CisgICAgICAgIChjcmVhdGUuaGIucHJlY29tcGlsZSk6CisgICAg
ICAgIChjcmVhdGUpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvbGliL2hh
bmRsZWJhcnMucnVudGltZS5qczogQWRkZWQuCisgICAgICAgIChjcmVhdGUuaGIudGVtcGxhdGUp
OgorICAgICAgICAoY3JlYXRlKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJz
L2xpYi9oYW5kbGViYXJzL2Jhc2UuanM6IEFkZGVkLgorICAgICAgICAoZXhwb3J0LkhhbmRsZWJh
cnNFbnZpcm9ubWVudCk6CisgICAgICAgIChIYW5kbGViYXJzRW52aXJvbm1lbnQucHJvdG90eXBl
LnJlZ2lzdGVySGVscGVyKToKKyAgICAgICAgKEhhbmRsZWJhcnNFbnZpcm9ubWVudC5wcm90b3R5
cGUudW5yZWdpc3RlckhlbHBlcik6CisgICAgICAgIChIYW5kbGViYXJzRW52aXJvbm1lbnQucHJv
dG90eXBlLnJlZ2lzdGVyUGFydGlhbCk6CisgICAgICAgIChIYW5kbGViYXJzRW52aXJvbm1lbnQu
cHJvdG90eXBlLnVucmVnaXN0ZXJQYXJ0aWFsKToKKyAgICAgICAgKEhhbmRsZWJhcnNFbnZpcm9u
bWVudC5wcm90b3R5cGUucmVnaXN0ZXJEZWNvcmF0b3IpOgorICAgICAgICAoSGFuZGxlYmFyc0Vu
dmlyb25tZW50LnByb3RvdHlwZS51bnJlZ2lzdGVyRGVjb3JhdG9yKToKKyAgICAgICAgKiBTcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25v
ZGVfbW9kdWxlcy9oYW5kbGViYXJzL2xpYi9oYW5kbGViYXJzL2NvbXBpbGVyL2FzdC5qczogQWRk
ZWQuCisgICAgICAgIChsZXQuQVNULmhlbHBlcnMuaGVscGVyRXhwcmVzc2lvbik6CisgICAgICAg
IChsZXQuQVNULmhlbHBlcnMuc2NvcGVkSWQpOgorICAgICAgICAobGV0LkFTVC5oZWxwZXJzLnNp
bXBsZUlkKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2xpYi9oYW5kbGVi
YXJzL2NvbXBpbGVyL2Jhc2UuanM6IEFkZGVkLgorICAgICAgICAoeXkubG9jSW5mbyk6CisgICAg
ICAgIChleHBvcnQucGFyc2UpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMv
bGliL2hhbmRsZWJhcnMvY29tcGlsZXIvY29kZS1nZW4uanM6IEFkZGVkLgorICAgICAgICAoY2F0
Y2gpOgorICAgICAgICAoU291cmNlTm9kZS5Tb3VyY2VOb2RlKToKKyAgICAgICAgKFNvdXJjZU5v
ZGUuU291cmNlTm9kZS5wcm90b3R5cGUuYWRkKToKKyAgICAgICAgKFNvdXJjZU5vZGUuU291cmNl
Tm9kZS5wcm90b3R5cGUucHJlcGVuZCk6CisgICAgICAgIChTb3VyY2VOb2RlLlNvdXJjZU5vZGUu
cHJvdG90eXBlLnRvU3RyaW5nV2l0aFNvdXJjZU1hcCk6CisgICAgICAgIChTb3VyY2VOb2RlLlNv
dXJjZU5vZGUucHJvdG90eXBlLnRvU3RyaW5nKToKKyAgICAgICAgKGNhc3RDaHVuayk6CisgICAg
ICAgIChDb2RlR2VuKToKKyAgICAgICAgKENvZGVHZW4ucHJvdG90eXBlLmlzRW1wdHkpOgorICAg
ICAgICAoQ29kZUdlbi5wcm90b3R5cGUucHJlcGVuZCk6CisgICAgICAgIChDb2RlR2VuLnByb3Rv
dHlwZS5wdXNoKToKKyAgICAgICAgKENvZGVHZW4ucHJvdG90eXBlLm1lcmdlKToKKyAgICAgICAg
KENvZGVHZW4ucHJvdG90eXBlLmVhY2gpOgorICAgICAgICAoQ29kZUdlbi5wcm90b3R5cGUuZW1w
dHkpOgorICAgICAgICAoQ29kZUdlbi5wcm90b3R5cGUud3JhcCk6CisgICAgICAgIChDb2RlR2Vu
LnByb3RvdHlwZSk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9saWIvaGFu
ZGxlYmFycy9jb21waWxlci9jb21waWxlci5qczogQWRkZWQuCisgICAgICAgIChleHBvcnQuQ29t
cGlsZXIpOgorICAgICAgICAoQ29tcGlsZXIucHJvdG90eXBlLmVxdWFscyk6CisgICAgICAgIChD
b21waWxlci5wcm90b3R5cGUuY29tcGlsZSk6CisgICAgICAgIChDb21waWxlci5wcm90b3R5cGUu
Y29tcGlsZVByb2dyYW0pOgorICAgICAgICAoQ29tcGlsZXIucHJvdG90eXBlLmFjY2VwdCk6Cisg
ICAgICAgIChDb21waWxlci5wcm90b3R5cGUuUHJvZ3JhbSk6CisgICAgICAgIChDb21waWxlci5w
cm90b3R5cGUuQmxvY2tTdGF0ZW1lbnQpOgorICAgICAgICAoQ29tcGlsZXIucHJvdG90eXBlLkRl
Y29yYXRvckJsb2NrKToKKyAgICAgICAgKENvbXBpbGVyLnByb3RvdHlwZS5QYXJ0aWFsU3RhdGVt
ZW50KToKKyAgICAgICAgKENvbXBpbGVyLnByb3RvdHlwZS5QYXJ0aWFsQmxvY2tTdGF0ZW1lbnQp
OgorICAgICAgICAoQ29tcGlsZXIucHJvdG90eXBlLk11c3RhY2hlU3RhdGVtZW50KToKKyAgICAg
ICAgKENvbXBpbGVyLnByb3RvdHlwZS5EZWNvcmF0b3IpOgorICAgICAgICAoQ29tcGlsZXIucHJv
dG90eXBlLkNvbnRlbnRTdGF0ZW1lbnQpOgorICAgICAgICAoQ29tcGlsZXIucHJvdG90eXBlLkNv
bW1lbnRTdGF0ZW1lbnQpOgorICAgICAgICAoQ29tcGlsZXIucHJvdG90eXBlLlN1YkV4cHJlc3Np
b24pOgorICAgICAgICAoQ29tcGlsZXIucHJvdG90eXBlLmFtYmlndW91c1NleHByKToKKyAgICAg
ICAgKENvbXBpbGVyLnByb3RvdHlwZS5zaW1wbGVTZXhwcik6CisgICAgICAgIChDb21waWxlci5w
cm90b3R5cGUuaGVscGVyU2V4cHIpOgorICAgICAgICAoQ29tcGlsZXIucHJvdG90eXBlLlBhdGhF
eHByZXNzaW9uKToKKyAgICAgICAgKENvbXBpbGVyLnByb3RvdHlwZS5TdHJpbmdMaXRlcmFsKToK
KyAgICAgICAgKENvbXBpbGVyLnByb3RvdHlwZS5OdW1iZXJMaXRlcmFsKToKKyAgICAgICAgKENv
bXBpbGVyLnByb3RvdHlwZS5Cb29sZWFuTGl0ZXJhbCk6CisgICAgICAgIChDb21waWxlci5wcm90
b3R5cGUuVW5kZWZpbmVkTGl0ZXJhbCk6CisgICAgICAgIChDb21waWxlci5wcm90b3R5cGUuTnVs
bExpdGVyYWwpOgorICAgICAgICAoQ29tcGlsZXIucHJvdG90eXBlLkhhc2gpOgorICAgICAgICAo
Q29tcGlsZXIucHJvdG90eXBlLm9wY29kZSk6CisgICAgICAgIChDb21waWxlci5wcm90b3R5cGUu
YWRkRGVwdGgpOgorICAgICAgICAoQ29tcGlsZXIucHJvdG90eXBlLmNsYXNzaWZ5U2V4cHIpOgor
ICAgICAgICAoQ29tcGlsZXIucHJvdG90eXBlLnB1c2hQYXJhbXMpOgorICAgICAgICAoQ29tcGls
ZXIucHJvdG90eXBlLnB1c2hQYXJhbSk6CisgICAgICAgIChDb21waWxlci5wcm90b3R5cGUpOgor
ICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvbGliL2hhbmRsZWJhcnMvY29tcGls
ZXIvaGVscGVycy5qczogQWRkZWQuCisgICAgICAgICh2YWxpZGF0ZUNsb3NlKToKKyAgICAgICAg
KGV4cG9ydC5Tb3VyY2VMb2NhdGlvbik6CisgICAgICAgIChleHBvcnQuaWQpOgorICAgICAgICAo
ZXhwb3J0LnN0cmlwRmxhZ3MpOgorICAgICAgICAoZXhwb3J0LnN0cmlwQ29tbWVudCk6CisgICAg
ICAgIChleHBvcnQucHJlcGFyZVBhdGgpOgorICAgICAgICAoZXhwb3J0LnByZXBhcmVNdXN0YWNo
ZSk6CisgICAgICAgIChleHBvcnQucHJlcGFyZVJhd0Jsb2NrKToKKyAgICAgICAgKGV4cG9ydC5w
cmVwYXJlQmxvY2spOgorICAgICAgICAoZXhwb3J0LnByZXBhcmVQcm9ncmFtKToKKyAgICAgICAg
KGV4cG9ydC5wcmVwYXJlUGFydGlhbEJsb2NrKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9o
YW5kbGViYXJzL2xpYi9oYW5kbGViYXJzL2NvbXBpbGVyL2phdmFzY3JpcHQtY29tcGlsZXIuanM6
IEFkZGVkLgorICAgICAgICAoTGl0ZXJhbCk6CisgICAgICAgIChKYXZhU2NyaXB0Q29tcGlsZXIp
OgorICAgICAgICAoSmF2YVNjcmlwdENvbXBpbGVyLnByb3RvdHlwZS5uYW1lTG9va3VwKToKKyAg
ICAgICAgKEphdmFTY3JpcHRDb21waWxlci5wcm90b3R5cGUuZGVwdGhlZExvb2t1cCk6CisgICAg
ICAgIChKYXZhU2NyaXB0Q29tcGlsZXIucHJvdG90eXBlLmNvbXBpbGVySW5mbyk6CisgICAgICAg
IChKYXZhU2NyaXB0Q29tcGlsZXIucHJvdG90eXBlLmFwcGVuZFRvQnVmZmVyKToKKyAgICAgICAg
KEphdmFTY3JpcHRDb21waWxlci5wcm90b3R5cGUuaW5pdGlhbGl6ZUJ1ZmZlcik6CisgICAgICAg
IChKYXZhU2NyaXB0Q29tcGlsZXIucHJvdG90eXBlLmNvbXBpbGUpOgorICAgICAgICAoSmF2YVNj
cmlwdENvbXBpbGVyLnByb3RvdHlwZS5wcmVhbWJsZSk6CisgICAgICAgIChKYXZhU2NyaXB0Q29t
cGlsZXIucHJvdG90eXBlLmNyZWF0ZUZ1bmN0aW9uQ29udGV4dCk6CisgICAgICAgIChKYXZhU2Ny
aXB0Q29tcGlsZXIucHJvdG90eXBlLm1lcmdlU291cmNlKToKKyAgICAgICAgKEphdmFTY3JpcHRD
b21waWxlci5wcm90b3R5cGUuYmxvY2tWYWx1ZSk6CisgICAgICAgIChKYXZhU2NyaXB0Q29tcGls
ZXIucHJvdG90eXBlLmFtYmlndW91c0Jsb2NrVmFsdWUpOgorICAgICAgICAoSmF2YVNjcmlwdENv
bXBpbGVyLnByb3RvdHlwZS5hcHBlbmRDb250ZW50KToKKyAgICAgICAgKEphdmFTY3JpcHRDb21w
aWxlci5wcm90b3R5cGUuYXBwZW5kKToKKyAgICAgICAgKEphdmFTY3JpcHRDb21waWxlci5wcm90
b3R5cGUuYXBwZW5kRXNjYXBlZCk6CisgICAgICAgIChKYXZhU2NyaXB0Q29tcGlsZXIucHJvdG90
eXBlLmdldENvbnRleHQpOgorICAgICAgICAoSmF2YVNjcmlwdENvbXBpbGVyLnByb3RvdHlwZS5w
dXNoQ29udGV4dCk6CisgICAgICAgIChKYXZhU2NyaXB0Q29tcGlsZXIucHJvdG90eXBlLmxvb2t1
cE9uQ29udGV4dCk6CisgICAgICAgIChKYXZhU2NyaXB0Q29tcGlsZXIucHJvdG90eXBlLmxvb2t1
cEJsb2NrUGFyYW0pOgorICAgICAgICAoSmF2YVNjcmlwdENvbXBpbGVyLnByb3RvdHlwZS5sb29r
dXBEYXRhKToKKyAgICAgICAgKEphdmFTY3JpcHRDb21waWxlci5wcm90b3R5cGUucmVzb2x2ZVBh
dGgpOgorICAgICAgICAoSmF2YVNjcmlwdENvbXBpbGVyLnByb3RvdHlwZS5yZXNvbHZlUG9zc2li
bGVMYW1iZGEpOgorICAgICAgICAoSmF2YVNjcmlwdENvbXBpbGVyLnByb3RvdHlwZS5wdXNoU3Ry
aW5nUGFyYW0pOgorICAgICAgICAoSmF2YVNjcmlwdENvbXBpbGVyLnByb3RvdHlwZS5lbXB0eUhh
c2gpOgorICAgICAgICAoSmF2YVNjcmlwdENvbXBpbGVyLnByb3RvdHlwZS5wdXNoSGFzaCk6Cisg
ICAgICAgIChKYXZhU2NyaXB0Q29tcGlsZXIucHJvdG90eXBlLnBvcEhhc2gpOgorICAgICAgICAo
SmF2YVNjcmlwdENvbXBpbGVyLnByb3RvdHlwZS5wdXNoU3RyaW5nKToKKyAgICAgICAgKEphdmFT
Y3JpcHRDb21waWxlci5wcm90b3R5cGUucHVzaExpdGVyYWwpOgorICAgICAgICAoSmF2YVNjcmlw
dENvbXBpbGVyLnByb3RvdHlwZS5wdXNoUHJvZ3JhbSk6CisgICAgICAgIChKYXZhU2NyaXB0Q29t
cGlsZXIucHJvdG90eXBlLnJlZ2lzdGVyRGVjb3JhdG9yKToKKyAgICAgICAgKEphdmFTY3JpcHRD
b21waWxlci5wcm90b3R5cGUuaW52b2tlSGVscGVyKToKKyAgICAgICAgKEphdmFTY3JpcHRDb21w
aWxlci5wcm90b3R5cGUuaW52b2tlS25vd25IZWxwZXIpOgorICAgICAgICAoSmF2YVNjcmlwdENv
bXBpbGVyLnByb3RvdHlwZS5pbnZva2VBbWJpZ3VvdXMpOgorICAgICAgICAoSmF2YVNjcmlwdENv
bXBpbGVyLnByb3RvdHlwZS5pbnZva2VQYXJ0aWFsKToKKyAgICAgICAgKEphdmFTY3JpcHRDb21w
aWxlci5wcm90b3R5cGUuYXNzaWduVG9IYXNoKToKKyAgICAgICAgKEphdmFTY3JpcHRDb21waWxl
ci5wcm90b3R5cGUucHVzaElkKToKKyAgICAgICAgKEphdmFTY3JpcHRDb21waWxlci5wcm90b3R5
cGUuY29tcGlsZUNoaWxkcmVuKToKKyAgICAgICAgKEphdmFTY3JpcHRDb21waWxlci5wcm90b3R5
cGUubWF0Y2hFeGlzdGluZ1Byb2dyYW0pOgorICAgICAgICAoSmF2YVNjcmlwdENvbXBpbGVyLnBy
b3RvdHlwZS5wcm9ncmFtRXhwcmVzc2lvbik6CisgICAgICAgIChKYXZhU2NyaXB0Q29tcGlsZXIu
cHJvdG90eXBlLnVzZVJlZ2lzdGVyKToKKyAgICAgICAgKEphdmFTY3JpcHRDb21waWxlci5wcm90
b3R5cGUucHVzaCk6CisgICAgICAgIChKYXZhU2NyaXB0Q29tcGlsZXIucHJvdG90eXBlLnB1c2hT
dGFja0xpdGVyYWwpOgorICAgICAgICAoSmF2YVNjcmlwdENvbXBpbGVyLnByb3RvdHlwZS5wdXNo
U291cmNlKToKKyAgICAgICAgKEphdmFTY3JpcHRDb21waWxlci5wcm90b3R5cGUucmVwbGFjZVN0
YWNrKToKKyAgICAgICAgKEphdmFTY3JpcHRDb21waWxlci5wcm90b3R5cGUuaW5jclN0YWNrKToK
KyAgICAgICAgKEphdmFTY3JpcHRDb21waWxlci5wcm90b3R5cGUudG9wU3RhY2tOYW1lKToKKyAg
ICAgICAgKEphdmFTY3JpcHRDb21waWxlci5wcm90b3R5cGUuZmx1c2hJbmxpbmUpOgorICAgICAg
ICAoSmF2YVNjcmlwdENvbXBpbGVyLnByb3RvdHlwZS5pc0lubGluZSk6CisgICAgICAgIChKYXZh
U2NyaXB0Q29tcGlsZXIucHJvdG90eXBlLnBvcFN0YWNrKToKKyAgICAgICAgKEphdmFTY3JpcHRD
b21waWxlci5wcm90b3R5cGUudG9wU3RhY2spOgorICAgICAgICAoSmF2YVNjcmlwdENvbXBpbGVy
LnByb3RvdHlwZS5jb250ZXh0TmFtZSk6CisgICAgICAgIChKYXZhU2NyaXB0Q29tcGlsZXIucHJv
dG90eXBlLnF1b3RlZFN0cmluZyk6CisgICAgICAgIChKYXZhU2NyaXB0Q29tcGlsZXIucHJvdG90
eXBlLm9iamVjdExpdGVyYWwpOgorICAgICAgICAoSmF2YVNjcmlwdENvbXBpbGVyLnByb3RvdHlw
ZS5hbGlhc2FibGUpOgorICAgICAgICAoSmF2YVNjcmlwdENvbXBpbGVyLnByb3RvdHlwZS5zZXR1
cEhlbHBlcik6CisgICAgICAgIChKYXZhU2NyaXB0Q29tcGlsZXIucHJvdG90eXBlLnNldHVwUGFy
YW1zKToKKyAgICAgICAgKEphdmFTY3JpcHRDb21waWxlci5wcm90b3R5cGUuc2V0dXBIZWxwZXJB
cmdzKToKKyAgICAgICAgKEphdmFTY3JpcHRDb21waWxlci5pc1ZhbGlkSmF2YVNjcmlwdFZhcmlh
YmxlTmFtZSk6CisgICAgICAgIChzdHJpY3RMb29rdXApOgorICAgICAgICAqIFNwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1
bGVzL2hhbmRsZWJhcnMvbGliL2hhbmRsZWJhcnMvY29tcGlsZXIvcGFyc2VyLmpzOiBBZGRlZC4K
KyAgICAgICAgKHBhcnNlci50cmFjZSk6CisgICAgICAgIChwYXJzZXIucGVyZm9ybUFjdGlvbik6
CisgICAgICAgIChwYXJzZXIucGFyc2VFcnJvcik6CisgICAgICAgIChwYXJzZXIucGFyc2UucGFy
c2UucG9wU3RhY2spOgorICAgICAgICAocGFyc2VyLnBhcnNlLnBhcnNlLmxleCk6CisgICAgICAg
IChwYXJzZXIucGFyc2UpOgorICAgICAgICAoUGFyc2VyKToKKyAgICAgICAgKiBTcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9k
dWxlcy9oYW5kbGViYXJzL2xpYi9oYW5kbGViYXJzL2NvbXBpbGVyL3ByaW50ZXIuanM6IEFkZGVk
LgorICAgICAgICAoZXhwb3J0LnByaW50KToKKyAgICAgICAgKGV4cG9ydC5QcmludFZpc2l0b3Ip
OgorICAgICAgICAoUHJpbnRWaXNpdG9yLnByb3RvdHlwZS5wYWQpOgorICAgICAgICAoUHJpbnRW
aXNpdG9yLnByb3RvdHlwZS5Qcm9ncmFtKToKKyAgICAgICAgKFByaW50VmlzaXRvci5wcm90b3R5
cGUuTXVzdGFjaGVTdGF0ZW1lbnQpOgorICAgICAgICAoUHJpbnRWaXNpdG9yLnByb3RvdHlwZS5E
ZWNvcmF0b3IpOgorICAgICAgICAoUHJpbnRWaXNpdG9yLnByb3RvdHlwZS5CbG9ja1N0YXRlbWVu
dC5QcmludFZpc2l0b3IucHJvdG90eXBlLkRlY29yYXRvckJsb2NrKToKKyAgICAgICAgKFByaW50
VmlzaXRvci5wcm90b3R5cGUuUGFydGlhbFN0YXRlbWVudCk6CisgICAgICAgIChQcmludFZpc2l0
b3IucHJvdG90eXBlLlBhcnRpYWxCbG9ja1N0YXRlbWVudCk6CisgICAgICAgIChQcmludFZpc2l0
b3IucHJvdG90eXBlLkNvbnRlbnRTdGF0ZW1lbnQpOgorICAgICAgICAoUHJpbnRWaXNpdG9yLnBy
b3RvdHlwZS5Db21tZW50U3RhdGVtZW50KToKKyAgICAgICAgKFByaW50VmlzaXRvci5wcm90b3R5
cGUuU3ViRXhwcmVzc2lvbik6CisgICAgICAgIChQcmludFZpc2l0b3IucHJvdG90eXBlLlBhdGhF
eHByZXNzaW9uKToKKyAgICAgICAgKFByaW50VmlzaXRvci5wcm90b3R5cGUuU3RyaW5nTGl0ZXJh
bCk6CisgICAgICAgIChQcmludFZpc2l0b3IucHJvdG90eXBlLk51bWJlckxpdGVyYWwpOgorICAg
ICAgICAoUHJpbnRWaXNpdG9yLnByb3RvdHlwZS5Cb29sZWFuTGl0ZXJhbCk6CisgICAgICAgIChQ
cmludFZpc2l0b3IucHJvdG90eXBlLlVuZGVmaW5lZExpdGVyYWwpOgorICAgICAgICAoUHJpbnRW
aXNpdG9yLnByb3RvdHlwZS5OdWxsTGl0ZXJhbCk6CisgICAgICAgIChQcmludFZpc2l0b3IucHJv
dG90eXBlLkhhc2gpOgorICAgICAgICAoUHJpbnRWaXNpdG9yLnByb3RvdHlwZS5IYXNoUGFpcik6
CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9saWIvaGFuZGxlYmFycy9jb21w
aWxlci92aXNpdG9yLmpzOiBBZGRlZC4KKyAgICAgICAgKFZpc2l0b3IpOgorICAgICAgICAoVmlz
aXRvci5wcm90b3R5cGUuYWNjZXB0S2V5KToKKyAgICAgICAgKFZpc2l0b3IucHJvdG90eXBlLmFj
Y2VwdFJlcXVpcmVkKToKKyAgICAgICAgKFZpc2l0b3IucHJvdG90eXBlLmFjY2VwdEFycmF5KToK
KyAgICAgICAgKFZpc2l0b3IucHJvdG90eXBlLmFjY2VwdCk6CisgICAgICAgIChWaXNpdG9yLnBy
b3RvdHlwZS5Qcm9ncmFtKToKKyAgICAgICAgKFZpc2l0b3IucHJvdG90eXBlLlBhcnRpYWxCbG9j
a1N0YXRlbWVudCk6CisgICAgICAgIChWaXNpdG9yLnByb3RvdHlwZS5Db250ZW50U3RhdGVtZW50
KToKKyAgICAgICAgKFZpc2l0b3IucHJvdG90eXBlLkNvbW1lbnRTdGF0ZW1lbnQpOgorICAgICAg
ICAoVmlzaXRvci5wcm90b3R5cGUuUGF0aEV4cHJlc3Npb24pOgorICAgICAgICAoVmlzaXRvci5w
cm90b3R5cGUuU3RyaW5nTGl0ZXJhbCk6CisgICAgICAgIChWaXNpdG9yLnByb3RvdHlwZS5OdW1i
ZXJMaXRlcmFsKToKKyAgICAgICAgKFZpc2l0b3IucHJvdG90eXBlLkJvb2xlYW5MaXRlcmFsKToK
KyAgICAgICAgKFZpc2l0b3IucHJvdG90eXBlLlVuZGVmaW5lZExpdGVyYWwpOgorICAgICAgICAo
VmlzaXRvci5wcm90b3R5cGUuTnVsbExpdGVyYWwpOgorICAgICAgICAoVmlzaXRvci5wcm90b3R5
cGUuSGFzaCk6CisgICAgICAgIChWaXNpdG9yLnByb3RvdHlwZS5IYXNoUGFpcik6CisgICAgICAg
ICh2aXNpdFN1YkV4cHJlc3Npb24pOgorICAgICAgICAodmlzaXRCbG9jayk6CisgICAgICAgICh2
aXNpdFBhcnRpYWwpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvbGliL2hh
bmRsZWJhcnMvY29tcGlsZXIvd2hpdGVzcGFjZS1jb250cm9sLmpzOiBBZGRlZC4KKyAgICAgICAg
KFdoaXRlc3BhY2VDb250cm9sKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJz
L2xpYi9oYW5kbGViYXJzL2RlY29yYXRvcnMuanM6IEFkZGVkLgorICAgICAgICAoZXhwb3J0LnJl
Z2lzdGVyRGVmYXVsdERlY29yYXRvcnMpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRs
ZWJhcnMvbGliL2hhbmRsZWJhcnMvZGVjb3JhdG9ycy9pbmxpbmUuanM6IEFkZGVkLgorICAgICAg
ICAoZXhwb3J0LmRlZmF1bHQuKToKKyAgICAgICAgKGV4cG9ydC5kZWZhdWx0KToKKyAgICAgICAg
KiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1
ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2xpYi9oYW5kbGViYXJzL2V4Y2VwdGlvbi5qczog
QWRkZWQuCisgICAgICAgIChFeGNlcHRpb24pOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hh
bmRsZWJhcnMvbGliL2hhbmRsZWJhcnMvaGVscGVycy5qczogQWRkZWQuCisgICAgICAgIChleHBv
cnQucmVnaXN0ZXJEZWZhdWx0SGVscGVycyk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFu
ZGxlYmFycy9saWIvaGFuZGxlYmFycy9oZWxwZXJzL2Jsb2NrLWhlbHBlci1taXNzaW5nLmpzOiBB
ZGRlZC4KKyAgICAgICAgKGV4cG9ydC5kZWZhdWx0KToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxl
cy9oYW5kbGViYXJzL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvZWFjaC5qczogQWRkZWQuCisgICAg
ICAgIChleHBvcnQuZGVmYXVsdC4pOgorICAgICAgICAoZXhwb3J0LmRlZmF1bHQpOgorICAgICAg
ICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9q
cXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvbGliL2hhbmRsZWJhcnMvaGVscGVycy9oZWxw
ZXItbWlzc2luZy5qczogQWRkZWQuCisgICAgICAgIChleHBvcnQuZGVmYXVsdCk6CisgICAgICAg
ICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2px
dWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9saWIvaGFuZGxlYmFycy9oZWxwZXJzL2lmLmpz
OiBBZGRlZC4KKyAgICAgICAgKGV4cG9ydC5kZWZhdWx0KToKKyAgICAgICAgKiBTcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9k
dWxlcy9oYW5kbGViYXJzL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvbG9nLmpzOiBBZGRlZC4KKyAg
ICAgICAgKGV4cG9ydC5kZWZhdWx0KToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGVi
YXJzL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvbG9va3VwLmpzOiBBZGRlZC4KKyAgICAgICAgKGV4
cG9ydC5kZWZhdWx0KToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2xpYi9o
YW5kbGViYXJzL2hlbHBlcnMvd2l0aC5qczogQWRkZWQuCisgICAgICAgIChleHBvcnQuZGVmYXVs
dCk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9saWIvaGFuZGxlYmFycy9s
b2dnZXIuanM6IEFkZGVkLgorICAgICAgICAobGV0LmxvZ2dlci5sb29rdXBMZXZlbCk6CisgICAg
ICAgIChsZXQubG9nZ2VyLmxvZyk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFy
cy9saWIvaGFuZGxlYmFycy9uby1jb25mbGljdC5qczogQWRkZWQuCisgICAgICAgIChleHBvcnQu
ZGVmYXVsdC5IYW5kbGViYXJzLm5vQ29uZmxpY3QpOgorICAgICAgICAoZXhwb3J0LmRlZmF1bHQp
OgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvbGliL2hhbmRsZWJhcnMvcnVu
dGltZS5qczogQWRkZWQuCisgICAgICAgIChleHBvcnQuY2hlY2tSZXZpc2lvbik6CisgICAgICAg
IChpbnZva2VQYXJ0aWFsV3JhcHBlcik6CisgICAgICAgIChsZXQuY29udGFpbmVyLnN0cmljdCk6
CisgICAgICAgIChsZXQuY29udGFpbmVyLmxvb2t1cCk6CisgICAgICAgIChsZXQuY29udGFpbmVy
LmxhbWJkYSk6CisgICAgICAgIChsZXQuY29udGFpbmVyLmZuKToKKyAgICAgICAgKGxldC5jb250
YWluZXIucHJvZ3JhbSk6CisgICAgICAgIChsZXQuY29udGFpbmVyLmRhdGEpOgorICAgICAgICAo
bGV0LmNvbnRhaW5lci5tZXJnZSk6CisgICAgICAgIChyZXQpOgorICAgICAgICAobWFpbik6Cisg
ICAgICAgIChyZXQuX3NldHVwKToKKyAgICAgICAgKHJldC5fY2hpbGQpOgorICAgICAgICAoZXhw
b3J0LnRlbXBsYXRlKToKKyAgICAgICAgKHByb2cpOgorICAgICAgICAoZXhwb3J0LndyYXBQcm9n
cmFtKToKKyAgICAgICAgKGV4cG9ydC5yZXNvbHZlUGFydGlhbCk6CisgICAgICAgIChleHBvcnQu
aW52b2tlUGFydGlhbCk6CisgICAgICAgIChleHBvcnQubm9vcCk6CisgICAgICAgIChpbml0RGF0
YSk6CisgICAgICAgIChleGVjdXRlRGVjb3JhdG9ycyk6CisgICAgICAgICogU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVs
ZXMvaGFuZGxlYmFycy9saWIvaGFuZGxlYmFycy9zYWZlLXN0cmluZy5qczogQWRkZWQuCisgICAg
ICAgIChTYWZlU3RyaW5nKToKKyAgICAgICAgKFNhZmVTdHJpbmcucHJvdG90eXBlLnRvU3RyaW5n
LlNhZmVTdHJpbmcucHJvdG90eXBlLnRvSFRNTCk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMv
aGFuZGxlYmFycy9saWIvaGFuZGxlYmFycy91dGlscy5qczogQWRkZWQuCisgICAgICAgIChjb25z
dC5iYWRDaGFycy5wb3NzaWJsZSk6CisgICAgICAgIChleHBvcnQuZXh0ZW5kKToKKyAgICAgICAg
KGxldC5pc0Z1bmN0aW9uKToKKyAgICAgICAgKGlzRnVuY3Rpb24uaXNGdW5jdGlvbik6CisgICAg
ICAgIChpc0Z1bmN0aW9uKToKKyAgICAgICAgKGV4cG9ydC5jb25zdC5pc0FycmF5LkFycmF5Lmlz
QXJyYXkpOgorICAgICAgICAoZXhwb3J0LmluZGV4T2YpOgorICAgICAgICAoZXhwb3J0LmVzY2Fw
ZUV4cHJlc3Npb24pOgorICAgICAgICAoZXhwb3J0LmlzRW1wdHkpOgorICAgICAgICAoZXhwb3J0
LmNyZWF0ZUZyYW1lKToKKyAgICAgICAgKGV4cG9ydC5ibG9ja1BhcmFtcyk6CisgICAgICAgIChl
eHBvcnQuYXBwZW5kQ29udGV4dFBhdGgpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRs
ZWJhcnMvbGliL2luZGV4LmpzOiBBZGRlZC4KKyAgICAgICAgKGV4dGVuc2lvbik6CisgICAgICAg
ICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2px
dWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9saWIvcHJlY29tcGlsZXIuanM6IEFkZGVkLgor
ICAgICAgICAobW9kdWxlLmV4cG9ydHMubG9hZFRlbXBsYXRlcyk6CisgICAgICAgIChtb2R1bGUu
ZXhwb3J0cy5jbGkpOgorICAgICAgICAoYXJyYXlDYXN0KToKKyAgICAgICAgKiBTcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9k
dWxlcy9oYW5kbGViYXJzL3BhY2thZ2UuanNvbjogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21v
ZHVsZXMvaGFuZGxlYmFycy9wcmludC1zY3JpcHQ6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9t
b2R1bGVzL2hhbmRsZWJhcnMvcmVsZWFzZS1ub3Rlcy5tZDogQWRkZWQuCisgICAgICAgICogU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9u
b2RlX21vZHVsZXMvaGFuZGxlYmFycy9ydW50aW1lLmpzOiBBZGRlZC4KKyAgICAgICAgKiBTcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25v
ZGVfbW9kdWxlcy9qcXVlcnkvQVVUSE9SUy50eHQ6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9t
b2R1bGVzL2pxdWVyeS9MSUNFTlNFLnR4dDogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVs
ZXMvanF1ZXJ5L1JFQURNRS5tZDogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1
ZXJ5L2Jvd2VyLmpzb246IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9k
aXN0L2NvcmUuanM6IEFkZGVkLgorICAgICAgICAoalF1ZXJ5KToKKyAgICAgICAgKGZjYW1lbENh
c2UpOgorICAgICAgICAoalF1ZXJ5LmZuLmpRdWVyeS5wcm90b3R5cGUudG9BcnJheSk6CisgICAg
ICAgIChqUXVlcnkuZm4ualF1ZXJ5LnByb3RvdHlwZS5nZXQgaWYpOgorICAgICAgICAoalF1ZXJ5
LmZuLmpRdWVyeS5wcm90b3R5cGUpOgorICAgICAgICAoalF1ZXJ5LmZuLmpRdWVyeS5wcm90b3R5
cGUucHVzaFN0YWNrKToKKyAgICAgICAgKGpRdWVyeS5mbi5qUXVlcnkucHJvdG90eXBlLmVhY2gp
OgorICAgICAgICAoalF1ZXJ5LmZuLmpRdWVyeS5wcm90b3R5cGUubWFwKToKKyAgICAgICAgKGpR
dWVyeS5mbi5qUXVlcnkucHJvdG90eXBlLnNsaWNlKToKKyAgICAgICAgKGpRdWVyeS5mbi5qUXVl
cnkucHJvdG90eXBlLmZpcnN0KToKKyAgICAgICAgKGpRdWVyeS5mbi5qUXVlcnkucHJvdG90eXBl
Lmxhc3QpOgorICAgICAgICAoalF1ZXJ5LmZuLmpRdWVyeS5wcm90b3R5cGUuZXEpOgorICAgICAg
ICAoalF1ZXJ5LmZuLmpRdWVyeS5wcm90b3R5cGUuZW5kKToKKyAgICAgICAgKGpRdWVyeS5leHRl
bmQualF1ZXJ5LmZuLmV4dGVuZCk6CisgICAgICAgIChqUXVlcnkuZXh0ZW5kLmVycm9yKToKKyAg
ICAgICAgKGpRdWVyeS5leHRlbmQubm9vcCk6CisgICAgICAgIChqUXVlcnkuZXh0ZW5kLmlzRnVu
Y3Rpb24pOgorICAgICAgICAoalF1ZXJ5LmV4dGVuZC5pc1dpbmRvdyk6CisgICAgICAgIChqUXVl
cnkuZXh0ZW5kLmlzTnVtZXJpYyk6CisgICAgICAgIChqUXVlcnkuZXh0ZW5kLmlzUGxhaW5PYmpl
Y3QpOgorICAgICAgICAoalF1ZXJ5LmV4dGVuZC5pc0VtcHR5T2JqZWN0KToKKyAgICAgICAgKGpR
dWVyeS5leHRlbmQudHlwZSk6CisgICAgICAgIChqUXVlcnkuZXh0ZW5kLmdsb2JhbEV2YWwpOgor
ICAgICAgICAoalF1ZXJ5LmV4dGVuZC5jYW1lbENhc2UpOgorICAgICAgICAoalF1ZXJ5LmV4dGVu
ZC5ub2RlTmFtZSk6CisgICAgICAgIChqUXVlcnkuZXh0ZW5kLmVhY2gpOgorICAgICAgICAoalF1
ZXJ5LmV4dGVuZC50cmltKToKKyAgICAgICAgKGpRdWVyeS5leHRlbmQubWFrZUFycmF5KToKKyAg
ICAgICAgKGpRdWVyeS5leHRlbmQuaW5BcnJheSk6CisgICAgICAgIChqUXVlcnkuZXh0ZW5kLm1l
cmdlKToKKyAgICAgICAgKGpRdWVyeS5leHRlbmQuZ3JlcCk6CisgICAgICAgIChqUXVlcnkuZXh0
ZW5kLm1hcCk6CisgICAgICAgIChqUXVlcnkuZXh0ZW5kLnByb3h5KToKKyAgICAgICAgKGlzQXJy
YXlMaWtlKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvZGlzdC9qcXVlcnkuanM6
IENvcGllZCBmcm9tIFBlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvYm93ZXJfY29tcG9uZW50cy9qcXVlcnkv
anF1ZXJ5LmpzLgorICAgICAgICAodHlwZW9mLm1vZHVsZS5zdHJpbmdfYXBwZWFyZWRfaGVyZS50
eXBlb2YubW9kdWxlLmV4cG9ydHMuc3RyaW5nX2FwcGVhcmVkX2hlcmUudHJ1ZSk6CisgICAgICAg
IChqUXVlcnkpOgorICAgICAgICAoZmNhbWVsQ2FzZSk6CisgICAgICAgIChqUXVlcnkuZm4ualF1
ZXJ5LnByb3RvdHlwZS50b0FycmF5KToKKyAgICAgICAgKGpRdWVyeS5mbi5qUXVlcnkucHJvdG90
eXBlLmdldCBpZik6CisgICAgICAgIChqUXVlcnkuZm4ualF1ZXJ5LnByb3RvdHlwZSk6CisgICAg
ICAgIChqUXVlcnkuZm4ualF1ZXJ5LnByb3RvdHlwZS5wdXNoU3RhY2spOgorICAgICAgICAoalF1
ZXJ5LmZuLmpRdWVyeS5wcm90b3R5cGUuZWFjaCk6CisgICAgICAgIChqUXVlcnkuZm4ualF1ZXJ5
LnByb3RvdHlwZS5tYXApOgorICAgICAgICAoalF1ZXJ5LmZuLmpRdWVyeS5wcm90b3R5cGUuc2xp
Y2UpOgorICAgICAgICAoalF1ZXJ5LmZuLmpRdWVyeS5wcm90b3R5cGUuZmlyc3QpOgorICAgICAg
ICAoalF1ZXJ5LmZuLmpRdWVyeS5wcm90b3R5cGUubGFzdCk6CisgICAgICAgIChqUXVlcnkuZm4u
alF1ZXJ5LnByb3RvdHlwZS5lcSk6CisgICAgICAgIChqUXVlcnkuZm4ualF1ZXJ5LnByb3RvdHlw
ZS5lbmQpOgorICAgICAgICAoalF1ZXJ5LmV4dGVuZC5qUXVlcnkuZm4uZXh0ZW5kKToKKyAgICAg
ICAgKGpRdWVyeS5leHRlbmQuZXJyb3IpOgorICAgICAgICAoalF1ZXJ5LmV4dGVuZC5ub29wKToK
KyAgICAgICAgKGpRdWVyeS5leHRlbmQuaXNGdW5jdGlvbik6CisgICAgICAgIChqUXVlcnkuZXh0
ZW5kLmlzV2luZG93KToKKyAgICAgICAgKGpRdWVyeS5leHRlbmQuaXNOdW1lcmljKToKKyAgICAg
ICAgKGpRdWVyeS5leHRlbmQuaXNQbGFpbk9iamVjdCk6CisgICAgICAgIChqUXVlcnkuZXh0ZW5k
LmlzRW1wdHlPYmplY3QpOgorICAgICAgICAoalF1ZXJ5LmV4dGVuZC50eXBlKToKKyAgICAgICAg
KGpRdWVyeS5leHRlbmQuZ2xvYmFsRXZhbCk6CisgICAgICAgIChqUXVlcnkuZXh0ZW5kLmNhbWVs
Q2FzZSk6CisgICAgICAgIChqUXVlcnkuZXh0ZW5kLm5vZGVOYW1lKToKKyAgICAgICAgKGpRdWVy
eS5leHRlbmQuZWFjaCk6CisgICAgICAgIChqUXVlcnkuZXh0ZW5kLnRyaW0pOgorICAgICAgICAo
alF1ZXJ5LmV4dGVuZC5tYWtlQXJyYXkpOgorICAgICAgICAoalF1ZXJ5LmV4dGVuZC5pbkFycmF5
KToKKyAgICAgICAgKGpRdWVyeS5leHRlbmQubWVyZ2UpOgorICAgICAgICAoalF1ZXJ5LmV4dGVu
ZC5ncmVwKToKKyAgICAgICAgKGpRdWVyeS5leHRlbmQubWFwKToKKyAgICAgICAgKGpRdWVyeS5l
eHRlbmQucHJveHkpOgorICAgICAgICAoaXNBcnJheUxpa2UpOgorICAgICAgICAoc29ydE9yZGVy
KToKKyAgICAgICAgKGluZGV4T2YpOgorICAgICAgICAocm5hdGl2ZS5mdW5lc2NhcGUpOgorICAg
ICAgICAocm5hdGl2ZS5mY3NzZXNjYXBlKToKKyAgICAgICAgKHJuYXRpdmUudW5sb2FkSGFuZGxl
cik6CisgICAgICAgIChybmF0aXZlLmNhdGNoLnB1c2gpOgorICAgICAgICAocm5hdGl2ZS5TaXp6
bGUpOgorICAgICAgICAocm5hdGl2ZS5jcmVhdGVDYWNoZSk6CisgICAgICAgIChybmF0aXZlLm1h
cmtGdW5jdGlvbik6CisgICAgICAgIChybmF0aXZlLmFzc2VydCk6CisgICAgICAgIChybmF0aXZl
LmFkZEhhbmRsZSk6CisgICAgICAgIChybmF0aXZlLnNpYmxpbmdDaGVjayk6CisgICAgICAgIChy
bmF0aXZlLmNyZWF0ZUlucHV0UHNldWRvKToKKyAgICAgICAgKHJuYXRpdmUuY3JlYXRlQnV0dG9u
UHNldWRvKToKKyAgICAgICAgKHJuYXRpdmUuY3JlYXRlRGlzYWJsZWRQc2V1ZG8pOgorICAgICAg
ICAocm5hdGl2ZS5jcmVhdGVQb3NpdGlvbmFsUHNldWRvLik6CisgICAgICAgIChybmF0aXZlLmNy
ZWF0ZVBvc2l0aW9uYWxQc2V1ZG8pOgorICAgICAgICAocm5hdGl2ZS4pOgorICAgICAgICAocm5h
dGl2ZS5pc1hNTC5TaXp6bGUuaXNYTUwpOgorICAgICAgICAocm5hdGl2ZS5FeHByLmZpbHRlci5z
dHJpbmdfYXBwZWFyZWRfaGVyZSk6CisgICAgICAgIChybmF0aXZlLkV4cHIuZmluZC5zdHJpbmdf
YXBwZWFyZWRfaGVyZSk6CisgICAgICAgIChybmF0aXZlLmVsc2UuRXhwci5maWx0ZXIuc3RyaW5n
X2FwcGVhcmVkX2hlcmUpOgorICAgICAgICAocm5hdGl2ZS5lbHNlLkV4cHIuZmluZC5zdHJpbmdf
YXBwZWFyZWRfaGVyZSk6CisgICAgICAgIChybmF0aXZlLnNldERvY3VtZW50LlNpenpsZS5zZXRE
b2N1bWVudCk6CisgICAgICAgIChybmF0aXZlLlNpenpsZS5tYXRjaGVzKToKKyAgICAgICAgKHJu
YXRpdmUuU2l6emxlLm1hdGNoZXNTZWxlY3Rvcik6CisgICAgICAgIChybmF0aXZlLlNpenpsZS5j
b250YWlucyk6CisgICAgICAgIChybmF0aXZlLlNpenpsZS5hdHRyKToKKyAgICAgICAgKHJuYXRp
dmUuU2l6emxlLmVzY2FwZSk6CisgICAgICAgIChybmF0aXZlLlNpenpsZS5lcnJvcik6CisgICAg
ICAgIChybmF0aXZlLlNpenpsZS51bmlxdWVTb3J0KToKKyAgICAgICAgKHJuYXRpdmUuZ2V0VGV4
dC5TaXp6bGUuZ2V0VGV4dCk6CisgICAgICAgIChybmF0aXZlLkV4cHIuU2l6emxlLnNlbGVjdG9y
cy5wcmVGaWx0ZXIuc3RyaW5nX2FwcGVhcmVkX2hlcmUpOgorICAgICAgICAocm5hdGl2ZS5FeHBy
LlNpenpsZS5zZWxlY3RvcnMuZmlsdGVyLik6CisgICAgICAgIChybmF0aXZlLkV4cHIuU2l6emxl
LnNlbGVjdG9ycy5maWx0ZXIuc3RyaW5nX2FwcGVhcmVkX2hlcmUpOgorICAgICAgICAocm5hdGl2
ZS5FeHByLlNpenpsZS5zZWxlY3RvcnMucHNldWRvcy4pOgorICAgICAgICAocm5hdGl2ZS5FeHBy
LlNpenpsZS5zZWxlY3RvcnMucHNldWRvcy5zdHJpbmdfYXBwZWFyZWRfaGVyZSk6CisgICAgICAg
IChybmF0aXZlLnNldEZpbHRlcnMpOgorICAgICAgICAocm5hdGl2ZS50b2tlbml6ZS5TaXp6bGUu
dG9rZW5pemUpOgorICAgICAgICAocm5hdGl2ZS50b1NlbGVjdG9yKToKKyAgICAgICAgKHJuYXRp
dmUuYWRkQ29tYmluYXRvcik6CisgICAgICAgIChybmF0aXZlLmVsZW1lbnRNYXRjaGVyKToKKyAg
ICAgICAgKHJuYXRpdmUubXVsdGlwbGVDb250ZXh0cyk6CisgICAgICAgIChybmF0aXZlLmNvbmRl
bnNlKToKKyAgICAgICAgKHJuYXRpdmUuc2V0TWF0Y2hlcik6CisgICAgICAgIChybmF0aXZlLm1h
dGNoZXJGcm9tVG9rZW5zLm1hdGNoZXJzKToKKyAgICAgICAgKHJuYXRpdmUuc3VwZXJNYXRjaGVy
KToKKyAgICAgICAgKHJuYXRpdmUubWF0Y2hlckZyb21Hcm91cE1hdGNoZXJzKToKKyAgICAgICAg
KHJuYXRpdmUuY29tcGlsZS5TaXp6bGUuY29tcGlsZSk6CisgICAgICAgIChybmF0aXZlLnNlbGVj
dC5TaXp6bGUuc2VsZWN0KToKKyAgICAgICAgKHJuYXRpdmUuZGlyKToKKyAgICAgICAgKHJuYXRp
dmUuc2libGluZ3MpOgorICAgICAgICAocm5hdGl2ZSk6CisgICAgICAgIChybmF0aXZlLmpRdWVy
eS5maWx0ZXIpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5kLmZpbmQpOgorICAg
ICAgICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5kLmZpbHRlcik6CisgICAgICAgIChybmF0aXZl
LmpRdWVyeS5mbi5leHRlbmQubm90KToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmZuLmV4dGVu
ZC5pcyk6CisgICAgICAgIChybmF0aXZlLmluaXQualF1ZXJ5LmZuLmluaXQpOgorICAgICAgICAo
cm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5kLmhhcyk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5m
bi5leHRlbmQuY2xvc2VzdCk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5mbi5leHRlbmQuaW5k
ZXgpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5kLmFkZCk6CisgICAgICAgIChy
bmF0aXZlLmpRdWVyeS5mbi5leHRlbmQuYWRkQmFjayk6CisgICAgICAgIChybmF0aXZlLmpRdWVy
eS5lYWNoLnBhcmVudCk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5lYWNoLnBhcmVudHMpOgor
ICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZWFjaC5wYXJlbnRzVW50aWwpOgorICAgICAgICAocm5h
dGl2ZS5qUXVlcnkuZWFjaC5uZXh0KToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmVhY2gucHJl
dik6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5lYWNoLm5leHRBbGwpOgorICAgICAgICAocm5h
dGl2ZS5qUXVlcnkuZWFjaC5wcmV2QWxsKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmVhY2gu
bmV4dFVudGlsKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmVhY2gucHJldlVudGlsKToKKyAg
ICAgICAgKHJuYXRpdmUualF1ZXJ5LmVhY2guc2libGluZ3MpOgorICAgICAgICAocm5hdGl2ZS5q
UXVlcnkuZWFjaC5jaGlsZHJlbik6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5lYWNoLmNvbnRl
bnRzKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmZuLm5hbWUpOgorICAgICAgICAocm5hdGl2
ZS5jcmVhdGVPcHRpb25zKToKKyAgICAgICAgKHJuYXRpdmUuZmlyZSk6CisgICAgICAgIChybmF0
aXZlLnNlbGYubGlzdC5hZGQpOgorICAgICAgICAocm5hdGl2ZS5zZWxmLmFkZCk6CisgICAgICAg
IChybmF0aXZlLnNlbGYucmVtb3ZlKToKKyAgICAgICAgKHJuYXRpdmUuc2VsZi5oYXMpOgorICAg
ICAgICAocm5hdGl2ZS5zZWxmLmVtcHR5KToKKyAgICAgICAgKHJuYXRpdmUuc2VsZi5kaXNhYmxl
KToKKyAgICAgICAgKHJuYXRpdmUuc2VsZi5kaXNhYmxlZCk6CisgICAgICAgIChybmF0aXZlLnNl
bGYubG9jayk6CisgICAgICAgIChybmF0aXZlLnNlbGYubG9ja2VkKToKKyAgICAgICAgKHJuYXRp
dmUuc2VsZi5maXJlV2l0aCk6CisgICAgICAgIChybmF0aXZlLnNlbGYuZmlyZSk6CisgICAgICAg
IChybmF0aXZlLnNlbGYuZmlyZWQpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuQ2FsbGJhY2tz
KToKKyAgICAgICAgKHJuYXRpdmUuSWRlbnRpdHkpOgorICAgICAgICAocm5hdGl2ZS5UaHJvd2Vy
KToKKyAgICAgICAgKHJuYXRpdmUuYWRvcHRWYWx1ZSk6CisgICAgICAgIChybmF0aXZlLmpRdWVy
eS5leHRlbmQucHJvbWlzZS5zdGF0ZSk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5leHRlbmQu
cHJvbWlzZS5hbHdheXMpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZXh0ZW5kLnByb21pc2Uu
c3RyaW5nX2FwcGVhcmVkX2hlcmUpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZXh0ZW5kLnBy
b21pc2UuKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmV4dGVuZC5wcm9taXNlLnBpcGUpOgor
ICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZXh0ZW5kLnByb21pc2UubWlnaHRUaHJvdyk6CisgICAg
ICAgIChybmF0aXZlLmpRdWVyeS5leHRlbmQucHJvbWlzZS5wcm9jZXNzLnNwZWNpYWwubWlnaHRU
aHJvdyk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5leHRlbmQucHJvbWlzZS5yZXNvbHZlKToK
KyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmV4dGVuZC5wcm9taXNlLnRoZW4pOgorICAgICAgICAo
cm5hdGl2ZS5qUXVlcnkuZXh0ZW5kLnByb21pc2UucHJvbWlzZSk6CisgICAgICAgIChybmF0aXZl
LmpRdWVyeS5leHRlbmQuKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmV4dGVuZC5EZWZlcnJl
ZCk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5leHRlbmQudXBkYXRlRnVuYyk6CisgICAgICAg
IChybmF0aXZlLmpRdWVyeS5leHRlbmQud2hlbik6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5E
ZWZlcnJlZC5leGNlcHRpb25Ib29rKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LnJlYWR5RXhj
ZXB0aW9uKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmZuLnJlYWR5KToKKyAgICAgICAgKHJu
YXRpdmUualF1ZXJ5LmV4dGVuZC5ob2xkUmVhZHkpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnku
ZXh0ZW5kLnJlYWR5KToKKyAgICAgICAgKHJuYXRpdmUuY29tcGxldGVkKToKKyAgICAgICAgKHJu
YXRpdmUuZWxzZS52YWx1ZS51bmRlZmluZWQuYnVsay5lbHNlLmZuKToKKyAgICAgICAgKHJuYXRp
dmUuYWNjZXNzKToKKyAgICAgICAgKHJuYXRpdmUuYWNjZXB0RGF0YSk6CisgICAgICAgIChybmF0
aXZlLkRhdGEpOgorICAgICAgICAocm5hdGl2ZS5EYXRhLnByb3RvdHlwZS5jYWNoZSk6CisgICAg
ICAgIChybmF0aXZlLkRhdGEucHJvdG90eXBlLnNldCBvd25lcik6CisgICAgICAgIChybmF0aXZl
LkRhdGEucHJvdG90eXBlLmdldCBvd25lcik6CisgICAgICAgIChybmF0aXZlLkRhdGEucHJvdG90
eXBlLmFjY2Vzcyk6CisgICAgICAgIChybmF0aXZlLkRhdGEucHJvdG90eXBlLnJlbW92ZSk6Cisg
ICAgICAgIChybmF0aXZlLkRhdGEucHJvdG90eXBlLmhhc0RhdGEpOgorICAgICAgICAocm5hdGl2
ZS5nZXREYXRhKToKKyAgICAgICAgKHJuYXRpdmUuZGF0YUF0dHIpOgorICAgICAgICAocm5hdGl2
ZS5qUXVlcnkuZXh0ZW5kLmhhc0RhdGEpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZXh0ZW5k
LmRhdGEpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZXh0ZW5kLnJlbW92ZURhdGEpOgorICAg
ICAgICAocm5hdGl2ZS5qUXVlcnkuZXh0ZW5kLl9kYXRhKToKKyAgICAgICAgKHJuYXRpdmUualF1
ZXJ5LmV4dGVuZC5fcmVtb3ZlRGF0YSk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5mbi5leHRl
bmQuKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmZuLmV4dGVuZC5kYXRhKToKKyAgICAgICAg
KHJuYXRpdmUualF1ZXJ5LmZuLmV4dGVuZC5yZW1vdmVEYXRhKToKKyAgICAgICAgKHJuYXRpdmUu
alF1ZXJ5LmV4dGVuZC5xdWV1ZSk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5leHRlbmQubmV4
dCk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5leHRlbmQuZGVxdWV1ZSk6CisgICAgICAgIChy
bmF0aXZlLmpRdWVyeS5leHRlbmQuX3F1ZXVlSG9va3MpOgorICAgICAgICAocm5hdGl2ZS5qUXVl
cnkuZm4uZXh0ZW5kLnF1ZXVlKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmZuLmV4dGVuZC5k
ZXF1ZXVlKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmZuLmV4dGVuZC5jbGVhclF1ZXVlKToK
KyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmZuLmV4dGVuZC5yZXNvbHZlKToKKyAgICAgICAgKHJu
YXRpdmUualF1ZXJ5LmZuLmV4dGVuZC5wcm9taXNlKToKKyAgICAgICAgKHJuYXRpdmUuaXNIaWRk
ZW5XaXRoaW5UcmVlKToKKyAgICAgICAgKHJuYXRpdmUuc3dhcCk6CisgICAgICAgIChybmF0aXZl
LnR3ZWVuKToKKyAgICAgICAgKHJuYXRpdmUuYWRqdXN0Q1NTKToKKyAgICAgICAgKHJuYXRpdmUu
c2hvd0hpZGUpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5kLnNob3cpOgorICAg
ICAgICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5kLmhpZGUpOgorICAgICAgICAocm5hdGl2ZS5q
UXVlcnkuZm4uZXh0ZW5kLnRvZ2dsZSk6CisgICAgICAgIChybmF0aXZlLmdldEFsbCk6CisgICAg
ICAgIChybmF0aXZlLnNldEdsb2JhbEV2YWwpOgorICAgICAgICAocm5hdGl2ZS5idWlsZEZyYWdt
ZW50KToKKyAgICAgICAgKHJuYXRpdmUucmV0dXJuRmFsc2UpOgorICAgICAgICAocm5hdGl2ZS5z
YWZlQWN0aXZlRWxlbWVudCk6CisgICAgICAgIChybmF0aXZlLm9uZS5vbmUuMS5mbik6CisgICAg
ICAgIChybmF0aXZlLm9uKToKKyAgICAgICAgKHJuYXRpdmUuRGF0YS5wcm90b3R5cGUpOgorICAg
ICAgICAocm5hdGl2ZS5qUXVlcnkuZXZlbnQuZXZlbnRIYW5kbGUuZWxlbURhdGEuaGFuZGxlKToK
KyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmV2ZW50LmFkZCk6CisgICAgICAgIChybmF0aXZlLmpR
dWVyeS5ldmVudC5yZW1vdmUpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZXZlbnQuZGlzcGF0
Y2gpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZXZlbnQuaGFuZGxlcnMpOgorICAgICAgICAo
cm5hdGl2ZS5qUXVlcnkuZXZlbnQuZ2V0IGpRdWVyeSk6CisgICAgICAgIChybmF0aXZlLmpRdWVy
eS5ldmVudC4pOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZXZlbnQuc2V0IE9iamVjdCk6Cisg
ICAgICAgIChybmF0aXZlLmpRdWVyeS5ldmVudC5hZGRQcm9wKToKKyAgICAgICAgKHJuYXRpdmUu
alF1ZXJ5LmV2ZW50LmZpeCk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5ldmVudC5zcGVjaWFs
LmZvY3VzLnRyaWdnZXIpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZXZlbnQuc3BlY2lhbC5i
bHVyLnRyaWdnZXIpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZXZlbnQuc3BlY2lhbC5jbGlj
ay50cmlnZ2VyKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmV2ZW50LnNwZWNpYWwuY2xpY2su
X2RlZmF1bHQpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZXZlbnQuc3BlY2lhbC5iZWZvcmV1
bmxvYWQucG9zdERpc3BhdGNoKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LnJlbW92ZUV2ZW50
KToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LkV2ZW50KToKKyAgICAgICAgKHJuYXRpdmUualF1
ZXJ5LkV2ZW50LnByb3RvdHlwZS5wcmV2ZW50RGVmYXVsdCk6CisgICAgICAgIChybmF0aXZlLmpR
dWVyeS5FdmVudC5wcm90b3R5cGUuc3RvcFByb3BhZ2F0aW9uKToKKyAgICAgICAgKHJuYXRpdmUu
alF1ZXJ5LkV2ZW50LnByb3RvdHlwZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24pOgorICAgICAg
ICAocm5hdGl2ZS5qUXVlcnkuZWFjaCk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5ldmVudC5z
cGVjaWFsLm9yaWcuaGFuZGxlKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmZuLmV4dGVuZC5v
bik6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5mbi5leHRlbmQub25lKToKKyAgICAgICAgKHJu
YXRpdmUualF1ZXJ5LmZuLmV4dGVuZC5vZmYpOgorICAgICAgICAocm5hdGl2ZS5tYW5pcHVsYXRp
b25UYXJnZXQpOgorICAgICAgICAocm5hdGl2ZS5kaXNhYmxlU2NyaXB0KToKKyAgICAgICAgKHJu
YXRpdmUucmVzdG9yZVNjcmlwdCk6CisgICAgICAgIChybmF0aXZlLmNsb25lQ29weUV2ZW50KToK
KyAgICAgICAgKHJuYXRpdmUuZml4SW5wdXQpOgorICAgICAgICAocm5hdGl2ZS5kb21NYW5pcCk6
CisgICAgICAgIChybmF0aXZlLnJlbW92ZSk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5leHRl
bmQuaHRtbFByZWZpbHRlcik6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5leHRlbmQuY2xvbmUp
OgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZXh0ZW5kLmNsZWFuRGF0YSk6CisgICAgICAgIChy
bmF0aXZlLmpRdWVyeS5mbi5leHRlbmQuZGV0YWNoKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5
LmZuLmV4dGVuZC5yZW1vdmUpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5kLnRl
eHQpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5kLmFwcGVuZCk6CisgICAgICAg
IChybmF0aXZlLmpRdWVyeS5mbi5leHRlbmQucHJlcGVuZCk6CisgICAgICAgIChybmF0aXZlLmpR
dWVyeS5mbi5leHRlbmQuYmVmb3JlKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmZuLmV4dGVu
ZC5hZnRlcik6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5mbi5leHRlbmQuZW1wdHkpOgorICAg
ICAgICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5kLmNsb25lKToKKyAgICAgICAgKHJuYXRpdmUu
alF1ZXJ5LmZuLmV4dGVuZC5odG1sKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmZuLmV4dGVu
ZC5yZXBsYWNlV2l0aCk6CisgICAgICAgIChybmF0aXZlLmdldFN0eWxlcyk6CisgICAgICAgIChy
bmF0aXZlLmNvbXB1dGVTdHlsZVRlc3RzKToKKyAgICAgICAgKHJuYXRpdmUuaG9va0ZuLnJldHVy
bi5nZXQgaWYpOgorICAgICAgICAocm5hdGl2ZS5ob29rRm4ucmV0dXJuKToKKyAgICAgICAgKHJu
YXRpdmUuYWRkR2V0SG9va0lmKToKKyAgICAgICAgKHJuYXRpdmUudmVuZG9yUHJvcE5hbWUpOgor
ICAgICAgICAocm5hdGl2ZS5zZXRQb3NpdGl2ZU51bWJlcik6CisgICAgICAgIChybmF0aXZlLmF1
Z21lbnRXaWR0aE9ySGVpZ2h0KToKKyAgICAgICAgKHJuYXRpdmUuZ2V0V2lkdGhPckhlaWdodCk6
CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5leHRlbmQuY3NzSG9va3Mub3BhY2l0eS5nZXQgaWYp
OgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZXh0ZW5kLmNzc0hvb2tzLm9wYWNpdHkpOgorICAg
ICAgICAocm5hdGl2ZS5qUXVlcnkuZXh0ZW5kLnN0eWxlKToKKyAgICAgICAgKHJuYXRpdmUualF1
ZXJ5LmV4dGVuZC5jc3MpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuY3NzSG9va3MubmFtZS5n
ZXQgaWYpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuY3NzSG9va3MubmFtZSk6CisgICAgICAg
IChybmF0aXZlLmpRdWVyeS5jc3NIb29rcy5uYW1lLnNldCB2YXIpOgorICAgICAgICAocm5hdGl2
ZS5qUXVlcnkuY3NzSG9va3MucHJlZml4LnN1ZmZpeC5leHBhbmQpOgorICAgICAgICAocm5hdGl2
ZS5qUXVlcnkuZm4uZXh0ZW5kLmNzcyk6CisgICAgICAgIChybmF0aXZlLlR3ZWVuLnByb3RvdHlw
ZS5pbml0KToKKyAgICAgICAgKHJuYXRpdmUuVHdlZW4ucHJvdG90eXBlLmN1cik6CisgICAgICAg
IChybmF0aXZlLlR3ZWVuLnByb3RvdHlwZS5ydW4pOgorICAgICAgICAocm5hdGl2ZS5Ud2Vlbi5w
cm9wSG9va3MuX2RlZmF1bHQuZ2V0IHR3ZWVuKToKKyAgICAgICAgKHJuYXRpdmUuVHdlZW4ucHJv
cEhvb2tzLl9kZWZhdWx0LnNldCB0d2Vlbik6CisgICAgICAgIChybmF0aXZlLlR3ZWVuLnByb3BI
b29rcy5zY3JvbGxUb3AuVHdlZW4ucHJvcEhvb2tzLnNjcm9sbExlZnQuc2V0IHR3ZWVuKToKKyAg
ICAgICAgKHJuYXRpdmUualF1ZXJ5LmVhc2luZy5saW5lYXIpOgorICAgICAgICAocm5hdGl2ZS5q
UXVlcnkuZWFzaW5nLnN3aW5nKToKKyAgICAgICAgKHJuYXRpdmUucmFmKToKKyAgICAgICAgKHJu
YXRpdmUuY3JlYXRlRnhOb3cpOgorICAgICAgICAocm5hdGl2ZS5nZW5GeCk6CisgICAgICAgIChy
bmF0aXZlLmNyZWF0ZVR3ZWVuKToKKyAgICAgICAgKHJuYXRpdmUub3B0cy5vcHRzLnF1ZXVlLmhv
b2tzLnVucXVldWVkLm51bGwuaG9va3MuZW1wdHkuZmlyZSk6CisgICAgICAgIChybmF0aXZlLmRl
ZmF1bHRQcmVmaWx0ZXIpOgorICAgICAgICAocm5hdGl2ZS5wcm9wRmlsdGVyKToKKyAgICAgICAg
KHJuYXRpdmUub3B0aW9ucy50aWNrKToKKyAgICAgICAgKHJuYXRpdmUub3B0aW9ucy5hbmltYXRp
b24uZGVmZXJyZWQucHJvbWlzZS5jcmVhdGVUd2Vlbik6CisgICAgICAgIChybmF0aXZlLm9wdGlv
bnMuYW5pbWF0aW9uLmRlZmVycmVkLnByb21pc2Uuc3RvcCk6CisgICAgICAgIChybmF0aXZlLkFu
aW1hdGlvbik6CisgICAgICAgIChybmF0aXZlLnR3ZWVuZXJzLnN0cmluZ19hcHBlYXJlZF9oZXJl
KToKKyAgICAgICAgKHJuYXRpdmUuVHdlZW4ucHJvcEhvb2tzLnNjcm9sbFRvcC5Ud2Vlbi5wcm9w
SG9va3Muc2Nyb2xsTGVmdCk6CisgICAgICAgIChybmF0aXZlLnR3ZWVuZXIpOgorICAgICAgICAo
cm5hdGl2ZS5wcmVmaWx0ZXIpOgorICAgICAgICAocm5hdGl2ZS5vcHQuY29tcGxldGUpOgorICAg
ICAgICAocm5hdGl2ZS5qUXVlcnkuc3BlZWQpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZm4u
ZXh0ZW5kLmZhZGVUbyk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5mbi5leHRlbmQuZG9Bbmlt
YXRpb24pOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5kLmFuaW1hdGUpOgorICAg
ICAgICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5kLnN0b3BRdWV1ZSk6CisgICAgICAgIChybmF0
aXZlLmpRdWVyeS5mbi5leHRlbmQuc3RvcCk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5mbi5l
eHRlbmQuZmluaXNoKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmZ4LnRpY2spOgorICAgICAg
ICAocm5hdGl2ZS5qUXVlcnkuZngudGltZXIpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZngu
c3RhcnQpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZnguc3RvcCk6CisgICAgICAgIChybmF0
aXZlLmhvb2tzLnN0b3ApOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZm4uZGVsYXkpOgorICAg
ICAgICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5kLmF0dHIpOgorICAgICAgICAocm5hdGl2ZS5q
UXVlcnkuZm4uZXh0ZW5kLnJlbW92ZUF0dHIpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZXh0
ZW5kLmF0dHIpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZXh0ZW5kLmF0dHJIb29rcy50eXBl
LnNldCBpZik6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5leHRlbmQuYXR0ckhvb2tzLnR5cGUp
OgorICAgICAgICAocm5hdGl2ZS5Ud2Vlbi5wcm9wSG9va3MuX2RlZmF1bHQpOgorICAgICAgICAo
cm5hdGl2ZS5qUXVlcnkuZXh0ZW5kLnJlbW92ZUF0dHIpOgorICAgICAgICAocm5hdGl2ZS5ib29s
SG9vay5zZXQgZWxlbSk6CisgICAgICAgIChybmF0aXZlLmF0dHJIYW5kbGUubmFtZSk6CisgICAg
ICAgIChybmF0aXZlLmpRdWVyeS5mbi5leHRlbmQucHJvcCk6CisgICAgICAgIChybmF0aXZlLmpR
dWVyeS5mbi5leHRlbmQucmVtb3ZlUHJvcCk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5leHRl
bmQucHJvcCk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5leHRlbmQucHJvcEhvb2tzLnRhYklu
ZGV4LmdldCB2YXIpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZXh0ZW5kLnByb3BIb29rcy50
YWJJbmRleCk6CisgICAgICAgIChybmF0aXZlLmJvb2xIb29rKToKKyAgICAgICAgKHJuYXRpdmUu
c3VwcG9ydC5vcHRTZWxlY3RlZC5qUXVlcnkucHJvcEhvb2tzLnNlbGVjdGVkLmdldCBlbGVtKToK
KyAgICAgICAgKHJuYXRpdmUuc3VwcG9ydC5vcHRTZWxlY3RlZC5qUXVlcnkucHJvcEhvb2tzLnNl
bGVjdGVkLnNldCBlbGVtKToKKyAgICAgICAgKHJuYXRpdmUuc3RyaXBBbmRDb2xsYXBzZSk6Cisg
ICAgICAgIChybmF0aXZlLmdldENsYXNzKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmZuLmV4
dGVuZC5hZGRDbGFzcyk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5mbi5leHRlbmQucmVtb3Zl
Q2xhc3MpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5kLnRvZ2dsZUNsYXNzKToK
KyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmZuLmV4dGVuZC5oYXNDbGFzcyk6CisgICAgICAgIChy
bmF0aXZlLmpRdWVyeS5mbi5leHRlbmQudmFsKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmV4
dGVuZC52YWxIb29rcy5zZWxlY3QuZ2V0IHZhcik6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5l
eHRlbmQudmFsSG9va3Muc2VsZWN0KToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmV4dGVuZC52
YWxIb29rcy5zZWxlY3Quc2V0IHZhcik6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS52YWxIb29r
cy50aGlzLnNldCBpZik6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS52YWxIb29rcy50aGlzKToK
KyAgICAgICAgKHJuYXRpdmUudHJpZ2dlcik6CisgICAgICAgIChybmF0aXZlLnNpbXVsYXRlKToK
KyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmZuLmV4dGVuZC50cmlnZ2VyKToKKyAgICAgICAgKHJu
YXRpdmUualF1ZXJ5LmZuLmV4dGVuZC50cmlnZ2VySGFuZGxlcik6CisgICAgICAgIChybmF0aXZl
LmpRdWVyeS5mbi5leHRlbmQuaG92ZXIpOgorICAgICAgICAocm5hdGl2ZS5zdXBwb3J0LmZvY3Vz
aW4uaGFuZGxlcik6CisgICAgICAgIChybmF0aXZlLnN1cHBvcnQuZm9jdXNpbi5qUXVlcnkuZXZl
bnQuc3BlY2lhbC5maXguc2V0dXApOgorICAgICAgICAocm5hdGl2ZS5zdXBwb3J0LmZvY3VzaW4u
alF1ZXJ5LmV2ZW50LnNwZWNpYWwuZml4LnRlYXJkb3duKToKKyAgICAgICAgKHJuYXRpdmUualF1
ZXJ5LnBhcnNlWE1MKToKKyAgICAgICAgKHJuYXRpdmUuYnVpbGRQYXJhbXMpOgorICAgICAgICAo
cm5hdGl2ZS5hZGQpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkucGFyYW0pOgorICAgICAgICAo
cm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5kLnNlcmlhbGl6ZSk6CisgICAgICAgIChybmF0aXZlLmpR
dWVyeS5mbi5leHRlbmQuc2VyaWFsaXplQXJyYXkpOgorICAgICAgICAocm5hdGl2ZS5hZGRUb1By
ZWZpbHRlcnNPclRyYW5zcG9ydHMpOgorICAgICAgICAocm5hdGl2ZS5qcVhIUi5pbnNwZWN0KToK
KyAgICAgICAgKHJuYXRpdmUuaW5zcGVjdFByZWZpbHRlcnNPclRyYW5zcG9ydHMpOgorICAgICAg
ICAocm5hdGl2ZS5hamF4RXh0ZW5kKToKKyAgICAgICAgKHJuYXRpdmUuYWpheEhhbmRsZVJlc3Bv
bnNlcyk6CisgICAgICAgIChybmF0aXZlLmFqYXhDb252ZXJ0KToKKyAgICAgICAgKHJuYXRpdmUu
alF1ZXJ5LmV4dGVuZC5hamF4U2V0dXApOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZXh0ZW5k
LmpxWEhSLmdldFJlc3BvbnNlSGVhZGVyKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmV4dGVu
ZC5qcVhIUi5nZXRBbGxSZXNwb25zZUhlYWRlcnMpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnku
ZXh0ZW5kLmpxWEhSLnNldFJlcXVlc3RIZWFkZXIpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnku
ZXh0ZW5kLmpxWEhSLm92ZXJyaWRlTWltZVR5cGUpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnku
ZXh0ZW5kLmpxWEhSLnN0YXR1c0NvZGUpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZXh0ZW5k
LmpxWEhSLmFib3J0KToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmV4dGVuZC5kb25lKToKKyAg
ICAgICAgKHJuYXRpdmUualF1ZXJ5LmV4dGVuZC5hamF4KToKKyAgICAgICAgKHJuYXRpdmUualF1
ZXJ5LmV4dGVuZC5nZXRKU09OKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmV4dGVuZC5nZXRT
Y3JpcHQpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkubWV0aG9kKToKKyAgICAgICAgKHJuYXRp
dmUualF1ZXJ5Ll9ldmFsVXJsKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmZuLmV4dGVuZC53
cmFwQWxsKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmZuLmV4dGVuZC53cmFwSW5uZXIpOgor
ICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5kLndyYXApOgorICAgICAgICAocm5hdGl2
ZS5qUXVlcnkuZm4uZXh0ZW5kLnVud3JhcCk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5leHBy
LnBzZXVkb3MuaGlkZGVuKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmV4cHIucHNldWRvcy52
aXNpYmxlKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmFqYXhTZXR0aW5ncy54aHIpOgorICAg
ICAgICAocm5hdGl2ZS5yZXR1cm4uY2FsbGJhY2spOgorICAgICAgICAocm5hdGl2ZS5yZXR1cm4u
ZWxzZS54aHIub25yZWFkeXN0YXRlY2hhbmdlKToKKyAgICAgICAgKHJuYXRpdmUucmV0dXJuLnNl
bmQpOgorICAgICAgICAocm5hdGl2ZS5yZXR1cm4uYWJvcnQpOgorICAgICAgICAocm5hdGl2ZS5q
UXVlcnkuYWpheFNldHVwLmNvbnZlcnRlcnMuc3RyaW5nX2FwcGVhcmVkX2hlcmUpOgorICAgICAg
ICAocm5hdGl2ZS5yZXR1cm4uKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmFqYXhTZXR1cC5q
c29ucENhbGxiYWNrKToKKyAgICAgICAgKHJuYXRpdmUucy5jb252ZXJ0ZXJzLnN0cmluZ19hcHBl
YXJlZF9oZXJlKToKKyAgICAgICAgKHJuYXRpdmUud2luZG93LmNhbGxiYWNrTmFtZSk6CisgICAg
ICAgIChybmF0aXZlLnN1cHBvcnQuY3JlYXRlSFRNTERvY3VtZW50KToKKyAgICAgICAgKHJuYXRp
dmUualF1ZXJ5LnBhcnNlSFRNTCk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5mbi5sb2FkKToK
KyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmZuLnR5cGUpOgorICAgICAgICAocm5hdGl2ZS5qUXVl
cnkuZXhwci5wc2V1ZG9zLmFuaW1hdGVkKToKKyAgICAgICAgKHJuYXRpdmUuZ2V0V2luZG93KToK
KyAgICAgICAgKHJuYXRpdmUualF1ZXJ5Lm9mZnNldC5zZXRPZmZzZXQpOgorICAgICAgICAocm5h
dGl2ZS5qUXVlcnkuZm4uZXh0ZW5kLm9mZnNldCk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5m
bi5leHRlbmQucG9zaXRpb24pOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5kLm9m
ZnNldFBhcmVudCk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5mbi5tZXRob2QpOgorICAgICAg
ICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5kLmJpbmQpOgorICAgICAgICAocm5hdGl2ZS5qUXVl
cnkuZm4uZXh0ZW5kLnVuYmluZCk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5mbi5leHRlbmQu
ZGVsZWdhdGUpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5kLnVuZGVsZWdhdGUp
OgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkubm9Db25mbGljdCk6CisgICAgICAgICogU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2Rl
X21vZHVsZXMvanF1ZXJ5L2Rpc3QvanF1ZXJ5Lm1pbi5qczogQWRkZWQuCisgICAgICAgIChyKToK
KyAgICAgICAgKHYpOgorICAgICAgICAoci5mbi5yLnByb3RvdHlwZS50b0FycmF5KToKKyAgICAg
ICAgKHIuZm4uci5wcm90b3R5cGUucHVzaFN0YWNrKToKKyAgICAgICAgKHIuZm4uci5wcm90b3R5
cGUuZWFjaCk6CisgICAgICAgIChyLmZuLnIucHJvdG90eXBlLm1hcCk6CisgICAgICAgIChyLmZu
LnIucHJvdG90eXBlLnNsaWNlKToKKyAgICAgICAgKHIuZm4uci5wcm90b3R5cGUuZmlyc3QpOgor
ICAgICAgICAoci5mbi5yLnByb3RvdHlwZS5sYXN0KToKKyAgICAgICAgKHIuZm4uci5wcm90b3R5
cGUuZXEpOgorICAgICAgICAoci5mbi5yLnByb3RvdHlwZS5lbmQpOgorICAgICAgICAoci5leHRl
bmQuci5mbi5leHRlbmQpOgorICAgICAgICAoci5leHRlbmQpOgorICAgICAgICAoci5leHRlbmQu
KToKKyAgICAgICAgKEIpOgorICAgICAgICAoSSk6CisgICAgICAgIChZLmFhKToKKyAgICAgICAg
KFkuY2EpOgorICAgICAgICAoWS5kYSk6CisgICAgICAgIChZLmNhdGNoLkcpOgorICAgICAgICAo
WS5nYSk6CisgICAgICAgIChZLmhhKToKKyAgICAgICAgKFkuaWEpOgorICAgICAgICAoWS5qYSk6
CisgICAgICAgIChZLmthKToKKyAgICAgICAgKFkubGEpOgorICAgICAgICAoWS5tYSk6CisgICAg
ICAgIChZLm5hKToKKyAgICAgICAgKFkub2EpOgorICAgICAgICAoWS5wYS4pOgorICAgICAgICAo
WS5wYSk6CisgICAgICAgIChZLik6CisgICAgICAgIChZLmYuZ2EuaXNYTUwpOgorICAgICAgICAo
WS5tLmdhLnNldERvY3VtZW50KToKKyAgICAgICAgKFkuZ2EubWF0Y2hlcyk6CisgICAgICAgIChZ
LmdhLm1hdGNoZXNTZWxlY3Rvcik6CisgICAgICAgIChZLmdhLmNvbnRhaW5zKToKKyAgICAgICAg
KFkuZ2EuYXR0cik6CisgICAgICAgIChZLmdhLmVzY2FwZSk6CisgICAgICAgIChZLmdhLmVycm9y
KToKKyAgICAgICAgKFkuZ2EudW5pcXVlU29ydCk6CisgICAgICAgIChZLmUuZ2EuZ2V0VGV4dCk6
CisgICAgICAgIChZLmQuZ2Euc2VsZWN0b3JzLnByZUZpbHRlci5BVFRSKToKKyAgICAgICAgKFku
ZC5nYS5zZWxlY3RvcnMucHJlRmlsdGVyLkNISUxEKToKKyAgICAgICAgKFkuZC5nYS5zZWxlY3Rv
cnMucHJlRmlsdGVyLlBTRVVETyk6CisgICAgICAgIChZLmQuZ2Euc2VsZWN0b3JzLmZpbHRlci4p
OgorICAgICAgICAoWS5kLmdhLnNlbGVjdG9ycy5maWx0ZXIuVEFHKToKKyAgICAgICAgKFkuZC5n
YS5zZWxlY3RvcnMuZmlsdGVyLkNMQVNTKToKKyAgICAgICAgKFkuZC5nYS5zZWxlY3RvcnMuZmls
dGVyLkFUVFIpOgorICAgICAgICAoWS5kLmdhLnNlbGVjdG9ycy5maWx0ZXIuQ0hJTEQpOgorICAg
ICAgICAoWS5kLmdhLnNlbGVjdG9ycy5maWx0ZXIuUFNFVURPKToKKyAgICAgICAgKFkuZC5nYS5z
ZWxlY3RvcnMucHNldWRvcy4pOgorICAgICAgICAoWS5kLmdhLnNlbGVjdG9ycy5wc2V1ZG9zLnRh
cmdldCk6CisgICAgICAgIChZLmQuZ2Euc2VsZWN0b3JzLnBzZXVkb3Mucm9vdCk6CisgICAgICAg
IChZLmQuZ2Euc2VsZWN0b3JzLnBzZXVkb3MuZm9jdXMpOgorICAgICAgICAoWS5kLmdhLnNlbGVj
dG9ycy5wc2V1ZG9zLmNoZWNrZWQpOgorICAgICAgICAoWS5kLmdhLnNlbGVjdG9ycy5wc2V1ZG9z
LnNlbGVjdGVkKToKKyAgICAgICAgKFkuZC5nYS5zZWxlY3RvcnMucHNldWRvcy5lbXB0eSk6Cisg
ICAgICAgIChZLmQuZ2Euc2VsZWN0b3JzLnBzZXVkb3MucGFyZW50KToKKyAgICAgICAgKFkuZC5n
YS5zZWxlY3RvcnMucHNldWRvcy5oZWFkZXIpOgorICAgICAgICAoWS5kLmdhLnNlbGVjdG9ycy5w
c2V1ZG9zLmlucHV0KToKKyAgICAgICAgKFkuZC5nYS5zZWxlY3RvcnMucHNldWRvcy5idXR0b24p
OgorICAgICAgICAoWS5kLmdhLnNlbGVjdG9ycy5wc2V1ZG9zLnRleHQpOgorICAgICAgICAoWS5y
YSk6CisgICAgICAgIChZLmcuZ2EudG9rZW5pemUpOgorICAgICAgICAoWS5zYSk6CisgICAgICAg
IChZLnRhKToKKyAgICAgICAgKFkudWEpOgorICAgICAgICAoWS52YSk6CisgICAgICAgIChZLndh
KToKKyAgICAgICAgKFkueGEpOgorICAgICAgICAoWS55YSk6CisgICAgICAgIChZLmYpOgorICAg
ICAgICAoWS56YSk6CisgICAgICAgIChZLnJldHVybi5oLmdhLmNvbXBpbGUpOgorICAgICAgICAo
WS5pLmdhLnNlbGVjdCk6CisgICAgICAgIChZLnkpOgorICAgICAgICAoWS56KToKKyAgICAgICAg
KFkpOgorICAgICAgICAoWS5yLmZpbHRlcik6CisgICAgICAgIChZLnIuZm4uZXh0ZW5kLik6Cisg
ICAgICAgIChZLnIuZm4uZXh0ZW5kKToKKyAgICAgICAgKFkuRy5yLmZuLmluaXQpOgorICAgICAg
ICAoWS5yLmVhY2gpOgorICAgICAgICAoWS5MKToKKyAgICAgICAgKFkuaSk6CisgICAgICAgIChZ
LmouKToKKyAgICAgICAgKFkuai5hZGQpOgorICAgICAgICAoWS5qLnJlbW92ZSk6CisgICAgICAg
IChZLmouaGFzKToKKyAgICAgICAgKFkuai5lbXB0eSk6CisgICAgICAgIChZLmouZGlzYWJsZSk6
CisgICAgICAgIChZLmouZGlzYWJsZWQpOgorICAgICAgICAoWS5qLmxvY2spOgorICAgICAgICAo
WS5qLmxvY2tlZCk6CisgICAgICAgIChZLmouZmlyZVdpdGgpOgorICAgICAgICAoWS5qLmZpcmUp
OgorICAgICAgICAoWS5qLmZpcmVkKToKKyAgICAgICAgKFkuci5DYWxsYmFja3MpOgorICAgICAg
ICAoWS5NKToKKyAgICAgICAgKFkuTik6CisgICAgICAgIChZLk8pOgorICAgICAgICAoWS5yLmV4
dGVuZC4pOgorICAgICAgICAoWS5yLmV4dGVuZCk6CisgICAgICAgIChZLnIuRGVmZXJyZWQuZXhj
ZXB0aW9uSG9vayk6CisgICAgICAgIChZLnIucmVhZHlFeGNlcHRpb24pOgorICAgICAgICAoWS5y
LmZuLnJlYWR5KToKKyAgICAgICAgKFkuUik6CisgICAgICAgIChZLlMpOgorICAgICAgICAoWS5U
KToKKyAgICAgICAgKFkuVSk6CisgICAgICAgIChZLlUucHJvdG90eXBlLmNhY2hlKToKKyAgICAg
ICAgKFkuVS5wcm90b3R5cGUuYWNjZXNzKToKKyAgICAgICAgKFkuVS5wcm90b3R5cGUucmVtb3Zl
KToKKyAgICAgICAgKFkuVS5wcm90b3R5cGUuaGFzRGF0YSk6CisgICAgICAgIChZLlopOgorICAg
ICAgICAoWS5lYSk6CisgICAgICAgIChZLnIuZXZlbnQuKToKKyAgICAgICAgKFkuci5ldmVudC5h
ZGQpOgorICAgICAgICAoWS5yLmV2ZW50LnJlbW92ZSk6CisgICAgICAgIChZLnIuZXZlbnQuZGlz
cGF0Y2gpOgorICAgICAgICAoWS5yLmV2ZW50LmhhbmRsZXJzKToKKyAgICAgICAgKFkuci5ldmVu
dC5hZGRQcm9wKToKKyAgICAgICAgKFkuci5ldmVudC5zZXQgZ2V0IGZpeCk6CisgICAgICAgIChZ
LnIuZXZlbnQuc3BlY2lhbC5mb2N1cy50cmlnZ2VyKToKKyAgICAgICAgKFkuci5ldmVudC5zcGVj
aWFsLmJsdXIudHJpZ2dlcik6CisgICAgICAgIChZLnIuZXZlbnQuc3BlY2lhbC5jbGljay50cmln
Z2VyKToKKyAgICAgICAgKFkuci5ldmVudC5zcGVjaWFsLmNsaWNrLl9kZWZhdWx0KToKKyAgICAg
ICAgKFkuci5ldmVudC5zcGVjaWFsLmJlZm9yZXVubG9hZC5wb3N0RGlzcGF0Y2gpOgorICAgICAg
ICAoWS5yLnJlbW92ZUV2ZW50KToKKyAgICAgICAgKFkuci5FdmVudCk6CisgICAgICAgIChZLnIu
RXZlbnQucHJvdG90eXBlLnByZXZlbnREZWZhdWx0KToKKyAgICAgICAgKFkuci5FdmVudC5wcm90
b3R5cGUuc3RvcFByb3BhZ2F0aW9uKToKKyAgICAgICAgKFkuci5FdmVudC5wcm90b3R5cGUuc3Rv
cEltbWVkaWF0ZVByb3BhZ2F0aW9uKToKKyAgICAgICAgKFkuRGEpOgorICAgICAgICAoWS5FYSk6
CisgICAgICAgIChZLkZhKToKKyAgICAgICAgKFkuR2EpOgorICAgICAgICAoWS5KYSk6CisgICAg
ICAgIChZLk1hKToKKyAgICAgICAgKFkuYik6CisgICAgICAgIChZLlVhKToKKyAgICAgICAgKFku
VmEpOgorICAgICAgICAoWS5XYSk6CisgICAgICAgIChZLlhhKToKKyAgICAgICAgKFkuZ2V0IHIp
OgorICAgICAgICAoWS5zZXQgZ2V0IHIpOgorICAgICAgICAoWS5ZYS5wcm90b3R5cGUuaW5pdCk6
CisgICAgICAgIChZLllhLnByb3RvdHlwZS5jdXIpOgorICAgICAgICAoWS5ZYS5wcm90b3R5cGUu
cnVuKToKKyAgICAgICAgKFkuci5lYXNpbmcubGluZWFyKToKKyAgICAgICAgKFkuci5lYXNpbmcu
c3dpbmcpOgorICAgICAgICAoWS5iYik6CisgICAgICAgIChZLmNiKToKKyAgICAgICAgKFkuZGIp
OgorICAgICAgICAoWS5lYik6CisgICAgICAgIChZLmZiKToKKyAgICAgICAgKFkuai5oLnByb21p
c2UpOgorICAgICAgICAoWS5oYik6CisgICAgICAgIChZLmUuY29tcGxldGUpOgorICAgICAgICAo
WS5yLnNwZWVkKToKKyAgICAgICAgKFkuci5meC50aWNrKToKKyAgICAgICAgKFkuci5meC50aW1l
cik6CisgICAgICAgIChZLnIuZnguc3RhcnQpOgorICAgICAgICAoWS5yLmZ4LnN0b3ApOgorICAg
ICAgICAoWS5yLmZuLmRlbGF5KToKKyAgICAgICAgKFkuWWEucHJvcEhvb2tzLnNjcm9sbFRvcC5Z
YS5wcm9wSG9va3Muc2Nyb2xsTGVmdC5zZXQgYSk6CisgICAgICAgIChZLllhLnByb3BIb29rcy5z
Y3JvbGxUb3AuWWEucHJvcEhvb2tzLnNjcm9sbExlZnQpOgorICAgICAgICAoWS5zZXQgaWIuc2V0
IHJldHVybik6CisgICAgICAgIChZLnNldCBpYik6CisgICAgICAgIChZLmdldCBvLm9wdFNlbGVj
dGVkKToKKyAgICAgICAgKFkuZ2V0IG8pOgorICAgICAgICAoWS5uYik6CisgICAgICAgIChZLnNl
dCB2YXIpOgorICAgICAgICAoWS5yLnBhcnNlWE1MKToKKyAgICAgICAgKFkueGIpOgorICAgICAg
ICAoWS5lKToKKyAgICAgICAgKFkuci5wYXJhbSk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMv
anF1ZXJ5L2Rpc3QvanF1ZXJ5Lm1pbi5tYXA6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1
bGVzL2pxdWVyeS9kaXN0L2pxdWVyeS5zbGltLmpzOiBSZW5hbWVkIGZyb20gUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
ZW1iZXJqcy9ib3dlcl9jb21wb25lbnRzL2pxdWVyeS9qcXVlcnkuanMuCisgICAgICAgICh0eXBl
b2YubW9kdWxlLnN0cmluZ19hcHBlYXJlZF9oZXJlLnR5cGVvZi5tb2R1bGUuZXhwb3J0cy5zdHJp
bmdfYXBwZWFyZWRfaGVyZS50cnVlKToKKyAgICAgICAgKGpRdWVyeSk6CisgICAgICAgIChmY2Ft
ZWxDYXNlKToKKyAgICAgICAgKGpRdWVyeS5mbi5qUXVlcnkucHJvdG90eXBlLnRvQXJyYXkpOgor
ICAgICAgICAoalF1ZXJ5LmZuLmpRdWVyeS5wcm90b3R5cGUuZ2V0IGlmKToKKyAgICAgICAgKGpR
dWVyeS5mbi5qUXVlcnkucHJvdG90eXBlKToKKyAgICAgICAgKGpRdWVyeS5mbi5qUXVlcnkucHJv
dG90eXBlLnB1c2hTdGFjayk6CisgICAgICAgIChqUXVlcnkuZm4ualF1ZXJ5LnByb3RvdHlwZS5l
YWNoKToKKyAgICAgICAgKGpRdWVyeS5mbi5qUXVlcnkucHJvdG90eXBlLm1hcCk6CisgICAgICAg
IChqUXVlcnkuZm4ualF1ZXJ5LnByb3RvdHlwZS5zbGljZSk6CisgICAgICAgIChqUXVlcnkuZm4u
alF1ZXJ5LnByb3RvdHlwZS5maXJzdCk6CisgICAgICAgIChqUXVlcnkuZm4ualF1ZXJ5LnByb3Rv
dHlwZS5sYXN0KToKKyAgICAgICAgKGpRdWVyeS5mbi5qUXVlcnkucHJvdG90eXBlLmVxKToKKyAg
ICAgICAgKGpRdWVyeS5mbi5qUXVlcnkucHJvdG90eXBlLmVuZCk6CisgICAgICAgIChqUXVlcnku
ZXh0ZW5kLmpRdWVyeS5mbi5leHRlbmQpOgorICAgICAgICAoalF1ZXJ5LmV4dGVuZC5lcnJvcik6
CisgICAgICAgIChqUXVlcnkuZXh0ZW5kLm5vb3ApOgorICAgICAgICAoalF1ZXJ5LmV4dGVuZC5p
c0Z1bmN0aW9uKToKKyAgICAgICAgKGpRdWVyeS5leHRlbmQuaXNXaW5kb3cpOgorICAgICAgICAo
alF1ZXJ5LmV4dGVuZC5pc051bWVyaWMpOgorICAgICAgICAoalF1ZXJ5LmV4dGVuZC5pc1BsYWlu
T2JqZWN0KToKKyAgICAgICAgKGpRdWVyeS5leHRlbmQuaXNFbXB0eU9iamVjdCk6CisgICAgICAg
IChqUXVlcnkuZXh0ZW5kLnR5cGUpOgorICAgICAgICAoalF1ZXJ5LmV4dGVuZC5nbG9iYWxFdmFs
KToKKyAgICAgICAgKGpRdWVyeS5leHRlbmQuY2FtZWxDYXNlKToKKyAgICAgICAgKGpRdWVyeS5l
eHRlbmQubm9kZU5hbWUpOgorICAgICAgICAoalF1ZXJ5LmV4dGVuZC5lYWNoKToKKyAgICAgICAg
KGpRdWVyeS5leHRlbmQudHJpbSk6CisgICAgICAgIChqUXVlcnkuZXh0ZW5kLm1ha2VBcnJheSk6
CisgICAgICAgIChqUXVlcnkuZXh0ZW5kLmluQXJyYXkpOgorICAgICAgICAoalF1ZXJ5LmV4dGVu
ZC5tZXJnZSk6CisgICAgICAgIChqUXVlcnkuZXh0ZW5kLmdyZXApOgorICAgICAgICAoalF1ZXJ5
LmV4dGVuZC5tYXApOgorICAgICAgICAoalF1ZXJ5LmV4dGVuZC5wcm94eSk6CisgICAgICAgIChp
c0FycmF5TGlrZSk6CisgICAgICAgIChzb3J0T3JkZXIpOgorICAgICAgICAoaW5kZXhPZik6Cisg
ICAgICAgIChybmF0aXZlLmZ1bmVzY2FwZSk6CisgICAgICAgIChybmF0aXZlLmZjc3Nlc2NhcGUp
OgorICAgICAgICAocm5hdGl2ZS51bmxvYWRIYW5kbGVyKToKKyAgICAgICAgKHJuYXRpdmUuY2F0
Y2gucHVzaCk6CisgICAgICAgIChybmF0aXZlLlNpenpsZSk6CisgICAgICAgIChybmF0aXZlLmNy
ZWF0ZUNhY2hlKToKKyAgICAgICAgKHJuYXRpdmUubWFya0Z1bmN0aW9uKToKKyAgICAgICAgKHJu
YXRpdmUuYXNzZXJ0KToKKyAgICAgICAgKHJuYXRpdmUuYWRkSGFuZGxlKToKKyAgICAgICAgKHJu
YXRpdmUuc2libGluZ0NoZWNrKToKKyAgICAgICAgKHJuYXRpdmUuY3JlYXRlSW5wdXRQc2V1ZG8p
OgorICAgICAgICAocm5hdGl2ZS5jcmVhdGVCdXR0b25Qc2V1ZG8pOgorICAgICAgICAocm5hdGl2
ZS5jcmVhdGVEaXNhYmxlZFBzZXVkbyk6CisgICAgICAgIChybmF0aXZlLmNyZWF0ZVBvc2l0aW9u
YWxQc2V1ZG8uKToKKyAgICAgICAgKHJuYXRpdmUuY3JlYXRlUG9zaXRpb25hbFBzZXVkbyk6Cisg
ICAgICAgIChybmF0aXZlLik6CisgICAgICAgIChybmF0aXZlLmlzWE1MLlNpenpsZS5pc1hNTCk6
CisgICAgICAgIChybmF0aXZlLkV4cHIuZmlsdGVyLnN0cmluZ19hcHBlYXJlZF9oZXJlKToKKyAg
ICAgICAgKHJuYXRpdmUuRXhwci5maW5kLnN0cmluZ19hcHBlYXJlZF9oZXJlKToKKyAgICAgICAg
KHJuYXRpdmUuZWxzZS5FeHByLmZpbHRlci5zdHJpbmdfYXBwZWFyZWRfaGVyZSk6CisgICAgICAg
IChybmF0aXZlLmVsc2UuRXhwci5maW5kLnN0cmluZ19hcHBlYXJlZF9oZXJlKToKKyAgICAgICAg
KHJuYXRpdmUuc2V0RG9jdW1lbnQuU2l6emxlLnNldERvY3VtZW50KToKKyAgICAgICAgKHJuYXRp
dmUuU2l6emxlLm1hdGNoZXMpOgorICAgICAgICAocm5hdGl2ZS5TaXp6bGUubWF0Y2hlc1NlbGVj
dG9yKToKKyAgICAgICAgKHJuYXRpdmUuU2l6emxlLmNvbnRhaW5zKToKKyAgICAgICAgKHJuYXRp
dmUuU2l6emxlLmF0dHIpOgorICAgICAgICAocm5hdGl2ZS5TaXp6bGUuZXNjYXBlKToKKyAgICAg
ICAgKHJuYXRpdmUuU2l6emxlLmVycm9yKToKKyAgICAgICAgKHJuYXRpdmUuU2l6emxlLnVuaXF1
ZVNvcnQpOgorICAgICAgICAocm5hdGl2ZS5nZXRUZXh0LlNpenpsZS5nZXRUZXh0KToKKyAgICAg
ICAgKHJuYXRpdmUuRXhwci5TaXp6bGUuc2VsZWN0b3JzLnByZUZpbHRlci5zdHJpbmdfYXBwZWFy
ZWRfaGVyZSk6CisgICAgICAgIChybmF0aXZlLkV4cHIuU2l6emxlLnNlbGVjdG9ycy5maWx0ZXIu
KToKKyAgICAgICAgKHJuYXRpdmUuRXhwci5TaXp6bGUuc2VsZWN0b3JzLmZpbHRlci5zdHJpbmdf
YXBwZWFyZWRfaGVyZSk6CisgICAgICAgIChybmF0aXZlLkV4cHIuU2l6emxlLnNlbGVjdG9ycy5w
c2V1ZG9zLik6CisgICAgICAgIChybmF0aXZlLkV4cHIuU2l6emxlLnNlbGVjdG9ycy5wc2V1ZG9z
LnN0cmluZ19hcHBlYXJlZF9oZXJlKToKKyAgICAgICAgKHJuYXRpdmUuc2V0RmlsdGVycyk6Cisg
ICAgICAgIChybmF0aXZlLnRva2VuaXplLlNpenpsZS50b2tlbml6ZSk6CisgICAgICAgIChybmF0
aXZlLnRvU2VsZWN0b3IpOgorICAgICAgICAocm5hdGl2ZS5hZGRDb21iaW5hdG9yKToKKyAgICAg
ICAgKHJuYXRpdmUuZWxlbWVudE1hdGNoZXIpOgorICAgICAgICAocm5hdGl2ZS5tdWx0aXBsZUNv
bnRleHRzKToKKyAgICAgICAgKHJuYXRpdmUuY29uZGVuc2UpOgorICAgICAgICAocm5hdGl2ZS5z
ZXRNYXRjaGVyKToKKyAgICAgICAgKHJuYXRpdmUubWF0Y2hlckZyb21Ub2tlbnMubWF0Y2hlcnMp
OgorICAgICAgICAocm5hdGl2ZS5zdXBlck1hdGNoZXIpOgorICAgICAgICAocm5hdGl2ZS5tYXRj
aGVyRnJvbUdyb3VwTWF0Y2hlcnMpOgorICAgICAgICAocm5hdGl2ZS5jb21waWxlLlNpenpsZS5j
b21waWxlKToKKyAgICAgICAgKHJuYXRpdmUuc2VsZWN0LlNpenpsZS5zZWxlY3QpOgorICAgICAg
ICAocm5hdGl2ZS5kaXIpOgorICAgICAgICAocm5hdGl2ZS5zaWJsaW5ncyk6CisgICAgICAgIChy
bmF0aXZlKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmZpbHRlcik6CisgICAgICAgIChybmF0
aXZlLmpRdWVyeS5mbi5leHRlbmQuZmluZCk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5mbi5l
eHRlbmQuZmlsdGVyKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmZuLmV4dGVuZC5ub3QpOgor
ICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5kLmlzKToKKyAgICAgICAgKHJuYXRpdmUu
aW5pdC5qUXVlcnkuZm4uaW5pdCk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5mbi5leHRlbmQu
aGFzKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmZuLmV4dGVuZC5jbG9zZXN0KToKKyAgICAg
ICAgKHJuYXRpdmUualF1ZXJ5LmZuLmV4dGVuZC5pbmRleCk6CisgICAgICAgIChybmF0aXZlLmpR
dWVyeS5mbi5leHRlbmQuYWRkKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmZuLmV4dGVuZC5h
ZGRCYWNrKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmVhY2gucGFyZW50KToKKyAgICAgICAg
KHJuYXRpdmUualF1ZXJ5LmVhY2gucGFyZW50cyk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5l
YWNoLnBhcmVudHNVbnRpbCk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5lYWNoLm5leHQpOgor
ICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZWFjaC5wcmV2KToKKyAgICAgICAgKHJuYXRpdmUualF1
ZXJ5LmVhY2gubmV4dEFsbCk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5lYWNoLnByZXZBbGwp
OgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZWFjaC5uZXh0VW50aWwpOgorICAgICAgICAocm5h
dGl2ZS5qUXVlcnkuZWFjaC5wcmV2VW50aWwpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZWFj
aC5zaWJsaW5ncyk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5lYWNoLmNoaWxkcmVuKToKKyAg
ICAgICAgKHJuYXRpdmUualF1ZXJ5LmVhY2guY29udGVudHMpOgorICAgICAgICAocm5hdGl2ZS5q
UXVlcnkuZm4ubmFtZSk6CisgICAgICAgIChybmF0aXZlLmNyZWF0ZU9wdGlvbnMpOgorICAgICAg
ICAocm5hdGl2ZS5maXJlKToKKyAgICAgICAgKHJuYXRpdmUuc2VsZi5saXN0LmFkZCk6CisgICAg
ICAgIChybmF0aXZlLnNlbGYuYWRkKToKKyAgICAgICAgKHJuYXRpdmUuc2VsZi5yZW1vdmUpOgor
ICAgICAgICAocm5hdGl2ZS5zZWxmLmhhcyk6CisgICAgICAgIChybmF0aXZlLnNlbGYuZW1wdHkp
OgorICAgICAgICAocm5hdGl2ZS5zZWxmLmRpc2FibGUpOgorICAgICAgICAocm5hdGl2ZS5zZWxm
LmRpc2FibGVkKToKKyAgICAgICAgKHJuYXRpdmUuc2VsZi5sb2NrKToKKyAgICAgICAgKHJuYXRp
dmUuc2VsZi5sb2NrZWQpOgorICAgICAgICAocm5hdGl2ZS5zZWxmLmZpcmVXaXRoKToKKyAgICAg
ICAgKHJuYXRpdmUuc2VsZi5maXJlKToKKyAgICAgICAgKHJuYXRpdmUuc2VsZi5maXJlZCk6Cisg
ICAgICAgIChybmF0aXZlLmpRdWVyeS5DYWxsYmFja3MpOgorICAgICAgICAocm5hdGl2ZS5JZGVu
dGl0eSk6CisgICAgICAgIChybmF0aXZlLlRocm93ZXIpOgorICAgICAgICAocm5hdGl2ZS5hZG9w
dFZhbHVlKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmV4dGVuZC5wcm9taXNlLnN0YXRlKToK
KyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmV4dGVuZC5wcm9taXNlLmFsd2F5cyk6CisgICAgICAg
IChybmF0aXZlLmpRdWVyeS5leHRlbmQucHJvbWlzZS5zdHJpbmdfYXBwZWFyZWRfaGVyZSk6Cisg
ICAgICAgIChybmF0aXZlLmpRdWVyeS5leHRlbmQucHJvbWlzZS4pOgorICAgICAgICAocm5hdGl2
ZS5qUXVlcnkuZXh0ZW5kLnByb21pc2UucGlwZSk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5l
eHRlbmQucHJvbWlzZS5taWdodFRocm93KToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmV4dGVu
ZC5wcm9taXNlLnByb2Nlc3Muc3BlY2lhbC5taWdodFRocm93KToKKyAgICAgICAgKHJuYXRpdmUu
alF1ZXJ5LmV4dGVuZC5wcm9taXNlLnJlc29sdmUpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnku
ZXh0ZW5kLnByb21pc2UudGhlbik6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5leHRlbmQucHJv
bWlzZS5wcm9taXNlKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmV4dGVuZC4pOgorICAgICAg
ICAocm5hdGl2ZS5qUXVlcnkuZXh0ZW5kLkRlZmVycmVkKToKKyAgICAgICAgKHJuYXRpdmUualF1
ZXJ5LmV4dGVuZC51cGRhdGVGdW5jKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmV4dGVuZC53
aGVuKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LkRlZmVycmVkLmV4Y2VwdGlvbkhvb2spOgor
ICAgICAgICAocm5hdGl2ZS5qUXVlcnkucmVhZHlFeGNlcHRpb24pOgorICAgICAgICAocm5hdGl2
ZS5qUXVlcnkuZm4ucmVhZHkpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZXh0ZW5kLmhvbGRS
ZWFkeSk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5leHRlbmQucmVhZHkpOgorICAgICAgICAo
cm5hdGl2ZS5jb21wbGV0ZWQpOgorICAgICAgICAocm5hdGl2ZS5lbHNlLnZhbHVlLnVuZGVmaW5l
ZC5idWxrLmVsc2UuZm4pOgorICAgICAgICAocm5hdGl2ZS5hY2Nlc3MpOgorICAgICAgICAocm5h
dGl2ZS5hY2NlcHREYXRhKToKKyAgICAgICAgKHJuYXRpdmUuRGF0YSk6CisgICAgICAgIChybmF0
aXZlLkRhdGEucHJvdG90eXBlLmNhY2hlKToKKyAgICAgICAgKHJuYXRpdmUuRGF0YS5wcm90b3R5
cGUuc2V0IG93bmVyKToKKyAgICAgICAgKHJuYXRpdmUuRGF0YS5wcm90b3R5cGUuZ2V0IG93bmVy
KToKKyAgICAgICAgKHJuYXRpdmUuRGF0YS5wcm90b3R5cGUuYWNjZXNzKToKKyAgICAgICAgKHJu
YXRpdmUuRGF0YS5wcm90b3R5cGUucmVtb3ZlKToKKyAgICAgICAgKHJuYXRpdmUuRGF0YS5wcm90
b3R5cGUuaGFzRGF0YSk6CisgICAgICAgIChybmF0aXZlLmdldERhdGEpOgorICAgICAgICAocm5h
dGl2ZS5kYXRhQXR0cik6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5leHRlbmQuaGFzRGF0YSk6
CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5leHRlbmQuZGF0YSk6CisgICAgICAgIChybmF0aXZl
LmpRdWVyeS5leHRlbmQucmVtb3ZlRGF0YSk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5leHRl
bmQuX2RhdGEpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZXh0ZW5kLl9yZW1vdmVEYXRhKToK
KyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmZuLmV4dGVuZC4pOgorICAgICAgICAocm5hdGl2ZS5q
UXVlcnkuZm4uZXh0ZW5kLmRhdGEpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5k
LnJlbW92ZURhdGEpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZXh0ZW5kLnF1ZXVlKToKKyAg
ICAgICAgKHJuYXRpdmUualF1ZXJ5LmV4dGVuZC5uZXh0KToKKyAgICAgICAgKHJuYXRpdmUualF1
ZXJ5LmV4dGVuZC5kZXF1ZXVlKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmV4dGVuZC5fcXVl
dWVIb29rcyk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5mbi5leHRlbmQucXVldWUpOgorICAg
ICAgICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5kLmRlcXVldWUpOgorICAgICAgICAocm5hdGl2
ZS5qUXVlcnkuZm4uZXh0ZW5kLmNsZWFyUXVldWUpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnku
Zm4uZXh0ZW5kLnJlc29sdmUpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5kLnBy
b21pc2UpOgorICAgICAgICAocm5hdGl2ZS5pc0hpZGRlbldpdGhpblRyZWUpOgorICAgICAgICAo
cm5hdGl2ZS5zd2FwKToKKyAgICAgICAgKHJuYXRpdmUudHdlZW4pOgorICAgICAgICAocm5hdGl2
ZS5hZGp1c3RDU1MpOgorICAgICAgICAocm5hdGl2ZS5zaG93SGlkZSk6CisgICAgICAgIChybmF0
aXZlLmpRdWVyeS5mbi5leHRlbmQuc2hvdyk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5mbi5l
eHRlbmQuaGlkZSk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5mbi5leHRlbmQudG9nZ2xlKToK
KyAgICAgICAgKHJuYXRpdmUuZ2V0QWxsKToKKyAgICAgICAgKHJuYXRpdmUuc2V0R2xvYmFsRXZh
bCk6CisgICAgICAgIChybmF0aXZlLmJ1aWxkRnJhZ21lbnQpOgorICAgICAgICAocm5hdGl2ZS5y
ZXR1cm5GYWxzZSk6CisgICAgICAgIChybmF0aXZlLnNhZmVBY3RpdmVFbGVtZW50KToKKyAgICAg
ICAgKHJuYXRpdmUub25lLm9uZS4xLmZuKToKKyAgICAgICAgKHJuYXRpdmUub24pOgorICAgICAg
ICAocm5hdGl2ZS5EYXRhLnByb3RvdHlwZSk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5ldmVu
dC5ldmVudEhhbmRsZS5lbGVtRGF0YS5oYW5kbGUpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnku
ZXZlbnQuYWRkKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmV2ZW50LnJlbW92ZSk6CisgICAg
ICAgIChybmF0aXZlLmpRdWVyeS5ldmVudC5kaXNwYXRjaCk6CisgICAgICAgIChybmF0aXZlLmpR
dWVyeS5ldmVudC5oYW5kbGVycyk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5ldmVudC5nZXQg
alF1ZXJ5KToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmV2ZW50Lik6CisgICAgICAgIChybmF0
aXZlLmpRdWVyeS5ldmVudC5zZXQgT2JqZWN0KToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmV2
ZW50LmFkZFByb3ApOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZXZlbnQuZml4KToKKyAgICAg
ICAgKHJuYXRpdmUualF1ZXJ5LmV2ZW50LnNwZWNpYWwuZm9jdXMudHJpZ2dlcik6CisgICAgICAg
IChybmF0aXZlLmpRdWVyeS5ldmVudC5zcGVjaWFsLmJsdXIudHJpZ2dlcik6CisgICAgICAgIChy
bmF0aXZlLmpRdWVyeS5ldmVudC5zcGVjaWFsLmNsaWNrLnRyaWdnZXIpOgorICAgICAgICAocm5h
dGl2ZS5qUXVlcnkuZXZlbnQuc3BlY2lhbC5jbGljay5fZGVmYXVsdCk6CisgICAgICAgIChybmF0
aXZlLmpRdWVyeS5ldmVudC5zcGVjaWFsLmJlZm9yZXVubG9hZC5wb3N0RGlzcGF0Y2gpOgorICAg
ICAgICAocm5hdGl2ZS5qUXVlcnkucmVtb3ZlRXZlbnQpOgorICAgICAgICAocm5hdGl2ZS5qUXVl
cnkuRXZlbnQpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuRXZlbnQucHJvdG90eXBlLnByZXZl
bnREZWZhdWx0KToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LkV2ZW50LnByb3RvdHlwZS5zdG9w
UHJvcGFnYXRpb24pOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuRXZlbnQucHJvdG90eXBlLnN0
b3BJbW1lZGlhdGVQcm9wYWdhdGlvbik6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5lYWNoKToK
KyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmV2ZW50LnNwZWNpYWwub3JpZy5oYW5kbGUpOgorICAg
ICAgICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5kLm9uKToKKyAgICAgICAgKHJuYXRpdmUualF1
ZXJ5LmZuLmV4dGVuZC5vbmUpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5kLm9m
Zik6CisgICAgICAgIChybmF0aXZlLm1hbmlwdWxhdGlvblRhcmdldCk6CisgICAgICAgIChybmF0
aXZlLmRpc2FibGVTY3JpcHQpOgorICAgICAgICAocm5hdGl2ZS5yZXN0b3JlU2NyaXB0KToKKyAg
ICAgICAgKHJuYXRpdmUuY2xvbmVDb3B5RXZlbnQpOgorICAgICAgICAocm5hdGl2ZS5maXhJbnB1
dCk6CisgICAgICAgIChybmF0aXZlLmRvbU1hbmlwKToKKyAgICAgICAgKHJuYXRpdmUucmVtb3Zl
KToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmV4dGVuZC5odG1sUHJlZmlsdGVyKToKKyAgICAg
ICAgKHJuYXRpdmUualF1ZXJ5LmV4dGVuZC5jbG9uZSk6CisgICAgICAgIChybmF0aXZlLmpRdWVy
eS5leHRlbmQuY2xlYW5EYXRhKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmZuLmV4dGVuZC5k
ZXRhY2gpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5kLnJlbW92ZSk6CisgICAg
ICAgIChybmF0aXZlLmpRdWVyeS5mbi5leHRlbmQudGV4dCk6CisgICAgICAgIChybmF0aXZlLmpR
dWVyeS5mbi5leHRlbmQuYXBwZW5kKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmZuLmV4dGVu
ZC5wcmVwZW5kKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmZuLmV4dGVuZC5iZWZvcmUpOgor
ICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5kLmFmdGVyKToKKyAgICAgICAgKHJuYXRp
dmUualF1ZXJ5LmZuLmV4dGVuZC5lbXB0eSk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5mbi5l
eHRlbmQuY2xvbmUpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5kLmh0bWwpOgor
ICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5kLnJlcGxhY2VXaXRoKToKKyAgICAgICAg
KHJuYXRpdmUuZ2V0U3R5bGVzKToKKyAgICAgICAgKHJuYXRpdmUuY29tcHV0ZVN0eWxlVGVzdHMp
OgorICAgICAgICAocm5hdGl2ZS5ob29rRm4ucmV0dXJuLmdldCBpZik6CisgICAgICAgIChybmF0
aXZlLmhvb2tGbi5yZXR1cm4pOgorICAgICAgICAocm5hdGl2ZS5hZGRHZXRIb29rSWYpOgorICAg
ICAgICAocm5hdGl2ZS52ZW5kb3JQcm9wTmFtZSk6CisgICAgICAgIChybmF0aXZlLnNldFBvc2l0
aXZlTnVtYmVyKToKKyAgICAgICAgKHJuYXRpdmUuYXVnbWVudFdpZHRoT3JIZWlnaHQpOgorICAg
ICAgICAocm5hdGl2ZS5nZXRXaWR0aE9ySGVpZ2h0KToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5
LmV4dGVuZC5jc3NIb29rcy5vcGFjaXR5LmdldCBpZik6CisgICAgICAgIChybmF0aXZlLmpRdWVy
eS5leHRlbmQuY3NzSG9va3Mub3BhY2l0eSk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5leHRl
bmQuc3R5bGUpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZXh0ZW5kLmNzcyk6CisgICAgICAg
IChybmF0aXZlLmpRdWVyeS5jc3NIb29rcy5uYW1lLmdldCBpZik6CisgICAgICAgIChybmF0aXZl
LmpRdWVyeS5jc3NIb29rcy5uYW1lKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmNzc0hvb2tz
Lm5hbWUuc2V0IHZhcik6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5jc3NIb29rcy5wcmVmaXgu
c3VmZml4LmV4cGFuZCk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5mbi5leHRlbmQuY3NzKToK
KyAgICAgICAgKHJuYXRpdmUuaG9va3Muc3RvcCk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5m
bi5kZWxheSk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5mbi5leHRlbmQuYXR0cik6CisgICAg
ICAgIChybmF0aXZlLmpRdWVyeS5mbi5leHRlbmQucmVtb3ZlQXR0cik6CisgICAgICAgIChybmF0
aXZlLmpRdWVyeS5leHRlbmQuYXR0cik6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5leHRlbmQu
YXR0ckhvb2tzLnR5cGUuc2V0IGlmKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmV4dGVuZC5h
dHRySG9va3MudHlwZSk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5leHRlbmQucmVtb3ZlQXR0
cik6CisgICAgICAgIChybmF0aXZlLmJvb2xIb29rLnNldCBlbGVtKToKKyAgICAgICAgKHJuYXRp
dmUuYXR0ckhhbmRsZS5uYW1lKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmZuLmV4dGVuZC5w
cm9wKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmZuLmV4dGVuZC5yZW1vdmVQcm9wKToKKyAg
ICAgICAgKHJuYXRpdmUualF1ZXJ5LmV4dGVuZC5wcm9wKToKKyAgICAgICAgKHJuYXRpdmUualF1
ZXJ5LmV4dGVuZC5wcm9wSG9va3MudGFiSW5kZXguZ2V0IHZhcik6CisgICAgICAgIChybmF0aXZl
LmpRdWVyeS5leHRlbmQucHJvcEhvb2tzLnRhYkluZGV4KToKKyAgICAgICAgKHJuYXRpdmUuYm9v
bEhvb2spOgorICAgICAgICAocm5hdGl2ZS5zdXBwb3J0Lm9wdFNlbGVjdGVkLmpRdWVyeS5wcm9w
SG9va3Muc2VsZWN0ZWQuZ2V0IGVsZW0pOgorICAgICAgICAocm5hdGl2ZS5zdXBwb3J0Lm9wdFNl
bGVjdGVkLmpRdWVyeS5wcm9wSG9va3Muc2VsZWN0ZWQuc2V0IGVsZW0pOgorICAgICAgICAocm5h
dGl2ZS5zdHJpcEFuZENvbGxhcHNlKToKKyAgICAgICAgKHJuYXRpdmUuZ2V0Q2xhc3MpOgorICAg
ICAgICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5kLmFkZENsYXNzKToKKyAgICAgICAgKHJuYXRp
dmUualF1ZXJ5LmZuLmV4dGVuZC5yZW1vdmVDbGFzcyk6CisgICAgICAgIChybmF0aXZlLmpRdWVy
eS5mbi5leHRlbmQudG9nZ2xlQ2xhc3MpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0
ZW5kLmhhc0NsYXNzKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmZuLmV4dGVuZC52YWwpOgor
ICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZXh0ZW5kLnZhbEhvb2tzLnNlbGVjdC5nZXQgdmFyKToK
KyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmV4dGVuZC52YWxIb29rcy5zZWxlY3QpOgorICAgICAg
ICAocm5hdGl2ZS5qUXVlcnkuZXh0ZW5kLnZhbEhvb2tzLnNlbGVjdC5zZXQgdmFyKToKKyAgICAg
ICAgKHJuYXRpdmUualF1ZXJ5LnZhbEhvb2tzLnRoaXMuc2V0IGlmKToKKyAgICAgICAgKHJuYXRp
dmUualF1ZXJ5LnZhbEhvb2tzLnRoaXMpOgorICAgICAgICAocm5hdGl2ZS50cmlnZ2VyKToKKyAg
ICAgICAgKHJuYXRpdmUuc2ltdWxhdGUpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0
ZW5kLnRyaWdnZXIpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZm4uZXh0ZW5kLnRyaWdnZXJI
YW5kbGVyKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmZuLmV4dGVuZC5ob3Zlcik6CisgICAg
ICAgIChybmF0aXZlLnN1cHBvcnQuZm9jdXNpbi5oYW5kbGVyKToKKyAgICAgICAgKHJuYXRpdmUu
c3VwcG9ydC5mb2N1c2luLmpRdWVyeS5ldmVudC5zcGVjaWFsLmZpeC5zZXR1cCk6CisgICAgICAg
IChybmF0aXZlLnN1cHBvcnQuZm9jdXNpbi5qUXVlcnkuZXZlbnQuc3BlY2lhbC5maXgudGVhcmRv
d24pOgorICAgICAgICAocm5hdGl2ZS5idWlsZFBhcmFtcyk6CisgICAgICAgIChybmF0aXZlLmFk
ZCk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5wYXJhbSk6CisgICAgICAgIChybmF0aXZlLmpR
dWVyeS5mbi5leHRlbmQuc2VyaWFsaXplKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmZuLmV4
dGVuZC5zZXJpYWxpemVBcnJheSk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5mbi5leHRlbmQu
d3JhcEFsbCk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5mbi5leHRlbmQud3JhcElubmVyKToK
KyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmZuLmV4dGVuZC53cmFwKToKKyAgICAgICAgKHJuYXRp
dmUualF1ZXJ5LmZuLmV4dGVuZC51bndyYXApOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZXhw
ci5wc2V1ZG9zLmhpZGRlbik6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5leHByLnBzZXVkb3Mu
dmlzaWJsZSk6CisgICAgICAgIChybmF0aXZlLnN1cHBvcnQuY3JlYXRlSFRNTERvY3VtZW50KToK
KyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LnBhcnNlSFRNTCk6CisgICAgICAgIChybmF0aXZlLmdl
dFdpbmRvdyk6CisgICAgICAgIChybmF0aXZlLmpRdWVyeS5vZmZzZXQuc2V0T2Zmc2V0KToKKyAg
ICAgICAgKHJuYXRpdmUualF1ZXJ5LmZuLmV4dGVuZC5vZmZzZXQpOgorICAgICAgICAocm5hdGl2
ZS5qUXVlcnkuZm4uZXh0ZW5kLnBvc2l0aW9uKToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5LmZu
LmV4dGVuZC5vZmZzZXRQYXJlbnQpOgorICAgICAgICAocm5hdGl2ZS5qUXVlcnkuZm4ubWV0aG9k
KToKKyAgICAgICAgKHJuYXRpdmUualF1ZXJ5Lm5vQ29uZmxpY3QpOgorICAgICAgICAqIFNwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9k
ZV9tb2R1bGVzL2pxdWVyeS9kaXN0L2pxdWVyeS5zbGltLm1pbi5qczogQWRkZWQuCisgICAgICAg
IChyKToKKyAgICAgICAgKHYpOgorICAgICAgICAoci5mbi5yLnByb3RvdHlwZS50b0FycmF5KToK
KyAgICAgICAgKHIuZm4uci5wcm90b3R5cGUucHVzaFN0YWNrKToKKyAgICAgICAgKHIuZm4uci5w
cm90b3R5cGUuZWFjaCk6CisgICAgICAgIChyLmZuLnIucHJvdG90eXBlLm1hcCk6CisgICAgICAg
IChyLmZuLnIucHJvdG90eXBlLnNsaWNlKToKKyAgICAgICAgKHIuZm4uci5wcm90b3R5cGUuZmly
c3QpOgorICAgICAgICAoci5mbi5yLnByb3RvdHlwZS5sYXN0KToKKyAgICAgICAgKHIuZm4uci5w
cm90b3R5cGUuZXEpOgorICAgICAgICAoci5mbi5yLnByb3RvdHlwZS5lbmQpOgorICAgICAgICAo
ci5leHRlbmQuci5mbi5leHRlbmQpOgorICAgICAgICAoci5leHRlbmQpOgorICAgICAgICAoci5l
eHRlbmQuKToKKyAgICAgICAgKEIpOgorICAgICAgICAoSSk6CisgICAgICAgIChZLmFhKToKKyAg
ICAgICAgKFkuY2EpOgorICAgICAgICAoWS5kYSk6CisgICAgICAgIChZLmNhdGNoLkcpOgorICAg
ICAgICAoWS5nYSk6CisgICAgICAgIChZLmhhKToKKyAgICAgICAgKFkuaWEpOgorICAgICAgICAo
WS5qYSk6CisgICAgICAgIChZLmthKToKKyAgICAgICAgKFkubGEpOgorICAgICAgICAoWS5tYSk6
CisgICAgICAgIChZLm5hKToKKyAgICAgICAgKFkub2EpOgorICAgICAgICAoWS5wYS4pOgorICAg
ICAgICAoWS5wYSk6CisgICAgICAgIChZLik6CisgICAgICAgIChZLmYuZ2EuaXNYTUwpOgorICAg
ICAgICAoWS5tLmdhLnNldERvY3VtZW50KToKKyAgICAgICAgKFkuZ2EubWF0Y2hlcyk6CisgICAg
ICAgIChZLmdhLm1hdGNoZXNTZWxlY3Rvcik6CisgICAgICAgIChZLmdhLmNvbnRhaW5zKToKKyAg
ICAgICAgKFkuZ2EuYXR0cik6CisgICAgICAgIChZLmdhLmVzY2FwZSk6CisgICAgICAgIChZLmdh
LmVycm9yKToKKyAgICAgICAgKFkuZ2EudW5pcXVlU29ydCk6CisgICAgICAgIChZLmUuZ2EuZ2V0
VGV4dCk6CisgICAgICAgIChZLmQuZ2Euc2VsZWN0b3JzLnByZUZpbHRlci5BVFRSKToKKyAgICAg
ICAgKFkuZC5nYS5zZWxlY3RvcnMucHJlRmlsdGVyLkNISUxEKToKKyAgICAgICAgKFkuZC5nYS5z
ZWxlY3RvcnMucHJlRmlsdGVyLlBTRVVETyk6CisgICAgICAgIChZLmQuZ2Euc2VsZWN0b3JzLmZp
bHRlci4pOgorICAgICAgICAoWS5kLmdhLnNlbGVjdG9ycy5maWx0ZXIuVEFHKToKKyAgICAgICAg
KFkuZC5nYS5zZWxlY3RvcnMuZmlsdGVyLkNMQVNTKToKKyAgICAgICAgKFkuZC5nYS5zZWxlY3Rv
cnMuZmlsdGVyLkFUVFIpOgorICAgICAgICAoWS5kLmdhLnNlbGVjdG9ycy5maWx0ZXIuQ0hJTEQp
OgorICAgICAgICAoWS5kLmdhLnNlbGVjdG9ycy5maWx0ZXIuUFNFVURPKToKKyAgICAgICAgKFku
ZC5nYS5zZWxlY3RvcnMucHNldWRvcy4pOgorICAgICAgICAoWS5kLmdhLnNlbGVjdG9ycy5wc2V1
ZG9zLnRhcmdldCk6CisgICAgICAgIChZLmQuZ2Euc2VsZWN0b3JzLnBzZXVkb3Mucm9vdCk6Cisg
ICAgICAgIChZLmQuZ2Euc2VsZWN0b3JzLnBzZXVkb3MuZm9jdXMpOgorICAgICAgICAoWS5kLmdh
LnNlbGVjdG9ycy5wc2V1ZG9zLmNoZWNrZWQpOgorICAgICAgICAoWS5kLmdhLnNlbGVjdG9ycy5w
c2V1ZG9zLnNlbGVjdGVkKToKKyAgICAgICAgKFkuZC5nYS5zZWxlY3RvcnMucHNldWRvcy5lbXB0
eSk6CisgICAgICAgIChZLmQuZ2Euc2VsZWN0b3JzLnBzZXVkb3MucGFyZW50KToKKyAgICAgICAg
KFkuZC5nYS5zZWxlY3RvcnMucHNldWRvcy5oZWFkZXIpOgorICAgICAgICAoWS5kLmdhLnNlbGVj
dG9ycy5wc2V1ZG9zLmlucHV0KToKKyAgICAgICAgKFkuZC5nYS5zZWxlY3RvcnMucHNldWRvcy5i
dXR0b24pOgorICAgICAgICAoWS5kLmdhLnNlbGVjdG9ycy5wc2V1ZG9zLnRleHQpOgorICAgICAg
ICAoWS5yYSk6CisgICAgICAgIChZLmcuZ2EudG9rZW5pemUpOgorICAgICAgICAoWS5zYSk6Cisg
ICAgICAgIChZLnRhKToKKyAgICAgICAgKFkudWEpOgorICAgICAgICAoWS52YSk6CisgICAgICAg
IChZLndhKToKKyAgICAgICAgKFkueGEpOgorICAgICAgICAoWS55YSk6CisgICAgICAgIChZLmYp
OgorICAgICAgICAoWS56YSk6CisgICAgICAgIChZLnJldHVybi5oLmdhLmNvbXBpbGUpOgorICAg
ICAgICAoWS5pLmdhLnNlbGVjdCk6CisgICAgICAgIChZLnkpOgorICAgICAgICAoWS56KToKKyAg
ICAgICAgKFkpOgorICAgICAgICAoWS5yLmZpbHRlcik6CisgICAgICAgIChZLnIuZm4uZXh0ZW5k
Lik6CisgICAgICAgIChZLnIuZm4uZXh0ZW5kKToKKyAgICAgICAgKFkuRy5yLmZuLmluaXQpOgor
ICAgICAgICAoWS5yLmVhY2gpOgorICAgICAgICAoWS5MKToKKyAgICAgICAgKFkuaSk6CisgICAg
ICAgIChZLmouKToKKyAgICAgICAgKFkuai5hZGQpOgorICAgICAgICAoWS5qLnJlbW92ZSk6Cisg
ICAgICAgIChZLmouaGFzKToKKyAgICAgICAgKFkuai5lbXB0eSk6CisgICAgICAgIChZLmouZGlz
YWJsZSk6CisgICAgICAgIChZLmouZGlzYWJsZWQpOgorICAgICAgICAoWS5qLmxvY2spOgorICAg
ICAgICAoWS5qLmxvY2tlZCk6CisgICAgICAgIChZLmouZmlyZVdpdGgpOgorICAgICAgICAoWS5q
LmZpcmUpOgorICAgICAgICAoWS5qLmZpcmVkKToKKyAgICAgICAgKFkuci5DYWxsYmFja3MpOgor
ICAgICAgICAoWS5NKToKKyAgICAgICAgKFkuTik6CisgICAgICAgIChZLk8pOgorICAgICAgICAo
WS5yLmV4dGVuZC4pOgorICAgICAgICAoWS5yLmV4dGVuZCk6CisgICAgICAgIChZLnIuRGVmZXJy
ZWQuZXhjZXB0aW9uSG9vayk6CisgICAgICAgIChZLnIucmVhZHlFeGNlcHRpb24pOgorICAgICAg
ICAoWS5yLmZuLnJlYWR5KToKKyAgICAgICAgKFkuUik6CisgICAgICAgIChZLlMpOgorICAgICAg
ICAoWS5UKToKKyAgICAgICAgKFkuVSk6CisgICAgICAgIChZLlUucHJvdG90eXBlLmNhY2hlKToK
KyAgICAgICAgKFkuVS5wcm90b3R5cGUuYWNjZXNzKToKKyAgICAgICAgKFkuVS5wcm90b3R5cGUu
cmVtb3ZlKToKKyAgICAgICAgKFkuVS5wcm90b3R5cGUuaGFzRGF0YSk6CisgICAgICAgIChZLlop
OgorICAgICAgICAoWS5lYSk6CisgICAgICAgIChZLnIuZXZlbnQuKToKKyAgICAgICAgKFkuci5l
dmVudC5hZGQpOgorICAgICAgICAoWS5yLmV2ZW50LnJlbW92ZSk6CisgICAgICAgIChZLnIuZXZl
bnQuZGlzcGF0Y2gpOgorICAgICAgICAoWS5yLmV2ZW50LmhhbmRsZXJzKToKKyAgICAgICAgKFku
ci5ldmVudC5hZGRQcm9wKToKKyAgICAgICAgKFkuci5ldmVudC5zZXQgZ2V0IGZpeCk6CisgICAg
ICAgIChZLnIuZXZlbnQuc3BlY2lhbC5mb2N1cy50cmlnZ2VyKToKKyAgICAgICAgKFkuci5ldmVu
dC5zcGVjaWFsLmJsdXIudHJpZ2dlcik6CisgICAgICAgIChZLnIuZXZlbnQuc3BlY2lhbC5jbGlj
ay50cmlnZ2VyKToKKyAgICAgICAgKFkuci5ldmVudC5zcGVjaWFsLmNsaWNrLl9kZWZhdWx0KToK
KyAgICAgICAgKFkuci5ldmVudC5zcGVjaWFsLmJlZm9yZXVubG9hZC5wb3N0RGlzcGF0Y2gpOgor
ICAgICAgICAoWS5yLnJlbW92ZUV2ZW50KToKKyAgICAgICAgKFkuci5FdmVudCk6CisgICAgICAg
IChZLnIuRXZlbnQucHJvdG90eXBlLnByZXZlbnREZWZhdWx0KToKKyAgICAgICAgKFkuci5FdmVu
dC5wcm90b3R5cGUuc3RvcFByb3BhZ2F0aW9uKToKKyAgICAgICAgKFkuci5FdmVudC5wcm90b3R5
cGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKToKKyAgICAgICAgKFkuRGEpOgorICAgICAgICAo
WS5FYSk6CisgICAgICAgIChZLkZhKToKKyAgICAgICAgKFkuR2EpOgorICAgICAgICAoWS5KYSk6
CisgICAgICAgIChZLk1hKToKKyAgICAgICAgKFkuYik6CisgICAgICAgIChZLlVhKToKKyAgICAg
ICAgKFkuVmEpOgorICAgICAgICAoWS5XYSk6CisgICAgICAgIChZLlhhKToKKyAgICAgICAgKFku
Z2V0IHIpOgorICAgICAgICAoWS5zZXQgZ2V0IHIpOgorICAgICAgICAoWS5yLmZuLmRlbGF5KToK
KyAgICAgICAgKFkuc2V0IFlhLnNldCByZXR1cm4pOgorICAgICAgICAoWS5zZXQgWWEpOgorICAg
ICAgICAoWS5nZXQgby5vcHRTZWxlY3RlZCk6CisgICAgICAgIChZLmdldCBvKToKKyAgICAgICAg
KFkuYmIpOgorICAgICAgICAoWS5zZXQgdmFyKToKKyAgICAgICAgKFkuaWIpOgorICAgICAgICAo
WS5lKToKKyAgICAgICAgKFkuci5wYXJhbSk6CisgICAgICAgIChZLnIuZXhwci5wc2V1ZG9zLmhp
ZGRlbik6CisgICAgICAgIChZLnIuZXhwci5wc2V1ZG9zLnZpc2libGUpOgorICAgICAgICAoWS5v
LmNyZWF0ZUhUTUxEb2N1bWVudCk6CisgICAgICAgIChZLnIucGFyc2VIVE1MKToKKyAgICAgICAg
KFkuci5vZmZzZXQuc2V0T2Zmc2V0KToKKyAgICAgICAgKFkucmV0dXJuLnIubm9Db25mbGljdCk6
CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L2Rpc3QvanF1ZXJ5LnNsaW0ubWluLm1h
cDogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L2V4dGVybmFsL3Npenps
ZS9MSUNFTlNFLnR4dDogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L2V4
dGVybmFsL3NpenpsZS9kaXN0L3NpenpsZS5qczogQWRkZWQuCisgICAgICAgIChzb3J0T3JkZXIp
OgorICAgICAgICAoaW5kZXhPZik6CisgICAgICAgIChybmF0aXZlLmZ1bmVzY2FwZSk6CisgICAg
ICAgIChybmF0aXZlLmZjc3Nlc2NhcGUpOgorICAgICAgICAocm5hdGl2ZS51bmxvYWRIYW5kbGVy
KToKKyAgICAgICAgKHJuYXRpdmUuZGlzYWJsZWRBbmNlc3Rvci5hZGRDb21iaW5hdG9yKToKKyAg
ICAgICAgKHJuYXRpdmUucmV0dXJuLmVsZW0uZGlzYWJsZWQudHJ1ZSk6CisgICAgICAgIChybmF0
aXZlLmNhdGNoLnB1c2gpOgorICAgICAgICAocm5hdGl2ZS5jYXRjaCk6CisgICAgICAgIChybmF0
aXZlLlNpenpsZSk6CisgICAgICAgIChybmF0aXZlLmNyZWF0ZUNhY2hlKToKKyAgICAgICAgKHJu
YXRpdmUubWFya0Z1bmN0aW9uKToKKyAgICAgICAgKHJuYXRpdmUuYXNzZXJ0KToKKyAgICAgICAg
KHJuYXRpdmUuYWRkSGFuZGxlKToKKyAgICAgICAgKHJuYXRpdmUuc2libGluZ0NoZWNrKToKKyAg
ICAgICAgKHJuYXRpdmUuY3JlYXRlSW5wdXRQc2V1ZG8pOgorICAgICAgICAocm5hdGl2ZS5jcmVh
dGVCdXR0b25Qc2V1ZG8pOgorICAgICAgICAocm5hdGl2ZS5jcmVhdGVEaXNhYmxlZFBzZXVkbyk6
CisgICAgICAgIChybmF0aXZlLmNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8uKToKKyAgICAgICAgKHJu
YXRpdmUuY3JlYXRlUG9zaXRpb25hbFBzZXVkbyk6CisgICAgICAgIChybmF0aXZlLik6CisgICAg
ICAgIChybmF0aXZlLmlzWE1MLlNpenpsZS5pc1hNTCk6CisgICAgICAgIChybmF0aXZlLkV4cHIu
ZmlsdGVyLnN0cmluZ19hcHBlYXJlZF9oZXJlKToKKyAgICAgICAgKHJuYXRpdmUuRXhwci5maW5k
LnN0cmluZ19hcHBlYXJlZF9oZXJlKToKKyAgICAgICAgKHJuYXRpdmUuZWxzZS5FeHByLmZpbHRl
ci5zdHJpbmdfYXBwZWFyZWRfaGVyZSk6CisgICAgICAgIChybmF0aXZlLmVsc2UuRXhwci5maW5k
LnN0cmluZ19hcHBlYXJlZF9oZXJlKToKKyAgICAgICAgKHJuYXRpdmUuc2V0RG9jdW1lbnQuU2l6
emxlLnNldERvY3VtZW50KToKKyAgICAgICAgKHJuYXRpdmUuU2l6emxlLm1hdGNoZXMpOgorICAg
ICAgICAocm5hdGl2ZS5TaXp6bGUubWF0Y2hlc1NlbGVjdG9yKToKKyAgICAgICAgKHJuYXRpdmUu
U2l6emxlLmNvbnRhaW5zKToKKyAgICAgICAgKHJuYXRpdmUuU2l6emxlLmF0dHIpOgorICAgICAg
ICAocm5hdGl2ZS5TaXp6bGUuZXNjYXBlKToKKyAgICAgICAgKHJuYXRpdmUuU2l6emxlLmVycm9y
KToKKyAgICAgICAgKHJuYXRpdmUuU2l6emxlLnVuaXF1ZVNvcnQpOgorICAgICAgICAocm5hdGl2
ZS5nZXRUZXh0LlNpenpsZS5nZXRUZXh0KToKKyAgICAgICAgKHJuYXRpdmUuRXhwci5TaXp6bGUu
c2VsZWN0b3JzLnByZUZpbHRlci5zdHJpbmdfYXBwZWFyZWRfaGVyZSk6CisgICAgICAgIChybmF0
aXZlLkV4cHIuU2l6emxlLnNlbGVjdG9ycy5maWx0ZXIuKToKKyAgICAgICAgKHJuYXRpdmUuRXhw
ci5TaXp6bGUuc2VsZWN0b3JzLmZpbHRlci5zdHJpbmdfYXBwZWFyZWRfaGVyZSk6CisgICAgICAg
IChybmF0aXZlLkV4cHIuU2l6emxlLnNlbGVjdG9ycy5wc2V1ZG9zLnN0cmluZ19hcHBlYXJlZF9o
ZXJlLm1hcmtGdW5jdGlvbik6CisgICAgICAgIChybmF0aXZlLkV4cHIuU2l6emxlLnNlbGVjdG9y
cy5wc2V1ZG9zLnN0cmluZ19hcHBlYXJlZF9oZXJlKToKKyAgICAgICAgKHJuYXRpdmUuRXhwci5T
aXp6bGUuc2VsZWN0b3JzLnBzZXVkb3Muc3RyaW5nX2FwcGVhcmVkX2hlcmUuY3JlYXRlUG9zaXRp
b25hbFBzZXVkbyk6CisgICAgICAgIChybmF0aXZlLnNldEZpbHRlcnMpOgorICAgICAgICAocm5h
dGl2ZS50b2tlbml6ZS5TaXp6bGUudG9rZW5pemUpOgorICAgICAgICAocm5hdGl2ZS50b1NlbGVj
dG9yKToKKyAgICAgICAgKHJuYXRpdmUuYWRkQ29tYmluYXRvcik6CisgICAgICAgIChybmF0aXZl
LmVsZW1lbnRNYXRjaGVyKToKKyAgICAgICAgKHJuYXRpdmUubXVsdGlwbGVDb250ZXh0cyk6Cisg
ICAgICAgIChybmF0aXZlLmNvbmRlbnNlKToKKyAgICAgICAgKHJuYXRpdmUuc2V0TWF0Y2hlcik6
CisgICAgICAgIChybmF0aXZlLm1hdGNoZXJGcm9tVG9rZW5zLm1hdGNoZXJzKToKKyAgICAgICAg
KHJuYXRpdmUuc3VwZXJNYXRjaGVyKToKKyAgICAgICAgKHJuYXRpdmUubWF0Y2hlckZyb21Hcm91
cE1hdGNoZXJzKToKKyAgICAgICAgKHJuYXRpdmUuY29tcGlsZS5TaXp6bGUuY29tcGlsZSk6Cisg
ICAgICAgIChybmF0aXZlLnNlbGVjdC5TaXp6bGUuc2VsZWN0KToKKyAgICAgICAgKHJuYXRpdmUu
c3VwcG9ydC5zb3J0RGV0YWNoZWQuYXNzZXJ0KToKKyAgICAgICAgKHJuYXRpdmUucmV0dXJuLmVs
LmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKToKKyAgICAgICAgKHJuYXRpdmUuc3VwcG9ydC5hdHRy
aWJ1dGVzLmFzc2VydCk6CisgICAgICAgIChybmF0aXZlLnJldHVybi5lbC5nZXRBdHRyaWJ1dGUp
OgorICAgICAgICAocm5hdGl2ZS5TaXp6bGUubm9Db25mbGljdCk6CisgICAgICAgIChybmF0aXZl
LnR5cGVvZi5kZWZpbmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUuZGVmaW5lLmFtZC5kZWZpbmUpOgor
ICAgICAgICAocm5hdGl2ZS5lbHNlKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkv
ZXh0ZXJuYWwvc2l6emxlL2Rpc3Qvc2l6emxlLm1pbi5qczogQWRkZWQuCisgICAgICAgIChCKToK
KyAgICAgICAgKEkpOgorICAgICAgICAoWS5hYSk6CisgICAgICAgIChZLmNhKToKKyAgICAgICAg
KFkuZGEpOgorICAgICAgICAoWS5lYS50YSk6CisgICAgICAgIChZLnJldHVybi5hLmRpc2FibGVk
LjApOgorICAgICAgICAoWS5jYXRjaC5HKToKKyAgICAgICAgKFkuY2F0Y2gpOgorICAgICAgICAo
WS5nYSk6CisgICAgICAgIChZLmhhKToKKyAgICAgICAgKFkuaWEpOgorICAgICAgICAoWS5qYSk6
CisgICAgICAgIChZLmthKToKKyAgICAgICAgKFkubGEpOgorICAgICAgICAoWS5tYSk6CisgICAg
ICAgIChZLm5hKToKKyAgICAgICAgKFkub2EpOgorICAgICAgICAoWS5wYS4pOgorICAgICAgICAo
WS5wYSk6CisgICAgICAgIChZLik6CisgICAgICAgIChZLmYuZ2EuaXNYTUwpOgorICAgICAgICAo
WS5tLmdhLnNldERvY3VtZW50KToKKyAgICAgICAgKFkuZ2EubWF0Y2hlcyk6CisgICAgICAgIChZ
LmdhLm1hdGNoZXNTZWxlY3Rvcik6CisgICAgICAgIChZLmdhLmNvbnRhaW5zKToKKyAgICAgICAg
KFkuZ2EuYXR0cik6CisgICAgICAgIChZLmdhLmVzY2FwZSk6CisgICAgICAgIChZLmdhLmVycm9y
KToKKyAgICAgICAgKFkuZ2EudW5pcXVlU29ydCk6CisgICAgICAgIChZLmUuZ2EuZ2V0VGV4dCk6
CisgICAgICAgIChZLmQuZ2Euc2VsZWN0b3JzLnByZUZpbHRlci5BVFRSKToKKyAgICAgICAgKFku
ZC5nYS5zZWxlY3RvcnMucHJlRmlsdGVyLkNISUxEKToKKyAgICAgICAgKFkuZC5nYS5zZWxlY3Rv
cnMucHJlRmlsdGVyLlBTRVVETyk6CisgICAgICAgIChZLmQuZ2Euc2VsZWN0b3JzLmZpbHRlci4p
OgorICAgICAgICAoWS5kLmdhLnNlbGVjdG9ycy5maWx0ZXIuVEFHKToKKyAgICAgICAgKFkuZC5n
YS5zZWxlY3RvcnMuZmlsdGVyLkNMQVNTKToKKyAgICAgICAgKFkuZC5nYS5zZWxlY3RvcnMuZmls
dGVyLkFUVFIpOgorICAgICAgICAoWS5kLmdhLnNlbGVjdG9ycy5maWx0ZXIuQ0hJTEQpOgorICAg
ICAgICAoWS5kLmdhLnNlbGVjdG9ycy5maWx0ZXIuUFNFVURPKToKKyAgICAgICAgKFkuZC5nYS5z
ZWxlY3RvcnMucHNldWRvcy5ub3QuaWEpOgorICAgICAgICAoWS5kLmdhLnNlbGVjdG9ycy5wc2V1
ZG9zLmhhcy5pYSk6CisgICAgICAgIChZLmQuZ2Euc2VsZWN0b3JzLnBzZXVkb3MuY29udGFpbnMu
aWEpOgorICAgICAgICAoWS5kLmdhLnNlbGVjdG9ycy5wc2V1ZG9zLmxhbmcuaWEpOgorICAgICAg
ICAoWS5kLmdhLnNlbGVjdG9ycy5wc2V1ZG9zLnRhcmdldCk6CisgICAgICAgIChZLmQuZ2Euc2Vs
ZWN0b3JzLnBzZXVkb3Mucm9vdCk6CisgICAgICAgIChZLmQuZ2Euc2VsZWN0b3JzLnBzZXVkb3Mu
Zm9jdXMpOgorICAgICAgICAoWS5kLmdhLnNlbGVjdG9ycy5wc2V1ZG9zLmNoZWNrZWQpOgorICAg
ICAgICAoWS5kLmdhLnNlbGVjdG9ycy5wc2V1ZG9zLnNlbGVjdGVkKToKKyAgICAgICAgKFkuZC5n
YS5zZWxlY3RvcnMucHNldWRvcy5lbXB0eSk6CisgICAgICAgIChZLmQuZ2Euc2VsZWN0b3JzLnBz
ZXVkb3MucGFyZW50KToKKyAgICAgICAgKFkuZC5nYS5zZWxlY3RvcnMucHNldWRvcy5oZWFkZXIp
OgorICAgICAgICAoWS5kLmdhLnNlbGVjdG9ycy5wc2V1ZG9zLmlucHV0KToKKyAgICAgICAgKFku
ZC5nYS5zZWxlY3RvcnMucHNldWRvcy5idXR0b24pOgorICAgICAgICAoWS5kLmdhLnNlbGVjdG9y
cy5wc2V1ZG9zLnRleHQpOgorICAgICAgICAoWS5kLmdhLnNlbGVjdG9ycy5wc2V1ZG9zLmZpcnN0
LnBhKToKKyAgICAgICAgKFkuZC5nYS5zZWxlY3RvcnMucHNldWRvcy5sYXN0LnBhKToKKyAgICAg
ICAgKFkuZC5nYS5zZWxlY3RvcnMucHNldWRvcy5lcS5wYSk6CisgICAgICAgIChZLmQuZ2Euc2Vs
ZWN0b3JzLnBzZXVkb3MuZXZlbi5wYSk6CisgICAgICAgIChZLmQuZ2Euc2VsZWN0b3JzLnBzZXVk
b3Mub2RkLnBhKToKKyAgICAgICAgKFkuZC5nYS5zZWxlY3RvcnMucHNldWRvcy5sdC5wYSk6Cisg
ICAgICAgIChZLmQuZ2Euc2VsZWN0b3JzLnBzZXVkb3MuZ3QucGEpOgorICAgICAgICAoWS5yYSk6
CisgICAgICAgIChZLmcuZ2EudG9rZW5pemUpOgorICAgICAgICAoWS5zYSk6CisgICAgICAgIChZ
LnRhKToKKyAgICAgICAgKFkudWEpOgorICAgICAgICAoWS52YSk6CisgICAgICAgIChZLndhKToK
KyAgICAgICAgKFkueGEpOgorICAgICAgICAoWS55YSk6CisgICAgICAgIChZLmYpOgorICAgICAg
ICAoWS56YSk6CisgICAgICAgIChZLmguZ2EuY29tcGlsZSk6CisgICAgICAgIChZLmkuZ2Euc2Vs
ZWN0KToKKyAgICAgICAgKFkuYy5zb3J0RGV0YWNoZWQuamEpOgorICAgICAgICAoWS5jLmF0dHJp
YnV0ZXMuamEpOgorICAgICAgICAoWS5nYS5ub0NvbmZsaWN0KToKKyAgICAgICAgKFkuc3RyaW5n
X2FwcGVhcmVkX2hlcmUudHlwZW9mLmRlZmluZS5kZWZpbmUuYW1kLmRlZmluZSk6CisgICAgICAg
ICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2px
dWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L2V4dGVybmFsL3NpenpsZS9kaXN0L3NpenpsZS5taW4u
bWFwOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvcGFja2FnZS5qc29u
OiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2FqYXguanM6IEFk
ZGVkLgorICAgICAgICAoYWRkVG9QcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKToKKyAgICAgICAgKGlu
c3BlY3RQcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKToKKyAgICAgICAgKGFqYXhFeHRlbmQpOgorICAg
ICAgICAoYWpheEhhbmRsZVJlc3BvbnNlcyk6CisgICAgICAgIChhamF4Q29udmVydCk6CisgICAg
ICAgIChqUXVlcnkuZXh0ZW5kLmFqYXhTZXR1cCk6CisgICAgICAgIChqUXVlcnkuZXh0ZW5kLmpx
WEhSLmdldFJlc3BvbnNlSGVhZGVyKToKKyAgICAgICAgKGpRdWVyeS5leHRlbmQuanFYSFIuZ2V0
QWxsUmVzcG9uc2VIZWFkZXJzKToKKyAgICAgICAgKGpRdWVyeS5leHRlbmQuanFYSFIuc2V0UmVx
dWVzdEhlYWRlcik6CisgICAgICAgIChqUXVlcnkuZXh0ZW5kLmpxWEhSLm92ZXJyaWRlTWltZVR5
cGUpOgorICAgICAgICAoalF1ZXJ5LmV4dGVuZC5qcVhIUi5zdGF0dXNDb2RlKToKKyAgICAgICAg
KGpRdWVyeS5leHRlbmQuanFYSFIuYWJvcnQpOgorICAgICAgICAoalF1ZXJ5LmV4dGVuZC5kb25l
KToKKyAgICAgICAgKGpRdWVyeS5leHRlbmQuYWpheCk6CisgICAgICAgIChqUXVlcnkuZXh0ZW5k
LmdldEpTT04pOgorICAgICAgICAoalF1ZXJ5LmV4dGVuZC5nZXRTY3JpcHQpOgorICAgICAgICAo
alF1ZXJ5Lm1ldGhvZCk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9hamF4
L2pzb25wLmpzOiBBZGRlZC4KKyAgICAgICAgKGpRdWVyeS5hamF4U2V0dXAuanNvbnBDYWxsYmFj
ayk6CisgICAgICAgIChqc29uUHJvcC5zLmRhdGFUeXBlcy4wLnN0cmluZ19hcHBlYXJlZF9oZXJl
LmVsc2UpOgorICAgICAgICAoanNvblByb3Aucy5kYXRhVHlwZXMuMC5zdHJpbmdfYXBwZWFyZWRf
aGVyZS5zLmNvbnZlcnRlcnMuc3RyaW5nX2FwcGVhcmVkX2hlcmUpOgorICAgICAgICAoanNvblBy
b3Aucy5kYXRhVHlwZXMuMC5zdHJpbmdfYXBwZWFyZWRfaGVyZS53aW5kb3cuY2FsbGJhY2tOYW1l
KToKKyAgICAgICAgKGpzb25Qcm9wLnMuZGF0YVR5cGVzLjAuc3RyaW5nX2FwcGVhcmVkX2hlcmUu
anFYSFIuYWx3YXlzKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2FqYXgv
bG9hZC5qczogQWRkZWQuCisgICAgICAgIChqUXVlcnkuZm4ubG9hZCk6CisgICAgICAgICogU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9u
b2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9hamF4L3BhcnNlWE1MLmpzOiBBZGRlZC4KKyAgICAgICAg
KGpRdWVyeS5wYXJzZVhNTCk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9h
amF4L3NjcmlwdC5qczogQWRkZWQuCisgICAgICAgIChqUXVlcnkuYWpheFByZWZpbHRlcik6Cisg
ICAgICAgIChqUXVlcnkuYWpheFNldHVwLmNvbnZlcnRlcnMuc3RyaW5nX2FwcGVhcmVkX2hlcmUp
OgorICAgICAgICAocy5jcm9zc0RvbWFpbi5yZXR1cm4uKToKKyAgICAgICAgKHMuY3Jvc3NEb21h
aW4ucmV0dXJuLnNlbmQpOgorICAgICAgICAocy5jcm9zc0RvbWFpbi5yZXR1cm4uYWJvcnQpOgor
ICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvYWpheC92YXIvbG9jYXRpb24uanM6
IEFkZGVkLgorICAgICAgICAoZGVmaW5lKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVl
cnkvc3JjL2FqYXgvdmFyL25vbmNlLmpzOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxl
cy9qcXVlcnkvc3JjL2FqYXgvdmFyL3JxdWVyeS5qczogQWRkZWQuCisgICAgICAgIChkZWZpbmUp
OgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvYWpheC94aHIuanM6IEFkZGVk
LgorICAgICAgICAoalF1ZXJ5LmFqYXhTZXR0aW5ncy54aHIpOgorICAgICAgICAoalF1ZXJ5LmFq
YXhUcmFuc3BvcnQucmV0dXJuLmNhbGxiYWNrKToKKyAgICAgICAgKGpRdWVyeS5hamF4VHJhbnNw
b3J0LnJldHVybi5lbHNlLnhoci5vbnJlYWR5c3RhdGVjaGFuZ2UpOgorICAgICAgICAoalF1ZXJ5
LmFqYXhUcmFuc3BvcnQucmV0dXJuLnNlbmQpOgorICAgICAgICAoalF1ZXJ5LmFqYXhUcmFuc3Bv
cnQucmV0dXJuLmFib3J0KToKKyAgICAgICAgKGpRdWVyeS5hamF4VHJhbnNwb3J0KToKKyAgICAg
ICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
anF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2F0dHJpYnV0ZXMuanM6IEFkZGVkLgorICAg
ICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvYXR0cmlidXRlcy9hdHRyLmpzOiBBZGRl
ZC4KKyAgICAgICAgKGpRdWVyeS5mbi5leHRlbmQuYXR0cik6CisgICAgICAgIChqUXVlcnkuZm4u
ZXh0ZW5kLnJlbW92ZUF0dHIpOgorICAgICAgICAoalF1ZXJ5LmV4dGVuZC5hdHRyKToKKyAgICAg
ICAgKGpRdWVyeS5leHRlbmQuYXR0ckhvb2tzLnR5cGUuc2V0IGlmKToKKyAgICAgICAgKGpRdWVy
eS5leHRlbmQuYXR0ckhvb2tzLnR5cGUpOgorICAgICAgICAoalF1ZXJ5LmV4dGVuZC5yZW1vdmVB
dHRyKToKKyAgICAgICAgKGJvb2xIb29rLnNldCBpZik6CisgICAgICAgIChib29sSG9vayk6Cisg
ICAgICAgIChhdHRySGFuZGxlLm5hbWUpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVy
eS9zcmMvYXR0cmlidXRlcy9jbGFzc2VzLmpzOiBBZGRlZC4KKyAgICAgICAgKGdldENsYXNzKToK
KyAgICAgICAgKGpRdWVyeS5mbi5leHRlbmQuYWRkQ2xhc3MpOgorICAgICAgICAoalF1ZXJ5LmZu
LmV4dGVuZC5yZW1vdmVDbGFzcyk6CisgICAgICAgIChqUXVlcnkuZm4uZXh0ZW5kLnRvZ2dsZUNs
YXNzKToKKyAgICAgICAgKGpRdWVyeS5mbi5leHRlbmQuaGFzQ2xhc3MpOgorICAgICAgICAqIFNw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkv
bm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvYXR0cmlidXRlcy9wcm9wLmpzOiBBZGRlZC4KKyAgICAg
ICAgKGpRdWVyeS5mbi5leHRlbmQucHJvcCk6CisgICAgICAgIChqUXVlcnkuZm4uZXh0ZW5kLnJl
bW92ZVByb3ApOgorICAgICAgICAoalF1ZXJ5LmV4dGVuZC5wcm9wKToKKyAgICAgICAgKGpRdWVy
eS5leHRlbmQucHJvcEhvb2tzLnRhYkluZGV4LmdldCB2YXIpOgorICAgICAgICAoalF1ZXJ5LmV4
dGVuZC5wcm9wSG9va3MudGFiSW5kZXgpOgorICAgICAgICAoc3VwcG9ydC5vcHRTZWxlY3RlZC5q
UXVlcnkucHJvcEhvb2tzLnNlbGVjdGVkLmdldCB2YXIpOgorICAgICAgICAoc3VwcG9ydC5vcHRT
ZWxlY3RlZC5qUXVlcnkucHJvcEhvb2tzLnNlbGVjdGVkKToKKyAgICAgICAgKHN1cHBvcnQub3B0
U2VsZWN0ZWQualF1ZXJ5LnByb3BIb29rcy5zZWxlY3RlZC5zZXQgdmFyKToKKyAgICAgICAgKiBT
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5
L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2F0dHJpYnV0ZXMvc3VwcG9ydC5qczogQWRkZWQuCisg
ICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9hdHRyaWJ1dGVzL3ZhbC5qczogQWRk
ZWQuCisgICAgICAgIChqUXVlcnkuZm4uZXh0ZW5kLik6CisgICAgICAgIChqUXVlcnkuZm4uZXh0
ZW5kLnZhbCk6CisgICAgICAgIChqUXVlcnkuZXh0ZW5kLnZhbEhvb2tzLnNlbGVjdC5nZXQgdmFy
KToKKyAgICAgICAgKGpRdWVyeS5leHRlbmQudmFsSG9va3Muc2VsZWN0KToKKyAgICAgICAgKGpR
dWVyeS5leHRlbmQudmFsSG9va3Muc2VsZWN0LnNldCB2YXIpOgorICAgICAgICAoalF1ZXJ5LnZh
bEhvb2tzLnRoaXMuc2V0IGlmKToKKyAgICAgICAgKGpRdWVyeS52YWxIb29rcy50aGlzKToKKyAg
ICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2NhbGxiYWNrcy5qczogQWRkZWQuCisg
ICAgICAgIChjcmVhdGVPcHRpb25zKToKKyAgICAgICAgKGZpcmUpOgorICAgICAgICAoc2VsZi5h
ZGQpOgorICAgICAgICAoc2VsZi5yZW1vdmUpOgorICAgICAgICAoc2VsZi5oYXMpOgorICAgICAg
ICAoc2VsZi5lbXB0eSk6CisgICAgICAgIChzZWxmLmRpc2FibGUpOgorICAgICAgICAoc2VsZi5k
aXNhYmxlZCk6CisgICAgICAgIChzZWxmLmxvY2spOgorICAgICAgICAoc2VsZi5sb2NrZWQpOgor
ICAgICAgICAoc2VsZi5maXJlV2l0aCk6CisgICAgICAgIChzZWxmLmZpcmUpOgorICAgICAgICAo
c2VsZi5maXJlZCk6CisgICAgICAgIChqUXVlcnkuQ2FsbGJhY2tzKToKKyAgICAgICAgKiBTcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25v
ZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2NvcmUuanM6IEFkZGVkLgorICAgICAgICAoalF1ZXJ5KToK
KyAgICAgICAgKGZjYW1lbENhc2UpOgorICAgICAgICAoalF1ZXJ5LmZuLmpRdWVyeS5wcm90b3R5
cGUudG9BcnJheSk6CisgICAgICAgIChqUXVlcnkuZm4ualF1ZXJ5LnByb3RvdHlwZS5nZXQgaWYp
OgorICAgICAgICAoalF1ZXJ5LmZuLmpRdWVyeS5wcm90b3R5cGUpOgorICAgICAgICAoalF1ZXJ5
LmZuLmpRdWVyeS5wcm90b3R5cGUucHVzaFN0YWNrKToKKyAgICAgICAgKGpRdWVyeS5mbi5qUXVl
cnkucHJvdG90eXBlLmVhY2gpOgorICAgICAgICAoalF1ZXJ5LmZuLmpRdWVyeS5wcm90b3R5cGUu
bWFwKToKKyAgICAgICAgKGpRdWVyeS5mbi5qUXVlcnkucHJvdG90eXBlLnNsaWNlKToKKyAgICAg
ICAgKGpRdWVyeS5mbi5qUXVlcnkucHJvdG90eXBlLmZpcnN0KToKKyAgICAgICAgKGpRdWVyeS5m
bi5qUXVlcnkucHJvdG90eXBlLmxhc3QpOgorICAgICAgICAoalF1ZXJ5LmZuLmpRdWVyeS5wcm90
b3R5cGUuZXEpOgorICAgICAgICAoalF1ZXJ5LmZuLmpRdWVyeS5wcm90b3R5cGUuZW5kKToKKyAg
ICAgICAgKGpRdWVyeS5leHRlbmQualF1ZXJ5LmZuLmV4dGVuZCk6CisgICAgICAgIChqUXVlcnku
ZXh0ZW5kLmVycm9yKToKKyAgICAgICAgKGpRdWVyeS5leHRlbmQubm9vcCk6CisgICAgICAgIChq
UXVlcnkuZXh0ZW5kLmlzRnVuY3Rpb24pOgorICAgICAgICAoalF1ZXJ5LmV4dGVuZC5pc1dpbmRv
dyk6CisgICAgICAgIChqUXVlcnkuZXh0ZW5kLmlzTnVtZXJpYyk6CisgICAgICAgIChqUXVlcnku
ZXh0ZW5kLmlzUGxhaW5PYmplY3QpOgorICAgICAgICAoalF1ZXJ5LmV4dGVuZC5pc0VtcHR5T2Jq
ZWN0KToKKyAgICAgICAgKGpRdWVyeS5leHRlbmQudHlwZSk6CisgICAgICAgIChqUXVlcnkuZXh0
ZW5kLmdsb2JhbEV2YWwpOgorICAgICAgICAoalF1ZXJ5LmV4dGVuZC5jYW1lbENhc2UpOgorICAg
ICAgICAoalF1ZXJ5LmV4dGVuZC5ub2RlTmFtZSk6CisgICAgICAgIChqUXVlcnkuZXh0ZW5kLmVh
Y2gpOgorICAgICAgICAoalF1ZXJ5LmV4dGVuZC50cmltKToKKyAgICAgICAgKGpRdWVyeS5leHRl
bmQubWFrZUFycmF5KToKKyAgICAgICAgKGpRdWVyeS5leHRlbmQuaW5BcnJheSk6CisgICAgICAg
IChqUXVlcnkuZXh0ZW5kLm1lcmdlKToKKyAgICAgICAgKGpRdWVyeS5leHRlbmQuZ3JlcCk6Cisg
ICAgICAgIChqUXVlcnkuZXh0ZW5kLm1hcCk6CisgICAgICAgIChqUXVlcnkuZXh0ZW5kLnByb3h5
KToKKyAgICAgICAgKGlzQXJyYXlMaWtlKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVl
cnkvc3JjL2NvcmUvRE9NRXZhbC5qczogQWRkZWQuCisgICAgICAgIChET01FdmFsKToKKyAgICAg
ICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
anF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2NvcmUvYWNjZXNzLmpzOiBBZGRlZC4KKyAg
ICAgICAgKGVsc2UuZWxzZS5mbik6CisgICAgICAgIChhY2Nlc3MpOgorICAgICAgICAqIFNwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9k
ZV9tb2R1bGVzL2pxdWVyeS9zcmMvY29yZS9pbml0LmpzOiBBZGRlZC4KKyAgICAgICAgKGluaXQu
alF1ZXJ5LmZuLmluaXQpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvY29y
ZS9wYXJzZUhUTUwuanM6IEFkZGVkLgorICAgICAgICAoalF1ZXJ5LnBhcnNlSFRNTCk6CisgICAg
ICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9jb3JlL3JlYWR5LW5vLWRlZmVycmVkLmpz
OiBBZGRlZC4KKyAgICAgICAgKHdoZW5SZWFkeSk6CisgICAgICAgIChleGVjdXRlUmVhZHkpOgor
ICAgICAgICAoalF1ZXJ5LmZuLnJlYWR5KToKKyAgICAgICAgKGpRdWVyeS5leHRlbmQuaG9sZFJl
YWR5KToKKyAgICAgICAgKGpRdWVyeS5leHRlbmQud2hlblJlYWR5KToKKyAgICAgICAgKGpRdWVy
eS5leHRlbmQucmVhZHkpOgorICAgICAgICAoY29tcGxldGVkKToKKyAgICAgICAgKGRvY3VtZW50
LnJlYWR5U3RhdGUuc3RyaW5nX2FwcGVhcmVkX2hlcmUpOgorICAgICAgICAqIFNwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1
bGVzL2pxdWVyeS9zcmMvY29yZS9yZWFkeS5qczogQWRkZWQuCisgICAgICAgIChqUXVlcnkuZm4u
cmVhZHkpOgorICAgICAgICAoalF1ZXJ5LmV4dGVuZC5ob2xkUmVhZHkpOgorICAgICAgICAoalF1
ZXJ5LmV4dGVuZC5yZWFkeSk6CisgICAgICAgIChjb21wbGV0ZWQpOgorICAgICAgICAoZG9jdW1l
bnQucmVhZHlTdGF0ZS5zdHJpbmdfYXBwZWFyZWRfaGVyZSk6CisgICAgICAgICogU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21v
ZHVsZXMvanF1ZXJ5L3NyYy9jb3JlL3JlYWR5RXhjZXB0aW9uLmpzOiBBZGRlZC4KKyAgICAgICAg
KGpRdWVyeS5yZWFkeUV4Y2VwdGlvbik6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5
L3NyYy9jb3JlL3N0cmlwQW5kQ29sbGFwc2UuanM6IEFkZGVkLgorICAgICAgICAoc3RyaXBBbmRD
b2xsYXBzZSk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9jb3JlL3N1cHBv
cnQuanM6IEFkZGVkLgorICAgICAgICAoc3VwcG9ydC5jcmVhdGVIVE1MRG9jdW1lbnQpOgorICAg
ICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvY29yZS92YXIvcnNpbmdsZVRhZy5qczog
QWRkZWQuCisgICAgICAgIChkZWZpbmUpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVy
eS9zcmMvY3NzLmpzOiBBZGRlZC4KKyAgICAgICAgKHZlbmRvclByb3BOYW1lKToKKyAgICAgICAg
KHNldFBvc2l0aXZlTnVtYmVyKToKKyAgICAgICAgKGF1Z21lbnRXaWR0aE9ySGVpZ2h0KToKKyAg
ICAgICAgKGdldFdpZHRoT3JIZWlnaHQpOgorICAgICAgICAoalF1ZXJ5LmV4dGVuZC5jc3NIb29r
cy5vcGFjaXR5LmdldCBpZik6CisgICAgICAgIChqUXVlcnkuZXh0ZW5kLmNzc0hvb2tzLm9wYWNp
dHkpOgorICAgICAgICAoalF1ZXJ5LmV4dGVuZC5zdHlsZSk6CisgICAgICAgIChqUXVlcnkuZXh0
ZW5kLmNzcyk6CisgICAgICAgIChqUXVlcnkuY3NzSG9va3MubmFtZS5nZXQgaWYpOgorICAgICAg
ICAoalF1ZXJ5LmNzc0hvb2tzLm5hbWUpOgorICAgICAgICAoalF1ZXJ5LmNzc0hvb2tzLm5hbWUu
c2V0IHZhcik6CisgICAgICAgIChqUXVlcnkuY3NzSG9va3MucHJlZml4LnN1ZmZpeC5leHBhbmQp
OgorICAgICAgICAocm1hcmdpbi50ZXN0KToKKyAgICAgICAgKGpRdWVyeS5mbi5leHRlbmQuY3Nz
KToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2Nzcy9hZGRHZXRIb29rSWYu
anM6IEFkZGVkLgorICAgICAgICAoZGVmaW5lLnJldHVybi5nZXQgaWYpOgorICAgICAgICAoZGVm
aW5lLnJldHVybik6CisgICAgICAgIChkZWZpbmUuYWRkR2V0SG9va0lmKToKKyAgICAgICAgKGRl
ZmluZSk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9jc3MvYWRqdXN0Q1NT
LmpzOiBBZGRlZC4KKyAgICAgICAgKGFkanVzdENTUyk6CisgICAgICAgICogU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVs
ZXMvanF1ZXJ5L3NyYy9jc3MvY3VyQ1NTLmpzOiBBZGRlZC4KKyAgICAgICAgKGN1ckNTUyk6Cisg
ICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9jc3MvaGlkZGVuVmlzaWJsZVNlbGVj
dG9ycy5qczogQWRkZWQuCisgICAgICAgIChqUXVlcnkuZXhwci5wc2V1ZG9zLmhpZGRlbik6Cisg
ICAgICAgIChqUXVlcnkuZXhwci5wc2V1ZG9zLnZpc2libGUpOgorICAgICAgICAqIFNwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9t
b2R1bGVzL2pxdWVyeS9zcmMvY3NzL3Nob3dIaWRlLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3dI
aWRlKToKKyAgICAgICAgKGpRdWVyeS5mbi5leHRlbmQuc2hvdyk6CisgICAgICAgIChqUXVlcnku
Zm4uZXh0ZW5kLmhpZGUpOgorICAgICAgICAoalF1ZXJ5LmZuLmV4dGVuZC50b2dnbGUpOgorICAg
ICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvY3NzL3N1cHBvcnQuanM6IEFkZGVkLgor
ICAgICAgICAoY29tcHV0ZVN0eWxlVGVzdHMpOgorICAgICAgICAocGl4ZWxQb3NpdGlvbik6Cisg
ICAgICAgIChib3hTaXppbmdSZWxpYWJsZSk6CisgICAgICAgIChwaXhlbE1hcmdpblJpZ2h0KToK
KyAgICAgICAgKHJlbGlhYmxlTWFyZ2luTGVmdCk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMv
anF1ZXJ5L3NyYy9jc3MvdmFyL2Nzc0V4cGFuZC5qczogQWRkZWQuCisgICAgICAgIChkZWZpbmUp
OgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvY3NzL3Zhci9nZXRTdHlsZXMu
anM6IEFkZGVkLgorICAgICAgICAoZGVmaW5lKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9q
cXVlcnkvc3JjL2Nzcy92YXIvaXNIaWRkZW5XaXRoaW5UcmVlLmpzOiBBZGRlZC4KKyAgICAgICAg
KHJldHVybik6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9jc3MvdmFyL3Jt
YXJnaW4uanM6IEFkZGVkLgorICAgICAgICAoZGVmaW5lKToKKyAgICAgICAgKiBTcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9k
dWxlcy9qcXVlcnkvc3JjL2Nzcy92YXIvcm51bW5vbnB4LmpzOiBBZGRlZC4KKyAgICAgICAgKiBT
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5
L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2Nzcy92YXIvc3dhcC5qczogQWRkZWQuCisgICAgICAg
IChkZWZpbmUpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvZGF0YS5qczog
QWRkZWQuCisgICAgICAgIChnZXREYXRhKToKKyAgICAgICAgKGRhdGFBdHRyKToKKyAgICAgICAg
KGpRdWVyeS5leHRlbmQuaGFzRGF0YSk6CisgICAgICAgIChqUXVlcnkuZXh0ZW5kLmRhdGEpOgor
ICAgICAgICAoalF1ZXJ5LmV4dGVuZC5yZW1vdmVEYXRhKToKKyAgICAgICAgKGpRdWVyeS5leHRl
bmQuX2RhdGEpOgorICAgICAgICAoalF1ZXJ5LmV4dGVuZC5fcmVtb3ZlRGF0YSk6CisgICAgICAg
IChqUXVlcnkuZm4uZXh0ZW5kLik6CisgICAgICAgIChqUXVlcnkuZm4uZXh0ZW5kLmRhdGEpOgor
ICAgICAgICAoalF1ZXJ5LmZuLmV4dGVuZC5yZW1vdmVEYXRhKToKKyAgICAgICAgKiBTcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVf
bW9kdWxlcy9qcXVlcnkvc3JjL2RhdGEvRGF0YS5qczogQWRkZWQuCisgICAgICAgIChEYXRhKToK
KyAgICAgICAgKERhdGEucHJvdG90eXBlLmNhY2hlKToKKyAgICAgICAgKERhdGEucHJvdG90eXBl
LnNldCB2YXIpOgorICAgICAgICAoRGF0YS5wcm90b3R5cGUpOgorICAgICAgICAoRGF0YS5wcm90
b3R5cGUuYWNjZXNzKToKKyAgICAgICAgKERhdGEucHJvdG90eXBlLnJlbW92ZSk6CisgICAgICAg
IChEYXRhLnByb3RvdHlwZS5oYXNEYXRhKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVl
cnkvc3JjL2RhdGEvdmFyL2FjY2VwdERhdGEuanM6IEFkZGVkLgorICAgICAgICAoZGVmaW5lKToK
KyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2RhdGEvdmFyL2RhdGFQcml2Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2RhdGEvdmFyL2Rh
dGFVc2VyLmpzOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2Rl
ZmVycmVkLmpzOiBBZGRlZC4KKyAgICAgICAgKElkZW50aXR5KToKKyAgICAgICAgKFRocm93ZXIp
OgorICAgICAgICAoYWRvcHRWYWx1ZSk6CisgICAgICAgIChqUXVlcnkuZXh0ZW5kLnByb21pc2Uu
c3RhdGUpOgorICAgICAgICAoalF1ZXJ5LmV4dGVuZC5wcm9taXNlLmFsd2F5cyk6CisgICAgICAg
IChqUXVlcnkuZXh0ZW5kLnByb21pc2Uuc3RyaW5nX2FwcGVhcmVkX2hlcmUpOgorICAgICAgICAo
alF1ZXJ5LmV4dGVuZC5wcm9taXNlLik6CisgICAgICAgIChqUXVlcnkuZXh0ZW5kLnByb21pc2Uu
cGlwZSk6CisgICAgICAgIChqUXVlcnkuZXh0ZW5kLnByb21pc2UubWlnaHRUaHJvdyk6CisgICAg
ICAgIChqUXVlcnkuZXh0ZW5kLnByb21pc2UucHJvY2Vzcy5zcGVjaWFsLm1pZ2h0VGhyb3cpOgor
ICAgICAgICAoalF1ZXJ5LmV4dGVuZC5wcm9taXNlLnJlc29sdmUpOgorICAgICAgICAoalF1ZXJ5
LmV4dGVuZC5wcm9taXNlLnRoZW4pOgorICAgICAgICAoalF1ZXJ5LmV4dGVuZC5wcm9taXNlLnBy
b21pc2UpOgorICAgICAgICAoalF1ZXJ5LmV4dGVuZC4pOgorICAgICAgICAoalF1ZXJ5LmV4dGVu
ZC5EZWZlcnJlZCk6CisgICAgICAgIChqUXVlcnkuZXh0ZW5kLnVwZGF0ZUZ1bmMpOgorICAgICAg
ICAoalF1ZXJ5LmV4dGVuZC53aGVuKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkv
c3JjL2RlZmVycmVkL2V4Y2VwdGlvbkhvb2suanM6IEFkZGVkLgorICAgICAgICAoalF1ZXJ5LkRl
ZmVycmVkLmV4Y2VwdGlvbkhvb2spOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9z
cmMvZGVwcmVjYXRlZC5qczogQWRkZWQuCisgICAgICAgIChqUXVlcnkuZm4uZXh0ZW5kLmJpbmQp
OgorICAgICAgICAoalF1ZXJ5LmZuLmV4dGVuZC51bmJpbmQpOgorICAgICAgICAoalF1ZXJ5LmZu
LmV4dGVuZC5kZWxlZ2F0ZSk6CisgICAgICAgIChqUXVlcnkuZm4uZXh0ZW5kLnVuZGVsZWdhdGUp
OgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvZGltZW5zaW9ucy5qczogQWRk
ZWQuCisgICAgICAgIChqUXVlcnkuZm4uZnVuY05hbWUpOgorICAgICAgICAqIFNwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1
bGVzL2pxdWVyeS9zcmMvZWZmZWN0cy5qczogQWRkZWQuCisgICAgICAgIChyYWYpOgorICAgICAg
ICAoY3JlYXRlRnhOb3cpOgorICAgICAgICAoY3JlYXRlVHdlZW4pOgorICAgICAgICAoaG9va3Mu
ZW1wdHkuZmlyZSk6CisgICAgICAgIChkZWZhdWx0UHJlZmlsdGVyKToKKyAgICAgICAgKHByb3BG
aWx0ZXIpOgorICAgICAgICAodGljayk6CisgICAgICAgIChhbmltYXRpb24uZGVmZXJyZWQucHJv
bWlzZSk6CisgICAgICAgIChBbmltYXRpb24pOgorICAgICAgICAodHdlZW5lcnMuc3RyaW5nX2Fw
cGVhcmVkX2hlcmUpOgorICAgICAgICAodHdlZW5lcik6CisgICAgICAgIChwcmVmaWx0ZXIpOgor
ICAgICAgICAob3B0LmNvbXBsZXRlKToKKyAgICAgICAgKGpRdWVyeS5zcGVlZCk6CisgICAgICAg
IChqUXVlcnkuZm4uZXh0ZW5kLmZhZGVUbyk6CisgICAgICAgIChqUXVlcnkuZm4uZXh0ZW5kLmRv
QW5pbWF0aW9uKToKKyAgICAgICAgKGpRdWVyeS5mbi5leHRlbmQuYW5pbWF0ZSk6CisgICAgICAg
IChqUXVlcnkuZm4uZXh0ZW5kLnN0b3BRdWV1ZSk6CisgICAgICAgIChqUXVlcnkuZm4uZXh0ZW5k
LnN0b3ApOgorICAgICAgICAoalF1ZXJ5LmZuLmV4dGVuZC5maW5pc2gpOgorICAgICAgICAoalF1
ZXJ5LmZuLm5hbWUpOgorICAgICAgICAoalF1ZXJ5LmZ4LnRpY2spOgorICAgICAgICAoalF1ZXJ5
LmZ4LnRpbWVyKToKKyAgICAgICAgKGpRdWVyeS5meC5zdGFydCk6CisgICAgICAgIChqUXVlcnku
Znguc3RvcCk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9lZmZlY3RzL1R3
ZWVuLmpzOiBBZGRlZC4KKyAgICAgICAgKFR3ZWVuKToKKyAgICAgICAgKFR3ZWVuLnByb3RvdHlw
ZS5pbml0KToKKyAgICAgICAgKFR3ZWVuLnByb3RvdHlwZS5jdXIpOgorICAgICAgICAoVHdlZW4u
cHJvdG90eXBlLnJ1bik6CisgICAgICAgIChUd2Vlbi5wcm9wSG9va3MuX2RlZmF1bHQuZ2V0IHZh
cik6CisgICAgICAgIChUd2Vlbi5wcm9wSG9va3MuX2RlZmF1bHQpOgorICAgICAgICAoVHdlZW4u
cHJvcEhvb2tzLl9kZWZhdWx0LnNldCBpZik6CisgICAgICAgIChUd2Vlbi5wcm9wSG9va3Muc2Ny
b2xsVG9wLlR3ZWVuLnByb3BIb29rcy5zY3JvbGxMZWZ0LnNldCBpZik6CisgICAgICAgIChUd2Vl
bi5wcm9wSG9va3Muc2Nyb2xsVG9wLlR3ZWVuLnByb3BIb29rcy5zY3JvbGxMZWZ0KToKKyAgICAg
ICAgKGpRdWVyeS5lYXNpbmcubGluZWFyKToKKyAgICAgICAgKGpRdWVyeS5lYXNpbmcuc3dpbmcp
OgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvZWZmZWN0cy9hbmltYXRlZFNl
bGVjdG9yLmpzOiBBZGRlZC4KKyAgICAgICAgKGpRdWVyeS5leHByLnBzZXVkb3MuYW5pbWF0ZWQp
OgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvZXZlbnQuanM6IEFkZGVkLgor
ICAgICAgICAocmV0dXJuRmFsc2UpOgorICAgICAgICAoc2FmZUFjdGl2ZUVsZW1lbnQpOgorICAg
ICAgICAoZm4pOgorICAgICAgICAob24pOgorICAgICAgICAoalF1ZXJ5LmV2ZW50LmV2ZW50SGFu
ZGxlLmVsZW1EYXRhLmhhbmRsZSk6CisgICAgICAgIChqUXVlcnkuZXZlbnQuYWRkKToKKyAgICAg
ICAgKGpRdWVyeS5ldmVudC5yZW1vdmUpOgorICAgICAgICAoalF1ZXJ5LmV2ZW50LmRpc3BhdGNo
KToKKyAgICAgICAgKGpRdWVyeS5ldmVudC5oYW5kbGVycyk6CisgICAgICAgIChqUXVlcnkuZXZl
bnQuKToKKyAgICAgICAgKGpRdWVyeS5ldmVudC5hZGRQcm9wKToKKyAgICAgICAgKGpRdWVyeS5l
dmVudC5zZXQgZ2V0IGZpeCk6CisgICAgICAgIChqUXVlcnkuZXZlbnQuc3BlY2lhbC5mb2N1cy50
cmlnZ2VyKToKKyAgICAgICAgKGpRdWVyeS5ldmVudC5zcGVjaWFsLmJsdXIudHJpZ2dlcik6Cisg
ICAgICAgIChqUXVlcnkuZXZlbnQuc3BlY2lhbC5jbGljay50cmlnZ2VyKToKKyAgICAgICAgKGpR
dWVyeS5ldmVudC5zcGVjaWFsLmNsaWNrLl9kZWZhdWx0KToKKyAgICAgICAgKGpRdWVyeS5ldmVu
dC5zcGVjaWFsLmJlZm9yZXVubG9hZC5wb3N0RGlzcGF0Y2gpOgorICAgICAgICAoalF1ZXJ5LnJl
bW92ZUV2ZW50KToKKyAgICAgICAgKGpRdWVyeS5FdmVudCk6CisgICAgICAgIChqUXVlcnkuRXZl
bnQucHJvdG90eXBlLnByZXZlbnREZWZhdWx0KToKKyAgICAgICAgKGpRdWVyeS5FdmVudC5wcm90
b3R5cGUuc3RvcFByb3BhZ2F0aW9uKToKKyAgICAgICAgKGpRdWVyeS5FdmVudC5wcm90b3R5cGUu
c3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKToKKyAgICAgICAgKGpRdWVyeS5lYWNoKToKKyAgICAg
ICAgKGpRdWVyeS5ldmVudC5zcGVjaWFsLm9yaWcuaGFuZGxlKToKKyAgICAgICAgKGpRdWVyeS5m
bi5leHRlbmQub24pOgorICAgICAgICAoalF1ZXJ5LmZuLmV4dGVuZC5vbmUpOgorICAgICAgICAo
alF1ZXJ5LmZuLmV4dGVuZC5vZmYpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9z
cmMvZXZlbnQvYWpheC5qczogQWRkZWQuCisgICAgICAgIChqUXVlcnkuZm4udHlwZSk6CisgICAg
ICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9ldmVudC9hbGlhcy5qczogQWRkZWQuCisg
ICAgICAgIChqUXVlcnkuZm4ubmFtZSk6CisgICAgICAgIChqUXVlcnkuZm4uZXh0ZW5kLmhvdmVy
KToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2V2ZW50L2ZvY3VzaW4uanM6
IEFkZGVkLgorICAgICAgICAoc3VwcG9ydC5mb2N1c2luLmhhbmRsZXIpOgorICAgICAgICAoc3Vw
cG9ydC5mb2N1c2luLmpRdWVyeS5ldmVudC5zcGVjaWFsLmZpeC5zZXR1cCk6CisgICAgICAgIChz
dXBwb3J0LmZvY3VzaW4ualF1ZXJ5LmV2ZW50LnNwZWNpYWwuZml4LnRlYXJkb3duKToKKyAgICAg
ICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
anF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2V2ZW50L3N1cHBvcnQuanM6IEFkZGVkLgor
ICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvZXZlbnQvdHJpZ2dlci5qczogQWRk
ZWQuCisgICAgICAgICh0cmlnZ2VyKToKKyAgICAgICAgKHNpbXVsYXRlKToKKyAgICAgICAgKGpR
dWVyeS5mbi5leHRlbmQudHJpZ2dlcik6CisgICAgICAgIChqUXVlcnkuZm4uZXh0ZW5kLnRyaWdn
ZXJIYW5kbGVyKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2V4cG9ydHMv
YW1kLmpzOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2V4cG9y
dHMvZ2xvYmFsLmpzOiBBZGRlZC4KKyAgICAgICAgKGpRdWVyeS5ub0NvbmZsaWN0KToKKyAgICAg
ICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
anF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2pxdWVyeS5qczogQWRkZWQuCisgICAgICAg
ICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2px
dWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9tYW5pcHVsYXRpb24uanM6IEFkZGVkLgorICAg
ICAgICAobWFuaXB1bGF0aW9uVGFyZ2V0KToKKyAgICAgICAgKGRpc2FibGVTY3JpcHQpOgorICAg
ICAgICAocmVzdG9yZVNjcmlwdCk6CisgICAgICAgIChjbG9uZUNvcHlFdmVudCk6CisgICAgICAg
IChmaXhJbnB1dCk6CisgICAgICAgIChkb21NYW5pcCk6CisgICAgICAgIChyZW1vdmUpOgorICAg
ICAgICAoalF1ZXJ5LmV4dGVuZC5odG1sUHJlZmlsdGVyKToKKyAgICAgICAgKGpRdWVyeS5leHRl
bmQuY2xvbmUpOgorICAgICAgICAoalF1ZXJ5LmV4dGVuZC5jbGVhbkRhdGEpOgorICAgICAgICAo
alF1ZXJ5LmZuLmV4dGVuZC5kZXRhY2gpOgorICAgICAgICAoalF1ZXJ5LmZuLmV4dGVuZC5yZW1v
dmUpOgorICAgICAgICAoalF1ZXJ5LmZuLmV4dGVuZC4pOgorICAgICAgICAoalF1ZXJ5LmZuLmV4
dGVuZC50ZXh0KToKKyAgICAgICAgKGpRdWVyeS5mbi5leHRlbmQuYXBwZW5kKToKKyAgICAgICAg
KGpRdWVyeS5mbi5leHRlbmQucHJlcGVuZCk6CisgICAgICAgIChqUXVlcnkuZm4uZXh0ZW5kLmJl
Zm9yZSk6CisgICAgICAgIChqUXVlcnkuZm4uZXh0ZW5kLmFmdGVyKToKKyAgICAgICAgKGpRdWVy
eS5mbi5leHRlbmQuZW1wdHkpOgorICAgICAgICAoalF1ZXJ5LmZuLmV4dGVuZC5jbG9uZSk6Cisg
ICAgICAgIChqUXVlcnkuZm4uZXh0ZW5kLmh0bWwpOgorICAgICAgICAoalF1ZXJ5LmZuLmV4dGVu
ZC5yZXBsYWNlV2l0aCk6CisgICAgICAgIChqUXVlcnkuZm4ubmFtZSk6CisgICAgICAgICogU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9u
b2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9tYW5pcHVsYXRpb24vX2V2YWxVcmwuanM6IEFkZGVkLgor
ICAgICAgICAoalF1ZXJ5Ll9ldmFsVXJsKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVl
cnkvc3JjL21hbmlwdWxhdGlvbi9idWlsZEZyYWdtZW50LmpzOiBBZGRlZC4KKyAgICAgICAgKGJ1
aWxkRnJhZ21lbnQpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvbWFuaXB1
bGF0aW9uL2dldEFsbC5qczogQWRkZWQuCisgICAgICAgIChnZXRBbGwpOgorICAgICAgICAqIFNw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkv
bm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvbWFuaXB1bGF0aW9uL3NldEdsb2JhbEV2YWwuanM6IEFk
ZGVkLgorICAgICAgICAoc2V0R2xvYmFsRXZhbCk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMv
anF1ZXJ5L3NyYy9tYW5pcHVsYXRpb24vc3VwcG9ydC5qczogQWRkZWQuCisgICAgICAgICogU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9u
b2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9tYW5pcHVsYXRpb24vdmFyL3JjaGVja2FibGVUeXBlLmpz
OiBBZGRlZC4KKyAgICAgICAgKGRlZmluZSk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1
ZXJ5L3NyYy9tYW5pcHVsYXRpb24vdmFyL3JzY3JpcHRUeXBlLmpzOiBBZGRlZC4KKyAgICAgICAg
KGRlZmluZSk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9tYW5pcHVsYXRp
b24vdmFyL3J0YWdOYW1lLmpzOiBBZGRlZC4KKyAgICAgICAgKGRlZmluZSk6CisgICAgICAgICog
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVy
eS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9tYW5pcHVsYXRpb24vd3JhcE1hcC5qczogQWRkZWQu
CisgICAgICAgIChkZWZpbmUpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMv
b2Zmc2V0LmpzOiBBZGRlZC4KKyAgICAgICAgKGdldFdpbmRvdyk6CisgICAgICAgIChqUXVlcnku
b2Zmc2V0LnNldE9mZnNldCk6CisgICAgICAgIChqUXVlcnkuZm4uZXh0ZW5kLm9mZnNldCk6Cisg
ICAgICAgIChqUXVlcnkuZm4uZXh0ZW5kLnBvc2l0aW9uKToKKyAgICAgICAgKGpRdWVyeS5mbi5l
eHRlbmQub2Zmc2V0UGFyZW50KToKKyAgICAgICAgKGpRdWVyeS5mbi5tZXRob2QpOgorICAgICAg
ICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9q
cXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvcXVldWUuanM6IEFkZGVkLgorICAgICAgICAo
alF1ZXJ5LmV4dGVuZC5xdWV1ZSk6CisgICAgICAgIChqUXVlcnkuZXh0ZW5kLm5leHQpOgorICAg
ICAgICAoalF1ZXJ5LmV4dGVuZC5kZXF1ZXVlKToKKyAgICAgICAgKGpRdWVyeS5leHRlbmQuKToK
KyAgICAgICAgKGpRdWVyeS5leHRlbmQuX3F1ZXVlSG9va3MpOgorICAgICAgICAoalF1ZXJ5LmZu
LmV4dGVuZC5xdWV1ZSk6CisgICAgICAgIChqUXVlcnkuZm4uZXh0ZW5kLmRlcXVldWUpOgorICAg
ICAgICAoalF1ZXJ5LmZuLmV4dGVuZC5jbGVhclF1ZXVlKToKKyAgICAgICAgKGpRdWVyeS5mbi5l
eHRlbmQucmVzb2x2ZSk6CisgICAgICAgIChqUXVlcnkuZm4uZXh0ZW5kLnByb21pc2UpOgorICAg
ICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvcXVldWUvZGVsYXkuanM6IEFkZGVkLgor
ICAgICAgICAoalF1ZXJ5LmZuLmRlbGF5KToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVl
cnkvc3JjL3NlbGVjdG9yLW5hdGl2ZS5qczogQWRkZWQuCisgICAgICAgIChmY3NzZXNjYXBlKToK
KyAgICAgICAgKHNvcnRPcmRlcik6CisgICAgICAgICh1bmlxdWVTb3J0KToKKyAgICAgICAgKGVz
Y2FwZSk6CisgICAgICAgIChqUXVlcnkuZXh0ZW5kLmZpbmQpOgorICAgICAgICAoalF1ZXJ5LmV4
dGVuZC50ZXh0KToKKyAgICAgICAgKGpRdWVyeS5leHRlbmQuY29udGFpbnMpOgorICAgICAgICAo
alF1ZXJ5LmV4dGVuZC5pc1hNTERvYyk6CisgICAgICAgIChtYXRjaGVzKToKKyAgICAgICAgKG1h
dGNoZXNTZWxlY3Rvcik6CisgICAgICAgIChhdHRyKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxl
cy9qcXVlcnkvc3JjL3NlbGVjdG9yLXNpenpsZS5qczogQWRkZWQuCisgICAgICAgICogU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2Rl
X21vZHVsZXMvanF1ZXJ5L3NyYy9zZWxlY3Rvci5qczogQWRkZWQuCisgICAgICAgICogU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2Rl
X21vZHVsZXMvanF1ZXJ5L3NyYy9zZXJpYWxpemUuanM6IEFkZGVkLgorICAgICAgICAoYnVpbGRQ
YXJhbXMpOgorICAgICAgICAoYWRkKToKKyAgICAgICAgKGpRdWVyeS5wYXJhbSk6CisgICAgICAg
IChqUXVlcnkuZm4uZXh0ZW5kLnNlcmlhbGl6ZSk6CisgICAgICAgIChqUXVlcnkuZm4uZXh0ZW5k
Lik6CisgICAgICAgIChqUXVlcnkuZm4uZXh0ZW5kLnNlcmlhbGl6ZUFycmF5KToKKyAgICAgICAg
KiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1
ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL3RyYXZlcnNpbmcuanM6IEFkZGVkLgorICAgICAg
ICAoalF1ZXJ5LmZuLmV4dGVuZC5oYXMpOgorICAgICAgICAoalF1ZXJ5LmZuLmV4dGVuZC5jbG9z
ZXN0KToKKyAgICAgICAgKGpRdWVyeS5mbi5leHRlbmQuaW5kZXgpOgorICAgICAgICAoalF1ZXJ5
LmZuLmV4dGVuZC5hZGQpOgorICAgICAgICAoalF1ZXJ5LmZuLmV4dGVuZC5hZGRCYWNrKToKKyAg
ICAgICAgKGpRdWVyeS5lYWNoLnBhcmVudCk6CisgICAgICAgIChqUXVlcnkuZWFjaC5wYXJlbnRz
KToKKyAgICAgICAgKGpRdWVyeS5lYWNoLnBhcmVudHNVbnRpbCk6CisgICAgICAgIChqUXVlcnku
ZWFjaC5uZXh0KToKKyAgICAgICAgKGpRdWVyeS5lYWNoLnByZXYpOgorICAgICAgICAoalF1ZXJ5
LmVhY2gubmV4dEFsbCk6CisgICAgICAgIChqUXVlcnkuZWFjaC5wcmV2QWxsKToKKyAgICAgICAg
KGpRdWVyeS5lYWNoLm5leHRVbnRpbCk6CisgICAgICAgIChqUXVlcnkuZWFjaC5wcmV2VW50aWwp
OgorICAgICAgICAoalF1ZXJ5LmVhY2guc2libGluZ3MpOgorICAgICAgICAoalF1ZXJ5LmVhY2gu
Y2hpbGRyZW4pOgorICAgICAgICAoalF1ZXJ5LmVhY2guY29udGVudHMpOgorICAgICAgICAoalF1
ZXJ5LmZuLm5hbWUpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvdHJhdmVy
c2luZy9maW5kRmlsdGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKGpRdWVyeS5maWx0ZXIpOgorICAg
ICAgICAoalF1ZXJ5LmZuLmV4dGVuZC5maW5kKToKKyAgICAgICAgKGpRdWVyeS5mbi5leHRlbmQu
ZmlsdGVyKToKKyAgICAgICAgKGpRdWVyeS5mbi5leHRlbmQubm90KToKKyAgICAgICAgKGpRdWVy
eS5mbi5leHRlbmQuaXMpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvdHJh
dmVyc2luZy92YXIvZGlyLmpzOiBBZGRlZC4KKyAgICAgICAgKHJldHVybik6CisgICAgICAgICog
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVy
eS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy90cmF2ZXJzaW5nL3Zhci9ybmVlZHNDb250ZXh0Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL3RyYXZlcnNpbmcv
dmFyL3NpYmxpbmdzLmpzOiBBZGRlZC4KKyAgICAgICAgKGRlZmluZSk6CisgICAgICAgICogU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9u
b2RlX21vZHVsZXMvanF1ZXJ5L3NyYy92YXIvT2JqZWN0RnVuY3Rpb25TdHJpbmcuanM6IEFkZGVk
LgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvdmFyL2Fyci5qczogQWRkZWQu
CisgICAgICAgIChkZWZpbmUpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMv
dmFyL2NsYXNzMnR5cGUuanM6IEFkZGVkLgorICAgICAgICAoZGVmaW5lKToKKyAgICAgICAgKiBT
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5
L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL3Zhci9jb25jYXQuanM6IEFkZGVkLgorICAgICAgICAq
IFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVl
cnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvdmFyL2RvY3VtZW50LmpzOiBBZGRlZC4KKyAgICAg
ICAgKGRlZmluZSk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy92YXIvZG9j
dW1lbnRFbGVtZW50LmpzOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkv
c3JjL3Zhci9mblRvU3RyaW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9q
cXVlcnkvc3JjL3Zhci9nZXRQcm90by5qczogQWRkZWQuCisgICAgICAgIChkZWZpbmUpOgorICAg
ICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvdmFyL2hhc093bi5qczogQWRkZWQuCisg
ICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy92YXIvaW5kZXhPZi5qczogQWRkZWQu
CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy92YXIvcG51bS5qczogQWRkZWQu
CisgICAgICAgIChkZWZpbmUpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMv
dmFyL3B1c2guanM6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMv
dmFyL3Jjc3NOdW0uanM6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9z
cmMvdmFyL3Jub3RodG1sd2hpdGUuanM6IEFkZGVkLgorICAgICAgICAoZGVmaW5lKToKKyAgICAg
ICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
anF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL3Zhci9zbGljZS5qczogQWRkZWQuCisgICAg
ICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy92YXIvc3VwcG9ydC5qczogQWRkZWQuCisg
ICAgICAgIChkZWZpbmUpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvdmFy
L3RvU3RyaW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3Jj
L3dyYXAuanM6IEFkZGVkLgorICAgICAgICAoalF1ZXJ5LmZuLmV4dGVuZC53cmFwQWxsKToKKyAg
ICAgICAgKGpRdWVyeS5mbi5leHRlbmQud3JhcElubmVyKToKKyAgICAgICAgKGpRdWVyeS5mbi5l
eHRlbmQud3JhcCk6CisgICAgICAgIChqUXVlcnkuZm4uZXh0ZW5kLnVud3JhcCk6CisgICAgICAg
ICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2px
dWVyeS9ub2RlX21vZHVsZXMvdG9kb212Yy1hcHAtY3NzL2luZGV4LmNzczogQWRkZWQuCisgICAg
ICAgIChodG1sLCk6CisgICAgICAgIChidXR0b24pOgorICAgICAgICAoYm9keSk6CisgICAgICAg
IChidXR0b24sKToKKyAgICAgICAgKC5oaWRkZW4pOgorICAgICAgICAoI3RvZG9hcHApOgorICAg
ICAgICAoI3RvZG9hcHAgaW5wdXQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIpOgorICAgICAg
ICAoI3RvZG9hcHAgaW5wdXQ6Oi1tb3otcGxhY2Vob2xkZXIpOgorICAgICAgICAoI3RvZG9hcHAg
aW5wdXQ6OmlucHV0LXBsYWNlaG9sZGVyKToKKyAgICAgICAgKCN0b2RvYXBwIGgxKToKKyAgICAg
ICAgKCNuZXctdG9kbywpOgorICAgICAgICAoI25ldy10b2RvKToKKyAgICAgICAgKCNtYWluKToK
KyAgICAgICAgKGxhYmVsW2Zvcj0ndG9nZ2xlLWFsbCddKToKKyAgICAgICAgKCN0b2dnbGUtYWxs
KToKKyAgICAgICAgKCN0b2dnbGUtYWxsOmJlZm9yZSk6CisgICAgICAgICgjdG9nZ2xlLWFsbDpj
aGVja2VkOmJlZm9yZSk6CisgICAgICAgICgjdG9kby1saXN0KToKKyAgICAgICAgKCN0b2RvLWxp
c3QgbGkpOgorICAgICAgICAoI3RvZG8tbGlzdCBsaTpsYXN0LWNoaWxkKToKKyAgICAgICAgKCN0
b2RvLWxpc3QgbGkuZWRpdGluZyk6CisgICAgICAgICgjdG9kby1saXN0IGxpLmVkaXRpbmcgLmVk
aXQpOgorICAgICAgICAoI3RvZG8tbGlzdCBsaS5lZGl0aW5nIC52aWV3KToKKyAgICAgICAgKCN0
b2RvLWxpc3QgbGkgLnRvZ2dsZSk6CisgICAgICAgICgjdG9kby1saXN0IGxpIC50b2dnbGU6YWZ0
ZXIpOgorICAgICAgICAoI3RvZG8tbGlzdCBsaSAudG9nZ2xlOmNoZWNrZWQ6YWZ0ZXIpOgorICAg
ICAgICAoI3RvZG8tbGlzdCBsaSBsYWJlbCk6CisgICAgICAgICgjdG9kby1saXN0IGxpLmNvbXBs
ZXRlZCBsYWJlbCk6CisgICAgICAgICgjdG9kby1saXN0IGxpIC5kZXN0cm95KToKKyAgICAgICAg
KCN0b2RvLWxpc3QgbGkgLmRlc3Ryb3k6aG92ZXIpOgorICAgICAgICAoI3RvZG8tbGlzdCBsaSAu
ZGVzdHJveTphZnRlcik6CisgICAgICAgICgjdG9kby1saXN0IGxpOmhvdmVyIC5kZXN0cm95KToK
KyAgICAgICAgKCN0b2RvLWxpc3QgbGkgLmVkaXQpOgorICAgICAgICAoI3RvZG8tbGlzdCBsaS5l
ZGl0aW5nOmxhc3QtY2hpbGQpOgorICAgICAgICAoI2Zvb3Rlcik6CisgICAgICAgICgjZm9vdGVy
OmJlZm9yZSk6CisgICAgICAgICgjdG9kby1jb3VudCk6CisgICAgICAgICgjdG9kby1jb3VudCBz
dHJvbmcpOgorICAgICAgICAoI2ZpbHRlcnMpOgorICAgICAgICAoI2ZpbHRlcnMgbGkpOgorICAg
ICAgICAoI2ZpbHRlcnMgbGkgYSk6CisgICAgICAgICgjZmlsdGVycyBsaSBhLnNlbGVjdGVkLCk6
CisgICAgICAgICgjZmlsdGVycyBsaSBhLnNlbGVjdGVkKToKKyAgICAgICAgKCNjbGVhci1jb21w
bGV0ZWQsKToKKyAgICAgICAgKCNjbGVhci1jb21wbGV0ZWQ6aG92ZXIpOgorICAgICAgICAoI2lu
Zm8pOgorICAgICAgICAoI2luZm8gcCk6CisgICAgICAgICgjaW5mbyBhKToKKyAgICAgICAgKCNp
bmZvIGE6aG92ZXIpOgorICAgICAgICAoQG1lZGlhIHNjcmVlbiBhbmQgKC13ZWJraXQtbWluLWRl
dmljZS1waXhlbC1yYXRpbzowKSk6CisgICAgICAgICgjdG9nZ2xlLWFsbCwpOgorICAgICAgICAo
QG1lZGlhIChtYXgtd2lkdGg6IDQzMHB4KSk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvdG9k
b212Yy1hcHAtY3NzL3BhY2thZ2UuanNvbjogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVs
ZXMvdG9kb212Yy1hcHAtY3NzL3JlYWRtZS5tZDogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21v
ZHVsZXMvdG9kb212Yy1jb21tb24vYmFzZS5jc3M6IEFkZGVkLgorICAgICAgICAoaHIpOgorICAg
ICAgICAoLmxlYXJuIGEpOgorICAgICAgICAoLmxlYXJuIGE6aG92ZXIpOgorICAgICAgICAoLmxl
YXJuIGgzLCk6CisgICAgICAgICgubGVhcm4gaDMpOgorICAgICAgICAoLmxlYXJuIGg0KToKKyAg
ICAgICAgKC5sZWFybiBoNSk6CisgICAgICAgICgubGVhcm4gdWwpOgorICAgICAgICAoLmxlYXJu
IGxpKToKKyAgICAgICAgKC5sZWFybiBwKToKKyAgICAgICAgKCNpc3N1ZS1jb3VudCk6CisgICAg
ICAgICgucXVvdGUpOgorICAgICAgICAoLnF1b3RlIHApOgorICAgICAgICAoLnF1b3RlIHA6YmVm
b3JlKToKKyAgICAgICAgKC5xdW90ZSBwOmFmdGVyKToKKyAgICAgICAgKC5xdW90ZSBmb290ZXIp
OgorICAgICAgICAoLnF1b3RlIGZvb3RlciBpbWcpOgorICAgICAgICAoLnF1b3RlIGZvb3RlciBh
KToKKyAgICAgICAgKC5zcGVlY2gtYnViYmxlKToKKyAgICAgICAgKC5zcGVlY2gtYnViYmxlOmFm
dGVyKToKKyAgICAgICAgKC5sZWFybi1iYXIgPiAubGVhcm4pOgorICAgICAgICAoQG1lZGlhICht
aW4td2lkdGg6IDg5OXB4KSk6CisgICAgICAgICgubGVhcm4tYmFyKToKKyAgICAgICAgKiBTcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25v
ZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1vbi9iYXNlLmpzOiBDb3BpZWQgZnJvbSBQZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2xhYnMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL3JlYWN0L2Jvd2VyX2NvbXBvbmVudHMvdG9kb212Yy1jb21tb24vYmFzZS5qcy4KKyAg
ICAgICAgKGxvY2F0aW9uLmhvc3RuYW1lLnN0cmluZ19hcHBlYXJlZF9oZXJlLmkuci5pLnIpOgor
ICAgICAgICAoZmluZFJvb3QpOgorICAgICAgICAoTGVhcm4pOgorICAgICAgICAoTGVhcm4ucHJv
dG90eXBlLmFwcGVuZCk6CisgICAgICAgICh4aHIub25sb2FkKToKKyAgICAgICAgKExlYXJuLnBy
b3RvdHlwZS5mZXRjaElzc3VlQ291bnQpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL3RvZG9t
dmMtY29tbW9uL3BhY2thZ2UuanNvbjogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMv
dG9kb212Yy1jb21tb24vcmVhZG1lLm1kOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L3BhY2thZ2UuanNv
bjogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9yZWFkbWUubWQ6CisgICAgICAgICogU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3ByZWFjdC8uYmFiZWxyYzog
QWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL3ByZWFjdC8udHJhdmlzLnltbDogQWRkZWQuCisgICAgICAgICogU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3ByZWFjdC9SRUFE
TUUubWQ6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9wcmVhY3QvcGFja2FnZS5qc29uOiBBZGRlZC4KKyAgICAgICAg
KiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcHJl
YWN0L3JvbGx1cC5jb25maWcuanM6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9wcmVhY3Qvc3JjL2FwcC9mb290ZXIu
anM6IEFkZGVkLgorICAgICAgICAoZXhwb3J0LmRlZmF1bHQuVG9kb0Zvb3Rlci5wcm90b3R5cGUu
cmVuZGVyKToKKyAgICAgICAgKGV4cG9ydC5kZWZhdWx0LlRvZG9Gb290ZXIpOgorICAgICAgICAq
IFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9wcmVh
Y3Qvc3JjL2FwcC9pbmRleC5qczogQWRkZWQuCisgICAgICAgIChleHBvcnQuZGVmYXVsdC5BcHAp
OgorICAgICAgICAoZXhwb3J0LmRlZmF1bHQuQXBwLnByb3RvdHlwZS5oYW5kbGVSb3V0ZSk6Cisg
ICAgICAgIChleHBvcnQuZGVmYXVsdC5BcHAucHJvdG90eXBlLnNhdmUpOgorICAgICAgICAoZXhw
b3J0LmRlZmF1bHQuQXBwLnByb3RvdHlwZS5jYW5jZWwpOgorICAgICAgICAoZXhwb3J0LmRlZmF1
bHQuQXBwLnByb3RvdHlwZS5jbGVhckNvbXBsZXRlZCk6CisgICAgICAgIChleHBvcnQuZGVmYXVs
dC5BcHAucHJvdG90eXBlLnJlbmRlcik6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3ByZWFjdC9zcmMvYXBwL2l0ZW0uanM6IEFk
ZGVkLgorICAgICAgICAoZXhwb3J0LmRlZmF1bHQuVG9kb0l0ZW0ucHJvdG90eXBlLmhhbmRsZVN1
Ym1pdCk6CisgICAgICAgIChleHBvcnQuZGVmYXVsdC5Ub2RvSXRlbS5wcm90b3R5cGUuaGFuZGxl
RWRpdCk6CisgICAgICAgIChleHBvcnQuZGVmYXVsdC5Ub2RvSXRlbS5oYW5kbGVLZXlEb3duLmUu
cHJvdG90eXBlLmVsc2UpOgorICAgICAgICAoZXhwb3J0LmRlZmF1bHQuVG9kb0l0ZW0ucHJvdG90
eXBlLmhhbmRsZURlc3Ryb3kpOgorICAgICAgICAoZXhwb3J0LmRlZmF1bHQuVG9kb0l0ZW0ucHJv
dG90eXBlLmNvbXBvbmVudERpZFVwZGF0ZSk6CisgICAgICAgIChleHBvcnQuZGVmYXVsdC5Ub2Rv
SXRlbS5wcm90b3R5cGUucmVuZGVyKToKKyAgICAgICAgKGV4cG9ydC5kZWZhdWx0LlRvZG9JdGVt
KToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvcHJlYWN0L3NyYy9hcHAvbW9kZWwuanM6IEFkZGVkLgorICAgICAgICAoZXhwb3J0
LmRlZmF1bHQuVG9kb01vZGVsKToKKyAgICAgICAgKGV4cG9ydC5kZWZhdWx0LlRvZG9Nb2RlbC5w
cm90b3R5cGUuaW5mb3JtKToKKyAgICAgICAgKGV4cG9ydC5kZWZhdWx0LlRvZG9Nb2RlbC5wcm90
b3R5cGUuYWRkVG9kbyk6CisgICAgICAgIChleHBvcnQuZGVmYXVsdC5Ub2RvTW9kZWwucHJvdG90
eXBlLnRvZ2dsZUFsbCk6CisgICAgICAgIChleHBvcnQuZGVmYXVsdC5Ub2RvTW9kZWwucHJvdG90
eXBlLnRvZ2dsZSk6CisgICAgICAgIChleHBvcnQuZGVmYXVsdC5Ub2RvTW9kZWwucHJvdG90eXBl
LmRlc3Ryb3kpOgorICAgICAgICAoZXhwb3J0LmRlZmF1bHQuVG9kb01vZGVsLnByb3RvdHlwZS5z
YXZlKToKKyAgICAgICAgKGV4cG9ydC5kZWZhdWx0LlRvZG9Nb2RlbC5wcm90b3R5cGUuY2xlYXJD
b21wbGV0ZWQpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9wcmVhY3Qvc3JjL2FwcC91dGlsLmpzOiBBZGRlZC4KKyAgICAgICAg
KGV4cG9ydC51dWlkKToKKyAgICAgICAgKGV4cG9ydC5wbHVyYWxpemUpOgorICAgICAgICAoZXhw
b3J0LnN0b3JlKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvcHJlYWN0L3NyYy9pbmRleC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcHJl
YWN0L3NyYy9pbmRleC5qczogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3ByZWFjdC93ZWJwYWNrLmNvbmZpZy5iYWJl
bC5qczogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L1JFQURNRS5tZDogQWRkZWQuCisgICAgICAg
ICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Jl
YWN0LXJlZHV4L3BhY2thZ2UuanNvbjogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L3B1YmxpYy9p
bmRleC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgvc3JjL2FjdGlvbnMvaW5kZXguanM6
IEFkZGVkLgorICAgICAgICAodGV4dCk6CisgICAgICAgIChleHBvcnQuY29uc3QuY29tcGxldGVB
bGwpOgorICAgICAgICAoZXhwb3J0LmNvbnN0LmNsZWFyQ29tcGxldGVkKToKKyAgICAgICAgKiBT
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qt
cmVkdXgvc3JjL2FjdGlvbnMvaW5kZXguc3BlYy5qczogQWRkZWQuCisgICAgICAgICogU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4
L3NyYy9jb21wb25lbnRzL0Zvb3Rlci5qczogQWRkZWQuCisgICAgICAgIChleHBvcnQuZGVmYXVs
dC5Gb290ZXIucHJvdG90eXBlLnJlbmRlclRvZG9Db3VudCk6CisgICAgICAgIChleHBvcnQuZGVm
YXVsdC5Gb290ZXIucHJvdG90eXBlLnJlbmRlckZpbHRlckxpbmspOgorICAgICAgICAoZXhwb3J0
LmRlZmF1bHQuRm9vdGVyLnByb3RvdHlwZS5yZW5kZXJDbGVhckJ1dHRvbik6CisgICAgICAgIChl
eHBvcnQuZGVmYXVsdC5Gb290ZXIucHJvdG90eXBlLnJlbmRlcik6CisgICAgICAgIChleHBvcnQu
ZGVmYXVsdC5Gb290ZXIpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9zcmMvY29tcG9uZW50cy9Gb290ZXIu
c3BlYy5qczogQWRkZWQuCisgICAgICAgIChmaWx0ZXJzLm91dHB1dC5wcm9wcy5jaGlsZHJlbi5l
eHBlY3QuZmlsdGVycy50eXBlLnRvQmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUuZXhwZWN0LmZpbHRl
cnMucHJvcHMuY2xhc3NOYW1lLnRvQmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUuZXhwZWN0LmZpbHRl
cnMucHJvcHMuY2hpbGRyZW4ubGVuZ3RoLnRvQmUuMy5maWx0ZXJzLnByb3BzLmNoaWxkcmVuLmZv
ckVhY2guY2hlY2tGaWx0ZXIpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9zcmMvY29tcG9uZW50cy9IZWFk
ZXIuanM6IEFkZGVkLgorICAgICAgICAoZnJvbS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5pbXBvcnQu
VG9kb1RleHRJbnB1dC5mcm9tLnN0cmluZ19hcHBlYXJlZF9oZXJlLmV4cG9ydC5kZWZhdWx0Lkhl
YWRlci5wcm90b3R5cGUucmVuZGVyKToKKyAgICAgICAgKGZyb20uc3RyaW5nX2FwcGVhcmVkX2hl
cmUuaW1wb3J0LlRvZG9UZXh0SW5wdXQuZnJvbS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5leHBvcnQu
ZGVmYXVsdC5IZWFkZXIpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9zcmMvY29tcG9uZW50cy9IZWFkZXIu
c3BlYy5qczogQWRkZWQuCisgICAgICAgIChpbXBvcnQuUmVhY3QuZnJvbS5zdHJpbmdfYXBwZWFy
ZWRfaGVyZS5pbXBvcnQuVGVzdFV0aWxzLmZyb20uc3RyaW5nX2FwcGVhcmVkX2hlcmUuaW1wb3J0
LkhlYWRlci5mcm9tLnN0cmluZ19hcHBlYXJlZF9oZXJlLmltcG9ydC5Ub2RvVGV4dElucHV0LmZy
b20uc3RyaW5nX2FwcGVhcmVkX2hlcmUuY29uc3Quc2V0dXApOgorICAgICAgICAqIFNwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9z
cmMvY29tcG9uZW50cy9NYWluU2VjdGlvbi5qczogQWRkZWQuCisgICAgICAgIChleHBvcnQuZGVm
YXVsdC5NYWluU2VjdGlvbi5wcm90b3R5cGUuaGFuZGxlQ2xlYXJDb21wbGV0ZWQpOgorICAgICAg
ICAoZXhwb3J0LmRlZmF1bHQuTWFpblNlY3Rpb24ucHJvdG90eXBlLnJlbmRlclRvZ2dsZUFsbCk6
CisgICAgICAgIChleHBvcnQuZGVmYXVsdC5NYWluU2VjdGlvbi5wcm90b3R5cGUucmVuZGVyRm9v
dGVyKToKKyAgICAgICAgKGV4cG9ydC5kZWZhdWx0Lk1haW5TZWN0aW9uLnByb3RvdHlwZS5yZW5k
ZXIpOgorICAgICAgICAoZXhwb3J0LmRlZmF1bHQuTWFpblNlY3Rpb24pOgorICAgICAgICAqIFNw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1y
ZWR1eC9zcmMvY29tcG9uZW50cy9NYWluU2VjdGlvbi5zcGVjLmpzOiBBZGRlZC4KKyAgICAgICAg
KGxpc3Qub3V0cHV0LnByb3BzLmNoaWxkcmVuLmV4cGVjdC5saXN0LnR5cGUudG9CZS5zdHJpbmdf
YXBwZWFyZWRfaGVyZS5leHBlY3QubGlzdC5wcm9wcy5jaGlsZHJlbi5sZW5ndGgudG9CZS4yLmxp
c3QucHJvcHMuY2hpbGRyZW4uZm9yRWFjaCk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L3NyYy9jb21wb25l
bnRzL1RvZG9JdGVtLmpzOiBBZGRlZC4KKyAgICAgICAgKGZyb20uc3RyaW5nX2FwcGVhcmVkX2hl
cmUuaW1wb3J0LmNsYXNzbmFtZXMuZnJvbS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5pbXBvcnQuVG9k
b1RleHRJbnB1dC5mcm9tLnN0cmluZ19hcHBlYXJlZF9oZXJlLmV4cG9ydC5kZWZhdWx0LlRvZG9J
dGVtLnByb3RvdHlwZS5oYW5kbGVEb3VibGVDbGljayk6CisgICAgICAgIChmcm9tLnN0cmluZ19h
cHBlYXJlZF9oZXJlLmltcG9ydC5jbGFzc25hbWVzLmZyb20uc3RyaW5nX2FwcGVhcmVkX2hlcmUu
aW1wb3J0LlRvZG9UZXh0SW5wdXQuZnJvbS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5leHBvcnQuZGVm
YXVsdC5Ub2RvSXRlbS5wcm90b3R5cGUuaGFuZGxlU2F2ZSk6CisgICAgICAgIChmcm9tLnN0cmlu
Z19hcHBlYXJlZF9oZXJlLmltcG9ydC5jbGFzc25hbWVzLmZyb20uc3RyaW5nX2FwcGVhcmVkX2hl
cmUuaW1wb3J0LlRvZG9UZXh0SW5wdXQuZnJvbS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5leHBvcnQu
ZGVmYXVsdC5Ub2RvSXRlbS5wcm90b3R5cGUucmVuZGVyKToKKyAgICAgICAgKGZyb20uc3RyaW5n
X2FwcGVhcmVkX2hlcmUuaW1wb3J0LmNsYXNzbmFtZXMuZnJvbS5zdHJpbmdfYXBwZWFyZWRfaGVy
ZS5pbXBvcnQuVG9kb1RleHRJbnB1dC5mcm9tLnN0cmluZ19hcHBlYXJlZF9oZXJlLmV4cG9ydC5k
ZWZhdWx0LlRvZG9JdGVtKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgvc3JjL2NvbXBvbmVudHMvVG9kb0l0
ZW0uc3BlYy5qczogQWRkZWQuCisgICAgICAgIChpbXBvcnQuUmVhY3QuZnJvbS5zdHJpbmdfYXBw
ZWFyZWRfaGVyZS5pbXBvcnQuVGVzdFV0aWxzLmZyb20uc3RyaW5nX2FwcGVhcmVkX2hlcmUuaW1w
b3J0LlRvZG9JdGVtLmZyb20uc3RyaW5nX2FwcGVhcmVkX2hlcmUuaW1wb3J0LlRvZG9UZXh0SW5w
dXQuZnJvbS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5jb25zdC5zZXR1cCk6CisgICAgICAgICogU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJl
ZHV4L3NyYy9jb21wb25lbnRzL1RvZG9UZXh0SW5wdXQuanM6IEFkZGVkLgorICAgICAgICAoZnJv
bS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5pbXBvcnQuY2xhc3NuYW1lcy5mcm9tLnN0cmluZ19hcHBl
YXJlZF9oZXJlLmV4cG9ydC5kZWZhdWx0LlRvZG9UZXh0SW5wdXQuaGFuZGxlU3VibWl0LmUucHJv
dG90eXBlLmNvbnN0LnRleHQuZS50YXJnZXQudmFsdWUudHJpbSk6CisgICAgICAgIChmcm9tLnN0
cmluZ19hcHBlYXJlZF9oZXJlLmltcG9ydC5jbGFzc25hbWVzLmZyb20uc3RyaW5nX2FwcGVhcmVk
X2hlcmUuZXhwb3J0LmRlZmF1bHQuVG9kb1RleHRJbnB1dC5wcm90b3R5cGUucmVuZGVyKToKKyAg
ICAgICAgKGZyb20uc3RyaW5nX2FwcGVhcmVkX2hlcmUuaW1wb3J0LmNsYXNzbmFtZXMuZnJvbS5z
dHJpbmdfYXBwZWFyZWRfaGVyZS5leHBvcnQuZGVmYXVsdC5Ub2RvVGV4dElucHV0KToKKyAgICAg
ICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
cmVhY3QtcmVkdXgvc3JjL2NvbXBvbmVudHMvVG9kb1RleHRJbnB1dC5zcGVjLmpzOiBBZGRlZC4K
KyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvcmVhY3QtcmVkdXgvc3JjL2NvbnN0YW50cy9BY3Rpb25UeXBlcy5qczogQWRkZWQuCisg
ICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL3JlYWN0LXJlZHV4L3NyYy9jb25zdGFudHMvVG9kb0ZpbHRlcnMuanM6IEFkZGVkLgorICAg
ICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9yZWFjdC1yZWR1eC9zcmMvY29udGFpbmVycy9BcHAuanM6IEFkZGVkLgorICAgICAgICAqIFNw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1y
ZWR1eC9zcmMvaW5kZXguanM6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9zcmMvcmVkdWNlcnMv
aW5kZXguanM6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9zcmMvcmVkdWNlcnMvdG9kb3MuanM6
IEFkZGVkLgorICAgICAgICAoZnJvbS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5jb25zdC5pbml0aWFs
U3RhdGUuZXhwb3J0LmRlZmF1bHQudG9kb3MpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9zcmMvcmVkdWNl
cnMvdG9kb3Muc3BlYy5qczogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L3lhcm4ubG9jazogQWRk
ZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL3JlYWN0L2J1aWxkLm1pbi5qczogQWRkZWQuCisgICAgICAgIChhcHAuVXRpbHMu
dXVpZCk6CisgICAgICAgIChhcHAuVXRpbHMucGx1cmFsaXplKToKKyAgICAgICAgKGFwcC5VdGls
cy5leHRlbmQpOgorICAgICAgICAoYXBwLlRvZG9Nb2RlbCk6CisgICAgICAgIChhcHAuVG9kb01v
ZGVsLnByb3RvdHlwZS5zdWJzY3JpYmUpOgorICAgICAgICAoYXBwLlRvZG9Nb2RlbC5wcm90b3R5
cGUuaW5mb3JtKToKKyAgICAgICAgKGFwcC5Ub2RvTW9kZWwucHJvdG90eXBlLmFkZFRvZG8pOgor
ICAgICAgICAoYXBwLlRvZG9Nb2RlbC5wcm90b3R5cGUudG9nZ2xlQWxsKToKKyAgICAgICAgKGFw
cC5Ub2RvTW9kZWwucHJvdG90eXBlLnRvZ2dsZSk6CisgICAgICAgIChhcHAuVG9kb01vZGVsLnBy
b3RvdHlwZS5kZXN0cm95KToKKyAgICAgICAgKGFwcC5Ub2RvTW9kZWwucHJvdG90eXBlLnNhdmUp
OgorICAgICAgICAoYXBwLlRvZG9Nb2RlbC5wcm90b3R5cGUuY2xlYXJDb21wbGV0ZWQpOgorICAg
ICAgICAoVG9kb0Zvb3Rlci5SZWFjdC5jcmVhdGVDbGFzcy5yZW5kZXIpOgorICAgICAgICAoVG9k
b0l0ZW0uUmVhY3QuY3JlYXRlQ2xhc3MuaGFuZGxlU3VibWl0KToKKyAgICAgICAgKFRvZG9JdGVt
LlJlYWN0LmNyZWF0ZUNsYXNzLmhhbmRsZUVkaXQpOgorICAgICAgICAoVG9kb0l0ZW0uUmVhY3Qu
Y3JlYXRlQ2xhc3MuaGFuZGxlS2V5RG93bik6CisgICAgICAgIChUb2RvSXRlbS5SZWFjdC5jcmVh
dGVDbGFzcy5oYW5kbGVDaGFuZ2UpOgorICAgICAgICAoVG9kb0l0ZW0uUmVhY3QuY3JlYXRlQ2xh
c3MuZ2V0SW5pdGlhbFN0YXRlKToKKyAgICAgICAgKFRvZG9JdGVtLlJlYWN0LmNyZWF0ZUNsYXNz
LnNob3VsZENvbXBvbmVudFVwZGF0ZSk6CisgICAgICAgIChUb2RvSXRlbS5SZWFjdC5jcmVhdGVD
bGFzcy5jb21wb25lbnREaWRVcGRhdGUpOgorICAgICAgICAoVG9kb0l0ZW0uUmVhY3QuY3JlYXRl
Q2xhc3MucmVuZGVyKToKKyAgICAgICAgKFRvZG9BcHAuUmVhY3QuY3JlYXRlQ2xhc3MuZ2V0SW5p
dGlhbFN0YXRlKToKKyAgICAgICAgKFRvZG9BcHAuUmVhY3QuY3JlYXRlQ2xhc3MuY29tcG9uZW50
RGlkTW91bnQpOgorICAgICAgICAoVG9kb0FwcC5SZWFjdC5jcmVhdGVDbGFzcy5oYW5kbGVDaGFu
Z2UpOgorICAgICAgICAoVG9kb0FwcC5SZWFjdC5jcmVhdGVDbGFzcy5oYW5kbGVOZXdUb2RvS2V5
RG93bik6CisgICAgICAgIChUb2RvQXBwLlJlYWN0LmNyZWF0ZUNsYXNzLnRvZ2dsZUFsbCk6Cisg
ICAgICAgIChUb2RvQXBwLlJlYWN0LmNyZWF0ZUNsYXNzLnRvZ2dsZSk6CisgICAgICAgIChUb2Rv
QXBwLlJlYWN0LmNyZWF0ZUNsYXNzLmRlc3Ryb3kpOgorICAgICAgICAoVG9kb0FwcC5SZWFjdC5j
cmVhdGVDbGFzcy5lZGl0KToKKyAgICAgICAgKFRvZG9BcHAuUmVhY3QuY3JlYXRlQ2xhc3Muc2F2
ZSk6CisgICAgICAgIChUb2RvQXBwLlJlYWN0LmNyZWF0ZUNsYXNzLmNhbmNlbCk6CisgICAgICAg
IChUb2RvQXBwLlJlYWN0LmNyZWF0ZUNsYXNzLmNsZWFyQ29tcGxldGVkKToKKyAgICAgICAgKFRv
ZG9BcHAuUmVhY3QuY3JlYXRlQ2xhc3MucmVuZGVyKToKKyAgICAgICAgKHJlbmRlcik6CisgICAg
ICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L3JlYWN0L2luZGV4Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9qcy9hcHAuanN4OiBBZGRlZC4K
KyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvcmVhY3QvbGljZW5zZS5tZDogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9j
bGFzc25hbWVzL0NPTlRSSUJVVElORy5tZDogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxl
cy9jbGFzc25hbWVzL0hJU1RPUlkubWQ6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMv
Y2xhc3NuYW1lcy9MSUNFTlNFOiBDb3BpZWQgZnJvbSBQZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2xhYnMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L2Jv
d2VyX2NvbXBvbmVudHMvZGlyZWN0b3IvTElDRU5TRS4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVz
L2NsYXNzbmFtZXMvUkVBRE1FLm1kOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2Ns
YXNzbmFtZXMvYmluZC5qczogQWRkZWQuCisgICAgICAgIChjbGFzc05hbWVzKToKKyAgICAgICAg
KGVsc2UpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvY2xhc3NuYW1lcy9ib3dlci5qc29uOiBB
ZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2NsYXNzbmFtZXMvZGVkdXBlLmpzOiBBZGRl
ZC4KKyAgICAgICAgKF9wYXJzZUFycmF5KToKKyAgICAgICAgKF9wYXJzZU51bWJlcik6CisgICAg
ICAgIChfcGFyc2VPYmplY3QpOgorICAgICAgICAoX3BhcnNlU3RyaW5nKToKKyAgICAgICAgKF9w
YXJzZSk6CisgICAgICAgIChfY2xhc3NOYW1lcyk6CisgICAgICAgIChjbGFzc05hbWVzKToKKyAg
ICAgICAgKGVsc2UpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvY2xhc3NuYW1lcy9pbmRleC5q
czogQWRkZWQuCisgICAgICAgIChjbGFzc05hbWVzKToKKyAgICAgICAgKGVsc2UpOgorICAgICAg
ICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9y
ZWFjdC9ub2RlX21vZHVsZXMvY2xhc3NuYW1lcy9wYWNrYWdlLmpzb246IEFkZGVkLgorICAgICAg
ICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9y
ZWFjdC9ub2RlX21vZHVsZXMvZGlyZWN0b3IvLm5wbWlnbm9yZTogQWRkZWQuCisgICAgICAgICog
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0
L25vZGVfbW9kdWxlcy9kaXJlY3Rvci8udHJhdmlzLnltbDogQWRkZWQuCisgICAgICAgICogU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25v
ZGVfbW9kdWxlcy9kaXJlY3Rvci9MSUNFTlNFOiBSZW5hbWVkIGZyb20gUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9sYWJzL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9yZWFjdC9ib3dlcl9jb21wb25lbnRzL2RpcmVjdG9yL0xJQ0VOU0UuCisgICAgICAgICogU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25v
ZGVfbW9kdWxlcy9kaXJlY3Rvci9SRUFETUUubWQ6IFJlbmFtZWQgZnJvbSBQZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2xhYnMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL3JlYWN0L2Jvd2VyX2NvbXBvbmVudHMvZGlyZWN0b3IvUkVBRE1FLm1kLgorICAgICAgICAq
IFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFj
dC9ub2RlX21vZHVsZXMvZGlyZWN0b3IvYmluL2J1aWxkOiBBZGRlZC4KKyAgICAgICAgKiBTcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9k
ZV9tb2R1bGVzL2RpcmVjdG9yL2Jvd2VyLmpzb246IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21v
ZHVsZXMvZGlyZWN0b3IvZXhhbXBsZXMvaHR0cC5qczogQWRkZWQuCisgICAgICAgIChzZXJ2ZXIu
aHR0cC5jcmVhdGVTZXJ2ZXIpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvZGlyZWN0b3IvbGli
L2RpcmVjdG9yLmpzOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL2xp
Yi9kaXJlY3Rvci9icm93c2VyLmpzOiBBZGRlZC4KKyAgICAgICAgKGRsb2NIYXNoRW1wdHkpOgor
ICAgICAgICAobGlzdGVuZXIuY2hlY2spOgorICAgICAgICAobGlzdGVuZXIuZmlyZSk6CisgICAg
ICAgIChsaXN0ZW5lci4pOgorICAgICAgICAobGlzdGVuZXIuaW5pdCk6CisgICAgICAgIChsaXN0
ZW5lci5kZXN0cm95KToKKyAgICAgICAgKGxpc3RlbmVyLnNldEhhc2gpOgorICAgICAgICAobGlz
dGVuZXIud3JpdGVGcmFtZSk6CisgICAgICAgIChsaXN0ZW5lci5zeW5jSGFzaCk6CisgICAgICAg
IChsaXN0ZW5lci5vbkhhc2hDaGFuZ2VkKToKKyAgICAgICAgKFJvdXRlci5leHBvcnRzLlJvdXRl
cik6CisgICAgICAgICh0aGlzLmhhbmRsZXIpOgorICAgICAgICAoUm91dGVyLnByb3RvdHlwZS5p
bml0KToKKyAgICAgICAgKFJvdXRlci5wcm90b3R5cGUuZXhwbG9kZSk6CisgICAgICAgIChSb3V0
ZXIucHJvdG90eXBlLnNldFJvdXRlKToKKyAgICAgICAgKHJvdXRlKToKKyAgICAgICAgKFJvdXRl
ci5wcm90b3R5cGUuaW5zZXJ0RXgpOgorICAgICAgICAoUm91dGVyLnByb3RvdHlwZS5nZXRSb3V0
ZSk6CisgICAgICAgIChSb3V0ZXIucHJvdG90eXBlLmRlc3Ryb3kpOgorICAgICAgICAoUm91dGVy
LnByb3RvdHlwZS5nZXRQYXRoKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL2xp
Yi9kaXJlY3Rvci9jbGkuanM6IEFkZGVkLgorICAgICAgICAoUm91dGVyLmV4cG9ydHMuUm91dGVy
KToKKyAgICAgICAgKFJvdXRlci5wcm90b3R5cGUuY29uZmlndXJlKToKKyAgICAgICAgKFJvdXRl
ci5wcm90b3R5cGUuZGlzcGF0Y2gpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvZGlyZWN0b3Iv
bGliL2RpcmVjdG9yL2h0dHAvaW5kZXguanM6IEFkZGVkLgorICAgICAgICAoT2JqZWN0LmtleXMu
cmVzcG9uc2VzLmZvckVhY2gpOgorICAgICAgICAoUm91dGVyLmV4cG9ydHMuUm91dGVyKToKKyAg
ICAgICAgKFJvdXRlci5wcm90b3R5cGUuY29uZmlndXJlKToKKyAgICAgICAgKFJvdXRlci5wcm90
b3R5cGUub24pOgorICAgICAgICAoUm91dGVyLnByb3RvdHlwZS5hdHRhY2gpOgorICAgICAgICAo
Um91dGVyLnByb3RvdHlwZS5kaXNwYXRjaCk6CisgICAgICAgIChSb3V0ZXIucHJvdG90eXBlLnBh
cnNlKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL2xpYi9kaXJlY3Rvci9odHRw
L21ldGhvZHMuanM6IEFkZGVkLgorICAgICAgICAoUkZDNTc4OS5tYXApOgorICAgICAgICAqIFNw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9u
b2RlX21vZHVsZXMvZGlyZWN0b3IvbGliL2RpcmVjdG9yL2h0dHAvcmVzcG9uc2VzLmpzOiBBZGRl
ZC4KKyAgICAgICAgKGV4cG9ydHMuTm90TW9kaWZpZWQpOgorICAgICAgICAoZXhwb3J0cy5CYWRS
ZXF1ZXN0KToKKyAgICAgICAgKGV4cG9ydHMuTm90QXV0aG9yaXplZCk6CisgICAgICAgIChleHBv
cnRzLkZvcmJpZGRlbik6CisgICAgICAgIChleHBvcnRzLk5vdEZvdW5kKToKKyAgICAgICAgKGV4
cG9ydHMuTWV0aG9kTm90QWxsb3dlZCk6CisgICAgICAgIChleHBvcnRzLk5vdEFjY2VwdGFibGUp
OgorICAgICAgICAoZXhwb3J0cy5Ob3RJbXBsZW1lbnRlZCk6CisgICAgICAgICogU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9k
dWxlcy9kaXJlY3Rvci9saWIvZGlyZWN0b3Ivcm91dGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKF9l
dmVyeSk6CisgICAgICAgIChfYXN5bmNFdmVyeVNlcmllcyk6CisgICAgICAgIChyZWdpZnlTdHJp
bmcpOgorICAgICAgICAodGVybWluYXRvcik6CisgICAgICAgIChSb3V0ZXIuZXhwb3J0cy5Sb3V0
ZXIpOgorICAgICAgICAoUm91dGVyLnByb3RvdHlwZS5jb25maWd1cmUpOgorICAgICAgICAodGhp
cy5wYXJhbXMudG9rZW4pOgorICAgICAgICAoUm91dGVyLnByb3RvdHlwZS5wYXJhbSk6CisgICAg
ICAgIChSb3V0ZXIucHJvdG90eXBlLm9uLlJvdXRlci5wcm90b3R5cGUucm91dGUpOgorICAgICAg
ICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9y
ZWFjdC9ub2RlX21vZHVsZXMvZGlyZWN0b3IvcGFja2FnZS5qc29uOiBBZGRlZC4KKyAgICAgICAg
KiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVh
Y3Qvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL3Rlc3QvYnJvd3Nlci9iYWNrZW5kL2JhY2tlbmQuanM6
IEFkZGVkLgorICAgICAgICAoZmlsZVNlcnZlcik6CisgICAgICAgIChyb3V0ZXIubmV3LmRpcmVj
dG9yLmh0dHAuUm91dGVyLnN0cmluZ19hcHBlYXJlZF9oZXJlLnN0cmluZ19hcHBlYXJlZF9oZXJl
LmdldCBmaWxlU2VydmVyKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL3Rlc3Qv
YnJvd3Nlci9icm93c2VyaWZ5LWhhcm5lc3MuaHRtbDogQWRkZWQuCisgICAgICAgICogU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVf
bW9kdWxlcy9kaXJlY3Rvci90ZXN0L2Jyb3dzZXIvaGVscGVycy9hcGkuanM6IEFkZGVkLgorICAg
ICAgICAoc2V0dXApOgorICAgICAgICAodGVhcmRvd24pOgorICAgICAgICAoY3JlYXRlVGVzdCk6
CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9kaXJlY3Rvci90ZXN0L2Jyb3dzZXIvaHRtbDUtcm91
dGVzLWhhcm5lc3MuaHRtbDogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9kaXJlY3Rv
ci90ZXN0L2Jyb3dzZXIvaHRtbDUtcm91dGVzLXRlc3QuanM6IEFkZGVkLgorICAgICAgICAoc3Ry
aW5nX2FwcGVhcmVkX2hlcmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUuc3RyaW5nX2FwcGVhcmVkX2hl
cmUpOgorICAgICAgICAoc3RyaW5nX2FwcGVhcmVkX2hlcmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUu
b24pOgorICAgICAgICAoc3RyaW5nX2FwcGVhcmVkX2hlcmUub24pOgorICAgICAgICAoc3RyaW5n
X2FwcGVhcmVkX2hlcmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUub25jZSk6CisgICAgICAgIChzdHJp
bmdfYXBwZWFyZWRfaGVyZS5vbmNlKToKKyAgICAgICAgKHN0cmluZ19hcHBlYXJlZF9oZXJlKToK
KyAgICAgICAgKHN0cmluZ19hcHBlYXJlZF9oZXJlLnN0cmluZ19hcHBlYXJlZF9oZXJlLnN0cmlu
Z19hcHBlYXJlZF9oZXJlLm9uKToKKyAgICAgICAgKHNoYXJlZC5maXJlZC5wdXNoKToKKyAgICAg
ICAgKHN0cmluZ19hcHBlYXJlZF9oZXJlLnN0cmluZ19hcHBlYXJlZF9oZXJlLnN0cmluZ19hcHBl
YXJlZF9oZXJlLmFmdGVyKToKKyAgICAgICAgKHNoYXJlZC5maXJlZC5wdXNoLmFmdGVyKToKKyAg
ICAgICAgKHNoYXJlZC5maXJlZC5wdXNoLm5vdGZvdW5kKToKKyAgICAgICAgKHNoYXJlZC5maXJl
ZC5wdXNoLm9uKToKKyAgICAgICAgKHJlc291cmNlLmYxKToKKyAgICAgICAgKHJlc291cmNlLmYy
KToKKyAgICAgICAgKHJvb3QpOgorICAgICAgICAoYWZ1bmMpOgorICAgICAgICAoc2V0VGltZW91
dCk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9kaXJlY3Rvci90ZXN0L2Jyb3dzZXIvcm91dGVz
LWhhcm5lc3MuaHRtbDogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9kaXJlY3Rvci90
ZXN0L2Jyb3dzZXIvcm91dGVzLXRlc3QuanM6IEFkZGVkLgorICAgICAgICAoc3RyaW5nX2FwcGVh
cmVkX2hlcmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUpOgorICAg
ICAgICAoc3RyaW5nX2FwcGVhcmVkX2hlcmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUub24pOgorICAg
ICAgICAoc3RyaW5nX2FwcGVhcmVkX2hlcmUub24pOgorICAgICAgICAoc3RyaW5nX2FwcGVhcmVk
X2hlcmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUub25jZSk6CisgICAgICAgIChzdHJpbmdfYXBwZWFy
ZWRfaGVyZS5vbmNlKToKKyAgICAgICAgKHN0cmluZ19hcHBlYXJlZF9oZXJlKToKKyAgICAgICAg
KHN0cmluZ19hcHBlYXJlZF9oZXJlLnN0cmluZ19hcHBlYXJlZF9oZXJlLnN0cmluZ19hcHBlYXJl
ZF9oZXJlLm9uKToKKyAgICAgICAgKHNoYXJlZC5maXJlZC5wdXNoKToKKyAgICAgICAgKHN0cmlu
Z19hcHBlYXJlZF9oZXJlLnN0cmluZ19hcHBlYXJlZF9oZXJlLnN0cmluZ19hcHBlYXJlZF9oZXJl
LmFmdGVyKToKKyAgICAgICAgKHNoYXJlZC5maXJlZC5wdXNoLmFmdGVyKToKKyAgICAgICAgKHNo
YXJlZC5maXJlZC5wdXNoLm5vdGZvdW5kKToKKyAgICAgICAgKHNoYXJlZC5maXJlZC5wdXNoLm9u
KToKKyAgICAgICAgKHJlc291cmNlLmYxKToKKyAgICAgICAgKHJlc291cmNlLmYyKToKKyAgICAg
ICAgKHJvb3QpOgorICAgICAgICAoYWZ1bmMpOgorICAgICAgICAoc2V0VGltZW91dCk6CisgICAg
ICAgIChyb3V0ZXIubmV3LndpbmRvdy5Sb3V0ZXIud2luZG93LlJvdXRlckFsaWFzLnN0cmluZ19h
cHBlYXJlZF9oZXJlKToKKyAgICAgICAgKHJvdXRlci5uZXcud2luZG93LlJvdXRlci53aW5kb3cu
Um91dGVyQWxpYXMpOgorICAgICAgICAocm91dGVzLnN0cmluZ19hcHBlYXJlZF9oZXJlKToKKyAg
ICAgICAgKHJvdXRlcy5pbml0aWFsUGF0aCk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9kaXJl
Y3Rvci90ZXN0L3NlcnZlci9jbGkvZGlzcGF0Y2gtdGVzdC5qczogQWRkZWQuCisgICAgICAgICh2
b3dzLmRlc2NyaWJlLnN0cmluZ19hcHBlYXJlZF9oZXJlLmFkZEJhdGNoLnN0cmluZ19hcHBlYXJl
ZF9oZXJlLnRvcGljKToKKyAgICAgICAgKHZvd3MuZGVzY3JpYmUuc3RyaW5nX2FwcGVhcmVkX2hl
cmUuYWRkQmF0Y2guc3RyaW5nX2FwcGVhcmVkX2hlcmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUpOgor
ICAgICAgICAodm93cy5kZXNjcmliZS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5hZGRCYXRjaC5zdHJp
bmdfYXBwZWFyZWRfaGVyZS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5zdHJpbmdfYXBwZWFyZWRfaGVy
ZSk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9kaXJlY3Rvci90ZXN0L3NlcnZlci9jbGkvbW91
bnQtdGVzdC5qczogQWRkZWQuCisgICAgICAgICh2b3dzLmRlc2NyaWJlLnN0cmluZ19hcHBlYXJl
ZF9oZXJlLmFkZEJhdGNoLnN0cmluZ19hcHBlYXJlZF9oZXJlLnRvcGljLm5ldy5kaXJlY3Rvci5j
bGkuUm91dGVyLnN0cmluZ19hcHBlYXJlZF9oZXJlKToKKyAgICAgICAgKHZvd3MuZGVzY3JpYmUu
c3RyaW5nX2FwcGVhcmVkX2hlcmUuYWRkQmF0Y2guc3RyaW5nX2FwcGVhcmVkX2hlcmUuc3RyaW5n
X2FwcGVhcmVkX2hlcmUpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvZGlyZWN0b3IvdGVzdC9z
ZXJ2ZXIvY2xpL3BhdGgtdGVzdC5qczogQWRkZWQuCisgICAgICAgICh2b3dzLmRlc2NyaWJlLnN0
cmluZ19hcHBlYXJlZF9oZXJlLmFkZEJhdGNoLnN0cmluZ19hcHBlYXJlZF9oZXJlLnN0cmluZ19h
cHBlYXJlZF9oZXJlLik6CisgICAgICAgICh2b3dzLmRlc2NyaWJlLnN0cmluZ19hcHBlYXJlZF9o
ZXJlLmFkZEJhdGNoLnN0cmluZ19hcHBlYXJlZF9oZXJlLnN0cmluZ19hcHBlYXJlZF9oZXJlLnN0
cmluZ19hcHBlYXJlZF9oZXJlKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL3Rl
c3Qvc2VydmVyL2NvcmUvZGlzcGF0Y2gtdGVzdC5qczogQWRkZWQuCisgICAgICAgICh2b3dzLmRl
c2NyaWJlLnN0cmluZ19hcHBlYXJlZF9oZXJlLmFkZEJhdGNoLnN0cmluZ19hcHBlYXJlZF9oZXJl
LnRoYXQubWF0Y2hlZC5zdHJpbmdfYXBwZWFyZWRfaGVyZS5yb3V0ZXIubmV3LmRpcmVjdG9yLlJv
dXRlci4pOgorICAgICAgICAodm93cy5kZXNjcmliZS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5hZGRC
YXRjaC5zdHJpbmdfYXBwZWFyZWRfaGVyZS50b3BpYyk6CisgICAgICAgICh2b3dzLmRlc2NyaWJl
LnN0cmluZ19hcHBlYXJlZF9oZXJlLmFkZEJhdGNoLnN0cmluZ19hcHBlYXJlZF9oZXJlLnN0cmlu
Z19hcHBlYXJlZF9oZXJlKToKKyAgICAgICAgKHZvd3MuZGVzY3JpYmUuc3RyaW5nX2FwcGVhcmVk
X2hlcmUuYWRkQmF0Y2guc3RyaW5nX2FwcGVhcmVkX2hlcmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUu
c3RyaW5nX2FwcGVhcmVkX2hlcmUpOgorICAgICAgICAodm93cy5kZXNjcmliZS5zdHJpbmdfYXBw
ZWFyZWRfaGVyZS5hZGRCYXRjaC5zdHJpbmdfYXBwZWFyZWRfaGVyZS5zdHJpbmdfYXBwZWFyZWRf
aGVyZS5zdHJpbmdfYXBwZWFyZWRfaGVyZS50b3BpYyk6CisgICAgICAgICh2b3dzLmRlc2NyaWJl
LnN0cmluZ19hcHBlYXJlZF9oZXJlLmFkZEJhdGNoLnN0cmluZ19hcHBlYXJlZF9oZXJlLnN0cmlu
Z19hcHBlYXJlZF9oZXJlLnN0cmluZ19hcHBlYXJlZF9oZXJlLnN0cmluZ19hcHBlYXJlZF9oZXJl
KToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL3Rlc3Qvc2VydmVyL2NvcmUvaW5z
ZXJ0LXRlc3QuanM6IEFkZGVkLgorICAgICAgICAodm93cy5kZXNjcmliZS5zdHJpbmdfYXBwZWFy
ZWRfaGVyZS5hZGRCYXRjaC5zdHJpbmdfYXBwZWFyZWRfaGVyZS5zdHJpbmdfYXBwZWFyZWRfaGVy
ZS4pOgorICAgICAgICAodm93cy5kZXNjcmliZS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5hZGRCYXRj
aC5zdHJpbmdfYXBwZWFyZWRfaGVyZS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5zdHJpbmdfYXBwZWFy
ZWRfaGVyZSk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9kaXJlY3Rvci90ZXN0L3NlcnZlci9j
b3JlL21vdW50LXRlc3QuanM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0Um91dGUpOgorICAgICAg
ICAodm93cy5kZXNjcmliZS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5hZGRCYXRjaC5zdHJpbmdfYXBw
ZWFyZWRfaGVyZS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5zdHJpbmdfYXBwZWFyZWRfaGVyZS4pOgor
ICAgICAgICAodm93cy5kZXNjcmliZS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5hZGRCYXRjaC5zdHJp
bmdfYXBwZWFyZWRfaGVyZS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5zdHJpbmdfYXBwZWFyZWRfaGVy
ZS5mb29zdGFyKToKKyAgICAgICAgKHZvd3MuZGVzY3JpYmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUu
YWRkQmF0Y2guc3RyaW5nX2FwcGVhcmVkX2hlcmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUuc3RyaW5n
X2FwcGVhcmVkX2hlcmUuZm9vYmF6emJ1enopOgorICAgICAgICAodm93cy5kZXNjcmliZS5zdHJp
bmdfYXBwZWFyZWRfaGVyZS5hZGRCYXRjaC5zdHJpbmdfYXBwZWFyZWRfaGVyZS5zdHJpbmdfYXBw
ZWFyZWRfaGVyZS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5mb29kb2cpOgorICAgICAgICAodm93cy5k
ZXNjcmliZS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5hZGRCYXRjaC5zdHJpbmdfYXBwZWFyZWRfaGVy
ZS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5yb290KToKKyAgICAg
ICAgKHZvd3MuZGVzY3JpYmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUuYWRkQmF0Y2guc3RyaW5nX2Fw
cGVhcmVkX2hlcmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUuc3Ry
aW5nX2FwcGVhcmVkX2hlcmUpOgorICAgICAgICAodm93cy5kZXNjcmliZS5zdHJpbmdfYXBwZWFy
ZWRfaGVyZS5hZGRCYXRjaC5zdHJpbmdfYXBwZWFyZWRfaGVyZS5zdHJpbmdfYXBwZWFyZWRfaGVy
ZS50b3BpYyk6CisgICAgICAgICh2b3dzLmRlc2NyaWJlLnN0cmluZ19hcHBlYXJlZF9oZXJlLmFk
ZEJhdGNoLnN0cmluZ19hcHBlYXJlZF9oZXJlLnN0cmluZ19hcHBlYXJlZF9oZXJlLik6CisgICAg
ICAgICh2b3dzLmRlc2NyaWJlLnN0cmluZ19hcHBlYXJlZF9oZXJlLmFkZEJhdGNoLnN0cmluZ19h
cHBlYXJlZF9oZXJlLnN0cmluZ19hcHBlYXJlZF9oZXJlLmNvdW50cnlDaXR5WmlwKToKKyAgICAg
ICAgKHZvd3MuZGVzY3JpYmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUuYWRkQmF0Y2guc3RyaW5nX2Fw
cGVhcmVkX2hlcmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUpOgor
ICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvZGlyZWN0b3IvdGVzdC9zZXJ2ZXIvY29yZS9vbi10ZXN0
LmpzOiBBZGRlZC4KKyAgICAgICAgKHZvd3MuZGVzY3JpYmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUu
YWRkQmF0Y2guc3RyaW5nX2FwcGVhcmVkX2hlcmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUuKToKKyAg
ICAgICAgKHZvd3MuZGVzY3JpYmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUuYWRkQmF0Y2guc3RyaW5n
X2FwcGVhcmVkX2hlcmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUp
OgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvZGlyZWN0b3IvdGVzdC9zZXJ2ZXIvY29yZS9wYXRo
LXRlc3QuanM6IEFkZGVkLgorICAgICAgICAodm93cy5kZXNjcmliZS5zdHJpbmdfYXBwZWFyZWRf
aGVyZS5hZGRCYXRjaC5zdHJpbmdfYXBwZWFyZWRfaGVyZS5yb3V0ZXIubmV3LmRpcmVjdG9yLlJv
dXRlcik6CisgICAgICAgICh2b3dzLmRlc2NyaWJlLnN0cmluZ19hcHBlYXJlZF9oZXJlLmFkZEJh
dGNoLnN0cmluZ19hcHBlYXJlZF9oZXJlLnRvcGljKToKKyAgICAgICAgKHZvd3MuZGVzY3JpYmUu
c3RyaW5nX2FwcGVhcmVkX2hlcmUuYWRkQmF0Y2guc3RyaW5nX2FwcGVhcmVkX2hlcmUuc3RyaW5n
X2FwcGVhcmVkX2hlcmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUpOgorICAgICAgICAqIFNwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21v
ZHVsZXMvZGlyZWN0b3IvdGVzdC9zZXJ2ZXIvY29yZS9yZWdpZnlzdHJpbmctdGVzdC5qczogQWRk
ZWQuCisgICAgICAgIChjYWxsYmFjayk6CisgICAgICAgICh0ZXN0Um91dGUpOgorICAgICAgICAo
dm93cy5kZXNjcmliZS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5hZGRCYXRjaC5zdHJpbmdfYXBwZWFy
ZWRfaGVyZS50b3BpYyk6CisgICAgICAgICh2b3dzLmRlc2NyaWJlLnN0cmluZ19hcHBlYXJlZF9o
ZXJlLmFkZEJhdGNoLnN0cmluZ19hcHBlYXJlZF9oZXJlLnN0cmluZ19hcHBlYXJlZF9oZXJlKToK
KyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL3Rlc3Qvc2VydmVyL2hlbHBlcnMvaW5k
ZXguanM6IEFkZGVkLgorICAgICAgICAoZXhwb3J0cy5jcmVhdGVTZXJ2ZXIpOgorICAgICAgICAo
ZXhwb3J0cy5oYW5kbGVycy5yZXNwb25kV2l0aElkKToKKyAgICAgICAgKGV4cG9ydHMuaGFuZGxl
cnMucmVzcG9uZFdpdGhEYXRhKToKKyAgICAgICAgKGV4cG9ydHMuaGFuZGxlcnMucmVzcG9uZFdp
dGhPayk6CisgICAgICAgIChleHBvcnRzLmhhbmRsZXJzLnN0cmVhbUJvZHkpOgorICAgICAgICAq
IFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFj
dC9ub2RlX21vZHVsZXMvZGlyZWN0b3IvdGVzdC9zZXJ2ZXIvaGVscGVycy9tYWNyb3MuanM6IEFk
ZGVkLgorICAgICAgICAoY29udGV4dC50b3BpYyk6CisgICAgICAgIChjb250ZXh0LnN0cmluZ19h
cHBlYXJlZF9oZXJlLmV4cGVjdGVkLnN0cmluZ19hcHBlYXJlZF9oZXJlKToKKyAgICAgICAgKGV4
cG9ydHMuYXNzZXJ0R2V0KToKKyAgICAgICAgKHJldHVybi50b3BpYyk6CisgICAgICAgIChyZXR1
cm4uc3RyaW5nX2FwcGVhcmVkX2hlcmUpOgorICAgICAgICAoZXhwb3J0cy5hc3NlcnQ0MDQpOgor
ICAgICAgICAoZXhwb3J0cy5hc3NlcnRQb3N0KToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2Rp
cmVjdG9yL3Rlc3Qvc2VydmVyL2h0dHAvYWNjZXB0LXRlc3QuanM6IEFkZGVkLgorICAgICAgICAo
YXBpRWFzeS5kZXNjcmliZS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5hZGRCYXRjaC5zdHJpbmdfYXBw
ZWFyZWRfaGVyZS5zdHJpbmdfYXBwZWFyZWRfaGVyZS4pOgorICAgICAgICAoYXBpRWFzeS5kZXNj
cmliZS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5hZGRCYXRjaC5zdHJpbmdfYXBwZWFyZWRfaGVyZS5z
dHJpbmdfYXBwZWFyZWRfaGVyZS50b3BpYyk6CisgICAgICAgIChhcGlFYXN5LmRlc2NyaWJlLnN0
cmluZ19hcHBlYXJlZF9oZXJlLmFkZEJhdGNoLnN0cmluZ19hcHBlYXJlZF9oZXJlLnN0cmluZ19h
cHBlYXJlZF9oZXJlLnN0cmluZ19hcHBlYXJlZF9oZXJlKToKKyAgICAgICAgKiBTcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1
bGVzL2RpcmVjdG9yL3Rlc3Qvc2VydmVyL2h0dHAvYXR0YWNoLXRlc3QuanM6IEFkZGVkLgorICAg
ICAgICAoYXNzZXJ0RGF0YSk6CisgICAgICAgICh2b3dzLmRlc2NyaWJlLnN0cmluZ19hcHBlYXJl
ZF9oZXJlLmFkZEJhdGNoLnN0cmluZ19hcHBlYXJlZF9oZXJlLnN0cmluZ19hcHBlYXJlZF9oZXJl
LnN0cmluZ19hcHBlYXJlZF9oZXJlKToKKyAgICAgICAgKHZvd3MuZGVzY3JpYmUuc3RyaW5nX2Fw
cGVhcmVkX2hlcmUuYWRkQmF0Y2guc3RyaW5nX2FwcGVhcmVkX2hlcmUuc3RyaW5nX2FwcGVhcmVk
X2hlcmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUudG9waWMpOgorICAgICAgICAqIFNwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVs
ZXMvZGlyZWN0b3IvdGVzdC9zZXJ2ZXIvaHR0cC9iZWZvcmUtdGVzdC5qczogQWRkZWQuCisgICAg
ICAgICh2b3dzLmRlc2NyaWJlLnN0cmluZ19hcHBlYXJlZF9oZXJlLmFkZEJhdGNoLnN0cmluZ19h
cHBlYXJlZF9oZXJlLnN0cmluZ19hcHBlYXJlZF9oZXJlLnRvcGljKToKKyAgICAgICAgKHZvd3Mu
ZGVzY3JpYmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUuYWRkQmF0Y2guc3RyaW5nX2FwcGVhcmVkX2hl
cmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUpOgorICAgICAgICAq
IFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFj
dC9ub2RlX21vZHVsZXMvZGlyZWN0b3IvdGVzdC9zZXJ2ZXIvaHR0cC9jb25maWd1cmUtdGVzdC5q
czogQWRkZWQuCisgICAgICAgICh2b3dzLmRlc2NyaWJlLnN0cmluZ19hcHBlYXJlZF9oZXJlLmFk
ZEJhdGNoLnN0cmluZ19hcHBlYXJlZF9oZXJlLnN0cmluZ19hcHBlYXJlZF9oZXJlLnN0cmluZ19h
cHBlYXJlZF9oZXJlLnN0cmluZ19hcHBlYXJlZF9oZXJlKToKKyAgICAgICAgKiBTcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1
bGVzL2RpcmVjdG9yL3Rlc3Qvc2VydmVyL2h0dHAvaHR0cC10ZXN0LmpzOiBBZGRlZC4KKyAgICAg
ICAgKGFzc2VydEJhcmspOgorICAgICAgICAodm93cy5kZXNjcmliZS5zdHJpbmdfYXBwZWFyZWRf
aGVyZS5hZGRCYXRjaC5zdHJpbmdfYXBwZWFyZWRfaGVyZS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5z
dHJpbmdfYXBwZWFyZWRfaGVyZSk6CisgICAgICAgICh2b3dzLmRlc2NyaWJlLnN0cmluZ19hcHBl
YXJlZF9oZXJlLmFkZEJhdGNoLnN0cmluZ19hcHBlYXJlZF9oZXJlLnN0cmluZ19hcHBlYXJlZF9o
ZXJlLnN0cmluZ19hcHBlYXJlZF9oZXJlLnRvcGljKToKKyAgICAgICAgKHZvd3MuZGVzY3JpYmUu
c3RyaW5nX2FwcGVhcmVkX2hlcmUuYWRkQmF0Y2guc3RyaW5nX2FwcGVhcmVkX2hlcmUuc3RyaW5n
X2FwcGVhcmVkX2hlcmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUp
OgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvZGlyZWN0b3IvdGVzdC9zZXJ2ZXIvaHR0cC9tZXRo
b2RzLXRlc3QuanM6IEFkZGVkLgorICAgICAgICAodm93cy5kZXNjcmliZS5zdHJpbmdfYXBwZWFy
ZWRfaGVyZS5hZGRCYXRjaC5zdHJpbmdfYXBwZWFyZWRfaGVyZS5zdHJpbmdfYXBwZWFyZWRfaGVy
ZSk6CisgICAgICAgICh2b3dzLmRlc2NyaWJlLnN0cmluZ19hcHBlYXJlZF9oZXJlLmFkZEJhdGNo
LnN0cmluZ19hcHBlYXJlZF9oZXJlLnN0cmluZ19hcHBlYXJlZF9oZXJlLnN0cmluZ19hcHBlYXJl
ZF9oZXJlLik6CisgICAgICAgICh2b3dzLmRlc2NyaWJlLnN0cmluZ19hcHBlYXJlZF9oZXJlLmFk
ZEJhdGNoLnN0cmluZ19hcHBlYXJlZF9oZXJlLnN0cmluZ19hcHBlYXJlZF9oZXJlLnN0cmluZ19h
cHBlYXJlZF9oZXJlLm1vZGlmeVJlc291cmNlKToKKyAgICAgICAgKHZvd3MuZGVzY3JpYmUuc3Ry
aW5nX2FwcGVhcmVkX2hlcmUuYWRkQmF0Y2guc3RyaW5nX2FwcGVhcmVkX2hlcmUuc3RyaW5nX2Fw
cGVhcmVkX2hlcmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUpOgor
ICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvZGlyZWN0b3IvdGVzdC9zZXJ2ZXIvaHR0cC9yZWN1cnNp
b24tdGVzdC5qczogQWRkZWQuCisgICAgICAgICh2b3dzLmRlc2NyaWJlLnN0cmluZ19hcHBlYXJl
ZF9oZXJlLmFkZEJhdGNoLnN0cmluZ19hcHBlYXJlZF9oZXJlLnN0cmluZ19hcHBlYXJlZF9oZXJl
Lik6CisgICAgICAgICh2b3dzLmRlc2NyaWJlLnN0cmluZ19hcHBlYXJlZF9oZXJlLmFkZEJhdGNo
LnN0cmluZ19hcHBlYXJlZF9oZXJlLnN0cmluZ19hcHBlYXJlZF9oZXJlLmJldGEpOgorICAgICAg
ICAodm93cy5kZXNjcmliZS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5hZGRCYXRjaC5zdHJpbmdfYXBw
ZWFyZWRfaGVyZS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5nYW1tYSk6CisgICAgICAgICh2b3dzLmRl
c2NyaWJlLnN0cmluZ19hcHBlYXJlZF9oZXJlLmFkZEJhdGNoLnN0cmluZ19hcHBlYXJlZF9oZXJl
LnN0cmluZ19hcHBlYXJlZF9oZXJlLnN0cmluZ19hcHBlYXJlZF9oZXJlKToKKyAgICAgICAgKiBT
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qv
bm9kZV9tb2R1bGVzL2RpcmVjdG9yL3Rlc3Qvc2VydmVyL2h0dHAvcmVzcG9uc2VzLXRlc3QuanM6
IEFkZGVkLgorICAgICAgICAodm93cy5kZXNjcmliZS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5hZGRC
YXRjaC5zdHJpbmdfYXBwZWFyZWRfaGVyZS5zdHJpbmdfYXBwZWFyZWRfaGVyZSk6CisgICAgICAg
ICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Jl
YWN0L25vZGVfbW9kdWxlcy9kaXJlY3Rvci90ZXN0L3NlcnZlci9odHRwL3N0cmVhbS10ZXN0Lmpz
OiBBZGRlZC4KKyAgICAgICAgKGhhbmRsZXJzLmhlbHBlcnMuaGFuZGxlcnMudm93cy5kZXNjcmli
ZS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5hZGRCYXRjaC5zdHJpbmdfYXBwZWFyZWRfaGVyZS5zdHJp
bmdfYXBwZWFyZWRfaGVyZS50b3BpYyk6CisgICAgICAgIChoYW5kbGVycy5oZWxwZXJzLmhhbmRs
ZXJzLnZvd3MuZGVzY3JpYmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUuYWRkQmF0Y2guc3RyaW5nX2Fw
cGVhcmVkX2hlcmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUuc3RyaW5nX2FwcGVhcmVkX2hlcmUudG9w
aWMpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL0xJQ0VOU0U6IEFkZGVkLgor
ICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL1BBVEVOVFM6IEFkZGVkLgorICAgICAg
ICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9y
ZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL1JFQURNRS5tZDogQWRkZWQuCisgICAgICAgICog
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0
L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vZGlzdC9yZWFjdC1kb20tc2VydmVyLmpzOiBBZGRlZC4K
KyAgICAgICAgKGVsc2UpOgorICAgICAgICAoZWxzZS5lbHNlKToKKyAgICAgICAgKHMpOgorICAg
ICAgICAocmV0dXJuLmUpOgorICAgICAgICAoMSk6CisgICAgICAgIChBdXRvRm9jdXNVdGlscy5m
b2N1c0RPTUNvbXBvbmVudCk6CisgICAgICAgICgyKToKKyAgICAgICAgKGlzS2V5cHJlc3NDb21t
YW5kKToKKyAgICAgICAgKGdldENvbXBvc2l0aW9uRXZlbnRUeXBlKToKKyAgICAgICAgKGlzRmFs
bGJhY2tDb21wb3NpdGlvblN0YXJ0KToKKyAgICAgICAgKGlzRmFsbGJhY2tDb21wb3NpdGlvbkVu
ZCk6CisgICAgICAgIChnZXREYXRhRnJvbUN1c3RvbUV2ZW50KToKKyAgICAgICAgKGV4dHJhY3RD
b21wb3NpdGlvbkV2ZW50KToKKyAgICAgICAgKGdldE5hdGl2ZUJlZm9yZUlucHV0Q2hhcnMpOgor
ICAgICAgICAoZ2V0RmFsbGJhY2tCZWZvcmVJbnB1dENoYXJzKToKKyAgICAgICAgKGV4dHJhY3RC
ZWZvcmVJbnB1dEV2ZW50KToKKyAgICAgICAgKEJlZm9yZUlucHV0RXZlbnRQbHVnaW4uZXh0cmFj
dEV2ZW50cyk6CisgICAgICAgICgzKToKKyAgICAgICAgKHByZWZpeEtleSk6CisgICAgICAgICg0
KToKKyAgICAgICAgKHdhcm5IeXBoZW5hdGVkU3R5bGVOYW1lKToKKyAgICAgICAgKHdhcm5CYWRW
ZW5kb3JlZFN0eWxlTmFtZSk6CisgICAgICAgICh3YXJuU3R5bGVWYWx1ZVdpdGhTZW1pY29sb24p
OgorICAgICAgICAod2FyblN0eWxlVmFsdWVJc05hTik6CisgICAgICAgIChjaGVja1JlbmRlck1l
c3NhZ2UpOgorICAgICAgICAod2FyblZhbGlkU3R5bGUpOgorICAgICAgICAoQ1NTUHJvcGVydHlP
cGVyYXRpb25zLmNyZWF0ZU1hcmt1cEZvclN0eWxlcyk6CisgICAgICAgIChDU1NQcm9wZXJ0eU9w
ZXJhdGlvbnMuc2V0VmFsdWVGb3JTdHlsZXMpOgorICAgICAgICAoNSk6CisgICAgICAgIChfY2xh
c3NDYWxsQ2hlY2spOgorICAgICAgICAoQ2FsbGJhY2tRdWV1ZS5wcm90b3R5cGUuZW5xdWV1ZSk6
CisgICAgICAgIChDYWxsYmFja1F1ZXVlLnByb3RvdHlwZS5ub3RpZnlBbGwpOgorICAgICAgICAo
Q2FsbGJhY2tRdWV1ZS5wcm90b3R5cGUuY2hlY2twb2ludCk6CisgICAgICAgIChDYWxsYmFja1F1
ZXVlLnByb3RvdHlwZS5yb2xsYmFjayk6CisgICAgICAgIChDYWxsYmFja1F1ZXVlLnByb3RvdHlw
ZS5yZXNldCk6CisgICAgICAgIChDYWxsYmFja1F1ZXVlLnByb3RvdHlwZS5kZXN0cnVjdG9yKToK
KyAgICAgICAgKENhbGxiYWNrUXVldWUpOgorICAgICAgICAoNik6CisgICAgICAgIChtb2R1bGUu
ZXhwb3J0cy5Qb29sZWRDbGFzcy5hZGRQb29saW5nVG8pOgorICAgICAgICAoc2hvdWxkVXNlQ2hh
bmdlRXZlbnQpOgorICAgICAgICAobWFudWFsRGlzcGF0Y2hDaGFuZ2VFdmVudCk6CisgICAgICAg
IChydW5FdmVudEluQmF0Y2gpOgorICAgICAgICAoc3RhcnRXYXRjaGluZ0ZvckNoYW5nZUV2ZW50
SUU4KToKKyAgICAgICAgKHN0b3BXYXRjaGluZ0ZvckNoYW5nZUV2ZW50SUU4KToKKyAgICAgICAg
KGdldFRhcmdldEluc3RGb3JDaGFuZ2VFdmVudCk6CisgICAgICAgIChoYW5kbGVFdmVudHNGb3JD
aGFuZ2VFdmVudElFOCk6CisgICAgICAgIChzdGFydFdhdGNoaW5nRm9yVmFsdWVDaGFuZ2UpOgor
ICAgICAgICAoc3RvcFdhdGNoaW5nRm9yVmFsdWVDaGFuZ2UpOgorICAgICAgICAoaGFuZGxlUHJv
cGVydHlDaGFuZ2UpOgorICAgICAgICAoZ2V0VGFyZ2V0SW5zdEZvcklucHV0RXZlbnQpOgorICAg
ICAgICAoaGFuZGxlRXZlbnRzRm9ySW5wdXRFdmVudElFKToKKyAgICAgICAgKGdldFRhcmdldElu
c3RGb3JJbnB1dEV2ZW50SUUpOgorICAgICAgICAoc2hvdWxkVXNlQ2xpY2tFdmVudCk6CisgICAg
ICAgIChDaGFuZ2VFdmVudFBsdWdpbi5leHRyYWN0RXZlbnRzKToKKyAgICAgICAgKGdldE5vZGVB
ZnRlcik6CisgICAgICAgIChpbnNlcnRMYXp5VHJlZUNoaWxkQXQpOgorICAgICAgICAobW92ZUNo
aWxkKToKKyAgICAgICAgKHJlbW92ZUNoaWxkKToKKyAgICAgICAgKG1vdmVEZWxpbWl0ZWRUZXh0
KToKKyAgICAgICAgKHJlbW92ZURlbGltaXRlZFRleHQpOgorICAgICAgICAocmVwbGFjZURlbGlt
aXRlZFRleHQpOgorICAgICAgICAoZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXApOgor
ICAgICAgICAoRE9NQ2hpbGRyZW5PcGVyYXRpb25zLnByb2Nlc3NVcGRhdGVzKToKKyAgICAgICAg
KDgpOgorICAgICAgICAoaW5zZXJ0VHJlZUNoaWxkcmVuKToKKyAgICAgICAgKHF1ZXVlQ2hpbGQp
OgorICAgICAgICAocXVldWVIVE1MKToKKyAgICAgICAgKHF1ZXVlVGV4dCk6CisgICAgICAgICh0
b1N0cmluZyk6CisgICAgICAgIChET01MYXp5VHJlZSk6CisgICAgICAgICg5KToKKyAgICAgICAg
KDEwKToKKyAgICAgICAgKGNoZWNrTWFzayk6CisgICAgICAgIChET01Qcm9wZXJ0eUluamVjdGlv
bi5pbmplY3RET01Qcm9wZXJ0eUNvbmZpZyk6CisgICAgICAgIChET01Qcm9wZXJ0eS5pc0N1c3Rv
bUF0dHJpYnV0ZSk6CisgICAgICAgICgxMSk6CisgICAgICAgIChzaG91bGRJZ25vcmVWYWx1ZSk6
CisgICAgICAgIChET01Qcm9wZXJ0eU9wZXJhdGlvbnMuY3JlYXRlTWFya3VwRm9ySUQpOgorICAg
ICAgICAoRE9NUHJvcGVydHlPcGVyYXRpb25zLnNldEF0dHJpYnV0ZUZvcklEKToKKyAgICAgICAg
KERPTVByb3BlcnR5T3BlcmF0aW9ucy5jcmVhdGVNYXJrdXBGb3JSb290KToKKyAgICAgICAgKERP
TVByb3BlcnR5T3BlcmF0aW9ucy5zZXRBdHRyaWJ1dGVGb3JSb290KToKKyAgICAgICAgKERPTVBy
b3BlcnR5T3BlcmF0aW9ucy5jcmVhdGVNYXJrdXBGb3JQcm9wZXJ0eSk6CisgICAgICAgIChET01Q
cm9wZXJ0eU9wZXJhdGlvbnMuY3JlYXRlTWFya3VwRm9yQ3VzdG9tQXR0cmlidXRlKToKKyAgICAg
ICAgKERPTVByb3BlcnR5T3BlcmF0aW9ucy5zZXRWYWx1ZUZvclByb3BlcnR5KToKKyAgICAgICAg
KERPTVByb3BlcnR5T3BlcmF0aW9ucy5zZXRWYWx1ZUZvckF0dHJpYnV0ZSk6CisgICAgICAgIChE
T01Qcm9wZXJ0eU9wZXJhdGlvbnMuZGVsZXRlVmFsdWVGb3JBdHRyaWJ1dGUpOgorICAgICAgICAo
RE9NUHJvcGVydHlPcGVyYXRpb25zLmRlbGV0ZVZhbHVlRm9yUHJvcGVydHkpOgorICAgICAgICAo
MTIpOgorICAgICAgICAoRGFuZ2VyLmRhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwKToK
KyAgICAgICAgKDEzKToKKyAgICAgICAgKDE0KToKKyAgICAgICAgKEVudGVyTGVhdmVFdmVudFBs
dWdpbi5leHRyYWN0RXZlbnRzKToKKyAgICAgICAgKDE1KToKKyAgICAgICAgKGV4ZWN1dGVEaXNw
YXRjaGVzQW5kUmVsZWFzZSk6CisgICAgICAgIChleGVjdXRlRGlzcGF0Y2hlc0FuZFJlbGVhc2VT
aW11bGF0ZWQpOgorICAgICAgICAoZXhlY3V0ZURpc3BhdGNoZXNBbmRSZWxlYXNlVG9wTGV2ZWwp
OgorICAgICAgICAoZ2V0RGljdGlvbmFyeUtleSk6CisgICAgICAgIChFdmVudFBsdWdpbkh1Yi5w
dXRMaXN0ZW5lcik6CisgICAgICAgIChFdmVudFBsdWdpbkh1Yi5nZXRMaXN0ZW5lcik6CisgICAg
ICAgIChFdmVudFBsdWdpbkh1Yi5kZWxldGVMaXN0ZW5lcik6CisgICAgICAgIChFdmVudFBsdWdp
bkh1Yi5kZWxldGVBbGxMaXN0ZW5lcnMpOgorICAgICAgICAoRXZlbnRQbHVnaW5IdWIuZXh0cmFj
dEV2ZW50cyk6CisgICAgICAgIChFdmVudFBsdWdpbkh1Yi5lbnF1ZXVlRXZlbnRzKToKKyAgICAg
ICAgKEV2ZW50UGx1Z2luSHViLnByb2Nlc3NFdmVudFF1ZXVlKToKKyAgICAgICAgKEV2ZW50UGx1
Z2luSHViLl9fcHVyZ2UpOgorICAgICAgICAoRXZlbnRQbHVnaW5IdWIuX19nZXRMaXN0ZW5lckJh
bmspOgorICAgICAgICAoMTYpOgorICAgICAgICAocHVibGlzaEV2ZW50Rm9yUGx1Z2luKToKKyAg
ICAgICAgKHB1Ymxpc2hSZWdpc3RyYXRpb25OYW1lKToKKyAgICAgICAgKEV2ZW50UGx1Z2luUmVn
aXN0cnkuaW5qZWN0RXZlbnRQbHVnaW5PcmRlcik6CisgICAgICAgIChFdmVudFBsdWdpblJlZ2lz
dHJ5LmluamVjdEV2ZW50UGx1Z2luc0J5TmFtZSk6CisgICAgICAgIChFdmVudFBsdWdpblJlZ2lz
dHJ5LmdldFBsdWdpbk1vZHVsZUZvckV2ZW50KToKKyAgICAgICAgKEV2ZW50UGx1Z2luUmVnaXN0
cnkuX3Jlc2V0RXZlbnRQbHVnaW5zKToKKyAgICAgICAgKDE3KToKKyAgICAgICAgKGluamVjdGlv
bi5pbmplY3RDb21wb25lbnRUcmVlKToKKyAgICAgICAgKGluamVjdGlvbi5pbmplY3RUcmVlVHJh
dmVyc2FsKToKKyAgICAgICAgKGlzRW5kaXNoKToKKyAgICAgICAgKGlzTW92ZWlzaCk6CisgICAg
ICAgIChpc1N0YXJ0aXNoKToKKyAgICAgICAgKHZhbGlkYXRlRXZlbnREaXNwYXRjaGVzKToKKyAg
ICAgICAgKGV4ZWN1dGVEaXNwYXRjaCk6CisgICAgICAgIChleGVjdXRlRGlzcGF0Y2hlc0luT3Jk
ZXIpOgorICAgICAgICAoZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyU3RvcEF0VHJ1ZUltcGwpOgor
ICAgICAgICAoZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyU3RvcEF0VHJ1ZSk6CisgICAgICAgIChl
eGVjdXRlRGlyZWN0RGlzcGF0Y2gpOgorICAgICAgICAoaGFzRGlzcGF0Y2hlcyk6CisgICAgICAg
IChFdmVudFBsdWdpblV0aWxzLmdldEluc3RhbmNlRnJvbU5vZGUpOgorICAgICAgICAoRXZlbnRQ
bHVnaW5VdGlscy5nZXROb2RlRnJvbUluc3RhbmNlKToKKyAgICAgICAgKEV2ZW50UGx1Z2luVXRp
bHMuaXNBbmNlc3Rvcik6CisgICAgICAgIChFdmVudFBsdWdpblV0aWxzLmdldExvd2VzdENvbW1v
bkFuY2VzdG9yKToKKyAgICAgICAgKEV2ZW50UGx1Z2luVXRpbHMuZ2V0UGFyZW50SW5zdGFuY2Up
OgorICAgICAgICAoRXZlbnRQbHVnaW5VdGlscy50cmF2ZXJzZVR3b1BoYXNlKToKKyAgICAgICAg
KEV2ZW50UGx1Z2luVXRpbHMudHJhdmVyc2VFbnRlckxlYXZlKToKKyAgICAgICAgKDE4KToKKyAg
ICAgICAgKGxpc3RlbmVyQXRQaGFzZSk6CisgICAgICAgIChhY2N1bXVsYXRlRGlyZWN0aW9uYWxE
aXNwYXRjaGVzKToKKyAgICAgICAgKGFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXNTaW5nbGUp
OgorICAgICAgICAoYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlc1NpbmdsZVNraXBUYXJnZXQp
OgorICAgICAgICAoYWNjdW11bGF0ZURpc3BhdGNoZXMpOgorICAgICAgICAoYWNjdW11bGF0ZURp
cmVjdERpc3BhdGNoZXNTaW5nbGUpOgorICAgICAgICAoYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0
Y2hlcyk6CisgICAgICAgIChhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzU2tpcFRhcmdldCk6
CisgICAgICAgIChhY2N1bXVsYXRlRW50ZXJMZWF2ZURpc3BhdGNoZXMpOgorICAgICAgICAoYWNj
dW11bGF0ZURpcmVjdERpc3BhdGNoZXMpOgorICAgICAgICAoMTkpOgorICAgICAgICAoRmFsbGJh
Y2tDb21wb3NpdGlvblN0YXRlKToKKyAgICAgICAgKDIwKToKKyAgICAgICAgKDIxKToKKyAgICAg
ICAgKGVzY2FwZSk6CisgICAgICAgICh1bmVzY2FwZSk6CisgICAgICAgICgyMik6CisgICAgICAg
IChfYXNzZXJ0U2luZ2xlTGluayk6CisgICAgICAgIChfYXNzZXJ0VmFsdWVMaW5rKToKKyAgICAg
ICAgKF9hc3NlcnRDaGVja2VkTGluayk6CisgICAgICAgIChwcm9wVHlwZXMudmFsdWUpOgorICAg
ICAgICAocHJvcFR5cGVzLmNoZWNrZWQpOgorICAgICAgICAoTGlua2VkVmFsdWVVdGlscy5jaGVj
a1Byb3BUeXBlcyk6CisgICAgICAgIChMaW5rZWRWYWx1ZVV0aWxzLmdldFZhbHVlKToKKyAgICAg
ICAgKExpbmtlZFZhbHVlVXRpbHMuZ2V0Q2hlY2tlZCk6CisgICAgICAgIChMaW5rZWRWYWx1ZVV0
aWxzLmV4ZWN1dGVPbkNoYW5nZSk6CisgICAgICAgICgyMyk6CisgICAgICAgIChvbmVBcmd1bWVu
dFBvb2xlcik6CisgICAgICAgICh0d29Bcmd1bWVudFBvb2xlcik6CisgICAgICAgICh0aHJlZUFy
Z3VtZW50UG9vbGVyKToKKyAgICAgICAgKGZvdXJBcmd1bWVudFBvb2xlcik6CisgICAgICAgIChm
aXZlQXJndW1lbnRQb29sZXIpOgorICAgICAgICAoc3RhbmRhcmRSZWxlYXNlcik6CisgICAgICAg
IChhZGRQb29saW5nVG8pOgorICAgICAgICAoMjQpOgorICAgICAgICAoZ2V0TGlzdGVuaW5nRm9y
RG9jdW1lbnQpOgorICAgICAgICAoMjUpOgorICAgICAgICAoMjYpOgorICAgICAgICAoMjcpOgor
ICAgICAgICAoUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudC5pbmplY3Rpb24uaW5qZWN0RW52aXJv
bm1lbnQpOgorICAgICAgICAoMjgpOgorICAgICAgICAoU3RhdGVsZXNzQ29tcG9uZW50KToKKyAg
ICAgICAgKFN0YXRlbGVzc0NvbXBvbmVudC5wcm90b3R5cGUucmVuZGVyKToKKyAgICAgICAgKHdh
cm5JZkludmFsaWRFbGVtZW50KToKKyAgICAgICAgKHNob3VsZENvbnN0cnVjdCk6CisgICAgICAg
IChpc1B1cmVDb21wb25lbnQpOgorICAgICAgICAobWVhc3VyZUxpZmVDeWNsZVBlcmYpOgorICAg
ICAgICAoUmVhY3RDb21wb3NpdGVDb21wb25lbnQuY29uc3RydWN0KToKKyAgICAgICAgKFJlYWN0
Q29tcG9zaXRlQ29tcG9uZW50Lm1vdW50Q29tcG9uZW50KToKKyAgICAgICAgKFJlYWN0Q29tcG9z
aXRlQ29tcG9uZW50Ll9jb25zdHJ1Y3RDb21wb25lbnQpOgorICAgICAgICAoUmVhY3RDb21wb3Np
dGVDb21wb25lbnQuX2NvbnN0cnVjdENvbXBvbmVudFdpdGhvdXRPd25lcik6CisgICAgICAgIChS
ZWFjdENvbXBvc2l0ZUNvbXBvbmVudC5wZXJmb3JtSW5pdGlhbE1vdW50V2l0aEVycm9ySGFuZGxp
bmcpOgorICAgICAgICAoUmVhY3RDb21wb3NpdGVDb21wb25lbnQucGVyZm9ybUluaXRpYWxNb3Vu
dCk6CisgICAgICAgIChSZWFjdENvbXBvc2l0ZUNvbXBvbmVudC5nZXRIb3N0Tm9kZSk6CisgICAg
ICAgIChSZWFjdENvbXBvc2l0ZUNvbXBvbmVudC51bm1vdW50Q29tcG9uZW50KToKKyAgICAgICAg
KFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50Ll9tYXNrQ29udGV4dCk6CisgICAgICAgIChSZWFjdENv
bXBvc2l0ZUNvbXBvbmVudC5fcHJvY2Vzc0NvbnRleHQpOgorICAgICAgICAoUmVhY3RDb21wb3Np
dGVDb21wb25lbnQuX3Byb2Nlc3NDaGlsZENvbnRleHQpOgorICAgICAgICAoUmVhY3RDb21wb3Np
dGVDb21wb25lbnQuX2NoZWNrQ29udGV4dFR5cGVzKToKKyAgICAgICAgKFJlYWN0Q29tcG9zaXRl
Q29tcG9uZW50LnJlY2VpdmVDb21wb25lbnQpOgorICAgICAgICAoUmVhY3RDb21wb3NpdGVDb21w
b25lbnQucGVyZm9ybVVwZGF0ZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKFJlYWN0Q29tcG9zaXRl
Q29tcG9uZW50LnVwZGF0ZUNvbXBvbmVudCk6CisgICAgICAgIChSZWFjdENvbXBvc2l0ZUNvbXBv
bmVudC5fcHJvY2Vzc1BlbmRpbmdTdGF0ZSk6CisgICAgICAgIChSZWFjdENvbXBvc2l0ZUNvbXBv
bmVudC5fcGVyZm9ybUNvbXBvbmVudFVwZGF0ZSk6CisgICAgICAgIChSZWFjdENvbXBvc2l0ZUNv
bXBvbmVudC5fdXBkYXRlUmVuZGVyZWRDb21wb25lbnQpOgorICAgICAgICAoUmVhY3RDb21wb3Np
dGVDb21wb25lbnQuX3JlcGxhY2VOb2RlV2l0aE1hcmt1cCk6CisgICAgICAgIChSZWFjdENvbXBv
c2l0ZUNvbXBvbmVudC5fcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50V2l0aG91dE93bmVyT3JDb250
ZXh0KToKKyAgICAgICAgKFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50Ll9yZW5kZXJWYWxpZGF0ZWRD
b21wb25lbnQpOgorICAgICAgICAoUmVhY3RDb21wb3NpdGVDb21wb25lbnQuYXR0YWNoUmVmKToK
KyAgICAgICAgKFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50LmRldGFjaFJlZik6CisgICAgICAgIChS
ZWFjdENvbXBvc2l0ZUNvbXBvbmVudC5nZXROYW1lKToKKyAgICAgICAgKFJlYWN0Q29tcG9zaXRl
Q29tcG9uZW50LmdldFB1YmxpY0luc3RhbmNlKToKKyAgICAgICAgKDI5KToKKyAgICAgICAgKGdl
dERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bSk6CisgICAgICAgIChmcmllbmRseVN0cmluZ2lmeSk6
CisgICAgICAgIChhc3NlcnRWYWxpZFByb3BzKToKKyAgICAgICAgKGVucXVldWVQdXRMaXN0ZW5l
cik6CisgICAgICAgIChpbnB1dFBvc3RNb3VudCk6CisgICAgICAgICh0ZXh0YXJlYVBvc3RNb3Vu
dCk6CisgICAgICAgIChvcHRpb25Qb3N0TW91bnQpOgorICAgICAgICAoc2V0QW5kVmFsaWRhdGVD
b250ZW50Q2hpbGREZXYpOgorICAgICAgICAodHJhcEJ1YmJsZWRFdmVudHNMb2NhbCk6CisgICAg
ICAgIChwb3N0VXBkYXRlU2VsZWN0V3JhcHBlcik6CisgICAgICAgICh2YWxpZGF0ZURhbmdlcm91
c1RhZyk6CisgICAgICAgIChpc0N1c3RvbUNvbXBvbmVudCk6CisgICAgICAgIChSZWFjdERPTUNv
bXBvbmVudCk6CisgICAgICAgIChSZWFjdERPTUNvbXBvbmVudC5NaXhpbi5tb3VudENvbXBvbmVu
dCk6CisgICAgICAgIChSZWFjdERPTUNvbXBvbmVudC5NaXhpbi5fY3JlYXRlT3BlblRhZ01hcmt1
cEFuZFB1dExpc3RlbmVycyk6CisgICAgICAgIChSZWFjdERPTUNvbXBvbmVudC5NaXhpbi5fY3Jl
YXRlQ29udGVudE1hcmt1cCk6CisgICAgICAgIChSZWFjdERPTUNvbXBvbmVudC5NaXhpbi5fY3Jl
YXRlSW5pdGlhbENoaWxkcmVuKToKKyAgICAgICAgKFJlYWN0RE9NQ29tcG9uZW50Lk1peGluLnJl
Y2VpdmVDb21wb25lbnQpOgorICAgICAgICAoUmVhY3RET01Db21wb25lbnQuTWl4aW4udXBkYXRl
Q29tcG9uZW50KToKKyAgICAgICAgKFJlYWN0RE9NQ29tcG9uZW50Lk1peGluLl91cGRhdGVET01Q
cm9wZXJ0aWVzKToKKyAgICAgICAgKFJlYWN0RE9NQ29tcG9uZW50Lk1peGluLl91cGRhdGVET01D
aGlsZHJlbik6CisgICAgICAgIChSZWFjdERPTUNvbXBvbmVudC5NaXhpbi5nZXRIb3N0Tm9kZSk6
CisgICAgICAgIChSZWFjdERPTUNvbXBvbmVudC5NaXhpbi51bm1vdW50Q29tcG9uZW50KToKKyAg
ICAgICAgKFJlYWN0RE9NQ29tcG9uZW50Lk1peGluLmdldFB1YmxpY0luc3RhbmNlKToKKyAgICAg
ICAgKDMwKToKKyAgICAgICAgKDMxKToKKyAgICAgICAgKGdldFJlbmRlcmVkSG9zdE9yVGV4dEZy
b21Db21wb25lbnQpOgorICAgICAgICAocHJlY2FjaGVOb2RlKToKKyAgICAgICAgKHVuY2FjaGVO
b2RlKToKKyAgICAgICAgKHByZWNhY2hlQ2hpbGROb2Rlcyk6CisgICAgICAgIChnZXRDbG9zZXN0
SW5zdGFuY2VGcm9tTm9kZSk6CisgICAgICAgIChnZXRJbnN0YW5jZUZyb21Ob2RlKToKKyAgICAg
ICAgKGdldE5vZGVGcm9tSW5zdGFuY2UpOgorICAgICAgICAoMzIpOgorICAgICAgICAoUmVhY3RE
T01Db250YWluZXJJbmZvKToKKyAgICAgICAgKDMzKToKKyAgICAgICAgKFJlYWN0RE9NRW1wdHlD
b21wb25lbnQpOgorICAgICAgICAoMzQpOgorICAgICAgICAoUmVhY3RET01JRE9wZXJhdGlvbnMu
ZGFuZ2Vyb3VzbHlQcm9jZXNzQ2hpbGRyZW5VcGRhdGVzKToKKyAgICAgICAgKDM1KToKKyAgICAg
ICAgKGZvcmNlVXBkYXRlSWZNb3VudGVkKToKKyAgICAgICAgKGlzQ29udHJvbGxlZCk6CisgICAg
ICAgIChSZWFjdERPTUlucHV0LmdldEhvc3RQcm9wcyk6CisgICAgICAgIChSZWFjdERPTUlucHV0
Lm1vdW50V3JhcHBlcik6CisgICAgICAgIChSZWFjdERPTUlucHV0LnVwZGF0ZVdyYXBwZXIpOgor
ICAgICAgICAoUmVhY3RET01JbnB1dC5wb3N0TW91bnRXcmFwcGVyKToKKyAgICAgICAgKF9oYW5k
bGVDaGFuZ2UpOgorICAgICAgICAoMzYpOgorICAgICAgICAoZmxhdHRlbkNoaWxkcmVuKToKKyAg
ICAgICAgKFJlYWN0RE9NT3B0aW9uLm1vdW50V3JhcHBlcik6CisgICAgICAgIChSZWFjdERPTU9w
dGlvbi5wb3N0TW91bnRXcmFwcGVyKToKKyAgICAgICAgKFJlYWN0RE9NT3B0aW9uLmdldEhvc3RQ
cm9wcyk6CisgICAgICAgICgzNyk6CisgICAgICAgICh1cGRhdGVPcHRpb25zSWZQZW5kaW5nVXBk
YXRlQW5kTW91bnRlZCk6CisgICAgICAgIChjaGVja1NlbGVjdFByb3BUeXBlcyk6CisgICAgICAg
ICh1cGRhdGVPcHRpb25zKToKKyAgICAgICAgKFJlYWN0RE9NU2VsZWN0LmdldEhvc3RQcm9wcyk6
CisgICAgICAgIChSZWFjdERPTVNlbGVjdC5tb3VudFdyYXBwZXIpOgorICAgICAgICAoUmVhY3RE
T01TZWxlY3QuZ2V0U2VsZWN0VmFsdWVDb250ZXh0KToKKyAgICAgICAgKFJlYWN0RE9NU2VsZWN0
LnBvc3RVcGRhdGVXcmFwcGVyKToKKyAgICAgICAgKDM4KToKKyAgICAgICAgKGlzQ29sbGFwc2Vk
KToKKyAgICAgICAgKGdldElFT2Zmc2V0cyk6CisgICAgICAgIChnZXRNb2Rlcm5PZmZzZXRzKToK
KyAgICAgICAgKHNldElFT2Zmc2V0cyk6CisgICAgICAgIChzZXRNb2Rlcm5PZmZzZXRzKToKKyAg
ICAgICAgKDM5KToKKyAgICAgICAgKDQwKToKKyAgICAgICAgKDQxKToKKyAgICAgICAgKFJlYWN0
RE9NVGV4dENvbXBvbmVudCk6CisgICAgICAgICg0Mik6CisgICAgICAgIChSZWFjdERPTVRleHRh
cmVhLmdldEhvc3RQcm9wcyk6CisgICAgICAgIChSZWFjdERPTVRleHRhcmVhLm1vdW50V3JhcHBl
cik6CisgICAgICAgIChSZWFjdERPTVRleHRhcmVhLnVwZGF0ZVdyYXBwZXIpOgorICAgICAgICAo
UmVhY3RET01UZXh0YXJlYS5wb3N0TW91bnRXcmFwcGVyKToKKyAgICAgICAgKDQzKToKKyAgICAg
ICAgKGdldExvd2VzdENvbW1vbkFuY2VzdG9yKToKKyAgICAgICAgKGlzQW5jZXN0b3IpOgorICAg
ICAgICAoZ2V0UGFyZW50SW5zdGFuY2UpOgorICAgICAgICAodHJhdmVyc2VUd29QaGFzZSk6Cisg
ICAgICAgICh0cmF2ZXJzZUVudGVyTGVhdmUpOgorICAgICAgICAoNDQpOgorICAgICAgICAoZW1p
dEV2ZW50KToKKyAgICAgICAgKGNsZWFySGlzdG9yeSk6CisgICAgICAgIChnZXRUcmVlU25hcHNo
b3QpOgorICAgICAgICAoYmVnaW5MaWZlQ3ljbGVUaW1lcik6CisgICAgICAgIChlbmRMaWZlQ3lj
bGVUaW1lcik6CisgICAgICAgIChwYXVzZUN1cnJlbnRMaWZlQ3ljbGVUaW1lcik6CisgICAgICAg
IChyZXN1bWVDdXJyZW50TGlmZUN5Y2xlVGltZXIpOgorICAgICAgICAoc2hvdWxkTWFyayk6Cisg
ICAgICAgIChtYXJrQmVnaW4pOgorICAgICAgICAobWFya0VuZCk6CisgICAgICAgIChSZWFjdERl
YnVnVG9vbC5hZGRIb29rKToKKyAgICAgICAgKFJlYWN0RGVidWdUb29sLnJlbW92ZUhvb2spOgor
ICAgICAgICAoUmVhY3REZWJ1Z1Rvb2wuaXNQcm9maWxpbmcpOgorICAgICAgICAoUmVhY3REZWJ1
Z1Rvb2wuYmVnaW5Qcm9maWxpbmcpOgorICAgICAgICAoUmVhY3REZWJ1Z1Rvb2wuZW5kUHJvZmls
aW5nKToKKyAgICAgICAgKFJlYWN0RGVidWdUb29sLmdldEZsdXNoSGlzdG9yeSk6CisgICAgICAg
IChSZWFjdERlYnVnVG9vbC5vbkJlZ2luRmx1c2gpOgorICAgICAgICAoUmVhY3REZWJ1Z1Rvb2wu
b25FbmRGbHVzaCk6CisgICAgICAgIChSZWFjdERlYnVnVG9vbC5vbkJlZ2luTGlmZUN5Y2xlVGlt
ZXIpOgorICAgICAgICAoUmVhY3REZWJ1Z1Rvb2wub25FbmRMaWZlQ3ljbGVUaW1lcik6CisgICAg
ICAgIChSZWFjdERlYnVnVG9vbC5vbkJlZ2luUHJvY2Vzc2luZ0NoaWxkQ29udGV4dCk6CisgICAg
ICAgIChSZWFjdERlYnVnVG9vbC5vbkVuZFByb2Nlc3NpbmdDaGlsZENvbnRleHQpOgorICAgICAg
ICAoUmVhY3REZWJ1Z1Rvb2wub25Ib3N0T3BlcmF0aW9uKToKKyAgICAgICAgKFJlYWN0RGVidWdU
b29sLm9uU2V0U3RhdGUpOgorICAgICAgICAoUmVhY3REZWJ1Z1Rvb2wub25TZXRDaGlsZHJlbik6
CisgICAgICAgIChSZWFjdERlYnVnVG9vbC5vbkJlZm9yZU1vdW50Q29tcG9uZW50KToKKyAgICAg
ICAgKFJlYWN0RGVidWdUb29sLm9uTW91bnRDb21wb25lbnQpOgorICAgICAgICAoUmVhY3REZWJ1
Z1Rvb2wub25CZWZvcmVVcGRhdGVDb21wb25lbnQpOgorICAgICAgICAoUmVhY3REZWJ1Z1Rvb2wu
b25VcGRhdGVDb21wb25lbnQpOgorICAgICAgICAoUmVhY3REZWJ1Z1Rvb2wub25CZWZvcmVVbm1v
dW50Q29tcG9uZW50KToKKyAgICAgICAgKFJlYWN0RGVidWdUb29sLm9uVW5tb3VudENvbXBvbmVu
dCk6CisgICAgICAgIChSZWFjdERlYnVnVG9vbC5vblRlc3RFdmVudCk6CisgICAgICAgICg0NSk6
CisgICAgICAgIChSRVNFVF9CQVRDSEVEX1VQREFURVMuY2xvc2UpOgorICAgICAgICAoUmVhY3RE
ZWZhdWx0QmF0Y2hpbmdTdHJhdGVneVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFJlYWN0RGVmYXVs
dEJhdGNoaW5nU3RyYXRlZ3kuYmF0Y2hlZFVwZGF0ZXMpOgorICAgICAgICAoNDYpOgorICAgICAg
ICAoaW5qZWN0KToKKyAgICAgICAgKDQ3KToKKyAgICAgICAgKDQ4KToKKyAgICAgICAgKFJlYWN0
RW1wdHlDb21wb25lbnRJbmplY3Rpb24uaW5qZWN0RW1wdHlDb21wb25lbnRGYWN0b3J5KToKKyAg
ICAgICAgKFJlYWN0RW1wdHlDb21wb25lbnQuY3JlYXRlKToKKyAgICAgICAgKDQ5KToKKyAgICAg
ICAgKGludm9rZUd1YXJkZWRDYWxsYmFjayk6CisgICAgICAgIChSZWFjdEVycm9yVXRpbHMucmV0
aHJvd0NhdWdodEVycm9yKToKKyAgICAgICAgKFJlYWN0RXJyb3JVdGlscy5pbnZva2VHdWFyZGVk
Q2FsbGJhY2spOgorICAgICAgICAoNTApOgorICAgICAgICAocnVuRXZlbnRRdWV1ZUluQmF0Y2gp
OgorICAgICAgICAoUmVhY3RFdmVudEVtaXR0ZXJNaXhpbi5oYW5kbGVUb3BMZXZlbCk6CisgICAg
ICAgICg1MSk6CisgICAgICAgIChmaW5kUGFyZW50KToKKyAgICAgICAgKFRvcExldmVsQ2FsbGJh
Y2tCb29rS2VlcGluZyk6CisgICAgICAgIChoYW5kbGVUb3BMZXZlbEltcGwpOgorICAgICAgICAo
c2Nyb2xsVmFsdWVNb25pdG9yKToKKyAgICAgICAgKFJlYWN0RXZlbnRMaXN0ZW5lci5zZXRIYW5k
bGVUb3BMZXZlbCk6CisgICAgICAgIChSZWFjdEV2ZW50TGlzdGVuZXIuc2V0RW5hYmxlZCk6Cisg
ICAgICAgIChSZWFjdEV2ZW50TGlzdGVuZXIuaXNFbmFibGVkKToKKyAgICAgICAgKFJlYWN0RXZl
bnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KToKKyAgICAgICAgKFJlYWN0RXZlbnRMaXN0ZW5l
ci50cmFwQ2FwdHVyZWRFdmVudCk6CisgICAgICAgIChSZWFjdEV2ZW50TGlzdGVuZXIubW9uaXRv
clNjcm9sbFZhbHVlKToKKyAgICAgICAgKFJlYWN0RXZlbnRMaXN0ZW5lci5kaXNwYXRjaEV2ZW50
KToKKyAgICAgICAgKDUyKToKKyAgICAgICAgKDUzKToKKyAgICAgICAgKFJlYWN0SG9zdENvbXBv
bmVudEluamVjdGlvbi5pbmplY3RHZW5lcmljQ29tcG9uZW50Q2xhc3MpOgorICAgICAgICAoUmVh
Y3RIb3N0Q29tcG9uZW50SW5qZWN0aW9uLmluamVjdFRleHRDb21wb25lbnRDbGFzcyk6CisgICAg
ICAgIChSZWFjdEhvc3RDb21wb25lbnRJbmplY3Rpb24uaW5qZWN0Q29tcG9uZW50Q2xhc3Nlcyk6
CisgICAgICAgIChjcmVhdGVJbnRlcm5hbENvbXBvbmVudCk6CisgICAgICAgIChjcmVhdGVJbnN0
YW5jZUZvclRleHQpOgorICAgICAgICAoaXNUZXh0Q29tcG9uZW50KToKKyAgICAgICAgKDU0KToK
KyAgICAgICAgKFJlYWN0SG9zdE9wZXJhdGlvbkhpc3RvcnlIb29rLm9uSG9zdE9wZXJhdGlvbik6
CisgICAgICAgIChSZWFjdEhvc3RPcGVyYXRpb25IaXN0b3J5SG9vay5jbGVhckhpc3RvcnkpOgor
ICAgICAgICAoUmVhY3RIb3N0T3BlcmF0aW9uSGlzdG9yeUhvb2suZ2V0SGlzdG9yeSk6CisgICAg
ICAgICg1NSk6CisgICAgICAgICg1Nik6CisgICAgICAgIChpc0luRG9jdW1lbnQpOgorICAgICAg
ICAoUmVhY3RJbnB1dFNlbGVjdGlvbi5oYXNTZWxlY3Rpb25DYXBhYmlsaXRpZXMpOgorICAgICAg
ICAoUmVhY3RJbnB1dFNlbGVjdGlvbi5nZXRTZWxlY3Rpb25JbmZvcm1hdGlvbik6CisgICAgICAg
IChSZWFjdElucHV0U2VsZWN0aW9uLnJlc3RvcmVTZWxlY3Rpb24pOgorICAgICAgICAoUmVhY3RJ
bnB1dFNlbGVjdGlvbi5nZXRTZWxlY3Rpb24pOgorICAgICAgICAoUmVhY3RJbnB1dFNlbGVjdGlv
bi5zZXRTZWxlY3Rpb24pOgorICAgICAgICAoNTcpOgorICAgICAgICAoUmVhY3RJbnN0YW5jZU1h
cC5yZW1vdmUpOgorICAgICAgICAoUmVhY3RJbnN0YW5jZU1hcC5oYXMpOgorICAgICAgICAoNTkp
OgorICAgICAgICAod2FybkludmFsaWRTZXRTdGF0ZSk6CisgICAgICAgIChSZWFjdEludmFsaWRT
ZXRTdGF0ZVdhcm5pbmdIb29rLm9uQmVnaW5Qcm9jZXNzaW5nQ2hpbGRDb250ZXh0KToKKyAgICAg
ICAgKFJlYWN0SW52YWxpZFNldFN0YXRlV2FybmluZ0hvb2sub25FbmRQcm9jZXNzaW5nQ2hpbGRD
b250ZXh0KToKKyAgICAgICAgKFJlYWN0SW52YWxpZFNldFN0YXRlV2FybmluZ0hvb2sub25TZXRT
dGF0ZSk6CisgICAgICAgICg2MCk6CisgICAgICAgIChSZWFjdE1hcmt1cENoZWNrc3VtLmFkZENo
ZWNrc3VtVG9NYXJrdXApOgorICAgICAgICAoUmVhY3RNYXJrdXBDaGVja3N1bS5jYW5SZXVzZU1h
cmt1cCk6CisgICAgICAgICg2MSk6CisgICAgICAgIChtYWtlSW5zZXJ0TWFya3VwKToKKyAgICAg
ICAgKG1ha2VNb3ZlKToKKyAgICAgICAgKG1ha2VSZW1vdmUpOgorICAgICAgICAobWFrZVNldE1h
cmt1cCk6CisgICAgICAgIChtYWtlVGV4dENvbnRlbnQpOgorICAgICAgICAoZW5xdWV1ZSk6Cisg
ICAgICAgIChwcm9jZXNzUXVldWUpOgorICAgICAgICAoZ2V0RGVidWdJRCk6CisgICAgICAgIChz
ZXRDaGlsZHJlbkZvckluc3RydW1lbnRhdGlvbik6CisgICAgICAgIChSZWFjdE11bHRpQ2hpbGQu
TWl4aW4uX3JlY29uY2lsZXJJbnN0YW50aWF0ZUNoaWxkcmVuKToKKyAgICAgICAgKFJlYWN0TXVs
dGlDaGlsZC5NaXhpbi5fcmVjb25jaWxlclVwZGF0ZUNoaWxkcmVuKToKKyAgICAgICAgKFJlYWN0
TXVsdGlDaGlsZC5NaXhpbi5tb3VudENoaWxkcmVuKToKKyAgICAgICAgKFJlYWN0TXVsdGlDaGls
ZC5NaXhpbi51cGRhdGVUZXh0Q29udGVudCk6CisgICAgICAgIChSZWFjdE11bHRpQ2hpbGQuTWl4
aW4udXBkYXRlTWFya3VwKToKKyAgICAgICAgKFJlYWN0TXVsdGlDaGlsZC5NaXhpbi51cGRhdGVD
aGlsZHJlbik6CisgICAgICAgIChSZWFjdE11bHRpQ2hpbGQuTWl4aW4uX3VwZGF0ZUNoaWxkcmVu
KToKKyAgICAgICAgKFJlYWN0TXVsdGlDaGlsZC5NaXhpbi51bm1vdW50Q2hpbGRyZW4pOgorICAg
ICAgICAoUmVhY3RNdWx0aUNoaWxkLk1peGluLm1vdmVDaGlsZCk6CisgICAgICAgIChSZWFjdE11
bHRpQ2hpbGQuTWl4aW4uY3JlYXRlQ2hpbGQpOgorICAgICAgICAoUmVhY3RNdWx0aUNoaWxkLk1p
eGluLnJlbW92ZUNoaWxkKToKKyAgICAgICAgKFJlYWN0TXVsdGlDaGlsZC5NaXhpbi5fbW91bnRD
aGlsZEF0SW5kZXgpOgorICAgICAgICAoUmVhY3RNdWx0aUNoaWxkLk1peGluLl91bm1vdW50Q2hp
bGQpOgorICAgICAgICAoNjIpOgorICAgICAgICAoUmVhY3ROb2RlVHlwZXMuZ2V0VHlwZSk6Cisg
ICAgICAgICg2Myk6CisgICAgICAgIChpc1ZhbGlkT3duZXIpOgorICAgICAgICAoUmVhY3RPd25l
ci5hZGRDb21wb25lbnRBc1JlZlRvKToKKyAgICAgICAgKFJlYWN0T3duZXIucmVtb3ZlQ29tcG9u
ZW50QXNSZWZGcm9tKToKKyAgICAgICAgKDY0KToKKyAgICAgICAgKDY1KToKKyAgICAgICAgKDY2
KToKKyAgICAgICAgKEVWRU5UX1NVUFBSRVNTSU9OLmluaXRpYWxpemUpOgorICAgICAgICAoRVZF
TlRfU1VQUFJFU1NJT04uY2xvc2UpOgorICAgICAgICAoT05fRE9NX1JFQURZX1FVRVVFSU5HLmlu
aXRpYWxpemUpOgorICAgICAgICAoT05fRE9NX1JFQURZX1FVRVVFSU5HLmNsb3NlKToKKyAgICAg
ICAgKE1peGluLmdldFRyYW5zYWN0aW9uV3JhcHBlcnMpOgorICAgICAgICAoTWl4aW4uZ2V0UmVh
Y3RNb3VudFJlYWR5KToKKyAgICAgICAgKE1peGluLmdldFVwZGF0ZVF1ZXVlKToKKyAgICAgICAg
KE1peGluLmNoZWNrcG9pbnQpOgorICAgICAgICAoTWl4aW4ucm9sbGJhY2spOgorICAgICAgICAo
TWl4aW4uZGVzdHJ1Y3Rvcik6CisgICAgICAgICg2Nyk6CisgICAgICAgIChhdHRhY2hSZWZzKToK
KyAgICAgICAgKFJlYWN0UmVjb25jaWxlci5tb3VudENvbXBvbmVudCk6CisgICAgICAgIChSZWFj
dFJlY29uY2lsZXIuZ2V0SG9zdE5vZGUpOgorICAgICAgICAoUmVhY3RSZWNvbmNpbGVyLnVubW91
bnRDb21wb25lbnQpOgorICAgICAgICAoUmVhY3RSZWNvbmNpbGVyLnJlY2VpdmVDb21wb25lbnQp
OgorICAgICAgICAoUmVhY3RSZWNvbmNpbGVyLnBlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeSk6Cisg
ICAgICAgICg2OCk6CisgICAgICAgIChkZXRhY2hSZWYpOgorICAgICAgICAoUmVhY3RSZWYuYXR0
YWNoUmVmcyk6CisgICAgICAgIChSZWFjdFJlZi5zaG91bGRVcGRhdGVSZWZzKToKKyAgICAgICAg
KFJlYWN0UmVmLmRldGFjaFJlZnMpOgorICAgICAgICAoNjkpOgorICAgICAgICAoUmVhY3RTZXJ2
ZXJCYXRjaGluZ1N0cmF0ZWd5LmJhdGNoZWRVcGRhdGVzKToKKyAgICAgICAgKDcwKToKKyAgICAg
ICAgKHJlbmRlclRvU3RyaW5nSW1wbCk6CisgICAgICAgIChyZW5kZXJUb1N0cmluZyk6CisgICAg
ICAgIChyZW5kZXJUb1N0YXRpY01hcmt1cCk6CisgICAgICAgICg3MSk6CisgICAgICAgIChub29w
Q2FsbGJhY2tRdWV1ZS5lbnF1ZXVlKToKKyAgICAgICAgKDcyKToKKyAgICAgICAgKHdhcm5Ob29w
KToKKyAgICAgICAgKFJlYWN0U2VydmVyVXBkYXRlUXVldWUucHJvdG90eXBlLmlzTW91bnRlZCk6
CisgICAgICAgIChSZWFjdFNlcnZlclVwZGF0ZVF1ZXVlLnByb3RvdHlwZS5lbnF1ZXVlQ2FsbGJh
Y2spOgorICAgICAgICAoUmVhY3RTZXJ2ZXJVcGRhdGVRdWV1ZS5wcm90b3R5cGUuZW5xdWV1ZUZv
cmNlVXBkYXRlKToKKyAgICAgICAgKFJlYWN0U2VydmVyVXBkYXRlUXVldWUucHJvdG90eXBlLmVu
cXVldWVSZXBsYWNlU3RhdGUpOgorICAgICAgICAoUmVhY3RTZXJ2ZXJVcGRhdGVRdWV1ZS5wcm90
b3R5cGUuZW5xdWV1ZVNldFN0YXRlKToKKyAgICAgICAgKFJlYWN0U2VydmVyVXBkYXRlUXVldWUp
OgorICAgICAgICAoNzMpOgorICAgICAgICAoZW5xdWV1ZVVwZGF0ZSk6CisgICAgICAgIChmb3Jt
YXRVbmV4cGVjdGVkQXJndW1lbnQpOgorICAgICAgICAoZ2V0SW50ZXJuYWxJbnN0YW5jZVJlYWR5
Rm9yVXBkYXRlKToKKyAgICAgICAgKFJlYWN0VXBkYXRlUXVldWUuaXNNb3VudGVkKToKKyAgICAg
ICAgKFJlYWN0VXBkYXRlUXVldWUuZW5xdWV1ZUNhbGxiYWNrKToKKyAgICAgICAgKFJlYWN0VXBk
YXRlUXVldWUuZW5xdWV1ZUNhbGxiYWNrSW50ZXJuYWwpOgorICAgICAgICAoUmVhY3RVcGRhdGVR
dWV1ZS5lbnF1ZXVlRm9yY2VVcGRhdGUpOgorICAgICAgICAoUmVhY3RVcGRhdGVRdWV1ZS5lbnF1
ZXVlUmVwbGFjZVN0YXRlKToKKyAgICAgICAgKFJlYWN0VXBkYXRlUXVldWUuZW5xdWV1ZVNldFN0
YXRlKToKKyAgICAgICAgKFJlYWN0VXBkYXRlUXVldWUuZW5xdWV1ZUVsZW1lbnRJbnRlcm5hbCk6
CisgICAgICAgIChSZWFjdFVwZGF0ZVF1ZXVlLnZhbGlkYXRlQ2FsbGJhY2spOgorICAgICAgICAo
NzQpOgorICAgICAgICAoZW5zdXJlSW5qZWN0ZWQpOgorICAgICAgICAoTkVTVEVEX1VQREFURVMu
aW5pdGlhbGl6ZSk6CisgICAgICAgIChORVNURURfVVBEQVRFUy5jbG9zZSk6CisgICAgICAgIChV
UERBVEVfUVVFVUVJTkcuaW5pdGlhbGl6ZSk6CisgICAgICAgIChVUERBVEVfUVVFVUVJTkcuY2xv
c2UpOgorICAgICAgICAoUmVhY3RVcGRhdGVzRmx1c2hUcmFuc2FjdGlvbik6CisgICAgICAgIChi
YXRjaGVkVXBkYXRlcyk6CisgICAgICAgIChtb3VudE9yZGVyQ29tcGFyYXRvcik6CisgICAgICAg
IChydW5CYXRjaGVkVXBkYXRlcyk6CisgICAgICAgIChmbHVzaEJhdGNoZWRVcGRhdGVzKToKKyAg
ICAgICAgKGFzYXApOgorICAgICAgICAoUmVhY3RVcGRhdGVzSW5qZWN0aW9uLmluamVjdFJlY29u
Y2lsZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFJlYWN0VXBkYXRlc0luamVjdGlvbi5pbmplY3RC
YXRjaGluZ1N0cmF0ZWd5KToKKyAgICAgICAgKDc1KToKKyAgICAgICAgKDc2KToKKyAgICAgICAg
KDc3KToKKyAgICAgICAgKGdldFNlbGVjdGlvbik6CisgICAgICAgIChjb25zdHJ1Y3RTZWxlY3RF
dmVudCk6CisgICAgICAgIChTZWxlY3RFdmVudFBsdWdpbi5leHRyYWN0RXZlbnRzKToKKyAgICAg
ICAgKFNlbGVjdEV2ZW50UGx1Z2luLmRpZFB1dExpc3RlbmVyKToKKyAgICAgICAgKDc4KToKKyAg
ICAgICAgKGlzSW50ZXJhY3RpdmUpOgorICAgICAgICAoc2hvdWxkUHJldmVudE1vdXNlRXZlbnQp
OgorICAgICAgICAoU2ltcGxlRXZlbnRQbHVnaW4uZXh0cmFjdEV2ZW50cyk6CisgICAgICAgIChT
aW1wbGVFdmVudFBsdWdpbi5kaWRQdXRMaXN0ZW5lcik6CisgICAgICAgIChTaW1wbGVFdmVudFBs
dWdpbi53aWxsRGVsZXRlTGlzdGVuZXIpOgorICAgICAgICAoNzkpOgorICAgICAgICAoU3ludGhl
dGljQW5pbWF0aW9uRXZlbnQpOgorICAgICAgICAoODApOgorICAgICAgICAoQ2xpcGJvYXJkRXZl
bnRJbnRlcmZhY2UuY2xpcGJvYXJkRGF0YSk6CisgICAgICAgIChTeW50aGV0aWNDbGlwYm9hcmRF
dmVudCk6CisgICAgICAgICg4MSk6CisgICAgICAgIChTeW50aGV0aWNDb21wb3NpdGlvbkV2ZW50
KToKKyAgICAgICAgKDgyKToKKyAgICAgICAgKFN5bnRoZXRpY0RyYWdFdmVudCk6CisgICAgICAg
ICg4Myk6CisgICAgICAgIChFdmVudEludGVyZmFjZS50aW1lU3RhbXApOgorICAgICAgICAoU3lu
dGhldGljRXZlbnQpOgorICAgICAgICAoRSk6CisgICAgICAgIChzZXQgU3ludGhldGljRXZlbnQu
YXVnbWVudENsYXNzKToKKyAgICAgICAgKHdhcm4pOgorICAgICAgICAoU3ludGhldGljRm9jdXNF
dmVudCk6CisgICAgICAgICg4NSk6CisgICAgICAgIChTeW50aGV0aWNJbnB1dEV2ZW50KToKKyAg
ICAgICAgKDg2KToKKyAgICAgICAgKEtleWJvYXJkRXZlbnRJbnRlcmZhY2UuY2hhckNvZGUpOgor
ICAgICAgICAoS2V5Ym9hcmRFdmVudEludGVyZmFjZS5rZXlDb2RlKToKKyAgICAgICAgKEtleWJv
YXJkRXZlbnRJbnRlcmZhY2UpOgorICAgICAgICAoU3ludGhldGljS2V5Ym9hcmRFdmVudCk6Cisg
ICAgICAgICg4Nyk6CisgICAgICAgIChNb3VzZUV2ZW50SW50ZXJmYWNlLmJ1dHRvbik6CisgICAg
ICAgIChNb3VzZUV2ZW50SW50ZXJmYWNlLnJlbGF0ZWRUYXJnZXQpOgorICAgICAgICAoTW91c2VF
dmVudEludGVyZmFjZS5wYWdlWCk6CisgICAgICAgIChNb3VzZUV2ZW50SW50ZXJmYWNlLnBhZ2VZ
KToKKyAgICAgICAgKFN5bnRoZXRpY01vdXNlRXZlbnQpOgorICAgICAgICAoODgpOgorICAgICAg
ICAoU3ludGhldGljVG91Y2hFdmVudCk6CisgICAgICAgICg4OSk6CisgICAgICAgIChTeW50aGV0
aWNUcmFuc2l0aW9uRXZlbnQpOgorICAgICAgICAoOTApOgorICAgICAgICAoVUlFdmVudEludGVy
ZmFjZS52aWV3KToKKyAgICAgICAgKFVJRXZlbnRJbnRlcmZhY2UuZGV0YWlsKToKKyAgICAgICAg
KFN5bnRoZXRpY1VJRXZlbnQpOgorICAgICAgICAoOTEpOgorICAgICAgICAoV2hlZWxFdmVudElu
dGVyZmFjZS5kZWx0YVgpOgorICAgICAgICAoV2hlZWxFdmVudEludGVyZmFjZS5kZWx0YVkpOgor
ICAgICAgICAoU3ludGhldGljV2hlZWxFdmVudCk6CisgICAgICAgICg5Mik6CisgICAgICAgIChU
cmFuc2FjdGlvbkltcGwucmVpbml0aWFsaXplVHJhbnNhY3Rpb24pOgorICAgICAgICAoVHJhbnNh
Y3Rpb25JbXBsLmlzSW5UcmFuc2FjdGlvbik6CisgICAgICAgIChUcmFuc2FjdGlvbkltcGwucGVy
Zm9ybSk6CisgICAgICAgIChUcmFuc2FjdGlvbkltcGwuaW5pdGlhbGl6ZUFsbCk6CisgICAgICAg
IChUcmFuc2FjdGlvbkltcGwuY2xvc2VBbGwpOgorICAgICAgICAoOTMpOgorICAgICAgICAoVmll
d3BvcnRNZXRyaWNzLnJlZnJlc2hTY3JvbGxWYWx1ZXMpOgorICAgICAgICAoOTQpOgorICAgICAg
ICAoYWNjdW11bGF0ZUludG8pOgorICAgICAgICAoOTUpOgorICAgICAgICAoYWRsZXIzMik6Cisg
ICAgICAgICg5Nik6CisgICAgICAgICg5Nyk6CisgICAgICAgIChjcmVhdGVNaWNyb3NvZnRVbnNh
ZmVMb2NhbEZ1bmN0aW9uKToKKyAgICAgICAgKDk4KToKKyAgICAgICAgKDk5KToKKyAgICAgICAg
KG1hdGNoSHRtbFJlZ0V4cCk6CisgICAgICAgIChlc2NhcGVUZXh0Q29udGVudEZvckJyb3dzZXIp
OgorICAgICAgICAoMTAwKToKKyAgICAgICAgKDEwMSk6CisgICAgICAgIChmb3JFYWNoQWNjdW11
bGF0ZWQpOgorICAgICAgICAoMTAyKToKKyAgICAgICAgKGdldEV2ZW50Q2hhckNvZGUpOgorICAg
ICAgICAoMTAzKToKKyAgICAgICAgKGdldEV2ZW50S2V5KToKKyAgICAgICAgKDEwNCk6CisgICAg
ICAgIChtb2RpZmllclN0YXRlR2V0dGVyKToKKyAgICAgICAgKGdldEV2ZW50TW9kaWZpZXJTdGF0
ZSk6CisgICAgICAgICgxMDUpOgorICAgICAgICAoZ2V0RXZlbnRUYXJnZXQpOgorICAgICAgICAo
MTA2KToKKyAgICAgICAgKGdldEl0ZXJhdG9yRm4pOgorICAgICAgICAoMTA3KToKKyAgICAgICAg
KGdldE5leHREZWJ1Z0lEKToKKyAgICAgICAgKDEwOCk6CisgICAgICAgIChnZXRMZWFmTm9kZSk6
CisgICAgICAgIChnZXRTaWJsaW5nTm9kZSk6CisgICAgICAgIChnZXROb2RlRm9yQ2hhcmFjdGVy
T2Zmc2V0KToKKyAgICAgICAgKDEwOSk6CisgICAgICAgIChnZXRUZXh0Q29udGVudEFjY2Vzc29y
KToKKyAgICAgICAgKDExMCk6CisgICAgICAgIChtYWtlUHJlZml4TWFwKToKKyAgICAgICAgKGdl
dFZlbmRvclByZWZpeGVkRXZlbnROYW1lKToKKyAgICAgICAgKDExMSk6CisgICAgICAgIChSZWFj
dENvbXBvc2l0ZUNvbXBvbmVudFdyYXBwZXIpOgorICAgICAgICAoaXNJbnRlcm5hbENvbXBvbmVu
dFR5cGUpOgorICAgICAgICAoaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudCk6CisgICAgICAgICgx
MTIpOgorICAgICAgICAoaXNFdmVudFN1cHBvcnRlZCk6CisgICAgICAgICgxMTMpOgorICAgICAg
ICAoaXNUZXh0SW5wdXRFbGVtZW50KToKKyAgICAgICAgKDExNCk6CisgICAgICAgIChxdW90ZUF0
dHJpYnV0ZVZhbHVlRm9yQnJvd3Nlcik6CisgICAgICAgICgxMTUpOgorICAgICAgICAocmVhY3RQ
cm9kSW52YXJpYW50KToKKyAgICAgICAgKDExNik6CisgICAgICAgIChzZXRJbm5lckhUTUwpOgor
ICAgICAgICAoMTE3KToKKyAgICAgICAgKHNldFRleHRDb250ZW50KToKKyAgICAgICAgKDExOCk6
CisgICAgICAgIChzaG91bGRVcGRhdGVSZWFjdENvbXBvbmVudCk6CisgICAgICAgICgxMTkpOgor
ICAgICAgICAoZ2V0Q29tcG9uZW50S2V5KToKKyAgICAgICAgKHRyYXZlcnNlQWxsQ2hpbGRyZW5J
bXBsKToKKyAgICAgICAgKHRyYXZlcnNlQWxsQ2hpbGRyZW4pOgorICAgICAgICAoMTIwKToKKyAg
ICAgICAgKHVwZGF0ZWRBbmNlc3RvckluZm8pOgorICAgICAgICAoaXNUYWdWYWxpZFdpdGhQYXJl
bnQpOgorICAgICAgICAoZmluZEludmFsaWRBbmNlc3RvckZvclRhZyk6CisgICAgICAgIChmaW5k
T3duZXJTdGFjayk6CisgICAgICAgICh2YWxpZGF0ZURPTU5lc3RpbmcpOgorICAgICAgICAodmFs
aWRhdGVET01OZXN0aW5nLmlzVGFnVmFsaWRJbkNvbnRleHQpOgorICAgICAgICAoMTIxKToKKyAg
ICAgICAgKDEyMik6CisgICAgICAgICgxMjMpOgorICAgICAgICAoMTI0KToKKyAgICAgICAgKEV2
ZW50TGlzdGVuZXIucmV0dXJuLnJlbW92ZSk6CisgICAgICAgIChFdmVudExpc3RlbmVyLmVsc2Uu
cmV0dXJuLnJlbW92ZSk6CisgICAgICAgIChFdmVudExpc3RlbmVyLmxpc3Rlbik6CisgICAgICAg
IChFdmVudExpc3RlbmVyLmNhcHR1cmUpOgorICAgICAgICAoRXZlbnRMaXN0ZW5lci5yZWdpc3Rl
ckRlZmF1bHQpOgorICAgICAgICAoMTI1KToKKyAgICAgICAgKDEyNik6CisgICAgICAgIChjYW1l
bGl6ZSk6CisgICAgICAgICgxMjcpOgorICAgICAgICAoY2FtZWxpemVTdHlsZU5hbWUpOgorICAg
ICAgICAoMTI4KToKKyAgICAgICAgKGNvbnRhaW5zTm9kZSk6CisgICAgICAgICgxMjkpOgorICAg
ICAgICAodG9BcnJheSk6CisgICAgICAgIChoYXNBcnJheU5hdHVyZSk6CisgICAgICAgICgxMzAp
OgorICAgICAgICAoZ2V0Tm9kZU5hbWUpOgorICAgICAgICAoY3JlYXRlTm9kZXNGcm9tTWFya3Vw
KToKKyAgICAgICAgKDEzMSk6CisgICAgICAgIChtYWtlRW1wdHlGdW5jdGlvbik6CisgICAgICAg
IChlbXB0eUZ1bmN0aW9uKToKKyAgICAgICAgKGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNUaGlz
KToKKyAgICAgICAgKGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNBcmd1bWVudCk6CisgICAgICAg
ICgxMzIpOgorICAgICAgICAoMTMzKToKKyAgICAgICAgKGZvY3VzTm9kZSk6CisgICAgICAgICgx
MzQpOgorICAgICAgICAoZ2V0QWN0aXZlRWxlbWVudCk6CisgICAgICAgICgxMzUpOgorICAgICAg
ICAoMTM2KToKKyAgICAgICAgKGdldFVuYm91bmRlZFNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAg
KDEzNyk6CisgICAgICAgIChoeXBoZW5hdGUpOgorICAgICAgICAoMTM4KToKKyAgICAgICAgKGh5
cGhlbmF0ZVN0eWxlTmFtZSk6CisgICAgICAgICgxMzkpOgorICAgICAgICAoaW52YXJpYW50KToK
KyAgICAgICAgKDE0MCk6CisgICAgICAgIChpc05vZGUpOgorICAgICAgICAoMTQxKToKKyAgICAg
ICAgKGlzVGV4dE5vZGUpOgorICAgICAgICAoMTQyKToKKyAgICAgICAgKG1lbW9pemVTdHJpbmdP
bmx5KToKKyAgICAgICAgKDE0Myk6CisgICAgICAgICgxNDQpOgorICAgICAgICAocGVyZm9ybWFu
Y2VOb3cpOgorICAgICAgICAoZWxzZS5wZXJmb3JtYW5jZU5vdyk6CisgICAgICAgICgxNDUpOgor
ICAgICAgICAoaXMpOgorICAgICAgICAoc2hhbGxvd0VxdWFsKToKKyAgICAgICAgKDE0Nik6Cisg
ICAgICAgICgxNDcpOgorICAgICAgICAodG9PYmplY3QpOgorICAgICAgICAoc2hvdWxkVXNlTmF0
aXZlKToKKyAgICAgICAgKG1vZHVsZS5leHBvcnRzLnNob3VsZFVzZU5hdGl2ZS5PYmplY3QuYXNz
aWduKToKKyAgICAgICAgKDE0OCk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20v
ZGlzdC9yZWFjdC1kb20tc2VydmVyLm1pbi5qczogQWRkZWQuCisgICAgICAgIChvKToKKyAgICAg
ICAgKHJldHVybi5lKToKKyAgICAgICAgKDEpOgorICAgICAgICAoaS5mb2N1c0RPTUNvbXBvbmVu
dCk6CisgICAgICAgICgyKToKKyAgICAgICAgKHIpOgorICAgICAgICAoaSk6CisgICAgICAgIChh
KToKKyAgICAgICAgKHMpOgorICAgICAgICAodSk6CisgICAgICAgIChsKToKKyAgICAgICAgKGMp
OgorICAgICAgICAocCk6CisgICAgICAgIChkKToKKyAgICAgICAgKE4uZXh0cmFjdEV2ZW50cyk6
CisgICAgICAgICgzKToKKyAgICAgICAgKDQpOgorICAgICAgICAoZC5jcmVhdGVNYXJrdXBGb3JT
dHlsZXMpOgorICAgICAgICAoZC5zZXRWYWx1ZUZvclN0eWxlcyk6CisgICAgICAgICg1KToKKyAg
ICAgICAgKDYpOgorICAgICAgICAodC5leHBvcnRzLmkuYWRkUG9vbGluZ1RvKToKKyAgICAgICAg
KGgpOgorICAgICAgICAobSk6CisgICAgICAgICh2KToKKyAgICAgICAgKEQuZXh0cmFjdEV2ZW50
cyk6CisgICAgICAgIChnLnByb2Nlc3NVcGRhdGVzKToKKyAgICAgICAgKDgpOgorICAgICAgICAo
OSk6CisgICAgICAgICgxMCk6CisgICAgICAgIChzLmlzQ3VzdG9tQXR0cmlidXRlKToKKyAgICAg
ICAgKDExKToKKyAgICAgICAgKGMuY3JlYXRlTWFya3VwRm9ySUQpOgorICAgICAgICAoYy5zZXRB
dHRyaWJ1dGVGb3JJRCk6CisgICAgICAgIChjLmNyZWF0ZU1hcmt1cEZvclJvb3QpOgorICAgICAg
ICAoYy5zZXRBdHRyaWJ1dGVGb3JSb290KToKKyAgICAgICAgKGMuY3JlYXRlTWFya3VwRm9yUHJv
cGVydHkpOgorICAgICAgICAoYy5jcmVhdGVNYXJrdXBGb3JDdXN0b21BdHRyaWJ1dGUpOgorICAg
ICAgICAoYy5zZXRWYWx1ZUZvclByb3BlcnR5KToKKyAgICAgICAgKGMuc2V0VmFsdWVGb3JBdHRy
aWJ1dGUpOgorICAgICAgICAoYy5kZWxldGVWYWx1ZUZvckF0dHJpYnV0ZSk6CisgICAgICAgIChj
LmRlbGV0ZVZhbHVlRm9yUHJvcGVydHkpOgorICAgICAgICAoMTIpOgorICAgICAgICAoMTMpOgor
ICAgICAgICAoMTQpOgorICAgICAgICAocy5leHRyYWN0RXZlbnRzKToKKyAgICAgICAgKDE1KToK
KyAgICAgICAgKGYpOgorICAgICAgICAobS5wdXRMaXN0ZW5lcik6CisgICAgICAgIChtLmdldExp
c3RlbmVyKToKKyAgICAgICAgKG0uZGVsZXRlTGlzdGVuZXIpOgorICAgICAgICAobS5kZWxldGVB
bGxMaXN0ZW5lcnMpOgorICAgICAgICAobS5leHRyYWN0RXZlbnRzKToKKyAgICAgICAgKG0uZW5x
dWV1ZUV2ZW50cyk6CisgICAgICAgIChtLnByb2Nlc3NFdmVudFF1ZXVlKToKKyAgICAgICAgKG0u
X19wdXJnZSk6CisgICAgICAgIChtLl9fZ2V0TGlzdGVuZXJCYW5rKToKKyAgICAgICAgKDE2KToK
KyAgICAgICAgKGwuaW5qZWN0RXZlbnRQbHVnaW5PcmRlcik6CisgICAgICAgIChsLmluamVjdEV2
ZW50UGx1Z2luc0J5TmFtZSk6CisgICAgICAgIChsLmdldFBsdWdpbk1vZHVsZUZvckV2ZW50KToK
KyAgICAgICAgKGwuX3Jlc2V0RXZlbnRQbHVnaW5zKToKKyAgICAgICAgKDE3KToKKyAgICAgICAg
KGcuZ2V0SW5zdGFuY2VGcm9tTm9kZSk6CisgICAgICAgIChnLmdldE5vZGVGcm9tSW5zdGFuY2Up
OgorICAgICAgICAoZy5pc0FuY2VzdG9yKToKKyAgICAgICAgKGcuZ2V0TG93ZXN0Q29tbW9uQW5j
ZXN0b3IpOgorICAgICAgICAoZy5nZXRQYXJlbnRJbnN0YW5jZSk6CisgICAgICAgIChnLnRyYXZl
cnNlVHdvUGhhc2UpOgorICAgICAgICAoZy50cmF2ZXJzZUVudGVyTGVhdmUpOgorICAgICAgICAo
MTgpOgorICAgICAgICAoMTkpOgorICAgICAgICAoMjApOgorICAgICAgICAoMjEpOgorICAgICAg
ICAoMjIpOgorICAgICAgICAocC52YWx1ZSk6CisgICAgICAgIChwLmNoZWNrZWQpOgorICAgICAg
ICAoZi5jaGVja1Byb3BUeXBlcyk6CisgICAgICAgIChmLmdldFZhbHVlKToKKyAgICAgICAgKGYu
Z2V0Q2hlY2tlZCk6CisgICAgICAgIChmLmV4ZWN1dGVPbkNoYW5nZSk6CisgICAgICAgICgyMyk6
CisgICAgICAgICgyNCk6CisgICAgICAgICgyNSk6CisgICAgICAgICgyNik6CisgICAgICAgICgy
Nyk6CisgICAgICAgIChpLmluamVjdGlvbi5pbmplY3RFbnZpcm9ubWVudCk6CisgICAgICAgICgy
OCk6CisgICAgICAgIChyLnByb3RvdHlwZS5yZW5kZXIpOgorICAgICAgICAoYi5jb25zdHJ1Y3Qp
OgorICAgICAgICAoYi5tb3VudENvbXBvbmVudCk6CisgICAgICAgIChiLl9jb25zdHJ1Y3RDb21w
b25lbnQpOgorICAgICAgICAoYi5fY29uc3RydWN0Q29tcG9uZW50V2l0aG91dE93bmVyKToKKyAg
ICAgICAgKGIucGVyZm9ybUluaXRpYWxNb3VudFdpdGhFcnJvckhhbmRsaW5nKToKKyAgICAgICAg
KGIucGVyZm9ybUluaXRpYWxNb3VudCk6CisgICAgICAgIChiLmdldEhvc3ROb2RlKToKKyAgICAg
ICAgKGIudW5tb3VudENvbXBvbmVudCk6CisgICAgICAgIChiLl9tYXNrQ29udGV4dCk6CisgICAg
ICAgIChiLl9wcm9jZXNzQ29udGV4dCk6CisgICAgICAgIChiLl9wcm9jZXNzQ2hpbGRDb250ZXh0
KToKKyAgICAgICAgKGIuX2NoZWNrQ29udGV4dFR5cGVzKToKKyAgICAgICAgKGIucmVjZWl2ZUNv
bXBvbmVudCk6CisgICAgICAgIChiLnBlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeSk6CisgICAgICAg
IChiLnVwZGF0ZUNvbXBvbmVudCk6CisgICAgICAgIChiLl9wcm9jZXNzUGVuZGluZ1N0YXRlKToK
KyAgICAgICAgKGIuX3BlcmZvcm1Db21wb25lbnRVcGRhdGUpOgorICAgICAgICAoYi5fdXBkYXRl
UmVuZGVyZWRDb21wb25lbnQpOgorICAgICAgICAoYi5fcmVwbGFjZU5vZGVXaXRoTWFya3VwKToK
KyAgICAgICAgKGIuX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudFdpdGhvdXRPd25lck9yQ29udGV4
dCk6CisgICAgICAgIChiLl9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnQpOgorICAgICAgICAoYi5h
dHRhY2hSZWYpOgorICAgICAgICAoYi5kZXRhY2hSZWYpOgorICAgICAgICAoYi5nZXROYW1lKToK
KyAgICAgICAgKGIuZ2V0UHVibGljSW5zdGFuY2UpOgorICAgICAgICAoMjkpOgorICAgICAgICAo
aC5NaXhpbi5tb3VudENvbXBvbmVudCk6CisgICAgICAgIChoLk1peGluLl9jcmVhdGVPcGVuVGFn
TWFya3VwQW5kUHV0TGlzdGVuZXJzKToKKyAgICAgICAgKGguTWl4aW4uX2NyZWF0ZUNvbnRlbnRN
YXJrdXApOgorICAgICAgICAoaC5NaXhpbi5fY3JlYXRlSW5pdGlhbENoaWxkcmVuKToKKyAgICAg
ICAgKGguTWl4aW4ucmVjZWl2ZUNvbXBvbmVudCk6CisgICAgICAgIChoLk1peGluLnVwZGF0ZUNv
bXBvbmVudCk6CisgICAgICAgIChoLk1peGluLl91cGRhdGVET01Qcm9wZXJ0aWVzKToKKyAgICAg
ICAgKGguTWl4aW4uX3VwZGF0ZURPTUNoaWxkcmVuKToKKyAgICAgICAgKGguTWl4aW4uZ2V0SG9z
dE5vZGUpOgorICAgICAgICAoaC5NaXhpbi51bm1vdW50Q29tcG9uZW50KToKKyAgICAgICAgKGgu
TWl4aW4uZ2V0UHVibGljSW5zdGFuY2UpOgorICAgICAgICAoMzApOgorICAgICAgICAoMzEpOgor
ICAgICAgICAoMzIpOgorICAgICAgICAoMzMpOgorICAgICAgICAoMzQpOgorICAgICAgICAoaS5k
YW5nZXJvdXNseVByb2Nlc3NDaGlsZHJlblVwZGF0ZXMpOgorICAgICAgICAoMzUpOgorICAgICAg
ICAoMzYpOgorICAgICAgICAobC5tb3VudFdyYXBwZXIpOgorICAgICAgICAobC5wb3N0TW91bnRX
cmFwcGVyKToKKyAgICAgICAgKGwuZ2V0SG9zdFByb3BzKToKKyAgICAgICAgKDM3KToKKyAgICAg
ICAgKHAuZ2V0SG9zdFByb3BzKToKKyAgICAgICAgKHAubW91bnRXcmFwcGVyKToKKyAgICAgICAg
KHAuZ2V0U2VsZWN0VmFsdWVDb250ZXh0KToKKyAgICAgICAgKHAucG9zdFVwZGF0ZVdyYXBwZXIp
OgorICAgICAgICAoMzgpOgorICAgICAgICAoMzkpOgorICAgICAgICAoNDApOgorICAgICAgICAo
NDEpOgorICAgICAgICAoNDIpOgorICAgICAgICAoNDMpOgorICAgICAgICAoNDQpOgorICAgICAg
ICAodS5jbG9zZSk6CisgICAgICAgIChkLmJhdGNoZWRVcGRhdGVzKToKKyAgICAgICAgKDQ1KToK
KyAgICAgICAgKDQ2KToKKyAgICAgICAgKDQ3KToKKyAgICAgICAgKG8uaW5qZWN0RW1wdHlDb21w
b25lbnRGYWN0b3J5KToKKyAgICAgICAgKGkuY3JlYXRlKToKKyAgICAgICAgKDQ4KToKKyAgICAg
ICAgKGkucmV0aHJvd0NhdWdodEVycm9yKToKKyAgICAgICAgKDQ5KToKKyAgICAgICAgKGkuaGFu
ZGxlVG9wTGV2ZWwpOgorICAgICAgICAoNTApOgorICAgICAgICAobS5zZXRIYW5kbGVUb3BMZXZl
bCk6CisgICAgICAgIChtLnNldEVuYWJsZWQpOgorICAgICAgICAobS5pc0VuYWJsZWQpOgorICAg
ICAgICAobS50cmFwQnViYmxlZEV2ZW50KToKKyAgICAgICAgKG0udHJhcENhcHR1cmVkRXZlbnQp
OgorICAgICAgICAobS5tb25pdG9yU2Nyb2xsVmFsdWUpOgorICAgICAgICAobS5kaXNwYXRjaEV2
ZW50KToKKyAgICAgICAgKDUxKToKKyAgICAgICAgKDUyKToKKyAgICAgICAgKHAuaW5qZWN0R2Vu
ZXJpY0NvbXBvbmVudENsYXNzKToKKyAgICAgICAgKHAuaW5qZWN0VGV4dENvbXBvbmVudENsYXNz
KToKKyAgICAgICAgKHAuaW5qZWN0Q29tcG9uZW50Q2xhc3Nlcyk6CisgICAgICAgICg1Myk6Cisg
ICAgICAgICg1NCk6CisgICAgICAgICh1Lmhhc1NlbGVjdGlvbkNhcGFiaWxpdGllcyk6CisgICAg
ICAgICh1LmdldFNlbGVjdGlvbkluZm9ybWF0aW9uKToKKyAgICAgICAgKHUucmVzdG9yZVNlbGVj
dGlvbik6CisgICAgICAgICh1LmdldFNlbGVjdGlvbik6CisgICAgICAgICh1LnNldFNlbGVjdGlv
bik6CisgICAgICAgICg1NSk6CisgICAgICAgIChyLnJlbW92ZSk6CisgICAgICAgIChyLmhhcyk6
CisgICAgICAgICg1Nyk6CisgICAgICAgIChhLmFkZENoZWNrc3VtVG9NYXJrdXApOgorICAgICAg
ICAoYS5jYW5SZXVzZU1hcmt1cCk6CisgICAgICAgICg1OCk6CisgICAgICAgICg1OSk6CisgICAg
ICAgICg2MCk6CisgICAgICAgICg2MSk6CisgICAgICAgICg2Mik6CisgICAgICAgIChkLmluaXRp
YWxpemUpOgorICAgICAgICAoZC5jbG9zZSk6CisgICAgICAgIChmLmluaXRpYWxpemUpOgorICAg
ICAgICAoZi5jbG9zZSk6CisgICAgICAgIChtLmdldFRyYW5zYWN0aW9uV3JhcHBlcnMpOgorICAg
ICAgICAobS5nZXRSZWFjdE1vdW50UmVhZHkpOgorICAgICAgICAobS5nZXRVcGRhdGVRdWV1ZSk6
CisgICAgICAgIChtLmNoZWNrcG9pbnQpOgorICAgICAgICAobS5yb2xsYmFjayk6CisgICAgICAg
IChtLmRlc3RydWN0b3IpOgorICAgICAgICAoNjMpOgorICAgICAgICAoNjQpOgorICAgICAgICAo
YS5hdHRhY2hSZWZzKToKKyAgICAgICAgKGEuc2hvdWxkVXBkYXRlUmVmcyk6CisgICAgICAgIChh
LmRldGFjaFJlZnMpOgorICAgICAgICAoNjUpOgorICAgICAgICAoci5iYXRjaGVkVXBkYXRlcyk6
CisgICAgICAgICg2Nik6CisgICAgICAgICg2Nyk6CisgICAgICAgIChsLmVucXVldWUpOgorICAg
ICAgICAoYy5nZXRUcmFuc2FjdGlvbldyYXBwZXJzKToKKyAgICAgICAgKGMuZ2V0UmVhY3RNb3Vu
dFJlYWR5KToKKyAgICAgICAgKGMuZ2V0VXBkYXRlUXVldWUpOgorICAgICAgICAoYy5kZXN0cnVj
dG9yKToKKyAgICAgICAgKGMuY2hlY2twb2ludCk6CisgICAgICAgIChjLnJvbGxiYWNrKToKKyAg
ICAgICAgKDY4KToKKyAgICAgICAgKDY5KToKKyAgICAgICAgKDcwKToKKyAgICAgICAgKEUuaW5p
dGlhbGl6ZSk6CisgICAgICAgIChFLmNsb3NlKToKKyAgICAgICAgKHguaW5pdGlhbGl6ZSk6Cisg
ICAgICAgICh4LmNsb3NlKToKKyAgICAgICAgKGspOgorICAgICAgICAoVC5pbmplY3RSZWNvbmNp
bGVUcmFuc2FjdGlvbik6CisgICAgICAgIChULmluamVjdEJhdGNoaW5nU3RyYXRlZ3kpOgorICAg
ICAgICAoNzEpOgorICAgICAgICAoNzIpOgorICAgICAgICAoNzMpOgorICAgICAgICAoQy5leHRy
YWN0RXZlbnRzKToKKyAgICAgICAgKEMuZGlkUHV0TGlzdGVuZXIpOgorICAgICAgICAoNzQpOgor
ICAgICAgICAoVC5leHRyYWN0RXZlbnRzKToKKyAgICAgICAgKFQuZGlkUHV0TGlzdGVuZXIpOgor
ICAgICAgICAoVC53aWxsRGVsZXRlTGlzdGVuZXIpOgorICAgICAgICAoNzUpOgorICAgICAgICAo
NzYpOgorICAgICAgICAoaS5jbGlwYm9hcmREYXRhKToKKyAgICAgICAgKDc3KToKKyAgICAgICAg
KDc4KToKKyAgICAgICAgKDc5KToKKyAgICAgICAgKHUudGltZVN0YW1wKToKKyAgICAgICAgKHIu
YXVnbWVudENsYXNzKToKKyAgICAgICAgKDgwKToKKyAgICAgICAgKDgxKToKKyAgICAgICAgKDgy
KToKKyAgICAgICAgKHUuY2hhckNvZGUpOgorICAgICAgICAodS5rZXlDb2RlKToKKyAgICAgICAg
KDgzKToKKyAgICAgICAgKHMuYnV0dG9uKToKKyAgICAgICAgKHMucmVsYXRlZFRhcmdldCk6Cisg
ICAgICAgIChzLnBhZ2VYKToKKyAgICAgICAgKHMucGFnZVkpOgorICAgICAgICAoODQpOgorICAg
ICAgICAoODUpOgorICAgICAgICAoODYpOgorICAgICAgICAoYS52aWV3KToKKyAgICAgICAgKGEu
ZGV0YWlsKToKKyAgICAgICAgKDg3KToKKyAgICAgICAgKGkuZGVsdGFYKToKKyAgICAgICAgKGku
ZGVsdGFZKToKKyAgICAgICAgKDg4KToKKyAgICAgICAgKGkucmVpbml0aWFsaXplVHJhbnNhY3Rp
b24pOgorICAgICAgICAoaS5pc0luVHJhbnNhY3Rpb24pOgorICAgICAgICAoaS5wZXJmb3JtKToK
KyAgICAgICAgKGkuaW5pdGlhbGl6ZUFsbCk6CisgICAgICAgIChpLmNsb3NlQWxsKToKKyAgICAg
ICAgKDg5KToKKyAgICAgICAgKHIucmVmcmVzaFNjcm9sbFZhbHVlcyk6CisgICAgICAgICg5MCk6
CisgICAgICAgICg5MSk6CisgICAgICAgICg5Mik6CisgICAgICAgICg5Myk6CisgICAgICAgICg5
NCk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vZGlzdC9yZWFjdC1kb20uanM6
IEFkZGVkLgorICAgICAgICAoZWxzZSk6CisgICAgICAgIChlbHNlLmVsc2UpOgorICAgICAgICAo
cyk6CisgICAgICAgIChyZXR1cm4uZSk6CisgICAgICAgICgxKToKKyAgICAgICAgKEF1dG9Gb2N1
c1V0aWxzLmZvY3VzRE9NQ29tcG9uZW50KToKKyAgICAgICAgKDIpOgorICAgICAgICAoaXNLZXlw
cmVzc0NvbW1hbmQpOgorICAgICAgICAoZ2V0Q29tcG9zaXRpb25FdmVudFR5cGUpOgorICAgICAg
ICAoaXNGYWxsYmFja0NvbXBvc2l0aW9uU3RhcnQpOgorICAgICAgICAoaXNGYWxsYmFja0NvbXBv
c2l0aW9uRW5kKToKKyAgICAgICAgKGdldERhdGFGcm9tQ3VzdG9tRXZlbnQpOgorICAgICAgICAo
ZXh0cmFjdENvbXBvc2l0aW9uRXZlbnQpOgorICAgICAgICAoZ2V0TmF0aXZlQmVmb3JlSW5wdXRD
aGFycyk6CisgICAgICAgIChnZXRGYWxsYmFja0JlZm9yZUlucHV0Q2hhcnMpOgorICAgICAgICAo
ZXh0cmFjdEJlZm9yZUlucHV0RXZlbnQpOgorICAgICAgICAoQmVmb3JlSW5wdXRFdmVudFBsdWdp
bi5leHRyYWN0RXZlbnRzKToKKyAgICAgICAgKDMpOgorICAgICAgICAocHJlZml4S2V5KToKKyAg
ICAgICAgKDQpOgorICAgICAgICAod2Fybkh5cGhlbmF0ZWRTdHlsZU5hbWUpOgorICAgICAgICAo
d2FybkJhZFZlbmRvcmVkU3R5bGVOYW1lKToKKyAgICAgICAgKHdhcm5TdHlsZVZhbHVlV2l0aFNl
bWljb2xvbik6CisgICAgICAgICh3YXJuU3R5bGVWYWx1ZUlzTmFOKToKKyAgICAgICAgKGNoZWNr
UmVuZGVyTWVzc2FnZSk6CisgICAgICAgICh3YXJuVmFsaWRTdHlsZSk6CisgICAgICAgIChDU1NQ
cm9wZXJ0eU9wZXJhdGlvbnMuY3JlYXRlTWFya3VwRm9yU3R5bGVzKToKKyAgICAgICAgKENTU1By
b3BlcnR5T3BlcmF0aW9ucy5zZXRWYWx1ZUZvclN0eWxlcyk6CisgICAgICAgICg1KToKKyAgICAg
ICAgKF9jbGFzc0NhbGxDaGVjayk6CisgICAgICAgIChDYWxsYmFja1F1ZXVlLnByb3RvdHlwZS5l
bnF1ZXVlKToKKyAgICAgICAgKENhbGxiYWNrUXVldWUucHJvdG90eXBlLm5vdGlmeUFsbCk6Cisg
ICAgICAgIChDYWxsYmFja1F1ZXVlLnByb3RvdHlwZS5jaGVja3BvaW50KToKKyAgICAgICAgKENh
bGxiYWNrUXVldWUucHJvdG90eXBlLnJvbGxiYWNrKToKKyAgICAgICAgKENhbGxiYWNrUXVldWUu
cHJvdG90eXBlLnJlc2V0KToKKyAgICAgICAgKENhbGxiYWNrUXVldWUucHJvdG90eXBlLmRlc3Ry
dWN0b3IpOgorICAgICAgICAoQ2FsbGJhY2tRdWV1ZSk6CisgICAgICAgICg2KToKKyAgICAgICAg
KG1vZHVsZS5leHBvcnRzLlBvb2xlZENsYXNzLmFkZFBvb2xpbmdUbyk6CisgICAgICAgIChzaG91
bGRVc2VDaGFuZ2VFdmVudCk6CisgICAgICAgIChtYW51YWxEaXNwYXRjaENoYW5nZUV2ZW50KToK
KyAgICAgICAgKHJ1bkV2ZW50SW5CYXRjaCk6CisgICAgICAgIChzdGFydFdhdGNoaW5nRm9yQ2hh
bmdlRXZlbnRJRTgpOgorICAgICAgICAoc3RvcFdhdGNoaW5nRm9yQ2hhbmdlRXZlbnRJRTgpOgor
ICAgICAgICAoZ2V0VGFyZ2V0SW5zdEZvckNoYW5nZUV2ZW50KToKKyAgICAgICAgKGhhbmRsZUV2
ZW50c0ZvckNoYW5nZUV2ZW50SUU4KToKKyAgICAgICAgKHN0YXJ0V2F0Y2hpbmdGb3JWYWx1ZUNo
YW5nZSk6CisgICAgICAgIChzdG9wV2F0Y2hpbmdGb3JWYWx1ZUNoYW5nZSk6CisgICAgICAgICho
YW5kbGVQcm9wZXJ0eUNoYW5nZSk6CisgICAgICAgIChnZXRUYXJnZXRJbnN0Rm9ySW5wdXRFdmVu
dCk6CisgICAgICAgIChoYW5kbGVFdmVudHNGb3JJbnB1dEV2ZW50SUUpOgorICAgICAgICAoZ2V0
VGFyZ2V0SW5zdEZvcklucHV0RXZlbnRJRSk6CisgICAgICAgIChzaG91bGRVc2VDbGlja0V2ZW50
KToKKyAgICAgICAgKENoYW5nZUV2ZW50UGx1Z2luLmV4dHJhY3RFdmVudHMpOgorICAgICAgICAo
Z2V0Tm9kZUFmdGVyKToKKyAgICAgICAgKGluc2VydExhenlUcmVlQ2hpbGRBdCk6CisgICAgICAg
IChtb3ZlQ2hpbGQpOgorICAgICAgICAocmVtb3ZlQ2hpbGQpOgorICAgICAgICAobW92ZURlbGlt
aXRlZFRleHQpOgorICAgICAgICAocmVtb3ZlRGVsaW1pdGVkVGV4dCk6CisgICAgICAgIChyZXBs
YWNlRGVsaW1pdGVkVGV4dCk6CisgICAgICAgIChkYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1h
cmt1cCk6CisgICAgICAgIChET01DaGlsZHJlbk9wZXJhdGlvbnMucHJvY2Vzc1VwZGF0ZXMpOgor
ICAgICAgICAoOCk6CisgICAgICAgIChpbnNlcnRUcmVlQ2hpbGRyZW4pOgorICAgICAgICAocXVl
dWVDaGlsZCk6CisgICAgICAgIChxdWV1ZUhUTUwpOgorICAgICAgICAocXVldWVUZXh0KToKKyAg
ICAgICAgKHRvU3RyaW5nKToKKyAgICAgICAgKERPTUxhenlUcmVlKToKKyAgICAgICAgKDkpOgor
ICAgICAgICAoMTApOgorICAgICAgICAoY2hlY2tNYXNrKToKKyAgICAgICAgKERPTVByb3BlcnR5
SW5qZWN0aW9uLmluamVjdERPTVByb3BlcnR5Q29uZmlnKToKKyAgICAgICAgKERPTVByb3BlcnR5
LmlzQ3VzdG9tQXR0cmlidXRlKToKKyAgICAgICAgKDExKToKKyAgICAgICAgKHNob3VsZElnbm9y
ZVZhbHVlKToKKyAgICAgICAgKERPTVByb3BlcnR5T3BlcmF0aW9ucy5jcmVhdGVNYXJrdXBGb3JJ
RCk6CisgICAgICAgIChET01Qcm9wZXJ0eU9wZXJhdGlvbnMuc2V0QXR0cmlidXRlRm9ySUQpOgor
ICAgICAgICAoRE9NUHJvcGVydHlPcGVyYXRpb25zLmNyZWF0ZU1hcmt1cEZvclJvb3QpOgorICAg
ICAgICAoRE9NUHJvcGVydHlPcGVyYXRpb25zLnNldEF0dHJpYnV0ZUZvclJvb3QpOgorICAgICAg
ICAoRE9NUHJvcGVydHlPcGVyYXRpb25zLmNyZWF0ZU1hcmt1cEZvclByb3BlcnR5KToKKyAgICAg
ICAgKERPTVByb3BlcnR5T3BlcmF0aW9ucy5jcmVhdGVNYXJrdXBGb3JDdXN0b21BdHRyaWJ1dGUp
OgorICAgICAgICAoRE9NUHJvcGVydHlPcGVyYXRpb25zLnNldFZhbHVlRm9yUHJvcGVydHkpOgor
ICAgICAgICAoRE9NUHJvcGVydHlPcGVyYXRpb25zLnNldFZhbHVlRm9yQXR0cmlidXRlKToKKyAg
ICAgICAgKERPTVByb3BlcnR5T3BlcmF0aW9ucy5kZWxldGVWYWx1ZUZvckF0dHJpYnV0ZSk6Cisg
ICAgICAgIChET01Qcm9wZXJ0eU9wZXJhdGlvbnMuZGVsZXRlVmFsdWVGb3JQcm9wZXJ0eSk6Cisg
ICAgICAgICgxMik6CisgICAgICAgIChEYW5nZXIuZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhN
YXJrdXApOgorICAgICAgICAoMTMpOgorICAgICAgICAoMTQpOgorICAgICAgICAoRW50ZXJMZWF2
ZUV2ZW50UGx1Z2luLmV4dHJhY3RFdmVudHMpOgorICAgICAgICAoMTUpOgorICAgICAgICAoMTYp
OgorICAgICAgICAoZXhlY3V0ZURpc3BhdGNoZXNBbmRSZWxlYXNlKToKKyAgICAgICAgKGV4ZWN1
dGVEaXNwYXRjaGVzQW5kUmVsZWFzZVNpbXVsYXRlZCk6CisgICAgICAgIChleGVjdXRlRGlzcGF0
Y2hlc0FuZFJlbGVhc2VUb3BMZXZlbCk6CisgICAgICAgIChnZXREaWN0aW9uYXJ5S2V5KToKKyAg
ICAgICAgKEV2ZW50UGx1Z2luSHViLnB1dExpc3RlbmVyKToKKyAgICAgICAgKEV2ZW50UGx1Z2lu
SHViLmdldExpc3RlbmVyKToKKyAgICAgICAgKEV2ZW50UGx1Z2luSHViLmRlbGV0ZUxpc3RlbmVy
KToKKyAgICAgICAgKEV2ZW50UGx1Z2luSHViLmRlbGV0ZUFsbExpc3RlbmVycyk6CisgICAgICAg
IChFdmVudFBsdWdpbkh1Yi5leHRyYWN0RXZlbnRzKToKKyAgICAgICAgKEV2ZW50UGx1Z2luSHVi
LmVucXVldWVFdmVudHMpOgorICAgICAgICAoRXZlbnRQbHVnaW5IdWIucHJvY2Vzc0V2ZW50UXVl
dWUpOgorICAgICAgICAoRXZlbnRQbHVnaW5IdWIuX19wdXJnZSk6CisgICAgICAgIChFdmVudFBs
dWdpbkh1Yi5fX2dldExpc3RlbmVyQmFuayk6CisgICAgICAgICgxNyk6CisgICAgICAgIChwdWJs
aXNoRXZlbnRGb3JQbHVnaW4pOgorICAgICAgICAocHVibGlzaFJlZ2lzdHJhdGlvbk5hbWUpOgor
ICAgICAgICAoRXZlbnRQbHVnaW5SZWdpc3RyeS5pbmplY3RFdmVudFBsdWdpbk9yZGVyKToKKyAg
ICAgICAgKEV2ZW50UGx1Z2luUmVnaXN0cnkuaW5qZWN0RXZlbnRQbHVnaW5zQnlOYW1lKToKKyAg
ICAgICAgKEV2ZW50UGx1Z2luUmVnaXN0cnkuZ2V0UGx1Z2luTW9kdWxlRm9yRXZlbnQpOgorICAg
ICAgICAoRXZlbnRQbHVnaW5SZWdpc3RyeS5fcmVzZXRFdmVudFBsdWdpbnMpOgorICAgICAgICAo
MTgpOgorICAgICAgICAoaW5qZWN0aW9uLmluamVjdENvbXBvbmVudFRyZWUpOgorICAgICAgICAo
aW5qZWN0aW9uLmluamVjdFRyZWVUcmF2ZXJzYWwpOgorICAgICAgICAoaXNFbmRpc2gpOgorICAg
ICAgICAoaXNNb3ZlaXNoKToKKyAgICAgICAgKGlzU3RhcnRpc2gpOgorICAgICAgICAodmFsaWRh
dGVFdmVudERpc3BhdGNoZXMpOgorICAgICAgICAoZXhlY3V0ZURpc3BhdGNoKToKKyAgICAgICAg
KGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlcik6CisgICAgICAgIChleGVjdXRlRGlzcGF0Y2hlc0lu
T3JkZXJTdG9wQXRUcnVlSW1wbCk6CisgICAgICAgIChleGVjdXRlRGlzcGF0Y2hlc0luT3JkZXJT
dG9wQXRUcnVlKToKKyAgICAgICAgKGV4ZWN1dGVEaXJlY3REaXNwYXRjaCk6CisgICAgICAgICho
YXNEaXNwYXRjaGVzKToKKyAgICAgICAgKEV2ZW50UGx1Z2luVXRpbHMuZ2V0SW5zdGFuY2VGcm9t
Tm9kZSk6CisgICAgICAgIChFdmVudFBsdWdpblV0aWxzLmdldE5vZGVGcm9tSW5zdGFuY2UpOgor
ICAgICAgICAoRXZlbnRQbHVnaW5VdGlscy5pc0FuY2VzdG9yKToKKyAgICAgICAgKEV2ZW50UGx1
Z2luVXRpbHMuZ2V0TG93ZXN0Q29tbW9uQW5jZXN0b3IpOgorICAgICAgICAoRXZlbnRQbHVnaW5V
dGlscy5nZXRQYXJlbnRJbnN0YW5jZSk6CisgICAgICAgIChFdmVudFBsdWdpblV0aWxzLnRyYXZl
cnNlVHdvUGhhc2UpOgorICAgICAgICAoRXZlbnRQbHVnaW5VdGlscy50cmF2ZXJzZUVudGVyTGVh
dmUpOgorICAgICAgICAoMTkpOgorICAgICAgICAobGlzdGVuZXJBdFBoYXNlKToKKyAgICAgICAg
KGFjY3VtdWxhdGVEaXJlY3Rpb25hbERpc3BhdGNoZXMpOgorICAgICAgICAoYWNjdW11bGF0ZVR3
b1BoYXNlRGlzcGF0Y2hlc1NpbmdsZSk6CisgICAgICAgIChhY2N1bXVsYXRlVHdvUGhhc2VEaXNw
YXRjaGVzU2luZ2xlU2tpcFRhcmdldCk6CisgICAgICAgIChhY2N1bXVsYXRlRGlzcGF0Y2hlcyk6
CisgICAgICAgIChhY2N1bXVsYXRlRGlyZWN0RGlzcGF0Y2hlc1NpbmdsZSk6CisgICAgICAgIChh
Y2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKToKKyAgICAgICAgKGFjY3VtdWxhdGVUd29QaGFz
ZURpc3BhdGNoZXNTa2lwVGFyZ2V0KToKKyAgICAgICAgKGFjY3VtdWxhdGVFbnRlckxlYXZlRGlz
cGF0Y2hlcyk6CisgICAgICAgIChhY2N1bXVsYXRlRGlyZWN0RGlzcGF0Y2hlcyk6CisgICAgICAg
ICgyMCk6CisgICAgICAgIChGYWxsYmFja0NvbXBvc2l0aW9uU3RhdGUpOgorICAgICAgICAoMjEp
OgorICAgICAgICAoMjIpOgorICAgICAgICAoZXNjYXBlKToKKyAgICAgICAgKHVuZXNjYXBlKToK
KyAgICAgICAgKDIzKToKKyAgICAgICAgKF9hc3NlcnRTaW5nbGVMaW5rKToKKyAgICAgICAgKF9h
c3NlcnRWYWx1ZUxpbmspOgorICAgICAgICAoX2Fzc2VydENoZWNrZWRMaW5rKToKKyAgICAgICAg
KHByb3BUeXBlcy52YWx1ZSk6CisgICAgICAgIChwcm9wVHlwZXMuY2hlY2tlZCk6CisgICAgICAg
IChMaW5rZWRWYWx1ZVV0aWxzLmNoZWNrUHJvcFR5cGVzKToKKyAgICAgICAgKExpbmtlZFZhbHVl
VXRpbHMuZ2V0VmFsdWUpOgorICAgICAgICAoTGlua2VkVmFsdWVVdGlscy5nZXRDaGVja2VkKToK
KyAgICAgICAgKExpbmtlZFZhbHVlVXRpbHMuZXhlY3V0ZU9uQ2hhbmdlKToKKyAgICAgICAgKDI0
KToKKyAgICAgICAgKG9uZUFyZ3VtZW50UG9vbGVyKToKKyAgICAgICAgKHR3b0FyZ3VtZW50UG9v
bGVyKToKKyAgICAgICAgKHRocmVlQXJndW1lbnRQb29sZXIpOgorICAgICAgICAoZm91ckFyZ3Vt
ZW50UG9vbGVyKToKKyAgICAgICAgKGZpdmVBcmd1bWVudFBvb2xlcik6CisgICAgICAgIChzdGFu
ZGFyZFJlbGVhc2VyKToKKyAgICAgICAgKGFkZFBvb2xpbmdUbyk6CisgICAgICAgICgyNSk6Cisg
ICAgICAgIChnZXRMaXN0ZW5pbmdGb3JEb2N1bWVudCk6CisgICAgICAgICgyNik6CisgICAgICAg
ICgyNyk6CisgICAgICAgICgyOCk6CisgICAgICAgIChSZWFjdENvbXBvbmVudEVudmlyb25tZW50
LmluamVjdGlvbi5pbmplY3RFbnZpcm9ubWVudCk6CisgICAgICAgICgyOSk6CisgICAgICAgIChT
dGF0ZWxlc3NDb21wb25lbnQpOgorICAgICAgICAoU3RhdGVsZXNzQ29tcG9uZW50LnByb3RvdHlw
ZS5yZW5kZXIpOgorICAgICAgICAod2FybklmSW52YWxpZEVsZW1lbnQpOgorICAgICAgICAoc2hv
dWxkQ29uc3RydWN0KToKKyAgICAgICAgKGlzUHVyZUNvbXBvbmVudCk6CisgICAgICAgIChtZWFz
dXJlTGlmZUN5Y2xlUGVyZik6CisgICAgICAgIChSZWFjdENvbXBvc2l0ZUNvbXBvbmVudC5jb25z
dHJ1Y3QpOgorICAgICAgICAoUmVhY3RDb21wb3NpdGVDb21wb25lbnQubW91bnRDb21wb25lbnQp
OgorICAgICAgICAoUmVhY3RDb21wb3NpdGVDb21wb25lbnQuX2NvbnN0cnVjdENvbXBvbmVudCk6
CisgICAgICAgIChSZWFjdENvbXBvc2l0ZUNvbXBvbmVudC5fY29uc3RydWN0Q29tcG9uZW50V2l0
aG91dE93bmVyKToKKyAgICAgICAgKFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50LnBlcmZvcm1Jbml0
aWFsTW91bnRXaXRoRXJyb3JIYW5kbGluZyk6CisgICAgICAgIChSZWFjdENvbXBvc2l0ZUNvbXBv
bmVudC5wZXJmb3JtSW5pdGlhbE1vdW50KToKKyAgICAgICAgKFJlYWN0Q29tcG9zaXRlQ29tcG9u
ZW50LmdldEhvc3ROb2RlKToKKyAgICAgICAgKFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50LnVubW91
bnRDb21wb25lbnQpOgorICAgICAgICAoUmVhY3RDb21wb3NpdGVDb21wb25lbnQuX21hc2tDb250
ZXh0KToKKyAgICAgICAgKFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50Ll9wcm9jZXNzQ29udGV4dCk6
CisgICAgICAgIChSZWFjdENvbXBvc2l0ZUNvbXBvbmVudC5fcHJvY2Vzc0NoaWxkQ29udGV4dCk6
CisgICAgICAgIChSZWFjdENvbXBvc2l0ZUNvbXBvbmVudC5fY2hlY2tDb250ZXh0VHlwZXMpOgor
ICAgICAgICAoUmVhY3RDb21wb3NpdGVDb21wb25lbnQucmVjZWl2ZUNvbXBvbmVudCk6CisgICAg
ICAgIChSZWFjdENvbXBvc2l0ZUNvbXBvbmVudC5wZXJmb3JtVXBkYXRlSWZOZWNlc3NhcnkpOgor
ICAgICAgICAoUmVhY3RDb21wb3NpdGVDb21wb25lbnQudXBkYXRlQ29tcG9uZW50KToKKyAgICAg
ICAgKFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50Ll9wcm9jZXNzUGVuZGluZ1N0YXRlKToKKyAgICAg
ICAgKFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50Ll9wZXJmb3JtQ29tcG9uZW50VXBkYXRlKToKKyAg
ICAgICAgKFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50Ll91cGRhdGVSZW5kZXJlZENvbXBvbmVudCk6
CisgICAgICAgIChSZWFjdENvbXBvc2l0ZUNvbXBvbmVudC5fcmVwbGFjZU5vZGVXaXRoTWFya3Vw
KToKKyAgICAgICAgKFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50Ll9yZW5kZXJWYWxpZGF0ZWRDb21w
b25lbnRXaXRob3V0T3duZXJPckNvbnRleHQpOgorICAgICAgICAoUmVhY3RDb21wb3NpdGVDb21w
b25lbnQuX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudCk6CisgICAgICAgIChSZWFjdENvbXBvc2l0
ZUNvbXBvbmVudC5hdHRhY2hSZWYpOgorICAgICAgICAoUmVhY3RDb21wb3NpdGVDb21wb25lbnQu
ZGV0YWNoUmVmKToKKyAgICAgICAgKFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50LmdldE5hbWUpOgor
ICAgICAgICAoUmVhY3RDb21wb3NpdGVDb21wb25lbnQuZ2V0UHVibGljSW5zdGFuY2UpOgorICAg
ICAgICAoMzApOgorICAgICAgICAoX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLmluamVj
dC4pOgorICAgICAgICAodGVzdEZ1bmMpOgorICAgICAgICAoMzEpOgorICAgICAgICAoZ2V0RGVj
bGFyYXRpb25FcnJvckFkZGVuZHVtKToKKyAgICAgICAgKGZyaWVuZGx5U3RyaW5naWZ5KToKKyAg
ICAgICAgKGFzc2VydFZhbGlkUHJvcHMpOgorICAgICAgICAoZW5xdWV1ZVB1dExpc3RlbmVyKToK
KyAgICAgICAgKGlucHV0UG9zdE1vdW50KToKKyAgICAgICAgKHRleHRhcmVhUG9zdE1vdW50KToK
KyAgICAgICAgKG9wdGlvblBvc3RNb3VudCk6CisgICAgICAgIChzZXRBbmRWYWxpZGF0ZUNvbnRl
bnRDaGlsZERldik6CisgICAgICAgICh0cmFwQnViYmxlZEV2ZW50c0xvY2FsKToKKyAgICAgICAg
KHBvc3RVcGRhdGVTZWxlY3RXcmFwcGVyKToKKyAgICAgICAgKHZhbGlkYXRlRGFuZ2Vyb3VzVGFn
KToKKyAgICAgICAgKGlzQ3VzdG9tQ29tcG9uZW50KToKKyAgICAgICAgKFJlYWN0RE9NQ29tcG9u
ZW50KToKKyAgICAgICAgKFJlYWN0RE9NQ29tcG9uZW50Lk1peGluLm1vdW50Q29tcG9uZW50KToK
KyAgICAgICAgKFJlYWN0RE9NQ29tcG9uZW50Lk1peGluLl9jcmVhdGVPcGVuVGFnTWFya3VwQW5k
UHV0TGlzdGVuZXJzKToKKyAgICAgICAgKFJlYWN0RE9NQ29tcG9uZW50Lk1peGluLl9jcmVhdGVD
b250ZW50TWFya3VwKToKKyAgICAgICAgKFJlYWN0RE9NQ29tcG9uZW50Lk1peGluLl9jcmVhdGVJ
bml0aWFsQ2hpbGRyZW4pOgorICAgICAgICAoUmVhY3RET01Db21wb25lbnQuTWl4aW4ucmVjZWl2
ZUNvbXBvbmVudCk6CisgICAgICAgIChSZWFjdERPTUNvbXBvbmVudC5NaXhpbi51cGRhdGVDb21w
b25lbnQpOgorICAgICAgICAoUmVhY3RET01Db21wb25lbnQuTWl4aW4uX3VwZGF0ZURPTVByb3Bl
cnRpZXMpOgorICAgICAgICAoUmVhY3RET01Db21wb25lbnQuTWl4aW4uX3VwZGF0ZURPTUNoaWxk
cmVuKToKKyAgICAgICAgKFJlYWN0RE9NQ29tcG9uZW50Lk1peGluLmdldEhvc3ROb2RlKToKKyAg
ICAgICAgKFJlYWN0RE9NQ29tcG9uZW50Lk1peGluLnVubW91bnRDb21wb25lbnQpOgorICAgICAg
ICAoUmVhY3RET01Db21wb25lbnQuTWl4aW4uZ2V0UHVibGljSW5zdGFuY2UpOgorICAgICAgICAo
MzIpOgorICAgICAgICAoMzMpOgorICAgICAgICAoZ2V0UmVuZGVyZWRIb3N0T3JUZXh0RnJvbUNv
bXBvbmVudCk6CisgICAgICAgIChwcmVjYWNoZU5vZGUpOgorICAgICAgICAodW5jYWNoZU5vZGUp
OgorICAgICAgICAocHJlY2FjaGVDaGlsZE5vZGVzKToKKyAgICAgICAgKGdldENsb3Nlc3RJbnN0
YW5jZUZyb21Ob2RlKToKKyAgICAgICAgKGdldEluc3RhbmNlRnJvbU5vZGUpOgorICAgICAgICAo
Z2V0Tm9kZUZyb21JbnN0YW5jZSk6CisgICAgICAgICgzNCk6CisgICAgICAgIChSZWFjdERPTUNv
bnRhaW5lckluZm8pOgorICAgICAgICAoMzUpOgorICAgICAgICAoUmVhY3RET01FbXB0eUNvbXBv
bmVudCk6CisgICAgICAgICgzNik6CisgICAgICAgICgzNyk6CisgICAgICAgIChSZWFjdERPTUlE
T3BlcmF0aW9ucy5kYW5nZXJvdXNseVByb2Nlc3NDaGlsZHJlblVwZGF0ZXMpOgorICAgICAgICAo
MzgpOgorICAgICAgICAoZm9yY2VVcGRhdGVJZk1vdW50ZWQpOgorICAgICAgICAoaXNDb250cm9s
bGVkKToKKyAgICAgICAgKFJlYWN0RE9NSW5wdXQuZ2V0SG9zdFByb3BzKToKKyAgICAgICAgKFJl
YWN0RE9NSW5wdXQubW91bnRXcmFwcGVyKToKKyAgICAgICAgKFJlYWN0RE9NSW5wdXQudXBkYXRl
V3JhcHBlcik6CisgICAgICAgIChSZWFjdERPTUlucHV0LnBvc3RNb3VudFdyYXBwZXIpOgorICAg
ICAgICAoX2hhbmRsZUNoYW5nZSk6CisgICAgICAgICgzOSk6CisgICAgICAgICh2YWxpZGF0ZVBy
b3BlcnR5KToKKyAgICAgICAgKHdhcm5JbnZhbGlkQVJJQVByb3BzKToKKyAgICAgICAgKGhhbmRs
ZUVsZW1lbnQpOgorICAgICAgICAoUmVhY3RET01JbnZhbGlkQVJJQUhvb2sub25CZWZvcmVNb3Vu
dENvbXBvbmVudCk6CisgICAgICAgIChSZWFjdERPTUludmFsaWRBUklBSG9vay5vbkJlZm9yZVVw
ZGF0ZUNvbXBvbmVudCk6CisgICAgICAgICg0MCk6CisgICAgICAgIChSZWFjdERPTU51bGxJbnB1
dFZhbHVlUHJvcEhvb2sub25CZWZvcmVNb3VudENvbXBvbmVudCk6CisgICAgICAgIChSZWFjdERP
TU51bGxJbnB1dFZhbHVlUHJvcEhvb2sub25CZWZvcmVVcGRhdGVDb21wb25lbnQpOgorICAgICAg
ICAoNDEpOgorICAgICAgICAoZmxhdHRlbkNoaWxkcmVuKToKKyAgICAgICAgKFJlYWN0RE9NT3B0
aW9uLm1vdW50V3JhcHBlcik6CisgICAgICAgIChSZWFjdERPTU9wdGlvbi5wb3N0TW91bnRXcmFw
cGVyKToKKyAgICAgICAgKFJlYWN0RE9NT3B0aW9uLmdldEhvc3RQcm9wcyk6CisgICAgICAgICg0
Mik6CisgICAgICAgICh1cGRhdGVPcHRpb25zSWZQZW5kaW5nVXBkYXRlQW5kTW91bnRlZCk6Cisg
ICAgICAgIChjaGVja1NlbGVjdFByb3BUeXBlcyk6CisgICAgICAgICh1cGRhdGVPcHRpb25zKToK
KyAgICAgICAgKFJlYWN0RE9NU2VsZWN0LmdldEhvc3RQcm9wcyk6CisgICAgICAgIChSZWFjdERP
TVNlbGVjdC5tb3VudFdyYXBwZXIpOgorICAgICAgICAoUmVhY3RET01TZWxlY3QuZ2V0U2VsZWN0
VmFsdWVDb250ZXh0KToKKyAgICAgICAgKFJlYWN0RE9NU2VsZWN0LnBvc3RVcGRhdGVXcmFwcGVy
KToKKyAgICAgICAgKDQzKToKKyAgICAgICAgKGlzQ29sbGFwc2VkKToKKyAgICAgICAgKGdldElF
T2Zmc2V0cyk6CisgICAgICAgIChnZXRNb2Rlcm5PZmZzZXRzKToKKyAgICAgICAgKHNldElFT2Zm
c2V0cyk6CisgICAgICAgIChzZXRNb2Rlcm5PZmZzZXRzKToKKyAgICAgICAgKDQ0KToKKyAgICAg
ICAgKFJlYWN0RE9NVGV4dENvbXBvbmVudCk6CisgICAgICAgICg0NSk6CisgICAgICAgIChSZWFj
dERPTVRleHRhcmVhLmdldEhvc3RQcm9wcyk6CisgICAgICAgIChSZWFjdERPTVRleHRhcmVhLm1v
dW50V3JhcHBlcik6CisgICAgICAgIChSZWFjdERPTVRleHRhcmVhLnVwZGF0ZVdyYXBwZXIpOgor
ICAgICAgICAoUmVhY3RET01UZXh0YXJlYS5wb3N0TW91bnRXcmFwcGVyKToKKyAgICAgICAgKDQ2
KToKKyAgICAgICAgKGdldExvd2VzdENvbW1vbkFuY2VzdG9yKToKKyAgICAgICAgKGlzQW5jZXN0
b3IpOgorICAgICAgICAoZ2V0UGFyZW50SW5zdGFuY2UpOgorICAgICAgICAodHJhdmVyc2VUd29Q
aGFzZSk6CisgICAgICAgICh0cmF2ZXJzZUVudGVyTGVhdmUpOgorICAgICAgICAoNDcpOgorICAg
ICAgICAoNDgpOgorICAgICAgICAod2FyblVua25vd25Qcm9wZXJ0aWVzKToKKyAgICAgICAgKFJl
YWN0RE9NVW5rbm93blByb3BlcnR5SG9vay5vbkJlZm9yZU1vdW50Q29tcG9uZW50KToKKyAgICAg
ICAgKFJlYWN0RE9NVW5rbm93blByb3BlcnR5SG9vay5vbkJlZm9yZVVwZGF0ZUNvbXBvbmVudCk6
CisgICAgICAgICg0OSk6CisgICAgICAgIChlbWl0RXZlbnQpOgorICAgICAgICAoY2xlYXJIaXN0
b3J5KToKKyAgICAgICAgKGdldFRyZWVTbmFwc2hvdCk6CisgICAgICAgIChiZWdpbkxpZmVDeWNs
ZVRpbWVyKToKKyAgICAgICAgKGVuZExpZmVDeWNsZVRpbWVyKToKKyAgICAgICAgKHBhdXNlQ3Vy
cmVudExpZmVDeWNsZVRpbWVyKToKKyAgICAgICAgKHJlc3VtZUN1cnJlbnRMaWZlQ3ljbGVUaW1l
cik6CisgICAgICAgIChzaG91bGRNYXJrKToKKyAgICAgICAgKG1hcmtCZWdpbik6CisgICAgICAg
IChtYXJrRW5kKToKKyAgICAgICAgKFJlYWN0RGVidWdUb29sLmFkZEhvb2spOgorICAgICAgICAo
UmVhY3REZWJ1Z1Rvb2wucmVtb3ZlSG9vayk6CisgICAgICAgIChSZWFjdERlYnVnVG9vbC5pc1By
b2ZpbGluZyk6CisgICAgICAgIChSZWFjdERlYnVnVG9vbC5iZWdpblByb2ZpbGluZyk6CisgICAg
ICAgIChSZWFjdERlYnVnVG9vbC5lbmRQcm9maWxpbmcpOgorICAgICAgICAoUmVhY3REZWJ1Z1Rv
b2wuZ2V0Rmx1c2hIaXN0b3J5KToKKyAgICAgICAgKFJlYWN0RGVidWdUb29sLm9uQmVnaW5GbHVz
aCk6CisgICAgICAgIChSZWFjdERlYnVnVG9vbC5vbkVuZEZsdXNoKToKKyAgICAgICAgKFJlYWN0
RGVidWdUb29sLm9uQmVnaW5MaWZlQ3ljbGVUaW1lcik6CisgICAgICAgIChSZWFjdERlYnVnVG9v
bC5vbkVuZExpZmVDeWNsZVRpbWVyKToKKyAgICAgICAgKFJlYWN0RGVidWdUb29sLm9uQmVnaW5Q
cm9jZXNzaW5nQ2hpbGRDb250ZXh0KToKKyAgICAgICAgKFJlYWN0RGVidWdUb29sLm9uRW5kUHJv
Y2Vzc2luZ0NoaWxkQ29udGV4dCk6CisgICAgICAgIChSZWFjdERlYnVnVG9vbC5vbkhvc3RPcGVy
YXRpb24pOgorICAgICAgICAoUmVhY3REZWJ1Z1Rvb2wub25TZXRTdGF0ZSk6CisgICAgICAgIChS
ZWFjdERlYnVnVG9vbC5vblNldENoaWxkcmVuKToKKyAgICAgICAgKFJlYWN0RGVidWdUb29sLm9u
QmVmb3JlTW91bnRDb21wb25lbnQpOgorICAgICAgICAoUmVhY3REZWJ1Z1Rvb2wub25Nb3VudENv
bXBvbmVudCk6CisgICAgICAgIChSZWFjdERlYnVnVG9vbC5vbkJlZm9yZVVwZGF0ZUNvbXBvbmVu
dCk6CisgICAgICAgIChSZWFjdERlYnVnVG9vbC5vblVwZGF0ZUNvbXBvbmVudCk6CisgICAgICAg
IChSZWFjdERlYnVnVG9vbC5vbkJlZm9yZVVubW91bnRDb21wb25lbnQpOgorICAgICAgICAoUmVh
Y3REZWJ1Z1Rvb2wub25Vbm1vdW50Q29tcG9uZW50KToKKyAgICAgICAgKFJlYWN0RGVidWdUb29s
Lm9uVGVzdEV2ZW50KToKKyAgICAgICAgKDUwKToKKyAgICAgICAgKFJFU0VUX0JBVENIRURfVVBE
QVRFUy5jbG9zZSk6CisgICAgICAgIChSZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5VHJhbnNh
Y3Rpb24pOgorICAgICAgICAoUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneS5iYXRjaGVkVXBk
YXRlcyk6CisgICAgICAgICg1MSk6CisgICAgICAgIChpbmplY3QpOgorICAgICAgICAoNTIpOgor
ICAgICAgICAoNTMpOgorICAgICAgICAoUmVhY3RFbXB0eUNvbXBvbmVudEluamVjdGlvbi5pbmpl
Y3RFbXB0eUNvbXBvbmVudEZhY3RvcnkpOgorICAgICAgICAoUmVhY3RFbXB0eUNvbXBvbmVudC5j
cmVhdGUpOgorICAgICAgICAoNTQpOgorICAgICAgICAoaW52b2tlR3VhcmRlZENhbGxiYWNrKToK
KyAgICAgICAgKFJlYWN0RXJyb3JVdGlscy5yZXRocm93Q2F1Z2h0RXJyb3IpOgorICAgICAgICAo
UmVhY3RFcnJvclV0aWxzLmludm9rZUd1YXJkZWRDYWxsYmFjayk6CisgICAgICAgICg1NSk6Cisg
ICAgICAgIChydW5FdmVudFF1ZXVlSW5CYXRjaCk6CisgICAgICAgIChSZWFjdEV2ZW50RW1pdHRl
ck1peGluLmhhbmRsZVRvcExldmVsKToKKyAgICAgICAgKDU2KToKKyAgICAgICAgKGZpbmRQYXJl
bnQpOgorICAgICAgICAoVG9wTGV2ZWxDYWxsYmFja0Jvb2tLZWVwaW5nKToKKyAgICAgICAgKGhh
bmRsZVRvcExldmVsSW1wbCk6CisgICAgICAgIChzY3JvbGxWYWx1ZU1vbml0b3IpOgorICAgICAg
ICAoUmVhY3RFdmVudExpc3RlbmVyLnNldEhhbmRsZVRvcExldmVsKToKKyAgICAgICAgKFJlYWN0
RXZlbnRMaXN0ZW5lci5zZXRFbmFibGVkKToKKyAgICAgICAgKFJlYWN0RXZlbnRMaXN0ZW5lci5p
c0VuYWJsZWQpOgorICAgICAgICAoUmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQp
OgorICAgICAgICAoUmVhY3RFdmVudExpc3RlbmVyLnRyYXBDYXB0dXJlZEV2ZW50KToKKyAgICAg
ICAgKFJlYWN0RXZlbnRMaXN0ZW5lci5tb25pdG9yU2Nyb2xsVmFsdWUpOgorICAgICAgICAoUmVh
Y3RFdmVudExpc3RlbmVyLmRpc3BhdGNoRXZlbnQpOgorICAgICAgICAoNTcpOgorICAgICAgICAo
NTgpOgorICAgICAgICAoUmVhY3RIb3N0Q29tcG9uZW50SW5qZWN0aW9uLmluamVjdEdlbmVyaWND
b21wb25lbnRDbGFzcyk6CisgICAgICAgIChSZWFjdEhvc3RDb21wb25lbnRJbmplY3Rpb24uaW5q
ZWN0VGV4dENvbXBvbmVudENsYXNzKToKKyAgICAgICAgKFJlYWN0SG9zdENvbXBvbmVudEluamVj
dGlvbi5pbmplY3RDb21wb25lbnRDbGFzc2VzKToKKyAgICAgICAgKGNyZWF0ZUludGVybmFsQ29t
cG9uZW50KToKKyAgICAgICAgKGNyZWF0ZUluc3RhbmNlRm9yVGV4dCk6CisgICAgICAgIChpc1Rl
eHRDb21wb25lbnQpOgorICAgICAgICAoNTkpOgorICAgICAgICAoUmVhY3RIb3N0T3BlcmF0aW9u
SGlzdG9yeUhvb2sub25Ib3N0T3BlcmF0aW9uKToKKyAgICAgICAgKFJlYWN0SG9zdE9wZXJhdGlv
bkhpc3RvcnlIb29rLmNsZWFySGlzdG9yeSk6CisgICAgICAgIChSZWFjdEhvc3RPcGVyYXRpb25I
aXN0b3J5SG9vay5nZXRIaXN0b3J5KToKKyAgICAgICAgKDYwKToKKyAgICAgICAgKDYxKToKKyAg
ICAgICAgKGlzSW5Eb2N1bWVudCk6CisgICAgICAgIChSZWFjdElucHV0U2VsZWN0aW9uLmhhc1Nl
bGVjdGlvbkNhcGFiaWxpdGllcyk6CisgICAgICAgIChSZWFjdElucHV0U2VsZWN0aW9uLmdldFNl
bGVjdGlvbkluZm9ybWF0aW9uKToKKyAgICAgICAgKFJlYWN0SW5wdXRTZWxlY3Rpb24ucmVzdG9y
ZVNlbGVjdGlvbik6CisgICAgICAgIChSZWFjdElucHV0U2VsZWN0aW9uLmdldFNlbGVjdGlvbik6
CisgICAgICAgIChSZWFjdElucHV0U2VsZWN0aW9uLnNldFNlbGVjdGlvbik6CisgICAgICAgICg2
Mik6CisgICAgICAgIChSZWFjdEluc3RhbmNlTWFwLnJlbW92ZSk6CisgICAgICAgIChSZWFjdElu
c3RhbmNlTWFwLmhhcyk6CisgICAgICAgICg2NCk6CisgICAgICAgICh3YXJuSW52YWxpZFNldFN0
YXRlKToKKyAgICAgICAgKFJlYWN0SW52YWxpZFNldFN0YXRlV2FybmluZ0hvb2sub25CZWdpblBy
b2Nlc3NpbmdDaGlsZENvbnRleHQpOgorICAgICAgICAoUmVhY3RJbnZhbGlkU2V0U3RhdGVXYXJu
aW5nSG9vay5vbkVuZFByb2Nlc3NpbmdDaGlsZENvbnRleHQpOgorICAgICAgICAoUmVhY3RJbnZh
bGlkU2V0U3RhdGVXYXJuaW5nSG9vay5vblNldFN0YXRlKToKKyAgICAgICAgKDY1KToKKyAgICAg
ICAgKFJlYWN0TWFya3VwQ2hlY2tzdW0uYWRkQ2hlY2tzdW1Ub01hcmt1cCk6CisgICAgICAgIChS
ZWFjdE1hcmt1cENoZWNrc3VtLmNhblJldXNlTWFya3VwKToKKyAgICAgICAgKDY2KToKKyAgICAg
ICAgKGdldFJlYWN0Um9vdEVsZW1lbnRJbkNvbnRhaW5lcik6CisgICAgICAgIChpbnRlcm5hbEdl
dElEKToKKyAgICAgICAgKG1vdW50Q29tcG9uZW50SW50b05vZGUpOgorICAgICAgICAoYmF0Y2hl
ZE1vdW50Q29tcG9uZW50SW50b05vZGUpOgorICAgICAgICAodW5tb3VudENvbXBvbmVudEZyb21O
b2RlKToKKyAgICAgICAgKGhhc05vblJvb3RSZWFjdENoaWxkKToKKyAgICAgICAgKG5vZGVJc1Jl
bmRlcmVkQnlPdGhlckluc3RhbmNlKToKKyAgICAgICAgKGlzVmFsaWRDb250YWluZXIpOgorICAg
ICAgICAoZ2V0SG9zdFJvb3RJbnN0YW5jZUluQ29udGFpbmVyKToKKyAgICAgICAgKGdldFRvcExl
dmVsV3JhcHBlckluQ29udGFpbmVyKToKKyAgICAgICAgKFRvcExldmVsV3JhcHBlcik6CisgICAg
ICAgIChUb3BMZXZlbFdyYXBwZXIucHJvdG90eXBlLnJlbmRlcik6CisgICAgICAgIChSZWFjdE1v
dW50LnNjcm9sbE1vbml0b3IpOgorICAgICAgICAoUmVhY3RNb3VudC5fdXBkYXRlUm9vdENvbXBv
bmVudCk6CisgICAgICAgIChSZWFjdE1vdW50Ll9yZW5kZXJOZXdSb290Q29tcG9uZW50KToKKyAg
ICAgICAgKFJlYWN0TW91bnQucmVuZGVyU3VidHJlZUludG9Db250YWluZXIpOgorICAgICAgICAo
UmVhY3RNb3VudC5fcmVuZGVyU3VidHJlZUludG9Db250YWluZXIpOgorICAgICAgICAoUmVhY3RN
b3VudC5yZW5kZXIpOgorICAgICAgICAoUmVhY3RNb3VudC51bm1vdW50Q29tcG9uZW50QXROb2Rl
KToKKyAgICAgICAgKFJlYWN0TW91bnQuX21vdW50SW1hZ2VJbnRvTm9kZSk6CisgICAgICAgICg2
Nyk6CisgICAgICAgIChtYWtlSW5zZXJ0TWFya3VwKToKKyAgICAgICAgKG1ha2VNb3ZlKToKKyAg
ICAgICAgKG1ha2VSZW1vdmUpOgorICAgICAgICAobWFrZVNldE1hcmt1cCk6CisgICAgICAgICht
YWtlVGV4dENvbnRlbnQpOgorICAgICAgICAoZW5xdWV1ZSk6CisgICAgICAgIChwcm9jZXNzUXVl
dWUpOgorICAgICAgICAoZ2V0RGVidWdJRCk6CisgICAgICAgIChzZXRDaGlsZHJlbkZvckluc3Ry
dW1lbnRhdGlvbik6CisgICAgICAgIChSZWFjdE11bHRpQ2hpbGQuTWl4aW4uX3JlY29uY2lsZXJJ
bnN0YW50aWF0ZUNoaWxkcmVuKToKKyAgICAgICAgKFJlYWN0TXVsdGlDaGlsZC5NaXhpbi5fcmVj
b25jaWxlclVwZGF0ZUNoaWxkcmVuKToKKyAgICAgICAgKFJlYWN0TXVsdGlDaGlsZC5NaXhpbi5t
b3VudENoaWxkcmVuKToKKyAgICAgICAgKFJlYWN0TXVsdGlDaGlsZC5NaXhpbi51cGRhdGVUZXh0
Q29udGVudCk6CisgICAgICAgIChSZWFjdE11bHRpQ2hpbGQuTWl4aW4udXBkYXRlTWFya3VwKToK
KyAgICAgICAgKFJlYWN0TXVsdGlDaGlsZC5NaXhpbi51cGRhdGVDaGlsZHJlbik6CisgICAgICAg
IChSZWFjdE11bHRpQ2hpbGQuTWl4aW4uX3VwZGF0ZUNoaWxkcmVuKToKKyAgICAgICAgKFJlYWN0
TXVsdGlDaGlsZC5NaXhpbi51bm1vdW50Q2hpbGRyZW4pOgorICAgICAgICAoUmVhY3RNdWx0aUNo
aWxkLk1peGluLm1vdmVDaGlsZCk6CisgICAgICAgIChSZWFjdE11bHRpQ2hpbGQuTWl4aW4uY3Jl
YXRlQ2hpbGQpOgorICAgICAgICAoUmVhY3RNdWx0aUNoaWxkLk1peGluLnJlbW92ZUNoaWxkKToK
KyAgICAgICAgKFJlYWN0TXVsdGlDaGlsZC5NaXhpbi5fbW91bnRDaGlsZEF0SW5kZXgpOgorICAg
ICAgICAoUmVhY3RNdWx0aUNoaWxkLk1peGluLl91bm1vdW50Q2hpbGQpOgorICAgICAgICAoNjgp
OgorICAgICAgICAoUmVhY3ROb2RlVHlwZXMuZ2V0VHlwZSk6CisgICAgICAgICg2OSk6CisgICAg
ICAgIChpc1ZhbGlkT3duZXIpOgorICAgICAgICAoUmVhY3RPd25lci5hZGRDb21wb25lbnRBc1Jl
ZlRvKToKKyAgICAgICAgKFJlYWN0T3duZXIucmVtb3ZlQ29tcG9uZW50QXNSZWZGcm9tKToKKyAg
ICAgICAgKDcwKToKKyAgICAgICAgKHJvdW5kRmxvYXQpOgorICAgICAgICAoY29uc29sZVRhYmxl
KToKKyAgICAgICAgKHdhcm5JblByb2R1Y3Rpb24pOgorICAgICAgICAoZ2V0TGFzdE1lYXN1cmVt
ZW50cyk6CisgICAgICAgIChnZXRFeGNsdXNpdmUpOgorICAgICAgICAoZ2V0RXhjbHVzaXZlLik6
CisgICAgICAgIChnZXRJbmNsdXNpdmUpOgorICAgICAgICAoZ2V0SW5jbHVzaXZlLik6CisgICAg
ICAgIChnZXRXYXN0ZWQpOgorICAgICAgICAoZ2V0V2FzdGVkLik6CisgICAgICAgIChnZXRPcGVy
YXRpb25zLik6CisgICAgICAgIChnZXRPcGVyYXRpb25zKToKKyAgICAgICAgKHByaW50RXhjbHVz
aXZlKToKKyAgICAgICAgKHByaW50SW5jbHVzaXZlKToKKyAgICAgICAgKHByaW50V2FzdGVkKToK
KyAgICAgICAgKHByaW50T3BlcmF0aW9ucyk6CisgICAgICAgIChwcmludERPTSk6CisgICAgICAg
IChnZXRNZWFzdXJlbWVudHNTdW1tYXJ5TWFwKToKKyAgICAgICAgKHN0YXJ0KToKKyAgICAgICAg
KHN0b3ApOgorICAgICAgICAoaXNSdW5uaW5nKToKKyAgICAgICAgKDcxKToKKyAgICAgICAgKDcy
KToKKyAgICAgICAgKDczKToKKyAgICAgICAgKEVWRU5UX1NVUFBSRVNTSU9OLmluaXRpYWxpemUp
OgorICAgICAgICAoRVZFTlRfU1VQUFJFU1NJT04uY2xvc2UpOgorICAgICAgICAoT05fRE9NX1JF
QURZX1FVRVVFSU5HLmluaXRpYWxpemUpOgorICAgICAgICAoT05fRE9NX1JFQURZX1FVRVVFSU5H
LmNsb3NlKToKKyAgICAgICAgKE1peGluLmdldFRyYW5zYWN0aW9uV3JhcHBlcnMpOgorICAgICAg
ICAoTWl4aW4uZ2V0UmVhY3RNb3VudFJlYWR5KToKKyAgICAgICAgKE1peGluLmdldFVwZGF0ZVF1
ZXVlKToKKyAgICAgICAgKE1peGluLmNoZWNrcG9pbnQpOgorICAgICAgICAoTWl4aW4ucm9sbGJh
Y2spOgorICAgICAgICAoTWl4aW4uZGVzdHJ1Y3Rvcik6CisgICAgICAgICg3NCk6CisgICAgICAg
IChhdHRhY2hSZWZzKToKKyAgICAgICAgKFJlYWN0UmVjb25jaWxlci5tb3VudENvbXBvbmVudCk6
CisgICAgICAgIChSZWFjdFJlY29uY2lsZXIuZ2V0SG9zdE5vZGUpOgorICAgICAgICAoUmVhY3RS
ZWNvbmNpbGVyLnVubW91bnRDb21wb25lbnQpOgorICAgICAgICAoUmVhY3RSZWNvbmNpbGVyLnJl
Y2VpdmVDb21wb25lbnQpOgorICAgICAgICAoUmVhY3RSZWNvbmNpbGVyLnBlcmZvcm1VcGRhdGVJ
Zk5lY2Vzc2FyeSk6CisgICAgICAgICg3NSk6CisgICAgICAgIChkZXRhY2hSZWYpOgorICAgICAg
ICAoUmVhY3RSZWYuYXR0YWNoUmVmcyk6CisgICAgICAgIChSZWFjdFJlZi5zaG91bGRVcGRhdGVS
ZWZzKToKKyAgICAgICAgKFJlYWN0UmVmLmRldGFjaFJlZnMpOgorICAgICAgICAoNzYpOgorICAg
ICAgICAobm9vcENhbGxiYWNrUXVldWUuZW5xdWV1ZSk6CisgICAgICAgICg3Nyk6CisgICAgICAg
ICh3YXJuTm9vcCk6CisgICAgICAgIChSZWFjdFNlcnZlclVwZGF0ZVF1ZXVlLnByb3RvdHlwZS5p
c01vdW50ZWQpOgorICAgICAgICAoUmVhY3RTZXJ2ZXJVcGRhdGVRdWV1ZS5wcm90b3R5cGUuZW5x
dWV1ZUNhbGxiYWNrKToKKyAgICAgICAgKFJlYWN0U2VydmVyVXBkYXRlUXVldWUucHJvdG90eXBl
LmVucXVldWVGb3JjZVVwZGF0ZSk6CisgICAgICAgIChSZWFjdFNlcnZlclVwZGF0ZVF1ZXVlLnBy
b3RvdHlwZS5lbnF1ZXVlUmVwbGFjZVN0YXRlKToKKyAgICAgICAgKFJlYWN0U2VydmVyVXBkYXRl
UXVldWUucHJvdG90eXBlLmVucXVldWVTZXRTdGF0ZSk6CisgICAgICAgIChSZWFjdFNlcnZlclVw
ZGF0ZVF1ZXVlKToKKyAgICAgICAgKDc4KToKKyAgICAgICAgKE5vb3BJbnRlcm5hbENvbXBvbmVu
dC5wcm90b3R5cGUubW91bnRDb21wb25lbnQpOgorICAgICAgICAoTm9vcEludGVybmFsQ29tcG9u
ZW50LnByb3RvdHlwZS5yZWNlaXZlQ29tcG9uZW50KToKKyAgICAgICAgKE5vb3BJbnRlcm5hbENv
bXBvbmVudC5wcm90b3R5cGUudW5tb3VudENvbXBvbmVudCk6CisgICAgICAgIChOb29wSW50ZXJu
YWxDb21wb25lbnQucHJvdG90eXBlLmdldEhvc3ROb2RlKToKKyAgICAgICAgKE5vb3BJbnRlcm5h
bENvbXBvbmVudC5wcm90b3R5cGUuZ2V0UHVibGljSW5zdGFuY2UpOgorICAgICAgICAoTm9vcElu
dGVybmFsQ29tcG9uZW50KToKKyAgICAgICAgKFNoYWxsb3dDb21wb25lbnRXcmFwcGVyKToKKyAg
ICAgICAgKFJlYWN0U2hhbGxvd1JlbmRlcmVyLnByb3RvdHlwZS5nZXRNb3VudGVkSW5zdGFuY2Up
OgorICAgICAgICAoUmVhY3RTaGFsbG93UmVuZGVyZXIucHJvdG90eXBlLnJlbmRlcik6CisgICAg
ICAgIChSZWFjdFNoYWxsb3dSZW5kZXJlci5wcm90b3R5cGUuZ2V0UmVuZGVyT3V0cHV0KToKKyAg
ICAgICAgKFJlYWN0U2hhbGxvd1JlbmRlcmVyLnByb3RvdHlwZS51bm1vdW50KToKKyAgICAgICAg
KFJlYWN0U2hhbGxvd1JlbmRlcmVyLnByb3RvdHlwZS5fcmVuZGVyKToKKyAgICAgICAgKFJlYWN0
U2hhbGxvd1JlbmRlcmVyKToKKyAgICAgICAgKDc5KToKKyAgICAgICAgKEV2ZW50KToKKyAgICAg
ICAgKGZpbmRBbGxJblJlbmRlcmVkVHJlZUludGVybmFsKToKKyAgICAgICAgKFJlYWN0VGVzdFV0
aWxzLnJlbmRlckludG9Eb2N1bWVudCk6CisgICAgICAgIChSZWFjdFRlc3RVdGlscy5pc0VsZW1l
bnQpOgorICAgICAgICAoUmVhY3RUZXN0VXRpbHMuaXNFbGVtZW50T2ZUeXBlKToKKyAgICAgICAg
KFJlYWN0VGVzdFV0aWxzLmlzRE9NQ29tcG9uZW50KToKKyAgICAgICAgKFJlYWN0VGVzdFV0aWxz
LmlzRE9NQ29tcG9uZW50RWxlbWVudCk6CisgICAgICAgIChSZWFjdFRlc3RVdGlscy5pc0NvbXBv
c2l0ZUNvbXBvbmVudCk6CisgICAgICAgIChSZWFjdFRlc3RVdGlscy5pc0NvbXBvc2l0ZUNvbXBv
bmVudFdpdGhUeXBlKToKKyAgICAgICAgKFJlYWN0VGVzdFV0aWxzLmlzQ29tcG9zaXRlQ29tcG9u
ZW50RWxlbWVudCk6CisgICAgICAgIChSZWFjdFRlc3RVdGlscy5pc0NvbXBvc2l0ZUNvbXBvbmVu
dEVsZW1lbnRXaXRoVHlwZSk6CisgICAgICAgIChSZWFjdFRlc3RVdGlscy5nZXRSZW5kZXJlZENo
aWxkT2ZDb21wb3NpdGVDb21wb25lbnQpOgorICAgICAgICAoUmVhY3RUZXN0VXRpbHMuZmluZEFs
bEluUmVuZGVyZWRUcmVlKToKKyAgICAgICAgKFJlYWN0VGVzdFV0aWxzLik6CisgICAgICAgIChS
ZWFjdFRlc3RVdGlscy5zY3J5UmVuZGVyZWRET01Db21wb25lbnRzV2l0aENsYXNzKToKKyAgICAg
ICAgKFJlYWN0VGVzdFV0aWxzLmZpbmRSZW5kZXJlZERPTUNvbXBvbmVudFdpdGhDbGFzcyk6Cisg
ICAgICAgIChSZWFjdFRlc3RVdGlscy5zY3J5UmVuZGVyZWRET01Db21wb25lbnRzV2l0aFRhZyk6
CisgICAgICAgIChSZWFjdFRlc3RVdGlscy5maW5kUmVuZGVyZWRET01Db21wb25lbnRXaXRoVGFn
KToKKyAgICAgICAgKFJlYWN0VGVzdFV0aWxzLnNjcnlSZW5kZXJlZENvbXBvbmVudHNXaXRoVHlw
ZSk6CisgICAgICAgIChSZWFjdFRlc3RVdGlscy5maW5kUmVuZGVyZWRDb21wb25lbnRXaXRoVHlw
ZSk6CisgICAgICAgIChSZWFjdFRlc3RVdGlscy5tb2NrQ29tcG9uZW50KToKKyAgICAgICAgKFJl
YWN0VGVzdFV0aWxzLnNpbXVsYXRlTmF0aXZlRXZlbnRPbk5vZGUpOgorICAgICAgICAoUmVhY3RU
ZXN0VXRpbHMuc2ltdWxhdGVOYXRpdmVFdmVudE9uRE9NQ29tcG9uZW50KToKKyAgICAgICAgKFJl
YWN0VGVzdFV0aWxzLm5hdGl2ZVRvdWNoRGF0YSk6CisgICAgICAgIChSZWFjdFRlc3RVdGlscy5j
cmVhdGVSZW5kZXJlcik6CisgICAgICAgIChidWlsZFNpbXVsYXRvcnMpOgorICAgICAgICAoRXZl
bnRQbHVnaW5IdWIuaW5qZWN0aW9uLmluamVjdEV2ZW50UGx1Z2luT3JkZXIpOgorICAgICAgICAo
RXZlbnRQbHVnaW5IdWIuaW5qZWN0aW9uLmluamVjdEV2ZW50UGx1Z2luc0J5TmFtZSk6CisgICAg
ICAgIChtYWtlTmF0aXZlU2ltdWxhdG9yKToKKyAgICAgICAgKDgwKToKKyAgICAgICAgKGVucXVl
dWVVcGRhdGUpOgorICAgICAgICAoZm9ybWF0VW5leHBlY3RlZEFyZ3VtZW50KToKKyAgICAgICAg
KGdldEludGVybmFsSW5zdGFuY2VSZWFkeUZvclVwZGF0ZSk6CisgICAgICAgIChSZWFjdFVwZGF0
ZVF1ZXVlLmlzTW91bnRlZCk6CisgICAgICAgIChSZWFjdFVwZGF0ZVF1ZXVlLmVucXVldWVDYWxs
YmFjayk6CisgICAgICAgIChSZWFjdFVwZGF0ZVF1ZXVlLmVucXVldWVDYWxsYmFja0ludGVybmFs
KToKKyAgICAgICAgKFJlYWN0VXBkYXRlUXVldWUuZW5xdWV1ZUZvcmNlVXBkYXRlKToKKyAgICAg
ICAgKFJlYWN0VXBkYXRlUXVldWUuZW5xdWV1ZVJlcGxhY2VTdGF0ZSk6CisgICAgICAgIChSZWFj
dFVwZGF0ZVF1ZXVlLmVucXVldWVTZXRTdGF0ZSk6CisgICAgICAgIChSZWFjdFVwZGF0ZVF1ZXVl
LmVucXVldWVFbGVtZW50SW50ZXJuYWwpOgorICAgICAgICAoUmVhY3RVcGRhdGVRdWV1ZS52YWxp
ZGF0ZUNhbGxiYWNrKToKKyAgICAgICAgKDgxKToKKyAgICAgICAgKGVuc3VyZUluamVjdGVkKToK
KyAgICAgICAgKE5FU1RFRF9VUERBVEVTLmluaXRpYWxpemUpOgorICAgICAgICAoTkVTVEVEX1VQ
REFURVMuY2xvc2UpOgorICAgICAgICAoVVBEQVRFX1FVRVVFSU5HLmluaXRpYWxpemUpOgorICAg
ICAgICAoVVBEQVRFX1FVRVVFSU5HLmNsb3NlKToKKyAgICAgICAgKFJlYWN0VXBkYXRlc0ZsdXNo
VHJhbnNhY3Rpb24pOgorICAgICAgICAoYmF0Y2hlZFVwZGF0ZXMpOgorICAgICAgICAobW91bnRP
cmRlckNvbXBhcmF0b3IpOgorICAgICAgICAocnVuQmF0Y2hlZFVwZGF0ZXMpOgorICAgICAgICAo
Zmx1c2hCYXRjaGVkVXBkYXRlcyk6CisgICAgICAgIChhc2FwKToKKyAgICAgICAgKFJlYWN0VXBk
YXRlc0luamVjdGlvbi5pbmplY3RSZWNvbmNpbGVUcmFuc2FjdGlvbik6CisgICAgICAgIChSZWFj
dFVwZGF0ZXNJbmplY3Rpb24uaW5qZWN0QmF0Y2hpbmdTdHJhdGVneSk6CisgICAgICAgICg4Mik6
CisgICAgICAgICg4Myk6CisgICAgICAgICg4NCk6CisgICAgICAgIChnZXRTZWxlY3Rpb24pOgor
ICAgICAgICAoY29uc3RydWN0U2VsZWN0RXZlbnQpOgorICAgICAgICAoU2VsZWN0RXZlbnRQbHVn
aW4uZXh0cmFjdEV2ZW50cyk6CisgICAgICAgIChTZWxlY3RFdmVudFBsdWdpbi5kaWRQdXRMaXN0
ZW5lcik6CisgICAgICAgICg4NSk6CisgICAgICAgIChpc0ludGVyYWN0aXZlKToKKyAgICAgICAg
KHNob3VsZFByZXZlbnRNb3VzZUV2ZW50KToKKyAgICAgICAgKFNpbXBsZUV2ZW50UGx1Z2luLmV4
dHJhY3RFdmVudHMpOgorICAgICAgICAoU2ltcGxlRXZlbnRQbHVnaW4uZGlkUHV0TGlzdGVuZXIp
OgorICAgICAgICAoU2ltcGxlRXZlbnRQbHVnaW4ud2lsbERlbGV0ZUxpc3RlbmVyKToKKyAgICAg
ICAgKDg2KToKKyAgICAgICAgKFN5bnRoZXRpY0FuaW1hdGlvbkV2ZW50KToKKyAgICAgICAgKDg3
KToKKyAgICAgICAgKENsaXBib2FyZEV2ZW50SW50ZXJmYWNlLmNsaXBib2FyZERhdGEpOgorICAg
ICAgICAoU3ludGhldGljQ2xpcGJvYXJkRXZlbnQpOgorICAgICAgICAoODgpOgorICAgICAgICAo
U3ludGhldGljQ29tcG9zaXRpb25FdmVudCk6CisgICAgICAgICg4OSk6CisgICAgICAgIChTeW50
aGV0aWNEcmFnRXZlbnQpOgorICAgICAgICAoOTApOgorICAgICAgICAoRXZlbnRJbnRlcmZhY2Uu
dGltZVN0YW1wKToKKyAgICAgICAgKFN5bnRoZXRpY0V2ZW50KToKKyAgICAgICAgKEUpOgorICAg
ICAgICAoc2V0IFN5bnRoZXRpY0V2ZW50LmF1Z21lbnRDbGFzcyk6CisgICAgICAgICh3YXJuKToK
KyAgICAgICAgKFN5bnRoZXRpY0ZvY3VzRXZlbnQpOgorICAgICAgICAoOTIpOgorICAgICAgICAo
U3ludGhldGljSW5wdXRFdmVudCk6CisgICAgICAgICg5Myk6CisgICAgICAgIChLZXlib2FyZEV2
ZW50SW50ZXJmYWNlLmNoYXJDb2RlKToKKyAgICAgICAgKEtleWJvYXJkRXZlbnRJbnRlcmZhY2Uu
a2V5Q29kZSk6CisgICAgICAgIChLZXlib2FyZEV2ZW50SW50ZXJmYWNlKToKKyAgICAgICAgKFN5
bnRoZXRpY0tleWJvYXJkRXZlbnQpOgorICAgICAgICAoOTQpOgorICAgICAgICAoTW91c2VFdmVu
dEludGVyZmFjZS5idXR0b24pOgorICAgICAgICAoTW91c2VFdmVudEludGVyZmFjZS5yZWxhdGVk
VGFyZ2V0KToKKyAgICAgICAgKE1vdXNlRXZlbnRJbnRlcmZhY2UucGFnZVgpOgorICAgICAgICAo
TW91c2VFdmVudEludGVyZmFjZS5wYWdlWSk6CisgICAgICAgIChTeW50aGV0aWNNb3VzZUV2ZW50
KToKKyAgICAgICAgKDk1KToKKyAgICAgICAgKFN5bnRoZXRpY1RvdWNoRXZlbnQpOgorICAgICAg
ICAoOTYpOgorICAgICAgICAoU3ludGhldGljVHJhbnNpdGlvbkV2ZW50KToKKyAgICAgICAgKDk3
KToKKyAgICAgICAgKFVJRXZlbnRJbnRlcmZhY2Uudmlldyk6CisgICAgICAgIChVSUV2ZW50SW50
ZXJmYWNlLmRldGFpbCk6CisgICAgICAgIChTeW50aGV0aWNVSUV2ZW50KToKKyAgICAgICAgKDk4
KToKKyAgICAgICAgKFdoZWVsRXZlbnRJbnRlcmZhY2UuZGVsdGFYKToKKyAgICAgICAgKFdoZWVs
RXZlbnRJbnRlcmZhY2UuZGVsdGFZKToKKyAgICAgICAgKFN5bnRoZXRpY1doZWVsRXZlbnQpOgor
ICAgICAgICAoOTkpOgorICAgICAgICAoVHJhbnNhY3Rpb25JbXBsLnJlaW5pdGlhbGl6ZVRyYW5z
YWN0aW9uKToKKyAgICAgICAgKFRyYW5zYWN0aW9uSW1wbC5pc0luVHJhbnNhY3Rpb24pOgorICAg
ICAgICAoVHJhbnNhY3Rpb25JbXBsLnBlcmZvcm0pOgorICAgICAgICAoVHJhbnNhY3Rpb25JbXBs
LmluaXRpYWxpemVBbGwpOgorICAgICAgICAoVHJhbnNhY3Rpb25JbXBsLmNsb3NlQWxsKToKKyAg
ICAgICAgKDEwMCk6CisgICAgICAgIChWaWV3cG9ydE1ldHJpY3MucmVmcmVzaFNjcm9sbFZhbHVl
cyk6CisgICAgICAgICgxMDEpOgorICAgICAgICAoYWNjdW11bGF0ZUludG8pOgorICAgICAgICAo
MTAyKToKKyAgICAgICAgKGFkbGVyMzIpOgorICAgICAgICAoMTAzKToKKyAgICAgICAgKDEwNCk6
CisgICAgICAgIChjcmVhdGVNaWNyb3NvZnRVbnNhZmVMb2NhbEZ1bmN0aW9uKToKKyAgICAgICAg
KDEwNSk6CisgICAgICAgICgxMDYpOgorICAgICAgICAobWF0Y2hIdG1sUmVnRXhwKToKKyAgICAg
ICAgKGVzY2FwZVRleHRDb250ZW50Rm9yQnJvd3Nlcik6CisgICAgICAgICgxMDcpOgorICAgICAg
ICAoZmluZERPTU5vZGUpOgorICAgICAgICAoMTA4KToKKyAgICAgICAgKDEwOSk6CisgICAgICAg
IChmb3JFYWNoQWNjdW11bGF0ZWQpOgorICAgICAgICAoMTEwKToKKyAgICAgICAgKGdldEV2ZW50
Q2hhckNvZGUpOgorICAgICAgICAoMTExKToKKyAgICAgICAgKGdldEV2ZW50S2V5KToKKyAgICAg
ICAgKDExMik6CisgICAgICAgIChtb2RpZmllclN0YXRlR2V0dGVyKToKKyAgICAgICAgKGdldEV2
ZW50TW9kaWZpZXJTdGF0ZSk6CisgICAgICAgICgxMTMpOgorICAgICAgICAoZ2V0RXZlbnRUYXJn
ZXQpOgorICAgICAgICAoMTE0KToKKyAgICAgICAgKGdldEhvc3RDb21wb25lbnRGcm9tQ29tcG9z
aXRlKToKKyAgICAgICAgKDExNSk6CisgICAgICAgIChnZXRJdGVyYXRvckZuKToKKyAgICAgICAg
KDExNik6CisgICAgICAgIChnZXROZXh0RGVidWdJRCk6CisgICAgICAgICgxMTcpOgorICAgICAg
ICAoZ2V0TGVhZk5vZGUpOgorICAgICAgICAoZ2V0U2libGluZ05vZGUpOgorICAgICAgICAoZ2V0
Tm9kZUZvckNoYXJhY3Rlck9mZnNldCk6CisgICAgICAgICgxMTgpOgorICAgICAgICAoZ2V0VGV4
dENvbnRlbnRBY2Nlc3Nvcik6CisgICAgICAgICgxMTkpOgorICAgICAgICAobWFrZVByZWZpeE1h
cCk6CisgICAgICAgIChnZXRWZW5kb3JQcmVmaXhlZEV2ZW50TmFtZSk6CisgICAgICAgICgxMjAp
OgorICAgICAgICAoUmVhY3RDb21wb3NpdGVDb21wb25lbnRXcmFwcGVyKToKKyAgICAgICAgKGlz
SW50ZXJuYWxDb21wb25lbnRUeXBlKToKKyAgICAgICAgKGluc3RhbnRpYXRlUmVhY3RDb21wb25l
bnQpOgorICAgICAgICAoMTIxKToKKyAgICAgICAgKGlzRXZlbnRTdXBwb3J0ZWQpOgorICAgICAg
ICAoMTIyKToKKyAgICAgICAgKGlzVGV4dElucHV0RWxlbWVudCk6CisgICAgICAgICgxMjMpOgor
ICAgICAgICAocXVvdGVBdHRyaWJ1dGVWYWx1ZUZvckJyb3dzZXIpOgorICAgICAgICAoMTI0KToK
KyAgICAgICAgKHJlYWN0UHJvZEludmFyaWFudCk6CisgICAgICAgICgxMjUpOgorICAgICAgICAo
MTI2KToKKyAgICAgICAgKHNldElubmVySFRNTCk6CisgICAgICAgICgxMjcpOgorICAgICAgICAo
c2V0VGV4dENvbnRlbnQpOgorICAgICAgICAoMTI4KToKKyAgICAgICAgKHNob3VsZFVwZGF0ZVJl
YWN0Q29tcG9uZW50KToKKyAgICAgICAgKDEyOSk6CisgICAgICAgIChnZXRDb21wb25lbnRLZXkp
OgorICAgICAgICAodHJhdmVyc2VBbGxDaGlsZHJlbkltcGwpOgorICAgICAgICAodHJhdmVyc2VB
bGxDaGlsZHJlbik6CisgICAgICAgICgxMzApOgorICAgICAgICAodXBkYXRlZEFuY2VzdG9ySW5m
byk6CisgICAgICAgIChpc1RhZ1ZhbGlkV2l0aFBhcmVudCk6CisgICAgICAgIChmaW5kSW52YWxp
ZEFuY2VzdG9yRm9yVGFnKToKKyAgICAgICAgKGZpbmRPd25lclN0YWNrKToKKyAgICAgICAgKHZh
bGlkYXRlRE9NTmVzdGluZyk6CisgICAgICAgICh2YWxpZGF0ZURPTU5lc3RpbmcuaXNUYWdWYWxp
ZEluQ29udGV4dCk6CisgICAgICAgICgxMzEpOgorICAgICAgICAoMTMyKToKKyAgICAgICAgKDEz
Myk6CisgICAgICAgICgxMzQpOgorICAgICAgICAoRXZlbnRMaXN0ZW5lci5yZXR1cm4ucmVtb3Zl
KToKKyAgICAgICAgKEV2ZW50TGlzdGVuZXIuZWxzZS5yZXR1cm4ucmVtb3ZlKToKKyAgICAgICAg
KEV2ZW50TGlzdGVuZXIubGlzdGVuKToKKyAgICAgICAgKEV2ZW50TGlzdGVuZXIuY2FwdHVyZSk6
CisgICAgICAgIChFdmVudExpc3RlbmVyLnJlZ2lzdGVyRGVmYXVsdCk6CisgICAgICAgICgxMzUp
OgorICAgICAgICAoMTM2KToKKyAgICAgICAgKGNhbWVsaXplKToKKyAgICAgICAgKDEzNyk6Cisg
ICAgICAgIChjYW1lbGl6ZVN0eWxlTmFtZSk6CisgICAgICAgICgxMzgpOgorICAgICAgICAoY29u
dGFpbnNOb2RlKToKKyAgICAgICAgKDEzOSk6CisgICAgICAgICh0b0FycmF5KToKKyAgICAgICAg
KGhhc0FycmF5TmF0dXJlKToKKyAgICAgICAgKDE0MCk6CisgICAgICAgIChnZXROb2RlTmFtZSk6
CisgICAgICAgIChjcmVhdGVOb2Rlc0Zyb21NYXJrdXApOgorICAgICAgICAoMTQxKToKKyAgICAg
ICAgKG1ha2VFbXB0eUZ1bmN0aW9uKToKKyAgICAgICAgKGVtcHR5RnVuY3Rpb24pOgorICAgICAg
ICAoZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc1RoaXMpOgorICAgICAgICAoZW1wdHlGdW5jdGlv
bi50aGF0UmV0dXJuc0FyZ3VtZW50KToKKyAgICAgICAgKDE0Mik6CisgICAgICAgICgxNDMpOgor
ICAgICAgICAoZm9jdXNOb2RlKToKKyAgICAgICAgKDE0NCk6CisgICAgICAgIChnZXRBY3RpdmVF
bGVtZW50KToKKyAgICAgICAgKDE0NSk6CisgICAgICAgICgxNDYpOgorICAgICAgICAoZ2V0VW5i
b3VuZGVkU2Nyb2xsUG9zaXRpb24pOgorICAgICAgICAoMTQ3KToKKyAgICAgICAgKGh5cGhlbmF0
ZSk6CisgICAgICAgICgxNDgpOgorICAgICAgICAoaHlwaGVuYXRlU3R5bGVOYW1lKToKKyAgICAg
ICAgKDE0OSk6CisgICAgICAgIChpbnZhcmlhbnQpOgorICAgICAgICAoMTUwKToKKyAgICAgICAg
KGlzTm9kZSk6CisgICAgICAgICgxNTEpOgorICAgICAgICAoaXNUZXh0Tm9kZSk6CisgICAgICAg
ICgxNTIpOgorICAgICAgICAobWVtb2l6ZVN0cmluZ09ubHkpOgorICAgICAgICAoMTUzKToKKyAg
ICAgICAgKDE1NCk6CisgICAgICAgIChwZXJmb3JtYW5jZU5vdyk6CisgICAgICAgIChlbHNlLnBl
cmZvcm1hbmNlTm93KToKKyAgICAgICAgKDE1NSk6CisgICAgICAgIChpcyk6CisgICAgICAgIChz
aGFsbG93RXF1YWwpOgorICAgICAgICAoMTU2KToKKyAgICAgICAgKDE1Nyk6CisgICAgICAgICh0
b09iamVjdCk6CisgICAgICAgIChzaG91bGRVc2VOYXRpdmUpOgorICAgICAgICAobW9kdWxlLmV4
cG9ydHMuc2hvdWxkVXNlTmF0aXZlLk9iamVjdC5hc3NpZ24pOgorICAgICAgICAoMTU4KToKKyAg
ICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9kaXN0L3JlYWN0LWRvbS5taW4uanM6IEFk
ZGVkLgorICAgICAgICAobyk6CisgICAgICAgIChyZXR1cm4uZSk6CisgICAgICAgICgxKToKKyAg
ICAgICAgKGkuZm9jdXNET01Db21wb25lbnQpOgorICAgICAgICAoMik6CisgICAgICAgIChyKToK
KyAgICAgICAgKGkpOgorICAgICAgICAoYSk6CisgICAgICAgIChzKToKKyAgICAgICAgKHUpOgor
ICAgICAgICAobCk6CisgICAgICAgIChjKToKKyAgICAgICAgKHApOgorICAgICAgICAoZCk6Cisg
ICAgICAgIChTLmV4dHJhY3RFdmVudHMpOgorICAgICAgICAoMyk6CisgICAgICAgICg0KToKKyAg
ICAgICAgKGQuY3JlYXRlTWFya3VwRm9yU3R5bGVzKToKKyAgICAgICAgKGQuc2V0VmFsdWVGb3JT
dHlsZXMpOgorICAgICAgICAoNSk6CisgICAgICAgICg2KToKKyAgICAgICAgKHQuZXhwb3J0cy5p
LmFkZFBvb2xpbmdUbyk6CisgICAgICAgIChoKToKKyAgICAgICAgKG0pOgorICAgICAgICAodik6
CisgICAgICAgIChELmV4dHJhY3RFdmVudHMpOgorICAgICAgICAoZy5wcm9jZXNzVXBkYXRlcyk6
CisgICAgICAgICg4KToKKyAgICAgICAgKDkpOgorICAgICAgICAoMTApOgorICAgICAgICAocy5p
c0N1c3RvbUF0dHJpYnV0ZSk6CisgICAgICAgICgxMSk6CisgICAgICAgIChjLmNyZWF0ZU1hcmt1
cEZvcklEKToKKyAgICAgICAgKGMuc2V0QXR0cmlidXRlRm9ySUQpOgorICAgICAgICAoYy5jcmVh
dGVNYXJrdXBGb3JSb290KToKKyAgICAgICAgKGMuc2V0QXR0cmlidXRlRm9yUm9vdCk6CisgICAg
ICAgIChjLmNyZWF0ZU1hcmt1cEZvclByb3BlcnR5KToKKyAgICAgICAgKGMuY3JlYXRlTWFya3Vw
Rm9yQ3VzdG9tQXR0cmlidXRlKToKKyAgICAgICAgKGMuc2V0VmFsdWVGb3JQcm9wZXJ0eSk6Cisg
ICAgICAgIChjLnNldFZhbHVlRm9yQXR0cmlidXRlKToKKyAgICAgICAgKGMuZGVsZXRlVmFsdWVG
b3JBdHRyaWJ1dGUpOgorICAgICAgICAoYy5kZWxldGVWYWx1ZUZvclByb3BlcnR5KToKKyAgICAg
ICAgKDEyKToKKyAgICAgICAgKDEzKToKKyAgICAgICAgKDE0KToKKyAgICAgICAgKHMuZXh0cmFj
dEV2ZW50cyk6CisgICAgICAgICgxNSk6CisgICAgICAgIChmKToKKyAgICAgICAgKG0ucHV0TGlz
dGVuZXIpOgorICAgICAgICAobS5nZXRMaXN0ZW5lcik6CisgICAgICAgIChtLmRlbGV0ZUxpc3Rl
bmVyKToKKyAgICAgICAgKG0uZGVsZXRlQWxsTGlzdGVuZXJzKToKKyAgICAgICAgKG0uZXh0cmFj
dEV2ZW50cyk6CisgICAgICAgIChtLmVucXVldWVFdmVudHMpOgorICAgICAgICAobS5wcm9jZXNz
RXZlbnRRdWV1ZSk6CisgICAgICAgIChtLl9fcHVyZ2UpOgorICAgICAgICAobS5fX2dldExpc3Rl
bmVyQmFuayk6CisgICAgICAgICgxNik6CisgICAgICAgIChsLmluamVjdEV2ZW50UGx1Z2luT3Jk
ZXIpOgorICAgICAgICAobC5pbmplY3RFdmVudFBsdWdpbnNCeU5hbWUpOgorICAgICAgICAobC5n
ZXRQbHVnaW5Nb2R1bGVGb3JFdmVudCk6CisgICAgICAgIChsLl9yZXNldEV2ZW50UGx1Z2lucyk6
CisgICAgICAgICgxNyk6CisgICAgICAgIChnLmdldEluc3RhbmNlRnJvbU5vZGUpOgorICAgICAg
ICAoZy5nZXROb2RlRnJvbUluc3RhbmNlKToKKyAgICAgICAgKGcuaXNBbmNlc3Rvcik6CisgICAg
ICAgIChnLmdldExvd2VzdENvbW1vbkFuY2VzdG9yKToKKyAgICAgICAgKGcuZ2V0UGFyZW50SW5z
dGFuY2UpOgorICAgICAgICAoZy50cmF2ZXJzZVR3b1BoYXNlKToKKyAgICAgICAgKGcudHJhdmVy
c2VFbnRlckxlYXZlKToKKyAgICAgICAgKDE4KToKKyAgICAgICAgKDE5KToKKyAgICAgICAgKDIw
KToKKyAgICAgICAgKDIxKToKKyAgICAgICAgKDIyKToKKyAgICAgICAgKHAudmFsdWUpOgorICAg
ICAgICAocC5jaGVja2VkKToKKyAgICAgICAgKGYuY2hlY2tQcm9wVHlwZXMpOgorICAgICAgICAo
Zi5nZXRWYWx1ZSk6CisgICAgICAgIChmLmdldENoZWNrZWQpOgorICAgICAgICAoZi5leGVjdXRl
T25DaGFuZ2UpOgorICAgICAgICAoMjMpOgorICAgICAgICAoMjQpOgorICAgICAgICAoMjUpOgor
ICAgICAgICAoMjYpOgorICAgICAgICAoMjcpOgorICAgICAgICAoaS5pbmplY3Rpb24uaW5qZWN0
RW52aXJvbm1lbnQpOgorICAgICAgICAoMjgpOgorICAgICAgICAoci5wcm90b3R5cGUucmVuZGVy
KToKKyAgICAgICAgKGIuY29uc3RydWN0KToKKyAgICAgICAgKGIubW91bnRDb21wb25lbnQpOgor
ICAgICAgICAoYi5fY29uc3RydWN0Q29tcG9uZW50KToKKyAgICAgICAgKGIuX2NvbnN0cnVjdENv
bXBvbmVudFdpdGhvdXRPd25lcik6CisgICAgICAgIChiLnBlcmZvcm1Jbml0aWFsTW91bnRXaXRo
RXJyb3JIYW5kbGluZyk6CisgICAgICAgIChiLnBlcmZvcm1Jbml0aWFsTW91bnQpOgorICAgICAg
ICAoYi5nZXRIb3N0Tm9kZSk6CisgICAgICAgIChiLnVubW91bnRDb21wb25lbnQpOgorICAgICAg
ICAoYi5fbWFza0NvbnRleHQpOgorICAgICAgICAoYi5fcHJvY2Vzc0NvbnRleHQpOgorICAgICAg
ICAoYi5fcHJvY2Vzc0NoaWxkQ29udGV4dCk6CisgICAgICAgIChiLl9jaGVja0NvbnRleHRUeXBl
cyk6CisgICAgICAgIChiLnJlY2VpdmVDb21wb25lbnQpOgorICAgICAgICAoYi5wZXJmb3JtVXBk
YXRlSWZOZWNlc3NhcnkpOgorICAgICAgICAoYi51cGRhdGVDb21wb25lbnQpOgorICAgICAgICAo
Yi5fcHJvY2Vzc1BlbmRpbmdTdGF0ZSk6CisgICAgICAgIChiLl9wZXJmb3JtQ29tcG9uZW50VXBk
YXRlKToKKyAgICAgICAgKGIuX3VwZGF0ZVJlbmRlcmVkQ29tcG9uZW50KToKKyAgICAgICAgKGIu
X3JlcGxhY2VOb2RlV2l0aE1hcmt1cCk6CisgICAgICAgIChiLl9yZW5kZXJWYWxpZGF0ZWRDb21w
b25lbnRXaXRob3V0T3duZXJPckNvbnRleHQpOgorICAgICAgICAoYi5fcmVuZGVyVmFsaWRhdGVk
Q29tcG9uZW50KToKKyAgICAgICAgKGIuYXR0YWNoUmVmKToKKyAgICAgICAgKGIuZGV0YWNoUmVm
KToKKyAgICAgICAgKGIuZ2V0TmFtZSk6CisgICAgICAgIChiLmdldFB1YmxpY0luc3RhbmNlKToK
KyAgICAgICAgKDI5KToKKyAgICAgICAgKHN0cmluZ19hcHBlYXJlZF9oZXJlLnR5cGVvZi5fX1JF
QUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18uc3RyaW5nX2FwcGVhcmVkX2hlcmUudHlwZW9mLl9f
UkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXy5pbmplY3QuX19SRUFDVF9ERVZUT09MU19HTE9C
QUxfSE9PS19fLmluamVjdC4pOgorICAgICAgICAoMzApOgorICAgICAgICAoaC5NaXhpbi5tb3Vu
dENvbXBvbmVudCk6CisgICAgICAgIChoLk1peGluLl9jcmVhdGVPcGVuVGFnTWFya3VwQW5kUHV0
TGlzdGVuZXJzKToKKyAgICAgICAgKGguTWl4aW4uX2NyZWF0ZUNvbnRlbnRNYXJrdXApOgorICAg
ICAgICAoaC5NaXhpbi5fY3JlYXRlSW5pdGlhbENoaWxkcmVuKToKKyAgICAgICAgKGguTWl4aW4u
cmVjZWl2ZUNvbXBvbmVudCk6CisgICAgICAgIChoLk1peGluLnVwZGF0ZUNvbXBvbmVudCk6Cisg
ICAgICAgIChoLk1peGluLl91cGRhdGVET01Qcm9wZXJ0aWVzKToKKyAgICAgICAgKGguTWl4aW4u
X3VwZGF0ZURPTUNoaWxkcmVuKToKKyAgICAgICAgKGguTWl4aW4uZ2V0SG9zdE5vZGUpOgorICAg
ICAgICAoaC5NaXhpbi51bm1vdW50Q29tcG9uZW50KToKKyAgICAgICAgKGguTWl4aW4uZ2V0UHVi
bGljSW5zdGFuY2UpOgorICAgICAgICAoMzEpOgorICAgICAgICAoMzIpOgorICAgICAgICAoMzMp
OgorICAgICAgICAoMzQpOgorICAgICAgICAoMzUpOgorICAgICAgICAoMzYpOgorICAgICAgICAo
aS5kYW5nZXJvdXNseVByb2Nlc3NDaGlsZHJlblVwZGF0ZXMpOgorICAgICAgICAoMzcpOgorICAg
ICAgICAoMzgpOgorICAgICAgICAobC5tb3VudFdyYXBwZXIpOgorICAgICAgICAobC5wb3N0TW91
bnRXcmFwcGVyKToKKyAgICAgICAgKGwuZ2V0SG9zdFByb3BzKToKKyAgICAgICAgKDM5KToKKyAg
ICAgICAgKHAuZ2V0SG9zdFByb3BzKToKKyAgICAgICAgKHAubW91bnRXcmFwcGVyKToKKyAgICAg
ICAgKHAuZ2V0U2VsZWN0VmFsdWVDb250ZXh0KToKKyAgICAgICAgKHAucG9zdFVwZGF0ZVdyYXBw
ZXIpOgorICAgICAgICAoNDApOgorICAgICAgICAoNDEpOgorICAgICAgICAoNDIpOgorICAgICAg
ICAoNDMpOgorICAgICAgICAoNDQpOgorICAgICAgICAoNDUpOgorICAgICAgICAodS5jbG9zZSk6
CisgICAgICAgIChkLmJhdGNoZWRVcGRhdGVzKToKKyAgICAgICAgKDQ2KToKKyAgICAgICAgKDQ3
KToKKyAgICAgICAgKDQ4KToKKyAgICAgICAgKG8uaW5qZWN0RW1wdHlDb21wb25lbnRGYWN0b3J5
KToKKyAgICAgICAgKGkuY3JlYXRlKToKKyAgICAgICAgKDQ5KToKKyAgICAgICAgKGkucmV0aHJv
d0NhdWdodEVycm9yKToKKyAgICAgICAgKDUwKToKKyAgICAgICAgKGkuaGFuZGxlVG9wTGV2ZWwp
OgorICAgICAgICAoNTEpOgorICAgICAgICAobS5zZXRIYW5kbGVUb3BMZXZlbCk6CisgICAgICAg
IChtLnNldEVuYWJsZWQpOgorICAgICAgICAobS5pc0VuYWJsZWQpOgorICAgICAgICAobS50cmFw
QnViYmxlZEV2ZW50KToKKyAgICAgICAgKG0udHJhcENhcHR1cmVkRXZlbnQpOgorICAgICAgICAo
bS5tb25pdG9yU2Nyb2xsVmFsdWUpOgorICAgICAgICAobS5kaXNwYXRjaEV2ZW50KToKKyAgICAg
ICAgKDUyKToKKyAgICAgICAgKDUzKToKKyAgICAgICAgKHAuaW5qZWN0R2VuZXJpY0NvbXBvbmVu
dENsYXNzKToKKyAgICAgICAgKHAuaW5qZWN0VGV4dENvbXBvbmVudENsYXNzKToKKyAgICAgICAg
KHAuaW5qZWN0Q29tcG9uZW50Q2xhc3Nlcyk6CisgICAgICAgICg1NCk6CisgICAgICAgICg1NSk6
CisgICAgICAgICh1Lmhhc1NlbGVjdGlvbkNhcGFiaWxpdGllcyk6CisgICAgICAgICh1LmdldFNl
bGVjdGlvbkluZm9ybWF0aW9uKToKKyAgICAgICAgKHUucmVzdG9yZVNlbGVjdGlvbik6CisgICAg
ICAgICh1LmdldFNlbGVjdGlvbik6CisgICAgICAgICh1LnNldFNlbGVjdGlvbik6CisgICAgICAg
ICg1Nik6CisgICAgICAgIChyLnJlbW92ZSk6CisgICAgICAgIChyLmhhcyk6CisgICAgICAgICg1
OCk6CisgICAgICAgIChhLmFkZENoZWNrc3VtVG9NYXJrdXApOgorICAgICAgICAoYS5jYW5SZXVz
ZU1hcmt1cCk6CisgICAgICAgICg1OSk6CisgICAgICAgIChGKToKKyAgICAgICAgKEYucHJvdG90
eXBlLnJlbmRlcik6CisgICAgICAgIChCLnNjcm9sbE1vbml0b3IpOgorICAgICAgICAoQi5fdXBk
YXRlUm9vdENvbXBvbmVudCk6CisgICAgICAgIChCLl9yZW5kZXJOZXdSb290Q29tcG9uZW50KToK
KyAgICAgICAgKEIucmVuZGVyU3VidHJlZUludG9Db250YWluZXIpOgorICAgICAgICAoQi5fcmVu
ZGVyU3VidHJlZUludG9Db250YWluZXIpOgorICAgICAgICAoQi5yZW5kZXIpOgorICAgICAgICAo
Qi51bm1vdW50Q29tcG9uZW50QXROb2RlKToKKyAgICAgICAgKEIuX21vdW50SW1hZ2VJbnRvTm9k
ZSk6CisgICAgICAgICg2MCk6CisgICAgICAgICg2MSk6CisgICAgICAgICg2Mik6CisgICAgICAg
ICg2Myk6CisgICAgICAgICg2NCk6CisgICAgICAgIChkLmluaXRpYWxpemUpOgorICAgICAgICAo
ZC5jbG9zZSk6CisgICAgICAgIChmLmluaXRpYWxpemUpOgorICAgICAgICAoZi5jbG9zZSk6Cisg
ICAgICAgIChtLmdldFRyYW5zYWN0aW9uV3JhcHBlcnMpOgorICAgICAgICAobS5nZXRSZWFjdE1v
dW50UmVhZHkpOgorICAgICAgICAobS5nZXRVcGRhdGVRdWV1ZSk6CisgICAgICAgIChtLmNoZWNr
cG9pbnQpOgorICAgICAgICAobS5yb2xsYmFjayk6CisgICAgICAgIChtLmRlc3RydWN0b3IpOgor
ICAgICAgICAoNjUpOgorICAgICAgICAoNjYpOgorICAgICAgICAoYS5hdHRhY2hSZWZzKToKKyAg
ICAgICAgKGEuc2hvdWxkVXBkYXRlUmVmcyk6CisgICAgICAgIChhLmRldGFjaFJlZnMpOgorICAg
ICAgICAoNjcpOgorICAgICAgICAobC5lbnF1ZXVlKToKKyAgICAgICAgKGMuZ2V0VHJhbnNhY3Rp
b25XcmFwcGVycyk6CisgICAgICAgIChjLmdldFJlYWN0TW91bnRSZWFkeSk6CisgICAgICAgIChj
LmdldFVwZGF0ZVF1ZXVlKToKKyAgICAgICAgKGMuZGVzdHJ1Y3Rvcik6CisgICAgICAgIChjLmNo
ZWNrcG9pbnQpOgorICAgICAgICAoYy5yb2xsYmFjayk6CisgICAgICAgICg2OCk6CisgICAgICAg
ICg2OSk6CisgICAgICAgICg3MCk6CisgICAgICAgIChFLmluaXRpYWxpemUpOgorICAgICAgICAo
RS5jbG9zZSk6CisgICAgICAgICh4LmluaXRpYWxpemUpOgorICAgICAgICAoeC5jbG9zZSk6Cisg
ICAgICAgIChUKToKKyAgICAgICAgKGsuaW5qZWN0UmVjb25jaWxlVHJhbnNhY3Rpb24pOgorICAg
ICAgICAoay5pbmplY3RCYXRjaGluZ1N0cmF0ZWd5KToKKyAgICAgICAgKDcxKToKKyAgICAgICAg
KDcyKToKKyAgICAgICAgKDczKToKKyAgICAgICAgKEMuZXh0cmFjdEV2ZW50cyk6CisgICAgICAg
IChDLmRpZFB1dExpc3RlbmVyKToKKyAgICAgICAgKDc0KToKKyAgICAgICAgKGsuZXh0cmFjdEV2
ZW50cyk6CisgICAgICAgIChrLmRpZFB1dExpc3RlbmVyKToKKyAgICAgICAgKGsud2lsbERlbGV0
ZUxpc3RlbmVyKToKKyAgICAgICAgKDc1KToKKyAgICAgICAgKDc2KToKKyAgICAgICAgKGkuY2xp
cGJvYXJkRGF0YSk6CisgICAgICAgICg3Nyk6CisgICAgICAgICg3OCk6CisgICAgICAgICg3OSk6
CisgICAgICAgICh1LnRpbWVTdGFtcCk6CisgICAgICAgIChyLmF1Z21lbnRDbGFzcyk6CisgICAg
ICAgICg4MCk6CisgICAgICAgICg4MSk6CisgICAgICAgICg4Mik6CisgICAgICAgICh1LmNoYXJD
b2RlKToKKyAgICAgICAgKHUua2V5Q29kZSk6CisgICAgICAgICg4Myk6CisgICAgICAgIChzLmJ1
dHRvbik6CisgICAgICAgIChzLnJlbGF0ZWRUYXJnZXQpOgorICAgICAgICAocy5wYWdlWCk6Cisg
ICAgICAgIChzLnBhZ2VZKToKKyAgICAgICAgKDg0KToKKyAgICAgICAgKDg1KToKKyAgICAgICAg
KDg2KToKKyAgICAgICAgKGEudmlldyk6CisgICAgICAgIChhLmRldGFpbCk6CisgICAgICAgICg4
Nyk6CisgICAgICAgIChpLmRlbHRhWCk6CisgICAgICAgIChpLmRlbHRhWSk6CisgICAgICAgICg4
OCk6CisgICAgICAgIChpLnJlaW5pdGlhbGl6ZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKGkuaXNJ
blRyYW5zYWN0aW9uKToKKyAgICAgICAgKGkucGVyZm9ybSk6CisgICAgICAgIChpLmluaXRpYWxp
emVBbGwpOgorICAgICAgICAoaS5jbG9zZUFsbCk6CisgICAgICAgICg4OSk6CisgICAgICAgIChy
LnJlZnJlc2hTY3JvbGxWYWx1ZXMpOgorICAgICAgICAoOTApOgorICAgICAgICAoOTEpOgorICAg
ICAgICAoOTIpOgorICAgICAgICAoOTMpOgorICAgICAgICAoOTQpOgorICAgICAgICAqIFNwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2Rl
X21vZHVsZXMvcmVhY3QtZG9tL2luZGV4LmpzOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1
bGVzL3JlYWN0LWRvbS9saWIvQVJJQURPTVByb3BlcnR5Q29uZmlnLmpzOiBBZGRlZC4KKyAgICAg
ICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
cmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvQXV0b0ZvY3VzVXRpbHMuanM6IEFkZGVk
LgorICAgICAgICAoQXV0b0ZvY3VzVXRpbHMuZm9jdXNET01Db21wb25lbnQpOgorICAgICAgICAq
IFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFj
dC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9CZWZvcmVJbnB1dEV2ZW50UGx1Z2luLmpzOiBB
ZGRlZC4KKyAgICAgICAgKGlzUHJlc3RvKToKKyAgICAgICAgKGlzS2V5cHJlc3NDb21tYW5kKToK
KyAgICAgICAgKGdldENvbXBvc2l0aW9uRXZlbnRUeXBlKToKKyAgICAgICAgKGlzRmFsbGJhY2tD
b21wb3NpdGlvblN0YXJ0KToKKyAgICAgICAgKGlzRmFsbGJhY2tDb21wb3NpdGlvbkVuZCk6Cisg
ICAgICAgIChnZXREYXRhRnJvbUN1c3RvbUV2ZW50KToKKyAgICAgICAgKGV4dHJhY3RDb21wb3Np
dGlvbkV2ZW50KToKKyAgICAgICAgKGdldE5hdGl2ZUJlZm9yZUlucHV0Q2hhcnMpOgorICAgICAg
ICAoZ2V0RmFsbGJhY2tCZWZvcmVJbnB1dENoYXJzKToKKyAgICAgICAgKGV4dHJhY3RCZWZvcmVJ
bnB1dEV2ZW50KToKKyAgICAgICAgKEJlZm9yZUlucHV0RXZlbnRQbHVnaW4uZXh0cmFjdEV2ZW50
cyk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL0NTU1Byb3BlcnR5Lmpz
OiBBZGRlZC4KKyAgICAgICAgKHByZWZpeEtleSk6CisgICAgICAgIChPYmplY3Qua2V5cy5pc1Vu
aXRsZXNzTnVtYmVyLmZvckVhY2gpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9t
L2xpYi9DU1NQcm9wZXJ0eU9wZXJhdGlvbnMuanM6IEFkZGVkLgorICAgICAgICAocHJvY2Vzc1N0
eWxlTmFtZS5tZW1vaXplU3RyaW5nT25seSk6CisgICAgICAgIChFeGVjdXRpb25FbnZpcm9ubWVu
dC5jYW5Vc2VET00uY2F0Y2gpOgorICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYuc3RyaW5n
X2FwcGVhcmVkX2hlcmUud2Fybkh5cGhlbmF0ZWRTdHlsZU5hbWUpOgorICAgICAgICAocHJvY2Vz
cy5lbnYuTk9ERV9FTlYuc3RyaW5nX2FwcGVhcmVkX2hlcmUud2FybkJhZFZlbmRvcmVkU3R5bGVO
YW1lKToKKyAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WLnN0cmluZ19hcHBlYXJlZF9oZXJl
Lndhcm5TdHlsZVZhbHVlV2l0aFNlbWljb2xvbik6CisgICAgICAgIChwcm9jZXNzLmVudi5OT0RF
X0VOVi5zdHJpbmdfYXBwZWFyZWRfaGVyZS53YXJuU3R5bGVWYWx1ZUlzTmFOKToKKyAgICAgICAg
KHByb2Nlc3MuZW52Lk5PREVfRU5WLnN0cmluZ19hcHBlYXJlZF9oZXJlLmNoZWNrUmVuZGVyTWVz
c2FnZSk6CisgICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOVi5zdHJpbmdfYXBwZWFyZWRfaGVy
ZS53YXJuVmFsaWRTdHlsZSk6CisgICAgICAgIChDU1NQcm9wZXJ0eU9wZXJhdGlvbnMuY3JlYXRl
TWFya3VwRm9yU3R5bGVzKToKKyAgICAgICAgKENTU1Byb3BlcnR5T3BlcmF0aW9ucy5zZXRWYWx1
ZUZvclN0eWxlcyk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL0NhbGxi
YWNrUXVldWUuanM6IEFkZGVkLgorICAgICAgICAoX2NsYXNzQ2FsbENoZWNrKToKKyAgICAgICAg
KENhbGxiYWNrUXVldWUucHJvdG90eXBlLmVucXVldWUpOgorICAgICAgICAoQ2FsbGJhY2tRdWV1
ZS5wcm90b3R5cGUubm90aWZ5QWxsKToKKyAgICAgICAgKENhbGxiYWNrUXVldWUucHJvdG90eXBl
LmNoZWNrcG9pbnQpOgorICAgICAgICAoQ2FsbGJhY2tRdWV1ZS5wcm90b3R5cGUucm9sbGJhY2sp
OgorICAgICAgICAoQ2FsbGJhY2tRdWV1ZS5wcm90b3R5cGUucmVzZXQpOgorICAgICAgICAoQ2Fs
bGJhY2tRdWV1ZS5wcm90b3R5cGUuZGVzdHJ1Y3Rvcik6CisgICAgICAgIChDYWxsYmFja1F1ZXVl
KToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvQ2hhbmdlRXZlbnRQbHVn
aW4uanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkVXNlQ2hhbmdlRXZlbnQpOgorICAgICAgICAo
bWFudWFsRGlzcGF0Y2hDaGFuZ2VFdmVudCk6CisgICAgICAgIChydW5FdmVudEluQmF0Y2gpOgor
ICAgICAgICAoc3RhcnRXYXRjaGluZ0ZvckNoYW5nZUV2ZW50SUU4KToKKyAgICAgICAgKHN0b3BX
YXRjaGluZ0ZvckNoYW5nZUV2ZW50SUU4KToKKyAgICAgICAgKGdldFRhcmdldEluc3RGb3JDaGFu
Z2VFdmVudCk6CisgICAgICAgIChoYW5kbGVFdmVudHNGb3JDaGFuZ2VFdmVudElFOCk6CisgICAg
ICAgIChzdGFydFdhdGNoaW5nRm9yVmFsdWVDaGFuZ2UpOgorICAgICAgICAoc3RvcFdhdGNoaW5n
Rm9yVmFsdWVDaGFuZ2UpOgorICAgICAgICAoaGFuZGxlUHJvcGVydHlDaGFuZ2UpOgorICAgICAg
ICAoZ2V0VGFyZ2V0SW5zdEZvcklucHV0RXZlbnQpOgorICAgICAgICAoaGFuZGxlRXZlbnRzRm9y
SW5wdXRFdmVudElFKToKKyAgICAgICAgKGdldFRhcmdldEluc3RGb3JJbnB1dEV2ZW50SUUpOgor
ICAgICAgICAoc2hvdWxkVXNlQ2xpY2tFdmVudCk6CisgICAgICAgIChDaGFuZ2VFdmVudFBsdWdp
bi5leHRyYWN0RXZlbnRzKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIv
RE9NQ2hpbGRyZW5PcGVyYXRpb25zLmpzOiBBZGRlZC4KKyAgICAgICAgKGdldE5vZGVBZnRlcik6
CisgICAgICAgIChpbnNlcnRDaGlsZEF0LmNyZWF0ZU1pY3Jvc29mdFVuc2FmZUxvY2FsRnVuY3Rp
b24pOgorICAgICAgICAoaW5zZXJ0TGF6eVRyZWVDaGlsZEF0KToKKyAgICAgICAgKG1vdmVDaGls
ZCk6CisgICAgICAgIChyZW1vdmVDaGlsZCk6CisgICAgICAgIChtb3ZlRGVsaW1pdGVkVGV4dCk6
CisgICAgICAgIChyZW1vdmVEZWxpbWl0ZWRUZXh0KToKKyAgICAgICAgKHJlcGxhY2VEZWxpbWl0
ZWRUZXh0KToKKyAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WLnN0cmluZ19hcHBlYXJlZF9o
ZXJlLmRhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwKToKKyAgICAgICAgKERPTUNoaWxk
cmVuT3BlcmF0aW9ucy5wcm9jZXNzVXBkYXRlcyk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9y
ZWFjdC1kb20vbGliL0RPTUxhenlUcmVlLmpzOiBBZGRlZC4KKyAgICAgICAgKGluc2VydFRyZWVD
aGlsZHJlbik6CisgICAgICAgIChpbnNlcnRUcmVlQmVmb3JlLmNyZWF0ZU1pY3Jvc29mdFVuc2Fm
ZUxvY2FsRnVuY3Rpb24pOgorICAgICAgICAocmVwbGFjZUNoaWxkV2l0aFRyZWUpOgorICAgICAg
ICAocXVldWVDaGlsZCk6CisgICAgICAgIChxdWV1ZUhUTUwpOgorICAgICAgICAocXVldWVUZXh0
KToKKyAgICAgICAgKHRvU3RyaW5nKToKKyAgICAgICAgKERPTUxhenlUcmVlKToKKyAgICAgICAg
KiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVh
Y3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvRE9NTmFtZXNwYWNlcy5qczogQWRkZWQuCisg
ICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL0RPTVByb3BlcnR5LmpzOiBBZGRl
ZC4KKyAgICAgICAgKGNoZWNrTWFzayk6CisgICAgICAgIChET01Qcm9wZXJ0eUluamVjdGlvbi5p
bmplY3RET01Qcm9wZXJ0eUNvbmZpZyk6CisgICAgICAgIChET01Qcm9wZXJ0eS5pc0N1c3RvbUF0
dHJpYnV0ZSk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL0RPTVByb3Bl
cnR5T3BlcmF0aW9ucy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRJZ25vcmVWYWx1ZSk6Cisg
ICAgICAgIChET01Qcm9wZXJ0eU9wZXJhdGlvbnMuY3JlYXRlTWFya3VwRm9ySUQpOgorICAgICAg
ICAoRE9NUHJvcGVydHlPcGVyYXRpb25zLnNldEF0dHJpYnV0ZUZvcklEKToKKyAgICAgICAgKERP
TVByb3BlcnR5T3BlcmF0aW9ucy5jcmVhdGVNYXJrdXBGb3JSb290KToKKyAgICAgICAgKERPTVBy
b3BlcnR5T3BlcmF0aW9ucy5zZXRBdHRyaWJ1dGVGb3JSb290KToKKyAgICAgICAgKERPTVByb3Bl
cnR5T3BlcmF0aW9ucy5jcmVhdGVNYXJrdXBGb3JQcm9wZXJ0eSk6CisgICAgICAgIChET01Qcm9w
ZXJ0eU9wZXJhdGlvbnMuY3JlYXRlTWFya3VwRm9yQ3VzdG9tQXR0cmlidXRlKToKKyAgICAgICAg
KERPTVByb3BlcnR5T3BlcmF0aW9ucy5zZXRWYWx1ZUZvclByb3BlcnR5KToKKyAgICAgICAgKERP
TVByb3BlcnR5T3BlcmF0aW9ucy5zZXRWYWx1ZUZvckF0dHJpYnV0ZSk6CisgICAgICAgIChET01Q
cm9wZXJ0eU9wZXJhdGlvbnMuZGVsZXRlVmFsdWVGb3JBdHRyaWJ1dGUpOgorICAgICAgICAoRE9N
UHJvcGVydHlPcGVyYXRpb25zLmRlbGV0ZVZhbHVlRm9yUHJvcGVydHkpOgorICAgICAgICAqIFNw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9u
b2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9EYW5nZXIuanM6IEFkZGVkLgorICAgICAgICAoRGFu
Z2VyLmRhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwKToKKyAgICAgICAgKiBTcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9t
b2R1bGVzL3JlYWN0LWRvbS9saWIvRGVmYXVsdEV2ZW50UGx1Z2luT3JkZXIuanM6IEFkZGVkLgor
ICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9FbnRlckxlYXZlRXZlbnRQbHVn
aW4uanM6IEFkZGVkLgorICAgICAgICAoRW50ZXJMZWF2ZUV2ZW50UGx1Z2luLmV4dHJhY3RFdmVu
dHMpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9FdmVudENvbnN0YW50
cy5qczogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL0V2ZW50
UGx1Z2luSHViLmpzOiBBZGRlZC4KKyAgICAgICAgKGV4ZWN1dGVEaXNwYXRjaGVzQW5kUmVsZWFz
ZSk6CisgICAgICAgIChleGVjdXRlRGlzcGF0Y2hlc0FuZFJlbGVhc2VTaW11bGF0ZWQpOgorICAg
ICAgICAoZXhlY3V0ZURpc3BhdGNoZXNBbmRSZWxlYXNlVG9wTGV2ZWwpOgorICAgICAgICAoZ2V0
RGljdGlvbmFyeUtleSk6CisgICAgICAgIChFdmVudFBsdWdpbkh1Yi5wdXRMaXN0ZW5lcik6Cisg
ICAgICAgIChFdmVudFBsdWdpbkh1Yi5nZXRMaXN0ZW5lcik6CisgICAgICAgIChFdmVudFBsdWdp
bkh1Yi5kZWxldGVMaXN0ZW5lcik6CisgICAgICAgIChFdmVudFBsdWdpbkh1Yi5kZWxldGVBbGxM
aXN0ZW5lcnMpOgorICAgICAgICAoRXZlbnRQbHVnaW5IdWIuZXh0cmFjdEV2ZW50cyk6CisgICAg
ICAgIChFdmVudFBsdWdpbkh1Yi5lbnF1ZXVlRXZlbnRzKToKKyAgICAgICAgKEV2ZW50UGx1Z2lu
SHViLnByb2Nlc3NFdmVudFF1ZXVlKToKKyAgICAgICAgKEV2ZW50UGx1Z2luSHViLl9fcHVyZ2Up
OgorICAgICAgICAoRXZlbnRQbHVnaW5IdWIuX19nZXRMaXN0ZW5lckJhbmspOgorICAgICAgICAq
IFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFj
dC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9FdmVudFBsdWdpblJlZ2lzdHJ5LmpzOiBBZGRl
ZC4KKyAgICAgICAgKHB1Ymxpc2hFdmVudEZvclBsdWdpbik6CisgICAgICAgIChwdWJsaXNoUmVn
aXN0cmF0aW9uTmFtZSk6CisgICAgICAgIChFdmVudFBsdWdpblJlZ2lzdHJ5LmluamVjdEV2ZW50
UGx1Z2luT3JkZXIpOgorICAgICAgICAoRXZlbnRQbHVnaW5SZWdpc3RyeS5pbmplY3RFdmVudFBs
dWdpbnNCeU5hbWUpOgorICAgICAgICAoRXZlbnRQbHVnaW5SZWdpc3RyeS5nZXRQbHVnaW5Nb2R1
bGVGb3JFdmVudCk6CisgICAgICAgIChFdmVudFBsdWdpblJlZ2lzdHJ5Ll9yZXNldEV2ZW50UGx1
Z2lucyk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL0V2ZW50UGx1Z2lu
VXRpbHMuanM6IEFkZGVkLgorICAgICAgICAoaW5qZWN0aW9uLmluamVjdENvbXBvbmVudFRyZWUp
OgorICAgICAgICAoaW5qZWN0aW9uLmluamVjdFRyZWVUcmF2ZXJzYWwpOgorICAgICAgICAoaXNF
bmRpc2gpOgorICAgICAgICAoaXNNb3ZlaXNoKToKKyAgICAgICAgKGlzU3RhcnRpc2gpOgorICAg
ICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYuc3RyaW5nX2FwcGVhcmVkX2hlcmUudmFsaWRhdGVF
dmVudERpc3BhdGNoZXMpOgorICAgICAgICAoZXhlY3V0ZURpc3BhdGNoKToKKyAgICAgICAgKGV4
ZWN1dGVEaXNwYXRjaGVzSW5PcmRlcik6CisgICAgICAgIChleGVjdXRlRGlzcGF0Y2hlc0luT3Jk
ZXJTdG9wQXRUcnVlSW1wbCk6CisgICAgICAgIChleGVjdXRlRGlzcGF0Y2hlc0luT3JkZXJTdG9w
QXRUcnVlKToKKyAgICAgICAgKGV4ZWN1dGVEaXJlY3REaXNwYXRjaCk6CisgICAgICAgIChoYXNE
aXNwYXRjaGVzKToKKyAgICAgICAgKEV2ZW50UGx1Z2luVXRpbHMuZ2V0SW5zdGFuY2VGcm9tTm9k
ZSk6CisgICAgICAgIChFdmVudFBsdWdpblV0aWxzLmdldE5vZGVGcm9tSW5zdGFuY2UpOgorICAg
ICAgICAoRXZlbnRQbHVnaW5VdGlscy5pc0FuY2VzdG9yKToKKyAgICAgICAgKEV2ZW50UGx1Z2lu
VXRpbHMuZ2V0TG93ZXN0Q29tbW9uQW5jZXN0b3IpOgorICAgICAgICAoRXZlbnRQbHVnaW5VdGls
cy5nZXRQYXJlbnRJbnN0YW5jZSk6CisgICAgICAgIChFdmVudFBsdWdpblV0aWxzLnRyYXZlcnNl
VHdvUGhhc2UpOgorICAgICAgICAoRXZlbnRQbHVnaW5VdGlscy50cmF2ZXJzZUVudGVyTGVhdmUp
OgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9FdmVudFByb3BhZ2F0b3Jz
LmpzOiBBZGRlZC4KKyAgICAgICAgKGxpc3RlbmVyQXRQaGFzZSk6CisgICAgICAgIChhY2N1bXVs
YXRlRGlyZWN0aW9uYWxEaXNwYXRjaGVzKToKKyAgICAgICAgKGFjY3VtdWxhdGVUd29QaGFzZURp
c3BhdGNoZXNTaW5nbGUpOgorICAgICAgICAoYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlc1Np
bmdsZVNraXBUYXJnZXQpOgorICAgICAgICAoYWNjdW11bGF0ZURpc3BhdGNoZXMpOgorICAgICAg
ICAoYWNjdW11bGF0ZURpcmVjdERpc3BhdGNoZXNTaW5nbGUpOgorICAgICAgICAoYWNjdW11bGF0
ZVR3b1BoYXNlRGlzcGF0Y2hlcyk6CisgICAgICAgIChhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRj
aGVzU2tpcFRhcmdldCk6CisgICAgICAgIChhY2N1bXVsYXRlRW50ZXJMZWF2ZURpc3BhdGNoZXMp
OgorICAgICAgICAoYWNjdW11bGF0ZURpcmVjdERpc3BhdGNoZXMpOgorICAgICAgICAqIFNwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2Rl
X21vZHVsZXMvcmVhY3QtZG9tL2xpYi9GYWxsYmFja0NvbXBvc2l0aW9uU3RhdGUuanM6IEFkZGVk
LgorICAgICAgICAoRmFsbGJhY2tDb21wb3NpdGlvblN0YXRlKToKKyAgICAgICAgKGRlc3RydWN0
b3IpOgorICAgICAgICAoZ2V0VGV4dCk6CisgICAgICAgIChnZXREYXRhKToKKyAgICAgICAgKiBT
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qv
bm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvSFRNTERPTVByb3BlcnR5Q29uZmlnLmpzOiBBZGRl
ZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvS2V5RXNjYXBlVXRpbHMu
anM6IEFkZGVkLgorICAgICAgICAoZXNjYXBlKToKKyAgICAgICAgKHVuZXNjYXBlKToKKyAgICAg
ICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
cmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvTGlua2VkVmFsdWVVdGlscy5qczogQWRk
ZWQuCisgICAgICAgIChfYXNzZXJ0U2luZ2xlTGluayk6CisgICAgICAgIChfYXNzZXJ0VmFsdWVM
aW5rKToKKyAgICAgICAgKF9hc3NlcnRDaGVja2VkTGluayk6CisgICAgICAgIChwcm9wVHlwZXMu
dmFsdWUpOgorICAgICAgICAocHJvcFR5cGVzLmNoZWNrZWQpOgorICAgICAgICAoTGlua2VkVmFs
dWVVdGlscy5jaGVja1Byb3BUeXBlcyk6CisgICAgICAgIChMaW5rZWRWYWx1ZVV0aWxzLmdldFZh
bHVlKToKKyAgICAgICAgKExpbmtlZFZhbHVlVXRpbHMuZ2V0Q2hlY2tlZCk6CisgICAgICAgIChM
aW5rZWRWYWx1ZVV0aWxzLmV4ZWN1dGVPbkNoYW5nZSk6CisgICAgICAgICogU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxl
cy9yZWFjdC1kb20vbGliL1BsdWdpbk1vZHVsZVR5cGUuanM6IEFkZGVkLgorICAgICAgICAqIFNw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9u
b2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9Qb29sZWRDbGFzcy5qczogQWRkZWQuCisgICAgICAg
IChvbmVBcmd1bWVudFBvb2xlcik6CisgICAgICAgICh0d29Bcmd1bWVudFBvb2xlcik6CisgICAg
ICAgICh0aHJlZUFyZ3VtZW50UG9vbGVyKToKKyAgICAgICAgKGZvdXJBcmd1bWVudFBvb2xlcik6
CisgICAgICAgIChmaXZlQXJndW1lbnRQb29sZXIpOgorICAgICAgICAoc3RhbmRhcmRSZWxlYXNl
cik6CisgICAgICAgIChhZGRQb29saW5nVG8pOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVh
Y3QtZG9tL2xpYi9SZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuanM6IEFkZGVkLgorICAgICAgICAo
Z2V0TGlzdGVuaW5nRm9yRG9jdW1lbnQpOgorICAgICAgICAoaW5qZWN0aW9uLmluamVjdFJlYWN0
RXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChzZXRFbmFibGVkKToKKyAgICAgICAgKGlzRW5hYmxl
ZCk6CisgICAgICAgIChsaXN0ZW5Ubyk6CisgICAgICAgICh0cmFwQnViYmxlZEV2ZW50KToKKyAg
ICAgICAgKHRyYXBDYXB0dXJlZEV2ZW50KToKKyAgICAgICAgKHN1cHBvcnRzRXZlbnRQYWdlWFkp
OgorICAgICAgICAoZW5zdXJlU2Nyb2xsVmFsdWVNb25pdG9yaW5nKToKKyAgICAgICAgKiBTcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9k
ZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RDaGlsZEZpYmVyLmpzOiBBZGRlZC4KKyAgICAg
ICAgKENoaWxkUmVjb25jaWxlci5jcmVhdGVTdWJzZXF1ZW50Q2hpbGQpOgorICAgICAgICAoQ2hp
bGRSZWNvbmNpbGVyLmNyZWF0ZUZpcnN0Q2hpbGQpOgorICAgICAgICAoQ2hpbGRSZWNvbmNpbGVy
LnJlY29uY2lsZUNoaWxkRmliZXJzKToKKyAgICAgICAgKENoaWxkUmVjb25jaWxlcik6CisgICAg
ICAgIChjbG9uZVNpYmxpbmdzKToKKyAgICAgICAgKGV4cG9ydHMuY2xvbmVDaGlsZEZpYmVycyk6
CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0Q2hpbGRSZWNvbmNp
bGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKGluc3RhbnRpYXRlQ2hpbGQpOgorICAgICAgICAoUmVh
Y3RDaGlsZFJlY29uY2lsZXIuaW5zdGFudGlhdGVDaGlsZHJlbik6CisgICAgICAgIChSZWFjdENo
aWxkUmVjb25jaWxlci51cGRhdGVDaGlsZHJlbik6CisgICAgICAgIChSZWFjdENoaWxkUmVjb25j
aWxlci51bm1vdW50Q2hpbGRyZW4pOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9t
L2xpYi9SZWFjdENvbXBvbmVudEJyb3dzZXJFbnZpcm9ubWVudC5qczogQWRkZWQuCisgICAgICAg
ICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Jl
YWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQu
anM6IEFkZGVkLgorICAgICAgICAoUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudC5pbmplY3Rpb24u
aW5qZWN0RW52aXJvbm1lbnQpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xp
Yi9SZWFjdENvbXBvbmVudFRyZWVUZXN0VXRpbHMuanM6IEFkZGVkLgorICAgICAgICAoX2V4dGVu
ZHMuX2Fzc2lnbik6CisgICAgICAgIChfZGVmaW5lUHJvcGVydHkpOgorICAgICAgICAoZ2V0Um9v
dERpc3BsYXlOYW1lcyk6CisgICAgICAgIChnZXRSZWdpc3RlcmVkRGlzcGxheU5hbWVzKToKKyAg
ICAgICAgKGV4cGVjdEVxdWFsKToKKyAgICAgICAgKGV4cGVjdFRyZWUpOgorICAgICAgICAqIFNw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9u
b2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdENvbXBvc2l0ZUNvbXBvbmVudC5qczogQWRk
ZWQuCisgICAgICAgIChTdGF0ZWxlc3NDb21wb25lbnQpOgorICAgICAgICAoU3RhdGVsZXNzQ29t
cG9uZW50LnByb3RvdHlwZS5yZW5kZXIpOgorICAgICAgICAod2FybklmSW52YWxpZEVsZW1lbnQp
OgorICAgICAgICAoc2hvdWxkQ29uc3RydWN0KToKKyAgICAgICAgKGlzUHVyZUNvbXBvbmVudCk6
CisgICAgICAgIChtZWFzdXJlTGlmZUN5Y2xlUGVyZik6CisgICAgICAgIChSZWFjdENvbXBvc2l0
ZUNvbXBvbmVudC5jb25zdHJ1Y3QpOgorICAgICAgICAoUmVhY3RDb21wb3NpdGVDb21wb25lbnQu
bW91bnRDb21wb25lbnQpOgorICAgICAgICAoUmVhY3RDb21wb3NpdGVDb21wb25lbnQuX2NvbnN0
cnVjdENvbXBvbmVudCk6CisgICAgICAgIChSZWFjdENvbXBvc2l0ZUNvbXBvbmVudC5fY29uc3Ry
dWN0Q29tcG9uZW50V2l0aG91dE93bmVyKToKKyAgICAgICAgKFJlYWN0Q29tcG9zaXRlQ29tcG9u
ZW50LnBlcmZvcm1Jbml0aWFsTW91bnRXaXRoRXJyb3JIYW5kbGluZyk6CisgICAgICAgIChSZWFj
dENvbXBvc2l0ZUNvbXBvbmVudC5wZXJmb3JtSW5pdGlhbE1vdW50KToKKyAgICAgICAgKFJlYWN0
Q29tcG9zaXRlQ29tcG9uZW50LmdldEhvc3ROb2RlKToKKyAgICAgICAgKFJlYWN0Q29tcG9zaXRl
Q29tcG9uZW50LnVubW91bnRDb21wb25lbnQpOgorICAgICAgICAoUmVhY3RDb21wb3NpdGVDb21w
b25lbnQuX21hc2tDb250ZXh0KToKKyAgICAgICAgKFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50Ll9w
cm9jZXNzQ29udGV4dCk6CisgICAgICAgIChSZWFjdENvbXBvc2l0ZUNvbXBvbmVudC5fcHJvY2Vz
c0NoaWxkQ29udGV4dCk6CisgICAgICAgIChSZWFjdENvbXBvc2l0ZUNvbXBvbmVudC5fY2hlY2tD
b250ZXh0VHlwZXMpOgorICAgICAgICAoUmVhY3RDb21wb3NpdGVDb21wb25lbnQucmVjZWl2ZUNv
bXBvbmVudCk6CisgICAgICAgIChSZWFjdENvbXBvc2l0ZUNvbXBvbmVudC5wZXJmb3JtVXBkYXRl
SWZOZWNlc3NhcnkpOgorICAgICAgICAoUmVhY3RDb21wb3NpdGVDb21wb25lbnQudXBkYXRlQ29t
cG9uZW50KToKKyAgICAgICAgKFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50Ll9wcm9jZXNzUGVuZGlu
Z1N0YXRlKToKKyAgICAgICAgKFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50Ll9wZXJmb3JtQ29tcG9u
ZW50VXBkYXRlKToKKyAgICAgICAgKFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50Ll91cGRhdGVSZW5k
ZXJlZENvbXBvbmVudCk6CisgICAgICAgIChSZWFjdENvbXBvc2l0ZUNvbXBvbmVudC5fcmVwbGFj
ZU5vZGVXaXRoTWFya3VwKToKKyAgICAgICAgKFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50Ll9yZW5k
ZXJWYWxpZGF0ZWRDb21wb25lbnRXaXRob3V0T3duZXJPckNvbnRleHQpOgorICAgICAgICAoUmVh
Y3RDb21wb3NpdGVDb21wb25lbnQuX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudCk6CisgICAgICAg
IChSZWFjdENvbXBvc2l0ZUNvbXBvbmVudC5hdHRhY2hSZWYpOgorICAgICAgICAoUmVhY3RDb21w
b3NpdGVDb21wb25lbnQuZGV0YWNoUmVmKToKKyAgICAgICAgKFJlYWN0Q29tcG9zaXRlQ29tcG9u
ZW50LmdldE5hbWUpOgorICAgICAgICAoUmVhY3RDb21wb3NpdGVDb21wb25lbnQuZ2V0UHVibGlj
SW5zdGFuY2UpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdENv
cm91dGluZS5qczogQWRkZWQuCisgICAgICAgIChleHBvcnRzLmNyZWF0ZUNvcm91dGluZSk6Cisg
ICAgICAgIChleHBvcnRzLmNyZWF0ZVlpZWxkKToKKyAgICAgICAgKGV4cG9ydHMuaXNDb3JvdXRp
bmUpOgorICAgICAgICAoZXhwb3J0cy5pc1lpZWxkKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVz
L3JlYWN0LWRvbS9saWIvUmVhY3RET00uanM6IEFkZGVkLgorICAgICAgICAodHlwZW9mLl9fUkVB
Q1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXy5zdHJpbmdfYXBwZWFyZWRfaGVyZS50eXBlb2YuX19S
RUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLmluamVjdC5zdHJpbmdfYXBwZWFyZWRfaGVyZS5f
X1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18uaW5qZWN0LkNvbXBvbmVudFRyZWUuZ2V0Tm9k
ZUZyb21JbnN0YW5jZSk6CisgICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOVi5zdHJpbmdfYXBw
ZWFyZWRfaGVyZS5FeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00ud2luZG93LnRvcC53aW5k
b3cuc2VsZi50eXBlb2YuX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLnN0cmluZ19hcHBl
YXJlZF9oZXJlLm5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZi5zdHJpbmdfYXBwZWFyZWRfaGVy
ZS4xLm5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZi5zdHJpbmdfYXBwZWFyZWRfaGVyZS4xLm5h
dmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZik6CisgICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VO
Vi5zdHJpbmdfYXBwZWFyZWRfaGVyZS5FeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00ud2lu
ZG93LnRvcC53aW5kb3cuc2VsZi50ZXN0RnVuYyk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9y
ZWFjdC1kb20vbGliL1JlYWN0RE9NQ29tcG9uZW50LmpzOiBBZGRlZC4KKyAgICAgICAgKGdldERl
Y2xhcmF0aW9uRXJyb3JBZGRlbmR1bSk6CisgICAgICAgIChmcmllbmRseVN0cmluZ2lmeSk6Cisg
ICAgICAgIChhc3NlcnRWYWxpZFByb3BzKToKKyAgICAgICAgKGVucXVldWVQdXRMaXN0ZW5lcik6
CisgICAgICAgIChpbnB1dFBvc3RNb3VudCk6CisgICAgICAgICh0ZXh0YXJlYVBvc3RNb3VudCk6
CisgICAgICAgIChvcHRpb25Qb3N0TW91bnQpOgorICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9F
TlYuc3RyaW5nX2FwcGVhcmVkX2hlcmUuc2V0QW5kVmFsaWRhdGVDb250ZW50Q2hpbGREZXYpOgor
ICAgICAgICAodHJhcEJ1YmJsZWRFdmVudHNMb2NhbCk6CisgICAgICAgIChwb3N0VXBkYXRlU2Vs
ZWN0V3JhcHBlcik6CisgICAgICAgICh2YWxpZGF0ZURhbmdlcm91c1RhZyk6CisgICAgICAgIChp
c0N1c3RvbUNvbXBvbmVudCk6CisgICAgICAgIChSZWFjdERPTUNvbXBvbmVudCk6CisgICAgICAg
IChSZWFjdERPTUNvbXBvbmVudC5NaXhpbi5tb3VudENvbXBvbmVudCk6CisgICAgICAgIChSZWFj
dERPTUNvbXBvbmVudC5NaXhpbi5fY3JlYXRlT3BlblRhZ01hcmt1cEFuZFB1dExpc3RlbmVycyk6
CisgICAgICAgIChSZWFjdERPTUNvbXBvbmVudC5NaXhpbi5fY3JlYXRlQ29udGVudE1hcmt1cCk6
CisgICAgICAgIChSZWFjdERPTUNvbXBvbmVudC5NaXhpbi5fY3JlYXRlSW5pdGlhbENoaWxkcmVu
KToKKyAgICAgICAgKFJlYWN0RE9NQ29tcG9uZW50Lk1peGluLnJlY2VpdmVDb21wb25lbnQpOgor
ICAgICAgICAoUmVhY3RET01Db21wb25lbnQuTWl4aW4udXBkYXRlQ29tcG9uZW50KToKKyAgICAg
ICAgKFJlYWN0RE9NQ29tcG9uZW50Lk1peGluLl91cGRhdGVET01Qcm9wZXJ0aWVzKToKKyAgICAg
ICAgKFJlYWN0RE9NQ29tcG9uZW50Lk1peGluLl91cGRhdGVET01DaGlsZHJlbik6CisgICAgICAg
IChSZWFjdERPTUNvbXBvbmVudC5NaXhpbi5nZXRIb3N0Tm9kZSk6CisgICAgICAgIChSZWFjdERP
TUNvbXBvbmVudC5NaXhpbi51bm1vdW50Q29tcG9uZW50KToKKyAgICAgICAgKFJlYWN0RE9NQ29t
cG9uZW50Lk1peGluLmdldFB1YmxpY0luc3RhbmNlKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVz
L3JlYWN0LWRvbS9saWIvUmVhY3RET01Db21wb25lbnRGbGFncy5qczogQWRkZWQuCisgICAgICAg
ICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Jl
YWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0RE9NQ29tcG9uZW50VHJlZS5qczog
QWRkZWQuCisgICAgICAgIChnZXRSZW5kZXJlZEhvc3RPclRleHRGcm9tQ29tcG9uZW50KToKKyAg
ICAgICAgKHByZWNhY2hlTm9kZSk6CisgICAgICAgICh1bmNhY2hlTm9kZSk6CisgICAgICAgIChw
cmVjYWNoZUNoaWxkTm9kZXMpOgorICAgICAgICAoZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGUp
OgorICAgICAgICAoZ2V0SW5zdGFuY2VGcm9tTm9kZSk6CisgICAgICAgIChnZXROb2RlRnJvbUlu
c3RhbmNlKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RET01D
b250YWluZXJJbmZvLmpzOiBBZGRlZC4KKyAgICAgICAgKFJlYWN0RE9NQ29udGFpbmVySW5mbyk6
CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0RE9NRW1wdHlDb21w
b25lbnQuanM6IEFkZGVkLgorICAgICAgICAoUmVhY3RET01FbXB0eUNvbXBvbmVudCk6CisgICAg
ICAgIChtb3VudENvbXBvbmVudCk6CisgICAgICAgIChyZWNlaXZlQ29tcG9uZW50KToKKyAgICAg
ICAgKGdldEhvc3ROb2RlKToKKyAgICAgICAgKHVubW91bnRDb21wb25lbnQpOgorICAgICAgICAq
IFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFj
dC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdERPTUZlYXR1cmVGbGFncy5qczogQWRk
ZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0RE9NRmliZXIu
anM6IEFkZGVkLgorICAgICAgICAocmVjdXJzaXZlbHlBcHBlbmRDaGlsZHJlbik6CisgICAgICAg
IChET01SZW5kZXJlci5SZWFjdEZpYmVyUmVjb25jaWxlci51cGRhdGVDb250YWluZXIpOgorICAg
ICAgICAoRE9NUmVuZGVyZXIuUmVhY3RGaWJlclJlY29uY2lsZXIuY3JlYXRlSW5zdGFuY2UpOgor
ICAgICAgICAoRE9NUmVuZGVyZXIuUmVhY3RGaWJlclJlY29uY2lsZXIucHJlcGFyZVVwZGF0ZSk6
CisgICAgICAgIChET01SZW5kZXJlci5SZWFjdEZpYmVyUmVjb25jaWxlci5jb21taXRVcGRhdGUp
OgorICAgICAgICAoRE9NUmVuZGVyZXIuUmVhY3RGaWJlclJlY29uY2lsZXIuZGVsZXRlSW5zdGFu
Y2UpOgorICAgICAgICAod2FybkFib3V0VW5zdGFibGVVc2UpOgorICAgICAgICAoUmVhY3RET00u
cmVuZGVyKToKKyAgICAgICAgKFJlYWN0RE9NLnVubW91bnRDb21wb25lbnRBdE5vZGUpOgorICAg
ICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdERPTUlET3BlcmF0aW9ucy5q
czogQWRkZWQuCisgICAgICAgIChSZWFjdERPTUlET3BlcmF0aW9ucy5kYW5nZXJvdXNseVByb2Nl
c3NDaGlsZHJlblVwZGF0ZXMpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xp
Yi9SZWFjdERPTUlucHV0LmpzOiBBZGRlZC4KKyAgICAgICAgKGZvcmNlVXBkYXRlSWZNb3VudGVk
KToKKyAgICAgICAgKGlzQ29udHJvbGxlZCk6CisgICAgICAgIChSZWFjdERPTUlucHV0LmdldEhv
c3RQcm9wcyk6CisgICAgICAgIChSZWFjdERPTUlucHV0Lm1vdW50V3JhcHBlcik6CisgICAgICAg
IChSZWFjdERPTUlucHV0LnVwZGF0ZVdyYXBwZXIpOgorICAgICAgICAoUmVhY3RET01JbnB1dC5w
b3N0TW91bnRXcmFwcGVyKToKKyAgICAgICAgKF9oYW5kbGVDaGFuZ2UpOgorICAgICAgICAqIFNw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9u
b2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdERPTUludmFsaWRBUklBSG9vay5qczogQWRk
ZWQuCisgICAgICAgICh2YWxpZGF0ZVByb3BlcnR5KToKKyAgICAgICAgKHdhcm5JbnZhbGlkQVJJ
QVByb3BzKToKKyAgICAgICAgKGhhbmRsZUVsZW1lbnQpOgorICAgICAgICAoUmVhY3RET01JbnZh
bGlkQVJJQUhvb2sub25CZWZvcmVNb3VudENvbXBvbmVudCk6CisgICAgICAgIChSZWFjdERPTUlu
dmFsaWRBUklBSG9vay5vbkJlZm9yZVVwZGF0ZUNvbXBvbmVudCk6CisgICAgICAgICogU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVf
bW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0RE9NTnVsbElucHV0VmFsdWVQcm9wSG9vay5qczog
QWRkZWQuCisgICAgICAgIChoYW5kbGVFbGVtZW50KToKKyAgICAgICAgKFJlYWN0RE9NTnVsbElu
cHV0VmFsdWVQcm9wSG9vay5vbkJlZm9yZU1vdW50Q29tcG9uZW50KToKKyAgICAgICAgKFJlYWN0
RE9NTnVsbElucHV0VmFsdWVQcm9wSG9vay5vbkJlZm9yZVVwZGF0ZUNvbXBvbmVudCk6CisgICAg
ICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0RE9NT3B0aW9uLmpzOiBBZGRl
ZC4KKyAgICAgICAgKGZsYXR0ZW5DaGlsZHJlbik6CisgICAgICAgIChSZWFjdERPTU9wdGlvbi5t
b3VudFdyYXBwZXIpOgorICAgICAgICAoUmVhY3RET01PcHRpb24ucG9zdE1vdW50V3JhcHBlcik6
CisgICAgICAgIChSZWFjdERPTU9wdGlvbi5nZXRIb3N0UHJvcHMpOgorICAgICAgICAqIFNwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2Rl
X21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdERPTVNlbGVjdC5qczogQWRkZWQuCisgICAgICAg
ICh1cGRhdGVPcHRpb25zSWZQZW5kaW5nVXBkYXRlQW5kTW91bnRlZCk6CisgICAgICAgIChnZXRE
ZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0pOgorICAgICAgICAoY2hlY2tTZWxlY3RQcm9wVHlwZXMp
OgorICAgICAgICAodXBkYXRlT3B0aW9ucyk6CisgICAgICAgIChSZWFjdERPTVNlbGVjdC5nZXRI
b3N0UHJvcHMpOgorICAgICAgICAoUmVhY3RET01TZWxlY3QubW91bnRXcmFwcGVyKToKKyAgICAg
ICAgKFJlYWN0RE9NU2VsZWN0LmdldFNlbGVjdFZhbHVlQ29udGV4dCk6CisgICAgICAgIChSZWFj
dERPTVNlbGVjdC5wb3N0VXBkYXRlV3JhcHBlcik6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9y
ZWFjdC1kb20vbGliL1JlYWN0RE9NU2VsZWN0aW9uLmpzOiBBZGRlZC4KKyAgICAgICAgKGlzQ29s
bGFwc2VkKToKKyAgICAgICAgKGdldElFT2Zmc2V0cyk6CisgICAgICAgIChnZXRNb2Rlcm5PZmZz
ZXRzKToKKyAgICAgICAgKHNldElFT2Zmc2V0cyk6CisgICAgICAgIChzZXRNb2Rlcm5PZmZzZXRz
KToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RET01TZXJ2ZXIu
anM6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdERP
TVNlcnZlclVNREVudHJ5LmpzOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0
LWRvbS9saWIvUmVhY3RET01UZXh0Q29tcG9uZW50LmpzOiBBZGRlZC4KKyAgICAgICAgKFJlYWN0
RE9NVGV4dENvbXBvbmVudCk6CisgICAgICAgIChtb3VudENvbXBvbmVudCk6CisgICAgICAgIChy
ZWNlaXZlQ29tcG9uZW50KToKKyAgICAgICAgKGdldEhvc3ROb2RlKToKKyAgICAgICAgKHVubW91
bnRDb21wb25lbnQpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFj
dERPTVRleHRhcmVhLmpzOiBBZGRlZC4KKyAgICAgICAgKGZvcmNlVXBkYXRlSWZNb3VudGVkKToK
KyAgICAgICAgKFJlYWN0RE9NVGV4dGFyZWEuZ2V0SG9zdFByb3BzKToKKyAgICAgICAgKFJlYWN0
RE9NVGV4dGFyZWEubW91bnRXcmFwcGVyKToKKyAgICAgICAgKFJlYWN0RE9NVGV4dGFyZWEudXBk
YXRlV3JhcHBlcik6CisgICAgICAgIChSZWFjdERPTVRleHRhcmVhLnBvc3RNb3VudFdyYXBwZXIp
OgorICAgICAgICAoX2hhbmRsZUNoYW5nZSk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFj
dC1kb20vbGliL1JlYWN0RE9NVHJlZVRyYXZlcnNhbC5qczogQWRkZWQuCisgICAgICAgIChnZXRM
b3dlc3RDb21tb25BbmNlc3Rvcik6CisgICAgICAgIChpc0FuY2VzdG9yKToKKyAgICAgICAgKGdl
dFBhcmVudEluc3RhbmNlKToKKyAgICAgICAgKHRyYXZlcnNlVHdvUGhhc2UpOgorICAgICAgICAo
dHJhdmVyc2VFbnRlckxlYXZlKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9s
aWIvUmVhY3RET01VTURFbnRyeS5qczogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9y
ZWFjdC1kb20vbGliL1JlYWN0RE9NVW5rbm93blByb3BlcnR5SG9vay5qczogQWRkZWQuCisgICAg
ICAgIChwcm9jZXNzLmVudi5OT0RFX0VOVi5zdHJpbmdfYXBwZWFyZWRfaGVyZS52YWxpZGF0ZVBy
b3BlcnR5KToKKyAgICAgICAgKHdhcm5Vbmtub3duUHJvcGVydGllcyk6CisgICAgICAgIChoYW5k
bGVFbGVtZW50KToKKyAgICAgICAgKFJlYWN0RE9NVW5rbm93blByb3BlcnR5SG9vay5vbkJlZm9y
ZU1vdW50Q29tcG9uZW50KToKKyAgICAgICAgKFJlYWN0RE9NVW5rbm93blByb3BlcnR5SG9vay5v
bkJlZm9yZVVwZGF0ZUNvbXBvbmVudCk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1k
b20vbGliL1JlYWN0RGVidWdUb29sLmpzOiBBZGRlZC4KKyAgICAgICAgKGVtaXRFdmVudCk6Cisg
ICAgICAgIChjbGVhckhpc3RvcnkpOgorICAgICAgICAoZ2V0VHJlZVNuYXBzaG90KToKKyAgICAg
ICAgKGJlZ2luTGlmZUN5Y2xlVGltZXIpOgorICAgICAgICAoZW5kTGlmZUN5Y2xlVGltZXIpOgor
ICAgICAgICAocGF1c2VDdXJyZW50TGlmZUN5Y2xlVGltZXIpOgorICAgICAgICAocmVzdW1lQ3Vy
cmVudExpZmVDeWNsZVRpbWVyKToKKyAgICAgICAgKHNob3VsZE1hcmspOgorICAgICAgICAobWFy
a0JlZ2luKToKKyAgICAgICAgKG1hcmtFbmQpOgorICAgICAgICAoUmVhY3REZWJ1Z1Rvb2wuYWRk
SG9vayk6CisgICAgICAgIChSZWFjdERlYnVnVG9vbC5yZW1vdmVIb29rKToKKyAgICAgICAgKFJl
YWN0RGVidWdUb29sLmlzUHJvZmlsaW5nKToKKyAgICAgICAgKFJlYWN0RGVidWdUb29sLmJlZ2lu
UHJvZmlsaW5nKToKKyAgICAgICAgKFJlYWN0RGVidWdUb29sLmVuZFByb2ZpbGluZyk6CisgICAg
ICAgIChSZWFjdERlYnVnVG9vbC5nZXRGbHVzaEhpc3RvcnkpOgorICAgICAgICAoUmVhY3REZWJ1
Z1Rvb2wub25CZWdpbkZsdXNoKToKKyAgICAgICAgKFJlYWN0RGVidWdUb29sLm9uRW5kRmx1c2gp
OgorICAgICAgICAoUmVhY3REZWJ1Z1Rvb2wub25CZWdpbkxpZmVDeWNsZVRpbWVyKToKKyAgICAg
ICAgKFJlYWN0RGVidWdUb29sLm9uRW5kTGlmZUN5Y2xlVGltZXIpOgorICAgICAgICAoUmVhY3RE
ZWJ1Z1Rvb2wub25CZWdpblByb2Nlc3NpbmdDaGlsZENvbnRleHQpOgorICAgICAgICAoUmVhY3RE
ZWJ1Z1Rvb2wub25FbmRQcm9jZXNzaW5nQ2hpbGRDb250ZXh0KToKKyAgICAgICAgKFJlYWN0RGVi
dWdUb29sLm9uSG9zdE9wZXJhdGlvbik6CisgICAgICAgIChSZWFjdERlYnVnVG9vbC5vblNldFN0
YXRlKToKKyAgICAgICAgKFJlYWN0RGVidWdUb29sLm9uU2V0Q2hpbGRyZW4pOgorICAgICAgICAo
UmVhY3REZWJ1Z1Rvb2wub25CZWZvcmVNb3VudENvbXBvbmVudCk6CisgICAgICAgIChSZWFjdERl
YnVnVG9vbC5vbk1vdW50Q29tcG9uZW50KToKKyAgICAgICAgKFJlYWN0RGVidWdUb29sLm9uQmVm
b3JlVXBkYXRlQ29tcG9uZW50KToKKyAgICAgICAgKFJlYWN0RGVidWdUb29sLm9uVXBkYXRlQ29t
cG9uZW50KToKKyAgICAgICAgKFJlYWN0RGVidWdUb29sLm9uQmVmb3JlVW5tb3VudENvbXBvbmVu
dCk6CisgICAgICAgIChSZWFjdERlYnVnVG9vbC5vblVubW91bnRDb21wb25lbnQpOgorICAgICAg
ICAoUmVhY3REZWJ1Z1Rvb2wub25UZXN0RXZlbnQpOgorICAgICAgICAocmVhY3RfcGVyZi5iLnRl
c3QpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdERlZmF1bHRC
YXRjaGluZ1N0cmF0ZWd5LmpzOiBBZGRlZC4KKyAgICAgICAgKFJFU0VUX0JBVENIRURfVVBEQVRF
Uy5jbG9zZSk6CisgICAgICAgIChSZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5VHJhbnNhY3Rp
b24pOgorICAgICAgICAoZ2V0VHJhbnNhY3Rpb25XcmFwcGVycyk6CisgICAgICAgIChSZWFjdERl
ZmF1bHRCYXRjaGluZ1N0cmF0ZWd5LmJhdGNoZWRVcGRhdGVzKToKKyAgICAgICAgKiBTcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9t
b2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3REZWZhdWx0SW5qZWN0aW9uLmpzOiBBZGRlZC4KKyAg
ICAgICAgKGluamVjdCk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1Jl
YWN0RWxlbWVudFN5bWJvbC5qczogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFj
dC1kb20vbGliL1JlYWN0RW1wdHlDb21wb25lbnQuanM6IEFkZGVkLgorICAgICAgICAoUmVhY3RF
bXB0eUNvbXBvbmVudEluamVjdGlvbi5pbmplY3RFbXB0eUNvbXBvbmVudEZhY3RvcnkpOgorICAg
ICAgICAoUmVhY3RFbXB0eUNvbXBvbmVudC5jcmVhdGUpOgorICAgICAgICAqIFNwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVs
ZXMvcmVhY3QtZG9tL2xpYi9SZWFjdEVycm9yVXRpbHMuanM6IEFkZGVkLgorICAgICAgICAoaW52
b2tlR3VhcmRlZENhbGxiYWNrKToKKyAgICAgICAgKFJlYWN0RXJyb3JVdGlscy5yZXRocm93Q2F1
Z2h0RXJyb3IpOgorICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYuc3RyaW5nX2FwcGVhcmVk
X2hlcmUudHlwZW9mLndpbmRvdy5zdHJpbmdfYXBwZWFyZWRfaGVyZS50eXBlb2Yud2luZG93LmRp
c3BhdGNoRXZlbnQuc3RyaW5nX2FwcGVhcmVkX2hlcmUudHlwZW9mLmRvY3VtZW50LnN0cmluZ19h
cHBlYXJlZF9oZXJlLnR5cGVvZi5kb2N1bWVudC5jcmVhdGVFdmVudC5zdHJpbmdfYXBwZWFyZWRf
aGVyZS5SZWFjdEVycm9yVXRpbHMuaW52b2tlR3VhcmRlZENhbGxiYWNrKToKKyAgICAgICAgKiBT
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qv
bm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RFdmVudEVtaXR0ZXJNaXhpbi5qczogQWRk
ZWQuCisgICAgICAgIChydW5FdmVudFF1ZXVlSW5CYXRjaCk6CisgICAgICAgIChSZWFjdEV2ZW50
RW1pdHRlck1peGluLmhhbmRsZVRvcExldmVsKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3Jl
YWN0LWRvbS9saWIvUmVhY3RFdmVudExpc3RlbmVyLmpzOiBBZGRlZC4KKyAgICAgICAgKGZpbmRQ
YXJlbnQpOgorICAgICAgICAoVG9wTGV2ZWxDYWxsYmFja0Jvb2tLZWVwaW5nKToKKyAgICAgICAg
KGRlc3RydWN0b3IpOgorICAgICAgICAoaGFuZGxlVG9wTGV2ZWxJbXBsKToKKyAgICAgICAgKHNj
cm9sbFZhbHVlTW9uaXRvcik6CisgICAgICAgIChSZWFjdEV2ZW50TGlzdGVuZXIuc2V0SGFuZGxl
VG9wTGV2ZWwpOgorICAgICAgICAoUmVhY3RFdmVudExpc3RlbmVyLnNldEVuYWJsZWQpOgorICAg
ICAgICAoUmVhY3RFdmVudExpc3RlbmVyLmlzRW5hYmxlZCk6CisgICAgICAgIChSZWFjdEV2ZW50
TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudCk6CisgICAgICAgIChSZWFjdEV2ZW50TGlzdGVuZXIu
dHJhcENhcHR1cmVkRXZlbnQpOgorICAgICAgICAoUmVhY3RFdmVudExpc3RlbmVyLm1vbml0b3JT
Y3JvbGxWYWx1ZSk6CisgICAgICAgIChSZWFjdEV2ZW50TGlzdGVuZXIuZGlzcGF0Y2hFdmVudCk6
CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0RmVhdHVyZUZsYWdz
LmpzOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RG
aWJlci5qczogQWRkZWQuCisgICAgICAgIChjcmVhdGVGaWJlcik6CisgICAgICAgIChzaG91bGRD
b25zdHJ1Y3QpOgorICAgICAgICAoZXhwb3J0cy5jbG9uZUZpYmVyKToKKyAgICAgICAgKGV4cG9y
dHMuY3JlYXRlSG9zdENvbnRhaW5lckZpYmVyKToKKyAgICAgICAgKGV4cG9ydHMuY3JlYXRlRmli
ZXJGcm9tRWxlbWVudCk6CisgICAgICAgIChjcmVhdGVGaWJlckZyb21FbGVtZW50VHlwZSk6Cisg
ICAgICAgIChleHBvcnRzLmNyZWF0ZUZpYmVyRnJvbUNvcm91dGluZSk6CisgICAgICAgIChleHBv
cnRzLmNyZWF0ZUZpYmVyRnJvbVlpZWxkKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0
LWRvbS9saWIvUmVhY3RGaWJlckJlZ2luV29yay5qczogQWRkZWQuCisgICAgICAgIChyZWNvbmNp
bGVDaGlsZHJlbik6CisgICAgICAgIChyZWNvbmNpbGVDaGlsZHJlbkF0UHJpb3JpdHkpOgorICAg
ICAgICAodXBkYXRlRnVuY3Rpb25hbENvbXBvbmVudCk6CisgICAgICAgIChzY2hlZHVsZVVwZGF0
ZSk6CisgICAgICAgICh1cGRhdGVyLmVucXVldWVTZXRTdGF0ZSk6CisgICAgICAgICh1cGRhdGVy
LmVucXVldWVSZXBsYWNlU3RhdGUpOgorICAgICAgICAodXBkYXRlci5lbnF1ZXVlRm9yY2VVcGRh
dGUpOgorICAgICAgICAodXBkYXRlci5lbnF1ZXVlQ2FsbGJhY2spOgorICAgICAgICAodXBkYXRl
Q2xhc3NDb21wb25lbnQpOgorICAgICAgICAodXBkYXRlSG9zdENvbXBvbmVudCk6CisgICAgICAg
IChtb3VudEluZGV0ZXJtaW5hdGVDb21wb25lbnQpOgorICAgICAgICAodXBkYXRlQ29yb3V0aW5l
Q29tcG9uZW50KToKKyAgICAgICAgKGJhaWxvdXRPbkFscmVhZHlGaW5pc2hlZFdvcmspOgorICAg
ICAgICAoYmFpbG91dE9uTG93UHJpb3JpdHkpOgorICAgICAgICAoYmVnaW5Xb3JrKToKKyAgICAg
ICAgKG1vZHVsZS5leHBvcnRzKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9s
aWIvUmVhY3RGaWJlckNvbW1pdFdvcmsuanM6IEFkZGVkLgorICAgICAgICAoY29tbWl0V29yayk6
CisgICAgICAgIChtb2R1bGUuZXhwb3J0cyk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFj
dC1kb20vbGliL1JlYWN0RmliZXJDb21wbGV0ZVdvcmsuanM6IEFkZGVkLgorICAgICAgICAobWFy
a0ZvclByZUVmZmVjdCk6CisgICAgICAgIChtYXJrRm9yUG9zdEVmZmVjdCk6CisgICAgICAgICh0
cmFuc2Zlck91dHB1dCk6CisgICAgICAgIChyZWN1cnNpdmVseUZpbGxZaWVsZHMpOgorICAgICAg
ICAobW92ZUNvcm91dGluZVRvSGFuZGxlclBoYXNlKToKKyAgICAgICAgKGNvbXBsZXRlV29yayk6
CisgICAgICAgIChtb2R1bGUuZXhwb3J0cyk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFj
dC1kb20vbGliL1JlYWN0RmliZXJSZWNvbmNpbGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKHJldHVy
bi5tb3VudENvbnRhaW5lcik6CisgICAgICAgIChyZXR1cm4udXBkYXRlQ29udGFpbmVyKToKKyAg
ICAgICAgKHJldHVybi51bm1vdW50Q29udGFpbmVyKToKKyAgICAgICAgKHJldHVybi5nZXRQdWJs
aWNSb290SW5zdGFuY2UpOgorICAgICAgICAobW9kdWxlLmV4cG9ydHMpOgorICAgICAgICAqIFNw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9u
b2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdEZpYmVyUm9vdC5qczogQWRkZWQuCisgICAg
ICAgIChleHBvcnRzLmNyZWF0ZUZpYmVyUm9vdCk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9y
ZWFjdC1kb20vbGliL1JlYWN0RmliZXJTY2hlZHVsZXIuanM6IEFkZGVkLgorICAgICAgICAoZ2V0
U2NoZWR1bGVyKToKKyAgICAgICAgKGZpbmROZXh0VW5pdE9mV29yayk6CisgICAgICAgIChjb21t
aXRBbGxXb3JrKToKKyAgICAgICAgKHJlc2V0V29ya1ByaW9yaXR5KToKKyAgICAgICAgKGNvbXBs
ZXRlVW5pdE9mV29yayk6CisgICAgICAgIChwZXJmb3JtVW5pdE9mV29yayk6CisgICAgICAgIChw
ZXJmb3JtRGVmZXJyZWRXb3JrKToKKyAgICAgICAgKHNjaGVkdWxlRGVmZXJyZWRXb3JrKToKKyAg
ICAgICAgKHBlcmZvcm1BbmltYXRpb25Xb3JrKToKKyAgICAgICAgKHNjaGVkdWxlQW5pbWF0aW9u
V29yayk6CisgICAgICAgIChzY2hlZHVsZVdvcmspOgorICAgICAgICAocGVyZm9ybVdpdGhQcmlv
cml0eSk6CisgICAgICAgIChtb2R1bGUuZXhwb3J0cyk6CisgICAgICAgICogU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxl
cy9yZWFjdC1kb20vbGliL1JlYWN0RmliZXJVcGRhdGVRdWV1ZS5qczogQWRkZWQuCisgICAgICAg
IChleHBvcnRzLmNyZWF0ZVVwZGF0ZVF1ZXVlKToKKyAgICAgICAgKGV4cG9ydHMuYWRkVG9RdWV1
ZSk6CisgICAgICAgIChleHBvcnRzLmFkZENhbGxiYWNrVG9RdWV1ZSk6CisgICAgICAgIChleHBv
cnRzLmNhbGxDYWxsYmFja3MpOgorICAgICAgICAoZXhwb3J0cy5tZXJnZVVwZGF0ZVF1ZXVlKToK
KyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RIb3N0Q29tcG9uZW50
LmpzOiBBZGRlZC4KKyAgICAgICAgKFJlYWN0SG9zdENvbXBvbmVudEluamVjdGlvbi5pbmplY3RH
ZW5lcmljQ29tcG9uZW50Q2xhc3MpOgorICAgICAgICAoUmVhY3RIb3N0Q29tcG9uZW50SW5qZWN0
aW9uLmluamVjdFRleHRDb21wb25lbnRDbGFzcyk6CisgICAgICAgIChSZWFjdEhvc3RDb21wb25l
bnRJbmplY3Rpb24uaW5qZWN0Q29tcG9uZW50Q2xhc3Nlcyk6CisgICAgICAgIChjcmVhdGVJbnRl
cm5hbENvbXBvbmVudCk6CisgICAgICAgIChjcmVhdGVJbnN0YW5jZUZvclRleHQpOgorICAgICAg
ICAoaXNUZXh0Q29tcG9uZW50KToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9s
aWIvUmVhY3RIb3N0T3BlcmF0aW9uSGlzdG9yeUhvb2suanM6IEFkZGVkLgorICAgICAgICAoUmVh
Y3RIb3N0T3BlcmF0aW9uSGlzdG9yeUhvb2sub25Ib3N0T3BlcmF0aW9uKToKKyAgICAgICAgKFJl
YWN0SG9zdE9wZXJhdGlvbkhpc3RvcnlIb29rLmNsZWFySGlzdG9yeSk6CisgICAgICAgIChSZWFj
dEhvc3RPcGVyYXRpb25IaXN0b3J5SG9vay5nZXRIaXN0b3J5KToKKyAgICAgICAgKiBTcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9t
b2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RJbmplY3Rpb24uanM6IEFkZGVkLgorICAgICAgICAq
IFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFj
dC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdElucHV0U2VsZWN0aW9uLmpzOiBBZGRl
ZC4KKyAgICAgICAgKGlzSW5Eb2N1bWVudCk6CisgICAgICAgIChSZWFjdElucHV0U2VsZWN0aW9u
Lmhhc1NlbGVjdGlvbkNhcGFiaWxpdGllcyk6CisgICAgICAgIChSZWFjdElucHV0U2VsZWN0aW9u
LmdldFNlbGVjdGlvbkluZm9ybWF0aW9uKToKKyAgICAgICAgKFJlYWN0SW5wdXRTZWxlY3Rpb24u
cmVzdG9yZVNlbGVjdGlvbik6CisgICAgICAgIChSZWFjdElucHV0U2VsZWN0aW9uLmdldFNlbGVj
dGlvbik6CisgICAgICAgIChSZWFjdElucHV0U2VsZWN0aW9uLnNldFNlbGVjdGlvbik6CisgICAg
ICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0SW5zdGFuY2VNYXAuanM6IEFk
ZGVkLgorICAgICAgICAoUmVhY3RJbnN0YW5jZU1hcC5yZW1vdmUpOgorICAgICAgICAoUmVhY3RJ
bnN0YW5jZU1hcC5oYXMpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9S
ZWFjdEluc3RhbmNlVHlwZS5qczogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFj
dC1kb20vbGliL1JlYWN0SW5zdHJ1bWVudGF0aW9uLmpzOiBBZGRlZC4KKyAgICAgICAgKiBTcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9k
ZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RJbnZhbGlkU2V0U3RhdGVXYXJuaW5nSG9vay5q
czogQWRkZWQuCisgICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOVi5zdHJpbmdfYXBwZWFyZWRf
aGVyZS53YXJuSW52YWxpZFNldFN0YXRlKToKKyAgICAgICAgKFJlYWN0SW52YWxpZFNldFN0YXRl
V2FybmluZ0hvb2sub25CZWdpblByb2Nlc3NpbmdDaGlsZENvbnRleHQpOgorICAgICAgICAoUmVh
Y3RJbnZhbGlkU2V0U3RhdGVXYXJuaW5nSG9vay5vbkVuZFByb2Nlc3NpbmdDaGlsZENvbnRleHQp
OgorICAgICAgICAoUmVhY3RJbnZhbGlkU2V0U3RhdGVXYXJuaW5nSG9vay5vblNldFN0YXRlKToK
KyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RNYXJrdXBDaGVja3N1
bS5qczogQWRkZWQuCisgICAgICAgIChSZWFjdE1hcmt1cENoZWNrc3VtLmFkZENoZWNrc3VtVG9N
YXJrdXApOgorICAgICAgICAoUmVhY3RNYXJrdXBDaGVja3N1bS5jYW5SZXVzZU1hcmt1cCk6Cisg
ICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0TW91bnQuanM6IEFkZGVk
LgorICAgICAgICAoZ2V0UmVhY3RSb290RWxlbWVudEluQ29udGFpbmVyKToKKyAgICAgICAgKGlu
dGVybmFsR2V0SUQpOgorICAgICAgICAobW91bnRDb21wb25lbnRJbnRvTm9kZSk6CisgICAgICAg
IChiYXRjaGVkTW91bnRDb21wb25lbnRJbnRvTm9kZSk6CisgICAgICAgICh1bm1vdW50Q29tcG9u
ZW50RnJvbU5vZGUpOgorICAgICAgICAoaGFzTm9uUm9vdFJlYWN0Q2hpbGQpOgorICAgICAgICAo
bm9kZUlzUmVuZGVyZWRCeU90aGVySW5zdGFuY2UpOgorICAgICAgICAoaXNWYWxpZENvbnRhaW5l
cik6CisgICAgICAgIChnZXRIb3N0Um9vdEluc3RhbmNlSW5Db250YWluZXIpOgorICAgICAgICAo
Z2V0VG9wTGV2ZWxXcmFwcGVySW5Db250YWluZXIpOgorICAgICAgICAoVG9wTGV2ZWxXcmFwcGVy
KToKKyAgICAgICAgKFRvcExldmVsV3JhcHBlci5wcm90b3R5cGUucmVuZGVyKToKKyAgICAgICAg
KFJlYWN0TW91bnQuc2Nyb2xsTW9uaXRvcik6CisgICAgICAgIChSZWFjdE1vdW50Ll91cGRhdGVS
b290Q29tcG9uZW50KToKKyAgICAgICAgKFJlYWN0TW91bnQuX3JlbmRlck5ld1Jvb3RDb21wb25l
bnQpOgorICAgICAgICAoUmVhY3RNb3VudC5yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcik6Cisg
ICAgICAgIChSZWFjdE1vdW50Ll9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcik6CisgICAgICAg
IChSZWFjdE1vdW50LnJlbmRlcik6CisgICAgICAgIChSZWFjdE1vdW50LnVubW91bnRDb21wb25l
bnRBdE5vZGUpOgorICAgICAgICAoUmVhY3RNb3VudC5fbW91bnRJbWFnZUludG9Ob2RlKToKKyAg
ICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RNdWx0aUNoaWxkLmpzOiBB
ZGRlZC4KKyAgICAgICAgKG1ha2VJbnNlcnRNYXJrdXApOgorICAgICAgICAobWFrZU1vdmUpOgor
ICAgICAgICAobWFrZVJlbW92ZSk6CisgICAgICAgIChtYWtlU2V0TWFya3VwKToKKyAgICAgICAg
KG1ha2VUZXh0Q29udGVudCk6CisgICAgICAgIChlbnF1ZXVlKToKKyAgICAgICAgKHByb2Nlc3NR
dWV1ZSk6CisgICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOVi5zdHJpbmdfYXBwZWFyZWRfaGVy
ZS5nZXREZWJ1Z0lEKToKKyAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WLnN0cmluZ19hcHBl
YXJlZF9oZXJlLnNldENoaWxkcmVuRm9ySW5zdHJ1bWVudGF0aW9uKToKKyAgICAgICAgKFJlYWN0
TXVsdGlDaGlsZC5NaXhpbi5fcmVjb25jaWxlckluc3RhbnRpYXRlQ2hpbGRyZW4pOgorICAgICAg
ICAoUmVhY3RNdWx0aUNoaWxkLk1peGluLl9yZWNvbmNpbGVyVXBkYXRlQ2hpbGRyZW4pOgorICAg
ICAgICAoUmVhY3RNdWx0aUNoaWxkLk1peGluLm1vdW50Q2hpbGRyZW4pOgorICAgICAgICAoUmVh
Y3RNdWx0aUNoaWxkLk1peGluLnVwZGF0ZVRleHRDb250ZW50KToKKyAgICAgICAgKFJlYWN0TXVs
dGlDaGlsZC5NaXhpbi51cGRhdGVNYXJrdXApOgorICAgICAgICAoUmVhY3RNdWx0aUNoaWxkLk1p
eGluLnVwZGF0ZUNoaWxkcmVuKToKKyAgICAgICAgKFJlYWN0TXVsdGlDaGlsZC5NaXhpbi5fdXBk
YXRlQ2hpbGRyZW4pOgorICAgICAgICAoUmVhY3RNdWx0aUNoaWxkLk1peGluLnVubW91bnRDaGls
ZHJlbik6CisgICAgICAgIChSZWFjdE11bHRpQ2hpbGQuTWl4aW4ubW92ZUNoaWxkKToKKyAgICAg
ICAgKFJlYWN0TXVsdGlDaGlsZC5NaXhpbi5jcmVhdGVDaGlsZCk6CisgICAgICAgIChSZWFjdE11
bHRpQ2hpbGQuTWl4aW4ucmVtb3ZlQ2hpbGQpOgorICAgICAgICAoUmVhY3RNdWx0aUNoaWxkLk1p
eGluLl9tb3VudENoaWxkQXRJbmRleCk6CisgICAgICAgIChSZWFjdE11bHRpQ2hpbGQuTWl4aW4u
X3VubW91bnRDaGlsZCk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1Jl
YWN0TXVsdGlDaGlsZFVwZGF0ZVR5cGVzLmpzOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1
bGVzL3JlYWN0LWRvbS9saWIvUmVhY3ROb2RlVHlwZXMuanM6IEFkZGVkLgorICAgICAgICAoUmVh
Y3ROb2RlVHlwZXMuZ2V0VHlwZSk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20v
bGliL1JlYWN0T3duZXIuanM6IEFkZGVkLgorICAgICAgICAoaXNWYWxpZE93bmVyKToKKyAgICAg
ICAgKFJlYWN0T3duZXIuYWRkQ29tcG9uZW50QXNSZWZUbyk6CisgICAgICAgIChSZWFjdE93bmVy
LnJlbW92ZUNvbXBvbmVudEFzUmVmRnJvbSk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFj
dC1kb20vbGliL1JlYWN0UGVyZi5qczogQWRkZWQuCisgICAgICAgIChfZXh0ZW5kcy5fYXNzaWdu
KToKKyAgICAgICAgKHJvdW5kRmxvYXQpOgorICAgICAgICAoY29uc29sZVRhYmxlKToKKyAgICAg
ICAgKHdhcm5JblByb2R1Y3Rpb24pOgorICAgICAgICAoZ2V0TGFzdE1lYXN1cmVtZW50cyk6Cisg
ICAgICAgIChnZXRFeGNsdXNpdmUpOgorICAgICAgICAoZ2V0RXhjbHVzaXZlLik6CisgICAgICAg
IChnZXRJbmNsdXNpdmUpOgorICAgICAgICAoZ2V0SW5jbHVzaXZlLik6CisgICAgICAgIChnZXRX
YXN0ZWQpOgorICAgICAgICAoZ2V0V2FzdGVkLik6CisgICAgICAgIChnZXRPcGVyYXRpb25zLik6
CisgICAgICAgIChnZXRPcGVyYXRpb25zKToKKyAgICAgICAgKHByaW50RXhjbHVzaXZlKToKKyAg
ICAgICAgKHByaW50SW5jbHVzaXZlKToKKyAgICAgICAgKHByaW50V2FzdGVkKToKKyAgICAgICAg
KHByaW50T3BlcmF0aW9ucyk6CisgICAgICAgIChwcmludERPTSk6CisgICAgICAgIChnZXRNZWFz
dXJlbWVudHNTdW1tYXJ5TWFwKToKKyAgICAgICAgKHN0YXJ0KToKKyAgICAgICAgKHN0b3ApOgor
ICAgICAgICAoaXNSdW5uaW5nKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9s
aWIvUmVhY3RQcmlvcml0eUxldmVsLmpzOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVz
L3JlYWN0LWRvbS9saWIvUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXMuanM6IEFkZGVkLgorICAg
ICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdFByb3BUeXBlTG9jYXRpb25z
LmpzOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RQ
cm9wVHlwZXNTZWNyZXQuanM6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3Qt
ZG9tL2xpYi9SZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uLmpzOiBBZGRlZC4KKyAgICAgICAgKEVW
RU5UX1NVUFBSRVNTSU9OLmluaXRpYWxpemUpOgorICAgICAgICAoRVZFTlRfU1VQUFJFU1NJT04u
Y2xvc2UpOgorICAgICAgICAoT05fRE9NX1JFQURZX1FVRVVFSU5HLmluaXRpYWxpemUpOgorICAg
ICAgICAoT05fRE9NX1JFQURZX1FVRVVFSU5HLmNsb3NlKToKKyAgICAgICAgKFJlYWN0UmVjb25j
aWxlVHJhbnNhY3Rpb24pOgorICAgICAgICAoTWl4aW4uZ2V0VHJhbnNhY3Rpb25XcmFwcGVycyk6
CisgICAgICAgIChNaXhpbi5nZXRSZWFjdE1vdW50UmVhZHkpOgorICAgICAgICAoTWl4aW4uZ2V0
VXBkYXRlUXVldWUpOgorICAgICAgICAoTWl4aW4uY2hlY2twb2ludCk6CisgICAgICAgIChNaXhp
bi5yb2xsYmFjayk6CisgICAgICAgIChNaXhpbi5kZXN0cnVjdG9yKToKKyAgICAgICAgKiBTcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9k
ZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RSZWNvbmNpbGVyLmpzOiBBZGRlZC4KKyAgICAg
ICAgKGF0dGFjaFJlZnMpOgorICAgICAgICAoUmVhY3RSZWNvbmNpbGVyLm1vdW50Q29tcG9uZW50
KToKKyAgICAgICAgKFJlYWN0UmVjb25jaWxlci5nZXRIb3N0Tm9kZSk6CisgICAgICAgIChSZWFj
dFJlY29uY2lsZXIudW5tb3VudENvbXBvbmVudCk6CisgICAgICAgIChSZWFjdFJlY29uY2lsZXIu
cmVjZWl2ZUNvbXBvbmVudCk6CisgICAgICAgIChSZWFjdFJlY29uY2lsZXIucGVyZm9ybVVwZGF0
ZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVh
Y3RSZWYuanM6IEFkZGVkLgorICAgICAgICAoZGV0YWNoUmVmKToKKyAgICAgICAgKFJlYWN0UmVm
LmF0dGFjaFJlZnMpOgorICAgICAgICAoUmVhY3RSZWYuc2hvdWxkVXBkYXRlUmVmcyk6CisgICAg
ICAgIChSZWFjdFJlZi5kZXRhY2hSZWZzKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0
LWRvbS9saWIvUmVhY3RSZWlmaWVkWWllbGQuanM6IEFkZGVkLgorICAgICAgICAoZXhwb3J0cy5j
cmVhdGVSZWlmaWVkWWllbGQpOgorICAgICAgICAoZXhwb3J0cy5jcmVhdGVVcGRhdGVkUmVpZmll
ZFlpZWxkKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RTZXJ2
ZXJCYXRjaGluZ1N0cmF0ZWd5LmpzOiBBZGRlZC4KKyAgICAgICAgKFJlYWN0U2VydmVyQmF0Y2hp
bmdTdHJhdGVneS5iYXRjaGVkVXBkYXRlcyk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFj
dC1kb20vbGliL1JlYWN0U2VydmVyUmVuZGVyaW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKHJlbmRl
clRvU3RyaW5nSW1wbCk6CisgICAgICAgIChyZW5kZXJUb1N0cmluZyk6CisgICAgICAgIChyZW5k
ZXJUb1N0YXRpY01hcmt1cCk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGli
L1JlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb24uanM6IEFkZGVkLgorICAgICAgICAobm9v
cENhbGxiYWNrUXVldWUuZW5xdWV1ZSk6CisgICAgICAgIChNaXhpbi5nZXRUcmFuc2FjdGlvbldy
YXBwZXJzKToKKyAgICAgICAgKE1peGluLmdldFJlYWN0TW91bnRSZWFkeSk6CisgICAgICAgIChN
aXhpbi5nZXRVcGRhdGVRdWV1ZSk6CisgICAgICAgIChNaXhpbi5kZXN0cnVjdG9yKToKKyAgICAg
ICAgKE1peGluLmNoZWNrcG9pbnQpOgorICAgICAgICAoTWl4aW4ucm9sbGJhY2spOgorICAgICAg
ICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9y
ZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdFNlcnZlclVwZGF0ZVF1ZXVlLmpz
OiBBZGRlZC4KKyAgICAgICAgKF9jbGFzc0NhbGxDaGVjayk6CisgICAgICAgICh3YXJuTm9vcCk6
CisgICAgICAgIChSZWFjdFNlcnZlclVwZGF0ZVF1ZXVlLnByb3RvdHlwZS5pc01vdW50ZWQpOgor
ICAgICAgICAoUmVhY3RTZXJ2ZXJVcGRhdGVRdWV1ZS5wcm90b3R5cGUuZW5xdWV1ZUNhbGxiYWNr
KToKKyAgICAgICAgKFJlYWN0U2VydmVyVXBkYXRlUXVldWUucHJvdG90eXBlLmVucXVldWVGb3Jj
ZVVwZGF0ZSk6CisgICAgICAgIChSZWFjdFNlcnZlclVwZGF0ZVF1ZXVlLnByb3RvdHlwZS5lbnF1
ZXVlUmVwbGFjZVN0YXRlKToKKyAgICAgICAgKFJlYWN0U2VydmVyVXBkYXRlUXVldWUucHJvdG90
eXBlLmVucXVldWVTZXRTdGF0ZSk6CisgICAgICAgIChSZWFjdFNlcnZlclVwZGF0ZVF1ZXVlKToK
KyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RTaGFsbG93UmVuZGVy
ZXIuanM6IEFkZGVkLgorICAgICAgICAoX2NsYXNzQ2FsbENoZWNrKToKKyAgICAgICAgKE5vb3BJ
bnRlcm5hbENvbXBvbmVudC5wcm90b3R5cGUubW91bnRDb21wb25lbnQpOgorICAgICAgICAoTm9v
cEludGVybmFsQ29tcG9uZW50LnByb3RvdHlwZS5yZWNlaXZlQ29tcG9uZW50KToKKyAgICAgICAg
KE5vb3BJbnRlcm5hbENvbXBvbmVudC5wcm90b3R5cGUudW5tb3VudENvbXBvbmVudCk6CisgICAg
ICAgIChOb29wSW50ZXJuYWxDb21wb25lbnQucHJvdG90eXBlLmdldEhvc3ROb2RlKToKKyAgICAg
ICAgKE5vb3BJbnRlcm5hbENvbXBvbmVudC5wcm90b3R5cGUuZ2V0UHVibGljSW5zdGFuY2UpOgor
ICAgICAgICAoTm9vcEludGVybmFsQ29tcG9uZW50KToKKyAgICAgICAgKFNoYWxsb3dDb21wb25l
bnRXcmFwcGVyKToKKyAgICAgICAgKF9pbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50KToKKyAgICAg
ICAgKF9yZXBsYWNlTm9kZVdpdGhNYXJrdXApOgorICAgICAgICAoX2JhdGNoZWRSZW5kZXIpOgor
ICAgICAgICAoUmVhY3RTaGFsbG93UmVuZGVyZXIucHJvdG90eXBlLmdldE1vdW50ZWRJbnN0YW5j
ZSk6CisgICAgICAgIChSZWFjdFNoYWxsb3dSZW5kZXJlci5wcm90b3R5cGUucmVuZGVyKToKKyAg
ICAgICAgKFJlYWN0U2hhbGxvd1JlbmRlcmVyLnByb3RvdHlwZS5nZXRSZW5kZXJPdXRwdXQpOgor
ICAgICAgICAoUmVhY3RTaGFsbG93UmVuZGVyZXIucHJvdG90eXBlLnVubW91bnQpOgorICAgICAg
ICAoUmVhY3RTaGFsbG93UmVuZGVyZXIucHJvdG90eXBlLl9yZW5kZXIpOgorICAgICAgICAoUmVh
Y3RTaGFsbG93UmVuZGVyZXIpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xp
Yi9SZWFjdFNpbXBsZUVtcHR5Q29tcG9uZW50LmpzOiBBZGRlZC4KKyAgICAgICAgKFJlYWN0U2lt
cGxlRW1wdHlDb21wb25lbnQpOgorICAgICAgICAobW91bnRDb21wb25lbnQpOgorICAgICAgICAo
cmVjZWl2ZUNvbXBvbmVudCk6CisgICAgICAgIChnZXRIb3N0Tm9kZSk6CisgICAgICAgICh1bm1v
dW50Q29tcG9uZW50KToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVh
Y3RTeW50aGV0aWNFdmVudFR5cGUuanM6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMv
cmVhY3QtZG9tL2xpYi9SZWFjdFRlc3RVdGlscy5qczogQWRkZWQuCisgICAgICAgIChFdmVudCk6
CisgICAgICAgIChmaW5kQWxsSW5SZW5kZXJlZFRyZWVJbnRlcm5hbCk6CisgICAgICAgIChSZWFj
dFRlc3RVdGlscy5yZW5kZXJJbnRvRG9jdW1lbnQpOgorICAgICAgICAoUmVhY3RUZXN0VXRpbHMu
aXNFbGVtZW50KToKKyAgICAgICAgKFJlYWN0VGVzdFV0aWxzLmlzRWxlbWVudE9mVHlwZSk6Cisg
ICAgICAgIChSZWFjdFRlc3RVdGlscy5pc0RPTUNvbXBvbmVudCk6CisgICAgICAgIChSZWFjdFRl
c3RVdGlscy5pc0RPTUNvbXBvbmVudEVsZW1lbnQpOgorICAgICAgICAoUmVhY3RUZXN0VXRpbHMu
aXNDb21wb3NpdGVDb21wb25lbnQpOgorICAgICAgICAoUmVhY3RUZXN0VXRpbHMuaXNDb21wb3Np
dGVDb21wb25lbnRXaXRoVHlwZSk6CisgICAgICAgIChSZWFjdFRlc3RVdGlscy5pc0NvbXBvc2l0
ZUNvbXBvbmVudEVsZW1lbnQpOgorICAgICAgICAoUmVhY3RUZXN0VXRpbHMuaXNDb21wb3NpdGVD
b21wb25lbnRFbGVtZW50V2l0aFR5cGUpOgorICAgICAgICAoUmVhY3RUZXN0VXRpbHMuZ2V0UmVu
ZGVyZWRDaGlsZE9mQ29tcG9zaXRlQ29tcG9uZW50KToKKyAgICAgICAgKFJlYWN0VGVzdFV0aWxz
LmZpbmRBbGxJblJlbmRlcmVkVHJlZSk6CisgICAgICAgIChSZWFjdFRlc3RVdGlscy4pOgorICAg
ICAgICAoUmVhY3RUZXN0VXRpbHMuc2NyeVJlbmRlcmVkRE9NQ29tcG9uZW50c1dpdGhDbGFzcyk6
CisgICAgICAgIChSZWFjdFRlc3RVdGlscy5maW5kUmVuZGVyZWRET01Db21wb25lbnRXaXRoQ2xh
c3MpOgorICAgICAgICAoUmVhY3RUZXN0VXRpbHMuc2NyeVJlbmRlcmVkRE9NQ29tcG9uZW50c1dp
dGhUYWcpOgorICAgICAgICAoUmVhY3RUZXN0VXRpbHMuZmluZFJlbmRlcmVkRE9NQ29tcG9uZW50
V2l0aFRhZyk6CisgICAgICAgIChSZWFjdFRlc3RVdGlscy5zY3J5UmVuZGVyZWRDb21wb25lbnRz
V2l0aFR5cGUpOgorICAgICAgICAoUmVhY3RUZXN0VXRpbHMuZmluZFJlbmRlcmVkQ29tcG9uZW50
V2l0aFR5cGUpOgorICAgICAgICAoUmVhY3RUZXN0VXRpbHMubW9ja0NvbXBvbmVudCk6CisgICAg
ICAgIChSZWFjdFRlc3RVdGlscy5zaW11bGF0ZU5hdGl2ZUV2ZW50T25Ob2RlKToKKyAgICAgICAg
KFJlYWN0VGVzdFV0aWxzLnNpbXVsYXRlTmF0aXZlRXZlbnRPbkRPTUNvbXBvbmVudCk6CisgICAg
ICAgIChSZWFjdFRlc3RVdGlscy5uYXRpdmVUb3VjaERhdGEpOgorICAgICAgICAoUmVhY3RUZXN0
VXRpbHMuY3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAoYnVpbGRTaW11bGF0b3JzKToKKyAgICAg
ICAgKEV2ZW50UGx1Z2luSHViLmluamVjdGlvbi5pbmplY3RFdmVudFBsdWdpbk9yZGVyKToKKyAg
ICAgICAgKEV2ZW50UGx1Z2luSHViLmluamVjdGlvbi5pbmplY3RFdmVudFBsdWdpbnNCeU5hbWUp
OgorICAgICAgICAobWFrZU5hdGl2ZVNpbXVsYXRvcik6CisgICAgICAgIChPYmplY3Qua2V5cy50
b3BMZXZlbFR5cGVzLmZvckVhY2gpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9t
L2xpYi9SZWFjdFR5cGVPZldvcmsuanM6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMv
cmVhY3QtZG9tL2xpYi9SZWFjdFR5cGVzLmpzOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1
bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RVcGRhdGVRdWV1ZS5qczogQWRkZWQuCisgICAgICAgIChl
bnF1ZXVlVXBkYXRlKToKKyAgICAgICAgKGZvcm1hdFVuZXhwZWN0ZWRBcmd1bWVudCk6CisgICAg
ICAgIChnZXRJbnRlcm5hbEluc3RhbmNlUmVhZHlGb3JVcGRhdGUpOgorICAgICAgICAoUmVhY3RV
cGRhdGVRdWV1ZS5pc01vdW50ZWQpOgorICAgICAgICAoUmVhY3RVcGRhdGVRdWV1ZS5lbnF1ZXVl
Q2FsbGJhY2spOgorICAgICAgICAoUmVhY3RVcGRhdGVRdWV1ZS5lbnF1ZXVlQ2FsbGJhY2tJbnRl
cm5hbCk6CisgICAgICAgIChSZWFjdFVwZGF0ZVF1ZXVlLmVucXVldWVGb3JjZVVwZGF0ZSk6Cisg
ICAgICAgIChSZWFjdFVwZGF0ZVF1ZXVlLmVucXVldWVSZXBsYWNlU3RhdGUpOgorICAgICAgICAo
UmVhY3RVcGRhdGVRdWV1ZS5lbnF1ZXVlU2V0U3RhdGUpOgorICAgICAgICAoUmVhY3RVcGRhdGVR
dWV1ZS5lbnF1ZXVlRWxlbWVudEludGVybmFsKToKKyAgICAgICAgKFJlYWN0VXBkYXRlUXVldWUu
dmFsaWRhdGVDYWxsYmFjayk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGli
L1JlYWN0VXBkYXRlcy5qczogQWRkZWQuCisgICAgICAgIChlbnN1cmVJbmplY3RlZCk6CisgICAg
ICAgIChORVNURURfVVBEQVRFUy5pbml0aWFsaXplKToKKyAgICAgICAgKE5FU1RFRF9VUERBVEVT
LmNsb3NlKToKKyAgICAgICAgKFVQREFURV9RVUVVRUlORy5pbml0aWFsaXplKToKKyAgICAgICAg
KFVQREFURV9RVUVVRUlORy5jbG9zZSk6CisgICAgICAgIChSZWFjdFVwZGF0ZXNGbHVzaFRyYW5z
YWN0aW9uKToKKyAgICAgICAgKGdldFRyYW5zYWN0aW9uV3JhcHBlcnMpOgorICAgICAgICAoZGVz
dHJ1Y3Rvcik6CisgICAgICAgIChwZXJmb3JtKToKKyAgICAgICAgKGJhdGNoZWRVcGRhdGVzKToK
KyAgICAgICAgKG1vdW50T3JkZXJDb21wYXJhdG9yKToKKyAgICAgICAgKHJ1bkJhdGNoZWRVcGRh
dGVzKToKKyAgICAgICAgKGZsdXNoQmF0Y2hlZFVwZGF0ZXMpOgorICAgICAgICAoZW5xdWV1ZVVw
ZGF0ZSk6CisgICAgICAgIChhc2FwKToKKyAgICAgICAgKFJlYWN0VXBkYXRlc0luamVjdGlvbi5p
bmplY3RSZWNvbmNpbGVUcmFuc2FjdGlvbik6CisgICAgICAgIChSZWFjdFVwZGF0ZXNJbmplY3Rp
b24uaW5qZWN0QmF0Y2hpbmdTdHJhdGVneSk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFj
dC1kb20vbGliL1JlYWN0VmVyc2lvbi5qczogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxl
cy9yZWFjdC1kb20vbGliL1Jlc3BvbmRlckV2ZW50UGx1Z2luLmpzOiBBZGRlZC4KKyAgICAgICAg
KGNoYW5nZVJlc3BvbmRlcik6CisgICAgICAgIChzZXRSZXNwb25kZXJBbmRFeHRyYWN0VHJhbnNm
ZXIpOgorICAgICAgICAoY2FuVHJpZ2dlclRyYW5zZmVyKToKKyAgICAgICAgKFJlc3BvbmRlckV2
ZW50UGx1Z2luLl9nZXRSZXNwb25kZXJJRCk6CisgICAgICAgIChSZXNwb25kZXJFdmVudFBsdWdp
bi5leHRyYWN0RXZlbnRzKToKKyAgICAgICAgKFJlc3BvbmRlckV2ZW50UGx1Z2luLmluamVjdGlv
bi5pbmplY3RHbG9iYWxSZXNwb25kZXJIYW5kbGVyKToKKyAgICAgICAgKFJlc3BvbmRlckV2ZW50
UGx1Z2luLmluamVjdGlvbi5pbmplY3RHbG9iYWxJbnRlcmFjdGlvbkhhbmRsZXIpOgorICAgICAg
ICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9y
ZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZXNwb25kZXJTeW50aGV0aWNFdmVudC5q
czogQWRkZWQuCisgICAgICAgIChSZXNwb25kZXJFdmVudEludGVyZmFjZS50b3VjaEhpc3Rvcnkp
OgorICAgICAgICAoUmVzcG9uZGVyU3ludGhldGljRXZlbnQpOgorICAgICAgICAqIFNwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21v
ZHVsZXMvcmVhY3QtZG9tL2xpYi9SZXNwb25kZXJUb3VjaEhpc3RvcnlTdG9yZS5qczogQWRkZWQu
CisgICAgICAgICh0aW1lc3RhbXBGb3JUb3VjaCk6CisgICAgICAgIChjcmVhdGVUb3VjaFJlY29y
ZCk6CisgICAgICAgIChyZXNldFRvdWNoUmVjb3JkKToKKyAgICAgICAgKGdldFRvdWNoSWRlbnRp
Zmllcik6CisgICAgICAgIChyZWNvcmRUb3VjaFN0YXJ0KToKKyAgICAgICAgKHJlY29yZFRvdWNo
TW92ZSk6CisgICAgICAgIChyZWNvcmRUb3VjaEVuZCk6CisgICAgICAgIChwcmludFRvdWNoKToK
KyAgICAgICAgKFJlc3BvbmRlclRvdWNoSGlzdG9yeVN0b3JlLnJlY29yZFRvdWNoVHJhY2spOgor
ICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9TVkdET01Qcm9wZXJ0eUNvbmZp
Zy5qczogQWRkZWQuCisgICAgICAgIChPYmplY3Qua2V5cy5BVFRSUy5mb3JFYWNoKToKKyAgICAg
ICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
cmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvU2VsZWN0RXZlbnRQbHVnaW4uanM6IEFk
ZGVkLgorICAgICAgICAoZ2V0U2VsZWN0aW9uKToKKyAgICAgICAgKGNvbnN0cnVjdFNlbGVjdEV2
ZW50KToKKyAgICAgICAgKFNlbGVjdEV2ZW50UGx1Z2luLmV4dHJhY3RFdmVudHMpOgorICAgICAg
ICAoU2VsZWN0RXZlbnRQbHVnaW4uZGlkUHV0TGlzdGVuZXIpOgorICAgICAgICAqIFNwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21v
ZHVsZXMvcmVhY3QtZG9tL2xpYi9TaW1wbGVFdmVudFBsdWdpbi5qczogQWRkZWQuCisgICAgICAg
IChzdHJpbmdfYXBwZWFyZWRfaGVyZS5mb3JFYWNoKToKKyAgICAgICAgKGlzSW50ZXJhY3RpdmUp
OgorICAgICAgICAoc2hvdWxkUHJldmVudE1vdXNlRXZlbnQpOgorICAgICAgICAoU2ltcGxlRXZl
bnRQbHVnaW4uZXh0cmFjdEV2ZW50cyk6CisgICAgICAgIChTaW1wbGVFdmVudFBsdWdpbi5kaWRQ
dXRMaXN0ZW5lcik6CisgICAgICAgIChTaW1wbGVFdmVudFBsdWdpbi53aWxsRGVsZXRlTGlzdGVu
ZXIpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9TeW50aGV0aWNBbmlt
YXRpb25FdmVudC5qczogQWRkZWQuCisgICAgICAgIChTeW50aGV0aWNBbmltYXRpb25FdmVudCk6
CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1N5bnRoZXRpY0NsaXBib2Fy
ZEV2ZW50LmpzOiBBZGRlZC4KKyAgICAgICAgKENsaXBib2FyZEV2ZW50SW50ZXJmYWNlLmNsaXBi
b2FyZERhdGEpOgorICAgICAgICAoU3ludGhldGljQ2xpcGJvYXJkRXZlbnQpOgorICAgICAgICAq
IFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFj
dC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9TeW50aGV0aWNDb21wb3NpdGlvbkV2ZW50Lmpz
OiBBZGRlZC4KKyAgICAgICAgKFN5bnRoZXRpY0NvbXBvc2l0aW9uRXZlbnQpOgorICAgICAgICAq
IFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFj
dC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9TeW50aGV0aWNEcmFnRXZlbnQuanM6IEFkZGVk
LgorICAgICAgICAoU3ludGhldGljRHJhZ0V2ZW50KToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVz
L3JlYWN0LWRvbS9saWIvU3ludGhldGljRXZlbnQuanM6IEFkZGVkLgorICAgICAgICAoRXZlbnRJ
bnRlcmZhY2UudGltZVN0YW1wKToKKyAgICAgICAgKFN5bnRoZXRpY0V2ZW50KToKKyAgICAgICAg
KHByZXZlbnREZWZhdWx0KToKKyAgICAgICAgKHN0b3BQcm9wYWdhdGlvbik6CisgICAgICAgIChw
ZXJzaXN0KToKKyAgICAgICAgKGRlc3RydWN0b3IpOgorICAgICAgICAocHJvY2Vzcy5lbnYuTk9E
RV9FTlYuc3RyaW5nX2FwcGVhcmVkX2hlcmUuaXNQcm94eVN1cHBvcnRlZC5jb25zdHJ1Y3QpOgor
ICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYuc3RyaW5nX2FwcGVhcmVkX2hlcmUuaXNQcm94
eVN1cHBvcnRlZC4pOgorICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYuc3RyaW5nX2FwcGVh
cmVkX2hlcmUuaXNQcm94eVN1cHBvcnRlZC5hcHBseSk6CisgICAgICAgIChFKToKKyAgICAgICAg
KHNldCBTeW50aGV0aWNFdmVudC5hdWdtZW50Q2xhc3MpOgorICAgICAgICAod2Fybik6CisgICAg
ICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1N5bnRoZXRpY0ZvY3VzRXZlbnQuanM6
IEFkZGVkLgorICAgICAgICAoU3ludGhldGljRm9jdXNFdmVudCk6CisgICAgICAgICogU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVf
bW9kdWxlcy9yZWFjdC1kb20vbGliL1N5bnRoZXRpY0lucHV0RXZlbnQuanM6IEFkZGVkLgorICAg
ICAgICAoU3ludGhldGljSW5wdXRFdmVudCk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFj
dC1kb20vbGliL1N5bnRoZXRpY0tleWJvYXJkRXZlbnQuanM6IEFkZGVkLgorICAgICAgICAoS2V5
Ym9hcmRFdmVudEludGVyZmFjZS5jaGFyQ29kZSk6CisgICAgICAgIChLZXlib2FyZEV2ZW50SW50
ZXJmYWNlLmtleUNvZGUpOgorICAgICAgICAoS2V5Ym9hcmRFdmVudEludGVyZmFjZSk6CisgICAg
ICAgIChTeW50aGV0aWNLZXlib2FyZEV2ZW50KToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3Jl
YWN0LWRvbS9saWIvU3ludGhldGljTW91c2VFdmVudC5qczogQWRkZWQuCisgICAgICAgIChNb3Vz
ZUV2ZW50SW50ZXJmYWNlLmJ1dHRvbik6CisgICAgICAgIChNb3VzZUV2ZW50SW50ZXJmYWNlLnJl
bGF0ZWRUYXJnZXQpOgorICAgICAgICAoTW91c2VFdmVudEludGVyZmFjZS5wYWdlWCk6CisgICAg
ICAgIChNb3VzZUV2ZW50SW50ZXJmYWNlLnBhZ2VZKToKKyAgICAgICAgKFN5bnRoZXRpY01vdXNl
RXZlbnQpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9TeW50aGV0aWNU
b3VjaEV2ZW50LmpzOiBBZGRlZC4KKyAgICAgICAgKFN5bnRoZXRpY1RvdWNoRXZlbnQpOgorICAg
ICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9TeW50aGV0aWNUcmFuc2l0aW9uRXZl
bnQuanM6IEFkZGVkLgorICAgICAgICAoU3ludGhldGljVHJhbnNpdGlvbkV2ZW50KToKKyAgICAg
ICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
cmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvU3ludGhldGljVUlFdmVudC5qczogQWRk
ZWQuCisgICAgICAgIChVSUV2ZW50SW50ZXJmYWNlLnZpZXcpOgorICAgICAgICAoVUlFdmVudElu
dGVyZmFjZS5kZXRhaWwpOgorICAgICAgICAoU3ludGhldGljVUlFdmVudCk6CisgICAgICAgICog
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0
L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1N5bnRoZXRpY1doZWVsRXZlbnQuanM6IEFkZGVk
LgorICAgICAgICAoV2hlZWxFdmVudEludGVyZmFjZS5kZWx0YVgpOgorICAgICAgICAoV2hlZWxF
dmVudEludGVyZmFjZS5kZWx0YVkpOgorICAgICAgICAoU3ludGhldGljV2hlZWxFdmVudCk6Cisg
ICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1RhcEV2ZW50UGx1Z2luLmpzOiBB
ZGRlZC4KKyAgICAgICAgKGdldEF4aXNDb29yZE9mRXZlbnQpOgorICAgICAgICAoZ2V0RGlzdGFu
Y2UpOgorICAgICAgICAoVGFwRXZlbnRQbHVnaW4uZXh0cmFjdEV2ZW50cyk6CisgICAgICAgICog
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0
L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1RvdWNoSGlzdG9yeU1hdGguanM6IEFkZGVkLgor
ICAgICAgICAoVG91Y2hIaXN0b3J5TWF0aC5jZW50cm9pZERpbWVuc2lvbik6CisgICAgICAgIChU
b3VjaEhpc3RvcnlNYXRoLmN1cnJlbnRDZW50cm9pZFhPZlRvdWNoZXNDaGFuZ2VkQWZ0ZXIpOgor
ICAgICAgICAoVG91Y2hIaXN0b3J5TWF0aC5jdXJyZW50Q2VudHJvaWRZT2ZUb3VjaGVzQ2hhbmdl
ZEFmdGVyKToKKyAgICAgICAgKFRvdWNoSGlzdG9yeU1hdGgucHJldmlvdXNDZW50cm9pZFhPZlRv
dWNoZXNDaGFuZ2VkQWZ0ZXIpOgorICAgICAgICAoVG91Y2hIaXN0b3J5TWF0aC5wcmV2aW91c0Nl
bnRyb2lkWU9mVG91Y2hlc0NoYW5nZWRBZnRlcik6CisgICAgICAgIChUb3VjaEhpc3RvcnlNYXRo
LmN1cnJlbnRDZW50cm9pZFgpOgorICAgICAgICAoVG91Y2hIaXN0b3J5TWF0aC5jdXJyZW50Q2Vu
dHJvaWRZKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvVHJhbnNhY3Rp
b24uanM6IEFkZGVkLgorICAgICAgICAoVHJhbnNhY3Rpb25JbXBsLnJlaW5pdGlhbGl6ZVRyYW5z
YWN0aW9uKToKKyAgICAgICAgKFRyYW5zYWN0aW9uSW1wbC5pc0luVHJhbnNhY3Rpb24pOgorICAg
ICAgICAoVHJhbnNhY3Rpb25JbXBsLnBlcmZvcm0pOgorICAgICAgICAoVHJhbnNhY3Rpb25JbXBs
LmluaXRpYWxpemVBbGwpOgorICAgICAgICAoVHJhbnNhY3Rpb25JbXBsLmNsb3NlQWxsKToKKyAg
ICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvVmlld3BvcnRNZXRyaWNzLmpzOiBB
ZGRlZC4KKyAgICAgICAgKFZpZXdwb3J0TWV0cmljcy5yZWZyZXNoU2Nyb2xsVmFsdWVzKToKKyAg
ICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvYWNjdW11bGF0ZS5qczogQWRkZWQu
CisgICAgICAgIChhY2N1bXVsYXRlKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRv
bS9saWIvYWNjdW11bGF0ZUludG8uanM6IEFkZGVkLgorICAgICAgICAoYWNjdW11bGF0ZUludG8p
OgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9hZGxlcjMyLmpzOiBBZGRl
ZC4KKyAgICAgICAgKGFkbGVyMzIpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9t
L2xpYi9jYW5EZWZpbmVQcm9wZXJ0eS5qczogQWRkZWQuCisgICAgICAgIChwcm9jZXNzLmVudi5O
T0RFX0VOVi5zdHJpbmdfYXBwZWFyZWRfaGVyZS50cnkuKToKKyAgICAgICAgKiBTcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1
bGVzL3JlYWN0LWRvbS9saWIvY2hlY2tSZWFjdFR5cGVTcGVjLmpzOiBBZGRlZC4KKyAgICAgICAg
KiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVh
Y3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvY3JlYXRlTWljcm9zb2Z0VW5zYWZlTG9jYWxG
dW5jdGlvbi5qczogQWRkZWQuCisgICAgICAgIChjcmVhdGVNaWNyb3NvZnRVbnNhZmVMb2NhbEZ1
bmN0aW9uKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvZGFuZ2Vyb3Vz
U3R5bGVWYWx1ZS5qczogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20v
bGliL2RlcHJlY2F0ZWQuanM6IEFkZGVkLgorICAgICAgICAobmV3Rm4pOgorICAgICAgICAoZGVw
cmVjYXRlZCk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL2VzY2FwZVRl
eHRDb250ZW50Rm9yQnJvd3Nlci5qczogQWRkZWQuCisgICAgICAgIChtYXRjaEh0bWxSZWdFeHAp
OgorICAgICAgICAoZXNjYXBlVGV4dENvbnRlbnRGb3JCcm93c2VyKToKKyAgICAgICAgKiBTcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9k
ZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvZmluZERPTU5vZGUuanM6IEFkZGVkLgorICAgICAgICAo
ZmluZERPTU5vZGUpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9mbGF0
dGVuQ2hpbGRyZW4uanM6IEFkZGVkLgorICAgICAgICAoZmxhdHRlblNpbmdsZUNoaWxkSW50b0Nv
bnRleHQpOgorICAgICAgICAoZmxhdHRlbkNoaWxkcmVuKToKKyAgICAgICAgKiBTcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1
bGVzL3JlYWN0LWRvbS9saWIvZm9yRWFjaEFjY3VtdWxhdGVkLmpzOiBBZGRlZC4KKyAgICAgICAg
KGZvckVhY2hBY2N1bXVsYXRlZCk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20v
bGliL2dldEV2ZW50Q2hhckNvZGUuanM6IEFkZGVkLgorICAgICAgICAoZ2V0RXZlbnRDaGFyQ29k
ZSk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL2dldEV2ZW50S2V5Lmpz
OiBBZGRlZC4KKyAgICAgICAgKGdldEV2ZW50S2V5KToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVz
L3JlYWN0LWRvbS9saWIvZ2V0RXZlbnRNb2RpZmllclN0YXRlLmpzOiBBZGRlZC4KKyAgICAgICAg
KG1vZGlmaWVyU3RhdGVHZXR0ZXIpOgorICAgICAgICAoZ2V0RXZlbnRNb2RpZmllclN0YXRlKToK
KyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvZ2V0RXZlbnRUYXJnZXQuanM6
IEFkZGVkLgorICAgICAgICAoZ2V0RXZlbnRUYXJnZXQpOgorICAgICAgICAqIFNwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVs
ZXMvcmVhY3QtZG9tL2xpYi9nZXRIb3N0Q29tcG9uZW50RnJvbUNvbXBvc2l0ZS5qczogQWRkZWQu
CisgICAgICAgIChnZXRIb3N0Q29tcG9uZW50RnJvbUNvbXBvc2l0ZSk6CisgICAgICAgICogU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25v
ZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL2dldEl0ZXJhdG9yRm4uanM6IEFkZGVkLgorICAgICAg
ICAoZ2V0SXRlcmF0b3JGbik6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGli
L2dldE5leHREZWJ1Z0lELmpzOiBBZGRlZC4KKyAgICAgICAgKGdldE5leHREZWJ1Z0lEKToKKyAg
ICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvZ2V0Tm9kZUZvckNoYXJhY3Rlck9m
ZnNldC5qczogQWRkZWQuCisgICAgICAgIChnZXRMZWFmTm9kZSk6CisgICAgICAgIChnZXRTaWJs
aW5nTm9kZSk6CisgICAgICAgIChnZXROb2RlRm9yQ2hhcmFjdGVyT2Zmc2V0KToKKyAgICAgICAg
KiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVh
Y3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvZ2V0VGVzdERvY3VtZW50LmpzOiBBZGRlZC4K
KyAgICAgICAgKGdldFRlc3REb2N1bWVudCk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFj
dC1kb20vbGliL2dldFRleHRDb250ZW50QWNjZXNzb3IuanM6IEFkZGVkLgorICAgICAgICAoZ2V0
VGV4dENvbnRlbnRBY2Nlc3Nvcik6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20v
bGliL2dldFZlbmRvclByZWZpeGVkRXZlbnROYW1lLmpzOiBBZGRlZC4KKyAgICAgICAgKG1ha2VQ
cmVmaXhNYXApOgorICAgICAgICAoZ2V0VmVuZG9yUHJlZml4ZWRFdmVudE5hbWUpOgorICAgICAg
ICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9y
ZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9pbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50
LmpzOiBBZGRlZC4KKyAgICAgICAgKFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50V3JhcHBlcik6Cisg
ICAgICAgIChnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0pOgorICAgICAgICAoaXNJbnRlcm5h
bENvbXBvbmVudFR5cGUpOgorICAgICAgICAoaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudCk6Cisg
ICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL2lzRXZlbnRTdXBwb3J0ZWQuanM6
IEFkZGVkLgorICAgICAgICAoaXNFdmVudFN1cHBvcnRlZCk6CisgICAgICAgICogU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9k
dWxlcy9yZWFjdC1kb20vbGliL2lzVGV4dElucHV0RWxlbWVudC5qczogQWRkZWQuCisgICAgICAg
IChpc1RleHRJbnB1dEVsZW1lbnQpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9t
L2xpYi9xdW90ZUF0dHJpYnV0ZVZhbHVlRm9yQnJvd3Nlci5qczogQWRkZWQuCisgICAgICAgIChx
dW90ZUF0dHJpYnV0ZVZhbHVlRm9yQnJvd3Nlcik6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9y
ZWFjdC1kb20vbGliL3JlYWN0Q29tcG9uZW50RXhwZWN0LmpzOiBBZGRlZC4KKyAgICAgICAgKHJl
YWN0Q29tcG9uZW50RXhwZWN0KToKKyAgICAgICAgKHJlYWN0Q29tcG9uZW50RXhwZWN0SW50ZXJu
YWwpOgorICAgICAgICAoaW5zdGFuY2UpOgorICAgICAgICAoZXhwZWN0UmVuZGVyZWRDaGlsZCk6
CisgICAgICAgIChleHBlY3RSZW5kZXJlZENoaWxkQXQpOgorICAgICAgICAodG9CZURPTUNvbXBv
bmVudFdpdGhDaGlsZENvdW50KToKKyAgICAgICAgKHRvQmVET01Db21wb25lbnRXaXRoTm9DaGls
ZHJlbik6CisgICAgICAgICh0b0JlQ29tcG9uZW50T2ZUeXBlKToKKyAgICAgICAgKHRvQmVDb21w
b3NpdGVDb21wb25lbnQpOgorICAgICAgICAodG9CZUNvbXBvc2l0ZUNvbXBvbmVudFdpdGhUeXBl
KToKKyAgICAgICAgKHRvQmVUZXh0Q29tcG9uZW50V2l0aFZhbHVlKToKKyAgICAgICAgKHRvQmVF
bXB0eUNvbXBvbmVudCk6CisgICAgICAgICh0b0JlUHJlc2VudCk6CisgICAgICAgICh0b0JlRE9N
Q29tcG9uZW50KToKKyAgICAgICAgKHRvQmVET01Db21wb25lbnRXaXRoVGFnKToKKyAgICAgICAg
KHNjYWxhclN0YXRlRXF1YWwpOgorICAgICAgICAoc2NhbGFyUHJvcHNFcXVhbCk6CisgICAgICAg
IChzY2FsYXJDb250ZXh0RXF1YWwpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9t
L2xpYi9yZWFjdFByb2RJbnZhcmlhbnQuanM6IEFkZGVkLgorICAgICAgICAocmVhY3RQcm9kSW52
YXJpYW50KToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvcmVuZGVyU3Vi
dHJlZUludG9Db250YWluZXIuanM6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVh
Y3QtZG9tL2xpYi9zZXRJbm5lckhUTUwuanM6IEFkZGVkLgorICAgICAgICAoc2V0SW5uZXJIVE1M
LmNyZWF0ZU1pY3Jvc29mdFVuc2FmZUxvY2FsRnVuY3Rpb24pOgorICAgICAgICAoRXhlY3V0aW9u
RW52aXJvbm1lbnQuY2FuVXNlRE9NLnRlc3RFbGVtZW50LmlubmVySFRNTC5zdHJpbmdfYXBwZWFy
ZWRfaGVyZS5zZXRJbm5lckhUTUwpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9t
L2xpYi9zZXRUZXh0Q29udGVudC5qczogQWRkZWQuCisgICAgICAgIChzZXRUZXh0Q29udGVudCk6
CisgICAgICAgIChFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00uc3RyaW5nX2FwcGVhcmVk
X2hlcmUuaW4uZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNldFRleHRDb250ZW50KToKKyAgICAg
ICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
cmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvc2hvdWxkVXBkYXRlUmVhY3RDb21wb25l
bnQuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkVXBkYXRlUmVhY3RDb21wb25lbnQpOgorICAg
ICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi90cmF2ZXJzZUFsbENoaWxkcmVuLmpz
OiBBZGRlZC4KKyAgICAgICAgKGdldENvbXBvbmVudEtleSk6CisgICAgICAgICh0cmF2ZXJzZUFs
bENoaWxkcmVuSW1wbCk6CisgICAgICAgICh0cmF2ZXJzZUFsbENoaWxkcmVuKToKKyAgICAgICAg
KiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVh
Y3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvdmFsaWRhdGVET01OZXN0aW5nLmpzOiBBZGRl
ZC4KKyAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WLnN0cmluZ19hcHBlYXJlZF9oZXJlLnVw
ZGF0ZWRBbmNlc3RvckluZm8pOgorICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYuc3RyaW5n
X2FwcGVhcmVkX2hlcmUuaXNUYWdWYWxpZFdpdGhQYXJlbnQpOgorICAgICAgICAocHJvY2Vzcy5l
bnYuTk9ERV9FTlYuc3RyaW5nX2FwcGVhcmVkX2hlcmUuZmluZEludmFsaWRBbmNlc3RvckZvclRh
Zyk6CisgICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOVi5zdHJpbmdfYXBwZWFyZWRfaGVyZS5m
aW5kT3duZXJTdGFjayk6CisgICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOVi5zdHJpbmdfYXBw
ZWFyZWRfaGVyZS52YWxpZGF0ZURPTU5lc3RpbmcpOgorICAgICAgICAocHJvY2Vzcy5lbnYuTk9E
RV9FTlYuc3RyaW5nX2FwcGVhcmVkX2hlcmUudmFsaWRhdGVET01OZXN0aW5nLmlzVGFnVmFsaWRJ
bkNvbnRleHQpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL3BhY2thZ2UuanNv
bjogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vc2VydmVyLmpzOiBB
ZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0L0xJQ0VOU0U6IEFkZGVkLgorICAg
ICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QvUEFURU5UUzogQWRkZWQuCisgICAgICAgICogU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25v
ZGVfbW9kdWxlcy9yZWFjdC9SRUFETUUubWQ6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVs
ZXMvcmVhY3QvZGlzdC9yZWFjdC13aXRoLWFkZG9ucy5qczogQWRkZWQuCisgICAgICAgIChlbHNl
KToKKyAgICAgICAgKGVsc2UuZWxzZSk6CisgICAgICAgIChzKToKKyAgICAgICAgKHJldHVybi5l
KToKKyAgICAgICAgKG1ha2VQcmVmaXhNYXApOgorICAgICAgICAoZ2V0VmVuZG9yUHJlZml4ZWRF
dmVudE5hbWUpOgorICAgICAgICAoMSk6CisgICAgICAgIChlc2NhcGUpOgorICAgICAgICAodW5l
c2NhcGUpOgorICAgICAgICAoMik6CisgICAgICAgIChMaW5rZWRTdGF0ZU1peGluLmxpbmtTdGF0
ZSk6CisgICAgICAgICgzKToKKyAgICAgICAgKG9uZUFyZ3VtZW50UG9vbGVyKToKKyAgICAgICAg
KHR3b0FyZ3VtZW50UG9vbGVyKToKKyAgICAgICAgKHRocmVlQXJndW1lbnRQb29sZXIpOgorICAg
ICAgICAoZm91ckFyZ3VtZW50UG9vbGVyKToKKyAgICAgICAgKGZpdmVBcmd1bWVudFBvb2xlcik6
CisgICAgICAgIChzdGFuZGFyZFJlbGVhc2VyKToKKyAgICAgICAgKGFkZFBvb2xpbmdUbyk6Cisg
ICAgICAgICg0KToKKyAgICAgICAgKF9fc3ByZWFkKToKKyAgICAgICAgKFJlYWN0LmNyZWF0ZU1p
eGluKToKKyAgICAgICAgKDUpOgorICAgICAgICAoZXhwb3J0cy5nZXRSZWFjdERPTSk6CisgICAg
ICAgIChleHBvcnRzLmdldFJlYWN0SW5zdGFuY2VNYXApOgorICAgICAgICAoZXhwb3J0cy5nZXRS
ZWFjdFBlcmYpOgorICAgICAgICAoZXhwb3J0cy5nZXRSZWFjdFRlc3RVdGlscyk6CisgICAgICAg
ICg2KToKKyAgICAgICAgKF9jbGFzc0NhbGxDaGVjayk6CisgICAgICAgIChfcG9zc2libGVDb25z
dHJ1Y3RvclJldHVybik6CisgICAgICAgIChfaW5oZXJpdHMpOgorICAgICAgICAoY3JlYXRlVHJh
bnNpdGlvblRpbWVvdXRQcm9wVmFsaWRhdG9yKToKKyAgICAgICAgKFJlYWN0Q1NTVHJhbnNpdGlv
bkdyb3VwKToKKyAgICAgICAgKFJlYWN0Q1NTVHJhbnNpdGlvbkdyb3VwLnByb3RvdHlwZS5yZW5k
ZXIpOgorICAgICAgICAoNyk6CisgICAgICAgIChSZWFjdENTU1RyYW5zaXRpb25Hcm91cENoaWxk
LlJlYWN0LmNyZWF0ZUNsYXNzLik6CisgICAgICAgIChSZWFjdENTU1RyYW5zaXRpb25Hcm91cENo
aWxkLlJlYWN0LmNyZWF0ZUNsYXNzKToKKyAgICAgICAgKDgpOgorICAgICAgICAoZXNjYXBlVXNl
clByb3ZpZGVkS2V5KToKKyAgICAgICAgKEZvckVhY2hCb29rS2VlcGluZyk6CisgICAgICAgIChG
b3JFYWNoQm9va0tlZXBpbmcucHJvdG90eXBlLmRlc3RydWN0b3IpOgorICAgICAgICAoZm9yRWFj
aFNpbmdsZUNoaWxkKToKKyAgICAgICAgKGZvckVhY2hDaGlsZHJlbik6CisgICAgICAgIChNYXBC
b29rS2VlcGluZyk6CisgICAgICAgIChNYXBCb29rS2VlcGluZy5wcm90b3R5cGUuZGVzdHJ1Y3Rv
cik6CisgICAgICAgIChtYXBTaW5nbGVDaGlsZEludG9Db250ZXh0KToKKyAgICAgICAgKG1hcElu
dG9XaXRoS2V5UHJlZml4SW50ZXJuYWwpOgorICAgICAgICAobWFwQ2hpbGRyZW4pOgorICAgICAg
ICAoZm9yRWFjaFNpbmdsZUNoaWxkRHVtbXkpOgorICAgICAgICAoY291bnRDaGlsZHJlbik6Cisg
ICAgICAgICh0b0FycmF5KToKKyAgICAgICAgKDkpOgorICAgICAgICAoaWRlbnRpdHkpOgorICAg
ICAgICAoUkVTRVJWRURfU1BFQ19LRVlTLmRpc3BsYXlOYW1lKToKKyAgICAgICAgKFJFU0VSVkVE
X1NQRUNfS0VZUy5taXhpbnMpOgorICAgICAgICAoUkVTRVJWRURfU1BFQ19LRVlTLmNoaWxkQ29u
dGV4dFR5cGVzKToKKyAgICAgICAgKFJFU0VSVkVEX1NQRUNfS0VZUy5jb250ZXh0VHlwZXMpOgor
ICAgICAgICAoUkVTRVJWRURfU1BFQ19LRVlTLmdldERlZmF1bHRQcm9wcyk6CisgICAgICAgIChS
RVNFUlZFRF9TUEVDX0tFWVMucHJvcFR5cGVzKToKKyAgICAgICAgKFJFU0VSVkVEX1NQRUNfS0VZ
Uy5zdGF0aWNzKToKKyAgICAgICAgKFJFU0VSVkVEX1NQRUNfS0VZUy5hdXRvYmluZCk6CisgICAg
ICAgICh2YWxpZGF0ZU1ldGhvZE92ZXJyaWRlKToKKyAgICAgICAgKG1peFNwZWNJbnRvQ29tcG9u
ZW50KToKKyAgICAgICAgKG1peFN0YXRpY1NwZWNJbnRvQ29tcG9uZW50KToKKyAgICAgICAgKG1l
cmdlSW50b1dpdGhOb0R1cGxpY2F0ZUtleXMpOgorICAgICAgICAocmV0dXJuLm1lcmdlZFJlc3Vs
dCk6CisgICAgICAgIChjcmVhdGVNZXJnZWRSZXN1bHRGdW5jdGlvbik6CisgICAgICAgIChyZXR1
cm4uY2hhaW5lZEZ1bmN0aW9uKToKKyAgICAgICAgKGNyZWF0ZUNoYWluZWRGdW5jdGlvbik6Cisg
ICAgICAgIChib3VuZE1ldGhvZC5iaW5kKToKKyAgICAgICAgKGJpbmRBdXRvQmluZE1ldGhvZCk6
CisgICAgICAgIChiaW5kQXV0b0JpbmRNZXRob2RzKToKKyAgICAgICAgKFJlYWN0Q2xhc3NNaXhp
bi5yZXBsYWNlU3RhdGUpOgorICAgICAgICAoUmVhY3RDbGFzc01peGluLmlzTW91bnRlZCk6Cisg
ICAgICAgIChSZWFjdENsYXNzQ29tcG9uZW50KToKKyAgICAgICAgKFJlYWN0Q2xhc3MuY3JlYXRl
Q2xhc3MpOgorICAgICAgICAoUmVhY3RDbGFzcy5pbmplY3Rpb24uaW5qZWN0TWl4aW4pOgorICAg
ICAgICAoMTApOgorICAgICAgICAoUmVhY3RDb21wb25lbnQpOgorICAgICAgICAoUmVhY3RDb21w
b25lbnQucHJvdG90eXBlLnNldFN0YXRlKToKKyAgICAgICAgKFJlYWN0Q29tcG9uZW50LnByb3Rv
dHlwZS5mb3JjZVVwZGF0ZSk6CisgICAgICAgIChkZWZpbmVEZXByZWNhdGlvbldhcm5pbmcpOgor
ICAgICAgICAoZ2V0IGZvcik6CisgICAgICAgICgxMSk6CisgICAgICAgIChpc05hdGl2ZSk6Cisg
ICAgICAgICgxMik6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC9kaXN0L3JlYWN0LXdp
dGgtYWRkb25zLm1pbi5qczogQWRkZWQuCisgICAgICAgIChvKToKKyAgICAgICAgKHJldHVybi5l
KToKKyAgICAgICAgKHIpOgorICAgICAgICAoMSk6CisgICAgICAgICgyKToKKyAgICAgICAgKGku
bGlua1N0YXRlKToKKyAgICAgICAgKDMpOgorICAgICAgICAoaSk6CisgICAgICAgIChhKToKKyAg
ICAgICAgKHMpOgorICAgICAgICAodSk6CisgICAgICAgIChjKToKKyAgICAgICAgKGYpOgorICAg
ICAgICAoNCk6CisgICAgICAgIChtLmNyZWF0ZU1peGluKToKKyAgICAgICAgKDUpOgorICAgICAg
ICAobi5nZXRSZWFjdERPTSk6CisgICAgICAgIChuLmdldFJlYWN0SW5zdGFuY2VNYXApOgorICAg
ICAgICAoNik6CisgICAgICAgICh0LmkuX3dyYXBDaGlsZCk6CisgICAgICAgICh0LnByb3RvdHlw
ZS5yZW5kZXIpOgorICAgICAgICAobCk6CisgICAgICAgICg3KToKKyAgICAgICAgKGMuci5jcmVh
dGVDbGFzcy4pOgorICAgICAgICAoYy5yLmNyZWF0ZUNsYXNzKToKKyAgICAgICAgKDgpOgorICAg
ICAgICAocCk6CisgICAgICAgIChkKToKKyAgICAgICAgKG8ucHJvdG90eXBlLmRlc3RydWN0b3Ip
OgorICAgICAgICAocy5wcm90b3R5cGUuZGVzdHJ1Y3Rvcik6CisgICAgICAgICg5KToKKyAgICAg
ICAgKFQuZGlzcGxheU5hbWUpOgorICAgICAgICAoVC5taXhpbnMpOgorICAgICAgICAoVC5jaGls
ZENvbnRleHRUeXBlcyk6CisgICAgICAgIChULmNvbnRleHRUeXBlcyk6CisgICAgICAgIChULmdl
dERlZmF1bHRQcm9wcyk6CisgICAgICAgIChULnByb3BUeXBlcyk6CisgICAgICAgIChULnN0YXRp
Y3MpOgorICAgICAgICAoVC5hdXRvYmluZCk6CisgICAgICAgIChQLnJlcGxhY2VTdGF0ZSk6Cisg
ICAgICAgIChQLmlzTW91bnRlZCk6CisgICAgICAgICh3KToKKyAgICAgICAgKEEuY3JlYXRlQ2xh
c3MpOgorICAgICAgICAoQS5pbmplY3Rpb24uaW5qZWN0TWl4aW4pOgorICAgICAgICAoMTApOgor
ICAgICAgICAoci5wcm90b3R5cGUuc2V0U3RhdGUpOgorICAgICAgICAoci5wcm90b3R5cGUuZm9y
Y2VVcGRhdGUpOgorICAgICAgICAoMTEpOgorICAgICAgICAoby5zaG91bGRDb21wb25lbnRVcGRh
dGUpOgorICAgICAgICAoMTIpOgorICAgICAgICAoMTMpOgorICAgICAgICAoMTQpOgorICAgICAg
ICAocC5jcmVhdGVFbGVtZW50KToKKyAgICAgICAgKHAuY3JlYXRlRmFjdG9yeSk6CisgICAgICAg
IChwLmNsb25lQW5kUmVwbGFjZUtleSk6CisgICAgICAgIChwLmNsb25lRWxlbWVudCk6CisgICAg
ICAgIChwLmlzVmFsaWRFbGVtZW50KToKKyAgICAgICAgKDE1KToKKyAgICAgICAgKDE2KToKKyAg
ICAgICAgKDE3KToKKyAgICAgICAgKDE4KToKKyAgICAgICAgKDE5KToKKyAgICAgICAgKDIwKToK
KyAgICAgICAgKGkudCk6CisgICAgICAgIChhLnQpOgorICAgICAgICAodS50KToKKyAgICAgICAg
KGMuZSk6CisgICAgICAgIChwLnQpOgorICAgICAgICAobC50KToKKyAgICAgICAgKGYudCk6Cisg
ICAgICAgIChkLnQpOgorICAgICAgICAoaC5lKToKKyAgICAgICAgKGgpOgorICAgICAgICAodi50
KToKKyAgICAgICAgKHYpOgorICAgICAgICAoeSk6CisgICAgICAgIChtKToKKyAgICAgICAgKGcp
OgorICAgICAgICAoRSk6CisgICAgICAgIChiKToKKyAgICAgICAgKDIxKToKKyAgICAgICAgKDIy
KToKKyAgICAgICAgKDIzKToKKyAgICAgICAgKG8uY3JlYXRlU3RhdGVTZXR0ZXIpOgorICAgICAg
ICAoby5jcmVhdGVTdGF0ZUtleVNldHRlcik6CisgICAgICAgIChvLk1peGluLmNyZWF0ZVN0YXRl
U2V0dGVyKToKKyAgICAgICAgKG8uTWl4aW4uY3JlYXRlU3RhdGVLZXlTZXR0ZXIpOgorICAgICAg
ICAoMjQpOgorICAgICAgICAoby5nZXRDaGlsZE1hcHBpbmcpOgorICAgICAgICAoby4pOgorICAg
ICAgICAoby5tZXJnZUNoaWxkTWFwcGluZ3MpOgorICAgICAgICAoMjUpOgorICAgICAgICAoYy5h
ZGRFbmRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKGMucmVtb3ZlRW5kRXZlbnRMaXN0ZW5lcik6
CisgICAgICAgICgyNik6CisgICAgICAgICh0LmkucGVyZm9ybUFwcGVhcik6CisgICAgICAgICh0
LmkuX2hhbmRsZURvbmVBcHBlYXJpbmcpOgorICAgICAgICAodC5pLnBlcmZvcm1FbnRlcik6Cisg
ICAgICAgICh0LmkuX2hhbmRsZURvbmVFbnRlcmluZyk6CisgICAgICAgICh0LmkucGVyZm9ybUxl
YXZlKToKKyAgICAgICAgKHQuaS5faGFuZGxlRG9uZUxlYXZpbmcpOgorICAgICAgICAodC5wcm90
b3R5cGUuY29tcG9uZW50V2lsbE1vdW50KToKKyAgICAgICAgKHQucHJvdG90eXBlLmNvbXBvbmVu
dERpZE1vdW50KToKKyAgICAgICAgKHQucHJvdG90eXBlLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJv
cHMpOgorICAgICAgICAodC5wcm90b3R5cGUuY29tcG9uZW50RGlkVXBkYXRlKToKKyAgICAgICAg
KDI3KToKKyAgICAgICAgKDI4KToKKyAgICAgICAgKDI5KToKKyAgICAgICAgKDMwKToKKyAgICAg
ICAgKDMxKToKKyAgICAgICAgKDMyKToKKyAgICAgICAgKGNhbGwpOgorICAgICAgICAoMzMpOgor
ICAgICAgICAoMzQpOgorICAgICAgICAoMzUpOgorICAgICAgICAoMzYpOgorICAgICAgICAoMzcp
OgorICAgICAgICAoMzgpOgorICAgICAgICAoaS5hZGRDbGFzcyk6CisgICAgICAgIChpLnJlbW92
ZUNsYXNzKToKKyAgICAgICAgKGkuY29uZGl0aW9uQ2xhc3MpOgorICAgICAgICAoaS5oYXNDbGFz
cyk6CisgICAgICAgIChpLm1hdGNoZXNTZWxlY3Rvcik6CisgICAgICAgICgzOSk6CisgICAgICAg
ICg0MCk6CisgICAgICAgIChvLnRoYXRSZXR1cm5zVGhpcyk6CisgICAgICAgIChvLnRoYXRSZXR1
cm5zQXJndW1lbnQpOgorICAgICAgICAoNDEpOgorICAgICAgICAoNDIpOgorICAgICAgICAoNDMp
OgorICAgICAgICAoNDQpOgorICAgICAgICAoNDUpOgorICAgICAgICAodC5leHBvcnRzLm8uT2Jq
ZWN0LmFzc2lnbik6CisgICAgICAgICg0Nik6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFj
dC9kaXN0L3JlYWN0LmpzOiBBZGRlZC4KKyAgICAgICAgKGVsc2UpOgorICAgICAgICAoZWxzZS5l
bHNlKToKKyAgICAgICAgKHMpOgorICAgICAgICAocmV0dXJuLmUpOgorICAgICAgICAoZXNjYXBl
KToKKyAgICAgICAgKHVuZXNjYXBlKToKKyAgICAgICAgKDEpOgorICAgICAgICAob25lQXJndW1l
bnRQb29sZXIpOgorICAgICAgICAodHdvQXJndW1lbnRQb29sZXIpOgorICAgICAgICAodGhyZWVB
cmd1bWVudFBvb2xlcik6CisgICAgICAgIChmb3VyQXJndW1lbnRQb29sZXIpOgorICAgICAgICAo
Zml2ZUFyZ3VtZW50UG9vbGVyKToKKyAgICAgICAgKHN0YW5kYXJkUmVsZWFzZXIpOgorICAgICAg
ICAoYWRkUG9vbGluZ1RvKToKKyAgICAgICAgKDIpOgorICAgICAgICAoX19zcHJlYWQpOgorICAg
ICAgICAoUmVhY3QuY3JlYXRlTWl4aW4pOgorICAgICAgICAoMyk6CisgICAgICAgIChlc2NhcGVV
c2VyUHJvdmlkZWRLZXkpOgorICAgICAgICAoRm9yRWFjaEJvb2tLZWVwaW5nKToKKyAgICAgICAg
KEZvckVhY2hCb29rS2VlcGluZy5wcm90b3R5cGUuZGVzdHJ1Y3Rvcik6CisgICAgICAgIChmb3JF
YWNoU2luZ2xlQ2hpbGQpOgorICAgICAgICAoZm9yRWFjaENoaWxkcmVuKToKKyAgICAgICAgKE1h
cEJvb2tLZWVwaW5nKToKKyAgICAgICAgKE1hcEJvb2tLZWVwaW5nLnByb3RvdHlwZS5kZXN0cnVj
dG9yKToKKyAgICAgICAgKG1hcFNpbmdsZUNoaWxkSW50b0NvbnRleHQpOgorICAgICAgICAobWFw
SW50b1dpdGhLZXlQcmVmaXhJbnRlcm5hbCk6CisgICAgICAgIChtYXBDaGlsZHJlbik6CisgICAg
ICAgIChmb3JFYWNoU2luZ2xlQ2hpbGREdW1teSk6CisgICAgICAgIChjb3VudENoaWxkcmVuKToK
KyAgICAgICAgKHRvQXJyYXkpOgorICAgICAgICAoNCk6CisgICAgICAgIChpZGVudGl0eSk6Cisg
ICAgICAgIChSRVNFUlZFRF9TUEVDX0tFWVMuZGlzcGxheU5hbWUpOgorICAgICAgICAoUkVTRVJW
RURfU1BFQ19LRVlTLm1peGlucyk6CisgICAgICAgIChSRVNFUlZFRF9TUEVDX0tFWVMuY2hpbGRD
b250ZXh0VHlwZXMpOgorICAgICAgICAoUkVTRVJWRURfU1BFQ19LRVlTLmNvbnRleHRUeXBlcyk6
CisgICAgICAgIChSRVNFUlZFRF9TUEVDX0tFWVMuZ2V0RGVmYXVsdFByb3BzKToKKyAgICAgICAg
KFJFU0VSVkVEX1NQRUNfS0VZUy5wcm9wVHlwZXMpOgorICAgICAgICAoUkVTRVJWRURfU1BFQ19L
RVlTLnN0YXRpY3MpOgorICAgICAgICAoUkVTRVJWRURfU1BFQ19LRVlTLmF1dG9iaW5kKToKKyAg
ICAgICAgKHZhbGlkYXRlTWV0aG9kT3ZlcnJpZGUpOgorICAgICAgICAobWl4U3BlY0ludG9Db21w
b25lbnQpOgorICAgICAgICAobWl4U3RhdGljU3BlY0ludG9Db21wb25lbnQpOgorICAgICAgICAo
bWVyZ2VJbnRvV2l0aE5vRHVwbGljYXRlS2V5cyk6CisgICAgICAgIChyZXR1cm4ubWVyZ2VkUmVz
dWx0KToKKyAgICAgICAgKGNyZWF0ZU1lcmdlZFJlc3VsdEZ1bmN0aW9uKToKKyAgICAgICAgKHJl
dHVybi5jaGFpbmVkRnVuY3Rpb24pOgorICAgICAgICAoY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uKToK
KyAgICAgICAgKGJvdW5kTWV0aG9kLmJpbmQpOgorICAgICAgICAoYmluZEF1dG9CaW5kTWV0aG9k
KToKKyAgICAgICAgKGJpbmRBdXRvQmluZE1ldGhvZHMpOgorICAgICAgICAoUmVhY3RDbGFzc01p
eGluLnJlcGxhY2VTdGF0ZSk6CisgICAgICAgIChSZWFjdENsYXNzTWl4aW4uaXNNb3VudGVkKToK
KyAgICAgICAgKFJlYWN0Q2xhc3NDb21wb25lbnQpOgorICAgICAgICAoUmVhY3RDbGFzcy5jcmVh
dGVDbGFzcyk6CisgICAgICAgIChSZWFjdENsYXNzLmluamVjdGlvbi5pbmplY3RNaXhpbik6Cisg
ICAgICAgICg1KToKKyAgICAgICAgKFJlYWN0Q29tcG9uZW50KToKKyAgICAgICAgKFJlYWN0Q29t
cG9uZW50LnByb3RvdHlwZS5zZXRTdGF0ZSk6CisgICAgICAgIChSZWFjdENvbXBvbmVudC5wcm90
b3R5cGUuZm9yY2VVcGRhdGUpOgorICAgICAgICAoZGVmaW5lRGVwcmVjYXRpb25XYXJuaW5nKToK
KyAgICAgICAgKGdldCBmb3IpOgorICAgICAgICAoNik6CisgICAgICAgIChpc05hdGl2ZSk6Cisg
ICAgICAgICg3KToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2Rpc3QvcmVhY3QubWlu
LmpzOiBBZGRlZC4KKyAgICAgICAgKG8pOgorICAgICAgICAocmV0dXJuLnQpOgorICAgICAgICAo
cik6CisgICAgICAgICgxKToKKyAgICAgICAgKGkpOgorICAgICAgICAodSk6CisgICAgICAgIChh
KToKKyAgICAgICAgKHMpOgorICAgICAgICAoYyk6CisgICAgICAgIChwKToKKyAgICAgICAgKDIp
OgorICAgICAgICAobS5jcmVhdGVNaXhpbik6CisgICAgICAgICgzKToKKyAgICAgICAgKGwpOgor
ICAgICAgICAoZik6CisgICAgICAgIChkKToKKyAgICAgICAgKG8ucHJvdG90eXBlLmRlc3RydWN0
b3IpOgorICAgICAgICAoYS5wcm90b3R5cGUuZGVzdHJ1Y3Rvcik6CisgICAgICAgICg0KToKKyAg
ICAgICAgKHguZGlzcGxheU5hbWUpOgorICAgICAgICAoeC5taXhpbnMpOgorICAgICAgICAoeC5j
aGlsZENvbnRleHRUeXBlcyk6CisgICAgICAgICh4LmNvbnRleHRUeXBlcyk6CisgICAgICAgICh4
LmdldERlZmF1bHRQcm9wcyk6CisgICAgICAgICh4LnByb3BUeXBlcyk6CisgICAgICAgICh4LnN0
YXRpY3MpOgorICAgICAgICAoeC5hdXRvYmluZCk6CisgICAgICAgIChfLnJlcGxhY2VTdGF0ZSk6
CisgICAgICAgIChfLmlzTW91bnRlZCk6CisgICAgICAgIChQKToKKyAgICAgICAgKHcuY3JlYXRl
Q2xhc3MpOgorICAgICAgICAody5pbmplY3Rpb24uaW5qZWN0TWl4aW4pOgorICAgICAgICAoNSk6
CisgICAgICAgIChyLnByb3RvdHlwZS5zZXRTdGF0ZSk6CisgICAgICAgIChyLnByb3RvdHlwZS5m
b3JjZVVwZGF0ZSk6CisgICAgICAgICg2KToKKyAgICAgICAgKDcpOgorICAgICAgICAoOCk6Cisg
ICAgICAgIChsLmNyZWF0ZUVsZW1lbnQpOgorICAgICAgICAobC5jcmVhdGVGYWN0b3J5KToKKyAg
ICAgICAgKGwuY2xvbmVBbmRSZXBsYWNlS2V5KToKKyAgICAgICAgKGwuY2xvbmVFbGVtZW50KToK
KyAgICAgICAgKGwuaXNWYWxpZEVsZW1lbnQpOgorICAgICAgICAoOSk6CisgICAgICAgICgxMCk6
CisgICAgICAgICgxMSk6CisgICAgICAgICgxMik6CisgICAgICAgIChpLmUpOgorICAgICAgICAo
dS5lKToKKyAgICAgICAgKHMuZSk6CisgICAgICAgIChjLnQpOgorICAgICAgICAobC5lKToKKyAg
ICAgICAgKGYuZSk6CisgICAgICAgIChwLmUpOgorICAgICAgICAoZC5lKToKKyAgICAgICAgKHYu
dCk6CisgICAgICAgICh2KToKKyAgICAgICAgKHkuZSk6CisgICAgICAgICh5KToKKyAgICAgICAg
KGgpOgorICAgICAgICAobSk6CisgICAgICAgIChiKToKKyAgICAgICAgKGcpOgorICAgICAgICAo
RSk6CisgICAgICAgICgxMyk6CisgICAgICAgICgxNCk6CisgICAgICAgICgxNSk6CisgICAgICAg
ICgxNik6CisgICAgICAgICgxNyk6CisgICAgICAgICgxOCk6CisgICAgICAgICgxOSk6CisgICAg
ICAgICgyMCk6CisgICAgICAgICgyMSk6CisgICAgICAgICgyMik6CisgICAgICAgIChvLnRoYXRS
ZXR1cm5zVGhpcyk6CisgICAgICAgIChvLnRoYXRSZXR1cm5zQXJndW1lbnQpOgorICAgICAgICAo
MjMpOgorICAgICAgICAoMjQpOgorICAgICAgICAoMjUpOgorICAgICAgICAoMjYpOgorICAgICAg
ICAoZS5leHBvcnRzLm8uT2JqZWN0LmFzc2lnbik6CisgICAgICAgICgyNyk6CisgICAgICAgICog
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0
L25vZGVfbW9kdWxlcy9yZWFjdC9saWIvS2V5RXNjYXBlVXRpbHMuanM6IEFkZGVkLgorICAgICAg
ICAoZXNjYXBlKToKKyAgICAgICAgKHVuZXNjYXBlKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVz
L3JlYWN0L2xpYi9MaW5rZWRTdGF0ZU1peGluLmpzOiBBZGRlZC4KKyAgICAgICAgKExpbmtlZFN0
YXRlTWl4aW4ubGlua1N0YXRlKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9Q
b29sZWRDbGFzcy5qczogQWRkZWQuCisgICAgICAgIChvbmVBcmd1bWVudFBvb2xlcik6CisgICAg
ICAgICh0d29Bcmd1bWVudFBvb2xlcik6CisgICAgICAgICh0aHJlZUFyZ3VtZW50UG9vbGVyKToK
KyAgICAgICAgKGZvdXJBcmd1bWVudFBvb2xlcik6CisgICAgICAgIChmaXZlQXJndW1lbnRQb29s
ZXIpOgorICAgICAgICAoc3RhbmRhcmRSZWxlYXNlcik6CisgICAgICAgIChhZGRQb29saW5nVG8p
OgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0LmpzOiBBZGRlZC4KKyAg
ICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WLnN0cmluZ19hcHBlYXJlZF9oZXJlLl9fc3ByZWFk
KToKKyAgICAgICAgKFJlYWN0LmNyZWF0ZU1peGluKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVz
L3JlYWN0L2xpYi9SZWFjdEFkZG9uc0RPTURlcGVuZGVuY2llcy5qczogQWRkZWQuCisgICAgICAg
IChleHBvcnRzLmdldFJlYWN0RE9NKToKKyAgICAgICAgKGV4cG9ydHMuZ2V0UmVhY3RJbnN0YW5j
ZU1hcCk6CisgICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOVi5zdHJpbmdfYXBwZWFyZWRfaGVy
ZS5leHBvcnRzLmdldFJlYWN0UGVyZik6CisgICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOVi5z
dHJpbmdfYXBwZWFyZWRfaGVyZS5leHBvcnRzLmdldFJlYWN0VGVzdFV0aWxzKToKKyAgICAgICAg
KiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVh
Y3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdEFkZG9uc0RPTURlcGVuZGVuY2llc1VNRFNo
aW0uanM6IEFkZGVkLgorICAgICAgICAoZXhwb3J0cy5nZXRSZWFjdERPTSk6CisgICAgICAgIChl
eHBvcnRzLmdldFJlYWN0SW5zdGFuY2VNYXApOgorICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9F
TlYuc3RyaW5nX2FwcGVhcmVkX2hlcmUuZXhwb3J0cy5nZXRSZWFjdFBlcmYpOgorICAgICAgICAo
cHJvY2Vzcy5lbnYuTk9ERV9FTlYuc3RyaW5nX2FwcGVhcmVkX2hlcmUuZXhwb3J0cy5nZXRSZWFj
dFRlc3RVdGlscyk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RDU1NU
cmFuc2l0aW9uR3JvdXAuanM6IEFkZGVkLgorICAgICAgICAoX2NsYXNzQ2FsbENoZWNrKToKKyAg
ICAgICAgKF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKToKKyAgICAgICAgKF9pbmhlcml0cyk6
CisgICAgICAgIChjcmVhdGVUcmFuc2l0aW9uVGltZW91dFByb3BWYWxpZGF0b3IpOgorICAgICAg
ICAoUmVhY3RDU1NUcmFuc2l0aW9uR3JvdXApOgorICAgICAgICAoUmVhY3RDU1NUcmFuc2l0aW9u
R3JvdXAucHJvdG90eXBlLnJlbmRlcik6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC9s
aWIvUmVhY3RDU1NUcmFuc2l0aW9uR3JvdXBDaGlsZC5qczogQWRkZWQuCisgICAgICAgIChSZWFj
dENTU1RyYW5zaXRpb25Hcm91cENoaWxkLlJlYWN0LmNyZWF0ZUNsYXNzLmVuZExpc3RlbmVyKToK
KyAgICAgICAgKFJlYWN0Q1NTVHJhbnNpdGlvbkdyb3VwQ2hpbGQuUmVhY3QuY3JlYXRlQ2xhc3Mu
dHJhbnNpdGlvbik6CisgICAgICAgIChSZWFjdENTU1RyYW5zaXRpb25Hcm91cENoaWxkLlJlYWN0
LmNyZWF0ZUNsYXNzLnF1ZXVlQ2xhc3NBbmROb2RlKToKKyAgICAgICAgKFJlYWN0Q1NTVHJhbnNp
dGlvbkdyb3VwQ2hpbGQuUmVhY3QuY3JlYXRlQ2xhc3MuZmx1c2hDbGFzc05hbWVBbmROb2RlUXVl
dWUpOgorICAgICAgICAoUmVhY3RDU1NUcmFuc2l0aW9uR3JvdXBDaGlsZC5SZWFjdC5jcmVhdGVD
bGFzcy5jb21wb25lbnRXaWxsTW91bnQpOgorICAgICAgICAoUmVhY3RDU1NUcmFuc2l0aW9uR3Jv
dXBDaGlsZC5SZWFjdC5jcmVhdGVDbGFzcy5jb21wb25lbnRXaWxsVW5tb3VudCk6CisgICAgICAg
IChSZWFjdENTU1RyYW5zaXRpb25Hcm91cENoaWxkLlJlYWN0LmNyZWF0ZUNsYXNzLmNvbXBvbmVu
dFdpbGxBcHBlYXIpOgorICAgICAgICAoUmVhY3RDU1NUcmFuc2l0aW9uR3JvdXBDaGlsZC5SZWFj
dC5jcmVhdGVDbGFzcy5jb21wb25lbnRXaWxsRW50ZXIpOgorICAgICAgICAoUmVhY3RDU1NUcmFu
c2l0aW9uR3JvdXBDaGlsZC5SZWFjdC5jcmVhdGVDbGFzcy5jb21wb25lbnRXaWxsTGVhdmUpOgor
ICAgICAgICAoUmVhY3RDU1NUcmFuc2l0aW9uR3JvdXBDaGlsZC5SZWFjdC5jcmVhdGVDbGFzcy5y
ZW5kZXIpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0Q2hpbGRyZW4u
anM6IEFkZGVkLgorICAgICAgICAoZXNjYXBlVXNlclByb3ZpZGVkS2V5KToKKyAgICAgICAgKEZv
ckVhY2hCb29rS2VlcGluZyk6CisgICAgICAgIChGb3JFYWNoQm9va0tlZXBpbmcucHJvdG90eXBl
LmRlc3RydWN0b3IpOgorICAgICAgICAoZm9yRWFjaFNpbmdsZUNoaWxkKToKKyAgICAgICAgKGZv
ckVhY2hDaGlsZHJlbik6CisgICAgICAgIChNYXBCb29rS2VlcGluZyk6CisgICAgICAgIChNYXBC
b29rS2VlcGluZy5wcm90b3R5cGUuZGVzdHJ1Y3Rvcik6CisgICAgICAgIChtYXBTaW5nbGVDaGls
ZEludG9Db250ZXh0KToKKyAgICAgICAgKG1hcEludG9XaXRoS2V5UHJlZml4SW50ZXJuYWwpOgor
ICAgICAgICAobWFwQ2hpbGRyZW4pOgorICAgICAgICAoZm9yRWFjaFNpbmdsZUNoaWxkRHVtbXkp
OgorICAgICAgICAoY291bnRDaGlsZHJlbik6CisgICAgICAgICh0b0FycmF5KToKKyAgICAgICAg
KiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVh
Y3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdENsYXNzLmpzOiBBZGRlZC4KKyAgICAgICAg
KGlkZW50aXR5KToKKyAgICAgICAgKFJFU0VSVkVEX1NQRUNfS0VZUy5kaXNwbGF5TmFtZSk6Cisg
ICAgICAgIChSRVNFUlZFRF9TUEVDX0tFWVMubWl4aW5zKToKKyAgICAgICAgKFJFU0VSVkVEX1NQ
RUNfS0VZUy5jaGlsZENvbnRleHRUeXBlcyk6CisgICAgICAgIChSRVNFUlZFRF9TUEVDX0tFWVMu
Y29udGV4dFR5cGVzKToKKyAgICAgICAgKFJFU0VSVkVEX1NQRUNfS0VZUy5nZXREZWZhdWx0UHJv
cHMpOgorICAgICAgICAoUkVTRVJWRURfU1BFQ19LRVlTLnByb3BUeXBlcyk6CisgICAgICAgIChS
RVNFUlZFRF9TUEVDX0tFWVMuc3RhdGljcyk6CisgICAgICAgIChSRVNFUlZFRF9TUEVDX0tFWVMu
YXV0b2JpbmQpOgorICAgICAgICAodmFsaWRhdGVNZXRob2RPdmVycmlkZSk6CisgICAgICAgICht
aXhTcGVjSW50b0NvbXBvbmVudCk6CisgICAgICAgIChtaXhTdGF0aWNTcGVjSW50b0NvbXBvbmVu
dCk6CisgICAgICAgIChtZXJnZUludG9XaXRoTm9EdXBsaWNhdGVLZXlzKToKKyAgICAgICAgKHJl
dHVybi5tZXJnZWRSZXN1bHQpOgorICAgICAgICAoY3JlYXRlTWVyZ2VkUmVzdWx0RnVuY3Rpb24p
OgorICAgICAgICAocmV0dXJuLmNoYWluZWRGdW5jdGlvbik6CisgICAgICAgIChjcmVhdGVDaGFp
bmVkRnVuY3Rpb24pOgorICAgICAgICAoYm91bmRNZXRob2QuYmluZCk6CisgICAgICAgIChiaW5k
QXV0b0JpbmRNZXRob2QpOgorICAgICAgICAoYmluZEF1dG9CaW5kTWV0aG9kcyk6CisgICAgICAg
IChSZWFjdENsYXNzTWl4aW4ucmVwbGFjZVN0YXRlKToKKyAgICAgICAgKFJlYWN0Q2xhc3NNaXhp
bi5pc01vdW50ZWQpOgorICAgICAgICAoUmVhY3RDbGFzc0NvbXBvbmVudCk6CisgICAgICAgIChS
ZWFjdENsYXNzLmNyZWF0ZUNsYXNzKToKKyAgICAgICAgKFJlYWN0Q2xhc3MuaW5qZWN0aW9uLmlu
amVjdE1peGluKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdENvbXBv
bmVudC5qczogQWRkZWQuCisgICAgICAgIChSZWFjdENvbXBvbmVudCk6CisgICAgICAgIChSZWFj
dENvbXBvbmVudC5wcm90b3R5cGUuc2V0U3RhdGUpOgorICAgICAgICAoUmVhY3RDb21wb25lbnQu
cHJvdG90eXBlLmZvcmNlVXBkYXRlKToKKyAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WLnN0
cmluZ19hcHBlYXJlZF9oZXJlLik6CisgICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOVi5zdHJp
bmdfYXBwZWFyZWRfaGVyZS5kZWZpbmVEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAocHJv
Y2Vzcy5lbnYuTk9ERV9FTlYuc3RyaW5nX2FwcGVhcmVkX2hlcmUuZ2V0IGZvcik6CisgICAgICAg
ICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Jl
YWN0L25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RDb21wb25lbnRUcmVlRGV2dG9vbC5qczog
QWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RDb21wb25lbnRU
cmVlSG9vay5qczogQWRkZWQuCisgICAgICAgIChpc05hdGl2ZSk6CisgICAgICAgICogU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVf
bW9kdWxlcy9yZWFjdC9saWIvUmVhY3RDb21wb25lbnRUcmVlSG9va1VNRFNoaW0uanM6IEFkZGVk
LgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0Q29tcG9uZW50V2l0aFB1
cmVSZW5kZXJNaXhpbi5qczogQWRkZWQuCisgICAgICAgIChSZWFjdENvbXBvbmVudFdpdGhQdXJl
UmVuZGVyTWl4aW4uc2hvdWxkQ29tcG9uZW50VXBkYXRlKToKKyAgICAgICAgKiBTcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1
bGVzL3JlYWN0L2xpYi9SZWFjdEN1cnJlbnRPd25lci5qczogQWRkZWQuCisgICAgICAgICogU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25v
ZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RDdXJyZW50T3duZXJVTURTaGltLmpzOiBBZGRlZC4K
KyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdERPTUZhY3Rvcmllcy5qczog
QWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RFbGVtZW50Lmpz
OiBBZGRlZC4KKyAgICAgICAgKGhhc1ZhbGlkUmVmKToKKyAgICAgICAgKGhhc1ZhbGlkS2V5KToK
KyAgICAgICAgKHdhcm5BYm91dEFjY2Vzc2luZ0tleSk6CisgICAgICAgIChkZWZpbmVLZXlQcm9w
V2FybmluZ0dldHRlcik6CisgICAgICAgICh3YXJuQWJvdXRBY2Nlc3NpbmdSZWYpOgorICAgICAg
ICAoZ2V0IGRlZmluZVJlZlByb3BXYXJuaW5nR2V0dGVyKToKKyAgICAgICAgKGdldCB2YXIuUmVh
Y3RFbGVtZW50KToKKyAgICAgICAgKFJlYWN0RWxlbWVudC5jcmVhdGVFbGVtZW50KToKKyAgICAg
ICAgKFJlYWN0RWxlbWVudC5jcmVhdGVGYWN0b3J5KToKKyAgICAgICAgKFJlYWN0RWxlbWVudC5j
bG9uZUFuZFJlcGxhY2VLZXkpOgorICAgICAgICAoUmVhY3RFbGVtZW50LmNsb25lRWxlbWVudCk6
CisgICAgICAgIChSZWFjdEVsZW1lbnQuaXNWYWxpZEVsZW1lbnQpOgorICAgICAgICAqIFNwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2Rl
X21vZHVsZXMvcmVhY3QvbGliL1JlYWN0RWxlbWVudFN5bWJvbC5qczogQWRkZWQuCisgICAgICAg
ICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Jl
YWN0L25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RFbGVtZW50VHlwZS5qczogQWRkZWQuCisg
ICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RFbGVtZW50VmFsaWRhdG9yLmpz
OiBBZGRlZC4KKyAgICAgICAgKGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bSk6CisgICAgICAg
ICh2YWxpZGF0ZUV4cGxpY2l0S2V5KToKKyAgICAgICAgKHZhbGlkYXRlQ2hpbGRLZXlzKToKKyAg
ICAgICAgKHZhbGlkYXRlUHJvcFR5cGVzKToKKyAgICAgICAgKFJlYWN0RWxlbWVudFZhbGlkYXRv
ci5jcmVhdGVFbGVtZW50KToKKyAgICAgICAgKFJlYWN0RWxlbWVudFZhbGlkYXRvci4pOgorICAg
ICAgICAoUmVhY3RFbGVtZW50VmFsaWRhdG9yLmNsb25lRWxlbWVudCk6CisgICAgICAgICogU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25v
ZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RGcmFnbWVudC5qczogQWRkZWQuCisgICAgICAgIChS
ZWFjdEZyYWdtZW50LmNyZWF0ZSk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC9saWIv
UmVhY3RMaW5rLmpzOiBBZGRlZC4KKyAgICAgICAgKFJlYWN0TGluayk6CisgICAgICAgIChjcmVh
dGVMaW5rVHlwZUNoZWNrZXIpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1Jl
YWN0Tm9vcFVwZGF0ZVF1ZXVlLmpzOiBBZGRlZC4KKyAgICAgICAgKHdhcm5Ob29wKToKKyAgICAg
ICAgKFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlLmlzTW91bnRlZCk6CisgICAgICAgIChSZWFjdE5vb3BV
cGRhdGVRdWV1ZS5lbnF1ZXVlQ2FsbGJhY2spOgorICAgICAgICAoUmVhY3ROb29wVXBkYXRlUXVl
dWUuZW5xdWV1ZUZvcmNlVXBkYXRlKToKKyAgICAgICAgKFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlLmVu
cXVldWVSZXBsYWNlU3RhdGUpOgorICAgICAgICAoUmVhY3ROb29wVXBkYXRlUXVldWUuZW5xdWV1
ZVNldFN0YXRlKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdFByb3BU
eXBlTG9jYXRpb25OYW1lcy5qczogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFj
dC9saWIvUmVhY3RQcm9wVHlwZUxvY2F0aW9ucy5qczogQWRkZWQuCisgICAgICAgICogU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVf
bW9kdWxlcy9yZWFjdC9saWIvUmVhY3RQcm9wVHlwZXMuanM6IEFkZGVkLgorICAgICAgICAoaXMp
OgorICAgICAgICAoUHJvcFR5cGVFcnJvcik6CisgICAgICAgIChjcmVhdGVDaGFpbmFibGVUeXBl
Q2hlY2tlcik6CisgICAgICAgIChjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlci52YWxpZGF0ZSk6
CisgICAgICAgIChjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcik6CisgICAgICAgIChjcmVhdGVB
bnlUeXBlQ2hlY2tlcik6CisgICAgICAgIChjcmVhdGVBcnJheU9mVHlwZUNoZWNrZXIudmFsaWRh
dGUpOgorICAgICAgICAoY3JlYXRlQXJyYXlPZlR5cGVDaGVja2VyKToKKyAgICAgICAgKGNyZWF0
ZUVsZW1lbnRUeXBlQ2hlY2tlci52YWxpZGF0ZSk6CisgICAgICAgIChjcmVhdGVFbGVtZW50VHlw
ZUNoZWNrZXIpOgorICAgICAgICAoY3JlYXRlSW5zdGFuY2VUeXBlQ2hlY2tlci52YWxpZGF0ZSk6
CisgICAgICAgIChjcmVhdGVJbnN0YW5jZVR5cGVDaGVja2VyKToKKyAgICAgICAgKGNyZWF0ZUVu
dW1UeXBlQ2hlY2tlci52YWxpZGF0ZSk6CisgICAgICAgIChjcmVhdGVFbnVtVHlwZUNoZWNrZXIp
OgorICAgICAgICAoY3JlYXRlT2JqZWN0T2ZUeXBlQ2hlY2tlci52YWxpZGF0ZSk6CisgICAgICAg
IChjcmVhdGVPYmplY3RPZlR5cGVDaGVja2VyKToKKyAgICAgICAgKGNyZWF0ZVVuaW9uVHlwZUNo
ZWNrZXIudmFsaWRhdGUpOgorICAgICAgICAoY3JlYXRlVW5pb25UeXBlQ2hlY2tlcik6CisgICAg
ICAgIChjcmVhdGVOb2RlQ2hlY2tlci52YWxpZGF0ZSk6CisgICAgICAgIChjcmVhdGVOb2RlQ2hl
Y2tlcik6CisgICAgICAgIChjcmVhdGVTaGFwZVR5cGVDaGVja2VyLnZhbGlkYXRlKToKKyAgICAg
ICAgKGNyZWF0ZVNoYXBlVHlwZUNoZWNrZXIpOgorICAgICAgICAoaXNOb2RlKToKKyAgICAgICAg
KGlzU3ltYm9sKToKKyAgICAgICAgKGdldFByb3BUeXBlKToKKyAgICAgICAgKGdldFByZWNpc2VU
eXBlKToKKyAgICAgICAgKGdldENsYXNzTmFtZSk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9y
ZWFjdC9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQuanM6IEFkZGVkLgorICAgICAgICAqIFNwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2Rl
X21vZHVsZXMvcmVhY3QvbGliL1JlYWN0UHVyZUNvbXBvbmVudC5qczogQWRkZWQuCisgICAgICAg
IChSZWFjdFB1cmVDb21wb25lbnQpOgorICAgICAgICAoQ29tcG9uZW50RHVtbXkpOgorICAgICAg
ICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9y
ZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0U3RhdGVTZXR0ZXJzLmpzOiBBZGRlZC4K
KyAgICAgICAgKFJlYWN0U3RhdGVTZXR0ZXJzLmNyZWF0ZVN0YXRlU2V0dGVyKToKKyAgICAgICAg
KFJlYWN0U3RhdGVTZXR0ZXJzLmNyZWF0ZVN0YXRlS2V5U2V0dGVyKToKKyAgICAgICAgKHJldHVy
bi5zdGF0ZUtleVNldHRlcik6CisgICAgICAgIChSZWFjdFN0YXRlU2V0dGVycy5NaXhpbi5jcmVh
dGVTdGF0ZVNldHRlcik6CisgICAgICAgIChSZWFjdFN0YXRlU2V0dGVycy5NaXhpbi5jcmVhdGVT
dGF0ZUtleVNldHRlcik6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RU
cmFuc2l0aW9uQ2hpbGRNYXBwaW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKFJlYWN0VHJhbnNpdGlv
bkNoaWxkTWFwcGluZy5nZXRDaGlsZE1hcHBpbmcpOgorICAgICAgICAoUmVhY3RUcmFuc2l0aW9u
Q2hpbGRNYXBwaW5nLmdldFZhbHVlRm9yS2V5KToKKyAgICAgICAgKFJlYWN0VHJhbnNpdGlvbkNo
aWxkTWFwcGluZy5tZXJnZUNoaWxkTWFwcGluZ3MpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMv
cmVhY3QvbGliL1JlYWN0VHJhbnNpdGlvbkV2ZW50cy5qczogQWRkZWQuCisgICAgICAgIChhZGRF
dmVudExpc3RlbmVyKToKKyAgICAgICAgKHJlbW92ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAo
UmVhY3RUcmFuc2l0aW9uRXZlbnRzLmFkZEVuZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoUmVh
Y3RUcmFuc2l0aW9uRXZlbnRzLnJlbW92ZUVuZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIFNw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9u
b2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0VHJhbnNpdGlvbkdyb3VwLmpzOiBBZGRlZC4KKyAg
ICAgICAgKF9jbGFzc0NhbGxDaGVjayk6CisgICAgICAgIChfcG9zc2libGVDb25zdHJ1Y3RvclJl
dHVybik6CisgICAgICAgIChfaW5oZXJpdHMpOgorICAgICAgICAoUmVhY3RUcmFuc2l0aW9uR3Jv
dXApOgorICAgICAgICAoUmVhY3RUcmFuc2l0aW9uR3JvdXAuKToKKyAgICAgICAgKFJlYWN0VHJh
bnNpdGlvbkdyb3VwLnByb3RvdHlwZS5jb21wb25lbnRXaWxsTW91bnQpOgorICAgICAgICAoUmVh
Y3RUcmFuc2l0aW9uR3JvdXAucHJvdG90eXBlLmNvbXBvbmVudERpZE1vdW50KToKKyAgICAgICAg
KFJlYWN0VHJhbnNpdGlvbkdyb3VwLnByb3RvdHlwZS5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3Bz
KToKKyAgICAgICAgKFJlYWN0VHJhbnNpdGlvbkdyb3VwLnByb3RvdHlwZS5jb21wb25lbnREaWRV
cGRhdGUpOgorICAgICAgICAoUmVhY3RUcmFuc2l0aW9uR3JvdXAucHJvdG90eXBlLnJlbmRlcik6
CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RVTURFbnRyeS5qczogQWRk
ZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RVTURTaGltLmpzOiBB
ZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdFZlcnNpb24uanM6
IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0V2l0aEFkZG9u
cy5qczogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RXaXRo
QWRkb25zVU1ERW50cnkuanM6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3Qv
bGliL2NhbkRlZmluZVByb3BlcnR5LmpzOiBBZGRlZC4KKyAgICAgICAgKHByb2Nlc3MuZW52Lk5P
REVfRU5WLnN0cmluZ19hcHBlYXJlZF9oZXJlLnRyeS4pOgorICAgICAgICAqIFNwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVs
ZXMvcmVhY3QvbGliL2NoZWNrUmVhY3RUeXBlU3BlYy5qczogQWRkZWQuCisgICAgICAgICogU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25v
ZGVfbW9kdWxlcy9yZWFjdC9saWIvZGVwcmVjYXRlZC5qczogQWRkZWQuCisgICAgICAgIChuZXdG
bik6CisgICAgICAgIChkZXByZWNhdGVkKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0
L2xpYi9mbGF0dGVuQ2hpbGRyZW4uanM6IEFkZGVkLgorICAgICAgICAoZmxhdHRlblNpbmdsZUNo
aWxkSW50b0NvbnRleHQpOgorICAgICAgICAoZmxhdHRlbkNoaWxkcmVuKToKKyAgICAgICAgKiBT
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qv
bm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9nZXRJdGVyYXRvckZuLmpzOiBBZGRlZC4KKyAgICAgICAg
KGdldEl0ZXJhdG9yRm4pOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QvbGliL2dldE5l
eHREZWJ1Z0lELmpzOiBBZGRlZC4KKyAgICAgICAgKGdldE5leHREZWJ1Z0lEKToKKyAgICAgICAg
KiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVh
Y3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9vbmx5Q2hpbGQuanM6IEFkZGVkLgorICAgICAgICAo
b25seUNoaWxkKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9yZWFjdFByb2RJ
bnZhcmlhbnQuanM6IEFkZGVkLgorICAgICAgICAocmVhY3RQcm9kSW52YXJpYW50KToKKyAgICAg
ICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
cmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9zaGFsbG93Q29tcGFyZS5qczogQWRkZWQuCisg
ICAgICAgIChzaGFsbG93Q29tcGFyZSk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC9s
aWIvc2xpY2VDaGlsZHJlbi5qczogQWRkZWQuCisgICAgICAgIChzbGljZUNoaWxkcmVuKToKKyAg
ICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi90cmF2ZXJzZUFsbENoaWxkcmVuLmpzOiBB
ZGRlZC4KKyAgICAgICAgKGdldENvbXBvbmVudEtleSk6CisgICAgICAgICh0cmF2ZXJzZUFsbENo
aWxkcmVuSW1wbCk6CisgICAgICAgICh0cmF2ZXJzZUFsbENoaWxkcmVuKToKKyAgICAgICAgKiBT
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qv
bm9kZV9tb2R1bGVzL3JlYWN0L2xpYi91cGRhdGUuanM6IEFkZGVkLgorICAgICAgICAoc2hhbGxv
d0NvcHkpOgorICAgICAgICAoQUxMX0NPTU1BTkRTX0xJU1QuZm9yRWFjaCk6CisgICAgICAgIChp
bnZhcmlhbnRBcnJheUNhc2UpOgorICAgICAgICAodXBkYXRlKToKKyAgICAgICAgKiBTcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9t
b2R1bGVzL3JlYWN0L3BhY2thZ2UuanNvbjogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxl
cy9yZWFjdC9yZWFjdC5qczogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy90b2RvbXZj
LWFwcC1jc3MvaW5kZXguY3NzOiBBZGRlZC4KKyAgICAgICAgKGh0bWwsKToKKyAgICAgICAgKGJ1
dHRvbik6CisgICAgICAgIChib2R5KToKKyAgICAgICAgKGJ1dHRvbiwpOgorICAgICAgICAoLmhp
ZGRlbik6CisgICAgICAgICgjdG9kb2FwcCk6CisgICAgICAgICgjdG9kb2FwcCBpbnB1dDo6LXdl
YmtpdC1pbnB1dC1wbGFjZWhvbGRlcik6CisgICAgICAgICgjdG9kb2FwcCBpbnB1dDo6LW1vei1w
bGFjZWhvbGRlcik6CisgICAgICAgICgjdG9kb2FwcCBpbnB1dDo6aW5wdXQtcGxhY2Vob2xkZXIp
OgorICAgICAgICAoI3RvZG9hcHAgaDEpOgorICAgICAgICAoI25ldy10b2RvLCk6CisgICAgICAg
ICgjbmV3LXRvZG8pOgorICAgICAgICAoI21haW4pOgorICAgICAgICAobGFiZWxbZm9yPSd0b2dn
bGUtYWxsJ10pOgorICAgICAgICAoI3RvZ2dsZS1hbGwpOgorICAgICAgICAoI3RvZ2dsZS1hbGw6
YmVmb3JlKToKKyAgICAgICAgKCN0b2dnbGUtYWxsOmNoZWNrZWQ6YmVmb3JlKToKKyAgICAgICAg
KCN0b2RvLWxpc3QpOgorICAgICAgICAoI3RvZG8tbGlzdCBsaSk6CisgICAgICAgICgjdG9kby1s
aXN0IGxpOmxhc3QtY2hpbGQpOgorICAgICAgICAoI3RvZG8tbGlzdCBsaS5lZGl0aW5nKToKKyAg
ICAgICAgKCN0b2RvLWxpc3QgbGkuZWRpdGluZyAuZWRpdCk6CisgICAgICAgICgjdG9kby1saXN0
IGxpLmVkaXRpbmcgLnZpZXcpOgorICAgICAgICAoI3RvZG8tbGlzdCBsaSAudG9nZ2xlKToKKyAg
ICAgICAgKCN0b2RvLWxpc3QgbGkgLnRvZ2dsZTphZnRlcik6CisgICAgICAgICgjdG9kby1saXN0
IGxpIC50b2dnbGU6Y2hlY2tlZDphZnRlcik6CisgICAgICAgICgjdG9kby1saXN0IGxpIGxhYmVs
KToKKyAgICAgICAgKCN0b2RvLWxpc3QgbGkuY29tcGxldGVkIGxhYmVsKToKKyAgICAgICAgKCN0
b2RvLWxpc3QgbGkgLmRlc3Ryb3kpOgorICAgICAgICAoI3RvZG8tbGlzdCBsaSAuZGVzdHJveTpo
b3Zlcik6CisgICAgICAgICgjdG9kby1saXN0IGxpIC5kZXN0cm95OmFmdGVyKToKKyAgICAgICAg
KCN0b2RvLWxpc3QgbGk6aG92ZXIgLmRlc3Ryb3kpOgorICAgICAgICAoI3RvZG8tbGlzdCBsaSAu
ZWRpdCk6CisgICAgICAgICgjdG9kby1saXN0IGxpLmVkaXRpbmc6bGFzdC1jaGlsZCk6CisgICAg
ICAgICgjZm9vdGVyKToKKyAgICAgICAgKCNmb290ZXI6YmVmb3JlKToKKyAgICAgICAgKCN0b2Rv
LWNvdW50KToKKyAgICAgICAgKCN0b2RvLWNvdW50IHN0cm9uZyk6CisgICAgICAgICgjZmlsdGVy
cyk6CisgICAgICAgICgjZmlsdGVycyBsaSk6CisgICAgICAgICgjZmlsdGVycyBsaSBhKToKKyAg
ICAgICAgKCNmaWx0ZXJzIGxpIGEuc2VsZWN0ZWQsKToKKyAgICAgICAgKCNmaWx0ZXJzIGxpIGEu
c2VsZWN0ZWQpOgorICAgICAgICAoI2NsZWFyLWNvbXBsZXRlZCwpOgorICAgICAgICAoI2NsZWFy
LWNvbXBsZXRlZDpob3Zlcik6CisgICAgICAgICgjaW5mbyk6CisgICAgICAgICgjaW5mbyBwKToK
KyAgICAgICAgKCNpbmZvIGEpOgorICAgICAgICAoI2luZm8gYTpob3Zlcik6CisgICAgICAgIChA
bWVkaWEgc2NyZWVuIGFuZCAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOjApKToKKyAg
ICAgICAgKCN0b2dnbGUtYWxsLCk6CisgICAgICAgIChAbWVkaWEgKG1heC13aWR0aDogNDMwcHgp
KToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3RvZG9tdmMtYXBwLWNzcy9wYWNrYWdlLmpzb246
IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvdG9kb212Yy1hcHAtY3NzL3JlYWRtZS5t
ZDogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1vbi9iYXNlLmNz
czogQWRkZWQuCisgICAgICAgIChocik6CisgICAgICAgICgubGVhcm4gYSk6CisgICAgICAgICgu
bGVhcm4gYTpob3Zlcik6CisgICAgICAgICgubGVhcm4gaDMsKToKKyAgICAgICAgKC5sZWFybiBo
Myk6CisgICAgICAgICgubGVhcm4gaDQpOgorICAgICAgICAoLmxlYXJuIGg1KToKKyAgICAgICAg
KC5sZWFybiB1bCk6CisgICAgICAgICgubGVhcm4gbGkpOgorICAgICAgICAoLmxlYXJuIHApOgor
ICAgICAgICAoI2lzc3VlLWNvdW50KToKKyAgICAgICAgKC5xdW90ZSk6CisgICAgICAgICgucXVv
dGUgcCk6CisgICAgICAgICgucXVvdGUgcDpiZWZvcmUpOgorICAgICAgICAoLnF1b3RlIHA6YWZ0
ZXIpOgorICAgICAgICAoLnF1b3RlIGZvb3Rlcik6CisgICAgICAgICgucXVvdGUgZm9vdGVyIGlt
Zyk6CisgICAgICAgICgucXVvdGUgZm9vdGVyIGEpOgorICAgICAgICAoLnNwZWVjaC1idWJibGUp
OgorICAgICAgICAoLnNwZWVjaC1idWJibGU6YWZ0ZXIpOgorICAgICAgICAoLmxlYXJuLWJhciA+
IC5sZWFybik6CisgICAgICAgIChAbWVkaWEgKG1pbi13aWR0aDogODk5cHgpKToKKyAgICAgICAg
KC5sZWFybi1iYXIpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvdG9kb212Yy1jb21tb24vYmFz
ZS5qczogQ29waWVkIGZyb20gUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9ib3dlcl9jb21wb25lbnRzL3Rv
ZG9tdmMtY29tbW9uL2Jhc2UuanMuCisgICAgICAgIChsb2NhdGlvbi5ob3N0bmFtZS5zdHJpbmdf
YXBwZWFyZWRfaGVyZS5pLnIuaS5yKToKKyAgICAgICAgKGZpbmRSb290KToKKyAgICAgICAgKExl
YXJuKToKKyAgICAgICAgKExlYXJuLnByb3RvdHlwZS5hcHBlbmQpOgorICAgICAgICAoeGhyLm9u
bG9hZCk6CisgICAgICAgIChMZWFybi5wcm90b3R5cGUuZmV0Y2hJc3N1ZUNvdW50KToKKyAgICAg
ICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
cmVhY3Qvbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL3BhY2thZ2UuanNvbjogQWRkZWQuCisg
ICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL3JlYWN0L25vZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1vbi9yZWFkbWUubWQ6IEFkZGVkLgor
ICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9yZWFjdC9ucG0tc2hyaW5rd3JhcC5qc29uOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QvcGFja2Fn
ZS5qc29uOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpLy5iYWJlbHJjOiBBZGRlZC4KKyAgICAgICAg
KiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVl
anMtY2xpLy5lZGl0b3Jjb25maWc6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvLmVzbGludGlnbm9y
ZTogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS8uZXNsaW50cmMuanM6IEFkZGVkLgorICAgICAgICAq
IFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVq
cy1jbGkvUkVBRE1FLm1kOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2NvbmZpZy9kZXYuZW52Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2NvbmZpZy9pbmRleC5qczogQWRkZWQuCisgICAgICAg
ICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1
ZWpzLWNsaS9jb25maWcvcHJvZC5lbnYuanM6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvZGlzdC9p
bmRleC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2Rpc3Qvc3RhdGljL2Nzcy9hcHAuNjc3
YjQ1ODQyZDlmOGI5NmU1YjIzYzE4OTY5MjMzYjcuY3NzOiBBZGRlZC4KKyAgICAgICAgKGJvZHks
YnV0dG9uLGh0bWwpOgorICAgICAgICAoYnV0dG9uKToKKyAgICAgICAgKGJvZHksYnV0dG9uKToK
KyAgICAgICAgKGJvZHkpOgorICAgICAgICAoOmZvY3VzKToKKyAgICAgICAgKC5oaWRkZW4pOgor
ICAgICAgICAoLnRvZG9hcHApOgorICAgICAgICAoLnRvZG9hcHAgaW5wdXQ6Oi13ZWJraXQtaW5w
dXQtcGxhY2Vob2xkZXIpOgorICAgICAgICAoLnRvZG9hcHAgaW5wdXQ6Oi1tb3otcGxhY2Vob2xk
ZXIpOgorICAgICAgICAoLnRvZG9hcHAgaW5wdXQ6OmlucHV0LXBsYWNlaG9sZGVyKToKKyAgICAg
ICAgKC50b2RvYXBwIGgxKToKKyAgICAgICAgKC5lZGl0LC5uZXctdG9kbyk6CisgICAgICAgICgu
bmV3LXRvZG8pOgorICAgICAgICAoLm1haW4pOgorICAgICAgICAobGFiZWxbZm9yPXRvZ2dsZS1h
bGxdKToKKyAgICAgICAgKC50b2dnbGUtYWxsKToKKyAgICAgICAgKC50b2dnbGUtYWxsOmJlZm9y
ZSk6CisgICAgICAgICgudG9nZ2xlLWFsbDpjaGVja2VkOmJlZm9yZSk6CisgICAgICAgICgudG9k
by1saXN0KToKKyAgICAgICAgKC50b2RvLWxpc3QgbGkpOgorICAgICAgICAoLnRvZG8tbGlzdCBs
aTpsYXN0LWNoaWxkKToKKyAgICAgICAgKC50b2RvLWxpc3QgbGkuZWRpdGluZyk6CisgICAgICAg
ICgudG9kby1saXN0IGxpLmVkaXRpbmcgLmVkaXQpOgorICAgICAgICAoLnRvZG8tbGlzdCBsaS5l
ZGl0aW5nIC52aWV3KToKKyAgICAgICAgKC50b2RvLWxpc3QgbGkgLnRvZ2dsZSk6CisgICAgICAg
ICgudG9kby1saXN0IGxpIC50b2dnbGU6YWZ0ZXIpOgorICAgICAgICAoLnRvZG8tbGlzdCBsaSAu
dG9nZ2xlOmNoZWNrZWQ6YWZ0ZXIpOgorICAgICAgICAoLnRvZG8tbGlzdCBsaSBsYWJlbCk6Cisg
ICAgICAgICgudG9kby1saXN0IGxpLmNvbXBsZXRlZCBsYWJlbCk6CisgICAgICAgICgudG9kby1s
aXN0IGxpIC5kZXN0cm95KToKKyAgICAgICAgKC50b2RvLWxpc3QgbGkgLmRlc3Ryb3k6aG92ZXIp
OgorICAgICAgICAoLnRvZG8tbGlzdCBsaSAuZGVzdHJveTphZnRlcik6CisgICAgICAgICgudG9k
by1saXN0IGxpOmhvdmVyIC5kZXN0cm95KToKKyAgICAgICAgKC50b2RvLWxpc3QgbGkgLmVkaXQp
OgorICAgICAgICAoLnRvZG8tbGlzdCBsaS5lZGl0aW5nOmxhc3QtY2hpbGQpOgorICAgICAgICAo
LmZvb3Rlcik6CisgICAgICAgICguZm9vdGVyOmJlZm9yZSk6CisgICAgICAgICgudG9kby1jb3Vu
dCk6CisgICAgICAgICgudG9kby1jb3VudCBzdHJvbmcpOgorICAgICAgICAoLmZpbHRlcnMpOgor
ICAgICAgICAoLmZpbHRlcnMgbGkpOgorICAgICAgICAoLmZpbHRlcnMgbGkgYSk6CisgICAgICAg
ICguZmlsdGVycyBsaSBhOmhvdmVyKToKKyAgICAgICAgKC5maWx0ZXJzIGxpIGEuc2VsZWN0ZWQp
OgorICAgICAgICAoLmNsZWFyLWNvbXBsZXRlZCxodG1sIC5jbGVhci1jb21wbGV0ZWQ6YWN0aXZl
KToKKyAgICAgICAgKC5jbGVhci1jb21wbGV0ZWQ6aG92ZXIpOgorICAgICAgICAoLmluZm8pOgor
ICAgICAgICAoLmluZm8gcCk6CisgICAgICAgICguaW5mbyBhKToKKyAgICAgICAgKC5pbmZvIGE6
aG92ZXIpOgorICAgICAgICAoLnRvZG8tbGlzdCBsaSAudG9nZ2xlLC50b2dnbGUtYWxsKToKKyAg
ICAgICAgKEBtZWRpYSBzY3JlZW4gYW5kICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86
MCkpOgorICAgICAgICAoQG1lZGlhIChtYXgtd2lkdGg6NDMwcHgpKToKKyAgICAgICAgKiBTcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xp
L2Rpc3Qvc3RhdGljL2Nzcy9hcHAuNjc3YjQ1ODQyZDlmOGI5NmU1YjIzYzE4OTY5MjMzYjcuY3Nz
Lm1hcDogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9kaXN0L3N0YXRpYy9qcy9hcHAuYjBlODM1ODc0
YmM4OTQ5NjcwZDEuanM6IEFkZGVkLgorICAgICAgICAobik6CisgICAgICAgICh3aW5kb3cuVnVl
QXBwLm5ldy5sLmRlZmF1bHQucmVuZGVyKToKKyAgICAgICAgKHN0cmluZ19hcHBlYXJlZF9oZXJl
LmZvckVhY2gpOgorICAgICAgICAoZC5jb25maWd1cmUubm90Zm91bmQpOgorICAgICAgICAodC5k
ZWZhdWx0LmRhdGEpOgorICAgICAgICAodC5kZWZhdWx0LmZpbHRlcnMucGx1cmFsaXplKToKKyAg
ICAgICAgKHQuZGVmYXVsdC5kaXJlY3RpdmVzLnRvZG9Gb2N1cyk6CisgICAgICAgICh0LmRlZmF1
bHQubWV0aG9kcy5hZGRUb2RvKToKKyAgICAgICAgKHQuZGVmYXVsdC5tZXRob2RzLmRlbGV0ZVRv
ZG8pOgorICAgICAgICAodC5kZWZhdWx0Lm1ldGhvZHMuZGVsZXRlQ29tcGxldGVkKToKKyAgICAg
ICAgKHQuZGVmYXVsdC5tZXRob2RzLmVkaXRUb2RvKToKKyAgICAgICAgKHQuZGVmYXVsdC5tZXRo
b2RzLmRvbmVFZGl0KToKKyAgICAgICAgKHQuZGVmYXVsdC5jb21wdXRlZC5yZW1haW5pbmcpOgor
ICAgICAgICAodC5kZWZhdWx0LmNvbXB1dGVkLmNvbXBsZXRlZCk6CisgICAgICAgICh0LmRlZmF1
bHQuY29tcHV0ZWQuZmlsdGVyZWRUb2Rvcyk6CisgICAgICAgICh0LmRlZmF1bHQuY29tcHV0ZWQu
YWxsRG9uZS5zZXQgdGhpcyk6CisgICAgICAgICh0LmRlZmF1bHQuY29tcHV0ZWQuYWxsRG9uZSk6
CisgICAgICAgIChlLmV4cG9ydHMucmVuZGVyKToKKyAgICAgICAgKGUuZXhwb3J0cy4pOgorICAg
ICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy92dWVqcy1jbGkvZGlzdC9zdGF0aWMvanMvYXBwLmIwZTgzNTg3NGJjODk0OTY3MGQxLmpzLm1h
cDogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9kaXN0L3N0YXRpYy9qcy9tYW5pZmVzdC44NGIyYjRm
Y2ViNzRhYjFmOTFmMy5qczogQWRkZWQuCisgICAgICAgICh0KToKKyAgICAgICAgKHdpbmRvdy53
ZWJwYWNrSnNvbnApOgorICAgICAgICAodC5lKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2Rpc3Qvc3RhdGlj
L2pzL21hbmlmZXN0Ljg0YjJiNGZjZWI3NGFiMWY5MWYzLmpzLm1hcDogQWRkZWQuCisgICAgICAg
ICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1
ZWpzLWNsaS9kaXN0L3N0YXRpYy9qcy92ZW5kb3IuYTUyNTE3YzVhYTk4ZTdmYmVhMmUuanM6IEFk
ZGVkLgorICAgICAgICAobik6CisgICAgICAgIChyKToKKyAgICAgICAgKGkpOgorICAgICAgICAo
byk6CisgICAgICAgIChhKToKKyAgICAgICAgKHMpOgorICAgICAgICAoYyk6CisgICAgICAgIChs
KToKKyAgICAgICAgKGYpOgorICAgICAgICAoZCk6CisgICAgICAgIChwKToKKyAgICAgICAgKGgp
OgorICAgICAgICAodik6CisgICAgICAgIChtKToKKyAgICAgICAgKGcpOgorICAgICAgICAoeSk6
CisgICAgICAgIChfKToKKyAgICAgICAgKGIpOgorICAgICAgICAoeCk6CisgICAgICAgIChDKToK
KyAgICAgICAgKEEpOgorICAgICAgICAoayk6CisgICAgICAgIChPKToKKyAgICAgICAgKFMpOgor
ICAgICAgICAoc2V0IGdldCBUKToKKyAgICAgICAgKGopOgorICAgICAgICAoTik6CisgICAgICAg
IChMKToKKyAgICAgICAgKE0pOgorICAgICAgICAoUCk6CisgICAgICAgIChEKToKKyAgICAgICAg
KEIpOgorICAgICAgICAoSSk6CisgICAgICAgIChIKToKKyAgICAgICAgKEYpOgorICAgICAgICAo
VSk6CisgICAgICAgICh6KToKKyAgICAgICAgKFYpOgorICAgICAgICAoSik6CisgICAgICAgIChL
KToKKyAgICAgICAgKFcpOgorICAgICAgICAoWi4pOgorICAgICAgICAoWik6CisgICAgICAgIChH
KToKKyAgICAgICAgKFkpOgorICAgICAgICAoUSk6CisgICAgICAgIChYKToKKyAgICAgICAgKGVl
KToKKyAgICAgICAgKHRlKToKKyAgICAgICAgKG5lLnQpOgorICAgICAgICAobmUuZS5wcm90b3R5
cGUud2F0Y2gpOgorICAgICAgICAobmUpOgorICAgICAgICAocmUpOgorICAgICAgICAoc2V0IGdl
dCBpZSk6CisgICAgICAgIChvZSk6CisgICAgICAgIChvLmUudCk6CisgICAgICAgIChhZSk6Cisg
ICAgICAgIChzZSk6CisgICAgICAgICh1ZSk6CisgICAgICAgIChsZSk6CisgICAgICAgIChmZSk6
CisgICAgICAgIChkZSk6CisgICAgICAgIChwZSk6CisgICAgICAgIChoZSk6CisgICAgICAgICh2
ZS5lLnByb3RvdHlwZS5fbW91bnQpOgorICAgICAgICAodmUuZS5wcm90b3R5cGUuX3VwZGF0ZSk6
CisgICAgICAgICh2ZS5lLnByb3RvdHlwZS5fdXBkYXRlRnJvbVBhcmVudCk6CisgICAgICAgICh2
ZS5lLnByb3RvdHlwZS5mb3JjZVVwZGF0ZSk6CisgICAgICAgICh2ZS5lLnByb3RvdHlwZS5kZXN0
cm95KToKKyAgICAgICAgKHZlKToKKyAgICAgICAgKG1lKToKKyAgICAgICAgKGdlKToKKyAgICAg
ICAgKHllKToKKyAgICAgICAgKF9lKToKKyAgICAgICAgKGJlKToKKyAgICAgICAgKHdlKToKKyAg
ICAgICAgKHhlKToKKyAgICAgICAgKEFlKToKKyAgICAgICAgKGtlKToKKyAgICAgICAgKE9lKToK
KyAgICAgICAgKFNlKToKKyAgICAgICAgKFRlKToKKyAgICAgICAgKEVlKToKKyAgICAgICAgKGpl
KToKKyAgICAgICAgKE5lLnQpOgorICAgICAgICAoTmUuaSk6CisgICAgICAgIChOZS5lLnByb3Rv
dHlwZS5uZXh0VGljayk6CisgICAgICAgIChOZS5lLnByb3RvdHlwZS5fcmVuZGVyKToKKyAgICAg
ICAgKE5lLmUucHJvdG90eXBlLl9tKToKKyAgICAgICAgKE5lLmUucHJvdG90eXBlLl9vKToKKyAg
ICAgICAgKE5lLm8pOgorICAgICAgICAoTmUuZS5wcm90b3R5cGUuX2YpOgorICAgICAgICAoTmUu
ZS5wcm90b3R5cGUuX2wpOgorICAgICAgICAoTmUuZS5wcm90b3R5cGUuX3QpOgorICAgICAgICAo
TmUuZS5wcm90b3R5cGUuX2IpOgorICAgICAgICAoTmUuZS5wcm90b3R5cGUuX2spOgorICAgICAg
ICAoTmUpOgorICAgICAgICAoTGUpOgorICAgICAgICAoTWUuZS5fdXBkYXRlTGlzdGVuZXJzKToK
KyAgICAgICAgKE1lKToKKyAgICAgICAgKFBlLmUucHJvdG90eXBlLm9uKToKKyAgICAgICAgKFBl
Lik6CisgICAgICAgIChQZS5lLnByb3RvdHlwZS5vbmNlKToKKyAgICAgICAgKFBlLmUucHJvdG90
eXBlLm9mZik6CisgICAgICAgIChQZS5lLnByb3RvdHlwZS5lbWl0KToKKyAgICAgICAgKFBlKToK
KyAgICAgICAgKERlLmUucHJvdG90eXBlLl9pbml0KToKKyAgICAgICAgKERlKToKKyAgICAgICAg
KFJlKToKKyAgICAgICAgKEllKToKKyAgICAgICAgKEhlLmUudXNlKToKKyAgICAgICAgKEhlKToK
KyAgICAgICAgKEZlLmUubWl4aW4pOgorICAgICAgICAoRmUpOgorICAgICAgICAoVWUuYSk6Cisg
ICAgICAgIChVZS5lLmV4dGVuZCk6CisgICAgICAgIChVZSk6CisgICAgICAgICh6ZS4pOgorICAg
ICAgICAoemUpOgorICAgICAgICAoSmUudCk6CisgICAgICAgIChKZSk6CisgICAgICAgIChxZSk6
CisgICAgICAgIChaZSk6CisgICAgICAgIChHZSk6CisgICAgICAgIChZZSk6CisgICAgICAgIChR
ZSk6CisgICAgICAgIChYZSk6CisgICAgICAgIChldCk6CisgICAgICAgIChudCk6CisgICAgICAg
IChydCk6CisgICAgICAgIChpdCk6CisgICAgICAgIChvdCk6CisgICAgICAgIChhdCk6CisgICAg
ICAgIChzdCk6CisgICAgICAgIChjdCk6CisgICAgICAgICh1dCk6CisgICAgICAgIChsdCk6Cisg
ICAgICAgIChmdCk6CisgICAgICAgIChkdCk6CisgICAgICAgIChwdCk6CisgICAgICAgIChodCk6
CisgICAgICAgICh2dCk6CisgICAgICAgIChtdCk6CisgICAgICAgIChndCk6CisgICAgICAgICh5
dC50KToKKyAgICAgICAgKHl0Lm4pOgorICAgICAgICAoeXQucik6CisgICAgICAgICh5dC5pKToK
KyAgICAgICAgKHl0Lm8pOgorICAgICAgICAoeXQuYSk6CisgICAgICAgICh5dC5jKToKKyAgICAg
ICAgKHl0LnUpOgorICAgICAgICAoeXQpOgorICAgICAgICAoeXQuZik6CisgICAgICAgICh5dC5k
KToKKyAgICAgICAgKHl0LnApOgorICAgICAgICAoeXQudik6CisgICAgICAgICh5dC5tKToKKyAg
ICAgICAgKHl0LmcpOgorICAgICAgICAoeXQueSk6CisgICAgICAgIChfdCk6CisgICAgICAgIChi
dCk6CisgICAgICAgICh3dCk6CisgICAgICAgICh4dCk6CisgICAgICAgICh0KToKKyAgICAgICAg
KGkudC5lbG0uX3ZfYWRkKToKKyAgICAgICAgKG8udC5lbG0uX3ZfcmVtb3ZlKToKKyAgICAgICAg
KE90KToKKyAgICAgICAgKFN0KToKKyAgICAgICAgKFR0KToKKyAgICAgICAgKEV0KToKKyAgICAg
ICAgKGp0KToKKyAgICAgICAgKEx0KToKKyAgICAgICAgKE10KToKKyAgICAgICAgKFB0KToKKyAg
ICAgICAgKER0KToKKyAgICAgICAgKHUpOgorICAgICAgICAoUnQpOgorICAgICAgICAoQnQpOgor
ICAgICAgICAoSXQpOgorICAgICAgICAoSHQpOgorICAgICAgICAoRnQuKToKKyAgICAgICAgKEZ0
KToKKyAgICAgICAgKFV0KToKKyAgICAgICAgKHp0KToKKyAgICAgICAgKFZ0KToKKyAgICAgICAg
KEt0KToKKyAgICAgICAgKFd0KToKKyAgICAgICAgKFp0KToKKyAgICAgICAgKEd0KToKKyAgICAg
ICAgKFl0KToKKyAgICAgICAgKFF0KToKKyAgICAgICAgKFh0KToKKyAgICAgICAgKGVuKToKKyAg
ICAgICAgKHRuKToKKyAgICAgICAgKG5uKToKKyAgICAgICAgKHJuKToKKyAgICAgICAgKG9uKToK
KyAgICAgICAgKGFuKToKKyAgICAgICAgKHNuKToKKyAgICAgICAgKGNuKToKKyAgICAgICAgKHVu
KToKKyAgICAgICAgKGxuLnQpOgorICAgICAgICAobG4pOgorICAgICAgICAoZm4pOgorICAgICAg
ICAoZG4pOgorICAgICAgICAocG4pOgorICAgICAgICAoaG4pOgorICAgICAgICAoX24pOgorICAg
ICAgICAoYm4pOgorICAgICAgICAod24pOgorICAgICAgICAoeG4pOgorICAgICAgICAoQ24pOgor
ICAgICAgICAoQW4pOgorICAgICAgICAoa24pOgorICAgICAgICAoU24pOgorICAgICAgICAoTG4p
OgorICAgICAgICAoRG4pOgorICAgICAgICAoSG4pOgorICAgICAgICAoRm4pOgorICAgICAgICAo
VW4pOgorICAgICAgICAoem4pOgorICAgICAgICAoVm4pOgorICAgICAgICAocW4pOgorICAgICAg
ICAoR24pOgorICAgICAgICAoWW4pOgorICAgICAgICAoWG4pOgorICAgICAgICAoZXIpOgorICAg
ICAgICAodHIpOgorICAgICAgICAobnIpOgorICAgICAgICAoZS53cmFwRGF0YSk6CisgICAgICAg
IChycik6CisgICAgICAgIChpcik6CisgICAgICAgIChvcik6CisgICAgICAgIChhcik6CisgICAg
ICAgIChzcik6CisgICAgICAgIChjcik6CisgICAgICAgICh1ci50KToKKyAgICAgICAgKHVyKToK
KyAgICAgICAgKGxyKToKKyAgICAgICAgKGZyKToKKyAgICAgICAgKGRyKToKKyAgICAgICAgKHBy
KToKKyAgICAgICAgKGhyKToKKyAgICAgICAgKHZyKToKKyAgICAgICAgKG1yKToKKyAgICAgICAg
KGdyKToKKyAgICAgICAgKHlyKToKKyAgICAgICAgKF9yLnJldHVybnN0cmluZ19hcHBlYXJlZF9o
ZXJlLnQpOgorICAgICAgICAoX3IpOgorICAgICAgICAoYnIpOgorICAgICAgICAod3IpOgorICAg
ICAgICAoeHIpOgorICAgICAgICAoQ3IpOgorICAgICAgICAoa3IpOgorICAgICAgICAoU3IpOgor
ICAgICAgICAoVHIpOgorICAgICAgICAoanIpOgorICAgICAgICAoTnIpOgorICAgICAgICAoTHIp
OgorICAgICAgICAoTXIpOgorICAgICAgICAoUHIpOgorICAgICAgICAoRHIpOgorICAgICAgICAo
UnIpOgorICAgICAgICAoQnIpOgorICAgICAgICAoSXIpOgorICAgICAgICAocHJvdG90eXBlLkpy
LmMpOgorICAgICAgICAocHJvdG90eXBlLnFyLmMpOgorICAgICAgICAocHJvdG90eXBlLldyLmMp
OgorICAgICAgICAoWXIpOgorICAgICAgICAoc2kpOgorICAgICAgICAoZWxzZS50KToKKyAgICAg
ICAgKHVpKToKKyAgICAgICAgKHJldHVybi5lLnByb3RvdHlwZS5oYXMpOgorICAgICAgICAoZS5w
cm90b3R5cGUuYWRkKToKKyAgICAgICAgKGUucHJvdG90eXBlLmNsZWFyKToKKyAgICAgICAgKEZy
LnN0cmluZ19hcHBlYXJlZF9oZXJlLnR5cGVvZi5TZXQueC5TZXQpOgorICAgICAgICAoaGkpOgor
ICAgICAgICAoaGkucHJvdG90eXBlLmFkZFN1Yik6CisgICAgICAgIChoaS5wcm90b3R5cGUucmVt
b3ZlU3ViKToKKyAgICAgICAgKGhpLnByb3RvdHlwZS5kZXBlbmQpOgorICAgICAgICAoaGkucHJv
dG90eXBlLm5vdGlmeSk6CisgICAgICAgIChwcm90b3R5cGUuc3RyaW5nX2FwcGVhcmVkX2hlcmUu
Zm9yRWFjaCk6CisgICAgICAgIChiaSk6CisgICAgICAgIChiaS5wcm90b3R5cGUud2Fsayk6Cisg
ICAgICAgIChiaS5wcm90b3R5cGUub2JzZXJ2ZUFycmF5KToKKyAgICAgICAgKHdpLmRhdGEpOgor
ICAgICAgICAocHJvdG90eXBlLmZpLl9saWZlY3ljbGVIb29rcy5mb3JFYWNoKToKKyAgICAgICAg
KHByb3RvdHlwZS5maS5fYXNzZXRUeXBlcy5mb3JFYWNoKToKKyAgICAgICAgKHdpLndhdGNoKToK
KyAgICAgICAgKHdpLnByb3BzLndpLm1ldGhvZHMud2kuY29tcHV0ZWQpOgorICAgICAgICAoeGkp
OgorICAgICAgICAocHJvdG90eXBlLmdldCBDaSk6CisgICAgICAgIChFaSk6CisgICAgICAgIChF
aS5wcm90b3R5cGUpOgorICAgICAgICAoRWkucHJvdG90eXBlLmFkZERlcCk6CisgICAgICAgIChF
aS5wcm90b3R5cGUuY2xlYW51cERlcHMpOgorICAgICAgICAoRWkucHJvdG90eXBlLnVwZGF0ZSk6
CisgICAgICAgIChFaS5wcm90b3R5cGUucnVuKToKKyAgICAgICAgKEVpLnByb3RvdHlwZS5ldmFs
dWF0ZSk6CisgICAgICAgIChFaS5wcm90b3R5cGUuZGVwZW5kKToKKyAgICAgICAgKEVpLnByb3Rv
dHlwZS50ZWFyZG93bik6CisgICAgICAgIChwcm90b3R5cGUuTmkpOgorICAgICAgICAoc2V0IGdl
dCBMaSk6CisgICAgICAgIChNaSk6CisgICAgICAgIChwcm90b3R5cGUuc2V0IGdldCBMaSk6Cisg
ICAgICAgIChIaS5jcmVhdGVkKToKKyAgICAgICAgKEhpLnJlbmRlcik6CisgICAgICAgIChIaS5k
ZXN0cm95ZWQpOgorICAgICAgICAoemkpOgorICAgICAgICAoS2kpOgorICAgICAgICAoV2kpOgor
ICAgICAgICAoWmkpOgorICAgICAgICAocHJvdG90eXBlLmdldCBJZSk6CisgICAgICAgIChubyk6
CisgICAgICAgIChybyk6CisgICAgICAgIChhby5jcmVhdGUpOgorICAgICAgICAoYW8udXBkYXRl
KToKKyAgICAgICAgKGFvLmRlc3Ryb3kpOgorICAgICAgICAodW8uZGVzdHJveSk6CisgICAgICAg
IChwcm90b3R5cGUuZ28uYyk6CisgICAgICAgIChfbyk6CisgICAgICAgIChwcm90b3R5cGUud28u
Yyk6CisgICAgICAgIChwcm90b3R5cGUuTm8uYyk6CisgICAgICAgIChMby5laS5jcmVhdGUpOgor
ICAgICAgICAoTG8uZWkucmVtb3ZlKToKKyAgICAgICAgKHByb3RvdHlwZS5lLmRhdGEuc2hvdy50
LlV0KToKKyAgICAgICAgKFJvLnIpOgorICAgICAgICAoUm8uaW5zZXJ0ZWQpOgorICAgICAgICAo
Um8uY29tcG9uZW50VXBkYXRlZCk6CisgICAgICAgIChCby5iaW5kKToKKyAgICAgICAgKEJvLnVw
ZGF0ZSk6CisgICAgICAgIChGby4pOgorICAgICAgICAoRm8ucCk6CisgICAgICAgIChGby5yZW5k
ZXIpOgorICAgICAgICAoem8ucmVuZGVyKToKKyAgICAgICAgKHpvLmJlZm9yZVVwZGF0ZSk6Cisg
ICAgICAgICh6by4pOgorICAgICAgICAoem8udXBkYXRlZCk6CisgICAgICAgICh6by5tZXRob2Rz
Lmhhc01vdmUpOgorICAgICAgICAoSWUucHJvdG90eXBlLm1vdW50KToKKyAgICAgICAgKHByb3Rv
dHlwZS5zZXRUaW1lb3V0KToKKyAgICAgICAgKGphKToKKyAgICAgICAgKE5hKToKKyAgICAgICAg
KHByb3RvdHlwZS5GYS5jKToKKyAgICAgICAgKFhhLnMucyk6CisgICAgICAgIChwcm90b3R5cGUu
YXMpOgorICAgICAgICAocHJvdG90eXBlLmRzLmMpOgorICAgICAgICAobi5pLik6CisgICAgICAg
IChuLmkpOgorICAgICAgICAobC5jaGVjayk6CisgICAgICAgIChsLmZpcmUpOgorICAgICAgICAo
bC5uKToKKyAgICAgICAgKGwuaW5pdCk6CisgICAgICAgIChsLmRlc3Ryb3kpOgorICAgICAgICAo
bC5zZXRIYXNoKToKKyAgICAgICAgKGwud3JpdGVGcmFtZSk6CisgICAgICAgIChsLnN5bmNIYXNo
KToKKyAgICAgICAgKGwub25IYXNoQ2hhbmdlZCk6CisgICAgICAgIChmLmUuUm91dGVyKToKKyAg
ICAgICAgKHJldHVybi50aGlzLmhhbmRsZXIpOgorICAgICAgICAoZi5wcm90b3R5cGUuaW5pdCk6
CisgICAgICAgIChmLnByb3RvdHlwZS5leHBsb2RlKToKKyAgICAgICAgKGYucHJvdG90eXBlLnNl
dFJvdXRlKToKKyAgICAgICAgKGYucHJvdG90eXBlLmluc2VydEV4KToKKyAgICAgICAgKGYucHJv
dG90eXBlLmdldFJvdXRlKToKKyAgICAgICAgKGYucHJvdG90eXBlLmRlc3Ryb3kpOgorICAgICAg
ICAoZi5wcm90b3R5cGUuZ2V0UGF0aCk6CisgICAgICAgIChmLnByb3RvdHlwZS5jb25maWd1cmUp
OgorICAgICAgICAocmV0dXJuLnRoaXMucGFyYW1zLmUpOgorICAgICAgICAoZi5wcm90b3R5cGUu
cGFyYW0pOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy92dWVqcy1jbGkvZGlzdC9zdGF0aWMvanMvdmVuZG9yLmE1MjUxN2M1YWE5
OGU3ZmJlYTJlLmpzLm1hcDogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9pbmRleC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvdnVlanMtY2xpL3BhY2thZ2UuanNvbjogQWRkZWQuCisgICAgICAgICogU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9z
cmMvQXBwLnZ1ZTogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9zcmMvY29tcG9uZW50cy9Ub2Rvcy52
dWU6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvc3JjL2NvbXBvbmVudHMvdG9kby5jc3M6IEFkZGVk
LgorICAgICAgICAoaHRtbCwpOgorICAgICAgICAoYnV0dG9uKToKKyAgICAgICAgKGJvZHkpOgor
ICAgICAgICAoOmZvY3VzKToKKyAgICAgICAgKC5oaWRkZW4pOgorICAgICAgICAoLnRvZG9hcHAp
OgorICAgICAgICAoLnRvZG9hcHAgaW5wdXQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIpOgor
ICAgICAgICAoLnRvZG9hcHAgaW5wdXQ6Oi1tb3otcGxhY2Vob2xkZXIpOgorICAgICAgICAoLnRv
ZG9hcHAgaW5wdXQ6OmlucHV0LXBsYWNlaG9sZGVyKToKKyAgICAgICAgKC50b2RvYXBwIGgxKToK
KyAgICAgICAgKC5uZXctdG9kbywpOgorICAgICAgICAoLm5ldy10b2RvKToKKyAgICAgICAgKC5t
YWluKToKKyAgICAgICAgKGxhYmVsW2Zvcj0ndG9nZ2xlLWFsbCddKToKKyAgICAgICAgKC50b2dn
bGUtYWxsKToKKyAgICAgICAgKC50b2dnbGUtYWxsOmJlZm9yZSk6CisgICAgICAgICgudG9nZ2xl
LWFsbDpjaGVja2VkOmJlZm9yZSk6CisgICAgICAgICgudG9kby1saXN0KToKKyAgICAgICAgKC50
b2RvLWxpc3QgbGkpOgorICAgICAgICAoLnRvZG8tbGlzdCBsaTpsYXN0LWNoaWxkKToKKyAgICAg
ICAgKC50b2RvLWxpc3QgbGkuZWRpdGluZyk6CisgICAgICAgICgudG9kby1saXN0IGxpLmVkaXRp
bmcgLmVkaXQpOgorICAgICAgICAoLnRvZG8tbGlzdCBsaS5lZGl0aW5nIC52aWV3KToKKyAgICAg
ICAgKC50b2RvLWxpc3QgbGkgLnRvZ2dsZSk6CisgICAgICAgICgudG9kby1saXN0IGxpIC50b2dn
bGU6YWZ0ZXIpOgorICAgICAgICAoLnRvZG8tbGlzdCBsaSAudG9nZ2xlOmNoZWNrZWQ6YWZ0ZXIp
OgorICAgICAgICAoLnRvZG8tbGlzdCBsaSBsYWJlbCk6CisgICAgICAgICgudG9kby1saXN0IGxp
LmNvbXBsZXRlZCBsYWJlbCk6CisgICAgICAgICgudG9kby1saXN0IGxpIC5kZXN0cm95KToKKyAg
ICAgICAgKC50b2RvLWxpc3QgbGkgLmRlc3Ryb3k6aG92ZXIpOgorICAgICAgICAoLnRvZG8tbGlz
dCBsaSAuZGVzdHJveTphZnRlcik6CisgICAgICAgICgudG9kby1saXN0IGxpOmhvdmVyIC5kZXN0
cm95KToKKyAgICAgICAgKC50b2RvLWxpc3QgbGkgLmVkaXQpOgorICAgICAgICAoLnRvZG8tbGlz
dCBsaS5lZGl0aW5nOmxhc3QtY2hpbGQpOgorICAgICAgICAoLmZvb3Rlcik6CisgICAgICAgICgu
Zm9vdGVyOmJlZm9yZSk6CisgICAgICAgICgudG9kby1jb3VudCk6CisgICAgICAgICgudG9kby1j
b3VudCBzdHJvbmcpOgorICAgICAgICAoLmZpbHRlcnMpOgorICAgICAgICAoLmZpbHRlcnMgbGkp
OgorICAgICAgICAoLmZpbHRlcnMgbGkgYSk6CisgICAgICAgICguZmlsdGVycyBsaSBhOmhvdmVy
KToKKyAgICAgICAgKC5maWx0ZXJzIGxpIGEuc2VsZWN0ZWQpOgorICAgICAgICAoLmNsZWFyLWNv
bXBsZXRlZCwpOgorICAgICAgICAoLmNsZWFyLWNvbXBsZXRlZDpob3Zlcik6CisgICAgICAgICgu
aW5mbyk6CisgICAgICAgICguaW5mbyBwKToKKyAgICAgICAgKC5pbmZvIGEpOgorICAgICAgICAo
LmluZm8gYTpob3Zlcik6CisgICAgICAgIChAbWVkaWEgc2NyZWVuIGFuZCAoLXdlYmtpdC1taW4t
ZGV2aWNlLXBpeGVsLXJhdGlvOjApKToKKyAgICAgICAgKC50b2dnbGUtYWxsLCk6CisgICAgICAg
IChAbWVkaWEgKG1heC13aWR0aDogNDMwcHgpKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL3NyYy9tYWluLmpz
OiBBZGRlZC4KKyAgICAgICAgKHJvdXRlci5jb25maWd1cmUubm90Zm91bmQpOgorICAgICAgICAq
IFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVq
cy1jbGkvc3RhdGljLy5naXRrZWVwOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL3lhcm4ubG9jazog
QWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZGVwZW5kZW5j
eS1leGFtcGxlcy9mbGlnaHQvLmdpdGlnbm9yZTogUmVtb3ZlZC4KKyAgICAgICAgKiBTcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9kZXBlbmRlbmN5LWV4YW1wbGVzL2ZsaWdodC9hcHAvanMv
ZGF0YS9zdGF0cy5qczoKKyAgICAgICAgKHN0YXRzLnRoaXMucmVjb3VudCk6CisgICAgICAgIChz
dGF0cyk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZGVwZW5kZW5j
eS1leGFtcGxlcy9mbGlnaHQvYXBwL2pzL2RhdGEvdG9kb3MuanM6CisgICAgICAgICogU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZGVwZW5kZW5jeS1leGFtcGxlcy9mbGlnaHQvYXBwL2pz
L21haW4uanM6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZGVwZW5k
ZW5jeS1leGFtcGxlcy9mbGlnaHQvYXBwL2pzL3BhZ2UvYXBwLmpzOiBSZW5hbWVkIGZyb20gUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9kZXBlbmRlbmN5LWV4
YW1wbGVzL2ZsaWdodC9hcHAvanMvYXBwLmpzLgorICAgICAgICAoaW5pdGlhbGl6ZSk6CisgICAg
ICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZGVwZW5kZW5jeS1leGFtcGxlcy9m
bGlnaHQvYXBwL2pzL3VpL3N0YXRzLmpzOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2RlcGVuZGVuY3ktZXhhbXBsZXMvZmxpZ2h0L2FwcC9qcy91aS90b2RvX2xpc3Qu
anM6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZGVwZW5kZW5jeS1l
eGFtcGxlcy9mbGlnaHQvYXBwL2pzL3VpL3dpdGhfZmlsdGVycy5qczoKKyAgICAgICAgKiBTcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9kZXBlbmRlbmN5LWV4YW1wbGVzL2ZsaWdodC9hcHAv
dGVtcGxhdGVzL3N0YXRzLmh0bWw6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvZGVwZW5kZW5jeS1leGFtcGxlcy9mbGlnaHQvYm93ZXIuanNvbjogUmVtb3ZlZC4KKyAg
ICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9kZXBlbmRlbmN5LWV4YW1wbGVz
L2ZsaWdodC9ib3dlcl9jb21wb25lbnRzL2RlcG90L2RlcG90LmpzOiBSZW1vdmVkLgorICAgICAg
ICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2RlcGVuZGVuY3ktZXhhbXBsZXMvZmxp
Z2h0L2Jvd2VyX2NvbXBvbmVudHMvZXM1LXNoaW0vZXM1LXNoYW0uanM6IFJlbW92ZWQuCisgICAg
ICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZGVwZW5kZW5jeS1leGFtcGxlcy9m
bGlnaHQvYm93ZXJfY29tcG9uZW50cy9lczUtc2hpbS9lczUtc2hpbS5qczogUmVtb3ZlZC4KKyAg
ICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9kZXBlbmRlbmN5LWV4YW1wbGVz
L2ZsaWdodC9ib3dlcl9jb21wb25lbnRzL2ZsaWdodC9saWIvYWR2aWNlLmpzOiBSZW1vdmVkLgor
ICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2RlcGVuZGVuY3ktZXhhbXBs
ZXMvZmxpZ2h0L2Jvd2VyX2NvbXBvbmVudHMvZmxpZ2h0L2xpYi9iYXNlLmpzOiBSZW1vdmVkLgor
ICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2RlcGVuZGVuY3ktZXhhbXBs
ZXMvZmxpZ2h0L2Jvd2VyX2NvbXBvbmVudHMvZmxpZ2h0L2xpYi9jb21wb25lbnQuanM6IFJlbW92
ZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZGVwZW5kZW5jeS1l
eGFtcGxlcy9mbGlnaHQvYm93ZXJfY29tcG9uZW50cy9mbGlnaHQvbGliL2NvbXBvc2UuanM6IFJl
bW92ZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZGVwZW5kZW5j
eS1leGFtcGxlcy9mbGlnaHQvYm93ZXJfY29tcG9uZW50cy9mbGlnaHQvbGliL2RlYnVnLmpzOiBS
ZW1vdmVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2RlcGVuZGVu
Y3ktZXhhbXBsZXMvZmxpZ2h0L2Jvd2VyX2NvbXBvbmVudHMvZmxpZ2h0L2xpYi9pbmRleC5qczog
UmVtb3ZlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9kZXBlbmRl
bmN5LWV4YW1wbGVzL2ZsaWdodC9ib3dlcl9jb21wb25lbnRzL2ZsaWdodC9saWIvbG9nZ2VyLmpz
OiBSZW1vdmVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2RlcGVu
ZGVuY3ktZXhhbXBsZXMvZmxpZ2h0L2Jvd2VyX2NvbXBvbmVudHMvZmxpZ2h0L2xpYi9yZWdpc3Ry
eS5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9k
ZXBlbmRlbmN5LWV4YW1wbGVzL2ZsaWdodC9ib3dlcl9jb21wb25lbnRzL2ZsaWdodC9saWIvdXRp
bHMuanM6IFJlbW92ZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
ZGVwZW5kZW5jeS1leGFtcGxlcy9mbGlnaHQvYm93ZXJfY29tcG9uZW50cy9qcXVlcnkvanF1ZXJ5
LmpzOiBSZW1vdmVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Rl
cGVuZGVuY3ktZXhhbXBsZXMvZmxpZ2h0L2Jvd2VyX2NvbXBvbmVudHMvcmVxdWlyZWpzLXRleHQv
dGV4dC5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9kZXBlbmRlbmN5LWV4YW1wbGVzL2ZsaWdodC9ib3dlcl9jb21wb25lbnRzL3RvZG9tdmMtY29t
bW9uL2Jhc2UuY3NzOiBSZW1vdmVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2RlcGVuZGVuY3ktZXhhbXBsZXMvZmxpZ2h0L2Jvd2VyX2NvbXBvbmVudHMvdG9kb212
Yy1jb21tb24vYmcucG5nOiBSZW1vdmVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2RlcGVuZGVuY3ktZXhhbXBsZXMvZmxpZ2h0L2luZGV4Lmh0bWw6CisgICAgICAg
ICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZGVwZW5kZW5jeS1leGFtcGxlcy9mbGln
aHQva2FybWEuY29uZi5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9kZXBlbmRlbmN5LWV4YW1wbGVzL2ZsaWdodC9ub2RlX21vZHVsZXMvcmVxdWly
ZWpzL3JlcXVpcmUuanM6IFJlbmFtZWQgZnJvbSBQZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2RlcGVuZGVuY3ktZXhhbXBsZXMvZmxpZ2h0L2Jvd2VyX2NvbXBv
bmVudHMvcmVxdWlyZWpzL3JlcXVpcmUuanMuCisgICAgICAgIChtaXhpbik6CisgICAgICAgICh0
eXBlb2YucmVxdWlyZWpzLnN0cmluZ19hcHBlYXJlZF9oZXJlLmlzRnVuY3Rpb24pOgorICAgICAg
ICAobmV3Q29udGV4dC50cmltRG90cyk6CisgICAgICAgIChuZXdDb250ZXh0Lm5vcm1hbGl6ZSk6
CisgICAgICAgIChuZXdDb250ZXh0KToKKyAgICAgICAgKG5ld0NvbnRleHQubWFrZU1vZHVsZU1h
cCk6CisgICAgICAgIChuZXdDb250ZXh0LnRha2VHbG9iYWxRdWV1ZSk6CisgICAgICAgIChuZXdD
b250ZXh0LmhhbmRsZXJzLnN0cmluZ19hcHBlYXJlZF9oZXJlKToKKyAgICAgICAgKG5ld0NvbnRl
eHQuaGFuZGxlcnMuZWxzZS5yZXR1cm4pOgorICAgICAgICAobmV3Q29udGV4dC5jaGVja0xvYWRl
ZCk6CisgICAgICAgIChuZXdDb250ZXh0Lk1vZHVsZS5wcm90b3R5cGUuY2hlY2spOgorICAgICAg
ICAobmV3Q29udGV4dC5jb250ZXh0LmNvbmZpZ3VyZSk6CisgICAgICAgIChuZXdDb250ZXh0LmNv
bnRleHQubG9jYWxSZXF1aXJlLnVuZGVmKToKKyAgICAgICAgKG5ld0NvbnRleHQuY29udGV4dC5t
YWtlUmVxdWlyZSk6CisgICAgICAgIChuZXdDb250ZXh0LmNvbnRleHQubmFtZVRvVXJsKToKKyAg
ICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9kZXBlbmRlbmN5LWV4YW1wbGVz
L2ZsaWdodC9ub2RlX21vZHVsZXMvdG9kb212Yy1hcHAtY3NzL2luZGV4LmNzczogQWRkZWQuCisg
ICAgICAgIChodG1sLCk6CisgICAgICAgIChidXR0b24pOgorICAgICAgICAoYm9keSk6CisgICAg
ICAgIChidXR0b24sKToKKyAgICAgICAgKC5oaWRkZW4pOgorICAgICAgICAoLnRvZG9hcHApOgor
ICAgICAgICAoLnRvZG9hcHAgaW5wdXQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIpOgorICAg
ICAgICAoLnRvZG9hcHAgaW5wdXQ6Oi1tb3otcGxhY2Vob2xkZXIpOgorICAgICAgICAoLnRvZG9h
cHAgaW5wdXQ6OmlucHV0LXBsYWNlaG9sZGVyKToKKyAgICAgICAgKC50b2RvYXBwIGgxKToKKyAg
ICAgICAgKC5uZXctdG9kbywpOgorICAgICAgICAoLm5ldy10b2RvKToKKyAgICAgICAgKC5tYWlu
KToKKyAgICAgICAgKGxhYmVsW2Zvcj0ndG9nZ2xlLWFsbCddKToKKyAgICAgICAgKC50b2dnbGUt
YWxsKToKKyAgICAgICAgKC50b2dnbGUtYWxsOmJlZm9yZSk6CisgICAgICAgICgudG9nZ2xlLWFs
bDpjaGVja2VkOmJlZm9yZSk6CisgICAgICAgICgudG9kby1saXN0KToKKyAgICAgICAgKC50b2Rv
LWxpc3QgbGkpOgorICAgICAgICAoLnRvZG8tbGlzdCBsaTpsYXN0LWNoaWxkKToKKyAgICAgICAg
KC50b2RvLWxpc3QgbGkuZWRpdGluZyk6CisgICAgICAgICgudG9kby1saXN0IGxpLmVkaXRpbmcg
LmVkaXQpOgorICAgICAgICAoLnRvZG8tbGlzdCBsaS5lZGl0aW5nIC52aWV3KToKKyAgICAgICAg
KC50b2RvLWxpc3QgbGkgLnRvZ2dsZSk6CisgICAgICAgICgudG9kby1saXN0IGxpIC50b2dnbGU6
YWZ0ZXIpOgorICAgICAgICAoLnRvZG8tbGlzdCBsaSAudG9nZ2xlOmNoZWNrZWQ6YWZ0ZXIpOgor
ICAgICAgICAoLnRvZG8tbGlzdCBsaSBsYWJlbCk6CisgICAgICAgICgudG9kby1saXN0IGxpLmNv
bXBsZXRlZCBsYWJlbCk6CisgICAgICAgICgudG9kby1saXN0IGxpIC5kZXN0cm95KToKKyAgICAg
ICAgKC50b2RvLWxpc3QgbGkgLmRlc3Ryb3k6aG92ZXIpOgorICAgICAgICAoLnRvZG8tbGlzdCBs
aSAuZGVzdHJveTphZnRlcik6CisgICAgICAgICgudG9kby1saXN0IGxpOmhvdmVyIC5kZXN0cm95
KToKKyAgICAgICAgKC50b2RvLWxpc3QgbGkgLmVkaXQpOgorICAgICAgICAoLnRvZG8tbGlzdCBs
aS5lZGl0aW5nOmxhc3QtY2hpbGQpOgorICAgICAgICAoLmZvb3Rlcik6CisgICAgICAgICguZm9v
dGVyOmJlZm9yZSk6CisgICAgICAgICgudG9kby1jb3VudCk6CisgICAgICAgICgudG9kby1jb3Vu
dCBzdHJvbmcpOgorICAgICAgICAoLmZpbHRlcnMpOgorICAgICAgICAoLmZpbHRlcnMgbGkpOgor
ICAgICAgICAoLmZpbHRlcnMgbGkgYSk6CisgICAgICAgICguZmlsdGVycyBsaSBhLnNlbGVjdGVk
LCk6CisgICAgICAgICguZmlsdGVycyBsaSBhLnNlbGVjdGVkKToKKyAgICAgICAgKC5jbGVhci1j
b21wbGV0ZWQsKToKKyAgICAgICAgKC5jbGVhci1jb21wbGV0ZWQ6aG92ZXIpOgorICAgICAgICAo
LmluZm8pOgorICAgICAgICAoLmluZm8gcCk6CisgICAgICAgICguaW5mbyBhKToKKyAgICAgICAg
KC5pbmZvIGE6aG92ZXIpOgorICAgICAgICAoQG1lZGlhIHNjcmVlbiBhbmQgKC13ZWJraXQtbWlu
LWRldmljZS1waXhlbC1yYXRpbzowKSk6CisgICAgICAgICgudG9nZ2xlLWFsbCwpOgorICAgICAg
ICAoQG1lZGlhIChtYXgtd2lkdGg6IDQzMHB4KSk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvZGVwZW5kZW5jeS1leGFtcGxlcy9mbGlnaHQvbm9kZV9tb2R1bGVzL3Rv
ZG9tdmMtYXBwLWNzcy9wYWNrYWdlLmpzb246IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2RlcGVuZGVuY3ktZXhhbXBsZXMvZmxpZ2h0L25vZGVfbW9kdWxl
cy90b2RvbXZjLWFwcC1jc3MvcmVhZG1lLm1kOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9kZXBlbmRlbmN5LWV4YW1wbGVzL2ZsaWdodC9ub2RlX21vZHVs
ZXMvdG9kb212Yy1jb21tb24vYmFzZS5jc3M6IEFkZGVkLgorICAgICAgICAoaHIpOgorICAgICAg
ICAoLmxlYXJuIGEpOgorICAgICAgICAoLmxlYXJuIGE6aG92ZXIpOgorICAgICAgICAoLmxlYXJu
IGgzLCk6CisgICAgICAgICgubGVhcm4gaDMpOgorICAgICAgICAoLmxlYXJuIGg0KToKKyAgICAg
ICAgKC5sZWFybiBoNSk6CisgICAgICAgICgubGVhcm4gdWwpOgorICAgICAgICAoLmxlYXJuIGxp
KToKKyAgICAgICAgKC5sZWFybiBwKToKKyAgICAgICAgKCNpc3N1ZS1jb3VudCk6CisgICAgICAg
ICgucXVvdGUpOgorICAgICAgICAoLnF1b3RlIHApOgorICAgICAgICAoLnF1b3RlIHA6YmVmb3Jl
KToKKyAgICAgICAgKC5xdW90ZSBwOmFmdGVyKToKKyAgICAgICAgKC5xdW90ZSBmb290ZXIpOgor
ICAgICAgICAoLnF1b3RlIGZvb3RlciBpbWcpOgorICAgICAgICAoLnF1b3RlIGZvb3RlciBhKToK
KyAgICAgICAgKC5zcGVlY2gtYnViYmxlKToKKyAgICAgICAgKC5zcGVlY2gtYnViYmxlOmFmdGVy
KToKKyAgICAgICAgKC5sZWFybi1iYXIgPiAubGVhcm4pOgorICAgICAgICAoQG1lZGlhIChtaW4t
d2lkdGg6IDg5OXB4KSk6CisgICAgICAgICgubGVhcm4tYmFyKToKKyAgICAgICAgKiBTcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9kZXBlbmRlbmN5LWV4YW1wbGVzL2ZsaWdodC9ub2RlX21v
ZHVsZXMvdG9kb212Yy1jb21tb24vYmFzZS5qczogUmVuYW1lZCBmcm9tIFBlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2Vt
YmVyanMvYm93ZXJfY29tcG9uZW50cy90b2RvbXZjLWNvbW1vbi9iYXNlLmpzLgorICAgICAgICAo
Xy5kZWZhdWx0cyk6CisgICAgICAgICh0ZW1wbGF0ZSk6CisgICAgICAgIChlc2NhcGVyLl8udGVt
cGxhdGUpOgorICAgICAgICAoXyk6CisgICAgICAgIChsb2NhdGlvbi5ob3N0bmFtZS5zdHJpbmdf
YXBwZWFyZWRfaGVyZS5pLnIuaS5yKToKKyAgICAgICAgKHJlZGlyZWN0KToKKyAgICAgICAgKGZp
bmRSb290KToKKyAgICAgICAgKHhoci5vbmxvYWQpOgorICAgICAgICAoZ2V0RmlsZSk6CisgICAg
ICAgIChMZWFybik6CisgICAgICAgIChMZWFybi5wcm90b3R5cGUuYXBwZW5kKToKKyAgICAgICAg
KExlYXJuLnByb3RvdHlwZS5mZXRjaElzc3VlQ291bnQpOgorICAgICAgICAqIFNwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2RlcGVuZGVuY3ktZXhhbXBsZXMvZmxpZ2h0L25vZGVfbW9kdWxl
cy90b2RvbXZjLWNvbW1vbi9wYWNrYWdlLmpzb246IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2RlcGVuZGVuY3ktZXhhbXBsZXMvZmxpZ2h0L25vZGVfbW9k
dWxlcy90b2RvbXZjLWNvbW1vbi9yZWFkbWUubWQ6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2RlcGVuZGVuY3ktZXhhbXBsZXMvZmxpZ2h0L3BhY2thZ2Uu
anNvbjoKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9kZXBlbmRlbmN5
LWV4YW1wbGVzL2ZsaWdodC9yZWFkbWUubWQ6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvZGVwZW5kZW5jeS1leGFtcGxlcy9mbGlnaHQvdGVzdC8uanNoaW50cmM6IFJl
bW92ZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZGVwZW5kZW5j
eS1leGFtcGxlcy9mbGlnaHQvdGVzdC9maXh0dXJlL2Zvb3Rlci5odG1sOiBSZW1vdmVkLgorICAg
ICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2RlcGVuZGVuY3ktZXhhbXBsZXMv
ZmxpZ2h0L3Rlc3QvZml4dHVyZS9uZXdfdG9kby5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIFNw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2RlcGVuZGVuY3ktZXhhbXBsZXMvZmxpZ2h0L3Rl
c3QvZml4dHVyZS90b2dnbGVfYWxsLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZGVwZW5kZW5jeS1leGFtcGxlcy9mbGlnaHQvdGVzdC9tb2Nr
L2RhdGFzdG9yZS5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9kZXBlbmRlbmN5LWV4YW1wbGVzL2ZsaWdodC90ZXN0L3NwZWMvZGF0YS9zdGF0c19z
cGVjLmpzOiBSZW1vdmVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2RlcGVuZGVuY3ktZXhhbXBsZXMvZmxpZ2h0L3Rlc3Qvc3BlYy9kYXRhL3RvZG9zX3NwZWMuanM6
IFJlbW92ZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZGVwZW5k
ZW5jeS1leGFtcGxlcy9mbGlnaHQvdGVzdC9zcGVjL3VpL25ld19pdGVtX3NwZWMuanM6IFJlbW92
ZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZGVwZW5kZW5jeS1l
eGFtcGxlcy9mbGlnaHQvdGVzdC9zcGVjL3VpL3N0YXRzX3NwZWMuanM6IFJlbW92ZWQuCisgICAg
ICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZGVwZW5kZW5jeS1leGFtcGxlcy9m
bGlnaHQvdGVzdC9zcGVjL3VpL3RvZ2dsZV9hbGxfc3BlYy5qczogUmVtb3ZlZC4KKyAgICAgICAg
KiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9kZXBlbmRlbmN5LWV4YW1wbGVzL2ZsaWdo
dC90ZXN0L3Rlc3QtbWFpbi5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9mdW5jdGlvbmFsLXByb2ctZXhhbXBsZXMvZWxtL1RvZG8uZWxtOiBBZGRl
ZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9mdW5jdGlvbmFsLXBy
b2ctZXhhbXBsZXMvZWxtL1RvZG8vVGFzay5lbG06IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2Z1bmN0aW9uYWwtcHJvZy1leGFtcGxlcy9lbG0vZWxtLXBh
Y2thZ2UuanNvbjogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvZnVuY3Rpb25hbC1wcm9nLWV4YW1wbGVzL2VsbS9pbmRleC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9mdW5jdGlvbmFsLXByb2ctZXhhbXBs
ZXMvZWxtL25vZGVfbW9kdWxlcy90b2RvbXZjLWFwcC1jc3MvaW5kZXguY3NzOiBBZGRlZC4KKyAg
ICAgICAgKGh0bWwsKToKKyAgICAgICAgKGJ1dHRvbik6CisgICAgICAgIChib2R5KToKKyAgICAg
ICAgKDpmb2N1cyk6CisgICAgICAgICguaGlkZGVuKToKKyAgICAgICAgKC50b2RvYXBwKToKKyAg
ICAgICAgKC50b2RvYXBwIGlucHV0Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyKToKKyAgICAg
ICAgKC50b2RvYXBwIGlucHV0OjotbW96LXBsYWNlaG9sZGVyKToKKyAgICAgICAgKC50b2RvYXBw
IGlucHV0OjppbnB1dC1wbGFjZWhvbGRlcik6CisgICAgICAgICgudG9kb2FwcCBoMSk6CisgICAg
ICAgICgubmV3LXRvZG8sKToKKyAgICAgICAgKC5uZXctdG9kbyk6CisgICAgICAgICgubWFpbik6
CisgICAgICAgIChsYWJlbFtmb3I9J3RvZ2dsZS1hbGwnXSk6CisgICAgICAgICgudG9nZ2xlLWFs
bCk6CisgICAgICAgICgudG9nZ2xlLWFsbDpiZWZvcmUpOgorICAgICAgICAoLnRvZ2dsZS1hbGw6
Y2hlY2tlZDpiZWZvcmUpOgorICAgICAgICAoLnRvZG8tbGlzdCk6CisgICAgICAgICgudG9kby1s
aXN0IGxpKToKKyAgICAgICAgKC50b2RvLWxpc3QgbGk6bGFzdC1jaGlsZCk6CisgICAgICAgICgu
dG9kby1saXN0IGxpLmVkaXRpbmcpOgorICAgICAgICAoLnRvZG8tbGlzdCBsaS5lZGl0aW5nIC5l
ZGl0KToKKyAgICAgICAgKC50b2RvLWxpc3QgbGkuZWRpdGluZyAudmlldyk6CisgICAgICAgICgu
dG9kby1saXN0IGxpIC50b2dnbGUpOgorICAgICAgICAoLnRvZG8tbGlzdCBsaSAudG9nZ2xlOmFm
dGVyKToKKyAgICAgICAgKC50b2RvLWxpc3QgbGkgLnRvZ2dsZTpjaGVja2VkOmFmdGVyKToKKyAg
ICAgICAgKC50b2RvLWxpc3QgbGkgbGFiZWwpOgorICAgICAgICAoLnRvZG8tbGlzdCBsaS5jb21w
bGV0ZWQgbGFiZWwpOgorICAgICAgICAoLnRvZG8tbGlzdCBsaSAuZGVzdHJveSk6CisgICAgICAg
ICgudG9kby1saXN0IGxpIC5kZXN0cm95OmhvdmVyKToKKyAgICAgICAgKC50b2RvLWxpc3QgbGkg
LmRlc3Ryb3k6YWZ0ZXIpOgorICAgICAgICAoLnRvZG8tbGlzdCBsaTpob3ZlciAuZGVzdHJveSk6
CisgICAgICAgICgudG9kby1saXN0IGxpIC5lZGl0KToKKyAgICAgICAgKC50b2RvLWxpc3QgbGku
ZWRpdGluZzpsYXN0LWNoaWxkKToKKyAgICAgICAgKC5mb290ZXIpOgorICAgICAgICAoLmZvb3Rl
cjpiZWZvcmUpOgorICAgICAgICAoLnRvZG8tY291bnQpOgorICAgICAgICAoLnRvZG8tY291bnQg
c3Ryb25nKToKKyAgICAgICAgKC5maWx0ZXJzKToKKyAgICAgICAgKC5maWx0ZXJzIGxpKToKKyAg
ICAgICAgKC5maWx0ZXJzIGxpIGEpOgorICAgICAgICAoLmZpbHRlcnMgbGkgYTpob3Zlcik6Cisg
ICAgICAgICguZmlsdGVycyBsaSBhLnNlbGVjdGVkKToKKyAgICAgICAgKC5jbGVhci1jb21wbGV0
ZWQsKToKKyAgICAgICAgKC5jbGVhci1jb21wbGV0ZWQ6aG92ZXIpOgorICAgICAgICAoLmluZm8p
OgorICAgICAgICAoLmluZm8gcCk6CisgICAgICAgICguaW5mbyBhKToKKyAgICAgICAgKC5pbmZv
IGE6aG92ZXIpOgorICAgICAgICAoQG1lZGlhIHNjcmVlbiBhbmQgKC13ZWJraXQtbWluLWRldmlj
ZS1waXhlbC1yYXRpbzowKSk6CisgICAgICAgICgudG9nZ2xlLWFsbCwpOgorICAgICAgICAoQG1l
ZGlhIChtYXgtd2lkdGg6IDQzMHB4KSk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvZnVuY3Rpb25hbC1wcm9nLWV4YW1wbGVzL2VsbS9ub2RlX21vZHVsZXMvdG9kb212
Yy1jb21tb24vYmFzZS5jc3M6IEFkZGVkLgorICAgICAgICAoaHIpOgorICAgICAgICAoLmxlYXJu
IGEpOgorICAgICAgICAoLmxlYXJuIGE6aG92ZXIpOgorICAgICAgICAoLmxlYXJuIGgzLCk6Cisg
ICAgICAgICgubGVhcm4gaDMpOgorICAgICAgICAoLmxlYXJuIGg0KToKKyAgICAgICAgKC5sZWFy
biBoNSk6CisgICAgICAgICgubGVhcm4gdWwpOgorICAgICAgICAoLmxlYXJuIGxpKToKKyAgICAg
ICAgKC5sZWFybiBwKToKKyAgICAgICAgKCNpc3N1ZS1jb3VudCk6CisgICAgICAgICgucXVvdGUp
OgorICAgICAgICAoLnF1b3RlIHApOgorICAgICAgICAoLnF1b3RlIHA6YmVmb3JlKToKKyAgICAg
ICAgKC5xdW90ZSBwOmFmdGVyKToKKyAgICAgICAgKC5xdW90ZSBmb290ZXIpOgorICAgICAgICAo
LnF1b3RlIGZvb3RlciBpbWcpOgorICAgICAgICAoLnF1b3RlIGZvb3RlciBhKToKKyAgICAgICAg
KC5zcGVlY2gtYnViYmxlKToKKyAgICAgICAgKC5zcGVlY2gtYnViYmxlOmFmdGVyKToKKyAgICAg
ICAgKC5sZWFybi1iYXIgPiAubGVhcm4pOgorICAgICAgICAoQG1lZGlhIChtaW4td2lkdGg6IDg5
OXB4KSk6CisgICAgICAgICgubGVhcm4tYmFyKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9mdW5jdGlvbmFsLXByb2ctZXhhbXBsZXMvZWxtL25vZGVfbW9kdWxlcy90
b2RvbXZjLWNvbW1vbi9iYXNlLmpzOiBSZW5hbWVkIGZyb20gUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9sYWJzL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFj
dC9ib3dlcl9jb21wb25lbnRzL3RvZG9tdmMtY29tbW9uL2Jhc2UuanMuCisgICAgICAgIChfLmRl
ZmF1bHRzKToKKyAgICAgICAgKHRlbXBsYXRlKToKKyAgICAgICAgKGVzY2FwZXIuXy50ZW1wbGF0
ZSk6CisgICAgICAgIChfKToKKyAgICAgICAgKGxvY2F0aW9uLmhvc3RuYW1lLnN0cmluZ19hcHBl
YXJlZF9oZXJlLmkuci5pLnIpOgorICAgICAgICAocmVkaXJlY3QpOgorICAgICAgICAoZmluZFJv
b3QpOgorICAgICAgICAoeGhyLm9ubG9hZCk6CisgICAgICAgIChnZXRGaWxlKToKKyAgICAgICAg
KExlYXJuKToKKyAgICAgICAgKExlYXJuLnByb3RvdHlwZS5hcHBlbmQpOgorICAgICAgICAoTGVh
cm4ucHJvdG90eXBlLmZldGNoSXNzdWVDb3VudCk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvZnVuY3Rpb25hbC1wcm9nLWV4YW1wbGVzL2VsbS9wYWNrYWdlLmpzb246
IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Z1bmN0aW9u
YWwtcHJvZy1leGFtcGxlcy9lbG0vcmVhZG1lLm1kOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9sYWJzL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9i
b3dlci5qc29uOiBSZW1vdmVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2xhYnMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L2Jvd2VyX2NvbXBvbmVudHMvZGly
ZWN0b3IvYnVpbGQvZGlyZWN0b3IuanM6IFJlbW92ZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvbGFicy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QvYm93ZXJf
Y29tcG9uZW50cy9kaXJlY3Rvci9idWlsZC9kaXJlY3Rvci5taW4uanM6IFJlbW92ZWQuCisgICAg
ICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvbGFicy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvcmVhY3QvYm93ZXJfY29tcG9uZW50cy9kaXJlY3Rvci9idWlsZC9lbmRlci5qczogUmVt
b3ZlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9sYWJzL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ib3dlcl9jb21wb25lbnRzL3JlYWN0L0pTWFRyYW5zZm9y
bWVyLmpzOiBSZW1vdmVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2xhYnMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L2Jvd2VyX2NvbXBvbmVudHMvcmVhY3Qv
Ym93ZXIuanNvbjogUmVtb3ZlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9sYWJzL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ib3dlcl9jb21wb25lbnRzL3Jl
YWN0L3JlYWN0LmpzOiBSZW1vdmVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2xhYnMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L2Jvd2VyX2NvbXBvbmVudHMv
cmVhY3QvcmVhY3QubWluLmpzOiBSZW1vdmVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2xhYnMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L2Jvd2VyX2NvbXBv
bmVudHMvdG9kb212Yy1jb21tb24vYmFzZS5jc3M6IFJlbW92ZWQuCisgICAgICAgICogU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvbGFicy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qv
Ym93ZXJfY29tcG9uZW50cy90b2RvbXZjLWNvbW1vbi9iZy5wbmc6IFJlbW92ZWQuCisgICAgICAg
ICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvbGFicy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvcmVhY3QvaW5kZXguaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9sYWJzL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9qcy9hcHAuanN4
OiBSZW1vdmVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2xhYnMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L2pzL2Zvb3Rlci5qc3g6IFJlbW92ZWQuCisgICAg
ICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvbGFicy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvcmVhY3QvanMvdG9kb0l0ZW0uanN4OiBSZW1vdmVkLgorICAgICAgICAqIFNwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2xhYnMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L2pz
L3V0aWxzLmpzeDogUmVtb3ZlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9sYWJzL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9yZWFkbWUubWQ6IFJlbW92ZWQu
CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxl
cy9lczIwMTUtYmFiZWwtd2VicGFjay8uYmFiZWxyYzogQWRkZWQuCisgICAgICAgICogU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2Vi
cGFjay8uZXNsaW50aWdub3JlOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrLy5lc2xpbnRy
YzogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxs
YS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9MSUNFTlNFOiBBZGRlZC4KKyAgICAgICAg
KiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1i
YWJlbC13ZWJwYWNrL2Rpc3QvYnVuZGxlLmFwcC40MjFlYjZiYWNhMDIyMThlOTg1ZS5qczogQWRk
ZWQuCisgICAgICAgIChvKToKKyAgICAgICAgKG4pOgorICAgICAgICAocik6CisgICAgICAgIChs
KToKKyAgICAgICAgKGEpOgorICAgICAgICAoYyk6CisgICAgICAgIChvLnByb3RvdHlwZS5zZXRW
aWV3KToKKyAgICAgICAgKG8ucHJvdG90eXBlLnNob3dBbGwpOgorICAgICAgICAoby5wcm90b3R5
cGUuc2hvd0FjdGl2ZSk6CisgICAgICAgIChvLnByb3RvdHlwZS5zaG93Q29tcGxldGVkKToKKyAg
ICAgICAgKG8ucHJvdG90eXBlLmFkZEl0ZW0pOgorICAgICAgICAoby5wcm90b3R5cGUuZWRpdEl0
ZW0pOgorICAgICAgICAoby5wcm90b3R5cGUuZWRpdEl0ZW1TYXZlKToKKyAgICAgICAgKG8ucHJv
dG90eXBlLmVkaXRJdGVtQ2FuY2VsKToKKyAgICAgICAgKG8ucHJvdG90eXBlLnJlbW92ZUl0ZW0p
OgorICAgICAgICAoby5wcm90b3R5cGUucmVtb3ZlQ29tcGxldGVkSXRlbXMpOgorICAgICAgICAo
by5wcm90b3R5cGUudG9nZ2xlQ29tcGxldGUpOgorICAgICAgICAoby5wcm90b3R5cGUudG9nZ2xl
QWxsKToKKyAgICAgICAgKG8ucHJvdG90eXBlLl91cGRhdGVDb3VudCk6CisgICAgICAgIChvLnBy
b3RvdHlwZS5fZmlsdGVyKToKKyAgICAgICAgKG8ucHJvdG90eXBlLl91cGRhdGVGaWx0ZXJTdGF0
ZSk6CisgICAgICAgIChuLnN0cmluZ19hcHBlYXJlZF9oZXJlLnR5cGVvZi5TeW1ib2wuc3RyaW5n
X2FwcGVhcmVkX2hlcmUudHlwZW9mLlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChvLnByb3Rv
dHlwZS5jcmVhdGUpOgorICAgICAgICAoby5wcm90b3R5cGUucmVhZCk6CisgICAgICAgIChvLnBy
b3RvdHlwZS51cGRhdGUpOgorICAgICAgICAoby5wcm90b3R5cGUucmVtb3ZlKToKKyAgICAgICAg
KG8ucHJvdG90eXBlLnJlbW92ZUFsbCk6CisgICAgICAgIChvLnByb3RvdHlwZS5nZXRDb3VudCk6
CisgICAgICAgIChvLnByb3RvdHlwZS5zdWJzY3JpYmUpOgorICAgICAgICAoby5wcm90b3R5cGUu
X25vdGlmeSk6CisgICAgICAgIChvLnByb3RvdHlwZS5maW5kKToKKyAgICAgICAgKG8ucHJvdG90
eXBlLmZpbmRBbGwpOgorICAgICAgICAoby5wcm90b3R5cGUuc2F2ZSk6CisgICAgICAgIChvLnBy
b3RvdHlwZS5kcm9wKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92
YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3QvYnVuZGxlLmFwcC40MjFl
YjZiYWNhMDIyMThlOTg1ZS5qcy5tYXA6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svZGlz
dC9idW5kbGUubWFuaWZlc3QuYmMwNDAzY2I3MDc2OGIxNGFkZGQuanM6IEFkZGVkLgorICAgICAg
ICAocik6CisgICAgICAgICh3aW5kb3cud2VicGFja0pzb25wKToKKyAgICAgICAgKHIuZSk6Cisg
ICAgICAgIChyLmkpOgorICAgICAgICAoci5kKToKKyAgICAgICAgKGdldCByLm4pOgorICAgICAg
ICAoci5vKToKKyAgICAgICAgKHIub2UpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svZGlzdC9idW5k
bGUubWFuaWZlc3QuYmMwNDAzY2I3MDc2OGIxNGFkZGQuanMubWFwOiBBZGRlZC4KKyAgICAgICAg
KiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1i
YWJlbC13ZWJwYWNrL2Rpc3QvYnVuZGxlLnZlbmRvci5kYTFhMmQ2NDEwNmVjNTRkNGY1Ny5qczog
QWRkZWQuCisgICAgICAgICgxKToKKyAgICAgICAgKDExKToKKyAgICAgICAgKHJldHVybi5uLnRv
U3RyaW5nKToKKyAgICAgICAgKG4uaSk6CisgICAgICAgIChuLmV4cG9ydHMpOgorICAgICAgICAo
MTIpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhh
bXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svZGlzdC9idW5kbGUudmVuZG9yLmRhMWEyZDY0MTA2
ZWM1NGQ0ZjU3LmpzLm1hcDogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0L2Zhdmlj
b24uaWNvOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92
YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3QvaW5kZXguaHRtbDogQWRk
ZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFt
cGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0L3N0eWxlcy5hcHAuNDIxZWI2YmFjYTAyMjE4
ZTk4NWUuY3NzOiBBZGRlZC4KKyAgICAgICAgKC50b2dnbGUtZ3JhcGgpOgorICAgICAgICAoLnRv
Z2dsZS1ncmFwaCBzdmcpOgorICAgICAgICAoLnRvZ2dsZS1ncmFwaCBzdmcgcGF0aCk6CisgICAg
ICAgICgudG9nZ2xlLWdyYXBoLmFjdGl2ZSBzdmcgcGF0aCwudG9nZ2xlLWdyYXBoOmZvY3VzIHN2
ZyBwYXRoLC50b2dnbGUtZ3JhcGg6aG92ZXIgc3ZnIHBhdGgpOgorICAgICAgICAqIFNwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBh
Y2svZGlzdC9zdHlsZXMuYXBwLjQyMWViNmJhY2EwMjIxOGU5ODVlLmNzcy5tYXA6IEFkZGVkLgor
ICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMv
ZXMyMDE1LWJhYmVsLXdlYnBhY2svZGlzdC9zdHlsZXMudmVuZG9yLmRhMWEyZDY0MTA2ZWM1NGQ0
ZjU3LmNzczogQWRkZWQuCisgICAgICAgIChib2R5LGJ1dHRvbixodG1sKToKKyAgICAgICAgKGJ1
dHRvbik6CisgICAgICAgIChib2R5LGJ1dHRvbik6CisgICAgICAgIChib2R5KToKKyAgICAgICAg
KDpmb2N1cyk6CisgICAgICAgICguaGlkZGVuKToKKyAgICAgICAgKC50b2RvYXBwKToKKyAgICAg
ICAgKC50b2RvYXBwIGlucHV0Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyKToKKyAgICAgICAg
KC50b2RvYXBwIGlucHV0OjotbW96LXBsYWNlaG9sZGVyKToKKyAgICAgICAgKC50b2RvYXBwIGlu
cHV0OjppbnB1dC1wbGFjZWhvbGRlcik6CisgICAgICAgICgudG9kb2FwcCBoMSk6CisgICAgICAg
ICguZWRpdCwubmV3LXRvZG8pOgorICAgICAgICAoLm5ldy10b2RvKToKKyAgICAgICAgKC5tYWlu
KToKKyAgICAgICAgKGxhYmVsW2Zvcj10b2dnbGUtYWxsXSk6CisgICAgICAgICgudG9nZ2xlLWFs
bCk6CisgICAgICAgICgudG9nZ2xlLWFsbDpiZWZvcmUpOgorICAgICAgICAoLnRvZ2dsZS1hbGw6
Y2hlY2tlZDpiZWZvcmUpOgorICAgICAgICAoLnRvZG8tbGlzdCk6CisgICAgICAgICgudG9kby1s
aXN0IGxpKToKKyAgICAgICAgKC50b2RvLWxpc3QgbGk6bGFzdC1jaGlsZCk6CisgICAgICAgICgu
dG9kby1saXN0IGxpLmVkaXRpbmcpOgorICAgICAgICAoLnRvZG8tbGlzdCBsaS5lZGl0aW5nIC5l
ZGl0KToKKyAgICAgICAgKC50b2RvLWxpc3QgbGkuZWRpdGluZyAudmlldyk6CisgICAgICAgICgu
dG9kby1saXN0IGxpIC50b2dnbGUpOgorICAgICAgICAoLnRvZG8tbGlzdCBsaSAudG9nZ2xlOmFm
dGVyKToKKyAgICAgICAgKC50b2RvLWxpc3QgbGkgLnRvZ2dsZTpjaGVja2VkOmFmdGVyKToKKyAg
ICAgICAgKC50b2RvLWxpc3QgbGkgbGFiZWwpOgorICAgICAgICAoLnRvZG8tbGlzdCBsaS5jb21w
bGV0ZWQgbGFiZWwpOgorICAgICAgICAoLnRvZG8tbGlzdCBsaSAuZGVzdHJveSk6CisgICAgICAg
ICgudG9kby1saXN0IGxpIC5kZXN0cm95OmhvdmVyKToKKyAgICAgICAgKC50b2RvLWxpc3QgbGkg
LmRlc3Ryb3k6YWZ0ZXIpOgorICAgICAgICAoLnRvZG8tbGlzdCBsaTpob3ZlciAuZGVzdHJveSk6
CisgICAgICAgICgudG9kby1saXN0IGxpIC5lZGl0KToKKyAgICAgICAgKC50b2RvLWxpc3QgbGku
ZWRpdGluZzpsYXN0LWNoaWxkKToKKyAgICAgICAgKC5mb290ZXIpOgorICAgICAgICAoLmZvb3Rl
cjpiZWZvcmUpOgorICAgICAgICAoLnRvZG8tY291bnQpOgorICAgICAgICAoLnRvZG8tY291bnQg
c3Ryb25nKToKKyAgICAgICAgKC5maWx0ZXJzKToKKyAgICAgICAgKC5maWx0ZXJzIGxpKToKKyAg
ICAgICAgKC5maWx0ZXJzIGxpIGEpOgorICAgICAgICAoLmZpbHRlcnMgbGkgYTpob3Zlcik6Cisg
ICAgICAgICguZmlsdGVycyBsaSBhLnNlbGVjdGVkKToKKyAgICAgICAgKC5jbGVhci1jb21wbGV0
ZWQsaHRtbCAuY2xlYXItY29tcGxldGVkOmFjdGl2ZSk6CisgICAgICAgICguY2xlYXItY29tcGxl
dGVkOmhvdmVyKToKKyAgICAgICAgKC5pbmZvKToKKyAgICAgICAgKC5pbmZvIHApOgorICAgICAg
ICAoLmluZm8gYSk6CisgICAgICAgICguaW5mbyBhOmhvdmVyKToKKyAgICAgICAgKC50b2RvLWxp
c3QgbGkgLnRvZ2dsZSwudG9nZ2xlLWFsbCk6CisgICAgICAgIChAbWVkaWEgc2NyZWVuIGFuZCAo
LXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOjApKToKKyAgICAgICAgKEBtZWRpYSAobWF4
LXdpZHRoOjQzMHB4KSk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
dmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0L3N0eWxlcy52ZW5kb3Iu
ZGExYTJkNjQxMDZlYzU0ZDRmNTcuY3NzLm1hcDogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFj
ay9mYXZpY29uLmljbzogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9rYXJtYS5jb25mLmpz
OiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxh
LWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL3BhY2thZ2UuanNvbjogQWRkZWQuCisgICAg
ICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIw
MTUtYmFiZWwtd2VicGFjay9zcmMvYXBwLmNzczogQWRkZWQuCisgICAgICAgICgudG9nZ2xlLWdy
YXBoKToKKyAgICAgICAgKC50b2dnbGUtZ3JhcGggc3ZnKToKKyAgICAgICAgKC50b2dnbGUtZ3Jh
cGggc3ZnIHBhdGgpOgorICAgICAgICAoLnRvZ2dsZS1ncmFwaC5hY3RpdmUgc3ZnIHBhdGgsKToK
KyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVz
L2VzMjAxNS1iYWJlbC13ZWJwYWNrL3NyYy9hcHAuanM6IEFkZGVkLgorICAgICAgICAoZnJvbS5z
dHJpbmdfYXBwZWFyZWRfaGVyZS5leHBvcnQub25Mb2FkKToKKyAgICAgICAgKiBTcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNr
L3NyYy9ib290c3RyYXAuanM6IEFkZGVkLgorICAgICAgICAoZnJvbS5zdHJpbmdfYXBwZWFyZWRf
aGVyZS5jb25zdC5yZWxvYWRpbmcuZG9jdW1lbnQucmVhZHlTdGF0ZS5zdHJpbmdfYXBwZWFyZWRf
aGVyZSk6CisgICAgICAgIChib290c3RyYXApOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svc3JjL2Nv
bnRyb2xsZXIuanM6IEFkZGVkLgorICAgICAgICAoZXhwb3J0LmRlZmF1bHQuQ29udHJvbGxlci5D
b250cm9sbGVyKToKKyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLnNldFZpZXcpOgorICAg
ICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUuc2hvd0FsbCk6CisgICAgICAgIChDb250cm9sbGVy
LnByb3RvdHlwZS5zaG93QWN0aXZlKToKKyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLnNo
b3dDb21wbGV0ZWQpOgorICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUuYWRkSXRlbSk6Cisg
ICAgICAgIChDb250cm9sbGVyLnByb3RvdHlwZS5lZGl0SXRlbSk6CisgICAgICAgIChDb250cm9s
bGVyLnByb3RvdHlwZS5lZGl0SXRlbVNhdmUpOgorICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5
cGUuZWRpdEl0ZW1DYW5jZWwpOgorICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUucmVtb3Zl
SXRlbSk6CisgICAgICAgIChDb250cm9sbGVyLnByb3RvdHlwZS5yZW1vdmVDb21wbGV0ZWRJdGVt
cyk6CisgICAgICAgIChDb250cm9sbGVyLnByb3RvdHlwZS50b2dnbGVDb21wbGV0ZSk6CisgICAg
ICAgIChDb250cm9sbGVyLnByb3RvdHlwZS50b2dnbGVBbGwpOgorICAgICAgICAoQ29udHJvbGxl
ci5wcm90b3R5cGUuX3VwZGF0ZUNvdW50KToKKyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBl
Ll9maWx0ZXIpOgorICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUuX3VwZGF0ZUZpbHRlclN0
YXRlKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4
YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL3NyYy9jb250cm9sbGVyLnRlc3QuanM6IEFkZGVk
LgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBs
ZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svc3JjL2hlbHBlcnMuanM6IEFkZGVkLgorICAgICAgICAo
cXMpOgorICAgICAgICAocXNhKToKKyAgICAgICAgKG9uKToKKyAgICAgICAgKGRpc3BhdGNoRXZl
bnQpOgorICAgICAgICAoZGVsZWdhdGUpOgorICAgICAgICAocGFyZW50KToKKyAgICAgICAgKHJl
bW92ZSk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1l
eGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9zcmMvaW5kZXguaHRtbDogQWRkZWQuCisgICAg
ICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIw
MTUtYmFiZWwtd2VicGFjay9zcmMvbW9kZWwuanM6IEFkZGVkLgorICAgICAgICAoZXhwb3J0LmRl
ZmF1bHQuTW9kZWwuTW9kZWwpOgorICAgICAgICAoTW9kZWwucHJvdG90eXBlLmNyZWF0ZSk6Cisg
ICAgICAgIChNb2RlbC5wcm90b3R5cGUucmVhZCk6CisgICAgICAgIChNb2RlbC5wcm90b3R5cGUu
dXBkYXRlKToKKyAgICAgICAgKE1vZGVsLnByb3RvdHlwZS5yZW1vdmUpOgorICAgICAgICAoTW9k
ZWwucHJvdG90eXBlLnJlbW92ZUFsbCk6CisgICAgICAgIChNb2RlbC5wcm90b3R5cGUuZ2V0Q291
bnQpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhh
bXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svc3JjL3N0b3JlLmpzOiBBZGRlZC4KKyAgICAgICAg
KGZyb20uc3RyaW5nX2FwcGVhcmVkX2hlcmUuZXhwb3J0LmRlZmF1bHQuU3RvcmUuU3RvcmUpOgor
ICAgICAgICAoU3RvcmUucHJvdG90eXBlLnN1YnNjcmliZSk6CisgICAgICAgIChTdG9yZS5wcm90
b3R5cGUuX25vdGlmeSk6CisgICAgICAgIChTdG9yZS5wcm90b3R5cGUuZmluZCk6CisgICAgICAg
IChTdG9yZS5wcm90b3R5cGUuZmluZEFsbCk6CisgICAgICAgIChTdG9yZS5wcm90b3R5cGUuc2F2
ZSk6CisgICAgICAgIChTdG9yZS5wcm90b3R5cGUucmVtb3ZlKToKKyAgICAgICAgKFN0b3JlLnBy
b3RvdHlwZS5kcm9wKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92
YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL3NyYy90ZW1wbGF0ZS5qczogQWRk
ZWQuCisgICAgICAgIChlc2NhcGVIdG1sQ2hhcik6CisgICAgICAgIChyZVVuZXNjYXBlZEh0bWwu
cmVIYXNVbmVzY2FwZWRIdG1sLm5ldy5SZWdFeHAucmVVbmVzY2FwZWRIdG1sLnNvdXJjZS5lc2Nh
cGUpOgorICAgICAgICAoVGVtcGxhdGUudGhpcy5kZWZhdWx0VGVtcGxhdGUubGkuZGF0YS5pZC5z
dHJpbmdfYXBwZWFyZWRfaGVyZS5kaXYuaW5wdXQpOgorICAgICAgICAoVGVtcGxhdGUudGhpcy5k
ZWZhdWx0VGVtcGxhdGUubGkuZGF0YS5pZC5zdHJpbmdfYXBwZWFyZWRfaGVyZS5kaXYpOgorICAg
ICAgICAoVGVtcGxhdGUucHJvdG90eXBlLnNob3cpOgorICAgICAgICAoVGVtcGxhdGUucHJvdG90
eXBlLml0ZW1Db3VudGVyKToKKyAgICAgICAgKFRlbXBsYXRlLnByb3RvdHlwZS5jbGVhckNvbXBs
ZXRlZEJ1dHRvbik6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFu
aWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9zcmMvdG9kby5qczogQWRkZWQuCisg
ICAgICAgIChsZXQudG9kby5jb25zdC5zdWJzY3JpYmVycyk6CisgICAgICAgICh1cGRhdGVUb2Rv
KToKKyAgICAgICAgKHN1YnNjcmliZS5zdWJzY3JpYmVycy5wdXNoLnJldHVybi51bnN1YnNjcmli
ZSk6CisgICAgICAgIChzdWJzY3JpYmUpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svc3JjL3ZpZXcu
anM6IEFkZGVkLgorICAgICAgICAoZnJvbS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5leHBvcnQuZGVm
YXVsdC5WaWV3KToKKyAgICAgICAgKGZyb20uc3RyaW5nX2FwcGVhcmVkX2hlcmUuZXhwb3J0LmRl
ZmF1bHQuVmlldy5wcm90b3R5cGUuX3JlbW92ZUl0ZW0pOgorICAgICAgICAoZnJvbS5zdHJpbmdf
YXBwZWFyZWRfaGVyZS5leHBvcnQuZGVmYXVsdC5WaWV3LnByb3RvdHlwZS5fY2xlYXJDb21wbGV0
ZWRCdXR0b24pOgorICAgICAgICAoZnJvbS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5leHBvcnQuZGVm
YXVsdC5WaWV3LnByb3RvdHlwZS5fZWRpdEl0ZW1Eb25lKToKKyAgICAgICAgKGZyb20uc3RyaW5n
X2FwcGVhcmVkX2hlcmUuZXhwb3J0LmRlZmF1bHQuVmlldy5wcm90b3R5cGUucmVuZGVyLnRoYXQu
dGhpcy52aWV3Q29tbWFuZHMuc2hvd0VudHJpZXMpOgorICAgICAgICAoZnJvbS5zdHJpbmdfYXBw
ZWFyZWRfaGVyZS5leHBvcnQuZGVmYXVsdC5WaWV3LnByb3RvdHlwZS5yZW5kZXIudGhhdC50aGlz
LnZpZXdDb21tYW5kcy5yZW1vdmVJdGVtKToKKyAgICAgICAgKGZyb20uc3RyaW5nX2FwcGVhcmVk
X2hlcmUuZXhwb3J0LmRlZmF1bHQuVmlldy5wcm90b3R5cGUucmVuZGVyLnRoYXQudGhpcy52aWV3
Q29tbWFuZHMudXBkYXRlRWxlbWVudENvdW50KToKKyAgICAgICAgKGZyb20uc3RyaW5nX2FwcGVh
cmVkX2hlcmUuZXhwb3J0LmRlZmF1bHQuVmlldy5wcm90b3R5cGUucmVuZGVyLnRoYXQudGhpcy52
aWV3Q29tbWFuZHMuY2xlYXJDb21wbGV0ZWRCdXR0b24pOgorICAgICAgICAoZnJvbS5zdHJpbmdf
YXBwZWFyZWRfaGVyZS5leHBvcnQuZGVmYXVsdC5WaWV3LnByb3RvdHlwZS5yZW5kZXIudGhhdC50
aGlzLnZpZXdDb21tYW5kcy5jb250ZW50QmxvY2tWaXNpYmlsaXR5KToKKyAgICAgICAgKGZyb20u
c3RyaW5nX2FwcGVhcmVkX2hlcmUuZXhwb3J0LmRlZmF1bHQuVmlldy5wcm90b3R5cGUucmVuZGVy
LnRoYXQudGhpcy52aWV3Q29tbWFuZHMudG9nZ2xlQWxsKToKKyAgICAgICAgKGZyb20uc3RyaW5n
X2FwcGVhcmVkX2hlcmUuZXhwb3J0LmRlZmF1bHQuVmlldy5wcm90b3R5cGUucmVuZGVyLnRoYXQu
dGhpcy52aWV3Q29tbWFuZHMuc2V0RmlsdGVyKToKKyAgICAgICAgKGZyb20uc3RyaW5nX2FwcGVh
cmVkX2hlcmUuZXhwb3J0LmRlZmF1bHQuVmlldy5wcm90b3R5cGUucmVuZGVyLnRoYXQudGhpcy52
aWV3Q29tbWFuZHMuY2xlYXJOZXdUb2RvKToKKyAgICAgICAgKGZyb20uc3RyaW5nX2FwcGVhcmVk
X2hlcmUuZXhwb3J0LmRlZmF1bHQuVmlldy5wcm90b3R5cGUucmVuZGVyLnRoYXQudGhpcy52aWV3
Q29tbWFuZHMuZWxlbWVudENvbXBsZXRlKToKKyAgICAgICAgKGZyb20uc3RyaW5nX2FwcGVhcmVk
X2hlcmUuZXhwb3J0LmRlZmF1bHQuVmlldy5wcm90b3R5cGUucmVuZGVyLnRoYXQudGhpcy52aWV3
Q29tbWFuZHMuZWRpdEl0ZW0pOgorICAgICAgICAoZnJvbS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5l
eHBvcnQuZGVmYXVsdC5WaWV3LnByb3RvdHlwZS5yZW5kZXIudGhhdC50aGlzLnZpZXdDb21tYW5k
cy5lZGl0SXRlbURvbmUpOgorICAgICAgICAoZnJvbS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5leHBv
cnQuZGVmYXVsdC5WaWV3LnByb3RvdHlwZS5yZW5kZXIpOgorICAgICAgICAoZnJvbS5zdHJpbmdf
YXBwZWFyZWRfaGVyZS5leHBvcnQuZGVmYXVsdC5WaWV3LnByb3RvdHlwZS5fYmluZEl0ZW1FZGl0
RG9uZSk6CisgICAgICAgIChmcm9tLnN0cmluZ19hcHBlYXJlZF9oZXJlLmV4cG9ydC5kZWZhdWx0
LlZpZXcucHJvdG90eXBlLl9iaW5kSXRlbUVkaXRDYW5jZWwpOgorICAgICAgICAoZnJvbS5zdHJp
bmdfYXBwZWFyZWRfaGVyZS5leHBvcnQuZGVmYXVsdC5WaWV3LnByb3RvdHlwZS5iaW5kKToKKyAg
ICAgICAgKF9zZXRGaWx0ZXIpOgorICAgICAgICAoX2VsZW1lbnRDb21wbGV0ZSk6CisgICAgICAg
IChfZWRpdEl0ZW0pOgorICAgICAgICAoX2l0ZW1JZCk6CisgICAgICAgICogU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay93
ZWJwYWNrLmNvbmZpZy5iYWJlbC5qczogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUvaW5kZXguaHRtbDogQWRkZWQu
CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxl
cy9lczIwMTUvbm9kZV9tb2R1bGVzL3RvZG9tdmMtYXBwLWNzcy9pbmRleC5jc3M6IEFkZGVkLgor
ICAgICAgICAoaHRtbCwpOgorICAgICAgICAoYnV0dG9uKToKKyAgICAgICAgKGJvZHkpOgorICAg
ICAgICAoYnV0dG9uLCk6CisgICAgICAgICguaGlkZGVuKToKKyAgICAgICAgKC50b2RvYXBwKToK
KyAgICAgICAgKC50b2RvYXBwIGlucHV0Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyKToKKyAg
ICAgICAgKC50b2RvYXBwIGlucHV0OjotbW96LXBsYWNlaG9sZGVyKToKKyAgICAgICAgKC50b2Rv
YXBwIGlucHV0OjppbnB1dC1wbGFjZWhvbGRlcik6CisgICAgICAgICgudG9kb2FwcCBoMSk6Cisg
ICAgICAgICgubmV3LXRvZG8sKToKKyAgICAgICAgKC5uZXctdG9kbyk6CisgICAgICAgICgubWFp
bik6CisgICAgICAgIChsYWJlbFtmb3I9J3RvZ2dsZS1hbGwnXSk6CisgICAgICAgICgudG9nZ2xl
LWFsbCk6CisgICAgICAgICgudG9nZ2xlLWFsbDpiZWZvcmUpOgorICAgICAgICAoLnRvZ2dsZS1h
bGw6Y2hlY2tlZDpiZWZvcmUpOgorICAgICAgICAoLnRvZG8tbGlzdCk6CisgICAgICAgICgudG9k
by1saXN0IGxpKToKKyAgICAgICAgKC50b2RvLWxpc3QgbGk6bGFzdC1jaGlsZCk6CisgICAgICAg
ICgudG9kby1saXN0IGxpLmVkaXRpbmcpOgorICAgICAgICAoLnRvZG8tbGlzdCBsaS5lZGl0aW5n
IC5lZGl0KToKKyAgICAgICAgKC50b2RvLWxpc3QgbGkuZWRpdGluZyAudmlldyk6CisgICAgICAg
ICgudG9kby1saXN0IGxpIC50b2dnbGUpOgorICAgICAgICAoLnRvZG8tbGlzdCBsaSAudG9nZ2xl
OmFmdGVyKToKKyAgICAgICAgKC50b2RvLWxpc3QgbGkgLnRvZ2dsZTpjaGVja2VkOmFmdGVyKToK
KyAgICAgICAgKC50b2RvLWxpc3QgbGkgbGFiZWwpOgorICAgICAgICAoLnRvZG8tbGlzdCBsaS5j
b21wbGV0ZWQgbGFiZWwpOgorICAgICAgICAoLnRvZG8tbGlzdCBsaSAuZGVzdHJveSk6CisgICAg
ICAgICgudG9kby1saXN0IGxpIC5kZXN0cm95OmhvdmVyKToKKyAgICAgICAgKC50b2RvLWxpc3Qg
bGkgLmRlc3Ryb3k6YWZ0ZXIpOgorICAgICAgICAoLnRvZG8tbGlzdCBsaTpob3ZlciAuZGVzdHJv
eSk6CisgICAgICAgICgudG9kby1saXN0IGxpIC5lZGl0KToKKyAgICAgICAgKC50b2RvLWxpc3Qg
bGkuZWRpdGluZzpsYXN0LWNoaWxkKToKKyAgICAgICAgKC5mb290ZXIpOgorICAgICAgICAoLmZv
b3RlcjpiZWZvcmUpOgorICAgICAgICAoLnRvZG8tY291bnQpOgorICAgICAgICAoLnRvZG8tY291
bnQgc3Ryb25nKToKKyAgICAgICAgKC5maWx0ZXJzKToKKyAgICAgICAgKC5maWx0ZXJzIGxpKToK
KyAgICAgICAgKC5maWx0ZXJzIGxpIGEpOgorICAgICAgICAoLmZpbHRlcnMgbGkgYS5zZWxlY3Rl
ZCwpOgorICAgICAgICAoLmZpbHRlcnMgbGkgYS5zZWxlY3RlZCk6CisgICAgICAgICguY2xlYXIt
Y29tcGxldGVkLCk6CisgICAgICAgICguY2xlYXItY29tcGxldGVkOmhvdmVyKToKKyAgICAgICAg
KC5pbmZvKToKKyAgICAgICAgKC5pbmZvIHApOgorICAgICAgICAoLmluZm8gYSk6CisgICAgICAg
ICguaW5mbyBhOmhvdmVyKToKKyAgICAgICAgKEBtZWRpYSBzY3JlZW4gYW5kICgtd2Via2l0LW1p
bi1kZXZpY2UtcGl4ZWwtcmF0aW86MCkpOgorICAgICAgICAoLnRvZ2dsZS1hbGwsKToKKyAgICAg
ICAgKEBtZWRpYSAobWF4LXdpZHRoOiA0MzBweCkpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1L25vZGVfbW9kdWxlcy90b2Rv
bXZjLWFwcC1jc3MvcGFja2FnZS5qc29uOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS9ub2RlX21vZHVsZXMvdG9k
b212Yy1hcHAtY3NzL3JlYWRtZS5tZDogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUvbm9kZV9tb2R1bGVzL3RvZG9t
dmMtY29tbW9uL2Jhc2UuY3NzOiBBZGRlZC4KKyAgICAgICAgKGhyKToKKyAgICAgICAgKC5sZWFy
biBhKToKKyAgICAgICAgKC5sZWFybiBhOmhvdmVyKToKKyAgICAgICAgKC5sZWFybiBoMywpOgor
ICAgICAgICAoLmxlYXJuIGgzKToKKyAgICAgICAgKC5sZWFybiBoNCk6CisgICAgICAgICgubGVh
cm4gaDUpOgorICAgICAgICAoLmxlYXJuIHVsKToKKyAgICAgICAgKC5sZWFybiBsaSk6CisgICAg
ICAgICgubGVhcm4gcCk6CisgICAgICAgICgjaXNzdWUtY291bnQpOgorICAgICAgICAoLnF1b3Rl
KToKKyAgICAgICAgKC5xdW90ZSBwKToKKyAgICAgICAgKC5xdW90ZSBwOmJlZm9yZSk6CisgICAg
ICAgICgucXVvdGUgcDphZnRlcik6CisgICAgICAgICgucXVvdGUgZm9vdGVyKToKKyAgICAgICAg
KC5xdW90ZSBmb290ZXIgaW1nKToKKyAgICAgICAgKC5xdW90ZSBmb290ZXIgYSk6CisgICAgICAg
ICguc3BlZWNoLWJ1YmJsZSk6CisgICAgICAgICguc3BlZWNoLWJ1YmJsZTphZnRlcik6CisgICAg
ICAgICgubGVhcm4tYmFyID4gLmxlYXJuKToKKyAgICAgICAgKEBtZWRpYSAobWluLXdpZHRoOiA4
OTlweCkpOgorICAgICAgICAoLmxlYXJuLWJhcik6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUvbm9kZV9tb2R1bGVzL3RvZG9t
dmMtY29tbW9uL2Jhc2UuanM6IENvcGllZCBmcm9tIFBlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZGVwZW5kZW5jeS1leGFtcGxlcy9mbGlnaHQvYm93ZXJfY29t
cG9uZW50cy90b2RvbXZjLWNvbW1vbi9iYXNlLmpzLgorICAgICAgICAoXy5kZWZhdWx0cyk6Cisg
ICAgICAgICh0ZW1wbGF0ZSk6CisgICAgICAgIChlc2NhcGVyLl8udGVtcGxhdGUpOgorICAgICAg
ICAoXyk6CisgICAgICAgIChsb2NhdGlvbi5ob3N0bmFtZS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5p
LnIuaS5yKToKKyAgICAgICAgKHJlZGlyZWN0KToKKyAgICAgICAgKGZpbmRSb290KToKKyAgICAg
ICAgKHhoci5vbmxvYWQpOgorICAgICAgICAoZ2V0RmlsZSk6CisgICAgICAgIChMZWFybik6Cisg
ICAgICAgIChMZWFybi5wcm90b3R5cGUuYXBwZW5kKToKKyAgICAgICAgKExlYXJuLnByb3RvdHlw
ZS5mZXRjaElzc3VlQ291bnQpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1L25vZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1vbi9w
YWNrYWdlLmpzb246IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1L25vZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1vbi9y
ZWFkbWUubWQ6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1L3BhY2thZ2UuanNvbjogQWRkZWQuCisgICAgICAgICog
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUvc3Jj
Ly5qc2hpbnRyYzogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUvc3JjL2FwcC5qczogQWRkZWQuCisgICAgICAgIChU
b2RvKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4
YW1wbGVzL2VzMjAxNS9zcmMvY29udHJvbGxlci5qczogQWRkZWQuCisgICAgICAgIChDb250cm9s
bGVyKToKKyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLnNldFZpZXcpOgorICAgICAgICAo
Q29udHJvbGxlci5wcm90b3R5cGUuc2hvd0FsbCk6CisgICAgICAgIChDb250cm9sbGVyLnByb3Rv
dHlwZS5zaG93QWN0aXZlKToKKyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLnNob3dDb21w
bGV0ZWQpOgorICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUuYWRkSXRlbSk6CisgICAgICAg
IChDb250cm9sbGVyLnByb3RvdHlwZS5lZGl0SXRlbSk6CisgICAgICAgIChDb250cm9sbGVyLnBy
b3RvdHlwZS5lZGl0SXRlbVNhdmUpOgorICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUuZWRp
dEl0ZW1DYW5jZWwpOgorICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUucmVtb3ZlSXRlbSk6
CisgICAgICAgIChDb250cm9sbGVyLnByb3RvdHlwZS5yZW1vdmVDb21wbGV0ZWRJdGVtcyk6Cisg
ICAgICAgIChDb250cm9sbGVyLnByb3RvdHlwZS50b2dnbGVDb21wbGV0ZSk6CisgICAgICAgIChD
b250cm9sbGVyLnByb3RvdHlwZS50b2dnbGVBbGwpOgorICAgICAgICAoQ29udHJvbGxlci5wcm90
b3R5cGUuX3VwZGF0ZUNvdW50KToKKyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLl9maWx0
ZXIpOgorICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUuX3VwZGF0ZUZpbHRlcik6CisgICAg
ICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIw
MTUvc3JjL2hlbHBlcnMuanM6IEFkZGVkLgorICAgICAgICAocXMpOgorICAgICAgICAocXNhKToK
KyAgICAgICAgKG9uKToKKyAgICAgICAgKGRlbGVnYXRlKToKKyAgICAgICAgKHBhcmVudCk6Cisg
ICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9l
czIwMTUvc3JjL21vZGVsLmpzOiBBZGRlZC4KKyAgICAgICAgKE1vZGVsKToKKyAgICAgICAgKE1v
ZGVsLnByb3RvdHlwZS5jcmVhdGUpOgorICAgICAgICAoTW9kZWwucHJvdG90eXBlLnJlYWQpOgor
ICAgICAgICAoTW9kZWwucHJvdG90eXBlLnVwZGF0ZSk6CisgICAgICAgIChNb2RlbC5wcm90b3R5
cGUucmVtb3ZlKToKKyAgICAgICAgKE1vZGVsLnByb3RvdHlwZS5yZW1vdmVBbGwpOgorICAgICAg
ICAoTW9kZWwucHJvdG90eXBlLmdldENvdW50KToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS9zcmMvc3RvcmUuanM6IEFkZGVk
LgorICAgICAgICAoU3RvcmUpOgorICAgICAgICAoU3RvcmUucHJvdG90eXBlLmZpbmQpOgorICAg
ICAgICAoU3RvcmUucHJvdG90eXBlLmZpbmRBbGwpOgorICAgICAgICAoU3RvcmUucHJvdG90eXBl
LnNhdmUpOgorICAgICAgICAoU3RvcmUucHJvdG90eXBlLnJlbW92ZSk6CisgICAgICAgIChTdG9y
ZS5wcm90b3R5cGUuZHJvcCk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUvc3JjL3RlbXBsYXRlLmpzOiBBZGRlZC4KKyAgICAg
ICAgKFRlbXBsYXRlLnRoaXMuZGVmYXVsdFRlbXBsYXRlLmxpLmRhdGEuaWQuc3RyaW5nX2FwcGVh
cmVkX2hlcmUuZGl2LmlucHV0KToKKyAgICAgICAgKFRlbXBsYXRlLnRoaXMuZGVmYXVsdFRlbXBs
YXRlLmxpLmRhdGEuaWQuc3RyaW5nX2FwcGVhcmVkX2hlcmUuZGl2KToKKyAgICAgICAgKFRlbXBs
YXRlLnByb3RvdHlwZS5zaG93KToKKyAgICAgICAgKFRlbXBsYXRlLnByb3RvdHlwZS5pdGVtQ291
bnRlcik6CisgICAgICAgIChUZW1wbGF0ZS5wcm90b3R5cGUuY2xlYXJDb21wbGV0ZWRCdXR0b24p
OgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBs
ZXMvZXMyMDE1L3NyYy92aWV3LmpzOiBBZGRlZC4KKyAgICAgICAgKGxldC5fZWxlbWVudENvbXBs
ZXRlKToKKyAgICAgICAgKGxldC5fZWRpdEl0ZW0pOgorICAgICAgICAoVmlldyk6CisgICAgICAg
IChWaWV3LnByb3RvdHlwZS5fcmVtb3ZlSXRlbSk6CisgICAgICAgIChWaWV3LnByb3RvdHlwZS5f
Y2xlYXJDb21wbGV0ZWRCdXR0b24pOgorICAgICAgICAoVmlldy5wcm90b3R5cGUuX2VkaXRJdGVt
RG9uZSk6CisgICAgICAgIChWaWV3LnByb3RvdHlwZS5yZW5kZXIpOgorICAgICAgICAoVmlldy5w
cm90b3R5cGUuX2JpbmRJdGVtRWRpdERvbmUpOgorICAgICAgICAoVmlldy5wcm90b3R5cGUuX2Jp
bmRJdGVtRWRpdENhbmNlbCk6CisgICAgICAgIChWaWV3LnByb3RvdHlwZS5iaW5kKToKKyAgICAg
ICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3Zhbmls
bGFqcy9ib3dlci5qc29uOiBSZW1vdmVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL2Jvd2VyX2NvbXBvbmVudHMvdG9k
b212Yy1jb21tb24vYmFzZS5jc3M6IFJlbW92ZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvYm93ZXJfY29tcG9uZW50
cy90b2RvbXZjLWNvbW1vbi9iYXNlLmpzOiBSZW1vdmVkLgorICAgICAgICAqIFNwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL2Jvd2VyX2NvbXBv
bmVudHMvdG9kb212Yy1jb21tb24vYmcucG5nOiBSZW1vdmVkLgorICAgICAgICAqIFNwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL2luZGV4Lmh0
bWw6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFt
cGxlcy92YW5pbGxhanMvanMvYXBwLmpzOgorICAgICAgICAoVG9kbyk6CisgICAgICAgIChzZXRW
aWV3KToKKyAgICAgICAgKGxvb2t1cElkKTogRGVsZXRlZC4KKyAgICAgICAgKHRhcmdldC5jbGFz
c05hbWUuaW5kZXhPZik6IERlbGV0ZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvanMvY29udHJvbGxlci5qczoKKyAg
ICAgICAgKENvbnRyb2xsZXIpOgorICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUuc2V0Vmll
dyk6CisgICAgICAgIChDb250cm9sbGVyLnByb3RvdHlwZS5zaG93QWxsKToKKyAgICAgICAgKENv
bnRyb2xsZXIucHJvdG90eXBlLnNob3dBY3RpdmUpOgorICAgICAgICAoQ29udHJvbGxlci5wcm90
b3R5cGUuc2hvd0NvbXBsZXRlZCk6CisgICAgICAgIChDb250cm9sbGVyLnByb3RvdHlwZS5hZGRJ
dGVtKToKKyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLmVkaXRJdGVtKToKKyAgICAgICAg
KENvbnRyb2xsZXIucHJvdG90eXBlLmVkaXRJdGVtU2F2ZSk6CisgICAgICAgIChDb250cm9sbGVy
LnByb3RvdHlwZS5lZGl0SXRlbUNhbmNlbCk6CisgICAgICAgIChDb250cm9sbGVyLnByb3RvdHlw
ZS5yZW1vdmVJdGVtKToKKyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLnJlbW92ZUNvbXBs
ZXRlZEl0ZW1zKToKKyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLnRvZ2dsZUNvbXBsZXRl
KToKKyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLnRvZ2dsZUFsbCk6CisgICAgICAgIChD
b250cm9sbGVyLnByb3RvdHlwZS5fdXBkYXRlQ291bnQpOgorICAgICAgICAoQ29udHJvbGxlci5w
cm90b3R5cGUuX2ZpbHRlcik6CisgICAgICAgIChDb250cm9sbGVyLnByb3RvdHlwZS5fdXBkYXRl
RmlsdGVyU3RhdGUpOgorICAgICAgICAob25TYXZlSGFuZGxlcik6IERlbGV0ZWQuCisgICAgICAg
IChDb250cm9sbGVyLnByb3RvdHlwZS5fdG9nZ2xlRnJhbWUpOiBEZWxldGVkLgorICAgICAgICAo
Q29udHJvbGxlci5wcm90b3R5cGUuX2dldEN1cnJlbnRQYWdlKTogRGVsZXRlZC4KKyAgICAgICAg
KiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFq
cy9qcy9oZWxwZXJzLmpzOgorICAgICAgICAod2luZG93LnFzKToKKyAgICAgICAgKHdpbmRvdy5x
c2EpOgorICAgICAgICAod2luZG93Lm9uKToKKyAgICAgICAgKHdpbmRvdy5kZWxlZ2F0ZSk6Cisg
ICAgICAgICh3aW5kb3cucGFyZW50KToKKyAgICAgICAgKE9iamVjdC5wcm90b3R5cGUuZWFjaCk6
IERlbGV0ZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxs
YS1leGFtcGxlcy92YW5pbGxhanMvanMvbW9kZWwuanM6CisgICAgICAgIChNb2RlbCk6CisgICAg
ICAgIChNb2RlbC5wcm90b3R5cGUuY3JlYXRlKToKKyAgICAgICAgKE1vZGVsLnByb3RvdHlwZS5y
ZWFkKToKKyAgICAgICAgKE1vZGVsLnByb3RvdHlwZS51cGRhdGUpOgorICAgICAgICAoTW9kZWwu
cHJvdG90eXBlLnJlbW92ZSk6CisgICAgICAgIChNb2RlbC5wcm90b3R5cGUucmVtb3ZlQWxsKToK
KyAgICAgICAgKE1vZGVsLnByb3RvdHlwZS5nZXRDb3VudCk6CisgICAgICAgICogU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvanMvc3RvcmUu
anM6CisgICAgICAgIChTdG9yZS5wcm90b3R5cGUuZmluZCk6CisgICAgICAgIChTdG9yZS5wcm90
b3R5cGUuZmluZEFsbCk6CisgICAgICAgIChTdG9yZS5wcm90b3R5cGUuc2F2ZSk6CisgICAgICAg
IChTdG9yZS5wcm90b3R5cGUucmVtb3ZlKToKKyAgICAgICAgKFN0b3JlLnByb3RvdHlwZS5kcm9w
KToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1w
bGVzL3ZhbmlsbGFqcy9qcy90ZW1wbGF0ZS5qczogQWRkZWQuCisgICAgICAgIChlc2NhcGVIdG1s
Q2hhcik6CisgICAgICAgIChlc2NhcGUpOgorICAgICAgICAoVGVtcGxhdGUpOgorICAgICAgICAo
VGVtcGxhdGUucHJvdG90eXBlLnNob3cpOgorICAgICAgICAoVGVtcGxhdGUucHJvdG90eXBlLml0
ZW1Db3VudGVyKToKKyAgICAgICAgKFRlbXBsYXRlLnByb3RvdHlwZS5jbGVhckNvbXBsZXRlZEJ1
dHRvbik6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1l
eGFtcGxlcy92YW5pbGxhanMvanMvdmlldy5qczoKKyAgICAgICAgKFZpZXcpOgorICAgICAgICAo
Vmlldy5wcm90b3R5cGUuX3JlbW92ZUl0ZW0pOgorICAgICAgICAoVmlldy5wcm90b3R5cGUuX2Ns
ZWFyQ29tcGxldGVkQnV0dG9uKToKKyAgICAgICAgKFZpZXcucHJvdG90eXBlLl9zZXRGaWx0ZXIp
OgorICAgICAgICAoVmlldy5wcm90b3R5cGUuX2VsZW1lbnRDb21wbGV0ZSk6CisgICAgICAgIChW
aWV3LnByb3RvdHlwZS5fZWRpdEl0ZW0pOgorICAgICAgICAoVmlldy5wcm90b3R5cGUuX2VkaXRJ
dGVtRG9uZSk6CisgICAgICAgICh2aWV3Q29tbWFuZHMuc2hvd0VudHJpZXMpOgorICAgICAgICAo
dmlld0NvbW1hbmRzLnJlbW92ZUl0ZW0pOgorICAgICAgICAodmlld0NvbW1hbmRzLnVwZGF0ZUVs
ZW1lbnRDb3VudCk6CisgICAgICAgICh2aWV3Q29tbWFuZHMuY2xlYXJDb21wbGV0ZWRCdXR0b24p
OgorICAgICAgICAodmlld0NvbW1hbmRzLmNvbnRlbnRCbG9ja1Zpc2liaWxpdHkpOgorICAgICAg
ICAodmlld0NvbW1hbmRzLnRvZ2dsZUFsbCk6CisgICAgICAgICh2aWV3Q29tbWFuZHMuc2V0Rmls
dGVyKToKKyAgICAgICAgKHZpZXdDb21tYW5kcy5jbGVhck5ld1RvZG8pOgorICAgICAgICAodmll
d0NvbW1hbmRzLmVsZW1lbnRDb21wbGV0ZSk6CisgICAgICAgICh2aWV3Q29tbWFuZHMuZWRpdEl0
ZW0pOgorICAgICAgICAodmlld0NvbW1hbmRzLmVkaXRJdGVtRG9uZSk6CisgICAgICAgIChWaWV3
LnByb3RvdHlwZS5yZW5kZXIpOgorICAgICAgICAoVmlldy5wcm90b3R5cGUuX2l0ZW1JZCk6Cisg
ICAgICAgIChWaWV3LnByb3RvdHlwZS5fYmluZEl0ZW1FZGl0RG9uZSk6CisgICAgICAgIChWaWV3
LnByb3RvdHlwZS5fYmluZEl0ZW1FZGl0Q2FuY2VsKToKKyAgICAgICAgKFZpZXcucHJvdG90eXBl
LmJpbmQpOgorICAgICAgICAoVmlldy5wcm90b3R5cGUuc2hvdyk6IERlbGV0ZWQuCisgICAgICAg
IChWaWV3LnByb3RvdHlwZS5pdGVtQ291bnRlcik6IERlbGV0ZWQuCisgICAgICAgIChWaWV3LnBy
b3RvdHlwZS5jbGVhckNvbXBsZXRlZEJ1dHRvbik6IERlbGV0ZWQuCisgICAgICAgICogU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvbm9kZV9t
b2R1bGVzL3RvZG9tdmMtYXBwLWNzcy9pbmRleC5jc3M6IEFkZGVkLgorICAgICAgICAoaHRtbCwp
OgorICAgICAgICAoYnV0dG9uKToKKyAgICAgICAgKGJvZHkpOgorICAgICAgICAoYnV0dG9uLCk6
CisgICAgICAgICguaGlkZGVuKToKKyAgICAgICAgKC50b2RvYXBwKToKKyAgICAgICAgKC50b2Rv
YXBwIGlucHV0Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyKToKKyAgICAgICAgKC50b2RvYXBw
IGlucHV0OjotbW96LXBsYWNlaG9sZGVyKToKKyAgICAgICAgKC50b2RvYXBwIGlucHV0OjppbnB1
dC1wbGFjZWhvbGRlcik6CisgICAgICAgICgudG9kb2FwcCBoMSk6CisgICAgICAgICgubmV3LXRv
ZG8sKToKKyAgICAgICAgKC5uZXctdG9kbyk6CisgICAgICAgICgubWFpbik6CisgICAgICAgIChs
YWJlbFtmb3I9J3RvZ2dsZS1hbGwnXSk6CisgICAgICAgICgudG9nZ2xlLWFsbCk6CisgICAgICAg
ICgudG9nZ2xlLWFsbDpiZWZvcmUpOgorICAgICAgICAoLnRvZ2dsZS1hbGw6Y2hlY2tlZDpiZWZv
cmUpOgorICAgICAgICAoLnRvZG8tbGlzdCk6CisgICAgICAgICgudG9kby1saXN0IGxpKToKKyAg
ICAgICAgKC50b2RvLWxpc3QgbGk6bGFzdC1jaGlsZCk6CisgICAgICAgICgudG9kby1saXN0IGxp
LmVkaXRpbmcpOgorICAgICAgICAoLnRvZG8tbGlzdCBsaS5lZGl0aW5nIC5lZGl0KToKKyAgICAg
ICAgKC50b2RvLWxpc3QgbGkuZWRpdGluZyAudmlldyk6CisgICAgICAgICgudG9kby1saXN0IGxp
IC50b2dnbGUpOgorICAgICAgICAoLnRvZG8tbGlzdCBsaSAudG9nZ2xlOmFmdGVyKToKKyAgICAg
ICAgKC50b2RvLWxpc3QgbGkgLnRvZ2dsZTpjaGVja2VkOmFmdGVyKToKKyAgICAgICAgKC50b2Rv
LWxpc3QgbGkgbGFiZWwpOgorICAgICAgICAoLnRvZG8tbGlzdCBsaS5jb21wbGV0ZWQgbGFiZWwp
OgorICAgICAgICAoLnRvZG8tbGlzdCBsaSAuZGVzdHJveSk6CisgICAgICAgICgudG9kby1saXN0
IGxpIC5kZXN0cm95OmhvdmVyKToKKyAgICAgICAgKC50b2RvLWxpc3QgbGkgLmRlc3Ryb3k6YWZ0
ZXIpOgorICAgICAgICAoLnRvZG8tbGlzdCBsaTpob3ZlciAuZGVzdHJveSk6CisgICAgICAgICgu
dG9kby1saXN0IGxpIC5lZGl0KToKKyAgICAgICAgKC50b2RvLWxpc3QgbGkuZWRpdGluZzpsYXN0
LWNoaWxkKToKKyAgICAgICAgKC5mb290ZXIpOgorICAgICAgICAoLmZvb3RlcjpiZWZvcmUpOgor
ICAgICAgICAoLnRvZG8tY291bnQpOgorICAgICAgICAoLnRvZG8tY291bnQgc3Ryb25nKToKKyAg
ICAgICAgKC5maWx0ZXJzKToKKyAgICAgICAgKC5maWx0ZXJzIGxpKToKKyAgICAgICAgKC5maWx0
ZXJzIGxpIGEpOgorICAgICAgICAoLmZpbHRlcnMgbGkgYS5zZWxlY3RlZCwpOgorICAgICAgICAo
LmZpbHRlcnMgbGkgYS5zZWxlY3RlZCk6CisgICAgICAgICguY2xlYXItY29tcGxldGVkLCk6Cisg
ICAgICAgICguY2xlYXItY29tcGxldGVkOmhvdmVyKToKKyAgICAgICAgKC5pbmZvKToKKyAgICAg
ICAgKC5pbmZvIHApOgorICAgICAgICAoLmluZm8gYSk6CisgICAgICAgICguaW5mbyBhOmhvdmVy
KToKKyAgICAgICAgKEBtZWRpYSBzY3JlZW4gYW5kICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwt
cmF0aW86MCkpOgorICAgICAgICAoLnRvZ2dsZS1hbGwsKToKKyAgICAgICAgKEBtZWRpYSAobWF4
LXdpZHRoOiA0MzBweCkpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL25vZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1vbi9i
YXNlLmNzczogQWRkZWQuCisgICAgICAgIChocik6CisgICAgICAgICgubGVhcm4gYSk6CisgICAg
ICAgICgubGVhcm4gYTpob3Zlcik6CisgICAgICAgICgubGVhcm4gaDMsKToKKyAgICAgICAgKC5s
ZWFybiBoMyk6CisgICAgICAgICgubGVhcm4gaDQpOgorICAgICAgICAoLmxlYXJuIGg1KToKKyAg
ICAgICAgKC5sZWFybiB1bCk6CisgICAgICAgICgubGVhcm4gbGkpOgorICAgICAgICAoLmxlYXJu
IHApOgorICAgICAgICAoI2lzc3VlLWNvdW50KToKKyAgICAgICAgKC5xdW90ZSk6CisgICAgICAg
ICgucXVvdGUgcCk6CisgICAgICAgICgucXVvdGUgcDpiZWZvcmUpOgorICAgICAgICAoLnF1b3Rl
IHA6YWZ0ZXIpOgorICAgICAgICAoLnF1b3RlIGZvb3Rlcik6CisgICAgICAgICgucXVvdGUgZm9v
dGVyIGltZyk6CisgICAgICAgICgucXVvdGUgZm9vdGVyIGEpOgorICAgICAgICAoLnNwZWVjaC1i
dWJibGUpOgorICAgICAgICAoLnNwZWVjaC1idWJibGU6YWZ0ZXIpOgorICAgICAgICAoLmxlYXJu
LWJhciA+IC5sZWFybik6CisgICAgICAgIChAbWVkaWEgKG1pbi13aWR0aDogODk5cHgpKToKKyAg
ICAgICAgKC5sZWFybi1iYXIpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL25vZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1v
bi9iYXNlLmpzOiBSZW5hbWVkIGZyb20gUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9kZXBlbmRlbmN5LWV4YW1wbGVzL2ZsaWdodC9ib3dlcl9jb21wb25lbnRz
L3RvZG9tdmMtY29tbW9uL2Jhc2UuanMuCisgICAgICAgIChsb2NhdGlvbi5ob3N0bmFtZS5zdHJp
bmdfYXBwZWFyZWRfaGVyZS5pLnIuaS5yKToKKyAgICAgICAgKGZpbmRSb290KToKKyAgICAgICAg
KExlYXJuKToKKyAgICAgICAgKExlYXJuLnByb3RvdHlwZS5hcHBlbmQpOgorICAgICAgICAoeGhy
Lm9ubG9hZCk6CisgICAgICAgIChMZWFybi5wcm90b3R5cGUuZmV0Y2hJc3N1ZUNvdW50KToKKyAg
ICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3Zh
bmlsbGFqcy9wYWNrYWdlLmpzb246IEFkZGVkLgorCiAyMDE3LTA0LTE3ICBSeWFuIEhhZGRhZCAg
PHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0
IHIyMTUzNjYuCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL0Z1bGwu
aHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvRnVsbC5odG1sCmluZGV4IDQxOWI5
ZjIxZGQ3ZmUxZDgzZjVjNjM2NDQzNGNkZGM3NTJkZmY4MmIuLmEwMjM4ODM3MGNmNjM5NTg0NGFh
YWY5OWZkMWVhNzc4NTUzMjU1ZDUgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvRnVsbC5odG1sCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvRnVsbC5o
dG1sCkBAIC0yLDcgKzIsNyBAQAogPGh0bWw+CiA8aGVhZD4KICAgICA8bWV0YSBodHRwLWVxdWl2
PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Ci0gICAg
PHRpdGxlPlNwZWVkb21ldGVyIDEuMDwvdGl0bGU+CisgICAgPHRpdGxlPlNwZWVkb21ldGVyIDIu
MDwvdGl0bGU+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvbWFp
bi5jc3MiPgogICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvbWFpbi5qcyIgZGVmZXI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9iZW5jaG1hcmstcnVubmVyLmpzIiBkZWZl
cj48L3NjcmlwdD4KQEAgLTE2LDcgKzE2LDcgQEAKIAogICAgIDxzZWN0aW9uIGlkPSJob21lIiBj
bGFzcz0ic2VsZWN0ZWQiPgogICAgICAgICA8cD4KLSAgICAgICAgICAgIFNwZWVkb21ldGVyIGlz
IGEgYnJvd3NlciBiZW5jaG1hcmsgdGhhdCBtZWFzdXJlcyB0aGUgcmVzcG9uc2l2ZW5lc3Mgb2Yg
V2ViIGFwcGxpY2F0aW9ucy4KKyAgICAgICAgICAgIFNwZWVkb21ldGVyIDIuMCBpcyBhIGJyb3dz
ZXIgYmVuY2htYXJrIHRoYXQgbWVhc3VyZXMgdGhlIHJlc3BvbnNpdmVuZXNzIG9mIFdlYiBhcHBs
aWNhdGlvbnMuCiAgICAgICAgICAgICBJdCB1c2VzIGRlbW8gd2ViIGFwcGxpY2F0aW9ucyB0byBz
aW11bGF0ZSB1c2VyIGFjdGlvbnMgc3VjaCBhcyBhZGRpbmcgdG8tZG8gaXRlbXMuCiAgICAgICAg
IDwvcD4KICAgICAgICAgPHAgaWQ9InNjcmVlbi1zaXplLXdhcm5pbmciPjxzdHJvbmc+CkBAIC02
OCw3ICs2OCw3IEBACiAgICAgICAgICAgICBUaGUgY3VycmVudCBiZW5jaG1hcmsgdXNlcyBUb2Rv
TVZDIHRvIHNpbXVsYXRlIHVzZXIgYWN0aW9ucyBmb3IgYWRkaW5nLCBjb21wbGV0aW5nLCBhbmQg
cmVtb3ZpbmcgdG8tZG8gaXRlbXMuCiAgICAgICAgICAgICBTcGVlZG9tZXRlciByZXBlYXRzIHRo
ZSBzYW1lIGFjdGlvbnMgdXNpbmcgRE9NIEFQSXMgJm1kYXNoOwogICAgICAgICAgICAgYSBjb3Jl
IHNldCBvZiB3ZWIgcGxhdGZvcm0gQVBJcyB1c2VkIGV4dGVuc2l2ZWx5IGluIHdlYiBhcHBsaWNh
dGlvbnMgJm1kYXNoOwotICAgICAgICAgICAgYXMgd2VsbCBhcyBzaXggcG9wdWxhciBKYXZhU2Ny
aXB0IGZyYW1ld29ya3M6IEVtYmVyLmpzLCBCYWNrYm9uZS5qcywgalF1ZXJ5LCBBbmd1bGFySlMs
IFJlYWN0LCBhbmQgRmxpZ2h0LgorICAgICAgICAgICAgYXMgd2VsbCBhcyBzZXZlcmFsIHBvcHVs
YXIgSmF2YVNjcmlwdCBmcmFtZXdvcmtzIGFuZCBsaWJyYXJpZXMuCiAgICAgICAgICAgICBNYW55
IG9mIHRoZXNlIGZyYW1ld29ya3MgYXJlIHVzZWQgb24gdGhlIG1vc3QgcG9wdWxhciB3ZWJzaXRl
cyBpbiB0aGUgd29ybGQsIHN1Y2ggYXMgRmFjZWJvb2sgYW5kIFR3aXR0ZXIuCiAgICAgICAgICAg
ICBUaGUgcGVyZm9ybWFuY2Ugb2YgdGhlc2UgdHlwZXMgb2Ygb3BlcmF0aW9ucyBkZXBlbmRzIG9u
IHRoZSBzcGVlZCBvZiB0aGUgRE9NIEFQSXMsIHRoZSBKYXZhU2NyaXB0IGVuZ2luZSwKICAgICAg
ICAgICAgIENTUyBzdHlsZSByZXNvbHV0aW9uLCBsYXlvdXQsIGFuZCBvdGhlciB0ZWNobm9sb2dp
ZXMuCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL0ludGVyYWN0aXZl
UnVubmVyLmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL0ludGVyYWN0aXZlUnVu
bmVyLmh0bWwKaW5kZXggOTIwNzZhNGFjYWJlN2RiY2ViOGIwYjViOWU1MzM2ODg2ZDllYzQ1NS4u
ZTk3MjBiYTkzZWE2ZTI5NzBkNGE1ODBjMDRhYmU3NGY5NWY5ZDUwZiAxMDA2NDQKLS0tIGEvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9JbnRlcmFjdGl2ZVJ1bm5lci5odG1sCisrKyBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvSW50ZXJhY3RpdmVSdW5uZXIuaHRtbApAQCAtMSw3
ICsxLDcgQEAKIDwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KLTx0aXRsZT5Eb1lvdUV2
ZW5CZW5jaDwvdGl0bGU+Cis8dGl0bGU+U3BlZWRvbWV0ZXIgMi4wIEludGVyYWN0aXZlIFJ1bm5l
cjwvdGl0bGU+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JlbmNobWFyay1ydW5uZXIuanMiIGRl
ZmVyPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy90ZXN0cy5qcyIgZGVmZXI+PC9z
Y3JpcHQ+CiA8c3R5bGU+CkBAIC0yMCw2ICsyMCwyMCBAQCBmdW5jdGlvbiBmb3JtYXRUZXN0TmFt
ZShzdWl0ZU5hbWUsIHRlc3ROYW1lKSB7CiAgICAgcmV0dXJuIHN1aXRlTmFtZSArICh0ZXN0TmFt
ZSA/ICcvJyArIHRlc3ROYW1lIDogJycpOwogfQogCit2YXIgcXVlcnlTdHJpbmcgPSAoZnVuY3Rp
b24oYSkgeworICAgIGlmIChhID09ICcnKSByZXR1cm4ge307CisgICAgdmFyIGIgPSB7fTsKKyAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IGEubGVuZ3RoOyArK2kpCisgICAgeworICAgICAgICB2YXIg
cD1hW2ldLnNwbGl0KCc9JywgMik7CisgICAgICAgIGlmIChwLmxlbmd0aCA9PSAxKQorICAgICAg
ICAgICAgYltwWzBdXSA9ICcnOworICAgICAgICBlbHNlCisgICAgICAgICAgICBiW3BbMF1dID0g
ZGVjb2RlVVJJQ29tcG9uZW50KHBbMV0ucmVwbGFjZSgvXCsvZywgJyAnKSk7CisgICAgfQorICAg
IHJldHVybiBiOworfSkod2luZG93LmxvY2F0aW9uLnNlYXJjaC5zdWJzdHIoMSkuc3BsaXQoJyYn
KSk7CisKIGZ1bmN0aW9uIGNyZWF0ZVVJRm9yU3VpdGVzKHN1aXRlcywgb25zdGVwLCBvbnJ1bikg
ewogICAgIHZhciBjb250cm9sID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbmF2Jyk7CiAgICAg
dmFyIG9sID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnb2wnKTsKQEAgLTY2LDEzICs4MCwzMCBA
QCBmdW5jdGlvbiBjcmVhdGVVSUZvclN1aXRlcyhzdWl0ZXMsIG9uc3RlcCwgb25ydW4pIHsKIAog
ICAgIHZhciBidXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTsKICAgICBi
dXR0b24udGV4dENvbnRlbnQgPSAnUnVuJzsKKyAgICBidXR0b24uaWQgPSAncnVuU3VpdGVzJzsK
ICAgICBidXR0b24ub25jbGljayA9IG9ucnVuOwogICAgIGNvbnRyb2wuYXBwZW5kQ2hpbGQoYnV0
dG9uKTsKIAogICAgIHJldHVybiBjb250cm9sOwogfQogCitmdW5jdGlvbiBkaXNhYmxlQWxsU3Vp
dGVzRXhjZXB0KHN1aXRlTmFtZSkgeworICAgIGlmIChzdWl0ZU5hbWUgIT09IHVuZGVmaW5lZCAm
JiBzdWl0ZU5hbWUgIT09ICcnKSB7CisgICAgICAgIFN1aXRlcy5mb3JFYWNoKGZ1bmN0aW9uKGVs
ZW1lbnQpIHsKKyAgICAgICAgICAgIGlmIChlbGVtZW50Lm5hbWUgIT09IHN1aXRlTmFtZSkgewor
ICAgICAgICAgICAgICAgIGVsZW1lbnQuZGlzYWJsZWQgPSB0cnVlOworICAgICAgICAgICAgfQor
ICAgICAgICB9KTsKKyAgICB9Cit9CisKIGZ1bmN0aW9uIHN0YXJ0VGVzdCgpIHsKKyAgICB2YXIg
cXVlcnlQYXJhbSA9IHF1ZXJ5U3RyaW5nWydzdWl0ZSddOworICAgIGlmIChxdWVyeVBhcmFtICE9
PSB1bmRlZmluZWQpIHsKKyAgICAgICAgLy8gUmVzZXQgYWxsIHNlbGVjdGVkIG9wdGlvbnMgZXhj
ZXB0IHNlbGVjdGlvbgorICAgICAgICBkaXNhYmxlQWxsU3VpdGVzRXhjZXB0KHF1ZXJ5UGFyYW0p
OworICAgIH0KKwogICAgIHZhciBydW5uZXIgPSBuZXcgQmVuY2htYXJrUnVubmVyKFN1aXRlcywg
ewogICAgICAgICB3aWxsUnVuVGVzdDogZnVuY3Rpb24gKHN1aXRlLCB0ZXN0KSB7CiAgICAgICAg
ICAgICB0ZXN0LmFuY2hvci5jbGFzc0xpc3QuYWRkKCdydW5uaW5nJyk7CkBAIC0xMTIsNiArMTQz
LDExIEBAIGZ1bmN0aW9uIHN0YXJ0VGVzdCgpIHsKICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENo
aWxkKGNyZWF0ZVVJRm9yU3VpdGVzKFN1aXRlcywKICAgICAgICAgZnVuY3Rpb24gKCkgeyBydW5u
ZXIuc3RlcChjdXJyZW50U3RhdGUpLnRoZW4oZnVuY3Rpb24gKHN0YXRlKSB7IGN1cnJlbnRTdGF0
ZSA9IHN0YXRlOyB9KTsgfSwKICAgICAgICAgZnVuY3Rpb24gKCkgeyBydW5uZXIucnVuQWxsU3Rl
cHMoY3VycmVudFN0YXRlKTsgY3VycmVudFN0YXRlID0gbnVsbDsgfSkpOworCisgICAgaWYgKHF1
ZXJ5UGFyYW0gIT09IHVuZGVmaW5lZCkgeworICAgICAgICAvLyBJbmRpdmlkdWFsbHkgcnVuIHRo
ZSBzcGVjaWZpZWQgdGVzdCBhdXRvbWF0aWNhbGx5CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdydW5TdWl0ZXMnKS5jbGljaygpOworICAgIH0KIH0KIAogd2luZG93LmFkZEV2ZW50
TGlzdGVuZXIoJ2xvYWQnLCBzdGFydFRlc3QpOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvbWFpbi5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL21haW4uanMKaW5kZXggYzEwN2YyNzk1ZjhlYWYxYjdiYWFlYmJjZjU5
MTc2ZmIwOGZmMWNiZC4uYzFmY2FiYzQxMTkzYTc5OGI4ZjZhZjMzMTMzMGM1MDZhMGRlZTY2NiAx
MDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvbWFpbi5q
cworKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy9tYWluLmpzCkBA
IC0xNTksNyArMTU5LDcgQEAgZnVuY3Rpb24gc3RhcnRCZW5jaG1hcmsoKSB7CiB9CiAKIGZ1bmN0
aW9uIGNvbXB1dGVTY29yZSh0aW1lKSB7Ci0gICAgcmV0dXJuIDYwICogMTAwMCAqIGJlbmNobWFy
a0NsaWVudC5zdWl0ZXNDb3VudCAvIHRpbWU7CisgICAgcmV0dXJuICgoNjAgKiAxMDAwICogYmVu
Y2htYXJrQ2xpZW50LnN1aXRlc0NvdW50IC8gdGltZSkgLyAxMCk7CiB9CiAKIGZ1bmN0aW9uIHNo
b3dTZWN0aW9uKHNlY3Rpb25JZGVudGlmaWVyLCBwdXNoU3RhdGUpIHsKZGlmZiAtLWdpdCBhL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rlc3RzLmpzIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdGVzdHMuanMKaW5kZXggZTZmMjM5Y2M5NGVh
MjQ3ZmRmYWZhOGVmMzM0YTRmY2IxNzQyODBkOS4uY2ZjMmVmNTFkZjgyMDQxMDhlMTBiNTc2YzEw
Y2U4NDc4YTY0NjgxZCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdGVzdHMuanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdGVzdHMuanMKQEAgLTEsMjEgKzEsMzYgQEAKLXZhciBudW1iZXJPZkl0ZW1zVG9BZGQg
PSAxMDA7Cit2YXIgbnVtYmVyT2ZJdGVtc1RvQWRkID0gMjU7CiB2YXIgU3VpdGVzID0gW107CiAK
K2Z1bmN0aW9uIHRyaWdnZXJLZXlib2FyZEV2ZW50KGVsLCBrZXlDb2RlKSB7CisgICB2YXIgZXZl
bnRPYmogPSBkb2N1bWVudC5jcmVhdGVFdmVudE9iamVjdCA/CisgICAgICAgZG9jdW1lbnQuY3Jl
YXRlRXZlbnRPYmplY3QoKSA6IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCJFdmVudHMiKTsKKworICAg
dmFyIHRlbXBLZXlib2FyZE9iaiA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCJLZXlib2FyZEV2ZW50
Iik7CisKKyAgIGlmIChldmVudE9iai5pbml0RXZlbnQpIHsKKyAgICAgIGV2ZW50T2JqLmluaXRF
dmVudCgia2V5ZG93biIsIHRydWUsIHRydWUpOworICAgfQorCisgICBldmVudE9iai5rZXlDb2Rl
ID0ga2V5Q29kZTsKKyAgIGV2ZW50T2JqLndoaWNoID0ga2V5Q29kZTsKKworICAgZWwuZGlzcGF0
Y2hFdmVudCA/IGVsLmRpc3BhdGNoRXZlbnQoZXZlbnRPYmopIDogZWwuZmlyZUV2ZW50KCJvbmtl
eWRvd24iLCBldmVudE9iaik7Cit9IAorCiBTdWl0ZXMucHVzaCh7CiAgICAgbmFtZTogJ1Zhbmls
bGFKUy1Ub2RvTVZDJywKICAgICB1cmw6ICd0b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxs
YWpzL2luZGV4Lmh0bWwnLAogICAgIHByZXBhcmU6IGZ1bmN0aW9uIChydW5uZXIsIGNvbnRlbnRX
aW5kb3csIGNvbnRlbnREb2N1bWVudCkgewotICAgICAgICByZXR1cm4gcnVubmVyLndhaXRGb3JF
bGVtZW50KCcjbmV3LXRvZG8nKS50aGVuKGZ1bmN0aW9uIChlbGVtZW50KSB7CisgICAgICAgIHJl
dHVybiBydW5uZXIud2FpdEZvckVsZW1lbnQoJy5uZXctdG9kbycpLnRoZW4oZnVuY3Rpb24gKGVs
ZW1lbnQpIHsKICAgICAgICAgICAgIGVsZW1lbnQuZm9jdXMoKTsKICAgICAgICAgICAgIHJldHVy
biBlbGVtZW50OwogICAgICAgICB9KTsKICAgICB9LAogICAgIHRlc3RzOiBbCiAgICAgICAgIG5l
dyBCZW5jaG1hcmtUZXN0U3RlcCgnQWRkaW5nJyArIG51bWJlck9mSXRlbXNUb0FkZCArICdJdGVt
cycsIGZ1bmN0aW9uIChuZXdUb2RvLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsK
LSAgICAgICAgICAgIHZhciB0b2RvQ29udHJvbGxlciA9IGNvbnRlbnRXaW5kb3cudG9kby5jb250
cm9sbGVyOwogICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1iZXJPZkl0ZW1zVG9B
ZGQ7IGkrKykgewogICAgICAgICAgICAgICAgIG5ld1RvZG8udmFsdWUgPSAnU29tZXRoaW5nIHRv
IGRvICcgKyBpOwotICAgICAgICAgICAgICAgIHRvZG9Db250cm9sbGVyLmFkZEl0ZW0oe2tleUNv
ZGU6IHRvZG9Db250cm9sbGVyLkVOVEVSX0tFWSwgdGFyZ2V0OiBuZXdUb2RvfSk7CisgICAgICAg
ICAgICAgICAgdHJpZ2dlcktleWJvYXJkRXZlbnQobmV3VG9kbywgMTMpOwogICAgICAgICAgICAg
fQogICAgICAgICB9KSwKICAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdDb21wbGV0aW5n
QWxsSXRlbXMnLCBmdW5jdGlvbiAobmV3VG9kbywgY29udGVudFdpbmRvdywgY29udGVudERvY3Vt
ZW50KSB7CkBAIC0zMiw0NSArNDcsMTY0IEBAIFN1aXRlcy5wdXNoKHsKIH0pOwogCiBTdWl0ZXMu
cHVzaCh7Ci0gICAgbmFtZTogJ0VtYmVySlMtVG9kb01WQycsCi0gICAgdXJsOiAndG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9pbmRleC5odG1sJywKKyAgICBuYW1lOiAnVmFu
aWxsYS1FUzIwMTUtVG9kb01WQycsCisgICAgdXJsOiAndG9kb212Yy92YW5pbGxhLWV4YW1wbGVz
L2VzMjAxNS9pbmRleC5odG1sJywKICAgICBwcmVwYXJlOiBmdW5jdGlvbiAocnVubmVyLCBjb250
ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKLSAgICAgICAgcmV0dXJuIHJ1bm5lci53YWl0
Rm9yRWxlbWVudCgnI25ldy10b2RvJykudGhlbihmdW5jdGlvbiAoZWxlbWVudCkgeworICAgICAg
ICByZXR1cm4gcnVubmVyLndhaXRGb3JFbGVtZW50KCcubmV3LXRvZG8nKS50aGVuKGZ1bmN0aW9u
IChlbGVtZW50KSB7CiAgICAgICAgICAgICBlbGVtZW50LmZvY3VzKCk7Ci0gICAgICAgICAgICBy
ZXR1cm4gewotICAgICAgICAgICAgICAgIHZpZXdzOiBjb250ZW50V2luZG93LkVtYmVyLlZpZXcu
dmlld3MsCi0gICAgICAgICAgICAgICAgZW1iZXJSdW46IGNvbnRlbnRXaW5kb3cuRW1iZXIucnVu
LAorICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgICAgIH0pOworICAgIH0sCisgICAg
dGVzdHM6IFsKKyAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdBZGRpbmcnICsgbnVtYmVy
T2ZJdGVtc1RvQWRkICsgJ0l0ZW1zJywgZnVuY3Rpb24gKG5ld1RvZG8sIGNvbnRlbnRXaW5kb3cs
IGNvbnRlbnREb2N1bWVudCkgeworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1i
ZXJPZkl0ZW1zVG9BZGQ7IGkrKykgeworICAgICAgICAgICAgICAgIG5ld1RvZG8udmFsdWUgPSAn
U29tZXRoaW5nIHRvIGRvJyArIGk7CisgICAgICAgICAgICAgICAgdHJpZ2dlcktleWJvYXJkRXZl
bnQobmV3VG9kbywgMTMpOwogICAgICAgICAgICAgfQorICAgICAgICB9KSwKKyAgICAgICAgbmV3
IEJlbmNobWFya1Rlc3RTdGVwKCdDb21wbGV0aW5nQWxsSXRlbXMnLCBmdW5jdGlvbiAocGFyYW1z
LCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgICAgIHZhciBjaGVj
a2JveGVzID0gY29udGVudERvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy50b2dnbGUnKTsKKyAg
ICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hlY2tib3hlcy5sZW5ndGg7IGkrKykKKyAg
ICAgICAgICAgICAgICBjaGVja2JveGVzW2ldLmNsaWNrKCk7CisgICAgICAgIH0pLAorICAgICAg
ICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0RlbGV0aW5nSXRlbXMnLCBmdW5jdGlvbiAocGFyYW1z
LCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgICAgIHZhciBkZWxl
dGVCdXR0b25zID0gY29udGVudERvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5kZXN0cm95Jyk7
CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRlbGV0ZUJ1dHRvbnMubGVuZ3RoOyBp
KyspCisgICAgICAgICAgICAgICAgZGVsZXRlQnV0dG9uc1tpXS5jbGljaygpOworICAgICAgICB9
KSwKKyAgICBdCit9KTsKKworU3VpdGVzLnB1c2goeworICAgIG5hbWU6ICdWYW5pbGxhLUVTMjAx
NS1CYWJlbC1XZWJwYWNrLVRvZG9NVkMnLAorICAgIHVybDogJ3RvZG9tdmMvdmFuaWxsYS1leGFt
cGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0L2luZGV4Lmh0bWwnLAorICAgIHByZXBhcmU6
IGZ1bmN0aW9uIChydW5uZXIsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgeworICAg
ICAgICByZXR1cm4gcnVubmVyLndhaXRGb3JFbGVtZW50KCcubmV3LXRvZG8nKS50aGVuKGZ1bmN0
aW9uIChlbGVtZW50KSB7CisgICAgICAgICAgICBlbGVtZW50LmZvY3VzKCk7CisgICAgICAgICAg
ICByZXR1cm4gZWxlbWVudDsKICAgICAgICAgfSk7CiAgICAgfSwKICAgICB0ZXN0czogWwotICAg
ICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0FkZGluZycgKyBudW1iZXJPZkl0ZW1zVG9BZGQg
KyAnSXRlbXMnLCBmdW5jdGlvbiAocGFyYW1zKSB7CisgICAgICAgIG5ldyBCZW5jaG1hcmtUZXN0
U3RlcCgnQWRkaW5nJyArIG51bWJlck9mSXRlbXNUb0FkZCArICdJdGVtcycsIGZ1bmN0aW9uIChu
ZXdUb2RvLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKICAgICAgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgbnVtYmVyT2ZJdGVtc1RvQWRkOyBpKyspIHsKLSAgICAgICAgICAg
ICAgICBwYXJhbXMuZW1iZXJSdW4oZnVuY3Rpb24gKCkgeyBwYXJhbXMudmlld3NbIm5ldy10b2Rv
Il0uc2V0KCd2YWx1ZScsICdTb21ldGhpbmcgdG8gZG8nICsgaSk7IH0pOwotICAgICAgICAgICAg
ICAgIHBhcmFtcy5lbWJlclJ1bihmdW5jdGlvbiAoKSB7IHBhcmFtcy52aWV3c1sibmV3LXRvZG8i
XS5pbnNlcnROZXdsaW5lKGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdFdmVudCcpKTsgfSk7CisgICAg
ICAgICAgICAgICAgbmV3VG9kby52YWx1ZSA9ICdTb21ldGhpbmcgdG8gZG8nICsgaTsKKyAgICAg
ICAgICAgICAgICB0cmlnZ2VyS2V5Ym9hcmRFdmVudChuZXdUb2RvLCAxMyk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0pLAogICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0NvbXBsZXRp
bmdBbGxJdGVtcycsIGZ1bmN0aW9uIChwYXJhbXMsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1
bWVudCkgewotICAgICAgICAgICAgdmFyIGNoZWNrYm94ZXMgPSBjb250ZW50RG9jdW1lbnQucXVl
cnlTZWxlY3RvckFsbCgnLmVtYmVyLWNoZWNrYm94Jyk7Ci0gICAgICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGNoZWNrYm94ZXMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgICAgICB2YXIg
dmlldyA9IHBhcmFtcy52aWV3c1tjaGVja2JveGVzW2ldLmlkXTsKLSAgICAgICAgICAgICAgICBw
YXJhbXMuZW1iZXJSdW4oZnVuY3Rpb24gKCkgeyB2aWV3LnNldCgnY2hlY2tlZCcsIHRydWUpOyB9
KTsKKyAgICAgICAgICAgIHZhciBjaGVja2JveGVzID0gY29udGVudERvY3VtZW50LnF1ZXJ5U2Vs
ZWN0b3JBbGwoJy50b2dnbGUnKTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hl
Y2tib3hlcy5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgICAgICBjaGVja2JveGVzW2ldLmNsaWNr
KCk7CisgICAgICAgIH0pLAorICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0RlbGV0aW5n
SXRlbXMnLCBmdW5jdGlvbiAocGFyYW1zLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQp
IHsKKyAgICAgICAgICAgIHZhciBkZWxldGVCdXR0b25zID0gY29udGVudERvY3VtZW50LnF1ZXJ5
U2VsZWN0b3JBbGwoJy5kZXN0cm95Jyk7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGRlbGV0ZUJ1dHRvbnMubGVuZ3RoOyBpKyspCisgICAgICAgICAgICAgICAgZGVsZXRlQnV0dG9u
c1tpXS5jbGljaygpOworICAgICAgICB9KSwKKyAgICBdCit9KTsKKworU3VpdGVzLnB1c2goewor
ICAgIG5hbWU6ICdSZWFjdC1Ub2RvTVZDJywKKyAgICB1cmw6ICd0b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9yZWFjdC9pbmRleC5odG1sJywKKyAgICBwcmVwYXJlOiBmdW5jdGlvbiAocnVu
bmVyLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgY29udGVudFdp
bmRvdy5hcHAuVXRpbHMuc3RvcmUgPSBmdW5jdGlvbiAoKSB7fQorICAgICAgICByZXR1cm4gcnVu
bmVyLndhaXRGb3JFbGVtZW50KCcubmV3LXRvZG8nKS50aGVuKGZ1bmN0aW9uIChlbGVtZW50KSB7
CisgICAgICAgICAgICBlbGVtZW50LmZvY3VzKCk7CisgICAgICAgICAgICByZXR1cm4gZWxlbWVu
dDsKKyAgICAgICAgfSk7CisgICAgfSwKKyAgICB0ZXN0czogWworICAgICAgICBuZXcgQmVuY2ht
YXJrVGVzdFN0ZXAoJ0FkZGluZycgKyBudW1iZXJPZkl0ZW1zVG9BZGQgKyAnSXRlbXMnLCBmdW5j
dGlvbiAobmV3VG9kbywgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CisgICAgICAg
ICAgICB2YXIgdG9kb212YyA9IGNvbnRlbnRXaW5kb3cudG9kb212YzsKKyAgICAgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgbnVtYmVyT2ZJdGVtc1RvQWRkOyBpKyspIHsKKyAgICAgICAgICAg
ICAgICBuZXdUb2RvLnZhbHVlID0gJ1NvbWV0aGluZyB0byBkbyAnICsgaTsKKworICAgICAgICAg
ICAgICAgIHZhciBrZXlkb3duRXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQnKTsK
KyAgICAgICAgICAgICAgICBrZXlkb3duRXZlbnQuaW5pdEV2ZW50KCdrZXlkb3duJywgdHJ1ZSwg
dHJ1ZSk7CisgICAgICAgICAgICAgICAga2V5ZG93bkV2ZW50LndoaWNoID0gMTM7IC8vIFZLX0VO
VEVSCisgICAgICAgICAgICAgICAgbmV3VG9kby5kaXNwYXRjaEV2ZW50KGtleWRvd25FdmVudCk7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0pLAorICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0
ZXAoJ0NvbXBsZXRpbmdBbGxJdGVtcycsIGZ1bmN0aW9uIChuZXdUb2RvLCBjb250ZW50V2luZG93
LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgICAgIHZhciBjaGVja2JveGVzID0gY29udGVu
dERvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy50b2dnbGUnKTsKKyAgICAgICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgY2hlY2tib3hlcy5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgICAgICBj
aGVja2JveGVzW2ldLmNsaWNrKCk7CisgICAgICAgIH0pLAorICAgICAgICBuZXcgQmVuY2htYXJr
VGVzdFN0ZXAoJ0RlbGV0aW5nQWxsSXRlbXMnLCBmdW5jdGlvbiAobmV3VG9kbywgY29udGVudFdp
bmRvdywgY29udGVudERvY3VtZW50KSB7CisgICAgICAgICAgICB2YXIgZGVsZXRlQnV0dG9ucyA9
IGNvbnRlbnREb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZGVzdHJveScpOworICAgICAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkZWxldGVCdXR0b25zLmxlbmd0aDsgaSsrKQorICAgICAg
ICAgICAgICAgIGRlbGV0ZUJ1dHRvbnNbaV0uY2xpY2soKTsKKyAgICAgICAgfSksCisgICAgXQor
fSk7CisKK1N1aXRlcy5wdXNoKHsKKyAgICBuYW1lOiAnUmVhY3QtUmVkdXgtVG9kb01WQycsCisg
ICAgdXJsOiAndG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgvYnVpbGQv
aW5kZXguaHRtbCcsCisgICAgcHJlcGFyZTogZnVuY3Rpb24gKHJ1bm5lciwgY29udGVudFdpbmRv
dywgY29udGVudERvY3VtZW50KSB7CisgICAgICAgIHJldHVybiBydW5uZXIud2FpdEZvckVsZW1l
bnQoJy5uZXctdG9kbycpLnRoZW4oZnVuY3Rpb24gKGVsZW1lbnQpIHsKKyAgICAgICAgICAgIGVs
ZW1lbnQuZm9jdXMoKTsKKyAgICAgICAgICAgIHJldHVybiBlbGVtZW50OworICAgICAgICB9KTsK
KyAgICB9LAorICAgIHRlc3RzOiBbCisgICAgICAgIG5ldyBCZW5jaG1hcmtUZXN0U3RlcCgnQWRk
aW5nJyArIG51bWJlck9mSXRlbXNUb0FkZCArICdJdGVtcycsIGZ1bmN0aW9uIChuZXdUb2RvLCBj
b250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgbnVtYmVyT2ZJdGVtc1RvQWRkOyBpKyspIHsKKyAgICAgICAgICAgICAgICBuZXdU
b2RvLnZhbHVlID0gJ1NvbWV0aGluZyB0byBkbycgKyBpOworICAgICAgICAgICAgICAgIHRyaWdn
ZXJLZXlib2FyZEV2ZW50KG5ld1RvZG8sIDEzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSks
CisgICAgICAgIG5ldyBCZW5jaG1hcmtUZXN0U3RlcCgnQ29tcGxldGluZ0FsbEl0ZW1zJywgZnVu
Y3Rpb24gKHBhcmFtcywgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CisgICAgICAg
ICAgICB2YXIgY2hlY2tib3hlcyA9IGNvbnRlbnREb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcu
dG9nZ2xlJyk7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoZWNrYm94ZXMubGVu
Z3RoOyBpKyspCisgICAgICAgICAgICAgICAgY2hlY2tib3hlc1tpXS5jbGljaygpOworICAgICAg
ICB9KSwKKyAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdEZWxldGluZ0l0ZW1zJywgZnVu
Y3Rpb24gKHBhcmFtcywgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CisgICAgICAg
ICAgICB2YXIgZGVsZXRlQnV0dG9ucyA9IGNvbnRlbnREb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxs
KCcuZGVzdHJveScpOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkZWxldGVCdXR0
b25zLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgICAgIGRlbGV0ZUJ1dHRvbnNbaV0uY2xpY2so
KTsKKyAgICAgICAgfSksCisgICAgXQorfSk7CisKK1N1aXRlcy5wdXNoKHsKKyAgICBuYW1lOiAn
RW1iZXJKUy1Ub2RvTVZDJywKKyAgICB1cmw6ICd0b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9lbWJlcmpzJywKKyAgICBwcmVwYXJlOiBmdW5jdGlvbiAocnVubmVyLCBjb250ZW50V2luZG93
LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVu
dCgnI25ldy10b2RvJykudGhlbihmdW5jdGlvbiAoZWxlbWVudCkgeworICAgICAgICAgICAgZWxl
bWVudC5mb2N1cygpOworICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgICAgIH0pOwor
ICAgIH0sCisgICAgdGVzdHM6IFsKKyAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdBZGRp
bmcnICsgbnVtYmVyT2ZJdGVtc1RvQWRkICsgJ0l0ZW1zJywgZnVuY3Rpb24gKG5ld1RvZG8sIGNv
bnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgeworICAgICAgICAgICAgdmFyIGFwcFZpZXcg
PSBjb250ZW50V2luZG93LkFwcDsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVt
YmVyT2ZJdGVtc1RvQWRkOyBpKyspIHsKKyAgICAgICAgICAgICAgICBuZXdUb2RvLnZhbHVlID0g
J1NvbWV0aGluZyB0byBkbycgKyBpOworICAgICAgICAgICAgICAgIHRyaWdnZXJLZXlib2FyZEV2
ZW50KG5ld1RvZG8sIDEzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSksCisgICAgICAgIG5l
dyBCZW5jaG1hcmtUZXN0U3RlcCgnQ29tcGxldGluZ0FsbEl0ZW1zJywgZnVuY3Rpb24gKHBhcmFt
cywgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CisgICAgICAgICAgICB2YXIgY2hl
Y2tib3hlcyA9IGNvbnRlbnREb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudG9nZ2xlJyk7Cisg
ICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoZWNrYm94ZXMubGVuZ3RoOyBpKyspCisg
ICAgICAgICAgICAgICAgY2hlY2tib3hlc1tpXS5jbGljaygpOworICAgICAgICB9KSwKICAgICAg
ICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdEZWxldGluZ0l0ZW1zJywgZnVuY3Rpb24gKHBhcmFt
cywgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CiAgICAgICAgICAgICB2YXIgZGVs
ZXRlQnV0dG9ucyA9IGNvbnRlbnREb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZGVzdHJveScp
OwogICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkZWxldGVCdXR0b25zLmxlbmd0aDsg
aSsrKQotICAgICAgICAgICAgICAgIHBhcmFtcy5lbWJlclJ1bihmdW5jdGlvbiAoKSB7IGRlbGV0
ZUJ1dHRvbnNbaV0uY2xpY2soKTsgfSk7CisgICAgICAgICAgICAgICAgZGVsZXRlQnV0dG9uc1tp
XS5jbGljaygpOwogICAgICAgICB9KSwKICAgICBdCiB9KTsKIAorCiBTdWl0ZXMucHVzaCh7CiAg
ICAgbmFtZTogJ0JhY2tib25lSlMtVG9kb01WQycsCiAgICAgdXJsOiAndG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvaW5kZXguaHRtbCcsCiAgICAgcHJlcGFyZTogZnVuY3Rp
b24gKHJ1bm5lciwgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CiAgICAgY29udGVu
dFdpbmRvdy5CYWNrYm9uZS5zeW5jID0gZnVuY3Rpb24gKCkge30KLSAgICAgICAgcmV0dXJuIHJ1
bm5lci53YWl0Rm9yRWxlbWVudCgnI25ldy10b2RvJykudGhlbihmdW5jdGlvbiAoZWxlbWVudCkg
eworICAgICAgICByZXR1cm4gcnVubmVyLndhaXRGb3JFbGVtZW50KCcubmV3LXRvZG8nKS50aGVu
KGZ1bmN0aW9uIChlbGVtZW50KSB7CiAgICAgICAgICAgICBlbGVtZW50LmZvY3VzKCk7CiAgICAg
ICAgICAgICByZXR1cm4gZWxlbWVudDsKICAgICAgICAgfSk7CkBAIC03OCwxMCArMjEyLDExMCBA
QCBTdWl0ZXMucHVzaCh7CiAgICAgdGVzdHM6IFsKICAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RT
dGVwKCdBZGRpbmcnICsgbnVtYmVyT2ZJdGVtc1RvQWRkICsgJ0l0ZW1zJywgZnVuY3Rpb24gKG5l
d1RvZG8sIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgewogICAgICAgICAgICAgdmFy
IGFwcFZpZXcgPSBjb250ZW50V2luZG93LmFwcFZpZXc7Ci0gICAgICAgICAgICB2YXIgZmFrZUV2
ZW50ID0ge3doaWNoOiBjb250ZW50V2luZG93LkVOVEVSX0tFWX07CisgICAgICAgICAgICB2YXIg
ZmFrZUV2ZW50ID0ge3doaWNoOiAxM307CiAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IG51bWJlck9mSXRlbXNUb0FkZDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgbmV3VG9kby52YWx1
ZSA9ICdTb21ldGhpbmcgdG8gZG8gJyArIGk7Ci0gICAgICAgICAgICAgICAgYXBwVmlldy5jcmVh
dGVPbkVudGVyKGZha2VFdmVudCk7CisgICAgICAgICAgICAgICAgdHJpZ2dlcktleWJvYXJkRXZl
bnQobmV3VG9kbywgMTMpOworICAgICAgICAgICAgfQorICAgICAgICB9KSwKKyAgICAgICAgbmV3
IEJlbmNobWFya1Rlc3RTdGVwKCdDb21wbGV0aW5nQWxsSXRlbXMnLCBmdW5jdGlvbiAobmV3VG9k
bywgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CisgICAgICAgICAgICB2YXIgY2hl
Y2tib3hlcyA9IGNvbnRlbnREb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudG9nZ2xlJyk7Cisg
ICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoZWNrYm94ZXMubGVuZ3RoOyBpKyspCisg
ICAgICAgICAgICAgICAgY2hlY2tib3hlc1tpXS5jbGljaygpOworICAgICAgICB9KSwKKyAgICAg
ICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdEZWxldGluZ0FsbEl0ZW1zJywgZnVuY3Rpb24gKG5l
d1RvZG8sIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgeworICAgICAgICAgICAgdmFy
IGRlbGV0ZUJ1dHRvbnMgPSBjb250ZW50RG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmRlc3Ry
b3knKTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGVsZXRlQnV0dG9ucy5sZW5n
dGg7IGkrKykKKyAgICAgICAgICAgICAgICBkZWxldGVCdXR0b25zW2ldLmNsaWNrKCk7CisgICAg
ICAgIH0pLAorICAgIF0KK30pOworCitTdWl0ZXMucHVzaCh7CisgICAgbmFtZTogJ0FuZ3VsYXJK
Uy1Ub2RvTVZDJywKKyAgICB1cmw6ICd0b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1
bGFyanMvaW5kZXguaHRtbCcsCisgICAgcHJlcGFyZTogZnVuY3Rpb24gKHJ1bm5lciwgY29udGVu
dFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CisgICAgICAgIHJldHVybiBydW5uZXIud2FpdEZv
ckVsZW1lbnQoJyNuZXctdG9kbycpLnRoZW4oZnVuY3Rpb24gKGVsZW1lbnQpIHsKKyAgICAgICAg
ICAgIGVsZW1lbnQuZm9jdXMoKTsKKyAgICAgICAgICAgIHJldHVybiBlbGVtZW50OworICAgICAg
ICB9KTsKKyAgICB9LAorICAgIHRlc3RzOiBbCisgICAgICAgIG5ldyBCZW5jaG1hcmtUZXN0U3Rl
cCgnQWRkaW5nJyArIG51bWJlck9mSXRlbXNUb0FkZCArICdJdGVtcycsIGZ1bmN0aW9uIChuZXdU
b2RvLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgICAgIHZhciB0
b2RvbXZjID0gY29udGVudFdpbmRvdy50b2RvbXZjOworICAgICAgICAgICAgdmFyIHN1Ym1pdEV2
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7CisgICAgICAgICAgICBzdWJtaXRF
dmVudC5pbml0RXZlbnQoJ3N1Ym1pdCcsIHRydWUsIHRydWUpOworICAgICAgICAgICAgdmFyIGlu
cHV0RXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQnKTsKKyAgICAgICAgICAgIGlu
cHV0RXZlbnQuaW5pdEV2ZW50KCdpbnB1dCcsIHRydWUsIHRydWUpOworICAgICAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBudW1iZXJPZkl0ZW1zVG9BZGQ7IGkrKykgeworICAgICAgICAgICAg
ICAgIG5ld1RvZG8udmFsdWUgPSAnU29tZXRoaW5nIHRvIGRvICcgKyBpOworICAgICAgICAgICAg
ICAgIG5ld1RvZG8uZGlzcGF0Y2hFdmVudChpbnB1dEV2ZW50KTsKKyAgICAgICAgICAgICAgICBu
ZXdUb2RvLmZvcm0uZGlzcGF0Y2hFdmVudChzdWJtaXRFdmVudCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0pLAorICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0NvbXBsZXRpbmdBbGxJ
dGVtcycsIGZ1bmN0aW9uIChuZXdUb2RvLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQp
IHsKKyAgICAgICAgICAgIHZhciBjaGVja2JveGVzID0gY29udGVudERvY3VtZW50LnF1ZXJ5U2Vs
ZWN0b3JBbGwoJy50b2dnbGUnKTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hl
Y2tib3hlcy5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgICAgICBjaGVja2JveGVzW2ldLmNsaWNr
KCk7CisgICAgICAgIH0pLAorICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0RlbGV0aW5n
QWxsSXRlbXMnLCBmdW5jdGlvbiAobmV3VG9kbywgY29udGVudFdpbmRvdywgY29udGVudERvY3Vt
ZW50KSB7CisgICAgICAgICAgICB2YXIgZGVsZXRlQnV0dG9ucyA9IGNvbnRlbnREb2N1bWVudC5x
dWVyeVNlbGVjdG9yQWxsKCcuZGVzdHJveScpOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBkZWxldGVCdXR0b25zLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgICAgIGRlbGV0ZUJ1
dHRvbnNbaV0uY2xpY2soKTsKKyAgICAgICAgfSksCisgICAgXQorfSk7CisKKworU3VpdGVzLnB1
c2goeworICAgIG5hbWU6ICdBbmd1bGFyLVR5cGVTY3JpcHQtVG9kb01WQycsCisgICAgdXJsOiAn
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9kaXN0L2luZGV4Lmh0bWwnLAor
ICAgIHByZXBhcmU6IGZ1bmN0aW9uIChydW5uZXIsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1
bWVudCkgeworICAgICAgICByZXR1cm4gcnVubmVyLndhaXRGb3JFbGVtZW50KCcubmV3LXRvZG8n
KS50aGVuKGZ1bmN0aW9uIChlbGVtZW50KSB7CisgICAgICAgICAgICBlbGVtZW50LmZvY3VzKCk7
CisgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKKyAgICAgICAgfSk7CisgICAgfSwKKyAgICB0
ZXN0czogWworICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0FkZGluZycgKyBudW1iZXJP
Zkl0ZW1zVG9BZGQgKyAnSXRlbXMnLCBmdW5jdGlvbiAobmV3VG9kbywgY29udGVudFdpbmRvdywg
Y29udGVudERvY3VtZW50KSB7CisgICAgICAgICAgICB2YXIgYXBwVmlldyA9IGNvbnRlbnRXaW5k
b3cuQXBwOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1iZXJPZkl0ZW1zVG9B
ZGQ7IGkrKykgeworICAgICAgICAgICAgICAgIG5ld1RvZG8udmFsdWUgPSAnU29tZXRoaW5nIHRv
IGRvJyArIGk7CisgICAgICAgICAgICAgICAgdHJpZ2dlcktleWJvYXJkRXZlbnQobmV3VG9kbywg
MTMpOworICAgICAgICAgICAgfQorICAgICAgICB9KSwKKyAgICAgICAgbmV3IEJlbmNobWFya1Rl
c3RTdGVwKCdDb21wbGV0aW5nQWxsSXRlbXMnLCBmdW5jdGlvbiAocGFyYW1zLCBjb250ZW50V2lu
ZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgICAgIHZhciBjaGVja2JveGVzID0gY29u
dGVudERvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy50b2dnbGUnKTsKKyAgICAgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgY2hlY2tib3hlcy5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgICAg
ICBjaGVja2JveGVzW2ldLmNsaWNrKCk7CisgICAgICAgIH0pLAorICAgICAgICBuZXcgQmVuY2ht
YXJrVGVzdFN0ZXAoJ0RlbGV0aW5nSXRlbXMnLCBmdW5jdGlvbiAocGFyYW1zLCBjb250ZW50V2lu
ZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgICAgIHZhciBkZWxldGVCdXR0b25zID0g
Y29udGVudERvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5kZXN0cm95Jyk7CisgICAgICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IGRlbGV0ZUJ1dHRvbnMubGVuZ3RoOyBpKyspCisgICAgICAg
ICAgICAgICAgZGVsZXRlQnV0dG9uc1tpXS5jbGljaygpOworICAgICAgICB9KSwKKyAgICBdCit9
KTsKKworU3VpdGVzLnB1c2goeworICAgIG5hbWU6ICdWdWVKUy1Ub2RvTVZDJywKKyAgICB1cmw6
ICd0b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvZGlzdC9pbmRleC5odG1s
JywKKyAgICBwcmVwYXJlOiBmdW5jdGlvbiAocnVubmVyLCBjb250ZW50V2luZG93LCBjb250ZW50
RG9jdW1lbnQpIHsKKyAgICAgICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVudCgnLm5ldy10
b2RvJykudGhlbihmdW5jdGlvbiAoZWxlbWVudCkgeworICAgICAgICAgICAgZWxlbWVudC5mb2N1
cygpOworICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgICAgIH0pOworICAgIH0sCisg
ICAgdGVzdHM6IFsKKyAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdBZGRpbmcnICsgbnVt
YmVyT2ZJdGVtc1RvQWRkICsgJ0l0ZW1zJywgZnVuY3Rpb24gKG5ld1RvZG8sIGNvbnRlbnRXaW5k
b3csIGNvbnRlbnREb2N1bWVudCkgeworICAgICAgICAgICAgdmFyIHRvZG9tdmMgPSBjb250ZW50
V2luZG93LnRvZG9tdmM7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bWJlck9m
SXRlbXNUb0FkZDsgaSsrKSB7CisgICAgICAgICAgICAgICAgbmV3VG9kby52YWx1ZSA9ICdTb21l
dGhpbmcgdG8gZG8gJyArIGk7CisKKyAgICAgICAgICAgICAgICB2YXIga2V5ZG93bkV2ZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7CisgICAgICAgICAgICAgICAga2V5ZG93bkV2
ZW50LmluaXRFdmVudCgna2V5ZG93bicsIHRydWUsIHRydWUpOworICAgICAgICAgICAgICAgIGtl
eWRvd25FdmVudC53aGljaCA9IDEzOyAvLyBWS19FTlRFUgorICAgICAgICAgICAgICAgIG5ld1Rv
ZG8uZGlzcGF0Y2hFdmVudChrZXlkb3duRXZlbnQpOwogICAgICAgICAgICAgfQogICAgICAgICB9
KSwKICAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdDb21wbGV0aW5nQWxsSXRlbXMnLCBm
dW5jdGlvbiAobmV3VG9kbywgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CkBAIC0x
MDksMjAgKzM0MywyMCBAQCBTdWl0ZXMucHVzaCh7CiAgICAgdGVzdHM6IFsKICAgICAgICAgbmV3
IEJlbmNobWFya1Rlc3RTdGVwKCdBZGRpbmcnICsgbnVtYmVyT2ZJdGVtc1RvQWRkICsgJ0l0ZW1z
JywgZnVuY3Rpb24gKG5ld1RvZG8sIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgewog
ICAgICAgICAgICAgdmFyIGFwcCA9IGNvbnRlbnRXaW5kb3cuYXBwOwotICAgICAgICAgICAgdmFy
IGZha2VFdmVudCA9IHt3aGljaDogYXBwLkVOVEVSX0tFWX07CiAgICAgICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IG51bWJlck9mSXRlbXNUb0FkZDsgaSsrKSB7CiAgICAgICAgICAgICAgICAg
bmV3VG9kby52YWx1ZSA9ICdTb21ldGhpbmcgdG8gZG8gJyArIGk7Ci0gICAgICAgICAgICAgICAg
YXBwLmNyZWF0ZS5jYWxsKG5ld1RvZG8sIGZha2VFdmVudCk7CisgICAgICAgICAgICAgICAgdHJp
Z2dlcktleWJvYXJkRXZlbnQobmV3VG9kbywgMTMpOwogICAgICAgICAgICAgfQogICAgICAgICB9
KSwKICAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdDb21wbGV0aW5nQWxsSXRlbXMnLCBm
dW5jdGlvbiAobmV3VG9kbywgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CiAgICAg
ICAgICAgICB2YXIgYXBwID0gY29udGVudFdpbmRvdy5hcHA7Ci0gICAgICAgICAgICB2YXIgY2hl
Y2tib3hlcyA9IGNvbnRlbnREb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudG9nZ2xlJyk7Cisg
ICAgICAgICAgICB2YXIgY2hlY2tib3hlcyA9IGNvbnRlbnREb2N1bWVudC5xdWVyeVNlbGVjdG9y
QWxsKCdpbnB1dC50b2dnbGUnKTsKICAgICAgICAgICAgIHZhciAkID0gY29udGVudFdpbmRvdy4k
OwogCiAgICAgICAgICAgICBpdGVtSW5kZXhUb0lkID0gbmV3IEFycmF5KGNoZWNrYm94ZXMubGVu
Z3RoKTsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hlY2tib3hlcy5sZW5ndGg7
IGkrKykKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hlY2tib3hlcy5sZW5ndGg7
IGkrKykgewogICAgICAgICAgICAgICAgIGl0ZW1JbmRleFRvSWRbaV0gPSAkKGNoZWNrYm94ZXNb
aV0pLmNsb3Nlc3QoJ2xpJykuZGF0YSgnaWQnKTsKKyAgICAgICAgICAgIH0gCiAKICAgICAgICAg
ICAgIGFwcC5nZXRUb2RvID0gZnVuY3Rpb24gKGVsZW1lbnQsIGNhbGxiYWNrKSB7CiAgICAgICAg
ICAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwpAQCAtMTM3LDUwICszNzEsNDcgQEAgU3VpdGVzLnB1
c2goewogCiAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoZWNrYm94ZXMubGVuZ3Ro
OyBpKyspIHsKICAgICAgICAgICAgICAgICBhcHAuY3VycmVudEl0ZW1JbmRleCA9IGk7Ci0gICAg
ICAgICAgICAgICAgYXBwLnRvZ2dsZS5jYWxsKGNoZWNrYm94ZXNbaV0pOworICAgICAgICAgICAg
ICAgIGFwcC50b2dnbGUoeyB0YXJnZXQ6IGNoZWNrYm94ZXNbaV0gfSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0pLAogICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0RlbGV0aW5nQWxs
SXRlbXMnLCBmdW5jdGlvbiAobmV3VG9kbywgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50
KSB7Ci0gICAgICAgICAgICBjb250ZW50RG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2NsZWFyLWNv
bXBsZXRlZCcpLmNsaWNrKCk7CisgICAgICAgICAgICB2YXIgY2xlYXIgPSBjb250ZW50RG9jdW1l
bnQucXVlcnlTZWxlY3RvcignI2NsZWFyLWNvbXBsZXRlZCcpOworICAgICAgICAgICAgaWYgKGNs
ZWFyICE9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgY2xlYXIuY2xpY2soKTsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIHZhciBhcHAgPSBjb250ZW50V2luZG93LmFwcDsKICAgICAgICAg
ICAgIHZhciBkZWxldGVCdXR0b25zID0gY29udGVudERvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwo
Jy5kZXN0cm95Jyk7CiAKICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGVsZXRlQnV0
dG9ucy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgIGFwcC5jdXJyZW50SXRlbUluZGV4
ID0gaTsKLSAgICAgICAgICAgICAgICBhcHAuZGVzdHJveS5jYWxsKGRlbGV0ZUJ1dHRvbnNbaV0p
OworICAgICAgICAgICAgICAgIGFwcC5kZXN0cm95KHsgdGFyZ2V0OiBkZWxldGVCdXR0b25zW2ld
IH0pOwogICAgICAgICAgICAgfQogICAgICAgICB9KSwKICAgICBdCiB9KTsKIAogU3VpdGVzLnB1
c2goewotICAgIG5hbWU6ICdBbmd1bGFySlMtVG9kb01WQycsCi0gICAgdXJsOiAndG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL2luZGV4Lmh0bWwnLAorICAgIG5hbWU6ICdQ
cmVhY3QtVG9kb01WQycsCisgICAgdXJsOiAndG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
cHJlYWN0L2J1aWxkL2luZGV4Lmh0bWwnLAogICAgIHByZXBhcmU6IGZ1bmN0aW9uIChydW5uZXIs
IGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgewotICAgICAgICByZXR1cm4gcnVubmVy
LndhaXRGb3JFbGVtZW50KCcjbmV3LXRvZG8nKS50aGVuKGZ1bmN0aW9uIChlbGVtZW50KSB7Cisg
ICAgICAgIHJldHVybiBydW5uZXIud2FpdEZvckVsZW1lbnQoJy5uZXctdG9kbycpLnRoZW4oZnVu
Y3Rpb24gKGVsZW1lbnQpIHsKICAgICAgICAgICAgIGVsZW1lbnQuZm9jdXMoKTsKICAgICAgICAg
ICAgIHJldHVybiBlbGVtZW50OwogICAgICAgICB9KTsKICAgICB9LAogICAgIHRlc3RzOiBbCiAg
ICAgICAgIG5ldyBCZW5jaG1hcmtUZXN0U3RlcCgnQWRkaW5nJyArIG51bWJlck9mSXRlbXNUb0Fk
ZCArICdJdGVtcycsIGZ1bmN0aW9uIChuZXdUb2RvLCBjb250ZW50V2luZG93LCBjb250ZW50RG9j
dW1lbnQpIHsKLSAgICAgICAgICAgIHZhciB0b2RvbXZjID0gY29udGVudFdpbmRvdy50b2RvbXZj
OwotICAgICAgICAgICAgdmFyIHN1Ym1pdEV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2
ZW50Jyk7Ci0gICAgICAgICAgICBzdWJtaXRFdmVudC5pbml0RXZlbnQoJ3N1Ym1pdCcsIHRydWUs
IHRydWUpOwotICAgICAgICAgICAgdmFyIGlucHV0RXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVu
dCgnRXZlbnQnKTsKLSAgICAgICAgICAgIGlucHV0RXZlbnQuaW5pdEV2ZW50KCdpbnB1dCcsIHRy
dWUsIHRydWUpOwogICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1iZXJPZkl0ZW1z
VG9BZGQ7IGkrKykgewotICAgICAgICAgICAgICAgIG5ld1RvZG8udmFsdWUgPSAnU29tZXRoaW5n
IHRvIGRvICcgKyBpOwotICAgICAgICAgICAgICAgIG5ld1RvZG8uZGlzcGF0Y2hFdmVudChpbnB1
dEV2ZW50KTsKLSAgICAgICAgICAgICAgICBuZXdUb2RvLmZvcm0uZGlzcGF0Y2hFdmVudChzdWJt
aXRFdmVudCk7CisgICAgICAgICAgICAgICAgbmV3VG9kby52YWx1ZSA9ICdTb21ldGhpbmcgdG8g
ZG8nICsgaTsKKyAgICAgICAgICAgICAgICB0cmlnZ2VyS2V5Ym9hcmRFdmVudChuZXdUb2RvLCAx
Myk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0pLAotICAgICAgICBuZXcgQmVuY2htYXJrVGVz
dFN0ZXAoJ0NvbXBsZXRpbmdBbGxJdGVtcycsIGZ1bmN0aW9uIChuZXdUb2RvLCBjb250ZW50V2lu
ZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdD
b21wbGV0aW5nQWxsSXRlbXMnLCBmdW5jdGlvbiAocGFyYW1zLCBjb250ZW50V2luZG93LCBjb250
ZW50RG9jdW1lbnQpIHsKICAgICAgICAgICAgIHZhciBjaGVja2JveGVzID0gY29udGVudERvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy50b2dnbGUnKTsKICAgICAgICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgY2hlY2tib3hlcy5sZW5ndGg7IGkrKykKICAgICAgICAgICAgICAgICBjaGVja2Jv
eGVzW2ldLmNsaWNrKCk7CiAgICAgICAgIH0pLAotICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0
ZXAoJ0RlbGV0aW5nQWxsSXRlbXMnLCBmdW5jdGlvbiAobmV3VG9kbywgY29udGVudFdpbmRvdywg
Y29udGVudERvY3VtZW50KSB7CisgICAgICAgIG5ldyBCZW5jaG1hcmtUZXN0U3RlcCgnRGVsZXRp
bmdJdGVtcycsIGZ1bmN0aW9uIChwYXJhbXMsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVu
dCkgewogICAgICAgICAgICAgdmFyIGRlbGV0ZUJ1dHRvbnMgPSBjb250ZW50RG9jdW1lbnQucXVl
cnlTZWxlY3RvckFsbCgnLmRlc3Ryb3knKTsKICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgZGVsZXRlQnV0dG9ucy5sZW5ndGg7IGkrKykKICAgICAgICAgICAgICAgICBkZWxldGVCdXR0
b25zW2ldLmNsaWNrKCk7CkBAIC0xODksMzMgKzQyMCw1NiBAQCBTdWl0ZXMucHVzaCh7CiB9KTsK
IAogU3VpdGVzLnB1c2goewotICAgIG5hbWU6ICdSZWFjdC1Ub2RvTVZDJywKLSAgICB1cmw6ICd0
b2RvbXZjL2xhYnMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L2luZGV4Lmh0bWwnLAorICAg
IG5hbWU6ICdJbmZlcm5vLVRvZG9NVkMnLAorICAgIHVybDogJ3RvZG9tdmMvdmFuaWxsYS1leGFt
cGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0L2luZGV4Lmh0bWwnLAogICAgIHByZXBhcmU6
IGZ1bmN0aW9uIChydW5uZXIsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgewotICAg
ICAgICBjb250ZW50V2luZG93LlV0aWxzLnN0b3JlID0gZnVuY3Rpb24gKCkge30KLSAgICAgICAg
cmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVudCgnI25ldy10b2RvJykudGhlbihmdW5jdGlvbiAo
ZWxlbWVudCkgeworICAgICAgICByZXR1cm4gcnVubmVyLndhaXRGb3JFbGVtZW50KCcubmV3LXRv
ZG8nKS50aGVuKGZ1bmN0aW9uIChlbGVtZW50KSB7CiAgICAgICAgICAgICBlbGVtZW50LmZvY3Vz
KCk7CiAgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKICAgICAgICAgfSk7CiAgICAgfSwKICAg
ICB0ZXN0czogWwogICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0FkZGluZycgKyBudW1i
ZXJPZkl0ZW1zVG9BZGQgKyAnSXRlbXMnLCBmdW5jdGlvbiAobmV3VG9kbywgY29udGVudFdpbmRv
dywgY29udGVudERvY3VtZW50KSB7Ci0gICAgICAgICAgICB2YXIgdG9kb212YyA9IGNvbnRlbnRX
aW5kb3cudG9kb212YzsKICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtYmVyT2ZJ
dGVtc1RvQWRkOyBpKyspIHsKLSAgICAgICAgICAgICAgICBuZXdUb2RvLnZhbHVlID0gJ1NvbWV0
aGluZyB0byBkbyAnICsgaTsKKyAgICAgICAgICAgICAgICBuZXdUb2RvLnZhbHVlID0gJ1NvbWV0
aGluZyB0byBkbycgKyBpOworICAgICAgICAgICAgICAgIHRyaWdnZXJLZXlib2FyZEV2ZW50KG5l
d1RvZG8sIDEzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSksCisgICAgICAgIG5ldyBCZW5j
aG1hcmtUZXN0U3RlcCgnQ29tcGxldGluZ0FsbEl0ZW1zJywgZnVuY3Rpb24gKHBhcmFtcywgY29u
dGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CisgICAgICAgICAgICB2YXIgY2hlY2tib3hl
cyA9IGNvbnRlbnREb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudG9nZ2xlJyk7CisgICAgICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoZWNrYm94ZXMubGVuZ3RoOyBpKyspCisgICAgICAg
ICAgICAgICAgY2hlY2tib3hlc1tpXS5jbGljaygpOworICAgICAgICB9KSwKKyAgICAgICAgbmV3
IEJlbmNobWFya1Rlc3RTdGVwKCdEZWxldGluZ0l0ZW1zJywgZnVuY3Rpb24gKHBhcmFtcywgY29u
dGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CisgICAgICAgICAgICB2YXIgZGVsZXRlQnV0
dG9ucyA9IGNvbnRlbnREb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZGVzdHJveScpOworICAg
ICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkZWxldGVCdXR0b25zLmxlbmd0aDsgaSsrKQor
ICAgICAgICAgICAgICAgIGRlbGV0ZUJ1dHRvbnNbaV0uY2xpY2soKTsKKyAgICAgICAgfSksCisg
ICAgXQorfSk7CiAKLSAgICAgICAgICAgICAgICB2YXIga2V5ZG93bkV2ZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRXZlbnQoJ0V2ZW50Jyk7Ci0gICAgICAgICAgICAgICAga2V5ZG93bkV2ZW50LmluaXRF
dmVudCgna2V5ZG93bicsIHRydWUsIHRydWUpOwotICAgICAgICAgICAgICAgIGtleWRvd25FdmVu
dC53aGljaCA9IDEzOyAvLyBWS19FTlRFUgotICAgICAgICAgICAgICAgIG5ld1RvZG8uZGlzcGF0
Y2hFdmVudChrZXlkb3duRXZlbnQpOworU3VpdGVzLnB1c2goeworICAgIG5hbWU6ICdFbG0tVG9k
b01WQycsCisgICAgdXJsOiAndG9kb212Yy9mdW5jdGlvbmFsLXByb2ctZXhhbXBsZXMvZWxtL2lu
ZGV4Lmh0bWwnLAorICAgIHByZXBhcmU6IGZ1bmN0aW9uIChydW5uZXIsIGNvbnRlbnRXaW5kb3cs
IGNvbnRlbnREb2N1bWVudCkgeworICAgICAgICByZXR1cm4gcnVubmVyLndhaXRGb3JFbGVtZW50
KCcubmV3LXRvZG8nKS50aGVuKGZ1bmN0aW9uIChlbGVtZW50KSB7CisgICAgICAgICAgICBlbGVt
ZW50LmZvY3VzKCk7CisgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKKyAgICAgICAgfSk7Cisg
ICAgfSwKKyAgICB0ZXN0czogWworICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0FkZGlu
ZycgKyBudW1iZXJPZkl0ZW1zVG9BZGQgKyAnSXRlbXMnLCBmdW5jdGlvbiAobmV3VG9kbywgY29u
dGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CisgICAgICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IG51bWJlck9mSXRlbXNUb0FkZDsgaSsrKSB7CisgICAgICAgICAgICAgICAgbmV3VG9k
by52YWx1ZSA9ICdTb21ldGhpbmcgdG8gZG8nICsgaTsKKyAgICAgICAgICAgICAgICB0cmlnZ2Vy
S2V5Ym9hcmRFdmVudChuZXdUb2RvLCAxMyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0pLAot
ICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0NvbXBsZXRpbmdBbGxJdGVtcycsIGZ1bmN0
aW9uIChuZXdUb2RvLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAg
bmV3IEJlbmNobWFya1Rlc3RTdGVwKCdDb21wbGV0aW5nQWxsSXRlbXMnLCBmdW5jdGlvbiAocGFy
YW1zLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKICAgICAgICAgICAgIHZhciBj
aGVja2JveGVzID0gY29udGVudERvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy50b2dnbGUnKTsK
ICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hlY2tib3hlcy5sZW5ndGg7IGkrKykK
ICAgICAgICAgICAgICAgICBjaGVja2JveGVzW2ldLmNsaWNrKCk7CiAgICAgICAgIH0pLAotICAg
ICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0RlbGV0aW5nQWxsSXRlbXMnLCBmdW5jdGlvbiAo
bmV3VG9kbywgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CisgICAgICAgIG5ldyBC
ZW5jaG1hcmtUZXN0U3RlcCgnRGVsZXRpbmdJdGVtcycsIGZ1bmN0aW9uIChwYXJhbXMsIGNvbnRl
bnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgewogICAgICAgICAgICAgdmFyIGRlbGV0ZUJ1dHRv
bnMgPSBjb250ZW50RG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmRlc3Ryb3knKTsKICAgICAg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGVsZXRlQnV0dG9ucy5sZW5ndGg7IGkrKykKICAg
ICAgICAgICAgICAgICBkZWxldGVCdXR0b25zW2ldLmNsaWNrKCk7CkBAIC0yMjQsMzMgKzQ3OCwy
NyBAQCBTdWl0ZXMucHVzaCh7CiB9KTsKIAogU3VpdGVzLnB1c2goewotICAgIG5hbWU6ICdGbGln
aHRKUy1Ub2RvTVZDJywKKyAgICBuYW1lOiAnRmxpZ2h0LVRvZG9NVkMnLAogICAgIHVybDogJ3Rv
ZG9tdmMvZGVwZW5kZW5jeS1leGFtcGxlcy9mbGlnaHQvaW5kZXguaHRtbCcsCiAgICAgcHJlcGFy
ZTogZnVuY3Rpb24gKHJ1bm5lciwgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7Ci0g
ICAgICAgIHJldHVybiBydW5uZXIud2FpdEZvckVsZW1lbnQoJyNhcHBJc1JlYWR5JykudGhlbihm
dW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICB2YXIgbmV3VG9kbyA9IGNvbnRlbnREb2N1bWVudC5x
dWVyeVNlbGVjdG9yKCcjbmV3LXRvZG8nKTsKLSAgICAgICAgICAgIG5ld1RvZG8uZm9jdXMoKTsK
LSAgICAgICAgICAgIHJldHVybiBuZXdUb2RvOwotICAgICAgICB9KTs7CisgICAgICAgIHJldHVy
biBydW5uZXIud2FpdEZvckVsZW1lbnQoJyNuZXctdG9kbycpLnRoZW4oZnVuY3Rpb24gKGVsZW1l
bnQpIHsKKyAgICAgICAgICAgIGVsZW1lbnQuZm9jdXMoKTsKKyAgICAgICAgICAgIHJldHVybiBl
bGVtZW50OworICAgICAgICB9KTsKICAgICB9LAogICAgIHRlc3RzOiBbCiAgICAgICAgIG5ldyBC
ZW5jaG1hcmtUZXN0U3RlcCgnQWRkaW5nJyArIG51bWJlck9mSXRlbXNUb0FkZCArICdJdGVtcycs
IGZ1bmN0aW9uIChuZXdUb2RvLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKLSAg
ICAgICAgICAgIHZhciB0b2RvbXZjID0gY29udGVudFdpbmRvdy50b2RvbXZjOwogICAgICAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1iZXJPZkl0ZW1zVG9BZGQ7IGkrKykgewotICAgICAg
ICAgICAgICAgIG5ld1RvZG8udmFsdWUgPSAnU29tZXRoaW5nIHRvIGRvICcgKyBpOwotCi0gICAg
ICAgICAgICAgICAgdmFyIGtleWRvd25FdmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdFdmVu
dCcpOwotICAgICAgICAgICAgICAgIGtleWRvd25FdmVudC5pbml0RXZlbnQoJ2tleWRvd24nLCB0
cnVlLCB0cnVlKTsKLSAgICAgICAgICAgICAgICBrZXlkb3duRXZlbnQud2hpY2ggPSAxMzsgLy8g
VktfRU5URVIKLSAgICAgICAgICAgICAgICBuZXdUb2RvLmRpc3BhdGNoRXZlbnQoa2V5ZG93bkV2
ZW50KTsKKyAgICAgICAgICAgICAgICBuZXdUb2RvLnZhbHVlID0gJ1NvbWV0aGluZyB0byBkbycg
KyBpOworICAgICAgICAgICAgICAgIHRyaWdnZXJLZXlib2FyZEV2ZW50KG5ld1RvZG8sIDEzKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfSksCi0gICAgICAgIG5ldyBCZW5jaG1hcmtUZXN0U3Rl
cCgnQ29tcGxldGluZ0FsbEl0ZW1zJywgZnVuY3Rpb24gKG5ld1RvZG8sIGNvbnRlbnRXaW5kb3cs
IGNvbnRlbnREb2N1bWVudCkgeworICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0NvbXBs
ZXRpbmdBbGxJdGVtcycsIGZ1bmN0aW9uIChwYXJhbXMsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnRE
b2N1bWVudCkgewogICAgICAgICAgICAgdmFyIGNoZWNrYm94ZXMgPSBjb250ZW50RG9jdW1lbnQu
cXVlcnlTZWxlY3RvckFsbCgnLnRvZ2dsZScpOwogICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBjaGVja2JveGVzLmxlbmd0aDsgaSsrKQogICAgICAgICAgICAgICAgIGNoZWNrYm94ZXNb
aV0uY2xpY2soKTsKICAgICAgICAgfSksCi0gICAgICAgIG5ldyBCZW5jaG1hcmtUZXN0U3RlcCgn
RGVsZXRpbmdBbGxJdGVtcycsIGZ1bmN0aW9uIChuZXdUb2RvLCBjb250ZW50V2luZG93LCBjb250
ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdEZWxldGluZ0l0
ZW1zJywgZnVuY3Rpb24gKHBhcmFtcywgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7
CiAgICAgICAgICAgICB2YXIgZGVsZXRlQnV0dG9ucyA9IGNvbnRlbnREb2N1bWVudC5xdWVyeVNl
bGVjdG9yQWxsKCcuZGVzdHJveScpOwogICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBk
ZWxldGVCdXR0b25zLmxlbmd0aDsgaSsrKQogICAgICAgICAgICAgICAgIGRlbGV0ZUJ1dHRvbnNb
aV0uY2xpY2soKTsKQEAgLTI1OCw3ICs1MDYsNyBAQCBTdWl0ZXMucHVzaCh7CiAgICAgXQogfSk7
CiAKLXZhciBhY3Rpb25Db3VudCA9IDUwOwordmFyIGFjdGlvbkNvdW50ID0gMjA7IC8vIDUwCiBT
dWl0ZXMucHVzaCh7CiAgICAgZGlzYWJsZWQ6IHRydWUsCiAgICAgbmFtZTogJ0ZsaWdodEpTLU1h
aWxDbGllbnQnLApkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci8uYW5ndWxhci1jbGku
anNvbiBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvLmFuZ3VsYXItY2xpLmpzb24KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NDQ2OTJmYTI2NzMyYWI4M2UyY2Y4ZjUzN2EwODMzNzQ5OGNjODViYQotLS0gL2Rldi9udWxsCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvLmFuZ3VsYXItY2xpLmpzb24KQEAgLTAsMCArMSw1NyBA
QAoreworICAiJHNjaGVtYSI6ICIuL25vZGVfbW9kdWxlcy9AYW5ndWxhci9jbGkvbGliL2NvbmZp
Zy9zY2hlbWEuanNvbiIsCisgICJwcm9qZWN0IjogeworICAgICJuYW1lIjogInRvZG8tYXBwIgor
ICB9LAorICAiYXBwcyI6IFsKKyAgICB7CisgICAgICAicm9vdCI6ICJzcmMiLAorICAgICAgIm91
dERpciI6ICJkaXN0IiwKKyAgICAgICJhc3NldHMiOiBbCisgICAgICAgICJhc3NldHMiLAorICAg
ICAgICAiZmF2aWNvbi5pY28iCisgICAgICBdLAorICAgICAgImluZGV4IjogImluZGV4Lmh0bWwi
LAorICAgICAgIm1haW4iOiAibWFpbi50cyIsCisgICAgICAicG9seWZpbGxzIjogInBvbHlmaWxs
cy50cyIsCisgICAgICAidGVzdCI6ICJ0ZXN0LnRzIiwKKyAgICAgICJ0c2NvbmZpZyI6ICJ0c2Nv
bmZpZy5hcHAuanNvbiIsCisgICAgICAidGVzdFRzY29uZmlnIjogInRzY29uZmlnLnNwZWMuanNv
biIsCisgICAgICAicHJlZml4IjogImFwcCIsCisgICAgICAic3R5bGVzIjogWworICAgICAgICAi
c3R5bGVzLmNzcyIKKyAgICAgIF0sCisgICAgICAic2NyaXB0cyI6IFtdLAorICAgICAgImVudmly
b25tZW50U291cmNlIjogImVudmlyb25tZW50cy9lbnZpcm9ubWVudC50cyIsCisgICAgICAiZW52
aXJvbm1lbnRzIjogeworICAgICAgICAiZGV2IjogImVudmlyb25tZW50cy9lbnZpcm9ubWVudC50
cyIsCisgICAgICAgICJwcm9kIjogImVudmlyb25tZW50cy9lbnZpcm9ubWVudC5wcm9kLnRzIgor
ICAgICAgfQorICAgIH0KKyAgXSwKKyAgImUyZSI6IHsKKyAgICAicHJvdHJhY3RvciI6IHsKKyAg
ICAgICJjb25maWciOiAiLi9wcm90cmFjdG9yLmNvbmYuanMiCisgICAgfQorICB9LAorICAibGlu
dCI6IFsKKyAgICB7CisgICAgICAicHJvamVjdCI6ICJzcmMvdHNjb25maWcuYXBwLmpzb24iCisg
ICAgfSwKKyAgICB7CisgICAgICAicHJvamVjdCI6ICJzcmMvdHNjb25maWcuc3BlYy5qc29uIgor
ICAgIH0sCisgICAgeworICAgICAgInByb2plY3QiOiAiZTJlL3RzY29uZmlnLmUyZS5qc29uIgor
ICAgIH0KKyAgXSwKKyAgInRlc3QiOiB7CisgICAgImthcm1hIjogeworICAgICAgImNvbmZpZyI6
ICIuL2thcm1hLmNvbmYuanMiCisgICAgfQorICB9LAorICAiZGVmYXVsdHMiOiB7CisgICAgInN0
eWxlRXh0IjogImNzcyIsCisgICAgImNvbXBvbmVudCI6IHt9CisgIH0KK30KZGlmZiAtLWdpdCBh
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2FuZ3VsYXIvLmVkaXRvcmNvbmZpZyBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIv
LmVkaXRvcmNvbmZpZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTg3YTAwM2RhODlkZWZkNTU0MDgwYWY1YWY5MzYw
MGNjOWY5MWZlCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci8uZWRpdG9y
Y29uZmlnCkBAIC0wLDAgKzEsMTMgQEAKKyMgRWRpdG9yIGNvbmZpZ3VyYXRpb24sIHNlZSBodHRw
Oi8vZWRpdG9yY29uZmlnLm9yZworcm9vdCA9IHRydWUKKworWypdCitjaGFyc2V0ID0gdXRmLTgK
K2luZGVudF9zdHlsZSA9IHNwYWNlCitpbmRlbnRfc2l6ZSA9IDIKK2luc2VydF9maW5hbF9uZXds
aW5lID0gdHJ1ZQordHJpbV90cmFpbGluZ193aGl0ZXNwYWNlID0gdHJ1ZQorCitbKi5tZF0KK21h
eF9saW5lX2xlbmd0aCA9IG9mZgordHJpbV90cmFpbGluZ193aGl0ZXNwYWNlID0gZmFsc2UKZGlm
ZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvUkVBRE1FLm1kIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5n
dWxhci9SRUFETUUubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2UzOThmOWVjNmM5NmQ3MGZhMjg2ZThkMjU2NzY2
OWRlZTA0NDgzMAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvUkVBRE1F
Lm1kCkBAIC0wLDAgKzEsMzIgQEAKKyMgVG9kb0FwcAorCitUaGlzIHByb2plY3Qgd2FzIGdlbmVy
YXRlZCB3aXRoIFtBbmd1bGFyIENMSV0oaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxh
ci1jbGkpIHZlcnNpb24gMS4wLjAuCisKKyMjIERldmVsb3BtZW50IHNlcnZlcgorCitSdW4gYG5n
IHNlcnZlYCBmb3IgYSBkZXYgc2VydmVyLiBOYXZpZ2F0ZSB0byBgaHR0cDovL2xvY2FsaG9zdDo0
MjAwL2AuIFRoZSBhcHAgd2lsbCBhdXRvbWF0aWNhbGx5IHJlbG9hZCBpZiB5b3UgY2hhbmdlIGFu
eSBvZiB0aGUgc291cmNlIGZpbGVzLgorCisjIyBDb2RlIHNjYWZmb2xkaW5nCisKK1J1biBgbmcg
Z2VuZXJhdGUgY29tcG9uZW50IGNvbXBvbmVudC1uYW1lYCB0byBnZW5lcmF0ZSBhIG5ldyBjb21w
b25lbnQuIFlvdSBjYW4gYWxzbyB1c2UgYG5nIGdlbmVyYXRlIGRpcmVjdGl2ZS9waXBlL3NlcnZp
Y2UvY2xhc3MvbW9kdWxlYC4KKworIyMgQnVpbGQKKworUnVuIGBuZyBidWlsZGAgdG8gYnVpbGQg
dGhlIHByb2plY3QuIFRoZSBidWlsZCBhcnRpZmFjdHMgd2lsbCBiZSBzdG9yZWQgaW4gdGhlIGBk
aXN0L2AgZGlyZWN0b3J5LiBVc2UgdGhlIGAtcHJvZGAgZmxhZyBmb3IgYSBwcm9kdWN0aW9uIGJ1
aWxkLgorCisjIyBSdW5uaW5nIHVuaXQgdGVzdHMKKworUnVuIGBuZyB0ZXN0YCB0byBleGVjdXRl
IHRoZSB1bml0IHRlc3RzIHZpYSBbS2FybWFdKGh0dHBzOi8va2FybWEtcnVubmVyLmdpdGh1Yi5p
bykuCisKKyMjIFJ1bm5pbmcgZW5kLXRvLWVuZCB0ZXN0cworCitSdW4gYG5nIGUyZWAgdG8gZXhl
Y3V0ZSB0aGUgZW5kLXRvLWVuZCB0ZXN0cyB2aWEgW1Byb3RyYWN0b3JdKGh0dHA6Ly93d3cucHJv
dHJhY3RvcnRlc3Qub3JnLykuCitCZWZvcmUgcnVubmluZyB0aGUgdGVzdHMgbWFrZSBzdXJlIHlv
dSBhcmUgc2VydmluZyB0aGUgYXBwIHZpYSBgbmcgc2VydmVgLgorCisjIyBGdXJ0aGVyIGhlbHAK
KworVG8gZ2V0IG1vcmUgaGVscCBvbiB0aGUgQW5ndWxhciBDTEkgdXNlIGBuZyBoZWxwYCBvciBn
byBjaGVjayBvdXQgdGhlIFtBbmd1bGFyIENMSSBSRUFETUVdKGh0dHBzOi8vZ2l0aHViLmNvbS9h
bmd1bGFyL2FuZ3VsYXItY2xpL2Jsb2IvbWFzdGVyL1JFQURNRS5tZCkuCisKKyMjIENyZWRpdHMK
KworSW1wbGVtZW50YXRpb24gd3JpdHRlbiBieSBBZGR5IE9zbWFuaS4KZGlmZiAtLWdpdCBhL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2FuZ3VsYXIvZGlzdC9hc3NldHMvY3NzL3RvZG9tdmMtYXBwLmNzcyBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2FuZ3VsYXIvZGlzdC9hc3NldHMvY3NzL3RvZG9tdmMtYXBwLmNzcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xMGUzZDJmNmI3OTNkNDJjYjRlMjBhZWVhNDhhM2I1Y2ViNDg2ZWU1Ci0tLSAvZGV2L251bGwK
KysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9kaXN0L2Fzc2V0cy9jc3MvdG9kb212Yy1hcHAuY3Nz
CkBAIC0wLDAgKzEsMzcwIEBACitodG1sLAorYm9keSB7CisgICAgbWFyZ2luOiAwOworICAgIHBh
ZGRpbmc6IDA7Cit9CisKK2J1dHRvbiB7CisgICAgbWFyZ2luOiAwOworICAgIHBhZGRpbmc6IDA7
CisgICAgYm9yZGVyOiAwOworICAgIGJhY2tncm91bmQ6IG5vbmU7CisgICAgZm9udC1zaXplOiAx
MDAlOworICAgIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsKKyAgICBmb250LWZhbWlseTogaW5o
ZXJpdDsKKyAgICBmb250LXdlaWdodDogaW5oZXJpdDsKKyAgICBjb2xvcjogaW5oZXJpdDsKKyAg
ICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CisgICAgYXBwZWFyYW5jZTogbm9uZTsKKyAgICAt
d2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKKyAgICAtbW96LW9zeC1mb250LXNt
b290aGluZzogZ3JheXNjYWxlOworfQorCitib2R5IHsKKyAgICBmb250OiAxNHB4ICdIZWx2ZXRp
Y2EgTmV1ZScsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7CisgICAgbGluZS1oZWlnaHQ6
IDEuNGVtOworICAgIGJhY2tncm91bmQ6ICNmNWY1ZjU7CisgICAgY29sb3I6ICM0ZDRkNGQ7Cisg
ICAgbWluLXdpZHRoOiAyMzBweDsKKyAgICBtYXgtd2lkdGg6IDU1MHB4OworICAgIG1hcmdpbjog
MCBhdXRvOworICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOworICAgIC1t
b3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7CisgICAgZm9udC13ZWlnaHQ6IDMwMDsK
K30KKworOmZvY3VzIHsKKyAgICBvdXRsaW5lOiAwOworfQorCisuaGlkZGVuIHsKKyAgICBkaXNw
bGF5OiBub25lOworfQorCisudG9kb2FwcCB7CisgICAgYmFja2dyb3VuZDogI2ZmZjsKKyAgICBt
YXJnaW46IDEzMHB4IDAgNDBweCAwOworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICBib3gt
c2hhZG93OiAwIDJweCA0cHggMCByZ2JhKDAsIDAsIDAsIDAuMiksCisgICAgICAgICAgICAgICAg
MCAyNXB4IDUwcHggMCByZ2JhKDAsIDAsIDAsIDAuMSk7Cit9CisKKy50b2RvYXBwIGlucHV0Ojot
d2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsKKyAgICBmb250LXN0eWxlOiBpdGFsaWM7CisgICAg
Zm9udC13ZWlnaHQ6IDMwMDsKKyAgICBjb2xvcjogI2U2ZTZlNjsKK30KKworLnRvZG9hcHAgaW5w
dXQ6Oi1tb3otcGxhY2Vob2xkZXIgeworICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKKyAgICBmb250
LXdlaWdodDogMzAwOworICAgIGNvbG9yOiAjZTZlNmU2OworfQorCisudG9kb2FwcCBpbnB1dDo6
aW5wdXQtcGxhY2Vob2xkZXIgeworICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKKyAgICBmb250LXdl
aWdodDogMzAwOworICAgIGNvbG9yOiAjZTZlNmU2OworfQorCisudG9kb2FwcCBoMSB7CisgICAg
cG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDogLTE1NXB4OworICAgIHdpZHRoOiAxMDAlOwor
ICAgIGZvbnQtc2l6ZTogMTAwcHg7CisgICAgZm9udC13ZWlnaHQ6IDEwMDsKKyAgICB0ZXh0LWFs
aWduOiBjZW50ZXI7CisgICAgY29sb3I6IHJnYmEoMTc1LCA0NywgNDcsIDAuMTUpOworICAgIC13
ZWJraXQtdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTsKKyAgICAtbW96LXRleHQt
cmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7CisgICAgdGV4dC1yZW5kZXJpbmc6IG9wdGlt
aXplTGVnaWJpbGl0eTsKK30KKworLm5ldy10b2RvLAorLmVkaXQgeworICAgIHBvc2l0aW9uOiBy
ZWxhdGl2ZTsKKyAgICBtYXJnaW46IDA7CisgICAgd2lkdGg6IDEwMCU7CisgICAgZm9udC1zaXpl
OiAyNHB4OworICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0OworICAgIGZvbnQtd2VpZ2h0OiBpbmhl
cml0OworICAgIGxpbmUtaGVpZ2h0OiAxLjRlbTsKKyAgICBib3JkZXI6IDA7CisgICAgY29sb3I6
IGluaGVyaXQ7CisgICAgcGFkZGluZzogNnB4OworICAgIGJvcmRlcjogMXB4IHNvbGlkICM5OTk7
CisgICAgYm94LXNoYWRvdzogaW5zZXQgMCAtMXB4IDVweCAwIHJnYmEoMCwgMCwgMCwgMC4yKTsK
KyAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OworICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6
IGFudGlhbGlhc2VkOworICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7Cit9
CisKKy5uZXctdG9kbyB7CisgICAgcGFkZGluZzogMTZweCAxNnB4IDE2cHggNjBweDsKKyAgICBi
b3JkZXI6IG5vbmU7CisgICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjAwMyk7CisgICAg
Ym94LXNoYWRvdzogaW5zZXQgMCAtMnB4IDFweCByZ2JhKDAsMCwwLDAuMDMpOworfQorCisubWFp
biB7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgIHotaW5kZXg6IDI7CisgICAgYm9yZGVy
LXRvcDogMXB4IHNvbGlkICNlNmU2ZTY7Cit9CisKK2xhYmVsW2Zvcj0ndG9nZ2xlLWFsbCddIHsK
KyAgICBkaXNwbGF5OiBub25lOworfQorCisudG9nZ2xlLWFsbCB7CisgICAgcG9zaXRpb246IGFi
c29sdXRlOworICAgIHRvcDogLTU1cHg7CisgICAgbGVmdDogLTEycHg7CisgICAgd2lkdGg6IDYw
cHg7CisgICAgaGVpZ2h0OiAzNHB4OworICAgIHRleHQtYWxpZ246IGNlbnRlcjsKKyAgICBib3Jk
ZXI6IG5vbmU7IC8qIE1vYmlsZSBTYWZhcmkgKi8KK30KKworLnRvZ2dsZS1hbGw6YmVmb3JlIHsK
KyAgICBjb250ZW50OiAn4p2vJzsKKyAgICBmb250LXNpemU6IDIycHg7CisgICAgY29sb3I6ICNl
NmU2ZTY7CisgICAgcGFkZGluZzogMTBweCAyN3B4IDEwcHggMjdweDsKK30KKworLnRvZ2dsZS1h
bGw6Y2hlY2tlZDpiZWZvcmUgeworICAgIGNvbG9yOiAjNzM3MzczOworfQorCisudG9kby1saXN0
IHsKKyAgICBtYXJnaW46IDA7CisgICAgcGFkZGluZzogMDsKKyAgICBsaXN0LXN0eWxlOiBub25l
OworfQorCisudG9kby1saXN0IGxpIHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgZm9u
dC1zaXplOiAyNHB4OworICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWRlZGVkOworfQor
CisudG9kby1saXN0IGxpOmxhc3QtY2hpbGQgeworICAgIGJvcmRlci1ib3R0b206IG5vbmU7Cit9
CisKKy50b2RvLWxpc3QgbGkuZWRpdGluZyB7CisgICAgYm9yZGVyLWJvdHRvbTogbm9uZTsKKyAg
ICBwYWRkaW5nOiAwOworfQorCisudG9kby1saXN0IGxpLmVkaXRpbmcgLmVkaXQgeworICAgIGRp
c3BsYXk6IGJsb2NrOworICAgIHdpZHRoOiA1MDZweDsKKyAgICBwYWRkaW5nOiAxMnB4IDE2cHg7
CisgICAgbWFyZ2luOiAwIDAgMCA0M3B4OworfQorCisudG9kby1saXN0IGxpLmVkaXRpbmcgLnZp
ZXcgeworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKKy50b2RvLWxpc3QgbGkgLnRvZ2dsZSB7Cisg
ICAgdGV4dC1hbGlnbjogY2VudGVyOworICAgIHdpZHRoOiA0MHB4OworICAgIC8qIGF1dG8sIHNp
bmNlIG5vbi1XZWJLaXQgYnJvd3NlcnMgZG9lc24ndCBzdXBwb3J0IGlucHV0IHN0eWxpbmcgKi8K
KyAgICBoZWlnaHQ6IGF1dG87CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDogMDsK
KyAgICBib3R0b206IDA7CisgICAgbWFyZ2luOiBhdXRvIDA7CisgICAgYm9yZGVyOiBub25lOyAv
KiBNb2JpbGUgU2FmYXJpICovCisgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOworICAgIGFw
cGVhcmFuY2U6IG5vbmU7Cit9CisKKy50b2RvLWxpc3QgbGkgLnRvZ2dsZTphZnRlciB7CisgICAg
Y29udGVudDogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjQwIiBoZWlnaHQ9IjQwIiB2aWV3Qm94PSItMTAg
LTE4IDEwMCAxMzUiPjxjaXJjbGUgY3g9IjUwIiBjeT0iNTAiIHI9IjUwIiBmaWxsPSJub25lIiBz
dHJva2U9IiNlZGVkZWQiIHN0cm9rZS13aWR0aD0iMyIvPjwvc3ZnPicpOworfQorCisudG9kby1s
aXN0IGxpIC50b2dnbGU6Y2hlY2tlZDphZnRlciB7CisgICAgY29udGVudDogdXJsKCdkYXRhOmlt
YWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
d2lkdGg9IjQwIiBoZWlnaHQ9IjQwIiB2aWV3Qm94PSItMTAgLTE4IDEwMCAxMzUiPjxjaXJjbGUg
Y3g9IjUwIiBjeT0iNTAiIHI9IjUwIiBmaWxsPSJub25lIiBzdHJva2U9IiNiZGRhZDUiIHN0cm9r
ZS13aWR0aD0iMyIvPjxwYXRoIGZpbGw9IiM1ZGMyYWYiIGQ9Ik03MiAyNUw0MiA3MSAyNyA1Nmwt
NCA0IDIwIDIwIDM0LTUyeiIvPjwvc3ZnPicpOworfQorCisudG9kby1saXN0IGxpIGxhYmVsIHsK
KyAgICB3b3JkLWJyZWFrOiBicmVhay1hbGw7CisgICAgcGFkZGluZzogMTVweCA2MHB4IDE1cHgg
MTVweDsKKyAgICBtYXJnaW4tbGVmdDogNDVweDsKKyAgICBkaXNwbGF5OiBibG9jazsKKyAgICBs
aW5lLWhlaWdodDogMS4yOworICAgIHRyYW5zaXRpb246IGNvbG9yIDAuNHM7Cit9CisKKy50b2Rv
LWxpc3QgbGkuY29tcGxldGVkIGxhYmVsIHsKKyAgICBjb2xvcjogI2Q5ZDlkOTsKKyAgICB0ZXh0
LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDsKK30KKworLnRvZG8tbGlzdCBsaSAuZGVzdHJveSB7
CisgICAgZGlzcGxheTogbm9uZTsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiAw
OworICAgIHJpZ2h0OiAxMHB4OworICAgIGJvdHRvbTogMDsKKyAgICB3aWR0aDogNDBweDsKKyAg
ICBoZWlnaHQ6IDQwcHg7CisgICAgbWFyZ2luOiBhdXRvIDA7CisgICAgZm9udC1zaXplOiAzMHB4
OworICAgIGNvbG9yOiAjY2M5YTlhOworICAgIG1hcmdpbi1ib3R0b206IDExcHg7CisgICAgdHJh
bnNpdGlvbjogY29sb3IgMC4ycyBlYXNlLW91dDsKK30KKworLnRvZG8tbGlzdCBsaSAuZGVzdHJv
eTpob3ZlciB7CisgICAgY29sb3I6ICNhZjViNWU7Cit9CisKKy50b2RvLWxpc3QgbGkgLmRlc3Ry
b3k6YWZ0ZXIgeworICAgIGNvbnRlbnQ6ICfDlyc7Cit9CisKKy50b2RvLWxpc3QgbGk6aG92ZXIg
LmRlc3Ryb3kgeworICAgIGRpc3BsYXk6IGJsb2NrOworfQorCisudG9kby1saXN0IGxpIC5lZGl0
IHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCisudG9kby1saXN0IGxpLmVkaXRpbmc6bGFzdC1j
aGlsZCB7CisgICAgbWFyZ2luLWJvdHRvbTogLTFweDsKK30KKworLmZvb3RlciB7CisgICAgY29s
b3I6ICM3Nzc7CisgICAgcGFkZGluZzogMTBweCAxNXB4OworICAgIGhlaWdodDogMjBweDsKKyAg
ICB0ZXh0LWFsaWduOiBjZW50ZXI7CisgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlNmU2ZTY7
Cit9CisKKy5mb290ZXI6YmVmb3JlIHsKKyAgICBjb250ZW50OiAnJzsKKyAgICBwb3NpdGlvbjog
YWJzb2x1dGU7CisgICAgcmlnaHQ6IDA7CisgICAgYm90dG9tOiAwOworICAgIGxlZnQ6IDA7Cisg
ICAgaGVpZ2h0OiA1MHB4OworICAgIG92ZXJmbG93OiBoaWRkZW47CisgICAgYm94LXNoYWRvdzog
MCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwKKyAgICAgICAgICAgICAgICAwIDhweCAwIC0z
cHggI2Y2ZjZmNiwKKyAgICAgICAgICAgICAgICAwIDlweCAxcHggLTNweCByZ2JhKDAsIDAsIDAs
IDAuMiksCisgICAgICAgICAgICAgICAgMCAxNnB4IDAgLTZweCAjZjZmNmY2LAorICAgICAgICAg
ICAgICAgIDAgMTdweCAycHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMik7Cit9CisKKy50b2RvLWNv
dW50IHsKKyAgICBmbG9hdDogbGVmdDsKKyAgICB0ZXh0LWFsaWduOiBsZWZ0OworfQorCisudG9k
by1jb3VudCBzdHJvbmcgeworICAgIGZvbnQtd2VpZ2h0OiAzMDA7Cit9CisKKy5maWx0ZXJzIHsK
KyAgICBtYXJnaW46IDA7CisgICAgcGFkZGluZzogMDsKKyAgICBsaXN0LXN0eWxlOiBub25lOwor
ICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICByaWdodDogMDsKKyAgICBsZWZ0OiAwOworfQor
CisuZmlsdGVycyBsaSB7CisgICAgZGlzcGxheTogaW5saW5lOworfQorCisuZmlsdGVycyBsaSBh
IHsKKyAgICBjb2xvcjogaW5oZXJpdDsKKyAgICBtYXJnaW46IDNweDsKKyAgICBwYWRkaW5nOiAz
cHggN3B4OworICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKKyAgICBib3JkZXI6IDFweCBzb2xp
ZCB0cmFuc3BhcmVudDsKKyAgICBib3JkZXItcmFkaXVzOiAzcHg7Cit9CisKKy5maWx0ZXJzIGxp
IGE6aG92ZXIgeworICAgIGJvcmRlci1jb2xvcjogcmdiYSgxNzUsIDQ3LCA0NywgMC4xKTsKK30K
KworLmZpbHRlcnMgbGkgYS5zZWxlY3RlZCB7CisgICAgYm9yZGVyLWNvbG9yOiByZ2JhKDE3NSwg
NDcsIDQ3LCAwLjIpOworfQorCisuY2xlYXItY29tcGxldGVkLAoraHRtbCAuY2xlYXItY29tcGxl
dGVkOmFjdGl2ZSB7CisgICAgZmxvYXQ6IHJpZ2h0OworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsK
KyAgICBsaW5lLWhlaWdodDogMjBweDsKKyAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CisgICAg
Y3Vyc29yOiBwb2ludGVyOworfQorCisuY2xlYXItY29tcGxldGVkOmhvdmVyIHsKKyAgICB0ZXh0
LWRlY29yYXRpb246IHVuZGVybGluZTsKK30KKworLmluZm8geworICAgIG1hcmdpbjogNjVweCBh
dXRvIDA7CisgICAgY29sb3I6ICNiZmJmYmY7CisgICAgZm9udC1zaXplOiAxMHB4OworICAgIHRl
eHQtc2hhZG93OiAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTsKKyAgICB0ZXh0LWFs
aWduOiBjZW50ZXI7Cit9CisKKy5pbmZvIHAgeworICAgIGxpbmUtaGVpZ2h0OiAxOworfQorCisu
aW5mbyBhIHsKKyAgICBjb2xvcjogaW5oZXJpdDsKKyAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7
CisgICAgZm9udC13ZWlnaHQ6IDQwMDsKK30KKworLmluZm8gYTpob3ZlciB7CisgICAgdGV4dC1k
ZWNvcmF0aW9uOiB1bmRlcmxpbmU7Cit9CisKKy8qCisgICAgSGFjayB0byByZW1vdmUgYmFja2dy
b3VuZCBmcm9tIE1vYmlsZSBTYWZhcmkuCisgICAgQ2FuJ3QgdXNlIGl0IGdsb2JhbGx5IHNpbmNl
IGl0IGRlc3Ryb3lzIGNoZWNrYm94ZXMgaW4gRmlyZWZveAorKi8KK0BtZWRpYSBzY3JlZW4gYW5k
ICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86MCkgeworICAgIC50b2dnbGUtYWxsLAor
ICAgIC50b2RvLWxpc3QgbGkgLnRvZ2dsZSB7CisgICAgICAgIGJhY2tncm91bmQ6IG5vbmU7Cisg
ICAgfQorCisgICAgLnRvZG8tbGlzdCBsaSAudG9nZ2xlIHsKKyAgICAgICAgaGVpZ2h0OiA0MHB4
OworICAgIH0KKworICAgIC50b2dnbGUtYWxsIHsKKyAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06
IHJvdGF0ZSg5MGRlZyk7CisgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsKKyAgICAg
ICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOworICAgICAgICBhcHBlYXJhbmNlOiBub25lOwor
ICAgIH0KK30KKworQG1lZGlhIChtYXgtd2lkdGg6IDQzMHB4KSB7CisgICAgLmZvb3RlciB7Cisg
ICAgICAgIGhlaWdodDogNTBweDsKKyAgICB9CisKKyAgICAuZmlsdGVycyB7CisgICAgICAgIGJv
dHRvbTogMTBweDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL2Rp
c3QvYXNzZXRzL2Nzcy90b2RvbXZjLWNvbW1vbi5jc3MgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL2Rp
c3QvYXNzZXRzL2Nzcy90b2RvbXZjLWNvbW1vbi5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQyNWQzYzg0YWM2
YzZhZWYyNmI5NjgzYTJiYzEwYzYxZjk2MGM4ZgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2FuZ3VsYXIvZGlzdC9hc3NldHMvY3NzL3RvZG9tdmMtY29tbW9uLmNzcwpAQCAtMCwwICsx
LDE0MSBAQAoraHIgeworICAgIG1hcmdpbjogMjBweCAwOworICAgIGJvcmRlcjogMDsKKyAgICBi
b3JkZXItdG9wOiAxcHggZGFzaGVkICNjNWM1YzU7CisgICAgYm9yZGVyLWJvdHRvbTogMXB4IGRh
c2hlZCAjZjdmN2Y3OworfQorCisubGVhcm4gYSB7CisgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsK
KyAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CisgICAgY29sb3I6ICNiODNmNDU7Cit9CisKKy5s
ZWFybiBhOmhvdmVyIHsKKyAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKKyAgICBjb2xv
cjogIzc4N2U3ZTsKK30KKworLmxlYXJuIGgzLAorLmxlYXJuIGg0LAorLmxlYXJuIGg1IHsKKyAg
ICBtYXJnaW46IDEwcHggMDsKKyAgICBmb250LXdlaWdodDogNTAwOworICAgIGxpbmUtaGVpZ2h0
OiAxLjI7CisgICAgY29sb3I6ICMwMDA7Cit9CisKKy5sZWFybiBoMyB7CisgICAgZm9udC1zaXpl
OiAyNHB4OworfQorCisubGVhcm4gaDQgeworICAgIGZvbnQtc2l6ZTogMThweDsKK30KKworLmxl
YXJuIGg1IHsKKyAgICBtYXJnaW4tYm90dG9tOiAwOworICAgIGZvbnQtc2l6ZTogMTRweDsKK30K
KworLmxlYXJuIHVsIHsKKyAgICBwYWRkaW5nOiAwOworICAgIG1hcmdpbjogMCAwIDMwcHggMjVw
eDsKK30KKworLmxlYXJuIGxpIHsKKyAgICBsaW5lLWhlaWdodDogMjBweDsKK30KKworLmxlYXJu
IHAgeworICAgIGZvbnQtc2l6ZTogMTVweDsKKyAgICBmb250LXdlaWdodDogMzAwOworICAgIGxp
bmUtaGVpZ2h0OiAxLjM7CisgICAgbWFyZ2luLXRvcDogMDsKKyAgICBtYXJnaW4tYm90dG9tOiAw
OworfQorCisjaXNzdWUtY291bnQgeworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKKy5xdW90ZSB7
CisgICAgYm9yZGVyOiBub25lOworICAgIG1hcmdpbjogMjBweCAwIDYwcHggMDsKK30KKworLnF1
b3RlIHAgeworICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKK30KKworLnF1b3RlIHA6YmVmb3JlIHsK
KyAgICBjb250ZW50OiAn4oCcJzsKKyAgICBmb250LXNpemU6IDUwcHg7CisgICAgb3BhY2l0eTog
LjE1OworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IC0yMHB4OworICAgIGxlZnQ6
IDNweDsKK30KKworLnF1b3RlIHA6YWZ0ZXIgeworICAgIGNvbnRlbnQ6ICfigJ0nOworICAgIGZv
bnQtc2l6ZTogNTBweDsKKyAgICBvcGFjaXR5OiAuMTU7CisgICAgcG9zaXRpb246IGFic29sdXRl
OworICAgIGJvdHRvbTogLTQycHg7CisgICAgcmlnaHQ6IDNweDsKK30KKworLnF1b3RlIGZvb3Rl
ciB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIGJvdHRvbTogLTQwcHg7CisgICAgcmln
aHQ6IDA7Cit9CisKKy5xdW90ZSBmb290ZXIgaW1nIHsKKyAgICBib3JkZXItcmFkaXVzOiAzcHg7
Cit9CisKKy5xdW90ZSBmb290ZXIgYSB7CisgICAgbWFyZ2luLWxlZnQ6IDVweDsKKyAgICB2ZXJ0
aWNhbC1hbGlnbjogbWlkZGxlOworfQorCisuc3BlZWNoLWJ1YmJsZSB7CisgICAgcG9zaXRpb246
IHJlbGF0aXZlOworICAgIHBhZGRpbmc6IDEwcHg7CisgICAgYmFja2dyb3VuZDogcmdiYSgwLCAw
LCAwLCAuMDQpOworICAgIGJvcmRlci1yYWRpdXM6IDVweDsKK30KKworLnNwZWVjaC1idWJibGU6
YWZ0ZXIgeworICAgIGNvbnRlbnQ6ICcnOworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0
b3A6IDEwMCU7CisgICAgcmlnaHQ6IDMwcHg7CisgICAgYm9yZGVyOiAxM3B4IHNvbGlkIHRyYW5z
cGFyZW50OworICAgIGJvcmRlci10b3AtY29sb3I6IHJnYmEoMCwgMCwgMCwgLjA0KTsKK30KKwor
LmxlYXJuLWJhciA+IC5sZWFybiB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHdpZHRo
OiAyNzJweDsKKyAgICB0b3A6IDhweDsKKyAgICBsZWZ0OiAtMzAwcHg7CisgICAgcGFkZGluZzog
MTBweDsKKyAgICBib3JkZXItcmFkaXVzOiA1cHg7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdi
YSgyNTUsIDI1NSwgMjU1LCAuNik7CisgICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogbGVmdDsKKyAg
ICB0cmFuc2l0aW9uLWR1cmF0aW9uOiA1MDBtczsKK30KKworQG1lZGlhIChtaW4td2lkdGg6IDg5
OXB4KSB7CisgICAgLmxlYXJuLWJhciB7CisgICAgICAgIHdpZHRoOiBhdXRvOworICAgICAgICBw
YWRkaW5nLWxlZnQ6IDMwMHB4OworICAgIH0KKworICAgIC5sZWFybi1iYXIgPiAubGVhcm4gewor
ICAgICAgICBsZWZ0OiA4cHg7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5n
dWxhci9kaXN0L2Zhdmljb24uaWNvIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9kaXN0L2Zhdmljb24u
aWNvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjgwODFjN2NlYWYyYmUwOGJmNTkwMTAxNThjNTg2MTcwZDlkMmQ1MTcK
R0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDU0MzAKemNtYyhqZXs1NCM2dnZDb0FJM2kqRzUlJFU3
IXNBM3d0TVokZkg2VjlDYD1lWEdKYkBSMSUoSV97dm5adHBEezZuCno1UGx7RG14ekJEYnJCPn1g
OTBlMTJtOFQqMzZXb2VETEEmU0RfaHd7SF53TSFjbF9SV2NWQSFJK3g4N2VlOTc1Owp6QDRrRF49
YllQbiZwbUdAKCtKWmBycVFFS3hXPH1SemhXfUkhfHVsTj1mbWpWaUB4e3AkY0NgKTUkYSEpWCZV
PEQKekZDclF0bFBza3JlfWRCN29NQ3A+K2JsS052TjV0Zz11THZ1TG51cVJNO1ljKnN3aWV4c29o
I1hQTnV7OUYjY2BHCnpRTGV7eVdBKFk2KDs+eXwtZTxSNzhsfF5gdkg2ZnQtbUVyU0d+WWBUWkYy
cW0xPVc9TU5kXjJWMyluMnhJbD1+WAp6Y1E5Vmp6SFczOHR5fHJaeitia2NSKC1jKWB3YnFDI2ww
Q0Y+ZkF5MTFrPDA5KEBPbzFCMkAwYFB0WlNrcUsmJHsKemdFWX1gV0B0eyU/OXU1ckY/fVk3T0x7
MzM4bDxNJUt+LSt3NGlKLTJDXz4qSlkjUCElTVZRWUBvcW5JdHBafT9zCnohcj8qa3d1UntBQGpn
MkNobGYwXntxKj44bjVJcn5ZV2Yqd21zaDdCNSZFcEhmZDVAeFZhaiZncXNkdWlec3B5TAp6Qnxr
VW9ibEdvTzdHKE11S1RmYTk/cEdIMEBRUF5iIyFsTTF5SFdMaCoyaXEjYEMxVGRybk8tZCM/T2hA
WFYySEsKektBe2Blb3stLV5LJk1XNjZMZ3NrdGZ2biNjQ0FjKih9cXNmaHJ2T2pNR0xFP2BkSFZp
cHUxSjNLZ3IlZz9jTmE4CnopcGttQzhER0h+ZkcrZGxycCg1Xi1RQmVFdmtPdnYjcTdNQlZMdG0y
b0ReJGxKWngtLV89SyZUdGQ9LWtyeChCYgp6Y0VvS0pkYUBTISUlQGBQLSMjJD4qdSVUKm1oK1Fq
VkApUWE9TWsxPyN6TGsrTTR0SXQlfXdhZ1R7NTxqS0UkelcKemZedjdqV351VUUtJW1CN15DSEg4
VEwxfF91ckl+aEtUVExPNGU7Wnc3cn5JKDA1MlFUIW5xPWszQks0cldue1AxCnptMWJIbXpiM1Fz
RVBkZE9mZWh0cyE0KypoZTwtSjBUcF9IKm96S0QoSSQqdkVJUmM1dkwza2RAcHska2pNSUtRcwp6
PHBJMChWdTckfXY8MmZFTkhDVkE9WmdFKGVCcD05YTtfT2BCa2ZyVS1jbT9VZGhZUH0reilrKSo0
d1FPVzBLN1MKenhMVjloN1BlRjJkT3ZNZy0+SiUhdFhBRTtye0A9YmIlbk5WeHZJK0MrJHQ/IVZK
QDBkQEhJeU1KVEl7dkV3MFVsCnplKGhhIWUmcUFOYlRMMVpuZU5sNDV0PSNPdD8/QzBNSGpqZ1k4
JSptR2lzTnxTNiVnMztIbHgjZk1OY0w8ODdNVwp6Wj42bW9vMVlEP1AhZkojSmIoNClfY2M1MFg1
bjBLb0RZZmRQb0xeaVZgayZve0xQeWFvcU1xazkyd1ZNI19PMGwKejA5JChBLUQrZ1ZJbHE0VEEm
ezFUQEJzVUhgQm09ciNsJFo1MUo8QSZCaldpYkAkc3xnWkpRcW1iSlFEJXBtdXFyCnpsUmkzciVv
OEkkczdiYE5kfDYhKnspSUlYZXZPUXU/UCNUcmAoYV95YUNgWjNtejIlczBKKlZQIW9Ncnl2JWFH
Sgp6SiUraHI7SlVSOU4lPU5RVUFjc3hIMUV2KHo9Snc1eCozWlBedzY0QjlUMTtkJEZOI3Z8SzN7
eU8/VTN9cCN+Q1gKelFldWw1SjBTLWsmUVAtV1NedXhVXmxKOXFQRWtpaypNQ2hsdWp8O0xFdH4j
SThhdGJSbjxOTE1WellNKFAoTWNeCnorPVZjZiF8YSlEKmJBSiRCKT4tVSZGMzIraGZVUC1pTG89
amc3WG15K1dMcTZfdFd2JmB3RGx6I2AmKUpwfmlRZgp6WlApdHU+fXBJSUpLdXcrJCZ0fUdRdXFN
ZCVaPjA/dCUmQk0mVzxvbSZiJndTXlVpNWB5MGBiS2Bkej5vXjRQXlkKeiljNmheZjJSPlg4Kn1x
fGJibEFGP0A7JT8yPiR5K2NNUWJOe1gkKV5SPnY8aiVIT29YRkwzbkYtJEFTaXpBdTdMCnpBfmEp
S15xZGlLQ1RzT00wUEZeJXtLPVV1PFpFWmtDLXlwZUI+dE5xXzVBQnwwTjVVKmReVD9YOXt4UW5K
WWVVewp6b1pMI29iSTt+UHA5NWYxYCVYM0QkTWgqNF4/Tz9JVH43SHFsV2d1ZXptZz9ZYnF8Nz5x
UShAcFBIYkU5Vj9mfCgKeisweG8hI21ATnA5UGxqc3l4QlktVUEqe1UqbGEjOFd6MnNPfDQ4Xy01
dDglXyFuP1MkemxHZStOQSU/dm14alMtCnpIRTVPM1phclU9WH0kNz47T2twKFVXWEp4SSVHX0ot
QElIOyU1I1J0JChXVVg/NipVeCFJUmQkZExQNitTbVBuPQp6OHpqbTRqR2pONzcyUntGR2tYd2NO
djhHQmNaSSNAWTJte1JORl93OChaJV5BKiFiUyohfXM2c2gqTm5VUnl0a3kKaHVtVzsqZzdSKyZ8
TGVkdmMtPE0pYlVFcXRXYmJ3VjNpd31je3t1RXVAN0AzYQoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAx
CgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9kaXN0L2luZGV4Lmh0bWwgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9hbmd1bGFyL2Rpc3QvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NmJkYzg2Y2Y4ZGQ0
ZDVlYTA0ODk1MWM4MjFiNGNhMWQ2ZmVkZTdkCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvYW5ndWxhci9kaXN0L2luZGV4Lmh0bWwKQEAgLTAsMCArMSwxNyBAQAorPCFkb2N0eXBlIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CisgIDx0aXRsZT5U
b2RvQXBwPC90aXRsZT4KKworCisgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0
aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSI+CisgIDxsaW5rIHJlbD0iaWNvbiIgdHlw
ZT0iaW1hZ2UveC1pY29uIiBocmVmPSJmYXZpY29uLmljbyI+CisgIDxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iYXNzZXRzL2Nzcy90b2RvbXZjLWNvbW1vbi5jc3MiPgorICA8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9ImFzc2V0cy9jc3MvdG9kb212Yy1hcHAuY3NzIj4KKzxsaW5rIGhy
ZWY9InN0eWxlcy5kNDFkOGNkOThmMDBiMjA0ZTk4MC5idW5kbGUuY3NzIiByZWw9InN0eWxlc2hl
ZXQiLz48L2hlYWQ+Cis8Ym9keT4KKyAgPGFwcC1yb290PkxvYWRpbmcuLi48L2FwcC1yb290Pgor
ICA8IS0tIENyZWRpdHM6IEFkZHkgT3NtYW5pIC0tPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiIHNyYz0iaW5saW5lLmIzNDJkMTAyYmE0YTUzYmYyMDAyLmJ1bmRsZS5qcyI+PC9zY3Jp
cHQ+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0icG9seWZpbGxzLjJkNDVhNGM3
M2M4NWUyNGZlNDc0LmJ1bmRsZS5qcyI+PC9zY3JpcHQ+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiIHNyYz0idmVuZG9yLmI0YmU4MThjYjZkODAyOGY5MTkyLmJ1bmRsZS5qcyI+PC9zY3Jp
cHQ+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ibWFpbi43NzllYjJmMWRkYmUy
M2FjNjFjNy5idW5kbGUuanMiPjwvc2NyaXB0PjwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2FuZ3VsYXIvZGlzdC9pbmxpbmUuYjM0MmQxMDJiYTRhNTNiZjIwMDIuYnVu
ZGxlLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9kaXN0L2lubGluZS5iMzQyZDEwMmJhNGE1M2Jm
MjAwMi5idW5kbGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTc5ZDlmZGRkMmEwMjE3YWRlY2U0ZGE4NTgzMWUw
ZjEzNjE3OTVkNgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvZGlzdC9p
bmxpbmUuYjM0MmQxMDJiYTRhNTNiZjIwMDIuYnVuZGxlLmpzCkBAIC0wLDAgKzEgQEAKKyFmdW5j
dGlvbihlKXtmdW5jdGlvbiByKG4pe2lmKHRbbl0pcmV0dXJuIHRbbl0uZXhwb3J0czt2YXIgbz10
W25dPXtpOm4sbDohMSxleHBvcnRzOnt9fTtyZXR1cm4gZVtuXS5jYWxsKG8uZXhwb3J0cyxvLG8u
ZXhwb3J0cyxyKSxvLmw9ITAsby5leHBvcnRzfXZhciBuPXdpbmRvdy53ZWJwYWNrSnNvbnA7d2lu
ZG93LndlYnBhY2tKc29ucD1mdW5jdGlvbih0LGMsdSl7Zm9yKHZhciBhLGksZixsPTAscz1bXTts
PHQubGVuZ3RoO2wrKylpPXRbbF0sb1tpXSYmcy5wdXNoKG9baV1bMF0pLG9baV09MDtmb3IoYSBp
biBjKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChjLGEpJiYoZVthXT1jW2Fd
KTtmb3IobiYmbih0LGMsdSk7cy5sZW5ndGg7KXMuc2hpZnQoKSgpO2lmKHUpZm9yKGw9MDtsPHUu
bGVuZ3RoO2wrKylmPXIoci5zPXVbbF0pO3JldHVybiBmfTt2YXIgdD17fSxvPXs0OjB9O3IuZT1m
dW5jdGlvbihlKXtmdW5jdGlvbiBuKCl7Yy5vbmVycm9yPWMub25sb2FkPW51bGwsY2xlYXJUaW1l
b3V0KHUpO3ZhciByPW9bZV07MCE9PXImJihyJiZyWzFdKG5ldyBFcnJvcigiTG9hZGluZyBjaHVu
ayAiK2UrIiBmYWlsZWQuIikpLG9bZV09dm9pZCAwKX1pZigwPT09b1tlXSlyZXR1cm4gUHJvbWlz
ZS5yZXNvbHZlKCk7aWYob1tlXSlyZXR1cm4gb1tlXVsyXTt2YXIgdD1kb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdLGM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0
Iik7Yy50eXBlPSJ0ZXh0L2phdmFzY3JpcHQiLGMuY2hhcnNldD0idXRmLTgiLGMuYXN5bmM9ITAs
Yy50aW1lb3V0PTEyZTQsci5uYyYmYy5zZXRBdHRyaWJ1dGUoIm5vbmNlIixyLm5jKSxjLnNyYz1y
LnArIiIrZSsiLiIrezA6IjJkNDVhNGM3M2M4NWUyNGZlNDc0IiwxOiI3NzllYjJmMWRkYmUyM2Fj
NjFjNyIsMjoiYTYzMjA1YWU0YjU1YjE4MGI1OGMifVtlXSsiLmNodW5rLmpzIjt2YXIgdT1zZXRU
aW1lb3V0KG4sMTJlNCk7Yy5vbmVycm9yPWMub25sb2FkPW47dmFyIGE9bmV3IFByb21pc2UoZnVu
Y3Rpb24ocixuKXtvW2VdPVtyLG5dfSk7cmV0dXJuIG9bZV1bMl09YSx0LmFwcGVuZENoaWxkKGMp
LGF9LHIubT1lLHIuYz10LHIuaT1mdW5jdGlvbihlKXtyZXR1cm4gZX0sci5kPWZ1bmN0aW9uKGUs
bix0KXtyLm8oZSxuKXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbix7Y29uZmlndXJhYmxlOiEx
LGVudW1lcmFibGU6ITAsZ2V0OnR9KX0sci5uPWZ1bmN0aW9uKGUpe3ZhciBuPWUmJmUuX19lc01v
ZHVsZT9mdW5jdGlvbigpe3JldHVybiBlLmRlZmF1bHR9OmZ1bmN0aW9uKCl7cmV0dXJuIGV9O3Jl
dHVybiByLmQobiwiYSIsbiksbn0sci5vPWZ1bmN0aW9uKGUscil7cmV0dXJuIE9iamVjdC5wcm90
b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpfSxyLnA9IiIsci5vZT1mdW5jdGlvbihlKXt0
aHJvdyBjb25zb2xlLmVycm9yKGUpLGV9fShbXSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9kaXN0L21haW4uNzc5ZWIyZjFkZGJl
MjNhYzYxYzcuYnVuZGxlLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9kaXN0L21haW4uNzc5ZWIy
ZjFkZGJlMjNhYzYxYzcuYnVuZGxlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0NDkyYjlhOTkzMTljNzY3OGIy
NDIwZGFkYzk0ZGQ5YjcyZGQ3YmIKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1
bGFyL2Rpc3QvbWFpbi43NzllYjJmMWRkYmUyM2FjNjFjNy5idW5kbGUuanMKQEAgLTAsMCArMSBA
QAord2VicGFja0pzb25wKFsxLDRdLHsiL2ZjVyI6ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKHQp
e3Rocm93IG5ldyBFcnJvcigiQ2Fubm90IGZpbmQgbW9kdWxlICciK3QrIicuIil9bi5rZXlzPWZ1
bmN0aW9uKCl7cmV0dXJuW119LG4ucmVzb2x2ZT1uLHQuZXhwb3J0cz1uLG4uaWQ9Ii9mY1cifSww
OmZ1bmN0aW9uKHQsZSxuKXt0LmV4cG9ydHM9bigieDM1YiIpfSwiMUE4MCI6ZnVuY3Rpb24odCxl
LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBsKHQpe3JldHVybiBzLl8xNSgwLFsodCgpKCkscy5f
MTYoMCxudWxsLG51bGwsMTEsImxpIixbXSxbWzIsImNvbXBsZXRlZCIsbnVsbF1dLG51bGwsbnVs
bCxudWxsLG51bGwpKSwodCgpKCkscy5fMTcobnVsbCxbIlxuICAgICAgICAiXSkpLCh0KCkoKSxz
Ll8xNigwLG51bGwsbnVsbCw4LCJkaXYiLFtbImNsYXNzIiwidmlldyJdXSxudWxsLG51bGwsbnVs
bCxudWxsLG51bGwpKSwodCgpKCkscy5fMTcobnVsbCxbIlxuICAgICAgICAgICJdKSksKHQoKSgp
LHMuXzE2KDAsbnVsbCxudWxsLDAsImlucHV0IixbWyJjbGFzcyIsInRvZ2dsZSJdLFsidHlwZSIs
ImNoZWNrYm94Il1dLFtbOCwiY2hlY2tlZCIsMF1dLFtbbnVsbCwiY2xpY2siXV0sZnVuY3Rpb24o
dCxlLG4pe3ZhciBsPSEwLG89dC5jb21wb25lbnQ7aWYoImNsaWNrIj09PWUpe2w9ITEhPT1vLnRv
Z2dsZVRvZG9Db21wbGV0ZSh0LmNvbnRleHQuJGltcGxpY2l0KSYmbH1yZXR1cm4gbH0sbnVsbCxu
dWxsKSksKHQoKSgpLHMuXzE3KG51bGwsWyJcbiAgICAgICAgICAiXSkpLCh0KCkoKSxzLl8xNigw
LG51bGwsbnVsbCwxLCJsYWJlbCIsW10sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgp
LHMuXzE3KG51bGwsWyIiLCIiXSkpLCh0KCkoKSxzLl8xNyhudWxsLFsiXG4gICAgICAgICAgIl0p
KSwodCgpKCkscy5fMTYoMCxudWxsLG51bGwsMCwiYnV0dG9uIixbWyJjbGFzcyIsImRlc3Ryb3ki
XV0sbnVsbCxbW251bGwsImNsaWNrIl1dLGZ1bmN0aW9uKHQsZSxuKXt2YXIgbD0hMCxvPXQuY29t
cG9uZW50O2lmKCJjbGljayI9PT1lKXtsPSExIT09by5yZW1vdmVUb2RvKHQuY29udGV4dC4kaW1w
bGljaXQpJiZsfXJldHVybiBsfSxudWxsLG51bGwpKSwodCgpKCkscy5fMTcobnVsbCxbIlxuICAg
ICAgICAiXSkpLCh0KCkoKSxzLl8xNyhudWxsLFsiXG4gICAgICAiXSkpXSxudWxsLGZ1bmN0aW9u
KHQsZSl7dChlLDAsMCxlLmNvbnRleHQuJGltcGxpY2l0LmNvbXBsZXRlKSx0KGUsNCwwLGUuY29u
dGV4dC4kaW1wbGljaXQuY29tcGxldGUpLHQoZSw3LDAsZS5jb250ZXh0LiRpbXBsaWNpdC50aXRs
ZSl9KX1mdW5jdGlvbiBvKHQpe3JldHVybiBzLl8xNSgwLFsodCgpKCkscy5fMTYoMCxudWxsLG51
bGwsNywic2VjdGlvbiIsW1siY2xhc3MiLCJtYWluIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVs
bCkpLCh0KCkoKSxzLl8xNyhudWxsLFsiXG4gICAgIl0pKSwodCgpKCkscy5fMTYoMCxudWxsLG51
bGwsNCwidWwiLFtbImNsYXNzIiwidG9kby1saXN0Il1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVs
bCkpLCh0KCkoKSxzLl8xNyhudWxsLFsiXG4gICAgICAiXSkpLCh0KCkoKSxzLl8xOCg4Mzg4NjA4
LG51bGwsbnVsbCwxLG51bGwsbCkpLHMuXzE5KDQwMTQwOCxudWxsLDAsYS5mLFtzLl8wLHMuXzEs
cy50XSx7bmdGb3JPZjpbMCwibmdGb3JPZiJdfSxudWxsKSwodCgpKCkscy5fMTcobnVsbCxbIlxu
ICAgICJdKSksKHQoKSgpLHMuXzE3KG51bGwsWyJcbiAgIl0pKV0sZnVuY3Rpb24odCxlKXt0KGUs
NSwwLGUuY29tcG9uZW50LnRvZG9zKX0sbnVsbCl9ZnVuY3Rpb24gaSh0KXtyZXR1cm4gcy5fMTUo
MCxbKHQoKSgpLHMuXzE2KDAsbnVsbCxudWxsLDYsImZvb3RlciIsW1siY2xhc3MiLCJmb290ZXIi
XV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLHMuXzE3KG51bGwsWyJcbiAgICAi
XSkpLCh0KCkoKSxzLl8xNigwLG51bGwsbnVsbCwzLCJzcGFuIixbWyJjbGFzcyIsInRvZG8tY291
bnQiXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLHMuXzE2KDAsbnVsbCxudWxs
LDEsInN0cm9uZyIsW10sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLHMuXzE3KG51
bGwsWyIiLCIiXSkpLCh0KCkoKSxzLl8xNyhudWxsLFsiICIsIiBsZWZ0Il0pKSwodCgpKCkscy5f
MTcobnVsbCxbIlxuICAiXSkpXSxudWxsLGZ1bmN0aW9uKHQsZSl7dmFyIG49ZS5jb21wb25lbnQ7
dChlLDQsMCxuLnRvZG9zLmxlbmd0aCksdChlLDUsMCwxPT1uLnRvZG9zLmxlbmd0aD8iaXRlbSI6
Iml0ZW1zIil9KX1mdW5jdGlvbiBfKHQpe3JldHVybiBzLl8xNSgwLFsodCgpKCkscy5fMTYoMCxu
dWxsLG51bGwsMjAsInNlY3Rpb24iLFtbImNsYXNzIiwidG9kb2FwcCJdXSxudWxsLG51bGwsbnVs
bCxudWxsLG51bGwpKSwodCgpKCkscy5fMTcobnVsbCxbIlxuICAiXSkpLCh0KCkoKSxzLl8xNigw
LG51bGwsbnVsbCwxMSwiaGVhZGVyIixbWyJjbGFzcyIsImhlYWRlciJdXSxudWxsLG51bGwsbnVs
bCxudWxsLG51bGwpKSwodCgpKCkscy5fMTcobnVsbCxbIlxuICAgICJdKSksKHQoKSgpLHMuXzE2
KDAsbnVsbCxudWxsLDEsImgxIixbXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCks
cy5fMTcobnVsbCxbIlRvZG9zIl0pKSwodCgpKCkscy5fMTcobnVsbCxbIlxuICAgICJdKSksKHQo
KSgpLHMuXzE2KDAsbnVsbCxudWxsLDUsImlucHV0IixbWyJhdXRvZm9jdXMiLCIiXSxbImNsYXNz
IiwibmV3LXRvZG8iXSxbInBsYWNlaG9sZGVyIiwiV2hhdCBuZWVkcyB0byBiZSBkb25lPyJdXSxb
WzIsIm5nLXVudG91Y2hlZCIsbnVsbF0sWzIsIm5nLXRvdWNoZWQiLG51bGxdLFsyLCJuZy1wcmlz
dGluZSIsbnVsbF0sWzIsIm5nLWRpcnR5IixudWxsXSxbMiwibmctdmFsaWQiLG51bGxdLFsyLCJu
Zy1pbnZhbGlkIixudWxsXSxbMiwibmctcGVuZGluZyIsbnVsbF1dLFtbbnVsbCwibmdNb2RlbENo
YW5nZSJdLFtudWxsLCJrZXl1cC5lbnRlciJdLFtudWxsLCJpbnB1dCJdLFtudWxsLCJibHVyIl0s
W251bGwsImNvbXBvc2l0aW9uc3RhcnQiXSxbbnVsbCwiY29tcG9zaXRpb25lbmQiXV0sZnVuY3Rp
b24odCxlLG4pe3ZhciBsPSEwLG89dC5jb21wb25lbnQ7aWYoImlucHV0Ij09PWUpe2w9ITEhPT1z
Ll8yMCh0LDgpLl9oYW5kbGVJbnB1dChuLnRhcmdldC52YWx1ZSkmJmx9aWYoImJsdXIiPT09ZSl7
bD0hMSE9PXMuXzIwKHQsOCkub25Ub3VjaGVkKCkmJmx9aWYoImNvbXBvc2l0aW9uc3RhcnQiPT09
ZSl7bD0hMSE9PXMuXzIwKHQsOCkuX2NvbXBvc2l0aW9uU3RhcnQoKSYmbH1pZigiY29tcG9zaXRp
b25lbmQiPT09ZSl7bD0hMSE9PXMuXzIwKHQsOCkuX2NvbXBvc2l0aW9uRW5kKG4udGFyZ2V0LnZh
bHVlKSYmbH1pZigibmdNb2RlbENoYW5nZSI9PT1lKXtsPSExIT09KG8ubmV3VG9kby50aXRsZT1u
KSYmbH1pZigia2V5dXAuZW50ZXIiPT09ZSl7bD0hMSE9PW8uYWRkVG9kbygpJiZsfXJldHVybiBs
fSxudWxsLG51bGwpKSxzLl8xOSg4MTkyLG51bGwsMCxwLmQsW3MuVyxzLlYsWzIscC5lXV0sbnVs
bCxudWxsKSxzLl8yMSg1MTIsbnVsbCxwLmYsZnVuY3Rpb24odCl7cmV0dXJuW3RdfSxbcC5kXSks
cy5fMTkoMzM1ODcyLG51bGwsMCxwLmcsW1s4LG51bGxdLFs4LG51bGxdLFs4LG51bGxdLFsyLHAu
Zl1dLHttb2RlbDpbMCwibW9kZWwiXX0se3VwZGF0ZToibmdNb2RlbENoYW5nZSJ9KSxzLl8yMSgx
MDI0LG51bGwscC5oLG51bGwsW3AuZ10pLHMuXzE5KDgxOTIsbnVsbCwwLHAuaSxbcC5oXSxudWxs
LG51bGwpLCh0KCkoKSxzLl8xNyhudWxsLFsiXG4gICJdKSksKHQoKSgpLHMuXzE3KG51bGwsWyJc
biAgIl0pKSwodCgpKCkscy5fMTgoODM4ODYwOCxudWxsLG51bGwsMSxudWxsLG8pKSxzLl8xOSg4
MTkyLG51bGwsMCxhLmcsW3MuXzAscy5fMV0se25nSWY6WzAsIm5nSWYiXX0sbnVsbCksKHQoKSgp
LHMuXzE3KG51bGwsWyJcbiAgIl0pKSwodCgpKCkscy5fMTgoODM4ODYwOCxudWxsLG51bGwsMSxu
dWxsLGkpKSxzLl8xOSg4MTkyLG51bGwsMCxhLmcsW3MuXzAscy5fMV0se25nSWY6WzAsIm5nSWYi
XX0sbnVsbCksKHQoKSgpLHMuXzE3KG51bGwsWyJcbiJdKSldLGZ1bmN0aW9uKHQsZSl7dmFyIG49
ZS5jb21wb25lbnQ7dChlLDEwLDAsbi5uZXdUb2RvLnRpdGxlKSx0KGUsMTYsMCxuLnRvZG9zLmxl
bmd0aD4wKSx0KGUsMTksMCxuLnRvZG9zLmxlbmd0aD4wKX0sZnVuY3Rpb24odCxlKXt0KGUsNyww
LHMuXzIwKGUsMTIpLm5nQ2xhc3NVbnRvdWNoZWQscy5fMjAoZSwxMikubmdDbGFzc1RvdWNoZWQs
cy5fMjAoZSwxMikubmdDbGFzc1ByaXN0aW5lLHMuXzIwKGUsMTIpLm5nQ2xhc3NEaXJ0eSxzLl8y
MChlLDEyKS5uZ0NsYXNzVmFsaWQscy5fMjAoZSwxMikubmdDbGFzc0ludmFsaWQscy5fMjAoZSwx
MikubmdDbGFzc1BlbmRpbmcpfSl9ZnVuY3Rpb24gcih0KXtyZXR1cm4gcy5fMTUoMCxbKHQoKSgp
LHMuXzE2KDAsbnVsbCxudWxsLDIsImFwcC1yb290IixbXSxudWxsLG51bGwsbnVsbCxfLGQpKSxz
Ll8yMSgyNTYsbnVsbCxoLmEsaC5hLFtdKSxzLl8xOSgyNDU3NixudWxsLDAsYy5hLFtoLmFdLG51
bGwsbnVsbCldLG51bGwsbnVsbCl9dmFyIHU9bigiTmk1ZiIpLHM9bigiM2ozSyIpLGE9bigiMkpl
OCIpLGM9bigiWVd4NCIpLHA9bigiTlZPcyIpLGg9bigiajNlbiIpO24uZChlLCJhIixmdW5jdGlv
bigpe3JldHVybiBnfSk7dmFyIGY9W3UuYV0sZD1zLl8xNCh7ZW5jYXBzdWxhdGlvbjowLHN0eWxl
czpmLGRhdGE6e319KSxnPXMuXzIyKCJhcHAtcm9vdCIsYy5hLHIse30se30sW10pfSxJa3NwOmZ1
bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5kKGUsImEiLGZ1bmN0aW9uKCl7cmV0dXJuIGx9
KTt2YXIgbD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHR9KCl9LE5pNWY6ZnVuY3Rp
b24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLmQoZSwiYSIsZnVuY3Rpb24oKXtyZXR1cm4gbH0pO3Zh
ciBsPVsiIl19LFlXeDQ6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgbD1uKCJhS2Ez
Iiksbz1uKCJqM2VuIik7bi5kKGUsImEiLGZ1bmN0aW9uKCl7cmV0dXJuIGl9KTt2YXIgaT1mdW5j
dGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy50b2RvRGF0YVNlcnZpY2U9dCx0aGlzLm5ld1RvZG89
bmV3IGwuYX1yZXR1cm4gdC5wcm90b3R5cGUuYWRkVG9kbz1mdW5jdGlvbigpe3RoaXMudG9kb0Rh
dGFTZXJ2aWNlLmFkZFRvZG8odGhpcy5uZXdUb2RvKSx0aGlzLm5ld1RvZG89bmV3IGwuYX0sdC5w
cm90b3R5cGUudG9nZ2xlVG9kb0NvbXBsZXRlPWZ1bmN0aW9uKHQpe3RoaXMudG9kb0RhdGFTZXJ2
aWNlLnRvZ2dsZVRvZG9Db21wbGV0ZSh0KX0sdC5wcm90b3R5cGUucmVtb3ZlVG9kbz1mdW5jdGlv
bih0KXt0aGlzLnRvZG9EYXRhU2VydmljZS5kZWxldGVUb2RvQnlJZCh0LmlkKX0sT2JqZWN0LmRl
ZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJ0b2RvcyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0
aGlzLnRvZG9EYXRhU2VydmljZS5nZXRBbGxUb2RvcygpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3Vy
YWJsZTohMH0pLHQuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6by5hfV19
LHR9KCl9LGFLYTM6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLmQoZSwiYSIsZnVuY3Rp
b24oKXtyZXR1cm4gbH0pO3ZhciBsPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt2b2lkIDA9PT10
JiYodD17fSksdGhpcy50aXRsZT0iIix0aGlzLmNvbXBsZXRlPSExLE9iamVjdC5hc3NpZ24odGhp
cyx0KX1yZXR1cm4gdH0oKX0sajNlbjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24uZChl
LCJhIixmdW5jdGlvbigpe3JldHVybiBsfSk7dmFyIGw9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7
dGhpcy5sYXN0SWQ9MCx0aGlzLnRvZG9zPVtdfXJldHVybiB0LnByb3RvdHlwZS5hZGRUb2RvPWZ1
bmN0aW9uKHQpe3JldHVybiB0LmlkfHwodC5pZD0rK3RoaXMubGFzdElkKSx0aGlzLnRvZG9zLnB1
c2godCksdGhpc30sdC5wcm90b3R5cGUuZGVsZXRlVG9kb0J5SWQ9ZnVuY3Rpb24odCl7cmV0dXJu
IHRoaXMudG9kb3M9dGhpcy50b2Rvcy5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUuaWQhPT10
fSksdGhpc30sdC5wcm90b3R5cGUudXBkYXRlVG9kb0J5SWQ9ZnVuY3Rpb24odCxlKXt2b2lkIDA9
PT1lJiYoZT17fSk7dmFyIG49dGhpcy5nZXRUb2RvQnlJZCh0KTtyZXR1cm4gbj8oT2JqZWN0LmFz
c2lnbihuLGUpLG4pOm51bGx9LHQucHJvdG90eXBlLmdldEFsbFRvZG9zPWZ1bmN0aW9uKCl7cmV0
dXJuIHRoaXMudG9kb3N9LHQucHJvdG90eXBlLmdldFRvZG9CeUlkPWZ1bmN0aW9uKHQpe3JldHVy
biB0aGlzLnRvZG9zLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZS5pZD09PXR9KS5wb3AoKX0s
dC5wcm90b3R5cGUudG9nZ2xlVG9kb0NvbXBsZXRlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnVw
ZGF0ZVRvZG9CeUlkKHQuaWQse2NvbXBsZXRlOiF0LmNvbXBsZXRlfSl9LHQuY3RvclBhcmFtZXRl
cnM9ZnVuY3Rpb24oKXtyZXR1cm5bXX0sdH0oKX0sa1pxbDpmdW5jdGlvbih0LGUsbil7InVzZSBz
dHJpY3QiO24uZChlLCJhIixmdW5jdGlvbigpe3JldHVybiBsfSk7dmFyIGw9e3Byb2R1Y3Rpb246
ITB9fSxra2U2OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIGw9bigiM2ozSyIpLG89
bigiSWtzcCIpLGk9bigiMkplOCIpLF89bigiUWJkbSIpLHI9bigiTlZPcyIpLHU9bigiRnpybyIp
LHM9bigiMUE4MCIpO24uZChlLCJhIixmdW5jdGlvbigpe3JldHVybiBwfSk7dmFyIGE9dGhpcyYm
dGhpcy5fX2V4dGVuZHN8fGZ1bmN0aW9uKCl7dmFyIHQ9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7
X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKHQsZSl7dC5fX3Byb3RvX189
ZX18fGZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShuKSYmKHRb
bl09ZVtuXSl9O3JldHVybiBmdW5jdGlvbihlLG4pe2Z1bmN0aW9uIGwoKXt0aGlzLmNvbnN0cnVj
dG9yPWV9dChlLG4pLGUucHJvdG90eXBlPW51bGw9PT1uP09iamVjdC5jcmVhdGUobik6KGwucHJv
dG90eXBlPW4ucHJvdG90eXBlLG5ldyBsKX19KCksYz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUp
e3JldHVybiB0LmNhbGwodGhpcyxlLFtzLmFdLFtzLmFdKXx8dGhpc31yZXR1cm4gYShlLHQpLE9i
amVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiX0xPQ0FMRV9JRF8xMiIse2dldDpmdW5j
dGlvbigpe3JldHVybiBudWxsPT10aGlzLl9fTE9DQUxFX0lEXzEyJiYodGhpcy5fX0xPQ0FMRV9J
RF8xMj1sLmIodGhpcy5wYXJlbnQuZ2V0KGwuYyxudWxsKSkpLHRoaXMuX19MT0NBTEVfSURfMTJ9
LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUu
cHJvdG90eXBlLCJfTmdMb2NhbGl6YXRpb25fMTMiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVs
bD09dGhpcy5fX05nTG9jYWxpemF0aW9uXzEzJiYodGhpcy5fX05nTG9jYWxpemF0aW9uXzEzPW5l
dyBpLmEodGhpcy5fTE9DQUxFX0lEXzEyKSksdGhpcy5fX05nTG9jYWxpemF0aW9uXzEzfSxlbnVt
ZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3Rv
dHlwZSwiX0NvbXBpbGVyXzE0Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PXRoaXMuX19D
b21waWxlcl8xNCYmKHRoaXMuX19Db21waWxlcl8xND1uZXcgbC5kKSx0aGlzLl9fQ29tcGlsZXJf
MTR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5
KGUucHJvdG90eXBlLCJfQVBQX0lEXzE1Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PXRo
aXMuX19BUFBfSURfMTUmJih0aGlzLl9fQVBQX0lEXzE1PWwuZSgpKSx0aGlzLl9fQVBQX0lEXzE1
fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShl
LnByb3RvdHlwZSwiX0l0ZXJhYmxlRGlmZmVyc18xNiIse2dldDpmdW5jdGlvbigpe3JldHVybiBu
dWxsPT10aGlzLl9fSXRlcmFibGVEaWZmZXJzXzE2JiYodGhpcy5fX0l0ZXJhYmxlRGlmZmVyc18x
Nj1sLmYoKSksdGhpcy5fX0l0ZXJhYmxlRGlmZmVyc18xNn0sZW51bWVyYWJsZTohMCxjb25maWd1
cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsIl9LZXlWYWx1ZURp
ZmZlcnNfMTciLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09dGhpcy5fX0tleVZhbHVlRGlm
ZmVyc18xNyYmKHRoaXMuX19LZXlWYWx1ZURpZmZlcnNfMTc9bC5nKCkpLHRoaXMuX19LZXlWYWx1
ZURpZmZlcnNfMTd9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmlu
ZVByb3BlcnR5KGUucHJvdG90eXBlLCJfRG9tU2FuaXRpemVyXzE4Iix7Z2V0OmZ1bmN0aW9uKCl7
cmV0dXJuIG51bGw9PXRoaXMuX19Eb21TYW5pdGl6ZXJfMTgmJih0aGlzLl9fRG9tU2FuaXRpemVy
XzE4PW5ldyBfLmIodGhpcy5wYXJlbnQuZ2V0KF8uYykpKSx0aGlzLl9fRG9tU2FuaXRpemVyXzE4
fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShl
LnByb3RvdHlwZSwiX1Nhbml0aXplcl8xOSIse2dldDpmdW5jdGlvbigpe3JldHVybiBudWxsPT10
aGlzLl9fU2FuaXRpemVyXzE5JiYodGhpcy5fX1Nhbml0aXplcl8xOT10aGlzLl9Eb21TYW5pdGl6
ZXJfMTgpLHRoaXMuX19TYW5pdGl6ZXJfMTl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEw
fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJfSEFNTUVSX0dFU1RVUkVfQ09O
RklHXzIwIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PXRoaXMuX19IQU1NRVJfR0VTVFVS
RV9DT05GSUdfMjAmJih0aGlzLl9fSEFNTUVSX0dFU1RVUkVfQ09ORklHXzIwPW5ldyBfLmQpLHRo
aXMuX19IQU1NRVJfR0VTVFVSRV9DT05GSUdfMjB9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxl
OiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJfRVZFTlRfTUFOQUdFUl9Q
TFVHSU5TXzIxIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PXRoaXMuX19FVkVOVF9NQU5B
R0VSX1BMVUdJTlNfMjEmJih0aGlzLl9fRVZFTlRfTUFOQUdFUl9QTFVHSU5TXzIxPVtuZXcgXy5l
KHRoaXMucGFyZW50LmdldChfLmMpKSxuZXcgXy5mKHRoaXMucGFyZW50LmdldChfLmMpKSxuZXcg
Xy5nKHRoaXMucGFyZW50LmdldChfLmMpLHRoaXMuX0hBTU1FUl9HRVNUVVJFX0NPTkZJR18yMCld
KSx0aGlzLl9fRVZFTlRfTUFOQUdFUl9QTFVHSU5TXzIxfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3Vy
YWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiX0V2ZW50TWFuYWdl
cl8yMiIse2dldDpmdW5jdGlvbigpe3JldHVybiBudWxsPT10aGlzLl9fRXZlbnRNYW5hZ2VyXzIy
JiYodGhpcy5fX0V2ZW50TWFuYWdlcl8yMj1uZXcgXy5oKHRoaXMuX0VWRU5UX01BTkFHRVJfUExV
R0lOU18yMSx0aGlzLnBhcmVudC5nZXQobC5oKSkpLHRoaXMuX19FdmVudE1hbmFnZXJfMjJ9LGVu
dW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJv
dG90eXBlLCJfybVEb21TaGFyZWRTdHlsZXNIb3N0XzIzIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJu
IG51bGw9PXRoaXMuX1/JtURvbVNoYXJlZFN0eWxlc0hvc3RfMjMmJih0aGlzLl9fybVEb21TaGFy
ZWRTdHlsZXNIb3N0XzIzPW5ldyBfLmkodGhpcy5wYXJlbnQuZ2V0KF8uYykpKSx0aGlzLl9fybVE
b21TaGFyZWRTdHlsZXNIb3N0XzIzfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9i
amVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiX8m1RG9tUmVuZGVyZXJGYWN0b3J5Ml8y
NCIse2dldDpmdW5jdGlvbigpe3JldHVybiBudWxsPT10aGlzLl9fybVEb21SZW5kZXJlckZhY3Rv
cnkyXzI0JiYodGhpcy5fX8m1RG9tUmVuZGVyZXJGYWN0b3J5Ml8yND1uZXcgXy5qKHRoaXMuX0V2
ZW50TWFuYWdlcl8yMix0aGlzLl/JtURvbVNoYXJlZFN0eWxlc0hvc3RfMjMpKSx0aGlzLl9fybVE
b21SZW5kZXJlckZhY3RvcnkyXzI0fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9i
amVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiX1JlbmRlcmVyRmFjdG9yeTJfMjUiLHtn
ZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09dGhpcy5fX1JlbmRlcmVyRmFjdG9yeTJfMjUmJih0
aGlzLl9fUmVuZGVyZXJGYWN0b3J5Ml8yNT10aGlzLl/JtURvbVJlbmRlcmVyRmFjdG9yeTJfMjQp
LHRoaXMuX19SZW5kZXJlckZhY3RvcnkyXzI1fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZToh
MH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiX8m1U2hhcmVkU3R5bGVzSG9z
dF8yNiIse2dldDpmdW5jdGlvbigpe3JldHVybiBudWxsPT10aGlzLl9fybVTaGFyZWRTdHlsZXNI
b3N0XzI2JiYodGhpcy5fX8m1U2hhcmVkU3R5bGVzSG9zdF8yNj10aGlzLl/JtURvbVNoYXJlZFN0
eWxlc0hvc3RfMjMpLHRoaXMuX1/JtVNoYXJlZFN0eWxlc0hvc3RfMjZ9LGVudW1lcmFibGU6ITAs
Y29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJfVGVz
dGFiaWxpdHlfMjciLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09dGhpcy5fX1Rlc3RhYmls
aXR5XzI3JiYodGhpcy5fX1Rlc3RhYmlsaXR5XzI3PW5ldyBsLmkodGhpcy5wYXJlbnQuZ2V0KGwu
aCkpKSx0aGlzLl9fVGVzdGFiaWxpdHlfMjd9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEw
fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJfTWV0YV8yOCIse2dldDpmdW5j
dGlvbigpe3JldHVybiBudWxsPT10aGlzLl9fTWV0YV8yOCYmKHRoaXMuX19NZXRhXzI4PW5ldyBf
LmsodGhpcy5wYXJlbnQuZ2V0KF8uYykpKSx0aGlzLl9fTWV0YV8yOH0sZW51bWVyYWJsZTohMCxj
b25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsIl9UaXRs
ZV8yOSIse2dldDpmdW5jdGlvbigpe3JldHVybiBudWxsPT10aGlzLl9fVGl0bGVfMjkmJih0aGlz
Ll9fVGl0bGVfMjk9bmV3IF8ubCh0aGlzLnBhcmVudC5nZXQoXy5jKSkpLHRoaXMuX19UaXRsZV8y
OX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHko
ZS5wcm90b3R5cGUsIl/JtWlfMzAiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09dGhpcy5f
X8m1aV8zMCYmKHRoaXMuX1/JtWlfMzA9bmV3IHIuYSksdGhpcy5fX8m1aV8zMH0sZW51bWVyYWJs
ZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUs
Il9Ccm93c2VyWGhyXzMxIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PXRoaXMuX19Ccm93
c2VyWGhyXzMxJiYodGhpcy5fX0Jyb3dzZXJYaHJfMzE9bmV3IHUuYSksdGhpcy5fX0Jyb3dzZXJY
aHJfMzF9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3Bl
cnR5KGUucHJvdG90eXBlLCJfUmVzcG9uc2VPcHRpb25zXzMyIix7Z2V0OmZ1bmN0aW9uKCl7cmV0
dXJuIG51bGw9PXRoaXMuX19SZXNwb25zZU9wdGlvbnNfMzImJih0aGlzLl9fUmVzcG9uc2VPcHRp
b25zXzMyPW5ldyB1LmIpLHRoaXMuX19SZXNwb25zZU9wdGlvbnNfMzJ9LGVudW1lcmFibGU6ITAs
Y29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJfWFNS
RlN0cmF0ZWd5XzMzIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PXRoaXMuX19YU1JGU3Ry
YXRlZ3lfMzMmJih0aGlzLl9fWFNSRlN0cmF0ZWd5XzMzPXUuYygpKSx0aGlzLl9fWFNSRlN0cmF0
ZWd5XzMzfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eShlLnByb3RvdHlwZSwiX1hIUkJhY2tlbmRfMzQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4g
bnVsbD09dGhpcy5fX1hIUkJhY2tlbmRfMzQmJih0aGlzLl9fWEhSQmFja2VuZF8zND1uZXcgdS5k
KHRoaXMuX0Jyb3dzZXJYaHJfMzEsdGhpcy5fUmVzcG9uc2VPcHRpb25zXzMyLHRoaXMuX1hTUkZT
dHJhdGVneV8zMykpLHRoaXMuX19YSFJCYWNrZW5kXzM0fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3Vy
YWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiX1JlcXVlc3RPcHRp
b25zXzM1Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PXRoaXMuX19SZXF1ZXN0T3B0aW9u
c18zNSYmKHRoaXMuX19SZXF1ZXN0T3B0aW9uc18zNT1uZXcgdS5lKSx0aGlzLl9fUmVxdWVzdE9w
dGlvbnNfMzV9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVBy
b3BlcnR5KGUucHJvdG90eXBlLCJfSHR0cF8zNiIse2dldDpmdW5jdGlvbigpe3JldHVybiBudWxs
PT10aGlzLl9fSHR0cF8zNiYmKHRoaXMuX19IdHRwXzM2PXUuZih0aGlzLl9YSFJCYWNrZW5kXzM0
LHRoaXMuX1JlcXVlc3RPcHRpb25zXzM1KSksdGhpcy5fX0h0dHBfMzZ9LGVudW1lcmFibGU6ITAs
Y29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUuY3JlYXRlSW50ZXJuYWw9ZnVuY3Rpb24oKXty
ZXR1cm4gdGhpcy5fQ29tbW9uTW9kdWxlXzA9bmV3IGkuYix0aGlzLl9FcnJvckhhbmRsZXJfMT1f
Lm0oKSx0aGlzLl9BUFBfSU5JVElBTElaRVJfMj1bbC5qLF8ubih0aGlzLnBhcmVudC5nZXQoXy5v
LG51bGwpLHRoaXMucGFyZW50LmdldChsLmssbnVsbCkpXSx0aGlzLl9BcHBsaWNhdGlvbkluaXRT
dGF0dXNfMz1uZXcgbC5sKHRoaXMuX0FQUF9JTklUSUFMSVpFUl8yKSx0aGlzLl/JtWZfND1uZXcg
bC5tKHRoaXMucGFyZW50LmdldChsLmgpLHRoaXMucGFyZW50LmdldChsLm4pLHRoaXMsdGhpcy5f
RXJyb3JIYW5kbGVyXzEsdGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsdGhpcy5fQXBwbGlj
YXRpb25Jbml0U3RhdHVzXzMpLHRoaXMuX0FwcGxpY2F0aW9uUmVmXzU9dGhpcy5fybVmXzQsdGhp
cy5fQXBwbGljYXRpb25Nb2R1bGVfNj1uZXcgbC5vKHRoaXMuX0FwcGxpY2F0aW9uUmVmXzUpLHRo
aXMuX0Jyb3dzZXJNb2R1bGVfNz1uZXcgXy5wKHRoaXMucGFyZW50LmdldChfLnAsbnVsbCkpLHRo
aXMuX8m1YmFfOD1uZXcgci5iLHRoaXMuX0Zvcm1zTW9kdWxlXzk9bmV3IHIuYyx0aGlzLl9IdHRw
TW9kdWxlXzEwPW5ldyB1LmcsdGhpcy5fQXBwTW9kdWxlXzExPW5ldyBvLmEsdGhpcy5fQXBwTW9k
dWxlXzExfSxlLnByb3RvdHlwZS5nZXRJbnRlcm5hbD1mdW5jdGlvbih0LGUpe3JldHVybiB0PT09
aS5iP3RoaXMuX0NvbW1vbk1vZHVsZV8wOnQ9PT1sLnA/dGhpcy5fRXJyb3JIYW5kbGVyXzE6dD09
PWwucT90aGlzLl9BUFBfSU5JVElBTElaRVJfMjp0PT09bC5sP3RoaXMuX0FwcGxpY2F0aW9uSW5p
dFN0YXR1c18zOnQ9PT1sLm0/dGhpcy5fybVmXzQ6dD09PWwucj90aGlzLl9BcHBsaWNhdGlvblJl
Zl81OnQ9PT1sLm8/dGhpcy5fQXBwbGljYXRpb25Nb2R1bGVfNjp0PT09Xy5wP3RoaXMuX0Jyb3dz
ZXJNb2R1bGVfNzp0PT09ci5iP3RoaXMuX8m1YmFfODp0PT09ci5jP3RoaXMuX0Zvcm1zTW9kdWxl
Xzk6dD09PXUuZz90aGlzLl9IdHRwTW9kdWxlXzEwOnQ9PT1vLmE/dGhpcy5fQXBwTW9kdWxlXzEx
OnQ9PT1sLmM/dGhpcy5fTE9DQUxFX0lEXzEyOnQ9PT1pLmM/dGhpcy5fTmdMb2NhbGl6YXRpb25f
MTM6dD09PWwuZD90aGlzLl9Db21waWxlcl8xNDp0PT09bC5zP3RoaXMuX0FQUF9JRF8xNTp0PT09
bC50P3RoaXMuX0l0ZXJhYmxlRGlmZmVyc18xNjp0PT09bC51P3RoaXMuX0tleVZhbHVlRGlmZmVy
c18xNzp0PT09Xy5xP3RoaXMuX0RvbVNhbml0aXplcl8xODp0PT09bC52P3RoaXMuX1Nhbml0aXpl
cl8xOTp0PT09Xy5yP3RoaXMuX0hBTU1FUl9HRVNUVVJFX0NPTkZJR18yMDp0PT09Xy5zP3RoaXMu
X0VWRU5UX01BTkFHRVJfUExVR0lOU18yMTp0PT09Xy5oP3RoaXMuX0V2ZW50TWFuYWdlcl8yMjp0
PT09Xy5pP3RoaXMuX8m1RG9tU2hhcmVkU3R5bGVzSG9zdF8yMzp0PT09Xy5qP3RoaXMuX8m1RG9t
UmVuZGVyZXJGYWN0b3J5Ml8yNDp0PT09bC53P3RoaXMuX1JlbmRlcmVyRmFjdG9yeTJfMjU6dD09
PV8udD90aGlzLl/JtVNoYXJlZFN0eWxlc0hvc3RfMjY6dD09PWwuaT90aGlzLl9UZXN0YWJpbGl0
eV8yNzp0PT09Xy5rP3RoaXMuX01ldGFfMjg6dD09PV8ubD90aGlzLl9UaXRsZV8yOTp0PT09ci5h
P3RoaXMuX8m1aV8zMDp0PT09dS5hP3RoaXMuX0Jyb3dzZXJYaHJfMzE6dD09PXUuaD90aGlzLl9S
ZXNwb25zZU9wdGlvbnNfMzI6dD09PXUuaT90aGlzLl9YU1JGU3RyYXRlZ3lfMzM6dD09PXUuZD90
aGlzLl9YSFJCYWNrZW5kXzM0OnQ9PT11Lmo/dGhpcy5fUmVxdWVzdE9wdGlvbnNfMzU6dD09PXUu
az90aGlzLl9IdHRwXzM2OmV9LGUucHJvdG90eXBlLmRlc3Ryb3lJbnRlcm5hbD1mdW5jdGlvbigp
e3RoaXMuX8m1Zl80Lm5nT25EZXN0cm95KCksdGhpcy5fX8m1RG9tU2hhcmVkU3R5bGVzSG9zdF8y
MyYmdGhpcy5fybVEb21TaGFyZWRTdHlsZXNIb3N0XzIzLm5nT25EZXN0cm95KCl9LGV9KGwueCks
cD1uZXcgbC55KGMsby5hKX0seDM1YjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO09iamVj
dC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbD1uKCIzajNL
Iiksbz1uKCJrWnFsIiksaT1uKCJRYmRtIiksXz1uKCJra2U2Iik7by5hLnByb2R1Y3Rpb24mJm4u
aShsLmEpKCksbi5pKGkuYSkoKS5ib290c3RyYXBNb2R1bGVGYWN0b3J5KF8uYSl9fSxbMF0pOwpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3Vs
YXIvZGlzdC9wb2x5ZmlsbHMuMmQ0NWE0YzczYzg1ZTI0ZmU0NzQuYnVuZGxlLmpzIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvYW5ndWxhci9kaXN0L3BvbHlmaWxscy4yZDQ1YTRjNzNjODVlMjRmZTQ3NC5idW5kbGUu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZGM1NWNiMjFlNTE0ZTk0YWYzMDA0ZTVhMzZlZTgzZDNlNzZlZjdiZAot
LS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvZGlzdC9wb2x5ZmlsbHMuMmQ0
NWE0YzczYzg1ZTI0ZmU0NzQuYnVuZGxlLmpzCkBAIC0wLDAgKzEsNDMgQEAKK3dlYnBhY2tKc29u
cChbMCw0XSx7Ii93aHUiOmZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKHZv
aWQgMD09dCl0aHJvdyBUeXBlRXJyb3IoIkNhbid0IGNhbGwgbWV0aG9kIG9uICAiK3QpO3JldHVy
biB0fX0sIjBSaWgiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiT3pJcSIp
LG89bigiRHM1UCIpLGk9bigiUjNBUCIpLGE9bigiQTE2TCIpLHU9bigiMWFBMCIpLGM9bigidm1T
TyIpLHM9bigiOUdwQSIpLGY9bigiVUtNKyIpLGw9bigiemdJdCIpLHA9bigicWt5YyIpLGg9bigi
eVl2SyIpLHY9bigia2ljNSIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbixkLHksZyl7dmFyIGs9
clt0XSx3PWssbT15PyJzZXQiOiJhZGQiLGI9dyYmdy5wcm90b3R5cGUsXz17fSxUPWZ1bmN0aW9u
KHQpe3ZhciBlPWJbdF07aShiLHQsImRlbGV0ZSI9PXQ/ZnVuY3Rpb24odCl7cmV0dXJuIShnJiYh
Zih0KSkmJmUuY2FsbCh0aGlzLDA9PT10PzA6dCl9OiJoYXMiPT10P2Z1bmN0aW9uKHQpe3JldHVy
biEoZyYmIWYodCkpJiZlLmNhbGwodGhpcywwPT09dD8wOnQpfToiZ2V0Ij09dD9mdW5jdGlvbih0
KXtyZXR1cm4gZyYmIWYodCk/dm9pZCAwOmUuY2FsbCh0aGlzLDA9PT10PzA6dCl9OiJhZGQiPT10
P2Z1bmN0aW9uKHQpe3JldHVybiBlLmNhbGwodGhpcywwPT09dD8wOnQpLHRoaXN9OmZ1bmN0aW9u
KHQsbil7cmV0dXJuIGUuY2FsbCh0aGlzLDA9PT10PzA6dCxuKSx0aGlzfSl9O2lmKCJmdW5jdGlv
biI9PXR5cGVvZiB3JiYoZ3x8Yi5mb3JFYWNoJiYhbChmdW5jdGlvbigpeyhuZXcgdykuZW50cmll
cygpLm5leHQoKX0pKSl7dmFyIE89bmV3IHcsUD1PW21dKGc/e306LTAsMSkhPU8sUz1sKGZ1bmN0
aW9uKCl7Ty5oYXMoMSl9KSxEPXAoZnVuY3Rpb24odCl7bmV3IHcodCl9KSxFPSFnJiZsKGZ1bmN0
aW9uKCl7Zm9yKHZhciB0PW5ldyB3LGU9NTtlLS07KXRbbV0oZSxlKTtyZXR1cm4hdC5oYXMoLTAp
fSk7RHx8KHc9ZShmdW5jdGlvbihlLG4pe3MoZSx3LHQpO3ZhciByPXYobmV3IGssZSx3KTtyZXR1
cm4gdm9pZCAwIT1uJiZjKG4seSxyW21dLHIpLHJ9KSx3LnByb3RvdHlwZT1iLGIuY29uc3RydWN0
b3I9dyksKFN8fEUpJiYoVCgiZGVsZXRlIiksVCgiaGFzIikseSYmVCgiZ2V0IikpLChFfHxQKSYm
VChtKSxnJiZiLmNsZWFyJiZkZWxldGUgYi5jbGVhcn1lbHNlIHc9ZC5nZXRDb25zdHJ1Y3Rvcihl
LHQseSxtKSxhKHcucHJvdG90eXBlLG4pLHUuTkVFRD0hMDtyZXR1cm4gaCh3LHQpLF9bdF09dyxv
KG8uRytvLlcrby5GKih3IT1rKSxfKSxnfHxkLnNldFN0cm9uZyh3LHQseSksd319LDE6ZnVuY3Rp
b24odCxlLG4pe3QuZXhwb3J0cz1uKCJYUzI1Iil9LCIxYUEwIjpmdW5jdGlvbih0LGUsbil7dmFy
IHI9bigidWxUWSIpKCJtZXRhIiksbz1uKCJVS00rIiksaT1uKCJXQmNMIiksYT1uKCJsRExrIiku
Zix1PTAsYz1PYmplY3QuaXNFeHRlbnNpYmxlfHxmdW5jdGlvbigpe3JldHVybiEwfSxzPSFuKCJ6
Z0l0IikoZnVuY3Rpb24oKXtyZXR1cm4gYyhPYmplY3QucHJldmVudEV4dGVuc2lvbnMoe30pKX0p
LGY9ZnVuY3Rpb24odCl7YSh0LHIse3ZhbHVlOntpOiJPIisgKyt1LHc6e319fSl9LGw9ZnVuY3Rp
b24odCxlKXtpZighbyh0KSlyZXR1cm4ic3ltYm9sIj09dHlwZW9mIHQ/dDooInN0cmluZyI9PXR5
cGVvZiB0PyJTIjoiUCIpK3Q7aWYoIWkodCxyKSl7aWYoIWModCkpcmV0dXJuIkYiO2lmKCFlKXJl
dHVybiJFIjtmKHQpfXJldHVybiB0W3JdLml9LHA9ZnVuY3Rpb24odCxlKXtpZighaSh0LHIpKXtp
ZighYyh0KSlyZXR1cm4hMDtpZighZSlyZXR1cm4hMTtmKHQpfXJldHVybiB0W3JdLnd9LGg9ZnVu
Y3Rpb24odCl7cmV0dXJuIHMmJnYuTkVFRCYmYyh0KSYmIWkodCxyKSYmZih0KSx0fSx2PXQuZXhw
b3J0cz17S0VZOnIsTkVFRDohMSxmYXN0S2V5OmwsZ2V0V2VhazpwLG9uRnJlZXplOmh9fSwiMnAx
cSI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oImxETGsiKSxvPW4oImZVMjUiKTt0LmV4cG9ydHM9
bigiYlVxTyIpP2Z1bmN0aW9uKHQsZSxuKXtyZXR1cm4gci5mKHQsZSxvKDEsbikpfTpmdW5jdGlv
bih0LGUsbil7cmV0dXJuIHRbZV09bix0fX0sIjJ0Rk4iOmZ1bmN0aW9uKHQsZSxuKXtuKCJDVlIr
Iiksbigidm1TdSIpLG4oIjRaVTEiKSxuKCJ5eDFVIiksbigiWDdhSyIpLG4oIlNQdFUiKSxuKCJB
NTJCIiksbigiUHVUZCIpLG4oImRtKzciKSxuKCJKRzM0IiksbigiUnc0SyIpLG4oIjltR1UiKSxu
KCJiVVkwIiksbigibVRwNyIpLHQuZXhwb3J0cz1uKCI3Z1gwIikuUmVmbGVjdH0sIjNxNHUiOmZ1
bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJ3Q3NvIiksbz1uKCJESVZQIiksaT1yLmtleSxhPXIubWFw
LHU9ci5zdG9yZTtyLmV4cCh7ZGVsZXRlTWV0YWRhdGE6ZnVuY3Rpb24odCxlKXt2YXIgbj1hcmd1
bWVudHMubGVuZ3RoPDM/dm9pZCAwOmkoYXJndW1lbnRzWzJdKSxyPWEobyhlKSxuLCExKTtpZih2
b2lkIDA9PT1yfHwhci5kZWxldGUodCkpcmV0dXJuITE7aWYoci5zaXplKXJldHVybiEwO3ZhciBj
PXUuZ2V0KGUpO3JldHVybiBjLmRlbGV0ZShuKSwhIWMuc2l6ZXx8dS5kZWxldGUoZSl9fSl9LCI0
WlUxIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigibERMayIpLG89bigiRHM1UCIpLGk9bigiRElW
UCIpLGE9bigiczRqMCIpO28oby5TK28uRipuKCJ6Z0l0IikoZnVuY3Rpb24oKXtSZWZsZWN0LmRl
ZmluZVByb3BlcnR5KHIuZih7fSwxLHt2YWx1ZToxfSksMSx7dmFsdWU6Mn0pfSksIlJlZmxlY3Qi
LHtkZWZpbmVQcm9wZXJ0eTpmdW5jdGlvbih0LGUsbil7aSh0KSxlPWEoZSwhMCksaShuKTt0cnl7
cmV0dXJuIHIuZih0LGUsbiksITB9Y2F0Y2godCl7cmV0dXJuITF9fX0pfSwiN2dYMCI6ZnVuY3Rp
b24odCxlKXt2YXIgbj10LmV4cG9ydHM9e3ZlcnNpb246IjIuNC4wIn07Im51bWJlciI9PXR5cGVv
ZiBfX2UmJihfX2U9bil9LCI3eWxYIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiRElWUCIpLG89
bigidHd4TSIpLGk9bigiUUtYbSIpLGE9bigibVpPTiIpKCJJRV9QUk9UTyIpLHU9ZnVuY3Rpb24o
KXt9LGM9InByb3RvdHlwZSIscz1mdW5jdGlvbigpe3ZhciB0LGU9bigiamh4ZiIpKCJpZnJhbWUi
KSxyPWkubGVuZ3RoLG89IjwiLGE9Ij4iO2ZvcihlLnN0eWxlLmRpc3BsYXk9Im5vbmUiLG4oImQw
NzUiKS5hcHBlbmRDaGlsZChlKSxlLnNyYz0iamF2YXNjcmlwdDoiLHQ9ZS5jb250ZW50V2luZG93
LmRvY3VtZW50LHQub3BlbigpLHQud3JpdGUobysic2NyaXB0IithKyJkb2N1bWVudC5GPU9iamVj
dCIrbysiL3NjcmlwdCIrYSksdC5jbG9zZSgpLHM9dC5GO3ItLTspZGVsZXRlIHNbY11baVtyXV07
cmV0dXJuIHMoKX07dC5leHBvcnRzPU9iamVjdC5jcmVhdGV8fGZ1bmN0aW9uKHQsZSl7dmFyIG47
cmV0dXJuIG51bGwhPT10Pyh1W2NdPXIodCksbj1uZXcgdSx1W2NdPW51bGwsblthXT10KTpuPXMo
KSx2b2lkIDA9PT1lP246byhuLGUpfX0sIjhEOEgiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJv
ZWloIiksbz1NYXRoLm1heCxpPU1hdGgubWluO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVy
biB0PXIodCksdDwwP28odCtlLDApOmkodCxlKX19LCI4V2JTIjpmdW5jdGlvbih0LGUsbil7dmFy
IHI9bigid0NzbyIpLG89bigiRElWUCIpLGk9bigiS09yZCIpLGE9ci5oYXMsdT1yLmtleSxjPWZ1
bmN0aW9uKHQsZSxuKXtpZihhKHQsZSxuKSlyZXR1cm4hMDt2YXIgcj1pKGUpO3JldHVybiBudWxs
IT09ciYmYyh0LHIsbil9O3IuZXhwKHtoYXNNZXRhZGF0YTpmdW5jdGlvbih0LGUpe3JldHVybiBj
KHQsbyhlKSxhcmd1bWVudHMubGVuZ3RoPDM/dm9pZCAwOnUoYXJndW1lbnRzWzJdKSl9fSl9LCI5
R3BBIjpmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbixyKXtpZighKHQgaW5z
dGFuY2VvZiBlKXx8dm9pZCAwIT09ciYmciBpbiB0KXRocm93IFR5cGVFcnJvcihuKyI6IGluY29y
cmVjdCBpbnZvY2F0aW9uISIpO3JldHVybiB0fX0sIjltR1UiOmZ1bmN0aW9uKHQsZSxuKXt2YXIg
cj1uKCJEczVQIiksbz1uKCJESVZQIiksaT1PYmplY3QucHJldmVudEV4dGVuc2lvbnM7cihyLlMs
IlJlZmxlY3QiLHtwcmV2ZW50RXh0ZW5zaW9uczpmdW5jdGlvbih0KXtvKHQpO3RyeXtyZXR1cm4g
aSYmaSh0KSwhMH1jYXRjaCh0KXtyZXR1cm4hMX19fSl9LCI5dmIxIjpmdW5jdGlvbih0LGUsbil7
dmFyIHI9bigiYk4xcCIpLG89bigia2tDdyIpKCJpdGVyYXRvciIpLGk9QXJyYXkucHJvdG90eXBl
O3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwIT09dCYmKHIuQXJyYXk9PT10fHxp
W29dPT09dCl9fSxBMTZMOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJSM0FQIik7dC5leHBvcnRz
PWZ1bmN0aW9uKHQsZSxuKXtmb3IodmFyIG8gaW4gZSlyKHQsbyxlW29dLG4pO3JldHVybiB0fX0s
QTUyQjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigieDl6diIpLG89bigiRHM1UCIpLGk9bigiRElW
UCIpO28oby5TLCJSZWZsZWN0Iix7Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOmZ1bmN0aW9uKHQs
ZSl7cmV0dXJuIHIuZihpKHQpLGUpfX0pfSxCYnlGOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJv
ZWloIiksbz1NYXRoLm1pbjt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHQ+MD9vKHIodCks
OTAwNzE5OTI1NDc0MDk5MSk6MH19LENFbmU6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2
YXIgcj1uKCJPeklxIiksbz1uKCJsRExrIiksaT1uKCJiVXFPIiksYT1uKCJra0N3IikoInNwZWNp
ZXMiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9clt0XTtpJiZlJiYhZVthXSYmby5mKGUs
YSx7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzfX0pfX0sIkNWUisi
OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJEczVQIiksbz1uKCJYU09aIiksaT1uKCJESVZQIiks
YT0obigiT3pJcSIpLlJlZmxlY3R8fHt9KS5hcHBseSx1PUZ1bmN0aW9uLmFwcGx5O3Ioci5TK3Iu
RiohbigiemdJdCIpKGZ1bmN0aW9uKCl7YShmdW5jdGlvbigpe30pfSksIlJlZmxlY3QiLHthcHBs
eTpmdW5jdGlvbih0LGUsbil7dmFyIHI9byh0KSxjPWkobik7cmV0dXJuIGE/YShyLGUsYyk6dS5j
YWxsKHIsZSxjKX19KX0sQ2hHcjpmdW5jdGlvbih0LGUsbil7bigieUoyeCIpLG4oIjNxNHUiKSxu
KCJOSGFKIiksbigidjNoVSIpLG4oInpaSHEiKSxuKCJ2c2g2IiksbigiOFdiUyIpLG4oInlPdEUi
KSxuKCJFWis1IiksdC5leHBvcnRzPW4oIjdnWDAiKS5SZWZsZWN0fSxESVZQOmZ1bmN0aW9uKHQs
ZSxuKXt2YXIgcj1uKCJVS00rIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKCFyKHQpKXRocm93
IFR5cGVFcnJvcih0KyIgaXMgbm90IGFuIG9iamVjdCEiKTtyZXR1cm4gdH19LERnaWk6ZnVuY3Rp
b24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJsRExrIikuZixvPW4oIjd5bFgiKSxpPW4o
IkExNkwiKSxhPW4oInJGelkiKSx1PW4oIjlHcEEiKSxjPW4oIi93aHUiKSxzPW4oInZtU08iKSxm
PW4oInVjMkEiKSxsPW4oIktCMW8iKSxwPW4oIkNFbmUiKSxoPW4oImJVcU8iKSx2PW4oIjFhQTAi
KS5mYXN0S2V5LGQ9aD8iX3MiOiJzaXplIix5PWZ1bmN0aW9uKHQsZSl7dmFyIG4scj12KGUpO2lm
KCJGIiE9PXIpcmV0dXJuIHQuX2lbcl07Zm9yKG49dC5fZjtuO249bi5uKWlmKG4uaz09ZSlyZXR1
cm4gbn07dC5leHBvcnRzPXtnZXRDb25zdHJ1Y3RvcjpmdW5jdGlvbih0LGUsbixmKXt2YXIgbD10
KGZ1bmN0aW9uKHQscil7dSh0LGwsZSwiX2kiKSx0Ll9pPW8obnVsbCksdC5fZj12b2lkIDAsdC5f
bD12b2lkIDAsdFtkXT0wLHZvaWQgMCE9ciYmcyhyLG4sdFtmXSx0KX0pO3JldHVybiBpKGwucHJv
dG90eXBlLHtjbGVhcjpmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLGU9dC5faSxuPXQuX2Y7bjtu
PW4ubiluLnI9ITAsbi5wJiYobi5wPW4ucC5uPXZvaWQgMCksZGVsZXRlIGVbbi5pXTt0Ll9mPXQu
X2w9dm9pZCAwLHRbZF09MH0sZGVsZXRlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj15KGUsdCk7
aWYobil7dmFyIHI9bi5uLG89bi5wO2RlbGV0ZSBlLl9pW24uaV0sbi5yPSEwLG8mJihvLm49ciks
ciYmKHIucD1vKSxlLl9mPT1uJiYoZS5fZj1yKSxlLl9sPT1uJiYoZS5fbD1vKSxlW2RdLS19cmV0
dXJuISFufSxmb3JFYWNoOmZ1bmN0aW9uKHQpe3UodGhpcyxsLCJmb3JFYWNoIik7Zm9yKHZhciBl
LG49YSh0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwLDMpO2U9ZT9lLm46
dGhpcy5fZjspZm9yKG4oZS52LGUuayx0aGlzKTtlJiZlLnI7KWU9ZS5wfSxoYXM6ZnVuY3Rpb24o
dCl7cmV0dXJuISF5KHRoaXMsdCl9fSksaCYmcihsLnByb3RvdHlwZSwic2l6ZSIse2dldDpmdW5j
dGlvbigpe3JldHVybiBjKHRoaXNbZF0pfX0pLGx9LGRlZjpmdW5jdGlvbih0LGUsbil7dmFyIHIs
byxpPXkodCxlKTtyZXR1cm4gaT9pLnY9bjoodC5fbD1pPXtpOm89dihlLCEwKSxrOmUsdjpuLHA6
cj10Ll9sLG46dm9pZCAwLHI6ITF9LHQuX2Z8fCh0Ll9mPWkpLHImJihyLm49aSksdFtkXSsrLCJG
IiE9PW8mJih0Ll9pW29dPWkpKSx0fSxnZXRFbnRyeTp5LHNldFN0cm9uZzpmdW5jdGlvbih0LGUs
bil7Zih0LGUsZnVuY3Rpb24odCxlKXt0aGlzLl90PXQsdGhpcy5faz1lLHRoaXMuX2w9dm9pZCAw
fSxmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLGU9dC5fayxuPXQuX2w7biYmbi5yOyluPW4ucDty
ZXR1cm4gdC5fdCYmKHQuX2w9bj1uP24ubjp0Ll90Ll9mKT8ia2V5cyI9PWU/bCgwLG4uayk6InZh
bHVlcyI9PWU/bCgwLG4udik6bCgwLFtuLmssbi52XSk6KHQuX3Q9dm9pZCAwLGwoMSkpfSxuPyJl
bnRyaWVzIjoidmFsdWVzIiwhbiwhMCkscChlKX19fSxEczVQOmZ1bmN0aW9uKHQsZSxuKXt2YXIg
cj1uKCJPeklxIiksbz1uKCI3Z1gwIiksaT1uKCIycDFxIiksYT1uKCJSM0FQIiksdT1uKCJyRnpZ
IiksYz0icHJvdG90eXBlIixzPWZ1bmN0aW9uKHQsZSxuKXt2YXIgZixsLHAsaCx2PXQmcy5GLGQ9
dCZzLkcseT10JnMuUyxnPXQmcy5QLGs9dCZzLkIsdz1kP3I6eT9yW2VdfHwocltlXT17fSk6KHJb
ZV18fHt9KVtjXSxtPWQ/bzpvW2VdfHwob1tlXT17fSksYj1tW2NdfHwobVtjXT17fSk7ZCYmKG49
ZSk7Zm9yKGYgaW4gbilsPSF2JiZ3JiZ2b2lkIDAhPT13W2ZdLHA9KGw/dzpuKVtmXSxoPWsmJmw/
dShwLHIpOmcmJiJmdW5jdGlvbiI9PXR5cGVvZiBwP3UoRnVuY3Rpb24uY2FsbCxwKTpwLHcmJmEo
dyxmLHAsdCZzLlUpLG1bZl0hPXAmJmkobSxmLGgpLGcmJmJbZl0hPXAmJihiW2ZdPXApfTtyLmNv
cmU9byxzLkY9MSxzLkc9MixzLlM9NCxzLlA9OCxzLkI9MTYscy5XPTMyLHMuVT02NCxzLlI9MTI4
LHQuZXhwb3J0cz1zfSxEdVIyOmZ1bmN0aW9uKHQsZSl7dmFyIG47bj1mdW5jdGlvbigpe3JldHVy
biB0aGlzfSgpO3RyeXtuPW58fEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCl8fCgwLGV2YWwpKCJ0
aGlzIil9Y2F0Y2godCl7Im9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJihuPXdpbmRvdyl9dC5leHBv
cnRzPW59LCJFWis1IjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigid0NzbyIpLG89bigiRElWUCIp
LGk9bigiWFNPWiIpLGE9ci5rZXksdT1yLnNldDtyLmV4cCh7bWV0YWRhdGE6ZnVuY3Rpb24odCxl
KXtyZXR1cm4gZnVuY3Rpb24obixyKXt1KHQsZSwodm9pZCAwIT09cj9vOmkpKG4pLGEocikpfX19
KX0sRnJ5UjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiL3dodSIpO3QuZXhwb3J0cz1mdW5jdGlv
bih0KXtyZXR1cm4gT2JqZWN0KHIodCkpfX0sSVJKMzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJp
Y3QiO3ZhciByPW4oIjd5bFgiKSxvPW4oImZVMjUiKSxpPW4oInlZdksiKSxhPXt9O24oIjJwMXEi
KShhLG4oImtrQ3ciKSgiaXRlcmF0b3IiKSxmdW5jdGlvbigpe3JldHVybiB0aGlzfSksdC5leHBv
cnRzPWZ1bmN0aW9uKHQsZSxuKXt0LnByb3RvdHlwZT1yKGEse25leHQ6bygxLG4pfSksaSh0LGUr
IiBJdGVyYXRvciIpfX0sSkczNDpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiRHM1UCIpLG89bigi
RElWUCIpLGk9T2JqZWN0LmlzRXh0ZW5zaWJsZTtyKHIuUywiUmVmbGVjdCIse2lzRXh0ZW5zaWJs
ZTpmdW5jdGlvbih0KXtyZXR1cm4gbyh0KSwhaXx8aSh0KX19KX0sS0IxbzpmdW5jdGlvbih0LGUp
e3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybnt2YWx1ZTplLGRvbmU6ISF0fX19LEtPcmQ6
ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIldCY0wiKSxvPW4oIkZyeVIiKSxpPW4oIm1aT04iKSgi
SUVfUFJPVE8iKSxhPU9iamVjdC5wcm90b3R5cGU7dC5leHBvcnRzPU9iamVjdC5nZXRQcm90b3R5
cGVPZnx8ZnVuY3Rpb24odCl7cmV0dXJuIHQ9byh0KSxyKHQsaSk/dFtpXToiZnVuY3Rpb24iPT10
eXBlb2YgdC5jb25zdHJ1Y3RvciYmdCBpbnN0YW5jZW9mIHQuY29uc3RydWN0b3I/dC5jb25zdHJ1
Y3Rvci5wcm90b3R5cGU6dCBpbnN0YW5jZW9mIE9iamVjdD9hOm51bGx9fSxMaFRhOmZ1bmN0aW9u
KHQsZSxuKXt2YXIgcj1uKCJyRnpZIiksbz1uKCJRNk5mIiksaT1uKCJGcnlSIiksYT1uKCJCYnlG
IiksdT1uKCJwbFNWIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIG49MT09dCxjPTI9PXQs
cz0zPT10LGY9ND09dCxsPTY9PXQscD01PT10fHxsLGg9ZXx8dTtyZXR1cm4gZnVuY3Rpb24oZSx1
LHYpe2Zvcih2YXIgZCx5LGc9aShlKSxrPW8oZyksdz1yKHUsdiwzKSxtPWEoay5sZW5ndGgpLGI9
MCxfPW4/aChlLG0pOmM/aChlLDApOnZvaWQgMDttPmI7YisrKWlmKChwfHxiIGluIGspJiYoZD1r
W2JdLHk9dyhkLGIsZyksdCkpaWYobilfW2JdPXk7ZWxzZSBpZih5KXN3aXRjaCh0KXtjYXNlIDM6
cmV0dXJuITA7Y2FzZSA1OnJldHVybiBkO2Nhc2UgNjpyZXR1cm4gYjtjYXNlIDI6Xy5wdXNoKGQp
fWVsc2UgaWYoZilyZXR1cm4hMTtyZXR1cm4gbD8tMTpzfHxmP2Y6X319fSxNc3VROmZ1bmN0aW9u
KHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiRGdpaSIpO3QuZXhwb3J0cz1uKCIwUmloIiko
Ik1hcCIsZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQodGhpcyxhcmd1bWVu
dHMubGVuZ3RoPjA/YXJndW1lbnRzWzBdOnZvaWQgMCl9fSx7Z2V0OmZ1bmN0aW9uKHQpe3ZhciBl
PXIuZ2V0RW50cnkodGhpcyx0KTtyZXR1cm4gZSYmZS52fSxzZXQ6ZnVuY3Rpb24odCxlKXtyZXR1
cm4gci5kZWYodGhpcywwPT09dD8wOnQsZSl9fSxyLCEwKX0sTkhhSjpmdW5jdGlvbih0LGUsbil7
dmFyIHI9bigid0NzbyIpLG89bigiRElWUCIpLGk9bigiS09yZCIpLGE9ci5oYXMsdT1yLmdldCxj
PXIua2V5LHM9ZnVuY3Rpb24odCxlLG4pe2lmKGEodCxlLG4pKXJldHVybiB1KHQsZSxuKTt2YXIg
cj1pKGUpO3JldHVybiBudWxsIT09cj9zKHQscixuKTp2b2lkIDB9O3IuZXhwKHtnZXRNZXRhZGF0
YTpmdW5jdGlvbih0LGUpe3JldHVybiBzKHQsbyhlKSxhcmd1bWVudHMubGVuZ3RoPDM/dm9pZCAw
OmMoYXJndW1lbnRzWzJdKSl9fSl9LE96SXE6ZnVuY3Rpb24odCxlKXt2YXIgbj10LmV4cG9ydHM9
InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJndpbmRvdy5NYXRoPT1NYXRoP3dpbmRvdzoidW5k
ZWZpbmVkIiE9dHlwZW9mIHNlbGYmJnNlbGYuTWF0aD09TWF0aD9zZWxmOkZ1bmN0aW9uKCJyZXR1
cm4gdGhpcyIpKCk7Im51bWJlciI9PXR5cGVvZiBfX2cmJihfX2c9bil9LFBIQ3g6ZnVuY3Rpb24o
dCxlKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe3ZhciByPXZvaWQgMD09PW47c3dpdGNoKGUu
bGVuZ3RoKXtjYXNlIDA6cmV0dXJuIHI/dCgpOnQuY2FsbChuKTtjYXNlIDE6cmV0dXJuIHI/dChl
WzBdKTp0LmNhbGwobixlWzBdKTtjYXNlIDI6cmV0dXJuIHI/dChlWzBdLGVbMV0pOnQuY2FsbChu
LGVbMF0sZVsxXSk7Y2FzZSAzOnJldHVybiByP3QoZVswXSxlWzFdLGVbMl0pOnQuY2FsbChuLGVb
MF0sZVsxXSxlWzJdKTtjYXNlIDQ6cmV0dXJuIHI/dChlWzBdLGVbMV0sZVsyXSxlWzNdKTp0LmNh
bGwobixlWzBdLGVbMV0sZVsyXSxlWzNdKX1yZXR1cm4gdC5hcHBseShuLGUpfX0sUEhxaDpmdW5j
dGlvbih0LGUsbil7dmFyIHI9bigiUTZOZiIpLG89bigiL3dodSIpO3QuZXhwb3J0cz1mdW5jdGlv
bih0KXtyZXR1cm4gcihvKHQpKX19LFB1VGQ6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkRzNVAi
KSxvPW4oIktPcmQiKSxpPW4oIkRJVlAiKTtyKHIuUywiUmVmbGVjdCIse2dldFByb3RvdHlwZU9m
OmZ1bmN0aW9uKHQpe3JldHVybiBvKGkodCkpfX0pfSxRNk5mOmZ1bmN0aW9uKHQsZSxuKXt2YXIg
cj1uKCJ5ZEQ1Iik7dC5leHBvcnRzPU9iamVjdCgieiIpLnByb3BlcnR5SXNFbnVtZXJhYmxlKDAp
P09iamVjdDpmdW5jdGlvbih0KXtyZXR1cm4iU3RyaW5nIj09cih0KT90LnNwbGl0KCIiKTpPYmpl
Y3QodCl9fSxRRzd1OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJ2bVNPIik7dC5leHBvcnRzPWZ1
bmN0aW9uKHQsZSl7dmFyIG49W107cmV0dXJuIHIodCwhMSxuLnB1c2gsbixlKSxufX0sUUtYbTpm
dW5jdGlvbih0LGUpe3QuZXhwb3J0cz0iY29uc3RydWN0b3IsaGFzT3duUHJvcGVydHksaXNQcm90
b3R5cGVPZixwcm9wZXJ0eUlzRW51bWVyYWJsZSx0b0xvY2FsZVN0cmluZyx0b1N0cmluZyx2YWx1
ZU9mIi5zcGxpdCgiLCIpfSxRaDE0OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJSZUd1Iiksbz1u
KCJRS1htIik7dC5leHBvcnRzPU9iamVjdC5rZXlzfHxmdW5jdGlvbih0KXtyZXR1cm4gcih0LG8p
fX0sUjNBUDpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiT3pJcSIpLG89bigiMnAxcSIpLGk9bigi
V0JjTCIpLGE9bigidWxUWSIpKCJzcmMiKSx1PSJ0b1N0cmluZyIsYz1GdW5jdGlvblt1XSxzPSgi
IitjKS5zcGxpdCh1KTtuKCI3Z1gwIikuaW5zcGVjdFNvdXJjZT1mdW5jdGlvbih0KXtyZXR1cm4g
Yy5jYWxsKHQpfSwodC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuLHUpe3ZhciBjPSJmdW5jdGlvbiI9
PXR5cGVvZiBuO2MmJihpKG4sIm5hbWUiKXx8byhuLCJuYW1lIixlKSksdFtlXSE9PW4mJihjJiYo
aShuLGEpfHxvKG4sYSx0W2VdPyIiK3RbZV06cy5qb2luKFN0cmluZyhlKSkpKSx0PT09cj90W2Vd
PW46dT90W2VdP3RbZV09bjpvKHQsZSxuKTooZGVsZXRlIHRbZV0sbyh0LGUsbikpKX0pKEZ1bmN0
aW9uLnByb3RvdHlwZSx1LGZ1bmN0aW9uKCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMm
JnRoaXNbYV18fGMuY2FsbCh0aGlzKX0pfSxSZUd1OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJX
QmNMIiksbz1uKCJQSHFoIiksaT1uKCJvdDVzIikoITEpLGE9bigibVpPTiIpKCJJRV9QUk9UTyIp
O3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciBuLHU9byh0KSxjPTAscz1bXTtmb3IobiBpbiB1
KW4hPWEmJnIodSxuKSYmcy5wdXNoKG4pO2Zvcig7ZS5sZW5ndGg+Yzspcih1LG49ZVtjKytdKSYm
KH5pKHMsbil8fHMucHVzaChuKSk7cmV0dXJuIHN9fSxSdzRLOmZ1bmN0aW9uKHQsZSxuKXt2YXIg
cj1uKCJEczVQIik7cihyLlMsIlJlZmxlY3QiLHtvd25LZXlzOm4oIllVcjciKX0pfSxTSGU5OmZ1
bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJ3QzFOIiksbz1uKCJra0N3IikoIml0ZXJhdG9yIiksaT1u
KCJiTjFwIik7dC5leHBvcnRzPW4oIjdnWDAiKS5nZXRJdGVyYXRvck1ldGhvZD1mdW5jdGlvbih0
KXtpZih2b2lkIDAhPXQpcmV0dXJuIHRbb118fHRbIkBAaXRlcmF0b3IiXXx8aVtyKHQpXX19LFNQ
dFU6ZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIHIodCxlKXt2YXIgbix1LGY9YXJndW1lbnRzLmxl
bmd0aDwzP3Q6YXJndW1lbnRzWzJdO3JldHVybiBzKHQpPT09Zj90W2VdOihuPW8uZih0LGUpKT9h
KG4sInZhbHVlIik/bi52YWx1ZTp2b2lkIDAhPT1uLmdldD9uLmdldC5jYWxsKGYpOnZvaWQgMDpj
KHU9aSh0KSk/cih1LGUsZik6dm9pZCAwfXZhciBvPW4oIng5enYiKSxpPW4oIktPcmQiKSxhPW4o
IldCY0wiKSx1PW4oIkRzNVAiKSxjPW4oIlVLTSsiKSxzPW4oIkRJVlAiKTt1KHUuUywiUmVmbGVj
dCIse2dldDpyfSl9LCJVS00rIjpmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz1mdW5jdGlvbih0KXty
ZXR1cm4ib2JqZWN0Ij09dHlwZW9mIHQ/bnVsbCE9PXQ6ImZ1bmN0aW9uIj09dHlwZW9mIHR9fSwi
VjNsLyI6ZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ITF9LFZXZ0Y6ZnVuY3Rpb24odCxlLG4pe3Zh
ciByPW4oIk96SXEiKSxvPSJfX2NvcmUtanNfc2hhcmVkX18iLGk9cltvXXx8KHJbb109e30pO3Qu
ZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gaVt0XXx8KGlbdF09e30pfX0sVzJuVTpmdW5jdGlv
bih0LGUpe2Z1bmN0aW9uIG4oKXt0aHJvdyBuZXcgRXJyb3IoInNldFRpbWVvdXQgaGFzIG5vdCBi
ZWVuIGRlZmluZWQiKX1mdW5jdGlvbiByKCl7dGhyb3cgbmV3IEVycm9yKCJjbGVhclRpbWVvdXQg
aGFzIG5vdCBiZWVuIGRlZmluZWQiKX1mdW5jdGlvbiBvKHQpe2lmKGY9PT1zZXRUaW1lb3V0KXJl
dHVybiBzZXRUaW1lb3V0KHQsMCk7aWYoKGY9PT1ufHwhZikmJnNldFRpbWVvdXQpcmV0dXJuIGY9
c2V0VGltZW91dCxzZXRUaW1lb3V0KHQsMCk7dHJ5e3JldHVybiBmKHQsMCl9Y2F0Y2goZSl7dHJ5
e3JldHVybiBmLmNhbGwobnVsbCx0LDApfWNhdGNoKGUpe3JldHVybiBmLmNhbGwodGhpcyx0LDAp
fX19ZnVuY3Rpb24gaSh0KXtpZihsPT09Y2xlYXJUaW1lb3V0KXJldHVybiBjbGVhclRpbWVvdXQo
dCk7aWYoKGw9PT1yfHwhbCkmJmNsZWFyVGltZW91dClyZXR1cm4gbD1jbGVhclRpbWVvdXQsY2xl
YXJUaW1lb3V0KHQpO3RyeXtyZXR1cm4gbCh0KX1jYXRjaChlKXt0cnl7cmV0dXJuIGwuY2FsbChu
dWxsLHQpfWNhdGNoKGUpe3JldHVybiBsLmNhbGwodGhpcyx0KX19fWZ1bmN0aW9uIGEoKXtkJiZo
JiYoZD0hMSxoLmxlbmd0aD92PWguY29uY2F0KHYpOnk9LTEsdi5sZW5ndGgmJnUoKSl9ZnVuY3Rp
b24gdSgpe2lmKCFkKXt2YXIgdD1vKGEpO2Q9ITA7Zm9yKHZhciBlPXYubGVuZ3RoO2U7KXtmb3Io
aD12LHY9W107Kyt5PGU7KWgmJmhbeV0ucnVuKCk7eT0tMSxlPXYubGVuZ3RofWg9bnVsbCxkPSEx
LGkodCl9fWZ1bmN0aW9uIGModCxlKXt0aGlzLmZ1bj10LHRoaXMuYXJyYXk9ZX1mdW5jdGlvbiBz
KCl7fXZhciBmLGwscD10LmV4cG9ydHM9e307IWZ1bmN0aW9uKCl7dHJ5e2Y9ImZ1bmN0aW9uIj09
dHlwZW9mIHNldFRpbWVvdXQ/c2V0VGltZW91dDpufWNhdGNoKHQpe2Y9bn10cnl7bD0iZnVuY3Rp
b24iPT10eXBlb2YgY2xlYXJUaW1lb3V0P2NsZWFyVGltZW91dDpyfWNhdGNoKHQpe2w9cn19KCk7
dmFyIGgsdj1bXSxkPSExLHk9LTE7cC5uZXh0VGljaz1mdW5jdGlvbih0KXt2YXIgZT1uZXcgQXJy
YXkoYXJndW1lbnRzLmxlbmd0aC0xKTtpZihhcmd1bWVudHMubGVuZ3RoPjEpZm9yKHZhciBuPTE7
bjxhcmd1bWVudHMubGVuZ3RoO24rKyllW24tMV09YXJndW1lbnRzW25dO3YucHVzaChuZXcgYyh0
LGUpKSwxIT09di5sZW5ndGh8fGR8fG8odSl9LGMucHJvdG90eXBlLnJ1bj1mdW5jdGlvbigpe3Ro
aXMuZnVuLmFwcGx5KG51bGwsdGhpcy5hcnJheSl9LHAudGl0bGU9ImJyb3dzZXIiLHAuYnJvd3Nl
cj0hMCxwLmVudj17fSxwLmFyZ3Y9W10scC52ZXJzaW9uPSIiLHAudmVyc2lvbnM9e30scC5vbj1z
LHAuYWRkTGlzdGVuZXI9cyxwLm9uY2U9cyxwLm9mZj1zLHAucmVtb3ZlTGlzdGVuZXI9cyxwLnJl
bW92ZUFsbExpc3RlbmVycz1zLHAuZW1pdD1zLHAuYmluZGluZz1mdW5jdGlvbih0KXt0aHJvdyBu
ZXcgRXJyb3IoInByb2Nlc3MuYmluZGluZyBpcyBub3Qgc3VwcG9ydGVkIil9LHAuY3dkPWZ1bmN0
aW9uKCl7cmV0dXJuIi8ifSxwLmNoZGlyPWZ1bmN0aW9uKHQpe3Rocm93IG5ldyBFcnJvcigicHJv
Y2Vzcy5jaGRpciBpcyBub3Qgc3VwcG9ydGVkIil9LHAudW1hc2s9ZnVuY3Rpb24oKXtyZXR1cm4g
MH19LFdCY0w6ZnVuY3Rpb24odCxlKXt2YXIgbj17fS5oYXNPd25Qcm9wZXJ0eTt0LmV4cG9ydHM9
ZnVuY3Rpb24odCxlKXtyZXR1cm4gbi5jYWxsKHQsZSl9fSxXY08xOmZ1bmN0aW9uKHQsZSxuKXt2
YXIgcj1uKCJSZUd1Iiksbz1uKCJRS1htIikuY29uY2F0KCJsZW5ndGgiLCJwcm90b3R5cGUiKTtl
LmY9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXN8fGZ1bmN0aW9uKHQpe3JldHVybiByKHQsbyl9
fSxYN2FLOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiRHM1UCIpLG89bigi
RElWUCIpLGk9ZnVuY3Rpb24odCl7dGhpcy5fdD1vKHQpLHRoaXMuX2k9MDt2YXIgZSxuPXRoaXMu
X2s9W107Zm9yKGUgaW4gdCluLnB1c2goZSl9O24oIklSSjMiKShpLCJPYmplY3QiLGZ1bmN0aW9u
KCl7dmFyIHQsZT10aGlzLG49ZS5faztkb3tpZihlLl9pPj1uLmxlbmd0aClyZXR1cm57dmFsdWU6
dm9pZCAwLGRvbmU6ITB9fXdoaWxlKCEoKHQ9bltlLl9pKytdKWluIGUuX3QpKTtyZXR1cm57dmFs
dWU6dCxkb25lOiExfX0pLHIoci5TLCJSZWZsZWN0Iix7ZW51bWVyYXRlOmZ1bmN0aW9uKHQpe3Jl
dHVybiBuZXcgaSh0KX19KX0sWE8xUjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigieWRENSIpO3Qu
ZXhwb3J0cz1BcnJheS5pc0FycmF5fHxmdW5jdGlvbih0KXtyZXR1cm4iQXJyYXkiPT1yKHQpfX0s
WFMyNTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShl
LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcj1uKCIydEZOIiksbz0obi5uKHIpLG4oIkNo
R3IiKSksaT0obi5uKG8pLG4oIlpTUjEiKSk7bi5uKGkpfSxYU09aOmZ1bmN0aW9uKHQsZSl7dC5l
eHBvcnRzPWZ1bmN0aW9uKHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IFR5cGVFcnJv
cih0KyIgaXMgbm90IGEgZnVuY3Rpb24hIik7cmV0dXJuIHR9fSxYdlVzOmZ1bmN0aW9uKHQsZSxu
KXt2YXIgcj1uKCJESVZQIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuLG8pe3RyeXtyZXR1cm4g
bz9lKHIobilbMF0sblsxXSk6ZShuKX1jYXRjaChlKXt2YXIgaT10LnJldHVybjt0aHJvdyB2b2lk
IDAhPT1pJiZyKGkuY2FsbCh0KSksZX19fSxZMU4zOmZ1bmN0aW9uKHQsZSl7ZS5mPU9iamVjdC5n
ZXRPd25Qcm9wZXJ0eVN5bWJvbHN9LFkxYUE6ZnVuY3Rpb24odCxlKXtlLmY9e30ucHJvcGVydHlJ
c0VudW1lcmFibGV9LFlVcjc6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIldjTzEiKSxvPW4oIlkx
TjMiKSxpPW4oIkRJVlAiKSxhPW4oIk96SXEiKS5SZWZsZWN0O3QuZXhwb3J0cz1hJiZhLm93bktl
eXN8fGZ1bmN0aW9uKHQpe3ZhciBlPXIuZihpKHQpKSxuPW8uZjtyZXR1cm4gbj9lLmNvbmNhdChu
KHQpKTplfX0sWkRYbTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByLG89bigiTGhU
YSIpKDApLGk9bigiUjNBUCIpLGE9bigiMWFBMCIpLHU9bigib1lkNyIpLGM9bigiZkpTeCIpLHM9
bigiVUtNKyIpLGY9YS5nZXRXZWFrLGw9T2JqZWN0LmlzRXh0ZW5zaWJsZSxwPWMudWZzdG9yZSxo
PXt9LHY9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQodGhpcyxhcmd1bWVu
dHMubGVuZ3RoPjA/YXJndW1lbnRzWzBdOnZvaWQgMCl9fSxkPXtnZXQ6ZnVuY3Rpb24odCl7aWYo
cyh0KSl7dmFyIGU9Zih0KTtyZXR1cm4hMD09PWU/cCh0aGlzKS5nZXQodCk6ZT9lW3RoaXMuX2ld
OnZvaWQgMH19LHNldDpmdW5jdGlvbih0LGUpe3JldHVybiBjLmRlZih0aGlzLHQsZSl9fSx5PXQu
ZXhwb3J0cz1uKCIwUmloIikoIldlYWtNYXAiLHYsZCxjLCEwLCEwKTs3IT0obmV3IHkpLnNldCgo
T2JqZWN0LmZyZWV6ZXx8T2JqZWN0KShoKSw3KS5nZXQoaCkmJihyPWMuZ2V0Q29uc3RydWN0b3Io
diksdShyLnByb3RvdHlwZSxkKSxhLk5FRUQ9ITAsbyhbImRlbGV0ZSIsImhhcyIsImdldCIsInNl
dCJdLGZ1bmN0aW9uKHQpe3ZhciBlPXkucHJvdG90eXBlLG49ZVt0XTtpKGUsdCxmdW5jdGlvbihl
LG8pe2lmKHMoZSkmJiFsKGUpKXt0aGlzLl9mfHwodGhpcy5fZj1uZXcgcik7dmFyIGk9dGhpcy5f
Zlt0XShlLG8pO3JldHVybiJzZXQiPT10P3RoaXM6aX1yZXR1cm4gbi5jYWxsKHRoaXMsZSxvKX0p
fSkpfSxaU1IxOmZ1bmN0aW9uKHQsZSxuKXsoZnVuY3Rpb24odCxlKXsvKioKKyogQGxpY2Vuc2UK
KyogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisqCisqIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCisqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFy
LmlvL2xpY2Vuc2UKKyovCishZnVuY3Rpb24odCxlKXtlKCl9KDAsZnVuY3Rpb24oKXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gbih0LGUpe2Zvcih2YXIgbj10Lmxlbmd0aC0xO24+PTA7bi0tKSJmdW5j
dGlvbiI9PXR5cGVvZiB0W25dJiYodFtuXT1ab25lLmN1cnJlbnQud3JhcCh0W25dLGUrIl8iK24p
KTtyZXR1cm4gdH1mdW5jdGlvbiByKHQsZSl7Zm9yKHZhciByPXQuY29uc3RydWN0b3IubmFtZSxv
PWZ1bmN0aW9uKG8pe3ZhciBpPWVbb10sYT10W2ldO2EmJih0W2ldPWZ1bmN0aW9uKHQpe3JldHVy
biBmdW5jdGlvbigpe3JldHVybiB0LmFwcGx5KHRoaXMsbihhcmd1bWVudHMscisiLiIraSkpfX0o
YSkpfSxpPTA7aTxlLmxlbmd0aDtpKyspbyhpKX1mdW5jdGlvbiBvKHQsZSl7dmFyIG49T2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LGUpfHx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFi
bGU6ITB9LHI9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LCJvcmlnaW5hbCIrZSk7
IXImJm4uZ2V0JiZPYmplY3QuZGVmaW5lUHJvcGVydHkodCwib3JpZ2luYWwiK2Use2VudW1lcmFi
bGU6ITEsY29uZmlndXJhYmxlOiEwLGdldDpuLmdldH0pLGRlbGV0ZSBuLndyaXRhYmxlLGRlbGV0
ZSBuLnZhbHVlO3ZhciBvPWUuc3Vic3RyKDIpLGk9eCgiXyIrZSk7bi5zZXQ9ZnVuY3Rpb24odCl7
aWYodGhpc1tpXSYmdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKG8sdGhpc1tpXSksImZ1bmN0aW9u
Ij09dHlwZW9mIHQpe3ZhciBlPWZ1bmN0aW9uKGUpe3ZhciBuO3JldHVybiBuPXQuYXBwbHkodGhp
cyxhcmd1bWVudHMpLHZvaWQgMD09bnx8bnx8ZS5wcmV2ZW50RGVmYXVsdCgpLG59O3RoaXNbaV09
ZSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIobyxlLCExKX1lbHNlIHRoaXNbaV09bnVsbH0sbi5nZXQ9
ZnVuY3Rpb24oKXt2YXIgdD10aGlzW2ldfHxudWxsO3JldHVybiBudWxsPT09dCYmciYmci5nZXQm
Jih0PXIuZ2V0LmFwcGx5KHRoaXMsYXJndW1lbnRzKSkmJihuLnNldC5hcHBseSh0aGlzLFt0XSks
ImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMucmVtb3ZlQXR0cmlidXRlJiZ0aGlzLnJlbW92ZUF0dHJp
YnV0ZShlKSksdGhpc1tpXXx8bnVsbH0sT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSxuKX1mdW5j
dGlvbiBpKHQsZSl7dmFyIG49W107Zm9yKHZhciByIGluIHQpIm9uIj09ci5zdWJzdHIoMCwyKSYm
bi5wdXNoKHIpO2Zvcih2YXIgaT0wO2k8bi5sZW5ndGg7aSsrKW8odCxuW2ldKTtpZihlKWZvcih2
YXIgYT0wO2E8ZS5sZW5ndGg7YSsrKW8odCwib24iK2VbYV0pfWZ1bmN0aW9uIGEodCxlLG4scixv
KXt2YXIgaT10W1JdO2lmKGkpZm9yKHZhciBhPTA7YTxpLmxlbmd0aDthKyspe3ZhciB1PWlbYV0s
Yz11LmRhdGEscz1jLmhhbmRsZXI7aWYoKGMuaGFuZGxlcj09PWV8fHMubGlzdGVuZXI9PT1lKSYm
Yy51c2VDYXB0dXJpbmc9PT1yJiZjLmV2ZW50TmFtZT09PW4pcmV0dXJuIG8mJmkuc3BsaWNlKGEs
MSksdX1yZXR1cm4gbnVsbH1mdW5jdGlvbiB1KHQsZSxuKXt2YXIgcj10W1JdO3J8fChyPXRbUl09
W10pLG4/ci51bnNoaWZ0KGUpOnIucHVzaChlKX1mdW5jdGlvbiBjKHQsZSxuLHIsbyxpKXtmdW5j
dGlvbiBjKHQpe3ZhciBlPXQuZGF0YTtyZXR1cm4gdShlLnRhcmdldCx0LG8pLGUuaW52b2tlQWRk
RnVuYyhmLHQpfWZ1bmN0aW9uIHModCl7dmFyIGU9dC5kYXRhO3JldHVybiBhKGUudGFyZ2V0LHQu
aW52b2tlLGUuZXZlbnROYW1lLGUudXNlQ2FwdHVyaW5nLCEwKSxlLmludm9rZVJlbW92ZUZ1bmMo
bCx0KX12b2lkIDA9PT1uJiYobj0hMCksdm9pZCAwPT09ciYmKHI9ITEpLHZvaWQgMD09PW8mJihv
PSExKSx2b2lkIDA9PT1pJiYoaT1MKTt2YXIgZj14KHQpLGw9eChlKSxwPSFuJiZ2b2lkIDA7cmV0
dXJuIGZ1bmN0aW9uKGUsbil7dmFyIG89aShlLG4pO28udXNlQ2FwdHVyaW5nPW8udXNlQ2FwdHVy
aW5nfHxwO3ZhciB1PW51bGw7ImZ1bmN0aW9uIj09dHlwZW9mIG8uaGFuZGxlcj91PW8uaGFuZGxl
cjpvLmhhbmRsZXImJm8uaGFuZGxlci5oYW5kbGVFdmVudCYmKHU9ZnVuY3Rpb24odCl7cmV0dXJu
IG8uaGFuZGxlci5oYW5kbGVFdmVudCh0KX0pO3ZhciBsPSExO3RyeXtsPW8uaGFuZGxlciYmIltv
YmplY3QgRnVuY3Rpb25XcmFwcGVyXSI9PT1vLmhhbmRsZXIudG9TdHJpbmcoKX1jYXRjaCh0KXty
ZXR1cm59aWYoIXV8fGwpcmV0dXJuIG8uaW52b2tlQWRkRnVuYyhmLG8uaGFuZGxlcik7aWYoIXIp
e3ZhciBoPWEoby50YXJnZXQsby5oYW5kbGVyLG8uZXZlbnROYW1lLG8udXNlQ2FwdHVyaW5nLCEx
KTtpZihoKXJldHVybiBvLmludm9rZUFkZEZ1bmMoZixoKX12YXIgdj1ab25lLmN1cnJlbnQsZD1v
LnRhcmdldC5jb25zdHJ1Y3Rvci5uYW1lKyIuIit0KyI6IitvLmV2ZW50TmFtZTt2LnNjaGVkdWxl
RXZlbnRUYXNrKGQsdSxvLGMscyl9fWZ1bmN0aW9uIHModCxlLG4pe3ZvaWQgMD09PWUmJihlPSEw
KSx2b2lkIDA9PT1uJiYobj1MKTt2YXIgcj14KHQpLG89IWUmJnZvaWQgMDtyZXR1cm4gZnVuY3Rp
b24odCxlKXt2YXIgaT1uKHQsZSk7aS51c2VDYXB0dXJpbmc9aS51c2VDYXB0dXJpbmd8fG87dmFy
IHU9YShpLnRhcmdldCxpLmhhbmRsZXIsaS5ldmVudE5hbWUsaS51c2VDYXB0dXJpbmcsITApO3U/
dS56b25lLmNhbmNlbFRhc2sodSk6aS5pbnZva2VSZW1vdmVGdW5jKHIsaS5oYW5kbGVyKX19ZnVu
Y3Rpb24gZih0LGUsbixyKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9Riksdm9pZCAwPT09biYmKG49
TSksdm9pZCAwPT09ciYmKHI9TCksISghdHx8IXRbZV0pJiYoaCh0LGUsZnVuY3Rpb24oKXtyZXR1
cm4gYyhlLG4sITAsITEsITEscil9KSxoKHQsbixmdW5jdGlvbigpe3JldHVybiBzKG4sITAscil9
KSwhMCl9ZnVuY3Rpb24gbCh0KXt2YXIgZT1qW3RdO2lmKGUpe2pbdF09ZnVuY3Rpb24oKXt2YXIg
cj1uKGFyZ3VtZW50cyx0KTtzd2l0Y2goci5sZW5ndGgpe2Nhc2UgMDp0aGlzW3FdPW5ldyBlO2Jy
ZWFrO2Nhc2UgMTp0aGlzW3FdPW5ldyBlKHJbMF0pO2JyZWFrO2Nhc2UgMjp0aGlzW3FdPW5ldyBl
KHJbMF0sclsxXSk7YnJlYWs7Y2FzZSAzOnRoaXNbcV09bmV3IGUoclswXSxyWzFdLHJbMl0pO2Jy
ZWFrO2Nhc2UgNDp0aGlzW3FdPW5ldyBlKHJbMF0sclsxXSxyWzJdLHJbM10pO2JyZWFrO2RlZmF1
bHQ6dGhyb3cgbmV3IEVycm9yKCJBcmcgbGlzdCB0b28gbG9uZy4iKX19O3ZhciByLG89bmV3IGUo
ZnVuY3Rpb24oKXt9KTtmb3IociBpbiBvKSJYTUxIdHRwUmVxdWVzdCI9PT10JiYicmVzcG9uc2VC
bG9iIj09PXJ8fGZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBvW2VdP2pbdF0ucHJvdG90
eXBlW2VdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbcV1bZV0uYXBwbHkodGhpc1txXSxhcmd1bWVu
dHMpfTpPYmplY3QuZGVmaW5lUHJvcGVydHkoalt0XS5wcm90b3R5cGUsZSx7c2V0OmZ1bmN0aW9u
KG4pe3RoaXNbcV1bZV09ImZ1bmN0aW9uIj09dHlwZW9mIG4/Wm9uZS5jdXJyZW50LndyYXAobix0
KyIuIitlKTpufSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1txXVtlXX19KX0ocik7Zm9yKHIg
aW4gZSkicHJvdG90eXBlIiE9PXImJmUuaGFzT3duUHJvcGVydHkocikmJihqW3RdW3JdPWVbcl0p
fX1mdW5jdGlvbiBwKHQsZSl7dHJ5e3JldHVybiBGdW5jdGlvbigiZiIsInJldHVybiBmdW5jdGlv
biAiK3QrIigpe3JldHVybiBmKHRoaXMsIGFyZ3VtZW50cyl9IikoZSl9Y2F0Y2godCl7cmV0dXJu
IGZ1bmN0aW9uKCl7cmV0dXJuIGUodGhpcyxhcmd1bWVudHMpfX19ZnVuY3Rpb24gaCh0LGUsbil7
Zm9yKHZhciByPXQ7ciYmLTE9PT1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhyKS5pbmRleE9m
KGUpOylyPU9iamVjdC5nZXRQcm90b3R5cGVPZihyKTshciYmdFtlXSYmKHI9dCk7dmFyIG8saT14
KGUpO3JldHVybiByJiYhKG89cltpXSkmJihvPXJbaV09cltlXSxyW2VdPXAoZSxuKG8saSxlKSkp
LG99ZnVuY3Rpb24gdih0LGUpe3ZhciBuPXRbeCgiZXZlbnRUYXNrcyIpXSxyPVtdO2lmKG4pZm9y
KHZhciBvPTA7bzxuLmxlbmd0aDtvKyspe3ZhciBpPW5bb10sYT1pLmRhdGEsdT1hJiZhLmV2ZW50
TmFtZTt1PT09ZSYmci5wdXNoKGkpfXJldHVybiByfS8qKgorICogQGxpY2Vuc2UKKyAqIENvcHly
aWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9s
aWNlbnNlCisgKi8KK2Z1bmN0aW9uIGQodCxlLG4scil7ZnVuY3Rpb24gbyhlKXtmdW5jdGlvbiBu
KCl7dHJ5e2UuaW52b2tlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1maW5hbGx5e2RlbGV0ZSBjW3Iu
aGFuZGxlSWRdfX12YXIgcj1lLmRhdGE7cmV0dXJuIHIuYXJnc1swXT1uLHIuaGFuZGxlSWQ9YS5h
cHBseSh0LHIuYXJncyksY1tyLmhhbmRsZUlkXT1lLGV9ZnVuY3Rpb24gaSh0KXtyZXR1cm4gZGVs
ZXRlIGNbdC5kYXRhLmhhbmRsZUlkXSx1KHQuZGF0YS5oYW5kbGVJZCl9dmFyIGE9bnVsbCx1PW51
bGw7ZSs9cixuKz1yO3ZhciBjPXt9O2E9aCh0LGUsZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9u
KGEsdSl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHVbMF0pe3ZhciBjPVpvbmUuY3VycmVudCxzPXto
YW5kbGVJZDpudWxsLGlzUGVyaW9kaWM6IkludGVydmFsIj09PXIsZGVsYXk6IlRpbWVvdXQiPT09
cnx8IkludGVydmFsIj09PXI/dVsxXXx8MDpudWxsLGFyZ3M6dX0sZj1jLnNjaGVkdWxlTWFjcm9U
YXNrKGUsdVswXSxzLG8saSk7aWYoIWYpcmV0dXJuIGY7dmFyIGw9Zi5kYXRhLmhhbmRsZUlkO3Jl
dHVybiBsJiZsLnJlZiYmbC51bnJlZiYmImZ1bmN0aW9uIj09dHlwZW9mIGwucmVmJiYiZnVuY3Rp
b24iPT10eXBlb2YgbC51bnJlZiYmKGYucmVmPWwucmVmLmJpbmQobCksZi51bnJlZj1sLnVucmVm
LmJpbmQobCkpLGZ9cmV0dXJuIG4uYXBwbHkodCx1KX19KSx1PWgodCxuLGZ1bmN0aW9uKGUpe3Jl
dHVybiBmdW5jdGlvbihuLHIpe3ZhciBvPSJudW1iZXIiPT10eXBlb2YgclswXT9jW3JbMF1dOnJb
MF07byYmInN0cmluZyI9PXR5cGVvZiBvLnR5cGU/Im5vdFNjaGVkdWxlZCIhPT1vLnN0YXRlJiYo
by5jYW5jZWxGbiYmby5kYXRhLmlzUGVyaW9kaWN8fDA9PT1vLnJ1bkNvdW50KSYmby56b25lLmNh
bmNlbFRhc2sobyk6ZS5hcHBseSh0LHIpfX0pfWZ1bmN0aW9uIHkoKXtPYmplY3QuZGVmaW5lUHJv
cGVydHk9ZnVuY3Rpb24odCxlLG4pe2lmKGsodCxlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5u
b3QgYXNzaWduIHRvIHJlYWQgb25seSBwcm9wZXJ0eSAnIitlKyInIG9mICIrdCk7dmFyIHI9bi5j
b25maWd1cmFibGU7cmV0dXJuInByb3RvdHlwZSIhPT1lJiYobj13KHQsZSxuKSksbSh0LGUsbixy
KX0sT2JqZWN0LmRlZmluZVByb3BlcnRpZXM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gT2JqZWN0Lmtl
eXMoZSkuZm9yRWFjaChmdW5jdGlvbihuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxuLGVbbl0p
fSksdH0sT2JqZWN0LmNyZWF0ZT1mdW5jdGlvbih0LGUpe3JldHVybiJvYmplY3QiIT10eXBlb2Yg
ZXx8T2JqZWN0LmlzRnJvemVuKGUpfHxPYmplY3Qua2V5cyhlKS5mb3JFYWNoKGZ1bmN0aW9uKG4p
e2Vbbl09dyh0LG4sZVtuXSl9KSxIKHQsZSl9LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3I9ZnVuY3Rpb24odCxlKXt2YXIgbj1VKHQsZSk7cmV0dXJuIGsodCxlKSYmKG4uY29uZmlndXJh
YmxlPSExKSxufX1mdW5jdGlvbiBnKHQsZSxuKXt2YXIgcj1uLmNvbmZpZ3VyYWJsZTtyZXR1cm4g
bj13KHQsZSxuKSxtKHQsZSxuLHIpfWZ1bmN0aW9uIGsodCxlKXtyZXR1cm4gdCYmdFtOXSYmdFtO
XVtlXX1mdW5jdGlvbiB3KHQsZSxuKXtyZXR1cm4gbi5jb25maWd1cmFibGU9ITAsbi5jb25maWd1
cmFibGV8fCh0W05dfHxBKHQsTix7d3JpdGFibGU6ITAsdmFsdWU6e319KSx0W05dW2VdPSEwKSxu
fWZ1bmN0aW9uIG0odCxlLG4scil7dHJ5e3JldHVybiBBKHQsZSxuKX1jYXRjaChpKXtpZighbi5j
b25maWd1cmFibGUpdGhyb3cgaTt2b2lkIDA9PT1yP2RlbGV0ZSBuLmNvbmZpZ3VyYWJsZTpuLmNv
bmZpZ3VyYWJsZT1yO3RyeXtyZXR1cm4gQSh0LGUsbil9Y2F0Y2gocil7dmFyIG89bnVsbDt0cnl7
bz1KU09OLnN0cmluZ2lmeShuKX1jYXRjaCh0KXtvPW8udG9TdHJpbmcoKX1jb25zb2xlLmxvZygi
QXR0ZW1wdGluZyB0byBjb25maWd1cmUgJyIrZSsiJyB3aXRoIGRlc2NyaXB0b3IgJyIrbysiJyBv
biBvYmplY3QgJyIrdCsiJyBhbmQgZ290IGVycm9yLCBnaXZpbmcgdXA6ICIrcil9fX1mdW5jdGlv
biBiKHQpe3ZhciBlPVtdO3Qud3RmP2U9Sy5zcGxpdCgiLCIpLm1hcChmdW5jdGlvbih0KXtyZXR1
cm4iSFRNTCIrdCsiRWxlbWVudCJ9KS5jb25jYXQoWCk6dFtXXT9lLnB1c2goVyk6ZT1YO2Zvcih2
YXIgbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgcj10W2Vbbl1dO2YociYmci5wcm90b3R5cGUpfX0v
KioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCitmdW5jdGlvbiBfKHQpe3ZhciBl
PXQuV2ViU29ja2V0O3QuRXZlbnRUYXJnZXR8fGYoZS5wcm90b3R5cGUpLHQuV2ViU29ja2V0PWZ1
bmN0aW9uKHQsbil7dmFyIHIsbz1hcmd1bWVudHMubGVuZ3RoPjE/bmV3IGUodCxuKTpuZXcgZSh0
KSxhPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobywib25tZXNzYWdlIik7cmV0dXJu
IGEmJiExPT09YS5jb25maWd1cmFibGU/KHI9T2JqZWN0LmNyZWF0ZShvKSxbImFkZEV2ZW50TGlz
dGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwic2VuZCIsImNsb3NlIl0uZm9yRWFjaChmdW5j
dGlvbih0KXtyW3RdPWZ1bmN0aW9uKCl7cmV0dXJuIG9bdF0uYXBwbHkobyxhcmd1bWVudHMpfX0p
KTpyPW8saShyLFsiY2xvc2UiLCJlcnJvciIsIm1lc3NhZ2UiLCJvcGVuIl0pLHJ9O2Zvcih2YXIg
biBpbiBlKXQuV2ViU29ja2V0W25dPWVbbl19ZnVuY3Rpb24gVCh0KXtpZighQ3x8Wil7dmFyIGU9
InVuZGVmaW5lZCIhPXR5cGVvZiBXZWJTb2NrZXQ7TygpPyhJJiYoaSh3aW5kb3csViksaShEb2N1
bWVudC5wcm90b3R5cGUsViksInVuZGVmaW5lZCIhPXR5cGVvZiBTVkdFbGVtZW50JiZpKFNWR0Vs
ZW1lbnQucHJvdG90eXBlLFYpLGkoSFRNTEVsZW1lbnQucHJvdG90eXBlLFYpKSxpKFhNTEh0dHBS
ZXF1ZXN0LnByb3RvdHlwZSxudWxsKSwidW5kZWZpbmVkIiE9dHlwZW9mIElEQkluZGV4JiYoaShJ
REJJbmRleC5wcm90b3R5cGUsbnVsbCksaShJREJSZXF1ZXN0LnByb3RvdHlwZSxudWxsKSxpKElE
Qk9wZW5EQlJlcXVlc3QucHJvdG90eXBlLG51bGwpLGkoSURCRGF0YWJhc2UucHJvdG90eXBlLG51
bGwpLGkoSURCVHJhbnNhY3Rpb24ucHJvdG90eXBlLG51bGwpLGkoSURCQ3Vyc29yLnByb3RvdHlw
ZSxudWxsKSksZSYmaShXZWJTb2NrZXQucHJvdG90eXBlLG51bGwpKTooUCgpLGwoIlhNTEh0dHBS
ZXF1ZXN0IiksZSYmXyh0KSl9fWZ1bmN0aW9uIE8oKXtpZigoSXx8WikmJiFPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKEhUTUxFbGVtZW50LnByb3RvdHlwZSwib25jbGljayIpJiYidW5k
ZWZpbmVkIiE9dHlwZW9mIEVsZW1lbnQpe3ZhciB0PU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoRWxlbWVudC5wcm90b3R5cGUsIm9uY2xpY2siKTtpZih0JiYhdC5jb25maWd1cmFibGUp
cmV0dXJuITF9dmFyIGU9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihYTUxIdHRwUmVx
dWVzdC5wcm90b3R5cGUsIm9ucmVhZHlzdGF0ZWNoYW5nZSIpO09iamVjdC5kZWZpbmVQcm9wZXJ0
eShYTUxIdHRwUmVxdWVzdC5wcm90b3R5cGUsIm9ucmVhZHlzdGF0ZWNoYW5nZSIse2VudW1lcmFi
bGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiEwfX0pO3ZhciBuPW5l
dyBYTUxIdHRwUmVxdWVzdCxyPSEhbi5vbnJlYWR5c3RhdGVjaGFuZ2U7cmV0dXJuIE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eShYTUxIdHRwUmVxdWVzdC5wcm90b3R5cGUsIm9ucmVhZHlzdGF0ZWNoYW5n
ZSIsZXx8e30pLHJ9ZnVuY3Rpb24gUCgpe2Zvcih2YXIgdD1mdW5jdGlvbih0KXt2YXIgZT1WW3Rd
LG49Im9uIitlO3NlbGYuYWRkRXZlbnRMaXN0ZW5lcihlLGZ1bmN0aW9uKHQpe3ZhciBlLHIsbz10
LnRhcmdldDtmb3Iocj1vP28uY29uc3RydWN0b3IubmFtZSsiLiIrbjoidW5rbm93bi4iK247bzsp
b1tuXSYmIW9bbl1bQl0mJihlPVpvbmUuY3VycmVudC53cmFwKG9bbl0sciksZVtCXT1vW25dLG9b
bl09ZSksbz1vLnBhcmVudEVsZW1lbnR9LCEwKX0sZT0wO2U8Vi5sZW5ndGg7ZSsrKXQoZSl9Lyoq
CisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUg
YXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLworZnVuY3Rpb24gUyh0KXtpZigoSXx8
WikmJiJyZWdpc3RlckVsZW1lbnQiaW4gdC5kb2N1bWVudCl7dmFyIGU9ZG9jdW1lbnQucmVnaXN0
ZXJFbGVtZW50LG49WyJjcmVhdGVkQ2FsbGJhY2siLCJhdHRhY2hlZENhbGxiYWNrIiwiZGV0YWNo
ZWRDYWxsYmFjayIsImF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayJdO2RvY3VtZW50LnJlZ2lzdGVy
RWxlbWVudD1mdW5jdGlvbih0LHIpe3JldHVybiByJiZyLnByb3RvdHlwZSYmbi5mb3JFYWNoKGZ1
bmN0aW9uKHQpe3ZhciBlPSJEb2N1bWVudC5yZWdpc3RlckVsZW1lbnQ6OiIrdDtpZihyLnByb3Rv
dHlwZS5oYXNPd25Qcm9wZXJ0eSh0KSl7dmFyIG49T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihyLnByb3RvdHlwZSx0KTtuJiZuLnZhbHVlPyhuLnZhbHVlPVpvbmUuY3VycmVudC53cmFw
KG4udmFsdWUsZSksZyhyLnByb3RvdHlwZSx0LG4pKTpyLnByb3RvdHlwZVt0XT1ab25lLmN1cnJl
bnQud3JhcChyLnByb3RvdHlwZVt0XSxlKX1lbHNlIHIucHJvdG90eXBlW3RdJiYoci5wcm90b3R5
cGVbdF09Wm9uZS5jdXJyZW50LndyYXAoci5wcm90b3R5cGVbdF0sZSkpfSksZS5hcHBseShkb2N1
bWVudCxbdCxyXSl9fX1mdW5jdGlvbiBEKHQpe2Z1bmN0aW9uIGUodCl7cmV0dXJuIHRbbnRdfWZ1
bmN0aW9uIG4odCl7WE1MSHR0cFJlcXVlc3RbaXRdPSExO3ZhciBlPXQuZGF0YSxuPWUudGFyZ2V0
W290XTtuJiZlLnRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKCJyZWFkeXN0YXRlY2hhbmdlIixu
KTt2YXIgcj1lLnRhcmdldFtvdF09ZnVuY3Rpb24oKXtlLnRhcmdldC5yZWFkeVN0YXRlPT09ZS50
YXJnZXQuRE9ORSYmIWUuYWJvcnRlZCYmWE1MSHR0cFJlcXVlc3RbaXRdJiYic2NoZWR1bGVkIj09
PXQuc3RhdGUmJnQuaW52b2tlKCl9O3JldHVybiBlLnRhcmdldC5hZGRFdmVudExpc3RlbmVyKCJy
ZWFkeXN0YXRlY2hhbmdlIixyKSxlLnRhcmdldFtudF18fChlLnRhcmdldFtudF09dCksYS5hcHBs
eShlLnRhcmdldCxlLmFyZ3MpLFhNTEh0dHBSZXF1ZXN0W2l0XT0hMCx0fWZ1bmN0aW9uIHIoKXt9
ZnVuY3Rpb24gbyh0KXt2YXIgZT10LmRhdGE7cmV0dXJuIGUuYWJvcnRlZD0hMCx1LmFwcGx5KGUu
dGFyZ2V0LGUuYXJncyl9dmFyIGk9aCh0LlhNTEh0dHBSZXF1ZXN0LnByb3RvdHlwZSwib3BlbiIs
ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCxlKXtyZXR1cm4gdFtydF09MD09ZVsyXSxpLmFw
cGx5KHQsZSl9fSksYT1oKHQuWE1MSHR0cFJlcXVlc3QucHJvdG90eXBlLCJzZW5kIixmdW5jdGlv
bigpe3JldHVybiBmdW5jdGlvbih0LGUpe3ZhciBpPVpvbmUuY3VycmVudDtpZih0W3J0XSlyZXR1
cm4gYS5hcHBseSh0LGUpO3ZhciB1PXt0YXJnZXQ6dCxpc1BlcmlvZGljOiExLGRlbGF5Om51bGws
YXJnczplLGFib3J0ZWQ6ITF9O3JldHVybiBpLnNjaGVkdWxlTWFjcm9UYXNrKCJYTUxIdHRwUmVx
dWVzdC5zZW5kIixyLHUsbixvKX19KSx1PWgodC5YTUxIdHRwUmVxdWVzdC5wcm90b3R5cGUsImFi
b3J0IixmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24odCxuKXt2YXIgcj1lKHQpO2lmKHImJiJz
dHJpbmciPT10eXBlb2Ygci50eXBlKXtpZihudWxsPT1yLmNhbmNlbEZufHxyLmRhdGEmJnIuZGF0
YS5hYm9ydGVkKXJldHVybjtyLnpvbmUuY2FuY2VsVGFzayhyKX19fSl9ZnVuY3Rpb24gRSh0KXty
ZXR1cm4gZnVuY3Rpb24oZSl7dihKLHQpLmZvckVhY2goZnVuY3Rpb24obil7dmFyIHI9Si5Qcm9t
aXNlUmVqZWN0aW9uRXZlbnQ7aWYocil7dmFyIG89bmV3IHIodCx7cHJvbWlzZTplLnByb21pc2Us
cmVhc29uOmUucmVqZWN0aW9ufSk7bi5pbnZva2Uobyl9fSl9fS8qKgorICogQGxpY2Vuc2UKKyAq
IENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxh
ci5pby9saWNlbnNlCisgKi8KK3ZhciB4PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKHQpe3JldHVy
biJfX3pvbmVfc3ltYm9sX18iK3R9ZnVuY3Rpb24gbigpezA9PT1BJiYwPT09TS5sZW5ndGgmJih0
W0ldP3RbSV0ucmVzb2x2ZSgwKVtaXShhKTp0W0NdKGEsMCkpfWZ1bmN0aW9uIHIodCl7bigpLE0u
cHVzaCh0KX1mdW5jdGlvbiBvKHQpe2lmKCFEW2UoImlnbm9yZUNvbnNvbGVFcnJvclVuY2F1Z2h0
RXJyb3IiKV0pe3ZhciBuPXQmJnQucmVqZWN0aW9uO24mJmNvbnNvbGUuZXJyb3IoIlVuaGFuZGxl
ZCBQcm9taXNlIHJlamVjdGlvbjoiLG4gaW5zdGFuY2VvZiBFcnJvcj9uLm1lc3NhZ2U6biwiOyBa
b25lOiIsdC56b25lLm5hbWUsIjsgVGFzazoiLHQudGFzayYmdC50YXNrLnNvdXJjZSwiOyBWYWx1
ZToiLG4sbiBpbnN0YW5jZW9mIEVycm9yP24uc3RhY2s6dm9pZCAwKSxjb25zb2xlLmVycm9yKHQp
fX1mdW5jdGlvbiBpKHQpe28odCk7dHJ5e3ZhciBuPURbZSgidW5oYW5kbGVkUHJvbWlzZVJlamVj
dGlvbkhhbmRsZXIiKV07biYmImZ1bmN0aW9uIj09dHlwZW9mIG4mJm4uYXBwbHkodGhpcyxbdF0p
fWNhdGNoKHQpe319ZnVuY3Rpb24gYSgpe2lmKCFMKXtmb3IoTD0hMDtNLmxlbmd0aDspe3ZhciB0
PU07TT1bXTtmb3IodmFyIGU9MDtlPHQubGVuZ3RoO2UrKyl7dmFyIG49dFtlXTt0cnl7bi56b25l
LnJ1blRhc2sobixudWxsLG51bGwpfWNhdGNoKHQpe28odCl9fX1mb3IoO3EubGVuZ3RoOylmb3Io
dmFyIHI9ZnVuY3Rpb24oKXt2YXIgdD1xLnNoaWZ0KCk7dHJ5e3Quem9uZS5ydW5HdWFyZGVkKGZ1
bmN0aW9uKCl7dGhyb3cgdH0pfWNhdGNoKHQpe2kodCl9fTtxLmxlbmd0aDspcigpO0w9ITF9fWZ1
bmN0aW9uIHUodCl7cmV0dXJuIHQmJnQudGhlbn1mdW5jdGlvbiBjKHQpe3JldHVybiB0fWZ1bmN0
aW9uIHModCl7cmV0dXJuIEcucmVqZWN0KHQpfWZ1bmN0aW9uIGYodCxlKXtyZXR1cm4gZnVuY3Rp
b24obil7dHJ5e2wodCxlLG4pfWNhdGNoKGUpe2wodCwhMSxlKX19fWZ1bmN0aW9uIGwodCxyLG8p
e3ZhciBpPUIoKTtpZih0PT09byl0aHJvdyBuZXcgVHlwZUVycm9yKCJQcm9taXNlIHJlc29sdmVk
IHdpdGggaXRzZWxmIik7aWYodFtVXT09PUspe3ZhciBhPW51bGw7dHJ5eyJvYmplY3QiIT10eXBl
b2YgbyYmImZ1bmN0aW9uIiE9dHlwZW9mIG98fChhPW8mJm8udGhlbil9Y2F0Y2goZSl7cmV0dXJu
IGkoZnVuY3Rpb24oKXtsKHQsITEsZSl9KSgpLHR9aWYociE9PVcmJm8gaW5zdGFuY2VvZiBHJiZv
Lmhhc093blByb3BlcnR5KFUpJiZvLmhhc093blByb3BlcnR5KEgpJiZvW1VdIT09SylwKG8pLGwo
dCxvW1VdLG9bSF0pO2Vsc2UgaWYociE9PVcmJiJmdW5jdGlvbiI9PXR5cGVvZiBhKXRyeXthLmFw
cGx5KG8sW2koZih0LHIpKSxpKGYodCwhMSkpXSl9Y2F0Y2goZSl7aShmdW5jdGlvbigpe2wodCwh
MSxlKX0pKCl9ZWxzZXt0W1VdPXI7dmFyIHU9dFtIXTt0W0hdPW8scj09PVcmJm8gaW5zdGFuY2Vv
ZiBFcnJvciYmKG9bZSgiY3VycmVudFRhc2siKV09RC5jdXJyZW50VGFzayk7Zm9yKHZhciBjPTA7
Yzx1Lmxlbmd0aDspaCh0LHVbYysrXSx1W2MrK10sdVtjKytdLHVbYysrXSk7aWYoMD09dS5sZW5n
dGgmJnI9PVcpe3RbVV09Vjt0cnl7dGhyb3cgbmV3IEVycm9yKCJVbmNhdWdodCAoaW4gcHJvbWlz
ZSk6ICIrbysobyYmby5zdGFjaz8iXG4iK28uc3RhY2s6IiIpKX1jYXRjaChlKXt2YXIgcz1lO3Mu
cmVqZWN0aW9uPW8scy5wcm9taXNlPXQscy56b25lPUQuY3VycmVudCxzLnRhc2s9RC5jdXJyZW50
VGFzayxxLnB1c2gocyksbigpfX19fXJldHVybiB0fWZ1bmN0aW9uIHAodCl7aWYodFtVXT09PVYp
e3RyeXt2YXIgbj1EW2UoInJlamVjdGlvbkhhbmRsZWRIYW5kbGVyIildO24mJiJmdW5jdGlvbiI9
PXR5cGVvZiBuJiZuLmFwcGx5KHRoaXMsW3tyZWplY3Rpb246dFtIXSxwcm9taXNlOnR9XSl9Y2F0
Y2godCl7fXRbVV09Vztmb3IodmFyIHI9MDtyPHEubGVuZ3RoO3IrKyl0PT09cVtyXS5wcm9taXNl
JiZxLnNwbGljZShyLDEpfX1mdW5jdGlvbiBoKHQsZSxuLHIsbyl7cCh0KTt2YXIgaT10W1VdPyJm
dW5jdGlvbiI9PXR5cGVvZiByP3I6YzoiZnVuY3Rpb24iPT10eXBlb2Ygbz9vOnM7ZS5zY2hlZHVs
ZU1pY3JvVGFzayhOLGZ1bmN0aW9uKCl7dHJ5e2wobiwhMCxlLnJ1bihpLHZvaWQgMCxbdFtIXV0p
KX1jYXRjaCh0KXtsKG4sITEsdCl9fSl9ZnVuY3Rpb24gdih0KXt2YXIgZT10LnByb3RvdHlwZSxu
PWUudGhlbjtlW1pdPW4sdC5wcm90b3R5cGUudGhlbj1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXM7
cmV0dXJuIG5ldyBHKGZ1bmN0aW9uKHQsZSl7bi5jYWxsKHIsdCxlKX0pLnRoZW4odCxlKX0sdFtR
XT0hMH1mdW5jdGlvbiBkKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQuYXBwbHkodGhpcyxh
cmd1bWVudHMpO2lmKGUgaW5zdGFuY2VvZiBHKXJldHVybiBlO3ZhciBuPWUuY29uc3RydWN0b3I7
cmV0dXJuIG5bUV18fHYobiksZX19ZnVuY3Rpb24geSgpe3ZhciB0PXRoaXMsZT1udC5hcHBseSh0
aGlzLGFyZ3VtZW50cyk7aWYoIWUuc3RhY2spdHJ5e3Rocm93IGV9Y2F0Y2godCl7ZT10fXZhciBu
PWUub3JpZ2luYWxTdGFjaz1lLnN0YWNrO2lmKHlbb3RdJiZuKXtmb3IodmFyIHI9bi5zcGxpdCgi
XG4iKSxvPVIsaT0wO3JbaV0hPT0kJiZyW2ldIT09dHQmJmk8ci5sZW5ndGg7KWkrKztmb3IoO2k8
ci5sZW5ndGgmJm87aSsrKXt2YXIgYT1yW2ldO2lmKGEudHJpbSgpKXN3aXRjaChydFthXSl7Y2Fz
ZSAwOnIuc3BsaWNlKGksMSksaS0tO2JyZWFrO2Nhc2UgMTpvLnBhcmVudD8ocltpXSs9IiBbIitv
LnBhcmVudC56b25lLm5hbWUrIiA9PiAiK28uem9uZS5uYW1lKyJdIixvPW8ucGFyZW50KTpvPW51
bGw7YnJlYWs7ZGVmYXVsdDpyW2ldKz0iIFsiK28uem9uZS5uYW1lKyJdIn19dHJ5e2Uuc3RhY2s9
ZS56b25lQXdhcmVTdGFjaz1yLmpvaW4oIlxuIil9Y2F0Y2godCl7fX1yZXR1cm4gdGhpcyBpbnN0
YW5jZW9mIG50JiZ0aGlzLmNvbnN0cnVjdG9yIT1udD8oT2JqZWN0LmtleXMoZSkuY29uY2F0KCJz
dGFjayIsIm1lc3NhZ2UiKS5mb3JFYWNoKGZ1bmN0aW9uKG4pe2lmKHZvaWQgMCE9PWVbbl0pdHJ5
e3Rbbl09ZVtuXX1jYXRjaCh0KXt9fSksdGhpcyk6ZX1pZih0LlpvbmUpdGhyb3cgbmV3IEVycm9y
KCJab25lIGFscmVhZHkgbG9hZGVkLiIpO3ZhciBnPXtuYW1lOiJOTyBaT05FIn0saz0ibm90U2No
ZWR1bGVkIix3PSJzY2hlZHVsaW5nIixtPSJzY2hlZHVsZWQiLGI9InJ1bm5pbmciLF89ImNhbmNl
bGluZyIsVD0idW5rbm93biIsTz0ibWljcm9UYXNrIixQPSJtYWNyb1Rhc2siLFM9ImV2ZW50VGFz
ayIsRD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxlKXt0aGlzLl9wcm9wZXJ0aWVzPW51bGwsdGhp
cy5fcGFyZW50PXQsdGhpcy5fbmFtZT1lP2UubmFtZXx8InVubmFtZWQiOiI8cm9vdD4iLHRoaXMu
X3Byb3BlcnRpZXM9ZSYmZS5wcm9wZXJ0aWVzfHx7fSx0aGlzLl96b25lRGVsZWdhdGU9bmV3IHgo
dGhpcyx0aGlzLl9wYXJlbnQmJnRoaXMuX3BhcmVudC5fem9uZURlbGVnYXRlLGUpfXJldHVybiBl
LmFzc2VydFpvbmVQYXRjaGVkPWZ1bmN0aW9uKCl7aWYodC5Qcm9taXNlIT09Ryl0aHJvdyBuZXcg
RXJyb3IoIlpvbmUuanMgaGFzIGRldGVjdGVkIHRoYXQgWm9uZUF3YXJlUHJvbWlzZSBgKHdpbmRv
d3xnbG9iYWwpLlByb21pc2VgIGhhcyBiZWVuIG92ZXJ3cml0dGVuLlxuTW9zdCBsaWtlbHkgY2F1
c2UgaXMgdGhhdCBhIFByb21pc2UgcG9seWZpbGwgaGFzIGJlZW4gbG9hZGVkIGFmdGVyIFpvbmUu
anMgKFBvbHlmaWxsaW5nIFByb21pc2UgYXBpIGlzIG5vdCBuZWNlc3Nhcnkgd2hlbiB6b25lLmpz
IGlzIGxvYWRlZC4gSWYgeW91IG11c3QgbG9hZCBvbmUsIGRvIHNvIGJlZm9yZSBsb2FkaW5nIHpv
bmUuanMuKSIpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicm9vdCIse2dldDpmdW5jdGlvbigp
e2Zvcih2YXIgdD1lLmN1cnJlbnQ7dC5wYXJlbnQ7KXQ9dC5wYXJlbnQ7cmV0dXJuIHR9LGVudW1l
cmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsImN1cnJl
bnQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gUi56b25lfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3Vy
YWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJjdXJyZW50VGFzayIse2dldDpmdW5j
dGlvbigpe3JldHVybiBGfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwicGFyZW50Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJu
IHRoaXMuX3BhcmVudH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVm
aW5lUHJvcGVydHkoZS5wcm90b3R5cGUsIm5hbWUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhp
cy5fbmFtZX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5nZXQ9
ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5nZXRab25lV2l0aCh0KTtpZihlKXJldHVybiBlLl9wcm9w
ZXJ0aWVzW3RdfSxlLnByb3RvdHlwZS5nZXRab25lV2l0aD1mdW5jdGlvbih0KXtmb3IodmFyIGU9
dGhpcztlOyl7aWYoZS5fcHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eSh0KSlyZXR1cm4gZTtlPWUu
X3BhcmVudH1yZXR1cm4gbnVsbH0sZS5wcm90b3R5cGUuZm9yaz1mdW5jdGlvbih0KXtpZighdCl0
aHJvdyBuZXcgRXJyb3IoIlpvbmVTcGVjIHJlcXVpcmVkISIpO3JldHVybiB0aGlzLl96b25lRGVs
ZWdhdGUuZm9yayh0aGlzLHQpfSxlLnByb3RvdHlwZS53cmFwPWZ1bmN0aW9uKHQsZSl7aWYoImZ1
bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RpbmcgZnVuY3Rpb24gZ290
OiAiK3QpO3ZhciBuPXRoaXMuX3pvbmVEZWxlZ2F0ZS5pbnRlcmNlcHQodGhpcyx0LGUpLHI9dGhp
cztyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gci5ydW5HdWFyZGVkKG4sdGhpcyxhcmd1bWVudHMs
ZSl9fSxlLnByb3RvdHlwZS5ydW49ZnVuY3Rpb24odCxlLG4scil7dm9pZCAwPT09ZSYmKGU9dm9p
ZCAwKSx2b2lkIDA9PT1uJiYobj1udWxsKSx2b2lkIDA9PT1yJiYocj1udWxsKSxSPW5ldyB6KFIs
dGhpcyk7dHJ5e3JldHVybiB0aGlzLl96b25lRGVsZWdhdGUuaW52b2tlKHRoaXMsdCxlLG4scil9
ZmluYWxseXtSPVIucGFyZW50fX0sZS5wcm90b3R5cGUucnVuR3VhcmRlZD1mdW5jdGlvbih0LGUs
bixyKXt2b2lkIDA9PT1lJiYoZT1udWxsKSx2b2lkIDA9PT1uJiYobj1udWxsKSx2b2lkIDA9PT1y
JiYocj1udWxsKSxSPW5ldyB6KFIsdGhpcyk7dHJ5e3RyeXtyZXR1cm4gdGhpcy5fem9uZURlbGVn
YXRlLmludm9rZSh0aGlzLHQsZSxuLHIpfWNhdGNoKHQpe2lmKHRoaXMuX3pvbmVEZWxlZ2F0ZS5o
YW5kbGVFcnJvcih0aGlzLHQpKXRocm93IHR9fWZpbmFsbHl7Uj1SLnBhcmVudH19LGUucHJvdG90
eXBlLnJ1blRhc2s9ZnVuY3Rpb24odCxlLG4pe2lmKHQuem9uZSE9dGhpcyl0aHJvdyBuZXcgRXJy
b3IoIkEgdGFzayBjYW4gb25seSBiZSBydW4gaW4gdGhlIHpvbmUgb2YgY3JlYXRpb24hIChDcmVh
dGlvbjogIisodC56b25lfHxnKS5uYW1lKyI7IEV4ZWN1dGlvbjogIit0aGlzLm5hbWUrIikiKTt2
YXIgcj10LnN0YXRlIT1iO3ImJnQuX3RyYW5zaXRpb25UbyhiLG0pLHQucnVuQ291bnQrKzt2YXIg
bz1GO0Y9dCxSPW5ldyB6KFIsdGhpcyk7dHJ5e3QudHlwZT09UCYmdC5kYXRhJiYhdC5kYXRhLmlz
UGVyaW9kaWMmJih0LmNhbmNlbEZuPW51bGwpO3RyeXtyZXR1cm4gdGhpcy5fem9uZURlbGVnYXRl
Lmludm9rZVRhc2sodGhpcyx0LGUsbil9Y2F0Y2godCl7aWYodGhpcy5fem9uZURlbGVnYXRlLmhh
bmRsZUVycm9yKHRoaXMsdCkpdGhyb3cgdH19ZmluYWxseXt0LnN0YXRlIT09ayYmdC5zdGF0ZSE9
PVQmJih0LnR5cGU9PVN8fHQuZGF0YSYmdC5kYXRhLmlzUGVyaW9kaWM/ciYmdC5fdHJhbnNpdGlv
blRvKG0sYik6KHQucnVuQ291bnQ9MCx0aGlzLl91cGRhdGVUYXNrQ291bnQodCwtMSksciYmdC5f
dHJhbnNpdGlvblRvKGssYixrKSkpLFI9Ui5wYXJlbnQsRj1vfX0sZS5wcm90b3R5cGUuc2NoZWR1
bGVUYXNrPWZ1bmN0aW9uKHQpe2lmKHQuem9uZSYmdC56b25lIT09dGhpcylmb3IodmFyIGU9dGhp
cztlOyl7aWYoZT09PXQuem9uZSl0aHJvdyBFcnJvcigiY2FuIG5vdCByZXNjaGVkdWxlIHRhc2sg
dG8gIit0aGlzLm5hbWUrIiB3aGljaCBpcyBkZXNjZW5kYW50cyBvZiB0aGUgb3JpZ2luYWwgem9u
ZSAiK3Quem9uZS5uYW1lKTtlPWUucGFyZW50fXQuX3RyYW5zaXRpb25Ubyh3LGspO3ZhciBuPVtd
O3QuX3pvbmVEZWxlZ2F0ZXM9bix0Ll96b25lPXRoaXM7dHJ5e3Q9dGhpcy5fem9uZURlbGVnYXRl
LnNjaGVkdWxlVGFzayh0aGlzLHQpfWNhdGNoKGUpe3Rocm93IHQuX3RyYW5zaXRpb25UbyhULHcs
ayksdGhpcy5fem9uZURlbGVnYXRlLmhhbmRsZUVycm9yKHRoaXMsZSksZX1yZXR1cm4gdC5fem9u
ZURlbGVnYXRlcz09PW4mJnRoaXMuX3VwZGF0ZVRhc2tDb3VudCh0LDEpLHQuc3RhdGU9PXcmJnQu
X3RyYW5zaXRpb25UbyhtLHcpLHR9LGUucHJvdG90eXBlLnNjaGVkdWxlTWljcm9UYXNrPWZ1bmN0
aW9uKHQsZSxuLHIpe3JldHVybiB0aGlzLnNjaGVkdWxlVGFzayhuZXcgaihPLHQsZSxuLHIsbnVs
bCkpfSxlLnByb3RvdHlwZS5zY2hlZHVsZU1hY3JvVGFzaz1mdW5jdGlvbih0LGUsbixyLG8pe3Jl
dHVybiB0aGlzLnNjaGVkdWxlVGFzayhuZXcgaihQLHQsZSxuLHIsbykpfSxlLnByb3RvdHlwZS5z
Y2hlZHVsZUV2ZW50VGFzaz1mdW5jdGlvbih0LGUsbixyLG8pe3JldHVybiB0aGlzLnNjaGVkdWxl
VGFzayhuZXcgaihTLHQsZSxuLHIsbykpfSxlLnByb3RvdHlwZS5jYW5jZWxUYXNrPWZ1bmN0aW9u
KHQpe2lmKHQuem9uZSE9dGhpcyl0aHJvdyBuZXcgRXJyb3IoIkEgdGFzayBjYW4gb25seSBiZSBj
YW5jZWxsZWQgaW4gdGhlIHpvbmUgb2YgY3JlYXRpb24hIChDcmVhdGlvbjogIisodC56b25lfHxn
KS5uYW1lKyI7IEV4ZWN1dGlvbjogIit0aGlzLm5hbWUrIikiKTt0Ll90cmFuc2l0aW9uVG8oXyxt
LGIpO3RyeXt0aGlzLl96b25lRGVsZWdhdGUuY2FuY2VsVGFzayh0aGlzLHQpfWNhdGNoKGUpe3Ro
cm93IHQuX3RyYW5zaXRpb25UbyhULF8pLHRoaXMuX3pvbmVEZWxlZ2F0ZS5oYW5kbGVFcnJvcih0
aGlzLGUpLGV9cmV0dXJuIHRoaXMuX3VwZGF0ZVRhc2tDb3VudCh0LC0xKSx0Ll90cmFuc2l0aW9u
VG8oayxfKSx0LnJ1bkNvdW50PTAsdH0sZS5wcm90b3R5cGUuX3VwZGF0ZVRhc2tDb3VudD1mdW5j
dGlvbih0LGUpe3ZhciBuPXQuX3pvbmVEZWxlZ2F0ZXM7LTE9PWUmJih0Ll96b25lRGVsZWdhdGVz
PW51bGwpO2Zvcih2YXIgcj0wO3I8bi5sZW5ndGg7cisrKW5bcl0uX3VwZGF0ZVRhc2tDb3VudCh0
LnR5cGUsZSl9LGV9KCk7RC5fX3N5bWJvbF9fPWU7dmFyIEU9e25hbWU6IiIsb25IYXNUYXNrOmZ1
bmN0aW9uKHQsZSxuLHIpe3JldHVybiB0Lmhhc1Rhc2sobixyKX0sb25TY2hlZHVsZVRhc2s6ZnVu
Y3Rpb24odCxlLG4scil7cmV0dXJuIHQuc2NoZWR1bGVUYXNrKG4scil9LG9uSW52b2tlVGFzazpm
dW5jdGlvbih0LGUsbixyLG8saSl7cmV0dXJuIHQuaW52b2tlVGFzayhuLHIsbyxpKX0sb25DYW5j
ZWxUYXNrOmZ1bmN0aW9uKHQsZSxuLHIpe3JldHVybiB0LmNhbmNlbFRhc2sobixyKX19LHg9ZnVu
Y3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuKXt0aGlzLl90YXNrQ291bnRzPXttaWNyb1Rhc2s6MCxt
YWNyb1Rhc2s6MCxldmVudFRhc2s6MH0sdGhpcy56b25lPXQsdGhpcy5fcGFyZW50RGVsZWdhdGU9
ZSx0aGlzLl9mb3JrWlM9biYmKG4mJm4ub25Gb3JrP246ZS5fZm9ya1pTKSx0aGlzLl9mb3JrRGxn
dD1uJiYobi5vbkZvcms/ZTplLl9mb3JrRGxndCksdGhpcy5fZm9ya0N1cnJab25lPW4mJihuLm9u
Rm9yaz90aGlzLnpvbmU6ZS56b25lKSx0aGlzLl9pbnRlcmNlcHRaUz1uJiYobi5vbkludGVyY2Vw
dD9uOmUuX2ludGVyY2VwdFpTKSx0aGlzLl9pbnRlcmNlcHREbGd0PW4mJihuLm9uSW50ZXJjZXB0
P2U6ZS5faW50ZXJjZXB0RGxndCksdGhpcy5faW50ZXJjZXB0Q3VyclpvbmU9biYmKG4ub25JbnRl
cmNlcHQ/dGhpcy56b25lOmUuem9uZSksdGhpcy5faW52b2tlWlM9biYmKG4ub25JbnZva2U/bjpl
Ll9pbnZva2VaUyksdGhpcy5faW52b2tlRGxndD1uJiYobi5vbkludm9rZT9lOmUuX2ludm9rZURs
Z3QpLHRoaXMuX2ludm9rZUN1cnJab25lPW4mJihuLm9uSW52b2tlP3RoaXMuem9uZTplLnpvbmUp
LHRoaXMuX2hhbmRsZUVycm9yWlM9biYmKG4ub25IYW5kbGVFcnJvcj9uOmUuX2hhbmRsZUVycm9y
WlMpLHRoaXMuX2hhbmRsZUVycm9yRGxndD1uJiYobi5vbkhhbmRsZUVycm9yP2U6ZS5faGFuZGxl
RXJyb3JEbGd0KSx0aGlzLl9oYW5kbGVFcnJvckN1cnJab25lPW4mJihuLm9uSGFuZGxlRXJyb3I/
dGhpcy56b25lOmUuem9uZSksdGhpcy5fc2NoZWR1bGVUYXNrWlM9biYmKG4ub25TY2hlZHVsZVRh
c2s/bjplLl9zY2hlZHVsZVRhc2taUyksdGhpcy5fc2NoZWR1bGVUYXNrRGxndD1uJiYobi5vblNj
aGVkdWxlVGFzaz9lOmUuX3NjaGVkdWxlVGFza0RsZ3QpLHRoaXMuX3NjaGVkdWxlVGFza0N1cnJa
b25lPW4mJihuLm9uU2NoZWR1bGVUYXNrP3RoaXMuem9uZTplLnpvbmUpLHRoaXMuX2ludm9rZVRh
c2taUz1uJiYobi5vbkludm9rZVRhc2s/bjplLl9pbnZva2VUYXNrWlMpLHRoaXMuX2ludm9rZVRh
c2tEbGd0PW4mJihuLm9uSW52b2tlVGFzaz9lOmUuX2ludm9rZVRhc2tEbGd0KSx0aGlzLl9pbnZv
a2VUYXNrQ3VyclpvbmU9biYmKG4ub25JbnZva2VUYXNrP3RoaXMuem9uZTplLnpvbmUpLHRoaXMu
X2NhbmNlbFRhc2taUz1uJiYobi5vbkNhbmNlbFRhc2s/bjplLl9jYW5jZWxUYXNrWlMpLHRoaXMu
X2NhbmNlbFRhc2tEbGd0PW4mJihuLm9uQ2FuY2VsVGFzaz9lOmUuX2NhbmNlbFRhc2tEbGd0KSx0
aGlzLl9jYW5jZWxUYXNrQ3VyclpvbmU9biYmKG4ub25DYW5jZWxUYXNrP3RoaXMuem9uZTplLnpv
bmUpLHRoaXMuX2hhc1Rhc2taUz1udWxsLHRoaXMuX2hhc1Rhc2tEbGd0PW51bGwsdGhpcy5faGFz
VGFza0RsZ3RPd25lcj1udWxsLHRoaXMuX2hhc1Rhc2tDdXJyWm9uZT1udWxsO3ZhciByPW4mJm4u
b25IYXNUYXNrLG89ZSYmZS5faGFzVGFza1pTOyhyfHxvKSYmKHRoaXMuX2hhc1Rhc2taUz1yP246
RSx0aGlzLl9oYXNUYXNrRGxndD1lLHRoaXMuX2hhc1Rhc2tEbGd0T3duZXI9dGhpcyx0aGlzLl9o
YXNUYXNrQ3VyclpvbmU9dCxuLm9uU2NoZWR1bGVUYXNrfHwodGhpcy5fc2NoZWR1bGVUYXNrWlM9
RSx0aGlzLl9zY2hlZHVsZVRhc2tEbGd0PWUsdGhpcy5fc2NoZWR1bGVUYXNrQ3VyclpvbmU9dGhp
cy56b25lKSxuLm9uSW52b2tlVGFza3x8KHRoaXMuX2ludm9rZVRhc2taUz1FLHRoaXMuX2ludm9r
ZVRhc2tEbGd0PWUsdGhpcy5faW52b2tlVGFza0N1cnJab25lPXRoaXMuem9uZSksbi5vbkNhbmNl
bFRhc2t8fCh0aGlzLl9jYW5jZWxUYXNrWlM9RSx0aGlzLl9jYW5jZWxUYXNrRGxndD1lLHRoaXMu
X2NhbmNlbFRhc2tDdXJyWm9uZT10aGlzLnpvbmUpKX1yZXR1cm4gdC5wcm90b3R5cGUuZm9yaz1m
dW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9mb3JrWlM/dGhpcy5fZm9ya1pTLm9uRm9yayh0aGlz
Ll9mb3JrRGxndCx0aGlzLnpvbmUsdCxlKTpuZXcgRCh0LGUpfSx0LnByb3RvdHlwZS5pbnRlcmNl
cHQ9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0aGlzLl9pbnRlcmNlcHRaUz90aGlzLl9pbnRlcmNl
cHRaUy5vbkludGVyY2VwdCh0aGlzLl9pbnRlcmNlcHREbGd0LHRoaXMuX2ludGVyY2VwdEN1cnJa
b25lLHQsZSxuKTplfSx0LnByb3RvdHlwZS5pbnZva2U9ZnVuY3Rpb24odCxlLG4scixvKXtyZXR1
cm4gdGhpcy5faW52b2tlWlM/dGhpcy5faW52b2tlWlMub25JbnZva2UodGhpcy5faW52b2tlRGxn
dCx0aGlzLl9pbnZva2VDdXJyWm9uZSx0LGUsbixyLG8pOmUuYXBwbHkobixyKX0sdC5wcm90b3R5
cGUuaGFuZGxlRXJyb3I9ZnVuY3Rpb24odCxlKXtyZXR1cm4hdGhpcy5faGFuZGxlRXJyb3JaU3x8
dGhpcy5faGFuZGxlRXJyb3JaUy5vbkhhbmRsZUVycm9yKHRoaXMuX2hhbmRsZUVycm9yRGxndCx0
aGlzLl9oYW5kbGVFcnJvckN1cnJab25lLHQsZSl9LHQucHJvdG90eXBlLnNjaGVkdWxlVGFzaz1m
dW5jdGlvbih0LGUpe3ZhciBuPWU7aWYodGhpcy5fc2NoZWR1bGVUYXNrWlMpdGhpcy5faGFzVGFz
a1pTJiZuLl96b25lRGVsZWdhdGVzLnB1c2godGhpcy5faGFzVGFza0RsZ3RPd25lciksKG49dGhp
cy5fc2NoZWR1bGVUYXNrWlMub25TY2hlZHVsZVRhc2sodGhpcy5fc2NoZWR1bGVUYXNrRGxndCx0
aGlzLl9zY2hlZHVsZVRhc2tDdXJyWm9uZSx0LGUpKXx8KG49ZSk7ZWxzZSBpZihlLnNjaGVkdWxl
Rm4pZS5zY2hlZHVsZUZuKGUpO2Vsc2V7aWYoZS50eXBlIT1PKXRocm93IG5ldyBFcnJvcigiVGFz
ayBpcyBtaXNzaW5nIHNjaGVkdWxlRm4uIik7cihlKX1yZXR1cm4gbn0sdC5wcm90b3R5cGUuaW52
b2tlVGFzaz1mdW5jdGlvbih0LGUsbixyKXtyZXR1cm4gdGhpcy5faW52b2tlVGFza1pTP3RoaXMu
X2ludm9rZVRhc2taUy5vbkludm9rZVRhc2sodGhpcy5faW52b2tlVGFza0RsZ3QsdGhpcy5faW52
b2tlVGFza0N1cnJab25lLHQsZSxuLHIpOmUuY2FsbGJhY2suYXBwbHkobixyKX0sdC5wcm90b3R5
cGUuY2FuY2VsVGFzaz1mdW5jdGlvbih0LGUpe3ZhciBuO2lmKHRoaXMuX2NhbmNlbFRhc2taUylu
PXRoaXMuX2NhbmNlbFRhc2taUy5vbkNhbmNlbFRhc2sodGhpcy5fY2FuY2VsVGFza0RsZ3QsdGhp
cy5fY2FuY2VsVGFza0N1cnJab25lLHQsZSk7ZWxzZXtpZighZS5jYW5jZWxGbil0aHJvdyBFcnJv
cigiVGFzayBpcyBub3QgY2FuY2VsYWJsZSIpO249ZS5jYW5jZWxGbihlKX1yZXR1cm4gbn0sdC5w
cm90b3R5cGUuaGFzVGFzaz1mdW5jdGlvbih0LGUpe3RyeXtyZXR1cm4gdGhpcy5faGFzVGFza1pT
JiZ0aGlzLl9oYXNUYXNrWlMub25IYXNUYXNrKHRoaXMuX2hhc1Rhc2tEbGd0LHRoaXMuX2hhc1Rh
c2tDdXJyWm9uZSx0LGUpfWNhdGNoKHQpe319LHQucHJvdG90eXBlLl91cGRhdGVUYXNrQ291bnQ9
ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLl90YXNrQ291bnRzLHI9blt0XSxvPW5bdF09citlO2lm
KG88MCl0aHJvdyBuZXcgRXJyb3IoIk1vcmUgdGFza3MgZXhlY3V0ZWQgdGhlbiB3ZXJlIHNjaGVk
dWxlZC4iKTtpZigwPT1yfHwwPT1vKXt2YXIgaT17bWljcm9UYXNrOm4ubWljcm9UYXNrPjAsbWFj
cm9UYXNrOm4ubWFjcm9UYXNrPjAsZXZlbnRUYXNrOm4uZXZlbnRUYXNrPjAsY2hhbmdlOnR9O3Ro
aXMuaGFzVGFzayh0aGlzLnpvbmUsaSl9fSx0fSgpLGo9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQs
ZSxuLHIsbyxpKXt0aGlzLl96b25lPW51bGwsdGhpcy5ydW5Db3VudD0wLHRoaXMuX3pvbmVEZWxl
Z2F0ZXM9bnVsbCx0aGlzLl9zdGF0ZT0ibm90U2NoZWR1bGVkIix0aGlzLnR5cGU9dCx0aGlzLnNv
dXJjZT1lLHRoaXMuZGF0YT1yLHRoaXMuc2NoZWR1bGVGbj1vLHRoaXMuY2FuY2VsRm49aSx0aGlz
LmNhbGxiYWNrPW47dmFyIHU9dGhpczt0aGlzLmludm9rZT1mdW5jdGlvbigpe0ErKzt0cnl7cmV0
dXJuIHUucnVuQ291bnQrKyx1LnpvbmUucnVuVGFzayh1LHRoaXMsYXJndW1lbnRzKX1maW5hbGx5
ezE9PUEmJmEoKSxBLS19fX1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBl
LCJ6b25lIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3pvbmV9LGVudW1lcmFibGU6ITAs
Y29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJzdGF0
ZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdGF0ZX0sZW51bWVyYWJsZTohMCxjb25m
aWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5jYW5jZWxTY2hlZHVsZVJlcXVlc3Q9ZnVuY3Rpb24o
KXt0aGlzLl90cmFuc2l0aW9uVG8oayx3KX0sdC5wcm90b3R5cGUuX3RyYW5zaXRpb25Ubz1mdW5j
dGlvbih0LGUsbil7aWYodGhpcy5fc3RhdGUhPT1lJiZ0aGlzLl9zdGF0ZSE9PW4pdGhyb3cgbmV3
IEVycm9yKHRoaXMudHlwZSsiICciK3RoaXMuc291cmNlKyInOiBjYW4gbm90IHRyYW5zaXRpb24g
dG8gJyIrdCsiJywgZXhwZWN0aW5nIHN0YXRlICciK2UrIiciKyhuPyIgb3IgJyIrbisiJyI6IiIp
KyIsIHdhcyAnIit0aGlzLl9zdGF0ZSsiJy4iKTt0aGlzLl9zdGF0ZT10LHQ9PWsmJih0aGlzLl96
b25lRGVsZWdhdGVzPW51bGwpfSx0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVy
biB0aGlzLmRhdGEmJnZvaWQgMCE9PXRoaXMuZGF0YS5oYW5kbGVJZD90aGlzLmRhdGEuaGFuZGxl
SWQ6T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHRoaXMpfSx0LnByb3RvdHlwZS50b0pT
T049ZnVuY3Rpb24oKXtyZXR1cm57dHlwZTp0aGlzLnR5cGUsc3RhdGU6dGhpcy5zdGF0ZSxzb3Vy
Y2U6dGhpcy5zb3VyY2UsZGF0YTp0aGlzLmRhdGEsem9uZTp0aGlzLnpvbmUubmFtZSxpbnZva2U6
dGhpcy5pbnZva2Usc2NoZWR1bGVGbjp0aGlzLnNjaGVkdWxlRm4sY2FuY2VsRm46dGhpcy5jYW5j
ZWxGbixydW5Db3VudDp0aGlzLnJ1bkNvdW50LGNhbGxiYWNrOnRoaXMuY2FsbGJhY2t9fSx0fSgp
LHo9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7dGhpcy5wYXJlbnQ9dCx0aGlzLnpvbmU9ZX1y
ZXR1cm4gdH0oKSxDPWUoInNldFRpbWVvdXQiKSxJPWUoIlByb21pc2UiKSxaPWUoInRoZW4iKSxS
PW5ldyB6KG51bGwsbmV3IEQobnVsbCxudWxsKSksRj1udWxsLE09W10sTD0hMSxxPVtdLEE9MCxV
PWUoInN0YXRlIiksSD1lKCJ2YWx1ZSIpLE49IlByb21pc2UudGhlbiIsSz1udWxsLFg9ITAsVz0h
MSxWPTAsQj1mdW5jdGlvbigpe3ZhciB0PSExO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gZnVu
Y3Rpb24oKXt0fHwodD0hMCxlLmFwcGx5KG51bGwsYXJndW1lbnRzKSl9fX0sRz1mdW5jdGlvbigp
e2Z1bmN0aW9uIHQoZSl7dmFyIG49dGhpcztpZighKG4gaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcg
RXJyb3IoIk11c3QgYmUgYW4gaW5zdGFuY2VvZiBQcm9taXNlLiIpO25bVV09SyxuW0hdPVtdO3Ry
eXtlJiZlKGYobixYKSxmKG4sVykpfWNhdGNoKHQpe2wobiwhMSx0KX19cmV0dXJuIHQudG9TdHJp
bmc9ZnVuY3Rpb24oKXtyZXR1cm4iZnVuY3Rpb24gWm9uZUF3YXJlUHJvbWlzZSgpIHsgW25hdGl2
ZSBjb2RlXSB9In0sdC5yZXNvbHZlPWZ1bmN0aW9uKHQpe3JldHVybiBsKG5ldyB0aGlzKG51bGwp
LFgsdCl9LHQucmVqZWN0PWZ1bmN0aW9uKHQpe3JldHVybiBsKG5ldyB0aGlzKG51bGwpLFcsdCl9
LHQucmFjZT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKHQpe2kmJihpPXIodCkpfWZ1bmN0aW9uIG4o
dCl7aSYmKGk9byh0KSl9Zm9yKHZhciByLG8saT1uZXcgdGhpcyhmdW5jdGlvbih0LGUpe249W3Qs
ZV0scj1uWzBdLG89blsxXTt2YXIgbn0pLGE9MCxjPXQ7YTxjLmxlbmd0aDthKyspe3ZhciBzPWNb
YV07dShzKXx8KHM9dGhpcy5yZXNvbHZlKHMpKSxzLnRoZW4oZSxuKX1yZXR1cm4gaX0sdC5hbGw9
ZnVuY3Rpb24odCl7Zm9yKHZhciBlLG4scj1uZXcgdGhpcyhmdW5jdGlvbih0LHIpe2U9dCxuPXJ9
KSxvPTAsaT1bXSxhPTAsYz10O2E8Yy5sZW5ndGg7YSsrKXt2YXIgcz1jW2FdO3Uocyl8fChzPXRo
aXMucmVzb2x2ZShzKSkscy50aGVuKGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihuKXtpW3Rd
PW4sLS1vfHxlKGkpfX0obyksbiksbysrfXJldHVybiBvfHxlKGkpLHJ9LHQucHJvdG90eXBlLnRo
ZW49ZnVuY3Rpb24odCxlKXt2YXIgbj1uZXcgdGhpcy5jb25zdHJ1Y3RvcihudWxsKSxyPUQuY3Vy
cmVudDtyZXR1cm4gdGhpc1tVXT09Sz90aGlzW0hdLnB1c2gocixuLHQsZSk6aCh0aGlzLHIsbix0
LGUpLG59LHQucHJvdG90eXBlLmNhdGNoPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnRoZW4obnVs
bCx0KX0sdH0oKTtHLnJlc29sdmU9Ry5yZXNvbHZlLEcucmVqZWN0PUcucmVqZWN0LEcucmFjZT1H
LnJhY2UsRy5hbGw9Ry5hbGw7dmFyIFk9dFtJXT10LlByb21pc2U7dC5Qcm9taXNlPUc7dmFyIFE9
ZSgidGhlblBhdGNoZWQiKTtpZihZKXt2KFkpO3ZhciBKPXQuZmV0Y2g7ImZ1bmN0aW9uIj09dHlw
ZW9mIEomJih0LmZldGNoPWQoSikpfVByb21pc2VbRC5fX3N5bWJvbF9fKCJ1bmNhdWdodFByb21p
c2VFcnJvcnMiKV09cTt2YXIgJCx0dCxldD1ELl9fc3ltYm9sX18oImJsYWNrbGlzdGVkU3RhY2tG
cmFtZXMiKSxudD10W2UoIkVycm9yIildPXQuRXJyb3IscnQ9e307dC5FcnJvcj15O3ZhciBvdD0i
c3RhY2tSZXdyaXRlIjt5LnByb3RvdHlwZT1udC5wcm90b3R5cGUseVtldF09cnQseVtvdF09ITE7
dmFyIGl0PVsic3RhY2tUcmFjZUxpbWl0IiwiY2FwdHVyZVN0YWNrVHJhY2UiLCJwcmVwYXJlU3Rh
Y2tUcmFjZSJdLGF0PU9iamVjdC5rZXlzKG50KTthdCYmYXQuZm9yRWFjaChmdW5jdGlvbih0KXsw
PT09aXQuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlPT09dH0pLmxlbmd0aCYmT2JqZWN0LmRl
ZmluZVByb3BlcnR5KHksdCx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG50W3RdfSxzZXQ6ZnVuY3Rp
b24oZSl7bnRbdF09ZX19KX0pLG50Lmhhc093blByb3BlcnR5KCJzdGFja1RyYWNlTGltaXQiKSYm
KG50LnN0YWNrVHJhY2VMaW1pdD1NYXRoLm1heChudC5zdGFja1RyYWNlTGltaXQsMTUpLE9iamVj
dC5kZWZpbmVQcm9wZXJ0eSh5LCJzdGFja1RyYWNlTGltaXQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1
cm4gbnQuc3RhY2tUcmFjZUxpbWl0fSxzZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIG50LnN0YWNrVHJh
Y2VMaW1pdD10fX0pKSxudC5oYXNPd25Qcm9wZXJ0eSgiY2FwdHVyZVN0YWNrVHJhY2UiKSYmT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KHksImNhcHR1cmVTdGFja1RyYWNlIix7dmFsdWU6ZnVuY3Rpb24o
dCxlKXtudC5jYXB0dXJlU3RhY2tUcmFjZSh0LGUpfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh5
LCJwcmVwYXJlU3RhY2tUcmFjZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBudC5wcmVwYXJlU3Rh
Y2tUcmFjZX0sc2V0OmZ1bmN0aW9uKHQpe3JldHVybiBudC5wcmVwYXJlU3RhY2tUcmFjZT10JiYi
ZnVuY3Rpb24iPT10eXBlb2YgdD9mdW5jdGlvbihlLG4pe2lmKG4pZm9yKHZhciByPTA7cjxuLmxl
bmd0aDtyKyspe3ZhciBvPW5bcl07aWYoInpvbmVDYXB0dXJlU3RhY2tUcmFjZSI9PT1vLmdldEZ1
bmN0aW9uTmFtZSgpKXtuLnNwbGljZShyLDEpO2JyZWFrfX1yZXR1cm4gdC5hcHBseSh0aGlzLFtl
LG5dKX06dH19KTt2YXIgdXQ9RC5jdXJyZW50LmZvcmsoe25hbWU6ImRldGVjdCIsb25JbnZva2U6
ZnVuY3Rpb24odCxlLG4scixvLGksYSl7cmV0dXJuIHQuaW52b2tlKG4scixvLGksYSl9LG9uSGFu
ZGxlRXJyb3I6ZnVuY3Rpb24odCxlLG4scil7aWYoci5vcmlnaW5hbFN0YWNrJiZFcnJvcj09PXkp
Zm9yKHZhciBvPXIub3JpZ2luYWxTdGFjay5zcGxpdCgvXG4vKSxpPSExLGE9ITEsdT0hMTtvLmxl
bmd0aDspe3ZhciBjPW8uc2hpZnQoKTtpZigvOlxkKzpcZCsvLnRlc3QoYykpe3ZhciBzPWMuc3Bs
aXQoIigiKVswXS5zcGxpdCgiQCIpWzBdLGY9MTtpZigtMSE9PXMuaW5kZXhPZigiWm9uZUF3YXJl
RXJyb3IiKSYmKCQ9Yyx0dD1jLnJlcGxhY2UoIkVycm9yLiIsIiIpLHJ0W3R0XT0wKSwtMSE9PXMu
aW5kZXhPZigicnVuR3VhcmRlZCIpP2E9ITA6LTEhPT1zLmluZGV4T2YoInJ1blRhc2siKT91PSEw
Oi0xIT09cy5pbmRleE9mKCJydW4iKT9pPSEwOmY9MCxydFtjXT1mLGkmJmEmJnUpe3lbb3RdPSEw
O2JyZWFrfX19cmV0dXJuITF9fSksY3Q9ZnVuY3Rpb24oKXt1dC5ydW4oZnVuY3Rpb24oKXt1dC5y
dW5HdWFyZGVkKGZ1bmN0aW9uKCl7dGhyb3cgbmV3IHkoeSxudCl9KX0pfTt1dC5ydW5UYXNrKHV0
LnNjaGVkdWxlTWFjcm9UYXNrKCJkZXRlY3QiLGN0LG51bGwsZnVuY3Rpb24oKXtyZXR1cm4gbnVs
bH0sbnVsbCkpLHQuWm9uZT1EfSgidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmd2luZG93fHwi
dW5kZWZpbmVkIiE9dHlwZW9mIHNlbGYmJnNlbGZ8fHQpLGZ1bmN0aW9uKHQpe3JldHVybiJfX3pv
bmVfc3ltYm9sX18iK3R9KSxqPSJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3d8fCJvYmpl
Y3QiPT10eXBlb2Ygc2VsZiYmc2VsZnx8dCx6PSJ1bmRlZmluZWQiIT10eXBlb2YgV29ya2VyR2xv
YmFsU2NvcGUmJnNlbGYgaW5zdGFuY2VvZiBXb3JrZXJHbG9iYWxTY29wZSxDPSEoIm53ImluIGop
JiZ2b2lkIDAhPT1lJiYiW29iamVjdCBwcm9jZXNzXSI9PT17fS50b1N0cmluZy5jYWxsKGUpLEk9
IUMmJiF6JiYhKCJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93fHwhd2luZG93LkhUTUxFbGVtZW50
KSxaPXZvaWQgMCE9PWUmJiJbb2JqZWN0IHByb2Nlc3NdIj09PXt9LnRvU3RyaW5nLmNhbGwoZSkm
JiF6JiYhKCJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93fHwhd2luZG93LkhUTUxFbGVtZW50KSxS
PXgoImV2ZW50VGFza3MiKSxGPSJhZGRFdmVudExpc3RlbmVyIixNPSJyZW1vdmVFdmVudExpc3Rl
bmVyIixMPWZ1bmN0aW9uKHQsZSl7cmV0dXJue3VzZUNhcHR1cmluZzplWzJdLGV2ZW50TmFtZTpl
WzBdLGhhbmRsZXI6ZVsxXSx0YXJnZXQ6dHx8aixuYW1lOmVbMF0saW52b2tlQWRkRnVuYzpmdW5j
dGlvbih0LGUpe3JldHVybiBlJiZlLmludm9rZT90aGlzLnRhcmdldFt0XSh0aGlzLmV2ZW50TmFt
ZSxlLmludm9rZSx0aGlzLnVzZUNhcHR1cmluZyk6dGhpcy50YXJnZXRbdF0odGhpcy5ldmVudE5h
bWUsZSx0aGlzLnVzZUNhcHR1cmluZyl9LGludm9rZVJlbW92ZUZ1bmM6ZnVuY3Rpb24odCxlKXty
ZXR1cm4gZSYmZS5pbnZva2U/dGhpcy50YXJnZXRbdF0odGhpcy5ldmVudE5hbWUsZS5pbnZva2Us
dGhpcy51c2VDYXB0dXJpbmcpOnRoaXMudGFyZ2V0W3RdKHRoaXMuZXZlbnROYW1lLGUsdGhpcy51
c2VDYXB0dXJpbmcpfX19LHE9KGMoRixNKSxzKE0pLHgoIm9yaWdpbmFsSW5zdGFuY2UiKSk7Wm9u
ZVt4KCJwYXRjaEV2ZW50VGFyZ2V0TWV0aG9kcyIpXT1mLFpvbmVbeCgicGF0Y2hPblByb3BlcnRp
ZXMiKV09aTsvKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCit2YXIgQT1PYmpl
Y3RbeCgiZGVmaW5lUHJvcGVydHkiKV09T2JqZWN0LmRlZmluZVByb3BlcnR5LFU9T2JqZWN0W3go
ImdldE93blByb3BlcnR5RGVzY3JpcHRvciIpXT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yLEg9T2JqZWN0LmNyZWF0ZSxOPXgoInVuY29uZmlndXJhYmxlcyIpLEs9IkFuY2hvcixBcmVh
LEF1ZGlvLEJSLEJhc2UsQmFzZUZvbnQsQm9keSxCdXR0b24sQ2FudmFzLENvbnRlbnQsRExpc3Qs
RGlyZWN0b3J5LERpdixFbWJlZCxGaWVsZFNldCxGb250LEZvcm0sRnJhbWUsRnJhbWVTZXQsSFIs
SGVhZCxIZWFkaW5nLEh0bWwsSUZyYW1lLEltYWdlLElucHV0LEtleWdlbixMSSxMYWJlbCxMZWdl
bmQsTGluayxNYXAsTWFycXVlZSxNZWRpYSxNZW51LE1ldGEsTWV0ZXIsTW9kLE9MaXN0LE9iamVj
dCxPcHRHcm91cCxPcHRpb24sT3V0cHV0LFBhcmFncmFwaCxQcmUsUHJvZ3Jlc3MsUXVvdGUsU2Ny
aXB0LFNlbGVjdCxTb3VyY2UsU3BhbixTdHlsZSxUYWJsZUNhcHRpb24sVGFibGVDZWxsLFRhYmxl
Q29sLFRhYmxlLFRhYmxlUm93LFRhYmxlU2VjdGlvbixUZXh0QXJlYSxUaXRsZSxUcmFjayxVTGlz
dCxVbmtub3duLFZpZGVvIixYPSJBcHBsaWNhdGlvbkNhY2hlLEV2ZW50U291cmNlLEZpbGVSZWFk
ZXIsSW5wdXRNZXRob2RDb250ZXh0LE1lZGlhQ29udHJvbGxlcixNZXNzYWdlUG9ydCxOb2RlLFBl
cmZvcm1hbmNlLFNWR0VsZW1lbnRJbnN0YW5jZSxTaGFyZWRXb3JrZXIsVGV4dFRyYWNrLFRleHRU
cmFja0N1ZSxUZXh0VHJhY2tMaXN0LFdlYktpdE5hbWVkRmxvdyxXaW5kb3csV29ya2VyLFdvcmtl
ckdsb2JhbFNjb3BlLFhNTEh0dHBSZXF1ZXN0LFhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQsWE1M
SHR0cFJlcXVlc3RVcGxvYWQsSURCUmVxdWVzdCxJREJPcGVuREJSZXF1ZXN0LElEQkRhdGFiYXNl
LElEQlRyYW5zYWN0aW9uLElEQkN1cnNvcixEQkluZGV4LFdlYlNvY2tldCIuc3BsaXQoIiwiKSxX
PSJFdmVudFRhcmdldCIsVj0iY29weSBjdXQgcGFzdGUgYWJvcnQgYmx1ciBmb2N1cyBjYW5wbGF5
IGNhbnBsYXl0aHJvdWdoIGNoYW5nZSBjbGljayBjb250ZXh0bWVudSBkYmxjbGljayBkcmFnIGRy
YWdlbmQgZHJhZ2VudGVyIGRyYWdsZWF2ZSBkcmFnb3ZlciBkcmFnc3RhcnQgZHJvcCBkdXJhdGlv
bmNoYW5nZSBlbXB0aWVkIGVuZGVkIGlucHV0IGludmFsaWQga2V5ZG93biBrZXlwcmVzcyBrZXl1
cCBsb2FkIGxvYWRlZGRhdGEgbG9hZGVkbWV0YWRhdGEgbG9hZHN0YXJ0IG1lc3NhZ2UgbW91c2Vk
b3duIG1vdXNlZW50ZXIgbW91c2VsZWF2ZSBtb3VzZW1vdmUgbW91c2VvdXQgbW91c2VvdmVyIG1v
dXNldXAgcGF1c2UgcGxheSBwbGF5aW5nIHByb2dyZXNzIHJhdGVjaGFuZ2UgcmVzZXQgc2Nyb2xs
IHNlZWtlZCBzZWVraW5nIHNlbGVjdCBzaG93IHN0YWxsZWQgc3VibWl0IHN1c3BlbmQgdGltZXVw
ZGF0ZSB2b2x1bWVjaGFuZ2Ugd2FpdGluZyBtb3pmdWxsc2NyZWVuY2hhbmdlIG1vemZ1bGxzY3Jl
ZW5lcnJvciBtb3pwb2ludGVybG9ja2NoYW5nZSBtb3pwb2ludGVybG9ja2Vycm9yIGVycm9yIHdl
YmdsY29udGV4dHJlc3RvcmVkIHdlYmdsY29udGV4dGxvc3Qgd2ViZ2xjb250ZXh0Y3JlYXRpb25l
cnJvciIuc3BsaXQoIiAiKSxCPXgoInVuYm91bmQiKSxHPSJzZXQiLFk9ImNsZWFyIixRPVsiYWxl
cnQiLCJwcm9tcHQiLCJjb25maXJtIl0sSj0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmd2lu
ZG93fHwidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGYmJnNlbGZ8fHQ7ZChKLEcsWSwiVGltZW91dCIp
LGQoSixHLFksIkludGVydmFsIiksZChKLEcsWSwiSW1tZWRpYXRlIiksZChKLCJyZXF1ZXN0Iiwi
Y2FuY2VsIiwiQW5pbWF0aW9uRnJhbWUiKSxkKEosIm1velJlcXVlc3QiLCJtb3pDYW5jZWwiLCJB
bmltYXRpb25GcmFtZSIpLGQoSiwid2Via2l0UmVxdWVzdCIsIndlYmtpdENhbmNlbCIsIkFuaW1h
dGlvbkZyYW1lIik7Zm9yKHZhciAkPTA7JDxRLmxlbmd0aDskKyspe3ZhciB0dD1RWyRdO2goSix0
dCxmdW5jdGlvbih0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKGUscil7cmV0dXJuIFpvbmUuY3VycmVu
dC5ydW4odCxKLHIsbil9fSl9YihKKTt2YXIgZXQ9Si5YTUxIdHRwUmVxdWVzdEV2ZW50VGFyZ2V0
O2V0JiZldC5wcm90b3R5cGUmJmYoZXQucHJvdG90eXBlKSxUKEopLGwoIk11dGF0aW9uT2JzZXJ2
ZXIiKSxsKCJXZWJLaXRNdXRhdGlvbk9ic2VydmVyIiksbCgiRmlsZVJlYWRlciIpLHkoKSxTKEop
LEQoSik7dmFyIG50PXgoInhoclRhc2siKSxydD14KCJ4aHJTeW5jIiksb3Q9eCgieGhyTGlzdGVu
ZXIiKSxpdD14KCJ4aHJTY2hlZHVsZWQiKTtKLm5hdmlnYXRvciYmSi5uYXZpZ2F0b3IuZ2VvbG9j
YXRpb24mJnIoSi5uYXZpZ2F0b3IuZ2VvbG9jYXRpb24sWyJnZXRDdXJyZW50UG9zaXRpb24iLCJ3
YXRjaFBvc2l0aW9uIl0pLEouUHJvbWlzZVJlamVjdGlvbkV2ZW50JiYoWm9uZVt4KCJ1bmhhbmRs
ZWRQcm9taXNlUmVqZWN0aW9uSGFuZGxlciIpXT1FKCJ1bmhhbmRsZWRyZWplY3Rpb24iKSxab25l
W3goInJlamVjdGlvbkhhbmRsZWRIYW5kbGVyIildPUUoInJlamVjdGlvbmhhbmRsZWQiKSl9KX0p
LmNhbGwoZSxuKCJEdVIyIiksbigiVzJuVSIpKX0sWnR3RTpmdW5jdGlvbih0LGUsbil7InVzZSBz
dHJpY3QiO3ZhciByPW4oIlhTT1oiKSxvPW4oIlVLTSsiKSxpPW4oIlBIQ3giKSxhPVtdLnNsaWNl
LHU9e30sYz1mdW5jdGlvbih0LGUsbil7aWYoIShlIGluIHUpKXtmb3IodmFyIHI9W10sbz0wO288
ZTtvKyspcltvXT0iYVsiK28rIl0iO3VbZV09RnVuY3Rpb24oIkYsYSIsInJldHVybiBuZXcgRigi
K3Iuam9pbigiLCIpKyIpIil9cmV0dXJuIHVbZV0odCxuKX07dC5leHBvcnRzPUZ1bmN0aW9uLmJp
bmR8fGZ1bmN0aW9uKHQpe3ZhciBlPXIodGhpcyksbj1hLmNhbGwoYXJndW1lbnRzLDEpLHU9ZnVu
Y3Rpb24oKXt2YXIgcj1uLmNvbmNhdChhLmNhbGwoYXJndW1lbnRzKSk7cmV0dXJuIHRoaXMgaW5z
dGFuY2VvZiB1P2MoZSxyLmxlbmd0aCxyKTppKGUscix0KX07cmV0dXJuIG8oZS5wcm90b3R5cGUp
JiYodS5wcm90b3R5cGU9ZS5wcm90b3R5cGUpLHV9fSxiTjFwOmZ1bmN0aW9uKHQsZSl7dC5leHBv
cnRzPXt9fSxiVVkwOmZ1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQsZSxuKXt2YXIgYyxwLGg9
YXJndW1lbnRzLmxlbmd0aDw0P3Q6YXJndW1lbnRzWzNdLHY9aS5mKGYodCksZSk7aWYoIXYpe2lm
KGwocD1hKHQpKSlyZXR1cm4gcihwLGUsbixoKTt2PXMoMCl9cmV0dXJuIHUodiwidmFsdWUiKT8h
KCExPT09di53cml0YWJsZXx8IWwoaCkpJiYoYz1pLmYoaCxlKXx8cygwKSxjLnZhbHVlPW4sby5m
KGgsZSxjKSwhMCk6dm9pZCAwIT09di5zZXQmJih2LnNldC5jYWxsKGgsbiksITApfXZhciBvPW4o
ImxETGsiKSxpPW4oIng5enYiKSxhPW4oIktPcmQiKSx1PW4oIldCY0wiKSxjPW4oIkRzNVAiKSxz
PW4oImZVMjUiKSxmPW4oIkRJVlAiKSxsPW4oIlVLTSsiKTtjKGMuUywiUmVmbGVjdCIse3NldDpy
fSl9LGJVcU86ZnVuY3Rpb24odCxlLG4pe3QuZXhwb3J0cz0hbigiemdJdCIpKGZ1bmN0aW9uKCl7
cmV0dXJuIDchPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwiYSIse2dldDpmdW5jdGlvbigpe3Jl
dHVybiA3fX0pLmF9KX0sYm9vMjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiVUtNKyIpLG89bigi
WE8xUiIpLGk9bigia2tDdyIpKCJzcGVjaWVzIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBl
O3JldHVybiBvKHQpJiYoZT10LmNvbnN0cnVjdG9yLCJmdW5jdGlvbiIhPXR5cGVvZiBlfHxlIT09
QXJyYXkmJiFvKGUucHJvdG90eXBlKXx8KGU9dm9pZCAwKSxyKGUpJiZudWxsPT09KGU9ZVtpXSkm
JihlPXZvaWQgMCkpLHZvaWQgMD09PWU/QXJyYXk6ZX19LGQwNzU6ZnVuY3Rpb24odCxlLG4pe3Qu
ZXhwb3J0cz1uKCJPeklxIikuZG9jdW1lbnQmJmRvY3VtZW50LmRvY3VtZW50RWxlbWVudH0sZFNV
dzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkRnaWkiKTt0LmV4cG9ydHM9
bigiMFJpaCIpKCJTZXQiLGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0KHRo
aXMsYXJndW1lbnRzLmxlbmd0aD4wP2FyZ3VtZW50c1swXTp2b2lkIDApfX0se2FkZDpmdW5jdGlv
bih0KXtyZXR1cm4gci5kZWYodGhpcyx0PTA9PT10PzA6dCx0KX19LHIpfSwiZG0rNyI6ZnVuY3Rp
b24odCxlLG4pe3ZhciByPW4oIkRzNVAiKTtyKHIuUywiUmVmbGVjdCIse2hhczpmdW5jdGlvbih0
LGUpe3JldHVybiBlIGluIHR9fSl9LGZKU3g6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2
YXIgcj1uKCJBMTZMIiksbz1uKCIxYUEwIikuZ2V0V2VhayxpPW4oIkRJVlAiKSxhPW4oIlVLTSsi
KSx1PW4oIjlHcEEiKSxjPW4oInZtU08iKSxzPW4oIkxoVGEiKSxmPW4oIldCY0wiKSxsPXMoNSks
cD1zKDYpLGg9MCx2PWZ1bmN0aW9uKHQpe3JldHVybiB0Ll9sfHwodC5fbD1uZXcgZCl9LGQ9ZnVu
Y3Rpb24oKXt0aGlzLmE9W119LHk9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbCh0LmEsZnVuY3Rpb24o
dCl7cmV0dXJuIHRbMF09PT1lfSl9O2QucHJvdG90eXBlPXtnZXQ6ZnVuY3Rpb24odCl7dmFyIGU9
eSh0aGlzLHQpO2lmKGUpcmV0dXJuIGVbMV19LGhhczpmdW5jdGlvbih0KXtyZXR1cm4hIXkodGhp
cyx0KX0sc2V0OmZ1bmN0aW9uKHQsZSl7dmFyIG49eSh0aGlzLHQpO24/blsxXT1lOnRoaXMuYS5w
dXNoKFt0LGVdKX0sZGVsZXRlOmZ1bmN0aW9uKHQpe3ZhciBlPXAodGhpcy5hLGZ1bmN0aW9uKGUp
e3JldHVybiBlWzBdPT09dH0pO3JldHVybn5lJiZ0aGlzLmEuc3BsaWNlKGUsMSksISF+ZX19LHQu
ZXhwb3J0cz17Z2V0Q29uc3RydWN0b3I6ZnVuY3Rpb24odCxlLG4saSl7dmFyIHM9dChmdW5jdGlv
bih0LHIpe3UodCxzLGUsIl9pIiksdC5faT1oKyssdC5fbD12b2lkIDAsdm9pZCAwIT1yJiZjKHIs
bix0W2ldLHQpfSk7cmV0dXJuIHIocy5wcm90b3R5cGUse2RlbGV0ZTpmdW5jdGlvbih0KXtpZigh
YSh0KSlyZXR1cm4hMTt2YXIgZT1vKHQpO3JldHVybiEwPT09ZT92KHRoaXMpLmRlbGV0ZSh0KTpl
JiZmKGUsdGhpcy5faSkmJmRlbGV0ZSBlW3RoaXMuX2ldfSxoYXM6ZnVuY3Rpb24odCl7aWYoIWEo
dCkpcmV0dXJuITE7dmFyIGU9byh0KTtyZXR1cm4hMD09PWU/dih0aGlzKS5oYXModCk6ZSYmZihl
LHRoaXMuX2kpfX0pLHN9LGRlZjpmdW5jdGlvbih0LGUsbil7dmFyIHI9byhpKGUpLCEwKTtyZXR1
cm4hMD09PXI/dih0KS5zZXQoZSxuKTpyW3QuX2ldPW4sdH0sdWZzdG9yZTp2fX0sZlUyNTpmdW5j
dGlvbih0LGUpe3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybntlbnVtZXJhYmxlOiEoMSZ0
KSxjb25maWd1cmFibGU6ISgyJnQpLHdyaXRhYmxlOiEoNCZ0KSx2YWx1ZTplfX19LGd2RHQ6ZnVu
Y3Rpb24odCxlLG4pe3ZhciByPW4oIlVLTSsiKSxvPW4oIkRJVlAiKSxpPWZ1bmN0aW9uKHQsZSl7
aWYobyh0KSwhcihlKSYmbnVsbCE9PWUpdGhyb3cgVHlwZUVycm9yKGUrIjogY2FuJ3Qgc2V0IGFz
IHByb3RvdHlwZSEiKX07dC5leHBvcnRzPXtzZXQ6T2JqZWN0LnNldFByb3RvdHlwZU9mfHwoIl9f
cHJvdG9fXyJpbnt9P2Z1bmN0aW9uKHQsZSxyKXt0cnl7cj1uKCJyRnpZIikoRnVuY3Rpb24uY2Fs
bCxuKCJ4OXp2IikuZihPYmplY3QucHJvdG90eXBlLCJfX3Byb3RvX18iKS5zZXQsMikscih0LFtd
KSxlPSEodCBpbnN0YW5jZW9mIEFycmF5KX1jYXRjaCh0KXtlPSEwfXJldHVybiBmdW5jdGlvbih0
LG4pe3JldHVybiBpKHQsbiksZT90Ll9fcHJvdG9fXz1uOnIodCxuKSx0fX0oe30sITEpOnZvaWQg
MCksY2hlY2s6aX19LGpoeGY6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIlVLTSsiKSxvPW4oIk96
SXEiKS5kb2N1bWVudCxpPXIobykmJnIoby5jcmVhdGVFbGVtZW50KTt0LmV4cG9ydHM9ZnVuY3Rp
b24odCl7cmV0dXJuIGk/by5jcmVhdGVFbGVtZW50KHQpOnt9fX0sa2ljNTpmdW5jdGlvbih0LGUs
bil7dmFyIHI9bigiVUtNKyIpLG89bigiZ3ZEdCIpLnNldDt0LmV4cG9ydHM9ZnVuY3Rpb24odCxl
LG4pe3ZhciBpLGE9ZS5jb25zdHJ1Y3RvcjtyZXR1cm4gYSE9PW4mJiJmdW5jdGlvbiI9PXR5cGVv
ZiBhJiYoaT1hLnByb3RvdHlwZSkhPT1uLnByb3RvdHlwZSYmcihpKSYmbyYmbyh0LGkpLHR9fSxr
a0N3OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJWV2dGIikoIndrcyIpLG89bigidWxUWSIpLGk9
bigiT3pJcSIpLlN5bWJvbCxhPSJmdW5jdGlvbiI9PXR5cGVvZiBpOyh0LmV4cG9ydHM9ZnVuY3Rp
b24odCl7cmV0dXJuIHJbdF18fChyW3RdPWEmJmlbdF18fChhP2k6bykoIlN5bWJvbC4iK3QpKX0p
LnN0b3JlPXJ9LGxETGs6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkRJVlAiKSxvPW4oInhaYSsi
KSxpPW4oInM0ajAiKSxhPU9iamVjdC5kZWZpbmVQcm9wZXJ0eTtlLmY9bigiYlVxTyIpP09iamVj
dC5kZWZpbmVQcm9wZXJ0eTpmdW5jdGlvbih0LGUsbil7aWYocih0KSxlPWkoZSwhMCkscihuKSxv
KXRyeXtyZXR1cm4gYSh0LGUsbil9Y2F0Y2godCl7fWlmKCJnZXQiaW4gbnx8InNldCJpbiBuKXRo
cm93IFR5cGVFcnJvcigiQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQhIik7cmV0dXJuInZhbHVlImlu
IG4mJih0W2VdPW4udmFsdWUpLHR9fSxtVHA3OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJEczVQ
Iiksbz1uKCJndkR0Iik7byYmcihyLlMsIlJlZmxlY3QiLHtzZXRQcm90b3R5cGVPZjpmdW5jdGlv
bih0LGUpe28uY2hlY2sodCxlKTt0cnl7cmV0dXJuIG8uc2V0KHQsZSksITB9Y2F0Y2godCl7cmV0
dXJuITF9fX0pfSxtWk9OOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJWV2dGIikoImtleXMiKSxv
PW4oInVsVFkiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHJbdF18fChyW3RdPW8odCkp
fX0sb1lkNzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIlFoMTQiKSxvPW4o
IlkxTjMiKSxpPW4oIlkxYUEiKSxhPW4oIkZyeVIiKSx1PW4oIlE2TmYiKSxjPU9iamVjdC5hc3Np
Z247dC5leHBvcnRzPSFjfHxuKCJ6Z0l0IikoZnVuY3Rpb24oKXt2YXIgdD17fSxlPXt9LG49U3lt
Ym9sKCkscj0iYWJjZGVmZ2hpamtsbW5vcHFyc3QiO3JldHVybiB0W25dPTcsci5zcGxpdCgiIiku
Zm9yRWFjaChmdW5jdGlvbih0KXtlW3RdPXR9KSw3IT1jKHt9LHQpW25dfHxPYmplY3Qua2V5cyhj
KHt9LGUpKS5qb2luKCIiKSE9cn0pP2Z1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPWEodCksYz1hcmd1
bWVudHMubGVuZ3RoLHM9MSxmPW8uZixsPWkuZjtjPnM7KWZvcih2YXIgcCxoPXUoYXJndW1lbnRz
W3MrK10pLHY9Zj9yKGgpLmNvbmNhdChmKGgpKTpyKGgpLGQ9di5sZW5ndGgseT0wO2Q+eTspbC5j
YWxsKGgscD12W3krK10pJiYobltwXT1oW3BdKTtyZXR1cm4gbn06Y30sb2VpaDpmdW5jdGlvbih0
LGUpe3ZhciBuPU1hdGguY2VpbCxyPU1hdGguZmxvb3I7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3Jl
dHVybiBpc05hTih0PSt0KT8wOih0PjA/cjpuKSh0KX19LG90NXM6ZnVuY3Rpb24odCxlLG4pe3Zh
ciByPW4oIlBIcWgiKSxvPW4oIkJieUYiKSxpPW4oIjhEOEgiKTt0LmV4cG9ydHM9ZnVuY3Rpb24o
dCl7cmV0dXJuIGZ1bmN0aW9uKGUsbixhKXt2YXIgdSxjPXIoZSkscz1vKGMubGVuZ3RoKSxmPWko
YSxzKTtpZih0JiZuIT1uKXtmb3IoO3M+ZjspaWYoKHU9Y1tmKytdKSE9dSlyZXR1cm4hMH1lbHNl
IGZvcig7cz5mO2YrKylpZigodHx8ZiBpbiBjKSYmY1tmXT09PW4pcmV0dXJuIHR8fGZ8fDA7cmV0
dXJuIXQmJi0xfX19LHBsU1Y6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oImJvbzIiKTt0LmV4cG9y
dHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3KHIodCkpKGUpfX0scWt5YzpmdW5jdGlvbih0LGUs
bil7dmFyIHI9bigia2tDdyIpKCJpdGVyYXRvciIpLG89ITE7dHJ5e3ZhciBpPVs3XVtyXSgpO2ku
cmV0dXJuPWZ1bmN0aW9uKCl7bz0hMH0sQXJyYXkuZnJvbShpLGZ1bmN0aW9uKCl7dGhyb3cgMn0p
fWNhdGNoKHQpe310LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtpZighZSYmIW8pcmV0dXJuITE7dmFy
IG49ITE7dHJ5e3ZhciBpPVs3XSxhPWlbcl0oKTthLm5leHQ9ZnVuY3Rpb24oKXtyZXR1cm57ZG9u
ZTpuPSEwfX0saVtyXT1mdW5jdGlvbigpe3JldHVybiBhfSx0KGkpfWNhdGNoKHQpe31yZXR1cm4g
bn19LHJGelk6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIlhTT1oiKTt0LmV4cG9ydHM9ZnVuY3Rp
b24odCxlLG4pe2lmKHIodCksdm9pZCAwPT09ZSlyZXR1cm4gdDtzd2l0Y2gobil7Y2FzZSAxOnJl
dHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdC5jYWxsKGUsbil9O2Nhc2UgMjpyZXR1cm4gZnVuY3Rp
b24obixyKXtyZXR1cm4gdC5jYWxsKGUsbixyKX07Y2FzZSAzOnJldHVybiBmdW5jdGlvbihuLHIs
byl7cmV0dXJuIHQuY2FsbChlLG4scixvKX19cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQuYXBw
bHkoZSxhcmd1bWVudHMpfX19LHM0ajA6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIlVLTSsiKTt0
LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtpZighcih0KSlyZXR1cm4gdDt2YXIgbixvO2lmKGUmJiJm
dW5jdGlvbiI9PXR5cGVvZihuPXQudG9TdHJpbmcpJiYhcihvPW4uY2FsbCh0KSkpcmV0dXJuIG87
aWYoImZ1bmN0aW9uIj09dHlwZW9mKG49dC52YWx1ZU9mKSYmIXIobz1uLmNhbGwodCkpKXJldHVy
biBvO2lmKCFlJiYiZnVuY3Rpb24iPT10eXBlb2Yobj10LnRvU3RyaW5nKSYmIXIobz1uLmNhbGwo
dCkpKXJldHVybiBvO3Rocm93IFR5cGVFcnJvcigiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJp
bWl0aXZlIHZhbHVlIil9fSx0d3hNOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJsRExrIiksbz1u
KCJESVZQIiksaT1uKCJRaDE0Iik7dC5leHBvcnRzPW4oImJVcU8iKT9PYmplY3QuZGVmaW5lUHJv
cGVydGllczpmdW5jdGlvbih0LGUpe28odCk7Zm9yKHZhciBuLGE9aShlKSx1PWEubGVuZ3RoLGM9
MDt1PmM7KXIuZih0LG49YVtjKytdLGVbbl0pO3JldHVybiB0fX0sdWMyQTpmdW5jdGlvbih0LGUs
bil7InVzZSBzdHJpY3QiO3ZhciByPW4oIlYzbC8iKSxvPW4oIkRzNVAiKSxpPW4oIlIzQVAiKSxh
PW4oIjJwMXEiKSx1PW4oIldCY0wiKSxjPW4oImJOMXAiKSxzPW4oIklSSjMiKSxmPW4oInlZdksi
KSxsPW4oIktPcmQiKSxwPW4oImtrQ3ciKSgiaXRlcmF0b3IiKSxoPSEoW10ua2V5cyYmIm5leHQi
aW5bXS5rZXlzKCkpLHY9ImtleXMiLGQ9InZhbHVlcyIseT1mdW5jdGlvbigpe3JldHVybiB0aGlz
fTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4sZyxrLHcsbSl7cyhuLGUsZyk7dmFyIGIsXyxULE89
ZnVuY3Rpb24odCl7aWYoIWgmJnQgaW4gRSlyZXR1cm4gRVt0XTtzd2l0Y2godCl7Y2FzZSB2OmNh
c2UgZDpyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbmV3IG4odGhpcyx0KX19cmV0dXJuIGZ1bmN0
aW9uKCl7cmV0dXJuIG5ldyBuKHRoaXMsdCl9fSxQPWUrIiBJdGVyYXRvciIsUz1rPT1kLEQ9ITEs
RT10LnByb3RvdHlwZSx4PUVbcF18fEVbIkBAaXRlcmF0b3IiXXx8ayYmRVtrXSxqPXh8fE8oayks
ej1rP1M/TygiZW50cmllcyIpOmo6dm9pZCAwLEM9IkFycmF5Ij09ZT9FLmVudHJpZXN8fHg6eDtp
ZihDJiYoVD1sKEMuY2FsbChuZXcgdCkpKSE9PU9iamVjdC5wcm90b3R5cGUmJihmKFQsUCwhMCks
cnx8dShULHApfHxhKFQscCx5KSksUyYmeCYmeC5uYW1lIT09ZCYmKEQ9ITAsaj1mdW5jdGlvbigp
e3JldHVybiB4LmNhbGwodGhpcyl9KSxyJiYhbXx8IWgmJiFEJiZFW3BdfHxhKEUscCxqKSxjW2Vd
PWosY1tQXT15LGspaWYoYj17dmFsdWVzOlM/ajpPKGQpLGtleXM6dz9qOk8odiksZW50cmllczp6
fSxtKWZvcihfIGluIGIpXyBpbiBFfHxpKEUsXyxiW19dKTtlbHNlIG8oby5QK28uRiooaHx8RCks
ZSxiKTtyZXR1cm4gYn19LHVsVFk6ZnVuY3Rpb24odCxlKXt2YXIgbj0wLHI9TWF0aC5yYW5kb20o
KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIlN5bWJvbCgiLmNvbmNhdCh2b2lkIDA9PT10
PyIiOnQsIilfIiwoKytuK3IpLnRvU3RyaW5nKDM2KSl9fSx2M2hVOmZ1bmN0aW9uKHQsZSxuKXt2
YXIgcj1uKCJkU1V3Iiksbz1uKCJRRzd1IiksaT1uKCJ3Q3NvIiksYT1uKCJESVZQIiksdT1uKCJL
T3JkIiksYz1pLmtleXMscz1pLmtleSxmPWZ1bmN0aW9uKHQsZSl7dmFyIG49Yyh0LGUpLGk9dSh0
KTtpZihudWxsPT09aSlyZXR1cm4gbjt2YXIgYT1mKGksZSk7cmV0dXJuIGEubGVuZ3RoP24ubGVu
Z3RoP28obmV3IHIobi5jb25jYXQoYSkpKTphOm59O2kuZXhwKHtnZXRNZXRhZGF0YUtleXM6ZnVu
Y3Rpb24odCl7cmV0dXJuIGYoYSh0KSxhcmd1bWVudHMubGVuZ3RoPDI/dm9pZCAwOnMoYXJndW1l
bnRzWzFdKSl9fSl9LHZtU086ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oInJGelkiKSxvPW4oIlh2
VXMiKSxpPW4oIjl2YjEiKSxhPW4oIkRJVlAiKSx1PW4oIkJieUYiKSxjPW4oIlNIZTkiKSxzPXt9
LGY9e30sZT10LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4sbCxwKXt2YXIgaCx2LGQseSxnPXA/ZnVu
Y3Rpb24oKXtyZXR1cm4gdH06Yyh0KSxrPXIobixsLGU/MjoxKSx3PTA7aWYoImZ1bmN0aW9uIiE9
dHlwZW9mIGcpdGhyb3cgVHlwZUVycm9yKHQrIiBpcyBub3QgaXRlcmFibGUhIik7aWYoaShnKSl7
Zm9yKGg9dSh0Lmxlbmd0aCk7aD53O3crKylpZigoeT1lP2soYSh2PXRbd10pWzBdLHZbMV0pOmso
dFt3XSkpPT09c3x8eT09PWYpcmV0dXJuIHl9ZWxzZSBmb3IoZD1nLmNhbGwodCk7ISh2PWQubmV4
dCgpKS5kb25lOylpZigoeT1vKGQsayx2LnZhbHVlLGUpKT09PXN8fHk9PT1mKXJldHVybiB5fTtl
LkJSRUFLPXMsZS5SRVRVUk49Zn0sdm1TdTpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiRHM1UCIp
LG89bigiN3lsWCIpLGk9bigiWFNPWiIpLGE9bigiRElWUCIpLHU9bigiVUtNKyIpLGM9bigiemdJ
dCIpLHM9bigiWnR3RSIpLGY9KG4oIk96SXEiKS5SZWZsZWN0fHx7fSkuY29uc3RydWN0LGw9Yyhm
dW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIShmKGZ1bmN0aW9uKCl7fSxbXSx0KWluc3Rh
bmNlb2YgdCl9KSxwPSFjKGZ1bmN0aW9uKCl7ZihmdW5jdGlvbigpe30pfSk7cihyLlMrci5GKihs
fHxwKSwiUmVmbGVjdCIse2NvbnN0cnVjdDpmdW5jdGlvbih0LGUpe2kodCksYShlKTt2YXIgbj1h
cmd1bWVudHMubGVuZ3RoPDM/dDppKGFyZ3VtZW50c1syXSk7aWYocCYmIWwpcmV0dXJuIGYodCxl
LG4pO2lmKHQ9PW4pe3N3aXRjaChlLmxlbmd0aCl7Y2FzZSAwOnJldHVybiBuZXcgdDtjYXNlIDE6
cmV0dXJuIG5ldyB0KGVbMF0pO2Nhc2UgMjpyZXR1cm4gbmV3IHQoZVswXSxlWzFdKTtjYXNlIDM6
cmV0dXJuIG5ldyB0KGVbMF0sZVsxXSxlWzJdKTtjYXNlIDQ6cmV0dXJuIG5ldyB0KGVbMF0sZVsx
XSxlWzJdLGVbM10pfXZhciByPVtudWxsXTtyZXR1cm4gci5wdXNoLmFwcGx5KHIsZSksbmV3KHMu
YXBwbHkodCxyKSl9dmFyIGM9bi5wcm90b3R5cGUsaD1vKHUoYyk/YzpPYmplY3QucHJvdG90eXBl
KSx2PUZ1bmN0aW9uLmFwcGx5LmNhbGwodCxoLGUpO3JldHVybiB1KHYpP3Y6aH19KX0sdnNoNjpm
dW5jdGlvbih0LGUsbil7dmFyIHI9bigid0NzbyIpLG89bigiRElWUCIpLGk9ci5rZXlzLGE9ci5r
ZXk7ci5leHAoe2dldE93bk1ldGFkYXRhS2V5czpmdW5jdGlvbih0KXtyZXR1cm4gaShvKHQpLGFy
Z3VtZW50cy5sZW5ndGg8Mj92b2lkIDA6YShhcmd1bWVudHNbMV0pKX19KX0sd0MxTjpmdW5jdGlv
bih0LGUsbil7dmFyIHI9bigieWRENSIpLG89bigia2tDdyIpKCJ0b1N0cmluZ1RhZyIpLGk9IkFy
Z3VtZW50cyI9PXIoZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzfSgpKSxhPWZ1bmN0aW9uKHQs
ZSl7dHJ5e3JldHVybiB0W2VdfWNhdGNoKHQpe319O3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIg
ZSxuLHU7cmV0dXJuIHZvaWQgMD09PXQ/IlVuZGVmaW5lZCI6bnVsbD09PXQ/Ik51bGwiOiJzdHJp
bmciPT10eXBlb2Yobj1hKGU9T2JqZWN0KHQpLG8pKT9uOmk/cihlKToiT2JqZWN0Ij09KHU9cihl
KSkmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLmNhbGxlZT8iQXJndW1lbnRzIjp1fX0sd0NzbzpmdW5j
dGlvbih0LGUsbil7dmFyIHI9bigiTXN1USIpLG89bigiRHM1UCIpLGk9bigiVldnRiIpKCJtZXRh
ZGF0YSIpLGE9aS5zdG9yZXx8KGkuc3RvcmU9bmV3KG4oIlpEWG0iKSkpLHU9ZnVuY3Rpb24odCxl
LG4pe3ZhciBvPWEuZ2V0KHQpO2lmKCFvKXtpZighbilyZXR1cm47YS5zZXQodCxvPW5ldyByKX12
YXIgaT1vLmdldChlKTtpZighaSl7aWYoIW4pcmV0dXJuO28uc2V0KGUsaT1uZXcgcil9cmV0dXJu
IGl9LGM9ZnVuY3Rpb24odCxlLG4pe3ZhciByPXUoZSxuLCExKTtyZXR1cm4gdm9pZCAwIT09ciYm
ci5oYXModCl9LHM9ZnVuY3Rpb24odCxlLG4pe3ZhciByPXUoZSxuLCExKTtyZXR1cm4gdm9pZCAw
PT09cj92b2lkIDA6ci5nZXQodCl9LGY9ZnVuY3Rpb24odCxlLG4scil7dShuLHIsITApLnNldCh0
LGUpfSxsPWZ1bmN0aW9uKHQsZSl7dmFyIG49dSh0LGUsITEpLHI9W107cmV0dXJuIG4mJm4uZm9y
RWFjaChmdW5jdGlvbih0LGUpe3IucHVzaChlKX0pLHJ9LHA9ZnVuY3Rpb24odCl7cmV0dXJuIHZv
aWQgMD09PXR8fCJzeW1ib2wiPT10eXBlb2YgdD90OlN0cmluZyh0KX0saD1mdW5jdGlvbih0KXtv
KG8uUywiUmVmbGVjdCIsdCl9O3QuZXhwb3J0cz17c3RvcmU6YSxtYXA6dSxoYXM6YyxnZXQ6cyxz
ZXQ6ZixrZXlzOmwsa2V5OnAsZXhwOmh9fSx4OXp2OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJZ
MWFBIiksbz1uKCJmVTI1IiksaT1uKCJQSHFoIiksYT1uKCJzNGowIiksdT1uKCJXQmNMIiksYz1u
KCJ4WmErIikscz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO2UuZj1uKCJiVXFPIik/
czpmdW5jdGlvbih0LGUpe2lmKHQ9aSh0KSxlPWEoZSwhMCksYyl0cnl7cmV0dXJuIHModCxlKX1j
YXRjaCh0KXt9aWYodSh0LGUpKXJldHVybiBvKCFyLmYuY2FsbCh0LGUpLHRbZV0pfX0sInhaYSsi
OmZ1bmN0aW9uKHQsZSxuKXt0LmV4cG9ydHM9IW4oImJVcU8iKSYmIW4oInpnSXQiKShmdW5jdGlv
bigpe3JldHVybiA3IT1PYmplY3QuZGVmaW5lUHJvcGVydHkobigiamh4ZiIpKCJkaXYiKSwiYSIs
e2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pLmF9KX0seUoyeDpmdW5jdGlvbih0LGUsbil7dmFy
IHI9bigid0NzbyIpLG89bigiRElWUCIpLGk9ci5rZXksYT1yLnNldDtyLmV4cCh7ZGVmaW5lTWV0
YWRhdGE6ZnVuY3Rpb24odCxlLG4scil7YSh0LGUsbyhuKSxpKHIpKX19KX0seU90RTpmdW5jdGlv
bih0LGUsbil7dmFyIHI9bigid0NzbyIpLG89bigiRElWUCIpLGk9ci5oYXMsYT1yLmtleTtyLmV4
cCh7aGFzT3duTWV0YWRhdGE6ZnVuY3Rpb24odCxlKXtyZXR1cm4gaSh0LG8oZSksYXJndW1lbnRz
Lmxlbmd0aDwzP3ZvaWQgMDphKGFyZ3VtZW50c1syXSkpfX0pfSx5WXZLOmZ1bmN0aW9uKHQsZSxu
KXt2YXIgcj1uKCJsRExrIikuZixvPW4oIldCY0wiKSxpPW4oImtrQ3ciKSgidG9TdHJpbmdUYWci
KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe3QmJiFvKHQ9bj90OnQucHJvdG90eXBlLGkpJiZy
KHQsaSx7Y29uZmlndXJhYmxlOiEwLHZhbHVlOmV9KX19LHlkRDU6ZnVuY3Rpb24odCxlKXt2YXIg
bj17fS50b1N0cmluZzt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIG4uY2FsbCh0KS5zbGlj
ZSg4LC0xKX19LHl4MVU6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkRzNVAiKSxvPW4oIng5enYi
KS5mLGk9bigiRElWUCIpO3Ioci5TLCJSZWZsZWN0Iix7ZGVsZXRlUHJvcGVydHk6ZnVuY3Rpb24o
dCxlKXt2YXIgbj1vKGkodCksZSk7cmV0dXJuIShuJiYhbi5jb25maWd1cmFibGUpJiZkZWxldGUg
dFtlXX19KX0selpIcTpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigid0NzbyIpLG89bigiRElWUCIp
LGk9ci5nZXQsYT1yLmtleTtyLmV4cCh7Z2V0T3duTWV0YWRhdGE6ZnVuY3Rpb24odCxlKXtyZXR1
cm4gaSh0LG8oZSksYXJndW1lbnRzLmxlbmd0aDwzP3ZvaWQgMDphKGFyZ3VtZW50c1syXSkpfX0p
fSx6Z0l0OmZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4hIXQo
KX1jYXRjaCh0KXtyZXR1cm4hMH19fX0sWzFdKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL2Rpc3Qvc3R5bGVzLmQ0MWQ4Y2Q5OGYw
MGIyMDRlOTgwLmJ1bmRsZS5jc3MgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL2Rpc3Qvc3R5bGVzLmQ0
MWQ4Y2Q5OGYwMGIyMDRlOTgwLmJ1bmRsZS5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTY5ZGUyOWJiMmQxZDY0
MzRiOGIyOWFlNzc1YWQ4YzJlNDhjNTM5MQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxh
ci9kaXN0L3ZlbmRvci5iNGJlODE4Y2I2ZDgwMjhmOTE5Mi5idW5kbGUuanMgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9hbmd1bGFyL2Rpc3QvdmVuZG9yLmI0YmU4MThjYjZkODAyOGY5MTkyLmJ1bmRsZS5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41YjFkZWU5Zjk3YTlhYWE4NjYwOTgzNDU4NzFjNDgxM2Q3NDQ2MDhlCi0tLSAvZGV2
L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9kaXN0L3ZlbmRvci5iNGJlODE4Y2I2ZDgw
MjhmOTE5Mi5idW5kbGUuanMKQEAgLTAsMCArMSw1OTIgQEAKK3dlYnBhY2tKc29ucChbMyw0XSx7
IiszZUwiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe3RyeXtyZXR1
cm4gaS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9Y2F0Y2godCl7cmV0dXJuIHMuZXJyb3JPYmplY3Qu
ZT10LHMuZXJyb3JPYmplY3R9fWZ1bmN0aW9uIG8odCl7cmV0dXJuIGk9dCxyfXZhciBpLHM9bigi
V2hWYyIpO2UudHJ5Q2F0Y2g9b30sIitheXciOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gcigpe3JldHVybiBuZXcgcy5TdWJqZWN0fWZ1bmN0aW9uIG8oKXtyZXR1cm4gaS5t
dWx0aWNhc3QuY2FsbCh0aGlzLHIpLnJlZkNvdW50KCl9dmFyIGk9bigiZW1PdyIpLHM9bigiRUVy
NCIpO2Uuc2hhcmU9b30sIjFLVDAiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9
bigia2tiMCIpO2UubWVyZ2U9ci5tZXJnZVN0YXRpY30sIjFyOCsiOmZ1bmN0aW9uKHQsZSxuKXsi
dXNlIHN0cmljdCI7ZS5pc0FycmF5TGlrZT1mdW5jdGlvbih0KXtyZXR1cm4gdCYmIm51bWJlciI9
PXR5cGVvZiB0Lmxlbmd0aH19LCIySmU4IjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIHIodCxlKXtyZXR1cm4gdCYmZS5zdGFydHNXaXRoKHQpP2Uuc3Vic3RyaW5nKHQubGVu
Z3RoKTplfWZ1bmN0aW9uIG8odCl7cmV0dXJuIHQucmVwbGFjZSgvXC9pbmRleC5odG1sJC8sIiIp
fWZ1bmN0aW9uIGkodCxlLG4pe3ZhciByPSI9Iit0O2lmKGUuaW5kZXhPZihyKT4tMSlyZXR1cm4g
cjtpZihyPW4uZ2V0UGx1cmFsQ2F0ZWdvcnkodCksZS5pbmRleE9mKHIpPi0xKXJldHVybiByO2lm
KGUuaW5kZXhPZigib3RoZXIiKT4tMSlyZXR1cm4ib3RoZXIiO3Rocm93IG5ldyBFcnJvcignTm8g
cGx1cmFsIG1lc3NhZ2UgZm91bmQgZm9yIHZhbHVlICInK3QrJyInKX1mdW5jdGlvbiBzKHQsZSl7
InN0cmluZyI9PXR5cGVvZiBlJiYoZT1wYXJzZUludChlLDEwKSk7dmFyIG49ZSxyPW4udG9TdHJp
bmcoKS5yZXBsYWNlKC9eW14uXSpcLj8vLCIiKSxvPU1hdGguZmxvb3IoTWF0aC5hYnMobikpLGk9
ci5sZW5ndGgscz1wYXJzZUludChyLDEwKSxhPXBhcnNlSW50KG4udG9TdHJpbmcoKS5yZXBsYWNl
KC9eW14uXSpcLj98MCskL2csIiIpLDEwKXx8MDtzd2l0Y2godC5zcGxpdCgiLSIpWzBdLnRvTG93
ZXJDYXNlKCkpe2Nhc2UiYWYiOmNhc2UiYXNhIjpjYXNlImF6IjpjYXNlImJlbSI6Y2FzZSJiZXoi
OmNhc2UiYmciOmNhc2UiYnJ4IjpjYXNlImNlIjpjYXNlImNnZyI6Y2FzZSJjaHIiOmNhc2UiY2ti
IjpjYXNlImVlIjpjYXNlImVsIjpjYXNlImVvIjpjYXNlImVzIjpjYXNlImV1IjpjYXNlImZvIjpj
YXNlImZ1ciI6Y2FzZSJnc3ciOmNhc2UiaGEiOmNhc2UiaGF3IjpjYXNlImh1IjpjYXNlImpnbyI6
Y2FzZSJqbWMiOmNhc2Uia2EiOmNhc2Uia2siOmNhc2Uia2tqIjpjYXNlImtsIjpjYXNlImtzIjpj
YXNlImtzYiI6Y2FzZSJreSI6Y2FzZSJsYiI6Y2FzZSJsZyI6Y2FzZSJtYXMiOmNhc2UibWdvIjpj
YXNlIm1sIjpjYXNlIm1uIjpjYXNlIm5iIjpjYXNlIm5kIjpjYXNlIm5lIjpjYXNlIm5uIjpjYXNl
Im5uaCI6Y2FzZSJueW4iOmNhc2Uib20iOmNhc2Uib3IiOmNhc2Uib3MiOmNhc2UicHMiOmNhc2Ui
cm0iOmNhc2Uicm9mIjpjYXNlInJ3ayI6Y2FzZSJzYXEiOmNhc2Uic2VoIjpjYXNlInNuIjpjYXNl
InNvIjpjYXNlInNxIjpjYXNlInRhIjpjYXNlInRlIjpjYXNlInRlbyI6Y2FzZSJ0ayI6Y2FzZSJ0
ciI6Y2FzZSJ1ZyI6Y2FzZSJ1eiI6Y2FzZSJ2byI6Y2FzZSJ2dW4iOmNhc2Uid2FlIjpjYXNlInhv
ZyI6cmV0dXJuIDE9PT1uP0guT25lOkguT3RoZXI7Y2FzZSJhZ3EiOmNhc2UiYmFzIjpjYXNlImN1
IjpjYXNlImRhdiI6Y2FzZSJkamUiOmNhc2UiZHVhIjpjYXNlImR5byI6Y2FzZSJlYnUiOmNhc2Ui
ZXdvIjpjYXNlImd1eiI6Y2FzZSJrYW0iOmNhc2Uia2hxIjpjYXNlImtpIjpjYXNlImtsbiI6Y2Fz
ZSJrb2siOmNhc2Uia3NmIjpjYXNlImxyYyI6Y2FzZSJsdSI6Y2FzZSJsdW8iOmNhc2UibHV5Ijpj
YXNlIm1lciI6Y2FzZSJtZmUiOmNhc2UibWdoIjpjYXNlIm11YSI6Y2FzZSJtem4iOmNhc2Uibm1n
IjpjYXNlIm51cyI6Y2FzZSJxdSI6Y2FzZSJybiI6Y2FzZSJydyI6Y2FzZSJzYnAiOmNhc2UidHdx
IjpjYXNlInZhaSI6Y2FzZSJ5YXYiOmNhc2UieXVlIjpjYXNlInpnaCI6Y2FzZSJhayI6Y2FzZSJs
biI6Y2FzZSJtZyI6Y2FzZSJwYSI6Y2FzZSJ0aSI6cmV0dXJuIG49PT1NYXRoLmZsb29yKG4pJiZu
Pj0wJiZuPD0xP0guT25lOkguT3RoZXI7Y2FzZSJhbSI6Y2FzZSJhcyI6Y2FzZSJibiI6Y2FzZSJm
YSI6Y2FzZSJndSI6Y2FzZSJoaSI6Y2FzZSJrbiI6Y2FzZSJtciI6Y2FzZSJ6dSI6cmV0dXJuIDA9
PT1vfHwxPT09bj9ILk9uZTpILk90aGVyO2Nhc2UiYXIiOnJldHVybiAwPT09bj9ILlplcm86MT09
PW4/SC5PbmU6Mj09PW4/SC5Ud286biUxMDA9PT1NYXRoLmZsb29yKG4lMTAwKSYmbiUxMDA+PTMm
Jm4lMTAwPD0xMD9ILkZldzpuJTEwMD09PU1hdGguZmxvb3IobiUxMDApJiZuJTEwMD49MTEmJm4l
MTAwPD05OT9ILk1hbnk6SC5PdGhlcjtjYXNlImFzdCI6Y2FzZSJjYSI6Y2FzZSJkZSI6Y2FzZSJl
biI6Y2FzZSJldCI6Y2FzZSJmaSI6Y2FzZSJmeSI6Y2FzZSJnbCI6Y2FzZSJpdCI6Y2FzZSJubCI6
Y2FzZSJzdiI6Y2FzZSJzdyI6Y2FzZSJ1ciI6Y2FzZSJ5aSI6cmV0dXJuIDE9PT1vJiYwPT09aT9I
Lk9uZTpILk90aGVyO2Nhc2UiYmUiOnJldHVybiBuJTEwPT0xJiZuJTEwMCE9MTE/SC5PbmU6biUx
MD09PU1hdGguZmxvb3IobiUxMCkmJm4lMTA+PTImJm4lMTA8PTQmJiEobiUxMDA+PTEyJiZuJTEw
MDw9MTQpP0guRmV3Om4lMTA9PTB8fG4lMTA9PT1NYXRoLmZsb29yKG4lMTApJiZuJTEwPj01JiZu
JTEwPD05fHxuJTEwMD09PU1hdGguZmxvb3IobiUxMDApJiZuJTEwMD49MTEmJm4lMTAwPD0xND9I
Lk1hbnk6SC5PdGhlcjtjYXNlImJyIjpyZXR1cm4gbiUxMD09MSYmbiUxMDAhPTExJiZuJTEwMCE9
NzEmJm4lMTAwIT05MT9ILk9uZTpuJTEwPT0yJiZuJTEwMCE9MTImJm4lMTAwIT03MiYmbiUxMDAh
PTkyP0guVHdvOm4lMTA9PT1NYXRoLmZsb29yKG4lMTApJiYobiUxMD49MyYmbiUxMDw9NHx8biUx
MD09OSkmJiEobiUxMDA+PTEwJiZuJTEwMDw9MTl8fG4lMTAwPj03MCYmbiUxMDA8PTc5fHxuJTEw
MD49OTAmJm4lMTAwPD05OSk/SC5GZXc6MCE9PW4mJm4lMWU2PT0wP0guTWFueTpILk90aGVyO2Nh
c2UiYnMiOmNhc2UiaHIiOmNhc2Uic3IiOnJldHVybiAwPT09aSYmbyUxMD09MSYmbyUxMDAhPTEx
fHxzJTEwPT0xJiZzJTEwMCE9MTE/SC5PbmU6MD09PWkmJm8lMTA9PT1NYXRoLmZsb29yKG8lMTAp
JiZvJTEwPj0yJiZvJTEwPD00JiYhKG8lMTAwPj0xMiYmbyUxMDA8PTE0KXx8cyUxMD09PU1hdGgu
Zmxvb3IocyUxMCkmJnMlMTA+PTImJnMlMTA8PTQmJiEocyUxMDA+PTEyJiZzJTEwMDw9MTQpP0gu
RmV3OkguT3RoZXI7Y2FzZSJjcyI6Y2FzZSJzayI6cmV0dXJuIDE9PT1vJiYwPT09aT9ILk9uZTpv
PT09TWF0aC5mbG9vcihvKSYmbz49MiYmbzw9NCYmMD09PWk/SC5GZXc6MCE9PWk/SC5NYW55Okgu
T3RoZXI7Y2FzZSJjeSI6cmV0dXJuIDA9PT1uP0guWmVybzoxPT09bj9ILk9uZToyPT09bj9ILlR3
bzozPT09bj9ILkZldzo2PT09bj9ILk1hbnk6SC5PdGhlcjtjYXNlImRhIjpyZXR1cm4gMT09PW58
fDAhPT1hJiYoMD09PW98fDE9PT1vKT9ILk9uZTpILk90aGVyO2Nhc2UiZHNiIjpjYXNlImhzYiI6
cmV0dXJuIDA9PT1pJiZvJTEwMD09MXx8cyUxMDA9PTE/SC5PbmU6MD09PWkmJm8lMTAwPT0yfHxz
JTEwMD09Mj9ILlR3bzowPT09aSYmbyUxMDA9PT1NYXRoLmZsb29yKG8lMTAwKSYmbyUxMDA+PTMm
Jm8lMTAwPD00fHxzJTEwMD09PU1hdGguZmxvb3IocyUxMDApJiZzJTEwMD49MyYmcyUxMDA8PTQ/
SC5GZXc6SC5PdGhlcjtjYXNlImZmIjpjYXNlImZyIjpjYXNlImh5IjpjYXNlImthYiI6cmV0dXJu
IDA9PT1vfHwxPT09bz9ILk9uZTpILk90aGVyO2Nhc2UiZmlsIjpyZXR1cm4gMD09PWkmJigxPT09
b3x8Mj09PW98fDM9PT1vKXx8MD09PWkmJm8lMTAhPTQmJm8lMTAhPTYmJm8lMTAhPTl8fDAhPT1p
JiZzJTEwIT00JiZzJTEwIT02JiZzJTEwIT05P0guT25lOkguT3RoZXI7Y2FzZSJnYSI6cmV0dXJu
IDE9PT1uP0guT25lOjI9PT1uP0guVHdvOm49PT1NYXRoLmZsb29yKG4pJiZuPj0zJiZuPD02P0gu
RmV3Om49PT1NYXRoLmZsb29yKG4pJiZuPj03JiZuPD0xMD9ILk1hbnk6SC5PdGhlcjtjYXNlImdk
IjpyZXR1cm4gMT09PW58fDExPT09bj9ILk9uZToyPT09bnx8MTI9PT1uP0guVHdvOm49PT1NYXRo
LmZsb29yKG4pJiYobj49MyYmbjw9MTB8fG4+PTEzJiZuPD0xOSk/SC5GZXc6SC5PdGhlcjtjYXNl
Imd2IjpyZXR1cm4gMD09PWkmJm8lMTA9PTE/SC5PbmU6MD09PWkmJm8lMTA9PTI/SC5Ud286MCE9
PWl8fG8lMTAwIT0wJiZvJTEwMCE9MjAmJm8lMTAwIT00MCYmbyUxMDAhPTYwJiZvJTEwMCE9ODA/
MCE9PWk/SC5NYW55OkguT3RoZXI6SC5GZXc7Y2FzZSJoZSI6cmV0dXJuIDE9PT1vJiYwPT09aT9I
Lk9uZToyPT09byYmMD09PWk/SC5Ud286MCE9PWl8fG4+PTAmJm48PTEwfHxuJTEwIT0wP0guT3Ro
ZXI6SC5NYW55O2Nhc2UiaXMiOnJldHVybiAwPT09YSYmbyUxMD09MSYmbyUxMDAhPTExfHwwIT09
YT9ILk9uZTpILk90aGVyO2Nhc2Uia3NoIjpyZXR1cm4gMD09PW4/SC5aZXJvOjE9PT1uP0guT25l
OkguT3RoZXI7Y2FzZSJrdyI6Y2FzZSJuYXEiOmNhc2Uic2UiOmNhc2Uic21uIjpyZXR1cm4gMT09
PW4/SC5PbmU6Mj09PW4/SC5Ud286SC5PdGhlcjtjYXNlImxhZyI6cmV0dXJuIDA9PT1uP0guWmVy
bzowIT09byYmMSE9PW98fDA9PT1uP0guT3RoZXI6SC5PbmU7Y2FzZSJsdCI6cmV0dXJuIG4lMTAh
PTF8fG4lMTAwPj0xMSYmbiUxMDA8PTE5P24lMTA9PT1NYXRoLmZsb29yKG4lMTApJiZuJTEwPj0y
JiZuJTEwPD05JiYhKG4lMTAwPj0xMSYmbiUxMDA8PTE5KT9ILkZldzowIT09cz9ILk1hbnk6SC5P
dGhlcjpILk9uZTtjYXNlImx2IjpjYXNlInByZyI6cmV0dXJuIG4lMTA9PTB8fG4lMTAwPT09TWF0
aC5mbG9vcihuJTEwMCkmJm4lMTAwPj0xMSYmbiUxMDA8PTE5fHwyPT09aSYmcyUxMDA9PT1NYXRo
LmZsb29yKHMlMTAwKSYmcyUxMDA+PTExJiZzJTEwMDw9MTk/SC5aZXJvOm4lMTA9PTEmJm4lMTAw
IT0xMXx8Mj09PWkmJnMlMTA9PTEmJnMlMTAwIT0xMXx8MiE9PWkmJnMlMTA9PTE/SC5PbmU6SC5P
dGhlcjtjYXNlIm1rIjpyZXR1cm4gMD09PWkmJm8lMTA9PTF8fHMlMTA9PTE/SC5PbmU6SC5PdGhl
cjtjYXNlIm10IjpyZXR1cm4gMT09PW4/SC5PbmU6MD09PW58fG4lMTAwPT09TWF0aC5mbG9vcihu
JTEwMCkmJm4lMTAwPj0yJiZuJTEwMDw9MTA/SC5GZXc6biUxMDA9PT1NYXRoLmZsb29yKG4lMTAw
KSYmbiUxMDA+PTExJiZuJTEwMDw9MTk/SC5NYW55OkguT3RoZXI7Y2FzZSJwbCI6cmV0dXJuIDE9
PT1vJiYwPT09aT9ILk9uZTowPT09aSYmbyUxMD09PU1hdGguZmxvb3IobyUxMCkmJm8lMTA+PTIm
Jm8lMTA8PTQmJiEobyUxMDA+PTEyJiZvJTEwMDw9MTQpP0guRmV3OjA9PT1pJiYxIT09byYmbyUx
MD09PU1hdGguZmxvb3IobyUxMCkmJm8lMTA+PTAmJm8lMTA8PTF8fDA9PT1pJiZvJTEwPT09TWF0
aC5mbG9vcihvJTEwKSYmbyUxMD49NSYmbyUxMDw9OXx8MD09PWkmJm8lMTAwPT09TWF0aC5mbG9v
cihvJTEwMCkmJm8lMTAwPj0xMiYmbyUxMDA8PTE0P0guTWFueTpILk90aGVyO2Nhc2UicHQiOnJl
dHVybiBuPT09TWF0aC5mbG9vcihuKSYmbj49MCYmbjw9MiYmMiE9PW4/SC5PbmU6SC5PdGhlcjtj
YXNlInJvIjpyZXR1cm4gMT09PW8mJjA9PT1pP0guT25lOjAhPT1pfHwwPT09bnx8MSE9PW4mJm4l
MTAwPT09TWF0aC5mbG9vcihuJTEwMCkmJm4lMTAwPj0xJiZuJTEwMDw9MTk/SC5GZXc6SC5PdGhl
cjtjYXNlInJ1IjpjYXNlInVrIjpyZXR1cm4gMD09PWkmJm8lMTA9PTEmJm8lMTAwIT0xMT9ILk9u
ZTowPT09aSYmbyUxMD09PU1hdGguZmxvb3IobyUxMCkmJm8lMTA+PTImJm8lMTA8PTQmJiEobyUx
MDA+PTEyJiZvJTEwMDw9MTQpP0guRmV3OjA9PT1pJiZvJTEwPT0wfHwwPT09aSYmbyUxMD09PU1h
dGguZmxvb3IobyUxMCkmJm8lMTA+PTUmJm8lMTA8PTl8fDA9PT1pJiZvJTEwMD09PU1hdGguZmxv
b3IobyUxMDApJiZvJTEwMD49MTEmJm8lMTAwPD0xND9ILk1hbnk6SC5PdGhlcjtjYXNlInNoaSI6
cmV0dXJuIDA9PT1vfHwxPT09bj9ILk9uZTpuPT09TWF0aC5mbG9vcihuKSYmbj49MiYmbjw9MTA/
SC5GZXc6SC5PdGhlcjtjYXNlInNpIjpyZXR1cm4gMD09PW58fDE9PT1ufHwwPT09byYmMT09PXM/
SC5PbmU6SC5PdGhlcjtjYXNlInNsIjpyZXR1cm4gMD09PWkmJm8lMTAwPT0xP0guT25lOjA9PT1p
JiZvJTEwMD09Mj9ILlR3bzowPT09aSYmbyUxMDA9PT1NYXRoLmZsb29yKG8lMTAwKSYmbyUxMDA+
PTMmJm8lMTAwPD00fHwwIT09aT9ILkZldzpILk90aGVyO2Nhc2UidHptIjpyZXR1cm4gbj09PU1h
dGguZmxvb3IobikmJm4+PTAmJm48PTF8fG49PT1NYXRoLmZsb29yKG4pJiZuPj0xMSYmbjw9OTk/
SC5PbmU6SC5PdGhlcjtkZWZhdWx0OnJldHVybiBILk90aGVyfX1mdW5jdGlvbiBhKHQpe3JldHVy
biB0Lm5hbWV8fHR5cGVvZiB0fS8qKgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUg
SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8K
K2Z1bmN0aW9uIHUodCxlKXtyZXR1cm4gRXJyb3IoIkludmFsaWRQaXBlQXJndW1lbnQ6ICciK2Ur
IicgZm9yIHBpcGUgJyIrbi5pKFQuVCkodCkrIiciKX1mdW5jdGlvbiBjKHQpe3JldHVybiB0P3Rb
MF0udG9VcHBlckNhc2UoKSt0LnN1YnN0cigxKS50b0xvd2VyQ2FzZSgpOnR9ZnVuY3Rpb24gbCh0
KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXt2YXIgcj10KGUsbik7cmV0dXJuIDE9PXIubGVuZ3RoPyIw
IityOnJ9fWZ1bmN0aW9uIHAodCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7cmV0dXJuIHQoZSxuKS5z
cGxpdCgiICIpWzFdfX1mdW5jdGlvbiBmKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3JldHVybiB0
KGUsbikuc3BsaXQoIiAiKVswXX19ZnVuY3Rpb24gaCh0LGUsbil7cmV0dXJuIG5ldyBJbnRsLkRh
dGVUaW1lRm9ybWF0KGUsbikuZm9ybWF0KHQpLnJlcGxhY2UoL1tcdTIwMGVcdTIwMGZdL2csIiIp
fWZ1bmN0aW9uIGQodCl7dmFyIGU9e2hvdXI6IjItZGlnaXQiLGhvdXIxMjohMSx0aW1lWm9uZU5h
bWU6dH07cmV0dXJuIGZ1bmN0aW9uKHQsbil7dmFyIHI9aCh0LG4sZSk7cmV0dXJuIHI/ci5zdWJz
dHJpbmcoMyk6IiJ9fWZ1bmN0aW9uIHkodCxlKXtyZXR1cm4gdC5ob3VyMTI9ZSx0fWZ1bmN0aW9u
IG0odCxlKXt2YXIgbj17fTtyZXR1cm4gblt0XT0yPT09ZT8iMi1kaWdpdCI6Im51bWVyaWMiLG59
ZnVuY3Rpb24gZyh0LGUpe3ZhciBuPXt9O3JldHVybiBuW3RdPWU8ND9lPjE/InNob3J0IjoibmFy
cm93IjoibG9uZyIsbn1mdW5jdGlvbiB2KHQpe3JldHVybiBPYmplY3QuYXNzaWduLmFwcGx5KE9i
amVjdCxbe31dLmNvbmNhdCh0KSl9ZnVuY3Rpb24gXyh0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXty
ZXR1cm4gaChlLG4sdCl9fWZ1bmN0aW9uIGIodCxlLG4pe3ZhciByPWh0W3RdO2lmKHIpcmV0dXJu
IHIoZSxuKTt2YXIgbz10LGk9eXQuZ2V0KG8pO2lmKCFpKXtpPVtdO3ZhciBzPXZvaWQgMDtmb3Io
ZnQuZXhlYyh0KTt0OylzPWZ0LmV4ZWModCkscz8oaT1pLmNvbmNhdChzLnNsaWNlKDEpKSx0PWku
cG9wKCkpOihpLnB1c2godCksdD1udWxsKTt5dC5zZXQobyxpKX1yZXR1cm4gaS5yZWR1Y2UoZnVu
Y3Rpb24odCxyKXt2YXIgbz1kdFtyXTtyZXR1cm4gdCsobz9vKGUsbik6dyhyKSl9LCIiKX1mdW5j
dGlvbiB3KHQpe3JldHVybiInJyI9PT10PyInIjp0LnJlcGxhY2UoLyheJ3wnJCkvZywiIikucmVw
bGFjZSgvJycvZywiJyIpfWZ1bmN0aW9uIEModCxlLG4scixvLGkscyl7aWYodm9pZCAwPT09aSYm
KGk9bnVsbCksdm9pZCAwPT09cyYmKHM9ITEpLG51bGw9PW4pcmV0dXJuIG51bGw7aWYoIm51bWJl
ciIhPXR5cGVvZihuPSJzdHJpbmciPT10eXBlb2YgbiYmTyhuKT8rbjpuKSl0aHJvdyB1KHQsbik7
dmFyIGEsYyxsO2lmKHIhPT1sdC5DdXJyZW5jeSYmKGE9MSxjPTAsbD0zKSxvKXt2YXIgcD1vLm1h
dGNoKGd0KTtpZihudWxsPT09cCl0aHJvdyBuZXcgRXJyb3IobysiIGlzIG5vdCBhIHZhbGlkIGRp
Z2l0IGluZm8gZm9yIG51bWJlciBwaXBlcyIpO251bGwhPXBbMV0mJihhPUUocFsxXSkpLG51bGwh
PXBbM10mJihjPUUocFszXSkpLG51bGwhPXBbNV0mJihsPUUocFs1XSkpfXJldHVybiBwdC5mb3Jt
YXQobixlLHIse21pbmltdW1JbnRlZ2VyRGlnaXRzOmEsbWluaW11bUZyYWN0aW9uRGlnaXRzOmMs
bWF4aW11bUZyYWN0aW9uRGlnaXRzOmwsY3VycmVuY3k6aSxjdXJyZW5jeUFzU3ltYm9sOnN9KX1m
dW5jdGlvbiBFKHQpe3ZhciBlPXBhcnNlSW50KHQpO2lmKGlzTmFOKGUpKXRocm93IG5ldyBFcnJv
cigiSW52YWxpZCBpbnRlZ2VyIGxpdGVyYWwgd2hlbiBwYXJzaW5nICIrdCk7cmV0dXJuIGV9ZnVu
Y3Rpb24gTyh0KXtyZXR1cm4haXNOYU4odC1wYXJzZUZsb2F0KHQpKX1mdW5jdGlvbiB4KHQpe3Jl
dHVybiBudWxsPT10fHwiIj09PXR9ZnVuY3Rpb24gUyh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIERh
dGUmJiFpc05hTih0LnZhbHVlT2YoKSl9ZnVuY3Rpb24gUCh0KXt2YXIgZT1uZXcgRGF0ZSgwKSxu
PTAscj0wLG89dFs4XT9lLnNldFVUQ0Z1bGxZZWFyOmUuc2V0RnVsbFllYXIsaT10WzhdP2Uuc2V0
VVRDSG91cnM6ZS5zZXRIb3Vyczt0WzldJiYobj1BKHRbOV0rdFsxMF0pLHI9QSh0WzldK3RbMTFd
KSksby5jYWxsKGUsQSh0WzFdKSxBKHRbMl0pLTEsQSh0WzNdKSk7dmFyIHM9QSh0WzRdfHwiMCIp
LW4sYT1BKHRbNV18fCIwIiktcix1PUEodFs2XXx8IjAiKSxjPU1hdGgucm91bmQoMWUzKnBhcnNl
RmxvYXQoIjAuIisodFs3XXx8MCkpKTtyZXR1cm4gaS5jYWxsKGUscyxhLHUsYyksZX1mdW5jdGlv
biBBKHQpe3JldHVybiBwYXJzZUludCh0LDEwKX12YXIgVD1uKCIzajNLIik7bi5kKGUsImEiLGZ1
bmN0aW9uKCl7cmV0dXJuIEZ9KSxuLmQoZSwiYyIsZnVuY3Rpb24oKXtyZXR1cm4gSX0pLG4uZChl
LCJiIixmdW5jdGlvbigpe3JldHVybiBUdH0pLG4uZChlLCJmIixmdW5jdGlvbigpe3JldHVybiBH
fSksbi5kKGUsImciLGZ1bmN0aW9uKCl7cmV0dXJuIHF9KSxuLmQoZSwiZSIsZnVuY3Rpb24oKXty
ZXR1cm4ga3R9KSxuLmQoZSwiZCIsZnVuY3Rpb24oKXtyZXR1cm4gVn0pO3ZhciBrPXRoaXMmJnRo
aXMuX19leHRlbmRzfHxmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4oKXt0aGlzLmNvbnN0cnVjdG9y
PXR9Zm9yKHZhciByIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShyKSYmKHRbcl09ZVtyXSk7dC5wcm90
b3R5cGU9bnVsbD09PWU/T2JqZWN0LmNyZWF0ZShlKToobi5wcm90b3R5cGU9ZS5wcm90b3R5cGUs
bmV3IG4pfSxWPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUuZ2V0
QmFzZUhyZWZGcm9tRE9NPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5vblBvcFN0YXRlPWZ1bmN0
aW9uKHQpe30sdC5wcm90b3R5cGUub25IYXNoQ2hhbmdlPWZ1bmN0aW9uKHQpe30sT2JqZWN0LmRl
ZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJwYXRobmFtZSIse2dldDpmdW5jdGlvbigpe3JldHVy
biBudWxsfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eSh0LnByb3RvdHlwZSwic2VhcmNoIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LGVu
dW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJv
dG90eXBlLCJoYXNoIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LGVudW1lcmFibGU6ITAs
Y29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUucmVwbGFjZVN0YXRlPWZ1bmN0aW9uKHQsZSxu
KXt9LHQucHJvdG90eXBlLnB1c2hTdGF0ZT1mdW5jdGlvbih0LGUsbil7fSx0LnByb3RvdHlwZS5m
b3J3YXJkPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5iYWNrPWZ1bmN0aW9uKCl7fSx0fSgpLE09
KG5ldyBULkQoIkxvY2F0aW9uIEluaXRpYWxpemVkIiksZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7
fXJldHVybiB0LnByb3RvdHlwZS5wYXRoPWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUucHJlcGFy
ZUV4dGVybmFsVXJsPWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUucHVzaFN0YXRlPWZ1bmN0aW9u
KHQsZSxuLHIpe30sdC5wcm90b3R5cGUucmVwbGFjZVN0YXRlPWZ1bmN0aW9uKHQsZSxuLHIpe30s
dC5wcm90b3R5cGUuZm9yd2FyZD1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuYmFjaz1mdW5jdGlv
bigpe30sdC5wcm90b3R5cGUub25Qb3BTdGF0ZT1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmdl
dEJhc2VIcmVmPWZ1bmN0aW9uKCl7fSx0fSgpKSxOPW5ldyBULkQoImFwcEJhc2VIcmVmIiksaj1m
dW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7dmFyIG49dGhpczt0aGlzLl9zdWJqZWN0PW5ldyBULlIs
dGhpcy5fcGxhdGZvcm1TdHJhdGVneT1lO3ZhciByPXRoaXMuX3BsYXRmb3JtU3RyYXRlZ3kuZ2V0
QmFzZUhyZWYoKTt0aGlzLl9iYXNlSHJlZj10LnN0cmlwVHJhaWxpbmdTbGFzaChvKHIpKSx0aGlz
Ll9wbGF0Zm9ybVN0cmF0ZWd5Lm9uUG9wU3RhdGUoZnVuY3Rpb24odCl7bi5fc3ViamVjdC5lbWl0
KHt1cmw6bi5wYXRoKCEwKSxwb3A6ITAsdHlwZTp0LnR5cGV9KX0pfXJldHVybiB0LnByb3RvdHlw
ZS5wYXRoPWZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDA9PT10JiYodD0hMSksdGhpcy5ub3JtYWxp
emUodGhpcy5fcGxhdGZvcm1TdHJhdGVneS5wYXRoKHQpKX0sdC5wcm90b3R5cGUuaXNDdXJyZW50
UGF0aEVxdWFsVG89ZnVuY3Rpb24oZSxuKXtyZXR1cm4gdm9pZCAwPT09biYmKG49IiIpLHRoaXMu
cGF0aCgpPT10aGlzLm5vcm1hbGl6ZShlK3Qubm9ybWFsaXplUXVlcnlQYXJhbXMobikpfSx0LnBy
b3RvdHlwZS5ub3JtYWxpemU9ZnVuY3Rpb24oZSl7cmV0dXJuIHQuc3RyaXBUcmFpbGluZ1NsYXNo
KHIodGhpcy5fYmFzZUhyZWYsbyhlKSkpfSx0LnByb3RvdHlwZS5wcmVwYXJlRXh0ZXJuYWxVcmw9
ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiIvIiE9PXRbMF0mJih0PSIvIit0KSx0aGlzLl9wbGF0Zm9y
bVN0cmF0ZWd5LnByZXBhcmVFeHRlcm5hbFVybCh0KX0sdC5wcm90b3R5cGUuZ289ZnVuY3Rpb24o
dCxlKXt2b2lkIDA9PT1lJiYoZT0iIiksdGhpcy5fcGxhdGZvcm1TdHJhdGVneS5wdXNoU3RhdGUo
bnVsbCwiIix0LGUpfSx0LnByb3RvdHlwZS5yZXBsYWNlU3RhdGU9ZnVuY3Rpb24odCxlKXt2b2lk
IDA9PT1lJiYoZT0iIiksdGhpcy5fcGxhdGZvcm1TdHJhdGVneS5yZXBsYWNlU3RhdGUobnVsbCwi
Iix0LGUpfSx0LnByb3RvdHlwZS5mb3J3YXJkPWZ1bmN0aW9uKCl7dGhpcy5fcGxhdGZvcm1TdHJh
dGVneS5mb3J3YXJkKCl9LHQucHJvdG90eXBlLmJhY2s9ZnVuY3Rpb24oKXt0aGlzLl9wbGF0Zm9y
bVN0cmF0ZWd5LmJhY2soKX0sdC5wcm90b3R5cGUuc3Vic2NyaWJlPWZ1bmN0aW9uKHQsZSxuKXty
ZXR1cm4gdm9pZCAwPT09ZSYmKGU9bnVsbCksdm9pZCAwPT09biYmKG49bnVsbCksdGhpcy5fc3Vi
amVjdC5zdWJzY3JpYmUoe25leHQ6dCxlcnJvcjplLGNvbXBsZXRlOm59KX0sdC5ub3JtYWxpemVR
dWVyeVBhcmFtcz1mdW5jdGlvbih0KXtyZXR1cm4gdCYmIj8iIT09dFswXT8iPyIrdDp0fSx0Lmpv
aW5XaXRoU2xhc2g9ZnVuY3Rpb24odCxlKXtpZigwPT10Lmxlbmd0aClyZXR1cm4gZTtpZigwPT1l
Lmxlbmd0aClyZXR1cm4gdDt2YXIgbj0wO3JldHVybiB0LmVuZHNXaXRoKCIvIikmJm4rKyxlLnN0
YXJ0c1dpdGgoIi8iKSYmbisrLDI9PW4/dCtlLnN1YnN0cmluZygxKToxPT1uP3QrZTp0KyIvIitl
fSx0LnN0cmlwVHJhaWxpbmdTbGFzaD1mdW5jdGlvbih0KXtyZXR1cm4gdC5yZXBsYWNlKC9cLyQv
LCIiKX0sdH0oKTtqLmRlY29yYXRvcnM9W3t0eXBlOlQuen1dLGouY3RvclBhcmFtZXRlcnM9ZnVu
Y3Rpb24oKXtyZXR1cm5be3R5cGU6TX1dfTsvKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQg
R29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
ICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5z
ZQorICovCit2YXIgUj1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbil7dmFyIHI9dC5jYWxsKHRo
aXMpfHx0aGlzO3JldHVybiByLl9wbGF0Zm9ybUxvY2F0aW9uPWUsci5fYmFzZUhyZWY9IiIsbnVs
bCE9biYmKHIuX2Jhc2VIcmVmPW4pLHJ9cmV0dXJuIGsoZSx0KSxlLnByb3RvdHlwZS5vblBvcFN0
YXRlPWZ1bmN0aW9uKHQpe3RoaXMuX3BsYXRmb3JtTG9jYXRpb24ub25Qb3BTdGF0ZSh0KSx0aGlz
Ll9wbGF0Zm9ybUxvY2F0aW9uLm9uSGFzaENoYW5nZSh0KX0sZS5wcm90b3R5cGUuZ2V0QmFzZUhy
ZWY9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYmFzZUhyZWZ9LGUucHJvdG90eXBlLnBhdGg9ZnVu
Y3Rpb24odCl7dm9pZCAwPT09dCYmKHQ9ITEpO3ZhciBlPXRoaXMuX3BsYXRmb3JtTG9jYXRpb24u
aGFzaDtyZXR1cm4gbnVsbD09ZSYmKGU9IiMiKSxlLmxlbmd0aD4wP2Uuc3Vic3RyaW5nKDEpOmV9
LGUucHJvdG90eXBlLnByZXBhcmVFeHRlcm5hbFVybD1mdW5jdGlvbih0KXt2YXIgZT1qLmpvaW5X
aXRoU2xhc2godGhpcy5fYmFzZUhyZWYsdCk7cmV0dXJuIGUubGVuZ3RoPjA/IiMiK2U6ZX0sZS5w
cm90b3R5cGUucHVzaFN0YXRlPWZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBvPXRoaXMucHJlcGFyZUV4
dGVybmFsVXJsKG4rai5ub3JtYWxpemVRdWVyeVBhcmFtcyhyKSk7MD09by5sZW5ndGgmJihvPXRo
aXMuX3BsYXRmb3JtTG9jYXRpb24ucGF0aG5hbWUpLHRoaXMuX3BsYXRmb3JtTG9jYXRpb24ucHVz
aFN0YXRlKHQsZSxvKX0sZS5wcm90b3R5cGUucmVwbGFjZVN0YXRlPWZ1bmN0aW9uKHQsZSxuLHIp
e3ZhciBvPXRoaXMucHJlcGFyZUV4dGVybmFsVXJsKG4rai5ub3JtYWxpemVRdWVyeVBhcmFtcyhy
KSk7MD09by5sZW5ndGgmJihvPXRoaXMuX3BsYXRmb3JtTG9jYXRpb24ucGF0aG5hbWUpLHRoaXMu
X3BsYXRmb3JtTG9jYXRpb24ucmVwbGFjZVN0YXRlKHQsZSxvKX0sZS5wcm90b3R5cGUuZm9yd2Fy
ZD1mdW5jdGlvbigpe3RoaXMuX3BsYXRmb3JtTG9jYXRpb24uZm9yd2FyZCgpfSxlLnByb3RvdHlw
ZS5iYWNrPWZ1bmN0aW9uKCl7dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5iYWNrKCl9LGV9KE0pO1Iu
ZGVjb3JhdG9ycz1be3R5cGU6VC56fV0sUi5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVy
blt7dHlwZTpWfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6VC5IfSx7dHlwZTpULkUs
YXJnczpbTl19XX1dfTsvKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCit2YXIg
RD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbil7dmFyIHI9dC5jYWxsKHRoaXMpfHx0aGlzO2lm
KHIuX3BsYXRmb3JtTG9jYXRpb249ZSxudWxsPT1uJiYobj1yLl9wbGF0Zm9ybUxvY2F0aW9uLmdl
dEJhc2VIcmVmRnJvbURPTSgpKSxudWxsPT1uKXRocm93IG5ldyBFcnJvcigiTm8gYmFzZSBocmVm
IHNldC4gUGxlYXNlIHByb3ZpZGUgYSB2YWx1ZSBmb3IgdGhlIEFQUF9CQVNFX0hSRUYgdG9rZW4g
b3IgYWRkIGEgYmFzZSBlbGVtZW50IHRvIHRoZSBkb2N1bWVudC4iKTtyZXR1cm4gci5fYmFzZUhy
ZWY9bixyfXJldHVybiBrKGUsdCksZS5wcm90b3R5cGUub25Qb3BTdGF0ZT1mdW5jdGlvbih0KXt0
aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLm9uUG9wU3RhdGUodCksdGhpcy5fcGxhdGZvcm1Mb2NhdGlv
bi5vbkhhc2hDaGFuZ2UodCl9LGUucHJvdG90eXBlLmdldEJhc2VIcmVmPWZ1bmN0aW9uKCl7cmV0
dXJuIHRoaXMuX2Jhc2VIcmVmfSxlLnByb3RvdHlwZS5wcmVwYXJlRXh0ZXJuYWxVcmw9ZnVuY3Rp
b24odCl7cmV0dXJuIGouam9pbldpdGhTbGFzaCh0aGlzLl9iYXNlSHJlZix0KX0sZS5wcm90b3R5
cGUucGF0aD1mdW5jdGlvbih0KXt2b2lkIDA9PT10JiYodD0hMSk7dmFyIGU9dGhpcy5fcGxhdGZv
cm1Mb2NhdGlvbi5wYXRobmFtZStqLm5vcm1hbGl6ZVF1ZXJ5UGFyYW1zKHRoaXMuX3BsYXRmb3Jt
TG9jYXRpb24uc2VhcmNoKSxuPXRoaXMuX3BsYXRmb3JtTG9jYXRpb24uaGFzaDtyZXR1cm4gbiYm
dD8iIitlK246ZX0sZS5wcm90b3R5cGUucHVzaFN0YXRlPWZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBv
PXRoaXMucHJlcGFyZUV4dGVybmFsVXJsKG4rai5ub3JtYWxpemVRdWVyeVBhcmFtcyhyKSk7dGhp
cy5fcGxhdGZvcm1Mb2NhdGlvbi5wdXNoU3RhdGUodCxlLG8pfSxlLnByb3RvdHlwZS5yZXBsYWNl
U3RhdGU9ZnVuY3Rpb24odCxlLG4scil7dmFyIG89dGhpcy5wcmVwYXJlRXh0ZXJuYWxVcmwobitq
Lm5vcm1hbGl6ZVF1ZXJ5UGFyYW1zKHIpKTt0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLnJlcGxhY2VT
dGF0ZSh0LGUsbyl9LGUucHJvdG90eXBlLmZvcndhcmQ9ZnVuY3Rpb24oKXt0aGlzLl9wbGF0Zm9y
bUxvY2F0aW9uLmZvcndhcmQoKX0sZS5wcm90b3R5cGUuYmFjaz1mdW5jdGlvbigpe3RoaXMuX3Bs
YXRmb3JtTG9jYXRpb24uYmFjaygpfSxlfShNKTtELmRlY29yYXRvcnM9W3t0eXBlOlQuen1dLEQu
Y3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6Vn0se3R5cGU6dm9pZCAwLGRl
Y29yYXRvcnM6W3t0eXBlOlQuSH0se3R5cGU6VC5FLGFyZ3M6W05dfV19XX07LyoqCisgKiBAbGlj
ZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgor
ICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6
Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLworLyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0
IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
KyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vu
c2UKKyAqLwordmFyIEk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlw
ZS5nZXRQbHVyYWxDYXRlZ29yeT1mdW5jdGlvbih0KXt9LHR9KCksRj1mdW5jdGlvbih0KXtmdW5j
dGlvbiBlKGUpe3ZhciBuPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gbi5sb2NhbGU9ZSxufXJl
dHVybiBrKGUsdCksZS5wcm90b3R5cGUuZ2V0UGx1cmFsQ2F0ZWdvcnk9ZnVuY3Rpb24odCl7c3dp
dGNoKHModGhpcy5sb2NhbGUsdCkpe2Nhc2UgSC5aZXJvOnJldHVybiJ6ZXJvIjtjYXNlIEguT25l
OnJldHVybiJvbmUiO2Nhc2UgSC5Ud286cmV0dXJuInR3byI7Y2FzZSBILkZldzpyZXR1cm4iZmV3
IjtjYXNlIEguTWFueTpyZXR1cm4ibWFueSI7ZGVmYXVsdDpyZXR1cm4ib3RoZXIifX0sZX0oSSk7
Ri5kZWNvcmF0b3JzPVt7dHlwZTpULnp9XSxGLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0
dXJuW3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpULkUsYXJnczpbVC5jXX1dfV19O3Zh
ciBIPXt9O0guWmVybz0wLEguT25lPTEsSC5Ud289MixILkZldz0zLEguTWFueT00LEguT3RoZXI9
NSxIW0guWmVyb109Ilplcm8iLEhbSC5PbmVdPSJPbmUiLEhbSC5Ud29dPSJUd28iLEhbSC5GZXdd
PSJGZXciLEhbSC5NYW55XT0iTWFueSIsSFtILk90aGVyXT0iT3RoZXIiOy8qKgorICogQGxpY2Vu
c2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAq
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8v
YW5ndWxhci5pby9saWNlbnNlCisgKi8KK3ZhciBMPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUs
bixyKXt0aGlzLl9pdGVyYWJsZURpZmZlcnM9dCx0aGlzLl9rZXlWYWx1ZURpZmZlcnM9ZSx0aGlz
Ll9uZ0VsPW4sdGhpcy5fcmVuZGVyZXI9cix0aGlzLl9pbml0aWFsQ2xhc3Nlcz1bXX1yZXR1cm4g
T2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJrbGFzcyIse3NldDpmdW5jdGlvbih0
KXt0aGlzLl9hcHBseUluaXRpYWxDbGFzc2VzKCEwKSx0aGlzLl9pbml0aWFsQ2xhc3Nlcz0ic3Ry
aW5nIj09dHlwZW9mIHQ/dC5zcGxpdCgvXHMrLyk6W10sdGhpcy5fYXBwbHlJbml0aWFsQ2xhc3Nl
cyghMSksdGhpcy5fYXBwbHlDbGFzc2VzKHRoaXMuX3Jhd0NsYXNzLCExKX0sZW51bWVyYWJsZToh
MCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsIm5n
Q2xhc3MiLHtzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fY2xlYW51cENsYXNzZXModGhpcy5fcmF3Q2xh
c3MpLHRoaXMuX2l0ZXJhYmxlRGlmZmVyPW51bGwsdGhpcy5fa2V5VmFsdWVEaWZmZXI9bnVsbCx0
aGlzLl9yYXdDbGFzcz0ic3RyaW5nIj09dHlwZW9mIHQ/dC5zcGxpdCgvXHMrLyk6dCx0aGlzLl9y
YXdDbGFzcyYmKG4uaShULlMpKHRoaXMuX3Jhd0NsYXNzKT90aGlzLl9pdGVyYWJsZURpZmZlcj10
aGlzLl9pdGVyYWJsZURpZmZlcnMuZmluZCh0aGlzLl9yYXdDbGFzcykuY3JlYXRlKCk6dGhpcy5f
a2V5VmFsdWVEaWZmZXI9dGhpcy5fa2V5VmFsdWVEaWZmZXJzLmZpbmQodGhpcy5fcmF3Q2xhc3Mp
LmNyZWF0ZSgpKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5u
Z0RvQ2hlY2s9ZnVuY3Rpb24oKXtpZih0aGlzLl9pdGVyYWJsZURpZmZlcil7dmFyIHQ9dGhpcy5f
aXRlcmFibGVEaWZmZXIuZGlmZih0aGlzLl9yYXdDbGFzcyk7dCYmdGhpcy5fYXBwbHlJdGVyYWJs
ZUNoYW5nZXModCl9ZWxzZSBpZih0aGlzLl9rZXlWYWx1ZURpZmZlcil7dmFyIGU9dGhpcy5fa2V5
VmFsdWVEaWZmZXIuZGlmZih0aGlzLl9yYXdDbGFzcyk7ZSYmdGhpcy5fYXBwbHlLZXlWYWx1ZUNo
YW5nZXMoZSl9fSx0LnByb3RvdHlwZS5fY2xlYW51cENsYXNzZXM9ZnVuY3Rpb24odCl7dGhpcy5f
YXBwbHlDbGFzc2VzKHQsITApLHRoaXMuX2FwcGx5SW5pdGlhbENsYXNzZXMoITEpfSx0LnByb3Rv
dHlwZS5fYXBwbHlLZXlWYWx1ZUNoYW5nZXM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0LmZvckVh
Y2hBZGRlZEl0ZW0oZnVuY3Rpb24odCl7cmV0dXJuIGUuX3RvZ2dsZUNsYXNzKHQua2V5LHQuY3Vy
cmVudFZhbHVlKX0pLHQuZm9yRWFjaENoYW5nZWRJdGVtKGZ1bmN0aW9uKHQpe3JldHVybiBlLl90
b2dnbGVDbGFzcyh0LmtleSx0LmN1cnJlbnRWYWx1ZSl9KSx0LmZvckVhY2hSZW1vdmVkSXRlbShm
dW5jdGlvbih0KXt0LnByZXZpb3VzVmFsdWUmJmUuX3RvZ2dsZUNsYXNzKHQua2V5LCExKX0pfSx0
LnByb3RvdHlwZS5fYXBwbHlJdGVyYWJsZUNoYW5nZXM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0
LmZvckVhY2hBZGRlZEl0ZW0oZnVuY3Rpb24odCl7aWYoInN0cmluZyIhPXR5cGVvZiB0Lml0ZW0p
dGhyb3cgbmV3IEVycm9yKCJOZ0NsYXNzIGNhbiBvbmx5IHRvZ2dsZSBDU1MgY2xhc3NlcyBleHBy
ZXNzZWQgYXMgc3RyaW5ncywgZ290ICIrbi5pKFQuVCkodC5pdGVtKSk7ZS5fdG9nZ2xlQ2xhc3Mo
dC5pdGVtLCEwKX0pLHQuZm9yRWFjaFJlbW92ZWRJdGVtKGZ1bmN0aW9uKHQpe3JldHVybiBlLl90
b2dnbGVDbGFzcyh0Lml0ZW0sITEpfSl9LHQucHJvdG90eXBlLl9hcHBseUluaXRpYWxDbGFzc2Vz
PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dGhpcy5faW5pdGlhbENsYXNzZXMuZm9yRWFjaChmdW5j
dGlvbihuKXtyZXR1cm4gZS5fdG9nZ2xlQ2xhc3MobiwhdCl9KX0sdC5wcm90b3R5cGUuX2FwcGx5
Q2xhc3Nlcz1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXM7dCYmKEFycmF5LmlzQXJyYXkodCl8fHQg
aW5zdGFuY2VvZiBTZXQ/dC5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiBuLl90b2dnbGVDbGFz
cyh0LCFlKX0pOk9iamVjdC5rZXlzKHQpLmZvckVhY2goZnVuY3Rpb24ocil7bnVsbCE9dFtyXSYm
bi5fdG9nZ2xlQ2xhc3MociwhZSl9KSl9LHQucHJvdG90eXBlLl90b2dnbGVDbGFzcz1mdW5jdGlv
bih0LGUpe3ZhciBuPXRoaXM7KHQ9dC50cmltKCkpJiZ0LnNwbGl0KC9ccysvZykuZm9yRWFjaChm
dW5jdGlvbih0KXtuLl9yZW5kZXJlci5zZXRFbGVtZW50Q2xhc3Mobi5fbmdFbC5uYXRpdmVFbGVt
ZW50LHQsISFlKX0pfSx0fSgpO0wuZGVjb3JhdG9ycz1be3R5cGU6VC5VLGFyZ3M6W3tzZWxlY3Rv
cjoiW25nQ2xhc3NdIn1dfV0sTC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlw
ZTpULnR9LHt0eXBlOlQudX0se3R5cGU6VC5WfSx7dHlwZTpULld9XX0sTC5wcm9wRGVjb3JhdG9y
cz17a2xhc3M6W3t0eXBlOlQuWCxhcmdzOlsiY2xhc3MiXX1dLG5nQ2xhc3M6W3t0eXBlOlQuWH1d
fTsvKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCit2YXIgVT1mdW5jdGlvbigp
e2Z1bmN0aW9uIHQodCl7dGhpcy5fdmlld0NvbnRhaW5lclJlZj10LHRoaXMuX2NvbXBvbmVudFJl
Zj1udWxsLHRoaXMuX21vZHVsZVJlZj1udWxsfXJldHVybiB0LnByb3RvdHlwZS5uZ09uQ2hhbmdl
cz1mdW5jdGlvbih0KXtpZih0aGlzLl92aWV3Q29udGFpbmVyUmVmLmNsZWFyKCksdGhpcy5fY29t
cG9uZW50UmVmPW51bGwsdGhpcy5uZ0NvbXBvbmVudE91dGxldCl7dmFyIGU9dGhpcy5uZ0NvbXBv
bmVudE91dGxldEluamVjdG9yfHx0aGlzLl92aWV3Q29udGFpbmVyUmVmLnBhcmVudEluamVjdG9y
O2lmKHQubmdDb21wb25lbnRPdXRsZXROZ01vZHVsZUZhY3RvcnkpaWYodGhpcy5fbW9kdWxlUmVm
JiZ0aGlzLl9tb2R1bGVSZWYuZGVzdHJveSgpLHRoaXMubmdDb21wb25lbnRPdXRsZXROZ01vZHVs
ZUZhY3Rvcnkpe3ZhciBuPWUuZ2V0KFQuWSk7dGhpcy5fbW9kdWxlUmVmPXRoaXMubmdDb21wb25l
bnRPdXRsZXROZ01vZHVsZUZhY3RvcnkuY3JlYXRlKG4uaW5qZWN0b3IpfWVsc2UgdGhpcy5fbW9k
dWxlUmVmPW51bGw7dmFyIHI9dGhpcy5fbW9kdWxlUmVmP3RoaXMuX21vZHVsZVJlZi5jb21wb25l
bnRGYWN0b3J5UmVzb2x2ZXI6ZS5nZXQoVC5aKSxvPXIucmVzb2x2ZUNvbXBvbmVudEZhY3Rvcnko
dGhpcy5uZ0NvbXBvbmVudE91dGxldCk7dGhpcy5fY29tcG9uZW50UmVmPXRoaXMuX3ZpZXdDb250
YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KG8sdGhpcy5fdmlld0NvbnRhaW5lclJlZi5sZW5ndGgs
ZSx0aGlzLm5nQ29tcG9uZW50T3V0bGV0Q29udGVudCl9fSx0LnByb3RvdHlwZS5uZ09uRGVzdHJv
eT1mdW5jdGlvbigpe3RoaXMuX21vZHVsZVJlZiYmdGhpcy5fbW9kdWxlUmVmLmRlc3Ryb3koKX0s
dH0oKTtVLmRlY29yYXRvcnM9W3t0eXBlOlQuVSxhcmdzOlt7c2VsZWN0b3I6IltuZ0NvbXBvbmVu
dE91dGxldF0ifV19XSxVLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlQu
XzB9XX0sVS5wcm9wRGVjb3JhdG9ycz17bmdDb21wb25lbnRPdXRsZXQ6W3t0eXBlOlQuWH1dLG5n
Q29tcG9uZW50T3V0bGV0SW5qZWN0b3I6W3t0eXBlOlQuWH1dLG5nQ29tcG9uZW50T3V0bGV0Q29u
dGVudDpbe3R5cGU6VC5YfV0sbmdDb21wb25lbnRPdXRsZXROZ01vZHVsZUZhY3Rvcnk6W3t0eXBl
OlQuWH1dfTsvKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCit2YXIgQj1mdW5j
dGlvbigpe2Z1bmN0aW9uIHQodCxlLG4scil7dGhpcy4kaW1wbGljaXQ9dCx0aGlzLm5nRm9yT2Y9
ZSx0aGlzLmluZGV4PW4sdGhpcy5jb3VudD1yfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHko
dC5wcm90b3R5cGUsImZpcnN0Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLmluZGV4
fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0
LnByb3RvdHlwZSwibGFzdCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmluZGV4PT09dGhp
cy5jb3VudC0xfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eSh0LnByb3RvdHlwZSwiZXZlbiIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmlu
ZGV4JTI9PTB9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVBy
b3BlcnR5KHQucHJvdG90eXBlLCJvZGQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5ldmVu
fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHR9KCksRz1mdW5jdGlvbigpe2Z1bmN0
aW9uIHQodCxlLG4pe3RoaXMuX3ZpZXdDb250YWluZXI9dCx0aGlzLl90ZW1wbGF0ZT1lLHRoaXMu
X2RpZmZlcnM9bix0aGlzLl9kaWZmZXI9bnVsbH1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5
KHQucHJvdG90eXBlLCJuZ0ZvclRyYWNrQnkiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5f
dHJhY2tCeUZufSxzZXQ6ZnVuY3Rpb24odCl7bi5pKFQuSykoKSYmbnVsbCE9dCYmImZ1bmN0aW9u
IiE9dHlwZW9mIHQmJmNvbnNvbGUmJmNvbnNvbGUud2FybiYmY29uc29sZS53YXJuKCJ0cmFja0J5
IG11c3QgYmUgYSBmdW5jdGlvbiwgYnV0IHJlY2VpdmVkICIrSlNPTi5zdHJpbmdpZnkodCkrIi4g
U2VlIGh0dHBzOi8vYW5ndWxhci5pby9kb2NzL3RzL2xhdGVzdC9hcGkvY29tbW9uL2luZGV4L05n
Rm9yLWRpcmVjdGl2ZS5odG1sIyEjY2hhbmdlLXByb3BhZ2F0aW9uIGZvciBtb3JlIGluZm9ybWF0
aW9uLiIpLHRoaXMuX3RyYWNrQnlGbj10fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0p
LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwibmdGb3JUZW1wbGF0ZSIse3NldDpm
dW5jdGlvbih0KXt0JiYodGhpcy5fdGVtcGxhdGU9dCl9LGVudW1lcmFibGU6ITAsY29uZmlndXJh
YmxlOiEwfSksdC5wcm90b3R5cGUubmdPbkNoYW5nZXM9ZnVuY3Rpb24odCl7aWYoIm5nRm9yT2Yi
aW4gdCl7dmFyIGU9dC5uZ0Zvck9mLmN1cnJlbnRWYWx1ZTtpZighdGhpcy5fZGlmZmVyJiZlKXRy
eXt0aGlzLl9kaWZmZXI9dGhpcy5fZGlmZmVycy5maW5kKGUpLmNyZWF0ZSh0aGlzLm5nRm9yVHJh
Y2tCeSl9Y2F0Y2godCl7dGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgZmluZCBhIGRpZmZlciBzdXBw
b3J0aW5nIG9iamVjdCAnIitlKyInIG9mIHR5cGUgJyIrYShlKSsiJy4gTmdGb3Igb25seSBzdXBw
b3J0cyBiaW5kaW5nIHRvIEl0ZXJhYmxlcyBzdWNoIGFzIEFycmF5cy4iKX19fSx0LnByb3RvdHlw
ZS5uZ0RvQ2hlY2s9ZnVuY3Rpb24oKXtpZih0aGlzLl9kaWZmZXIpe3ZhciB0PXRoaXMuX2RpZmZl
ci5kaWZmKHRoaXMubmdGb3JPZik7dCYmdGhpcy5fYXBwbHlDaGFuZ2VzKHQpfX0sdC5wcm90b3R5
cGUuX2FwcGx5Q2hhbmdlcz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLG49W107dC5mb3JFYWNoT3Bl
cmF0aW9uKGZ1bmN0aW9uKHQscixvKXtpZihudWxsPT10LnByZXZpb3VzSW5kZXgpe3ZhciBpPWUu
X3ZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KGUuX3RlbXBsYXRlLG5ldyBCKG51bGws
ZS5uZ0Zvck9mLG51bGwsbnVsbCksbykscz1uZXcgeih0LGkpO24ucHVzaChzKX1lbHNlIGlmKG51
bGw9PW8pZS5fdmlld0NvbnRhaW5lci5yZW1vdmUocik7ZWxzZXt2YXIgaT1lLl92aWV3Q29udGFp
bmVyLmdldChyKTtlLl92aWV3Q29udGFpbmVyLm1vdmUoaSxvKTt2YXIgcz1uZXcgeih0LGkpO24u
cHVzaChzKX19KTtmb3IodmFyIHI9MDtyPG4ubGVuZ3RoO3IrKyl0aGlzLl9wZXJWaWV3Q2hhbmdl
KG5bcl0udmlldyxuW3JdLnJlY29yZCk7Zm9yKHZhciByPTAsbz10aGlzLl92aWV3Q29udGFpbmVy
Lmxlbmd0aDtyPG87cisrKXt2YXIgaT10aGlzLl92aWV3Q29udGFpbmVyLmdldChyKTtpLmNvbnRl
eHQuaW5kZXg9cixpLmNvbnRleHQuY291bnQ9b310LmZvckVhY2hJZGVudGl0eUNoYW5nZShmdW5j
dGlvbih0KXtlLl92aWV3Q29udGFpbmVyLmdldCh0LmN1cnJlbnRJbmRleCkuY29udGV4dC4kaW1w
bGljaXQ9dC5pdGVtfSl9LHQucHJvdG90eXBlLl9wZXJWaWV3Q2hhbmdlPWZ1bmN0aW9uKHQsZSl7
dC5jb250ZXh0LiRpbXBsaWNpdD1lLml0ZW19LHR9KCk7Ry5kZWNvcmF0b3JzPVt7dHlwZTpULlUs
YXJnczpbe3NlbGVjdG9yOiJbbmdGb3JdW25nRm9yT2ZdIn1dfV0sRy5jdG9yUGFyYW1ldGVycz1m
dW5jdGlvbigpe3JldHVyblt7dHlwZTpULl8wfSx7dHlwZTpULl8xfSx7dHlwZTpULnR9XX0sRy5w
cm9wRGVjb3JhdG9ycz17bmdGb3JPZjpbe3R5cGU6VC5YfV0sbmdGb3JUcmFja0J5Olt7dHlwZTpU
Llh9XSxuZ0ZvclRlbXBsYXRlOlt7dHlwZTpULlh9XX07dmFyIHo9ZnVuY3Rpb24oKXtmdW5jdGlv
biB0KHQsZSl7dGhpcy5yZWNvcmQ9dCx0aGlzLnZpZXc9ZX1yZXR1cm4gdH0oKSxxPWZ1bmN0aW9u
KCl7ZnVuY3Rpb24gdCh0LGUpe3RoaXMuX3ZpZXdDb250YWluZXI9dCx0aGlzLl9jb250ZXh0PW5l
dyBaLHRoaXMuX3RoZW5UZW1wbGF0ZVJlZj1udWxsLHRoaXMuX2Vsc2VUZW1wbGF0ZVJlZj1udWxs
LHRoaXMuX3RoZW5WaWV3UmVmPW51bGwsdGhpcy5fZWxzZVZpZXdSZWY9bnVsbCx0aGlzLl90aGVu
VGVtcGxhdGVSZWY9ZX1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJu
Z0lmIix7c2V0OmZ1bmN0aW9uKHQpe3RoaXMuX2NvbnRleHQuJGltcGxpY2l0PXRoaXMuX2NvbnRl
eHQubmdJZj10LHRoaXMuX3VwZGF0ZVZpZXcoKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6
ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsIm5nSWZUaGVuIix7c2V0OmZ1
bmN0aW9uKHQpe3RoaXMuX3RoZW5UZW1wbGF0ZVJlZj10LHRoaXMuX3RoZW5WaWV3UmVmPW51bGws
dGhpcy5fdXBkYXRlVmlldygpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVj
dC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwibmdJZkVsc2UiLHtzZXQ6ZnVuY3Rpb24odCl7
dGhpcy5fZWxzZVRlbXBsYXRlUmVmPXQsdGhpcy5fZWxzZVZpZXdSZWY9bnVsbCx0aGlzLl91cGRh
dGVWaWV3KCl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuX3Vw
ZGF0ZVZpZXc9ZnVuY3Rpb24oKXt0aGlzLl9jb250ZXh0LiRpbXBsaWNpdD90aGlzLl90aGVuVmll
d1JlZnx8KHRoaXMuX3ZpZXdDb250YWluZXIuY2xlYXIoKSx0aGlzLl9lbHNlVmlld1JlZj1udWxs
LHRoaXMuX3RoZW5UZW1wbGF0ZVJlZiYmKHRoaXMuX3RoZW5WaWV3UmVmPXRoaXMuX3ZpZXdDb250
YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMuX3RoZW5UZW1wbGF0ZVJlZix0aGlzLl9jb250
ZXh0KSkpOnRoaXMuX2Vsc2VWaWV3UmVmfHwodGhpcy5fdmlld0NvbnRhaW5lci5jbGVhcigpLHRo
aXMuX3RoZW5WaWV3UmVmPW51bGwsdGhpcy5fZWxzZVRlbXBsYXRlUmVmJiYodGhpcy5fZWxzZVZp
ZXdSZWY9dGhpcy5fdmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5fZWxzZVRl
bXBsYXRlUmVmLHRoaXMuX2NvbnRleHQpKSl9LHR9KCk7cS5kZWNvcmF0b3JzPVt7dHlwZTpULlUs
YXJnczpbe3NlbGVjdG9yOiJbbmdJZl0ifV19XSxxLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7
cmV0dXJuW3t0eXBlOlQuXzB9LHt0eXBlOlQuXzF9XX0scS5wcm9wRGVjb3JhdG9ycz17bmdJZjpb
e3R5cGU6VC5YfV0sbmdJZlRoZW46W3t0eXBlOlQuWH1dLG5nSWZFbHNlOlt7dHlwZTpULlh9XX07
dmFyIFo9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy4kaW1wbGljaXQ9bnVsbCx0aGlzLm5n
SWY9bnVsbH1yZXR1cm4gdH0oKSxXPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3RoaXMuX3Zp
ZXdDb250YWluZXJSZWY9dCx0aGlzLl90ZW1wbGF0ZVJlZj1lLHRoaXMuX2NyZWF0ZWQ9ITF9cmV0
dXJuIHQucHJvdG90eXBlLmNyZWF0ZT1mdW5jdGlvbigpe3RoaXMuX2NyZWF0ZWQ9ITAsdGhpcy5f
dmlld0NvbnRhaW5lclJlZi5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5fdGVtcGxhdGVSZWYpfSx0
LnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5fY3JlYXRlZD0hMSx0aGlzLl92aWV3
Q29udGFpbmVyUmVmLmNsZWFyKCl9LHQucHJvdG90eXBlLmVuZm9yY2VTdGF0ZT1mdW5jdGlvbih0
KXt0JiYhdGhpcy5fY3JlYXRlZD90aGlzLmNyZWF0ZSgpOiF0JiZ0aGlzLl9jcmVhdGVkJiZ0aGlz
LmRlc3Ryb3koKX0sdH0oKSxLPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3RoaXMuX2RlZmF1bHRV
c2VkPSExLHRoaXMuX2Nhc2VDb3VudD0wLHRoaXMuX2xhc3RDYXNlQ2hlY2tJbmRleD0wLHRoaXMu
X2xhc3RDYXNlc01hdGNoZWQ9ITF9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3Rv
dHlwZSwibmdTd2l0Y2giLHtzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fbmdTd2l0Y2g9dCwwPT09dGhp
cy5fY2FzZUNvdW50JiZ0aGlzLl91cGRhdGVEZWZhdWx0Q2FzZXMoITApfSxlbnVtZXJhYmxlOiEw
LGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLl9hZGRDYXNlPWZ1bmN0aW9uKCl7cmV0dXJu
IHRoaXMuX2Nhc2VDb3VudCsrfSx0LnByb3RvdHlwZS5fYWRkRGVmYXVsdD1mdW5jdGlvbih0KXt0
aGlzLl9kZWZhdWx0Vmlld3N8fCh0aGlzLl9kZWZhdWx0Vmlld3M9W10pLHRoaXMuX2RlZmF1bHRW
aWV3cy5wdXNoKHQpfSx0LnByb3RvdHlwZS5fbWF0Y2hDYXNlPWZ1bmN0aW9uKHQpe3ZhciBlPXQ9
PXRoaXMuX25nU3dpdGNoO3JldHVybiB0aGlzLl9sYXN0Q2FzZXNNYXRjaGVkPXRoaXMuX2xhc3RD
YXNlc01hdGNoZWR8fGUsdGhpcy5fbGFzdENhc2VDaGVja0luZGV4KyssdGhpcy5fbGFzdENhc2VD
aGVja0luZGV4PT09dGhpcy5fY2FzZUNvdW50JiYodGhpcy5fdXBkYXRlRGVmYXVsdENhc2VzKCF0
aGlzLl9sYXN0Q2FzZXNNYXRjaGVkKSx0aGlzLl9sYXN0Q2FzZUNoZWNrSW5kZXg9MCx0aGlzLl9s
YXN0Q2FzZXNNYXRjaGVkPSExKSxlfSx0LnByb3RvdHlwZS5fdXBkYXRlRGVmYXVsdENhc2VzPWZ1
bmN0aW9uKHQpe2lmKHRoaXMuX2RlZmF1bHRWaWV3cyYmdCE9PXRoaXMuX2RlZmF1bHRVc2VkKXt0
aGlzLl9kZWZhdWx0VXNlZD10O2Zvcih2YXIgZT0wO2U8dGhpcy5fZGVmYXVsdFZpZXdzLmxlbmd0
aDtlKyspe3RoaXMuX2RlZmF1bHRWaWV3c1tlXS5lbmZvcmNlU3RhdGUodCl9fX0sdH0oKTtLLmRl
Y29yYXRvcnM9W3t0eXBlOlQuVSxhcmdzOlt7c2VsZWN0b3I6IltuZ1N3aXRjaF0ifV19XSxLLmN0
b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW119LEsucHJvcERlY29yYXRvcnM9e25nU3dp
dGNoOlt7dHlwZTpULlh9XX07dmFyIFg9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuKXt0aGlz
Lm5nU3dpdGNoPW4sbi5fYWRkQ2FzZSgpLHRoaXMuX3ZpZXc9bmV3IFcodCxlKX1yZXR1cm4gdC5w
cm90b3R5cGUubmdEb0NoZWNrPWZ1bmN0aW9uKCl7dGhpcy5fdmlldy5lbmZvcmNlU3RhdGUodGhp
cy5uZ1N3aXRjaC5fbWF0Y2hDYXNlKHRoaXMubmdTd2l0Y2hDYXNlKSl9LHR9KCk7WC5kZWNvcmF0
b3JzPVt7dHlwZTpULlUsYXJnczpbe3NlbGVjdG9yOiJbbmdTd2l0Y2hDYXNlXSJ9XX1dLFguY3Rv
clBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6VC5fMH0se3R5cGU6VC5fMX0se3R5
cGU6SyxkZWNvcmF0b3JzOlt7dHlwZTpULl8yfV19XX0sWC5wcm9wRGVjb3JhdG9ycz17bmdTd2l0
Y2hDYXNlOlt7dHlwZTpULlh9XX07dmFyIFE9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuKXtu
Ll9hZGREZWZhdWx0KG5ldyBXKHQsZSkpfXJldHVybiB0fSgpO1EuZGVjb3JhdG9ycz1be3R5cGU6
VC5VLGFyZ3M6W3tzZWxlY3RvcjoiW25nU3dpdGNoRGVmYXVsdF0ifV19XSxRLmN0b3JQYXJhbWV0
ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlQuXzB9LHt0eXBlOlQuXzF9LHt0eXBlOkssZGVj
b3JhdG9yczpbe3R5cGU6VC5fMn1dfV19Oy8qKgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBH
b29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisg
KiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNl
CisgKi8KK3ZhciBKPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLl9sb2NhbGl6YXRpb249
dCx0aGlzLl9jYXNlVmlld3M9e319cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3Rv
dHlwZSwibmdQbHVyYWwiLHtzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fc3dpdGNoVmFsdWU9dCx0aGlz
Ll91cGRhdGVWaWV3KCl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5
cGUuYWRkQ2FzZT1mdW5jdGlvbih0LGUpe3RoaXMuX2Nhc2VWaWV3c1t0XT1lfSx0LnByb3RvdHlw
ZS5fdXBkYXRlVmlldz1mdW5jdGlvbigpe3RoaXMuX2NsZWFyVmlld3MoKTt2YXIgdD1PYmplY3Qu
a2V5cyh0aGlzLl9jYXNlVmlld3MpLGU9aSh0aGlzLl9zd2l0Y2hWYWx1ZSx0LHRoaXMuX2xvY2Fs
aXphdGlvbik7dGhpcy5fYWN0aXZhdGVWaWV3KHRoaXMuX2Nhc2VWaWV3c1tlXSl9LHQucHJvdG90
eXBlLl9jbGVhclZpZXdzPWZ1bmN0aW9uKCl7dGhpcy5fYWN0aXZlVmlldyYmdGhpcy5fYWN0aXZl
Vmlldy5kZXN0cm95KCl9LHQucHJvdG90eXBlLl9hY3RpdmF0ZVZpZXc9ZnVuY3Rpb24odCl7dCYm
KHRoaXMuX2FjdGl2ZVZpZXc9dCx0aGlzLl9hY3RpdmVWaWV3LmNyZWF0ZSgpKX0sdH0oKTtKLmRl
Y29yYXRvcnM9W3t0eXBlOlQuVSxhcmdzOlt7c2VsZWN0b3I6IltuZ1BsdXJhbF0ifV19XSxKLmN0
b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkl9XX0sSi5wcm9wRGVjb3JhdG9y
cz17bmdQbHVyYWw6W3t0eXBlOlQuWH1dfTt2YXIgJD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxl
LG4scil7dGhpcy52YWx1ZT10O3ZhciBvPSFpc05hTihOdW1iZXIodCkpO3IuYWRkQ2FzZShvPyI9
Iit0OnQsbmV3IFcobixlKSl9cmV0dXJuIHR9KCk7JC5kZWNvcmF0b3JzPVt7dHlwZTpULlUsYXJn
czpbe3NlbGVjdG9yOiJbbmdQbHVyYWxDYXNlXSJ9XX1dLCQuY3RvclBhcmFtZXRlcnM9ZnVuY3Rp
b24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOlQuXzMsYXJnczpbIm5n
UGx1cmFsQ2FzZSJdfV19LHt0eXBlOlQuXzF9LHt0eXBlOlQuXzB9LHt0eXBlOkosZGVjb3JhdG9y
czpbe3R5cGU6VC5fMn1dfV19Oy8qKgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUg
SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8K
K3ZhciBZPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbil7dGhpcy5fZGlmZmVycz10LHRoaXMu
X25nRWw9ZSx0aGlzLl9yZW5kZXJlcj1ufXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodC5w
cm90b3R5cGUsIm5nU3R5bGUiLHtzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fbmdTdHlsZT10LCF0aGlz
Ll9kaWZmZXImJnQmJih0aGlzLl9kaWZmZXI9dGhpcy5fZGlmZmVycy5maW5kKHQpLmNyZWF0ZSgp
KX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5uZ0RvQ2hlY2s9
ZnVuY3Rpb24oKXtpZih0aGlzLl9kaWZmZXIpe3ZhciB0PXRoaXMuX2RpZmZlci5kaWZmKHRoaXMu
X25nU3R5bGUpO3QmJnRoaXMuX2FwcGx5Q2hhbmdlcyh0KX19LHQucHJvdG90eXBlLl9hcHBseUNo
YW5nZXM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0LmZvckVhY2hSZW1vdmVkSXRlbShmdW5jdGlv
bih0KXtyZXR1cm4gZS5fc2V0U3R5bGUodC5rZXksbnVsbCl9KSx0LmZvckVhY2hBZGRlZEl0ZW0o
ZnVuY3Rpb24odCl7cmV0dXJuIGUuX3NldFN0eWxlKHQua2V5LHQuY3VycmVudFZhbHVlKX0pLHQu
Zm9yRWFjaENoYW5nZWRJdGVtKGZ1bmN0aW9uKHQpe3JldHVybiBlLl9zZXRTdHlsZSh0LmtleSx0
LmN1cnJlbnRWYWx1ZSl9KX0sdC5wcm90b3R5cGUuX3NldFN0eWxlPWZ1bmN0aW9uKHQsZSl7dmFy
IG49dC5zcGxpdCgiLiIpLHI9blswXSxvPW5bMV07ZT1udWxsIT1lJiZvPyIiK2UrbzplLHRoaXMu
X3JlbmRlcmVyLnNldEVsZW1lbnRTdHlsZSh0aGlzLl9uZ0VsLm5hdGl2ZUVsZW1lbnQscixlKX0s
dH0oKTtZLmRlY29yYXRvcnM9W3t0eXBlOlQuVSxhcmdzOlt7c2VsZWN0b3I6IltuZ1N0eWxlXSJ9
XX1dLFkuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6VC51fSx7dHlwZTpU
LlZ9LHt0eXBlOlQuV31dfSxZLnByb3BEZWNvcmF0b3JzPXtuZ1N0eWxlOlt7dHlwZTpULlh9XX07
LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFyIHR0PWZ1bmN0aW9uKCl7
ZnVuY3Rpb24gdCh0KXt0aGlzLl92aWV3Q29udGFpbmVyUmVmPXR9cmV0dXJuIE9iamVjdC5kZWZp
bmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwibmdPdXRsZXRDb250ZXh0Iix7c2V0OmZ1bmN0aW9uKHQp
e3RoaXMubmdUZW1wbGF0ZU91dGxldENvbnRleHQ9dH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFi
bGU6ITB9KSx0LnByb3RvdHlwZS5uZ09uQ2hhbmdlcz1mdW5jdGlvbih0KXt0aGlzLl92aWV3UmVm
JiZ0aGlzLl92aWV3Q29udGFpbmVyUmVmLnJlbW92ZSh0aGlzLl92aWV3Q29udGFpbmVyUmVmLmlu
ZGV4T2YodGhpcy5fdmlld1JlZikpLHRoaXMubmdUZW1wbGF0ZU91dGxldCYmKHRoaXMuX3ZpZXdS
ZWY9dGhpcy5fdmlld0NvbnRhaW5lclJlZi5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5uZ1RlbXBs
YXRlT3V0bGV0LHRoaXMubmdUZW1wbGF0ZU91dGxldENvbnRleHQpKX0sdH0oKTt0dC5kZWNvcmF0
b3JzPVt7dHlwZTpULlUsYXJnczpbe3NlbGVjdG9yOiJbbmdUZW1wbGF0ZU91dGxldF0ifV19XSx0
dC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTpULl8wfV19LHR0LnByb3BE
ZWNvcmF0b3JzPXtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dDpbe3R5cGU6VC5YfV0sbmdUZW1wbGF0
ZU91dGxldDpbe3R5cGU6VC5YfV0sbmdPdXRsZXRDb250ZXh0Olt7dHlwZTpULlh9XX07LyoqCisg
KiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQg
aHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFyIGV0PVtMLFUsRyxxLHR0LFksSyxY
LFEsSiwkXSxudD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLmNy
ZWF0ZVN1YnNjcmlwdGlvbj1mdW5jdGlvbih0LGUpe3JldHVybiB0LnN1YnNjcmliZSh7bmV4dDpl
LGVycm9yOmZ1bmN0aW9uKHQpe3Rocm93IHR9fSl9LHQucHJvdG90eXBlLmRpc3Bvc2U9ZnVuY3Rp
b24odCl7dC51bnN1YnNjcmliZSgpfSx0LnByb3RvdHlwZS5vbkRlc3Ryb3k9ZnVuY3Rpb24odCl7
dC51bnN1YnNjcmliZSgpfSx0fSgpLHJ0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4g
dC5wcm90b3R5cGUuY3JlYXRlU3Vic2NyaXB0aW9uPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQudGhl
bihlLGZ1bmN0aW9uKHQpe3Rocm93IHR9KX0sdC5wcm90b3R5cGUuZGlzcG9zZT1mdW5jdGlvbih0
KXt9LHQucHJvdG90eXBlLm9uRGVzdHJveT1mdW5jdGlvbih0KXt9LHR9KCksb3Q9bmV3IHJ0LGl0
PW5ldyBudCxzdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5fcmVmPXQsdGhpcy5fbGF0
ZXN0VmFsdWU9bnVsbCx0aGlzLl9sYXRlc3RSZXR1cm5lZFZhbHVlPW51bGwsdGhpcy5fc3Vic2Ny
aXB0aW9uPW51bGwsdGhpcy5fb2JqPW51bGwsdGhpcy5fc3RyYXRlZ3k9bnVsbH1yZXR1cm4gdC5w
cm90b3R5cGUubmdPbkRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLl9zdWJzY3JpcHRpb24mJnRoaXMu
X2Rpc3Bvc2UoKX0sdC5wcm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlz
Ll9vYmo/dCE9PXRoaXMuX29iaj8odGhpcy5fZGlzcG9zZSgpLHRoaXMudHJhbnNmb3JtKHQpKTp0
aGlzLl9sYXRlc3RWYWx1ZT09PXRoaXMuX2xhdGVzdFJldHVybmVkVmFsdWU/dGhpcy5fbGF0ZXN0
UmV0dXJuZWRWYWx1ZToodGhpcy5fbGF0ZXN0UmV0dXJuZWRWYWx1ZT10aGlzLl9sYXRlc3RWYWx1
ZSxULl80LndyYXAodGhpcy5fbGF0ZXN0VmFsdWUpKToodCYmdGhpcy5fc3Vic2NyaWJlKHQpLHRo
aXMuX2xhdGVzdFJldHVybmVkVmFsdWU9dGhpcy5fbGF0ZXN0VmFsdWUsdGhpcy5fbGF0ZXN0VmFs
dWUpfSx0LnByb3RvdHlwZS5fc3Vic2NyaWJlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dGhpcy5f
b2JqPXQsdGhpcy5fc3RyYXRlZ3k9dGhpcy5fc2VsZWN0U3RyYXRlZ3kodCksdGhpcy5fc3Vic2Ny
aXB0aW9uPXRoaXMuX3N0cmF0ZWd5LmNyZWF0ZVN1YnNjcmlwdGlvbih0LGZ1bmN0aW9uKG4pe3Jl
dHVybiBlLl91cGRhdGVMYXRlc3RWYWx1ZSh0LG4pfSl9LHQucHJvdG90eXBlLl9zZWxlY3RTdHJh
dGVneT1mdW5jdGlvbihlKXtpZihuLmkoVC5fNSkoZSkpcmV0dXJuIG90O2lmKG4uaShULl82KShl
KSlyZXR1cm4gaXQ7dGhyb3cgdSh0LGUpfSx0LnByb3RvdHlwZS5fZGlzcG9zZT1mdW5jdGlvbigp
e3RoaXMuX3N0cmF0ZWd5LmRpc3Bvc2UodGhpcy5fc3Vic2NyaXB0aW9uKSx0aGlzLl9sYXRlc3RW
YWx1ZT1udWxsLHRoaXMuX2xhdGVzdFJldHVybmVkVmFsdWU9bnVsbCx0aGlzLl9zdWJzY3JpcHRp
b249bnVsbCx0aGlzLl9vYmo9bnVsbH0sdC5wcm90b3R5cGUuX3VwZGF0ZUxhdGVzdFZhbHVlPWZ1
bmN0aW9uKHQsZSl7dD09PXRoaXMuX29iaiYmKHRoaXMuX2xhdGVzdFZhbHVlPWUsdGhpcy5fcmVm
Lm1hcmtGb3JDaGVjaygpKX0sdH0oKTtzdC5kZWNvcmF0b3JzPVt7dHlwZTpULl83LGFyZ3M6W3tu
YW1lOiJhc3luYyIscHVyZTohMX1dfV0sc3QuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1
cm5be3R5cGU6VC5fOH1dfTsvKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCit2
YXIgYXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS50cmFuc2Zv
cm09ZnVuY3Rpb24oZSl7aWYoIWUpcmV0dXJuIGU7aWYoInN0cmluZyIhPXR5cGVvZiBlKXRocm93
IHUodCxlKTtyZXR1cm4gZS50b0xvd2VyQ2FzZSgpfSx0fSgpO2F0LmRlY29yYXRvcnM9W3t0eXBl
OlQuXzcsYXJnczpbe25hbWU6Imxvd2VyY2FzZSJ9XX1dLGF0LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0
aW9uKCl7cmV0dXJuW119O3ZhciB1dD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQu
cHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbihlKXtpZighZSlyZXR1cm4gZTtpZigic3RyaW5n
IiE9dHlwZW9mIGUpdGhyb3cgdSh0LGUpO3JldHVybiBlLnNwbGl0KC9cYi9nKS5tYXAoZnVuY3Rp
b24odCl7cmV0dXJuIGModCl9KS5qb2luKCIiKX0sdH0oKTt1dC5kZWNvcmF0b3JzPVt7dHlwZTpU
Ll83LGFyZ3M6W3tuYW1lOiJ0aXRsZWNhc2UifV19XSx1dC5jdG9yUGFyYW1ldGVycz1mdW5jdGlv
bigpe3JldHVybltdfTt2YXIgY3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnBy
b3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24oZSl7aWYoIWUpcmV0dXJuIGU7aWYoInN0cmluZyIh
PXR5cGVvZiBlKXRocm93IHUodCxlKTtyZXR1cm4gZS50b1VwcGVyQ2FzZSgpfSx0fSgpO2N0LmRl
Y29yYXRvcnM9W3t0eXBlOlQuXzcsYXJnczpbe25hbWU6InVwcGVyY2FzZSJ9XX1dLGN0LmN0b3JQ
YXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW119O3ZhciBsdD17fTtsdC5EZWNpbWFsPTAsbHQu
UGVyY2VudD0xLGx0LkN1cnJlbmN5PTIsbHRbbHQuRGVjaW1hbF09IkRlY2ltYWwiLGx0W2x0LlBl
cmNlbnRdPSJQZXJjZW50IixsdFtsdC5DdXJyZW5jeV09IkN1cnJlbmN5Ijt2YXIgcHQ9ZnVuY3Rp
b24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LmZvcm1hdD1mdW5jdGlvbih0LGUsbixyKXt2YXIg
bz12b2lkIDA9PT1yP3t9OnIsaT1vLm1pbmltdW1JbnRlZ2VyRGlnaXRzLHM9by5taW5pbXVtRnJh
Y3Rpb25EaWdpdHMsYT1vLm1heGltdW1GcmFjdGlvbkRpZ2l0cyx1PW8uY3VycmVuY3ksYz1vLmN1
cnJlbmN5QXNTeW1ib2wsbD12b2lkIDAhPT1jJiZjLHA9e21pbmltdW1JbnRlZ2VyRGlnaXRzOmks
bWluaW11bUZyYWN0aW9uRGlnaXRzOnMsbWF4aW11bUZyYWN0aW9uRGlnaXRzOmEsc3R5bGU6bHRb
bl0udG9Mb3dlckNhc2UoKX07cmV0dXJuIG49PWx0LkN1cnJlbmN5JiYocC5jdXJyZW5jeT11LHAu
Y3VycmVuY3lEaXNwbGF5PWw/InN5bWJvbCI6ImNvZGUiKSxuZXcgSW50bC5OdW1iZXJGb3JtYXQo
ZSxwKS5mb3JtYXQodCl9LHR9KCksZnQ9LygoPzpbXnlNTGRIaG1zYXpaRXdHakonXSspfCg/Oico
PzpbXiddfCcnKSonKXwoPzpFK3x5K3xNK3xMK3xkK3xIK3xoK3xKK3xqK3xtK3xzK3xhfHp8WnxH
K3x3KykpKC4qKS8saHQ9e3lNTU1kam1zOl8odihbbSgieWVhciIsMSksZygibW9udGgiLDMpLG0o
ImRheSIsMSksbSgiaG91ciIsMSksbSgibWludXRlIiwxKSxtKCJzZWNvbmQiLDEpXSkpLHlNZGpt
Ol8odihbbSgieWVhciIsMSksbSgibW9udGgiLDEpLG0oImRheSIsMSksbSgiaG91ciIsMSksbSgi
bWludXRlIiwxKV0pKSx5TU1NTUVFRUVkOl8odihbbSgieWVhciIsMSksZygibW9udGgiLDQpLGco
IndlZWtkYXkiLDQpLG0oImRheSIsMSldKSkseU1NTU1kOl8odihbbSgieWVhciIsMSksZygibW9u
dGgiLDQpLG0oImRheSIsMSldKSkseU1NTWQ6Xyh2KFttKCJ5ZWFyIiwxKSxnKCJtb250aCIsMyks
bSgiZGF5IiwxKV0pKSx5TWQ6Xyh2KFttKCJ5ZWFyIiwxKSxtKCJtb250aCIsMSksbSgiZGF5Iiwx
KV0pKSxqbXM6Xyh2KFttKCJob3VyIiwxKSxtKCJzZWNvbmQiLDEpLG0oIm1pbnV0ZSIsMSldKSks
am06Xyh2KFttKCJob3VyIiwxKSxtKCJtaW51dGUiLDEpXSkpfSxkdD17eXl5eTpfKG0oInllYXIi
LDQpKSx5eTpfKG0oInllYXIiLDIpKSx5Ol8obSgieWVhciIsMSkpLE1NTU06XyhnKCJtb250aCIs
NCkpLE1NTTpfKGcoIm1vbnRoIiwzKSksTU06XyhtKCJtb250aCIsMikpLE06XyhtKCJtb250aCIs
MSkpLExMTEw6XyhnKCJtb250aCIsNCkpLEw6XyhnKCJtb250aCIsMSkpLGRkOl8obSgiZGF5Iiwy
KSksZDpfKG0oImRheSIsMSkpLEhIOmwoZihfKHkobSgiaG91ciIsMiksITEpKSkpLEg6ZihfKHko
bSgiaG91ciIsMSksITEpKSksaGg6bChmKF8oeShtKCJob3VyIiwyKSwhMCkpKSksaDpmKF8oeSht
KCJob3VyIiwxKSwhMCkpKSxqajpfKG0oImhvdXIiLDIpKSxqOl8obSgiaG91ciIsMSkpLG1tOmwo
XyhtKCJtaW51dGUiLDIpKSksbTpfKG0oIm1pbnV0ZSIsMSkpLHNzOmwoXyhtKCJzZWNvbmQiLDIp
KSksczpfKG0oInNlY29uZCIsMSkpLHNzczpfKG0oInNlY29uZCIsMykpLEVFRUU6XyhnKCJ3ZWVr
ZGF5Iiw0KSksRUVFOl8oZygid2Vla2RheSIsMykpLEVFOl8oZygid2Vla2RheSIsMikpLEU6Xyhn
KCJ3ZWVrZGF5IiwxKSksYTpwKF8oeShtKCJob3VyIiwxKSwhMCkpKSxaOmQoInNob3J0Iiksejpk
KCJsb25nIiksd3c6Xyh7fSksdzpfKHt9KSxHOl8oZygiZXJhIiwxKSksR0c6XyhnKCJlcmEiLDIp
KSxHR0c6XyhnKCJlcmEiLDMpKSxHR0dHOl8oZygiZXJhIiw0KSl9LHl0PW5ldyBNYXAsbXQ9ZnVu
Y3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LmZvcm1hdD1mdW5jdGlvbih0LGUsbil7cmV0
dXJuIGIobix0LGUpfSx0fSgpLGd0PS9eKFxkKyk/XC4oKFxkKykoLShcZCspKT8pPyQvLHZ0PWZ1
bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLl9sb2NhbGU9dH1yZXR1cm4gdC5wcm90b3R5cGUu
dHJhbnNmb3JtPWZ1bmN0aW9uKGUsbil7cmV0dXJuIHZvaWQgMD09PW4mJihuPW51bGwpLEModCx0
aGlzLl9sb2NhbGUsZSxsdC5EZWNpbWFsLG4pfSx0fSgpO3Z0LmRlY29yYXRvcnM9W3t0eXBlOlQu
XzcsYXJnczpbe25hbWU6Im51bWJlciJ9XX1dLHZ0LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7
cmV0dXJuW3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpULkUsYXJnczpbVC5jXX1dfV19
O3ZhciBfdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5fbG9jYWxlPXR9cmV0dXJuIHQu
cHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbihlLG4pe3JldHVybiB2b2lkIDA9PT1uJiYobj1u
dWxsKSxDKHQsdGhpcy5fbG9jYWxlLGUsbHQuUGVyY2VudCxuKX0sdH0oKTtfdC5kZWNvcmF0b3Jz
PVt7dHlwZTpULl83LGFyZ3M6W3tuYW1lOiJwZXJjZW50In1dfV0sX3QuY3RvclBhcmFtZXRlcnM9
ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOlQuRSxhcmdz
OltULmNdfV19XX07dmFyIGJ0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLl9sb2NhbGU9
dH1yZXR1cm4gdC5wcm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9uKGUsbixyLG8pe3JldHVybiB2
b2lkIDA9PT1uJiYobj0iVVNEIiksdm9pZCAwPT09ciYmKHI9ITEpLHZvaWQgMD09PW8mJihvPW51
bGwpLEModCx0aGlzLl9sb2NhbGUsZSxsdC5DdXJyZW5jeSxvLG4scil9LHR9KCk7YnQuZGVjb3Jh
dG9ycz1be3R5cGU6VC5fNyxhcmdzOlt7bmFtZToiY3VycmVuY3kifV19XSxidC5jdG9yUGFyYW1l
dGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6VC5F
LGFyZ3M6W1QuY119XX1dfTsvKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCit2
YXIgd3Q9L14oXGR7NH0pLT8oXGRcZCktPyhcZFxkKSg/OlQoXGRcZCkoPzo6PyhcZFxkKSg/Ojo/
KFxkXGQpKD86XC4oXGQrKSk/KT8pPyhafChbKy1dKShcZFxkKTo/KFxkXGQpKT8pPyQvLEN0PWZ1
bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLl9sb2NhbGU9dH1yZXR1cm4gdC5wcm90b3R5cGUu
dHJhbnNmb3JtPWZ1bmN0aW9uKGUsbil7dm9pZCAwPT09biYmKG49Im1lZGl1bURhdGUiKTt2YXIg
cjtpZih4KGUpfHxlIT09ZSlyZXR1cm4gbnVsbDtpZigic3RyaW5nIj09dHlwZW9mIGUmJihlPWUu
dHJpbSgpKSxTKGUpKXI9ZTtlbHNlIGlmKE8oZSkpcj1uZXcgRGF0ZShwYXJzZUZsb2F0KGUpKTtl
bHNlIGlmKCJzdHJpbmciPT10eXBlb2YgZSYmL14oXGR7NH0tXGR7MSwyfS1cZHsxLDJ9KSQvLnRl
c3QoZSkpe3ZhciBvPWUuc3BsaXQoIi0iKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHBhcnNlSW50
KHQsMTApfSksaT1vWzBdLHM9b1sxXSxhPW9bMl07cj1uZXcgRGF0ZShpLHMtMSxhKX1lbHNlIHI9
bmV3IERhdGUoZSk7aWYoIVMocikpe3ZhciBjPXZvaWQgMDtpZigic3RyaW5nIiE9dHlwZW9mIGV8
fCEoYz1lLm1hdGNoKHd0KSkpdGhyb3cgdSh0LGUpO3I9UChjKX1yZXR1cm4gbXQuZm9ybWF0KHIs
dGhpcy5fbG9jYWxlLHQuX0FMSUFTRVNbbl18fG4pfSx0fSgpO0N0Ll9BTElBU0VTPXttZWRpdW06
InlNTU1kam1zIixzaG9ydDoieU1kam0iLGZ1bGxEYXRlOiJ5TU1NTUVFRUVkIixsb25nRGF0ZToi
eU1NTU1kIixtZWRpdW1EYXRlOiJ5TU1NZCIsc2hvcnREYXRlOiJ5TWQiLG1lZGl1bVRpbWU6Impt
cyIsc2hvcnRUaW1lOiJqbSJ9LEN0LmRlY29yYXRvcnM9W3t0eXBlOlQuXzcsYXJnczpbe25hbWU6
ImRhdGUiLHB1cmU6ITB9XX1dLEN0LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0
eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpULkUsYXJnczpbVC5jXX1dfV19Oy8qKgorICog
QGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0
dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8KK3ZhciBFdD0vIy9nLE90PWZ1bmN0aW9uKCl7
ZnVuY3Rpb24gdCh0KXt0aGlzLl9sb2NhbGl6YXRpb249dH1yZXR1cm4gdC5wcm90b3R5cGUudHJh
bnNmb3JtPWZ1bmN0aW9uKGUsbil7aWYobnVsbD09ZSlyZXR1cm4iIjtpZigib2JqZWN0IiE9dHlw
ZW9mIG58fG51bGw9PT1uKXRocm93IHUodCxuKTtyZXR1cm4gbltpKGUsT2JqZWN0LmtleXMobiks
dGhpcy5fbG9jYWxpemF0aW9uKV0ucmVwbGFjZShFdCxlLnRvU3RyaW5nKCkpfSx0fSgpO090LmRl
Y29yYXRvcnM9W3t0eXBlOlQuXzcsYXJnczpbe25hbWU6ImkxOG5QbHVyYWwiLHB1cmU6ITB9XX1d
LE90LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkl9XX07LyoqCisgKiBA
bGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisg
KgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0
cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFyIHh0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24g
dCgpe31yZXR1cm4gdC5wcm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9uKGUsbil7aWYobnVsbD09
ZSlyZXR1cm4iIjtpZigib2JqZWN0IiE9dHlwZW9mIG58fCJzdHJpbmciIT10eXBlb2YgZSl0aHJv
dyB1KHQsbik7cmV0dXJuIG4uaGFzT3duUHJvcGVydHkoZSk/bltlXTpuLmhhc093blByb3BlcnR5
KCJvdGhlciIpP24ub3RoZXI6IiJ9LHR9KCk7eHQuZGVjb3JhdG9ycz1be3R5cGU6VC5fNyxhcmdz
Olt7bmFtZToiaTE4blNlbGVjdCIscHVyZTohMH1dfV0seHQuY3RvclBhcmFtZXRlcnM9ZnVuY3Rp
b24oKXtyZXR1cm5bXX07LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFy
IFN0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUudHJhbnNmb3Jt
PWZ1bmN0aW9uKHQpe3JldHVybiBKU09OLnN0cmluZ2lmeSh0LG51bGwsMil9LHR9KCk7U3QuZGVj
b3JhdG9ycz1be3R5cGU6VC5fNyxhcmdzOlt7bmFtZToianNvbiIscHVyZTohMX1dfV0sU3QuY3Rv
clBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5bXX07LyoqCisgKiBAbGljZW5zZQorICogQ29w
eXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlv
L2xpY2Vuc2UKKyAqLwordmFyIFB0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5w
cm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9uKGUsbixyKXtpZihudWxsPT1lKXJldHVybiBlO2lm
KCF0aGlzLnN1cHBvcnRzKGUpKXRocm93IHUodCxlKTtyZXR1cm4gZS5zbGljZShuLHIpfSx0LnBy
b3RvdHlwZS5zdXBwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHR8fEFy
cmF5LmlzQXJyYXkodCl9LHR9KCk7UHQuZGVjb3JhdG9ycz1be3R5cGU6VC5fNyxhcmdzOlt7bmFt
ZToic2xpY2UiLHB1cmU6ITF9XX1dLFB0LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJu
W119Oy8qKgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8KK3ZhciBBdD1bc3QsY3Qs
YXQsU3QsUHQsdnQsX3QsdXQsYnQsQ3QsT3QseHRdLFR0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgp
e31yZXR1cm4gdH0oKTtUdC5kZWNvcmF0b3JzPVt7dHlwZTpULkEsYXJnczpbe2RlY2xhcmF0aW9u
czpbZXQsQXRdLGV4cG9ydHM6W2V0LEF0XSxwcm92aWRlcnM6W3twcm92aWRlOkksdXNlQ2xhc3M6
Rn1dfV19XSxUdC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVybltdfTsvKioKKyAqIEBs
aWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
CisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRw
czovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCit2YXIga3Q9ImJyb3dzZXIiO25ldyBULkIoIjQu
MC4yIil9LCIzajNLIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiOyhmdW5jdGlvbih0KXtm
dW5jdGlvbiByKCl7aWYoIU9yKXt2YXIgdD1Fci5TeW1ib2w7aWYodCYmdC5pdGVyYXRvcilPcj10
Lml0ZXJhdG9yO2Vsc2UgZm9yKHZhciBlPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKE1hcC5w
cm90b3R5cGUpLG49MDtuPGUubGVuZ3RoOysrbil7dmFyIHI9ZVtuXTsiZW50cmllcyIhPT1yJiYi
c2l6ZSIhPT1yJiZNYXAucHJvdG90eXBlW3JdPT09TWFwLnByb3RvdHlwZS5lbnRyaWVzJiYoT3I9
cil9fXJldHVybiBPcn1mdW5jdGlvbiBvKHQpe1pvbmUuY3VycmVudC5zY2hlZHVsZU1pY3JvVGFz
aygic2NoZWR1bGVNaWNyb3Rhc2siLHQpfWZ1bmN0aW9uIGkodCxlKXtyZXR1cm4gdD09PWV8fCJu
dW1iZXIiPT10eXBlb2YgdCYmIm51bWJlciI9PXR5cGVvZiBlJiZpc05hTih0KSYmaXNOYU4oZSl9
ZnVuY3Rpb24gcyh0KXtpZigic3RyaW5nIj09dHlwZW9mIHQpcmV0dXJuIHQ7aWYobnVsbD09dCly
ZXR1cm4iIit0O2lmKHQub3ZlcnJpZGRlbk5hbWUpcmV0dXJuIiIrdC5vdmVycmlkZGVuTmFtZTtp
Zih0Lm5hbWUpcmV0dXJuIiIrdC5uYW1lO3ZhciBlPXQudG9TdHJpbmcoKTtpZihudWxsPT1lKXJl
dHVybiIiK2U7dmFyIG49ZS5pbmRleE9mKCJcbiIpO3JldHVybi0xPT09bj9lOmUuc3Vic3RyaW5n
KDAsbil9ZnVuY3Rpb24gYSh0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdCYmdC5oYXNPd25Q
cm9wZXJ0eSgiYW5ub3RhdGlvbiIpJiYodD10LmFubm90YXRpb24pLHR9ZnVuY3Rpb24gdSh0LGUp
e2lmKHQ9PT1PYmplY3R8fHQ9PT1TdHJpbmd8fHQ9PT1GdW5jdGlvbnx8dD09PU51bWJlcnx8dD09
PUFycmF5KXRocm93IG5ldyBFcnJvcigiQ2FuIG5vdCB1c2UgbmF0aXZlICIrcyh0KSsiIGFzIGNv
bnN0cnVjdG9yIik7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHQpcmV0dXJuIHQ7aWYoQXJyYXkuaXNB
cnJheSh0KSl7dmFyIG49dCxyPW4ubGVuZ3RoLTEsbz10W3JdO2lmKCJmdW5jdGlvbiIhPXR5cGVv
ZiBvKXRocm93IG5ldyBFcnJvcigiTGFzdCBwb3NpdGlvbiBvZiBDbGFzcyBtZXRob2QgYXJyYXkg
bXVzdCBiZSBGdW5jdGlvbiBpbiBrZXkgIitlKyIgd2FzICciK3MobykrIiciKTtpZihyIT1vLmxl
bmd0aCl0aHJvdyBuZXcgRXJyb3IoIk51bWJlciBvZiBhbm5vdGF0aW9ucyAoIityKyIpIGRvZXMg
bm90IG1hdGNoIG51bWJlciBvZiBhcmd1bWVudHMgKCIrby5sZW5ndGgrIikgaW4gdGhlIGZ1bmN0
aW9uOiAiK3MobykpO2Zvcih2YXIgaT1bXSx1PTAsYz1uLmxlbmd0aC0xO3U8Yzt1Kyspe3ZhciBs
PVtdO2kucHVzaChsKTt2YXIgcD1uW3VdO2lmKEFycmF5LmlzQXJyYXkocCkpZm9yKHZhciBmPTA7
ZjxwLmxlbmd0aDtmKyspbC5wdXNoKGEocFtmXSkpO2Vsc2UiZnVuY3Rpb24iPT10eXBlb2YgcD9s
LnB1c2goYShwKSk6bC5wdXNoKHApfXJldHVybiBTci5kZWZpbmVNZXRhZGF0YSgicGFyYW1ldGVy
cyIsaSxvKSxvfXRocm93IG5ldyBFcnJvcigiT25seSBGdW5jdGlvbiBvciBBcnJheSBpcyBzdXBw
b3J0ZWQgaW4gQ2xhc3MgZGVmaW5pdGlvbiBmb3Iga2V5ICciK2UrIicgaXMgJyIrcyh0KSsiJyIp
fWZ1bmN0aW9uIGModCl7dmFyIGU9dSh0Lmhhc093blByb3BlcnR5KCJjb25zdHJ1Y3RvciIpP3Qu
Y29uc3RydWN0b3I6dm9pZCAwLCJjb25zdHJ1Y3RvciIpLG49ZS5wcm90b3R5cGU7aWYodC5oYXNP
d25Qcm9wZXJ0eSgiZXh0ZW5kcyIpKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdC5leHRlbmRzKXRo
cm93IG5ldyBFcnJvcigiQ2xhc3MgZGVmaW5pdGlvbiAnZXh0ZW5kcycgcHJvcGVydHkgbXVzdCBi
ZSBhIGNvbnN0cnVjdG9yIGZ1bmN0aW9uIHdhczogIitzKHQuZXh0ZW5kcykpO2UucHJvdG90eXBl
PW49T2JqZWN0LmNyZWF0ZSh0LmV4dGVuZHMucHJvdG90eXBlKX1mb3IodmFyIHIgaW4gdCkiZXh0
ZW5kcyIhPT1yJiYicHJvdG90eXBlIiE9PXImJnQuaGFzT3duUHJvcGVydHkocikmJihuW3JdPXUo
dFtyXSxyKSk7dGhpcyYmdGhpcy5hbm5vdGF0aW9ucyBpbnN0YW5jZW9mIEFycmF5JiZTci5kZWZp
bmVNZXRhZGF0YSgiYW5ub3RhdGlvbnMiLHRoaXMuYW5ub3RhdGlvbnMsZSk7dmFyIG89ZS5uYW1l
O3JldHVybiBvJiYiY29uc3RydWN0b3IiIT09b3x8KGUub3ZlcnJpZGRlbk5hbWU9ImNsYXNzIit4
cisrKSxlfWZ1bmN0aW9uIGwodCxlLG4scil7ZnVuY3Rpb24gbyh0KXtpZighU3J8fCFTci5nZXRP
d25NZXRhZGF0YSl0aHJvdyJyZWZsZWN0LW1ldGFkYXRhIHNoaW0gaXMgcmVxdWlyZWQgd2hlbiB1
c2luZyBjbGFzcyBkZWNvcmF0b3JzIjtpZih0aGlzIGluc3RhbmNlb2YgbylyZXR1cm4gaS5jYWxs
KHRoaXMsdCksdGhpczt2YXIgZT1uZXcgbyh0KSxuPSJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzJiZB
cnJheS5pc0FycmF5KHRoaXMuYW5ub3RhdGlvbnMpP3RoaXMuYW5ub3RhdGlvbnM6W107bi5wdXNo
KGUpO3ZhciBzPWZ1bmN0aW9uKHQpe3ZhciBuPVNyLmdldE93bk1ldGFkYXRhKCJhbm5vdGF0aW9u
cyIsdCl8fFtdO3JldHVybiBuLnB1c2goZSksU3IuZGVmaW5lTWV0YWRhdGEoImFubm90YXRpb25z
IixuLHQpLHR9O3JldHVybiBzLmFubm90YXRpb25zPW4scy5DbGFzcz1jLHImJnIocyksc312YXIg
aT1wKFtlXSk7cmV0dXJuIG4mJihvLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKG4ucHJvdG90eXBl
KSksby5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iQCIrdH0sby5hbm5vdGF0
aW9uQ2xzPW8sb31mdW5jdGlvbiBwKHQpe3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgZT10aGlz
LG49W10scj0wO3I8YXJndW1lbnRzLmxlbmd0aDtyKyspbltyXT1hcmd1bWVudHNbcl07dC5mb3JF
YWNoKGZ1bmN0aW9uKHQscil7dmFyIG89bltyXTtpZihBcnJheS5pc0FycmF5KHQpKWVbdFswXV09
dm9pZCAwPT09bz90WzFdOm87ZWxzZSBmb3IodmFyIGkgaW4gdCllW2ldPW8mJm8uaGFzT3duUHJv
cGVydHkoaSk/b1tpXTp0W2ldfSl9fWZ1bmN0aW9uIGYodCxlLG4pe2Z1bmN0aW9uIHIoKXtmdW5j
dGlvbiB0KHQsZSxuKXtmb3IodmFyIHI9U3IuZ2V0T3duTWV0YWRhdGEoInBhcmFtZXRlcnMiLHQp
fHxbXTtyLmxlbmd0aDw9bjspci5wdXNoKG51bGwpO3JldHVybiByW25dPXJbbl18fFtdLHJbbl0u
cHVzaChpKSxTci5kZWZpbmVNZXRhZGF0YSgicGFyYW1ldGVycyIscix0KSx0fWZvcih2YXIgZT1b
XSxuPTA7bjxhcmd1bWVudHMubGVuZ3RoO24rKyllW25dPWFyZ3VtZW50c1tuXTtpZih0aGlzIGlu
c3RhbmNlb2YgcilyZXR1cm4gby5hcHBseSh0aGlzLGUpLHRoaXM7dmFyIGk9bmV3KHIuYmluZC5h
cHBseShyLFt2b2lkIDBdLmNvbmNhdChlKSkpO3JldHVybiB0LmFubm90YXRpb249aSx0fXZhciBv
PXAoZSk7cmV0dXJuIG4mJihyLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKG4ucHJvdG90eXBlKSks
ci5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iQCIrdH0sci5hbm5vdGF0aW9u
Q2xzPXIscn1mdW5jdGlvbiBoKHQsZSxuKXtmdW5jdGlvbiByKCl7Zm9yKHZhciB0PVtdLGU9MDtl
PGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXRbZV09YXJndW1lbnRzW2VdO2lmKHRoaXMgaW5zdGFuY2Vv
ZiByKXJldHVybiBvLmFwcGx5KHRoaXMsdCksdGhpczt2YXIgbj1uZXcoci5iaW5kLmFwcGx5KHIs
W3ZvaWQgMF0uY29uY2F0KHQpKSk7cmV0dXJuIGZ1bmN0aW9uKHQsZSl7dmFyIHI9U3IuZ2V0T3du
TWV0YWRhdGEoInByb3BNZXRhZGF0YSIsdC5jb25zdHJ1Y3Rvcil8fHt9O3JbZV09ci5oYXNPd25Q
cm9wZXJ0eShlKSYmcltlXXx8W10scltlXS51bnNoaWZ0KG4pLFNyLmRlZmluZU1ldGFkYXRhKCJw
cm9wTWV0YWRhdGEiLHIsdC5jb25zdHJ1Y3Rvcil9fXZhciBvPXAoZSk7cmV0dXJuIG4mJihyLnBy
b3RvdHlwZT1PYmplY3QuY3JlYXRlKG4ucHJvdG90eXBlKSksci5wcm90b3R5cGUudG9TdHJpbmc9
ZnVuY3Rpb24oKXtyZXR1cm4iQCIrdH0sci5hbm5vdGF0aW9uQ2xzPXIscn0vKioKKyAqIEBsaWNl
bnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisg
KiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczov
L2FuZ3VsYXIuaW8vbGljZW5zZQorICovCitmdW5jdGlvbiBkKHQpe3JldHVybiB0Ll9fZm9yd2Fy
ZF9yZWZfXz1kLHQudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gcyh0aGlzKCkpfSx0fWZ1bmN0
aW9uIHkodCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQuaGFzT3duUHJvcGVydHkoIl9f
Zm9yd2FyZF9yZWZfXyIpJiZ0Ll9fZm9yd2FyZF9yZWZfXz09PWQ/dCgpOnR9ZnVuY3Rpb24gbSh0
KXtyZXR1cm4gdFtYcl19ZnVuY3Rpb24gZyh0KXtyZXR1cm4gdFtRcl19ZnVuY3Rpb24gdih0KXty
ZXR1cm4gdFtKcl18fF99ZnVuY3Rpb24gXyh0KXtmb3IodmFyIGU9W10sbj0xO248YXJndW1lbnRz
Lmxlbmd0aDtuKyspZVtuLTFdPWFyZ3VtZW50c1tuXTt0LmVycm9yLmFwcGx5KHQsZSl9ZnVuY3Rp
b24gYih0LGUpe3ZhciBuPXQrIiBjYXVzZWQgYnk6ICIrKGUgaW5zdGFuY2VvZiBFcnJvcj9lLm1l
c3NhZ2U6ZSkscj1FcnJvcihuKTtyZXR1cm4gcltRcl09ZSxyfS8qKgorICogQGxpY2Vuc2UKKyAq
IENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxh
ci5pby9saWNlbnNlCisgKi8KK2Z1bmN0aW9uIHcodCl7Zm9yKHZhciBlPVtdLG49MDtuPHQubGVu
Z3RoOysrbil7aWYoZS5pbmRleE9mKHRbbl0pPi0xKXJldHVybiBlLnB1c2godFtuXSksZTtlLnB1
c2godFtuXSl9cmV0dXJuIGV9ZnVuY3Rpb24gQyh0KXtpZih0Lmxlbmd0aD4xKXtyZXR1cm4iICgi
K3codC5zbGljZSgpLnJldmVyc2UoKSkubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBzKHQudG9rZW4p
fSkuam9pbigiIC0+ICIpKyIpIn1yZXR1cm4iIn1mdW5jdGlvbiBFKHQsZSxuLHIpe3ZhciBvPXI/
YigiIixyKTpFcnJvcigpO3JldHVybiBvLmFkZEtleT1PLG8ua2V5cz1bZV0sby5pbmplY3RvcnM9
W3RdLG8uY29uc3RydWN0UmVzb2x2aW5nTWVzc2FnZT1uLG8ubWVzc2FnZT1vLmNvbnN0cnVjdFJl
c29sdmluZ01lc3NhZ2UoKSxvW1FyXT1yLG99ZnVuY3Rpb24gTyh0LGUpe3RoaXMuaW5qZWN0b3Jz
LnB1c2godCksdGhpcy5rZXlzLnB1c2goZSksdGhpcy5tZXNzYWdlPXRoaXMuY29uc3RydWN0UmVz
b2x2aW5nTWVzc2FnZSgpfWZ1bmN0aW9uIHgodCxlKXtyZXR1cm4gRSh0LGUsZnVuY3Rpb24oKXty
ZXR1cm4iTm8gcHJvdmlkZXIgZm9yICIrcyh0aGlzLmtleXNbMF0udG9rZW4pKyIhIitDKHRoaXMu
a2V5cyl9KX1mdW5jdGlvbiBTKHQsZSl7cmV0dXJuIEUodCxlLGZ1bmN0aW9uKCl7cmV0dXJuIkNh
bm5vdCBpbnN0YW50aWF0ZSBjeWNsaWMgZGVwZW5kZW5jeSEiK0ModGhpcy5rZXlzKX0pfWZ1bmN0
aW9uIFAodCxlLG4scil7cmV0dXJuIEUodCxyLGZ1bmN0aW9uKCl7dmFyIHQ9cyh0aGlzLmtleXNb
MF0udG9rZW4pO3JldHVybiBnKHRoaXMpLm1lc3NhZ2UrIjogRXJyb3IgZHVyaW5nIGluc3RhbnRp
YXRpb24gb2YgIit0KyIhIitDKHRoaXMua2V5cykrIi4ifSxlKX1mdW5jdGlvbiBBKHQpe3JldHVy
biBFcnJvcigiSW52YWxpZCBwcm92aWRlciAtIG9ubHkgaW5zdGFuY2VzIG9mIFByb3ZpZGVyIGFu
ZCBUeXBlIGFyZSBhbGxvd2VkLCBnb3Q6ICIrdCl9ZnVuY3Rpb24gVCh0LGUpe2Zvcih2YXIgbj1b
XSxyPTAsbz1lLmxlbmd0aDtyPG87cisrKXt2YXIgaT1lW3JdO2kmJjAhPWkubGVuZ3RoP24ucHVz
aChpLm1hcChzKS5qb2luKCIgIikpOm4ucHVzaCgiPyIpfXJldHVybiBFcnJvcigiQ2Fubm90IHJl
c29sdmUgYWxsIHBhcmFtZXRlcnMgZm9yICciK3ModCkrIicoIituLmpvaW4oIiwgIikrIikuIE1h
a2Ugc3VyZSB0aGF0IGFsbCB0aGUgcGFyYW1ldGVycyBhcmUgZGVjb3JhdGVkIHdpdGggSW5qZWN0
IG9yIGhhdmUgdmFsaWQgdHlwZSBhbm5vdGF0aW9ucyBhbmQgdGhhdCAnIitzKHQpKyInIGlzIGRl
Y29yYXRlZCB3aXRoIEluamVjdGFibGUuIil9ZnVuY3Rpb24gayh0KXtyZXR1cm4gRXJyb3IoIklu
ZGV4ICIrdCsiIGlzIG91dC1vZi1ib3VuZHMuIil9ZnVuY3Rpb24gVih0LGUpe3JldHVybiBFcnJv
cigiQ2Fubm90IG1peCBtdWx0aSBwcm92aWRlcnMgYW5kIHJlZ3VsYXIgcHJvdmlkZXJzLCBnb3Q6
ICIrdCsiICIrZSl9ZnVuY3Rpb24gTSh0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdH1mdW5j
dGlvbiBOKHQpe3JldHVybiB0P3QubWFwKGZ1bmN0aW9uKHQpe3ZhciBlPXQudHlwZSxuPWUuYW5u
b3RhdGlvbkNscyxyPXQuYXJncz90LmFyZ3M6W107cmV0dXJuIG5ldyhuLmJpbmQuYXBwbHkobixb
dm9pZCAwXS5jb25jYXQocikpKX0pOltdfWZ1bmN0aW9uIGoodCl7dmFyIGU9T2JqZWN0LmdldFBy
b3RvdHlwZU9mKHQucHJvdG90eXBlKTtyZXR1cm4oZT9lLmNvbnN0cnVjdG9yOm51bGwpfHxPYmpl
Y3R9ZnVuY3Rpb24gUih0KXt2YXIgZSxuO2lmKHQudXNlQ2xhc3Mpe3ZhciByPXkodC51c2VDbGFz
cyk7ZT1hby5mYWN0b3J5KHIpLG49VShyKX1lbHNlIHQudXNlRXhpc3Rpbmc/KGU9ZnVuY3Rpb24o
dCl7cmV0dXJuIHR9LG49W3VvLmZyb21LZXkoWXIuZ2V0KHQudXNlRXhpc3RpbmcpKV0pOnQudXNl
RmFjdG9yeT8oZT10LnVzZUZhY3Rvcnksbj1MKHQudXNlRmFjdG9yeSx0LmRlcHMpKTooZT1mdW5j
dGlvbigpe3JldHVybiB0LnVzZVZhbHVlfSxuPWNvKTtyZXR1cm4gbmV3IHBvKGUsbil9ZnVuY3Rp
b24gRCh0KXtyZXR1cm4gbmV3IGxvKFlyLmdldCh0LnByb3ZpZGUpLFtSKHQpXSx0Lm11bHRpfHwh
MSl9ZnVuY3Rpb24gSSh0KXt2YXIgZT1IKHQsW10pLG49ZS5tYXAoRCkscj1GKG4sbmV3IE1hcCk7
cmV0dXJuIEFycmF5LmZyb20oci52YWx1ZXMoKSl9ZnVuY3Rpb24gRih0LGUpe2Zvcih2YXIgbj0w
O248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dLG89ZS5nZXQoci5rZXkuaWQpO2lmKG8pe2lmKHIu
bXVsdGlQcm92aWRlciE9PW8ubXVsdGlQcm92aWRlcil0aHJvdyBWKG8scik7aWYoci5tdWx0aVBy
b3ZpZGVyKWZvcih2YXIgaT0wO2k8ci5yZXNvbHZlZEZhY3Rvcmllcy5sZW5ndGg7aSsrKW8ucmVz
b2x2ZWRGYWN0b3JpZXMucHVzaChyLnJlc29sdmVkRmFjdG9yaWVzW2ldKTtlbHNlIGUuc2V0KHIu
a2V5LmlkLHIpfWVsc2V7dmFyIHM9dm9pZCAwO3M9ci5tdWx0aVByb3ZpZGVyP25ldyBsbyhyLmtl
eSxyLnJlc29sdmVkRmFjdG9yaWVzLnNsaWNlKCksci5tdWx0aVByb3ZpZGVyKTpyLGUuc2V0KHIu
a2V5LmlkLHMpfX1yZXR1cm4gZX1mdW5jdGlvbiBIKHQsZSl7cmV0dXJuIHQuZm9yRWFjaChmdW5j
dGlvbih0KXtpZih0IGluc3RhbmNlb2Ygbm8pZS5wdXNoKHtwcm92aWRlOnQsdXNlQ2xhc3M6dH0p
O2Vsc2UgaWYodCYmIm9iamVjdCI9PXR5cGVvZiB0JiZ2b2lkIDAhPT10LnByb3ZpZGUpZS5wdXNo
KHQpO2Vsc2V7aWYoISh0IGluc3RhbmNlb2YgQXJyYXkpKXRocm93IEEodCk7SCh0LGUpfX0pLGV9
ZnVuY3Rpb24gTCh0LGUpe2lmKGUpe3ZhciBuPWUubWFwKGZ1bmN0aW9uKHQpe3JldHVyblt0XX0p
O3JldHVybiBlLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gQih0LGUsbil9KX1yZXR1cm4gVSh0KX1m
dW5jdGlvbiBVKHQpe3ZhciBlPWFvLnBhcmFtZXRlcnModCk7aWYoIWUpcmV0dXJuW107aWYoZS5z
b21lKGZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10fSkpdGhyb3cgVCh0LGUpO3JldHVybiBlLm1h
cChmdW5jdGlvbihuKXtyZXR1cm4gQih0LG4sZSl9KX1mdW5jdGlvbiBCKHQsZSxuKXt2YXIgcj1u
dWxsLG89ITE7aWYoIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGUgaW5zdGFuY2VvZiBIcj9HKGUu
dG9rZW4sbyxudWxsKTpHKGUsbyxudWxsKTtmb3IodmFyIGk9bnVsbCxzPTA7czxlLmxlbmd0aDsr
K3Mpe3ZhciBhPWVbc107YSBpbnN0YW5jZW9mIG5vP3I9YTphIGluc3RhbmNlb2YgSHI/cj1hLnRv
a2VuOmEgaW5zdGFuY2VvZiBMcj9vPSEwOmEgaW5zdGFuY2VvZiBCcnx8YSBpbnN0YW5jZW9mIEdy
P2k9YTphIGluc3RhbmNlb2YgX3ImJihyPWEpfWlmKG51bGwhPShyPXkocikpKXJldHVybiBHKHIs
byxpKTt0aHJvdyBUKHQsbil9ZnVuY3Rpb24gRyh0LGUsbil7cmV0dXJuIG5ldyB1byhZci5nZXQo
dCksZSxuKX1mdW5jdGlvbiB6KHQsZSl7Zm9yKHZhciBuPW5ldyBBcnJheSh0Ll9wcm92aWRlcnMu
bGVuZ3RoKSxyPTA7cjx0Ll9wcm92aWRlcnMubGVuZ3RoOysrciluW3JdPWUodC5nZXRQcm92aWRl
ckF0SW5kZXgocikpO3JldHVybiBufS8qKgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29n
bGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisg
Ki8KKy8qKgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8KK2Z1bmN0aW9uIHEodCl7
cmV0dXJuISF0JiYiZnVuY3Rpb24iPT10eXBlb2YgdC50aGVufWZ1bmN0aW9uIFoodCl7cmV0dXJu
ISF0JiYiZnVuY3Rpb24iPT10eXBlb2YgdC5zdWJzY3JpYmV9ZnVuY3Rpb24gVygpe3JldHVybiIi
K0soKStLKCkrSygpfWZ1bmN0aW9uIEsoKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSg5NytN
YXRoLmZsb29yKDI1Kk1hdGgucmFuZG9tKCkpKX1mdW5jdGlvbiBYKCl7dGhyb3cgbmV3IEVycm9y
KCJSdW50aW1lIGNvbXBpbGVyIGlzIG5vdCBsb2FkZWQiKX0vKioKKyAqIEBsaWNlbnNlCisgKiBD
b3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIu
aW8vbGljZW5zZQorICovCitmdW5jdGlvbiBRKHQpe3ZhciBlPUVycm9yKCJObyBjb21wb25lbnQg
ZmFjdG9yeSBmb3VuZCBmb3IgIitzKHQpKyIuIERpZCB5b3UgYWRkIGl0IHRvIEBOZ01vZHVsZS5l
bnRyeUNvbXBvbmVudHM/Iik7cmV0dXJuIGVbVG9dPXQsZX1mdW5jdGlvbiBKKCl7dmFyIHQ9RXIu
d3RmO3JldHVybiEoIXR8fCEoTW89dC50cmFjZSkpJiYoTm89TW8uZXZlbnRzLCEwKX1mdW5jdGlv
biAkKHQsZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPW51bGwpLE5vLmNyZWF0ZVNjb3BlKHQsZSl9
ZnVuY3Rpb24gWSh0LGUpe3JldHVybiBNby5sZWF2ZVNjb3BlKHQsZSksZX1mdW5jdGlvbiB0dCh0
LGUpe3JldHVybiBudWxsfWZ1bmN0aW9uIGV0KHQpe1hvPXR9ZnVuY3Rpb24gbnQoKXtpZihKbyl0
aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBlbmFibGUgcHJvZCBtb2RlIGFmdGVyIHBsYXRmb3JtIHNl
dHVwLiIpO1FvPSExfWZ1bmN0aW9uIHJ0KCl7cmV0dXJuIEpvPSEwLFFvfWZ1bmN0aW9uIG90KHQp
e2lmKFdvJiYhV28uZGVzdHJveWVkJiYhV28uaW5qZWN0b3IuZ2V0KCRvLCExKSl0aHJvdyBuZXcg
RXJyb3IoIlRoZXJlIGNhbiBiZSBvbmx5IG9uZSBwbGF0Zm9ybS4gRGVzdHJveSB0aGUgcHJldmlv
dXMgb25lIHRvIGNyZWF0ZSBhIG5ldyBvbmUuIik7V289dC5nZXQodGkpO3ZhciBlPXQuZ2V0KHdv
LG51bGwpO3JldHVybiBlJiZlLmZvckVhY2goZnVuY3Rpb24odCl7cmV0dXJuIHQoKX0pLFdvfWZ1
bmN0aW9uIGl0KHQsZSxuKXt2b2lkIDA9PT1uJiYobj1bXSk7dmFyIHI9bmV3IF9yKCJQbGF0Zm9y
bTogIitlKTtyZXR1cm4gZnVuY3Rpb24oZSl7dm9pZCAwPT09ZSYmKGU9W10pO3ZhciBvPWF0KCk7
cmV0dXJuIG8mJiFvLmluamVjdG9yLmdldCgkbywhMSl8fCh0P3Qobi5jb25jYXQoZSkuY29uY2F0
KHtwcm92aWRlOnIsdXNlVmFsdWU6ITB9KSk6b3QoaG8ucmVzb2x2ZUFuZENyZWF0ZShuLmNvbmNh
dChlKS5jb25jYXQoe3Byb3ZpZGU6cix1c2VWYWx1ZTohMH0pKSkpLHN0KHIpfX1mdW5jdGlvbiBz
dCh0KXt2YXIgZT1hdCgpO2lmKCFlKXRocm93IG5ldyBFcnJvcigiTm8gcGxhdGZvcm0gZXhpc3Rz
ISIpO2lmKCFlLmluamVjdG9yLmdldCh0LG51bGwpKXRocm93IG5ldyBFcnJvcigiQSBwbGF0Zm9y
bSB3aXRoIGEgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24gaGFzIGJlZW4gY3JlYXRlZC4gUGxlYXNl
IGRlc3Ryb3kgaXQgZmlyc3QuIik7cmV0dXJuIGV9ZnVuY3Rpb24gYXQoKXtyZXR1cm4gV28mJiFX
by5kZXN0cm95ZWQ/V286bnVsbH1mdW5jdGlvbiB1dCh0LGUpe3RyeXt2YXIgbj1lKCk7cmV0dXJu
IHEobik/bi5jYXRjaChmdW5jdGlvbihlKXt0aHJvdyB0LmhhbmRsZUVycm9yKGUpLGV9KTpufWNh
dGNoKGUpe3Rocm93IHQuaGFuZGxlRXJyb3IoZSksZX19ZnVuY3Rpb24gY3QodCxlKXt2YXIgbj10
LmluZGV4T2YoZSk7bj4tMSYmdC5zcGxpY2UobiwxKX1mdW5jdGlvbiBsdCh0KXtyZXR1cm4gdC5y
ZWR1Y2UoZnVuY3Rpb24odCxlKXt2YXIgbj1BcnJheS5pc0FycmF5KGUpP2x0KGUpOmU7cmV0dXJu
IHQuY29uY2F0KG4pfSxbXSl9ZnVuY3Rpb24gcHQodCxlLG4pe2lmKCF0KXRocm93IG5ldyBFcnJv
cigiQ2Fubm90IGZpbmQgJyIrbisiJyBpbiAnIitlKyInIik7cmV0dXJuIHR9ZnVuY3Rpb24gZnQo
dCxlLG4pe3QuY2hpbGROb2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3QgaW5zdGFuY2VvZiB3aSYm
KGUodCkmJm4ucHVzaCh0KSxmdCh0LGUsbikpfSl9ZnVuY3Rpb24gaHQodCxlLG4pe3QgaW5zdGFu
Y2VvZiB3aSYmdC5jaGlsZE5vZGVzLmZvckVhY2goZnVuY3Rpb24odCl7ZSh0KSYmbi5wdXNoKHQp
LHQgaW5zdGFuY2VvZiB3aSYmaHQodCxlLG4pfSl9ZnVuY3Rpb24gZHQodCl7cmV0dXJuIENpLmdl
dCh0KXx8bnVsbH1mdW5jdGlvbiB5dCh0KXtDaS5zZXQodC5uYXRpdmVOb2RlLHQpfWZ1bmN0aW9u
IG10KHQpe0NpLmRlbGV0ZSh0Lm5hdGl2ZU5vZGUpfS8qKgorICogQGxpY2Vuc2UKKyAqIENvcHly
aWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9s
aWNlbnNlCisgKi8KK2Z1bmN0aW9uIGd0KHQsZSl7dmFyIG49dnQodCkscj12dChlKTtpZihuJiZy
KXJldHVybiBfdCh0LGUsZ3QpO3ZhciBvPXQmJigib2JqZWN0Ij09dHlwZW9mIHR8fCJmdW5jdGlv
biI9PXR5cGVvZiB0KSxzPWUmJigib2JqZWN0Ij09dHlwZW9mIGV8fCJmdW5jdGlvbiI9PXR5cGVv
ZiBlKTtyZXR1cm4hKG58fCFvfHxyfHwhcyl8fGkodCxlKX1mdW5jdGlvbiB2dCh0KXtyZXR1cm4h
IXd0KHQpJiYoQXJyYXkuaXNBcnJheSh0KXx8ISh0IGluc3RhbmNlb2YgTWFwKSYmcigpaW4gdCl9
ZnVuY3Rpb24gX3QodCxlLG4pe2Zvcih2YXIgbz10W3IoKV0oKSxpPWVbcigpXSgpOzspe3ZhciBz
PW8ubmV4dCgpLGE9aS5uZXh0KCk7aWYocy5kb25lJiZhLmRvbmUpcmV0dXJuITA7aWYocy5kb25l
fHxhLmRvbmUpcmV0dXJuITE7aWYoIW4ocy52YWx1ZSxhLnZhbHVlKSlyZXR1cm4hMX19ZnVuY3Rp
b24gYnQodCxlKXtpZihBcnJheS5pc0FycmF5KHQpKWZvcih2YXIgbj0wO248dC5sZW5ndGg7bisr
KWUodFtuXSk7ZWxzZSBmb3IodmFyIG89dFtyKCldKCksaT12b2lkIDA7IShpPW8ubmV4dCgpKS5k
b25lOyllKGkudmFsdWUpfWZ1bmN0aW9uIHd0KHQpe3JldHVybiBudWxsIT09dCYmKCJmdW5jdGlv
biI9PXR5cGVvZiB0fHwib2JqZWN0Ij09dHlwZW9mIHQpfWZ1bmN0aW9uIEN0KHQsZSxuKXt2YXIg
cj10LnByZXZpb3VzSW5kZXg7aWYobnVsbD09PXIpcmV0dXJuIHI7dmFyIG89MDtyZXR1cm4gbiYm
cjxuLmxlbmd0aCYmKG89bltyXSkscitlK299ZnVuY3Rpb24gRXQodCl7cmV0dXJuIHQubmFtZXx8
dHlwZW9mIHR9LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLworLyoqCisgKiBA
bGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisg
KgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0
cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLworZnVuY3Rpb24gT3QoKXtyZXR1cm4gYW99Lyoq
CisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUg
YXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLworZnVuY3Rpb24geHQodCxlKXtyZXR1
cm4gdC5ub2Rlc1tlXX1mdW5jdGlvbiBTdCh0LGUpe3JldHVybiB0Lm5vZGVzW2VdfWZ1bmN0aW9u
IFB0KHQsZSl7cmV0dXJuIHQubm9kZXNbZV19ZnVuY3Rpb24gQXQodCxlKXtyZXR1cm4gdC5ub2Rl
c1tlXX1mdW5jdGlvbiBUdCh0LGUpe3JldHVybiB0Lm5vZGVzW2VdfS8qKgorICogQGxpY2Vuc2UK
KyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5n
dWxhci5pby9saWNlbnNlCisgKi8KK2Z1bmN0aW9uIGt0KHQsZSxuLHIpe3ZhciBvPSJFeHByZXNz
aW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yOiBFeHByZXNzaW9uIGhhcyBjaGFu
Z2VkIGFmdGVyIGl0IHdhcyBjaGVja2VkLiBQcmV2aW91cyB2YWx1ZTogJyIrZSsiJy4gQ3VycmVu
dCB2YWx1ZTogJyIrbisiJy4iO3JldHVybiByJiYobys9IiBJdCBzZWVtcyBsaWtlIHRoZSB2aWV3
IGhhcyBiZWVuIGNyZWF0ZWQgYWZ0ZXIgaXRzIHBhcmVudCBhbmQgaXRzIGNoaWxkcmVuIGhhdmUg
YmVlbiBkaXJ0eSBjaGVja2VkLiBIYXMgaXQgYmVlbiBjcmVhdGVkIGluIGEgY2hhbmdlIGRldGVj
dGlvbiBob29rID8iKSxNdChvLHQpfWZ1bmN0aW9uIFZ0KHQsZSl7cmV0dXJuIHQgaW5zdGFuY2Vv
ZiBFcnJvcnx8KHQ9bmV3IEVycm9yKHQudG9TdHJpbmcoKSkpLE50KHQsZSksdH1mdW5jdGlvbiBN
dCh0LGUpe3ZhciBuPW5ldyBFcnJvcih0KTtyZXR1cm4gTnQobixlKSxufWZ1bmN0aW9uIE50KHQs
ZSl7dFtYcl09ZSx0W0pyXT1lLmxvZ0Vycm9yLmJpbmQoZSl9ZnVuY3Rpb24ganQodCl7cmV0dXJu
ISFtKHQpfWZ1bmN0aW9uIFJ0KHQpe3JldHVybiBuZXcgRXJyb3IoIlZpZXdEZXN0cm95ZWRFcnJv
cjogQXR0ZW1wdCB0byB1c2UgYSBkZXN0cm95ZWQgdmlldzogIit0KX1mdW5jdGlvbiBEdCh0KXt2
YXIgZT1LaS5nZXQodCk7cmV0dXJuIGV8fChlPXModCkrIl8iK0tpLnNpemUsS2kuc2V0KHQsZSkp
LGV9ZnVuY3Rpb24gSXQodCl7cmV0dXJue2lkOlhpLHN0eWxlczp0LnN0eWxlcyxlbmNhcHN1bGF0
aW9uOnQuZW5jYXBzdWxhdGlvbixkYXRhOnQuZGF0YX19ZnVuY3Rpb24gRnQodCl7aWYodCYmdC5p
ZD09PVhpKXt2YXIgZT1udWxsIT10LmVuY2Fwc3VsYXRpb24mJnQuZW5jYXBzdWxhdGlvbiE9PURy
Lk5vbmV8fHQuc3R5bGVzLmxlbmd0aHx8T2JqZWN0LmtleXModC5kYXRhKS5sZW5ndGg7dC5pZD1l
PyJjIitKaSsrOlFpfXJldHVybiB0JiZ0LmlkPT09UWkmJih0PW51bGwpLHR8fG51bGx9ZnVuY3Rp
b24gSHQodCxlLG4scil7dmFyIG89dC5vbGRWYWx1ZXM7cmV0dXJuISghKDEmdC5zdGF0ZSkmJmko
b1tlLmJpbmRpbmdJbmRleCtuXSxyKSl9ZnVuY3Rpb24gTHQodCxlLG4scil7cmV0dXJuISFIdCh0
LGUsbixyKSYmKHQub2xkVmFsdWVzW2UuYmluZGluZ0luZGV4K25dPXIsITApfWZ1bmN0aW9uIFV0
KHQsZSxuLHIpe3ZhciBvPXQub2xkVmFsdWVzW2UuYmluZGluZ0luZGV4K25dO2lmKDEmdC5zdGF0
ZXx8IWd0KG8scikpdGhyb3cga3QoWmkuY3JlYXRlRGVidWdDb250ZXh0KHQsZS5pbmRleCksbyxy
LDAhPSgxJnQuc3RhdGUpKX1mdW5jdGlvbiBCdCh0KXtmb3IodmFyIGU9dDtlOykyJmUuZGVmLmZs
YWdzJiYoZS5zdGF0ZXw9MiksZT1lLnZpZXdDb250YWluZXJQYXJlbnR8fGUucGFyZW50fWZ1bmN0
aW9uIEd0KHQsZSxuLHIpe3JldHVybiBCdCgxNjc3NzIxNiZ0LmRlZi5ub2Rlc1tlXS5mbGFncz9T
dCh0LGUpLmNvbXBvbmVudFZpZXc6dCksWmkuaGFuZGxlRXZlbnQodCxlLG4scil9ZnVuY3Rpb24g
enQodCl7aWYodC5wYXJlbnQpe3JldHVybiBTdCh0LnBhcmVudCx0LnBhcmVudE5vZGVEZWYuaW5k
ZXgpfXJldHVybiBudWxsfWZ1bmN0aW9uIHF0KHQpe3JldHVybiB0LnBhcmVudD90LnBhcmVudE5v
ZGVEZWYucGFyZW50Om51bGx9ZnVuY3Rpb24gWnQodCxlKXtzd2l0Y2goMTAwNjczNTM1JmUuZmxh
Z3Mpe2Nhc2UgMTpyZXR1cm4gU3QodCxlLmluZGV4KS5yZW5kZXJFbGVtZW50O2Nhc2UgMjpyZXR1
cm4geHQodCxlLmluZGV4KS5yZW5kZXJUZXh0fX1mdW5jdGlvbiBXdCh0LGUpe3JldHVybiB0P3Qr
IjoiK2U6ZX1mdW5jdGlvbiBLdCh0KXtyZXR1cm4hIXQucGFyZW50JiYhISgxNjM4NCZ0LnBhcmVu
dE5vZGVEZWYuZmxhZ3MpfWZ1bmN0aW9uIFh0KHQpe3JldHVybiEoIXQucGFyZW50fHwxNjM4NCZ0
LnBhcmVudE5vZGVEZWYuZmxhZ3MpfWZ1bmN0aW9uIFF0KHQpe3JldHVybiAxPDx0JTMyfWZ1bmN0
aW9uIEp0KHQpe3ZhciBlPXt9LG49MCxyPXt9O3JldHVybiB0JiZ0LmZvckVhY2goZnVuY3Rpb24o
dCl7dmFyIG89dFswXSxpPXRbMV07Im51bWJlciI9PXR5cGVvZiBvPyhlW29dPWksbnw9UXQobykp
OnJbb109aX0pLHttYXRjaGVkUXVlcmllczplLHJlZmVyZW5jZXM6cixtYXRjaGVkUXVlcnlJZHM6
bn19ZnVuY3Rpb24gJHQodCxlLG4pe3ZhciByPW4ucmVuZGVyUGFyZW50O3JldHVybiByPzA9PSgx
JnIuZmxhZ3MpfHwwPT0oMTY3NzcyMTYmci5mbGFncyl8fHIuZWxlbWVudC5jb21wb25lbnRSZW5k
ZXJlclR5cGUmJnIuZWxlbWVudC5jb21wb25lbnRSZW5kZXJlclR5cGUuZW5jYXBzdWxhdGlvbj09
PURyLk5hdGl2ZT9TdCh0LG4ucmVuZGVyUGFyZW50LmluZGV4KS5yZW5kZXJFbGVtZW50OnZvaWQg
MDplfWZ1bmN0aW9uIFl0KHQpe3ZhciBlPSRpLmdldCh0KTtyZXR1cm4gZXx8KGU9dChmdW5jdGlv
bigpe3JldHVybiBXaX0pLGUuZmFjdG9yeT10LCRpLnNldCh0LGUpKSxlfWZ1bmN0aW9uIHRlKHQp
e3ZhciBlPVtdO3JldHVybiBlZSh0LDAsdm9pZCAwLHZvaWQgMCxlKSxlfWZ1bmN0aW9uIGVlKHQs
ZSxuLHIsbyl7Mz09PWUmJihuPXQucmVuZGVyZXIucGFyZW50Tm9kZShadCh0LHQuZGVmLmxhc3RS
ZW5kZXJSb290Tm9kZSkpKSxuZSh0LGUsMCx0LmRlZi5ub2Rlcy5sZW5ndGgtMSxuLHIsbyl9ZnVu
Y3Rpb24gbmUodCxlLG4scixvLGkscyl7Zm9yKHZhciBhPW47YTw9cjthKyspe3ZhciB1PXQuZGVm
Lm5vZGVzW2FdOzcmdS5mbGFncyYmb2UodCx1LGUsbyxpLHMpLGErPXUuY2hpbGRDb3VudH19ZnVu
Y3Rpb24gcmUodCxlLG4scixvLGkpe2Zvcih2YXIgcz10O3MmJiFLdChzKTspcz1zLnBhcmVudDtm
b3IodmFyIGE9cy5wYXJlbnQsdT1xdChzKSxjPXUuaW5kZXgrMSxsPXUuaW5kZXgrdS5jaGlsZENv
dW50LHA9YztwPD1sO3ArKyl7dmFyIGY9YS5kZWYubm9kZXNbcF07Zi5uZ0NvbnRlbnRJbmRleD09
PWUmJm9lKGEsZixuLHIsbyxpKSxwKz1mLmNoaWxkQ291bnR9aWYoIWEucGFyZW50KXt2YXIgaD10
LnJvb3QucHJvamVjdGFibGVOb2Rlc1tlXTtpZihoKWZvcih2YXIgcD0wO3A8aC5sZW5ndGg7cCsr
KWllKHQsaFtwXSxuLHIsbyxpKX19ZnVuY3Rpb24gb2UodCxlLG4scixvLGkpe2lmKDQmZS5mbGFn
cylyZSh0LGUubmdDb250ZW50LmluZGV4LG4scixvLGkpO2Vsc2V7dmFyIHM9WnQodCxlKTtpZigz
PT09biYmMTY3NzcyMTYmZS5mbGFncyYmNDgmZS5iaW5kaW5nRmxhZ3Mpe2lmKDE2JmUuYmluZGlu
Z0ZsYWdzJiZpZSh0LHMsbixyLG8saSksMzImZS5iaW5kaW5nRmxhZ3Mpe3ZhciBhPVN0KHQsZS5p
bmRleCkuY29tcG9uZW50VmlldztpZShhLHMsbixyLG8saSl9fWVsc2UgaWUodCxzLG4scixvLGkp
O2lmKDgzODg2MDgmZS5mbGFncylmb3IodmFyIHU9U3QodCxlLmluZGV4KS52aWV3Q29udGFpbmVy
Ll9lbWJlZGRlZFZpZXdzLGM9MDtjPHUubGVuZ3RoO2MrKyllZSh1W2NdLG4scixvLGkpOzEmZS5m
bGFncyYmIWUuZWxlbWVudC5uYW1lJiZuZSh0LG4sZS5pbmRleCsxLGUuaW5kZXgrZS5jaGlsZENv
dW50LHIsbyxpKX19ZnVuY3Rpb24gaWUodCxlLG4scixvLGkpe3ZhciBzPXQucmVuZGVyZXI7c3dp
dGNoKG4pe2Nhc2UgMTpzLmFwcGVuZENoaWxkKHIsZSk7YnJlYWs7Y2FzZSAyOnMuaW5zZXJ0QmVm
b3JlKHIsZSxvKTticmVhaztjYXNlIDM6cy5yZW1vdmVDaGlsZChyLGUpO2JyZWFrO2Nhc2UgMDpp
LnB1c2goZSl9fWZ1bmN0aW9uIHNlKHQpe2lmKCI6Ij09PXRbMF0pe3ZhciBlPXQubWF0Y2goWWkp
O3JldHVybltlWzFdLGVbMl1dfXJldHVyblsiIix0XX1mdW5jdGlvbiBhZSh0KXtmb3IodmFyIGU9
MCxuPTA7bjx0Lmxlbmd0aDtuKyspZXw9dFtuXS5mbGFncztyZXR1cm4gZX0vKioKKyAqIEBsaWNl
bnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisg
KiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczov
L2FuZ3VsYXIuaW8vbGljZW5zZQorICovCitmdW5jdGlvbiB1ZSh0LGUsbixyLG8saSl7dHw9MTt2
YXIgcz1KdChlKSxhPXMubWF0Y2hlZFF1ZXJpZXMsdT1zLnJlZmVyZW5jZXM7cmV0dXJue2luZGV4
Oi0xLHBhcmVudDpudWxsLHJlbmRlclBhcmVudDpudWxsLGJpbmRpbmdJbmRleDotMSxvdXRwdXRJ
bmRleDotMSxmbGFnczp0LGNoaWxkRmxhZ3M6MCxkaXJlY3RDaGlsZEZsYWdzOjAsY2hpbGRNYXRj
aGVkUXVlcmllczowLG1hdGNoZWRRdWVyaWVzOmEsbWF0Y2hlZFF1ZXJ5SWRzOnMubWF0Y2hlZFF1
ZXJ5SWRzLHJlZmVyZW5jZXM6dSxuZ0NvbnRlbnRJbmRleDpuLGNoaWxkQ291bnQ6cixiaW5kaW5n
czpbXSxiaW5kaW5nRmxhZ3M6MCxvdXRwdXRzOltdLGVsZW1lbnQ6e25zOm51bGwsbmFtZTpudWxs
LGF0dHJzOm51bGwsdGVtcGxhdGU6aT9ZdChpKTpudWxsLGNvbXBvbmVudFByb3ZpZGVyOm51bGws
Y29tcG9uZW50VmlldzpudWxsLGNvbXBvbmVudFJlbmRlcmVyVHlwZTpudWxsLHB1YmxpY1Byb3Zp
ZGVyczpudWxsLGFsbFByb3ZpZGVyczpudWxsLGhhbmRsZUV2ZW50Om98fFdpfSxwcm92aWRlcjpu
dWxsLHRleHQ6bnVsbCxxdWVyeTpudWxsLG5nQ29udGVudDpudWxsfX1mdW5jdGlvbiBjZSh0LGUs
bixyLG8saSxzLGEsdSxjLGwpe3ZvaWQgMD09PWkmJihpPVtdKSx1fHwodT1XaSk7dmFyIHA9SnQo
ZSksZj1wLm1hdGNoZWRRdWVyaWVzLGg9cC5yZWZlcmVuY2VzLGQ9cC5tYXRjaGVkUXVlcnlJZHMs
eT1udWxsLG09bnVsbDtvJiYoTj1zZShvKSx5PU5bMF0sbT1OWzFdKSxzPXN8fFtdO2Zvcih2YXIg
Zz1uZXcgQXJyYXkocy5sZW5ndGgpLHY9MDt2PHMubGVuZ3RoO3YrKyl7dmFyIF89c1t2XSxiPV9b
MF0sdz1fWzFdLEM9X1syXSxFPXNlKHcpLE89RVswXSx4PUVbMV0sUz12b2lkIDAsUD12b2lkIDA7
c3dpdGNoKDE1JmIpe2Nhc2UgNDpQPUM7YnJlYWs7Y2FzZSAxOmNhc2UgODpTPUN9Z1t2XT17Zmxh
Z3M6YixuczpPLG5hbWU6eCxub25NaW5pZmllZE5hbWU6eCxzZWN1cml0eUNvbnRleHQ6UyxzdWZm
aXg6UH19YT1hfHxbXTtmb3IodmFyIEE9bmV3IEFycmF5KGEubGVuZ3RoKSx2PTA7djxhLmxlbmd0
aDt2Kyspe3ZhciBUPWFbdl0saz1UWzBdLFY9VFsxXTtBW3ZdPXt0eXBlOjAsdGFyZ2V0OmssZXZl
bnROYW1lOlYscHJvcE5hbWU6bnVsbH19aT1pfHxbXTt2YXIgTT1pLm1hcChmdW5jdGlvbih0KXt2
YXIgZT10WzBdLG49dFsxXSxyPXNlKGUpO3JldHVybltyWzBdLHJbMV0sbl19KTtyZXR1cm4gbD1G
dChsKSxjJiYodHw9MTY3NzcyMTYpLHR8PTEse2luZGV4Oi0xLHBhcmVudDpudWxsLHJlbmRlclBh
cmVudDpudWxsLGJpbmRpbmdJbmRleDotMSxvdXRwdXRJbmRleDotMSxmbGFnczp0LGNoaWxkRmxh
Z3M6MCxkaXJlY3RDaGlsZEZsYWdzOjAsY2hpbGRNYXRjaGVkUXVlcmllczowLG1hdGNoZWRRdWVy
aWVzOmYsbWF0Y2hlZFF1ZXJ5SWRzOmQscmVmZXJlbmNlczpoLG5nQ29udGVudEluZGV4Om4sY2hp
bGRDb3VudDpyLGJpbmRpbmdzOmcsYmluZGluZ0ZsYWdzOmFlKGcpLG91dHB1dHM6QSxlbGVtZW50
Ontuczp5LG5hbWU6bSxhdHRyczpNLHRlbXBsYXRlOm51bGwsY29tcG9uZW50UHJvdmlkZXI6bnVs
bCxjb21wb25lbnRWaWV3OmN8fG51bGwsY29tcG9uZW50UmVuZGVyZXJUeXBlOmwscHVibGljUHJv
dmlkZXJzOm51bGwsYWxsUHJvdmlkZXJzOm51bGwsaGFuZGxlRXZlbnQ6dXx8V2l9LHByb3ZpZGVy
Om51bGwsdGV4dDpudWxsLHF1ZXJ5Om51bGwsbmdDb250ZW50Om51bGx9O3ZhciBOfWZ1bmN0aW9u
IGxlKHQsZSxuKXt2YXIgcixvPW4uZWxlbWVudCxpPXQucm9vdC5zZWxlY3Rvck9yTm9kZSxzPXQu
cmVuZGVyZXI7aWYodC5wYXJlbnR8fCFpKXtyPW8ubmFtZT9zLmNyZWF0ZUVsZW1lbnQoby5uYW1l
LG8ubnMpOnMuY3JlYXRlQ29tbWVudCgiIik7dmFyIGE9JHQodCxlLG4pO2EmJnMuYXBwZW5kQ2hp
bGQoYSxyKX1lbHNlIHI9cy5zZWxlY3RSb290RWxlbWVudChpKTtpZihvLmF0dHJzKWZvcih2YXIg
dT0wO3U8by5hdHRycy5sZW5ndGg7dSsrKXt2YXIgYz1vLmF0dHJzW3VdLGw9Y1swXSxwPWNbMV0s
Zj1jWzJdO3Muc2V0QXR0cmlidXRlKHIscCxmLGwpfXJldHVybiByfWZ1bmN0aW9uIHBlKHQsZSxu
LHIpe2Zvcih2YXIgbz0wO288bi5vdXRwdXRzLmxlbmd0aDtvKyspe3ZhciBpPW4ub3V0cHV0c1tv
XSxzPWZlKHQsbi5pbmRleCxXdChpLnRhcmdldCxpLmV2ZW50TmFtZSkpLGE9aS50YXJnZXQsdT10
OyJjb21wb25lbnQiPT09aS50YXJnZXQmJihhPW51bGwsdT1lKTt2YXIgYz11LnJlbmRlcmVyLmxp
c3RlbihhfHxyLGkuZXZlbnROYW1lLHMpO3QuZGlzcG9zYWJsZXNbbi5vdXRwdXRJbmRleCtvXT1j
fX1mdW5jdGlvbiBmZSh0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiBHdCh0LGUsbixy
KX19ZnVuY3Rpb24gaGUodCxlLG4scixvLGkscyxhLHUsYyxsLHApe3ZhciBmPWUuYmluZGluZ3Mu
bGVuZ3RoLGg9ITE7cmV0dXJuIGY+MCYmeWUodCxlLDAsbikmJihoPSEwKSxmPjEmJnllKHQsZSwx
LHIpJiYoaD0hMCksZj4yJiZ5ZSh0LGUsMixvKSYmKGg9ITApLGY+MyYmeWUodCxlLDMsaSkmJiho
PSEwKSxmPjQmJnllKHQsZSw0LHMpJiYoaD0hMCksZj41JiZ5ZSh0LGUsNSxhKSYmKGg9ITApLGY+
NiYmeWUodCxlLDYsdSkmJihoPSEwKSxmPjcmJnllKHQsZSw3LGMpJiYoaD0hMCksZj44JiZ5ZSh0
LGUsOCxsKSYmKGg9ITApLGY+OSYmeWUodCxlLDkscCkmJihoPSEwKSxofWZ1bmN0aW9uIGRlKHQs
ZSxuKXtmb3IodmFyIHI9ITEsbz0wO288bi5sZW5ndGg7bysrKXllKHQsZSxvLG5bb10pJiYocj0h
MCk7cmV0dXJuIHJ9ZnVuY3Rpb24geWUodCxlLG4scil7aWYoIUx0KHQsZSxuLHIpKXJldHVybiEx
O3ZhciBvPWUuYmluZGluZ3Nbbl0saT1TdCh0LGUuaW5kZXgpLHM9aS5yZW5kZXJFbGVtZW50LGE9
by5uYW1lO3N3aXRjaCgxNSZvLmZsYWdzKXtjYXNlIDE6bWUodCxvLHMsby5ucyxhLHIpO2JyZWFr
O2Nhc2UgMjpnZSh0LHMsYSxyKTticmVhaztjYXNlIDQ6dmUodCxvLHMsYSxyKTticmVhaztjYXNl
IDg6X2UoMTY3NzcyMTYmZS5mbGFncyYmMzImby5mbGFncz9pLmNvbXBvbmVudFZpZXc6dCxvLHMs
YSxyKX1yZXR1cm4hMH1mdW5jdGlvbiBtZSh0LGUsbixyLG8saSl7dmFyIHM9ZS5zZWN1cml0eUNv
bnRleHQsYT1zP3Qucm9vdC5zYW5pdGl6ZXIuc2FuaXRpemUocyxpKTppO2E9bnVsbCE9YT9hLnRv
U3RyaW5nKCk6bnVsbDt2YXIgdT10LnJlbmRlcmVyO251bGwhPWk/dS5zZXRBdHRyaWJ1dGUobixv
LGEscik6dS5yZW1vdmVBdHRyaWJ1dGUobixvLHIpfWZ1bmN0aW9uIGdlKHQsZSxuLHIpe3ZhciBv
PXQucmVuZGVyZXI7cj9vLmFkZENsYXNzKGUsbik6by5yZW1vdmVDbGFzcyhlLG4pfWZ1bmN0aW9u
IHZlKHQsZSxuLHIsbyl7dmFyIGk9dC5yb290LnNhbml0aXplci5zYW5pdGl6ZSh6aS5TVFlMRSxv
KTtpZihudWxsIT1pKXtpPWkudG9TdHJpbmcoKTt2YXIgcz1lLnN1ZmZpeDtudWxsIT1zJiYoaSs9
cyl9ZWxzZSBpPW51bGw7dmFyIGE9dC5yZW5kZXJlcjtudWxsIT1pP2Euc2V0U3R5bGUobixyLGkp
OmEucmVtb3ZlU3R5bGUobixyKX1mdW5jdGlvbiBfZSh0LGUsbixyLG8pe3ZhciBpPWUuc2VjdXJp
dHlDb250ZXh0LHM9aT90LnJvb3Quc2FuaXRpemVyLnNhbml0aXplKGksbyk6bzt0LnJlbmRlcmVy
LnNldFByb3BlcnR5KG4scixzKX1mdW5jdGlvbiBiZSh0LGUsbil7dmFyIHI9JHQodCxlLG4pO2lm
KHIpe3JlKHQsbi5uZ0NvbnRlbnQuaW5kZXgsMSxyLG51bGwsdm9pZCAwKX19LyoqCisgKiBAbGlj
ZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgor
ICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6
Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLworZnVuY3Rpb24gd2UodCxlLG4scil7dmFyIG89ZS52
aWV3Q29udGFpbmVyLl9lbWJlZGRlZFZpZXdzO251bGwhPT1uJiZ2b2lkIDAhPT1ufHwobj1vLmxl
bmd0aCksci52aWV3Q29udGFpbmVyUGFyZW50PXQsU2UobyxuLHIpO3ZhciBpPXp0KHIpO2lmKGkm
JmkhPT1lKXt2YXIgcz1pLnRlbXBsYXRlLl9wcm9qZWN0ZWRWaWV3cztzfHwocz1pLnRlbXBsYXRl
Ll9wcm9qZWN0ZWRWaWV3cz1bXSkscy5wdXNoKHIpfVppLmRpcnR5UGFyZW50UXVlcmllcyhyKSxP
ZShlLG4+MD9vW24tMV06bnVsbCxyKX1mdW5jdGlvbiBDZSh0LGUpe3ZhciBuPXQudmlld0NvbnRh
aW5lci5fZW1iZWRkZWRWaWV3cztpZigobnVsbD09ZXx8ZT49bi5sZW5ndGgpJiYoZT1uLmxlbmd0
aC0xKSxlPDApcmV0dXJuIG51bGw7dmFyIHI9bltlXTtyLnZpZXdDb250YWluZXJQYXJlbnQ9bnVs
bCxQZShuLGUpO3ZhciBvPXp0KHIpO2lmKG8mJm8hPT10KXt2YXIgaT1vLnRlbXBsYXRlLl9wcm9q
ZWN0ZWRWaWV3cztQZShpLGkuaW5kZXhPZihyKSl9cmV0dXJuIFppLmRpcnR5UGFyZW50UXVlcmll
cyhyKSx4ZShyKSxyfWZ1bmN0aW9uIEVlKHQsZSxuKXt2YXIgcj10LnZpZXdDb250YWluZXIuX2Vt
YmVkZGVkVmlld3Msbz1yW2VdO3JldHVybiBQZShyLGUpLG51bGw9PW4mJihuPXIubGVuZ3RoKSxT
ZShyLG4sbyksWmkuZGlydHlQYXJlbnRRdWVyaWVzKG8pLHhlKG8pLE9lKHQsbj4wP3Jbbi0xXTpu
dWxsLG8pLG99ZnVuY3Rpb24gT2UodCxlLG4pe3ZhciByPWU/WnQoZSxlLmRlZi5sYXN0UmVuZGVy
Um9vdE5vZGUpOnQucmVuZGVyRWxlbWVudDtlZShuLDIsbi5yZW5kZXJlci5wYXJlbnROb2RlKHIp
LG4ucmVuZGVyZXIubmV4dFNpYmxpbmcociksdm9pZCAwKX1mdW5jdGlvbiB4ZSh0KXtlZSh0LDMs
bnVsbCxudWxsLHZvaWQgMCl9ZnVuY3Rpb24gU2UodCxlLG4pe2U+PXQubGVuZ3RoP3QucHVzaChu
KTp0LnNwbGljZShlLDAsbil9ZnVuY3Rpb24gUGUodCxlKXtlPj10Lmxlbmd0aC0xP3QucG9wKCk6
dC5zcGxpY2UoZSwxKX1mdW5jdGlvbiBBZSh0LGUsbixyLG8saSl7cmV0dXJuIG5ldyBlcyh0LGUs
bixyLG8saSl9ZnVuY3Rpb24gVGUodCxlLG4pe3JldHVybiBuZXcgcnModCxlLG4pfWZ1bmN0aW9u
IGtlKHQpe3JldHVybiBuZXcgb3ModCl9ZnVuY3Rpb24gVmUodCxlKXtyZXR1cm4gbmV3IGlzKHQs
ZSl9ZnVuY3Rpb24gTWUodCxlKXtyZXR1cm4gbmV3IHNzKHQsZSl9ZnVuY3Rpb24gTmUodCxlKXt2
YXIgbj10LmRlZi5ub2Rlc1tlXTtpZigxJm4uZmxhZ3Mpe3ZhciByPVN0KHQsbi5pbmRleCk7cmV0
dXJuIG4uZWxlbWVudC50ZW1wbGF0ZT9yLnRlbXBsYXRlOnIucmVuZGVyRWxlbWVudH1pZigyJm4u
ZmxhZ3MpcmV0dXJuIHh0KHQsbi5pbmRleCkucmVuZGVyVGV4dDtpZigxMDEyMCZuLmZsYWdzKXJl
dHVybiBQdCh0LG4uaW5kZXgpLmluc3RhbmNlO3Rocm93IG5ldyBFcnJvcigiSWxsZWdhbCBzdGF0
ZTogcmVhZCBub2RlVmFsdWUgZm9yIG5vZGUgaW5kZXggIitlKX1mdW5jdGlvbiBqZSh0KXtyZXR1
cm4gbmV3IGFzKHQucmVuZGVyZXIpfWZ1bmN0aW9uIFJlKHQsZSxuLHIsbyxpLHMpe3ZhciBhPVtd
O2lmKGkpZm9yKHZhciB1IGluIGkpe3ZhciBjPWlbdV0sbD1jWzBdLHA9Y1sxXTthW2xdPXtmbGFn
czo4LG5hbWU6dSxub25NaW5pZmllZE5hbWU6cCxuczpudWxsLHNlY3VyaXR5Q29udGV4dDpudWxs
LHN1ZmZpeDpudWxsfX12YXIgZj1bXTtpZihzKWZvcih2YXIgaCBpbiBzKWYucHVzaCh7dHlwZTox
LHByb3BOYW1lOmgsdGFyZ2V0Om51bGwsZXZlbnROYW1lOnNbaF19KTtyZXR1cm4gdHw9ODE5MixJ
ZSh0LGUsbixyLHIsbyxhLGYpfWZ1bmN0aW9uIERlKHQsZSxuLHIsbyl7cmV0dXJuIEllKHQsZSww
LG4scixvKX1mdW5jdGlvbiBJZSh0LGUsbixyLG8saSxzLGEpe3ZhciB1PUp0KGUpLGM9dS5tYXRj
aGVkUXVlcmllcyxsPXUucmVmZXJlbmNlcyxwPXUubWF0Y2hlZFF1ZXJ5SWRzO2F8fChhPVtdKSxz
fHwocz1bXSk7dmFyIGY9aS5tYXAoZnVuY3Rpb24odCl7dmFyIGUsbjtyZXR1cm4gQXJyYXkuaXNB
cnJheSh0KT8obj10WzBdLGU9dFsxXSk6KG49MCxlPXQpLHtmbGFnczpuLHRva2VuOmUsdG9rZW5L
ZXk6RHQoZSl9fSk7cmV0dXJue2luZGV4Oi0xLHBhcmVudDpudWxsLHJlbmRlclBhcmVudDpudWxs
LGJpbmRpbmdJbmRleDotMSxvdXRwdXRJbmRleDotMSxmbGFnczp0LGNoaWxkRmxhZ3M6MCxkaXJl
Y3RDaGlsZEZsYWdzOjAsY2hpbGRNYXRjaGVkUXVlcmllczowLG1hdGNoZWRRdWVyaWVzOmMsbWF0
Y2hlZFF1ZXJ5SWRzOnAscmVmZXJlbmNlczpsLG5nQ29udGVudEluZGV4Oi0xLGNoaWxkQ291bnQ6
bixiaW5kaW5nczpzLGJpbmRpbmdGbGFnczphZShzKSxvdXRwdXRzOmEsZWxlbWVudDpudWxsLHBy
b3ZpZGVyOnt0b2tlbjpyLHRva2VuS2V5OkR0KHIpLHZhbHVlOm8sZGVwczpmfSx0ZXh0Om51bGws
cXVlcnk6bnVsbCxuZ0NvbnRlbnQ6bnVsbH19ZnVuY3Rpb24gRmUodCxlKXtyZXR1cm4gMjA0OCZl
LmZsYWdzP3lzOnplKHQsZSl9ZnVuY3Rpb24gSGUodCxlKXtmb3IodmFyIG49dDtuLnBhcmVudCYm
IUt0KG4pOyluPW4ucGFyZW50O3JldHVybiBxZShuLnBhcmVudCxxdChuKSwhMCxlLnByb3ZpZGVy
LnZhbHVlLGUucHJvdmlkZXIuZGVwcyl9ZnVuY3Rpb24gTGUodCxlKXt2YXIgbj0oMTYzODQmZS5m
bGFncyk+MCxyPXFlKHQsZS5wYXJlbnQsbixlLnByb3ZpZGVyLnZhbHVlLGUucHJvdmlkZXIuZGVw
cyk7aWYoZS5vdXRwdXRzLmxlbmd0aClmb3IodmFyIG89MDtvPGUub3V0cHV0cy5sZW5ndGg7bysr
KXt2YXIgaT1lLm91dHB1dHNbb10scz1yW2kucHJvcE5hbWVdLnN1YnNjcmliZShVZSh0LGUucGFy
ZW50LmluZGV4LGkuZXZlbnROYW1lKSk7dC5kaXNwb3NhYmxlc1tlLm91dHB1dEluZGV4K29dPXMu
dW5zdWJzY3JpYmUuYmluZChzKX1yZXR1cm4gcn1mdW5jdGlvbiBVZSh0LGUsbil7cmV0dXJuIGZ1
bmN0aW9uKHIpe3JldHVybiBHdCh0LGUsbixyKX19ZnVuY3Rpb24gQmUodCxlLG4scixvLGkscyxh
LHUsYyxsLHApe3ZhciBmPVB0KHQsZS5pbmRleCksaD1mLmluc3RhbmNlLGQ9ITEseT12b2lkIDAs
bT1lLmJpbmRpbmdzLmxlbmd0aDtyZXR1cm4gbT4wJiZIdCh0LGUsMCxuKSYmKGQ9ITAseT1YZSh0
LGYsZSwwLG4seSkpLG0+MSYmSHQodCxlLDEscikmJihkPSEwLHk9WGUodCxmLGUsMSxyLHkpKSxt
PjImJkh0KHQsZSwyLG8pJiYoZD0hMCx5PVhlKHQsZixlLDIsbyx5KSksbT4zJiZIdCh0LGUsMyxp
KSYmKGQ9ITAseT1YZSh0LGYsZSwzLGkseSkpLG0+NCYmSHQodCxlLDQscykmJihkPSEwLHk9WGUo
dCxmLGUsNCxzLHkpKSxtPjUmJkh0KHQsZSw1LGEpJiYoZD0hMCx5PVhlKHQsZixlLDUsYSx5KSks
bT42JiZIdCh0LGUsNix1KSYmKGQ9ITAseT1YZSh0LGYsZSw2LHUseSkpLG0+NyYmSHQodCxlLDcs
YykmJihkPSEwLHk9WGUodCxmLGUsNyxjLHkpKSxtPjgmJkh0KHQsZSw4LGwpJiYoZD0hMCx5PVhl
KHQsZixlLDgsbCx5KSksbT45JiZIdCh0LGUsOSxwKSYmKGQ9ITAseT1YZSh0LGYsZSw5LHAseSkp
LHkmJmgubmdPbkNoYW5nZXMoeSksMSZ0LnN0YXRlJiYzMjc2OCZlLmZsYWdzJiZoLm5nT25Jbml0
KCksMTMxMDcyJmUuZmxhZ3MmJmgubmdEb0NoZWNrKCksZH1mdW5jdGlvbiBHZSh0LGUsbil7Zm9y
KHZhciByPVB0KHQsZS5pbmRleCksbz1yLmluc3RhbmNlLGk9ITEscz12b2lkIDAsYT0wO2E8bi5s
ZW5ndGg7YSsrKUh0KHQsZSxhLG5bYV0pJiYoaT0hMCxzPVhlKHQscixlLGEsblthXSxzKSk7cmV0
dXJuIHMmJm8ubmdPbkNoYW5nZXMocyksMSZ0LnN0YXRlJiYzMjc2OCZlLmZsYWdzJiZvLm5nT25J
bml0KCksMTMxMDcyJmUuZmxhZ3MmJm8ubmdEb0NoZWNrKCksaX1mdW5jdGlvbiB6ZSh0LGUpe3Zh
ciBuLHI9KDQwOTYmZS5mbGFncyk+MCxvPWUucHJvdmlkZXI7c3dpdGNoKDEwMDY3MzUzNSZlLmZs
YWdzKXtjYXNlIDI1NjpuPXFlKHQsZS5wYXJlbnQscixvLnZhbHVlLG8uZGVwcyk7YnJlYWs7Y2Fz
ZSA1MTI6bj1aZSh0LGUucGFyZW50LHIsby52YWx1ZSxvLmRlcHMpO2JyZWFrO2Nhc2UgMTAyNDpu
PVdlKHQsZS5wYXJlbnQscixvLmRlcHNbMF0pO2JyZWFrO2Nhc2UgMTI4Om49by52YWx1ZX1yZXR1
cm4gbn1mdW5jdGlvbiBxZSh0LGUsbixyLG8pe3ZhciBpLHM9by5sZW5ndGg7c3dpdGNoKHMpe2Nh
c2UgMDppPW5ldyByO2JyZWFrO2Nhc2UgMTppPW5ldyByKFdlKHQsZSxuLG9bMF0pKTticmVhaztj
YXNlIDI6aT1uZXcgcihXZSh0LGUsbixvWzBdKSxXZSh0LGUsbixvWzFdKSk7YnJlYWs7Y2FzZSAz
Omk9bmV3IHIoV2UodCxlLG4sb1swXSksV2UodCxlLG4sb1sxXSksV2UodCxlLG4sb1syXSkpO2Jy
ZWFrO2RlZmF1bHQ6Zm9yKHZhciBhPW5ldyBBcnJheShzKSx1PTA7dTxzO3UrKylhW3VdPVdlKHQs
ZSxuLG9bdV0pO2k9bmV3KHIuYmluZC5hcHBseShyLFt2b2lkIDBdLmNvbmNhdChhKSkpfXJldHVy
biBpfWZ1bmN0aW9uIFplKHQsZSxuLHIsbyl7dmFyIGkscz1vLmxlbmd0aDtzd2l0Y2gocyl7Y2Fz
ZSAwOmk9cigpO2JyZWFrO2Nhc2UgMTppPXIoV2UodCxlLG4sb1swXSkpO2JyZWFrO2Nhc2UgMjpp
PXIoV2UodCxlLG4sb1swXSksV2UodCxlLG4sb1sxXSkpO2JyZWFrO2Nhc2UgMzppPXIoV2UodCxl
LG4sb1swXSksV2UodCxlLG4sb1sxXSksV2UodCxlLG4sb1syXSkpO2JyZWFrO2RlZmF1bHQ6Zm9y
KHZhciBhPUFycmF5KHMpLHU9MDt1PHM7dSsrKWFbdV09V2UodCxlLG4sb1t1XSk7aT1yLmFwcGx5
KHZvaWQgMCxhKX1yZXR1cm4gaX1mdW5jdGlvbiBXZSh0LGUsbixyLG8pe2lmKHZvaWQgMD09PW8m
JihvPUtyLlRIUk9XX0lGX05PVF9GT1VORCksOCZyLmZsYWdzKXJldHVybiByLnRva2VuO3ZhciBp
PXQ7MiZyLmZsYWdzJiYobz1udWxsKTt2YXIgcz1yLnRva2VuS2V5O2ZvcihlJiYxJnIuZmxhZ3Mm
JihuPSExLGU9ZS5wYXJlbnQpO3Q7KXtpZihlKXN3aXRjaChzKXtjYXNlIHVzOnZhciBhPUtlKHQs
ZSxuKTtyZXR1cm4gamUoYSk7Y2FzZSBjczp2YXIgYT1LZSh0LGUsbik7cmV0dXJuIGEucmVuZGVy
ZXI7Y2FzZSBsczpyZXR1cm4gbmV3IHVpKFN0KHQsZS5pbmRleCkucmVuZGVyRWxlbWVudCk7Y2Fz
ZSBwczpyZXR1cm4gU3QodCxlLmluZGV4KS52aWV3Q29udGFpbmVyO2Nhc2UgZnM6aWYoZS5lbGVt
ZW50LnRlbXBsYXRlKXJldHVybiBTdCh0LGUuaW5kZXgpLnRlbXBsYXRlO2JyZWFrO2Nhc2UgaHM6
cmV0dXJuIGtlKEtlKHQsZSxuKSk7Y2FzZSBkczpyZXR1cm4gTWUodCxlKTtkZWZhdWx0OnZhciB1
PShuP2UuZWxlbWVudC5hbGxQcm92aWRlcnM6ZS5lbGVtZW50LnB1YmxpY1Byb3ZpZGVycylbc107
aWYodSl7dmFyIGM9UHQodCx1LmluZGV4KTtyZXR1cm4gYy5pbnN0YW5jZT09PXlzJiYoYy5pbnN0
YW5jZT16ZSh0LHUpKSxjLmluc3RhbmNlfX1uPUt0KHQpLGU9cXQodCksdD10LnBhcmVudH12YXIg
bD1pLnJvb3QuaW5qZWN0b3IuZ2V0KHIudG9rZW4sbXMpO3JldHVybiBsIT09bXN8fG89PT1tcz9s
Omkucm9vdC5uZ01vZHVsZS5pbmplY3Rvci5nZXQoci50b2tlbixvKX1mdW5jdGlvbiBLZSh0LGUs
bil7dmFyIHI7aWYobilyPVN0KHQsZS5pbmRleCkuY29tcG9uZW50VmlldztlbHNlIGZvcihyPXQ7
ci5wYXJlbnQmJiFLdChyKTspcj1yLnBhcmVudDtyZXR1cm4gcn1mdW5jdGlvbiBYZSh0LGUsbixy
LG8saSl7aWYoMTYzODQmbi5mbGFncyl7dmFyIHM9U3QodCxuLnBhcmVudC5pbmRleCkuY29tcG9u
ZW50VmlldzsyJnMuZGVmLmZsYWdzJiYocy5zdGF0ZXw9Mil9dmFyIGE9bi5iaW5kaW5nc1tyXSx1
PWEubmFtZTtpZihlLmluc3RhbmNlW3VdPW8sMjYyMTQ0Jm4uZmxhZ3Mpe2k9aXx8e307dmFyIGM9
dC5vbGRWYWx1ZXNbbi5iaW5kaW5nSW5kZXgrcl07YyBpbnN0YW5jZW9mIEVpJiYoYz1jLndyYXBw
ZWQpO2lbbi5iaW5kaW5nc1tyXS5ub25NaW5pZmllZE5hbWVdPW5ldyBPaShjLG8sMCE9KDEmdC5z
dGF0ZSkpfXJldHVybiB0Lm9sZFZhbHVlc1tuLmJpbmRpbmdJbmRleCtyXT1vLGl9ZnVuY3Rpb24g
UWUodCxlKXtpZih0LmRlZi5ub2RlRmxhZ3MmZSlmb3IodmFyIG49dC5kZWYubm9kZXMscj0wO3I8
bi5sZW5ndGg7cisrKXt2YXIgbz1uW3JdLGk9by5wYXJlbnQ7Zm9yKCFpJiZvLmZsYWdzJmUmJiRl
KHQscixvLmZsYWdzJmUpLDA9PShvLmNoaWxkRmxhZ3MmZSkmJihyKz1vLmNoaWxkQ291bnQpO2km
JjEmaS5mbGFncyYmcj09PWkuaW5kZXgraS5jaGlsZENvdW50OylpLmRpcmVjdENoaWxkRmxhZ3Mm
ZSYmSmUodCxpLGUpLGk9aS5wYXJlbnR9fWZ1bmN0aW9uIEplKHQsZSxuKXtmb3IodmFyIHI9ZS5p
bmRleCsxO3I8PWUuaW5kZXgrZS5jaGlsZENvdW50O3IrKyl7dmFyIG89dC5kZWYubm9kZXNbcl07
by5mbGFncyZuJiYkZSh0LHIsby5mbGFncyZuKSxyKz1vLmNoaWxkQ291bnR9fWZ1bmN0aW9uICRl
KHQsZSxuKXt2YXIgcj1QdCh0LGUpLmluc3RhbmNlO3IhPT15cyYmKFppLnNldEN1cnJlbnROb2Rl
KHQsZSksNTI0Mjg4Jm4mJnIubmdBZnRlckNvbnRlbnRJbml0KCksMTA0ODU3NiZuJiZyLm5nQWZ0
ZXJDb250ZW50Q2hlY2tlZCgpLDIwOTcxNTImbiYmci5uZ0FmdGVyVmlld0luaXQoKSw0MTk0MzA0
Jm4mJnIubmdBZnRlclZpZXdDaGVja2VkKCksNjU1MzYmbiYmci5uZ09uRGVzdHJveSgpKX1mdW5j
dGlvbiBZZSh0LGUpe3JldHVybnt2YWx1ZTp2b2lkIDB9fWZ1bmN0aW9uIHRuKHQsZSxuLHIsbyxp
LHMsYSx1LGMsbCxwKXt2YXIgZj1lLmJpbmRpbmdzLGg9ITEsZD1mLmxlbmd0aDtpZihkPjAmJkx0
KHQsZSwwLG4pJiYoaD0hMCksZD4xJiZMdCh0LGUsMSxyKSYmKGg9ITApLGQ+MiYmTHQodCxlLDIs
bykmJihoPSEwKSxkPjMmJkx0KHQsZSwzLGkpJiYoaD0hMCksZD40JiZMdCh0LGUsNCxzKSYmKGg9
ITApLGQ+NSYmTHQodCxlLDUsYSkmJihoPSEwKSxkPjYmJkx0KHQsZSw2LHUpJiYoaD0hMCksZD43
JiZMdCh0LGUsNyxjKSYmKGg9ITApLGQ+OCYmTHQodCxlLDgsbCkmJihoPSEwKSxkPjkmJkx0KHQs
ZSw5LHApJiYoaD0hMCksaCl7dmFyIHk9QXQodCxlLmluZGV4KSxtPXZvaWQgMDtzd2l0Y2goMTAw
NjczNTM1JmUuZmxhZ3Mpe2Nhc2UgMTY6bT1uZXcgQXJyYXkoZi5sZW5ndGgpLGQ+MCYmKG1bMF09
biksZD4xJiYobVsxXT1yKSxkPjImJihtWzJdPW8pLGQ+MyYmKG1bM109aSksZD40JiYobVs0XT1z
KSxkPjUmJihtWzVdPWEpLGQ+NiYmKG1bNl09dSksZD43JiYobVs3XT1jKSxkPjgmJihtWzhdPWwp
LGQ+OSYmKG1bOV09cCk7YnJlYWs7Y2FzZSAzMjptPXt9LGQ+MCYmKG1bZlswXS5uYW1lXT1uKSxk
PjEmJihtW2ZbMV0ubmFtZV09ciksZD4yJiYobVtmWzJdLm5hbWVdPW8pLGQ+MyYmKG1bZlszXS5u
YW1lXT1pKSxkPjQmJihtW2ZbNF0ubmFtZV09cyksZD41JiYobVtmWzVdLm5hbWVdPWEpLGQ+NiYm
KG1bZls2XS5uYW1lXT11KSxkPjcmJihtW2ZbN10ubmFtZV09YyksZD44JiYobVtmWzhdLm5hbWVd
PWwpLGQ+OSYmKG1bZls5XS5uYW1lXT1wKTticmVhaztjYXNlIDY0OnZhciBnPW47c3dpdGNoKGQp
e2Nhc2UgMTptPWcudHJhbnNmb3JtKG4pO2JyZWFrO2Nhc2UgMjptPWcudHJhbnNmb3JtKHIpO2Jy
ZWFrO2Nhc2UgMzptPWcudHJhbnNmb3JtKHIsbyk7YnJlYWs7Y2FzZSA0Om09Zy50cmFuc2Zvcm0o
cixvLGkpO2JyZWFrO2Nhc2UgNTptPWcudHJhbnNmb3JtKHIsbyxpLHMpO2JyZWFrO2Nhc2UgNjpt
PWcudHJhbnNmb3JtKHIsbyxpLHMsYSk7YnJlYWs7Y2FzZSA3Om09Zy50cmFuc2Zvcm0ocixvLGks
cyxhLHUpO2JyZWFrO2Nhc2UgODptPWcudHJhbnNmb3JtKHIsbyxpLHMsYSx1LGMpO2JyZWFrO2Nh
c2UgOTptPWcudHJhbnNmb3JtKHIsbyxpLHMsYSx1LGMsbCk7YnJlYWs7Y2FzZSAxMDptPWcudHJh
bnNmb3JtKHIsbyxpLHMsYSx1LGMsbCxwKX19eS52YWx1ZT1tfXJldHVybiBofWZ1bmN0aW9uIGVu
KHQsZSxuKXtmb3IodmFyIHI9ZS5iaW5kaW5ncyxvPSExLGk9MDtpPG4ubGVuZ3RoO2krKylMdCh0
LGUsaSxuW2ldKSYmKG89ITApO2lmKG8pe3ZhciBzPUF0KHQsZS5pbmRleCksYT12b2lkIDA7c3dp
dGNoKDEwMDY3MzUzNSZlLmZsYWdzKXtjYXNlIDE2OmE9bjticmVhaztjYXNlIDMyOmE9e307Zm9y
KHZhciBpPTA7aTxuLmxlbmd0aDtpKyspYVtyW2ldLm5hbWVdPW5baV07YnJlYWs7Y2FzZSA2NDp2
YXIgdT1uWzBdLGM9bi5zbGljZSgxKTthPXUudHJhbnNmb3JtLmFwcGx5KHUsYyl9cy52YWx1ZT1h
fXJldHVybiBvfWZ1bmN0aW9uIG5uKCl7cmV0dXJuIG5ldyBjaX1mdW5jdGlvbiBybih0KXtmb3Io
dmFyIGU9dC5kZWYubm9kZU1hdGNoZWRRdWVyaWVzO3QucGFyZW50JiZYdCh0KTspe3ZhciBuPXQu
cGFyZW50Tm9kZURlZjt0PXQucGFyZW50O2Zvcih2YXIgcj1uLmluZGV4K24uY2hpbGRDb3VudCxv
PTA7bzw9cjtvKyspe3ZhciBpPXQuZGVmLm5vZGVzW29dOzMzNTU0NDMyJmkuZmxhZ3MmJjI2ODQz
NTQ1NiZpLmZsYWdzJiYoaS5xdWVyeS5maWx0ZXJJZCZlKT09PWkucXVlcnkuZmlsdGVySWQmJlR0
KHQsbykuc2V0RGlydHkoKSwhKDEmaS5mbGFncyYmbytpLmNoaWxkQ291bnQ8bi5pbmRleCkmJjMz
NTU0NDMyJmkuY2hpbGRGbGFncyYmMjY4NDM1NDU2JmkuY2hpbGRGbGFnc3x8KG8rPWkuY2hpbGRD
b3VudCl9fWlmKDY3MTA4ODY0JnQuZGVmLm5vZGVGbGFncylmb3IodmFyIG89MDtvPHQuZGVmLm5v
ZGVzLmxlbmd0aDtvKyspe3ZhciBpPXQuZGVmLm5vZGVzW29dOzY3MTA4ODY0JmkuZmxhZ3MmJjI2
ODQzNTQ1NiZpLmZsYWdzJiZUdCh0LG8pLnNldERpcnR5KCksbys9aS5jaGlsZENvdW50fX1mdW5j
dGlvbiBvbih0LGUpe3ZhciBuPVR0KHQsZS5pbmRleCk7aWYobi5kaXJ0eSl7dmFyIHIsbz12b2lk
IDA7aWYoMzM1NTQ0MzImZS5mbGFncyl7dmFyIGk9ZS5wYXJlbnQucGFyZW50O289c24odCxpLmlu
ZGV4LGkuaW5kZXgraS5jaGlsZENvdW50LGUucXVlcnksW10pLHI9UHQodCxlLnBhcmVudC5pbmRl
eCkuaW5zdGFuY2V9ZWxzZSA2NzEwODg2NCZlLmZsYWdzJiYobz1zbih0LDAsdC5kZWYubm9kZXMu
bGVuZ3RoLTEsZS5xdWVyeSxbXSkscj10LmNvbXBvbmVudCk7bi5yZXNldChvKTtmb3IodmFyIHM9
ZS5xdWVyeS5iaW5kaW5ncyxhPSExLHU9MDt1PHMubGVuZ3RoO3UrKyl7dmFyIGM9c1t1XSxsPXZv
aWQgMDtzd2l0Y2goYy5iaW5kaW5nVHlwZSl7Y2FzZSAwOmw9bi5maXJzdDticmVhaztjYXNlIDE6
bD1uLGE9ITB9cltjLnByb3BOYW1lXT1sfWEmJm4ubm90aWZ5T25DaGFuZ2VzKCl9fWZ1bmN0aW9u
IHNuKHQsZSxuLHIsbyl7Zm9yKHZhciBpPWU7aTw9bjtpKyspe3ZhciBzPXQuZGVmLm5vZGVzW2ld
LGE9cy5tYXRjaGVkUXVlcmllc1tyLmlkXTtpZihudWxsIT1hJiZvLnB1c2goYW4odCxzLGEpKSwx
JnMuZmxhZ3MmJnMuZWxlbWVudC50ZW1wbGF0ZSYmKHMuZWxlbWVudC50ZW1wbGF0ZS5ub2RlTWF0
Y2hlZFF1ZXJpZXMmci5maWx0ZXJJZCk9PT1yLmZpbHRlcklkKXt2YXIgdT1TdCh0LGkpO2lmKDgz
ODg2MDgmcy5mbGFncylmb3IodmFyIGM9dS52aWV3Q29udGFpbmVyLl9lbWJlZGRlZFZpZXdzLGw9
MDtsPGMubGVuZ3RoO2wrKyl7dmFyIHA9Y1tsXSxmPXp0KHApO2YmJmY9PT11JiZzbihwLDAscC5k
ZWYubm9kZXMubGVuZ3RoLTEscixvKX12YXIgaD11LnRlbXBsYXRlLl9wcm9qZWN0ZWRWaWV3cztp
ZihoKWZvcih2YXIgbD0wO2w8aC5sZW5ndGg7bCsrKXt2YXIgZD1oW2xdO3NuKGQsMCxkLmRlZi5u
b2Rlcy5sZW5ndGgtMSxyLG8pfX0ocy5jaGlsZE1hdGNoZWRRdWVyaWVzJnIuZmlsdGVySWQpIT09
ci5maWx0ZXJJZCYmKGkrPXMuY2hpbGRDb3VudCl9cmV0dXJuIG99ZnVuY3Rpb24gYW4odCxlLG4p
e2lmKG51bGwhPW4pe3ZhciByPXZvaWQgMDtzd2l0Y2gobil7Y2FzZSAxOnI9U3QodCxlLmluZGV4
KS5yZW5kZXJFbGVtZW50O2JyZWFrO2Nhc2UgMDpyPW5ldyB1aShTdCh0LGUuaW5kZXgpLnJlbmRl
ckVsZW1lbnQpO2JyZWFrO2Nhc2UgMjpyPVN0KHQsZS5pbmRleCkudGVtcGxhdGU7YnJlYWs7Y2Fz
ZSAzOnI9U3QodCxlLmluZGV4KS52aWV3Q29udGFpbmVyO2JyZWFrO2Nhc2UgNDpyPVB0KHQsZS5p
bmRleCkuaW5zdGFuY2V9cmV0dXJuIHJ9fS8qKgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBH
b29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisg
KiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNl
CisgKi8KK2Z1bmN0aW9uIHVuKHQsZSl7Zm9yKHZhciBuPW5ldyBBcnJheShlLmxlbmd0aC0xKSxy
PTE7cjxlLmxlbmd0aDtyKyspbltyLTFdPXtmbGFnczo4LG5hbWU6bnVsbCxuczpudWxsLG5vbk1p
bmlmaWVkTmFtZTpudWxsLHNlY3VyaXR5Q29udGV4dDpudWxsLHN1ZmZpeDplW3JdfTtyZXR1cm57
aW5kZXg6LTEscGFyZW50Om51bGwscmVuZGVyUGFyZW50Om51bGwsYmluZGluZ0luZGV4Oi0xLG91
dHB1dEluZGV4Oi0xLGZsYWdzOjIsY2hpbGRGbGFnczowLGRpcmVjdENoaWxkRmxhZ3M6MCxjaGls
ZE1hdGNoZWRRdWVyaWVzOjAsbWF0Y2hlZFF1ZXJpZXM6e30sbWF0Y2hlZFF1ZXJ5SWRzOjAscmVm
ZXJlbmNlczp7fSxuZ0NvbnRlbnRJbmRleDp0LGNoaWxkQ291bnQ6MCxiaW5kaW5nczpuLGJpbmRp
bmdGbGFnczphZShuKSxvdXRwdXRzOltdLGVsZW1lbnQ6bnVsbCxwcm92aWRlcjpudWxsLHRleHQ6
e3ByZWZpeDplWzBdfSxxdWVyeTpudWxsLG5nQ29udGVudDpudWxsfX1mdW5jdGlvbiBjbih0LGUs
bil7dmFyIHIsbz10LnJlbmRlcmVyO3I9by5jcmVhdGVUZXh0KG4udGV4dC5wcmVmaXgpO3ZhciBp
PSR0KHQsZSxuKTtyZXR1cm4gaSYmby5hcHBlbmRDaGlsZChpLHIpLHtyZW5kZXJUZXh0OnJ9fWZ1
bmN0aW9uIGxuKHQsZSxuLHIsbyxpLHMsYSx1LGMsbCxwKXt2YXIgZj0hMSxoPWUuYmluZGluZ3Ms
ZD1oLmxlbmd0aDtpZihkPjAmJkx0KHQsZSwwLG4pJiYoZj0hMCksZD4xJiZMdCh0LGUsMSxyKSYm
KGY9ITApLGQ+MiYmTHQodCxlLDIsbykmJihmPSEwKSxkPjMmJkx0KHQsZSwzLGkpJiYoZj0hMCks
ZD40JiZMdCh0LGUsNCxzKSYmKGY9ITApLGQ+NSYmTHQodCxlLDUsYSkmJihmPSEwKSxkPjYmJkx0
KHQsZSw2LHUpJiYoZj0hMCksZD43JiZMdCh0LGUsNyxjKSYmKGY9ITApLGQ+OCYmTHQodCxlLDgs
bCkmJihmPSEwKSxkPjkmJkx0KHQsZSw5LHApJiYoZj0hMCksZil7dmFyIHk9ZS50ZXh0LnByZWZp
eDtkPjAmJih5Kz1mbihuLGhbMF0pKSxkPjEmJih5Kz1mbihyLGhbMV0pKSxkPjImJih5Kz1mbihv
LGhbMl0pKSxkPjMmJih5Kz1mbihpLGhbM10pKSxkPjQmJih5Kz1mbihzLGhbNF0pKSxkPjUmJih5
Kz1mbihhLGhbNV0pKSxkPjYmJih5Kz1mbih1LGhbNl0pKSxkPjcmJih5Kz1mbihjLGhbN10pKSxk
PjgmJih5Kz1mbihsLGhbOF0pKSxkPjkmJih5Kz1mbihwLGhbOV0pKTt2YXIgbT14dCh0LGUuaW5k
ZXgpLnJlbmRlclRleHQ7dC5yZW5kZXJlci5zZXRWYWx1ZShtLHkpfXJldHVybiBmfWZ1bmN0aW9u
IHBuKHQsZSxuKXtmb3IodmFyIHI9ZS5iaW5kaW5ncyxvPSExLGk9MDtpPG4ubGVuZ3RoO2krKylM
dCh0LGUsaSxuW2ldKSYmKG89ITApO2lmKG8pe2Zvcih2YXIgcz0iIixpPTA7aTxuLmxlbmd0aDtp
Kyspcys9Zm4obltpXSxyW2ldKTtzPWUudGV4dC5wcmVmaXgrczt2YXIgYT14dCh0LGUuaW5kZXgp
LnJlbmRlclRleHQ7dC5yZW5kZXJlci5zZXRWYWx1ZShhLHMpfXJldHVybiBvfWZ1bmN0aW9uIGZu
KHQsZSl7cmV0dXJuKG51bGwhPXQ/dC50b1N0cmluZygpOiIiKStlLnN1ZmZpeH0vKioKKyAqIEBs
aWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
CisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRw
czovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCitmdW5jdGlvbiBobih0LGUsbixyKXtmb3IodmFy
IG89MCxpPTAscz0wLGE9MCx1PTAsYz1udWxsLGw9ITEscD0hMSxmPW51bGwsaD0wO2g8ZS5sZW5n
dGg7aCsrKXtmb3IoO2MmJmg+Yy5pbmRleCtjLmNoaWxkQ291bnQ7KXt2YXIgZD1jLnBhcmVudDtk
JiYoZC5jaGlsZEZsYWdzfD1jLmNoaWxkRmxhZ3MsZC5jaGlsZE1hdGNoZWRRdWVyaWVzfD1jLmNo
aWxkTWF0Y2hlZFF1ZXJpZXMpLGM9ZH12YXIgeT1lW2hdO3kuaW5kZXg9aCx5LnBhcmVudD1jLHku
YmluZGluZ0luZGV4PW8seS5vdXRwdXRJbmRleD1pO3ZhciBtPXZvaWQgMDtpZihtPWMmJjEmYy5m
bGFncyYmIWMuZWxlbWVudC5uYW1lP2MucmVuZGVyUGFyZW50OmMseS5yZW5kZXJQYXJlbnQ9bSx5
LmVsZW1lbnQpe3ZhciBnPXkuZWxlbWVudDtnLnB1YmxpY1Byb3ZpZGVycz1jP2MuZWxlbWVudC5w
dWJsaWNQcm92aWRlcnM6T2JqZWN0LmNyZWF0ZShudWxsKSxnLmFsbFByb3ZpZGVycz1nLnB1Ymxp
Y1Byb3ZpZGVycyxsPSExLHA9ITF9aWYoZG4oYyx5LGUubGVuZ3RoKSxzfD15LmZsYWdzLHV8PXku
bWF0Y2hlZFF1ZXJ5SWRzLHkuZWxlbWVudCYmeS5lbGVtZW50LnRlbXBsYXRlJiYodXw9eS5lbGVt
ZW50LnRlbXBsYXRlLm5vZGVNYXRjaGVkUXVlcmllcyksYz8oYy5jaGlsZEZsYWdzfD15LmZsYWdz
LGMuZGlyZWN0Q2hpbGRGbGFnc3w9eS5mbGFncyxjLmNoaWxkTWF0Y2hlZFF1ZXJpZXN8PXkubWF0
Y2hlZFF1ZXJ5SWRzLHkuZWxlbWVudCYmeS5lbGVtZW50LnRlbXBsYXRlJiYoYy5jaGlsZE1hdGNo
ZWRRdWVyaWVzfD15LmVsZW1lbnQudGVtcGxhdGUubm9kZU1hdGNoZWRRdWVyaWVzKSk6YXw9eS5m
bGFncyxvKz15LmJpbmRpbmdzLmxlbmd0aCxpKz15Lm91dHB1dHMubGVuZ3RoLCFtJiYzJnkuZmxh
Z3MmJihmPXkpLDEwMTEyJnkuZmxhZ3Mpe2x8fChsPSEwLGMuZWxlbWVudC5wdWJsaWNQcm92aWRl
cnM9T2JqZWN0LmNyZWF0ZShjLmVsZW1lbnQucHVibGljUHJvdmlkZXJzKSxjLmVsZW1lbnQuYWxs
UHJvdmlkZXJzPWMuZWxlbWVudC5wdWJsaWNQcm92aWRlcnMpO3ZhciB2PTAhPSg0MDk2JnkuZmxh
Z3MpLF89MCE9KDE2Mzg0JnkuZmxhZ3MpOyF2fHxfP2MuZWxlbWVudC5wdWJsaWNQcm92aWRlcnNb
eS5wcm92aWRlci50b2tlbktleV09eToocHx8KHA9ITAsYy5lbGVtZW50LmFsbFByb3ZpZGVycz1P
YmplY3QuY3JlYXRlKGMuZWxlbWVudC5wdWJsaWNQcm92aWRlcnMpKSxjLmVsZW1lbnQuYWxsUHJv
dmlkZXJzW3kucHJvdmlkZXIudG9rZW5LZXldPXkpLF8mJihjLmVsZW1lbnQuY29tcG9uZW50UHJv
dmlkZXI9eSl9eS5jaGlsZENvdW50JiYoYz15KX1mb3IoO2M7KXt2YXIgZD1jLnBhcmVudDtkJiYo
ZC5jaGlsZEZsYWdzfD1jLmNoaWxkRmxhZ3MsZC5jaGlsZE1hdGNoZWRRdWVyaWVzfD1jLmNoaWxk
TWF0Y2hlZFF1ZXJpZXMpLGM9ZH12YXIgYj1mdW5jdGlvbih0LG4scixvKXtyZXR1cm4gZVtuXS5l
bGVtZW50LmhhbmRsZUV2ZW50KHQscixvKX07cmV0dXJue2ZhY3Rvcnk6bnVsbCxub2RlRmxhZ3M6
cyxyb290Tm9kZUZsYWdzOmEsbm9kZU1hdGNoZWRRdWVyaWVzOnUsZmxhZ3M6dCxub2RlczplLHVw
ZGF0ZURpcmVjdGl2ZXM6bnx8V2ksdXBkYXRlUmVuZGVyZXI6cnx8V2ksaGFuZGxlRXZlbnQ6Ynx8
V2ksYmluZGluZ0NvdW50Om8sb3V0cHV0Q291bnQ6aSxsYXN0UmVuZGVyUm9vdE5vZGU6Zn19ZnVu
Y3Rpb24gZG4odCxlLG4pe3ZhciByPWUuZWxlbWVudCYmZS5lbGVtZW50LnRlbXBsYXRlO2lmKHIp
e2lmKCFyLmxhc3RSZW5kZXJSb290Tm9kZSl0aHJvdyBuZXcgRXJyb3IoIklsbGVnYWwgU3RhdGU6
IEVtYmVkZGVkIHRlbXBsYXRlcyB3aXRob3V0IG5vZGVzIGFyZSBub3QgYWxsb3dlZCEiKTtpZihy
Lmxhc3RSZW5kZXJSb290Tm9kZSYmODM4ODYwOCZyLmxhc3RSZW5kZXJSb290Tm9kZS5mbGFncyl0
aHJvdyBuZXcgRXJyb3IoIklsbGVnYWwgU3RhdGU6IExhc3Qgcm9vdCBub2RlIG9mIGEgdGVtcGxh
dGUgY2FuJ3QgaGF2ZSBlbWJlZGRlZCB2aWV3cywgYXQgaW5kZXggIitlLmluZGV4KyIhIil9aWYo
MTAxMTImZS5mbGFncyl7aWYoMD09KDEmKHQ/dC5mbGFnczowKSkpdGhyb3cgbmV3IEVycm9yKCJJ
bGxlZ2FsIFN0YXRlOiBQcm92aWRlci9EaXJlY3RpdmUgbm9kZXMgbmVlZCB0byBiZSBjaGlsZHJl
biBvZiBlbGVtZW50cyBvciBhbmNob3JzLCBhdCBpbmRleCAiK2UuaW5kZXgrIiEiKX1pZihlLnF1
ZXJ5KXtpZigzMzU1NDQzMiZlLmZsYWdzJiYoIXR8fDA9PSg4MTkyJnQuZmxhZ3MpKSl0aHJvdyBu
ZXcgRXJyb3IoIklsbGVnYWwgU3RhdGU6IENvbnRlbnQgUXVlcnkgbm9kZXMgbmVlZCB0byBiZSBj
aGlsZHJlbiBvZiBkaXJlY3RpdmVzLCBhdCBpbmRleCAiK2UuaW5kZXgrIiEiKTtpZig2NzEwODg2
NCZlLmZsYWdzJiZ0KXRocm93IG5ldyBFcnJvcigiSWxsZWdhbCBTdGF0ZTogVmlldyBRdWVyeSBu
b2RlcyBoYXZlIHRvIGJlIHRvcCBsZXZlbCBub2RlcywgYXQgaW5kZXggIitlLmluZGV4KyIhIil9
aWYoZS5jaGlsZENvdW50KXt2YXIgbz10P3QuaW5kZXgrdC5jaGlsZENvdW50Om4tMTtpZihlLmlu
ZGV4PD1vJiZlLmluZGV4K2UuY2hpbGRDb3VudD5vKXRocm93IG5ldyBFcnJvcigiSWxsZWdhbCBT
dGF0ZTogY2hpbGRDb3VudCBvZiBub2RlIGxlYWRzIG91dHNpZGUgb2YgcGFyZW50LCBhdCBpbmRl
eCAiK2UuaW5kZXgrIiEiKX19ZnVuY3Rpb24geW4odCxlLG4pe3ZhciByPWduKHQucm9vdCx0LnJl
bmRlcmVyLHQsZSxlLmVsZW1lbnQudGVtcGxhdGUpO3JldHVybiB2bihyLHQuY29tcG9uZW50LG4p
LF9uKHIpLHJ9ZnVuY3Rpb24gbW4odCxlLG4pe3ZhciByPWduKHQsdC5yZW5kZXJlcixudWxsLG51
bGwsZSk7cmV0dXJuIHZuKHIsbixuKSxfbihyKSxyfWZ1bmN0aW9uIGduKHQsZSxuLHIsbyl7dmFy
IGk9bmV3IEFycmF5KG8ubm9kZXMubGVuZ3RoKSxzPW8ub3V0cHV0Q291bnQ/bmV3IEFycmF5KG8u
b3V0cHV0Q291bnQpOm51bGw7cmV0dXJue2RlZjpvLHBhcmVudDpuLHZpZXdDb250YWluZXJQYXJl
bnQ6bnVsbCxwYXJlbnROb2RlRGVmOnIsY29udGV4dDpudWxsLGNvbXBvbmVudDpudWxsLG5vZGVz
Omksc3RhdGU6Myxyb290OnQscmVuZGVyZXI6ZSxvbGRWYWx1ZXM6bmV3IEFycmF5KG8uYmluZGlu
Z0NvdW50KSxkaXNwb3NhYmxlczpzfX1mdW5jdGlvbiB2bih0LGUsbil7dC5jb21wb25lbnQ9ZSx0
LmNvbnRleHQ9bn1mdW5jdGlvbiBfbih0KXt2YXIgZTtpZihLdCh0KSl7dmFyIG49dC5wYXJlbnRO
b2RlRGVmO2U9U3QodC5wYXJlbnQsbi5wYXJlbnQuaW5kZXgpLnJlbmRlckVsZW1lbnR9Zm9yKHZh
ciByPXQuZGVmLG89dC5ub2RlcyxpPTA7aTxyLm5vZGVzLmxlbmd0aDtpKyspe3ZhciBzPXIubm9k
ZXNbaV07Wmkuc2V0Q3VycmVudE5vZGUodCxpKTt2YXIgYT12b2lkIDA7c3dpdGNoKDEwMDY3MzUz
NSZzLmZsYWdzKXtjYXNlIDE6dmFyIHU9bGUodCxlLHMpLGM9dm9pZCAwO2lmKDE2Nzc3MjE2JnMu
ZmxhZ3Mpe3ZhciBsPVl0KHMuZWxlbWVudC5jb21wb25lbnRWaWV3KSxwPXMuZWxlbWVudC5jb21w
b25lbnRSZW5kZXJlclR5cGUsZj12b2lkIDA7Zj1wP3Qucm9vdC5yZW5kZXJlckZhY3RvcnkuY3Jl
YXRlUmVuZGVyZXIodSxwKTp0LnJvb3QucmVuZGVyZXIsYz1nbih0LnJvb3QsZix0LHMuZWxlbWVu
dC5jb21wb25lbnRQcm92aWRlcixsKX1wZSh0LGMscyx1KSxhPXtyZW5kZXJFbGVtZW50OnUsY29t
cG9uZW50VmlldzpjLHZpZXdDb250YWluZXI6bnVsbCx0ZW1wbGF0ZTpzLmVsZW1lbnQudGVtcGxh
dGU/VmUodCxzKTp2b2lkIDB9LDgzODg2MDgmcy5mbGFncyYmKGEudmlld0NvbnRhaW5lcj1UZSh0
LHMsYSkpO2JyZWFrO2Nhc2UgMjphPWNuKHQsZSxzKTticmVhaztjYXNlIDI1NjpjYXNlIDUxMjpj
YXNlIDEwMjQ6Y2FzZSAxMjg6dmFyIGg9RmUodCxzKTthPXtpbnN0YW5jZTpofTticmVhaztjYXNl
IDg6dmFyIGg9SGUodCxzKTthPXtpbnN0YW5jZTpofTticmVhaztjYXNlIDgxOTI6dmFyIGg9TGUo
dCxzKTtpZihhPXtpbnN0YW5jZTpofSwxNjM4NCZzLmZsYWdzKXt2bihTdCh0LHMucGFyZW50Lmlu
ZGV4KS5jb21wb25lbnRWaWV3LGgsaCl9YnJlYWs7Y2FzZSAxNjpjYXNlIDMyOmNhc2UgNjQ6YT1Z
ZSh0LHMpO2JyZWFrO2Nhc2UgMzM1NTQ0MzI6Y2FzZSA2NzEwODg2NDphPW5uKCk7YnJlYWs7Y2Fz
ZSA0OmJlKHQsZSxzKSxhPXZvaWQgMH1vW2ldPWF9Vm4odCxncy5DcmVhdGVWaWV3Tm9kZXMpLGpu
KHQsMTAwNjYzMjk2LDEzNDIxNzcyOCwwKX1mdW5jdGlvbiBibih0KXtaaS51cGRhdGVEaXJlY3Rp
dmVzKHQsMSksTW4odCxncy5DaGVja05vQ2hhbmdlcyksWmkudXBkYXRlUmVuZGVyZXIodCwxKSxW
bih0LGdzLkNoZWNrTm9DaGFuZ2VzKX1mdW5jdGlvbiB3bih0KXtaaS51cGRhdGVEaXJlY3RpdmVz
KHQsMCksTW4odCxncy5DaGVja0FuZFVwZGF0ZSksam4odCwzMzU1NDQzMiwyNjg0MzU0NTYsMCks
UWUodCwxMDQ4NTc2fCgxJnQuc3RhdGU/NTI0Mjg4OjApKSxaaS51cGRhdGVSZW5kZXJlcih0LDAp
LFZuKHQsZ3MuQ2hlY2tBbmRVcGRhdGUpLGpuKHQsNjcxMDg4NjQsMjY4NDM1NDU2LDApLFFlKHQs
NDE5NDMwNHwoMSZ0LnN0YXRlPzIwOTcxNTI6MCkpLDImdC5kZWYuZmxhZ3MmJih0LnN0YXRlJj0t
MyksdC5zdGF0ZSY9LTJ9ZnVuY3Rpb24gQ24odCxlLG4scixvLGkscyxhLHUsYyxsLHAsZil7cmV0
dXJuIDA9PT1uP0VuKHQsZSxyLG8saSxzLGEsdSxjLGwscCxmKTpPbih0LGUscil9ZnVuY3Rpb24g
RW4odCxlLG4scixvLGkscyxhLHUsYyxsLHApe3ZhciBmPSExO3N3aXRjaCgxMDA2NzM1MzUmZS5m
bGFncyl7Y2FzZSAxOmY9aGUodCxlLG4scixvLGkscyxhLHUsYyxsLHApO2JyZWFrO2Nhc2UgMjpm
PWxuKHQsZSxuLHIsbyxpLHMsYSx1LGMsbCxwKTticmVhaztjYXNlIDgxOTI6Zj1CZSh0LGUsbixy
LG8saSxzLGEsdSxjLGwscCk7YnJlYWs7Y2FzZSAxNjpjYXNlIDMyOmNhc2UgNjQ6Zj10bih0LGUs
bixyLG8saSxzLGEsdSxjLGwscCl9cmV0dXJuIGZ9ZnVuY3Rpb24gT24odCxlLG4pe3ZhciByPSEx
O3N3aXRjaCgxMDA2NzM1MzUmZS5mbGFncyl7Y2FzZSAxOnI9ZGUodCxlLG4pO2JyZWFrO2Nhc2Ug
MjpyPXBuKHQsZSxuKTticmVhaztjYXNlIDgxOTI6cj1HZSh0LGUsbik7YnJlYWs7Y2FzZSAxNjpj
YXNlIDMyOmNhc2UgNjQ6cj1lbih0LGUsbil9aWYocilmb3IodmFyIG89ZS5iaW5kaW5ncy5sZW5n
dGgsaT1lLmJpbmRpbmdJbmRleCxzPXQub2xkVmFsdWVzLGE9MDthPG87YSsrKXNbaSthXT1uW2Fd
O3JldHVybiByfWZ1bmN0aW9uIHhuKHQsZSxuLHIsbyxpLHMsYSx1LGMsbCxwLGYpe3JldHVybiAw
PT09bj9Tbih0LGUscixvLGkscyxhLHUsYyxsLHAsZik6UG4odCxlLHIpLCExfWZ1bmN0aW9uIFNu
KHQsZSxuLHIsbyxpLHMsYSx1LGMsbCxwKXt2YXIgZj1lLmJpbmRpbmdzLmxlbmd0aDtmPjAmJlV0
KHQsZSwwLG4pLGY+MSYmVXQodCxlLDEsciksZj4yJiZVdCh0LGUsMixvKSxmPjMmJlV0KHQsZSwz
LGkpLGY+NCYmVXQodCxlLDQscyksZj41JiZVdCh0LGUsNSxhKSxmPjYmJlV0KHQsZSw2LHUpLGY+
NyYmVXQodCxlLDcsYyksZj44JiZVdCh0LGUsOCxsKSxmPjkmJlV0KHQsZSw5LHApfWZ1bmN0aW9u
IFBuKHQsZSxuKXtmb3IodmFyIHI9MDtyPG4ubGVuZ3RoO3IrKylVdCh0LGUscixuW3JdKX1mdW5j
dGlvbiBBbih0LGUpe2lmKFR0KHQsZS5pbmRleCkuZGlydHkpdGhyb3cga3QoWmkuY3JlYXRlRGVi
dWdDb250ZXh0KHQsZS5pbmRleCksIlF1ZXJ5ICIrZS5xdWVyeS5pZCsiIG5vdCBkaXJ0eSIsIlF1
ZXJ5ICIrZS5xdWVyeS5pZCsiIGRpcnR5IiwwIT0oMSZ0LnN0YXRlKSl9ZnVuY3Rpb24gVG4odCl7
aWYoISg4JnQuc3RhdGUpKXtpZihNbih0LGdzLkRlc3Ryb3kpLFZuKHQsZ3MuRGVzdHJveSksUWUo
dCw2NTUzNiksdC5kaXNwb3NhYmxlcylmb3IodmFyIGU9MDtlPHQuZGlzcG9zYWJsZXMubGVuZ3Ro
O2UrKyl0LmRpc3Bvc2FibGVzW2VdKCk7dC5yZW5kZXJlci5kZXN0cm95Tm9kZSYma24odCksS3Qo
dCkmJnQucmVuZGVyZXIuZGVzdHJveSgpLHQuc3RhdGV8PTh9fWZ1bmN0aW9uIGtuKHQpe2Zvcih2
YXIgZT10LmRlZi5ub2Rlcy5sZW5ndGgsbj0wO248ZTtuKyspe3ZhciByPXQuZGVmLm5vZGVzW25d
OzEmci5mbGFncz90LnJlbmRlcmVyLmRlc3Ryb3lOb2RlKFN0KHQsbikucmVuZGVyRWxlbWVudCk6
MiZyLmZsYWdzJiZ0LnJlbmRlcmVyLmRlc3Ryb3lOb2RlKHh0KHQsbikucmVuZGVyVGV4dCl9fWZ1
bmN0aW9uIFZuKHQsZSl7dmFyIG49dC5kZWY7aWYoMTY3NzcyMTYmbi5ub2RlRmxhZ3MpZm9yKHZh
ciByPTA7cjxuLm5vZGVzLmxlbmd0aDtyKyspe3ZhciBvPW4ubm9kZXNbcl07MTY3NzcyMTYmby5m
bGFncz9ObihTdCh0LHIpLmNvbXBvbmVudFZpZXcsZSk6MD09KDE2Nzc3MjE2Jm8uY2hpbGRGbGFn
cykmJihyKz1vLmNoaWxkQ291bnQpfX1mdW5jdGlvbiBNbih0LGUpe3ZhciBuPXQuZGVmO2lmKDgz
ODg2MDgmbi5ub2RlRmxhZ3MpZm9yKHZhciByPTA7cjxuLm5vZGVzLmxlbmd0aDtyKyspe3ZhciBv
PW4ubm9kZXNbcl07aWYoODM4ODYwOCZvLmZsYWdzKWZvcih2YXIgaT1TdCh0LHIpLnZpZXdDb250
YWluZXIuX2VtYmVkZGVkVmlld3Mscz0wO3M8aS5sZW5ndGg7cysrKU5uKGlbc10sZSk7ZWxzZSAw
PT0oODM4ODYwOCZvLmNoaWxkRmxhZ3MpJiYocis9by5jaGlsZENvdW50KX19ZnVuY3Rpb24gTm4o
dCxlKXt2YXIgbj10LnN0YXRlO3N3aXRjaChlKXtjYXNlIGdzLkNoZWNrTm9DaGFuZ2VzOjImbiYm
MD09KDEyJm4pJiZibih0KTticmVhaztjYXNlIGdzLkNoZWNrQW5kVXBkYXRlOjImbiYmMD09KDEy
Jm4pJiZ3bih0KTticmVhaztjYXNlIGdzLkRlc3Ryb3k6VG4odCk7YnJlYWs7Y2FzZSBncy5DcmVh
dGVWaWV3Tm9kZXM6X24odCl9fWZ1bmN0aW9uIGpuKHQsZSxuLHIpe2lmKHQuZGVmLm5vZGVGbGFn
cyZlJiZ0LmRlZi5ub2RlRmxhZ3Mmbilmb3IodmFyIG89dC5kZWYubm9kZXMubGVuZ3RoLGk9MDtp
PG87aSsrKXt2YXIgcz10LmRlZi5ub2Rlc1tpXTtpZihzLmZsYWdzJmUmJnMuZmxhZ3Mmbilzd2l0
Y2goWmkuc2V0Q3VycmVudE5vZGUodCxzLmluZGV4KSxyKXtjYXNlIDA6b24odCxzKTticmVhaztj
YXNlIDE6QW4odCxzKX1zLmNoaWxkRmxhZ3MmZSYmcy5jaGlsZEZsYWdzJm58fChpKz1zLmNoaWxk
Q291bnQpfX1mdW5jdGlvbiBSbigpe2lmKCF2cyl7dnM9ITA7dmFyIHQ9cnQoKT9JbigpOkRuKCk7
Wmkuc2V0Q3VycmVudE5vZGU9dC5zZXRDdXJyZW50Tm9kZSxaaS5jcmVhdGVSb290Vmlldz10LmNy
ZWF0ZVJvb3RWaWV3LFppLmNyZWF0ZUVtYmVkZGVkVmlldz10LmNyZWF0ZUVtYmVkZGVkVmlldyxa
aS5jaGVja0FuZFVwZGF0ZVZpZXc9dC5jaGVja0FuZFVwZGF0ZVZpZXcsWmkuY2hlY2tOb0NoYW5n
ZXNWaWV3PXQuY2hlY2tOb0NoYW5nZXNWaWV3LFppLmRlc3Ryb3lWaWV3PXQuZGVzdHJveVZpZXcs
WmkucmVzb2x2ZURlcD1XZSxaaS5jcmVhdGVEZWJ1Z0NvbnRleHQ9dC5jcmVhdGVEZWJ1Z0NvbnRl
eHQsWmkuaGFuZGxlRXZlbnQ9dC5oYW5kbGVFdmVudCxaaS51cGRhdGVEaXJlY3RpdmVzPXQudXBk
YXRlRGlyZWN0aXZlcyxaaS51cGRhdGVSZW5kZXJlcj10LnVwZGF0ZVJlbmRlcmVyLFppLmRpcnR5
UGFyZW50UXVlcmllcz1ybn19ZnVuY3Rpb24gRG4oKXtyZXR1cm57c2V0Q3VycmVudE5vZGU6ZnVu
Y3Rpb24oKXt9LGNyZWF0ZVJvb3RWaWV3OkZuLGNyZWF0ZUVtYmVkZGVkVmlldzp5bixjaGVja0Fu
ZFVwZGF0ZVZpZXc6d24sY2hlY2tOb0NoYW5nZXNWaWV3OmJuLGRlc3Ryb3lWaWV3OlRuLGNyZWF0
ZURlYnVnQ29udGV4dDpmdW5jdGlvbih0LGUpe3JldHVybiBuZXcgT3ModCxlKX0saGFuZGxlRXZl
bnQ6ZnVuY3Rpb24odCxlLG4scil7cmV0dXJuIHQuZGVmLmhhbmRsZUV2ZW50KHQsZSxuLHIpfSx1
cGRhdGVEaXJlY3RpdmVzOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuZGVmLnVwZGF0ZURpcmVjdGl2
ZXMoMD09PWU/VW46Qm4sdCl9LHVwZGF0ZVJlbmRlcmVyOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQu
ZGVmLnVwZGF0ZVJlbmRlcmVyKDA9PT1lP1VuOkJuLHQpfX19ZnVuY3Rpb24gSW4oKXtyZXR1cm57
c2V0Q3VycmVudE5vZGU6V24sY3JlYXRlUm9vdFZpZXc6SG4sY3JlYXRlRW1iZWRkZWRWaWV3Okdu
LGNoZWNrQW5kVXBkYXRlVmlldzp6bixjaGVja05vQ2hhbmdlc1ZpZXc6cW4sZGVzdHJveVZpZXc6
Wm4sY3JlYXRlRGVidWdDb250ZXh0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5ldyBPcyh0LGUpfSxo
YW5kbGVFdmVudDpLbix1cGRhdGVEaXJlY3RpdmVzOlhuLHVwZGF0ZVJlbmRlcmVyOlFufX1mdW5j
dGlvbiBGbih0LGUsbixyLG8saSl7cmV0dXJuIG1uKExuKHQsbyxvLmluamVjdG9yLmdldChpaSks
ZSxuKSxyLGkpfWZ1bmN0aW9uIEhuKHQsZSxuLHIsbyxpKXt2YXIgcz1vLmluamVjdG9yLmdldChp
aSksYT1Mbih0LG8sbmV3IHhzKHMpLGUsbik7cmV0dXJuIGFyKF9zLmNyZWF0ZSxtbixudWxsLFth
LHIsaV0pfWZ1bmN0aW9uIExuKHQsZSxuLHIsbyl7cmV0dXJue25nTW9kdWxlOmUsaW5qZWN0b3I6
dCxwcm9qZWN0YWJsZU5vZGVzOnIsc2VsZWN0b3JPck5vZGU6byxzYW5pdGl6ZXI6ZS5pbmplY3Rv
ci5nZXQocWkpLHJlbmRlcmVyRmFjdG9yeTpuLHJlbmRlcmVyOm4uY3JlYXRlUmVuZGVyZXIobnVs
bCxudWxsKX19ZnVuY3Rpb24gVW4odCxlLG4scixvLGkscyxhLHUsYyxsLHAsZil7dmFyIGg9dC5k
ZWYubm9kZXNbZV07cmV0dXJuIENuKHQsaCxuLHIsbyxpLHMsYSx1LGMsbCxwLGYpLDExMiZoLmZs
YWdzP0F0KHQsZSkudmFsdWU6dm9pZCAwfWZ1bmN0aW9uIEJuKHQsZSxuLHIsbyxpLHMsYSx1LGMs
bCxwLGYpe3ZhciBoPXQuZGVmLm5vZGVzW2VdO3JldHVybiB4bih0LGgsbixyLG8saSxzLGEsdSxj
LGwscCxmKSwxMTImaC5mbGFncz9BdCh0LGUpLnZhbHVlOnZvaWQgMH1mdW5jdGlvbiBHbih0LGUs
bil7cmV0dXJuIGFyKF9zLmNyZWF0ZSx5bixudWxsLFt0LGUsbl0pfWZ1bmN0aW9uIHpuKHQpe3Jl
dHVybiBhcihfcy5kZXRlY3RDaGFuZ2VzLHduLG51bGwsW3RdKX1mdW5jdGlvbiBxbih0KXtyZXR1
cm4gYXIoX3MuY2hlY2tOb0NoYW5nZXMsYm4sbnVsbCxbdF0pfWZ1bmN0aW9uIFpuKHQpe3JldHVy
biBhcihfcy5kZXN0cm95LFRuLG51bGwsW3RdKX1mdW5jdGlvbiBXbih0LGUpe3dzPXQsQ3M9ZX1m
dW5jdGlvbiBLbih0LGUsbixyKXtyZXR1cm4gV24odCxlKSxhcihfcy5oYW5kbGVFdmVudCx0LmRl
Zi5oYW5kbGVFdmVudCxudWxsLFt0LGUsbixyXSl9ZnVuY3Rpb24gWG4odCxlKXtmdW5jdGlvbiBu
KHQsbixyKXtmb3IodmFyIG89W10saT0zO2k8YXJndW1lbnRzLmxlbmd0aDtpKyspb1tpLTNdPWFy
Z3VtZW50c1tpXTt2YXIgcz10LmRlZi5ub2Rlc1tuXTtyZXR1cm4gMD09PWU/Sm4odCxzLHIsbyk6
JG4odCxzLHIsbyksODE5MiZzLmZsYWdzJiZXbih0LG5yKHQsbikpLDExMiZzLmZsYWdzP0F0KHQs
cy5pbmRleCkudmFsdWU6dm9pZCAwfWlmKDgmdC5zdGF0ZSl0aHJvdyBSdChfc1tic10pO3JldHVy
biBXbih0LG5yKHQsMCkpLHQuZGVmLnVwZGF0ZURpcmVjdGl2ZXMobix0KX1mdW5jdGlvbiBRbih0
LGUpe2Z1bmN0aW9uIG4odCxuLHIpe2Zvcih2YXIgbz1bXSxpPTM7aTxhcmd1bWVudHMubGVuZ3Ro
O2krKylvW2ktM109YXJndW1lbnRzW2ldO3ZhciBzPXQuZGVmLm5vZGVzW25dO3JldHVybiAwPT09
ZT9Kbih0LHMscixvKTokbih0LHMscixvKSwzJnMuZmxhZ3MmJlduKHQscnIodCxuKSksMTEyJnMu
ZmxhZ3M/QXQodCxzLmluZGV4KS52YWx1ZTp2b2lkIDB9aWYoOCZ0LnN0YXRlKXRocm93IFJ0KF9z
W2JzXSk7cmV0dXJuIFduKHQscnIodCwwKSksdC5kZWYudXBkYXRlUmVuZGVyZXIobix0KX1mdW5j
dGlvbiBKbih0LGUsbixyKXtpZihDbi5hcHBseSh2b2lkIDAsW3QsZSxuXS5jb25jYXQocikpKXt2
YXIgbz0xPT09bj9yWzBdOnI7aWYoODE5MiZlLmZsYWdzKXtmb3IodmFyIGk9e30scz0wO3M8ZS5i
aW5kaW5ncy5sZW5ndGg7cysrKXt2YXIgYT1lLmJpbmRpbmdzW3NdLHU9b1tzXTs4JmEuZmxhZ3Mm
JihpW1luKGEubm9uTWluaWZpZWROYW1lKV09ZXIodSkpfXZhciBjPWUucGFyZW50LGw9U3QodCxj
LmluZGV4KS5yZW5kZXJFbGVtZW50O2lmKGMuZWxlbWVudC5uYW1lKWZvcih2YXIgcCBpbiBpKXt2
YXIgdT1pW3BdO251bGwhPXU/dC5yZW5kZXJlci5zZXRBdHRyaWJ1dGUobCxwLHUpOnQucmVuZGVy
ZXIucmVtb3ZlQXR0cmlidXRlKGwscCl9ZWxzZSB0LnJlbmRlcmVyLnNldFZhbHVlKGwsImJpbmRp
bmdzPSIrSlNPTi5zdHJpbmdpZnkoaSxudWxsLDIpKX19fWZ1bmN0aW9uICRuKHQsZSxuLHIpe3hu
LmFwcGx5KHZvaWQgMCxbdCxlLG5dLmNvbmNhdChyKSl9ZnVuY3Rpb24gWW4odCl7cmV0dXJuIm5n
LXJlZmxlY3QtIisodD10cih0LnJlcGxhY2UoL1skQF0vZywiXyIpKSl9ZnVuY3Rpb24gdHIodCl7
cmV0dXJuIHQucmVwbGFjZShFcyxmdW5jdGlvbigpe2Zvcih2YXIgdD1bXSxlPTA7ZTxhcmd1bWVu
dHMubGVuZ3RoO2UrKyl0W2VdPWFyZ3VtZW50c1tlXTtyZXR1cm4iLSIrdFsxXS50b0xvd2VyQ2Fz
ZSgpfSl9ZnVuY3Rpb24gZXIodCl7dHJ5e3JldHVybiBudWxsIT10P3QudG9TdHJpbmcoKS5zbGlj
ZSgwLDMwKTp0fWNhdGNoKHQpe3JldHVybiJbRVJST1JdIEV4Y2VwdGlvbiB3aGlsZSB0cnlpbmcg
dG8gc2VyaWFsaXplIHRoZSB2YWx1ZSJ9fWZ1bmN0aW9uIG5yKHQsZSl7Zm9yKHZhciBuPWU7bjx0
LmRlZi5ub2Rlcy5sZW5ndGg7bisrKXt2YXIgcj10LmRlZi5ub2Rlc1tuXTtpZig4MTkyJnIuZmxh
Z3MmJnIuYmluZGluZ3MmJnIuYmluZGluZ3MubGVuZ3RoKXJldHVybiBufXJldHVybiBudWxsfWZ1
bmN0aW9uIHJyKHQsZSl7Zm9yKHZhciBuPWU7bjx0LmRlZi5ub2Rlcy5sZW5ndGg7bisrKXt2YXIg
cj10LmRlZi5ub2Rlc1tuXTtpZigzJnIuZmxhZ3MmJnIuYmluZGluZ3MmJnIuYmluZGluZ3MubGVu
Z3RoKXJldHVybiBufXJldHVybiBudWxsfWZ1bmN0aW9uIG9yKHQsZSl7Zm9yKHZhciBuPS0xLHI9
MDtyPD1lO3IrKyl7MyZ0Lm5vZGVzW3JdLmZsYWdzJiZuKyt9cmV0dXJuIG59ZnVuY3Rpb24gaXIo
dCl7Zm9yKDt0JiYhS3QodCk7KXQ9dC5wYXJlbnQ7cmV0dXJuIHQucGFyZW50P1N0KHQucGFyZW50
LHF0KHQpLmluZGV4KTpudWxsfWZ1bmN0aW9uIHNyKHQsZSxuKXtmb3IodmFyIHIgaW4gZS5yZWZl
cmVuY2VzKW5bcl09YW4odCxlLGUucmVmZXJlbmNlc1tyXSl9ZnVuY3Rpb24gYXIodCxlLG4scil7
dmFyIG89YnMsaT13cyxzPUNzO3RyeXticz10O3ZhciBhPWUuYXBwbHkobixyKTtyZXR1cm4gd3M9
aSxDcz1zLGJzPW8sYX1jYXRjaCh0KXtpZihqdCh0KXx8IXdzKXRocm93IHQ7dGhyb3cgd3Muc3Rh
dGV8PTQsVnQodCx1cigpKX19ZnVuY3Rpb24gdXIoKXtyZXR1cm4gd3M/bmV3IE9zKHdzLENzKTpu
dWxsfS8qKgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8KKy8qKgorICogQGxpY2Vu
c2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAq
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8v
YW5ndWxhci5pby9saWNlbnNlCisgKi8KK2Z1bmN0aW9uIGNyKCl7cmV0dXJuIEZpfWZ1bmN0aW9u
IGxyKCl7cmV0dXJuIEhpfWZ1bmN0aW9uIHByKHQpe3JldHVybiB0fHwiZW4tVVMifWZ1bmN0aW9u
IGZyKCl7Um4oKX12YXIgaHI9bigickNUZiIpLGRyPShuLm4oaHIpLG4oIjFLVDAiKSkseXI9KG4u
bihkciksbigiK2F5dyIpKSxtcj0obi5uKHlyKSxuKCJFRXI0IikpO24ubihtcik7bi5kKGUsInIi
LGZ1bmN0aW9uKCl7cmV0dXJuIG5pfSksbi5kKGUsImEiLGZ1bmN0aW9uKCl7cmV0dXJuIG50fSks
bi5kKGUsIksiLGZ1bmN0aW9uKCl7cmV0dXJuIHJ0fSksbi5kKGUsIk8iLGZ1bmN0aW9uKCl7cmV0
dXJuIGl0fSksbi5kKGUsImsiLGZ1bmN0aW9uKCl7cmV0dXJuIFlvfSksbi5kKGUsInMiLGZ1bmN0
aW9uKCl7cmV0dXJuIF9vfSksbi5kKGUsIk4iLGZ1bmN0aW9uKCl7cmV0dXJuIHdvfSksbi5kKGUs
Ik0iLGZ1bmN0aW9uKCl7cmV0dXJuIENvfSksbi5kKGUsInEiLGZ1bmN0aW9uKCl7cmV0dXJuIGdv
fSksbi5kKGUsImwiLGZ1bmN0aW9uKCl7cmV0dXJuIHZvfSksbi5kKGUsIkciLGZ1bmN0aW9uKCl7
cmV0dXJuIGR0fSksbi5kKGUsImkiLGZ1bmN0aW9uKCl7cmV0dXJuIHFvfSksbi5kKGUsIkYiLGZ1
bmN0aW9uKCl7cmV0dXJuIGV0fSksbi5kKGUsImMiLGZ1bmN0aW9uKCl7cmV0dXJuIEJpfSksbi5k
KGUsIm8iLGZ1bmN0aW9uKCl7cmV0dXJuIFBzfSksbi5kKGUsIlIiLGZ1bmN0aW9uKCl7cmV0dXJu
IEdvfSksbi5kKGUsInAiLGZ1bmN0aW9uKCl7cmV0dXJuICRyfSksbi5kKGUsInYiLGZ1bmN0aW9u
KCl7cmV0dXJuIHFpfSksbi5kKGUsIkwiLGZ1bmN0aW9uKCl7cmV0dXJuIHppfSksbi5kKGUsIl8z
IixmdW5jdGlvbigpe3JldHVybiBQcn0pLG4uZChlLCJVIixmdW5jdGlvbigpe3JldHVybiBWcn0p
LG4uZChlLCJYIixmdW5jdGlvbigpe3JldHVybiBOcn0pLG4uZChlLCJfMTMiLGZ1bmN0aW9uKCl7
cmV0dXJuIGpyfSksbi5kKGUsIl83IixmdW5jdGlvbigpe3JldHVybiBNcn0pLG4uZChlLCJBIixm
dW5jdGlvbigpe3JldHVybiBScn0pLG4uZChlLCJJIixmdW5jdGlvbigpe3JldHVybiBEcn0pLG4u
ZChlLCJCIixmdW5jdGlvbigpe3JldHVybiBJcn0pLG4uZChlLCJfOSIsZnVuY3Rpb24oKXtyZXR1
cm4gZH0pLG4uZChlLCJfMTAiLGZ1bmN0aW9uKCl7cmV0dXJuIEtyfSksbi5kKGUsIkQiLGZ1bmN0
aW9uKCl7cmV0dXJuIF9yfSksbi5kKGUsIkUiLGZ1bmN0aW9uKCl7cmV0dXJuIEhyfSksbi5kKGUs
IkgiLGZ1bmN0aW9uKCl7cmV0dXJuIExyfSksbi5kKGUsInoiLGZ1bmN0aW9uKCl7cmV0dXJuIFVy
fSksbi5kKGUsIl8xMiIsZnVuY3Rpb24oKXtyZXR1cm4gQnJ9KSxuLmQoZSwiUSIsZnVuY3Rpb24o
KXtyZXR1cm4gR3J9KSxuLmQoZSwiXzIiLGZ1bmN0aW9uKCl7cmV0dXJuIHpyfSksbi5kKGUsImgi
LGZ1bmN0aW9uKCl7cmV0dXJuIHpvfSksbi5kKGUsIlciLGZ1bmN0aW9uKCl7cmV0dXJuIG9pfSks
bi5kKGUsInciLGZ1bmN0aW9uKCl7cmV0dXJuIGlpfSksbi5kKGUsIkoiLGZ1bmN0aW9uKCl7cmV0
dXJuIHNpfSksbi5kKGUsImQiLGZ1bmN0aW9uKCl7cmV0dXJuIHhvfSksbi5kKGUsIloiLGZ1bmN0
aW9uKCl7cmV0dXJuIFZvfSksbi5kKGUsIlYiLGZ1bmN0aW9uKCl7cmV0dXJuIHVpfSksbi5kKGUs
InkiLGZ1bmN0aW9uKCl7cmV0dXJuIElvfSksbi5kKGUsIlkiLGZ1bmN0aW9uKCl7cmV0dXJuIERv
fSksbi5kKGUsIl8xIixmdW5jdGlvbigpe3JldHVybiB5aX0pLG4uZChlLCJfMCIsZnVuY3Rpb24o
KXtyZXR1cm4gbWl9KSxuLmQoZSwiXzgiLGZ1bmN0aW9uKCl7cmV0dXJuIGdpfSksbi5kKGUsInQi
LGZ1bmN0aW9uKCl7cmV0dXJuIGppfSksbi5kKGUsInUiLGZ1bmN0aW9uKCl7cmV0dXJuIFJpfSks
bi5kKGUsIl80IixmdW5jdGlvbigpe3JldHVybiBFaX0pLG4uZChlLCJQIixmdW5jdGlvbigpe3Jl
dHVybiBVaX0pLG4uZChlLCJTIixmdW5jdGlvbigpe3JldHVybiB2dH0pLG4uZChlLCJuIixmdW5j
dGlvbigpe3JldHVybiBPb30pLG4uZChlLCJDIixmdW5jdGlvbigpe3JldHVybiBFcn0pLG4uZChl
LCJfMTEiLGZ1bmN0aW9uKCl7cmV0dXJuIGl9KSxuLmQoZSwiVCIsZnVuY3Rpb24oKXtyZXR1cm4g
c30pLG4uZChlLCJfNiIsZnVuY3Rpb24oKXtyZXR1cm4gWn0pLG4uZChlLCJfNSIsZnVuY3Rpb24o
KXtyZXR1cm4gcX0pLG4uZChlLCJ4IixmdW5jdGlvbigpe3JldHVybiBIb30pLG4uZChlLCJfMTgi
LGZ1bmN0aW9uKCl7cmV0dXJuIHVlfSksbi5kKGUsIl8yMiIsZnVuY3Rpb24oKXtyZXR1cm4gQWV9
KSxuLmQoZSwiXzE0IixmdW5jdGlvbigpe3JldHVybiBJdH0pLG4uZChlLCJfMTkiLGZ1bmN0aW9u
KCl7cmV0dXJuIFJlfSksbi5kKGUsIl8xNiIsZnVuY3Rpb24oKXtyZXR1cm4gY2V9KSxuLmQoZSwi
XzIwIixmdW5jdGlvbigpe3JldHVybiBOZX0pLG4uZChlLCJfMjEiLGZ1bmN0aW9uKCl7cmV0dXJu
IERlfSksbi5kKGUsIl8xNyIsZnVuY3Rpb24oKXtyZXR1cm4gdW59KSxuLmQoZSwiXzE1IixmdW5j
dGlvbigpe3JldHVybiBobn0pLG4uZChlLCJqIixmdW5jdGlvbigpe3JldHVybiBmcn0pLG4uZChl
LCJmIixmdW5jdGlvbigpe3JldHVybiBjcn0pLG4uZChlLCJnIixmdW5jdGlvbigpe3JldHVybiBs
cn0pLG4uZChlLCJiIixmdW5jdGlvbigpe3JldHVybiBwcn0pLG4uZChlLCJtIixmdW5jdGlvbigp
e3JldHVybiByaX0pLG4uZChlLCJlIixmdW5jdGlvbigpe3JldHVybiBXfSk7dmFyIGdyPXRoaXMm
JnRoaXMuX19leHRlbmRzfHxmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4oKXt0aGlzLmNvbnN0cnVj
dG9yPXR9Zm9yKHZhciByIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShyKSYmKHRbcl09ZVtyXSk7dC5w
cm90b3R5cGU9bnVsbD09PWU/T2JqZWN0LmNyZWF0ZShlKToobi5wcm90b3R5cGU9ZS5wcm90b3R5
cGUsbmV3IG4pfSx2cj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5fZGVzYz10fXJldHVy
biB0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJUb2tlbiAiK3RoaXMuX2Rl
c2N9LHR9KCksX3I9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXtyZXR1cm4gdC5jYWxsKHRoaXMs
ZSl8fHRoaXN9cmV0dXJuIGdyKGUsdCksZS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXty
ZXR1cm4iSW5qZWN0aW9uVG9rZW4gIit0aGlzLl9kZXNjfSxlfSh2ciksYnI9InVuZGVmaW5lZCIh
PXR5cGVvZiB3aW5kb3cmJndpbmRvdyx3cj0idW5kZWZpbmVkIiE9dHlwZW9mIHNlbGYmJiJ1bmRl
ZmluZWQiIT10eXBlb2YgV29ya2VyR2xvYmFsU2NvcGUmJnNlbGYgaW5zdGFuY2VvZiBXb3JrZXJH
bG9iYWxTY29wZSYmc2VsZixDcj12b2lkIDAhPT10JiZ0LEVyPWJyfHxDcnx8d3IsT3I9bnVsbCx4
cj0wLFNyPUVyLlJlZmxlY3QsUHI9KG5ldyBfcigiQW5hbHl6ZUZvckVudHJ5Q29tcG9uZW50cyIp
LGYoIkF0dHJpYnV0ZSIsW1siYXR0cmlidXRlTmFtZSIsdm9pZCAwXV0pKSxBcj1mdW5jdGlvbigp
e2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHR9KCksVHI9KGgoIkNvbnRlbnRDaGlsZHJlbiIsW1sic2Vs
ZWN0b3IiLHZvaWQgMF0se2ZpcnN0OiExLGlzVmlld1F1ZXJ5OiExLGRlc2NlbmRhbnRzOiExLHJl
YWQ6dm9pZCAwfV0sQXIpLGgoIkNvbnRlbnRDaGlsZCIsW1sic2VsZWN0b3IiLHZvaWQgMF0se2Zp
cnN0OiEwLGlzVmlld1F1ZXJ5OiExLGRlc2NlbmRhbnRzOiEwLHJlYWQ6dm9pZCAwfV0sQXIpLGgo
IlZpZXdDaGlsZHJlbiIsW1sic2VsZWN0b3IiLHZvaWQgMF0se2ZpcnN0OiExLGlzVmlld1F1ZXJ5
OiEwLGRlc2NlbmRhbnRzOiEwLHJlYWQ6dm9pZCAwfV0sQXIpLGgoIlZpZXdDaGlsZCIsW1sic2Vs
ZWN0b3IiLHZvaWQgMF0se2ZpcnN0OiEwLGlzVmlld1F1ZXJ5OiEwLGRlc2NlbmRhbnRzOiEwLHJl
YWQ6dm9pZCAwfV0sQXIpLHt9KTtUci5PblB1c2g9MCxUci5EZWZhdWx0PTEsVHJbVHIuT25QdXNo
XT0iT25QdXNoIixUcltUci5EZWZhdWx0XT0iRGVmYXVsdCI7dmFyIGtyPXt9O2tyLkNoZWNrT25j
ZT0wLGtyLkNoZWNrZWQ9MSxrci5DaGVja0Fsd2F5cz0yLGtyLkRldGFjaGVkPTMsa3IuRXJyb3Jl
ZD00LGtyLkRlc3Ryb3llZD01LGtyW2tyLkNoZWNrT25jZV09IkNoZWNrT25jZSIsa3Jba3IuQ2hl
Y2tlZF09IkNoZWNrZWQiLGtyW2tyLkNoZWNrQWx3YXlzXT0iQ2hlY2tBbHdheXMiLGtyW2tyLkRl
dGFjaGVkXT0iRGV0YWNoZWQiLGtyW2tyLkVycm9yZWRdPSJFcnJvcmVkIixrcltrci5EZXN0cm95
ZWRdPSJEZXN0cm95ZWQiOy8qKgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8KK3Zh
ciBWcj1sKCJEaXJlY3RpdmUiLHtzZWxlY3Rvcjp2b2lkIDAsaW5wdXRzOnZvaWQgMCxvdXRwdXRz
OnZvaWQgMCxob3N0OnZvaWQgMCxwcm92aWRlcnM6dm9pZCAwLGV4cG9ydEFzOnZvaWQgMCxxdWVy
aWVzOnZvaWQgMH0pLE1yPShsKCJDb21wb25lbnQiLHtzZWxlY3Rvcjp2b2lkIDAsaW5wdXRzOnZv
aWQgMCxvdXRwdXRzOnZvaWQgMCxob3N0OnZvaWQgMCxleHBvcnRBczp2b2lkIDAsbW9kdWxlSWQ6
dm9pZCAwLHByb3ZpZGVyczp2b2lkIDAsdmlld1Byb3ZpZGVyczp2b2lkIDAsY2hhbmdlRGV0ZWN0
aW9uOlRyLkRlZmF1bHQscXVlcmllczp2b2lkIDAsdGVtcGxhdGVVcmw6dm9pZCAwLHRlbXBsYXRl
OnZvaWQgMCxzdHlsZVVybHM6dm9pZCAwLHN0eWxlczp2b2lkIDAsYW5pbWF0aW9uczp2b2lkIDAs
ZW5jYXBzdWxhdGlvbjp2b2lkIDAsaW50ZXJwb2xhdGlvbjp2b2lkIDAsZW50cnlDb21wb25lbnRz
OnZvaWQgMH0sVnIpLGwoIlBpcGUiLHtuYW1lOnZvaWQgMCxwdXJlOiEwfSkpLE5yPWgoIklucHV0
IixbWyJiaW5kaW5nUHJvcGVydHlOYW1lIix2b2lkIDBdXSksanI9aCgiT3V0cHV0IixbWyJiaW5k
aW5nUHJvcGVydHlOYW1lIix2b2lkIDBdXSksUnI9KGgoIkhvc3RCaW5kaW5nIixbWyJob3N0UHJv
cGVydHlOYW1lIix2b2lkIDBdXSksaCgiSG9zdExpc3RlbmVyIixbWyJldmVudE5hbWUiLHZvaWQg
MF0sWyJhcmdzIixbXV1dKSxsKCJOZ01vZHVsZSIse3Byb3ZpZGVyczp2b2lkIDAsZGVjbGFyYXRp
b25zOnZvaWQgMCxpbXBvcnRzOnZvaWQgMCxleHBvcnRzOnZvaWQgMCxlbnRyeUNvbXBvbmVudHM6
dm9pZCAwLGJvb3RzdHJhcDp2b2lkIDAsc2NoZW1hczp2b2lkIDAsaWQ6dm9pZCAwfSkpLERyPXt9
O0RyLkVtdWxhdGVkPTAsRHIuTmF0aXZlPTEsRHIuTm9uZT0yLERyW0RyLkVtdWxhdGVkXT0iRW11
bGF0ZWQiLERyW0RyLk5hdGl2ZV09Ik5hdGl2ZSIsRHJbRHIuTm9uZV09Ik5vbmUiO3ZhciBJcj0o
ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3ZhciBlPXZvaWQgMD09PXQ/e306dCxuPWUudGVtcGxh
dGVVcmwscj1lLnRlbXBsYXRlLG89ZS5lbmNhcHN1bGF0aW9uLGk9ZS5zdHlsZXMscz1lLnN0eWxl
VXJscyxhPWUuYW5pbWF0aW9ucyx1PWUuaW50ZXJwb2xhdGlvbjt0aGlzLnRlbXBsYXRlVXJsPW4s
dGhpcy50ZW1wbGF0ZT1yLHRoaXMuc3R5bGVVcmxzPXMsdGhpcy5zdHlsZXM9aSx0aGlzLmVuY2Fw
c3VsYXRpb249byx0aGlzLmFuaW1hdGlvbnM9YSx0aGlzLmludGVycG9sYXRpb249dX19KCksZnVu
Y3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuZnVsbD10fXJldHVybiBPYmplY3QuZGVmaW5lUHJv
cGVydHkodC5wcm90b3R5cGUsIm1ham9yIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZnVs
bC5zcGxpdCgiLiIpWzBdfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwibWlub3IiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4g
dGhpcy5mdWxsLnNwbGl0KCIuIilbMV19LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSks
T2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJwYXRjaCIse2dldDpmdW5jdGlvbigp
e3JldHVybiB0aGlzLmZ1bGwuc3BsaXQoIi4iKS5zbGljZSgyKS5qb2luKCIuIil9LGVudW1lcmFi
bGU6ITAsY29uZmlndXJhYmxlOiEwfSksdH0oKSksRnI9bmV3IElyKCI0LjAuMiIpLEhyPWYoIklu
amVjdCIsW1sidG9rZW4iLHZvaWQgMF1dKSxMcj1mKCJPcHRpb25hbCIsW10pLFVyPWwoIkluamVj
dGFibGUiLFtdKSxCcj1mKCJTZWxmIixbXSksR3I9ZigiU2tpcFNlbGYiLFtdKSx6cj1mKCJIb3N0
IixbXSkscXI9bmV3IE9iamVjdCxacj1xcixXcj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0
dXJuIHQucHJvdG90eXBlLmdldD1mdW5jdGlvbih0LGUpe2lmKHZvaWQgMD09PWUmJihlPXFyKSxl
PT09cXIpdGhyb3cgbmV3IEVycm9yKCJObyBwcm92aWRlciBmb3IgIitzKHQpKyIhIik7cmV0dXJu
IGV9LHR9KCksS3I9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5n
ZXQ9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLmdldD1mdW5jdGlvbih0LGUpe30sdH0oKTtL
ci5USFJPV19JRl9OT1RfRk9VTkQ9cXIsS3IuTlVMTD1uZXcgV3I7LyoqCisgKiBAbGljZW5zZQor
ICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1
bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFyIFhyPSJuZ0RlYnVnQ29udGV4dCIsUXI9Im5nT3JpZ2lu
YWxFcnJvciIsSnI9Im5nRXJyb3JMb2dnZXIiLCRyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0
aGlzLl9jb25zb2xlPWNvbnNvbGV9cmV0dXJuIHQucHJvdG90eXBlLmhhbmRsZUVycm9yPWZ1bmN0
aW9uKHQpe3ZhciBlPXRoaXMuX2ZpbmRPcmlnaW5hbEVycm9yKHQpLG49dGhpcy5fZmluZENvbnRl
eHQodCkscj12KHQpO3IodGhpcy5fY29uc29sZSwiRVJST1IiLHQpLGUmJnIodGhpcy5fY29uc29s
ZSwiT1JJR0lOQUwgRVJST1IiLGUpLG4mJnIodGhpcy5fY29uc29sZSwiRVJST1IgQ09OVEVYVCIs
bil9LHQucHJvdG90eXBlLl9maW5kQ29udGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gdD9tKHQpP20o
dCk6dGhpcy5fZmluZENvbnRleHQoZyh0KSk6bnVsbH0sdC5wcm90b3R5cGUuX2ZpbmRPcmlnaW5h
bEVycm9yPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1nKHQpO2UmJmcoZSk7KWU9ZyhlKTtyZXR1cm4g
ZX0sdH0oKSxZcj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXtpZih0aGlzLnRva2VuPXQsdGhp
cy5pZD1lLCF0KXRocm93IG5ldyBFcnJvcigiVG9rZW4gbXVzdCBiZSBkZWZpbmVkISIpfXJldHVy
biBPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImRpc3BsYXlOYW1lIix7Z2V0OmZ1
bmN0aW9uKCl7cmV0dXJuIHModGhpcy50b2tlbil9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxl
OiEwfSksdC5nZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIGVvLmdldCh5KHQpKX0sT2JqZWN0LmRlZmlu
ZVByb3BlcnR5KHQsIm51bWJlck9mS2V5cyIse2dldDpmdW5jdGlvbigpe3JldHVybiBlby5udW1i
ZXJPZktleXN9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdH0oKSx0bz1mdW5jdGlv
bigpe2Z1bmN0aW9uIHQoKXt0aGlzLl9hbGxLZXlzPW5ldyBNYXB9cmV0dXJuIHQucHJvdG90eXBl
LmdldD1mdW5jdGlvbih0KXtpZih0IGluc3RhbmNlb2YgWXIpcmV0dXJuIHQ7aWYodGhpcy5fYWxs
S2V5cy5oYXModCkpcmV0dXJuIHRoaXMuX2FsbEtleXMuZ2V0KHQpO3ZhciBlPW5ldyBZcih0LFly
Lm51bWJlck9mS2V5cyk7cmV0dXJuIHRoaXMuX2FsbEtleXMuc2V0KHQsZSksZX0sT2JqZWN0LmRl
ZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJudW1iZXJPZktleXMiLHtnZXQ6ZnVuY3Rpb24oKXty
ZXR1cm4gdGhpcy5fYWxsS2V5cy5zaXplfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0p
LHR9KCksZW89bmV3IHRvLG5vPUZ1bmN0aW9uLHJvPS9eZnVuY3Rpb25ccytcUytcKFwpXHMqe1tc
c1xTXStcLmFwcGx5XCh0aGlzLFxzKmFyZ3VtZW50c1wpLyxvbz1mdW5jdGlvbigpe2Z1bmN0aW9u
IHQodCl7dGhpcy5fcmVmbGVjdD10fHxFci5SZWZsZWN0fXJldHVybiB0LnByb3RvdHlwZS5pc1Jl
ZmxlY3Rpb25FbmFibGVkPWZ1bmN0aW9uKCl7cmV0dXJuITB9LHQucHJvdG90eXBlLmZhY3Rvcnk9
ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciBlPVtdLG49MDtuPGFyZ3VtZW50
cy5sZW5ndGg7bisrKWVbbl09YXJndW1lbnRzW25dO3JldHVybiBuZXcodC5iaW5kLmFwcGx5KHQs
W3ZvaWQgMF0uY29uY2F0KGUpKSl9fSx0LnByb3RvdHlwZS5femlwVHlwZXNBbmRBbm5vdGF0aW9u
cz1mdW5jdGlvbih0LGUpe3ZhciBuO249dm9pZCAwPT09dD9uZXcgQXJyYXkoZS5sZW5ndGgpOm5l
dyBBcnJheSh0Lmxlbmd0aCk7Zm9yKHZhciByPTA7cjxuLmxlbmd0aDtyKyspdm9pZCAwPT09dD9u
W3JdPVtdOnRbcl0hPU9iamVjdD9uW3JdPVt0W3JdXTpuW3JdPVtdLGUmJm51bGwhPWVbcl0mJihu
W3JdPW5bcl0uY29uY2F0KGVbcl0pKTtyZXR1cm4gbn0sdC5wcm90b3R5cGUuX293blBhcmFtZXRl
cnM9ZnVuY3Rpb24odCxlKXtpZihyby5leGVjKHQudG9TdHJpbmcoKSkpcmV0dXJuIG51bGw7aWYo
dC5wYXJhbWV0ZXJzJiZ0LnBhcmFtZXRlcnMhPT1lLnBhcmFtZXRlcnMpcmV0dXJuIHQucGFyYW1l
dGVyczt2YXIgbj10LmN0b3JQYXJhbWV0ZXJzO2lmKG4mJm4hPT1lLmN0b3JQYXJhbWV0ZXJzKXt2
YXIgcj0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uKCk6bixvPXIubWFwKGZ1bmN0aW9uKHQpe3JldHVy
biB0JiZ0LnR5cGV9KSxpPXIubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0JiZOKHQuZGVjb3JhdG9y
cyl9KTtyZXR1cm4gdGhpcy5femlwVHlwZXNBbmRBbm5vdGF0aW9ucyhvLGkpfWlmKG51bGwhPXRo
aXMuX3JlZmxlY3QmJm51bGwhPXRoaXMuX3JlZmxlY3QuZ2V0T3duTWV0YWRhdGEpe3ZhciBpPXRo
aXMuX3JlZmxlY3QuZ2V0T3duTWV0YWRhdGEoInBhcmFtZXRlcnMiLHQpLG89dGhpcy5fcmVmbGVj
dC5nZXRPd25NZXRhZGF0YSgiZGVzaWduOnBhcmFtdHlwZXMiLHQpO2lmKG98fGkpcmV0dXJuIHRo
aXMuX3ppcFR5cGVzQW5kQW5ub3RhdGlvbnMobyxpKX1yZXR1cm4gbmV3IEFycmF5KHQubGVuZ3Ro
KS5maWxsKHZvaWQgMCl9LHQucHJvdG90eXBlLnBhcmFtZXRlcnM9ZnVuY3Rpb24odCl7aWYoIU0o
dCkpcmV0dXJuW107dmFyIGU9aih0KSxuPXRoaXMuX293blBhcmFtZXRlcnModCxlKTtyZXR1cm4g
bnx8ZT09PU9iamVjdHx8KG49dGhpcy5wYXJhbWV0ZXJzKGUpKSxufHxbXX0sdC5wcm90b3R5cGUu
X293bkFubm90YXRpb25zPWZ1bmN0aW9uKHQsZSl7aWYodC5hbm5vdGF0aW9ucyYmdC5hbm5vdGF0
aW9ucyE9PWUuYW5ub3RhdGlvbnMpe3ZhciBuPXQuYW5ub3RhdGlvbnM7cmV0dXJuImZ1bmN0aW9u
Ij09dHlwZW9mIG4mJm4uYW5ub3RhdGlvbnMmJihuPW4uYW5ub3RhdGlvbnMpLG59cmV0dXJuIHQu
ZGVjb3JhdG9ycyYmdC5kZWNvcmF0b3JzIT09ZS5kZWNvcmF0b3JzP04odC5kZWNvcmF0b3JzKTp0
aGlzLl9yZWZsZWN0JiZ0aGlzLl9yZWZsZWN0LmdldE93bk1ldGFkYXRhP3RoaXMuX3JlZmxlY3Qu
Z2V0T3duTWV0YWRhdGEoImFubm90YXRpb25zIix0KTpudWxsfSx0LnByb3RvdHlwZS5hbm5vdGF0
aW9ucz1mdW5jdGlvbih0KXtpZighTSh0KSlyZXR1cm5bXTt2YXIgZT1qKHQpLG49dGhpcy5fb3du
QW5ub3RhdGlvbnModCxlKXx8W107cmV0dXJuKGUhPT1PYmplY3Q/dGhpcy5hbm5vdGF0aW9ucyhl
KTpbXSkuY29uY2F0KG4pfSx0LnByb3RvdHlwZS5fb3duUHJvcE1ldGFkYXRhPWZ1bmN0aW9uKHQs
ZSl7aWYodC5wcm9wTWV0YWRhdGEmJnQucHJvcE1ldGFkYXRhIT09ZS5wcm9wTWV0YWRhdGEpe3Zh
ciBuPXQucHJvcE1ldGFkYXRhO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBuJiZuLnByb3BNZXRh
ZGF0YSYmKG49bi5wcm9wTWV0YWRhdGEpLG59aWYodC5wcm9wRGVjb3JhdG9ycyYmdC5wcm9wRGVj
b3JhdG9ycyE9PWUucHJvcERlY29yYXRvcnMpe3ZhciByPXQucHJvcERlY29yYXRvcnMsbz17fTty
ZXR1cm4gT2JqZWN0LmtleXMocikuZm9yRWFjaChmdW5jdGlvbih0KXtvW3RdPU4oclt0XSl9KSxv
fXJldHVybiB0aGlzLl9yZWZsZWN0JiZ0aGlzLl9yZWZsZWN0LmdldE93bk1ldGFkYXRhP3RoaXMu
X3JlZmxlY3QuZ2V0T3duTWV0YWRhdGEoInByb3BNZXRhZGF0YSIsdCk6bnVsbH0sdC5wcm90b3R5
cGUucHJvcE1ldGFkYXRhPWZ1bmN0aW9uKHQpe2lmKCFNKHQpKXJldHVybnt9O3ZhciBlPWoodCks
bj17fTtpZihlIT09T2JqZWN0KXt2YXIgcj10aGlzLnByb3BNZXRhZGF0YShlKTtPYmplY3Qua2V5
cyhyKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe25bdF09clt0XX0pfXZhciBvPXRoaXMuX293blByb3BN
ZXRhZGF0YSh0LGUpO3JldHVybiBvJiZPYmplY3Qua2V5cyhvKS5mb3JFYWNoKGZ1bmN0aW9uKHQp
e3ZhciBlPVtdO24uaGFzT3duUHJvcGVydHkodCkmJmUucHVzaC5hcHBseShlLG5bdF0pLGUucHVz
aC5hcHBseShlLG9bdF0pLG5bdF09ZX0pLG59LHQucHJvdG90eXBlLmhhc0xpZmVjeWNsZUhvb2s9
ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCBpbnN0YW5jZW9mIG5vJiZlIGluIHQucHJvdG90eXBlfSx0
LnByb3RvdHlwZS5nZXR0ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBGdW5jdGlvbigibyIsInJl
dHVybiBvLiIrdCsiOyIpfSx0LnByb3RvdHlwZS5zZXR0ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIG5l
dyBGdW5jdGlvbigibyIsInYiLCJyZXR1cm4gby4iK3QrIiA9IHY7Iil9LHQucHJvdG90eXBlLm1l
dGhvZD1mdW5jdGlvbih0KXt2YXIgZT0iaWYgKCFvLiIrdCsiKSB0aHJvdyBuZXcgRXJyb3IoJ1wi
Iit0KyJcIiBpcyB1bmRlZmluZWQnKTtcbiAgICAgICAgcmV0dXJuIG8uIit0KyIuYXBwbHkobywg
YXJncyk7IjtyZXR1cm4gbmV3IEZ1bmN0aW9uKCJvIiwiYXJncyIsZSl9LHQucHJvdG90eXBlLmlt
cG9ydFVyaT1mdW5jdGlvbih0KXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIHQmJnQuZmlsZVBhdGg/
dC5maWxlUGF0aDoiLi8iK3ModCl9LHQucHJvdG90eXBlLnJlc291cmNlVXJpPWZ1bmN0aW9uKHQp
e3JldHVybiIuLyIrcyh0KX0sdC5wcm90b3R5cGUucmVzb2x2ZUlkZW50aWZpZXI9ZnVuY3Rpb24o
dCxlLG4scil7cmV0dXJuIHJ9LHQucHJvdG90eXBlLnJlc29sdmVFbnVtPWZ1bmN0aW9uKHQsZSl7
cmV0dXJuIHRbZV19LHR9KCksaW89ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnBy
b3RvdHlwZS5wYXJhbWV0ZXJzPWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuYW5ub3RhdGlvbnM9
ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5wcm9wTWV0YWRhdGE9ZnVuY3Rpb24odCl7fSx0LnBy
b3RvdHlwZS5pbXBvcnRVcmk9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5yZXNvdXJjZVVyaT1m
dW5jdGlvbih0KXt9LHQucHJvdG90eXBlLnJlc29sdmVJZGVudGlmaWVyPWZ1bmN0aW9uKHQsZSxu
LHIpe30sdC5wcm90b3R5cGUucmVzb2x2ZUVudW09ZnVuY3Rpb24odCxlKXt9LHR9KCksc289ZnVu
Y3Rpb24odCl7ZnVuY3Rpb24gZShlKXt2YXIgbj10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIG4u
cmVmbGVjdGlvbkNhcGFiaWxpdGllcz1lLG59cmV0dXJuIGdyKGUsdCksZS5wcm90b3R5cGUudXBk
YXRlQ2FwYWJpbGl0aWVzPWZ1bmN0aW9uKHQpe3RoaXMucmVmbGVjdGlvbkNhcGFiaWxpdGllcz10
fSxlLnByb3RvdHlwZS5mYWN0b3J5PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnJlZmxlY3Rpb25D
YXBhYmlsaXRpZXMuZmFjdG9yeSh0KX0sZS5wcm90b3R5cGUucGFyYW1ldGVycz1mdW5jdGlvbih0
KXtyZXR1cm4gdGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzLnBhcmFtZXRlcnModCl9LGUucHJv
dG90eXBlLmFubm90YXRpb25zPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnJlZmxlY3Rpb25DYXBh
YmlsaXRpZXMuYW5ub3RhdGlvbnModCl9LGUucHJvdG90eXBlLnByb3BNZXRhZGF0YT1mdW5jdGlv
bih0KXtyZXR1cm4gdGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzLnByb3BNZXRhZGF0YSh0KX0s
ZS5wcm90b3R5cGUuaGFzTGlmZWN5Y2xlSG9vaz1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnJl
ZmxlY3Rpb25DYXBhYmlsaXRpZXMuaGFzTGlmZWN5Y2xlSG9vayh0LGUpfSxlLnByb3RvdHlwZS5n
ZXR0ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucmVmbGVjdGlvbkNhcGFiaWxpdGllcy5nZXR0
ZXIodCl9LGUucHJvdG90eXBlLnNldHRlcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5yZWZsZWN0
aW9uQ2FwYWJpbGl0aWVzLnNldHRlcih0KX0sZS5wcm90b3R5cGUubWV0aG9kPWZ1bmN0aW9uKHQp
e3JldHVybiB0aGlzLnJlZmxlY3Rpb25DYXBhYmlsaXRpZXMubWV0aG9kKHQpfSxlLnByb3RvdHlw
ZS5pbXBvcnRVcmk9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucmVmbGVjdGlvbkNhcGFiaWxpdGll
cy5pbXBvcnRVcmkodCl9LGUucHJvdG90eXBlLnJlc291cmNlVXJpPWZ1bmN0aW9uKHQpe3JldHVy
biB0aGlzLnJlZmxlY3Rpb25DYXBhYmlsaXRpZXMucmVzb3VyY2VVcmkodCl9LGUucHJvdG90eXBl
LnJlc29sdmVJZGVudGlmaWVyPWZ1bmN0aW9uKHQsZSxuLHIpe3JldHVybiB0aGlzLnJlZmxlY3Rp
b25DYXBhYmlsaXRpZXMucmVzb2x2ZUlkZW50aWZpZXIodCxlLG4scil9LGUucHJvdG90eXBlLnJl
c29sdmVFbnVtPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucmVmbGVjdGlvbkNhcGFiaWxpdGll
cy5yZXNvbHZlRW51bSh0LGUpfSxlfShpbyksYW89bmV3IHNvKG5ldyBvbyksdW89ZnVuY3Rpb24o
KXtmdW5jdGlvbiB0KHQsZSxuKXt0aGlzLmtleT10LHRoaXMub3B0aW9uYWw9ZSx0aGlzLnZpc2li
aWxpdHk9bn1yZXR1cm4gdC5mcm9tS2V5PWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgdChlLCExLG51
bGwpfSx0fSgpLGNvPVtdLGxvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbil7dGhpcy5rZXk9
dCx0aGlzLnJlc29sdmVkRmFjdG9yaWVzPWUsdGhpcy5tdWx0aVByb3ZpZGVyPW59cmV0dXJuIE9i
amVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwicmVzb2x2ZWRGYWN0b3J5Iix7Z2V0OmZ1
bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVzb2x2ZWRGYWN0b3JpZXNbMF19LGVudW1lcmFibGU6ITAs
Y29uZmlndXJhYmxlOiEwfSksdH0oKSxwbz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0aGlz
LmZhY3Rvcnk9dCx0aGlzLmRlcGVuZGVuY2llcz1lfXJldHVybiB0fSgpLGZvPW5ldyBPYmplY3Qs
aG89ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnJlc29sdmU9ZnVuY3Rpb24odCl7
cmV0dXJuIEkodCl9LHQucmVzb2x2ZUFuZENyZWF0ZT1mdW5jdGlvbihlLG4pe3ZhciByPXQucmVz
b2x2ZShlKTtyZXR1cm4gdC5mcm9tUmVzb2x2ZWRQcm92aWRlcnMocixuKX0sdC5mcm9tUmVzb2x2
ZWRQcm92aWRlcnM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IHlvKHQsZSl9LHQucHJvdG90eXBl
LnBhcmVudD1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUucmVzb2x2ZUFuZENyZWF0ZUNoaWxkPWZ1
bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuY3JlYXRlQ2hpbGRGcm9tUmVzb2x2ZWQ9ZnVuY3Rpb24o
dCl7fSx0LnByb3RvdHlwZS5yZXNvbHZlQW5kSW5zdGFudGlhdGU9ZnVuY3Rpb24odCl7fSx0LnBy
b3RvdHlwZS5pbnN0YW50aWF0ZVJlc29sdmVkPWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuZ2V0
PWZ1bmN0aW9uKHQsZSl7fSx0fSgpLHlvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3RoaXMu
X2NvbnN0cnVjdGlvbkNvdW50ZXI9MCx0aGlzLl9wcm92aWRlcnM9dCx0aGlzLl9wYXJlbnQ9ZXx8
bnVsbDt2YXIgbj10Lmxlbmd0aDt0aGlzLmtleUlkcz1uZXcgQXJyYXkobiksdGhpcy5vYmpzPW5l
dyBBcnJheShuKTtmb3IodmFyIHI9MDtyPG47cisrKXRoaXMua2V5SWRzW3JdPXRbcl0ua2V5Lmlk
LHRoaXMub2Jqc1tyXT1mb31yZXR1cm4gdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQsZSl7cmV0
dXJuIHZvaWQgMD09PWUmJihlPVpyKSx0aGlzLl9nZXRCeUtleShZci5nZXQodCksbnVsbCxlKX0s
T2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJwYXJlbnQiLHtnZXQ6ZnVuY3Rpb24o
KXtyZXR1cm4gdGhpcy5fcGFyZW50fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQu
cHJvdG90eXBlLnJlc29sdmVBbmRDcmVhdGVDaGlsZD1mdW5jdGlvbih0KXt2YXIgZT1oby5yZXNv
bHZlKHQpO3JldHVybiB0aGlzLmNyZWF0ZUNoaWxkRnJvbVJlc29sdmVkKGUpfSx0LnByb3RvdHlw
ZS5jcmVhdGVDaGlsZEZyb21SZXNvbHZlZD1mdW5jdGlvbihlKXt2YXIgbj1uZXcgdChlKTtyZXR1
cm4gbi5fcGFyZW50PXRoaXMsbn0sdC5wcm90b3R5cGUucmVzb2x2ZUFuZEluc3RhbnRpYXRlPWZ1
bmN0aW9uKHQpe3JldHVybiB0aGlzLmluc3RhbnRpYXRlUmVzb2x2ZWQoaG8ucmVzb2x2ZShbdF0p
WzBdKX0sdC5wcm90b3R5cGUuaW5zdGFudGlhdGVSZXNvbHZlZD1mdW5jdGlvbih0KXtyZXR1cm4g
dGhpcy5faW5zdGFudGlhdGVQcm92aWRlcih0KX0sdC5wcm90b3R5cGUuZ2V0UHJvdmlkZXJBdElu
ZGV4PWZ1bmN0aW9uKHQpe2lmKHQ8MHx8dD49dGhpcy5fcHJvdmlkZXJzLmxlbmd0aCl0aHJvdyBr
KHQpO3JldHVybiB0aGlzLl9wcm92aWRlcnNbdF19LHQucHJvdG90eXBlLl9uZXc9ZnVuY3Rpb24o
dCl7aWYodGhpcy5fY29uc3RydWN0aW9uQ291bnRlcisrPnRoaXMuX2dldE1heE51bWJlck9mT2Jq
ZWN0cygpKXRocm93IFModGhpcyx0LmtleSk7cmV0dXJuIHRoaXMuX2luc3RhbnRpYXRlUHJvdmlk
ZXIodCl9LHQucHJvdG90eXBlLl9nZXRNYXhOdW1iZXJPZk9iamVjdHM9ZnVuY3Rpb24oKXtyZXR1
cm4gdGhpcy5vYmpzLmxlbmd0aH0sdC5wcm90b3R5cGUuX2luc3RhbnRpYXRlUHJvdmlkZXI9ZnVu
Y3Rpb24odCl7aWYodC5tdWx0aVByb3ZpZGVyKXtmb3IodmFyIGU9bmV3IEFycmF5KHQucmVzb2x2
ZWRGYWN0b3JpZXMubGVuZ3RoKSxuPTA7bjx0LnJlc29sdmVkRmFjdG9yaWVzLmxlbmd0aDsrK24p
ZVtuXT10aGlzLl9pbnN0YW50aWF0ZSh0LHQucmVzb2x2ZWRGYWN0b3JpZXNbbl0pO3JldHVybiBl
fXJldHVybiB0aGlzLl9pbnN0YW50aWF0ZSh0LHQucmVzb2x2ZWRGYWN0b3JpZXNbMF0pfSx0LnBy
b3RvdHlwZS5faW5zdGFudGlhdGU9ZnVuY3Rpb24odCxlKXt2YXIgbixyPXRoaXMsbz1lLmZhY3Rv
cnk7dHJ5e249ZS5kZXBlbmRlbmNpZXMubWFwKGZ1bmN0aW9uKHQpe3JldHVybiByLl9nZXRCeVJl
ZmxlY3RpdmVEZXBlbmRlbmN5KHQpfSl9Y2F0Y2goZSl7dGhyb3cgZS5hZGRLZXkmJmUuYWRkS2V5
KHRoaXMsdC5rZXkpLGV9dmFyIGk7dHJ5e2k9by5hcHBseSh2b2lkIDAsbil9Y2F0Y2goZSl7dGhy
b3cgUCh0aGlzLGUsZS5zdGFjayx0LmtleSl9cmV0dXJuIGl9LHQucHJvdG90eXBlLl9nZXRCeVJl
ZmxlY3RpdmVEZXBlbmRlbmN5PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9nZXRCeUtleSh0Lmtl
eSx0LnZpc2liaWxpdHksdC5vcHRpb25hbD9udWxsOlpyKX0sdC5wcm90b3R5cGUuX2dldEJ5S2V5
PWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdD09PW1vP3RoaXM6ZSBpbnN0YW5jZW9mIEJyP3RoaXMu
X2dldEJ5S2V5U2VsZih0LG4pOnRoaXMuX2dldEJ5S2V5RGVmYXVsdCh0LG4sZSl9LHQucHJvdG90
eXBlLl9nZXRPYmpCeUtleUlkPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wO2U8dGhpcy5rZXlJZHMu
bGVuZ3RoO2UrKylpZih0aGlzLmtleUlkc1tlXT09PXQpcmV0dXJuIHRoaXMub2Jqc1tlXT09PWZv
JiYodGhpcy5vYmpzW2VdPXRoaXMuX25ldyh0aGlzLl9wcm92aWRlcnNbZV0pKSx0aGlzLm9ianNb
ZV07cmV0dXJuIGZvfSx0LnByb3RvdHlwZS5fdGhyb3dPck51bGw9ZnVuY3Rpb24odCxlKXtpZihl
IT09WnIpcmV0dXJuIGU7dGhyb3cgeCh0aGlzLHQpfSx0LnByb3RvdHlwZS5fZ2V0QnlLZXlTZWxm
PWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5fZ2V0T2JqQnlLZXlJZCh0LmlkKTtyZXR1cm4gbiE9
PWZvP246dGhpcy5fdGhyb3dPck51bGwodCxlKX0sdC5wcm90b3R5cGUuX2dldEJ5S2V5RGVmYXVs
dD1mdW5jdGlvbihlLG4scil7dmFyIG87Zm9yKG89ciBpbnN0YW5jZW9mIEdyP3RoaXMuX3BhcmVu
dDp0aGlzO28gaW5zdGFuY2VvZiB0Oyl7dmFyIGk9byxzPWkuX2dldE9iakJ5S2V5SWQoZS5pZCk7
aWYocyE9PWZvKXJldHVybiBzO289aS5fcGFyZW50fXJldHVybiBudWxsIT09bz9vLmdldChlLnRv
a2VuLG4pOnRoaXMuX3Rocm93T3JOdWxsKGUsbil9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnBy
b3RvdHlwZSwiZGlzcGxheU5hbWUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iUmVmbGVjdGl2ZUlu
amVjdG9yKHByb3ZpZGVyczogWyIreih0aGlzLGZ1bmN0aW9uKHQpe3JldHVybicgIicrdC5rZXku
ZGlzcGxheU5hbWUrJyIgJ30pLmpvaW4oIiwgIikrIl0pIn0sZW51bWVyYWJsZTohMCxjb25maWd1
cmFibGU6ITB9KSx0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRp
c3BsYXlOYW1lfSx0fSgpLG1vPVlyLmdldChLciksZ289bmV3IF9yKCJBcHBsaWNhdGlvbiBJbml0
aWFsaXplciIpLHZvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt2YXIgZT10aGlzO3RoaXMuX2Rv
bmU9ITE7dmFyIG49W107aWYodClmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIG89dFty
XSgpO3EobykmJm4ucHVzaChvKX10aGlzLl9kb25lUHJvbWlzZT1Qcm9taXNlLmFsbChuKS50aGVu
KGZ1bmN0aW9uKCl7ZS5fZG9uZT0hMH0pLDA9PT1uLmxlbmd0aCYmKHRoaXMuX2RvbmU9ITApfXJl
dHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImRvbmUiLHtnZXQ6ZnVuY3Rp
b24oKXtyZXR1cm4gdGhpcy5fZG9uZX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxP
YmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImRvbmVQcm9taXNlIix7Z2V0OmZ1bmN0
aW9uKCl7cmV0dXJuIHRoaXMuX2RvbmVQcm9taXNlfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJs
ZTohMH0pLHR9KCk7dm8uZGVjb3JhdG9ycz1be3R5cGU6VXJ9XSx2by5jdG9yUGFyYW1ldGVycz1m
dW5jdGlvbigpe3JldHVyblt7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpIcixhcmdzOltn
b119LHt0eXBlOkxyfV19XX07LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwor
dmFyIF9vPW5ldyBfcigiQXBwSWQiKSxibz17cHJvdmlkZTpfbyx1c2VGYWN0b3J5OlcsZGVwczpb
XX0sd289bmV3IF9yKCJQbGF0Zm9ybSBJbml0aWFsaXplciIpLENvPW5ldyBfcigiUGxhdGZvcm0g
SUQiKSxFbz1uZXcgX3IoImFwcEJvb3RzdHJhcExpc3RlbmVyIiksT289KG5ldyBfcigiQXBwbGlj
YXRpb24gUGFja2FnZXMgUm9vdCBVUkwiKSxmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJu
IHQucHJvdG90eXBlLmxvZz1mdW5jdGlvbih0KXtjb25zb2xlLmxvZyh0KX0sdC5wcm90b3R5cGUu
d2Fybj1mdW5jdGlvbih0KXtjb25zb2xlLndhcm4odCl9LHR9KCkpO09vLmRlY29yYXRvcnM9W3t0
eXBlOlVyfV0sT28uY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5bXX07LyoqCisgKiBA
bGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisg
KgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0
cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFyIHhvPShmdW5jdGlvbigpe2Z1bmN0aW9u
IHQodCxlKXt0aGlzLm5nTW9kdWxlRmFjdG9yeT10LHRoaXMuY29tcG9uZW50RmFjdG9yaWVzPWV9
fSgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUuY29tcGlsZU1v
ZHVsZVN5bmM9ZnVuY3Rpb24odCl7dGhyb3cgWCgpfSx0LnByb3RvdHlwZS5jb21waWxlTW9kdWxl
QXN5bmM9ZnVuY3Rpb24odCl7dGhyb3cgWCgpfSx0LnByb3RvdHlwZS5jb21waWxlTW9kdWxlQW5k
QWxsQ29tcG9uZW50c1N5bmM9ZnVuY3Rpb24odCl7dGhyb3cgWCgpfSx0LnByb3RvdHlwZS5jb21w
aWxlTW9kdWxlQW5kQWxsQ29tcG9uZW50c0FzeW5jPWZ1bmN0aW9uKHQpe3Rocm93IFgoKX0sdC5w
cm90b3R5cGUuZ2V0TmdDb250ZW50U2VsZWN0b3JzPWZ1bmN0aW9uKHQpe3Rocm93IFgoKX0sdC5w
cm90b3R5cGUuY2xlYXJDYWNoZT1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuY2xlYXJDYWNoZUZv
cj1mdW5jdGlvbih0KXt9LHR9KCkpO3hvLmRlY29yYXRvcnM9W3t0eXBlOlVyfV0seG8uY3RvclBh
cmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5bXX07dmFyIFNvPShuZXcgX3IoImNvbXBpbGVyT3B0
aW9ucyIpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUuY3JlYXRl
Q29tcGlsZXI9ZnVuY3Rpb24odCl7fSx0fSgpKSxQbz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9
cmV0dXJuIHQucHJvdG90eXBlLmxvY2F0aW9uPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5pbmpl
Y3Rvcj1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuaW5zdGFuY2U9ZnVuY3Rpb24oKXt9LHQucHJv
dG90eXBlLmhvc3RWaWV3PWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5jaGFuZ2VEZXRlY3RvclJl
Zj1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuY29tcG9uZW50VHlwZT1mdW5jdGlvbigpe30sdC5w
cm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUub25EZXN0cm95PWZ1bmN0
aW9uKHQpe30sdH0oKSxBbz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90
eXBlLnNlbGVjdG9yPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5jb21wb25lbnRUeXBlPWZ1bmN0
aW9uKCl7fSx0LnByb3RvdHlwZS5uZ0NvbnRlbnRTZWxlY3RvcnM9ZnVuY3Rpb24oKXt9LHQucHJv
dG90eXBlLmlucHV0cz1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUub3V0cHV0cz1mdW5jdGlvbigp
e30sdC5wcm90b3R5cGUuY3JlYXRlPWZ1bmN0aW9uKHQsZSxuLHIpe30sdH0oKSxUbz0ibmdDb21w
b25lbnQiLGtvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUucmVz
b2x2ZUNvbXBvbmVudEZhY3Rvcnk9ZnVuY3Rpb24odCl7dGhyb3cgUSh0KX0sdH0oKSxWbz1mdW5j
dGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLnJlc29sdmVDb21wb25lbnRG
YWN0b3J5PWZ1bmN0aW9uKHQpe30sdH0oKTtWby5OVUxMPW5ldyBrbzt2YXIgTW8sTm8sam89ZnVu
Y3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuKXt0aGlzLl9wYXJlbnQ9ZSx0aGlzLl9uZ01vZHVsZT1u
LHRoaXMuX2ZhY3Rvcmllcz1uZXcgTWFwO2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIg
bz10W3JdO3RoaXMuX2ZhY3Rvcmllcy5zZXQoby5jb21wb25lbnRUeXBlLG8pfX1yZXR1cm4gdC5w
cm90b3R5cGUucmVzb2x2ZUNvbXBvbmVudEZhY3Rvcnk9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5f
ZmFjdG9yaWVzLmdldCh0KXx8dGhpcy5fcGFyZW50LnJlc29sdmVDb21wb25lbnRGYWN0b3J5KHQp
O3JldHVybiBuZXcgUm8oZSx0aGlzLl9uZ01vZHVsZSl9LHR9KCksUm89ZnVuY3Rpb24odCl7ZnVu
Y3Rpb24gZShlLG4pe3ZhciByPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gci5mYWN0b3J5PWUs
ci5uZ01vZHVsZT1uLHJ9cmV0dXJuIGdyKGUsdCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJv
dG90eXBlLCJzZWxlY3RvciIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmZhY3Rvcnkuc2Vs
ZWN0b3J9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3Bl
cnR5KGUucHJvdG90eXBlLCJjb21wb25lbnRUeXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRo
aXMuZmFjdG9yeS5jb21wb25lbnRUeXBlfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0p
LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwibmdDb250ZW50U2VsZWN0b3JzIix7
Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmFjdG9yeS5uZ0NvbnRlbnRTZWxlY3RvcnN9LGVu
dW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJv
dG90eXBlLCJpbnB1dHMiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5mYWN0b3J5LmlucHV0
c30sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHko
ZS5wcm90b3R5cGUsIm91dHB1dHMiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5mYWN0b3J5
Lm91dHB1dHN9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUuY3Jl
YXRlPWZ1bmN0aW9uKHQsZSxuLHIpe3JldHVybiB0aGlzLmZhY3RvcnkuY3JlYXRlKHQsZSxuLHJ8
fHRoaXMubmdNb2R1bGUpfSxlfShBbyksRG89ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVy
biB0LnByb3RvdHlwZS5pbmplY3Rvcj1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuY29tcG9uZW50
RmFjdG9yeVJlc29sdmVyPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5pbnN0YW5jZT1mdW5jdGlv
bigpe30sdC5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUub25EZXN0
cm95PWZ1bmN0aW9uKHQpe30sdH0oKSxJbz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0aGlz
Ll9pbmplY3RvckNsYXNzPXQsdGhpcy5fbW9kdWxlVHlwZT1lfXJldHVybiBPYmplY3QuZGVmaW5l
UHJvcGVydHkodC5wcm90b3R5cGUsIm1vZHVsZVR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4g
dGhpcy5fbW9kdWxlVHlwZX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0LnByb3Rv
dHlwZS5jcmVhdGU9ZnVuY3Rpb24odCl7dmFyIGU9bmV3IHRoaXMuX2luamVjdG9yQ2xhc3ModHx8
S3IuTlVMTCk7cmV0dXJuIGUuY3JlYXRlKCksZX0sdH0oKSxGbz1uZXcgT2JqZWN0LEhvPWZ1bmN0
aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbil7dmFyIHI9dGhpczt0aGlzLnBhcmVudD10LHRoaXMuX2Rl
c3Ryb3lMaXN0ZW5lcnM9W10sdGhpcy5fZGVzdHJveWVkPSExLHRoaXMuYm9vdHN0cmFwRmFjdG9y
aWVzPW4ubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBuZXcgUm8odCxyKX0pLHRoaXMuX2NtcEZhY3Rv
cnlSZXNvbHZlcj1uZXcgam8oZSx0LmdldChWbyxWby5OVUxMKSx0aGlzKX1yZXR1cm4gdC5wcm90
b3R5cGUuY3JlYXRlPWZ1bmN0aW9uKCl7dGhpcy5pbnN0YW5jZT10aGlzLmNyZWF0ZUludGVybmFs
KCl9LHQucHJvdG90eXBlLmNyZWF0ZUludGVybmFsPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5n
ZXQ9ZnVuY3Rpb24odCxlKXtpZih2b2lkIDA9PT1lJiYoZT1aciksdD09PUtyfHx0PT09RG8pcmV0
dXJuIHRoaXM7aWYodD09PVZvKXJldHVybiB0aGlzLl9jbXBGYWN0b3J5UmVzb2x2ZXI7dmFyIG49
dGhpcy5nZXRJbnRlcm5hbCh0LEZvKTtyZXR1cm4gbj09PUZvP3RoaXMucGFyZW50LmdldCh0LGUp
Om59LHQucHJvdG90eXBlLmdldEludGVybmFsPWZ1bmN0aW9uKHQsZSl7fSxPYmplY3QuZGVmaW5l
UHJvcGVydHkodC5wcm90b3R5cGUsImluamVjdG9yIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRo
aXN9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5
KHQucHJvdG90eXBlLCJjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIiLHtnZXQ6ZnVuY3Rpb24oKXty
ZXR1cm4gdGhpcy5fY21wRmFjdG9yeVJlc29sdmVyfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJs
ZTohMH0pLHQucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXtpZih0aGlzLl9kZXN0cm95ZWQp
dGhyb3cgbmV3IEVycm9yKCJUaGUgbmcgbW9kdWxlICIrcyh0aGlzLmluc3RhbmNlLmNvbnN0cnVj
dG9yKSsiIGhhcyBhbHJlYWR5IGJlZW4gZGVzdHJveWVkLiIpO3RoaXMuX2Rlc3Ryb3llZD0hMCx0
aGlzLmRlc3Ryb3lJbnRlcm5hbCgpLHRoaXMuX2Rlc3Ryb3lMaXN0ZW5lcnMuZm9yRWFjaChmdW5j
dGlvbih0KXtyZXR1cm4gdCgpfSl9LHQucHJvdG90eXBlLm9uRGVzdHJveT1mdW5jdGlvbih0KXt0
aGlzLl9kZXN0cm95TGlzdGVuZXJzLnB1c2godCl9LHQucHJvdG90eXBlLmRlc3Ryb3lJbnRlcm5h
bD1mdW5jdGlvbigpe30sdH0oKSxMbz1KKCksVW89TG8/JDpmdW5jdGlvbih0LGUpe3JldHVybiB0
dH0sQm89TG8/WTpmdW5jdGlvbih0LGUpe3JldHVybiBlfSxHbz1mdW5jdGlvbih0KXtmdW5jdGlv
biBlKGUpe3ZvaWQgMD09PWUmJihlPSExKTt2YXIgbj10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJu
IG4uX19pc0FzeW5jPWUsbn1yZXR1cm4gZ3IoZSx0KSxlLnByb3RvdHlwZS5lbWl0PWZ1bmN0aW9u
KGUpe3QucHJvdG90eXBlLm5leHQuY2FsbCh0aGlzLGUpfSxlLnByb3RvdHlwZS5zdWJzY3JpYmU9
ZnVuY3Rpb24oZSxuLHIpe3ZhciBvLGk9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGx9LHM9ZnVuY3Rp
b24oKXtyZXR1cm4gbnVsbH07cmV0dXJuIGUmJiJvYmplY3QiPT10eXBlb2YgZT8obz10aGlzLl9f
aXNBc3luYz9mdW5jdGlvbih0KXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cmV0dXJuIGUubmV4dCh0
KX0pfTpmdW5jdGlvbih0KXtlLm5leHQodCl9LGUuZXJyb3ImJihpPXRoaXMuX19pc0FzeW5jP2Z1
bmN0aW9uKHQpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtyZXR1cm4gZS5lcnJvcih0KX0pfTpmdW5j
dGlvbih0KXtlLmVycm9yKHQpfSksZS5jb21wbGV0ZSYmKHM9dGhpcy5fX2lzQXN5bmM/ZnVuY3Rp
b24oKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cmV0dXJuIGUuY29tcGxldGUoKX0pfTpmdW5jdGlv
bigpe2UuY29tcGxldGUoKX0pKToobz10aGlzLl9faXNBc3luYz9mdW5jdGlvbih0KXtzZXRUaW1l
b3V0KGZ1bmN0aW9uKCl7cmV0dXJuIGUodCl9KX06ZnVuY3Rpb24odCl7ZSh0KX0sbiYmKGk9dGhp
cy5fX2lzQXN5bmM/ZnVuY3Rpb24odCl7c2V0VGltZW91dChmdW5jdGlvbigpe3JldHVybiBuKHQp
fSl9OmZ1bmN0aW9uKHQpe24odCl9KSxyJiYocz10aGlzLl9faXNBc3luYz9mdW5jdGlvbigpe3Nl
dFRpbWVvdXQoZnVuY3Rpb24oKXtyZXR1cm4gcigpfSl9OmZ1bmN0aW9uKCl7cigpfSkpLHQucHJv
dG90eXBlLnN1YnNjcmliZS5jYWxsKHRoaXMsbyxpLHMpfSxlfShtci5TdWJqZWN0KSx6bz1mdW5j
dGlvbigpe2Z1bmN0aW9uIHQodCl7dmFyIGU9dC5lbmFibGVMb25nU3RhY2tUcmFjZSxuPXZvaWQg
MCE9PWUmJmU7aWYodGhpcy5faGFzUGVuZGluZ01pY3JvdGFza3M9ITEsdGhpcy5faGFzUGVuZGlu
Z01hY3JvdGFza3M9ITEsdGhpcy5faXNTdGFibGU9ITAsdGhpcy5fbmVzdGluZz0wLHRoaXMuX29u
VW5zdGFibGU9bmV3IEdvKCExKSx0aGlzLl9vbk1pY3JvdGFza0VtcHR5PW5ldyBHbyghMSksdGhp
cy5fb25TdGFibGU9bmV3IEdvKCExKSx0aGlzLl9vbkVycm9yRXZlbnRzPW5ldyBHbyghMSksInVu
ZGVmaW5lZCI9PXR5cGVvZiBab25lKXRocm93IG5ldyBFcnJvcigiQW5ndWxhciByZXF1aXJlcyBa
b25lLmpzIHByb2x5ZmlsbC4iKTtab25lLmFzc2VydFpvbmVQYXRjaGVkKCksdGhpcy5vdXRlcj10
aGlzLmlubmVyPVpvbmUuY3VycmVudCxab25lLnd0ZlpvbmVTcGVjJiYodGhpcy5pbm5lcj10aGlz
LmlubmVyLmZvcmsoWm9uZS53dGZab25lU3BlYykpLG4mJlpvbmUubG9uZ1N0YWNrVHJhY2Vab25l
U3BlYyYmKHRoaXMuaW5uZXI9dGhpcy5pbm5lci5mb3JrKFpvbmUubG9uZ1N0YWNrVHJhY2Vab25l
U3BlYykpLHRoaXMuZm9ya0lubmVyWm9uZVdpdGhBbmd1bGFyQmVoYXZpb3IoKX1yZXR1cm4gdC5p
c0luQW5ndWxhclpvbmU9ZnVuY3Rpb24oKXtyZXR1cm4hMD09PVpvbmUuY3VycmVudC5nZXQoImlz
QW5ndWxhclpvbmUiKX0sdC5hc3NlcnRJbkFuZ3VsYXJab25lPWZ1bmN0aW9uKCl7aWYoIXQuaXNJ
bkFuZ3VsYXJab25lKCkpdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byBiZSBpbiBBbmd1bGFy
IFpvbmUsIGJ1dCBpdCBpcyBub3QhIil9LHQuYXNzZXJ0Tm90SW5Bbmd1bGFyWm9uZT1mdW5jdGlv
bigpe2lmKHQuaXNJbkFuZ3VsYXJab25lKCkpdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byBu
b3QgYmUgaW4gQW5ndWxhciBab25lLCBidXQgaXQgaXMhIil9LHQucHJvdG90eXBlLnJ1bj1mdW5j
dGlvbih0KXtyZXR1cm4gdGhpcy5pbm5lci5ydW4odCl9LHQucHJvdG90eXBlLnJ1bkd1YXJkZWQ9
ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaW5uZXIucnVuR3VhcmRlZCh0KX0sdC5wcm90b3R5cGUu
cnVuT3V0c2lkZUFuZ3VsYXI9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMub3V0ZXIucnVuKHQpfSxP
YmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsIm9uVW5zdGFibGUiLHtnZXQ6ZnVuY3Rp
b24oKXtyZXR1cm4gdGhpcy5fb25VbnN0YWJsZX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6
ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsIm9uTWljcm90YXNrRW1wdHki
LHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb25NaWNyb3Rhc2tFbXB0eX0sZW51bWVyYWJs
ZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUs
Im9uU3RhYmxlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29uU3RhYmxlfSxlbnVtZXJh
YmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlw
ZSwib25FcnJvciIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9vbkVycm9yRXZlbnRzfSxl
bnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnBy
b3RvdHlwZSwiaXNTdGFibGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faXNTdGFibGV9
LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQu
cHJvdG90eXBlLCJoYXNQZW5kaW5nTWljcm90YXNrcyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0
aGlzLl9oYXNQZW5kaW5nTWljcm90YXNrc30sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9
KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImhhc1BlbmRpbmdNYWNyb3Rhc2tz
Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2hhc1BlbmRpbmdNYWNyb3Rhc2tzfSxlbnVt
ZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLmNoZWNrU3RhYmxlPWZ1bmN0
aW9uKCl7dmFyIHQ9dGhpcztpZigwPT10aGlzLl9uZXN0aW5nJiYhdGhpcy5faGFzUGVuZGluZ01p
Y3JvdGFza3MmJiF0aGlzLl9pc1N0YWJsZSl0cnl7dGhpcy5fbmVzdGluZysrLHRoaXMuX29uTWlj
cm90YXNrRW1wdHkuZW1pdChudWxsKX1maW5hbGx5e2lmKHRoaXMuX25lc3RpbmctLSwhdGhpcy5f
aGFzUGVuZGluZ01pY3JvdGFza3MpdHJ5e3RoaXMucnVuT3V0c2lkZUFuZ3VsYXIoZnVuY3Rpb24o
KXtyZXR1cm4gdC5fb25TdGFibGUuZW1pdChudWxsKX0pfWZpbmFsbHl7dGhpcy5faXNTdGFibGU9
ITB9fX0sdC5wcm90b3R5cGUuZm9ya0lubmVyWm9uZVdpdGhBbmd1bGFyQmVoYXZpb3I9ZnVuY3Rp
b24oKXt2YXIgdD10aGlzO3RoaXMuaW5uZXI9dGhpcy5pbm5lci5mb3JrKHtuYW1lOiJhbmd1bGFy
Iixwcm9wZXJ0aWVzOntpc0FuZ3VsYXJab25lOiEwfSxvbkludm9rZVRhc2s6ZnVuY3Rpb24oZSxu
LHIsbyxpLHMpe3RyeXtyZXR1cm4gdC5vbkVudGVyKCksZS5pbnZva2VUYXNrKHIsbyxpLHMpfWZp
bmFsbHl7dC5vbkxlYXZlKCl9fSxvbkludm9rZTpmdW5jdGlvbihlLG4scixvLGkscyxhKXt0cnl7
cmV0dXJuIHQub25FbnRlcigpLGUuaW52b2tlKHIsbyxpLHMsYSl9ZmluYWxseXt0Lm9uTGVhdmUo
KX19LG9uSGFzVGFzazpmdW5jdGlvbihlLG4scixvKXtlLmhhc1Rhc2socixvKSxuPT09ciYmKCJt
aWNyb1Rhc2siPT1vLmNoYW5nZT90LnNldEhhc01pY3JvdGFzayhvLm1pY3JvVGFzayk6Im1hY3Jv
VGFzayI9PW8uY2hhbmdlJiZ0LnNldEhhc01hY3JvdGFzayhvLm1hY3JvVGFzaykpfSxvbkhhbmRs
ZUVycm9yOmZ1bmN0aW9uKGUsbixyLG8pe3JldHVybiBlLmhhbmRsZUVycm9yKHIsbyksdC50cmln
Z2VyRXJyb3IobyksITF9fSl9LHQucHJvdG90eXBlLm9uRW50ZXI9ZnVuY3Rpb24oKXt0aGlzLl9u
ZXN0aW5nKyssdGhpcy5faXNTdGFibGUmJih0aGlzLl9pc1N0YWJsZT0hMSx0aGlzLl9vblVuc3Rh
YmxlLmVtaXQobnVsbCkpfSx0LnByb3RvdHlwZS5vbkxlYXZlPWZ1bmN0aW9uKCl7dGhpcy5fbmVz
dGluZy0tLHRoaXMuY2hlY2tTdGFibGUoKX0sdC5wcm90b3R5cGUuc2V0SGFzTWljcm90YXNrPWZ1
bmN0aW9uKHQpe3RoaXMuX2hhc1BlbmRpbmdNaWNyb3Rhc2tzPXQsdGhpcy5jaGVja1N0YWJsZSgp
fSx0LnByb3RvdHlwZS5zZXRIYXNNYWNyb3Rhc2s9ZnVuY3Rpb24odCl7dGhpcy5faGFzUGVuZGlu
Z01hY3JvdGFza3M9dH0sdC5wcm90b3R5cGUudHJpZ2dlckVycm9yPWZ1bmN0aW9uKHQpe3RoaXMu
X29uRXJyb3JFdmVudHMuZW1pdCh0KX0sdH0oKSxxbz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7
dGhpcy5fbmdab25lPXQsdGhpcy5fcGVuZGluZ0NvdW50PTAsdGhpcy5faXNab25lU3RhYmxlPSEw
LHRoaXMuX2RpZFdvcms9ITEsdGhpcy5fY2FsbGJhY2tzPVtdLHRoaXMuX3dhdGNoQW5ndWxhckV2
ZW50cygpfXJldHVybiB0LnByb3RvdHlwZS5fd2F0Y2hBbmd1bGFyRXZlbnRzPWZ1bmN0aW9uKCl7
dmFyIHQ9dGhpczt0aGlzLl9uZ1pvbmUub25VbnN0YWJsZS5zdWJzY3JpYmUoe25leHQ6ZnVuY3Rp
b24oKXt0Ll9kaWRXb3JrPSEwLHQuX2lzWm9uZVN0YWJsZT0hMX19KSx0aGlzLl9uZ1pvbmUucnVu
T3V0c2lkZUFuZ3VsYXIoZnVuY3Rpb24oKXt0Ll9uZ1pvbmUub25TdGFibGUuc3Vic2NyaWJlKHtu
ZXh0OmZ1bmN0aW9uKCl7em8uYXNzZXJ0Tm90SW5Bbmd1bGFyWm9uZSgpLG8oZnVuY3Rpb24oKXt0
Ll9pc1pvbmVTdGFibGU9ITAsdC5fcnVuQ2FsbGJhY2tzSWZSZWFkeSgpfSl9fSl9KX0sdC5wcm90
b3R5cGUuaW5jcmVhc2VQZW5kaW5nUmVxdWVzdENvdW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu
X3BlbmRpbmdDb3VudCs9MSx0aGlzLl9kaWRXb3JrPSEwLHRoaXMuX3BlbmRpbmdDb3VudH0sdC5w
cm90b3R5cGUuZGVjcmVhc2VQZW5kaW5nUmVxdWVzdENvdW50PWZ1bmN0aW9uKCl7aWYodGhpcy5f
cGVuZGluZ0NvdW50LT0xLHRoaXMuX3BlbmRpbmdDb3VudDwwKXRocm93IG5ldyBFcnJvcigicGVu
ZGluZyBhc3luYyByZXF1ZXN0cyBiZWxvdyB6ZXJvIik7cmV0dXJuIHRoaXMuX3J1bkNhbGxiYWNr
c0lmUmVhZHkoKSx0aGlzLl9wZW5kaW5nQ291bnR9LHQucHJvdG90eXBlLmlzU3RhYmxlPWZ1bmN0
aW9uKCl7cmV0dXJuIHRoaXMuX2lzWm9uZVN0YWJsZSYmMD09dGhpcy5fcGVuZGluZ0NvdW50JiYh
dGhpcy5fbmdab25lLmhhc1BlbmRpbmdNYWNyb3Rhc2tzfSx0LnByb3RvdHlwZS5fcnVuQ2FsbGJh
Y2tzSWZSZWFkeT1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5pc1N0YWJsZSgpP28oZnVuY3Rp
b24oKXtmb3IoOzAhPT10Ll9jYWxsYmFja3MubGVuZ3RoOyl0Ll9jYWxsYmFja3MucG9wKCkodC5f
ZGlkV29yayk7dC5fZGlkV29yaz0hMX0pOnRoaXMuX2RpZFdvcms9ITB9LHQucHJvdG90eXBlLndo
ZW5TdGFibGU9ZnVuY3Rpb24odCl7dGhpcy5fY2FsbGJhY2tzLnB1c2godCksdGhpcy5fcnVuQ2Fs
bGJhY2tzSWZSZWFkeSgpfSx0LnByb3RvdHlwZS5nZXRQZW5kaW5nUmVxdWVzdENvdW50PWZ1bmN0
aW9uKCl7cmV0dXJuIHRoaXMuX3BlbmRpbmdDb3VudH0sdC5wcm90b3R5cGUuZmluZEJpbmRpbmdz
PWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm5bXX0sdC5wcm90b3R5cGUuZmluZFByb3ZpZGVycz1mdW5j
dGlvbih0LGUsbil7cmV0dXJuW119LHR9KCk7cW8uZGVjb3JhdG9ycz1be3R5cGU6VXJ9XSxxby5j
dG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTp6b31dfTt2YXIgWm89ZnVuY3Rp
b24oKXtmdW5jdGlvbiB0KCl7dGhpcy5fYXBwbGljYXRpb25zPW5ldyBNYXAsWG8uYWRkVG9XaW5k
b3codGhpcyl9cmV0dXJuIHQucHJvdG90eXBlLnJlZ2lzdGVyQXBwbGljYXRpb249ZnVuY3Rpb24o
dCxlKXt0aGlzLl9hcHBsaWNhdGlvbnMuc2V0KHQsZSl9LHQucHJvdG90eXBlLmdldFRlc3RhYmls
aXR5PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9hcHBsaWNhdGlvbnMuZ2V0KHQpfHxudWxsfSx0
LnByb3RvdHlwZS5nZXRBbGxUZXN0YWJpbGl0aWVzPWZ1bmN0aW9uKCl7cmV0dXJuIEFycmF5LmZy
b20odGhpcy5fYXBwbGljYXRpb25zLnZhbHVlcygpKX0sdC5wcm90b3R5cGUuZ2V0QWxsUm9vdEVs
ZW1lbnRzPWZ1bmN0aW9uKCl7cmV0dXJuIEFycmF5LmZyb20odGhpcy5fYXBwbGljYXRpb25zLmtl
eXMoKSl9LHQucHJvdG90eXBlLmZpbmRUZXN0YWJpbGl0eUluVHJlZT1mdW5jdGlvbih0LGUpe3Jl
dHVybiB2b2lkIDA9PT1lJiYoZT0hMCksWG8uZmluZFRlc3RhYmlsaXR5SW5UcmVlKHRoaXMsdCxl
KX0sdH0oKTtaby5kZWNvcmF0b3JzPVt7dHlwZTpVcn1dLFpvLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0
aW9uKCl7cmV0dXJuW119O3ZhciBXbyxLbz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJu
IHQucHJvdG90eXBlLmFkZFRvV2luZG93PWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuZmluZFRl
c3RhYmlsaXR5SW5UcmVlPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gbnVsbH0sdH0oKSxYbz1uZXcg
S28sUW89ITAsSm89ITEsJG89bmV3IF9yKCJBbGxvd011bHRpcGxlVG9rZW4iKSxZbz1mdW5jdGlv
bigpe2Z1bmN0aW9uIHQodCxlKXt0aGlzLm5hbWU9dCx0aGlzLnRva2VuPWV9cmV0dXJuIHR9KCks
dGk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5ib290c3RyYXBN
b2R1bGVGYWN0b3J5PWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuYm9vdHN0cmFwTW9kdWxlPWZ1
bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5vbkRlc3Ryb3k9ZnVuY3Rpb24odCl7fSx0LnByb3Rv
dHlwZS5pbmplY3Rvcj1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigp
e30sdC5wcm90b3R5cGUuZGVzdHJveWVkPWZ1bmN0aW9uKCl7fSx0fSgpLGVpPWZ1bmN0aW9uKHQp
e2Z1bmN0aW9uIGUoZSl7dmFyIG49dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBuLl9pbmplY3Rv
cj1lLG4uX21vZHVsZXM9W10sbi5fZGVzdHJveUxpc3RlbmVycz1bXSxuLl9kZXN0cm95ZWQ9ITEs
bn1yZXR1cm4gZ3IoZSx0KSxlLnByb3RvdHlwZS5vbkRlc3Ryb3k9ZnVuY3Rpb24odCl7dGhpcy5f
ZGVzdHJveUxpc3RlbmVycy5wdXNoKHQpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5
cGUsImluamVjdG9yIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2luamVjdG9yfSxlbnVt
ZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3Rv
dHlwZSwiZGVzdHJveWVkIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Rlc3Ryb3llZH0s
ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0
aW9uKCl7aWYodGhpcy5fZGVzdHJveWVkKXRocm93IG5ldyBFcnJvcigiVGhlIHBsYXRmb3JtIGhh
cyBhbHJlYWR5IGJlZW4gZGVzdHJveWVkISIpO3RoaXMuX21vZHVsZXMuc2xpY2UoKS5mb3JFYWNo
KGZ1bmN0aW9uKHQpe3JldHVybiB0LmRlc3Ryb3koKX0pLHRoaXMuX2Rlc3Ryb3lMaXN0ZW5lcnMu
Zm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4gdCgpfSksdGhpcy5fZGVzdHJveWVkPSEwfSxlLnBy
b3RvdHlwZS5ib290c3RyYXBNb2R1bGVGYWN0b3J5PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9i
b290c3RyYXBNb2R1bGVGYWN0b3J5V2l0aFpvbmUodCl9LGUucHJvdG90eXBlLl9ib290c3RyYXBN
b2R1bGVGYWN0b3J5V2l0aFpvbmU9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzO3JldHVybiBlfHwo
ZT1uZXcgem8oe2VuYWJsZUxvbmdTdGFja1RyYWNlOnJ0KCl9KSksZS5ydW4oZnVuY3Rpb24oKXt2
YXIgcj1oby5yZXNvbHZlQW5kQ3JlYXRlKFt7cHJvdmlkZTp6byx1c2VWYWx1ZTplfV0sbi5pbmpl
Y3Rvciksbz10LmNyZWF0ZShyKSxpPW8uaW5qZWN0b3IuZ2V0KCRyLG51bGwpO2lmKCFpKXRocm93
IG5ldyBFcnJvcigiTm8gRXJyb3JIYW5kbGVyLiBJcyBwbGF0Zm9ybSBtb2R1bGUgKEJyb3dzZXJN
b2R1bGUpIGluY2x1ZGVkPyIpO3JldHVybiBvLm9uRGVzdHJveShmdW5jdGlvbigpe3JldHVybiBj
dChuLl9tb2R1bGVzLG8pfSksZS5vbkVycm9yLnN1YnNjcmliZSh7bmV4dDpmdW5jdGlvbih0KXtp
LmhhbmRsZUVycm9yKHQpfX0pLHV0KGksZnVuY3Rpb24oKXtyZXR1cm4gby5pbmplY3Rvci5nZXQo
dm8pLmRvbmVQcm9taXNlLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gbi5fbW9kdWxlRG9Cb290c3Ry
YXAobyksb30pfSl9KX0sZS5wcm90b3R5cGUuYm9vdHN0cmFwTW9kdWxlPWZ1bmN0aW9uKHQsZSl7
cmV0dXJuIHZvaWQgMD09PWUmJihlPVtdKSx0aGlzLl9ib290c3RyYXBNb2R1bGVXaXRoWm9uZSh0
LGUpfSxlLnByb3RvdHlwZS5fYm9vdHN0cmFwTW9kdWxlV2l0aFpvbmU9ZnVuY3Rpb24odCxlLG4p
e3ZhciByPXRoaXM7cmV0dXJuIHZvaWQgMD09PWUmJihlPVtdKSx0aGlzLmluamVjdG9yLmdldChT
bykuY3JlYXRlQ29tcGlsZXIoQXJyYXkuaXNBcnJheShlKT9lOltlXSkuY29tcGlsZU1vZHVsZUFz
eW5jKHQpLnRoZW4oZnVuY3Rpb24odCl7cmV0dXJuIHIuX2Jvb3RzdHJhcE1vZHVsZUZhY3RvcnlX
aXRoWm9uZSh0LG4pfSl9LGUucHJvdG90eXBlLl9tb2R1bGVEb0Jvb3RzdHJhcD1mdW5jdGlvbih0
KXt2YXIgZT10LmluamVjdG9yLmdldChuaSk7aWYodC5ib290c3RyYXBGYWN0b3JpZXMubGVuZ3Ro
PjApdC5ib290c3RyYXBGYWN0b3JpZXMuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4gZS5ib290
c3RyYXAodCl9KTtlbHNle2lmKCF0Lmluc3RhbmNlLm5nRG9Cb290c3RyYXApdGhyb3cgbmV3IEVy
cm9yKCJUaGUgbW9kdWxlICIrcyh0Lmluc3RhbmNlLmNvbnN0cnVjdG9yKSsnIHdhcyBib290c3Ry
YXBwZWQsIGJ1dCBpdCBkb2VzIG5vdCBkZWNsYXJlICJATmdNb2R1bGUuYm9vdHN0cmFwIiBjb21w
b25lbnRzIG5vciBhICJuZ0RvQm9vdHN0cmFwIiBtZXRob2QuIFBsZWFzZSBkZWZpbmUgb25lIG9m
IHRoZXNlLicpO3QuaW5zdGFuY2UubmdEb0Jvb3RzdHJhcChlKX10aGlzLl9tb2R1bGVzLnB1c2go
dCl9LGV9KHRpKTtlaS5kZWNvcmF0b3JzPVt7dHlwZTpVcn1dLGVpLmN0b3JQYXJhbWV0ZXJzPWZ1
bmN0aW9uKCl7cmV0dXJuW3t0eXBlOktyfV19O3ZhciBuaT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQo
KXt9cmV0dXJuIHQucHJvdG90eXBlLmJvb3RzdHJhcD1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBl
LnRpY2s9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmNvbXBvbmVudFR5cGVzPWZ1bmN0aW9uKCl7
fSx0LnByb3RvdHlwZS5jb21wb25lbnRzPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5hdHRhY2hW
aWV3PWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuZGV0YWNoVmlldz1mdW5jdGlvbih0KXt9LHQu
cHJvdG90eXBlLnZpZXdDb3VudD1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuaXNTdGFibGU9ZnVu
Y3Rpb24oKXt9LHR9KCkscmk9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLHIsaSxzLGEsdSl7dmFy
IGM9dC5jYWxsKHRoaXMpfHx0aGlzO2MuX3pvbmU9ZSxjLl9jb25zb2xlPXIsYy5faW5qZWN0b3I9
aSxjLl9leGNlcHRpb25IYW5kbGVyPXMsYy5fY29tcG9uZW50RmFjdG9yeVJlc29sdmVyPWEsYy5f
aW5pdFN0YXR1cz11LGMuX2Jvb3RzdHJhcExpc3RlbmVycz1bXSxjLl9yb290Q29tcG9uZW50cz1b
XSxjLl9yb290Q29tcG9uZW50VHlwZXM9W10sYy5fdmlld3M9W10sYy5fcnVubmluZ1RpY2s9ITEs
Yy5fZW5mb3JjZU5vTmV3Q2hhbmdlcz0hMSxjLl9zdGFibGU9ITAsYy5fZW5mb3JjZU5vTmV3Q2hh
bmdlcz1ydCgpLGMuX3pvbmUub25NaWNyb3Rhc2tFbXB0eS5zdWJzY3JpYmUoe25leHQ6ZnVuY3Rp
b24oKXtjLl96b25lLnJ1bihmdW5jdGlvbigpe2MudGljaygpfSl9fSk7dmFyIGw9bmV3IGhyLk9i
c2VydmFibGUoZnVuY3Rpb24odCl7Yy5fc3RhYmxlPWMuX3pvbmUuaXNTdGFibGUmJiFjLl96b25l
Lmhhc1BlbmRpbmdNYWNyb3Rhc2tzJiYhYy5fem9uZS5oYXNQZW5kaW5nTWljcm90YXNrcyxjLl96
b25lLnJ1bk91dHNpZGVBbmd1bGFyKGZ1bmN0aW9uKCl7dC5uZXh0KGMuX3N0YWJsZSksdC5jb21w
bGV0ZSgpfSl9KSxwPW5ldyBoci5PYnNlcnZhYmxlKGZ1bmN0aW9uKHQpe3ZhciBlPWMuX3pvbmUu
b25TdGFibGUuc3Vic2NyaWJlKGZ1bmN0aW9uKCl7em8uYXNzZXJ0Tm90SW5Bbmd1bGFyWm9uZSgp
LG8oZnVuY3Rpb24oKXtjLl9zdGFibGV8fGMuX3pvbmUuaGFzUGVuZGluZ01hY3JvdGFza3N8fGMu
X3pvbmUuaGFzUGVuZGluZ01pY3JvdGFza3N8fChjLl9zdGFibGU9ITAsdC5uZXh0KCEwKSl9KX0p
LG49Yy5fem9uZS5vblVuc3RhYmxlLnN1YnNjcmliZShmdW5jdGlvbigpe3pvLmFzc2VydEluQW5n
dWxhclpvbmUoKSxjLl9zdGFibGUmJihjLl9zdGFibGU9ITEsYy5fem9uZS5ydW5PdXRzaWRlQW5n
dWxhcihmdW5jdGlvbigpe3QubmV4dCghMSl9KSl9KTtyZXR1cm4gZnVuY3Rpb24oKXtlLnVuc3Vi
c2NyaWJlKCksbi51bnN1YnNjcmliZSgpfX0pO3JldHVybiBjLl9pc1N0YWJsZT1uLmkoZHIubWVy
Z2UpKGwseXIuc2hhcmUuY2FsbChwKSksY31yZXR1cm4gZ3IoZSx0KSxlLnByb3RvdHlwZS5hdHRh
Y2hWaWV3PWZ1bmN0aW9uKHQpe3ZhciBlPXQ7dGhpcy5fdmlld3MucHVzaChlKSxlLmF0dGFjaFRv
QXBwUmVmKHRoaXMpfSxlLnByb3RvdHlwZS5kZXRhY2hWaWV3PWZ1bmN0aW9uKHQpe3ZhciBlPXQ7
Y3QodGhpcy5fdmlld3MsZSksZS5kZXRhY2hGcm9tQXBwUmVmKCl9LGUucHJvdG90eXBlLmJvb3Rz
dHJhcD1mdW5jdGlvbih0KXt2YXIgZT10aGlzO2lmKCF0aGlzLl9pbml0U3RhdHVzLmRvbmUpdGhy
b3cgbmV3IEVycm9yKCJDYW5ub3QgYm9vdHN0cmFwIGFzIHRoZXJlIGFyZSBzdGlsbCBhc3luY2hy
b25vdXMgaW5pdGlhbGl6ZXJzIHJ1bm5pbmcuIEJvb3RzdHJhcCBjb21wb25lbnRzIGluIHRoZSBg
bmdEb0Jvb3RzdHJhcGAgbWV0aG9kIG9mIHRoZSByb290IG1vZHVsZS4iKTt2YXIgbjtuPXQgaW5z
dGFuY2VvZiBBbz90OnRoaXMuX2NvbXBvbmVudEZhY3RvcnlSZXNvbHZlci5yZXNvbHZlQ29tcG9u
ZW50RmFjdG9yeSh0KSx0aGlzLl9yb290Q29tcG9uZW50VHlwZXMucHVzaChuLmNvbXBvbmVudFR5
cGUpO3ZhciByPW4gaW5zdGFuY2VvZiBSbz9udWxsOnRoaXMuX2luamVjdG9yLmdldChEbyksbz1u
LmNyZWF0ZShLci5OVUxMLFtdLG4uc2VsZWN0b3Iscik7by5vbkRlc3Ryb3koZnVuY3Rpb24oKXtl
Ll91bmxvYWRDb21wb25lbnQobyl9KTt2YXIgaT1vLmluamVjdG9yLmdldChxbyxudWxsKTtyZXR1
cm4gaSYmby5pbmplY3Rvci5nZXQoWm8pLnJlZ2lzdGVyQXBwbGljYXRpb24oby5sb2NhdGlvbi5u
YXRpdmVFbGVtZW50LGkpLHRoaXMuX2xvYWRDb21wb25lbnQobykscnQoKSYmdGhpcy5fY29uc29s
ZS5sb2coIkFuZ3VsYXIgaXMgcnVubmluZyBpbiB0aGUgZGV2ZWxvcG1lbnQgbW9kZS4gQ2FsbCBl
bmFibGVQcm9kTW9kZSgpIHRvIGVuYWJsZSB0aGUgcHJvZHVjdGlvbiBtb2RlLiIpLG99LGUucHJv
dG90eXBlLl9sb2FkQ29tcG9uZW50PWZ1bmN0aW9uKHQpe3RoaXMuYXR0YWNoVmlldyh0Lmhvc3RW
aWV3KSx0aGlzLnRpY2soKSx0aGlzLl9yb290Q29tcG9uZW50cy5wdXNoKHQpLHRoaXMuX2luamVj
dG9yLmdldChFbyxbXSkuY29uY2F0KHRoaXMuX2Jvb3RzdHJhcExpc3RlbmVycykuZm9yRWFjaChm
dW5jdGlvbihlKXtyZXR1cm4gZSh0KX0pfSxlLnByb3RvdHlwZS5fdW5sb2FkQ29tcG9uZW50PWZ1
bmN0aW9uKHQpe3RoaXMuZGV0YWNoVmlldyh0Lmhvc3RWaWV3KSxjdCh0aGlzLl9yb290Q29tcG9u
ZW50cyx0KX0sZS5wcm90b3R5cGUudGljaz1mdW5jdGlvbigpe2lmKHRoaXMuX3J1bm5pbmdUaWNr
KXRocm93IG5ldyBFcnJvcigiQXBwbGljYXRpb25SZWYudGljayBpcyBjYWxsZWQgcmVjdXJzaXZl
bHkiKTt2YXIgdD1lLl90aWNrU2NvcGUoKTt0cnl7dGhpcy5fcnVubmluZ1RpY2s9ITAsdGhpcy5f
dmlld3MuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4gdC5kZXRlY3RDaGFuZ2VzKCl9KSx0aGlz
Ll9lbmZvcmNlTm9OZXdDaGFuZ2VzJiZ0aGlzLl92aWV3cy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3Jl
dHVybiB0LmNoZWNrTm9DaGFuZ2VzKCl9KX1maW5hbGx5e3RoaXMuX3J1bm5pbmdUaWNrPSExLEJv
KHQpfX0sZS5wcm90b3R5cGUubmdPbkRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLl92aWV3cy5zbGlj
ZSgpLmZvckVhY2goZnVuY3Rpb24odCl7cmV0dXJuIHQuZGVzdHJveSgpfSl9LE9iamVjdC5kZWZp
bmVQcm9wZXJ0eShlLnByb3RvdHlwZSwidmlld0NvdW50Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJu
IHRoaXMuX3ZpZXdzLmxlbmd0aH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmpl
Y3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImNvbXBvbmVudFR5cGVzIix7Z2V0OmZ1bmN0
aW9uKCl7cmV0dXJuIHRoaXMuX3Jvb3RDb21wb25lbnRUeXBlc30sZW51bWVyYWJsZTohMCxjb25m
aWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImNvbXBvbmVu
dHMiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcm9vdENvbXBvbmVudHN9LGVudW1lcmFi
bGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBl
LCJpc1N0YWJsZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9pc1N0YWJsZX0sZW51bWVy
YWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxlfShuaSk7cmkuX3RpY2tTY29wZT1VbygiQXBwbGlj
YXRpb25SZWYjdGljaygpIikscmkuZGVjb3JhdG9ycz1be3R5cGU6VXJ9XSxyaS5jdG9yUGFyYW1l
dGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTp6b30se3R5cGU6T299LHt0eXBlOktyfSx7dHlw
ZTokcn0se3R5cGU6Vm99LHt0eXBlOnZvfV19Oy8qKgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdo
dCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
CisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNl
bnNlCisgKi8KKy8qKgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8KK3ZhciBvaT0o
ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuLHIsbyxpKXt0aGlzLmlkPXQsdGhpcy50ZW1wbGF0
ZVVybD1lLHRoaXMuc2xvdENvdW50PW4sdGhpcy5lbmNhcHN1bGF0aW9uPXIsdGhpcy5zdHlsZXM9
byx0aGlzLmFuaW1hdGlvbnM9aX19KCksZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXQucHJvdG90
eXBlLmluamVjdG9yPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5jb21wb25lbnQ9ZnVuY3Rpb24o
KXt9LHQucHJvdG90eXBlLnByb3ZpZGVyVG9rZW5zPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5y
ZWZlcmVuY2VzPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5jb250ZXh0PWZ1bmN0aW9uKCl7fSx0
LnByb3RvdHlwZS5zb3VyY2U9ZnVuY3Rpb24oKXt9fSgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgp
e31yZXR1cm4gdC5wcm90b3R5cGUuc2VsZWN0Um9vdEVsZW1lbnQ9ZnVuY3Rpb24odCxlKXt9LHQu
cHJvdG90eXBlLmNyZWF0ZUVsZW1lbnQ9ZnVuY3Rpb24odCxlLG4pe30sdC5wcm90b3R5cGUuY3Jl
YXRlVmlld1Jvb3Q9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5jcmVhdGVUZW1wbGF0ZUFuY2hv
cj1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUuY3JlYXRlVGV4dD1mdW5jdGlvbih0LGUsbil7
fSx0LnByb3RvdHlwZS5wcm9qZWN0Tm9kZXM9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLmF0
dGFjaFZpZXdBZnRlcj1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUuZGV0YWNoVmlldz1mdW5j
dGlvbih0KXt9LHQucHJvdG90eXBlLmRlc3Ryb3lWaWV3PWZ1bmN0aW9uKHQsZSl7fSx0LnByb3Rv
dHlwZS5saXN0ZW49ZnVuY3Rpb24odCxlLG4pe30sdC5wcm90b3R5cGUubGlzdGVuR2xvYmFsPWZ1
bmN0aW9uKHQsZSxuKXt9LHQucHJvdG90eXBlLnNldEVsZW1lbnRQcm9wZXJ0eT1mdW5jdGlvbih0
LGUsbil7fSx0LnByb3RvdHlwZS5zZXRFbGVtZW50QXR0cmlidXRlPWZ1bmN0aW9uKHQsZSxuKXt9
LHQucHJvdG90eXBlLnNldEJpbmRpbmdEZWJ1Z0luZm89ZnVuY3Rpb24odCxlLG4pe30sdC5wcm90
b3R5cGUuc2V0RWxlbWVudENsYXNzPWZ1bmN0aW9uKHQsZSxuKXt9LHQucHJvdG90eXBlLnNldEVs
ZW1lbnRTdHlsZT1mdW5jdGlvbih0LGUsbil7fSx0LnByb3RvdHlwZS5pbnZva2VFbGVtZW50TWV0
aG9kPWZ1bmN0aW9uKHQsZSxuKXt9LHQucHJvdG90eXBlLnNldFRleHQ9ZnVuY3Rpb24odCxlKXt9
LHQucHJvdG90eXBlLmFuaW1hdGU9ZnVuY3Rpb24odCxlLG4scixvLGkscyl7fSx0fSgpKSxpaT0o
bmV3IF9yKCJSZW5kZXJlcjJJbnRlcmNlcHRvciIpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe310
LnByb3RvdHlwZS5yZW5kZXJDb21wb25lbnQ9ZnVuY3Rpb24odCl7fX0oKSxmdW5jdGlvbigpe2Z1
bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLmNyZWF0ZVJlbmRlcmVyPWZ1bmN0aW9uKHQs
ZSl7fSx0fSgpKSxzaT17fTtzaS5JbXBvcnRhbnQ9MSxzaS5EYXNoQ2FzZT0yLHNpW3NpLkltcG9y
dGFudF09IkltcG9ydGFudCIsc2lbc2kuRGFzaENhc2VdPSJEYXNoQ2FzZSI7dmFyIGFpPWZ1bmN0
aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUuZGF0YT1mdW5jdGlvbigpe30s
dC5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuY3JlYXRlRWxlbWVu
dD1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUuY3JlYXRlQ29tbWVudD1mdW5jdGlvbih0KXt9
LHQucHJvdG90eXBlLmNyZWF0ZVRleHQ9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5hcHBlbmRD
aGlsZD1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUuaW5zZXJ0QmVmb3JlPWZ1bmN0aW9uKHQs
ZSxuKXt9LHQucHJvdG90eXBlLnJlbW92ZUNoaWxkPWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlw
ZS5zZWxlY3RSb290RWxlbWVudD1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLnBhcmVudE5vZGU9
ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5uZXh0U2libGluZz1mdW5jdGlvbih0KXt9LHQucHJv
dG90eXBlLnNldEF0dHJpYnV0ZT1mdW5jdGlvbih0LGUsbixyKXt9LHQucHJvdG90eXBlLnJlbW92
ZUF0dHJpYnV0ZT1mdW5jdGlvbih0LGUsbil7fSx0LnByb3RvdHlwZS5hZGRDbGFzcz1mdW5jdGlv
bih0LGUpe30sdC5wcm90b3R5cGUucmVtb3ZlQ2xhc3M9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90
eXBlLnNldFN0eWxlPWZ1bmN0aW9uKHQsZSxuLHIpe30sdC5wcm90b3R5cGUucmVtb3ZlU3R5bGU9
ZnVuY3Rpb24odCxlLG4pe30sdC5wcm90b3R5cGUuc2V0UHJvcGVydHk9ZnVuY3Rpb24odCxlLG4p
e30sdC5wcm90b3R5cGUuc2V0VmFsdWU9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLmxpc3Rl
bj1mdW5jdGlvbih0LGUsbil7fSx0fSgpLHVpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlz
Lm5hdGl2ZUVsZW1lbnQ9dH1yZXR1cm4gdH0oKSxjaT0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7
fXQucHJvdG90eXBlLmxvYWQ9ZnVuY3Rpb24odCl7fX0oKSxuZXcgTWFwLGZ1bmN0aW9uKCl7ZnVu
Y3Rpb24gdCgpe3RoaXMuX2RpcnR5PSEwLHRoaXMuX3Jlc3VsdHM9W10sdGhpcy5fZW1pdHRlcj1u
ZXcgR299cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiY2hhbmdlcyIs
e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9lbWl0dGVyfSxlbnVtZXJhYmxlOiEwLGNvbmZp
Z3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwibGVuZ3RoIix7
Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Jlc3VsdHMubGVuZ3RofSxlbnVtZXJhYmxlOiEw
LGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiZmly
c3QiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVzdWx0c1swXX0sZW51bWVyYWJsZToh
MCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImxh
c3QiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVzdWx0c1t0aGlzLmxlbmd0aC0xXX0s
ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5tYXA9ZnVuY3Rpb24o
dCl7cmV0dXJuIHRoaXMuX3Jlc3VsdHMubWFwKHQpfSx0LnByb3RvdHlwZS5maWx0ZXI9ZnVuY3Rp
b24odCl7cmV0dXJuIHRoaXMuX3Jlc3VsdHMuZmlsdGVyKHQpfSx0LnByb3RvdHlwZS5maW5kPWZ1
bmN0aW9uKHQpe3JldHVybiB0aGlzLl9yZXN1bHRzLmZpbmQodCl9LHQucHJvdG90eXBlLnJlZHVj
ZT1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9yZXN1bHRzLnJlZHVjZSh0LGUpfSx0LnByb3Rv
dHlwZS5mb3JFYWNoPWZ1bmN0aW9uKHQpe3RoaXMuX3Jlc3VsdHMuZm9yRWFjaCh0KX0sdC5wcm90
b3R5cGUuc29tZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcmVzdWx0cy5zb21lKHQpfSx0LnBy
b3RvdHlwZS50b0FycmF5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Jlc3VsdHMuc2xpY2UoKX0s
dC5wcm90b3R5cGVbcigpXT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZXN1bHRzW3IoKV0oKX0s
dC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVzdWx0cy50b1N0
cmluZygpfSx0LnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbih0KXt0aGlzLl9yZXN1bHRzPWx0KHQp
LHRoaXMuX2RpcnR5PSExfSx0LnByb3RvdHlwZS5ub3RpZnlPbkNoYW5nZXM9ZnVuY3Rpb24oKXt0
aGlzLl9lbWl0dGVyLmVtaXQodGhpcyl9LHQucHJvdG90eXBlLnNldERpcnR5PWZ1bmN0aW9uKCl7
dGhpcy5fZGlydHk9ITB9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiZGlydHki
LHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGlydHl9LGVudW1lcmFibGU6ITAsY29uZmln
dXJhYmxlOiEwfSksdH0oKSksbGk9IiMiLHBpPSJOZ0ZhY3RvcnkiLGZpPWZ1bmN0aW9uKCl7ZnVu
Y3Rpb24gdCgpe31yZXR1cm4gdH0oKSxoaT17ZmFjdG9yeVBhdGhQcmVmaXg6IiIsZmFjdG9yeVBh
dGhTdWZmaXg6Ii5uZ2ZhY3RvcnkifSxkaT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0aGlz
Ll9jb21waWxlcj10LHRoaXMuX2NvbmZpZz1lfHxoaX1yZXR1cm4gdC5wcm90b3R5cGUubG9hZD1m
dW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fY29tcGlsZXIgaW5zdGFuY2VvZiB4bz90aGlzLmxvYWRG
YWN0b3J5KHQpOnRoaXMubG9hZEFuZENvbXBpbGUodCl9LHQucHJvdG90eXBlLmxvYWRBbmRDb21w
aWxlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMscj10LnNwbGl0KGxpKSxvPXJbMF0saT1yWzFdO3Jl
dHVybiB2b2lkIDA9PT1pJiYoaT0iZGVmYXVsdCIpLG4oIi9mY1ciKShvKS50aGVuKGZ1bmN0aW9u
KHQpe3JldHVybiB0W2ldfSkudGhlbihmdW5jdGlvbih0KXtyZXR1cm4gcHQodCxvLGkpfSkudGhl
bihmdW5jdGlvbih0KXtyZXR1cm4gZS5fY29tcGlsZXIuY29tcGlsZU1vZHVsZUFzeW5jKHQpfSl9
LHQucHJvdG90eXBlLmxvYWRGYWN0b3J5PWZ1bmN0aW9uKHQpe3ZhciBlPXQuc3BsaXQobGkpLHI9
ZVswXSxvPWVbMV0saT1waTtyZXR1cm4gdm9pZCAwPT09byYmKG89ImRlZmF1bHQiLGk9IiIpLG4o
Ii9mY1ciKSh0aGlzLl9jb25maWcuZmFjdG9yeVBhdGhQcmVmaXgrcit0aGlzLl9jb25maWcuZmFj
dG9yeVBhdGhTdWZmaXgpLnRoZW4oZnVuY3Rpb24odCl7cmV0dXJuIHRbbytpXX0pLnRoZW4oZnVu
Y3Rpb24odCl7cmV0dXJuIHB0KHQscixvKX0pfSx0fSgpO2RpLmRlY29yYXRvcnM9W3t0eXBlOlVy
fV0sZGkuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6eG99LHt0eXBlOmZp
LGRlY29yYXRvcnM6W3t0eXBlOkxyfV19XX07LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0
IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
KyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vu
c2UKKyAqLwordmFyIHlpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5
cGUuZWxlbWVudFJlZj1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuY3JlYXRlRW1iZWRkZWRWaWV3
PWZ1bmN0aW9uKHQpe30sdH0oKSxtaT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQu
cHJvdG90eXBlLmVsZW1lbnQ9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmluamVjdG9yPWZ1bmN0
aW9uKCl7fSx0LnByb3RvdHlwZS5wYXJlbnRJbmplY3Rvcj1mdW5jdGlvbigpe30sdC5wcm90b3R5
cGUuY2xlYXI9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXt9LHQucHJv
dG90eXBlLmxlbmd0aD1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuY3JlYXRlRW1iZWRkZWRWaWV3
PWZ1bmN0aW9uKHQsZSxuKXt9LHQucHJvdG90eXBlLmNyZWF0ZUNvbXBvbmVudD1mdW5jdGlvbih0
LGUsbixyLG8pe30sdC5wcm90b3R5cGUuaW5zZXJ0PWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlw
ZS5tb3ZlPWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5pbmRleE9mPWZ1bmN0aW9uKHQpe30s
dC5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuZGV0YWNoPWZ1bmN0
aW9uKHQpe30sdH0oKSxnaT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90
eXBlLm1hcmtGb3JDaGVjaz1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuZGV0YWNoPWZ1bmN0aW9u
KCl7fSx0LnByb3RvdHlwZS5kZXRlY3RDaGFuZ2VzPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5j
aGVja05vQ2hhbmdlcz1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUucmVhdHRhY2g9ZnVuY3Rpb24o
KXt9LHR9KCksdmk9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3JldHVybiBudWxsIT09dCYmdC5h
cHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9cmV0dXJuIGdyKGUsdCksZS5wcm90b3R5cGUuZGVz
dHJveT1mdW5jdGlvbigpe30sZS5wcm90b3R5cGUuZGVzdHJveWVkPWZ1bmN0aW9uKCl7fSxlLnBy
b3RvdHlwZS5vbkRlc3Ryb3k9ZnVuY3Rpb24odCl7fSxlfShnaSksX2k9KGZ1bmN0aW9uKHQpe2Z1
bmN0aW9uIGUoKXtyZXR1cm4gbnVsbCE9PXQmJnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlz
fWdyKGUsdCksZS5wcm90b3R5cGUuY29udGV4dD1mdW5jdGlvbigpe30sZS5wcm90b3R5cGUucm9v
dE5vZGVzPWZ1bmN0aW9uKCl7fX0odmkpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3RoaXMu
bmFtZT10LHRoaXMuY2FsbGJhY2s9ZX1yZXR1cm4gdH0oKSksYmk9ZnVuY3Rpb24oKXtmdW5jdGlv
biB0KHQsZSxuKXt0aGlzLl9kZWJ1Z0NvbnRleHQ9bix0aGlzLm5hdGl2ZU5vZGU9dCxlJiZlIGlu
c3RhbmNlb2Ygd2k/ZS5hZGRDaGlsZCh0aGlzKTp0aGlzLnBhcmVudD1udWxsLHRoaXMubGlzdGVu
ZXJzPVtdfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImluamVjdG9y
Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RlYnVnQ29udGV4dC5pbmplY3Rvcn0sZW51
bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90
b3R5cGUsImNvbXBvbmVudEluc3RhbmNlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Rl
YnVnQ29udGV4dC5jb21wb25lbnR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJjb250ZXh0Iix7Z2V0OmZ1bmN0aW9uKCl7
cmV0dXJuIHRoaXMuX2RlYnVnQ29udGV4dC5jb250ZXh0fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3Vy
YWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwicmVmZXJlbmNlcyIs
e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kZWJ1Z0NvbnRleHQucmVmZXJlbmNlc30sZW51
bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90
b3R5cGUsInByb3ZpZGVyVG9rZW5zIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RlYnVn
Q29udGV4dC5wcm92aWRlclRva2Vuc30sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxP
YmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInNvdXJjZSIse2dldDpmdW5jdGlvbigp
e3JldHVybiJEZXByZWNhdGVkIHNpbmNlIHY0In0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6
ITB9KSx0fSgpLHdpPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuLHIpe3ZhciBvPXQuY2FsbCh0
aGlzLGUsbixyKXx8dGhpcztyZXR1cm4gby5wcm9wZXJ0aWVzPXt9LG8uYXR0cmlidXRlcz17fSxv
LmNsYXNzZXM9e30sby5zdHlsZXM9e30sby5jaGlsZE5vZGVzPVtdLG8ubmF0aXZlRWxlbWVudD1l
LG99cmV0dXJuIGdyKGUsdCksZS5wcm90b3R5cGUuYWRkQ2hpbGQ9ZnVuY3Rpb24odCl7dCYmKHRo
aXMuY2hpbGROb2Rlcy5wdXNoKHQpLHQucGFyZW50PXRoaXMpfSxlLnByb3RvdHlwZS5yZW1vdmVD
aGlsZD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmNoaWxkTm9kZXMuaW5kZXhPZih0KTstMSE9PWUm
Jih0LnBhcmVudD1udWxsLHRoaXMuY2hpbGROb2Rlcy5zcGxpY2UoZSwxKSl9LGUucHJvdG90eXBl
Lmluc2VydENoaWxkcmVuQWZ0ZXI9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLHI9dGhpcy5jaGls
ZE5vZGVzLmluZGV4T2YodCk7LTEhPT1yJiYoKG89dGhpcy5jaGlsZE5vZGVzKS5zcGxpY2UuYXBw
bHkobyxbcisxLDBdLmNvbmNhdChlKSksZS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3QucGFyZW50JiZ0
LnBhcmVudC5yZW1vdmVDaGlsZCh0KSx0LnBhcmVudD1ufSkpO3ZhciBvfSxlLnByb3RvdHlwZS5p
bnNlcnRCZWZvcmU9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLmNoaWxkTm9kZXMuaW5kZXhPZih0
KTstMT09PW4/dGhpcy5hZGRDaGlsZChlKTooZS5wYXJlbnQmJmUucGFyZW50LnJlbW92ZUNoaWxk
KGUpLGUucGFyZW50PXRoaXMsdGhpcy5jaGlsZE5vZGVzLnNwbGljZShuLDAsZSkpfSxlLnByb3Rv
dHlwZS5xdWVyeT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5xdWVyeUFsbCh0KVswXXx8bnVsbH0s
ZS5wcm90b3R5cGUucXVlcnlBbGw9ZnVuY3Rpb24odCl7dmFyIGU9W107cmV0dXJuIGZ0KHRoaXMs
dCxlKSxlfSxlLnByb3RvdHlwZS5xdWVyeUFsbE5vZGVzPWZ1bmN0aW9uKHQpe3ZhciBlPVtdO3Jl
dHVybiBodCh0aGlzLHQsZSksZX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJj
aGlsZHJlbiIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNoaWxkTm9kZXMuZmlsdGVyKGZ1
bmN0aW9uKHQpe3JldHVybiB0IGluc3RhbmNlb2YgZX0pfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3Vy
YWJsZTohMH0pLGUucHJvdG90eXBlLnRyaWdnZXJFdmVudEhhbmRsZXI9ZnVuY3Rpb24odCxlKXt0
aGlzLmxpc3RlbmVycy5mb3JFYWNoKGZ1bmN0aW9uKG4pe24ubmFtZT09dCYmbi5jYWxsYmFjayhl
KX0pfSxlfShiaSksQ2k9bmV3IE1hcCxFaT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy53
cmFwcGVkPXR9cmV0dXJuIHQud3JhcD1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IHQoZSl9LHR9KCks
T2k9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3RoaXMuaGFzV3JhcHBlZFZhbHVlPSExfXQucHJv
dG90eXBlLnVud3JhcD1mdW5jdGlvbih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIEVpPyh0aGlzLmhh
c1dyYXBwZWRWYWx1ZT0hMCx0LndyYXBwZWQpOnR9LHQucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9u
KCl7dGhpcy5oYXNXcmFwcGVkVmFsdWU9ITF9fSgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUs
bil7dGhpcy5wcmV2aW91c1ZhbHVlPXQsdGhpcy5jdXJyZW50VmFsdWU9ZSx0aGlzLmZpcnN0Q2hh
bmdlPW59cmV0dXJuIHQucHJvdG90eXBlLmlzRmlyc3RDaGFuZ2U9ZnVuY3Rpb24oKXtyZXR1cm4g
dGhpcy5maXJzdENoYW5nZX0sdH0oKSkseGk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVy
biB0LnByb3RvdHlwZS5zdXBwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gdnQodCl9LHQucHJvdG90
eXBlLmNyZWF0ZT1mdW5jdGlvbih0LGUpe3JldHVybiBuZXcgUGkoZXx8dCl9LHR9KCksU2k9ZnVu
Y3Rpb24odCxlKXtyZXR1cm4gZX0sUGk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuX2xl
bmd0aD0wLHRoaXMuX2NvbGxlY3Rpb249bnVsbCx0aGlzLl9saW5rZWRSZWNvcmRzPW51bGwsdGhp
cy5fdW5saW5rZWRSZWNvcmRzPW51bGwsdGhpcy5fcHJldmlvdXNJdEhlYWQ9bnVsbCx0aGlzLl9p
dEhlYWQ9bnVsbCx0aGlzLl9pdFRhaWw9bnVsbCx0aGlzLl9hZGRpdGlvbnNIZWFkPW51bGwsdGhp
cy5fYWRkaXRpb25zVGFpbD1udWxsLHRoaXMuX21vdmVzSGVhZD1udWxsLHRoaXMuX21vdmVzVGFp
bD1udWxsLHRoaXMuX3JlbW92YWxzSGVhZD1udWxsLHRoaXMuX3JlbW92YWxzVGFpbD1udWxsLHRo
aXMuX2lkZW50aXR5Q2hhbmdlc0hlYWQ9bnVsbCx0aGlzLl9pZGVudGl0eUNoYW5nZXNUYWlsPW51
bGwsdGhpcy5fdHJhY2tCeUZuPXR8fFNpfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodC5w
cm90b3R5cGUsImNvbGxlY3Rpb24iLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY29sbGVj
dGlvbn0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVy
dHkodC5wcm90b3R5cGUsImxlbmd0aCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9sZW5n
dGh9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuZm9yRWFjaEl0
ZW09ZnVuY3Rpb24odCl7dmFyIGU7Zm9yKGU9dGhpcy5faXRIZWFkO251bGwhPT1lO2U9ZS5fbmV4
dCl0KGUpfSx0LnByb3RvdHlwZS5mb3JFYWNoT3BlcmF0aW9uPWZ1bmN0aW9uKHQpe2Zvcih2YXIg
ZT10aGlzLl9pdEhlYWQsbj10aGlzLl9yZW1vdmFsc0hlYWQscj0wLG89bnVsbDtlfHxuOyl7dmFy
IGk9IW58fGUmJmUuY3VycmVudEluZGV4PEN0KG4scixvKT9lOm4scz1DdChpLHIsbyksYT1pLmN1
cnJlbnRJbmRleDtpZihpPT09bilyLS0sbj1uLl9uZXh0UmVtb3ZlZDtlbHNlIGlmKGU9ZS5fbmV4
dCxudWxsPT1pLnByZXZpb3VzSW5kZXgpcisrO2Vsc2V7b3x8KG89W10pO3ZhciB1PXMtcixjPWEt
cjtpZih1IT1jKXtmb3IodmFyIGw9MDtsPHU7bCsrKXt2YXIgcD1sPG8ubGVuZ3RoP29bbF06b1ts
XT0wLGY9cCtsO2M8PWYmJmY8dSYmKG9bbF09cCsxKX12YXIgaD1pLnByZXZpb3VzSW5kZXg7b1to
XT1jLXV9fXMhPT1hJiZ0KGkscyxhKX19LHQucHJvdG90eXBlLmZvckVhY2hQcmV2aW91c0l0ZW09
ZnVuY3Rpb24odCl7dmFyIGU7Zm9yKGU9dGhpcy5fcHJldmlvdXNJdEhlYWQ7bnVsbCE9PWU7ZT1l
Ll9uZXh0UHJldmlvdXMpdChlKX0sdC5wcm90b3R5cGUuZm9yRWFjaEFkZGVkSXRlbT1mdW5jdGlv
bih0KXt2YXIgZTtmb3IoZT10aGlzLl9hZGRpdGlvbnNIZWFkO251bGwhPT1lO2U9ZS5fbmV4dEFk
ZGVkKXQoZSl9LHQucHJvdG90eXBlLmZvckVhY2hNb3ZlZEl0ZW09ZnVuY3Rpb24odCl7dmFyIGU7
Zm9yKGU9dGhpcy5fbW92ZXNIZWFkO251bGwhPT1lO2U9ZS5fbmV4dE1vdmVkKXQoZSl9LHQucHJv
dG90eXBlLmZvckVhY2hSZW1vdmVkSXRlbT1mdW5jdGlvbih0KXt2YXIgZTtmb3IoZT10aGlzLl9y
ZW1vdmFsc0hlYWQ7bnVsbCE9PWU7ZT1lLl9uZXh0UmVtb3ZlZCl0KGUpfSx0LnByb3RvdHlwZS5m
b3JFYWNoSWRlbnRpdHlDaGFuZ2U9ZnVuY3Rpb24odCl7dmFyIGU7Zm9yKGU9dGhpcy5faWRlbnRp
dHlDaGFuZ2VzSGVhZDtudWxsIT09ZTtlPWUuX25leHRJZGVudGl0eUNoYW5nZSl0KGUpfSx0LnBy
b3RvdHlwZS5kaWZmPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQmJih0PVtdKSwhdnQodCkpdGhyb3cg
bmV3IEVycm9yKCJFcnJvciB0cnlpbmcgdG8gZGlmZiAnIitzKHQpKyInLiBPbmx5IGFycmF5cyBh
bmQgaXRlcmFibGVzIGFyZSBhbGxvd2VkIik7cmV0dXJuIHRoaXMuY2hlY2sodCk/dGhpczpudWxs
fSx0LnByb3RvdHlwZS5vbkRlc3Ryb3k9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmNoZWNrPWZ1
bmN0aW9uKHQpe3ZhciBlPXRoaXM7dGhpcy5fcmVzZXQoKTt2YXIgbixyLG8scz10aGlzLl9pdEhl
YWQsYT0hMTtpZihBcnJheS5pc0FycmF5KHQpKXt0aGlzLl9sZW5ndGg9dC5sZW5ndGg7Zm9yKHZh
ciB1PTA7dTx0aGlzLl9sZW5ndGg7dSsrKXI9dFt1XSxvPXRoaXMuX3RyYWNrQnlGbih1LHIpLG51
bGwhPT1zJiZpKHMudHJhY2tCeUlkLG8pPyhhJiYocz10aGlzLl92ZXJpZnlSZWluc2VydGlvbihz
LHIsbyx1KSksaShzLml0ZW0scil8fHRoaXMuX2FkZElkZW50aXR5Q2hhbmdlKHMscikpOihzPXRo
aXMuX21pc21hdGNoKHMscixvLHUpLGE9ITApLHM9cy5fbmV4dH1lbHNlIG49MCxidCh0LGZ1bmN0
aW9uKHQpe289ZS5fdHJhY2tCeUZuKG4sdCksbnVsbCE9PXMmJmkocy50cmFja0J5SWQsbyk/KGEm
JihzPWUuX3ZlcmlmeVJlaW5zZXJ0aW9uKHMsdCxvLG4pKSxpKHMuaXRlbSx0KXx8ZS5fYWRkSWRl
bnRpdHlDaGFuZ2Uocyx0KSk6KHM9ZS5fbWlzbWF0Y2gocyx0LG8sbiksYT0hMCkscz1zLl9uZXh0
LG4rK30pLHRoaXMuX2xlbmd0aD1uO3JldHVybiB0aGlzLl90cnVuY2F0ZShzKSx0aGlzLl9jb2xs
ZWN0aW9uPXQsdGhpcy5pc0RpcnR5fSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUs
ImlzRGlydHkiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbCE9PXRoaXMuX2FkZGl0aW9uc0hl
YWR8fG51bGwhPT10aGlzLl9tb3Zlc0hlYWR8fG51bGwhPT10aGlzLl9yZW1vdmFsc0hlYWR8fG51
bGwhPT10aGlzLl9pZGVudGl0eUNoYW5nZXNIZWFkfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJs
ZTohMH0pLHQucHJvdG90eXBlLl9yZXNldD1mdW5jdGlvbigpe2lmKHRoaXMuaXNEaXJ0eSl7dmFy
IHQ9dm9pZCAwLGU9dm9pZCAwO2Zvcih0PXRoaXMuX3ByZXZpb3VzSXRIZWFkPXRoaXMuX2l0SGVh
ZDtudWxsIT09dDt0PXQuX25leHQpdC5fbmV4dFByZXZpb3VzPXQuX25leHQ7Zm9yKHQ9dGhpcy5f
YWRkaXRpb25zSGVhZDtudWxsIT09dDt0PXQuX25leHRBZGRlZCl0LnByZXZpb3VzSW5kZXg9dC5j
dXJyZW50SW5kZXg7Zm9yKHRoaXMuX2FkZGl0aW9uc0hlYWQ9dGhpcy5fYWRkaXRpb25zVGFpbD1u
dWxsLHQ9dGhpcy5fbW92ZXNIZWFkO251bGwhPT10O3Q9ZSl0LnByZXZpb3VzSW5kZXg9dC5jdXJy
ZW50SW5kZXgsZT10Ll9uZXh0TW92ZWQ7dGhpcy5fbW92ZXNIZWFkPXRoaXMuX21vdmVzVGFpbD1u
dWxsLHRoaXMuX3JlbW92YWxzSGVhZD10aGlzLl9yZW1vdmFsc1RhaWw9bnVsbCx0aGlzLl9pZGVu
dGl0eUNoYW5nZXNIZWFkPXRoaXMuX2lkZW50aXR5Q2hhbmdlc1RhaWw9bnVsbH19LHQucHJvdG90
eXBlLl9taXNtYXRjaD1mdW5jdGlvbih0LGUsbixyKXt2YXIgbztyZXR1cm4gbnVsbD09PXQ/bz10
aGlzLl9pdFRhaWw6KG89dC5fcHJldix0aGlzLl9yZW1vdmUodCkpLHQ9bnVsbD09PXRoaXMuX2xp
bmtlZFJlY29yZHM/bnVsbDp0aGlzLl9saW5rZWRSZWNvcmRzLmdldChuLHIpLG51bGwhPT10Pyhp
KHQuaXRlbSxlKXx8dGhpcy5fYWRkSWRlbnRpdHlDaGFuZ2UodCxlKSx0aGlzLl9tb3ZlQWZ0ZXIo
dCxvLHIpKToodD1udWxsPT09dGhpcy5fdW5saW5rZWRSZWNvcmRzP251bGw6dGhpcy5fdW5saW5r
ZWRSZWNvcmRzLmdldChuLG51bGwpLG51bGwhPT10PyhpKHQuaXRlbSxlKXx8dGhpcy5fYWRkSWRl
bnRpdHlDaGFuZ2UodCxlKSx0aGlzLl9yZWluc2VydEFmdGVyKHQsbyxyKSk6dD10aGlzLl9hZGRB
ZnRlcihuZXcgQWkoZSxuKSxvLHIpKSx0fSx0LnByb3RvdHlwZS5fdmVyaWZ5UmVpbnNlcnRpb249
ZnVuY3Rpb24odCxlLG4scil7dmFyIG89bnVsbD09PXRoaXMuX3VubGlua2VkUmVjb3Jkcz9udWxs
OnRoaXMuX3VubGlua2VkUmVjb3Jkcy5nZXQobixudWxsKTtyZXR1cm4gbnVsbCE9PW8/dD10aGlz
Ll9yZWluc2VydEFmdGVyKG8sdC5fcHJldixyKTp0LmN1cnJlbnRJbmRleCE9ciYmKHQuY3VycmVu
dEluZGV4PXIsdGhpcy5fYWRkVG9Nb3Zlcyh0LHIpKSx0fSx0LnByb3RvdHlwZS5fdHJ1bmNhdGU9
ZnVuY3Rpb24odCl7Zm9yKDtudWxsIT09dDspe3ZhciBlPXQuX25leHQ7dGhpcy5fYWRkVG9SZW1v
dmFscyh0aGlzLl91bmxpbmsodCkpLHQ9ZX1udWxsIT09dGhpcy5fdW5saW5rZWRSZWNvcmRzJiZ0
aGlzLl91bmxpbmtlZFJlY29yZHMuY2xlYXIoKSxudWxsIT09dGhpcy5fYWRkaXRpb25zVGFpbCYm
KHRoaXMuX2FkZGl0aW9uc1RhaWwuX25leHRBZGRlZD1udWxsKSxudWxsIT09dGhpcy5fbW92ZXNU
YWlsJiYodGhpcy5fbW92ZXNUYWlsLl9uZXh0TW92ZWQ9bnVsbCksbnVsbCE9PXRoaXMuX2l0VGFp
bCYmKHRoaXMuX2l0VGFpbC5fbmV4dD1udWxsKSxudWxsIT09dGhpcy5fcmVtb3ZhbHNUYWlsJiYo
dGhpcy5fcmVtb3ZhbHNUYWlsLl9uZXh0UmVtb3ZlZD1udWxsKSxudWxsIT09dGhpcy5faWRlbnRp
dHlDaGFuZ2VzVGFpbCYmKHRoaXMuX2lkZW50aXR5Q2hhbmdlc1RhaWwuX25leHRJZGVudGl0eUNo
YW5nZT1udWxsKX0sdC5wcm90b3R5cGUuX3JlaW5zZXJ0QWZ0ZXI9ZnVuY3Rpb24odCxlLG4pe251
bGwhPT10aGlzLl91bmxpbmtlZFJlY29yZHMmJnRoaXMuX3VubGlua2VkUmVjb3Jkcy5yZW1vdmUo
dCk7dmFyIHI9dC5fcHJldlJlbW92ZWQsbz10Ll9uZXh0UmVtb3ZlZDtyZXR1cm4gbnVsbD09PXI/
dGhpcy5fcmVtb3ZhbHNIZWFkPW86ci5fbmV4dFJlbW92ZWQ9byxudWxsPT09bz90aGlzLl9yZW1v
dmFsc1RhaWw9cjpvLl9wcmV2UmVtb3ZlZD1yLHRoaXMuX2luc2VydEFmdGVyKHQsZSxuKSx0aGlz
Ll9hZGRUb01vdmVzKHQsbiksdH0sdC5wcm90b3R5cGUuX21vdmVBZnRlcj1mdW5jdGlvbih0LGUs
bil7cmV0dXJuIHRoaXMuX3VubGluayh0KSx0aGlzLl9pbnNlcnRBZnRlcih0LGUsbiksdGhpcy5f
YWRkVG9Nb3Zlcyh0LG4pLHR9LHQucHJvdG90eXBlLl9hZGRBZnRlcj1mdW5jdGlvbih0LGUsbil7
cmV0dXJuIHRoaXMuX2luc2VydEFmdGVyKHQsZSxuKSxudWxsPT09dGhpcy5fYWRkaXRpb25zVGFp
bD90aGlzLl9hZGRpdGlvbnNUYWlsPXRoaXMuX2FkZGl0aW9uc0hlYWQ9dDp0aGlzLl9hZGRpdGlv
bnNUYWlsPXRoaXMuX2FkZGl0aW9uc1RhaWwuX25leHRBZGRlZD10LHR9LHQucHJvdG90eXBlLl9p
bnNlcnRBZnRlcj1mdW5jdGlvbih0LGUsbil7dmFyIHI9bnVsbD09PWU/dGhpcy5faXRIZWFkOmUu
X25leHQ7cmV0dXJuIHQuX25leHQ9cix0Ll9wcmV2PWUsbnVsbD09PXI/dGhpcy5faXRUYWlsPXQ6
ci5fcHJldj10LG51bGw9PT1lP3RoaXMuX2l0SGVhZD10OmUuX25leHQ9dCxudWxsPT09dGhpcy5f
bGlua2VkUmVjb3JkcyYmKHRoaXMuX2xpbmtlZFJlY29yZHM9bmV3IGtpKSx0aGlzLl9saW5rZWRS
ZWNvcmRzLnB1dCh0KSx0LmN1cnJlbnRJbmRleD1uLHR9LHQucHJvdG90eXBlLl9yZW1vdmU9ZnVu
Y3Rpb24odCl7cmV0dXJuIHRoaXMuX2FkZFRvUmVtb3ZhbHModGhpcy5fdW5saW5rKHQpKX0sdC5w
cm90b3R5cGUuX3VubGluaz1mdW5jdGlvbih0KXtudWxsIT09dGhpcy5fbGlua2VkUmVjb3JkcyYm
dGhpcy5fbGlua2VkUmVjb3Jkcy5yZW1vdmUodCk7dmFyIGU9dC5fcHJldixuPXQuX25leHQ7cmV0
dXJuIG51bGw9PT1lP3RoaXMuX2l0SGVhZD1uOmUuX25leHQ9bixudWxsPT09bj90aGlzLl9pdFRh
aWw9ZTpuLl9wcmV2PWUsdH0sdC5wcm90b3R5cGUuX2FkZFRvTW92ZXM9ZnVuY3Rpb24odCxlKXty
ZXR1cm4gdC5wcmV2aW91c0luZGV4PT09ZT90OihudWxsPT09dGhpcy5fbW92ZXNUYWlsP3RoaXMu
X21vdmVzVGFpbD10aGlzLl9tb3Zlc0hlYWQ9dDp0aGlzLl9tb3Zlc1RhaWw9dGhpcy5fbW92ZXNU
YWlsLl9uZXh0TW92ZWQ9dCx0KX0sdC5wcm90b3R5cGUuX2FkZFRvUmVtb3ZhbHM9ZnVuY3Rpb24o
dCl7cmV0dXJuIG51bGw9PT10aGlzLl91bmxpbmtlZFJlY29yZHMmJih0aGlzLl91bmxpbmtlZFJl
Y29yZHM9bmV3IGtpKSx0aGlzLl91bmxpbmtlZFJlY29yZHMucHV0KHQpLHQuY3VycmVudEluZGV4
PW51bGwsdC5fbmV4dFJlbW92ZWQ9bnVsbCxudWxsPT09dGhpcy5fcmVtb3ZhbHNUYWlsPyh0aGlz
Ll9yZW1vdmFsc1RhaWw9dGhpcy5fcmVtb3ZhbHNIZWFkPXQsdC5fcHJldlJlbW92ZWQ9bnVsbCk6
KHQuX3ByZXZSZW1vdmVkPXRoaXMuX3JlbW92YWxzVGFpbCx0aGlzLl9yZW1vdmFsc1RhaWw9dGhp
cy5fcmVtb3ZhbHNUYWlsLl9uZXh0UmVtb3ZlZD10KSx0fSx0LnByb3RvdHlwZS5fYWRkSWRlbnRp
dHlDaGFuZ2U9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5pdGVtPWUsbnVsbD09PXRoaXMuX2lkZW50
aXR5Q2hhbmdlc1RhaWw/dGhpcy5faWRlbnRpdHlDaGFuZ2VzVGFpbD10aGlzLl9pZGVudGl0eUNo
YW5nZXNIZWFkPXQ6dGhpcy5faWRlbnRpdHlDaGFuZ2VzVGFpbD10aGlzLl9pZGVudGl0eUNoYW5n
ZXNUYWlsLl9uZXh0SWRlbnRpdHlDaGFuZ2U9dCx0fSx0LnByb3RvdHlwZS50b1N0cmluZz1mdW5j
dGlvbigpe3ZhciB0PVtdO3RoaXMuZm9yRWFjaEl0ZW0oZnVuY3Rpb24oZSl7cmV0dXJuIHQucHVz
aChlKX0pO3ZhciBlPVtdO3RoaXMuZm9yRWFjaFByZXZpb3VzSXRlbShmdW5jdGlvbih0KXtyZXR1
cm4gZS5wdXNoKHQpfSk7dmFyIG49W107dGhpcy5mb3JFYWNoQWRkZWRJdGVtKGZ1bmN0aW9uKHQp
e3JldHVybiBuLnB1c2godCl9KTt2YXIgcj1bXTt0aGlzLmZvckVhY2hNb3ZlZEl0ZW0oZnVuY3Rp
b24odCl7cmV0dXJuIHIucHVzaCh0KX0pO3ZhciBvPVtdO3RoaXMuZm9yRWFjaFJlbW92ZWRJdGVt
KGZ1bmN0aW9uKHQpe3JldHVybiBvLnB1c2godCl9KTt2YXIgaT1bXTtyZXR1cm4gdGhpcy5mb3JF
YWNoSWRlbnRpdHlDaGFuZ2UoZnVuY3Rpb24odCl7cmV0dXJuIGkucHVzaCh0KX0pLCJjb2xsZWN0
aW9uOiAiK3Quam9pbigiLCAiKSsiXG5wcmV2aW91czogIitlLmpvaW4oIiwgIikrIlxuYWRkaXRp
b25zOiAiK24uam9pbigiLCAiKSsiXG5tb3ZlczogIityLmpvaW4oIiwgIikrIlxucmVtb3ZhbHM6
ICIrby5qb2luKCIsICIpKyJcbmlkZW50aXR5Q2hhbmdlczogIitpLmpvaW4oIiwgIikrIlxuIn0s
dH0oKSxBaT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0aGlzLml0ZW09dCx0aGlzLnRyYWNr
QnlJZD1lLHRoaXMuY3VycmVudEluZGV4PW51bGwsdGhpcy5wcmV2aW91c0luZGV4PW51bGwsdGhp
cy5fbmV4dFByZXZpb3VzPW51bGwsdGhpcy5fcHJldj1udWxsLHRoaXMuX25leHQ9bnVsbCx0aGlz
Ll9wcmV2RHVwPW51bGwsdGhpcy5fbmV4dER1cD1udWxsLHRoaXMuX3ByZXZSZW1vdmVkPW51bGws
dGhpcy5fbmV4dFJlbW92ZWQ9bnVsbCx0aGlzLl9uZXh0QWRkZWQ9bnVsbCx0aGlzLl9uZXh0TW92
ZWQ9bnVsbCx0aGlzLl9uZXh0SWRlbnRpdHlDaGFuZ2U9bnVsbH1yZXR1cm4gdC5wcm90b3R5cGUu
dG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcmV2aW91c0luZGV4PT09dGhpcy5jdXJy
ZW50SW5kZXg/cyh0aGlzLml0ZW0pOnModGhpcy5pdGVtKSsiWyIrcyh0aGlzLnByZXZpb3VzSW5k
ZXgpKyItPiIrcyh0aGlzLmN1cnJlbnRJbmRleCkrIl0ifSx0fSgpLFRpPWZ1bmN0aW9uKCl7ZnVu
Y3Rpb24gdCgpe3RoaXMuX2hlYWQ9bnVsbCx0aGlzLl90YWlsPW51bGx9cmV0dXJuIHQucHJvdG90
eXBlLmFkZD1mdW5jdGlvbih0KXtudWxsPT09dGhpcy5faGVhZD8odGhpcy5faGVhZD10aGlzLl90
YWlsPXQsdC5fbmV4dER1cD1udWxsLHQuX3ByZXZEdXA9bnVsbCk6KHRoaXMuX3RhaWwuX25leHRE
dXA9dCx0Ll9wcmV2RHVwPXRoaXMuX3RhaWwsdC5fbmV4dER1cD1udWxsLHRoaXMuX3RhaWw9dCl9
LHQucHJvdG90eXBlLmdldD1mdW5jdGlvbih0LGUpe3ZhciBuO2ZvcihuPXRoaXMuX2hlYWQ7bnVs
bCE9PW47bj1uLl9uZXh0RHVwKWlmKChudWxsPT09ZXx8ZTxuLmN1cnJlbnRJbmRleCkmJmkobi50
cmFja0J5SWQsdCkpcmV0dXJuIG47cmV0dXJuIG51bGx9LHQucHJvdG90eXBlLnJlbW92ZT1mdW5j
dGlvbih0KXt2YXIgZT10Ll9wcmV2RHVwLG49dC5fbmV4dER1cDtyZXR1cm4gbnVsbD09PWU/dGhp
cy5faGVhZD1uOmUuX25leHREdXA9bixudWxsPT09bj90aGlzLl90YWlsPWU6bi5fcHJldkR1cD1l
LG51bGw9PT10aGlzLl9oZWFkfSx0fSgpLGtpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3RoaXMu
bWFwPW5ldyBNYXB9cmV0dXJuIHQucHJvdG90eXBlLnB1dD1mdW5jdGlvbih0KXt2YXIgZT10LnRy
YWNrQnlJZCxuPXRoaXMubWFwLmdldChlKTtufHwobj1uZXcgVGksdGhpcy5tYXAuc2V0KGUsbikp
LG4uYWRkKHQpfSx0LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCxlKXt2YXIgbj10LHI9dGhpcy5t
YXAuZ2V0KG4pO3JldHVybiByP3IuZ2V0KHQsZSk6bnVsbH0sdC5wcm90b3R5cGUucmVtb3ZlPWZ1
bmN0aW9uKHQpe3ZhciBlPXQudHJhY2tCeUlkO3JldHVybiB0aGlzLm1hcC5nZXQoZSkucmVtb3Zl
KHQpJiZ0aGlzLm1hcC5kZWxldGUoZSksdH0sT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90
eXBlLCJpc0VtcHR5Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLm1hcC5zaXplfSxl
bnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9u
KCl7dGhpcy5tYXAuY2xlYXIoKX0sdC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1
cm4iX0R1cGxpY2F0ZU1hcCgiK3ModGhpcy5tYXApKyIpIn0sdH0oKSxWaT1mdW5jdGlvbigpe2Z1
bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLnN1cHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVy
biB0IGluc3RhbmNlb2YgTWFwfHx3dCh0KX0sdC5wcm90b3R5cGUuY3JlYXRlPWZ1bmN0aW9uKHQp
e3JldHVybiBuZXcgTWl9LHR9KCksTWk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5fcmVj
b3Jkcz1uZXcgTWFwLHRoaXMuX21hcEhlYWQ9bnVsbCx0aGlzLl9hcHBlbmRBZnRlcj1udWxsLHRo
aXMuX3ByZXZpb3VzTWFwSGVhZD1udWxsLHRoaXMuX2NoYW5nZXNIZWFkPW51bGwsdGhpcy5fY2hh
bmdlc1RhaWw9bnVsbCx0aGlzLl9hZGRpdGlvbnNIZWFkPW51bGwsdGhpcy5fYWRkaXRpb25zVGFp
bD1udWxsLHRoaXMuX3JlbW92YWxzSGVhZD1udWxsLHRoaXMuX3JlbW92YWxzVGFpbD1udWxsfXJl
dHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImlzRGlydHkiLHtnZXQ6ZnVu
Y3Rpb24oKXtyZXR1cm4gbnVsbCE9PXRoaXMuX2FkZGl0aW9uc0hlYWR8fG51bGwhPT10aGlzLl9j
aGFuZ2VzSGVhZHx8bnVsbCE9PXRoaXMuX3JlbW92YWxzSGVhZH0sZW51bWVyYWJsZTohMCxjb25m
aWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5mb3JFYWNoSXRlbT1mdW5jdGlvbih0KXt2YXIgZTtm
b3IoZT10aGlzLl9tYXBIZWFkO251bGwhPT1lO2U9ZS5fbmV4dCl0KGUpfSx0LnByb3RvdHlwZS5m
b3JFYWNoUHJldmlvdXNJdGVtPWZ1bmN0aW9uKHQpe3ZhciBlO2ZvcihlPXRoaXMuX3ByZXZpb3Vz
TWFwSGVhZDtudWxsIT09ZTtlPWUuX25leHRQcmV2aW91cyl0KGUpfSx0LnByb3RvdHlwZS5mb3JF
YWNoQ2hhbmdlZEl0ZW09ZnVuY3Rpb24odCl7dmFyIGU7Zm9yKGU9dGhpcy5fY2hhbmdlc0hlYWQ7
bnVsbCE9PWU7ZT1lLl9uZXh0Q2hhbmdlZCl0KGUpfSx0LnByb3RvdHlwZS5mb3JFYWNoQWRkZWRJ
dGVtPWZ1bmN0aW9uKHQpe3ZhciBlO2ZvcihlPXRoaXMuX2FkZGl0aW9uc0hlYWQ7bnVsbCE9PWU7
ZT1lLl9uZXh0QWRkZWQpdChlKX0sdC5wcm90b3R5cGUuZm9yRWFjaFJlbW92ZWRJdGVtPWZ1bmN0
aW9uKHQpe3ZhciBlO2ZvcihlPXRoaXMuX3JlbW92YWxzSGVhZDtudWxsIT09ZTtlPWUuX25leHRS
ZW1vdmVkKXQoZSl9LHQucHJvdG90eXBlLmRpZmY9ZnVuY3Rpb24odCl7aWYodCl7aWYoISh0IGlu
c3RhbmNlb2YgTWFwfHx3dCh0KSkpdGhyb3cgbmV3IEVycm9yKCJFcnJvciB0cnlpbmcgdG8gZGlm
ZiAnIitzKHQpKyInLiBPbmx5IG1hcHMgYW5kIG9iamVjdHMgYXJlIGFsbG93ZWQiKX1lbHNlIHQ9
bmV3IE1hcDtyZXR1cm4gdGhpcy5jaGVjayh0KT90aGlzOm51bGx9LHQucHJvdG90eXBlLm9uRGVz
dHJveT1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuY2hlY2s9ZnVuY3Rpb24odCl7dmFyIGU9dGhp
czt0aGlzLl9yZXNldCgpO3ZhciBuPXRoaXMuX21hcEhlYWQ7aWYodGhpcy5fYXBwZW5kQWZ0ZXI9
bnVsbCx0aGlzLl9mb3JFYWNoKHQsZnVuY3Rpb24odCxyKXtpZihuJiZuLmtleT09PXIpZS5fbWF5
YmVBZGRUb0NoYW5nZXMobix0KSxlLl9hcHBlbmRBZnRlcj1uLG49bi5fbmV4dDtlbHNle3ZhciBv
PWUuX2dldE9yQ3JlYXRlUmVjb3JkRm9yS2V5KHIsdCk7bj1lLl9pbnNlcnRCZWZvcmVPckFwcGVu
ZChuLG8pfX0pLG4pe24uX3ByZXYmJihuLl9wcmV2Ll9uZXh0PW51bGwpLHRoaXMuX3JlbW92YWxz
SGVhZD1uLHRoaXMuX3JlbW92YWxzVGFpbD1uO2Zvcih2YXIgcj1uO251bGwhPT1yO3I9ci5fbmV4
dFJlbW92ZWQpcj09PXRoaXMuX21hcEhlYWQmJih0aGlzLl9tYXBIZWFkPW51bGwpLHRoaXMuX3Jl
Y29yZHMuZGVsZXRlKHIua2V5KSxyLl9uZXh0UmVtb3ZlZD1yLl9uZXh0LHIucHJldmlvdXNWYWx1
ZT1yLmN1cnJlbnRWYWx1ZSxyLmN1cnJlbnRWYWx1ZT1udWxsLHIuX3ByZXY9bnVsbCxyLl9uZXh0
PW51bGx9cmV0dXJuIHRoaXMuaXNEaXJ0eX0sdC5wcm90b3R5cGUuX2luc2VydEJlZm9yZU9yQXBw
ZW5kPWZ1bmN0aW9uKHQsZSl7aWYodCl7dmFyIG49dC5fcHJldjtyZXR1cm4gZS5fbmV4dD10LGUu
X3ByZXY9bix0Ll9wcmV2PWUsbiYmKG4uX25leHQ9ZSksdD09PXRoaXMuX21hcEhlYWQmJih0aGlz
Ll9tYXBIZWFkPWUpLHRoaXMuX2FwcGVuZEFmdGVyPXQsdH1yZXR1cm4gdGhpcy5fYXBwZW5kQWZ0
ZXI/KHRoaXMuX2FwcGVuZEFmdGVyLl9uZXh0PWUsZS5fcHJldj10aGlzLl9hcHBlbmRBZnRlcik6
dGhpcy5fbWFwSGVhZD1lLHRoaXMuX2FwcGVuZEFmdGVyPWUsbnVsbH0sdC5wcm90b3R5cGUuX2dl
dE9yQ3JlYXRlUmVjb3JkRm9yS2V5PWZ1bmN0aW9uKHQsZSl7aWYodGhpcy5fcmVjb3Jkcy5oYXMo
dCkpe3ZhciBuPXRoaXMuX3JlY29yZHMuZ2V0KHQpO3RoaXMuX21heWJlQWRkVG9DaGFuZ2VzKG4s
ZSk7dmFyIHI9bi5fcHJldixvPW4uX25leHQ7cmV0dXJuIHImJihyLl9uZXh0PW8pLG8mJihvLl9w
cmV2PXIpLG4uX25leHQ9bnVsbCxuLl9wcmV2PW51bGwsbn12YXIgaT1uZXcgTmkodCk7cmV0dXJu
IHRoaXMuX3JlY29yZHMuc2V0KHQsaSksaS5jdXJyZW50VmFsdWU9ZSx0aGlzLl9hZGRUb0FkZGl0
aW9ucyhpKSxpfSx0LnByb3RvdHlwZS5fcmVzZXQ9ZnVuY3Rpb24oKXtpZih0aGlzLmlzRGlydHkp
e3ZhciB0PXZvaWQgMDtmb3IodGhpcy5fcHJldmlvdXNNYXBIZWFkPXRoaXMuX21hcEhlYWQsdD10
aGlzLl9wcmV2aW91c01hcEhlYWQ7bnVsbCE9PXQ7dD10Ll9uZXh0KXQuX25leHRQcmV2aW91cz10
Ll9uZXh0O2Zvcih0PXRoaXMuX2NoYW5nZXNIZWFkO251bGwhPT10O3Q9dC5fbmV4dENoYW5nZWQp
dC5wcmV2aW91c1ZhbHVlPXQuY3VycmVudFZhbHVlO2Zvcih0PXRoaXMuX2FkZGl0aW9uc0hlYWQ7
bnVsbCE9dDt0PXQuX25leHRBZGRlZCl0LnByZXZpb3VzVmFsdWU9dC5jdXJyZW50VmFsdWU7dGhp
cy5fY2hhbmdlc0hlYWQ9dGhpcy5fY2hhbmdlc1RhaWw9bnVsbCx0aGlzLl9hZGRpdGlvbnNIZWFk
PXRoaXMuX2FkZGl0aW9uc1RhaWw9bnVsbCx0aGlzLl9yZW1vdmFsc0hlYWQ9dGhpcy5fcmVtb3Zh
bHNUYWlsPW51bGx9fSx0LnByb3RvdHlwZS5fbWF5YmVBZGRUb0NoYW5nZXM9ZnVuY3Rpb24odCxl
KXtpKGUsdC5jdXJyZW50VmFsdWUpfHwodC5wcmV2aW91c1ZhbHVlPXQuY3VycmVudFZhbHVlLHQu
Y3VycmVudFZhbHVlPWUsdGhpcy5fYWRkVG9DaGFuZ2VzKHQpKX0sdC5wcm90b3R5cGUuX2FkZFRv
QWRkaXRpb25zPWZ1bmN0aW9uKHQpe251bGw9PT10aGlzLl9hZGRpdGlvbnNIZWFkP3RoaXMuX2Fk
ZGl0aW9uc0hlYWQ9dGhpcy5fYWRkaXRpb25zVGFpbD10Oih0aGlzLl9hZGRpdGlvbnNUYWlsLl9u
ZXh0QWRkZWQ9dCx0aGlzLl9hZGRpdGlvbnNUYWlsPXQpfSx0LnByb3RvdHlwZS5fYWRkVG9DaGFu
Z2VzPWZ1bmN0aW9uKHQpe251bGw9PT10aGlzLl9jaGFuZ2VzSGVhZD90aGlzLl9jaGFuZ2VzSGVh
ZD10aGlzLl9jaGFuZ2VzVGFpbD10Oih0aGlzLl9jaGFuZ2VzVGFpbC5fbmV4dENoYW5nZWQ9dCx0
aGlzLl9jaGFuZ2VzVGFpbD10KX0sdC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXt2YXIg
dCxlPVtdLG49W10scj1bXSxvPVtdLGk9W107Zm9yKHQ9dGhpcy5fbWFwSGVhZDtudWxsIT09dDt0
PXQuX25leHQpZS5wdXNoKHModCkpO2Zvcih0PXRoaXMuX3ByZXZpb3VzTWFwSGVhZDtudWxsIT09
dDt0PXQuX25leHRQcmV2aW91cyluLnB1c2gocyh0KSk7Zm9yKHQ9dGhpcy5fY2hhbmdlc0hlYWQ7
bnVsbCE9PXQ7dD10Ll9uZXh0Q2hhbmdlZClyLnB1c2gocyh0KSk7Zm9yKHQ9dGhpcy5fYWRkaXRp
b25zSGVhZDtudWxsIT09dDt0PXQuX25leHRBZGRlZClvLnB1c2gocyh0KSk7Zm9yKHQ9dGhpcy5f
cmVtb3ZhbHNIZWFkO251bGwhPT10O3Q9dC5fbmV4dFJlbW92ZWQpaS5wdXNoKHModCkpO3JldHVy
biJtYXA6ICIrZS5qb2luKCIsICIpKyJcbnByZXZpb3VzOiAiK24uam9pbigiLCAiKSsiXG5hZGRp
dGlvbnM6ICIrby5qb2luKCIsICIpKyJcbmNoYW5nZXM6ICIrci5qb2luKCIsICIpKyJcbnJlbW92
YWxzOiAiK2kuam9pbigiLCAiKSsiXG4ifSx0LnByb3RvdHlwZS5fZm9yRWFjaD1mdW5jdGlvbih0
LGUpe3QgaW5zdGFuY2VvZiBNYXA/dC5mb3JFYWNoKGUpOk9iamVjdC5rZXlzKHQpLmZvckVhY2go
ZnVuY3Rpb24obil7cmV0dXJuIGUodFtuXSxuKX0pfSx0fSgpLE5pPWZ1bmN0aW9uKCl7ZnVuY3Rp
b24gdCh0KXt0aGlzLmtleT10LHRoaXMucHJldmlvdXNWYWx1ZT1udWxsLHRoaXMuY3VycmVudFZh
bHVlPW51bGwsdGhpcy5fbmV4dFByZXZpb3VzPW51bGwsdGhpcy5fbmV4dD1udWxsLHRoaXMuX3By
ZXY9bnVsbCx0aGlzLl9uZXh0QWRkZWQ9bnVsbCx0aGlzLl9uZXh0UmVtb3ZlZD1udWxsLHRoaXMu
X25leHRDaGFuZ2VkPW51bGx9cmV0dXJuIHQucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7
cmV0dXJuIGkodGhpcy5wcmV2aW91c1ZhbHVlLHRoaXMuY3VycmVudFZhbHVlKT9zKHRoaXMua2V5
KTpzKHRoaXMua2V5KSsiWyIrcyh0aGlzLnByZXZpb3VzVmFsdWUpKyItPiIrcyh0aGlzLmN1cnJl
bnRWYWx1ZSkrIl0ifSx0fSgpLGppPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLmZhY3Rv
cmllcz10fXJldHVybiB0LmNyZWF0ZT1mdW5jdGlvbihlLG4pe2lmKG51bGwhPW4pe3ZhciByPW4u
ZmFjdG9yaWVzLnNsaWNlKCk7cmV0dXJuIGU9ZS5jb25jYXQociksbmV3IHQoZSl9cmV0dXJuIG5l
dyB0KGUpfSx0LmV4dGVuZD1mdW5jdGlvbihlKXtyZXR1cm57cHJvdmlkZTp0LHVzZUZhY3Rvcnk6
ZnVuY3Rpb24obil7aWYoIW4pdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgZXh0ZW5kIEl0ZXJhYmxl
RGlmZmVycyB3aXRob3V0IGEgcGFyZW50IGluamVjdG9yIik7cmV0dXJuIHQuY3JlYXRlKGUsbil9
LGRlcHM6W1t0LG5ldyBHcixuZXcgTHJdXX19LHQucHJvdG90eXBlLmZpbmQ9ZnVuY3Rpb24odCl7
dmFyIGU9dGhpcy5mYWN0b3JpZXMuZmluZChmdW5jdGlvbihlKXtyZXR1cm4gZS5zdXBwb3J0cyh0
KX0pO2lmKG51bGwhPWUpcmV0dXJuIGU7dGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgZmluZCBhIGRp
ZmZlciBzdXBwb3J0aW5nIG9iamVjdCAnIit0KyInIG9mIHR5cGUgJyIrRXQodCkrIiciKX0sdH0o
KSxSaT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5mYWN0b3JpZXM9dH1yZXR1cm4gdC5j
cmVhdGU9ZnVuY3Rpb24oZSxuKXtpZihuKXt2YXIgcj1uLmZhY3Rvcmllcy5zbGljZSgpO2U9ZS5j
b25jYXQocil9cmV0dXJuIG5ldyB0KGUpfSx0LmV4dGVuZD1mdW5jdGlvbihlKXtyZXR1cm57cHJv
dmlkZTp0LHVzZUZhY3Rvcnk6ZnVuY3Rpb24obil7aWYoIW4pdGhyb3cgbmV3IEVycm9yKCJDYW5u
b3QgZXh0ZW5kIEtleVZhbHVlRGlmZmVycyB3aXRob3V0IGEgcGFyZW50IGluamVjdG9yIik7cmV0
dXJuIHQuY3JlYXRlKGUsbil9LGRlcHM6W1t0LG5ldyBHcixuZXcgTHJdXX19LHQucHJvdG90eXBl
LmZpbmQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5mYWN0b3JpZXMuZmluZChmdW5jdGlvbihlKXty
ZXR1cm4gZS5zdXBwb3J0cyh0KX0pO2lmKGUpcmV0dXJuIGU7dGhyb3cgbmV3IEVycm9yKCJDYW5u
b3QgZmluZCBhIGRpZmZlciBzdXBwb3J0aW5nIG9iamVjdCAnIit0KyInIil9LHR9KCksRGk9W25l
dyBWaV0sSWk9W25ldyB4aV0sRmk9bmV3IGppKElpKSxIaT1uZXcgUmkoRGkpLExpPVt7cHJvdmlk
ZTpDbyx1c2VWYWx1ZToidW5rbm93biJ9LGVpLHtwcm92aWRlOnRpLHVzZUV4aXN0aW5nOmVpfSx7
cHJvdmlkZTpzbyx1c2VGYWN0b3J5Ok90LGRlcHM6W119LHtwcm92aWRlOmlvLHVzZUV4aXN0aW5n
OnNvfSxabyxPb10sVWk9aXQobnVsbCwiY29yZSIsTGkpLEJpPW5ldyBfcigiTG9jYWxlSWQiKSxH
aT0obmV3IF9yKCJUcmFuc2xhdGlvbnMiKSxuZXcgX3IoIlRyYW5zbGF0aW9uc0Zvcm1hdCIpLHt9
KTtHaS5FcnJvcj0wLEdpLldhcm5pbmc9MSxHaS5JZ25vcmU9MixHaVtHaS5FcnJvcl09IkVycm9y
IixHaVtHaS5XYXJuaW5nXT0iV2FybmluZyIsR2lbR2kuSWdub3JlXT0iSWdub3JlIjt2YXIgemk9
e307emkuTk9ORT0wLHppLkhUTUw9MSx6aS5TVFlMRT0yLHppLlNDUklQVD0zLHppLlVSTD00LHpp
LlJFU09VUkNFX1VSTD01LHppW3ppLk5PTkVdPSJOT05FIix6aVt6aS5IVE1MXT0iSFRNTCIsemlb
emkuU1RZTEVdPSJTVFlMRSIsemlbemkuU0NSSVBUXT0iU0NSSVBUIix6aVt6aS5VUkxdPSJVUkwi
LHppW3ppLlJFU09VUkNFX1VSTF09IlJFU09VUkNFX1VSTCI7dmFyIHFpPWZ1bmN0aW9uKCl7ZnVu
Y3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUuc2FuaXRpemU9ZnVuY3Rpb24odCxlKXt9LHR9
KCksWmk9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe310LnByb3RvdHlwZS52aWV3PWZ1bmN0aW9u
KCl7fSx0LnByb3RvdHlwZS5ub2RlSW5kZXg9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmluamVj
dG9yPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5jb21wb25lbnQ9ZnVuY3Rpb24oKXt9LHQucHJv
dG90eXBlLnByb3ZpZGVyVG9rZW5zPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5yZWZlcmVuY2Vz
PWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5jb250ZXh0PWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlw
ZS5jb21wb25lbnRSZW5kZXJFbGVtZW50PWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5yZW5kZXJO
b2RlPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5sb2dFcnJvcj1mdW5jdGlvbih0KXtmb3IodmFy
IGU9W10sbj0xO248YXJndW1lbnRzLmxlbmd0aDtuKyspZVtuLTFdPWFyZ3VtZW50c1tuXX19KCks
e3NldEN1cnJlbnROb2RlOnZvaWQgMCxjcmVhdGVSb290Vmlldzp2b2lkIDAsY3JlYXRlRW1iZWRk
ZWRWaWV3OnZvaWQgMCxjaGVja0FuZFVwZGF0ZVZpZXc6dm9pZCAwLGNoZWNrTm9DaGFuZ2VzVmll
dzp2b2lkIDAsZGVzdHJveVZpZXc6dm9pZCAwLHJlc29sdmVEZXA6dm9pZCAwLGNyZWF0ZURlYnVn
Q29udGV4dDp2b2lkIDAsaGFuZGxlRXZlbnQ6dm9pZCAwLHVwZGF0ZURpcmVjdGl2ZXM6dm9pZCAw
LHVwZGF0ZVJlbmRlcmVyOnZvaWQgMCxkaXJ0eVBhcmVudFF1ZXJpZXM6dm9pZCAwfSksV2k9ZnVu
Y3Rpb24oKXt9LEtpPW5ldyBNYXAsWGk9IiQkdW5kZWZpbmVkIixRaT0iJCRlbXB0eSIsSmk9MCwk
aT1uZXcgV2Vha01hcCxZaT0vXjooW146XSspOiguKykkLyx0cz1uZXcgT2JqZWN0LGVzPWZ1bmN0
aW9uKHQpe2Z1bmN0aW9uIGUoZSxuLHIsbyxpLHMpe3ZhciBhPXQuY2FsbCh0aGlzKXx8dGhpczty
ZXR1cm4gYS5zZWxlY3Rvcj1lLGEuY29tcG9uZW50VHlwZT1uLGEuX2lucHV0cz1vLGEuX291dHB1
dHM9aSxhLm5nQ29udGVudFNlbGVjdG9ycz1zLGEudmlld0RlZkZhY3Rvcnk9cixhfXJldHVybiBn
cihlLHQpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiaW5wdXRzIix7Z2V0OmZ1
bmN0aW9uKCl7dmFyIHQ9W107Zm9yKHZhciBlIGluIHRoaXMuX2lucHV0cyl7dmFyIG49dGhpcy5f
aW5wdXRzW2VdO3QucHVzaCh7cHJvcE5hbWU6ZSx0ZW1wbGF0ZU5hbWU6bn0pfXJldHVybiB0fSxl
bnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnBy
b3RvdHlwZSwib3V0cHV0cyIse2dldDpmdW5jdGlvbigpe3ZhciB0PVtdO2Zvcih2YXIgZSBpbiB0
aGlzLl9vdXRwdXRzKXt2YXIgbj10aGlzLl9vdXRwdXRzW2VdO3QucHVzaCh7cHJvcE5hbWU6ZSx0
ZW1wbGF0ZU5hbWU6bn0pfXJldHVybiB0fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0p
LGUucHJvdG90eXBlLmNyZWF0ZT1mdW5jdGlvbih0LGUsbixyKXtpZighcil0aHJvdyBuZXcgRXJy
b3IoIm5nTW9kdWxlIHNob3VsZCBiZSBwcm92aWRlZCIpO3ZhciBvPVl0KHRoaXMudmlld0RlZkZh
Y3RvcnkpLGk9by5ub2Rlc1swXS5lbGVtZW50LmNvbXBvbmVudFByb3ZpZGVyLmluZGV4LHM9Wmku
Y3JlYXRlUm9vdFZpZXcodCxlfHxbXSxuLG8scix0cyksYT1QdChzLGkpLmluc3RhbmNlO3JldHVy
biBzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShTdChzLDApLnJlbmRlckVsZW1lbnQsIm5nLXZlcnNp
b24iLEZyLmZ1bGwpLG5ldyBucyhzLG5ldyBvcyhzKSxhKX0sZX0oQW8pLG5zPWZ1bmN0aW9uKHQp
e2Z1bmN0aW9uIGUoZSxuLHIpe3ZhciBvPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gby5fdmll
dz1lLG8uX3ZpZXdSZWY9bixvLl9jb21wb25lbnQ9cixvLl9lbERlZj1vLl92aWV3LmRlZi5ub2Rl
c1swXSxvfXJldHVybiBncihlLHQpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwi
bG9jYXRpb24iLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHVpKFN0KHRoaXMuX3ZpZXcsdGhp
cy5fZWxEZWYuaW5kZXgpLnJlbmRlckVsZW1lbnQpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJs
ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiaW5qZWN0b3IiLHtnZXQ6
ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHNzKHRoaXMuX3ZpZXcsdGhpcy5fZWxEZWYpfSxlbnVtZXJh
YmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlw
ZSwiaW5zdGFuY2UiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY29tcG9uZW50fSxlbnVt
ZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3Rv
dHlwZSwiaG9zdFZpZXciLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdmlld1JlZn0sZW51
bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90
b3R5cGUsImNoYW5nZURldGVjdG9yUmVmIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Zp
ZXdSZWZ9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3Bl
cnR5KGUucHJvdG90eXBlLCJjb21wb25lbnRUeXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRo
aXMuX2NvbXBvbmVudC5jb25zdHJ1Y3Rvcn0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9
KSxlLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5fdmlld1JlZi5kZXN0cm95KCl9
LGUucHJvdG90eXBlLm9uRGVzdHJveT1mdW5jdGlvbih0KXt0aGlzLl92aWV3UmVmLm9uRGVzdHJv
eSh0KX0sZX0oUG8pLHJzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbil7dGhpcy5fdmlldz10
LHRoaXMuX2VsRGVmPWUsdGhpcy5fZGF0YT1uLHRoaXMuX2VtYmVkZGVkVmlld3M9W119cmV0dXJu
IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiZWxlbWVudCIse2dldDpmdW5jdGlv
bigpe3JldHVybiBuZXcgdWkodGhpcy5fZGF0YS5yZW5kZXJFbGVtZW50KX0sZW51bWVyYWJsZToh
MCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImlu
amVjdG9yIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBzcyh0aGlzLl92aWV3LHRoaXMuX2Vs
RGVmKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVy
dHkodC5wcm90b3R5cGUsInBhcmVudEluamVjdG9yIix7Z2V0OmZ1bmN0aW9uKCl7Zm9yKHZhciB0
PXRoaXMuX3ZpZXcsZT10aGlzLl9lbERlZi5wYXJlbnQ7IWUmJnQ7KWU9cXQodCksdD10LnBhcmVu
dDtyZXR1cm4gdD9uZXcgc3ModCxlKTpuZXcgc3ModGhpcy5fdmlldyxudWxsKX0sZW51bWVyYWJs
ZTohMCxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe2Zvcih2
YXIgdD10aGlzLl9lbWJlZGRlZFZpZXdzLmxlbmd0aCxlPXQtMTtlPj0wO2UtLSl7dmFyIG49Q2Uo
dGhpcy5fZGF0YSxlKTtaaS5kZXN0cm95VmlldyhuKX19LHQucHJvdG90eXBlLmdldD1mdW5jdGlv
bih0KXt2YXIgZT10aGlzLl9lbWJlZGRlZFZpZXdzW3RdO2lmKGUpe3ZhciBuPW5ldyBvcyhlKTty
ZXR1cm4gbi5hdHRhY2hUb1ZpZXdDb250YWluZXJSZWYodGhpcyksbn1yZXR1cm4gbnVsbH0sT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJsZW5ndGgiLHtnZXQ6ZnVuY3Rpb24oKXty
ZXR1cm4gdGhpcy5fZW1iZWRkZWRWaWV3cy5sZW5ndGh9LGVudW1lcmFibGU6ITAsY29uZmlndXJh
YmxlOiEwfSksdC5wcm90b3R5cGUuY3JlYXRlRW1iZWRkZWRWaWV3PWZ1bmN0aW9uKHQsZSxuKXt2
YXIgcj10LmNyZWF0ZUVtYmVkZGVkVmlldyhlfHx7fSk7cmV0dXJuIHRoaXMuaW5zZXJ0KHIsbiks
cn0sdC5wcm90b3R5cGUuY3JlYXRlQ29tcG9uZW50PWZ1bmN0aW9uKHQsZSxuLHIsbyl7dmFyIGk9
bnx8dGhpcy5wYXJlbnRJbmplY3RvcjtvfHx0IGluc3RhbmNlb2YgUm98fChvPWkuZ2V0KERvKSk7
dmFyIHM9dC5jcmVhdGUoaSxyLHZvaWQgMCxvKTtyZXR1cm4gdGhpcy5pbnNlcnQocy5ob3N0Vmll
dyxlKSxzfSx0LnByb3RvdHlwZS5pbnNlcnQ9ZnVuY3Rpb24odCxlKXt2YXIgbj10LHI9bi5fdmll
dztyZXR1cm4gd2UodGhpcy5fdmlldyx0aGlzLl9kYXRhLGUsciksbi5hdHRhY2hUb1ZpZXdDb250
YWluZXJSZWYodGhpcyksdH0sdC5wcm90b3R5cGUubW92ZT1mdW5jdGlvbih0LGUpe3ZhciBuPXRo
aXMuX2VtYmVkZGVkVmlld3MuaW5kZXhPZih0Ll92aWV3KTtyZXR1cm4gRWUodGhpcy5fZGF0YSxu
LGUpLHR9LHQucHJvdG90eXBlLmluZGV4T2Y9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2VtYmVk
ZGVkVmlld3MuaW5kZXhPZih0Ll92aWV3KX0sdC5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKHQp
e3ZhciBlPUNlKHRoaXMuX2RhdGEsdCk7ZSYmWmkuZGVzdHJveVZpZXcoZSl9LHQucHJvdG90eXBl
LmRldGFjaD1mdW5jdGlvbih0KXt2YXIgZT1DZSh0aGlzLl9kYXRhLHQpO3JldHVybiBlP25ldyBv
cyhlKTpudWxsfSx0fSgpLG9zPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLl92aWV3PXQs
dGhpcy5fdmlld0NvbnRhaW5lclJlZj1udWxsLHRoaXMuX2FwcFJlZj1udWxsfXJldHVybiBPYmpl
Y3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInJvb3ROb2RlcyIse2dldDpmdW5jdGlvbigp
e3JldHVybiB0ZSh0aGlzLl92aWV3KX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxP
YmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImNvbnRleHQiLHtnZXQ6ZnVuY3Rpb24o
KXtyZXR1cm4gdGhpcy5fdmlldy5jb250ZXh0fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZToh
MH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiZGVzdHJveWVkIix7Z2V0OmZ1
bmN0aW9uKCl7cmV0dXJuIDAhPSg4JnRoaXMuX3ZpZXcuc3RhdGUpfSxlbnVtZXJhYmxlOiEwLGNv
bmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLm1hcmtGb3JDaGVjaz1mdW5jdGlvbigpe0J0KHRo
aXMuX3ZpZXcpfSx0LnByb3RvdHlwZS5kZXRhY2g9ZnVuY3Rpb24oKXt0aGlzLl92aWV3LnN0YXRl
Jj0tM30sdC5wcm90b3R5cGUuZGV0ZWN0Q2hhbmdlcz1mdW5jdGlvbigpe1ppLmNoZWNrQW5kVXBk
YXRlVmlldyh0aGlzLl92aWV3KX0sdC5wcm90b3R5cGUuY2hlY2tOb0NoYW5nZXM9ZnVuY3Rpb24o
KXtaaS5jaGVja05vQ2hhbmdlc1ZpZXcodGhpcy5fdmlldyl9LHQucHJvdG90eXBlLnJlYXR0YWNo
PWZ1bmN0aW9uKCl7dGhpcy5fdmlldy5zdGF0ZXw9Mn0sdC5wcm90b3R5cGUub25EZXN0cm95PWZ1
bmN0aW9uKHQpe3RoaXMuX3ZpZXcuZGlzcG9zYWJsZXN8fCh0aGlzLl92aWV3LmRpc3Bvc2FibGVz
PVtdKSx0aGlzLl92aWV3LmRpc3Bvc2FibGVzLnB1c2godCl9LHQucHJvdG90eXBlLmRlc3Ryb3k9
ZnVuY3Rpb24oKXt0aGlzLl9hcHBSZWY/dGhpcy5fYXBwUmVmLmRldGFjaFZpZXcodGhpcyk6dGhp
cy5fdmlld0NvbnRhaW5lclJlZiYmdGhpcy5fdmlld0NvbnRhaW5lclJlZi5kZXRhY2godGhpcy5f
dmlld0NvbnRhaW5lclJlZi5pbmRleE9mKHRoaXMpKSxaaS5kZXN0cm95Vmlldyh0aGlzLl92aWV3
KX0sdC5wcm90b3R5cGUuZGV0YWNoRnJvbUFwcFJlZj1mdW5jdGlvbigpe3RoaXMuX2FwcFJlZj1u
dWxsLHhlKHRoaXMuX3ZpZXcpLFppLmRpcnR5UGFyZW50UXVlcmllcyh0aGlzLl92aWV3KX0sdC5w
cm90b3R5cGUuYXR0YWNoVG9BcHBSZWY9ZnVuY3Rpb24odCl7aWYodGhpcy5fdmlld0NvbnRhaW5l
clJlZil0aHJvdyBuZXcgRXJyb3IoIlRoaXMgdmlldyBpcyBhbHJlYWR5IGF0dGFjaGVkIHRvIGEg
Vmlld0NvbnRhaW5lciEiKTt0aGlzLl9hcHBSZWY9dH0sdC5wcm90b3R5cGUuYXR0YWNoVG9WaWV3
Q29udGFpbmVyUmVmPWZ1bmN0aW9uKHQpe2lmKHRoaXMuX2FwcFJlZil0aHJvdyBuZXcgRXJyb3Io
IlRoaXMgdmlldyBpcyBhbHJlYWR5IGF0dGFjaGVkIGRpcmVjdGx5IHRvIHRoZSBBcHBsaWNhdGlv
blJlZiEiKTt0aGlzLl92aWV3Q29udGFpbmVyUmVmPXR9LHR9KCksaXM9ZnVuY3Rpb24odCl7ZnVu
Y3Rpb24gZShlLG4pe3ZhciByPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gci5fcGFyZW50Vmll
dz1lLHIuX2RlZj1uLHJ9cmV0dXJuIGdyKGUsdCksZS5wcm90b3R5cGUuY3JlYXRlRW1iZWRkZWRW
aWV3PWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgb3MoWmkuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMu
X3BhcmVudFZpZXcsdGhpcy5fZGVmLHQpKX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90
eXBlLCJlbGVtZW50UmVmIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyB1aShTdCh0aGlzLl9w
YXJlbnRWaWV3LHRoaXMuX2RlZi5pbmRleCkucmVuZGVyRWxlbWVudCl9LGVudW1lcmFibGU6ITAs
Y29uZmlndXJhYmxlOiEwfSksZX0oeWkpLHNzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3Ro
aXMudmlldz10LHRoaXMuZWxEZWY9ZX1yZXR1cm4gdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQs
ZSl7dm9pZCAwPT09ZSYmKGU9S3IuVEhST1dfSUZfTk9UX0ZPVU5EKTt2YXIgbj0hIXRoaXMuZWxE
ZWYmJjAhPSgxNjc3NzIxNiZ0aGlzLmVsRGVmLmZsYWdzKTtyZXR1cm4gWmkucmVzb2x2ZURlcCh0
aGlzLnZpZXcsdGhpcy5lbERlZixuLHtmbGFnczowLHRva2VuOnQsdG9rZW5LZXk6RHQodCl9LGUp
fSx0fSgpLGFzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLmRlbGVnYXRlPXR9cmV0dXJu
IHQucHJvdG90eXBlLnNlbGVjdFJvb3RFbGVtZW50PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmRl
bGVnYXRlLnNlbGVjdFJvb3RFbGVtZW50KHQpfSx0LnByb3RvdHlwZS5jcmVhdGVFbGVtZW50PWZ1
bmN0aW9uKHQsZSl7dmFyIG49c2UoZSkscj1uWzBdLG89blsxXSxpPXRoaXMuZGVsZWdhdGUuY3Jl
YXRlRWxlbWVudChvLHIpO3JldHVybiB0JiZ0aGlzLmRlbGVnYXRlLmFwcGVuZENoaWxkKHQsaSks
aX0sdC5wcm90b3R5cGUuY3JlYXRlVmlld1Jvb3Q9ZnVuY3Rpb24odCl7cmV0dXJuIHR9LHQucHJv
dG90eXBlLmNyZWF0ZVRlbXBsYXRlQW5jaG9yPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZGVsZWdh
dGUuY3JlYXRlQ29tbWVudCgiIik7cmV0dXJuIHQmJnRoaXMuZGVsZWdhdGUuYXBwZW5kQ2hpbGQo
dCxlKSxlfSx0LnByb3RvdHlwZS5jcmVhdGVUZXh0PWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5k
ZWxlZ2F0ZS5jcmVhdGVUZXh0KGUpO3JldHVybiB0JiZ0aGlzLmRlbGVnYXRlLmFwcGVuZENoaWxk
KHQsbiksbn0sdC5wcm90b3R5cGUucHJvamVjdE5vZGVzPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBu
PTA7bjxlLmxlbmd0aDtuKyspdGhpcy5kZWxlZ2F0ZS5hcHBlbmRDaGlsZCh0LGVbbl0pfSx0LnBy
b3RvdHlwZS5hdHRhY2hWaWV3QWZ0ZXI9ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dGhpcy5kZWxl
Z2F0ZS5wYXJlbnROb2RlKHQpLHI9dGhpcy5kZWxlZ2F0ZS5uZXh0U2libGluZyh0KSxvPTA7bzxl
Lmxlbmd0aDtvKyspdGhpcy5kZWxlZ2F0ZS5pbnNlcnRCZWZvcmUobixlW29dLHIpfSx0LnByb3Rv
dHlwZS5kZXRhY2hWaWV3PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wO2U8dC5sZW5ndGg7ZSsrKXt2
YXIgbj10W2VdLHI9dGhpcy5kZWxlZ2F0ZS5wYXJlbnROb2RlKG4pO3RoaXMuZGVsZWdhdGUucmVt
b3ZlQ2hpbGQocixuKX19LHQucHJvdG90eXBlLmRlc3Ryb3lWaWV3PWZ1bmN0aW9uKHQsZSl7Zm9y
KHZhciBuPTA7bjxlLmxlbmd0aDtuKyspdGhpcy5kZWxlZ2F0ZS5kZXN0cm95Tm9kZShlW25dKX0s
dC5wcm90b3R5cGUubGlzdGVuPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZS5s
aXN0ZW4odCxlLG4pfSx0LnByb3RvdHlwZS5saXN0ZW5HbG9iYWw9ZnVuY3Rpb24odCxlLG4pe3Jl
dHVybiB0aGlzLmRlbGVnYXRlLmxpc3Rlbih0LGUsbil9LHQucHJvdG90eXBlLnNldEVsZW1lbnRQ
cm9wZXJ0eT1mdW5jdGlvbih0LGUsbil7dGhpcy5kZWxlZ2F0ZS5zZXRQcm9wZXJ0eSh0LGUsbil9
LHQucHJvdG90eXBlLnNldEVsZW1lbnRBdHRyaWJ1dGU9ZnVuY3Rpb24odCxlLG4pe3ZhciByPXNl
KGUpLG89clswXSxpPXJbMV07bnVsbCE9bj90aGlzLmRlbGVnYXRlLnNldEF0dHJpYnV0ZSh0LGks
bixvKTp0aGlzLmRlbGVnYXRlLnJlbW92ZUF0dHJpYnV0ZSh0LGksbyl9LHQucHJvdG90eXBlLnNl
dEJpbmRpbmdEZWJ1Z0luZm89ZnVuY3Rpb24odCxlLG4pe30sdC5wcm90b3R5cGUuc2V0RWxlbWVu
dENsYXNzPWZ1bmN0aW9uKHQsZSxuKXtuP3RoaXMuZGVsZWdhdGUuYWRkQ2xhc3ModCxlKTp0aGlz
LmRlbGVnYXRlLnJlbW92ZUNsYXNzKHQsZSl9LHQucHJvdG90eXBlLnNldEVsZW1lbnRTdHlsZT1m
dW5jdGlvbih0LGUsbil7bnVsbCE9bj90aGlzLmRlbGVnYXRlLnNldFN0eWxlKHQsZSxuKTp0aGlz
LmRlbGVnYXRlLnJlbW92ZVN0eWxlKHQsZSl9LHQucHJvdG90eXBlLmludm9rZUVsZW1lbnRNZXRo
b2Q9ZnVuY3Rpb24odCxlLG4pe3RbZV0uYXBwbHkodCxuKX0sdC5wcm90b3R5cGUuc2V0VGV4dD1m
dW5jdGlvbih0LGUpe3RoaXMuZGVsZWdhdGUuc2V0VmFsdWUodCxlKX0sdC5wcm90b3R5cGUuYW5p
bWF0ZT1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiUmVuZGVyZXIuYW5pbWF0ZSBpcyBubyBs
b25nZXIgc3VwcG9ydGVkISIpfSx0fSgpLHVzPUR0KG9pKSxjcz1EdChhaSksbHM9RHQodWkpLHBz
PUR0KG1pKSxmcz1EdCh5aSksaHM9RHQoZ2kpLGRzPUR0KEtyKSx5cz1uZXcgT2JqZWN0LG1zPXt9
LGdzPXt9O2dzLkNyZWF0ZVZpZXdOb2Rlcz0wLGdzLkNoZWNrTm9DaGFuZ2VzPTEsZ3MuQ2hlY2tB
bmRVcGRhdGU9Mixncy5EZXN0cm95PTMsZ3NbZ3MuQ3JlYXRlVmlld05vZGVzXT0iQ3JlYXRlVmll
d05vZGVzIixnc1tncy5DaGVja05vQ2hhbmdlc109IkNoZWNrTm9DaGFuZ2VzIixnc1tncy5DaGVj
a0FuZFVwZGF0ZV09IkNoZWNrQW5kVXBkYXRlIixnc1tncy5EZXN0cm95XT0iRGVzdHJveSI7Lyoq
CisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUg
YXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFyIHZzPSExLF9zPXt9O19zLmNy
ZWF0ZT0wLF9zLmRldGVjdENoYW5nZXM9MSxfcy5jaGVja05vQ2hhbmdlcz0yLF9zLmRlc3Ryb3k9
Myxfcy5oYW5kbGVFdmVudD00LF9zW19zLmNyZWF0ZV09ImNyZWF0ZSIsX3NbX3MuZGV0ZWN0Q2hh
bmdlc109ImRldGVjdENoYW5nZXMiLF9zW19zLmNoZWNrTm9DaGFuZ2VzXT0iY2hlY2tOb0NoYW5n
ZXMiLF9zW19zLmRlc3Ryb3ldPSJkZXN0cm95Iixfc1tfcy5oYW5kbGVFdmVudF09ImhhbmRsZUV2
ZW50Ijt2YXIgYnMsd3MsQ3MsRXM9LyhbQS1aXSkvZyxPcz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQo
dCxlKXt0aGlzLnZpZXc9dCx0aGlzLm5vZGVJbmRleD1lLG51bGw9PWUmJih0aGlzLm5vZGVJbmRl
eD1lPTApLHRoaXMubm9kZURlZj10LmRlZi5ub2Rlc1tlXTtmb3IodmFyIG49dGhpcy5ub2RlRGVm
LHI9dDtuJiYwPT0oMSZuLmZsYWdzKTspbj1uLnBhcmVudDtpZighbilmb3IoOyFuJiZyOyluPXF0
KHIpLHI9ci5wYXJlbnQ7dGhpcy5lbERlZj1uLHRoaXMuZWxWaWV3PXJ9cmV0dXJuIE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiZWxPckNvbXBWaWV3Iix7Z2V0OmZ1bmN0aW9uKCl7
cmV0dXJuIFN0KHRoaXMuZWxWaWV3LHRoaXMuZWxEZWYuaW5kZXgpLmNvbXBvbmVudFZpZXd8fHRo
aXMudmlld30sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJv
cGVydHkodC5wcm90b3R5cGUsImluamVjdG9yIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIE1lKHRo
aXMuZWxWaWV3LHRoaXMuZWxEZWYpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9i
amVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiY29tcG9uZW50Iix7Z2V0OmZ1bmN0aW9u
KCl7cmV0dXJuIHRoaXMuZWxPckNvbXBWaWV3LmNvbXBvbmVudH0sZW51bWVyYWJsZTohMCxjb25m
aWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImNvbnRleHQi
LHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbE9yQ29tcFZpZXcuY29udGV4dH0sZW51bWVy
YWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5
cGUsInByb3ZpZGVyVG9rZW5zIix7Z2V0OmZ1bmN0aW9uKCl7dmFyIHQ9W107aWYodGhpcy5lbERl
Zilmb3IodmFyIGU9dGhpcy5lbERlZi5pbmRleCsxO2U8PXRoaXMuZWxEZWYuaW5kZXgrdGhpcy5l
bERlZi5jaGlsZENvdW50O2UrKyl7dmFyIG49dGhpcy5lbFZpZXcuZGVmLm5vZGVzW2VdOzEwMTEy
Jm4uZmxhZ3MmJnQucHVzaChuLnByb3ZpZGVyLnRva2VuKSxlKz1uLmNoaWxkQ291bnR9cmV0dXJu
IHR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5
KHQucHJvdG90eXBlLCJyZWZlcmVuY2VzIix7Z2V0OmZ1bmN0aW9uKCl7dmFyIHQ9e307aWYodGhp
cy5lbERlZil7c3IodGhpcy5lbFZpZXcsdGhpcy5lbERlZix0KTtmb3IodmFyIGU9dGhpcy5lbERl
Zi5pbmRleCsxO2U8PXRoaXMuZWxEZWYuaW5kZXgrdGhpcy5lbERlZi5jaGlsZENvdW50O2UrKyl7
dmFyIG49dGhpcy5lbFZpZXcuZGVmLm5vZGVzW2VdOzEwMTEyJm4uZmxhZ3MmJnNyKHRoaXMuZWxW
aWV3LG4sdCksZSs9bi5jaGlsZENvdW50fX1yZXR1cm4gdH0sZW51bWVyYWJsZTohMCxjb25maWd1
cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImNvbXBvbmVudFJl
bmRlckVsZW1lbnQiLHtnZXQ6ZnVuY3Rpb24oKXt2YXIgdD1pcih0aGlzLmVsT3JDb21wVmlldyk7
cmV0dXJuIHQ/dC5yZW5kZXJFbGVtZW50OnZvaWQgMH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFi
bGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInJlbmRlck5vZGUiLHtn
ZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gMiZ0aGlzLm5vZGVEZWYuZmxhZ3M/WnQodGhpcy52aWV3LHRo
aXMubm9kZURlZik6WnQodGhpcy5lbFZpZXcsdGhpcy5lbERlZil9LGVudW1lcmFibGU6ITAsY29u
ZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUubG9nRXJyb3I9ZnVuY3Rpb24odCl7Zm9yKHZhciBl
PVtdLG49MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKWVbbi0xXT1hcmd1bWVudHNbbl07dmFyIHIs
bzsyJnRoaXMubm9kZURlZi5mbGFncz8ocj10aGlzLnZpZXcuZGVmLG89dGhpcy5ub2RlRGVmLmlu
ZGV4KToocj10aGlzLmVsVmlldy5kZWYsbz10aGlzLmVsRGVmLmluZGV4KTt2YXIgaT1vcihyLG8p
LHM9LTEsYT1mdW5jdGlvbigpe3JldHVybiBzKysscz09PWk/KG49dC5lcnJvcikuYmluZC5hcHBs
eShuLFt0XS5jb25jYXQoZSkpOldpO3ZhciBufTtyLmZhY3RvcnkoYSksczxpJiYodC5lcnJvcigi
SWxsZWdhbCBzdGF0ZTogdGhlIFZpZXdEZWZpbml0aW9uRmFjdG9yeSBkaWQgbm90IGNhbGwgdGhl
IGxvZ2dlciEiKSx0LmVycm9yLmFwcGx5KHQsZSkpfSx0fSgpLHhzPWZ1bmN0aW9uKCl7ZnVuY3Rp
b24gdCh0KXt0aGlzLmRlbGVnYXRlPXR9cmV0dXJuIHQucHJvdG90eXBlLmNyZWF0ZVJlbmRlcmVy
PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5ldyBTcyh0aGlzLmRlbGVnYXRlLmNyZWF0ZVJlbmRlcmVy
KHQsZSkpfSx0fSgpLFNzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLmRlbGVnYXRlPXR9
cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiZGF0YSIse2dldDpmdW5j
dGlvbigpe3JldHVybiB0aGlzLmRlbGVnYXRlLmRhdGF9LGVudW1lcmFibGU6ITAsY29uZmlndXJh
YmxlOiEwfSksdC5wcm90b3R5cGUuZGVzdHJveU5vZGU9ZnVuY3Rpb24odCl7bXQoZHQodCkpLHRo
aXMuZGVsZWdhdGUuZGVzdHJveU5vZGUmJnRoaXMuZGVsZWdhdGUuZGVzdHJveU5vZGUodCl9LHQu
cHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLmRlbGVnYXRlLmRlc3Ryb3koKX0sdC5w
cm90b3R5cGUuY3JlYXRlRWxlbWVudD1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuZGVsZWdhdGUu
Y3JlYXRlRWxlbWVudCh0LGUpLHI9dXIoKTtpZihyKXt2YXIgbz1uZXcgd2kobixudWxsLHIpO28u
bmFtZT10LHl0KG8pfXJldHVybiBufSx0LnByb3RvdHlwZS5jcmVhdGVDb21tZW50PWZ1bmN0aW9u
KHQpe3ZhciBlPXRoaXMuZGVsZWdhdGUuY3JlYXRlQ29tbWVudCh0KSxuPXVyKCk7cmV0dXJuIG4m
Jnl0KG5ldyBiaShlLG51bGwsbikpLGV9LHQucHJvdG90eXBlLmNyZWF0ZVRleHQ9ZnVuY3Rpb24o
dCl7dmFyIGU9dGhpcy5kZWxlZ2F0ZS5jcmVhdGVUZXh0KHQpLG49dXIoKTtyZXR1cm4gbiYmeXQo
bmV3IGJpKGUsbnVsbCxuKSksZX0sdC5wcm90b3R5cGUuYXBwZW5kQ2hpbGQ9ZnVuY3Rpb24odCxl
KXt2YXIgbj1kdCh0KSxyPWR0KGUpO24mJnImJm4gaW5zdGFuY2VvZiB3aSYmbi5hZGRDaGlsZChy
KSx0aGlzLmRlbGVnYXRlLmFwcGVuZENoaWxkKHQsZSl9LHQucHJvdG90eXBlLmluc2VydEJlZm9y
ZT1mdW5jdGlvbih0LGUsbil7dmFyIHI9ZHQodCksbz1kdChlKSxpPWR0KG4pO3ImJm8mJnIgaW5z
dGFuY2VvZiB3aSYmci5pbnNlcnRCZWZvcmUoaSxvKSx0aGlzLmRlbGVnYXRlLmluc2VydEJlZm9y
ZSh0LGUsbil9LHQucHJvdG90eXBlLnJlbW92ZUNoaWxkPWZ1bmN0aW9uKHQsZSl7dmFyIG49ZHQo
dCkscj1kdChlKTtuJiZyJiZuIGluc3RhbmNlb2Ygd2kmJm4ucmVtb3ZlQ2hpbGQociksdGhpcy5k
ZWxlZ2F0ZS5yZW1vdmVDaGlsZCh0LGUpfSx0LnByb3RvdHlwZS5zZWxlY3RSb290RWxlbWVudD1m
dW5jdGlvbih0KXt2YXIgZT10aGlzLmRlbGVnYXRlLnNlbGVjdFJvb3RFbGVtZW50KHQpLG49dXIo
KTtyZXR1cm4gbiYmeXQobmV3IHdpKGUsbnVsbCxuKSksZX0sdC5wcm90b3R5cGUuc2V0QXR0cmli
dXRlPWZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBvPWR0KHQpO2lmKG8mJm8gaW5zdGFuY2VvZiB3aSl7
dmFyIGk9cj9yKyI6IitlOmU7by5hdHRyaWJ1dGVzW2ldPW59dGhpcy5kZWxlZ2F0ZS5zZXRBdHRy
aWJ1dGUodCxlLG4scil9LHQucHJvdG90eXBlLnJlbW92ZUF0dHJpYnV0ZT1mdW5jdGlvbih0LGUs
bil7dmFyIHI9ZHQodCk7aWYociYmciBpbnN0YW5jZW9mIHdpKXt2YXIgbz1uP24rIjoiK2U6ZTty
LmF0dHJpYnV0ZXNbb109bnVsbH10aGlzLmRlbGVnYXRlLnJlbW92ZUF0dHJpYnV0ZSh0LGUsbil9
LHQucHJvdG90eXBlLmFkZENsYXNzPWZ1bmN0aW9uKHQsZSl7dmFyIG49ZHQodCk7biYmbiBpbnN0
YW5jZW9mIHdpJiYobi5jbGFzc2VzW2VdPSEwKSx0aGlzLmRlbGVnYXRlLmFkZENsYXNzKHQsZSl9
LHQucHJvdG90eXBlLnJlbW92ZUNsYXNzPWZ1bmN0aW9uKHQsZSl7dmFyIG49ZHQodCk7biYmbiBp
bnN0YW5jZW9mIHdpJiYobi5jbGFzc2VzW2VdPSExKSx0aGlzLmRlbGVnYXRlLnJlbW92ZUNsYXNz
KHQsZSl9LHQucHJvdG90eXBlLnNldFN0eWxlPWZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBvPWR0KHQp
O28mJm8gaW5zdGFuY2VvZiB3aSYmKG8uc3R5bGVzW2VdPW4pLHRoaXMuZGVsZWdhdGUuc2V0U3R5
bGUodCxlLG4scil9LHQucHJvdG90eXBlLnJlbW92ZVN0eWxlPWZ1bmN0aW9uKHQsZSxuKXt2YXIg
cj1kdCh0KTtyJiZyIGluc3RhbmNlb2Ygd2kmJihyLnN0eWxlc1tlXT1udWxsKSx0aGlzLmRlbGVn
YXRlLnJlbW92ZVN0eWxlKHQsZSxuKX0sdC5wcm90b3R5cGUuc2V0UHJvcGVydHk9ZnVuY3Rpb24o
dCxlLG4pe3ZhciByPWR0KHQpO3ImJnIgaW5zdGFuY2VvZiB3aSYmKHIucHJvcGVydGllc1tlXT1u
KSx0aGlzLmRlbGVnYXRlLnNldFByb3BlcnR5KHQsZSxuKX0sdC5wcm90b3R5cGUubGlzdGVuPWZ1
bmN0aW9uKHQsZSxuKXtpZigic3RyaW5nIiE9dHlwZW9mIHQpe3ZhciByPWR0KHQpO3ImJnIubGlz
dGVuZXJzLnB1c2gobmV3IF9pKGUsbikpfXJldHVybiB0aGlzLmRlbGVnYXRlLmxpc3Rlbih0LGUs
bil9LHQucHJvdG90eXBlLnBhcmVudE5vZGU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZGVsZWdh
dGUucGFyZW50Tm9kZSh0KX0sdC5wcm90b3R5cGUubmV4dFNpYmxpbmc9ZnVuY3Rpb24odCl7cmV0
dXJuIHRoaXMuZGVsZWdhdGUubmV4dFNpYmxpbmcodCl9LHQucHJvdG90eXBlLnNldFZhbHVlPWZ1
bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuZGVsZWdhdGUuc2V0VmFsdWUodCxlKX0sdH0oKSxQcz1m
dW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7fXJldHVybiB0fSgpO1BzLmRlY29yYXRvcnM9W3t0eXBl
OlJyLGFyZ3M6W3twcm92aWRlcnM6W3JpLHtwcm92aWRlOm5pLHVzZUV4aXN0aW5nOnJpfSx2byx4
byxibyx7cHJvdmlkZTpqaSx1c2VGYWN0b3J5OmNyfSx7cHJvdmlkZTpSaSx1c2VGYWN0b3J5Omxy
fSx7cHJvdmlkZTpCaSx1c2VGYWN0b3J5OnByLGRlcHM6W1tuZXcgSHIoQmkpLG5ldyBMcixuZXcg
R3JdXX0se3Byb3ZpZGU6Z28sdXNlVmFsdWU6ZnIsbXVsdGk6ITB9XX1dfV0sUHMuY3RvclBhcmFt
ZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6bml9XX07LyoqCisgKiBAbGljZW5zZQorICog
Q29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFy
LmlvL2xpY2Vuc2UKKyAqLwordmFyIEFzPXt9O0FzLk9uSW5pdD0wLEFzLk9uRGVzdHJveT0xLEFz
LkRvQ2hlY2s9MixBcy5PbkNoYW5nZXM9MyxBcy5BZnRlckNvbnRlbnRJbml0PTQsQXMuQWZ0ZXJD
b250ZW50Q2hlY2tlZD01LEFzLkFmdGVyVmlld0luaXQ9NixBcy5BZnRlclZpZXdDaGVja2VkPTcs
QXNbQXMuT25Jbml0XT0iT25Jbml0IixBc1tBcy5PbkRlc3Ryb3ldPSJPbkRlc3Ryb3kiLEFzW0Fz
LkRvQ2hlY2tdPSJEb0NoZWNrIixBc1tBcy5PbkNoYW5nZXNdPSJPbkNoYW5nZXMiLEFzW0FzLkFm
dGVyQ29udGVudEluaXRdPSJBZnRlckNvbnRlbnRJbml0IixBc1tBcy5BZnRlckNvbnRlbnRDaGVj
a2VkXT0iQWZ0ZXJDb250ZW50Q2hlY2tlZCIsQXNbQXMuQWZ0ZXJWaWV3SW5pdF09IkFmdGVyVmll
d0luaXQiLEFzW0FzLkFmdGVyVmlld0NoZWNrZWRdPSJBZnRlclZpZXdDaGVja2VkIjtBcy5Pbklu
aXQsQXMuT25EZXN0cm95LEFzLkRvQ2hlY2ssQXMuT25DaGFuZ2VzLEFzLkFmdGVyQ29udGVudElu
aXQsQXMuQWZ0ZXJDb250ZW50Q2hlY2tlZCxBcy5BZnRlclZpZXdJbml0LEFzLkFmdGVyVmlld0No
ZWNrZWR9KS5jYWxsKGUsbigiRHVSMiIpKX0sIjdyQjkiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0
cmljdCI7dmFyIHI9bigidDJxdiIpO2UuZm9ya0pvaW49ci5Gb3JrSm9pbk9ic2VydmFibGUuY3Jl
YXRlfSxCMDBVOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcih0KXtyZXR1
cm4gdC5yZWR1Y2UoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5jb25jYXQoZSBpbnN0YW5jZW9mIGMu
VW5zdWJzY3JpcHRpb25FcnJvcj9lLmVycm9yczplKX0sW10pfXZhciBvPW4oIlhham8iKSxpPW4o
IklDcGciKSxzPW4oIlNLSDYiKSxhPW4oIiszZUwiKSx1PW4oIldoVmMiKSxjPW4oIkdJamsiKSxs
PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLmNsb3NlZD0hMSx0aGlzLl9wYXJlbnQ9bnVs
bCx0aGlzLl9wYXJlbnRzPW51bGwsdGhpcy5fc3Vic2NyaXB0aW9ucz1udWxsLHQmJih0aGlzLl91
bnN1YnNjcmliZT10KX1yZXR1cm4gdC5wcm90b3R5cGUudW5zdWJzY3JpYmU9ZnVuY3Rpb24oKXt2
YXIgdCxlPSExO2lmKCF0aGlzLmNsb3NlZCl7dmFyIG49dGhpcyxsPW4uX3BhcmVudCxwPW4uX3Bh
cmVudHMsZj1uLl91bnN1YnNjcmliZSxoPW4uX3N1YnNjcmlwdGlvbnM7dGhpcy5jbG9zZWQ9ITAs
dGhpcy5fcGFyZW50PW51bGwsdGhpcy5fcGFyZW50cz1udWxsLHRoaXMuX3N1YnNjcmlwdGlvbnM9
bnVsbDtmb3IodmFyIGQ9LTEseT1wP3AubGVuZ3RoOjA7bDspbC5yZW1vdmUodGhpcyksbD0rK2Q8
eSYmcFtkXXx8bnVsbDtpZihzLmlzRnVuY3Rpb24oZikpe3ZhciBtPWEudHJ5Q2F0Y2goZikuY2Fs
bCh0aGlzKTttPT09dS5lcnJvck9iamVjdCYmKGU9ITAsdD10fHwodS5lcnJvck9iamVjdC5lIGlu
c3RhbmNlb2YgYy5VbnN1YnNjcmlwdGlvbkVycm9yP3IodS5lcnJvck9iamVjdC5lLmVycm9ycyk6
W3UuZXJyb3JPYmplY3QuZV0pKX1pZihvLmlzQXJyYXkoaCkpZm9yKGQ9LTEseT1oLmxlbmd0aDsr
K2Q8eTspe3ZhciBnPWhbZF07aWYoaS5pc09iamVjdChnKSl7dmFyIG09YS50cnlDYXRjaChnLnVu
c3Vic2NyaWJlKS5jYWxsKGcpO2lmKG09PT11LmVycm9yT2JqZWN0KXtlPSEwLHQ9dHx8W107dmFy
IHY9dS5lcnJvck9iamVjdC5lO3YgaW5zdGFuY2VvZiBjLlVuc3Vic2NyaXB0aW9uRXJyb3I/dD10
LmNvbmNhdChyKHYuZXJyb3JzKSk6dC5wdXNoKHYpfX19aWYoZSl0aHJvdyBuZXcgYy5VbnN1YnNj
cmlwdGlvbkVycm9yKHQpfX0sdC5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGUpe2lmKCFlfHxlPT09
dC5FTVBUWSlyZXR1cm4gdC5FTVBUWTtpZihlPT09dGhpcylyZXR1cm4gdGhpczt2YXIgbj1lO3N3
aXRjaCh0eXBlb2YgZSl7Y2FzZSJmdW5jdGlvbiI6bj1uZXcgdChlKTtjYXNlIm9iamVjdCI6aWYo
bi5jbG9zZWR8fCJmdW5jdGlvbiIhPXR5cGVvZiBuLnVuc3Vic2NyaWJlKXJldHVybiBuO2lmKHRo
aXMuY2xvc2VkKXJldHVybiBuLnVuc3Vic2NyaWJlKCksbjtpZigiZnVuY3Rpb24iIT10eXBlb2Yg
bi5fYWRkUGFyZW50KXt2YXIgcj1uO249bmV3IHQsbi5fc3Vic2NyaXB0aW9ucz1bcl19YnJlYWs7
ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoInVucmVjb2duaXplZCB0ZWFyZG93biAiK2UrIiBhZGRl
ZCB0byBTdWJzY3JpcHRpb24uIil9cmV0dXJuKHRoaXMuX3N1YnNjcmlwdGlvbnN8fCh0aGlzLl9z
dWJzY3JpcHRpb25zPVtdKSkucHVzaChuKSxuLl9hZGRQYXJlbnQodGhpcyksbn0sdC5wcm90b3R5
cGUucmVtb3ZlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3N1YnNjcmlwdGlvbnM7aWYoZSl7dmFy
IG49ZS5pbmRleE9mKHQpOy0xIT09biYmZS5zcGxpY2UobiwxKX19LHQucHJvdG90eXBlLl9hZGRQ
YXJlbnQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPWUuX3BhcmVudCxyPWUuX3BhcmVudHM7biYm
biE9PXQ/cj8tMT09PXIuaW5kZXhPZih0KSYmci5wdXNoKHQpOnRoaXMuX3BhcmVudHM9W3RdOnRo
aXMuX3BhcmVudD10fSx0LkVNUFRZPWZ1bmN0aW9uKHQpe3JldHVybiB0LmNsb3NlZD0hMCx0fShu
ZXcgdCksdH0oKTtlLlN1YnNjcmlwdGlvbj1sfSxDVVJwOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gcih0LGUsbixyKXt2YXIgZj1uZXcgbC5Jbm5lclN1YnNjcmliZXIodCxu
LHIpO2lmKGYuY2xvc2VkKXJldHVybiBudWxsO2lmKGUgaW5zdGFuY2VvZiB1Lk9ic2VydmFibGUp
cmV0dXJuIGUuX2lzU2NhbGFyPyhmLm5leHQoZS52YWx1ZSksZi5jb21wbGV0ZSgpLG51bGwpOmUu
c3Vic2NyaWJlKGYpO2lmKGkuaXNBcnJheUxpa2UoZSkpe2Zvcih2YXIgaD0wLGQ9ZS5sZW5ndGg7
aDxkJiYhZi5jbG9zZWQ7aCsrKWYubmV4dChlW2hdKTtmLmNsb3NlZHx8Zi5jb21wbGV0ZSgpfWVs
c2V7aWYocy5pc1Byb21pc2UoZSkpcmV0dXJuIGUudGhlbihmdW5jdGlvbih0KXtmLmNsb3NlZHx8
KGYubmV4dCh0KSxmLmNvbXBsZXRlKCkpfSxmdW5jdGlvbih0KXtyZXR1cm4gZi5lcnJvcih0KX0p
LnRoZW4obnVsbCxmdW5jdGlvbih0KXtvLnJvb3Quc2V0VGltZW91dChmdW5jdGlvbigpe3Rocm93
IHR9KX0pLGY7aWYoZSYmImZ1bmN0aW9uIj09dHlwZW9mIGVbYy5pdGVyYXRvcl0pZm9yKHZhciB5
PWVbYy5pdGVyYXRvcl0oKTs7KXt2YXIgbT15Lm5leHQoKTtpZihtLmRvbmUpe2YuY29tcGxldGUo
KTticmVha31pZihmLm5leHQobS52YWx1ZSksZi5jbG9zZWQpYnJlYWt9ZWxzZSBpZihlJiYiZnVu
Y3Rpb24iPT10eXBlb2YgZVtwLm9ic2VydmFibGVdKXt2YXIgZz1lW3Aub2JzZXJ2YWJsZV0oKTtp
ZigiZnVuY3Rpb24iPT10eXBlb2YgZy5zdWJzY3JpYmUpcmV0dXJuIGcuc3Vic2NyaWJlKG5ldyBs
LklubmVyU3Vic2NyaWJlcih0LG4scikpO2YuZXJyb3IobmV3IFR5cGVFcnJvcigiUHJvdmlkZWQg
b2JqZWN0IGRvZXMgbm90IGNvcnJlY3RseSBpbXBsZW1lbnQgU3ltYm9sLm9ic2VydmFibGUiKSl9
ZWxzZXt2YXIgdj1hLmlzT2JqZWN0KGUpPyJhbiBpbnZhbGlkIG9iamVjdCI6IiciK2UrIiciLF89
IllvdSBwcm92aWRlZCAiK3YrIiB3aGVyZSBhIHN0cmVhbSB3YXMgZXhwZWN0ZWQuIFlvdSBjYW4g
cHJvdmlkZSBhbiBPYnNlcnZhYmxlLCBQcm9taXNlLCBBcnJheSwgb3IgSXRlcmFibGUuIjtmLmVy
cm9yKG5ldyBUeXBlRXJyb3IoXykpfX1yZXR1cm4gbnVsbH12YXIgbz1uKCJWT2ZaIiksaT1uKCIx
cjgrIikscz1uKCJhUWw3IiksYT1uKCJJQ3BnIiksdT1uKCJyQ1RmIiksYz1uKCJjZG1OIiksbD1u
KCJRcVJLIikscD1uKCJtYlZDIik7ZS5zdWJzY3JpYmVUb1Jlc3VsdD1yfSxEdVIyOmZ1bmN0aW9u
KHQsZSl7dmFyIG47bj1mdW5jdGlvbigpe3JldHVybiB0aGlzfSgpO3RyeXtuPW58fEZ1bmN0aW9u
KCJyZXR1cm4gdGhpcyIpKCl8fCgwLGV2YWwpKCJ0aGlzIil9Y2F0Y2godCl7Im9iamVjdCI9PXR5
cGVvZiB3aW5kb3cmJihuPXdpbmRvdyl9dC5leHBvcnRzPW59LEVFcjQ6ZnVuY3Rpb24odCxlLG4p
eyJ1c2Ugc3RyaWN0Ijt2YXIgcj10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24odCxlKXtm
dW5jdGlvbiBuKCl7dGhpcy5jb25zdHJ1Y3Rvcj10fWZvcih2YXIgciBpbiBlKWUuaGFzT3duUHJv
cGVydHkocikmJih0W3JdPWVbcl0pO3QucHJvdG90eXBlPW51bGw9PT1lP09iamVjdC5jcmVhdGUo
ZSk6KG4ucHJvdG90eXBlPWUucHJvdG90eXBlLG5ldyBuKX0sbz1uKCJyQ1RmIiksaT1uKCJtbVZT
Iikscz1uKCJCMDBVIiksYT1uKCJJWlZ3IiksdT1uKCJaSmY4IiksYz1uKCJyOFpZIiksbD1mdW5j
dGlvbih0KXtmdW5jdGlvbiBlKGUpe3QuY2FsbCh0aGlzLGUpLHRoaXMuZGVzdGluYXRpb249ZX1y
ZXR1cm4gcihlLHQpLGV9KGkuU3Vic2NyaWJlcik7ZS5TdWJqZWN0U3Vic2NyaWJlcj1sO3ZhciBw
PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmNhbGwodGhpcyksdGhpcy5vYnNlcnZlcnM9W10s
dGhpcy5jbG9zZWQ9ITEsdGhpcy5pc1N0b3BwZWQ9ITEsdGhpcy5oYXNFcnJvcj0hMSx0aGlzLnRo
cm93bkVycm9yPW51bGx9cmV0dXJuIHIoZSx0KSxlLnByb3RvdHlwZVtjLnJ4U3Vic2NyaWJlcl09
ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGwodGhpcyl9LGUucHJvdG90eXBlLmxpZnQ9ZnVuY3Rpb24o
dCl7dmFyIGU9bmV3IGYodGhpcyx0aGlzKTtyZXR1cm4gZS5vcGVyYXRvcj10LGV9LGUucHJvdG90
eXBlLm5leHQ9ZnVuY3Rpb24odCl7aWYodGhpcy5jbG9zZWQpdGhyb3cgbmV3IGEuT2JqZWN0VW5z
dWJzY3JpYmVkRXJyb3I7aWYoIXRoaXMuaXNTdG9wcGVkKWZvcih2YXIgZT10aGlzLm9ic2VydmVy
cyxuPWUubGVuZ3RoLHI9ZS5zbGljZSgpLG89MDtvPG47bysrKXJbb10ubmV4dCh0KX0sZS5wcm90
b3R5cGUuZXJyb3I9ZnVuY3Rpb24odCl7aWYodGhpcy5jbG9zZWQpdGhyb3cgbmV3IGEuT2JqZWN0
VW5zdWJzY3JpYmVkRXJyb3I7dGhpcy5oYXNFcnJvcj0hMCx0aGlzLnRocm93bkVycm9yPXQsdGhp
cy5pc1N0b3BwZWQ9ITA7Zm9yKHZhciBlPXRoaXMub2JzZXJ2ZXJzLG49ZS5sZW5ndGgscj1lLnNs
aWNlKCksbz0wO288bjtvKyspcltvXS5lcnJvcih0KTt0aGlzLm9ic2VydmVycy5sZW5ndGg9MH0s
ZS5wcm90b3R5cGUuY29tcGxldGU9ZnVuY3Rpb24oKXtpZih0aGlzLmNsb3NlZCl0aHJvdyBuZXcg
YS5PYmplY3RVbnN1YnNjcmliZWRFcnJvcjt0aGlzLmlzU3RvcHBlZD0hMDtmb3IodmFyIHQ9dGhp
cy5vYnNlcnZlcnMsZT10Lmxlbmd0aCxuPXQuc2xpY2UoKSxyPTA7cjxlO3IrKyluW3JdLmNvbXBs
ZXRlKCk7dGhpcy5vYnNlcnZlcnMubGVuZ3RoPTB9LGUucHJvdG90eXBlLnVuc3Vic2NyaWJlPWZ1
bmN0aW9uKCl7dGhpcy5pc1N0b3BwZWQ9ITAsdGhpcy5jbG9zZWQ9ITAsdGhpcy5vYnNlcnZlcnM9
bnVsbH0sZS5wcm90b3R5cGUuX3RyeVN1YnNjcmliZT1mdW5jdGlvbihlKXtpZih0aGlzLmNsb3Nl
ZCl0aHJvdyBuZXcgYS5PYmplY3RVbnN1YnNjcmliZWRFcnJvcjtyZXR1cm4gdC5wcm90b3R5cGUu
X3RyeVN1YnNjcmliZS5jYWxsKHRoaXMsZSl9LGUucHJvdG90eXBlLl9zdWJzY3JpYmU9ZnVuY3Rp
b24odCl7aWYodGhpcy5jbG9zZWQpdGhyb3cgbmV3IGEuT2JqZWN0VW5zdWJzY3JpYmVkRXJyb3I7
cmV0dXJuIHRoaXMuaGFzRXJyb3I/KHQuZXJyb3IodGhpcy50aHJvd25FcnJvcikscy5TdWJzY3Jp
cHRpb24uRU1QVFkpOnRoaXMuaXNTdG9wcGVkPyh0LmNvbXBsZXRlKCkscy5TdWJzY3JpcHRpb24u
RU1QVFkpOih0aGlzLm9ic2VydmVycy5wdXNoKHQpLG5ldyB1LlN1YmplY3RTdWJzY3JpcHRpb24o
dGhpcyx0KSl9LGUucHJvdG90eXBlLmFzT2JzZXJ2YWJsZT1mdW5jdGlvbigpe3ZhciB0PW5ldyBv
Lk9ic2VydmFibGU7cmV0dXJuIHQuc291cmNlPXRoaXMsdH0sZS5jcmVhdGU9ZnVuY3Rpb24odCxl
KXtyZXR1cm4gbmV3IGYodCxlKX0sZX0oby5PYnNlcnZhYmxlKTtlLlN1YmplY3Q9cDt2YXIgZj1m
dW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbil7dC5jYWxsKHRoaXMpLHRoaXMuZGVzdGluYXRpb249
ZSx0aGlzLnNvdXJjZT1ufXJldHVybiByKGUsdCksZS5wcm90b3R5cGUubmV4dD1mdW5jdGlvbih0
KXt2YXIgZT10aGlzLmRlc3RpbmF0aW9uO2UmJmUubmV4dCYmZS5uZXh0KHQpfSxlLnByb3RvdHlw
ZS5lcnJvcj1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmRlc3RpbmF0aW9uO2UmJmUuZXJyb3ImJnRo
aXMuZGVzdGluYXRpb24uZXJyb3IodCl9LGUucHJvdG90eXBlLmNvbXBsZXRlPWZ1bmN0aW9uKCl7
dmFyIHQ9dGhpcy5kZXN0aW5hdGlvbjt0JiZ0LmNvbXBsZXRlJiZ0aGlzLmRlc3RpbmF0aW9uLmNv
bXBsZXRlKCl9LGUucHJvdG90eXBlLl9zdWJzY3JpYmU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMu
c291cmNlP3RoaXMuc291cmNlLnN1YnNjcmliZSh0KTpzLlN1YnNjcmlwdGlvbi5FTVBUWX0sZX0o
cCk7ZS5Bbm9ueW1vdXNTdWJqZWN0PWZ9LEZ6cm86ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0
IjsvKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCitmdW5jdGlvbiByKHQpe2lm
KCJzdHJpbmciIT10eXBlb2YgdClyZXR1cm4gdDtzd2l0Y2godC50b1VwcGVyQ2FzZSgpKXtjYXNl
IkdFVCI6cmV0dXJuIF8uR2V0O2Nhc2UiUE9TVCI6cmV0dXJuIF8uUG9zdDtjYXNlIlBVVCI6cmV0
dXJuIF8uUHV0O2Nhc2UiREVMRVRFIjpyZXR1cm4gXy5EZWxldGU7Y2FzZSJPUFRJT05TIjpyZXR1
cm4gXy5PcHRpb25zO2Nhc2UiSEVBRCI6cmV0dXJuIF8uSGVhZDtjYXNlIlBBVENIIjpyZXR1cm4g
Xy5QYXRjaH10aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgcmVxdWVzdCBtZXRob2QuIFRoZSBtZXRo
b2QgIicrdCsnIiBpcyBub3Qgc3VwcG9ydGVkLicpfWZ1bmN0aW9uIG8odCl7cmV0dXJuInJlc3Bv
bnNlVVJMImluIHQ/dC5yZXNwb25zZVVSTDovXlgtUmVxdWVzdC1VUkw6L20udGVzdCh0LmdldEFs
bFJlc3BvbnNlSGVhZGVycygpKT90LmdldFJlc3BvbnNlSGVhZGVyKCJYLVJlcXVlc3QtVVJMIik6
dm9pZCAwfWZ1bmN0aW9uIGkodCl7Zm9yKHZhciBlPW5ldyBVaW50MTZBcnJheSh0Lmxlbmd0aCks
bj0wLHI9dC5sZW5ndGg7bjxyO24rKyllW25dPXQuY2hhckNvZGVBdChuKTtyZXR1cm4gZS5idWZm
ZXJ9LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqIEBwYXJhbSB7Pz19IHJhd1Bh
cmFtcworICogQHJldHVybiB7P30KKyAqLworZnVuY3Rpb24gcyh0KXt2b2lkIDA9PT10JiYodD0i
Iik7dmFyIGU9bmV3IE1hcDtpZih0Lmxlbmd0aD4wKXt0LnNwbGl0KCImIikuZm9yRWFjaChmdW5j
dGlvbih0KXt2YXIgbj10LmluZGV4T2YoIj0iKSxyPS0xPT1uP1t0LCIiXTpbdC5zbGljZSgwLG4p
LHQuc2xpY2UobisxKV0sbz1yWzBdLGk9clsxXSxzPWUuZ2V0KG8pfHxbXTtzLnB1c2goaSksZS5z
ZXQobyxzKX0pfXJldHVybiBlfWZ1bmN0aW9uIGEodCl7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVu
dCh0KS5yZXBsYWNlKC8lNDAvZ2ksIkAiKS5yZXBsYWNlKC8lM0EvZ2ksIjoiKS5yZXBsYWNlKC8l
MjQvZ2ksIiQiKS5yZXBsYWNlKC8lMkMvZ2ksIiwiKS5yZXBsYWNlKC8lM0IvZ2ksIjsiKS5yZXBs
YWNlKC8lMkIvZ2ksIisiKS5yZXBsYWNlKC8lM0QvZ2ksIj0iKS5yZXBsYWNlKC8lM0YvZ2ksIj8i
KS5yZXBsYWNlKC8lMkYvZ2ksIi8iKX1mdW5jdGlvbiB1KCl7dmFyIHQ9Im9iamVjdCI9PXR5cGVv
ZiB3aW5kb3c/d2luZG93Ont9O3JldHVybiBudWxsPT09RCYmKEQ9dFtSXT17fSksRH0vKioKKyAq
IEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
KyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBo
dHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCitmdW5jdGlvbiBjKHQsZSl7cmV0dXJuIHQu
Y3JlYXRlQ29ubmVjdGlvbihlKS5yZXNwb25zZX1mdW5jdGlvbiBsKHQsZSxuLHIpe3ZhciBvPXQ7
cmV0dXJuIGU/by5tZXJnZShuZXcgSyh7bWV0aG9kOmUubWV0aG9kfHxuLHVybDplLnVybHx8cixz
ZWFyY2g6ZS5zZWFyY2gscGFyYW1zOmUucGFyYW1zLGhlYWRlcnM6ZS5oZWFkZXJzLGJvZHk6ZS5i
b2R5LHdpdGhDcmVkZW50aWFsczplLndpdGhDcmVkZW50aWFscyxyZXNwb25zZVR5cGU6ZS5yZXNw
b25zZVR5cGV9KSk6by5tZXJnZShuZXcgSyh7bWV0aG9kOm4sdXJsOnJ9KSl9LyoqCisgKiBAbGlj
ZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgor
ICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6
Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLworZnVuY3Rpb24gcCgpe3JldHVybiBuZXcgWn1mdW5j
dGlvbiBmKHQsZSl7cmV0dXJuIG5ldyBudCh0LGUpfWZ1bmN0aW9uIGgodCxlKXtyZXR1cm4gbmV3
IHJ0KHQsZSl9dmFyIGQ9bigiM2ozSyIpLHk9bigickNUZiIpLG09KG4ubih5KSxuKCJRYmRtIikp
O24uZChlLCJhIixmdW5jdGlvbigpe3JldHVybiB2fSksbi5kKGUsImQiLGZ1bmN0aW9uKCl7cmV0
dXJuIFd9KSxuLmQoZSwiZSIsZnVuY3Rpb24oKXtyZXR1cm4gWH0pLG4uZChlLCJqIixmdW5jdGlv
bigpe3JldHVybiBLfSksbi5kKGUsImIiLGZ1bmN0aW9uKCl7cmV0dXJuIFN9KSxuLmQoZSwiaCIs
ZnVuY3Rpb24oKXtyZXR1cm4geH0pLG4uZChlLCJrIixmdW5jdGlvbigpe3JldHVybiBudH0pLG4u
ZChlLCJnIixmdW5jdGlvbigpe3JldHVybiBvdH0pLG4uZChlLCJpIixmdW5jdGlvbigpe3JldHVy
biBBfSksbi5kKGUsImMiLGZ1bmN0aW9uKCl7cmV0dXJuIHB9KSxuLmQoZSwiZiIsZnVuY3Rpb24o
KXtyZXR1cm4gZn0pO3ZhciBnPXRoaXMmJnRoaXMuX19leHRlbmRzfHxmdW5jdGlvbih0LGUpe2Z1
bmN0aW9uIG4oKXt0aGlzLmNvbnN0cnVjdG9yPXR9Zm9yKHZhciByIGluIGUpZS5oYXNPd25Qcm9w
ZXJ0eShyKSYmKHRbcl09ZVtyXSk7dC5wcm90b3R5cGU9bnVsbD09PWU/T2JqZWN0LmNyZWF0ZShl
KToobi5wcm90b3R5cGU9ZS5wcm90b3R5cGUsbmV3IG4pfSx2PWZ1bmN0aW9uKCl7ZnVuY3Rpb24g
dCgpe31yZXR1cm4gdC5wcm90b3R5cGUuYnVpbGQ9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFhNTEh0
dHBSZXF1ZXN0fSx0fSgpO3YuZGVjb3JhdG9ycz1be3R5cGU6ZC56fV0sdi5jdG9yUGFyYW1ldGVy
cz1mdW5jdGlvbigpe3JldHVybltdfTt2YXIgXz17fTtfLkdldD0wLF8uUG9zdD0xLF8uUHV0PTIs
Xy5EZWxldGU9MyxfLk9wdGlvbnM9NCxfLkhlYWQ9NSxfLlBhdGNoPTYsX1tfLkdldF09IkdldCIs
X1tfLlBvc3RdPSJQb3N0IixfW18uUHV0XT0iUHV0IixfW18uRGVsZXRlXT0iRGVsZXRlIixfW18u
T3B0aW9uc109Ik9wdGlvbnMiLF9bXy5IZWFkXT0iSGVhZCIsX1tfLlBhdGNoXT0iUGF0Y2giO3Zh
ciBiPXt9O2IuVW5zZW50PTAsYi5PcGVuPTEsYi5IZWFkZXJzUmVjZWl2ZWQ9MixiLkxvYWRpbmc9
MyxiLkRvbmU9NCxiLkNhbmNlbGxlZD01LGJbYi5VbnNlbnRdPSJVbnNlbnQiLGJbYi5PcGVuXT0i
T3BlbiIsYltiLkhlYWRlcnNSZWNlaXZlZF09IkhlYWRlcnNSZWNlaXZlZCIsYltiLkxvYWRpbmdd
PSJMb2FkaW5nIixiW2IuRG9uZV09IkRvbmUiLGJbYi5DYW5jZWxsZWRdPSJDYW5jZWxsZWQiO3Zh
ciB3PXt9O3cuQmFzaWM9MCx3LkNvcnM9MSx3LkRlZmF1bHQ9Mix3LkVycm9yPTMsdy5PcGFxdWU9
NCx3W3cuQmFzaWNdPSJCYXNpYyIsd1t3LkNvcnNdPSJDb3JzIix3W3cuRGVmYXVsdF09IkRlZmF1
bHQiLHdbdy5FcnJvcl09IkVycm9yIix3W3cuT3BhcXVlXT0iT3BhcXVlIjt2YXIgQz17fTtDLk5P
TkU9MCxDLkpTT049MSxDLkZPUk09MixDLkZPUk1fREFUQT0zLEMuVEVYVD00LEMuQkxPQj01LEMu
QVJSQVlfQlVGRkVSPTYsQ1tDLk5PTkVdPSJOT05FIixDW0MuSlNPTl09IkpTT04iLENbQy5GT1JN
XT0iRk9STSIsQ1tDLkZPUk1fREFUQV09IkZPUk1fREFUQSIsQ1tDLlRFWFRdPSJURVhUIixDW0Mu
QkxPQl09IkJMT0IiLENbQy5BUlJBWV9CVUZGRVJdPSJBUlJBWV9CVUZGRVIiO3ZhciBFPXt9O0Uu
VGV4dD0wLEUuSnNvbj0xLEUuQXJyYXlCdWZmZXI9MixFLkJsb2I9MyxFW0UuVGV4dF09IlRleHQi
LEVbRS5Kc29uXT0iSnNvbiIsRVtFLkFycmF5QnVmZmVyXT0iQXJyYXlCdWZmZXIiLEVbRS5CbG9i
XT0iQmxvYiI7dmFyIE89ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe3ZhciBuPXRoaXM7aWYodGhp
cy5faGVhZGVycz1uZXcgTWFwLHRoaXMuX25vcm1hbGl6ZWROYW1lcz1uZXcgTWFwLGUpcmV0dXJu
IGUgaW5zdGFuY2VvZiB0P3ZvaWQgZS5mb3JFYWNoKGZ1bmN0aW9uKHQsZSl7dC5mb3JFYWNoKGZ1
bmN0aW9uKHQpe3JldHVybiBuLmFwcGVuZChlLHQpfSl9KTp2b2lkIE9iamVjdC5rZXlzKGUpLmZv
ckVhY2goZnVuY3Rpb24odCl7dmFyIHI9QXJyYXkuaXNBcnJheShlW3RdKT9lW3RdOltlW3RdXTtu
LmRlbGV0ZSh0KSxyLmZvckVhY2goZnVuY3Rpb24oZSl7cmV0dXJuIG4uYXBwZW5kKHQsZSl9KX0p
fXJldHVybiB0LmZyb21SZXNwb25zZUhlYWRlclN0cmluZz1mdW5jdGlvbihlKXt2YXIgbj1uZXcg
dDtyZXR1cm4gZS5zcGxpdCgiXG4iKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPXQuaW5kZXhP
ZigiOiIpO2lmKGU+MCl7dmFyIHI9dC5zbGljZSgwLGUpLG89dC5zbGljZShlKzEpLnRyaW0oKTtu
LnNldChyLG8pfX0pLG59LHQucHJvdG90eXBlLmFwcGVuZD1mdW5jdGlvbih0LGUpe3ZhciBuPXRo
aXMuZ2V0QWxsKHQpO251bGw9PT1uP3RoaXMuc2V0KHQsZSk6bi5wdXNoKGUpfSx0LnByb3RvdHlw
ZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9dC50b0xvd2VyQ2FzZSgpO3RoaXMuX25vcm1hbGl6
ZWROYW1lcy5kZWxldGUoZSksdGhpcy5faGVhZGVycy5kZWxldGUoZSl9LHQucHJvdG90eXBlLmZv
ckVhY2g9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0aGlzLl9oZWFkZXJzLmZvckVhY2goZnVuY3Rp
b24obixyKXtyZXR1cm4gdChuLGUuX25vcm1hbGl6ZWROYW1lcy5nZXQociksZS5faGVhZGVycyl9
KX0sdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZ2V0QWxsKHQpO3JldHVy
biBudWxsPT09ZT9udWxsOmUubGVuZ3RoPjA/ZVswXTpudWxsfSx0LnByb3RvdHlwZS5oYXM9ZnVu
Y3Rpb24odCl7cmV0dXJuIHRoaXMuX2hlYWRlcnMuaGFzKHQudG9Mb3dlckNhc2UoKSl9LHQucHJv
dG90eXBlLmtleXM9ZnVuY3Rpb24oKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9ub3JtYWxpemVk
TmFtZXMudmFsdWVzKCkpfSx0LnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxlKXtBcnJheS5pc0Fy
cmF5KGUpP2UubGVuZ3RoJiZ0aGlzLl9oZWFkZXJzLnNldCh0LnRvTG93ZXJDYXNlKCksW2Uuam9p
bigiLCIpXSk6dGhpcy5faGVhZGVycy5zZXQodC50b0xvd2VyQ2FzZSgpLFtlXSksdGhpcy5tYXlC
ZVNldE5vcm1hbGl6ZWROYW1lKHQpfSx0LnByb3RvdHlwZS52YWx1ZXM9ZnVuY3Rpb24oKXtyZXR1
cm4gQXJyYXkuZnJvbSh0aGlzLl9oZWFkZXJzLnZhbHVlcygpKX0sdC5wcm90b3R5cGUudG9KU09O
PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXt9O3JldHVybiB0aGlzLl9oZWFkZXJzLmZvckVhY2go
ZnVuY3Rpb24obixyKXt2YXIgbz1bXTtuLmZvckVhY2goZnVuY3Rpb24odCl7cmV0dXJuIG8ucHVz
aC5hcHBseShvLHQuc3BsaXQoIiwiKSl9KSxlW3QuX25vcm1hbGl6ZWROYW1lcy5nZXQocildPW99
KSxlfSx0LnByb3RvdHlwZS5nZXRBbGw9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaGFzKHQpP3Ro
aXMuX2hlYWRlcnMuZ2V0KHQudG9Mb3dlckNhc2UoKSk6bnVsbH0sdC5wcm90b3R5cGUuZW50cmll
cz1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcignImVudHJpZXMiIG1ldGhvZCBpcyBub3QgaW1w
bGVtZW50ZWQgb24gSGVhZGVycyBjbGFzcycpfSx0LnByb3RvdHlwZS5tYXlCZVNldE5vcm1hbGl6
ZWROYW1lPWZ1bmN0aW9uKHQpe3ZhciBlPXQudG9Mb3dlckNhc2UoKTt0aGlzLl9ub3JtYWxpemVk
TmFtZXMuaGFzKGUpfHx0aGlzLl9ub3JtYWxpemVkTmFtZXMuc2V0KGUsdCl9LHR9KCkseD1mdW5j
dGlvbigpe2Z1bmN0aW9uIHQodCl7dmFyIGU9dm9pZCAwPT09dD97fTp0LG49ZS5ib2R5LHI9ZS5z
dGF0dXMsbz1lLmhlYWRlcnMsaT1lLnN0YXR1c1RleHQscz1lLnR5cGUsYT1lLnVybDt0aGlzLmJv
ZHk9bnVsbCE9bj9uOm51bGwsdGhpcy5zdGF0dXM9bnVsbCE9cj9yOm51bGwsdGhpcy5oZWFkZXJz
PW51bGwhPW8/bzpudWxsLHRoaXMuc3RhdHVzVGV4dD1udWxsIT1pP2k6bnVsbCx0aGlzLnR5cGU9
bnVsbCE9cz9zOm51bGwsdGhpcy51cmw9bnVsbCE9YT9hOm51bGx9cmV0dXJuIHQucHJvdG90eXBl
Lm1lcmdlPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgdCh7Ym9keTplJiZudWxsIT1lLmJvZHk/ZS5i
b2R5OnRoaXMuYm9keSxzdGF0dXM6ZSYmbnVsbCE9ZS5zdGF0dXM/ZS5zdGF0dXM6dGhpcy5zdGF0
dXMsaGVhZGVyczplJiZudWxsIT1lLmhlYWRlcnM/ZS5oZWFkZXJzOnRoaXMuaGVhZGVycyxzdGF0
dXNUZXh0OmUmJm51bGwhPWUuc3RhdHVzVGV4dD9lLnN0YXR1c1RleHQ6dGhpcy5zdGF0dXNUZXh0
LHR5cGU6ZSYmbnVsbCE9ZS50eXBlP2UudHlwZTp0aGlzLnR5cGUsdXJsOmUmJm51bGwhPWUudXJs
P2UudXJsOnRoaXMudXJsfSl9LHR9KCksUz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJu
IHQuY2FsbCh0aGlzLHtzdGF0dXM6MjAwLHN0YXR1c1RleHQ6Ik9rIix0eXBlOncuRGVmYXVsdCxo
ZWFkZXJzOm5ldyBPfSl8fHRoaXN9cmV0dXJuIGcoZSx0KSxlfSh4KTtTLmRlY29yYXRvcnM9W3t0
eXBlOmQuen1dLFMuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5bXX07LyoqCisgKiBA
bGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisg
KgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0
cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFyIFA9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0
KCl7fXJldHVybiB0LnByb3RvdHlwZS5jcmVhdGVDb25uZWN0aW9uPWZ1bmN0aW9uKHQpe30sdH0o
KSxBPShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9fSgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgp
e31yZXR1cm4gdC5wcm90b3R5cGUuY29uZmlndXJlUmVxdWVzdD1mdW5jdGlvbih0KXt9LHR9KCkp
LFQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQ+PTIwMCYmdDwzMDB9LGs9ZnVuY3Rpb24oKXtmdW5jdGlv
biB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5lbmNvZGVLZXk9ZnVuY3Rpb24odCl7cmV0dXJuIGEo
dCl9LHQucHJvdG90eXBlLmVuY29kZVZhbHVlPWZ1bmN0aW9uKHQpe3JldHVybiBhKHQpfSx0fSgp
LFY9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7dm9pZCAwPT09dCYmKHQ9IiIpLHZvaWQgMD09
PWUmJihlPW5ldyBrKSx0aGlzLnJhd1BhcmFtcz10LHRoaXMucXVlcnlFbmNvZGVyPWUsdGhpcy5w
YXJhbXNNYXA9cyh0KX1yZXR1cm4gdC5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24oKXt2YXIgZT1u
ZXcgdCgiIix0aGlzLnF1ZXJ5RW5jb2Rlcik7cmV0dXJuIGUuYXBwZW5kQWxsKHRoaXMpLGV9LHQu
cHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wYXJhbXNNYXAuaGFzKHQpfSx0
LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5wYXJhbXNNYXAuZ2V0KHQpO3Jl
dHVybiBBcnJheS5pc0FycmF5KGUpP2VbMF06bnVsbH0sdC5wcm90b3R5cGUuZ2V0QWxsPWZ1bmN0
aW9uKHQpe3JldHVybiB0aGlzLnBhcmFtc01hcC5nZXQodCl8fFtdfSx0LnByb3RvdHlwZS5zZXQ9
ZnVuY3Rpb24odCxlKXtpZih2b2lkIDA9PT1lfHxudWxsPT09ZSlyZXR1cm4gdm9pZCB0aGlzLmRl
bGV0ZSh0KTt2YXIgbj10aGlzLnBhcmFtc01hcC5nZXQodCl8fFtdO24ubGVuZ3RoPTAsbi5wdXNo
KGUpLHRoaXMucGFyYW1zTWFwLnNldCh0LG4pfSx0LnByb3RvdHlwZS5zZXRBbGw9ZnVuY3Rpb24o
dCl7dmFyIGU9dGhpczt0LnBhcmFtc01hcC5mb3JFYWNoKGZ1bmN0aW9uKHQsbil7dmFyIHI9ZS5w
YXJhbXNNYXAuZ2V0KG4pfHxbXTtyLmxlbmd0aD0wLHIucHVzaCh0WzBdKSxlLnBhcmFtc01hcC5z
ZXQobixyKX0pfSx0LnByb3RvdHlwZS5hcHBlbmQ9ZnVuY3Rpb24odCxlKXtpZih2b2lkIDAhPT1l
JiZudWxsIT09ZSl7dmFyIG49dGhpcy5wYXJhbXNNYXAuZ2V0KHQpfHxbXTtuLnB1c2goZSksdGhp
cy5wYXJhbXNNYXAuc2V0KHQsbil9fSx0LnByb3RvdHlwZS5hcHBlbmRBbGw9ZnVuY3Rpb24odCl7
dmFyIGU9dGhpczt0LnBhcmFtc01hcC5mb3JFYWNoKGZ1bmN0aW9uKHQsbil7Zm9yKHZhciByPWUu
cGFyYW1zTWFwLmdldChuKXx8W10sbz0wO288dC5sZW5ndGg7KytvKXIucHVzaCh0W29dKTtlLnBh
cmFtc01hcC5zZXQobixyKX0pfSx0LnByb3RvdHlwZS5yZXBsYWNlQWxsPWZ1bmN0aW9uKHQpe3Zh
ciBlPXRoaXM7dC5wYXJhbXNNYXAuZm9yRWFjaChmdW5jdGlvbih0LG4pe3ZhciByPWUucGFyYW1z
TWFwLmdldChuKXx8W107ci5sZW5ndGg9MDtmb3IodmFyIG89MDtvPHQubGVuZ3RoOysrbylyLnB1
c2godFtvXSk7ZS5wYXJhbXNNYXAuc2V0KG4scil9KX0sdC5wcm90b3R5cGUudG9TdHJpbmc9ZnVu
Y3Rpb24oKXt2YXIgdD10aGlzLGU9W107cmV0dXJuIHRoaXMucGFyYW1zTWFwLmZvckVhY2goZnVu
Y3Rpb24obixyKXtuLmZvckVhY2goZnVuY3Rpb24obil7cmV0dXJuIGUucHVzaCh0LnF1ZXJ5RW5j
b2Rlci5lbmNvZGVLZXkocikrIj0iK3QucXVlcnlFbmNvZGVyLmVuY29kZVZhbHVlKG4pKX0pfSks
ZS5qb2luKCImIil9LHQucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt0aGlzLnBhcmFtc01h
cC5kZWxldGUodCl9LHR9KCksTT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJv
dG90eXBlLmpzb249ZnVuY3Rpb24oKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHRoaXMuX2JvZHk/
SlNPTi5wYXJzZSh0aGlzLl9ib2R5KTp0aGlzLl9ib2R5IGluc3RhbmNlb2YgQXJyYXlCdWZmZXI/
SlNPTi5wYXJzZSh0aGlzLnRleHQoKSk6dGhpcy5fYm9keX0sdC5wcm90b3R5cGUudGV4dD1mdW5j
dGlvbigpe3JldHVybiB0aGlzLl9ib2R5IGluc3RhbmNlb2YgVj90aGlzLl9ib2R5LnRvU3RyaW5n
KCk6dGhpcy5fYm9keSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyP1N0cmluZy5mcm9tQ2hhckNvZGUu
YXBwbHkobnVsbCxuZXcgVWludDE2QXJyYXkodGhpcy5fYm9keSkpOm51bGw9PXRoaXMuX2JvZHk/
IiI6Im9iamVjdCI9PXR5cGVvZiB0aGlzLl9ib2R5P0pTT04uc3RyaW5naWZ5KHRoaXMuX2JvZHks
bnVsbCwyKTp0aGlzLl9ib2R5LnRvU3RyaW5nKCl9LHQucHJvdG90eXBlLmFycmF5QnVmZmVyPWZ1
bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2JvZHkgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcj90aGlzLl9i
b2R5OmkodGhpcy50ZXh0KCkpfSx0LnByb3RvdHlwZS5ibG9iPWZ1bmN0aW9uKCl7aWYodGhpcy5f
Ym9keSBpbnN0YW5jZW9mIEJsb2IpcmV0dXJuIHRoaXMuX2JvZHk7aWYodGhpcy5fYm9keSBpbnN0
YW5jZW9mIEFycmF5QnVmZmVyKXJldHVybiBuZXcgQmxvYihbdGhpcy5fYm9keV0pO3Rocm93IG5l
dyBFcnJvcigiVGhlIHJlcXVlc3QgYm9keSBpc24ndCBlaXRoZXIgYSBibG9iIG9yIGFuIGFycmF5
IGJ1ZmZlciIpfSx0fSgpLE49ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXt2YXIgbj10LmNhbGwo
dGhpcyl8fHRoaXM7cmV0dXJuIG4uX2JvZHk9ZS5ib2R5LG4uc3RhdHVzPWUuc3RhdHVzLG4ub2s9
bi5zdGF0dXM+PTIwMCYmbi5zdGF0dXM8PTI5OSxuLnN0YXR1c1RleHQ9ZS5zdGF0dXNUZXh0LG4u
aGVhZGVycz1lLmhlYWRlcnMsbi50eXBlPWUudHlwZSxuLnVybD1lLnVybCxufXJldHVybiBnKGUs
dCksZS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iUmVzcG9uc2Ugd2l0aCBz
dGF0dXM6ICIrdGhpcy5zdGF0dXMrIiAiK3RoaXMuc3RhdHVzVGV4dCsiIGZvciBVUkw6ICIrdGhp
cy51cmx9LGV9KE0pLGo9MCxSPSJfX25nX2pzb25wX18iLEQ9bnVsbCxJPWZ1bmN0aW9uKCl7ZnVu
Y3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUuYnVpbGQ9ZnVuY3Rpb24odCl7dmFyIGU9ZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7cmV0dXJuIGUuc3JjPXQsZX0sdC5wcm90b3R5
cGUubmV4dFJlcXVlc3RJRD1mdW5jdGlvbigpe3JldHVybiJfX3JlcSIraisrfSx0LnByb3RvdHlw
ZS5yZXF1ZXN0Q2FsbGJhY2s9ZnVuY3Rpb24odCl7cmV0dXJuIFIrIi4iK3QrIi5maW5pc2hlZCJ9
LHQucHJvdG90eXBlLmV4cG9zZUNvbm5lY3Rpb249ZnVuY3Rpb24odCxlKXt1KClbdF09ZX0sdC5w
cm90b3R5cGUucmVtb3ZlQ29ubmVjdGlvbj1mdW5jdGlvbih0KXt1KClbdF09bnVsbH0sdC5wcm90
b3R5cGUuc2VuZD1mdW5jdGlvbih0KXtkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHQpfSx0LnBy
b3RvdHlwZS5jbGVhbnVwPWZ1bmN0aW9uKHQpe3QucGFyZW50Tm9kZSYmdC5wYXJlbnROb2RlLnJl
bW92ZUNoaWxkKHQpfSx0fSgpO0kuZGVjb3JhdG9ycz1be3R5cGU6ZC56fV0sSS5jdG9yUGFyYW1l
dGVycz1mdW5jdGlvbigpe3JldHVybltdfTsvKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQg
R29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
ICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5z
ZQorICovCit2YXIgRj0iSlNPTlAgaW5qZWN0ZWQgc2NyaXB0IGRpZCBub3QgaW52b2tlIGNhbGxi
YWNrLiIsSD0iSlNPTlAgcmVxdWVzdHMgbXVzdCB1c2UgR0VUIHJlcXVlc3QgbWV0aG9kLiIsTD1m
dW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLmZpbmlzaGVkPWZ1bmN0
aW9uKHQpe30sdH0oKSxVPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuLHIpe3ZhciBvPXQuY2Fs
bCh0aGlzKXx8dGhpcztpZihvLl9kb209bixvLmJhc2VSZXNwb25zZU9wdGlvbnM9cixvLl9maW5p
c2hlZD0hMSxlLm1ldGhvZCE9PV8uR2V0KXRocm93IG5ldyBUeXBlRXJyb3IoSCk7cmV0dXJuIG8u
cmVxdWVzdD1lLG8ucmVzcG9uc2U9bmV3IHkuT2JzZXJ2YWJsZShmdW5jdGlvbih0KXtvLnJlYWR5
U3RhdGU9Yi5Mb2FkaW5nO3ZhciBpPW8uX2lkPW4ubmV4dFJlcXVlc3RJRCgpO24uZXhwb3NlQ29u
bmVjdGlvbihpLG8pO3ZhciBzPW4ucmVxdWVzdENhbGxiYWNrKG8uX2lkKSxhPWUudXJsO2EuaW5k
ZXhPZigiPUpTT05QX0NBTExCQUNLJiIpPi0xP2E9YS5yZXBsYWNlKCI9SlNPTlBfQ0FMTEJBQ0sm
IiwiPSIrcysiJiIpOmEubGFzdEluZGV4T2YoIj1KU09OUF9DQUxMQkFDSyIpPT09YS5sZW5ndGgt
Ij1KU09OUF9DQUxMQkFDSyIubGVuZ3RoJiYoYT1hLnN1YnN0cmluZygwLGEubGVuZ3RoLSI9SlNP
TlBfQ0FMTEJBQ0siLmxlbmd0aCkrIj0iK3MpO3ZhciB1PW8uX3NjcmlwdD1uLmJ1aWxkKGEpLGM9
ZnVuY3Rpb24oZSl7aWYoby5yZWFkeVN0YXRlIT09Yi5DYW5jZWxsZWQpe2lmKG8ucmVhZHlTdGF0
ZT1iLkRvbmUsbi5jbGVhbnVwKHUpLCFvLl9maW5pc2hlZCl7dmFyIGk9bmV3IHgoe2JvZHk6Rix0
eXBlOncuRXJyb3IsdXJsOmF9KTtyZXR1cm4gciYmKGk9ci5tZXJnZShpKSksdm9pZCB0LmVycm9y
KG5ldyBOKGkpKX12YXIgcz1uZXcgeCh7Ym9keTpvLl9yZXNwb25zZURhdGEsdXJsOmF9KTtvLmJh
c2VSZXNwb25zZU9wdGlvbnMmJihzPW8uYmFzZVJlc3BvbnNlT3B0aW9ucy5tZXJnZShzKSksdC5u
ZXh0KG5ldyBOKHMpKSx0LmNvbXBsZXRlKCl9fSxsPWZ1bmN0aW9uKGUpe2lmKG8ucmVhZHlTdGF0
ZSE9PWIuQ2FuY2VsbGVkKXtvLnJlYWR5U3RhdGU9Yi5Eb25lLG4uY2xlYW51cCh1KTt2YXIgaT1u
ZXcgeCh7Ym9keTplLm1lc3NhZ2UsdHlwZTp3LkVycm9yfSk7ciYmKGk9ci5tZXJnZShpKSksdC5l
cnJvcihuZXcgTihpKSl9fTtyZXR1cm4gdS5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixjKSx1LmFk
ZEV2ZW50TGlzdGVuZXIoImVycm9yIixsKSxuLnNlbmQodSksZnVuY3Rpb24oKXtvLnJlYWR5U3Rh
dGU9Yi5DYW5jZWxsZWQsdS5yZW1vdmVFdmVudExpc3RlbmVyKCJsb2FkIixjKSx1LnJlbW92ZUV2
ZW50TGlzdGVuZXIoImVycm9yIixsKSxvLl9kb20uY2xlYW51cCh1KX19KSxvfXJldHVybiBnKGUs
dCksZS5wcm90b3R5cGUuZmluaXNoZWQ9ZnVuY3Rpb24odCl7dGhpcy5fZmluaXNoZWQ9ITAsdGhp
cy5fZG9tLnJlbW92ZUNvbm5lY3Rpb24odGhpcy5faWQpLHRoaXMucmVhZHlTdGF0ZSE9PWIuQ2Fu
Y2VsbGVkJiYodGhpcy5fcmVzcG9uc2VEYXRhPXQpfSxlfShMKSxCPWZ1bmN0aW9uKHQpe2Z1bmN0
aW9uIGUoKXtyZXR1cm4gbnVsbCE9PXQmJnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXJl
dHVybiBnKGUsdCksZX0oUCksRz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbil7dmFyIHI9dC5j
YWxsKHRoaXMpfHx0aGlzO3JldHVybiByLl9icm93c2VySlNPTlA9ZSxyLl9iYXNlUmVzcG9uc2VP
cHRpb25zPW4scn1yZXR1cm4gZyhlLHQpLGUucHJvdG90eXBlLmNyZWF0ZUNvbm5lY3Rpb249ZnVu
Y3Rpb24odCl7cmV0dXJuIG5ldyBVKHQsdGhpcy5fYnJvd3NlckpTT05QLHRoaXMuX2Jhc2VSZXNw
b25zZU9wdGlvbnMpfSxlfShCKTtHLmRlY29yYXRvcnM9W3t0eXBlOmQuen1dLEcuY3RvclBhcmFt
ZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6SX0se3R5cGU6eH1dfTsvKioKKyAqIEBsaWNl
bnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisg
KiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczov
L2FuZ3VsYXIuaW8vbGljZW5zZQorICovCit2YXIgej0vXlwpXF1cfScsP1xuLyxxPWZ1bmN0aW9u
KCl7ZnVuY3Rpb24gdCh0LGUsbil7dmFyIHI9dGhpczt0aGlzLnJlcXVlc3Q9dCx0aGlzLnJlc3Bv
bnNlPW5ldyB5Lk9ic2VydmFibGUoZnVuY3Rpb24oaSl7dmFyIHM9ZS5idWlsZCgpO3Mub3Blbihf
W3QubWV0aG9kXS50b1VwcGVyQ2FzZSgpLHQudXJsKSxudWxsIT10LndpdGhDcmVkZW50aWFscyYm
KHMud2l0aENyZWRlbnRpYWxzPXQud2l0aENyZWRlbnRpYWxzKTt2YXIgYT1mdW5jdGlvbigpe3Zh
ciBlPTEyMjM9PT1zLnN0YXR1cz8yMDQ6cy5zdGF0dXMscj1udWxsOzIwNCE9PWUmJiJzdHJpbmci
PT10eXBlb2Yocj12b2lkIDA9PT1zLnJlc3BvbnNlP3MucmVzcG9uc2VUZXh0OnMucmVzcG9uc2Up
JiYocj1yLnJlcGxhY2UoeiwiIikpLDA9PT1lJiYoZT1yPzIwMDowKTt2YXIgYT1PLmZyb21SZXNw
b25zZUhlYWRlclN0cmluZyhzLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKSx1PW8ocyl8fHQudXJs
LGM9cy5zdGF0dXNUZXh0fHwiT0siLGw9bmV3IHgoe2JvZHk6cixzdGF0dXM6ZSxoZWFkZXJzOmEs
c3RhdHVzVGV4dDpjLHVybDp1fSk7bnVsbCE9biYmKGw9bi5tZXJnZShsKSk7dmFyIHA9bmV3IE4o
bCk7aWYocC5vaz1UKGUpLHAub2spcmV0dXJuIGkubmV4dChwKSx2b2lkIGkuY29tcGxldGUoKTtp
LmVycm9yKHApfSx1PWZ1bmN0aW9uKHQpe3ZhciBlPW5ldyB4KHtib2R5OnQsdHlwZTp3LkVycm9y
LHN0YXR1czpzLnN0YXR1cyxzdGF0dXNUZXh0OnMuc3RhdHVzVGV4dH0pO251bGwhPW4mJihlPW4u
bWVyZ2UoZSkpLGkuZXJyb3IobmV3IE4oZSkpfTtpZihyLnNldERldGVjdGVkQ29udGVudFR5cGUo
dCxzKSxudWxsPT10LmhlYWRlcnMmJih0LmhlYWRlcnM9bmV3IE8pLHQuaGVhZGVycy5oYXMoIkFj
Y2VwdCIpfHx0LmhlYWRlcnMuYXBwZW5kKCJBY2NlcHQiLCJhcHBsaWNhdGlvbi9qc29uLCB0ZXh0
L3BsYWluLCAqLyoiKSx0LmhlYWRlcnMuZm9yRWFjaChmdW5jdGlvbih0LGUpe3JldHVybiBzLnNl
dFJlcXVlc3RIZWFkZXIoZSx0LmpvaW4oIiwiKSl9KSxudWxsIT10LnJlc3BvbnNlVHlwZSYmbnVs
bCE9cy5yZXNwb25zZVR5cGUpc3dpdGNoKHQucmVzcG9uc2VUeXBlKXtjYXNlIEUuQXJyYXlCdWZm
ZXI6cy5yZXNwb25zZVR5cGU9ImFycmF5YnVmZmVyIjticmVhaztjYXNlIEUuSnNvbjpzLnJlc3Bv
bnNlVHlwZT0ianNvbiI7YnJlYWs7Y2FzZSBFLlRleHQ6cy5yZXNwb25zZVR5cGU9InRleHQiO2Jy
ZWFrO2Nhc2UgRS5CbG9iOnMucmVzcG9uc2VUeXBlPSJibG9iIjticmVhaztkZWZhdWx0OnRocm93
IG5ldyBFcnJvcigiVGhlIHNlbGVjdGVkIHJlc3BvbnNlVHlwZSBpcyBub3Qgc3VwcG9ydGVkIil9
cmV0dXJuIHMuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsYSkscy5hZGRFdmVudExpc3RlbmVyKCJl
cnJvciIsdSkscy5zZW5kKHIucmVxdWVzdC5nZXRCb2R5KCkpLGZ1bmN0aW9uKCl7cy5yZW1vdmVF
dmVudExpc3RlbmVyKCJsb2FkIixhKSxzLnJlbW92ZUV2ZW50TGlzdGVuZXIoImVycm9yIix1KSxz
LmFib3J0KCl9fSl9cmV0dXJuIHQucHJvdG90eXBlLnNldERldGVjdGVkQ29udGVudFR5cGU9ZnVu
Y3Rpb24odCxlKXtpZihudWxsPT10LmhlYWRlcnN8fG51bGw9PXQuaGVhZGVycy5nZXQoIkNvbnRl
bnQtVHlwZSIpKXN3aXRjaCh0LmNvbnRlbnRUeXBlKXtjYXNlIEMuTk9ORTpicmVhaztjYXNlIEMu
SlNPTjplLnNldFJlcXVlc3RIZWFkZXIoImNvbnRlbnQtdHlwZSIsImFwcGxpY2F0aW9uL2pzb24i
KTticmVhaztjYXNlIEMuRk9STTplLnNldFJlcXVlc3RIZWFkZXIoImNvbnRlbnQtdHlwZSIsImFw
cGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PVVURi04Iik7YnJlYWs7Y2Fz
ZSBDLlRFWFQ6ZS5zZXRSZXF1ZXN0SGVhZGVyKCJjb250ZW50LXR5cGUiLCJ0ZXh0L3BsYWluIik7
YnJlYWs7Y2FzZSBDLkJMT0I6dmFyIG49dC5ibG9iKCk7bi50eXBlJiZlLnNldFJlcXVlc3RIZWFk
ZXIoImNvbnRlbnQtdHlwZSIsbi50eXBlKX19LHR9KCksWj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQo
dCxlKXt2b2lkIDA9PT10JiYodD0iWFNSRi1UT0tFTiIpLHZvaWQgMD09PWUmJihlPSJYLVhTUkYt
VE9LRU4iKSx0aGlzLl9jb29raWVOYW1lPXQsdGhpcy5faGVhZGVyTmFtZT1lfXJldHVybiB0LnBy
b3RvdHlwZS5jb25maWd1cmVSZXF1ZXN0PWZ1bmN0aW9uKHQpe3ZhciBlPW4uaShtLnUpKCkuZ2V0
Q29va2llKHRoaXMuX2Nvb2tpZU5hbWUpO2UmJnQuaGVhZGVycy5zZXQodGhpcy5faGVhZGVyTmFt
ZSxlKX0sdH0oKSxXPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbil7dGhpcy5fYnJvd3NlclhI
Uj10LHRoaXMuX2Jhc2VSZXNwb25zZU9wdGlvbnM9ZSx0aGlzLl94c3JmU3RyYXRlZ3k9bn1yZXR1
cm4gdC5wcm90b3R5cGUuY3JlYXRlQ29ubmVjdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5f
eHNyZlN0cmF0ZWd5LmNvbmZpZ3VyZVJlcXVlc3QodCksbmV3IHEodCx0aGlzLl9icm93c2VyWEhS
LHRoaXMuX2Jhc2VSZXNwb25zZU9wdGlvbnMpfSx0fSgpO1cuZGVjb3JhdG9ycz1be3R5cGU6ZC56
fV0sVy5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTp2fSx7dHlwZTp4fSx7
dHlwZTpBfV19Oy8qKgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8KK3ZhciBLPWZ1
bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt2YXIgZT12b2lkIDA9PT10P3t9OnQsbj1lLm1ldGhvZCxv
PWUuaGVhZGVycyxpPWUuYm9keSxzPWUudXJsLGE9ZS5zZWFyY2gsdT1lLnBhcmFtcyxjPWUud2l0
aENyZWRlbnRpYWxzLGw9ZS5yZXNwb25zZVR5cGU7dGhpcy5tZXRob2Q9bnVsbCE9bj9yKG4pOm51
bGwsdGhpcy5oZWFkZXJzPW51bGwhPW8/bzpudWxsLHRoaXMuYm9keT1udWxsIT1pP2k6bnVsbCx0
aGlzLnVybD1udWxsIT1zP3M6bnVsbCx0aGlzLnBhcmFtcz10aGlzLl9tZXJnZVNlYXJjaFBhcmFt
cyh1fHxhKSx0aGlzLndpdGhDcmVkZW50aWFscz1udWxsIT1jP2M6bnVsbCx0aGlzLnJlc3BvbnNl
VHlwZT1udWxsIT1sP2w6bnVsbH1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90
eXBlLCJzZWFyY2giLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJhbXN9LHNldDpmdW5j
dGlvbih0KXt0aGlzLnBhcmFtcz10fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQu
cHJvdG90eXBlLm1lcmdlPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgdCh7bWV0aG9kOmUmJm51bGwh
PWUubWV0aG9kP2UubWV0aG9kOnRoaXMubWV0aG9kLGhlYWRlcnM6ZSYmbnVsbCE9ZS5oZWFkZXJz
P2UuaGVhZGVyczpuZXcgTyh0aGlzLmhlYWRlcnMpLGJvZHk6ZSYmbnVsbCE9ZS5ib2R5P2UuYm9k
eTp0aGlzLmJvZHksdXJsOmUmJm51bGwhPWUudXJsP2UudXJsOnRoaXMudXJsLHBhcmFtczplJiZ0
aGlzLl9tZXJnZVNlYXJjaFBhcmFtcyhlLnBhcmFtc3x8ZS5zZWFyY2gpLHdpdGhDcmVkZW50aWFs
czplJiZudWxsIT1lLndpdGhDcmVkZW50aWFscz9lLndpdGhDcmVkZW50aWFsczp0aGlzLndpdGhD
cmVkZW50aWFscyxyZXNwb25zZVR5cGU6ZSYmbnVsbCE9ZS5yZXNwb25zZVR5cGU/ZS5yZXNwb25z
ZVR5cGU6dGhpcy5yZXNwb25zZVR5cGV9KX0sdC5wcm90b3R5cGUuX21lcmdlU2VhcmNoUGFyYW1z
PWZ1bmN0aW9uKHQpe3JldHVybiB0P3QgaW5zdGFuY2VvZiBWP3QuY2xvbmUoKToic3RyaW5nIj09
dHlwZW9mIHQ/bmV3IFYodCk6dGhpcy5fcGFyc2VQYXJhbXModCk6dGhpcy5wYXJhbXN9LHQucHJv
dG90eXBlLl9wYXJzZVBhcmFtcz1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3ZvaWQgMD09PXQmJih0
PXt9KTt2YXIgbj1uZXcgVjtyZXR1cm4gT2JqZWN0LmtleXModCkuZm9yRWFjaChmdW5jdGlvbihy
KXt2YXIgbz10W3JdO0FycmF5LmlzQXJyYXkobyk/by5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVy
biBlLl9hcHBlbmRQYXJhbShyLHQsbil9KTplLl9hcHBlbmRQYXJhbShyLG8sbil9KSxufSx0LnBy
b3RvdHlwZS5fYXBwZW5kUGFyYW09ZnVuY3Rpb24odCxlLG4peyJzdHJpbmciIT10eXBlb2YgZSYm
KGU9SlNPTi5zdHJpbmdpZnkoZSkpLG4uYXBwZW5kKHQsZSl9LHR9KCksWD1mdW5jdGlvbih0KXtm
dW5jdGlvbiBlKCl7cmV0dXJuIHQuY2FsbCh0aGlzLHttZXRob2Q6Xy5HZXQsaGVhZGVyczpuZXcg
T30pfHx0aGlzfXJldHVybiBnKGUsdCksZX0oSyk7WC5kZWNvcmF0b3JzPVt7dHlwZTpkLnp9XSxY
LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW119Oy8qKgorICogQGxpY2Vuc2UKKyAq
IENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxh
ci5pby9saWNlbnNlCisgKi8KK3ZhciBRPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7dmFyIG49
dC5jYWxsKHRoaXMpfHx0aGlzLG89ZS51cmw7aWYobi51cmw9ZS51cmwsZS5wYXJhbXMpe3ZhciBp
PWUucGFyYW1zLnRvU3RyaW5nKCk7aWYoaS5sZW5ndGg+MCl7dmFyIHM9Ij8iOy0xIT1uLnVybC5p
bmRleE9mKCI/IikmJihzPSImIj09bi51cmxbbi51cmwubGVuZ3RoLTFdPyIiOiImIiksbi51cmw9
bytzK2l9fXJldHVybiBuLl9ib2R5PWUuYm9keSxuLm1ldGhvZD1yKGUubWV0aG9kKSxuLmhlYWRl
cnM9bmV3IE8oZS5oZWFkZXJzKSxuLmNvbnRlbnRUeXBlPW4uZGV0ZWN0Q29udGVudFR5cGUoKSxu
LndpdGhDcmVkZW50aWFscz1lLndpdGhDcmVkZW50aWFscyxuLnJlc3BvbnNlVHlwZT1lLnJlc3Bv
bnNlVHlwZSxufXJldHVybiBnKGUsdCksZS5wcm90b3R5cGUuZGV0ZWN0Q29udGVudFR5cGU9ZnVu
Y3Rpb24oKXtzd2l0Y2godGhpcy5oZWFkZXJzLmdldCgiY29udGVudC10eXBlIikpe2Nhc2UiYXBw
bGljYXRpb24vanNvbiI6cmV0dXJuIEMuSlNPTjtjYXNlImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0t
dXJsZW5jb2RlZCI6cmV0dXJuIEMuRk9STTtjYXNlIm11bHRpcGFydC9mb3JtLWRhdGEiOnJldHVy
biBDLkZPUk1fREFUQTtjYXNlInRleHQvcGxhaW4iOmNhc2UidGV4dC9odG1sIjpyZXR1cm4gQy5U
RVhUO2Nhc2UiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIjpyZXR1cm4gdGhpcy5fYm9keSBpbnN0
YW5jZW9mIGV0P0MuQVJSQVlfQlVGRkVSOkMuQkxPQjtkZWZhdWx0OnJldHVybiB0aGlzLmRldGVj
dENvbnRlbnRUeXBlRnJvbUJvZHkoKX19LGUucHJvdG90eXBlLmRldGVjdENvbnRlbnRUeXBlRnJv
bUJvZHk9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09dGhpcy5fYm9keT9DLk5PTkU6dGhpcy5fYm9k
eSBpbnN0YW5jZW9mIFY/Qy5GT1JNOnRoaXMuX2JvZHkgaW5zdGFuY2VvZiBZP0MuRk9STV9EQVRB
OnRoaXMuX2JvZHkgaW5zdGFuY2VvZiB0dD9DLkJMT0I6dGhpcy5fYm9keSBpbnN0YW5jZW9mIGV0
P0MuQVJSQVlfQlVGRkVSOnRoaXMuX2JvZHkmJiJvYmplY3QiPT10eXBlb2YgdGhpcy5fYm9keT9D
LkpTT046Qy5URVhUfSxlLnByb3RvdHlwZS5nZXRCb2R5PWZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMu
Y29udGVudFR5cGUpe2Nhc2UgQy5KU09OOmNhc2UgQy5GT1JNOnJldHVybiB0aGlzLnRleHQoKTtj
YXNlIEMuRk9STV9EQVRBOnJldHVybiB0aGlzLl9ib2R5O2Nhc2UgQy5URVhUOnJldHVybiB0aGlz
LnRleHQoKTtjYXNlIEMuQkxPQjpyZXR1cm4gdGhpcy5ibG9iKCk7Y2FzZSBDLkFSUkFZX0JVRkZF
UjpyZXR1cm4gdGhpcy5hcnJheUJ1ZmZlcigpO2RlZmF1bHQ6cmV0dXJuIG51bGx9fSxlfShNKSxK
PWZ1bmN0aW9uKCl7fSwkPSJvYmplY3QiPT10eXBlb2Ygd2luZG93P3dpbmRvdzpKLFk9JC5Gb3Jt
RGF0YXx8Six0dD0kLkJsb2J8fEosZXQ9JC5BcnJheUJ1ZmZlcnx8SixudD1mdW5jdGlvbigpe2Z1
bmN0aW9uIHQodCxlKXt0aGlzLl9iYWNrZW5kPXQsdGhpcy5fZGVmYXVsdE9wdGlvbnM9ZX1yZXR1
cm4gdC5wcm90b3R5cGUucmVxdWVzdD1mdW5jdGlvbih0LGUpe3ZhciBuO2lmKCJzdHJpbmciPT10
eXBlb2YgdCluPWModGhpcy5fYmFja2VuZCxuZXcgUShsKHRoaXMuX2RlZmF1bHRPcHRpb25zLGUs
Xy5HZXQsdCkpKTtlbHNle2lmKCEodCBpbnN0YW5jZW9mIFEpKXRocm93IG5ldyBFcnJvcigiRmly
c3QgYXJndW1lbnQgbXVzdCBiZSBhIHVybCBzdHJpbmcgb3IgUmVxdWVzdCBpbnN0YW5jZS4iKTtu
PWModGhpcy5fYmFja2VuZCx0KX1yZXR1cm4gbn0sdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQs
ZSl7cmV0dXJuIHRoaXMucmVxdWVzdChuZXcgUShsKHRoaXMuX2RlZmF1bHRPcHRpb25zLGUsXy5H
ZXQsdCkpKX0sdC5wcm90b3R5cGUucG9zdD1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHRoaXMucmVx
dWVzdChuZXcgUShsKHRoaXMuX2RlZmF1bHRPcHRpb25zLm1lcmdlKG5ldyBLKHtib2R5OmV9KSks
bixfLlBvc3QsdCkpKX0sdC5wcm90b3R5cGUucHV0PWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdGhp
cy5yZXF1ZXN0KG5ldyBRKGwodGhpcy5fZGVmYXVsdE9wdGlvbnMubWVyZ2UobmV3IEsoe2JvZHk6
ZX0pKSxuLF8uUHV0LHQpKSl9LHQucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0LGUpe3JldHVy
biB0aGlzLnJlcXVlc3QobmV3IFEobCh0aGlzLl9kZWZhdWx0T3B0aW9ucyxlLF8uRGVsZXRlLHQp
KSl9LHQucHJvdG90eXBlLnBhdGNoPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdGhpcy5yZXF1ZXN0
KG5ldyBRKGwodGhpcy5fZGVmYXVsdE9wdGlvbnMubWVyZ2UobmV3IEsoe2JvZHk6ZX0pKSxuLF8u
UGF0Y2gsdCkpKX0sdC5wcm90b3R5cGUuaGVhZD1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnJl
cXVlc3QobmV3IFEobCh0aGlzLl9kZWZhdWx0T3B0aW9ucyxlLF8uSGVhZCx0KSkpfSx0LnByb3Rv
dHlwZS5vcHRpb25zPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucmVxdWVzdChuZXcgUShsKHRo
aXMuX2RlZmF1bHRPcHRpb25zLGUsXy5PcHRpb25zLHQpKSl9LHR9KCk7bnQuZGVjb3JhdG9ycz1b
e3R5cGU6ZC56fV0sbnQuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6UH0s
e3R5cGU6S31dfTt2YXIgcnQ9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4pe3JldHVybiB0LmNh
bGwodGhpcyxlLG4pfHx0aGlzfXJldHVybiBnKGUsdCksZS5wcm90b3R5cGUucmVxdWVzdD1mdW5j
dGlvbih0LGUpe2lmKCJzdHJpbmciPT10eXBlb2YgdCYmKHQ9bmV3IFEobCh0aGlzLl9kZWZhdWx0
T3B0aW9ucyxlLF8uR2V0LHQpKSksISh0IGluc3RhbmNlb2YgUSkpdGhyb3cgbmV3IEVycm9yKCJG
aXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgdXJsIHN0cmluZyBvciBSZXF1ZXN0IGluc3RhbmNlLiIp
O2lmKHQubWV0aG9kIT09Xy5HZXQpdGhyb3cgbmV3IEVycm9yKCJKU09OUCByZXF1ZXN0cyBtdXN0
IHVzZSBHRVQgcmVxdWVzdCBtZXRob2QuIik7cmV0dXJuIGModGhpcy5fYmFja2VuZCx0KX0sZX0o
bnQpO3J0LmRlY29yYXRvcnM9W3t0eXBlOmQuen1dLHJ0LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9u
KCl7cmV0dXJuW3t0eXBlOlB9LHt0eXBlOkt9XX07dmFyIG90PWZ1bmN0aW9uKCl7ZnVuY3Rpb24g
dCgpe31yZXR1cm4gdH0oKTtvdC5kZWNvcmF0b3JzPVt7dHlwZTpkLkEsYXJnczpbe3Byb3ZpZGVy
czpbe3Byb3ZpZGU6bnQsdXNlRmFjdG9yeTpmLGRlcHM6W1csS119LHYse3Byb3ZpZGU6Syx1c2VD
bGFzczpYfSx7cHJvdmlkZTp4LHVzZUNsYXNzOlN9LFcse3Byb3ZpZGU6QSx1c2VGYWN0b3J5OnB9
XX1dfV0sb3QuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5bXX07dmFyIGl0PWZ1bmN0
aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdH0oKTtpdC5kZWNvcmF0b3JzPVt7dHlwZTpkLkEs
YXJnczpbe3Byb3ZpZGVyczpbe3Byb3ZpZGU6cnQsdXNlRmFjdG9yeTpoLGRlcHM6W0IsS119LEks
e3Byb3ZpZGU6Syx1c2VDbGFzczpYfSx7cHJvdmlkZTp4LHVzZUNsYXNzOlN9LHtwcm92aWRlOkIs
dXNlQ2xhc3M6R31dfV19XSxpdC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVybltdfTsv
KioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCituZXcgZC5CKCI0LjAuMiIpfSxH
SWprOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9dGhpcyYmdGhpcy5fX2V4dGVu
ZHN8fGZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbigpe3RoaXMuY29uc3RydWN0b3I9dH1mb3IodmFy
IHIgaW4gZSllLmhhc093blByb3BlcnR5KHIpJiYodFtyXT1lW3JdKTt0LnByb3RvdHlwZT1udWxs
PT09ZT9PYmplY3QuY3JlYXRlKGUpOihuLnByb3RvdHlwZT1lLnByb3RvdHlwZSxuZXcgbil9LG89
ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXt0LmNhbGwodGhpcyksdGhpcy5lcnJvcnM9ZTt2YXIg
bj1FcnJvci5jYWxsKHRoaXMsZT9lLmxlbmd0aCsiIGVycm9ycyBvY2N1cnJlZCBkdXJpbmcgdW5z
dWJzY3JpcHRpb246XG4gICIrZS5tYXAoZnVuY3Rpb24odCxlKXtyZXR1cm4gZSsxKyIpICIrdC50
b1N0cmluZygpfSkuam9pbigiXG4gICIpOiIiKTt0aGlzLm5hbWU9bi5uYW1lPSJVbnN1YnNjcmlw
dGlvbkVycm9yIix0aGlzLnN0YWNrPW4uc3RhY2ssdGhpcy5tZXNzYWdlPW4ubWVzc2FnZX1yZXR1
cm4gcihlLHQpLGV9KEVycm9yKTtlLlVuc3Vic2NyaXB0aW9uRXJyb3I9b30sSUNwZzpmdW5jdGlv
bih0LGUsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIodCl7cmV0dXJuIG51bGwhPXQmJiJvYmpl
Y3QiPT10eXBlb2YgdH1lLmlzT2JqZWN0PXJ9LElaVnc6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3Ry
aWN0Ijt2YXIgcj10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBu
KCl7dGhpcy5jb25zdHJ1Y3Rvcj10fWZvcih2YXIgciBpbiBlKWUuaGFzT3duUHJvcGVydHkocikm
Jih0W3JdPWVbcl0pO3QucHJvdG90eXBlPW51bGw9PT1lP09iamVjdC5jcmVhdGUoZSk6KG4ucHJv
dG90eXBlPWUucHJvdG90eXBlLG5ldyBuKX0sbz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dmFy
IGU9dC5jYWxsKHRoaXMsIm9iamVjdCB1bnN1YnNjcmliZWQiKTt0aGlzLm5hbWU9ZS5uYW1lPSJP
YmplY3RVbnN1YnNjcmliZWRFcnJvciIsdGhpcy5zdGFjaz1lLnN0YWNrLHRoaXMubWVzc2FnZT1l
Lm1lc3NhZ2V9cmV0dXJuIHIoZSx0KSxlfShFcnJvcik7ZS5PYmplY3RVbnN1YnNjcmliZWRFcnJv
cj1vfSxOVk9zOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcih0KXtyZXR1
cm4gbnVsbD09dHx8MD09PXQubGVuZ3RofWZ1bmN0aW9uIG8odCl7cmV0dXJuIG51bGwhPXR9ZnVu
Y3Rpb24gaSh0KXt2YXIgZT1uLmkoTi5fNSkodCk/bi5pKFIuZnJvbVByb21pc2UpKHQpOnQ7aWYo
IW4uaShOLl82KShlKSl0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHZhbGlkYXRvciB0byByZXR1
cm4gUHJvbWlzZSBvciBPYnNlcnZhYmxlLiIpO3JldHVybiBlfWZ1bmN0aW9uIHModCxlKXtyZXR1
cm4gZS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUodCl9KX1mdW5jdGlvbiBhKHQsZSl7cmV0dXJu
IGUubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlKHQpfSl9ZnVuY3Rpb24gdSh0KXt2YXIgZT10LnJl
ZHVjZShmdW5jdGlvbih0LGUpe3JldHVybiBudWxsIT1lP1Uoe30sdCxlKTp0fSx7fSk7cmV0dXJu
IDA9PT1PYmplY3Qua2V5cyhlKS5sZW5ndGg/bnVsbDplfWZ1bmN0aW9uIGMoKXtyZXR1cm4vYW5k
cm9pZCAoXGQrKS8udGVzdCgobi5pKEkudSkoKT9uLmkoSS51KSgpLmdldFVzZXJBZ2VudCgpOiIi
KS50b0xvd2VyQ2FzZSgpKX0vKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCitm
dW5jdGlvbiBsKHQpe3JldHVybiB0LnZhbGlkYXRlP2Z1bmN0aW9uKGUpe3JldHVybiB0LnZhbGlk
YXRlKGUpfTp0fWZ1bmN0aW9uIHAodCl7cmV0dXJuIHQudmFsaWRhdGU/ZnVuY3Rpb24oZSl7cmV0
dXJuIHQudmFsaWRhdGUoZSl9OnR9LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2ds
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAq
LworZnVuY3Rpb24gZigpe3Rocm93IG5ldyBFcnJvcigidW5pbXBsZW1lbnRlZCIpfWZ1bmN0aW9u
IGgodCxlKXtyZXR1cm4gbnVsbD09dD8iIitlOihlJiYib2JqZWN0Ij09dHlwZW9mIGUmJihlPSJP
YmplY3QiKSwodCsiOiAiK2UpLnNsaWNlKDAsNTApKX1mdW5jdGlvbiBkKHQpe3JldHVybiB0LnNw
bGl0KCI6IilbMF19ZnVuY3Rpb24geSh0LGUpe3JldHVybiBudWxsPT10PyIiK2U6KCJzdHJpbmci
PT10eXBlb2YgZSYmKGU9IiciK2UrIiciKSxlJiYib2JqZWN0Ij09dHlwZW9mIGUmJihlPSJPYmpl
Y3QiKSwodCsiOiAiK2UpLnNsaWNlKDAsNTApKX1mdW5jdGlvbiBtKHQpe3JldHVybiB0LnNwbGl0
KCI6IilbMF19LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLworZnVuY3Rpb24g
Zyh0LGUpe3JldHVybiBlLnBhdGguY29uY2F0KFt0XSl9ZnVuY3Rpb24gdih0LGUpe3R8fEMoZSwi
Q2Fubm90IGZpbmQgY29udHJvbCB3aXRoIiksZS52YWx1ZUFjY2Vzc29yfHxDKGUsIk5vIHZhbHVl
IGFjY2Vzc29yIGZvciBmb3JtIGNvbnRyb2wgd2l0aCIpLHQudmFsaWRhdG9yPXEuY29tcG9zZShb
dC52YWxpZGF0b3IsZS52YWxpZGF0b3JdKSx0LmFzeW5jVmFsaWRhdG9yPXEuY29tcG9zZUFzeW5j
KFt0LmFzeW5jVmFsaWRhdG9yLGUuYXN5bmNWYWxpZGF0b3JdKSxlLnZhbHVlQWNjZXNzb3Iud3Jp
dGVWYWx1ZSh0LnZhbHVlKSxlLnZhbHVlQWNjZXNzb3IucmVnaXN0ZXJPbkNoYW5nZShmdW5jdGlv
bihuKXtlLnZpZXdUb01vZGVsVXBkYXRlKG4pLHQubWFya0FzRGlydHkoKSx0LnNldFZhbHVlKG4s
e2VtaXRNb2RlbFRvVmlld0NoYW5nZTohMX0pfSksZS52YWx1ZUFjY2Vzc29yLnJlZ2lzdGVyT25U
b3VjaGVkKGZ1bmN0aW9uKCl7cmV0dXJuIHQubWFya0FzVG91Y2hlZCgpfSksdC5yZWdpc3Rlck9u
Q2hhbmdlKGZ1bmN0aW9uKHQsbil7ZS52YWx1ZUFjY2Vzc29yLndyaXRlVmFsdWUodCksbiYmZS52
aWV3VG9Nb2RlbFVwZGF0ZSh0KX0pLGUudmFsdWVBY2Nlc3Nvci5zZXREaXNhYmxlZFN0YXRlJiZ0
LnJlZ2lzdGVyT25EaXNhYmxlZENoYW5nZShmdW5jdGlvbih0KXtlLnZhbHVlQWNjZXNzb3Iuc2V0
RGlzYWJsZWRTdGF0ZSh0KX0pLGUuX3Jhd1ZhbGlkYXRvcnMuZm9yRWFjaChmdW5jdGlvbihlKXtl
LnJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UmJmUucmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZShm
dW5jdGlvbigpe3JldHVybiB0LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKX0pfSksZS5fcmF3QXN5
bmNWYWxpZGF0b3JzLmZvckVhY2goZnVuY3Rpb24oZSl7ZS5yZWdpc3Rlck9uVmFsaWRhdG9yQ2hh
bmdlJiZlLnJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UoZnVuY3Rpb24oKXtyZXR1cm4gdC51cGRh
dGVWYWx1ZUFuZFZhbGlkaXR5KCl9KX0pfWZ1bmN0aW9uIF8odCxlKXtlLnZhbHVlQWNjZXNzb3Iu
cmVnaXN0ZXJPbkNoYW5nZShmdW5jdGlvbigpe3JldHVybiB3KGUpfSksZS52YWx1ZUFjY2Vzc29y
LnJlZ2lzdGVyT25Ub3VjaGVkKGZ1bmN0aW9uKCl7cmV0dXJuIHcoZSl9KSxlLl9yYXdWYWxpZGF0
b3JzLmZvckVhY2goZnVuY3Rpb24odCl7dC5yZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlJiZ0LnJl
Z2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UobnVsbCl9KSxlLl9yYXdBc3luY1ZhbGlkYXRvcnMuZm9y
RWFjaChmdW5jdGlvbih0KXt0LnJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UmJnQucmVnaXN0ZXJP
blZhbGlkYXRvckNoYW5nZShudWxsKX0pLHQmJnQuX2NsZWFyQ2hhbmdlRm5zKCl9ZnVuY3Rpb24g
Yih0LGUpe251bGw9PXQmJkMoZSwiQ2Fubm90IGZpbmQgY29udHJvbCB3aXRoIiksdC52YWxpZGF0
b3I9cS5jb21wb3NlKFt0LnZhbGlkYXRvcixlLnZhbGlkYXRvcl0pLHQuYXN5bmNWYWxpZGF0b3I9
cS5jb21wb3NlQXN5bmMoW3QuYXN5bmNWYWxpZGF0b3IsZS5hc3luY1ZhbGlkYXRvcl0pfWZ1bmN0
aW9uIHcodCl7cmV0dXJuIEModCwiVGhlcmUgaXMgbm8gRm9ybUNvbnRyb2wgaW5zdGFuY2UgYXR0
YWNoZWQgdG8gZm9ybSBjb250cm9sIGVsZW1lbnQgd2l0aCIpfWZ1bmN0aW9uIEModCxlKXt2YXIg
bjt0aHJvdyBuPXQucGF0aC5sZW5ndGg+MT8icGF0aDogJyIrdC5wYXRoLmpvaW4oIiAtPiAiKSsi
JyI6dC5wYXRoWzBdPyJuYW1lOiAnIit0LnBhdGgrIiciOiJ1bnNwZWNpZmllZCBuYW1lIGF0dHJp
YnV0ZSIsbmV3IEVycm9yKGUrIiAiK24pfWZ1bmN0aW9uIEUodCl7cmV0dXJuIG51bGwhPXQ/cS5j
b21wb3NlKHQubWFwKGwpKTpudWxsfWZ1bmN0aW9uIE8odCl7cmV0dXJuIG51bGwhPXQ/cS5jb21w
b3NlQXN5bmModC5tYXAocCkpOm51bGx9ZnVuY3Rpb24geCh0LGUpe2lmKCF0Lmhhc093blByb3Bl
cnR5KCJtb2RlbCIpKXJldHVybiExO3ZhciByPXQubW9kZWw7cmV0dXJuISFyLmlzRmlyc3RDaGFu
Z2UoKXx8IW4uaShOLl8xMSkoZSxyLmN1cnJlbnRWYWx1ZSl9ZnVuY3Rpb24gUyh0KXtyZXR1cm4g
ZnQuc29tZShmdW5jdGlvbihlKXtyZXR1cm4gdC5jb25zdHJ1Y3Rvcj09PWV9KX1mdW5jdGlvbiBQ
KHQsZSl7aWYoIWUpcmV0dXJuIG51bGw7dmFyIG4scixvO3JldHVybiBlLmZvckVhY2goZnVuY3Rp
b24oZSl7ZS5jb25zdHJ1Y3Rvcj09PUo/bj1lOlMoZSk/KHImJkModCwiTW9yZSB0aGFuIG9uZSBi
dWlsdC1pbiB2YWx1ZSBhY2Nlc3NvciBtYXRjaGVzIGZvcm0gY29udHJvbCB3aXRoIikscj1lKToo
byYmQyh0LCJNb3JlIHRoYW4gb25lIGN1c3RvbSB2YWx1ZSBhY2Nlc3NvciBtYXRjaGVzIGZvcm0g
Y29udHJvbCB3aXRoIiksbz1lKX0pLG98fChyfHwobnx8KEModCwiTm8gdmFsaWQgdmFsdWUgYWNj
ZXNzb3IgZm9yIGZvcm0gY29udHJvbCB3aXRoIiksbnVsbCkpKX1mdW5jdGlvbiBBKHQsZSxuKXty
ZXR1cm4gbnVsbD09ZT9udWxsOihlIGluc3RhbmNlb2YgQXJyYXl8fChlPWUuc3BsaXQobikpLGUg
aW5zdGFuY2VvZiBBcnJheSYmMD09PWUubGVuZ3RoP251bGw6ZS5yZWR1Y2UoZnVuY3Rpb24odCxl
KXtyZXR1cm4gdCBpbnN0YW5jZW9mIE90P3QuY29udHJvbHNbZV18fG51bGw6dCBpbnN0YW5jZW9m
IHh0P3QuYXQoZSl8fG51bGw6bnVsbH0sdCkpfWZ1bmN0aW9uIFQodCl7cmV0dXJuIEFycmF5Lmlz
QXJyYXkodCk/RSh0KTp0fWZ1bmN0aW9uIGsodCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/Tyh0
KTp0fWZ1bmN0aW9uIFYodCxlKXt2YXIgbj10LmluZGV4T2YoZSk7bj4tMSYmdC5zcGxpY2Uobiwx
KX1mdW5jdGlvbiBNKHQpe3JldHVybiEodCBpbnN0YW5jZW9mIEJ0fHx0IGluc3RhbmNlb2YgTHR8
fHQgaW5zdGFuY2VvZiB6dCl9dmFyIE49bigiM2ozSyIpLGo9bigiN3JCOSIpLFI9KG4ubihqKSxu
KCJpb0srIikpLEQ9KG4ubihSKSxuKCJ4QUpzIikpLEk9KG4ubihEKSxuKCJRYmRtIikpO24uZChl
LCJmIixmdW5jdGlvbigpe3JldHVybiBafSksbi5kKGUsImUiLGZ1bmN0aW9uKCl7cmV0dXJuIFF9
KSxuLmQoZSwiZCIsZnVuY3Rpb24oKXtyZXR1cm4gSn0pLG4uZChlLCJoIixmdW5jdGlvbigpe3Jl
dHVybiB0dH0pLG4uZChlLCJpIixmdW5jdGlvbigpe3JldHVybiBtdH0pLG4uZChlLCJnIixmdW5j
dGlvbigpe3JldHVybiBSdH0pLG4uZChlLCJjIixmdW5jdGlvbigpe3JldHVybiBwZX0pLG4uZChl
LCJiIixmdW5jdGlvbigpe3JldHVybiBsZX0pLG4uZChlLCJhIixmdW5jdGlvbigpe3JldHVybiBu
dH0pO3ZhciBGPXRoaXMmJnRoaXMuX19leHRlbmRzfHxmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4o
KXt0aGlzLmNvbnN0cnVjdG9yPXR9Zm9yKHZhciByIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShyKSYm
KHRbcl09ZVtyXSk7dC5wcm90b3R5cGU9bnVsbD09PWU/T2JqZWN0LmNyZWF0ZShlKToobi5wcm90
b3R5cGU9ZS5wcm90b3R5cGUsbmV3IG4pfSxIPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1
cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJjb250cm9sIix7Z2V0OmZ1bmN0
aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJ1bmltcGxlbWVudGVkIil9LGVudW1lcmFibGU6ITAsY29u
ZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJ2YWx1ZSIs
e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLnZhbHVlOm51
bGx9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5
KHQucHJvdG90eXBlLCJ2YWxpZCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnRyb2w/
dGhpcy5jb250cm9sLnZhbGlkOm51bGx9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSks
T2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJpbnZhbGlkIix7Z2V0OmZ1bmN0aW9u
KCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wuaW52YWxpZDpudWxsfSxlbnVtZXJh
YmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlw
ZSwicGVuZGluZyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250
cm9sLnBlbmRpbmc6bnVsbH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3Qu
ZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImVycm9ycyIse2dldDpmdW5jdGlvbigpe3JldHVy
biB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLmVycm9yczpudWxsfSxlbnVtZXJhYmxlOiEwLGNv
bmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwicHJpc3Rp
bmUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC5wcmlz
dGluZTpudWxsfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eSh0LnByb3RvdHlwZSwiZGlydHkiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5j
b250cm9sP3RoaXMuY29udHJvbC5kaXJ0eTpudWxsfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJs
ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidG91Y2hlZCIse2dldDpm
dW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLnRvdWNoZWQ6bnVsbH0s
ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5w
cm90b3R5cGUsInVudG91Y2hlZCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnRyb2w/
dGhpcy5jb250cm9sLnVudG91Y2hlZDpudWxsfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZToh
MH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiZGlzYWJsZWQiLHtnZXQ6ZnVu
Y3Rpb24oKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC5kaXNhYmxlZDpudWxsfSxl
bnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnBy
b3RvdHlwZSwiZW5hYmxlZCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhp
cy5jb250cm9sLmVuYWJsZWQ6bnVsbH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxP
YmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInN0YXR1c0NoYW5nZXMiLHtnZXQ6ZnVu
Y3Rpb24oKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC5zdGF0dXNDaGFuZ2VzOm51
bGx9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5
KHQucHJvdG90eXBlLCJ2YWx1ZUNoYW5nZXMiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5j
b250cm9sP3RoaXMuY29udHJvbC52YWx1ZUNoYW5nZXM6bnVsbH0sZW51bWVyYWJsZTohMCxjb25m
aWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInBhdGgiLHtn
ZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9
KSx0LnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbih0KXt2b2lkIDA9PT10JiYodD12b2lkIDApLHRo
aXMuY29udHJvbCYmdGhpcy5jb250cm9sLnJlc2V0KHQpfSx0LnByb3RvdHlwZS5oYXNFcnJvcj1m
dW5jdGlvbih0LGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT1udWxsKSwhIXRoaXMuY29udHJvbCYm
dGhpcy5jb250cm9sLmhhc0Vycm9yKHQsZSl9LHQucHJvdG90eXBlLmdldEVycm9yPWZ1bmN0aW9u
KHQsZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPW51bGwpLHRoaXMuY29udHJvbD90aGlzLmNvbnRy
b2wuZ2V0RXJyb3IodCxlKTpudWxsfSx0fSgpLEw9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3Jl
dHVybiBudWxsIT09dCYmdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9cmV0dXJuIEYoZSx0
KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImZvcm1EaXJlY3RpdmUiLHtnZXQ6
ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxP
YmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInBhdGgiLHtnZXQ6ZnVuY3Rpb24oKXty
ZXR1cm4gbnVsbH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxlfShIKSxVPU9iamVj
dC5hc3NpZ258fGZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxuPTEscj1hcmd1bWVudHMubGVuZ3RoO248
cjtuKyspe2U9YXJndW1lbnRzW25dO2Zvcih2YXIgbyBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFz
T3duUHJvcGVydHkuY2FsbChlLG8pJiYodFtvXT1lW29dKX1yZXR1cm4gdH0sQj1uZXcgTi5EKCJO
Z1ZhbGlkYXRvcnMiKSxHPW5ldyBOLkQoIk5nQXN5bmNWYWxpZGF0b3JzIiksej0vXig/PS57MSwy
NTR9JCkoPz0uezEsNjR9QClbLSEjJCUmJyorXC8wLTk9P0EtWl5fYGEtent8fX5dKyhcLlstISMk
JSYnKitcLzAtOT0/QS1aXl9gYS16e3x9fl0rKSpAW0EtWmEtejAtOV0oW0EtWmEtejAtOS1dezAs
NjF9W0EtWmEtejAtOV0pPyhcLltBLVphLXowLTldKFtBLVphLXowLTktXXswLDYxfVtBLVphLXow
LTldKT8pKiQvLHE9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnJlcXVpcmVkPWZ1
bmN0aW9uKHQpe3JldHVybiByKHQudmFsdWUpP3tyZXF1aXJlZDohMH06bnVsbH0sdC5yZXF1aXJl
ZFRydWU9ZnVuY3Rpb24odCl7cmV0dXJuITA9PT10LnZhbHVlP251bGw6e3JlcXVpcmVkOiEwfX0s
dC5lbWFpbD1mdW5jdGlvbih0KXtyZXR1cm4gei50ZXN0KHQudmFsdWUpP251bGw6e2VtYWlsOiEw
fX0sdC5taW5MZW5ndGg9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKHIoZS52YWx1
ZSkpcmV0dXJuIG51bGw7dmFyIG49ZS52YWx1ZT9lLnZhbHVlLmxlbmd0aDowO3JldHVybiBuPHQ/
e21pbmxlbmd0aDp7cmVxdWlyZWRMZW5ndGg6dCxhY3R1YWxMZW5ndGg6bn19Om51bGx9fSx0Lm1h
eExlbmd0aD1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIG49ZS52YWx1ZT9lLnZh
bHVlLmxlbmd0aDowO3JldHVybiBuPnQ/e21heGxlbmd0aDp7cmVxdWlyZWRMZW5ndGg6dCxhY3R1
YWxMZW5ndGg6bn19Om51bGx9fSx0LnBhdHRlcm49ZnVuY3Rpb24oZSl7aWYoIWUpcmV0dXJuIHQu
bnVsbFZhbGlkYXRvcjt2YXIgbixvO3JldHVybiJzdHJpbmciPT10eXBlb2YgZT8obz0iXiIrZSsi
JCIsbj1uZXcgUmVnRXhwKG8pKToobz1lLnRvU3RyaW5nKCksbj1lKSxmdW5jdGlvbih0KXtpZihy
KHQudmFsdWUpKXJldHVybiBudWxsO3ZhciBlPXQudmFsdWU7cmV0dXJuIG4udGVzdChlKT9udWxs
OntwYXR0ZXJuOntyZXF1aXJlZFBhdHRlcm46byxhY3R1YWxWYWx1ZTplfX19fSx0Lm51bGxWYWxp
ZGF0b3I9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGx9LHQuY29tcG9zZT1mdW5jdGlvbih0KXtpZigh
dClyZXR1cm4gbnVsbDt2YXIgZT10LmZpbHRlcihvKTtyZXR1cm4gMD09ZS5sZW5ndGg/bnVsbDpm
dW5jdGlvbih0KXtyZXR1cm4gdShzKHQsZSkpfX0sdC5jb21wb3NlQXN5bmM9ZnVuY3Rpb24odCl7
aWYoIXQpcmV0dXJuIG51bGw7dmFyIGU9dC5maWx0ZXIobyk7cmV0dXJuIDA9PWUubGVuZ3RoP251
bGw6ZnVuY3Rpb24odCl7dmFyIHI9YSh0LGUpLm1hcChpKTtyZXR1cm4gRC5tYXAuY2FsbChuLmko
ai5mb3JrSm9pbikociksdSl9fSx0fSgpLFo9bmV3IE4uRCgiTmdWYWx1ZUFjY2Vzc29yIiksVz17
cHJvdmlkZTpaLHVzZUV4aXN0aW5nOm4uaShOLl85KShmdW5jdGlvbigpe3JldHVybiBLfSksbXVs
dGk6ITB9LEs9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7dGhpcy5fcmVuZGVyZXI9dCx0aGlz
Ll9lbGVtZW50UmVmPWUsdGhpcy5vbkNoYW5nZT1mdW5jdGlvbih0KXt9LHRoaXMub25Ub3VjaGVk
PWZ1bmN0aW9uKCl7fX1yZXR1cm4gdC5wcm90b3R5cGUud3JpdGVWYWx1ZT1mdW5jdGlvbih0KXt0
aGlzLl9yZW5kZXJlci5zZXRFbGVtZW50UHJvcGVydHkodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVF
bGVtZW50LCJjaGVja2VkIix0KX0sdC5wcm90b3R5cGUucmVnaXN0ZXJPbkNoYW5nZT1mdW5jdGlv
bih0KXt0aGlzLm9uQ2hhbmdlPXR9LHQucHJvdG90eXBlLnJlZ2lzdGVyT25Ub3VjaGVkPWZ1bmN0
aW9uKHQpe3RoaXMub25Ub3VjaGVkPXR9LHQucHJvdG90eXBlLnNldERpc2FibGVkU3RhdGU9ZnVu
Y3Rpb24odCl7dGhpcy5fcmVuZGVyZXIuc2V0RWxlbWVudFByb3BlcnR5KHRoaXMuX2VsZW1lbnRS
ZWYubmF0aXZlRWxlbWVudCwiZGlzYWJsZWQiLHQpfSx0fSgpO0suZGVjb3JhdG9ycz1be3R5cGU6
Ti5VLGFyZ3M6W3tzZWxlY3RvcjoiaW5wdXRbdHlwZT1jaGVja2JveF1bZm9ybUNvbnRyb2xOYW1l
XSxpbnB1dFt0eXBlPWNoZWNrYm94XVtmb3JtQ29udHJvbF0saW5wdXRbdHlwZT1jaGVja2JveF1b
bmdNb2RlbF0iLGhvc3Q6eyIoY2hhbmdlKSI6Im9uQ2hhbmdlKCRldmVudC50YXJnZXQuY2hlY2tl
ZCkiLCIoYmx1cikiOiJvblRvdWNoZWQoKSJ9LHByb3ZpZGVyczpbV119XX1dLEsuY3RvclBhcmFt
ZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6Ti5XfSx7dHlwZTpOLlZ9XX07LyoqCisgKiBA
bGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisg
KgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0
cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFyIFg9e3Byb3ZpZGU6Wix1c2VFeGlzdGlu
ZzpuLmkoTi5fOSkoZnVuY3Rpb24oKXtyZXR1cm4gSn0pLG11bHRpOiEwfSxRPW5ldyBOLkQoIkNv
bXBvc2l0aW9uRXZlbnRNb2RlIiksSj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4pe3RoaXMu
X3JlbmRlcmVyPXQsdGhpcy5fZWxlbWVudFJlZj1lLHRoaXMuX2NvbXBvc2l0aW9uTW9kZT1uLHRo
aXMub25DaGFuZ2U9ZnVuY3Rpb24odCl7fSx0aGlzLm9uVG91Y2hlZD1mdW5jdGlvbigpe30sdGhp
cy5fY29tcG9zaW5nPSExLG51bGw9PXRoaXMuX2NvbXBvc2l0aW9uTW9kZSYmKHRoaXMuX2NvbXBv
c2l0aW9uTW9kZT0hYygpKX1yZXR1cm4gdC5wcm90b3R5cGUud3JpdGVWYWx1ZT1mdW5jdGlvbih0
KXt2YXIgZT1udWxsPT10PyIiOnQ7dGhpcy5fcmVuZGVyZXIuc2V0RWxlbWVudFByb3BlcnR5KHRo
aXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwidmFsdWUiLGUpfSx0LnByb3RvdHlwZS5yZWdp
c3Rlck9uQ2hhbmdlPWZ1bmN0aW9uKHQpe3RoaXMub25DaGFuZ2U9dH0sdC5wcm90b3R5cGUucmVn
aXN0ZXJPblRvdWNoZWQ9ZnVuY3Rpb24odCl7dGhpcy5vblRvdWNoZWQ9dH0sdC5wcm90b3R5cGUu
c2V0RGlzYWJsZWRTdGF0ZT1mdW5jdGlvbih0KXt0aGlzLl9yZW5kZXJlci5zZXRFbGVtZW50UHJv
cGVydHkodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCJkaXNhYmxlZCIsdCl9LHQucHJv
dG90eXBlLl9oYW5kbGVJbnB1dD1mdW5jdGlvbih0KXsoIXRoaXMuX2NvbXBvc2l0aW9uTW9kZXx8
dGhpcy5fY29tcG9zaXRpb25Nb2RlJiYhdGhpcy5fY29tcG9zaW5nKSYmdGhpcy5vbkNoYW5nZSh0
KX0sdC5wcm90b3R5cGUuX2NvbXBvc2l0aW9uU3RhcnQ9ZnVuY3Rpb24oKXt0aGlzLl9jb21wb3Np
bmc9ITB9LHQucHJvdG90eXBlLl9jb21wb3NpdGlvbkVuZD1mdW5jdGlvbih0KXt0aGlzLl9jb21w
b3Npbmc9ITEsdGhpcy5fY29tcG9zaXRpb25Nb2RlJiZ0aGlzLm9uQ2hhbmdlKHQpfSx0fSgpO0ou
ZGVjb3JhdG9ycz1be3R5cGU6Ti5VLGFyZ3M6W3tzZWxlY3RvcjoiaW5wdXQ6bm90KFt0eXBlPWNo
ZWNrYm94XSlbZm9ybUNvbnRyb2xOYW1lXSx0ZXh0YXJlYVtmb3JtQ29udHJvbE5hbWVdLGlucHV0
Om5vdChbdHlwZT1jaGVja2JveF0pW2Zvcm1Db250cm9sXSx0ZXh0YXJlYVtmb3JtQ29udHJvbF0s
aW5wdXQ6bm90KFt0eXBlPWNoZWNrYm94XSlbbmdNb2RlbF0sdGV4dGFyZWFbbmdNb2RlbF0sW25n
RGVmYXVsdENvbnRyb2xdIixob3N0OnsiKGlucHV0KSI6Il9oYW5kbGVJbnB1dCgkZXZlbnQudGFy
Z2V0LnZhbHVlKSIsIihibHVyKSI6Im9uVG91Y2hlZCgpIiwiKGNvbXBvc2l0aW9uc3RhcnQpIjoi
X2NvbXBvc2l0aW9uU3RhcnQoKSIsIihjb21wb3NpdGlvbmVuZCkiOiJfY29tcG9zaXRpb25FbmQo
JGV2ZW50LnRhcmdldC52YWx1ZSkifSxwcm92aWRlcnM6W1hdfV19XSxKLmN0b3JQYXJhbWV0ZXJz
PWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOk4uV30se3R5cGU6Ti5WfSx7dHlwZTp2b2lkIDAsZGVj
b3JhdG9yczpbe3R5cGU6Ti5IfSx7dHlwZTpOLkUsYXJnczpbUV19XX1dfTsvKioKKyAqIEBsaWNl
bnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisg
KiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczov
L2FuZ3VsYXIuaW8vbGljZW5zZQorICovCit2YXIgJD17cHJvdmlkZTpaLHVzZUV4aXN0aW5nOm4u
aShOLl85KShmdW5jdGlvbigpe3JldHVybiBZfSksbXVsdGk6ITB9LFk9ZnVuY3Rpb24oKXtmdW5j
dGlvbiB0KHQsZSl7dGhpcy5fcmVuZGVyZXI9dCx0aGlzLl9lbGVtZW50UmVmPWUsdGhpcy5vbkNo
YW5nZT1mdW5jdGlvbih0KXt9LHRoaXMub25Ub3VjaGVkPWZ1bmN0aW9uKCl7fX1yZXR1cm4gdC5w
cm90b3R5cGUud3JpdGVWYWx1ZT1mdW5jdGlvbih0KXt2YXIgZT1udWxsPT10PyIiOnQ7dGhpcy5f
cmVuZGVyZXIuc2V0RWxlbWVudFByb3BlcnR5KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVu
dCwidmFsdWUiLGUpfSx0LnByb3RvdHlwZS5yZWdpc3Rlck9uQ2hhbmdlPWZ1bmN0aW9uKHQpe3Ro
aXMub25DaGFuZ2U9ZnVuY3Rpb24oZSl7dCgiIj09ZT9udWxsOnBhcnNlRmxvYXQoZSkpfX0sdC5w
cm90b3R5cGUucmVnaXN0ZXJPblRvdWNoZWQ9ZnVuY3Rpb24odCl7dGhpcy5vblRvdWNoZWQ9dH0s
dC5wcm90b3R5cGUuc2V0RGlzYWJsZWRTdGF0ZT1mdW5jdGlvbih0KXt0aGlzLl9yZW5kZXJlci5z
ZXRFbGVtZW50UHJvcGVydHkodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCJkaXNhYmxl
ZCIsdCl9LHR9KCk7WS5kZWNvcmF0b3JzPVt7dHlwZTpOLlUsYXJnczpbe3NlbGVjdG9yOiJpbnB1
dFt0eXBlPW51bWJlcl1bZm9ybUNvbnRyb2xOYW1lXSxpbnB1dFt0eXBlPW51bWJlcl1bZm9ybUNv
bnRyb2xdLGlucHV0W3R5cGU9bnVtYmVyXVtuZ01vZGVsXSIsaG9zdDp7IihjaGFuZ2UpIjoib25D
aGFuZ2UoJGV2ZW50LnRhcmdldC52YWx1ZSkiLCIoaW5wdXQpIjoib25DaGFuZ2UoJGV2ZW50LnRh
cmdldC52YWx1ZSkiLCIoYmx1cikiOiJvblRvdWNoZWQoKSJ9LHByb3ZpZGVyczpbJF19XX1dLFku
Y3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6Ti5XfSx7dHlwZTpOLlZ9XX07
dmFyIHR0PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt2YXIgZT10LmFwcGx5KHRoaXMsYXJndW1l
bnRzKXx8dGhpcztyZXR1cm4gZS5fcGFyZW50PW51bGwsZS5uYW1lPW51bGwsZS52YWx1ZUFjY2Vz
c29yPW51bGwsZS5fcmF3VmFsaWRhdG9ycz1bXSxlLl9yYXdBc3luY1ZhbGlkYXRvcnM9W10sZX1y
ZXR1cm4gRihlLHQpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwidmFsaWRhdG9y
Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGYoKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6
ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImFzeW5jVmFsaWRhdG9yIix7
Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGYoKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9
KSxlLnByb3RvdHlwZS52aWV3VG9Nb2RlbFVwZGF0ZT1mdW5jdGlvbih0KXt9LGV9KEgpLGV0PXtw
cm92aWRlOlosdXNlRXhpc3Rpbmc6bi5pKE4uXzkpKGZ1bmN0aW9uKCl7cmV0dXJuIHJ0fSksbXVs
dGk6ITB9LG50PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3RoaXMuX2FjY2Vzc29ycz1bXX1yZXR1
cm4gdC5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKHQsZSl7dGhpcy5fYWNjZXNzb3JzLnB1c2goW3Qs
ZV0pfSx0LnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMuX2FjY2Vz
c29ycy5sZW5ndGgtMTtlPj0wOy0tZSlpZih0aGlzLl9hY2Nlc3NvcnNbZV1bMV09PT10KXJldHVy
biB2b2lkIHRoaXMuX2FjY2Vzc29ycy5zcGxpY2UoZSwxKX0sdC5wcm90b3R5cGUuc2VsZWN0PWZ1
bmN0aW9uKHQpe3ZhciBlPXRoaXM7dGhpcy5fYWNjZXNzb3JzLmZvckVhY2goZnVuY3Rpb24obil7
ZS5faXNTYW1lR3JvdXAobix0KSYmblsxXSE9PXQmJm5bMV0uZmlyZVVuY2hlY2sodC52YWx1ZSl9
KX0sdC5wcm90b3R5cGUuX2lzU2FtZUdyb3VwPWZ1bmN0aW9uKHQsZSl7cmV0dXJuISF0WzBdLmNv
bnRyb2wmJih0WzBdLl9wYXJlbnQ9PT1lLl9jb250cm9sLl9wYXJlbnQmJnRbMV0ubmFtZT09PWUu
bmFtZSl9LHR9KCk7bnQuZGVjb3JhdG9ycz1be3R5cGU6Ti56fV0sbnQuY3RvclBhcmFtZXRlcnM9
ZnVuY3Rpb24oKXtyZXR1cm5bXX07dmFyIHJ0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbixy
KXt0aGlzLl9yZW5kZXJlcj10LHRoaXMuX2VsZW1lbnRSZWY9ZSx0aGlzLl9yZWdpc3RyeT1uLHRo
aXMuX2luamVjdG9yPXIsdGhpcy5vbkNoYW5nZT1mdW5jdGlvbigpe30sdGhpcy5vblRvdWNoZWQ9
ZnVuY3Rpb24oKXt9fXJldHVybiB0LnByb3RvdHlwZS5uZ09uSW5pdD1mdW5jdGlvbigpe3RoaXMu
X2NvbnRyb2w9dGhpcy5faW5qZWN0b3IuZ2V0KHR0KSx0aGlzLl9jaGVja05hbWUoKSx0aGlzLl9y
ZWdpc3RyeS5hZGQodGhpcy5fY29udHJvbCx0aGlzKX0sdC5wcm90b3R5cGUubmdPbkRlc3Ryb3k9
ZnVuY3Rpb24oKXt0aGlzLl9yZWdpc3RyeS5yZW1vdmUodGhpcyl9LHQucHJvdG90eXBlLndyaXRl
VmFsdWU9ZnVuY3Rpb24odCl7dGhpcy5fc3RhdGU9dD09PXRoaXMudmFsdWUsdGhpcy5fcmVuZGVy
ZXIuc2V0RWxlbWVudFByb3BlcnR5KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwiY2hl
Y2tlZCIsdGhpcy5fc3RhdGUpfSx0LnByb3RvdHlwZS5yZWdpc3Rlck9uQ2hhbmdlPWZ1bmN0aW9u
KHQpe3ZhciBlPXRoaXM7dGhpcy5fZm49dCx0aGlzLm9uQ2hhbmdlPWZ1bmN0aW9uKCl7dChlLnZh
bHVlKSxlLl9yZWdpc3RyeS5zZWxlY3QoZSl9fSx0LnByb3RvdHlwZS5maXJlVW5jaGVjaz1mdW5j
dGlvbih0KXt0aGlzLndyaXRlVmFsdWUodCl9LHQucHJvdG90eXBlLnJlZ2lzdGVyT25Ub3VjaGVk
PWZ1bmN0aW9uKHQpe3RoaXMub25Ub3VjaGVkPXR9LHQucHJvdG90eXBlLnNldERpc2FibGVkU3Rh
dGU9ZnVuY3Rpb24odCl7dGhpcy5fcmVuZGVyZXIuc2V0RWxlbWVudFByb3BlcnR5KHRoaXMuX2Vs
ZW1lbnRSZWYubmF0aXZlRWxlbWVudCwiZGlzYWJsZWQiLHQpfSx0LnByb3RvdHlwZS5fY2hlY2tO
YW1lPWZ1bmN0aW9uKCl7dGhpcy5uYW1lJiZ0aGlzLmZvcm1Db250cm9sTmFtZSYmdGhpcy5uYW1l
IT09dGhpcy5mb3JtQ29udHJvbE5hbWUmJnRoaXMuX3Rocm93TmFtZUVycm9yKCksIXRoaXMubmFt
ZSYmdGhpcy5mb3JtQ29udHJvbE5hbWUmJih0aGlzLm5hbWU9dGhpcy5mb3JtQ29udHJvbE5hbWUp
fSx0LnByb3RvdHlwZS5fdGhyb3dOYW1lRXJyb3I9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3Io
J1xuICAgICAgSWYgeW91IGRlZmluZSBib3RoIGEgbmFtZSBhbmQgYSBmb3JtQ29udHJvbE5hbWUg
YXR0cmlidXRlIG9uIHlvdXIgcmFkaW8gYnV0dG9uLCB0aGVpciB2YWx1ZXNcbiAgICAgIG11c3Qg
bWF0Y2guIEV4OiA8aW5wdXQgdHlwZT0icmFkaW8iIGZvcm1Db250cm9sTmFtZT0iZm9vZCIgbmFt
ZT0iZm9vZCI+XG4gICAgJyl9LHR9KCk7cnQuZGVjb3JhdG9ycz1be3R5cGU6Ti5VLGFyZ3M6W3tz
ZWxlY3RvcjoiaW5wdXRbdHlwZT1yYWRpb11bZm9ybUNvbnRyb2xOYW1lXSxpbnB1dFt0eXBlPXJh
ZGlvXVtmb3JtQ29udHJvbF0saW5wdXRbdHlwZT1yYWRpb11bbmdNb2RlbF0iLGhvc3Q6eyIoY2hh
bmdlKSI6Im9uQ2hhbmdlKCkiLCIoYmx1cikiOiJvblRvdWNoZWQoKSJ9LHByb3ZpZGVyczpbZXRd
fV19XSxydC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTpOLld9LHt0eXBl
Ok4uVn0se3R5cGU6bnR9LHt0eXBlOk4uXzEwfV19LHJ0LnByb3BEZWNvcmF0b3JzPXtuYW1lOlt7
dHlwZTpOLlh9XSxmb3JtQ29udHJvbE5hbWU6W3t0eXBlOk4uWH1dLHZhbHVlOlt7dHlwZTpOLlh9
XX07LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFyIG90PXtwcm92aWRl
OlosdXNlRXhpc3Rpbmc6bi5pKE4uXzkpKGZ1bmN0aW9uKCl7cmV0dXJuIGl0fSksbXVsdGk6ITB9
LGl0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3RoaXMuX3JlbmRlcmVyPXQsdGhpcy5fZWxl
bWVudFJlZj1lLHRoaXMub25DaGFuZ2U9ZnVuY3Rpb24odCl7fSx0aGlzLm9uVG91Y2hlZD1mdW5j
dGlvbigpe319cmV0dXJuIHQucHJvdG90eXBlLndyaXRlVmFsdWU9ZnVuY3Rpb24odCl7dGhpcy5f
cmVuZGVyZXIuc2V0RWxlbWVudFByb3BlcnR5KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVu
dCwidmFsdWUiLHBhcnNlRmxvYXQodCkpfSx0LnByb3RvdHlwZS5yZWdpc3Rlck9uQ2hhbmdlPWZ1
bmN0aW9uKHQpe3RoaXMub25DaGFuZ2U9ZnVuY3Rpb24oZSl7dCgiIj09ZT9udWxsOnBhcnNlRmxv
YXQoZSkpfX0sdC5wcm90b3R5cGUucmVnaXN0ZXJPblRvdWNoZWQ9ZnVuY3Rpb24odCl7dGhpcy5v
blRvdWNoZWQ9dH0sdC5wcm90b3R5cGUuc2V0RGlzYWJsZWRTdGF0ZT1mdW5jdGlvbih0KXt0aGlz
Ll9yZW5kZXJlci5zZXRFbGVtZW50UHJvcGVydHkodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVt
ZW50LCJkaXNhYmxlZCIsdCl9LHR9KCk7aXQuZGVjb3JhdG9ycz1be3R5cGU6Ti5VLGFyZ3M6W3tz
ZWxlY3RvcjoiaW5wdXRbdHlwZT1yYW5nZV1bZm9ybUNvbnRyb2xOYW1lXSxpbnB1dFt0eXBlPXJh
bmdlXVtmb3JtQ29udHJvbF0saW5wdXRbdHlwZT1yYW5nZV1bbmdNb2RlbF0iLGhvc3Q6eyIoY2hh
bmdlKSI6Im9uQ2hhbmdlKCRldmVudC50YXJnZXQudmFsdWUpIiwiKGlucHV0KSI6Im9uQ2hhbmdl
KCRldmVudC50YXJnZXQudmFsdWUpIiwiKGJsdXIpIjoib25Ub3VjaGVkKCkifSxwcm92aWRlcnM6
W290XX1dfV0saXQuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6Ti5XfSx7
dHlwZTpOLlZ9XX07LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFyIHN0
PXtwcm92aWRlOlosdXNlRXhpc3Rpbmc6bi5pKE4uXzkpKGZ1bmN0aW9uKCl7cmV0dXJuIGF0fSks
bXVsdGk6ITB9LGF0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3RoaXMuX3JlbmRlcmVyPXQs
dGhpcy5fZWxlbWVudFJlZj1lLHRoaXMuX29wdGlvbk1hcD1uZXcgTWFwLHRoaXMuX2lkQ291bnRl
cj0wLHRoaXMub25DaGFuZ2U9ZnVuY3Rpb24odCl7fSx0aGlzLm9uVG91Y2hlZD1mdW5jdGlvbigp
e30sdGhpcy5fY29tcGFyZVdpdGg9Ti5fMTF9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0
LnByb3RvdHlwZSwiY29tcGFyZVdpdGgiLHtzZXQ6ZnVuY3Rpb24odCl7aWYoImZ1bmN0aW9uIiE9
dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yKCJjb21wYXJlV2l0aCBtdXN0IGJlIGEgZnVuY3Rpb24s
IGJ1dCByZWNlaXZlZCAiK0pTT04uc3RyaW5naWZ5KHQpKTt0aGlzLl9jb21wYXJlV2l0aD10fSxl
bnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLndyaXRlVmFsdWU9ZnVu
Y3Rpb24odCl7dGhpcy52YWx1ZT10O3ZhciBlPXRoaXMuX2dldE9wdGlvbklkKHQpO251bGw9PWUm
JnRoaXMuX3JlbmRlcmVyLnNldEVsZW1lbnRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2
ZUVsZW1lbnQsInNlbGVjdGVkSW5kZXgiLC0xKTt2YXIgbj1oKGUsdCk7dGhpcy5fcmVuZGVyZXIu
c2V0RWxlbWVudFByb3BlcnR5KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwidmFsdWUi
LG4pfSx0LnByb3RvdHlwZS5yZWdpc3Rlck9uQ2hhbmdlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7
dGhpcy5vbkNoYW5nZT1mdW5jdGlvbihuKXtlLnZhbHVlPW4sdChlLl9nZXRPcHRpb25WYWx1ZShu
KSl9fSx0LnByb3RvdHlwZS5yZWdpc3Rlck9uVG91Y2hlZD1mdW5jdGlvbih0KXt0aGlzLm9uVG91
Y2hlZD10fSx0LnByb3RvdHlwZS5zZXREaXNhYmxlZFN0YXRlPWZ1bmN0aW9uKHQpe3RoaXMuX3Jl
bmRlcmVyLnNldEVsZW1lbnRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQs
ImRpc2FibGVkIix0KX0sdC5wcm90b3R5cGUuX3JlZ2lzdGVyT3B0aW9uPWZ1bmN0aW9uKCl7cmV0
dXJuKHRoaXMuX2lkQ291bnRlcisrKS50b1N0cmluZygpfSx0LnByb3RvdHlwZS5fZ2V0T3B0aW9u
SWQ9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTAsbj1BcnJheS5mcm9tKHRoaXMuX29wdGlvbk1hcC5r
ZXlzKCkpO2U8bi5sZW5ndGg7ZSsrKXt2YXIgcj1uW2VdO2lmKHRoaXMuX2NvbXBhcmVXaXRoKHRo
aXMuX29wdGlvbk1hcC5nZXQociksdCkpcmV0dXJuIHJ9cmV0dXJuIG51bGx9LHQucHJvdG90eXBl
Ll9nZXRPcHRpb25WYWx1ZT1mdW5jdGlvbih0KXt2YXIgZT1kKHQpO3JldHVybiB0aGlzLl9vcHRp
b25NYXAuaGFzKGUpP3RoaXMuX29wdGlvbk1hcC5nZXQoZSk6dH0sdH0oKTthdC5kZWNvcmF0b3Jz
PVt7dHlwZTpOLlUsYXJnczpbe3NlbGVjdG9yOiJzZWxlY3Q6bm90KFttdWx0aXBsZV0pW2Zvcm1D
b250cm9sTmFtZV0sc2VsZWN0Om5vdChbbXVsdGlwbGVdKVtmb3JtQ29udHJvbF0sc2VsZWN0Om5v
dChbbXVsdGlwbGVdKVtuZ01vZGVsXSIsaG9zdDp7IihjaGFuZ2UpIjoib25DaGFuZ2UoJGV2ZW50
LnRhcmdldC52YWx1ZSkiLCIoYmx1cikiOiJvblRvdWNoZWQoKSJ9LHByb3ZpZGVyczpbc3RdfV19
XSxhdC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTpOLld9LHt0eXBlOk4u
Vn1dfSxhdC5wcm9wRGVjb3JhdG9ycz17Y29tcGFyZVdpdGg6W3t0eXBlOk4uWH1dfTt2YXIgdXQ9
ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuKXt0aGlzLl9lbGVtZW50PXQsdGhpcy5fcmVuZGVy
ZXI9ZSx0aGlzLl9zZWxlY3Q9bix0aGlzLl9zZWxlY3QmJih0aGlzLmlkPXRoaXMuX3NlbGVjdC5f
cmVnaXN0ZXJPcHRpb24oKSl9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlw
ZSwibmdWYWx1ZSIse3NldDpmdW5jdGlvbih0KXtudWxsIT10aGlzLl9zZWxlY3QmJih0aGlzLl9z
ZWxlY3QuX29wdGlvbk1hcC5zZXQodGhpcy5pZCx0KSx0aGlzLl9zZXRFbGVtZW50VmFsdWUoaCh0
aGlzLmlkLHQpKSx0aGlzLl9zZWxlY3Qud3JpdGVWYWx1ZSh0aGlzLl9zZWxlY3QudmFsdWUpKX0s
ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5w
cm90b3R5cGUsInZhbHVlIix7c2V0OmZ1bmN0aW9uKHQpe3RoaXMuX3NldEVsZW1lbnRWYWx1ZSh0
KSx0aGlzLl9zZWxlY3QmJnRoaXMuX3NlbGVjdC53cml0ZVZhbHVlKHRoaXMuX3NlbGVjdC52YWx1
ZSl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuX3NldEVsZW1l
bnRWYWx1ZT1mdW5jdGlvbih0KXt0aGlzLl9yZW5kZXJlci5zZXRFbGVtZW50UHJvcGVydHkodGhp
cy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LCJ2YWx1ZSIsdCl9LHQucHJvdG90eXBlLm5nT25EZXN0
cm95PWZ1bmN0aW9uKCl7dGhpcy5fc2VsZWN0JiYodGhpcy5fc2VsZWN0Ll9vcHRpb25NYXAuZGVs
ZXRlKHRoaXMuaWQpLHRoaXMuX3NlbGVjdC53cml0ZVZhbHVlKHRoaXMuX3NlbGVjdC52YWx1ZSkp
fSx0fSgpO3V0LmRlY29yYXRvcnM9W3t0eXBlOk4uVSxhcmdzOlt7c2VsZWN0b3I6Im9wdGlvbiJ9
XX1dLHV0LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOk4uVn0se3R5cGU6
Ti5XfSx7dHlwZTphdCxkZWNvcmF0b3JzOlt7dHlwZTpOLkh9LHt0eXBlOk4uXzJ9XX1dfSx1dC5w
cm9wRGVjb3JhdG9ycz17bmdWYWx1ZTpbe3R5cGU6Ti5YLGFyZ3M6WyJuZ1ZhbHVlIl19XSx2YWx1
ZTpbe3R5cGU6Ti5YLGFyZ3M6WyJ2YWx1ZSJdfV19Oy8qKgorICogQGxpY2Vuc2UKKyAqIENvcHly
aWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9s
aWNlbnNlCisgKi8KK3ZhciBjdD17cHJvdmlkZTpaLHVzZUV4aXN0aW5nOm4uaShOLl85KShmdW5j
dGlvbigpe3JldHVybiBsdH0pLG11bHRpOiEwfSxsdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxl
KXt0aGlzLl9yZW5kZXJlcj10LHRoaXMuX2VsZW1lbnRSZWY9ZSx0aGlzLl9vcHRpb25NYXA9bmV3
IE1hcCx0aGlzLl9pZENvdW50ZXI9MCx0aGlzLm9uQ2hhbmdlPWZ1bmN0aW9uKHQpe30sdGhpcy5v
blRvdWNoZWQ9ZnVuY3Rpb24oKXt9LHRoaXMuX2NvbXBhcmVXaXRoPU4uXzExfXJldHVybiBPYmpl
Y3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImNvbXBhcmVXaXRoIix7c2V0OmZ1bmN0aW9u
KHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcigiY29tcGFyZVdpdGgg
bXVzdCBiZSBhIGZ1bmN0aW9uLCBidXQgcmVjZWl2ZWQgIitKU09OLnN0cmluZ2lmeSh0KSk7dGhp
cy5fY29tcGFyZVdpdGg9dH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0LnByb3Rv
dHlwZS53cml0ZVZhbHVlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dGhpcy52YWx1ZT10O3ZhciBu
O2lmKEFycmF5LmlzQXJyYXkodCkpe3ZhciByPXQubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBlLl9n
ZXRPcHRpb25JZCh0KX0pO249ZnVuY3Rpb24odCxlKXt0Ll9zZXRTZWxlY3RlZChyLmluZGV4T2Yo
ZS50b1N0cmluZygpKT4tMSl9fWVsc2Ugbj1mdW5jdGlvbih0LGUpe3QuX3NldFNlbGVjdGVkKCEx
KX07dGhpcy5fb3B0aW9uTWFwLmZvckVhY2gobil9LHQucHJvdG90eXBlLnJlZ2lzdGVyT25DaGFu
Z2U9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0aGlzLm9uQ2hhbmdlPWZ1bmN0aW9uKG4pe3ZhciBy
PVtdO2lmKG4uaGFzT3duUHJvcGVydHkoInNlbGVjdGVkT3B0aW9ucyIpKWZvcih2YXIgbz1uLnNl
bGVjdGVkT3B0aW9ucyxpPTA7aTxvLmxlbmd0aDtpKyspe3ZhciBzPW8uaXRlbShpKSxhPWUuX2dl
dE9wdGlvblZhbHVlKHMudmFsdWUpO3IucHVzaChhKX1lbHNlIGZvcih2YXIgbz1uLm9wdGlvbnMs
aT0wO2k8by5sZW5ndGg7aSsrKXt2YXIgcz1vLml0ZW0oaSk7aWYocy5zZWxlY3RlZCl7dmFyIGE9
ZS5fZ2V0T3B0aW9uVmFsdWUocy52YWx1ZSk7ci5wdXNoKGEpfX1lLnZhbHVlPXIsdChyKX19LHQu
cHJvdG90eXBlLnJlZ2lzdGVyT25Ub3VjaGVkPWZ1bmN0aW9uKHQpe3RoaXMub25Ub3VjaGVkPXR9
LHQucHJvdG90eXBlLnNldERpc2FibGVkU3RhdGU9ZnVuY3Rpb24odCl7dGhpcy5fcmVuZGVyZXIu
c2V0RWxlbWVudFByb3BlcnR5KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwiZGlzYWJs
ZWQiLHQpfSx0LnByb3RvdHlwZS5fcmVnaXN0ZXJPcHRpb249ZnVuY3Rpb24odCl7dmFyIGU9KHRo
aXMuX2lkQ291bnRlcisrKS50b1N0cmluZygpO3JldHVybiB0aGlzLl9vcHRpb25NYXAuc2V0KGUs
dCksZX0sdC5wcm90b3R5cGUuX2dldE9wdGlvbklkPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wLG49
QXJyYXkuZnJvbSh0aGlzLl9vcHRpb25NYXAua2V5cygpKTtlPG4ubGVuZ3RoO2UrKyl7dmFyIHI9
bltlXTtpZih0aGlzLl9jb21wYXJlV2l0aCh0aGlzLl9vcHRpb25NYXAuZ2V0KHIpLl92YWx1ZSx0
KSlyZXR1cm4gcn1yZXR1cm4gbnVsbH0sdC5wcm90b3R5cGUuX2dldE9wdGlvblZhbHVlPWZ1bmN0
aW9uKHQpe3ZhciBlPW0odCk7cmV0dXJuIHRoaXMuX29wdGlvbk1hcC5oYXMoZSk/dGhpcy5fb3B0
aW9uTWFwLmdldChlKS5fdmFsdWU6dH0sdH0oKTtsdC5kZWNvcmF0b3JzPVt7dHlwZTpOLlUsYXJn
czpbe3NlbGVjdG9yOiJzZWxlY3RbbXVsdGlwbGVdW2Zvcm1Db250cm9sTmFtZV0sc2VsZWN0W211
bHRpcGxlXVtmb3JtQ29udHJvbF0sc2VsZWN0W211bHRpcGxlXVtuZ01vZGVsXSIsaG9zdDp7Iihj
aGFuZ2UpIjoib25DaGFuZ2UoJGV2ZW50LnRhcmdldCkiLCIoYmx1cikiOiJvblRvdWNoZWQoKSJ9
LHByb3ZpZGVyczpbY3RdfV19XSxsdC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7
dHlwZTpOLld9LHt0eXBlOk4uVn1dfSxsdC5wcm9wRGVjb3JhdG9ycz17Y29tcGFyZVdpdGg6W3t0
eXBlOk4uWH1dfTt2YXIgcHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuKXt0aGlzLl9lbGVt
ZW50PXQsdGhpcy5fcmVuZGVyZXI9ZSx0aGlzLl9zZWxlY3Q9bix0aGlzLl9zZWxlY3QmJih0aGlz
LmlkPXRoaXMuX3NlbGVjdC5fcmVnaXN0ZXJPcHRpb24odGhpcykpfXJldHVybiBPYmplY3QuZGVm
aW5lUHJvcGVydHkodC5wcm90b3R5cGUsIm5nVmFsdWUiLHtzZXQ6ZnVuY3Rpb24odCl7bnVsbCE9
dGhpcy5fc2VsZWN0JiYodGhpcy5fdmFsdWU9dCx0aGlzLl9zZXRFbGVtZW50VmFsdWUoeSh0aGlz
LmlkLHQpKSx0aGlzLl9zZWxlY3Qud3JpdGVWYWx1ZSh0aGlzLl9zZWxlY3QudmFsdWUpKX0sZW51
bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90
b3R5cGUsInZhbHVlIix7c2V0OmZ1bmN0aW9uKHQpe3RoaXMuX3NlbGVjdD8odGhpcy5fdmFsdWU9
dCx0aGlzLl9zZXRFbGVtZW50VmFsdWUoeSh0aGlzLmlkLHQpKSx0aGlzLl9zZWxlY3Qud3JpdGVW
YWx1ZSh0aGlzLl9zZWxlY3QudmFsdWUpKTp0aGlzLl9zZXRFbGVtZW50VmFsdWUodCl9LGVudW1l
cmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuX3NldEVsZW1lbnRWYWx1ZT1m
dW5jdGlvbih0KXt0aGlzLl9yZW5kZXJlci5zZXRFbGVtZW50UHJvcGVydHkodGhpcy5fZWxlbWVu
dC5uYXRpdmVFbGVtZW50LCJ2YWx1ZSIsdCl9LHQucHJvdG90eXBlLl9zZXRTZWxlY3RlZD1mdW5j
dGlvbih0KXt0aGlzLl9yZW5kZXJlci5zZXRFbGVtZW50UHJvcGVydHkodGhpcy5fZWxlbWVudC5u
YXRpdmVFbGVtZW50LCJzZWxlY3RlZCIsdCl9LHQucHJvdG90eXBlLm5nT25EZXN0cm95PWZ1bmN0
aW9uKCl7dGhpcy5fc2VsZWN0JiYodGhpcy5fc2VsZWN0Ll9vcHRpb25NYXAuZGVsZXRlKHRoaXMu
aWQpLHRoaXMuX3NlbGVjdC53cml0ZVZhbHVlKHRoaXMuX3NlbGVjdC52YWx1ZSkpfSx0fSgpO3B0
LmRlY29yYXRvcnM9W3t0eXBlOk4uVSxhcmdzOlt7c2VsZWN0b3I6Im9wdGlvbiJ9XX1dLHB0LmN0
b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOk4uVn0se3R5cGU6Ti5XfSx7dHlw
ZTpsdCxkZWNvcmF0b3JzOlt7dHlwZTpOLkh9LHt0eXBlOk4uXzJ9XX1dfSxwdC5wcm9wRGVjb3Jh
dG9ycz17bmdWYWx1ZTpbe3R5cGU6Ti5YLGFyZ3M6WyJuZ1ZhbHVlIl19XSx2YWx1ZTpbe3R5cGU6
Ti5YLGFyZ3M6WyJ2YWx1ZSJdfV19O3ZhciBmdD1bSyxpdCxZLGF0LGx0LHJ0XSxodD1mdW5jdGlv
bih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIG51bGwhPT10JiZ0LmFwcGx5KHRoaXMsYXJndW1lbnRz
KXx8dGhpc31yZXR1cm4gRihlLHQpLGUucHJvdG90eXBlLm5nT25Jbml0PWZ1bmN0aW9uKCl7dGhp
cy5fY2hlY2tQYXJlbnRUeXBlKCksdGhpcy5mb3JtRGlyZWN0aXZlLmFkZEZvcm1Hcm91cCh0aGlz
KX0sZS5wcm90b3R5cGUubmdPbkRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLmZvcm1EaXJlY3RpdmUm
JnRoaXMuZm9ybURpcmVjdGl2ZS5yZW1vdmVGb3JtR3JvdXAodGhpcyl9LE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eShlLnByb3RvdHlwZSwiY29udHJvbCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlz
LmZvcm1EaXJlY3RpdmUuZ2V0Rm9ybUdyb3VwKHRoaXMpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3Vy
YWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwicGF0aCIse2dldDpm
dW5jdGlvbigpe3JldHVybiBnKHRoaXMubmFtZSx0aGlzLl9wYXJlbnQpfSxlbnVtZXJhYmxlOiEw
LGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiZm9y
bURpcmVjdGl2ZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wYXJlbnQ/dGhpcy5fcGFy
ZW50LmZvcm1EaXJlY3RpdmU6bnVsbH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxP
YmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInZhbGlkYXRvciIse2dldDpmdW5jdGlv
bigpe3JldHVybiBFKHRoaXMuX3ZhbGlkYXRvcnMpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJs
ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiYXN5bmNWYWxpZGF0b3Ii
LHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gTyh0aGlzLl9hc3luY1ZhbGlkYXRvcnMpfSxlbnVtZXJh
YmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLl9jaGVja1BhcmVudFR5cGU9ZnVu
Y3Rpb24oKXt9LGV9KEwpLGR0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLl9jZD10fXJl
dHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsIm5nQ2xhc3NVbnRvdWNoZWQi
LHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuX2NkLmNvbnRyb2wmJnRoaXMuX2NkLmNvbnRy
b2wudW50b3VjaGVkfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZp
bmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwibmdDbGFzc1RvdWNoZWQiLHtnZXQ6ZnVuY3Rpb24oKXty
ZXR1cm4hIXRoaXMuX2NkLmNvbnRyb2wmJnRoaXMuX2NkLmNvbnRyb2wudG91Y2hlZH0sZW51bWVy
YWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5
cGUsIm5nQ2xhc3NQcmlzdGluZSIse2dldDpmdW5jdGlvbigpe3JldHVybiEhdGhpcy5fY2QuY29u
dHJvbCYmdGhpcy5fY2QuY29udHJvbC5wcmlzdGluZX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFi
bGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsIm5nQ2xhc3NEaXJ0eSIs
e2dldDpmdW5jdGlvbigpe3JldHVybiEhdGhpcy5fY2QuY29udHJvbCYmdGhpcy5fY2QuY29udHJv
bC5kaXJ0eX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJv
cGVydHkodC5wcm90b3R5cGUsIm5nQ2xhc3NWYWxpZCIse2dldDpmdW5jdGlvbigpe3JldHVybiEh
dGhpcy5fY2QuY29udHJvbCYmdGhpcy5fY2QuY29udHJvbC52YWxpZH0sZW51bWVyYWJsZTohMCxj
b25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsIm5nQ2xh
c3NJbnZhbGlkIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLl9jZC5jb250cm9sJiZ0aGlz
Ll9jZC5jb250cm9sLmludmFsaWR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJuZ0NsYXNzUGVuZGluZyIse2dldDpmdW5j
dGlvbigpe3JldHVybiEhdGhpcy5fY2QuY29udHJvbCYmdGhpcy5fY2QuY29udHJvbC5wZW5kaW5n
fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHR9KCkseXQ9eyJbY2xhc3MubmctdW50
b3VjaGVkXSI6Im5nQ2xhc3NVbnRvdWNoZWQiLCJbY2xhc3MubmctdG91Y2hlZF0iOiJuZ0NsYXNz
VG91Y2hlZCIsIltjbGFzcy5uZy1wcmlzdGluZV0iOiJuZ0NsYXNzUHJpc3RpbmUiLCJbY2xhc3Mu
bmctZGlydHldIjoibmdDbGFzc0RpcnR5IiwiW2NsYXNzLm5nLXZhbGlkXSI6Im5nQ2xhc3NWYWxp
ZCIsIltjbGFzcy5uZy1pbnZhbGlkXSI6Im5nQ2xhc3NJbnZhbGlkIiwiW2NsYXNzLm5nLXBlbmRp
bmddIjoibmdDbGFzc1BlbmRpbmcifSxtdD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUpe3JldHVy
biB0LmNhbGwodGhpcyxlKXx8dGhpc31yZXR1cm4gRihlLHQpLGV9KGR0KTttdC5kZWNvcmF0b3Jz
PVt7dHlwZTpOLlUsYXJnczpbe3NlbGVjdG9yOiJbZm9ybUNvbnRyb2xOYW1lXSxbbmdNb2RlbF0s
W2Zvcm1Db250cm9sXSIsaG9zdDp5dH1dfV0sbXQuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXty
ZXR1cm5be3R5cGU6dHQsZGVjb3JhdG9yczpbe3R5cGU6Ti5fMTJ9XX1dfTt2YXIgZ3Q9ZnVuY3Rp
b24odCl7ZnVuY3Rpb24gZShlKXtyZXR1cm4gdC5jYWxsKHRoaXMsZSl8fHRoaXN9cmV0dXJuIEYo
ZSx0KSxlfShkdCk7Z3QuZGVjb3JhdG9ycz1be3R5cGU6Ti5VLGFyZ3M6W3tzZWxlY3RvcjoiW2Zv
cm1Hcm91cE5hbWVdLFtmb3JtQXJyYXlOYW1lXSxbbmdNb2RlbEdyb3VwXSxbZm9ybUdyb3VwXSxm
b3JtOm5vdChbbmdOb0Zvcm1dKSxbbmdGb3JtXSIsaG9zdDp5dH1dfV0sZ3QuY3RvclBhcmFtZXRl
cnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6TCxkZWNvcmF0b3JzOlt7dHlwZTpOLl8xMn1dfV19
Oy8qKgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFu
IE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8KK3ZhciB2dD0iVkFMSUQiLF90
PSJJTlZBTElEIixidD0iUEVORElORyIsd3Q9IkRJU0FCTEVEIixDdD1mdW5jdGlvbigpe2Z1bmN0
aW9uIHQodCxlKXt0aGlzLnZhbGlkYXRvcj10LHRoaXMuYXN5bmNWYWxpZGF0b3I9ZSx0aGlzLl9v
bkNvbGxlY3Rpb25DaGFuZ2U9ZnVuY3Rpb24oKXt9LHRoaXMuX3ByaXN0aW5lPSEwLHRoaXMuX3Rv
dWNoZWQ9ITEsdGhpcy5fb25EaXNhYmxlZENoYW5nZT1bXX1yZXR1cm4gT2JqZWN0LmRlZmluZVBy
b3BlcnR5KHQucHJvdG90eXBlLCJ2YWx1ZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl92
YWx1ZX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVy
dHkodC5wcm90b3R5cGUsInBhcmVudCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wYXJl
bnR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5
KHQucHJvdG90eXBlLCJzdGF0dXMiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RhdHVz
fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0
LnByb3RvdHlwZSwidmFsaWQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RhdHVzPT09
dnR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5
KHQucHJvdG90eXBlLCJpbnZhbGlkIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N0YXR1
cz09PV90fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eSh0LnByb3RvdHlwZSwicGVuZGluZyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9z
dGF0dXM9PWJ0fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eSh0LnByb3RvdHlwZSwiZGlzYWJsZWQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhp
cy5fc3RhdHVzPT09d3R9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRl
ZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJlbmFibGVkIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJu
IHRoaXMuX3N0YXR1cyE9PXd0fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVj
dC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiZXJyb3JzIix7Z2V0OmZ1bmN0aW9uKCl7cmV0
dXJuIHRoaXMuX2Vycm9yc30sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3Qu
ZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInByaXN0aW5lIix7Z2V0OmZ1bmN0aW9uKCl7cmV0
dXJuIHRoaXMuX3ByaXN0aW5lfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVj
dC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiZGlydHkiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1
cm4hdGhpcy5wcmlzdGluZX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3Qu
ZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInRvdWNoZWQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1
cm4gdGhpcy5fdG91Y2hlZH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3Qu
ZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInVudG91Y2hlZCIse2dldDpmdW5jdGlvbigpe3Jl
dHVybiF0aGlzLl90b3VjaGVkfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVj
dC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidmFsdWVDaGFuZ2VzIix7Z2V0OmZ1bmN0aW9u
KCl7cmV0dXJuIHRoaXMuX3ZhbHVlQ2hhbmdlc30sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6
ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInN0YXR1c0NoYW5nZXMiLHtn
ZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RhdHVzQ2hhbmdlc30sZW51bWVyYWJsZTohMCxj
b25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5zZXRWYWxpZGF0b3JzPWZ1bmN0aW9uKHQpe3Ro
aXMudmFsaWRhdG9yPVQodCl9LHQucHJvdG90eXBlLnNldEFzeW5jVmFsaWRhdG9ycz1mdW5jdGlv
bih0KXt0aGlzLmFzeW5jVmFsaWRhdG9yPWsodCl9LHQucHJvdG90eXBlLmNsZWFyVmFsaWRhdG9y
cz1mdW5jdGlvbigpe3RoaXMudmFsaWRhdG9yPW51bGx9LHQucHJvdG90eXBlLmNsZWFyQXN5bmNW
YWxpZGF0b3JzPWZ1bmN0aW9uKCl7dGhpcy5hc3luY1ZhbGlkYXRvcj1udWxsfSx0LnByb3RvdHlw
ZS5tYXJrQXNUb3VjaGVkPWZ1bmN0aW9uKHQpe3ZhciBlPSh2b2lkIDA9PT10P3t9OnQpLm9ubHlT
ZWxmO3RoaXMuX3RvdWNoZWQ9ITAsdGhpcy5fcGFyZW50JiYhZSYmdGhpcy5fcGFyZW50Lm1hcmtB
c1RvdWNoZWQoe29ubHlTZWxmOmV9KX0sdC5wcm90b3R5cGUubWFya0FzVW50b3VjaGVkPWZ1bmN0
aW9uKHQpe3ZhciBlPSh2b2lkIDA9PT10P3t9OnQpLm9ubHlTZWxmO3RoaXMuX3RvdWNoZWQ9ITEs
dGhpcy5fZm9yRWFjaENoaWxkKGZ1bmN0aW9uKHQpe3QubWFya0FzVW50b3VjaGVkKHtvbmx5U2Vs
ZjohMH0pfSksdGhpcy5fcGFyZW50JiYhZSYmdGhpcy5fcGFyZW50Ll91cGRhdGVUb3VjaGVkKHtv
bmx5U2VsZjplfSl9LHQucHJvdG90eXBlLm1hcmtBc0RpcnR5PWZ1bmN0aW9uKHQpe3ZhciBlPSh2
b2lkIDA9PT10P3t9OnQpLm9ubHlTZWxmO3RoaXMuX3ByaXN0aW5lPSExLHRoaXMuX3BhcmVudCYm
IWUmJnRoaXMuX3BhcmVudC5tYXJrQXNEaXJ0eSh7b25seVNlbGY6ZX0pfSx0LnByb3RvdHlwZS5t
YXJrQXNQcmlzdGluZT1mdW5jdGlvbih0KXt2YXIgZT0odm9pZCAwPT09dD97fTp0KS5vbmx5U2Vs
Zjt0aGlzLl9wcmlzdGluZT0hMCx0aGlzLl9mb3JFYWNoQ2hpbGQoZnVuY3Rpb24odCl7dC5tYXJr
QXNQcmlzdGluZSh7b25seVNlbGY6ITB9KX0pLHRoaXMuX3BhcmVudCYmIWUmJnRoaXMuX3BhcmVu
dC5fdXBkYXRlUHJpc3RpbmUoe29ubHlTZWxmOmV9KX0sdC5wcm90b3R5cGUubWFya0FzUGVuZGlu
Zz1mdW5jdGlvbih0KXt2YXIgZT0odm9pZCAwPT09dD97fTp0KS5vbmx5U2VsZjt0aGlzLl9zdGF0
dXM9YnQsdGhpcy5fcGFyZW50JiYhZSYmdGhpcy5fcGFyZW50Lm1hcmtBc1BlbmRpbmcoe29ubHlT
ZWxmOmV9KX0sdC5wcm90b3R5cGUuZGlzYWJsZT1mdW5jdGlvbih0KXt2YXIgZT12b2lkIDA9PT10
P3t9OnQsbj1lLm9ubHlTZWxmLHI9ZS5lbWl0RXZlbnQ7dGhpcy5fc3RhdHVzPXd0LHRoaXMuX2Vy
cm9ycz1udWxsLHRoaXMuX2ZvckVhY2hDaGlsZChmdW5jdGlvbih0KXt0LmRpc2FibGUoe29ubHlT
ZWxmOiEwfSl9KSx0aGlzLl91cGRhdGVWYWx1ZSgpLCExIT09ciYmKHRoaXMuX3ZhbHVlQ2hhbmdl
cy5lbWl0KHRoaXMuX3ZhbHVlKSx0aGlzLl9zdGF0dXNDaGFuZ2VzLmVtaXQodGhpcy5fc3RhdHVz
KSksdGhpcy5fdXBkYXRlQW5jZXN0b3JzKG4pLHRoaXMuX29uRGlzYWJsZWRDaGFuZ2UuZm9yRWFj
aChmdW5jdGlvbih0KXtyZXR1cm4gdCghMCl9KX0sdC5wcm90b3R5cGUuZW5hYmxlPWZ1bmN0aW9u
KHQpe3ZhciBlPXZvaWQgMD09PXQ/e306dCxuPWUub25seVNlbGYscj1lLmVtaXRFdmVudDt0aGlz
Ll9zdGF0dXM9dnQsdGhpcy5fZm9yRWFjaENoaWxkKGZ1bmN0aW9uKHQpe3QuZW5hYmxlKHtvbmx5
U2VsZjohMH0pfSksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtvbmx5U2VsZjohMCxlbWl0
RXZlbnQ6cn0pLHRoaXMuX3VwZGF0ZUFuY2VzdG9ycyhuKSx0aGlzLl9vbkRpc2FibGVkQ2hhbmdl
LmZvckVhY2goZnVuY3Rpb24odCl7cmV0dXJuIHQoITEpfSl9LHQucHJvdG90eXBlLl91cGRhdGVB
bmNlc3RvcnM9ZnVuY3Rpb24odCl7dGhpcy5fcGFyZW50JiYhdCYmKHRoaXMuX3BhcmVudC51cGRh
dGVWYWx1ZUFuZFZhbGlkaXR5KCksdGhpcy5fcGFyZW50Ll91cGRhdGVQcmlzdGluZSgpLHRoaXMu
X3BhcmVudC5fdXBkYXRlVG91Y2hlZCgpKX0sdC5wcm90b3R5cGUuc2V0UGFyZW50PWZ1bmN0aW9u
KHQpe3RoaXMuX3BhcmVudD10fSx0LnByb3RvdHlwZS5zZXRWYWx1ZT1mdW5jdGlvbih0LGUpe30s
dC5wcm90b3R5cGUucGF0Y2hWYWx1ZT1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUucmVzZXQ9
ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHk9ZnVuY3Rp
b24odCl7dmFyIGU9dm9pZCAwPT09dD97fTp0LG49ZS5vbmx5U2VsZixyPWUuZW1pdEV2ZW50O3Ro
aXMuX3NldEluaXRpYWxTdGF0dXMoKSx0aGlzLl91cGRhdGVWYWx1ZSgpLHRoaXMuZW5hYmxlZCYm
KHRoaXMuX2NhbmNlbEV4aXN0aW5nU3Vic2NyaXB0aW9uKCksdGhpcy5fZXJyb3JzPXRoaXMuX3J1
blZhbGlkYXRvcigpLHRoaXMuX3N0YXR1cz10aGlzLl9jYWxjdWxhdGVTdGF0dXMoKSx0aGlzLl9z
dGF0dXMhPT12dCYmdGhpcy5fc3RhdHVzIT09YnR8fHRoaXMuX3J1bkFzeW5jVmFsaWRhdG9yKHIp
KSwhMSE9PXImJih0aGlzLl92YWx1ZUNoYW5nZXMuZW1pdCh0aGlzLl92YWx1ZSksdGhpcy5fc3Rh
dHVzQ2hhbmdlcy5lbWl0KHRoaXMuX3N0YXR1cykpLHRoaXMuX3BhcmVudCYmIW4mJnRoaXMuX3Bh
cmVudC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtvbmx5U2VsZjpuLGVtaXRFdmVudDpyfSl9LHQu
cHJvdG90eXBlLl91cGRhdGVUcmVlVmFsaWRpdHk9ZnVuY3Rpb24odCl7dmFyIGU9KHZvaWQgMD09
PXQ/e2VtaXRFdmVudDohMH06dCkuZW1pdEV2ZW50O3RoaXMuX2ZvckVhY2hDaGlsZChmdW5jdGlv
bih0KXtyZXR1cm4gdC5fdXBkYXRlVHJlZVZhbGlkaXR5KHtlbWl0RXZlbnQ6ZX0pfSksdGhpcy51
cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtvbmx5U2VsZjohMCxlbWl0RXZlbnQ6ZX0pfSx0LnByb3Rv
dHlwZS5fc2V0SW5pdGlhbFN0YXR1cz1mdW5jdGlvbigpe3RoaXMuX3N0YXR1cz10aGlzLl9hbGxD
b250cm9sc0Rpc2FibGVkKCk/d3Q6dnR9LHQucHJvdG90eXBlLl9ydW5WYWxpZGF0b3I9ZnVuY3Rp
b24oKXtyZXR1cm4gdGhpcy52YWxpZGF0b3I/dGhpcy52YWxpZGF0b3IodGhpcyk6bnVsbH0sdC5w
cm90b3R5cGUuX3J1bkFzeW5jVmFsaWRhdG9yPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7aWYodGhp
cy5hc3luY1ZhbGlkYXRvcil7dGhpcy5fc3RhdHVzPWJ0O3ZhciBuPWkodGhpcy5hc3luY1ZhbGlk
YXRvcih0aGlzKSk7dGhpcy5fYXN5bmNWYWxpZGF0aW9uU3Vic2NyaXB0aW9uPW4uc3Vic2NyaWJl
KGZ1bmN0aW9uKG4pe3JldHVybiBlLnNldEVycm9ycyhuLHtlbWl0RXZlbnQ6dH0pfSl9fSx0LnBy
b3RvdHlwZS5fY2FuY2VsRXhpc3RpbmdTdWJzY3JpcHRpb249ZnVuY3Rpb24oKXt0aGlzLl9hc3lu
Y1ZhbGlkYXRpb25TdWJzY3JpcHRpb24mJnRoaXMuX2FzeW5jVmFsaWRhdGlvblN1YnNjcmlwdGlv
bi51bnN1YnNjcmliZSgpfSx0LnByb3RvdHlwZS5zZXRFcnJvcnM9ZnVuY3Rpb24odCxlKXt2YXIg
bj0odm9pZCAwPT09ZT97fTplKS5lbWl0RXZlbnQ7dGhpcy5fZXJyb3JzPXQsdGhpcy5fdXBkYXRl
Q29udHJvbHNFcnJvcnMoITEhPT1uKX0sdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3JldHVy
biBBKHRoaXMsdCwiLiIpfSx0LnByb3RvdHlwZS5nZXRFcnJvcj1mdW5jdGlvbih0LGUpe3ZvaWQg
MD09PWUmJihlPW51bGwpO3ZhciBuPWU/dGhpcy5nZXQoZSk6dGhpcztyZXR1cm4gbiYmbi5fZXJy
b3JzP24uX2Vycm9yc1t0XTpudWxsfSx0LnByb3RvdHlwZS5oYXNFcnJvcj1mdW5jdGlvbih0LGUp
e3JldHVybiB2b2lkIDA9PT1lJiYoZT1udWxsKSwhIXRoaXMuZ2V0RXJyb3IodCxlKX0sT2JqZWN0
LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJyb290Iix7Z2V0OmZ1bmN0aW9uKCl7Zm9yKHZh
ciB0PXRoaXM7dC5fcGFyZW50Oyl0PXQuX3BhcmVudDtyZXR1cm4gdH0sZW51bWVyYWJsZTohMCxj
b25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5fdXBkYXRlQ29udHJvbHNFcnJvcnM9ZnVuY3Rp
b24odCl7dGhpcy5fc3RhdHVzPXRoaXMuX2NhbGN1bGF0ZVN0YXR1cygpLHQmJnRoaXMuX3N0YXR1
c0NoYW5nZXMuZW1pdCh0aGlzLl9zdGF0dXMpLHRoaXMuX3BhcmVudCYmdGhpcy5fcGFyZW50Ll91
cGRhdGVDb250cm9sc0Vycm9ycyh0KX0sdC5wcm90b3R5cGUuX2luaXRPYnNlcnZhYmxlcz1mdW5j
dGlvbigpe3RoaXMuX3ZhbHVlQ2hhbmdlcz1uZXcgTi5SLHRoaXMuX3N0YXR1c0NoYW5nZXM9bmV3
IE4uUn0sdC5wcm90b3R5cGUuX2NhbGN1bGF0ZVN0YXR1cz1mdW5jdGlvbigpe3JldHVybiB0aGlz
Ll9hbGxDb250cm9sc0Rpc2FibGVkKCk/d3Q6dGhpcy5fZXJyb3JzP190OnRoaXMuX2FueUNvbnRy
b2xzSGF2ZVN0YXR1cyhidCk/YnQ6dGhpcy5fYW55Q29udHJvbHNIYXZlU3RhdHVzKF90KT9fdDp2
dH0sdC5wcm90b3R5cGUuX3VwZGF0ZVZhbHVlPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5fZm9y
RWFjaENoaWxkPWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuX2FueUNvbnRyb2xzPWZ1bmN0aW9u
KHQpe30sdC5wcm90b3R5cGUuX2FsbENvbnRyb2xzRGlzYWJsZWQ9ZnVuY3Rpb24oKXt9LHQucHJv
dG90eXBlLl9hbnlDb250cm9sc0hhdmVTdGF0dXM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2Fu
eUNvbnRyb2xzKGZ1bmN0aW9uKGUpe3JldHVybiBlLnN0YXR1cz09PXR9KX0sdC5wcm90b3R5cGUu
X2FueUNvbnRyb2xzRGlydHk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYW55Q29udHJvbHMoZnVu
Y3Rpb24odCl7cmV0dXJuIHQuZGlydHl9KX0sdC5wcm90b3R5cGUuX2FueUNvbnRyb2xzVG91Y2hl
ZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9hbnlDb250cm9scyhmdW5jdGlvbih0KXtyZXR1cm4g
dC50b3VjaGVkfSl9LHQucHJvdG90eXBlLl91cGRhdGVQcmlzdGluZT1mdW5jdGlvbih0KXt2YXIg
ZT0odm9pZCAwPT09dD97fTp0KS5vbmx5U2VsZjt0aGlzLl9wcmlzdGluZT0hdGhpcy5fYW55Q29u
dHJvbHNEaXJ0eSgpLHRoaXMuX3BhcmVudCYmIWUmJnRoaXMuX3BhcmVudC5fdXBkYXRlUHJpc3Rp
bmUoe29ubHlTZWxmOmV9KX0sdC5wcm90b3R5cGUuX3VwZGF0ZVRvdWNoZWQ9ZnVuY3Rpb24odCl7
dmFyIGU9KHZvaWQgMD09PXQ/e306dCkub25seVNlbGY7dGhpcy5fdG91Y2hlZD10aGlzLl9hbnlD
b250cm9sc1RvdWNoZWQoKSx0aGlzLl9wYXJlbnQmJiFlJiZ0aGlzLl9wYXJlbnQuX3VwZGF0ZVRv
dWNoZWQoe29ubHlTZWxmOmV9KX0sdC5wcm90b3R5cGUuX2lzQm94ZWRWYWx1ZT1mdW5jdGlvbih0
KXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIHQmJm51bGwhPT10JiYyPT09T2JqZWN0LmtleXModCku
bGVuZ3RoJiYidmFsdWUiaW4gdCYmImRpc2FibGVkImluIHR9LHQucHJvdG90eXBlLl9yZWdpc3Rl
ck9uQ29sbGVjdGlvbkNoYW5nZT1mdW5jdGlvbih0KXt0aGlzLl9vbkNvbGxlY3Rpb25DaGFuZ2U9
dH0sdH0oKSxFdD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbixyKXt2b2lkIDA9PT1lJiYoZT1u
dWxsKSx2b2lkIDA9PT1uJiYobj1udWxsKSx2b2lkIDA9PT1yJiYocj1udWxsKTt2YXIgbz10LmNh
bGwodGhpcyxUKG4pLGsocikpfHx0aGlzO3JldHVybiBvLl9vbkNoYW5nZT1bXSxvLl9hcHBseUZv
cm1TdGF0ZShlKSxvLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe29ubHlTZWxmOiEwLGVtaXRFdmVu
dDohMX0pLG8uX2luaXRPYnNlcnZhYmxlcygpLG99cmV0dXJuIEYoZSx0KSxlLnByb3RvdHlwZS5z
ZXRWYWx1ZT1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMscj12b2lkIDA9PT1lP3t9OmUsbz1yLm9u
bHlTZWxmLGk9ci5lbWl0RXZlbnQscz1yLmVtaXRNb2RlbFRvVmlld0NoYW5nZSxhPXIuZW1pdFZp
ZXdUb01vZGVsQ2hhbmdlO3RoaXMuX3ZhbHVlPXQsdGhpcy5fb25DaGFuZ2UubGVuZ3RoJiYhMSE9
PXMmJnRoaXMuX29uQ2hhbmdlLmZvckVhY2goZnVuY3Rpb24odCl7cmV0dXJuIHQobi5fdmFsdWUs
ITEhPT1hKX0pLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7b25seVNlbGY6byxlbWl0RXZl
bnQ6aX0pfSxlLnByb3RvdHlwZS5wYXRjaFZhbHVlPWZ1bmN0aW9uKHQsZSl7dm9pZCAwPT09ZSYm
KGU9e30pLHRoaXMuc2V0VmFsdWUodCxlKX0sZS5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24odCxl
KXt2b2lkIDA9PT10JiYodD1udWxsKTt2YXIgbj12b2lkIDA9PT1lP3t9OmUscj1uLm9ubHlTZWxm
LG89bi5lbWl0RXZlbnQ7dGhpcy5fYXBwbHlGb3JtU3RhdGUodCksdGhpcy5tYXJrQXNQcmlzdGlu
ZSh7b25seVNlbGY6cn0pLHRoaXMubWFya0FzVW50b3VjaGVkKHtvbmx5U2VsZjpyfSksdGhpcy5z
ZXRWYWx1ZSh0aGlzLl92YWx1ZSx7b25seVNlbGY6cixlbWl0RXZlbnQ6b30pfSxlLnByb3RvdHlw
ZS5fdXBkYXRlVmFsdWU9ZnVuY3Rpb24oKXt9LGUucHJvdG90eXBlLl9hbnlDb250cm9scz1mdW5j
dGlvbih0KXtyZXR1cm4hMX0sZS5wcm90b3R5cGUuX2FsbENvbnRyb2xzRGlzYWJsZWQ9ZnVuY3Rp
b24oKXtyZXR1cm4gdGhpcy5kaXNhYmxlZH0sZS5wcm90b3R5cGUucmVnaXN0ZXJPbkNoYW5nZT1m
dW5jdGlvbih0KXt0aGlzLl9vbkNoYW5nZS5wdXNoKHQpfSxlLnByb3RvdHlwZS5fY2xlYXJDaGFu
Z2VGbnM9ZnVuY3Rpb24oKXt0aGlzLl9vbkNoYW5nZT1bXSx0aGlzLl9vbkRpc2FibGVkQ2hhbmdl
PVtdLHRoaXMuX29uQ29sbGVjdGlvbkNoYW5nZT1mdW5jdGlvbigpe319LGUucHJvdG90eXBlLnJl
Z2lzdGVyT25EaXNhYmxlZENoYW5nZT1mdW5jdGlvbih0KXt0aGlzLl9vbkRpc2FibGVkQ2hhbmdl
LnB1c2godCl9LGUucHJvdG90eXBlLl9mb3JFYWNoQ2hpbGQ9ZnVuY3Rpb24odCl7fSxlLnByb3Rv
dHlwZS5fYXBwbHlGb3JtU3RhdGU9ZnVuY3Rpb24odCl7dGhpcy5faXNCb3hlZFZhbHVlKHQpPyh0
aGlzLl92YWx1ZT10LnZhbHVlLHQuZGlzYWJsZWQ/dGhpcy5kaXNhYmxlKHtvbmx5U2VsZjohMCxl
bWl0RXZlbnQ6ITF9KTp0aGlzLmVuYWJsZSh7b25seVNlbGY6ITAsZW1pdEV2ZW50OiExfSkpOnRo
aXMuX3ZhbHVlPXR9LGV9KEN0KSxPdD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbixyKXt2b2lk
IDA9PT1uJiYobj1udWxsKSx2b2lkIDA9PT1yJiYocj1udWxsKTt2YXIgbz10LmNhbGwodGhpcyxu
LHIpfHx0aGlzO3JldHVybiBvLmNvbnRyb2xzPWUsby5faW5pdE9ic2VydmFibGVzKCksby5fc2V0
VXBDb250cm9scygpLG8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7b25seVNlbGY6ITAsZW1pdEV2
ZW50OiExfSksb31yZXR1cm4gRihlLHQpLGUucHJvdG90eXBlLnJlZ2lzdGVyQ29udHJvbD1mdW5j
dGlvbih0LGUpe3JldHVybiB0aGlzLmNvbnRyb2xzW3RdP3RoaXMuY29udHJvbHNbdF06KHRoaXMu
Y29udHJvbHNbdF09ZSxlLnNldFBhcmVudCh0aGlzKSxlLl9yZWdpc3Rlck9uQ29sbGVjdGlvbkNo
YW5nZSh0aGlzLl9vbkNvbGxlY3Rpb25DaGFuZ2UpLGUpfSxlLnByb3RvdHlwZS5hZGRDb250cm9s
PWZ1bmN0aW9uKHQsZSl7dGhpcy5yZWdpc3RlckNvbnRyb2wodCxlKSx0aGlzLnVwZGF0ZVZhbHVl
QW5kVmFsaWRpdHkoKSx0aGlzLl9vbkNvbGxlY3Rpb25DaGFuZ2UoKX0sZS5wcm90b3R5cGUucmVt
b3ZlQ29udHJvbD1mdW5jdGlvbih0KXt0aGlzLmNvbnRyb2xzW3RdJiZ0aGlzLmNvbnRyb2xzW3Rd
Ll9yZWdpc3Rlck9uQ29sbGVjdGlvbkNoYW5nZShmdW5jdGlvbigpe30pLGRlbGV0ZSB0aGlzLmNv
bnRyb2xzW3RdLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpLHRoaXMuX29uQ29sbGVjdGlv
bkNoYW5nZSgpfSxlLnByb3RvdHlwZS5zZXRDb250cm9sPWZ1bmN0aW9uKHQsZSl7dGhpcy5jb250
cm9sc1t0XSYmdGhpcy5jb250cm9sc1t0XS5fcmVnaXN0ZXJPbkNvbGxlY3Rpb25DaGFuZ2UoZnVu
Y3Rpb24oKXt9KSxkZWxldGUgdGhpcy5jb250cm9sc1t0XSxlJiZ0aGlzLnJlZ2lzdGVyQ29udHJv
bCh0LGUpLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpLHRoaXMuX29uQ29sbGVjdGlvbkNo
YW5nZSgpfSxlLnByb3RvdHlwZS5jb250YWlucz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jb250
cm9scy5oYXNPd25Qcm9wZXJ0eSh0KSYmdGhpcy5jb250cm9sc1t0XS5lbmFibGVkfSxlLnByb3Rv
dHlwZS5zZXRWYWx1ZT1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMscj12b2lkIDA9PT1lP3t9OmUs
bz1yLm9ubHlTZWxmLGk9ci5lbWl0RXZlbnQ7dGhpcy5fY2hlY2tBbGxWYWx1ZXNQcmVzZW50KHQp
LE9iamVjdC5rZXlzKHQpLmZvckVhY2goZnVuY3Rpb24oZSl7bi5fdGhyb3dJZkNvbnRyb2xNaXNz
aW5nKGUpLG4uY29udHJvbHNbZV0uc2V0VmFsdWUodFtlXSx7b25seVNlbGY6ITAsZW1pdEV2ZW50
Oml9KX0pLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7b25seVNlbGY6byxlbWl0RXZlbnQ6
aX0pfSxlLnByb3RvdHlwZS5wYXRjaFZhbHVlPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcyxyPXZv
aWQgMD09PWU/e306ZSxvPXIub25seVNlbGYsaT1yLmVtaXRFdmVudDtPYmplY3Qua2V5cyh0KS5m
b3JFYWNoKGZ1bmN0aW9uKGUpe24uY29udHJvbHNbZV0mJm4uY29udHJvbHNbZV0ucGF0Y2hWYWx1
ZSh0W2VdLHtvbmx5U2VsZjohMCxlbWl0RXZlbnQ6aX0pfSksdGhpcy51cGRhdGVWYWx1ZUFuZFZh
bGlkaXR5KHtvbmx5U2VsZjpvLGVtaXRFdmVudDppfSl9LGUucHJvdG90eXBlLnJlc2V0PWZ1bmN0
aW9uKHQsZSl7dm9pZCAwPT09dCYmKHQ9e30pO3ZhciBuPXZvaWQgMD09PWU/e306ZSxyPW4ub25s
eVNlbGYsbz1uLmVtaXRFdmVudDt0aGlzLl9mb3JFYWNoQ2hpbGQoZnVuY3Rpb24oZSxuKXtlLnJl
c2V0KHRbbl0se29ubHlTZWxmOiEwLGVtaXRFdmVudDpvfSl9KSx0aGlzLnVwZGF0ZVZhbHVlQW5k
VmFsaWRpdHkoe29ubHlTZWxmOnIsZW1pdEV2ZW50Om99KSx0aGlzLl91cGRhdGVQcmlzdGluZSh7
b25seVNlbGY6cn0pLHRoaXMuX3VwZGF0ZVRvdWNoZWQoe29ubHlTZWxmOnJ9KX0sZS5wcm90b3R5
cGUuZ2V0UmF3VmFsdWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVkdWNlQ2hpbGRyZW4oe30s
ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0W25dPWUgaW5zdGFuY2VvZiBFdD9lLnZhbHVlOmUuZ2V0
UmF3VmFsdWUoKSx0fSl9LGUucHJvdG90eXBlLl90aHJvd0lmQ29udHJvbE1pc3Npbmc9ZnVuY3Rp
b24odCl7aWYoIU9iamVjdC5rZXlzKHRoaXMuY29udHJvbHMpLmxlbmd0aCl0aHJvdyBuZXcgRXJy
b3IoIlxuICAgICAgICBUaGVyZSBhcmUgbm8gZm9ybSBjb250cm9scyByZWdpc3RlcmVkIHdpdGgg
dGhpcyBncm91cCB5ZXQuICBJZiB5b3UncmUgdXNpbmcgbmdNb2RlbCxcbiAgICAgICAgeW91IG1h
eSB3YW50IHRvIGNoZWNrIG5leHQgdGljayAoZS5nLiB1c2Ugc2V0VGltZW91dCkuXG4gICAgICAi
KTtpZighdGhpcy5jb250cm9sc1t0XSl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBmaW5kIGZvcm0g
Y29udHJvbCB3aXRoIG5hbWU6ICIrdCsiLiIpfSxlLnByb3RvdHlwZS5fZm9yRWFjaENoaWxkPWZ1
bmN0aW9uKHQpe3ZhciBlPXRoaXM7T2JqZWN0LmtleXModGhpcy5jb250cm9scykuZm9yRWFjaChm
dW5jdGlvbihuKXtyZXR1cm4gdChlLmNvbnRyb2xzW25dLG4pfSl9LGUucHJvdG90eXBlLl9zZXRV
cENvbnRyb2xzPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLl9mb3JFYWNoQ2hpbGQoZnVuY3Rp
b24oZSl7ZS5zZXRQYXJlbnQodCksZS5fcmVnaXN0ZXJPbkNvbGxlY3Rpb25DaGFuZ2UodC5fb25D
b2xsZWN0aW9uQ2hhbmdlKX0pfSxlLnByb3RvdHlwZS5fdXBkYXRlVmFsdWU9ZnVuY3Rpb24oKXt0
aGlzLl92YWx1ZT10aGlzLl9yZWR1Y2VWYWx1ZSgpfSxlLnByb3RvdHlwZS5fYW55Q29udHJvbHM9
ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPSExO3JldHVybiB0aGlzLl9mb3JFYWNoQ2hpbGQoZnVu
Y3Rpb24ocixvKXtuPW58fGUuY29udGFpbnMobykmJnQocil9KSxufSxlLnByb3RvdHlwZS5fcmVk
dWNlVmFsdWU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3JldHVybiB0aGlzLl9yZWR1Y2VDaGlsZHJl
bih7fSxmdW5jdGlvbihlLG4scil7cmV0dXJuKG4uZW5hYmxlZHx8dC5kaXNhYmxlZCkmJihlW3Jd
PW4udmFsdWUpLGV9KX0sZS5wcm90b3R5cGUuX3JlZHVjZUNoaWxkcmVuPWZ1bmN0aW9uKHQsZSl7
dmFyIG49dDtyZXR1cm4gdGhpcy5fZm9yRWFjaENoaWxkKGZ1bmN0aW9uKHQscil7bj1lKG4sdCxy
KX0pLG59LGUucHJvdG90eXBlLl9hbGxDb250cm9sc0Rpc2FibGVkPWZ1bmN0aW9uKCl7Zm9yKHZh
ciB0PTAsZT1PYmplY3Qua2V5cyh0aGlzLmNvbnRyb2xzKTt0PGUubGVuZ3RoO3QrKyl7dmFyIG49
ZVt0XTtpZih0aGlzLmNvbnRyb2xzW25dLmVuYWJsZWQpcmV0dXJuITF9cmV0dXJuIE9iamVjdC5r
ZXlzKHRoaXMuY29udHJvbHMpLmxlbmd0aD4wfHx0aGlzLmRpc2FibGVkfSxlLnByb3RvdHlwZS5f
Y2hlY2tBbGxWYWx1ZXNQcmVzZW50PWZ1bmN0aW9uKHQpe3RoaXMuX2ZvckVhY2hDaGlsZChmdW5j
dGlvbihlLG4pe2lmKHZvaWQgMD09PXRbbl0pdGhyb3cgbmV3IEVycm9yKCJNdXN0IHN1cHBseSBh
IHZhbHVlIGZvciBmb3JtIGNvbnRyb2wgd2l0aCBuYW1lOiAnIituKyInLiIpfSl9LGV9KEN0KSx4
dD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbixyKXt2b2lkIDA9PT1uJiYobj1udWxsKSx2b2lk
IDA9PT1yJiYocj1udWxsKTt2YXIgbz10LmNhbGwodGhpcyxuLHIpfHx0aGlzO3JldHVybiBvLmNv
bnRyb2xzPWUsby5faW5pdE9ic2VydmFibGVzKCksby5fc2V0VXBDb250cm9scygpLG8udXBkYXRl
VmFsdWVBbmRWYWxpZGl0eSh7b25seVNlbGY6ITAsZW1pdEV2ZW50OiExfSksb31yZXR1cm4gRihl
LHQpLGUucHJvdG90eXBlLmF0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNvbnRyb2xzW3RdfSxl
LnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKHQpe3RoaXMuY29udHJvbHMucHVzaCh0KSx0aGlzLl9y
ZWdpc3RlckNvbnRyb2wodCksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCksdGhpcy5fb25D
b2xsZWN0aW9uQ2hhbmdlKCl9LGUucHJvdG90eXBlLmluc2VydD1mdW5jdGlvbih0LGUpe3RoaXMu
Y29udHJvbHMuc3BsaWNlKHQsMCxlKSx0aGlzLl9yZWdpc3RlckNvbnRyb2woZSksdGhpcy51cGRh
dGVWYWx1ZUFuZFZhbGlkaXR5KCksdGhpcy5fb25Db2xsZWN0aW9uQ2hhbmdlKCl9LGUucHJvdG90
eXBlLnJlbW92ZUF0PWZ1bmN0aW9uKHQpe3RoaXMuY29udHJvbHNbdF0mJnRoaXMuY29udHJvbHNb
dF0uX3JlZ2lzdGVyT25Db2xsZWN0aW9uQ2hhbmdlKGZ1bmN0aW9uKCl7fSksdGhpcy5jb250cm9s
cy5zcGxpY2UodCwxKSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKSx0aGlzLl9vbkNvbGxl
Y3Rpb25DaGFuZ2UoKX0sZS5wcm90b3R5cGUuc2V0Q29udHJvbD1mdW5jdGlvbih0LGUpe3RoaXMu
Y29udHJvbHNbdF0mJnRoaXMuY29udHJvbHNbdF0uX3JlZ2lzdGVyT25Db2xsZWN0aW9uQ2hhbmdl
KGZ1bmN0aW9uKCl7fSksdGhpcy5jb250cm9scy5zcGxpY2UodCwxKSxlJiYodGhpcy5jb250cm9s
cy5zcGxpY2UodCwwLGUpLHRoaXMuX3JlZ2lzdGVyQ29udHJvbChlKSksdGhpcy51cGRhdGVWYWx1
ZUFuZFZhbGlkaXR5KCksdGhpcy5fb25Db2xsZWN0aW9uQ2hhbmdlKCl9LE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eShlLnByb3RvdHlwZSwibGVuZ3RoIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu
Y29udHJvbHMubGVuZ3RofSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90
eXBlLnNldFZhbHVlPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcyxyPXZvaWQgMD09PWU/e306ZSxv
PXIub25seVNlbGYsaT1yLmVtaXRFdmVudDt0aGlzLl9jaGVja0FsbFZhbHVlc1ByZXNlbnQodCks
dC5mb3JFYWNoKGZ1bmN0aW9uKHQsZSl7bi5fdGhyb3dJZkNvbnRyb2xNaXNzaW5nKGUpLG4uYXQo
ZSkuc2V0VmFsdWUodCx7b25seVNlbGY6ITAsZW1pdEV2ZW50Oml9KX0pLHRoaXMudXBkYXRlVmFs
dWVBbmRWYWxpZGl0eSh7b25seVNlbGY6byxlbWl0RXZlbnQ6aX0pfSxlLnByb3RvdHlwZS5wYXRj
aFZhbHVlPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcyxyPXZvaWQgMD09PWU/e306ZSxvPXIub25s
eVNlbGYsaT1yLmVtaXRFdmVudDt0LmZvckVhY2goZnVuY3Rpb24odCxlKXtuLmF0KGUpJiZuLmF0
KGUpLnBhdGNoVmFsdWUodCx7b25seVNlbGY6ITAsZW1pdEV2ZW50Oml9KX0pLHRoaXMudXBkYXRl
VmFsdWVBbmRWYWxpZGl0eSh7b25seVNlbGY6byxlbWl0RXZlbnQ6aX0pfSxlLnByb3RvdHlwZS5y
ZXNldD1mdW5jdGlvbih0LGUpe3ZvaWQgMD09PXQmJih0PVtdKTt2YXIgbj12b2lkIDA9PT1lP3t9
OmUscj1uLm9ubHlTZWxmLG89bi5lbWl0RXZlbnQ7dGhpcy5fZm9yRWFjaENoaWxkKGZ1bmN0aW9u
KGUsbil7ZS5yZXNldCh0W25dLHtvbmx5U2VsZjohMCxlbWl0RXZlbnQ6b30pfSksdGhpcy51cGRh
dGVWYWx1ZUFuZFZhbGlkaXR5KHtvbmx5U2VsZjpyLGVtaXRFdmVudDpvfSksdGhpcy5fdXBkYXRl
UHJpc3RpbmUoe29ubHlTZWxmOnJ9KSx0aGlzLl91cGRhdGVUb3VjaGVkKHtvbmx5U2VsZjpyfSl9
LGUucHJvdG90eXBlLmdldFJhd1ZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29udHJvbHMu
bWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0IGluc3RhbmNlb2YgRXQ/dC52YWx1ZTp0LmdldFJhd1Zh
bHVlKCl9KX0sZS5wcm90b3R5cGUuX3Rocm93SWZDb250cm9sTWlzc2luZz1mdW5jdGlvbih0KXtp
ZighdGhpcy5jb250cm9scy5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJcbiAgICAgICAgVGhlcmUg
YXJlIG5vIGZvcm0gY29udHJvbHMgcmVnaXN0ZXJlZCB3aXRoIHRoaXMgYXJyYXkgeWV0LiAgSWYg
eW91J3JlIHVzaW5nIG5nTW9kZWwsXG4gICAgICAgIHlvdSBtYXkgd2FudCB0byBjaGVjayBuZXh0
IHRpY2sgKGUuZy4gdXNlIHNldFRpbWVvdXQpLlxuICAgICAgIik7aWYoIXRoaXMuYXQodCkpdGhy
b3cgbmV3IEVycm9yKCJDYW5ub3QgZmluZCBmb3JtIGNvbnRyb2wgYXQgaW5kZXggIit0KX0sZS5w
cm90b3R5cGUuX2ZvckVhY2hDaGlsZD1mdW5jdGlvbih0KXt0aGlzLmNvbnRyb2xzLmZvckVhY2go
ZnVuY3Rpb24oZSxuKXt0KGUsbil9KX0sZS5wcm90b3R5cGUuX3VwZGF0ZVZhbHVlPWZ1bmN0aW9u
KCl7dmFyIHQ9dGhpczt0aGlzLl92YWx1ZT10aGlzLmNvbnRyb2xzLmZpbHRlcihmdW5jdGlvbihl
KXtyZXR1cm4gZS5lbmFibGVkfHx0LmRpc2FibGVkfSkubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0
LnZhbHVlfSl9LGUucHJvdG90eXBlLl9hbnlDb250cm9scz1mdW5jdGlvbih0KXtyZXR1cm4gdGhp
cy5jb250cm9scy5zb21lKGZ1bmN0aW9uKGUpe3JldHVybiBlLmVuYWJsZWQmJnQoZSl9KX0sZS5w
cm90b3R5cGUuX3NldFVwQ29udHJvbHM9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMuX2ZvckVh
Y2hDaGlsZChmdW5jdGlvbihlKXtyZXR1cm4gdC5fcmVnaXN0ZXJDb250cm9sKGUpfSl9LGUucHJv
dG90eXBlLl9jaGVja0FsbFZhbHVlc1ByZXNlbnQ9ZnVuY3Rpb24odCl7dGhpcy5fZm9yRWFjaENo
aWxkKGZ1bmN0aW9uKGUsbil7aWYodm9pZCAwPT09dFtuXSl0aHJvdyBuZXcgRXJyb3IoIk11c3Qg
c3VwcGx5IGEgdmFsdWUgZm9yIGZvcm0gY29udHJvbCBhdCBpbmRleDogIituKyIuIil9KX0sZS5w
cm90b3R5cGUuX2FsbENvbnRyb2xzRGlzYWJsZWQ9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MCxlPXRo
aXMuY29udHJvbHM7dDxlLmxlbmd0aDt0Kyspe2lmKGVbdF0uZW5hYmxlZClyZXR1cm4hMX1yZXR1
cm4gdGhpcy5jb250cm9scy5sZW5ndGg+MHx8dGhpcy5kaXNhYmxlZH0sZS5wcm90b3R5cGUuX3Jl
Z2lzdGVyQ29udHJvbD1mdW5jdGlvbih0KXt0LnNldFBhcmVudCh0aGlzKSx0Ll9yZWdpc3Rlck9u
Q29sbGVjdGlvbkNoYW5nZSh0aGlzLl9vbkNvbGxlY3Rpb25DaGFuZ2UpfSxlfShDdCksU3Q9e3By
b3ZpZGU6TCx1c2VFeGlzdGluZzpuLmkoTi5fOSkoZnVuY3Rpb24oKXtyZXR1cm4gQXR9KX0sUHQ9
UHJvbWlzZS5yZXNvbHZlKG51bGwpLEF0PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuKXt2YXIg
cj10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIHIuX3N1Ym1pdHRlZD0hMSxyLm5nU3VibWl0PW5l
dyBOLlIsci5mb3JtPW5ldyBPdCh7fSxFKGUpLE8obikpLHJ9cmV0dXJuIEYoZSx0KSxPYmplY3Qu
ZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInN1Ym1pdHRlZCIse2dldDpmdW5jdGlvbigpe3Jl
dHVybiB0aGlzLl9zdWJtaXR0ZWR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJmb3JtRGlyZWN0aXZlIix7Z2V0OmZ1bmN0
aW9uKCl7cmV0dXJuIHRoaXN9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0
LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJjb250cm9sIix7Z2V0OmZ1bmN0aW9uKCl7cmV0
dXJuIHRoaXMuZm9ybX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVm
aW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInBhdGgiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm5bXX0s
ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5w
cm90b3R5cGUsImNvbnRyb2xzIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZm9ybS5jb250
cm9sc30sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5hZGRDb250
cm9sPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7UHQudGhlbihmdW5jdGlvbigpe3ZhciBuPWUuX2Zp
bmRDb250YWluZXIodC5wYXRoKTt0Ll9jb250cm9sPW4ucmVnaXN0ZXJDb250cm9sKHQubmFtZSx0
LmNvbnRyb2wpLHYodC5jb250cm9sLHQpLHQuY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5
KHtlbWl0RXZlbnQ6ITF9KX0pfSxlLnByb3RvdHlwZS5nZXRDb250cm9sPWZ1bmN0aW9uKHQpe3Jl
dHVybiB0aGlzLmZvcm0uZ2V0KHQucGF0aCl9LGUucHJvdG90eXBlLnJlbW92ZUNvbnRyb2w9ZnVu
Y3Rpb24odCl7dmFyIGU9dGhpcztQdC50aGVuKGZ1bmN0aW9uKCl7dmFyIG49ZS5fZmluZENvbnRh
aW5lcih0LnBhdGgpO24mJm4ucmVtb3ZlQ29udHJvbCh0Lm5hbWUpfSl9LGUucHJvdG90eXBlLmFk
ZEZvcm1Hcm91cD1mdW5jdGlvbih0KXt2YXIgZT10aGlzO1B0LnRoZW4oZnVuY3Rpb24oKXt2YXIg
bj1lLl9maW5kQ29udGFpbmVyKHQucGF0aCkscj1uZXcgT3Qoe30pO2Iocix0KSxuLnJlZ2lzdGVy
Q29udHJvbCh0Lm5hbWUsciksci51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6ITF9
KX0pfSxlLnByb3RvdHlwZS5yZW1vdmVGb3JtR3JvdXA9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztQ
dC50aGVuKGZ1bmN0aW9uKCl7dmFyIG49ZS5fZmluZENvbnRhaW5lcih0LnBhdGgpO24mJm4ucmVt
b3ZlQ29udHJvbCh0Lm5hbWUpfSl9LGUucHJvdG90eXBlLmdldEZvcm1Hcm91cD1mdW5jdGlvbih0
KXtyZXR1cm4gdGhpcy5mb3JtLmdldCh0LnBhdGgpfSxlLnByb3RvdHlwZS51cGRhdGVNb2RlbD1m
dW5jdGlvbih0LGUpe3ZhciBuPXRoaXM7UHQudGhlbihmdW5jdGlvbigpe24uZm9ybS5nZXQodC5w
YXRoKS5zZXRWYWx1ZShlKX0pfSxlLnByb3RvdHlwZS5zZXRWYWx1ZT1mdW5jdGlvbih0KXt0aGlz
LmNvbnRyb2wuc2V0VmFsdWUodCl9LGUucHJvdG90eXBlLm9uU3VibWl0PWZ1bmN0aW9uKHQpe3Jl
dHVybiB0aGlzLl9zdWJtaXR0ZWQ9ITAsdGhpcy5uZ1N1Ym1pdC5lbWl0KHQpLCExfSxlLnByb3Rv
dHlwZS5vblJlc2V0PWZ1bmN0aW9uKCl7dGhpcy5yZXNldEZvcm0oKX0sZS5wcm90b3R5cGUucmVz
ZXRGb3JtPWZ1bmN0aW9uKHQpe3ZvaWQgMD09PXQmJih0PXZvaWQgMCksdGhpcy5mb3JtLnJlc2V0
KHQpLHRoaXMuX3N1Ym1pdHRlZD0hMX0sZS5wcm90b3R5cGUuX2ZpbmRDb250YWluZXI9ZnVuY3Rp
b24odCl7cmV0dXJuIHQucG9wKCksdC5sZW5ndGg/dGhpcy5mb3JtLmdldCh0KTp0aGlzLmZvcm19
LGV9KEwpO0F0LmRlY29yYXRvcnM9W3t0eXBlOk4uVSxhcmdzOlt7c2VsZWN0b3I6ImZvcm06bm90
KFtuZ05vRm9ybV0pOm5vdChbZm9ybUdyb3VwXSksbmdGb3JtLFtuZ0Zvcm1dIixwcm92aWRlcnM6
W1N0XSxob3N0OnsiKHN1Ym1pdCkiOiJvblN1Ym1pdCgkZXZlbnQpIiwiKHJlc2V0KSI6Im9uUmVz
ZXQoKSJ9LG91dHB1dHM6WyJuZ1N1Ym1pdCJdLGV4cG9ydEFzOiJuZ0Zvcm0ifV19XSxBdC5jdG9y
UGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlw
ZTpOLkh9LHt0eXBlOk4uXzEyfSx7dHlwZTpOLkUsYXJnczpbQl19XX0se3R5cGU6QXJyYXksZGVj
b3JhdG9yczpbe3R5cGU6Ti5IfSx7dHlwZTpOLl8xMn0se3R5cGU6Ti5FLGFyZ3M6W0ddfV19XX07
LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4g
TUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFyIFR0PXtmb3JtQ29udHJv
bE5hbWU6J1xuICAgIDxkaXYgW2Zvcm1Hcm91cF09Im15R3JvdXAiPlxuICAgICAgPGlucHV0IGZv
cm1Db250cm9sTmFtZT0iZmlyc3ROYW1lIj5cbiAgICA8L2Rpdj5cblxuICAgIEluIHlvdXIgY2xh
c3M6XG5cbiAgICB0aGlzLm15R3JvdXAgPSBuZXcgRm9ybUdyb3VwKHtcbiAgICAgICBmaXJzdE5h
bWU6IG5ldyBGb3JtQ29udHJvbCgpXG4gICAgfSk7Jyxmb3JtR3JvdXBOYW1lOidcbiAgICA8ZGl2
IFtmb3JtR3JvdXBdPSJteUdyb3VwIj5cbiAgICAgICA8ZGl2IGZvcm1Hcm91cE5hbWU9InBlcnNv
biI+XG4gICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT0iZmlyc3ROYW1lIj5cbiAgICAg
ICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIEluIHlvdXIgY2xhc3M6XG5cbiAgICB0aGlzLm15
R3JvdXAgPSBuZXcgRm9ybUdyb3VwKHtcbiAgICAgICBwZXJzb246IG5ldyBGb3JtR3JvdXAoeyBm
aXJzdE5hbWU6IG5ldyBGb3JtQ29udHJvbCgpIH0pXG4gICAgfSk7Jyxmb3JtQXJyYXlOYW1lOidc
biAgICA8ZGl2IFtmb3JtR3JvdXBdPSJteUdyb3VwIj5cbiAgICAgIDxkaXYgZm9ybUFycmF5TmFt
ZT0iY2l0aWVzIj5cbiAgICAgICAgPGRpdiAqbmdGb3I9ImxldCBjaXR5IG9mIGNpdHlBcnJheS5j
b250cm9sczsgaW5kZXggYXMgaSI+XG4gICAgICAgICAgPGlucHV0IFtmb3JtQ29udHJvbE5hbWVd
PSJpIj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIElu
IHlvdXIgY2xhc3M6XG5cbiAgICB0aGlzLmNpdHlBcnJheSA9IG5ldyBGb3JtQXJyYXkoW25ldyBG
b3JtQ29udHJvbChcJ1NGXCcpXSk7XG4gICAgdGhpcy5teUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7
XG4gICAgICBjaXRpZXM6IHRoaXMuY2l0eUFycmF5XG4gICAgfSk7JyxuZ01vZGVsR3JvdXA6J1xu
ICAgIDxmb3JtPlxuICAgICAgIDxkaXYgbmdNb2RlbEdyb3VwPSJwZXJzb24iPlxuICAgICAgICAg
IDxpbnB1dCBbKG5nTW9kZWwpXT0icGVyc29uLm5hbWUiIG5hbWU9ImZpcnN0TmFtZSI+XG4gICAg
ICAgPC9kaXY+XG4gICAgPC9mb3JtPicsbmdNb2RlbFdpdGhGb3JtR3JvdXA6J1xuICAgIDxkaXYg
W2Zvcm1Hcm91cF09Im15R3JvdXAiPlxuICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9ImZp
cnN0TmFtZSI+XG4gICAgICAgPGlucHV0IFsobmdNb2RlbCldPSJzaG93TW9yZUNvbnRyb2xzIiBb
bmdNb2RlbE9wdGlvbnNdPSJ7c3RhbmRhbG9uZTogdHJ1ZX0iPlxuICAgIDwvZGl2PlxuICAnfSxr
dD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQubW9kZWxQYXJlbnRFeGNlcHRpb249
ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoJ1xuICAgICAgbmdNb2RlbCBjYW5ub3QgYmUgdXNl
ZCB0byByZWdpc3RlciBmb3JtIGNvbnRyb2xzIHdpdGggYSBwYXJlbnQgZm9ybUdyb3VwIGRpcmVj
dGl2ZS4gIFRyeSB1c2luZ1xuICAgICAgZm9ybUdyb3VwXCdzIHBhcnRuZXIgZGlyZWN0aXZlICJm
b3JtQ29udHJvbE5hbWUiIGluc3RlYWQuICBFeGFtcGxlOlxuXG4gICAgICAnK1R0LmZvcm1Db250
cm9sTmFtZSsiXG5cbiAgICAgIE9yLCBpZiB5b3UnZCBsaWtlIHRvIGF2b2lkIHJlZ2lzdGVyaW5n
IHRoaXMgZm9ybSBjb250cm9sLCBpbmRpY2F0ZSB0aGF0IGl0J3Mgc3RhbmRhbG9uZSBpbiBuZ01v
ZGVsT3B0aW9uczpcblxuICAgICAgRXhhbXBsZTpcblxuICAgICAgIitUdC5uZ01vZGVsV2l0aEZv
cm1Hcm91cCl9LHQuZm9ybUdyb3VwTmFtZUV4Y2VwdGlvbj1mdW5jdGlvbigpe3Rocm93IG5ldyBF
cnJvcigiXG4gICAgICBuZ01vZGVsIGNhbm5vdCBiZSB1c2VkIHRvIHJlZ2lzdGVyIGZvcm0gY29u
dHJvbHMgd2l0aCBhIHBhcmVudCBmb3JtR3JvdXBOYW1lIG9yIGZvcm1BcnJheU5hbWUgZGlyZWN0
aXZlLlxuXG4gICAgICBPcHRpb24gMTogVXNlIGZvcm1Db250cm9sTmFtZSBpbnN0ZWFkIG9mIG5n
TW9kZWwgKHJlYWN0aXZlIHN0cmF0ZWd5KTpcblxuICAgICAgIitUdC5mb3JtR3JvdXBOYW1lKyJc
blxuICAgICAgT3B0aW9uIDI6ICBVcGRhdGUgbmdNb2RlbCdzIHBhcmVudCBiZSBuZ01vZGVsR3Jv
dXAgKHRlbXBsYXRlLWRyaXZlbiBzdHJhdGVneSk6XG5cbiAgICAgICIrVHQubmdNb2RlbEdyb3Vw
KX0sdC5taXNzaW5nTmFtZUV4Y2VwdGlvbj1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcignSWYg
bmdNb2RlbCBpcyB1c2VkIHdpdGhpbiBhIGZvcm0gdGFnLCBlaXRoZXIgdGhlIG5hbWUgYXR0cmli
dXRlIG11c3QgYmUgc2V0IG9yIHRoZSBmb3JtXG4gICAgICBjb250cm9sIG11c3QgYmUgZGVmaW5l
ZCBhcyBcJ3N0YW5kYWxvbmVcJyBpbiBuZ01vZGVsT3B0aW9ucy5cblxuICAgICAgRXhhbXBsZSAx
OiA8aW5wdXQgWyhuZ01vZGVsKV09InBlcnNvbi5maXJzdE5hbWUiIG5hbWU9ImZpcnN0Ij5cbiAg
ICAgIEV4YW1wbGUgMjogPGlucHV0IFsobmdNb2RlbCldPSJwZXJzb24uZmlyc3ROYW1lIiBbbmdN
b2RlbE9wdGlvbnNdPSJ7c3RhbmRhbG9uZTogdHJ1ZX0iPicpfSx0Lm1vZGVsR3JvdXBQYXJlbnRF
eGNlcHRpb249ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIlxuICAgICAgbmdNb2RlbEdyb3Vw
IGNhbm5vdCBiZSB1c2VkIHdpdGggYSBwYXJlbnQgZm9ybUdyb3VwIGRpcmVjdGl2ZS5cblxuICAg
ICAgT3B0aW9uIDE6IFVzZSBmb3JtR3JvdXBOYW1lIGluc3RlYWQgb2YgbmdNb2RlbEdyb3VwIChy
ZWFjdGl2ZSBzdHJhdGVneSk6XG5cbiAgICAgICIrVHQuZm9ybUdyb3VwTmFtZSsiXG5cbiAgICAg
IE9wdGlvbiAyOiAgVXNlIGEgcmVndWxhciBmb3JtIHRhZyBpbnN0ZWFkIG9mIHRoZSBmb3JtR3Jv
dXAgZGlyZWN0aXZlICh0ZW1wbGF0ZS1kcml2ZW4gc3RyYXRlZ3kpOlxuXG4gICAgICAiK1R0Lm5n
TW9kZWxHcm91cCl9LHR9KCksVnQ9e3Byb3ZpZGU6TCx1c2VFeGlzdGluZzpuLmkoTi5fOSkoZnVu
Y3Rpb24oKXtyZXR1cm4gTXR9KX0sTXQ9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4scil7dmFy
IG89dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBvLl9wYXJlbnQ9ZSxvLl92YWxpZGF0b3JzPW4s
by5fYXN5bmNWYWxpZGF0b3JzPXIsb31yZXR1cm4gRihlLHQpLGUucHJvdG90eXBlLl9jaGVja1Bh
cmVudFR5cGU9ZnVuY3Rpb24oKXt0aGlzLl9wYXJlbnQgaW5zdGFuY2VvZiBlfHx0aGlzLl9wYXJl
bnQgaW5zdGFuY2VvZiBBdHx8a3QubW9kZWxHcm91cFBhcmVudEV4Y2VwdGlvbigpfSxlfShodCk7
TXQuZGVjb3JhdG9ycz1be3R5cGU6Ti5VLGFyZ3M6W3tzZWxlY3RvcjoiW25nTW9kZWxHcm91cF0i
LHByb3ZpZGVyczpbVnRdLGV4cG9ydEFzOiJuZ01vZGVsR3JvdXAifV19XSxNdC5jdG9yUGFyYW1l
dGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTpMLGRlY29yYXRvcnM6W3t0eXBlOk4uXzJ9LHt0
eXBlOk4uUX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpOLkh9LHt0eXBlOk4uXzEy
fSx7dHlwZTpOLkUsYXJnczpbQl19XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6Ti5I
fSx7dHlwZTpOLl8xMn0se3R5cGU6Ti5FLGFyZ3M6W0ddfV19XX0sTXQucHJvcERlY29yYXRvcnM9
e25hbWU6W3t0eXBlOk4uWCxhcmdzOlsibmdNb2RlbEdyb3VwIl19XX07LyoqCisgKiBAbGljZW5z
ZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9h
bmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFyIE50PXtwcm92aWRlOnR0LHVzZUV4aXN0aW5nOm4u
aShOLl85KShmdW5jdGlvbigpe3JldHVybiBSdH0pfSxqdD1Qcm9taXNlLnJlc29sdmUobnVsbCks
UnQ9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4scixvKXt2YXIgaT10LmNhbGwodGhpcyl8fHRo
aXM7cmV0dXJuIGkuX2NvbnRyb2w9bmV3IEV0LGkuX3JlZ2lzdGVyZWQ9ITEsaS51cGRhdGU9bmV3
IE4uUixpLl9wYXJlbnQ9ZSxpLl9yYXdWYWxpZGF0b3JzPW58fFtdLGkuX3Jhd0FzeW5jVmFsaWRh
dG9ycz1yfHxbXSxpLnZhbHVlQWNjZXNzb3I9UChpLG8pLGl9cmV0dXJuIEYoZSx0KSxlLnByb3Rv
dHlwZS5uZ09uQ2hhbmdlcz1mdW5jdGlvbih0KXt0aGlzLl9jaGVja0ZvckVycm9ycygpLHRoaXMu
X3JlZ2lzdGVyZWR8fHRoaXMuX3NldFVwQ29udHJvbCgpLCJpc0Rpc2FibGVkImluIHQmJnRoaXMu
X3VwZGF0ZURpc2FibGVkKHQpLHgodCx0aGlzLnZpZXdNb2RlbCkmJih0aGlzLl91cGRhdGVWYWx1
ZSh0aGlzLm1vZGVsKSx0aGlzLnZpZXdNb2RlbD10aGlzLm1vZGVsKX0sZS5wcm90b3R5cGUubmdP
bkRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLmZvcm1EaXJlY3RpdmUmJnRoaXMuZm9ybURpcmVjdGl2
ZS5yZW1vdmVDb250cm9sKHRoaXMpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUs
ImNvbnRyb2wiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY29udHJvbH0sZW51bWVyYWJs
ZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUs
InBhdGgiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGFyZW50P2codGhpcy5uYW1lLHRo
aXMuX3BhcmVudCk6W3RoaXMubmFtZV19LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSks
T2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJmb3JtRGlyZWN0aXZlIix7Z2V0OmZ1
bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BhcmVudD90aGlzLl9wYXJlbnQuZm9ybURpcmVjdGl2ZTpu
dWxsfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0
eShlLnByb3RvdHlwZSwidmFsaWRhdG9yIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcy5f
cmF3VmFsaWRhdG9ycyl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRl
ZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJhc3luY1ZhbGlkYXRvciIse2dldDpmdW5jdGlvbigp
e3JldHVybiBPKHRoaXMuX3Jhd0FzeW5jVmFsaWRhdG9ycyl9LGVudW1lcmFibGU6ITAsY29uZmln
dXJhYmxlOiEwfSksZS5wcm90b3R5cGUudmlld1RvTW9kZWxVcGRhdGU9ZnVuY3Rpb24odCl7dGhp
cy52aWV3TW9kZWw9dCx0aGlzLnVwZGF0ZS5lbWl0KHQpfSxlLnByb3RvdHlwZS5fc2V0VXBDb250
cm9sPWZ1bmN0aW9uKCl7dGhpcy5faXNTdGFuZGFsb25lKCk/dGhpcy5fc2V0VXBTdGFuZGFsb25l
KCk6dGhpcy5mb3JtRGlyZWN0aXZlLmFkZENvbnRyb2wodGhpcyksdGhpcy5fcmVnaXN0ZXJlZD0h
MH0sZS5wcm90b3R5cGUuX2lzU3RhbmRhbG9uZT1mdW5jdGlvbigpe3JldHVybiF0aGlzLl9wYXJl
bnR8fHRoaXMub3B0aW9ucyYmdGhpcy5vcHRpb25zLnN0YW5kYWxvbmV9LGUucHJvdG90eXBlLl9z
ZXRVcFN0YW5kYWxvbmU9ZnVuY3Rpb24oKXt2KHRoaXMuX2NvbnRyb2wsdGhpcyksdGhpcy5fY29u
dHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6ITF9KX0sZS5wcm90b3R5cGUu
X2NoZWNrRm9yRXJyb3JzPWZ1bmN0aW9uKCl7dGhpcy5faXNTdGFuZGFsb25lKCl8fHRoaXMuX2No
ZWNrUGFyZW50VHlwZSgpLHRoaXMuX2NoZWNrTmFtZSgpfSxlLnByb3RvdHlwZS5fY2hlY2tQYXJl
bnRUeXBlPWZ1bmN0aW9uKCl7ISh0aGlzLl9wYXJlbnQgaW5zdGFuY2VvZiBNdCkmJnRoaXMuX3Bh
cmVudCBpbnN0YW5jZW9mIGh0P2t0LmZvcm1Hcm91cE5hbWVFeGNlcHRpb24oKTp0aGlzLl9wYXJl
bnQgaW5zdGFuY2VvZiBNdHx8dGhpcy5fcGFyZW50IGluc3RhbmNlb2YgQXR8fGt0Lm1vZGVsUGFy
ZW50RXhjZXB0aW9uKCl9LGUucHJvdG90eXBlLl9jaGVja05hbWU9ZnVuY3Rpb24oKXt0aGlzLm9w
dGlvbnMmJnRoaXMub3B0aW9ucy5uYW1lJiYodGhpcy5uYW1lPXRoaXMub3B0aW9ucy5uYW1lKSx0
aGlzLl9pc1N0YW5kYWxvbmUoKXx8dGhpcy5uYW1lfHxrdC5taXNzaW5nTmFtZUV4Y2VwdGlvbigp
fSxlLnByb3RvdHlwZS5fdXBkYXRlVmFsdWU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztqdC50aGVu
KGZ1bmN0aW9uKCl7ZS5jb250cm9sLnNldFZhbHVlKHQse2VtaXRWaWV3VG9Nb2RlbENoYW5nZToh
MX0pfSl9LGUucHJvdG90eXBlLl91cGRhdGVEaXNhYmxlZD1mdW5jdGlvbih0KXt2YXIgZT10aGlz
LG49dC5pc0Rpc2FibGVkLmN1cnJlbnRWYWx1ZSxyPSIiPT09bnx8biYmImZhbHNlIiE9PW47anQu
dGhlbihmdW5jdGlvbigpe3ImJiFlLmNvbnRyb2wuZGlzYWJsZWQ/ZS5jb250cm9sLmRpc2FibGUo
KTohciYmZS5jb250cm9sLmRpc2FibGVkJiZlLmNvbnRyb2wuZW5hYmxlKCl9KX0sZX0odHQpO1J0
LmRlY29yYXRvcnM9W3t0eXBlOk4uVSxhcmdzOlt7c2VsZWN0b3I6IltuZ01vZGVsXTpub3QoW2Zv
cm1Db250cm9sTmFtZV0pOm5vdChbZm9ybUNvbnRyb2xdKSIscHJvdmlkZXJzOltOdF0sZXhwb3J0
QXM6Im5nTW9kZWwifV19XSxSdC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlw
ZTpMLGRlY29yYXRvcnM6W3t0eXBlOk4uSH0se3R5cGU6Ti5fMn1dfSx7dHlwZTpBcnJheSxkZWNv
cmF0b3JzOlt7dHlwZTpOLkh9LHt0eXBlOk4uXzEyfSx7dHlwZTpOLkUsYXJnczpbQl19XX0se3R5
cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6Ti5IfSx7dHlwZTpOLl8xMn0se3R5cGU6Ti5FLGFy
Z3M6W0ddfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOk4uSH0se3R5cGU6Ti5fMTJ9
LHt0eXBlOk4uRSxhcmdzOltaXX1dfV19LFJ0LnByb3BEZWNvcmF0b3JzPXtuYW1lOlt7dHlwZTpO
Llh9XSxpc0Rpc2FibGVkOlt7dHlwZTpOLlgsYXJnczpbImRpc2FibGVkIl19XSxtb2RlbDpbe3R5
cGU6Ti5YLGFyZ3M6WyJuZ01vZGVsIl19XSxvcHRpb25zOlt7dHlwZTpOLlgsYXJnczpbIm5nTW9k
ZWxPcHRpb25zIl19XSx1cGRhdGU6W3t0eXBlOk4uXzEzLGFyZ3M6WyJuZ01vZGVsQ2hhbmdlIl19
XX07LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFyIER0PWZ1bmN0aW9u
KCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5jb250cm9sUGFyZW50RXhjZXB0aW9uPWZ1bmN0aW9u
KCl7dGhyb3cgbmV3IEVycm9yKCJmb3JtQ29udHJvbE5hbWUgbXVzdCBiZSB1c2VkIHdpdGggYSBw
YXJlbnQgZm9ybUdyb3VwIGRpcmVjdGl2ZS4gIFlvdSdsbCB3YW50IHRvIGFkZCBhIGZvcm1Hcm91
cFxuICAgICAgIGRpcmVjdGl2ZSBhbmQgcGFzcyBpdCBhbiBleGlzdGluZyBGb3JtR3JvdXAgaW5z
dGFuY2UgKHlvdSBjYW4gY3JlYXRlIG9uZSBpbiB5b3VyIGNsYXNzKS5cblxuICAgICAgRXhhbXBs
ZTpcblxuICAgICAgIitUdC5mb3JtQ29udHJvbE5hbWUpfSx0Lm5nTW9kZWxHcm91cEV4Y2VwdGlv
bj1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcignZm9ybUNvbnRyb2xOYW1lIGNhbm5vdCBiZSB1
c2VkIHdpdGggYW4gbmdNb2RlbEdyb3VwIHBhcmVudC4gSXQgaXMgb25seSBjb21wYXRpYmxlIHdp
dGggcGFyZW50c1xuICAgICAgIHRoYXQgYWxzbyBoYXZlIGEgImZvcm0iIHByZWZpeDogZm9ybUdy
b3VwTmFtZSwgZm9ybUFycmF5TmFtZSwgb3IgZm9ybUdyb3VwLlxuXG4gICAgICAgT3B0aW9uIDE6
ICBVcGRhdGUgdGhlIHBhcmVudCB0byBiZSBmb3JtR3JvdXBOYW1lIChyZWFjdGl2ZSBmb3JtIHN0
cmF0ZWd5KVxuXG4gICAgICAgICcrVHQuZm9ybUdyb3VwTmFtZSsiXG5cbiAgICAgICAgT3B0aW9u
IDI6IFVzZSBuZ01vZGVsIGluc3RlYWQgb2YgZm9ybUNvbnRyb2xOYW1lICh0ZW1wbGF0ZS1kcml2
ZW4gc3RyYXRlZ3kpXG5cbiAgICAgICAgIitUdC5uZ01vZGVsR3JvdXApfSx0Lm1pc3NpbmdGb3Jt
RXhjZXB0aW9uPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJmb3JtR3JvdXAgZXhwZWN0cyBh
IEZvcm1Hcm91cCBpbnN0YW5jZS4gUGxlYXNlIHBhc3Mgb25lIGluLlxuXG4gICAgICAgRXhhbXBs
ZTpcblxuICAgICAgICIrVHQuZm9ybUNvbnRyb2xOYW1lKX0sdC5ncm91cFBhcmVudEV4Y2VwdGlv
bj1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiZm9ybUdyb3VwTmFtZSBtdXN0IGJlIHVzZWQg
d2l0aCBhIHBhcmVudCBmb3JtR3JvdXAgZGlyZWN0aXZlLiAgWW91J2xsIHdhbnQgdG8gYWRkIGEg
Zm9ybUdyb3VwXG4gICAgICBkaXJlY3RpdmUgYW5kIHBhc3MgaXQgYW4gZXhpc3RpbmcgRm9ybUdy
b3VwIGluc3RhbmNlICh5b3UgY2FuIGNyZWF0ZSBvbmUgaW4geW91ciBjbGFzcykuXG5cbiAgICAg
IEV4YW1wbGU6XG5cbiAgICAgICIrVHQuZm9ybUdyb3VwTmFtZSl9LHQuYXJyYXlQYXJlbnRFeGNl
cHRpb249ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoImZvcm1BcnJheU5hbWUgbXVzdCBiZSB1
c2VkIHdpdGggYSBwYXJlbnQgZm9ybUdyb3VwIGRpcmVjdGl2ZS4gIFlvdSdsbCB3YW50IHRvIGFk
ZCBhIGZvcm1Hcm91cFxuICAgICAgIGRpcmVjdGl2ZSBhbmQgcGFzcyBpdCBhbiBleGlzdGluZyBG
b3JtR3JvdXAgaW5zdGFuY2UgKHlvdSBjYW4gY3JlYXRlIG9uZSBpbiB5b3VyIGNsYXNzKS5cblxu
ICAgICAgICBFeGFtcGxlOlxuXG4gICAgICAgICIrVHQuZm9ybUFycmF5TmFtZSl9LHQuZGlzYWJs
ZWRBdHRyV2FybmluZz1mdW5jdGlvbigpe2NvbnNvbGUud2FybigiXG4gICAgICBJdCBsb29rcyBs
aWtlIHlvdSdyZSB1c2luZyB0aGUgZGlzYWJsZWQgYXR0cmlidXRlIHdpdGggYSByZWFjdGl2ZSBm
b3JtIGRpcmVjdGl2ZS4gSWYgeW91IHNldCBkaXNhYmxlZCB0byB0cnVlXG4gICAgICB3aGVuIHlv
dSBzZXQgdXAgdGhpcyBjb250cm9sIGluIHlvdXIgY29tcG9uZW50IGNsYXNzLCB0aGUgZGlzYWJs
ZWQgYXR0cmlidXRlIHdpbGwgYWN0dWFsbHkgYmUgc2V0IGluIHRoZSBET00gZm9yXG4gICAgICB5
b3UuIFdlIHJlY29tbWVuZCB1c2luZyB0aGlzIGFwcHJvYWNoIHRvIGF2b2lkICdjaGFuZ2VkIGFm
dGVyIGNoZWNrZWQnIGVycm9ycy5cbiAgICAgICBcbiAgICAgIEV4YW1wbGU6IFxuICAgICAgZm9y
bSA9IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgICBmaXJzdDogbmV3IEZvcm1Db250cm9sKHt2YWx1
ZTogJ05hbmN5JywgZGlzYWJsZWQ6IHRydWV9LCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAg
ICAgbGFzdDogbmV3IEZvcm1Db250cm9sKCdEcmV3JywgVmFsaWRhdG9ycy5yZXF1aXJlZClcbiAg
ICAgIH0pO1xuICAgICIpfSx0fSgpLEl0PXtwcm92aWRlOnR0LHVzZUV4aXN0aW5nOm4uaShOLl85
KShmdW5jdGlvbigpe3JldHVybiBGdH0pfSxGdD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbixy
KXt2YXIgbz10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIG8udXBkYXRlPW5ldyBOLlIsby5fcmF3
VmFsaWRhdG9ycz1lfHxbXSxvLl9yYXdBc3luY1ZhbGlkYXRvcnM9bnx8W10sby52YWx1ZUFjY2Vz
c29yPVAobyxyKSxvfXJldHVybiBGKGUsdCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90
eXBlLCJpc0Rpc2FibGVkIix7c2V0OmZ1bmN0aW9uKHQpe0R0LmRpc2FibGVkQXR0cldhcm5pbmco
KX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5uZ09uQ2hhbmdl
cz1mdW5jdGlvbih0KXt0aGlzLl9pc0NvbnRyb2xDaGFuZ2VkKHQpJiYodih0aGlzLmZvcm0sdGhp
cyksdGhpcy5jb250cm9sLmRpc2FibGVkJiZ0aGlzLnZhbHVlQWNjZXNzb3Iuc2V0RGlzYWJsZWRT
dGF0ZSYmdGhpcy52YWx1ZUFjY2Vzc29yLnNldERpc2FibGVkU3RhdGUoITApLHRoaXMuZm9ybS51
cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6ITF9KSkseCh0LHRoaXMudmlld01vZGVs
KSYmKHRoaXMuZm9ybS5zZXRWYWx1ZSh0aGlzLm1vZGVsKSx0aGlzLnZpZXdNb2RlbD10aGlzLm1v
ZGVsKX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJwYXRoIix7Z2V0OmZ1bmN0
aW9uKCl7cmV0dXJuW119LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRl
ZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJ2YWxpZGF0b3IiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1
cm4gRSh0aGlzLl9yYXdWYWxpZGF0b3JzKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9
KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImFzeW5jVmFsaWRhdG9yIix7Z2V0
OmZ1bmN0aW9uKCl7cmV0dXJuIE8odGhpcy5fcmF3QXN5bmNWYWxpZGF0b3JzKX0sZW51bWVyYWJs
ZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUs
ImNvbnRyb2wiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5mb3JtfSxlbnVtZXJhYmxlOiEw
LGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLnZpZXdUb01vZGVsVXBkYXRlPWZ1bmN0aW9u
KHQpe3RoaXMudmlld01vZGVsPXQsdGhpcy51cGRhdGUuZW1pdCh0KX0sZS5wcm90b3R5cGUuX2lz
Q29udHJvbENoYW5nZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQuaGFzT3duUHJvcGVydHkoImZvcm0i
KX0sZX0odHQpO0Z0LmRlY29yYXRvcnM9W3t0eXBlOk4uVSxhcmdzOlt7c2VsZWN0b3I6Iltmb3Jt
Q29udHJvbF0iLHByb3ZpZGVyczpbSXRdLGV4cG9ydEFzOiJuZ0Zvcm0ifV19XSxGdC5jdG9yUGFy
YW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpO
Lkh9LHt0eXBlOk4uXzEyfSx7dHlwZTpOLkUsYXJnczpbQl19XX0se3R5cGU6QXJyYXksZGVjb3Jh
dG9yczpbe3R5cGU6Ti5IfSx7dHlwZTpOLl8xMn0se3R5cGU6Ti5FLGFyZ3M6W0ddfV19LHt0eXBl
OkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOk4uSH0se3R5cGU6Ti5fMTJ9LHt0eXBlOk4uRSxhcmdz
OltaXX1dfV19LEZ0LnByb3BEZWNvcmF0b3JzPXtmb3JtOlt7dHlwZTpOLlgsYXJnczpbImZvcm1D
b250cm9sIl19XSxtb2RlbDpbe3R5cGU6Ti5YLGFyZ3M6WyJuZ01vZGVsIl19XSx1cGRhdGU6W3t0
eXBlOk4uXzEzLGFyZ3M6WyJuZ01vZGVsQ2hhbmdlIl19XSxpc0Rpc2FibGVkOlt7dHlwZTpOLlgs
YXJnczpbImRpc2FibGVkIl19XX07LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2ds
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAq
LwordmFyIEh0PXtwcm92aWRlOkwsdXNlRXhpc3Rpbmc6bi5pKE4uXzkpKGZ1bmN0aW9uKCl7cmV0
dXJuIEx0fSl9LEx0PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuKXt2YXIgcj10LmNhbGwodGhp
cyl8fHRoaXM7cmV0dXJuIHIuX3ZhbGlkYXRvcnM9ZSxyLl9hc3luY1ZhbGlkYXRvcnM9bixyLl9z
dWJtaXR0ZWQ9ITEsci5kaXJlY3RpdmVzPVtdLHIuZm9ybT1udWxsLHIubmdTdWJtaXQ9bmV3IE4u
UixyfXJldHVybiBGKGUsdCksZS5wcm90b3R5cGUubmdPbkNoYW5nZXM9ZnVuY3Rpb24odCl7dGhp
cy5fY2hlY2tGb3JtUHJlc2VudCgpLHQuaGFzT3duUHJvcGVydHkoImZvcm0iKSYmKHRoaXMuX3Vw
ZGF0ZVZhbGlkYXRvcnMoKSx0aGlzLl91cGRhdGVEb21WYWx1ZSgpLHRoaXMuX3VwZGF0ZVJlZ2lz
dHJhdGlvbnMoKSl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwic3VibWl0dGVk
Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N1Ym1pdHRlZH0sZW51bWVyYWJsZTohMCxj
b25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImZvcm1E
aXJlY3RpdmUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sZW51bWVyYWJsZTohMCxjb25m
aWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImNvbnRyb2wi
LHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5mb3JtfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3Vy
YWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwicGF0aCIse2dldDpm
dW5jdGlvbigpe3JldHVybltdfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJv
dG90eXBlLmFkZENvbnRyb2w9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5mb3JtLmdldCh0LnBhdGgp
O3JldHVybiB2KGUsdCksZS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6ITF9KSx0
aGlzLmRpcmVjdGl2ZXMucHVzaCh0KSxlfSxlLnByb3RvdHlwZS5nZXRDb250cm9sPWZ1bmN0aW9u
KHQpe3JldHVybiB0aGlzLmZvcm0uZ2V0KHQucGF0aCl9LGUucHJvdG90eXBlLnJlbW92ZUNvbnRy
b2w9ZnVuY3Rpb24odCl7Vih0aGlzLmRpcmVjdGl2ZXMsdCl9LGUucHJvdG90eXBlLmFkZEZvcm1H
cm91cD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmZvcm0uZ2V0KHQucGF0aCk7YihlLHQpLGUudXBk
YXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50OiExfSl9LGUucHJvdG90eXBlLnJlbW92ZUZv
cm1Hcm91cD1mdW5jdGlvbih0KXt9LGUucHJvdG90eXBlLmdldEZvcm1Hcm91cD1mdW5jdGlvbih0
KXtyZXR1cm4gdGhpcy5mb3JtLmdldCh0LnBhdGgpfSxlLnByb3RvdHlwZS5hZGRGb3JtQXJyYXk9
ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5mb3JtLmdldCh0LnBhdGgpO2IoZSx0KSxlLnVwZGF0ZVZh
bHVlQW5kVmFsaWRpdHkoe2VtaXRFdmVudDohMX0pfSxlLnByb3RvdHlwZS5yZW1vdmVGb3JtQXJy
YXk9ZnVuY3Rpb24odCl7fSxlLnByb3RvdHlwZS5nZXRGb3JtQXJyYXk9ZnVuY3Rpb24odCl7cmV0
dXJuIHRoaXMuZm9ybS5nZXQodC5wYXRoKX0sZS5wcm90b3R5cGUudXBkYXRlTW9kZWw9ZnVuY3Rp
b24odCxlKXt0aGlzLmZvcm0uZ2V0KHQucGF0aCkuc2V0VmFsdWUoZSl9LGUucHJvdG90eXBlLm9u
U3VibWl0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9zdWJtaXR0ZWQ9ITAsdGhpcy5uZ1N1Ym1p
dC5lbWl0KHQpLCExfSxlLnByb3RvdHlwZS5vblJlc2V0PWZ1bmN0aW9uKCl7dGhpcy5yZXNldEZv
cm0oKX0sZS5wcm90b3R5cGUucmVzZXRGb3JtPWZ1bmN0aW9uKHQpe3ZvaWQgMD09PXQmJih0PXZv
aWQgMCksdGhpcy5mb3JtLnJlc2V0KHQpLHRoaXMuX3N1Ym1pdHRlZD0hMX0sZS5wcm90b3R5cGUu
X3VwZGF0ZURvbVZhbHVlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLmRpcmVjdGl2ZXMuZm9y
RWFjaChmdW5jdGlvbihlKXt2YXIgbj10LmZvcm0uZ2V0KGUucGF0aCk7ZS5fY29udHJvbCE9PW4m
JihfKGUuX2NvbnRyb2wsZSksbiYmdihuLGUpLGUuX2NvbnRyb2w9bil9KSx0aGlzLmZvcm0uX3Vw
ZGF0ZVRyZWVWYWxpZGl0eSh7ZW1pdEV2ZW50OiExfSl9LGUucHJvdG90eXBlLl91cGRhdGVSZWdp
c3RyYXRpb25zPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLmZvcm0uX3JlZ2lzdGVyT25Db2xs
ZWN0aW9uQ2hhbmdlKGZ1bmN0aW9uKCl7cmV0dXJuIHQuX3VwZGF0ZURvbVZhbHVlKCl9KSx0aGlz
Ll9vbGRGb3JtJiZ0aGlzLl9vbGRGb3JtLl9yZWdpc3Rlck9uQ29sbGVjdGlvbkNoYW5nZShmdW5j
dGlvbigpe30pLHRoaXMuX29sZEZvcm09dGhpcy5mb3JtfSxlLnByb3RvdHlwZS5fdXBkYXRlVmFs
aWRhdG9ycz1mdW5jdGlvbigpe3ZhciB0PUUodGhpcy5fdmFsaWRhdG9ycyk7dGhpcy5mb3JtLnZh
bGlkYXRvcj1xLmNvbXBvc2UoW3RoaXMuZm9ybS52YWxpZGF0b3IsdF0pO3ZhciBlPU8odGhpcy5f
YXN5bmNWYWxpZGF0b3JzKTt0aGlzLmZvcm0uYXN5bmNWYWxpZGF0b3I9cS5jb21wb3NlQXN5bmMo
W3RoaXMuZm9ybS5hc3luY1ZhbGlkYXRvcixlXSl9LGUucHJvdG90eXBlLl9jaGVja0Zvcm1QcmVz
ZW50PWZ1bmN0aW9uKCl7dGhpcy5mb3JtfHxEdC5taXNzaW5nRm9ybUV4Y2VwdGlvbigpfSxlfShM
KTtMdC5kZWNvcmF0b3JzPVt7dHlwZTpOLlUsYXJnczpbe3NlbGVjdG9yOiJbZm9ybUdyb3VwXSIs
cHJvdmlkZXJzOltIdF0saG9zdDp7IihzdWJtaXQpIjoib25TdWJtaXQoJGV2ZW50KSIsIihyZXNl
dCkiOiJvblJlc2V0KCkifSxleHBvcnRBczoibmdGb3JtIn1dfV0sTHQuY3RvclBhcmFtZXRlcnM9
ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6Ti5IfSx7dHlw
ZTpOLl8xMn0se3R5cGU6Ti5FLGFyZ3M6W0JdfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0
eXBlOk4uSH0se3R5cGU6Ti5fMTJ9LHt0eXBlOk4uRSxhcmdzOltHXX1dfV19LEx0LnByb3BEZWNv
cmF0b3JzPXtmb3JtOlt7dHlwZTpOLlgsYXJnczpbImZvcm1Hcm91cCJdfV0sbmdTdWJtaXQ6W3t0
eXBlOk4uXzEzfV19Oy8qKgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8KK3ZhciBV
dD17cHJvdmlkZTpMLHVzZUV4aXN0aW5nOm4uaShOLl85KShmdW5jdGlvbigpe3JldHVybiBCdH0p
fSxCdD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbixyKXt2YXIgbz10LmNhbGwodGhpcyl8fHRo
aXM7cmV0dXJuIG8uX3BhcmVudD1lLG8uX3ZhbGlkYXRvcnM9bixvLl9hc3luY1ZhbGlkYXRvcnM9
cixvfXJldHVybiBGKGUsdCksZS5wcm90b3R5cGUuX2NoZWNrUGFyZW50VHlwZT1mdW5jdGlvbigp
e00odGhpcy5fcGFyZW50KSYmRHQuZ3JvdXBQYXJlbnRFeGNlcHRpb24oKX0sZX0oaHQpO0J0LmRl
Y29yYXRvcnM9W3t0eXBlOk4uVSxhcmdzOlt7c2VsZWN0b3I6Iltmb3JtR3JvdXBOYW1lXSIscHJv
dmlkZXJzOltVdF19XX1dLEJ0LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBl
OkwsZGVjb3JhdG9yczpbe3R5cGU6Ti5IfSx7dHlwZTpOLl8yfSx7dHlwZTpOLlF9XX0se3R5cGU6
QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6Ti5IfSx7dHlwZTpOLl8xMn0se3R5cGU6Ti5FLGFyZ3M6
W0JdfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOk4uSH0se3R5cGU6Ti5fMTJ9LHt0
eXBlOk4uRSxhcmdzOltHXX1dfV19LEJ0LnByb3BEZWNvcmF0b3JzPXtuYW1lOlt7dHlwZTpOLlgs
YXJnczpbImZvcm1Hcm91cE5hbWUiXX1dfTt2YXIgR3Q9e3Byb3ZpZGU6TCx1c2VFeGlzdGluZzpu
LmkoTi5fOSkoZnVuY3Rpb24oKXtyZXR1cm4genR9KX0senQ9ZnVuY3Rpb24odCl7ZnVuY3Rpb24g
ZShlLG4scil7dmFyIG89dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBvLl9wYXJlbnQ9ZSxvLl92
YWxpZGF0b3JzPW4sby5fYXN5bmNWYWxpZGF0b3JzPXIsb31yZXR1cm4gRihlLHQpLGUucHJvdG90
eXBlLm5nT25Jbml0PWZ1bmN0aW9uKCl7dGhpcy5fY2hlY2tQYXJlbnRUeXBlKCksdGhpcy5mb3Jt
RGlyZWN0aXZlLmFkZEZvcm1BcnJheSh0aGlzKX0sZS5wcm90b3R5cGUubmdPbkRlc3Ryb3k9ZnVu
Y3Rpb24oKXt0aGlzLmZvcm1EaXJlY3RpdmUmJnRoaXMuZm9ybURpcmVjdGl2ZS5yZW1vdmVGb3Jt
QXJyYXkodGhpcyl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiY29udHJvbCIs
e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmZvcm1EaXJlY3RpdmUuZ2V0Rm9ybUFycmF5KHRo
aXMpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0
eShlLnByb3RvdHlwZSwiZm9ybURpcmVjdGl2ZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlz
Ll9wYXJlbnQ/dGhpcy5fcGFyZW50LmZvcm1EaXJlY3RpdmU6bnVsbH0sZW51bWVyYWJsZTohMCxj
b25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInBhdGgi
LHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZyh0aGlzLm5hbWUsdGhpcy5fcGFyZW50KX0sZW51bWVy
YWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5
cGUsInZhbGlkYXRvciIse2dldDpmdW5jdGlvbigpe3JldHVybiBFKHRoaXMuX3ZhbGlkYXRvcnMp
fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShl
LnByb3RvdHlwZSwiYXN5bmNWYWxpZGF0b3IiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gTyh0aGlz
Ll9hc3luY1ZhbGlkYXRvcnMpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJv
dG90eXBlLl9jaGVja1BhcmVudFR5cGU9ZnVuY3Rpb24oKXtNKHRoaXMuX3BhcmVudCkmJkR0LmFy
cmF5UGFyZW50RXhjZXB0aW9uKCl9LGV9KEwpO3p0LmRlY29yYXRvcnM9W3t0eXBlOk4uVSxhcmdz
Olt7c2VsZWN0b3I6Iltmb3JtQXJyYXlOYW1lXSIscHJvdmlkZXJzOltHdF19XX1dLHp0LmN0b3JQ
YXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkwsZGVjb3JhdG9yczpbe3R5cGU6Ti5I
fSx7dHlwZTpOLl8yfSx7dHlwZTpOLlF9XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6
Ti5IfSx7dHlwZTpOLl8xMn0se3R5cGU6Ti5FLGFyZ3M6W0JdfV19LHt0eXBlOkFycmF5LGRlY29y
YXRvcnM6W3t0eXBlOk4uSH0se3R5cGU6Ti5fMTJ9LHt0eXBlOk4uRSxhcmdzOltHXX1dfV19LHp0
LnByb3BEZWNvcmF0b3JzPXtuYW1lOlt7dHlwZTpOLlgsYXJnczpbImZvcm1BcnJheU5hbWUiXX1d
fTsvKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
biBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCit2YXIgcXQ9e3Byb3ZpZGU6
dHQsdXNlRXhpc3Rpbmc6bi5pKE4uXzkpKGZ1bmN0aW9uKCl7cmV0dXJuIFp0fSl9LFp0PWZ1bmN0
aW9uKHQpe2Z1bmN0aW9uIGUoZSxuLHIsbyl7dmFyIGk9dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVy
biBpLl9hZGRlZD0hMSxpLnVwZGF0ZT1uZXcgTi5SLGkuX3BhcmVudD1lLGkuX3Jhd1ZhbGlkYXRv
cnM9bnx8W10saS5fcmF3QXN5bmNWYWxpZGF0b3JzPXJ8fFtdLGkudmFsdWVBY2Nlc3Nvcj1QKGks
byksaX1yZXR1cm4gRihlLHQpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiaXNE
aXNhYmxlZCIse3NldDpmdW5jdGlvbih0KXtEdC5kaXNhYmxlZEF0dHJXYXJuaW5nKCl9LGVudW1l
cmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUubmdPbkNoYW5nZXM9ZnVuY3Rp
b24odCl7dGhpcy5fYWRkZWR8fHRoaXMuX3NldFVwQ29udHJvbCgpLHgodCx0aGlzLnZpZXdNb2Rl
bCkmJih0aGlzLnZpZXdNb2RlbD10aGlzLm1vZGVsLHRoaXMuZm9ybURpcmVjdGl2ZS51cGRhdGVN
b2RlbCh0aGlzLHRoaXMubW9kZWwpKX0sZS5wcm90b3R5cGUubmdPbkRlc3Ryb3k9ZnVuY3Rpb24o
KXt0aGlzLmZvcm1EaXJlY3RpdmUmJnRoaXMuZm9ybURpcmVjdGl2ZS5yZW1vdmVDb250cm9sKHRo
aXMpfSxlLnByb3RvdHlwZS52aWV3VG9Nb2RlbFVwZGF0ZT1mdW5jdGlvbih0KXt0aGlzLnZpZXdN
b2RlbD10LHRoaXMudXBkYXRlLmVtaXQodCl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3Rv
dHlwZSwicGF0aCIse2dldDpmdW5jdGlvbigpe3JldHVybiBnKHRoaXMubmFtZSx0aGlzLl9wYXJl
bnQpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0
eShlLnByb3RvdHlwZSwiZm9ybURpcmVjdGl2ZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlz
Ll9wYXJlbnQ/dGhpcy5fcGFyZW50LmZvcm1EaXJlY3RpdmU6bnVsbH0sZW51bWVyYWJsZTohMCxj
b25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInZhbGlk
YXRvciIse2dldDpmdW5jdGlvbigpe3JldHVybiBFKHRoaXMuX3Jhd1ZhbGlkYXRvcnMpfSxlbnVt
ZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3Rv
dHlwZSwiYXN5bmNWYWxpZGF0b3IiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gTyh0aGlzLl9yYXdB
c3luY1ZhbGlkYXRvcnMpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiY29udHJvbCIse2dldDpmdW5jdGlvbigpe3JldHVy
biB0aGlzLl9jb250cm9sfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90
eXBlLl9jaGVja1BhcmVudFR5cGU9ZnVuY3Rpb24oKXshKHRoaXMuX3BhcmVudCBpbnN0YW5jZW9m
IEJ0KSYmdGhpcy5fcGFyZW50IGluc3RhbmNlb2YgaHQ/RHQubmdNb2RlbEdyb3VwRXhjZXB0aW9u
KCk6dGhpcy5fcGFyZW50IGluc3RhbmNlb2YgQnR8fHRoaXMuX3BhcmVudCBpbnN0YW5jZW9mIEx0
fHx0aGlzLl9wYXJlbnQgaW5zdGFuY2VvZiB6dHx8RHQuY29udHJvbFBhcmVudEV4Y2VwdGlvbigp
fSxlLnByb3RvdHlwZS5fc2V0VXBDb250cm9sPWZ1bmN0aW9uKCl7dGhpcy5fY2hlY2tQYXJlbnRU
eXBlKCksdGhpcy5fY29udHJvbD10aGlzLmZvcm1EaXJlY3RpdmUuYWRkQ29udHJvbCh0aGlzKSx0
aGlzLmNvbnRyb2wuZGlzYWJsZWQmJnRoaXMudmFsdWVBY2Nlc3Nvci5zZXREaXNhYmxlZFN0YXRl
JiZ0aGlzLnZhbHVlQWNjZXNzb3Iuc2V0RGlzYWJsZWRTdGF0ZSghMCksdGhpcy5fYWRkZWQ9ITB9
LGV9KHR0KTtadC5kZWNvcmF0b3JzPVt7dHlwZTpOLlUsYXJnczpbe3NlbGVjdG9yOiJbZm9ybUNv
bnRyb2xOYW1lXSIscHJvdmlkZXJzOltxdF19XX1dLFp0LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9u
KCl7cmV0dXJuW3t0eXBlOkwsZGVjb3JhdG9yczpbe3R5cGU6Ti5IfSx7dHlwZTpOLl8yfSx7dHlw
ZTpOLlF9XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6Ti5IfSx7dHlwZTpOLl8xMn0s
e3R5cGU6Ti5FLGFyZ3M6W0JdfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOk4uSH0s
e3R5cGU6Ti5fMTJ9LHt0eXBlOk4uRSxhcmdzOltHXX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3Jz
Olt7dHlwZTpOLkh9LHt0eXBlOk4uXzEyfSx7dHlwZTpOLkUsYXJnczpbWl19XX1dfSxadC5wcm9w
RGVjb3JhdG9ycz17bmFtZTpbe3R5cGU6Ti5YLGFyZ3M6WyJmb3JtQ29udHJvbE5hbWUiXX1dLG1v
ZGVsOlt7dHlwZTpOLlgsYXJnczpbIm5nTW9kZWwiXX1dLHVwZGF0ZTpbe3R5cGU6Ti5fMTMsYXJn
czpbIm5nTW9kZWxDaGFuZ2UiXX1dLGlzRGlzYWJsZWQ6W3t0eXBlOk4uWCxhcmdzOlsiZGlzYWJs
ZWQiXX1dfTsvKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCit2YXIgV3Q9e3By
b3ZpZGU6Qix1c2VFeGlzdGluZzpuLmkoTi5fOSkoZnVuY3Rpb24oKXtyZXR1cm4gWHR9KSxtdWx0
aTohMH0sS3Q9e3Byb3ZpZGU6Qix1c2VFeGlzdGluZzpuLmkoTi5fOSkoZnVuY3Rpb24oKXtyZXR1
cm4gUXR9KSxtdWx0aTohMH0sWHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiBPYmpl
Y3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInJlcXVpcmVkIix7Z2V0OmZ1bmN0aW9uKCl7
cmV0dXJuIHRoaXMuX3JlcXVpcmVkfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fcmVxdWlyZWQ9bnVs
bCE9dCYmITEhPT10JiYiIit0IT0iZmFsc2UiLHRoaXMuX29uQ2hhbmdlJiZ0aGlzLl9vbkNoYW5n
ZSgpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLnZhbGlkYXRl
PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnJlcXVpcmVkP3EucmVxdWlyZWQodCk6bnVsbH0sdC5w
cm90b3R5cGUucmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZT1mdW5jdGlvbih0KXt0aGlzLl9vbkNo
YW5nZT10fSx0fSgpO1h0LmRlY29yYXRvcnM9W3t0eXBlOk4uVSxhcmdzOlt7c2VsZWN0b3I6Ijpu
b3QoW3R5cGU9Y2hlY2tib3hdKVtyZXF1aXJlZF1bZm9ybUNvbnRyb2xOYW1lXSw6bm90KFt0eXBl
PWNoZWNrYm94XSlbcmVxdWlyZWRdW2Zvcm1Db250cm9sXSw6bm90KFt0eXBlPWNoZWNrYm94XSlb
cmVxdWlyZWRdW25nTW9kZWxdIixwcm92aWRlcnM6W1d0XSxob3N0OnsiW2F0dHIucmVxdWlyZWRd
IjoncmVxdWlyZWQgPyAiIiA6IG51bGwnfX1dfV0sWHQuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24o
KXtyZXR1cm5bXX0sWHQucHJvcERlY29yYXRvcnM9e3JlcXVpcmVkOlt7dHlwZTpOLlh9XX07dmFy
IFF0PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXtyZXR1cm4gbnVsbCE9PXQmJnQuYXBwbHkodGhp
cyxhcmd1bWVudHMpfHx0aGlzfXJldHVybiBGKGUsdCksZS5wcm90b3R5cGUudmFsaWRhdGU9ZnVu
Y3Rpb24odCl7cmV0dXJuIHRoaXMucmVxdWlyZWQ/cS5yZXF1aXJlZFRydWUodCk6bnVsbH0sZX0o
WHQpO1F0LmRlY29yYXRvcnM9W3t0eXBlOk4uVSxhcmdzOlt7c2VsZWN0b3I6ImlucHV0W3R5cGU9
Y2hlY2tib3hdW3JlcXVpcmVkXVtmb3JtQ29udHJvbE5hbWVdLGlucHV0W3R5cGU9Y2hlY2tib3hd
W3JlcXVpcmVkXVtmb3JtQ29udHJvbF0saW5wdXRbdHlwZT1jaGVja2JveF1bcmVxdWlyZWRdW25n
TW9kZWxdIixwcm92aWRlcnM6W0t0XSxob3N0OnsiW2F0dHIucmVxdWlyZWRdIjoncmVxdWlyZWQg
PyAiIiA6IG51bGwnfX1dfV0sUXQuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5bXX07
dmFyIEp0PXtwcm92aWRlOkIsdXNlRXhpc3Rpbmc6bi5pKE4uXzkpKGZ1bmN0aW9uKCl7cmV0dXJu
ICR0fSksbXVsdGk6ITB9LCR0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gT2JqZWN0
LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJlbWFpbCIse3NldDpmdW5jdGlvbih0KXt0aGlz
Ll9lbmFibGVkPSIiPT09dHx8ITA9PT10fHwidHJ1ZSI9PT10LHRoaXMuX29uQ2hhbmdlJiZ0aGlz
Ll9vbkNoYW5nZSgpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBl
LnZhbGlkYXRlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9lbmFibGVkP3EuZW1haWwodCk6bnVs
bH0sdC5wcm90b3R5cGUucmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZT1mdW5jdGlvbih0KXt0aGlz
Ll9vbkNoYW5nZT10fSx0fSgpOyR0LmRlY29yYXRvcnM9W3t0eXBlOk4uVSxhcmdzOlt7c2VsZWN0
b3I6IltlbWFpbF1bZm9ybUNvbnRyb2xOYW1lXSxbZW1haWxdW2Zvcm1Db250cm9sXSxbZW1haWxd
W25nTW9kZWxdIixwcm92aWRlcnM6W0p0XX1dfV0sJHQuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24o
KXtyZXR1cm5bXX0sJHQucHJvcERlY29yYXRvcnM9e2VtYWlsOlt7dHlwZTpOLlh9XX07dmFyIFl0
PXtwcm92aWRlOkIsdXNlRXhpc3Rpbmc6bi5pKE4uXzkpKGZ1bmN0aW9uKCl7cmV0dXJuIHRlfSks
bXVsdGk6ITB9LHRlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUu
bmdPbkNoYW5nZXM9ZnVuY3Rpb24odCl7Im1pbmxlbmd0aCJpbiB0JiYodGhpcy5fY3JlYXRlVmFs
aWRhdG9yKCksdGhpcy5fb25DaGFuZ2UmJnRoaXMuX29uQ2hhbmdlKCkpfSx0LnByb3RvdHlwZS52
YWxpZGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dGhpcy5taW5sZW5ndGg/bnVsbDp0aGlz
Ll92YWxpZGF0b3IodCl9LHQucHJvdG90eXBlLnJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2U9ZnVu
Y3Rpb24odCl7dGhpcy5fb25DaGFuZ2U9dH0sdC5wcm90b3R5cGUuX2NyZWF0ZVZhbGlkYXRvcj1m
dW5jdGlvbigpe3RoaXMuX3ZhbGlkYXRvcj1xLm1pbkxlbmd0aChwYXJzZUludCh0aGlzLm1pbmxl
bmd0aCwxMCkpfSx0fSgpO3RlLmRlY29yYXRvcnM9W3t0eXBlOk4uVSxhcmdzOlt7c2VsZWN0b3I6
IlttaW5sZW5ndGhdW2Zvcm1Db250cm9sTmFtZV0sW21pbmxlbmd0aF1bZm9ybUNvbnRyb2xdLFtt
aW5sZW5ndGhdW25nTW9kZWxdIixwcm92aWRlcnM6W1l0XSxob3N0OnsiW2F0dHIubWlubGVuZ3Ro
XSI6Im1pbmxlbmd0aCA/IG1pbmxlbmd0aCA6IG51bGwifX1dfV0sdGUuY3RvclBhcmFtZXRlcnM9
ZnVuY3Rpb24oKXtyZXR1cm5bXX0sdGUucHJvcERlY29yYXRvcnM9e21pbmxlbmd0aDpbe3R5cGU6
Ti5YfV19O3ZhciBlZT17cHJvdmlkZTpCLHVzZUV4aXN0aW5nOm4uaShOLl85KShmdW5jdGlvbigp
e3JldHVybiBuZX0pLG11bHRpOiEwfSxuZT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJu
IHQucHJvdG90eXBlLm5nT25DaGFuZ2VzPWZ1bmN0aW9uKHQpeyJtYXhsZW5ndGgiaW4gdCYmKHRo
aXMuX2NyZWF0ZVZhbGlkYXRvcigpLHRoaXMuX29uQ2hhbmdlJiZ0aGlzLl9vbkNoYW5nZSgpKX0s
dC5wcm90b3R5cGUudmFsaWRhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGwhPXRoaXMubWF4bGVu
Z3RoP3RoaXMuX3ZhbGlkYXRvcih0KTpudWxsfSx0LnByb3RvdHlwZS5yZWdpc3Rlck9uVmFsaWRh
dG9yQ2hhbmdlPWZ1bmN0aW9uKHQpe3RoaXMuX29uQ2hhbmdlPXR9LHQucHJvdG90eXBlLl9jcmVh
dGVWYWxpZGF0b3I9ZnVuY3Rpb24oKXt0aGlzLl92YWxpZGF0b3I9cS5tYXhMZW5ndGgocGFyc2VJ
bnQodGhpcy5tYXhsZW5ndGgsMTApKX0sdH0oKTtuZS5kZWNvcmF0b3JzPVt7dHlwZTpOLlUsYXJn
czpbe3NlbGVjdG9yOiJbbWF4bGVuZ3RoXVtmb3JtQ29udHJvbE5hbWVdLFttYXhsZW5ndGhdW2Zv
cm1Db250cm9sXSxbbWF4bGVuZ3RoXVtuZ01vZGVsXSIscHJvdmlkZXJzOltlZV0saG9zdDp7Ilth
dHRyLm1heGxlbmd0aF0iOiJtYXhsZW5ndGggPyBtYXhsZW5ndGggOiBudWxsIn19XX1dLG5lLmN0
b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW119LG5lLnByb3BEZWNvcmF0b3JzPXttYXhs
ZW5ndGg6W3t0eXBlOk4uWH1dfTt2YXIgcmU9e3Byb3ZpZGU6Qix1c2VFeGlzdGluZzpuLmkoTi5f
OSkoZnVuY3Rpb24oKXtyZXR1cm4gb2V9KSxtdWx0aTohMH0sb2U9ZnVuY3Rpb24oKXtmdW5jdGlv
biB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5uZ09uQ2hhbmdlcz1mdW5jdGlvbih0KXsicGF0dGVy
biJpbiB0JiYodGhpcy5fY3JlYXRlVmFsaWRhdG9yKCksdGhpcy5fb25DaGFuZ2UmJnRoaXMuX29u
Q2hhbmdlKCkpfSx0LnByb3RvdHlwZS52YWxpZGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5f
dmFsaWRhdG9yKHQpfSx0LnByb3RvdHlwZS5yZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlPWZ1bmN0
aW9uKHQpe3RoaXMuX29uQ2hhbmdlPXR9LHQucHJvdG90eXBlLl9jcmVhdGVWYWxpZGF0b3I9ZnVu
Y3Rpb24oKXt0aGlzLl92YWxpZGF0b3I9cS5wYXR0ZXJuKHRoaXMucGF0dGVybil9LHR9KCk7b2Uu
ZGVjb3JhdG9ycz1be3R5cGU6Ti5VLGFyZ3M6W3tzZWxlY3RvcjoiW3BhdHRlcm5dW2Zvcm1Db250
cm9sTmFtZV0sW3BhdHRlcm5dW2Zvcm1Db250cm9sXSxbcGF0dGVybl1bbmdNb2RlbF0iLHByb3Zp
ZGVyczpbcmVdLGhvc3Q6eyJbYXR0ci5wYXR0ZXJuXSI6InBhdHRlcm4gPyBwYXR0ZXJuIDogbnVs
bCJ9fV19XSxvZS5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVybltdfSxvZS5wcm9wRGVj
b3JhdG9ycz17cGF0dGVybjpbe3R5cGU6Ti5YfV19Oy8qKgorICogQGxpY2Vuc2UKKyAqIENvcHly
aWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9s
aWNlbnNlCisgKi8KK3ZhciBpZT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJv
dG90eXBlLmdyb3VwPWZ1bmN0aW9uKHQsZSl7dm9pZCAwPT09ZSYmKGU9bnVsbCk7dmFyIG49dGhp
cy5fcmVkdWNlQ29udHJvbHModCkscj1udWxsIT1lP2UudmFsaWRhdG9yOm51bGwsbz1udWxsIT1l
P2UuYXN5bmNWYWxpZGF0b3I6bnVsbDtyZXR1cm4gbmV3IE90KG4scixvKX0sdC5wcm90b3R5cGUu
Y29udHJvbD1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHZvaWQgMD09PWUmJihlPW51bGwpLHZvaWQg
MD09PW4mJihuPW51bGwpLG5ldyBFdCh0LGUsbil9LHQucHJvdG90eXBlLmFycmF5PWZ1bmN0aW9u
KHQsZSxuKXt2YXIgcj10aGlzO3ZvaWQgMD09PWUmJihlPW51bGwpLHZvaWQgMD09PW4mJihuPW51
bGwpO3ZhciBvPXQubWFwKGZ1bmN0aW9uKHQpe3JldHVybiByLl9jcmVhdGVDb250cm9sKHQpfSk7
cmV0dXJuIG5ldyB4dChvLGUsbil9LHQucHJvdG90eXBlLl9yZWR1Y2VDb250cm9scz1mdW5jdGlv
bih0KXt2YXIgZT10aGlzLG49e307cmV0dXJuIE9iamVjdC5rZXlzKHQpLmZvckVhY2goZnVuY3Rp
b24ocil7bltyXT1lLl9jcmVhdGVDb250cm9sKHRbcl0pfSksbn0sdC5wcm90b3R5cGUuX2NyZWF0
ZUNvbnRyb2w9ZnVuY3Rpb24odCl7aWYodCBpbnN0YW5jZW9mIEV0fHx0IGluc3RhbmNlb2YgT3R8
fHQgaW5zdGFuY2VvZiB4dClyZXR1cm4gdDtpZihBcnJheS5pc0FycmF5KHQpKXt2YXIgZT10WzBd
LG49dC5sZW5ndGg+MT90WzFdOm51bGwscj10Lmxlbmd0aD4yP3RbMl06bnVsbDtyZXR1cm4gdGhp
cy5jb250cm9sKGUsbixyKX1yZXR1cm4gdGhpcy5jb250cm9sKHQpfSx0fSgpO2llLmRlY29yYXRv
cnM9W3t0eXBlOk4uen1dLGllLmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW119Oy8q
KgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1J
VC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
IGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8KK3ZhciBzZT0obmV3IE4uQigiNC4w
LjIiKSxmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHR9KCkpO3NlLmRlY29yYXRvcnM9
W3t0eXBlOk4uVSxhcmdzOlt7c2VsZWN0b3I6ImZvcm06bm90KFtuZ05vRm9ybV0pOm5vdChbbmdO
YXRpdmVWYWxpZGF0ZV0pIixob3N0Ontub3ZhbGlkYXRlOiIifX1dfV0sc2UuY3RvclBhcmFtZXRl
cnM9ZnVuY3Rpb24oKXtyZXR1cm5bXX07LyoqCisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdv
b2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAq
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UK
KyAqLwordmFyIGFlPVtzZSx1dCxwdCxKLFksaXQsSyxhdCxsdCxydCxtdCxndCxYdCx0ZSxuZSxv
ZSxRdCwkdF0sdWU9W1J0LE10LEF0XSxjZT1bRnQsTHQsWnQsQnQsenRdLGxlPWZ1bmN0aW9uKCl7
ZnVuY3Rpb24gdCgpe31yZXR1cm4gdH0oKTtsZS5kZWNvcmF0b3JzPVt7dHlwZTpOLkEsYXJnczpb
e2RlY2xhcmF0aW9uczphZSxleHBvcnRzOmFlfV19XSxsZS5jdG9yUGFyYW1ldGVycz1mdW5jdGlv
bigpe3JldHVybltdfTsvKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCit2YXIg
cGU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0fSgpO3BlLmRlY29yYXRvcnM9W3t0
eXBlOk4uQSxhcmdzOlt7ZGVjbGFyYXRpb25zOnVlLHByb3ZpZGVyczpbbnRdLGV4cG9ydHM6W2xl
LHVlXX1dfV0scGUuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5bXX07dmFyIGZlPWZ1
bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdH0oKTtmZS5kZWNvcmF0b3JzPVt7dHlwZTpO
LkEsYXJnczpbe2RlY2xhcmF0aW9uczpbY2VdLHByb3ZpZGVyczpbaWUsbnRdLGV4cG9ydHM6W2xl
LGNlXX1dfV0sZmUuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5bXX19LFFiZG06ZnVu
Y3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7cmV0dXJuIEl9ZnVuY3Rpb24g
byh0KXtJfHwoST10KX1mdW5jdGlvbiBpKCl7cmV0dXJuIFp8fChaPWRvY3VtZW50LnF1ZXJ5U2Vs
ZWN0b3IoImJhc2UiKSk/Wi5nZXRBdHRyaWJ1dGUoImhyZWYiKTpudWxsfWZ1bmN0aW9uIHModCl7
cmV0dXJuIHp8fCh6PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKSksei5zZXRBdHRyaWJ1dGUo
ImhyZWYiLHQpLCIvIj09PXoucGF0aG5hbWUuY2hhckF0KDApP3oucGF0aG5hbWU6Ii8iK3oucGF0
aG5hbWV9ZnVuY3Rpb24gYSh0LGUpe2U9ZW5jb2RlVVJJQ29tcG9uZW50KGUpO2Zvcih2YXIgbj0w
LHI9dC5zcGxpdCgiOyIpO248ci5sZW5ndGg7bisrKXt2YXIgbz1yW25dLGk9by5pbmRleE9mKCI9
Iikscz0tMT09aT9bbywiIl06W28uc2xpY2UoMCxpKSxvLnNsaWNlKGkrMSldLGE9c1swXSx1PXNb
MV07aWYoYS50cmltKCk9PT1lKXJldHVybiBkZWNvZGVVUklDb21wb25lbnQodSl9cmV0dXJuIG51
bGx9ZnVuY3Rpb24gdSh0LGUsbil7Zm9yKHZhciByPWUuc3BsaXQoIi4iKSxvPXQ7ci5sZW5ndGg+
MTspe3ZhciBpPXIuc2hpZnQoKTtvPW8uaGFzT3duUHJvcGVydHkoaSkmJm51bGwhPW9baV0/b1tp
XTpvW2ldPXt9fXZvaWQgMCE9PW8mJm51bGwhPT1vfHwobz17fSksb1tyLnNoaWZ0KCldPW59Lyoq
CisgKiBAbGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCisgKgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUg
YXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqIEByZXR1cm4gez99CisgKi8KK2Z1bmN0
aW9uIGMoKXtyZXR1cm4hIXdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZX1mdW5jdGlvbiBsKHQsZSl7
cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49cigpO0FycmF5LnByb3RvdHlwZS5zbGljZS5hcHBseShu
LnF1ZXJ5U2VsZWN0b3JBbGwoZSwic3R5bGVbbmctdHJhbnNpdGlvbl0iKSkuZmlsdGVyKGZ1bmN0
aW9uKGUpe3JldHVybiBuLmdldEF0dHJpYnV0ZShlLCJuZy10cmFuc2l0aW9uIik9PT10fSkuZm9y
RWFjaChmdW5jdGlvbih0KXtyZXR1cm4gbi5yZW1vdmUodCl9KX19ZnVuY3Rpb24gcCh0KXtyZXR1
cm4gbi5pKGouRykodCl9ZnVuY3Rpb24gZih0LGUpe3ZhciBuPSh0fHxbXSkuY29uY2F0KGV8fFtd
KTtyZXR1cm4gcigpLnNldEdsb2JhbFZhcihudCxwKSxyKCkuc2V0R2xvYmFsVmFyKHJ0LHR0KHt9
LGV0LGgobnx8W10pKSksZnVuY3Rpb24oKXtyZXR1cm4gcH19ZnVuY3Rpb24gaCh0KXtyZXR1cm4g
dC5yZWR1Y2UoZnVuY3Rpb24odCxlKXtyZXR1cm4gdFtlLm5hbWVdPWUudG9rZW4sdH0se30pfWZ1
bmN0aW9uIGQodCl7cmV0dXJuIHl0LnJlcGxhY2UoZnQsdCl9ZnVuY3Rpb24geSh0KXtyZXR1cm4g
ZHQucmVwbGFjZShmdCx0KX1mdW5jdGlvbiBtKHQsZSxuKXtmb3IodmFyIHI9MDtyPGUubGVuZ3Ro
O3IrKyl7dmFyIG89ZVtyXTtBcnJheS5pc0FycmF5KG8pP20odCxvLG4pOihvPW8ucmVwbGFjZShm
dCx0KSxuLnB1c2gobykpfXJldHVybiBufWZ1bmN0aW9uIGcodCl7cmV0dXJuIGZ1bmN0aW9uKGUp
eyExPT09dChlKSYmKGUucHJldmVudERlZmF1bHQoKSxlLnJldHVyblZhbHVlPSExKX19ZnVuY3Rp
b24gdih0LGUpe2lmKHQuY2hhckNvZGVBdCgwKT09PXZ0KXRocm93IG5ldyBFcnJvcigiRm91bmQg
dGhlIHN5bnRoZXRpYyAiK2UrIiAiK3QrJy4gUGxlYXNlIGluY2x1ZGUgZWl0aGVyICJCcm93c2Vy
QW5pbWF0aW9uc01vZHVsZSIgb3IgIk5vb3BBbmltYXRpb25zTW9kdWxlIiBpbiB5b3VyIGFwcGxp
Y2F0aW9uLicpfWZ1bmN0aW9uIF8odCl7cmV0dXJuIHQ9U3RyaW5nKHQpLHQubWF0Y2goVHQpfHx0
Lm1hdGNoKGt0KT90OihuLmkoai5LKSgpJiZyKCkubG9nKCJXQVJOSU5HOiBzYW5pdGl6aW5nIHVu
c2FmZSBVUkwgdmFsdWUgIit0KyIgKHNlZSBodHRwOi8vZy5jby9uZy9zZWN1cml0eSN4c3MpIiks
InVuc2FmZToiK3QpfWZ1bmN0aW9uIGIodCl7cmV0dXJuIHQ9U3RyaW5nKHQpLHQuc3BsaXQoIiwi
KS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIF8odC50cmltKCkpfSkuam9pbigiLCAiKX1mdW5jdGlv
biB3KCl7aWYoVnQpcmV0dXJuIFZ0O010PXIoKTt2YXIgdD1NdC5jcmVhdGVFbGVtZW50KCJ0ZW1w
bGF0ZSIpO2lmKCJjb250ZW50ImluIHQpcmV0dXJuIHQ7dmFyIGU9TXQuY3JlYXRlSHRtbERvY3Vt
ZW50KCk7aWYobnVsbD09KFZ0PU10LnF1ZXJ5U2VsZWN0b3IoZSwiYm9keSIpKSl7dmFyIG49TXQu
Y3JlYXRlRWxlbWVudCgiaHRtbCIsZSk7VnQ9TXQuY3JlYXRlRWxlbWVudCgiYm9keSIsZSksTXQu
YXBwZW5kQ2hpbGQobixWdCksTXQuYXBwZW5kQ2hpbGQoZSxuKX1yZXR1cm4gVnR9ZnVuY3Rpb24g
Qyh0KXtmb3IodmFyIGU9e30sbj0wLHI9dC5zcGxpdCgiLCIpO248ci5sZW5ndGg7bisrKXtlW3Jb
bl1dPSEwfXJldHVybiBlfWZ1bmN0aW9uIEUoKXtmb3IodmFyIHQ9W10sZT0wO2U8YXJndW1lbnRz
Lmxlbmd0aDtlKyspdFtlXT1hcmd1bWVudHNbZV07Zm9yKHZhciBuPXt9LHI9MCxvPXQ7cjxvLmxl
bmd0aDtyKyspe3ZhciBpPW9bcl07Zm9yKHZhciBzIGluIGkpaS5oYXNPd25Qcm9wZXJ0eShzKSYm
KG5bc109ITApfXJldHVybiBufWZ1bmN0aW9uIE8odCxlKXtpZihlJiZNdC5jb250YWlucyh0LGUp
KXRocm93IG5ldyBFcnJvcigiRmFpbGVkIHRvIHNhbml0aXplIGh0bWwgYmVjYXVzZSB0aGUgZWxl
bWVudCBpcyBjbG9iYmVyZWQ6ICIrTXQuZ2V0T3V0ZXJIVE1MKHQpKTtyZXR1cm4gZX1mdW5jdGlv
biB4KHQpe3JldHVybiB0LnJlcGxhY2UoLyYvZywiJmFtcDsiKS5yZXBsYWNlKHF0LGZ1bmN0aW9u
KHQpe3JldHVybiImIyIrKDEwMjQqKHQuY2hhckNvZGVBdCgwKS01NTI5NikrKHQuY2hhckNvZGVB
dCgxKS01NjMyMCkrNjU1MzYpKyI7In0pLnJlcGxhY2UoWnQsZnVuY3Rpb24odCl7cmV0dXJuIiYj
Iit0LmNoYXJDb2RlQXQoMCkrIjsifSkucmVwbGFjZSgvPC9nLCImbHQ7IikucmVwbGFjZSgvPi9n
LCImZ3Q7Iil9ZnVuY3Rpb24gUyh0KXtNdC5hdHRyaWJ1dGVNYXAodCkuZm9yRWFjaChmdW5jdGlv
bihlLG4peyJ4bWxuczpuczEiIT09biYmMCE9PW4uaW5kZXhPZigibnMxOiIpfHxNdC5yZW1vdmVB
dHRyaWJ1dGUodCxuKX0pO2Zvcih2YXIgZT0wLG49TXQuY2hpbGROb2Rlc0FzTGlzdCh0KTtlPG4u
bGVuZ3RoO2UrKyl7dmFyIHI9bltlXTtNdC5pc0VsZW1lbnROb2RlKHIpJiZTKHIpfX1mdW5jdGlv
biBQKHQsZSl7dHJ5e3ZhciByPXcoKSxvPWU/U3RyaW5nKGUpOiIiLGk9NSxzPW87ZG97aWYoMD09
PWkpdGhyb3cgbmV3IEVycm9yKCJGYWlsZWQgdG8gc2FuaXRpemUgaHRtbCBiZWNhdXNlIHRoZSBp
bnB1dCBpcyB1bnN0YWJsZSIpO2ktLSxvPXMsTXQuc2V0SW5uZXJIVE1MKHIsbyksdC5kb2N1bWVu
dE1vZGUmJlMocikscz1NdC5nZXRJbm5lckhUTUwocil9d2hpbGUobyE9PXMpO2Zvcih2YXIgYT1u
ZXcgenQsdT1hLnNhbml0aXplQ2hpbGRyZW4oTXQuZ2V0VGVtcGxhdGVDb250ZW50KHIpfHxyKSxj
PU10LmdldFRlbXBsYXRlQ29udGVudChyKXx8cixsPTAscD1NdC5jaGlsZE5vZGVzQXNMaXN0KGMp
O2w8cC5sZW5ndGg7bCsrKXt2YXIgZj1wW2xdO010LnJlbW92ZUNoaWxkKGMsZil9cmV0dXJuIG4u
aShqLkspKCkmJmEuc2FuaXRpemVkU29tZXRoaW5nJiZNdC5sb2coIldBUk5JTkc6IHNhbml0aXpp
bmcgSFRNTCBzdHJpcHBlZCBzb21lIGNvbnRlbnQgKHNlZSBodHRwOi8vZy5jby9uZy9zZWN1cml0
eSN4c3MpLiIpLHV9Y2F0Y2godCl7dGhyb3cgVnQ9bnVsbCx0fX1mdW5jdGlvbiBBKHQpe2Zvcih2
YXIgZT0hMCxuPSEwLHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIG89dC5jaGFyQXQocik7IiciPT09
byYmbj9lPSFlOiciJz09PW8mJmUmJihuPSFuKX1yZXR1cm4gZSYmbn1mdW5jdGlvbiBUKHQpe2lm
KCEodD1TdHJpbmcodCkudHJpbSgpKSlyZXR1cm4iIjt2YXIgZT10Lm1hdGNoKHRlKTtyZXR1cm4g
ZSYmXyhlWzFdKT09PWVbMV18fHQubWF0Y2goWXQpJiZBKHQpP3Q6KG4uaShqLkspKCkmJnIoKS5s
b2coIldBUk5JTkc6IHNhbml0aXppbmcgdW5zYWZlIHN0eWxlIHZhbHVlICIrdCsiIChzZWUgaHR0
cDovL2cuY28vbmcvc2VjdXJpdHkjeHNzKS4iKSwidW5zYWZlIil9ZnVuY3Rpb24gaygpe3EubWFr
ZUN1cnJlbnQoKSwkLmluaXQoKX1mdW5jdGlvbiBWKCl7cmV0dXJuIG5ldyBqLnB9ZnVuY3Rpb24g
TSgpe3JldHVybiBkb2N1bWVudH12YXIgTj1uKCIySmU4Iiksaj1uKCIzajNLIik7bi5kKGUsInAi
LGZ1bmN0aW9uKCl7cmV0dXJuIGZlfSksbi5kKGUsImEiLGZ1bmN0aW9uKCl7cmV0dXJuIHBlfSks
bi5kKGUsImsiLGZ1bmN0aW9uKCl7cmV0dXJuIFh9KSxuLmQoZSwibCIsZnVuY3Rpb24oKXtyZXR1
cm4gWX0pLG4uZChlLCJvIixmdW5jdGlvbigpe3JldHVybiBvdH0pLG4uZChlLCJjIixmdW5jdGlv
bigpe3JldHVybiBXfSksbi5kKGUsInMiLGZ1bmN0aW9uKCl7cmV0dXJuIHN0fSksbi5kKGUsImgi
LGZ1bmN0aW9uKCl7cmV0dXJuIGF0fSksbi5kKGUsInIiLGZ1bmN0aW9uKCl7cmV0dXJuIEV0fSks
bi5kKGUsImQiLGZ1bmN0aW9uKCl7cmV0dXJuIE90fSksbi5kKGUsInEiLGZ1bmN0aW9uKCl7cmV0
dXJuIGVlfSksbi5kKGUsInUiLGZ1bmN0aW9uKCl7cmV0dXJuIHJ9KSxuLmQoZSwiaiIsZnVuY3Rp
b24oKXtyZXR1cm4gbXR9KSxuLmQoZSwiZSIsZnVuY3Rpb24oKXtyZXR1cm4gd3R9KSxuLmQoZSwi
ZyIsZnVuY3Rpb24oKXtyZXR1cm4geHR9KSxuLmQoZSwiZiIsZnVuY3Rpb24oKXtyZXR1cm4gQXR9
KSxuLmQoZSwiaSIsZnVuY3Rpb24oKXtyZXR1cm4gbHR9KSxuLmQoZSwidCIsZnVuY3Rpb24oKXty
ZXR1cm4gY3R9KSxuLmQoZSwibSIsZnVuY3Rpb24oKXtyZXR1cm4gVn0pLG4uZChlLCJuIixmdW5j
dGlvbigpe3JldHVybiBmfSksbi5kKGUsImIiLGZ1bmN0aW9uKCl7cmV0dXJuIG5lfSk7dmFyIFIs
RD10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKCl7dGhpcy5j
b25zdHJ1Y3Rvcj10fWZvcih2YXIgciBpbiBlKWUuaGFzT3duUHJvcGVydHkocikmJih0W3JdPWVb
cl0pO3QucHJvdG90eXBlPW51bGw9PT1lP09iamVjdC5jcmVhdGUoZSk6KG4ucHJvdG90eXBlPWUu
cHJvdG90eXBlLG5ldyBuKX0sST1udWxsLEY9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5y
ZXNvdXJjZUxvYWRlclR5cGU9bnVsbH1yZXR1cm4gdC5wcm90b3R5cGUuaGFzUHJvcGVydHk9ZnVu
Y3Rpb24odCxlKXt9LHQucHJvdG90eXBlLnNldFByb3BlcnR5PWZ1bmN0aW9uKHQsZSxuKXt9LHQu
cHJvdG90eXBlLmdldFByb3BlcnR5PWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5pbnZva2U9
ZnVuY3Rpb24odCxlLG4pe30sdC5wcm90b3R5cGUubG9nRXJyb3I9ZnVuY3Rpb24odCl7fSx0LnBy
b3RvdHlwZS5sb2c9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5sb2dHcm91cD1mdW5jdGlvbih0
KXt9LHQucHJvdG90eXBlLmxvZ0dyb3VwRW5kPWZ1bmN0aW9uKCl7fSxPYmplY3QuZGVmaW5lUHJv
cGVydHkodC5wcm90b3R5cGUsImF0dHJUb1Byb3BNYXAiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4g
dGhpcy5fYXR0clRvUHJvcE1hcH0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMuX2F0dHJUb1Byb3BNYXA9
dH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5jb250YWlucz1m
dW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUucGFyc2U9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlw
ZS5xdWVyeVNlbGVjdG9yPWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5xdWVyeVNlbGVjdG9y
QWxsPWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5vbj1mdW5jdGlvbih0LGUsbil7fSx0LnBy
b3RvdHlwZS5vbkFuZENhbmNlbD1mdW5jdGlvbih0LGUsbil7fSx0LnByb3RvdHlwZS5kaXNwYXRj
aEV2ZW50PWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5jcmVhdGVNb3VzZUV2ZW50PWZ1bmN0
aW9uKHQpe30sdC5wcm90b3R5cGUuY3JlYXRlRXZlbnQ9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlw
ZS5wcmV2ZW50RGVmYXVsdD1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmlzUHJldmVudGVkPWZ1
bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuZ2V0SW5uZXJIVE1MPWZ1bmN0aW9uKHQpe30sdC5wcm90
b3R5cGUuZ2V0VGVtcGxhdGVDb250ZW50PWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuZ2V0T3V0
ZXJIVE1MPWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUubm9kZU5hbWU9ZnVuY3Rpb24odCl7fSx0
LnByb3RvdHlwZS5ub2RlVmFsdWU9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS50eXBlPWZ1bmN0
aW9uKHQpe30sdC5wcm90b3R5cGUuY29udGVudD1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmZp
cnN0Q2hpbGQ9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5uZXh0U2libGluZz1mdW5jdGlvbih0
KXt9LHQucHJvdG90eXBlLnBhcmVudEVsZW1lbnQ9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5j
aGlsZE5vZGVzPWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuY2hpbGROb2Rlc0FzTGlzdD1mdW5j
dGlvbih0KXt9LHQucHJvdG90eXBlLmNsZWFyTm9kZXM9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlw
ZS5hcHBlbmRDaGlsZD1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUucmVtb3ZlQ2hpbGQ9ZnVu
Y3Rpb24odCxlKXt9LHQucHJvdG90eXBlLnJlcGxhY2VDaGlsZD1mdW5jdGlvbih0LGUsbil7fSx0
LnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5pbnNlcnRCZWZvcmU9
ZnVuY3Rpb24odCxlLG4pe30sdC5wcm90b3R5cGUuaW5zZXJ0QWxsQmVmb3JlPWZ1bmN0aW9uKHQs
ZSxuKXt9LHQucHJvdG90eXBlLmluc2VydEFmdGVyPWZ1bmN0aW9uKHQsZSxuKXt9LHQucHJvdG90
eXBlLnNldElubmVySFRNTD1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUuZ2V0VGV4dD1mdW5j
dGlvbih0KXt9LHQucHJvdG90eXBlLnNldFRleHQ9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBl
LmdldFZhbHVlPWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuc2V0VmFsdWU9ZnVuY3Rpb24odCxl
KXt9LHQucHJvdG90eXBlLmdldENoZWNrZWQ9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5zZXRD
aGVja2VkPWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5jcmVhdGVDb21tZW50PWZ1bmN0aW9u
KHQpe30sdC5wcm90b3R5cGUuY3JlYXRlVGVtcGxhdGU9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlw
ZS5jcmVhdGVFbGVtZW50PWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5jcmVhdGVFbGVtZW50
TlM9ZnVuY3Rpb24odCxlLG4pe30sdC5wcm90b3R5cGUuY3JlYXRlVGV4dE5vZGU9ZnVuY3Rpb24o
dCxlKXt9LHQucHJvdG90eXBlLmNyZWF0ZVNjcmlwdFRhZz1mdW5jdGlvbih0LGUsbil7fSx0LnBy
b3RvdHlwZS5jcmVhdGVTdHlsZUVsZW1lbnQ9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLmNy
ZWF0ZVNoYWRvd1Jvb3Q9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5nZXRTaGFkb3dSb290PWZ1
bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuZ2V0SG9zdD1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBl
LmdldERpc3RyaWJ1dGVkTm9kZXM9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5jbG9uZT1mdW5j
dGlvbih0KXt9LHQucHJvdG90eXBlLmdldEVsZW1lbnRzQnlDbGFzc05hbWU9ZnVuY3Rpb24odCxl
KXt9LHQucHJvdG90eXBlLmdldEVsZW1lbnRzQnlUYWdOYW1lPWZ1bmN0aW9uKHQsZSl7fSx0LnBy
b3RvdHlwZS5jbGFzc0xpc3Q9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5hZGRDbGFzcz1mdW5j
dGlvbih0LGUpe30sdC5wcm90b3R5cGUucmVtb3ZlQ2xhc3M9ZnVuY3Rpb24odCxlKXt9LHQucHJv
dG90eXBlLmhhc0NsYXNzPWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5zZXRTdHlsZT1mdW5j
dGlvbih0LGUsbil7fSx0LnByb3RvdHlwZS5yZW1vdmVTdHlsZT1mdW5jdGlvbih0LGUpe30sdC5w
cm90b3R5cGUuZ2V0U3R5bGU9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLmhhc1N0eWxlPWZ1
bmN0aW9uKHQsZSxuKXt9LHQucHJvdG90eXBlLnRhZ05hbWU9ZnVuY3Rpb24odCl7fSx0LnByb3Rv
dHlwZS5hdHRyaWJ1dGVNYXA9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5oYXNBdHRyaWJ1dGU9
ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLmhhc0F0dHJpYnV0ZU5TPWZ1bmN0aW9uKHQsZSxu
KXt9LHQucHJvdG90eXBlLmdldEF0dHJpYnV0ZT1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUu
Z2V0QXR0cmlidXRlTlM9ZnVuY3Rpb24odCxlLG4pe30sdC5wcm90b3R5cGUuc2V0QXR0cmlidXRl
PWZ1bmN0aW9uKHQsZSxuKXt9LHQucHJvdG90eXBlLnNldEF0dHJpYnV0ZU5TPWZ1bmN0aW9uKHQs
ZSxuLHIpe30sdC5wcm90b3R5cGUucmVtb3ZlQXR0cmlidXRlPWZ1bmN0aW9uKHQsZSl7fSx0LnBy
b3RvdHlwZS5yZW1vdmVBdHRyaWJ1dGVOUz1mdW5jdGlvbih0LGUsbil7fSx0LnByb3RvdHlwZS50
ZW1wbGF0ZUF3YXJlUm9vdD1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmNyZWF0ZUh0bWxEb2N1
bWVudD1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0PWZ1bmN0
aW9uKHQpe30sdC5wcm90b3R5cGUuZ2V0VGl0bGU9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5z
ZXRUaXRsZT1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUuZWxlbWVudE1hdGNoZXM9ZnVuY3Rp
b24odCxlKXt9LHQucHJvdG90eXBlLmlzVGVtcGxhdGVFbGVtZW50PWZ1bmN0aW9uKHQpe30sdC5w
cm90b3R5cGUuaXNUZXh0Tm9kZT1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmlzQ29tbWVudE5v
ZGU9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5pc0VsZW1lbnROb2RlPWZ1bmN0aW9uKHQpe30s
dC5wcm90b3R5cGUuaGFzU2hhZG93Um9vdD1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmlzU2hh
ZG93Um9vdD1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmltcG9ydEludG9Eb2M9ZnVuY3Rpb24o
dCl7fSx0LnByb3RvdHlwZS5hZG9wdE5vZGU9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5nZXRI
cmVmPWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuZ2V0RXZlbnRLZXk9ZnVuY3Rpb24odCl7fSx0
LnByb3RvdHlwZS5yZXNvbHZlQW5kU2V0SHJlZj1mdW5jdGlvbih0LGUsbil7fSx0LnByb3RvdHlw
ZS5zdXBwb3J0c0RPTUV2ZW50cz1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuc3VwcG9ydHNOYXRp
dmVTaGFkb3dET009ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmdldEdsb2JhbEV2ZW50VGFyZ2V0
PWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5nZXRIaXN0b3J5PWZ1bmN0aW9uKCl7fSx0LnBy
b3RvdHlwZS5nZXRMb2NhdGlvbj1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuZ2V0QmFzZUhyZWY9
ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5yZXNldEJhc2VFbGVtZW50PWZ1bmN0aW9uKCl7fSx0
LnByb3RvdHlwZS5nZXRVc2VyQWdlbnQ9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLnNldERhdGE9
ZnVuY3Rpb24odCxlLG4pe30sdC5wcm90b3R5cGUuZ2V0Q29tcHV0ZWRTdHlsZT1mdW5jdGlvbih0
KXt9LHQucHJvdG90eXBlLmdldERhdGE9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLnNldEds
b2JhbFZhcj1mdW5jdGlvbih0LGUpe30sdC5wcm90b3R5cGUuc3VwcG9ydHNXZWJBbmltYXRpb249
ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLnBlcmZvcm1hbmNlTm93PWZ1bmN0aW9uKCl7fSx0LnBy
b3RvdHlwZS5nZXRBbmltYXRpb25QcmVmaXg9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmdldFRy
YW5zaXRpb25FbmQ9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLnN1cHBvcnRzQW5pbWF0aW9uPWZ1
bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5zdXBwb3J0c0Nvb2tpZXM9ZnVuY3Rpb24oKXt9LHQucHJv
dG90eXBlLmdldENvb2tpZT1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLnNldENvb2tpZT1mdW5j
dGlvbih0LGUpe30sdH0oKSxIPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt2YXIgZT10LmNhbGwo
dGhpcyl8fHRoaXM7ZS5fYW5pbWF0aW9uUHJlZml4PW51bGwsZS5fdHJhbnNpdGlvbkVuZD1udWxs
O3RyeXt2YXIgbj1lLmNyZWF0ZUVsZW1lbnQoImRpdiIsZG9jdW1lbnQpO2lmKG51bGwhPWUuZ2V0
U3R5bGUobiwiYW5pbWF0aW9uTmFtZSIpKWUuX2FuaW1hdGlvblByZWZpeD0iIjtlbHNlIGZvcih2
YXIgcj1bIldlYmtpdCIsIk1veiIsIk8iLCJtcyJdLG89MDtvPHIubGVuZ3RoO28rKylpZihudWxs
IT1lLmdldFN0eWxlKG4scltvXSsiQW5pbWF0aW9uTmFtZSIpKXtlLl9hbmltYXRpb25QcmVmaXg9
Ii0iK3Jbb10udG9Mb3dlckNhc2UoKSsiLSI7YnJlYWt9dmFyIGk9e1dlYmtpdFRyYW5zaXRpb246
IndlYmtpdFRyYW5zaXRpb25FbmQiLE1velRyYW5zaXRpb246InRyYW5zaXRpb25lbmQiLE9UcmFu
c2l0aW9uOiJvVHJhbnNpdGlvbkVuZCBvdHJhbnNpdGlvbmVuZCIsdHJhbnNpdGlvbjoidHJhbnNp
dGlvbmVuZCJ9O09iamVjdC5rZXlzKGkpLmZvckVhY2goZnVuY3Rpb24odCl7bnVsbCE9ZS5nZXRT
dHlsZShuLHQpJiYoZS5fdHJhbnNpdGlvbkVuZD1pW3RdKX0pfWNhdGNoKHQpe2UuX2FuaW1hdGlv
blByZWZpeD1udWxsLGUuX3RyYW5zaXRpb25FbmQ9bnVsbH1yZXR1cm4gZX1yZXR1cm4gRChlLHQp
LGUucHJvdG90eXBlLmdldERpc3RyaWJ1dGVkTm9kZXM9ZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0
RGlzdHJpYnV0ZWROb2RlcygpfSxlLnByb3RvdHlwZS5yZXNvbHZlQW5kU2V0SHJlZj1mdW5jdGlv
bih0LGUsbil7dC5ocmVmPW51bGw9PW4/ZTplKyIvLi4vIitufSxlLnByb3RvdHlwZS5zdXBwb3J0
c0RPTUV2ZW50cz1mdW5jdGlvbigpe3JldHVybiEwfSxlLnByb3RvdHlwZS5zdXBwb3J0c05hdGl2
ZVNoYWRvd0RPTT1mdW5jdGlvbigpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBkb2N1bWVudC5i
b2R5LmNyZWF0ZVNoYWRvd1Jvb3R9LGUucHJvdG90eXBlLmdldEFuaW1hdGlvblByZWZpeD1mdW5j
dGlvbigpe3JldHVybiB0aGlzLl9hbmltYXRpb25QcmVmaXg/dGhpcy5fYW5pbWF0aW9uUHJlZml4
OiIifSxlLnByb3RvdHlwZS5nZXRUcmFuc2l0aW9uRW5kPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu
X3RyYW5zaXRpb25FbmQ/dGhpcy5fdHJhbnNpdGlvbkVuZDoiIn0sZS5wcm90b3R5cGUuc3VwcG9y
dHNBbmltYXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbCE9dGhpcy5fYW5pbWF0aW9uUHJlZml4
JiZudWxsIT10aGlzLl90cmFuc2l0aW9uRW5kfSxlfShGKSxMPXtjbGFzczoiY2xhc3NOYW1lIixp
bm5lckh0bWw6ImlubmVySFRNTCIscmVhZG9ubHk6InJlYWRPbmx5Iix0YWJpbmRleDoidGFiSW5k
ZXgifSxVPTMsQj17IlxiIjoiQmFja3NwYWNlIiwiXHQiOiJUYWIiLCJ/IjoiRGVsZXRlIiwiGyI6
IkVzY2FwZSIsRGVsOiJEZWxldGUiLEVzYzoiRXNjYXBlIixMZWZ0OiJBcnJvd0xlZnQiLFJpZ2h0
OiJBcnJvd1JpZ2h0IixVcDoiQXJyb3dVcCIsRG93bjoiQXJyb3dEb3duIixNZW51OiJDb250ZXh0
TWVudSIsU2Nyb2xsOiJTY3JvbGxMb2NrIixXaW46Ik9TIn0sRz17QToiMSIsQjoiMiIsQzoiMyIs
RDoiNCIsRToiNSIsRjoiNiIsRzoiNyIsSDoiOCIsSToiOSIsSjoiKiIsSzoiKyIsTToiLSIsTjoi
LiIsTzoiLyIsImAiOiIwIiwiwpAiOiJOdW1Mb2NrIn07ai5DLk5vZGUmJihSPWouQy5Ob2RlLnBy
b3RvdHlwZS5jb250YWluc3x8ZnVuY3Rpb24odCl7cmV0dXJuISEoMTYmdGhpcy5jb21wYXJlRG9j
dW1lbnRQb3NpdGlvbih0KSl9KTt2YXIgeixxPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXtyZXR1
cm4gbnVsbCE9PXQmJnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXJldHVybiBEKGUsdCks
ZS5wcm90b3R5cGUucGFyc2U9ZnVuY3Rpb24odCl7dGhyb3cgbmV3IEVycm9yKCJwYXJzZSBub3Qg
aW1wbGVtZW50ZWQiKX0sZS5tYWtlQ3VycmVudD1mdW5jdGlvbigpe28obmV3IGUpfSxlLnByb3Rv
dHlwZS5oYXNQcm9wZXJ0eT1mdW5jdGlvbih0LGUpe3JldHVybiBlIGluIHR9LGUucHJvdG90eXBl
LnNldFByb3BlcnR5PWZ1bmN0aW9uKHQsZSxuKXt0W2VdPW59LGUucHJvdG90eXBlLmdldFByb3Bl
cnR5PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRbZV19LGUucHJvdG90eXBlLmludm9rZT1mdW5jdGlv
bih0LGUsbil7dFtlXS5hcHBseSh0LG4pfSxlLnByb3RvdHlwZS5sb2dFcnJvcj1mdW5jdGlvbih0
KXt3aW5kb3cuY29uc29sZSYmKGNvbnNvbGUuZXJyb3I/Y29uc29sZS5lcnJvcih0KTpjb25zb2xl
LmxvZyh0KSl9LGUucHJvdG90eXBlLmxvZz1mdW5jdGlvbih0KXt3aW5kb3cuY29uc29sZSYmd2lu
ZG93LmNvbnNvbGUubG9nJiZ3aW5kb3cuY29uc29sZS5sb2codCl9LGUucHJvdG90eXBlLmxvZ0dy
b3VwPWZ1bmN0aW9uKHQpe3dpbmRvdy5jb25zb2xlJiZ3aW5kb3cuY29uc29sZS5ncm91cCYmd2lu
ZG93LmNvbnNvbGUuZ3JvdXAodCl9LGUucHJvdG90eXBlLmxvZ0dyb3VwRW5kPWZ1bmN0aW9uKCl7
d2luZG93LmNvbnNvbGUmJndpbmRvdy5jb25zb2xlLmdyb3VwRW5kJiZ3aW5kb3cuY29uc29sZS5n
cm91cEVuZCgpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImF0dHJUb1Byb3BN
YXAiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gTH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6
ITB9KSxlLnByb3RvdHlwZS5jb250YWlucz1mdW5jdGlvbih0LGUpe3JldHVybiBSLmNhbGwodCxl
KX0sZS5wcm90b3R5cGUucXVlcnlTZWxlY3Rvcj1mdW5jdGlvbih0LGUpe3JldHVybiB0LnF1ZXJ5
U2VsZWN0b3IoZSl9LGUucHJvdG90eXBlLnF1ZXJ5U2VsZWN0b3JBbGw9ZnVuY3Rpb24odCxlKXty
ZXR1cm4gdC5xdWVyeVNlbGVjdG9yQWxsKGUpfSxlLnByb3RvdHlwZS5vbj1mdW5jdGlvbih0LGUs
bil7dC5hZGRFdmVudExpc3RlbmVyKGUsbiwhMSl9LGUucHJvdG90eXBlLm9uQW5kQ2FuY2VsPWZ1
bmN0aW9uKHQsZSxuKXtyZXR1cm4gdC5hZGRFdmVudExpc3RlbmVyKGUsbiwhMSksZnVuY3Rpb24o
KXt0LnJlbW92ZUV2ZW50TGlzdGVuZXIoZSxuLCExKX19LGUucHJvdG90eXBlLmRpc3BhdGNoRXZl
bnQ9ZnVuY3Rpb24odCxlKXt0LmRpc3BhdGNoRXZlbnQoZSl9LGUucHJvdG90eXBlLmNyZWF0ZU1v
dXNlRXZlbnQ9ZnVuY3Rpb24odCl7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRXZlbnQoIk1vdXNlRXZl
bnQiKTtyZXR1cm4gZS5pbml0RXZlbnQodCwhMCwhMCksZX0sZS5wcm90b3R5cGUuY3JlYXRlRXZl
bnQ9ZnVuY3Rpb24odCl7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkV2ZW50Iik7cmV0dXJu
IGUuaW5pdEV2ZW50KHQsITAsITApLGV9LGUucHJvdG90eXBlLnByZXZlbnREZWZhdWx0PWZ1bmN0
aW9uKHQpe3QucHJldmVudERlZmF1bHQoKSx0LnJldHVyblZhbHVlPSExfSxlLnByb3RvdHlwZS5p
c1ByZXZlbnRlZD1mdW5jdGlvbih0KXtyZXR1cm4gdC5kZWZhdWx0UHJldmVudGVkfHxudWxsIT10
LnJldHVyblZhbHVlJiYhdC5yZXR1cm5WYWx1ZX0sZS5wcm90b3R5cGUuZ2V0SW5uZXJIVE1MPWZ1
bmN0aW9uKHQpe3JldHVybiB0LmlubmVySFRNTH0sZS5wcm90b3R5cGUuZ2V0VGVtcGxhdGVDb250
ZW50PWZ1bmN0aW9uKHQpe3JldHVybiJjb250ZW50ImluIHQmJnQgaW5zdGFuY2VvZiBIVE1MVGVt
cGxhdGVFbGVtZW50P3QuY29udGVudDpudWxsfSxlLnByb3RvdHlwZS5nZXRPdXRlckhUTUw9ZnVu
Y3Rpb24odCl7cmV0dXJuIHQub3V0ZXJIVE1MfSxlLnByb3RvdHlwZS5ub2RlTmFtZT1mdW5jdGlv
bih0KXtyZXR1cm4gdC5ub2RlTmFtZX0sZS5wcm90b3R5cGUubm9kZVZhbHVlPWZ1bmN0aW9uKHQp
e3JldHVybiB0Lm5vZGVWYWx1ZX0sZS5wcm90b3R5cGUudHlwZT1mdW5jdGlvbih0KXtyZXR1cm4g
dC50eXBlfSxlLnByb3RvdHlwZS5jb250ZW50PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmhhc1By
b3BlcnR5KHQsImNvbnRlbnQiKT90LmNvbnRlbnQ6dH0sZS5wcm90b3R5cGUuZmlyc3RDaGlsZD1m
dW5jdGlvbih0KXtyZXR1cm4gdC5maXJzdENoaWxkfSxlLnByb3RvdHlwZS5uZXh0U2libGluZz1m
dW5jdGlvbih0KXtyZXR1cm4gdC5uZXh0U2libGluZ30sZS5wcm90b3R5cGUucGFyZW50RWxlbWVu
dD1mdW5jdGlvbih0KXtyZXR1cm4gdC5wYXJlbnROb2RlfSxlLnByb3RvdHlwZS5jaGlsZE5vZGVz
PWZ1bmN0aW9uKHQpe3JldHVybiB0LmNoaWxkTm9kZXN9LGUucHJvdG90eXBlLmNoaWxkTm9kZXNB
c0xpc3Q9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQuY2hpbGROb2RlcyxuPW5ldyBBcnJheShlLmxl
bmd0aCkscj0wO3I8ZS5sZW5ndGg7cisrKW5bcl09ZVtyXTtyZXR1cm4gbn0sZS5wcm90b3R5cGUu
Y2xlYXJOb2Rlcz1mdW5jdGlvbih0KXtmb3IoO3QuZmlyc3RDaGlsZDspdC5yZW1vdmVDaGlsZCh0
LmZpcnN0Q2hpbGQpfSxlLnByb3RvdHlwZS5hcHBlbmRDaGlsZD1mdW5jdGlvbih0LGUpe3QuYXBw
ZW5kQ2hpbGQoZSl9LGUucHJvdG90eXBlLnJlbW92ZUNoaWxkPWZ1bmN0aW9uKHQsZSl7dC5yZW1v
dmVDaGlsZChlKX0sZS5wcm90b3R5cGUucmVwbGFjZUNoaWxkPWZ1bmN0aW9uKHQsZSxuKXt0LnJl
cGxhY2VDaGlsZChlLG4pfSxlLnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24odCl7cmV0dXJuIHQu
cGFyZW50Tm9kZSYmdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHQpLHR9LGUucHJvdG90eXBlLmlu
c2VydEJlZm9yZT1mdW5jdGlvbih0LGUsbil7dC5pbnNlcnRCZWZvcmUobixlKX0sZS5wcm90b3R5
cGUuaW5zZXJ0QWxsQmVmb3JlPWZ1bmN0aW9uKHQsZSxuKXtuLmZvckVhY2goZnVuY3Rpb24obil7
cmV0dXJuIHQuaW5zZXJ0QmVmb3JlKG4sZSl9KX0sZS5wcm90b3R5cGUuaW5zZXJ0QWZ0ZXI9ZnVu
Y3Rpb24odCxlLG4pe3QuaW5zZXJ0QmVmb3JlKG4sZS5uZXh0U2libGluZyl9LGUucHJvdG90eXBl
LnNldElubmVySFRNTD1mdW5jdGlvbih0LGUpe3QuaW5uZXJIVE1MPWV9LGUucHJvdG90eXBlLmdl
dFRleHQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQudGV4dENvbnRlbnR9LGUucHJvdG90eXBlLnNldFRl
eHQ9ZnVuY3Rpb24odCxlKXt0LnRleHRDb250ZW50PWV9LGUucHJvdG90eXBlLmdldFZhbHVlPWZ1
bmN0aW9uKHQpe3JldHVybiB0LnZhbHVlfSxlLnByb3RvdHlwZS5zZXRWYWx1ZT1mdW5jdGlvbih0
LGUpe3QudmFsdWU9ZX0sZS5wcm90b3R5cGUuZ2V0Q2hlY2tlZD1mdW5jdGlvbih0KXtyZXR1cm4g
dC5jaGVja2VkfSxlLnByb3RvdHlwZS5zZXRDaGVja2VkPWZ1bmN0aW9uKHQsZSl7dC5jaGVja2Vk
PWV9LGUucHJvdG90eXBlLmNyZWF0ZUNvbW1lbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGRvY3VtZW50
LmNyZWF0ZUNvbW1lbnQodCl9LGUucHJvdG90eXBlLmNyZWF0ZVRlbXBsYXRlPWZ1bmN0aW9uKHQp
e3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRlbXBsYXRlIik7cmV0dXJuIGUuaW5uZXJI
VE1MPXQsZX0sZS5wcm90b3R5cGUuY3JlYXRlRWxlbWVudD1mdW5jdGlvbih0LGUpe3JldHVybiB2
b2lkIDA9PT1lJiYoZT1kb2N1bWVudCksZS5jcmVhdGVFbGVtZW50KHQpfSxlLnByb3RvdHlwZS5j
cmVhdGVFbGVtZW50TlM9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB2b2lkIDA9PT1uJiYobj1kb2N1
bWVudCksbi5jcmVhdGVFbGVtZW50TlModCxlKX0sZS5wcm90b3R5cGUuY3JlYXRlVGV4dE5vZGU9
ZnVuY3Rpb24odCxlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9ZG9jdW1lbnQpLGUuY3JlYXRlVGV4
dE5vZGUodCl9LGUucHJvdG90eXBlLmNyZWF0ZVNjcmlwdFRhZz1mdW5jdGlvbih0LGUsbil7dm9p
ZCAwPT09biYmKG49ZG9jdW1lbnQpO3ZhciByPW4uY3JlYXRlRWxlbWVudCgiU0NSSVBUIik7cmV0
dXJuIHIuc2V0QXR0cmlidXRlKHQsZSkscn0sZS5wcm90b3R5cGUuY3JlYXRlU3R5bGVFbGVtZW50
PWZ1bmN0aW9uKHQsZSl7dm9pZCAwPT09ZSYmKGU9ZG9jdW1lbnQpO3ZhciBuPWUuY3JlYXRlRWxl
bWVudCgic3R5bGUiKTtyZXR1cm4gdGhpcy5hcHBlbmRDaGlsZChuLHRoaXMuY3JlYXRlVGV4dE5v
ZGUodCkpLG59LGUucHJvdG90eXBlLmNyZWF0ZVNoYWRvd1Jvb3Q9ZnVuY3Rpb24odCl7cmV0dXJu
IHQuY3JlYXRlU2hhZG93Um9vdCgpfSxlLnByb3RvdHlwZS5nZXRTaGFkb3dSb290PWZ1bmN0aW9u
KHQpe3JldHVybiB0LnNoYWRvd1Jvb3R9LGUucHJvdG90eXBlLmdldEhvc3Q9ZnVuY3Rpb24odCl7
cmV0dXJuIHQuaG9zdH0sZS5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24odCl7cmV0dXJuIHQuY2xv
bmVOb2RlKCEwKX0sZS5wcm90b3R5cGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZT1mdW5jdGlvbih0
LGUpe3JldHVybiB0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoZSl9LGUucHJvdG90eXBlLmdldEVs
ZW1lbnRzQnlUYWdOYW1lPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoZSl9LGUucHJvdG90eXBlLmNsYXNzTGlzdD1mdW5jdGlvbih0KXtyZXR1cm4gQXJyYXkucHJv
dG90eXBlLnNsaWNlLmNhbGwodC5jbGFzc0xpc3QsMCl9LGUucHJvdG90eXBlLmFkZENsYXNzPWZ1
bmN0aW9uKHQsZSl7dC5jbGFzc0xpc3QuYWRkKGUpfSxlLnByb3RvdHlwZS5yZW1vdmVDbGFzcz1m
dW5jdGlvbih0LGUpe3QuY2xhc3NMaXN0LnJlbW92ZShlKX0sZS5wcm90b3R5cGUuaGFzQ2xhc3M9
ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5jbGFzc0xpc3QuY29udGFpbnMoZSl9LGUucHJvdG90eXBl
LnNldFN0eWxlPWZ1bmN0aW9uKHQsZSxuKXt0LnN0eWxlW2VdPW59LGUucHJvdG90eXBlLnJlbW92
ZVN0eWxlPWZ1bmN0aW9uKHQsZSl7dC5zdHlsZVtlXT0iIn0sZS5wcm90b3R5cGUuZ2V0U3R5bGU9
ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5zdHlsZVtlXX0sZS5wcm90b3R5cGUuaGFzU3R5bGU9ZnVu
Y3Rpb24odCxlLG4pe3ZvaWQgMD09PW4mJihuPW51bGwpO3ZhciByPXRoaXMuZ2V0U3R5bGUodCxl
KXx8IiI7cmV0dXJuIG4/cj09bjpyLmxlbmd0aD4wfSxlLnByb3RvdHlwZS50YWdOYW1lPWZ1bmN0
aW9uKHQpe3JldHVybiB0LnRhZ05hbWV9LGUucHJvdG90eXBlLmF0dHJpYnV0ZU1hcD1mdW5jdGlv
bih0KXtmb3IodmFyIGU9bmV3IE1hcCxuPXQuYXR0cmlidXRlcyxyPTA7cjxuLmxlbmd0aDtyKysp
e3ZhciBvPW5bcl07ZS5zZXQoby5uYW1lLG8udmFsdWUpfXJldHVybiBlfSxlLnByb3RvdHlwZS5o
YXNBdHRyaWJ1dGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5oYXNBdHRyaWJ1dGUoZSl9LGUucHJv
dG90eXBlLmhhc0F0dHJpYnV0ZU5TPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdC5oYXNBdHRyaWJ1
dGVOUyhlLG4pfSxlLnByb3RvdHlwZS5nZXRBdHRyaWJ1dGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4g
dC5nZXRBdHRyaWJ1dGUoZSl9LGUucHJvdG90eXBlLmdldEF0dHJpYnV0ZU5TPWZ1bmN0aW9uKHQs
ZSxuKXtyZXR1cm4gdC5nZXRBdHRyaWJ1dGVOUyhlLG4pfSxlLnByb3RvdHlwZS5zZXRBdHRyaWJ1
dGU9ZnVuY3Rpb24odCxlLG4pe3Quc2V0QXR0cmlidXRlKGUsbil9LGUucHJvdG90eXBlLnNldEF0
dHJpYnV0ZU5TPWZ1bmN0aW9uKHQsZSxuLHIpe3Quc2V0QXR0cmlidXRlTlMoZSxuLHIpfSxlLnBy
b3RvdHlwZS5yZW1vdmVBdHRyaWJ1dGU9ZnVuY3Rpb24odCxlKXt0LnJlbW92ZUF0dHJpYnV0ZShl
KX0sZS5wcm90b3R5cGUucmVtb3ZlQXR0cmlidXRlTlM9ZnVuY3Rpb24odCxlLG4pe3QucmVtb3Zl
QXR0cmlidXRlTlMoZSxuKX0sZS5wcm90b3R5cGUudGVtcGxhdGVBd2FyZVJvb3Q9ZnVuY3Rpb24o
dCl7cmV0dXJuIHRoaXMuaXNUZW1wbGF0ZUVsZW1lbnQodCk/dGhpcy5jb250ZW50KHQpOnR9LGUu
cHJvdG90eXBlLmNyZWF0ZUh0bWxEb2N1bWVudD1mdW5jdGlvbigpe3JldHVybiBkb2N1bWVudC5p
bXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoImZha2VUaXRsZSIpfSxlLnByb3RvdHlw
ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3Q9ZnVuY3Rpb24odCl7dHJ5e3JldHVybiB0LmdldEJvdW5k
aW5nQ2xpZW50UmVjdCgpfWNhdGNoKHQpe3JldHVybnt0b3A6MCxib3R0b206MCxsZWZ0OjAscmln
aHQ6MCx3aWR0aDowLGhlaWdodDowfX19LGUucHJvdG90eXBlLmdldFRpdGxlPWZ1bmN0aW9uKHQp
e3JldHVybiBkb2N1bWVudC50aXRsZX0sZS5wcm90b3R5cGUuc2V0VGl0bGU9ZnVuY3Rpb24odCxl
KXtkb2N1bWVudC50aXRsZT1lfHwiIn0sZS5wcm90b3R5cGUuZWxlbWVudE1hdGNoZXM9ZnVuY3Rp
b24odCxlKXtyZXR1cm4gdCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50JiYodC5tYXRjaGVzJiZ0Lm1h
dGNoZXMoZSl8fHQubXNNYXRjaGVzU2VsZWN0b3ImJnQubXNNYXRjaGVzU2VsZWN0b3IoZSl8fHQu
d2Via2l0TWF0Y2hlc1NlbGVjdG9yJiZ0LndlYmtpdE1hdGNoZXNTZWxlY3RvcihlKSl9LGUucHJv
dG90eXBlLmlzVGVtcGxhdGVFbGVtZW50PWZ1bmN0aW9uKHQpe3JldHVybiB0IGluc3RhbmNlb2Yg
SFRNTEVsZW1lbnQmJiJURU1QTEFURSI9PXQubm9kZU5hbWV9LGUucHJvdG90eXBlLmlzVGV4dE5v
ZGU9ZnVuY3Rpb24odCl7cmV0dXJuIHQubm9kZVR5cGU9PT1Ob2RlLlRFWFRfTk9ERX0sZS5wcm90
b3R5cGUuaXNDb21tZW50Tm9kZT1mdW5jdGlvbih0KXtyZXR1cm4gdC5ub2RlVHlwZT09PU5vZGUu
Q09NTUVOVF9OT0RFfSxlLnByb3RvdHlwZS5pc0VsZW1lbnROb2RlPWZ1bmN0aW9uKHQpe3JldHVy
biB0Lm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREV9LGUucHJvdG90eXBlLmhhc1NoYWRvd1Jv
b3Q9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGwhPXQuc2hhZG93Um9vdCYmdCBpbnN0YW5jZW9mIEhU
TUxFbGVtZW50fSxlLnByb3RvdHlwZS5pc1NoYWRvd1Jvb3Q9ZnVuY3Rpb24odCl7cmV0dXJuIHQg
aW5zdGFuY2VvZiBEb2N1bWVudEZyYWdtZW50fSxlLnByb3RvdHlwZS5pbXBvcnRJbnRvRG9jPWZ1
bmN0aW9uKHQpe3JldHVybiBkb2N1bWVudC5pbXBvcnROb2RlKHRoaXMudGVtcGxhdGVBd2FyZVJv
b3QodCksITApfSxlLnByb3RvdHlwZS5hZG9wdE5vZGU9ZnVuY3Rpb24odCl7cmV0dXJuIGRvY3Vt
ZW50LmFkb3B0Tm9kZSh0KX0sZS5wcm90b3R5cGUuZ2V0SHJlZj1mdW5jdGlvbih0KXtyZXR1cm4g
dC5ocmVmfSxlLnByb3RvdHlwZS5nZXRFdmVudEtleT1mdW5jdGlvbih0KXt2YXIgZT10LmtleTtp
ZihudWxsPT1lKXtpZihudWxsPT0oZT10LmtleUlkZW50aWZpZXIpKXJldHVybiJVbmlkZW50aWZp
ZWQiO2Uuc3RhcnRzV2l0aCgiVSsiKSYmKGU9U3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludChl
LnN1YnN0cmluZygyKSwxNikpLHQubG9jYXRpb249PT1VJiZHLmhhc093blByb3BlcnR5KGUpJiYo
ZT1HW2VdKSl9cmV0dXJuIEJbZV18fGV9LGUucHJvdG90eXBlLmdldEdsb2JhbEV2ZW50VGFyZ2V0
PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIndpbmRvdyI9PT1lP3dpbmRvdzoiZG9jdW1lbnQiPT09ZT9k
b2N1bWVudDoiYm9keSI9PT1lP2RvY3VtZW50LmJvZHk6dm9pZCAwfSxlLnByb3RvdHlwZS5nZXRI
aXN0b3J5PWZ1bmN0aW9uKCl7cmV0dXJuIHdpbmRvdy5oaXN0b3J5fSxlLnByb3RvdHlwZS5nZXRM
b2NhdGlvbj1mdW5jdGlvbigpe3JldHVybiB3aW5kb3cubG9jYXRpb259LGUucHJvdG90eXBlLmdl
dEJhc2VIcmVmPWZ1bmN0aW9uKHQpe3ZhciBlPWkoKTtyZXR1cm4gbnVsbD09ZT9udWxsOnMoZSl9
LGUucHJvdG90eXBlLnJlc2V0QmFzZUVsZW1lbnQ9ZnVuY3Rpb24oKXtaPW51bGx9LGUucHJvdG90
eXBlLmdldFVzZXJBZ2VudD1mdW5jdGlvbigpe3JldHVybiB3aW5kb3cubmF2aWdhdG9yLnVzZXJB
Z2VudH0sZS5wcm90b3R5cGUuc2V0RGF0YT1mdW5jdGlvbih0LGUsbil7dGhpcy5zZXRBdHRyaWJ1
dGUodCwiZGF0YS0iK2Usbil9LGUucHJvdG90eXBlLmdldERhdGE9ZnVuY3Rpb24odCxlKXtyZXR1
cm4gdGhpcy5nZXRBdHRyaWJ1dGUodCwiZGF0YS0iK2UpfSxlLnByb3RvdHlwZS5nZXRDb21wdXRl
ZFN0eWxlPWZ1bmN0aW9uKHQpe3JldHVybiBnZXRDb21wdXRlZFN0eWxlKHQpfSxlLnByb3RvdHlw
ZS5zZXRHbG9iYWxWYXI9ZnVuY3Rpb24odCxlKXt1KGouQyx0LGUpfSxlLnByb3RvdHlwZS5zdXBw
b3J0c1dlYkFuaW1hdGlvbj1mdW5jdGlvbigpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBFbGVt
ZW50LnByb3RvdHlwZS5hbmltYXRlfSxlLnByb3RvdHlwZS5wZXJmb3JtYW5jZU5vdz1mdW5jdGlv
bigpe3JldHVybiB3aW5kb3cucGVyZm9ybWFuY2UmJndpbmRvdy5wZXJmb3JtYW5jZS5ub3c/d2lu
ZG93LnBlcmZvcm1hbmNlLm5vdygpOihuZXcgRGF0ZSkuZ2V0VGltZSgpfSxlLnByb3RvdHlwZS5z
dXBwb3J0c0Nvb2tpZXM9ZnVuY3Rpb24oKXtyZXR1cm4hMH0sZS5wcm90b3R5cGUuZ2V0Q29va2ll
PWZ1bmN0aW9uKHQpe3JldHVybiBhKGRvY3VtZW50LmNvb2tpZSx0KX0sZS5wcm90b3R5cGUuc2V0
Q29va2llPWZ1bmN0aW9uKHQsZSl7ZG9jdW1lbnQuY29va2llPWVuY29kZVVSSUNvbXBvbmVudCh0
KSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KGUpfSxlfShIKSxaPW51bGwsVz1uZXcgai5EKCJEb2N1
bWVudFRva2VuIiksSz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUpe3ZhciBuPXQuY2FsbCh0aGlz
KXx8dGhpcztyZXR1cm4gbi5fZG9jPWUsbi5faW5pdCgpLG59cmV0dXJuIEQoZSx0KSxlLnByb3Rv
dHlwZS5faW5pdD1mdW5jdGlvbigpe3RoaXMuX2xvY2F0aW9uPXIoKS5nZXRMb2NhdGlvbigpLHRo
aXMuX2hpc3Rvcnk9cigpLmdldEhpc3RvcnkoKX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJv
dG90eXBlLCJsb2NhdGlvbiIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9sb2NhdGlvbn0s
ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5nZXRCYXNlSHJlZkZy
b21ET009ZnVuY3Rpb24oKXtyZXR1cm4gcigpLmdldEJhc2VIcmVmKHRoaXMuX2RvYyl9LGUucHJv
dG90eXBlLm9uUG9wU3RhdGU9ZnVuY3Rpb24odCl7cigpLmdldEdsb2JhbEV2ZW50VGFyZ2V0KHRo
aXMuX2RvYywid2luZG93IikuYWRkRXZlbnRMaXN0ZW5lcigicG9wc3RhdGUiLHQsITEpfSxlLnBy
b3RvdHlwZS5vbkhhc2hDaGFuZ2U9ZnVuY3Rpb24odCl7cigpLmdldEdsb2JhbEV2ZW50VGFyZ2V0
KHRoaXMuX2RvYywid2luZG93IikuYWRkRXZlbnRMaXN0ZW5lcigiaGFzaGNoYW5nZSIsdCwhMSl9
LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwicGF0aG5hbWUiLHtnZXQ6ZnVuY3Rp
b24oKXtyZXR1cm4gdGhpcy5fbG9jYXRpb24ucGF0aG5hbWV9LHNldDpmdW5jdGlvbih0KXt0aGlz
Ll9sb2NhdGlvbi5wYXRobmFtZT10fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9i
amVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwic2VhcmNoIix7Z2V0OmZ1bmN0aW9uKCl7
cmV0dXJuIHRoaXMuX2xvY2F0aW9uLnNlYXJjaH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6
ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImhhc2giLHtnZXQ6ZnVuY3Rp
b24oKXtyZXR1cm4gdGhpcy5fbG9jYXRpb24uaGFzaH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFi
bGU6ITB9KSxlLnByb3RvdHlwZS5wdXNoU3RhdGU9ZnVuY3Rpb24odCxlLG4pe2MoKT90aGlzLl9o
aXN0b3J5LnB1c2hTdGF0ZSh0LGUsbik6dGhpcy5fbG9jYXRpb24uaGFzaD1ufSxlLnByb3RvdHlw
ZS5yZXBsYWNlU3RhdGU9ZnVuY3Rpb24odCxlLG4pe2MoKT90aGlzLl9oaXN0b3J5LnJlcGxhY2VT
dGF0ZSh0LGUsbik6dGhpcy5fbG9jYXRpb24uaGFzaD1ufSxlLnByb3RvdHlwZS5mb3J3YXJkPWZ1
bmN0aW9uKCl7dGhpcy5faGlzdG9yeS5mb3J3YXJkKCl9LGUucHJvdG90eXBlLmJhY2s9ZnVuY3Rp
b24oKXt0aGlzLl9oaXN0b3J5LmJhY2soKX0sZX0oTi5kKTtLLmRlY29yYXRvcnM9W3t0eXBlOmou
en1dLEsuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29y
YXRvcnM6W3t0eXBlOmouRSxhcmdzOltXXX1dfV19Oy8qKgorICogQGxpY2Vuc2UKKyAqIENvcHly
aWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9s
aWNlbnNlCisgKi8KK3ZhciBYPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLl9kb2M9dCx0
aGlzLl9kb209cigpfXJldHVybiB0LnByb3RvdHlwZS5hZGRUYWc9ZnVuY3Rpb24odCxlKXtyZXR1
cm4gdm9pZCAwPT09ZSYmKGU9ITEpLHQ/dGhpcy5fZ2V0T3JDcmVhdGVFbGVtZW50KHQsZSk6bnVs
bH0sdC5wcm90b3R5cGUuYWRkVGFncz1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXM7cmV0dXJuIHZv
aWQgMD09PWUmJihlPSExKSx0P3QucmVkdWNlKGZ1bmN0aW9uKHQscil7cmV0dXJuIHImJnQucHVz
aChuLl9nZXRPckNyZWF0ZUVsZW1lbnQocixlKSksdH0sW10pOltdfSx0LnByb3RvdHlwZS5nZXRU
YWc9ZnVuY3Rpb24odCl7cmV0dXJuIHQ/dGhpcy5fZG9tLnF1ZXJ5U2VsZWN0b3IodGhpcy5fZG9j
LCJtZXRhWyIrdCsiXSIpOm51bGx9LHQucHJvdG90eXBlLmdldFRhZ3M9ZnVuY3Rpb24odCl7aWYo
IXQpcmV0dXJuW107dmFyIGU9dGhpcy5fZG9tLnF1ZXJ5U2VsZWN0b3JBbGwodGhpcy5fZG9jLCJt
ZXRhWyIrdCsiXSIpO3JldHVybiBlP1tdLnNsaWNlLmNhbGwoZSk6W119LHQucHJvdG90eXBlLnVw
ZGF0ZVRhZz1mdW5jdGlvbih0LGUpe2lmKCF0KXJldHVybiBudWxsO2U9ZXx8dGhpcy5fcGFyc2VT
ZWxlY3Rvcih0KTt2YXIgbj10aGlzLmdldFRhZyhlKTtyZXR1cm4gbj90aGlzLl9zZXRNZXRhRWxl
bWVudEF0dHJpYnV0ZXModCxuKTp0aGlzLl9nZXRPckNyZWF0ZUVsZW1lbnQodCwhMCl9LHQucHJv
dG90eXBlLnJlbW92ZVRhZz1mdW5jdGlvbih0KXt0aGlzLnJlbW92ZVRhZ0VsZW1lbnQodGhpcy5n
ZXRUYWcodCkpfSx0LnByb3RvdHlwZS5yZW1vdmVUYWdFbGVtZW50PWZ1bmN0aW9uKHQpe3QmJnRo
aXMuX2RvbS5yZW1vdmUodCl9LHQucHJvdG90eXBlLl9nZXRPckNyZWF0ZUVsZW1lbnQ9ZnVuY3Rp
b24odCxlKXtpZih2b2lkIDA9PT1lJiYoZT0hMSksIWUpe3ZhciBuPXRoaXMuX3BhcnNlU2VsZWN0
b3IodCkscj10aGlzLmdldFRhZyhuKTtpZihyJiZ0aGlzLl9jb250YWluc0F0dHJpYnV0ZXModCxy
KSlyZXR1cm4gcn12YXIgbz10aGlzLl9kb20uY3JlYXRlRWxlbWVudCgibWV0YSIpO3RoaXMuX3Nl
dE1ldGFFbGVtZW50QXR0cmlidXRlcyh0LG8pO3ZhciBpPXRoaXMuX2RvbS5nZXRFbGVtZW50c0J5
VGFnTmFtZSh0aGlzLl9kb2MsImhlYWQiKVswXTtyZXR1cm4gdGhpcy5fZG9tLmFwcGVuZENoaWxk
KGksbyksb30sdC5wcm90b3R5cGUuX3NldE1ldGFFbGVtZW50QXR0cmlidXRlcz1mdW5jdGlvbih0
LGUpe3ZhciBuPXRoaXM7cmV0dXJuIE9iamVjdC5rZXlzKHQpLmZvckVhY2goZnVuY3Rpb24ocil7
cmV0dXJuIG4uX2RvbS5zZXRBdHRyaWJ1dGUoZSxyLHRbcl0pfSksZX0sdC5wcm90b3R5cGUuX3Bh
cnNlU2VsZWN0b3I9ZnVuY3Rpb24odCl7dmFyIGU9dC5uYW1lPyJuYW1lIjoicHJvcGVydHkiO3Jl
dHVybiBlKyc9IicrdFtlXSsnIid9LHQucHJvdG90eXBlLl9jb250YWluc0F0dHJpYnV0ZXM9ZnVu
Y3Rpb24odCxlKXt2YXIgbj10aGlzO3JldHVybiBPYmplY3Qua2V5cyh0KS5ldmVyeShmdW5jdGlv
bihyKXtyZXR1cm4gbi5fZG9tLmdldEF0dHJpYnV0ZShlLHIpPT09dFtyXX0pfSx0fSgpO1guZGVj
b3JhdG9ycz1be3R5cGU6ai56fV0sWC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7
dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6ai5FLGFyZ3M6W1ddfV19XX07LyoqCisgKiBA
bGljZW5zZQorICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisg
KgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0
cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKKyAqLwordmFyIFE9bmV3IGouRCgiVFJBTlNJVElPTl9J
RCIpLEo9W3twcm92aWRlOmoucSx1c2VGYWN0b3J5OmwsZGVwczpbUSxXXSxtdWx0aTohMH1dLCQ9
ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LmluaXQ9ZnVuY3Rpb24oKXtuLmkoai5G
KShuZXcgdCl9LHQucHJvdG90eXBlLmFkZFRvV2luZG93PWZ1bmN0aW9uKHQpe2ouQy5nZXRBbmd1
bGFyVGVzdGFiaWxpdHk9ZnVuY3Rpb24oZSxuKXt2b2lkIDA9PT1uJiYobj0hMCk7dmFyIHI9dC5m
aW5kVGVzdGFiaWxpdHlJblRyZWUoZSxuKTtpZihudWxsPT1yKXRocm93IG5ldyBFcnJvcigiQ291
bGQgbm90IGZpbmQgdGVzdGFiaWxpdHkgZm9yIGVsZW1lbnQuIik7cmV0dXJuIHJ9LGouQy5nZXRB
bGxBbmd1bGFyVGVzdGFiaWxpdGllcz1mdW5jdGlvbigpe3JldHVybiB0LmdldEFsbFRlc3RhYmls
aXRpZXMoKX0sai5DLmdldEFsbEFuZ3VsYXJSb290RWxlbWVudHM9ZnVuY3Rpb24oKXtyZXR1cm4g
dC5nZXRBbGxSb290RWxlbWVudHMoKX07dmFyIGU9ZnVuY3Rpb24odCl7dmFyIGU9ai5DLmdldEFs
bEFuZ3VsYXJUZXN0YWJpbGl0aWVzKCksbj1lLmxlbmd0aCxyPSExLG89ZnVuY3Rpb24oZSl7cj1y
fHxlLDA9PS0tbiYmdChyKX07ZS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3Qud2hlblN0YWJsZShvKX0p
fTtqLkMuZnJhbWV3b3JrU3RhYmlsaXplcnN8fChqLkMuZnJhbWV3b3JrU3RhYmlsaXplcnM9W10p
LGouQy5mcmFtZXdvcmtTdGFiaWxpemVycy5wdXNoKGUpfSx0LnByb3RvdHlwZS5maW5kVGVzdGFi
aWxpdHlJblRyZWU9ZnVuY3Rpb24odCxlLG4pe2lmKG51bGw9PWUpcmV0dXJuIG51bGw7dmFyIG89
dC5nZXRUZXN0YWJpbGl0eShlKTtyZXR1cm4gbnVsbCE9bz9vOm4/cigpLmlzU2hhZG93Um9vdChl
KT90aGlzLmZpbmRUZXN0YWJpbGl0eUluVHJlZSh0LHIoKS5nZXRIb3N0KGUpLCEwKTp0aGlzLmZp
bmRUZXN0YWJpbGl0eUluVHJlZSh0LHIoKS5wYXJlbnRFbGVtZW50KGUpLCEwKTpudWxsfSx0fSgp
LFk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuX2RvYz10fXJldHVybiB0LnByb3RvdHlw
ZS5nZXRUaXRsZT1mdW5jdGlvbigpe3JldHVybiByKCkuZ2V0VGl0bGUodGhpcy5fZG9jKX0sdC5w
cm90b3R5cGUuc2V0VGl0bGU9ZnVuY3Rpb24odCl7cigpLnNldFRpdGxlKHRoaXMuX2RvYyx0KX0s
dH0oKTtZLmRlY29yYXRvcnM9W3t0eXBlOmouen1dLFkuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24o
KXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOmouRSxhcmdzOltXXX1dfV19
Oy8qKgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFu
IE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCisgKi8KK3ZhciB0dD1PYmplY3QuYXNz
aWdufHxmdW5jdGlvbih0KXtmb3IodmFyIGUsbj0xLHI9YXJndW1lbnRzLmxlbmd0aDtuPHI7bisr
KXtlPWFyZ3VtZW50c1tuXTtmb3IodmFyIG8gaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blBy
b3BlcnR5LmNhbGwoZSxvKSYmKHRbb109ZVtvXSl9cmV0dXJuIHR9LGV0PXtBcHBsaWNhdGlvblJl
ZjpqLnIsTmdab25lOmouaH0sbnQ9Im5nLnByb2JlIixydD0ibmcuY29yZVRva2VucyIsb3Q9ZnVu
Y3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7dGhpcy5uYW1lPXQsdGhpcy50b2tlbj1lfXJldHVybiB0
fSgpLGl0PVt7cHJvdmlkZTpqLnEsdXNlRmFjdG9yeTpmLGRlcHM6W1tvdCxuZXcgai5IXSxbai5r
LG5ldyBqLkhdXSxtdWx0aTohMH1dLHN0PW5ldyBqLkQoIkV2ZW50TWFuYWdlclBsdWdpbnMiKSxh
dD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt2YXIgbj10aGlzO3RoaXMuX3pvbmU9ZSx0aGlz
Ll9ldmVudE5hbWVUb1BsdWdpbj1uZXcgTWFwLHQuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4g
dC5tYW5hZ2VyPW59KSx0aGlzLl9wbHVnaW5zPXQuc2xpY2UoKS5yZXZlcnNlKCl9cmV0dXJuIHQu
cHJvdG90eXBlLmFkZEV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0aGlzLl9m
aW5kUGx1Z2luRm9yKGUpLmFkZEV2ZW50TGlzdGVuZXIodCxlLG4pfSx0LnByb3RvdHlwZS5hZGRH
bG9iYWxFdmVudExpc3RlbmVyPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdGhpcy5fZmluZFBsdWdp
bkZvcihlKS5hZGRHbG9iYWxFdmVudExpc3RlbmVyKHQsZSxuKX0sdC5wcm90b3R5cGUuZ2V0Wm9u
ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl96b25lfSx0LnByb3RvdHlwZS5fZmluZFBsdWdpbkZv
cj1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9ldmVudE5hbWVUb1BsdWdpbi5nZXQodCk7aWYoZSly
ZXR1cm4gZTtmb3IodmFyIG49dGhpcy5fcGx1Z2lucyxyPTA7cjxuLmxlbmd0aDtyKyspe3ZhciBv
PW5bcl07aWYoby5zdXBwb3J0cyh0KSlyZXR1cm4gdGhpcy5fZXZlbnROYW1lVG9QbHVnaW4uc2V0
KHQsbyksb310aHJvdyBuZXcgRXJyb3IoIk5vIGV2ZW50IG1hbmFnZXIgcGx1Z2luIGZvdW5kIGZv
ciBldmVudCAiK3QpfSx0fSgpO2F0LmRlY29yYXRvcnM9W3t0eXBlOmouen1dLGF0LmN0b3JQYXJh
bWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOmou
RSxhcmdzOltzdF19XX0se3R5cGU6ai5ofV19O3ZhciB1dD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQo
dCl7dGhpcy5fZG9jPXR9cmV0dXJuIHQucHJvdG90eXBlLnN1cHBvcnRzPWZ1bmN0aW9uKHQpe30s
dC5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbih0LGUsbil7fSx0LnByb3RvdHlw
ZS5hZGRHbG9iYWxFdmVudExpc3RlbmVyPWZ1bmN0aW9uKHQsZSxuKXt2YXIgbz1yKCkuZ2V0R2xv
YmFsRXZlbnRUYXJnZXQodGhpcy5fZG9jLHQpO2lmKCFvKXRocm93IG5ldyBFcnJvcigiVW5zdXBw
b3J0ZWQgZXZlbnQgdGFyZ2V0ICIrbysiIGZvciBldmVudCAiK2UpO3JldHVybiB0aGlzLmFkZEV2
ZW50TGlzdGVuZXIobyxlLG4pfSx0fSgpLGN0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3RoaXMu
X3N0eWxlc1NldD1uZXcgU2V0fXJldHVybiB0LnByb3RvdHlwZS5hZGRTdHlsZXM9ZnVuY3Rpb24o
dCl7dmFyIGU9dGhpcyxuPW5ldyBTZXQ7dC5mb3JFYWNoKGZ1bmN0aW9uKHQpe2UuX3N0eWxlc1Nl
dC5oYXModCl8fChlLl9zdHlsZXNTZXQuYWRkKHQpLG4uYWRkKHQpKX0pLHRoaXMub25TdHlsZXNB
ZGRlZChuKX0sdC5wcm90b3R5cGUub25TdHlsZXNBZGRlZD1mdW5jdGlvbih0KXt9LHQucHJvdG90
eXBlLmdldEFsbFN0eWxlcz1mdW5jdGlvbigpe3JldHVybiBBcnJheS5mcm9tKHRoaXMuX3N0eWxl
c1NldCl9LHR9KCk7Y3QuZGVjb3JhdG9ycz1be3R5cGU6ai56fV0sY3QuY3RvclBhcmFtZXRlcnM9
ZnVuY3Rpb24oKXtyZXR1cm5bXX07dmFyIGx0PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7dmFy
IG49dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBuLl9kb2M9ZSxuLl9ob3N0Tm9kZXM9bmV3IFNl
dCxuLl9zdHlsZU5vZGVzPW5ldyBTZXQsbi5faG9zdE5vZGVzLmFkZChlLmhlYWQpLG59cmV0dXJu
IEQoZSx0KSxlLnByb3RvdHlwZS5fYWRkU3R5bGVzVG9Ib3N0PWZ1bmN0aW9uKHQsZSl7dmFyIG49
dGhpczt0LmZvckVhY2goZnVuY3Rpb24odCl7dmFyIHI9bi5fZG9jLmNyZWF0ZUVsZW1lbnQoInN0
eWxlIik7ci50ZXh0Q29udGVudD10LG4uX3N0eWxlTm9kZXMuYWRkKGUuYXBwZW5kQ2hpbGQocikp
fSl9LGUucHJvdG90eXBlLmFkZEhvc3Q9ZnVuY3Rpb24odCl7dGhpcy5fYWRkU3R5bGVzVG9Ib3N0
KHRoaXMuX3N0eWxlc1NldCx0KSx0aGlzLl9ob3N0Tm9kZXMuYWRkKHQpfSxlLnByb3RvdHlwZS5y
ZW1vdmVIb3N0PWZ1bmN0aW9uKHQpe3RoaXMuX2hvc3ROb2Rlcy5kZWxldGUodCl9LGUucHJvdG90
eXBlLm9uU3R5bGVzQWRkZWQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0aGlzLl9ob3N0Tm9kZXMu
Zm9yRWFjaChmdW5jdGlvbihuKXtyZXR1cm4gZS5fYWRkU3R5bGVzVG9Ib3N0KHQsbil9KX0sZS5w
cm90b3R5cGUubmdPbkRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLl9zdHlsZU5vZGVzLmZvckVhY2go
ZnVuY3Rpb24odCl7cmV0dXJuIHIoKS5yZW1vdmUodCl9KX0sZX0oY3QpO2x0LmRlY29yYXRvcnM9
W3t0eXBlOmouen1dLGx0LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZv
aWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpqLkUsYXJnczpbV119XX1dfTsvKioKKyAqIEBsaWNlbnNl
CisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2Fu
Z3VsYXIuaW8vbGljZW5zZQorICovCit2YXIgcHQ9e3N2ZzoiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLHhodG1sOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIix4bGluazoiaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayIseG1sOiJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9u
YW1lc3BhY2UiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyJ9LGZ0PS8lQ09N
UCUvZyxodD0iJUNPTVAlIixkdD0iX25naG9zdC0iK2h0LHl0PSJfbmdjb250ZW50LSIraHQsbXQ9
ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7dGhpcy5ldmVudE1hbmFnZXI9dCx0aGlzLnNoYXJl
ZFN0eWxlc0hvc3Q9ZSx0aGlzLnJlbmRlcmVyQnlDb21wSWQ9bmV3IE1hcCx0aGlzLmRlZmF1bHRS
ZW5kZXJlcj1uZXcgZ3QodCl9cmV0dXJuIHQucHJvdG90eXBlLmNyZWF0ZVJlbmRlcmVyPWZ1bmN0
aW9uKHQsZSl7aWYoIXR8fCFlKXJldHVybiB0aGlzLmRlZmF1bHRSZW5kZXJlcjtzd2l0Y2goZS5l
bmNhcHN1bGF0aW9uKXtjYXNlIGouSS5FbXVsYXRlZDp2YXIgbj10aGlzLnJlbmRlcmVyQnlDb21w
SWQuZ2V0KGUuaWQpO3JldHVybiBufHwobj1uZXcgX3QodGhpcy5ldmVudE1hbmFnZXIsdGhpcy5z
aGFyZWRTdHlsZXNIb3N0LGUpLHRoaXMucmVuZGVyZXJCeUNvbXBJZC5zZXQoZS5pZCxuKSksbi5h
cHBseVRvSG9zdCh0KSxuO2Nhc2Ugai5JLk5hdGl2ZTpyZXR1cm4gbmV3IGJ0KHRoaXMuZXZlbnRN
YW5hZ2VyLHRoaXMuc2hhcmVkU3R5bGVzSG9zdCx0LGUpO2RlZmF1bHQ6aWYoIXRoaXMucmVuZGVy
ZXJCeUNvbXBJZC5oYXMoZS5pZCkpe3ZhciByPW0oZS5pZCxlLnN0eWxlcyxbXSk7dGhpcy5zaGFy
ZWRTdHlsZXNIb3N0LmFkZFN0eWxlcyhyKSx0aGlzLnJlbmRlcmVyQnlDb21wSWQuc2V0KGUuaWQs
dGhpcy5kZWZhdWx0UmVuZGVyZXIpfXJldHVybiB0aGlzLmRlZmF1bHRSZW5kZXJlcn19LHR9KCk7
bXQuZGVjb3JhdG9ycz1be3R5cGU6ai56fV0sbXQuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXty
ZXR1cm5be3R5cGU6YXR9LHt0eXBlOmx0fV19O3ZhciBndD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQo
dCl7dGhpcy5ldmVudE1hbmFnZXI9dCx0aGlzLmRhdGE9T2JqZWN0LmNyZWF0ZShudWxsKX1yZXR1
cm4gdC5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuY3JlYXRlRWxl
bWVudD1mdW5jdGlvbih0LGUpe3JldHVybiBlP2RvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhwdFtl
XSx0KTpkb2N1bWVudC5jcmVhdGVFbGVtZW50KHQpfSx0LnByb3RvdHlwZS5jcmVhdGVDb21tZW50
PWZ1bmN0aW9uKHQpe3JldHVybiBkb2N1bWVudC5jcmVhdGVDb21tZW50KHQpfSx0LnByb3RvdHlw
ZS5jcmVhdGVUZXh0PWZ1bmN0aW9uKHQpe3JldHVybiBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0
KX0sdC5wcm90b3R5cGUuYXBwZW5kQ2hpbGQ9ZnVuY3Rpb24odCxlKXt0LmFwcGVuZENoaWxkKGUp
fSx0LnByb3RvdHlwZS5pbnNlcnRCZWZvcmU9ZnVuY3Rpb24odCxlLG4pe3QmJnQuaW5zZXJ0QmVm
b3JlKGUsbil9LHQucHJvdG90eXBlLnJlbW92ZUNoaWxkPWZ1bmN0aW9uKHQsZSl7dCYmdC5yZW1v
dmVDaGlsZChlKX0sdC5wcm90b3R5cGUuc2VsZWN0Um9vdEVsZW1lbnQ9ZnVuY3Rpb24odCl7dmFy
IGU9InN0cmluZyI9PXR5cGVvZiB0P2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodCk6dDtpZighZSl0
aHJvdyBuZXcgRXJyb3IoJ1RoZSBzZWxlY3RvciAiJyt0KyciIGRpZCBub3QgbWF0Y2ggYW55IGVs
ZW1lbnRzJyk7cmV0dXJuIGUudGV4dENvbnRlbnQ9IiIsZX0sdC5wcm90b3R5cGUucGFyZW50Tm9k
ZT1mdW5jdGlvbih0KXtyZXR1cm4gdC5wYXJlbnROb2RlfSx0LnByb3RvdHlwZS5uZXh0U2libGlu
Zz1mdW5jdGlvbih0KXtyZXR1cm4gdC5uZXh0U2libGluZ30sdC5wcm90b3R5cGUuc2V0QXR0cmli
dXRlPWZ1bmN0aW9uKHQsZSxuLHIpe2lmKHIpe2U9cisiOiIrZTt2YXIgbz1wdFtyXTtvP3Quc2V0
QXR0cmlidXRlTlMobyxlLG4pOnQuc2V0QXR0cmlidXRlKGUsbil9ZWxzZSB0LnNldEF0dHJpYnV0
ZShlLG4pfSx0LnByb3RvdHlwZS5yZW1vdmVBdHRyaWJ1dGU9ZnVuY3Rpb24odCxlLG4pe2lmKG4p
e3ZhciByPXB0W25dO3I/dC5yZW1vdmVBdHRyaWJ1dGVOUyhyLGUpOnQucmVtb3ZlQXR0cmlidXRl
KG4rIjoiK2UpfWVsc2UgdC5yZW1vdmVBdHRyaWJ1dGUoZSl9LHQucHJvdG90eXBlLmFkZENsYXNz
PWZ1bmN0aW9uKHQsZSl7dC5jbGFzc0xpc3QuYWRkKGUpfSx0LnByb3RvdHlwZS5yZW1vdmVDbGFz
cz1mdW5jdGlvbih0LGUpe3QuY2xhc3NMaXN0LnJlbW92ZShlKX0sdC5wcm90b3R5cGUuc2V0U3R5
bGU9ZnVuY3Rpb24odCxlLG4scil7ciZqLkouRGFzaENhc2U/dC5zdHlsZS5zZXRQcm9wZXJ0eShl
LG4sciZqLkouSW1wb3J0YW50PyJpbXBvcnRhbnQiOiIiKTp0LnN0eWxlW2VdPW59LHQucHJvdG90
eXBlLnJlbW92ZVN0eWxlPWZ1bmN0aW9uKHQsZSxuKXtuJmouSi5EYXNoQ2FzZT90LnN0eWxlLnJl
bW92ZVByb3BlcnR5KGUpOnQuc3R5bGVbZV09IiJ9LHQucHJvdG90eXBlLnNldFByb3BlcnR5PWZ1
bmN0aW9uKHQsZSxuKXt2KGUsInByb3BlcnR5IiksdFtlXT1ufSx0LnByb3RvdHlwZS5zZXRWYWx1
ZT1mdW5jdGlvbih0LGUpe3Qubm9kZVZhbHVlPWV9LHQucHJvdG90eXBlLmxpc3Rlbj1mdW5jdGlv
bih0LGUsbil7cmV0dXJuIHYoZSwibGlzdGVuZXIiKSwic3RyaW5nIj09dHlwZW9mIHQ/dGhpcy5l
dmVudE1hbmFnZXIuYWRkR2xvYmFsRXZlbnRMaXN0ZW5lcih0LGUsZyhuKSk6dGhpcy5ldmVudE1h
bmFnZXIuYWRkRXZlbnRMaXN0ZW5lcih0LGUsZyhuKSl9LHR9KCksdnQ9IkAiLmNoYXJDb2RlQXQo
MCksX3Q9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4scil7dmFyIG89dC5jYWxsKHRoaXMsZSl8
fHRoaXM7by5jb21wb25lbnQ9cjt2YXIgaT1tKHIuaWQsci5zdHlsZXMsW10pO3JldHVybiBuLmFk
ZFN0eWxlcyhpKSxvLmNvbnRlbnRBdHRyPWQoci5pZCksby5ob3N0QXR0cj15KHIuaWQpLG99cmV0
dXJuIEQoZSx0KSxlLnByb3RvdHlwZS5hcHBseVRvSG9zdD1mdW5jdGlvbihlKXt0LnByb3RvdHlw
ZS5zZXRBdHRyaWJ1dGUuY2FsbCh0aGlzLGUsdGhpcy5ob3N0QXR0ciwiIil9LGUucHJvdG90eXBl
LmNyZWF0ZUVsZW1lbnQ9ZnVuY3Rpb24oZSxuKXt2YXIgcj10LnByb3RvdHlwZS5jcmVhdGVFbGVt
ZW50LmNhbGwodGhpcyxlLG4pO3JldHVybiB0LnByb3RvdHlwZS5zZXRBdHRyaWJ1dGUuY2FsbCh0
aGlzLHIsdGhpcy5jb250ZW50QXR0ciwiIikscn0sZX0oZ3QpLGJ0PWZ1bmN0aW9uKHQpe2Z1bmN0
aW9uIGUoZSxuLHIsbyl7dmFyIGk9dC5jYWxsKHRoaXMsZSl8fHRoaXM7aS5zaGFyZWRTdHlsZXNI
b3N0PW4saS5ob3N0RWw9cixpLmNvbXBvbmVudD1vLGkuc2hhZG93Um9vdD1yLmNyZWF0ZVNoYWRv
d1Jvb3QoKSxpLnNoYXJlZFN0eWxlc0hvc3QuYWRkSG9zdChpLnNoYWRvd1Jvb3QpO2Zvcih2YXIg
cz1tKG8uaWQsby5zdHlsZXMsW10pLGE9MDthPHMubGVuZ3RoO2ErKyl7dmFyIHU9ZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgic3R5bGUiKTt1LnRleHRDb250ZW50PXNbYV0saS5zaGFkb3dSb290LmFw
cGVuZENoaWxkKHUpfXJldHVybiBpfXJldHVybiBEKGUsdCksZS5wcm90b3R5cGUubm9kZU9yU2hh
ZG93Um9vdD1mdW5jdGlvbih0KXtyZXR1cm4gdD09PXRoaXMuaG9zdEVsP3RoaXMuc2hhZG93Um9v
dDp0fSxlLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5zaGFyZWRTdHlsZXNIb3N0
LnJlbW92ZUhvc3QodGhpcy5zaGFkb3dSb290KX0sZS5wcm90b3R5cGUuYXBwZW5kQ2hpbGQ9ZnVu
Y3Rpb24oZSxuKXtyZXR1cm4gdC5wcm90b3R5cGUuYXBwZW5kQ2hpbGQuY2FsbCh0aGlzLHRoaXMu
bm9kZU9yU2hhZG93Um9vdChlKSxuKX0sZS5wcm90b3R5cGUuaW5zZXJ0QmVmb3JlPWZ1bmN0aW9u
KGUsbixyKXtyZXR1cm4gdC5wcm90b3R5cGUuaW5zZXJ0QmVmb3JlLmNhbGwodGhpcyx0aGlzLm5v
ZGVPclNoYWRvd1Jvb3QoZSksbixyKX0sZS5wcm90b3R5cGUucmVtb3ZlQ2hpbGQ9ZnVuY3Rpb24o
ZSxuKXtyZXR1cm4gdC5wcm90b3R5cGUucmVtb3ZlQ2hpbGQuY2FsbCh0aGlzLHRoaXMubm9kZU9y
U2hhZG93Um9vdChlKSxuKX0sZS5wcm90b3R5cGUucGFyZW50Tm9kZT1mdW5jdGlvbihlKXtyZXR1
cm4gdGhpcy5ub2RlT3JTaGFkb3dSb290KHQucHJvdG90eXBlLnBhcmVudE5vZGUuY2FsbCh0aGlz
LHRoaXMubm9kZU9yU2hhZG93Um9vdChlKSkpfSxlfShndCksd3Q9ZnVuY3Rpb24odCl7ZnVuY3Rp
b24gZShlKXtyZXR1cm4gdC5jYWxsKHRoaXMsZSl8fHRoaXN9cmV0dXJuIEQoZSx0KSxlLnByb3Rv
dHlwZS5zdXBwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4hMH0sZS5wcm90b3R5cGUuYWRkRXZlbnRM
aXN0ZW5lcj1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHQuYWRkRXZlbnRMaXN0ZW5lcihlLG4sITEp
LGZ1bmN0aW9uKCl7cmV0dXJuIHQucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLG4sITEpfX0sZX0odXQp
O3d0LmRlY29yYXRvcnM9W3t0eXBlOmouen1dLHd0LmN0b3JQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7
cmV0dXJuW3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpqLkUsYXJnczpbV119XX1dfTsv
KioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBN
SVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCit2YXIgQ3Q9e3BhbjohMCxwYW5z
dGFydDohMCxwYW5tb3ZlOiEwLHBhbmVuZDohMCxwYW5jYW5jZWw6ITAscGFubGVmdDohMCxwYW5y
aWdodDohMCxwYW51cDohMCxwYW5kb3duOiEwLHBpbmNoOiEwLHBpbmNoc3RhcnQ6ITAscGluY2ht
b3ZlOiEwLHBpbmNoZW5kOiEwLHBpbmNoY2FuY2VsOiEwLHBpbmNoaW46ITAscGluY2hvdXQ6ITAs
cHJlc3M6ITAscHJlc3N1cDohMCxyb3RhdGU6ITAscm90YXRlc3RhcnQ6ITAscm90YXRlbW92ZToh
MCxyb3RhdGVlbmQ6ITAscm90YXRlY2FuY2VsOiEwLHN3aXBlOiEwLHN3aXBlbGVmdDohMCxzd2lw
ZXJpZ2h0OiEwLHN3aXBldXA6ITAsc3dpcGVkb3duOiEwLHRhcDohMH0sRXQ9bmV3IGouRCgiSGFt
bWVyR2VzdHVyZUNvbmZpZyIpLE90PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3RoaXMuZXZlbnRz
PVtdLHRoaXMub3ZlcnJpZGVzPXt9fXJldHVybiB0LnByb3RvdHlwZS5idWlsZEhhbW1lcj1mdW5j
dGlvbih0KXt2YXIgZT1uZXcgSGFtbWVyKHQpO2UuZ2V0KCJwaW5jaCIpLnNldCh7ZW5hYmxlOiEw
fSksZS5nZXQoInJvdGF0ZSIpLnNldCh7ZW5hYmxlOiEwfSk7Zm9yKHZhciBuIGluIHRoaXMub3Zl
cnJpZGVzKWUuZ2V0KG4pLnNldCh0aGlzLm92ZXJyaWRlc1tuXSk7cmV0dXJuIGV9LHR9KCk7T3Qu
ZGVjb3JhdG9ycz1be3R5cGU6ai56fV0sT3QuY3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1
cm5bXX07dmFyIHh0PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuKXt2YXIgcj10LmNhbGwodGhp
cyxlKXx8dGhpcztyZXR1cm4gci5fY29uZmlnPW4scn1yZXR1cm4gRChlLHQpLGUucHJvdG90eXBl
LnN1cHBvcnRzPWZ1bmN0aW9uKHQpe2lmKCFDdC5oYXNPd25Qcm9wZXJ0eSh0LnRvTG93ZXJDYXNl
KCkpJiYhdGhpcy5pc0N1c3RvbUV2ZW50KHQpKXJldHVybiExO2lmKCF3aW5kb3cuSGFtbWVyKXRo
cm93IG5ldyBFcnJvcigiSGFtbWVyLmpzIGlzIG5vdCBsb2FkZWQsIGNhbiBub3QgYmluZCAiK3Qr
IiBldmVudCIpO3JldHVybiEwfSxlLnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyPWZ1bmN0aW9u
KHQsZSxuKXt2YXIgcj10aGlzLG89dGhpcy5tYW5hZ2VyLmdldFpvbmUoKTtyZXR1cm4gZT1lLnRv
TG93ZXJDYXNlKCksby5ydW5PdXRzaWRlQW5ndWxhcihmdW5jdGlvbigpe3ZhciBpPXIuX2NvbmZp
Zy5idWlsZEhhbW1lcih0KSxzPWZ1bmN0aW9uKHQpe28ucnVuR3VhcmRlZChmdW5jdGlvbigpe24o
dCl9KX07cmV0dXJuIGkub24oZSxzKSxmdW5jdGlvbigpe3JldHVybiBpLm9mZihlLHMpfX0pfSxl
LnByb3RvdHlwZS5pc0N1c3RvbUV2ZW50PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9jb25maWcu
ZXZlbnRzLmluZGV4T2YodCk+LTF9LGV9KHV0KTt4dC5kZWNvcmF0b3JzPVt7dHlwZTpqLnp9XSx4
dC5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9y
czpbe3R5cGU6ai5FLGFyZ3M6W1ddfV19LHt0eXBlOk90LGRlY29yYXRvcnM6W3t0eXBlOmouRSxh
cmdzOltFdF19XX1dfTsvKioKKyAqIEBsaWNlbnNlCisgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQorICovCit2YXIg
U3Q9WyJhbHQiLCJjb250cm9sIiwibWV0YSIsInNoaWZ0Il0sUHQ9e2FsdDpmdW5jdGlvbih0KXty
ZXR1cm4gdC5hbHRLZXl9LGNvbnRyb2w6ZnVuY3Rpb24odCl7cmV0dXJuIHQuY3RybEtleX0sbWV0
YTpmdW5jdGlvbih0KXtyZXR1cm4gdC5tZXRhS2V5fSxzaGlmdDpmdW5jdGlvbih0KXtyZXR1cm4g
dC5zaGlmdEtleX19LEF0PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7cmV0dXJuIHQuY2FsbCh0
aGlzLGUpfHx0aGlzfXJldHVybiBEKGUsdCksZS5wcm90b3R5cGUuc3VwcG9ydHM9ZnVuY3Rpb24o
dCl7cmV0dXJuIG51bGwhPWUucGFyc2VFdmVudE5hbWUodCl9LGUucHJvdG90eXBlLmFkZEV2ZW50
TGlzdGVuZXI9ZnVuY3Rpb24odCxuLG8pe3ZhciBpPWUucGFyc2VFdmVudE5hbWUobikscz1lLmV2
ZW50Q2FsbGJhY2soaS5mdWxsS2V5LG8sdGhpcy5tYW5hZ2VyLmdldFpvbmUoKSk7cmV0dXJuIHRo
aXMubWFuYWdlci5nZXRab25lKCkucnVuT3V0c2lkZUFuZ3VsYXIoZnVuY3Rpb24oKXtyZXR1cm4g
cigpLm9uQW5kQ2FuY2VsKHQsaS5kb21FdmVudE5hbWUscyl9KX0sZS5wYXJzZUV2ZW50TmFtZT1m
dW5jdGlvbih0KXt2YXIgbj10LnRvTG93ZXJDYXNlKCkuc3BsaXQoIi4iKSxyPW4uc2hpZnQoKTtp
ZigwPT09bi5sZW5ndGh8fCJrZXlkb3duIiE9PXImJiJrZXl1cCIhPT1yKXJldHVybiBudWxsO3Zh
ciBvPWUuX25vcm1hbGl6ZUtleShuLnBvcCgpKSxpPSIiO2lmKFN0LmZvckVhY2goZnVuY3Rpb24o
dCl7dmFyIGU9bi5pbmRleE9mKHQpO2U+LTEmJihuLnNwbGljZShlLDEpLGkrPXQrIi4iKX0pLGkr
PW8sMCE9bi5sZW5ndGh8fDA9PT1vLmxlbmd0aClyZXR1cm4gbnVsbDt2YXIgcz17fTtyZXR1cm4g
cy5kb21FdmVudE5hbWU9cixzLmZ1bGxLZXk9aSxzfSxlLmdldEV2ZW50RnVsbEtleT1mdW5jdGlv
bih0KXt2YXIgZT0iIixuPXIoKS5nZXRFdmVudEtleSh0KTtyZXR1cm4gbj1uLnRvTG93ZXJDYXNl
KCksIiAiPT09bj9uPSJzcGFjZSI6Ii4iPT09biYmKG49ImRvdCIpLFN0LmZvckVhY2goZnVuY3Rp
b24ocil7aWYociE9bil7KDAsUHRbcl0pKHQpJiYoZSs9cisiLiIpfX0pLGUrPW59LGUuZXZlbnRD
YWxsYmFjaz1mdW5jdGlvbih0LG4scil7cmV0dXJuIGZ1bmN0aW9uKG8pe2UuZ2V0RXZlbnRGdWxs
S2V5KG8pPT09dCYmci5ydW5HdWFyZGVkKGZ1bmN0aW9uKCl7cmV0dXJuIG4obyl9KX19LGUuX25v
cm1hbGl6ZUtleT1mdW5jdGlvbih0KXtzd2l0Y2godCl7Y2FzZSJlc2MiOnJldHVybiJlc2NhcGUi
O2RlZmF1bHQ6cmV0dXJuIHR9fSxlfSh1dCk7QXQuZGVjb3JhdG9ycz1be3R5cGU6ai56fV0sQXQu
Y3RvclBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6
W3t0eXBlOmouRSxhcmdzOltXXX1dfV19Oy8qKgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdodCBH
b29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisg
KiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNl
CisgKi8KK3ZhciBUdD0vXig/Oig/Omh0dHBzP3xtYWlsdG98ZnRwfHRlbHxmaWxlKTp8W14mOlwv
PyNdKig/OltcLz8jXXwkKSkvZ2ksa3Q9L15kYXRhOig/OmltYWdlXC8oPzpibXB8Z2lmfGpwZWd8
anBnfHBuZ3x0aWZmfHdlYnApfHZpZGVvXC8oPzptcGVnfG1wNHxvZ2d8d2VibSl8YXVkaW9cLyg/
Om1wM3xvZ2F8b2dnfG9wdXMpKTtiYXNlNjQsW2EtejAtOStcL10rPSokL2ksVnQ9bnVsbCxNdD1u
dWxsLE50PUMoImFyZWEsYnIsY29sLGhyLGltZyx3YnIiKSxqdD1DKCJjb2xncm91cCxkZCxkdCxs
aSxwLHRib2R5LHRkLHRmb290LHRoLHRoZWFkLHRyIiksUnQ9QygicnAscnQiKSxEdD1FKFJ0LGp0
KSxJdD1FKGp0LEMoImFkZHJlc3MsYXJ0aWNsZSxhc2lkZSxibG9ja3F1b3RlLGNhcHRpb24sY2Vu
dGVyLGRlbCxkZXRhaWxzLGRpYWxvZyxkaXIsZGl2LGRsLGZpZ3VyZSxmaWdjYXB0aW9uLGZvb3Rl
cixoMSxoMixoMyxoNCxoNSxoNixoZWFkZXIsaGdyb3VwLGhyLGlucyxtYWluLG1hcCxtZW51LG5h
dixvbCxwcmUsc2VjdGlvbixzdW1tYXJ5LHRhYmxlLHVsIikpLEZ0PUUoUnQsQygiYSxhYmJyLGFj
cm9ueW0sYXVkaW8sYixiZGksYmRvLGJpZyxicixjaXRlLGNvZGUsZGVsLGRmbixlbSxmb250LGks
aW1nLGlucyxrYmQsbGFiZWwsbWFwLG1hcmsscGljdHVyZSxxLHJ1YnkscnAscnQscyxzYW1wLHNt
YWxsLHNvdXJjZSxzcGFuLHN0cmlrZSxzdHJvbmcsc3ViLHN1cCx0aW1lLHRyYWNrLHR0LHUsdmFy
LHZpZGVvIikpLEh0PUUoTnQsSXQsRnQsRHQpLEx0PUMoImJhY2tncm91bmQsY2l0ZSxocmVmLGl0
ZW10eXBlLGxvbmdkZXNjLHBvc3RlcixzcmMseGxpbms6aHJlZiIpLFV0PUMoInNyY3NldCIpLEJ0
PUMoImFiYnIsYWNjZXNza2V5LGFsaWduLGFsdCxhdXRvcGxheSxheGlzLGJnY29sb3IsYm9yZGVy
LGNlbGxwYWRkaW5nLGNlbGxzcGFjaW5nLGNsYXNzLGNsZWFyLGNvbG9yLGNvbHMsY29sc3Bhbixj
b21wYWN0LGNvbnRyb2xzLGNvb3JkcyxkYXRldGltZSxkZWZhdWx0LGRpcixkb3dubG9hZCxmYWNl
LGhlYWRlcnMsaGVpZ2h0LGhpZGRlbixocmVmbGFuZyxoc3BhY2UsaXNtYXAsaXRlbXNjb3BlLGl0
ZW1wcm9wLGtpbmQsbGFiZWwsbGFuZyxsYW5ndWFnZSxsb29wLG1lZGlhLG11dGVkLG5vaHJlZixu
b3dyYXAsb3BlbixwcmVsb2FkLHJlbCxyZXYscm9sZSxyb3dzLHJvd3NwYW4scnVsZXMsc2NvcGUs
c2Nyb2xsaW5nLHNoYXBlLHNpemUsc2l6ZXMsc3BhbixzcmNsYW5nLHN0YXJ0LHN1bW1hcnksdGFi
aW5kZXgsdGFyZ2V0LHRpdGxlLHRyYW5zbGF0ZSx0eXBlLHVzZW1hcCx2YWxpZ24sdmFsdWUsdnNw
YWNlLHdpZHRoIiksR3Q9RShMdCxVdCxCdCksenQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhp
cy5zYW5pdGl6ZWRTb21ldGhpbmc9ITEsdGhpcy5idWY9W119cmV0dXJuIHQucHJvdG90eXBlLnNh
bml0aXplQ2hpbGRyZW49ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQuZmlyc3RDaGlsZDtlOylpZihN
dC5pc0VsZW1lbnROb2RlKGUpP3RoaXMuc3RhcnRFbGVtZW50KGUpOk10LmlzVGV4dE5vZGUoZSk/
dGhpcy5jaGFycyhNdC5ub2RlVmFsdWUoZSkpOnRoaXMuc2FuaXRpemVkU29tZXRoaW5nPSEwLE10
LmZpcnN0Q2hpbGQoZSkpZT1NdC5maXJzdENoaWxkKGUpO2Vsc2UgZm9yKDtlOyl7TXQuaXNFbGVt
ZW50Tm9kZShlKSYmdGhpcy5lbmRFbGVtZW50KGUpO3ZhciBuPU8oZSxNdC5uZXh0U2libGluZyhl
KSk7aWYobil7ZT1uO2JyZWFrfWU9TyhlLE10LnBhcmVudEVsZW1lbnQoZSkpfXJldHVybiB0aGlz
LmJ1Zi5qb2luKCIiKX0sdC5wcm90b3R5cGUuc3RhcnRFbGVtZW50PWZ1bmN0aW9uKHQpe3ZhciBl
PXRoaXMsbj1NdC5ub2RlTmFtZSh0KS50b0xvd2VyQ2FzZSgpO2lmKCFIdC5oYXNPd25Qcm9wZXJ0
eShuKSlyZXR1cm4gdm9pZCh0aGlzLnNhbml0aXplZFNvbWV0aGluZz0hMCk7dGhpcy5idWYucHVz
aCgiPCIpLHRoaXMuYnVmLnB1c2gobiksTXQuYXR0cmlidXRlTWFwKHQpLmZvckVhY2goZnVuY3Rp
b24odCxuKXt2YXIgcj1uLnRvTG93ZXJDYXNlKCk7aWYoIUd0Lmhhc093blByb3BlcnR5KHIpKXJl
dHVybiB2b2lkKGUuc2FuaXRpemVkU29tZXRoaW5nPSEwKTtMdFtyXSYmKHQ9Xyh0KSksVXRbcl0m
Jih0PWIodCkpLGUuYnVmLnB1c2goIiAiKSxlLmJ1Zi5wdXNoKG4pLGUuYnVmLnB1c2goJz0iJyks
ZS5idWYucHVzaCh4KHQpKSxlLmJ1Zi5wdXNoKCciJyl9KSx0aGlzLmJ1Zi5wdXNoKCI+Iil9LHQu
cHJvdG90eXBlLmVuZEVsZW1lbnQ9ZnVuY3Rpb24odCl7dmFyIGU9TXQubm9kZU5hbWUodCkudG9M
b3dlckNhc2UoKTtIdC5oYXNPd25Qcm9wZXJ0eShlKSYmIU50Lmhhc093blByb3BlcnR5KGUpJiYo
dGhpcy5idWYucHVzaCgiPC8iKSx0aGlzLmJ1Zi5wdXNoKGUpLHRoaXMuYnVmLnB1c2goIj4iKSl9
LHQucHJvdG90eXBlLmNoYXJzPWZ1bmN0aW9uKHQpe3RoaXMuYnVmLnB1c2goeCh0KSl9LHR9KCks
cXQ9L1tcdUQ4MDAtXHVEQkZGXVtcdURDMDAtXHVERkZGXS9nLFp0PS8oW15cIy1+IHwhXSkvZyxX
dD0iWy0sLlwiJyVfISMgYS16QS1aMC05XSsiLEt0PSIoPzptYXRyaXh8dHJhbnNsYXRlfHNjYWxl
fHJvdGF0ZXxza2V3fHBlcnNwZWN0aXZlKSg/Olh8WXwzZCk/IixYdD0iKD86cmdifGhzbClhPyIs
UXQ9Iig/OnJlcGVhdGluZy0pPyg/OmxpbmVhcnxyYWRpYWwpLWdyYWRpZW50IixKdD0iKD86Y2Fs
Y3xhdHRyKSIsJHQ9IlxcKFstMC05LiUsICNhLXpBLVpdK1xcKSIsWXQ9bmV3IFJlZ0V4cCgiXigi
K1d0KyJ8KD86IitLdCsifCIrWHQrInwiK1F0KyJ8IitKdCsiKSIrJHQrIikkIiwiZyIpLHRlPS9e
dXJsXCgoW14pXSspXCkkLyxlZT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJv
dG90eXBlLnNhbml0aXplPWZ1bmN0aW9uKHQsZSl7fSx0LnByb3RvdHlwZS5ieXBhc3NTZWN1cml0
eVRydXN0SHRtbD1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmJ5cGFzc1NlY3VyaXR5VHJ1c3RT
dHlsZT1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmJ5cGFzc1NlY3VyaXR5VHJ1c3RTY3JpcHQ9
ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5ieXBhc3NTZWN1cml0eVRydXN0VXJsPWZ1bmN0aW9u
KHQpe30sdC5wcm90b3R5cGUuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsPWZ1bmN0aW9u
KHQpe30sdH0oKSxuZT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUpe3ZhciBuPXQuY2FsbCh0aGlz
KXx8dGhpcztyZXR1cm4gbi5fZG9jPWUsbn1yZXR1cm4gRChlLHQpLGUucHJvdG90eXBlLnNhbml0
aXplPWZ1bmN0aW9uKHQsZSl7aWYobnVsbD09ZSlyZXR1cm4gbnVsbDtzd2l0Y2godCl7Y2FzZSBq
LkwuTk9ORTpyZXR1cm4gZTtjYXNlIGouTC5IVE1MOnJldHVybiBlIGluc3RhbmNlb2Ygb2U/ZS5j
aGFuZ2luZ1RoaXNCcmVha3NBcHBsaWNhdGlvblNlY3VyaXR5Oih0aGlzLmNoZWNrTm90U2FmZVZh
bHVlKGUsIkhUTUwiKSxQKHRoaXMuX2RvYyxTdHJpbmcoZSkpKTtjYXNlIGouTC5TVFlMRTpyZXR1
cm4gZSBpbnN0YW5jZW9mIGllP2UuY2hhbmdpbmdUaGlzQnJlYWtzQXBwbGljYXRpb25TZWN1cml0
eToodGhpcy5jaGVja05vdFNhZmVWYWx1ZShlLCJTdHlsZSIpLFQoZSkpO2Nhc2Ugai5MLlNDUklQ
VDppZihlIGluc3RhbmNlb2Ygc2UpcmV0dXJuIGUuY2hhbmdpbmdUaGlzQnJlYWtzQXBwbGljYXRp
b25TZWN1cml0eTt0aHJvdyB0aGlzLmNoZWNrTm90U2FmZVZhbHVlKGUsIlNjcmlwdCIpLG5ldyBF
cnJvcigidW5zYWZlIHZhbHVlIHVzZWQgaW4gYSBzY3JpcHQgY29udGV4dCIpO2Nhc2Ugai5MLlVS
TDpyZXR1cm4gZSBpbnN0YW5jZW9mIHVlfHxlIGluc3RhbmNlb2YgYWU/ZS5jaGFuZ2luZ1RoaXNC
cmVha3NBcHBsaWNhdGlvblNlY3VyaXR5Oih0aGlzLmNoZWNrTm90U2FmZVZhbHVlKGUsIlVSTCIp
LF8oU3RyaW5nKGUpKSk7Y2FzZSBqLkwuUkVTT1VSQ0VfVVJMOmlmKGUgaW5zdGFuY2VvZiB1ZSly
ZXR1cm4gZS5jaGFuZ2luZ1RoaXNCcmVha3NBcHBsaWNhdGlvblNlY3VyaXR5O3Rocm93IHRoaXMu
Y2hlY2tOb3RTYWZlVmFsdWUoZSwiUmVzb3VyY2VVUkwiKSxuZXcgRXJyb3IoInVuc2FmZSB2YWx1
ZSB1c2VkIGluIGEgcmVzb3VyY2UgVVJMIGNvbnRleHQgKHNlZSBodHRwOi8vZy5jby9uZy9zZWN1
cml0eSN4c3MpIik7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgU2VjdXJpdHlD
b250ZXh0ICIrdCsiIChzZWUgaHR0cDovL2cuY28vbmcvc2VjdXJpdHkjeHNzKSIpfX0sZS5wcm90
b3R5cGUuY2hlY2tOb3RTYWZlVmFsdWU9ZnVuY3Rpb24odCxlKXtpZih0IGluc3RhbmNlb2YgcmUp
dGhyb3cgbmV3IEVycm9yKCJSZXF1aXJlZCBhIHNhZmUgIitlKyIsIGdvdCBhICIrdC5nZXRUeXBl
TmFtZSgpKyIgKHNlZSBodHRwOi8vZy5jby9uZy9zZWN1cml0eSN4c3MpIil9LGUucHJvdG90eXBl
LmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgb2UodCl9LGUu
cHJvdG90eXBlLmJ5cGFzc1NlY3VyaXR5VHJ1c3RTdHlsZT1mdW5jdGlvbih0KXtyZXR1cm4gbmV3
IGllKHQpfSxlLnByb3RvdHlwZS5ieXBhc3NTZWN1cml0eVRydXN0U2NyaXB0PWZ1bmN0aW9uKHQp
e3JldHVybiBuZXcgc2UodCl9LGUucHJvdG90eXBlLmJ5cGFzc1NlY3VyaXR5VHJ1c3RVcmw9ZnVu
Y3Rpb24odCl7cmV0dXJuIG5ldyBhZSh0KX0sZS5wcm90b3R5cGUuYnlwYXNzU2VjdXJpdHlUcnVz
dFJlc291cmNlVXJsPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgdWUodCl9LGV9KGVlKTtuZS5kZWNv
cmF0b3JzPVt7dHlwZTpqLnp9XSxuZS5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7
dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6ai5FLGFyZ3M6W1ddfV19XX07dmFyIHJlPWZ1
bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLmNoYW5naW5nVGhpc0JyZWFrc0FwcGxpY2F0aW9u
U2VjdXJpdHk9dH1yZXR1cm4gdC5wcm90b3R5cGUuZ2V0VHlwZU5hbWU9ZnVuY3Rpb24oKXt9LHQu
cHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIlNhZmVWYWx1ZSBtdXN0IHVzZSBb
cHJvcGVydHldPWJpbmRpbmc6ICIrdGhpcy5jaGFuZ2luZ1RoaXNCcmVha3NBcHBsaWNhdGlvblNl
Y3VyaXR5KyIgKHNlZSBodHRwOi8vZy5jby9uZy9zZWN1cml0eSN4c3MpIn0sdH0oKSxvZT1mdW5j
dGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIG51bGwhPT10JiZ0LmFwcGx5KHRoaXMsYXJndW1l
bnRzKXx8dGhpc31yZXR1cm4gRChlLHQpLGUucHJvdG90eXBlLmdldFR5cGVOYW1lPWZ1bmN0aW9u
KCl7cmV0dXJuIkhUTUwifSxlfShyZSksaWU9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3JldHVy
biBudWxsIT09dCYmdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9cmV0dXJuIEQoZSx0KSxl
LnByb3RvdHlwZS5nZXRUeXBlTmFtZT1mdW5jdGlvbigpe3JldHVybiJTdHlsZSJ9LGV9KHJlKSxz
ZT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIG51bGwhPT10JiZ0LmFwcGx5KHRoaXMs
YXJndW1lbnRzKXx8dGhpc31yZXR1cm4gRChlLHQpLGUucHJvdG90eXBlLmdldFR5cGVOYW1lPWZ1
bmN0aW9uKCl7cmV0dXJuIlNjcmlwdCJ9LGV9KHJlKSxhZT1mdW5jdGlvbih0KXtmdW5jdGlvbiBl
KCl7cmV0dXJuIG51bGwhPT10JiZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31yZXR1cm4g
RChlLHQpLGUucHJvdG90eXBlLmdldFR5cGVOYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIlVSTCJ9LGV9
KHJlKSx1ZT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIG51bGwhPT10JiZ0LmFwcGx5
KHRoaXMsYXJndW1lbnRzKXx8dGhpc31yZXR1cm4gRChlLHQpLGUucHJvdG90eXBlLmdldFR5cGVO
YW1lPWZ1bmN0aW9uKCl7cmV0dXJuIlJlc291cmNlVVJMIn0sZX0ocmUpLGNlPVt7cHJvdmlkZTpq
Lk0sdXNlVmFsdWU6Ti5lfSx7cHJvdmlkZTpqLk4sdXNlVmFsdWU6ayxtdWx0aTohMH0se3Byb3Zp
ZGU6Ti5kLHVzZUNsYXNzOkt9LHtwcm92aWRlOlcsdXNlRmFjdG9yeTpNLGRlcHM6W119XSxsZT1b
e3Byb3ZpZGU6ai52LHVzZUV4aXN0aW5nOmVlfSx7cHJvdmlkZTplZSx1c2VDbGFzczpuZX1dLHBl
PW4uaShqLk8pKGouUCwiYnJvd3NlciIsY2UpLGZlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXtp
Zih0KXRocm93IG5ldyBFcnJvcigiQnJvd3Nlck1vZHVsZSBoYXMgYWxyZWFkeSBiZWVuIGxvYWRl
ZC4gSWYgeW91IG5lZWQgYWNjZXNzIHRvIGNvbW1vbiBkaXJlY3RpdmVzIHN1Y2ggYXMgTmdJZiBh
bmQgTmdGb3IgZnJvbSBhIGxhenkgbG9hZGVkIG1vZHVsZSwgaW1wb3J0IENvbW1vbk1vZHVsZSBp
bnN0ZWFkLiIpfXJldHVybiB0LndpdGhTZXJ2ZXJUcmFuc2l0aW9uPWZ1bmN0aW9uKGUpe3JldHVy
bntuZ01vZHVsZTp0LHByb3ZpZGVyczpbe3Byb3ZpZGU6ai5zLHVzZVZhbHVlOmUuYXBwSWR9LHtw
cm92aWRlOlEsdXNlRXhpc3Rpbmc6ai5zfSxKXX19LHR9KCk7ZmUuZGVjb3JhdG9ycz1be3R5cGU6
ai5BLGFyZ3M6W3twcm92aWRlcnM6W2xlLHtwcm92aWRlOmoucCx1c2VGYWN0b3J5OlYsZGVwczpb
XX0se3Byb3ZpZGU6c3QsdXNlQ2xhc3M6d3QsbXVsdGk6ITB9LHtwcm92aWRlOnN0LHVzZUNsYXNz
OkF0LG11bHRpOiEwfSx7cHJvdmlkZTpzdCx1c2VDbGFzczp4dCxtdWx0aTohMH0se3Byb3ZpZGU6
RXQsdXNlQ2xhc3M6T3R9LG10LHtwcm92aWRlOmoudyx1c2VFeGlzdGluZzptdH0se3Byb3ZpZGU6
Y3QsdXNlRXhpc3Rpbmc6bHR9LGx0LGouaSxhdCxpdCxYLFldLGV4cG9ydHM6W04uYixqLm9dfV19
XSxmZS5jdG9yUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVyblt7dHlwZTpmZSxkZWNvcmF0b3Jz
Olt7dHlwZTpqLkh9LHt0eXBlOmouUX1dfV19Oy8qKgorICogQGxpY2Vuc2UKKyAqIENvcHlyaWdo
dCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
CisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNl
bnNlCisgKi8KK3ZhciBoZT0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmd2luZG93fHx7fSxk
ZT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0aGlzLm1zUGVyVGljaz10LHRoaXMubnVtVGlj
a3M9ZX1yZXR1cm4gdH0oKTsoZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuYXBwUmVmPXQu
aW5qZWN0b3IuZ2V0KGoucil9dC5wcm90b3R5cGUudGltZUNoYW5nZURldGVjdGlvbj1mdW5jdGlv
bih0KXt2YXIgZT10JiZ0LnJlY29yZCxuPSJDaGFuZ2UgRGV0ZWN0aW9uIixvPW51bGwhPWhlLmNv
bnNvbGUucHJvZmlsZTtlJiZvJiZoZS5jb25zb2xlLnByb2ZpbGUobik7Zm9yKHZhciBpPXIoKS5w
ZXJmb3JtYW5jZU5vdygpLHM9MDtzPDV8fHIoKS5wZXJmb3JtYW5jZU5vdygpLWk8NTAwOyl0aGlz
LmFwcFJlZi50aWNrKCkscysrO3ZhciBhPXIoKS5wZXJmb3JtYW5jZU5vdygpO2UmJm8mJmhlLmNv
bnNvbGUucHJvZmlsZUVuZChuKTt2YXIgdT0oYS1pKS9zO3JldHVybiBoZS5jb25zb2xlLmxvZygi
cmFuICIrcysiIGNoYW5nZSBkZXRlY3Rpb24gY3ljbGVzIiksaGUuY29uc29sZS5sb2codS50b0Zp
eGVkKDIpKyIgbXMgcGVyIGNoZWNrIiksbmV3IGRlKHUscyl9fSkoKSxmdW5jdGlvbigpe2Z1bmN0
aW9uIHQoKXt9dC5hbGw9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuITB9fSx0
LmNzcz1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPWUubmF0aXZl
RWxlbWVudCYmcigpLmVsZW1lbnRNYXRjaGVzKGUubmF0aXZlRWxlbWVudCx0KX19LHQuZGlyZWN0
aXZlPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4tMSE9PWUucHJvdmlkZXJU
b2tlbnMuaW5kZXhPZih0KX19fSgpLG5ldyBqLkIoIjQuMC4yIil9LFFxUks6ZnVuY3Rpb24odCxl
LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24odCxl
KXtmdW5jdGlvbiBuKCl7dGhpcy5jb25zdHJ1Y3Rvcj10fWZvcih2YXIgciBpbiBlKWUuaGFzT3du
UHJvcGVydHkocikmJih0W3JdPWVbcl0pO3QucHJvdG90eXBlPW51bGw9PT1lP09iamVjdC5jcmVh
dGUoZSk6KG4ucHJvdG90eXBlPWUucHJvdG90eXBlLG5ldyBuKX0sbz1uKCJtbVZTIiksaT1mdW5j
dGlvbih0KXtmdW5jdGlvbiBlKGUsbixyKXt0LmNhbGwodGhpcyksdGhpcy5wYXJlbnQ9ZSx0aGlz
Lm91dGVyVmFsdWU9bix0aGlzLm91dGVySW5kZXg9cix0aGlzLmluZGV4PTB9cmV0dXJuIHIoZSx0
KSxlLnByb3RvdHlwZS5fbmV4dD1mdW5jdGlvbih0KXt0aGlzLnBhcmVudC5ub3RpZnlOZXh0KHRo
aXMub3V0ZXJWYWx1ZSx0LHRoaXMub3V0ZXJJbmRleCx0aGlzLmluZGV4KyssdGhpcyl9LGUucHJv
dG90eXBlLl9lcnJvcj1mdW5jdGlvbih0KXt0aGlzLnBhcmVudC5ub3RpZnlFcnJvcih0LHRoaXMp
LHRoaXMudW5zdWJzY3JpYmUoKX0sZS5wcm90b3R5cGUuX2NvbXBsZXRlPWZ1bmN0aW9uKCl7dGhp
cy5wYXJlbnQubm90aWZ5Q29tcGxldGUodGhpcyksdGhpcy51bnN1YnNjcmliZSgpfSxlfShvLlN1
YnNjcmliZXIpO2UuSW5uZXJTdWJzY3JpYmVyPWl9LFJSVnY6ZnVuY3Rpb24odCxlLG4peyJ1c2Ug
c3RyaWN0Ijt2YXIgcj10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24odCxlKXtmdW5jdGlv
biBuKCl7dGhpcy5jb25zdHJ1Y3Rvcj10fWZvcih2YXIgciBpbiBlKWUuaGFzT3duUHJvcGVydHko
cikmJih0W3JdPWVbcl0pO3QucHJvdG90eXBlPW51bGw9PT1lP09iamVjdC5jcmVhdGUoZSk6KG4u
cHJvdG90eXBlPWUucHJvdG90eXBlLG5ldyBuKX0sbz1uKCJyQ1RmIiksaT1mdW5jdGlvbih0KXtm
dW5jdGlvbiBlKGUsbil7dC5jYWxsKHRoaXMpLHRoaXMudmFsdWU9ZSx0aGlzLnNjaGVkdWxlcj1u
LHRoaXMuX2lzU2NhbGFyPSEwLG4mJih0aGlzLl9pc1NjYWxhcj0hMSl9cmV0dXJuIHIoZSx0KSxl
LmNyZWF0ZT1mdW5jdGlvbih0LG4pe3JldHVybiBuZXcgZSh0LG4pfSxlLmRpc3BhdGNoPWZ1bmN0
aW9uKHQpe3ZhciBlPXQuZG9uZSxuPXQudmFsdWUscj10LnN1YnNjcmliZXI7aWYoZSlyZXR1cm4g
dm9pZCByLmNvbXBsZXRlKCk7ci5uZXh0KG4pLHIuY2xvc2VkfHwodC5kb25lPSEwLHRoaXMuc2No
ZWR1bGUodCkpfSxlLnByb3RvdHlwZS5fc3Vic2NyaWJlPWZ1bmN0aW9uKHQpe3ZhciBuPXRoaXMu
dmFsdWUscj10aGlzLnNjaGVkdWxlcjtpZihyKXJldHVybiByLnNjaGVkdWxlKGUuZGlzcGF0Y2gs
MCx7ZG9uZTohMSx2YWx1ZTpuLHN1YnNjcmliZXI6dH0pO3QubmV4dChuKSx0LmNsb3NlZHx8dC5j
b21wbGV0ZSgpfSxlfShvLk9ic2VydmFibGUpO2UuU2NhbGFyT2JzZXJ2YWJsZT1pfSxTS0g2OmZ1
bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcih0KXtyZXR1cm4iZnVuY3Rpb24i
PT10eXBlb2YgdH1lLmlzRnVuY3Rpb249cn0sVk9mWjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJp
Y3QiOyhmdW5jdGlvbih0KXtpZihlLnJvb3Q9Im9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJndpbmRv
dy53aW5kb3c9PT13aW5kb3cmJndpbmRvd3x8Im9iamVjdCI9PXR5cGVvZiBzZWxmJiZzZWxmLnNl
bGY9PT1zZWxmJiZzZWxmfHwib2JqZWN0Ij09dHlwZW9mIHQmJnQuZ2xvYmFsPT09dCYmdCwhZS5y
b290KXRocm93IG5ldyBFcnJvcigiUnhKUyBjb3VsZCBub3QgZmluZCBhbnkgZ2xvYmFsIGNvbnRl
eHQgKHdpbmRvdywgc2VsZiwgZ2xvYmFsKSIpfSkuY2FsbChlLG4oIkR1UjIiKSl9LFdoVmM6ZnVu
Y3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtlLmVycm9yT2JqZWN0PXtlOnt9fX0sWGFqbzpmdW5j
dGlvbih0LGUsbil7InVzZSBzdHJpY3QiO2UuaXNBcnJheT1BcnJheS5pc0FycmF5fHxmdW5jdGlv
bih0KXtyZXR1cm4gdCYmIm51bWJlciI9PXR5cGVvZiB0Lmxlbmd0aH19LFloOFE6ZnVuY3Rpb24o
dCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24o
dCxlKXtmdW5jdGlvbiBuKCl7dGhpcy5jb25zdHJ1Y3Rvcj10fWZvcih2YXIgciBpbiBlKWUuaGFz
T3duUHJvcGVydHkocikmJih0W3JdPWVbcl0pO3QucHJvdG90eXBlPW51bGw9PT1lP09iamVjdC5j
cmVhdGUoZSk6KG4ucHJvdG90eXBlPWUucHJvdG90eXBlLG5ldyBuKX0sbz1uKCJyQ1RmIiksaT1u
KCJSUlZ2Iikscz1uKCJqQkVGIiksYT1uKCJmV2JQIiksdT1mdW5jdGlvbih0KXtmdW5jdGlvbiBl
KGUsbil7dC5jYWxsKHRoaXMpLHRoaXMuYXJyYXk9ZSx0aGlzLnNjaGVkdWxlcj1uLG58fDEhPT1l
Lmxlbmd0aHx8KHRoaXMuX2lzU2NhbGFyPSEwLHRoaXMudmFsdWU9ZVswXSl9cmV0dXJuIHIoZSx0
KSxlLmNyZWF0ZT1mdW5jdGlvbih0LG4pe3JldHVybiBuZXcgZSh0LG4pfSxlLm9mPWZ1bmN0aW9u
KCl7Zm9yKHZhciB0PVtdLG49MDtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXRbbi0wXT1hcmd1bWVu
dHNbbl07dmFyIHI9dFt0Lmxlbmd0aC0xXTthLmlzU2NoZWR1bGVyKHIpP3QucG9wKCk6cj1udWxs
O3ZhciBvPXQubGVuZ3RoO3JldHVybiBvPjE/bmV3IGUodCxyKToxPT09bz9uZXcgaS5TY2FsYXJP
YnNlcnZhYmxlKHRbMF0scik6bmV3IHMuRW1wdHlPYnNlcnZhYmxlKHIpfSxlLmRpc3BhdGNoPWZ1
bmN0aW9uKHQpe3ZhciBlPXQuYXJyYXksbj10LmluZGV4LHI9dC5jb3VudCxvPXQuc3Vic2NyaWJl
cjtpZihuPj1yKXJldHVybiB2b2lkIG8uY29tcGxldGUoKTtvLm5leHQoZVtuXSksby5jbG9zZWR8
fCh0LmluZGV4PW4rMSx0aGlzLnNjaGVkdWxlKHQpKX0sZS5wcm90b3R5cGUuX3N1YnNjcmliZT1m
dW5jdGlvbih0KXt2YXIgbj10aGlzLmFycmF5LHI9bi5sZW5ndGgsbz10aGlzLnNjaGVkdWxlcjtp
ZihvKXJldHVybiBvLnNjaGVkdWxlKGUuZGlzcGF0Y2gsMCx7YXJyYXk6bixpbmRleDowLGNvdW50
OnIsc3Vic2NyaWJlcjp0fSk7Zm9yKHZhciBpPTA7aTxyJiYhdC5jbG9zZWQ7aSsrKXQubmV4dChu
W2ldKTt0LmNvbXBsZXRlKCl9LGV9KG8uT2JzZXJ2YWJsZSk7ZS5BcnJheU9ic2VydmFibGU9dX0s
WkpmODpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPXRoaXMmJnRoaXMuX19leHRl
bmRzfHxmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4oKXt0aGlzLmNvbnN0cnVjdG9yPXR9Zm9yKHZh
ciByIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShyKSYmKHRbcl09ZVtyXSk7dC5wcm90b3R5cGU9bnVs
bD09PWU/T2JqZWN0LmNyZWF0ZShlKToobi5wcm90b3R5cGU9ZS5wcm90b3R5cGUsbmV3IG4pfSxv
PW4oIkIwMFUiKSxpPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuKXt0LmNhbGwodGhpcyksdGhp
cy5zdWJqZWN0PWUsdGhpcy5zdWJzY3JpYmVyPW4sdGhpcy5jbG9zZWQ9ITF9cmV0dXJuIHIoZSx0
KSxlLnByb3RvdHlwZS51bnN1YnNjcmliZT1mdW5jdGlvbigpe2lmKCF0aGlzLmNsb3NlZCl7dGhp
cy5jbG9zZWQ9ITA7dmFyIHQ9dGhpcy5zdWJqZWN0LGU9dC5vYnNlcnZlcnM7aWYodGhpcy5zdWJq
ZWN0PW51bGwsZSYmMCE9PWUubGVuZ3RoJiYhdC5pc1N0b3BwZWQmJiF0LmNsb3NlZCl7dmFyIG49
ZS5pbmRleE9mKHRoaXMuc3Vic2NyaWJlcik7LTEhPT1uJiZlLnNwbGljZShuLDEpfX19LGV9KG8u
U3Vic2NyaXB0aW9uKTtlLlN1YmplY3RTdWJzY3JpcHRpb249aX0sYVFsNzpmdW5jdGlvbih0LGUs
bil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIodCl7cmV0dXJuIHQmJiJmdW5jdGlvbiIhPXR5cGVv
ZiB0LnN1YnNjcmliZSYmImZ1bmN0aW9uIj09dHlwZW9mIHQudGhlbn1lLmlzUHJvbWlzZT1yfSxj
YnVYOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcih0KXtyZXR1cm4gdm9p
ZCAwPT09dCYmKHQ9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKSx0aGlzLmxpZnQobmV3IGEodCkp
fXZhciBvPXRoaXMmJnRoaXMuX19leHRlbmRzfHxmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4oKXt0
aGlzLmNvbnN0cnVjdG9yPXR9Zm9yKHZhciByIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShyKSYmKHRb
cl09ZVtyXSk7dC5wcm90b3R5cGU9bnVsbD09PWU/T2JqZWN0LmNyZWF0ZShlKToobi5wcm90b3R5
cGU9ZS5wcm90b3R5cGUsbmV3IG4pfSxpPW4oIndBa0QiKSxzPW4oIkNVUnAiKTtlLm1lcmdlQWxs
PXI7dmFyIGE9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuY29uY3VycmVudD10fXJldHVy
biB0LnByb3RvdHlwZS5jYWxsPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuc3Vic2NyaWJlKG5ldyB1
KHQsdGhpcy5jb25jdXJyZW50KSl9LHR9KCk7ZS5NZXJnZUFsbE9wZXJhdG9yPWE7dmFyIHU9ZnVu
Y3Rpb24odCl7ZnVuY3Rpb24gZShlLG4pe3QuY2FsbCh0aGlzLGUpLHRoaXMuY29uY3VycmVudD1u
LHRoaXMuaGFzQ29tcGxldGVkPSExLHRoaXMuYnVmZmVyPVtdLHRoaXMuYWN0aXZlPTB9cmV0dXJu
IG8oZSx0KSxlLnByb3RvdHlwZS5fbmV4dD1mdW5jdGlvbih0KXt0aGlzLmFjdGl2ZTx0aGlzLmNv
bmN1cnJlbnQ/KHRoaXMuYWN0aXZlKyssdGhpcy5hZGQocy5zdWJzY3JpYmVUb1Jlc3VsdCh0aGlz
LHQpKSk6dGhpcy5idWZmZXIucHVzaCh0KX0sZS5wcm90b3R5cGUuX2NvbXBsZXRlPWZ1bmN0aW9u
KCl7dGhpcy5oYXNDb21wbGV0ZWQ9ITAsMD09PXRoaXMuYWN0aXZlJiYwPT09dGhpcy5idWZmZXIu
bGVuZ3RoJiZ0aGlzLmRlc3RpbmF0aW9uLmNvbXBsZXRlKCl9LGUucHJvdG90eXBlLm5vdGlmeUNv
bXBsZXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuYnVmZmVyO3RoaXMucmVtb3ZlKHQpLHRoaXMu
YWN0aXZlLS0sZS5sZW5ndGg+MD90aGlzLl9uZXh0KGUuc2hpZnQoKSk6MD09PXRoaXMuYWN0aXZl
JiZ0aGlzLmhhc0NvbXBsZXRlZCYmdGhpcy5kZXN0aW5hdGlvbi5jb21wbGV0ZSgpfSxlfShpLk91
dGVyU3Vic2NyaWJlcik7ZS5NZXJnZUFsbFN1YnNjcmliZXI9dX0sY2RtTjpmdW5jdGlvbih0LGUs
bil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIodCl7dmFyIGU9dC5TeW1ib2w7aWYoImZ1bmN0aW9u
Ij09dHlwZW9mIGUpcmV0dXJuIGUuaXRlcmF0b3J8fChlLml0ZXJhdG9yPWUoIml0ZXJhdG9yIHBv
bHlmaWxsIikpLGUuaXRlcmF0b3I7dmFyIG49dC5TZXQ7aWYobiYmImZ1bmN0aW9uIj09dHlwZW9m
KG5ldyBuKVsiQEBpdGVyYXRvciJdKXJldHVybiJAQGl0ZXJhdG9yIjt2YXIgcj10Lk1hcDtpZihy
KWZvcih2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhyLnByb3RvdHlwZSksaT0wO2k8
by5sZW5ndGg7KytpKXt2YXIgcz1vW2ldO2lmKCJlbnRyaWVzIiE9PXMmJiJzaXplIiE9PXMmJnIu
cHJvdG90eXBlW3NdPT09ci5wcm90b3R5cGUuZW50cmllcylyZXR1cm4gc31yZXR1cm4iQEBpdGVy
YXRvciJ9dmFyIG89bigiVk9mWiIpO2Uuc3ltYm9sSXRlcmF0b3JQb255ZmlsbD1yLGUuaXRlcmF0
b3I9cihvLnJvb3QpLGUuJCRpdGVyYXRvcj1lLml0ZXJhdG9yfSxlbU93OmZ1bmN0aW9uKHQsZSxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcih0LGUpe3ZhciBuO2lmKG49ImZ1bmN0aW9uIj09dHlw
ZW9mIHQ/dDpmdW5jdGlvbigpe3JldHVybiB0fSwiZnVuY3Rpb24iPT10eXBlb2YgZSlyZXR1cm4g
dGhpcy5saWZ0KG5ldyBpKG4sZSkpO3ZhciByPU9iamVjdC5jcmVhdGUodGhpcyxvLmNvbm5lY3Rh
YmxlT2JzZXJ2YWJsZURlc2NyaXB0b3IpO3JldHVybiByLnNvdXJjZT10aGlzLHIuc3ViamVjdEZh
Y3Rvcnk9bixyfXZhciBvPW4oInNJWU8iKTtlLm11bHRpY2FzdD1yO3ZhciBpPWZ1bmN0aW9uKCl7
ZnVuY3Rpb24gdCh0LGUpe3RoaXMuc3ViamVjdEZhY3Rvcnk9dCx0aGlzLnNlbGVjdG9yPWV9cmV0
dXJuIHQucHJvdG90eXBlLmNhbGw9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLnNlbGVjdG9yLHI9
dGhpcy5zdWJqZWN0RmFjdG9yeSgpLG89bihyKS5zdWJzY3JpYmUodCk7cmV0dXJuIG8uYWRkKGUu
c3Vic2NyaWJlKHIpKSxvfSx0fSgpO2UuTXVsdGljYXN0T3BlcmF0b3I9aX0sZldiUDpmdW5jdGlv
bih0LGUsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIodCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9
PXR5cGVvZiB0LnNjaGVkdWxlfWUuaXNTY2hlZHVsZXI9cn0saFlCWTpmdW5jdGlvbih0LGUsbil7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIodCl7dmFyIGU9dC52YWx1ZSxuPXQuc3Vic2NyaWJlcjtu
LmNsb3NlZHx8KG4ubmV4dChlKSxuLmNvbXBsZXRlKCkpfWZ1bmN0aW9uIG8odCl7dmFyIGU9dC5l
cnIsbj10LnN1YnNjcmliZXI7bi5jbG9zZWR8fG4uZXJyb3IoZSl9dmFyIGk9dGhpcyYmdGhpcy5f
X2V4dGVuZHN8fGZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbigpe3RoaXMuY29uc3RydWN0b3I9dH1m
b3IodmFyIHIgaW4gZSllLmhhc093blByb3BlcnR5KHIpJiYodFtyXT1lW3JdKTt0LnByb3RvdHlw
ZT1udWxsPT09ZT9PYmplY3QuY3JlYXRlKGUpOihuLnByb3RvdHlwZT1lLnByb3RvdHlwZSxuZXcg
bil9LHM9bigiVk9mWiIpLGE9bigickNUZiIpLHU9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4p
e3QuY2FsbCh0aGlzKSx0aGlzLnByb21pc2U9ZSx0aGlzLnNjaGVkdWxlcj1ufXJldHVybiBpKGUs
dCksZS5jcmVhdGU9ZnVuY3Rpb24odCxuKXtyZXR1cm4gbmV3IGUodCxuKX0sZS5wcm90b3R5cGUu
X3N1YnNjcmliZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLG49dGhpcy5wcm9taXNlLGk9dGhpcy5z
Y2hlZHVsZXI7aWYobnVsbD09aSl0aGlzLl9pc1NjYWxhcj90LmNsb3NlZHx8KHQubmV4dCh0aGlz
LnZhbHVlKSx0LmNvbXBsZXRlKCkpOm4udGhlbihmdW5jdGlvbihuKXtlLnZhbHVlPW4sZS5faXNT
Y2FsYXI9ITAsdC5jbG9zZWR8fCh0Lm5leHQobiksdC5jb21wbGV0ZSgpKX0sZnVuY3Rpb24oZSl7
dC5jbG9zZWR8fHQuZXJyb3IoZSl9KS50aGVuKG51bGwsZnVuY3Rpb24odCl7cy5yb290LnNldFRp
bWVvdXQoZnVuY3Rpb24oKXt0aHJvdyB0fSl9KTtlbHNlIGlmKHRoaXMuX2lzU2NhbGFyKXtpZigh
dC5jbG9zZWQpcmV0dXJuIGkuc2NoZWR1bGUociwwLHt2YWx1ZTp0aGlzLnZhbHVlLHN1YnNjcmli
ZXI6dH0pfWVsc2Ugbi50aGVuKGZ1bmN0aW9uKG4pe2UudmFsdWU9bixlLl9pc1NjYWxhcj0hMCx0
LmNsb3NlZHx8dC5hZGQoaS5zY2hlZHVsZShyLDAse3ZhbHVlOm4sc3Vic2NyaWJlcjp0fSkpfSxm
dW5jdGlvbihlKXt0LmNsb3NlZHx8dC5hZGQoaS5zY2hlZHVsZShvLDAse2VycjplLHN1YnNjcmli
ZXI6dH0pKX0pLnRoZW4obnVsbCxmdW5jdGlvbih0KXtzLnJvb3Quc2V0VGltZW91dChmdW5jdGlv
bigpe3Rocm93IHR9KX0pfSxlfShhLk9ic2VydmFibGUpO2UuUHJvbWlzZU9ic2VydmFibGU9dX0s
ImlvSysiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiaFlCWSIpO2UuZnJv
bVByb21pc2U9ci5Qcm9taXNlT2JzZXJ2YWJsZS5jcmVhdGV9LGpCRUY6ZnVuY3Rpb24odCxlLG4p
eyJ1c2Ugc3RyaWN0Ijt2YXIgcj10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24odCxlKXtm
dW5jdGlvbiBuKCl7dGhpcy5jb25zdHJ1Y3Rvcj10fWZvcih2YXIgciBpbiBlKWUuaGFzT3duUHJv
cGVydHkocikmJih0W3JdPWVbcl0pO3QucHJvdG90eXBlPW51bGw9PT1lP09iamVjdC5jcmVhdGUo
ZSk6KG4ucHJvdG90eXBlPWUucHJvdG90eXBlLG5ldyBuKX0sbz1uKCJyQ1RmIiksaT1mdW5jdGlv
bih0KXtmdW5jdGlvbiBlKGUpe3QuY2FsbCh0aGlzKSx0aGlzLnNjaGVkdWxlcj1lfXJldHVybiBy
KGUsdCksZS5jcmVhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBlKHQpfSxlLmRpc3BhdGNoPWZ1
bmN0aW9uKHQpe3Quc3Vic2NyaWJlci5jb21wbGV0ZSgpfSxlLnByb3RvdHlwZS5fc3Vic2NyaWJl
PWZ1bmN0aW9uKHQpe3ZhciBuPXRoaXMuc2NoZWR1bGVyO2lmKG4pcmV0dXJuIG4uc2NoZWR1bGUo
ZS5kaXNwYXRjaCwwLHtzdWJzY3JpYmVyOnR9KTt0LmNvbXBsZXRlKCl9LGV9KG8uT2JzZXJ2YWJs
ZSk7ZS5FbXB0eU9ic2VydmFibGU9aX0sa2tiMDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIHIoKXtmb3IodmFyIHQ9W10sZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspdFtl
LTBdPWFyZ3VtZW50c1tlXTtyZXR1cm4gdGhpcy5saWZ0LmNhbGwoby5hcHBseSh2b2lkIDAsW3Ro
aXNdLmNvbmNhdCh0KSkpfWZ1bmN0aW9uIG8oKXtmb3IodmFyIHQ9W10sZT0wO2U8YXJndW1lbnRz
Lmxlbmd0aDtlKyspdFtlLTBdPWFyZ3VtZW50c1tlXTt2YXIgbj1OdW1iZXIuUE9TSVRJVkVfSU5G
SU5JVFkscj1udWxsLG89dFt0Lmxlbmd0aC0xXTtyZXR1cm4gdS5pc1NjaGVkdWxlcihvKT8ocj10
LnBvcCgpLHQubGVuZ3RoPjEmJiJudW1iZXIiPT10eXBlb2YgdFt0Lmxlbmd0aC0xXSYmKG49dC5w
b3AoKSkpOiJudW1iZXIiPT10eXBlb2YgbyYmKG49dC5wb3AoKSksbnVsbD09PXImJjE9PT10Lmxl
bmd0aCYmdFswXWluc3RhbmNlb2YgaS5PYnNlcnZhYmxlP3RbMF06bmV3IHMuQXJyYXlPYnNlcnZh
YmxlKHQscikubGlmdChuZXcgYS5NZXJnZUFsbE9wZXJhdG9yKG4pKX12YXIgaT1uKCJyQ1RmIiks
cz1uKCJZaDhRIiksYT1uKCJjYnVYIiksdT1uKCJmV2JQIik7ZS5tZXJnZT1yLGUubWVyZ2VTdGF0
aWM9b30sbEhzQjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIodCxlLG4p
e2lmKHQpe2lmKHQgaW5zdGFuY2VvZiBvLlN1YnNjcmliZXIpcmV0dXJuIHQ7aWYodFtpLnJ4U3Vi
c2NyaWJlcl0pcmV0dXJuIHRbaS5yeFN1YnNjcmliZXJdKCl9cmV0dXJuIHR8fGV8fG4/bmV3IG8u
U3Vic2NyaWJlcih0LGUsbik6bmV3IG8uU3Vic2NyaWJlcihzLmVtcHR5KX12YXIgbz1uKCJtbVZT
IiksaT1uKCJyOFpZIikscz1uKCJ5cm91Iik7ZS50b1N1YnNjcmliZXI9cn0sbWJWQzpmdW5jdGlv
bih0LGUsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIodCl7dmFyIGUsbj10LlN5bWJvbDtyZXR1
cm4iZnVuY3Rpb24iPT10eXBlb2Ygbj9uLm9ic2VydmFibGU/ZT1uLm9ic2VydmFibGU6KGU9bigi
b2JzZXJ2YWJsZSIpLG4ub2JzZXJ2YWJsZT1lKTplPSJAQG9ic2VydmFibGUiLGV9dmFyIG89bigi
Vk9mWiIpO2UuZ2V0U3ltYm9sT2JzZXJ2YWJsZT1yLGUub2JzZXJ2YWJsZT1yKG8ucm9vdCksZS4k
JG9ic2VydmFibGU9ZS5vYnNlcnZhYmxlfSxtbVZTOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmlj
dCI7dmFyIHI9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fGZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbigp
e3RoaXMuY29uc3RydWN0b3I9dH1mb3IodmFyIHIgaW4gZSllLmhhc093blByb3BlcnR5KHIpJiYo
dFtyXT1lW3JdKTt0LnByb3RvdHlwZT1udWxsPT09ZT9PYmplY3QuY3JlYXRlKGUpOihuLnByb3Rv
dHlwZT1lLnByb3RvdHlwZSxuZXcgbil9LG89bigiU0tINiIpLGk9bigiQjAwVSIpLHM9bigieXJv
dSIpLGE9bigicjhaWSIpLHU9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShuLHIsbyl7c3dpdGNoKHQu
Y2FsbCh0aGlzKSx0aGlzLnN5bmNFcnJvclZhbHVlPW51bGwsdGhpcy5zeW5jRXJyb3JUaHJvd249
ITEsdGhpcy5zeW5jRXJyb3JUaHJvd2FibGU9ITEsdGhpcy5pc1N0b3BwZWQ9ITEsYXJndW1lbnRz
Lmxlbmd0aCl7Y2FzZSAwOnRoaXMuZGVzdGluYXRpb249cy5lbXB0eTticmVhaztjYXNlIDE6aWYo
IW4pe3RoaXMuZGVzdGluYXRpb249cy5lbXB0eTticmVha31pZigib2JqZWN0Ij09dHlwZW9mIG4p
e24gaW5zdGFuY2VvZiBlPyh0aGlzLmRlc3RpbmF0aW9uPW4sdGhpcy5kZXN0aW5hdGlvbi5hZGQo
dGhpcykpOih0aGlzLnN5bmNFcnJvclRocm93YWJsZT0hMCx0aGlzLmRlc3RpbmF0aW9uPW5ldyBj
KHRoaXMsbikpO2JyZWFrfWRlZmF1bHQ6dGhpcy5zeW5jRXJyb3JUaHJvd2FibGU9ITAsdGhpcy5k
ZXN0aW5hdGlvbj1uZXcgYyh0aGlzLG4scixvKX19cmV0dXJuIHIoZSx0KSxlLnByb3RvdHlwZVth
LnJ4U3Vic2NyaWJlcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sZS5jcmVhdGU9ZnVuY3Rpb24o
dCxuLHIpe3ZhciBvPW5ldyBlKHQsbixyKTtyZXR1cm4gby5zeW5jRXJyb3JUaHJvd2FibGU9ITEs
b30sZS5wcm90b3R5cGUubmV4dD1mdW5jdGlvbih0KXt0aGlzLmlzU3RvcHBlZHx8dGhpcy5fbmV4
dCh0KX0sZS5wcm90b3R5cGUuZXJyb3I9ZnVuY3Rpb24odCl7dGhpcy5pc1N0b3BwZWR8fCh0aGlz
LmlzU3RvcHBlZD0hMCx0aGlzLl9lcnJvcih0KSl9LGUucHJvdG90eXBlLmNvbXBsZXRlPWZ1bmN0
aW9uKCl7dGhpcy5pc1N0b3BwZWR8fCh0aGlzLmlzU3RvcHBlZD0hMCx0aGlzLl9jb21wbGV0ZSgp
KX0sZS5wcm90b3R5cGUudW5zdWJzY3JpYmU9ZnVuY3Rpb24oKXt0aGlzLmNsb3NlZHx8KHRoaXMu
aXNTdG9wcGVkPSEwLHQucHJvdG90eXBlLnVuc3Vic2NyaWJlLmNhbGwodGhpcykpfSxlLnByb3Rv
dHlwZS5fbmV4dD1mdW5jdGlvbih0KXt0aGlzLmRlc3RpbmF0aW9uLm5leHQodCl9LGUucHJvdG90
eXBlLl9lcnJvcj1mdW5jdGlvbih0KXt0aGlzLmRlc3RpbmF0aW9uLmVycm9yKHQpLHRoaXMudW5z
dWJzY3JpYmUoKX0sZS5wcm90b3R5cGUuX2NvbXBsZXRlPWZ1bmN0aW9uKCl7dGhpcy5kZXN0aW5h
dGlvbi5jb21wbGV0ZSgpLHRoaXMudW5zdWJzY3JpYmUoKX0sZS5wcm90b3R5cGUuX3Vuc3Vic2Ny
aWJlQW5kUmVjeWNsZT1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10Ll9wYXJlbnQsbj10Ll9wYXJl
bnRzO3JldHVybiB0aGlzLl9wYXJlbnQ9bnVsbCx0aGlzLl9wYXJlbnRzPW51bGwsdGhpcy51bnN1
YnNjcmliZSgpLHRoaXMuY2xvc2VkPSExLHRoaXMuaXNTdG9wcGVkPSExLHRoaXMuX3BhcmVudD1l
LHRoaXMuX3BhcmVudHM9bix0aGlzfSxlfShpLlN1YnNjcmlwdGlvbik7ZS5TdWJzY3JpYmVyPXU7
dmFyIGM9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4scixpKXt0LmNhbGwodGhpcyksdGhpcy5f
cGFyZW50U3Vic2NyaWJlcj1lO3ZhciBhLHU9dGhpcztvLmlzRnVuY3Rpb24obik/YT1uOm4mJihh
PW4ubmV4dCxyPW4uZXJyb3IsaT1uLmNvbXBsZXRlLG4hPT1zLmVtcHR5JiYodT1PYmplY3QuY3Jl
YXRlKG4pLG8uaXNGdW5jdGlvbih1LnVuc3Vic2NyaWJlKSYmdGhpcy5hZGQodS51bnN1YnNjcmli
ZS5iaW5kKHUpKSx1LnVuc3Vic2NyaWJlPXRoaXMudW5zdWJzY3JpYmUuYmluZCh0aGlzKSkpLHRo
aXMuX2NvbnRleHQ9dSx0aGlzLl9uZXh0PWEsdGhpcy5fZXJyb3I9cix0aGlzLl9jb21wbGV0ZT1p
fXJldHVybiByKGUsdCksZS5wcm90b3R5cGUubmV4dD1mdW5jdGlvbih0KXtpZighdGhpcy5pc1N0
b3BwZWQmJnRoaXMuX25leHQpe3ZhciBlPXRoaXMuX3BhcmVudFN1YnNjcmliZXI7ZS5zeW5jRXJy
b3JUaHJvd2FibGU/dGhpcy5fX3RyeU9yU2V0RXJyb3IoZSx0aGlzLl9uZXh0LHQpJiZ0aGlzLnVu
c3Vic2NyaWJlKCk6dGhpcy5fX3RyeU9yVW5zdWIodGhpcy5fbmV4dCx0KX19LGUucHJvdG90eXBl
LmVycm9yPWZ1bmN0aW9uKHQpe2lmKCF0aGlzLmlzU3RvcHBlZCl7dmFyIGU9dGhpcy5fcGFyZW50
U3Vic2NyaWJlcjtpZih0aGlzLl9lcnJvcillLnN5bmNFcnJvclRocm93YWJsZT8odGhpcy5fX3Ry
eU9yU2V0RXJyb3IoZSx0aGlzLl9lcnJvcix0KSx0aGlzLnVuc3Vic2NyaWJlKCkpOih0aGlzLl9f
dHJ5T3JVbnN1Yih0aGlzLl9lcnJvcix0KSx0aGlzLnVuc3Vic2NyaWJlKCkpO2Vsc2V7aWYoIWUu
c3luY0Vycm9yVGhyb3dhYmxlKXRocm93IHRoaXMudW5zdWJzY3JpYmUoKSx0O2Uuc3luY0Vycm9y
VmFsdWU9dCxlLnN5bmNFcnJvclRocm93bj0hMCx0aGlzLnVuc3Vic2NyaWJlKCl9fX0sZS5wcm90
b3R5cGUuY29tcGxldGU9ZnVuY3Rpb24oKXtpZighdGhpcy5pc1N0b3BwZWQpe3ZhciB0PXRoaXMu
X3BhcmVudFN1YnNjcmliZXI7dGhpcy5fY29tcGxldGU/dC5zeW5jRXJyb3JUaHJvd2FibGU/KHRo
aXMuX190cnlPclNldEVycm9yKHQsdGhpcy5fY29tcGxldGUpLHRoaXMudW5zdWJzY3JpYmUoKSk6
KHRoaXMuX190cnlPclVuc3ViKHRoaXMuX2NvbXBsZXRlKSx0aGlzLnVuc3Vic2NyaWJlKCkpOnRo
aXMudW5zdWJzY3JpYmUoKX19LGUucHJvdG90eXBlLl9fdHJ5T3JVbnN1Yj1mdW5jdGlvbih0LGUp
e3RyeXt0LmNhbGwodGhpcy5fY29udGV4dCxlKX1jYXRjaCh0KXt0aHJvdyB0aGlzLnVuc3Vic2Ny
aWJlKCksdH19LGUucHJvdG90eXBlLl9fdHJ5T3JTZXRFcnJvcj1mdW5jdGlvbih0LGUsbil7dHJ5
e2UuY2FsbCh0aGlzLl9jb250ZXh0LG4pfWNhdGNoKGUpe3JldHVybiB0LnN5bmNFcnJvclZhbHVl
PWUsdC5zeW5jRXJyb3JUaHJvd249ITAsITB9cmV0dXJuITF9LGUucHJvdG90eXBlLl91bnN1YnNj
cmliZT1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX3BhcmVudFN1YnNjcmliZXI7dGhpcy5fY29udGV4
dD1udWxsLHRoaXMuX3BhcmVudFN1YnNjcmliZXI9bnVsbCx0LnVuc3Vic2NyaWJlKCl9LGV9KHUp
fSxyOFpZOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiVk9mWiIpLG89ci5y
b290LlN5bWJvbDtlLnJ4U3Vic2NyaWJlcj0iZnVuY3Rpb24iPT10eXBlb2YgbyYmImZ1bmN0aW9u
Ij09dHlwZW9mIG8uZm9yP28uZm9yKCJyeFN1YnNjcmliZXIiKToiQEByeFN1YnNjcmliZXIiLGUu
JCRyeFN1YnNjcmliZXI9ZS5yeFN1YnNjcmliZXJ9LHJDVGY6ZnVuY3Rpb24odCxlLG4peyJ1c2Ug
c3RyaWN0Ijt2YXIgcj1uKCJWT2ZaIiksbz1uKCJsSHNCIiksaT1uKCJtYlZDIikscz1mdW5jdGlv
bigpe2Z1bmN0aW9uIHQodCl7dGhpcy5faXNTY2FsYXI9ITEsdCYmKHRoaXMuX3N1YnNjcmliZT10
KX1yZXR1cm4gdC5wcm90b3R5cGUubGlmdD1mdW5jdGlvbihlKXt2YXIgbj1uZXcgdDtyZXR1cm4g
bi5zb3VyY2U9dGhpcyxuLm9wZXJhdG9yPWUsbn0sdC5wcm90b3R5cGUuc3Vic2NyaWJlPWZ1bmN0
aW9uKHQsZSxuKXt2YXIgcj10aGlzLm9wZXJhdG9yLGk9by50b1N1YnNjcmliZXIodCxlLG4pO2lm
KHI/ci5jYWxsKGksdGhpcy5zb3VyY2UpOmkuYWRkKHRoaXMuX3RyeVN1YnNjcmliZShpKSksaS5z
eW5jRXJyb3JUaHJvd2FibGUmJihpLnN5bmNFcnJvclRocm93YWJsZT0hMSxpLnN5bmNFcnJvclRo
cm93bikpdGhyb3cgaS5zeW5jRXJyb3JWYWx1ZTtyZXR1cm4gaX0sdC5wcm90b3R5cGUuX3RyeVN1
YnNjcmliZT1mdW5jdGlvbih0KXt0cnl7cmV0dXJuIHRoaXMuX3N1YnNjcmliZSh0KX1jYXRjaChl
KXt0LnN5bmNFcnJvclRocm93bj0hMCx0LnN5bmNFcnJvclZhbHVlPWUsdC5lcnJvcihlKX19LHQu
cHJvdG90eXBlLmZvckVhY2g9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzO2lmKGV8fChyLnJvb3Qu
UngmJnIucm9vdC5SeC5jb25maWcmJnIucm9vdC5SeC5jb25maWcuUHJvbWlzZT9lPXIucm9vdC5S
eC5jb25maWcuUHJvbWlzZTpyLnJvb3QuUHJvbWlzZSYmKGU9ci5yb290LlByb21pc2UpKSwhZSl0
aHJvdyBuZXcgRXJyb3IoIm5vIFByb21pc2UgaW1wbCBmb3VuZCIpO3JldHVybiBuZXcgZShmdW5j
dGlvbihlLHIpe3ZhciBvO289bi5zdWJzY3JpYmUoZnVuY3Rpb24oZSl7aWYobyl0cnl7dChlKX1j
YXRjaCh0KXtyKHQpLG8udW5zdWJzY3JpYmUoKX1lbHNlIHQoZSl9LHIsZSl9KX0sdC5wcm90b3R5
cGUuX3N1YnNjcmliZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5zb3VyY2Uuc3Vic2NyaWJlKHQp
fSx0LnByb3RvdHlwZVtpLm9ic2VydmFibGVdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LHQuY3Jl
YXRlPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgdChlKX0sdH0oKTtlLk9ic2VydmFibGU9c30sc0lZ
TzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPXRoaXMmJnRoaXMuX19leHRlbmRz
fHxmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4oKXt0aGlzLmNvbnN0cnVjdG9yPXR9Zm9yKHZhciBy
IGluIGUpZS5oYXNPd25Qcm9wZXJ0eShyKSYmKHRbcl09ZVtyXSk7dC5wcm90b3R5cGU9bnVsbD09
PWU/T2JqZWN0LmNyZWF0ZShlKToobi5wcm90b3R5cGU9ZS5wcm90b3R5cGUsbmV3IG4pfSxvPW4o
IkVFcjQiKSxpPW4oInJDVGYiKSxzPW4oIm1tVlMiKSxhPW4oIkIwMFUiKSx1PWZ1bmN0aW9uKHQp
e2Z1bmN0aW9uIGUoZSxuKXt0LmNhbGwodGhpcyksdGhpcy5zb3VyY2U9ZSx0aGlzLnN1YmplY3RG
YWN0b3J5PW4sdGhpcy5fcmVmQ291bnQ9MH1yZXR1cm4gcihlLHQpLGUucHJvdG90eXBlLl9zdWJz
Y3JpYmU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZ2V0U3ViamVjdCgpLnN1YnNjcmliZSh0KX0s
ZS5wcm90b3R5cGUuZ2V0U3ViamVjdD1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX3N1YmplY3Q7cmV0
dXJuIHQmJiF0LmlzU3RvcHBlZHx8KHRoaXMuX3N1YmplY3Q9dGhpcy5zdWJqZWN0RmFjdG9yeSgp
KSx0aGlzLl9zdWJqZWN0fSxlLnByb3RvdHlwZS5jb25uZWN0PWZ1bmN0aW9uKCl7dmFyIHQ9dGhp
cy5fY29ubmVjdGlvbjtyZXR1cm4gdHx8KHQ9dGhpcy5fY29ubmVjdGlvbj1uZXcgYS5TdWJzY3Jp
cHRpb24sdC5hZGQodGhpcy5zb3VyY2Uuc3Vic2NyaWJlKG5ldyBjKHRoaXMuZ2V0U3ViamVjdCgp
LHRoaXMpKSksdC5jbG9zZWQ/KHRoaXMuX2Nvbm5lY3Rpb249bnVsbCx0PWEuU3Vic2NyaXB0aW9u
LkVNUFRZKTp0aGlzLl9jb25uZWN0aW9uPXQpLHR9LGUucHJvdG90eXBlLnJlZkNvdW50PWZ1bmN0
aW9uKCl7cmV0dXJuIHRoaXMubGlmdChuZXcgbCh0aGlzKSl9LGV9KGkuT2JzZXJ2YWJsZSk7ZS5D
b25uZWN0YWJsZU9ic2VydmFibGU9dSxlLmNvbm5lY3RhYmxlT2JzZXJ2YWJsZURlc2NyaXB0b3I9
e29wZXJhdG9yOnt2YWx1ZTpudWxsfSxfcmVmQ291bnQ6e3ZhbHVlOjAsd3JpdGFibGU6ITB9LF9z
dWJqZWN0Ont2YWx1ZTpudWxsLHdyaXRhYmxlOiEwfSxfY29ubmVjdGlvbjp7dmFsdWU6bnVsbCx3
cml0YWJsZTohMH0sX3N1YnNjcmliZTp7dmFsdWU6dS5wcm90b3R5cGUuX3N1YnNjcmliZX0sZ2V0
U3ViamVjdDp7dmFsdWU6dS5wcm90b3R5cGUuZ2V0U3ViamVjdH0sY29ubmVjdDp7dmFsdWU6dS5w
cm90b3R5cGUuY29ubmVjdH0scmVmQ291bnQ6e3ZhbHVlOnUucHJvdG90eXBlLnJlZkNvdW50fX07
dmFyIGM9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4pe3QuY2FsbCh0aGlzLGUpLHRoaXMuY29u
bmVjdGFibGU9bn1yZXR1cm4gcihlLHQpLGUucHJvdG90eXBlLl9lcnJvcj1mdW5jdGlvbihlKXt0
aGlzLl91bnN1YnNjcmliZSgpLHQucHJvdG90eXBlLl9lcnJvci5jYWxsKHRoaXMsZSl9LGUucHJv
dG90eXBlLl9jb21wbGV0ZT1mdW5jdGlvbigpe3RoaXMuX3Vuc3Vic2NyaWJlKCksdC5wcm90b3R5
cGUuX2NvbXBsZXRlLmNhbGwodGhpcyl9LGUucHJvdG90eXBlLl91bnN1YnNjcmliZT1mdW5jdGlv
bigpe3ZhciB0PXRoaXMuY29ubmVjdGFibGU7aWYodCl7dGhpcy5jb25uZWN0YWJsZT1udWxsO3Zh
ciBlPXQuX2Nvbm5lY3Rpb247dC5fcmVmQ291bnQ9MCx0Ll9zdWJqZWN0PW51bGwsdC5fY29ubmVj
dGlvbj1udWxsLGUmJmUudW5zdWJzY3JpYmUoKX19LGV9KG8uU3ViamVjdFN1YnNjcmliZXIpLGw9
ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuY29ubmVjdGFibGU9dH1yZXR1cm4gdC5wcm90
b3R5cGUuY2FsbD1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuY29ubmVjdGFibGU7bi5fcmVmQ291
bnQrKzt2YXIgcj1uZXcgcCh0LG4pLG89ZS5zdWJzY3JpYmUocik7cmV0dXJuIHIuY2xvc2VkfHwo
ci5jb25uZWN0aW9uPW4uY29ubmVjdCgpKSxvfSx0fSgpLHA9ZnVuY3Rpb24odCl7ZnVuY3Rpb24g
ZShlLG4pe3QuY2FsbCh0aGlzLGUpLHRoaXMuY29ubmVjdGFibGU9bn1yZXR1cm4gcihlLHQpLGUu
cHJvdG90eXBlLl91bnN1YnNjcmliZT1mdW5jdGlvbigpe3ZhciB0PXRoaXMuY29ubmVjdGFibGU7
aWYoIXQpcmV0dXJuIHZvaWQodGhpcy5jb25uZWN0aW9uPW51bGwpO3RoaXMuY29ubmVjdGFibGU9
bnVsbDt2YXIgZT10Ll9yZWZDb3VudDtpZihlPD0wKXJldHVybiB2b2lkKHRoaXMuY29ubmVjdGlv
bj1udWxsKTtpZih0Ll9yZWZDb3VudD1lLTEsZT4xKXJldHVybiB2b2lkKHRoaXMuY29ubmVjdGlv
bj1udWxsKTt2YXIgbj10aGlzLmNvbm5lY3Rpb24scj10Ll9jb25uZWN0aW9uO3RoaXMuY29ubmVj
dGlvbj1udWxsLCFyfHxuJiZyIT09bnx8ci51bnN1YnNjcmliZSgpfSxlfShzLlN1YnNjcmliZXIp
fSx0MnF2OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9dGhpcyYmdGhpcy5fX2V4
dGVuZHN8fGZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbigpe3RoaXMuY29uc3RydWN0b3I9dH1mb3Io
dmFyIHIgaW4gZSllLmhhc093blByb3BlcnR5KHIpJiYodFtyXT1lW3JdKTt0LnByb3RvdHlwZT1u
dWxsPT09ZT9PYmplY3QuY3JlYXRlKGUpOihuLnByb3RvdHlwZT1lLnByb3RvdHlwZSxuZXcgbil9
LG89bigickNUZiIpLGk9bigiakJFRiIpLHM9bigiWGFqbyIpLGE9bigiQ1VScCIpLHU9bigid0Fr
RCIpLGM9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4pe3QuY2FsbCh0aGlzKSx0aGlzLnNvdXJj
ZXM9ZSx0aGlzLnJlc3VsdFNlbGVjdG9yPW59cmV0dXJuIHIoZSx0KSxlLmNyZWF0ZT1mdW5jdGlv
bigpe2Zvcih2YXIgdD1bXSxuPTA7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl0W24tMF09YXJndW1l
bnRzW25dO2lmKG51bGw9PT10fHwwPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gbmV3IGkuRW1w
dHlPYnNlcnZhYmxlO3ZhciByPW51bGw7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHRbdC5sZW5n
dGgtMV0mJihyPXQucG9wKCkpLDE9PT10Lmxlbmd0aCYmcy5pc0FycmF5KHRbMF0pJiYodD10WzBd
KSwwPT09dC5sZW5ndGg/bmV3IGkuRW1wdHlPYnNlcnZhYmxlOm5ldyBlKHQscil9LGUucHJvdG90
eXBlLl9zdWJzY3JpYmU9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBsKHQsdGhpcy5zb3VyY2VzLHRo
aXMucmVzdWx0U2VsZWN0b3IpfSxlfShvLk9ic2VydmFibGUpO2UuRm9ya0pvaW5PYnNlcnZhYmxl
PWM7dmFyIGw9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4scil7dC5jYWxsKHRoaXMsZSksdGhp
cy5zb3VyY2VzPW4sdGhpcy5yZXN1bHRTZWxlY3Rvcj1yLHRoaXMuY29tcGxldGVkPTAsdGhpcy5o
YXZlVmFsdWVzPTA7dmFyIG89bi5sZW5ndGg7dGhpcy50b3RhbD1vLHRoaXMudmFsdWVzPW5ldyBB
cnJheShvKTtmb3IodmFyIGk9MDtpPG87aSsrKXt2YXIgcz1uW2ldLHU9YS5zdWJzY3JpYmVUb1Jl
c3VsdCh0aGlzLHMsbnVsbCxpKTt1JiYodS5vdXRlckluZGV4PWksdGhpcy5hZGQodSkpfX1yZXR1
cm4gcihlLHQpLGUucHJvdG90eXBlLm5vdGlmeU5leHQ9ZnVuY3Rpb24odCxlLG4scixvKXt0aGlz
LnZhbHVlc1tuXT1lLG8uX2hhc1ZhbHVlfHwoby5faGFzVmFsdWU9ITAsdGhpcy5oYXZlVmFsdWVz
KyspfSxlLnByb3RvdHlwZS5ub3RpZnlDb21wbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmRl
c3RpbmF0aW9uLG49dGhpcyxyPW4uaGF2ZVZhbHVlcyxvPW4ucmVzdWx0U2VsZWN0b3IsaT1uLnZh
bHVlcyxzPWkubGVuZ3RoO2lmKCF0Ll9oYXNWYWx1ZSlyZXR1cm4gdm9pZCBlLmNvbXBsZXRlKCk7
aWYoKyt0aGlzLmNvbXBsZXRlZD09PXMpe2lmKHI9PT1zKXt2YXIgYT1vP28uYXBwbHkodGhpcyxp
KTppO2UubmV4dChhKX1lLmNvbXBsZXRlKCl9fSxlfSh1Lk91dGVyU3Vic2NyaWJlcil9LHdBa0Q6
ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8
ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKCl7dGhpcy5jb25zdHJ1Y3Rvcj10fWZvcih2YXIgciBp
biBlKWUuaGFzT3duUHJvcGVydHkocikmJih0W3JdPWVbcl0pO3QucHJvdG90eXBlPW51bGw9PT1l
P09iamVjdC5jcmVhdGUoZSk6KG4ucHJvdG90eXBlPWUucHJvdG90eXBlLG5ldyBuKX0sbz1uKCJt
bVZTIiksaT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9
cmV0dXJuIHIoZSx0KSxlLnByb3RvdHlwZS5ub3RpZnlOZXh0PWZ1bmN0aW9uKHQsZSxuLHIsbyl7
dGhpcy5kZXN0aW5hdGlvbi5uZXh0KGUpfSxlLnByb3RvdHlwZS5ub3RpZnlFcnJvcj1mdW5jdGlv
bih0LGUpe3RoaXMuZGVzdGluYXRpb24uZXJyb3IodCl9LGUucHJvdG90eXBlLm5vdGlmeUNvbXBs
ZXRlPWZ1bmN0aW9uKHQpe3RoaXMuZGVzdGluYXRpb24uY29tcGxldGUoKX0sZX0oby5TdWJzY3Jp
YmVyKTtlLk91dGVyU3Vic2NyaWJlcj1pfSx4QUpzOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gcih0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBl
RXJyb3IoImFyZ3VtZW50IGlzIG5vdCBhIGZ1bmN0aW9uLiBBcmUgeW91IGxvb2tpbmcgZm9yIGBt
YXBUbygpYD8iKTtyZXR1cm4gdGhpcy5saWZ0KG5ldyBzKHQsZSkpfXZhciBvPXRoaXMmJnRoaXMu
X19leHRlbmRzfHxmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4oKXt0aGlzLmNvbnN0cnVjdG9yPXR9
Zm9yKHZhciByIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShyKSYmKHRbcl09ZVtyXSk7dC5wcm90b3R5
cGU9bnVsbD09PWU/T2JqZWN0LmNyZWF0ZShlKToobi5wcm90b3R5cGU9ZS5wcm90b3R5cGUsbmV3
IG4pfSxpPW4oIm1tVlMiKTtlLm1hcD1yO3ZhciBzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUp
e3RoaXMucHJvamVjdD10LHRoaXMudGhpc0FyZz1lfXJldHVybiB0LnByb3RvdHlwZS5jYWxsPWZ1
bmN0aW9uKHQsZSl7cmV0dXJuIGUuc3Vic2NyaWJlKG5ldyBhKHQsdGhpcy5wcm9qZWN0LHRoaXMu
dGhpc0FyZykpfSx0fSgpO2UuTWFwT3BlcmF0b3I9czt2YXIgYT1mdW5jdGlvbih0KXtmdW5jdGlv
biBlKGUsbixyKXt0LmNhbGwodGhpcyxlKSx0aGlzLnByb2plY3Q9bix0aGlzLmNvdW50PTAsdGhp
cy50aGlzQXJnPXJ8fHRoaXN9cmV0dXJuIG8oZSx0KSxlLnByb3RvdHlwZS5fbmV4dD1mdW5jdGlv
bih0KXt2YXIgZTt0cnl7ZT10aGlzLnByb2plY3QuY2FsbCh0aGlzLnRoaXNBcmcsdCx0aGlzLmNv
dW50KyspfWNhdGNoKHQpe3JldHVybiB2b2lkIHRoaXMuZGVzdGluYXRpb24uZXJyb3IodCl9dGhp
cy5kZXN0aW5hdGlvbi5uZXh0KGUpfSxlfShpLlN1YnNjcmliZXIpfSx5cm91OmZ1bmN0aW9uKHQs
ZSxuKXsidXNlIHN0cmljdCI7ZS5lbXB0eT17Y2xvc2VkOiEwLG5leHQ6ZnVuY3Rpb24odCl7fSxl
cnJvcjpmdW5jdGlvbih0KXt0aHJvdyB0fSxjb21wbGV0ZTpmdW5jdGlvbigpe319fX0pOwpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIv
ZTJlL2FwcC5lMmUtc3BlYy50cyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvZTJlL2FwcC5lMmUtc3Bl
Yy50cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40NWM3NDRjZjk4MjdiYzgzZmM1ZTU2MjUxMmNhZTA0OGFmZGVkMDcy
Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9lMmUvYXBwLmUyZS1zcGVj
LnRzCkBAIC0wLDAgKzEsMTQgQEAKK2ltcG9ydCB7IFRvZG9BcHBQYWdlIH0gZnJvbSAnLi9hcHAu
cG8nOworCitkZXNjcmliZSgndG9kby1hcHAgQXBwJywgKCkgPT4geworICBsZXQgcGFnZTogVG9k
b0FwcFBhZ2U7CisKKyAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgcGFnZSA9IG5ldyBUb2RvQXBw
UGFnZSgpOworICB9KTsKKworICBpdCgnc2hvdWxkIGRpc3BsYXkgbWVzc2FnZSBzYXlpbmcgYXBw
IHdvcmtzJywgKCkgPT4geworICAgIHBhZ2UubmF2aWdhdGVUbygpOworICAgIGV4cGVjdChwYWdl
LmdldFBhcmFncmFwaFRleHQoKSkudG9FcXVhbCgnYXBwIHdvcmtzIScpOworICB9KTsKK30pOwpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9lMmUvYXBwLnBvLnRzIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvYW5ndWxhci9lMmUvYXBwLnBvLnRzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA2M2NhZjIzZTFhMDkxZTMxZDJl
YTA4Y2Q3MDI2MTY1YTcwNDIxY2YKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1
bGFyL2UyZS9hcHAucG8udHMKQEAgLTAsMCArMSwxMSBAQAoraW1wb3J0IHsgYnJvd3NlciwgZWxl
bWVudCwgYnkgfSBmcm9tICdwcm90cmFjdG9yJzsKKworZXhwb3J0IGNsYXNzIFRvZG9BcHBQYWdl
IHsKKyAgbmF2aWdhdGVUbygpIHsKKyAgICByZXR1cm4gYnJvd3Nlci5nZXQoJy8nKTsKKyAgfQor
CisgIGdldFBhcmFncmFwaFRleHQoKSB7CisgICAgcmV0dXJuIGVsZW1lbnQoYnkuY3NzKCdhcHAt
cm9vdCBoMScpKS5nZXRUZXh0KCk7CisgIH0KK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2Fu
Z3VsYXIvZTJlL3RzY29uZmlnLmUyZS5qc29uIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9lMmUvdHNj
b25maWcuZTJlLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWM3YTM3MzI1Nzk4ZjY5MjcyOWFhMjdhNzVhMWI2
Yzg2ZGIzNTAyYgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvZTJlL3Rz
Y29uZmlnLmUyZS5qc29uCkBAIC0wLDAgKzEsMTIgQEAKK3sKKyAgImV4dGVuZHMiOiAiLi4vdHNj
b25maWcuanNvbiIsCisgICJjb21waWxlck9wdGlvbnMiOiB7CisgICAgIm91dERpciI6ICIuLi9v
dXQtdHNjL2UyZSIsCisgICAgIm1vZHVsZSI6ICJjb21tb25qcyIsCisgICAgInRhcmdldCI6ICJl
czUiLAorICAgICJ0eXBlcyI6WworICAgICAgImphc21pbmUiLAorICAgICAgIm5vZGUiCisgICAg
XQorICB9Cit9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL2thcm1hLmNvbmYuanMg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9hbmd1bGFyL2thcm1hLmNvbmYuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODRiNGNkNWFj
YWIyOTk2ODA0NGZjNTc0OGZhNTNkZDk3ZDIxMjI5ZAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2FuZ3VsYXIva2FybWEuY29uZi5qcwpAQCAtMCwwICsxLDQ0IEBACisvLyBLYXJtYSBj
b25maWd1cmF0aW9uIGZpbGUsIHNlZSBsaW5rIGZvciBtb3JlIGluZm9ybWF0aW9uCisvLyBodHRw
czovL2thcm1hLXJ1bm5lci5naXRodWIuaW8vMC4xMy9jb25maWcvY29uZmlndXJhdGlvbi1maWxl
Lmh0bWwKKworbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoY29uZmlnKSB7CisgIGNvbmZpZy5z
ZXQoeworICAgIGJhc2VQYXRoOiAnJywKKyAgICBmcmFtZXdvcmtzOiBbJ2phc21pbmUnLCAnQGFu
Z3VsYXIvY2xpJ10sCisgICAgcGx1Z2luczogWworICAgICAgcmVxdWlyZSgna2FybWEtamFzbWlu
ZScpLAorICAgICAgcmVxdWlyZSgna2FybWEtY2hyb21lLWxhdW5jaGVyJyksCisgICAgICByZXF1
aXJlKCdrYXJtYS1qYXNtaW5lLWh0bWwtcmVwb3J0ZXInKSwKKyAgICAgIHJlcXVpcmUoJ2thcm1h
LWNvdmVyYWdlLWlzdGFuYnVsLXJlcG9ydGVyJyksCisgICAgICByZXF1aXJlKCdAYW5ndWxhci9j
bGkvcGx1Z2lucy9rYXJtYScpCisgICAgXSwKKyAgICBjbGllbnQ6eworICAgICAgY2xlYXJDb250
ZXh0OiBmYWxzZSAvLyBsZWF2ZSBKYXNtaW5lIFNwZWMgUnVubmVyIG91dHB1dCB2aXNpYmxlIGlu
IGJyb3dzZXIKKyAgICB9LAorICAgIGZpbGVzOiBbCisgICAgICB7IHBhdHRlcm46ICcuL3NyYy90
ZXN0LnRzJywgd2F0Y2hlZDogZmFsc2UgfQorICAgIF0sCisgICAgcHJlcHJvY2Vzc29yczogewor
ICAgICAgJy4vc3JjL3Rlc3QudHMnOiBbJ0Bhbmd1bGFyL2NsaSddCisgICAgfSwKKyAgICBtaW1l
OiB7CisgICAgICAndGV4dC94LXR5cGVzY3JpcHQnOiBbJ3RzJywndHN4J10KKyAgICB9LAorICAg
IGNvdmVyYWdlSXN0YW5idWxSZXBvcnRlcjogeworICAgICAgcmVwb3J0czogWyAnaHRtbCcsICds
Y292b25seScgXSwKKyAgICAgIGZpeFdlYnBhY2tTb3VyY2VQYXRoczogdHJ1ZQorICAgIH0sCisg
ICAgYW5ndWxhckNsaTogeworICAgICAgZW52aXJvbm1lbnQ6ICdkZXYnCisgICAgfSwKKyAgICBy
ZXBvcnRlcnM6IGNvbmZpZy5hbmd1bGFyQ2xpICYmIGNvbmZpZy5hbmd1bGFyQ2xpLmNvZGVDb3Zl
cmFnZQorICAgICAgICAgICAgICA/IFsncHJvZ3Jlc3MnLCAnY292ZXJhZ2UtaXN0YW5idWwnXQor
ICAgICAgICAgICAgICA6IFsncHJvZ3Jlc3MnLCAna2podG1sJ10sCisgICAgcG9ydDogOTg3NiwK
KyAgICBjb2xvcnM6IHRydWUsCisgICAgbG9nTGV2ZWw6IGNvbmZpZy5MT0dfSU5GTywKKyAgICBh
dXRvV2F0Y2g6IHRydWUsCisgICAgYnJvd3NlcnM6IFsnQ2hyb21lJ10sCisgICAgc2luZ2xlUnVu
OiBmYWxzZQorICB9KTsKK307CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL3BhY2th
Z2UuanNvbiBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvcGFja2FnZS5qc29uCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJm
MDVmZmYwYmZhZTQ2NWQ2ZmE4MWE1YzcxZmYxYjNmYjMzYjliYTAKLS0tIC9kZXYvbnVsbAorKysg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9hbmd1bGFyL3BhY2thZ2UuanNvbgpAQCAtMCwwICsxLDQ2IEBACit7Cisg
ICJuYW1lIjogInRvZG8tYXBwIiwKKyAgInZlcnNpb24iOiAiMC4wLjAiLAorICAibGljZW5zZSI6
ICJNSVQiLAorICAic2NyaXB0cyI6IHsKKyAgICAibmciOiAibmciLAorICAgICJzdGFydCI6ICJu
ZyBzZXJ2ZSIsCisgICAgImJ1aWxkIjogIm5nIGJ1aWxkIiwKKyAgICAidGVzdCI6ICJuZyB0ZXN0
IiwKKyAgICAibGludCI6ICJuZyBsaW50IiwKKyAgICAiZTJlIjogIm5nIGUyZSIKKyAgfSwKKyAg
InByaXZhdGUiOiB0cnVlLAorICAiZGVwZW5kZW5jaWVzIjogeworICAgICJAYW5ndWxhci9jb21t
b24iOiAiXjQuMC4wIiwKKyAgICAiQGFuZ3VsYXIvY29tcGlsZXIiOiAiXjQuMC4wIiwKKyAgICAi
QGFuZ3VsYXIvY29yZSI6ICJeNC4wLjAiLAorICAgICJAYW5ndWxhci9mb3JtcyI6ICJeNC4wLjAi
LAorICAgICJAYW5ndWxhci9odHRwIjogIl40LjAuMCIsCisgICAgIkBhbmd1bGFyL3BsYXRmb3Jt
LWJyb3dzZXIiOiAiXjQuMC4wIiwKKyAgICAiQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlci1keW5h
bWljIjogIl40LjAuMCIsCisgICAgIkBhbmd1bGFyL3JvdXRlciI6ICJeNC4wLjAiLAorICAgICJj
b3JlLWpzIjogIl4yLjQuMSIsCisgICAgInJ4anMiOiAiXjUuMS4wIiwKKyAgICAiem9uZS5qcyI6
ICJeMC44LjQiCisgIH0sCisgICJkZXZEZXBlbmRlbmNpZXMiOiB7CisgICAgIkBhbmd1bGFyL2Ns
aSI6ICIxLjAuMCIsCisgICAgIkBhbmd1bGFyL2NvbXBpbGVyLWNsaSI6ICJeNC4wLjAiLAorICAg
ICJAdHlwZXMvamFzbWluZSI6ICIyLjUuMzgiLAorICAgICJAdHlwZXMvbm9kZSI6ICJ+Ni4wLjYw
IiwKKyAgICAiY29kZWx5emVyIjogIn4yLjAuMCIsCisgICAgImphc21pbmUtY29yZSI6ICJ+Mi41
LjIiLAorICAgICJqYXNtaW5lLXNwZWMtcmVwb3J0ZXIiOiAifjMuMi4wIiwKKyAgICAia2FybWEi
OiAifjEuNC4xIiwKKyAgICAia2FybWEtY2hyb21lLWxhdW5jaGVyIjogIn4yLjAuMCIsCisgICAg
Imthcm1hLWNsaSI6ICJ+MS4wLjEiLAorICAgICJrYXJtYS1qYXNtaW5lIjogIn4xLjEuMCIsCisg
ICAgImthcm1hLWphc21pbmUtaHRtbC1yZXBvcnRlciI6ICJeMC4yLjIiLAorICAgICJrYXJtYS1j
b3ZlcmFnZS1pc3RhbmJ1bC1yZXBvcnRlciI6ICJeMC4yLjAiLAorICAgICJwcm90cmFjdG9yIjog
In41LjEuMCIsCisgICAgInRzLW5vZGUiOiAifjIuMC4wIiwKKyAgICAidHNsaW50IjogIn40LjUu
MCIsCisgICAgInR5cGVzY3JpcHQiOiAifjIuMi4wIgorICB9Cit9CmRpZmYgLS1naXQgYS9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9hbmd1bGFyL3Byb3RyYWN0b3IuY29uZi5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIv
cHJvdHJhY3Rvci5jb25mLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFjNWUxZTVhNDRlYTQ4ODcwNDM0NDBmMmM2
Y2FlM2U3Zjc5N2NiNmQKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL3By
b3RyYWN0b3IuY29uZi5qcwpAQCAtMCwwICsxLDMwIEBACisvLyBQcm90cmFjdG9yIGNvbmZpZ3Vy
YXRpb24gZmlsZSwgc2VlIGxpbmsgZm9yIG1vcmUgaW5mb3JtYXRpb24KKy8vIGh0dHBzOi8vZ2l0
aHViLmNvbS9hbmd1bGFyL3Byb3RyYWN0b3IvYmxvYi9tYXN0ZXIvbGliL2NvbmZpZy50cworCitj
b25zdCB7IFNwZWNSZXBvcnRlciB9ID0gcmVxdWlyZSgnamFzbWluZS1zcGVjLXJlcG9ydGVyJyk7
CisKK2V4cG9ydHMuY29uZmlnID0geworICBhbGxTY3JpcHRzVGltZW91dDogMTEwMDAsCisgIHNw
ZWNzOiBbCisgICAgJy4vZTJlLyoqLyouZTJlLXNwZWMudHMnCisgIF0sCisgIGNhcGFiaWxpdGll
czogeworICAgICdicm93c2VyTmFtZSc6ICdjaHJvbWUnCisgIH0sCisgIGRpcmVjdENvbm5lY3Q6
IHRydWUsCisgIGJhc2VVcmw6ICdodHRwOi8vbG9jYWxob3N0OjQyMDAvJywKKyAgZnJhbWV3b3Jr
OiAnamFzbWluZScsCisgIGphc21pbmVOb2RlT3B0czogeworICAgIHNob3dDb2xvcnM6IHRydWUs
CisgICAgZGVmYXVsdFRpbWVvdXRJbnRlcnZhbDogMzAwMDAsCisgICAgcHJpbnQ6IGZ1bmN0aW9u
KCkge30KKyAgfSwKKyAgYmVmb3JlTGF1bmNoOiBmdW5jdGlvbigpIHsKKyAgICByZXF1aXJlKCd0
cy1ub2RlJykucmVnaXN0ZXIoeworICAgICAgcHJvamVjdDogJ2UyZS90c2NvbmZpZy5lMmUuanNv
bicKKyAgICB9KTsKKyAgfSwKKyAgb25QcmVwYXJlKCkgeworICAgIGphc21pbmUuZ2V0RW52KCku
YWRkUmVwb3J0ZXIobmV3IFNwZWNSZXBvcnRlcih7IHNwZWM6IHsgZGlzcGxheVN0YWNrdHJhY2U6
IHRydWUgfSB9KSk7CisgIH0KK307CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL3Ny
Yy9hcHAvYXBwLmNvbXBvbmVudC5jc3MgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL3NyYy9hcHAvYXBw
LmNvbXBvbmVudC5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTY5ZGUyOWJiMmQxZDY0MzRiOGIyOWFlNzc1YWQ4
YzJlNDhjNTM5MQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9zcmMvYXBwL2FwcC5j
b21wb25lbnQuaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvc3JjL2FwcC9hcHAuY29tcG9uZW50
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOWE1YTU2ODczMjVkYmM3Mjc1YTc0YzAyYmZlODAxODQ0M2E2Yjdj
YgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvc3JjL2FwcC9hcHAuY29t
cG9uZW50Lmh0bWwKQEAgLTAsMCArMSwyMCBAQAorPHNlY3Rpb24gY2xhc3M9InRvZG9hcHAiPgor
ICA8aGVhZGVyIGNsYXNzPSJoZWFkZXIiPgorICAgIDxoMT5Ub2RvczwvaDE+CisgICAgPGlucHV0
IGNsYXNzPSJuZXctdG9kbyIgcGxhY2Vob2xkZXI9IldoYXQgbmVlZHMgdG8gYmUgZG9uZT8iIGF1
dG9mb2N1cz0iIiBbKG5nTW9kZWwpXT0ibmV3VG9kby50aXRsZSIgKGtleXVwLmVudGVyKT0iYWRk
VG9kbygpIj4KKyAgPC9oZWFkZXI+CisgIDxzZWN0aW9uIGNsYXNzPSJtYWluIiAqbmdJZj0idG9k
b3MubGVuZ3RoID4gMCI+CisgICAgPHVsIGNsYXNzPSJ0b2RvLWxpc3QiPgorICAgICAgPGxpICpu
Z0Zvcj0ibGV0IHRvZG8gb2YgdG9kb3MiIFtjbGFzcy5jb21wbGV0ZWRdPSJ0b2RvLmNvbXBsZXRl
Ij4KKyAgICAgICAgPGRpdiBjbGFzcz0idmlldyI+CisgICAgICAgICAgPGlucHV0IGNsYXNzPSJ0
b2dnbGUiIHR5cGU9ImNoZWNrYm94IiAoY2xpY2spPSJ0b2dnbGVUb2RvQ29tcGxldGUodG9kbyki
IFtjaGVja2VkXT0idG9kby5jb21wbGV0ZSI+CisgICAgICAgICAgPGxhYmVsPnt7dG9kby50aXRs
ZX19PC9sYWJlbD4KKyAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJkZXN0cm95IiAoY2xpY2spPSJy
ZW1vdmVUb2RvKHRvZG8pIj48L2J1dHRvbj4KKyAgICAgICAgPC9kaXY+CisgICAgICA8L2xpPgor
ICAgIDwvdWw+CisgIDwvc2VjdGlvbj4KKyAgPGZvb3RlciBjbGFzcz0iZm9vdGVyIiAqbmdJZj0i
dG9kb3MubGVuZ3RoID4gMCI+CisgICAgPHNwYW4gY2xhc3M9InRvZG8tY291bnQiPjxzdHJvbmc+
e3t0b2Rvcy5sZW5ndGh9fTwvc3Ryb25nPiB7e3RvZG9zLmxlbmd0aCA9PSAxID8gJ2l0ZW0nIDog
J2l0ZW1zJ319IGxlZnQ8L3NwYW4+CisgIDwvZm9vdGVyPgorPC9zZWN0aW9uPgpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvc3JjL2Fw
cC9hcHAuY29tcG9uZW50LnNwZWMudHMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL3NyYy9hcHAvYXBw
LmNvbXBvbmVudC5zcGVjLnRzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE4ZTk1MjVlOWQzMDc3Y2Y3YjczMWY5Njgz
ZGI5YTAzZDQzYjQ4ZTYKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL3Ny
Yy9hcHAvYXBwLmNvbXBvbmVudC5zcGVjLnRzCkBAIC0wLDAgKzEsMzggQEAKKy8qIHRzbGludDpk
aXNhYmxlOm5vLXVudXNlZC12YXJpYWJsZSAqLworCitpbXBvcnQgeyBUZXN0QmVkLCBhc3luYyB9
IGZyb20gJ0Bhbmd1bGFyL2NvcmUvdGVzdGluZyc7CitpbXBvcnQgeyBBcHBDb21wb25lbnQgfSBm
cm9tICcuL2FwcC5jb21wb25lbnQnOworaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5n
dWxhci9mb3Jtcyc7CitpbXBvcnQgeyBUb2RvIH0gZnJvbSAnLi90b2RvJzsKKworZGVzY3JpYmUo
J0FwcENvbXBvbmVudCcsICgpID0+IHsKKyAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgVGVzdEJl
ZC5jb25maWd1cmVUZXN0aW5nTW9kdWxlKHsKKyAgICAgIGltcG9ydHM6IFsKKyAgICAgICAgRm9y
bXNNb2R1bGUKKyAgICAgIF0sCisgICAgICBkZWNsYXJhdGlvbnM6IFsKKyAgICAgICAgQXBwQ29t
cG9uZW50CisgICAgICBdLAorICAgIH0pOworICB9KTsKKworICBpdCgnc2hvdWxkIGNyZWF0ZSB0
aGUgYXBwJywgYXN5bmMoKCkgPT4geworICAgIGxldCBmaXh0dXJlID0gVGVzdEJlZC5jcmVhdGVD
b21wb25lbnQoQXBwQ29tcG9uZW50KTsKKyAgICBsZXQgYXBwID0gZml4dHVyZS5kZWJ1Z0VsZW1l
bnQuY29tcG9uZW50SW5zdGFuY2U7CisgICAgZXhwZWN0KGFwcCkudG9CZVRydXRoeSgpOworICB9
KSk7CisKKyAgaXQoYHNob3VsZCBoYXZlIGEgbmV3VG9kbyB0b2RvYCwgYXN5bmMoKCkgPT4gewor
ICAgIGxldCBmaXh0dXJlID0gVGVzdEJlZC5jcmVhdGVDb21wb25lbnQoQXBwQ29tcG9uZW50KTsK
KyAgICBsZXQgYXBwID0gZml4dHVyZS5kZWJ1Z0VsZW1lbnQuY29tcG9uZW50SW5zdGFuY2U7Cisg
ICAgZXhwZWN0KGFwcC5uZXdUb2RvIGluc3RhbmNlb2YgVG9kbykudG9CZVRydXRoeSgpCisgIH0p
KTsKKworICBpdCgnc2hvdWxkIGRpc3BsYXkgIlRvZG9zIiBpbiBoMSB0YWcnLCBhc3luYygoKSA9
PiB7CisgICAgbGV0IGZpeHR1cmUgPSBUZXN0QmVkLmNyZWF0ZUNvbXBvbmVudChBcHBDb21wb25l
bnQpOworICAgIGZpeHR1cmUuZGV0ZWN0Q2hhbmdlcygpOworICAgIGxldCBjb21waWxlZCA9IGZp
eHR1cmUuZGVidWdFbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7CisgICAgZXhwZWN0KGNvbXBpbGVkLnF1
ZXJ5U2VsZWN0b3IoJ2gxJykudGV4dENvbnRlbnQpLnRvQ29udGFpbignVG9kb3MnKTsKKyAgfSkp
OworfSk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL3NyYy9hcHAvYXBwLmNvbXBv
bmVudC50cyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvc3JjL2FwcC9hcHAuY29tcG9uZW50LnRzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjY4YTE5ZTZkZGQxZjBkMDk3OTRmNjU0MTdiYTY5NTdmYTdkMWU2NmUKLS0tIC9k
ZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL3NyYy9hcHAvYXBwLmNvbXBvbmVudC50
cwpAQCAtMCwwICsxLDM1IEBACitpbXBvcnQge0NvbXBvbmVudH0gZnJvbSAnQGFuZ3VsYXIvY29y
ZSc7CitpbXBvcnQge1RvZG99IGZyb20gJy4vdG9kbyc7CitpbXBvcnQge1RvZG9EYXRhU2Vydmlj
ZX0gZnJvbSAnLi90b2RvLWRhdGEuc2VydmljZSc7CisKK0BDb21wb25lbnQoeworICBzZWxlY3Rv
cjogJ2FwcC1yb290JywKKyAgdGVtcGxhdGVVcmw6ICcuL2FwcC5jb21wb25lbnQuaHRtbCcsCisg
IHN0eWxlVXJsczogWycuL2FwcC5jb21wb25lbnQuY3NzJ10sCisgIHByb3ZpZGVyczogW1RvZG9E
YXRhU2VydmljZV0KK30pCitleHBvcnQgY2xhc3MgQXBwQ29tcG9uZW50IHsKKworICBuZXdUb2Rv
OiBUb2RvID0gbmV3IFRvZG8oKTsKKworICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRvZG9EYXRhU2Vy
dmljZTogVG9kb0RhdGFTZXJ2aWNlKSB7CisgIH0KKworICBhZGRUb2RvKCkgeworICAgIHRoaXMu
dG9kb0RhdGFTZXJ2aWNlLmFkZFRvZG8odGhpcy5uZXdUb2RvKTsKKyAgICB0aGlzLm5ld1RvZG8g
PSBuZXcgVG9kbygpOworICB9CisKKyAgdG9nZ2xlVG9kb0NvbXBsZXRlKHRvZG8pIHsKKyAgICB0
aGlzLnRvZG9EYXRhU2VydmljZS50b2dnbGVUb2RvQ29tcGxldGUodG9kbyk7CisgIH0KKworICBy
ZW1vdmVUb2RvKHRvZG8pIHsKKyAgICB0aGlzLnRvZG9EYXRhU2VydmljZS5kZWxldGVUb2RvQnlJ
ZCh0b2RvLmlkKTsKKyAgfQorCisgIGdldCB0b2RvcygpIHsKKyAgICByZXR1cm4gdGhpcy50b2Rv
RGF0YVNlcnZpY2UuZ2V0QWxsVG9kb3MoKTsKKyAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9zcmMvYXBwL2FwcC5tb2R1
bGUudHMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL3NyYy9hcHAvYXBwLm1vZHVsZS50cwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42N2FlNDkxMTliYWE2MzJkM2M5MmE3NDM2NGVkZGI2YTMyY2JkZDhlCi0tLSAvZGV2L251
bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9zcmMvYXBwL2FwcC5tb2R1bGUudHMKQEAgLTAs
MCArMSwyMCBAQAoraW1wb3J0IHsgQnJvd3Nlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRm
b3JtLWJyb3dzZXInOworaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJzsK
K2ltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnOworaW1wb3J0IHsg
SHR0cE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2h0dHAnOworCitpbXBvcnQgeyBBcHBDb21wb25l
bnQgfSBmcm9tICcuL2FwcC5jb21wb25lbnQnOworCitATmdNb2R1bGUoeworICBkZWNsYXJhdGlv
bnM6IFsKKyAgICBBcHBDb21wb25lbnQKKyAgXSwKKyAgaW1wb3J0czogWworICAgIEJyb3dzZXJN
b2R1bGUsCisgICAgRm9ybXNNb2R1bGUsCisgICAgSHR0cE1vZHVsZQorICBdLAorICBwcm92aWRl
cnM6IFtdLAorICBib290c3RyYXA6IFtBcHBDb21wb25lbnRdCit9KQorZXhwb3J0IGNsYXNzIEFw
cE1vZHVsZSB7IH0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvc3JjL2FwcC90b2Rv
LWRhdGEuc2VydmljZS5zcGVjLnRzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9zcmMvYXBwL3RvZG8t
ZGF0YS5zZXJ2aWNlLnNwZWMudHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWExNWRiOWI1YmE5YjYxZmNlNjBjODU1
OTAxY2FiNzc5NDhhYmU4ZAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIv
c3JjL2FwcC90b2RvLWRhdGEuc2VydmljZS5zcGVjLnRzCkBAIC0wLDAgKzEsMTA2IEBACitpbXBv
cnQge1Rlc3RCZWQsIGFzeW5jLCBpbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvdGVzdGluZyc7
CitpbXBvcnQge1RvZG99IGZyb20gJy4vdG9kbyc7CitpbXBvcnQge1RvZG9EYXRhU2VydmljZX0g
ZnJvbSAnLi90b2RvLWRhdGEuc2VydmljZSc7CisKK2Rlc2NyaWJlKCdUb2RvRGF0YVNlcnZpY2Un
LCAoKSA9PiB7CisgIGJlZm9yZUVhY2goKCkgPT4geworICAgIFRlc3RCZWQuY29uZmlndXJlVGVz
dGluZ01vZHVsZSh7CisgICAgICBwcm92aWRlcnM6IFtUb2RvRGF0YVNlcnZpY2VdCisgICAgfSk7
CisgIH0pOworCisgIGl0KCdzaG91bGQgLi4uJywgaW5qZWN0KFtUb2RvRGF0YVNlcnZpY2VdLCAo
c2VydmljZTogVG9kb0RhdGFTZXJ2aWNlKSA9PiB7CisgICAgZXhwZWN0KHNlcnZpY2UpLnRvQmVU
cnV0aHkoKTsKKyAgfSkpOworCisgIGRlc2NyaWJlKCcjZ2V0QWxsVG9kb3MoKScsICgpID0+IHsK
KworICAgIGl0KCdzaG91bGQgcmV0dXJuIGFuIGVtcHR5IGFycmF5IGJ5IGRlZmF1bHQnLCBpbmpl
Y3QoW1RvZG9EYXRhU2VydmljZV0sIChzZXJ2aWNlOiBUb2RvRGF0YVNlcnZpY2UpID0+IHsKKyAg
ICAgIGV4cGVjdChzZXJ2aWNlLmdldEFsbFRvZG9zKCkpLnRvRXF1YWwoW10pOworICAgIH0pKTsK
KworICAgIGl0KCdzaG91bGQgcmV0dXJuIGFsbCB0b2RvcycsIGluamVjdChbVG9kb0RhdGFTZXJ2
aWNlXSwgKHNlcnZpY2U6IFRvZG9EYXRhU2VydmljZSkgPT4geworICAgICAgbGV0IHRvZG8xID0g
bmV3IFRvZG8oe3RpdGxlOiAnSGVsbG8gMScsIGNvbXBsZXRlOiBmYWxzZX0pOworICAgICAgbGV0
IHRvZG8yID0gbmV3IFRvZG8oe3RpdGxlOiAnSGVsbG8gMicsIGNvbXBsZXRlOiB0cnVlfSk7Cisg
ICAgICBzZXJ2aWNlLmFkZFRvZG8odG9kbzEpOworICAgICAgc2VydmljZS5hZGRUb2RvKHRvZG8y
KTsKKyAgICAgIGV4cGVjdChzZXJ2aWNlLmdldEFsbFRvZG9zKCkpLnRvRXF1YWwoW3RvZG8xLCB0
b2RvMl0pOworICAgIH0pKTsKKworICB9KTsKKworICBkZXNjcmliZSgnI3NhdmUodG9kbyknLCAo
KSA9PiB7CisKKyAgICBpdCgnc2hvdWxkIGF1dG9tYXRpY2FsbHkgYXNzaWduIGFuIGluY3JlbWVu
dGluZyBpZCcsIGluamVjdChbVG9kb0RhdGFTZXJ2aWNlXSwgKHNlcnZpY2U6IFRvZG9EYXRhU2Vy
dmljZSkgPT4geworICAgICAgbGV0IHRvZG8xID0gbmV3IFRvZG8oe3RpdGxlOiAnSGVsbG8gMScs
IGNvbXBsZXRlOiBmYWxzZX0pOworICAgICAgbGV0IHRvZG8yID0gbmV3IFRvZG8oe3RpdGxlOiAn
SGVsbG8gMicsIGNvbXBsZXRlOiB0cnVlfSk7CisgICAgICBzZXJ2aWNlLmFkZFRvZG8odG9kbzEp
OworICAgICAgc2VydmljZS5hZGRUb2RvKHRvZG8yKTsKKyAgICAgIGV4cGVjdChzZXJ2aWNlLmdl
dFRvZG9CeUlkKDEpKS50b0VxdWFsKHRvZG8xKTsKKyAgICAgIGV4cGVjdChzZXJ2aWNlLmdldFRv
ZG9CeUlkKDIpKS50b0VxdWFsKHRvZG8yKTsKKyAgICB9KSk7CisKKyAgfSk7CisKKyAgZGVzY3Jp
YmUoJyNkZWxldGVUb2RvQnlJZChpZCknLCAoKSA9PiB7CisKKyAgICBpdCgnc2hvdWxkIHJlbW92
ZSB0b2RvIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgaWQnLCBpbmplY3QoW1RvZG9EYXRhU2Vydmlj
ZV0sIChzZXJ2aWNlOiBUb2RvRGF0YVNlcnZpY2UpID0+IHsKKyAgICAgIGxldCB0b2RvMSA9IG5l
dyBUb2RvKHt0aXRsZTogJ0hlbGxvIDEnLCBjb21wbGV0ZTogZmFsc2V9KTsKKyAgICAgIGxldCB0
b2RvMiA9IG5ldyBUb2RvKHt0aXRsZTogJ0hlbGxvIDInLCBjb21wbGV0ZTogdHJ1ZX0pOworICAg
ICAgc2VydmljZS5hZGRUb2RvKHRvZG8xKTsKKyAgICAgIHNlcnZpY2UuYWRkVG9kbyh0b2RvMik7
CisgICAgICBleHBlY3Qoc2VydmljZS5nZXRBbGxUb2RvcygpKS50b0VxdWFsKFt0b2RvMSwgdG9k
bzJdKTsKKyAgICAgIHNlcnZpY2UuZGVsZXRlVG9kb0J5SWQoMSk7CisgICAgICBleHBlY3Qoc2Vy
dmljZS5nZXRBbGxUb2RvcygpKS50b0VxdWFsKFt0b2RvMl0pOworICAgICAgc2VydmljZS5kZWxl
dGVUb2RvQnlJZCgyKTsKKyAgICAgIGV4cGVjdChzZXJ2aWNlLmdldEFsbFRvZG9zKCkpLnRvRXF1
YWwoW10pOworICAgIH0pKTsKKworICAgIGl0KCdzaG91bGQgbm90IHJlbW92aW5nIGFueXRoaW5n
IGlmIHRvZG8gd2l0aCBjb3JyZXNwb25kaW5nIGlkIGlzIG5vdCBmb3VuZCcsIGluamVjdChbVG9k
b0RhdGFTZXJ2aWNlXSwgKHNlcnZpY2U6IFRvZG9EYXRhU2VydmljZSkgPT4geworICAgICAgbGV0
IHRvZG8xID0gbmV3IFRvZG8oe3RpdGxlOiAnSGVsbG8gMScsIGNvbXBsZXRlOiBmYWxzZX0pOwor
ICAgICAgbGV0IHRvZG8yID0gbmV3IFRvZG8oe3RpdGxlOiAnSGVsbG8gMicsIGNvbXBsZXRlOiB0
cnVlfSk7CisgICAgICBzZXJ2aWNlLmFkZFRvZG8odG9kbzEpOworICAgICAgc2VydmljZS5hZGRU
b2RvKHRvZG8yKTsKKyAgICAgIGV4cGVjdChzZXJ2aWNlLmdldEFsbFRvZG9zKCkpLnRvRXF1YWwo
W3RvZG8xLCB0b2RvMl0pOworICAgICAgc2VydmljZS5kZWxldGVUb2RvQnlJZCgzKTsKKyAgICAg
IGV4cGVjdChzZXJ2aWNlLmdldEFsbFRvZG9zKCkpLnRvRXF1YWwoW3RvZG8xLCB0b2RvMl0pOwor
ICAgIH0pKTsKKworICB9KTsKKworICBkZXNjcmliZSgnI3VwZGF0ZVRvZG9CeUlkKGlkLCB2YWx1
ZXMpJywgKCkgPT4geworCisgICAgaXQoJ3Nob3VsZCByZXR1cm4gdG9kbyB3aXRoIHRoZSBjb3Jy
ZXNwb25kaW5nIGlkIGFuZCB1cGRhdGVkIGRhdGEnLCBpbmplY3QoW1RvZG9EYXRhU2VydmljZV0s
IChzZXJ2aWNlOiBUb2RvRGF0YVNlcnZpY2UpID0+IHsKKyAgICAgIGxldCB0b2RvID0gbmV3IFRv
ZG8oe3RpdGxlOiAnSGVsbG8gMScsIGNvbXBsZXRlOiBmYWxzZX0pOworICAgICAgc2VydmljZS5h
ZGRUb2RvKHRvZG8pOworICAgICAgbGV0IHVwZGF0ZWRUb2RvID0gc2VydmljZS51cGRhdGVUb2Rv
QnlJZCgxLCB7CisgICAgICAgIHRpdGxlOiAnbmV3IHRpdGxlJworICAgICAgfSk7CisgICAgICBl
eHBlY3QodXBkYXRlZFRvZG8udGl0bGUpLnRvRXF1YWwoJ25ldyB0aXRsZScpOworICAgIH0pKTsK
KworICAgIGl0KCdzaG91bGQgcmV0dXJuIG51bGwgaWYgdG9kbyBpcyBub3QgZm91bmQnLCBpbmpl
Y3QoW1RvZG9EYXRhU2VydmljZV0sIChzZXJ2aWNlOiBUb2RvRGF0YVNlcnZpY2UpID0+IHsKKyAg
ICAgIGxldCB0b2RvID0gbmV3IFRvZG8oe3RpdGxlOiAnSGVsbG8gMScsIGNvbXBsZXRlOiBmYWxz
ZX0pOworICAgICAgc2VydmljZS5hZGRUb2RvKHRvZG8pOworICAgICAgbGV0IHVwZGF0ZWRUb2Rv
ID0gc2VydmljZS51cGRhdGVUb2RvQnlJZCgyLCB7CisgICAgICAgIHRpdGxlOiAnbmV3IHRpdGxl
JworICAgICAgfSk7CisgICAgICBleHBlY3QodXBkYXRlZFRvZG8pLnRvRXF1YWwobnVsbCk7Cisg
ICAgfSkpOworCisgIH0pOworCisgIGRlc2NyaWJlKCcjdG9nZ2xlVG9kb0NvbXBsZXRlKHRvZG8p
JywgKCkgPT4geworCisgICAgaXQoJ3Nob3VsZCByZXR1cm4gdGhlIHVwZGF0ZWQgdG9kbyB3aXRo
IGludmVyc2UgY29tcGxldGUgc3RhdHVzJywgaW5qZWN0KFtUb2RvRGF0YVNlcnZpY2VdLCAoc2Vy
dmljZTogVG9kb0RhdGFTZXJ2aWNlKSA9PiB7CisgICAgICBsZXQgdG9kbyA9IG5ldyBUb2RvKHt0
aXRsZTogJ0hlbGxvIDEnLCBjb21wbGV0ZTogZmFsc2V9KTsKKyAgICAgIHNlcnZpY2UuYWRkVG9k
byh0b2RvKTsKKyAgICAgIGxldCB1cGRhdGVkVG9kbyA9IHNlcnZpY2UudG9nZ2xlVG9kb0NvbXBs
ZXRlKHRvZG8pOworICAgICAgZXhwZWN0KHVwZGF0ZWRUb2RvLmNvbXBsZXRlKS50b0VxdWFsKHRy
dWUpOworICAgICAgc2VydmljZS50b2dnbGVUb2RvQ29tcGxldGUodG9kbyk7CisgICAgICBleHBl
Y3QodXBkYXRlZFRvZG8uY29tcGxldGUpLnRvRXF1YWwoZmFsc2UpOworICAgIH0pKTsKKworICB9
KTsKKworfSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvYW5ndWxhci9zcmMvYXBwL3RvZG8tZGF0YS5zZXJ2aWNlLnRzIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
YW5ndWxhci9zcmMvYXBwL3RvZG8tZGF0YS5zZXJ2aWNlLnRzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUwOWUzN2Q1
ZDQ2NjUzYjQ5YmJiZWJhM2QxNDUxYzZlOWYzOTVjNzkKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9hbmd1bGFyL3NyYy9hcHAvdG9kby1kYXRhLnNlcnZpY2UudHMKQEAgLTAsMCArMSw2
MyBAQAoraW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJzsKK2ltcG9ydCB7
VG9kb30gZnJvbSAnLi90b2RvJzsKKworQEluamVjdGFibGUoKQorZXhwb3J0IGNsYXNzIFRvZG9E
YXRhU2VydmljZSB7CisKKyAgLy8gUGxhY2Vob2xkZXIgZm9yIGxhc3QgaWQgc28gd2UgY2FuIHNp
bXVsYXRlCisgIC8vIGF1dG9tYXRpYyBpbmNyZW1lbnRpbmcgb2YgaWQncworICBsYXN0SWQ6IG51
bWJlciA9IDA7CisKKyAgLy8gUGxhY2Vob2xkZXIgZm9yIHRvZG8ncworICB0b2RvczogVG9kb1td
ID0gW107CisKKyAgY29uc3RydWN0b3IoKSB7CisgIH0KKworICAvLyBTaW11bGF0ZSBQT1NUIC90
b2RvcworICBhZGRUb2RvKHRvZG86IFRvZG8pOiBUb2RvRGF0YVNlcnZpY2UgeworICAgIGlmICgh
dG9kby5pZCkgeworICAgICAgdG9kby5pZCA9ICsrdGhpcy5sYXN0SWQ7CisgICAgfQorICAgIHRo
aXMudG9kb3MucHVzaCh0b2RvKTsKKyAgICByZXR1cm4gdGhpczsKKyAgfQorCisgIC8vIFNpbXVs
YXRlIERFTEVURSAvdG9kb3MvOmlkCisgIGRlbGV0ZVRvZG9CeUlkKGlkOiBudW1iZXIpOiBUb2Rv
RGF0YVNlcnZpY2UgeworICAgIHRoaXMudG9kb3MgPSB0aGlzLnRvZG9zCisgICAgICAuZmlsdGVy
KHRvZG8gPT4gdG9kby5pZCAhPT0gaWQpOworICAgIHJldHVybiB0aGlzOworICB9CisKKyAgLy8g
U2ltdWxhdGUgUFVUIC90b2Rvcy86aWQKKyAgdXBkYXRlVG9kb0J5SWQoaWQ6IG51bWJlciwgdmFs
dWVzOiBPYmplY3QgPSB7fSk6IFRvZG8geworICAgIGxldCB0b2RvID0gdGhpcy5nZXRUb2RvQnlJ
ZChpZCk7CisgICAgaWYgKCF0b2RvKSB7CisgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisgICAg
T2JqZWN0LmFzc2lnbih0b2RvLCB2YWx1ZXMpOworICAgIHJldHVybiB0b2RvOworICB9CisKKyAg
Ly8gU2ltdWxhdGUgR0VUIC90b2RvcworICBnZXRBbGxUb2RvcygpOiBUb2RvW10geworICAgIHJl
dHVybiB0aGlzLnRvZG9zOworICB9CisKKyAgLy8gU2ltdWxhdGUgR0VUIC90b2Rvcy86aWQKKyAg
Z2V0VG9kb0J5SWQoaWQ6IG51bWJlcik6IFRvZG8geworICAgIHJldHVybiB0aGlzLnRvZG9zCisg
ICAgICAuZmlsdGVyKHRvZG8gPT4gdG9kby5pZCA9PT0gaWQpCisgICAgICAucG9wKCk7CisgIH0K
KworICAvLyBUb2dnbGUgdG9kbyBjb21wbGV0ZQorICB0b2dnbGVUb2RvQ29tcGxldGUodG9kbzog
VG9kbyl7CisgICAgbGV0IHVwZGF0ZWRUb2RvID0gdGhpcy51cGRhdGVUb2RvQnlJZCh0b2RvLmlk
LCB7CisgICAgICBjb21wbGV0ZTogIXRvZG8uY29tcGxldGUKKyAgICB9KTsKKyAgICByZXR1cm4g
dXBkYXRlZFRvZG87CisgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvc3JjL2FwcC90b2RvLnNwZWMudHMgYi9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9hbmd1bGFyL3NyYy9hcHAvdG9kby5zcGVjLnRzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVhNTRhZGQzNDgy
Yzg3MzRlZTk2NWE0M2EyMTExOGY2NjNhZmQzOTgKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9hbmd1bGFyL3NyYy9hcHAvdG9kby5zcGVjLnRzCkBAIC0wLDAgKzEsMTYgQEAKK2ltcG9y
dCB7VG9kb30gZnJvbSAnLi90b2RvJzsKKworZGVzY3JpYmUoJ1RvZG8nLCAoKSA9PiB7CisgIGl0
KCdzaG91bGQgY3JlYXRlIGFuIGluc3RhbmNlJywgKCkgPT4geworICAgIGV4cGVjdChuZXcgVG9k
bygpKS50b0JlVHJ1dGh5KCk7CisgIH0pOworCisgIGl0KCdzaG91bGQgYWNjZXB0IHZhbHVlcyBp
biB0aGUgY29uc3RydWN0b3InLCAoKSA9PiB7CisgICAgbGV0IHRvZG8gPSBuZXcgVG9kbyh7Cisg
ICAgICB0aXRsZTogJ2hlbGxvJywKKyAgICAgIGNvbXBsZXRlOiB0cnVlCisgICAgfSk7CisgICAg
ZXhwZWN0KHRvZG8udGl0bGUpLnRvRXF1YWwoJ2hlbGxvJyk7CisgICAgZXhwZWN0KHRvZG8uY29t
cGxldGUpLnRvRXF1YWwodHJ1ZSk7CisgIH0pOworfSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9zcmMvYXBwL3RvZG8udHMgYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9hbmd1bGFyL3NyYy9hcHAvdG9kby50cwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMWQwYTc2OGI3
Nzk4NGI5NzM1OTM3NDA4ZTdiYjZjNjg1NDg3NzdkCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvYW5ndWxhci9zcmMvYXBwL3RvZG8udHMKQEAgLTAsMCArMSw5IEBACitleHBvcnQgY2xh
c3MgVG9kbyB7CisgIGlkOiBudW1iZXI7CisgIHRpdGxlOiBzdHJpbmcgPSAnJzsKKyAgY29tcGxl
dGU6IGJvb2xlYW4gPSBmYWxzZTsKKworICBjb25zdHJ1Y3Rvcih2YWx1ZXM6IE9iamVjdCA9IHt9
KSB7CisgICAgT2JqZWN0LmFzc2lnbih0aGlzLCB2YWx1ZXMpOworICB9Cit9ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9zcmMvYXNz
ZXRzLy5naXRrZWVwIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9zcmMvYXNzZXRzLy5naXRrZWVwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmU2OWRlMjliYjJkMWQ2NDM0YjhiMjlhZTc3NWFkOGMyZTQ4YzUzOTEKZGlmZiAt
LWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvc3JjL2Fzc2V0cy9jc3MvdG9kb212Yy1hcHAuY3Nz
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvYW5ndWxhci9zcmMvYXNzZXRzL2Nzcy90b2RvbXZjLWFwcC5jc3MKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTBlM2QyZjZiNzkzZDQyY2I0ZTIwYWVlYTQ4YTNiNWNlYjQ4NmVlNQotLS0gL2Rl
di9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvc3JjL2Fzc2V0cy9jc3MvdG9kb212Yy1h
cHAuY3NzCkBAIC0wLDAgKzEsMzcwIEBACitodG1sLAorYm9keSB7CisgICAgbWFyZ2luOiAwOwor
ICAgIHBhZGRpbmc6IDA7Cit9CisKK2J1dHRvbiB7CisgICAgbWFyZ2luOiAwOworICAgIHBhZGRp
bmc6IDA7CisgICAgYm9yZGVyOiAwOworICAgIGJhY2tncm91bmQ6IG5vbmU7CisgICAgZm9udC1z
aXplOiAxMDAlOworICAgIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsKKyAgICBmb250LWZhbWls
eTogaW5oZXJpdDsKKyAgICBmb250LXdlaWdodDogaW5oZXJpdDsKKyAgICBjb2xvcjogaW5oZXJp
dDsKKyAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CisgICAgYXBwZWFyYW5jZTogbm9uZTsK
KyAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKKyAgICAtbW96LW9zeC1m
b250LXNtb290aGluZzogZ3JheXNjYWxlOworfQorCitib2R5IHsKKyAgICBmb250OiAxNHB4ICdI
ZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7CisgICAgbGluZS1o
ZWlnaHQ6IDEuNGVtOworICAgIGJhY2tncm91bmQ6ICNmNWY1ZjU7CisgICAgY29sb3I6ICM0ZDRk
NGQ7CisgICAgbWluLXdpZHRoOiAyMzBweDsKKyAgICBtYXgtd2lkdGg6IDU1MHB4OworICAgIG1h
cmdpbjogMCBhdXRvOworICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwor
ICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7CisgICAgZm9udC13ZWlnaHQ6
IDMwMDsKK30KKworOmZvY3VzIHsKKyAgICBvdXRsaW5lOiAwOworfQorCisuaGlkZGVuIHsKKyAg
ICBkaXNwbGF5OiBub25lOworfQorCisudG9kb2FwcCB7CisgICAgYmFja2dyb3VuZDogI2ZmZjsK
KyAgICBtYXJnaW46IDEzMHB4IDAgNDBweCAwOworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAg
ICBib3gtc2hhZG93OiAwIDJweCA0cHggMCByZ2JhKDAsIDAsIDAsIDAuMiksCisgICAgICAgICAg
ICAgICAgMCAyNXB4IDUwcHggMCByZ2JhKDAsIDAsIDAsIDAuMSk7Cit9CisKKy50b2RvYXBwIGlu
cHV0Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsKKyAgICBmb250LXN0eWxlOiBpdGFsaWM7
CisgICAgZm9udC13ZWlnaHQ6IDMwMDsKKyAgICBjb2xvcjogI2U2ZTZlNjsKK30KKworLnRvZG9h
cHAgaW5wdXQ6Oi1tb3otcGxhY2Vob2xkZXIgeworICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKKyAg
ICBmb250LXdlaWdodDogMzAwOworICAgIGNvbG9yOiAjZTZlNmU2OworfQorCisudG9kb2FwcCBp
bnB1dDo6aW5wdXQtcGxhY2Vob2xkZXIgeworICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKKyAgICBm
b250LXdlaWdodDogMzAwOworICAgIGNvbG9yOiAjZTZlNmU2OworfQorCisudG9kb2FwcCBoMSB7
CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDogLTE1NXB4OworICAgIHdpZHRoOiAx
MDAlOworICAgIGZvbnQtc2l6ZTogMTAwcHg7CisgICAgZm9udC13ZWlnaHQ6IDEwMDsKKyAgICB0
ZXh0LWFsaWduOiBjZW50ZXI7CisgICAgY29sb3I6IHJnYmEoMTc1LCA0NywgNDcsIDAuMTUpOwor
ICAgIC13ZWJraXQtdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTsKKyAgICAtbW96
LXRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7CisgICAgdGV4dC1yZW5kZXJpbmc6
IG9wdGltaXplTGVnaWJpbGl0eTsKK30KKworLm5ldy10b2RvLAorLmVkaXQgeworICAgIHBvc2l0
aW9uOiByZWxhdGl2ZTsKKyAgICBtYXJnaW46IDA7CisgICAgd2lkdGg6IDEwMCU7CisgICAgZm9u
dC1zaXplOiAyNHB4OworICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0OworICAgIGZvbnQtd2VpZ2h0
OiBpbmhlcml0OworICAgIGxpbmUtaGVpZ2h0OiAxLjRlbTsKKyAgICBib3JkZXI6IDA7CisgICAg
Y29sb3I6IGluaGVyaXQ7CisgICAgcGFkZGluZzogNnB4OworICAgIGJvcmRlcjogMXB4IHNvbGlk
ICM5OTk7CisgICAgYm94LXNoYWRvdzogaW5zZXQgMCAtMXB4IDVweCAwIHJnYmEoMCwgMCwgMCwg
MC4yKTsKKyAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OworICAgIC13ZWJraXQtZm9udC1zbW9v
dGhpbmc6IGFudGlhbGlhc2VkOworICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2Nh
bGU7Cit9CisKKy5uZXctdG9kbyB7CisgICAgcGFkZGluZzogMTZweCAxNnB4IDE2cHggNjBweDsK
KyAgICBib3JkZXI6IG5vbmU7CisgICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjAwMyk7
CisgICAgYm94LXNoYWRvdzogaW5zZXQgMCAtMnB4IDFweCByZ2JhKDAsMCwwLDAuMDMpOworfQor
CisubWFpbiB7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgIHotaW5kZXg6IDI7CisgICAg
Ym9yZGVyLXRvcDogMXB4IHNvbGlkICNlNmU2ZTY7Cit9CisKK2xhYmVsW2Zvcj0ndG9nZ2xlLWFs
bCddIHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCisudG9nZ2xlLWFsbCB7CisgICAgcG9zaXRp
b246IGFic29sdXRlOworICAgIHRvcDogLTU1cHg7CisgICAgbGVmdDogLTEycHg7CisgICAgd2lk
dGg6IDYwcHg7CisgICAgaGVpZ2h0OiAzNHB4OworICAgIHRleHQtYWxpZ246IGNlbnRlcjsKKyAg
ICBib3JkZXI6IG5vbmU7IC8qIE1vYmlsZSBTYWZhcmkgKi8KK30KKworLnRvZ2dsZS1hbGw6YmVm
b3JlIHsKKyAgICBjb250ZW50OiAn4p2vJzsKKyAgICBmb250LXNpemU6IDIycHg7CisgICAgY29s
b3I6ICNlNmU2ZTY7CisgICAgcGFkZGluZzogMTBweCAyN3B4IDEwcHggMjdweDsKK30KKworLnRv
Z2dsZS1hbGw6Y2hlY2tlZDpiZWZvcmUgeworICAgIGNvbG9yOiAjNzM3MzczOworfQorCisudG9k
by1saXN0IHsKKyAgICBtYXJnaW46IDA7CisgICAgcGFkZGluZzogMDsKKyAgICBsaXN0LXN0eWxl
OiBub25lOworfQorCisudG9kby1saXN0IGxpIHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cisg
ICAgZm9udC1zaXplOiAyNHB4OworICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWRlZGVk
OworfQorCisudG9kby1saXN0IGxpOmxhc3QtY2hpbGQgeworICAgIGJvcmRlci1ib3R0b206IG5v
bmU7Cit9CisKKy50b2RvLWxpc3QgbGkuZWRpdGluZyB7CisgICAgYm9yZGVyLWJvdHRvbTogbm9u
ZTsKKyAgICBwYWRkaW5nOiAwOworfQorCisudG9kby1saXN0IGxpLmVkaXRpbmcgLmVkaXQgewor
ICAgIGRpc3BsYXk6IGJsb2NrOworICAgIHdpZHRoOiA1MDZweDsKKyAgICBwYWRkaW5nOiAxMnB4
IDE2cHg7CisgICAgbWFyZ2luOiAwIDAgMCA0M3B4OworfQorCisudG9kby1saXN0IGxpLmVkaXRp
bmcgLnZpZXcgeworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKKy50b2RvLWxpc3QgbGkgLnRvZ2ds
ZSB7CisgICAgdGV4dC1hbGlnbjogY2VudGVyOworICAgIHdpZHRoOiA0MHB4OworICAgIC8qIGF1
dG8sIHNpbmNlIG5vbi1XZWJLaXQgYnJvd3NlcnMgZG9lc24ndCBzdXBwb3J0IGlucHV0IHN0eWxp
bmcgKi8KKyAgICBoZWlnaHQ6IGF1dG87CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRv
cDogMDsKKyAgICBib3R0b206IDA7CisgICAgbWFyZ2luOiBhdXRvIDA7CisgICAgYm9yZGVyOiBu
b25lOyAvKiBNb2JpbGUgU2FmYXJpICovCisgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwor
ICAgIGFwcGVhcmFuY2U6IG5vbmU7Cit9CisKKy50b2RvLWxpc3QgbGkgLnRvZ2dsZTphZnRlciB7
CisgICAgY29udGVudDogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjQwIiBoZWlnaHQ9IjQwIiB2aWV3Qm94
PSItMTAgLTE4IDEwMCAxMzUiPjxjaXJjbGUgY3g9IjUwIiBjeT0iNTAiIHI9IjUwIiBmaWxsPSJu
b25lIiBzdHJva2U9IiNlZGVkZWQiIHN0cm9rZS13aWR0aD0iMyIvPjwvc3ZnPicpOworfQorCisu
dG9kby1saXN0IGxpIC50b2dnbGU6Y2hlY2tlZDphZnRlciB7CisgICAgY29udGVudDogdXJsKCdk
YXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgd2lkdGg9IjQwIiBoZWlnaHQ9IjQwIiB2aWV3Qm94PSItMTAgLTE4IDEwMCAxMzUiPjxj
aXJjbGUgY3g9IjUwIiBjeT0iNTAiIHI9IjUwIiBmaWxsPSJub25lIiBzdHJva2U9IiNiZGRhZDUi
IHN0cm9rZS13aWR0aD0iMyIvPjxwYXRoIGZpbGw9IiM1ZGMyYWYiIGQ9Ik03MiAyNUw0MiA3MSAy
NyA1NmwtNCA0IDIwIDIwIDM0LTUyeiIvPjwvc3ZnPicpOworfQorCisudG9kby1saXN0IGxpIGxh
YmVsIHsKKyAgICB3b3JkLWJyZWFrOiBicmVhay1hbGw7CisgICAgcGFkZGluZzogMTVweCA2MHB4
IDE1cHggMTVweDsKKyAgICBtYXJnaW4tbGVmdDogNDVweDsKKyAgICBkaXNwbGF5OiBibG9jazsK
KyAgICBsaW5lLWhlaWdodDogMS4yOworICAgIHRyYW5zaXRpb246IGNvbG9yIDAuNHM7Cit9CisK
Ky50b2RvLWxpc3QgbGkuY29tcGxldGVkIGxhYmVsIHsKKyAgICBjb2xvcjogI2Q5ZDlkOTsKKyAg
ICB0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDsKK30KKworLnRvZG8tbGlzdCBsaSAuZGVz
dHJveSB7CisgICAgZGlzcGxheTogbm9uZTsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAg
dG9wOiAwOworICAgIHJpZ2h0OiAxMHB4OworICAgIGJvdHRvbTogMDsKKyAgICB3aWR0aDogNDBw
eDsKKyAgICBoZWlnaHQ6IDQwcHg7CisgICAgbWFyZ2luOiBhdXRvIDA7CisgICAgZm9udC1zaXpl
OiAzMHB4OworICAgIGNvbG9yOiAjY2M5YTlhOworICAgIG1hcmdpbi1ib3R0b206IDExcHg7Cisg
ICAgdHJhbnNpdGlvbjogY29sb3IgMC4ycyBlYXNlLW91dDsKK30KKworLnRvZG8tbGlzdCBsaSAu
ZGVzdHJveTpob3ZlciB7CisgICAgY29sb3I6ICNhZjViNWU7Cit9CisKKy50b2RvLWxpc3QgbGkg
LmRlc3Ryb3k6YWZ0ZXIgeworICAgIGNvbnRlbnQ6ICfDlyc7Cit9CisKKy50b2RvLWxpc3QgbGk6
aG92ZXIgLmRlc3Ryb3kgeworICAgIGRpc3BsYXk6IGJsb2NrOworfQorCisudG9kby1saXN0IGxp
IC5lZGl0IHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCisudG9kby1saXN0IGxpLmVkaXRpbmc6
bGFzdC1jaGlsZCB7CisgICAgbWFyZ2luLWJvdHRvbTogLTFweDsKK30KKworLmZvb3RlciB7Cisg
ICAgY29sb3I6ICM3Nzc7CisgICAgcGFkZGluZzogMTBweCAxNXB4OworICAgIGhlaWdodDogMjBw
eDsKKyAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CisgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNl
NmU2ZTY7Cit9CisKKy5mb290ZXI6YmVmb3JlIHsKKyAgICBjb250ZW50OiAnJzsKKyAgICBwb3Np
dGlvbjogYWJzb2x1dGU7CisgICAgcmlnaHQ6IDA7CisgICAgYm90dG9tOiAwOworICAgIGxlZnQ6
IDA7CisgICAgaGVpZ2h0OiA1MHB4OworICAgIG92ZXJmbG93OiBoaWRkZW47CisgICAgYm94LXNo
YWRvdzogMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwKKyAgICAgICAgICAgICAgICAwIDhw
eCAwIC0zcHggI2Y2ZjZmNiwKKyAgICAgICAgICAgICAgICAwIDlweCAxcHggLTNweCByZ2JhKDAs
IDAsIDAsIDAuMiksCisgICAgICAgICAgICAgICAgMCAxNnB4IDAgLTZweCAjZjZmNmY2LAorICAg
ICAgICAgICAgICAgIDAgMTdweCAycHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMik7Cit9CisKKy50
b2RvLWNvdW50IHsKKyAgICBmbG9hdDogbGVmdDsKKyAgICB0ZXh0LWFsaWduOiBsZWZ0OworfQor
CisudG9kby1jb3VudCBzdHJvbmcgeworICAgIGZvbnQtd2VpZ2h0OiAzMDA7Cit9CisKKy5maWx0
ZXJzIHsKKyAgICBtYXJnaW46IDA7CisgICAgcGFkZGluZzogMDsKKyAgICBsaXN0LXN0eWxlOiBu
b25lOworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICByaWdodDogMDsKKyAgICBsZWZ0OiAw
OworfQorCisuZmlsdGVycyBsaSB7CisgICAgZGlzcGxheTogaW5saW5lOworfQorCisuZmlsdGVy
cyBsaSBhIHsKKyAgICBjb2xvcjogaW5oZXJpdDsKKyAgICBtYXJnaW46IDNweDsKKyAgICBwYWRk
aW5nOiAzcHggN3B4OworICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKKyAgICBib3JkZXI6IDFw
eCBzb2xpZCB0cmFuc3BhcmVudDsKKyAgICBib3JkZXItcmFkaXVzOiAzcHg7Cit9CisKKy5maWx0
ZXJzIGxpIGE6aG92ZXIgeworICAgIGJvcmRlci1jb2xvcjogcmdiYSgxNzUsIDQ3LCA0NywgMC4x
KTsKK30KKworLmZpbHRlcnMgbGkgYS5zZWxlY3RlZCB7CisgICAgYm9yZGVyLWNvbG9yOiByZ2Jh
KDE3NSwgNDcsIDQ3LCAwLjIpOworfQorCisuY2xlYXItY29tcGxldGVkLAoraHRtbCAuY2xlYXIt
Y29tcGxldGVkOmFjdGl2ZSB7CisgICAgZmxvYXQ6IHJpZ2h0OworICAgIHBvc2l0aW9uOiByZWxh
dGl2ZTsKKyAgICBsaW5lLWhlaWdodDogMjBweDsKKyAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7
CisgICAgY3Vyc29yOiBwb2ludGVyOworfQorCisuY2xlYXItY29tcGxldGVkOmhvdmVyIHsKKyAg
ICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKK30KKworLmluZm8geworICAgIG1hcmdpbjog
NjVweCBhdXRvIDA7CisgICAgY29sb3I6ICNiZmJmYmY7CisgICAgZm9udC1zaXplOiAxMHB4Owor
ICAgIHRleHQtc2hhZG93OiAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTsKKyAgICB0
ZXh0LWFsaWduOiBjZW50ZXI7Cit9CisKKy5pbmZvIHAgeworICAgIGxpbmUtaGVpZ2h0OiAxOwor
fQorCisuaW5mbyBhIHsKKyAgICBjb2xvcjogaW5oZXJpdDsKKyAgICB0ZXh0LWRlY29yYXRpb246
IG5vbmU7CisgICAgZm9udC13ZWlnaHQ6IDQwMDsKK30KKworLmluZm8gYTpob3ZlciB7CisgICAg
dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Cit9CisKKy8qCisgICAgSGFjayB0byByZW1vdmUg
YmFja2dyb3VuZCBmcm9tIE1vYmlsZSBTYWZhcmkuCisgICAgQ2FuJ3QgdXNlIGl0IGdsb2JhbGx5
IHNpbmNlIGl0IGRlc3Ryb3lzIGNoZWNrYm94ZXMgaW4gRmlyZWZveAorKi8KK0BtZWRpYSBzY3Jl
ZW4gYW5kICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86MCkgeworICAgIC50b2dnbGUt
YWxsLAorICAgIC50b2RvLWxpc3QgbGkgLnRvZ2dsZSB7CisgICAgICAgIGJhY2tncm91bmQ6IG5v
bmU7CisgICAgfQorCisgICAgLnRvZG8tbGlzdCBsaSAudG9nZ2xlIHsKKyAgICAgICAgaGVpZ2h0
OiA0MHB4OworICAgIH0KKworICAgIC50b2dnbGUtYWxsIHsKKyAgICAgICAgLXdlYmtpdC10cmFu
c2Zvcm06IHJvdGF0ZSg5MGRlZyk7CisgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsK
KyAgICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOworICAgICAgICBhcHBlYXJhbmNlOiBu
b25lOworICAgIH0KK30KKworQG1lZGlhIChtYXgtd2lkdGg6IDQzMHB4KSB7CisgICAgLmZvb3Rl
ciB7CisgICAgICAgIGhlaWdodDogNTBweDsKKyAgICB9CisKKyAgICAuZmlsdGVycyB7CisgICAg
ICAgIGJvdHRvbTogMTBweDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1
bGFyL3NyYy9hc3NldHMvY3NzL3RvZG9tdmMtY29tbW9uLmNzcyBiL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3Vs
YXIvc3JjL2Fzc2V0cy9jc3MvdG9kb212Yy1jb21tb24uY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMjVkM2M4
NGFjNmM2YWVmMjZiOTY4M2EyYmMxMGM2MWY5NjBjOGYKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9hbmd1bGFyL3NyYy9hc3NldHMvY3NzL3RvZG9tdmMtY29tbW9uLmNzcwpAQCAtMCww
ICsxLDE0MSBAQAoraHIgeworICAgIG1hcmdpbjogMjBweCAwOworICAgIGJvcmRlcjogMDsKKyAg
ICBib3JkZXItdG9wOiAxcHggZGFzaGVkICNjNWM1YzU7CisgICAgYm9yZGVyLWJvdHRvbTogMXB4
IGRhc2hlZCAjZjdmN2Y3OworfQorCisubGVhcm4gYSB7CisgICAgZm9udC13ZWlnaHQ6IG5vcm1h
bDsKKyAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CisgICAgY29sb3I6ICNiODNmNDU7Cit9CisK
Ky5sZWFybiBhOmhvdmVyIHsKKyAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKKyAgICBj
b2xvcjogIzc4N2U3ZTsKK30KKworLmxlYXJuIGgzLAorLmxlYXJuIGg0LAorLmxlYXJuIGg1IHsK
KyAgICBtYXJnaW46IDEwcHggMDsKKyAgICBmb250LXdlaWdodDogNTAwOworICAgIGxpbmUtaGVp
Z2h0OiAxLjI7CisgICAgY29sb3I6ICMwMDA7Cit9CisKKy5sZWFybiBoMyB7CisgICAgZm9udC1z
aXplOiAyNHB4OworfQorCisubGVhcm4gaDQgeworICAgIGZvbnQtc2l6ZTogMThweDsKK30KKwor
LmxlYXJuIGg1IHsKKyAgICBtYXJnaW4tYm90dG9tOiAwOworICAgIGZvbnQtc2l6ZTogMTRweDsK
K30KKworLmxlYXJuIHVsIHsKKyAgICBwYWRkaW5nOiAwOworICAgIG1hcmdpbjogMCAwIDMwcHgg
MjVweDsKK30KKworLmxlYXJuIGxpIHsKKyAgICBsaW5lLWhlaWdodDogMjBweDsKK30KKworLmxl
YXJuIHAgeworICAgIGZvbnQtc2l6ZTogMTVweDsKKyAgICBmb250LXdlaWdodDogMzAwOworICAg
IGxpbmUtaGVpZ2h0OiAxLjM7CisgICAgbWFyZ2luLXRvcDogMDsKKyAgICBtYXJnaW4tYm90dG9t
OiAwOworfQorCisjaXNzdWUtY291bnQgeworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKKy5xdW90
ZSB7CisgICAgYm9yZGVyOiBub25lOworICAgIG1hcmdpbjogMjBweCAwIDYwcHggMDsKK30KKwor
LnF1b3RlIHAgeworICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKK30KKworLnF1b3RlIHA6YmVmb3Jl
IHsKKyAgICBjb250ZW50OiAn4oCcJzsKKyAgICBmb250LXNpemU6IDUwcHg7CisgICAgb3BhY2l0
eTogLjE1OworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IC0yMHB4OworICAgIGxl
ZnQ6IDNweDsKK30KKworLnF1b3RlIHA6YWZ0ZXIgeworICAgIGNvbnRlbnQ6ICfigJ0nOworICAg
IGZvbnQtc2l6ZTogNTBweDsKKyAgICBvcGFjaXR5OiAuMTU7CisgICAgcG9zaXRpb246IGFic29s
dXRlOworICAgIGJvdHRvbTogLTQycHg7CisgICAgcmlnaHQ6IDNweDsKK30KKworLnF1b3RlIGZv
b3RlciB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIGJvdHRvbTogLTQwcHg7CisgICAg
cmlnaHQ6IDA7Cit9CisKKy5xdW90ZSBmb290ZXIgaW1nIHsKKyAgICBib3JkZXItcmFkaXVzOiAz
cHg7Cit9CisKKy5xdW90ZSBmb290ZXIgYSB7CisgICAgbWFyZ2luLWxlZnQ6IDVweDsKKyAgICB2
ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOworfQorCisuc3BlZWNoLWJ1YmJsZSB7CisgICAgcG9zaXRp
b246IHJlbGF0aXZlOworICAgIHBhZGRpbmc6IDEwcHg7CisgICAgYmFja2dyb3VuZDogcmdiYSgw
LCAwLCAwLCAuMDQpOworICAgIGJvcmRlci1yYWRpdXM6IDVweDsKK30KKworLnNwZWVjaC1idWJi
bGU6YWZ0ZXIgeworICAgIGNvbnRlbnQ6ICcnOworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAg
ICB0b3A6IDEwMCU7CisgICAgcmlnaHQ6IDMwcHg7CisgICAgYm9yZGVyOiAxM3B4IHNvbGlkIHRy
YW5zcGFyZW50OworICAgIGJvcmRlci10b3AtY29sb3I6IHJnYmEoMCwgMCwgMCwgLjA0KTsKK30K
KworLmxlYXJuLWJhciA+IC5sZWFybiB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHdp
ZHRoOiAyNzJweDsKKyAgICB0b3A6IDhweDsKKyAgICBsZWZ0OiAtMzAwcHg7CisgICAgcGFkZGlu
ZzogMTBweDsKKyAgICBib3JkZXItcmFkaXVzOiA1cHg7CisgICAgYmFja2dyb3VuZC1jb2xvcjog
cmdiYSgyNTUsIDI1NSwgMjU1LCAuNik7CisgICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogbGVmdDsK
KyAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiA1MDBtczsKK30KKworQG1lZGlhIChtaW4td2lkdGg6
IDg5OXB4KSB7CisgICAgLmxlYXJuLWJhciB7CisgICAgICAgIHdpZHRoOiBhdXRvOworICAgICAg
ICBwYWRkaW5nLWxlZnQ6IDMwMHB4OworICAgIH0KKworICAgIC5sZWFybi1iYXIgPiAubGVhcm4g
eworICAgICAgICBsZWZ0OiA4cHg7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
YW5ndWxhci9zcmMvZW52aXJvbm1lbnRzL2Vudmlyb25tZW50LnByb2QudHMgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9hbmd1bGFyL3NyYy9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQucHJvZC50cwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zNjEyMDczYmMzMWNkNGMxZjVkNmNiYjAwMzE4NTIxZTlhNjFiZDhhCi0tLSAvZGV2L251bGwK
KysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9zcmMvZW52aXJvbm1lbnRzL2Vudmlyb25tZW50LnBy
b2QudHMKQEAgLTAsMCArMSwzIEBACitleHBvcnQgY29uc3QgZW52aXJvbm1lbnQgPSB7CisgIHBy
b2R1Y3Rpb246IHRydWUKK307CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL3NyYy9l
bnZpcm9ubWVudHMvZW52aXJvbm1lbnQudHMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL3NyYy9lbnZp
cm9ubWVudHMvZW52aXJvbm1lbnQudHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjdmNjM5YWVjYWM1YzkwM2Y1NDQ5
YzdkMTQ4NDZmOTJiMGE5YjM0MgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3Vs
YXIvc3JjL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudC50cwpAQCAtMCwwICsxLDggQEAKKy8vIFRo
ZSBmaWxlIGNvbnRlbnRzIGZvciB0aGUgY3VycmVudCBlbnZpcm9ubWVudCB3aWxsIG92ZXJ3cml0
ZSB0aGVzZSBkdXJpbmcgYnVpbGQuCisvLyBUaGUgYnVpbGQgc3lzdGVtIGRlZmF1bHRzIHRvIHRo
ZSBkZXYgZW52aXJvbm1lbnQgd2hpY2ggdXNlcyBgZW52aXJvbm1lbnQudHNgLCBidXQgaWYgeW91
IGRvCisvLyBgbmcgYnVpbGQgLS1lbnY9cHJvZGAgdGhlbiBgZW52aXJvbm1lbnQucHJvZC50c2Ag
d2lsbCBiZSB1c2VkIGluc3RlYWQuCisvLyBUaGUgbGlzdCBvZiB3aGljaCBlbnYgbWFwcyB0byB3
aGljaCBmaWxlIGNhbiBiZSBmb3VuZCBpbiBgLmFuZ3VsYXItY2xpLmpzb25gLgorCitleHBvcnQg
Y29uc3QgZW52aXJvbm1lbnQgPSB7CisgIHByb2R1Y3Rpb246IGZhbHNlCit9OwpkaWZmIC0tZ2l0
IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvYW5ndWxhci9zcmMvZmF2aWNvbi5pY28gYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1
bGFyL3NyYy9mYXZpY29uLmljbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MDgxYzdjZWFmMmJlMDhiZjU5MDEwMTU4
YzU4NjE3MGQ5ZDJkNTE3CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA1NDMwCnpjbWMoamV7NTQj
NnZ2Q29BSTNpKkc1JSRVNyFzQTN3dE1aJGZINlY5Q2A9ZVhHSmJAUjElKElfe3ZuWnRwRHs2bgp6
NVBse0RteHpCRGJyQj59YDkwZTEybThUKjM2V29lRExBJlNEX2h3e0hed00hY2xfUldjVkEhSSt4
ODdlZTk3NTsKekA0a0RePWJZUG4mcG1HQCgrSlpgcnFRRUt4Vzx9UnpoV31JIXx1bE49Zm1qVmlA
eHtwJGNDYCk1JGEhKVgmVTxECnpGQ3JRdGxQc2tyZX1kQjdvTUNwPitibEtOdk41dGc9dUx2dUxu
dXFSTTtZYypzd2lleHNvaCNYUE51ezlGI2NgRwp6UUxle3lXQShZNig7Pnl8LWU8Ujc4bHxeYHZI
NmZ0LW1FclNHfllgVFpGMnFtMT1XPU1OZF4yVjMpbjJ4SWw9flgKemNROVZqekhXMzh0eXxyWnor
YmtjUigtYylgd2JxQyNsMENGPmZBeTExazwwOShAT28xQjJAMGBQdFpTa3FLJiR7CnpnRVl9YFdA
dHslPzl1NXJGP31ZN09MezMzOGw8TSVLfi0rdzRpSi0yQ18+KkpZI1AhJU1WUVlAb3FuSXRwWn0/
cwp6IXI/Kmt3dVJ7QUBqZzJDaGxmMF57cSo+OG41SXJ+WVdmKndtc2g3QjUmRXBIZmQ1QHhWYWom
Z3FzZHVpXnNweUwKekJ8a1VvYmxHb083RyhNdUtUZmE5P3BHSDBAUVBeYiMhbE0xeUhXTGgqMmlx
I2BDMVRkcm5PLWQjP09oQFhWMkhLCnpLQXtgZW97LS1eSyZNVzY2TGdza3Rmdm4jY0NBYyoofXFz
Zmhydk9qTUdMRT9gZEhWaXB1MUozS2dyJWc/Y05hOAp6KXBrbUM4REdIfmZHK2RscnAoNV4tUUJl
RXZrT3Z2I3E3TUJWTHRtMm9EXiRsSlp4LS1fPUsmVHRkPS1rcngoQmIKemNFb0tKZGFAUyElJUBg
UC0jIyQ+KnUlVCptaCtRalZAKVFhPU1rMT8jekxrK000dEl0JX13YWdUezU8aktFJHpXCnpmXnY3
ald+dVVFLSVtQjdeQ0hIOFRMMXxfdXJJfmhLVFRMTzRlO1p3N3J+SSgwNTJRVCFucT1rM0JLNHJX
bntQMQp6bTFiSG16YjNRc0VQZGRPZmVodHMhNCsqaGU8LUowVHBfSCpvektEKEkkKnZFSVJjNXZM
M2tkQHB7JGtqTUlLUXMKejxwSTAoVnU3JH12PDJmRU5IQ1ZBPVpnRShlQnA9OWE7X09gQmtmclUt
Y20/VWRoWVB9K3opaykqNHdRT1cwSzdTCnp4TFY5aDdQZUYyZE92TWctPkolIXRYQUU7cntAPWJi
JW5OVnh2SStDKyR0PyFWSkAwZEBISXlNSlRJe3ZFdzBVbAp6ZShoYSFlJnFBTmJUTDFabmVObDQ1
dD0jT3Q/P0MwTUhqamdZOCUqbUdpc058UzYlZzM7SGx4I2ZNTmNMPDg3TVcKelo+Nm1vbzFZRD9Q
IWZKI0piKDQpX2NjNTBYNW4wS29EWWZkUG9MXmlWYGsmb3tMUHlhb3FNcWs5MndWTSNfTzBsCnow
OSQoQS1EK2dWSWxxNFRBJnsxVEBCc1VIYEJtPXIjbCRaNTFKPEEmQmpXaWJAJHN8Z1pKUXFtYkpR
RCVwbXVxcgp6bFJpM3IlbzhJJHM3YmBOZHw2ISp7KUlJWGV2T1F1P1AjVHJgKGFfeWFDYFozbXoy
JXMwSipWUCFvTXJ5diVhR0oKekolK2hyO0pVUjlOJT1OUVVBY3N4SDFFdih6PUp3NXgqM1pQXnc2
NEI5VDE7ZCRGTiN2fEsze3lPP1UzfXAjfkNYCnpRZXVsNUowUy1rJlFQLVdTXnV4VV5sSjlxUEVr
aWsqTUNobHVqfDtMRXR+I0k4YXRiUm48TkxNVnpZTShQKE1jXgp6Kz1WY2YhfGEpRCpiQUokQik+
LVUmRjMyK2hmVVAtaUxvPWpnN1hteStXTHE2X3RXdiZgd0RseiNgJilKcH5pUWYKelpQKXR1Pn1w
SUlKS3V3KyQmdH1HUXVxTWQlWj4wP3QlJkJNJlc8b20mYiZ3U15VaTVgeTBgYktgZHo+b140UF5Z
CnopYzZoXmYyUj5YOCp9cXxiYmxBRj9AOyU/Mj4keStjTVFiTntYJCleUj52PGolSE9vWEZMM25G
LSRBU2l6QXU3TAp6QX5hKUtecWRpS0NUc09NMFBGXiV7Sz1VdTxaRVprQy15cGVCPnROcV81QUJ8
ME41VSpkXlQ/WDl7eFFuSlllVXsKem9aTCNvYkk7flBwOTVmMWAlWDNEJE1oKjReP08/SVR+N0hx
bFdndWV6bWc/WWJxfDc+cVEoQHBQSGJFOVY/ZnwoCnorMHhvISNtQE5wOVBsanN5eEJZLVVBKntV
KmxhIzhXejJzT3w0OF8tNXQ4JV8hbj9TJHpsR2UrTkElP3ZteGpTLQp6SEU1TzNaYXJVPVh9JDc+
O09rcChVV1hKeEklR19KLUBJSDslNSNSdCQoV1VYPzYqVXghSVJkJGRMUDYrU21Qbj0Kejh6am00
akdqTjc3MlJ7RkdrWHdjTnY4R0JjWkkjQFkybXtSTkZfdzgoWiVeQSohYlMqIX1zNnNoKk5uVVJ5
dGt5Cmh1bVc7Kmc3UismfExlZHZjLTxNKWJVRXF0V2Jid1YzaXd9Y3t7dUV1QDdAM2EKCmxpdGVy
YWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvc3JjL2lu
ZGV4Lmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL3NyYy9pbmRleC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZjNDJiNGYwYzNmOGM5ODYwZWVmOGM4OGFjOTIxNGZjYjRlOGNmNjAKLS0tIC9kZXYvbnVsbAor
KysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL3NyYy9pbmRleC5odG1sCkBAIC0wLDAgKzEsMTcgQEAK
KzwhZG9jdHlwZSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgPG1ldGEgY2hhcnNldD0idXRmLTgi
PgorICA8dGl0bGU+VG9kb0FwcDwvdGl0bGU+CisgIDxiYXNlIGhyZWY9Ii8iPgorCisgIDxtZXRh
IG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2Nh
bGU9MSI+CisgIDxsaW5rIHJlbD0iaWNvbiIgdHlwZT0iaW1hZ2UveC1pY29uIiBocmVmPSJmYXZp
Y29uLmljbyI+CisgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iYXNzZXRzL2Nzcy90b2Rv
bXZjLWNvbW1vbi5jc3MiPgorICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9ImFzc2V0cy9j
c3MvdG9kb212Yy1hcHAuY3NzIj4KKzwvaGVhZD4KKzxib2R5PgorICA8YXBwLXJvb3Q+TG9hZGlu
Zy4uLjwvYXBwLXJvb3Q+CisgIDwhLS0gQ3JlZGl0czogQWRkeSBPc21hbmkgLS0+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL3NyYy9tYWluLnRzIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvYW5ndWxhci9zcmMvbWFpbi50cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOWNhMWNhZjhjZWVi
ZWI0MzJiYmYwMmI2YTJiMTgzNzg2NTNmYmQwCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvYW5ndWxhci9zcmMvbWFpbi50cwpAQCAtMCwwICsxLDExIEBACitpbXBvcnQgeyBlbmFibGVQ
cm9kTW9kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnOworaW1wb3J0IHsgcGxhdGZvcm1Ccm93c2Vy
RHluYW1pYyB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXItZHluYW1pYyc7CisKK2lt
cG9ydCB7IEFwcE1vZHVsZSB9IGZyb20gJy4vYXBwL2FwcC5tb2R1bGUnOworaW1wb3J0IHsgZW52
aXJvbm1lbnQgfSBmcm9tICcuL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudCc7CisKK2lmIChlbnZp
cm9ubWVudC5wcm9kdWN0aW9uKSB7CisgIGVuYWJsZVByb2RNb2RlKCk7Cit9CisKK3BsYXRmb3Jt
QnJvd3NlckR5bmFtaWMoKS5ib290c3RyYXBNb2R1bGUoQXBwTW9kdWxlKTsKZGlmZiAtLWdpdCBh
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2FuZ3VsYXIvc3JjL3BvbHlmaWxscy50cyBiL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3Vs
YXIvc3JjL3BvbHlmaWxscy50cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41M2JkYWYxYjg2NDI0ZGY1MjMwNTk2Zjgz
NTJlNzhlNGE0ZGU2NmY1Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9z
cmMvcG9seWZpbGxzLnRzCkBAIC0wLDAgKzEsNjggQEAKKy8qKgorICogVGhpcyBmaWxlIGluY2x1
ZGVzIHBvbHlmaWxscyBuZWVkZWQgYnkgQW5ndWxhciBhbmQgaXMgbG9hZGVkIGJlZm9yZSB0aGUg
YXBwLgorICogWW91IGNhbiBhZGQgeW91ciBvd24gZXh0cmEgcG9seWZpbGxzIHRvIHRoaXMgZmls
ZS4KKyAqCisgKiBUaGlzIGZpbGUgaXMgZGl2aWRlZCBpbnRvIDIgc2VjdGlvbnM6CisgKiAgIDEu
IEJyb3dzZXIgcG9seWZpbGxzLiBUaGVzZSBhcmUgYXBwbGllZCBiZWZvcmUgbG9hZGluZyBab25l
SlMgYW5kIGFyZSBzb3J0ZWQgYnkgYnJvd3NlcnMuCisgKiAgIDIuIEFwcGxpY2F0aW9uIGltcG9y
dHMuIEZpbGVzIGltcG9ydGVkIGFmdGVyIFpvbmVKUyB0aGF0IHNob3VsZCBiZSBsb2FkZWQgYmVm
b3JlIHlvdXIgbWFpbgorICogICAgICBmaWxlLgorICoKKyAqIFRoZSBjdXJyZW50IHNldHVwIGlz
IGZvciBzby1jYWxsZWQgImV2ZXJncmVlbiIgYnJvd3NlcnM7IHRoZSBsYXN0IHZlcnNpb25zIG9m
IGJyb3dzZXJzIHRoYXQKKyAqIGF1dG9tYXRpY2FsbHkgdXBkYXRlIHRoZW1zZWx2ZXMuIFRoaXMg
aW5jbHVkZXMgU2FmYXJpID49IDEwLCBDaHJvbWUgPj0gNTUgKGluY2x1ZGluZyBPcGVyYSksCisg
KiBFZGdlID49IDEzIG9uIHRoZSBkZXNrdG9wLCBhbmQgaU9TIDEwIGFuZCBDaHJvbWUgb24gbW9i
aWxlLgorICoKKyAqIExlYXJuIG1vcmUgaW4gaHR0cHM6Ly9hbmd1bGFyLmlvL2RvY3MvdHMvbGF0
ZXN0L2d1aWRlL2Jyb3dzZXItc3VwcG9ydC5odG1sCisgKi8KKworLyoqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKgorICogQlJPV1NFUiBQT0xZRklMTFMKKyAqLworCisv
KiogSUU5LCBJRTEwIGFuZCBJRTExIHJlcXVpcmVzIGFsbCBvZiB0aGUgZm9sbG93aW5nIHBvbHlm
aWxscy4gKiovCisvLyBpbXBvcnQgJ2NvcmUtanMvZXM2L3N5bWJvbCc7CisvLyBpbXBvcnQgJ2Nv
cmUtanMvZXM2L29iamVjdCc7CisvLyBpbXBvcnQgJ2NvcmUtanMvZXM2L2Z1bmN0aW9uJzsKKy8v
IGltcG9ydCAnY29yZS1qcy9lczYvcGFyc2UtaW50JzsKKy8vIGltcG9ydCAnY29yZS1qcy9lczYv
cGFyc2UtZmxvYXQnOworLy8gaW1wb3J0ICdjb3JlLWpzL2VzNi9udW1iZXInOworLy8gaW1wb3J0
ICdjb3JlLWpzL2VzNi9tYXRoJzsKKy8vIGltcG9ydCAnY29yZS1qcy9lczYvc3RyaW5nJzsKKy8v
IGltcG9ydCAnY29yZS1qcy9lczYvZGF0ZSc7CisvLyBpbXBvcnQgJ2NvcmUtanMvZXM2L2FycmF5
JzsKKy8vIGltcG9ydCAnY29yZS1qcy9lczYvcmVnZXhwJzsKKy8vIGltcG9ydCAnY29yZS1qcy9l
czYvbWFwJzsKKy8vIGltcG9ydCAnY29yZS1qcy9lczYvc2V0JzsKKworLyoqIElFMTAgYW5kIElF
MTEgcmVxdWlyZXMgdGhlIGZvbGxvd2luZyBmb3IgTmdDbGFzcyBzdXBwb3J0IG9uIFNWRyBlbGVt
ZW50cyAqLworLy8gaW1wb3J0ICdjbGFzc2xpc3QuanMnOyAgLy8gUnVuIGBucG0gaW5zdGFsbCAt
LXNhdmUgY2xhc3NsaXN0LmpzYC4KKworLyoqIElFMTAgYW5kIElFMTEgcmVxdWlyZXMgdGhlIGZv
bGxvd2luZyB0byBzdXBwb3J0IGBAYW5ndWxhci9hbmltYXRpb25gLiAqLworLy8gaW1wb3J0ICd3
ZWItYW5pbWF0aW9ucy1qcyc7ICAvLyBSdW4gYG5wbSBpbnN0YWxsIC0tc2F2ZSB3ZWItYW5pbWF0
aW9ucy1qc2AuCisKKworLyoqIEV2ZXJncmVlbiBicm93c2VycyByZXF1aXJlIHRoZXNlLiAqKi8K
K2ltcG9ydCAnY29yZS1qcy9lczYvcmVmbGVjdCc7CitpbXBvcnQgJ2NvcmUtanMvZXM3L3JlZmxl
Y3QnOworCisKKy8qKiBBTEwgRmlyZWZveCBicm93c2VycyByZXF1aXJlIHRoZSBmb2xsb3dpbmcg
dG8gc3VwcG9ydCBgQGFuZ3VsYXIvYW5pbWF0aW9uYC4gKiovCisvLyBpbXBvcnQgJ3dlYi1hbmlt
YXRpb25zLWpzJzsgIC8vIFJ1biBgbnBtIGluc3RhbGwgLS1zYXZlIHdlYi1hbmltYXRpb25zLWpz
YC4KKworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAq
IFpvbmUgSlMgaXMgcmVxdWlyZWQgYnkgQW5ndWxhciBpdHNlbGYuCisgKi8KK2ltcG9ydCAnem9u
ZS5qcy9kaXN0L3pvbmUnOyAgLy8gSW5jbHVkZWQgd2l0aCBBbmd1bGFyIENMSS4KKworCisKKy8q
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEFQUExJQ0FUSU9O
IElNUE9SVFMKKyAqLworCisvKioKKyAqIERhdGUsIGN1cnJlbmN5LCBkZWNpbWFsIGFuZCBwZXJj
ZW50IHBpcGVzLgorICogTmVlZGVkIGZvcjogQWxsIGJ1dCBDaHJvbWUsIEZpcmVmb3gsIEVkZ2Us
IElFMTEgYW5kIFNhZmFyaSAxMAorICovCisvLyBpbXBvcnQgJ2ludGwnOyAgLy8gUnVuIGBucG0g
aW5zdGFsbCAtLXNhdmUgaW50bGAuCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL3Ny
Yy9zdHlsZXMuY3NzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9zcmMvc3R5bGVzLmNzcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45MGQ0ZWUwMDcyY2UzZmM0MTgxMmY4YWY5MTAyMTlmOWVlYTNjM2RlCi0tLSAvZGV2L251
bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9zcmMvc3R5bGVzLmNzcwpAQCAtMCwwICsxIEBA
CisvKiBZb3UgY2FuIGFkZCBnbG9iYWwgc3R5bGVzIHRvIHRoaXMgZmlsZSwgYW5kIGFsc28gaW1w
b3J0IG90aGVyIHN0eWxlIGZpbGVzICovCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFy
L3NyYy90ZXN0LnRzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9zcmMvdGVzdC50cwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45YmY3MjI2N2U5YjFhZGE0ZjQ2ZmY2YTc3MjllZjVmMjcyZjdjOTQ3Ci0tLSAvZGV2L251bGwK
KysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9zcmMvdGVzdC50cwpAQCAtMCwwICsxLDMyIEBACisv
LyBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgYnkga2FybWEuY29uZi5qcyBhbmQgbG9hZHMgcmVjdXJz
aXZlbHkgYWxsIHRoZSAuc3BlYyBhbmQgZnJhbWV3b3JrIGZpbGVzCisKK2ltcG9ydCAnem9uZS5q
cy9kaXN0L2xvbmctc3RhY2stdHJhY2Utem9uZSc7CitpbXBvcnQgJ3pvbmUuanMvZGlzdC9wcm94
eS5qcyc7CitpbXBvcnQgJ3pvbmUuanMvZGlzdC9zeW5jLXRlc3QnOworaW1wb3J0ICd6b25lLmpz
L2Rpc3QvamFzbWluZS1wYXRjaCc7CitpbXBvcnQgJ3pvbmUuanMvZGlzdC9hc3luYy10ZXN0JzsK
K2ltcG9ydCAnem9uZS5qcy9kaXN0L2Zha2UtYXN5bmMtdGVzdCc7CitpbXBvcnQgeyBnZXRUZXN0
QmVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS90ZXN0aW5nJzsKK2ltcG9ydCB7CisgIEJyb3dzZXJE
eW5hbWljVGVzdGluZ01vZHVsZSwKKyAgcGxhdGZvcm1Ccm93c2VyRHluYW1pY1Rlc3RpbmcKK30g
ZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlci1keW5hbWljL3Rlc3RpbmcnOworCisvLyBV
bmZvcnR1bmF0ZWx5IHRoZXJlJ3Mgbm8gdHlwaW5nIGZvciB0aGUgYF9fa2FybWFfX2AgdmFyaWFi
bGUuIEp1c3QgZGVjbGFyZSBpdCBhcyBhbnkuCitkZWNsYXJlIHZhciBfX2thcm1hX186IGFueTsK
K2RlY2xhcmUgdmFyIHJlcXVpcmU6IGFueTsKKworLy8gUHJldmVudCBLYXJtYSBmcm9tIHJ1bm5p
bmcgcHJlbWF0dXJlbHkuCitfX2thcm1hX18ubG9hZGVkID0gZnVuY3Rpb24gKCkge307CisKKy8v
IEZpcnN0LCBpbml0aWFsaXplIHRoZSBBbmd1bGFyIHRlc3RpbmcgZW52aXJvbm1lbnQuCitnZXRU
ZXN0QmVkKCkuaW5pdFRlc3RFbnZpcm9ubWVudCgKKyAgQnJvd3NlckR5bmFtaWNUZXN0aW5nTW9k
dWxlLAorICBwbGF0Zm9ybUJyb3dzZXJEeW5hbWljVGVzdGluZygpCispOworLy8gVGhlbiB3ZSBm
aW5kIGFsbCB0aGUgdGVzdHMuCitjb25zdCBjb250ZXh0ID0gcmVxdWlyZS5jb250ZXh0KCcuLycs
IHRydWUsIC9cLnNwZWNcLnRzJC8pOworLy8gQW5kIGxvYWQgdGhlIG1vZHVsZXMuCitjb250ZXh0
LmtleXMoKS5tYXAoY29udGV4dCk7CisvLyBGaW5hbGx5LCBzdGFydCBLYXJtYSB0byBydW4gdGhl
IHRlc3RzLgorX19rYXJtYV9fLnN0YXJ0KCk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1
bGFyL3NyYy90c2NvbmZpZy5hcHAuanNvbiBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvc3JjL3RzY29u
ZmlnLmFwcC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVlMjUwN2RiNThjOTZjMjBhYzIwMTU4NDI5OTRhNWFm
MGUzOTczNGIKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL3NyYy90c2Nv
bmZpZy5hcHAuanNvbgpAQCAtMCwwICsxLDEzIEBACit7CisgICJleHRlbmRzIjogIi4uL3RzY29u
ZmlnLmpzb24iLAorICAiY29tcGlsZXJPcHRpb25zIjogeworICAgICJvdXREaXIiOiAiLi4vb3V0
LXRzYy9hcHAiLAorICAgICJtb2R1bGUiOiAiZXMyMDE1IiwKKyAgICAiYmFzZVVybCI6ICIiLAor
ICAgICJ0eXBlcyI6IFtdCisgIH0sCisgICJleGNsdWRlIjogWworICAgICJ0ZXN0LnRzIiwKKyAg
ICAiKiovKi5zcGVjLnRzIgorICBdCit9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFy
L3NyYy90c2NvbmZpZy5zcGVjLmpzb24gYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL3NyYy90c2NvbmZp
Zy5zcGVjLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTEwZTNmMWZkYWUxNmMwNGRiMzVhMjE1MjYwODM3ZGVk
ZjIzNmE0MwotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvc3JjL3RzY29u
ZmlnLnNwZWMuanNvbgpAQCAtMCwwICsxLDIwIEBACit7CisgICJleHRlbmRzIjogIi4uL3RzY29u
ZmlnLmpzb24iLAorICAiY29tcGlsZXJPcHRpb25zIjogeworICAgICJvdXREaXIiOiAiLi4vb3V0
LXRzYy9zcGVjIiwKKyAgICAibW9kdWxlIjogImNvbW1vbmpzIiwKKyAgICAidGFyZ2V0IjogImVz
NSIsCisgICAgImJhc2VVcmwiOiAiIiwKKyAgICAidHlwZXMiOiBbCisgICAgICAiamFzbWluZSIs
CisgICAgICAibm9kZSIKKyAgICBdCisgIH0sCisgICJmaWxlcyI6IFsKKyAgICAidGVzdC50cyIK
KyAgXSwKKyAgImluY2x1ZGUiOiBbCisgICAgIioqLyouc3BlYy50cyIsCisgICAgIioqLyouZC50
cyIKKyAgXQorfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9zcmMvdHlwaW5ncy5k
LnRzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9zcmMvdHlwaW5ncy5kLnRzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVm
NWM3YmQ2MjA1NzkyOTZhMTI5MGIxYTBiMDRjOTZkNzJlNTdiYzYKLS0tIC9kZXYvbnVsbAorKysg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9hbmd1bGFyL3NyYy90eXBpbmdzLmQudHMKQEAgLTAsMCArMSw1IEBACisv
KiBTeXN0ZW1KUyBtb2R1bGUgZGVmaW5pdGlvbiAqLworZGVjbGFyZSB2YXIgbW9kdWxlOiBOb2Rl
TW9kdWxlOworaW50ZXJmYWNlIE5vZGVNb2R1bGUgeworICBpZDogc3RyaW5nOworfQpkaWZmIC0t
Z2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci90c2NvbmZpZy5qc29uIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5n
dWxhci90c2NvbmZpZy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEzNWE4ZWUzYTQwZDQzMjY5NzJhNmQzMWVk
ZjU3YTliY2U0Mzc1MjAKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL3Rz
Y29uZmlnLmpzb24KQEAgLTAsMCArMSwyMCBAQAoreworICAiY29tcGlsZU9uU2F2ZSI6IGZhbHNl
LAorICAiY29tcGlsZXJPcHRpb25zIjogeworICAgICJvdXREaXIiOiAiLi9kaXN0L291dC10c2Mi
LAorICAgICJiYXNlVXJsIjogInNyYyIsCisgICAgInNvdXJjZU1hcCI6IHRydWUsCisgICAgImRl
Y2xhcmF0aW9uIjogZmFsc2UsCisgICAgIm1vZHVsZVJlc29sdXRpb24iOiAibm9kZSIsCisgICAg
ImVtaXREZWNvcmF0b3JNZXRhZGF0YSI6IHRydWUsCisgICAgImV4cGVyaW1lbnRhbERlY29yYXRv
cnMiOiB0cnVlLAorICAgICJ0YXJnZXQiOiAiZXM1IiwKKyAgICAidHlwZVJvb3RzIjogWworICAg
ICAgIm5vZGVfbW9kdWxlcy9AdHlwZXMiCisgICAgXSwKKyAgICAibGliIjogWworICAgICAgImVz
MjAxNiIsCisgICAgICAiZG9tIgorICAgIF0KKyAgfQorfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvYW5ndWxhci90c2xpbnQuanNvbiBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvdHNsaW50Lmpzb24K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOTExM2YxMzY4YjIyNGZlNzU4ZmMzOWI1MjljNmU5MDg5ZmQwNjI4MAotLS0g
L2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvdHNsaW50Lmpzb24KQEAgLTAsMCAr
MSwxMTYgQEAKK3sKKyAgInJ1bGVzRGlyZWN0b3J5IjogWworICAgICJub2RlX21vZHVsZXMvY29k
ZWx5emVyIgorICBdLAorICAicnVsZXMiOiB7CisgICAgImNhbGxhYmxlLXR5cGVzIjogdHJ1ZSwK
KyAgICAiY2xhc3MtbmFtZSI6IHRydWUsCisgICAgImNvbW1lbnQtZm9ybWF0IjogWworICAgICAg
dHJ1ZSwKKyAgICAgICJjaGVjay1zcGFjZSIKKyAgICBdLAorICAgICJjdXJseSI6IHRydWUsCisg
ICAgImVvZmxpbmUiOiB0cnVlLAorICAgICJmb3JpbiI6IHRydWUsCisgICAgImltcG9ydC1ibGFj
a2xpc3QiOiBbdHJ1ZSwgInJ4anMiXSwKKyAgICAiaW1wb3J0LXNwYWNpbmciOiB0cnVlLAorICAg
ICJpbmRlbnQiOiBbCisgICAgICB0cnVlLAorICAgICAgInNwYWNlcyIKKyAgICBdLAorICAgICJp
bnRlcmZhY2Utb3Zlci10eXBlLWxpdGVyYWwiOiB0cnVlLAorICAgICJsYWJlbC1wb3NpdGlvbiI6
IHRydWUsCisgICAgIm1heC1saW5lLWxlbmd0aCI6IFsKKyAgICAgIHRydWUsCisgICAgICAxNDAK
KyAgICBdLAorICAgICJtZW1iZXItYWNjZXNzIjogZmFsc2UsCisgICAgIm1lbWJlci1vcmRlcmlu
ZyI6IFsKKyAgICAgIHRydWUsCisgICAgICAic3RhdGljLWJlZm9yZS1pbnN0YW5jZSIsCisgICAg
ICAidmFyaWFibGVzLWJlZm9yZS1mdW5jdGlvbnMiCisgICAgXSwKKyAgICAibm8tYXJnIjogdHJ1
ZSwKKyAgICAibm8tYml0d2lzZSI6IHRydWUsCisgICAgIm5vLWNvbnNvbGUiOiBbCisgICAgICB0
cnVlLAorICAgICAgImRlYnVnIiwKKyAgICAgICJpbmZvIiwKKyAgICAgICJ0aW1lIiwKKyAgICAg
ICJ0aW1lRW5kIiwKKyAgICAgICJ0cmFjZSIKKyAgICBdLAorICAgICJuby1jb25zdHJ1Y3QiOiB0
cnVlLAorICAgICJuby1kZWJ1Z2dlciI6IHRydWUsCisgICAgIm5vLWR1cGxpY2F0ZS12YXJpYWJs
ZSI6IHRydWUsCisgICAgIm5vLWVtcHR5IjogZmFsc2UsCisgICAgIm5vLWVtcHR5LWludGVyZmFj
ZSI6IHRydWUsCisgICAgIm5vLWV2YWwiOiB0cnVlLAorICAgICJuby1pbmZlcnJhYmxlLXR5cGVz
IjogW3RydWUsICJpZ25vcmUtcGFyYW1zIl0sCisgICAgIm5vLXNoYWRvd2VkLXZhcmlhYmxlIjog
dHJ1ZSwKKyAgICAibm8tc3RyaW5nLWxpdGVyYWwiOiBmYWxzZSwKKyAgICAibm8tc3RyaW5nLXRo
cm93IjogdHJ1ZSwKKyAgICAibm8tc3dpdGNoLWNhc2UtZmFsbC10aHJvdWdoIjogdHJ1ZSwKKyAg
ICAibm8tdHJhaWxpbmctd2hpdGVzcGFjZSI6IHRydWUsCisgICAgIm5vLXVudXNlZC1leHByZXNz
aW9uIjogdHJ1ZSwKKyAgICAibm8tdXNlLWJlZm9yZS1kZWNsYXJlIjogdHJ1ZSwKKyAgICAibm8t
dmFyLWtleXdvcmQiOiB0cnVlLAorICAgICJvYmplY3QtbGl0ZXJhbC1zb3J0LWtleXMiOiBmYWxz
ZSwKKyAgICAib25lLWxpbmUiOiBbCisgICAgICB0cnVlLAorICAgICAgImNoZWNrLW9wZW4tYnJh
Y2UiLAorICAgICAgImNoZWNrLWNhdGNoIiwKKyAgICAgICJjaGVjay1lbHNlIiwKKyAgICAgICJj
aGVjay13aGl0ZXNwYWNlIgorICAgIF0sCisgICAgInByZWZlci1jb25zdCI6IHRydWUsCisgICAg
InF1b3RlbWFyayI6IFsKKyAgICAgIHRydWUsCisgICAgICAic2luZ2xlIgorICAgIF0sCisgICAg
InJhZGl4IjogdHJ1ZSwKKyAgICAic2VtaWNvbG9uIjogWworICAgICAgImFsd2F5cyIKKyAgICBd
LAorICAgICJ0cmlwbGUtZXF1YWxzIjogWworICAgICAgdHJ1ZSwKKyAgICAgICJhbGxvdy1udWxs
LWNoZWNrIgorICAgIF0sCisgICAgInR5cGVkZWYtd2hpdGVzcGFjZSI6IFsKKyAgICAgIHRydWUs
CisgICAgICB7CisgICAgICAgICJjYWxsLXNpZ25hdHVyZSI6ICJub3NwYWNlIiwKKyAgICAgICAg
ImluZGV4LXNpZ25hdHVyZSI6ICJub3NwYWNlIiwKKyAgICAgICAgInBhcmFtZXRlciI6ICJub3Nw
YWNlIiwKKyAgICAgICAgInByb3BlcnR5LWRlY2xhcmF0aW9uIjogIm5vc3BhY2UiLAorICAgICAg
ICAidmFyaWFibGUtZGVjbGFyYXRpb24iOiAibm9zcGFjZSIKKyAgICAgIH0KKyAgICBdLAorICAg
ICJ0eXBlb2YtY29tcGFyZSI6IHRydWUsCisgICAgInVuaWZpZWQtc2lnbmF0dXJlcyI6IHRydWUs
CisgICAgInZhcmlhYmxlLW5hbWUiOiBmYWxzZSwKKyAgICAid2hpdGVzcGFjZSI6IFsKKyAgICAg
IHRydWUsCisgICAgICAiY2hlY2stYnJhbmNoIiwKKyAgICAgICJjaGVjay1kZWNsIiwKKyAgICAg
ICJjaGVjay1vcGVyYXRvciIsCisgICAgICAiY2hlY2stc2VwYXJhdG9yIiwKKyAgICAgICJjaGVj
ay10eXBlIgorICAgIF0sCisKKyAgICAiZGlyZWN0aXZlLXNlbGVjdG9yIjogW3RydWUsICJhdHRy
aWJ1dGUiLCAiYXBwIiwgImNhbWVsQ2FzZSJdLAorICAgICJjb21wb25lbnQtc2VsZWN0b3IiOiBb
dHJ1ZSwgImVsZW1lbnQiLCAiYXBwIiwgImtlYmFiLWNhc2UiXSwKKyAgICAidXNlLWlucHV0LXBy
b3BlcnR5LWRlY29yYXRvciI6IHRydWUsCisgICAgInVzZS1vdXRwdXQtcHJvcGVydHktZGVjb3Jh
dG9yIjogdHJ1ZSwKKyAgICAidXNlLWhvc3QtcHJvcGVydHktZGVjb3JhdG9yIjogdHJ1ZSwKKyAg
ICAibm8taW5wdXQtcmVuYW1lIjogdHJ1ZSwKKyAgICAibm8tb3V0cHV0LXJlbmFtZSI6IHRydWUs
CisgICAgInVzZS1saWZlLWN5Y2xlLWludGVyZmFjZSI6IHRydWUsCisgICAgInVzZS1waXBlLXRy
YW5zZm9ybS1pbnRlcmZhY2UiOiB0cnVlLAorICAgICJjb21wb25lbnQtY2xhc3Mtc3VmZml4Ijog
dHJ1ZSwKKyAgICAiZGlyZWN0aXZlLWNsYXNzLXN1ZmZpeCI6IHRydWUsCisgICAgIm5vLWFjY2Vz
cy1taXNzaW5nLW1lbWJlciI6IHRydWUsCisgICAgInRlbXBsYXRlcy11c2UtcHVibGljIjogdHJ1
ZSwKKyAgICAiaW52b2tlLWluamVjdGFibGUiOiB0cnVlCisgIH0KK30KZGlmZiAtLWdpdCBhL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2FuZ3VsYXJqcy9ib3dlci5qc29uIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL2Jv
d2VyLmpzb24KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5MGM1MjVjYzhhNmMwYjU5
MDI4N2Q3MDhiYmQ0NzdmOTQ4YTEwYTguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL2Jvd2VyLmpzb24KKysrIC9kZXYv
bnVsbApAQCAtMSwxMSArMCwwIEBACi17Ci0gICJuYW1lIjogInRvZG9tdmMtYW5ndWxhciIsCi0g
ICJ2ZXJzaW9uIjogIjAuMC4wIiwKLSAgImRlcGVuZGVuY2llcyI6IHsKLSAgICAiYW5ndWxhciI6
ICJ+MS4wLjciLAotICAgICJ0b2RvbXZjLWNvbW1vbiI6ICJ+MC4xLjQiCi0gIH0sCi0gICJkZXZE
ZXBlbmRlbmNpZXMiOiB7Ci0gICAgImFuZ3VsYXItbW9ja3MiOiAifjEuMC41IgotICB9Ci19CmRp
ZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvYm93ZXJfY29tcG9uZW50cy9hbmd1bGFy
LW1vY2tzL2FuZ3VsYXItbW9ja3MuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvYm93ZXJfY29t
cG9uZW50cy9hbmd1bGFyLW1vY2tzL2FuZ3VsYXItbW9ja3MuanMKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDZlMDRhMjdhNWJhNDdkZGVmYTBiNzY4ZTM5ZjdmZWEzYWY1MmFkMmIuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
YW5ndWxhcmpzL2Jvd2VyX2NvbXBvbmVudHMvYW5ndWxhci1tb2Nrcy9hbmd1bGFyLW1vY2tzLmpz
CisrKyAvZGV2L251bGwKQEAgLTEsMTc2NCArMCwwIEBACi0vKioKLSAqIEBsaWNlbnNlIEFuZ3Vs
YXJKUyB2MS4wLjQKLSAqIChjKSAyMDEwLTIwMTIgR29vZ2xlLCBJbmMuIGh0dHA6Ly9hbmd1bGFy
anMub3JnCi0gKiBMaWNlbnNlOiBNSVQKLSAqCi0gKiBUT0RPKHZvanRhKTogd3JhcCB3aG9sZSBm
aWxlIGludG8gY2xvc3VyZSBkdXJpbmcgYnVpbGQKLSAqLwotCi0vKioKLSAqIEBuZ2RvYyBvdmVy
dmlldwotICogQG5hbWUgYW5ndWxhci5tb2NrCi0gKiBAZGVzY3JpcHRpb24KLSAqCi0gKiBOYW1l
c3BhY2UgZnJvbSAnYW5ndWxhci1tb2Nrcy5qcycgd2hpY2ggY29udGFpbnMgdGVzdGluZyByZWxh
dGVkIGNvZGUuCi0gKi8KLWFuZ3VsYXIubW9jayA9IHt9OwotCi0vKioKLSAqICEgVGhpcyBpcyBh
IHByaXZhdGUgdW5kb2N1bWVudGVkIHNlcnZpY2UgIQotICoKLSAqIEBuYW1lIG5nTW9jay4kYnJv
d3NlcgotICoKLSAqIEBkZXNjcmlwdGlvbgotICogVGhpcyBzZXJ2aWNlIGlzIGEgbW9jayBpbXBs
ZW1lbnRhdGlvbiBvZiB7QGxpbmsgbmcuJGJyb3dzZXJ9LiBJdCBwcm92aWRlcyBmYWtlCi0gKiBp
bXBsZW1lbnRhdGlvbiBmb3IgY29tbW9ubHkgdXNlZCBicm93c2VyIGFwaXMgdGhhdCBhcmUgaGFy
ZCB0byB0ZXN0LCBlLmcuIHNldFRpbWVvdXQsIHhociwKLSAqIGNvb2tpZXMsIGV0Yy4uLgotICoK
LSAqIFRoZSBhcGkgb2YgdGhpcyBzZXJ2aWNlIGlzIHRoZSBzYW1lIGFzIHRoYXQgb2YgdGhlIHJl
YWwge0BsaW5rIG5nLiRicm93c2VyICRicm93c2VyfSwgZXhjZXB0Ci0gKiB0aGF0IHRoZXJlIGFy
ZSBzZXZlcmFsIGhlbHBlciBtZXRob2RzIGF2YWlsYWJsZSB3aGljaCBjYW4gYmUgdXNlZCBpbiB0
ZXN0cy4KLSAqLwotYW5ndWxhci5tb2NrLiRCcm93c2VyUHJvdmlkZXIgPSBmdW5jdGlvbigpIHsK
LSAgdGhpcy4kZ2V0ID0gZnVuY3Rpb24oKXsKLSAgICByZXR1cm4gbmV3IGFuZ3VsYXIubW9jay4k
QnJvd3NlcigpOwotICB9OwotfTsKLQotYW5ndWxhci5tb2NrLiRCcm93c2VyID0gZnVuY3Rpb24o
KSB7Ci0gIHZhciBzZWxmID0gdGhpczsKLQotICB0aGlzLmlzTW9jayA9IHRydWU7Ci0gIHNlbGYu
JCR1cmwgPSAiaHR0cDovL3NlcnZlci8iOwotICBzZWxmLiQkbGFzdFVybCA9IHNlbGYuJCR1cmw7
IC8vIHVzZWQgYnkgdXJsIHBvbGxpbmcgZm4KLSAgc2VsZi5wb2xsRm5zID0gW107Ci0KLSAgLy8g
VE9ETyh2b2p0YSk6IHJlbW92ZSB0aGlzIHRlbXBvcmFyeSBhcGkKLSAgc2VsZi4kJGNvbXBsZXRl
T3V0c3RhbmRpbmdSZXF1ZXN0ID0gYW5ndWxhci5ub29wOwotICBzZWxmLiQkaW5jT3V0c3RhbmRp
bmdSZXF1ZXN0Q291bnQgPSBhbmd1bGFyLm5vb3A7Ci0KLQotICAvLyByZWdpc3RlciB1cmwgcG9s
bGluZyBmbgotCi0gIHNlbGYub25VcmxDaGFuZ2UgPSBmdW5jdGlvbihsaXN0ZW5lcikgewotICAg
IHNlbGYucG9sbEZucy5wdXNoKAotICAgICAgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmIChzZWxm
LiQkbGFzdFVybCAhPSBzZWxmLiQkdXJsKSB7Ci0gICAgICAgICAgc2VsZi4kJGxhc3RVcmwgPSBz
ZWxmLiQkdXJsOwotICAgICAgICAgIGxpc3RlbmVyKHNlbGYuJCR1cmwpOwotICAgICAgICB9Ci0g
ICAgICB9Ci0gICAgKTsKLQotICAgIHJldHVybiBsaXN0ZW5lcjsKLSAgfTsKLQotICBzZWxmLmNv
b2tpZUhhc2ggPSB7fTsKLSAgc2VsZi5sYXN0Q29va2llSGFzaCA9IHt9OwotICBzZWxmLmRlZmVy
cmVkRm5zID0gW107Ci0gIHNlbGYuZGVmZXJyZWROZXh0SWQgPSAwOwotCi0gIHNlbGYuZGVmZXIg
PSBmdW5jdGlvbihmbiwgZGVsYXkpIHsKLSAgICBkZWxheSA9IGRlbGF5IHx8IDA7Ci0gICAgc2Vs
Zi5kZWZlcnJlZEZucy5wdXNoKHt0aW1lOihzZWxmLmRlZmVyLm5vdyArIGRlbGF5KSwgZm46Zm4s
IGlkOiBzZWxmLmRlZmVycmVkTmV4dElkfSk7Ci0gICAgc2VsZi5kZWZlcnJlZEZucy5zb3J0KGZ1
bmN0aW9uKGEsYil7IHJldHVybiBhLnRpbWUgLSBiLnRpbWU7fSk7Ci0gICAgcmV0dXJuIHNlbGYu
ZGVmZXJyZWROZXh0SWQrKzsKLSAgfTsKLQotCi0gIHNlbGYuZGVmZXIubm93ID0gMDsKLQotCi0g
IHNlbGYuZGVmZXIuY2FuY2VsID0gZnVuY3Rpb24oZGVmZXJJZCkgewotICAgIHZhciBmbkluZGV4
OwotCi0gICAgYW5ndWxhci5mb3JFYWNoKHNlbGYuZGVmZXJyZWRGbnMsIGZ1bmN0aW9uKGZuLCBp
bmRleCkgewotICAgICAgaWYgKGZuLmlkID09PSBkZWZlcklkKSBmbkluZGV4ID0gaW5kZXg7Ci0g
ICAgfSk7Ci0KLSAgICBpZiAoZm5JbmRleCAhPT0gdW5kZWZpbmVkKSB7Ci0gICAgICBzZWxmLmRl
ZmVycmVkRm5zLnNwbGljZShmbkluZGV4LCAxKTsKLSAgICAgIHJldHVybiB0cnVlOwotICAgIH0K
LQotICAgIHJldHVybiBmYWxzZTsKLSAgfTsKLQotCi0gIC8qKgotICAgKiBAbmFtZSBuZ01vY2su
JGJyb3dzZXIjZGVmZXIuZmx1c2gKLSAgICogQG1ldGhvZE9mIG5nTW9jay4kYnJvd3NlcgotICAg
KgotICAgKiBAZGVzY3JpcHRpb24KLSAgICogRmx1c2hlcyBhbGwgcGVuZGluZyByZXF1ZXN0cyBh
bmQgZXhlY3V0ZXMgdGhlIGRlZmVyIGNhbGxiYWNrcy4KLSAgICoKLSAgICogQHBhcmFtIHtudW1i
ZXI9fSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIGZsdXNoLiBTZWUge0BsaW5rICNkZWZlci5u
b3d9Ci0gICAqLwotICBzZWxmLmRlZmVyLmZsdXNoID0gZnVuY3Rpb24oZGVsYXkpIHsKLSAgICBp
ZiAoYW5ndWxhci5pc0RlZmluZWQoZGVsYXkpKSB7Ci0gICAgICBzZWxmLmRlZmVyLm5vdyArPSBk
ZWxheTsKLSAgICB9IGVsc2UgewotICAgICAgaWYgKHNlbGYuZGVmZXJyZWRGbnMubGVuZ3RoKSB7
Ci0gICAgICAgIHNlbGYuZGVmZXIubm93ID0gc2VsZi5kZWZlcnJlZEZuc1tzZWxmLmRlZmVycmVk
Rm5zLmxlbmd0aC0xXS50aW1lOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgdGhyb3cgRXJyb3Io
J05vIGRlZmVycmVkIHRhc2tzIHRvIGJlIGZsdXNoZWQnKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAg
ICB3aGlsZSAoc2VsZi5kZWZlcnJlZEZucy5sZW5ndGggJiYgc2VsZi5kZWZlcnJlZEZuc1swXS50
aW1lIDw9IHNlbGYuZGVmZXIubm93KSB7Ci0gICAgICBzZWxmLmRlZmVycmVkRm5zLnNoaWZ0KCku
Zm4oKTsKLSAgICB9Ci0gIH07Ci0gIC8qKgotICAgKiBAbmFtZSBuZ01vY2suJGJyb3dzZXIjZGVm
ZXIubm93Ci0gICAqIEBwcm9wZXJ0eU9mIG5nTW9jay4kYnJvd3NlcgotICAgKgotICAgKiBAZGVz
Y3JpcHRpb24KLSAgICogQ3VycmVudCBtaWxsaXNlY29uZHMgbW9jayB0aW1lLgotICAgKi8KLQot
ICBzZWxmLiQkYmFzZUhyZWYgPSAnJzsKLSAgc2VsZi5iYXNlSHJlZiA9IGZ1bmN0aW9uKCkgewot
ICAgIHJldHVybiB0aGlzLiQkYmFzZUhyZWY7Ci0gIH07Ci19OwotYW5ndWxhci5tb2NrLiRCcm93
c2VyLnByb3RvdHlwZSA9IHsKLQotLyoqCi0gICogQG5hbWUgbmdNb2NrLiRicm93c2VyI3BvbGwK
LSAgKiBAbWV0aG9kT2YgbmdNb2NrLiRicm93c2VyCi0gICoKLSAgKiBAZGVzY3JpcHRpb24KLSAg
KiBydW4gYWxsIGZucyBpbiBwb2xsRm5zCi0gICovCi0gIHBvbGw6IGZ1bmN0aW9uIHBvbGwoKSB7
Ci0gICAgYW5ndWxhci5mb3JFYWNoKHRoaXMucG9sbEZucywgZnVuY3Rpb24ocG9sbEZuKXsKLSAg
ICAgIHBvbGxGbigpOwotICAgIH0pOwotICB9LAotCi0gIGFkZFBvbGxGbjogZnVuY3Rpb24ocG9s
bEZuKSB7Ci0gICAgdGhpcy5wb2xsRm5zLnB1c2gocG9sbEZuKTsKLSAgICByZXR1cm4gcG9sbEZu
OwotICB9LAotCi0gIHVybDogZnVuY3Rpb24odXJsLCByZXBsYWNlKSB7Ci0gICAgaWYgKHVybCkg
ewotICAgICAgdGhpcy4kJHVybCA9IHVybDsKLSAgICAgIHJldHVybiB0aGlzOwotICAgIH0KLQot
ICAgIHJldHVybiB0aGlzLiQkdXJsOwotICB9LAotCi0gIGNvb2tpZXM6ICBmdW5jdGlvbihuYW1l
LCB2YWx1ZSkgewotICAgIGlmIChuYW1lKSB7Ci0gICAgICBpZiAodmFsdWUgPT0gdW5kZWZpbmVk
KSB7Ci0gICAgICAgIGRlbGV0ZSB0aGlzLmNvb2tpZUhhc2hbbmFtZV07Ci0gICAgICB9IGVsc2Ug
ewotICAgICAgICBpZiAoYW5ndWxhci5pc1N0cmluZyh2YWx1ZSkgJiYgICAgICAgLy9zdHJpbmdz
IG9ubHkKLSAgICAgICAgICAgIHZhbHVlLmxlbmd0aCA8PSA0MDk2KSB7ICAgICAgICAgIC8vc3Ry
aWN0IGNvb2tpZSBzdG9yYWdlIGxpbWl0cwotICAgICAgICAgIHRoaXMuY29va2llSGFzaFtuYW1l
XSA9IHZhbHVlOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgIGlmICgh
YW5ndWxhci5lcXVhbHModGhpcy5jb29raWVIYXNoLCB0aGlzLmxhc3RDb29raWVIYXNoKSkgewot
ICAgICAgICB0aGlzLmxhc3RDb29raWVIYXNoID0gYW5ndWxhci5jb3B5KHRoaXMuY29va2llSGFz
aCk7Ci0gICAgICAgIHRoaXMuY29va2llSGFzaCA9IGFuZ3VsYXIuY29weSh0aGlzLmNvb2tpZUhh
c2gpOwotICAgICAgfQotICAgICAgcmV0dXJuIHRoaXMuY29va2llSGFzaDsKLSAgICB9Ci0gIH0s
Ci0KLSAgbm90aWZ5V2hlbk5vT3V0c3RhbmRpbmdSZXF1ZXN0czogZnVuY3Rpb24oZm4pIHsKLSAg
ICBmbigpOwotICB9Ci19OwotCi0KLS8qKgotICogQG5nZG9jIG9iamVjdAotICogQG5hbWUgbmdN
b2NrLiRleGNlcHRpb25IYW5kbGVyUHJvdmlkZXIKLSAqCi0gKiBAZGVzY3JpcHRpb24KLSAqIENv
bmZpZ3VyZXMgdGhlIG1vY2sgaW1wbGVtZW50YXRpb24gb2Yge0BsaW5rIG5nLiRleGNlcHRpb25I
YW5kbGVyfSB0byByZXRocm93IG9yIHRvIGxvZyBlcnJvcnMgcGFzc2VkCi0gKiBpbnRvIHRoZSBg
JGV4Y2VwdGlvbkhhbmRsZXJgLgotICovCi0KLS8qKgotICogQG5nZG9jIG9iamVjdAotICogQG5h
bWUgbmdNb2NrLiRleGNlcHRpb25IYW5kbGVyCi0gKgotICogQGRlc2NyaXB0aW9uCi0gKiBNb2Nr
IGltcGxlbWVudGF0aW9uIG9mIHtAbGluayBuZy4kZXhjZXB0aW9uSGFuZGxlcn0gdGhhdCByZXRo
cm93cyBvciBsb2dzIGVycm9ycyBwYXNzZWQKLSAqIGludG8gaXQuIFNlZSB7QGxpbmsgbmdNb2Nr
LiRleGNlcHRpb25IYW5kbGVyUHJvdmlkZXIgJGV4Y2VwdGlvbkhhbmRsZXJQcm92aWRlcn0gZm9y
IGNvbmZpZ3VyYXRpb24KLSAqIGluZm9ybWF0aW9uLgotICoKLSAqCi0gKiA8cHJlPgotICogICBk
ZXNjcmliZSgnJGV4Y2VwdGlvbkhhbmRsZXJQcm92aWRlcicsIGZ1bmN0aW9uKCkgewotICoKLSAq
ICAgICBpdCgnc2hvdWxkIGNhcHR1cmUgbG9nIG1lc3NhZ2VzIGFuZCBleGNlcHRpb25zJywgZnVu
Y3Rpb24oKSB7Ci0gKgotICogICAgICAgbW9kdWxlKGZ1bmN0aW9uKCRleGNlcHRpb25IYW5kbGVy
UHJvdmlkZXIpIHsKLSAqICAgICAgICAgJGV4Y2VwdGlvbkhhbmRsZXJQcm92aWRlci5tb2RlKCds
b2cnKTsKLSAqICAgICAgIH0pOwotICoKLSAqICAgICAgIGluamVjdChmdW5jdGlvbigkbG9nLCAk
ZXhjZXB0aW9uSGFuZGxlciwgJHRpbWVvdXQpIHsKLSAqICAgICAgICAgJHRpbWVvdXQoZnVuY3Rp
b24oKSB7ICRsb2cubG9nKDEpOyB9KTsKLSAqICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKSB7
ICRsb2cubG9nKDIpOyB0aHJvdyAnYmFuYW5hIHBlZWwnOyB9KTsKLSAqICAgICAgICAgJHRpbWVv
dXQoZnVuY3Rpb24oKSB7ICRsb2cubG9nKDMpOyB9KTsKLSAqICAgICAgICAgZXhwZWN0KCRleGNl
cHRpb25IYW5kbGVyLmVycm9ycykudG9FcXVhbChbXSk7Ci0gKiAgICAgICAgIGV4cGVjdCgkbG9n
LmFzc2VydEVtcHR5KCkpOwotICogICAgICAgICAkdGltZW91dC5mbHVzaCgpOwotICogICAgICAg
ICBleHBlY3QoJGV4Y2VwdGlvbkhhbmRsZXIuZXJyb3JzKS50b0VxdWFsKFsnYmFuYW5hIHBlZWwn
XSk7Ci0gKiAgICAgICAgIGV4cGVjdCgkbG9nLmxvZy5sb2dzKS50b0VxdWFsKFtbMV0sIFsyXSwg
WzNdXSk7Ci0gKiAgICAgICB9KTsKLSAqICAgICB9KTsKLSAqICAgfSk7Ci0gKiA8L3ByZT4KLSAq
LwotCi1hbmd1bGFyLm1vY2suJEV4Y2VwdGlvbkhhbmRsZXJQcm92aWRlciA9IGZ1bmN0aW9uKCkg
ewotICB2YXIgaGFuZGxlcjsKLQotICAvKioKLSAgICogQG5nZG9jIG1ldGhvZAotICAgKiBAbmFt
ZSBuZ01vY2suJGV4Y2VwdGlvbkhhbmRsZXJQcm92aWRlciNtb2RlCi0gICAqIEBtZXRob2RPZiBu
Z01vY2suJGV4Y2VwdGlvbkhhbmRsZXJQcm92aWRlcgotICAgKgotICAgKiBAZGVzY3JpcHRpb24K
LSAgICogU2V0cyB0aGUgbG9nZ2luZyBtb2RlLgotICAgKgotICAgKiBAcGFyYW0ge3N0cmluZ30g
bW9kZSBNb2RlIG9mIG9wZXJhdGlvbiwgZGVmYXVsdHMgdG8gYHJldGhyb3dgLgotICAgKgotICAg
KiAgIC0gYHJldGhyb3dgOiBJZiBhbnkgZXJyb3JzIGFyZSBhcmUgcGFzc2VkIGludG8gdGhlIGhh
bmRsZXIgaW4gdGVzdHMsIGl0IHR5cGljYWxseQotICAgKiAgICAgICAgICAgICAgICBtZWFucyB0
aGF0IHRoZXJlIGlzIGEgYnVnIGluIHRoZSBhcHBsaWNhdGlvbiBvciB0ZXN0LCBzbyB0aGlzIG1v
Y2sgd2lsbAotICAgKiAgICAgICAgICAgICAgICBtYWtlIHRoZXNlIHRlc3RzIGZhaWwuCi0gICAq
ICAgLSBgbG9nYDogU29tZXRpbWVzIGl0IGlzIGRlc2lyYWJsZSB0byB0ZXN0IHRoYXQgYW4gZXJy
b3IgaXMgdGhyb3csIGZvciB0aGlzIGNhc2UgdGhlIGBsb2dgIG1vZGUgc3RvcmVzIGFuCi0gICAq
ICAgICAgICAgICAgYXJyYXkgb2YgZXJyb3JzIGluIGAkZXhjZXB0aW9uSGFuZGxlci5lcnJvcnNg
LCB0byBhbGxvdyBsYXRlciBhc3NlcnRpb24gb2YgdGhlbS4KLSAgICogICAgICAgICAgICBTZWUg
e0BsaW5rIG5nTW9jay4kbG9nI2Fzc2VydEVtcHR5IGFzc2VydEVtcHR5KCl9IGFuZAotICAgKiAg
ICAgICAgICAgICB7QGxpbmsgbmdNb2NrLiRsb2cjcmVzZXQgcmVzZXQoKX0KLSAgICovCi0gIHRo
aXMubW9kZSA9IGZ1bmN0aW9uKG1vZGUpIHsKLSAgICBzd2l0Y2gobW9kZSkgewotICAgICAgY2Fz
ZSAncmV0aHJvdyc6Ci0gICAgICAgIGhhbmRsZXIgPSBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAg
dGhyb3cgZTsKLSAgICAgICAgfTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlICdsb2cnOgot
ICAgICAgICB2YXIgZXJyb3JzID0gW107Ci0KLSAgICAgICAgaGFuZGxlciA9IGZ1bmN0aW9uKGUp
IHsKLSAgICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PSAxKSB7Ci0gICAgICAgICAgICBl
cnJvcnMucHVzaChlKTsKLSAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgZXJyb3JzLnB1
c2goW10uc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH07
Ci0KLSAgICAgICAgaGFuZGxlci5lcnJvcnMgPSBlcnJvcnM7Ci0gICAgICAgIGJyZWFrOwotICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgdGhyb3cgRXJyb3IoIlVua25vd24gbW9kZSAnIiArIG1vZGUg
KyAiJywgb25seSAnbG9nJy8ncmV0aHJvdycgbW9kZXMgYXJlIGFsbG93ZWQhIik7Ci0gICAgfQot
ICB9OwotCi0gIHRoaXMuJGdldCA9IGZ1bmN0aW9uKCkgewotICAgIHJldHVybiBoYW5kbGVyOwot
ICB9OwotCi0gIHRoaXMubW9kZSgncmV0aHJvdycpOwotfTsKLQotCi0vKioKLSAqIEBuZ2RvYyBz
ZXJ2aWNlCi0gKiBAbmFtZSBuZ01vY2suJGxvZwotICoKLSAqIEBkZXNjcmlwdGlvbgotICogTW9j
ayBpbXBsZW1lbnRhdGlvbiBvZiB7QGxpbmsgbmcuJGxvZ30gdGhhdCBnYXRoZXJzIGFsbCBsb2dn
ZWQgbWVzc2FnZXMgaW4gYXJyYXlzCi0gKiAob25lIGFycmF5IHBlciBsb2dnaW5nIGxldmVsKS4g
VGhlc2UgYXJyYXlzIGFyZSBleHBvc2VkIGFzIGBsb2dzYCBwcm9wZXJ0eSBvZiBlYWNoIG9mIHRo
ZQotICogbGV2ZWwtc3BlY2lmaWMgbG9nIGZ1bmN0aW9uLCBlLmcuIGZvciBsZXZlbCBgZXJyb3Jg
IHRoZSBhcnJheSBpcyBleHBvc2VkIGFzIGAkbG9nLmVycm9yLmxvZ3NgLgotICoKLSAqLwotYW5n
dWxhci5tb2NrLiRMb2dQcm92aWRlciA9IGZ1bmN0aW9uKCkgewotCi0gIGZ1bmN0aW9uIGNvbmNh
dChhcnJheTEsIGFycmF5MiwgaW5kZXgpIHsKLSAgICByZXR1cm4gYXJyYXkxLmNvbmNhdChBcnJh
eS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcnJheTIsIGluZGV4KSk7Ci0gIH0KLQotCi0gIHRoaXMu
JGdldCA9IGZ1bmN0aW9uICgpIHsKLSAgICB2YXIgJGxvZyA9IHsKLSAgICAgIGxvZzogZnVuY3Rp
b24oKSB7ICRsb2cubG9nLmxvZ3MucHVzaChjb25jYXQoW10sIGFyZ3VtZW50cywgMCkpOyB9LAot
ICAgICAgd2FybjogZnVuY3Rpb24oKSB7ICRsb2cud2Fybi5sb2dzLnB1c2goY29uY2F0KFtdLCBh
cmd1bWVudHMsIDApKTsgfSwKLSAgICAgIGluZm86IGZ1bmN0aW9uKCkgeyAkbG9nLmluZm8ubG9n
cy5wdXNoKGNvbmNhdChbXSwgYXJndW1lbnRzLCAwKSk7IH0sCi0gICAgICBlcnJvcjogZnVuY3Rp
b24oKSB7ICRsb2cuZXJyb3IubG9ncy5wdXNoKGNvbmNhdChbXSwgYXJndW1lbnRzLCAwKSk7IH0K
LSAgICB9OwotCi0gICAgLyoqCi0gICAgICogQG5nZG9jIG1ldGhvZAotICAgICAqIEBuYW1lIG5n
TW9jay4kbG9nI3Jlc2V0Ci0gICAgICogQG1ldGhvZE9mIG5nTW9jay4kbG9nCi0gICAgICoKLSAg
ICAgKiBAZGVzY3JpcHRpb24KLSAgICAgKiBSZXNldCBhbGwgb2YgdGhlIGxvZ2dpbmcgYXJyYXlz
IHRvIGVtcHR5LgotICAgICAqLwotICAgICRsb2cucmVzZXQgPSBmdW5jdGlvbiAoKSB7Ci0gICAg
ICAvKioKLSAgICAgICAqIEBuZ2RvYyBwcm9wZXJ0eQotICAgICAgICogQG5hbWUgbmdNb2NrLiRs
b2cjbG9nLmxvZ3MKLSAgICAgICAqIEBwcm9wZXJ0eU9mIG5nTW9jay4kbG9nCi0gICAgICAgKgot
ICAgICAgICogQGRlc2NyaXB0aW9uCi0gICAgICAgKiBBcnJheSBvZiBsb2dnZWQgbWVzc2FnZXMu
Ci0gICAgICAgKi8KLSAgICAgICRsb2cubG9nLmxvZ3MgPSBbXTsKLSAgICAgIC8qKgotICAgICAg
ICogQG5nZG9jIHByb3BlcnR5Ci0gICAgICAgKiBAbmFtZSBuZ01vY2suJGxvZyN3YXJuLmxvZ3MK
LSAgICAgICAqIEBwcm9wZXJ0eU9mIG5nTW9jay4kbG9nCi0gICAgICAgKgotICAgICAgICogQGRl
c2NyaXB0aW9uCi0gICAgICAgKiBBcnJheSBvZiBsb2dnZWQgbWVzc2FnZXMuCi0gICAgICAgKi8K
LSAgICAgICRsb2cud2Fybi5sb2dzID0gW107Ci0gICAgICAvKioKLSAgICAgICAqIEBuZ2RvYyBw
cm9wZXJ0eQotICAgICAgICogQG5hbWUgbmdNb2NrLiRsb2cjaW5mby5sb2dzCi0gICAgICAgKiBA
cHJvcGVydHlPZiBuZ01vY2suJGxvZwotICAgICAgICoKLSAgICAgICAqIEBkZXNjcmlwdGlvbgot
ICAgICAgICogQXJyYXkgb2YgbG9nZ2VkIG1lc3NhZ2VzLgotICAgICAgICovCi0gICAgICAkbG9n
LmluZm8ubG9ncyA9IFtdOwotICAgICAgLyoqCi0gICAgICAgKiBAbmdkb2MgcHJvcGVydHkKLSAg
ICAgICAqIEBuYW1lIG5nTW9jay4kbG9nI2Vycm9yLmxvZ3MKLSAgICAgICAqIEBwcm9wZXJ0eU9m
IG5nTW9jay4kbG9nCi0gICAgICAgKgotICAgICAgICogQGRlc2NyaXB0aW9uCi0gICAgICAgKiBB
cnJheSBvZiBsb2dnZWQgbWVzc2FnZXMuCi0gICAgICAgKi8KLSAgICAgICRsb2cuZXJyb3IubG9n
cyA9IFtdOwotICAgIH07Ci0KLSAgICAvKioKLSAgICAgKiBAbmdkb2MgbWV0aG9kCi0gICAgICog
QG5hbWUgbmdNb2NrLiRsb2cjYXNzZXJ0RW1wdHkKLSAgICAgKiBAbWV0aG9kT2YgbmdNb2NrLiRs
b2cKLSAgICAgKgotICAgICAqIEBkZXNjcmlwdGlvbgotICAgICAqIEFzc2VydCB0aGF0IHRoZSBh
bGwgb2YgdGhlIGxvZ2dpbmcgbWV0aG9kcyBoYXZlIG5vIGxvZ2dlZCBtZXNzYWdlcy4gSWYgbWVz
c2FnZXMgcHJlc2VudCwgYW4gZXhjZXB0aW9uIGlzIHRocm93bi4KLSAgICAgKi8KLSAgICAkbG9n
LmFzc2VydEVtcHR5ID0gZnVuY3Rpb24oKSB7Ci0gICAgICB2YXIgZXJyb3JzID0gW107Ci0gICAg
ICBhbmd1bGFyLmZvckVhY2goWydlcnJvcicsICd3YXJuJywgJ2luZm8nLCAnbG9nJ10sIGZ1bmN0
aW9uKGxvZ0xldmVsKSB7Ci0gICAgICAgIGFuZ3VsYXIuZm9yRWFjaCgkbG9nW2xvZ0xldmVsXS5s
b2dzLCBmdW5jdGlvbihsb2cpIHsKLSAgICAgICAgICBhbmd1bGFyLmZvckVhY2gobG9nLCBmdW5j
dGlvbiAobG9nSXRlbSkgewotICAgICAgICAgICAgZXJyb3JzLnB1c2goJ01PQ0sgJGxvZyAoJyAr
IGxvZ0xldmVsICsgJyk6ICcgKyBTdHJpbmcobG9nSXRlbSkgKyAnXG4nICsgKGxvZ0l0ZW0uc3Rh
Y2sgfHwgJycpKTsKLSAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0gICAgICB9KTsKLSAgICAg
IGlmIChlcnJvcnMubGVuZ3RoKSB7Ci0gICAgICAgIGVycm9ycy51bnNoaWZ0KCJFeHBlY3RlZCAk
bG9nIHRvIGJlIGVtcHR5ISBFaXRoZXIgYSBtZXNzYWdlIHdhcyBsb2dnZWQgdW5leHBlY3RlZGx5
LCBvciBhbiBleHBlY3RlZCAiICsKLSAgICAgICAgICAibG9nIG1lc3NhZ2Ugd2FzIG5vdCBjaGVj
a2VkIGFuZCByZW1vdmVkOiIpOwotICAgICAgICBlcnJvcnMucHVzaCgnJyk7Ci0gICAgICAgIHRo
cm93IG5ldyBFcnJvcihlcnJvcnMuam9pbignXG4tLS0tLS0tLS1cbicpKTsKLSAgICAgIH0KLSAg
ICB9OwotCi0gICAgJGxvZy5yZXNldCgpOwotICAgIHJldHVybiAkbG9nOwotICB9OwotfTsKLQot
Ci0oZnVuY3Rpb24oKSB7Ci0gIHZhciBSX0lTTzgwNjFfU1RSID0gL14oXGR7NH0pLT8oXGRcZCkt
PyhcZFxkKSg/OlQoXGRcZCkoPzpcOj8oXGRcZCkoPzpcOj8oXGRcZCkoPzpcLihcZHszfSkpPyk/
KT8oWnwoWystXSkoXGRcZCk6PyhcZFxkKSkpPyQvOwotCi0gIGZ1bmN0aW9uIGpzb25TdHJpbmdU
b0RhdGUoc3RyaW5nKXsKLSAgICB2YXIgbWF0Y2g7Ci0gICAgaWYgKG1hdGNoID0gc3RyaW5nLm1h
dGNoKFJfSVNPODA2MV9TVFIpKSB7Ci0gICAgICB2YXIgZGF0ZSA9IG5ldyBEYXRlKDApLAotICAg
ICAgICAgIHR6SG91ciA9IDAsCi0gICAgICAgICAgdHpNaW4gID0gMDsKLSAgICAgIGlmIChtYXRj
aFs5XSkgewotICAgICAgICB0ekhvdXIgPSBpbnQobWF0Y2hbOV0gKyBtYXRjaFsxMF0pOwotICAg
ICAgICB0ek1pbiA9IGludChtYXRjaFs5XSArIG1hdGNoWzExXSk7Ci0gICAgICB9Ci0gICAgICBk
YXRlLnNldFVUQ0Z1bGxZZWFyKGludChtYXRjaFsxXSksIGludChtYXRjaFsyXSkgLSAxLCBpbnQo
bWF0Y2hbM10pKTsKLSAgICAgIGRhdGUuc2V0VVRDSG91cnMoaW50KG1hdGNoWzRdfHwwKSAtIHR6
SG91ciwgaW50KG1hdGNoWzVdfHwwKSAtIHR6TWluLCBpbnQobWF0Y2hbNl18fDApLCBpbnQobWF0
Y2hbN118fDApKTsKLSAgICAgIHJldHVybiBkYXRlOwotICAgIH0KLSAgICByZXR1cm4gc3RyaW5n
OwotICB9Ci0KLSAgZnVuY3Rpb24gaW50KHN0cikgewotICAgIHJldHVybiBwYXJzZUludChzdHIs
IDEwKTsKLSAgfQotCi0gIGZ1bmN0aW9uIHBhZE51bWJlcihudW0sIGRpZ2l0cywgdHJpbSkgewot
ICAgIHZhciBuZWcgPSAnJzsKLSAgICBpZiAobnVtIDwgMCkgewotICAgICAgbmVnID0gICctJzsK
LSAgICAgIG51bSA9IC1udW07Ci0gICAgfQotICAgIG51bSA9ICcnICsgbnVtOwotICAgIHdoaWxl
KG51bS5sZW5ndGggPCBkaWdpdHMpIG51bSA9ICcwJyArIG51bTsKLSAgICBpZiAodHJpbSkKLSAg
ICAgIG51bSA9IG51bS5zdWJzdHIobnVtLmxlbmd0aCAtIGRpZ2l0cyk7Ci0gICAgcmV0dXJuIG5l
ZyArIG51bTsKLSAgfQotCi0KLSAgLyoqCi0gICAqIEBuZ2RvYyBvYmplY3QKLSAgICogQG5hbWUg
YW5ndWxhci5tb2NrLlR6RGF0ZQotICAgKiBAZGVzY3JpcHRpb24KLSAgICoKLSAgICogKk5PVEUq
OiB0aGlzIGlzIG5vdCBhbiBpbmplY3RhYmxlIGluc3RhbmNlLCBqdXN0IGEgZ2xvYmFsbHkgYXZh
aWxhYmxlIG1vY2sgY2xhc3Mgb2YgYERhdGVgLgotICAgKgotICAgKiBNb2NrIG9mIHRoZSBEYXRl
IHR5cGUgd2hpY2ggaGFzIGl0cyB0aW1lem9uZSBzcGVjaWZpZWQgdmlhIGNvbnN0cm9jdG9yIGFy
Zy4KLSAgICoKLSAgICogVGhlIG1haW4gcHVycG9zZSBpcyB0byBjcmVhdGUgRGF0ZS1saWtlIGlu
c3RhbmNlcyB3aXRoIHRpbWV6b25lIGZpeGVkIHRvIHRoZSBzcGVjaWZpZWQgdGltZXpvbmUKLSAg
ICogb2Zmc2V0LCBzbyB0aGF0IHdlIGNhbiB0ZXN0IGNvZGUgdGhhdCBkZXBlbmRzIG9uIGxvY2Fs
IHRpbWV6b25lIHNldHRpbmdzIHdpdGhvdXQgZGVwZW5kZW5jeSBvbgotICAgKiB0aGUgdGltZSB6
b25lIHNldHRpbmdzIG9mIHRoZSBtYWNoaW5lIHdoZXJlIHRoZSBjb2RlIGlzIHJ1bm5pbmcuCi0g
ICAqCi0gICAqIEBwYXJhbSB7bnVtYmVyfSBvZmZzZXQgT2Zmc2V0IG9mIHRoZSAqZGVzaXJlZCog
dGltZXpvbmUgaW4gaG91cnMgKGZyYWN0aW9ucyB3aWxsIGJlIGhvbm9yZWQpCi0gICAqIEBwYXJh
bSB7KG51bWJlcnxzdHJpbmcpfSB0aW1lc3RhbXAgVGltZXN0YW1wIHJlcHJlc2VudGluZyB0aGUg
ZGVzaXJlZCB0aW1lIGluICpVVEMqCi0gICAqCi0gICAqIEBleGFtcGxlCi0gICAqICEhISEgV0FS
TklORyAhISEhIQotICAgKiBUaGlzIGlzIG5vdCBhIGNvbXBsZXRlIERhdGUgb2JqZWN0IHNvIG9u
bHkgbWV0aG9kcyB0aGF0IHdlcmUgaW1wbGVtZW50ZWQgY2FuIGJlIGNhbGxlZCBzYWZlbHkuCi0g
ICAqIFRvIG1ha2UgbWF0dGVycyB3b3JzZSwgVHpEYXRlIGluc3RhbmNlcyBpbmhlcml0IHN0dWZm
IGZyb20gRGF0ZSB2aWEgYSBwcm90b3R5cGUuCi0gICAqCi0gICAqIFdlIGRvIG91ciBiZXN0IHRv
IGludGVyY2VwdCBjYWxscyB0byAidW5pbXBsZW1lbnRlZCIgbWV0aG9kcywgYnV0IHNpbmNlIHRo
ZSBsaXN0IG9mIG1ldGhvZHMgaXMKLSAgICogaW5jb21wbGV0ZSB3ZSBtaWdodCBiZSBtaXNzaW5n
IHNvbWUgbm9uLXN0YW5kYXJkIG1ldGhvZHMuIFRoaXMgY2FuIHJlc3VsdCBpbiBlcnJvcnMgbGlr
ZToKLSAgICogIkRhdGUucHJvdG90eXBlLmZvbyBjYWxsZWQgb24gaW5jb21wYXRpYmxlIE9iamVj
dCIuCi0gICAqCi0gICAqIDxwcmU+Ci0gICAqIHZhciBuZXdZZWFySW5CcmF0aXNsYXZhID0gbmV3
IFR6RGF0ZSgtMSwgJzIwMDktMTItMzFUMjM6MDA6MDBaJyk7Ci0gICAqIG5ld1llYXJJbkJyYXRp
c2xhdmEuZ2V0VGltZXpvbmVPZmZzZXQoKSA9PiAtNjA7Ci0gICAqIG5ld1llYXJJbkJyYXRpc2xh
dmEuZ2V0RnVsbFllYXIoKSA9PiAyMDEwOwotICAgKiBuZXdZZWFySW5CcmF0aXNsYXZhLmdldE1v
bnRoKCkgPT4gMDsKLSAgICogbmV3WWVhckluQnJhdGlzbGF2YS5nZXREYXRlKCkgPT4gMTsKLSAg
ICogbmV3WWVhckluQnJhdGlzbGF2YS5nZXRIb3VycygpID0+IDA7Ci0gICAqIG5ld1llYXJJbkJy
YXRpc2xhdmEuZ2V0TWludXRlcygpID0+IDA7Ci0gICAqIDwvcHJlPgotICAgKgotICAgKi8KLSAg
YW5ndWxhci5tb2NrLlR6RGF0ZSA9IGZ1bmN0aW9uIChvZmZzZXQsIHRpbWVzdGFtcCkgewotICAg
IHZhciBzZWxmID0gbmV3IERhdGUoMCk7Ci0gICAgaWYgKGFuZ3VsYXIuaXNTdHJpbmcodGltZXN0
YW1wKSkgewotICAgICAgdmFyIHRzU3RyID0gdGltZXN0YW1wOwotCi0gICAgICBzZWxmLm9yaWdE
YXRlID0ganNvblN0cmluZ1RvRGF0ZSh0aW1lc3RhbXApOwotCi0gICAgICB0aW1lc3RhbXAgPSBz
ZWxmLm9yaWdEYXRlLmdldFRpbWUoKTsKLSAgICAgIGlmIChpc05hTih0aW1lc3RhbXApKQotICAg
ICAgICB0aHJvdyB7Ci0gICAgICAgICAgbmFtZTogIklsbGVnYWwgQXJndW1lbnQiLAotICAgICAg
ICAgIG1lc3NhZ2U6ICJBcmcgJyIgKyB0c1N0ciArICInIHBhc3NlZCBpbnRvIFR6RGF0ZSBjb25z
dHJ1Y3RvciBpcyBub3QgYSB2YWxpZCBkYXRlIHN0cmluZyIKLSAgICAgICAgfTsKLSAgICB9IGVs
c2UgewotICAgICAgc2VsZi5vcmlnRGF0ZSA9IG5ldyBEYXRlKHRpbWVzdGFtcCk7Ci0gICAgfQot
Ci0gICAgdmFyIGxvY2FsT2Zmc2V0ID0gbmV3IERhdGUodGltZXN0YW1wKS5nZXRUaW1lem9uZU9m
ZnNldCgpOwotICAgIHNlbGYub2Zmc2V0RGlmZiA9IGxvY2FsT2Zmc2V0KjYwKjEwMDAgLSBvZmZz
ZXQqMTAwMCo2MCo2MDsKLSAgICBzZWxmLmRhdGUgPSBuZXcgRGF0ZSh0aW1lc3RhbXAgKyBzZWxm
Lm9mZnNldERpZmYpOwotCi0gICAgc2VsZi5nZXRUaW1lID0gZnVuY3Rpb24oKSB7Ci0gICAgICBy
ZXR1cm4gc2VsZi5kYXRlLmdldFRpbWUoKSAtIHNlbGYub2Zmc2V0RGlmZjsKLSAgICB9OwotCi0g
ICAgc2VsZi50b0xvY2FsZURhdGVTdHJpbmcgPSBmdW5jdGlvbigpIHsKLSAgICAgIHJldHVybiBz
ZWxmLmRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKCk7Ci0gICAgfTsKLQotICAgIHNlbGYuZ2V0RnVs
bFllYXIgPSBmdW5jdGlvbigpIHsKLSAgICAgIHJldHVybiBzZWxmLmRhdGUuZ2V0RnVsbFllYXIo
KTsKLSAgICB9OwotCi0gICAgc2VsZi5nZXRNb250aCA9IGZ1bmN0aW9uKCkgewotICAgICAgcmV0
dXJuIHNlbGYuZGF0ZS5nZXRNb250aCgpOwotICAgIH07Ci0KLSAgICBzZWxmLmdldERhdGUgPSBm
dW5jdGlvbigpIHsKLSAgICAgIHJldHVybiBzZWxmLmRhdGUuZ2V0RGF0ZSgpOwotICAgIH07Ci0K
LSAgICBzZWxmLmdldEhvdXJzID0gZnVuY3Rpb24oKSB7Ci0gICAgICByZXR1cm4gc2VsZi5kYXRl
LmdldEhvdXJzKCk7Ci0gICAgfTsKLQotICAgIHNlbGYuZ2V0TWludXRlcyA9IGZ1bmN0aW9uKCkg
ewotICAgICAgcmV0dXJuIHNlbGYuZGF0ZS5nZXRNaW51dGVzKCk7Ci0gICAgfTsKLQotICAgIHNl
bGYuZ2V0U2Vjb25kcyA9IGZ1bmN0aW9uKCkgewotICAgICAgcmV0dXJuIHNlbGYuZGF0ZS5nZXRT
ZWNvbmRzKCk7Ci0gICAgfTsKLQotICAgIHNlbGYuZ2V0VGltZXpvbmVPZmZzZXQgPSBmdW5jdGlv
bigpIHsKLSAgICAgIHJldHVybiBvZmZzZXQgKiA2MDsKLSAgICB9OwotCi0gICAgc2VsZi5nZXRV
VENGdWxsWWVhciA9IGZ1bmN0aW9uKCkgewotICAgICAgcmV0dXJuIHNlbGYub3JpZ0RhdGUuZ2V0
VVRDRnVsbFllYXIoKTsKLSAgICB9OwotCi0gICAgc2VsZi5nZXRVVENNb250aCA9IGZ1bmN0aW9u
KCkgewotICAgICAgcmV0dXJuIHNlbGYub3JpZ0RhdGUuZ2V0VVRDTW9udGgoKTsKLSAgICB9Owot
Ci0gICAgc2VsZi5nZXRVVENEYXRlID0gZnVuY3Rpb24oKSB7Ci0gICAgICByZXR1cm4gc2VsZi5v
cmlnRGF0ZS5nZXRVVENEYXRlKCk7Ci0gICAgfTsKLQotICAgIHNlbGYuZ2V0VVRDSG91cnMgPSBm
dW5jdGlvbigpIHsKLSAgICAgIHJldHVybiBzZWxmLm9yaWdEYXRlLmdldFVUQ0hvdXJzKCk7Ci0g
ICAgfTsKLQotICAgIHNlbGYuZ2V0VVRDTWludXRlcyA9IGZ1bmN0aW9uKCkgewotICAgICAgcmV0
dXJuIHNlbGYub3JpZ0RhdGUuZ2V0VVRDTWludXRlcygpOwotICAgIH07Ci0KLSAgICBzZWxmLmdl
dFVUQ1NlY29uZHMgPSBmdW5jdGlvbigpIHsKLSAgICAgIHJldHVybiBzZWxmLm9yaWdEYXRlLmdl
dFVUQ1NlY29uZHMoKTsKLSAgICB9OwotCi0gICAgc2VsZi5nZXRVVENNaWxsaXNlY29uZHMgPSBm
dW5jdGlvbigpIHsKLSAgICAgIHJldHVybiBzZWxmLm9yaWdEYXRlLmdldFVUQ01pbGxpc2Vjb25k
cygpOwotICAgIH07Ci0KLSAgICBzZWxmLmdldERheSA9IGZ1bmN0aW9uKCkgewotICAgICAgcmV0
dXJuIHNlbGYuZGF0ZS5nZXREYXkoKTsKLSAgICB9OwotCi0gICAgLy8gcHJvdmlkZSB0aGlzIG1l
dGhvZCBvbmx5IG9uIGJyb3dzZXJzIHRoYXQgYWxyZWFkeSBoYXZlIGl0Ci0gICAgaWYgKHNlbGYu
dG9JU09TdHJpbmcpIHsKLSAgICAgIHNlbGYudG9JU09TdHJpbmcgPSBmdW5jdGlvbigpIHsKLSAg
ICAgICAgcmV0dXJuIHBhZE51bWJlcihzZWxmLm9yaWdEYXRlLmdldFVUQ0Z1bGxZZWFyKCksIDQp
ICsgJy0nICsKLSAgICAgICAgICAgICAgcGFkTnVtYmVyKHNlbGYub3JpZ0RhdGUuZ2V0VVRDTW9u
dGgoKSArIDEsIDIpICsgJy0nICsKLSAgICAgICAgICAgICAgcGFkTnVtYmVyKHNlbGYub3JpZ0Rh
dGUuZ2V0VVRDRGF0ZSgpLCAyKSArICdUJyArCi0gICAgICAgICAgICAgIHBhZE51bWJlcihzZWxm
Lm9yaWdEYXRlLmdldFVUQ0hvdXJzKCksIDIpICsgJzonICsKLSAgICAgICAgICAgICAgcGFkTnVt
YmVyKHNlbGYub3JpZ0RhdGUuZ2V0VVRDTWludXRlcygpLCAyKSArICc6JyArCi0gICAgICAgICAg
ICAgIHBhZE51bWJlcihzZWxmLm9yaWdEYXRlLmdldFVUQ1NlY29uZHMoKSwgMikgKyAnLicgKwot
ICAgICAgICAgICAgICBwYWROdW1iZXIoc2VsZi5vcmlnRGF0ZS5nZXRVVENNaWxsaXNlY29uZHMo
KSwgMykgKyAnWicKLSAgICAgIH0KLSAgICB9Ci0KLSAgICAvL2hpZGUgYWxsIG1ldGhvZHMgbm90
IGltcGxlbWVudGVkIGluIHRoaXMgbW9jayB0aGF0IHRoZSBEYXRlIHByb3RvdHlwZSBleHBvc2Vz
Ci0gICAgdmFyIHVuaW1wbGVtZW50ZWRNZXRob2RzID0gWydnZXRNaWxsaXNlY29uZHMnLCAnZ2V0
VVRDRGF5JywKLSAgICAgICAgJ2dldFllYXInLCAnc2V0RGF0ZScsICdzZXRGdWxsWWVhcicsICdz
ZXRIb3VycycsICdzZXRNaWxsaXNlY29uZHMnLAotICAgICAgICAnc2V0TWludXRlcycsICdzZXRN
b250aCcsICdzZXRTZWNvbmRzJywgJ3NldFRpbWUnLCAnc2V0VVRDRGF0ZScsICdzZXRVVENGdWxs
WWVhcicsCi0gICAgICAgICdzZXRVVENIb3VycycsICdzZXRVVENNaWxsaXNlY29uZHMnLCAnc2V0
VVRDTWludXRlcycsICdzZXRVVENNb250aCcsICdzZXRVVENTZWNvbmRzJywKLSAgICAgICAgJ3Nl
dFllYXInLCAndG9EYXRlU3RyaW5nJywgJ3RvR01UU3RyaW5nJywgJ3RvSlNPTicsICd0b0xvY2Fs
ZUZvcm1hdCcsICd0b0xvY2FsZVN0cmluZycsCi0gICAgICAgICd0b0xvY2FsZVRpbWVTdHJpbmcn
LCAndG9Tb3VyY2UnLCAndG9TdHJpbmcnLCAndG9UaW1lU3RyaW5nJywgJ3RvVVRDU3RyaW5nJywg
J3ZhbHVlT2YnXTsKLQotICAgIGFuZ3VsYXIuZm9yRWFjaCh1bmltcGxlbWVudGVkTWV0aG9kcywg
ZnVuY3Rpb24obWV0aG9kTmFtZSkgewotICAgICAgc2VsZlttZXRob2ROYW1lXSA9IGZ1bmN0aW9u
KCkgewotICAgICAgICB0aHJvdyBFcnJvcigiTWV0aG9kICciICsgbWV0aG9kTmFtZSArICInIGlz
IG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgVHpEYXRlIG1vY2siKTsKLSAgICAgIH07Ci0gICAgfSk7
Ci0KLSAgICByZXR1cm4gc2VsZjsKLSAgfTsKLQotICAvL21ha2UgInR6RGF0ZUluc3RhbmNlIGlu
c3RhbmNlb2YgRGF0ZSIgcmV0dXJuIHRydWUKLSAgYW5ndWxhci5tb2NrLlR6RGF0ZS5wcm90b3R5
cGUgPSBEYXRlLnByb3RvdHlwZTsKLX0pKCk7Ci0KLQotLyoqCi0gKiBAbmdkb2MgZnVuY3Rpb24K
LSAqIEBuYW1lIGFuZ3VsYXIubW9jay5kdW1wCi0gKiBAZGVzY3JpcHRpb24KLSAqCi0gKiAqTk9U
RSo6IHRoaXMgaXMgbm90IGFuIGluamVjdGFibGUgaW5zdGFuY2UsIGp1c3QgYSBnbG9iYWxseSBh
dmFpbGFibGUgZnVuY3Rpb24uCi0gKgotICogTWV0aG9kIGZvciBzZXJpYWxpemluZyBjb21tb24g
YW5ndWxhciBvYmplY3RzIChzY29wZSwgZWxlbWVudHMsIGV0Yy4uKSBpbnRvIHN0cmluZ3MsIHVz
ZWZ1bCBmb3IgZGVidWdnaW5nLgotICoKLSAqIFRoaXMgbWV0aG9kIGlzIGFsc28gYXZhaWxhYmxl
IG9uIHdpbmRvdywgd2hlcmUgaXQgY2FuIGJlIHVzZWQgdG8gZGlzcGxheSBvYmplY3RzIG9uIGRl
YnVnIGNvbnNvbGUuCi0gKgotICogQHBhcmFtIHsqfSBvYmplY3QgLSBhbnkgb2JqZWN0IHRvIHR1
cm4gaW50byBzdHJpbmcuCi0gKiBAcmV0dXJuIHtzdHJpbmd9IGEgc2VyaWFsaXplZCBzdHJpbmcg
b2YgdGhlIGFyZ3VtZW50Ci0gKi8KLWFuZ3VsYXIubW9jay5kdW1wID0gZnVuY3Rpb24ob2JqZWN0
KSB7Ci0gIHJldHVybiBzZXJpYWxpemUob2JqZWN0KTsKLQotICBmdW5jdGlvbiBzZXJpYWxpemUo
b2JqZWN0KSB7Ci0gICAgdmFyIG91dDsKLQotICAgIGlmIChhbmd1bGFyLmlzRWxlbWVudChvYmpl
Y3QpKSB7Ci0gICAgICBvYmplY3QgPSBhbmd1bGFyLmVsZW1lbnQob2JqZWN0KTsKLSAgICAgIG91
dCA9IGFuZ3VsYXIuZWxlbWVudCgnPGRpdj48L2Rpdj4nKTsKLSAgICAgIGFuZ3VsYXIuZm9yRWFj
aChvYmplY3QsIGZ1bmN0aW9uKGVsZW1lbnQpIHsKLSAgICAgICAgb3V0LmFwcGVuZChhbmd1bGFy
LmVsZW1lbnQoZWxlbWVudCkuY2xvbmUoKSk7Ci0gICAgICB9KTsKLSAgICAgIG91dCA9IG91dC5o
dG1sKCk7Ci0gICAgfSBlbHNlIGlmIChhbmd1bGFyLmlzQXJyYXkob2JqZWN0KSkgewotICAgICAg
b3V0ID0gW107Ci0gICAgICBhbmd1bGFyLmZvckVhY2gob2JqZWN0LCBmdW5jdGlvbihvKSB7Ci0g
ICAgICAgIG91dC5wdXNoKHNlcmlhbGl6ZShvKSk7Ci0gICAgICB9KTsKLSAgICAgIG91dCA9ICdb
ICcgKyBvdXQuam9pbignLCAnKSArICcgXSc7Ci0gICAgfSBlbHNlIGlmIChhbmd1bGFyLmlzT2Jq
ZWN0KG9iamVjdCkpIHsKLSAgICAgIGlmIChhbmd1bGFyLmlzRnVuY3Rpb24ob2JqZWN0LiRldmFs
KSAmJiBhbmd1bGFyLmlzRnVuY3Rpb24ob2JqZWN0LiRhcHBseSkpIHsKLSAgICAgICAgb3V0ID0g
c2VyaWFsaXplU2NvcGUob2JqZWN0KTsKLSAgICAgIH0gZWxzZSBpZiAob2JqZWN0IGluc3RhbmNl
b2YgRXJyb3IpIHsKLSAgICAgICAgb3V0ID0gb2JqZWN0LnN0YWNrIHx8ICgnJyArIG9iamVjdC5u
YW1lICsgJzogJyArIG9iamVjdC5tZXNzYWdlKTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIG91
dCA9IGFuZ3VsYXIudG9Kc29uKG9iamVjdCwgdHJ1ZSk7Ci0gICAgICB9Ci0gICAgfSBlbHNlIHsK
LSAgICAgIG91dCA9IFN0cmluZyhvYmplY3QpOwotICAgIH0KLQotICAgIHJldHVybiBvdXQ7Ci0g
IH0KLQotICBmdW5jdGlvbiBzZXJpYWxpemVTY29wZShzY29wZSwgb2Zmc2V0KSB7Ci0gICAgb2Zm
c2V0ID0gb2Zmc2V0IHx8ICAnICAnOwotICAgIHZhciBsb2cgPSBbb2Zmc2V0ICsgJ1Njb3BlKCcg
KyBzY29wZS4kaWQgKyAnKTogeyddOwotICAgIGZvciAoIHZhciBrZXkgaW4gc2NvcGUgKSB7Ci0g
ICAgICBpZiAoc2NvcGUuaGFzT3duUHJvcGVydHkoa2V5KSAmJiAha2V5Lm1hdGNoKC9eKFwkfHRo
aXMpLykpIHsKLSAgICAgICAgbG9nLnB1c2goJyAgJyArIGtleSArICc6ICcgKyBhbmd1bGFyLnRv
SnNvbihzY29wZVtrZXldKSk7Ci0gICAgICB9Ci0gICAgfQotICAgIHZhciBjaGlsZCA9IHNjb3Bl
LiQkY2hpbGRIZWFkOwotICAgIHdoaWxlKGNoaWxkKSB7Ci0gICAgICBsb2cucHVzaChzZXJpYWxp
emVTY29wZShjaGlsZCwgb2Zmc2V0ICsgJyAgJykpOwotICAgICAgY2hpbGQgPSBjaGlsZC4kJG5l
eHRTaWJsaW5nOwotICAgIH0KLSAgICBsb2cucHVzaCgnfScpOwotICAgIHJldHVybiBsb2cuam9p
bignXG4nICsgb2Zmc2V0KTsKLSAgfQotfTsKLQotLyoqCi0gKiBAbmdkb2Mgb2JqZWN0Ci0gKiBA
bmFtZSBuZ01vY2suJGh0dHBCYWNrZW5kCi0gKiBAZGVzY3JpcHRpb24KLSAqIEZha2UgSFRUUCBi
YWNrZW5kIGltcGxlbWVudGF0aW9uIHN1aXRhYmxlIGZvciB1bml0IHRlc3RpbmcgYXBwbGljYXRp
b24gdGhhdCB1c2UgdGhlCi0gKiB7QGxpbmsgbmcuJGh0dHAgJGh0dHAgc2VydmljZX0uCi0gKgot
ICogKk5vdGUqOiBGb3IgZmFrZSBodHRwIGJhY2tlbmQgaW1wbGVtZW50YXRpb24gc3VpdGFibGUg
Zm9yIGVuZC10by1lbmQgdGVzdGluZyBvciBiYWNrZW5kLWxlc3MKLSAqIGRldmVsb3BtZW50IHBs
ZWFzZSBzZWUge0BsaW5rIG5nTW9ja0UyRS4kaHR0cEJhY2tlbmQgZTJlICRodHRwQmFja2VuZCBt
b2NrfS4KLSAqCi0gKiBEdXJpbmcgdW5pdCB0ZXN0aW5nLCB3ZSB3YW50IG91ciB1bml0IHRlc3Rz
IHRvIHJ1biBxdWlja2x5IGFuZCBoYXZlIG5vIGV4dGVybmFsIGRlcGVuZGVuY2llcyBzbwotICog
d2UgZG9u4oCZdCB3YW50IHRvIHNlbmQge0BsaW5rIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEu
b3JnL2VuL3htbGh0dHByZXF1ZXN0IFhIUn0gb3IKLSAqIHtAbGluayBodHRwOi8vZW4ud2lraXBl
ZGlhLm9yZy93aWtpL0pTT05QIEpTT05QfSByZXF1ZXN0cyB0byBhIHJlYWwgc2VydmVyLiBBbGwg
d2UgcmVhbGx5IG5lZWQgaXMKLSAqIHRvIHZlcmlmeSB3aGV0aGVyIGEgY2VydGFpbiByZXF1ZXN0
IGhhcyBiZWVuIHNlbnQgb3Igbm90LCBvciBhbHRlcm5hdGl2ZWx5IGp1c3QgbGV0IHRoZQotICog
YXBwbGljYXRpb24gbWFrZSByZXF1ZXN0cywgcmVzcG9uZCB3aXRoIHByZS10cmFpbmVkIHJlc3Bv
bnNlcyBhbmQgYXNzZXJ0IHRoYXQgdGhlIGVuZCByZXN1bHQgaXMKLSAqIHdoYXQgd2UgZXhwZWN0
IGl0IHRvIGJlLgotICoKLSAqIFRoaXMgbW9jayBpbXBsZW1lbnRhdGlvbiBjYW4gYmUgdXNlZCB0
byByZXNwb25kIHdpdGggc3RhdGljIG9yIGR5bmFtaWMgcmVzcG9uc2VzIHZpYSB0aGUKLSAqIGBl
eHBlY3RgIGFuZCBgd2hlbmAgYXBpcyBhbmQgdGhlaXIgc2hvcnRjdXRzIChgZXhwZWN0R0VUYCwg
YHdoZW5QT1NUYCwgZXRjKS4KLSAqCi0gKiBXaGVuIGFuIEFuZ3VsYXIgYXBwbGljYXRpb24gbmVl
ZHMgc29tZSBkYXRhIGZyb20gYSBzZXJ2ZXIsIGl0IGNhbGxzIHRoZSAkaHR0cCBzZXJ2aWNlLCB3
aGljaAotICogc2VuZHMgdGhlIHJlcXVlc3QgdG8gYSByZWFsIHNlcnZlciB1c2luZyAkaHR0cEJh
Y2tlbmQgc2VydmljZS4gV2l0aCBkZXBlbmRlbmN5IGluamVjdGlvbiwgaXQgaXMKLSAqIGVhc3kg
dG8gaW5qZWN0ICRodHRwQmFja2VuZCBtb2NrICh3aGljaCBoYXMgdGhlIHNhbWUgQVBJIGFzICRo
dHRwQmFja2VuZCkgYW5kIHVzZSBpdCB0byB2ZXJpZnkKLSAqIHRoZSByZXF1ZXN0cyBhbmQgcmVz
cG9uZCB3aXRoIHNvbWUgdGVzdGluZyBkYXRhIHdpdGhvdXQgc2VuZGluZyBhIHJlcXVlc3QgdG8g
cmVhbCBzZXJ2ZXIuCi0gKgotICogVGhlcmUgYXJlIHR3byB3YXlzIHRvIHNwZWNpZnkgd2hhdCB0
ZXN0IGRhdGEgc2hvdWxkIGJlIHJldHVybmVkIGFzIGh0dHAgcmVzcG9uc2VzIGJ5IHRoZSBtb2Nr
Ci0gKiBiYWNrZW5kIHdoZW4gdGhlIGNvZGUgdW5kZXIgdGVzdCBtYWtlcyBodHRwIHJlcXVlc3Rz
OgotICoKLSAqIC0gYCRodHRwQmFja2VuZC5leHBlY3RgIC0gc3BlY2lmaWVzIGEgcmVxdWVzdCBl
eHBlY3RhdGlvbgotICogLSBgJGh0dHBCYWNrZW5kLndoZW5gIC0gc3BlY2lmaWVzIGEgYmFja2Vu
ZCBkZWZpbml0aW9uCi0gKgotICoKLSAqICMgUmVxdWVzdCBFeHBlY3RhdGlvbnMgdnMgQmFja2Vu
ZCBEZWZpbml0aW9ucwotICoKLSAqIFJlcXVlc3QgZXhwZWN0YXRpb25zIHByb3ZpZGUgYSB3YXkg
dG8gbWFrZSBhc3NlcnRpb25zIGFib3V0IHJlcXVlc3RzIG1hZGUgYnkgdGhlIGFwcGxpY2F0aW9u
IGFuZAotICogdG8gZGVmaW5lIHJlc3BvbnNlcyBmb3IgdGhvc2UgcmVxdWVzdHMuIFRoZSB0ZXN0
IHdpbGwgZmFpbCBpZiB0aGUgZXhwZWN0ZWQgcmVxdWVzdHMgYXJlIG5vdCBtYWRlCi0gKiBvciB0
aGV5IGFyZSBtYWRlIGluIHRoZSB3cm9uZyBvcmRlci4KLSAqCi0gKiBCYWNrZW5kIGRlZmluaXRp
b25zIGFsbG93IHlvdSB0byBkZWZpbmUgYSBmYWtlIGJhY2tlbmQgZm9yIHlvdXIgYXBwbGljYXRp
b24gd2hpY2ggZG9lc24ndCBhc3NlcnQKLSAqIGlmIGEgcGFydGljdWxhciByZXF1ZXN0IHdhcyBt
YWRlIG9yIG5vdCwgaXQganVzdCByZXR1cm5zIGEgdHJhaW5lZCByZXNwb25zZSBpZiBhIHJlcXVl
c3QgaXMgbWFkZS4KLSAqIFRoZSB0ZXN0IHdpbGwgcGFzcyB3aGV0aGVyIG9yIG5vdCB0aGUgcmVx
dWVzdCBnZXRzIG1hZGUgZHVyaW5nIHRlc3RpbmcuCi0gKgotICoKLSAqIDx0YWJsZSBjbGFzcz0i
dGFibGUiPgotICogICA8dHI+PHRoIHdpZHRoPSIyMjBweCI+PC90aD48dGg+UmVxdWVzdCBleHBl
Y3RhdGlvbnM8L3RoPjx0aD5CYWNrZW5kIGRlZmluaXRpb25zPC90aD48L3RyPgotICogICA8dHI+
Ci0gKiAgICAgPHRoPlN5bnRheDwvdGg+Ci0gKiAgICAgPHRkPi5leHBlY3QoLi4uKS5yZXNwb25k
KC4uLik8L3RkPgotICogICAgIDx0ZD4ud2hlbiguLi4pLnJlc3BvbmQoLi4uKTwvdGQ+Ci0gKiAg
IDwvdHI+Ci0gKiAgIDx0cj4KLSAqICAgICA8dGg+VHlwaWNhbCB1c2FnZTwvdGg+Ci0gKiAgICAg
PHRkPnN0cmljdCB1bml0IHRlc3RzPC90ZD4KLSAqICAgICA8dGQ+bG9vc2UgKGJsYWNrLWJveCkg
dW5pdCB0ZXN0aW5nPC90ZD4KLSAqICAgPC90cj4KLSAqICAgPHRyPgotICogICAgIDx0aD5GdWxm
aWxscyBtdWx0aXBsZSByZXF1ZXN0czwvdGg+Ci0gKiAgICAgPHRkPk5PPC90ZD4KLSAqICAgICA8
dGQ+WUVTPC90ZD4KLSAqICAgPC90cj4KLSAqICAgPHRyPgotICogICAgIDx0aD5PcmRlciBvZiBy
ZXF1ZXN0cyBtYXR0ZXJzPC90aD4KLSAqICAgICA8dGQ+WUVTPC90ZD4KLSAqICAgICA8dGQ+Tk88
L3RkPgotICogICA8L3RyPgotICogICA8dHI+Ci0gKiAgICAgPHRoPlJlcXVlc3QgcmVxdWlyZWQ8
L3RoPgotICogICAgIDx0ZD5ZRVM8L3RkPgotICogICAgIDx0ZD5OTzwvdGQ+Ci0gKiAgIDwvdHI+
Ci0gKiAgIDx0cj4KLSAqICAgICA8dGg+UmVzcG9uc2UgcmVxdWlyZWQ8L3RoPgotICogICAgIDx0
ZD5vcHRpb25hbCAoc2VlIGJlbG93KTwvdGQ+Ci0gKiAgICAgPHRkPllFUzwvdGQ+Ci0gKiAgIDwv
dHI+Ci0gKiA8L3RhYmxlPgotICoKLSAqIEluIGNhc2VzIHdoZXJlIGJvdGggYmFja2VuZCBkZWZp
bml0aW9ucyBhbmQgcmVxdWVzdCBleHBlY3RhdGlvbnMgYXJlIHNwZWNpZmllZCBkdXJpbmcgdW5p
dAotICogdGVzdGluZywgdGhlIHJlcXVlc3QgZXhwZWN0YXRpb25zIGFyZSBldmFsdWF0ZWQgZmly
c3QuCi0gKgotICogSWYgYSByZXF1ZXN0IGV4cGVjdGF0aW9uIGhhcyBubyByZXNwb25zZSBzcGVj
aWZpZWQsIHRoZSBhbGdvcml0aG0gd2lsbCBzZWFyY2ggeW91ciBiYWNrZW5kCi0gKiBkZWZpbml0
aW9ucyBmb3IgYW4gYXBwcm9wcmlhdGUgcmVzcG9uc2UuCi0gKgotICogSWYgYSByZXF1ZXN0IGRp
ZG4ndCBtYXRjaCBhbnkgZXhwZWN0YXRpb24gb3IgaWYgdGhlIGV4cGVjdGF0aW9uIGRvZXNuJ3Qg
aGF2ZSB0aGUgcmVzcG9uc2UKLSAqIGRlZmluZWQsIHRoZSBiYWNrZW5kIGRlZmluaXRpb25zIGFy
ZSBldmFsdWF0ZWQgaW4gc2VxdWVudGlhbCBvcmRlciB0byBzZWUgaWYgYW55IG9mIHRoZW0gbWF0
Y2gKLSAqIHRoZSByZXF1ZXN0LiBUaGUgcmVzcG9uc2UgZnJvbSB0aGUgZmlyc3QgbWF0Y2hlZCBk
ZWZpbml0aW9uIGlzIHJldHVybmVkLgotICoKLSAqCi0gKiAjIEZsdXNoaW5nIEhUVFAgcmVxdWVz
dHMKLSAqCi0gKiBUaGUgJGh0dHBCYWNrZW5kIHVzZWQgaW4gcHJvZHVjdGlvbiwgYWx3YXlzIHJl
c3BvbmRzIHRvIHJlcXVlc3RzIHdpdGggcmVzcG9uc2VzIGFzeW5jaHJvbm91c2x5LgotICogSWYg
d2UgcHJlc2VydmVkIHRoaXMgYmVoYXZpb3IgaW4gdW5pdCB0ZXN0aW5nLCB3ZSdkIGhhdmUgdG8g
Y3JlYXRlIGFzeW5jIHVuaXQgdGVzdHMsIHdoaWNoIGFyZQotICogaGFyZCB0byB3cml0ZSwgZm9s
bG93IGFuZCBtYWludGFpbi4gQXQgdGhlIHNhbWUgdGltZSB0aGUgdGVzdGluZyBtb2NrLCBjYW4n
dCByZXNwb25kCi0gKiBzeW5jaHJvbm91c2x5IGJlY2F1c2UgdGhhdCB3b3VsZCBjaGFuZ2UgdGhl
IGV4ZWN1dGlvbiBvZiB0aGUgY29kZSB1bmRlciB0ZXN0LiBGb3IgdGhpcyByZWFzb24gdGhlCi0g
KiBtb2NrICRodHRwQmFja2VuZCBoYXMgYSBgZmx1c2goKWAgbWV0aG9kLCB3aGljaCBhbGxvd3Mg
dGhlIHRlc3QgdG8gZXhwbGljaXRseSBmbHVzaCBwZW5kaW5nCi0gKiByZXF1ZXN0cyBhbmQgdGh1
cyBwcmVzZXJ2aW5nIHRoZSBhc3luYyBhcGkgb2YgdGhlIGJhY2tlbmQsIHdoaWxlIGFsbG93aW5n
IHRoZSB0ZXN0IHRvIGV4ZWN1dGUKLSAqIHN5bmNocm9ub3VzbHkuCi0gKgotICoKLSAqICMgVW5p
dCB0ZXN0aW5nIHdpdGggbW9jayAkaHR0cEJhY2tlbmQKLSAqCi0gKiA8cHJlPgotICAgLy8gY29u
dHJvbGxlcgotICAgZnVuY3Rpb24gTXlDb250cm9sbGVyKCRzY29wZSwgJGh0dHApIHsKLSAgICAg
JGh0dHAuZ2V0KCcvYXV0aC5weScpLnN1Y2Nlc3MoZnVuY3Rpb24oZGF0YSkgewotICAgICAgICRz
Y29wZS51c2VyID0gZGF0YTsKLSAgICAgfSk7Ci0KLSAgICAgdGhpcy5zYXZlTWVzc2FnZSA9IGZ1
bmN0aW9uKG1lc3NhZ2UpIHsKLSAgICAgICAkc2NvcGUuc3RhdHVzID0gJ1NhdmluZy4uLic7Ci0g
ICAgICAgJGh0dHAucG9zdCgnL2FkZC1tc2cucHknLCBtZXNzYWdlKS5zdWNjZXNzKGZ1bmN0aW9u
KHJlc3BvbnNlKSB7Ci0gICAgICAgICAkc2NvcGUuc3RhdHVzID0gJyc7Ci0gICAgICAgfSkuZXJy
b3IoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAkc2NvcGUuc3RhdHVzID0gJ0VSUk9SISc7Ci0gICAg
ICAgfSk7Ci0gICAgIH07Ci0gICB9Ci0KLSAgIC8vIHRlc3RpbmcgY29udHJvbGxlcgotICAgdmFy
ICRodHRwQmFja2VuZDsKLQotICAgYmVmb3JlRWFjaChpbmplY3QoZnVuY3Rpb24oJGluamVjdG9y
KSB7Ci0gICAgICRodHRwQmFja2VuZCA9ICRpbmplY3Rvci5nZXQoJyRodHRwQmFja2VuZCcpOwot
Ci0gICAgIC8vIGJhY2tlbmQgZGVmaW5pdGlvbiBjb21tb24gZm9yIGFsbCB0ZXN0cwotICAgICAk
aHR0cEJhY2tlbmQud2hlbignR0VUJywgJy9hdXRoLnB5JykucmVzcG9uZCh7dXNlcklkOiAndXNl
clgnfSwgeydBLVRva2VuJzogJ3h4eCd9KTsKLSAgIH0pKTsKLQotCi0gICBhZnRlckVhY2goZnVu
Y3Rpb24oKSB7Ci0gICAgICRodHRwQmFja2VuZC52ZXJpZnlOb091dHN0YW5kaW5nRXhwZWN0YXRp
b24oKTsKLSAgICAgJGh0dHBCYWNrZW5kLnZlcmlmeU5vT3V0c3RhbmRpbmdSZXF1ZXN0KCk7Ci0g
ICB9KTsKLQotCi0gICBpdCgnc2hvdWxkIGZldGNoIGF1dGhlbnRpY2F0aW9uIHRva2VuJywgZnVu
Y3Rpb24oKSB7Ci0gICAgICRodHRwQmFja2VuZC5leHBlY3RHRVQoJy9hdXRoLnB5Jyk7Ci0gICAg
IHZhciBjb250cm9sbGVyID0gc2NvcGUuJG5ldyhNeUNvbnRyb2xsZXIpOwotICAgICAkaHR0cEJh
Y2tlbmQuZmx1c2goKTsKLSAgIH0pOwotCi0KLSAgIGl0KCdzaG91bGQgc2VuZCBtc2cgdG8gc2Vy
dmVyJywgZnVuY3Rpb24oKSB7Ci0gICAgIC8vIG5vdyB5b3UgZG9u4oCZdCBjYXJlIGFib3V0IHRo
ZSBhdXRoZW50aWNhdGlvbiwgYnV0Ci0gICAgIC8vIHRoZSBjb250cm9sbGVyIHdpbGwgc3RpbGwg
c2VuZCB0aGUgcmVxdWVzdCBhbmQKLSAgICAgLy8gJGh0dHBCYWNrZW5kIHdpbGwgcmVzcG9uZCB3
aXRob3V0IHlvdSBoYXZpbmcgdG8KLSAgICAgLy8gc3BlY2lmeSB0aGUgZXhwZWN0YXRpb24gYW5k
IHJlc3BvbnNlIGZvciB0aGlzIHJlcXVlc3QKLSAgICAgJGh0dHBCYWNrZW5kLmV4cGVjdFBPU1Qo
Jy9hZGQtbXNnLnB5JywgJ21lc3NhZ2UgY29udGVudCcpLnJlc3BvbmQoMjAxLCAnJyk7Ci0KLSAg
ICAgdmFyIGNvbnRyb2xsZXIgPSBzY29wZS4kbmV3KE15Q29udHJvbGxlcik7Ci0gICAgICRodHRw
QmFja2VuZC5mbHVzaCgpOwotICAgICBjb250cm9sbGVyLnNhdmVNZXNzYWdlKCdtZXNzYWdlIGNv
bnRlbnQnKTsKLSAgICAgZXhwZWN0KGNvbnRyb2xsZXIuc3RhdHVzKS50b0JlKCdTYXZpbmcuLi4n
KTsKLSAgICAgJGh0dHBCYWNrZW5kLmZsdXNoKCk7Ci0gICAgIGV4cGVjdChjb250cm9sbGVyLnN0
YXR1cykudG9CZSgnJyk7Ci0gICB9KTsKLQotCi0gICBpdCgnc2hvdWxkIHNlbmQgYXV0aCBoZWFk
ZXInLCBmdW5jdGlvbigpIHsKLSAgICAgJGh0dHBCYWNrZW5kLmV4cGVjdFBPU1QoJy9hZGQtbXNn
LnB5JywgdW5kZWZpbmVkLCBmdW5jdGlvbihoZWFkZXJzKSB7Ci0gICAgICAgLy8gY2hlY2sgaWYg
dGhlIGhlYWRlciB3YXMgc2VuZCwgaWYgaXQgd2Fzbid0IHRoZSBleHBlY3RhdGlvbiB3b24ndAot
ICAgICAgIC8vIG1hdGNoIHRoZSByZXF1ZXN0IGFuZCB0aGUgdGVzdCB3aWxsIGZhaWwKLSAgICAg
ICByZXR1cm4gaGVhZGVyc1snQXV0aG9yaXphdGlvbiddID09ICd4eHgnOwotICAgICB9KS5yZXNw
b25kKDIwMSwgJycpOwotCi0gICAgIHZhciBjb250cm9sbGVyID0gc2NvcGUuJG5ldyhNeUNvbnRy
b2xsZXIpOwotICAgICBjb250cm9sbGVyLnNhdmVNZXNzYWdlKCd3aGF0ZXZlcicpOwotICAgICAk
aHR0cEJhY2tlbmQuZmx1c2goKTsKLSAgIH0pOwotICAgPC9wcmU+Ci0gKi8KLWFuZ3VsYXIubW9j
ay4kSHR0cEJhY2tlbmRQcm92aWRlciA9IGZ1bmN0aW9uKCkgewotICB0aGlzLiRnZXQgPSBbY3Jl
YXRlSHR0cEJhY2tlbmRNb2NrXTsKLX07Ci0KLS8qKgotICogR2VuZXJhbCBmYWN0b3J5IGZ1bmN0
aW9uIGZvciAkaHR0cEJhY2tlbmQgbW9jay4KLSAqIFJldHVybnMgaW5zdGFuY2UgZm9yIHVuaXQg
dGVzdGluZyAod2hlbiBubyBhcmd1bWVudHMgc3BlY2lmaWVkKToKLSAqICAgLSBwYXNzaW5nIHRo
cm91Z2ggaXMgZGlzYWJsZWQKLSAqICAgLSBhdXRvIGZsdXNoaW5nIGlzIGRpc2FibGVkCi0gKgot
ICogUmV0dXJucyBpbnN0YW5jZSBmb3IgZTJlIHRlc3RpbmcgKHdoZW4gYCRkZWxlZ2F0ZWAgYW5k
IGAkYnJvd3NlcmAgc3BlY2lmaWVkKToKLSAqICAgLSBwYXNzaW5nIHRocm91Z2ggKGRlbGVnYXRp
bmcgcmVxdWVzdCB0byByZWFsIGJhY2tlbmQpIGlzIGVuYWJsZWQKLSAqICAgLSBhdXRvIGZsdXNo
aW5nIGlzIGVuYWJsZWQKLSAqCi0gKiBAcGFyYW0ge09iamVjdD19ICRkZWxlZ2F0ZSBSZWFsICRo
dHRwQmFja2VuZCBpbnN0YW5jZSAoYWxsb3cgcGFzc2luZyB0aHJvdWdoIGlmIHNwZWNpZmllZCkK
LSAqIEBwYXJhbSB7T2JqZWN0PX0gJGJyb3dzZXIgQXV0by1mbHVzaGluZyBlbmFibGVkIGlmIHNw
ZWNpZmllZAotICogQHJldHVybiB7T2JqZWN0fSBJbnN0YW5jZSBvZiAkaHR0cEJhY2tlbmQgbW9j
awotICovCi1mdW5jdGlvbiBjcmVhdGVIdHRwQmFja2VuZE1vY2soJGRlbGVnYXRlLCAkYnJvd3Nl
cikgewotICB2YXIgZGVmaW5pdGlvbnMgPSBbXSwKLSAgICAgIGV4cGVjdGF0aW9ucyA9IFtdLAot
ICAgICAgcmVzcG9uc2VzID0gW10sCi0gICAgICByZXNwb25zZXNQdXNoID0gYW5ndWxhci5iaW5k
KHJlc3BvbnNlcywgcmVzcG9uc2VzLnB1c2gpOwotCi0gIGZ1bmN0aW9uIGNyZWF0ZVJlc3BvbnNl
KHN0YXR1cywgZGF0YSwgaGVhZGVycykgewotICAgIGlmIChhbmd1bGFyLmlzRnVuY3Rpb24oc3Rh
dHVzKSkgcmV0dXJuIHN0YXR1czsKLQotICAgIHJldHVybiBmdW5jdGlvbigpIHsKLSAgICAgIHJl
dHVybiBhbmd1bGFyLmlzTnVtYmVyKHN0YXR1cykKLSAgICAgICAgICA/IFtzdGF0dXMsIGRhdGEs
IGhlYWRlcnNdCi0gICAgICAgICAgOiBbMjAwLCBzdGF0dXMsIGRhdGFdOwotICAgIH07Ci0gIH0K
LQotICAvLyBUT0RPKHZvanRhKTogY2hhbmdlIHBhcmFtcyB0bzogbWV0aG9kLCB1cmwsIGRhdGEs
IGhlYWRlcnMsIGNhbGxiYWNrCi0gIGZ1bmN0aW9uICRodHRwQmFja2VuZChtZXRob2QsIHVybCwg
ZGF0YSwgY2FsbGJhY2ssIGhlYWRlcnMpIHsKLSAgICB2YXIgeGhyID0gbmV3IE1vY2tYaHIoKSwK
LSAgICAgICAgZXhwZWN0YXRpb24gPSBleHBlY3RhdGlvbnNbMF0sCi0gICAgICAgIHdhc0V4cGVj
dGVkID0gZmFsc2U7Ci0KLSAgICBmdW5jdGlvbiBwcmV0dHlQcmludChkYXRhKSB7Ci0gICAgICBy
ZXR1cm4gKGFuZ3VsYXIuaXNTdHJpbmcoZGF0YSkgfHwgYW5ndWxhci5pc0Z1bmN0aW9uKGRhdGEp
IHx8IGRhdGEgaW5zdGFuY2VvZiBSZWdFeHApCi0gICAgICAgICAgPyBkYXRhCi0gICAgICAgICAg
OiBhbmd1bGFyLnRvSnNvbihkYXRhKTsKLSAgICB9Ci0KLSAgICBpZiAoZXhwZWN0YXRpb24gJiYg
ZXhwZWN0YXRpb24ubWF0Y2gobWV0aG9kLCB1cmwpKSB7Ci0gICAgICBpZiAoIWV4cGVjdGF0aW9u
Lm1hdGNoRGF0YShkYXRhKSkKLSAgICAgICAgdGhyb3cgRXJyb3IoJ0V4cGVjdGVkICcgKyBleHBl
Y3RhdGlvbiArICcgd2l0aCBkaWZmZXJlbnQgZGF0YVxuJyArCi0gICAgICAgICAgICAnRVhQRUNU
RUQ6ICcgKyBwcmV0dHlQcmludChleHBlY3RhdGlvbi5kYXRhKSArICdcbkdPVDogICAgICAnICsg
ZGF0YSk7Ci0KLSAgICAgIGlmICghZXhwZWN0YXRpb24ubWF0Y2hIZWFkZXJzKGhlYWRlcnMpKQot
ICAgICAgICB0aHJvdyBFcnJvcignRXhwZWN0ZWQgJyArIGV4cGVjdGF0aW9uICsgJyB3aXRoIGRp
ZmZlcmVudCBoZWFkZXJzXG4nICsKLSAgICAgICAgICAgICdFWFBFQ1RFRDogJyArIHByZXR0eVBy
aW50KGV4cGVjdGF0aW9uLmhlYWRlcnMpICsgJ1xuR09UOiAgICAgICcgKwotICAgICAgICAgICAg
cHJldHR5UHJpbnQoaGVhZGVycykpOwotCi0gICAgICBleHBlY3RhdGlvbnMuc2hpZnQoKTsKLQot
ICAgICAgaWYgKGV4cGVjdGF0aW9uLnJlc3BvbnNlKSB7Ci0gICAgICAgIHJlc3BvbnNlcy5wdXNo
KGZ1bmN0aW9uKCkgewotICAgICAgICAgIHZhciByZXNwb25zZSA9IGV4cGVjdGF0aW9uLnJlc3Bv
bnNlKG1ldGhvZCwgdXJsLCBkYXRhLCBoZWFkZXJzKTsKLSAgICAgICAgICB4aHIuJCRyZXNwSGVh
ZGVycyA9IHJlc3BvbnNlWzJdOwotICAgICAgICAgIGNhbGxiYWNrKHJlc3BvbnNlWzBdLCByZXNw
b25zZVsxXSwgeGhyLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKTsKLSAgICAgICAgfSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICAgIH0KLSAgICAgIHdhc0V4cGVjdGVkID0gdHJ1ZTsKLSAgICB9Ci0K
LSAgICB2YXIgaSA9IC0xLCBkZWZpbml0aW9uOwotICAgIHdoaWxlICgoZGVmaW5pdGlvbiA9IGRl
ZmluaXRpb25zWysraV0pKSB7Ci0gICAgICBpZiAoZGVmaW5pdGlvbi5tYXRjaChtZXRob2QsIHVy
bCwgZGF0YSwgaGVhZGVycyB8fCB7fSkpIHsKLSAgICAgICAgaWYgKGRlZmluaXRpb24ucmVzcG9u
c2UpIHsKLSAgICAgICAgICAvLyBpZiAkYnJvd3NlciBzcGVjaWZpZWQsIHdlIGRvIGF1dG8gZmx1
c2ggYWxsIHJlcXVlc3RzCi0gICAgICAgICAgKCRicm93c2VyID8gJGJyb3dzZXIuZGVmZXIgOiBy
ZXNwb25zZXNQdXNoKShmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHZhciByZXNwb25zZSA9IGRl
ZmluaXRpb24ucmVzcG9uc2UobWV0aG9kLCB1cmwsIGRhdGEsIGhlYWRlcnMpOwotICAgICAgICAg
ICAgeGhyLiQkcmVzcEhlYWRlcnMgPSByZXNwb25zZVsyXTsKLSAgICAgICAgICAgIGNhbGxiYWNr
KHJlc3BvbnNlWzBdLCByZXNwb25zZVsxXSwgeGhyLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKTsK
LSAgICAgICAgICB9KTsKLSAgICAgICAgfSBlbHNlIGlmIChkZWZpbml0aW9uLnBhc3NUaHJvdWdo
KSB7Ci0gICAgICAgICAgJGRlbGVnYXRlKG1ldGhvZCwgdXJsLCBkYXRhLCBjYWxsYmFjaywgaGVh
ZGVycyk7Ci0gICAgICAgIH0gZWxzZSB0aHJvdyBFcnJvcignTm8gcmVzcG9uc2UgZGVmaW5lZCAh
Jyk7Ci0gICAgICAgIHJldHVybjsKLSAgICAgIH0KLSAgICB9Ci0gICAgdGhyb3cgd2FzRXhwZWN0
ZWQgPwotICAgICAgICBFcnJvcignTm8gcmVzcG9uc2UgZGVmaW5lZCAhJykgOgotICAgICAgICBF
cnJvcignVW5leHBlY3RlZCByZXF1ZXN0OiAnICsgbWV0aG9kICsgJyAnICsgdXJsICsgJ1xuJyAr
Ci0gICAgICAgICAgICAgIChleHBlY3RhdGlvbiA/ICdFeHBlY3RlZCAnICsgZXhwZWN0YXRpb24g
OiAnTm8gbW9yZSByZXF1ZXN0IGV4cGVjdGVkJykpOwotICB9Ci0KLSAgLyoqCi0gICAqIEBuZ2Rv
YyBtZXRob2QKLSAgICogQG5hbWUgbmdNb2NrLiRodHRwQmFja2VuZCN3aGVuCi0gICAqIEBtZXRo
b2RPZiBuZ01vY2suJGh0dHBCYWNrZW5kCi0gICAqIEBkZXNjcmlwdGlvbgotICAgKiBDcmVhdGVz
IGEgbmV3IGJhY2tlbmQgZGVmaW5pdGlvbi4KLSAgICoKLSAgICogQHBhcmFtIHtzdHJpbmd9IG1l
dGhvZCBIVFRQIG1ldGhvZC4KLSAgICogQHBhcmFtIHtzdHJpbmd8UmVnRXhwfSB1cmwgSFRUUCB1
cmwuCi0gICAqIEBwYXJhbSB7KHN0cmluZ3xSZWdFeHApPX0gZGF0YSBIVFRQIHJlcXVlc3QgYm9k
eS4KLSAgICogQHBhcmFtIHsoT2JqZWN0fGZ1bmN0aW9uKE9iamVjdCkpPX0gaGVhZGVycyBIVFRQ
IGhlYWRlcnMgb3IgZnVuY3Rpb24gdGhhdCByZWNlaXZlcyBodHRwIGhlYWRlcgotICAgKiAgIG9i
amVjdCBhbmQgcmV0dXJucyB0cnVlIGlmIHRoZSBoZWFkZXJzIG1hdGNoIHRoZSBjdXJyZW50IGRl
ZmluaXRpb24uCi0gICAqIEByZXR1cm5zIHtyZXF1ZXN0SGFuZGxlcn0gUmV0dXJucyBhbiBvYmpl
Y3Qgd2l0aCBgcmVzcG9uZGAgbWV0aG9kIHRoYXQgY29udHJvbCBob3cgYSBtYXRjaGVkCi0gICAq
ICAgcmVxdWVzdCBpcyBoYW5kbGVkLgotICAgKgotICAgKiAgLSByZXNwb25kIOKAkyBge2Z1bmN0
aW9uKFtzdGF0dXMsXSBkYXRhWywgaGVhZGVyc10pfGZ1bmN0aW9uKGZ1bmN0aW9uKG1ldGhvZCwg
dXJsLCBkYXRhLCBoZWFkZXJzKX1gCi0gICAqICAgIOKAkyBUaGUgcmVzcG9uZCBtZXRob2QgdGFr
ZXMgYSBzZXQgb2Ygc3RhdGljIGRhdGEgdG8gYmUgcmV0dXJuZWQgb3IgYSBmdW5jdGlvbiB0aGF0
IGNhbiByZXR1cm4KLSAgICogICAgYW4gYXJyYXkgY29udGFpbmluZyByZXNwb25zZSBzdGF0dXMg
KG51bWJlciksIHJlc3BvbnNlIGRhdGEgKHN0cmluZykgYW5kIHJlc3BvbnNlIGhlYWRlcnMKLSAg
ICogICAgKE9iamVjdCkuCi0gICAqLwotICAkaHR0cEJhY2tlbmQud2hlbiA9IGZ1bmN0aW9uKG1l
dGhvZCwgdXJsLCBkYXRhLCBoZWFkZXJzKSB7Ci0gICAgdmFyIGRlZmluaXRpb24gPSBuZXcgTW9j
a0h0dHBFeHBlY3RhdGlvbihtZXRob2QsIHVybCwgZGF0YSwgaGVhZGVycyksCi0gICAgICAgIGNo
YWluID0gewotICAgICAgICAgIHJlc3BvbmQ6IGZ1bmN0aW9uKHN0YXR1cywgZGF0YSwgaGVhZGVy
cykgewotICAgICAgICAgICAgZGVmaW5pdGlvbi5yZXNwb25zZSA9IGNyZWF0ZVJlc3BvbnNlKHN0
YXR1cywgZGF0YSwgaGVhZGVycyk7Ci0gICAgICAgICAgfQotICAgICAgICB9OwotCi0gICAgaWYg
KCRicm93c2VyKSB7Ci0gICAgICBjaGFpbi5wYXNzVGhyb3VnaCA9IGZ1bmN0aW9uKCkgewotICAg
ICAgICBkZWZpbml0aW9uLnBhc3NUaHJvdWdoID0gdHJ1ZTsKLSAgICAgIH07Ci0gICAgfQotCi0g
ICAgZGVmaW5pdGlvbnMucHVzaChkZWZpbml0aW9uKTsKLSAgICByZXR1cm4gY2hhaW47Ci0gIH07
Ci0KLSAgLyoqCi0gICAqIEBuZ2RvYyBtZXRob2QKLSAgICogQG5hbWUgbmdNb2NrLiRodHRwQmFj
a2VuZCN3aGVuR0VUCi0gICAqIEBtZXRob2RPZiBuZ01vY2suJGh0dHBCYWNrZW5kCi0gICAqIEBk
ZXNjcmlwdGlvbgotICAgKiBDcmVhdGVzIGEgbmV3IGJhY2tlbmQgZGVmaW5pdGlvbiBmb3IgR0VU
IHJlcXVlc3RzLiBGb3IgbW9yZSBpbmZvIHNlZSBgd2hlbigpYC4KLSAgICoKLSAgICogQHBhcmFt
IHtzdHJpbmd8UmVnRXhwfSB1cmwgSFRUUCB1cmwuCi0gICAqIEBwYXJhbSB7KE9iamVjdHxmdW5j
dGlvbihPYmplY3QpKT19IGhlYWRlcnMgSFRUUCBoZWFkZXJzLgotICAgKiBAcmV0dXJucyB7cmVx
dWVzdEhhbmRsZXJ9IFJldHVybnMgYW4gb2JqZWN0IHdpdGggYHJlc3BvbmRgIG1ldGhvZCB0aGF0
IGNvbnRyb2wgaG93IGEgbWF0Y2hlZAotICAgKiByZXF1ZXN0IGlzIGhhbmRsZWQuCi0gICAqLwot
Ci0gIC8qKgotICAgKiBAbmdkb2MgbWV0aG9kCi0gICAqIEBuYW1lIG5nTW9jay4kaHR0cEJhY2tl
bmQjd2hlbkhFQUQKLSAgICogQG1ldGhvZE9mIG5nTW9jay4kaHR0cEJhY2tlbmQKLSAgICogQGRl
c2NyaXB0aW9uCi0gICAqIENyZWF0ZXMgYSBuZXcgYmFja2VuZCBkZWZpbml0aW9uIGZvciBIRUFE
IHJlcXVlc3RzLiBGb3IgbW9yZSBpbmZvIHNlZSBgd2hlbigpYC4KLSAgICoKLSAgICogQHBhcmFt
IHtzdHJpbmd8UmVnRXhwfSB1cmwgSFRUUCB1cmwuCi0gICAqIEBwYXJhbSB7KE9iamVjdHxmdW5j
dGlvbihPYmplY3QpKT19IGhlYWRlcnMgSFRUUCBoZWFkZXJzLgotICAgKiBAcmV0dXJucyB7cmVx
dWVzdEhhbmRsZXJ9IFJldHVybnMgYW4gb2JqZWN0IHdpdGggYHJlc3BvbmRgIG1ldGhvZCB0aGF0
IGNvbnRyb2wgaG93IGEgbWF0Y2hlZAotICAgKiByZXF1ZXN0IGlzIGhhbmRsZWQuCi0gICAqLwot
Ci0gIC8qKgotICAgKiBAbmdkb2MgbWV0aG9kCi0gICAqIEBuYW1lIG5nTW9jay4kaHR0cEJhY2tl
bmQjd2hlbkRFTEVURQotICAgKiBAbWV0aG9kT2YgbmdNb2NrLiRodHRwQmFja2VuZAotICAgKiBA
ZGVzY3JpcHRpb24KLSAgICogQ3JlYXRlcyBhIG5ldyBiYWNrZW5kIGRlZmluaXRpb24gZm9yIERF
TEVURSByZXF1ZXN0cy4gRm9yIG1vcmUgaW5mbyBzZWUgYHdoZW4oKWAuCi0gICAqCi0gICAqIEBw
YXJhbSB7c3RyaW5nfFJlZ0V4cH0gdXJsIEhUVFAgdXJsLgotICAgKiBAcGFyYW0geyhPYmplY3R8
ZnVuY3Rpb24oT2JqZWN0KSk9fSBoZWFkZXJzIEhUVFAgaGVhZGVycy4KLSAgICogQHJldHVybnMg
e3JlcXVlc3RIYW5kbGVyfSBSZXR1cm5zIGFuIG9iamVjdCB3aXRoIGByZXNwb25kYCBtZXRob2Qg
dGhhdCBjb250cm9sIGhvdyBhIG1hdGNoZWQKLSAgICogcmVxdWVzdCBpcyBoYW5kbGVkLgotICAg
Ki8KLQotICAvKioKLSAgICogQG5nZG9jIG1ldGhvZAotICAgKiBAbmFtZSBuZ01vY2suJGh0dHBC
YWNrZW5kI3doZW5QT1NUCi0gICAqIEBtZXRob2RPZiBuZ01vY2suJGh0dHBCYWNrZW5kCi0gICAq
IEBkZXNjcmlwdGlvbgotICAgKiBDcmVhdGVzIGEgbmV3IGJhY2tlbmQgZGVmaW5pdGlvbiBmb3Ig
UE9TVCByZXF1ZXN0cy4gRm9yIG1vcmUgaW5mbyBzZWUgYHdoZW4oKWAuCi0gICAqCi0gICAqIEBw
YXJhbSB7c3RyaW5nfFJlZ0V4cH0gdXJsIEhUVFAgdXJsLgotICAgKiBAcGFyYW0geyhzdHJpbmd8
UmVnRXhwKT19IGRhdGEgSFRUUCByZXF1ZXN0IGJvZHkuCi0gICAqIEBwYXJhbSB7KE9iamVjdHxm
dW5jdGlvbihPYmplY3QpKT19IGhlYWRlcnMgSFRUUCBoZWFkZXJzLgotICAgKiBAcmV0dXJucyB7
cmVxdWVzdEhhbmRsZXJ9IFJldHVybnMgYW4gb2JqZWN0IHdpdGggYHJlc3BvbmRgIG1ldGhvZCB0
aGF0IGNvbnRyb2wgaG93IGEgbWF0Y2hlZAotICAgKiByZXF1ZXN0IGlzIGhhbmRsZWQuCi0gICAq
LwotCi0gIC8qKgotICAgKiBAbmdkb2MgbWV0aG9kCi0gICAqIEBuYW1lIG5nTW9jay4kaHR0cEJh
Y2tlbmQjd2hlblBVVAotICAgKiBAbWV0aG9kT2YgbmdNb2NrLiRodHRwQmFja2VuZAotICAgKiBA
ZGVzY3JpcHRpb24KLSAgICogQ3JlYXRlcyBhIG5ldyBiYWNrZW5kIGRlZmluaXRpb24gZm9yIFBV
VCByZXF1ZXN0cy4gIEZvciBtb3JlIGluZm8gc2VlIGB3aGVuKClgLgotICAgKgotICAgKiBAcGFy
YW0ge3N0cmluZ3xSZWdFeHB9IHVybCBIVFRQIHVybC4KLSAgICogQHBhcmFtIHsoc3RyaW5nfFJl
Z0V4cCk9fSBkYXRhIEhUVFAgcmVxdWVzdCBib2R5LgotICAgKiBAcGFyYW0geyhPYmplY3R8ZnVu
Y3Rpb24oT2JqZWN0KSk9fSBoZWFkZXJzIEhUVFAgaGVhZGVycy4KLSAgICogQHJldHVybnMge3Jl
cXVlc3RIYW5kbGVyfSBSZXR1cm5zIGFuIG9iamVjdCB3aXRoIGByZXNwb25kYCBtZXRob2QgdGhh
dCBjb250cm9sIGhvdyBhIG1hdGNoZWQKLSAgICogcmVxdWVzdCBpcyBoYW5kbGVkLgotICAgKi8K
LQotICAvKioKLSAgICogQG5nZG9jIG1ldGhvZAotICAgKiBAbmFtZSBuZ01vY2suJGh0dHBCYWNr
ZW5kI3doZW5KU09OUAotICAgKiBAbWV0aG9kT2YgbmdNb2NrLiRodHRwQmFja2VuZAotICAgKiBA
ZGVzY3JpcHRpb24KLSAgICogQ3JlYXRlcyBhIG5ldyBiYWNrZW5kIGRlZmluaXRpb24gZm9yIEpT
T05QIHJlcXVlc3RzLiBGb3IgbW9yZSBpbmZvIHNlZSBgd2hlbigpYC4KLSAgICoKLSAgICogQHBh
cmFtIHtzdHJpbmd8UmVnRXhwfSB1cmwgSFRUUCB1cmwuCi0gICAqIEByZXR1cm5zIHtyZXF1ZXN0
SGFuZGxlcn0gUmV0dXJucyBhbiBvYmplY3Qgd2l0aCBgcmVzcG9uZGAgbWV0aG9kIHRoYXQgY29u
dHJvbCBob3cgYSBtYXRjaGVkCi0gICAqIHJlcXVlc3QgaXMgaGFuZGxlZC4KLSAgICovCi0gIGNy
ZWF0ZVNob3J0TWV0aG9kcygnd2hlbicpOwotCi0KLSAgLyoqCi0gICAqIEBuZ2RvYyBtZXRob2QK
LSAgICogQG5hbWUgbmdNb2NrLiRodHRwQmFja2VuZCNleHBlY3QKLSAgICogQG1ldGhvZE9mIG5n
TW9jay4kaHR0cEJhY2tlbmQKLSAgICogQGRlc2NyaXB0aW9uCi0gICAqIENyZWF0ZXMgYSBuZXcg
cmVxdWVzdCBleHBlY3RhdGlvbi4KLSAgICoKLSAgICogQHBhcmFtIHtzdHJpbmd9IG1ldGhvZCBI
VFRQIG1ldGhvZC4KLSAgICogQHBhcmFtIHtzdHJpbmd8UmVnRXhwfSB1cmwgSFRUUCB1cmwuCi0g
ICAqIEBwYXJhbSB7KHN0cmluZ3xSZWdFeHApPX0gZGF0YSBIVFRQIHJlcXVlc3QgYm9keS4KLSAg
ICogQHBhcmFtIHsoT2JqZWN0fGZ1bmN0aW9uKE9iamVjdCkpPX0gaGVhZGVycyBIVFRQIGhlYWRl
cnMgb3IgZnVuY3Rpb24gdGhhdCByZWNlaXZlcyBodHRwIGhlYWRlcgotICAgKiAgIG9iamVjdCBh
bmQgcmV0dXJucyB0cnVlIGlmIHRoZSBoZWFkZXJzIG1hdGNoIHRoZSBjdXJyZW50IGV4cGVjdGF0
aW9uLgotICAgKiBAcmV0dXJucyB7cmVxdWVzdEhhbmRsZXJ9IFJldHVybnMgYW4gb2JqZWN0IHdp
dGggYHJlc3BvbmRgIG1ldGhvZCB0aGF0IGNvbnRyb2wgaG93IGEgbWF0Y2hlZAotICAgKiAgcmVx
dWVzdCBpcyBoYW5kbGVkLgotICAgKgotICAgKiAgLSByZXNwb25kIOKAkyBge2Z1bmN0aW9uKFtz
dGF0dXMsXSBkYXRhWywgaGVhZGVyc10pfGZ1bmN0aW9uKGZ1bmN0aW9uKG1ldGhvZCwgdXJsLCBk
YXRhLCBoZWFkZXJzKX1gCi0gICAqICAgIOKAkyBUaGUgcmVzcG9uZCBtZXRob2QgdGFrZXMgYSBz
ZXQgb2Ygc3RhdGljIGRhdGEgdG8gYmUgcmV0dXJuZWQgb3IgYSBmdW5jdGlvbiB0aGF0IGNhbiBy
ZXR1cm4KLSAgICogICAgYW4gYXJyYXkgY29udGFpbmluZyByZXNwb25zZSBzdGF0dXMgKG51bWJl
ciksIHJlc3BvbnNlIGRhdGEgKHN0cmluZykgYW5kIHJlc3BvbnNlIGhlYWRlcnMKLSAgICogICAg
KE9iamVjdCkuCi0gICAqLwotICAkaHR0cEJhY2tlbmQuZXhwZWN0ID0gZnVuY3Rpb24obWV0aG9k
LCB1cmwsIGRhdGEsIGhlYWRlcnMpIHsKLSAgICB2YXIgZXhwZWN0YXRpb24gPSBuZXcgTW9ja0h0
dHBFeHBlY3RhdGlvbihtZXRob2QsIHVybCwgZGF0YSwgaGVhZGVycyk7Ci0gICAgZXhwZWN0YXRp
b25zLnB1c2goZXhwZWN0YXRpb24pOwotICAgIHJldHVybiB7Ci0gICAgICByZXNwb25kOiBmdW5j
dGlvbihzdGF0dXMsIGRhdGEsIGhlYWRlcnMpIHsKLSAgICAgICAgZXhwZWN0YXRpb24ucmVzcG9u
c2UgPSBjcmVhdGVSZXNwb25zZShzdGF0dXMsIGRhdGEsIGhlYWRlcnMpOwotICAgICAgfQotICAg
IH07Ci0gIH07Ci0KLQotICAvKioKLSAgICogQG5nZG9jIG1ldGhvZAotICAgKiBAbmFtZSBuZ01v
Y2suJGh0dHBCYWNrZW5kI2V4cGVjdEdFVAotICAgKiBAbWV0aG9kT2YgbmdNb2NrLiRodHRwQmFj
a2VuZAotICAgKiBAZGVzY3JpcHRpb24KLSAgICogQ3JlYXRlcyBhIG5ldyByZXF1ZXN0IGV4cGVj
dGF0aW9uIGZvciBHRVQgcmVxdWVzdHMuIEZvciBtb3JlIGluZm8gc2VlIGBleHBlY3QoKWAuCi0g
ICAqCi0gICAqIEBwYXJhbSB7c3RyaW5nfFJlZ0V4cH0gdXJsIEhUVFAgdXJsLgotICAgKiBAcGFy
YW0ge09iamVjdD19IGhlYWRlcnMgSFRUUCBoZWFkZXJzLgotICAgKiBAcmV0dXJucyB7cmVxdWVz
dEhhbmRsZXJ9IFJldHVybnMgYW4gb2JqZWN0IHdpdGggYHJlc3BvbmRgIG1ldGhvZCB0aGF0IGNv
bnRyb2wgaG93IGEgbWF0Y2hlZAotICAgKiByZXF1ZXN0IGlzIGhhbmRsZWQuIFNlZSAjZXhwZWN0
IGZvciBtb3JlIGluZm8uCi0gICAqLwotCi0gIC8qKgotICAgKiBAbmdkb2MgbWV0aG9kCi0gICAq
IEBuYW1lIG5nTW9jay4kaHR0cEJhY2tlbmQjZXhwZWN0SEVBRAotICAgKiBAbWV0aG9kT2YgbmdN
b2NrLiRodHRwQmFja2VuZAotICAgKiBAZGVzY3JpcHRpb24KLSAgICogQ3JlYXRlcyBhIG5ldyBy
ZXF1ZXN0IGV4cGVjdGF0aW9uIGZvciBIRUFEIHJlcXVlc3RzLiBGb3IgbW9yZSBpbmZvIHNlZSBg
ZXhwZWN0KClgLgotICAgKgotICAgKiBAcGFyYW0ge3N0cmluZ3xSZWdFeHB9IHVybCBIVFRQIHVy
bC4KLSAgICogQHBhcmFtIHtPYmplY3Q9fSBoZWFkZXJzIEhUVFAgaGVhZGVycy4KLSAgICogQHJl
dHVybnMge3JlcXVlc3RIYW5kbGVyfSBSZXR1cm5zIGFuIG9iamVjdCB3aXRoIGByZXNwb25kYCBt
ZXRob2QgdGhhdCBjb250cm9sIGhvdyBhIG1hdGNoZWQKLSAgICogICByZXF1ZXN0IGlzIGhhbmRs
ZWQuCi0gICAqLwotCi0gIC8qKgotICAgKiBAbmdkb2MgbWV0aG9kCi0gICAqIEBuYW1lIG5nTW9j
ay4kaHR0cEJhY2tlbmQjZXhwZWN0REVMRVRFCi0gICAqIEBtZXRob2RPZiBuZ01vY2suJGh0dHBC
YWNrZW5kCi0gICAqIEBkZXNjcmlwdGlvbgotICAgKiBDcmVhdGVzIGEgbmV3IHJlcXVlc3QgZXhw
ZWN0YXRpb24gZm9yIERFTEVURSByZXF1ZXN0cy4gRm9yIG1vcmUgaW5mbyBzZWUgYGV4cGVjdCgp
YC4KLSAgICoKLSAgICogQHBhcmFtIHtzdHJpbmd8UmVnRXhwfSB1cmwgSFRUUCB1cmwuCi0gICAq
IEBwYXJhbSB7T2JqZWN0PX0gaGVhZGVycyBIVFRQIGhlYWRlcnMuCi0gICAqIEByZXR1cm5zIHty
ZXF1ZXN0SGFuZGxlcn0gUmV0dXJucyBhbiBvYmplY3Qgd2l0aCBgcmVzcG9uZGAgbWV0aG9kIHRo
YXQgY29udHJvbCBob3cgYSBtYXRjaGVkCi0gICAqICAgcmVxdWVzdCBpcyBoYW5kbGVkLgotICAg
Ki8KLQotICAvKioKLSAgICogQG5nZG9jIG1ldGhvZAotICAgKiBAbmFtZSBuZ01vY2suJGh0dHBC
YWNrZW5kI2V4cGVjdFBPU1QKLSAgICogQG1ldGhvZE9mIG5nTW9jay4kaHR0cEJhY2tlbmQKLSAg
ICogQGRlc2NyaXB0aW9uCi0gICAqIENyZWF0ZXMgYSBuZXcgcmVxdWVzdCBleHBlY3RhdGlvbiBm
b3IgUE9TVCByZXF1ZXN0cy4gRm9yIG1vcmUgaW5mbyBzZWUgYGV4cGVjdCgpYC4KLSAgICoKLSAg
ICogQHBhcmFtIHtzdHJpbmd8UmVnRXhwfSB1cmwgSFRUUCB1cmwuCi0gICAqIEBwYXJhbSB7KHN0
cmluZ3xSZWdFeHApPX0gZGF0YSBIVFRQIHJlcXVlc3QgYm9keS4KLSAgICogQHBhcmFtIHtPYmpl
Y3Q9fSBoZWFkZXJzIEhUVFAgaGVhZGVycy4KLSAgICogQHJldHVybnMge3JlcXVlc3RIYW5kbGVy
fSBSZXR1cm5zIGFuIG9iamVjdCB3aXRoIGByZXNwb25kYCBtZXRob2QgdGhhdCBjb250cm9sIGhv
dyBhIG1hdGNoZWQKLSAgICogICByZXF1ZXN0IGlzIGhhbmRsZWQuCi0gICAqLwotCi0gIC8qKgot
ICAgKiBAbmdkb2MgbWV0aG9kCi0gICAqIEBuYW1lIG5nTW9jay4kaHR0cEJhY2tlbmQjZXhwZWN0
UFVUCi0gICAqIEBtZXRob2RPZiBuZ01vY2suJGh0dHBCYWNrZW5kCi0gICAqIEBkZXNjcmlwdGlv
bgotICAgKiBDcmVhdGVzIGEgbmV3IHJlcXVlc3QgZXhwZWN0YXRpb24gZm9yIFBVVCByZXF1ZXN0
cy4gRm9yIG1vcmUgaW5mbyBzZWUgYGV4cGVjdCgpYC4KLSAgICoKLSAgICogQHBhcmFtIHtzdHJp
bmd8UmVnRXhwfSB1cmwgSFRUUCB1cmwuCi0gICAqIEBwYXJhbSB7KHN0cmluZ3xSZWdFeHApPX0g
ZGF0YSBIVFRQIHJlcXVlc3QgYm9keS4KLSAgICogQHBhcmFtIHtPYmplY3Q9fSBoZWFkZXJzIEhU
VFAgaGVhZGVycy4KLSAgICogQHJldHVybnMge3JlcXVlc3RIYW5kbGVyfSBSZXR1cm5zIGFuIG9i
amVjdCB3aXRoIGByZXNwb25kYCBtZXRob2QgdGhhdCBjb250cm9sIGhvdyBhIG1hdGNoZWQKLSAg
ICogICByZXF1ZXN0IGlzIGhhbmRsZWQuCi0gICAqLwotCi0gIC8qKgotICAgKiBAbmdkb2MgbWV0
aG9kCi0gICAqIEBuYW1lIG5nTW9jay4kaHR0cEJhY2tlbmQjZXhwZWN0UEFUQ0gKLSAgICogQG1l
dGhvZE9mIG5nTW9jay4kaHR0cEJhY2tlbmQKLSAgICogQGRlc2NyaXB0aW9uCi0gICAqIENyZWF0
ZXMgYSBuZXcgcmVxdWVzdCBleHBlY3RhdGlvbiBmb3IgUEFUQ0ggcmVxdWVzdHMuIEZvciBtb3Jl
IGluZm8gc2VlIGBleHBlY3QoKWAuCi0gICAqCi0gICAqIEBwYXJhbSB7c3RyaW5nfFJlZ0V4cH0g
dXJsIEhUVFAgdXJsLgotICAgKiBAcGFyYW0geyhzdHJpbmd8UmVnRXhwKT19IGRhdGEgSFRUUCBy
ZXF1ZXN0IGJvZHkuCi0gICAqIEBwYXJhbSB7T2JqZWN0PX0gaGVhZGVycyBIVFRQIGhlYWRlcnMu
Ci0gICAqIEByZXR1cm5zIHtyZXF1ZXN0SGFuZGxlcn0gUmV0dXJucyBhbiBvYmplY3Qgd2l0aCBg
cmVzcG9uZGAgbWV0aG9kIHRoYXQgY29udHJvbCBob3cgYSBtYXRjaGVkCi0gICAqICAgcmVxdWVz
dCBpcyBoYW5kbGVkLgotICAgKi8KLQotICAvKioKLSAgICogQG5nZG9jIG1ldGhvZAotICAgKiBA
bmFtZSBuZ01vY2suJGh0dHBCYWNrZW5kI2V4cGVjdEpTT05QCi0gICAqIEBtZXRob2RPZiBuZ01v
Y2suJGh0dHBCYWNrZW5kCi0gICAqIEBkZXNjcmlwdGlvbgotICAgKiBDcmVhdGVzIGEgbmV3IHJl
cXVlc3QgZXhwZWN0YXRpb24gZm9yIEpTT05QIHJlcXVlc3RzLiBGb3IgbW9yZSBpbmZvIHNlZSBg
ZXhwZWN0KClgLgotICAgKgotICAgKiBAcGFyYW0ge3N0cmluZ3xSZWdFeHB9IHVybCBIVFRQIHVy
bC4KLSAgICogQHJldHVybnMge3JlcXVlc3RIYW5kbGVyfSBSZXR1cm5zIGFuIG9iamVjdCB3aXRo
IGByZXNwb25kYCBtZXRob2QgdGhhdCBjb250cm9sIGhvdyBhIG1hdGNoZWQKLSAgICogICByZXF1
ZXN0IGlzIGhhbmRsZWQuCi0gICAqLwotICBjcmVhdGVTaG9ydE1ldGhvZHMoJ2V4cGVjdCcpOwot
Ci0KLSAgLyoqCi0gICAqIEBuZ2RvYyBtZXRob2QKLSAgICogQG5hbWUgbmdNb2NrLiRodHRwQmFj
a2VuZCNmbHVzaAotICAgKiBAbWV0aG9kT2YgbmdNb2NrLiRodHRwQmFja2VuZAotICAgKiBAZGVz
Y3JpcHRpb24KLSAgICogRmx1c2hlcyBhbGwgcGVuZGluZyByZXF1ZXN0cyB1c2luZyB0aGUgdHJh
aW5lZCByZXNwb25zZXMuCi0gICAqCi0gICAqIEBwYXJhbSB7bnVtYmVyPX0gY291bnQgTnVtYmVy
IG9mIHJlc3BvbnNlcyB0byBmbHVzaCAoaW4gdGhlIG9yZGVyIHRoZXkgYXJyaXZlZCkuIElmIHVu
ZGVmaW5lZCwKLSAgICogICBhbGwgcGVuZGluZyByZXF1ZXN0cyB3aWxsIGJlIGZsdXNoZWQuIElm
IHRoZXJlIGFyZSBubyBwZW5kaW5nIHJlcXVlc3RzIHdoZW4gdGhlIGZsdXNoIG1ldGhvZAotICAg
KiAgIGlzIGNhbGxlZCBhbiBleGNlcHRpb24gaXMgdGhyb3duIChhcyB0aGlzIHR5cGljYWxseSBh
IHNpZ24gb2YgcHJvZ3JhbW1pbmcgZXJyb3IpLgotICAgKi8KLSAgJGh0dHBCYWNrZW5kLmZsdXNo
ID0gZnVuY3Rpb24oY291bnQpIHsKLSAgICBpZiAoIXJlc3BvbnNlcy5sZW5ndGgpIHRocm93IEVy
cm9yKCdObyBwZW5kaW5nIHJlcXVlc3QgdG8gZmx1c2ggIScpOwotCi0gICAgaWYgKGFuZ3VsYXIu
aXNEZWZpbmVkKGNvdW50KSkgewotICAgICAgd2hpbGUgKGNvdW50LS0pIHsKLSAgICAgICAgaWYg
KCFyZXNwb25zZXMubGVuZ3RoKSB0aHJvdyBFcnJvcignTm8gbW9yZSBwZW5kaW5nIHJlcXVlc3Qg
dG8gZmx1c2ggIScpOwotICAgICAgICByZXNwb25zZXMuc2hpZnQoKSgpOwotICAgICAgfQotICAg
IH0gZWxzZSB7Ci0gICAgICB3aGlsZSAocmVzcG9uc2VzLmxlbmd0aCkgewotICAgICAgICByZXNw
b25zZXMuc2hpZnQoKSgpOwotICAgICAgfQotICAgIH0KLSAgICAkaHR0cEJhY2tlbmQudmVyaWZ5
Tm9PdXRzdGFuZGluZ0V4cGVjdGF0aW9uKCk7Ci0gIH07Ci0KLQotICAvKioKLSAgICogQG5nZG9j
IG1ldGhvZAotICAgKiBAbmFtZSBuZ01vY2suJGh0dHBCYWNrZW5kI3ZlcmlmeU5vT3V0c3RhbmRp
bmdFeHBlY3RhdGlvbgotICAgKiBAbWV0aG9kT2YgbmdNb2NrLiRodHRwQmFja2VuZAotICAgKiBA
ZGVzY3JpcHRpb24KLSAgICogVmVyaWZpZXMgdGhhdCBhbGwgb2YgdGhlIHJlcXVlc3RzIGRlZmlu
ZWQgdmlhIHRoZSBgZXhwZWN0YCBhcGkgd2VyZSBtYWRlLiBJZiBhbnkgb2YgdGhlCi0gICAqIHJl
cXVlc3RzIHdlcmUgbm90IG1hZGUsIHZlcmlmeU5vT3V0c3RhbmRpbmdFeHBlY3RhdGlvbiB0aHJv
d3MgYW4gZXhjZXB0aW9uLgotICAgKgotICAgKiBUeXBpY2FsbHksIHlvdSB3b3VsZCBjYWxsIHRo
aXMgbWV0aG9kIGZvbGxvd2luZyBlYWNoIHRlc3QgY2FzZSB0aGF0IGFzc2VydHMgcmVxdWVzdHMg
dXNpbmcgYW4KLSAgICogImFmdGVyRWFjaCIgY2xhdXNlLgotICAgKgotICAgKiA8cHJlPgotICAg
KiAgIGFmdGVyRWFjaCgkaHR0cEJhY2tlbmQudmVyaWZ5RXhwZWN0YXRpb25zKTsKLSAgICogPC9w
cmU+Ci0gICAqLwotICAkaHR0cEJhY2tlbmQudmVyaWZ5Tm9PdXRzdGFuZGluZ0V4cGVjdGF0aW9u
ID0gZnVuY3Rpb24oKSB7Ci0gICAgaWYgKGV4cGVjdGF0aW9ucy5sZW5ndGgpIHsKLSAgICAgIHRo
cm93IEVycm9yKCdVbnNhdGlzZmllZCByZXF1ZXN0czogJyArIGV4cGVjdGF0aW9ucy5qb2luKCcs
ICcpKTsKLSAgICB9Ci0gIH07Ci0KLQotICAvKioKLSAgICogQG5nZG9jIG1ldGhvZAotICAgKiBA
bmFtZSBuZ01vY2suJGh0dHBCYWNrZW5kI3ZlcmlmeU5vT3V0c3RhbmRpbmdSZXF1ZXN0Ci0gICAq
IEBtZXRob2RPZiBuZ01vY2suJGh0dHBCYWNrZW5kCi0gICAqIEBkZXNjcmlwdGlvbgotICAgKiBW
ZXJpZmllcyB0aGF0IHRoZXJlIGFyZSBubyBvdXRzdGFuZGluZyByZXF1ZXN0cyB0aGF0IG5lZWQg
dG8gYmUgZmx1c2hlZC4KLSAgICoKLSAgICogVHlwaWNhbGx5LCB5b3Ugd291bGQgY2FsbCB0aGlz
IG1ldGhvZCBmb2xsb3dpbmcgZWFjaCB0ZXN0IGNhc2UgdGhhdCBhc3NlcnRzIHJlcXVlc3RzIHVz
aW5nIGFuCi0gICAqICJhZnRlckVhY2giIGNsYXVzZS4KLSAgICoKLSAgICogPHByZT4KLSAgICog
ICBhZnRlckVhY2goJGh0dHBCYWNrZW5kLnZlcmlmeU5vT3V0c3RhbmRpbmdSZXF1ZXN0KTsKLSAg
ICogPC9wcmU+Ci0gICAqLwotICAkaHR0cEJhY2tlbmQudmVyaWZ5Tm9PdXRzdGFuZGluZ1JlcXVl
c3QgPSBmdW5jdGlvbigpIHsKLSAgICBpZiAocmVzcG9uc2VzLmxlbmd0aCkgewotICAgICAgdGhy
b3cgRXJyb3IoJ1VuZmx1c2hlZCByZXF1ZXN0czogJyArIHJlc3BvbnNlcy5sZW5ndGgpOwotICAg
IH0KLSAgfTsKLQotCi0gIC8qKgotICAgKiBAbmdkb2MgbWV0aG9kCi0gICAqIEBuYW1lIG5nTW9j
ay4kaHR0cEJhY2tlbmQjcmVzZXRFeHBlY3RhdGlvbnMKLSAgICogQG1ldGhvZE9mIG5nTW9jay4k
aHR0cEJhY2tlbmQKLSAgICogQGRlc2NyaXB0aW9uCi0gICAqIFJlc2V0cyBhbGwgcmVxdWVzdCBl
eHBlY3RhdGlvbnMsIGJ1dCBwcmVzZXJ2ZXMgYWxsIGJhY2tlbmQgZGVmaW5pdGlvbnMuIFR5cGlj
YWxseSwgeW91IHdvdWxkCi0gICAqIGNhbGwgcmVzZXRFeHBlY3RhdGlvbnMgZHVyaW5nIGEgbXVs
dGlwbGUtcGhhc2UgdGVzdCB3aGVuIHlvdSB3YW50IHRvIHJldXNlIHRoZSBzYW1lIGluc3RhbmNl
IG9mCi0gICAqICRodHRwQmFja2VuZCBtb2NrLgotICAgKi8KLSAgJGh0dHBCYWNrZW5kLnJlc2V0
RXhwZWN0YXRpb25zID0gZnVuY3Rpb24oKSB7Ci0gICAgZXhwZWN0YXRpb25zLmxlbmd0aCA9IDA7
Ci0gICAgcmVzcG9uc2VzLmxlbmd0aCA9IDA7Ci0gIH07Ci0KLSAgcmV0dXJuICRodHRwQmFja2Vu
ZDsKLQotCi0gIGZ1bmN0aW9uIGNyZWF0ZVNob3J0TWV0aG9kcyhwcmVmaXgpIHsKLSAgICBhbmd1
bGFyLmZvckVhY2goWydHRVQnLCAnREVMRVRFJywgJ0pTT05QJ10sIGZ1bmN0aW9uKG1ldGhvZCkg
ewotICAgICAkaHR0cEJhY2tlbmRbcHJlZml4ICsgbWV0aG9kXSA9IGZ1bmN0aW9uKHVybCwgaGVh
ZGVycykgewotICAgICAgIHJldHVybiAkaHR0cEJhY2tlbmRbcHJlZml4XShtZXRob2QsIHVybCwg
dW5kZWZpbmVkLCBoZWFkZXJzKQotICAgICB9Ci0gICAgfSk7Ci0KLSAgICBhbmd1bGFyLmZvckVh
Y2goWydQVVQnLCAnUE9TVCcsICdQQVRDSCddLCBmdW5jdGlvbihtZXRob2QpIHsKLSAgICAgICRo
dHRwQmFja2VuZFtwcmVmaXggKyBtZXRob2RdID0gZnVuY3Rpb24odXJsLCBkYXRhLCBoZWFkZXJz
KSB7Ci0gICAgICAgIHJldHVybiAkaHR0cEJhY2tlbmRbcHJlZml4XShtZXRob2QsIHVybCwgZGF0
YSwgaGVhZGVycykKLSAgICAgIH0KLSAgICB9KTsKLSAgfQotfQotCi1mdW5jdGlvbiBNb2NrSHR0
cEV4cGVjdGF0aW9uKG1ldGhvZCwgdXJsLCBkYXRhLCBoZWFkZXJzKSB7Ci0KLSAgdGhpcy5kYXRh
ID0gZGF0YTsKLSAgdGhpcy5oZWFkZXJzID0gaGVhZGVyczsKLQotICB0aGlzLm1hdGNoID0gZnVu
Y3Rpb24obSwgdSwgZCwgaCkgewotICAgIGlmIChtZXRob2QgIT0gbSkgcmV0dXJuIGZhbHNlOwot
ICAgIGlmICghdGhpcy5tYXRjaFVybCh1KSkgcmV0dXJuIGZhbHNlOwotICAgIGlmIChhbmd1bGFy
LmlzRGVmaW5lZChkKSAmJiAhdGhpcy5tYXRjaERhdGEoZCkpIHJldHVybiBmYWxzZTsKLSAgICBp
ZiAoYW5ndWxhci5pc0RlZmluZWQoaCkgJiYgIXRoaXMubWF0Y2hIZWFkZXJzKGgpKSByZXR1cm4g
ZmFsc2U7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH07Ci0KLSAgdGhpcy5tYXRjaFVybCA9IGZ1bmN0
aW9uKHUpIHsKLSAgICBpZiAoIXVybCkgcmV0dXJuIHRydWU7Ci0gICAgaWYgKGFuZ3VsYXIuaXNG
dW5jdGlvbih1cmwudGVzdCkpIHJldHVybiB1cmwudGVzdCh1KTsKLSAgICByZXR1cm4gdXJsID09
IHU7Ci0gIH07Ci0KLSAgdGhpcy5tYXRjaEhlYWRlcnMgPSBmdW5jdGlvbihoKSB7Ci0gICAgaWYg
KGFuZ3VsYXIuaXNVbmRlZmluZWQoaGVhZGVycykpIHJldHVybiB0cnVlOwotICAgIGlmIChhbmd1
bGFyLmlzRnVuY3Rpb24oaGVhZGVycykpIHJldHVybiBoZWFkZXJzKGgpOwotICAgIHJldHVybiBh
bmd1bGFyLmVxdWFscyhoZWFkZXJzLCBoKTsKLSAgfTsKLQotICB0aGlzLm1hdGNoRGF0YSA9IGZ1
bmN0aW9uKGQpIHsKLSAgICBpZiAoYW5ndWxhci5pc1VuZGVmaW5lZChkYXRhKSkgcmV0dXJuIHRy
dWU7Ci0gICAgaWYgKGRhdGEgJiYgYW5ndWxhci5pc0Z1bmN0aW9uKGRhdGEudGVzdCkpIHJldHVy
biBkYXRhLnRlc3QoZCk7Ci0gICAgaWYgKGRhdGEgJiYgIWFuZ3VsYXIuaXNTdHJpbmcoZGF0YSkp
IHJldHVybiBhbmd1bGFyLnRvSnNvbihkYXRhKSA9PSBkOwotICAgIHJldHVybiBkYXRhID09IGQ7
Ci0gIH07Ci0KLSAgdGhpcy50b1N0cmluZyA9IGZ1bmN0aW9uKCkgewotICAgIHJldHVybiBtZXRo
b2QgKyAnICcgKyB1cmw7Ci0gIH07Ci19Ci0KLWZ1bmN0aW9uIE1vY2tYaHIoKSB7Ci0KLSAgLy8g
aGFjayBmb3IgdGVzdGluZyAkaHR0cCwgJGh0dHBCYWNrZW5kCi0gIE1vY2tYaHIuJCRsYXN0SW5z
dGFuY2UgPSB0aGlzOwotCi0gIHRoaXMub3BlbiA9IGZ1bmN0aW9uKG1ldGhvZCwgdXJsLCBhc3lu
YykgewotICAgIHRoaXMuJCRtZXRob2QgPSBtZXRob2Q7Ci0gICAgdGhpcy4kJHVybCA9IHVybDsK
LSAgICB0aGlzLiQkYXN5bmMgPSBhc3luYzsKLSAgICB0aGlzLiQkcmVxSGVhZGVycyA9IHt9Owot
ICAgIHRoaXMuJCRyZXNwSGVhZGVycyA9IHt9OwotICB9OwotCi0gIHRoaXMuc2VuZCA9IGZ1bmN0
aW9uKGRhdGEpIHsKLSAgICB0aGlzLiQkZGF0YSA9IGRhdGE7Ci0gIH07Ci0KLSAgdGhpcy5zZXRS
ZXF1ZXN0SGVhZGVyID0gZnVuY3Rpb24oa2V5LCB2YWx1ZSkgewotICAgIHRoaXMuJCRyZXFIZWFk
ZXJzW2tleV0gPSB2YWx1ZTsKLSAgfTsKLQotICB0aGlzLmdldFJlc3BvbnNlSGVhZGVyID0gZnVu
Y3Rpb24obmFtZSkgewotICAgIC8vIHRoZSBsb29rdXAgbXVzdCBiZSBjYXNlIGluc2Vuc2l0aXZl
LCB0aGF0J3Mgd2h5IHdlIHRyeSB0d28gcXVpY2sgbG9va3VwcyBhbmQgZnVsbCBzY2FuIGF0IGxh
c3QKLSAgICB2YXIgaGVhZGVyID0gdGhpcy4kJHJlc3BIZWFkZXJzW25hbWVdOwotICAgIGlmICho
ZWFkZXIpIHJldHVybiBoZWFkZXI7Ci0KLSAgICBuYW1lID0gYW5ndWxhci5sb3dlcmNhc2UobmFt
ZSk7Ci0gICAgaGVhZGVyID0gdGhpcy4kJHJlc3BIZWFkZXJzW25hbWVdOwotICAgIGlmIChoZWFk
ZXIpIHJldHVybiBoZWFkZXI7Ci0KLSAgICBoZWFkZXIgPSB1bmRlZmluZWQ7Ci0gICAgYW5ndWxh
ci5mb3JFYWNoKHRoaXMuJCRyZXNwSGVhZGVycywgZnVuY3Rpb24oaGVhZGVyVmFsLCBoZWFkZXJO
YW1lKSB7Ci0gICAgICBpZiAoIWhlYWRlciAmJiBhbmd1bGFyLmxvd2VyY2FzZShoZWFkZXJOYW1l
KSA9PSBuYW1lKSBoZWFkZXIgPSBoZWFkZXJWYWw7Ci0gICAgfSk7Ci0gICAgcmV0dXJuIGhlYWRl
cjsKLSAgfTsKLQotICB0aGlzLmdldEFsbFJlc3BvbnNlSGVhZGVycyA9IGZ1bmN0aW9uKCkgewot
ICAgIHZhciBsaW5lcyA9IFtdOwotCi0gICAgYW5ndWxhci5mb3JFYWNoKHRoaXMuJCRyZXNwSGVh
ZGVycywgZnVuY3Rpb24odmFsdWUsIGtleSkgewotICAgICAgbGluZXMucHVzaChrZXkgKyAnOiAn
ICsgdmFsdWUpOwotICAgIH0pOwotICAgIHJldHVybiBsaW5lcy5qb2luKCdcbicpOwotICB9Owot
Ci0gIHRoaXMuYWJvcnQgPSBhbmd1bGFyLm5vb3A7Ci19Ci0KLQotLyoqCi0gKiBAbmdkb2MgZnVu
Y3Rpb24KLSAqIEBuYW1lIG5nTW9jay4kdGltZW91dAotICogQGRlc2NyaXB0aW9uCi0gKgotICog
VGhpcyBzZXJ2aWNlIGlzIGp1c3QgYSBzaW1wbGUgZGVjb3JhdG9yIGZvciB7QGxpbmsgbmcuJHRp
bWVvdXQgJHRpbWVvdXR9IHNlcnZpY2UKLSAqIHRoYXQgYWRkcyBhICJmbHVzaCIgbWV0aG9kLgot
ICovCi0KLS8qKgotICogQG5nZG9jIG1ldGhvZAotICogQG5hbWUgbmdNb2NrLiR0aW1lb3V0I2Zs
dXNoCi0gKiBAbWV0aG9kT2YgbmdNb2NrLiR0aW1lb3V0Ci0gKiBAZGVzY3JpcHRpb24KLSAqCi0g
KiBGbHVzaGVzIHRoZSBxdWV1ZSBvZiBwZW5kaW5nIHRhc2tzLgotICovCi0KLS8qKgotICoKLSAq
LwotYW5ndWxhci5tb2NrLiRSb290RWxlbWVudFByb3ZpZGVyID0gZnVuY3Rpb24oKSB7Ci0gIHRo
aXMuJGdldCA9IGZ1bmN0aW9uKCkgewotICAgIHJldHVybiBhbmd1bGFyLmVsZW1lbnQoJzxkaXYg
bmctYXBwPjwvZGl2PicpOwotICB9Ci19OwotCi0vKioKLSAqIEBuZ2RvYyBvdmVydmlldwotICog
QG5hbWUgbmdNb2NrCi0gKiBAZGVzY3JpcHRpb24KLSAqCi0gKiBUaGUgYG5nTW9ja2AgaXMgYW4g
YW5ndWxhciBtb2R1bGUgd2hpY2ggaXMgdXNlZCB3aXRoIGBuZ2AgbW9kdWxlIGFuZCBhZGRzIHVu
aXQtdGVzdCBjb25maWd1cmF0aW9uIGFzIHdlbGwgYXMgdXNlZnVsCi0gKiBtb2NrcyB0byB0aGUg
e0BsaW5rIEFVVE8uJGluamVjdG9yICRpbmplY3Rvcn0uCi0gKi8KLWFuZ3VsYXIubW9kdWxlKCdu
Z01vY2snLCBbJ25nJ10pLnByb3ZpZGVyKHsKLSAgJGJyb3dzZXI6IGFuZ3VsYXIubW9jay4kQnJv
d3NlclByb3ZpZGVyLAotICAkZXhjZXB0aW9uSGFuZGxlcjogYW5ndWxhci5tb2NrLiRFeGNlcHRp
b25IYW5kbGVyUHJvdmlkZXIsCi0gICRsb2c6IGFuZ3VsYXIubW9jay4kTG9nUHJvdmlkZXIsCi0g
ICRodHRwQmFja2VuZDogYW5ndWxhci5tb2NrLiRIdHRwQmFja2VuZFByb3ZpZGVyLAotICAkcm9v
dEVsZW1lbnQ6IGFuZ3VsYXIubW9jay4kUm9vdEVsZW1lbnRQcm92aWRlcgotfSkuY29uZmlnKGZ1
bmN0aW9uKCRwcm92aWRlKSB7Ci0gICRwcm92aWRlLmRlY29yYXRvcignJHRpbWVvdXQnLCBmdW5j
dGlvbigkZGVsZWdhdGUsICRicm93c2VyKSB7Ci0gICAgJGRlbGVnYXRlLmZsdXNoID0gZnVuY3Rp
b24oKSB7Ci0gICAgICAkYnJvd3Nlci5kZWZlci5mbHVzaCgpOwotICAgIH07Ci0gICAgcmV0dXJu
ICRkZWxlZ2F0ZTsKLSAgfSk7Ci19KTsKLQotCi0vKioKLSAqIEBuZ2RvYyBvdmVydmlldwotICog
QG5hbWUgbmdNb2NrRTJFCi0gKiBAZGVzY3JpcHRpb24KLSAqCi0gKiBUaGUgYG5nTW9ja0UyRWAg
aXMgYW4gYW5ndWxhciBtb2R1bGUgd2hpY2ggY29udGFpbnMgbW9ja3Mgc3VpdGFibGUgZm9yIGVu
ZC10by1lbmQgdGVzdGluZy4KLSAqIEN1cnJlbnRseSB0aGVyZSBpcyBvbmx5IG9uZSBtb2NrIHBy
ZXNlbnQgaW4gdGhpcyBtb2R1bGUgLQotICogdGhlIHtAbGluayBuZ01vY2tFMkUuJGh0dHBCYWNr
ZW5kIGUyZSAkaHR0cEJhY2tlbmR9IG1vY2suCi0gKi8KLWFuZ3VsYXIubW9kdWxlKCduZ01vY2tF
MkUnLCBbJ25nJ10pLmNvbmZpZyhmdW5jdGlvbigkcHJvdmlkZSkgewotICAkcHJvdmlkZS5kZWNv
cmF0b3IoJyRodHRwQmFja2VuZCcsIGFuZ3VsYXIubW9jay5lMmUuJGh0dHBCYWNrZW5kRGVjb3Jh
dG9yKTsKLX0pOwotCi0vKioKLSAqIEBuZ2RvYyBvYmplY3QKLSAqIEBuYW1lIG5nTW9ja0UyRS4k
aHR0cEJhY2tlbmQKLSAqIEBkZXNjcmlwdGlvbgotICogRmFrZSBIVFRQIGJhY2tlbmQgaW1wbGVt
ZW50YXRpb24gc3VpdGFibGUgZm9yIGVuZC10by1lbmQgdGVzdGluZyBvciBiYWNrZW5kLWxlc3Mg
ZGV2ZWxvcG1lbnQgb2YKLSAqIGFwcGxpY2F0aW9ucyB0aGF0IHVzZSB0aGUge0BsaW5rIG5nLiRo
dHRwICRodHRwIHNlcnZpY2V9LgotICoKLSAqICpOb3RlKjogRm9yIGZha2UgaHR0cCBiYWNrZW5k
IGltcGxlbWVudGF0aW9uIHN1aXRhYmxlIGZvciB1bml0IHRlc3RpbmcgcGxlYXNlIHNlZQotICog
e0BsaW5rIG5nTW9jay4kaHR0cEJhY2tlbmQgdW5pdC10ZXN0aW5nICRodHRwQmFja2VuZCBtb2Nr
fS4KLSAqCi0gKiBUaGlzIGltcGxlbWVudGF0aW9uIGNhbiBiZSB1c2VkIHRvIHJlc3BvbmQgd2l0
aCBzdGF0aWMgb3IgZHluYW1pYyByZXNwb25zZXMgdmlhIHRoZSBgd2hlbmAgYXBpCi0gKiBhbmQg
aXRzIHNob3J0Y3V0cyAoYHdoZW5HRVRgLCBgd2hlblBPU1RgLCBldGMpIGFuZCBvcHRpb25hbGx5
IHBhc3MgdGhyb3VnaCByZXF1ZXN0cyB0byB0aGUKLSAqIHJlYWwgJGh0dHBCYWNrZW5kIGZvciBz
cGVjaWZpYyByZXF1ZXN0cyAoZS5nLiB0byBpbnRlcmFjdCB3aXRoIGNlcnRhaW4gcmVtb3RlIGFw
aXMgb3IgdG8gZmV0Y2gKLSAqIHRlbXBsYXRlcyBmcm9tIGEgd2Vic2VydmVyKS4KLSAqCi0gKiBB
cyBvcHBvc2VkIHRvIHVuaXQtdGVzdGluZywgaW4gYW4gZW5kLXRvLWVuZCB0ZXN0aW5nIHNjZW5h
cmlvIG9yIGluIHNjZW5hcmlvIHdoZW4gYW4gYXBwbGljYXRpb24KLSAqIGlzIGJlaW5nIGRldmVs
b3BlZCB3aXRoIHRoZSByZWFsIGJhY2tlbmQgYXBpIHJlcGxhY2VkIHdpdGggYSBtb2NrLCBpdCBp
cyBvZnRlbiBkZXNpcmFibGUgZm9yCi0gKiBjZXJ0YWluIGNhdGVnb3J5IG9mIHJlcXVlc3RzIHRv
IGJ5cGFzcyB0aGUgbW9jayBhbmQgaXNzdWUgYSByZWFsIGh0dHAgcmVxdWVzdCAoZS5nLiB0byBm
ZXRjaAotICogdGVtcGxhdGVzIG9yIHN0YXRpYyBmaWxlcyBmcm9tIHRoZSB3ZWJzZXJ2ZXIpLiBU
byBjb25maWd1cmUgdGhlIGJhY2tlbmQgd2l0aCB0aGlzIGJlaGF2aW9yCi0gKiB1c2UgdGhlIGBw
YXNzVGhyb3VnaGAgcmVxdWVzdCBoYW5kbGVyIG9mIGB3aGVuYCBpbnN0ZWFkIG9mIGByZXNwb25k
YC4KLSAqCi0gKiBBZGRpdGlvbmFsbHksIHdlIGRvbid0IHdhbnQgdG8gbWFudWFsbHkgaGF2ZSB0
byBmbHVzaCBtb2NrZWQgb3V0IHJlcXVlc3RzIGxpa2Ugd2UgZG8gZHVyaW5nIHVuaXQKLSAqIHRl
c3RpbmcuIEZvciB0aGlzIHJlYXNvbiB0aGUgZTJlICRodHRwQmFja2VuZCBhdXRvbWF0aWNhbGx5
IGZsdXNoZXMgbW9ja2VkIG91dCByZXF1ZXN0cwotICogYXV0b21hdGljYWxseSwgY2xvc2VseSBz
aW11bGF0aW5nIHRoZSBiZWhhdmlvciBvZiB0aGUgWE1MSHR0cFJlcXVlc3Qgb2JqZWN0LgotICoK
LSAqIFRvIHNldHVwIHRoZSBhcHBsaWNhdGlvbiB0byBydW4gd2l0aCB0aGlzIGh0dHAgYmFja2Vu
ZCwgeW91IGhhdmUgdG8gY3JlYXRlIGEgbW9kdWxlIHRoYXQgZGVwZW5kcwotICogb24gdGhlIGBu
Z01vY2tFMkVgIGFuZCB5b3VyIGFwcGxpY2F0aW9uIG1vZHVsZXMgYW5kIGRlZmluZXMgdGhlIGZh
a2UgYmFja2VuZDoKLSAqCi0gKiA8cHJlPgotICogICBteUFwcERldiA9IGFuZ3VsYXIubW9kdWxl
KCdteUFwcERldicsIFsnbXlBcHAnLCAnbmdNb2NrRTJFJ10pOwotICogICBteUFwcERldi5ydW4o
ZnVuY3Rpb24oJGh0dHBCYWNrZW5kKSB7Ci0gKiAgICAgcGhvbmVzID0gW3tuYW1lOiAncGhvbmUx
J30sIHtuYW1lOiAncGhvbmUyJ31dOwotICoKLSAqICAgICAvLyByZXR1cm5zIHRoZSBjdXJyZW50
IGxpc3Qgb2YgcGhvbmVzCi0gKiAgICAgJGh0dHBCYWNrZW5kLndoZW5HRVQoJy9waG9uZXMnKS5y
ZXNwb25kKHBob25lcyk7Ci0gKgotICogICAgIC8vIGFkZHMgYSBuZXcgcGhvbmUgdG8gdGhlIHBo
b25lcyBhcnJheQotICogICAgICRodHRwQmFja2VuZC53aGVuUE9TVCgnL3Bob25lcycpLnJlc3Bv
bmQoZnVuY3Rpb24obWV0aG9kLCB1cmwsIGRhdGEpIHsKLSAqICAgICAgIHBob25lcy5wdXNoKGFu
Z3VsYXIuZnJvbUpTT04oZGF0YSkpOwotICogICAgIH0pOwotICogICAgICRodHRwQmFja2VuZC53
aGVuR0VUKC9eXC90ZW1wbGF0ZXNcLy8pLnBhc3NUaHJvdWdoKCk7Ci0gKiAgICAgLy8uLi4KLSAq
ICAgfSk7Ci0gKiA8L3ByZT4KLSAqCi0gKiBBZnRlcndhcmRzLCBib290c3RyYXAgeW91ciBhcHAg
d2l0aCB0aGlzIG5ldyBtb2R1bGUuCi0gKi8KLQotLyoqCi0gKiBAbmdkb2MgbWV0aG9kCi0gKiBA
bmFtZSBuZ01vY2tFMkUuJGh0dHBCYWNrZW5kI3doZW4KLSAqIEBtZXRob2RPZiBuZ01vY2tFMkUu
JGh0dHBCYWNrZW5kCi0gKiBAZGVzY3JpcHRpb24KLSAqIENyZWF0ZXMgYSBuZXcgYmFja2VuZCBk
ZWZpbml0aW9uLgotICoKLSAqIEBwYXJhbSB7c3RyaW5nfSBtZXRob2QgSFRUUCBtZXRob2QuCi0g
KiBAcGFyYW0ge3N0cmluZ3xSZWdFeHB9IHVybCBIVFRQIHVybC4KLSAqIEBwYXJhbSB7KHN0cmlu
Z3xSZWdFeHApPX0gZGF0YSBIVFRQIHJlcXVlc3QgYm9keS4KLSAqIEBwYXJhbSB7KE9iamVjdHxm
dW5jdGlvbihPYmplY3QpKT19IGhlYWRlcnMgSFRUUCBoZWFkZXJzIG9yIGZ1bmN0aW9uIHRoYXQg
cmVjZWl2ZXMgaHR0cCBoZWFkZXIKLSAqICAgb2JqZWN0IGFuZCByZXR1cm5zIHRydWUgaWYgdGhl
IGhlYWRlcnMgbWF0Y2ggdGhlIGN1cnJlbnQgZGVmaW5pdGlvbi4KLSAqIEByZXR1cm5zIHtyZXF1
ZXN0SGFuZGxlcn0gUmV0dXJucyBhbiBvYmplY3Qgd2l0aCBgcmVzcG9uZGAgYW5kIGBwYXNzVGhy
b3VnaGAgbWV0aG9kcyB0aGF0Ci0gKiAgIGNvbnRyb2wgaG93IGEgbWF0Y2hlZCByZXF1ZXN0IGlz
IGhhbmRsZWQuCi0gKgotICogIC0gcmVzcG9uZCDigJMgYHtmdW5jdGlvbihbc3RhdHVzLF0gZGF0
YVssIGhlYWRlcnNdKXxmdW5jdGlvbihmdW5jdGlvbihtZXRob2QsIHVybCwgZGF0YSwgaGVhZGVy
cyl9YAotICogICAg4oCTIFRoZSByZXNwb25kIG1ldGhvZCB0YWtlcyBhIHNldCBvZiBzdGF0aWMg
ZGF0YSB0byBiZSByZXR1cm5lZCBvciBhIGZ1bmN0aW9uIHRoYXQgY2FuIHJldHVybgotICogICAg
YW4gYXJyYXkgY29udGFpbmluZyByZXNwb25zZSBzdGF0dXMgKG51bWJlciksIHJlc3BvbnNlIGRh
dGEgKHN0cmluZykgYW5kIHJlc3BvbnNlIGhlYWRlcnMKLSAqICAgIChPYmplY3QpLgotICogIC0g
cGFzc1Rocm91Z2gg4oCTIGB7ZnVuY3Rpb24oKX1gIOKAkyBBbnkgcmVxdWVzdCBtYXRjaGluZyBh
IGJhY2tlbmQgZGVmaW5pdGlvbiB3aXRoIGBwYXNzVGhyb3VnaGAKLSAqICAgIGhhbmRsZXIsIHdp
bGwgYmUgcGFzcyB0aHJvdWdoIHRvIHRoZSByZWFsIGJhY2tlbmQgKGFuIFhIUiByZXF1ZXN0IHdp
bGwgYmUgbWFkZSB0byB0aGUKLSAqICAgIHNlcnZlci4KLSAqLwotCi0vKioKLSAqIEBuZ2RvYyBt
ZXRob2QKLSAqIEBuYW1lIG5nTW9ja0UyRS4kaHR0cEJhY2tlbmQjd2hlbkdFVAotICogQG1ldGhv
ZE9mIG5nTW9ja0UyRS4kaHR0cEJhY2tlbmQKLSAqIEBkZXNjcmlwdGlvbgotICogQ3JlYXRlcyBh
IG5ldyBiYWNrZW5kIGRlZmluaXRpb24gZm9yIEdFVCByZXF1ZXN0cy4gRm9yIG1vcmUgaW5mbyBz
ZWUgYHdoZW4oKWAuCi0gKgotICogQHBhcmFtIHtzdHJpbmd8UmVnRXhwfSB1cmwgSFRUUCB1cmwu
Ci0gKiBAcGFyYW0geyhPYmplY3R8ZnVuY3Rpb24oT2JqZWN0KSk9fSBoZWFkZXJzIEhUVFAgaGVh
ZGVycy4KLSAqIEByZXR1cm5zIHtyZXF1ZXN0SGFuZGxlcn0gUmV0dXJucyBhbiBvYmplY3Qgd2l0
aCBgcmVzcG9uZGAgYW5kIGBwYXNzVGhyb3VnaGAgbWV0aG9kcyB0aGF0Ci0gKiAgIGNvbnRyb2wg
aG93IGEgbWF0Y2hlZCByZXF1ZXN0IGlzIGhhbmRsZWQuCi0gKi8KLQotLyoqCi0gKiBAbmdkb2Mg
bWV0aG9kCi0gKiBAbmFtZSBuZ01vY2tFMkUuJGh0dHBCYWNrZW5kI3doZW5IRUFECi0gKiBAbWV0
aG9kT2YgbmdNb2NrRTJFLiRodHRwQmFja2VuZAotICogQGRlc2NyaXB0aW9uCi0gKiBDcmVhdGVz
IGEgbmV3IGJhY2tlbmQgZGVmaW5pdGlvbiBmb3IgSEVBRCByZXF1ZXN0cy4gRm9yIG1vcmUgaW5m
byBzZWUgYHdoZW4oKWAuCi0gKgotICogQHBhcmFtIHtzdHJpbmd8UmVnRXhwfSB1cmwgSFRUUCB1
cmwuCi0gKiBAcGFyYW0geyhPYmplY3R8ZnVuY3Rpb24oT2JqZWN0KSk9fSBoZWFkZXJzIEhUVFAg
aGVhZGVycy4KLSAqIEByZXR1cm5zIHtyZXF1ZXN0SGFuZGxlcn0gUmV0dXJucyBhbiBvYmplY3Qg
d2l0aCBgcmVzcG9uZGAgYW5kIGBwYXNzVGhyb3VnaGAgbWV0aG9kcyB0aGF0Ci0gKiAgIGNvbnRy
b2wgaG93IGEgbWF0Y2hlZCByZXF1ZXN0IGlzIGhhbmRsZWQuCi0gKi8KLQotLyoqCi0gKiBAbmdk
b2MgbWV0aG9kCi0gKiBAbmFtZSBuZ01vY2tFMkUuJGh0dHBCYWNrZW5kI3doZW5ERUxFVEUKLSAq
IEBtZXRob2RPZiBuZ01vY2tFMkUuJGh0dHBCYWNrZW5kCi0gKiBAZGVzY3JpcHRpb24KLSAqIENy
ZWF0ZXMgYSBuZXcgYmFja2VuZCBkZWZpbml0aW9uIGZvciBERUxFVEUgcmVxdWVzdHMuIEZvciBt
b3JlIGluZm8gc2VlIGB3aGVuKClgLgotICoKLSAqIEBwYXJhbSB7c3RyaW5nfFJlZ0V4cH0gdXJs
IEhUVFAgdXJsLgotICogQHBhcmFtIHsoT2JqZWN0fGZ1bmN0aW9uKE9iamVjdCkpPX0gaGVhZGVy
cyBIVFRQIGhlYWRlcnMuCi0gKiBAcmV0dXJucyB7cmVxdWVzdEhhbmRsZXJ9IFJldHVybnMgYW4g
b2JqZWN0IHdpdGggYHJlc3BvbmRgIGFuZCBgcGFzc1Rocm91Z2hgIG1ldGhvZHMgdGhhdAotICog
ICBjb250cm9sIGhvdyBhIG1hdGNoZWQgcmVxdWVzdCBpcyBoYW5kbGVkLgotICovCi0KLS8qKgot
ICogQG5nZG9jIG1ldGhvZAotICogQG5hbWUgbmdNb2NrRTJFLiRodHRwQmFja2VuZCN3aGVuUE9T
VAotICogQG1ldGhvZE9mIG5nTW9ja0UyRS4kaHR0cEJhY2tlbmQKLSAqIEBkZXNjcmlwdGlvbgot
ICogQ3JlYXRlcyBhIG5ldyBiYWNrZW5kIGRlZmluaXRpb24gZm9yIFBPU1QgcmVxdWVzdHMuIEZv
ciBtb3JlIGluZm8gc2VlIGB3aGVuKClgLgotICoKLSAqIEBwYXJhbSB7c3RyaW5nfFJlZ0V4cH0g
dXJsIEhUVFAgdXJsLgotICogQHBhcmFtIHsoc3RyaW5nfFJlZ0V4cCk9fSBkYXRhIEhUVFAgcmVx
dWVzdCBib2R5LgotICogQHBhcmFtIHsoT2JqZWN0fGZ1bmN0aW9uKE9iamVjdCkpPX0gaGVhZGVy
cyBIVFRQIGhlYWRlcnMuCi0gKiBAcmV0dXJucyB7cmVxdWVzdEhhbmRsZXJ9IFJldHVybnMgYW4g
b2JqZWN0IHdpdGggYHJlc3BvbmRgIGFuZCBgcGFzc1Rocm91Z2hgIG1ldGhvZHMgdGhhdAotICog
ICBjb250cm9sIGhvdyBhIG1hdGNoZWQgcmVxdWVzdCBpcyBoYW5kbGVkLgotICovCi0KLS8qKgot
ICogQG5nZG9jIG1ldGhvZAotICogQG5hbWUgbmdNb2NrRTJFLiRodHRwQmFja2VuZCN3aGVuUFVU
Ci0gKiBAbWV0aG9kT2YgbmdNb2NrRTJFLiRodHRwQmFja2VuZAotICogQGRlc2NyaXB0aW9uCi0g
KiBDcmVhdGVzIGEgbmV3IGJhY2tlbmQgZGVmaW5pdGlvbiBmb3IgUFVUIHJlcXVlc3RzLiAgRm9y
IG1vcmUgaW5mbyBzZWUgYHdoZW4oKWAuCi0gKgotICogQHBhcmFtIHtzdHJpbmd8UmVnRXhwfSB1
cmwgSFRUUCB1cmwuCi0gKiBAcGFyYW0geyhzdHJpbmd8UmVnRXhwKT19IGRhdGEgSFRUUCByZXF1
ZXN0IGJvZHkuCi0gKiBAcGFyYW0geyhPYmplY3R8ZnVuY3Rpb24oT2JqZWN0KSk9fSBoZWFkZXJz
IEhUVFAgaGVhZGVycy4KLSAqIEByZXR1cm5zIHtyZXF1ZXN0SGFuZGxlcn0gUmV0dXJucyBhbiBv
YmplY3Qgd2l0aCBgcmVzcG9uZGAgYW5kIGBwYXNzVGhyb3VnaGAgbWV0aG9kcyB0aGF0Ci0gKiAg
IGNvbnRyb2wgaG93IGEgbWF0Y2hlZCByZXF1ZXN0IGlzIGhhbmRsZWQuCi0gKi8KLQotLyoqCi0g
KiBAbmdkb2MgbWV0aG9kCi0gKiBAbmFtZSBuZ01vY2tFMkUuJGh0dHBCYWNrZW5kI3doZW5QQVRD
SAotICogQG1ldGhvZE9mIG5nTW9ja0UyRS4kaHR0cEJhY2tlbmQKLSAqIEBkZXNjcmlwdGlvbgot
ICogQ3JlYXRlcyBhIG5ldyBiYWNrZW5kIGRlZmluaXRpb24gZm9yIFBBVENIIHJlcXVlc3RzLiAg
Rm9yIG1vcmUgaW5mbyBzZWUgYHdoZW4oKWAuCi0gKgotICogQHBhcmFtIHtzdHJpbmd8UmVnRXhw
fSB1cmwgSFRUUCB1cmwuCi0gKiBAcGFyYW0geyhzdHJpbmd8UmVnRXhwKT19IGRhdGEgSFRUUCBy
ZXF1ZXN0IGJvZHkuCi0gKiBAcGFyYW0geyhPYmplY3R8ZnVuY3Rpb24oT2JqZWN0KSk9fSBoZWFk
ZXJzIEhUVFAgaGVhZGVycy4KLSAqIEByZXR1cm5zIHtyZXF1ZXN0SGFuZGxlcn0gUmV0dXJucyBh
biBvYmplY3Qgd2l0aCBgcmVzcG9uZGAgYW5kIGBwYXNzVGhyb3VnaGAgbWV0aG9kcyB0aGF0Ci0g
KiAgIGNvbnRyb2wgaG93IGEgbWF0Y2hlZCByZXF1ZXN0IGlzIGhhbmRsZWQuCi0gKi8KLQotLyoq
Ci0gKiBAbmdkb2MgbWV0aG9kCi0gKiBAbmFtZSBuZ01vY2tFMkUuJGh0dHBCYWNrZW5kI3doZW5K
U09OUAotICogQG1ldGhvZE9mIG5nTW9ja0UyRS4kaHR0cEJhY2tlbmQKLSAqIEBkZXNjcmlwdGlv
bgotICogQ3JlYXRlcyBhIG5ldyBiYWNrZW5kIGRlZmluaXRpb24gZm9yIEpTT05QIHJlcXVlc3Rz
LiBGb3IgbW9yZSBpbmZvIHNlZSBgd2hlbigpYC4KLSAqCi0gKiBAcGFyYW0ge3N0cmluZ3xSZWdF
eHB9IHVybCBIVFRQIHVybC4KLSAqIEByZXR1cm5zIHtyZXF1ZXN0SGFuZGxlcn0gUmV0dXJucyBh
biBvYmplY3Qgd2l0aCBgcmVzcG9uZGAgYW5kIGBwYXNzVGhyb3VnaGAgbWV0aG9kcyB0aGF0Ci0g
KiAgIGNvbnRyb2wgaG93IGEgbWF0Y2hlZCByZXF1ZXN0IGlzIGhhbmRsZWQuCi0gKi8KLWFuZ3Vs
YXIubW9jay5lMmUgPSB7fTsKLWFuZ3VsYXIubW9jay5lMmUuJGh0dHBCYWNrZW5kRGVjb3JhdG9y
ID0gWyckZGVsZWdhdGUnLCAnJGJyb3dzZXInLCBjcmVhdGVIdHRwQmFja2VuZE1vY2tdOwotCi0K
LWFuZ3VsYXIubW9jay5jbGVhckRhdGFDYWNoZSA9IGZ1bmN0aW9uKCkgewotICB2YXIga2V5LAot
ICAgICAgY2FjaGUgPSBhbmd1bGFyLmVsZW1lbnQuY2FjaGU7Ci0KLSAgZm9yKGtleSBpbiBjYWNo
ZSkgewotICAgIGlmIChjYWNoZS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7Ci0gICAgICB2YXIgaGFu
ZGxlID0gY2FjaGVba2V5XS5oYW5kbGU7Ci0KLSAgICAgIGhhbmRsZSAmJiBhbmd1bGFyLmVsZW1l
bnQoaGFuZGxlLmVsZW0pLnVuYmluZCgpOwotICAgICAgZGVsZXRlIGNhY2hlW2tleV07Ci0gICAg
fQotICB9Ci19OwotCi0KLXdpbmRvdy5qc3Rlc3Rkcml2ZXIgJiYgKGZ1bmN0aW9uKHdpbmRvdykg
ewotICAvKioKLSAgICogR2xvYmFsIG1ldGhvZCB0byBvdXRwdXQgYW55IG51bWJlciBvZiBvYmpl
Y3RzIGludG8gSlNURCBjb25zb2xlLiBVc2VmdWwgZm9yIGRlYnVnZ2luZy4KLSAgICovCi0gIHdp
bmRvdy5kdW1wID0gZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGFyZ3MgPSBbXTsKLSAgICBhbmd1bGFy
LmZvckVhY2goYXJndW1lbnRzLCBmdW5jdGlvbihhcmcpIHsKLSAgICAgIGFyZ3MucHVzaChhbmd1
bGFyLm1vY2suZHVtcChhcmcpKTsKLSAgICB9KTsKLSAgICBqc3Rlc3Rkcml2ZXIuY29uc29sZS5s
b2cuYXBwbHkoanN0ZXN0ZHJpdmVyLmNvbnNvbGUsIGFyZ3MpOwotICAgIGlmICh3aW5kb3cuY29u
c29sZSkgewotICAgICAgd2luZG93LmNvbnNvbGUubG9nLmFwcGx5KHdpbmRvdy5jb25zb2xlLCBh
cmdzKTsKLSAgICB9Ci0gIH07Ci19KSh3aW5kb3cpOwotCi0KLXdpbmRvdy5qYXNtaW5lICYmIChm
dW5jdGlvbih3aW5kb3cpIHsKLQotICBhZnRlckVhY2goZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHNw
ZWMgPSBnZXRDdXJyZW50U3BlYygpOwotICAgIHZhciBpbmplY3RvciA9IHNwZWMuJGluamVjdG9y
OwotCi0gICAgc3BlYy4kaW5qZWN0b3IgPSBudWxsOwotICAgIHNwZWMuJG1vZHVsZXMgPSBudWxs
OwotCi0gICAgaWYgKGluamVjdG9yKSB7Ci0gICAgICBpbmplY3Rvci5nZXQoJyRyb290RWxlbWVu
dCcpLnVuYmluZCgpOwotICAgICAgaW5qZWN0b3IuZ2V0KCckYnJvd3NlcicpLnBvbGxGbnMubGVu
Z3RoID0gMDsKLSAgICB9Ci0KLSAgICBhbmd1bGFyLm1vY2suY2xlYXJEYXRhQ2FjaGUoKTsKLQot
ICAgIC8vIGNsZWFuIHVwIGpxdWVyeSdzIGZyYWdtZW50IGNhY2hlCi0gICAgYW5ndWxhci5mb3JF
YWNoKGFuZ3VsYXIuZWxlbWVudC5mcmFnbWVudHMsIGZ1bmN0aW9uKHZhbCwga2V5KSB7Ci0gICAg
ICBkZWxldGUgYW5ndWxhci5lbGVtZW50LmZyYWdtZW50c1trZXldOwotICAgIH0pOwotCi0gICAg
TW9ja1hoci4kJGxhc3RJbnN0YW5jZSA9IG51bGw7Ci0KLSAgICBhbmd1bGFyLmZvckVhY2goYW5n
dWxhci5jYWxsYmFja3MsIGZ1bmN0aW9uKHZhbCwga2V5KSB7Ci0gICAgICBkZWxldGUgYW5ndWxh
ci5jYWxsYmFja3Nba2V5XTsKLSAgICB9KTsKLSAgICBhbmd1bGFyLmNhbGxiYWNrcy5jb3VudGVy
ID0gMDsKLSAgfSk7Ci0KLSAgZnVuY3Rpb24gZ2V0Q3VycmVudFNwZWMoKSB7Ci0gICAgcmV0dXJu
IGphc21pbmUuZ2V0RW52KCkuY3VycmVudFNwZWM7Ci0gIH0KLQotICBmdW5jdGlvbiBpc1NwZWNS
dW5uaW5nKCkgewotICAgIHZhciBzcGVjID0gZ2V0Q3VycmVudFNwZWMoKTsKLSAgICByZXR1cm4g
c3BlYyAmJiBzcGVjLnF1ZXVlLnJ1bm5pbmc7Ci0gIH0KLQotICAvKioKLSAgICogQG5nZG9jIGZ1
bmN0aW9uCi0gICAqIEBuYW1lIGFuZ3VsYXIubW9jay5tb2R1bGUKLSAgICogQGRlc2NyaXB0aW9u
Ci0gICAqCi0gICAqICpOT1RFKjogVGhpcyBpcyBmdW5jdGlvbiBpcyBhbHNvIHB1Ymxpc2hlZCBv
biB3aW5kb3cgZm9yIGVhc3kgYWNjZXNzLjxicj4KLSAgICogKk5PVEUqOiBPbmx5IGF2YWlsYWJs
ZSB3aXRoIHtAbGluayBodHRwOi8vcGl2b3RhbC5naXRodWIuY29tL2phc21pbmUvIGphc21pbmV9
LgotICAgKgotICAgKiBUaGlzIGZ1bmN0aW9uIHJlZ2lzdGVycyBhIG1vZHVsZSBjb25maWd1cmF0
aW9uIGNvZGUuIEl0IGNvbGxlY3RzIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uCi0gICAq
IHdoaWNoIHdpbGwgYmUgdXNlZCB3aGVuIHRoZSBpbmplY3RvciBpcyBjcmVhdGVkIGJ5IHtAbGlu
ayBhbmd1bGFyLm1vY2suaW5qZWN0IGluamVjdH0uCi0gICAqCi0gICAqIFNlZSB7QGxpbmsgYW5n
dWxhci5tb2NrLmluamVjdCBpbmplY3R9IGZvciB1c2FnZSBleGFtcGxlCi0gICAqCi0gICAqIEBw
YXJhbSB7Li4uKHN0cmluZ3xGdW5jdGlvbil9IGZucyBhbnkgbnVtYmVyIG9mIG1vZHVsZXMgd2hp
Y2ggYXJlIHJlcHJlc2VudGVkIGFzIHN0cmluZwotICAgKiAgICAgICAgYWxpYXNlcyBvciBhcyBh
bm9ueW1vdXMgbW9kdWxlIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9ucy4gVGhlIG1vZHVsZXMgYXJl
IHVzZWQgdG8KLSAgICogICAgICAgIGNvbmZpZ3VyZSB0aGUgaW5qZWN0b3IuIFRoZSAnbmcnIGFu
ZCAnbmdNb2NrJyBtb2R1bGVzIGFyZSBhdXRvbWF0aWNhbGx5IGxvYWRlZC4KLSAgICovCi0gIHdp
bmRvdy5tb2R1bGUgPSBhbmd1bGFyLm1vY2subW9kdWxlID0gZnVuY3Rpb24oKSB7Ci0gICAgdmFy
IG1vZHVsZUZucyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCk7Ci0g
ICAgcmV0dXJuIGlzU3BlY1J1bm5pbmcoKSA/IHdvcmtGbigpIDogd29ya0ZuOwotICAgIC8vLy8v
Ly8vLy8vLy8vLy8vLy8vLwotICAgIGZ1bmN0aW9uIHdvcmtGbigpIHsKLSAgICAgIHZhciBzcGVj
ID0gZ2V0Q3VycmVudFNwZWMoKTsKLSAgICAgIGlmIChzcGVjLiRpbmplY3RvcikgewotICAgICAg
ICB0aHJvdyBFcnJvcignSW5qZWN0b3IgYWxyZWFkeSBjcmVhdGVkLCBjYW4gbm90IHJlZ2lzdGVy
IGEgbW9kdWxlIScpOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgdmFyIG1vZHVsZXMgPSBzcGVj
LiRtb2R1bGVzIHx8IChzcGVjLiRtb2R1bGVzID0gW10pOwotICAgICAgICBhbmd1bGFyLmZvckVh
Y2gobW9kdWxlRm5zLCBmdW5jdGlvbihtb2R1bGUpIHsKLSAgICAgICAgICBtb2R1bGVzLnB1c2go
bW9kdWxlKTsKLSAgICAgICAgfSk7Ci0gICAgICB9Ci0gICAgfQotICB9OwotCi0gIC8qKgotICAg
KiBAbmdkb2MgZnVuY3Rpb24KLSAgICogQG5hbWUgYW5ndWxhci5tb2NrLmluamVjdAotICAgKiBA
ZGVzY3JpcHRpb24KLSAgICoKLSAgICogKk5PVEUqOiBUaGlzIGlzIGZ1bmN0aW9uIGlzIGFsc28g
cHVibGlzaGVkIG9uIHdpbmRvdyBmb3IgZWFzeSBhY2Nlc3MuPGJyPgotICAgKiAqTk9URSo6IE9u
bHkgYXZhaWxhYmxlIHdpdGgge0BsaW5rIGh0dHA6Ly9waXZvdGFsLmdpdGh1Yi5jb20vamFzbWlu
ZS8gamFzbWluZX0uCi0gICAqCi0gICAqIFRoZSBpbmplY3QgZnVuY3Rpb24gd3JhcHMgYSBmdW5j
dGlvbiBpbnRvIGFuIGluamVjdGFibGUgZnVuY3Rpb24uIFRoZSBpbmplY3QoKSBjcmVhdGVzIG5l
dwotICAgKiBpbnN0YW5jZSBvZiB7QGxpbmsgQVVUTy4kaW5qZWN0b3IgJGluamVjdG9yfSBwZXIg
dGVzdCwgd2hpY2ggaXMgdGhlbiB1c2VkIGZvcgotICAgKiByZXNvbHZpbmcgcmVmZXJlbmNlcy4K
LSAgICoKLSAgICogU2VlIGFsc28ge0BsaW5rIGFuZ3VsYXIubW9jay5tb2R1bGUgbW9kdWxlfQot
ICAgKgotICAgKiBFeGFtcGxlIG9mIHdoYXQgYSB0eXBpY2FsIGphc21pbmUgdGVzdHMgbG9va3Mg
bGlrZSB3aXRoIHRoZSBpbmplY3QgbWV0aG9kLgotICAgKiA8cHJlPgotICAgKgotICAgKiAgIGFu
Z3VsYXIubW9kdWxlKCdteUFwcGxpY2F0aW9uTW9kdWxlJywgW10pCi0gICAqICAgICAgIC52YWx1
ZSgnbW9kZScsICdhcHAnKQotICAgKiAgICAgICAudmFsdWUoJ3ZlcnNpb24nLCAndjEuMC4xJyk7
Ci0gICAqCi0gICAqCi0gICAqICAgZGVzY3JpYmUoJ015QXBwJywgZnVuY3Rpb24oKSB7Ci0gICAq
Ci0gICAqICAgICAvLyBZb3UgbmVlZCB0byBsb2FkIG1vZHVsZXMgdGhhdCB5b3Ugd2FudCB0byB0
ZXN0LAotICAgKiAgICAgLy8gaXQgbG9hZHMgb25seSB0aGUgIm5nIiBtb2R1bGUgYnkgZGVmYXVs
dC4KLSAgICogICAgIGJlZm9yZUVhY2gobW9kdWxlKCdteUFwcGxpY2F0aW9uTW9kdWxlJykpOwot
ICAgKgotICAgKgotICAgKiAgICAgLy8gaW5qZWN0KCkgaXMgdXNlZCB0byBpbmplY3QgYXJndW1l
bnRzIG9mIGFsbCBnaXZlbiBmdW5jdGlvbnMKLSAgICogICAgIGl0KCdzaG91bGQgcHJvdmlkZSBh
IHZlcnNpb24nLCBpbmplY3QoZnVuY3Rpb24obW9kZSwgdmVyc2lvbikgewotICAgKiAgICAgICBl
eHBlY3QodmVyc2lvbikudG9FcXVhbCgndjEuMC4xJyk7Ci0gICAqICAgICAgIGV4cGVjdChtb2Rl
KS50b0VxdWFsKCdhcHAnKTsKLSAgICogICAgIH0pKTsKLSAgICoKLSAgICoKLSAgICogICAgIC8v
IFRoZSBpbmplY3QgYW5kIG1vZHVsZSBtZXRob2QgY2FuIGFsc28gYmUgdXNlZCBpbnNpZGUgb2Yg
dGhlIGl0IG9yIGJlZm9yZUVhY2gKLSAgICogICAgIGl0KCdzaG91bGQgb3ZlcnJpZGUgYSB2ZXJz
aW9uIGFuZCB0ZXN0IHRoZSBuZXcgdmVyc2lvbiBpcyBpbmplY3RlZCcsIGZ1bmN0aW9uKCkgewot
ICAgKiAgICAgICAvLyBtb2R1bGUoKSB0YWtlcyBmdW5jdGlvbnMgb3Igc3RyaW5ncyAobW9kdWxl
IGFsaWFzZXMpCi0gICAqICAgICAgIG1vZHVsZShmdW5jdGlvbigkcHJvdmlkZSkgewotICAgKiAg
ICAgICAgICRwcm92aWRlLnZhbHVlKCd2ZXJzaW9uJywgJ292ZXJyaWRkZW4nKTsgLy8gb3ZlcnJp
ZGUgdmVyc2lvbiBoZXJlCi0gICAqICAgICAgIH0pOwotICAgKgotICAgKiAgICAgICBpbmplY3Qo
ZnVuY3Rpb24odmVyc2lvbikgewotICAgKiAgICAgICAgIGV4cGVjdCh2ZXJzaW9uKS50b0VxdWFs
KCdvdmVycmlkZGVuJyk7Ci0gICAqICAgICAgIH0pOwotICAgKiAgICAgKSk7Ci0gICAqICAgfSk7
Ci0gICAqCi0gICAqIDwvcHJlPgotICAgKgotICAgKiBAcGFyYW0gey4uLkZ1bmN0aW9ufSBmbnMg
YW55IG51bWJlciBvZiBmdW5jdGlvbnMgd2hpY2ggd2lsbCBiZSBpbmplY3RlZCB1c2luZyB0aGUg
aW5qZWN0b3IuCi0gICAqLwotICB3aW5kb3cuaW5qZWN0ID0gYW5ndWxhci5tb2NrLmluamVjdCA9
IGZ1bmN0aW9uKCkgewotICAgIHZhciBibG9ja0ZucyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5j
YWxsKGFyZ3VtZW50cywgMCk7Ci0gICAgdmFyIGVycm9yRm9yU3RhY2sgPSBuZXcgRXJyb3IoJ0Rl
Y2xhcmF0aW9uIExvY2F0aW9uJyk7Ci0gICAgcmV0dXJuIGlzU3BlY1J1bm5pbmcoKSA/IHdvcmtG
bigpIDogd29ya0ZuOwotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgIGZ1bmN0aW9uIHdv
cmtGbigpIHsKLSAgICAgIHZhciBzcGVjID0gZ2V0Q3VycmVudFNwZWMoKTsKLSAgICAgIHZhciBt
b2R1bGVzID0gc3BlYy4kbW9kdWxlcyB8fCBbXTsKLSAgICAgIG1vZHVsZXMudW5zaGlmdCgnbmdN
b2NrJyk7Ci0gICAgICBtb2R1bGVzLnVuc2hpZnQoJ25nJyk7Ci0gICAgICB2YXIgaW5qZWN0b3Ig
PSBzcGVjLiRpbmplY3RvcjsKLSAgICAgIGlmICghaW5qZWN0b3IpIHsKLSAgICAgICAgaW5qZWN0
b3IgPSBzcGVjLiRpbmplY3RvciA9IGFuZ3VsYXIuaW5qZWN0b3IobW9kdWxlcyk7Ci0gICAgICB9
Ci0gICAgICBmb3IodmFyIGkgPSAwLCBpaSA9IGJsb2NrRm5zLmxlbmd0aDsgaSA8IGlpOyBpKysp
IHsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICBpbmplY3Rvci5pbnZva2UoYmxvY2tGbnNbaV0g
fHwgYW5ndWxhci5ub29wLCB0aGlzKTsKLSAgICAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICAg
IGlmKGUuc3RhY2spIGUuc3RhY2sgKz0gICdcbicgKyBlcnJvckZvclN0YWNrLnN0YWNrOwotICAg
ICAgICAgIHRocm93IGU7Ci0gICAgICAgIH0gZmluYWxseSB7Ci0gICAgICAgICAgZXJyb3JGb3JT
dGFjayA9IG51bGw7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gIH07Ci19KSh3aW5kb3cp
OwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL2Jvd2VyX2NvbXBvbmVudHMvYW5n
dWxhci9hbmd1bGFyLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL2Jvd2VyX2NvbXBvbmVudHMv
YW5ndWxhci9hbmd1bGFyLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNzkyYjI2
Yzc0NGU0YTVmYzgxNTQ2MWYwZWFjNDBhOWJkZWFhMTU4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ib3dlcl9jb21w
b25lbnRzL2FuZ3VsYXIvYW5ndWxhci5qcworKysgL2Rldi9udWxsCkBAIC0xLDE0ODQ3ICswLDAg
QEAKLS8qKgotICogQGxpY2Vuc2UgQW5ndWxhckpTIHYxLjAuNwotICogKGMpIDIwMTAtMjAxMiBH
b29nbGUsIEluYy4gaHR0cDovL2FuZ3VsYXJqcy5vcmcKLSAqIExpY2Vuc2U6IE1JVAotICovCi0o
ZnVuY3Rpb24od2luZG93LCBkb2N1bWVudCwgdW5kZWZpbmVkKSB7Ci0ndXNlIHN0cmljdCc7Ci0K
LS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0vKioKLSAqIEBuZ2RvYyBm
dW5jdGlvbgotICogQG5hbWUgYW5ndWxhci5sb3dlcmNhc2UKLSAqIEBmdW5jdGlvbgotICoKLSAq
IEBkZXNjcmlwdGlvbiBDb252ZXJ0cyB0aGUgc3BlY2lmaWVkIHN0cmluZyB0byBsb3dlcmNhc2Uu
Ci0gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFN0cmluZyB0byBiZSBjb252ZXJ0ZWQgdG8gbG93
ZXJjYXNlLgotICogQHJldHVybnMge3N0cmluZ30gTG93ZXJjYXNlZCBzdHJpbmcuCi0gKi8KLXZh
ciBsb3dlcmNhc2UgPSBmdW5jdGlvbihzdHJpbmcpe3JldHVybiBpc1N0cmluZyhzdHJpbmcpID8g
c3RyaW5nLnRvTG93ZXJDYXNlKCkgOiBzdHJpbmc7fTsKLQotCi0vKioKLSAqIEBuZ2RvYyBmdW5j
dGlvbgotICogQG5hbWUgYW5ndWxhci51cHBlcmNhc2UKLSAqIEBmdW5jdGlvbgotICoKLSAqIEBk
ZXNjcmlwdGlvbiBDb252ZXJ0cyB0aGUgc3BlY2lmaWVkIHN0cmluZyB0byB1cHBlcmNhc2UuCi0g
KiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFN0cmluZyB0byBiZSBjb252ZXJ0ZWQgdG8gdXBwZXJj
YXNlLgotICogQHJldHVybnMge3N0cmluZ30gVXBwZXJjYXNlZCBzdHJpbmcuCi0gKi8KLXZhciB1
cHBlcmNhc2UgPSBmdW5jdGlvbihzdHJpbmcpe3JldHVybiBpc1N0cmluZyhzdHJpbmcpID8gc3Ry
aW5nLnRvVXBwZXJDYXNlKCkgOiBzdHJpbmc7fTsKLQotCi12YXIgbWFudWFsTG93ZXJjYXNlID0g
ZnVuY3Rpb24ocykgewotICByZXR1cm4gaXNTdHJpbmcocykKLSAgICAgID8gcy5yZXBsYWNlKC9b
QS1aXS9nLCBmdW5jdGlvbihjaCkge3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGNoLmNoYXJD
b2RlQXQoMCkgfCAzMik7fSkKLSAgICAgIDogczsKLX07Ci12YXIgbWFudWFsVXBwZXJjYXNlID0g
ZnVuY3Rpb24ocykgewotICByZXR1cm4gaXNTdHJpbmcocykKLSAgICAgID8gcy5yZXBsYWNlKC9b
YS16XS9nLCBmdW5jdGlvbihjaCkge3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGNoLmNoYXJD
b2RlQXQoMCkgJiB+MzIpO30pCi0gICAgICA6IHM7Ci19OwotCi0KLS8vIFN0cmluZyN0b0xvd2Vy
Q2FzZSBhbmQgU3RyaW5nI3RvVXBwZXJDYXNlIGRvbid0IHByb2R1Y2UgY29ycmVjdCByZXN1bHRz
IGluIGJyb3dzZXJzIHdpdGggVHVya2lzaAotLy8gbG9jYWxlLCBmb3IgdGhpcyByZWFzb24gd2Ug
bmVlZCB0byBkZXRlY3QgdGhpcyBjYXNlIGFuZCByZWRlZmluZSBsb3dlcmNhc2UvdXBwZXJjYXNl
IG1ldGhvZHMKLS8vIHdpdGggY29ycmVjdCBidXQgc2xvd2VyIGFsdGVybmF0aXZlcy4KLWlmICgn
aScgIT09ICdJJy50b0xvd2VyQ2FzZSgpKSB7Ci0gIGxvd2VyY2FzZSA9IG1hbnVhbExvd2VyY2Fz
ZTsKLSAgdXBwZXJjYXNlID0gbWFudWFsVXBwZXJjYXNlOwotfQotCi0KLXZhciAvKiogaG9sZHMg
bWFqb3IgdmVyc2lvbiBudW1iZXIgZm9yIElFIG9yIE5hTiBmb3IgcmVhbCBicm93c2VycyAqLwot
ICAgIG1zaWUgICAgICAgICAgICAgID0gaW50KCgvbXNpZSAoXGQrKS8uZXhlYyhsb3dlcmNhc2Uo
bmF2aWdhdG9yLnVzZXJBZ2VudCkpIHx8IFtdKVsxXSksCi0gICAganFMaXRlLCAgICAgICAgICAg
Ly8gZGVsYXkgYmluZGluZyBzaW5jZSBqUXVlcnkgY291bGQgYmUgbG9hZGVkIGFmdGVyIHVzLgot
ICAgIGpRdWVyeSwgICAgICAgICAgIC8vIGRlbGF5IGJpbmRpbmcKLSAgICBzbGljZSAgICAgICAg
ICAgICA9IFtdLnNsaWNlLAotICAgIHB1c2ggICAgICAgICAgICAgID0gW10ucHVzaCwKLSAgICB0
b1N0cmluZyAgICAgICAgICA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsCi0KLSAgICAvKiog
QG5hbWUgYW5ndWxhciAqLwotICAgIGFuZ3VsYXIgICAgICAgICAgID0gd2luZG93LmFuZ3VsYXIg
fHwgKHdpbmRvdy5hbmd1bGFyID0ge30pLAotICAgIGFuZ3VsYXJNb2R1bGUsCi0gICAgbm9kZU5h
bWVfLAotICAgIHVpZCAgICAgICAgICAgICAgID0gWycwJywgJzAnLCAnMCddOwotCi0KLS8qKgot
ICogQHByaXZhdGUKLSAqIEBwYXJhbSB7Kn0gb2JqCi0gKiBAcmV0dXJuIHtib29sZWFufSBSZXR1
cm5zIHRydWUgaWYgYG9iamAgaXMgYW4gYXJyYXkgb3IgYXJyYXktbGlrZSBvYmplY3QgKE5vZGVM
aXN0LCBBcmd1bWVudHMsIC4uLikKLSAqLwotZnVuY3Rpb24gaXNBcnJheUxpa2Uob2JqKSB7Ci0g
IGlmICghb2JqIHx8ICh0eXBlb2Ygb2JqLmxlbmd0aCAhPT0gJ251bWJlcicpKSByZXR1cm4gZmFs
c2U7Ci0KLSAgLy8gV2UgaGF2ZSBvbiBvYmplY3Qgd2hpY2ggaGFzIGxlbmd0aCBwcm9wZXJ0eS4g
U2hvdWxkIHdlIHRyZWF0IGl0IGFzIGFycmF5PwotICBpZiAodHlwZW9mIG9iai5oYXNPd25Qcm9w
ZXJ0eSAhPSAnZnVuY3Rpb24nICYmCi0gICAgICB0eXBlb2Ygb2JqLmNvbnN0cnVjdG9yICE9ICdm
dW5jdGlvbicpIHsKLSAgICAvLyBUaGlzIGlzIGhlcmUgZm9yIElFODogaXQgaXMgYSBib2d1cyBv
YmplY3QgdHJlYXQgaXQgYXMgYXJyYXk7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0gZWxzZSAgewot
ICAgIHJldHVybiBvYmogaW5zdGFuY2VvZiBKUUxpdGUgfHwgICAgICAgICAgICAgICAgICAgICAg
Ly8gSlFMaXRlCi0gICAgICAgICAgIChqUXVlcnkgJiYgb2JqIGluc3RhbmNlb2YgalF1ZXJ5KSB8
fCAgICAgICAgICAvLyBqUXVlcnkKLSAgICAgICAgICAgdG9TdHJpbmcuY2FsbChvYmopICE9PSAn
W29iamVjdCBPYmplY3RdJyB8fCAgIC8vIHNvbWUgYnJvd3NlciBuYXRpdmUgb2JqZWN0Ci0gICAg
ICAgICAgIHR5cGVvZiBvYmouY2FsbGVlID09PSAnZnVuY3Rpb24nOyAgICAgICAgICAgICAgLy8g
YXJndW1lbnRzIChvbiBJRTggbG9va3MgbGlrZSByZWd1bGFyIG9iaikKLSAgfQotfQotCi0KLS8q
KgotICogQG5nZG9jIGZ1bmN0aW9uCi0gKiBAbmFtZSBhbmd1bGFyLmZvckVhY2gKLSAqIEBmdW5j
dGlvbgotICoKLSAqIEBkZXNjcmlwdGlvbgotICogSW52b2tlcyB0aGUgYGl0ZXJhdG9yYCBmdW5j
dGlvbiBvbmNlIGZvciBlYWNoIGl0ZW0gaW4gYG9iamAgY29sbGVjdGlvbiwgd2hpY2ggY2FuIGJl
IGVpdGhlciBhbgotICogb2JqZWN0IG9yIGFuIGFycmF5LiBUaGUgYGl0ZXJhdG9yYCBmdW5jdGlv
biBpcyBpbnZva2VkIHdpdGggYGl0ZXJhdG9yKHZhbHVlLCBrZXkpYCwgd2hlcmUgYHZhbHVlYAot
ICogaXMgdGhlIHZhbHVlIG9mIGFuIG9iamVjdCBwcm9wZXJ0eSBvciBhbiBhcnJheSBlbGVtZW50
IGFuZCBga2V5YCBpcyB0aGUgb2JqZWN0IHByb3BlcnR5IGtleSBvcgotICogYXJyYXkgZWxlbWVu
dCBpbmRleC4gU3BlY2lmeWluZyBhIGBjb250ZXh0YCBmb3IgdGhlIGZ1bmN0aW9uIGlzIG9wdGlv
bmFsLgotICoKLSAqIE5vdGU6IHRoaXMgZnVuY3Rpb24gd2FzIHByZXZpb3VzbHkga25vd24gYXMg
YGFuZ3VsYXIuZm9yZWFjaGAuCi0gKgotICAgPHByZT4KLSAgICAgdmFyIHZhbHVlcyA9IHtuYW1l
OiAnbWlza28nLCBnZW5kZXI6ICdtYWxlJ307Ci0gICAgIHZhciBsb2cgPSBbXTsKLSAgICAgYW5n
dWxhci5mb3JFYWNoKHZhbHVlcywgZnVuY3Rpb24odmFsdWUsIGtleSl7Ci0gICAgICAgdGhpcy5w
dXNoKGtleSArICc6ICcgKyB2YWx1ZSk7Ci0gICAgIH0sIGxvZyk7Ci0gICAgIGV4cGVjdChsb2cp
LnRvRXF1YWwoWyduYW1lOiBtaXNrbycsICdnZW5kZXI6bWFsZSddKTsKLSAgIDwvcHJlPgotICoK
LSAqIEBwYXJhbSB7T2JqZWN0fEFycmF5fSBvYmogT2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci4KLSAq
IEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdG9yIEl0ZXJhdG9yIGZ1bmN0aW9uLgotICogQHBhcmFt
IHtPYmplY3Q9fSBjb250ZXh0IE9iamVjdCB0byBiZWNvbWUgY29udGV4dCAoYHRoaXNgKSBmb3Ig
dGhlIGl0ZXJhdG9yIGZ1bmN0aW9uLgotICogQHJldHVybnMge09iamVjdHxBcnJheX0gUmVmZXJl
bmNlIHRvIGBvYmpgLgotICovCi1mdW5jdGlvbiBmb3JFYWNoKG9iaiwgaXRlcmF0b3IsIGNvbnRl
eHQpIHsKLSAgdmFyIGtleTsKLSAgaWYgKG9iaikgewotICAgIGlmIChpc0Z1bmN0aW9uKG9iaikp
ewotICAgICAgZm9yIChrZXkgaW4gb2JqKSB7Ci0gICAgICAgIGlmIChrZXkgIT0gJ3Byb3RvdHlw
ZScgJiYga2V5ICE9ICdsZW5ndGgnICYmIGtleSAhPSAnbmFtZScgJiYgb2JqLmhhc093blByb3Bl
cnR5KGtleSkpIHsKLSAgICAgICAgICBpdGVyYXRvci5jYWxsKGNvbnRleHQsIG9ialtrZXldLCBr
ZXkpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfSBlbHNlIGlmIChvYmouZm9yRWFjaCAmJiBv
YmouZm9yRWFjaCAhPT0gZm9yRWFjaCkgewotICAgICAgb2JqLmZvckVhY2goaXRlcmF0b3IsIGNv
bnRleHQpOwotICAgIH0gZWxzZSBpZiAoaXNBcnJheUxpa2Uob2JqKSkgewotICAgICAgZm9yIChr
ZXkgPSAwOyBrZXkgPCBvYmoubGVuZ3RoOyBrZXkrKykKLSAgICAgICAgaXRlcmF0b3IuY2FsbChj
b250ZXh0LCBvYmpba2V5XSwga2V5KTsKLSAgICB9IGVsc2UgewotICAgICAgZm9yIChrZXkgaW4g
b2JqKSB7Ci0gICAgICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkoa2V5KSkgewotICAgICAgICAg
IGl0ZXJhdG9yLmNhbGwoY29udGV4dCwgb2JqW2tleV0sIGtleSk7Ci0gICAgICAgIH0KLSAgICAg
IH0KLSAgICB9Ci0gIH0KLSAgcmV0dXJuIG9iajsKLX0KLQotZnVuY3Rpb24gc29ydGVkS2V5cyhv
YmopIHsKLSAgdmFyIGtleXMgPSBbXTsKLSAgZm9yICh2YXIga2V5IGluIG9iaikgewotICAgIGlm
IChvYmouaGFzT3duUHJvcGVydHkoa2V5KSkgewotICAgICAga2V5cy5wdXNoKGtleSk7Ci0gICAg
fQotICB9Ci0gIHJldHVybiBrZXlzLnNvcnQoKTsKLX0KLQotZnVuY3Rpb24gZm9yRWFjaFNvcnRl
ZChvYmosIGl0ZXJhdG9yLCBjb250ZXh0KSB7Ci0gIHZhciBrZXlzID0gc29ydGVkS2V5cyhvYmop
OwotICBmb3IgKCB2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7Ci0gICAgaXRlcmF0
b3IuY2FsbChjb250ZXh0LCBvYmpba2V5c1tpXV0sIGtleXNbaV0pOwotICB9Ci0gIHJldHVybiBr
ZXlzOwotfQotCi0KLS8qKgotICogd2hlbiB1c2luZyBmb3JFYWNoIHRoZSBwYXJhbXMgYXJlIHZh
bHVlLCBrZXksIGJ1dCBpdCBpcyBvZnRlbiB1c2VmdWwgdG8gaGF2ZSBrZXksIHZhbHVlLgotICog
QHBhcmFtIHtmdW5jdGlvbihzdHJpbmcsICopfSBpdGVyYXRvckZuCi0gKiBAcmV0dXJucyB7ZnVu
Y3Rpb24oKiwgc3RyaW5nKX0KLSAqLwotZnVuY3Rpb24gcmV2ZXJzZVBhcmFtcyhpdGVyYXRvckZu
KSB7Ci0gIHJldHVybiBmdW5jdGlvbih2YWx1ZSwga2V5KSB7IGl0ZXJhdG9yRm4oa2V5LCB2YWx1
ZSkgfTsKLX0KLQotLyoqCi0gKiBBIGNvbnNpc3RlbnQgd2F5IG9mIGNyZWF0aW5nIHVuaXF1ZSBJ
RHMgaW4gYW5ndWxhci4gVGhlIElEIGlzIGEgc2VxdWVuY2Ugb2YgYWxwaGEgbnVtZXJpYwotICog
Y2hhcmFjdGVycyBzdWNoIGFzICcwMTJBQkMnLiBUaGUgcmVhc29uIHdoeSB3ZSBhcmUgbm90IHVz
aW5nIHNpbXBseSBhIG51bWJlciBjb3VudGVyIGlzIHRoYXQKLSAqIHRoZSBudW1iZXIgc3RyaW5n
IGdldHMgbG9uZ2VyIG92ZXIgdGltZSwgYW5kIGl0IGNhbiBhbHNvIG92ZXJmbG93LCB3aGVyZSBh
cyB0aGUgbmV4dElkCi0gKiB3aWxsIGdyb3cgbXVjaCBzbG93ZXIsIGl0IGlzIGEgc3RyaW5nLCBh
bmQgaXQgd2lsbCBuZXZlciBvdmVyZmxvdy4KLSAqCi0gKiBAcmV0dXJucyBhbiB1bmlxdWUgYWxw
aGEtbnVtZXJpYyBzdHJpbmcKLSAqLwotZnVuY3Rpb24gbmV4dFVpZCgpIHsKLSAgdmFyIGluZGV4
ID0gdWlkLmxlbmd0aDsKLSAgdmFyIGRpZ2l0OwotCi0gIHdoaWxlKGluZGV4KSB7Ci0gICAgaW5k
ZXgtLTsKLSAgICBkaWdpdCA9IHVpZFtpbmRleF0uY2hhckNvZGVBdCgwKTsKLSAgICBpZiAoZGln
aXQgPT0gNTcgLyonOScqLykgewotICAgICAgdWlkW2luZGV4XSA9ICdBJzsKLSAgICAgIHJldHVy
biB1aWQuam9pbignJyk7Ci0gICAgfQotICAgIGlmIChkaWdpdCA9PSA5MCAgLyonWicqLykgewot
ICAgICAgdWlkW2luZGV4XSA9ICcwJzsKLSAgICB9IGVsc2UgewotICAgICAgdWlkW2luZGV4XSA9
IFN0cmluZy5mcm9tQ2hhckNvZGUoZGlnaXQgKyAxKTsKLSAgICAgIHJldHVybiB1aWQuam9pbign
Jyk7Ci0gICAgfQotICB9Ci0gIHVpZC51bnNoaWZ0KCcwJyk7Ci0gIHJldHVybiB1aWQuam9pbign
Jyk7Ci19Ci0KLQotLyoqCi0gKiBTZXQgb3IgY2xlYXIgdGhlIGhhc2hrZXkgZm9yIGFuIG9iamVj
dC4KLSAqIEBwYXJhbSBvYmogb2JqZWN0IAotICogQHBhcmFtIGggdGhlIGhhc2hrZXkgKCF0cnV0
aHkgdG8gZGVsZXRlIHRoZSBoYXNoa2V5KQotICovCi1mdW5jdGlvbiBzZXRIYXNoS2V5KG9iaiwg
aCkgewotICBpZiAoaCkgewotICAgIG9iai4kJGhhc2hLZXkgPSBoOwotICB9Ci0gIGVsc2Ugewot
ICAgIGRlbGV0ZSBvYmouJCRoYXNoS2V5OwotICB9Ci19Ci0KLS8qKgotICogQG5nZG9jIGZ1bmN0
aW9uCi0gKiBAbmFtZSBhbmd1bGFyLmV4dGVuZAotICogQGZ1bmN0aW9uCi0gKgotICogQGRlc2Ny
aXB0aW9uCi0gKiBFeHRlbmRzIHRoZSBkZXN0aW5hdGlvbiBvYmplY3QgYGRzdGAgYnkgY29weWlu
ZyBhbGwgb2YgdGhlIHByb3BlcnRpZXMgZnJvbSB0aGUgYHNyY2Agb2JqZWN0KHMpCi0gKiB0byBg
ZHN0YC4gWW91IGNhbiBzcGVjaWZ5IG11bHRpcGxlIGBzcmNgIG9iamVjdHMuCi0gKgotICogQHBh
cmFtIHtPYmplY3R9IGRzdCBEZXN0aW5hdGlvbiBvYmplY3QuCi0gKiBAcGFyYW0gey4uLk9iamVj
dH0gc3JjIFNvdXJjZSBvYmplY3QocykuCi0gKiBAcmV0dXJucyB7T2JqZWN0fSBSZWZlcmVuY2Ug
dG8gYGRzdGAuCi0gKi8KLWZ1bmN0aW9uIGV4dGVuZChkc3QpIHsKLSAgdmFyIGggPSBkc3QuJCRo
YXNoS2V5OwotICBmb3JFYWNoKGFyZ3VtZW50cywgZnVuY3Rpb24ob2JqKXsKLSAgICBpZiAob2Jq
ICE9PSBkc3QpIHsKLSAgICAgIGZvckVhY2gob2JqLCBmdW5jdGlvbih2YWx1ZSwga2V5KXsKLSAg
ICAgICAgZHN0W2tleV0gPSB2YWx1ZTsKLSAgICAgIH0pOwotICAgIH0KLSAgfSk7Ci0KLSAgc2V0
SGFzaEtleShkc3QsaCk7Ci0gIHJldHVybiBkc3Q7Ci19Ci0KLWZ1bmN0aW9uIGludChzdHIpIHsK
LSAgcmV0dXJuIHBhcnNlSW50KHN0ciwgMTApOwotfQotCi0KLWZ1bmN0aW9uIGluaGVyaXQocGFy
ZW50LCBleHRyYSkgewotICByZXR1cm4gZXh0ZW5kKG5ldyAoZXh0ZW5kKGZ1bmN0aW9uKCkge30s
IHtwcm90b3R5cGU6cGFyZW50fSkpKCksIGV4dHJhKTsKLX0KLQotCi0vKioKLSAqIEBuZ2RvYyBm
dW5jdGlvbgotICogQG5hbWUgYW5ndWxhci5ub29wCi0gKiBAZnVuY3Rpb24KLSAqCi0gKiBAZGVz
Y3JpcHRpb24KLSAqIEEgZnVuY3Rpb24gdGhhdCBwZXJmb3JtcyBubyBvcGVyYXRpb25zLiBUaGlz
IGZ1bmN0aW9uIGNhbiBiZSB1c2VmdWwgd2hlbiB3cml0aW5nIGNvZGUgaW4gdGhlCi0gKiBmdW5j
dGlvbmFsIHN0eWxlLgotICAgPHByZT4KLSAgICAgZnVuY3Rpb24gZm9vKGNhbGxiYWNrKSB7Ci0g
ICAgICAgdmFyIHJlc3VsdCA9IGNhbGN1bGF0ZVJlc3VsdCgpOwotICAgICAgIChjYWxsYmFjayB8
fCBhbmd1bGFyLm5vb3ApKHJlc3VsdCk7Ci0gICAgIH0KLSAgIDwvcHJlPgotICovCi1mdW5jdGlv
biBub29wKCkge30KLW5vb3AuJGluamVjdCA9IFtdOwotCi0KLS8qKgotICogQG5nZG9jIGZ1bmN0
aW9uCi0gKiBAbmFtZSBhbmd1bGFyLmlkZW50aXR5Ci0gKiBAZnVuY3Rpb24KLSAqCi0gKiBAZGVz
Y3JpcHRpb24KLSAqIEEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGl0cyBmaXJzdCBhcmd1bWVudC4g
VGhpcyBmdW5jdGlvbiBpcyB1c2VmdWwgd2hlbiB3cml0aW5nIGNvZGUgaW4gdGhlCi0gKiBmdW5j
dGlvbmFsIHN0eWxlLgotICoKLSAgIDxwcmU+Ci0gICAgIGZ1bmN0aW9uIHRyYW5zZm9ybWVyKHRy
YW5zZm9ybWF0aW9uRm4sIHZhbHVlKSB7Ci0gICAgICAgcmV0dXJuICh0cmFuc2Zvcm1hdGlvbkZu
IHx8IGlkZW50aXR5KSh2YWx1ZSk7Ci0gICAgIH07Ci0gICA8L3ByZT4KLSAqLwotZnVuY3Rpb24g
aWRlbnRpdHkoJCkge3JldHVybiAkO30KLWlkZW50aXR5LiRpbmplY3QgPSBbXTsKLQotCi1mdW5j
dGlvbiB2YWx1ZUZuKHZhbHVlKSB7cmV0dXJuIGZ1bmN0aW9uKCkge3JldHVybiB2YWx1ZTt9O30K
LQotLyoqCi0gKiBAbmdkb2MgZnVuY3Rpb24KLSAqIEBuYW1lIGFuZ3VsYXIuaXNVbmRlZmluZWQK
LSAqIEBmdW5jdGlvbgotICoKLSAqIEBkZXNjcmlwdGlvbgotICogRGV0ZXJtaW5lcyBpZiBhIHJl
ZmVyZW5jZSBpcyB1bmRlZmluZWQuCi0gKgotICogQHBhcmFtIHsqfSB2YWx1ZSBSZWZlcmVuY2Ug
dG8gY2hlY2suCi0gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiBgdmFsdWVgIGlzIHVuZGVm
aW5lZC4KLSAqLwotZnVuY3Rpb24gaXNVbmRlZmluZWQodmFsdWUpe3JldHVybiB0eXBlb2YgdmFs
dWUgPT0gJ3VuZGVmaW5lZCc7fQotCi0KLS8qKgotICogQG5nZG9jIGZ1bmN0aW9uCi0gKiBAbmFt
ZSBhbmd1bGFyLmlzRGVmaW5lZAotICogQGZ1bmN0aW9uCi0gKgotICogQGRlc2NyaXB0aW9uCi0g
KiBEZXRlcm1pbmVzIGlmIGEgcmVmZXJlbmNlIGlzIGRlZmluZWQuCi0gKgotICogQHBhcmFtIHsq
fSB2YWx1ZSBSZWZlcmVuY2UgdG8gY2hlY2suCi0gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBp
ZiBgdmFsdWVgIGlzIGRlZmluZWQuCi0gKi8KLWZ1bmN0aW9uIGlzRGVmaW5lZCh2YWx1ZSl7cmV0
dXJuIHR5cGVvZiB2YWx1ZSAhPSAndW5kZWZpbmVkJzt9Ci0KLQotLyoqCi0gKiBAbmdkb2MgZnVu
Y3Rpb24KLSAqIEBuYW1lIGFuZ3VsYXIuaXNPYmplY3QKLSAqIEBmdW5jdGlvbgotICoKLSAqIEBk
ZXNjcmlwdGlvbgotICogRGV0ZXJtaW5lcyBpZiBhIHJlZmVyZW5jZSBpcyBhbiBgT2JqZWN0YC4g
VW5saWtlIGB0eXBlb2ZgIGluIEphdmFTY3JpcHQsIGBudWxsYHMgYXJlIG5vdAotICogY29uc2lk
ZXJlZCB0byBiZSBvYmplY3RzLgotICoKLSAqIEBwYXJhbSB7Kn0gdmFsdWUgUmVmZXJlbmNlIHRv
IGNoZWNrLgotICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgYHZhbHVlYCBpcyBhbiBgT2Jq
ZWN0YCBidXQgbm90IGBudWxsYC4KLSAqLwotZnVuY3Rpb24gaXNPYmplY3QodmFsdWUpe3JldHVy
biB2YWx1ZSAhPSBudWxsICYmIHR5cGVvZiB2YWx1ZSA9PSAnb2JqZWN0Jzt9Ci0KLQotLyoqCi0g
KiBAbmdkb2MgZnVuY3Rpb24KLSAqIEBuYW1lIGFuZ3VsYXIuaXNTdHJpbmcKLSAqIEBmdW5jdGlv
bgotICoKLSAqIEBkZXNjcmlwdGlvbgotICogRGV0ZXJtaW5lcyBpZiBhIHJlZmVyZW5jZSBpcyBh
IGBTdHJpbmdgLgotICoKLSAqIEBwYXJhbSB7Kn0gdmFsdWUgUmVmZXJlbmNlIHRvIGNoZWNrLgot
ICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgYHZhbHVlYCBpcyBhIGBTdHJpbmdgLgotICov
Ci1mdW5jdGlvbiBpc1N0cmluZyh2YWx1ZSl7cmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5n
Jzt9Ci0KLQotLyoqCi0gKiBAbmdkb2MgZnVuY3Rpb24KLSAqIEBuYW1lIGFuZ3VsYXIuaXNOdW1i
ZXIKLSAqIEBmdW5jdGlvbgotICoKLSAqIEBkZXNjcmlwdGlvbgotICogRGV0ZXJtaW5lcyBpZiBh
IHJlZmVyZW5jZSBpcyBhIGBOdW1iZXJgLgotICoKLSAqIEBwYXJhbSB7Kn0gdmFsdWUgUmVmZXJl
bmNlIHRvIGNoZWNrLgotICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgYHZhbHVlYCBpcyBh
IGBOdW1iZXJgLgotICovCi1mdW5jdGlvbiBpc051bWJlcih2YWx1ZSl7cmV0dXJuIHR5cGVvZiB2
YWx1ZSA9PSAnbnVtYmVyJzt9Ci0KLQotLyoqCi0gKiBAbmdkb2MgZnVuY3Rpb24KLSAqIEBuYW1l
IGFuZ3VsYXIuaXNEYXRlCi0gKiBAZnVuY3Rpb24KLSAqCi0gKiBAZGVzY3JpcHRpb24KLSAqIERl
dGVybWluZXMgaWYgYSB2YWx1ZSBpcyBhIGRhdGUuCi0gKgotICogQHBhcmFtIHsqfSB2YWx1ZSBS
ZWZlcmVuY2UgdG8gY2hlY2suCi0gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiBgdmFsdWVg
IGlzIGEgYERhdGVgLgotICovCi1mdW5jdGlvbiBpc0RhdGUodmFsdWUpewotICByZXR1cm4gdG9T
dHJpbmcuYXBwbHkodmFsdWUpID09ICdbb2JqZWN0IERhdGVdJzsKLX0KLQotCi0vKioKLSAqIEBu
Z2RvYyBmdW5jdGlvbgotICogQG5hbWUgYW5ndWxhci5pc0FycmF5Ci0gKiBAZnVuY3Rpb24KLSAq
Ci0gKiBAZGVzY3JpcHRpb24KLSAqIERldGVybWluZXMgaWYgYSByZWZlcmVuY2UgaXMgYW4gYEFy
cmF5YC4KLSAqCi0gKiBAcGFyYW0geyp9IHZhbHVlIFJlZmVyZW5jZSB0byBjaGVjay4KLSAqIEBy
ZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIGB2YWx1ZWAgaXMgYW4gYEFycmF5YC4KLSAqLwotZnVu
Y3Rpb24gaXNBcnJheSh2YWx1ZSkgewotICByZXR1cm4gdG9TdHJpbmcuYXBwbHkodmFsdWUpID09
ICdbb2JqZWN0IEFycmF5XSc7Ci19Ci0KLQotLyoqCi0gKiBAbmdkb2MgZnVuY3Rpb24KLSAqIEBu
YW1lIGFuZ3VsYXIuaXNGdW5jdGlvbgotICogQGZ1bmN0aW9uCi0gKgotICogQGRlc2NyaXB0aW9u
Ci0gKiBEZXRlcm1pbmVzIGlmIGEgcmVmZXJlbmNlIGlzIGEgYEZ1bmN0aW9uYC4KLSAqCi0gKiBA
cGFyYW0geyp9IHZhbHVlIFJlZmVyZW5jZSB0byBjaGVjay4KLSAqIEByZXR1cm5zIHtib29sZWFu
fSBUcnVlIGlmIGB2YWx1ZWAgaXMgYSBgRnVuY3Rpb25gLgotICovCi1mdW5jdGlvbiBpc0Z1bmN0
aW9uKHZhbHVlKXtyZXR1cm4gdHlwZW9mIHZhbHVlID09ICdmdW5jdGlvbic7fQotCi0KLS8qKgot
ICogQ2hlY2tzIGlmIGBvYmpgIGlzIGEgd2luZG93IG9iamVjdC4KLSAqCi0gKiBAcHJpdmF0ZQot
ICogQHBhcmFtIHsqfSBvYmogT2JqZWN0IHRvIGNoZWNrCi0gKiBAcmV0dXJucyB7Ym9vbGVhbn0g
VHJ1ZSBpZiBgb2JqYCBpcyBhIHdpbmRvdyBvYmouCi0gKi8KLWZ1bmN0aW9uIGlzV2luZG93KG9i
aikgewotICByZXR1cm4gb2JqICYmIG9iai5kb2N1bWVudCAmJiBvYmoubG9jYXRpb24gJiYgb2Jq
LmFsZXJ0ICYmIG9iai5zZXRJbnRlcnZhbDsKLX0KLQotCi1mdW5jdGlvbiBpc1Njb3BlKG9iaikg
ewotICByZXR1cm4gb2JqICYmIG9iai4kZXZhbEFzeW5jICYmIG9iai4kd2F0Y2g7Ci19Ci0KLQot
ZnVuY3Rpb24gaXNGaWxlKG9iaikgewotICByZXR1cm4gdG9TdHJpbmcuYXBwbHkob2JqKSA9PT0g
J1tvYmplY3QgRmlsZV0nOwotfQotCi0KLWZ1bmN0aW9uIGlzQm9vbGVhbih2YWx1ZSkgewotICBy
ZXR1cm4gdHlwZW9mIHZhbHVlID09ICdib29sZWFuJzsKLX0KLQotCi1mdW5jdGlvbiB0cmltKHZh
bHVlKSB7Ci0gIHJldHVybiBpc1N0cmluZyh2YWx1ZSkgPyB2YWx1ZS5yZXBsYWNlKC9eXHMqLywg
JycpLnJlcGxhY2UoL1xzKiQvLCAnJykgOiB2YWx1ZTsKLX0KLQotLyoqCi0gKiBAbmdkb2MgZnVu
Y3Rpb24KLSAqIEBuYW1lIGFuZ3VsYXIuaXNFbGVtZW50Ci0gKiBAZnVuY3Rpb24KLSAqCi0gKiBA
ZGVzY3JpcHRpb24KLSAqIERldGVybWluZXMgaWYgYSByZWZlcmVuY2UgaXMgYSBET00gZWxlbWVu
dCAob3Igd3JhcHBlZCBqUXVlcnkgZWxlbWVudCkuCi0gKgotICogQHBhcmFtIHsqfSB2YWx1ZSBS
ZWZlcmVuY2UgdG8gY2hlY2suCi0gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiBgdmFsdWVg
IGlzIGEgRE9NIGVsZW1lbnQgKG9yIHdyYXBwZWQgalF1ZXJ5IGVsZW1lbnQpLgotICovCi1mdW5j
dGlvbiBpc0VsZW1lbnQobm9kZSkgewotICByZXR1cm4gbm9kZSAmJgotICAgIChub2RlLm5vZGVO
YW1lICAvLyB3ZSBhcmUgYSBkaXJlY3QgZWxlbWVudAotICAgIHx8IChub2RlLmJpbmQgJiYgbm9k
ZS5maW5kKSk7ICAvLyB3ZSBoYXZlIGEgYmluZCBhbmQgZmluZCBtZXRob2QgcGFydCBvZiBqUXVl
cnkgQVBJCi19Ci0KLS8qKgotICogQHBhcmFtIHN0ciAna2V5MSxrZXkyLC4uLicKLSAqIEByZXR1
cm5zIHtvYmplY3R9IGluIHRoZSBmb3JtIG9mIHtrZXkxOnRydWUsIGtleTI6dHJ1ZSwgLi4ufQot
ICovCi1mdW5jdGlvbiBtYWtlTWFwKHN0cil7Ci0gIHZhciBvYmogPSB7fSwgaXRlbXMgPSBzdHIu
c3BsaXQoIiwiKSwgaTsKLSAgZm9yICggaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKyApCi0g
ICAgb2JqWyBpdGVtc1tpXSBdID0gdHJ1ZTsKLSAgcmV0dXJuIG9iajsKLX0KLQotCi1pZiAobXNp
ZSA8IDkpIHsKLSAgbm9kZU5hbWVfID0gZnVuY3Rpb24oZWxlbWVudCkgewotICAgIGVsZW1lbnQg
PSBlbGVtZW50Lm5vZGVOYW1lID8gZWxlbWVudCA6IGVsZW1lbnRbMF07Ci0gICAgcmV0dXJuIChl
bGVtZW50LnNjb3BlTmFtZSAmJiBlbGVtZW50LnNjb3BlTmFtZSAhPSAnSFRNTCcpCi0gICAgICA/
IHVwcGVyY2FzZShlbGVtZW50LnNjb3BlTmFtZSArICc6JyArIGVsZW1lbnQubm9kZU5hbWUpIDog
ZWxlbWVudC5ub2RlTmFtZTsKLSAgfTsKLX0gZWxzZSB7Ci0gIG5vZGVOYW1lXyA9IGZ1bmN0aW9u
KGVsZW1lbnQpIHsKLSAgICByZXR1cm4gZWxlbWVudC5ub2RlTmFtZSA/IGVsZW1lbnQubm9kZU5h
bWUgOiBlbGVtZW50WzBdLm5vZGVOYW1lOwotICB9OwotfQotCi0KLWZ1bmN0aW9uIG1hcChvYmos
IGl0ZXJhdG9yLCBjb250ZXh0KSB7Ci0gIHZhciByZXN1bHRzID0gW107Ci0gIGZvckVhY2gob2Jq
LCBmdW5jdGlvbih2YWx1ZSwgaW5kZXgsIGxpc3QpIHsKLSAgICByZXN1bHRzLnB1c2goaXRlcmF0
b3IuY2FsbChjb250ZXh0LCB2YWx1ZSwgaW5kZXgsIGxpc3QpKTsKLSAgfSk7Ci0gIHJldHVybiBy
ZXN1bHRzOwotfQotCi0KLS8qKgotICogQGRlc2NyaXB0aW9uCi0gKiBEZXRlcm1pbmVzIHRoZSBu
dW1iZXIgb2YgZWxlbWVudHMgaW4gYW4gYXJyYXksIHRoZSBudW1iZXIgb2YgcHJvcGVydGllcyBh
biBvYmplY3QgaGFzLCBvcgotICogdGhlIGxlbmd0aCBvZiBhIHN0cmluZy4KLSAqCi0gKiBOb3Rl
OiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gYXVnbWVudCB0aGUgT2JqZWN0IHR5cGUgaW4gQW5n
dWxhciBleHByZXNzaW9ucy4gU2VlCi0gKiB7QGxpbmsgYW5ndWxhci5PYmplY3R9IGZvciBtb3Jl
IGluZm9ybWF0aW9uIGFib3V0IEFuZ3VsYXIgYXJyYXlzLgotICoKLSAqIEBwYXJhbSB7T2JqZWN0
fEFycmF5fHN0cmluZ30gb2JqIE9iamVjdCwgYXJyYXksIG9yIHN0cmluZyB0byBpbnNwZWN0Lgot
ICogQHBhcmFtIHtib29sZWFufSBbb3duUHJvcHNPbmx5PWZhbHNlXSBDb3VudCBvbmx5ICJvd24i
IHByb3BlcnRpZXMgaW4gYW4gb2JqZWN0Ci0gKiBAcmV0dXJucyB7bnVtYmVyfSBUaGUgc2l6ZSBv
ZiBgb2JqYCBvciBgMGAgaWYgYG9iamAgaXMgbmVpdGhlciBhbiBvYmplY3Qgbm9yIGFuIGFycmF5
LgotICovCi1mdW5jdGlvbiBzaXplKG9iaiwgb3duUHJvcHNPbmx5KSB7Ci0gIHZhciBzaXplID0g
MCwga2V5OwotCi0gIGlmIChpc0FycmF5KG9iaikgfHwgaXNTdHJpbmcob2JqKSkgewotICAgIHJl
dHVybiBvYmoubGVuZ3RoOwotICB9IGVsc2UgaWYgKGlzT2JqZWN0KG9iaikpewotICAgIGZvciAo
a2V5IGluIG9iaikKLSAgICAgIGlmICghb3duUHJvcHNPbmx5IHx8IG9iai5oYXNPd25Qcm9wZXJ0
eShrZXkpKQotICAgICAgICBzaXplKys7Ci0gIH0KLQotICByZXR1cm4gc2l6ZTsKLX0KLQotCi1m
dW5jdGlvbiBpbmNsdWRlcyhhcnJheSwgb2JqKSB7Ci0gIHJldHVybiBpbmRleE9mKGFycmF5LCBv
YmopICE9IC0xOwotfQotCi1mdW5jdGlvbiBpbmRleE9mKGFycmF5LCBvYmopIHsKLSAgaWYgKGFy
cmF5LmluZGV4T2YpIHJldHVybiBhcnJheS5pbmRleE9mKG9iaik7Ci0KLSAgZm9yICggdmFyIGkg
PSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHsKLSAgICBpZiAob2JqID09PSBhcnJheVtpXSkg
cmV0dXJuIGk7Ci0gIH0KLSAgcmV0dXJuIC0xOwotfQotCi1mdW5jdGlvbiBhcnJheVJlbW92ZShh
cnJheSwgdmFsdWUpIHsKLSAgdmFyIGluZGV4ID0gaW5kZXhPZihhcnJheSwgdmFsdWUpOwotICBp
ZiAoaW5kZXggPj0wKQotICAgIGFycmF5LnNwbGljZShpbmRleCwgMSk7Ci0gIHJldHVybiB2YWx1
ZTsKLX0KLQotZnVuY3Rpb24gaXNMZWFmTm9kZSAobm9kZSkgewotICBpZiAobm9kZSkgewotICAg
IHN3aXRjaCAobm9kZS5ub2RlTmFtZSkgewotICAgIGNhc2UgIk9QVElPTiI6Ci0gICAgY2FzZSAi
UFJFIjoKLSAgICBjYXNlICJUSVRMRSI6Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gIH0K
LSAgcmV0dXJuIGZhbHNlOwotfQotCi0vKioKLSAqIEBuZ2RvYyBmdW5jdGlvbgotICogQG5hbWUg
YW5ndWxhci5jb3B5Ci0gKiBAZnVuY3Rpb24KLSAqCi0gKiBAZGVzY3JpcHRpb24KLSAqIENyZWF0
ZXMgYSBkZWVwIGNvcHkgb2YgYHNvdXJjZWAsIHdoaWNoIHNob3VsZCBiZSBhbiBvYmplY3Qgb3Ig
YW4gYXJyYXkuCi0gKgotICogKiBJZiBubyBkZXN0aW5hdGlvbiBpcyBzdXBwbGllZCwgYSBjb3B5
IG9mIHRoZSBvYmplY3Qgb3IgYXJyYXkgaXMgY3JlYXRlZC4KLSAqICogSWYgYSBkZXN0aW5hdGlv
biBpcyBwcm92aWRlZCwgYWxsIG9mIGl0cyBlbGVtZW50cyAoZm9yIGFycmF5KSBvciBwcm9wZXJ0
aWVzIChmb3Igb2JqZWN0cykKLSAqICAgYXJlIGRlbGV0ZWQgYW5kIHRoZW4gYWxsIGVsZW1lbnRz
L3Byb3BlcnRpZXMgZnJvbSB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gaXQuCi0gKiAqIElmICBg
c291cmNlYCBpcyBub3QgYW4gb2JqZWN0IG9yIGFycmF5LCBgc291cmNlYCBpcyByZXR1cm5lZC4K
LSAqCi0gKiBOb3RlOiB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gYXVnbWVudCB0aGUgT2JqZWN0
IHR5cGUgaW4gQW5ndWxhciBleHByZXNzaW9ucy4gU2VlCi0gKiB7QGxpbmsgbmcuJGZpbHRlcn0g
Zm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgQW5ndWxhciBhcnJheXMuCi0gKgotICogQHBhcmFt
IHsqfSBzb3VyY2UgVGhlIHNvdXJjZSB0aGF0IHdpbGwgYmUgdXNlZCB0byBtYWtlIGEgY29weS4K
LSAqICAgICAgICAgICAgICAgICAgIENhbiBiZSBhbnkgdHlwZSwgaW5jbHVkaW5nIHByaW1pdGl2
ZXMsIGBudWxsYCwgYW5kIGB1bmRlZmluZWRgLgotICogQHBhcmFtIHsoT2JqZWN0fEFycmF5KT19
IGRlc3RpbmF0aW9uIERlc3RpbmF0aW9uIGludG8gd2hpY2ggdGhlIHNvdXJjZSBpcyBjb3BpZWQu
IElmCi0gKiAgICAgcHJvdmlkZWQsIG11c3QgYmUgb2YgdGhlIHNhbWUgdHlwZSBhcyBgc291cmNl
YC4KLSAqIEByZXR1cm5zIHsqfSBUaGUgY29weSBvciB1cGRhdGVkIGBkZXN0aW5hdGlvbmAsIGlm
IGBkZXN0aW5hdGlvbmAgd2FzIHNwZWNpZmllZC4KLSAqLwotZnVuY3Rpb24gY29weShzb3VyY2Us
IGRlc3RpbmF0aW9uKXsKLSAgaWYgKGlzV2luZG93KHNvdXJjZSkgfHwgaXNTY29wZShzb3VyY2Up
KSB0aHJvdyBFcnJvcigiQ2FuJ3QgY29weSBXaW5kb3cgb3IgU2NvcGUiKTsKLSAgaWYgKCFkZXN0
aW5hdGlvbikgewotICAgIGRlc3RpbmF0aW9uID0gc291cmNlOwotICAgIGlmIChzb3VyY2UpIHsK
LSAgICAgIGlmIChpc0FycmF5KHNvdXJjZSkpIHsKLSAgICAgICAgZGVzdGluYXRpb24gPSBjb3B5
KHNvdXJjZSwgW10pOwotICAgICAgfSBlbHNlIGlmIChpc0RhdGUoc291cmNlKSkgewotICAgICAg
ICBkZXN0aW5hdGlvbiA9IG5ldyBEYXRlKHNvdXJjZS5nZXRUaW1lKCkpOwotICAgICAgfSBlbHNl
IGlmIChpc09iamVjdChzb3VyY2UpKSB7Ci0gICAgICAgIGRlc3RpbmF0aW9uID0gY29weShzb3Vy
Y2UsIHt9KTsKLSAgICAgIH0KLSAgICB9Ci0gIH0gZWxzZSB7Ci0gICAgaWYgKHNvdXJjZSA9PT0g
ZGVzdGluYXRpb24pIHRocm93IEVycm9yKCJDYW4ndCBjb3B5IGVxdWl2YWxlbnQgb2JqZWN0cyBv
ciBhcnJheXMiKTsKLSAgICBpZiAoaXNBcnJheShzb3VyY2UpKSB7Ci0gICAgICBkZXN0aW5hdGlv
bi5sZW5ndGggPSAwOwotICAgICAgZm9yICggdmFyIGkgPSAwOyBpIDwgc291cmNlLmxlbmd0aDsg
aSsrKSB7Ci0gICAgICAgIGRlc3RpbmF0aW9uLnB1c2goY29weShzb3VyY2VbaV0pKTsKLSAgICAg
IH0KLSAgICB9IGVsc2UgewotICAgICAgdmFyIGggPSBkZXN0aW5hdGlvbi4kJGhhc2hLZXk7Ci0g
ICAgICBmb3JFYWNoKGRlc3RpbmF0aW9uLCBmdW5jdGlvbih2YWx1ZSwga2V5KXsKLSAgICAgICAg
ZGVsZXRlIGRlc3RpbmF0aW9uW2tleV07Ci0gICAgICB9KTsKLSAgICAgIGZvciAoIHZhciBrZXkg
aW4gc291cmNlKSB7Ci0gICAgICAgIGRlc3RpbmF0aW9uW2tleV0gPSBjb3B5KHNvdXJjZVtrZXld
KTsKLSAgICAgIH0KLSAgICAgIHNldEhhc2hLZXkoZGVzdGluYXRpb24saCk7Ci0gICAgfQotICB9
Ci0gIHJldHVybiBkZXN0aW5hdGlvbjsKLX0KLQotLyoqCi0gKiBDcmVhdGUgYSBzaGFsbG93IGNv
cHkgb2YgYW4gb2JqZWN0Ci0gKi8KLWZ1bmN0aW9uIHNoYWxsb3dDb3B5KHNyYywgZHN0KSB7Ci0g
IGRzdCA9IGRzdCB8fCB7fTsKLQotICBmb3IodmFyIGtleSBpbiBzcmMpIHsKLSAgICBpZiAoc3Jj
Lmhhc093blByb3BlcnR5KGtleSkgJiYga2V5LnN1YnN0cigwLCAyKSAhPT0gJyQkJykgewotICAg
ICAgZHN0W2tleV0gPSBzcmNba2V5XTsKLSAgICB9Ci0gIH0KLQotICByZXR1cm4gZHN0OwotfQot
Ci0KLS8qKgotICogQG5nZG9jIGZ1bmN0aW9uCi0gKiBAbmFtZSBhbmd1bGFyLmVxdWFscwotICog
QGZ1bmN0aW9uCi0gKgotICogQGRlc2NyaXB0aW9uCi0gKiBEZXRlcm1pbmVzIGlmIHR3byBvYmpl
Y3RzIG9yIHR3byB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQuIFN1cHBvcnRzIHZhbHVlIHR5cGVzLCBh
cnJheXMgYW5kCi0gKiBvYmplY3RzLgotICoKLSAqIFR3byBvYmplY3RzIG9yIHZhbHVlcyBhcmUg
Y29uc2lkZXJlZCBlcXVpdmFsZW50IGlmIGF0IGxlYXN0IG9uZSBvZiB0aGUgZm9sbG93aW5nIGlz
IHRydWU6Ci0gKgotICogKiBCb3RoIG9iamVjdHMgb3IgdmFsdWVzIHBhc3MgYD09PWAgY29tcGFy
aXNvbi4KLSAqICogQm90aCBvYmplY3RzIG9yIHZhbHVlcyBhcmUgb2YgdGhlIHNhbWUgdHlwZSBh
bmQgYWxsIG9mIHRoZWlyIHByb3BlcnRpZXMgcGFzcyBgPT09YCBjb21wYXJpc29uLgotICogKiBC
b3RoIHZhbHVlcyBhcmUgTmFOLiAoSW4gSmF2YXNTY3JpcHQsIE5hTiA9PSBOYU4gPT4gZmFsc2Uu
IEJ1dCB3ZSBjb25zaWRlciB0d28gTmFOIGFzIGVxdWFsKQotICoKLSAqIER1cmluZyBhIHByb3Bl
cnR5IGNvbXBhcmlzaW9uLCBwcm9wZXJ0aWVzIG9mIGBmdW5jdGlvbmAgdHlwZSBhbmQgcHJvcGVy
dGllcyB3aXRoIG5hbWVzCi0gKiB0aGF0IGJlZ2luIHdpdGggYCRgIGFyZSBpZ25vcmVkLgotICoK
LSAqIFNjb3BlIGFuZCBET01XaW5kb3cgb2JqZWN0cyBhcmUgYmVpbmcgY29tcGFyZWQgb25seSBi
eSBpZGVudGlmeSAoYD09PWApLgotICoKLSAqIEBwYXJhbSB7Kn0gbzEgT2JqZWN0IG9yIHZhbHVl
IHRvIGNvbXBhcmUuCi0gKiBAcGFyYW0geyp9IG8yIE9iamVjdCBvciB2YWx1ZSB0byBjb21wYXJl
LgotICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgYXJndW1lbnRzIGFyZSBlcXVhbC4KLSAq
LwotZnVuY3Rpb24gZXF1YWxzKG8xLCBvMikgewotICBpZiAobzEgPT09IG8yKSByZXR1cm4gdHJ1
ZTsKLSAgaWYgKG8xID09PSBudWxsIHx8IG8yID09PSBudWxsKSByZXR1cm4gZmFsc2U7Ci0gIGlm
IChvMSAhPT0gbzEgJiYgbzIgIT09IG8yKSByZXR1cm4gdHJ1ZTsgLy8gTmFOID09PSBOYU4KLSAg
dmFyIHQxID0gdHlwZW9mIG8xLCB0MiA9IHR5cGVvZiBvMiwgbGVuZ3RoLCBrZXksIGtleVNldDsK
LSAgaWYgKHQxID09IHQyKSB7Ci0gICAgaWYgKHQxID09ICdvYmplY3QnKSB7Ci0gICAgICBpZiAo
aXNBcnJheShvMSkpIHsKLSAgICAgICAgaWYgKChsZW5ndGggPSBvMS5sZW5ndGgpID09IG8yLmxl
bmd0aCkgewotICAgICAgICAgIGZvcihrZXk9MDsga2V5PGxlbmd0aDsga2V5KyspIHsKLSAgICAg
ICAgICAgIGlmICghZXF1YWxzKG8xW2tleV0sIG8yW2tleV0pKSByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgICAgfQotICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICB9IGVsc2Ug
aWYgKGlzRGF0ZShvMSkpIHsKLSAgICAgICAgcmV0dXJuIGlzRGF0ZShvMikgJiYgbzEuZ2V0VGlt
ZSgpID09IG8yLmdldFRpbWUoKTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChpc1Njb3Bl
KG8xKSB8fCBpc1Njb3BlKG8yKSB8fCBpc1dpbmRvdyhvMSkgfHwgaXNXaW5kb3cobzIpKSByZXR1
cm4gZmFsc2U7Ci0gICAgICAgIGtleVNldCA9IHt9OwotICAgICAgICBmb3Ioa2V5IGluIG8xKSB7
Ci0gICAgICAgICAgaWYgKGtleS5jaGFyQXQoMCkgPT09ICckJyB8fCBpc0Z1bmN0aW9uKG8xW2tl
eV0pKSBjb250aW51ZTsKLSAgICAgICAgICBpZiAoIWVxdWFscyhvMVtrZXldLCBvMltrZXldKSkg
cmV0dXJuIGZhbHNlOwotICAgICAgICAgIGtleVNldFtrZXldID0gdHJ1ZTsKLSAgICAgICAgfQot
ICAgICAgICBmb3Ioa2V5IGluIG8yKSB7Ci0gICAgICAgICAgaWYgKCFrZXlTZXRba2V5XSAmJgot
ICAgICAgICAgICAgICBrZXkuY2hhckF0KDApICE9PSAnJCcgJiYKLSAgICAgICAgICAgICAgbzJb
a2V5XSAhPT0gdW5kZWZpbmVkICYmCi0gICAgICAgICAgICAgICFpc0Z1bmN0aW9uKG8yW2tleV0p
KSByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9
Ci0gICAgfQotICB9Ci0gIHJldHVybiBmYWxzZTsKLX0KLQotCi1mdW5jdGlvbiBjb25jYXQoYXJy
YXkxLCBhcnJheTIsIGluZGV4KSB7Ci0gIHJldHVybiBhcnJheTEuY29uY2F0KHNsaWNlLmNhbGwo
YXJyYXkyLCBpbmRleCkpOwotfQotCi1mdW5jdGlvbiBzbGljZUFyZ3MoYXJncywgc3RhcnRJbmRl
eCkgewotICByZXR1cm4gc2xpY2UuY2FsbChhcmdzLCBzdGFydEluZGV4IHx8IDApOwotfQotCi0K
LS8qKgotICogQG5nZG9jIGZ1bmN0aW9uCi0gKiBAbmFtZSBhbmd1bGFyLmJpbmQKLSAqIEBmdW5j
dGlvbgotICoKLSAqIEBkZXNjcmlwdGlvbgotICogUmV0dXJucyBhIGZ1bmN0aW9uIHdoaWNoIGNh
bGxzIGZ1bmN0aW9uIGBmbmAgYm91bmQgdG8gYHNlbGZgIChgc2VsZmAgYmVjb21lcyB0aGUgYHRo
aXNgIGZvcgotICogYGZuYCkuIFlvdSBjYW4gc3VwcGx5IG9wdGlvbmFsIGBhcmdzYCB0aGF0IGFy
ZSBwcmVib3VuZCB0byB0aGUgZnVuY3Rpb24uIFRoaXMgZmVhdHVyZSBpcyBhbHNvCi0gKiBrbm93
biBhcyBbZnVuY3Rpb24gY3VycnlpbmddKGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ3Vy
cnlpbmcpLgotICoKLSAqIEBwYXJhbSB7T2JqZWN0fSBzZWxmIENvbnRleHQgd2hpY2ggYGZuYCBz
aG91bGQgYmUgZXZhbHVhdGVkIGluLgotICogQHBhcmFtIHtmdW5jdGlvbigpfSBmbiBGdW5jdGlv
biB0byBiZSBib3VuZC4KLSAqIEBwYXJhbSB7Li4uKn0gYXJncyBPcHRpb25hbCBhcmd1bWVudHMg
dG8gYmUgcHJlYm91bmQgdG8gdGhlIGBmbmAgZnVuY3Rpb24gY2FsbC4KLSAqIEByZXR1cm5zIHtm
dW5jdGlvbigpfSBGdW5jdGlvbiB0aGF0IHdyYXBzIHRoZSBgZm5gIHdpdGggYWxsIHRoZSBzcGVj
aWZpZWQgYmluZGluZ3MuCi0gKi8KLWZ1bmN0aW9uIGJpbmQoc2VsZiwgZm4pIHsKLSAgdmFyIGN1
cnJ5QXJncyA9IGFyZ3VtZW50cy5sZW5ndGggPiAyID8gc2xpY2VBcmdzKGFyZ3VtZW50cywgMikg
OiBbXTsKLSAgaWYgKGlzRnVuY3Rpb24oZm4pICYmICEoZm4gaW5zdGFuY2VvZiBSZWdFeHApKSB7
Ci0gICAgcmV0dXJuIGN1cnJ5QXJncy5sZW5ndGgKLSAgICAgID8gZnVuY3Rpb24oKSB7Ci0gICAg
ICAgICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGgKLSAgICAgICAgICAgID8gZm4uYXBwbHkoc2Vs
ZiwgY3VycnlBcmdzLmNvbmNhdChzbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpKQotICAgICAgICAg
ICAgOiBmbi5hcHBseShzZWxmLCBjdXJyeUFyZ3MpOwotICAgICAgICB9Ci0gICAgICA6IGZ1bmN0
aW9uKCkgewotICAgICAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoCi0gICAgICAgICAgICA/
IGZuLmFwcGx5KHNlbGYsIGFyZ3VtZW50cykKLSAgICAgICAgICAgIDogZm4uY2FsbChzZWxmKTsK
LSAgICAgICAgfTsKLSAgfSBlbHNlIHsKLSAgICAvLyBpbiBJRSwgbmF0aXZlIG1ldGhvZHMgYXJl
IG5vdCBmdW5jdGlvbnMgc28gdGhleSBjYW5ub3QgYmUgYm91bmQgKG5vdGU6IHRoZXkgZG9uJ3Qg
bmVlZCB0byBiZSkKLSAgICByZXR1cm4gZm47Ci0gIH0KLX0KLQotCi1mdW5jdGlvbiB0b0pzb25S
ZXBsYWNlcihrZXksIHZhbHVlKSB7Ci0gIHZhciB2YWwgPSB2YWx1ZTsKLQotICBpZiAoL15cJCsv
LnRlc3Qoa2V5KSkgewotICAgIHZhbCA9IHVuZGVmaW5lZDsKLSAgfSBlbHNlIGlmIChpc1dpbmRv
dyh2YWx1ZSkpIHsKLSAgICB2YWwgPSAnJFdJTkRPVyc7Ci0gIH0gZWxzZSBpZiAodmFsdWUgJiYg
IGRvY3VtZW50ID09PSB2YWx1ZSkgewotICAgIHZhbCA9ICckRE9DVU1FTlQnOwotICB9IGVsc2Ug
aWYgKGlzU2NvcGUodmFsdWUpKSB7Ci0gICAgdmFsID0gJyRTQ09QRSc7Ci0gIH0KLQotICByZXR1
cm4gdmFsOwotfQotCi0KLS8qKgotICogQG5nZG9jIGZ1bmN0aW9uCi0gKiBAbmFtZSBhbmd1bGFy
LnRvSnNvbgotICogQGZ1bmN0aW9uCi0gKgotICogQGRlc2NyaXB0aW9uCi0gKiBTZXJpYWxpemVz
IGlucHV0IGludG8gYSBKU09OLWZvcm1hdHRlZCBzdHJpbmcuCi0gKgotICogQHBhcmFtIHtPYmpl
Y3R8QXJyYXl8RGF0ZXxzdHJpbmd8bnVtYmVyfSBvYmogSW5wdXQgdG8gYmUgc2VyaWFsaXplZCBp
bnRvIEpTT04uCi0gKiBAcGFyYW0ge2Jvb2xlYW49fSBwcmV0dHkgSWYgc2V0IHRvIHRydWUsIHRo
ZSBKU09OIG91dHB1dCB3aWxsIGNvbnRhaW4gbmV3bGluZXMgYW5kIHdoaXRlc3BhY2UuCi0gKiBA
cmV0dXJucyB7c3RyaW5nfSBKc29uaWZpZWQgc3RyaW5nIHJlcHJlc2VudGluZyBgb2JqYC4KLSAq
LwotZnVuY3Rpb24gdG9Kc29uKG9iaiwgcHJldHR5KSB7Ci0gIHJldHVybiBKU09OLnN0cmluZ2lm
eShvYmosIHRvSnNvblJlcGxhY2VyLCBwcmV0dHkgPyAnICAnIDogbnVsbCk7Ci19Ci0KLQotLyoq
Ci0gKiBAbmdkb2MgZnVuY3Rpb24KLSAqIEBuYW1lIGFuZ3VsYXIuZnJvbUpzb24KLSAqIEBmdW5j
dGlvbgotICoKLSAqIEBkZXNjcmlwdGlvbgotICogRGVzZXJpYWxpemVzIGEgSlNPTiBzdHJpbmcu
Ci0gKgotICogQHBhcmFtIHtzdHJpbmd9IGpzb24gSlNPTiBzdHJpbmcgdG8gZGVzZXJpYWxpemUu
Ci0gKiBAcmV0dXJucyB7T2JqZWN0fEFycmF5fERhdGV8c3RyaW5nfG51bWJlcn0gRGVzZXJpYWxp
emVkIHRoaW5neS4KLSAqLwotZnVuY3Rpb24gZnJvbUpzb24oanNvbikgewotICByZXR1cm4gaXNT
dHJpbmcoanNvbikKLSAgICAgID8gSlNPTi5wYXJzZShqc29uKQotICAgICAgOiBqc29uOwotfQot
Ci0KLWZ1bmN0aW9uIHRvQm9vbGVhbih2YWx1ZSkgewotICBpZiAodmFsdWUgJiYgdmFsdWUubGVu
Z3RoICE9PSAwKSB7Ci0gICAgdmFyIHYgPSBsb3dlcmNhc2UoIiIgKyB2YWx1ZSk7Ci0gICAgdmFs
dWUgPSAhKHYgPT0gJ2YnIHx8IHYgPT0gJzAnIHx8IHYgPT0gJ2ZhbHNlJyB8fCB2ID09ICdubycg
fHwgdiA9PSAnbicgfHwgdiA9PSAnW10nKTsKLSAgfSBlbHNlIHsKLSAgICB2YWx1ZSA9IGZhbHNl
OwotICB9Ci0gIHJldHVybiB2YWx1ZTsKLX0KLQotLyoqCi0gKiBAcmV0dXJucyB7c3RyaW5nfSBS
ZXR1cm5zIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIGVsZW1lbnQuCi0gKi8KLWZ1
bmN0aW9uIHN0YXJ0aW5nVGFnKGVsZW1lbnQpIHsKLSAgZWxlbWVudCA9IGpxTGl0ZShlbGVtZW50
KS5jbG9uZSgpOwotICB0cnkgewotICAgIC8vIHR1cm5zIG91dCBJRSBkb2VzIG5vdCBsZXQgeW91
IHNldCAuaHRtbCgpIG9uIGVsZW1lbnRzIHdoaWNoCi0gICAgLy8gYXJlIG5vdCBhbGxvd2VkIHRv
IGhhdmUgY2hpbGRyZW4uIFNvIHdlIGp1c3QgaWdub3JlIGl0LgotICAgIGVsZW1lbnQuaHRtbCgn
Jyk7Ci0gIH0gY2F0Y2goZSkge30KLSAgLy8gQXMgUGVyIERPTSBTdGFuZGFyZHMKLSAgdmFyIFRF
WFRfTk9ERSA9IDM7Ci0gIHZhciBlbGVtSHRtbCA9IGpxTGl0ZSgnPGRpdj4nKS5hcHBlbmQoZWxl
bWVudCkuaHRtbCgpOwotICB0cnkgewotICAgIHJldHVybiBlbGVtZW50WzBdLm5vZGVUeXBlID09
PSBURVhUX05PREUgPyBsb3dlcmNhc2UoZWxlbUh0bWwpIDoKLSAgICAgICAgZWxlbUh0bWwuCi0g
ICAgICAgICAgbWF0Y2goL14oPFtePl0rPikvKVsxXS4KLSAgICAgICAgICByZXBsYWNlKC9ePChb
XHdcLV0rKS8sIGZ1bmN0aW9uKG1hdGNoLCBub2RlTmFtZSkgeyByZXR1cm4gJzwnICsgbG93ZXJj
YXNlKG5vZGVOYW1lKTsgfSk7Ci0gIH0gY2F0Y2goZSkgewotICAgIHJldHVybiBsb3dlcmNhc2Uo
ZWxlbUh0bWwpOwotICB9Ci0KLX0KLQotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vCi0KLS8qKgotICogUGFyc2VzIGFuIGVzY2FwZWQgdXJsIHF1ZXJ5
IHN0cmluZyBpbnRvIGtleS12YWx1ZSBwYWlycy4KLSAqIEByZXR1cm5zIE9iamVjdC48KHN0cmlu
Z3xib29sZWFuKT4KLSAqLwotZnVuY3Rpb24gcGFyc2VLZXlWYWx1ZSgvKipzdHJpbmcqL2tleVZh
bHVlKSB7Ci0gIHZhciBvYmogPSB7fSwga2V5X3ZhbHVlLCBrZXk7Ci0gIGZvckVhY2goKGtleVZh
bHVlIHx8ICIiKS5zcGxpdCgnJicpLCBmdW5jdGlvbihrZXlWYWx1ZSl7Ci0gICAgaWYgKGtleVZh
bHVlKSB7Ci0gICAgICBrZXlfdmFsdWUgPSBrZXlWYWx1ZS5zcGxpdCgnPScpOwotICAgICAga2V5
ID0gZGVjb2RlVVJJQ29tcG9uZW50KGtleV92YWx1ZVswXSk7Ci0gICAgICBvYmpba2V5XSA9IGlz
RGVmaW5lZChrZXlfdmFsdWVbMV0pID8gZGVjb2RlVVJJQ29tcG9uZW50KGtleV92YWx1ZVsxXSkg
OiB0cnVlOwotICAgIH0KLSAgfSk7Ci0gIHJldHVybiBvYmo7Ci19Ci0KLWZ1bmN0aW9uIHRvS2V5
VmFsdWUob2JqKSB7Ci0gIHZhciBwYXJ0cyA9IFtdOwotICBmb3JFYWNoKG9iaiwgZnVuY3Rpb24o
dmFsdWUsIGtleSkgewotICAgIHBhcnRzLnB1c2goZW5jb2RlVXJpUXVlcnkoa2V5LCB0cnVlKSAr
ICh2YWx1ZSA9PT0gdHJ1ZSA/ICcnIDogJz0nICsgZW5jb2RlVXJpUXVlcnkodmFsdWUsIHRydWUp
KSk7Ci0gIH0pOwotICByZXR1cm4gcGFydHMubGVuZ3RoID8gcGFydHMuam9pbignJicpIDogJyc7
Ci19Ci0KLQotLyoqCi0gKiBXZSBuZWVkIG91ciBjdXN0b20gbWV0aG9kIGJlY2F1c2UgZW5jb2Rl
VVJJQ29tcG9uZW50IGlzIHRvbyBhZ3Jlc3NpdmUgYW5kIGRvZXNuJ3QgZm9sbG93Ci0gKiBodHRw
Oi8vd3d3LmlldGYub3JnL3JmYy9yZmMzOTg2LnR4dCB3aXRoIHJlZ2FyZHMgdG8gdGhlIGNoYXJh
Y3RlciBzZXQgKHBjaGFyKSBhbGxvd2VkIGluIHBhdGgKLSAqIHNlZ21lbnRzOgotICogICAgc2Vn
bWVudCAgICAgICA9ICpwY2hhcgotICogICAgcGNoYXIgICAgICAgICA9IHVucmVzZXJ2ZWQgLyBw
Y3QtZW5jb2RlZCAvIHN1Yi1kZWxpbXMgLyAiOiIgLyAiQCIKLSAqICAgIHBjdC1lbmNvZGVkICAg
PSAiJSIgSEVYRElHIEhFWERJRwotICogICAgdW5yZXNlcnZlZCAgICA9IEFMUEhBIC8gRElHSVQg
LyAiLSIgLyAiLiIgLyAiXyIgLyAifiIKLSAqICAgIHN1Yi1kZWxpbXMgICAgPSAiISIgLyAiJCIg
LyAiJiIgLyAiJyIgLyAiKCIgLyAiKSIKLSAqICAgICAgICAgICAgICAgICAgICAgLyAiKiIgLyAi
KyIgLyAiLCIgLyAiOyIgLyAiPSIKLSAqLwotZnVuY3Rpb24gZW5jb2RlVXJpU2VnbWVudCh2YWwp
IHsKLSAgcmV0dXJuIGVuY29kZVVyaVF1ZXJ5KHZhbCwgdHJ1ZSkuCi0gICAgICAgICAgICAgcmVw
bGFjZSgvJTI2L2dpLCAnJicpLgotICAgICAgICAgICAgIHJlcGxhY2UoLyUzRC9naSwgJz0nKS4K
LSAgICAgICAgICAgICByZXBsYWNlKC8lMkIvZ2ksICcrJyk7Ci19Ci0KLQotLyoqCi0gKiBUaGlz
IG1ldGhvZCBpcyBpbnRlbmRlZCBmb3IgZW5jb2RpbmcgKmtleSogb3IgKnZhbHVlKiBwYXJ0cyBv
ZiBxdWVyeSBjb21wb25lbnQuIFdlIG5lZWQgYSBjdXN0b20KLSAqIG1ldGhvZCBiZWN1YXNlIGVu
Y29kZVVSSUNvbXBvbmVudCBpcyB0b28gYWdyZXNzaXZlIGFuZCBlbmNvZGVzIHN0dWZmIHRoYXQg
ZG9lc24ndCBoYXZlIHRvIGJlCi0gKiBlbmNvZGVkIHBlciBodHRwOi8vdG9vbHMuaWV0Zi5vcmcv
aHRtbC9yZmMzOTg2OgotICogICAgcXVlcnkgICAgICAgPSAqKCBwY2hhciAvICIvIiAvICI/IiAp
Ci0gKiAgICBwY2hhciAgICAgICAgID0gdW5yZXNlcnZlZCAvIHBjdC1lbmNvZGVkIC8gc3ViLWRl
bGltcyAvICI6IiAvICJAIgotICogICAgdW5yZXNlcnZlZCAgICA9IEFMUEhBIC8gRElHSVQgLyAi
LSIgLyAiLiIgLyAiXyIgLyAifiIKLSAqICAgIHBjdC1lbmNvZGVkICAgPSAiJSIgSEVYRElHIEhF
WERJRwotICogICAgc3ViLWRlbGltcyAgICA9ICIhIiAvICIkIiAvICImIiAvICInIiAvICIoIiAv
ICIpIgotICogICAgICAgICAgICAgICAgICAgICAvICIqIiAvICIrIiAvICIsIiAvICI7IiAvICI9
IgotICovCi1mdW5jdGlvbiBlbmNvZGVVcmlRdWVyeSh2YWwsIHBjdEVuY29kZVNwYWNlcykgewot
ICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KHZhbCkuCi0gICAgICAgICAgICAgcmVwbGFjZSgv
JTQwL2dpLCAnQCcpLgotICAgICAgICAgICAgIHJlcGxhY2UoLyUzQS9naSwgJzonKS4KLSAgICAg
ICAgICAgICByZXBsYWNlKC8lMjQvZywgJyQnKS4KLSAgICAgICAgICAgICByZXBsYWNlKC8lMkMv
Z2ksICcsJykuCi0gICAgICAgICAgICAgcmVwbGFjZSgvJTIwL2csIChwY3RFbmNvZGVTcGFjZXMg
PyAnJTIwJyA6ICcrJykpOwotfQotCi0KLS8qKgotICogQG5nZG9jIGRpcmVjdGl2ZQotICogQG5h
bWUgbmcuZGlyZWN0aXZlOm5nQXBwCi0gKgotICogQGVsZW1lbnQgQU5ZCi0gKiBAcGFyYW0ge2Fu
Z3VsYXIuTW9kdWxlfSBuZ0FwcCBhbiBvcHRpb25hbCBhcHBsaWNhdGlvbgotICogICB7QGxpbmsg
YW5ndWxhci5tb2R1bGUgbW9kdWxlfSBuYW1lIHRvIGxvYWQuCi0gKgotICogQGRlc2NyaXB0aW9u
Ci0gKgotICogVXNlIHRoaXMgZGlyZWN0aXZlIHRvIGF1dG8tYm9vdHN0cmFwIGFuIGFwcGxpY2F0
aW9uLiBPbmx5Ci0gKiBvbmUgZGlyZWN0aXZlIGNhbiBiZSB1c2VkIHBlciBIVE1MIGRvY3VtZW50
LiBUaGUgZGlyZWN0aXZlCi0gKiBkZXNpZ25hdGVzIHRoZSByb290IG9mIHRoZSBhcHBsaWNhdGlv
biBhbmQgaXMgdHlwaWNhbGx5IHBsYWNlZAotICogYXQgdGhlIHJvb3Qgb2YgdGhlIHBhZ2UuCi0g
KgotICogSW4gdGhlIGV4YW1wbGUgYmVsb3cgaWYgdGhlIGBuZ0FwcGAgZGlyZWN0aXZlIHdvdWxk
IG5vdCBiZSBwbGFjZWQKLSAqIG9uIHRoZSBgaHRtbGAgZWxlbWVudCB0aGVuIHRoZSBkb2N1bWVu
dCB3b3VsZCBub3QgYmUgY29tcGlsZWQKLSAqIGFuZCB0aGUgYHt7IDErMiB9fWAgd291bGQgbm90
IGJlIHJlc29sdmVkIHRvIGAzYC4KLSAqCi0gKiBgbmdBcHBgIGlzIHRoZSBlYXNpZXN0IHdheSB0
byBib290c3RyYXAgYW4gYXBwbGljYXRpb24uCi0gKgotIDxkb2M6ZXhhbXBsZT4KLSAgIDxkb2M6
c291cmNlPgotICAgIEkgY2FuIGFkZDogMSArIDIgPSAge3sgMSsyIH19Ci0gICA8L2RvYzpzb3Vy
Y2U+Ci0gPC9kb2M6ZXhhbXBsZT4KLSAqCi0gKi8KLWZ1bmN0aW9uIGFuZ3VsYXJJbml0KGVsZW1l
bnQsIGJvb3RzdHJhcCkgewotICB2YXIgZWxlbWVudHMgPSBbZWxlbWVudF0sCi0gICAgICBhcHBF
bGVtZW50LAotICAgICAgbW9kdWxlLAotICAgICAgbmFtZXMgPSBbJ25nOmFwcCcsICduZy1hcHAn
LCAneC1uZy1hcHAnLCAnZGF0YS1uZy1hcHAnXSwKLSAgICAgIE5HX0FQUF9DTEFTU19SRUdFWFAg
PSAvXHNuZ1s6XC1dYXBwKDpccyooW1x3XGRfXSspOz8pP1xzLzsKLQotICBmdW5jdGlvbiBhcHBl
bmQoZWxlbWVudCkgewotICAgIGVsZW1lbnQgJiYgZWxlbWVudHMucHVzaChlbGVtZW50KTsKLSAg
fQotCi0gIGZvckVhY2gobmFtZXMsIGZ1bmN0aW9uKG5hbWUpIHsKLSAgICBuYW1lc1tuYW1lXSA9
IHRydWU7Ci0gICAgYXBwZW5kKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG5hbWUpKTsKLSAgICBu
YW1lID0gbmFtZS5yZXBsYWNlKCc6JywgJ1xcOicpOwotICAgIGlmIChlbGVtZW50LnF1ZXJ5U2Vs
ZWN0b3JBbGwpIHsKLSAgICAgIGZvckVhY2goZWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuJyAr
IG5hbWUpLCBhcHBlbmQpOwotICAgICAgZm9yRWFjaChlbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwo
Jy4nICsgbmFtZSArICdcXDonKSwgYXBwZW5kKTsKLSAgICAgIGZvckVhY2goZWxlbWVudC5xdWVy
eVNlbGVjdG9yQWxsKCdbJyArIG5hbWUgKyAnXScpLCBhcHBlbmQpOwotICAgIH0KLSAgfSk7Ci0K
LSAgZm9yRWFjaChlbGVtZW50cywgZnVuY3Rpb24oZWxlbWVudCkgewotICAgIGlmICghYXBwRWxl
bWVudCkgewotICAgICAgdmFyIGNsYXNzTmFtZSA9ICcgJyArIGVsZW1lbnQuY2xhc3NOYW1lICsg
JyAnOwotICAgICAgdmFyIG1hdGNoID0gTkdfQVBQX0NMQVNTX1JFR0VYUC5leGVjKGNsYXNzTmFt
ZSk7Ci0gICAgICBpZiAobWF0Y2gpIHsKLSAgICAgICAgYXBwRWxlbWVudCA9IGVsZW1lbnQ7Ci0g
ICAgICAgIG1vZHVsZSA9IChtYXRjaFsyXSB8fCAnJykucmVwbGFjZSgvXHMrL2csICcsJyk7Ci0g
ICAgICB9IGVsc2UgewotICAgICAgICBmb3JFYWNoKGVsZW1lbnQuYXR0cmlidXRlcywgZnVuY3Rp
b24oYXR0cikgewotICAgICAgICAgIGlmICghYXBwRWxlbWVudCAmJiBuYW1lc1thdHRyLm5hbWVd
KSB7Ci0gICAgICAgICAgICBhcHBFbGVtZW50ID0gZWxlbWVudDsKLSAgICAgICAgICAgIG1vZHVs
ZSA9IGF0dHIudmFsdWU7Ci0gICAgICAgICAgfQotICAgICAgICB9KTsKLSAgICAgIH0KLSAgICB9
Ci0gIH0pOwotICBpZiAoYXBwRWxlbWVudCkgewotICAgIGJvb3RzdHJhcChhcHBFbGVtZW50LCBt
b2R1bGUgPyBbbW9kdWxlXSA6IFtdKTsKLSAgfQotfQotCi0vKioKLSAqIEBuZ2RvYyBmdW5jdGlv
bgotICogQG5hbWUgYW5ndWxhci5ib290c3RyYXAKLSAqIEBkZXNjcmlwdGlvbgotICogVXNlIHRo
aXMgZnVuY3Rpb24gdG8gbWFudWFsbHkgc3RhcnQgdXAgYW5ndWxhciBhcHBsaWNhdGlvbi4KLSAq
Ci0gKiBTZWU6IHtAbGluayBndWlkZS9ib290c3RyYXAgQm9vdHN0cmFwfQotICoKLSAqIEBwYXJh
bSB7RWxlbWVudH0gZWxlbWVudCBET00gZWxlbWVudCB3aGljaCBpcyB0aGUgcm9vdCBvZiBhbmd1
bGFyIGFwcGxpY2F0aW9uLgotICogQHBhcmFtIHtBcnJheTxTdHJpbmd8RnVuY3Rpb24+PX0gbW9k
dWxlcyBhbiBhcnJheSBvZiBtb2R1bGUgZGVjbGFyYXRpb25zLiBTZWU6IHtAbGluayBhbmd1bGFy
Lm1vZHVsZSBtb2R1bGVzfQotICogQHJldHVybnMge0FVVE8uJGluamVjdG9yfSBSZXR1cm5zIHRo
ZSBuZXdseSBjcmVhdGVkIGluamVjdG9yIGZvciB0aGlzIGFwcC4KLSAqLwotZnVuY3Rpb24gYm9v
dHN0cmFwKGVsZW1lbnQsIG1vZHVsZXMpIHsKLSAgdmFyIHJlc3VtZUJvb3RzdHJhcEludGVybmFs
ID0gZnVuY3Rpb24oKSB7Ci0gICAgZWxlbWVudCA9IGpxTGl0ZShlbGVtZW50KTsKLSAgICBtb2R1
bGVzID0gbW9kdWxlcyB8fCBbXTsKLSAgICBtb2R1bGVzLnVuc2hpZnQoWyckcHJvdmlkZScsIGZ1
bmN0aW9uKCRwcm92aWRlKSB7Ci0gICAgICAkcHJvdmlkZS52YWx1ZSgnJHJvb3RFbGVtZW50Jywg
ZWxlbWVudCk7Ci0gICAgfV0pOwotICAgIG1vZHVsZXMudW5zaGlmdCgnbmcnKTsKLSAgICB2YXIg
aW5qZWN0b3IgPSBjcmVhdGVJbmplY3Rvcihtb2R1bGVzKTsKLSAgICBpbmplY3Rvci5pbnZva2Uo
Wyckcm9vdFNjb3BlJywgJyRyb290RWxlbWVudCcsICckY29tcGlsZScsICckaW5qZWN0b3InLAot
ICAgICAgIGZ1bmN0aW9uKHNjb3BlLCBlbGVtZW50LCBjb21waWxlLCBpbmplY3RvcikgewotICAg
ICAgICBzY29wZS4kYXBwbHkoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgZWxlbWVudC5kYXRhKCck
aW5qZWN0b3InLCBpbmplY3Rvcik7Ci0gICAgICAgICAgY29tcGlsZShlbGVtZW50KShzY29wZSk7
Ci0gICAgICAgIH0pOwotICAgICAgfV0KLSAgICApOwotICAgIHJldHVybiBpbmplY3RvcjsKLSAg
fTsKLQotICB2YXIgTkdfREVGRVJfQk9PVFNUUkFQID0gL15OR19ERUZFUl9CT09UU1RSQVAhLzsK
LQotICBpZiAod2luZG93ICYmICFOR19ERUZFUl9CT09UU1RSQVAudGVzdCh3aW5kb3cubmFtZSkp
IHsKLSAgICByZXR1cm4gcmVzdW1lQm9vdHN0cmFwSW50ZXJuYWwoKTsKLSAgfQotCi0gIHdpbmRv
dy5uYW1lID0gd2luZG93Lm5hbWUucmVwbGFjZShOR19ERUZFUl9CT09UU1RSQVAsICcnKTsKLSAg
YW5ndWxhci5yZXN1bWVCb290c3RyYXAgPSBmdW5jdGlvbihleHRyYU1vZHVsZXMpIHsKLSAgICBm
b3JFYWNoKGV4dHJhTW9kdWxlcywgZnVuY3Rpb24obW9kdWxlKSB7Ci0gICAgICBtb2R1bGVzLnB1
c2gobW9kdWxlKTsKLSAgICB9KTsKLSAgICByZXN1bWVCb290c3RyYXBJbnRlcm5hbCgpOwotICB9
OwotfQotCi12YXIgU05BS0VfQ0FTRV9SRUdFWFAgPSAvW0EtWl0vZzsKLWZ1bmN0aW9uIHNuYWtl
X2Nhc2UobmFtZSwgc2VwYXJhdG9yKXsKLSAgc2VwYXJhdG9yID0gc2VwYXJhdG9yIHx8ICdfJzsK
LSAgcmV0dXJuIG5hbWUucmVwbGFjZShTTkFLRV9DQVNFX1JFR0VYUCwgZnVuY3Rpb24obGV0dGVy
LCBwb3MpIHsKLSAgICByZXR1cm4gKHBvcyA/IHNlcGFyYXRvciA6ICcnKSArIGxldHRlci50b0xv
d2VyQ2FzZSgpOwotICB9KTsKLX0KLQotZnVuY3Rpb24gYmluZEpRdWVyeSgpIHsKLSAgLy8gYmlu
ZCB0byBqUXVlcnkgaWYgcHJlc2VudDsKLSAgalF1ZXJ5ID0gd2luZG93LmpRdWVyeTsKLSAgLy8g
cmVzZXQgdG8galF1ZXJ5IG9yIGRlZmF1bHQgdG8gdXMuCi0gIGlmIChqUXVlcnkpIHsKLSAgICBq
cUxpdGUgPSBqUXVlcnk7Ci0gICAgZXh0ZW5kKGpRdWVyeS5mbiwgewotICAgICAgc2NvcGU6IEpR
TGl0ZVByb3RvdHlwZS5zY29wZSwKLSAgICAgIGNvbnRyb2xsZXI6IEpRTGl0ZVByb3RvdHlwZS5j
b250cm9sbGVyLAotICAgICAgaW5qZWN0b3I6IEpRTGl0ZVByb3RvdHlwZS5pbmplY3RvciwKLSAg
ICAgIGluaGVyaXRlZERhdGE6IEpRTGl0ZVByb3RvdHlwZS5pbmhlcml0ZWREYXRhCi0gICAgfSk7
Ci0gICAgSlFMaXRlUGF0Y2hKUXVlcnlSZW1vdmUoJ3JlbW92ZScsIHRydWUpOwotICAgIEpRTGl0
ZVBhdGNoSlF1ZXJ5UmVtb3ZlKCdlbXB0eScpOwotICAgIEpRTGl0ZVBhdGNoSlF1ZXJ5UmVtb3Zl
KCdodG1sJyk7Ci0gIH0gZWxzZSB7Ci0gICAganFMaXRlID0gSlFMaXRlOwotICB9Ci0gIGFuZ3Vs
YXIuZWxlbWVudCA9IGpxTGl0ZTsKLX0KLQotLyoqCi0gKiB0aHJvdyBlcnJvciBpZiB0aGUgYXJn
dW1lbnQgaXMgZmFsc3kuCi0gKi8KLWZ1bmN0aW9uIGFzc2VydEFyZyhhcmcsIG5hbWUsIHJlYXNv
bikgewotICBpZiAoIWFyZykgewotICAgIHRocm93IG5ldyBFcnJvcigiQXJndW1lbnQgJyIgKyAo
bmFtZSB8fCAnPycpICsgIicgaXMgIiArIChyZWFzb24gfHwgInJlcXVpcmVkIikpOwotICB9Ci0g
IHJldHVybiBhcmc7Ci19Ci0KLWZ1bmN0aW9uIGFzc2VydEFyZ0ZuKGFyZywgbmFtZSwgYWNjZXB0
QXJyYXlBbm5vdGF0aW9uKSB7Ci0gIGlmIChhY2NlcHRBcnJheUFubm90YXRpb24gJiYgaXNBcnJh
eShhcmcpKSB7Ci0gICAgICBhcmcgPSBhcmdbYXJnLmxlbmd0aCAtIDFdOwotICB9Ci0KLSAgYXNz
ZXJ0QXJnKGlzRnVuY3Rpb24oYXJnKSwgbmFtZSwgJ25vdCBhIGZ1bmN0aW9uLCBnb3QgJyArCi0g
ICAgICAoYXJnICYmIHR5cGVvZiBhcmcgPT0gJ29iamVjdCcgPyBhcmcuY29uc3RydWN0b3IubmFt
ZSB8fCAnT2JqZWN0JyA6IHR5cGVvZiBhcmcpKTsKLSAgcmV0dXJuIGFyZzsKLX0KLQotLyoqCi0g
KiBAbmdkb2MgaW50ZXJmYWNlCi0gKiBAbmFtZSBhbmd1bGFyLk1vZHVsZQotICogQGRlc2NyaXB0
aW9uCi0gKgotICogSW50ZXJmYWNlIGZvciBjb25maWd1cmluZyBhbmd1bGFyIHtAbGluayBhbmd1
bGFyLm1vZHVsZSBtb2R1bGVzfS4KLSAqLwotCi1mdW5jdGlvbiBzZXR1cE1vZHVsZUxvYWRlcih3
aW5kb3cpIHsKLQotICBmdW5jdGlvbiBlbnN1cmUob2JqLCBuYW1lLCBmYWN0b3J5KSB7Ci0gICAg
cmV0dXJuIG9ialtuYW1lXSB8fCAob2JqW25hbWVdID0gZmFjdG9yeSgpKTsKLSAgfQotCi0gIHJl
dHVybiBlbnN1cmUoZW5zdXJlKHdpbmRvdywgJ2FuZ3VsYXInLCBPYmplY3QpLCAnbW9kdWxlJywg
ZnVuY3Rpb24oKSB7Ci0gICAgLyoqIEB0eXBlIHtPYmplY3QuPHN0cmluZywgYW5ndWxhci5Nb2R1
bGU+fSAqLwotICAgIHZhciBtb2R1bGVzID0ge307Ci0KLSAgICAvKioKLSAgICAgKiBAbmdkb2Mg
ZnVuY3Rpb24KLSAgICAgKiBAbmFtZSBhbmd1bGFyLm1vZHVsZQotICAgICAqIEBkZXNjcmlwdGlv
bgotICAgICAqCi0gICAgICogVGhlIGBhbmd1bGFyLm1vZHVsZWAgaXMgYSBnbG9iYWwgcGxhY2Ug
Zm9yIGNyZWF0aW5nIGFuZCByZWdpc3RlcmluZyBBbmd1bGFyIG1vZHVsZXMuIEFsbAotICAgICAq
IG1vZHVsZXMgKGFuZ3VsYXIgY29yZSBvciAzcmQgcGFydHkpIHRoYXQgc2hvdWxkIGJlIGF2YWls
YWJsZSB0byBhbiBhcHBsaWNhdGlvbiBtdXN0IGJlCi0gICAgICogcmVnaXN0ZXJlZCB1c2luZyB0
aGlzIG1lY2hhbmlzbS4KLSAgICAgKgotICAgICAqCi0gICAgICogIyBNb2R1bGUKLSAgICAgKgot
ICAgICAqIEEgbW9kdWxlIGlzIGEgY29sbG9jYXRpb24gb2Ygc2VydmljZXMsIGRpcmVjdGl2ZXMs
IGZpbHRlcnMsIGFuZCBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uLiBNb2R1bGUKLSAgICAgKiBp
cyB1c2VkIHRvIGNvbmZpZ3VyZSB0aGUge0BsaW5rIEFVVE8uJGluamVjdG9yICRpbmplY3Rvcn0u
Ci0gICAgICoKLSAgICAgKiA8cHJlPgotICAgICAqIC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUKLSAg
ICAgKiB2YXIgbXlNb2R1bGUgPSBhbmd1bGFyLm1vZHVsZSgnbXlNb2R1bGUnLCBbXSk7Ci0gICAg
ICoKLSAgICAgKiAvLyByZWdpc3RlciBhIG5ldyBzZXJ2aWNlCi0gICAgICogbXlNb2R1bGUudmFs
dWUoJ2FwcE5hbWUnLCAnTXlDb29sQXBwJyk7Ci0gICAgICoKLSAgICAgKiAvLyBjb25maWd1cmUg
ZXhpc3Rpbmcgc2VydmljZXMgaW5zaWRlIGluaXRpYWxpemF0aW9uIGJsb2Nrcy4KLSAgICAgKiBt
eU1vZHVsZS5jb25maWcoZnVuY3Rpb24oJGxvY2F0aW9uUHJvdmlkZXIpIHsKLSAgICAgKiAgIC8v
IENvbmZpZ3VyZSBleGlzdGluZyBwcm92aWRlcnMKLSAgICAgKiAgICRsb2NhdGlvblByb3ZpZGVy
Lmhhc2hQcmVmaXgoJyEnKTsKLSAgICAgKiB9KTsKLSAgICAgKiA8L3ByZT4KLSAgICAgKgotICAg
ICAqIFRoZW4geW91IGNhbiBjcmVhdGUgYW4gaW5qZWN0b3IgYW5kIGxvYWQgeW91ciBtb2R1bGVz
IGxpa2UgdGhpczoKLSAgICAgKgotICAgICAqIDxwcmU+Ci0gICAgICogdmFyIGluamVjdG9yID0g
YW5ndWxhci5pbmplY3RvcihbJ25nJywgJ015TW9kdWxlJ10pCi0gICAgICogPC9wcmU+Ci0gICAg
ICoKLSAgICAgKiBIb3dldmVyIGl0J3MgbW9yZSBsaWtlbHkgdGhhdCB5b3UnbGwganVzdCB1c2UK
LSAgICAgKiB7QGxpbmsgbmcuZGlyZWN0aXZlOm5nQXBwIG5nQXBwfSBvcgotICAgICAqIHtAbGlu
ayBhbmd1bGFyLmJvb3RzdHJhcH0gdG8gc2ltcGxpZnkgdGhpcyBwcm9jZXNzIGZvciB5b3UuCi0g
ICAgICoKLSAgICAgKiBAcGFyYW0geyFzdHJpbmd9IG5hbWUgVGhlIG5hbWUgb2YgdGhlIG1vZHVs
ZSB0byBjcmVhdGUgb3IgcmV0cmlldmUuCi0gICAgICogQHBhcmFtIHtBcnJheS48c3RyaW5nPj19
IHJlcXVpcmVzIElmIHNwZWNpZmllZCB0aGVuIG5ldyBtb2R1bGUgaXMgYmVpbmcgY3JlYXRlZC4g
SWYgdW5zcGVjaWZpZWQgdGhlbiB0aGUKLSAgICAgKiAgICAgICAgdGhlIG1vZHVsZSBpcyBiZWlu
ZyByZXRyaWV2ZWQgZm9yIGZ1cnRoZXIgY29uZmlndXJhdGlvbi4KLSAgICAgKiBAcGFyYW0ge0Z1
bmN0aW9ufSBjb25maWdGbiBPcHRpb25hbCBjb25maWd1cmF0aW9uIGZ1bmN0aW9uIGZvciB0aGUg
bW9kdWxlLiBTYW1lIGFzCi0gICAgICogICAgICAgIHtAbGluayBhbmd1bGFyLk1vZHVsZSNjb25m
aWcgTW9kdWxlI2NvbmZpZygpfS4KLSAgICAgKiBAcmV0dXJucyB7bW9kdWxlfSBuZXcgbW9kdWxl
IHdpdGggdGhlIHtAbGluayBhbmd1bGFyLk1vZHVsZX0gYXBpLgotICAgICAqLwotICAgIHJldHVy
biBmdW5jdGlvbiBtb2R1bGUobmFtZSwgcmVxdWlyZXMsIGNvbmZpZ0ZuKSB7Ci0gICAgICBpZiAo
cmVxdWlyZXMgJiYgbW9kdWxlcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkgewotICAgICAgICBtb2R1
bGVzW25hbWVdID0gbnVsbDsKLSAgICAgIH0KLSAgICAgIHJldHVybiBlbnN1cmUobW9kdWxlcywg
bmFtZSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICghcmVxdWlyZXMpIHsKLSAgICAgICAgICB0
aHJvdyBFcnJvcignTm8gbW9kdWxlOiAnICsgbmFtZSk7Ci0gICAgICAgIH0KLQotICAgICAgICAv
KiogQHR5cGUgeyFBcnJheS48QXJyYXkuPCo+Pn0gKi8KLSAgICAgICAgdmFyIGludm9rZVF1ZXVl
ID0gW107Ci0KLSAgICAgICAgLyoqIEB0eXBlIHshQXJyYXkuPEZ1bmN0aW9uPn0gKi8KLSAgICAg
ICAgdmFyIHJ1bkJsb2NrcyA9IFtdOwotCi0gICAgICAgIHZhciBjb25maWcgPSBpbnZva2VMYXRl
cignJGluamVjdG9yJywgJ2ludm9rZScpOwotCi0gICAgICAgIC8qKiBAdHlwZSB7YW5ndWxhci5N
b2R1bGV9ICovCi0gICAgICAgIHZhciBtb2R1bGVJbnN0YW5jZSA9IHsKLSAgICAgICAgICAvLyBQ
cml2YXRlIHN0YXRlCi0gICAgICAgICAgX2ludm9rZVF1ZXVlOiBpbnZva2VRdWV1ZSwKLSAgICAg
ICAgICBfcnVuQmxvY2tzOiBydW5CbG9ja3MsCi0KLSAgICAgICAgICAvKioKLSAgICAgICAgICAg
KiBAbmdkb2MgcHJvcGVydHkKLSAgICAgICAgICAgKiBAbmFtZSBhbmd1bGFyLk1vZHVsZSNyZXF1
aXJlcwotICAgICAgICAgICAqIEBwcm9wZXJ0eU9mIGFuZ3VsYXIuTW9kdWxlCi0gICAgICAgICAg
ICogQHJldHVybnMge0FycmF5LjxzdHJpbmc+fSBMaXN0IG9mIG1vZHVsZSBuYW1lcyB3aGljaCBt
dXN0IGJlIGxvYWRlZCBiZWZvcmUgdGhpcyBtb2R1bGUuCi0gICAgICAgICAgICogQGRlc2NyaXB0
aW9uCi0gICAgICAgICAgICogSG9sZHMgdGhlIGxpc3Qgb2YgbW9kdWxlcyB3aGljaCB0aGUgaW5q
ZWN0b3Igd2lsbCBsb2FkIGJlZm9yZSB0aGUgY3VycmVudCBtb2R1bGUgaXMgbG9hZGVkLgotICAg
ICAgICAgICAqLwotICAgICAgICAgIHJlcXVpcmVzOiByZXF1aXJlcywKLQotICAgICAgICAgIC8q
KgotICAgICAgICAgICAqIEBuZ2RvYyBwcm9wZXJ0eQotICAgICAgICAgICAqIEBuYW1lIGFuZ3Vs
YXIuTW9kdWxlI25hbWUKLSAgICAgICAgICAgKiBAcHJvcGVydHlPZiBhbmd1bGFyLk1vZHVsZQot
ICAgICAgICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IE5hbWUgb2YgdGhlIG1vZHVsZS4KLSAgICAg
ICAgICAgKiBAZGVzY3JpcHRpb24KLSAgICAgICAgICAgKi8KLSAgICAgICAgICBuYW1lOiBuYW1l
LAotCi0KLSAgICAgICAgICAvKioKLSAgICAgICAgICAgKiBAbmdkb2MgbWV0aG9kCi0gICAgICAg
ICAgICogQG5hbWUgYW5ndWxhci5Nb2R1bGUjcHJvdmlkZXIKLSAgICAgICAgICAgKiBAbWV0aG9k
T2YgYW5ndWxhci5Nb2R1bGUKLSAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBzZXJ2
aWNlIG5hbWUKLSAgICAgICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcm92aWRlclR5cGUgQ29u
c3RydWN0aW9uIGZ1bmN0aW9uIGZvciBjcmVhdGluZyBuZXcgaW5zdGFuY2Ugb2YgdGhlIHNlcnZp
Y2UuCi0gICAgICAgICAgICogQGRlc2NyaXB0aW9uCi0gICAgICAgICAgICogU2VlIHtAbGluayBB
VVRPLiRwcm92aWRlI3Byb3ZpZGVyICRwcm92aWRlLnByb3ZpZGVyKCl9LgotICAgICAgICAgICAq
LwotICAgICAgICAgIHByb3ZpZGVyOiBpbnZva2VMYXRlcignJHByb3ZpZGUnLCAncHJvdmlkZXIn
KSwKLQotICAgICAgICAgIC8qKgotICAgICAgICAgICAqIEBuZ2RvYyBtZXRob2QKLSAgICAgICAg
ICAgKiBAbmFtZSBhbmd1bGFyLk1vZHVsZSNmYWN0b3J5Ci0gICAgICAgICAgICogQG1ldGhvZE9m
IGFuZ3VsYXIuTW9kdWxlCi0gICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgc2Vydmlj
ZSBuYW1lCi0gICAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gcHJvdmlkZXJGdW5jdGlvbiBG
dW5jdGlvbiBmb3IgY3JlYXRpbmcgbmV3IGluc3RhbmNlIG9mIHRoZSBzZXJ2aWNlLgotICAgICAg
ICAgICAqIEBkZXNjcmlwdGlvbgotICAgICAgICAgICAqIFNlZSB7QGxpbmsgQVVUTy4kcHJvdmlk
ZSNmYWN0b3J5ICRwcm92aWRlLmZhY3RvcnkoKX0uCi0gICAgICAgICAgICovCi0gICAgICAgICAg
ZmFjdG9yeTogaW52b2tlTGF0ZXIoJyRwcm92aWRlJywgJ2ZhY3RvcnknKSwKLQotICAgICAgICAg
IC8qKgotICAgICAgICAgICAqIEBuZ2RvYyBtZXRob2QKLSAgICAgICAgICAgKiBAbmFtZSBhbmd1
bGFyLk1vZHVsZSNzZXJ2aWNlCi0gICAgICAgICAgICogQG1ldGhvZE9mIGFuZ3VsYXIuTW9kdWxl
Ci0gICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgc2VydmljZSBuYW1lCi0gICAgICAg
ICAgICogQHBhcmFtIHtGdW5jdGlvbn0gY29uc3RydWN0b3IgQSBjb25zdHJ1Y3RvciBmdW5jdGlv
biB0aGF0IHdpbGwgYmUgaW5zdGFudGlhdGVkLgotICAgICAgICAgICAqIEBkZXNjcmlwdGlvbgot
ICAgICAgICAgICAqIFNlZSB7QGxpbmsgQVVUTy4kcHJvdmlkZSNzZXJ2aWNlICRwcm92aWRlLnNl
cnZpY2UoKX0uCi0gICAgICAgICAgICovCi0gICAgICAgICAgc2VydmljZTogaW52b2tlTGF0ZXIo
JyRwcm92aWRlJywgJ3NlcnZpY2UnKSwKLQotICAgICAgICAgIC8qKgotICAgICAgICAgICAqIEBu
Z2RvYyBtZXRob2QKLSAgICAgICAgICAgKiBAbmFtZSBhbmd1bGFyLk1vZHVsZSN2YWx1ZQotICAg
ICAgICAgICAqIEBtZXRob2RPZiBhbmd1bGFyLk1vZHVsZQotICAgICAgICAgICAqIEBwYXJhbSB7
c3RyaW5nfSBuYW1lIHNlcnZpY2UgbmFtZQotICAgICAgICAgICAqIEBwYXJhbSB7Kn0gb2JqZWN0
IFNlcnZpY2UgaW5zdGFuY2Ugb2JqZWN0LgotICAgICAgICAgICAqIEBkZXNjcmlwdGlvbgotICAg
ICAgICAgICAqIFNlZSB7QGxpbmsgQVVUTy4kcHJvdmlkZSN2YWx1ZSAkcHJvdmlkZS52YWx1ZSgp
fS4KLSAgICAgICAgICAgKi8KLSAgICAgICAgICB2YWx1ZTogaW52b2tlTGF0ZXIoJyRwcm92aWRl
JywgJ3ZhbHVlJyksCi0KLSAgICAgICAgICAvKioKLSAgICAgICAgICAgKiBAbmdkb2MgbWV0aG9k
Ci0gICAgICAgICAgICogQG5hbWUgYW5ndWxhci5Nb2R1bGUjY29uc3RhbnQKLSAgICAgICAgICAg
KiBAbWV0aG9kT2YgYW5ndWxhci5Nb2R1bGUKLSAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30g
bmFtZSBjb25zdGFudCBuYW1lCi0gICAgICAgICAgICogQHBhcmFtIHsqfSBvYmplY3QgQ29uc3Rh
bnQgdmFsdWUuCi0gICAgICAgICAgICogQGRlc2NyaXB0aW9uCi0gICAgICAgICAgICogQmVjYXVz
ZSB0aGUgY29uc3RhbnQgYXJlIGZpeGVkLCB0aGV5IGdldCBhcHBsaWVkIGJlZm9yZSBvdGhlciBw
cm92aWRlIG1ldGhvZHMuCi0gICAgICAgICAgICogU2VlIHtAbGluayBBVVRPLiRwcm92aWRlI2Nv
bnN0YW50ICRwcm92aWRlLmNvbnN0YW50KCl9LgotICAgICAgICAgICAqLwotICAgICAgICAgIGNv
bnN0YW50OiBpbnZva2VMYXRlcignJHByb3ZpZGUnLCAnY29uc3RhbnQnLCAndW5zaGlmdCcpLAot
Ci0gICAgICAgICAgLyoqCi0gICAgICAgICAgICogQG5nZG9jIG1ldGhvZAotICAgICAgICAgICAq
IEBuYW1lIGFuZ3VsYXIuTW9kdWxlI2ZpbHRlcgotICAgICAgICAgICAqIEBtZXRob2RPZiBhbmd1
bGFyLk1vZHVsZQotICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIEZpbHRlciBuYW1l
LgotICAgICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZpbHRlckZhY3RvcnkgRmFjdG9yeSBm
dW5jdGlvbiBmb3IgY3JlYXRpbmcgbmV3IGluc3RhbmNlIG9mIGZpbHRlci4KLSAgICAgICAgICAg
KiBAZGVzY3JpcHRpb24KLSAgICAgICAgICAgKiBTZWUge0BsaW5rIG5nLiRmaWx0ZXJQcm92aWRl
ciNyZWdpc3RlciAkZmlsdGVyUHJvdmlkZXIucmVnaXN0ZXIoKX0uCi0gICAgICAgICAgICovCi0g
ICAgICAgICAgZmlsdGVyOiBpbnZva2VMYXRlcignJGZpbHRlclByb3ZpZGVyJywgJ3JlZ2lzdGVy
JyksCi0KLSAgICAgICAgICAvKioKLSAgICAgICAgICAgKiBAbmdkb2MgbWV0aG9kCi0gICAgICAg
ICAgICogQG5hbWUgYW5ndWxhci5Nb2R1bGUjY29udHJvbGxlcgotICAgICAgICAgICAqIEBtZXRo
b2RPZiBhbmd1bGFyLk1vZHVsZQotICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIENv
bnRyb2xsZXIgbmFtZS4KLSAgICAgICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjb25zdHJ1Y3Rv
ciBDb250cm9sbGVyIGNvbnN0cnVjdG9yIGZ1bmN0aW9uLgotICAgICAgICAgICAqIEBkZXNjcmlw
dGlvbgotICAgICAgICAgICAqIFNlZSB7QGxpbmsgbmcuJGNvbnRyb2xsZXJQcm92aWRlciNyZWdp
c3RlciAkY29udHJvbGxlclByb3ZpZGVyLnJlZ2lzdGVyKCl9LgotICAgICAgICAgICAqLwotICAg
ICAgICAgIGNvbnRyb2xsZXI6IGludm9rZUxhdGVyKCckY29udHJvbGxlclByb3ZpZGVyJywgJ3Jl
Z2lzdGVyJyksCi0KLSAgICAgICAgICAvKioKLSAgICAgICAgICAgKiBAbmdkb2MgbWV0aG9kCi0g
ICAgICAgICAgICogQG5hbWUgYW5ndWxhci5Nb2R1bGUjZGlyZWN0aXZlCi0gICAgICAgICAgICog
QG1ldGhvZE9mIGFuZ3VsYXIuTW9kdWxlCi0gICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IG5h
bWUgZGlyZWN0aXZlIG5hbWUKLSAgICAgICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBkaXJlY3Rp
dmVGYWN0b3J5IEZhY3RvcnkgZnVuY3Rpb24gZm9yIGNyZWF0aW5nIG5ldyBpbnN0YW5jZSBvZgot
ICAgICAgICAgICAqIGRpcmVjdGl2ZXMuCi0gICAgICAgICAgICogQGRlc2NyaXB0aW9uCi0gICAg
ICAgICAgICogU2VlIHtAbGluayBuZy4kY29tcGlsZVByb3ZpZGVyI2RpcmVjdGl2ZSAkY29tcGls
ZVByb3ZpZGVyLmRpcmVjdGl2ZSgpfS4KLSAgICAgICAgICAgKi8KLSAgICAgICAgICBkaXJlY3Rp
dmU6IGludm9rZUxhdGVyKCckY29tcGlsZVByb3ZpZGVyJywgJ2RpcmVjdGl2ZScpLAotCi0gICAg
ICAgICAgLyoqCi0gICAgICAgICAgICogQG5nZG9jIG1ldGhvZAotICAgICAgICAgICAqIEBuYW1l
IGFuZ3VsYXIuTW9kdWxlI2NvbmZpZwotICAgICAgICAgICAqIEBtZXRob2RPZiBhbmd1bGFyLk1v
ZHVsZQotICAgICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGNvbmZpZ0ZuIEV4ZWN1dGUgdGhp
cyBmdW5jdGlvbiBvbiBtb2R1bGUgbG9hZC4gVXNlZnVsIGZvciBzZXJ2aWNlCi0gICAgICAgICAg
ICogICAgY29uZmlndXJhdGlvbi4KLSAgICAgICAgICAgKiBAZGVzY3JpcHRpb24KLSAgICAgICAg
ICAgKiBVc2UgdGhpcyBtZXRob2QgdG8gcmVnaXN0ZXIgd29yayB3aGljaCBuZWVkcyB0byBiZSBw
ZXJmb3JtZWQgb24gbW9kdWxlIGxvYWRpbmcuCi0gICAgICAgICAgICovCi0gICAgICAgICAgY29u
ZmlnOiBjb25maWcsCi0KLSAgICAgICAgICAvKioKLSAgICAgICAgICAgKiBAbmdkb2MgbWV0aG9k
Ci0gICAgICAgICAgICogQG5hbWUgYW5ndWxhci5Nb2R1bGUjcnVuCi0gICAgICAgICAgICogQG1l
dGhvZE9mIGFuZ3VsYXIuTW9kdWxlCi0gICAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaW5p
dGlhbGl6YXRpb25GbiBFeGVjdXRlIHRoaXMgZnVuY3Rpb24gYWZ0ZXIgaW5qZWN0b3IgY3JlYXRp
b24uCi0gICAgICAgICAgICogICAgVXNlZnVsIGZvciBhcHBsaWNhdGlvbiBpbml0aWFsaXphdGlv
bi4KLSAgICAgICAgICAgKiBAZGVzY3JpcHRpb24KLSAgICAgICAgICAgKiBVc2UgdGhpcyBtZXRo
b2QgdG8gcmVnaXN0ZXIgd29yayB3aGljaCBzaG91bGQgYmUgcGVyZm9ybWVkIHdoZW4gdGhlIGlu
amVjdG9yIGlzIGRvbmUKLSAgICAgICAgICAgKiBsb2FkaW5nIGFsbCBtb2R1bGVzLgotICAgICAg
ICAgICAqLwotICAgICAgICAgIHJ1bjogZnVuY3Rpb24oYmxvY2spIHsKLSAgICAgICAgICAgIHJ1
bkJsb2Nrcy5wdXNoKGJsb2NrKTsKLSAgICAgICAgICAgIHJldHVybiB0aGlzOwotICAgICAgICAg
IH0KLSAgICAgICAgfTsKLQotICAgICAgICBpZiAoY29uZmlnRm4pIHsKLSAgICAgICAgICBjb25m
aWcoY29uZmlnRm4pOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuICBtb2R1bGVJbnN0YW5j
ZTsKLQotICAgICAgICAvKioKLSAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHByb3ZpZGVyCi0g
ICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtZXRob2QKLSAgICAgICAgICogQHBhcmFtIHtTdHJp
bmc9fSBpbnNlcnRNZXRob2QKLSAgICAgICAgICogQHJldHVybnMge2FuZ3VsYXIuTW9kdWxlfQot
ICAgICAgICAgKi8KLSAgICAgICAgZnVuY3Rpb24gaW52b2tlTGF0ZXIocHJvdmlkZXIsIG1ldGhv
ZCwgaW5zZXJ0TWV0aG9kKSB7Ci0gICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgewotICAgICAg
ICAgICAgaW52b2tlUXVldWVbaW5zZXJ0TWV0aG9kIHx8ICdwdXNoJ10oW3Byb3ZpZGVyLCBtZXRo
b2QsIGFyZ3VtZW50c10pOwotICAgICAgICAgICAgcmV0dXJuIG1vZHVsZUluc3RhbmNlOwotICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfSk7Ci0gICAgfTsKLSAgfSk7Ci0KLX0KLQotLyoq
Ci0gKiBAbmdkb2MgcHJvcGVydHkKLSAqIEBuYW1lIGFuZ3VsYXIudmVyc2lvbgotICogQGRlc2Ny
aXB0aW9uCi0gKiBBbiBvYmplY3QgdGhhdCBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUg
Y3VycmVudCBBbmd1bGFySlMgdmVyc2lvbi4gVGhpcyBvYmplY3QgaGFzIHRoZQotICogZm9sbG93
aW5nIHByb3BlcnRpZXM6Ci0gKgotICogLSBgZnVsbGAg4oCTIGB7c3RyaW5nfWAg4oCTIEZ1bGwg
dmVyc2lvbiBzdHJpbmcsIHN1Y2ggYXMgIjAuOS4xOCIuCi0gKiAtIGBtYWpvcmAg4oCTIGB7bnVt
YmVyfWAg4oCTIE1ham9yIHZlcnNpb24gbnVtYmVyLCBzdWNoIGFzICIwIi4KLSAqIC0gYG1pbm9y
YCDigJMgYHtudW1iZXJ9YCDigJMgTWlub3IgdmVyc2lvbiBudW1iZXIsIHN1Y2ggYXMgIjkiLgot
ICogLSBgZG90YCDigJMgYHtudW1iZXJ9YCDigJMgRG90IHZlcnNpb24gbnVtYmVyLCBzdWNoIGFz
ICIxOCIuCi0gKiAtIGBjb2RlTmFtZWAg4oCTIGB7c3RyaW5nfWAg4oCTIENvZGUgbmFtZSBvZiB0
aGUgcmVsZWFzZSwgc3VjaCBhcyAiamlnZ2xpbmctYXJtZmF0Ii4KLSAqLwotdmFyIHZlcnNpb24g
PSB7Ci0gIGZ1bGw6ICcxLjAuNycsICAgIC8vIGFsbCBvZiB0aGVzZSBwbGFjZWhvbGRlciBzdHJp
bmdzIHdpbGwgYmUgcmVwbGFjZWQgYnkgZ3J1bnQncwotICBtYWpvcjogMSwgICAgLy8gcGFja2Fn
ZSB0YXNrCi0gIG1pbm9yOiAwLAotICBkb3Q6IDcsCi0gIGNvZGVOYW1lOiAnbW9ub2Nocm9tYXRp
Yy1yYWluYm93JwotfTsKLQotCi1mdW5jdGlvbiBwdWJsaXNoRXh0ZXJuYWxBUEkoYW5ndWxhcil7
Ci0gIGV4dGVuZChhbmd1bGFyLCB7Ci0gICAgJ2Jvb3RzdHJhcCc6IGJvb3RzdHJhcCwKLSAgICAn
Y29weSc6IGNvcHksCi0gICAgJ2V4dGVuZCc6IGV4dGVuZCwKLSAgICAnZXF1YWxzJzogZXF1YWxz
LAotICAgICdlbGVtZW50JzoganFMaXRlLAotICAgICdmb3JFYWNoJzogZm9yRWFjaCwKLSAgICAn
aW5qZWN0b3InOiBjcmVhdGVJbmplY3RvciwKLSAgICAnbm9vcCc6bm9vcCwKLSAgICAnYmluZCc6
YmluZCwKLSAgICAndG9Kc29uJzogdG9Kc29uLAotICAgICdmcm9tSnNvbic6IGZyb21Kc29uLAot
ICAgICdpZGVudGl0eSc6aWRlbnRpdHksCi0gICAgJ2lzVW5kZWZpbmVkJzogaXNVbmRlZmluZWQs
Ci0gICAgJ2lzRGVmaW5lZCc6IGlzRGVmaW5lZCwKLSAgICAnaXNTdHJpbmcnOiBpc1N0cmluZywK
LSAgICAnaXNGdW5jdGlvbic6IGlzRnVuY3Rpb24sCi0gICAgJ2lzT2JqZWN0JzogaXNPYmplY3Qs
Ci0gICAgJ2lzTnVtYmVyJzogaXNOdW1iZXIsCi0gICAgJ2lzRWxlbWVudCc6IGlzRWxlbWVudCwK
LSAgICAnaXNBcnJheSc6IGlzQXJyYXksCi0gICAgJ3ZlcnNpb24nOiB2ZXJzaW9uLAotICAgICdp
c0RhdGUnOiBpc0RhdGUsCi0gICAgJ2xvd2VyY2FzZSc6IGxvd2VyY2FzZSwKLSAgICAndXBwZXJj
YXNlJzogdXBwZXJjYXNlLAotICAgICdjYWxsYmFja3MnOiB7Y291bnRlcjogMH0KLSAgfSk7Ci0K
LSAgYW5ndWxhck1vZHVsZSA9IHNldHVwTW9kdWxlTG9hZGVyKHdpbmRvdyk7Ci0gIHRyeSB7Ci0g
ICAgYW5ndWxhck1vZHVsZSgnbmdMb2NhbGUnKTsKLSAgfSBjYXRjaCAoZSkgewotICAgIGFuZ3Vs
YXJNb2R1bGUoJ25nTG9jYWxlJywgW10pLnByb3ZpZGVyKCckbG9jYWxlJywgJExvY2FsZVByb3Zp
ZGVyKTsKLSAgfQotCi0gIGFuZ3VsYXJNb2R1bGUoJ25nJywgWyduZ0xvY2FsZSddLCBbJyRwcm92
aWRlJywKLSAgICBmdW5jdGlvbiBuZ01vZHVsZSgkcHJvdmlkZSkgewotICAgICAgJHByb3ZpZGUu
cHJvdmlkZXIoJyRjb21waWxlJywgJENvbXBpbGVQcm92aWRlcikuCi0gICAgICAgIGRpcmVjdGl2
ZSh7Ci0gICAgICAgICAgICBhOiBodG1sQW5jaG9yRGlyZWN0aXZlLAotICAgICAgICAgICAgaW5w
dXQ6IGlucHV0RGlyZWN0aXZlLAotICAgICAgICAgICAgdGV4dGFyZWE6IGlucHV0RGlyZWN0aXZl
LAotICAgICAgICAgICAgZm9ybTogZm9ybURpcmVjdGl2ZSwKLSAgICAgICAgICAgIHNjcmlwdDog
c2NyaXB0RGlyZWN0aXZlLAotICAgICAgICAgICAgc2VsZWN0OiBzZWxlY3REaXJlY3RpdmUsCi0g
ICAgICAgICAgICBzdHlsZTogc3R5bGVEaXJlY3RpdmUsCi0gICAgICAgICAgICBvcHRpb246IG9w
dGlvbkRpcmVjdGl2ZSwKLSAgICAgICAgICAgIG5nQmluZDogbmdCaW5kRGlyZWN0aXZlLAotICAg
ICAgICAgICAgbmdCaW5kSHRtbFVuc2FmZTogbmdCaW5kSHRtbFVuc2FmZURpcmVjdGl2ZSwKLSAg
ICAgICAgICAgIG5nQmluZFRlbXBsYXRlOiBuZ0JpbmRUZW1wbGF0ZURpcmVjdGl2ZSwKLSAgICAg
ICAgICAgIG5nQ2xhc3M6IG5nQ2xhc3NEaXJlY3RpdmUsCi0gICAgICAgICAgICBuZ0NsYXNzRXZl
bjogbmdDbGFzc0V2ZW5EaXJlY3RpdmUsCi0gICAgICAgICAgICBuZ0NsYXNzT2RkOiBuZ0NsYXNz
T2RkRGlyZWN0aXZlLAotICAgICAgICAgICAgbmdDc3A6IG5nQ3NwRGlyZWN0aXZlLAotICAgICAg
ICAgICAgbmdDbG9hazogbmdDbG9ha0RpcmVjdGl2ZSwKLSAgICAgICAgICAgIG5nQ29udHJvbGxl
cjogbmdDb250cm9sbGVyRGlyZWN0aXZlLAotICAgICAgICAgICAgbmdGb3JtOiBuZ0Zvcm1EaXJl
Y3RpdmUsCi0gICAgICAgICAgICBuZ0hpZGU6IG5nSGlkZURpcmVjdGl2ZSwKLSAgICAgICAgICAg
IG5nSW5jbHVkZTogbmdJbmNsdWRlRGlyZWN0aXZlLAotICAgICAgICAgICAgbmdJbml0OiBuZ0lu
aXREaXJlY3RpdmUsCi0gICAgICAgICAgICBuZ05vbkJpbmRhYmxlOiBuZ05vbkJpbmRhYmxlRGly
ZWN0aXZlLAotICAgICAgICAgICAgbmdQbHVyYWxpemU6IG5nUGx1cmFsaXplRGlyZWN0aXZlLAot
ICAgICAgICAgICAgbmdSZXBlYXQ6IG5nUmVwZWF0RGlyZWN0aXZlLAotICAgICAgICAgICAgbmdT
aG93OiBuZ1Nob3dEaXJlY3RpdmUsCi0gICAgICAgICAgICBuZ1N1Ym1pdDogbmdTdWJtaXREaXJl
Y3RpdmUsCi0gICAgICAgICAgICBuZ1N0eWxlOiBuZ1N0eWxlRGlyZWN0aXZlLAotICAgICAgICAg
ICAgbmdTd2l0Y2g6IG5nU3dpdGNoRGlyZWN0aXZlLAotICAgICAgICAgICAgbmdTd2l0Y2hXaGVu
OiBuZ1N3aXRjaFdoZW5EaXJlY3RpdmUsCi0gICAgICAgICAgICBuZ1N3aXRjaERlZmF1bHQ6IG5n
U3dpdGNoRGVmYXVsdERpcmVjdGl2ZSwKLSAgICAgICAgICAgIG5nT3B0aW9uczogbmdPcHRpb25z
RGlyZWN0aXZlLAotICAgICAgICAgICAgbmdWaWV3OiBuZ1ZpZXdEaXJlY3RpdmUsCi0gICAgICAg
ICAgICBuZ1RyYW5zY2x1ZGU6IG5nVHJhbnNjbHVkZURpcmVjdGl2ZSwKLSAgICAgICAgICAgIG5n
TW9kZWw6IG5nTW9kZWxEaXJlY3RpdmUsCi0gICAgICAgICAgICBuZ0xpc3Q6IG5nTGlzdERpcmVj
dGl2ZSwKLSAgICAgICAgICAgIG5nQ2hhbmdlOiBuZ0NoYW5nZURpcmVjdGl2ZSwKLSAgICAgICAg
ICAgIHJlcXVpcmVkOiByZXF1aXJlZERpcmVjdGl2ZSwKLSAgICAgICAgICAgIG5nUmVxdWlyZWQ6
IHJlcXVpcmVkRGlyZWN0aXZlLAotICAgICAgICAgICAgbmdWYWx1ZTogbmdWYWx1ZURpcmVjdGl2
ZQotICAgICAgICB9KS4KLSAgICAgICAgZGlyZWN0aXZlKG5nQXR0cmlidXRlQWxpYXNEaXJlY3Rp
dmVzKS4KLSAgICAgICAgZGlyZWN0aXZlKG5nRXZlbnREaXJlY3RpdmVzKTsKLSAgICAgICRwcm92
aWRlLnByb3ZpZGVyKHsKLSAgICAgICAgJGFuY2hvclNjcm9sbDogJEFuY2hvclNjcm9sbFByb3Zp
ZGVyLAotICAgICAgICAkYnJvd3NlcjogJEJyb3dzZXJQcm92aWRlciwKLSAgICAgICAgJGNhY2hl
RmFjdG9yeTogJENhY2hlRmFjdG9yeVByb3ZpZGVyLAotICAgICAgICAkY29udHJvbGxlcjogJENv
bnRyb2xsZXJQcm92aWRlciwKLSAgICAgICAgJGRvY3VtZW50OiAkRG9jdW1lbnRQcm92aWRlciwK
LSAgICAgICAgJGV4Y2VwdGlvbkhhbmRsZXI6ICRFeGNlcHRpb25IYW5kbGVyUHJvdmlkZXIsCi0g
ICAgICAgICRmaWx0ZXI6ICRGaWx0ZXJQcm92aWRlciwKLSAgICAgICAgJGludGVycG9sYXRlOiAk
SW50ZXJwb2xhdGVQcm92aWRlciwKLSAgICAgICAgJGh0dHA6ICRIdHRwUHJvdmlkZXIsCi0gICAg
ICAgICRodHRwQmFja2VuZDogJEh0dHBCYWNrZW5kUHJvdmlkZXIsCi0gICAgICAgICRsb2NhdGlv
bjogJExvY2F0aW9uUHJvdmlkZXIsCi0gICAgICAgICRsb2c6ICRMb2dQcm92aWRlciwKLSAgICAg
ICAgJHBhcnNlOiAkUGFyc2VQcm92aWRlciwKLSAgICAgICAgJHJvdXRlOiAkUm91dGVQcm92aWRl
ciwKLSAgICAgICAgJHJvdXRlUGFyYW1zOiAkUm91dGVQYXJhbXNQcm92aWRlciwKLSAgICAgICAg
JHJvb3RTY29wZTogJFJvb3RTY29wZVByb3ZpZGVyLAotICAgICAgICAkcTogJFFQcm92aWRlciwK
LSAgICAgICAgJHNuaWZmZXI6ICRTbmlmZmVyUHJvdmlkZXIsCi0gICAgICAgICR0ZW1wbGF0ZUNh
Y2hlOiAkVGVtcGxhdGVDYWNoZVByb3ZpZGVyLAotICAgICAgICAkdGltZW91dDogJFRpbWVvdXRQ
cm92aWRlciwKLSAgICAgICAgJHdpbmRvdzogJFdpbmRvd1Byb3ZpZGVyCi0gICAgICB9KTsKLSAg
ICB9Ci0gIF0pOwotfQotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vL0pR
TGl0ZQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0vKioKLSAqIEBuZ2Rv
YyBmdW5jdGlvbgotICogQG5hbWUgYW5ndWxhci5lbGVtZW50Ci0gKiBAZnVuY3Rpb24KLSAqCi0g
KiBAZGVzY3JpcHRpb24KLSAqIFdyYXBzIGEgcmF3IERPTSBlbGVtZW50IG9yIEhUTUwgc3RyaW5n
IGFzIGEgW2pRdWVyeV0oaHR0cDovL2pxdWVyeS5jb20pIGVsZW1lbnQuCi0gKiBgYW5ndWxhci5l
bGVtZW50YCBjYW4gYmUgZWl0aGVyIGFuIGFsaWFzIGZvciBbalF1ZXJ5XShodHRwOi8vYXBpLmpx
dWVyeS5jb20valF1ZXJ5LykgZnVuY3Rpb24sIGlmCi0gKiBqUXVlcnkgaXMgYXZhaWxhYmxlLCBv
ciBhIGZ1bmN0aW9uIHRoYXQgd3JhcHMgdGhlIGVsZW1lbnQgb3Igc3RyaW5nIGluIEFuZ3VsYXIn
cyBqUXVlcnkgbGl0ZQotICogaW1wbGVtZW50YXRpb24gKGNvbW1vbmx5IHJlZmVycmVkIHRvIGFz
IGpxTGl0ZSkuCi0gKgotICogUmVhbCBqUXVlcnkgYWx3YXlzIHRha2VzIHByZWNlZGVuY2Ugb3Zl
ciBqcUxpdGUsIHByb3ZpZGVkIGl0IHdhcyBsb2FkZWQgYmVmb3JlIGBET01Db250ZW50TG9hZGVk
YAotICogZXZlbnQgZmlyZWQuCi0gKgotICoganFMaXRlIGlzIGEgdGlueSwgQVBJLWNvbXBhdGli
bGUgc3Vic2V0IG9mIGpRdWVyeSB0aGF0IGFsbG93cwotICogQW5ndWxhciB0byBtYW5pcHVsYXRl
IHRoZSBET00uIGpxTGl0ZSBpbXBsZW1lbnRzIG9ubHkgdGhlIG1vc3QgY29tbW9ubHkgbmVlZGVk
IGZ1bmN0aW9uYWxpdHkKLSAqIHdpdGhpbiBhIHZlcnkgc21hbGwgZm9vdHByaW50LCBzbyBvbmx5
IGEgc3Vic2V0IG9mIHRoZSBqUXVlcnkgQVBJIC0gbWV0aG9kcywgYXJndW1lbnRzIGFuZAotICog
aW52b2NhdGlvbiBzdHlsZXMgLSBhcmUgc3VwcG9ydGVkLgotICoKLSAqIE5vdGU6IEFsbCBlbGVt
ZW50IHJlZmVyZW5jZXMgaW4gQW5ndWxhciBhcmUgYWx3YXlzIHdyYXBwZWQgd2l0aCBqUXVlcnkg
b3IganFMaXRlOyB0aGV5IGFyZSBuZXZlcgotICogcmF3IERPTSByZWZlcmVuY2VzLgotICoKLSAq
ICMjIEFuZ3VsYXIncyBqUXVlcnkgbGl0ZSBwcm92aWRlcyB0aGUgZm9sbG93aW5nIG1ldGhvZHM6
Ci0gKgotICogLSBbYWRkQ2xhc3MoKV0oaHR0cDovL2FwaS5qcXVlcnkuY29tL2FkZENsYXNzLykK
LSAqIC0gW2FmdGVyKCldKGh0dHA6Ly9hcGkuanF1ZXJ5LmNvbS9hZnRlci8pCi0gKiAtIFthcHBl
bmQoKV0oaHR0cDovL2FwaS5qcXVlcnkuY29tL2FwcGVuZC8pCi0gKiAtIFthdHRyKCldKGh0dHA6
Ly9hcGkuanF1ZXJ5LmNvbS9hdHRyLykKLSAqIC0gW2JpbmQoKV0oaHR0cDovL2FwaS5qcXVlcnku
Y29tL2JpbmQvKSAtIERvZXMgbm90IHN1cHBvcnQgbmFtZXNwYWNlcwotICogLSBbY2hpbGRyZW4o
KV0oaHR0cDovL2FwaS5qcXVlcnkuY29tL2NoaWxkcmVuLykgLSBEb2VzIG5vdCBzdXBwb3J0IHNl
bGVjdG9ycwotICogLSBbY2xvbmUoKV0oaHR0cDovL2FwaS5qcXVlcnkuY29tL2Nsb25lLykKLSAq
IC0gW2NvbnRlbnRzKCldKGh0dHA6Ly9hcGkuanF1ZXJ5LmNvbS9jb250ZW50cy8pCi0gKiAtIFtj
c3MoKV0oaHR0cDovL2FwaS5qcXVlcnkuY29tL2Nzcy8pCi0gKiAtIFtkYXRhKCldKGh0dHA6Ly9h
cGkuanF1ZXJ5LmNvbS9kYXRhLykKLSAqIC0gW2VxKCldKGh0dHA6Ly9hcGkuanF1ZXJ5LmNvbS9l
cS8pCi0gKiAtIFtmaW5kKCldKGh0dHA6Ly9hcGkuanF1ZXJ5LmNvbS9maW5kLykgLSBMaW1pdGVk
IHRvIGxvb2t1cHMgYnkgdGFnIG5hbWUKLSAqIC0gW2hhc0NsYXNzKCldKGh0dHA6Ly9hcGkuanF1
ZXJ5LmNvbS9oYXNDbGFzcy8pCi0gKiAtIFtodG1sKCldKGh0dHA6Ly9hcGkuanF1ZXJ5LmNvbS9o
dG1sLykKLSAqIC0gW25leHQoKV0oaHR0cDovL2FwaS5qcXVlcnkuY29tL25leHQvKSAtIERvZXMg
bm90IHN1cHBvcnQgc2VsZWN0b3JzCi0gKiAtIFtwYXJlbnQoKV0oaHR0cDovL2FwaS5qcXVlcnku
Y29tL3BhcmVudC8pIC0gRG9lcyBub3Qgc3VwcG9ydCBzZWxlY3RvcnMKLSAqIC0gW3ByZXBlbmQo
KV0oaHR0cDovL2FwaS5qcXVlcnkuY29tL3ByZXBlbmQvKQotICogLSBbcHJvcCgpXShodHRwOi8v
YXBpLmpxdWVyeS5jb20vcHJvcC8pCi0gKiAtIFtyZWFkeSgpXShodHRwOi8vYXBpLmpxdWVyeS5j
b20vcmVhZHkvKQotICogLSBbcmVtb3ZlKCldKGh0dHA6Ly9hcGkuanF1ZXJ5LmNvbS9yZW1vdmUv
KQotICogLSBbcmVtb3ZlQXR0cigpXShodHRwOi8vYXBpLmpxdWVyeS5jb20vcmVtb3ZlQXR0ci8p
Ci0gKiAtIFtyZW1vdmVDbGFzcygpXShodHRwOi8vYXBpLmpxdWVyeS5jb20vcmVtb3ZlQ2xhc3Mv
KQotICogLSBbcmVtb3ZlRGF0YSgpXShodHRwOi8vYXBpLmpxdWVyeS5jb20vcmVtb3ZlRGF0YS8p
Ci0gKiAtIFtyZXBsYWNlV2l0aCgpXShodHRwOi8vYXBpLmpxdWVyeS5jb20vcmVwbGFjZVdpdGgv
KQotICogLSBbdGV4dCgpXShodHRwOi8vYXBpLmpxdWVyeS5jb20vdGV4dC8pCi0gKiAtIFt0b2dn
bGVDbGFzcygpXShodHRwOi8vYXBpLmpxdWVyeS5jb20vdG9nZ2xlQ2xhc3MvKQotICogLSBbdHJp
Z2dlckhhbmRsZXIoKV0oaHR0cDovL2FwaS5qcXVlcnkuY29tL3RyaWdnZXJIYW5kbGVyLykgLSBE
b2Vzbid0IHBhc3MgbmF0aXZlIGV2ZW50IG9iamVjdHMgdG8gaGFuZGxlcnMuCi0gKiAtIFt1bmJp
bmQoKV0oaHR0cDovL2FwaS5qcXVlcnkuY29tL3VuYmluZC8pIC0gRG9lcyBub3Qgc3VwcG9ydCBu
YW1lc3BhY2VzCi0gKiAtIFt2YWwoKV0oaHR0cDovL2FwaS5qcXVlcnkuY29tL3ZhbC8pCi0gKiAt
IFt3cmFwKCldKGh0dHA6Ly9hcGkuanF1ZXJ5LmNvbS93cmFwLykKLSAqCi0gKiAjIyBJbiBhZGR0
aW9uIHRvIHRoZSBhYm92ZSwgQW5ndWxhciBwcm92aWRlcyBhZGRpdGlvbmFsIG1ldGhvZHMgdG8g
Ym90aCBqUXVlcnkgYW5kIGpRdWVyeSBsaXRlOgotICoKLSAqIC0gYGNvbnRyb2xsZXIobmFtZSlg
IC0gcmV0cmlldmVzIHRoZSBjb250cm9sbGVyIG9mIHRoZSBjdXJyZW50IGVsZW1lbnQgb3IgaXRz
IHBhcmVudC4gQnkgZGVmYXVsdAotICogICByZXRyaWV2ZXMgY29udHJvbGxlciBhc3NvY2lhdGVk
IHdpdGggdGhlIGBuZ0NvbnRyb2xsZXJgIGRpcmVjdGl2ZS4gSWYgYG5hbWVgIGlzIHByb3ZpZGVk
IGFzCi0gKiAgIGNhbWVsQ2FzZSBkaXJlY3RpdmUgbmFtZSwgdGhlbiB0aGUgY29udHJvbGxlciBm
b3IgdGhpcyBkaXJlY3RpdmUgd2lsbCBiZSByZXRyaWV2ZWQgKGUuZy4KLSAqICAgYCduZ01vZGVs
J2ApLgotICogLSBgaW5qZWN0b3IoKWAgLSByZXRyaWV2ZXMgdGhlIGluamVjdG9yIG9mIHRoZSBj
dXJyZW50IGVsZW1lbnQgb3IgaXRzIHBhcmVudC4KLSAqIC0gYHNjb3BlKClgIC0gcmV0cmlldmVz
IHRoZSB7QGxpbmsgYXBpL25nLiRyb290U2NvcGUuU2NvcGUgc2NvcGV9IG9mIHRoZSBjdXJyZW50
Ci0gKiAgIGVsZW1lbnQgb3IgaXRzIHBhcmVudC4KLSAqIC0gYGluaGVyaXRlZERhdGEoKWAgLSBz
YW1lIGFzIGBkYXRhKClgLCBidXQgd2Fsa3MgdXAgdGhlIERPTSB1bnRpbCBhIHZhbHVlIGlzIGZv
dW5kIG9yIHRoZSB0b3AKLSAqICAgcGFyZW50IGVsZW1lbnQgaXMgcmVhY2hlZC4KLSAqCi0gKiBA
cGFyYW0ge3N0cmluZ3xET01FbGVtZW50fSBlbGVtZW50IEhUTUwgc3RyaW5nIG9yIERPTUVsZW1l
bnQgdG8gYmUgd3JhcHBlZCBpbnRvIGpRdWVyeS4KLSAqIEByZXR1cm5zIHtPYmplY3R9IGpRdWVy
eSBvYmplY3QuCi0gKi8KLQotdmFyIGpxQ2FjaGUgPSBKUUxpdGUuY2FjaGUgPSB7fSwKLSAgICBq
cU5hbWUgPSBKUUxpdGUuZXhwYW5kbyA9ICduZy0nICsgbmV3IERhdGUoKS5nZXRUaW1lKCksCi0g
ICAganFJZCA9IDEsCi0gICAgYWRkRXZlbnRMaXN0ZW5lckZuID0gKHdpbmRvdy5kb2N1bWVudC5h
ZGRFdmVudExpc3RlbmVyCi0gICAgICA/IGZ1bmN0aW9uKGVsZW1lbnQsIHR5cGUsIGZuKSB7ZWxl
bWVudC5hZGRFdmVudExpc3RlbmVyKHR5cGUsIGZuLCBmYWxzZSk7fQotICAgICAgOiBmdW5jdGlv
bihlbGVtZW50LCB0eXBlLCBmbikge2VsZW1lbnQuYXR0YWNoRXZlbnQoJ29uJyArIHR5cGUsIGZu
KTt9KSwKLSAgICByZW1vdmVFdmVudExpc3RlbmVyRm4gPSAod2luZG93LmRvY3VtZW50LnJlbW92
ZUV2ZW50TGlzdGVuZXIKLSAgICAgID8gZnVuY3Rpb24oZWxlbWVudCwgdHlwZSwgZm4pIHtlbGVt
ZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwgZm4sIGZhbHNlKTsgfQotICAgICAgOiBmdW5j
dGlvbihlbGVtZW50LCB0eXBlLCBmbikge2VsZW1lbnQuZGV0YWNoRXZlbnQoJ29uJyArIHR5cGUs
IGZuKTsgfSk7Ci0KLWZ1bmN0aW9uIGpxTmV4dElkKCkgeyByZXR1cm4gKytqcUlkOyB9Ci0KLQot
dmFyIFNQRUNJQUxfQ0hBUlNfUkVHRVhQID0gLyhbXDpcLVxfXSsoLikpL2c7Ci12YXIgTU9aX0hB
Q0tfUkVHRVhQID0gL15tb3ooW0EtWl0pLzsKLQotLyoqCi0gKiBDb252ZXJ0cyBzbmFrZV9jYXNl
IHRvIGNhbWVsQ2FzZS4KLSAqIEFsc28gdGhlcmUgaXMgc3BlY2lhbCBjYXNlIGZvciBNb3ogcHJl
Zml4IHN0YXJ0aW5nIHdpdGggdXBwZXIgY2FzZSBsZXR0ZXIuCi0gKiBAcGFyYW0gbmFtZSBOYW1l
IHRvIG5vcm1hbGl6ZQotICovCi1mdW5jdGlvbiBjYW1lbENhc2UobmFtZSkgewotICByZXR1cm4g
bmFtZS4KLSAgICByZXBsYWNlKFNQRUNJQUxfQ0hBUlNfUkVHRVhQLCBmdW5jdGlvbihfLCBzZXBh
cmF0b3IsIGxldHRlciwgb2Zmc2V0KSB7Ci0gICAgICByZXR1cm4gb2Zmc2V0ID8gbGV0dGVyLnRv
VXBwZXJDYXNlKCkgOiBsZXR0ZXI7Ci0gICAgfSkuCi0gICAgcmVwbGFjZShNT1pfSEFDS19SRUdF
WFAsICdNb3okMScpOwotfQotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8KLS8vIGpRdWVyeSBtdXRhdGlvbiBwYXRjaAotLy8KLS8vICBJbiBjb25qdW5jdGlv
biB3aXRoIGJpbmRKUXVlcnkgaW50ZXJjZXB0cyBhbGwgalF1ZXJ5J3MgRE9NIGRlc3RydWN0aW9u
IGFwaXMgYW5kIGZpcmVzIGEKLS8vICRkZXN0cm95IGV2ZW50IG9uIGFsbCBET00gbm9kZXMgYmVp
bmcgcmVtb3ZlZC4KLS8vCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8KLQotZnVuY3Rpb24gSlFMaXRlUGF0Y2hKUXVlcnlSZW1vdmUobmFtZSwgZGlzcGF0Y2hU
aGlzKSB7Ci0gIHZhciBvcmlnaW5hbEpxRm4gPSBqUXVlcnkuZm5bbmFtZV07Ci0gIG9yaWdpbmFs
SnFGbiA9IG9yaWdpbmFsSnFGbi4kb3JpZ2luYWwgfHwgb3JpZ2luYWxKcUZuOwotICByZW1vdmVQ
YXRjaC4kb3JpZ2luYWwgPSBvcmlnaW5hbEpxRm47Ci0gIGpRdWVyeS5mbltuYW1lXSA9IHJlbW92
ZVBhdGNoOwotCi0gIGZ1bmN0aW9uIHJlbW92ZVBhdGNoKCkgewotICAgIHZhciBsaXN0ID0gW3Ro
aXNdLAotICAgICAgICBmaXJlRXZlbnQgPSBkaXNwYXRjaFRoaXMsCi0gICAgICAgIHNldCwgc2V0
SW5kZXgsIHNldExlbmd0aCwKLSAgICAgICAgZWxlbWVudCwgY2hpbGRJbmRleCwgY2hpbGRMZW5n
dGgsIGNoaWxkcmVuLAotICAgICAgICBmbnMsIGV2ZW50czsKLQotICAgIHdoaWxlKGxpc3QubGVu
Z3RoKSB7Ci0gICAgICBzZXQgPSBsaXN0LnNoaWZ0KCk7Ci0gICAgICBmb3Ioc2V0SW5kZXggPSAw
LCBzZXRMZW5ndGggPSBzZXQubGVuZ3RoOyBzZXRJbmRleCA8IHNldExlbmd0aDsgc2V0SW5kZXgr
KykgewotICAgICAgICBlbGVtZW50ID0ganFMaXRlKHNldFtzZXRJbmRleF0pOwotICAgICAgICBp
ZiAoZmlyZUV2ZW50KSB7Ci0gICAgICAgICAgZWxlbWVudC50cmlnZ2VySGFuZGxlcignJGRlc3Ry
b3knKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICBmaXJlRXZlbnQgPSAhZmlyZUV2ZW50
OwotICAgICAgICB9Ci0gICAgICAgIGZvcihjaGlsZEluZGV4ID0gMCwgY2hpbGRMZW5ndGggPSAo
Y2hpbGRyZW4gPSBlbGVtZW50LmNoaWxkcmVuKCkpLmxlbmd0aDsKLSAgICAgICAgICAgIGNoaWxk
SW5kZXggPCBjaGlsZExlbmd0aDsKLSAgICAgICAgICAgIGNoaWxkSW5kZXgrKykgewotICAgICAg
ICAgIGxpc3QucHVzaChqUXVlcnkoY2hpbGRyZW5bY2hpbGRJbmRleF0pKTsKLSAgICAgICAgfQot
ICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gb3JpZ2luYWxKcUZuLmFwcGx5KHRoaXMsIGFyZ3Vt
ZW50cyk7Ci0gIH0KLX0KLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vCi1mdW5jdGlvbiBKUUxpdGUoZWxlbWVudCkgewotICBpZiAoZWxlbWVudCBpbnN0YW5j
ZW9mIEpRTGl0ZSkgewotICAgIHJldHVybiBlbGVtZW50OwotICB9Ci0gIGlmICghKHRoaXMgaW5z
dGFuY2VvZiBKUUxpdGUpKSB7Ci0gICAgaWYgKGlzU3RyaW5nKGVsZW1lbnQpICYmIGVsZW1lbnQu
Y2hhckF0KDApICE9ICc8JykgewotICAgICAgdGhyb3cgRXJyb3IoJ3NlbGVjdG9ycyBub3QgaW1w
bGVtZW50ZWQnKTsKLSAgICB9Ci0gICAgcmV0dXJuIG5ldyBKUUxpdGUoZWxlbWVudCk7Ci0gIH0K
LQotICBpZiAoaXNTdHJpbmcoZWxlbWVudCkpIHsKLSAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnZGl2Jyk7Ci0gICAgLy8gUmVhZCBhYm91dCB0aGUgTm9TY29wZSBlbGVtZW50
cyBoZXJlOgotICAgIC8vIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9t
czUzMzg5NyhWUy44NSkuYXNweAotICAgIGRpdi5pbm5lckhUTUwgPSAnPGRpdj4mIzE2MDs8L2Rp
dj4nICsgZWxlbWVudDsgLy8gSUUgaW5zYW5pdHkgdG8gbWFrZSBOb1Njb3BlIGVsZW1lbnRzIHdv
cmshCi0gICAgZGl2LnJlbW92ZUNoaWxkKGRpdi5maXJzdENoaWxkKTsgLy8gcmVtb3ZlIHRoZSBz
dXBlcmZsdW91cyBkaXYKLSAgICBKUUxpdGVBZGROb2Rlcyh0aGlzLCBkaXYuY2hpbGROb2Rlcyk7
Ci0gICAgdGhpcy5yZW1vdmUoKTsgLy8gZGV0YWNoIHRoZSBlbGVtZW50cyBmcm9tIHRoZSB0ZW1w
b3JhcnkgRE9NIGRpdi4KLSAgfSBlbHNlIHsKLSAgICBKUUxpdGVBZGROb2Rlcyh0aGlzLCBlbGVt
ZW50KTsKLSAgfQotfQotCi1mdW5jdGlvbiBKUUxpdGVDbG9uZShlbGVtZW50KSB7Ci0gIHJldHVy
biBlbGVtZW50LmNsb25lTm9kZSh0cnVlKTsKLX0KLQotZnVuY3Rpb24gSlFMaXRlRGVhbG9jKGVs
ZW1lbnQpewotICBKUUxpdGVSZW1vdmVEYXRhKGVsZW1lbnQpOwotICBmb3IgKCB2YXIgaSA9IDAs
IGNoaWxkcmVuID0gZWxlbWVudC5jaGlsZE5vZGVzIHx8IFtdOyBpIDwgY2hpbGRyZW4ubGVuZ3Ro
OyBpKyspIHsKLSAgICBKUUxpdGVEZWFsb2MoY2hpbGRyZW5baV0pOwotICB9Ci19Ci0KLWZ1bmN0
aW9uIEpRTGl0ZVVuYmluZChlbGVtZW50LCB0eXBlLCBmbikgewotICB2YXIgZXZlbnRzID0gSlFM
aXRlRXhwYW5kb1N0b3JlKGVsZW1lbnQsICdldmVudHMnKSwKLSAgICAgIGhhbmRsZSA9IEpRTGl0
ZUV4cGFuZG9TdG9yZShlbGVtZW50LCAnaGFuZGxlJyk7Ci0KLSAgaWYgKCFoYW5kbGUpIHJldHVy
bjsgLy9ubyBsaXN0ZW5lcnMgcmVnaXN0ZXJlZAotCi0gIGlmIChpc1VuZGVmaW5lZCh0eXBlKSkg
ewotICAgIGZvckVhY2goZXZlbnRzLCBmdW5jdGlvbihldmVudEhhbmRsZXIsIHR5cGUpIHsKLSAg
ICAgIHJlbW92ZUV2ZW50TGlzdGVuZXJGbihlbGVtZW50LCB0eXBlLCBldmVudEhhbmRsZXIpOwot
ICAgICAgZGVsZXRlIGV2ZW50c1t0eXBlXTsKLSAgICB9KTsKLSAgfSBlbHNlIHsKLSAgICBpZiAo
aXNVbmRlZmluZWQoZm4pKSB7Ci0gICAgICByZW1vdmVFdmVudExpc3RlbmVyRm4oZWxlbWVudCwg
dHlwZSwgZXZlbnRzW3R5cGVdKTsKLSAgICAgIGRlbGV0ZSBldmVudHNbdHlwZV07Ci0gICAgfSBl
bHNlIHsKLSAgICAgIGFycmF5UmVtb3ZlKGV2ZW50c1t0eXBlXSwgZm4pOwotICAgIH0KLSAgfQot
fQotCi1mdW5jdGlvbiBKUUxpdGVSZW1vdmVEYXRhKGVsZW1lbnQpIHsKLSAgdmFyIGV4cGFuZG9J
ZCA9IGVsZW1lbnRbanFOYW1lXSwKLSAgICAgIGV4cGFuZG9TdG9yZSA9IGpxQ2FjaGVbZXhwYW5k
b0lkXTsKLQotICBpZiAoZXhwYW5kb1N0b3JlKSB7Ci0gICAgaWYgKGV4cGFuZG9TdG9yZS5oYW5k
bGUpIHsKLSAgICAgIGV4cGFuZG9TdG9yZS5ldmVudHMuJGRlc3Ryb3kgJiYgZXhwYW5kb1N0b3Jl
LmhhbmRsZSh7fSwgJyRkZXN0cm95Jyk7Ci0gICAgICBKUUxpdGVVbmJpbmQoZWxlbWVudCk7Ci0g
ICAgfQotICAgIGRlbGV0ZSBqcUNhY2hlW2V4cGFuZG9JZF07Ci0gICAgZWxlbWVudFtqcU5hbWVd
ID0gdW5kZWZpbmVkOyAvLyBpZSBkb2VzIG5vdCBhbGxvdyBkZWxldGlvbiBvZiBhdHRyaWJ1dGVz
IG9uIGVsZW1lbnRzLgotICB9Ci19Ci0KLWZ1bmN0aW9uIEpRTGl0ZUV4cGFuZG9TdG9yZShlbGVt
ZW50LCBrZXksIHZhbHVlKSB7Ci0gIHZhciBleHBhbmRvSWQgPSBlbGVtZW50W2pxTmFtZV0sCi0g
ICAgICBleHBhbmRvU3RvcmUgPSBqcUNhY2hlW2V4cGFuZG9JZCB8fCAtMV07Ci0KLSAgaWYgKGlz
RGVmaW5lZCh2YWx1ZSkpIHsKLSAgICBpZiAoIWV4cGFuZG9TdG9yZSkgewotICAgICAgZWxlbWVu
dFtqcU5hbWVdID0gZXhwYW5kb0lkID0ganFOZXh0SWQoKTsKLSAgICAgIGV4cGFuZG9TdG9yZSA9
IGpxQ2FjaGVbZXhwYW5kb0lkXSA9IHt9OwotICAgIH0KLSAgICBleHBhbmRvU3RvcmVba2V5XSA9
IHZhbHVlOwotICB9IGVsc2UgewotICAgIHJldHVybiBleHBhbmRvU3RvcmUgJiYgZXhwYW5kb1N0
b3JlW2tleV07Ci0gIH0KLX0KLQotZnVuY3Rpb24gSlFMaXRlRGF0YShlbGVtZW50LCBrZXksIHZh
bHVlKSB7Ci0gIHZhciBkYXRhID0gSlFMaXRlRXhwYW5kb1N0b3JlKGVsZW1lbnQsICdkYXRhJyks
Ci0gICAgICBpc1NldHRlciA9IGlzRGVmaW5lZCh2YWx1ZSksCi0gICAgICBrZXlEZWZpbmVkID0g
IWlzU2V0dGVyICYmIGlzRGVmaW5lZChrZXkpLAotICAgICAgaXNTaW1wbGVHZXR0ZXIgPSBrZXlE
ZWZpbmVkICYmICFpc09iamVjdChrZXkpOwotCi0gIGlmICghZGF0YSAmJiAhaXNTaW1wbGVHZXR0
ZXIpIHsKLSAgICBKUUxpdGVFeHBhbmRvU3RvcmUoZWxlbWVudCwgJ2RhdGEnLCBkYXRhID0ge30p
OwotICB9Ci0KLSAgaWYgKGlzU2V0dGVyKSB7Ci0gICAgZGF0YVtrZXldID0gdmFsdWU7Ci0gIH0g
ZWxzZSB7Ci0gICAgaWYgKGtleURlZmluZWQpIHsKLSAgICAgIGlmIChpc1NpbXBsZUdldHRlcikg
ewotICAgICAgICAvLyBkb24ndCBjcmVhdGUgZGF0YSBpbiB0aGlzIGNhc2UuCi0gICAgICAgIHJl
dHVybiBkYXRhICYmIGRhdGFba2V5XTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIGV4dGVuZChk
YXRhLCBrZXkpOwotICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICByZXR1cm4gZGF0YTsKLSAg
ICB9Ci0gIH0KLX0KLQotZnVuY3Rpb24gSlFMaXRlSGFzQ2xhc3MoZWxlbWVudCwgc2VsZWN0b3Ip
IHsKLSAgcmV0dXJuICgoIiAiICsgZWxlbWVudC5jbGFzc05hbWUgKyAiICIpLnJlcGxhY2UoL1tc
blx0XS9nLCAiICIpLgotICAgICAgaW5kZXhPZiggIiAiICsgc2VsZWN0b3IgKyAiICIgKSA+IC0x
KTsKLX0KLQotZnVuY3Rpb24gSlFMaXRlUmVtb3ZlQ2xhc3MoZWxlbWVudCwgY3NzQ2xhc3Nlcykg
ewotICBpZiAoY3NzQ2xhc3NlcykgewotICAgIGZvckVhY2goY3NzQ2xhc3Nlcy5zcGxpdCgnICcp
LCBmdW5jdGlvbihjc3NDbGFzcykgewotICAgICAgZWxlbWVudC5jbGFzc05hbWUgPSB0cmltKAot
ICAgICAgICAgICgiICIgKyBlbGVtZW50LmNsYXNzTmFtZSArICIgIikKLSAgICAgICAgICAucmVw
bGFjZSgvW1xuXHRdL2csICIgIikKLSAgICAgICAgICAucmVwbGFjZSgiICIgKyB0cmltKGNzc0Ns
YXNzKSArICIgIiwgIiAiKQotICAgICAgKTsKLSAgICB9KTsKLSAgfQotfQotCi1mdW5jdGlvbiBK
UUxpdGVBZGRDbGFzcyhlbGVtZW50LCBjc3NDbGFzc2VzKSB7Ci0gIGlmIChjc3NDbGFzc2VzKSB7
Ci0gICAgZm9yRWFjaChjc3NDbGFzc2VzLnNwbGl0KCcgJyksIGZ1bmN0aW9uKGNzc0NsYXNzKSB7
Ci0gICAgICBpZiAoIUpRTGl0ZUhhc0NsYXNzKGVsZW1lbnQsIGNzc0NsYXNzKSkgewotICAgICAg
ICBlbGVtZW50LmNsYXNzTmFtZSA9IHRyaW0oZWxlbWVudC5jbGFzc05hbWUgKyAnICcgKyB0cmlt
KGNzc0NsYXNzKSk7Ci0gICAgICB9Ci0gICAgfSk7Ci0gIH0KLX0KLQotZnVuY3Rpb24gSlFMaXRl
QWRkTm9kZXMocm9vdCwgZWxlbWVudHMpIHsKLSAgaWYgKGVsZW1lbnRzKSB7Ci0gICAgZWxlbWVu
dHMgPSAoIWVsZW1lbnRzLm5vZGVOYW1lICYmIGlzRGVmaW5lZChlbGVtZW50cy5sZW5ndGgpICYm
ICFpc1dpbmRvdyhlbGVtZW50cykpCi0gICAgICA/IGVsZW1lbnRzCi0gICAgICA6IFsgZWxlbWVu
dHMgXTsKLSAgICBmb3IodmFyIGk9MDsgaSA8IGVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7Ci0gICAg
ICByb290LnB1c2goZWxlbWVudHNbaV0pOwotICAgIH0KLSAgfQotfQotCi1mdW5jdGlvbiBKUUxp
dGVDb250cm9sbGVyKGVsZW1lbnQsIG5hbWUpIHsKLSAgcmV0dXJuIEpRTGl0ZUluaGVyaXRlZERh
dGEoZWxlbWVudCwgJyQnICsgKG5hbWUgfHwgJ25nQ29udHJvbGxlcicgKSArICdDb250cm9sbGVy
Jyk7Ci19Ci0KLWZ1bmN0aW9uIEpRTGl0ZUluaGVyaXRlZERhdGEoZWxlbWVudCwgbmFtZSwgdmFs
dWUpIHsKLSAgZWxlbWVudCA9IGpxTGl0ZShlbGVtZW50KTsKLQotICAvLyBpZiBlbGVtZW50IGlz
IHRoZSBkb2N1bWVudCBvYmplY3Qgd29yayB3aXRoIHRoZSBodG1sIGVsZW1lbnQgaW5zdGVhZAot
ICAvLyB0aGlzIG1ha2VzICQoZG9jdW1lbnQpLnNjb3BlKCkgcG9zc2libGUKLSAgaWYoZWxlbWVu
dFswXS5ub2RlVHlwZSA9PSA5KSB7Ci0gICAgZWxlbWVudCA9IGVsZW1lbnQuZmluZCgnaHRtbCcp
OwotICB9Ci0KLSAgd2hpbGUgKGVsZW1lbnQubGVuZ3RoKSB7Ci0gICAgaWYgKHZhbHVlID0gZWxl
bWVudC5kYXRhKG5hbWUpKSByZXR1cm4gdmFsdWU7Ci0gICAgZWxlbWVudCA9IGVsZW1lbnQucGFy
ZW50KCk7Ci0gIH0KLX0KLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vCi0vLyBGdW5jdGlvbnMgd2hpY2ggYXJlIGRlY2xhcmVkIGRpcmVjdGx5LgotLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi12YXIgSlFMaXRlUHJvdG90eXBlID0g
SlFMaXRlLnByb3RvdHlwZSA9IHsKLSAgcmVhZHk6IGZ1bmN0aW9uKGZuKSB7Ci0gICAgdmFyIGZp
cmVkID0gZmFsc2U7Ci0KLSAgICBmdW5jdGlvbiB0cmlnZ2VyKCkgewotICAgICAgaWYgKGZpcmVk
KSByZXR1cm47Ci0gICAgICBmaXJlZCA9IHRydWU7Ci0gICAgICBmbigpOwotICAgIH0KLQotICAg
IHRoaXMuYmluZCgnRE9NQ29udGVudExvYWRlZCcsIHRyaWdnZXIpOyAvLyB3b3JrcyBmb3IgbW9k
ZXJuIGJyb3dzZXJzIGFuZCBJRTkKLSAgICAvLyB3ZSBjYW4gbm90IHVzZSBqcUxpdGUgc2luY2Ug
d2UgYXJlIG5vdCBkb25lIGxvYWRpbmcgYW5kIGpRdWVyeSBjb3VsZCBiZSBsb2FkZWQgbGF0ZXIu
Ci0gICAgSlFMaXRlKHdpbmRvdykuYmluZCgnbG9hZCcsIHRyaWdnZXIpOyAvLyBmYWxsYmFjayB0
byB3aW5kb3cub25sb2FkIGZvciBvdGhlcnMKLSAgfSwKLSAgdG9TdHJpbmc6IGZ1bmN0aW9uKCkg
ewotICAgIHZhciB2YWx1ZSA9IFtdOwotICAgIGZvckVhY2godGhpcywgZnVuY3Rpb24oZSl7IHZh
bHVlLnB1c2goJycgKyBlKTt9KTsKLSAgICByZXR1cm4gJ1snICsgdmFsdWUuam9pbignLCAnKSAr
ICddJzsKLSAgfSwKLQotICBlcTogZnVuY3Rpb24oaW5kZXgpIHsKLSAgICAgIHJldHVybiAoaW5k
ZXggPj0gMCkgPyBqcUxpdGUodGhpc1tpbmRleF0pIDoganFMaXRlKHRoaXNbdGhpcy5sZW5ndGgg
KyBpbmRleF0pOwotICB9LAotCi0gIGxlbmd0aDogMCwKLSAgcHVzaDogcHVzaCwKLSAgc29ydDog
W10uc29ydCwKLSAgc3BsaWNlOiBbXS5zcGxpY2UKLX07Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gRnVuY3Rpb25zIGl0ZXJhdGluZyBnZXR0ZXIvc2V0
dGVycy4KLS8vIHRoZXNlIGZ1bmN0aW9ucyByZXR1cm4gc2VsZiBvbiBzZXR0ZXIgYW5kCi0vLyB2
YWx1ZSBvbiBnZXQuCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8K
LXZhciBCT09MRUFOX0FUVFIgPSB7fTsKLWZvckVhY2goJ211bHRpcGxlLHNlbGVjdGVkLGNoZWNr
ZWQsZGlzYWJsZWQscmVhZE9ubHkscmVxdWlyZWQnLnNwbGl0KCcsJyksIGZ1bmN0aW9uKHZhbHVl
KSB7Ci0gIEJPT0xFQU5fQVRUUltsb3dlcmNhc2UodmFsdWUpXSA9IHZhbHVlOwotfSk7Ci12YXIg
Qk9PTEVBTl9FTEVNRU5UUyA9IHt9OwotZm9yRWFjaCgnaW5wdXQsc2VsZWN0LG9wdGlvbix0ZXh0
YXJlYSxidXR0b24sZm9ybScuc3BsaXQoJywnKSwgZnVuY3Rpb24odmFsdWUpIHsKLSAgQk9PTEVB
Tl9FTEVNRU5UU1t1cHBlcmNhc2UodmFsdWUpXSA9IHRydWU7Ci19KTsKLQotZnVuY3Rpb24gZ2V0
Qm9vbGVhbkF0dHJOYW1lKGVsZW1lbnQsIG5hbWUpIHsKLSAgLy8gY2hlY2sgZG9tIGxhc3Qgc2lu
Y2Ugd2Ugd2lsbCBtb3N0IGxpa2VseSBmYWlsIG9uIG5hbWUKLSAgdmFyIGJvb2xlYW5BdHRyID0g
Qk9PTEVBTl9BVFRSW25hbWUudG9Mb3dlckNhc2UoKV07Ci0KLSAgLy8gYm9vbGVhbkF0dHIgaXMg
aGVyZSB0d2ljZSB0byBtaW5pbWl6ZSBET00gYWNjZXNzCi0gIHJldHVybiBib29sZWFuQXR0ciAm
JiBCT09MRUFOX0VMRU1FTlRTW2VsZW1lbnQubm9kZU5hbWVdICYmIGJvb2xlYW5BdHRyOwotfQot
Ci1mb3JFYWNoKHsKLSAgZGF0YTogSlFMaXRlRGF0YSwKLSAgaW5oZXJpdGVkRGF0YTogSlFMaXRl
SW5oZXJpdGVkRGF0YSwKLQotICBzY29wZTogZnVuY3Rpb24oZWxlbWVudCkgewotICAgIHJldHVy
biBKUUxpdGVJbmhlcml0ZWREYXRhKGVsZW1lbnQsICckc2NvcGUnKTsKLSAgfSwKLQotICBjb250
cm9sbGVyOiBKUUxpdGVDb250cm9sbGVyICwKLQotICBpbmplY3RvcjogZnVuY3Rpb24oZWxlbWVu
dCkgewotICAgIHJldHVybiBKUUxpdGVJbmhlcml0ZWREYXRhKGVsZW1lbnQsICckaW5qZWN0b3In
KTsKLSAgfSwKLQotICByZW1vdmVBdHRyOiBmdW5jdGlvbihlbGVtZW50LG5hbWUpIHsKLSAgICBl
bGVtZW50LnJlbW92ZUF0dHJpYnV0ZShuYW1lKTsKLSAgfSwKLQotICBoYXNDbGFzczogSlFMaXRl
SGFzQ2xhc3MsCi0KLSAgY3NzOiBmdW5jdGlvbihlbGVtZW50LCBuYW1lLCB2YWx1ZSkgewotICAg
IG5hbWUgPSBjYW1lbENhc2UobmFtZSk7Ci0KLSAgICBpZiAoaXNEZWZpbmVkKHZhbHVlKSkgewot
ICAgICAgZWxlbWVudC5zdHlsZVtuYW1lXSA9IHZhbHVlOwotICAgIH0gZWxzZSB7Ci0gICAgICB2
YXIgdmFsOwotCi0gICAgICBpZiAobXNpZSA8PSA4KSB7Ci0gICAgICAgIC8vIHRoaXMgaXMgc29t
ZSBJRSBzcGVjaWZpYyB3ZWlyZG5lc3MgdGhhdCBqUXVlcnkgMS42LjQgZG9lcyBub3Qgc3VyZSB3
aHkKLSAgICAgICAgdmFsID0gZWxlbWVudC5jdXJyZW50U3R5bGUgJiYgZWxlbWVudC5jdXJyZW50
U3R5bGVbbmFtZV07Ci0gICAgICAgIGlmICh2YWwgPT09ICcnKSB2YWwgPSAnYXV0byc7Ci0gICAg
ICB9Ci0KLSAgICAgIHZhbCA9IHZhbCB8fCBlbGVtZW50LnN0eWxlW25hbWVdOwotCi0gICAgICBp
ZiAobXNpZSA8PSA4KSB7Ci0gICAgICAgIC8vIGpxdWVyeSB3ZWlyZG5lc3MgOi0vCi0gICAgICAg
IHZhbCA9ICh2YWwgPT09ICcnKSA/IHVuZGVmaW5lZCA6IHZhbDsKLSAgICAgIH0KLQotICAgICAg
cmV0dXJuICB2YWw7Ci0gICAgfQotICB9LAotCi0gIGF0dHI6IGZ1bmN0aW9uKGVsZW1lbnQsIG5h
bWUsIHZhbHVlKXsKLSAgICB2YXIgbG93ZXJjYXNlZE5hbWUgPSBsb3dlcmNhc2UobmFtZSk7Ci0g
ICAgaWYgKEJPT0xFQU5fQVRUUltsb3dlcmNhc2VkTmFtZV0pIHsKLSAgICAgIGlmIChpc0RlZmlu
ZWQodmFsdWUpKSB7Ci0gICAgICAgIGlmICghIXZhbHVlKSB7Ci0gICAgICAgICAgZWxlbWVudFtu
YW1lXSA9IHRydWU7Ci0gICAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUobmFtZSwgbG93ZXJj
YXNlZE5hbWUpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIGVsZW1lbnRbbmFtZV0gPSBm
YWxzZTsKLSAgICAgICAgICBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShsb3dlcmNhc2VkTmFtZSk7
Ci0gICAgICAgIH0KLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIHJldHVybiAoZWxlbWVudFtuYW1l
XSB8fAotICAgICAgICAgICAgICAgICAoZWxlbWVudC5hdHRyaWJ1dGVzLmdldE5hbWVkSXRlbShu
YW1lKXx8IG5vb3ApLnNwZWNpZmllZCkKLSAgICAgICAgICAgICAgID8gbG93ZXJjYXNlZE5hbWUK
LSAgICAgICAgICAgICAgIDogdW5kZWZpbmVkOwotICAgICAgfQotICAgIH0gZWxzZSBpZiAoaXNE
ZWZpbmVkKHZhbHVlKSkgewotICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUp
OwotICAgIH0gZWxzZSBpZiAoZWxlbWVudC5nZXRBdHRyaWJ1dGUpIHsKLSAgICAgIC8vIHRoZSBl
eHRyYSBhcmd1bWVudCAiMiIgaXMgdG8gZ2V0IHRoZSByaWdodCB0aGluZyBmb3IgYS5ocmVmIGlu
IElFLCBzZWUgalF1ZXJ5IGNvZGUKLSAgICAgIC8vIHNvbWUgZWxlbWVudHMgKGUuZy4gRG9jdW1l
bnQpIGRvbid0IGhhdmUgZ2V0IGF0dHJpYnV0ZSwgc28gcmV0dXJuIHVuZGVmaW5lZAotICAgICAg
dmFyIHJldCA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKG5hbWUsIDIpOwotICAgICAgLy8gbm9ybWFs
aXplIG5vbi1leGlzdGluZyBhdHRyaWJ1dGVzIHRvIHVuZGVmaW5lZCAoYXMgalF1ZXJ5KQotICAg
ICAgcmV0dXJuIHJldCA9PT0gbnVsbCA/IHVuZGVmaW5lZCA6IHJldDsKLSAgICB9Ci0gIH0sCi0K
LSAgcHJvcDogZnVuY3Rpb24oZWxlbWVudCwgbmFtZSwgdmFsdWUpIHsKLSAgICBpZiAoaXNEZWZp
bmVkKHZhbHVlKSkgewotICAgICAgZWxlbWVudFtuYW1lXSA9IHZhbHVlOwotICAgIH0gZWxzZSB7
Ci0gICAgICByZXR1cm4gZWxlbWVudFtuYW1lXTsKLSAgICB9Ci0gIH0sCi0KLSAgdGV4dDogZXh0
ZW5kKChtc2llIDwgOSkKLSAgICAgID8gZnVuY3Rpb24oZWxlbWVudCwgdmFsdWUpIHsKLSAgICAg
ICAgaWYgKGVsZW1lbnQubm9kZVR5cGUgPT0gMSAvKiogRWxlbWVudCAqLykgewotICAgICAgICAg
IGlmIChpc1VuZGVmaW5lZCh2YWx1ZSkpCi0gICAgICAgICAgICByZXR1cm4gZWxlbWVudC5pbm5l
clRleHQ7Ci0gICAgICAgICAgZWxlbWVudC5pbm5lclRleHQgPSB2YWx1ZTsKLSAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICBpZiAoaXNVbmRlZmluZWQodmFsdWUpKQotICAgICAgICAgICAgcmV0
dXJuIGVsZW1lbnQubm9kZVZhbHVlOwotICAgICAgICAgIGVsZW1lbnQubm9kZVZhbHVlID0gdmFs
dWU7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIDogZnVuY3Rpb24oZWxlbWVudCwgdmFsdWUp
IHsKLSAgICAgICAgaWYgKGlzVW5kZWZpbmVkKHZhbHVlKSkgewotICAgICAgICAgIHJldHVybiBl
bGVtZW50LnRleHRDb250ZW50OwotICAgICAgICB9Ci0gICAgICAgIGVsZW1lbnQudGV4dENvbnRl
bnQgPSB2YWx1ZTsKLSAgICAgIH0sIHskZHY6Jyd9KSwKLQotICB2YWw6IGZ1bmN0aW9uKGVsZW1l
bnQsIHZhbHVlKSB7Ci0gICAgaWYgKGlzVW5kZWZpbmVkKHZhbHVlKSkgewotICAgICAgcmV0dXJu
IGVsZW1lbnQudmFsdWU7Ci0gICAgfQotICAgIGVsZW1lbnQudmFsdWUgPSB2YWx1ZTsKLSAgfSwK
LQotICBodG1sOiBmdW5jdGlvbihlbGVtZW50LCB2YWx1ZSkgewotICAgIGlmIChpc1VuZGVmaW5l
ZCh2YWx1ZSkpIHsKLSAgICAgIHJldHVybiBlbGVtZW50LmlubmVySFRNTDsKLSAgICB9Ci0gICAg
Zm9yICh2YXIgaSA9IDAsIGNoaWxkTm9kZXMgPSBlbGVtZW50LmNoaWxkTm9kZXM7IGkgPCBjaGls
ZE5vZGVzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICBKUUxpdGVEZWFsb2MoY2hpbGROb2Rlc1tpXSk7
Ci0gICAgfQotICAgIGVsZW1lbnQuaW5uZXJIVE1MID0gdmFsdWU7Ci0gIH0KLX0sIGZ1bmN0aW9u
KGZuLCBuYW1lKXsKLSAgLyoqCi0gICAqIFByb3BlcnRpZXM6IHdyaXRlcyByZXR1cm4gc2VsZWN0
aW9uLCByZWFkcyByZXR1cm4gZmlyc3QgdmFsdWUKLSAgICovCi0gIEpRTGl0ZS5wcm90b3R5cGVb
bmFtZV0gPSBmdW5jdGlvbihhcmcxLCBhcmcyKSB7Ci0gICAgdmFyIGksIGtleTsKLQotICAgIC8v
IEpRTGl0ZUhhc0NsYXNzIGhhcyBvbmx5IHR3byBhcmd1bWVudHMsIGJ1dCBpcyBhIGdldHRlci1v
bmx5IGZuLCBzbyB3ZSBuZWVkIHRvIHNwZWNpYWwtY2FzZSBpdAotICAgIC8vIGluIGEgd2F5IHRo
YXQgc3Vydml2ZXMgbWluaWZpY2F0aW9uLgotICAgIGlmICgoKGZuLmxlbmd0aCA9PSAyICYmIChm
biAhPT0gSlFMaXRlSGFzQ2xhc3MgJiYgZm4gIT09IEpRTGl0ZUNvbnRyb2xsZXIpKSA/IGFyZzEg
OiBhcmcyKSA9PT0gdW5kZWZpbmVkKSB7Ci0gICAgICBpZiAoaXNPYmplY3QoYXJnMSkpIHsKLQot
ICAgICAgICAvLyB3ZSBhcmUgYSB3cml0ZSwgYnV0IHRoZSBvYmplY3QgcHJvcGVydGllcyBhcmUg
dGhlIGtleS92YWx1ZXMKLSAgICAgICAgZm9yKGk9MDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHsK
LSAgICAgICAgICBpZiAoZm4gPT09IEpRTGl0ZURhdGEpIHsKLSAgICAgICAgICAgIC8vIGRhdGEo
KSB0YWtlcyB0aGUgd2hvbGUgb2JqZWN0IGluIGpRdWVyeQotICAgICAgICAgICAgZm4odGhpc1tp
XSwgYXJnMSk7Ci0gICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGZvciAoa2V5IGluIGFy
ZzEpIHsKLSAgICAgICAgICAgICAgZm4odGhpc1tpXSwga2V5LCBhcmcxW2tleV0pOwotICAgICAg
ICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICAvLyByZXR1cm4gc2VsZiBm
b3IgY2hhaW5pbmcKLSAgICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgICB9IGVsc2UgewotICAgICAg
ICAvLyB3ZSBhcmUgYSByZWFkLCBzbyByZWFkIHRoZSBmaXJzdCBjaGlsZC4KLSAgICAgICAgaWYg
KHRoaXMubGVuZ3RoKQotICAgICAgICAgIHJldHVybiBmbih0aGlzWzBdLCBhcmcxLCBhcmcyKTsK
LSAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgLy8gd2UgYXJlIGEgd3JpdGUsIHNvIGFwcGx5
IHRvIGFsbCBjaGlsZHJlbgotICAgICAgZm9yKGk9MDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHsK
LSAgICAgICAgZm4odGhpc1tpXSwgYXJnMSwgYXJnMik7Ci0gICAgICB9Ci0gICAgICAvLyByZXR1
cm4gc2VsZiBmb3IgY2hhaW5pbmcKLSAgICAgIHJldHVybiB0aGlzOwotICAgIH0KLSAgICByZXR1
cm4gZm4uJGR2OwotICB9OwotfSk7Ci0KLWZ1bmN0aW9uIGNyZWF0ZUV2ZW50SGFuZGxlcihlbGVt
ZW50LCBldmVudHMpIHsKLSAgdmFyIGV2ZW50SGFuZGxlciA9IGZ1bmN0aW9uIChldmVudCwgdHlw
ZSkgewotICAgIGlmICghZXZlbnQucHJldmVudERlZmF1bHQpIHsKLSAgICAgIGV2ZW50LnByZXZl
bnREZWZhdWx0ID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIGV2ZW50LnJldHVyblZhbHVlID0gZmFs
c2U7IC8vaWUKLSAgICAgIH07Ci0gICAgfQotCi0gICAgaWYgKCFldmVudC5zdG9wUHJvcGFnYXRp
b24pIHsKLSAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbiA9IGZ1bmN0aW9uKCkgewotICAgICAg
ICBldmVudC5jYW5jZWxCdWJibGUgPSB0cnVlOyAvL2llCi0gICAgICB9OwotICAgIH0KLQotICAg
IGlmICghZXZlbnQudGFyZ2V0KSB7Ci0gICAgICBldmVudC50YXJnZXQgPSBldmVudC5zcmNFbGVt
ZW50IHx8IGRvY3VtZW50OwotICAgIH0KLQotICAgIGlmIChpc1VuZGVmaW5lZChldmVudC5kZWZh
dWx0UHJldmVudGVkKSkgewotICAgICAgdmFyIHByZXZlbnQgPSBldmVudC5wcmV2ZW50RGVmYXVs
dDsKLSAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0ID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIGV2
ZW50LmRlZmF1bHRQcmV2ZW50ZWQgPSB0cnVlOwotICAgICAgICBwcmV2ZW50LmNhbGwoZXZlbnQp
OwotICAgICAgfTsKLSAgICAgIGV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQgPSBmYWxzZTsKLSAgICB9
Ci0KLSAgICBldmVudC5pc0RlZmF1bHRQcmV2ZW50ZWQgPSBmdW5jdGlvbigpIHsKLSAgICAgIHJl
dHVybiBldmVudC5kZWZhdWx0UHJldmVudGVkOwotICAgIH07Ci0KLSAgICBmb3JFYWNoKGV2ZW50
c1t0eXBlIHx8IGV2ZW50LnR5cGVdLCBmdW5jdGlvbihmbikgewotICAgICAgZm4uY2FsbChlbGVt
ZW50LCBldmVudCk7Ci0gICAgfSk7Ci0KLSAgICAvLyBSZW1vdmUgbW9ua2V5LXBhdGNoZWQgbWV0
aG9kcyAoSUUpLAotICAgIC8vIGFzIHRoZXkgd291bGQgY2F1c2UgbWVtb3J5IGxlYWtzIGluIElF
OC4KLSAgICBpZiAobXNpZSA8PSA4KSB7Ci0gICAgICAvLyBJRTcvOCBkb2VzIG5vdCBhbGxvdyB0
byBkZWxldGUgcHJvcGVydHkgb24gbmF0aXZlIG9iamVjdAotICAgICAgZXZlbnQucHJldmVudERl
ZmF1bHQgPSBudWxsOwotICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uID0gbnVsbDsKLSAgICAg
IGV2ZW50LmlzRGVmYXVsdFByZXZlbnRlZCA9IG51bGw7Ci0gICAgfSBlbHNlIHsKLSAgICAgIC8v
IEl0IHNob3VsZG4ndCBhZmZlY3Qgbm9ybWFsIGJyb3dzZXJzIChuYXRpdmUgbWV0aG9kcyBhcmUg
ZGVmaW5lZCBvbiBwcm90b3R5cGUpLgotICAgICAgZGVsZXRlIGV2ZW50LnByZXZlbnREZWZhdWx0
OwotICAgICAgZGVsZXRlIGV2ZW50LnN0b3BQcm9wYWdhdGlvbjsKLSAgICAgIGRlbGV0ZSBldmVu
dC5pc0RlZmF1bHRQcmV2ZW50ZWQ7Ci0gICAgfQotICB9OwotICBldmVudEhhbmRsZXIuZWxlbSA9
IGVsZW1lbnQ7Ci0gIHJldHVybiBldmVudEhhbmRsZXI7Ci19Ci0KLS8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gRnVuY3Rpb25zIGl0ZXJhdGluZyB0cmF2ZXJz
YWwuCi0vLyBUaGVzZSBmdW5jdGlvbnMgY2hhaW4gcmVzdWx0cyBpbnRvIGEgc2luZ2xlCi0vLyBz
ZWxlY3Rvci4KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotZm9y
RWFjaCh7Ci0gIHJlbW92ZURhdGE6IEpRTGl0ZVJlbW92ZURhdGEsCi0KLSAgZGVhbG9jOiBKUUxp
dGVEZWFsb2MsCi0KLSAgYmluZDogZnVuY3Rpb24gYmluZEZuKGVsZW1lbnQsIHR5cGUsIGZuKXsK
LSAgICB2YXIgZXZlbnRzID0gSlFMaXRlRXhwYW5kb1N0b3JlKGVsZW1lbnQsICdldmVudHMnKSwK
LSAgICAgICAgaGFuZGxlID0gSlFMaXRlRXhwYW5kb1N0b3JlKGVsZW1lbnQsICdoYW5kbGUnKTsK
LQotICAgIGlmICghZXZlbnRzKSBKUUxpdGVFeHBhbmRvU3RvcmUoZWxlbWVudCwgJ2V2ZW50cycs
IGV2ZW50cyA9IHt9KTsKLSAgICBpZiAoIWhhbmRsZSkgSlFMaXRlRXhwYW5kb1N0b3JlKGVsZW1l
bnQsICdoYW5kbGUnLCBoYW5kbGUgPSBjcmVhdGVFdmVudEhhbmRsZXIoZWxlbWVudCwgZXZlbnRz
KSk7Ci0KLSAgICBmb3JFYWNoKHR5cGUuc3BsaXQoJyAnKSwgZnVuY3Rpb24odHlwZSl7Ci0gICAg
ICB2YXIgZXZlbnRGbnMgPSBldmVudHNbdHlwZV07Ci0KLSAgICAgIGlmICghZXZlbnRGbnMpIHsK
LSAgICAgICAgaWYgKHR5cGUgPT0gJ21vdXNlZW50ZXInIHx8IHR5cGUgPT0gJ21vdXNlbGVhdmUn
KSB7Ci0gICAgICAgICAgdmFyIGNvbnRhaW5zID0gZG9jdW1lbnQuYm9keS5jb250YWlucyB8fCBk
b2N1bWVudC5ib2R5LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uID8KLSAgICAgICAgICBmdW5jdGlv
biggYSwgYiApIHsKLSAgICAgICAgICAgIHZhciBhZG93biA9IGEubm9kZVR5cGUgPT09IDkgPyBh
LmRvY3VtZW50RWxlbWVudCA6IGEsCi0gICAgICAgICAgICBidXAgPSBiICYmIGIucGFyZW50Tm9k
ZTsKLSAgICAgICAgICAgIHJldHVybiBhID09PSBidXAgfHwgISEoIGJ1cCAmJiBidXAubm9kZVR5
cGUgPT09IDEgJiYgKAotICAgICAgICAgICAgICBhZG93bi5jb250YWlucyA/Ci0gICAgICAgICAg
ICAgIGFkb3duLmNvbnRhaW5zKCBidXAgKSA6Ci0gICAgICAgICAgICAgIGEuY29tcGFyZURvY3Vt
ZW50UG9zaXRpb24gJiYgYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiggYnVwICkgJiAxNgotICAg
ICAgICAgICAgICApKTsKLSAgICAgICAgICAgIH0gOgotICAgICAgICAgICAgZnVuY3Rpb24oIGEs
IGIgKSB7Ci0gICAgICAgICAgICAgIGlmICggYiApIHsKLSAgICAgICAgICAgICAgICB3aGlsZSAo
IChiID0gYi5wYXJlbnROb2RlKSApIHsKLSAgICAgICAgICAgICAgICAgIGlmICggYiA9PT0gYSAp
IHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgICAgIH07Ci0KLSAgICAgICAgICBldmVudHNbdHlwZV0gPSBbXTsK
LQotICAgICAgICAgIC8vIFJlZmVyIHRvIGpRdWVyeSdzIGltcGxlbWVudGF0aW9uIG9mIG1vdXNl
ZW50ZXIgJiBtb3VzZWxlYXZlCi0gICAgICAgICAgLy8gUmVhZCBhYm91dCBtb3VzZWVudGVyIGFu
ZCBtb3VzZWxlYXZlOgotICAgICAgICAgIC8vIGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvanMv
ZXZlbnRzX21vdXNlLmh0bWwjbGluazgKLSAgICAgICAgICB2YXIgZXZlbnRtYXAgPSB7IG1vdXNl
bGVhdmUgOiAibW91c2VvdXQiLCBtb3VzZWVudGVyIDogIm1vdXNlb3ZlciJ9ICAgICAgICAgIAot
ICAgICAgICAgIGJpbmRGbihlbGVtZW50LCBldmVudG1hcFt0eXBlXSwgZnVuY3Rpb24oZXZlbnQp
IHsKLSAgICAgICAgICAgIHZhciByZXQsIHRhcmdldCA9IHRoaXMsIHJlbGF0ZWQgPSBldmVudC5y
ZWxhdGVkVGFyZ2V0OwotICAgICAgICAgICAgLy8gRm9yIG1vdXNlbnRlci9sZWF2ZSBjYWxsIHRo
ZSBoYW5kbGVyIGlmIHJlbGF0ZWQgaXMgb3V0c2lkZSB0aGUgdGFyZ2V0LgotICAgICAgICAgICAg
Ly8gTkI6IE5vIHJlbGF0ZWRUYXJnZXQgaWYgdGhlIG1vdXNlIGxlZnQvZW50ZXJlZCB0aGUgYnJv
d3NlciB3aW5kb3cKLSAgICAgICAgICAgIGlmICggIXJlbGF0ZWQgfHwgKHJlbGF0ZWQgIT09IHRh
cmdldCAmJiAhY29udGFpbnModGFyZ2V0LCByZWxhdGVkKSkgKXsKLSAgICAgICAgICAgICAgaGFu
ZGxlKGV2ZW50LCB0eXBlKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgIH0pOwotCi0gICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgYWRkRXZlbnRMaXN0ZW5lckZuKGVsZW1lbnQsIHR5cGUs
IGhhbmRsZSk7Ci0gICAgICAgICAgZXZlbnRzW3R5cGVdID0gW107Ci0gICAgICAgIH0KLSAgICAg
ICAgZXZlbnRGbnMgPSBldmVudHNbdHlwZV0KLSAgICAgIH0KLSAgICAgIGV2ZW50Rm5zLnB1c2go
Zm4pOwotICAgIH0pOwotICB9LAotCi0gIHVuYmluZDogSlFMaXRlVW5iaW5kLAotCi0gIHJlcGxh
Y2VXaXRoOiBmdW5jdGlvbihlbGVtZW50LCByZXBsYWNlTm9kZSkgewotICAgIHZhciBpbmRleCwg
cGFyZW50ID0gZWxlbWVudC5wYXJlbnROb2RlOwotICAgIEpRTGl0ZURlYWxvYyhlbGVtZW50KTsK
LSAgICBmb3JFYWNoKG5ldyBKUUxpdGUocmVwbGFjZU5vZGUpLCBmdW5jdGlvbihub2RlKXsKLSAg
ICAgIGlmIChpbmRleCkgewotICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKG5vZGUsIGluZGV4
Lm5leHRTaWJsaW5nKTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIHBhcmVudC5yZXBsYWNlQ2hp
bGQobm9kZSwgZWxlbWVudCk7Ci0gICAgICB9Ci0gICAgICBpbmRleCA9IG5vZGU7Ci0gICAgfSk7
Ci0gIH0sCi0KLSAgY2hpbGRyZW46IGZ1bmN0aW9uKGVsZW1lbnQpIHsKLSAgICB2YXIgY2hpbGRy
ZW4gPSBbXTsKLSAgICBmb3JFYWNoKGVsZW1lbnQuY2hpbGROb2RlcywgZnVuY3Rpb24oZWxlbWVu
dCl7Ci0gICAgICBpZiAoZWxlbWVudC5ub2RlVHlwZSA9PT0gMSkKLSAgICAgICAgY2hpbGRyZW4u
cHVzaChlbGVtZW50KTsKLSAgICB9KTsKLSAgICByZXR1cm4gY2hpbGRyZW47Ci0gIH0sCi0KLSAg
Y29udGVudHM6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKLSAgICByZXR1cm4gZWxlbWVudC5jaGlsZE5v
ZGVzIHx8IFtdOwotICB9LAotCi0gIGFwcGVuZDogZnVuY3Rpb24oZWxlbWVudCwgbm9kZSkgewot
ICAgIGZvckVhY2gobmV3IEpRTGl0ZShub2RlKSwgZnVuY3Rpb24oY2hpbGQpewotICAgICAgaWYg
KGVsZW1lbnQubm9kZVR5cGUgPT09IDEpCi0gICAgICAgIGVsZW1lbnQuYXBwZW5kQ2hpbGQoY2hp
bGQpOwotICAgIH0pOwotICB9LAotCi0gIHByZXBlbmQ6IGZ1bmN0aW9uKGVsZW1lbnQsIG5vZGUp
IHsKLSAgICBpZiAoZWxlbWVudC5ub2RlVHlwZSA9PT0gMSkgewotICAgICAgdmFyIGluZGV4ID0g
ZWxlbWVudC5maXJzdENoaWxkOwotICAgICAgZm9yRWFjaChuZXcgSlFMaXRlKG5vZGUpLCBmdW5j
dGlvbihjaGlsZCl7Ci0gICAgICAgIGlmIChpbmRleCkgewotICAgICAgICAgIGVsZW1lbnQuaW5z
ZXJ0QmVmb3JlKGNoaWxkLCBpbmRleCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgZWxl
bWVudC5hcHBlbmRDaGlsZChjaGlsZCk7Ci0gICAgICAgICAgaW5kZXggPSBjaGlsZDsKLSAgICAg
ICAgfQotICAgICAgfSk7Ci0gICAgfQotICB9LAotCi0gIHdyYXA6IGZ1bmN0aW9uKGVsZW1lbnQs
IHdyYXBOb2RlKSB7Ci0gICAgd3JhcE5vZGUgPSBqcUxpdGUod3JhcE5vZGUpWzBdOwotICAgIHZh
ciBwYXJlbnQgPSBlbGVtZW50LnBhcmVudE5vZGU7Ci0gICAgaWYgKHBhcmVudCkgewotICAgICAg
cGFyZW50LnJlcGxhY2VDaGlsZCh3cmFwTm9kZSwgZWxlbWVudCk7Ci0gICAgfQotICAgIHdyYXBO
b2RlLmFwcGVuZENoaWxkKGVsZW1lbnQpOwotICB9LAotCi0gIHJlbW92ZTogZnVuY3Rpb24oZWxl
bWVudCkgewotICAgIEpRTGl0ZURlYWxvYyhlbGVtZW50KTsKLSAgICB2YXIgcGFyZW50ID0gZWxl
bWVudC5wYXJlbnROb2RlOwotICAgIGlmIChwYXJlbnQpIHBhcmVudC5yZW1vdmVDaGlsZChlbGVt
ZW50KTsKLSAgfSwKLQotICBhZnRlcjogZnVuY3Rpb24oZWxlbWVudCwgbmV3RWxlbWVudCkgewot
ICAgIHZhciBpbmRleCA9IGVsZW1lbnQsIHBhcmVudCA9IGVsZW1lbnQucGFyZW50Tm9kZTsKLSAg
ICBmb3JFYWNoKG5ldyBKUUxpdGUobmV3RWxlbWVudCksIGZ1bmN0aW9uKG5vZGUpewotICAgICAg
cGFyZW50Lmluc2VydEJlZm9yZShub2RlLCBpbmRleC5uZXh0U2libGluZyk7Ci0gICAgICBpbmRl
eCA9IG5vZGU7Ci0gICAgfSk7Ci0gIH0sCi0KLSAgYWRkQ2xhc3M6IEpRTGl0ZUFkZENsYXNzLAot
ICByZW1vdmVDbGFzczogSlFMaXRlUmVtb3ZlQ2xhc3MsCi0KLSAgdG9nZ2xlQ2xhc3M6IGZ1bmN0
aW9uKGVsZW1lbnQsIHNlbGVjdG9yLCBjb25kaXRpb24pIHsKLSAgICBpZiAoaXNVbmRlZmluZWQo
Y29uZGl0aW9uKSkgewotICAgICAgY29uZGl0aW9uID0gIUpRTGl0ZUhhc0NsYXNzKGVsZW1lbnQs
IHNlbGVjdG9yKTsKLSAgICB9Ci0gICAgKGNvbmRpdGlvbiA/IEpRTGl0ZUFkZENsYXNzIDogSlFM
aXRlUmVtb3ZlQ2xhc3MpKGVsZW1lbnQsIHNlbGVjdG9yKTsKLSAgfSwKLQotICBwYXJlbnQ6IGZ1
bmN0aW9uKGVsZW1lbnQpIHsKLSAgICB2YXIgcGFyZW50ID0gZWxlbWVudC5wYXJlbnROb2RlOwot
ICAgIHJldHVybiBwYXJlbnQgJiYgcGFyZW50Lm5vZGVUeXBlICE9PSAxMSA/IHBhcmVudCA6IG51
bGw7Ci0gIH0sCi0KLSAgbmV4dDogZnVuY3Rpb24oZWxlbWVudCkgewotICAgIGlmIChlbGVtZW50
Lm5leHRFbGVtZW50U2libGluZykgewotICAgICAgcmV0dXJuIGVsZW1lbnQubmV4dEVsZW1lbnRT
aWJsaW5nOwotICAgIH0KLQotICAgIC8vIElFOCBkb2Vzbid0IGhhdmUgbmV4dEVsZW1lbnRTaWJs
aW5nCi0gICAgdmFyIGVsbSA9IGVsZW1lbnQubmV4dFNpYmxpbmc7Ci0gICAgd2hpbGUgKGVsbSAh
PSBudWxsICYmIGVsbS5ub2RlVHlwZSAhPT0gMSkgewotICAgICAgZWxtID0gZWxtLm5leHRTaWJs
aW5nOwotICAgIH0KLSAgICByZXR1cm4gZWxtOwotICB9LAotCi0gIGZpbmQ6IGZ1bmN0aW9uKGVs
ZW1lbnQsIHNlbGVjdG9yKSB7Ci0gICAgcmV0dXJuIGVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoc2VsZWN0b3IpOwotICB9LAotCi0gIGNsb25lOiBKUUxpdGVDbG9uZSwKLQotICB0cmlnZ2Vy
SGFuZGxlcjogZnVuY3Rpb24oZWxlbWVudCwgZXZlbnROYW1lKSB7Ci0gICAgdmFyIGV2ZW50Rm5z
ID0gKEpRTGl0ZUV4cGFuZG9TdG9yZShlbGVtZW50LCAnZXZlbnRzJykgfHwge30pW2V2ZW50TmFt
ZV07Ci0KLSAgICBmb3JFYWNoKGV2ZW50Rm5zLCBmdW5jdGlvbihmbikgewotICAgICAgZm4uY2Fs
bChlbGVtZW50LCBudWxsKTsKLSAgICB9KTsKLSAgfQotfSwgZnVuY3Rpb24oZm4sIG5hbWUpewot
ICAvKioKLSAgICogY2hhaW5pbmcgZnVuY3Rpb25zCi0gICAqLwotICBKUUxpdGUucHJvdG90eXBl
W25hbWVdID0gZnVuY3Rpb24oYXJnMSwgYXJnMikgewotICAgIHZhciB2YWx1ZTsKLSAgICBmb3Io
dmFyIGk9MDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHsKLSAgICAgIGlmICh2YWx1ZSA9PSB1bmRl
ZmluZWQpIHsKLSAgICAgICAgdmFsdWUgPSBmbih0aGlzW2ldLCBhcmcxLCBhcmcyKTsKLSAgICAg
ICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHsKLSAgICAgICAgICAvLyBhbnkgZnVuY3Rpb24g
d2hpY2ggcmV0dXJucyBhIHZhbHVlIG5lZWRzIHRvIGJlIHdyYXBwZWQKLSAgICAgICAgICB2YWx1
ZSA9IGpxTGl0ZSh2YWx1ZSk7Ci0gICAgICAgIH0KLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIEpR
TGl0ZUFkZE5vZGVzKHZhbHVlLCBmbih0aGlzW2ldLCBhcmcxLCBhcmcyKSk7Ci0gICAgICB9Ci0g
ICAgfQotICAgIHJldHVybiB2YWx1ZSA9PSB1bmRlZmluZWQgPyB0aGlzIDogdmFsdWU7Ci0gIH07
Ci19KTsKLQotLyoqCi0gKiBDb21wdXRlcyBhIGhhc2ggb2YgYW4gJ29iaicuCi0gKiBIYXNoIG9m
IGE6Ci0gKiAgc3RyaW5nIGlzIHN0cmluZwotICogIG51bWJlciBpcyBudW1iZXIgYXMgc3RyaW5n
Ci0gKiAgb2JqZWN0IGlzIGVpdGhlciByZXN1bHQgb2YgY2FsbGluZyAkJGhhc2hLZXkgZnVuY3Rp
b24gb24gdGhlIG9iamVjdCBvciB1bmlxdWVseSBnZW5lcmF0ZWQgaWQsCi0gKiAgICAgICAgIHRo
YXQgaXMgYWxzbyBhc3NpZ25lZCB0byB0aGUgJCRoYXNoS2V5IHByb3BlcnR5IG9mIHRoZSBvYmpl
Y3QuCi0gKgotICogQHBhcmFtIG9iagotICogQHJldHVybnMge3N0cmluZ30gaGFzaCBzdHJpbmcg
c3VjaCB0aGF0IHRoZSBzYW1lIGlucHV0IHdpbGwgaGF2ZSB0aGUgc2FtZSBoYXNoIHN0cmluZy4K
LSAqICAgICAgICAgVGhlIHJlc3VsdGluZyBzdHJpbmcga2V5IGlzIGluICd0eXBlOmhhc2hLZXkn
IGZvcm1hdC4KLSAqLwotZnVuY3Rpb24gaGFzaEtleShvYmopIHsKLSAgdmFyIG9ialR5cGUgPSB0
eXBlb2Ygb2JqLAotICAgICAga2V5OwotCi0gIGlmIChvYmpUeXBlID09ICdvYmplY3QnICYmIG9i
aiAhPT0gbnVsbCkgewotICAgIGlmICh0eXBlb2YgKGtleSA9IG9iai4kJGhhc2hLZXkpID09ICdm
dW5jdGlvbicpIHsKLSAgICAgIC8vIG11c3QgaW52b2tlIG9uIG9iamVjdCB0byBrZWVwIHRoZSBy
aWdodCB0aGlzCi0gICAgICBrZXkgPSBvYmouJCRoYXNoS2V5KCk7Ci0gICAgfSBlbHNlIGlmIChr
ZXkgPT09IHVuZGVmaW5lZCkgewotICAgICAga2V5ID0gb2JqLiQkaGFzaEtleSA9IG5leHRVaWQo
KTsKLSAgICB9Ci0gIH0gZWxzZSB7Ci0gICAga2V5ID0gb2JqOwotICB9Ci0KLSAgcmV0dXJuIG9i
alR5cGUgKyAnOicgKyBrZXk7Ci19Ci0KLS8qKgotICogSGFzaE1hcCB3aGljaCBjYW4gdXNlIG9i
amVjdHMgYXMga2V5cwotICovCi1mdW5jdGlvbiBIYXNoTWFwKGFycmF5KXsKLSAgZm9yRWFjaChh
cnJheSwgdGhpcy5wdXQsIHRoaXMpOwotfQotSGFzaE1hcC5wcm90b3R5cGUgPSB7Ci0gIC8qKgot
ICAgKiBTdG9yZSBrZXkgdmFsdWUgcGFpcgotICAgKiBAcGFyYW0ga2V5IGtleSB0byBzdG9yZSBj
YW4gYmUgYW55IHR5cGUKLSAgICogQHBhcmFtIHZhbHVlIHZhbHVlIHRvIHN0b3JlIGNhbiBiZSBh
bnkgdHlwZQotICAgKi8KLSAgcHV0OiBmdW5jdGlvbihrZXksIHZhbHVlKSB7Ci0gICAgdGhpc1to
YXNoS2V5KGtleSldID0gdmFsdWU7Ci0gIH0sCi0KLSAgLyoqCi0gICAqIEBwYXJhbSBrZXkKLSAg
ICogQHJldHVybnMgdGhlIHZhbHVlIGZvciB0aGUga2V5Ci0gICAqLwotICBnZXQ6IGZ1bmN0aW9u
KGtleSkgewotICAgIHJldHVybiB0aGlzW2hhc2hLZXkoa2V5KV07Ci0gIH0sCi0KLSAgLyoqCi0g
ICAqIFJlbW92ZSB0aGUga2V5L3ZhbHVlIHBhaXIKLSAgICogQHBhcmFtIGtleQotICAgKi8KLSAg
cmVtb3ZlOiBmdW5jdGlvbihrZXkpIHsKLSAgICB2YXIgdmFsdWUgPSB0aGlzW2tleSA9IGhhc2hL
ZXkoa2V5KV07Ci0gICAgZGVsZXRlIHRoaXNba2V5XTsKLSAgICByZXR1cm4gdmFsdWU7Ci0gIH0K
LX07Ci0KLS8qKgotICogQSBtYXAgd2hlcmUgbXVsdGlwbGUgdmFsdWVzIGNhbiBiZSBhZGRlZCB0
byB0aGUgc2FtZSBrZXkgc3VjaCB0aGF0IHRoZXkgZm9ybSBhIHF1ZXVlLgotICogQHJldHVybnMg
e0hhc2hRdWV1ZU1hcH0KLSAqLwotZnVuY3Rpb24gSGFzaFF1ZXVlTWFwKCkge30KLUhhc2hRdWV1
ZU1hcC5wcm90b3R5cGUgPSB7Ci0gIC8qKgotICAgKiBTYW1lIGFzIGFycmF5IHB1c2gsIGJ1dCB1
c2luZyBhbiBhcnJheSBhcyB0aGUgdmFsdWUgZm9yIHRoZSBoYXNoCi0gICAqLwotICBwdXNoOiBm
dW5jdGlvbihrZXksIHZhbHVlKSB7Ci0gICAgdmFyIGFycmF5ID0gdGhpc1trZXkgPSBoYXNoS2V5
KGtleSldOwotICAgIGlmICghYXJyYXkpIHsKLSAgICAgIHRoaXNba2V5XSA9IFt2YWx1ZV07Ci0g
ICAgfSBlbHNlIHsKLSAgICAgIGFycmF5LnB1c2godmFsdWUpOwotICAgIH0KLSAgfSwKLQotICAv
KioKLSAgICogU2FtZSBhcyBhcnJheSBzaGlmdCwgYnV0IHVzaW5nIGFuIGFycmF5IGFzIHRoZSB2
YWx1ZSBmb3IgdGhlIGhhc2gKLSAgICovCi0gIHNoaWZ0OiBmdW5jdGlvbihrZXkpIHsKLSAgICB2
YXIgYXJyYXkgPSB0aGlzW2tleSA9IGhhc2hLZXkoa2V5KV07Ci0gICAgaWYgKGFycmF5KSB7Ci0g
ICAgICBpZiAoYXJyYXkubGVuZ3RoID09IDEpIHsKLSAgICAgICAgZGVsZXRlIHRoaXNba2V5XTsK
LSAgICAgICAgcmV0dXJuIGFycmF5WzBdOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgcmV0dXJu
IGFycmF5LnNoaWZ0KCk7Ci0gICAgICB9Ci0gICAgfQotICB9LAotCi0gIC8qKgotICAgKiByZXR1
cm4gdGhlIGZpcnN0IGl0ZW0gd2l0aG91dCBkZWxldGluZyBpdAotICAgKi8KLSAgcGVlazogZnVu
Y3Rpb24oa2V5KSB7Ci0gICAgdmFyIGFycmF5ID0gdGhpc1toYXNoS2V5KGtleSldOwotICAgIGlm
IChhcnJheSkgewotICAgIHJldHVybiBhcnJheVswXTsKLSAgICB9Ci0gIH0KLX07Ci0KLS8qKgot
ICogQG5nZG9jIGZ1bmN0aW9uCi0gKiBAbmFtZSBhbmd1bGFyLmluamVjdG9yCi0gKiBAZnVuY3Rp
b24KLSAqCi0gKiBAZGVzY3JpcHRpb24KLSAqIENyZWF0ZXMgYW4gaW5qZWN0b3IgZnVuY3Rpb24g
dGhhdCBjYW4gYmUgdXNlZCBmb3IgcmV0cmlldmluZyBzZXJ2aWNlcyBhcyB3ZWxsIGFzIGZvcgot
ICogZGVwZW5kZW5jeSBpbmplY3Rpb24gKHNlZSB7QGxpbmsgZ3VpZGUvZGkgZGVwZW5kZW5jeSBp
bmplY3Rpb259KS4KLSAqCi0KLSAqIEBwYXJhbSB7QXJyYXkuPHN0cmluZ3xGdW5jdGlvbj59IG1v
ZHVsZXMgQSBsaXN0IG9mIG1vZHVsZSBmdW5jdGlvbnMgb3IgdGhlaXIgYWxpYXNlcy4gU2VlCi0g
KiAgICAgICAge0BsaW5rIGFuZ3VsYXIubW9kdWxlfS4gVGhlIGBuZ2AgbW9kdWxlIG11c3QgYmUg
ZXhwbGljaXRseSBhZGRlZC4KLSAqIEByZXR1cm5zIHtmdW5jdGlvbigpfSBJbmplY3RvciBmdW5j
dGlvbi4gU2VlIHtAbGluayBBVVRPLiRpbmplY3RvciAkaW5qZWN0b3J9LgotICoKLSAqIEBleGFt
cGxlCi0gKiBUeXBpY2FsIHVzYWdlCi0gKiA8cHJlPgotICogICAvLyBjcmVhdGUgYW4gaW5qZWN0
b3IKLSAqICAgdmFyICRpbmplY3RvciA9IGFuZ3VsYXIuaW5qZWN0b3IoWyduZyddKTsKLSAqCi0g
KiAgIC8vIHVzZSB0aGUgaW5qZWN0b3IgdG8ga2ljayBvZmYgeW91ciBhcHBsaWNhdGlvbgotICog
ICAvLyB1c2UgdGhlIHR5cGUgaW5mZXJlbmNlIHRvIGF1dG8gaW5qZWN0IGFyZ3VtZW50cywgb3Ig
dXNlIGltcGxpY2l0IGluamVjdGlvbgotICogICAkaW5qZWN0b3IuaW52b2tlKGZ1bmN0aW9uKCRy
b290U2NvcGUsICRjb21waWxlLCAkZG9jdW1lbnQpewotICogICAgICRjb21waWxlKCRkb2N1bWVu
dCkoJHJvb3RTY29wZSk7Ci0gKiAgICAgJHJvb3RTY29wZS4kZGlnZXN0KCk7Ci0gKiAgIH0pOwot
ICogPC9wcmU+Ci0gKi8KLQotCi0vKioKLSAqIEBuZ2RvYyBvdmVydmlldwotICogQG5hbWUgQVVU
TwotICogQGRlc2NyaXB0aW9uCi0gKgotICogSW1wbGljaXQgbW9kdWxlIHdoaWNoIGdldHMgYXV0
b21hdGljYWxseSBhZGRlZCB0byBlYWNoIHtAbGluayBBVVRPLiRpbmplY3RvciAkaW5qZWN0b3J9
LgotICovCi0KLXZhciBGTl9BUkdTID0gL15mdW5jdGlvblxzKlteXChdKlwoXHMqKFteXCldKilc
KS9tOwotdmFyIEZOX0FSR19TUExJVCA9IC8sLzsKLXZhciBGTl9BUkcgPSAvXlxzKihfPykoXFMr
PylcMVxzKiQvOwotdmFyIFNUUklQX0NPTU1FTlRTID0gLygoXC9cLy4qJCl8KFwvXCpbXHNcU10q
P1wqXC8pKS9tZzsKLWZ1bmN0aW9uIGFubm90YXRlKGZuKSB7Ci0gIHZhciAkaW5qZWN0LAotICAg
ICAgZm5UZXh0LAotICAgICAgYXJnRGVjbCwKLSAgICAgIGxhc3Q7Ci0KLSAgaWYgKHR5cGVvZiBm
biA9PSAnZnVuY3Rpb24nKSB7Ci0gICAgaWYgKCEoJGluamVjdCA9IGZuLiRpbmplY3QpKSB7Ci0g
ICAgICAkaW5qZWN0ID0gW107Ci0gICAgICBmblRleHQgPSBmbi50b1N0cmluZygpLnJlcGxhY2Uo
U1RSSVBfQ09NTUVOVFMsICcnKTsKLSAgICAgIGFyZ0RlY2wgPSBmblRleHQubWF0Y2goRk5fQVJH
Uyk7Ci0gICAgICBmb3JFYWNoKGFyZ0RlY2xbMV0uc3BsaXQoRk5fQVJHX1NQTElUKSwgZnVuY3Rp
b24oYXJnKXsKLSAgICAgICAgYXJnLnJlcGxhY2UoRk5fQVJHLCBmdW5jdGlvbihhbGwsIHVuZGVy
c2NvcmUsIG5hbWUpewotICAgICAgICAgICRpbmplY3QucHVzaChuYW1lKTsKLSAgICAgICAgfSk7
Ci0gICAgICB9KTsKLSAgICAgIGZuLiRpbmplY3QgPSAkaW5qZWN0OwotICAgIH0KLSAgfSBlbHNl
IGlmIChpc0FycmF5KGZuKSkgewotICAgIGxhc3QgPSBmbi5sZW5ndGggLSAxOwotICAgIGFzc2Vy
dEFyZ0ZuKGZuW2xhc3RdLCAnZm4nKTsKLSAgICAkaW5qZWN0ID0gZm4uc2xpY2UoMCwgbGFzdCk7
Ci0gIH0gZWxzZSB7Ci0gICAgYXNzZXJ0QXJnRm4oZm4sICdmbicsIHRydWUpOwotICB9Ci0gIHJl
dHVybiAkaW5qZWN0OwotfQotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8KLQotLyoqCi0gKiBAbmdkb2Mgb2JqZWN0Ci0gKiBAbmFtZSBBVVRPLiRpbmplY3RvcgotICog
QGZ1bmN0aW9uCi0gKgotICogQGRlc2NyaXB0aW9uCi0gKgotICogYCRpbmplY3RvcmAgaXMgdXNl
ZCB0byByZXRyaWV2ZSBvYmplY3QgaW5zdGFuY2VzIGFzIGRlZmluZWQgYnkKLSAqIHtAbGluayBB
VVRPLiRwcm92aWRlIHByb3ZpZGVyfSwgaW5zdGFudGlhdGUgdHlwZXMsIGludm9rZSBtZXRob2Rz
LAotICogYW5kIGxvYWQgbW9kdWxlcy4KLSAqCi0gKiBUaGUgZm9sbG93aW5nIGFsd2F5cyBob2xk
cyB0cnVlOgotICoKLSAqIDxwcmU+Ci0gKiAgIHZhciAkaW5qZWN0b3IgPSBhbmd1bGFyLmluamVj
dG9yKCk7Ci0gKiAgIGV4cGVjdCgkaW5qZWN0b3IuZ2V0KCckaW5qZWN0b3InKSkudG9CZSgkaW5q
ZWN0b3IpOwotICogICBleHBlY3QoJGluamVjdG9yLmludm9rZShmdW5jdGlvbigkaW5qZWN0b3Ip
ewotICogICAgIHJldHVybiAkaW5qZWN0b3I7Ci0gKiAgIH0pLnRvQmUoJGluamVjdG9yKTsKLSAq
IDwvcHJlPgotICoKLSAqICMgSW5qZWN0aW9uIEZ1bmN0aW9uIEFubm90YXRpb24KLSAqCi0gKiBK
YXZhU2NyaXB0IGRvZXMgbm90IGhhdmUgYW5ub3RhdGlvbnMsIGFuZCBhbm5vdGF0aW9ucyBhcmUg
bmVlZGVkIGZvciBkZXBlbmRlbmN5IGluamVjdGlvbi4gVGhlCi0gKiBmb2xsb3dpbmcgYXJlIGFs
bCB2YWxpZCB3YXlzIG9mIGFubm90YXRpbmcgZnVuY3Rpb24gd2l0aCBpbmplY3Rpb24gYXJndW1l
bnRzIGFuZCBhcmUgZXF1aXZhbGVudC4KLSAqCi0gKiA8cHJlPgotICogICAvLyBpbmZlcnJlZCAo
b25seSB3b3JrcyBpZiBjb2RlIG5vdCBtaW5pZmllZC9vYmZ1c2NhdGVkKQotICogICAkaW5qZWN0
b3IuaW52b2tlKGZ1bmN0aW9uKHNlcnZpY2VBKXt9KTsKLSAqCi0gKiAgIC8vIGFubm90YXRlZAot
ICogICBmdW5jdGlvbiBleHBsaWNpdChzZXJ2aWNlQSkge307Ci0gKiAgIGV4cGxpY2l0LiRpbmpl
Y3QgPSBbJ3NlcnZpY2VBJ107Ci0gKiAgICRpbmplY3Rvci5pbnZva2UoZXhwbGljaXQpOwotICoK
LSAqICAgLy8gaW5saW5lCi0gKiAgICRpbmplY3Rvci5pbnZva2UoWydzZXJ2aWNlQScsIGZ1bmN0
aW9uKHNlcnZpY2VBKXt9XSk7Ci0gKiA8L3ByZT4KLSAqCi0gKiAjIyBJbmZlcmVuY2UKLSAqCi0g
KiBJbiBKYXZhU2NyaXB0IGNhbGxpbmcgYHRvU3RyaW5nKClgIG9uIGEgZnVuY3Rpb24gcmV0dXJu
cyB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbi4gVGhlIGRlZmluaXRpb24gY2FuIHRoZW4gYmUKLSAq
IHBhcnNlZCBhbmQgdGhlIGZ1bmN0aW9uIGFyZ3VtZW50cyBjYW4gYmUgZXh0cmFjdGVkLiAqTk9U
RToqIFRoaXMgZG9lcyBub3Qgd29yayB3aXRoIG1pbmlmaWNhdGlvbiwgYW5kIG9iZnVzY2F0aW9u
Ci0gKiB0b29scyBzaW5jZSB0aGVzZSB0b29scyBjaGFuZ2UgdGhlIGFyZ3VtZW50IG5hbWVzLgot
ICoKLSAqICMjIGAkaW5qZWN0YCBBbm5vdGF0aW9uCi0gKiBCeSBhZGRpbmcgYSBgJGluamVjdGAg
cHJvcGVydHkgb250byBhIGZ1bmN0aW9uIHRoZSBpbmplY3Rpb24gcGFyYW1ldGVycyBjYW4gYmUg
c3BlY2lmaWVkLgotICoKLSAqICMjIElubGluZQotICogQXMgYW4gYXJyYXkgb2YgaW5qZWN0aW9u
IG5hbWVzLCB3aGVyZSB0aGUgbGFzdCBpdGVtIGluIHRoZSBhcnJheSBpcyB0aGUgZnVuY3Rpb24g
dG8gY2FsbC4KLSAqLwotCi0vKioKLSAqIEBuZ2RvYyBtZXRob2QKLSAqIEBuYW1lIEFVVE8uJGlu
amVjdG9yI2dldAotICogQG1ldGhvZE9mIEFVVE8uJGluamVjdG9yCi0gKgotICogQGRlc2NyaXB0
aW9uCi0gKiBSZXR1cm4gYW4gaW5zdGFuY2Ugb2YgdGhlIHNlcnZpY2UuCi0gKgotICogQHBhcmFt
IHtzdHJpbmd9IG5hbWUgVGhlIG5hbWUgb2YgdGhlIGluc3RhbmNlIHRvIHJldHJpZXZlLgotICog
QHJldHVybiB7Kn0gVGhlIGluc3RhbmNlLgotICovCi0KLS8qKgotICogQG5nZG9jIG1ldGhvZAot
ICogQG5hbWUgQVVUTy4kaW5qZWN0b3IjaW52b2tlCi0gKiBAbWV0aG9kT2YgQVVUTy4kaW5qZWN0
b3IKLSAqCi0gKiBAZGVzY3JpcHRpb24KLSAqIEludm9rZSB0aGUgbWV0aG9kIGFuZCBzdXBwbHkg
dGhlIG1ldGhvZCBhcmd1bWVudHMgZnJvbSB0aGUgYCRpbmplY3RvcmAuCi0gKgotICogQHBhcmFt
IHshZnVuY3Rpb259IGZuIFRoZSBmdW5jdGlvbiB0byBpbnZva2UuIFRoZSBmdW5jdGlvbiBhcmd1
bWVudHMgY29tZSBmb3JtIHRoZSBmdW5jdGlvbiBhbm5vdGF0aW9uLgotICogQHBhcmFtIHtPYmpl
Y3Q9fSBzZWxmIFRoZSBgdGhpc2AgZm9yIHRoZSBpbnZva2VkIG1ldGhvZC4KLSAqIEBwYXJhbSB7
T2JqZWN0PX0gbG9jYWxzIE9wdGlvbmFsIG9iamVjdC4gSWYgcHJlc2V0IHRoZW4gYW55IGFyZ3Vt
ZW50IG5hbWVzIGFyZSByZWFkIGZyb20gdGhpcyBvYmplY3QgZmlyc3QsIGJlZm9yZQotICogICB0
aGUgYCRpbmplY3RvcmAgaXMgY29uc3VsdGVkLgotICogQHJldHVybnMgeyp9IHRoZSB2YWx1ZSBy
ZXR1cm5lZCBieSB0aGUgaW52b2tlZCBgZm5gIGZ1bmN0aW9uLgotICovCi0KLS8qKgotICogQG5n
ZG9jIG1ldGhvZAotICogQG5hbWUgQVVUTy4kaW5qZWN0b3IjaW5zdGFudGlhdGUKLSAqIEBtZXRo
b2RPZiBBVVRPLiRpbmplY3RvcgotICogQGRlc2NyaXB0aW9uCi0gKiBDcmVhdGUgYSBuZXcgaW5z
dGFuY2Ugb2YgSlMgdHlwZS4gVGhlIG1ldGhvZCB0YWtlcyBhIGNvbnN0cnVjdG9yIGZ1bmN0aW9u
IGludm9rZXMgdGhlIG5ldyBvcGVyYXRvciBhbmQgc3VwcGxpZXMKLSAqIGFsbCBvZiB0aGUgYXJn
dW1lbnRzIHRvIHRoZSBjb25zdHJ1Y3RvciBmdW5jdGlvbiBhcyBzcGVjaWZpZWQgYnkgdGhlIGNv
bnN0cnVjdG9yIGFubm90YXRpb24uCi0gKgotICogQHBhcmFtIHtmdW5jdGlvbn0gVHlwZSBBbm5v
dGF0ZWQgY29uc3RydWN0b3IgZnVuY3Rpb24uCi0gKiBAcGFyYW0ge09iamVjdD19IGxvY2FscyBP
cHRpb25hbCBvYmplY3QuIElmIHByZXNldCB0aGVuIGFueSBhcmd1bWVudCBuYW1lcyBhcmUgcmVh
ZCBmcm9tIHRoaXMgb2JqZWN0IGZpcnN0LCBiZWZvcmUKLSAqICAgdGhlIGAkaW5qZWN0b3JgIGlz
IGNvbnN1bHRlZC4KLSAqIEByZXR1cm5zIHtPYmplY3R9IG5ldyBpbnN0YW5jZSBvZiBgVHlwZWAu
Ci0gKi8KLQotLyoqCi0gKiBAbmdkb2MgbWV0aG9kCi0gKiBAbmFtZSBBVVRPLiRpbmplY3RvciNh
bm5vdGF0ZQotICogQG1ldGhvZE9mIEFVVE8uJGluamVjdG9yCi0gKgotICogQGRlc2NyaXB0aW9u
Ci0gKiBSZXR1cm5zIGFuIGFycmF5IG9mIHNlcnZpY2UgbmFtZXMgd2hpY2ggdGhlIGZ1bmN0aW9u
IGlzIHJlcXVlc3RpbmcgZm9yIGluamVjdGlvbi4gVGhpcyBBUEkgaXMgdXNlZCBieSB0aGUgaW5q
ZWN0b3IKLSAqIHRvIGRldGVybWluZSB3aGljaCBzZXJ2aWNlcyBuZWVkIHRvIGJlIGluamVjdGVk
IGludG8gdGhlIGZ1bmN0aW9uIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGludm9rZWQuIFRoZXJlIGFy
ZSB0aHJlZQotICogd2F5cyBpbiB3aGljaCB0aGUgZnVuY3Rpb24gY2FuIGJlIGFubm90YXRlZCB3
aXRoIHRoZSBuZWVkZWQgZGVwZW5kZW5jaWVzLgotICoKLSAqICMgQXJndW1lbnQgbmFtZXMKLSAq
Ci0gKiBUaGUgc2ltcGxlc3QgZm9ybSBpcyB0byBleHRyYWN0IHRoZSBkZXBlbmRlbmNpZXMgZnJv
bSB0aGUgYXJndW1lbnRzIG9mIHRoZSBmdW5jdGlvbi4gVGhpcyBpcyBkb25lIGJ5IGNvbnZlcnRp
bmcKLSAqIHRoZSBmdW5jdGlvbiBpbnRvIGEgc3RyaW5nIHVzaW5nIGB0b1N0cmluZygpYCBtZXRo
b2QgYW5kIGV4dHJhY3RpbmcgdGhlIGFyZ3VtZW50IG5hbWVzLgotICogPHByZT4KLSAqICAgLy8g
R2l2ZW4KLSAqICAgZnVuY3Rpb24gTXlDb250cm9sbGVyKCRzY29wZSwgJHJvdXRlKSB7Ci0gKiAg
ICAgLy8gLi4uCi0gKiAgIH0KLSAqCi0gKiAgIC8vIFRoZW4KLSAqICAgZXhwZWN0KGluamVjdG9y
LmFubm90YXRlKE15Q29udHJvbGxlcikpLnRvRXF1YWwoWyckc2NvcGUnLCAnJHJvdXRlJ10pOwot
ICogPC9wcmU+Ci0gKgotICogVGhpcyBtZXRob2QgZG9lcyBub3Qgd29yayB3aXRoIGNvZGUgbWlu
ZmljYXRpb24gLyBvYmZ1c2NhdGlvbi4gRm9yIHRoaXMgcmVhc29uIHRoZSBmb2xsb3dpbmcgYW5u
b3RhdGlvbiBzdHJhdGVnaWVzCi0gKiBhcmUgc3VwcG9ydGVkLgotICoKLSAqICMgVGhlIGAkaW5q
ZWN0YCBwcm9wZXJ0eQotICoKLSAqIElmIGEgZnVuY3Rpb24gaGFzIGFuIGAkaW5qZWN0YCBwcm9w
ZXJ0eSBhbmQgaXRzIHZhbHVlIGlzIGFuIGFycmF5IG9mIHN0cmluZ3MsIHRoZW4gdGhlIHN0cmlu
Z3MgcmVwcmVzZW50IG5hbWVzIG9mCi0gKiBzZXJ2aWNlcyB0byBiZSBpbmplY3RlZCBpbnRvIHRo
ZSBmdW5jdGlvbi4KLSAqIDxwcmU+Ci0gKiAgIC8vIEdpdmVuCi0gKiAgIHZhciBNeUNvbnRyb2xs
ZXIgPSBmdW5jdGlvbihvYmZ1c2NhdGVkU2NvcGUsIG9iZnVzY2F0ZWRSb3V0ZSkgewotICogICAg
IC8vIC4uLgotICogICB9Ci0gKiAgIC8vIERlZmluZSBmdW5jdGlvbiBkZXBlbmRlbmNpZXMKLSAq
ICAgTXlDb250cm9sbGVyLiRpbmplY3QgPSBbJyRzY29wZScsICckcm91dGUnXTsKLSAqCi0gKiAg
IC8vIFRoZW4KLSAqICAgZXhwZWN0KGluamVjdG9yLmFubm90YXRlKE15Q29udHJvbGxlcikpLnRv
RXF1YWwoWyckc2NvcGUnLCAnJHJvdXRlJ10pOwotICogPC9wcmU+Ci0gKgotICogIyBUaGUgYXJy
YXkgbm90YXRpb24KLSAqCi0gKiBJdCBpcyBvZnRlbiBkZXNpcmFibGUgdG8gaW5saW5lIEluamVj
dGVkIGZ1bmN0aW9ucyBhbmQgdGhhdCdzIHdoZW4gc2V0dGluZyB0aGUgYCRpbmplY3RgIHByb3Bl
cnR5IGlzIHZlcnkKLSAqIGluY29udmVuaWVudC4gSW4gdGhlc2Ugc2l0dWF0aW9ucyB1c2luZyB0
aGUgYXJyYXkgbm90YXRpb24gdG8gc3BlY2lmeSB0aGUgZGVwZW5kZW5jaWVzIGluIGEgd2F5IHRo
YXQgc3Vydml2ZXMKLSAqIG1pbmlmaWNhdGlvbiBpcyBhIGJldHRlciBjaG9pY2U6Ci0gKgotICog
PHByZT4KLSAqICAgLy8gV2Ugd2lzaCB0byB3cml0ZSB0aGlzIChub3QgbWluaWZpY2F0aW9uIC8g
b2JmdXNjYXRpb24gc2FmZSkKLSAqICAgaW5qZWN0b3IuaW52b2tlKGZ1bmN0aW9uKCRjb21waWxl
LCAkcm9vdFNjb3BlKSB7Ci0gKiAgICAgLy8gLi4uCi0gKiAgIH0pOwotICoKLSAqICAgLy8gV2Ug
YXJlIGZvcmNlZCB0byB3cml0ZSBicmVhayBpbmxpbmluZwotICogICB2YXIgdG1wRm4gPSBmdW5j
dGlvbihvYmZ1c2NhdGVkQ29tcGlsZSwgb2JmdXNjYXRlZFJvb3RTY29wZSkgewotICogICAgIC8v
IC4uLgotICogICB9OwotICogICB0bXBGbi4kaW5qZWN0ID0gWyckY29tcGlsZScsICckcm9vdFNj
b3BlJ107Ci0gKiAgIGluamVjdG9yLmludm9rZSh0bXBGbik7Ci0gKgotICogICAvLyBUbyBiZXR0
ZXIgc3VwcG9ydCBpbmxpbmUgZnVuY3Rpb24gdGhlIGlubGluZSBhbm5vdGF0aW9uIGlzIHN1cHBv
cnRlZAotICogICBpbmplY3Rvci5pbnZva2UoWyckY29tcGlsZScsICckcm9vdFNjb3BlJywgZnVu
Y3Rpb24ob2JmQ29tcGlsZSwgb2JmUm9vdFNjb3BlKSB7Ci0gKiAgICAgLy8gLi4uCi0gKiAgIH1d
KTsKLSAqCi0gKiAgIC8vIFRoZXJlZm9yZQotICogICBleHBlY3QoaW5qZWN0b3IuYW5ub3RhdGUo
Ci0gKiAgICAgIFsnJGNvbXBpbGUnLCAnJHJvb3RTY29wZScsIGZ1bmN0aW9uKG9iZnVzXyRjb21w
aWxlLCBvYmZ1c18kcm9vdFNjb3BlKSB7fV0pCi0gKiAgICApLnRvRXF1YWwoWyckY29tcGlsZScs
ICckcm9vdFNjb3BlJ10pOwotICogPC9wcmU+Ci0gKgotICogQHBhcmFtIHtmdW5jdGlvbnxBcnJh
eS48c3RyaW5nfEZ1bmN0aW9uPn0gZm4gRnVuY3Rpb24gZm9yIHdoaWNoIGRlcGVuZGVudCBzZXJ2
aWNlIG5hbWVzIG5lZWQgdG8gYmUgcmV0cmlldmVkIGFzIGRlc2NyaWJlZAotICogICBhYm92ZS4K
LSAqCi0gKiBAcmV0dXJucyB7QXJyYXkuPHN0cmluZz59IFRoZSBuYW1lcyBvZiB0aGUgc2Vydmlj
ZXMgd2hpY2ggdGhlIGZ1bmN0aW9uIHJlcXVpcmVzLgotICovCi0KLQotCi0KLS8qKgotICogQG5n
ZG9jIG9iamVjdAotICogQG5hbWUgQVVUTy4kcHJvdmlkZQotICoKLSAqIEBkZXNjcmlwdGlvbgot
ICoKLSAqIFVzZSBgJHByb3ZpZGVgIHRvIHJlZ2lzdGVyIG5ldyBwcm92aWRlcnMgd2l0aCB0aGUg
YCRpbmplY3RvcmAuIFRoZSBwcm92aWRlcnMgYXJlIHRoZSBmYWN0b3JpZXMgZm9yIHRoZSBpbnN0
YW5jZS4KLSAqIFRoZSBwcm92aWRlcnMgc2hhcmUgdGhlIHNhbWUgbmFtZSBhcyB0aGUgaW5zdGFu
Y2UgdGhleSBjcmVhdGUgd2l0aCBgUHJvdmlkZXJgIHN1ZmZpeGVkIHRvIHRoZW0uCi0gKgotICog
QSBwcm92aWRlciBpcyBhbiBvYmplY3Qgd2l0aCBhIGAkZ2V0KClgIG1ldGhvZC4gVGhlIGluamVj
dG9yIGNhbGxzIHRoZSBgJGdldGAgbWV0aG9kIHRvIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZgot
ICogYSBzZXJ2aWNlLiBUaGUgUHJvdmlkZXIgY2FuIGhhdmUgYWRkaXRpb25hbCBtZXRob2RzIHdo
aWNoIHdvdWxkIGFsbG93IGZvciBjb25maWd1cmF0aW9uIG9mIHRoZSBwcm92aWRlci4KLSAqCi0g
KiA8cHJlPgotICogICBmdW5jdGlvbiBHcmVldFByb3ZpZGVyKCkgewotICogICAgIHZhciBzYWx1
dGF0aW9uID0gJ0hlbGxvJzsKLSAqCi0gKiAgICAgdGhpcy5zYWx1dGF0aW9uID0gZnVuY3Rpb24o
dGV4dCkgewotICogICAgICAgc2FsdXRhdGlvbiA9IHRleHQ7Ci0gKiAgICAgfTsKLSAqCi0gKiAg
ICAgdGhpcy4kZ2V0ID0gZnVuY3Rpb24oKSB7Ci0gKiAgICAgICByZXR1cm4gZnVuY3Rpb24gKG5h
bWUpIHsKLSAqICAgICAgICAgcmV0dXJuIHNhbHV0YXRpb24gKyAnICcgKyBuYW1lICsgJyEnOwot
ICogICAgICAgfTsKLSAqICAgICB9OwotICogICB9Ci0gKgotICogICBkZXNjcmliZSgnR3JlZXRl
cicsIGZ1bmN0aW9uKCl7Ci0gKgotICogICAgIGJlZm9yZUVhY2gobW9kdWxlKGZ1bmN0aW9uKCRw
cm92aWRlKSB7Ci0gKiAgICAgICAkcHJvdmlkZS5wcm92aWRlcignZ3JlZXQnLCBHcmVldFByb3Zp
ZGVyKTsKLSAqICAgICB9KSk7Ci0gKgotICogICAgIGl0KCdzaG91bGQgZ3JlZXQnLCBpbmplY3Qo
ZnVuY3Rpb24oZ3JlZXQpIHsKLSAqICAgICAgIGV4cGVjdChncmVldCgnYW5ndWxhcicpKS50b0Vx
dWFsKCdIZWxsbyBhbmd1bGFyIScpOwotICogICAgIH0pKTsKLSAqCi0gKiAgICAgaXQoJ3Nob3Vs
ZCBhbGxvdyBjb25maWd1cmF0aW9uIG9mIHNhbHV0YXRpb24nLCBmdW5jdGlvbigpIHsKLSAqICAg
ICAgIG1vZHVsZShmdW5jdGlvbihncmVldFByb3ZpZGVyKSB7Ci0gKiAgICAgICAgIGdyZWV0UHJv
dmlkZXIuc2FsdXRhdGlvbignQWhvaicpOwotICogICAgICAgfSk7Ci0gKiAgICAgICBpbmplY3Qo
ZnVuY3Rpb24oZ3JlZXQpIHsKLSAqICAgICAgICAgZXhwZWN0KGdyZWV0KCdhbmd1bGFyJykpLnRv
RXF1YWwoJ0Fob2ogYW5ndWxhciEnKTsKLSAqICAgICAgIH0pOwotICogICAgIH0pOwotICogPC9w
cmU+Ci0gKi8KLQotLyoqCi0gKiBAbmdkb2MgbWV0aG9kCi0gKiBAbmFtZSBBVVRPLiRwcm92aWRl
I3Byb3ZpZGVyCi0gKiBAbWV0aG9kT2YgQVVUTy4kcHJvdmlkZQotICogQGRlc2NyaXB0aW9uCi0g
KgotICogUmVnaXN0ZXIgYSBwcm92aWRlciBmb3IgYSBzZXJ2aWNlLiBUaGUgcHJvdmlkZXJzIGNh
biBiZSByZXRyaWV2ZWQgYW5kIGNhbiBoYXZlIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBtZXRo
b2RzLgotICoKLSAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBpbnN0YW5j
ZS4gTk9URTogdGhlIHByb3ZpZGVyIHdpbGwgYmUgYXZhaWxhYmxlIHVuZGVyIGBuYW1lICsgJ1By
b3ZpZGVyJ2Aga2V5LgotICogQHBhcmFtIHsoT2JqZWN0fGZ1bmN0aW9uKCkpfSBwcm92aWRlciBJ
ZiB0aGUgcHJvdmlkZXIgaXM6Ci0gKgotICogICAtIGBPYmplY3RgOiB0aGVuIGl0IHNob3VsZCBo
YXZlIGEgYCRnZXRgIG1ldGhvZC4gVGhlIGAkZ2V0YCBtZXRob2Qgd2lsbCBiZSBpbnZva2VkIHVz
aW5nCi0gKiAgICAgICAgICAgICAgIHtAbGluayBBVVRPLiRpbmplY3RvciNpbnZva2UgJGluamVj
dG9yLmludm9rZSgpfSB3aGVuIGFuIGluc3RhbmNlIG5lZWRzIHRvIGJlIGNyZWF0ZWQuCi0gKiAg
IC0gYENvbnN0cnVjdG9yYDogYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIHByb3ZpZGVyIHdpbGwgYmUg
Y3JlYXRlZCB1c2luZwotICogICAgICAgICAgICAgICB7QGxpbmsgQVVUTy4kaW5qZWN0b3IjaW5z
dGFudGlhdGUgJGluamVjdG9yLmluc3RhbnRpYXRlKCl9LCB0aGVuIHRyZWF0ZWQgYXMgYG9iamVj
dGAuCi0gKgotICogQHJldHVybnMge09iamVjdH0gcmVnaXN0ZXJlZCBwcm92aWRlciBpbnN0YW5j
ZQotICovCi0KLS8qKgotICogQG5nZG9jIG1ldGhvZAotICogQG5hbWUgQVVUTy4kcHJvdmlkZSNm
YWN0b3J5Ci0gKiBAbWV0aG9kT2YgQVVUTy4kcHJvdmlkZQotICogQGRlc2NyaXB0aW9uCi0gKgot
ICogQSBzaG9ydCBoYW5kIGZvciBjb25maWd1cmluZyBzZXJ2aWNlcyBpZiBvbmx5IGAkZ2V0YCBt
ZXRob2QgaXMgcmVxdWlyZWQuCi0gKgotICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG5hbWUg
b2YgdGhlIGluc3RhbmNlLgotICogQHBhcmFtIHtmdW5jdGlvbigpfSAkZ2V0Rm4gVGhlICRnZXRG
biBmb3IgdGhlIGluc3RhbmNlIGNyZWF0aW9uLiBJbnRlcm5hbGx5IHRoaXMgaXMgYSBzaG9ydCBo
YW5kIGZvcgotICogYCRwcm92aWRlLnByb3ZpZGVyKG5hbWUsIHskZ2V0OiAkZ2V0Rm59KWAuCi0g
KiBAcmV0dXJucyB7T2JqZWN0fSByZWdpc3RlcmVkIHByb3ZpZGVyIGluc3RhbmNlCi0gKi8KLQot
Ci0vKioKLSAqIEBuZ2RvYyBtZXRob2QKLSAqIEBuYW1lIEFVVE8uJHByb3ZpZGUjc2VydmljZQot
ICogQG1ldGhvZE9mIEFVVE8uJHByb3ZpZGUKLSAqIEBkZXNjcmlwdGlvbgotICoKLSAqIEEgc2hv
cnQgaGFuZCBmb3IgcmVnaXN0ZXJpbmcgc2VydmljZSBvZiBnaXZlbiBjbGFzcy4KLSAqCi0gKiBA
cGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbmFtZSBvZiB0aGUgaW5zdGFuY2UuCi0gKiBAcGFyYW0g
e0Z1bmN0aW9ufSBjb25zdHJ1Y3RvciBBIGNsYXNzIChjb25zdHJ1Y3RvciBmdW5jdGlvbikgdGhh
dCB3aWxsIGJlIGluc3RhbnRpYXRlZC4KLSAqIEByZXR1cm5zIHtPYmplY3R9IHJlZ2lzdGVyZWQg
cHJvdmlkZXIgaW5zdGFuY2UKLSAqLwotCi0KLS8qKgotICogQG5nZG9jIG1ldGhvZAotICogQG5h
bWUgQVVUTy4kcHJvdmlkZSN2YWx1ZQotICogQG1ldGhvZE9mIEFVVE8uJHByb3ZpZGUKLSAqIEBk
ZXNjcmlwdGlvbgotICoKLSAqIEEgc2hvcnQgaGFuZCBmb3IgY29uZmlndXJpbmcgc2VydmljZXMg
aWYgdGhlIGAkZ2V0YCBtZXRob2QgaXMgYSBjb25zdGFudC4KLSAqCi0gKiBAcGFyYW0ge3N0cmlu
Z30gbmFtZSBUaGUgbmFtZSBvZiB0aGUgaW5zdGFuY2UuCi0gKiBAcGFyYW0geyp9IHZhbHVlIFRo
ZSB2YWx1ZS4KLSAqIEByZXR1cm5zIHtPYmplY3R9IHJlZ2lzdGVyZWQgcHJvdmlkZXIgaW5zdGFu
Y2UKLSAqLwotCi0KLS8qKgotICogQG5nZG9jIG1ldGhvZAotICogQG5hbWUgQVVUTy4kcHJvdmlk
ZSNjb25zdGFudAotICogQG1ldGhvZE9mIEFVVE8uJHByb3ZpZGUKLSAqIEBkZXNjcmlwdGlvbgot
ICoKLSAqIEEgY29uc3RhbnQgdmFsdWUsIGJ1dCB1bmxpa2Uge0BsaW5rIEFVVE8uJHByb3ZpZGUj
dmFsdWUgdmFsdWV9IGl0IGNhbiBiZSBpbmplY3RlZAotICogaW50byBjb25maWd1cmF0aW9uIGZ1
bmN0aW9uIChvdGhlciBtb2R1bGVzKSBhbmQgaXQgaXMgbm90IGludGVyY2VwdGFibGUgYnkKLSAq
IHtAbGluayBBVVRPLiRwcm92aWRlI2RlY29yYXRvciBkZWNvcmF0b3J9LgotICoKLSAqIEBwYXJh
bSB7c3RyaW5nfSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBjb25zdGFudC4KLSAqIEBwYXJhbSB7Kn0g
dmFsdWUgVGhlIGNvbnN0YW50IHZhbHVlLgotICogQHJldHVybnMge09iamVjdH0gcmVnaXN0ZXJl
ZCBpbnN0YW5jZQotICovCi0KLQotLyoqCi0gKiBAbmdkb2MgbWV0aG9kCi0gKiBAbmFtZSBBVVRP
LiRwcm92aWRlI2RlY29yYXRvcgotICogQG1ldGhvZE9mIEFVVE8uJHByb3ZpZGUKLSAqIEBkZXNj
cmlwdGlvbgotICoKLSAqIERlY29yYXRpb24gb2Ygc2VydmljZSwgYWxsb3dzIHRoZSBkZWNvcmF0
b3IgdG8gaW50ZXJjZXB0IHRoZSBzZXJ2aWNlIGluc3RhbmNlIGNyZWF0aW9uLiBUaGUKLSAqIHJl
dHVybmVkIGluc3RhbmNlIG1heSBiZSB0aGUgb3JpZ2luYWwgaW5zdGFuY2UsIG9yIGEgbmV3IGlu
c3RhbmNlIHdoaWNoIGRlbGVnYXRlcyB0byB0aGUKLSAqIG9yaWdpbmFsIGluc3RhbmNlLgotICoK
LSAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBzZXJ2aWNlIHRvIGRlY29y
YXRlLgotICogQHBhcmFtIHtmdW5jdGlvbigpfSBkZWNvcmF0b3IgVGhpcyBmdW5jdGlvbiB3aWxs
IGJlIGludm9rZWQgd2hlbiB0aGUgc2VydmljZSBuZWVkcyB0byBiZQotICogICAgaW5zdGFudGlh
dGVkLiBUaGUgZnVuY3Rpb24gaXMgY2FsbGVkIHVzaW5nIHRoZSB7QGxpbmsgQVVUTy4kaW5qZWN0
b3IjaW52b2tlCi0gKiAgICBpbmplY3Rvci5pbnZva2V9IG1ldGhvZCBhbmQgaXMgdGhlcmVmb3Jl
IGZ1bGx5IGluamVjdGFibGUuIExvY2FsIGluamVjdGlvbiBhcmd1bWVudHM6Ci0gKgotICogICAg
KiBgJGRlbGVnYXRlYCAtIFRoZSBvcmlnaW5hbCBzZXJ2aWNlIGluc3RhbmNlLCB3aGljaCBjYW4g
YmUgbW9ua2V5IHBhdGNoZWQsIGNvbmZpZ3VyZWQsCi0gKiAgICAgIGRlY29yYXRlZCBvciBkZWxl
Z2F0ZWQgdG8uCi0gKi8KLQotCi1mdW5jdGlvbiBjcmVhdGVJbmplY3Rvcihtb2R1bGVzVG9Mb2Fk
KSB7Ci0gIHZhciBJTlNUQU5USUFUSU5HID0ge30sCi0gICAgICBwcm92aWRlclN1ZmZpeCA9ICdQ
cm92aWRlcicsCi0gICAgICBwYXRoID0gW10sCi0gICAgICBsb2FkZWRNb2R1bGVzID0gbmV3IEhh
c2hNYXAoKSwKLSAgICAgIHByb3ZpZGVyQ2FjaGUgPSB7Ci0gICAgICAgICRwcm92aWRlOiB7Ci0g
ICAgICAgICAgICBwcm92aWRlcjogc3VwcG9ydE9iamVjdChwcm92aWRlciksCi0gICAgICAgICAg
ICBmYWN0b3J5OiBzdXBwb3J0T2JqZWN0KGZhY3RvcnkpLAotICAgICAgICAgICAgc2VydmljZTog
c3VwcG9ydE9iamVjdChzZXJ2aWNlKSwKLSAgICAgICAgICAgIHZhbHVlOiBzdXBwb3J0T2JqZWN0
KHZhbHVlKSwKLSAgICAgICAgICAgIGNvbnN0YW50OiBzdXBwb3J0T2JqZWN0KGNvbnN0YW50KSwK
LSAgICAgICAgICAgIGRlY29yYXRvcjogZGVjb3JhdG9yCi0gICAgICAgICAgfQotICAgICAgfSwK
LSAgICAgIHByb3ZpZGVySW5qZWN0b3IgPSBjcmVhdGVJbnRlcm5hbEluamVjdG9yKHByb3ZpZGVy
Q2FjaGUsIGZ1bmN0aW9uKCkgewotICAgICAgICB0aHJvdyBFcnJvcigiVW5rbm93biBwcm92aWRl
cjogIiArIHBhdGguam9pbignIDwtICcpKTsKLSAgICAgIH0pLAotICAgICAgaW5zdGFuY2VDYWNo
ZSA9IHt9LAotICAgICAgaW5zdGFuY2VJbmplY3RvciA9IChpbnN0YW5jZUNhY2hlLiRpbmplY3Rv
ciA9Ci0gICAgICAgICAgY3JlYXRlSW50ZXJuYWxJbmplY3RvcihpbnN0YW5jZUNhY2hlLCBmdW5j
dGlvbihzZXJ2aWNlbmFtZSkgewotICAgICAgICAgICAgdmFyIHByb3ZpZGVyID0gcHJvdmlkZXJJ
bmplY3Rvci5nZXQoc2VydmljZW5hbWUgKyBwcm92aWRlclN1ZmZpeCk7Ci0gICAgICAgICAgICBy
ZXR1cm4gaW5zdGFuY2VJbmplY3Rvci5pbnZva2UocHJvdmlkZXIuJGdldCwgcHJvdmlkZXIpOwot
ICAgICAgICAgIH0pKTsKLQotCi0gIGZvckVhY2gobG9hZE1vZHVsZXMobW9kdWxlc1RvTG9hZCks
IGZ1bmN0aW9uKGZuKSB7IGluc3RhbmNlSW5qZWN0b3IuaW52b2tlKGZuIHx8IG5vb3ApOyB9KTsK
LQotICByZXR1cm4gaW5zdGFuY2VJbmplY3RvcjsKLQotICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8KLSAgLy8gJHByb3ZpZGVyCi0gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLwotCi0gIGZ1bmN0aW9uIHN1cHBvcnRPYmplY3QoZGVsZWdhdGUpIHsKLSAg
ICByZXR1cm4gZnVuY3Rpb24oa2V5LCB2YWx1ZSkgewotICAgICAgaWYgKGlzT2JqZWN0KGtleSkp
IHsKLSAgICAgICAgZm9yRWFjaChrZXksIHJldmVyc2VQYXJhbXMoZGVsZWdhdGUpKTsKLSAgICAg
IH0gZWxzZSB7Ci0gICAgICAgIHJldHVybiBkZWxlZ2F0ZShrZXksIHZhbHVlKTsKLSAgICAgIH0K
LSAgICB9Ci0gIH0KLQotICBmdW5jdGlvbiBwcm92aWRlcihuYW1lLCBwcm92aWRlcl8pIHsKLSAg
ICBpZiAoaXNGdW5jdGlvbihwcm92aWRlcl8pIHx8IGlzQXJyYXkocHJvdmlkZXJfKSkgewotICAg
ICAgcHJvdmlkZXJfID0gcHJvdmlkZXJJbmplY3Rvci5pbnN0YW50aWF0ZShwcm92aWRlcl8pOwot
ICAgIH0KLSAgICBpZiAoIXByb3ZpZGVyXy4kZ2V0KSB7Ci0gICAgICB0aHJvdyBFcnJvcignUHJv
dmlkZXIgJyArIG5hbWUgKyAnIG11c3QgZGVmaW5lICRnZXQgZmFjdG9yeSBtZXRob2QuJyk7Ci0g
ICAgfQotICAgIHJldHVybiBwcm92aWRlckNhY2hlW25hbWUgKyBwcm92aWRlclN1ZmZpeF0gPSBw
cm92aWRlcl87Ci0gIH0KLQotICBmdW5jdGlvbiBmYWN0b3J5KG5hbWUsIGZhY3RvcnlGbikgeyBy
ZXR1cm4gcHJvdmlkZXIobmFtZSwgeyAkZ2V0OiBmYWN0b3J5Rm4gfSk7IH0KLQotICBmdW5jdGlv
biBzZXJ2aWNlKG5hbWUsIGNvbnN0cnVjdG9yKSB7Ci0gICAgcmV0dXJuIGZhY3RvcnkobmFtZSwg
WyckaW5qZWN0b3InLCBmdW5jdGlvbigkaW5qZWN0b3IpIHsKLSAgICAgIHJldHVybiAkaW5qZWN0
b3IuaW5zdGFudGlhdGUoY29uc3RydWN0b3IpOwotICAgIH1dKTsKLSAgfQotCi0gIGZ1bmN0aW9u
IHZhbHVlKG5hbWUsIHZhbHVlKSB7IHJldHVybiBmYWN0b3J5KG5hbWUsIHZhbHVlRm4odmFsdWUp
KTsgfQotCi0gIGZ1bmN0aW9uIGNvbnN0YW50KG5hbWUsIHZhbHVlKSB7Ci0gICAgcHJvdmlkZXJD
YWNoZVtuYW1lXSA9IHZhbHVlOwotICAgIGluc3RhbmNlQ2FjaGVbbmFtZV0gPSB2YWx1ZTsKLSAg
fQotCi0gIGZ1bmN0aW9uIGRlY29yYXRvcihzZXJ2aWNlTmFtZSwgZGVjb3JGbikgewotICAgIHZh
ciBvcmlnUHJvdmlkZXIgPSBwcm92aWRlckluamVjdG9yLmdldChzZXJ2aWNlTmFtZSArIHByb3Zp
ZGVyU3VmZml4KSwKLSAgICAgICAgb3JpZyRnZXQgPSBvcmlnUHJvdmlkZXIuJGdldDsKLQotICAg
IG9yaWdQcm92aWRlci4kZ2V0ID0gZnVuY3Rpb24oKSB7Ci0gICAgICB2YXIgb3JpZ0luc3RhbmNl
ID0gaW5zdGFuY2VJbmplY3Rvci5pbnZva2Uob3JpZyRnZXQsIG9yaWdQcm92aWRlcik7Ci0gICAg
ICByZXR1cm4gaW5zdGFuY2VJbmplY3Rvci5pbnZva2UoZGVjb3JGbiwgbnVsbCwgeyRkZWxlZ2F0
ZTogb3JpZ0luc3RhbmNlfSk7Ci0gICAgfTsKLSAgfQotCi0gIC8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLwotICAvLyBNb2R1bGUgTG9hZGluZwotICAvLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgZnVuY3Rpb24gbG9hZE1vZHVsZXMobW9kdWxlc1RvTG9h
ZCl7Ci0gICAgdmFyIHJ1bkJsb2NrcyA9IFtdOwotICAgIGZvckVhY2gobW9kdWxlc1RvTG9hZCwg
ZnVuY3Rpb24obW9kdWxlKSB7Ci0gICAgICBpZiAobG9hZGVkTW9kdWxlcy5nZXQobW9kdWxlKSkg
cmV0dXJuOwotICAgICAgbG9hZGVkTW9kdWxlcy5wdXQobW9kdWxlLCB0cnVlKTsKLSAgICAgIGlm
IChpc1N0cmluZyhtb2R1bGUpKSB7Ci0gICAgICAgIHZhciBtb2R1bGVGbiA9IGFuZ3VsYXJNb2R1
bGUobW9kdWxlKTsKLSAgICAgICAgcnVuQmxvY2tzID0gcnVuQmxvY2tzLmNvbmNhdChsb2FkTW9k
dWxlcyhtb2R1bGVGbi5yZXF1aXJlcykpLmNvbmNhdChtb2R1bGVGbi5fcnVuQmxvY2tzKTsKLQot
ICAgICAgICB0cnkgewotICAgICAgICAgIGZvcih2YXIgaW52b2tlUXVldWUgPSBtb2R1bGVGbi5f
aW52b2tlUXVldWUsIGkgPSAwLCBpaSA9IGludm9rZVF1ZXVlLmxlbmd0aDsgaSA8IGlpOyBpKysp
IHsKLSAgICAgICAgICAgIHZhciBpbnZva2VBcmdzID0gaW52b2tlUXVldWVbaV0sCi0gICAgICAg
ICAgICAgICAgcHJvdmlkZXIgPSBpbnZva2VBcmdzWzBdID09ICckaW5qZWN0b3InCi0gICAgICAg
ICAgICAgICAgICAgID8gcHJvdmlkZXJJbmplY3RvcgotICAgICAgICAgICAgICAgICAgICA6IHBy
b3ZpZGVySW5qZWN0b3IuZ2V0KGludm9rZUFyZ3NbMF0pOwotCi0gICAgICAgICAgICBwcm92aWRl
cltpbnZva2VBcmdzWzFdXS5hcHBseShwcm92aWRlciwgaW52b2tlQXJnc1syXSk7Ci0gICAgICAg
ICAgfQotICAgICAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgICAgaWYgKGUubWVzc2FnZSkgZS5t
ZXNzYWdlICs9ICcgZnJvbSAnICsgbW9kdWxlOwotICAgICAgICAgIHRocm93IGU7Ci0gICAgICAg
IH0KLSAgICAgIH0gZWxzZSBpZiAoaXNGdW5jdGlvbihtb2R1bGUpKSB7Ci0gICAgICAgIHRyeSB7
Ci0gICAgICAgICAgcnVuQmxvY2tzLnB1c2gocHJvdmlkZXJJbmplY3Rvci5pbnZva2UobW9kdWxl
KSk7Ci0gICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICBpZiAoZS5tZXNzYWdlKSBlLm1l
c3NhZ2UgKz0gJyBmcm9tICcgKyBtb2R1bGU7Ci0gICAgICAgICAgdGhyb3cgZTsKLSAgICAgICAg
fQotICAgICAgfSBlbHNlIGlmIChpc0FycmF5KG1vZHVsZSkpIHsKLSAgICAgICAgdHJ5IHsKLSAg
ICAgICAgICBydW5CbG9ja3MucHVzaChwcm92aWRlckluamVjdG9yLmludm9rZShtb2R1bGUpKTsK
LSAgICAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICAgIGlmIChlLm1lc3NhZ2UpIGUubWVzc2Fn
ZSArPSAnIGZyb20gJyArIFN0cmluZyhtb2R1bGVbbW9kdWxlLmxlbmd0aCAtIDFdKTsKLSAgICAg
ICAgICB0aHJvdyBlOwotICAgICAgICB9Ci0gICAgICB9IGVsc2UgewotICAgICAgICBhc3NlcnRB
cmdGbihtb2R1bGUsICdtb2R1bGUnKTsKLSAgICAgIH0KLSAgICB9KTsKLSAgICByZXR1cm4gcnVu
QmxvY2tzOwotICB9Ci0KLSAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0g
IC8vIGludGVybmFsIEluamVjdG9yCi0gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLwotCi0gIGZ1bmN0aW9uIGNyZWF0ZUludGVybmFsSW5qZWN0b3IoY2FjaGUsIGZhY3Rvcnkp
IHsKLQotICAgIGZ1bmN0aW9uIGdldFNlcnZpY2Uoc2VydmljZU5hbWUpIHsKLSAgICAgIGlmICh0
eXBlb2Ygc2VydmljZU5hbWUgIT09ICdzdHJpbmcnKSB7Ci0gICAgICAgIHRocm93IEVycm9yKCdT
ZXJ2aWNlIG5hbWUgZXhwZWN0ZWQnKTsKLSAgICAgIH0KLSAgICAgIGlmIChjYWNoZS5oYXNPd25Q
cm9wZXJ0eShzZXJ2aWNlTmFtZSkpIHsKLSAgICAgICAgaWYgKGNhY2hlW3NlcnZpY2VOYW1lXSA9
PT0gSU5TVEFOVElBVElORykgewotICAgICAgICAgIHRocm93IEVycm9yKCdDaXJjdWxhciBkZXBl
bmRlbmN5OiAnICsgcGF0aC5qb2luKCcgPC0gJykpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVy
biBjYWNoZVtzZXJ2aWNlTmFtZV07Ci0gICAgICB9IGVsc2UgewotICAgICAgICB0cnkgewotICAg
ICAgICAgIHBhdGgudW5zaGlmdChzZXJ2aWNlTmFtZSk7Ci0gICAgICAgICAgY2FjaGVbc2Vydmlj
ZU5hbWVdID0gSU5TVEFOVElBVElORzsKLSAgICAgICAgICByZXR1cm4gY2FjaGVbc2VydmljZU5h
bWVdID0gZmFjdG9yeShzZXJ2aWNlTmFtZSk7Ci0gICAgICAgIH0gZmluYWxseSB7Ci0gICAgICAg
ICAgcGF0aC5zaGlmdCgpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotCi0gICAgZnVuY3Rp
b24gaW52b2tlKGZuLCBzZWxmLCBsb2NhbHMpewotICAgICAgdmFyIGFyZ3MgPSBbXSwKLSAgICAg
ICAgICAkaW5qZWN0ID0gYW5ub3RhdGUoZm4pLAotICAgICAgICAgIGxlbmd0aCwgaSwKLSAgICAg
ICAgICBrZXk7Ci0KLSAgICAgIGZvcihpID0gMCwgbGVuZ3RoID0gJGluamVjdC5sZW5ndGg7IGkg
PCBsZW5ndGg7IGkrKykgewotICAgICAgICBrZXkgPSAkaW5qZWN0W2ldOwotICAgICAgICBhcmdz
LnB1c2goCi0gICAgICAgICAgbG9jYWxzICYmIGxvY2Fscy5oYXNPd25Qcm9wZXJ0eShrZXkpCi0g
ICAgICAgICAgPyBsb2NhbHNba2V5XQotICAgICAgICAgIDogZ2V0U2VydmljZShrZXkpCi0gICAg
ICAgICk7Ci0gICAgICB9Ci0gICAgICBpZiAoIWZuLiRpbmplY3QpIHsKLSAgICAgICAgLy8gdGhp
cyBtZWFucyB0aGF0IHdlIG11c3QgYmUgYW4gYXJyYXkuCi0gICAgICAgIGZuID0gZm5bbGVuZ3Ro
XTsKLSAgICAgIH0KLQotCi0gICAgICAvLyBQZXJmb3JtYW5jZSBvcHRpbWl6YXRpb246IGh0dHA6
Ly9qc3BlcmYuY29tL2FwcGx5LXZzLWNhbGwtdnMtaW52b2tlCi0gICAgICBzd2l0Y2ggKHNlbGYg
PyAtMSA6IGFyZ3MubGVuZ3RoKSB7Ci0gICAgICAgIGNhc2UgIDA6IHJldHVybiBmbigpOwotICAg
ICAgICBjYXNlICAxOiByZXR1cm4gZm4oYXJnc1swXSk7Ci0gICAgICAgIGNhc2UgIDI6IHJldHVy
biBmbihhcmdzWzBdLCBhcmdzWzFdKTsKLSAgICAgICAgY2FzZSAgMzogcmV0dXJuIGZuKGFyZ3Nb
MF0sIGFyZ3NbMV0sIGFyZ3NbMl0pOwotICAgICAgICBjYXNlICA0OiByZXR1cm4gZm4oYXJnc1sw
XSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSk7Ci0gICAgICAgIGNhc2UgIDU6IHJldHVybiBm
bihhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdLCBhcmdzWzNdLCBhcmdzWzRdKTsKLSAgICAgICAg
Y2FzZSAgNjogcmV0dXJuIGZuKGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0sIGFyZ3NbM10sIGFy
Z3NbNF0sIGFyZ3NbNV0pOwotICAgICAgICBjYXNlICA3OiByZXR1cm4gZm4oYXJnc1swXSwgYXJn
c1sxXSwgYXJnc1syXSwgYXJnc1szXSwgYXJnc1s0XSwgYXJnc1s1XSwgYXJnc1s2XSk7Ci0gICAg
ICAgIGNhc2UgIDg6IHJldHVybiBmbihhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdLCBhcmdzWzNd
LCBhcmdzWzRdLCBhcmdzWzVdLCBhcmdzWzZdLCBhcmdzWzddKTsKLSAgICAgICAgY2FzZSAgOTog
cmV0dXJuIGZuKGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0sIGFyZ3NbM10sIGFyZ3NbNF0sIGFy
Z3NbNV0sIGFyZ3NbNl0sIGFyZ3NbN10sIGFyZ3NbOF0pOwotICAgICAgICBjYXNlIDEwOiByZXR1
cm4gZm4oYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSwgYXJnc1s0XSwgYXJnc1s1
XSwgYXJnc1s2XSwgYXJnc1s3XSwgYXJnc1s4XSwgYXJnc1s5XSk7Ci0gICAgICAgIGRlZmF1bHQ6
IHJldHVybiBmbi5hcHBseShzZWxmLCBhcmdzKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICBmdW5j
dGlvbiBpbnN0YW50aWF0ZShUeXBlLCBsb2NhbHMpIHsKLSAgICAgIHZhciBDb25zdHJ1Y3RvciA9
IGZ1bmN0aW9uKCkge30sCi0gICAgICAgICAgaW5zdGFuY2UsIHJldHVybmVkVmFsdWU7Ci0KLSAg
ICAgIC8vIENoZWNrIGlmIFR5cGUgaXMgYW5ub3RhdGVkIGFuZCB1c2UganVzdCB0aGUgZ2l2ZW4g
ZnVuY3Rpb24gYXQgbi0xIGFzIHBhcmFtZXRlcgotICAgICAgLy8gZS5nLiBzb21lTW9kdWxlLmZh
Y3RvcnkoJ2dyZWV0ZXInLCBbJyR3aW5kb3cnLCBmdW5jdGlvbihyZW5hbWVkJHdpbmRvdykge31d
KTsKLSAgICAgIENvbnN0cnVjdG9yLnByb3RvdHlwZSA9IChpc0FycmF5KFR5cGUpID8gVHlwZVtU
eXBlLmxlbmd0aCAtIDFdIDogVHlwZSkucHJvdG90eXBlOwotICAgICAgaW5zdGFuY2UgPSBuZXcg
Q29uc3RydWN0b3IoKTsKLSAgICAgIHJldHVybmVkVmFsdWUgPSBpbnZva2UoVHlwZSwgaW5zdGFu
Y2UsIGxvY2Fscyk7Ci0KLSAgICAgIHJldHVybiBpc09iamVjdChyZXR1cm5lZFZhbHVlKSA/IHJl
dHVybmVkVmFsdWUgOiBpbnN0YW5jZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gewotICAgICAgaW52
b2tlOiBpbnZva2UsCi0gICAgICBpbnN0YW50aWF0ZTogaW5zdGFudGlhdGUsCi0gICAgICBnZXQ6
IGdldFNlcnZpY2UsCi0gICAgICBhbm5vdGF0ZTogYW5ub3RhdGUKLSAgICB9OwotICB9Ci19Ci0K
LS8qKgotICogQG5nZG9jIGZ1bmN0aW9uCi0gKiBAbmFtZSBuZy4kYW5jaG9yU2Nyb2xsCi0gKiBA
cmVxdWlyZXMgJHdpbmRvdwotICogQHJlcXVpcmVzICRsb2NhdGlvbgotICogQHJlcXVpcmVzICRy
b290U2NvcGUKLSAqCi0gKiBAZGVzY3JpcHRpb24KLSAqIFdoZW4gY2FsbGVkLCBpdCBjaGVja3Mg
Y3VycmVudCB2YWx1ZSBvZiBgJGxvY2F0aW9uLmhhc2goKWAgYW5kIHNjcm9sbCB0byByZWxhdGVk
IGVsZW1lbnQsCi0gKiBhY2NvcmRpbmcgdG8gcnVsZXMgc3BlY2lmaWVkIGluCi0gKiB7QGxpbmsg
aHR0cDovL2Rldi53My5vcmcvaHRtbDUvc3BlYy9PdmVydmlldy5odG1sI3RoZS1pbmRpY2F0ZWQt
cGFydC1vZi10aGUtZG9jdW1lbnQgSHRtbDUgc3BlY30uCi0gKgotICogSXQgYWxzbyB3YXRjaGVz
IHRoZSBgJGxvY2F0aW9uLmhhc2goKWAgYW5kIHNjcm9sbCB3aGVuZXZlciBpdCBjaGFuZ2VzIHRv
IG1hdGNoIGFueSBhbmNob3IuCi0gKiBUaGlzIGNhbiBiZSBkaXNhYmxlZCBieSBjYWxsaW5nIGAk
YW5jaG9yU2Nyb2xsUHJvdmlkZXIuZGlzYWJsZUF1dG9TY3JvbGxpbmcoKWAuCi0gKi8KLWZ1bmN0
aW9uICRBbmNob3JTY3JvbGxQcm92aWRlcigpIHsKLQotICB2YXIgYXV0b1Njcm9sbGluZ0VuYWJs
ZWQgPSB0cnVlOwotCi0gIHRoaXMuZGlzYWJsZUF1dG9TY3JvbGxpbmcgPSBmdW5jdGlvbigpIHsK
LSAgICBhdXRvU2Nyb2xsaW5nRW5hYmxlZCA9IGZhbHNlOwotICB9OwotCi0gIHRoaXMuJGdldCA9
IFsnJHdpbmRvdycsICckbG9jYXRpb24nLCAnJHJvb3RTY29wZScsIGZ1bmN0aW9uKCR3aW5kb3cs
ICRsb2NhdGlvbiwgJHJvb3RTY29wZSkgewotICAgIHZhciBkb2N1bWVudCA9ICR3aW5kb3cuZG9j
dW1lbnQ7Ci0KLSAgICAvLyBoZWxwZXIgZnVuY3Rpb24gdG8gZ2V0IGZpcnN0IGFuY2hvciBmcm9t
IGEgTm9kZUxpc3QKLSAgICAvLyBjYW4ndCB1c2UgZmlsdGVyLmZpbHRlciwgYXMgaXQgYWNjZXB0
cyBvbmx5IGluc3RhbmNlcyBvZiBBcnJheQotICAgIC8vIGFuZCBJRSBjYW4ndCBjb252ZXJ0IE5v
ZGVMaXN0IHRvIGFuIGFycmF5IHVzaW5nIFtdLnNsaWNlCi0gICAgLy8gVE9ETyh2b2p0YSk6IHVz
ZSBmaWx0ZXIgaWYgd2UgY2hhbmdlIGl0IHRvIGFjY2VwdCBsaXN0cyBhcyB3ZWxsCi0gICAgZnVu
Y3Rpb24gZ2V0Rmlyc3RBbmNob3IobGlzdCkgewotICAgICAgdmFyIHJlc3VsdCA9IG51bGw7Ci0g
ICAgICBmb3JFYWNoKGxpc3QsIGZ1bmN0aW9uKGVsZW1lbnQpIHsKLSAgICAgICAgaWYgKCFyZXN1
bHQgJiYgbG93ZXJjYXNlKGVsZW1lbnQubm9kZU5hbWUpID09PSAnYScpIHJlc3VsdCA9IGVsZW1l
bnQ7Ci0gICAgICB9KTsKLSAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi0gICAgZnVuY3Rp
b24gc2Nyb2xsKCkgewotICAgICAgdmFyIGhhc2ggPSAkbG9jYXRpb24uaGFzaCgpLCBlbG07Ci0K
LSAgICAgIC8vIGVtcHR5IGhhc2gsIHNjcm9sbCB0byB0aGUgdG9wIG9mIHRoZSBwYWdlCi0gICAg
ICBpZiAoIWhhc2gpICR3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7Ci0KLSAgICAgIC8vIGVsZW1lbnQg
d2l0aCBnaXZlbiBpZAotICAgICAgZWxzZSBpZiAoKGVsbSA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKGhhc2gpKSkgZWxtLnNjcm9sbEludG9WaWV3KCk7Ci0KLSAgICAgIC8vIGZpcnN0IGFuY2hv
ciB3aXRoIGdpdmVuIG5hbWUgOi1ECi0gICAgICBlbHNlIGlmICgoZWxtID0gZ2V0Rmlyc3RBbmNo
b3IoZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoaGFzaCkpKSkgZWxtLnNjcm9sbEludG9WaWV3
KCk7Ci0KLSAgICAgIC8vIG5vIGVsZW1lbnQgYW5kIGhhc2ggPT0gJ3RvcCcsIHNjcm9sbCB0byB0
aGUgdG9wIG9mIHRoZSBwYWdlCi0gICAgICBlbHNlIGlmIChoYXNoID09PSAndG9wJykgJHdpbmRv
dy5zY3JvbGxUbygwLCAwKTsKLSAgICB9Ci0KLSAgICAvLyBkb2VzIG5vdCBzY3JvbGwgd2hlbiB1
c2VyIGNsaWNrcyBvbiBhbmNob3IgbGluayB0aGF0IGlzIGN1cnJlbnRseSBvbgotICAgIC8vIChu
byB1cmwgY2hhbmdlLCBubyAkbG9jYXRpb24uaGFzaCgpIGNoYW5nZSksIGJyb3dzZXIgbmF0aXZl
IGRvZXMgc2Nyb2xsCi0gICAgaWYgKGF1dG9TY3JvbGxpbmdFbmFibGVkKSB7Ci0gICAgICAkcm9v
dFNjb3BlLiR3YXRjaChmdW5jdGlvbiBhdXRvU2Nyb2xsV2F0Y2goKSB7cmV0dXJuICRsb2NhdGlv
bi5oYXNoKCk7fSwKLSAgICAgICAgZnVuY3Rpb24gYXV0b1Njcm9sbFdhdGNoQWN0aW9uKCkgewot
ICAgICAgICAgICRyb290U2NvcGUuJGV2YWxBc3luYyhzY3JvbGwpOwotICAgICAgICB9KTsKLSAg
ICB9Ci0KLSAgICByZXR1cm4gc2Nyb2xsOwotICB9XTsKLX0KLQotLyoqCi0gKiAhIFRoaXMgaXMg
YSBwcml2YXRlIHVuZG9jdW1lbnRlZCBzZXJ2aWNlICEKLSAqCi0gKiBAbmFtZSBuZy4kYnJvd3Nl
cgotICogQHJlcXVpcmVzICRsb2cKLSAqIEBkZXNjcmlwdGlvbgotICogVGhpcyBvYmplY3QgaGFz
IHR3byBnb2FsczoKLSAqCi0gKiAtIGhpZGUgYWxsIHRoZSBnbG9iYWwgc3RhdGUgaW4gdGhlIGJy
b3dzZXIgY2F1c2VkIGJ5IHRoZSB3aW5kb3cgb2JqZWN0Ci0gKiAtIGFic3RyYWN0IGF3YXkgYWxs
IHRoZSBicm93c2VyIHNwZWNpZmljIGZlYXR1cmVzIGFuZCBpbmNvbnNpc3RlbmNpZXMKLSAqCi0g
KiBGb3IgdGVzdHMgd2UgcHJvdmlkZSB7QGxpbmsgbmdNb2NrLiRicm93c2VyIG1vY2sgaW1wbGVt
ZW50YXRpb259IG9mIHRoZSBgJGJyb3dzZXJgCi0gKiBzZXJ2aWNlLCB3aGljaCBjYW4gYmUgdXNl
ZCBmb3IgY29udmVuaWVudCB0ZXN0aW5nIG9mIHRoZSBhcHBsaWNhdGlvbiB3aXRob3V0IHRoZSBp
bnRlcmFjdGlvbiB3aXRoCi0gKiB0aGUgcmVhbCBicm93c2VyIGFwaXMuCi0gKi8KLS8qKgotICog
QHBhcmFtIHtvYmplY3R9IHdpbmRvdyBUaGUgZ2xvYmFsIHdpbmRvdyBvYmplY3QuCi0gKiBAcGFy
YW0ge29iamVjdH0gZG9jdW1lbnQgalF1ZXJ5IHdyYXBwZWQgZG9jdW1lbnQuCi0gKiBAcGFyYW0g
e2Z1bmN0aW9uKCl9IFhIUiBYTUxIdHRwUmVxdWVzdCBjb25zdHJ1Y3Rvci4KLSAqIEBwYXJhbSB7
b2JqZWN0fSAkbG9nIGNvbnNvbGUubG9nIG9yIGFuIG9iamVjdCB3aXRoIHRoZSBzYW1lIGludGVy
ZmFjZS4KLSAqIEBwYXJhbSB7b2JqZWN0fSAkc25pZmZlciAkc25pZmZlciBzZXJ2aWNlCi0gKi8K
LWZ1bmN0aW9uIEJyb3dzZXIod2luZG93LCBkb2N1bWVudCwgJGxvZywgJHNuaWZmZXIpIHsKLSAg
dmFyIHNlbGYgPSB0aGlzLAotICAgICAgcmF3RG9jdW1lbnQgPSBkb2N1bWVudFswXSwKLSAgICAg
IGxvY2F0aW9uID0gd2luZG93LmxvY2F0aW9uLAotICAgICAgaGlzdG9yeSA9IHdpbmRvdy5oaXN0
b3J5LAotICAgICAgc2V0VGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0LAotICAgICAgY2xlYXJU
aW1lb3V0ID0gd2luZG93LmNsZWFyVGltZW91dCwKLSAgICAgIHBlbmRpbmdEZWZlcklkcyA9IHt9
OwotCi0gIHNlbGYuaXNNb2NrID0gZmFsc2U7Ci0KLSAgdmFyIG91dHN0YW5kaW5nUmVxdWVzdENv
dW50ID0gMDsKLSAgdmFyIG91dHN0YW5kaW5nUmVxdWVzdENhbGxiYWNrcyA9IFtdOwotCi0gIC8v
IFRPRE8odm9qdGEpOiByZW1vdmUgdGhpcyB0ZW1wb3JhcnkgYXBpCi0gIHNlbGYuJCRjb21wbGV0
ZU91dHN0YW5kaW5nUmVxdWVzdCA9IGNvbXBsZXRlT3V0c3RhbmRpbmdSZXF1ZXN0OwotICBzZWxm
LiQkaW5jT3V0c3RhbmRpbmdSZXF1ZXN0Q291bnQgPSBmdW5jdGlvbigpIHsgb3V0c3RhbmRpbmdS
ZXF1ZXN0Q291bnQrKzsgfTsKLQotICAvKioKLSAgICogRXhlY3V0ZXMgdGhlIGBmbmAgZnVuY3Rp
b24oc3VwcG9ydHMgY3VycnlpbmcpIGFuZCBkZWNyZW1lbnRzIHRoZSBgb3V0c3RhbmRpbmdSZXF1
ZXN0Q2FsbGJhY2tzYAotICAgKiBjb3VudGVyLiBJZiB0aGUgY291bnRlciByZWFjaGVzIDAsIGFs
bCB0aGUgYG91dHN0YW5kaW5nUmVxdWVzdENhbGxiYWNrc2AgYXJlIGV4ZWN1dGVkLgotICAgKi8K
LSAgZnVuY3Rpb24gY29tcGxldGVPdXRzdGFuZGluZ1JlcXVlc3QoZm4pIHsKLSAgICB0cnkgewot
ICAgICAgZm4uYXBwbHkobnVsbCwgc2xpY2VBcmdzKGFyZ3VtZW50cywgMSkpOwotICAgIH0gZmlu
YWxseSB7Ci0gICAgICBvdXRzdGFuZGluZ1JlcXVlc3RDb3VudC0tOwotICAgICAgaWYgKG91dHN0
YW5kaW5nUmVxdWVzdENvdW50ID09PSAwKSB7Ci0gICAgICAgIHdoaWxlKG91dHN0YW5kaW5nUmVx
dWVzdENhbGxiYWNrcy5sZW5ndGgpIHsKLSAgICAgICAgICB0cnkgewotICAgICAgICAgICAgb3V0
c3RhbmRpbmdSZXF1ZXN0Q2FsbGJhY2tzLnBvcCgpKCk7Ci0gICAgICAgICAgfSBjYXRjaCAoZSkg
ewotICAgICAgICAgICAgJGxvZy5lcnJvcihlKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICAgIH0KLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogQHByaXZhdGUKLSAgICogTm90ZTogdGhp
cyBtZXRob2QgaXMgdXNlZCBvbmx5IGJ5IHNjZW5hcmlvIHJ1bm5lcgotICAgKiBUT0RPKHZvanRh
KTogcHJlZml4IHRoaXMgbWV0aG9kIHdpdGggJCQgPwotICAgKiBAcGFyYW0ge2Z1bmN0aW9uKCl9
IGNhbGxiYWNrIEZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBjYWxsZWQgd2hlbiBubyBvdXRzdGFuZGlu
ZyByZXF1ZXN0Ci0gICAqLwotICBzZWxmLm5vdGlmeVdoZW5Ob091dHN0YW5kaW5nUmVxdWVzdHMg
PSBmdW5jdGlvbihjYWxsYmFjaykgewotICAgIC8vIGZvcmNlIGJyb3dzZXIgdG8gZXhlY3V0ZSBh
bGwgcG9sbEZucyAtIHRoaXMgaXMgbmVlZGVkIHNvIHRoYXQgY29va2llcyBhbmQgb3RoZXIgcG9s
bGVycyBmaXJlCi0gICAgLy8gYXQgc29tZSBkZXRlcm1pbmlzdGljIHRpbWUgaW4gcmVzcGVjdCB0
byB0aGUgdGVzdCBydW5uZXIncyBhY3Rpb25zLiBMZWF2aW5nIHRoaW5ncyB1cCB0byB0aGUKLSAg
ICAvLyByZWd1bGFyIHBvbGxlciB3b3VsZCByZXN1bHQgaW4gZmxha3kgdGVzdHMuCi0gICAgZm9y
RWFjaChwb2xsRm5zLCBmdW5jdGlvbihwb2xsRm4peyBwb2xsRm4oKTsgfSk7Ci0KLSAgICBpZiAo
b3V0c3RhbmRpbmdSZXF1ZXN0Q291bnQgPT09IDApIHsKLSAgICAgIGNhbGxiYWNrKCk7Ci0gICAg
fSBlbHNlIHsKLSAgICAgIG91dHN0YW5kaW5nUmVxdWVzdENhbGxiYWNrcy5wdXNoKGNhbGxiYWNr
KTsKLSAgICB9Ci0gIH07Ci0KLSAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgLy8gUG9sbCBXYXRjaGVyIEFQSQotICAvLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
LwotICB2YXIgcG9sbEZucyA9IFtdLAotICAgICAgcG9sbFRpbWVvdXQ7Ci0KLSAgLyoqCi0gICAq
IEBuYW1lIG5nLiRicm93c2VyI2FkZFBvbGxGbgotICAgKiBAbWV0aG9kT2YgbmcuJGJyb3dzZXIK
LSAgICoKLSAgICogQHBhcmFtIHtmdW5jdGlvbigpfSBmbiBQb2xsIGZ1bmN0aW9uIHRvIGFkZAot
ICAgKgotICAgKiBAZGVzY3JpcHRpb24KLSAgICogQWRkcyBhIGZ1bmN0aW9uIHRvIHRoZSBsaXN0
IG9mIGZ1bmN0aW9ucyB0aGF0IHBvbGxlciBwZXJpb2RpY2FsbHkgZXhlY3V0ZXMsCi0gICAqIGFu
ZCBzdGFydHMgcG9sbGluZyBpZiBub3Qgc3RhcnRlZCB5ZXQuCi0gICAqCi0gICAqIEByZXR1cm5z
IHtmdW5jdGlvbigpfSB0aGUgYWRkZWQgZnVuY3Rpb24KLSAgICovCi0gIHNlbGYuYWRkUG9sbEZu
ID0gZnVuY3Rpb24oZm4pIHsKLSAgICBpZiAoaXNVbmRlZmluZWQocG9sbFRpbWVvdXQpKSBzdGFy
dFBvbGxlcigxMDAsIHNldFRpbWVvdXQpOwotICAgIHBvbGxGbnMucHVzaChmbik7Ci0gICAgcmV0
dXJuIGZuOwotICB9OwotCi0gIC8qKgotICAgKiBAcGFyYW0ge251bWJlcn0gaW50ZXJ2YWwgSG93
IG9mdGVuIHNob3VsZCBicm93c2VyIGNhbGwgcG9sbCBmdW5jdGlvbnMgKG1zKQotICAgKiBAcGFy
YW0ge2Z1bmN0aW9uKCl9IHNldFRpbWVvdXQgUmVmZXJlbmNlIHRvIGEgcmVhbCBvciBmYWtlIGBz
ZXRUaW1lb3V0YCBmdW5jdGlvbi4KLSAgICoKLSAgICogQGRlc2NyaXB0aW9uCi0gICAqIENvbmZp
Z3VyZXMgdGhlIHBvbGxlciB0byBydW4gaW4gdGhlIHNwZWNpZmllZCBpbnRlcnZhbHMsIHVzaW5n
IHRoZSBzcGVjaWZpZWQKLSAgICogc2V0VGltZW91dCBmbiBhbmQga2lja3MgaXQgb2ZmLgotICAg
Ki8KLSAgZnVuY3Rpb24gc3RhcnRQb2xsZXIoaW50ZXJ2YWwsIHNldFRpbWVvdXQpIHsKLSAgICAo
ZnVuY3Rpb24gY2hlY2soKSB7Ci0gICAgICBmb3JFYWNoKHBvbGxGbnMsIGZ1bmN0aW9uKHBvbGxG
bil7IHBvbGxGbigpOyB9KTsKLSAgICAgIHBvbGxUaW1lb3V0ID0gc2V0VGltZW91dChjaGVjaywg
aW50ZXJ2YWwpOwotICAgIH0pKCk7Ci0gIH0KLQotICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAvLyBVUkwgQVBJCi0gIC8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vCi0KLSAgdmFyIGxhc3RCcm93c2VyVXJsID0gbG9jYXRpb24uaHJlZiwKLSAgICAgIGJhc2VF
bGVtZW50ID0gZG9jdW1lbnQuZmluZCgnYmFzZScpOwotCi0gIC8qKgotICAgKiBAbmFtZSBuZy4k
YnJvd3NlciN1cmwKLSAgICogQG1ldGhvZE9mIG5nLiRicm93c2VyCi0gICAqCi0gICAqIEBkZXNj
cmlwdGlvbgotICAgKiBHRVRURVI6Ci0gICAqIFdpdGhvdXQgYW55IGFyZ3VtZW50LCB0aGlzIG1l
dGhvZCBqdXN0IHJldHVybnMgY3VycmVudCB2YWx1ZSBvZiBsb2NhdGlvbi5ocmVmLgotICAgKgot
ICAgKiBTRVRURVI6Ci0gICAqIFdpdGggYXQgbGVhc3Qgb25lIGFyZ3VtZW50LCB0aGlzIG1ldGhv
ZCBzZXRzIHVybCB0byBuZXcgdmFsdWUuCi0gICAqIElmIGh0bWw1IGhpc3RvcnkgYXBpIHN1cHBv
cnRlZCwgcHVzaFN0YXRlL3JlcGxhY2VTdGF0ZSBpcyB1c2VkLCBvdGhlcndpc2UKLSAgICogbG9j
YXRpb24uaHJlZi9sb2NhdGlvbi5yZXBsYWNlIGlzIHVzZWQuCi0gICAqIFJldHVybnMgaXRzIG93
biBpbnN0YW5jZSB0byBhbGxvdyBjaGFpbmluZwotICAgKgotICAgKiBOT1RFOiB0aGlzIGFwaSBp
cyBpbnRlbmRlZCBmb3IgdXNlIG9ubHkgYnkgdGhlICRsb2NhdGlvbiBzZXJ2aWNlLiBQbGVhc2Ug
dXNlIHRoZQotICAgKiB7QGxpbmsgbmcuJGxvY2F0aW9uICRsb2NhdGlvbiBzZXJ2aWNlfSB0byBj
aGFuZ2UgdXJsLgotICAgKgotICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsIE5ldyB1cmwgKHdoZW4g
dXNlZCBhcyBzZXR0ZXIpCi0gICAqIEBwYXJhbSB7Ym9vbGVhbj19IHJlcGxhY2UgU2hvdWxkIG5l
dyB1cmwgcmVwbGFjZSBjdXJyZW50IGhpc3RvcnkgcmVjb3JkID8KLSAgICovCi0gIHNlbGYudXJs
ID0gZnVuY3Rpb24odXJsLCByZXBsYWNlKSB7Ci0gICAgLy8gc2V0dGVyCi0gICAgaWYgKHVybCkg
ewotICAgICAgaWYgKGxhc3RCcm93c2VyVXJsID09IHVybCkgcmV0dXJuOwotICAgICAgbGFzdEJy
b3dzZXJVcmwgPSB1cmw7Ci0gICAgICBpZiAoJHNuaWZmZXIuaGlzdG9yeSkgewotICAgICAgICBp
ZiAocmVwbGFjZSkgaGlzdG9yeS5yZXBsYWNlU3RhdGUobnVsbCwgJycsIHVybCk7Ci0gICAgICAg
IGVsc2UgewotICAgICAgICAgIGhpc3RvcnkucHVzaFN0YXRlKG51bGwsICcnLCB1cmwpOwotICAg
ICAgICAgIC8vIENyYXp5IE9wZXJhIEJ1ZzogaHR0cDovL215Lm9wZXJhLmNvbS9jb21tdW5pdHkv
Zm9ydW1zL3RvcGljLmRtbD9pZD0xMTg1NDYyCi0gICAgICAgICAgYmFzZUVsZW1lbnQuYXR0cign
aHJlZicsIGJhc2VFbGVtZW50LmF0dHIoJ2hyZWYnKSk7Ci0gICAgICAgIH0KLSAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgIGlmIChyZXBsYWNlKSBsb2NhdGlvbi5yZXBsYWNlKHVybCk7Ci0gICAgICAg
IGVsc2UgbG9jYXRpb24uaHJlZiA9IHVybDsKLSAgICAgIH0KLSAgICAgIHJldHVybiBzZWxmOwot
ICAgIC8vIGdldHRlcgotICAgIH0gZWxzZSB7Ci0gICAgICAvLyB0aGUgcmVwbGFjZW1lbnQgaXMg
YSB3b3JrYXJvdW5kIGZvciBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNn
aT9pZD00MDcxNzIKLSAgICAgIHJldHVybiBsb2NhdGlvbi5ocmVmLnJlcGxhY2UoLyUyNy9nLCIn
Iik7Ci0gICAgfQotICB9OwotCi0gIHZhciB1cmxDaGFuZ2VMaXN0ZW5lcnMgPSBbXSwKLSAgICAg
IHVybENoYW5nZUluaXQgPSBmYWxzZTsKLQotICBmdW5jdGlvbiBmaXJlVXJsQ2hhbmdlKCkgewot
ICAgIGlmIChsYXN0QnJvd3NlclVybCA9PSBzZWxmLnVybCgpKSByZXR1cm47Ci0KLSAgICBsYXN0
QnJvd3NlclVybCA9IHNlbGYudXJsKCk7Ci0gICAgZm9yRWFjaCh1cmxDaGFuZ2VMaXN0ZW5lcnMs
IGZ1bmN0aW9uKGxpc3RlbmVyKSB7Ci0gICAgICBsaXN0ZW5lcihzZWxmLnVybCgpKTsKLSAgICB9
KTsKLSAgfQotCi0gIC8qKgotICAgKiBAbmFtZSBuZy4kYnJvd3NlciNvblVybENoYW5nZQotICAg
KiBAbWV0aG9kT2YgbmcuJGJyb3dzZXIKLSAgICogQFRPRE8odm9qdGEpOiByZWZhY3RvciB0byB1
c2Ugbm9kZSdzIHN5bnRheCBmb3IgZXZlbnRzCi0gICAqCi0gICAqIEBkZXNjcmlwdGlvbgotICAg
KiBSZWdpc3RlciBjYWxsYmFjayBmdW5jdGlvbiB0aGF0IHdpbGwgYmUgY2FsbGVkLCB3aGVuIHVy
bCBjaGFuZ2VzLgotICAgKgotICAgKiBJdCdzIG9ubHkgY2FsbGVkIHdoZW4gdGhlIHVybCBpcyBj
aGFuZ2VkIGJ5IG91dHNpZGUgb2YgYW5ndWxhcjoKLSAgICogLSB1c2VyIHR5cGVzIGRpZmZlcmVu
dCB1cmwgaW50byBhZGRyZXNzIGJhcgotICAgKiAtIHVzZXIgY2xpY2tzIG9uIGhpc3RvcnkgKGZv
cndhcmQvYmFjaykgYnV0dG9uCi0gICAqIC0gdXNlciBjbGlja3Mgb24gYSBsaW5rCi0gICAqCi0g
ICAqIEl0J3Mgbm90IGNhbGxlZCB3aGVuIHVybCBpcyBjaGFuZ2VkIGJ5ICRicm93c2VyLnVybCgp
IG1ldGhvZAotICAgKgotICAgKiBUaGUgbGlzdGVuZXIgZ2V0cyBjYWxsZWQgd2l0aCBuZXcgdXJs
IGFzIHBhcmFtZXRlci4KLSAgICoKLSAgICogTk9URTogdGhpcyBhcGkgaXMgaW50ZW5kZWQgZm9y
IHVzZSBvbmx5IGJ5IHRoZSAkbG9jYXRpb24gc2VydmljZS4gUGxlYXNlIHVzZSB0aGUKLSAgICog
e0BsaW5rIG5nLiRsb2NhdGlvbiAkbG9jYXRpb24gc2VydmljZX0gdG8gbW9uaXRvciB1cmwgY2hh
bmdlcyBpbiBhbmd1bGFyIGFwcHMuCi0gICAqCi0gICAqIEBwYXJhbSB7ZnVuY3Rpb24oc3RyaW5n
KX0gbGlzdGVuZXIgTGlzdGVuZXIgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gdXJsIGNoYW5n
ZXMuCi0gICAqIEByZXR1cm4ge2Z1bmN0aW9uKHN0cmluZyl9IFJldHVybnMgdGhlIHJlZ2lzdGVy
ZWQgbGlzdGVuZXIgZm4gLSBoYW5keSBpZiB0aGUgZm4gaXMgYW5vbnltb3VzLgotICAgKi8KLSAg
c2VsZi5vblVybENoYW5nZSA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7Ci0gICAgaWYgKCF1cmxDaGFu
Z2VJbml0KSB7Ci0gICAgICAvLyBXZSBsaXN0ZW4gb24gYm90aCAoaGFzaGNoYW5nZS9wb3BzdGF0
ZSkgd2hlbiBhdmFpbGFibGUsIGFzIHNvbWUgYnJvd3NlcnMgKGUuZy4gT3BlcmEpCi0gICAgICAv
LyBkb24ndCBmaXJlIHBvcHN0YXRlIHdoZW4gdXNlciBjaGFuZ2UgdGhlIGFkZHJlc3MgYmFyIGFu
ZCBkb24ndCBmaXJlIGhhc2hjaGFuZ2Ugd2hlbiB1cmwKLSAgICAgIC8vIGNoYW5nZWQgYnkgcHVz
aC9yZXBsYWNlU3RhdGUKLQotICAgICAgLy8gaHRtbDUgaGlzdG9yeSBhcGkgLSBwb3BzdGF0ZSBl
dmVudAotICAgICAgaWYgKCRzbmlmZmVyLmhpc3RvcnkpIGpxTGl0ZSh3aW5kb3cpLmJpbmQoJ3Bv
cHN0YXRlJywgZmlyZVVybENoYW5nZSk7Ci0gICAgICAvLyBoYXNoY2hhbmdlIGV2ZW50Ci0gICAg
ICBpZiAoJHNuaWZmZXIuaGFzaGNoYW5nZSkganFMaXRlKHdpbmRvdykuYmluZCgnaGFzaGNoYW5n
ZScsIGZpcmVVcmxDaGFuZ2UpOwotICAgICAgLy8gcG9sbGluZwotICAgICAgZWxzZSBzZWxmLmFk
ZFBvbGxGbihmaXJlVXJsQ2hhbmdlKTsKLQotICAgICAgdXJsQ2hhbmdlSW5pdCA9IHRydWU7Ci0g
ICAgfQotCi0gICAgdXJsQ2hhbmdlTGlzdGVuZXJzLnB1c2goY2FsbGJhY2spOwotICAgIHJldHVy
biBjYWxsYmFjazsKLSAgfTsKLQotICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAvLyBNaXNjIEFQSQotICAvLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0g
IC8qKgotICAgKiBSZXR1cm5zIGN1cnJlbnQgPGJhc2UgaHJlZj4KLSAgICogKGFsd2F5cyByZWxh
dGl2ZSAtIHdpdGhvdXQgZG9tYWluKQotICAgKgotICAgKiBAcmV0dXJucyB7c3RyaW5nPX0KLSAg
ICovCi0gIHNlbGYuYmFzZUhyZWYgPSBmdW5jdGlvbigpIHsKLSAgICB2YXIgaHJlZiA9IGJhc2VF
bGVtZW50LmF0dHIoJ2hyZWYnKTsKLSAgICByZXR1cm4gaHJlZiA/IGhyZWYucmVwbGFjZSgvXmh0
dHBzP1w6XC9cL1teXC9dKi8sICcnKSA6ICcnOwotICB9OwotCi0gIC8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gIC8vIENvb2tp
ZXMgQVBJCi0gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vCi0gIHZhciBsYXN0Q29va2llcyA9IHt9OwotICB2YXIgbGFzdENvb2tp
ZVN0cmluZyA9ICcnOwotICB2YXIgY29va2llUGF0aCA9IHNlbGYuYmFzZUhyZWYoKTsKLQotICAv
KioKLSAgICogQG5hbWUgbmcuJGJyb3dzZXIjY29va2llcwotICAgKiBAbWV0aG9kT2YgbmcuJGJy
b3dzZXIKLSAgICoKLSAgICogQHBhcmFtIHtzdHJpbmc9fSBuYW1lIENvb2tpZSBuYW1lCi0gICAq
IEBwYXJhbSB7c3RyaW5nPX0gdmFsdWUgQ29ra2llIHZhbHVlCi0gICAqCi0gICAqIEBkZXNjcmlw
dGlvbgotICAgKiBUaGUgY29va2llcyBtZXRob2QgcHJvdmlkZXMgYSAncHJpdmF0ZScgbG93IGxl
dmVsIGFjY2VzcyB0byBicm93c2VyIGNvb2tpZXMuCi0gICAqIEl0IGlzIG5vdCBtZWFudCB0byBi
ZSB1c2VkIGRpcmVjdGx5LCB1c2UgdGhlICRjb29raWUgc2VydmljZSBpbnN0ZWFkLgotICAgKgot
ICAgKiBUaGUgcmV0dXJuIHZhbHVlcyB2YXJ5IGRlcGVuZGluZyBvbiB0aGUgYXJndW1lbnRzIHRo
YXQgdGhlIG1ldGhvZCB3YXMgY2FsbGVkIHdpdGggYXMgZm9sbG93czoKLSAgICogPHVsPgotICAg
KiAgIDxsaT5jb29raWVzKCkgLT4gaGFzaCBvZiBhbGwgY29va2llcywgdGhpcyBpcyBOT1QgYSBj
b3B5IG9mIHRoZSBpbnRlcm5hbCBzdGF0ZSwgc28gZG8gbm90IG1vZGlmeSBpdDwvbGk+Ci0gICAq
ICAgPGxpPmNvb2tpZXMobmFtZSwgdmFsdWUpIC0+IHNldCBuYW1lIHRvIHZhbHVlLCBpZiB2YWx1
ZSBpcyB1bmRlZmluZWQgZGVsZXRlIHRoZSBjb29raWU8L2xpPgotICAgKiAgIDxsaT5jb29raWVz
KG5hbWUpIC0+IHRoZSBzYW1lIGFzIChuYW1lLCB1bmRlZmluZWQpID09IERFTEVURVMgKG5vIG9u
ZSBjYWxscyBpdCByaWdodCBub3cgdGhhdCB3YXkpPC9saT4KLSAgICogPC91bD4KLSAgICoKLSAg
ICogQHJldHVybnMge09iamVjdH0gSGFzaCBvZiBhbGwgY29va2llcyAoaWYgY2FsbGVkIHdpdGhv
dXQgYW55IHBhcmFtZXRlcikKLSAgICovCi0gIHNlbGYuY29va2llcyA9IGZ1bmN0aW9uKG5hbWUs
IHZhbHVlKSB7Ci0gICAgdmFyIGNvb2tpZUxlbmd0aCwgY29va2llQXJyYXksIGNvb2tpZSwgaSwg
aW5kZXg7Ci0KLSAgICBpZiAobmFtZSkgewotICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQp
IHsKLSAgICAgICAgcmF3RG9jdW1lbnQuY29va2llID0gZXNjYXBlKG5hbWUpICsgIj07cGF0aD0i
ICsgY29va2llUGF0aCArICI7ZXhwaXJlcz1UaHUsIDAxIEphbiAxOTcwIDAwOjAwOjAwIEdNVCI7
Ci0gICAgICB9IGVsc2UgewotICAgICAgICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7Ci0gICAgICAg
ICAgY29va2llTGVuZ3RoID0gKHJhd0RvY3VtZW50LmNvb2tpZSA9IGVzY2FwZShuYW1lKSArICc9
JyArIGVzY2FwZSh2YWx1ZSkgKyAnO3BhdGg9JyArIGNvb2tpZVBhdGgpLmxlbmd0aCArIDE7Ci0K
LSAgICAgICAgICAvLyBwZXIgaHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMjEwOS50eHQgYnJv
d3NlciBtdXN0IGFsbG93IGF0IG1pbmltdW06Ci0gICAgICAgICAgLy8gLSAzMDAgY29va2llcwot
ICAgICAgICAgIC8vIC0gMjAgY29va2llcyBwZXIgdW5pcXVlIGRvbWFpbgotICAgICAgICAgIC8v
IC0gNDA5NiBieXRlcyBwZXIgY29va2llCi0gICAgICAgICAgaWYgKGNvb2tpZUxlbmd0aCA+IDQw
OTYpIHsKLSAgICAgICAgICAgICRsb2cud2FybigiQ29va2llICciKyBuYW1lICsiJyBwb3NzaWJs
eSBub3Qgc2V0IG9yIG92ZXJmbG93ZWQgYmVjYXVzZSBpdCB3YXMgdG9vIGxhcmdlICgiKwotICAg
ICAgICAgICAgICBjb29raWVMZW5ndGggKyAiID4gNDA5NiBieXRlcykhIik7Ci0gICAgICAgICAg
fQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgIGlmIChyYXdEb2N1bWVu
dC5jb29raWUgIT09IGxhc3RDb29raWVTdHJpbmcpIHsKLSAgICAgICAgbGFzdENvb2tpZVN0cmlu
ZyA9IHJhd0RvY3VtZW50LmNvb2tpZTsKLSAgICAgICAgY29va2llQXJyYXkgPSBsYXN0Q29va2ll
U3RyaW5nLnNwbGl0KCI7ICIpOwotICAgICAgICBsYXN0Q29va2llcyA9IHt9OwotCi0gICAgICAg
IGZvciAoaSA9IDA7IGkgPCBjb29raWVBcnJheS5sZW5ndGg7IGkrKykgewotICAgICAgICAgIGNv
b2tpZSA9IGNvb2tpZUFycmF5W2ldOwotICAgICAgICAgIGluZGV4ID0gY29va2llLmluZGV4T2Yo
Jz0nKTsKLSAgICAgICAgICBpZiAoaW5kZXggPiAwKSB7IC8vaWdub3JlIG5hbWVsZXNzIGNvb2tp
ZXMKLSAgICAgICAgICAgIHZhciBuYW1lID0gdW5lc2NhcGUoY29va2llLnN1YnN0cmluZygwLCBp
bmRleCkpOwotICAgICAgICAgICAgLy8gdGhlIGZpcnN0IHZhbHVlIHRoYXQgaXMgc2VlbiBmb3Ig
YSBjb29raWUgaXMgdGhlIG1vc3QKLSAgICAgICAgICAgIC8vIHNwZWNpZmljIG9uZS4gIHZhbHVl
cyBmb3IgdGhlIHNhbWUgY29va2llIG5hbWUgdGhhdAotICAgICAgICAgICAgLy8gZm9sbG93IGFy
ZSBmb3IgbGVzcyBzcGVjaWZpYyBwYXRocy4KLSAgICAgICAgICAgIGlmIChsYXN0Q29va2llc1tu
YW1lXSA9PT0gdW5kZWZpbmVkKSB7Ci0gICAgICAgICAgICAgIGxhc3RDb29raWVzW25hbWVdID0g
dW5lc2NhcGUoY29va2llLnN1YnN0cmluZyhpbmRleCArIDEpKTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIHJldHVybiBsYXN0Q29va2llczsK
LSAgICB9Ci0gIH07Ci0KLQotICAvKioKLSAgICogQG5hbWUgbmcuJGJyb3dzZXIjZGVmZXIKLSAg
ICogQG1ldGhvZE9mIG5nLiRicm93c2VyCi0gICAqIEBwYXJhbSB7ZnVuY3Rpb24oKX0gZm4gQSBm
dW5jdGlvbiwgd2hvJ3MgZXhlY3V0aW9uIHNob3VsZCBiZSBkZWZlcmVkLgotICAgKiBAcGFyYW0g
e251bWJlcj19IFtkZWxheT0wXSBvZiBtaWxsaXNlY29uZHMgdG8gZGVmZXIgdGhlIGZ1bmN0aW9u
IGV4ZWN1dGlvbi4KLSAgICogQHJldHVybnMgeyp9IERlZmVySWQgdGhhdCBjYW4gYmUgdXNlZCB0
byBjYW5jZWwgdGhlIHRhc2sgdmlhIGAkYnJvd3Nlci5kZWZlci5jYW5jZWwoKWAuCi0gICAqCi0g
ICAqIEBkZXNjcmlwdGlvbgotICAgKiBFeGVjdXRlcyBhIGZuIGFzeW5jaHJvbmlvdXNseSB2aWEg
YHNldFRpbWVvdXQoZm4sIGRlbGF5KWAuCi0gICAqCi0gICAqIFVubGlrZSB3aGVuIGNhbGxpbmcg
YHNldFRpbWVvdXRgIGRpcmVjdGx5LCBpbiB0ZXN0IHRoaXMgZnVuY3Rpb24gaXMgbW9ja2VkIGFu
ZCBpbnN0ZWFkIG9mIHVzaW5nCi0gICAqIGBzZXRUaW1lb3V0YCBpbiB0ZXN0cywgdGhlIGZucyBh
cmUgcXVldWVkIGluIGFuIGFycmF5LCB3aGljaCBjYW4gYmUgcHJvZ3JhbW1hdGljYWxseSBmbHVz
aGVkCi0gICAqIHZpYSBgJGJyb3dzZXIuZGVmZXIuZmx1c2goKWAuCi0gICAqCi0gICAqLwotICBz
ZWxmLmRlZmVyID0gZnVuY3Rpb24oZm4sIGRlbGF5KSB7Ci0gICAgdmFyIHRpbWVvdXRJZDsKLSAg
ICBvdXRzdGFuZGluZ1JlcXVlc3RDb3VudCsrOwotICAgIHRpbWVvdXRJZCA9IHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7Ci0gICAgICBkZWxldGUgcGVuZGluZ0RlZmVySWRzW3RpbWVvdXRJZF07Ci0g
ICAgICBjb21wbGV0ZU91dHN0YW5kaW5nUmVxdWVzdChmbik7Ci0gICAgfSwgZGVsYXkgfHwgMCk7
Ci0gICAgcGVuZGluZ0RlZmVySWRzW3RpbWVvdXRJZF0gPSB0cnVlOwotICAgIHJldHVybiB0aW1l
b3V0SWQ7Ci0gIH07Ci0KLQotICAvKioKLSAgICogQG5hbWUgbmcuJGJyb3dzZXIjZGVmZXIuY2Fu
Y2VsCi0gICAqIEBtZXRob2RPZiBuZy4kYnJvd3Nlci5kZWZlcgotICAgKgotICAgKiBAZGVzY3Jp
cHRpb24KLSAgICogQ2FuY2VscyBhIGRlZmVyZWQgdGFzayBpZGVudGlmaWVkIHdpdGggYGRlZmVy
SWRgLgotICAgKgotICAgKiBAcGFyYW0geyp9IGRlZmVySWQgVG9rZW4gcmV0dXJuZWQgYnkgdGhl
IGAkYnJvd3Nlci5kZWZlcmAgZnVuY3Rpb24uCi0gICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1
cm5zIGB0cnVlYCBpZiB0aGUgdGFzayBoYXNuJ3QgZXhlY3V0ZWQgeWV0IGFuZCB3YXMgc3VjY2Vz
c2Z1bHkgY2FuY2VsZWQuCi0gICAqLwotICBzZWxmLmRlZmVyLmNhbmNlbCA9IGZ1bmN0aW9uKGRl
ZmVySWQpIHsKLSAgICBpZiAocGVuZGluZ0RlZmVySWRzW2RlZmVySWRdKSB7Ci0gICAgICBkZWxl
dGUgcGVuZGluZ0RlZmVySWRzW2RlZmVySWRdOwotICAgICAgY2xlYXJUaW1lb3V0KGRlZmVySWQp
OwotICAgICAgY29tcGxldGVPdXRzdGFuZGluZ1JlcXVlc3Qobm9vcCk7Ci0gICAgICByZXR1cm4g
dHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9OwotCi19Ci0KLWZ1bmN0aW9uICRC
cm93c2VyUHJvdmlkZXIoKXsKLSAgdGhpcy4kZ2V0ID0gWyckd2luZG93JywgJyRsb2cnLCAnJHNu
aWZmZXInLCAnJGRvY3VtZW50JywKLSAgICAgIGZ1bmN0aW9uKCAkd2luZG93LCAgICRsb2csICAg
JHNuaWZmZXIsICAgJGRvY3VtZW50KXsKLSAgICAgICAgcmV0dXJuIG5ldyBCcm93c2VyKCR3aW5k
b3csICRkb2N1bWVudCwgJGxvZywgJHNuaWZmZXIpOwotICAgICAgfV07Ci19Ci0KLS8qKgotICog
QG5nZG9jIG9iamVjdAotICogQG5hbWUgbmcuJGNhY2hlRmFjdG9yeQotICoKLSAqIEBkZXNjcmlw
dGlvbgotICogRmFjdG9yeSB0aGF0IGNvbnN0cnVjdHMgY2FjaGUgb2JqZWN0cy4KLSAqCi0gKgot
ICogQHBhcmFtIHtzdHJpbmd9IGNhY2hlSWQgTmFtZSBvciBpZCBvZiB0aGUgbmV3bHkgY3JlYXRl
ZCBjYWNoZS4KLSAqIEBwYXJhbSB7b2JqZWN0PX0gb3B0aW9ucyBPcHRpb25zIG9iamVjdCB0aGF0
IHNwZWNpZmllcyB0aGUgY2FjaGUgYmVoYXZpb3IuIFByb3BlcnRpZXM6Ci0gKgotICogICAtIGB7
bnVtYmVyPX1gIGBjYXBhY2l0eWAg4oCUIHR1cm5zIHRoZSBjYWNoZSBpbnRvIExSVSBjYWNoZS4K
LSAqCi0gKiBAcmV0dXJucyB7b2JqZWN0fSBOZXdseSBjcmVhdGVkIGNhY2hlIG9iamVjdCB3aXRo
IHRoZSBmb2xsb3dpbmcgc2V0IG9mIG1ldGhvZHM6Ci0gKgotICogLSBge29iamVjdH1gIGBpbmZv
KClgIOKAlCBSZXR1cm5zIGlkLCBzaXplLCBhbmQgb3B0aW9ucyBvZiBjYWNoZS4KLSAqIC0gYHt2
b2lkfWAgYHB1dCh7c3RyaW5nfSBrZXksIHsqfSB2YWx1ZSlgIOKAlCBQdXRzIGEgbmV3IGtleS12
YWx1ZSBwYWlyIGludG8gdGhlIGNhY2hlLgotICogLSBge3sqfX1gIGBnZXQoe3N0cmluZ30ga2V5
KWAg4oCUIFJldHVybnMgY2FjaGVkIHZhbHVlIGZvciBga2V5YCBvciB1bmRlZmluZWQgZm9yIGNh
Y2hlIG1pc3MuCi0gKiAtIGB7dm9pZH1gIGByZW1vdmUoe3N0cmluZ30ga2V5KWAg4oCUIFJlbW92
ZXMgYSBrZXktdmFsdWUgcGFpciBmcm9tIHRoZSBjYWNoZS4KLSAqIC0gYHt2b2lkfWAgYHJlbW92
ZUFsbCgpYCDigJQgUmVtb3ZlcyBhbGwgY2FjaGVkIHZhbHVlcy4KLSAqIC0gYHt2b2lkfWAgYGRl
c3Ryb3koKWAg4oCUIFJlbW92ZXMgcmVmZXJlbmNlcyB0byB0aGlzIGNhY2hlIGZyb20gJGNhY2hl
RmFjdG9yeS4KLSAqCi0gKi8KLWZ1bmN0aW9uICRDYWNoZUZhY3RvcnlQcm92aWRlcigpIHsKLQot
ICB0aGlzLiRnZXQgPSBmdW5jdGlvbigpIHsKLSAgICB2YXIgY2FjaGVzID0ge307Ci0KLSAgICBm
dW5jdGlvbiBjYWNoZUZhY3RvcnkoY2FjaGVJZCwgb3B0aW9ucykgewotICAgICAgaWYgKGNhY2hl
SWQgaW4gY2FjaGVzKSB7Ci0gICAgICAgIHRocm93IEVycm9yKCdjYWNoZUlkICcgKyBjYWNoZUlk
ICsgJyB0YWtlbicpOwotICAgICAgfQotCi0gICAgICB2YXIgc2l6ZSA9IDAsCi0gICAgICAgICAg
c3RhdHMgPSBleHRlbmQoe30sIG9wdGlvbnMsIHtpZDogY2FjaGVJZH0pLAotICAgICAgICAgIGRh
dGEgPSB7fSwKLSAgICAgICAgICBjYXBhY2l0eSA9IChvcHRpb25zICYmIG9wdGlvbnMuY2FwYWNp
dHkpIHx8IE51bWJlci5NQVhfVkFMVUUsCi0gICAgICAgICAgbHJ1SGFzaCA9IHt9LAotICAgICAg
ICAgIGZyZXNoRW5kID0gbnVsbCwKLSAgICAgICAgICBzdGFsZUVuZCA9IG51bGw7Ci0KLSAgICAg
IHJldHVybiBjYWNoZXNbY2FjaGVJZF0gPSB7Ci0KLSAgICAgICAgcHV0OiBmdW5jdGlvbihrZXks
IHZhbHVlKSB7Ci0gICAgICAgICAgdmFyIGxydUVudHJ5ID0gbHJ1SGFzaFtrZXldIHx8IChscnVI
YXNoW2tleV0gPSB7a2V5OiBrZXl9KTsKLQotICAgICAgICAgIHJlZnJlc2gobHJ1RW50cnkpOwot
Ci0gICAgICAgICAgaWYgKGlzVW5kZWZpbmVkKHZhbHVlKSkgcmV0dXJuOwotICAgICAgICAgIGlm
ICghKGtleSBpbiBkYXRhKSkgc2l6ZSsrOwotICAgICAgICAgIGRhdGFba2V5XSA9IHZhbHVlOwot
Ci0gICAgICAgICAgaWYgKHNpemUgPiBjYXBhY2l0eSkgewotICAgICAgICAgICAgdGhpcy5yZW1v
dmUoc3RhbGVFbmQua2V5KTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0KLQotICAgICAgICBn
ZXQ6IGZ1bmN0aW9uKGtleSkgewotICAgICAgICAgIHZhciBscnVFbnRyeSA9IGxydUhhc2hba2V5
XTsKLQotICAgICAgICAgIGlmICghbHJ1RW50cnkpIHJldHVybjsKLQotICAgICAgICAgIHJlZnJl
c2gobHJ1RW50cnkpOwotCi0gICAgICAgICAgcmV0dXJuIGRhdGFba2V5XTsKLSAgICAgICAgfSwK
LQotCi0gICAgICAgIHJlbW92ZTogZnVuY3Rpb24oa2V5KSB7Ci0gICAgICAgICAgdmFyIGxydUVu
dHJ5ID0gbHJ1SGFzaFtrZXldOwotCi0gICAgICAgICAgaWYgKCFscnVFbnRyeSkgcmV0dXJuOwot
Ci0gICAgICAgICAgaWYgKGxydUVudHJ5ID09IGZyZXNoRW5kKSBmcmVzaEVuZCA9IGxydUVudHJ5
LnA7Ci0gICAgICAgICAgaWYgKGxydUVudHJ5ID09IHN0YWxlRW5kKSBzdGFsZUVuZCA9IGxydUVu
dHJ5Lm47Ci0gICAgICAgICAgbGluayhscnVFbnRyeS5uLGxydUVudHJ5LnApOwotCi0gICAgICAg
ICAgZGVsZXRlIGxydUhhc2hba2V5XTsKLSAgICAgICAgICBkZWxldGUgZGF0YVtrZXldOwotICAg
ICAgICAgIHNpemUtLTsKLSAgICAgICAgfSwKLQotCi0gICAgICAgIHJlbW92ZUFsbDogZnVuY3Rp
b24oKSB7Ci0gICAgICAgICAgZGF0YSA9IHt9OwotICAgICAgICAgIHNpemUgPSAwOwotICAgICAg
ICAgIGxydUhhc2ggPSB7fTsKLSAgICAgICAgICBmcmVzaEVuZCA9IHN0YWxlRW5kID0gbnVsbDsK
LSAgICAgICAgfSwKLQotCi0gICAgICAgIGRlc3Ryb3k6IGZ1bmN0aW9uKCkgewotICAgICAgICAg
IGRhdGEgPSBudWxsOwotICAgICAgICAgIHN0YXRzID0gbnVsbDsKLSAgICAgICAgICBscnVIYXNo
ID0gbnVsbDsKLSAgICAgICAgICBkZWxldGUgY2FjaGVzW2NhY2hlSWRdOwotICAgICAgICB9LAot
Ci0KLSAgICAgICAgaW5mbzogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgcmV0dXJuIGV4dGVuZCh7
fSwgc3RhdHMsIHtzaXplOiBzaXplfSk7Ci0gICAgICAgIH0KLSAgICAgIH07Ci0KLQotICAgICAg
LyoqCi0gICAgICAgKiBtYWtlcyB0aGUgYGVudHJ5YCB0aGUgZnJlc2hFbmQgb2YgdGhlIExSVSBs
aW5rZWQgbGlzdAotICAgICAgICovCi0gICAgICBmdW5jdGlvbiByZWZyZXNoKGVudHJ5KSB7Ci0g
ICAgICAgIGlmIChlbnRyeSAhPSBmcmVzaEVuZCkgewotICAgICAgICAgIGlmICghc3RhbGVFbmQp
IHsKLSAgICAgICAgICAgIHN0YWxlRW5kID0gZW50cnk7Ci0gICAgICAgICAgfSBlbHNlIGlmIChz
dGFsZUVuZCA9PSBlbnRyeSkgewotICAgICAgICAgICAgc3RhbGVFbmQgPSBlbnRyeS5uOwotICAg
ICAgICAgIH0KLQotICAgICAgICAgIGxpbmsoZW50cnkubiwgZW50cnkucCk7Ci0gICAgICAgICAg
bGluayhlbnRyeSwgZnJlc2hFbmQpOwotICAgICAgICAgIGZyZXNoRW5kID0gZW50cnk7Ci0gICAg
ICAgICAgZnJlc2hFbmQubiA9IG51bGw7Ci0gICAgICAgIH0KLSAgICAgIH0KLQotCi0gICAgICAv
KioKLSAgICAgICAqIGJpZGlyZWN0aW9uYWxseSBsaW5rcyB0d28gZW50cmllcyBvZiB0aGUgTFJV
IGxpbmtlZCBsaXN0Ci0gICAgICAgKi8KLSAgICAgIGZ1bmN0aW9uIGxpbmsobmV4dEVudHJ5LCBw
cmV2RW50cnkpIHsKLSAgICAgICAgaWYgKG5leHRFbnRyeSAhPSBwcmV2RW50cnkpIHsKLSAgICAg
ICAgICBpZiAobmV4dEVudHJ5KSBuZXh0RW50cnkucCA9IHByZXZFbnRyeTsgLy9wIHN0YW5kcyBm
b3IgcHJldmlvdXMsICdwcmV2JyBkaWRuJ3QgbWluaWZ5Ci0gICAgICAgICAgaWYgKHByZXZFbnRy
eSkgcHJldkVudHJ5Lm4gPSBuZXh0RW50cnk7IC8vbiBzdGFuZHMgZm9yIG5leHQsICduZXh0JyBk
aWRuJ3QgbWluaWZ5Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0KLQotICAgIGNhY2hlRmFj
dG9yeS5pbmZvID0gZnVuY3Rpb24oKSB7Ci0gICAgICB2YXIgaW5mbyA9IHt9OwotICAgICAgZm9y
RWFjaChjYWNoZXMsIGZ1bmN0aW9uKGNhY2hlLCBjYWNoZUlkKSB7Ci0gICAgICAgIGluZm9bY2Fj
aGVJZF0gPSBjYWNoZS5pbmZvKCk7Ci0gICAgICB9KTsKLSAgICAgIHJldHVybiBpbmZvOwotICAg
IH07Ci0KLQotICAgIGNhY2hlRmFjdG9yeS5nZXQgPSBmdW5jdGlvbihjYWNoZUlkKSB7Ci0gICAg
ICByZXR1cm4gY2FjaGVzW2NhY2hlSWRdOwotICAgIH07Ci0KLQotICAgIHJldHVybiBjYWNoZUZh
Y3Rvcnk7Ci0gIH07Ci19Ci0KLS8qKgotICogQG5nZG9jIG9iamVjdAotICogQG5hbWUgbmcuJHRl
bXBsYXRlQ2FjaGUKLSAqCi0gKiBAZGVzY3JpcHRpb24KLSAqIENhY2hlIHVzZWQgZm9yIHN0b3Jp
bmcgaHRtbCB0ZW1wbGF0ZXMuCi0gKgotICogU2VlIHtAbGluayBuZy4kY2FjaGVGYWN0b3J5ICRj
YWNoZUZhY3Rvcnl9LgotICoKLSAqLwotZnVuY3Rpb24gJFRlbXBsYXRlQ2FjaGVQcm92aWRlcigp
IHsKLSAgdGhpcy4kZ2V0ID0gWyckY2FjaGVGYWN0b3J5JywgZnVuY3Rpb24oJGNhY2hlRmFjdG9y
eSkgewotICAgIHJldHVybiAkY2FjaGVGYWN0b3J5KCd0ZW1wbGF0ZXMnKTsKLSAgfV07Ci19Ci0K
LS8qICEgVkFSSUFCTEUvRlVOQ1RJT04gTkFNSU5HIENPTlZFTlRJT05TIFRIQVQgQVBQTFkgVE8g
VEhJUyBGSUxFIQotICoKLSAqIERPTS1yZWxhdGVkIHZhcmlhYmxlczoKLSAqCi0gKiAtICJub2Rl
IiAtIERPTSBOb2RlCi0gKiAtICJlbGVtZW50IiAtIERPTSBFbGVtZW50IG9yIE5vZGUKLSAqIC0g
IiRub2RlIiBvciAiJGVsZW1lbnQiIC0ganFMaXRlLXdyYXBwZWQgbm9kZSBvciBlbGVtZW50Ci0g
KgotICoKLSAqIENvbXBpbGVyIHJlbGF0ZWQgc3R1ZmY6Ci0gKgotICogLSAibGlua0ZuIiAtIGxp
bmtpbmcgZm4gb2YgYSBzaW5nbGUgZGlyZWN0aXZlCi0gKiAtICJub2RlTGlua0ZuIiAtIGZ1bmN0
aW9uIHRoYXQgYWdncmVnYXRlcyBhbGwgbGlua2luZyBmbnMgZm9yIGEgcGFydGljdWxhciBub2Rl
Ci0gKiAtICJjaGlsZExpbmtGbiIgLSAgZnVuY3Rpb24gdGhhdCBhZ2dyZWdhdGVzIGFsbCBsaW5r
aW5nIGZucyBmb3IgY2hpbGQgbm9kZXMgb2YgYSBwYXJ0aWN1bGFyIG5vZGUKLSAqIC0gImNvbXBv
c2l0ZUxpbmtGbiIgLSBmdW5jdGlvbiB0aGF0IGFnZ3JlZ2F0ZXMgYWxsIGxpbmtpbmcgZm5zIGZv
ciBhIGNvbXBpbGF0aW9uIHJvb3QgKG5vZGVMaXN0KQotICovCi0KLQotdmFyIE5PTl9BU1NJR05B
QkxFX01PREVMX0VYUFJFU1NJT04gPSAnTm9uLWFzc2lnbmFibGUgbW9kZWwgZXhwcmVzc2lvbjog
JzsKLQotCi0vKioKLSAqIEBuZ2RvYyBmdW5jdGlvbgotICogQG5hbWUgbmcuJGNvbXBpbGUKLSAq
IEBmdW5jdGlvbgotICoKLSAqIEBkZXNjcmlwdGlvbgotICogQ29tcGlsZXMgYSBwaWVjZSBvZiBI
VE1MIHN0cmluZyBvciBET00gaW50byBhIHRlbXBsYXRlIGFuZCBwcm9kdWNlcyBhIHRlbXBsYXRl
IGZ1bmN0aW9uLCB3aGljaAotICogY2FuIHRoZW4gYmUgdXNlZCB0byBsaW5rIHtAbGluayBuZy4k
cm9vdFNjb3BlLlNjb3BlIHNjb3BlfSBhbmQgdGhlIHRlbXBsYXRlIHRvZ2V0aGVyLgotICoKLSAq
IFRoZSBjb21waWxhdGlvbiBpcyBhIHByb2Nlc3Mgb2Ygd2Fsa2luZyB0aGUgRE9NIHRyZWUgYW5k
IHRyeWluZyB0byBtYXRjaCBET00gZWxlbWVudHMgdG8KLSAqIHtAbGluayBuZy4kY29tcGlsZVBy
b3ZpZGVyI2RpcmVjdGl2ZSBkaXJlY3RpdmVzfS4gRm9yIGVhY2ggbWF0Y2ggaXQKLSAqIGV4ZWN1
dGVzIGNvcnJlc3BvbmRpbmcgdGVtcGxhdGUgZnVuY3Rpb24gYW5kIGNvbGxlY3RzIHRoZQotICog
aW5zdGFuY2UgZnVuY3Rpb25zIGludG8gYSBzaW5nbGUgdGVtcGxhdGUgZnVuY3Rpb24gd2hpY2gg
aXMgdGhlbiByZXR1cm5lZC4KLSAqCi0gKiBUaGUgdGVtcGxhdGUgZnVuY3Rpb24gY2FuIHRoZW4g
YmUgdXNlZCBvbmNlIHRvIHByb2R1Y2UgdGhlIHZpZXcgb3IgYXMgaXQgaXMgdGhlIGNhc2Ugd2l0
aAotICoge0BsaW5rIG5nLmRpcmVjdGl2ZTpuZ1JlcGVhdCByZXBlYXRlcn0gbWFueS10aW1lcywg
aW4gd2hpY2gKLSAqIGNhc2UgZWFjaCBjYWxsIHJlc3VsdHMgaW4gYSB2aWV3IHRoYXQgaXMgYSBE
T00gY2xvbmUgb2YgdGhlIG9yaWdpbmFsIHRlbXBsYXRlLgotICoKLSA8ZG9jOmV4YW1wbGUgbW9k
dWxlPSJjb21waWxlIj4KLSAgIDxkb2M6c291cmNlPgotICAgIDxzY3JpcHQ+Ci0gICAgICAvLyBk
ZWNsYXJlIGEgbmV3IG1vZHVsZSwgYW5kIGluamVjdCB0aGUgJGNvbXBpbGVQcm92aWRlcgotICAg
ICAgYW5ndWxhci5tb2R1bGUoJ2NvbXBpbGUnLCBbXSwgZnVuY3Rpb24oJGNvbXBpbGVQcm92aWRl
cikgewotICAgICAgICAvLyBjb25maWd1cmUgbmV3ICdjb21waWxlJyBkaXJlY3RpdmUgYnkgcGFz
c2luZyBhIGRpcmVjdGl2ZQotICAgICAgICAvLyBmYWN0b3J5IGZ1bmN0aW9uLiBUaGUgZmFjdG9y
eSBmdW5jdGlvbiBpbmplY3RzIHRoZSAnJGNvbXBpbGUnCi0gICAgICAgICRjb21waWxlUHJvdmlk
ZXIuZGlyZWN0aXZlKCdjb21waWxlJywgZnVuY3Rpb24oJGNvbXBpbGUpIHsKLSAgICAgICAgICAv
LyBkaXJlY3RpdmUgZmFjdG9yeSBjcmVhdGVzIGEgbGluayBmdW5jdGlvbgotICAgICAgICAgIHJl
dHVybiBmdW5jdGlvbihzY29wZSwgZWxlbWVudCwgYXR0cnMpIHsKLSAgICAgICAgICAgIHNjb3Bl
LiR3YXRjaCgKLSAgICAgICAgICAgICAgZnVuY3Rpb24oc2NvcGUpIHsKLSAgICAgICAgICAgICAg
ICAgLy8gd2F0Y2ggdGhlICdjb21waWxlJyBleHByZXNzaW9uIGZvciBjaGFuZ2VzCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIHNjb3BlLiRldmFsKGF0dHJzLmNvbXBpbGUpOwotICAgICAgICAgICAg
ICB9LAotICAgICAgICAgICAgICBmdW5jdGlvbih2YWx1ZSkgewotICAgICAgICAgICAgICAgIC8v
IHdoZW4gdGhlICdjb21waWxlJyBleHByZXNzaW9uIGNoYW5nZXMKLSAgICAgICAgICAgICAgICAv
LyBhc3NpZ24gaXQgaW50byB0aGUgY3VycmVudCBET00KLSAgICAgICAgICAgICAgICBlbGVtZW50
Lmh0bWwodmFsdWUpOwotCi0gICAgICAgICAgICAgICAgLy8gY29tcGlsZSB0aGUgbmV3IERPTSBh
bmQgbGluayBpdCB0byB0aGUgY3VycmVudAotICAgICAgICAgICAgICAgIC8vIHNjb3BlLgotICAg
ICAgICAgICAgICAgIC8vIE5PVEU6IHdlIG9ubHkgY29tcGlsZSAuY2hpbGROb2RlcyBzbyB0aGF0
Ci0gICAgICAgICAgICAgICAgLy8gd2UgZG9uJ3QgZ2V0IGludG8gaW5maW5pdGUgbG9vcCBjb21w
aWxpbmcgb3Vyc2VsdmVzCi0gICAgICAgICAgICAgICAgJGNvbXBpbGUoZWxlbWVudC5jb250ZW50
cygpKShzY29wZSk7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICk7Ci0gICAgICAgICAg
fTsKLSAgICAgICAgfSkKLSAgICAgIH0pOwotCi0gICAgICBmdW5jdGlvbiBDdHJsKCRzY29wZSkg
ewotICAgICAgICAkc2NvcGUubmFtZSA9ICdBbmd1bGFyJzsKLSAgICAgICAgJHNjb3BlLmh0bWwg
PSAnSGVsbG8ge3tuYW1lfX0nOwotICAgICAgfQotICAgIDwvc2NyaXB0PgotICAgIDxkaXYgbmct
Y29udHJvbGxlcj0iQ3RybCI+Ci0gICAgICA8aW5wdXQgbmctbW9kZWw9Im5hbWUiPiA8YnI+Ci0g
ICAgICA8dGV4dGFyZWEgbmctbW9kZWw9Imh0bWwiPjwvdGV4dGFyZWE+IDxicj4KLSAgICAgIDxk
aXYgY29tcGlsZT0iaHRtbCI+PC9kaXY+Ci0gICAgPC9kaXY+Ci0gICA8L2RvYzpzb3VyY2U+Ci0g
ICA8ZG9jOnNjZW5hcmlvPgotICAgICBpdCgnc2hvdWxkIGF1dG8gY29tcGlsZScsIGZ1bmN0aW9u
KCkgewotICAgICAgIGV4cGVjdChlbGVtZW50KCdkaXZbY29tcGlsZV0nKS50ZXh0KCkpLnRvQmUo
J0hlbGxvIEFuZ3VsYXInKTsKLSAgICAgICBpbnB1dCgnaHRtbCcpLmVudGVyKCd7e25hbWV9fSEn
KTsKLSAgICAgICBleHBlY3QoZWxlbWVudCgnZGl2W2NvbXBpbGVdJykudGV4dCgpKS50b0JlKCdB
bmd1bGFyIScpOwotICAgICB9KTsKLSAgIDwvZG9jOnNjZW5hcmlvPgotIDwvZG9jOmV4YW1wbGU+
Ci0KLSAqCi0gKgotICogQHBhcmFtIHtzdHJpbmd8RE9NRWxlbWVudH0gZWxlbWVudCBFbGVtZW50
IG9yIEhUTUwgc3RyaW5nIHRvIGNvbXBpbGUgaW50byBhIHRlbXBsYXRlIGZ1bmN0aW9uLgotICog
QHBhcmFtIHtmdW5jdGlvbihhbmd1bGFyLlNjb3BlWywgY2xvbmVBdHRhY2hGbl19IHRyYW5zY2x1
ZGUgZnVuY3Rpb24gYXZhaWxhYmxlIHRvIGRpcmVjdGl2ZXMuCi0gKiBAcGFyYW0ge251bWJlcn0g
bWF4UHJpb3JpdHkgb25seSBhcHBseSBkaXJlY3RpdmVzIGxvd2VyIHRoZW4gZ2l2ZW4gcHJpb3Jp
dHkgKE9ubHkgZWZmZWN0cyB0aGUKLSAqICAgICAgICAgICAgICAgICByb290IGVsZW1lbnQocyks
IG5vdCB0aGVpciBjaGlsZHJlbikKLSAqIEByZXR1cm5zIHtmdW5jdGlvbihzY29wZVssIGNsb25l
QXR0YWNoRm5dKX0gYSBsaW5rIGZ1bmN0aW9uIHdoaWNoIGlzIHVzZWQgdG8gYmluZCB0ZW1wbGF0
ZQotICogKGEgRE9NIGVsZW1lbnQvdHJlZSkgdG8gYSBzY29wZS4gV2hlcmU6Ci0gKgotICogICog
YHNjb3BlYCAtIEEge0BsaW5rIG5nLiRyb290U2NvcGUuU2NvcGUgU2NvcGV9IHRvIGJpbmQgdG8u
Ci0gKiAgKiBgY2xvbmVBdHRhY2hGbmAgLSBJZiBgY2xvbmVBdHRhY2hGbmAgaXMgcHJvdmlkZWQs
IHRoZW4gdGhlIGxpbmsgZnVuY3Rpb24gd2lsbCBjbG9uZSB0aGUKLSAqICAgICAgICAgICAgICAg
YHRlbXBsYXRlYCBhbmQgY2FsbCB0aGUgYGNsb25lQXR0YWNoRm5gIGZ1bmN0aW9uIGFsbG93aW5n
IHRoZSBjYWxsZXIgdG8gYXR0YWNoIHRoZQotICogICAgICAgICAgICAgICBjbG9uZWQgZWxlbWVu
dHMgdG8gdGhlIERPTSBkb2N1bWVudCBhdCB0aGUgYXBwcm9wcmlhdGUgcGxhY2UuIFRoZSBgY2xv
bmVBdHRhY2hGbmAgaXMKLSAqICAgICAgICAgICAgICAgY2FsbGVkIGFzOiA8YnI+IGBjbG9uZUF0
dGFjaEZuKGNsb25lZEVsZW1lbnQsIHNjb3BlKWAgd2hlcmU6Ci0gKgotICogICAgICAqIGBjbG9u
ZWRFbGVtZW50YCAtIGlzIGEgY2xvbmUgb2YgdGhlIG9yaWdpbmFsIGBlbGVtZW50YCBwYXNzZWQg
aW50byB0aGUgY29tcGlsZXIuCi0gKiAgICAgICogYHNjb3BlYCAtIGlzIHRoZSBjdXJyZW50IHNj
b3BlIHdpdGggd2hpY2ggdGhlIGxpbmtpbmcgZnVuY3Rpb24gaXMgd29ya2luZyB3aXRoLgotICoK
LSAqIENhbGxpbmcgdGhlIGxpbmtpbmcgZnVuY3Rpb24gcmV0dXJucyB0aGUgZWxlbWVudCBvZiB0
aGUgdGVtcGxhdGUuIEl0IGlzIGVpdGhlciB0aGUgb3JpZ2luYWwgZWxlbWVudAotICogcGFzc2Vk
IGluLCBvciB0aGUgY2xvbmUgb2YgdGhlIGVsZW1lbnQgaWYgdGhlIGBjbG9uZUF0dGFjaEZuYCBp
cyBwcm92aWRlZC4KLSAqCi0gKiBBZnRlciBsaW5raW5nIHRoZSB2aWV3IGlzIG5vdCB1cGRhdGVk
IHVudGlsIGFmdGVyIGEgY2FsbCB0byAkZGlnZXN0IHdoaWNoIHR5cGljYWxseSBpcyBkb25lIGJ5
Ci0gKiBBbmd1bGFyIGF1dG9tYXRpY2FsbHkuCi0gKgotICogSWYgeW91IG5lZWQgYWNjZXNzIHRv
IHRoZSBib3VuZCB2aWV3LCB0aGVyZSBhcmUgdHdvIHdheXMgdG8gZG8gaXQ6Ci0gKgotICogLSBJ
ZiB5b3UgYXJlIG5vdCBhc2tpbmcgdGhlIGxpbmtpbmcgZnVuY3Rpb24gdG8gY2xvbmUgdGhlIHRl
bXBsYXRlLCBjcmVhdGUgdGhlIERPTSBlbGVtZW50KHMpCi0gKiAgIGJlZm9yZSB5b3Ugc2VuZCB0
aGVtIHRvIHRoZSBjb21waWxlciBhbmQga2VlcCB0aGlzIHJlZmVyZW5jZSBhcm91bmQuCi0gKiAg
IDxwcmU+Ci0gKiAgICAgdmFyIGVsZW1lbnQgPSAkY29tcGlsZSgnPHA+e3t0b3RhbH19PC9wPicp
KHNjb3BlKTsKLSAqICAgPC9wcmU+Ci0gKgotICogLSBpZiBvbiB0aGUgb3RoZXIgaGFuZCwgeW91
IG5lZWQgdGhlIGVsZW1lbnQgdG8gYmUgY2xvbmVkLCB0aGUgdmlldyByZWZlcmVuY2UgZnJvbSB0
aGUgb3JpZ2luYWwKLSAqICAgZXhhbXBsZSB3b3VsZCBub3QgcG9pbnQgdG8gdGhlIGNsb25lLCBi
dXQgcmF0aGVyIHRvIHRoZSBvcmlnaW5hbCB0ZW1wbGF0ZSB0aGF0IHdhcyBjbG9uZWQuIEluCi0g
KiAgIHRoaXMgY2FzZSwgeW91IGNhbiBhY2Nlc3MgdGhlIGNsb25lIHZpYSB0aGUgY2xvbmVBdHRh
Y2hGbjoKLSAqICAgPHByZT4KLSAqICAgICB2YXIgdGVtcGxhdGVIVE1MID0gYW5ndWxhci5lbGVt
ZW50KCc8cD57e3RvdGFsfX08L3A+JyksCi0gKiAgICAgICAgIHNjb3BlID0gLi4uLjsKLSAqCi0g
KiAgICAgdmFyIGNsb25lZEVsZW1lbnQgPSAkY29tcGlsZSh0ZW1wbGF0ZUhUTUwpKHNjb3BlLCBm
dW5jdGlvbihjbG9uZWRFbGVtZW50LCBzY29wZSkgewotICogICAgICAgLy9hdHRhY2ggdGhlIGNs
b25lIHRvIERPTSBkb2N1bWVudCBhdCB0aGUgcmlnaHQgcGxhY2UKLSAqICAgICB9KTsKLSAqCi0g
KiAgICAgLy9ub3cgd2UgaGF2ZSByZWZlcmVuY2UgdG8gdGhlIGNsb25lZCBET00gdmlhIGBjbG9u
ZWAKLSAqICAgPC9wcmU+Ci0gKgotICoKLSAqIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdGhlIGNv
bXBpbGVyIHdvcmtzLCBzZWUgdGhlCi0gKiB7QGxpbmsgZ3VpZGUvY29tcGlsZXIgQW5ndWxhciBI
VE1MIENvbXBpbGVyfSBzZWN0aW9uIG9mIHRoZSBEZXZlbG9wZXIgR3VpZGUuCi0gKi8KLQotCi0v
KioKLSAqIEBuZ2RvYyBzZXJ2aWNlCi0gKiBAbmFtZSBuZy4kY29tcGlsZVByb3ZpZGVyCi0gKiBA
ZnVuY3Rpb24KLSAqCi0gKiBAZGVzY3JpcHRpb24KLSAqLwotJENvbXBpbGVQcm92aWRlci4kaW5q
ZWN0ID0gWyckcHJvdmlkZSddOwotZnVuY3Rpb24gJENvbXBpbGVQcm92aWRlcigkcHJvdmlkZSkg
ewotICB2YXIgaGFzRGlyZWN0aXZlcyA9IHt9LAotICAgICAgU3VmZml4ID0gJ0RpcmVjdGl2ZScs
Ci0gICAgICBDT01NRU5UX0RJUkVDVElWRV9SRUdFWFAgPSAvXlxzKmRpcmVjdGl2ZVw6XHMqKFtc
ZFx3XC1fXSspXHMrKC4qKSQvLAotICAgICAgQ0xBU1NfRElSRUNUSVZFX1JFR0VYUCA9IC8oKFtc
ZFx3XC1fXSspKD86XDooW147XSspKT87PykvLAotICAgICAgTVVMVElfUk9PVF9URU1QTEFURV9F
UlJPUiA9ICdUZW1wbGF0ZSBtdXN0IGhhdmUgZXhhY3RseSBvbmUgcm9vdCBlbGVtZW50LiB3YXM6
ICcsCi0gICAgICB1cmxTYW5pdGl6YXRpb25XaGl0ZWxpc3QgPSAvXlxzKihodHRwcz98ZnRwfG1h
aWx0b3xmaWxlKTovOwotCi0KLSAgLyoqCi0gICAqIEBuZ2RvYyBmdW5jdGlvbgotICAgKiBAbmFt
ZSBuZy4kY29tcGlsZVByb3ZpZGVyI2RpcmVjdGl2ZQotICAgKiBAbWV0aG9kT2YgbmcuJGNvbXBp
bGVQcm92aWRlcgotICAgKiBAZnVuY3Rpb24KLSAgICoKLSAgICogQGRlc2NyaXB0aW9uCi0gICAq
IFJlZ2lzdGVyIGEgbmV3IGRpcmVjdGl2ZXMgd2l0aCB0aGUgY29tcGlsZXIuCi0gICAqCi0gICAq
IEBwYXJhbSB7c3RyaW5nfSBuYW1lIE5hbWUgb2YgdGhlIGRpcmVjdGl2ZSBpbiBjYW1lbC1jYXNl
LiAoaWUgPGNvZGU+bmdCaW5kPC9jb2RlPiB3aGljaCB3aWxsIG1hdGNoIGFzCi0gICAqICAgICAg
ICAgICAgICAgIDxjb2RlPm5nLWJpbmQ8L2NvZGU+KS4KLSAgICogQHBhcmFtIHtmdW5jdGlvbn0g
ZGlyZWN0aXZlRmFjdG9yeSBBbiBpbmplY3RhYmxlIGRpcmVjdGl2ZSBmYWN0cm95IGZ1bmN0aW9u
LiBTZWUge0BsaW5rIGd1aWRlL2RpcmVjdGl2ZX0gZm9yIG1vcmUKLSAgICogICAgICAgICAgICAg
ICAgaW5mby4KLSAgICogQHJldHVybnMge25nLiRjb21waWxlUHJvdmlkZXJ9IFNlbGYgZm9yIGNo
YWluaW5nLgotICAgKi8KLSAgIHRoaXMuZGlyZWN0aXZlID0gZnVuY3Rpb24gcmVnaXN0ZXJEaXJl
Y3RpdmUobmFtZSwgZGlyZWN0aXZlRmFjdG9yeSkgewotICAgIGlmIChpc1N0cmluZyhuYW1lKSkg
ewotICAgICAgYXNzZXJ0QXJnKGRpcmVjdGl2ZUZhY3RvcnksICdkaXJlY3RpdmUnKTsKLSAgICAg
IGlmICghaGFzRGlyZWN0aXZlcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkgewotICAgICAgICBoYXNE
aXJlY3RpdmVzW25hbWVdID0gW107Ci0gICAgICAgICRwcm92aWRlLmZhY3RvcnkobmFtZSArIFN1
ZmZpeCwgWyckaW5qZWN0b3InLCAnJGV4Y2VwdGlvbkhhbmRsZXInLAotICAgICAgICAgIGZ1bmN0
aW9uKCRpbmplY3RvciwgJGV4Y2VwdGlvbkhhbmRsZXIpIHsKLSAgICAgICAgICAgIHZhciBkaXJl
Y3RpdmVzID0gW107Ci0gICAgICAgICAgICBmb3JFYWNoKGhhc0RpcmVjdGl2ZXNbbmFtZV0sIGZ1
bmN0aW9uKGRpcmVjdGl2ZUZhY3RvcnkpIHsKLSAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAg
ICAgICAgICB2YXIgZGlyZWN0aXZlID0gJGluamVjdG9yLmludm9rZShkaXJlY3RpdmVGYWN0b3J5
KTsKLSAgICAgICAgICAgICAgICBpZiAoaXNGdW5jdGlvbihkaXJlY3RpdmUpKSB7Ci0gICAgICAg
ICAgICAgICAgICBkaXJlY3RpdmUgPSB7IGNvbXBpbGU6IHZhbHVlRm4oZGlyZWN0aXZlKSB9Owot
ICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWRpcmVjdGl2ZS5jb21waWxlICYmIGRpcmVjdGl2
ZS5saW5rKSB7Ci0gICAgICAgICAgICAgICAgICBkaXJlY3RpdmUuY29tcGlsZSA9IHZhbHVlRm4o
ZGlyZWN0aXZlLmxpbmspOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBkaXJl
Y3RpdmUucHJpb3JpdHkgPSBkaXJlY3RpdmUucHJpb3JpdHkgfHwgMDsKLSAgICAgICAgICAgICAg
ICBkaXJlY3RpdmUubmFtZSA9IGRpcmVjdGl2ZS5uYW1lIHx8IG5hbWU7Ci0gICAgICAgICAgICAg
ICAgZGlyZWN0aXZlLnJlcXVpcmUgPSBkaXJlY3RpdmUucmVxdWlyZSB8fCAoZGlyZWN0aXZlLmNv
bnRyb2xsZXIgJiYgZGlyZWN0aXZlLm5hbWUpOwotICAgICAgICAgICAgICAgIGRpcmVjdGl2ZS5y
ZXN0cmljdCA9IGRpcmVjdGl2ZS5yZXN0cmljdCB8fCAnQSc7Ci0gICAgICAgICAgICAgICAgZGly
ZWN0aXZlcy5wdXNoKGRpcmVjdGl2ZSk7Ci0gICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAg
ICAgICAgICAgICAgICAkZXhjZXB0aW9uSGFuZGxlcihlKTsKLSAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgfSk7Ci0gICAgICAgICAgICByZXR1cm4gZGlyZWN0aXZlczsKLSAgICAgICAgICB9
XSk7Ci0gICAgICB9Ci0gICAgICBoYXNEaXJlY3RpdmVzW25hbWVdLnB1c2goZGlyZWN0aXZlRmFj
dG9yeSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIGZvckVhY2gobmFtZSwgcmV2ZXJzZVBhcmFtcyhy
ZWdpc3RlckRpcmVjdGl2ZSkpOwotICAgIH0KLSAgICByZXR1cm4gdGhpczsKLSAgfTsKLQotCi0g
IC8qKgotICAgKiBAbmdkb2MgZnVuY3Rpb24KLSAgICogQG5hbWUgbmcuJGNvbXBpbGVQcm92aWRl
ciN1cmxTYW5pdGl6YXRpb25XaGl0ZWxpc3QKLSAgICogQG1ldGhvZE9mIG5nLiRjb21waWxlUHJv
dmlkZXIKLSAgICogQGZ1bmN0aW9uCi0gICAqCi0gICAqIEBkZXNjcmlwdGlvbgotICAgKiBSZXRy
aWV2ZXMgb3Igb3ZlcnJpZGVzIHRoZSBkZWZhdWx0IHJlZ3VsYXIgZXhwcmVzc2lvbiB0aGF0IGlz
IHVzZWQgZm9yIHdoaXRlbGlzdGluZyBvZiBzYWZlCi0gICAqIHVybHMgZHVyaW5nIGFbaHJlZl0g
c2FuaXRpemF0aW9uLgotICAgKgotICAgKiBUaGUgc2FuaXRpemF0aW9uIGlzIGEgc2VjdXJpdHkg
bWVhc3VyZSBhaW1lZCBhdCBwcmV2ZW50IFhTUyBhdHRhY2tzIHZpYSBodG1sIGxpbmtzLgotICAg
KgotICAgKiBBbnkgdXJsIGFib3V0IHRvIGJlIGFzc2lnbmVkIHRvIGFbaHJlZl0gdmlhIGRhdGEt
YmluZGluZyBpcyBmaXJzdCBub3JtYWxpemVkIGFuZCB0dXJuZWQgaW50byBhbgotICAgKiBhYnNv
bHV0ZSB1cmwuIEFmdGVyd2FyZHMgdGhlIHVybCBpcyBtYXRjaGVkIGFnYWluc3QgdGhlIGB1cmxT
YW5pdGl6YXRpb25XaGl0ZWxpc3RgIHJlZ3VsYXIKLSAgICogZXhwcmVzc2lvbi4gSWYgYSBtYXRj
aCBpcyBmb3VuZCB0aGUgb3JpZ2luYWwgdXJsIGlzIHdyaXR0ZW4gaW50byB0aGUgZG9tLiBPdGhl
cndpc2UgdGhlCi0gICAqIGFic29sdXRlIHVybCBpcyBwcmVmaXhlZCB3aXRoIGAndW5zYWZlOidg
IHN0cmluZyBhbmQgb25seSB0aGVuIGl0IGlzIHdyaXR0ZW4gaW50byB0aGUgRE9NLgotICAgKgot
ICAgKiBAcGFyYW0ge1JlZ0V4cD19IHJlZ2V4cCBOZXcgcmVnZXhwIHRvIHdoaXRlbGlzdCB1cmxz
IHdpdGguCi0gICAqIEByZXR1cm5zIHtSZWdFeHB8bmcuJGNvbXBpbGVQcm92aWRlcn0gQ3VycmVu
dCBSZWdFeHAgaWYgY2FsbGVkIHdpdGhvdXQgdmFsdWUgb3Igc2VsZiBmb3IKLSAgICogICAgY2hh
aW5pbmcgb3RoZXJ3aXNlLgotICAgKi8KLSAgdGhpcy51cmxTYW5pdGl6YXRpb25XaGl0ZWxpc3Qg
PSBmdW5jdGlvbihyZWdleHApIHsKLSAgICBpZiAoaXNEZWZpbmVkKHJlZ2V4cCkpIHsKLSAgICAg
IHVybFNhbml0aXphdGlvbldoaXRlbGlzdCA9IHJlZ2V4cDsKLSAgICAgIHJldHVybiB0aGlzOwot
ICAgIH0KLSAgICByZXR1cm4gdXJsU2FuaXRpemF0aW9uV2hpdGVsaXN0OwotICB9OwotCi0KLSAg
dGhpcy4kZ2V0ID0gWwotICAgICAgICAgICAgJyRpbmplY3RvcicsICckaW50ZXJwb2xhdGUnLCAn
JGV4Y2VwdGlvbkhhbmRsZXInLCAnJGh0dHAnLCAnJHRlbXBsYXRlQ2FjaGUnLCAnJHBhcnNlJywK
LSAgICAgICAgICAgICckY29udHJvbGxlcicsICckcm9vdFNjb3BlJywgJyRkb2N1bWVudCcsCi0g
ICAgZnVuY3Rpb24oJGluamVjdG9yLCAgICRpbnRlcnBvbGF0ZSwgICAkZXhjZXB0aW9uSGFuZGxl
ciwgICAkaHR0cCwgICAkdGVtcGxhdGVDYWNoZSwgICAkcGFyc2UsCi0gICAgICAgICAgICAgJGNv
bnRyb2xsZXIsICAgJHJvb3RTY29wZSwgICAkZG9jdW1lbnQpIHsKLQotICAgIHZhciBBdHRyaWJ1
dGVzID0gZnVuY3Rpb24oZWxlbWVudCwgYXR0cikgewotICAgICAgdGhpcy4kJGVsZW1lbnQgPSBl
bGVtZW50OwotICAgICAgdGhpcy4kYXR0ciA9IGF0dHIgfHwge307Ci0gICAgfTsKLQotICAgIEF0
dHJpYnV0ZXMucHJvdG90eXBlID0gewotICAgICAgJG5vcm1hbGl6ZTogZGlyZWN0aXZlTm9ybWFs
aXplLAotCi0KLSAgICAgIC8qKgotICAgICAgICogU2V0IGEgbm9ybWFsaXplZCBhdHRyaWJ1dGUg
b24gdGhlIGVsZW1lbnQgaW4gYSB3YXkgc3VjaCB0aGF0IGFsbCBkaXJlY3RpdmVzCi0gICAgICAg
KiBjYW4gc2hhcmUgdGhlIGF0dHJpYnV0ZS4gVGhpcyBmdW5jdGlvbiBwcm9wZXJseSBoYW5kbGVz
IGJvb2xlYW4gYXR0cmlidXRlcy4KLSAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgTm9ybWFs
aXplZCBrZXkuIChpZSBuZ0F0dHJpYnV0ZSkKLSAgICAgICAqIEBwYXJhbSB7c3RyaW5nfGJvb2xl
YW59IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuIElmIGBudWxsYCBhdHRyaWJ1dGUgd2lsbCBiZSBk
ZWxldGVkLgotICAgICAgICogQHBhcmFtIHtib29sZWFuPX0gd3JpdGVBdHRyIElmIGZhbHNlLCBk
b2VzIG5vdCB3cml0ZSB0aGUgdmFsdWUgdG8gRE9NIGVsZW1lbnQgYXR0cmlidXRlLgotICAgICAg
ICogICAgIERlZmF1bHRzIHRvIHRydWUuCi0gICAgICAgKiBAcGFyYW0ge3N0cmluZz19IGF0dHJO
YW1lIE9wdGlvbmFsIG5vbmUgbm9ybWFsaXplZCBuYW1lLiBEZWZhdWx0cyB0byBrZXkuCi0gICAg
ICAgKi8KLSAgICAgICRzZXQ6IGZ1bmN0aW9uKGtleSwgdmFsdWUsIHdyaXRlQXR0ciwgYXR0ck5h
bWUpIHsKLSAgICAgICAgdmFyIGJvb2xlYW5LZXkgPSBnZXRCb29sZWFuQXR0ck5hbWUodGhpcy4k
JGVsZW1lbnRbMF0sIGtleSksCi0gICAgICAgICAgICAkJG9ic2VydmVycyA9IHRoaXMuJCRvYnNl
cnZlcnMsCi0gICAgICAgICAgICBub3JtYWxpemVkVmFsOwotCi0gICAgICAgIGlmIChib29sZWFu
S2V5KSB7Ci0gICAgICAgICAgdGhpcy4kJGVsZW1lbnQucHJvcChrZXksIHZhbHVlKTsKLSAgICAg
ICAgICBhdHRyTmFtZSA9IGJvb2xlYW5LZXk7Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzW2tl
eV0gPSB2YWx1ZTsKLQotICAgICAgICAvLyB0cmFuc2xhdGUgbm9ybWFsaXplZCBrZXkgdG8gYWN0
dWFsIGtleQotICAgICAgICBpZiAoYXR0ck5hbWUpIHsKLSAgICAgICAgICB0aGlzLiRhdHRyW2tl
eV0gPSBhdHRyTmFtZTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICBhdHRyTmFtZSA9IHRo
aXMuJGF0dHJba2V5XTsKLSAgICAgICAgICBpZiAoIWF0dHJOYW1lKSB7Ci0gICAgICAgICAgICB0
aGlzLiRhdHRyW2tleV0gPSBhdHRyTmFtZSA9IHNuYWtlX2Nhc2Uoa2V5LCAnLScpOwotICAgICAg
ICAgIH0KLSAgICAgICAgfQotCi0KLSAgICAgICAgLy8gc2FuaXRpemUgYVtocmVmXSB2YWx1ZXMK
LSAgICAgICAgaWYgKG5vZGVOYW1lXyh0aGlzLiQkZWxlbWVudFswXSkgPT09ICdBJyAmJiBrZXkg
PT09ICdocmVmJykgewotICAgICAgICAgIHVybFNhbml0aXphdGlvbk5vZGUuc2V0QXR0cmlidXRl
KCdocmVmJywgdmFsdWUpOwotCi0gICAgICAgICAgLy8gaHJlZiBwcm9wZXJ0eSBhbHdheXMgcmV0
dXJucyBub3JtYWxpemVkIGFic29sdXRlIHVybCwgc28gd2UgY2FuIG1hdGNoIGFnYWluc3QgdGhh
dAotICAgICAgICAgIG5vcm1hbGl6ZWRWYWwgPSB1cmxTYW5pdGl6YXRpb25Ob2RlLmhyZWY7Ci0g
ICAgICAgICAgaWYgKCFub3JtYWxpemVkVmFsLm1hdGNoKHVybFNhbml0aXphdGlvbldoaXRlbGlz
dCkpIHsKLSAgICAgICAgICAgIHRoaXNba2V5XSA9IHZhbHVlID0gJ3Vuc2FmZTonICsgbm9ybWFs
aXplZFZhbDsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLQotCi0gICAgICAgIGlmICh3cml0ZUF0
dHIgIT09IGZhbHNlKSB7Ci0gICAgICAgICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09
PSB1bmRlZmluZWQpIHsKLSAgICAgICAgICAgIHRoaXMuJCRlbGVtZW50LnJlbW92ZUF0dHIoYXR0
ck5hbWUpOwotICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB0aGlzLiQkZWxlbWVudC5h
dHRyKGF0dHJOYW1lLCB2YWx1ZSk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAg
Ly8gZmlyZSBvYnNlcnZlcnMKLSAgICAgICAgJCRvYnNlcnZlcnMgJiYgZm9yRWFjaCgkJG9ic2Vy
dmVyc1trZXldLCBmdW5jdGlvbihmbikgewotICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBm
bih2YWx1ZSk7Ci0gICAgICAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICAgICAgJGV4Y2VwdGlv
bkhhbmRsZXIoZSk7Ci0gICAgICAgICAgfQotICAgICAgICB9KTsKLSAgICAgIH0sCi0KLQotICAg
ICAgLyoqCi0gICAgICAgKiBPYnNlcnZlIGFuIGludGVycG9sYXRlZCBhdHRyaWJ1dGUuCi0gICAg
ICAgKiBUaGUgb2JzZXJ2ZXIgd2lsbCBuZXZlciBiZSBjYWxsZWQsIGlmIGdpdmVuIGF0dHJpYnV0
ZSBpcyBub3QgaW50ZXJwb2xhdGVkLgotICAgICAgICoKLSAgICAgICAqIEBwYXJhbSB7c3RyaW5n
fSBrZXkgTm9ybWFsaXplZCBrZXkuIChpZSBuZ0F0dHJpYnV0ZSkgLgotICAgICAgICogQHBhcmFt
IHtmdW5jdGlvbigqKX0gZm4gRnVuY3Rpb24gdGhhdCB3aWxsIGJlIGNhbGxlZCB3aGVuZXZlciB0
aGUgYXR0cmlidXRlIHZhbHVlIGNoYW5nZXMuCi0gICAgICAgKiBAcmV0dXJucyB7ZnVuY3Rpb24o
Kil9IHRoZSBgZm5gIEZ1bmN0aW9uIHBhc3NlZCBpbi4KLSAgICAgICAqLwotICAgICAgJG9ic2Vy
dmU6IGZ1bmN0aW9uKGtleSwgZm4pIHsKLSAgICAgICAgdmFyIGF0dHJzID0gdGhpcywKLSAgICAg
ICAgICAgICQkb2JzZXJ2ZXJzID0gKGF0dHJzLiQkb2JzZXJ2ZXJzIHx8IChhdHRycy4kJG9ic2Vy
dmVycyA9IHt9KSksCi0gICAgICAgICAgICBsaXN0ZW5lcnMgPSAoJCRvYnNlcnZlcnNba2V5XSB8
fCAoJCRvYnNlcnZlcnNba2V5XSA9IFtdKSk7Ci0KLSAgICAgICAgbGlzdGVuZXJzLnB1c2goZm4p
OwotICAgICAgICAkcm9vdFNjb3BlLiRldmFsQXN5bmMoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAg
aWYgKCFsaXN0ZW5lcnMuJCRpbnRlcikgewotICAgICAgICAgICAgLy8gbm8gb25lIHJlZ2lzdGVy
ZWQgYXR0cmlidXRlIGludGVycG9sYXRpb24gZnVuY3Rpb24sIHNvIGxldHMgY2FsbCBpdCBtYW51
YWxseQotICAgICAgICAgICAgZm4oYXR0cnNba2V5XSk7Ci0gICAgICAgICAgfQotICAgICAgICB9
KTsKLSAgICAgICAgcmV0dXJuIGZuOwotICAgICAgfQotICAgIH07Ci0KLSAgICB2YXIgdXJsU2Fu
aXRpemF0aW9uTm9kZSA9ICRkb2N1bWVudFswXS5jcmVhdGVFbGVtZW50KCdhJyksCi0gICAgICAg
IHN0YXJ0U3ltYm9sID0gJGludGVycG9sYXRlLnN0YXJ0U3ltYm9sKCksCi0gICAgICAgIGVuZFN5
bWJvbCA9ICRpbnRlcnBvbGF0ZS5lbmRTeW1ib2woKSwKLSAgICAgICAgZGVub3JtYWxpemVUZW1w
bGF0ZSA9IChzdGFydFN5bWJvbCA9PSAne3snIHx8IGVuZFN5bWJvbCAgPT0gJ319JykKLSAgICAg
ICAgICAgID8gaWRlbnRpdHkKLSAgICAgICAgICAgIDogZnVuY3Rpb24gZGVub3JtYWxpemVUZW1w
bGF0ZSh0ZW1wbGF0ZSkgewotICAgICAgICAgICAgICByZXR1cm4gdGVtcGxhdGUucmVwbGFjZSgv
XHtcey9nLCBzdGFydFN5bWJvbCkucmVwbGFjZSgvfX0vZywgZW5kU3ltYm9sKTsKLSAgICAgICAg
ICAgIH07Ci0KLQotICAgIHJldHVybiBjb21waWxlOwotCi0gICAgLy89PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotCi0gICAgZnVuY3Rpb24gY29tcGlsZSgkY29tcGlsZU5vZGVzLCB0
cmFuc2NsdWRlRm4sIG1heFByaW9yaXR5KSB7Ci0gICAgICBpZiAoISgkY29tcGlsZU5vZGVzIGlu
c3RhbmNlb2YganFMaXRlKSkgewotICAgICAgICAvLyBqcXVlcnkgYWx3YXlzIHJld3JhcHMsIHdo
ZXJlYXMgd2UgbmVlZCB0byBwcmVzZXJ2ZSB0aGUgb3JpZ2luYWwgc2VsZWN0b3Igc28gdGhhdCB3
ZSBjYW4gbW9kaWZ5IGl0LgotICAgICAgICAkY29tcGlsZU5vZGVzID0ganFMaXRlKCRjb21waWxl
Tm9kZXMpOwotICAgICAgfQotICAgICAgLy8gV2UgY2FuIG5vdCBjb21waWxlIHRvcCBsZXZlbCB0
ZXh0IGVsZW1lbnRzIHNpbmNlIHRleHQgbm9kZXMgY2FuIGJlIG1lcmdlZCBhbmQgd2Ugd2lsbAot
ICAgICAgLy8gbm90IGJlIGFibGUgdG8gYXR0YWNoIHNjb3BlIGRhdGEgdG8gdGhlbSwgc28gd2Ug
d2lsbCB3cmFwIHRoZW0gaW4gPHNwYW4+Ci0gICAgICBmb3JFYWNoKCRjb21waWxlTm9kZXMsIGZ1
bmN0aW9uKG5vZGUsIGluZGV4KXsKLSAgICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT0gMyAvKiB0
ZXh0IG5vZGUgKi8gJiYgbm9kZS5ub2RlVmFsdWUubWF0Y2goL1xTKy8pIC8qIG5vbi1lbXB0eSAq
LyApIHsKLSAgICAgICAgICAkY29tcGlsZU5vZGVzW2luZGV4XSA9IGpxTGl0ZShub2RlKS53cmFw
KCc8c3Bhbj48L3NwYW4+JykucGFyZW50KClbMF07Ci0gICAgICAgIH0KLSAgICAgIH0pOwotICAg
ICAgdmFyIGNvbXBvc2l0ZUxpbmtGbiA9IGNvbXBpbGVOb2RlcygkY29tcGlsZU5vZGVzLCB0cmFu
c2NsdWRlRm4sICRjb21waWxlTm9kZXMsIG1heFByaW9yaXR5KTsKLSAgICAgIHJldHVybiBmdW5j
dGlvbiBwdWJsaWNMaW5rRm4oc2NvcGUsIGNsb25lQ29ubmVjdEZuKXsKLSAgICAgICAgYXNzZXJ0
QXJnKHNjb3BlLCAnc2NvcGUnKTsKLSAgICAgICAgLy8gaW1wb3J0YW50ISE6IHdlIG11c3QgY2Fs
bCBvdXIganFMaXRlLmNsb25lKCkgc2luY2UgdGhlIGpRdWVyeSBvbmUgaXMgdHJ5aW5nIHRvIGJl
IHNtYXJ0Ci0gICAgICAgIC8vIGFuZCBzb21ldGltZXMgY2hhbmdlcyB0aGUgc3RydWN0dXJlIG9m
IHRoZSBET00uCi0gICAgICAgIHZhciAkbGlua05vZGUgPSBjbG9uZUNvbm5lY3RGbgotICAgICAg
ICAgID8gSlFMaXRlUHJvdG90eXBlLmNsb25lLmNhbGwoJGNvbXBpbGVOb2RlcykgLy8gSU1QT1JU
QU5UISEhCi0gICAgICAgICAgOiAkY29tcGlsZU5vZGVzOwotCi0gICAgICAgIC8vIEF0dGFjaCBz
Y29wZSBvbmx5IHRvIG5vbi10ZXh0IG5vZGVzLgotICAgICAgICBmb3IodmFyIGkgPSAwLCBpaSA9
ICRsaW5rTm9kZS5sZW5ndGg7IGk8aWk7IGkrKykgewotICAgICAgICAgIHZhciBub2RlID0gJGxp
bmtOb2RlW2ldOwotICAgICAgICAgIGlmIChub2RlLm5vZGVUeXBlID09IDEgLyogZWxlbWVudCAq
LyB8fCBub2RlLm5vZGVUeXBlID09IDkgLyogZG9jdW1lbnQgKi8pIHsKLSAgICAgICAgICAgICRs
aW5rTm9kZS5lcShpKS5kYXRhKCckc2NvcGUnLCBzY29wZSk7Ci0gICAgICAgICAgfQotICAgICAg
ICB9Ci0gICAgICAgIHNhZmVBZGRDbGFzcygkbGlua05vZGUsICduZy1zY29wZScpOwotICAgICAg
ICBpZiAoY2xvbmVDb25uZWN0Rm4pIGNsb25lQ29ubmVjdEZuKCRsaW5rTm9kZSwgc2NvcGUpOwot
ICAgICAgICBpZiAoY29tcG9zaXRlTGlua0ZuKSBjb21wb3NpdGVMaW5rRm4oc2NvcGUsICRsaW5r
Tm9kZSwgJGxpbmtOb2RlKTsKLSAgICAgICAgcmV0dXJuICRsaW5rTm9kZTsKLSAgICAgIH07Ci0g
ICAgfQotCi0gICAgZnVuY3Rpb24gd3JvbmdNb2RlKGxvY2FsTmFtZSwgbW9kZSkgewotICAgICAg
dGhyb3cgRXJyb3IoIlVuc3VwcG9ydGVkICciICsgbW9kZSArICInIGZvciAnIiArIGxvY2FsTmFt
ZSArICInLiIpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHNhZmVBZGRDbGFzcygkZWxlbWVudCwg
Y2xhc3NOYW1lKSB7Ci0gICAgICB0cnkgewotICAgICAgICAkZWxlbWVudC5hZGRDbGFzcyhjbGFz
c05hbWUpOwotICAgICAgfSBjYXRjaChlKSB7Ci0gICAgICAgIC8vIGlnbm9yZSwgc2luY2UgaXQg
bWVhbnMgdGhhdCB3ZSBhcmUgdHJ5aW5nIHRvIHNldCBjbGFzcyBvbgotICAgICAgICAvLyBTVkcg
ZWxlbWVudCwgd2hlcmUgY2xhc3MgbmFtZSBpcyByZWFkLW9ubHkuCi0gICAgICB9Ci0gICAgfQot
Ci0gICAgLyoqCi0gICAgICogQ29tcGlsZSBmdW5jdGlvbiBtYXRjaGVzIGVhY2ggbm9kZSBpbiBu
b2RlTGlzdCBhZ2FpbnN0IHRoZSBkaXJlY3RpdmVzLiBPbmNlIGFsbCBkaXJlY3RpdmVzCi0gICAg
ICogZm9yIGEgcGFydGljdWxhciBub2RlIGFyZSBjb2xsZWN0ZWQgdGhlaXIgY29tcGlsZSBmdW5j
dGlvbnMgYXJlIGV4ZWN1dGVkLiBUaGUgY29tcGlsZQotICAgICAqIGZ1bmN0aW9ucyByZXR1cm4g
dmFsdWVzIC0gdGhlIGxpbmtpbmcgZnVuY3Rpb25zIC0gYXJlIGNvbWJpbmVkIGludG8gYSBjb21w
b3NpdGUgbGlua2luZwotICAgICAqIGZ1bmN0aW9uLCB3aGljaCBpcyB0aGUgYSBsaW5raW5nIGZ1
bmN0aW9uIGZvciB0aGUgbm9kZS4KLSAgICAgKgotICAgICAqIEBwYXJhbSB7Tm9kZUxpc3R9IG5v
ZGVMaXN0IGFuIGFycmF5IG9mIG5vZGVzIG9yIE5vZGVMaXN0IHRvIGNvbXBpbGUKLSAgICAgKiBA
cGFyYW0ge2Z1bmN0aW9uKGFuZ3VsYXIuU2NvcGVbLCBjbG9uZUF0dGFjaEZuXX0gdHJhbnNjbHVk
ZUZuIEEgbGlua2luZyBmdW5jdGlvbiwgd2hlcmUgdGhlCi0gICAgICogICAgICAgIHNjb3BlIGFy
Z3VtZW50IGlzIGF1dG8tZ2VuZXJhdGVkIHRvIHRoZSBuZXcgY2hpbGQgb2YgdGhlIHRyYW5zY2x1
ZGVkIHBhcmVudCBzY29wZS4KLSAgICAgKiBAcGFyYW0ge0RPTUVsZW1lbnQ9fSAkcm9vdEVsZW1l
bnQgSWYgdGhlIG5vZGVMaXN0IGlzIHRoZSByb290IG9mIHRoZSBjb21waWxhdGlvbiB0cmVlIHRo
ZW4gdGhlCi0gICAgICogICAgICAgIHJvb3RFbGVtZW50IG11c3QgYmUgc2V0IHRoZSBqcUxpdGUg
Y29sbGVjdGlvbiBvZiB0aGUgY29tcGlsZSByb290LiBUaGlzIGlzCi0gICAgICogICAgICAgIG5l
ZWRlZCBzbyB0aGF0IHRoZSBqcUxpdGUgY29sbGVjdGlvbiBpdGVtcyBjYW4gYmUgcmVwbGFjZWQg
d2l0aCB3aWRnZXRzLgotICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gbWF4IGRpcmVjdGl2ZSBwcmlv
cml0eQotICAgICAqIEByZXR1cm5zIHs/ZnVuY3Rpb259IEEgY29tcG9zaXRlIGxpbmtpbmcgZnVu
Y3Rpb24gb2YgYWxsIG9mIHRoZSBtYXRjaGVkIGRpcmVjdGl2ZXMgb3IgbnVsbC4KLSAgICAgKi8K
LSAgICBmdW5jdGlvbiBjb21waWxlTm9kZXMobm9kZUxpc3QsIHRyYW5zY2x1ZGVGbiwgJHJvb3RF
bGVtZW50LCBtYXhQcmlvcml0eSkgewotICAgICAgdmFyIGxpbmtGbnMgPSBbXSwKLSAgICAgICAg
ICBub2RlTGlua0ZuLCBjaGlsZExpbmtGbiwgZGlyZWN0aXZlcywgYXR0cnMsIGxpbmtGbkZvdW5k
OwotCi0gICAgICBmb3IodmFyIGkgPSAwOyBpIDwgbm9kZUxpc3QubGVuZ3RoOyBpKyspIHsKLSAg
ICAgICAgYXR0cnMgPSBuZXcgQXR0cmlidXRlcygpOwotCi0gICAgICAgIC8vIHdlIG11c3QgYWx3
YXlzIHJlZmVyIHRvIG5vZGVMaXN0W2ldIHNpbmNlIHRoZSBub2RlcyBjYW4gYmUgcmVwbGFjZWQg
dW5kZXJuZWF0aCB1cy4KLSAgICAgICAgZGlyZWN0aXZlcyA9IGNvbGxlY3REaXJlY3RpdmVzKG5v
ZGVMaXN0W2ldLCBbXSwgYXR0cnMsIG1heFByaW9yaXR5KTsKLQotICAgICAgICBub2RlTGlua0Zu
ID0gKGRpcmVjdGl2ZXMubGVuZ3RoKQotICAgICAgICAgICAgPyBhcHBseURpcmVjdGl2ZXNUb05v
ZGUoZGlyZWN0aXZlcywgbm9kZUxpc3RbaV0sIGF0dHJzLCB0cmFuc2NsdWRlRm4sICRyb290RWxl
bWVudCkKLSAgICAgICAgICAgIDogbnVsbDsKLQotICAgICAgICBjaGlsZExpbmtGbiA9IChub2Rl
TGlua0ZuICYmIG5vZGVMaW5rRm4udGVybWluYWwgfHwgIW5vZGVMaXN0W2ldLmNoaWxkTm9kZXMg
fHwgIW5vZGVMaXN0W2ldLmNoaWxkTm9kZXMubGVuZ3RoKQotICAgICAgICAgICAgPyBudWxsCi0g
ICAgICAgICAgICA6IGNvbXBpbGVOb2Rlcyhub2RlTGlzdFtpXS5jaGlsZE5vZGVzLAotICAgICAg
ICAgICAgICAgICBub2RlTGlua0ZuID8gbm9kZUxpbmtGbi50cmFuc2NsdWRlIDogdHJhbnNjbHVk
ZUZuKTsKLQotICAgICAgICBsaW5rRm5zLnB1c2gobm9kZUxpbmtGbik7Ci0gICAgICAgIGxpbmtG
bnMucHVzaChjaGlsZExpbmtGbik7Ci0gICAgICAgIGxpbmtGbkZvdW5kID0gKGxpbmtGbkZvdW5k
IHx8IG5vZGVMaW5rRm4gfHwgY2hpbGRMaW5rRm4pOwotICAgICAgfQotCi0gICAgICAvLyByZXR1
cm4gYSBsaW5raW5nIGZ1bmN0aW9uIGlmIHdlIGhhdmUgZm91bmQgYW55dGhpbmcsIG51bGwgb3Ro
ZXJ3aXNlCi0gICAgICByZXR1cm4gbGlua0ZuRm91bmQgPyBjb21wb3NpdGVMaW5rRm4gOiBudWxs
OwotCi0gICAgICBmdW5jdGlvbiBjb21wb3NpdGVMaW5rRm4oc2NvcGUsIG5vZGVMaXN0LCAkcm9v
dEVsZW1lbnQsIGJvdW5kVHJhbnNjbHVkZUZuKSB7Ci0gICAgICAgIHZhciBub2RlTGlua0ZuLCBj
aGlsZExpbmtGbiwgbm9kZSwgY2hpbGRTY29wZSwgY2hpbGRUcmFuc2NsdWRlRm4sIGksIGlpLCBu
OwotCi0gICAgICAgIC8vIGNvcHkgbm9kZUxpc3Qgc28gdGhhdCBsaW5raW5nIGRvZXNuJ3QgYnJl
YWsgZHVlIHRvIGxpdmUgbGlzdCB1cGRhdGVzLgotICAgICAgICB2YXIgc3RhYmxlTm9kZUxpc3Qg
PSBbXTsKLSAgICAgICAgZm9yIChpID0gMCwgaWkgPSBub2RlTGlzdC5sZW5ndGg7IGkgPCBpaTsg
aSsrKSB7Ci0gICAgICAgICAgc3RhYmxlTm9kZUxpc3QucHVzaChub2RlTGlzdFtpXSk7Ci0gICAg
ICAgIH0KLQotICAgICAgICBmb3IoaSA9IDAsIG4gPSAwLCBpaSA9IGxpbmtGbnMubGVuZ3RoOyBp
IDwgaWk7IG4rKykgewotICAgICAgICAgIG5vZGUgPSBzdGFibGVOb2RlTGlzdFtuXTsKLSAgICAg
ICAgICBub2RlTGlua0ZuID0gbGlua0Zuc1tpKytdOwotICAgICAgICAgIGNoaWxkTGlua0ZuID0g
bGlua0Zuc1tpKytdOwotCi0gICAgICAgICAgaWYgKG5vZGVMaW5rRm4pIHsKLSAgICAgICAgICAg
IGlmIChub2RlTGlua0ZuLnNjb3BlKSB7Ci0gICAgICAgICAgICAgIGNoaWxkU2NvcGUgPSBzY29w
ZS4kbmV3KGlzT2JqZWN0KG5vZGVMaW5rRm4uc2NvcGUpKTsKLSAgICAgICAgICAgICAganFMaXRl
KG5vZGUpLmRhdGEoJyRzY29wZScsIGNoaWxkU2NvcGUpOwotICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgY2hpbGRTY29wZSA9IHNjb3BlOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgY2hpbGRUcmFuc2NsdWRlRm4gPSBub2RlTGlua0ZuLnRyYW5zY2x1ZGU7Ci0gICAgICAg
ICAgICBpZiAoY2hpbGRUcmFuc2NsdWRlRm4gfHwgKCFib3VuZFRyYW5zY2x1ZGVGbiAmJiB0cmFu
c2NsdWRlRm4pKSB7Ci0gICAgICAgICAgICAgIG5vZGVMaW5rRm4oY2hpbGRMaW5rRm4sIGNoaWxk
U2NvcGUsIG5vZGUsICRyb290RWxlbWVudCwKLSAgICAgICAgICAgICAgICAgIChmdW5jdGlvbih0
cmFuc2NsdWRlRm4pIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGNsb25l
Rm4pIHsKLSAgICAgICAgICAgICAgICAgICAgICB2YXIgdHJhbnNjbHVkZVNjb3BlID0gc2NvcGUu
JG5ldygpOwotICAgICAgICAgICAgICAgICAgICAgIHRyYW5zY2x1ZGVTY29wZS4kJHRyYW5zY2x1
ZGVkID0gdHJ1ZTsKLQotICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cmFuc2NsdWRlRm4o
dHJhbnNjbHVkZVNjb3BlLCBjbG9uZUZuKS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgYmlu
ZCgnJGRlc3Ryb3knLCBiaW5kKHRyYW5zY2x1ZGVTY29wZSwgdHJhbnNjbHVkZVNjb3BlLiRkZXN0
cm95KSk7Ci0gICAgICAgICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICAgICAgICB9KShjaGls
ZFRyYW5zY2x1ZGVGbiB8fCB0cmFuc2NsdWRlRm4pCi0gICAgICAgICAgICAgICk7Ci0gICAgICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICBub2RlTGlua0ZuKGNoaWxkTGlua0ZuLCBjaGls
ZFNjb3BlLCBub2RlLCB1bmRlZmluZWQsIGJvdW5kVHJhbnNjbHVkZUZuKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICB9IGVsc2UgaWYgKGNoaWxkTGlua0ZuKSB7Ci0gICAgICAgICAgICBjaGls
ZExpbmtGbihzY29wZSwgbm9kZS5jaGlsZE5vZGVzLCB1bmRlZmluZWQsIGJvdW5kVHJhbnNjbHVk
ZUZuKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0KLQotICAgIC8q
KgotICAgICAqIExvb2tzIGZvciBkaXJlY3RpdmVzIG9uIHRoZSBnaXZlbiBub2RlIGFuZCBhZGRz
IHRoZW0gdG8gdGhlIGRpcmVjdGl2ZSBjb2xsZWN0aW9uIHdoaWNoIGlzCi0gICAgICogc29ydGVk
LgotICAgICAqCi0gICAgICogQHBhcmFtIG5vZGUgTm9kZSB0byBzZWFyY2guCi0gICAgICogQHBh
cmFtIGRpcmVjdGl2ZXMgQW4gYXJyYXkgdG8gd2hpY2ggdGhlIGRpcmVjdGl2ZXMgYXJlIGFkZGVk
IHRvLiBUaGlzIGFycmF5IGlzIHNvcnRlZCBiZWZvcmUKLSAgICAgKiAgICAgICAgdGhlIGZ1bmN0
aW9uIHJldHVybnMuCi0gICAgICogQHBhcmFtIGF0dHJzIFRoZSBzaGFyZWQgYXR0cnMgb2JqZWN0
IHdoaWNoIGlzIHVzZWQgdG8gcG9wdWxhdGUgdGhlIG5vcm1hbGl6ZWQgYXR0cmlidXRlcy4KLSAg
ICAgKiBAcGFyYW0ge251bWJlcj19IG1heFByaW9yaXR5IE1heCBkaXJlY3RpdmUgcHJpb3JpdHku
Ci0gICAgICovCi0gICAgZnVuY3Rpb24gY29sbGVjdERpcmVjdGl2ZXMobm9kZSwgZGlyZWN0aXZl
cywgYXR0cnMsIG1heFByaW9yaXR5KSB7Ci0gICAgICB2YXIgbm9kZVR5cGUgPSBub2RlLm5vZGVU
eXBlLAotICAgICAgICAgIGF0dHJzTWFwID0gYXR0cnMuJGF0dHIsCi0gICAgICAgICAgbWF0Y2gs
Ci0gICAgICAgICAgY2xhc3NOYW1lOwotCi0gICAgICBzd2l0Y2gobm9kZVR5cGUpIHsKLSAgICAg
ICAgY2FzZSAxOiAvKiBFbGVtZW50ICovCi0gICAgICAgICAgLy8gdXNlIHRoZSBub2RlIG5hbWU6
IDxkaXJlY3RpdmU+Ci0gICAgICAgICAgYWRkRGlyZWN0aXZlKGRpcmVjdGl2ZXMsCi0gICAgICAg
ICAgICAgIGRpcmVjdGl2ZU5vcm1hbGl6ZShub2RlTmFtZV8obm9kZSkudG9Mb3dlckNhc2UoKSks
ICdFJywgbWF4UHJpb3JpdHkpOwotCi0gICAgICAgICAgLy8gaXRlcmF0ZSBvdmVyIHRoZSBhdHRy
aWJ1dGVzCi0gICAgICAgICAgZm9yICh2YXIgYXR0ciwgbmFtZSwgbk5hbWUsIHZhbHVlLCBuQXR0
cnMgPSBub2RlLmF0dHJpYnV0ZXMsCi0gICAgICAgICAgICAgICAgICAgaiA9IDAsIGpqID0gbkF0
dHJzICYmIG5BdHRycy5sZW5ndGg7IGogPCBqajsgaisrKSB7Ci0gICAgICAgICAgICBhdHRyID0g
bkF0dHJzW2pdOwotICAgICAgICAgICAgaWYgKGF0dHIuc3BlY2lmaWVkKSB7Ci0gICAgICAgICAg
ICAgIG5hbWUgPSBhdHRyLm5hbWU7Ci0gICAgICAgICAgICAgIG5OYW1lID0gZGlyZWN0aXZlTm9y
bWFsaXplKG5hbWUudG9Mb3dlckNhc2UoKSk7Ci0gICAgICAgICAgICAgIGF0dHJzTWFwW25OYW1l
XSA9IG5hbWU7Ci0gICAgICAgICAgICAgIGF0dHJzW25OYW1lXSA9IHZhbHVlID0gdHJpbSgobXNp
ZSAmJiBuYW1lID09ICdocmVmJykKLSAgICAgICAgICAgICAgICA/IGRlY29kZVVSSUNvbXBvbmVu
dChub2RlLmdldEF0dHJpYnV0ZShuYW1lLCAyKSkKLSAgICAgICAgICAgICAgICA6IGF0dHIudmFs
dWUpOwotICAgICAgICAgICAgICBpZiAoZ2V0Qm9vbGVhbkF0dHJOYW1lKG5vZGUsIG5OYW1lKSkg
ewotICAgICAgICAgICAgICAgIGF0dHJzW25OYW1lXSA9IHRydWU7IC8vIHByZXNlbmNlIG1lYW5z
IHRydWUKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICBhZGRBdHRySW50ZXJwb2xhdGVE
aXJlY3RpdmUobm9kZSwgZGlyZWN0aXZlcywgdmFsdWUsIG5OYW1lKTsKLSAgICAgICAgICAgICAg
YWRkRGlyZWN0aXZlKGRpcmVjdGl2ZXMsIG5OYW1lLCAnQScsIG1heFByaW9yaXR5KTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICB9Ci0KLSAgICAgICAgICAvLyB1c2UgY2xhc3MgYXMgZGlyZWN0
aXZlCi0gICAgICAgICAgY2xhc3NOYW1lID0gbm9kZS5jbGFzc05hbWU7Ci0gICAgICAgICAgaWYg
KGlzU3RyaW5nKGNsYXNzTmFtZSkgJiYgY2xhc3NOYW1lICE9PSAnJykgewotICAgICAgICAgICAg
d2hpbGUgKG1hdGNoID0gQ0xBU1NfRElSRUNUSVZFX1JFR0VYUC5leGVjKGNsYXNzTmFtZSkpIHsK
LSAgICAgICAgICAgICAgbk5hbWUgPSBkaXJlY3RpdmVOb3JtYWxpemUobWF0Y2hbMl0pOwotICAg
ICAgICAgICAgICBpZiAoYWRkRGlyZWN0aXZlKGRpcmVjdGl2ZXMsIG5OYW1lLCAnQycsIG1heFBy
aW9yaXR5KSkgewotICAgICAgICAgICAgICAgIGF0dHJzW25OYW1lXSA9IHRyaW0obWF0Y2hbM10p
OwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIGNsYXNzTmFtZSA9IGNsYXNzTmFtZS5z
dWJzdHIobWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGgpOwotICAgICAgICAgICAgfQotICAg
ICAgICAgIH0KLSAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAzOiAvKiBUZXh0IE5vZGUg
Ki8KLSAgICAgICAgICBhZGRUZXh0SW50ZXJwb2xhdGVEaXJlY3RpdmUoZGlyZWN0aXZlcywgbm9k
ZS5ub2RlVmFsdWUpOwotICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIDg6IC8qIENvbW1l
bnQgKi8KLSAgICAgICAgICB0cnkgewotICAgICAgICAgICAgbWF0Y2ggPSBDT01NRU5UX0RJUkVD
VElWRV9SRUdFWFAuZXhlYyhub2RlLm5vZGVWYWx1ZSk7Ci0gICAgICAgICAgICBpZiAobWF0Y2gp
IHsKLSAgICAgICAgICAgICAgbk5hbWUgPSBkaXJlY3RpdmVOb3JtYWxpemUobWF0Y2hbMV0pOwot
ICAgICAgICAgICAgICBpZiAoYWRkRGlyZWN0aXZlKGRpcmVjdGl2ZXMsIG5OYW1lLCAnTScsIG1h
eFByaW9yaXR5KSkgewotICAgICAgICAgICAgICAgIGF0dHJzW25OYW1lXSA9IHRyaW0obWF0Y2hb
Ml0pOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfSBjYXRjaCAo
ZSkgewotICAgICAgICAgICAgLy8gdHVybnMgb3V0IHRoYXQgdW5kZXIgc29tZSBjaXJjdW1zdGFu
Y2VzIElFOSB0aHJvd3MgZXJyb3JzIHdoZW4gb25lIGF0dGVtcHRzIHRvIHJlYWQgY29tbWVudCdz
IG5vZGUgdmFsdWUuCi0gICAgICAgICAgICAvLyBKdXN0IGlnbm9yZSBpdCBhbmQgY29udGludWUu
IChDYW4ndCBzZWVtIHRvIHJlcHJvZHVjZSBpbiB0ZXN0IGNhc2UuKQotICAgICAgICAgIH0KLSAg
ICAgICAgICBicmVhazsKLSAgICAgIH0KLQotICAgICAgZGlyZWN0aXZlcy5zb3J0KGJ5UHJpb3Jp
dHkpOwotICAgICAgcmV0dXJuIGRpcmVjdGl2ZXM7Ci0gICAgfQotCi0KLSAgICAvKioKLSAgICAg
KiBPbmNlIHRoZSBkaXJlY3RpdmVzIGhhdmUgYmVlbiBjb2xsZWN0ZWQsIHRoZWlyIGNvbXBpbGUg
ZnVuY3Rpb25zIGFyZSBleGVjdXRlZC4gVGhpcyBtZXRob2QKLSAgICAgKiBpcyByZXNwb25zaWJs
ZSBmb3IgaW5saW5pbmcgZGlyZWN0aXZlIHRlbXBsYXRlcyBhcyB3ZWxsIGFzIHRlcm1pbmF0aW5n
IHRoZSBhcHBsaWNhdGlvbgotICAgICAqIG9mIHRoZSBkaXJlY3RpdmVzIGlmIHRoZSB0ZXJtaW5h
bCBkaXJlY3RpdmUgaGFzIGJlZW4gcmVhY2hlZC4KLSAgICAgKgotICAgICAqIEBwYXJhbSB7QXJy
YXl9IGRpcmVjdGl2ZXMgQXJyYXkgb2YgY29sbGVjdGVkIGRpcmVjdGl2ZXMgdG8gZXhlY3V0ZSB0
aGVpciBjb21waWxlIGZ1bmN0aW9uLgotICAgICAqICAgICAgICB0aGlzIG5lZWRzIHRvIGJlIHBy
ZS1zb3J0ZWQgYnkgcHJpb3JpdHkgb3JkZXIuCi0gICAgICogQHBhcmFtIHtOb2RlfSBjb21waWxl
Tm9kZSBUaGUgcmF3IERPTSBub2RlIHRvIGFwcGx5IHRoZSBjb21waWxlIGZ1bmN0aW9ucyB0bwot
ICAgICAqIEBwYXJhbSB7T2JqZWN0fSB0ZW1wbGF0ZUF0dHJzIFRoZSBzaGFyZWQgYXR0cmlidXRl
IGZ1bmN0aW9uCi0gICAgICogQHBhcmFtIHtmdW5jdGlvbihhbmd1bGFyLlNjb3BlWywgY2xvbmVB
dHRhY2hGbl19IHRyYW5zY2x1ZGVGbiBBIGxpbmtpbmcgZnVuY3Rpb24sIHdoZXJlIHRoZQotICAg
ICAqICAgICAgICBzY29wZSBhcmd1bWVudCBpcyBhdXRvLWdlbmVyYXRlZCB0byB0aGUgbmV3IGNo
aWxkIG9mIHRoZSB0cmFuc2NsdWRlZCBwYXJlbnQgc2NvcGUuCi0gICAgICogQHBhcmFtIHtKUUxp
dGV9IGpxQ29sbGVjdGlvbiBJZiB3ZSBhcmUgd29ya2luZyBvbiB0aGUgcm9vdCBvZiB0aGUgY29t
cGlsZSB0cmVlIHRoZW4gdGhpcwotICAgICAqICAgICAgICBhcmd1bWVudCBoYXMgdGhlIHJvb3Qg
anFMaXRlIGFycmF5IHNvIHRoYXQgd2UgY2FuIHJlcGxhY2Ugbm9kZXMgb24gaXQuCi0gICAgICog
QHJldHVybnMgbGlua0ZuCi0gICAgICovCi0gICAgZnVuY3Rpb24gYXBwbHlEaXJlY3RpdmVzVG9O
b2RlKGRpcmVjdGl2ZXMsIGNvbXBpbGVOb2RlLCB0ZW1wbGF0ZUF0dHJzLCB0cmFuc2NsdWRlRm4s
IGpxQ29sbGVjdGlvbikgewotICAgICAgdmFyIHRlcm1pbmFsUHJpb3JpdHkgPSAtTnVtYmVyLk1B
WF9WQUxVRSwKLSAgICAgICAgICBwcmVMaW5rRm5zID0gW10sCi0gICAgICAgICAgcG9zdExpbmtG
bnMgPSBbXSwKLSAgICAgICAgICBuZXdTY29wZURpcmVjdGl2ZSA9IG51bGwsCi0gICAgICAgICAg
bmV3SXNvbGF0ZVNjb3BlRGlyZWN0aXZlID0gbnVsbCwKLSAgICAgICAgICB0ZW1wbGF0ZURpcmVj
dGl2ZSA9IG51bGwsCi0gICAgICAgICAgJGNvbXBpbGVOb2RlID0gdGVtcGxhdGVBdHRycy4kJGVs
ZW1lbnQgPSBqcUxpdGUoY29tcGlsZU5vZGUpLAotICAgICAgICAgIGRpcmVjdGl2ZSwKLSAgICAg
ICAgICBkaXJlY3RpdmVOYW1lLAotICAgICAgICAgICR0ZW1wbGF0ZSwKLSAgICAgICAgICB0cmFu
c2NsdWRlRGlyZWN0aXZlLAotICAgICAgICAgIGNoaWxkVHJhbnNjbHVkZUZuID0gdHJhbnNjbHVk
ZUZuLAotICAgICAgICAgIGNvbnRyb2xsZXJEaXJlY3RpdmVzLAotICAgICAgICAgIGxpbmtGbiwK
LSAgICAgICAgICBkaXJlY3RpdmVWYWx1ZTsKLQotICAgICAgLy8gZXhlY3V0ZXMgYWxsIGRpcmVj
dGl2ZXMgb24gdGhlIGN1cnJlbnQgZWxlbWVudAotICAgICAgZm9yKHZhciBpID0gMCwgaWkgPSBk
aXJlY3RpdmVzLmxlbmd0aDsgaSA8IGlpOyBpKyspIHsKLSAgICAgICAgZGlyZWN0aXZlID0gZGly
ZWN0aXZlc1tpXTsKLSAgICAgICAgJHRlbXBsYXRlID0gdW5kZWZpbmVkOwotCi0gICAgICAgIGlm
ICh0ZXJtaW5hbFByaW9yaXR5ID4gZGlyZWN0aXZlLnByaW9yaXR5KSB7Ci0gICAgICAgICAgYnJl
YWs7IC8vIHByZXZlbnQgZnVydGhlciBwcm9jZXNzaW5nIG9mIGRpcmVjdGl2ZXMKLSAgICAgICAg
fQotCi0gICAgICAgIGlmIChkaXJlY3RpdmVWYWx1ZSA9IGRpcmVjdGl2ZS5zY29wZSkgewotICAg
ICAgICAgIGFzc2VydE5vRHVwbGljYXRlKCdpc29sYXRlZCBzY29wZScsIG5ld0lzb2xhdGVTY29w
ZURpcmVjdGl2ZSwgZGlyZWN0aXZlLCAkY29tcGlsZU5vZGUpOwotICAgICAgICAgIGlmIChpc09i
amVjdChkaXJlY3RpdmVWYWx1ZSkpIHsKLSAgICAgICAgICAgIHNhZmVBZGRDbGFzcygkY29tcGls
ZU5vZGUsICduZy1pc29sYXRlLXNjb3BlJyk7Ci0gICAgICAgICAgICBuZXdJc29sYXRlU2NvcGVE
aXJlY3RpdmUgPSBkaXJlY3RpdmU7Ci0gICAgICAgICAgfQotICAgICAgICAgIHNhZmVBZGRDbGFz
cygkY29tcGlsZU5vZGUsICduZy1zY29wZScpOwotICAgICAgICAgIG5ld1Njb3BlRGlyZWN0aXZl
ID0gbmV3U2NvcGVEaXJlY3RpdmUgfHwgZGlyZWN0aXZlOwotICAgICAgICB9Ci0KLSAgICAgICAg
ZGlyZWN0aXZlTmFtZSA9IGRpcmVjdGl2ZS5uYW1lOwotCi0gICAgICAgIGlmIChkaXJlY3RpdmVW
YWx1ZSA9IGRpcmVjdGl2ZS5jb250cm9sbGVyKSB7Ci0gICAgICAgICAgY29udHJvbGxlckRpcmVj
dGl2ZXMgPSBjb250cm9sbGVyRGlyZWN0aXZlcyB8fCB7fTsKLSAgICAgICAgICBhc3NlcnROb0R1
cGxpY2F0ZSgiJyIgKyBkaXJlY3RpdmVOYW1lICsgIicgY29udHJvbGxlciIsCi0gICAgICAgICAg
ICAgIGNvbnRyb2xsZXJEaXJlY3RpdmVzW2RpcmVjdGl2ZU5hbWVdLCBkaXJlY3RpdmUsICRjb21w
aWxlTm9kZSk7Ci0gICAgICAgICAgY29udHJvbGxlckRpcmVjdGl2ZXNbZGlyZWN0aXZlTmFtZV0g
PSBkaXJlY3RpdmU7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoZGlyZWN0aXZlVmFsdWUgPSBk
aXJlY3RpdmUudHJhbnNjbHVkZSkgewotICAgICAgICAgIGFzc2VydE5vRHVwbGljYXRlKCd0cmFu
c2NsdXNpb24nLCB0cmFuc2NsdWRlRGlyZWN0aXZlLCBkaXJlY3RpdmUsICRjb21waWxlTm9kZSk7
Ci0gICAgICAgICAgdHJhbnNjbHVkZURpcmVjdGl2ZSA9IGRpcmVjdGl2ZTsKLSAgICAgICAgICB0
ZXJtaW5hbFByaW9yaXR5ID0gZGlyZWN0aXZlLnByaW9yaXR5OwotICAgICAgICAgIGlmIChkaXJl
Y3RpdmVWYWx1ZSA9PSAnZWxlbWVudCcpIHsKLSAgICAgICAgICAgICR0ZW1wbGF0ZSA9IGpxTGl0
ZShjb21waWxlTm9kZSk7Ci0gICAgICAgICAgICAkY29tcGlsZU5vZGUgPSB0ZW1wbGF0ZUF0dHJz
LiQkZWxlbWVudCA9Ci0gICAgICAgICAgICAgICAganFMaXRlKGRvY3VtZW50LmNyZWF0ZUNvbW1l
bnQoJyAnICsgZGlyZWN0aXZlTmFtZSArICc6ICcgKyB0ZW1wbGF0ZUF0dHJzW2RpcmVjdGl2ZU5h
bWVdICsgJyAnKSk7Ci0gICAgICAgICAgICBjb21waWxlTm9kZSA9ICRjb21waWxlTm9kZVswXTsK
LSAgICAgICAgICAgIHJlcGxhY2VXaXRoKGpxQ29sbGVjdGlvbiwganFMaXRlKCR0ZW1wbGF0ZVsw
XSksIGNvbXBpbGVOb2RlKTsKLSAgICAgICAgICAgIGNoaWxkVHJhbnNjbHVkZUZuID0gY29tcGls
ZSgkdGVtcGxhdGUsIHRyYW5zY2x1ZGVGbiwgdGVybWluYWxQcmlvcml0eSk7Ci0gICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICR0ZW1wbGF0ZSA9IGpxTGl0ZShKUUxpdGVDbG9uZShjb21w
aWxlTm9kZSkpLmNvbnRlbnRzKCk7Ci0gICAgICAgICAgICAkY29tcGlsZU5vZGUuaHRtbCgnJyk7
IC8vIGNsZWFyIGNvbnRlbnRzCi0gICAgICAgICAgICBjaGlsZFRyYW5zY2x1ZGVGbiA9IGNvbXBp
bGUoJHRlbXBsYXRlLCB0cmFuc2NsdWRlRm4pOwotICAgICAgICAgIH0KLSAgICAgICAgfQotCi0g
ICAgICAgIGlmICgoZGlyZWN0aXZlVmFsdWUgPSBkaXJlY3RpdmUudGVtcGxhdGUpKSB7Ci0gICAg
ICAgICAgYXNzZXJ0Tm9EdXBsaWNhdGUoJ3RlbXBsYXRlJywgdGVtcGxhdGVEaXJlY3RpdmUsIGRp
cmVjdGl2ZSwgJGNvbXBpbGVOb2RlKTsKLSAgICAgICAgICB0ZW1wbGF0ZURpcmVjdGl2ZSA9IGRp
cmVjdGl2ZTsKLSAgICAgICAgICBkaXJlY3RpdmVWYWx1ZSA9IGRlbm9ybWFsaXplVGVtcGxhdGUo
ZGlyZWN0aXZlVmFsdWUpOwotCi0gICAgICAgICAgaWYgKGRpcmVjdGl2ZS5yZXBsYWNlKSB7Ci0g
ICAgICAgICAgICAkdGVtcGxhdGUgPSBqcUxpdGUoJzxkaXY+JyArCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0cmltKGRpcmVjdGl2ZVZhbHVlKSArCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJzwvZGl2PicpLmNvbnRlbnRzKCk7Ci0gICAgICAgICAgICBjb21waWxl
Tm9kZSA9ICR0ZW1wbGF0ZVswXTsKLQotICAgICAgICAgICAgaWYgKCR0ZW1wbGF0ZS5sZW5ndGgg
IT0gMSB8fCBjb21waWxlTm9kZS5ub2RlVHlwZSAhPT0gMSkgewotICAgICAgICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoTVVMVElfUk9PVF9URU1QTEFURV9FUlJPUiArIGRpcmVjdGl2ZVZhbHVlKTsK
LSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcmVwbGFjZVdpdGgoanFDb2xsZWN0aW9uLCAk
Y29tcGlsZU5vZGUsIGNvbXBpbGVOb2RlKTsKLQotICAgICAgICAgICAgdmFyIG5ld1RlbXBsYXRl
QXR0cnMgPSB7JGF0dHI6IHt9fTsKLQotICAgICAgICAgICAgLy8gY29tYmluZSBkaXJlY3RpdmVz
IGZyb20gdGhlIG9yaWdpbmFsIG5vZGUgYW5kIGZyb20gdGhlIHRlbXBsYXRlOgotICAgICAgICAg
ICAgLy8gLSB0YWtlIHRoZSBhcnJheSBvZiBkaXJlY3RpdmVzIGZvciB0aGlzIGVsZW1lbnQKLSAg
ICAgICAgICAgIC8vIC0gc3BsaXQgaXQgaW50byB0d28gcGFydHMsIHRob3NlIHRoYXQgd2VyZSBh
bHJlYWR5IGFwcGxpZWQgYW5kIHRob3NlIHRoYXQgd2VyZW4ndAotICAgICAgICAgICAgLy8gLSBj
b2xsZWN0IGRpcmVjdGl2ZXMgZnJvbSB0aGUgdGVtcGxhdGUsIGFkZCB0aGVtIHRvIHRoZSBzZWNv
bmQgZ3JvdXAgYW5kIHNvcnQgdGhlbQotICAgICAgICAgICAgLy8gLSBhcHBlbmQgdGhlIHNlY29u
ZCBncm91cCB3aXRoIG5ldyBkaXJlY3RpdmVzIHRvIHRoZSBmaXJzdCBncm91cAotICAgICAgICAg
ICAgZGlyZWN0aXZlcyA9IGRpcmVjdGl2ZXMuY29uY2F0KAotICAgICAgICAgICAgICAgIGNvbGxl
Y3REaXJlY3RpdmVzKAotICAgICAgICAgICAgICAgICAgICBjb21waWxlTm9kZSwKLSAgICAgICAg
ICAgICAgICAgICAgZGlyZWN0aXZlcy5zcGxpY2UoaSArIDEsIGRpcmVjdGl2ZXMubGVuZ3RoIC0g
KGkgKyAxKSksCi0gICAgICAgICAgICAgICAgICAgIG5ld1RlbXBsYXRlQXR0cnMKLSAgICAgICAg
ICAgICAgICApCi0gICAgICAgICAgICApOwotICAgICAgICAgICAgbWVyZ2VUZW1wbGF0ZUF0dHJp
YnV0ZXModGVtcGxhdGVBdHRycywgbmV3VGVtcGxhdGVBdHRycyk7Ci0KLSAgICAgICAgICAgIGlp
ID0gZGlyZWN0aXZlcy5sZW5ndGg7Ci0gICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICRj
b21waWxlTm9kZS5odG1sKGRpcmVjdGl2ZVZhbHVlKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0K
LQotICAgICAgICBpZiAoZGlyZWN0aXZlLnRlbXBsYXRlVXJsKSB7Ci0gICAgICAgICAgYXNzZXJ0
Tm9EdXBsaWNhdGUoJ3RlbXBsYXRlJywgdGVtcGxhdGVEaXJlY3RpdmUsIGRpcmVjdGl2ZSwgJGNv
bXBpbGVOb2RlKTsKLSAgICAgICAgICB0ZW1wbGF0ZURpcmVjdGl2ZSA9IGRpcmVjdGl2ZTsKLSAg
ICAgICAgICBub2RlTGlua0ZuID0gY29tcGlsZVRlbXBsYXRlVXJsKGRpcmVjdGl2ZXMuc3BsaWNl
KGksIGRpcmVjdGl2ZXMubGVuZ3RoIC0gaSksCi0gICAgICAgICAgICAgIG5vZGVMaW5rRm4sICRj
b21waWxlTm9kZSwgdGVtcGxhdGVBdHRycywganFDb2xsZWN0aW9uLCBkaXJlY3RpdmUucmVwbGFj
ZSwKLSAgICAgICAgICAgICAgY2hpbGRUcmFuc2NsdWRlRm4pOwotICAgICAgICAgIGlpID0gZGly
ZWN0aXZlcy5sZW5ndGg7Ci0gICAgICAgIH0gZWxzZSBpZiAoZGlyZWN0aXZlLmNvbXBpbGUpIHsK
LSAgICAgICAgICB0cnkgewotICAgICAgICAgICAgbGlua0ZuID0gZGlyZWN0aXZlLmNvbXBpbGUo
JGNvbXBpbGVOb2RlLCB0ZW1wbGF0ZUF0dHJzLCBjaGlsZFRyYW5zY2x1ZGVGbik7Ci0gICAgICAg
ICAgICBpZiAoaXNGdW5jdGlvbihsaW5rRm4pKSB7Ci0gICAgICAgICAgICAgIGFkZExpbmtGbnMo
bnVsbCwgbGlua0ZuKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAobGlua0ZuKSB7Ci0gICAgICAg
ICAgICAgIGFkZExpbmtGbnMobGlua0ZuLnByZSwgbGlua0ZuLnBvc3QpOwotICAgICAgICAgICAg
fQotICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICAgICRleGNlcHRpb25IYW5kbGVy
KGUsIHN0YXJ0aW5nVGFnKCRjb21waWxlTm9kZSkpOwotICAgICAgICAgIH0KLSAgICAgICAgfQot
Ci0gICAgICAgIGlmIChkaXJlY3RpdmUudGVybWluYWwpIHsKLSAgICAgICAgICBub2RlTGlua0Zu
LnRlcm1pbmFsID0gdHJ1ZTsKLSAgICAgICAgICB0ZXJtaW5hbFByaW9yaXR5ID0gTWF0aC5tYXgo
dGVybWluYWxQcmlvcml0eSwgZGlyZWN0aXZlLnByaW9yaXR5KTsKLSAgICAgICAgfQotCi0gICAg
ICB9Ci0KLSAgICAgIG5vZGVMaW5rRm4uc2NvcGUgPSBuZXdTY29wZURpcmVjdGl2ZSAmJiBuZXdT
Y29wZURpcmVjdGl2ZS5zY29wZTsKLSAgICAgIG5vZGVMaW5rRm4udHJhbnNjbHVkZSA9IHRyYW5z
Y2x1ZGVEaXJlY3RpdmUgJiYgY2hpbGRUcmFuc2NsdWRlRm47Ci0KLSAgICAgIC8vIG1pZ2h0IGJl
IG5vcm1hbCBvciBkZWxheWVkIG5vZGVMaW5rRm4gZGVwZW5kaW5nIG9uIGlmIHRlbXBsYXRlVXJs
IGlzIHByZXNlbnQKLSAgICAgIHJldHVybiBub2RlTGlua0ZuOwotCi0gICAgICAvLy8vLy8vLy8v
Ly8vLy8vLy8vLwotCi0gICAgICBmdW5jdGlvbiBhZGRMaW5rRm5zKHByZSwgcG9zdCkgewotICAg
ICAgICBpZiAocHJlKSB7Ci0gICAgICAgICAgcHJlLnJlcXVpcmUgPSBkaXJlY3RpdmUucmVxdWly
ZTsKLSAgICAgICAgICBwcmVMaW5rRm5zLnB1c2gocHJlKTsKLSAgICAgICAgfQotICAgICAgICBp
ZiAocG9zdCkgewotICAgICAgICAgIHBvc3QucmVxdWlyZSA9IGRpcmVjdGl2ZS5yZXF1aXJlOwot
ICAgICAgICAgIHBvc3RMaW5rRm5zLnB1c2gocG9zdCk7Ci0gICAgICAgIH0KLSAgICAgIH0KLQot
Ci0gICAgICBmdW5jdGlvbiBnZXRDb250cm9sbGVycyhyZXF1aXJlLCAkZWxlbWVudCkgewotICAg
ICAgICB2YXIgdmFsdWUsIHJldHJpZXZhbE1ldGhvZCA9ICdkYXRhJywgb3B0aW9uYWwgPSBmYWxz
ZTsKLSAgICAgICAgaWYgKGlzU3RyaW5nKHJlcXVpcmUpKSB7Ci0gICAgICAgICAgd2hpbGUoKHZh
bHVlID0gcmVxdWlyZS5jaGFyQXQoMCkpID09ICdeJyB8fCB2YWx1ZSA9PSAnPycpIHsKLSAgICAg
ICAgICAgIHJlcXVpcmUgPSByZXF1aXJlLnN1YnN0cigxKTsKLSAgICAgICAgICAgIGlmICh2YWx1
ZSA9PSAnXicpIHsKLSAgICAgICAgICAgICAgcmV0cmlldmFsTWV0aG9kID0gJ2luaGVyaXRlZERh
dGEnOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgb3B0aW9uYWwgPSBvcHRpb25hbCB8fCB2
YWx1ZSA9PSAnPyc7Ci0gICAgICAgICAgfQotICAgICAgICAgIHZhbHVlID0gJGVsZW1lbnRbcmV0
cmlldmFsTWV0aG9kXSgnJCcgKyByZXF1aXJlICsgJ0NvbnRyb2xsZXInKTsKLSAgICAgICAgICBp
ZiAoIXZhbHVlICYmICFvcHRpb25hbCkgewotICAgICAgICAgICAgdGhyb3cgRXJyb3IoIk5vIGNv
bnRyb2xsZXI6ICIgKyByZXF1aXJlKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgcmV0dXJuIHZh
bHVlOwotICAgICAgICB9IGVsc2UgaWYgKGlzQXJyYXkocmVxdWlyZSkpIHsKLSAgICAgICAgICB2
YWx1ZSA9IFtdOwotICAgICAgICAgIGZvckVhY2gocmVxdWlyZSwgZnVuY3Rpb24ocmVxdWlyZSkg
ewotICAgICAgICAgICAgdmFsdWUucHVzaChnZXRDb250cm9sbGVycyhyZXF1aXJlLCAkZWxlbWVu
dCkpOwotICAgICAgICAgIH0pOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB2YWx1ZTsKLSAg
ICAgIH0KLQotCi0gICAgICBmdW5jdGlvbiBub2RlTGlua0ZuKGNoaWxkTGlua0ZuLCBzY29wZSwg
bGlua05vZGUsICRyb290RWxlbWVudCwgYm91bmRUcmFuc2NsdWRlRm4pIHsKLSAgICAgICAgdmFy
IGF0dHJzLCAkZWxlbWVudCwgaSwgaWksIGxpbmtGbiwgY29udHJvbGxlcjsKLQotICAgICAgICBp
ZiAoY29tcGlsZU5vZGUgPT09IGxpbmtOb2RlKSB7Ci0gICAgICAgICAgYXR0cnMgPSB0ZW1wbGF0
ZUF0dHJzOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIGF0dHJzID0gc2hhbGxvd0NvcHko
dGVtcGxhdGVBdHRycywgbmV3IEF0dHJpYnV0ZXMoanFMaXRlKGxpbmtOb2RlKSwgdGVtcGxhdGVB
dHRycy4kYXR0cikpOwotICAgICAgICB9Ci0gICAgICAgICRlbGVtZW50ID0gYXR0cnMuJCRlbGVt
ZW50OwotCi0gICAgICAgIGlmIChuZXdJc29sYXRlU2NvcGVEaXJlY3RpdmUpIHsKLSAgICAgICAg
ICB2YXIgTE9DQUxfUkVHRVhQID0gL15ccyooW0A9Jl0pXHMqKFx3KilccyokLzsKLQotICAgICAg
ICAgIHZhciBwYXJlbnRTY29wZSA9IHNjb3BlLiRwYXJlbnQgfHwgc2NvcGU7Ci0KLSAgICAgICAg
ICBmb3JFYWNoKG5ld0lzb2xhdGVTY29wZURpcmVjdGl2ZS5zY29wZSwgZnVuY3Rpb24oZGVmaW5p
dG9uLCBzY29wZU5hbWUpIHsKLSAgICAgICAgICAgIHZhciBtYXRjaCA9IGRlZmluaXRvbi5tYXRj
aChMT0NBTF9SRUdFWFApIHx8IFtdLAotICAgICAgICAgICAgICAgIGF0dHJOYW1lID0gbWF0Y2hb
Ml18fCBzY29wZU5hbWUsCi0gICAgICAgICAgICAgICAgbW9kZSA9IG1hdGNoWzFdLCAvLyBALCA9
LCBvciAmCi0gICAgICAgICAgICAgICAgbGFzdFZhbHVlLAotICAgICAgICAgICAgICAgIHBhcmVu
dEdldCwgcGFyZW50U2V0OwotCi0gICAgICAgICAgICBzY29wZS4kJGlzb2xhdGVCaW5kaW5nc1tz
Y29wZU5hbWVdID0gbW9kZSArIGF0dHJOYW1lOwotCi0gICAgICAgICAgICBzd2l0Y2ggKG1vZGUp
IHsKLQotICAgICAgICAgICAgICBjYXNlICdAJzogewotICAgICAgICAgICAgICAgIGF0dHJzLiRv
YnNlcnZlKGF0dHJOYW1lLCBmdW5jdGlvbih2YWx1ZSkgewotICAgICAgICAgICAgICAgICAgc2Nv
cGVbc2NvcGVOYW1lXSA9IHZhbHVlOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAg
ICAgIGF0dHJzLiQkb2JzZXJ2ZXJzW2F0dHJOYW1lXS4kJHNjb3BlID0gcGFyZW50U2NvcGU7Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICBj
YXNlICc9JzogewotICAgICAgICAgICAgICAgIHBhcmVudEdldCA9ICRwYXJzZShhdHRyc1thdHRy
TmFtZV0pOwotICAgICAgICAgICAgICAgIHBhcmVudFNldCA9IHBhcmVudEdldC5hc3NpZ24gfHwg
ZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAvLyByZXNldCB0aGUgY2hhbmdlLCBvciB3
ZSB3aWxsIHRocm93IHRoaXMgZXhjZXB0aW9uIG9uIGV2ZXJ5ICRkaWdlc3QKLSAgICAgICAgICAg
ICAgICAgIGxhc3RWYWx1ZSA9IHNjb3BlW3Njb3BlTmFtZV0gPSBwYXJlbnRHZXQocGFyZW50U2Nv
cGUpOwotICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoTk9OX0FTU0lHTkFCTEVfTU9ERUxf
RVhQUkVTU0lPTiArIGF0dHJzW2F0dHJOYW1lXSArCi0gICAgICAgICAgICAgICAgICAgICAgJyAo
ZGlyZWN0aXZlOiAnICsgbmV3SXNvbGF0ZVNjb3BlRGlyZWN0aXZlLm5hbWUgKyAnKScpOwotICAg
ICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICAgICAgbGFzdFZhbHVlID0gc2NvcGVbc2NvcGVO
YW1lXSA9IHBhcmVudEdldChwYXJlbnRTY29wZSk7Ci0gICAgICAgICAgICAgICAgc2NvcGUuJHdh
dGNoKGZ1bmN0aW9uIHBhcmVudFZhbHVlV2F0Y2goKSB7Ci0gICAgICAgICAgICAgICAgICB2YXIg
cGFyZW50VmFsdWUgPSBwYXJlbnRHZXQocGFyZW50U2NvcGUpOwotCi0gICAgICAgICAgICAgICAg
ICBpZiAocGFyZW50VmFsdWUgIT09IHNjb3BlW3Njb3BlTmFtZV0pIHsKLSAgICAgICAgICAgICAg
ICAgICAgLy8gd2UgYXJlIG91dCBvZiBzeW5jIGFuZCBuZWVkIHRvIGNvcHkKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKHBhcmVudFZhbHVlICE9PSBsYXN0VmFsdWUpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAvLyBwYXJlbnQgY2hhbmdlZCBhbmQgaXQgaGFzIHByZWNlZGVuY2UKLSAgICAgICAg
ICAgICAgICAgICAgICBsYXN0VmFsdWUgPSBzY29wZVtzY29wZU5hbWVdID0gcGFyZW50VmFsdWU7
Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgLy8g
aWYgdGhlIHBhcmVudCBjYW4gYmUgYXNzaWduZWQgdGhlbiBkbyBzbwotICAgICAgICAgICAgICAg
ICAgICAgIHBhcmVudFNldChwYXJlbnRTY29wZSwgcGFyZW50VmFsdWUgPSBsYXN0VmFsdWUgPSBz
Y29wZVtzY29wZU5hbWVdKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcmVudFZhbHVlOwotICAgICAgICAgICAg
ICAgIH0pOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgICAgY2FzZSAnJic6IHsKLSAgICAgICAgICAgICAgICBwYXJlbnRHZXQgPSAkcGFyc2Uo
YXR0cnNbYXR0ck5hbWVdKTsKLSAgICAgICAgICAgICAgICBzY29wZVtzY29wZU5hbWVdID0gZnVu
Y3Rpb24obG9jYWxzKSB7Ci0gICAgICAgICAgICAgICAgICByZXR1cm4gcGFyZW50R2V0KHBhcmVu
dFNjb3BlLCBsb2NhbHMpOwotICAgICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICBkZWZhdWx0OiB7Ci0gICAgICAg
ICAgICAgICAgdGhyb3cgRXJyb3IoJ0ludmFsaWQgaXNvbGF0ZSBzY29wZSBkZWZpbml0aW9uIGZv
ciBkaXJlY3RpdmUgJyArCi0gICAgICAgICAgICAgICAgICAgIG5ld0lzb2xhdGVTY29wZURpcmVj
dGl2ZS5uYW1lICsgJzogJyArIGRlZmluaXRvbik7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICB9KTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChjb250cm9sbGVy
RGlyZWN0aXZlcykgewotICAgICAgICAgIGZvckVhY2goY29udHJvbGxlckRpcmVjdGl2ZXMsIGZ1
bmN0aW9uKGRpcmVjdGl2ZSkgewotICAgICAgICAgICAgdmFyIGxvY2FscyA9IHsKLSAgICAgICAg
ICAgICAgJHNjb3BlOiBzY29wZSwKLSAgICAgICAgICAgICAgJGVsZW1lbnQ6ICRlbGVtZW50LAot
ICAgICAgICAgICAgICAkYXR0cnM6IGF0dHJzLAotICAgICAgICAgICAgICAkdHJhbnNjbHVkZTog
Ym91bmRUcmFuc2NsdWRlRm4KLSAgICAgICAgICAgIH07Ci0KLSAgICAgICAgICAgIGNvbnRyb2xs
ZXIgPSBkaXJlY3RpdmUuY29udHJvbGxlcjsKLSAgICAgICAgICAgIGlmIChjb250cm9sbGVyID09
ICdAJykgewotICAgICAgICAgICAgICBjb250cm9sbGVyID0gYXR0cnNbZGlyZWN0aXZlLm5hbWVd
OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAkZWxlbWVudC5kYXRhKAotICAgICAgICAg
ICAgICAgICckJyArIGRpcmVjdGl2ZS5uYW1lICsgJ0NvbnRyb2xsZXInLAotICAgICAgICAgICAg
ICAgICRjb250cm9sbGVyKGNvbnRyb2xsZXIsIGxvY2FscykpOwotICAgICAgICAgIH0pOwotICAg
ICAgICB9Ci0KLSAgICAgICAgLy8gUFJFTElOS0lORwotICAgICAgICBmb3IoaSA9IDAsIGlpID0g
cHJlTGlua0Zucy5sZW5ndGg7IGkgPCBpaTsgaSsrKSB7Ci0gICAgICAgICAgdHJ5IHsKLSAgICAg
ICAgICAgIGxpbmtGbiA9IHByZUxpbmtGbnNbaV07Ci0gICAgICAgICAgICBsaW5rRm4oc2NvcGUs
ICRlbGVtZW50LCBhdHRycywKLSAgICAgICAgICAgICAgICBsaW5rRm4ucmVxdWlyZSAmJiBnZXRD
b250cm9sbGVycyhsaW5rRm4ucmVxdWlyZSwgJGVsZW1lbnQpKTsKLSAgICAgICAgICB9IGNhdGNo
IChlKSB7Ci0gICAgICAgICAgICAkZXhjZXB0aW9uSGFuZGxlcihlLCBzdGFydGluZ1RhZygkZWxl
bWVudCkpOwotICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vIFJFQ1VSU0lPTgot
ICAgICAgICBjaGlsZExpbmtGbiAmJiBjaGlsZExpbmtGbihzY29wZSwgbGlua05vZGUuY2hpbGRO
b2RlcywgdW5kZWZpbmVkLCBib3VuZFRyYW5zY2x1ZGVGbik7Ci0KLSAgICAgICAgLy8gUE9TVExJ
TktJTkcKLSAgICAgICAgZm9yKGkgPSAwLCBpaSA9IHBvc3RMaW5rRm5zLmxlbmd0aDsgaSA8IGlp
OyBpKyspIHsKLSAgICAgICAgICB0cnkgewotICAgICAgICAgICAgbGlua0ZuID0gcG9zdExpbmtG
bnNbaV07Ci0gICAgICAgICAgICBsaW5rRm4oc2NvcGUsICRlbGVtZW50LCBhdHRycywKLSAgICAg
ICAgICAgICAgICBsaW5rRm4ucmVxdWlyZSAmJiBnZXRDb250cm9sbGVycyhsaW5rRm4ucmVxdWly
ZSwgJGVsZW1lbnQpKTsKLSAgICAgICAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgICAgICAkZXhj
ZXB0aW9uSGFuZGxlcihlLCBzdGFydGluZ1RhZygkZWxlbWVudCkpOwotICAgICAgICAgIH0KLSAg
ICAgICAgfQotICAgICAgfQotICAgIH0KLQotCi0gICAgLyoqCi0gICAgICogbG9va3MgdXAgdGhl
IGRpcmVjdGl2ZSBhbmQgZGVjb3JhdGVzIGl0IHdpdGggZXhjZXB0aW9uIGhhbmRsaW5nIGFuZCBw
cm9wZXIgcGFyYW1ldGVycy4gV2UKLSAgICAgKiBjYWxsIHRoaXMgdGhlIGJvdW5kRGlyZWN0aXZl
LgotICAgICAqCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgbmFtZSBvZiB0aGUgZGlyZWN0
aXZlIHRvIGxvb2sgdXAuCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IGxvY2F0aW9uIFRoZSBkaXJl
Y3RpdmUgbXVzdCBiZSBmb3VuZCBpbiBzcGVjaWZpYyBmb3JtYXQuCi0gICAgICogICBTdHJpbmcg
Y29udGFpbmluZyBhbnkgb2YgdGhlc2VzIGNoYXJhY3RlcnM6Ci0gICAgICoKLSAgICAgKiAgICog
YEVgOiBlbGVtZW50IG5hbWUKLSAgICAgKiAgICogYEEnOiBhdHRyaWJ1dGUKLSAgICAgKiAgICog
YENgOiBjbGFzcwotICAgICAqICAgKiBgTWA6IGNvbW1lbnQKLSAgICAgKiBAcmV0dXJucyB0cnVl
IGlmIGRpcmVjdGl2ZSB3YXMgYWRkZWQuCi0gICAgICovCi0gICAgZnVuY3Rpb24gYWRkRGlyZWN0
aXZlKHREaXJlY3RpdmVzLCBuYW1lLCBsb2NhdGlvbiwgbWF4UHJpb3JpdHkpIHsKLSAgICAgIHZh
ciBtYXRjaCA9IGZhbHNlOwotICAgICAgaWYgKGhhc0RpcmVjdGl2ZXMuaGFzT3duUHJvcGVydHko
bmFtZSkpIHsKLSAgICAgICAgZm9yKHZhciBkaXJlY3RpdmUsIGRpcmVjdGl2ZXMgPSAkaW5qZWN0
b3IuZ2V0KG5hbWUgKyBTdWZmaXgpLAotICAgICAgICAgICAgaSA9IDAsIGlpID0gZGlyZWN0aXZl
cy5sZW5ndGg7IGk8aWk7IGkrKykgewotICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBkaXJl
Y3RpdmUgPSBkaXJlY3RpdmVzW2ldOwotICAgICAgICAgICAgaWYgKCAobWF4UHJpb3JpdHkgPT09
IHVuZGVmaW5lZCB8fCBtYXhQcmlvcml0eSA+IGRpcmVjdGl2ZS5wcmlvcml0eSkgJiYKLSAgICAg
ICAgICAgICAgICAgZGlyZWN0aXZlLnJlc3RyaWN0LmluZGV4T2YobG9jYXRpb24pICE9IC0xKSB7
Ci0gICAgICAgICAgICAgIHREaXJlY3RpdmVzLnB1c2goZGlyZWN0aXZlKTsKLSAgICAgICAgICAg
ICAgbWF0Y2ggPSB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0gY2F0Y2goZSkgeyAk
ZXhjZXB0aW9uSGFuZGxlcihlKTsgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICByZXR1cm4g
bWF0Y2g7Ci0gICAgfQotCi0KLSAgICAvKioKLSAgICAgKiBXaGVuIHRoZSBlbGVtZW50IGlzIHJl
cGxhY2VkIHdpdGggSFRNTCB0ZW1wbGF0ZSB0aGVuIHRoZSBuZXcgYXR0cmlidXRlcwotICAgICAq
IG9uIHRoZSB0ZW1wbGF0ZSBuZWVkIHRvIGJlIG1lcmdlZCB3aXRoIHRoZSBleGlzdGluZyBhdHRy
aWJ1dGVzIGluIHRoZSBET00uCi0gICAgICogVGhlIGRlc2lyZWQgZWZmZWN0IGlzIHRvIGhhdmUg
Ym90aCBvZiB0aGUgYXR0cmlidXRlcyBwcmVzZW50LgotICAgICAqCi0gICAgICogQHBhcmFtIHtv
YmplY3R9IGRzdCBkZXN0aW5hdGlvbiBhdHRyaWJ1dGVzIChvcmlnaW5hbCBET00pCi0gICAgICog
QHBhcmFtIHtvYmplY3R9IHNyYyBzb3VyY2UgYXR0cmlidXRlcyAoZnJvbSB0aGUgZGlyZWN0aXZl
IHRlbXBsYXRlKQotICAgICAqLwotICAgIGZ1bmN0aW9uIG1lcmdlVGVtcGxhdGVBdHRyaWJ1dGVz
KGRzdCwgc3JjKSB7Ci0gICAgICB2YXIgc3JjQXR0ciA9IHNyYy4kYXR0ciwKLSAgICAgICAgICBk
c3RBdHRyID0gZHN0LiRhdHRyLAotICAgICAgICAgICRlbGVtZW50ID0gZHN0LiQkZWxlbWVudDsK
LQotICAgICAgLy8gcmVhcHBseSB0aGUgb2xkIGF0dHJpYnV0ZXMgdG8gdGhlIG5ldyBlbGVtZW50
Ci0gICAgICBmb3JFYWNoKGRzdCwgZnVuY3Rpb24odmFsdWUsIGtleSkgewotICAgICAgICBpZiAo
a2V5LmNoYXJBdCgwKSAhPSAnJCcpIHsKLSAgICAgICAgICBpZiAoc3JjW2tleV0pIHsKLSAgICAg
ICAgICAgIHZhbHVlICs9IChrZXkgPT09ICdzdHlsZScgPyAnOycgOiAnICcpICsgc3JjW2tleV07
Ci0gICAgICAgICAgfQotICAgICAgICAgIGRzdC4kc2V0KGtleSwgdmFsdWUsIHRydWUsIHNyY0F0
dHJba2V5XSk7Ci0gICAgICAgIH0KLSAgICAgIH0pOwotCi0gICAgICAvLyBjb3B5IHRoZSBuZXcg
YXR0cmlidXRlcyBvbiB0aGUgb2xkIGF0dHJzIG9iamVjdAotICAgICAgZm9yRWFjaChzcmMsIGZ1
bmN0aW9uKHZhbHVlLCBrZXkpIHsKLSAgICAgICAgaWYgKGtleSA9PSAnY2xhc3MnKSB7Ci0gICAg
ICAgICAgc2FmZUFkZENsYXNzKCRlbGVtZW50LCB2YWx1ZSk7Ci0gICAgICAgICAgZHN0WydjbGFz
cyddID0gKGRzdFsnY2xhc3MnXSA/IGRzdFsnY2xhc3MnXSArICcgJyA6ICcnKSArIHZhbHVlOwot
ICAgICAgICB9IGVsc2UgaWYgKGtleSA9PSAnc3R5bGUnKSB7Ci0gICAgICAgICAgJGVsZW1lbnQu
YXR0cignc3R5bGUnLCAkZWxlbWVudC5hdHRyKCdzdHlsZScpICsgJzsnICsgdmFsdWUpOwotICAg
ICAgICB9IGVsc2UgaWYgKGtleS5jaGFyQXQoMCkgIT0gJyQnICYmICFkc3QuaGFzT3duUHJvcGVy
dHkoa2V5KSkgewotICAgICAgICAgIGRzdFtrZXldID0gdmFsdWU7Ci0gICAgICAgICAgZHN0QXR0
cltrZXldID0gc3JjQXR0cltrZXldOwotICAgICAgICB9Ci0gICAgICB9KTsKLSAgICB9Ci0KLQot
ICAgIGZ1bmN0aW9uIGNvbXBpbGVUZW1wbGF0ZVVybChkaXJlY3RpdmVzLCBiZWZvcmVUZW1wbGF0
ZU5vZGVMaW5rRm4sICRjb21waWxlTm9kZSwgdEF0dHJzLAotICAgICAgICAkcm9vdEVsZW1lbnQs
IHJlcGxhY2UsIGNoaWxkVHJhbnNjbHVkZUZuKSB7Ci0gICAgICB2YXIgbGlua1F1ZXVlID0gW10s
Ci0gICAgICAgICAgYWZ0ZXJUZW1wbGF0ZU5vZGVMaW5rRm4sCi0gICAgICAgICAgYWZ0ZXJUZW1w
bGF0ZUNoaWxkTGlua0ZuLAotICAgICAgICAgIGJlZm9yZVRlbXBsYXRlQ29tcGlsZU5vZGUgPSAk
Y29tcGlsZU5vZGVbMF0sCi0gICAgICAgICAgb3JpZ0FzeW5jRGlyZWN0aXZlID0gZGlyZWN0aXZl
cy5zaGlmdCgpLAotICAgICAgICAgIC8vIFRoZSBmYWN0IHRoYXQgd2UgaGF2ZSB0byBjb3B5IGFu
ZCBwYXRjaCB0aGUgZGlyZWN0aXZlIHNlZW1zIHdyb25nIQotICAgICAgICAgIGRlcml2ZWRTeW5j
RGlyZWN0aXZlID0gZXh0ZW5kKHt9LCBvcmlnQXN5bmNEaXJlY3RpdmUsIHsKLSAgICAgICAgICAg
IGNvbnRyb2xsZXI6IG51bGwsIHRlbXBsYXRlVXJsOiBudWxsLCB0cmFuc2NsdWRlOiBudWxsLCBz
Y29wZTogbnVsbAotICAgICAgICAgIH0pOwotCi0gICAgICAkY29tcGlsZU5vZGUuaHRtbCgnJyk7
Ci0KLSAgICAgICRodHRwLmdldChvcmlnQXN5bmNEaXJlY3RpdmUudGVtcGxhdGVVcmwsIHtjYWNo
ZTogJHRlbXBsYXRlQ2FjaGV9KS4KLSAgICAgICAgc3VjY2VzcyhmdW5jdGlvbihjb250ZW50KSB7
Ci0gICAgICAgICAgdmFyIGNvbXBpbGVOb2RlLCB0ZW1wVGVtcGxhdGVBdHRycywgJHRlbXBsYXRl
OwotCi0gICAgICAgICAgY29udGVudCA9IGRlbm9ybWFsaXplVGVtcGxhdGUoY29udGVudCk7Ci0K
LSAgICAgICAgICBpZiAocmVwbGFjZSkgewotICAgICAgICAgICAgJHRlbXBsYXRlID0ganFMaXRl
KCc8ZGl2PicgKyB0cmltKGNvbnRlbnQpICsgJzwvZGl2PicpLmNvbnRlbnRzKCk7Ci0gICAgICAg
ICAgICBjb21waWxlTm9kZSA9ICR0ZW1wbGF0ZVswXTsKLQotICAgICAgICAgICAgaWYgKCR0ZW1w
bGF0ZS5sZW5ndGggIT0gMSB8fCBjb21waWxlTm9kZS5ub2RlVHlwZSAhPT0gMSkgewotICAgICAg
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoTVVMVElfUk9PVF9URU1QTEFURV9FUlJPUiArIGNvbnRl
bnQpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0ZW1wVGVtcGxhdGVBdHRycyA9IHsk
YXR0cjoge319OwotICAgICAgICAgICAgcmVwbGFjZVdpdGgoJHJvb3RFbGVtZW50LCAkY29tcGls
ZU5vZGUsIGNvbXBpbGVOb2RlKTsKLSAgICAgICAgICAgIGNvbGxlY3REaXJlY3RpdmVzKGNvbXBp
bGVOb2RlLCBkaXJlY3RpdmVzLCB0ZW1wVGVtcGxhdGVBdHRycyk7Ci0gICAgICAgICAgICBtZXJn
ZVRlbXBsYXRlQXR0cmlidXRlcyh0QXR0cnMsIHRlbXBUZW1wbGF0ZUF0dHJzKTsKLSAgICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgY29tcGlsZU5vZGUgPSBiZWZvcmVUZW1wbGF0ZUNvbXBp
bGVOb2RlOwotICAgICAgICAgICAgJGNvbXBpbGVOb2RlLmh0bWwoY29udGVudCk7Ci0gICAgICAg
ICAgfQotCi0gICAgICAgICAgZGlyZWN0aXZlcy51bnNoaWZ0KGRlcml2ZWRTeW5jRGlyZWN0aXZl
KTsKLSAgICAgICAgICBhZnRlclRlbXBsYXRlTm9kZUxpbmtGbiA9IGFwcGx5RGlyZWN0aXZlc1Rv
Tm9kZShkaXJlY3RpdmVzLCBjb21waWxlTm9kZSwgdEF0dHJzLCBjaGlsZFRyYW5zY2x1ZGVGbik7
Ci0gICAgICAgICAgYWZ0ZXJUZW1wbGF0ZUNoaWxkTGlua0ZuID0gY29tcGlsZU5vZGVzKCRjb21w
aWxlTm9kZVswXS5jaGlsZE5vZGVzLCBjaGlsZFRyYW5zY2x1ZGVGbik7Ci0KLQotICAgICAgICAg
IHdoaWxlKGxpbmtRdWV1ZS5sZW5ndGgpIHsKLSAgICAgICAgICAgIHZhciBjb250cm9sbGVyID0g
bGlua1F1ZXVlLnBvcCgpLAotICAgICAgICAgICAgICAgIGxpbmtSb290RWxlbWVudCA9IGxpbmtR
dWV1ZS5wb3AoKSwKLSAgICAgICAgICAgICAgICBiZWZvcmVUZW1wbGF0ZUxpbmtOb2RlID0gbGlu
a1F1ZXVlLnBvcCgpLAotICAgICAgICAgICAgICAgIHNjb3BlID0gbGlua1F1ZXVlLnBvcCgpLAot
ICAgICAgICAgICAgICAgIGxpbmtOb2RlID0gY29tcGlsZU5vZGU7Ci0KLSAgICAgICAgICAgIGlm
IChiZWZvcmVUZW1wbGF0ZUxpbmtOb2RlICE9PSBiZWZvcmVUZW1wbGF0ZUNvbXBpbGVOb2RlKSB7
Ci0gICAgICAgICAgICAgIC8vIGl0IHdhcyBjbG9uZWQgdGhlcmVmb3JlIHdlIGhhdmUgdG8gY2xv
bmUgYXMgd2VsbC4KLSAgICAgICAgICAgICAgbGlua05vZGUgPSBKUUxpdGVDbG9uZShjb21waWxl
Tm9kZSk7Ci0gICAgICAgICAgICAgIHJlcGxhY2VXaXRoKGxpbmtSb290RWxlbWVudCwganFMaXRl
KGJlZm9yZVRlbXBsYXRlTGlua05vZGUpLCBsaW5rTm9kZSk7Ci0gICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgIGFmdGVyVGVtcGxhdGVOb2RlTGlua0ZuKGZ1bmN0aW9uKCkgewotICAgICAgICAg
ICAgICBiZWZvcmVUZW1wbGF0ZU5vZGVMaW5rRm4oYWZ0ZXJUZW1wbGF0ZUNoaWxkTGlua0ZuLCBz
Y29wZSwgbGlua05vZGUsICRyb290RWxlbWVudCwgY29udHJvbGxlcik7Ci0gICAgICAgICAgICB9
LCBzY29wZSwgbGlua05vZGUsICRyb290RWxlbWVudCwgY29udHJvbGxlcik7Ci0gICAgICAgICAg
fQotICAgICAgICAgIGxpbmtRdWV1ZSA9IG51bGw7Ci0gICAgICAgIH0pLgotICAgICAgICBlcnJv
cihmdW5jdGlvbihyZXNwb25zZSwgY29kZSwgaGVhZGVycywgY29uZmlnKSB7Ci0gICAgICAgICAg
dGhyb3cgRXJyb3IoJ0ZhaWxlZCB0byBsb2FkIHRlbXBsYXRlOiAnICsgY29uZmlnLnVybCk7Ci0g
ICAgICAgIH0pOwotCi0gICAgICByZXR1cm4gZnVuY3Rpb24gZGVsYXllZE5vZGVMaW5rRm4oaWdu
b3JlQ2hpbGRMaW5rRm4sIHNjb3BlLCBub2RlLCByb290RWxlbWVudCwgY29udHJvbGxlcikgewot
ICAgICAgICBpZiAobGlua1F1ZXVlKSB7Ci0gICAgICAgICAgbGlua1F1ZXVlLnB1c2goc2NvcGUp
OwotICAgICAgICAgIGxpbmtRdWV1ZS5wdXNoKG5vZGUpOwotICAgICAgICAgIGxpbmtRdWV1ZS5w
dXNoKHJvb3RFbGVtZW50KTsKLSAgICAgICAgICBsaW5rUXVldWUucHVzaChjb250cm9sbGVyKTsK
LSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICBhZnRlclRlbXBsYXRlTm9kZUxpbmtGbihmdW5j
dGlvbigpIHsKLSAgICAgICAgICAgIGJlZm9yZVRlbXBsYXRlTm9kZUxpbmtGbihhZnRlclRlbXBs
YXRlQ2hpbGRMaW5rRm4sIHNjb3BlLCBub2RlLCByb290RWxlbWVudCwgY29udHJvbGxlcik7Ci0g
ICAgICAgICAgfSwgc2NvcGUsIG5vZGUsIHJvb3RFbGVtZW50LCBjb250cm9sbGVyKTsKLSAgICAg
ICAgfQotICAgICAgfTsKLSAgICB9Ci0KLQotICAgIC8qKgotICAgICAqIFNvcnRpbmcgZnVuY3Rp
b24gZm9yIGJvdW5kIGRpcmVjdGl2ZXMuCi0gICAgICovCi0gICAgZnVuY3Rpb24gYnlQcmlvcml0
eShhLCBiKSB7Ci0gICAgICByZXR1cm4gYi5wcmlvcml0eSAtIGEucHJpb3JpdHk7Ci0gICAgfQot
Ci0KLSAgICBmdW5jdGlvbiBhc3NlcnROb0R1cGxpY2F0ZSh3aGF0LCBwcmV2aW91c0RpcmVjdGl2
ZSwgZGlyZWN0aXZlLCBlbGVtZW50KSB7Ci0gICAgICBpZiAocHJldmlvdXNEaXJlY3RpdmUpIHsK
LSAgICAgICAgdGhyb3cgRXJyb3IoJ011bHRpcGxlIGRpcmVjdGl2ZXMgWycgKyBwcmV2aW91c0Rp
cmVjdGl2ZS5uYW1lICsgJywgJyArCi0gICAgICAgICAgZGlyZWN0aXZlLm5hbWUgKyAnXSBhc2tp
bmcgZm9yICcgKyB3aGF0ICsgJyBvbjogJyArICBzdGFydGluZ1RhZyhlbGVtZW50KSk7Ci0gICAg
ICB9Ci0gICAgfQotCi0KLSAgICBmdW5jdGlvbiBhZGRUZXh0SW50ZXJwb2xhdGVEaXJlY3RpdmUo
ZGlyZWN0aXZlcywgdGV4dCkgewotICAgICAgdmFyIGludGVycG9sYXRlRm4gPSAkaW50ZXJwb2xh
dGUodGV4dCwgdHJ1ZSk7Ci0gICAgICBpZiAoaW50ZXJwb2xhdGVGbikgewotICAgICAgICBkaXJl
Y3RpdmVzLnB1c2goewotICAgICAgICAgIHByaW9yaXR5OiAwLAotICAgICAgICAgIGNvbXBpbGU6
IHZhbHVlRm4oZnVuY3Rpb24gdGV4dEludGVycG9sYXRlTGlua0ZuKHNjb3BlLCBub2RlKSB7Ci0g
ICAgICAgICAgICB2YXIgcGFyZW50ID0gbm9kZS5wYXJlbnQoKSwKLSAgICAgICAgICAgICAgICBi
aW5kaW5ncyA9IHBhcmVudC5kYXRhKCckYmluZGluZycpIHx8IFtdOwotICAgICAgICAgICAgYmlu
ZGluZ3MucHVzaChpbnRlcnBvbGF0ZUZuKTsKLSAgICAgICAgICAgIHNhZmVBZGRDbGFzcyhwYXJl
bnQuZGF0YSgnJGJpbmRpbmcnLCBiaW5kaW5ncyksICduZy1iaW5kaW5nJyk7Ci0gICAgICAgICAg
ICBzY29wZS4kd2F0Y2goaW50ZXJwb2xhdGVGbiwgZnVuY3Rpb24gaW50ZXJwb2xhdGVGbldhdGNo
QWN0aW9uKHZhbHVlKSB7Ci0gICAgICAgICAgICAgIG5vZGVbMF0ubm9kZVZhbHVlID0gdmFsdWU7
Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICB9KQotICAgICAgICB9KTsKLSAgICAgIH0KLSAg
ICB9Ci0KLQotICAgIGZ1bmN0aW9uIGFkZEF0dHJJbnRlcnBvbGF0ZURpcmVjdGl2ZShub2RlLCBk
aXJlY3RpdmVzLCB2YWx1ZSwgbmFtZSkgewotICAgICAgdmFyIGludGVycG9sYXRlRm4gPSAkaW50
ZXJwb2xhdGUodmFsdWUsIHRydWUpOwotCi0gICAgICAvLyBubyBpbnRlcnBvbGF0aW9uIGZvdW5k
IC0+IGlnbm9yZQotICAgICAgaWYgKCFpbnRlcnBvbGF0ZUZuKSByZXR1cm47Ci0KLQotICAgICAg
ZGlyZWN0aXZlcy5wdXNoKHsKLSAgICAgICAgcHJpb3JpdHk6IDEwMCwKLSAgICAgICAgY29tcGls
ZTogdmFsdWVGbihmdW5jdGlvbiBhdHRySW50ZXJwb2xhdGVMaW5rRm4oc2NvcGUsIGVsZW1lbnQs
IGF0dHIpIHsKLSAgICAgICAgICB2YXIgJCRvYnNlcnZlcnMgPSAoYXR0ci4kJG9ic2VydmVycyB8
fCAoYXR0ci4kJG9ic2VydmVycyA9IHt9KSk7Ci0KLSAgICAgICAgICBpZiAobmFtZSA9PT0gJ2Ns
YXNzJykgewotICAgICAgICAgICAgLy8gd2UgbmVlZCB0byBpbnRlcnBvbGF0ZSBjbGFzc2VzIGFn
YWluLCBpbiB0aGUgY2FzZSB0aGUgZWxlbWVudCB3YXMgcmVwbGFjZWQKLSAgICAgICAgICAgIC8v
IGFuZCB0aGVyZWZvcmUgdGhlIHR3byBjbGFzcyBhdHRycyBnb3QgbWVyZ2VkIC0gd2Ugd2FudCB0
byBpbnRlcnBvbGF0ZSB0aGUgcmVzdWx0Ci0gICAgICAgICAgICBpbnRlcnBvbGF0ZUZuID0gJGlu
dGVycG9sYXRlKGF0dHJbbmFtZV0sIHRydWUpOwotICAgICAgICAgIH0KLQotICAgICAgICAgIGF0
dHJbbmFtZV0gPSB1bmRlZmluZWQ7Ci0gICAgICAgICAgKCQkb2JzZXJ2ZXJzW25hbWVdIHx8ICgk
JG9ic2VydmVyc1tuYW1lXSA9IFtdKSkuJCRpbnRlciA9IHRydWU7Ci0gICAgICAgICAgKGF0dHIu
JCRvYnNlcnZlcnMgJiYgYXR0ci4kJG9ic2VydmVyc1tuYW1lXS4kJHNjb3BlIHx8IHNjb3BlKS4K
LSAgICAgICAgICAgICR3YXRjaChpbnRlcnBvbGF0ZUZuLCBmdW5jdGlvbiBpbnRlcnBvbGF0ZUZu
V2F0Y2hBY3Rpb24odmFsdWUpIHsKLSAgICAgICAgICAgICAgYXR0ci4kc2V0KG5hbWUsIHZhbHVl
KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9KQotICAgICAgfSk7Ci0gICAgfQotCi0KLSAg
ICAvKioKLSAgICAgKiBUaGlzIGlzIGEgc3BlY2lhbCBqcUxpdGUucmVwbGFjZVdpdGgsIHdoaWNo
IGNhbiByZXBsYWNlIGl0ZW1zIHdoaWNoCi0gICAgICogaGF2ZSBubyBwYXJlbnRzLCBwcm92aWRl
ZCB0aGF0IHRoZSBjb250YWluaW5nIGpxTGl0ZSBjb2xsZWN0aW9uIGlzIHByb3ZpZGVkLgotICAg
ICAqCi0gICAgICogQHBhcmFtIHtKcUxpdGU9fSAkcm9vdEVsZW1lbnQgVGhlIHJvb3Qgb2YgdGhl
IGNvbXBpbGUgdHJlZS4gVXNlZCBzbyB0aGF0IHdlIGNhbiByZXBsYWNlIG5vZGVzCi0gICAgICog
ICAgaW4gdGhlIHJvb3Qgb2YgdGhlIHRyZWUuCi0gICAgICogQHBhcmFtIHtKcUxpdGV9ICRlbGVt
ZW50IFRoZSBqcUxpdGUgZWxlbWVudCB3aGljaCB3ZSBhcmUgZ29pbmcgdG8gcmVwbGFjZS4gV2Ug
a2VlcCB0aGUgc2hlbGwsCi0gICAgICogICAgYnV0IHJlcGxhY2UgaXRzIERPTSBub2RlIHJlZmVy
ZW5jZS4KLSAgICAgKiBAcGFyYW0ge05vZGV9IG5ld05vZGUgVGhlIG5ldyBET00gbm9kZS4KLSAg
ICAgKi8KLSAgICBmdW5jdGlvbiByZXBsYWNlV2l0aCgkcm9vdEVsZW1lbnQsICRlbGVtZW50LCBu
ZXdOb2RlKSB7Ci0gICAgICB2YXIgb2xkTm9kZSA9ICRlbGVtZW50WzBdLAotICAgICAgICAgIHBh
cmVudCA9IG9sZE5vZGUucGFyZW50Tm9kZSwKLSAgICAgICAgICBpLCBpaTsKLQotICAgICAgaWYg
KCRyb290RWxlbWVudCkgewotICAgICAgICBmb3IoaSA9IDAsIGlpID0gJHJvb3RFbGVtZW50Lmxl
bmd0aDsgaSA8IGlpOyBpKyspIHsKLSAgICAgICAgICBpZiAoJHJvb3RFbGVtZW50W2ldID09IG9s
ZE5vZGUpIHsKLSAgICAgICAgICAgICRyb290RWxlbWVudFtpXSA9IG5ld05vZGU7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgICAgaWYg
KHBhcmVudCkgewotICAgICAgICBwYXJlbnQucmVwbGFjZUNoaWxkKG5ld05vZGUsIG9sZE5vZGUp
OwotICAgICAgfQotCi0gICAgICBuZXdOb2RlW2pxTGl0ZS5leHBhbmRvXSA9IG9sZE5vZGVbanFM
aXRlLmV4cGFuZG9dOwotICAgICAgJGVsZW1lbnRbMF0gPSBuZXdOb2RlOwotICAgIH0KLSAgfV07
Ci19Ci0KLXZhciBQUkVGSVhfUkVHRVhQID0gL14oeFtcOlwtX118ZGF0YVtcOlwtX10pL2k7Ci0v
KioKLSAqIENvbnZlcnRzIGFsbCBhY2NlcHRlZCBkaXJlY3RpdmVzIGZvcm1hdCBpbnRvIHByb3Bl
ciBkaXJlY3RpdmUgbmFtZS4KLSAqIEFsbCBvZiB0aGVzZSB3aWxsIGJlY29tZSAnbXlEaXJlY3Rp
dmUnOgotICogICBteTpEaVJlY3RpdmUKLSAqICAgbXktZGlyZWN0aXZlCi0gKiAgIHgtbXktZGly
ZWN0aXZlCi0gKiAgIGRhdGEtbXk6ZGlyZWN0aXZlCi0gKgotICogQWxzbyB0aGVyZSBpcyBzcGVj
aWFsIGNhc2UgZm9yIE1veiBwcmVmaXggc3RhcnRpbmcgd2l0aCB1cHBlciBjYXNlIGxldHRlci4K
LSAqIEBwYXJhbSBuYW1lIE5hbWUgdG8gbm9ybWFsaXplCi0gKi8KLWZ1bmN0aW9uIGRpcmVjdGl2
ZU5vcm1hbGl6ZShuYW1lKSB7Ci0gIHJldHVybiBjYW1lbENhc2UobmFtZS5yZXBsYWNlKFBSRUZJ
WF9SRUdFWFAsICcnKSk7Ci19Ci0KLS8qKgotICogQG5nZG9jIG9iamVjdAotICogQG5hbWUgbmcu
JGNvbXBpbGUuZGlyZWN0aXZlLkF0dHJpYnV0ZXMKLSAqIEBkZXNjcmlwdGlvbgotICoKLSAqIEEg
c2hhcmVkIG9iamVjdCBiZXR3ZWVuIGRpcmVjdGl2ZSBjb21waWxlIC8gbGlua2luZyBmdW5jdGlv
bnMgd2hpY2ggY29udGFpbnMgbm9ybWFsaXplZCBET00gZWxlbWVudAotICogYXR0cmlidXRlcy4g
VGhlIHRoZSB2YWx1ZXMgcmVmbGVjdCBjdXJyZW50IGJpbmRpbmcgc3RhdGUgYHt7IH19YC4gVGhl
IG5vcm1hbGl6YXRpb24gaXMgbmVlZGVkCi0gKiBzaW5jZSBhbGwgb2YgdGhlc2UgYXJlIHRyZWF0
ZWQgYXMgZXF1aXZhbGVudCBpbiBBbmd1bGFyOgotICoKLSAqICAgICAgICAgIDxzcGFuIG5nOmJp
bmQ9ImEiIG5nLWJpbmQ9ImEiIGRhdGEtbmctYmluZD0iYSIgeC1uZy1iaW5kPSJhIj4KLSAqLwot
Ci0vKioKLSAqIEBuZ2RvYyBwcm9wZXJ0eQotICogQG5hbWUgbmcuJGNvbXBpbGUuZGlyZWN0aXZl
LkF0dHJpYnV0ZXMjJGF0dHIKLSAqIEBwcm9wZXJ0eU9mIG5nLiRjb21waWxlLmRpcmVjdGl2ZS5B
dHRyaWJ1dGVzCi0gKiBAcmV0dXJucyB7b2JqZWN0fSBBIG1hcCBvZiBET00gZWxlbWVudCBhdHRy
aWJ1dGUgbmFtZXMgdG8gdGhlIG5vcm1hbGl6ZWQgbmFtZS4gVGhpcyBpcwotICogICAgICAgICAg
bmVlZGVkIHRvIGRvIHJldmVyc2UgbG9va3VwIGZyb20gbm9ybWFsaXplZCBuYW1lIGJhY2sgdG8g
YWN0dWFsIG5hbWUuCi0gKi8KLQotCi0vKioKLSAqIEBuZ2RvYyBmdW5jdGlvbgotICogQG5hbWUg
bmcuJGNvbXBpbGUuZGlyZWN0aXZlLkF0dHJpYnV0ZXMjJHNldAotICogQG1ldGhvZE9mIG5nLiRj
b21waWxlLmRpcmVjdGl2ZS5BdHRyaWJ1dGVzCi0gKiBAZnVuY3Rpb24KLSAqCi0gKiBAZGVzY3Jp
cHRpb24KLSAqIFNldCBET00gZWxlbWVudCBhdHRyaWJ1dGUgdmFsdWUuCi0gKgotICoKLSAqIEBw
YXJhbSB7c3RyaW5nfSBuYW1lIE5vcm1hbGl6ZWQgZWxlbWVudCBhdHRyaWJ1dGUgbmFtZSBvZiB0
aGUgcHJvcGVydHkgdG8gbW9kaWZ5LiBUaGUgbmFtZSBpcwotICogICAgICAgICAgcmV2ZXJzIHRy
YW5zbGF0ZWQgdXNpbmcgdGhlIHtAbGluayBuZy4kY29tcGlsZS5kaXJlY3RpdmUuQXR0cmlidXRl
cyMkYXR0ciAkYXR0cn0KLSAqICAgICAgICAgIHByb3BlcnR5IHRvIHRoZSBvcmlnaW5hbCBuYW1l
LgotICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlIFZhbHVlIHRvIHNldCB0aGUgYXR0cmlidXRlIHRv
LgotICovCi0KLQotCi0vKioKLSAqIENsb3N1cmUgY29tcGlsZXIgdHlwZSBpbmZvcm1hdGlvbgot
ICovCi0KLWZ1bmN0aW9uIG5vZGVzZXRMaW5raW5nRm4oCi0gIC8qIGFuZ3VsYXIuU2NvcGUgKi8g
c2NvcGUsCi0gIC8qIE5vZGVMaXN0ICovIG5vZGVMaXN0LAotICAvKiBFbGVtZW50ICovIHJvb3RF
bGVtZW50LAotICAvKiBmdW5jdGlvbihGdW5jdGlvbikgKi8gYm91bmRUcmFuc2NsdWRlRm4KLSl7
fQotCi1mdW5jdGlvbiBkaXJlY3RpdmVMaW5raW5nRm4oCi0gIC8qIG5vZGVzZXRMaW5raW5nRm4g
Ki8gbm9kZXNldExpbmtpbmdGbiwKLSAgLyogYW5ndWxhci5TY29wZSAqLyBzY29wZSwKLSAgLyog
Tm9kZSAqLyBub2RlLAotICAvKiBFbGVtZW50ICovIHJvb3RFbGVtZW50LAotICAvKiBmdW5jdGlv
bihGdW5jdGlvbikgKi8gYm91bmRUcmFuc2NsdWRlRm4KLSl7fQotCi0vKioKLSAqIEBuZ2RvYyBv
YmplY3QKLSAqIEBuYW1lIG5nLiRjb250cm9sbGVyUHJvdmlkZXIKLSAqIEBkZXNjcmlwdGlvbgot
ICogVGhlIHtAbGluayBuZy4kY29udHJvbGxlciAkY29udHJvbGxlciBzZXJ2aWNlfSBpcyB1c2Vk
IGJ5IEFuZ3VsYXIgdG8gY3JlYXRlIG5ldwotICogY29udHJvbGxlcnMuCi0gKgotICogVGhpcyBw
cm92aWRlciBhbGxvd3MgY29udHJvbGxlciByZWdpc3RyYXRpb24gdmlhIHRoZQotICoge0BsaW5r
IG5nLiRjb250cm9sbGVyUHJvdmlkZXIjcmVnaXN0ZXIgcmVnaXN0ZXJ9IG1ldGhvZC4KLSAqLwot
ZnVuY3Rpb24gJENvbnRyb2xsZXJQcm92aWRlcigpIHsKLSAgdmFyIGNvbnRyb2xsZXJzID0ge307
Ci0KLQotICAvKioKLSAgICogQG5nZG9jIGZ1bmN0aW9uCi0gICAqIEBuYW1lIG5nLiRjb250cm9s
bGVyUHJvdmlkZXIjcmVnaXN0ZXIKLSAgICogQG1ldGhvZE9mIG5nLiRjb250cm9sbGVyUHJvdmlk
ZXIKLSAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgQ29udHJvbGxlciBuYW1lCi0gICAqIEBwYXJh
bSB7RnVuY3Rpb258QXJyYXl9IGNvbnN0cnVjdG9yIENvbnRyb2xsZXIgY29uc3RydWN0b3IgZm4g
KG9wdGlvbmFsbHkgZGVjb3JhdGVkIHdpdGggREkKLSAgICogICAgYW5ub3RhdGlvbnMgaW4gdGhl
IGFycmF5IG5vdGF0aW9uKS4KLSAgICovCi0gIHRoaXMucmVnaXN0ZXIgPSBmdW5jdGlvbihuYW1l
LCBjb25zdHJ1Y3RvcikgewotICAgIGlmIChpc09iamVjdChuYW1lKSkgewotICAgICAgZXh0ZW5k
KGNvbnRyb2xsZXJzLCBuYW1lKQotICAgIH0gZWxzZSB7Ci0gICAgICBjb250cm9sbGVyc1tuYW1l
XSA9IGNvbnN0cnVjdG9yOwotICAgIH0KLSAgfTsKLQotCi0gIHRoaXMuJGdldCA9IFsnJGluamVj
dG9yJywgJyR3aW5kb3cnLCBmdW5jdGlvbigkaW5qZWN0b3IsICR3aW5kb3cpIHsKLQotICAgIC8q
KgotICAgICAqIEBuZ2RvYyBmdW5jdGlvbgotICAgICAqIEBuYW1lIG5nLiRjb250cm9sbGVyCi0g
ICAgICogQHJlcXVpcmVzICRpbmplY3RvcgotICAgICAqCi0gICAgICogQHBhcmFtIHtGdW5jdGlv
bnxzdHJpbmd9IGNvbnN0cnVjdG9yIElmIGNhbGxlZCB3aXRoIGEgZnVuY3Rpb24gdGhlbiBpdCdz
IGNvbnNpZGVyZWQgdG8gYmUgdGhlCi0gICAgICogICAgY29udHJvbGxlciBjb25zdHJ1Y3RvciBm
dW5jdGlvbi4gT3RoZXJ3aXNlIGl0J3MgY29uc2lkZXJlZCB0byBiZSBhIHN0cmluZyB3aGljaCBp
cyB1c2VkCi0gICAgICogICAgdG8gcmV0cmlldmUgdGhlIGNvbnRyb2xsZXIgY29uc3RydWN0b3Ig
dXNpbmcgdGhlIGZvbGxvd2luZyBzdGVwczoKLSAgICAgKgotICAgICAqICAgICogY2hlY2sgaWYg
YSBjb250cm9sbGVyIHdpdGggZ2l2ZW4gbmFtZSBpcyByZWdpc3RlcmVkIHZpYSBgJGNvbnRyb2xs
ZXJQcm92aWRlcmAKLSAgICAgKiAgICAqIGNoZWNrIGlmIGV2YWx1YXRpbmcgdGhlIHN0cmluZyBv
biB0aGUgY3VycmVudCBzY29wZSByZXR1cm5zIGEgY29uc3RydWN0b3IKLSAgICAgKiAgICAqIGNo
ZWNrIGB3aW5kb3dbY29uc3RydWN0b3JdYCBvbiB0aGUgZ2xvYmFsIGB3aW5kb3dgIG9iamVjdAot
ICAgICAqCi0gICAgICogQHBhcmFtIHtPYmplY3R9IGxvY2FscyBJbmplY3Rpb24gbG9jYWxzIGZv
ciBDb250cm9sbGVyLgotICAgICAqIEByZXR1cm4ge09iamVjdH0gSW5zdGFuY2Ugb2YgZ2l2ZW4g
Y29udHJvbGxlci4KLSAgICAgKgotICAgICAqIEBkZXNjcmlwdGlvbgotICAgICAqIGAkY29udHJv
bGxlcmAgc2VydmljZSBpcyByZXNwb25zaWJsZSBmb3IgaW5zdGFudGlhdGluZyBjb250cm9sbGVy
cy4KLSAgICAgKgotICAgICAqIEl0J3MganVzdCBhIHNpbXBsZSBjYWxsIHRvIHtAbGluayBBVVRP
LiRpbmplY3RvciAkaW5qZWN0b3J9LCBidXQgZXh0cmFjdGVkIGludG8KLSAgICAgKiBhIHNlcnZp
Y2UsIHNvIHRoYXQgb25lIGNhbiBvdmVycmlkZSB0aGlzIHNlcnZpY2Ugd2l0aCB7QGxpbmsgaHR0
cHM6Ly9naXN0LmdpdGh1Yi5jb20vMTY0OTc4OAotICAgICAqIEJDIHZlcnNpb259LgotICAgICAq
LwotICAgIHJldHVybiBmdW5jdGlvbihjb25zdHJ1Y3RvciwgbG9jYWxzKSB7Ci0gICAgICBpZihp
c1N0cmluZyhjb25zdHJ1Y3RvcikpIHsKLSAgICAgICAgdmFyIG5hbWUgPSBjb25zdHJ1Y3RvcjsK
LSAgICAgICAgY29uc3RydWN0b3IgPSBjb250cm9sbGVycy5oYXNPd25Qcm9wZXJ0eShuYW1lKQot
ICAgICAgICAgICAgPyBjb250cm9sbGVyc1tuYW1lXQotICAgICAgICAgICAgOiBnZXR0ZXIobG9j
YWxzLiRzY29wZSwgbmFtZSwgdHJ1ZSkgfHwgZ2V0dGVyKCR3aW5kb3csIG5hbWUsIHRydWUpOwot
Ci0gICAgICAgIGFzc2VydEFyZ0ZuKGNvbnN0cnVjdG9yLCBuYW1lLCB0cnVlKTsKLSAgICAgIH0K
LQotICAgICAgcmV0dXJuICRpbmplY3Rvci5pbnN0YW50aWF0ZShjb25zdHJ1Y3RvciwgbG9jYWxz
KTsKLSAgICB9OwotICB9XTsKLX0KLQotLyoqCi0gKiBAbmdkb2Mgb2JqZWN0Ci0gKiBAbmFtZSBu
Zy4kZG9jdW1lbnQKLSAqIEByZXF1aXJlcyAkd2luZG93Ci0gKgotICogQGRlc2NyaXB0aW9uCi0g
KiBBIHtAbGluayBhbmd1bGFyLmVsZW1lbnQgalF1ZXJ5IChsaXRlKX0td3JhcHBlZCByZWZlcmVu
Y2UgdG8gdGhlIGJyb3dzZXIncyBgd2luZG93LmRvY3VtZW50YAotICogZWxlbWVudC4KLSAqLwot
ZnVuY3Rpb24gJERvY3VtZW50UHJvdmlkZXIoKXsKLSAgdGhpcy4kZ2V0ID0gWyckd2luZG93Jywg
ZnVuY3Rpb24od2luZG93KXsKLSAgICByZXR1cm4ganFMaXRlKHdpbmRvdy5kb2N1bWVudCk7Ci0g
IH1dOwotfQotCi0vKioKLSAqIEBuZ2RvYyBmdW5jdGlvbgotICogQG5hbWUgbmcuJGV4Y2VwdGlv
bkhhbmRsZXIKLSAqIEByZXF1aXJlcyAkbG9nCi0gKgotICogQGRlc2NyaXB0aW9uCi0gKiBBbnkg
dW5jYXVnaHQgZXhjZXB0aW9uIGluIGFuZ3VsYXIgZXhwcmVzc2lvbnMgaXMgZGVsZWdhdGVkIHRv
IHRoaXMgc2VydmljZS4KLSAqIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHNpbXBseSBkZWxl
Z2F0ZXMgdG8gYCRsb2cuZXJyb3JgIHdoaWNoIGxvZ3MgaXQgaW50bwotICogdGhlIGJyb3dzZXIg
Y29uc29sZS4KLSAqCi0gKiBJbiB1bml0IHRlc3RzLCBpZiBgYW5ndWxhci1tb2Nrcy5qc2AgaXMg
bG9hZGVkLCB0aGlzIHNlcnZpY2UgaXMgb3ZlcnJpZGRlbiBieQotICoge0BsaW5rIG5nTW9jay4k
ZXhjZXB0aW9uSGFuZGxlciBtb2NrICRleGNlcHRpb25IYW5kbGVyfSB3aGljaCBhaWRzIGluIHRl
c3RpbmcuCi0gKgotICogQHBhcmFtIHtFcnJvcn0gZXhjZXB0aW9uIEV4Y2VwdGlvbiBhc3NvY2lh
dGVkIHdpdGggdGhlIGVycm9yLgotICogQHBhcmFtIHtzdHJpbmc9fSBjYXVzZSBvcHRpb25hbCBp
bmZvcm1hdGlvbiBhYm91dCB0aGUgY29udGV4dCBpbiB3aGljaAotICogICAgICAgdGhlIGVycm9y
IHdhcyB0aHJvd24uCi0gKgotICovCi1mdW5jdGlvbiAkRXhjZXB0aW9uSGFuZGxlclByb3ZpZGVy
KCkgewotICB0aGlzLiRnZXQgPSBbJyRsb2cnLCBmdW5jdGlvbigkbG9nKSB7Ci0gICAgcmV0dXJu
IGZ1bmN0aW9uKGV4Y2VwdGlvbiwgY2F1c2UpIHsKLSAgICAgICRsb2cuZXJyb3IuYXBwbHkoJGxv
ZywgYXJndW1lbnRzKTsKLSAgICB9OwotICB9XTsKLX0KLQotLyoqCi0gKiBAbmdkb2Mgb2JqZWN0
Ci0gKiBAbmFtZSBuZy4kaW50ZXJwb2xhdGVQcm92aWRlcgotICogQGZ1bmN0aW9uCi0gKgotICog
QGRlc2NyaXB0aW9uCi0gKgotICogVXNlZCBmb3IgY29uZmlndXJpbmcgdGhlIGludGVycG9sYXRp
b24gbWFya3VwLiBEZWZhdWx0cyB0byBge3tgIGFuZCBgfX1gLgotICovCi1mdW5jdGlvbiAkSW50
ZXJwb2xhdGVQcm92aWRlcigpIHsKLSAgdmFyIHN0YXJ0U3ltYm9sID0gJ3t7JzsKLSAgdmFyIGVu
ZFN5bWJvbCA9ICd9fSc7Ci0KLSAgLyoqCi0gICAqIEBuZ2RvYyBtZXRob2QKLSAgICogQG5hbWUg
bmcuJGludGVycG9sYXRlUHJvdmlkZXIjc3RhcnRTeW1ib2wKLSAgICogQG1ldGhvZE9mIG5nLiRp
bnRlcnBvbGF0ZVByb3ZpZGVyCi0gICAqIEBkZXNjcmlwdGlvbgotICAgKiBTeW1ib2wgdG8gZGVu
b3RlIHN0YXJ0IG9mIGV4cHJlc3Npb24gaW4gdGhlIGludGVycG9sYXRlZCBzdHJpbmcuIERlZmF1
bHRzIHRvIGB7e2AuCi0gICAqCi0gICAqIEBwYXJhbSB7c3RyaW5nPX0gdmFsdWUgbmV3IHZhbHVl
IHRvIHNldCB0aGUgc3RhcnRpbmcgc3ltYm9sIHRvLgotICAgKiBAcmV0dXJucyB7c3RyaW5nfHNl
bGZ9IFJldHVybnMgdGhlIHN5bWJvbCB3aGVuIHVzZWQgYXMgZ2V0dGVyIGFuZCBzZWxmIGlmIHVz
ZWQgYXMgc2V0dGVyLgotICAgKi8KLSAgdGhpcy5zdGFydFN5bWJvbCA9IGZ1bmN0aW9uKHZhbHVl
KXsKLSAgICBpZiAodmFsdWUpIHsKLSAgICAgIHN0YXJ0U3ltYm9sID0gdmFsdWU7Ci0gICAgICBy
ZXR1cm4gdGhpczsKLSAgICB9IGVsc2UgewotICAgICAgcmV0dXJuIHN0YXJ0U3ltYm9sOwotICAg
IH0KLSAgfTsKLQotICAvKioKLSAgICogQG5nZG9jIG1ldGhvZAotICAgKiBAbmFtZSBuZy4kaW50
ZXJwb2xhdGVQcm92aWRlciNlbmRTeW1ib2wKLSAgICogQG1ldGhvZE9mIG5nLiRpbnRlcnBvbGF0
ZVByb3ZpZGVyCi0gICAqIEBkZXNjcmlwdGlvbgotICAgKiBTeW1ib2wgdG8gZGVub3RlIHRoZSBl
bmQgb2YgZXhwcmVzc2lvbiBpbiB0aGUgaW50ZXJwb2xhdGVkIHN0cmluZy4gRGVmYXVsdHMgdG8g
YH19YC4KLSAgICoKLSAgICogQHBhcmFtIHtzdHJpbmc9fSB2YWx1ZSBuZXcgdmFsdWUgdG8gc2V0
IHRoZSBlbmRpbmcgc3ltYm9sIHRvLgotICAgKiBAcmV0dXJucyB7c3RyaW5nfHNlbGZ9IFJldHVy
bnMgdGhlIHN5bWJvbCB3aGVuIHVzZWQgYXMgZ2V0dGVyIGFuZCBzZWxmIGlmIHVzZWQgYXMgc2V0
dGVyLgotICAgKi8KLSAgdGhpcy5lbmRTeW1ib2wgPSBmdW5jdGlvbih2YWx1ZSl7Ci0gICAgaWYg
KHZhbHVlKSB7Ci0gICAgICBlbmRTeW1ib2wgPSB2YWx1ZTsKLSAgICAgIHJldHVybiB0aGlzOwot
ICAgIH0gZWxzZSB7Ci0gICAgICByZXR1cm4gZW5kU3ltYm9sOwotICAgIH0KLSAgfTsKLQotCi0g
IHRoaXMuJGdldCA9IFsnJHBhcnNlJywgZnVuY3Rpb24oJHBhcnNlKSB7Ci0gICAgdmFyIHN0YXJ0
U3ltYm9sTGVuZ3RoID0gc3RhcnRTeW1ib2wubGVuZ3RoLAotICAgICAgICBlbmRTeW1ib2xMZW5n
dGggPSBlbmRTeW1ib2wubGVuZ3RoOwotCi0gICAgLyoqCi0gICAgICogQG5nZG9jIGZ1bmN0aW9u
Ci0gICAgICogQG5hbWUgbmcuJGludGVycG9sYXRlCi0gICAgICogQGZ1bmN0aW9uCi0gICAgICoK
LSAgICAgKiBAcmVxdWlyZXMgJHBhcnNlCi0gICAgICoKLSAgICAgKiBAZGVzY3JpcHRpb24KLSAg
ICAgKgotICAgICAqIENvbXBpbGVzIGEgc3RyaW5nIHdpdGggbWFya3VwIGludG8gYW4gaW50ZXJw
b2xhdGlvbiBmdW5jdGlvbi4gVGhpcyBzZXJ2aWNlIGlzIHVzZWQgYnkgdGhlCi0gICAgICogSFRN
TCB7QGxpbmsgbmcuJGNvbXBpbGUgJGNvbXBpbGV9IHNlcnZpY2UgZm9yIGRhdGEgYmluZGluZy4g
U2VlCi0gICAgICoge0BsaW5rIG5nLiRpbnRlcnBvbGF0ZVByb3ZpZGVyICRpbnRlcnBvbGF0ZVBy
b3ZpZGVyfSBmb3IgY29uZmlndXJpbmcgdGhlCi0gICAgICogaW50ZXJwb2xhdGlvbiBtYXJrdXAu
Ci0gICAgICoKLSAgICAgKgotICAgICAgIDxwcmU+Ci0gICAgICAgICB2YXIgJGludGVycG9sYXRl
ID0gLi4uOyAvLyBpbmplY3RlZAotICAgICAgICAgdmFyIGV4cCA9ICRpbnRlcnBvbGF0ZSgnSGVs
bG8ge3tuYW1lfX0hJyk7Ci0gICAgICAgICBleHBlY3QoZXhwKHtuYW1lOidBbmd1bGFyJ30pLnRv
RXF1YWwoJ0hlbGxvIEFuZ3VsYXIhJyk7Ci0gICAgICAgPC9wcmU+Ci0gICAgICoKLSAgICAgKgot
ICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IFRoZSB0ZXh0IHdpdGggbWFya3VwIHRvIGludGVy
cG9sYXRlLgotICAgICAqIEBwYXJhbSB7Ym9vbGVhbj19IG11c3RIYXZlRXhwcmVzc2lvbiBpZiBz
ZXQgdG8gdHJ1ZSB0aGVuIHRoZSBpbnRlcnBvbGF0aW9uIHN0cmluZyBtdXN0IGhhdmUKLSAgICAg
KiAgICBlbWJlZGRlZCBleHByZXNzaW9uIGluIG9yZGVyIHRvIHJldHVybiBhbiBpbnRlcnBvbGF0
aW9uIGZ1bmN0aW9uLiBTdHJpbmdzIHdpdGggbm8KLSAgICAgKiAgICBlbWJlZGRlZCBleHByZXNz
aW9uIHdpbGwgcmV0dXJuIG51bGwgZm9yIHRoZSBpbnRlcnBvbGF0aW9uIGZ1bmN0aW9uLgotICAg
ICAqIEByZXR1cm5zIHtmdW5jdGlvbihjb250ZXh0KX0gYW4gaW50ZXJwb2xhdGlvbiBmdW5jdGlv
biB3aGljaCBpcyB1c2VkIHRvIGNvbXB1dGUgdGhlIGludGVycG9sYXRlZAotICAgICAqICAgIHN0
cmluZy4gVGhlIGZ1bmN0aW9uIGhhcyB0aGVzZSBwYXJhbWV0ZXJzOgotICAgICAqCi0gICAgICog
ICAgKiBgY29udGV4dGA6IGFuIG9iamVjdCBhZ2FpbnN0IHdoaWNoIGFueSBleHByZXNzaW9ucyBl
bWJlZGRlZCBpbiB0aGUgc3RyaW5ncyBhcmUgZXZhbHVhdGVkCi0gICAgICogICAgICBhZ2FpbnN0
LgotICAgICAqCi0gICAgICovCi0gICAgZnVuY3Rpb24gJGludGVycG9sYXRlKHRleHQsIG11c3RI
YXZlRXhwcmVzc2lvbikgewotICAgICAgdmFyIHN0YXJ0SW5kZXgsCi0gICAgICAgICAgZW5kSW5k
ZXgsCi0gICAgICAgICAgaW5kZXggPSAwLAotICAgICAgICAgIHBhcnRzID0gW10sCi0gICAgICAg
ICAgbGVuZ3RoID0gdGV4dC5sZW5ndGgsCi0gICAgICAgICAgaGFzSW50ZXJwb2xhdGlvbiA9IGZh
bHNlLAotICAgICAgICAgIGZuLAotICAgICAgICAgIGV4cCwKLSAgICAgICAgICBjb25jYXQgPSBb
XTsKLQotICAgICAgd2hpbGUoaW5kZXggPCBsZW5ndGgpIHsKLSAgICAgICAgaWYgKCAoKHN0YXJ0
SW5kZXggPSB0ZXh0LmluZGV4T2Yoc3RhcnRTeW1ib2wsIGluZGV4KSkgIT0gLTEpICYmCi0gICAg
ICAgICAgICAgKChlbmRJbmRleCA9IHRleHQuaW5kZXhPZihlbmRTeW1ib2wsIHN0YXJ0SW5kZXgg
KyBzdGFydFN5bWJvbExlbmd0aCkpICE9IC0xKSApIHsKLSAgICAgICAgICAoaW5kZXggIT0gc3Rh
cnRJbmRleCkgJiYgcGFydHMucHVzaCh0ZXh0LnN1YnN0cmluZyhpbmRleCwgc3RhcnRJbmRleCkp
OwotICAgICAgICAgIHBhcnRzLnB1c2goZm4gPSAkcGFyc2UoZXhwID0gdGV4dC5zdWJzdHJpbmco
c3RhcnRJbmRleCArIHN0YXJ0U3ltYm9sTGVuZ3RoLCBlbmRJbmRleCkpKTsKLSAgICAgICAgICBm
bi5leHAgPSBleHA7Ci0gICAgICAgICAgaW5kZXggPSBlbmRJbmRleCArIGVuZFN5bWJvbExlbmd0
aDsKLSAgICAgICAgICBoYXNJbnRlcnBvbGF0aW9uID0gdHJ1ZTsKLSAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAvLyB3ZSBkaWQgbm90IGZpbmQgYW55dGhpbmcsIHNvIHdlIGhhdmUgdG8gYWRk
IHRoZSByZW1haW5kZXIgdG8gdGhlIHBhcnRzIGFycmF5Ci0gICAgICAgICAgKGluZGV4ICE9IGxl
bmd0aCkgJiYgcGFydHMucHVzaCh0ZXh0LnN1YnN0cmluZyhpbmRleCkpOwotICAgICAgICAgIGlu
ZGV4ID0gbGVuZ3RoOwotICAgICAgICB9Ci0gICAgICB9Ci0KLSAgICAgIGlmICghKGxlbmd0aCA9
IHBhcnRzLmxlbmd0aCkpIHsKLSAgICAgICAgLy8gd2UgYWRkZWQsIG5vdGhpbmcsIG11c3QgaGF2
ZSBiZWVuIGFuIGVtcHR5IHN0cmluZy4KLSAgICAgICAgcGFydHMucHVzaCgnJyk7Ci0gICAgICAg
IGxlbmd0aCA9IDE7Ci0gICAgICB9Ci0KLSAgICAgIGlmICghbXVzdEhhdmVFeHByZXNzaW9uICB8
fCBoYXNJbnRlcnBvbGF0aW9uKSB7Ci0gICAgICAgIGNvbmNhdC5sZW5ndGggPSBsZW5ndGg7Ci0g
ICAgICAgIGZuID0gZnVuY3Rpb24oY29udGV4dCkgewotICAgICAgICAgIGZvcih2YXIgaSA9IDAs
IGlpID0gbGVuZ3RoLCBwYXJ0OyBpPGlpOyBpKyspIHsKLSAgICAgICAgICAgIGlmICh0eXBlb2Yg
KHBhcnQgPSBwYXJ0c1tpXSkgPT0gJ2Z1bmN0aW9uJykgewotICAgICAgICAgICAgICBwYXJ0ID0g
cGFydChjb250ZXh0KTsKLSAgICAgICAgICAgICAgaWYgKHBhcnQgPT0gbnVsbCB8fCBwYXJ0ID09
IHVuZGVmaW5lZCkgewotICAgICAgICAgICAgICAgIHBhcnQgPSAnJzsKLSAgICAgICAgICAgICAg
fSBlbHNlIGlmICh0eXBlb2YgcGFydCAhPSAnc3RyaW5nJykgewotICAgICAgICAgICAgICAgIHBh
cnQgPSB0b0pzb24ocGFydCk7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGNvbmNhdFtpXSA9IHBhcnQ7Ci0gICAgICAgICAgfQotICAgICAgICAgIHJldHVybiBj
b25jYXQuam9pbignJyk7Ci0gICAgICAgIH07Ci0gICAgICAgIGZuLmV4cCA9IHRleHQ7Ci0gICAg
ICAgIGZuLnBhcnRzID0gcGFydHM7Ci0gICAgICAgIHJldHVybiBmbjsKLSAgICAgIH0KLSAgICB9
Ci0KLQotICAgIC8qKgotICAgICAqIEBuZ2RvYyBtZXRob2QKLSAgICAgKiBAbmFtZSBuZy4kaW50
ZXJwb2xhdGUjc3RhcnRTeW1ib2wKLSAgICAgKiBAbWV0aG9kT2YgbmcuJGludGVycG9sYXRlCi0g
ICAgICogQGRlc2NyaXB0aW9uCi0gICAgICogU3ltYm9sIHRvIGRlbm90ZSB0aGUgc3RhcnQgb2Yg
ZXhwcmVzc2lvbiBpbiB0aGUgaW50ZXJwb2xhdGVkIHN0cmluZy4gRGVmYXVsdHMgdG8gYHt7YC4K
LSAgICAgKgotICAgICAqIFVzZSB7QGxpbmsgbmcuJGludGVycG9sYXRlUHJvdmlkZXIjc3RhcnRT
eW1ib2wgJGludGVycG9sYXRlUHJvdmlkZXIjc3RhcnRTeW1ib2x9IHRvIGNoYW5nZQotICAgICAq
IHRoZSBzeW1ib2wuCi0gICAgICoKLSAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBzdGFydCBzeW1i
b2wuCi0gICAgICovCi0gICAgJGludGVycG9sYXRlLnN0YXJ0U3ltYm9sID0gZnVuY3Rpb24oKSB7
Ci0gICAgICByZXR1cm4gc3RhcnRTeW1ib2w7Ci0gICAgfQotCi0KLSAgICAvKioKLSAgICAgKiBA
bmdkb2MgbWV0aG9kCi0gICAgICogQG5hbWUgbmcuJGludGVycG9sYXRlI2VuZFN5bWJvbAotICAg
ICAqIEBtZXRob2RPZiBuZy4kaW50ZXJwb2xhdGUKLSAgICAgKiBAZGVzY3JpcHRpb24KLSAgICAg
KiBTeW1ib2wgdG8gZGVub3RlIHRoZSBlbmQgb2YgZXhwcmVzc2lvbiBpbiB0aGUgaW50ZXJwb2xh
dGVkIHN0cmluZy4gRGVmYXVsdHMgdG8gYH19YC4KLSAgICAgKgotICAgICAqIFVzZSB7QGxpbmsg
bmcuJGludGVycG9sYXRlUHJvdmlkZXIjZW5kU3ltYm9sICRpbnRlcnBvbGF0ZVByb3ZpZGVyI2Vu
ZFN5bWJvbH0gdG8gY2hhbmdlCi0gICAgICogdGhlIHN5bWJvbC4KLSAgICAgKgotICAgICAqIEBy
ZXR1cm5zIHtzdHJpbmd9IHN0YXJ0IHN5bWJvbC4KLSAgICAgKi8KLSAgICAkaW50ZXJwb2xhdGUu
ZW5kU3ltYm9sID0gZnVuY3Rpb24oKSB7Ci0gICAgICByZXR1cm4gZW5kU3ltYm9sOwotICAgIH0K
LQotICAgIHJldHVybiAkaW50ZXJwb2xhdGU7Ci0gIH1dOwotfQotCi12YXIgVVJMX01BVENIID0g
L14oW146XSspOlwvXC8oXHcrOnswLDF9XHcqQCk/KFx7P1tcd1wuLV0qXH0/KSg6KFswLTldKykp
PyhcL1teXD8jXSopPyhcPyhbXiNdKikpPygjKC4qKSk/JC8sCi0gICAgUEFUSF9NQVRDSCA9IC9e
KFteXD8jXSopPyhcPyhbXiNdKikpPygjKC4qKSk/JC8sCi0gICAgSEFTSF9NQVRDSCA9IFBBVEhf
TUFUQ0gsCi0gICAgREVGQVVMVF9QT1JUUyA9IHsnaHR0cCc6IDgwLCAnaHR0cHMnOiA0NDMsICdm
dHAnOiAyMX07Ci0KLQotLyoqCi0gKiBFbmNvZGUgcGF0aCB1c2luZyBlbmNvZGVVcmlTZWdtZW50
LCBpZ25vcmluZyBmb3J3YXJkIHNsYXNoZXMKLSAqCi0gKiBAcGFyYW0ge3N0cmluZ30gcGF0aCBQ
YXRoIHRvIGVuY29kZQotICogQHJldHVybnMge3N0cmluZ30KLSAqLwotZnVuY3Rpb24gZW5jb2Rl
UGF0aChwYXRoKSB7Ci0gIHZhciBzZWdtZW50cyA9IHBhdGguc3BsaXQoJy8nKSwKLSAgICAgIGkg
PSBzZWdtZW50cy5sZW5ndGg7Ci0KLSAgd2hpbGUgKGktLSkgewotICAgIHNlZ21lbnRzW2ldID0g
ZW5jb2RlVXJpU2VnbWVudChzZWdtZW50c1tpXSk7Ci0gIH0KLQotICByZXR1cm4gc2VnbWVudHMu
am9pbignLycpOwotfQotCi1mdW5jdGlvbiBzdHJpcEhhc2godXJsKSB7Ci0gIHJldHVybiB1cmwu
c3BsaXQoJyMnKVswXTsKLX0KLQotCi1mdW5jdGlvbiBtYXRjaFVybCh1cmwsIG9iaikgewotICB2
YXIgbWF0Y2ggPSBVUkxfTUFUQ0guZXhlYyh1cmwpOwotCi0gIG1hdGNoID0gewotICAgICAgcHJv
dG9jb2w6IG1hdGNoWzFdLAotICAgICAgaG9zdDogbWF0Y2hbM10sCi0gICAgICBwb3J0OiBpbnQo
bWF0Y2hbNV0pIHx8IERFRkFVTFRfUE9SVFNbbWF0Y2hbMV1dIHx8IG51bGwsCi0gICAgICBwYXRo
OiBtYXRjaFs2XSB8fCAnLycsCi0gICAgICBzZWFyY2g6IG1hdGNoWzhdLAotICAgICAgaGFzaDog
bWF0Y2hbMTBdCi0gICAgfTsKLQotICBpZiAob2JqKSB7Ci0gICAgb2JqLiQkcHJvdG9jb2wgPSBt
YXRjaC5wcm90b2NvbDsKLSAgICBvYmouJCRob3N0ID0gbWF0Y2guaG9zdDsKLSAgICBvYmouJCRw
b3J0ID0gbWF0Y2gucG9ydDsKLSAgfQotCi0gIHJldHVybiBtYXRjaDsKLX0KLQotCi1mdW5jdGlv
biBjb21wb3NlUHJvdG9jb2xIb3N0UG9ydChwcm90b2NvbCwgaG9zdCwgcG9ydCkgewotICByZXR1
cm4gcHJvdG9jb2wgKyAnOi8vJyArIGhvc3QgKyAocG9ydCA9PSBERUZBVUxUX1BPUlRTW3Byb3Rv
Y29sXSA/ICcnIDogJzonICsgcG9ydCk7Ci19Ci0KLQotZnVuY3Rpb24gcGF0aFByZWZpeEZyb21C
YXNlKGJhc2VQYXRoKSB7Ci0gIHJldHVybiBiYXNlUGF0aC5zdWJzdHIoMCwgYmFzZVBhdGgubGFz
dEluZGV4T2YoJy8nKSk7Ci19Ci0KLQotZnVuY3Rpb24gY29udmVydFRvSHRtbDVVcmwodXJsLCBi
YXNlUGF0aCwgaGFzaFByZWZpeCkgewotICB2YXIgbWF0Y2ggPSBtYXRjaFVybCh1cmwpOwotCi0g
IC8vIGFscmVhZHkgaHRtbDUgdXJsCi0gIGlmIChkZWNvZGVVUklDb21wb25lbnQobWF0Y2gucGF0
aCkgIT0gYmFzZVBhdGggfHwgaXNVbmRlZmluZWQobWF0Y2guaGFzaCkgfHwKLSAgICAgIG1hdGNo
Lmhhc2guaW5kZXhPZihoYXNoUHJlZml4KSAhPT0gMCkgewotICAgIHJldHVybiB1cmw7Ci0gIC8v
IGNvbnZlcnQgaGFzaGJhbmcgdXJsIC0+IGh0bWw1IHVybAotICB9IGVsc2UgewotICAgIHJldHVy
biBjb21wb3NlUHJvdG9jb2xIb3N0UG9ydChtYXRjaC5wcm90b2NvbCwgbWF0Y2guaG9zdCwgbWF0
Y2gucG9ydCkgKwotICAgICAgICAgICBwYXRoUHJlZml4RnJvbUJhc2UoYmFzZVBhdGgpICsgbWF0
Y2guaGFzaC5zdWJzdHIoaGFzaFByZWZpeC5sZW5ndGgpOwotICB9Ci19Ci0KLQotZnVuY3Rpb24g
Y29udmVydFRvSGFzaGJhbmdVcmwodXJsLCBiYXNlUGF0aCwgaGFzaFByZWZpeCkgewotICB2YXIg
bWF0Y2ggPSBtYXRjaFVybCh1cmwpOwotCi0gIC8vIGFscmVhZHkgaGFzaGJhbmcgdXJsCi0gIGlm
IChkZWNvZGVVUklDb21wb25lbnQobWF0Y2gucGF0aCkgPT0gYmFzZVBhdGggJiYgIWlzVW5kZWZp
bmVkKG1hdGNoLmhhc2gpICYmCi0gICAgICBtYXRjaC5oYXNoLmluZGV4T2YoaGFzaFByZWZpeCkg
PT09IDApIHsKLSAgICByZXR1cm4gdXJsOwotICAvLyBjb252ZXJ0IGh0bWw1IHVybCAtPiBoYXNo
YmFuZyB1cmwKLSAgfSBlbHNlIHsKLSAgICB2YXIgc2VhcmNoID0gbWF0Y2guc2VhcmNoICYmICc/
JyArIG1hdGNoLnNlYXJjaCB8fCAnJywKLSAgICAgICAgaGFzaCA9IG1hdGNoLmhhc2ggJiYgJyMn
ICsgbWF0Y2guaGFzaCB8fCAnJywKLSAgICAgICAgcGF0aFByZWZpeCA9IHBhdGhQcmVmaXhGcm9t
QmFzZShiYXNlUGF0aCksCi0gICAgICAgIHBhdGggPSBtYXRjaC5wYXRoLnN1YnN0cihwYXRoUHJl
Zml4Lmxlbmd0aCk7Ci0KLSAgICBpZiAobWF0Y2gucGF0aC5pbmRleE9mKHBhdGhQcmVmaXgpICE9
PSAwKSB7Ci0gICAgICB0aHJvdyBFcnJvcignSW52YWxpZCB1cmwgIicgKyB1cmwgKyAnIiwgbWlz
c2luZyBwYXRoIHByZWZpeCAiJyArIHBhdGhQcmVmaXggKyAnIiAhJyk7Ci0gICAgfQotCi0gICAg
cmV0dXJuIGNvbXBvc2VQcm90b2NvbEhvc3RQb3J0KG1hdGNoLnByb3RvY29sLCBtYXRjaC5ob3N0
LCBtYXRjaC5wb3J0KSArIGJhc2VQYXRoICsKLSAgICAgICAgICAgJyMnICsgaGFzaFByZWZpeCAr
IHBhdGggKyBzZWFyY2ggKyBoYXNoOwotICB9Ci19Ci0KLQotLyoqCi0gKiBMb2NhdGlvblVybCBy
ZXByZXNlbnRzIGFuIHVybAotICogVGhpcyBvYmplY3QgaXMgZXhwb3NlZCBhcyAkbG9jYXRpb24g
c2VydmljZSB3aGVuIEhUTUw1IG1vZGUgaXMgZW5hYmxlZCBhbmQgc3VwcG9ydGVkCi0gKgotICog
QGNvbnN0cnVjdG9yCi0gKiBAcGFyYW0ge3N0cmluZ30gdXJsIEhUTUw1IHVybAotICogQHBhcmFt
IHtzdHJpbmd9IHBhdGhQcmVmaXgKLSAqLwotZnVuY3Rpb24gTG9jYXRpb25VcmwodXJsLCBwYXRo
UHJlZml4LCBhcHBCYXNlVXJsKSB7Ci0gIHBhdGhQcmVmaXggPSBwYXRoUHJlZml4IHx8ICcnOwot
Ci0gIC8qKgotICAgKiBQYXJzZSBnaXZlbiBodG1sNSAocmVndWxhcikgdXJsIHN0cmluZyBpbnRv
IHByb3BlcnRpZXMKLSAgICogQHBhcmFtIHtzdHJpbmd9IG5ld0Fic29sdXRlVXJsIEhUTUw1IHVy
bAotICAgKiBAcHJpdmF0ZQotICAgKi8KLSAgdGhpcy4kJHBhcnNlID0gZnVuY3Rpb24obmV3QWJz
b2x1dGVVcmwpIHsKLSAgICB2YXIgbWF0Y2ggPSBtYXRjaFVybChuZXdBYnNvbHV0ZVVybCwgdGhp
cyk7Ci0KLSAgICBpZiAobWF0Y2gucGF0aC5pbmRleE9mKHBhdGhQcmVmaXgpICE9PSAwKSB7Ci0g
ICAgICB0aHJvdyBFcnJvcignSW52YWxpZCB1cmwgIicgKyBuZXdBYnNvbHV0ZVVybCArICciLCBt
aXNzaW5nIHBhdGggcHJlZml4ICInICsgcGF0aFByZWZpeCArICciICEnKTsKLSAgICB9Ci0KLSAg
ICB0aGlzLiQkcGF0aCA9IGRlY29kZVVSSUNvbXBvbmVudChtYXRjaC5wYXRoLnN1YnN0cihwYXRo
UHJlZml4Lmxlbmd0aCkpOwotICAgIHRoaXMuJCRzZWFyY2ggPSBwYXJzZUtleVZhbHVlKG1hdGNo
LnNlYXJjaCk7Ci0gICAgdGhpcy4kJGhhc2ggPSBtYXRjaC5oYXNoICYmIGRlY29kZVVSSUNvbXBv
bmVudChtYXRjaC5oYXNoKSB8fCAnJzsKLQotICAgIHRoaXMuJCRjb21wb3NlKCk7Ci0gIH07Ci0K
LSAgLyoqCi0gICAqIENvbXBvc2UgdXJsIGFuZCB1cGRhdGUgYGFic1VybGAgcHJvcGVydHkKLSAg
ICogQHByaXZhdGUKLSAgICovCi0gIHRoaXMuJCRjb21wb3NlID0gZnVuY3Rpb24oKSB7Ci0gICAg
dmFyIHNlYXJjaCA9IHRvS2V5VmFsdWUodGhpcy4kJHNlYXJjaCksCi0gICAgICAgIGhhc2ggPSB0
aGlzLiQkaGFzaCA/ICcjJyArIGVuY29kZVVyaVNlZ21lbnQodGhpcy4kJGhhc2gpIDogJyc7Ci0K
LSAgICB0aGlzLiQkdXJsID0gZW5jb2RlUGF0aCh0aGlzLiQkcGF0aCkgKyAoc2VhcmNoID8gJz8n
ICsgc2VhcmNoIDogJycpICsgaGFzaDsKLSAgICB0aGlzLiQkYWJzVXJsID0gY29tcG9zZVByb3Rv
Y29sSG9zdFBvcnQodGhpcy4kJHByb3RvY29sLCB0aGlzLiQkaG9zdCwgdGhpcy4kJHBvcnQpICsK
LSAgICAgICAgICAgICAgICAgICAgcGF0aFByZWZpeCArIHRoaXMuJCR1cmw7Ci0gIH07Ci0KLQot
ICB0aGlzLiQkcmV3cml0ZUFwcFVybCA9IGZ1bmN0aW9uKGFic29sdXRlTGlua1VybCkgewotICAg
IGlmKGFic29sdXRlTGlua1VybC5pbmRleE9mKGFwcEJhc2VVcmwpID09IDApIHsKLSAgICAgIHJl
dHVybiBhYnNvbHV0ZUxpbmtVcmw7Ci0gICAgfQotICB9Ci0KLQotICB0aGlzLiQkcGFyc2UodXJs
KTsKLX0KLQotCi0vKioKLSAqIExvY2F0aW9uSGFzaGJhbmdVcmwgcmVwcmVzZW50cyB1cmwKLSAq
IFRoaXMgb2JqZWN0IGlzIGV4cG9zZWQgYXMgJGxvY2F0aW9uIHNlcnZpY2Ugd2hlbiBodG1sNSBo
aXN0b3J5IGFwaSBpcyBkaXNhYmxlZCBvciBub3Qgc3VwcG9ydGVkCi0gKgotICogQGNvbnN0cnVj
dG9yCi0gKiBAcGFyYW0ge3N0cmluZ30gdXJsIExlZ2FjeSB1cmwKLSAqIEBwYXJhbSB7c3RyaW5n
fSBoYXNoUHJlZml4IFByZWZpeCBmb3IgaGFzaCBwYXJ0IChjb250YWluaW5nIHBhdGggYW5kIHNl
YXJjaCkKLSAqLwotZnVuY3Rpb24gTG9jYXRpb25IYXNoYmFuZ1VybCh1cmwsIGhhc2hQcmVmaXgs
IGFwcEJhc2VVcmwpIHsKLSAgdmFyIGJhc2VQYXRoOwotCi0gIC8qKgotICAgKiBQYXJzZSBnaXZl
biBoYXNoYmFuZyB1cmwgaW50byBwcm9wZXJ0aWVzCi0gICAqIEBwYXJhbSB7c3RyaW5nfSB1cmwg
SGFzaGJhbmcgdXJsCi0gICAqIEBwcml2YXRlCi0gICAqLwotICB0aGlzLiQkcGFyc2UgPSBmdW5j
dGlvbih1cmwpIHsKLSAgICB2YXIgbWF0Y2ggPSBtYXRjaFVybCh1cmwsIHRoaXMpOwotCi0KLSAg
ICBpZiAobWF0Y2guaGFzaCAmJiBtYXRjaC5oYXNoLmluZGV4T2YoaGFzaFByZWZpeCkgIT09IDAp
IHsKLSAgICAgIHRocm93IEVycm9yKCdJbnZhbGlkIHVybCAiJyArIHVybCArICciLCBtaXNzaW5n
IGhhc2ggcHJlZml4ICInICsgaGFzaFByZWZpeCArICciICEnKTsKLSAgICB9Ci0KLSAgICBiYXNl
UGF0aCA9IG1hdGNoLnBhdGggKyAobWF0Y2guc2VhcmNoID8gJz8nICsgbWF0Y2guc2VhcmNoIDog
JycpOwotICAgIG1hdGNoID0gSEFTSF9NQVRDSC5leGVjKChtYXRjaC5oYXNoIHx8ICcnKS5zdWJz
dHIoaGFzaFByZWZpeC5sZW5ndGgpKTsKLSAgICBpZiAobWF0Y2hbMV0pIHsKLSAgICAgIHRoaXMu
JCRwYXRoID0gKG1hdGNoWzFdLmNoYXJBdCgwKSA9PSAnLycgPyAnJyA6ICcvJykgKyBkZWNvZGVV
UklDb21wb25lbnQobWF0Y2hbMV0pOwotICAgIH0gZWxzZSB7Ci0gICAgICB0aGlzLiQkcGF0aCA9
ICcnOwotICAgIH0KLQotICAgIHRoaXMuJCRzZWFyY2ggPSBwYXJzZUtleVZhbHVlKG1hdGNoWzNd
KTsKLSAgICB0aGlzLiQkaGFzaCA9IG1hdGNoWzVdICYmIGRlY29kZVVSSUNvbXBvbmVudChtYXRj
aFs1XSkgfHwgJyc7Ci0KLSAgICB0aGlzLiQkY29tcG9zZSgpOwotICB9OwotCi0gIC8qKgotICAg
KiBDb21wb3NlIGhhc2hiYW5nIHVybCBhbmQgdXBkYXRlIGBhYnNVcmxgIHByb3BlcnR5Ci0gICAq
IEBwcml2YXRlCi0gICAqLwotICB0aGlzLiQkY29tcG9zZSA9IGZ1bmN0aW9uKCkgewotICAgIHZh
ciBzZWFyY2ggPSB0b0tleVZhbHVlKHRoaXMuJCRzZWFyY2gpLAotICAgICAgICBoYXNoID0gdGhp
cy4kJGhhc2ggPyAnIycgKyBlbmNvZGVVcmlTZWdtZW50KHRoaXMuJCRoYXNoKSA6ICcnOwotCi0g
ICAgdGhpcy4kJHVybCA9IGVuY29kZVBhdGgodGhpcy4kJHBhdGgpICsgKHNlYXJjaCA/ICc/JyAr
IHNlYXJjaCA6ICcnKSArIGhhc2g7Ci0gICAgdGhpcy4kJGFic1VybCA9IGNvbXBvc2VQcm90b2Nv
bEhvc3RQb3J0KHRoaXMuJCRwcm90b2NvbCwgdGhpcy4kJGhvc3QsIHRoaXMuJCRwb3J0KSArCi0g
ICAgICAgICAgICAgICAgICAgIGJhc2VQYXRoICsgKHRoaXMuJCR1cmwgPyAnIycgKyBoYXNoUHJl
Zml4ICsgdGhpcy4kJHVybCA6ICcnKTsKLSAgfTsKLQotICB0aGlzLiQkcmV3cml0ZUFwcFVybCA9
IGZ1bmN0aW9uKGFic29sdXRlTGlua1VybCkgewotICAgIGlmKGFic29sdXRlTGlua1VybC5pbmRl
eE9mKGFwcEJhc2VVcmwpID09IDApIHsKLSAgICAgIHJldHVybiBhYnNvbHV0ZUxpbmtVcmw7Ci0g
ICAgfQotICB9Ci0KLQotICB0aGlzLiQkcGFyc2UodXJsKTsKLX0KLQotCi1Mb2NhdGlvblVybC5w
cm90b3R5cGUgPSB7Ci0KLSAgLyoqCi0gICAqIEhhcyBhbnkgY2hhbmdlIGJlZW4gcmVwbGFjaW5n
ID8KLSAgICogQHByaXZhdGUKLSAgICovCi0gICQkcmVwbGFjZTogZmFsc2UsCi0KLSAgLyoqCi0g
ICAqIEBuZ2RvYyBtZXRob2QKLSAgICogQG5hbWUgbmcuJGxvY2F0aW9uI2Fic1VybAotICAgKiBA
bWV0aG9kT2YgbmcuJGxvY2F0aW9uCi0gICAqCi0gICAqIEBkZXNjcmlwdGlvbgotICAgKiBUaGlz
IG1ldGhvZCBpcyBnZXR0ZXIgb25seS4KLSAgICoKLSAgICogUmV0dXJuIGZ1bGwgdXJsIHJlcHJl
c2VudGF0aW9uIHdpdGggYWxsIHNlZ21lbnRzIGVuY29kZWQgYWNjb3JkaW5nIHRvIHJ1bGVzIHNw
ZWNpZmllZCBpbgotICAgKiB7QGxpbmsgaHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMzk4Ni50
eHQgUkZDIDM5ODZ9LgotICAgKgotICAgKiBAcmV0dXJuIHtzdHJpbmd9IGZ1bGwgdXJsCi0gICAq
LwotICBhYnNVcmw6IGxvY2F0aW9uR2V0dGVyKCckJGFic1VybCcpLAotCi0gIC8qKgotICAgKiBA
bmdkb2MgbWV0aG9kCi0gICAqIEBuYW1lIG5nLiRsb2NhdGlvbiN1cmwKLSAgICogQG1ldGhvZE9m
IG5nLiRsb2NhdGlvbgotICAgKgotICAgKiBAZGVzY3JpcHRpb24KLSAgICogVGhpcyBtZXRob2Qg
aXMgZ2V0dGVyIC8gc2V0dGVyLgotICAgKgotICAgKiBSZXR1cm4gdXJsIChlLmcuIGAvcGF0aD9h
PWIjaGFzaGApIHdoZW4gY2FsbGVkIHdpdGhvdXQgYW55IHBhcmFtZXRlci4KLSAgICoKLSAgICog
Q2hhbmdlIHBhdGgsIHNlYXJjaCBhbmQgaGFzaCwgd2hlbiBjYWxsZWQgd2l0aCBwYXJhbWV0ZXIg
YW5kIHJldHVybiBgJGxvY2F0aW9uYC4KLSAgICoKLSAgICogQHBhcmFtIHtzdHJpbmc9fSB1cmwg
TmV3IHVybCB3aXRob3V0IGJhc2UgcHJlZml4IChlLmcuIGAvcGF0aD9hPWIjaGFzaGApCi0gICAq
IEByZXR1cm4ge3N0cmluZ30gdXJsCi0gICAqLwotICB1cmw6IGZ1bmN0aW9uKHVybCwgcmVwbGFj
ZSkgewotICAgIGlmIChpc1VuZGVmaW5lZCh1cmwpKQotICAgICAgcmV0dXJuIHRoaXMuJCR1cmw7
Ci0KLSAgICB2YXIgbWF0Y2ggPSBQQVRIX01BVENILmV4ZWModXJsKTsKLSAgICBpZiAobWF0Y2hb
MV0pIHRoaXMucGF0aChkZWNvZGVVUklDb21wb25lbnQobWF0Y2hbMV0pKTsKLSAgICBpZiAobWF0
Y2hbMl0gfHwgbWF0Y2hbMV0pIHRoaXMuc2VhcmNoKG1hdGNoWzNdIHx8ICcnKTsKLSAgICB0aGlz
Lmhhc2gobWF0Y2hbNV0gfHwgJycsIHJlcGxhY2UpOwotCi0gICAgcmV0dXJuIHRoaXM7Ci0gIH0s
Ci0KLSAgLyoqCi0gICAqIEBuZ2RvYyBtZXRob2QKLSAgICogQG5hbWUgbmcuJGxvY2F0aW9uI3By
b3RvY29sCi0gICAqIEBtZXRob2RPZiBuZy4kbG9jYXRpb24KLSAgICoKLSAgICogQGRlc2NyaXB0
aW9uCi0gICAqIFRoaXMgbWV0aG9kIGlzIGdldHRlciBvbmx5LgotICAgKgotICAgKiBSZXR1cm4g
cHJvdG9jb2wgb2YgY3VycmVudCB1cmwuCi0gICAqCi0gICAqIEByZXR1cm4ge3N0cmluZ30gcHJv
dG9jb2wgb2YgY3VycmVudCB1cmwKLSAgICovCi0gIHByb3RvY29sOiBsb2NhdGlvbkdldHRlcign
JCRwcm90b2NvbCcpLAotCi0gIC8qKgotICAgKiBAbmdkb2MgbWV0aG9kCi0gICAqIEBuYW1lIG5n
LiRsb2NhdGlvbiNob3N0Ci0gICAqIEBtZXRob2RPZiBuZy4kbG9jYXRpb24KLSAgICoKLSAgICog
QGRlc2NyaXB0aW9uCi0gICAqIFRoaXMgbWV0aG9kIGlzIGdldHRlciBvbmx5LgotICAgKgotICAg
KiBSZXR1cm4gaG9zdCBvZiBjdXJyZW50IHVybC4KLSAgICoKLSAgICogQHJldHVybiB7c3RyaW5n
fSBob3N0IG9mIGN1cnJlbnQgdXJsLgotICAgKi8KLSAgaG9zdDogbG9jYXRpb25HZXR0ZXIoJyQk
aG9zdCcpLAotCi0gIC8qKgotICAgKiBAbmdkb2MgbWV0aG9kCi0gICAqIEBuYW1lIG5nLiRsb2Nh
dGlvbiNwb3J0Ci0gICAqIEBtZXRob2RPZiBuZy4kbG9jYXRpb24KLSAgICoKLSAgICogQGRlc2Ny
aXB0aW9uCi0gICAqIFRoaXMgbWV0aG9kIGlzIGdldHRlciBvbmx5LgotICAgKgotICAgKiBSZXR1
cm4gcG9ydCBvZiBjdXJyZW50IHVybC4KLSAgICoKLSAgICogQHJldHVybiB7TnVtYmVyfSBwb3J0
Ci0gICAqLwotICBwb3J0OiBsb2NhdGlvbkdldHRlcignJCRwb3J0JyksCi0KLSAgLyoqCi0gICAq
IEBuZ2RvYyBtZXRob2QKLSAgICogQG5hbWUgbmcuJGxvY2F0aW9uI3BhdGgKLSAgICogQG1ldGhv
ZE9mIG5nLiRsb2NhdGlvbgotICAgKgotICAgKiBAZGVzY3JpcHRpb24KLSAgICogVGhpcyBtZXRo
b2QgaXMgZ2V0dGVyIC8gc2V0dGVyLgotICAgKgotICAgKiBSZXR1cm4gcGF0aCBvZiBjdXJyZW50
IHVybCB3aGVuIGNhbGxlZCB3aXRob3V0IGFueSBwYXJhbWV0ZXIuCi0gICAqCi0gICAqIENoYW5n
ZSBwYXRoIHdoZW4gY2FsbGVkIHdpdGggcGFyYW1ldGVyIGFuZCByZXR1cm4gYCRsb2NhdGlvbmAu
Ci0gICAqCi0gICAqIE5vdGU6IFBhdGggc2hvdWxkIGFsd2F5cyBiZWdpbiB3aXRoIGZvcndhcmQg
c2xhc2ggKC8pLCB0aGlzIG1ldGhvZCB3aWxsIGFkZCB0aGUgZm9yd2FyZCBzbGFzaAotICAgKiBp
ZiBpdCBpcyBtaXNzaW5nLgotICAgKgotICAgKiBAcGFyYW0ge3N0cmluZz19IHBhdGggTmV3IHBh
dGgKLSAgICogQHJldHVybiB7c3RyaW5nfSBwYXRoCi0gICAqLwotICBwYXRoOiBsb2NhdGlvbkdl
dHRlclNldHRlcignJCRwYXRoJywgZnVuY3Rpb24ocGF0aCkgewotICAgIHJldHVybiBwYXRoLmNo
YXJBdCgwKSA9PSAnLycgPyBwYXRoIDogJy8nICsgcGF0aDsKLSAgfSksCi0KLSAgLyoqCi0gICAq
IEBuZ2RvYyBtZXRob2QKLSAgICogQG5hbWUgbmcuJGxvY2F0aW9uI3NlYXJjaAotICAgKiBAbWV0
aG9kT2YgbmcuJGxvY2F0aW9uCi0gICAqCi0gICAqIEBkZXNjcmlwdGlvbgotICAgKiBUaGlzIG1l
dGhvZCBpcyBnZXR0ZXIgLyBzZXR0ZXIuCi0gICAqCi0gICAqIFJldHVybiBzZWFyY2ggcGFydCAo
YXMgb2JqZWN0KSBvZiBjdXJyZW50IHVybCB3aGVuIGNhbGxlZCB3aXRob3V0IGFueSBwYXJhbWV0
ZXIuCi0gICAqCi0gICAqIENoYW5nZSBzZWFyY2ggcGFydCB3aGVuIGNhbGxlZCB3aXRoIHBhcmFt
ZXRlciBhbmQgcmV0dXJuIGAkbG9jYXRpb25gLgotICAgKgotICAgKiBAcGFyYW0ge3N0cmluZ3xv
YmplY3Q8c3RyaW5nLHN0cmluZz49fSBzZWFyY2ggTmV3IHNlYXJjaCBwYXJhbXMgLSBzdHJpbmcg
b3IgaGFzaCBvYmplY3QKLSAgICogQHBhcmFtIHtzdHJpbmc9fSBwYXJhbVZhbHVlIElmIGBzZWFy
Y2hgIGlzIGEgc3RyaW5nLCB0aGVuIGBwYXJhbVZhbHVlYCB3aWxsIG92ZXJyaWRlIG9ubHkgYQot
ICAgKiAgICBzaW5nbGUgc2VhcmNoIHBhcmFtZXRlci4gSWYgdGhlIHZhbHVlIGlzIGBudWxsYCwg
dGhlIHBhcmFtZXRlciB3aWxsIGJlIGRlbGV0ZWQuCi0gICAqCi0gICAqIEByZXR1cm4ge3N0cmlu
Z30gc2VhcmNoCi0gICAqLwotICBzZWFyY2g6IGZ1bmN0aW9uKHNlYXJjaCwgcGFyYW1WYWx1ZSkg
ewotICAgIGlmIChpc1VuZGVmaW5lZChzZWFyY2gpKQotICAgICAgcmV0dXJuIHRoaXMuJCRzZWFy
Y2g7Ci0KLSAgICBpZiAoaXNEZWZpbmVkKHBhcmFtVmFsdWUpKSB7Ci0gICAgICBpZiAocGFyYW1W
YWx1ZSA9PT0gbnVsbCkgewotICAgICAgICBkZWxldGUgdGhpcy4kJHNlYXJjaFtzZWFyY2hdOwot
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgdGhpcy4kJHNlYXJjaFtzZWFyY2hdID0gcGFyYW1WYWx1
ZTsKLSAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgdGhpcy4kJHNlYXJjaCA9IGlzU3RyaW5n
KHNlYXJjaCkgPyBwYXJzZUtleVZhbHVlKHNlYXJjaCkgOiBzZWFyY2g7Ci0gICAgfQotCi0gICAg
dGhpcy4kJGNvbXBvc2UoKTsKLSAgICByZXR1cm4gdGhpczsKLSAgfSwKLQotICAvKioKLSAgICog
QG5nZG9jIG1ldGhvZAotICAgKiBAbmFtZSBuZy4kbG9jYXRpb24jaGFzaAotICAgKiBAbWV0aG9k
T2YgbmcuJGxvY2F0aW9uCi0gICAqCi0gICAqIEBkZXNjcmlwdGlvbgotICAgKiBUaGlzIG1ldGhv
ZCBpcyBnZXR0ZXIgLyBzZXR0ZXIuCi0gICAqCi0gICAqIFJldHVybiBoYXNoIGZyYWdtZW50IHdo
ZW4gY2FsbGVkIHdpdGhvdXQgYW55IHBhcmFtZXRlci4KLSAgICoKLSAgICogQ2hhbmdlIGhhc2gg
ZnJhZ21lbnQgd2hlbiBjYWxsZWQgd2l0aCBwYXJhbWV0ZXIgYW5kIHJldHVybiBgJGxvY2F0aW9u
YC4KLSAgICoKLSAgICogQHBhcmFtIHtzdHJpbmc9fSBoYXNoIE5ldyBoYXNoIGZyYWdtZW50Ci0g
ICAqIEByZXR1cm4ge3N0cmluZ30gaGFzaAotICAgKi8KLSAgaGFzaDogbG9jYXRpb25HZXR0ZXJT
ZXR0ZXIoJyQkaGFzaCcsIGlkZW50aXR5KSwKLQotICAvKioKLSAgICogQG5nZG9jIG1ldGhvZAot
ICAgKiBAbmFtZSBuZy4kbG9jYXRpb24jcmVwbGFjZQotICAgKiBAbWV0aG9kT2YgbmcuJGxvY2F0
aW9uCi0gICAqCi0gICAqIEBkZXNjcmlwdGlvbgotICAgKiBJZiBjYWxsZWQsIGFsbCBjaGFuZ2Vz
IHRvICRsb2NhdGlvbiBkdXJpbmcgY3VycmVudCBgJGRpZ2VzdGAgd2lsbCBiZSByZXBsYWNpbmcg
Y3VycmVudCBoaXN0b3J5Ci0gICAqIHJlY29yZCwgaW5zdGVhZCBvZiBhZGRpbmcgbmV3IG9uZS4K
LSAgICovCi0gIHJlcGxhY2U6IGZ1bmN0aW9uKCkgewotICAgIHRoaXMuJCRyZXBsYWNlID0gdHJ1
ZTsKLSAgICByZXR1cm4gdGhpczsKLSAgfQotfTsKLQotTG9jYXRpb25IYXNoYmFuZ1VybC5wcm90
b3R5cGUgPSBpbmhlcml0KExvY2F0aW9uVXJsLnByb3RvdHlwZSk7Ci0KLWZ1bmN0aW9uIExvY2F0
aW9uSGFzaGJhbmdJbkh0bWw1VXJsKHVybCwgaGFzaFByZWZpeCwgYXBwQmFzZVVybCwgYmFzZUV4
dHJhKSB7Ci0gIExvY2F0aW9uSGFzaGJhbmdVcmwuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKLQot
Ci0gIHRoaXMuJCRyZXdyaXRlQXBwVXJsID0gZnVuY3Rpb24oYWJzb2x1dGVMaW5rVXJsKSB7Ci0g
ICAgaWYgKGFic29sdXRlTGlua1VybC5pbmRleE9mKGFwcEJhc2VVcmwpID09IDApIHsKLSAgICAg
IHJldHVybiBhcHBCYXNlVXJsICsgYmFzZUV4dHJhICsgJyMnICsgaGFzaFByZWZpeCAgKyBhYnNv
bHV0ZUxpbmtVcmwuc3Vic3RyKGFwcEJhc2VVcmwubGVuZ3RoKTsKLSAgICB9Ci0gIH0KLX0KLQot
TG9jYXRpb25IYXNoYmFuZ0luSHRtbDVVcmwucHJvdG90eXBlID0gaW5oZXJpdChMb2NhdGlvbkhh
c2hiYW5nVXJsLnByb3RvdHlwZSk7Ci0KLWZ1bmN0aW9uIGxvY2F0aW9uR2V0dGVyKHByb3BlcnR5
KSB7Ci0gIHJldHVybiBmdW5jdGlvbigpIHsKLSAgICByZXR1cm4gdGhpc1twcm9wZXJ0eV07Ci0g
IH07Ci19Ci0KLQotZnVuY3Rpb24gbG9jYXRpb25HZXR0ZXJTZXR0ZXIocHJvcGVydHksIHByZXBy
b2Nlc3MpIHsKLSAgcmV0dXJuIGZ1bmN0aW9uKHZhbHVlKSB7Ci0gICAgaWYgKGlzVW5kZWZpbmVk
KHZhbHVlKSkKLSAgICAgIHJldHVybiB0aGlzW3Byb3BlcnR5XTsKLQotICAgIHRoaXNbcHJvcGVy
dHldID0gcHJlcHJvY2Vzcyh2YWx1ZSk7Ci0gICAgdGhpcy4kJGNvbXBvc2UoKTsKLQotICAgIHJl
dHVybiB0aGlzOwotICB9OwotfQotCi0KLS8qKgotICogQG5nZG9jIG9iamVjdAotICogQG5hbWUg
bmcuJGxvY2F0aW9uCi0gKgotICogQHJlcXVpcmVzICRicm93c2VyCi0gKiBAcmVxdWlyZXMgJHNu
aWZmZXIKLSAqIEByZXF1aXJlcyAkcm9vdEVsZW1lbnQKLSAqCi0gKiBAZGVzY3JpcHRpb24KLSAq
IFRoZSAkbG9jYXRpb24gc2VydmljZSBwYXJzZXMgdGhlIFVSTCBpbiB0aGUgYnJvd3NlciBhZGRy
ZXNzIGJhciAoYmFzZWQgb24gdGhlCi0gKiB7QGxpbmsgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxs
YS5vcmcvZW4vd2luZG93LmxvY2F0aW9uIHdpbmRvdy5sb2NhdGlvbn0pIGFuZCBtYWtlcyB0aGUg
VVJMCi0gKiBhdmFpbGFibGUgdG8geW91ciBhcHBsaWNhdGlvbi4gQ2hhbmdlcyB0byB0aGUgVVJM
IGluIHRoZSBhZGRyZXNzIGJhciBhcmUgcmVmbGVjdGVkIGludG8KLSAqICRsb2NhdGlvbiBzZXJ2
aWNlIGFuZCBjaGFuZ2VzIHRvICRsb2NhdGlvbiBhcmUgcmVmbGVjdGVkIGludG8gdGhlIGJyb3dz
ZXIgYWRkcmVzcyBiYXIuCi0gKgotICogKipUaGUgJGxvY2F0aW9uIHNlcnZpY2U6KioKLSAqCi0g
KiAtIEV4cG9zZXMgdGhlIGN1cnJlbnQgVVJMIGluIHRoZSBicm93c2VyIGFkZHJlc3MgYmFyLCBz
byB5b3UgY2FuCi0gKiAgIC0gV2F0Y2ggYW5kIG9ic2VydmUgdGhlIFVSTC4KLSAqICAgLSBDaGFu
Z2UgdGhlIFVSTC4KLSAqIC0gU3luY2hyb25pemVzIHRoZSBVUkwgd2l0aCB0aGUgYnJvd3NlciB3
aGVuIHRoZSB1c2VyCi0gKiAgIC0gQ2hhbmdlcyB0aGUgYWRkcmVzcyBiYXIuCi0gKiAgIC0gQ2xp
Y2tzIHRoZSBiYWNrIG9yIGZvcndhcmQgYnV0dG9uIChvciBjbGlja3MgYSBIaXN0b3J5IGxpbmsp
LgotICogICAtIENsaWNrcyBvbiBhIGxpbmsuCi0gKiAtIFJlcHJlc2VudHMgdGhlIFVSTCBvYmpl
Y3QgYXMgYSBzZXQgb2YgbWV0aG9kcyAocHJvdG9jb2wsIGhvc3QsIHBvcnQsIHBhdGgsIHNlYXJj
aCwgaGFzaCkuCi0gKgotICogRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIHtAbGluayBndWlkZS9k
ZXZfZ3VpZGUuc2VydmljZXMuJGxvY2F0aW9uIERldmVsb3BlciBHdWlkZTogQW5ndWxhcgotICog
U2VydmljZXM6IFVzaW5nICRsb2NhdGlvbn0KLSAqLwotCi0vKioKLSAqIEBuZ2RvYyBvYmplY3QK
LSAqIEBuYW1lIG5nLiRsb2NhdGlvblByb3ZpZGVyCi0gKiBAZGVzY3JpcHRpb24KLSAqIFVzZSB0
aGUgYCRsb2NhdGlvblByb3ZpZGVyYCB0byBjb25maWd1cmUgaG93IHRoZSBhcHBsaWNhdGlvbiBk
ZWVwIGxpbmtpbmcgcGF0aHMgYXJlIHN0b3JlZC4KLSAqLwotZnVuY3Rpb24gJExvY2F0aW9uUHJv
dmlkZXIoKXsKLSAgdmFyIGhhc2hQcmVmaXggPSAnJywKLSAgICAgIGh0bWw1TW9kZSA9IGZhbHNl
OwotCi0gIC8qKgotICAgKiBAbmdkb2MgcHJvcGVydHkKLSAgICogQG5hbWUgbmcuJGxvY2F0aW9u
UHJvdmlkZXIjaGFzaFByZWZpeAotICAgKiBAbWV0aG9kT2YgbmcuJGxvY2F0aW9uUHJvdmlkZXIK
LSAgICogQGRlc2NyaXB0aW9uCi0gICAqIEBwYXJhbSB7c3RyaW5nPX0gcHJlZml4IFByZWZpeCBm
b3IgaGFzaCBwYXJ0IChjb250YWluaW5nIHBhdGggYW5kIHNlYXJjaCkKLSAgICogQHJldHVybnMg
eyp9IGN1cnJlbnQgdmFsdWUgaWYgdXNlZCBhcyBnZXR0ZXIgb3IgaXRzZWxmIChjaGFpbmluZykg
aWYgdXNlZCBhcyBzZXR0ZXIKLSAgICovCi0gIHRoaXMuaGFzaFByZWZpeCA9IGZ1bmN0aW9uKHBy
ZWZpeCkgewotICAgIGlmIChpc0RlZmluZWQocHJlZml4KSkgewotICAgICAgaGFzaFByZWZpeCA9
IHByZWZpeDsKLSAgICAgIHJldHVybiB0aGlzOwotICAgIH0gZWxzZSB7Ci0gICAgICByZXR1cm4g
aGFzaFByZWZpeDsKLSAgICB9Ci0gIH07Ci0KLSAgLyoqCi0gICAqIEBuZ2RvYyBwcm9wZXJ0eQot
ICAgKiBAbmFtZSBuZy4kbG9jYXRpb25Qcm92aWRlciNodG1sNU1vZGUKLSAgICogQG1ldGhvZE9m
IG5nLiRsb2NhdGlvblByb3ZpZGVyCi0gICAqIEBkZXNjcmlwdGlvbgotICAgKiBAcGFyYW0ge3N0
cmluZz19IG1vZGUgVXNlIEhUTUw1IHN0cmF0ZWd5IGlmIGF2YWlsYWJsZS4KLSAgICogQHJldHVy
bnMgeyp9IGN1cnJlbnQgdmFsdWUgaWYgdXNlZCBhcyBnZXR0ZXIgb3IgaXRzZWxmIChjaGFpbmlu
ZykgaWYgdXNlZCBhcyBzZXR0ZXIKLSAgICovCi0gIHRoaXMuaHRtbDVNb2RlID0gZnVuY3Rpb24o
bW9kZSkgewotICAgIGlmIChpc0RlZmluZWQobW9kZSkpIHsKLSAgICAgIGh0bWw1TW9kZSA9IG1v
ZGU7Ci0gICAgICByZXR1cm4gdGhpczsKLSAgICB9IGVsc2UgewotICAgICAgcmV0dXJuIGh0bWw1
TW9kZTsKLSAgICB9Ci0gIH07Ci0KLSAgdGhpcy4kZ2V0ID0gWyckcm9vdFNjb3BlJywgJyRicm93
c2VyJywgJyRzbmlmZmVyJywgJyRyb290RWxlbWVudCcsCi0gICAgICBmdW5jdGlvbiggJHJvb3RT
Y29wZSwgICAkYnJvd3NlciwgICAkc25pZmZlciwgICAkcm9vdEVsZW1lbnQpIHsKLSAgICB2YXIg
JGxvY2F0aW9uLAotICAgICAgICBiYXNlUGF0aCwKLSAgICAgICAgcGF0aFByZWZpeCwKLSAgICAg
ICAgaW5pdFVybCA9ICRicm93c2VyLnVybCgpLAotICAgICAgICBpbml0VXJsUGFydHMgPSBtYXRj
aFVybChpbml0VXJsKSwKLSAgICAgICAgYXBwQmFzZVVybDsKLQotICAgIGlmIChodG1sNU1vZGUp
IHsKLSAgICAgIGJhc2VQYXRoID0gJGJyb3dzZXIuYmFzZUhyZWYoKSB8fCAnLyc7Ci0gICAgICBw
YXRoUHJlZml4ID0gcGF0aFByZWZpeEZyb21CYXNlKGJhc2VQYXRoKTsKLSAgICAgIGFwcEJhc2VV
cmwgPQotICAgICAgICAgIGNvbXBvc2VQcm90b2NvbEhvc3RQb3J0KGluaXRVcmxQYXJ0cy5wcm90
b2NvbCwgaW5pdFVybFBhcnRzLmhvc3QsIGluaXRVcmxQYXJ0cy5wb3J0KSArCi0gICAgICAgICAg
cGF0aFByZWZpeCArICcvJzsKLQotICAgICAgaWYgKCRzbmlmZmVyLmhpc3RvcnkpIHsKLSAgICAg
ICAgJGxvY2F0aW9uID0gbmV3IExvY2F0aW9uVXJsKAotICAgICAgICAgIGNvbnZlcnRUb0h0bWw1
VXJsKGluaXRVcmwsIGJhc2VQYXRoLCBoYXNoUHJlZml4KSwKLSAgICAgICAgICBwYXRoUHJlZml4
LCBhcHBCYXNlVXJsKTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgICRsb2NhdGlvbiA9IG5ldyBM
b2NhdGlvbkhhc2hiYW5nSW5IdG1sNVVybCgKLSAgICAgICAgICBjb252ZXJ0VG9IYXNoYmFuZ1Vy
bChpbml0VXJsLCBiYXNlUGF0aCwgaGFzaFByZWZpeCksCi0gICAgICAgICAgaGFzaFByZWZpeCwg
YXBwQmFzZVVybCwgYmFzZVBhdGguc3Vic3RyKHBhdGhQcmVmaXgubGVuZ3RoICsgMSkpOwotICAg
ICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICBhcHBCYXNlVXJsID0KLSAgICAgICAgICBjb21wb3Nl
UHJvdG9jb2xIb3N0UG9ydChpbml0VXJsUGFydHMucHJvdG9jb2wsIGluaXRVcmxQYXJ0cy5ob3N0
LCBpbml0VXJsUGFydHMucG9ydCkgKwotICAgICAgICAgIChpbml0VXJsUGFydHMucGF0aCB8fCAn
JykgKwotICAgICAgICAgIChpbml0VXJsUGFydHMuc2VhcmNoID8gKCc/JyArIGluaXRVcmxQYXJ0
cy5zZWFyY2gpIDogJycpICsKLSAgICAgICAgICAnIycgKyBoYXNoUHJlZml4ICsgJy8nOwotCi0g
ICAgICAkbG9jYXRpb24gPSBuZXcgTG9jYXRpb25IYXNoYmFuZ1VybChpbml0VXJsLCBoYXNoUHJl
Zml4LCBhcHBCYXNlVXJsKTsKLSAgICB9Ci0KLSAgICAkcm9vdEVsZW1lbnQuYmluZCgnY2xpY2sn
LCBmdW5jdGlvbihldmVudCkgewotICAgICAgLy8gVE9ETyh2b2p0YSk6IHJld3JpdGUgbGluayB3
aGVuIG9wZW5pbmcgaW4gbmV3IHRhYi93aW5kb3cgKGluIGxlZ2FjeSBicm93c2VyKQotICAgICAg
Ly8gY3VycmVudGx5IHdlIG9wZW4gbmljZSB1cmwgbGluayBhbmQgcmVkaXJlY3QgdGhlbgotCi0g
ICAgICBpZiAoZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5IHx8IGV2ZW50LndoaWNoID09
IDIpIHJldHVybjsKLQotICAgICAgdmFyIGVsbSA9IGpxTGl0ZShldmVudC50YXJnZXQpOwotCi0g
ICAgICAvLyB0cmF2ZXJzZSB0aGUgRE9NIHVwIHRvIGZpbmQgZmlyc3QgQSB0YWcKLSAgICAgIHdo
aWxlIChsb3dlcmNhc2UoZWxtWzBdLm5vZGVOYW1lKSAhPT0gJ2EnKSB7Ci0gICAgICAgIC8vIGln
bm9yZSByZXdyaXRpbmcgaWYgbm8gQSB0YWcgKHJlYWNoZWQgcm9vdCBlbGVtZW50LCBvciBubyBw
YXJlbnQgLSByZW1vdmVkIGZyb20gZG9jdW1lbnQpCi0gICAgICAgIGlmIChlbG1bMF0gPT09ICRy
b290RWxlbWVudFswXSB8fCAhKGVsbSA9IGVsbS5wYXJlbnQoKSlbMF0pIHJldHVybjsKLSAgICAg
IH0KLQotICAgICAgdmFyIGFic0hyZWYgPSBlbG0ucHJvcCgnaHJlZicpLAotICAgICAgICAgIHJl
d3JpdHRlblVybCA9ICRsb2NhdGlvbi4kJHJld3JpdGVBcHBVcmwoYWJzSHJlZik7Ci0KLSAgICAg
IGlmIChhYnNIcmVmICYmICFlbG0uYXR0cigndGFyZ2V0JykgJiYgcmV3cml0dGVuVXJsKSB7Ci0g
ICAgICAgIC8vIHVwZGF0ZSBsb2NhdGlvbiBtYW51YWxseQotICAgICAgICAkbG9jYXRpb24uJCRw
YXJzZShyZXdyaXR0ZW5VcmwpOwotICAgICAgICAkcm9vdFNjb3BlLiRhcHBseSgpOwotICAgICAg
ICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwotICAgICAgICAvLyBoYWNrIHRvIHdvcmsgYXJvdW5k
IEZGNiBidWcgNjg0MjA4IHdoZW4gc2NlbmFyaW8gcnVubmVyIGNsaWNrcyBvbiBsaW5rcwotICAg
ICAgICB3aW5kb3cuYW5ndWxhclsnZmYtNjg0MjA4LXByZXZlbnREZWZhdWx0J10gPSB0cnVlOwot
ICAgICAgfQotICAgIH0pOwotCi0KLSAgICAvLyByZXdyaXRlIGhhc2hiYW5nIHVybCA8PiBodG1s
NSB1cmwKLSAgICBpZiAoJGxvY2F0aW9uLmFic1VybCgpICE9IGluaXRVcmwpIHsKLSAgICAgICRi
cm93c2VyLnVybCgkbG9jYXRpb24uYWJzVXJsKCksIHRydWUpOwotICAgIH0KLQotICAgIC8vIHVw
ZGF0ZSAkbG9jYXRpb24gd2hlbiAkYnJvd3NlciB1cmwgY2hhbmdlcwotICAgICRicm93c2VyLm9u
VXJsQ2hhbmdlKGZ1bmN0aW9uKG5ld1VybCkgewotICAgICAgaWYgKCRsb2NhdGlvbi5hYnNVcmwo
KSAhPSBuZXdVcmwpIHsKLSAgICAgICAgaWYgKCRyb290U2NvcGUuJGJyb2FkY2FzdCgnJGxvY2F0
aW9uQ2hhbmdlU3RhcnQnLCBuZXdVcmwsICRsb2NhdGlvbi5hYnNVcmwoKSkuZGVmYXVsdFByZXZl
bnRlZCkgewotICAgICAgICAgICRicm93c2VyLnVybCgkbG9jYXRpb24uYWJzVXJsKCkpOwotICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICAkcm9vdFNjb3BlLiRldmFsQXN5bmMo
ZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgdmFyIG9sZFVybCA9ICRsb2NhdGlvbi5hYnNVcmwoKTsK
LQotICAgICAgICAgICRsb2NhdGlvbi4kJHBhcnNlKG5ld1VybCk7Ci0gICAgICAgICAgYWZ0ZXJM
b2NhdGlvbkNoYW5nZShvbGRVcmwpOwotICAgICAgICB9KTsKLSAgICAgICAgaWYgKCEkcm9vdFNj
b3BlLiQkcGhhc2UpICRyb290U2NvcGUuJGRpZ2VzdCgpOwotICAgICAgfQotICAgIH0pOwotCi0g
ICAgLy8gdXBkYXRlIGJyb3dzZXIKLSAgICB2YXIgY2hhbmdlQ291bnRlciA9IDA7Ci0gICAgJHJv
b3RTY29wZS4kd2F0Y2goZnVuY3Rpb24gJGxvY2F0aW9uV2F0Y2goKSB7Ci0gICAgICB2YXIgb2xk
VXJsID0gJGJyb3dzZXIudXJsKCk7Ci0gICAgICB2YXIgY3VycmVudFJlcGxhY2UgPSAkbG9jYXRp
b24uJCRyZXBsYWNlOwotCi0gICAgICBpZiAoIWNoYW5nZUNvdW50ZXIgfHwgb2xkVXJsICE9ICRs
b2NhdGlvbi5hYnNVcmwoKSkgewotICAgICAgICBjaGFuZ2VDb3VudGVyKys7Ci0gICAgICAgICRy
b290U2NvcGUuJGV2YWxBc3luYyhmdW5jdGlvbigpIHsKLSAgICAgICAgICBpZiAoJHJvb3RTY29w
ZS4kYnJvYWRjYXN0KCckbG9jYXRpb25DaGFuZ2VTdGFydCcsICRsb2NhdGlvbi5hYnNVcmwoKSwg
b2xkVXJsKS4KLSAgICAgICAgICAgICAgZGVmYXVsdFByZXZlbnRlZCkgewotICAgICAgICAgICAg
JGxvY2F0aW9uLiQkcGFyc2Uob2xkVXJsKTsKLSAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgJGJyb3dzZXIudXJsKCRsb2NhdGlvbi5hYnNVcmwoKSwgY3VycmVudFJlcGxhY2UpOwotICAg
ICAgICAgICAgYWZ0ZXJMb2NhdGlvbkNoYW5nZShvbGRVcmwpOwotICAgICAgICAgIH0KLSAgICAg
ICAgfSk7Ci0gICAgICB9Ci0gICAgICAkbG9jYXRpb24uJCRyZXBsYWNlID0gZmFsc2U7Ci0KLSAg
ICAgIHJldHVybiBjaGFuZ2VDb3VudGVyOwotICAgIH0pOwotCi0gICAgcmV0dXJuICRsb2NhdGlv
bjsKLQotICAgIGZ1bmN0aW9uIGFmdGVyTG9jYXRpb25DaGFuZ2Uob2xkVXJsKSB7Ci0gICAgICAk
cm9vdFNjb3BlLiRicm9hZGNhc3QoJyRsb2NhdGlvbkNoYW5nZVN1Y2Nlc3MnLCAkbG9jYXRpb24u
YWJzVXJsKCksIG9sZFVybCk7Ci0gICAgfQotfV07Ci19Ci0KLS8qKgotICogQG5nZG9jIG9iamVj
dAotICogQG5hbWUgbmcuJGxvZwotICogQHJlcXVpcmVzICR3aW5kb3cKLSAqCi0gKiBAZGVzY3Jp
cHRpb24KLSAqIFNpbXBsZSBzZXJ2aWNlIGZvciBsb2dnaW5nLiBEZWZhdWx0IGltcGxlbWVudGF0
aW9uIHdyaXRlcyB0aGUgbWVzc2FnZQotICogaW50byB0aGUgYnJvd3NlcidzIGNvbnNvbGUgKGlm
IHByZXNlbnQpLgotICoKLSAqIFRoZSBtYWluIHB1cnBvc2Ugb2YgdGhpcyBzZXJ2aWNlIGlzIHRv
IHNpbXBsaWZ5IGRlYnVnZ2luZyBhbmQgdHJvdWJsZXNob290aW5nLgotICoKLSAqIEBleGFtcGxl
Ci0gICA8ZXhhbXBsZT4KLSAgICAgPGZpbGUgbmFtZT0ic2NyaXB0LmpzIj4KLSAgICAgICBmdW5j
dGlvbiBMb2dDdHJsKCRzY29wZSwgJGxvZykgewotICAgICAgICAgJHNjb3BlLiRsb2cgPSAkbG9n
OwotICAgICAgICAgJHNjb3BlLm1lc3NhZ2UgPSAnSGVsbG8gV29ybGQhJzsKLSAgICAgICB9Ci0g
ICAgIDwvZmlsZT4KLSAgICAgPGZpbGUgbmFtZT0iaW5kZXguaHRtbCI+Ci0gICAgICAgPGRpdiBu
Zy1jb250cm9sbGVyPSJMb2dDdHJsIj4KLSAgICAgICAgIDxwPlJlbG9hZCB0aGlzIHBhZ2Ugd2l0
aCBvcGVuIGNvbnNvbGUsIGVudGVyIHRleHQgYW5kIGhpdCB0aGUgbG9nIGJ1dHRvbi4uLjwvcD4K
LSAgICAgICAgIE1lc3NhZ2U6Ci0gICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmctbW9kZWw9
Im1lc3NhZ2UiLz4KLSAgICAgICAgIDxidXR0b24gbmctY2xpY2s9IiRsb2cubG9nKG1lc3NhZ2Up
Ij5sb2c8L2J1dHRvbj4KLSAgICAgICAgIDxidXR0b24gbmctY2xpY2s9IiRsb2cud2FybihtZXNz
YWdlKSI+d2FybjwvYnV0dG9uPgotICAgICAgICAgPGJ1dHRvbiBuZy1jbGljaz0iJGxvZy5pbmZv
KG1lc3NhZ2UpIj5pbmZvPC9idXR0b24+Ci0gICAgICAgICA8YnV0dG9uIG5nLWNsaWNrPSIkbG9n
LmVycm9yKG1lc3NhZ2UpIj5lcnJvcjwvYnV0dG9uPgotICAgICAgIDwvZGl2PgotICAgICA8L2Zp
bGU+Ci0gICA8L2V4YW1wbGU+Ci0gKi8KLQotZnVuY3Rpb24gJExvZ1Byb3ZpZGVyKCl7Ci0gIHRo
aXMuJGdldCA9IFsnJHdpbmRvdycsIGZ1bmN0aW9uKCR3aW5kb3cpewotICAgIHJldHVybiB7Ci0g
ICAgICAvKioKLSAgICAgICAqIEBuZ2RvYyBtZXRob2QKLSAgICAgICAqIEBuYW1lIG5nLiRsb2cj
bG9nCi0gICAgICAgKiBAbWV0aG9kT2YgbmcuJGxvZwotICAgICAgICoKLSAgICAgICAqIEBkZXNj
cmlwdGlvbgotICAgICAgICogV3JpdGUgYSBsb2cgbWVzc2FnZQotICAgICAgICovCi0gICAgICBs
b2c6IGNvbnNvbGVMb2coJ2xvZycpLAotCi0gICAgICAvKioKLSAgICAgICAqIEBuZ2RvYyBtZXRo
b2QKLSAgICAgICAqIEBuYW1lIG5nLiRsb2cjd2FybgotICAgICAgICogQG1ldGhvZE9mIG5nLiRs
b2cKLSAgICAgICAqCi0gICAgICAgKiBAZGVzY3JpcHRpb24KLSAgICAgICAqIFdyaXRlIGEgd2Fy
bmluZyBtZXNzYWdlCi0gICAgICAgKi8KLSAgICAgIHdhcm46IGNvbnNvbGVMb2coJ3dhcm4nKSwK
LQotICAgICAgLyoqCi0gICAgICAgKiBAbmdkb2MgbWV0aG9kCi0gICAgICAgKiBAbmFtZSBuZy4k
bG9nI2luZm8KLSAgICAgICAqIEBtZXRob2RPZiBuZy4kbG9nCi0gICAgICAgKgotICAgICAgICog
QGRlc2NyaXB0aW9uCi0gICAgICAgKiBXcml0ZSBhbiBpbmZvcm1hdGlvbiBtZXNzYWdlCi0gICAg
ICAgKi8KLSAgICAgIGluZm86IGNvbnNvbGVMb2coJ2luZm8nKSwKLQotICAgICAgLyoqCi0gICAg
ICAgKiBAbmdkb2MgbWV0aG9kCi0gICAgICAgKiBAbmFtZSBuZy4kbG9nI2Vycm9yCi0gICAgICAg
KiBAbWV0aG9kT2YgbmcuJGxvZwotICAgICAgICoKLSAgICAgICAqIEBkZXNjcmlwdGlvbgotICAg
ICAgICogV3JpdGUgYW4gZXJyb3IgbWVzc2FnZQotICAgICAgICovCi0gICAgICBlcnJvcjogY29u
c29sZUxvZygnZXJyb3InKQotICAgIH07Ci0KLSAgICBmdW5jdGlvbiBmb3JtYXRFcnJvcihhcmcp
IHsKLSAgICAgIGlmIChhcmcgaW5zdGFuY2VvZiBFcnJvcikgewotICAgICAgICBpZiAoYXJnLnN0
YWNrKSB7Ci0gICAgICAgICAgYXJnID0gKGFyZy5tZXNzYWdlICYmIGFyZy5zdGFjay5pbmRleE9m
KGFyZy5tZXNzYWdlKSA9PT0gLTEpCi0gICAgICAgICAgICAgID8gJ0Vycm9yOiAnICsgYXJnLm1l
c3NhZ2UgKyAnXG4nICsgYXJnLnN0YWNrCi0gICAgICAgICAgICAgIDogYXJnLnN0YWNrOwotICAg
ICAgICB9IGVsc2UgaWYgKGFyZy5zb3VyY2VVUkwpIHsKLSAgICAgICAgICBhcmcgPSBhcmcubWVz
c2FnZSArICdcbicgKyBhcmcuc291cmNlVVJMICsgJzonICsgYXJnLmxpbmU7Ci0gICAgICAgIH0K
LSAgICAgIH0KLSAgICAgIHJldHVybiBhcmc7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gY29uc29s
ZUxvZyh0eXBlKSB7Ci0gICAgICB2YXIgY29uc29sZSA9ICR3aW5kb3cuY29uc29sZSB8fCB7fSwK
LSAgICAgICAgICBsb2dGbiA9IGNvbnNvbGVbdHlwZV0gfHwgY29uc29sZS5sb2cgfHwgbm9vcDsK
LQotICAgICAgaWYgKGxvZ0ZuLmFwcGx5KSB7Ci0gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHsK
LSAgICAgICAgICB2YXIgYXJncyA9IFtdOwotICAgICAgICAgIGZvckVhY2goYXJndW1lbnRzLCBm
dW5jdGlvbihhcmcpIHsKLSAgICAgICAgICAgIGFyZ3MucHVzaChmb3JtYXRFcnJvcihhcmcpKTsK
LSAgICAgICAgICB9KTsKLSAgICAgICAgICByZXR1cm4gbG9nRm4uYXBwbHkoY29uc29sZSwgYXJn
cyk7Ci0gICAgICAgIH07Ci0gICAgICB9Ci0KLSAgICAgIC8vIHdlIGFyZSBJRSB3aGljaCBlaXRo
ZXIgZG9lc24ndCBoYXZlIHdpbmRvdy5jb25zb2xlID0+IHRoaXMgaXMgbm9vcCBhbmQgd2UgZG8g
bm90aGluZywKLSAgICAgIC8vIG9yIHdlIGFyZSBJRSB3aGVyZSBjb25zb2xlLmxvZyBkb2Vzbid0
IGhhdmUgYXBwbHkgc28gd2UgbG9nIGF0IGxlYXN0IGZpcnN0IDIgYXJncwotICAgICAgcmV0dXJu
IGZ1bmN0aW9uKGFyZzEsIGFyZzIpIHsKLSAgICAgICAgbG9nRm4oYXJnMSwgYXJnMik7Ci0gICAg
ICB9Ci0gICAgfQotICB9XTsKLX0KLQotdmFyIE9QRVJBVE9SUyA9IHsKLSAgICAnbnVsbCc6ZnVu
Y3Rpb24oKXtyZXR1cm4gbnVsbDt9LAotICAgICd0cnVlJzpmdW5jdGlvbigpe3JldHVybiB0cnVl
O30sCi0gICAgJ2ZhbHNlJzpmdW5jdGlvbigpe3JldHVybiBmYWxzZTt9LAotICAgIHVuZGVmaW5l
ZDpub29wLAotICAgICcrJzpmdW5jdGlvbihzZWxmLCBsb2NhbHMsIGEsYil7Ci0gICAgICBhPWEo
c2VsZiwgbG9jYWxzKTsgYj1iKHNlbGYsIGxvY2Fscyk7Ci0gICAgICBpZiAoaXNEZWZpbmVkKGEp
KSB7Ci0gICAgICAgIGlmIChpc0RlZmluZWQoYikpIHsKLSAgICAgICAgICByZXR1cm4gYSArIGI7
Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGE7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gaXNE
ZWZpbmVkKGIpP2I6dW5kZWZpbmVkO30sCi0gICAgJy0nOmZ1bmN0aW9uKHNlbGYsIGxvY2Fscywg
YSxiKXthPWEoc2VsZiwgbG9jYWxzKTsgYj1iKHNlbGYsIGxvY2Fscyk7IHJldHVybiAoaXNEZWZp
bmVkKGEpP2E6MCktKGlzRGVmaW5lZChiKT9iOjApO30sCi0gICAgJyonOmZ1bmN0aW9uKHNlbGYs
IGxvY2FscywgYSxiKXtyZXR1cm4gYShzZWxmLCBsb2NhbHMpKmIoc2VsZiwgbG9jYWxzKTt9LAot
ICAgICcvJzpmdW5jdGlvbihzZWxmLCBsb2NhbHMsIGEsYil7cmV0dXJuIGEoc2VsZiwgbG9jYWxz
KS9iKHNlbGYsIGxvY2Fscyk7fSwKLSAgICAnJSc6ZnVuY3Rpb24oc2VsZiwgbG9jYWxzLCBhLGIp
e3JldHVybiBhKHNlbGYsIGxvY2FscyklYihzZWxmLCBsb2NhbHMpO30sCi0gICAgJ14nOmZ1bmN0
aW9uKHNlbGYsIGxvY2FscywgYSxiKXtyZXR1cm4gYShzZWxmLCBsb2NhbHMpXmIoc2VsZiwgbG9j
YWxzKTt9LAotICAgICc9Jzpub29wLAotICAgICc9PSc6ZnVuY3Rpb24oc2VsZiwgbG9jYWxzLCBh
LGIpe3JldHVybiBhKHNlbGYsIGxvY2Fscyk9PWIoc2VsZiwgbG9jYWxzKTt9LAotICAgICchPSc6
ZnVuY3Rpb24oc2VsZiwgbG9jYWxzLCBhLGIpe3JldHVybiBhKHNlbGYsIGxvY2FscykhPWIoc2Vs
ZiwgbG9jYWxzKTt9LAotICAgICc8JzpmdW5jdGlvbihzZWxmLCBsb2NhbHMsIGEsYil7cmV0dXJu
IGEoc2VsZiwgbG9jYWxzKTxiKHNlbGYsIGxvY2Fscyk7fSwKLSAgICAnPic6ZnVuY3Rpb24oc2Vs
ZiwgbG9jYWxzLCBhLGIpe3JldHVybiBhKHNlbGYsIGxvY2Fscyk+YihzZWxmLCBsb2NhbHMpO30s
Ci0gICAgJzw9JzpmdW5jdGlvbihzZWxmLCBsb2NhbHMsIGEsYil7cmV0dXJuIGEoc2VsZiwgbG9j
YWxzKTw9YihzZWxmLCBsb2NhbHMpO30sCi0gICAgJz49JzpmdW5jdGlvbihzZWxmLCBsb2NhbHMs
IGEsYil7cmV0dXJuIGEoc2VsZiwgbG9jYWxzKT49YihzZWxmLCBsb2NhbHMpO30sCi0gICAgJyYm
JzpmdW5jdGlvbihzZWxmLCBsb2NhbHMsIGEsYil7cmV0dXJuIGEoc2VsZiwgbG9jYWxzKSYmYihz
ZWxmLCBsb2NhbHMpO30sCi0gICAgJ3x8JzpmdW5jdGlvbihzZWxmLCBsb2NhbHMsIGEsYil7cmV0
dXJuIGEoc2VsZiwgbG9jYWxzKXx8YihzZWxmLCBsb2NhbHMpO30sCi0gICAgJyYnOmZ1bmN0aW9u
KHNlbGYsIGxvY2FscywgYSxiKXtyZXR1cm4gYShzZWxmLCBsb2NhbHMpJmIoc2VsZiwgbG9jYWxz
KTt9LAotLy8gICAgJ3wnOmZ1bmN0aW9uKHNlbGYsIGxvY2FscywgYSxiKXtyZXR1cm4gYXxiO30s
Ci0gICAgJ3wnOmZ1bmN0aW9uKHNlbGYsIGxvY2FscywgYSxiKXtyZXR1cm4gYihzZWxmLCBsb2Nh
bHMpKHNlbGYsIGxvY2FscywgYShzZWxmLCBsb2NhbHMpKTt9LAotICAgICchJzpmdW5jdGlvbihz
ZWxmLCBsb2NhbHMsIGEpe3JldHVybiAhYShzZWxmLCBsb2NhbHMpO30KLX07Ci12YXIgRVNDQVBF
ID0geyJuIjoiXG4iLCAiZiI6IlxmIiwgInIiOiJcciIsICJ0IjoiXHQiLCAidiI6Ilx2IiwgIici
OiInIiwgJyInOiciJ307Ci0KLWZ1bmN0aW9uIGxleCh0ZXh0LCBjc3ApewotICB2YXIgdG9rZW5z
ID0gW10sCi0gICAgICB0b2tlbiwKLSAgICAgIGluZGV4ID0gMCwKLSAgICAgIGpzb24gPSBbXSwK
LSAgICAgIGNoLAotICAgICAgbGFzdENoID0gJzonOyAvLyBjYW4gc3RhcnQgcmVnZXhwCi0KLSAg
d2hpbGUgKGluZGV4IDwgdGV4dC5sZW5ndGgpIHsKLSAgICBjaCA9IHRleHQuY2hhckF0KGluZGV4
KTsKLSAgICBpZiAoaXMoJyJcJycpKSB7Ci0gICAgICByZWFkU3RyaW5nKGNoKTsKLSAgICB9IGVs
c2UgaWYgKGlzTnVtYmVyKGNoKSB8fCBpcygnLicpICYmIGlzTnVtYmVyKHBlZWsoKSkpIHsKLSAg
ICAgIHJlYWROdW1iZXIoKTsKLSAgICB9IGVsc2UgaWYgKGlzSWRlbnQoY2gpKSB7Ci0gICAgICBy
ZWFkSWRlbnQoKTsKLSAgICAgIC8vIGlkZW50aWZpZXJzIGNhbiBvbmx5IGJlIGlmIHRoZSBwcmVj
ZWRpbmcgY2hhciB3YXMgYSB7IG9yICwKLSAgICAgIGlmICh3YXMoJ3ssJykgJiYganNvblswXT09
J3snICYmCi0gICAgICAgICAodG9rZW49dG9rZW5zW3Rva2Vucy5sZW5ndGgtMV0pKSB7Ci0gICAg
ICAgIHRva2VuLmpzb24gPSB0b2tlbi50ZXh0LmluZGV4T2YoJy4nKSA9PSAtMTsKLSAgICAgIH0K
LSAgICB9IGVsc2UgaWYgKGlzKCcoKXt9W10uLDs6JykpIHsKLSAgICAgIHRva2Vucy5wdXNoKHsK
LSAgICAgICAgaW5kZXg6aW5kZXgsCi0gICAgICAgIHRleHQ6Y2gsCi0gICAgICAgIGpzb246KHdh
cygnOlssJykgJiYgaXMoJ3tbJykpIHx8IGlzKCd9XTosJykKLSAgICAgIH0pOwotICAgICAgaWYg
KGlzKCd7WycpKSBqc29uLnVuc2hpZnQoY2gpOwotICAgICAgaWYgKGlzKCd9XScpKSBqc29uLnNo
aWZ0KCk7Ci0gICAgICBpbmRleCsrOwotICAgIH0gZWxzZSBpZiAoaXNXaGl0ZXNwYWNlKGNoKSkg
ewotICAgICAgaW5kZXgrKzsKLSAgICAgIGNvbnRpbnVlOwotICAgIH0gZWxzZSB7Ci0gICAgICB2
YXIgY2gyID0gY2ggKyBwZWVrKCksCi0gICAgICAgICAgZm4gPSBPUEVSQVRPUlNbY2hdLAotICAg
ICAgICAgIGZuMiA9IE9QRVJBVE9SU1tjaDJdOwotICAgICAgaWYgKGZuMikgewotICAgICAgICB0
b2tlbnMucHVzaCh7aW5kZXg6aW5kZXgsIHRleHQ6Y2gyLCBmbjpmbjJ9KTsKLSAgICAgICAgaW5k
ZXggKz0gMjsKLSAgICAgIH0gZWxzZSBpZiAoZm4pIHsKLSAgICAgICAgdG9rZW5zLnB1c2goe2lu
ZGV4OmluZGV4LCB0ZXh0OmNoLCBmbjpmbiwganNvbjogd2FzKCdbLDonKSAmJiBpcygnKy0nKX0p
OwotICAgICAgICBpbmRleCArPSAxOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgdGhyb3dFcnJv
cigiVW5leHBlY3RlZCBuZXh0IGNoYXJhY3RlciAiLCBpbmRleCwgaW5kZXgrMSk7Ci0gICAgICB9
Ci0gICAgfQotICAgIGxhc3RDaCA9IGNoOwotICB9Ci0gIHJldHVybiB0b2tlbnM7Ci0KLSAgZnVu
Y3Rpb24gaXMoY2hhcnMpIHsKLSAgICByZXR1cm4gY2hhcnMuaW5kZXhPZihjaCkgIT0gLTE7Ci0g
IH0KLQotICBmdW5jdGlvbiB3YXMoY2hhcnMpIHsKLSAgICByZXR1cm4gY2hhcnMuaW5kZXhPZihs
YXN0Q2gpICE9IC0xOwotICB9Ci0KLSAgZnVuY3Rpb24gcGVlaygpIHsKLSAgICByZXR1cm4gaW5k
ZXggKyAxIDwgdGV4dC5sZW5ndGggPyB0ZXh0LmNoYXJBdChpbmRleCArIDEpIDogZmFsc2U7Ci0g
IH0KLSAgZnVuY3Rpb24gaXNOdW1iZXIoY2gpIHsKLSAgICByZXR1cm4gJzAnIDw9IGNoICYmIGNo
IDw9ICc5JzsKLSAgfQotICBmdW5jdGlvbiBpc1doaXRlc3BhY2UoY2gpIHsKLSAgICByZXR1cm4g
Y2ggPT0gJyAnIHx8IGNoID09ICdccicgfHwgY2ggPT0gJ1x0JyB8fAotICAgICAgICAgICBjaCA9
PSAnXG4nIHx8IGNoID09ICdcdicgfHwgY2ggPT0gJ1x1MDBBMCc7IC8vIElFIHRyZWF0cyBub24t
YnJlYWtpbmcgc3BhY2UgYXMgXHUwMEEwCi0gIH0KLSAgZnVuY3Rpb24gaXNJZGVudChjaCkgewot
ICAgIHJldHVybiAnYScgPD0gY2ggJiYgY2ggPD0gJ3onIHx8Ci0gICAgICAgICAgICdBJyA8PSBj
aCAmJiBjaCA8PSAnWicgfHwKLSAgICAgICAgICAgJ18nID09IGNoIHx8IGNoID09ICckJzsKLSAg
fQotICBmdW5jdGlvbiBpc0V4cE9wZXJhdG9yKGNoKSB7Ci0gICAgcmV0dXJuIGNoID09ICctJyB8
fCBjaCA9PSAnKycgfHwgaXNOdW1iZXIoY2gpOwotICB9Ci0KLSAgZnVuY3Rpb24gdGhyb3dFcnJv
cihlcnJvciwgc3RhcnQsIGVuZCkgewotICAgIGVuZCA9IGVuZCB8fCBpbmRleDsKLSAgICB0aHJv
dyBFcnJvcigiTGV4ZXIgRXJyb3I6ICIgKyBlcnJvciArICIgYXQgY29sdW1uIiArCi0gICAgICAg
IChpc0RlZmluZWQoc3RhcnQpCi0gICAgICAgICAgICA/ICJzICIgKyBzdGFydCArICAiLSIgKyBp
bmRleCArICIgWyIgKyB0ZXh0LnN1YnN0cmluZyhzdGFydCwgZW5kKSArICJdIgotICAgICAgICAg
ICAgOiAiICIgKyBlbmQpICsKLSAgICAgICAgIiBpbiBleHByZXNzaW9uIFsiICsgdGV4dCArICJd
LiIpOwotICB9Ci0KLSAgZnVuY3Rpb24gcmVhZE51bWJlcigpIHsKLSAgICB2YXIgbnVtYmVyID0g
IiI7Ci0gICAgdmFyIHN0YXJ0ID0gaW5kZXg7Ci0gICAgd2hpbGUgKGluZGV4IDwgdGV4dC5sZW5n
dGgpIHsKLSAgICAgIHZhciBjaCA9IGxvd2VyY2FzZSh0ZXh0LmNoYXJBdChpbmRleCkpOwotICAg
ICAgaWYgKGNoID09ICcuJyB8fCBpc051bWJlcihjaCkpIHsKLSAgICAgICAgbnVtYmVyICs9IGNo
OwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgdmFyIHBlZWtDaCA9IHBlZWsoKTsKLSAgICAgICAg
aWYgKGNoID09ICdlJyAmJiBpc0V4cE9wZXJhdG9yKHBlZWtDaCkpIHsKLSAgICAgICAgICBudW1i
ZXIgKz0gY2g7Ci0gICAgICAgIH0gZWxzZSBpZiAoaXNFeHBPcGVyYXRvcihjaCkgJiYKLSAgICAg
ICAgICAgIHBlZWtDaCAmJiBpc051bWJlcihwZWVrQ2gpICYmCi0gICAgICAgICAgICBudW1iZXIu
Y2hhckF0KG51bWJlci5sZW5ndGggLSAxKSA9PSAnZScpIHsKLSAgICAgICAgICBudW1iZXIgKz0g
Y2g7Ci0gICAgICAgIH0gZWxzZSBpZiAoaXNFeHBPcGVyYXRvcihjaCkgJiYKLSAgICAgICAgICAg
ICghcGVla0NoIHx8ICFpc051bWJlcihwZWVrQ2gpKSAmJgotICAgICAgICAgICAgbnVtYmVyLmNo
YXJBdChudW1iZXIubGVuZ3RoIC0gMSkgPT0gJ2UnKSB7Ci0gICAgICAgICAgdGhyb3dFcnJvcign
SW52YWxpZCBleHBvbmVudCcpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIGJyZWFrOwot
ICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBpbmRleCsrOwotICAgIH0KLSAgICBudW1iZXIgPSAx
ICogbnVtYmVyOwotICAgIHRva2Vucy5wdXNoKHtpbmRleDpzdGFydCwgdGV4dDpudW1iZXIsIGpz
b246dHJ1ZSwKLSAgICAgIGZuOmZ1bmN0aW9uKCkge3JldHVybiBudW1iZXI7fX0pOwotICB9Ci0g
IGZ1bmN0aW9uIHJlYWRJZGVudCgpIHsKLSAgICB2YXIgaWRlbnQgPSAiIiwKLSAgICAgICAgc3Rh
cnQgPSBpbmRleCwKLSAgICAgICAgbGFzdERvdCwgcGVla0luZGV4LCBtZXRob2ROYW1lLCBjaDsK
LQotICAgIHdoaWxlIChpbmRleCA8IHRleHQubGVuZ3RoKSB7Ci0gICAgICBjaCA9IHRleHQuY2hh
ckF0KGluZGV4KTsKLSAgICAgIGlmIChjaCA9PSAnLicgfHwgaXNJZGVudChjaCkgfHwgaXNOdW1i
ZXIoY2gpKSB7Ci0gICAgICAgIGlmIChjaCA9PSAnLicpIGxhc3REb3QgPSBpbmRleDsKLSAgICAg
ICAgaWRlbnQgKz0gY2g7Ci0gICAgICB9IGVsc2UgewotICAgICAgICBicmVhazsKLSAgICAgIH0K
LSAgICAgIGluZGV4Kys7Ci0gICAgfQotCi0gICAgLy9jaGVjayBpZiB0aGlzIGlzIG5vdCBhIG1l
dGhvZCBpbnZvY2F0aW9uIGFuZCBpZiBpdCBpcyBiYWNrIG91dCB0byBsYXN0IGRvdAotICAgIGlm
IChsYXN0RG90KSB7Ci0gICAgICBwZWVrSW5kZXggPSBpbmRleDsKLSAgICAgIHdoaWxlKHBlZWtJ
bmRleCA8IHRleHQubGVuZ3RoKSB7Ci0gICAgICAgIGNoID0gdGV4dC5jaGFyQXQocGVla0luZGV4
KTsKLSAgICAgICAgaWYgKGNoID09ICcoJykgewotICAgICAgICAgIG1ldGhvZE5hbWUgPSBpZGVu
dC5zdWJzdHIobGFzdERvdCAtIHN0YXJ0ICsgMSk7Ci0gICAgICAgICAgaWRlbnQgPSBpZGVudC5z
dWJzdHIoMCwgbGFzdERvdCAtIHN0YXJ0KTsKLSAgICAgICAgICBpbmRleCA9IHBlZWtJbmRleDsK
LSAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBpZihpc1doaXRlc3BhY2UoY2gp
KSB7Ci0gICAgICAgICAgcGVla0luZGV4Kys7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0KLQotICAgIHZhciB0b2tlbiA9IHsK
LSAgICAgIGluZGV4OnN0YXJ0LAotICAgICAgdGV4dDppZGVudAotICAgIH07Ci0KLSAgICBpZiAo
T1BFUkFUT1JTLmhhc093blByb3BlcnR5KGlkZW50KSkgewotICAgICAgdG9rZW4uZm4gPSB0b2tl
bi5qc29uID0gT1BFUkFUT1JTW2lkZW50XTsKLSAgICB9IGVsc2UgewotICAgICAgdmFyIGdldHRl
ciA9IGdldHRlckZuKGlkZW50LCBjc3ApOwotICAgICAgdG9rZW4uZm4gPSBleHRlbmQoZnVuY3Rp
b24oc2VsZiwgbG9jYWxzKSB7Ci0gICAgICAgIHJldHVybiAoZ2V0dGVyKHNlbGYsIGxvY2Fscykp
OwotICAgICAgfSwgewotICAgICAgICBhc3NpZ246IGZ1bmN0aW9uKHNlbGYsIHZhbHVlKSB7Ci0g
ICAgICAgICAgcmV0dXJuIHNldHRlcihzZWxmLCBpZGVudCwgdmFsdWUpOwotICAgICAgICB9Ci0g
ICAgICB9KTsKLSAgICB9Ci0KLSAgICB0b2tlbnMucHVzaCh0b2tlbik7Ci0KLSAgICBpZiAobWV0
aG9kTmFtZSkgewotICAgICAgdG9rZW5zLnB1c2goewotICAgICAgICBpbmRleDpsYXN0RG90LAot
ICAgICAgICB0ZXh0OiAnLicsCi0gICAgICAgIGpzb246IGZhbHNlCi0gICAgICB9KTsKLSAgICAg
IHRva2Vucy5wdXNoKHsKLSAgICAgICAgaW5kZXg6IGxhc3REb3QgKyAxLAotICAgICAgICB0ZXh0
OiBtZXRob2ROYW1lLAotICAgICAgICBqc29uOiBmYWxzZQotICAgICAgfSk7Ci0gICAgfQotICB9
Ci0KLSAgZnVuY3Rpb24gcmVhZFN0cmluZyhxdW90ZSkgewotICAgIHZhciBzdGFydCA9IGluZGV4
OwotICAgIGluZGV4Kys7Ci0gICAgdmFyIHN0cmluZyA9ICIiOwotICAgIHZhciByYXdTdHJpbmcg
PSBxdW90ZTsKLSAgICB2YXIgZXNjYXBlID0gZmFsc2U7Ci0gICAgd2hpbGUgKGluZGV4IDwgdGV4
dC5sZW5ndGgpIHsKLSAgICAgIHZhciBjaCA9IHRleHQuY2hhckF0KGluZGV4KTsKLSAgICAgIHJh
d1N0cmluZyArPSBjaDsKLSAgICAgIGlmIChlc2NhcGUpIHsKLSAgICAgICAgaWYgKGNoID09ICd1
JykgewotICAgICAgICAgIHZhciBoZXggPSB0ZXh0LnN1YnN0cmluZyhpbmRleCArIDEsIGluZGV4
ICsgNSk7Ci0gICAgICAgICAgaWYgKCFoZXgubWF0Y2goL1tcZGEtZl17NH0vaSkpCi0gICAgICAg
ICAgICB0aHJvd0Vycm9yKCAiSW52YWxpZCB1bmljb2RlIGVzY2FwZSBbXFx1IiArIGhleCArICJd
Iik7Ci0gICAgICAgICAgaW5kZXggKz0gNDsKLSAgICAgICAgICBzdHJpbmcgKz0gU3RyaW5nLmZy
b21DaGFyQ29kZShwYXJzZUludChoZXgsIDE2KSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgdmFyIHJlcCA9IEVTQ0FQRVtjaF07Ci0gICAgICAgICAgaWYgKHJlcCkgewotICAgICAgICAg
ICAgc3RyaW5nICs9IHJlcDsKLSAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc3RyaW5n
ICs9IGNoOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlc2NhcGUgPSBmYWxzZTsK
LSAgICAgIH0gZWxzZSBpZiAoY2ggPT0gJ1xcJykgewotICAgICAgICBlc2NhcGUgPSB0cnVlOwot
ICAgICAgfSBlbHNlIGlmIChjaCA9PSBxdW90ZSkgewotICAgICAgICBpbmRleCsrOwotICAgICAg
ICB0b2tlbnMucHVzaCh7Ci0gICAgICAgICAgaW5kZXg6c3RhcnQsCi0gICAgICAgICAgdGV4dDpy
YXdTdHJpbmcsCi0gICAgICAgICAgc3RyaW5nOnN0cmluZywKLSAgICAgICAgICBqc29uOnRydWUs
Ci0gICAgICAgICAgZm46ZnVuY3Rpb24oKSB7IHJldHVybiBzdHJpbmc7IH0KLSAgICAgICAgfSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIHN0cmluZyArPSBjaDsK
LSAgICAgIH0KLSAgICAgIGluZGV4Kys7Ci0gICAgfQotICAgIHRocm93RXJyb3IoIlVudGVybWlu
YXRlZCBxdW90ZSIsIHN0YXJ0KTsKLSAgfQotfQotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLwotCi1mdW5jdGlvbiBwYXJzZXIodGV4dCwganNvbiwgJGZpbHRlciwg
Y3NwKXsKLSAgdmFyIFpFUk8gPSB2YWx1ZUZuKDApLAotICAgICAgdmFsdWUsCi0gICAgICB0b2tl
bnMgPSBsZXgodGV4dCwgY3NwKSwKLSAgICAgIGFzc2lnbm1lbnQgPSBfYXNzaWdubWVudCwKLSAg
ICAgIGZ1bmN0aW9uQ2FsbCA9IF9mdW5jdGlvbkNhbGwsCi0gICAgICBmaWVsZEFjY2VzcyA9IF9m
aWVsZEFjY2VzcywKLSAgICAgIG9iamVjdEluZGV4ID0gX29iamVjdEluZGV4LAotICAgICAgZmls
dGVyQ2hhaW4gPSBfZmlsdGVyQ2hhaW47Ci0KLSAgaWYoanNvbil7Ci0gICAgLy8gVGhlIGV4dHJh
IGxldmVsIG9mIGFsaWFzaW5nIGlzIGhlcmUsIGp1c3QgaW4gY2FzZSB0aGUgbGV4ZXIgbWlzc2Vz
IHNvbWV0aGluZywgc28gdGhhdAotICAgIC8vIHdlIHByZXZlbnQgYW55IGFjY2lkZW50YWwgZXhl
Y3V0aW9uIGluIEpTT04uCi0gICAgYXNzaWdubWVudCA9IGxvZ2ljYWxPUjsKLSAgICBmdW5jdGlv
bkNhbGwgPQotICAgICAgZmllbGRBY2Nlc3MgPQotICAgICAgb2JqZWN0SW5kZXggPQotICAgICAg
ZmlsdGVyQ2hhaW4gPQotICAgICAgICBmdW5jdGlvbigpIHsgdGhyb3dFcnJvcigiaXMgbm90IHZh
bGlkIGpzb24iLCB7dGV4dDp0ZXh0LCBpbmRleDowfSk7IH07Ci0gICAgdmFsdWUgPSBwcmltYXJ5
KCk7Ci0gIH0gZWxzZSB7Ci0gICAgdmFsdWUgPSBzdGF0ZW1lbnRzKCk7Ci0gIH0KLSAgaWYgKHRv
a2Vucy5sZW5ndGggIT09IDApIHsKLSAgICB0aHJvd0Vycm9yKCJpcyBhbiB1bmV4cGVjdGVkIHRv
a2VuIiwgdG9rZW5zWzBdKTsKLSAgfQotICByZXR1cm4gdmFsdWU7Ci0KLSAgLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgZnVuY3Rpb24gdGhyb3dFcnJvcihtc2csIHRva2Vu
KSB7Ci0gICAgdGhyb3cgRXJyb3IoIlN5bnRheCBFcnJvcjogVG9rZW4gJyIgKyB0b2tlbi50ZXh0
ICsKLSAgICAgICInICIgKyBtc2cgKyAiIGF0IGNvbHVtbiAiICsKLSAgICAgICh0b2tlbi5pbmRl
eCArIDEpICsgIiBvZiB0aGUgZXhwcmVzc2lvbiBbIiArCi0gICAgICB0ZXh0ICsgIl0gc3RhcnRp
bmcgYXQgWyIgKyB0ZXh0LnN1YnN0cmluZyh0b2tlbi5pbmRleCkgKyAiXS4iKTsKLSAgfQotCi0g
IGZ1bmN0aW9uIHBlZWtUb2tlbigpIHsKLSAgICBpZiAodG9rZW5zLmxlbmd0aCA9PT0gMCkKLSAg
ICAgIHRocm93IEVycm9yKCJVbmV4cGVjdGVkIGVuZCBvZiBleHByZXNzaW9uOiAiICsgdGV4dCk7
Ci0gICAgcmV0dXJuIHRva2Vuc1swXTsKLSAgfQotCi0gIGZ1bmN0aW9uIHBlZWsoZTEsIGUyLCBl
MywgZTQpIHsKLSAgICBpZiAodG9rZW5zLmxlbmd0aCA+IDApIHsKLSAgICAgIHZhciB0b2tlbiA9
IHRva2Vuc1swXTsKLSAgICAgIHZhciB0ID0gdG9rZW4udGV4dDsKLSAgICAgIGlmICh0PT1lMSB8
fCB0PT1lMiB8fCB0PT1lMyB8fCB0PT1lNCB8fAotICAgICAgICAgICghZTEgJiYgIWUyICYmICFl
MyAmJiAhZTQpKSB7Ci0gICAgICAgIHJldHVybiB0b2tlbjsKLSAgICAgIH0KLSAgICB9Ci0gICAg
cmV0dXJuIGZhbHNlOwotICB9Ci0KLSAgZnVuY3Rpb24gZXhwZWN0KGUxLCBlMiwgZTMsIGU0KXsK
LSAgICB2YXIgdG9rZW4gPSBwZWVrKGUxLCBlMiwgZTMsIGU0KTsKLSAgICBpZiAodG9rZW4pIHsK
LSAgICAgIGlmIChqc29uICYmICF0b2tlbi5qc29uKSB7Ci0gICAgICAgIHRocm93RXJyb3IoImlz
IG5vdCB2YWxpZCBqc29uIiwgdG9rZW4pOwotICAgICAgfQotICAgICAgdG9rZW5zLnNoaWZ0KCk7
Ci0gICAgICByZXR1cm4gdG9rZW47Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLSAgfQotCi0g
IGZ1bmN0aW9uIGNvbnN1bWUoZTEpewotICAgIGlmICghZXhwZWN0KGUxKSkgewotICAgICAgdGhy
b3dFcnJvcigiaXMgdW5leHBlY3RlZCwgZXhwZWN0aW5nIFsiICsgZTEgKyAiXSIsIHBlZWsoKSk7
Ci0gICAgfQotICB9Ci0KLSAgZnVuY3Rpb24gdW5hcnlGbihmbiwgcmlnaHQpIHsKLSAgICByZXR1
cm4gZnVuY3Rpb24oc2VsZiwgbG9jYWxzKSB7Ci0gICAgICByZXR1cm4gZm4oc2VsZiwgbG9jYWxz
LCByaWdodCk7Ci0gICAgfTsKLSAgfQotCi0gIGZ1bmN0aW9uIGJpbmFyeUZuKGxlZnQsIGZuLCBy
aWdodCkgewotICAgIHJldHVybiBmdW5jdGlvbihzZWxmLCBsb2NhbHMpIHsKLSAgICAgIHJldHVy
biBmbihzZWxmLCBsb2NhbHMsIGxlZnQsIHJpZ2h0KTsKLSAgICB9OwotICB9Ci0KLSAgZnVuY3Rp
b24gc3RhdGVtZW50cygpIHsKLSAgICB2YXIgc3RhdGVtZW50cyA9IFtdOwotICAgIHdoaWxlKHRy
dWUpIHsKLSAgICAgIGlmICh0b2tlbnMubGVuZ3RoID4gMCAmJiAhcGVlaygnfScsICcpJywgJzsn
LCAnXScpKQotICAgICAgICBzdGF0ZW1lbnRzLnB1c2goZmlsdGVyQ2hhaW4oKSk7Ci0gICAgICBp
ZiAoIWV4cGVjdCgnOycpKSB7Ci0gICAgICAgIC8vIG9wdGltaXplIGZvciB0aGUgY29tbW9uIGNh
c2Ugd2hlcmUgdGhlcmUgaXMgb25seSBvbmUgc3RhdGVtZW50LgotICAgICAgICAvLyBUT0RPKHNp
emUpOiBtYXliZSB3ZSBzaG91bGQgbm90IHN1cHBvcnQgbXVsdGlwbGUgc3RhdGVtZW50cz8KLSAg
ICAgICAgcmV0dXJuIHN0YXRlbWVudHMubGVuZ3RoID09IDEKLSAgICAgICAgICA/IHN0YXRlbWVu
dHNbMF0KLSAgICAgICAgICA6IGZ1bmN0aW9uKHNlbGYsIGxvY2Fscyl7Ci0gICAgICAgICAgICB2
YXIgdmFsdWU7Ci0gICAgICAgICAgICBmb3IgKCB2YXIgaSA9IDA7IGkgPCBzdGF0ZW1lbnRzLmxl
bmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICAgIHZhciBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnRzW2ld
OwotICAgICAgICAgICAgICBpZiAoc3RhdGVtZW50KQotICAgICAgICAgICAgICAgIHZhbHVlID0g
c3RhdGVtZW50KHNlbGYsIGxvY2Fscyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1
cm4gdmFsdWU7Ci0gICAgICAgICAgfTsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICBmdW5jdGlv
biBfZmlsdGVyQ2hhaW4oKSB7Ci0gICAgdmFyIGxlZnQgPSBleHByZXNzaW9uKCk7Ci0gICAgdmFy
IHRva2VuOwotICAgIHdoaWxlKHRydWUpIHsKLSAgICAgIGlmICgodG9rZW4gPSBleHBlY3QoJ3wn
KSkpIHsKLSAgICAgICAgbGVmdCA9IGJpbmFyeUZuKGxlZnQsIHRva2VuLmZuLCBmaWx0ZXIoKSk7
Ci0gICAgICB9IGVsc2UgewotICAgICAgICByZXR1cm4gbGVmdDsKLSAgICAgIH0KLSAgICB9Ci0g
IH0KLQotICBmdW5jdGlvbiBmaWx0ZXIoKSB7Ci0gICAgdmFyIHRva2VuID0gZXhwZWN0KCk7Ci0g
ICAgdmFyIGZuID0gJGZpbHRlcih0b2tlbi50ZXh0KTsKLSAgICB2YXIgYXJnc0ZuID0gW107Ci0g
ICAgd2hpbGUodHJ1ZSkgewotICAgICAgaWYgKCh0b2tlbiA9IGV4cGVjdCgnOicpKSkgewotICAg
ICAgICBhcmdzRm4ucHVzaChleHByZXNzaW9uKCkpOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAg
dmFyIGZuSW52b2tlID0gZnVuY3Rpb24oc2VsZiwgbG9jYWxzLCBpbnB1dCl7Ci0gICAgICAgICAg
dmFyIGFyZ3MgPSBbaW5wdXRdOwotICAgICAgICAgIGZvciAoIHZhciBpID0gMDsgaSA8IGFyZ3NG
bi5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgYXJncy5wdXNoKGFyZ3NGbltpXShzZWxmLCBs
b2NhbHMpKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgcmV0dXJuIGZuLmFwcGx5KHNlbGYsIGFy
Z3MpOwotICAgICAgICB9OwotICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAg
cmV0dXJuIGZuSW52b2tlOwotICAgICAgICB9OwotICAgICAgfQotICAgIH0KLSAgfQotCi0gIGZ1
bmN0aW9uIGV4cHJlc3Npb24oKSB7Ci0gICAgcmV0dXJuIGFzc2lnbm1lbnQoKTsKLSAgfQotCi0g
IGZ1bmN0aW9uIF9hc3NpZ25tZW50KCkgewotICAgIHZhciBsZWZ0ID0gbG9naWNhbE9SKCk7Ci0g
ICAgdmFyIHJpZ2h0OwotICAgIHZhciB0b2tlbjsKLSAgICBpZiAoKHRva2VuID0gZXhwZWN0KCc9
JykpKSB7Ci0gICAgICBpZiAoIWxlZnQuYXNzaWduKSB7Ci0gICAgICAgIHRocm93RXJyb3IoImlt
cGxpZXMgYXNzaWdubWVudCBidXQgWyIgKwotICAgICAgICAgIHRleHQuc3Vic3RyaW5nKDAsIHRv
a2VuLmluZGV4KSArICJdIGNhbiBub3QgYmUgYXNzaWduZWQgdG8iLCB0b2tlbik7Ci0gICAgICB9
Ci0gICAgICByaWdodCA9IGxvZ2ljYWxPUigpOwotICAgICAgcmV0dXJuIGZ1bmN0aW9uKHNjb3Bl
LCBsb2NhbHMpewotICAgICAgICByZXR1cm4gbGVmdC5hc3NpZ24oc2NvcGUsIHJpZ2h0KHNjb3Bl
LCBsb2NhbHMpLCBsb2NhbHMpOwotICAgICAgfTsKLSAgICB9IGVsc2UgewotICAgICAgcmV0dXJu
IGxlZnQ7Ci0gICAgfQotICB9Ci0KLSAgZnVuY3Rpb24gbG9naWNhbE9SKCkgewotICAgIHZhciBs
ZWZ0ID0gbG9naWNhbEFORCgpOwotICAgIHZhciB0b2tlbjsKLSAgICB3aGlsZSh0cnVlKSB7Ci0g
ICAgICBpZiAoKHRva2VuID0gZXhwZWN0KCd8fCcpKSkgewotICAgICAgICBsZWZ0ID0gYmluYXJ5
Rm4obGVmdCwgdG9rZW4uZm4sIGxvZ2ljYWxBTkQoKSk7Ci0gICAgICB9IGVsc2UgewotICAgICAg
ICByZXR1cm4gbGVmdDsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICBmdW5jdGlvbiBsb2dpY2Fs
QU5EKCkgewotICAgIHZhciBsZWZ0ID0gZXF1YWxpdHkoKTsKLSAgICB2YXIgdG9rZW47Ci0gICAg
aWYgKCh0b2tlbiA9IGV4cGVjdCgnJiYnKSkpIHsKLSAgICAgIGxlZnQgPSBiaW5hcnlGbihsZWZ0
LCB0b2tlbi5mbiwgbG9naWNhbEFORCgpKTsKLSAgICB9Ci0gICAgcmV0dXJuIGxlZnQ7Ci0gIH0K
LQotICBmdW5jdGlvbiBlcXVhbGl0eSgpIHsKLSAgICB2YXIgbGVmdCA9IHJlbGF0aW9uYWwoKTsK
LSAgICB2YXIgdG9rZW47Ci0gICAgaWYgKCh0b2tlbiA9IGV4cGVjdCgnPT0nLCchPScpKSkgewot
ICAgICAgbGVmdCA9IGJpbmFyeUZuKGxlZnQsIHRva2VuLmZuLCBlcXVhbGl0eSgpKTsKLSAgICB9
Ci0gICAgcmV0dXJuIGxlZnQ7Ci0gIH0KLQotICBmdW5jdGlvbiByZWxhdGlvbmFsKCkgewotICAg
IHZhciBsZWZ0ID0gYWRkaXRpdmUoKTsKLSAgICB2YXIgdG9rZW47Ci0gICAgaWYgKCh0b2tlbiA9
IGV4cGVjdCgnPCcsICc+JywgJzw9JywgJz49JykpKSB7Ci0gICAgICBsZWZ0ID0gYmluYXJ5Rm4o
bGVmdCwgdG9rZW4uZm4sIHJlbGF0aW9uYWwoKSk7Ci0gICAgfQotICAgIHJldHVybiBsZWZ0Owot
ICB9Ci0KLSAgZnVuY3Rpb24gYWRkaXRpdmUoKSB7Ci0gICAgdmFyIGxlZnQgPSBtdWx0aXBsaWNh
dGl2ZSgpOwotICAgIHZhciB0b2tlbjsKLSAgICB3aGlsZSAoKHRva2VuID0gZXhwZWN0KCcrJywn
LScpKSkgewotICAgICAgbGVmdCA9IGJpbmFyeUZuKGxlZnQsIHRva2VuLmZuLCBtdWx0aXBsaWNh
dGl2ZSgpKTsKLSAgICB9Ci0gICAgcmV0dXJuIGxlZnQ7Ci0gIH0KLQotICBmdW5jdGlvbiBtdWx0
aXBsaWNhdGl2ZSgpIHsKLSAgICB2YXIgbGVmdCA9IHVuYXJ5KCk7Ci0gICAgdmFyIHRva2VuOwot
ICAgIHdoaWxlICgodG9rZW4gPSBleHBlY3QoJyonLCcvJywnJScpKSkgewotICAgICAgbGVmdCA9
IGJpbmFyeUZuKGxlZnQsIHRva2VuLmZuLCB1bmFyeSgpKTsKLSAgICB9Ci0gICAgcmV0dXJuIGxl
ZnQ7Ci0gIH0KLQotICBmdW5jdGlvbiB1bmFyeSgpIHsKLSAgICB2YXIgdG9rZW47Ci0gICAgaWYg
KGV4cGVjdCgnKycpKSB7Ci0gICAgICByZXR1cm4gcHJpbWFyeSgpOwotICAgIH0gZWxzZSBpZiAo
KHRva2VuID0gZXhwZWN0KCctJykpKSB7Ci0gICAgICByZXR1cm4gYmluYXJ5Rm4oWkVSTywgdG9r
ZW4uZm4sIHVuYXJ5KCkpOwotICAgIH0gZWxzZSBpZiAoKHRva2VuID0gZXhwZWN0KCchJykpKSB7
Ci0gICAgICByZXR1cm4gdW5hcnlGbih0b2tlbi5mbiwgdW5hcnkoKSk7Ci0gICAgfSBlbHNlIHsK
LSAgICAgIHJldHVybiBwcmltYXJ5KCk7Ci0gICAgfQotICB9Ci0KLQotICBmdW5jdGlvbiBwcmlt
YXJ5KCkgewotICAgIHZhciBwcmltYXJ5OwotICAgIGlmIChleHBlY3QoJygnKSkgewotICAgICAg
cHJpbWFyeSA9IGZpbHRlckNoYWluKCk7Ci0gICAgICBjb25zdW1lKCcpJyk7Ci0gICAgfSBlbHNl
IGlmIChleHBlY3QoJ1snKSkgewotICAgICAgcHJpbWFyeSA9IGFycmF5RGVjbGFyYXRpb24oKTsK
LSAgICB9IGVsc2UgaWYgKGV4cGVjdCgneycpKSB7Ci0gICAgICBwcmltYXJ5ID0gb2JqZWN0KCk7
Ci0gICAgfSBlbHNlIHsKLSAgICAgIHZhciB0b2tlbiA9IGV4cGVjdCgpOwotICAgICAgcHJpbWFy
eSA9IHRva2VuLmZuOwotICAgICAgaWYgKCFwcmltYXJ5KSB7Ci0gICAgICAgIHRocm93RXJyb3Io
Im5vdCBhIHByaW1hcnkgZXhwcmVzc2lvbiIsIHRva2VuKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAg
ICB2YXIgbmV4dCwgY29udGV4dDsKLSAgICB3aGlsZSAoKG5leHQgPSBleHBlY3QoJygnLCAnWycs
ICcuJykpKSB7Ci0gICAgICBpZiAobmV4dC50ZXh0ID09PSAnKCcpIHsKLSAgICAgICAgcHJpbWFy
eSA9IGZ1bmN0aW9uQ2FsbChwcmltYXJ5LCBjb250ZXh0KTsKLSAgICAgICAgY29udGV4dCA9IG51
bGw7Ci0gICAgICB9IGVsc2UgaWYgKG5leHQudGV4dCA9PT0gJ1snKSB7Ci0gICAgICAgIGNvbnRl
eHQgPSBwcmltYXJ5OwotICAgICAgICBwcmltYXJ5ID0gb2JqZWN0SW5kZXgocHJpbWFyeSk7Ci0g
ICAgICB9IGVsc2UgaWYgKG5leHQudGV4dCA9PT0gJy4nKSB7Ci0gICAgICAgIGNvbnRleHQgPSBw
cmltYXJ5OwotICAgICAgICBwcmltYXJ5ID0gZmllbGRBY2Nlc3MocHJpbWFyeSk7Ci0gICAgICB9
IGVsc2UgewotICAgICAgICB0aHJvd0Vycm9yKCJJTVBPU1NJQkxFIik7Ci0gICAgICB9Ci0gICAg
fQotICAgIHJldHVybiBwcmltYXJ5OwotICB9Ci0KLSAgZnVuY3Rpb24gX2ZpZWxkQWNjZXNzKG9i
amVjdCkgewotICAgIHZhciBmaWVsZCA9IGV4cGVjdCgpLnRleHQ7Ci0gICAgdmFyIGdldHRlciA9
IGdldHRlckZuKGZpZWxkLCBjc3ApOwotICAgIHJldHVybiBleHRlbmQoCi0gICAgICAgIGZ1bmN0
aW9uKHNjb3BlLCBsb2NhbHMsIHNlbGYpIHsKLSAgICAgICAgICByZXR1cm4gZ2V0dGVyKHNlbGYg
fHwgb2JqZWN0KHNjb3BlLCBsb2NhbHMpLCBsb2NhbHMpOwotICAgICAgICB9LAotICAgICAgICB7
Ci0gICAgICAgICAgYXNzaWduOmZ1bmN0aW9uKHNjb3BlLCB2YWx1ZSwgbG9jYWxzKSB7Ci0gICAg
ICAgICAgICByZXR1cm4gc2V0dGVyKG9iamVjdChzY29wZSwgbG9jYWxzKSwgZmllbGQsIHZhbHVl
KTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICApOwotICB9Ci0KLSAgZnVuY3Rpb24gX29i
amVjdEluZGV4KG9iaikgewotICAgIHZhciBpbmRleEZuID0gZXhwcmVzc2lvbigpOwotICAgIGNv
bnN1bWUoJ10nKTsKLSAgICByZXR1cm4gZXh0ZW5kKAotICAgICAgZnVuY3Rpb24oc2VsZiwgbG9j
YWxzKXsKLSAgICAgICAgdmFyIG8gPSBvYmooc2VsZiwgbG9jYWxzKSwKLSAgICAgICAgICAgIGkg
PSBpbmRleEZuKHNlbGYsIGxvY2FscyksCi0gICAgICAgICAgICB2LCBwOwotCi0gICAgICAgIGlm
ICghbykgcmV0dXJuIHVuZGVmaW5lZDsKLSAgICAgICAgdiA9IG9baV07Ci0gICAgICAgIGlmICh2
ICYmIHYudGhlbikgewotICAgICAgICAgIHAgPSB2OwotICAgICAgICAgIGlmICghKCckJHYnIGlu
IHYpKSB7Ci0gICAgICAgICAgICBwLiQkdiA9IHVuZGVmaW5lZDsKLSAgICAgICAgICAgIHAudGhl
bihmdW5jdGlvbih2YWwpIHsgcC4kJHYgPSB2YWw7IH0pOwotICAgICAgICAgIH0KLSAgICAgICAg
ICB2ID0gdi4kJHY7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHY7Ci0gICAgICB9LCB7Ci0g
ICAgICAgIGFzc2lnbjpmdW5jdGlvbihzZWxmLCB2YWx1ZSwgbG9jYWxzKXsKLSAgICAgICAgICBy
ZXR1cm4gb2JqKHNlbGYsIGxvY2FscylbaW5kZXhGbihzZWxmLCBsb2NhbHMpXSA9IHZhbHVlOwot
ICAgICAgICB9Ci0gICAgICB9KTsKLSAgfQotCi0gIGZ1bmN0aW9uIF9mdW5jdGlvbkNhbGwoZm4s
IGNvbnRleHRHZXR0ZXIpIHsKLSAgICB2YXIgYXJnc0ZuID0gW107Ci0gICAgaWYgKHBlZWtUb2tl
bigpLnRleHQgIT0gJyknKSB7Ci0gICAgICBkbyB7Ci0gICAgICAgIGFyZ3NGbi5wdXNoKGV4cHJl
c3Npb24oKSk7Ci0gICAgICB9IHdoaWxlIChleHBlY3QoJywnKSk7Ci0gICAgfQotICAgIGNvbnN1
bWUoJyknKTsKLSAgICByZXR1cm4gZnVuY3Rpb24oc2NvcGUsIGxvY2Fscyl7Ci0gICAgICB2YXIg
YXJncyA9IFtdLAotICAgICAgICAgIGNvbnRleHQgPSBjb250ZXh0R2V0dGVyID8gY29udGV4dEdl
dHRlcihzY29wZSwgbG9jYWxzKSA6IHNjb3BlOwotCi0gICAgICBmb3IgKCB2YXIgaSA9IDA7IGkg
PCBhcmdzRm4ubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgYXJncy5wdXNoKGFyZ3NGbltpXShzY29w
ZSwgbG9jYWxzKSk7Ci0gICAgICB9Ci0gICAgICB2YXIgZm5QdHIgPSBmbihzY29wZSwgbG9jYWxz
LCBjb250ZXh0KSB8fCBub29wOwotICAgICAgLy8gSUUgc3R1cGlkaXR5IQotICAgICAgcmV0dXJu
IGZuUHRyLmFwcGx5Ci0gICAgICAgICAgPyBmblB0ci5hcHBseShjb250ZXh0LCBhcmdzKQotICAg
ICAgICAgIDogZm5QdHIoYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSwgYXJnc1s0
XSk7Ci0gICAgfTsKLSAgfQotCi0gIC8vIFRoaXMgaXMgdXNlZCB3aXRoIGpzb24gYXJyYXkgZGVj
bGFyYXRpb24KLSAgZnVuY3Rpb24gYXJyYXlEZWNsYXJhdGlvbiAoKSB7Ci0gICAgdmFyIGVsZW1l
bnRGbnMgPSBbXTsKLSAgICBpZiAocGVla1Rva2VuKCkudGV4dCAhPSAnXScpIHsKLSAgICAgIGRv
IHsKLSAgICAgICAgZWxlbWVudEZucy5wdXNoKGV4cHJlc3Npb24oKSk7Ci0gICAgICB9IHdoaWxl
IChleHBlY3QoJywnKSk7Ci0gICAgfQotICAgIGNvbnN1bWUoJ10nKTsKLSAgICByZXR1cm4gZnVu
Y3Rpb24oc2VsZiwgbG9jYWxzKXsKLSAgICAgIHZhciBhcnJheSA9IFtdOwotICAgICAgZm9yICgg
dmFyIGkgPSAwOyBpIDwgZWxlbWVudEZucy5sZW5ndGg7IGkrKykgewotICAgICAgICBhcnJheS5w
dXNoKGVsZW1lbnRGbnNbaV0oc2VsZiwgbG9jYWxzKSk7Ci0gICAgICB9Ci0gICAgICByZXR1cm4g
YXJyYXk7Ci0gICAgfTsKLSAgfQotCi0gIGZ1bmN0aW9uIG9iamVjdCAoKSB7Ci0gICAgdmFyIGtl
eVZhbHVlcyA9IFtdOwotICAgIGlmIChwZWVrVG9rZW4oKS50ZXh0ICE9ICd9JykgewotICAgICAg
ZG8gewotICAgICAgICB2YXIgdG9rZW4gPSBleHBlY3QoKSwKLSAgICAgICAga2V5ID0gdG9rZW4u
c3RyaW5nIHx8IHRva2VuLnRleHQ7Ci0gICAgICAgIGNvbnN1bWUoIjoiKTsKLSAgICAgICAgdmFy
IHZhbHVlID0gZXhwcmVzc2lvbigpOwotICAgICAgICBrZXlWYWx1ZXMucHVzaCh7a2V5OmtleSwg
dmFsdWU6dmFsdWV9KTsKLSAgICAgIH0gd2hpbGUgKGV4cGVjdCgnLCcpKTsKLSAgICB9Ci0gICAg
Y29uc3VtZSgnfScpOwotICAgIHJldHVybiBmdW5jdGlvbihzZWxmLCBsb2NhbHMpewotICAgICAg
dmFyIG9iamVjdCA9IHt9OwotICAgICAgZm9yICggdmFyIGkgPSAwOyBpIDwga2V5VmFsdWVzLmxl
bmd0aDsgaSsrKSB7Ci0gICAgICAgIHZhciBrZXlWYWx1ZSA9IGtleVZhbHVlc1tpXTsKLSAgICAg
ICAgb2JqZWN0W2tleVZhbHVlLmtleV0gPSBrZXlWYWx1ZS52YWx1ZShzZWxmLCBsb2NhbHMpOwot
ICAgICAgfQotICAgICAgcmV0dXJuIG9iamVjdDsKLSAgICB9OwotICB9Ci19Ci0KLS8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyBQYXJzZXIgaGVs
cGVyIGZ1bmN0aW9ucwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8KLQotZnVuY3Rpb24gc2V0dGVyKG9iaiwgcGF0aCwgc2V0VmFsdWUpIHsKLSAgdmFy
IGVsZW1lbnQgPSBwYXRoLnNwbGl0KCcuJyk7Ci0gIGZvciAodmFyIGkgPSAwOyBlbGVtZW50Lmxl
bmd0aCA+IDE7IGkrKykgewotICAgIHZhciBrZXkgPSBlbGVtZW50LnNoaWZ0KCk7Ci0gICAgdmFy
IHByb3BlcnR5T2JqID0gb2JqW2tleV07Ci0gICAgaWYgKCFwcm9wZXJ0eU9iaikgewotICAgICAg
cHJvcGVydHlPYmogPSB7fTsKLSAgICAgIG9ialtrZXldID0gcHJvcGVydHlPYmo7Ci0gICAgfQot
ICAgIG9iaiA9IHByb3BlcnR5T2JqOwotICB9Ci0gIG9ialtlbGVtZW50LnNoaWZ0KCldID0gc2V0
VmFsdWU7Ci0gIHJldHVybiBzZXRWYWx1ZTsKLX0KLQotLyoqCi0gKiBSZXR1cm4gdGhlIHZhbHVl
IGFjY2VzaWJsZSBmcm9tIHRoZSBvYmplY3QgYnkgcGF0aC4gQW55IHVuZGVmaW5lZCB0cmF2ZXJz
YWxzIGFyZSBpZ25vcmVkCi0gKiBAcGFyYW0ge09iamVjdH0gb2JqIHN0YXJ0aW5nIG9iamVjdAot
ICogQHBhcmFtIHtzdHJpbmd9IHBhdGggcGF0aCB0byB0cmF2ZXJzZQotICogQHBhcmFtIHtib29s
ZWFuPXRydWV9IGJpbmRGblRvU2NvcGUKLSAqIEByZXR1cm5zIHZhbHVlIGFzIGFjY2VzYmlsZSBi
eSBwYXRoCi0gKi8KLS8vVE9ETyhtaXNrbyk6IHRoaXMgZnVuY3Rpb24gbmVlZHMgdG8gYmUgcmVt
b3ZlZAotZnVuY3Rpb24gZ2V0dGVyKG9iaiwgcGF0aCwgYmluZEZuVG9TY29wZSkgewotICBpZiAo
IXBhdGgpIHJldHVybiBvYmo7Ci0gIHZhciBrZXlzID0gcGF0aC5zcGxpdCgnLicpOwotICB2YXIg
a2V5OwotICB2YXIgbGFzdEluc3RhbmNlID0gb2JqOwotICB2YXIgbGVuID0ga2V5cy5sZW5ndGg7
Ci0KLSAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgewotICAgIGtleSA9IGtleXNbaV07
Ci0gICAgaWYgKG9iaikgewotICAgICAgb2JqID0gKGxhc3RJbnN0YW5jZSA9IG9iailba2V5XTsK
LSAgICB9Ci0gIH0KLSAgaWYgKCFiaW5kRm5Ub1Njb3BlICYmIGlzRnVuY3Rpb24ob2JqKSkgewot
ICAgIHJldHVybiBiaW5kKGxhc3RJbnN0YW5jZSwgb2JqKTsKLSAgfQotICByZXR1cm4gb2JqOwot
fQotCi12YXIgZ2V0dGVyRm5DYWNoZSA9IHt9OwotCi0vKioKLSAqIEltcGxlbWVudGF0aW9uIG9m
IHRoZSAiQmxhY2sgSG9sZSIgdmFyaWFudCBmcm9tOgotICogLSBodHRwOi8vanNwZXJmLmNvbS9h
bmd1bGFyanMtcGFyc2UtZ2V0dGVyLzQKLSAqIC0gaHR0cDovL2pzcGVyZi5jb20vcGF0aC1ldmFs
dWF0aW9uLXNpbXBsaWZpZWQvNwotICovCi1mdW5jdGlvbiBjc3BTYWZlR2V0dGVyRm4oa2V5MCwg
a2V5MSwga2V5Miwga2V5Mywga2V5NCkgewotICByZXR1cm4gZnVuY3Rpb24oc2NvcGUsIGxvY2Fs
cykgewotICAgIHZhciBwYXRoVmFsID0gKGxvY2FscyAmJiBsb2NhbHMuaGFzT3duUHJvcGVydHko
a2V5MCkpID8gbG9jYWxzIDogc2NvcGUsCi0gICAgICAgIHByb21pc2U7Ci0KLSAgICBpZiAocGF0
aFZhbCA9PT0gbnVsbCB8fCBwYXRoVmFsID09PSB1bmRlZmluZWQpIHJldHVybiBwYXRoVmFsOwot
Ci0gICAgcGF0aFZhbCA9IHBhdGhWYWxba2V5MF07Ci0gICAgaWYgKHBhdGhWYWwgJiYgcGF0aFZh
bC50aGVuKSB7Ci0gICAgICBpZiAoISgiJCR2IiBpbiBwYXRoVmFsKSkgewotICAgICAgICBwcm9t
aXNlID0gcGF0aFZhbDsKLSAgICAgICAgcHJvbWlzZS4kJHYgPSB1bmRlZmluZWQ7Ci0gICAgICAg
IHByb21pc2UudGhlbihmdW5jdGlvbih2YWwpIHsgcHJvbWlzZS4kJHYgPSB2YWw7IH0pOwotICAg
ICAgfQotICAgICAgcGF0aFZhbCA9IHBhdGhWYWwuJCR2OwotICAgIH0KLSAgICBpZiAoIWtleTEg
fHwgcGF0aFZhbCA9PT0gbnVsbCB8fCBwYXRoVmFsID09PSB1bmRlZmluZWQpIHJldHVybiBwYXRo
VmFsOwotCi0gICAgcGF0aFZhbCA9IHBhdGhWYWxba2V5MV07Ci0gICAgaWYgKHBhdGhWYWwgJiYg
cGF0aFZhbC50aGVuKSB7Ci0gICAgICBpZiAoISgiJCR2IiBpbiBwYXRoVmFsKSkgewotICAgICAg
ICBwcm9taXNlID0gcGF0aFZhbDsKLSAgICAgICAgcHJvbWlzZS4kJHYgPSB1bmRlZmluZWQ7Ci0g
ICAgICAgIHByb21pc2UudGhlbihmdW5jdGlvbih2YWwpIHsgcHJvbWlzZS4kJHYgPSB2YWw7IH0p
OwotICAgICAgfQotICAgICAgcGF0aFZhbCA9IHBhdGhWYWwuJCR2OwotICAgIH0KLSAgICBpZiAo
IWtleTIgfHwgcGF0aFZhbCA9PT0gbnVsbCB8fCBwYXRoVmFsID09PSB1bmRlZmluZWQpIHJldHVy
biBwYXRoVmFsOwotCi0gICAgcGF0aFZhbCA9IHBhdGhWYWxba2V5Ml07Ci0gICAgaWYgKHBhdGhW
YWwgJiYgcGF0aFZhbC50aGVuKSB7Ci0gICAgICBpZiAoISgiJCR2IiBpbiBwYXRoVmFsKSkgewot
ICAgICAgICBwcm9taXNlID0gcGF0aFZhbDsKLSAgICAgICAgcHJvbWlzZS4kJHYgPSB1bmRlZmlu
ZWQ7Ci0gICAgICAgIHByb21pc2UudGhlbihmdW5jdGlvbih2YWwpIHsgcHJvbWlzZS4kJHYgPSB2
YWw7IH0pOwotICAgICAgfQotICAgICAgcGF0aFZhbCA9IHBhdGhWYWwuJCR2OwotICAgIH0KLSAg
ICBpZiAoIWtleTMgfHwgcGF0aFZhbCA9PT0gbnVsbCB8fCBwYXRoVmFsID09PSB1bmRlZmluZWQp
IHJldHVybiBwYXRoVmFsOwotCi0gICAgcGF0aFZhbCA9IHBhdGhWYWxba2V5M107Ci0gICAgaWYg
KHBhdGhWYWwgJiYgcGF0aFZhbC50aGVuKSB7Ci0gICAgICBpZiAoISgiJCR2IiBpbiBwYXRoVmFs
KSkgewotICAgICAgICBwcm9taXNlID0gcGF0aFZhbDsKLSAgICAgICAgcHJvbWlzZS4kJHYgPSB1
bmRlZmluZWQ7Ci0gICAgICAgIHByb21pc2UudGhlbihmdW5jdGlvbih2YWwpIHsgcHJvbWlzZS4k
JHYgPSB2YWw7IH0pOwotICAgICAgfQotICAgICAgcGF0aFZhbCA9IHBhdGhWYWwuJCR2OwotICAg
IH0KLSAgICBpZiAoIWtleTQgfHwgcGF0aFZhbCA9PT0gbnVsbCB8fCBwYXRoVmFsID09PSB1bmRl
ZmluZWQpIHJldHVybiBwYXRoVmFsOwotCi0gICAgcGF0aFZhbCA9IHBhdGhWYWxba2V5NF07Ci0g
ICAgaWYgKHBhdGhWYWwgJiYgcGF0aFZhbC50aGVuKSB7Ci0gICAgICBpZiAoISgiJCR2IiBpbiBw
YXRoVmFsKSkgewotICAgICAgICBwcm9taXNlID0gcGF0aFZhbDsKLSAgICAgICAgcHJvbWlzZS4k
JHYgPSB1bmRlZmluZWQ7Ci0gICAgICAgIHByb21pc2UudGhlbihmdW5jdGlvbih2YWwpIHsgcHJv
bWlzZS4kJHYgPSB2YWw7IH0pOwotICAgICAgfQotICAgICAgcGF0aFZhbCA9IHBhdGhWYWwuJCR2
OwotICAgIH0KLSAgICByZXR1cm4gcGF0aFZhbDsKLSAgfTsKLX0KLQotZnVuY3Rpb24gZ2V0dGVy
Rm4ocGF0aCwgY3NwKSB7Ci0gIGlmIChnZXR0ZXJGbkNhY2hlLmhhc093blByb3BlcnR5KHBhdGgp
KSB7Ci0gICAgcmV0dXJuIGdldHRlckZuQ2FjaGVbcGF0aF07Ci0gIH0KLQotICB2YXIgcGF0aEtl
eXMgPSBwYXRoLnNwbGl0KCcuJyksCi0gICAgICBwYXRoS2V5c0xlbmd0aCA9IHBhdGhLZXlzLmxl
bmd0aCwKLSAgICAgIGZuOwotCi0gIGlmIChjc3ApIHsKLSAgICBmbiA9IChwYXRoS2V5c0xlbmd0
aCA8IDYpCi0gICAgICAgID8gY3NwU2FmZUdldHRlckZuKHBhdGhLZXlzWzBdLCBwYXRoS2V5c1sx
XSwgcGF0aEtleXNbMl0sIHBhdGhLZXlzWzNdLCBwYXRoS2V5c1s0XSkKLSAgICAgICAgOiBmdW5j
dGlvbihzY29wZSwgbG9jYWxzKSB7Ci0gICAgICAgICAgdmFyIGkgPSAwLCB2YWw7Ci0gICAgICAg
ICAgZG8gewotICAgICAgICAgICAgdmFsID0gY3NwU2FmZUdldHRlckZuKAotICAgICAgICAgICAg
ICAgICAgICBwYXRoS2V5c1tpKytdLCBwYXRoS2V5c1tpKytdLCBwYXRoS2V5c1tpKytdLCBwYXRo
S2V5c1tpKytdLCBwYXRoS2V5c1tpKytdCi0gICAgICAgICAgICAgICAgICApKHNjb3BlLCBsb2Nh
bHMpOwotCi0gICAgICAgICAgICBsb2NhbHMgPSB1bmRlZmluZWQ7IC8vIGNsZWFyIGFmdGVyIGZp
cnN0IGl0ZXJhdGlvbgotICAgICAgICAgICAgc2NvcGUgPSB2YWw7Ci0gICAgICAgICAgfSB3aGls
ZSAoaSA8IHBhdGhLZXlzTGVuZ3RoKTsKLSAgICAgICAgICByZXR1cm4gdmFsOwotICAgICAgICB9
Ci0gIH0gZWxzZSB7Ci0gICAgdmFyIGNvZGUgPSAndmFyIGwsIGZuLCBwO1xuJzsKLSAgICBmb3JF
YWNoKHBhdGhLZXlzLCBmdW5jdGlvbihrZXksIGluZGV4KSB7Ci0gICAgICBjb2RlICs9ICdpZihz
ID09PSBudWxsIHx8IHMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHM7XG4nICsKLSAgICAgICAgICAg
ICAgJ2w9cztcbicgKwotICAgICAgICAgICAgICAncz0nKyAoaW5kZXgKLSAgICAgICAgICAgICAg
ICAgICAgICAvLyB3ZSBzaW1wbHkgZGVyZWZlcmVuY2UgJ3MnIG9uIGFueSAuZG90IG5vdGF0aW9u
Ci0gICAgICAgICAgICAgICAgICAgICAgPyAncycKLSAgICAgICAgICAgICAgICAgICAgICAvLyBi
dXQgaWYgd2UgYXJlIGZpcnN0IHRoZW4gd2UgY2hlY2sgbG9jYWxzIGZpcnN0LCBhbmQgaWYgc28g
cmVhZCBpdCBmaXJzdAotICAgICAgICAgICAgICAgICAgICAgIDogJygoayYmay5oYXNPd25Qcm9w
ZXJ0eSgiJyArIGtleSArICciKSk/azpzKScpICsgJ1siJyArIGtleSArICciXScgKyAnO1xuJyAr
Ci0gICAgICAgICAgICAgICdpZiAocyAmJiBzLnRoZW4pIHtcbicgKwotICAgICAgICAgICAgICAg
ICcgaWYgKCEoIiQkdiIgaW4gcykpIHtcbicgKwotICAgICAgICAgICAgICAgICAgJyBwPXM7XG4n
ICsKLSAgICAgICAgICAgICAgICAgICcgcC4kJHYgPSB1bmRlZmluZWQ7XG4nICsKLSAgICAgICAg
ICAgICAgICAgICcgcC50aGVuKGZ1bmN0aW9uKHYpIHtwLiQkdj12O30pO1xuJyArCi0gICAgICAg
ICAgICAgICAgICAnfVxuJyArCi0gICAgICAgICAgICAgICAgJyBzPXMuJCR2XG4nICsKLSAgICAg
ICAgICAgICAgJ31cbic7Ci0gICAgfSk7Ci0gICAgY29kZSArPSAncmV0dXJuIHM7JzsKLSAgICBm
biA9IEZ1bmN0aW9uKCdzJywgJ2snLCBjb2RlKTsgLy8gcz1zY29wZSwgaz1sb2NhbHMKLSAgICBm
bi50b1N0cmluZyA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gY29kZTsgfTsKLSAgfQotCi0gIHJldHVy
biBnZXR0ZXJGbkNhY2hlW3BhdGhdID0gZm47Ci19Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vCi0KLS8qKgotICogQG5nZG9jIGZ1bmN0aW9uCi0gKiBAbmFtZSBuZy4kcGFy
c2UKLSAqIEBmdW5jdGlvbgotICoKLSAqIEBkZXNjcmlwdGlvbgotICoKLSAqIENvbnZlcnRzIEFu
Z3VsYXIge0BsaW5rIGd1aWRlL2V4cHJlc3Npb24gZXhwcmVzc2lvbn0gaW50byBhIGZ1bmN0aW9u
LgotICoKLSAqIDxwcmU+Ci0gKiAgIHZhciBnZXR0ZXIgPSAkcGFyc2UoJ3VzZXIubmFtZScpOwot
ICogICB2YXIgc2V0dGVyID0gZ2V0dGVyLmFzc2lnbjsKLSAqICAgdmFyIGNvbnRleHQgPSB7dXNl
cjp7bmFtZTonYW5ndWxhcid9fTsKLSAqICAgdmFyIGxvY2FscyA9IHt1c2VyOntuYW1lOidsb2Nh
bCd9fTsKLSAqCi0gKiAgIGV4cGVjdChnZXR0ZXIoY29udGV4dCkpLnRvRXF1YWwoJ2FuZ3VsYXIn
KTsKLSAqICAgc2V0dGVyKGNvbnRleHQsICduZXdWYWx1ZScpOwotICogICBleHBlY3QoY29udGV4
dC51c2VyLm5hbWUpLnRvRXF1YWwoJ25ld1ZhbHVlJyk7Ci0gKiAgIGV4cGVjdChnZXR0ZXIoY29u
dGV4dCwgbG9jYWxzKSkudG9FcXVhbCgnbG9jYWwnKTsKLSAqIDwvcHJlPgotICoKLSAqCi0gKiBA
cGFyYW0ge3N0cmluZ30gZXhwcmVzc2lvbiBTdHJpbmcgZXhwcmVzc2lvbiB0byBjb21waWxlLgot
ICogQHJldHVybnMge2Z1bmN0aW9uKGNvbnRleHQsIGxvY2Fscyl9IGEgZnVuY3Rpb24gd2hpY2gg
cmVwcmVzZW50cyB0aGUgY29tcGlsZWQgZXhwcmVzc2lvbjoKLSAqCi0gKiAgICAqIGBjb250ZXh0
YCDigJMgYHtvYmplY3R9YCDigJMgYW4gb2JqZWN0IGFnYWluc3Qgd2hpY2ggYW55IGV4cHJlc3Np
b25zIGVtYmVkZGVkIGluIHRoZSBzdHJpbmdzCi0gKiAgICAgIGFyZSBldmFsdWF0ZWQgYWdhaW5z
dCAodGlwaWNhbGx5IGEgc2NvcGUgb2JqZWN0KS4KLSAqICAgICogYGxvY2Fsc2Ag4oCTIGB7b2Jq
ZWN0PX1gIOKAkyBsb2NhbCB2YXJpYWJsZXMgY29udGV4dCBvYmplY3QsIHVzZWZ1bCBmb3Igb3Zl
cnJpZGluZyB2YWx1ZXMgaW4KLSAqICAgICAgYGNvbnRleHRgLgotICoKLSAqICAgIFRoZSByZXR1
cm4gZnVuY3Rpb24gYWxzbyBoYXMgYW4gYGFzc2lnbmAgcHJvcGVydHksIGlmIHRoZSBleHByZXNz
aW9uIGlzIGFzc2lnbmFibGUsIHdoaWNoCi0gKiAgICBhbGxvd3Mgb25lIHRvIHNldCB2YWx1ZXMg
dG8gZXhwcmVzc2lvbnMuCi0gKgotICovCi1mdW5jdGlvbiAkUGFyc2VQcm92aWRlcigpIHsKLSAg
dmFyIGNhY2hlID0ge307Ci0gIHRoaXMuJGdldCA9IFsnJGZpbHRlcicsICckc25pZmZlcicsIGZ1
bmN0aW9uKCRmaWx0ZXIsICRzbmlmZmVyKSB7Ci0gICAgcmV0dXJuIGZ1bmN0aW9uKGV4cCkgewot
ICAgICAgc3dpdGNoKHR5cGVvZiBleHApIHsKLSAgICAgICAgY2FzZSAnc3RyaW5nJzoKLSAgICAg
ICAgICByZXR1cm4gY2FjaGUuaGFzT3duUHJvcGVydHkoZXhwKQotICAgICAgICAgICAgPyBjYWNo
ZVtleHBdCi0gICAgICAgICAgICA6IGNhY2hlW2V4cF0gPSAgcGFyc2VyKGV4cCwgZmFsc2UsICRm
aWx0ZXIsICRzbmlmZmVyLmNzcCk7Ci0gICAgICAgIGNhc2UgJ2Z1bmN0aW9uJzoKLSAgICAgICAg
ICByZXR1cm4gZXhwOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgIHJldHVybiBub29wOwot
ICAgICAgfQotICAgIH07Ci0gIH1dOwotfQotCi0vKioKLSAqIEBuZ2RvYyBzZXJ2aWNlCi0gKiBA
bmFtZSBuZy4kcQotICogQHJlcXVpcmVzICRyb290U2NvcGUKLSAqCi0gKiBAZGVzY3JpcHRpb24K
LSAqIEEgcHJvbWlzZS9kZWZlcnJlZCBpbXBsZW1lbnRhdGlvbiBpbnNwaXJlZCBieSBbS3JpcyBL
b3dhbCdzIFFdKGh0dHBzOi8vZ2l0aHViLmNvbS9rcmlza293YWwvcSkuCi0gKgotICogW1RoZSBD
b21tb25KUyBQcm9taXNlIHByb3Bvc2FsXShodHRwOi8vd2lraS5jb21tb25qcy5vcmcvd2lraS9Q
cm9taXNlcykgZGVzY3JpYmVzIGEgcHJvbWlzZSBhcyBhbgotICogaW50ZXJmYWNlIGZvciBpbnRl
cmFjdGluZyB3aXRoIGFuIG9iamVjdCB0aGF0IHJlcHJlc2VudHMgdGhlIHJlc3VsdCBvZiBhbiBh
Y3Rpb24gdGhhdCBpcwotICogcGVyZm9ybWVkIGFzeW5jaHJvbm91c2x5LCBhbmQgbWF5IG9yIG1h
eSBub3QgYmUgZmluaXNoZWQgYXQgYW55IGdpdmVuIHBvaW50IGluIHRpbWUuCi0gKgotICogRnJv
bSB0aGUgcGVyc3BlY3RpdmUgb2YgZGVhbGluZyB3aXRoIGVycm9yIGhhbmRsaW5nLCBkZWZlcnJl
ZCBhbmQgcHJvbWlzZSBBUElzIGFyZSB0bwotICogYXN5bmNocm9ub3VzIHByb2dyYW1taW5nIHdo
YXQgYHRyeWAsIGBjYXRjaGAgYW5kIGB0aHJvd2Aga2V5d29yZHMgYXJlIHRvIHN5bmNocm9ub3Vz
IHByb2dyYW1taW5nLgotICoKLSAqIDxwcmU+Ci0gKiAgIC8vIGZvciB0aGUgcHVycG9zZSBvZiB0
aGlzIGV4YW1wbGUgbGV0J3MgYXNzdW1lIHRoYXQgdmFyaWFibGVzIGAkcWAgYW5kIGBzY29wZWAg
YXJlCi0gKiAgIC8vIGF2YWlsYWJsZSBpbiB0aGUgY3VycmVudCBsZXhpY2FsIHNjb3BlICh0aGV5
IGNvdWxkIGhhdmUgYmVlbiBpbmplY3RlZCBvciBwYXNzZWQgaW4pLgotICoKLSAqICAgZnVuY3Rp
b24gYXN5bmNHcmVldChuYW1lKSB7Ci0gKiAgICAgdmFyIGRlZmVycmVkID0gJHEuZGVmZXIoKTsK
LSAqCi0gKiAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAqICAgICAgIC8vIHNpbmNlIHRo
aXMgZm4gZXhlY3V0ZXMgYXN5bmMgaW4gYSBmdXR1cmUgdHVybiBvZiB0aGUgZXZlbnQgbG9vcCwg
d2UgbmVlZCB0byB3cmFwCi0gKiAgICAgICAvLyBvdXIgY29kZSBpbnRvIGFuICRhcHBseSBjYWxs
IHNvIHRoYXQgdGhlIG1vZGVsIGNoYW5nZXMgYXJlIHByb3Blcmx5IG9ic2VydmVkLgotICogICAg
ICAgc2NvcGUuJGFwcGx5KGZ1bmN0aW9uKCkgewotICogICAgICAgICBpZiAob2tUb0dyZWV0KG5h
bWUpKSB7Ci0gKiAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSgnSGVsbG8sICcgKyBuYW1lICsg
JyEnKTsKLSAqICAgICAgICAgfSBlbHNlIHsKLSAqICAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qo
J0dyZWV0aW5nICcgKyBuYW1lICsgJyBpcyBub3QgYWxsb3dlZC4nKTsKLSAqICAgICAgICAgfQot
ICogICAgICAgfSk7Ci0gKiAgICAgfSwgMTAwMCk7Ci0gKgotICogICAgIHJldHVybiBkZWZlcnJl
ZC5wcm9taXNlOwotICogICB9Ci0gKgotICogICB2YXIgcHJvbWlzZSA9IGFzeW5jR3JlZXQoJ1Jv
YmluIEhvb2QnKTsKLSAqICAgcHJvbWlzZS50aGVuKGZ1bmN0aW9uKGdyZWV0aW5nKSB7Ci0gKiAg
ICAgYWxlcnQoJ1N1Y2Nlc3M6ICcgKyBncmVldGluZyk7Ci0gKiAgIH0sIGZ1bmN0aW9uKHJlYXNv
bikgewotICogICAgIGFsZXJ0KCdGYWlsZWQ6ICcgKyByZWFzb24pOwotICogICB9KTsKLSAqIDwv
cHJlPgotICoKLSAqIEF0IGZpcnN0IGl0IG1pZ2h0IG5vdCBiZSBvYnZpb3VzIHdoeSB0aGlzIGV4
dHJhIGNvbXBsZXhpdHkgaXMgd29ydGggdGhlIHRyb3VibGUuIFRoZSBwYXlvZmYKLSAqIGNvbWVz
IGluIHRoZSB3YXkgb2YKLSAqIFtndWFyYW50ZWVzIHRoYXQgcHJvbWlzZSBhbmQgZGVmZXJyZWQg
QVBJcyBtYWtlXShodHRwczovL2dpdGh1Yi5jb20va3Jpc2tvd2FsL3VuY29tbW9uanMvYmxvYi9t
YXN0ZXIvcHJvbWlzZXMvc3BlY2lmaWNhdGlvbi5tZCkuCi0gKgotICogQWRkaXRpb25hbGx5IHRo
ZSBwcm9taXNlIGFwaSBhbGxvd3MgZm9yIGNvbXBvc2l0aW9uIHRoYXQgaXMgdmVyeSBoYXJkIHRv
IGRvIHdpdGggdGhlCi0gKiB0cmFkaXRpb25hbCBjYWxsYmFjayAoW0NQU10oaHR0cDovL2VuLndp
a2lwZWRpYS5vcmcvd2lraS9Db250aW51YXRpb24tcGFzc2luZ19zdHlsZSkpIGFwcHJvYWNoLgot
ICogRm9yIG1vcmUgb24gdGhpcyBwbGVhc2Ugc2VlIHRoZSBbUSBkb2N1bWVudGF0aW9uXShodHRw
czovL2dpdGh1Yi5jb20va3Jpc2tvd2FsL3EpIGVzcGVjaWFsbHkgdGhlCi0gKiBzZWN0aW9uIG9u
IHNlcmlhbCBvciBwYXJhbGxlbCBqb2luaW5nIG9mIHByb21pc2VzLgotICoKLSAqCi0gKiAjIFRo
ZSBEZWZlcnJlZCBBUEkKLSAqCi0gKiBBIG5ldyBpbnN0YW5jZSBvZiBkZWZlcnJlZCBpcyBjb25z
dHJ1Y3RlZCBieSBjYWxsaW5nIGAkcS5kZWZlcigpYC4KLSAqCi0gKiBUaGUgcHVycG9zZSBvZiB0
aGUgZGVmZXJyZWQgb2JqZWN0IGlzIHRvIGV4cG9zZSB0aGUgYXNzb2NpYXRlZCBQcm9taXNlIGlu
c3RhbmNlIGFzIHdlbGwgYXMgQVBJcwotICogdGhhdCBjYW4gYmUgdXNlZCBmb3Igc2lnbmFsaW5n
IHRoZSBzdWNjZXNzZnVsIG9yIHVuc3VjY2Vzc2Z1bCBjb21wbGV0aW9uIG9mIHRoZSB0YXNrLgot
ICoKLSAqICoqTWV0aG9kcyoqCi0gKgotICogLSBgcmVzb2x2ZSh2YWx1ZSlgIOKAkyByZXNvbHZl
cyB0aGUgZGVyaXZlZCBwcm9taXNlIHdpdGggdGhlIGB2YWx1ZWAuIElmIHRoZSB2YWx1ZSBpcyBh
IHJlamVjdGlvbgotICogICBjb25zdHJ1Y3RlZCB2aWEgYCRxLnJlamVjdGAsIHRoZSBwcm9taXNl
IHdpbGwgYmUgcmVqZWN0ZWQgaW5zdGVhZC4KLSAqIC0gYHJlamVjdChyZWFzb24pYCDigJMgcmVq
ZWN0cyB0aGUgZGVyaXZlZCBwcm9taXNlIHdpdGggdGhlIGByZWFzb25gLiBUaGlzIGlzIGVxdWl2
YWxlbnQgdG8KLSAqICAgcmVzb2x2aW5nIGl0IHdpdGggYSByZWplY3Rpb24gY29uc3RydWN0ZWQg
dmlhIGAkcS5yZWplY3RgLgotICoKLSAqICoqUHJvcGVydGllcyoqCi0gKgotICogLSBwcm9taXNl
IOKAkyBge1Byb21pc2V9YCDigJMgcHJvbWlzZSBvYmplY3QgYXNzb2NpYXRlZCB3aXRoIHRoaXMg
ZGVmZXJyZWQuCi0gKgotICoKLSAqICMgVGhlIFByb21pc2UgQVBJCi0gKgotICogQSBuZXcgcHJv
bWlzZSBpbnN0YW5jZSBpcyBjcmVhdGVkIHdoZW4gYSBkZWZlcnJlZCBpbnN0YW5jZSBpcyBjcmVh
dGVkIGFuZCBjYW4gYmUgcmV0cmlldmVkIGJ5Ci0gKiBjYWxsaW5nIGBkZWZlcnJlZC5wcm9taXNl
YC4KLSAqCi0gKiBUaGUgcHVycG9zZSBvZiB0aGUgcHJvbWlzZSBvYmplY3QgaXMgdG8gYWxsb3cg
Zm9yIGludGVyZXN0ZWQgcGFydGllcyB0byBnZXQgYWNjZXNzIHRvIHRoZSByZXN1bHQKLSAqIG9m
IHRoZSBkZWZlcnJlZCB0YXNrIHdoZW4gaXQgY29tcGxldGVzLgotICoKLSAqICoqTWV0aG9kcyoq
Ci0gKgotICogLSBgdGhlbihzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spYCDigJMgcmVn
YXJkbGVzcyBvZiB3aGVuIHRoZSBwcm9taXNlIHdhcyBvciB3aWxsIGJlIHJlc29sdmVkCi0gKiAg
IG9yIHJlamVjdGVkIGNhbGxzIG9uZSBvZiB0aGUgc3VjY2VzcyBvciBlcnJvciBjYWxsYmFja3Mg
YXN5bmNocm9ub3VzbHkgYXMgc29vbiBhcyB0aGUgcmVzdWx0Ci0gKiAgIGlzIGF2YWlsYWJsZS4g
VGhlIGNhbGxiYWNrcyBhcmUgY2FsbGVkIHdpdGggYSBzaW5nbGUgYXJndW1lbnQgdGhlIHJlc3Vs
dCBvciByZWplY3Rpb24gcmVhc29uLgotICoKLSAqICAgVGhpcyBtZXRob2QgKnJldHVybnMgYSBu
ZXcgcHJvbWlzZSogd2hpY2ggaXMgcmVzb2x2ZWQgb3IgcmVqZWN0ZWQgdmlhIHRoZSByZXR1cm4g
dmFsdWUgb2YgdGhlCi0gKiAgIGBzdWNjZXNzQ2FsbGJhY2tgIG9yIGBlcnJvckNhbGxiYWNrYC4K
LSAqCi0gKgotICogIyBDaGFpbmluZyBwcm9taXNlcwotICoKLSAqIEJlY2F1c2UgY2FsbGluZyBg
dGhlbmAgYXBpIG9mIGEgcHJvbWlzZSByZXR1cm5zIGEgbmV3IGRlcml2ZWQgcHJvbWlzZSwgaXQg
aXMgZWFzaWx5IHBvc3NpYmxlCi0gKiB0byBjcmVhdGUgYSBjaGFpbiBvZiBwcm9taXNlczoKLSAq
Ci0gKiA8cHJlPgotICogICBwcm9taXNlQiA9IHByb21pc2VBLnRoZW4oZnVuY3Rpb24ocmVzdWx0
KSB7Ci0gKiAgICAgcmV0dXJuIHJlc3VsdCArIDE7Ci0gKiAgIH0pOwotICoKLSAqICAgLy8gcHJv
bWlzZUIgd2lsbCBiZSByZXNvbHZlZCBpbW1lZGlhdGVseSBhZnRlciBwcm9taXNlQSBpcyByZXNv
bHZlZCBhbmQgaXRzIHZhbHVlIHdpbGwgYmUKLSAqICAgLy8gdGhlIHJlc3VsdCBvZiBwcm9taXNl
QSBpbmNyZW1lbnRlZCBieSAxCi0gKiA8L3ByZT4KLSAqCi0gKiBJdCBpcyBwb3NzaWJsZSB0byBj
cmVhdGUgY2hhaW5zIG9mIGFueSBsZW5ndGggYW5kIHNpbmNlIGEgcHJvbWlzZSBjYW4gYmUgcmVz
b2x2ZWQgd2l0aCBhbm90aGVyCi0gKiBwcm9taXNlICh3aGljaCB3aWxsIGRlZmVyIGl0cyByZXNv
bHV0aW9uIGZ1cnRoZXIpLCBpdCBpcyBwb3NzaWJsZSB0byBwYXVzZS9kZWZlciByZXNvbHV0aW9u
IG9mCi0gKiB0aGUgcHJvbWlzZXMgYXQgYW55IHBvaW50IGluIHRoZSBjaGFpbi4gVGhpcyBtYWtl
cyBpdCBwb3NzaWJsZSB0byBpbXBsZW1lbnQgcG93ZXJmdWwgYXBpcyBsaWtlCi0gKiAkaHR0cCdz
IHJlc3BvbnNlIGludGVyY2VwdG9ycy4KLSAqCi0gKgotICogIyBEaWZmZXJlbmNlcyBiZXR3ZWVu
IEtyaXMgS293YWwncyBRIGFuZCAkcQotICoKLSAqICBUaGVyZSBhcmUgdGhyZWUgbWFpbiBkaWZm
ZXJlbmNlczoKLSAqCi0gKiAtICRxIGlzIGludGVncmF0ZWQgd2l0aCB0aGUge0BsaW5rIG5nLiRy
b290U2NvcGUuU2NvcGV9IFNjb3BlIG1vZGVsIG9ic2VydmF0aW9uCi0gKiAgIG1lY2hhbmlzbSBp
biBhbmd1bGFyLCB3aGljaCBtZWFucyBmYXN0ZXIgcHJvcGFnYXRpb24gb2YgcmVzb2x1dGlvbiBv
ciByZWplY3Rpb24gaW50byB5b3VyCi0gKiAgIG1vZGVscyBhbmQgYXZvaWRpbmcgdW5uZWNlc3Nh
cnkgYnJvd3NlciByZXBhaW50cywgd2hpY2ggd291bGQgcmVzdWx0IGluIGZsaWNrZXJpbmcgVUku
Ci0gKiAtICRxIHByb21pc2VzIGFyZSByZWNvZ25pemVkIGJ5IHRoZSB0ZW1wbGF0aW5nIGVuZ2lu
ZSBpbiBhbmd1bGFyLCB3aGljaCBtZWFucyB0aGF0IGluIHRlbXBsYXRlcwotICogICB5b3UgY2Fu
IHRyZWF0IHByb21pc2VzIGF0dGFjaGVkIHRvIGEgc2NvcGUgYXMgaWYgdGhleSB3ZXJlIHRoZSBy
ZXN1bHRpbmcgdmFsdWVzLgotICogLSBRIGhhcyBtYW55IG1vcmUgZmVhdHVyZXMgdGhhbiAkcSwg
YnV0IHRoYXQgY29tZXMgYXQgYSBjb3N0IG9mIGJ5dGVzLiAkcSBpcyB0aW55LCBidXQgY29udGFp
bnMKLSAqICAgYWxsIHRoZSBpbXBvcnRhbnQgZnVuY3Rpb25hbGl0eSBuZWVkZWQgZm9yIGNvbW1v
biBhc3luYyB0YXNrcy4KLSAqIAotICogICMgVGVzdGluZwotICogCi0gKiAgPHByZT4KLSAqICAg
IGl0KCdzaG91bGQgc2ltdWxhdGUgcHJvbWlzZScsIGluamVjdChmdW5jdGlvbigkcSwgJHJvb3RT
Y29wZSkgewotICogICAgICB2YXIgZGVmZXJyZWQgPSAkcS5kZWZlcigpOwotICogICAgICB2YXIg
cHJvbWlzZSA9IGRlZmVycmVkLnByb21pc2U7Ci0gKiAgICAgIHZhciByZXNvbHZlZFZhbHVlOwot
ICogCi0gKiAgICAgIHByb21pc2UudGhlbihmdW5jdGlvbih2YWx1ZSkgeyByZXNvbHZlZFZhbHVl
ID0gdmFsdWU7IH0pOwotICogICAgICBleHBlY3QocmVzb2x2ZWRWYWx1ZSkudG9CZVVuZGVmaW5l
ZCgpOwotICogCi0gKiAgICAgIC8vIFNpbXVsYXRlIHJlc29sdmluZyBvZiBwcm9taXNlCi0gKiAg
ICAgIGRlZmVycmVkLnJlc29sdmUoMTIzKTsKLSAqICAgICAgLy8gTm90ZSB0aGF0IHRoZSAndGhl
bicgZnVuY3Rpb24gZG9lcyBub3QgZ2V0IGNhbGxlZCBzeW5jaHJvbm91c2x5LgotICogICAgICAv
LyBUaGlzIGlzIGJlY2F1c2Ugd2Ugd2FudCB0aGUgcHJvbWlzZSBBUEkgdG8gYWx3YXlzIGJlIGFz
eW5jLCB3aGV0aGVyIG9yIG5vdAotICogICAgICAvLyBpdCBnb3QgY2FsbGVkIHN5bmNocm9ub3Vz
bHkgb3IgYXN5bmNocm9ub3VzbHkuCi0gKiAgICAgIGV4cGVjdChyZXNvbHZlZFZhbHVlKS50b0Jl
VW5kZWZpbmVkKCk7Ci0gKiAKLSAqICAgICAgLy8gUHJvcGFnYXRlIHByb21pc2UgcmVzb2x1dGlv
biB0byAndGhlbicgZnVuY3Rpb25zIHVzaW5nICRhcHBseSgpLgotICogICAgICAkcm9vdFNjb3Bl
LiRhcHBseSgpOwotICogICAgICBleHBlY3QocmVzb2x2ZWRWYWx1ZSkudG9FcXVhbCgxMjMpOwot
ICogICAgfSk7Ci0gKiAgPC9wcmU+Ci0gKi8KLWZ1bmN0aW9uICRRUHJvdmlkZXIoKSB7Ci0KLSAg
dGhpcy4kZ2V0ID0gWyckcm9vdFNjb3BlJywgJyRleGNlcHRpb25IYW5kbGVyJywgZnVuY3Rpb24o
JHJvb3RTY29wZSwgJGV4Y2VwdGlvbkhhbmRsZXIpIHsKLSAgICByZXR1cm4gcUZhY3RvcnkoZnVu
Y3Rpb24oY2FsbGJhY2spIHsKLSAgICAgICRyb290U2NvcGUuJGV2YWxBc3luYyhjYWxsYmFjayk7
Ci0gICAgfSwgJGV4Y2VwdGlvbkhhbmRsZXIpOwotICB9XTsKLX0KLQotCi0vKioKLSAqIENvbnN0
cnVjdHMgYSBwcm9taXNlIG1hbmFnZXIuCi0gKgotICogQHBhcmFtIHtmdW5jdGlvbihmdW5jdGlv
bil9IG5leHRUaWNrIEZ1bmN0aW9uIGZvciBleGVjdXRpbmcgZnVuY3Rpb25zIGluIHRoZSBuZXh0
IHR1cm4uCi0gKiBAcGFyYW0ge2Z1bmN0aW9uKC4uLiopfSBleGNlcHRpb25IYW5kbGVyIEZ1bmN0
aW9uIGludG8gd2hpY2ggdW5leHBlY3RlZCBleGNlcHRpb25zIGFyZSBwYXNzZWQgZm9yCi0gKiAg
ICAgZGVidWdnaW5nIHB1cnBvc2VzLgotICogQHJldHVybnMge29iamVjdH0gUHJvbWlzZSBtYW5h
Z2VyLgotICovCi1mdW5jdGlvbiBxRmFjdG9yeShuZXh0VGljaywgZXhjZXB0aW9uSGFuZGxlcikg
ewotCi0gIC8qKgotICAgKiBAbmdkb2MKLSAgICogQG5hbWUgbmcuJHEjZGVmZXIKLSAgICogQG1l
dGhvZE9mIG5nLiRxCi0gICAqIEBkZXNjcmlwdGlvbgotICAgKiBDcmVhdGVzIGEgYERlZmVycmVk
YCBvYmplY3Qgd2hpY2ggcmVwcmVzZW50cyBhIHRhc2sgd2hpY2ggd2lsbCBmaW5pc2ggaW4gdGhl
IGZ1dHVyZS4KLSAgICoKLSAgICogQHJldHVybnMge0RlZmVycmVkfSBSZXR1cm5zIGEgbmV3IGlu
c3RhbmNlIG9mIGRlZmVycmVkLgotICAgKi8KLSAgdmFyIGRlZmVyID0gZnVuY3Rpb24oKSB7Ci0g
ICAgdmFyIHBlbmRpbmcgPSBbXSwKLSAgICAgICAgdmFsdWUsIGRlZmVycmVkOwotCi0gICAgZGVm
ZXJyZWQgPSB7Ci0KLSAgICAgIHJlc29sdmU6IGZ1bmN0aW9uKHZhbCkgewotICAgICAgICBpZiAo
cGVuZGluZykgewotICAgICAgICAgIHZhciBjYWxsYmFja3MgPSBwZW5kaW5nOwotICAgICAgICAg
IHBlbmRpbmcgPSB1bmRlZmluZWQ7Ci0gICAgICAgICAgdmFsdWUgPSByZWYodmFsKTsKLQotICAg
ICAgICAgIGlmIChjYWxsYmFja3MubGVuZ3RoKSB7Ci0gICAgICAgICAgICBuZXh0VGljayhmdW5j
dGlvbigpIHsKLSAgICAgICAgICAgICAgdmFyIGNhbGxiYWNrOwotICAgICAgICAgICAgICBmb3Ig
KHZhciBpID0gMCwgaWkgPSBjYWxsYmFja3MubGVuZ3RoOyBpIDwgaWk7IGkrKykgewotICAgICAg
ICAgICAgICAgIGNhbGxiYWNrID0gY2FsbGJhY2tzW2ldOwotICAgICAgICAgICAgICAgIHZhbHVl
LnRoZW4oY2FsbGJhY2tbMF0sIGNhbGxiYWNrWzFdKTsKLSAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgfSk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9LAotCi0KLSAgICAgIHJl
amVjdDogZnVuY3Rpb24ocmVhc29uKSB7Ci0gICAgICAgIGRlZmVycmVkLnJlc29sdmUocmVqZWN0
KHJlYXNvbikpOwotICAgICAgfSwKLQotCi0gICAgICBwcm9taXNlOiB7Ci0gICAgICAgIHRoZW46
IGZ1bmN0aW9uKGNhbGxiYWNrLCBlcnJiYWNrKSB7Ci0gICAgICAgICAgdmFyIHJlc3VsdCA9IGRl
ZmVyKCk7Ci0KLSAgICAgICAgICB2YXIgd3JhcHBlZENhbGxiYWNrID0gZnVuY3Rpb24odmFsdWUp
IHsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgIHJlc3VsdC5yZXNvbHZlKChjYWxs
YmFjayB8fCBkZWZhdWx0Q2FsbGJhY2spKHZhbHVlKSk7Ci0gICAgICAgICAgICB9IGNhdGNoKGUp
IHsKLSAgICAgICAgICAgICAgZXhjZXB0aW9uSGFuZGxlcihlKTsKLSAgICAgICAgICAgICAgcmVz
dWx0LnJlamVjdChlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9OwotCi0gICAgICAgICAg
dmFyIHdyYXBwZWRFcnJiYWNrID0gZnVuY3Rpb24ocmVhc29uKSB7Ci0gICAgICAgICAgICB0cnkg
ewotICAgICAgICAgICAgICByZXN1bHQucmVzb2x2ZSgoZXJyYmFjayB8fCBkZWZhdWx0RXJyYmFj
aykocmVhc29uKSk7Ci0gICAgICAgICAgICB9IGNhdGNoKGUpIHsKLSAgICAgICAgICAgICAgZXhj
ZXB0aW9uSGFuZGxlcihlKTsKLSAgICAgICAgICAgICAgcmVzdWx0LnJlamVjdChlKTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICB9OwotCi0gICAgICAgICAgaWYgKHBlbmRpbmcpIHsKLSAgICAg
ICAgICAgIHBlbmRpbmcucHVzaChbd3JhcHBlZENhbGxiYWNrLCB3cmFwcGVkRXJyYmFja10pOwot
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB2YWx1ZS50aGVuKHdyYXBwZWRDYWxsYmFj
aywgd3JhcHBlZEVycmJhY2spOwotICAgICAgICAgIH0KLQotICAgICAgICAgIHJldHVybiByZXN1
bHQucHJvbWlzZTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH07Ci0KLSAgICByZXR1cm4gZGVm
ZXJyZWQ7Ci0gIH07Ci0KLQotICB2YXIgcmVmID0gZnVuY3Rpb24odmFsdWUpIHsKLSAgICBpZiAo
dmFsdWUgJiYgdmFsdWUudGhlbikgcmV0dXJuIHZhbHVlOwotICAgIHJldHVybiB7Ci0gICAgICB0
aGVuOiBmdW5jdGlvbihjYWxsYmFjaykgewotICAgICAgICB2YXIgcmVzdWx0ID0gZGVmZXIoKTsK
LSAgICAgICAgbmV4dFRpY2soZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgcmVzdWx0LnJlc29sdmUo
Y2FsbGJhY2sodmFsdWUpKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHJldHVybiByZXN1bHQucHJv
bWlzZTsKLSAgICAgIH0KLSAgICB9OwotICB9OwotCi0KLSAgLyoqCi0gICAqIEBuZ2RvYwotICAg
KiBAbmFtZSBuZy4kcSNyZWplY3QKLSAgICogQG1ldGhvZE9mIG5nLiRxCi0gICAqIEBkZXNjcmlw
dGlvbgotICAgKiBDcmVhdGVzIGEgcHJvbWlzZSB0aGF0IGlzIHJlc29sdmVkIGFzIHJlamVjdGVk
IHdpdGggdGhlIHNwZWNpZmllZCBgcmVhc29uYC4gVGhpcyBhcGkgc2hvdWxkIGJlCi0gICAqIHVz
ZWQgdG8gZm9yd2FyZCByZWplY3Rpb24gaW4gYSBjaGFpbiBvZiBwcm9taXNlcy4gSWYgeW91IGFy
ZSBkZWFsaW5nIHdpdGggdGhlIGxhc3QgcHJvbWlzZSBpbgotICAgKiBhIHByb21pc2UgY2hhaW4s
IHlvdSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IGl0LgotICAgKgotICAgKiBXaGVuIGNvbXBh
cmluZyBkZWZlcnJlZHMvcHJvbWlzZXMgdG8gdGhlIGZhbWlsaWFyIGJlaGF2aW9yIG9mIHRyeS9j
YXRjaC90aHJvdywgdGhpbmsgb2YKLSAgICogYHJlamVjdGAgYXMgdGhlIGB0aHJvd2Aga2V5d29y
ZCBpbiBKYXZhU2NyaXB0LiBUaGlzIGFsc28gbWVhbnMgdGhhdCBpZiB5b3UgImNhdGNoIiBhbiBl
cnJvciB2aWEKLSAgICogYSBwcm9taXNlIGVycm9yIGNhbGxiYWNrIGFuZCB5b3Ugd2FudCB0byBm
b3J3YXJkIHRoZSBlcnJvciB0byB0aGUgcHJvbWlzZSBkZXJpdmVkIGZyb20gdGhlCi0gICAqIGN1
cnJlbnQgcHJvbWlzZSwgeW91IGhhdmUgdG8gInJldGhyb3ciIHRoZSBlcnJvciBieSByZXR1cm5p
bmcgYSByZWplY3Rpb24gY29uc3RydWN0ZWQgdmlhCi0gICAqIGByZWplY3RgLgotICAgKgotICAg
KiA8cHJlPgotICAgKiAgIHByb21pc2VCID0gcHJvbWlzZUEudGhlbihmdW5jdGlvbihyZXN1bHQp
IHsKLSAgICogICAgIC8vIHN1Y2Nlc3M6IGRvIHNvbWV0aGluZyBhbmQgcmVzb2x2ZSBwcm9taXNl
QgotICAgKiAgICAgLy8gICAgICAgICAgd2l0aCB0aGUgb2xkIG9yIGEgbmV3IHJlc3VsdAotICAg
KiAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICogICB9LCBmdW5jdGlvbihyZWFzb24pIHsKLSAgICog
ICAgIC8vIGVycm9yOiBoYW5kbGUgdGhlIGVycm9yIGlmIHBvc3NpYmxlIGFuZAotICAgKiAgICAg
Ly8gICAgICAgIHJlc29sdmUgcHJvbWlzZUIgd2l0aCBuZXdQcm9taXNlT3JWYWx1ZSwKLSAgICog
ICAgIC8vICAgICAgICBvdGhlcndpc2UgZm9yd2FyZCB0aGUgcmVqZWN0aW9uIHRvIHByb21pc2VC
Ci0gICAqICAgICBpZiAoY2FuSGFuZGxlKHJlYXNvbikpIHsKLSAgICogICAgICAvLyBoYW5kbGUg
dGhlIGVycm9yIGFuZCByZWNvdmVyCi0gICAqICAgICAgcmV0dXJuIG5ld1Byb21pc2VPclZhbHVl
OwotICAgKiAgICAgfQotICAgKiAgICAgcmV0dXJuICRxLnJlamVjdChyZWFzb24pOwotICAgKiAg
IH0pOwotICAgKiA8L3ByZT4KLSAgICoKLSAgICogQHBhcmFtIHsqfSByZWFzb24gQ29uc3RhbnQs
IG1lc3NhZ2UsIGV4Y2VwdGlvbiBvciBhbiBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSByZWplY3Rp
b24gcmVhc29uLgotICAgKiBAcmV0dXJucyB7UHJvbWlzZX0gUmV0dXJucyBhIHByb21pc2UgdGhh
dCB3YXMgYWxyZWFkeSByZXNvbHZlZCBhcyByZWplY3RlZCB3aXRoIHRoZSBgcmVhc29uYC4KLSAg
ICovCi0gIHZhciByZWplY3QgPSBmdW5jdGlvbihyZWFzb24pIHsKLSAgICByZXR1cm4gewotICAg
ICAgdGhlbjogZnVuY3Rpb24oY2FsbGJhY2ssIGVycmJhY2spIHsKLSAgICAgICAgdmFyIHJlc3Vs
dCA9IGRlZmVyKCk7Ci0gICAgICAgIG5leHRUaWNrKGZ1bmN0aW9uKCkgewotICAgICAgICAgIHJl
c3VsdC5yZXNvbHZlKChlcnJiYWNrIHx8IGRlZmF1bHRFcnJiYWNrKShyZWFzb24pKTsKLSAgICAg
ICAgfSk7Ci0gICAgICAgIHJldHVybiByZXN1bHQucHJvbWlzZTsKLSAgICAgIH0KLSAgICB9Owot
ICB9OwotCi0KLSAgLyoqCi0gICAqIEBuZ2RvYwotICAgKiBAbmFtZSBuZy4kcSN3aGVuCi0gICAq
IEBtZXRob2RPZiBuZy4kcQotICAgKiBAZGVzY3JpcHRpb24KLSAgICogV3JhcHMgYW4gb2JqZWN0
IHRoYXQgbWlnaHQgYmUgYSB2YWx1ZSBvciBhICgzcmQgcGFydHkpIHRoZW4tYWJsZSBwcm9taXNl
IGludG8gYSAkcSBwcm9taXNlLgotICAgKiBUaGlzIGlzIHVzZWZ1bCB3aGVuIHlvdSBhcmUgZGVh
bGluZyB3aXRoIGFuIG9iamVjdCB0aGF0IG1pZ2h0IG9yIG1pZ2h0IG5vdCBiZSBhIHByb21pc2Us
IG9yIGlmCi0gICAqIHRoZSBwcm9taXNlIGNvbWVzIGZyb20gYSBzb3VyY2UgdGhhdCBjYW4ndCBi
ZSB0cnVzdGVkLgotICAgKgotICAgKiBAcGFyYW0geyp9IHZhbHVlIFZhbHVlIG9yIGEgcHJvbWlz
ZQotICAgKiBAcmV0dXJucyB7UHJvbWlzZX0gUmV0dXJucyBhIHByb21pc2Ugb2YgdGhlIHBhc3Nl
ZCB2YWx1ZSBvciBwcm9taXNlCi0gICAqLwotICB2YXIgd2hlbiA9IGZ1bmN0aW9uKHZhbHVlLCBj
YWxsYmFjaywgZXJyYmFjaykgewotICAgIHZhciByZXN1bHQgPSBkZWZlcigpLAotICAgICAgICBk
b25lOwotCi0gICAgdmFyIHdyYXBwZWRDYWxsYmFjayA9IGZ1bmN0aW9uKHZhbHVlKSB7Ci0gICAg
ICB0cnkgewotICAgICAgICByZXR1cm4gKGNhbGxiYWNrIHx8IGRlZmF1bHRDYWxsYmFjaykodmFs
dWUpOwotICAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICBleGNlcHRpb25IYW5kbGVyKGUpOwot
ICAgICAgICByZXR1cm4gcmVqZWN0KGUpOwotICAgICAgfQotICAgIH07Ci0KLSAgICB2YXIgd3Jh
cHBlZEVycmJhY2sgPSBmdW5jdGlvbihyZWFzb24pIHsKLSAgICAgIHRyeSB7Ci0gICAgICAgIHJl
dHVybiAoZXJyYmFjayB8fCBkZWZhdWx0RXJyYmFjaykocmVhc29uKTsKLSAgICAgIH0gY2F0Y2gg
KGUpIHsKLSAgICAgICAgZXhjZXB0aW9uSGFuZGxlcihlKTsKLSAgICAgICAgcmV0dXJuIHJlamVj
dChlKTsKLSAgICAgIH0KLSAgICB9OwotCi0gICAgbmV4dFRpY2soZnVuY3Rpb24oKSB7Ci0gICAg
ICByZWYodmFsdWUpLnRoZW4oZnVuY3Rpb24odmFsdWUpIHsKLSAgICAgICAgaWYgKGRvbmUpIHJl
dHVybjsKLSAgICAgICAgZG9uZSA9IHRydWU7Ci0gICAgICAgIHJlc3VsdC5yZXNvbHZlKHJlZih2
YWx1ZSkudGhlbih3cmFwcGVkQ2FsbGJhY2ssIHdyYXBwZWRFcnJiYWNrKSk7Ci0gICAgICB9LCBm
dW5jdGlvbihyZWFzb24pIHsKLSAgICAgICAgaWYgKGRvbmUpIHJldHVybjsKLSAgICAgICAgZG9u
ZSA9IHRydWU7Ci0gICAgICAgIHJlc3VsdC5yZXNvbHZlKHdyYXBwZWRFcnJiYWNrKHJlYXNvbikp
OwotICAgICAgfSk7Ci0gICAgfSk7Ci0KLSAgICByZXR1cm4gcmVzdWx0LnByb21pc2U7Ci0gIH07
Ci0KLQotICBmdW5jdGlvbiBkZWZhdWx0Q2FsbGJhY2sodmFsdWUpIHsKLSAgICByZXR1cm4gdmFs
dWU7Ci0gIH0KLQotCi0gIGZ1bmN0aW9uIGRlZmF1bHRFcnJiYWNrKHJlYXNvbikgewotICAgIHJl
dHVybiByZWplY3QocmVhc29uKTsKLSAgfQotCi0KLSAgLyoqCi0gICAqIEBuZ2RvYwotICAgKiBA
bmFtZSBuZy4kcSNhbGwKLSAgICogQG1ldGhvZE9mIG5nLiRxCi0gICAqIEBkZXNjcmlwdGlvbgot
ICAgKiBDb21iaW5lcyBtdWx0aXBsZSBwcm9taXNlcyBpbnRvIGEgc2luZ2xlIHByb21pc2UgdGhh
dCBpcyByZXNvbHZlZCB3aGVuIGFsbCBvZiB0aGUgaW5wdXQKLSAgICogcHJvbWlzZXMgYXJlIHJl
c29sdmVkLgotICAgKgotICAgKiBAcGFyYW0ge0FycmF5LjxQcm9taXNlPn0gcHJvbWlzZXMgQW4g
YXJyYXkgb2YgcHJvbWlzZXMuCi0gICAqIEByZXR1cm5zIHtQcm9taXNlfSBSZXR1cm5zIGEgc2lu
Z2xlIHByb21pc2UgdGhhdCB3aWxsIGJlIHJlc29sdmVkIHdpdGggYW4gYXJyYXkgb2YgdmFsdWVz
LAotICAgKiAgIGVhY2ggdmFsdWUgY29ycmVzcG9uZGluZyB0byB0aGUgcHJvbWlzZSBhdCB0aGUg
c2FtZSBpbmRleCBpbiB0aGUgYHByb21pc2VzYCBhcnJheS4gSWYgYW55IG9mCi0gICAqICAgdGhl
IHByb21pc2VzIGlzIHJlc29sdmVkIHdpdGggYSByZWplY3Rpb24sIHRoaXMgcmVzdWx0aW5nIHBy
b21pc2Ugd2lsbCBiZSByZXNvbHZlZCB3aXRoIHRoZQotICAgKiAgIHNhbWUgcmVqZWN0aW9uLgot
ICAgKi8KLSAgZnVuY3Rpb24gYWxsKHByb21pc2VzKSB7Ci0gICAgdmFyIGRlZmVycmVkID0gZGVm
ZXIoKSwKLSAgICAgICAgY291bnRlciA9IHByb21pc2VzLmxlbmd0aCwKLSAgICAgICAgcmVzdWx0
cyA9IFtdOwotCi0gICAgaWYgKGNvdW50ZXIpIHsKLSAgICAgIGZvckVhY2gocHJvbWlzZXMsIGZ1
bmN0aW9uKHByb21pc2UsIGluZGV4KSB7Ci0gICAgICAgIHJlZihwcm9taXNlKS50aGVuKGZ1bmN0
aW9uKHZhbHVlKSB7Ci0gICAgICAgICAgaWYgKGluZGV4IGluIHJlc3VsdHMpIHJldHVybjsKLSAg
ICAgICAgICByZXN1bHRzW2luZGV4XSA9IHZhbHVlOwotICAgICAgICAgIGlmICghKC0tY291bnRl
cikpIGRlZmVycmVkLnJlc29sdmUocmVzdWx0cyk7Ci0gICAgICAgIH0sIGZ1bmN0aW9uKHJlYXNv
bikgewotICAgICAgICAgIGlmIChpbmRleCBpbiByZXN1bHRzKSByZXR1cm47Ci0gICAgICAgICAg
ZGVmZXJyZWQucmVqZWN0KHJlYXNvbik7Ci0gICAgICAgIH0pOwotICAgICAgfSk7Ci0gICAgfSBl
bHNlIHsKLSAgICAgIGRlZmVycmVkLnJlc29sdmUocmVzdWx0cyk7Ci0gICAgfQotCi0gICAgcmV0
dXJuIGRlZmVycmVkLnByb21pc2U7Ci0gIH0KLQotICByZXR1cm4gewotICAgIGRlZmVyOiBkZWZl
ciwKLSAgICByZWplY3Q6IHJlamVjdCwKLSAgICB3aGVuOiB3aGVuLAotICAgIGFsbDogYWxsCi0g
IH07Ci19Ci0KLS8qKgotICogQG5nZG9jIG9iamVjdAotICogQG5hbWUgbmcuJHJvdXRlUHJvdmlk
ZXIKLSAqIEBmdW5jdGlvbgotICoKLSAqIEBkZXNjcmlwdGlvbgotICoKLSAqIFVzZWQgZm9yIGNv
bmZpZ3VyaW5nIHJvdXRlcy4gU2VlIHtAbGluayBuZy4kcm91dGUgJHJvdXRlfSBmb3IgYW4gZXhh
bXBsZS4KLSAqLwotZnVuY3Rpb24gJFJvdXRlUHJvdmlkZXIoKXsKLSAgdmFyIHJvdXRlcyA9IHt9
OwotCi0gIC8qKgotICAgKiBAbmdkb2MgbWV0aG9kCi0gICAqIEBuYW1lIG5nLiRyb3V0ZVByb3Zp
ZGVyI3doZW4KLSAgICogQG1ldGhvZE9mIG5nLiRyb3V0ZVByb3ZpZGVyCi0gICAqCi0gICAqIEBw
YXJhbSB7c3RyaW5nfSBwYXRoIFJvdXRlIHBhdGggKG1hdGNoZWQgYWdhaW5zdCBgJGxvY2F0aW9u
LnBhdGhgKS4gSWYgYCRsb2NhdGlvbi5wYXRoYAotICAgKiAgICBjb250YWlucyByZWR1bmRhbnQg
dHJhaWxpbmcgc2xhc2ggb3IgaXMgbWlzc2luZyBvbmUsIHRoZSByb3V0ZSB3aWxsIHN0aWxsIG1h
dGNoIGFuZCB0aGUKLSAgICogICAgYCRsb2NhdGlvbi5wYXRoYCB3aWxsIGJlIHVwZGF0ZWQgdG8g
YWRkIG9yIGRyb3AgdGhlIHRyYWlsaW5nIHNsYXNoIHRvIGV4YWN0bHkgbWF0Y2ggdGhlCi0gICAq
ICAgIHJvdXRlIGRlZmluaXRpb24uCi0gICAqCi0gICAqICAgIGBwYXRoYCBjYW4gY29udGFpbiBu
YW1lZCBncm91cHMgc3RhcnRpbmcgd2l0aCBhIGNvbG9uIChgOm5hbWVgKS4gQWxsIGNoYXJhY3Rl
cnMgdXAgdG8gdGhlCi0gICAqICAgIG5leHQgc2xhc2ggYXJlIG1hdGNoZWQgYW5kIHN0b3JlZCBp
biBgJHJvdXRlUGFyYW1zYCB1bmRlciB0aGUgZ2l2ZW4gYG5hbWVgIHdoZW4gdGhlIHJvdXRlCi0g
ICAqICAgIG1hdGNoZXMuCi0gICAqCi0gICAqIEBwYXJhbSB7T2JqZWN0fSByb3V0ZSBNYXBwaW5n
IGluZm9ybWF0aW9uIHRvIGJlIGFzc2lnbmVkIHRvIGAkcm91dGUuY3VycmVudGAgb24gcm91dGUK
LSAgICogICAgbWF0Y2guCi0gICAqCi0gICAqICAgIE9iamVjdCBwcm9wZXJ0aWVzOgotICAgKgot
ICAgKiAgICAtIGBjb250cm9sbGVyYCDigJMgYHsoc3RyaW5nfGZ1bmN0aW9uKCk9fWAg4oCTIENv
bnRyb2xsZXIgZm4gdGhhdCBzaG91bGQgYmUgYXNzb2NpYXRlZCB3aXRoIG5ld2x5Ci0gICAqICAg
ICAgY3JlYXRlZCBzY29wZSBvciB0aGUgbmFtZSBvZiBhIHtAbGluayBhbmd1bGFyLk1vZHVsZSNj
b250cm9sbGVyIHJlZ2lzdGVyZWQgY29udHJvbGxlcn0KLSAgICogICAgICBpZiBwYXNzZWQgYXMg
YSBzdHJpbmcuCi0gICAqICAgIC0gYHRlbXBsYXRlYCDigJMgYHtzdHJpbmc9fWAg4oCTICBodG1s
IHRlbXBsYXRlIGFzIGEgc3RyaW5nIHRoYXQgc2hvdWxkIGJlIHVzZWQgYnkKLSAgICogICAgICB7
QGxpbmsgbmcuZGlyZWN0aXZlOm5nVmlldyBuZ1ZpZXd9IG9yCi0gICAqICAgICAge0BsaW5rIG5n
LmRpcmVjdGl2ZTpuZ0luY2x1ZGUgbmdJbmNsdWRlfSBkaXJlY3RpdmVzLgotICAgKiAgICAgIHRo
aXMgcHJvcGVydHkgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIGB0ZW1wbGF0ZVVybGAuCi0gICAqICAg
IC0gYHRlbXBsYXRlVXJsYCDigJMgYHtzdHJpbmc9fWAg4oCTIHBhdGggdG8gYW4gaHRtbCB0ZW1w
bGF0ZSB0aGF0IHNob3VsZCBiZSB1c2VkIGJ5Ci0gICAqICAgICAge0BsaW5rIG5nLmRpcmVjdGl2
ZTpuZ1ZpZXcgbmdWaWV3fS4KLSAgICogICAgLSBgcmVzb2x2ZWAgLSBge09iamVjdC48c3RyaW5n
LCBmdW5jdGlvbj49fWAgLSBBbiBvcHRpb25hbCBtYXAgb2YgZGVwZW5kZW5jaWVzIHdoaWNoIHNo
b3VsZAotICAgKiAgICAgIGJlIGluamVjdGVkIGludG8gdGhlIGNvbnRyb2xsZXIuIElmIGFueSBv
ZiB0aGVzZSBkZXBlbmRlbmNpZXMgYXJlIHByb21pc2VzLCB0aGV5IHdpbGwgYmUKLSAgICogICAg
ICByZXNvbHZlZCBhbmQgY29udmVydGVkIHRvIGEgdmFsdWUgYmVmb3JlIHRoZSBjb250cm9sbGVy
IGlzIGluc3RhbnRpYXRlZCBhbmQgdGhlCi0gICAqICAgICAgYCRyb3V0ZUNoYW5nZVN1Y2Nlc3Ng
IGV2ZW50IGlzIGZpcmVkLiBUaGUgbWFwIG9iamVjdCBpczoKLSAgICoKLSAgICogICAgICAtIGBr
ZXlgIOKAkyBge3N0cmluZ31gOiBhIG5hbWUgb2YgYSBkZXBlbmRlbmN5IHRvIGJlIGluamVjdGVk
IGludG8gdGhlIGNvbnRyb2xsZXIuCi0gICAqICAgICAgLSBgZmFjdG9yeWAgLSBge3N0cmluZ3xm
dW5jdGlvbn1gOiBJZiBgc3RyaW5nYCB0aGVuIGl0IGlzIGFuIGFsaWFzIGZvciBhIHNlcnZpY2Uu
Ci0gICAqICAgICAgICBPdGhlcndpc2UgaWYgZnVuY3Rpb24sIHRoZW4gaXQgaXMge0BsaW5rIGFw
aS9BVVRPLiRpbmplY3RvciNpbnZva2UgaW5qZWN0ZWR9Ci0gICAqICAgICAgICBhbmQgdGhlIHJl
dHVybiB2YWx1ZSBpcyB0cmVhdGVkIGFzIHRoZSBkZXBlbmRlbmN5LiBJZiB0aGUgcmVzdWx0IGlz
IGEgcHJvbWlzZSwgaXQgaXMgcmVzb2x2ZWQKLSAgICogICAgICAgIGJlZm9yZSBpdHMgdmFsdWUg
aXMgaW5qZWN0ZWQgaW50byB0aGUgY29udHJvbGxlci4KLSAgICoKLSAgICogICAgLSBgcmVkaXJl
Y3RUb2Ag4oCTIHsoc3RyaW5nfGZ1bmN0aW9uKCkpPX0g4oCTIHZhbHVlIHRvIHVwZGF0ZQotICAg
KiAgICAgIHtAbGluayBuZy4kbG9jYXRpb24gJGxvY2F0aW9ufSBwYXRoIHdpdGggYW5kIHRyaWdn
ZXIgcm91dGUgcmVkaXJlY3Rpb24uCi0gICAqCi0gICAqICAgICAgSWYgYHJlZGlyZWN0VG9gIGlz
IGEgZnVuY3Rpb24sIGl0IHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlIGZvbGxvd2luZyBwYXJhbWV0
ZXJzOgotICAgKgotICAgKiAgICAgIC0gYHtPYmplY3QuPHN0cmluZz59YCAtIHJvdXRlIHBhcmFt
ZXRlcnMgZXh0cmFjdGVkIGZyb20gdGhlIGN1cnJlbnQKLSAgICogICAgICAgIGAkbG9jYXRpb24u
cGF0aCgpYCBieSBhcHBseWluZyB0aGUgY3VycmVudCByb3V0ZSB0ZW1wbGF0ZVVybC4KLSAgICog
ICAgICAtIGB7c3RyaW5nfWAgLSBjdXJyZW50IGAkbG9jYXRpb24ucGF0aCgpYAotICAgKiAgICAg
IC0gYHtPYmplY3R9YCAtIGN1cnJlbnQgYCRsb2NhdGlvbi5zZWFyY2goKWAKLSAgICoKLSAgICog
ICAgICBUaGUgY3VzdG9tIGByZWRpcmVjdFRvYCBmdW5jdGlvbiBpcyBleHBlY3RlZCB0byByZXR1
cm4gYSBzdHJpbmcgd2hpY2ggd2lsbCBiZSB1c2VkCi0gICAqICAgICAgdG8gdXBkYXRlIGAkbG9j
YXRpb24ucGF0aCgpYCBhbmQgYCRsb2NhdGlvbi5zZWFyY2goKWAuCi0gICAqCi0gICAqICAgIC0g
YFtyZWxvYWRPblNlYXJjaD10cnVlXWAgLSB7Ym9vbGVhbj19IC0gcmVsb2FkIHJvdXRlIHdoZW4g
b25seSAkbG9jYXRpb24uc2VhcmNoKCkKLSAgICogICAgY2hhbmdlcy4KLSAgICoKLSAgICogICAg
ICBJZiB0aGUgb3B0aW9uIGlzIHNldCB0byBgZmFsc2VgIGFuZCB1cmwgaW4gdGhlIGJyb3dzZXIg
Y2hhbmdlcywgdGhlbgotICAgKiAgICAgIGAkcm91dGVVcGRhdGVgIGV2ZW50IGlzIGJyb2FkY2Fz
dGVkIG9uIHRoZSByb290IHNjb3BlLgotICAgKgotICAgKiBAcmV0dXJucyB7T2JqZWN0fSBzZWxm
Ci0gICAqCi0gICAqIEBkZXNjcmlwdGlvbgotICAgKiBBZGRzIGEgbmV3IHJvdXRlIGRlZmluaXRp
b24gdG8gdGhlIGAkcm91dGVgIHNlcnZpY2UuCi0gICAqLwotICB0aGlzLndoZW4gPSBmdW5jdGlv
bihwYXRoLCByb3V0ZSkgewotICAgIHJvdXRlc1twYXRoXSA9IGV4dGVuZCh7cmVsb2FkT25TZWFy
Y2g6IHRydWV9LCByb3V0ZSk7Ci0KLSAgICAvLyBjcmVhdGUgcmVkaXJlY3Rpb24gZm9yIHRyYWls
aW5nIHNsYXNoZXMKLSAgICBpZiAocGF0aCkgewotICAgICAgdmFyIHJlZGlyZWN0UGF0aCA9IChw
YXRoW3BhdGgubGVuZ3RoLTFdID09ICcvJykKLSAgICAgICAgICA/IHBhdGguc3Vic3RyKDAsIHBh
dGgubGVuZ3RoLTEpCi0gICAgICAgICAgOiBwYXRoICsnLyc7Ci0KLSAgICAgIHJvdXRlc1tyZWRp
cmVjdFBhdGhdID0ge3JlZGlyZWN0VG86IHBhdGh9OwotICAgIH0KLQotICAgIHJldHVybiB0aGlz
OwotICB9OwotCi0gIC8qKgotICAgKiBAbmdkb2MgbWV0aG9kCi0gICAqIEBuYW1lIG5nLiRyb3V0
ZVByb3ZpZGVyI290aGVyd2lzZQotICAgKiBAbWV0aG9kT2YgbmcuJHJvdXRlUHJvdmlkZXIKLSAg
ICoKLSAgICogQGRlc2NyaXB0aW9uCi0gICAqIFNldHMgcm91dGUgZGVmaW5pdGlvbiB0aGF0IHdp
bGwgYmUgdXNlZCBvbiByb3V0ZSBjaGFuZ2Ugd2hlbiBubyBvdGhlciByb3V0ZSBkZWZpbml0aW9u
Ci0gICAqIGlzIG1hdGNoZWQuCi0gICAqCi0gICAqIEBwYXJhbSB7T2JqZWN0fSBwYXJhbXMgTWFw
cGluZyBpbmZvcm1hdGlvbiB0byBiZSBhc3NpZ25lZCB0byBgJHJvdXRlLmN1cnJlbnRgLgotICAg
KiBAcmV0dXJucyB7T2JqZWN0fSBzZWxmCi0gICAqLwotICB0aGlzLm90aGVyd2lzZSA9IGZ1bmN0
aW9uKHBhcmFtcykgewotICAgIHRoaXMud2hlbihudWxsLCBwYXJhbXMpOwotICAgIHJldHVybiB0
aGlzOwotICB9OwotCi0KLSAgdGhpcy4kZ2V0ID0gWyckcm9vdFNjb3BlJywgJyRsb2NhdGlvbics
ICckcm91dGVQYXJhbXMnLCAnJHEnLCAnJGluamVjdG9yJywgJyRodHRwJywgJyR0ZW1wbGF0ZUNh
Y2hlJywKLSAgICAgIGZ1bmN0aW9uKCAkcm9vdFNjb3BlLCAgICRsb2NhdGlvbiwgICAkcm91dGVQ
YXJhbXMsICAgJHEsICAgJGluamVjdG9yLCAgICRodHRwLCAgICR0ZW1wbGF0ZUNhY2hlKSB7Ci0K
LSAgICAvKioKLSAgICAgKiBAbmdkb2Mgb2JqZWN0Ci0gICAgICogQG5hbWUgbmcuJHJvdXRlCi0g
ICAgICogQHJlcXVpcmVzICRsb2NhdGlvbgotICAgICAqIEByZXF1aXJlcyAkcm91dGVQYXJhbXMK
LSAgICAgKgotICAgICAqIEBwcm9wZXJ0eSB7T2JqZWN0fSBjdXJyZW50IFJlZmVyZW5jZSB0byB0
aGUgY3VycmVudCByb3V0ZSBkZWZpbml0aW9uLgotICAgICAqIFRoZSByb3V0ZSBkZWZpbml0aW9u
IGNvbnRhaW5zOgotICAgICAqCi0gICAgICogICAtIGBjb250cm9sbGVyYDogVGhlIGNvbnRyb2xs
ZXIgY29uc3RydWN0b3IgYXMgZGVmaW5lIGluIHJvdXRlIGRlZmluaXRpb24uCi0gICAgICogICAt
IGBsb2NhbHNgOiBBIG1hcCBvZiBsb2NhbHMgd2hpY2ggaXMgdXNlZCBieSB7QGxpbmsgbmcuJGNv
bnRyb2xsZXIgJGNvbnRyb2xsZXJ9IHNlcnZpY2UgZm9yCi0gICAgICogICAgIGNvbnRyb2xsZXIg
aW5zdGFudGlhdGlvbi4gVGhlIGBsb2NhbHNgIGNvbnRhaW4KLSAgICAgKiAgICAgdGhlIHJlc29s
dmVkIHZhbHVlcyBvZiB0aGUgYHJlc29sdmVgIG1hcC4gQWRkaXRpb25hbGx5IHRoZSBgbG9jYWxz
YCBhbHNvIGNvbnRhaW46Ci0gICAgICoKLSAgICAgKiAgICAgLSBgJHNjb3BlYCAtIFRoZSBjdXJy
ZW50IHJvdXRlIHNjb3BlLgotICAgICAqICAgICAtIGAkdGVtcGxhdGVgIC0gVGhlIGN1cnJlbnQg
cm91dGUgdGVtcGxhdGUgSFRNTC4KLSAgICAgKgotICAgICAqIEBwcm9wZXJ0eSB7QXJyYXkuPE9i
amVjdD59IHJvdXRlcyBBcnJheSBvZiBhbGwgY29uZmlndXJlZCByb3V0ZXMuCi0gICAgICoKLSAg
ICAgKiBAZGVzY3JpcHRpb24KLSAgICAgKiBJcyB1c2VkIGZvciBkZWVwLWxpbmtpbmcgVVJMcyB0
byBjb250cm9sbGVycyBhbmQgdmlld3MgKEhUTUwgcGFydGlhbHMpLgotICAgICAqIEl0IHdhdGNo
ZXMgYCRsb2NhdGlvbi51cmwoKWAgYW5kIHRyaWVzIHRvIG1hcCB0aGUgcGF0aCB0byBhbiBleGlz
dGluZyByb3V0ZSBkZWZpbml0aW9uLgotICAgICAqCi0gICAgICogWW91IGNhbiBkZWZpbmUgcm91
dGVzIHRocm91Z2gge0BsaW5rIG5nLiRyb3V0ZVByb3ZpZGVyICRyb3V0ZVByb3ZpZGVyfSdzIEFQ
SS4KLSAgICAgKgotICAgICAqIFRoZSBgJHJvdXRlYCBzZXJ2aWNlIGlzIHR5cGljYWxseSB1c2Vk
IGluIGNvbmp1bmN0aW9uIHdpdGgge0BsaW5rIG5nLmRpcmVjdGl2ZTpuZ1ZpZXcgbmdWaWV3fQot
ICAgICAqIGRpcmVjdGl2ZSBhbmQgdGhlIHtAbGluayBuZy4kcm91dGVQYXJhbXMgJHJvdXRlUGFy
YW1zfSBzZXJ2aWNlLgotICAgICAqCi0gICAgICogQGV4YW1wbGUKLSAgICAgICBUaGlzIGV4YW1w
bGUgc2hvd3MgaG93IGNoYW5naW5nIHRoZSBVUkwgaGFzaCBjYXVzZXMgdGhlIGAkcm91dGVgIHRv
IG1hdGNoIGEgcm91dGUgYWdhaW5zdCB0aGUKLSAgICAgICBVUkwsIGFuZCB0aGUgYG5nVmlld2Ag
cHVsbHMgaW4gdGhlIHBhcnRpYWwuCi0KLSAgICAgICBOb3RlIHRoYXQgdGhpcyBleGFtcGxlIGlz
IHVzaW5nIHtAbGluayBuZy5kaXJlY3RpdmU6c2NyaXB0IGlubGluZWQgdGVtcGxhdGVzfQotICAg
ICAgIHRvIGdldCBpdCB3b3JraW5nIG9uIGpzZmlkZGxlIGFzIHdlbGwuCi0KLSAgICAgPGV4YW1w
bGUgbW9kdWxlPSJuZ1ZpZXciPgotICAgICAgIDxmaWxlIG5hbWU9ImluZGV4Lmh0bWwiPgotICAg
ICAgICAgPGRpdiBuZy1jb250cm9sbGVyPSJNYWluQ250bCI+Ci0gICAgICAgICAgIENob29zZToK
LSAgICAgICAgICAgPGEgaHJlZj0iQm9vay9Nb2J5Ij5Nb2J5PC9hPiB8Ci0gICAgICAgICAgIDxh
IGhyZWY9IkJvb2svTW9ieS9jaC8xIj5Nb2J5OiBDaDE8L2E+IHwKLSAgICAgICAgICAgPGEgaHJl
Zj0iQm9vay9HYXRzYnkiPkdhdHNieTwvYT4gfAotICAgICAgICAgICA8YSBocmVmPSJCb29rL0dh
dHNieS9jaC80P2tleT12YWx1ZSI+R2F0c2J5OiBDaDQ8L2E+IHwKLSAgICAgICAgICAgPGEgaHJl
Zj0iQm9vay9TY2FybGV0Ij5TY2FybGV0IExldHRlcjwvYT48YnIvPgotCi0gICAgICAgICAgIDxk
aXYgbmctdmlldz48L2Rpdj4KLSAgICAgICAgICAgPGhyIC8+Ci0KLSAgICAgICAgICAgPHByZT4k
bG9jYXRpb24ucGF0aCgpID0ge3skbG9jYXRpb24ucGF0aCgpfX08L3ByZT4KLSAgICAgICAgICAg
PHByZT4kcm91dGUuY3VycmVudC50ZW1wbGF0ZVVybCA9IHt7JHJvdXRlLmN1cnJlbnQudGVtcGxh
dGVVcmx9fTwvcHJlPgotICAgICAgICAgICA8cHJlPiRyb3V0ZS5jdXJyZW50LnBhcmFtcyA9IHt7
JHJvdXRlLmN1cnJlbnQucGFyYW1zfX08L3ByZT4KLSAgICAgICAgICAgPHByZT4kcm91dGUuY3Vy
cmVudC5zY29wZS5uYW1lID0ge3skcm91dGUuY3VycmVudC5zY29wZS5uYW1lfX08L3ByZT4KLSAg
ICAgICAgICAgPHByZT4kcm91dGVQYXJhbXMgPSB7eyRyb3V0ZVBhcmFtc319PC9wcmU+Ci0gICAg
ICAgICA8L2Rpdj4KLSAgICAgICA8L2ZpbGU+Ci0KLSAgICAgICA8ZmlsZSBuYW1lPSJib29rLmh0
bWwiPgotICAgICAgICAgY29udHJvbGxlcjoge3tuYW1lfX08YnIgLz4KLSAgICAgICAgIEJvb2sg
SWQ6IHt7cGFyYW1zLmJvb2tJZH19PGJyIC8+Ci0gICAgICAgPC9maWxlPgotCi0gICAgICAgPGZp
bGUgbmFtZT0iY2hhcHRlci5odG1sIj4KLSAgICAgICAgIGNvbnRyb2xsZXI6IHt7bmFtZX19PGJy
IC8+Ci0gICAgICAgICBCb29rIElkOiB7e3BhcmFtcy5ib29rSWR9fTxiciAvPgotICAgICAgICAg
Q2hhcHRlciBJZDoge3twYXJhbXMuY2hhcHRlcklkfX0KLSAgICAgICA8L2ZpbGU+Ci0KLSAgICAg
ICA8ZmlsZSBuYW1lPSJzY3JpcHQuanMiPgotICAgICAgICAgYW5ndWxhci5tb2R1bGUoJ25nVmll
dycsIFtdLCBmdW5jdGlvbigkcm91dGVQcm92aWRlciwgJGxvY2F0aW9uUHJvdmlkZXIpIHsKLSAg
ICAgICAgICAgJHJvdXRlUHJvdmlkZXIud2hlbignL0Jvb2svOmJvb2tJZCcsIHsKLSAgICAgICAg
ICAgICB0ZW1wbGF0ZVVybDogJ2Jvb2suaHRtbCcsCi0gICAgICAgICAgICAgY29udHJvbGxlcjog
Qm9va0NudGwsCi0gICAgICAgICAgICAgcmVzb2x2ZTogewotICAgICAgICAgICAgICAgLy8gSSB3
aWxsIGNhdXNlIGEgMSBzZWNvbmQgZGVsYXkKLSAgICAgICAgICAgICAgIGRlbGF5OiBmdW5jdGlv
bigkcSwgJHRpbWVvdXQpIHsKLSAgICAgICAgICAgICAgICAgdmFyIGRlbGF5ID0gJHEuZGVmZXIo
KTsKLSAgICAgICAgICAgICAgICAgJHRpbWVvdXQoZGVsYXkucmVzb2x2ZSwgMTAwMCk7Ci0gICAg
ICAgICAgICAgICAgIHJldHVybiBkZWxheS5wcm9taXNlOwotICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICRyb3V0ZVByb3ZpZGVyLndo
ZW4oJy9Cb29rLzpib29rSWQvY2gvOmNoYXB0ZXJJZCcsIHsKLSAgICAgICAgICAgICB0ZW1wbGF0
ZVVybDogJ2NoYXB0ZXIuaHRtbCcsCi0gICAgICAgICAgICAgY29udHJvbGxlcjogQ2hhcHRlckNu
dGwKLSAgICAgICAgICAgfSk7Ci0KLSAgICAgICAgICAgLy8gY29uZmlndXJlIGh0bWw1IHRvIGdl
dCBsaW5rcyB3b3JraW5nIG9uIGpzZmlkZGxlCi0gICAgICAgICAgICRsb2NhdGlvblByb3ZpZGVy
Lmh0bWw1TW9kZSh0cnVlKTsKLSAgICAgICAgIH0pOwotCi0gICAgICAgICBmdW5jdGlvbiBNYWlu
Q250bCgkc2NvcGUsICRyb3V0ZSwgJHJvdXRlUGFyYW1zLCAkbG9jYXRpb24pIHsKLSAgICAgICAg
ICAgJHNjb3BlLiRyb3V0ZSA9ICRyb3V0ZTsKLSAgICAgICAgICAgJHNjb3BlLiRsb2NhdGlvbiA9
ICRsb2NhdGlvbjsKLSAgICAgICAgICAgJHNjb3BlLiRyb3V0ZVBhcmFtcyA9ICRyb3V0ZVBhcmFt
czsKLSAgICAgICAgIH0KLQotICAgICAgICAgZnVuY3Rpb24gQm9va0NudGwoJHNjb3BlLCAkcm91
dGVQYXJhbXMpIHsKLSAgICAgICAgICAgJHNjb3BlLm5hbWUgPSAiQm9va0NudGwiOwotICAgICAg
ICAgICAkc2NvcGUucGFyYW1zID0gJHJvdXRlUGFyYW1zOwotICAgICAgICAgfQotCi0gICAgICAg
ICBmdW5jdGlvbiBDaGFwdGVyQ250bCgkc2NvcGUsICRyb3V0ZVBhcmFtcykgewotICAgICAgICAg
ICAkc2NvcGUubmFtZSA9ICJDaGFwdGVyQ250bCI7Ci0gICAgICAgICAgICRzY29wZS5wYXJhbXMg
PSAkcm91dGVQYXJhbXM7Ci0gICAgICAgICB9Ci0gICAgICAgPC9maWxlPgotCi0gICAgICAgPGZp
bGUgbmFtZT0ic2NlbmFyaW8uanMiPgotICAgICAgICAgaXQoJ3Nob3VsZCBsb2FkIGFuZCBjb21w
aWxlIGNvcnJlY3QgdGVtcGxhdGUnLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgZWxlbWVudCgn
YTpjb250YWlucygiTW9ieTogQ2gxIiknKS5jbGljaygpOwotICAgICAgICAgICB2YXIgY29udGVu
dCA9IGVsZW1lbnQoJy5kb2MtZXhhbXBsZS1saXZlIFtuZy12aWV3XScpLnRleHQoKTsKLSAgICAg
ICAgICAgZXhwZWN0KGNvbnRlbnQpLnRvTWF0Y2goL2NvbnRyb2xsZXJcOiBDaGFwdGVyQ250bC8p
OwotICAgICAgICAgICBleHBlY3QoY29udGVudCkudG9NYXRjaCgvQm9vayBJZFw6IE1vYnkvKTsK
LSAgICAgICAgICAgZXhwZWN0KGNvbnRlbnQpLnRvTWF0Y2goL0NoYXB0ZXIgSWRcOiAxLyk7Ci0K
LSAgICAgICAgICAgZWxlbWVudCgnYTpjb250YWlucygiU2NhcmxldCIpJykuY2xpY2soKTsKLSAg
ICAgICAgICAgc2xlZXAoMik7IC8vIHByb21pc2VzIGFyZSBub3QgcGFydCBvZiBzY2VuYXJpbyB3
YWl0aW5nCi0gICAgICAgICAgIGNvbnRlbnQgPSBlbGVtZW50KCcuZG9jLWV4YW1wbGUtbGl2ZSBb
bmctdmlld10nKS50ZXh0KCk7Ci0gICAgICAgICAgIGV4cGVjdChjb250ZW50KS50b01hdGNoKC9j
b250cm9sbGVyXDogQm9va0NudGwvKTsKLSAgICAgICAgICAgZXhwZWN0KGNvbnRlbnQpLnRvTWF0
Y2goL0Jvb2sgSWRcOiBTY2FybGV0Lyk7Ci0gICAgICAgICB9KTsKLSAgICAgICA8L2ZpbGU+Ci0g
ICAgIDwvZXhhbXBsZT4KLSAgICAgKi8KLQotICAgIC8qKgotICAgICAqIEBuZ2RvYyBldmVudAot
ICAgICAqIEBuYW1lIG5nLiRyb3V0ZSMkcm91dGVDaGFuZ2VTdGFydAotICAgICAqIEBldmVudE9m
IG5nLiRyb3V0ZQotICAgICAqIEBldmVudFR5cGUgYnJvYWRjYXN0IG9uIHJvb3Qgc2NvcGUKLSAg
ICAgKiBAZGVzY3JpcHRpb24KLSAgICAgKiBCcm9hZGNhc3RlZCBiZWZvcmUgYSByb3V0ZSBjaGFu
Z2UuIEF0IHRoaXMgIHBvaW50IHRoZSByb3V0ZSBzZXJ2aWNlcyBzdGFydHMKLSAgICAgKiByZXNv
bHZpbmcgYWxsIG9mIHRoZSBkZXBlbmRlbmNpZXMgbmVlZGVkIGZvciB0aGUgcm91dGUgY2hhbmdl
IHRvIG9jY3Vycy4KLSAgICAgKiBUeXBpY2FsbHkgdGhpcyBpbnZvbHZlcyBmZXRjaGluZyB0aGUg
dmlldyB0ZW1wbGF0ZSBhcyB3ZWxsIGFzIGFueSBkZXBlbmRlbmNpZXMKLSAgICAgKiBkZWZpbmVk
IGluIGByZXNvbHZlYCByb3V0ZSBwcm9wZXJ0eS4gT25jZSAgYWxsIG9mIHRoZSBkZXBlbmRlbmNp
ZXMgYXJlIHJlc29sdmVkCi0gICAgICogYCRyb3V0ZUNoYW5nZVN1Y2Nlc3NgIGlzIGZpcmVkLgot
ICAgICAqCi0gICAgICogQHBhcmFtIHtSb3V0ZX0gbmV4dCBGdXR1cmUgcm91dGUgaW5mb3JtYXRp
b24uCi0gICAgICogQHBhcmFtIHtSb3V0ZX0gY3VycmVudCBDdXJyZW50IHJvdXRlIGluZm9ybWF0
aW9uLgotICAgICAqLwotCi0gICAgLyoqCi0gICAgICogQG5nZG9jIGV2ZW50Ci0gICAgICogQG5h
bWUgbmcuJHJvdXRlIyRyb3V0ZUNoYW5nZVN1Y2Nlc3MKLSAgICAgKiBAZXZlbnRPZiBuZy4kcm91
dGUKLSAgICAgKiBAZXZlbnRUeXBlIGJyb2FkY2FzdCBvbiByb290IHNjb3BlCi0gICAgICogQGRl
c2NyaXB0aW9uCi0gICAgICogQnJvYWRjYXN0ZWQgYWZ0ZXIgYSByb3V0ZSBkZXBlbmRlbmNpZXMg
YXJlIHJlc29sdmVkLgotICAgICAqIHtAbGluayBuZy5kaXJlY3RpdmU6bmdWaWV3IG5nVmlld30g
bGlzdGVucyBmb3IgdGhlIGRpcmVjdGl2ZQotICAgICAqIHRvIGluc3RhbnRpYXRlIHRoZSBjb250
cm9sbGVyIGFuZCByZW5kZXIgdGhlIHZpZXcuCi0gICAgICoKLSAgICAgKiBAcGFyYW0ge09iamVj
dH0gYW5ndWxhckV2ZW50IFN5bnRoZXRpYyBldmVudCBvYmplY3QuCi0gICAgICogQHBhcmFtIHtS
b3V0ZX0gY3VycmVudCBDdXJyZW50IHJvdXRlIGluZm9ybWF0aW9uLgotICAgICAqIEBwYXJhbSB7
Um91dGV8VW5kZWZpbmVkfSBwcmV2aW91cyBQcmV2aW91cyByb3V0ZSBpbmZvcm1hdGlvbiwgb3Ig
dW5kZWZpbmVkIGlmIGN1cnJlbnQgaXMgZmlyc3Qgcm91dGUgZW50ZXJlZC4KLSAgICAgKi8KLQot
ICAgIC8qKgotICAgICAqIEBuZ2RvYyBldmVudAotICAgICAqIEBuYW1lIG5nLiRyb3V0ZSMkcm91
dGVDaGFuZ2VFcnJvcgotICAgICAqIEBldmVudE9mIG5nLiRyb3V0ZQotICAgICAqIEBldmVudFR5
cGUgYnJvYWRjYXN0IG9uIHJvb3Qgc2NvcGUKLSAgICAgKiBAZGVzY3JpcHRpb24KLSAgICAgKiBC
cm9hZGNhc3RlZCBpZiBhbnkgb2YgdGhlIHJlc29sdmUgcHJvbWlzZXMgYXJlIHJlamVjdGVkLgot
ICAgICAqCi0gICAgICogQHBhcmFtIHtSb3V0ZX0gY3VycmVudCBDdXJyZW50IHJvdXRlIGluZm9y
bWF0aW9uLgotICAgICAqIEBwYXJhbSB7Um91dGV9IHByZXZpb3VzIFByZXZpb3VzIHJvdXRlIGlu
Zm9ybWF0aW9uLgotICAgICAqIEBwYXJhbSB7Um91dGV9IHJlamVjdGlvbiBSZWplY3Rpb24gb2Yg
dGhlIHByb21pc2UuIFVzdWFsbHkgdGhlIGVycm9yIG9mIHRoZSBmYWlsZWQgcHJvbWlzZS4KLSAg
ICAgKi8KLQotICAgIC8qKgotICAgICAqIEBuZ2RvYyBldmVudAotICAgICAqIEBuYW1lIG5nLiRy
b3V0ZSMkcm91dGVVcGRhdGUKLSAgICAgKiBAZXZlbnRPZiBuZy4kcm91dGUKLSAgICAgKiBAZXZl
bnRUeXBlIGJyb2FkY2FzdCBvbiByb290IHNjb3BlCi0gICAgICogQGRlc2NyaXB0aW9uCi0gICAg
ICoKLSAgICAgKiBUaGUgYHJlbG9hZE9uU2VhcmNoYCBwcm9wZXJ0eSBoYXMgYmVlbiBzZXQgdG8g
ZmFsc2UsIGFuZCB3ZSBhcmUgcmV1c2luZyB0aGUgc2FtZQotICAgICAqIGluc3RhbmNlIG9mIHRo
ZSBDb250cm9sbGVyLgotICAgICAqLwotCi0gICAgdmFyIGZvcmNlUmVsb2FkID0gZmFsc2UsCi0g
ICAgICAgICRyb3V0ZSA9IHsKLSAgICAgICAgICByb3V0ZXM6IHJvdXRlcywKLQotICAgICAgICAg
IC8qKgotICAgICAgICAgICAqIEBuZ2RvYyBtZXRob2QKLSAgICAgICAgICAgKiBAbmFtZSBuZy4k
cm91dGUjcmVsb2FkCi0gICAgICAgICAgICogQG1ldGhvZE9mIG5nLiRyb3V0ZQotICAgICAgICAg
ICAqCi0gICAgICAgICAgICogQGRlc2NyaXB0aW9uCi0gICAgICAgICAgICogQ2F1c2VzIGAkcm91
dGVgIHNlcnZpY2UgdG8gcmVsb2FkIHRoZSBjdXJyZW50IHJvdXRlIGV2ZW4gaWYKLSAgICAgICAg
ICAgKiB7QGxpbmsgbmcuJGxvY2F0aW9uICRsb2NhdGlvbn0gaGFzbid0IGNoYW5nZWQuCi0gICAg
ICAgICAgICoKLSAgICAgICAgICAgKiBBcyBhIHJlc3VsdCBvZiB0aGF0LCB7QGxpbmsgbmcuZGly
ZWN0aXZlOm5nVmlldyBuZ1ZpZXd9Ci0gICAgICAgICAgICogY3JlYXRlcyBuZXcgc2NvcGUsIHJl
aW5zdGFudGlhdGVzIHRoZSBjb250cm9sbGVyLgotICAgICAgICAgICAqLwotICAgICAgICAgIHJl
bG9hZDogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBmb3JjZVJlbG9hZCA9IHRydWU7Ci0gICAg
ICAgICAgICAkcm9vdFNjb3BlLiRldmFsQXN5bmModXBkYXRlUm91dGUpOwotICAgICAgICAgIH0K
LSAgICAgICAgfTsKLQotICAgICRyb290U2NvcGUuJG9uKCckbG9jYXRpb25DaGFuZ2VTdWNjZXNz
JywgdXBkYXRlUm91dGUpOwotCi0gICAgcmV0dXJuICRyb3V0ZTsKLQotICAgIC8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSAgICAvKioKLSAg
ICAgKiBAcGFyYW0gb24ge3N0cmluZ30gY3VycmVudCB1cmwKLSAgICAgKiBAcGFyYW0gd2hlbiB7
c3RyaW5nfSByb3V0ZSB3aGVuIHRlbXBsYXRlIHRvIG1hdGNoIHRoZSB1cmwgYWdhaW5zdAotICAg
ICAqIEByZXR1cm4gez9PYmplY3R9Ci0gICAgICovCi0gICAgZnVuY3Rpb24gc3dpdGNoUm91dGVN
YXRjaGVyKG9uLCB3aGVuKSB7Ci0gICAgICAvLyBUT0RPKGkpOiB0aGlzIGNvZGUgaXMgY29udm9s
dXRlZCBhbmQgaW5lZmZpY2llbnQsIHdlIHNob3VsZCBjb25zdHJ1Y3QgdGhlIHJvdXRlIG1hdGNo
aW5nCi0gICAgICAvLyAgIHJlZ2V4IG9ubHkgb25jZSBhbmQgdGhlbiByZXVzZSBpdAotCi0gICAg
ICAvLyBFc2NhcGUgcmVnZXhwIHNwZWNpYWwgY2hhcmFjdGVycy4KLSAgICAgIHdoZW4gPSAnXicg
KyB3aGVuLnJlcGxhY2UoL1stXC9cXF4kKis/LigpfFtcXXt9XS9nLCAiXFwkJiIpICsgJyQnOwot
ICAgICAgdmFyIHJlZ2V4ID0gJycsCi0gICAgICAgICAgcGFyYW1zID0gW10sCi0gICAgICAgICAg
ZHN0ID0ge307Ci0KLSAgICAgIHZhciByZSA9IC86KFx3KykvZywKLSAgICAgICAgICBwYXJhbU1h
dGNoLAotICAgICAgICAgIGxhc3RNYXRjaGVkSW5kZXggPSAwOwotCi0gICAgICB3aGlsZSAoKHBh
cmFtTWF0Y2ggPSByZS5leGVjKHdoZW4pKSAhPT0gbnVsbCkgewotICAgICAgICAvLyBGaW5kIGVh
Y2ggOnBhcmFtIGluIGB3aGVuYCBhbmQgcmVwbGFjZSBpdCB3aXRoIGEgY2FwdHVyaW5nIGdyb3Vw
LgotICAgICAgICAvLyBBcHBlbmQgYWxsIG90aGVyIHNlY3Rpb25zIG9mIHdoZW4gdW5jaGFuZ2Vk
LgotICAgICAgICByZWdleCArPSB3aGVuLnNsaWNlKGxhc3RNYXRjaGVkSW5kZXgsIHBhcmFtTWF0
Y2guaW5kZXgpOwotICAgICAgICByZWdleCArPSAnKFteXFwvXSopJzsKLSAgICAgICAgcGFyYW1z
LnB1c2gocGFyYW1NYXRjaFsxXSk7Ci0gICAgICAgIGxhc3RNYXRjaGVkSW5kZXggPSByZS5sYXN0
SW5kZXg7Ci0gICAgICB9Ci0gICAgICAvLyBBcHBlbmQgdHJhaWxpbmcgcGF0aCBwYXJ0LgotICAg
ICAgcmVnZXggKz0gd2hlbi5zdWJzdHIobGFzdE1hdGNoZWRJbmRleCk7Ci0KLSAgICAgIHZhciBt
YXRjaCA9IG9uLm1hdGNoKG5ldyBSZWdFeHAocmVnZXgpKTsKLSAgICAgIGlmIChtYXRjaCkgewot
ICAgICAgICBmb3JFYWNoKHBhcmFtcywgZnVuY3Rpb24obmFtZSwgaW5kZXgpIHsKLSAgICAgICAg
ICBkc3RbbmFtZV0gPSBtYXRjaFtpbmRleCArIDFdOwotICAgICAgICB9KTsKLSAgICAgIH0KLSAg
ICAgIHJldHVybiBtYXRjaCA/IGRzdCA6IG51bGw7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gdXBk
YXRlUm91dGUoKSB7Ci0gICAgICB2YXIgbmV4dCA9IHBhcnNlUm91dGUoKSwKLSAgICAgICAgICBs
YXN0ID0gJHJvdXRlLmN1cnJlbnQ7Ci0KLSAgICAgIGlmIChuZXh0ICYmIGxhc3QgJiYgbmV4dC4k
JHJvdXRlID09PSBsYXN0LiQkcm91dGUKLSAgICAgICAgICAmJiBlcXVhbHMobmV4dC5wYXRoUGFy
YW1zLCBsYXN0LnBhdGhQYXJhbXMpICYmICFuZXh0LnJlbG9hZE9uU2VhcmNoICYmICFmb3JjZVJl
bG9hZCkgewotICAgICAgICBsYXN0LnBhcmFtcyA9IG5leHQucGFyYW1zOwotICAgICAgICBjb3B5
KGxhc3QucGFyYW1zLCAkcm91dGVQYXJhbXMpOwotICAgICAgICAkcm9vdFNjb3BlLiRicm9hZGNh
c3QoJyRyb3V0ZVVwZGF0ZScsIGxhc3QpOwotICAgICAgfSBlbHNlIGlmIChuZXh0IHx8IGxhc3Qp
IHsKLSAgICAgICAgZm9yY2VSZWxvYWQgPSBmYWxzZTsKLSAgICAgICAgJHJvb3RTY29wZS4kYnJv
YWRjYXN0KCckcm91dGVDaGFuZ2VTdGFydCcsIG5leHQsIGxhc3QpOwotICAgICAgICAkcm91dGUu
Y3VycmVudCA9IG5leHQ7Ci0gICAgICAgIGlmIChuZXh0KSB7Ci0gICAgICAgICAgaWYgKG5leHQu
cmVkaXJlY3RUbykgewotICAgICAgICAgICAgaWYgKGlzU3RyaW5nKG5leHQucmVkaXJlY3RUbykp
IHsKLSAgICAgICAgICAgICAgJGxvY2F0aW9uLnBhdGgoaW50ZXJwb2xhdGUobmV4dC5yZWRpcmVj
dFRvLCBuZXh0LnBhcmFtcykpLnNlYXJjaChuZXh0LnBhcmFtcykKLSAgICAgICAgICAgICAgICAg
ICAgICAgLnJlcGxhY2UoKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICRs
b2NhdGlvbi51cmwobmV4dC5yZWRpcmVjdFRvKG5leHQucGF0aFBhcmFtcywgJGxvY2F0aW9uLnBh
dGgoKSwgJGxvY2F0aW9uLnNlYXJjaCgpKSkKLSAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxh
Y2UoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAk
cS53aGVuKG5leHQpLgotICAgICAgICAgIHRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBp
ZiAobmV4dCkgewotICAgICAgICAgICAgICB2YXIga2V5cyA9IFtdLAotICAgICAgICAgICAgICAg
ICAgdmFsdWVzID0gW10sCi0gICAgICAgICAgICAgICAgICB0ZW1wbGF0ZTsKLQotICAgICAgICAg
ICAgICBmb3JFYWNoKG5leHQucmVzb2x2ZSB8fCB7fSwgZnVuY3Rpb24odmFsdWUsIGtleSkgewot
ICAgICAgICAgICAgICAgIGtleXMucHVzaChrZXkpOwotICAgICAgICAgICAgICAgIHZhbHVlcy5w
dXNoKGlzU3RyaW5nKHZhbHVlKSA/ICRpbmplY3Rvci5nZXQodmFsdWUpIDogJGluamVjdG9yLmlu
dm9rZSh2YWx1ZSkpOwotICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgaWYgKGlzRGVm
aW5lZCh0ZW1wbGF0ZSA9IG5leHQudGVtcGxhdGUpKSB7Ci0gICAgICAgICAgICAgIH0gZWxzZSBp
ZiAoaXNEZWZpbmVkKHRlbXBsYXRlID0gbmV4dC50ZW1wbGF0ZVVybCkpIHsKLSAgICAgICAgICAg
ICAgICB0ZW1wbGF0ZSA9ICRodHRwLmdldCh0ZW1wbGF0ZSwge2NhY2hlOiAkdGVtcGxhdGVDYWNo
ZX0pLgotICAgICAgICAgICAgICAgICAgICB0aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7IHJldHVy
biByZXNwb25zZS5kYXRhOyB9KTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICBpZiAo
aXNEZWZpbmVkKHRlbXBsYXRlKSkgewotICAgICAgICAgICAgICAgIGtleXMucHVzaCgnJHRlbXBs
YXRlJyk7Ci0gICAgICAgICAgICAgICAgdmFsdWVzLnB1c2godGVtcGxhdGUpOwotICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgIHJldHVybiAkcS5hbGwodmFsdWVzKS50aGVuKGZ1bmN0aW9u
KHZhbHVlcykgewotICAgICAgICAgICAgICAgIHZhciBsb2NhbHMgPSB7fTsKLSAgICAgICAgICAg
ICAgICBmb3JFYWNoKHZhbHVlcywgZnVuY3Rpb24odmFsdWUsIGluZGV4KSB7Ci0gICAgICAgICAg
ICAgICAgICBsb2NhbHNba2V5c1tpbmRleF1dID0gdmFsdWU7Ci0gICAgICAgICAgICAgICAgfSk7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGxvY2FsczsKLSAgICAgICAgICAgICAgfSk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgfSkuCi0gICAgICAgICAgLy8gYWZ0ZXIgcm91dGUgY2hhbmdl
Ci0gICAgICAgICAgdGhlbihmdW5jdGlvbihsb2NhbHMpIHsKLSAgICAgICAgICAgIGlmIChuZXh0
ID09ICRyb3V0ZS5jdXJyZW50KSB7Ci0gICAgICAgICAgICAgIGlmIChuZXh0KSB7Ci0gICAgICAg
ICAgICAgICAgbmV4dC5sb2NhbHMgPSBsb2NhbHM7Ci0gICAgICAgICAgICAgICAgY29weShuZXh0
LnBhcmFtcywgJHJvdXRlUGFyYW1zKTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAk
cm9vdFNjb3BlLiRicm9hZGNhc3QoJyRyb3V0ZUNoYW5nZVN1Y2Nlc3MnLCBuZXh0LCBsYXN0KTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICB9LCBmdW5jdGlvbihlcnJvcikgewotICAgICAgICAg
ICAgaWYgKG5leHQgPT0gJHJvdXRlLmN1cnJlbnQpIHsKLSAgICAgICAgICAgICAgJHJvb3RTY29w
ZS4kYnJvYWRjYXN0KCckcm91dGVDaGFuZ2VFcnJvcicsIG5leHQsIGxhc3QsIGVycm9yKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICB9KTsKLSAgICAgIH0KLSAgICB9Ci0KLQotICAgIC8qKgot
ICAgICAqIEByZXR1cm5zIHRoZSBjdXJyZW50IGFjdGl2ZSByb3V0ZSwgYnkgbWF0Y2hpbmcgaXQg
YWdhaW5zdCB0aGUgVVJMCi0gICAgICovCi0gICAgZnVuY3Rpb24gcGFyc2VSb3V0ZSgpIHsKLSAg
ICAgIC8vIE1hdGNoIGEgcm91dGUKLSAgICAgIHZhciBwYXJhbXMsIG1hdGNoOwotICAgICAgZm9y
RWFjaChyb3V0ZXMsIGZ1bmN0aW9uKHJvdXRlLCBwYXRoKSB7Ci0gICAgICAgIGlmICghbWF0Y2gg
JiYgKHBhcmFtcyA9IHN3aXRjaFJvdXRlTWF0Y2hlcigkbG9jYXRpb24ucGF0aCgpLCBwYXRoKSkp
IHsKLSAgICAgICAgICBtYXRjaCA9IGluaGVyaXQocm91dGUsIHsKLSAgICAgICAgICAgIHBhcmFt
czogZXh0ZW5kKHt9LCAkbG9jYXRpb24uc2VhcmNoKCksIHBhcmFtcyksCi0gICAgICAgICAgICBw
YXRoUGFyYW1zOiBwYXJhbXN9KTsKLSAgICAgICAgICBtYXRjaC4kJHJvdXRlID0gcm91dGU7Ci0g
ICAgICAgIH0KLSAgICAgIH0pOwotICAgICAgLy8gTm8gcm91dGUgbWF0Y2hlZDsgZmFsbGJhY2sg
dG8gIm90aGVyd2lzZSIgcm91dGUKLSAgICAgIHJldHVybiBtYXRjaCB8fCByb3V0ZXNbbnVsbF0g
JiYgaW5oZXJpdChyb3V0ZXNbbnVsbF0sIHtwYXJhbXM6IHt9LCBwYXRoUGFyYW1zOnt9fSk7Ci0g
ICAgfQotCi0gICAgLyoqCi0gICAgICogQHJldHVybnMgaW50ZXJwb2xhdGlvbiBvZiB0aGUgcmVk
aXJlY3QgcGF0aCB3aXRoIHRoZSBwYXJhbWV0cnMKLSAgICAgKi8KLSAgICBmdW5jdGlvbiBpbnRl
cnBvbGF0ZShzdHJpbmcsIHBhcmFtcykgewotICAgICAgdmFyIHJlc3VsdCA9IFtdOwotICAgICAg
Zm9yRWFjaCgoc3RyaW5nfHwnJykuc3BsaXQoJzonKSwgZnVuY3Rpb24oc2VnbWVudCwgaSkgewot
ICAgICAgICBpZiAoaSA9PSAwKSB7Ci0gICAgICAgICAgcmVzdWx0LnB1c2goc2VnbWVudCk7Ci0g
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgdmFyIHNlZ21lbnRNYXRjaCA9IHNlZ21lbnQubWF0
Y2goLyhcdyspKC4qKS8pOwotICAgICAgICAgIHZhciBrZXkgPSBzZWdtZW50TWF0Y2hbMV07Ci0g
ICAgICAgICAgcmVzdWx0LnB1c2gocGFyYW1zW2tleV0pOwotICAgICAgICAgIHJlc3VsdC5wdXNo
KHNlZ21lbnRNYXRjaFsyXSB8fCAnJyk7Ci0gICAgICAgICAgZGVsZXRlIHBhcmFtc1trZXldOwot
ICAgICAgICB9Ci0gICAgICB9KTsKLSAgICAgIHJldHVybiByZXN1bHQuam9pbignJyk7Ci0gICAg
fQotICB9XTsKLX0KLQotLyoqCi0gKiBAbmdkb2Mgb2JqZWN0Ci0gKiBAbmFtZSBuZy4kcm91dGVQ
YXJhbXMKLSAqIEByZXF1aXJlcyAkcm91dGUKLSAqCi0gKiBAZGVzY3JpcHRpb24KLSAqIEN1cnJl
bnQgc2V0IG9mIHJvdXRlIHBhcmFtZXRlcnMuIFRoZSByb3V0ZSBwYXJhbWV0ZXJzIGFyZSBhIGNv
bWJpbmF0aW9uIG9mIHRoZQotICoge0BsaW5rIG5nLiRsb2NhdGlvbiAkbG9jYXRpb259IGBzZWFy
Y2goKWAsIGFuZCBgcGF0aCgpYC4gVGhlIGBwYXRoYCBwYXJhbWV0ZXJzCi0gKiBhcmUgZXh0cmFj
dGVkIHdoZW4gdGhlIHtAbGluayBuZy4kcm91dGUgJHJvdXRlfSBwYXRoIGlzIG1hdGNoZWQuCi0g
KgotICogSW4gY2FzZSBvZiBwYXJhbWV0ZXIgbmFtZSBjb2xsaXNpb24sIGBwYXRoYCBwYXJhbXMg
dGFrZSBwcmVjZWRlbmNlIG92ZXIgYHNlYXJjaGAgcGFyYW1zLgotICoKLSAqIFRoZSBzZXJ2aWNl
IGd1YXJhbnRlZXMgdGhhdCB0aGUgaWRlbnRpdHkgb2YgdGhlIGAkcm91dGVQYXJhbXNgIG9iamVj
dCB3aWxsIHJlbWFpbiB1bmNoYW5nZWQKLSAqIChidXQgaXRzIHByb3BlcnRpZXMgd2lsbCBsaWtl
bHkgY2hhbmdlKSBldmVuIHdoZW4gYSByb3V0ZSBjaGFuZ2Ugb2NjdXJzLgotICoKLSAqIEBleGFt
cGxlCi0gKiA8cHJlPgotICogIC8vIEdpdmVuOgotICogIC8vIFVSTDogaHR0cDovL3NlcnZlci5j
b20vaW5kZXguaHRtbCMvQ2hhcHRlci8xL1NlY3Rpb24vMj9zZWFyY2g9bW9ieQotICogIC8vIFJv
dXRlOiAvQ2hhcHRlci86Y2hhcHRlcklkL1NlY3Rpb24vOnNlY3Rpb25JZAotICogIC8vCi0gKiAg
Ly8gVGhlbgotICogICRyb3V0ZVBhcmFtcyA9PT4ge2NoYXB0ZXJJZDoxLCBzZWN0aW9uSWQ6Miwg
c2VhcmNoOidtb2J5J30KLSAqIDwvcHJlPgotICovCi1mdW5jdGlvbiAkUm91dGVQYXJhbXNQcm92
aWRlcigpIHsKLSAgdGhpcy4kZ2V0ID0gdmFsdWVGbih7fSk7Ci19Ci0KLS8qKgotICogREVTSUdO
IE5PVEVTCi0gKgotICogVGhlIGRlc2lnbiBkZWNpc2lvbnMgYmVoaW5kIHRoZSBzY29wZSBhcmUg
aGVhdmlseSBmYXZvcmVkIGZvciBzcGVlZCBhbmQgbWVtb3J5IGNvbnN1bXB0aW9uLgotICoKLSAq
IFRoZSB0eXBpY2FsIHVzZSBvZiBzY29wZSBpcyB0byB3YXRjaCB0aGUgZXhwcmVzc2lvbnMsIHdo
aWNoIG1vc3Qgb2YgdGhlIHRpbWUgcmV0dXJuIHRoZSBzYW1lCi0gKiB2YWx1ZSBhcyBsYXN0IHRp
bWUgc28gd2Ugb3B0aW1pemUgdGhlIG9wZXJhdGlvbi4KLSAqCi0gKiBDbG9zdXJlcyBjb25zdHJ1
Y3Rpb24gaXMgZXhwZW5zaXZlIGluIHRlcm1zIG9mIHNwZWVkIGFzIHdlbGwgYXMgbWVtb3J5Ogot
ICogICAtIE5vIGNsb3N1cmVzLCBpbnN0ZWFkIHVzZSBwcm90b3R5cGljYWwgaW5oZXJpdGFuY2Ug
Zm9yIEFQSQotICogICAtIEludGVybmFsIHN0YXRlIG5lZWRzIHRvIGJlIHN0b3JlZCBvbiBzY29w
ZSBkaXJlY3RseSwgd2hpY2ggbWVhbnMgdGhhdCBwcml2YXRlIHN0YXRlIGlzCi0gKiAgICAgZXhw
b3NlZCBhcyAkJF9fX18gcHJvcGVydGllcwotICoKLSAqIExvb3Agb3BlcmF0aW9ucyBhcmUgb3B0
aW1pemVkIGJ5IHVzaW5nIHdoaWxlKGNvdW50LS0pIHsgLi4uIH0KLSAqICAgLSB0aGlzIG1lYW5z
IHRoYXQgaW4gb3JkZXIgdG8ga2VlcCB0aGUgc2FtZSBvcmRlciBvZiBleGVjdXRpb24gYXMgYWRk
aXRpb24gd2UgaGF2ZSB0byBhZGQKLSAqICAgICBpdGVtcyB0byB0aGUgYXJyYXkgYXQgdGhlIGJl
Z2lubmluZyAoc2hpZnQpIGluc3RlYWQgb2YgYXQgdGhlIGVuZCAocHVzaCkKLSAqCi0gKiBDaGls
ZCBzY29wZXMgYXJlIGNyZWF0ZWQgYW5kIHJlbW92ZWQgb2Z0ZW4KLSAqICAgLSBVc2luZyBhbiBh
cnJheSB3b3VsZCBiZSBzbG93IHNpbmNlIGluc2VydHMgaW4gbWlkZGxlIGFyZSBleHBlbnNpdmUg
c28gd2UgdXNlIGxpbmtlZCBsaXN0Ci0gKgotICogVGhlcmUgYXJlIGZldyB3YXRjaGVzIHRoZW4g
YSBsb3Qgb2Ygb2JzZXJ2ZXJzLiBUaGlzIGlzIHdoeSB5b3UgZG9uJ3Qgd2FudCB0aGUgb2JzZXJ2
ZXIgdG8gYmUKLSAqIGltcGxlbWVudGVkIGluIHRoZSBzYW1lIHdheSBhcyB3YXRjaC4gV2F0Y2gg
cmVxdWlyZXMgcmV0dXJuIG9mIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIHdoaWNoCi0gKiBhcmUg
ZXhwZW5zaXZlIHRvIGNvbnN0cnVjdC4KLSAqLwotCi0KLS8qKgotICogQG5nZG9jIG9iamVjdAot
ICogQG5hbWUgbmcuJHJvb3RTY29wZVByb3ZpZGVyCi0gKiBAZGVzY3JpcHRpb24KLSAqCi0gKiBQ
cm92aWRlciBmb3IgdGhlICRyb290U2NvcGUgc2VydmljZS4KLSAqLwotCi0vKioKLSAqIEBuZ2Rv
YyBmdW5jdGlvbgotICogQG5hbWUgbmcuJHJvb3RTY29wZVByb3ZpZGVyI2RpZ2VzdFR0bAotICog
QG1ldGhvZE9mIG5nLiRyb290U2NvcGVQcm92aWRlcgotICogQGRlc2NyaXB0aW9uCi0gKgotICog
U2V0cyB0aGUgbnVtYmVyIG9mIGRpZ2VzdCBpdGVyYXRpb25zIHRoZSBzY29wZSBzaG91bGQgYXR0
ZW1wdCB0byBleGVjdXRlIGJlZm9yZSBnaXZpbmcgdXAgYW5kCi0gKiBhc3N1bWluZyB0aGF0IHRo
ZSBtb2RlbCBpcyB1bnN0YWJsZS4KLSAqCi0gKiBUaGUgY3VycmVudCBkZWZhdWx0IGlzIDEwIGl0
ZXJhdGlvbnMuCi0gKgotICogQHBhcmFtIHtudW1iZXJ9IGxpbWl0IFRoZSBudW1iZXIgb2YgZGln
ZXN0IGl0ZXJhdGlvbnMuCi0gKi8KLQotCi0vKioKLSAqIEBuZ2RvYyBvYmplY3QKLSAqIEBuYW1l
IG5nLiRyb290U2NvcGUKLSAqIEBkZXNjcmlwdGlvbgotICoKLSAqIEV2ZXJ5IGFwcGxpY2F0aW9u
IGhhcyBhIHNpbmdsZSByb290IHtAbGluayBuZy4kcm9vdFNjb3BlLlNjb3BlIHNjb3BlfS4KLSAq
IEFsbCBvdGhlciBzY29wZXMgYXJlIGNoaWxkIHNjb3BlcyBvZiB0aGUgcm9vdCBzY29wZS4gU2Nv
cGVzIHByb3ZpZGUgbWVjaGFuaXNtIGZvciB3YXRjaGluZyB0aGUgbW9kZWwgYW5kIHByb3ZpZGUK
LSAqIGV2ZW50IHByb2Nlc3NpbmcgbGlmZS1jeWNsZS4gU2VlIHtAbGluayBndWlkZS9zY29wZSBk
ZXZlbG9wZXIgZ3VpZGUgb24gc2NvcGVzfS4KLSAqLwotZnVuY3Rpb24gJFJvb3RTY29wZVByb3Zp
ZGVyKCl7Ci0gIHZhciBUVEwgPSAxMDsKLQotICB0aGlzLmRpZ2VzdFR0bCA9IGZ1bmN0aW9uKHZh
bHVlKSB7Ci0gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGgpIHsKLSAgICAgIFRUTCA9IHZhbHVlOwot
ICAgIH0KLSAgICByZXR1cm4gVFRMOwotICB9OwotCi0gIHRoaXMuJGdldCA9IFsnJGluamVjdG9y
JywgJyRleGNlcHRpb25IYW5kbGVyJywgJyRwYXJzZScsCi0gICAgICBmdW5jdGlvbiggJGluamVj
dG9yLCAgICRleGNlcHRpb25IYW5kbGVyLCAgICRwYXJzZSkgewotCi0gICAgLyoqCi0gICAgICog
QG5nZG9jIGZ1bmN0aW9uCi0gICAgICogQG5hbWUgbmcuJHJvb3RTY29wZS5TY29wZQotICAgICAq
Ci0gICAgICogQGRlc2NyaXB0aW9uCi0gICAgICogQSByb290IHNjb3BlIGNhbiBiZSByZXRyaWV2
ZWQgdXNpbmcgdGhlIHtAbGluayBuZy4kcm9vdFNjb3BlICRyb290U2NvcGV9IGtleSBmcm9tIHRo
ZQotICAgICAqIHtAbGluayBBVVRPLiRpbmplY3RvciAkaW5qZWN0b3J9LiBDaGlsZCBzY29wZXMg
YXJlIGNyZWF0ZWQgdXNpbmcgdGhlCi0gICAgICoge0BsaW5rIG5nLiRyb290U2NvcGUuU2NvcGUj
JG5ldyAkbmV3KCl9IG1ldGhvZC4gKE1vc3Qgc2NvcGVzIGFyZSBjcmVhdGVkIGF1dG9tYXRpY2Fs
bHkgd2hlbgotICAgICAqIGNvbXBpbGVkIEhUTUwgdGVtcGxhdGUgaXMgZXhlY3V0ZWQuKQotICAg
ICAqCi0gICAgICogSGVyZSBpcyBhIHNpbXBsZSBzY29wZSBzbmlwcGV0IHRvIHNob3cgaG93IHlv
dSBjYW4gaW50ZXJhY3Qgd2l0aCB0aGUgc2NvcGUuCi0gICAgICogPHByZT4KLSAgICAgICAgYW5n
dWxhci5pbmplY3RvcihbJ25nJ10pLmludm9rZShmdW5jdGlvbigkcm9vdFNjb3BlKSB7Ci0gICAg
ICAgICAgIHZhciBzY29wZSA9ICRyb290U2NvcGUuJG5ldygpOwotICAgICAgICAgICBzY29wZS5z
YWx1dGF0aW9uID0gJ0hlbGxvJzsKLSAgICAgICAgICAgc2NvcGUubmFtZSA9ICdXb3JsZCc7Ci0K
LSAgICAgICAgICAgZXhwZWN0KHNjb3BlLmdyZWV0aW5nKS50b0VxdWFsKHVuZGVmaW5lZCk7Ci0K
LSAgICAgICAgICAgc2NvcGUuJHdhdGNoKCduYW1lJywgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAg
ICAgc2NvcGUuZ3JlZXRpbmcgPSBzY29wZS5zYWx1dGF0aW9uICsgJyAnICsgc2NvcGUubmFtZSAr
ICchJzsKLSAgICAgICAgICAgfSk7IC8vIGluaXRpYWxpemUgdGhlIHdhdGNoCi0KLSAgICAgICAg
ICAgZXhwZWN0KHNjb3BlLmdyZWV0aW5nKS50b0VxdWFsKHVuZGVmaW5lZCk7Ci0gICAgICAgICAg
IHNjb3BlLm5hbWUgPSAnTWlza28nOwotICAgICAgICAgICAvLyBzdGlsbCBvbGQgdmFsdWUsIHNp
bmNlIHdhdGNoZXMgaGF2ZSBub3QgYmVlbiBjYWxsZWQgeWV0Ci0gICAgICAgICAgIGV4cGVjdChz
Y29wZS5ncmVldGluZykudG9FcXVhbCh1bmRlZmluZWQpOwotCi0gICAgICAgICAgIHNjb3BlLiRk
aWdlc3QoKTsgLy8gZmlyZSBhbGwgIHRoZSB3YXRjaGVzCi0gICAgICAgICAgIGV4cGVjdChzY29w
ZS5ncmVldGluZykudG9FcXVhbCgnSGVsbG8gTWlza28hJyk7Ci0gICAgICAgIH0pOwotICAgICAq
IDwvcHJlPgotICAgICAqCi0gICAgICogIyBJbmhlcml0YW5jZQotICAgICAqIEEgc2NvcGUgY2Fu
IGluaGVyaXQgZnJvbSBhIHBhcmVudCBzY29wZSwgYXMgaW4gdGhpcyBleGFtcGxlOgotICAgICAq
IDxwcmU+Ci0gICAgICAgICB2YXIgcGFyZW50ID0gJHJvb3RTY29wZTsKLSAgICAgICAgIHZhciBj
aGlsZCA9IHBhcmVudC4kbmV3KCk7Ci0KLSAgICAgICAgIHBhcmVudC5zYWx1dGF0aW9uID0gIkhl
bGxvIjsKLSAgICAgICAgIGNoaWxkLm5hbWUgPSAiV29ybGQiOwotICAgICAgICAgZXhwZWN0KGNo
aWxkLnNhbHV0YXRpb24pLnRvRXF1YWwoJ0hlbGxvJyk7Ci0KLSAgICAgICAgIGNoaWxkLnNhbHV0
YXRpb24gPSAiV2VsY29tZSI7Ci0gICAgICAgICBleHBlY3QoY2hpbGQuc2FsdXRhdGlvbikudG9F
cXVhbCgnV2VsY29tZScpOwotICAgICAgICAgZXhwZWN0KHBhcmVudC5zYWx1dGF0aW9uKS50b0Vx
dWFsKCdIZWxsbycpOwotICAgICAqIDwvcHJlPgotICAgICAqCi0gICAgICoKLSAgICAgKiBAcGFy
YW0ge09iamVjdC48c3RyaW5nLCBmdW5jdGlvbigpPj19IHByb3ZpZGVycyBNYXAgb2Ygc2Vydmlj
ZSBmYWN0b3J5IHdoaWNoIG5lZWQgdG8gYmUgcHJvdmlkZWQKLSAgICAgKiAgICAgZm9yIHRoZSBj
dXJyZW50IHNjb3BlLiBEZWZhdWx0cyB0byB7QGxpbmsgbmd9LgotICAgICAqIEBwYXJhbSB7T2Jq
ZWN0LjxzdHJpbmcsICo+PX0gaW5zdGFuY2VDYWNoZSBQcm92aWRlcyBwcmUtaW5zdGFudGlhdGVk
IHNlcnZpY2VzIHdoaWNoIHNob3VsZAotICAgICAqICAgICBhcHBlbmQvb3ZlcnJpZGUgc2Vydmlj
ZXMgcHJvdmlkZWQgYnkgYHByb3ZpZGVyc2AuIFRoaXMgaXMgaGFuZHkgd2hlbiB1bml0LXRlc3Rp
bmcgYW5kIGhhdmluZwotICAgICAqICAgICB0aGUgbmVlZCB0byBvdmVycmlkZSBhIGRlZmF1bHQg
c2VydmljZS4KLSAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBOZXdseSBjcmVhdGVkIHNjb3BlLgot
ICAgICAqCi0gICAgICovCi0gICAgZnVuY3Rpb24gU2NvcGUoKSB7Ci0gICAgICB0aGlzLiRpZCA9
IG5leHRVaWQoKTsKLSAgICAgIHRoaXMuJCRwaGFzZSA9IHRoaXMuJHBhcmVudCA9IHRoaXMuJCR3
YXRjaGVycyA9Ci0gICAgICAgICAgICAgICAgICAgICB0aGlzLiQkbmV4dFNpYmxpbmcgPSB0aGlz
LiQkcHJldlNpYmxpbmcgPQotICAgICAgICAgICAgICAgICAgICAgdGhpcy4kJGNoaWxkSGVhZCA9
IHRoaXMuJCRjaGlsZFRhaWwgPSBudWxsOwotICAgICAgdGhpc1sndGhpcyddID0gdGhpcy4kcm9v
dCA9ICB0aGlzOwotICAgICAgdGhpcy4kJGRlc3Ryb3llZCA9IGZhbHNlOwotICAgICAgdGhpcy4k
JGFzeW5jUXVldWUgPSBbXTsKLSAgICAgIHRoaXMuJCRsaXN0ZW5lcnMgPSB7fTsKLSAgICAgIHRo
aXMuJCRpc29sYXRlQmluZGluZ3MgPSB7fTsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBAbmdk
b2MgcHJvcGVydHkKLSAgICAgKiBAbmFtZSBuZy4kcm9vdFNjb3BlLlNjb3BlIyRpZAotICAgICAq
IEBwcm9wZXJ0eU9mIG5nLiRyb290U2NvcGUuU2NvcGUKLSAgICAgKiBAcmV0dXJucyB7bnVtYmVy
fSBVbmlxdWUgc2NvcGUgSUQgKG1vbm90b25pY2FsbHkgaW5jcmVhc2luZyBhbHBoYW51bWVyaWMg
c2VxdWVuY2UpIHVzZWZ1bCBmb3IKLSAgICAgKiAgIGRlYnVnZ2luZy4KLSAgICAgKi8KLQotCi0g
ICAgU2NvcGUucHJvdG90eXBlID0gewotICAgICAgLyoqCi0gICAgICAgKiBAbmdkb2MgZnVuY3Rp
b24KLSAgICAgICAqIEBuYW1lIG5nLiRyb290U2NvcGUuU2NvcGUjJG5ldwotICAgICAgICogQG1l
dGhvZE9mIG5nLiRyb290U2NvcGUuU2NvcGUKLSAgICAgICAqIEBmdW5jdGlvbgotICAgICAgICoK
LSAgICAgICAqIEBkZXNjcmlwdGlvbgotICAgICAgICogQ3JlYXRlcyBhIG5ldyBjaGlsZCB7QGxp
bmsgbmcuJHJvb3RTY29wZS5TY29wZSBzY29wZX0uCi0gICAgICAgKgotICAgICAgICogVGhlIHBh
cmVudCBzY29wZSB3aWxsIHByb3BhZ2F0ZSB0aGUge0BsaW5rIG5nLiRyb290U2NvcGUuU2NvcGUj
JGRpZ2VzdCAkZGlnZXN0KCl9IGFuZAotICAgICAgICoge0BsaW5rIG5nLiRyb290U2NvcGUuU2Nv
cGUjJGRpZ2VzdCAkZGlnZXN0KCl9IGV2ZW50cy4gVGhlIHNjb3BlIGNhbiBiZSByZW1vdmVkIGZy
b20gdGhlIHNjb3BlCi0gICAgICAgKiBoaWVyYXJjaHkgdXNpbmcge0BsaW5rIG5nLiRyb290U2Nv
cGUuU2NvcGUjJGRlc3Ryb3kgJGRlc3Ryb3koKX0uCi0gICAgICAgKgotICAgICAgICoge0BsaW5r
IG5nLiRyb290U2NvcGUuU2NvcGUjJGRlc3Ryb3kgJGRlc3Ryb3koKX0gbXVzdCBiZSBjYWxsZWQg
b24gYSBzY29wZSB3aGVuIGl0IGlzIGRlc2lyZWQgZm9yCi0gICAgICAgKiB0aGUgc2NvcGUgYW5k
IGl0cyBjaGlsZCBzY29wZXMgdG8gYmUgcGVybWFuZW50bHkgZGV0YWNoZWQgZnJvbSB0aGUgcGFy
ZW50IGFuZCB0aHVzIHN0b3AKLSAgICAgICAqIHBhcnRpY2lwYXRpbmcgaW4gbW9kZWwgY2hhbmdl
IGRldGVjdGlvbiBhbmQgbGlzdGVuZXIgbm90aWZpY2F0aW9uIGJ5IGludm9raW5nLgotICAgICAg
ICoKLSAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNvbGF0ZSBpZiB0cnVlIHRoZW4gdGhlIHNj
b3BlIGRvZXMgbm90IHByb3RvdHlwaWNhbGx5IGluaGVyaXQgZnJvbSB0aGUKLSAgICAgICAqICAg
ICAgICAgcGFyZW50IHNjb3BlLiBUaGUgc2NvcGUgaXMgaXNvbGF0ZWQsIGFzIGl0IGNhbiBub3Qg
c2VlIHBhcmVudCBzY29wZSBwcm9wZXJ0aWVzLgotICAgICAgICogICAgICAgICBXaGVuIGNyZWF0
aW5nIHdpZGdldHMgaXQgaXMgdXNlZnVsIGZvciB0aGUgd2lkZ2V0IHRvIG5vdCBhY2NpZGVudGFs
bHkgcmVhZCBwYXJlbnQKLSAgICAgICAqICAgICAgICAgc3RhdGUuCi0gICAgICAgKgotICAgICAg
ICogQHJldHVybnMge09iamVjdH0gVGhlIG5ld2x5IGNyZWF0ZWQgY2hpbGQgc2NvcGUuCi0gICAg
ICAgKgotICAgICAgICovCi0gICAgICAkbmV3OiBmdW5jdGlvbihpc29sYXRlKSB7Ci0gICAgICAg
IHZhciBDaGlsZCwKLSAgICAgICAgICAgIGNoaWxkOwotCi0gICAgICAgIGlmIChpc0Z1bmN0aW9u
KGlzb2xhdGUpKSB7Ci0gICAgICAgICAgLy8gVE9ETzogcmVtb3ZlIGF0IHNvbWUgcG9pbnQKLSAg
ICAgICAgICB0aHJvdyBFcnJvcignQVBJLUNIQU5HRTogVXNlICRjb250cm9sbGVyIHRvIGluc3Rh
bnRpYXRlIGNvbnRyb2xsZXJzLicpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChpc29sYXRlKSB7
Ci0gICAgICAgICAgY2hpbGQgPSBuZXcgU2NvcGUoKTsKLSAgICAgICAgICBjaGlsZC4kcm9vdCA9
IHRoaXMuJHJvb3Q7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgQ2hpbGQgPSBmdW5jdGlv
bigpIHt9OyAvLyBzaG91bGQgYmUgYW5vbnltb3VzOyBUaGlzIGlzIHNvIHRoYXQgd2hlbiB0aGUg
bWluaWZpZXIgbXVuZ2VzCi0gICAgICAgICAgICAvLyB0aGUgbmFtZSBpdCBkb2VzIG5vdCBiZWNv
bWUgcmFuZG9tIHNldCBvZiBjaGFycy4gVGhlc2Ugd2lsbCB0aGVuIHNob3cgdXAgYXMgY2xhc3MK
LSAgICAgICAgICAgIC8vIG5hbWUgaW4gdGhlIGRlYnVnZ2VyLgotICAgICAgICAgIENoaWxkLnBy
b3RvdHlwZSA9IHRoaXM7Ci0gICAgICAgICAgY2hpbGQgPSBuZXcgQ2hpbGQoKTsKLSAgICAgICAg
ICBjaGlsZC4kaWQgPSBuZXh0VWlkKCk7Ci0gICAgICAgIH0KLSAgICAgICAgY2hpbGRbJ3RoaXMn
XSA9IGNoaWxkOwotICAgICAgICBjaGlsZC4kJGxpc3RlbmVycyA9IHt9OwotICAgICAgICBjaGls
ZC4kcGFyZW50ID0gdGhpczsKLSAgICAgICAgY2hpbGQuJCRhc3luY1F1ZXVlID0gW107Ci0gICAg
ICAgIGNoaWxkLiQkd2F0Y2hlcnMgPSBjaGlsZC4kJG5leHRTaWJsaW5nID0gY2hpbGQuJCRjaGls
ZEhlYWQgPSBjaGlsZC4kJGNoaWxkVGFpbCA9IG51bGw7Ci0gICAgICAgIGNoaWxkLiQkcHJldlNp
YmxpbmcgPSB0aGlzLiQkY2hpbGRUYWlsOwotICAgICAgICBpZiAodGhpcy4kJGNoaWxkSGVhZCkg
ewotICAgICAgICAgIHRoaXMuJCRjaGlsZFRhaWwuJCRuZXh0U2libGluZyA9IGNoaWxkOwotICAg
ICAgICAgIHRoaXMuJCRjaGlsZFRhaWwgPSBjaGlsZDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICB0aGlzLiQkY2hpbGRIZWFkID0gdGhpcy4kJGNoaWxkVGFpbCA9IGNoaWxkOwotICAgICAg
ICB9Ci0gICAgICAgIHJldHVybiBjaGlsZDsKLSAgICAgIH0sCi0KLSAgICAgIC8qKgotICAgICAg
ICogQG5nZG9jIGZ1bmN0aW9uCi0gICAgICAgKiBAbmFtZSBuZy4kcm9vdFNjb3BlLlNjb3BlIyR3
YXRjaAotICAgICAgICogQG1ldGhvZE9mIG5nLiRyb290U2NvcGUuU2NvcGUKLSAgICAgICAqIEBm
dW5jdGlvbgotICAgICAgICoKLSAgICAgICAqIEBkZXNjcmlwdGlvbgotICAgICAgICogUmVnaXN0
ZXJzIGEgYGxpc3RlbmVyYCBjYWxsYmFjayB0byBiZSBleGVjdXRlZCB3aGVuZXZlciB0aGUgYHdh
dGNoRXhwcmVzc2lvbmAgY2hhbmdlcy4KLSAgICAgICAqCi0gICAgICAgKiAtIFRoZSBgd2F0Y2hF
eHByZXNzaW9uYCBpcyBjYWxsZWQgb24gZXZlcnkgY2FsbCB0byB7QGxpbmsgbmcuJHJvb3RTY29w
ZS5TY29wZSMkZGlnZXN0ICRkaWdlc3QoKX0gYW5kCi0gICAgICAgKiAgIHNob3VsZCByZXR1cm4g
dGhlIHZhbHVlIHdoaWNoIHdpbGwgYmUgd2F0Y2hlZC4gKFNpbmNlIHtAbGluayBuZy4kcm9vdFNj
b3BlLlNjb3BlIyRkaWdlc3QgJGRpZ2VzdCgpfQotICAgICAgICogICByZXJ1bnMgd2hlbiBpdCBk
ZXRlY3RzIGNoYW5nZXMgdGhlIGB3YXRjaEV4cHJlc3Npb25gIGNhbiBleGVjdXRlIG11bHRpcGxl
IHRpbWVzIHBlcgotICAgICAgICogICB7QGxpbmsgbmcuJHJvb3RTY29wZS5TY29wZSMkZGlnZXN0
ICRkaWdlc3QoKX0gYW5kIHNob3VsZCBiZSBpZGVtcG90ZW50LikKLSAgICAgICAqIC0gVGhlIGBs
aXN0ZW5lcmAgaXMgY2FsbGVkIG9ubHkgd2hlbiB0aGUgdmFsdWUgZnJvbSB0aGUgY3VycmVudCBg
d2F0Y2hFeHByZXNzaW9uYCBhbmQgdGhlCi0gICAgICAgKiAgIHByZXZpb3VzIGNhbGwgdG8gYHdh
dGNoRXhwcmVzc2lvbmAgYXJlIG5vdCBlcXVhbCAod2l0aCB0aGUgZXhjZXB0aW9uIG9mIHRoZSBp
bml0aWFsIHJ1biwKLSAgICAgICAqICAgc2VlIGJlbG93KS4gVGhlIGluZXF1YWxpdHkgaXMgZGV0
ZXJtaW5lZCBhY2NvcmRpbmcgdG8KLSAgICAgICAqICAge0BsaW5rIGFuZ3VsYXIuZXF1YWxzfSBm
dW5jdGlvbi4gVG8gc2F2ZSB0aGUgdmFsdWUgb2YgdGhlIG9iamVjdCBmb3IgbGF0ZXIgY29tcGFy
aXNvbiwgdGhlCi0gICAgICAgKiAgIHtAbGluayBhbmd1bGFyLmNvcHl9IGZ1bmN0aW9uIGlzIHVz
ZWQuIEl0IGFsc28gbWVhbnMgdGhhdCB3YXRjaGluZyBjb21wbGV4IG9wdGlvbnMgd2lsbAotICAg
ICAgICogICBoYXZlIGFkdmVyc2UgbWVtb3J5IGFuZCBwZXJmb3JtYW5jZSBpbXBsaWNhdGlvbnMu
Ci0gICAgICAgKiAtIFRoZSB3YXRjaCBgbGlzdGVuZXJgIG1heSBjaGFuZ2UgdGhlIG1vZGVsLCB3
aGljaCBtYXkgdHJpZ2dlciBvdGhlciBgbGlzdGVuZXJgcyB0byBmaXJlLiBUaGlzCi0gICAgICAg
KiAgIGlzIGFjaGlldmVkIGJ5IHJlcnVubmluZyB0aGUgd2F0Y2hlcnMgdW50aWwgbm8gY2hhbmdl
cyBhcmUgZGV0ZWN0ZWQuIFRoZSByZXJ1biBpdGVyYXRpb24KLSAgICAgICAqICAgbGltaXQgaXMg
MTAgdG8gcHJldmVudCBhbiBpbmZpbml0ZSBsb29wIGRlYWRsb2NrLgotICAgICAgICoKLSAgICAg
ICAqCi0gICAgICAgKiBJZiB5b3Ugd2FudCB0byBiZSBub3RpZmllZCB3aGVuZXZlciB7QGxpbmsg
bmcuJHJvb3RTY29wZS5TY29wZSMkZGlnZXN0ICRkaWdlc3R9IGlzIGNhbGxlZCwKLSAgICAgICAq
IHlvdSBjYW4gcmVnaXN0ZXIgYSBgd2F0Y2hFeHByZXNzaW9uYCBmdW5jdGlvbiB3aXRoIG5vIGBs
aXN0ZW5lcmAuIChTaW5jZSBgd2F0Y2hFeHByZXNzaW9uYAotICAgICAgICogY2FuIGV4ZWN1dGUg
bXVsdGlwbGUgdGltZXMgcGVyIHtAbGluayBuZy4kcm9vdFNjb3BlLlNjb3BlIyRkaWdlc3QgJGRp
Z2VzdH0gY3ljbGUgd2hlbiBhIGNoYW5nZSBpcwotICAgICAgICogZGV0ZWN0ZWQsIGJlIHByZXBh
cmVkIGZvciBtdWx0aXBsZSBjYWxscyB0byB5b3VyIGxpc3RlbmVyLikKLSAgICAgICAqCi0gICAg
ICAgKiBBZnRlciBhIHdhdGNoZXIgaXMgcmVnaXN0ZXJlZCB3aXRoIHRoZSBzY29wZSwgdGhlIGBs
aXN0ZW5lcmAgZm4gaXMgY2FsbGVkIGFzeW5jaHJvbm91c2x5Ci0gICAgICAgKiAodmlhIHtAbGlu
ayBuZy4kcm9vdFNjb3BlLlNjb3BlIyRldmFsQXN5bmMgJGV2YWxBc3luY30pIHRvIGluaXRpYWxp
emUgdGhlCi0gICAgICAgKiB3YXRjaGVyLiBJbiByYXJlIGNhc2VzLCB0aGlzIGlzIHVuZGVzaXJh
YmxlIGJlY2F1c2UgdGhlIGxpc3RlbmVyIGlzIGNhbGxlZCB3aGVuIHRoZSByZXN1bHQKLSAgICAg
ICAqIG9mIGB3YXRjaEV4cHJlc3Npb25gIGRpZG4ndCBjaGFuZ2UuIFRvIGRldGVjdCB0aGlzIHNj
ZW5hcmlvIHdpdGhpbiB0aGUgYGxpc3RlbmVyYCBmbiwgeW91Ci0gICAgICAgKiBjYW4gY29tcGFy
ZSB0aGUgYG5ld1ZhbGAgYW5kIGBvbGRWYWxgLiBJZiB0aGVzZSB0d28gdmFsdWVzIGFyZSBpZGVu
dGljYWwgKGA9PT1gKSB0aGVuIHRoZQotICAgICAgICogbGlzdGVuZXIgd2FzIGNhbGxlZCBkdWUg
dG8gaW5pdGlhbGl6YXRpb24uCi0gICAgICAgKgotICAgICAgICoKLSAgICAgICAqICMgRXhhbXBs
ZQotICAgICAgICogPHByZT4KLSAgICAgICAgICAgLy8gbGV0J3MgYXNzdW1lIHRoYXQgc2NvcGUg
d2FzIGRlcGVuZGVuY3kgaW5qZWN0ZWQgYXMgdGhlICRyb290U2NvcGUKLSAgICAgICAgICAgdmFy
IHNjb3BlID0gJHJvb3RTY29wZTsKLSAgICAgICAgICAgc2NvcGUubmFtZSA9ICdtaXNrbyc7Ci0g
ICAgICAgICAgIHNjb3BlLmNvdW50ZXIgPSAwOwotCi0gICAgICAgICAgIGV4cGVjdChzY29wZS5j
b3VudGVyKS50b0VxdWFsKDApOwotICAgICAgICAgICBzY29wZS4kd2F0Y2goJ25hbWUnLCBmdW5j
dGlvbihuZXdWYWx1ZSwgb2xkVmFsdWUpIHsgc2NvcGUuY291bnRlciA9IHNjb3BlLmNvdW50ZXIg
KyAxOyB9KTsKLSAgICAgICAgICAgZXhwZWN0KHNjb3BlLmNvdW50ZXIpLnRvRXF1YWwoMCk7Ci0K
LSAgICAgICAgICAgc2NvcGUuJGRpZ2VzdCgpOwotICAgICAgICAgICAvLyBubyB2YXJpYWJsZSBj
aGFuZ2UKLSAgICAgICAgICAgZXhwZWN0KHNjb3BlLmNvdW50ZXIpLnRvRXF1YWwoMCk7Ci0KLSAg
ICAgICAgICAgc2NvcGUubmFtZSA9ICdhZGFtJzsKLSAgICAgICAgICAgc2NvcGUuJGRpZ2VzdCgp
OwotICAgICAgICAgICBleHBlY3Qoc2NvcGUuY291bnRlcikudG9FcXVhbCgxKTsKLSAgICAgICAq
IDwvcHJlPgotICAgICAgICoKLSAgICAgICAqCi0gICAgICAgKgotICAgICAgICogQHBhcmFtIHso
ZnVuY3Rpb24oKXxzdHJpbmcpfSB3YXRjaEV4cHJlc3Npb24gRXhwcmVzc2lvbiB0aGF0IGlzIGV2
YWx1YXRlZCBvbiBlYWNoCi0gICAgICAgKiAgICB7QGxpbmsgbmcuJHJvb3RTY29wZS5TY29wZSMk
ZGlnZXN0ICRkaWdlc3R9IGN5Y2xlLiBBIGNoYW5nZSBpbiB0aGUgcmV0dXJuIHZhbHVlIHRyaWdn
ZXJzIGEKLSAgICAgICAqICAgIGNhbGwgdG8gdGhlIGBsaXN0ZW5lcmAuCi0gICAgICAgKgotICAg
ICAgICogICAgLSBgc3RyaW5nYDogRXZhbHVhdGVkIGFzIHtAbGluayBndWlkZS9leHByZXNzaW9u
IGV4cHJlc3Npb259Ci0gICAgICAgKiAgICAtIGBmdW5jdGlvbihzY29wZSlgOiBjYWxsZWQgd2l0
aCBjdXJyZW50IGBzY29wZWAgYXMgYSBwYXJhbWV0ZXIuCi0gICAgICAgKiBAcGFyYW0geyhmdW5j
dGlvbigpfHN0cmluZyk9fSBsaXN0ZW5lciBDYWxsYmFjayBjYWxsZWQgd2hlbmV2ZXIgdGhlIHJl
dHVybiB2YWx1ZSBvZgotICAgICAgICogICB0aGUgYHdhdGNoRXhwcmVzc2lvbmAgY2hhbmdlcy4K
LSAgICAgICAqCi0gICAgICAgKiAgICAtIGBzdHJpbmdgOiBFdmFsdWF0ZWQgYXMge0BsaW5rIGd1
aWRlL2V4cHJlc3Npb24gZXhwcmVzc2lvbn0KLSAgICAgICAqICAgIC0gYGZ1bmN0aW9uKG5ld1Zh
bHVlLCBvbGRWYWx1ZSwgc2NvcGUpYDogY2FsbGVkIHdpdGggY3VycmVudCBhbmQgcHJldmlvdXMg
dmFsdWVzIGFzIHBhcmFtZXRlcnMuCi0gICAgICAgKgotICAgICAgICogQHBhcmFtIHtib29sZWFu
PX0gb2JqZWN0RXF1YWxpdHkgQ29tcGFyZSBvYmplY3QgZm9yIGVxdWFsaXR5IHJhdGhlciB0aGFu
IGZvciByZWZlcmVuY2UuCi0gICAgICAgKiBAcmV0dXJucyB7ZnVuY3Rpb24oKX0gUmV0dXJucyBh
IGRlcmVnaXN0cmF0aW9uIGZ1bmN0aW9uIGZvciB0aGlzIGxpc3RlbmVyLgotICAgICAgICovCi0g
ICAgICAkd2F0Y2g6IGZ1bmN0aW9uKHdhdGNoRXhwLCBsaXN0ZW5lciwgb2JqZWN0RXF1YWxpdHkp
IHsKLSAgICAgICAgdmFyIHNjb3BlID0gdGhpcywKLSAgICAgICAgICAgIGdldCA9IGNvbXBpbGVU
b0ZuKHdhdGNoRXhwLCAnd2F0Y2gnKSwKLSAgICAgICAgICAgIGFycmF5ID0gc2NvcGUuJCR3YXRj
aGVycywKLSAgICAgICAgICAgIHdhdGNoZXIgPSB7Ci0gICAgICAgICAgICAgIGZuOiBsaXN0ZW5l
ciwKLSAgICAgICAgICAgICAgbGFzdDogaW5pdFdhdGNoVmFsLAotICAgICAgICAgICAgICBnZXQ6
IGdldCwKLSAgICAgICAgICAgICAgZXhwOiB3YXRjaEV4cCwKLSAgICAgICAgICAgICAgZXE6ICEh
b2JqZWN0RXF1YWxpdHkKLSAgICAgICAgICAgIH07Ci0KLSAgICAgICAgLy8gaW4gdGhlIGNhc2Ug
dXNlciBwYXNzIHN0cmluZywgd2UgbmVlZCB0byBjb21waWxlIGl0LCBkbyB3ZSByZWFsbHkgbmVl
ZCB0aGlzID8KLSAgICAgICAgaWYgKCFpc0Z1bmN0aW9uKGxpc3RlbmVyKSkgewotICAgICAgICAg
IHZhciBsaXN0ZW5GbiA9IGNvbXBpbGVUb0ZuKGxpc3RlbmVyIHx8IG5vb3AsICdsaXN0ZW5lcicp
OwotICAgICAgICAgIHdhdGNoZXIuZm4gPSBmdW5jdGlvbihuZXdWYWwsIG9sZFZhbCwgc2NvcGUp
IHtsaXN0ZW5GbihzY29wZSk7fTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICghYXJyYXkpIHsK
LSAgICAgICAgICBhcnJheSA9IHNjb3BlLiQkd2F0Y2hlcnMgPSBbXTsKLSAgICAgICAgfQotICAg
ICAgICAvLyB3ZSB1c2UgdW5zaGlmdCBzaW5jZSB3ZSB1c2UgYSB3aGlsZSBsb29wIGluICRkaWdl
c3QgZm9yIHNwZWVkLgotICAgICAgICAvLyB0aGUgd2hpbGUgbG9vcCByZWFkcyBpbiByZXZlcnNl
IG9yZGVyLgotICAgICAgICBhcnJheS51bnNoaWZ0KHdhdGNoZXIpOwotCi0gICAgICAgIHJldHVy
biBmdW5jdGlvbigpIHsKLSAgICAgICAgICBhcnJheVJlbW92ZShhcnJheSwgd2F0Y2hlcik7Ci0g
ICAgICAgIH07Ci0gICAgICB9LAotCi0gICAgICAvKioKLSAgICAgICAqIEBuZ2RvYyBmdW5jdGlv
bgotICAgICAgICogQG5hbWUgbmcuJHJvb3RTY29wZS5TY29wZSMkZGlnZXN0Ci0gICAgICAgKiBA
bWV0aG9kT2YgbmcuJHJvb3RTY29wZS5TY29wZQotICAgICAgICogQGZ1bmN0aW9uCi0gICAgICAg
KgotICAgICAgICogQGRlc2NyaXB0aW9uCi0gICAgICAgKiBQcm9jZXNzZXMgYWxsIG9mIHRoZSB7
QGxpbmsgbmcuJHJvb3RTY29wZS5TY29wZSMkd2F0Y2ggd2F0Y2hlcnN9IG9mIHRoZSBjdXJyZW50
IHNjb3BlIGFuZCBpdHMgY2hpbGRyZW4uCi0gICAgICAgKiBCZWNhdXNlIGEge0BsaW5rIG5nLiRy
b290U2NvcGUuU2NvcGUjJHdhdGNoIHdhdGNoZXJ9J3MgbGlzdGVuZXIgY2FuIGNoYW5nZSB0aGUg
bW9kZWwsIHRoZQotICAgICAgICogYCRkaWdlc3QoKWAga2VlcHMgY2FsbGluZyB0aGUge0BsaW5r
IG5nLiRyb290U2NvcGUuU2NvcGUjJHdhdGNoIHdhdGNoZXJzfSB1bnRpbCBubyBtb3JlIGxpc3Rl
bmVycyBhcmUKLSAgICAgICAqIGZpcmluZy4gVGhpcyBtZWFucyB0aGF0IGl0IGlzIHBvc3NpYmxl
IHRvIGdldCBpbnRvIGFuIGluZmluaXRlIGxvb3AuIFRoaXMgZnVuY3Rpb24gd2lsbCB0aHJvdwot
ICAgICAgICogYCdNYXhpbXVtIGl0ZXJhdGlvbiBsaW1pdCBleGNlZWRlZC4nYCBpZiB0aGUgbnVt
YmVyIG9mIGl0ZXJhdGlvbnMgZXhjZWVkcyAxMC4KLSAgICAgICAqCi0gICAgICAgKiBVc3VhbGx5
IHlvdSBkb24ndCBjYWxsIGAkZGlnZXN0KClgIGRpcmVjdGx5IGluCi0gICAgICAgKiB7QGxpbmsg
bmcuZGlyZWN0aXZlOm5nQ29udHJvbGxlciBjb250cm9sbGVyc30gb3IgaW4KLSAgICAgICAqIHtA
bGluayBuZy4kY29tcGlsZVByb3ZpZGVyI2RpcmVjdGl2ZSBkaXJlY3RpdmVzfS4KLSAgICAgICAq
IEluc3RlYWQgYSBjYWxsIHRvIHtAbGluayBuZy4kcm9vdFNjb3BlLlNjb3BlIyRhcHBseSAkYXBw
bHkoKX0gKHR5cGljYWxseSBmcm9tIHdpdGhpbiBhCi0gICAgICAgKiB7QGxpbmsgbmcuJGNvbXBp
bGVQcm92aWRlciNkaXJlY3RpdmUgZGlyZWN0aXZlc30pIHdpbGwgZm9yY2UgYSBgJGRpZ2VzdCgp
YC4KLSAgICAgICAqCi0gICAgICAgKiBJZiB5b3Ugd2FudCB0byBiZSBub3RpZmllZCB3aGVuZXZl
ciBgJGRpZ2VzdCgpYCBpcyBjYWxsZWQsCi0gICAgICAgKiB5b3UgY2FuIHJlZ2lzdGVyIGEgYHdh
dGNoRXhwcmVzc2lvbmAgZnVuY3Rpb24gIHdpdGgge0BsaW5rIG5nLiRyb290U2NvcGUuU2NvcGUj
JHdhdGNoICR3YXRjaCgpfQotICAgICAgICogd2l0aCBubyBgbGlzdGVuZXJgLgotICAgICAgICoK
LSAgICAgICAqIFlvdSBtYXkgaGF2ZSBhIG5lZWQgdG8gY2FsbCBgJGRpZ2VzdCgpYCBmcm9tIHdp
dGhpbiB1bml0LXRlc3RzLCB0byBzaW11bGF0ZSB0aGUgc2NvcGUKLSAgICAgICAqIGxpZmUtY3lj
bGUuCi0gICAgICAgKgotICAgICAgICogIyBFeGFtcGxlCi0gICAgICAgKiA8cHJlPgotICAgICAg
ICAgICB2YXIgc2NvcGUgPSAuLi47Ci0gICAgICAgICAgIHNjb3BlLm5hbWUgPSAnbWlza28nOwot
ICAgICAgICAgICBzY29wZS5jb3VudGVyID0gMDsKLQotICAgICAgICAgICBleHBlY3Qoc2NvcGUu
Y291bnRlcikudG9FcXVhbCgwKTsKLSAgICAgICAgICAgc2NvcGUuJHdhdGNoKCduYW1lJywgZnVu
Y3Rpb24obmV3VmFsdWUsIG9sZFZhbHVlKSB7Ci0gICAgICAgICAgICAgc2NvcGUuY291bnRlciA9
IHNjb3BlLmNvdW50ZXIgKyAxOwotICAgICAgICAgICB9KTsKLSAgICAgICAgICAgZXhwZWN0KHNj
b3BlLmNvdW50ZXIpLnRvRXF1YWwoMCk7Ci0KLSAgICAgICAgICAgc2NvcGUuJGRpZ2VzdCgpOwot
ICAgICAgICAgICAvLyBubyB2YXJpYWJsZSBjaGFuZ2UKLSAgICAgICAgICAgZXhwZWN0KHNjb3Bl
LmNvdW50ZXIpLnRvRXF1YWwoMCk7Ci0KLSAgICAgICAgICAgc2NvcGUubmFtZSA9ICdhZGFtJzsK
LSAgICAgICAgICAgc2NvcGUuJGRpZ2VzdCgpOwotICAgICAgICAgICBleHBlY3Qoc2NvcGUuY291
bnRlcikudG9FcXVhbCgxKTsKLSAgICAgICAqIDwvcHJlPgotICAgICAgICoKLSAgICAgICAqLwot
ICAgICAgJGRpZ2VzdDogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZhciB3YXRjaCwgdmFsdWUsIGxh
c3QsCi0gICAgICAgICAgICB3YXRjaGVycywKLSAgICAgICAgICAgIGFzeW5jUXVldWUsCi0gICAg
ICAgICAgICBsZW5ndGgsCi0gICAgICAgICAgICBkaXJ0eSwgdHRsID0gVFRMLAotICAgICAgICAg
ICAgbmV4dCwgY3VycmVudCwgdGFyZ2V0ID0gdGhpcywKLSAgICAgICAgICAgIHdhdGNoTG9nID0g
W10sCi0gICAgICAgICAgICBsb2dJZHgsIGxvZ01zZzsKLQotICAgICAgICBiZWdpblBoYXNlKCck
ZGlnZXN0Jyk7Ci0KLSAgICAgICAgZG8gewotICAgICAgICAgIGRpcnR5ID0gZmFsc2U7Ci0gICAg
ICAgICAgY3VycmVudCA9IHRhcmdldDsKLSAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICBhc3lu
Y1F1ZXVlID0gY3VycmVudC4kJGFzeW5jUXVldWU7Ci0gICAgICAgICAgICB3aGlsZShhc3luY1F1
ZXVlLmxlbmd0aCkgewotICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIGN1cnJl
bnQuJGV2YWwoYXN5bmNRdWV1ZS5zaGlmdCgpKTsKLSAgICAgICAgICAgICAgfSBjYXRjaCAoZSkg
ewotICAgICAgICAgICAgICAgICRleGNlcHRpb25IYW5kbGVyKGUpOwotICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoKHdhdGNoZXJzID0gY3VycmVudC4kJHdh
dGNoZXJzKSkgewotICAgICAgICAgICAgICAvLyBwcm9jZXNzIG91ciB3YXRjaGVzCi0gICAgICAg
ICAgICAgIGxlbmd0aCA9IHdhdGNoZXJzLmxlbmd0aDsKLSAgICAgICAgICAgICAgd2hpbGUgKGxl
bmd0aC0tKSB7Ci0gICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgIHdhdGNo
ID0gd2F0Y2hlcnNbbGVuZ3RoXTsKLSAgICAgICAgICAgICAgICAgIC8vIE1vc3QgY29tbW9uIHdh
dGNoZXMgYXJlIG9uIHByaW1pdGl2ZXMsIGluIHdoaWNoIGNhc2Ugd2UgY2FuIHNob3J0Ci0gICAg
ICAgICAgICAgICAgICAvLyBjaXJjdWl0IGl0IHdpdGggPT09IG9wZXJhdG9yLCBvbmx5IHdoZW4g
PT09IGZhaWxzIGRvIHdlIHVzZSAuZXF1YWxzCi0gICAgICAgICAgICAgICAgICBpZiAoKHZhbHVl
ID0gd2F0Y2guZ2V0KGN1cnJlbnQpKSAhPT0gKGxhc3QgPSB3YXRjaC5sYXN0KSAmJgotICAgICAg
ICAgICAgICAgICAgICAgICEod2F0Y2guZXEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPyBl
cXVhbHModmFsdWUsIGxhc3QpCi0gICAgICAgICAgICAgICAgICAgICAgICAgIDogKHR5cGVvZiB2
YWx1ZSA9PSAnbnVtYmVyJyAmJiB0eXBlb2YgbGFzdCA9PSAnbnVtYmVyJwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAmJiBpc05hTih2YWx1ZSkgJiYgaXNOYU4obGFzdCkpKSkgewotICAg
ICAgICAgICAgICAgICAgICBkaXJ0eSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIHdhdGNo
Lmxhc3QgPSB3YXRjaC5lcSA/IGNvcHkodmFsdWUpIDogdmFsdWU7Ci0gICAgICAgICAgICAgICAg
ICAgIHdhdGNoLmZuKHZhbHVlLCAoKGxhc3QgPT09IGluaXRXYXRjaFZhbCkgPyB2YWx1ZSA6IGxh
c3QpLCBjdXJyZW50KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHR0bCA8IDUpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICBsb2dJZHggPSA0IC0gdHRsOwotICAgICAgICAgICAgICAgICAgICAg
IGlmICghd2F0Y2hMb2dbbG9nSWR4XSkgd2F0Y2hMb2dbbG9nSWR4XSA9IFtdOwotICAgICAgICAg
ICAgICAgICAgICAgIGxvZ01zZyA9IChpc0Z1bmN0aW9uKHdhdGNoLmV4cCkpCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgID8gJ2ZuOiAnICsgKHdhdGNoLmV4cC5uYW1lIHx8IHdhdGNoLmV4cC50
b1N0cmluZygpKQotICAgICAgICAgICAgICAgICAgICAgICAgICA6IHdhdGNoLmV4cDsKLSAgICAg
ICAgICAgICAgICAgICAgICBsb2dNc2cgKz0gJzsgbmV3VmFsOiAnICsgdG9Kc29uKHZhbHVlKSAr
ICc7IG9sZFZhbDogJyArIHRvSnNvbihsYXN0KTsKLSAgICAgICAgICAgICAgICAgICAgICB3YXRj
aExvZ1tsb2dJZHhdLnB1c2gobG9nTXNnKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICAg
ICAgICAgICRleGNlcHRpb25IYW5kbGVyKGUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBJbnNhbml0eSBXYXJuaW5n
OiBzY29wZSBkZXB0aC1maXJzdCB0cmF2ZXJzYWwKLSAgICAgICAgICAgIC8vIHllcywgdGhpcyBj
b2RlIGlzIGEgYml0IGNyYXp5LCBidXQgaXQgd29ya3MgYW5kIHdlIGhhdmUgdGVzdHMgdG8gcHJv
dmUgaXQhCi0gICAgICAgICAgICAvLyB0aGlzIHBpZWNlIHNob3VsZCBiZSBrZXB0IGluIHN5bmMg
d2l0aCB0aGUgdHJhdmVyc2FsIGluICRicm9hZGNhc3QKLSAgICAgICAgICAgIGlmICghKG5leHQg
PSAoY3VycmVudC4kJGNoaWxkSGVhZCB8fCAoY3VycmVudCAhPT0gdGFyZ2V0ICYmIGN1cnJlbnQu
JCRuZXh0U2libGluZykpKSkgewotICAgICAgICAgICAgICB3aGlsZShjdXJyZW50ICE9PSB0YXJn
ZXQgJiYgIShuZXh0ID0gY3VycmVudC4kJG5leHRTaWJsaW5nKSkgewotICAgICAgICAgICAgICAg
IGN1cnJlbnQgPSBjdXJyZW50LiRwYXJlbnQ7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH0KLSAgICAgICAgICB9IHdoaWxlICgoY3VycmVudCA9IG5leHQpKTsKLQotICAgICAgICAgIGlm
KGRpcnR5ICYmICEodHRsLS0pKSB7Ci0gICAgICAgICAgICBjbGVhclBoYXNlKCk7Ci0gICAgICAg
ICAgICB0aHJvdyBFcnJvcihUVEwgKyAnICRkaWdlc3QoKSBpdGVyYXRpb25zIHJlYWNoZWQuIEFi
b3J0aW5nIVxuJyArCi0gICAgICAgICAgICAgICAgJ1dhdGNoZXJzIGZpcmVkIGluIHRoZSBsYXN0
IDUgaXRlcmF0aW9uczogJyArIHRvSnNvbih3YXRjaExvZykpOwotICAgICAgICAgIH0KLSAgICAg
ICAgfSB3aGlsZSAoZGlydHkgfHwgYXN5bmNRdWV1ZS5sZW5ndGgpOwotCi0gICAgICAgIGNsZWFy
UGhhc2UoKTsKLSAgICAgIH0sCi0KLQotICAgICAgLyoqCi0gICAgICAgKiBAbmdkb2MgZXZlbnQK
LSAgICAgICAqIEBuYW1lIG5nLiRyb290U2NvcGUuU2NvcGUjJGRlc3Ryb3kKLSAgICAgICAqIEBl
dmVudE9mIG5nLiRyb290U2NvcGUuU2NvcGUKLSAgICAgICAqIEBldmVudFR5cGUgYnJvYWRjYXN0
IG9uIHNjb3BlIGJlaW5nIGRlc3Ryb3llZAotICAgICAgICoKLSAgICAgICAqIEBkZXNjcmlwdGlv
bgotICAgICAgICogQnJvYWRjYXN0ZWQgd2hlbiBhIHNjb3BlIGFuZCBpdHMgY2hpbGRyZW4gYXJl
IGJlaW5nIGRlc3Ryb3llZC4KLSAgICAgICAqLwotCi0gICAgICAvKioKLSAgICAgICAqIEBuZ2Rv
YyBmdW5jdGlvbgotICAgICAgICogQG5hbWUgbmcuJHJvb3RTY29wZS5TY29wZSMkZGVzdHJveQot
ICAgICAgICogQG1ldGhvZE9mIG5nLiRyb290U2NvcGUuU2NvcGUKLSAgICAgICAqIEBmdW5jdGlv
bgotICAgICAgICoKLSAgICAgICAqIEBkZXNjcmlwdGlvbgotICAgICAgICogUmVtb3ZlcyB0aGUg
Y3VycmVudCBzY29wZSAoYW5kIGFsbCBvZiBpdHMgY2hpbGRyZW4pIGZyb20gdGhlIHBhcmVudCBz
Y29wZS4gUmVtb3ZhbCBpbXBsaWVzCi0gICAgICAgKiB0aGF0IGNhbGxzIHRvIHtAbGluayBuZy4k
cm9vdFNjb3BlLlNjb3BlIyRkaWdlc3QgJGRpZ2VzdCgpfSB3aWxsIG5vIGxvbmdlcgotICAgICAg
ICogcHJvcGFnYXRlIHRvIHRoZSBjdXJyZW50IHNjb3BlIGFuZCBpdHMgY2hpbGRyZW4uIFJlbW92
YWwgYWxzbyBpbXBsaWVzIHRoYXQgdGhlIGN1cnJlbnQKLSAgICAgICAqIHNjb3BlIGlzIGVsaWdp
YmxlIGZvciBnYXJiYWdlIGNvbGxlY3Rpb24uCi0gICAgICAgKgotICAgICAgICogVGhlIGAkZGVz
dHJveSgpYCBpcyB1c3VhbGx5IHVzZWQgYnkgZGlyZWN0aXZlcyBzdWNoIGFzCi0gICAgICAgKiB7
QGxpbmsgbmcuZGlyZWN0aXZlOm5nUmVwZWF0IG5nUmVwZWF0fSBmb3IgbWFuYWdpbmcgdGhlCi0g
ICAgICAgKiB1bnJvbGxpbmcgb2YgdGhlIGxvb3AuCi0gICAgICAgKgotICAgICAgICogSnVzdCBi
ZWZvcmUgYSBzY29wZSBpcyBkZXN0cm95ZWQgYSBgJGRlc3Ryb3lgIGV2ZW50IGlzIGJyb2FkY2Fz
dGVkIG9uIHRoaXMgc2NvcGUuCi0gICAgICAgKiBBcHBsaWNhdGlvbiBjb2RlIGNhbiByZWdpc3Rl
ciBhIGAkZGVzdHJveWAgZXZlbnQgaGFuZGxlciB0aGF0IHdpbGwgZ2l2ZSBpdCBjaGFuY2UgdG8K
LSAgICAgICAqIHBlcmZvcm0gYW55IG5lY2Vzc2FyeSBjbGVhbnVwLgotICAgICAgICovCi0gICAg
ICAkZGVzdHJveTogZnVuY3Rpb24oKSB7Ci0gICAgICAgIC8vIHdlIGNhbid0IGRlc3Ryb3kgdGhl
IHJvb3Qgc2NvcGUgb3IgYSBzY29wZSB0aGF0IGhhcyBiZWVuIGFscmVhZHkgZGVzdHJveWVkCi0g
ICAgICAgIGlmICgkcm9vdFNjb3BlID09IHRoaXMgfHwgdGhpcy4kJGRlc3Ryb3llZCkgcmV0dXJu
OwotICAgICAgICB2YXIgcGFyZW50ID0gdGhpcy4kcGFyZW50OwotCi0gICAgICAgIHRoaXMuJGJy
b2FkY2FzdCgnJGRlc3Ryb3knKTsKLSAgICAgICAgdGhpcy4kJGRlc3Ryb3llZCA9IHRydWU7Ci0K
LSAgICAgICAgaWYgKHBhcmVudC4kJGNoaWxkSGVhZCA9PSB0aGlzKSBwYXJlbnQuJCRjaGlsZEhl
YWQgPSB0aGlzLiQkbmV4dFNpYmxpbmc7Ci0gICAgICAgIGlmIChwYXJlbnQuJCRjaGlsZFRhaWwg
PT0gdGhpcykgcGFyZW50LiQkY2hpbGRUYWlsID0gdGhpcy4kJHByZXZTaWJsaW5nOwotICAgICAg
ICBpZiAodGhpcy4kJHByZXZTaWJsaW5nKSB0aGlzLiQkcHJldlNpYmxpbmcuJCRuZXh0U2libGlu
ZyA9IHRoaXMuJCRuZXh0U2libGluZzsKLSAgICAgICAgaWYgKHRoaXMuJCRuZXh0U2libGluZykg
dGhpcy4kJG5leHRTaWJsaW5nLiQkcHJldlNpYmxpbmcgPSB0aGlzLiQkcHJldlNpYmxpbmc7Ci0K
LSAgICAgICAgLy8gVGhpcyBpcyBib2d1cyBjb2RlIHRoYXQgd29ya3MgYXJvdW5kIENocm9tZSdz
IEdDIGxlYWsKLSAgICAgICAgLy8gc2VlOiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1
bGFyLmpzL2lzc3Vlcy8xMzEzI2lzc3VlY29tbWVudC0xMDM3ODQ1MQotICAgICAgICB0aGlzLiRw
YXJlbnQgPSB0aGlzLiQkbmV4dFNpYmxpbmcgPSB0aGlzLiQkcHJldlNpYmxpbmcgPSB0aGlzLiQk
Y2hpbGRIZWFkID0KLSAgICAgICAgICAgIHRoaXMuJCRjaGlsZFRhaWwgPSBudWxsOwotICAgICAg
fSwKLQotICAgICAgLyoqCi0gICAgICAgKiBAbmdkb2MgZnVuY3Rpb24KLSAgICAgICAqIEBuYW1l
IG5nLiRyb290U2NvcGUuU2NvcGUjJGV2YWwKLSAgICAgICAqIEBtZXRob2RPZiBuZy4kcm9vdFNj
b3BlLlNjb3BlCi0gICAgICAgKiBAZnVuY3Rpb24KLSAgICAgICAqCi0gICAgICAgKiBAZGVzY3Jp
cHRpb24KLSAgICAgICAqIEV4ZWN1dGVzIHRoZSBgZXhwcmVzc2lvbmAgb24gdGhlIGN1cnJlbnQg
c2NvcGUgcmV0dXJuaW5nIHRoZSByZXN1bHQuIEFueSBleGNlcHRpb25zIGluIHRoZQotICAgICAg
ICogZXhwcmVzc2lvbiBhcmUgcHJvcGFnYXRlZCAodW5jYXVnaHQpLiBUaGlzIGlzIHVzZWZ1bCB3
aGVuIGV2YWx1YXRpbmcgQW5ndWxhciBleHByZXNzaW9ucy4KLSAgICAgICAqCi0gICAgICAgKiAj
IEV4YW1wbGUKLSAgICAgICAqIDxwcmU+Ci0gICAgICAgICAgIHZhciBzY29wZSA9IG5nLiRyb290
U2NvcGUuU2NvcGUoKTsKLSAgICAgICAgICAgc2NvcGUuYSA9IDE7Ci0gICAgICAgICAgIHNjb3Bl
LmIgPSAyOwotCi0gICAgICAgICAgIGV4cGVjdChzY29wZS4kZXZhbCgnYStiJykpLnRvRXF1YWwo
Myk7Ci0gICAgICAgICAgIGV4cGVjdChzY29wZS4kZXZhbChmdW5jdGlvbihzY29wZSl7IHJldHVy
biBzY29wZS5hICsgc2NvcGUuYjsgfSkpLnRvRXF1YWwoMyk7Ci0gICAgICAgKiA8L3ByZT4KLSAg
ICAgICAqCi0gICAgICAgKiBAcGFyYW0geyhzdHJpbmd8ZnVuY3Rpb24oKSk9fSBleHByZXNzaW9u
IEFuIGFuZ3VsYXIgZXhwcmVzc2lvbiB0byBiZSBleGVjdXRlZC4KLSAgICAgICAqCi0gICAgICAg
KiAgICAtIGBzdHJpbmdgOiBleGVjdXRlIHVzaW5nIHRoZSBydWxlcyBhcyBkZWZpbmVkIGluICB7
QGxpbmsgZ3VpZGUvZXhwcmVzc2lvbiBleHByZXNzaW9ufS4KLSAgICAgICAqICAgIC0gYGZ1bmN0
aW9uKHNjb3BlKWA6IGV4ZWN1dGUgdGhlIGZ1bmN0aW9uIHdpdGggdGhlIGN1cnJlbnQgYHNjb3Bl
YCBwYXJhbWV0ZXIuCi0gICAgICAgKgotICAgICAgICogQHJldHVybnMgeyp9IFRoZSByZXN1bHQg
b2YgZXZhbHVhdGluZyB0aGUgZXhwcmVzc2lvbi4KLSAgICAgICAqLwotICAgICAgJGV2YWw6IGZ1
bmN0aW9uKGV4cHIsIGxvY2FscykgewotICAgICAgICByZXR1cm4gJHBhcnNlKGV4cHIpKHRoaXMs
IGxvY2Fscyk7Ci0gICAgICB9LAotCi0gICAgICAvKioKLSAgICAgICAqIEBuZ2RvYyBmdW5jdGlv
bgotICAgICAgICogQG5hbWUgbmcuJHJvb3RTY29wZS5TY29wZSMkZXZhbEFzeW5jCi0gICAgICAg
KiBAbWV0aG9kT2YgbmcuJHJvb3RTY29wZS5TY29wZQotICAgICAgICogQGZ1bmN0aW9uCi0gICAg
ICAgKgotICAgICAgICogQGRlc2NyaXB0aW9uCi0gICAgICAgKiBFeGVjdXRlcyB0aGUgZXhwcmVz
c2lvbiBvbiB0aGUgY3VycmVudCBzY29wZSBhdCBhIGxhdGVyIHBvaW50IGluIHRpbWUuCi0gICAg
ICAgKgotICAgICAgICogVGhlIGAkZXZhbEFzeW5jYCBtYWtlcyBubyBndWFyYW50ZWVzIGFzIHRv
IHdoZW4gdGhlIGBleHByZXNzaW9uYCB3aWxsIGJlIGV4ZWN1dGVkLCBvbmx5IHRoYXQ6Ci0gICAg
ICAgKgotICAgICAgICogICAtIGl0IHdpbGwgZXhlY3V0ZSBpbiB0aGUgY3VycmVudCBzY3JpcHQg
ZXhlY3V0aW9uIGNvbnRleHQgKGJlZm9yZSBhbnkgRE9NIHJlbmRlcmluZykuCi0gICAgICAgKiAg
IC0gYXQgbGVhc3Qgb25lIHtAbGluayBuZy4kcm9vdFNjb3BlLlNjb3BlIyRkaWdlc3QgJGRpZ2Vz
dCBjeWNsZX0gd2lsbCBiZSBwZXJmb3JtZWQgYWZ0ZXIKLSAgICAgICAqICAgICBgZXhwcmVzc2lv
bmAgZXhlY3V0aW9uLgotICAgICAgICoKLSAgICAgICAqIEFueSBleGNlcHRpb25zIGZyb20gdGhl
IGV4ZWN1dGlvbiBvZiB0aGUgZXhwcmVzc2lvbiBhcmUgZm9yd2FyZGVkIHRvIHRoZQotICAgICAg
ICoge0BsaW5rIG5nLiRleGNlcHRpb25IYW5kbGVyICRleGNlcHRpb25IYW5kbGVyfSBzZXJ2aWNl
LgotICAgICAgICoKLSAgICAgICAqIEBwYXJhbSB7KHN0cmluZ3xmdW5jdGlvbigpKT19IGV4cHJl
c3Npb24gQW4gYW5ndWxhciBleHByZXNzaW9uIHRvIGJlIGV4ZWN1dGVkLgotICAgICAgICoKLSAg
ICAgICAqICAgIC0gYHN0cmluZ2A6IGV4ZWN1dGUgdXNpbmcgdGhlIHJ1bGVzIGFzIGRlZmluZWQg
aW4gIHtAbGluayBndWlkZS9leHByZXNzaW9uIGV4cHJlc3Npb259LgotICAgICAgICogICAgLSBg
ZnVuY3Rpb24oc2NvcGUpYDogZXhlY3V0ZSB0aGUgZnVuY3Rpb24gd2l0aCB0aGUgY3VycmVudCBg
c2NvcGVgIHBhcmFtZXRlci4KLSAgICAgICAqCi0gICAgICAgKi8KLSAgICAgICRldmFsQXN5bmM6
IGZ1bmN0aW9uKGV4cHIpIHsKLSAgICAgICAgdGhpcy4kJGFzeW5jUXVldWUucHVzaChleHByKTsK
LSAgICAgIH0sCi0KLSAgICAgIC8qKgotICAgICAgICogQG5nZG9jIGZ1bmN0aW9uCi0gICAgICAg
KiBAbmFtZSBuZy4kcm9vdFNjb3BlLlNjb3BlIyRhcHBseQotICAgICAgICogQG1ldGhvZE9mIG5n
LiRyb290U2NvcGUuU2NvcGUKLSAgICAgICAqIEBmdW5jdGlvbgotICAgICAgICoKLSAgICAgICAq
IEBkZXNjcmlwdGlvbgotICAgICAgICogYCRhcHBseSgpYCBpcyB1c2VkIHRvIGV4ZWN1dGUgYW4g
ZXhwcmVzc2lvbiBpbiBhbmd1bGFyIGZyb20gb3V0c2lkZSBvZiB0aGUgYW5ndWxhciBmcmFtZXdv
cmsuCi0gICAgICAgKiAoRm9yIGV4YW1wbGUgZnJvbSBicm93c2VyIERPTSBldmVudHMsIHNldFRp
bWVvdXQsIFhIUiBvciB0aGlyZCBwYXJ0eSBsaWJyYXJpZXMpLgotICAgICAgICogQmVjYXVzZSB3
ZSBhcmUgY2FsbGluZyBpbnRvIHRoZSBhbmd1bGFyIGZyYW1ld29yayB3ZSBuZWVkIHRvIHBlcmZv
cm0gcHJvcGVyIHNjb3BlIGxpZmUtY3ljbGUKLSAgICAgICAqIG9mIHtAbGluayBuZy4kZXhjZXB0
aW9uSGFuZGxlciBleGNlcHRpb24gaGFuZGxpbmd9LAotICAgICAgICoge0BsaW5rIG5nLiRyb290
U2NvcGUuU2NvcGUjJGRpZ2VzdCBleGVjdXRpbmcgd2F0Y2hlc30uCi0gICAgICAgKgotICAgICAg
ICogIyMgTGlmZSBjeWNsZQotICAgICAgICoKLSAgICAgICAqICMgUHNldWRvLUNvZGUgb2YgYCRh
cHBseSgpYAotICAgICAgICogPHByZT4KLSAgICAgICAgICAgZnVuY3Rpb24gJGFwcGx5KGV4cHIp
IHsKLSAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgcmV0dXJuICRldmFsKGV4cHIp
OwotICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICAgICAgICRleGNlcHRpb25I
YW5kbGVyKGUpOwotICAgICAgICAgICAgIH0gZmluYWxseSB7Ci0gICAgICAgICAgICAgICAkcm9v
dC4kZGlnZXN0KCk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICB9Ci0gICAgICAgKiA8L3By
ZT4KLSAgICAgICAqCi0gICAgICAgKgotICAgICAgICogU2NvcGUncyBgJGFwcGx5KClgIG1ldGhv
ZCB0cmFuc2l0aW9ucyB0aHJvdWdoIHRoZSBmb2xsb3dpbmcgc3RhZ2VzOgotICAgICAgICoKLSAg
ICAgICAqIDEuIFRoZSB7QGxpbmsgZ3VpZGUvZXhwcmVzc2lvbiBleHByZXNzaW9ufSBpcyBleGVj
dXRlZCB1c2luZyB0aGUKLSAgICAgICAqICAgIHtAbGluayBuZy4kcm9vdFNjb3BlLlNjb3BlIyRl
dmFsICRldmFsKCl9IG1ldGhvZC4KLSAgICAgICAqIDIuIEFueSBleGNlcHRpb25zIGZyb20gdGhl
IGV4ZWN1dGlvbiBvZiB0aGUgZXhwcmVzc2lvbiBhcmUgZm9yd2FyZGVkIHRvIHRoZQotICAgICAg
ICogICAge0BsaW5rIG5nLiRleGNlcHRpb25IYW5kbGVyICRleGNlcHRpb25IYW5kbGVyfSBzZXJ2
aWNlLgotICAgICAgICogMy4gVGhlIHtAbGluayBuZy4kcm9vdFNjb3BlLlNjb3BlIyR3YXRjaCB3
YXRjaH0gbGlzdGVuZXJzIGFyZSBmaXJlZCBpbW1lZGlhdGVseSBhZnRlciB0aGUgZXhwcmVzc2lv
bgotICAgICAgICogICAgd2FzIGV4ZWN1dGVkIHVzaW5nIHRoZSB7QGxpbmsgbmcuJHJvb3RTY29w
ZS5TY29wZSMkZGlnZXN0ICRkaWdlc3QoKX0gbWV0aG9kLgotICAgICAgICoKLSAgICAgICAqCi0g
ICAgICAgKiBAcGFyYW0geyhzdHJpbmd8ZnVuY3Rpb24oKSk9fSBleHAgQW4gYW5ndWxhciBleHBy
ZXNzaW9uIHRvIGJlIGV4ZWN1dGVkLgotICAgICAgICoKLSAgICAgICAqICAgIC0gYHN0cmluZ2A6
IGV4ZWN1dGUgdXNpbmcgdGhlIHJ1bGVzIGFzIGRlZmluZWQgaW4ge0BsaW5rIGd1aWRlL2V4cHJl
c3Npb24gZXhwcmVzc2lvbn0uCi0gICAgICAgKiAgICAtIGBmdW5jdGlvbihzY29wZSlgOiBleGVj
dXRlIHRoZSBmdW5jdGlvbiB3aXRoIGN1cnJlbnQgYHNjb3BlYCBwYXJhbWV0ZXIuCi0gICAgICAg
KgotICAgICAgICogQHJldHVybnMgeyp9IFRoZSByZXN1bHQgb2YgZXZhbHVhdGluZyB0aGUgZXhw
cmVzc2lvbi4KLSAgICAgICAqLwotICAgICAgJGFwcGx5OiBmdW5jdGlvbihleHByKSB7Ci0gICAg
ICAgIHRyeSB7Ci0gICAgICAgICAgYmVnaW5QaGFzZSgnJGFwcGx5Jyk7Ci0gICAgICAgICAgcmV0
dXJuIHRoaXMuJGV2YWwoZXhwcik7Ci0gICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICAk
ZXhjZXB0aW9uSGFuZGxlcihlKTsKLSAgICAgICAgfSBmaW5hbGx5IHsKLSAgICAgICAgICBjbGVh
clBoYXNlKCk7Ci0gICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICRyb290U2NvcGUuJGRpZ2Vz
dCgpOwotICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICAgICRleGNlcHRpb25IYW5k
bGVyKGUpOwotICAgICAgICAgICAgdGhyb3cgZTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICAgIH0sCi0KLSAgICAgIC8qKgotICAgICAgICogQG5nZG9jIGZ1bmN0aW9uCi0gICAgICAgKiBA
bmFtZSBuZy4kcm9vdFNjb3BlLlNjb3BlIyRvbgotICAgICAgICogQG1ldGhvZE9mIG5nLiRyb290
U2NvcGUuU2NvcGUKLSAgICAgICAqIEBmdW5jdGlvbgotICAgICAgICoKLSAgICAgICAqIEBkZXNj
cmlwdGlvbgotICAgICAgICogTGlzdGVucyBvbiBldmVudHMgb2YgYSBnaXZlbiB0eXBlLiBTZWUg
e0BsaW5rIG5nLiRyb290U2NvcGUuU2NvcGUjJGVtaXQgJGVtaXR9IGZvciBkaXNjdXNzaW9uIG9m
Ci0gICAgICAgKiBldmVudCBsaWZlIGN5Y2xlLgotICAgICAgICoKLSAgICAgICAqIFRoZSBldmVu
dCBsaXN0ZW5lciBmdW5jdGlvbiBmb3JtYXQgaXM6IGBmdW5jdGlvbihldmVudCwgYXJncy4uLilg
LiBUaGUgYGV2ZW50YCBvYmplY3QKLSAgICAgICAqIHBhc3NlZCBpbnRvIHRoZSBsaXN0ZW5lciBo
YXMgdGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzOgotICAgICAgICoKLSAgICAgICAqICAgLSBgdGFy
Z2V0U2NvcGVgIC0gYHtTY29wZX1gOiB0aGUgc2NvcGUgb24gd2hpY2ggdGhlIGV2ZW50IHdhcyBg
JGVtaXRgLWVkIG9yIGAkYnJvYWRjYXN0YC1lZC4KLSAgICAgICAqICAgLSBgY3VycmVudFNjb3Bl
YCAtIGB7U2NvcGV9YDogdGhlIGN1cnJlbnQgc2NvcGUgd2hpY2ggaXMgaGFuZGxpbmcgdGhlIGV2
ZW50LgotICAgICAgICogICAtIGBuYW1lYCAtIGB7c3RyaW5nfWA6IE5hbWUgb2YgdGhlIGV2ZW50
LgotICAgICAgICogICAtIGBzdG9wUHJvcGFnYXRpb25gIC0gYHtmdW5jdGlvbj19YDogY2FsbGlu
ZyBgc3RvcFByb3BhZ2F0aW9uYCBmdW5jdGlvbiB3aWxsIGNhbmNlbCBmdXJ0aGVyIGV2ZW50Ci0g
ICAgICAgKiAgICAgcHJvcGFnYXRpb24gKGF2YWlsYWJsZSBvbmx5IGZvciBldmVudHMgdGhhdCB3
ZXJlIGAkZW1pdGAtZWQpLgotICAgICAgICogICAtIGBwcmV2ZW50RGVmYXVsdGAgLSBge2Z1bmN0
aW9ufWA6IGNhbGxpbmcgYHByZXZlbnREZWZhdWx0YCBzZXRzIGBkZWZhdWx0UHJldmVudGVkYCBm
bGFnIHRvIHRydWUuCi0gICAgICAgKiAgIC0gYGRlZmF1bHRQcmV2ZW50ZWRgIC0gYHtib29sZWFu
fWA6IHRydWUgaWYgYHByZXZlbnREZWZhdWx0YCB3YXMgY2FsbGVkLgotICAgICAgICoKLSAgICAg
ICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIEV2ZW50IG5hbWUgdG8gbGlzdGVuIG9uLgotICAgICAg
ICogQHBhcmFtIHtmdW5jdGlvbihldmVudCwgYXJncy4uLil9IGxpc3RlbmVyIEZ1bmN0aW9uIHRv
IGNhbGwgd2hlbiB0aGUgZXZlbnQgaXMgZW1pdHRlZC4KLSAgICAgICAqIEByZXR1cm5zIHtmdW5j
dGlvbigpfSBSZXR1cm5zIGEgZGVyZWdpc3RyYXRpb24gZnVuY3Rpb24gZm9yIHRoaXMgbGlzdGVu
ZXIuCi0gICAgICAgKi8KLSAgICAgICRvbjogZnVuY3Rpb24obmFtZSwgbGlzdGVuZXIpIHsKLSAg
ICAgICAgdmFyIG5hbWVkTGlzdGVuZXJzID0gdGhpcy4kJGxpc3RlbmVyc1tuYW1lXTsKLSAgICAg
ICAgaWYgKCFuYW1lZExpc3RlbmVycykgewotICAgICAgICAgIHRoaXMuJCRsaXN0ZW5lcnNbbmFt
ZV0gPSBuYW1lZExpc3RlbmVycyA9IFtdOwotICAgICAgICB9Ci0gICAgICAgIG5hbWVkTGlzdGVu
ZXJzLnB1c2gobGlzdGVuZXIpOwotCi0gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHsKLSAgICAg
ICAgICBuYW1lZExpc3RlbmVyc1tpbmRleE9mKG5hbWVkTGlzdGVuZXJzLCBsaXN0ZW5lcildID0g
bnVsbDsKLSAgICAgICAgfTsKLSAgICAgIH0sCi0KLQotICAgICAgLyoqCi0gICAgICAgKiBAbmdk
b2MgZnVuY3Rpb24KLSAgICAgICAqIEBuYW1lIG5nLiRyb290U2NvcGUuU2NvcGUjJGVtaXQKLSAg
ICAgICAqIEBtZXRob2RPZiBuZy4kcm9vdFNjb3BlLlNjb3BlCi0gICAgICAgKiBAZnVuY3Rpb24K
LSAgICAgICAqCi0gICAgICAgKiBAZGVzY3JpcHRpb24KLSAgICAgICAqIERpc3BhdGNoZXMgYW4g
ZXZlbnQgYG5hbWVgIHVwd2FyZHMgdGhyb3VnaCB0aGUgc2NvcGUgaGllcmFyY2h5IG5vdGlmeWlu
ZyB0aGUKLSAgICAgICAqIHJlZ2lzdGVyZWQge0BsaW5rIG5nLiRyb290U2NvcGUuU2NvcGUjJG9u
fSBsaXN0ZW5lcnMuCi0gICAgICAgKgotICAgICAgICogVGhlIGV2ZW50IGxpZmUgY3ljbGUgc3Rh
cnRzIGF0IHRoZSBzY29wZSBvbiB3aGljaCBgJGVtaXRgIHdhcyBjYWxsZWQuIEFsbAotICAgICAg
ICoge0BsaW5rIG5nLiRyb290U2NvcGUuU2NvcGUjJG9uIGxpc3RlbmVyc30gbGlzdGVuaW5nIGZv
ciBgbmFtZWAgZXZlbnQgb24gdGhpcyBzY29wZSBnZXQgbm90aWZpZWQuCi0gICAgICAgKiBBZnRl
cndhcmRzLCB0aGUgZXZlbnQgdHJhdmVyc2VzIHVwd2FyZHMgdG93YXJkIHRoZSByb290IHNjb3Bl
IGFuZCBjYWxscyBhbGwgcmVnaXN0ZXJlZAotICAgICAgICogbGlzdGVuZXJzIGFsb25nIHRoZSB3
YXkuIFRoZSBldmVudCB3aWxsIHN0b3AgcHJvcGFnYXRpbmcgaWYgb25lIG9mIHRoZSBsaXN0ZW5l
cnMgY2FuY2VscyBpdC4KLSAgICAgICAqCi0gICAgICAgKiBBbnkgZXhjZXB0aW9uIGVtaXR0ZWQg
ZnJvbSB0aGUge0BsaW5rIG5nLiRyb290U2NvcGUuU2NvcGUjJG9uIGxpc3RlbmVyc30gd2lsbCBi
ZSBwYXNzZWQKLSAgICAgICAqIG9udG8gdGhlIHtAbGluayBuZy4kZXhjZXB0aW9uSGFuZGxlciAk
ZXhjZXB0aW9uSGFuZGxlcn0gc2VydmljZS4KLSAgICAgICAqCi0gICAgICAgKiBAcGFyYW0ge3N0
cmluZ30gbmFtZSBFdmVudCBuYW1lIHRvIGVtaXQuCi0gICAgICAgKiBAcGFyYW0gey4uLip9IGFy
Z3MgT3B0aW9uYWwgc2V0IG9mIGFyZ3VtZW50cyB3aGljaCB3aWxsIGJlIHBhc3NlZCBvbnRvIHRo
ZSBldmVudCBsaXN0ZW5lcnMuCi0gICAgICAgKiBAcmV0dXJuIHtPYmplY3R9IEV2ZW50IG9iamVj
dCwgc2VlIHtAbGluayBuZy4kcm9vdFNjb3BlLlNjb3BlIyRvbn0KLSAgICAgICAqLwotICAgICAg
JGVtaXQ6IGZ1bmN0aW9uKG5hbWUsIGFyZ3MpIHsKLSAgICAgICAgdmFyIGVtcHR5ID0gW10sCi0g
ICAgICAgICAgICBuYW1lZExpc3RlbmVycywKLSAgICAgICAgICAgIHNjb3BlID0gdGhpcywKLSAg
ICAgICAgICAgIHN0b3BQcm9wYWdhdGlvbiA9IGZhbHNlLAotICAgICAgICAgICAgZXZlbnQgPSB7
Ci0gICAgICAgICAgICAgIG5hbWU6IG5hbWUsCi0gICAgICAgICAgICAgIHRhcmdldFNjb3BlOiBz
Y29wZSwKLSAgICAgICAgICAgICAgc3RvcFByb3BhZ2F0aW9uOiBmdW5jdGlvbigpIHtzdG9wUHJv
cGFnYXRpb24gPSB0cnVlO30sCi0gICAgICAgICAgICAgIHByZXZlbnREZWZhdWx0OiBmdW5jdGlv
bigpIHsKLSAgICAgICAgICAgICAgICBldmVudC5kZWZhdWx0UHJldmVudGVkID0gdHJ1ZTsKLSAg
ICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgZGVmYXVsdFByZXZlbnRlZDogZmFsc2UKLSAg
ICAgICAgICAgIH0sCi0gICAgICAgICAgICBsaXN0ZW5lckFyZ3MgPSBjb25jYXQoW2V2ZW50XSwg
YXJndW1lbnRzLCAxKSwKLSAgICAgICAgICAgIGksIGxlbmd0aDsKLQotICAgICAgICBkbyB7Ci0g
ICAgICAgICAgbmFtZWRMaXN0ZW5lcnMgPSBzY29wZS4kJGxpc3RlbmVyc1tuYW1lXSB8fCBlbXB0
eTsKLSAgICAgICAgICBldmVudC5jdXJyZW50U2NvcGUgPSBzY29wZTsKLSAgICAgICAgICBmb3Ig
KGk9MCwgbGVuZ3RoPW5hbWVkTGlzdGVuZXJzLmxlbmd0aDsgaTxsZW5ndGg7IGkrKykgewotCi0g
ICAgICAgICAgICAvLyBpZiBsaXN0ZW5lcnMgd2VyZSBkZXJlZ2lzdGVyZWQsIGRlZnJhZ21lbnQg
dGhlIGFycmF5Ci0gICAgICAgICAgICBpZiAoIW5hbWVkTGlzdGVuZXJzW2ldKSB7Ci0gICAgICAg
ICAgICAgIG5hbWVkTGlzdGVuZXJzLnNwbGljZShpLCAxKTsKLSAgICAgICAgICAgICAgaS0tOwot
ICAgICAgICAgICAgICBsZW5ndGgtLTsKLSAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICBuYW1lZExpc3RlbmVyc1tp
XS5hcHBseShudWxsLCBsaXN0ZW5lckFyZ3MpOwotICAgICAgICAgICAgICBpZiAoc3RvcFByb3Bh
Z2F0aW9uKSByZXR1cm4gZXZlbnQ7Ci0gICAgICAgICAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAg
ICAgICAgICRleGNlcHRpb25IYW5kbGVyKGUpOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0K
LSAgICAgICAgICAvL3RyYXZlcnNlIHVwd2FyZHMKLSAgICAgICAgICBzY29wZSA9IHNjb3BlLiRw
YXJlbnQ7Ci0gICAgICAgIH0gd2hpbGUgKHNjb3BlKTsKLQotICAgICAgICByZXR1cm4gZXZlbnQ7
Ci0gICAgICB9LAotCi0KLSAgICAgIC8qKgotICAgICAgICogQG5nZG9jIGZ1bmN0aW9uCi0gICAg
ICAgKiBAbmFtZSBuZy4kcm9vdFNjb3BlLlNjb3BlIyRicm9hZGNhc3QKLSAgICAgICAqIEBtZXRo
b2RPZiBuZy4kcm9vdFNjb3BlLlNjb3BlCi0gICAgICAgKiBAZnVuY3Rpb24KLSAgICAgICAqCi0g
ICAgICAgKiBAZGVzY3JpcHRpb24KLSAgICAgICAqIERpc3BhdGNoZXMgYW4gZXZlbnQgYG5hbWVg
IGRvd253YXJkcyB0byBhbGwgY2hpbGQgc2NvcGVzIChhbmQgdGhlaXIgY2hpbGRyZW4pIG5vdGlm
eWluZyB0aGUKLSAgICAgICAqIHJlZ2lzdGVyZWQge0BsaW5rIG5nLiRyb290U2NvcGUuU2NvcGUj
JG9ufSBsaXN0ZW5lcnMuCi0gICAgICAgKgotICAgICAgICogVGhlIGV2ZW50IGxpZmUgY3ljbGUg
c3RhcnRzIGF0IHRoZSBzY29wZSBvbiB3aGljaCBgJGJyb2FkY2FzdGAgd2FzIGNhbGxlZC4gQWxs
Ci0gICAgICAgKiB7QGxpbmsgbmcuJHJvb3RTY29wZS5TY29wZSMkb24gbGlzdGVuZXJzfSBsaXN0
ZW5pbmcgZm9yIGBuYW1lYCBldmVudCBvbiB0aGlzIHNjb3BlIGdldCBub3RpZmllZC4KLSAgICAg
ICAqIEFmdGVyd2FyZHMsIHRoZSBldmVudCBwcm9wYWdhdGVzIHRvIGFsbCBkaXJlY3QgYW5kIGlu
ZGlyZWN0IHNjb3BlcyBvZiB0aGUgY3VycmVudCBzY29wZSBhbmQKLSAgICAgICAqIGNhbGxzIGFs
bCByZWdpc3RlcmVkIGxpc3RlbmVycyBhbG9uZyB0aGUgd2F5LiBUaGUgZXZlbnQgY2Fubm90IGJl
IGNhbmNlbGVkLgotICAgICAgICoKLSAgICAgICAqIEFueSBleGNlcHRpb24gZW1taXRlZCBmcm9t
IHRoZSB7QGxpbmsgbmcuJHJvb3RTY29wZS5TY29wZSMkb24gbGlzdGVuZXJzfSB3aWxsIGJlIHBh
c3NlZAotICAgICAgICogb250byB0aGUge0BsaW5rIG5nLiRleGNlcHRpb25IYW5kbGVyICRleGNl
cHRpb25IYW5kbGVyfSBzZXJ2aWNlLgotICAgICAgICoKLSAgICAgICAqIEBwYXJhbSB7c3RyaW5n
fSBuYW1lIEV2ZW50IG5hbWUgdG8gYnJvYWRjYXN0LgotICAgICAgICogQHBhcmFtIHsuLi4qfSBh
cmdzIE9wdGlvbmFsIHNldCBvZiBhcmd1bWVudHMgd2hpY2ggd2lsbCBiZSBwYXNzZWQgb250byB0
aGUgZXZlbnQgbGlzdGVuZXJzLgotICAgICAgICogQHJldHVybiB7T2JqZWN0fSBFdmVudCBvYmpl
Y3QsIHNlZSB7QGxpbmsgbmcuJHJvb3RTY29wZS5TY29wZSMkb259Ci0gICAgICAgKi8KLSAgICAg
ICRicm9hZGNhc3Q6IGZ1bmN0aW9uKG5hbWUsIGFyZ3MpIHsKLSAgICAgICAgdmFyIHRhcmdldCA9
IHRoaXMsCi0gICAgICAgICAgICBjdXJyZW50ID0gdGFyZ2V0LAotICAgICAgICAgICAgbmV4dCA9
IHRhcmdldCwKLSAgICAgICAgICAgIGV2ZW50ID0gewotICAgICAgICAgICAgICBuYW1lOiBuYW1l
LAotICAgICAgICAgICAgICB0YXJnZXRTY29wZTogdGFyZ2V0LAotICAgICAgICAgICAgICBwcmV2
ZW50RGVmYXVsdDogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgZXZlbnQuZGVmYXVsdFBy
ZXZlbnRlZCA9IHRydWU7Ci0gICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgIGRlZmF1bHRQ
cmV2ZW50ZWQ6IGZhbHNlCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgbGlzdGVuZXJBcmdz
ID0gY29uY2F0KFtldmVudF0sIGFyZ3VtZW50cywgMSksCi0gICAgICAgICAgICBsaXN0ZW5lcnMs
IGksIGxlbmd0aDsKLQotICAgICAgICAvL2Rvd24gd2hpbGUgeW91IGNhbiwgdGhlbiB1cCBhbmQg
bmV4dCBzaWJsaW5nIG9yIHVwIGFuZCBuZXh0IHNpYmxpbmcgdW50aWwgYmFjayBhdCByb290Ci0g
ICAgICAgIGRvIHsKLSAgICAgICAgICBjdXJyZW50ID0gbmV4dDsKLSAgICAgICAgICBldmVudC5j
dXJyZW50U2NvcGUgPSBjdXJyZW50OwotICAgICAgICAgIGxpc3RlbmVycyA9IGN1cnJlbnQuJCRs
aXN0ZW5lcnNbbmFtZV0gfHwgW107Ci0gICAgICAgICAgZm9yIChpPTAsIGxlbmd0aCA9IGxpc3Rl
bmVycy5sZW5ndGg7IGk8bGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgIC8vIGlmIGxpc3RlbmVy
cyB3ZXJlIGRlcmVnaXN0ZXJlZCwgZGVmcmFnbWVudCB0aGUgYXJyYXkKLSAgICAgICAgICAgIGlm
ICghbGlzdGVuZXJzW2ldKSB7Ci0gICAgICAgICAgICAgIGxpc3RlbmVycy5zcGxpY2UoaSwgMSk7
Ci0gICAgICAgICAgICAgIGktLTsKLSAgICAgICAgICAgICAgbGVuZ3RoLS07Ci0gICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0cnkgewotICAgICAg
ICAgICAgICBsaXN0ZW5lcnNbaV0uYXBwbHkobnVsbCwgbGlzdGVuZXJBcmdzKTsKLSAgICAgICAg
ICAgIH0gY2F0Y2goZSkgewotICAgICAgICAgICAgICAkZXhjZXB0aW9uSGFuZGxlcihlKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0KLSAgICAgICAgICAvLyBJbnNhbml0eSBXYXJuaW5n
OiBzY29wZSBkZXB0aC1maXJzdCB0cmF2ZXJzYWwKLSAgICAgICAgICAvLyB5ZXMsIHRoaXMgY29k
ZSBpcyBhIGJpdCBjcmF6eSwgYnV0IGl0IHdvcmtzIGFuZCB3ZSBoYXZlIHRlc3RzIHRvIHByb3Zl
IGl0IQotICAgICAgICAgIC8vIHRoaXMgcGllY2Ugc2hvdWxkIGJlIGtlcHQgaW4gc3luYyB3aXRo
IHRoZSB0cmF2ZXJzYWwgaW4gJGRpZ2VzdAotICAgICAgICAgIGlmICghKG5leHQgPSAoY3VycmVu
dC4kJGNoaWxkSGVhZCB8fCAoY3VycmVudCAhPT0gdGFyZ2V0ICYmIGN1cnJlbnQuJCRuZXh0U2li
bGluZykpKSkgewotICAgICAgICAgICAgd2hpbGUoY3VycmVudCAhPT0gdGFyZ2V0ICYmICEobmV4
dCA9IGN1cnJlbnQuJCRuZXh0U2libGluZykpIHsKLSAgICAgICAgICAgICAgY3VycmVudCA9IGN1
cnJlbnQuJHBhcmVudDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgIH0gd2hp
bGUgKChjdXJyZW50ID0gbmV4dCkpOwotCi0gICAgICAgIHJldHVybiBldmVudDsKLSAgICAgIH0K
LSAgICB9OwotCi0gICAgdmFyICRyb290U2NvcGUgPSBuZXcgU2NvcGUoKTsKLQotICAgIHJldHVy
biAkcm9vdFNjb3BlOwotCi0KLSAgICBmdW5jdGlvbiBiZWdpblBoYXNlKHBoYXNlKSB7Ci0gICAg
ICBpZiAoJHJvb3RTY29wZS4kJHBoYXNlKSB7Ci0gICAgICAgIHRocm93IEVycm9yKCRyb290U2Nv
cGUuJCRwaGFzZSArICcgYWxyZWFkeSBpbiBwcm9ncmVzcycpOwotICAgICAgfQotCi0gICAgICAk
cm9vdFNjb3BlLiQkcGhhc2UgPSBwaGFzZTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBjbGVhclBo
YXNlKCkgewotICAgICAgJHJvb3RTY29wZS4kJHBoYXNlID0gbnVsbDsKLSAgICB9Ci0KLSAgICBm
dW5jdGlvbiBjb21waWxlVG9GbihleHAsIG5hbWUpIHsKLSAgICAgIHZhciBmbiA9ICRwYXJzZShl
eHApOwotICAgICAgYXNzZXJ0QXJnRm4oZm4sIG5hbWUpOwotICAgICAgcmV0dXJuIGZuOwotICAg
IH0KLQotICAgIC8qKgotICAgICAqIGZ1bmN0aW9uIHVzZWQgYXMgYW4gaW5pdGlhbCB2YWx1ZSBm
b3Igd2F0Y2hlcnMuCi0gICAgICogYmVjYXVzZSBpdCdzIHVuaXF1ZSB3ZSBjYW4gZWFzaWx5IHRl
bGwgaXQgYXBhcnQgZnJvbSBvdGhlciB2YWx1ZXMKLSAgICAgKi8KLSAgICBmdW5jdGlvbiBpbml0
V2F0Y2hWYWwoKSB7fQotICB9XTsKLX0KLQotLyoqCi0gKiAhISEgVGhpcyBpcyBhbiB1bmRvY3Vt
ZW50ZWQgInByaXZhdGUiIHNlcnZpY2UgISEhCi0gKgotICogQG5hbWUgbmcuJHNuaWZmZXIKLSAq
IEByZXF1aXJlcyAkd2luZG93Ci0gKgotICogQHByb3BlcnR5IHtib29sZWFufSBoaXN0b3J5IERv
ZXMgdGhlIGJyb3dzZXIgc3VwcG9ydCBodG1sNSBoaXN0b3J5IGFwaSA/Ci0gKiBAcHJvcGVydHkg
e2Jvb2xlYW59IGhhc2hjaGFuZ2UgRG9lcyB0aGUgYnJvd3NlciBzdXBwb3J0IGhhc2hjaGFuZ2Ug
ZXZlbnQgPwotICoKLSAqIEBkZXNjcmlwdGlvbgotICogVGhpcyBpcyB2ZXJ5IHNpbXBsZSBpbXBs
ZW1lbnRhdGlvbiBvZiB0ZXN0aW5nIGJyb3dzZXIncyBmZWF0dXJlcy4KLSAqLwotZnVuY3Rpb24g
JFNuaWZmZXJQcm92aWRlcigpIHsKLSAgdGhpcy4kZ2V0ID0gWyckd2luZG93JywgZnVuY3Rpb24o
JHdpbmRvdykgewotICAgIHZhciBldmVudFN1cHBvcnQgPSB7fSwKLSAgICAgICAgYW5kcm9pZCA9
IGludCgoL2FuZHJvaWQgKFxkKykvLmV4ZWMobG93ZXJjYXNlKCR3aW5kb3cubmF2aWdhdG9yLnVz
ZXJBZ2VudCkpIHx8IFtdKVsxXSk7Ci0KLSAgICByZXR1cm4gewotICAgICAgLy8gQW5kcm9pZCBo
YXMgaGlzdG9yeS5wdXNoU3RhdGUsIGJ1dCBpdCBkb2VzIG5vdCB1cGRhdGUgbG9jYXRpb24gY29y
cmVjdGx5Ci0gICAgICAvLyBzbyBsZXQncyBub3QgdXNlIHRoZSBoaXN0b3J5IEFQSSBhdCBhbGwu
Ci0gICAgICAvLyBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvYW5kcm9pZC9pc3N1ZXMvZGV0YWls
P2lkPTE3NDcxCi0gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyLmpz
L2lzc3Vlcy85MDQKLSAgICAgIGhpc3Rvcnk6ICEhKCR3aW5kb3cuaGlzdG9yeSAmJiAkd2luZG93
Lmhpc3RvcnkucHVzaFN0YXRlICYmICEoYW5kcm9pZCA8IDQpKSwKLSAgICAgIGhhc2hjaGFuZ2U6
ICdvbmhhc2hjaGFuZ2UnIGluICR3aW5kb3cgJiYKLSAgICAgICAgICAgICAgICAgIC8vIElFOCBj
b21wYXRpYmxlIG1vZGUgbGllcwotICAgICAgICAgICAgICAgICAgKCEkd2luZG93LmRvY3VtZW50
LmRvY3VtZW50TW9kZSB8fCAkd2luZG93LmRvY3VtZW50LmRvY3VtZW50TW9kZSA+IDcpLAotICAg
ICAgaGFzRXZlbnQ6IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIC8vIElFOSBpbXBsZW1lbnRz
ICdpbnB1dCcgZXZlbnQgaXQncyBzbyBmdWJhcmVkIHRoYXQgd2UgcmF0aGVyIHByZXRlbmQgdGhh
dCBpdCBkb2Vzbid0IGhhdmUKLSAgICAgICAgLy8gaXQuIEluIHBhcnRpY3VsYXIgdGhlIGV2ZW50
IGlzIG5vdCBmaXJlZCB3aGVuIGJhY2tzcGFjZSBvciBkZWxldGUga2V5IGFyZSBwcmVzc2VkIG9y
Ci0gICAgICAgIC8vIHdoZW4gY3V0IG9wZXJhdGlvbiBpcyBwZXJmb3JtZWQuCi0gICAgICAgIGlm
IChldmVudCA9PSAnaW5wdXQnICYmIG1zaWUgPT0gOSkgcmV0dXJuIGZhbHNlOwotCi0gICAgICAg
IGlmIChpc1VuZGVmaW5lZChldmVudFN1cHBvcnRbZXZlbnRdKSkgewotICAgICAgICAgIHZhciBk
aXZFbG0gPSAkd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwotICAgICAgICAg
IGV2ZW50U3VwcG9ydFtldmVudF0gPSAnb24nICsgZXZlbnQgaW4gZGl2RWxtOwotICAgICAgICB9
Ci0KLSAgICAgICAgcmV0dXJuIGV2ZW50U3VwcG9ydFtldmVudF07Ci0gICAgICB9LAotICAgICAg
Ly8gVE9ETyhpKTogY3VycmVudGx5IHRoZXJlIGlzIG5vIHdheSB0byBmZWF0dXJlIGRldGVjdCBD
U1Agd2l0aG91dCB0cmlnZ2VyaW5nIGFsZXJ0cwotICAgICAgY3NwOiBmYWxzZQotICAgIH07Ci0g
IH1dOwotfQotCi0vKioKLSAqIEBuZ2RvYyBvYmplY3QKLSAqIEBuYW1lIG5nLiR3aW5kb3cKLSAq
Ci0gKiBAZGVzY3JpcHRpb24KLSAqIEEgcmVmZXJlbmNlIHRvIHRoZSBicm93c2VyJ3MgYHdpbmRv
d2Agb2JqZWN0LiBXaGlsZSBgd2luZG93YAotICogaXMgZ2xvYmFsbHkgYXZhaWxhYmxlIGluIEph
dmFTY3JpcHQsIGl0IGNhdXNlcyB0ZXN0YWJpbGl0eSBwcm9ibGVtcywgYmVjYXVzZQotICogaXQg
aXMgYSBnbG9iYWwgdmFyaWFibGUuIEluIGFuZ3VsYXIgd2UgYWx3YXlzIHJlZmVyIHRvIGl0IHRo
cm91Z2ggdGhlCi0gKiBgJHdpbmRvd2Agc2VydmljZSwgc28gaXQgbWF5IGJlIG92ZXJyaWRlbiwg
cmVtb3ZlZCBvciBtb2NrZWQgZm9yIHRlc3RpbmcuCi0gKgotICogQWxsIGV4cHJlc3Npb25zIGFy
ZSBldmFsdWF0ZWQgd2l0aCByZXNwZWN0IHRvIGN1cnJlbnQgc2NvcGUgc28gdGhleSBkb24ndAot
ICogc3VmZmVyIGZyb20gd2luZG93IGdsb2JhbGl0eS4KLSAqCi0gKiBAZXhhbXBsZQotICAgPGRv
YzpleGFtcGxlPgotICAgICA8ZG9jOnNvdXJjZT4KLSAgICAgICA8c2NyaXB0PgotICAgICAgICAg
ZnVuY3Rpb24gQ3RybCgkc2NvcGUsICR3aW5kb3cpIHsKLSAgICAgICAgICAgJHNjb3BlLiR3aW5k
b3cgPSAkd2luZG93OwotICAgICAgICAgICAkc2NvcGUuZ3JlZXRpbmcgPSAnSGVsbG8sIFdvcmxk
ISc7Ci0gICAgICAgICB9Ci0gICAgICAgPC9zY3JpcHQ+Ci0gICAgICAgPGRpdiBuZy1jb250cm9s
bGVyPSJDdHJsIj4KLSAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuZy1tb2RlbD0iZ3JlZXRp
bmciIC8+Ci0gICAgICAgICA8YnV0dG9uIG5nLWNsaWNrPSIkd2luZG93LmFsZXJ0KGdyZWV0aW5n
KSI+QUxFUlQ8L2J1dHRvbj4KLSAgICAgICA8L2Rpdj4KLSAgICAgPC9kb2M6c291cmNlPgotICAg
ICA8ZG9jOnNjZW5hcmlvPgotICAgICAgaXQoJ3Nob3VsZCBkaXNwbGF5IHRoZSBncmVldGluZyBp
biB0aGUgaW5wdXQgYm94JywgZnVuY3Rpb24oKSB7Ci0gICAgICAgaW5wdXQoJ2dyZWV0aW5nJyku
ZW50ZXIoJ0hlbGxvLCBFMkUgVGVzdHMnKTsKLSAgICAgICAvLyBJZiB3ZSBjbGljayB0aGUgYnV0
dG9uIGl0IHdpbGwgYmxvY2sgdGhlIHRlc3QgcnVubmVyCi0gICAgICAgLy8gZWxlbWVudCgnOmJ1
dHRvbicpLmNsaWNrKCk7Ci0gICAgICB9KTsKLSAgICAgPC9kb2M6c2NlbmFyaW8+Ci0gICA8L2Rv
YzpleGFtcGxlPgotICovCi1mdW5jdGlvbiAkV2luZG93UHJvdmlkZXIoKXsKLSAgdGhpcy4kZ2V0
ID0gdmFsdWVGbih3aW5kb3cpOwotfQotCi0vKioKLSAqIFBhcnNlIGhlYWRlcnMgaW50byBrZXkg
dmFsdWUgb2JqZWN0Ci0gKgotICogQHBhcmFtIHtzdHJpbmd9IGhlYWRlcnMgUmF3IGhlYWRlcnMg
YXMgYSBzdHJpbmcKLSAqIEByZXR1cm5zIHtPYmplY3R9IFBhcnNlZCBoZWFkZXJzIGFzIGtleSB2
YWx1ZSBvYmplY3QKLSAqLwotZnVuY3Rpb24gcGFyc2VIZWFkZXJzKGhlYWRlcnMpIHsKLSAgdmFy
IHBhcnNlZCA9IHt9LCBrZXksIHZhbCwgaTsKLQotICBpZiAoIWhlYWRlcnMpIHJldHVybiBwYXJz
ZWQ7Ci0KLSAgZm9yRWFjaChoZWFkZXJzLnNwbGl0KCdcbicpLCBmdW5jdGlvbihsaW5lKSB7Ci0g
ICAgaSA9IGxpbmUuaW5kZXhPZignOicpOwotICAgIGtleSA9IGxvd2VyY2FzZSh0cmltKGxpbmUu
c3Vic3RyKDAsIGkpKSk7Ci0gICAgdmFsID0gdHJpbShsaW5lLnN1YnN0cihpICsgMSkpOwotCi0g
ICAgaWYgKGtleSkgewotICAgICAgaWYgKHBhcnNlZFtrZXldKSB7Ci0gICAgICAgIHBhcnNlZFtr
ZXldICs9ICcsICcgKyB2YWw7Ci0gICAgICB9IGVsc2UgewotICAgICAgICBwYXJzZWRba2V5XSA9
IHZhbDsKLSAgICAgIH0KLSAgICB9Ci0gIH0pOwotCi0gIHJldHVybiBwYXJzZWQ7Ci19Ci0KLQot
LyoqCi0gKiBSZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCBwcm92aWRlcyBhY2Nlc3MgdG8gcGFyc2Vk
IGhlYWRlcnMuCi0gKgotICogSGVhZGVycyBhcmUgbGF6eSBwYXJzZWQgd2hlbiBmaXJzdCByZXF1
ZXN0ZWQuCi0gKiBAc2VlIHBhcnNlSGVhZGVycwotICoKLSAqIEBwYXJhbSB7KHN0cmluZ3xPYmpl
Y3QpfSBoZWFkZXJzIEhlYWRlcnMgdG8gcHJvdmlkZSBhY2Nlc3MgdG8uCi0gKiBAcmV0dXJucyB7
ZnVuY3Rpb24oc3RyaW5nPSl9IFJldHVybnMgYSBnZXR0ZXIgZnVuY3Rpb24gd2hpY2ggaWYgY2Fs
bGVkIHdpdGg6Ci0gKgotICogICAtIGlmIGNhbGxlZCB3aXRoIHNpbmdsZSBhbiBhcmd1bWVudCBy
ZXR1cm5zIGEgc2luZ2xlIGhlYWRlciB2YWx1ZSBvciBudWxsCi0gKiAgIC0gaWYgY2FsbGVkIHdp
dGggbm8gYXJndW1lbnRzIHJldHVybnMgYW4gb2JqZWN0IGNvbnRhaW5pbmcgYWxsIGhlYWRlcnMu
Ci0gKi8KLWZ1bmN0aW9uIGhlYWRlcnNHZXR0ZXIoaGVhZGVycykgewotICB2YXIgaGVhZGVyc09i
aiA9IGlzT2JqZWN0KGhlYWRlcnMpID8gaGVhZGVycyA6IHVuZGVmaW5lZDsKLQotICByZXR1cm4g
ZnVuY3Rpb24obmFtZSkgewotICAgIGlmICghaGVhZGVyc09iaikgaGVhZGVyc09iaiA9ICBwYXJz
ZUhlYWRlcnMoaGVhZGVycyk7Ci0KLSAgICBpZiAobmFtZSkgewotICAgICAgcmV0dXJuIGhlYWRl
cnNPYmpbbG93ZXJjYXNlKG5hbWUpXSB8fCBudWxsOwotICAgIH0KLQotICAgIHJldHVybiBoZWFk
ZXJzT2JqOwotICB9OwotfQotCi0KLS8qKgotICogQ2hhaW4gYWxsIGdpdmVuIGZ1bmN0aW9ucwot
ICoKLSAqIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCBmb3IgYm90aCByZXF1ZXN0IGFuZCByZXNwb25z
ZSB0cmFuc2Zvcm1pbmcKLSAqCi0gKiBAcGFyYW0geyp9IGRhdGEgRGF0YSB0byB0cmFuc2Zvcm0u
Ci0gKiBAcGFyYW0ge2Z1bmN0aW9uKHN0cmluZz0pfSBoZWFkZXJzIEh0dHAgaGVhZGVycyBnZXR0
ZXIgZm4uCi0gKiBAcGFyYW0geyhmdW5jdGlvbnxBcnJheS48ZnVuY3Rpb24+KX0gZm5zIEZ1bmN0
aW9uIG9yIGFuIGFycmF5IG9mIGZ1bmN0aW9ucy4KLSAqIEByZXR1cm5zIHsqfSBUcmFuc2Zvcm1l
ZCBkYXRhLgotICovCi1mdW5jdGlvbiB0cmFuc2Zvcm1EYXRhKGRhdGEsIGhlYWRlcnMsIGZucykg
ewotICBpZiAoaXNGdW5jdGlvbihmbnMpKQotICAgIHJldHVybiBmbnMoZGF0YSwgaGVhZGVycyk7
Ci0KLSAgZm9yRWFjaChmbnMsIGZ1bmN0aW9uKGZuKSB7Ci0gICAgZGF0YSA9IGZuKGRhdGEsIGhl
YWRlcnMpOwotICB9KTsKLQotICByZXR1cm4gZGF0YTsKLX0KLQotCi1mdW5jdGlvbiBpc1N1Y2Nl
c3Moc3RhdHVzKSB7Ci0gIHJldHVybiAyMDAgPD0gc3RhdHVzICYmIHN0YXR1cyA8IDMwMDsKLX0K
LQotCi1mdW5jdGlvbiAkSHR0cFByb3ZpZGVyKCkgewotICB2YXIgSlNPTl9TVEFSVCA9IC9eXHMq
KFxbfFx7W15ce10pLywKLSAgICAgIEpTT05fRU5EID0gL1tcfVxdXVxzKiQvLAotICAgICAgUFJP
VEVDVElPTl9QUkVGSVggPSAvXlwpXF1cfScsP1xuLzsKLQotICB2YXIgJGNvbmZpZyA9IHRoaXMu
ZGVmYXVsdHMgPSB7Ci0gICAgLy8gdHJhbnNmb3JtIGluY29taW5nIHJlc3BvbnNlIGRhdGEKLSAg
ICB0cmFuc2Zvcm1SZXNwb25zZTogW2Z1bmN0aW9uKGRhdGEpIHsKLSAgICAgIGlmIChpc1N0cmlu
ZyhkYXRhKSkgewotICAgICAgICAvLyBzdHJpcCBqc29uIHZ1bG5lcmFiaWxpdHkgcHJvdGVjdGlv
biBwcmVmaXgKLSAgICAgICAgZGF0YSA9IGRhdGEucmVwbGFjZShQUk9URUNUSU9OX1BSRUZJWCwg
JycpOwotICAgICAgICBpZiAoSlNPTl9TVEFSVC50ZXN0KGRhdGEpICYmIEpTT05fRU5ELnRlc3Qo
ZGF0YSkpCi0gICAgICAgICAgZGF0YSA9IGZyb21Kc29uKGRhdGEsIHRydWUpOwotICAgICAgfQot
ICAgICAgcmV0dXJuIGRhdGE7Ci0gICAgfV0sCi0KLSAgICAvLyB0cmFuc2Zvcm0gb3V0Z29pbmcg
cmVxdWVzdCBkYXRhCi0gICAgdHJhbnNmb3JtUmVxdWVzdDogW2Z1bmN0aW9uKGQpIHsKLSAgICAg
IHJldHVybiBpc09iamVjdChkKSAmJiAhaXNGaWxlKGQpID8gdG9Kc29uKGQpIDogZDsKLSAgICB9
XSwKLQotICAgIC8vIGRlZmF1bHQgaGVhZGVycwotICAgIGhlYWRlcnM6IHsKLSAgICAgIGNvbW1v
bjogewotICAgICAgICAnQWNjZXB0JzogJ2FwcGxpY2F0aW9uL2pzb24sIHRleHQvcGxhaW4sICov
KicsCi0gICAgICAgICdYLVJlcXVlc3RlZC1XaXRoJzogJ1hNTEh0dHBSZXF1ZXN0JwotICAgICAg
fSwKLSAgICAgIHBvc3Q6IHsnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb247Y2hhcnNl
dD11dGYtOCd9LAotICAgICAgcHV0OiAgeydDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNv
bjtjaGFyc2V0PXV0Zi04J30KLSAgICB9Ci0gIH07Ci0KLSAgdmFyIHByb3ZpZGVyUmVzcG9uc2VJ
bnRlcmNlcHRvcnMgPSB0aGlzLnJlc3BvbnNlSW50ZXJjZXB0b3JzID0gW107Ci0KLSAgdGhpcy4k
Z2V0ID0gWyckaHR0cEJhY2tlbmQnLCAnJGJyb3dzZXInLCAnJGNhY2hlRmFjdG9yeScsICckcm9v
dFNjb3BlJywgJyRxJywgJyRpbmplY3RvcicsCi0gICAgICBmdW5jdGlvbigkaHR0cEJhY2tlbmQs
ICRicm93c2VyLCAkY2FjaGVGYWN0b3J5LCAkcm9vdFNjb3BlLCAkcSwgJGluamVjdG9yKSB7Ci0K
LSAgICB2YXIgZGVmYXVsdENhY2hlID0gJGNhY2hlRmFjdG9yeSgnJGh0dHAnKSwKLSAgICAgICAg
cmVzcG9uc2VJbnRlcmNlcHRvcnMgPSBbXTsKLQotICAgIGZvckVhY2gocHJvdmlkZXJSZXNwb25z
ZUludGVyY2VwdG9ycywgZnVuY3Rpb24oaW50ZXJjZXB0b3IpIHsKLSAgICAgIHJlc3BvbnNlSW50
ZXJjZXB0b3JzLnB1c2goCi0gICAgICAgICAgaXNTdHJpbmcoaW50ZXJjZXB0b3IpCi0gICAgICAg
ICAgICAgID8gJGluamVjdG9yLmdldChpbnRlcmNlcHRvcikKLSAgICAgICAgICAgICAgOiAkaW5q
ZWN0b3IuaW52b2tlKGludGVyY2VwdG9yKQotICAgICAgKTsKLSAgICB9KTsKLQotCi0gICAgLyoq
Ci0gICAgICogQG5nZG9jIGZ1bmN0aW9uCi0gICAgICogQG5hbWUgbmcuJGh0dHAKLSAgICAgKiBA
cmVxdWlyZXMgJGh0dHBCYWNrZW5kCi0gICAgICogQHJlcXVpcmVzICRicm93c2VyCi0gICAgICog
QHJlcXVpcmVzICRjYWNoZUZhY3RvcnkKLSAgICAgKiBAcmVxdWlyZXMgJHJvb3RTY29wZQotICAg
ICAqIEByZXF1aXJlcyAkcQotICAgICAqIEByZXF1aXJlcyAkaW5qZWN0b3IKLSAgICAgKgotICAg
ICAqIEBkZXNjcmlwdGlvbgotICAgICAqIFRoZSBgJGh0dHBgIHNlcnZpY2UgaXMgYSBjb3JlIEFu
Z3VsYXIgc2VydmljZSB0aGF0IGZhY2lsaXRhdGVzIGNvbW11bmljYXRpb24gd2l0aCB0aGUgcmVt
b3RlCi0gICAgICogSFRUUCBzZXJ2ZXJzIHZpYSB0aGUgYnJvd3NlcidzIHtAbGluayBodHRwczov
L2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi94bWxodHRwcmVxdWVzdAotICAgICAqIFhNTEh0dHBS
ZXF1ZXN0fSBvYmplY3Qgb3IgdmlhIHtAbGluayBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtp
L0pTT05QIEpTT05QfS4KLSAgICAgKgotICAgICAqIEZvciB1bml0IHRlc3RpbmcgYXBwbGljYXRp
b25zIHRoYXQgdXNlIGAkaHR0cGAgc2VydmljZSwgc2VlCi0gICAgICoge0BsaW5rIG5nTW9jay4k
aHR0cEJhY2tlbmQgJGh0dHBCYWNrZW5kIG1vY2t9LgotICAgICAqCi0gICAgICogRm9yIGEgaGln
aGVyIGxldmVsIG9mIGFic3RyYWN0aW9uLCBwbGVhc2UgY2hlY2sgb3V0IHRoZSB7QGxpbmsgbmdS
ZXNvdXJjZS4kcmVzb3VyY2UKLSAgICAgKiAkcmVzb3VyY2V9IHNlcnZpY2UuCi0gICAgICoKLSAg
ICAgKiBUaGUgJGh0dHAgQVBJIGlzIGJhc2VkIG9uIHRoZSB7QGxpbmsgbmcuJHEgZGVmZXJyZWQv
cHJvbWlzZSBBUElzfSBleHBvc2VkIGJ5Ci0gICAgICogdGhlICRxIHNlcnZpY2UuIFdoaWxlIGZv
ciBzaW1wbGUgdXNhZ2UgcGF0dGVybnMgdGhpcyBkb2Vzbid0IG1hdHRlciBtdWNoLCBmb3IgYWR2
YW5jZWQgdXNhZ2UKLSAgICAgKiBpdCBpcyBpbXBvcnRhbnQgdG8gZmFtaWxpYXJpemUgeW91cnNl
bGYgd2l0aCB0aGVzZSBBUElzIGFuZCB0aGUgZ3VhcmFudGVlcyB0aGV5IHByb3ZpZGUuCi0gICAg
ICoKLSAgICAgKgotICAgICAqICMgR2VuZXJhbCB1c2FnZQotICAgICAqIFRoZSBgJGh0dHBgIHNl
cnZpY2UgaXMgYSBmdW5jdGlvbiB3aGljaCB0YWtlcyBhIHNpbmdsZSBhcmd1bWVudCDigJQgYSBj
b25maWd1cmF0aW9uIG9iamVjdCDigJQKLSAgICAgKiB0aGF0IGlzIHVzZWQgdG8gZ2VuZXJhdGUg
YW4gSFRUUCByZXF1ZXN0IGFuZCByZXR1cm5zICBhIHtAbGluayBuZy4kcSBwcm9taXNlfQotICAg
ICAqIHdpdGggdHdvICRodHRwIHNwZWNpZmljIG1ldGhvZHM6IGBzdWNjZXNzYCBhbmQgYGVycm9y
YC4KLSAgICAgKgotICAgICAqIDxwcmU+Ci0gICAgICogICAkaHR0cCh7bWV0aG9kOiAnR0VUJywg
dXJsOiAnL3NvbWVVcmwnfSkuCi0gICAgICogICAgIHN1Y2Nlc3MoZnVuY3Rpb24oZGF0YSwgc3Rh
dHVzLCBoZWFkZXJzLCBjb25maWcpIHsKLSAgICAgKiAgICAgICAvLyB0aGlzIGNhbGxiYWNrIHdp
bGwgYmUgY2FsbGVkIGFzeW5jaHJvbm91c2x5Ci0gICAgICogICAgICAgLy8gd2hlbiB0aGUgcmVz
cG9uc2UgaXMgYXZhaWxhYmxlCi0gICAgICogICAgIH0pLgotICAgICAqICAgICBlcnJvcihmdW5j
dGlvbihkYXRhLCBzdGF0dXMsIGhlYWRlcnMsIGNvbmZpZykgewotICAgICAqICAgICAgIC8vIGNh
bGxlZCBhc3luY2hyb25vdXNseSBpZiBhbiBlcnJvciBvY2N1cnMKLSAgICAgKiAgICAgICAvLyBv
ciBzZXJ2ZXIgcmV0dXJucyByZXNwb25zZSB3aXRoIGFuIGVycm9yIHN0YXR1cy4KLSAgICAgKiAg
ICAgfSk7Ci0gICAgICogPC9wcmU+Ci0gICAgICoKLSAgICAgKiBTaW5jZSB0aGUgcmV0dXJuZWQg
dmFsdWUgb2YgY2FsbGluZyB0aGUgJGh0dHAgZnVuY3Rpb24gaXMgYSBgcHJvbWlzZWAsIHlvdSBj
YW4gYWxzbyB1c2UKLSAgICAgKiB0aGUgYHRoZW5gIG1ldGhvZCB0byByZWdpc3RlciBjYWxsYmFj
a3MsIGFuZCB0aGVzZSBjYWxsYmFja3Mgd2lsbCByZWNlaXZlIGEgc2luZ2xlIGFyZ3VtZW50IOKA
kwotICAgICAqIGFuIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIHJlc3BvbnNlLiBTZWUgdGhlIEFQ
SSBzaWduYXR1cmUgYW5kIHR5cGUgaW5mbyBiZWxvdyBmb3IgbW9yZQotICAgICAqIGRldGFpbHMu
Ci0gICAgICoKLSAgICAgKiBBIHJlc3BvbnNlIHN0YXR1cyBjb2RlIGJldHdlZW4gMjAwIGFuZCAy
OTkgaXMgY29uc2lkZXJlZCBhIHN1Y2Nlc3Mgc3RhdHVzIGFuZAotICAgICAqIHdpbGwgcmVzdWx0
IGluIHRoZSBzdWNjZXNzIGNhbGxiYWNrIGJlaW5nIGNhbGxlZC4gTm90ZSB0aGF0IGlmIHRoZSBy
ZXNwb25zZSBpcyBhIHJlZGlyZWN0LAotICAgICAqIFhNTEh0dHBSZXF1ZXN0IHdpbGwgdHJhbnNw
YXJlbnRseSBmb2xsb3cgaXQsIG1lYW5pbmcgdGhhdCB0aGUgZXJyb3IgY2FsbGJhY2sgd2lsbCBu
b3QgYmUKLSAgICAgKiBjYWxsZWQgZm9yIHN1Y2ggcmVzcG9uc2VzLgotICAgICAqCi0gICAgICog
IyBTaG9ydGN1dCBtZXRob2RzCi0gICAgICoKLSAgICAgKiBTaW5jZSBhbGwgaW52b2NhdGlvbnMg
b2YgdGhlICRodHRwIHNlcnZpY2UgcmVxdWlyZSBwYXNzaW5nIGluIGFuIEhUVFAgbWV0aG9kIGFu
ZCBVUkwsIGFuZAotICAgICAqIFBPU1QvUFVUIHJlcXVlc3RzIHJlcXVpcmUgcmVxdWVzdCBkYXRh
IHRvIGJlIHByb3ZpZGVkIGFzIHdlbGwsIHNob3J0Y3V0IG1ldGhvZHMKLSAgICAgKiB3ZXJlIGNy
ZWF0ZWQ6Ci0gICAgICoKLSAgICAgKiA8cHJlPgotICAgICAqICAgJGh0dHAuZ2V0KCcvc29tZVVy
bCcpLnN1Y2Nlc3Moc3VjY2Vzc0NhbGxiYWNrKTsKLSAgICAgKiAgICRodHRwLnBvc3QoJy9zb21l
VXJsJywgZGF0YSkuc3VjY2VzcyhzdWNjZXNzQ2FsbGJhY2spOwotICAgICAqIDwvcHJlPgotICAg
ICAqCi0gICAgICogQ29tcGxldGUgbGlzdCBvZiBzaG9ydGN1dCBtZXRob2RzOgotICAgICAqCi0g
ICAgICogLSB7QGxpbmsgbmcuJGh0dHAjZ2V0ICRodHRwLmdldH0KLSAgICAgKiAtIHtAbGluayBu
Zy4kaHR0cCNoZWFkICRodHRwLmhlYWR9Ci0gICAgICogLSB7QGxpbmsgbmcuJGh0dHAjcG9zdCAk
aHR0cC5wb3N0fQotICAgICAqIC0ge0BsaW5rIG5nLiRodHRwI3B1dCAkaHR0cC5wdXR9Ci0gICAg
ICogLSB7QGxpbmsgbmcuJGh0dHAjZGVsZXRlICRodHRwLmRlbGV0ZX0KLSAgICAgKiAtIHtAbGlu
ayBuZy4kaHR0cCNqc29ucCAkaHR0cC5qc29ucH0KLSAgICAgKgotICAgICAqCi0gICAgICogIyBT
ZXR0aW5nIEhUVFAgSGVhZGVycwotICAgICAqCi0gICAgICogVGhlICRodHRwIHNlcnZpY2Ugd2ls
bCBhdXRvbWF0aWNhbGx5IGFkZCBjZXJ0YWluIEhUVFAgaGVhZGVycyB0byBhbGwgcmVxdWVzdHMu
IFRoZXNlIGRlZmF1bHRzCi0gICAgICogY2FuIGJlIGZ1bGx5IGNvbmZpZ3VyZWQgYnkgYWNjZXNz
aW5nIHRoZSBgJGh0dHBQcm92aWRlci5kZWZhdWx0cy5oZWFkZXJzYCBjb25maWd1cmF0aW9uCi0g
ICAgICogb2JqZWN0LCB3aGljaCBjdXJyZW50bHkgY29udGFpbnMgdGhpcyBkZWZhdWx0IGNvbmZp
Z3VyYXRpb246Ci0gICAgICoKLSAgICAgKiAtIGAkaHR0cFByb3ZpZGVyLmRlZmF1bHRzLmhlYWRl
cnMuY29tbW9uYCAoaGVhZGVycyB0aGF0IGFyZSBjb21tb24gZm9yIGFsbCByZXF1ZXN0cyk6Ci0g
ICAgICogICAtIGBBY2NlcHQ6IGFwcGxpY2F0aW9uL2pzb24sIHRleHQvcGxhaW4sICogLyAqYAot
ICAgICAqICAgLSBgWC1SZXF1ZXN0ZWQtV2l0aDogWE1MSHR0cFJlcXVlc3RgCi0gICAgICogLSBg
JGh0dHBQcm92aWRlci5kZWZhdWx0cy5oZWFkZXJzLnBvc3RgOiAoaGVhZGVyIGRlZmF1bHRzIGZv
ciBQT1NUIHJlcXVlc3RzKQotICAgICAqICAgLSBgQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9q
c29uYAotICAgICAqIC0gYCRodHRwUHJvdmlkZXIuZGVmYXVsdHMuaGVhZGVycy5wdXRgIChoZWFk
ZXIgZGVmYXVsdHMgZm9yIFBVVCByZXF1ZXN0cykKLSAgICAgKiAgIC0gYENvbnRlbnQtVHlwZTog
YXBwbGljYXRpb24vanNvbmAKLSAgICAgKgotICAgICAqIFRvIGFkZCBvciBvdmVyd3JpdGUgdGhl
c2UgZGVmYXVsdHMsIHNpbXBseSBhZGQgb3IgcmVtb3ZlIGEgcHJvcGVydHkgZnJvbSB0aGVzZSBj
b25maWd1cmF0aW9uCi0gICAgICogb2JqZWN0cy4gVG8gYWRkIGhlYWRlcnMgZm9yIGFuIEhUVFAg
bWV0aG9kIG90aGVyIHRoYW4gUE9TVCBvciBQVVQsIHNpbXBseSBhZGQgYSBuZXcgb2JqZWN0Ci0g
ICAgICogd2l0aCB0aGUgbG93ZXJjYXNlZCBIVFRQIG1ldGhvZCBuYW1lIGFzIHRoZSBrZXksIGUu
Zy4KLSAgICAgKiBgJGh0dHBQcm92aWRlci5kZWZhdWx0cy5oZWFkZXJzLmdldFsnTXktSGVhZGVy
J109J3ZhbHVlJ2AuCi0gICAgICoKLSAgICAgKiBBZGRpdGlvbmFsbHksIHRoZSBkZWZhdWx0cyBj
YW4gYmUgc2V0IGF0IHJ1bnRpbWUgdmlhIHRoZSBgJGh0dHAuZGVmYXVsdHNgIG9iamVjdCBpbiB0
aGUgc2FtZQotICAgICAqIGZhc2hpb24uCi0gICAgICoKLSAgICAgKgotICAgICAqICMgVHJhbnNm
b3JtaW5nIFJlcXVlc3RzIGFuZCBSZXNwb25zZXMKLSAgICAgKgotICAgICAqIEJvdGggcmVxdWVz
dHMgYW5kIHJlc3BvbnNlcyBjYW4gYmUgdHJhbnNmb3JtZWQgdXNpbmcgdHJhbnNmb3JtIGZ1bmN0
aW9ucy4gQnkgZGVmYXVsdCwgQW5ndWxhcgotICAgICAqIGFwcGxpZXMgdGhlc2UgdHJhbnNmb3Jt
YXRpb25zOgotICAgICAqCi0gICAgICogUmVxdWVzdCB0cmFuc2Zvcm1hdGlvbnM6Ci0gICAgICoK
LSAgICAgKiAtIElmIHRoZSBgZGF0YWAgcHJvcGVydHkgb2YgdGhlIHJlcXVlc3QgY29uZmlndXJh
dGlvbiBvYmplY3QgY29udGFpbnMgYW4gb2JqZWN0LCBzZXJpYWxpemUgaXQgaW50bwotICAgICAq
ICAgSlNPTiBmb3JtYXQuCi0gICAgICoKLSAgICAgKiBSZXNwb25zZSB0cmFuc2Zvcm1hdGlvbnM6
Ci0gICAgICoKLSAgICAgKiAgLSBJZiBYU1JGIHByZWZpeCBpcyBkZXRlY3RlZCwgc3RyaXAgaXQg
KHNlZSBTZWN1cml0eSBDb25zaWRlcmF0aW9ucyBzZWN0aW9uIGJlbG93KS4KLSAgICAgKiAgLSBJ
ZiBKU09OIHJlc3BvbnNlIGlzIGRldGVjdGVkLCBkZXNlcmlhbGl6ZSBpdCB1c2luZyBhIEpTT04g
cGFyc2VyLgotICAgICAqCi0gICAgICogVG8gZ2xvYmFsbHkgYXVnbWVudCBvciBvdmVycmlkZSB0
aGUgZGVmYXVsdCB0cmFuc2Zvcm1zLCBtb2RpZnkgdGhlIGAkaHR0cFByb3ZpZGVyLmRlZmF1bHRz
LnRyYW5zZm9ybVJlcXVlc3RgIGFuZAotICAgICAqIGAkaHR0cFByb3ZpZGVyLmRlZmF1bHRzLnRy
YW5zZm9ybVJlc3BvbnNlYCBwcm9wZXJ0aWVzLiBUaGVzZSBwcm9wZXJ0aWVzIGFyZSBieSBkZWZh
dWx0IGFuCi0gICAgICogYXJyYXkgb2YgdHJhbnNmb3JtIGZ1bmN0aW9ucywgd2hpY2ggYWxsb3dz
IHlvdSB0byBgcHVzaGAgb3IgYHVuc2hpZnRgIGEgbmV3IHRyYW5zZm9ybWF0aW9uIGZ1bmN0aW9u
IGludG8gdGhlCi0gICAgICogdHJhbnNmb3JtYXRpb24gY2hhaW4uIFlvdSBjYW4gYWxzbyBkZWNp
ZGUgdG8gY29tcGxldGVseSBvdmVycmlkZSBhbnkgZGVmYXVsdCB0cmFuc2Zvcm1hdGlvbnMgYnkg
YXNzaWduaW5nIHlvdXIKLSAgICAgKiB0cmFuc2Zvcm1hdGlvbiBmdW5jdGlvbnMgdG8gdGhlc2Ug
cHJvcGVydGllcyBkaXJlY3RseSB3aXRob3V0IHRoZSBhcnJheSB3cmFwcGVyLgotICAgICAqCi0g
ICAgICogU2ltaWxhcmx5LCB0byBsb2NhbGx5IG92ZXJyaWRlIHRoZSByZXF1ZXN0L3Jlc3BvbnNl
IHRyYW5zZm9ybXMsIGF1Z21lbnQgdGhlIGB0cmFuc2Zvcm1SZXF1ZXN0YCBhbmQvb3IKLSAgICAg
KiBgdHJhbnNmb3JtUmVzcG9uc2VgIHByb3BlcnRpZXMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gb2Jq
ZWN0IHBhc3NlZCBpbnRvIGAkaHR0cGAuCi0gICAgICoKLSAgICAgKgotICAgICAqICMgQ2FjaGlu
ZwotICAgICAqCi0gICAgICogVG8gZW5hYmxlIGNhY2hpbmcsIHNldCB0aGUgY29uZmlndXJhdGlv
biBwcm9wZXJ0eSBgY2FjaGVgIHRvIGB0cnVlYC4gV2hlbiB0aGUgY2FjaGUgaXMKLSAgICAgKiBl
bmFibGVkLCBgJGh0dHBgIHN0b3JlcyB0aGUgcmVzcG9uc2UgZnJvbSB0aGUgc2VydmVyIGluIGxv
Y2FsIGNhY2hlLiBOZXh0IHRpbWUgdGhlCi0gICAgICogcmVzcG9uc2UgaXMgc2VydmVkIGZyb20g
dGhlIGNhY2hlIHdpdGhvdXQgc2VuZGluZyBhIHJlcXVlc3QgdG8gdGhlIHNlcnZlci4KLSAgICAg
KgotICAgICAqIE5vdGUgdGhhdCBldmVuIGlmIHRoZSByZXNwb25zZSBpcyBzZXJ2ZWQgZnJvbSBj
YWNoZSwgZGVsaXZlcnkgb2YgdGhlIGRhdGEgaXMgYXN5bmNocm9ub3VzIGluCi0gICAgICogdGhl
IHNhbWUgd2F5IHRoYXQgcmVhbCByZXF1ZXN0cyBhcmUuCi0gICAgICoKLSAgICAgKiBJZiB0aGVy
ZSBhcmUgbXVsdGlwbGUgR0VUIHJlcXVlc3RzIGZvciB0aGUgc2FtZSBVUkwgdGhhdCBzaG91bGQg
YmUgY2FjaGVkIHVzaW5nIHRoZSBzYW1lCi0gICAgICogY2FjaGUsIGJ1dCB0aGUgY2FjaGUgaXMg
bm90IHBvcHVsYXRlZCB5ZXQsIG9ubHkgb25lIHJlcXVlc3QgdG8gdGhlIHNlcnZlciB3aWxsIGJl
IG1hZGUgYW5kCi0gICAgICogdGhlIHJlbWFpbmluZyByZXF1ZXN0cyB3aWxsIGJlIGZ1bGZpbGxl
ZCB1c2luZyB0aGUgcmVzcG9uc2UgZnJvbSB0aGUgZmlyc3QgcmVxdWVzdC4KLSAgICAgKgotICAg
ICAqCi0gICAgICogIyBSZXNwb25zZSBpbnRlcmNlcHRvcnMKLSAgICAgKgotICAgICAqIEJlZm9y
ZSB5b3Ugc3RhcnQgY3JlYXRpbmcgaW50ZXJjZXB0b3JzLCBiZSBzdXJlIHRvIHVuZGVyc3RhbmQg
dGhlCi0gICAgICoge0BsaW5rIG5nLiRxICRxIGFuZCBkZWZlcnJlZC9wcm9taXNlIEFQSXN9Lgot
ICAgICAqCi0gICAgICogRm9yIHB1cnBvc2VzIG9mIGdsb2JhbCBlcnJvciBoYW5kbGluZywgYXV0
aGVudGljYXRpb24gb3IgYW55IGtpbmQgb2Ygc3luY2hyb25vdXMgb3IKLSAgICAgKiBhc3luY2hy
b25vdXMgcHJlcHJvY2Vzc2luZyBvZiByZWNlaXZlZCByZXNwb25zZXMsIGl0IGlzIGRlc2lyYWJs
ZSB0byBiZSBhYmxlIHRvIGludGVyY2VwdAotICAgICAqIHJlc3BvbnNlcyBmb3IgaHR0cCByZXF1
ZXN0cyBiZWZvcmUgdGhleSBhcmUgaGFuZGVkIG92ZXIgdG8gdGhlIGFwcGxpY2F0aW9uIGNvZGUg
dGhhdAotICAgICAqIGluaXRpYXRlZCB0aGVzZSByZXF1ZXN0cy4gVGhlIHJlc3BvbnNlIGludGVy
Y2VwdG9ycyBsZXZlcmFnZSB0aGUge0BsaW5rIG5nLiRxCi0gICAgICogcHJvbWlzZSBhcGlzfSB0
byBmdWxmaWwgdGhpcyBuZWVkIGZvciBib3RoIHN5bmNocm9ub3VzIGFuZCBhc3luY2hyb25vdXMg
cHJlcHJvY2Vzc2luZy4KLSAgICAgKgotICAgICAqIFRoZSBpbnRlcmNlcHRvcnMgYXJlIHNlcnZp
Y2UgZmFjdG9yaWVzIHRoYXQgYXJlIHJlZ2lzdGVyZWQgd2l0aCB0aGUgJGh0dHBQcm92aWRlciBi
eQotICAgICAqIGFkZGluZyB0aGVtIHRvIHRoZSBgJGh0dHBQcm92aWRlci5yZXNwb25zZUludGVy
Y2VwdG9yc2AgYXJyYXkuIFRoZSBmYWN0b3J5IGlzIGNhbGxlZCBhbmQKLSAgICAgKiBpbmplY3Rl
ZCB3aXRoIGRlcGVuZGVuY2llcyAoaWYgc3BlY2lmaWVkKSBhbmQgcmV0dXJucyB0aGUgaW50ZXJj
ZXB0b3IgIOKAlCBhIGZ1bmN0aW9uIHRoYXQKLSAgICAgKiB0YWtlcyBhIHtAbGluayBuZy4kcSBw
cm9taXNlfSBhbmQgcmV0dXJucyB0aGUgb3JpZ2luYWwgb3IgYSBuZXcgcHJvbWlzZS4KLSAgICAg
KgotICAgICAqIDxwcmU+Ci0gICAgICogICAvLyByZWdpc3RlciB0aGUgaW50ZXJjZXB0b3IgYXMg
YSBzZXJ2aWNlCi0gICAgICogICAkcHJvdmlkZS5mYWN0b3J5KCdteUh0dHBJbnRlcmNlcHRvcics
IGZ1bmN0aW9uKCRxLCBkZXBlbmRlbmN5MSwgZGVwZW5kZW5jeTIpIHsKLSAgICAgKiAgICAgcmV0
dXJuIGZ1bmN0aW9uKHByb21pc2UpIHsKLSAgICAgKiAgICAgICByZXR1cm4gcHJvbWlzZS50aGVu
KGZ1bmN0aW9uKHJlc3BvbnNlKSB7Ci0gICAgICogICAgICAgICAvLyBkbyBzb21ldGhpbmcgb24g
c3VjY2VzcwotICAgICAqICAgICAgIH0sIGZ1bmN0aW9uKHJlc3BvbnNlKSB7Ci0gICAgICogICAg
ICAgICAvLyBkbyBzb21ldGhpbmcgb24gZXJyb3IKLSAgICAgKiAgICAgICAgIGlmIChjYW5SZWNv
dmVyKHJlc3BvbnNlKSkgewotICAgICAqICAgICAgICAgICByZXR1cm4gcmVzcG9uc2VPck5ld1By
b21pc2UKLSAgICAgKiAgICAgICAgIH0KLSAgICAgKiAgICAgICAgIHJldHVybiAkcS5yZWplY3Qo
cmVzcG9uc2UpOwotICAgICAqICAgICAgIH0pOwotICAgICAqICAgICB9Ci0gICAgICogICB9KTsK
LSAgICAgKgotICAgICAqICAgJGh0dHBQcm92aWRlci5yZXNwb25zZUludGVyY2VwdG9ycy5wdXNo
KCdteUh0dHBJbnRlcmNlcHRvcicpOwotICAgICAqCi0gICAgICoKLSAgICAgKiAgIC8vIHJlZ2lz
dGVyIHRoZSBpbnRlcmNlcHRvciB2aWEgYW4gYW5vbnltb3VzIGZhY3RvcnkKLSAgICAgKiAgICRo
dHRwUHJvdmlkZXIucmVzcG9uc2VJbnRlcmNlcHRvcnMucHVzaChmdW5jdGlvbigkcSwgZGVwZW5k
ZW5jeTEsIGRlcGVuZGVuY3kyKSB7Ci0gICAgICogICAgIHJldHVybiBmdW5jdGlvbihwcm9taXNl
KSB7Ci0gICAgICogICAgICAgLy8gc2FtZSBhcyBhYm92ZQotICAgICAqICAgICB9Ci0gICAgICog
ICB9KTsKLSAgICAgKiA8L3ByZT4KLSAgICAgKgotICAgICAqCi0gICAgICogIyBTZWN1cml0eSBD
b25zaWRlcmF0aW9ucwotICAgICAqCi0gICAgICogV2hlbiBkZXNpZ25pbmcgd2ViIGFwcGxpY2F0
aW9ucywgY29uc2lkZXIgc2VjdXJpdHkgdGhyZWF0cyBmcm9tOgotICAgICAqCi0gICAgICogLSB7
QGxpbmsgaHR0cDovL2hhYWNrZWQuY29tL2FyY2hpdmUvMjAwOC8xMS8yMC9hbmF0b215LW9mLWEt
c3VidGxlLWpzb24tdnVsbmVyYWJpbGl0eS5hc3B4Ci0gICAgICogICBKU09OIHZ1bG5lcmFiaWxp
dHl9Ci0gICAgICogLSB7QGxpbmsgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Dcm9zcy1z
aXRlX3JlcXVlc3RfZm9yZ2VyeSBYU1JGfQotICAgICAqCi0gICAgICogQm90aCBzZXJ2ZXIgYW5k
IHRoZSBjbGllbnQgbXVzdCBjb29wZXJhdGUgaW4gb3JkZXIgdG8gZWxpbWluYXRlIHRoZXNlIHRo
cmVhdHMuIEFuZ3VsYXIgY29tZXMKLSAgICAgKiBwcmUtY29uZmlndXJlZCB3aXRoIHN0cmF0ZWdp
ZXMgdGhhdCBhZGRyZXNzIHRoZXNlIGlzc3VlcywgYnV0IGZvciB0aGlzIHRvIHdvcmsgYmFja2Vu
ZCBzZXJ2ZXIKLSAgICAgKiBjb29wZXJhdGlvbiBpcyByZXF1aXJlZC4KLSAgICAgKgotICAgICAq
ICMjIEpTT04gVnVsbmVyYWJpbGl0eSBQcm90ZWN0aW9uCi0gICAgICoKLSAgICAgKiBBIHtAbGlu
ayBodHRwOi8vaGFhY2tlZC5jb20vYXJjaGl2ZS8yMDA4LzExLzIwL2FuYXRvbXktb2YtYS1zdWJ0
bGUtanNvbi12dWxuZXJhYmlsaXR5LmFzcHgKLSAgICAgKiBKU09OIHZ1bG5lcmFiaWxpdHl9IGFs
bG93cyB0aGlyZCBwYXJ0eSB3ZWJzaXRlIHRvIHR1cm4geW91ciBKU09OIHJlc291cmNlIFVSTCBp
bnRvCi0gICAgICoge0BsaW5rIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSlNPTlAgSlNP
TlB9IHJlcXVlc3QgdW5kZXIgc29tZSBjb25kaXRpb25zLiBUbwotICAgICAqIGNvdW50ZXIgdGhp
cyB5b3VyIHNlcnZlciBjYW4gcHJlZml4IGFsbCBKU09OIHJlcXVlc3RzIHdpdGggZm9sbG93aW5n
IHN0cmluZyBgIildfScsXG4iYC4KLSAgICAgKiBBbmd1bGFyIHdpbGwgYXV0b21hdGljYWxseSBz
dHJpcCB0aGUgcHJlZml4IGJlZm9yZSBwcm9jZXNzaW5nIGl0IGFzIEpTT04uCi0gICAgICoKLSAg
ICAgKiBGb3IgZXhhbXBsZSBpZiB5b3VyIHNlcnZlciBuZWVkcyB0byByZXR1cm46Ci0gICAgICog
PHByZT4KLSAgICAgKiBbJ29uZScsJ3R3byddCi0gICAgICogPC9wcmU+Ci0gICAgICoKLSAgICAg
KiB3aGljaCBpcyB2dWxuZXJhYmxlIHRvIGF0dGFjaywgeW91ciBzZXJ2ZXIgY2FuIHJldHVybjoK
LSAgICAgKiA8cHJlPgotICAgICAqICldfScsCi0gICAgICogWydvbmUnLCd0d28nXQotICAgICAq
IDwvcHJlPgotICAgICAqCi0gICAgICogQW5ndWxhciB3aWxsIHN0cmlwIHRoZSBwcmVmaXgsIGJl
Zm9yZSBwcm9jZXNzaW5nIHRoZSBKU09OLgotICAgICAqCi0gICAgICoKLSAgICAgKiAjIyBDcm9z
cyBTaXRlIFJlcXVlc3QgRm9yZ2VyeSAoWFNSRikgUHJvdGVjdGlvbgotICAgICAqCi0gICAgICog
e0BsaW5rIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ3Jvc3Mtc2l0ZV9yZXF1ZXN0X2Zv
cmdlcnkgWFNSRn0gaXMgYSB0ZWNobmlxdWUgYnkgd2hpY2gKLSAgICAgKiBhbiB1bmF1dGhvcml6
ZWQgc2l0ZSBjYW4gZ2FpbiB5b3VyIHVzZXIncyBwcml2YXRlIGRhdGEuIEFuZ3VsYXIgcHJvdmlk
ZXMgYSBtZWNoYW5pc20KLSAgICAgKiB0byBjb3VudGVyIFhTUkYuIFdoZW4gcGVyZm9ybWluZyBY
SFIgcmVxdWVzdHMsIHRoZSAkaHR0cCBzZXJ2aWNlIHJlYWRzIGEgdG9rZW4gZnJvbSBhIGNvb2tp
ZQotICAgICAqIGNhbGxlZCBgWFNSRi1UT0tFTmAgYW5kIHNldHMgaXQgYXMgdGhlIEhUVFAgaGVh
ZGVyIGBYLVhTUkYtVE9LRU5gLiBTaW5jZSBvbmx5IEphdmFTY3JpcHQgdGhhdAotICAgICAqIHJ1
bnMgb24geW91ciBkb21haW4gY291bGQgcmVhZCB0aGUgY29va2llLCB5b3VyIHNlcnZlciBjYW4g
YmUgYXNzdXJlZCB0aGF0IHRoZSBYSFIgY2FtZSBmcm9tCi0gICAgICogSmF2YVNjcmlwdCBydW5u
aW5nIG9uIHlvdXIgZG9tYWluLgotICAgICAqCi0gICAgICogVG8gdGFrZSBhZHZhbnRhZ2Ugb2Yg
dGhpcywgeW91ciBzZXJ2ZXIgbmVlZHMgdG8gc2V0IGEgdG9rZW4gaW4gYSBKYXZhU2NyaXB0IHJl
YWRhYmxlIHNlc3Npb24KLSAgICAgKiBjb29raWUgY2FsbGVkIGBYU1JGLVRPS0VOYCBvbiB0aGUg
Zmlyc3QgSFRUUCBHRVQgcmVxdWVzdC4gT24gc3Vic2VxdWVudCBYSFIgcmVxdWVzdHMgdGhlCi0g
ICAgICogc2VydmVyIGNhbiB2ZXJpZnkgdGhhdCB0aGUgY29va2llIG1hdGNoZXMgYFgtWFNSRi1U
T0tFTmAgSFRUUCBoZWFkZXIsIGFuZCB0aGVyZWZvcmUgYmUgc3VyZQotICAgICAqIHRoYXQgb25s
eSBKYXZhU2NyaXB0IHJ1bm5pbmcgb24geW91ciBkb21haW4gY291bGQgaGF2ZSBzZW50IHRoZSBy
ZXF1ZXN0LiBUaGUgdG9rZW4gbXVzdCBiZQotICAgICAqIHVuaXF1ZSBmb3IgZWFjaCB1c2VyIGFu
ZCBtdXN0IGJlIHZlcmlmaWFibGUgYnkgdGhlIHNlcnZlciAodG8gcHJldmVudCB0aGUgSmF2YVNj
cmlwdCBmcm9tIG1ha2luZwotICAgICAqIHVwIGl0cyBvd24gdG9rZW5zKS4gV2UgcmVjb21tZW5k
IHRoYXQgdGhlIHRva2VuIGlzIGEgZGlnZXN0IG9mIHlvdXIgc2l0ZSdzIGF1dGhlbnRpY2F0aW9u
Ci0gICAgICogY29va2llIHdpdGggYSB7QGxpbmsgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dp
a2kvU2FsdF8oY3J5cHRvZ3JhcGh5KSBzYWx0fSBmb3IgYWRkZWQgc2VjdXJpdHkuCi0gICAgICoK
LSAgICAgKgotICAgICAqIEBwYXJhbSB7b2JqZWN0fSBjb25maWcgT2JqZWN0IGRlc2NyaWJpbmcg
dGhlIHJlcXVlc3QgdG8gYmUgbWFkZSBhbmQgaG93IGl0IHNob3VsZCBiZQotICAgICAqICAgIHBy
b2Nlc3NlZC4gVGhlIG9iamVjdCBoYXMgZm9sbG93aW5nIHByb3BlcnRpZXM6Ci0gICAgICoKLSAg
ICAgKiAgICAtICoqbWV0aG9kKiog4oCTIGB7c3RyaW5nfWAg4oCTIEhUVFAgbWV0aG9kIChlLmcu
ICdHRVQnLCAnUE9TVCcsIGV0YykKLSAgICAgKiAgICAtICoqdXJsKiog4oCTIGB7c3RyaW5nfWAg
4oCTIEFic29sdXRlIG9yIHJlbGF0aXZlIFVSTCBvZiB0aGUgcmVzb3VyY2UgdGhhdCBpcyBiZWlu
ZyByZXF1ZXN0ZWQuCi0gICAgICogICAgLSAqKnBhcmFtcyoqIOKAkyBge09iamVjdC48c3RyaW5n
fE9iamVjdD59YCDigJMgTWFwIG9mIHN0cmluZ3Mgb3Igb2JqZWN0cyB3aGljaCB3aWxsIGJlIHR1
cm5lZCB0bwotICAgICAqICAgICAgYD9rZXkxPXZhbHVlMSZrZXkyPXZhbHVlMmAgYWZ0ZXIgdGhl
IHVybC4gSWYgdGhlIHZhbHVlIGlzIG5vdCBhIHN0cmluZywgaXQgd2lsbCBiZSBKU09OaWZpZWQu
Ci0gICAgICogICAgLSAqKmRhdGEqKiDigJMgYHtzdHJpbmd8T2JqZWN0fWAg4oCTIERhdGEgdG8g
YmUgc2VudCBhcyB0aGUgcmVxdWVzdCBtZXNzYWdlIGRhdGEuCi0gICAgICogICAgLSAqKmhlYWRl
cnMqKiDigJMgYHtPYmplY3R9YCDigJMgTWFwIG9mIHN0cmluZ3MgcmVwcmVzZW50aW5nIEhUVFAg
aGVhZGVycyB0byBzZW5kIHRvIHRoZSBzZXJ2ZXIuCi0gICAgICogICAgLSAqKnRyYW5zZm9ybVJl
cXVlc3QqKiDigJMgYHtmdW5jdGlvbihkYXRhLCBoZWFkZXJzR2V0dGVyKXxBcnJheS48ZnVuY3Rp
b24oZGF0YSwgaGVhZGVyc0dldHRlcik+fWAg4oCTCi0gICAgICogICAgICB0cmFuc2Zvcm0gZnVu
Y3Rpb24gb3IgYW4gYXJyYXkgb2Ygc3VjaCBmdW5jdGlvbnMuIFRoZSB0cmFuc2Zvcm0gZnVuY3Rp
b24gdGFrZXMgdGhlIGh0dHAKLSAgICAgKiAgICAgIHJlcXVlc3QgYm9keSBhbmQgaGVhZGVycyBh
bmQgcmV0dXJucyBpdHMgdHJhbnNmb3JtZWQgKHR5cGljYWxseSBzZXJpYWxpemVkKSB2ZXJzaW9u
LgotICAgICAqICAgIC0gKip0cmFuc2Zvcm1SZXNwb25zZSoqIOKAkyBge2Z1bmN0aW9uKGRhdGEs
IGhlYWRlcnNHZXR0ZXIpfEFycmF5LjxmdW5jdGlvbihkYXRhLCBoZWFkZXJzR2V0dGVyKT59YCDi
gJMKLSAgICAgKiAgICAgIHRyYW5zZm9ybSBmdW5jdGlvbiBvciBhbiBhcnJheSBvZiBzdWNoIGZ1
bmN0aW9ucy4gVGhlIHRyYW5zZm9ybSBmdW5jdGlvbiB0YWtlcyB0aGUgaHR0cAotICAgICAqICAg
ICAgcmVzcG9uc2UgYm9keSBhbmQgaGVhZGVycyBhbmQgcmV0dXJucyBpdHMgdHJhbnNmb3JtZWQg
KHR5cGljYWxseSBkZXNlcmlhbGl6ZWQpIHZlcnNpb24uCi0gICAgICogICAgLSAqKmNhY2hlKiog
4oCTIGB7Ym9vbGVhbnxDYWNoZX1gIOKAkyBJZiB0cnVlLCBhIGRlZmF1bHQgJGh0dHAgY2FjaGUg
d2lsbCBiZSB1c2VkIHRvIGNhY2hlIHRoZQotICAgICAqICAgICAgR0VUIHJlcXVlc3QsIG90aGVy
d2lzZSBpZiBhIGNhY2hlIGluc3RhbmNlIGJ1aWx0IHdpdGgKLSAgICAgKiAgICAgIHtAbGluayBu
Zy4kY2FjaGVGYWN0b3J5ICRjYWNoZUZhY3Rvcnl9LCB0aGlzIGNhY2hlIHdpbGwgYmUgdXNlZCBm
b3IKLSAgICAgKiAgICAgIGNhY2hpbmcuCi0gICAgICogICAgLSAqKnRpbWVvdXQqKiDigJMgYHtu
dW1iZXJ9YCDigJMgdGltZW91dCBpbiBtaWxsaXNlY29uZHMuCi0gICAgICogICAgLSAqKndpdGhD
cmVkZW50aWFscyoqIC0gYHtib29sZWFufWAgLSB3aGV0aGVyIHRvIHRvIHNldCB0aGUgYHdpdGhD
cmVkZW50aWFsc2AgZmxhZyBvbiB0aGUKLSAgICAgKiAgICAgIFhIUiBvYmplY3QuIFNlZSB7QGxp
bmsgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4vaHR0cF9hY2Nlc3NfY29udHJvbCNz
ZWN0aW9uXzUKLSAgICAgKiAgICAgIHJlcXVlc3RzIHdpdGggY3JlZGVudGlhbHN9IGZvciBtb3Jl
IGluZm9ybWF0aW9uLgotICAgICAqCi0gICAgICogQHJldHVybnMge0h0dHBQcm9taXNlfSBSZXR1
cm5zIGEge0BsaW5rIG5nLiRxIHByb21pc2V9IG9iamVjdCB3aXRoIHRoZQotICAgICAqICAgc3Rh
bmRhcmQgYHRoZW5gIG1ldGhvZCBhbmQgdHdvIGh0dHAgc3BlY2lmaWMgbWV0aG9kczogYHN1Y2Nl
c3NgIGFuZCBgZXJyb3JgLiBUaGUgYHRoZW5gCi0gICAgICogICBtZXRob2QgdGFrZXMgdHdvIGFy
Z3VtZW50cyBhIHN1Y2Nlc3MgYW5kIGFuIGVycm9yIGNhbGxiYWNrIHdoaWNoIHdpbGwgYmUgY2Fs
bGVkIHdpdGggYQotICAgICAqICAgcmVzcG9uc2Ugb2JqZWN0LiBUaGUgYHN1Y2Nlc3NgIGFuZCBg
ZXJyb3JgIG1ldGhvZHMgdGFrZSBhIHNpbmdsZSBhcmd1bWVudCAtIGEgZnVuY3Rpb24gdGhhdAot
ICAgICAqICAgd2lsbCBiZSBjYWxsZWQgd2hlbiB0aGUgcmVxdWVzdCBzdWNjZWVkcyBvciBmYWls
cyByZXNwZWN0aXZlbHkuIFRoZSBhcmd1bWVudHMgcGFzc2VkIGludG8KLSAgICAgKiAgIHRoZXNl
IGZ1bmN0aW9ucyBhcmUgZGVzdHJ1Y3R1cmVkIHJlcHJlc2VudGF0aW9uIG9mIHRoZSByZXNwb25z
ZSBvYmplY3QgcGFzc2VkIGludG8gdGhlCi0gICAgICogICBgdGhlbmAgbWV0aG9kLiBUaGUgcmVz
cG9uc2Ugb2JqZWN0IGhhcyB0aGVzZSBwcm9wZXJ0aWVzOgotICAgICAqCi0gICAgICogICAtICoq
ZGF0YSoqIOKAkyBge3N0cmluZ3xPYmplY3R9YCDigJMgVGhlIHJlc3BvbnNlIGJvZHkgdHJhbnNm
b3JtZWQgd2l0aCB0aGUgdHJhbnNmb3JtIGZ1bmN0aW9ucy4KLSAgICAgKiAgIC0gKipzdGF0dXMq
KiDigJMgYHtudW1iZXJ9YCDigJMgSFRUUCBzdGF0dXMgY29kZSBvZiB0aGUgcmVzcG9uc2UuCi0g
ICAgICogICAtICoqaGVhZGVycyoqIOKAkyBge2Z1bmN0aW9uKFtoZWFkZXJOYW1lXSl9YCDigJMg
SGVhZGVyIGdldHRlciBmdW5jdGlvbi4KLSAgICAgKiAgIC0gKipjb25maWcqKiDigJMgYHtPYmpl
Y3R9YCDigJMgVGhlIGNvbmZpZ3VyYXRpb24gb2JqZWN0IHRoYXQgd2FzIHVzZWQgdG8gZ2VuZXJh
dGUgdGhlIHJlcXVlc3QuCi0gICAgICoKLSAgICAgKiBAcHJvcGVydHkge0FycmF5LjxPYmplY3Q+
fSBwZW5kaW5nUmVxdWVzdHMgQXJyYXkgb2YgY29uZmlnIG9iamVjdHMgZm9yIGN1cnJlbnRseSBw
ZW5kaW5nCi0gICAgICogICByZXF1ZXN0cy4gVGhpcyBpcyBwcmltYXJpbHkgbWVhbnQgdG8gYmUg
dXNlZCBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLgotICAgICAqCi0gICAgICoKLSAgICAgKiBAZXhh
bXBsZQotICAgICAgPGV4YW1wbGU+Ci0gICAgICAgIDxmaWxlIG5hbWU9ImluZGV4Lmh0bWwiPgot
ICAgICAgICAgIDxkaXYgbmctY29udHJvbGxlcj0iRmV0Y2hDdHJsIj4KLSAgICAgICAgICAgIDxz
ZWxlY3QgbmctbW9kZWw9Im1ldGhvZCI+Ci0gICAgICAgICAgICAgIDxvcHRpb24+R0VUPC9vcHRp
b24+Ci0gICAgICAgICAgICAgIDxvcHRpb24+SlNPTlA8L29wdGlvbj4KLSAgICAgICAgICAgIDwv
c2VsZWN0PgotICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5nLW1vZGVsPSJ1cmwiIHNp
emU9IjgwIi8+Ci0gICAgICAgICAgICA8YnV0dG9uIG5nLWNsaWNrPSJmZXRjaCgpIj5mZXRjaDwv
YnV0dG9uPjxicj4KLSAgICAgICAgICAgIDxidXR0b24gbmctY2xpY2s9InVwZGF0ZU1vZGVsKCdH
RVQnLCAnaHR0cC1oZWxsby5odG1sJykiPlNhbXBsZSBHRVQ8L2J1dHRvbj4KLSAgICAgICAgICAg
IDxidXR0b24gbmctY2xpY2s9InVwZGF0ZU1vZGVsKCdKU09OUCcsICdodHRwOi8vYW5ndWxhcmpz
Lm9yZy9ncmVldC5waHA/Y2FsbGJhY2s9SlNPTl9DQUxMQkFDSyZuYW1lPVN1cGVyJTIwSGVybycp
Ij5TYW1wbGUgSlNPTlA8L2J1dHRvbj4KLSAgICAgICAgICAgIDxidXR0b24gbmctY2xpY2s9InVw
ZGF0ZU1vZGVsKCdKU09OUCcsICdodHRwOi8vYW5ndWxhcmpzLm9yZy9kb2VzbnRleGlzdCZjYWxs
YmFjaz1KU09OX0NBTExCQUNLJykiPkludmFsaWQgSlNPTlA8L2J1dHRvbj4KLSAgICAgICAgICAg
IDxwcmU+aHR0cCBzdGF0dXMgY29kZToge3tzdGF0dXN9fTwvcHJlPgotICAgICAgICAgICAgPHBy
ZT5odHRwIHJlc3BvbnNlIGRhdGE6IHt7ZGF0YX19PC9wcmU+Ci0gICAgICAgICAgPC9kaXY+Ci0g
ICAgICAgIDwvZmlsZT4KLSAgICAgICAgPGZpbGUgbmFtZT0ic2NyaXB0LmpzIj4KLSAgICAgICAg
ICBmdW5jdGlvbiBGZXRjaEN0cmwoJHNjb3BlLCAkaHR0cCwgJHRlbXBsYXRlQ2FjaGUpIHsKLSAg
ICAgICAgICAgICRzY29wZS5tZXRob2QgPSAnR0VUJzsKLSAgICAgICAgICAgICRzY29wZS51cmwg
PSAnaHR0cC1oZWxsby5odG1sJzsKLQotICAgICAgICAgICAgJHNjb3BlLmZldGNoID0gZnVuY3Rp
b24oKSB7Ci0gICAgICAgICAgICAgICRzY29wZS5jb2RlID0gbnVsbDsKLSAgICAgICAgICAgICAg
JHNjb3BlLnJlc3BvbnNlID0gbnVsbDsKLQotICAgICAgICAgICAgICAkaHR0cCh7bWV0aG9kOiAk
c2NvcGUubWV0aG9kLCB1cmw6ICRzY29wZS51cmwsIGNhY2hlOiAkdGVtcGxhdGVDYWNoZX0pLgot
ICAgICAgICAgICAgICAgIHN1Y2Nlc3MoZnVuY3Rpb24oZGF0YSwgc3RhdHVzKSB7Ci0gICAgICAg
ICAgICAgICAgICAkc2NvcGUuc3RhdHVzID0gc3RhdHVzOwotICAgICAgICAgICAgICAgICAgJHNj
b3BlLmRhdGEgPSBkYXRhOwotICAgICAgICAgICAgICAgIH0pLgotICAgICAgICAgICAgICAgIGVy
cm9yKGZ1bmN0aW9uKGRhdGEsIHN0YXR1cykgewotICAgICAgICAgICAgICAgICAgJHNjb3BlLmRh
dGEgPSBkYXRhIHx8ICJSZXF1ZXN0IGZhaWxlZCI7Ci0gICAgICAgICAgICAgICAgICAkc2NvcGUu
c3RhdHVzID0gc3RhdHVzOwotICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH07Ci0KLSAg
ICAgICAgICAgICRzY29wZS51cGRhdGVNb2RlbCA9IGZ1bmN0aW9uKG1ldGhvZCwgdXJsKSB7Ci0g
ICAgICAgICAgICAgICRzY29wZS5tZXRob2QgPSBtZXRob2Q7Ci0gICAgICAgICAgICAgICRzY29w
ZS51cmwgPSB1cmw7Ci0gICAgICAgICAgICB9OwotICAgICAgICAgIH0KLSAgICAgICAgPC9maWxl
PgotICAgICAgICA8ZmlsZSBuYW1lPSJodHRwLWhlbGxvLmh0bWwiPgotICAgICAgICAgIEhlbGxv
LCAkaHR0cCEKLSAgICAgICAgPC9maWxlPgotICAgICAgICA8ZmlsZSBuYW1lPSJzY2VuYXJpby5q
cyI+Ci0gICAgICAgICAgaXQoJ3Nob3VsZCBtYWtlIGFuIHhociBHRVQgcmVxdWVzdCcsIGZ1bmN0
aW9uKCkgewotICAgICAgICAgICAgZWxlbWVudCgnOmJ1dHRvbjpjb250YWlucygiU2FtcGxlIEdF
VCIpJykuY2xpY2soKTsKLSAgICAgICAgICAgIGVsZW1lbnQoJzpidXR0b246Y29udGFpbnMoImZl
dGNoIiknKS5jbGljaygpOwotICAgICAgICAgICAgZXhwZWN0KGJpbmRpbmcoJ3N0YXR1cycpKS50
b0JlKCcyMDAnKTsKLSAgICAgICAgICAgIGV4cGVjdChiaW5kaW5nKCdkYXRhJykpLnRvTWF0Y2go
L0hlbGxvLCBcJGh0dHAhLyk7Ci0gICAgICAgICAgfSk7Ci0KLSAgICAgICAgICBpdCgnc2hvdWxk
IG1ha2UgYSBKU09OUCByZXF1ZXN0IHRvIGFuZ3VsYXJqcy5vcmcnLCBmdW5jdGlvbigpIHsKLSAg
ICAgICAgICAgIGVsZW1lbnQoJzpidXR0b246Y29udGFpbnMoIlNhbXBsZSBKU09OUCIpJykuY2xp
Y2soKTsKLSAgICAgICAgICAgIGVsZW1lbnQoJzpidXR0b246Y29udGFpbnMoImZldGNoIiknKS5j
bGljaygpOwotICAgICAgICAgICAgZXhwZWN0KGJpbmRpbmcoJ3N0YXR1cycpKS50b0JlKCcyMDAn
KTsKLSAgICAgICAgICAgIGV4cGVjdChiaW5kaW5nKCdkYXRhJykpLnRvTWF0Y2goL1N1cGVyIEhl
cm8hLyk7Ci0gICAgICAgICAgfSk7Ci0KLSAgICAgICAgICBpdCgnc2hvdWxkIG1ha2UgSlNPTlAg
cmVxdWVzdCB0byBpbnZhbGlkIFVSTCBhbmQgaW52b2tlIHRoZSBlcnJvciBoYW5kbGVyJywKLSAg
ICAgICAgICAgICAgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBlbGVtZW50KCc6YnV0dG9uOmNv
bnRhaW5zKCJJbnZhbGlkIEpTT05QIiknKS5jbGljaygpOwotICAgICAgICAgICAgZWxlbWVudCgn
OmJ1dHRvbjpjb250YWlucygiZmV0Y2giKScpLmNsaWNrKCk7Ci0gICAgICAgICAgICBleHBlY3Qo
YmluZGluZygnc3RhdHVzJykpLnRvQmUoJzAnKTsKLSAgICAgICAgICAgIGV4cGVjdChiaW5kaW5n
KCdkYXRhJykpLnRvQmUoJ1JlcXVlc3QgZmFpbGVkJyk7Ci0gICAgICAgICAgfSk7Ci0gICAgICAg
IDwvZmlsZT4KLSAgICAgIDwvZXhhbXBsZT4KLSAgICAgKi8KLSAgICBmdW5jdGlvbiAkaHR0cChj
b25maWcpIHsKLSAgICAgIGNvbmZpZy5tZXRob2QgPSB1cHBlcmNhc2UoY29uZmlnLm1ldGhvZCk7
Ci0KLSAgICAgIHZhciByZXFUcmFuc2Zvcm1GbiA9IGNvbmZpZy50cmFuc2Zvcm1SZXF1ZXN0IHx8
ICRjb25maWcudHJhbnNmb3JtUmVxdWVzdCwKLSAgICAgICAgICByZXNwVHJhbnNmb3JtRm4gPSBj
b25maWcudHJhbnNmb3JtUmVzcG9uc2UgfHwgJGNvbmZpZy50cmFuc2Zvcm1SZXNwb25zZSwKLSAg
ICAgICAgICBkZWZIZWFkZXJzID0gJGNvbmZpZy5oZWFkZXJzLAotICAgICAgICAgIHJlcUhlYWRl
cnMgPSBleHRlbmQoeydYLVhTUkYtVE9LRU4nOiAkYnJvd3Nlci5jb29raWVzKClbJ1hTUkYtVE9L
RU4nXX0sCi0gICAgICAgICAgICAgIGRlZkhlYWRlcnMuY29tbW9uLCBkZWZIZWFkZXJzW2xvd2Vy
Y2FzZShjb25maWcubWV0aG9kKV0sIGNvbmZpZy5oZWFkZXJzKSwKLSAgICAgICAgICByZXFEYXRh
ID0gdHJhbnNmb3JtRGF0YShjb25maWcuZGF0YSwgaGVhZGVyc0dldHRlcihyZXFIZWFkZXJzKSwg
cmVxVHJhbnNmb3JtRm4pLAotICAgICAgICAgIHByb21pc2U7Ci0KLSAgICAgIC8vIHN0cmlwIGNv
bnRlbnQtdHlwZSBpZiBkYXRhIGlzIHVuZGVmaW5lZAotICAgICAgaWYgKGlzVW5kZWZpbmVkKGNv
bmZpZy5kYXRhKSkgewotICAgICAgICBkZWxldGUgcmVxSGVhZGVyc1snQ29udGVudC1UeXBlJ107
Ci0gICAgICB9Ci0KLSAgICAgIC8vIHNlbmQgcmVxdWVzdAotICAgICAgcHJvbWlzZSA9IHNlbmRS
ZXEoY29uZmlnLCByZXFEYXRhLCByZXFIZWFkZXJzKTsKLQotCi0gICAgICAvLyB0cmFuc2Zvcm0g
ZnV0dXJlIHJlc3BvbnNlCi0gICAgICBwcm9taXNlID0gcHJvbWlzZS50aGVuKHRyYW5zZm9ybVJl
c3BvbnNlLCB0cmFuc2Zvcm1SZXNwb25zZSk7Ci0KLSAgICAgIC8vIGFwcGx5IGludGVyY2VwdG9y
cwotICAgICAgZm9yRWFjaChyZXNwb25zZUludGVyY2VwdG9ycywgZnVuY3Rpb24oaW50ZXJjZXB0
b3IpIHsKLSAgICAgICAgcHJvbWlzZSA9IGludGVyY2VwdG9yKHByb21pc2UpOwotICAgICAgfSk7
Ci0KLSAgICAgIHByb21pc2Uuc3VjY2VzcyA9IGZ1bmN0aW9uKGZuKSB7Ci0gICAgICAgIHByb21p
c2UudGhlbihmdW5jdGlvbihyZXNwb25zZSkgewotICAgICAgICAgIGZuKHJlc3BvbnNlLmRhdGEs
IHJlc3BvbnNlLnN0YXR1cywgcmVzcG9uc2UuaGVhZGVycywgY29uZmlnKTsKLSAgICAgICAgfSk7
Ci0gICAgICAgIHJldHVybiBwcm9taXNlOwotICAgICAgfTsKLQotICAgICAgcHJvbWlzZS5lcnJv
ciA9IGZ1bmN0aW9uKGZuKSB7Ci0gICAgICAgIHByb21pc2UudGhlbihudWxsLCBmdW5jdGlvbihy
ZXNwb25zZSkgewotICAgICAgICAgIGZuKHJlc3BvbnNlLmRhdGEsIHJlc3BvbnNlLnN0YXR1cywg
cmVzcG9uc2UuaGVhZGVycywgY29uZmlnKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHJldHVybiBw
cm9taXNlOwotICAgICAgfTsKLQotICAgICAgcmV0dXJuIHByb21pc2U7Ci0KLSAgICAgIGZ1bmN0
aW9uIHRyYW5zZm9ybVJlc3BvbnNlKHJlc3BvbnNlKSB7Ci0gICAgICAgIC8vIG1ha2UgYSBjb3B5
IHNpbmNlIHRoZSByZXNwb25zZSBtdXN0IGJlIGNhY2hlYWJsZQotICAgICAgICB2YXIgcmVzcCA9
IGV4dGVuZCh7fSwgcmVzcG9uc2UsIHsKLSAgICAgICAgICBkYXRhOiB0cmFuc2Zvcm1EYXRhKHJl
c3BvbnNlLmRhdGEsIHJlc3BvbnNlLmhlYWRlcnMsIHJlc3BUcmFuc2Zvcm1GbikKLSAgICAgICAg
fSk7Ci0gICAgICAgIHJldHVybiAoaXNTdWNjZXNzKHJlc3BvbnNlLnN0YXR1cykpCi0gICAgICAg
ICAgPyByZXNwCi0gICAgICAgICAgOiAkcS5yZWplY3QocmVzcCk7Ci0gICAgICB9Ci0gICAgfQot
Ci0gICAgJGh0dHAucGVuZGluZ1JlcXVlc3RzID0gW107Ci0KLSAgICAvKioKLSAgICAgKiBAbmdk
b2MgbWV0aG9kCi0gICAgICogQG5hbWUgbmcuJGh0dHAjZ2V0Ci0gICAgICogQG1ldGhvZE9mIG5n
LiRodHRwCi0gICAgICoKLSAgICAgKiBAZGVzY3JpcHRpb24KLSAgICAgKiBTaG9ydGN1dCBtZXRo
b2QgdG8gcGVyZm9ybSBgR0VUYCByZXF1ZXN0LgotICAgICAqCi0gICAgICogQHBhcmFtIHtzdHJp
bmd9IHVybCBSZWxhdGl2ZSBvciBhYnNvbHV0ZSBVUkwgc3BlY2lmeWluZyB0aGUgZGVzdGluYXRp
b24gb2YgdGhlIHJlcXVlc3QKLSAgICAgKiBAcGFyYW0ge09iamVjdD19IGNvbmZpZyBPcHRpb25h
bCBjb25maWd1cmF0aW9uIG9iamVjdAotICAgICAqIEByZXR1cm5zIHtIdHRwUHJvbWlzZX0gRnV0
dXJlIG9iamVjdAotICAgICAqLwotCi0gICAgLyoqCi0gICAgICogQG5nZG9jIG1ldGhvZAotICAg
ICAqIEBuYW1lIG5nLiRodHRwI2RlbGV0ZQotICAgICAqIEBtZXRob2RPZiBuZy4kaHR0cAotICAg
ICAqCi0gICAgICogQGRlc2NyaXB0aW9uCi0gICAgICogU2hvcnRjdXQgbWV0aG9kIHRvIHBlcmZv
cm0gYERFTEVURWAgcmVxdWVzdC4KLSAgICAgKgotICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1cmwg
UmVsYXRpdmUgb3IgYWJzb2x1dGUgVVJMIHNwZWNpZnlpbmcgdGhlIGRlc3RpbmF0aW9uIG9mIHRo
ZSByZXF1ZXN0Ci0gICAgICogQHBhcmFtIHtPYmplY3Q9fSBjb25maWcgT3B0aW9uYWwgY29uZmln
dXJhdGlvbiBvYmplY3QKLSAgICAgKiBAcmV0dXJucyB7SHR0cFByb21pc2V9IEZ1dHVyZSBvYmpl
Y3QKLSAgICAgKi8KLQotICAgIC8qKgotICAgICAqIEBuZ2RvYyBtZXRob2QKLSAgICAgKiBAbmFt
ZSBuZy4kaHR0cCNoZWFkCi0gICAgICogQG1ldGhvZE9mIG5nLiRodHRwCi0gICAgICoKLSAgICAg
KiBAZGVzY3JpcHRpb24KLSAgICAgKiBTaG9ydGN1dCBtZXRob2QgdG8gcGVyZm9ybSBgSEVBRGAg
cmVxdWVzdC4KLSAgICAgKgotICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgUmVsYXRpdmUgb3Ig
YWJzb2x1dGUgVVJMIHNwZWNpZnlpbmcgdGhlIGRlc3RpbmF0aW9uIG9mIHRoZSByZXF1ZXN0Ci0g
ICAgICogQHBhcmFtIHtPYmplY3Q9fSBjb25maWcgT3B0aW9uYWwgY29uZmlndXJhdGlvbiBvYmpl
Y3QKLSAgICAgKiBAcmV0dXJucyB7SHR0cFByb21pc2V9IEZ1dHVyZSBvYmplY3QKLSAgICAgKi8K
LQotICAgIC8qKgotICAgICAqIEBuZ2RvYyBtZXRob2QKLSAgICAgKiBAbmFtZSBuZy4kaHR0cCNq
c29ucAotICAgICAqIEBtZXRob2RPZiBuZy4kaHR0cAotICAgICAqCi0gICAgICogQGRlc2NyaXB0
aW9uCi0gICAgICogU2hvcnRjdXQgbWV0aG9kIHRvIHBlcmZvcm0gYEpTT05QYCByZXF1ZXN0Lgot
ICAgICAqCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IHVybCBSZWxhdGl2ZSBvciBhYnNvbHV0ZSBV
Ukwgc3BlY2lmeWluZyB0aGUgZGVzdGluYXRpb24gb2YgdGhlIHJlcXVlc3QuCi0gICAgICogICAg
ICAgICAgICAgICAgICAgICBTaG91bGQgY29udGFpbiBgSlNPTl9DQUxMQkFDS2Agc3RyaW5nLgot
ICAgICAqIEBwYXJhbSB7T2JqZWN0PX0gY29uZmlnIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gb2Jq
ZWN0Ci0gICAgICogQHJldHVybnMge0h0dHBQcm9taXNlfSBGdXR1cmUgb2JqZWN0Ci0gICAgICov
Ci0gICAgY3JlYXRlU2hvcnRNZXRob2RzKCdnZXQnLCAnZGVsZXRlJywgJ2hlYWQnLCAnanNvbnAn
KTsKLQotICAgIC8qKgotICAgICAqIEBuZ2RvYyBtZXRob2QKLSAgICAgKiBAbmFtZSBuZy4kaHR0
cCNwb3N0Ci0gICAgICogQG1ldGhvZE9mIG5nLiRodHRwCi0gICAgICoKLSAgICAgKiBAZGVzY3Jp
cHRpb24KLSAgICAgKiBTaG9ydGN1dCBtZXRob2QgdG8gcGVyZm9ybSBgUE9TVGAgcmVxdWVzdC4K
LSAgICAgKgotICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgUmVsYXRpdmUgb3IgYWJzb2x1dGUg
VVJMIHNwZWNpZnlpbmcgdGhlIGRlc3RpbmF0aW9uIG9mIHRoZSByZXF1ZXN0Ci0gICAgICogQHBh
cmFtIHsqfSBkYXRhIFJlcXVlc3QgY29udGVudAotICAgICAqIEBwYXJhbSB7T2JqZWN0PX0gY29u
ZmlnIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gb2JqZWN0Ci0gICAgICogQHJldHVybnMge0h0dHBQ
cm9taXNlfSBGdXR1cmUgb2JqZWN0Ci0gICAgICovCi0KLSAgICAvKioKLSAgICAgKiBAbmdkb2Mg
bWV0aG9kCi0gICAgICogQG5hbWUgbmcuJGh0dHAjcHV0Ci0gICAgICogQG1ldGhvZE9mIG5nLiRo
dHRwCi0gICAgICoKLSAgICAgKiBAZGVzY3JpcHRpb24KLSAgICAgKiBTaG9ydGN1dCBtZXRob2Qg
dG8gcGVyZm9ybSBgUFVUYCByZXF1ZXN0LgotICAgICAqCi0gICAgICogQHBhcmFtIHtzdHJpbmd9
IHVybCBSZWxhdGl2ZSBvciBhYnNvbHV0ZSBVUkwgc3BlY2lmeWluZyB0aGUgZGVzdGluYXRpb24g
b2YgdGhlIHJlcXVlc3QKLSAgICAgKiBAcGFyYW0geyp9IGRhdGEgUmVxdWVzdCBjb250ZW50Ci0g
ICAgICogQHBhcmFtIHtPYmplY3Q9fSBjb25maWcgT3B0aW9uYWwgY29uZmlndXJhdGlvbiBvYmpl
Y3QKLSAgICAgKiBAcmV0dXJucyB7SHR0cFByb21pc2V9IEZ1dHVyZSBvYmplY3QKLSAgICAgKi8K
LSAgICBjcmVhdGVTaG9ydE1ldGhvZHNXaXRoRGF0YSgncG9zdCcsICdwdXQnKTsKLQotICAgICAg
ICAvKioKLSAgICAgICAgICogQG5nZG9jIHByb3BlcnR5Ci0gICAgICAgICAqIEBuYW1lIG5nLiRo
dHRwI2RlZmF1bHRzCi0gICAgICAgICAqIEBwcm9wZXJ0eU9mIG5nLiRodHRwCi0gICAgICAgICAq
Ci0gICAgICAgICAqIEBkZXNjcmlwdGlvbgotICAgICAgICAgKiBSdW50aW1lIGVxdWl2YWxlbnQg
b2YgdGhlIGAkaHR0cFByb3ZpZGVyLmRlZmF1bHRzYCBwcm9wZXJ0eS4gQWxsb3dzIGNvbmZpZ3Vy
YXRpb24gb2YKLSAgICAgICAgICogZGVmYXVsdCBoZWFkZXJzIGFzIHdlbGwgYXMgcmVxdWVzdCBh
bmQgcmVzcG9uc2UgdHJhbnNmb3JtYXRpb25zLgotICAgICAgICAgKgotICAgICAgICAgKiBTZWUg
IlNldHRpbmcgSFRUUCBIZWFkZXJzIiBhbmQgIlRyYW5zZm9ybWluZyBSZXF1ZXN0cyBhbmQgUmVz
cG9uc2VzIiBzZWN0aW9ucyBhYm92ZS4KLSAgICAgICAgICovCi0gICAgJGh0dHAuZGVmYXVsdHMg
PSAkY29uZmlnOwotCi0KLSAgICByZXR1cm4gJGh0dHA7Ci0KLQotICAgIGZ1bmN0aW9uIGNyZWF0
ZVNob3J0TWV0aG9kcyhuYW1lcykgewotICAgICAgZm9yRWFjaChhcmd1bWVudHMsIGZ1bmN0aW9u
KG5hbWUpIHsKLSAgICAgICAgJGh0dHBbbmFtZV0gPSBmdW5jdGlvbih1cmwsIGNvbmZpZykgewot
ICAgICAgICAgIHJldHVybiAkaHR0cChleHRlbmQoY29uZmlnIHx8IHt9LCB7Ci0gICAgICAgICAg
ICBtZXRob2Q6IG5hbWUsCi0gICAgICAgICAgICB1cmw6IHVybAotICAgICAgICAgIH0pKTsKLSAg
ICAgICAgfTsKLSAgICAgIH0pOwotICAgIH0KLQotCi0gICAgZnVuY3Rpb24gY3JlYXRlU2hvcnRN
ZXRob2RzV2l0aERhdGEobmFtZSkgewotICAgICAgZm9yRWFjaChhcmd1bWVudHMsIGZ1bmN0aW9u
KG5hbWUpIHsKLSAgICAgICAgJGh0dHBbbmFtZV0gPSBmdW5jdGlvbih1cmwsIGRhdGEsIGNvbmZp
ZykgewotICAgICAgICAgIHJldHVybiAkaHR0cChleHRlbmQoY29uZmlnIHx8IHt9LCB7Ci0gICAg
ICAgICAgICBtZXRob2Q6IG5hbWUsCi0gICAgICAgICAgICB1cmw6IHVybCwKLSAgICAgICAgICAg
IGRhdGE6IGRhdGEKLSAgICAgICAgICB9KSk7Ci0gICAgICAgIH07Ci0gICAgICB9KTsKLSAgICB9
Ci0KLQotICAgIC8qKgotICAgICAqIE1ha2VzIHRoZSByZXF1ZXN0LgotICAgICAqCi0gICAgICog
ISEhIEFDQ0VTU0VTIENMT1NVUkUgVkFSUzoKLSAgICAgKiAkaHR0cEJhY2tlbmQsICRjb25maWcs
ICRsb2csICRyb290U2NvcGUsIGRlZmF1bHRDYWNoZSwgJGh0dHAucGVuZGluZ1JlcXVlc3RzCi0g
ICAgICovCi0gICAgZnVuY3Rpb24gc2VuZFJlcShjb25maWcsIHJlcURhdGEsIHJlcUhlYWRlcnMp
IHsKLSAgICAgIHZhciBkZWZlcnJlZCA9ICRxLmRlZmVyKCksCi0gICAgICAgICAgcHJvbWlzZSA9
IGRlZmVycmVkLnByb21pc2UsCi0gICAgICAgICAgY2FjaGUsCi0gICAgICAgICAgY2FjaGVkUmVz
cCwKLSAgICAgICAgICB1cmwgPSBidWlsZFVybChjb25maWcudXJsLCBjb25maWcucGFyYW1zKTsK
LQotICAgICAgJGh0dHAucGVuZGluZ1JlcXVlc3RzLnB1c2goY29uZmlnKTsKLSAgICAgIHByb21p
c2UudGhlbihyZW1vdmVQZW5kaW5nUmVxLCByZW1vdmVQZW5kaW5nUmVxKTsKLQotCi0gICAgICBp
ZiAoY29uZmlnLmNhY2hlICYmIGNvbmZpZy5tZXRob2QgPT0gJ0dFVCcpIHsKLSAgICAgICAgY2Fj
aGUgPSBpc09iamVjdChjb25maWcuY2FjaGUpID8gY29uZmlnLmNhY2hlIDogZGVmYXVsdENhY2hl
OwotICAgICAgfQotCi0gICAgICBpZiAoY2FjaGUpIHsKLSAgICAgICAgY2FjaGVkUmVzcCA9IGNh
Y2hlLmdldCh1cmwpOwotICAgICAgICBpZiAoY2FjaGVkUmVzcCkgewotICAgICAgICAgIGlmIChj
YWNoZWRSZXNwLnRoZW4pIHsKLSAgICAgICAgICAgIC8vIGNhY2hlZCByZXF1ZXN0IGhhcyBhbHJl
YWR5IGJlZW4gc2VudCwgYnV0IHRoZXJlIGlzIG5vIHJlc3BvbnNlIHlldAotICAgICAgICAgICAg
Y2FjaGVkUmVzcC50aGVuKHJlbW92ZVBlbmRpbmdSZXEsIHJlbW92ZVBlbmRpbmdSZXEpOwotICAg
ICAgICAgICAgcmV0dXJuIGNhY2hlZFJlc3A7Ci0gICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIC8vIHNlcnZpbmcgZnJvbSBjYWNoZQotICAgICAgICAgICAgaWYgKGlzQXJyYXkoY2FjaGVk
UmVzcCkpIHsKLSAgICAgICAgICAgICAgcmVzb2x2ZVByb21pc2UoY2FjaGVkUmVzcFsxXSwgY2Fj
aGVkUmVzcFswXSwgY29weShjYWNoZWRSZXNwWzJdKSk7Ci0gICAgICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgICByZXNvbHZlUHJvbWlzZShjYWNoZWRSZXNwLCAyMDAsIHt9KTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgLy8gcHV0
IHRoZSBwcm9taXNlIGZvciB0aGUgbm9uLXRyYW5zZm9ybWVkIHJlc3BvbnNlIGludG8gY2FjaGUg
YXMgYSBwbGFjZWhvbGRlcgotICAgICAgICAgIGNhY2hlLnB1dCh1cmwsIHByb21pc2UpOwotICAg
ICAgICB9Ci0gICAgICB9Ci0KLSAgICAgIC8vIGlmIHdlIHdvbid0IGhhdmUgdGhlIHJlc3BvbnNl
IGluIGNhY2hlLCBzZW5kIHRoZSByZXF1ZXN0IHRvIHRoZSBiYWNrZW5kCi0gICAgICBpZiAoIWNh
Y2hlZFJlc3ApIHsKLSAgICAgICAgJGh0dHBCYWNrZW5kKGNvbmZpZy5tZXRob2QsIHVybCwgcmVx
RGF0YSwgZG9uZSwgcmVxSGVhZGVycywgY29uZmlnLnRpbWVvdXQsCi0gICAgICAgICAgICBjb25m
aWcud2l0aENyZWRlbnRpYWxzKTsKLSAgICAgIH0KLQotICAgICAgcmV0dXJuIHByb21pc2U7Ci0K
LQotICAgICAgLyoqCi0gICAgICAgKiBDYWxsYmFjayByZWdpc3RlcmVkIHRvICRodHRwQmFja2Vu
ZCgpOgotICAgICAgICogIC0gY2FjaGVzIHRoZSByZXNwb25zZSBpZiBkZXNpcmVkCi0gICAgICAg
KiAgLSByZXNvbHZlcyB0aGUgcmF3ICRodHRwIHByb21pc2UKLSAgICAgICAqICAtIGNhbGxzICRh
cHBseQotICAgICAgICovCi0gICAgICBmdW5jdGlvbiBkb25lKHN0YXR1cywgcmVzcG9uc2UsIGhl
YWRlcnNTdHJpbmcpIHsKLSAgICAgICAgaWYgKGNhY2hlKSB7Ci0gICAgICAgICAgaWYgKGlzU3Vj
Y2VzcyhzdGF0dXMpKSB7Ci0gICAgICAgICAgICBjYWNoZS5wdXQodXJsLCBbc3RhdHVzLCByZXNw
b25zZSwgcGFyc2VIZWFkZXJzKGhlYWRlcnNTdHJpbmcpXSk7Ci0gICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIC8vIHJlbW92ZSBwcm9taXNlIGZyb20gdGhlIGNhY2hlCi0gICAgICAgICAg
ICBjYWNoZS5yZW1vdmUodXJsKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBy
ZXNvbHZlUHJvbWlzZShyZXNwb25zZSwgc3RhdHVzLCBoZWFkZXJzU3RyaW5nKTsKLSAgICAgICAg
JHJvb3RTY29wZS4kYXBwbHkoKTsKLSAgICAgIH0KLQotCi0gICAgICAvKioKLSAgICAgICAqIFJl
c29sdmVzIHRoZSByYXcgJGh0dHAgcHJvbWlzZS4KLSAgICAgICAqLwotICAgICAgZnVuY3Rpb24g
cmVzb2x2ZVByb21pc2UocmVzcG9uc2UsIHN0YXR1cywgaGVhZGVycykgewotICAgICAgICAvLyBu
b3JtYWxpemUgaW50ZXJuYWwgc3RhdHVzZXMgdG8gMAotICAgICAgICBzdGF0dXMgPSBNYXRoLm1h
eChzdGF0dXMsIDApOwotCi0gICAgICAgIChpc1N1Y2Nlc3Moc3RhdHVzKSA/IGRlZmVycmVkLnJl
c29sdmUgOiBkZWZlcnJlZC5yZWplY3QpKHsKLSAgICAgICAgICBkYXRhOiByZXNwb25zZSwKLSAg
ICAgICAgICBzdGF0dXM6IHN0YXR1cywKLSAgICAgICAgICBoZWFkZXJzOiBoZWFkZXJzR2V0dGVy
KGhlYWRlcnMpLAotICAgICAgICAgIGNvbmZpZzogY29uZmlnCi0gICAgICAgIH0pOwotICAgICAg
fQotCi0KLSAgICAgIGZ1bmN0aW9uIHJlbW92ZVBlbmRpbmdSZXEoKSB7Ci0gICAgICAgIHZhciBp
ZHggPSBpbmRleE9mKCRodHRwLnBlbmRpbmdSZXF1ZXN0cywgY29uZmlnKTsKLSAgICAgICAgaWYg
KGlkeCAhPT0gLTEpICRodHRwLnBlbmRpbmdSZXF1ZXN0cy5zcGxpY2UoaWR4LCAxKTsKLSAgICAg
IH0KLSAgICB9Ci0KLQotICAgIGZ1bmN0aW9uIGJ1aWxkVXJsKHVybCwgcGFyYW1zKSB7Ci0gICAg
ICAgICAgaWYgKCFwYXJhbXMpIHJldHVybiB1cmw7Ci0gICAgICAgICAgdmFyIHBhcnRzID0gW107
Ci0gICAgICAgICAgZm9yRWFjaFNvcnRlZChwYXJhbXMsIGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHsK
LSAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsIHx8IHZhbHVlID09IHVuZGVmaW5lZCkgcmV0
dXJuOwotICAgICAgICAgICAgaWYgKGlzT2JqZWN0KHZhbHVlKSkgewotICAgICAgICAgICAgICB2
YWx1ZSA9IHRvSnNvbih2YWx1ZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBwYXJ0cy5w
dXNoKGVuY29kZVVSSUNvbXBvbmVudChrZXkpICsgJz0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHZh
bHVlKSk7Ci0gICAgICAgICAgfSk7Ci0gICAgICAgICAgcmV0dXJuIHVybCArICgodXJsLmluZGV4
T2YoJz8nKSA9PSAtMSkgPyAnPycgOiAnJicpICsgcGFydHMuam9pbignJicpOwotICAgICAgICB9
Ci0KLQotICB9XTsKLX0KLQotdmFyIFhIUiA9IHdpbmRvdy5YTUxIdHRwUmVxdWVzdCB8fCBmdW5j
dGlvbigpIHsKLSAgdHJ5IHsgcmV0dXJuIG5ldyBBY3RpdmVYT2JqZWN0KCJNc3htbDIuWE1MSFRU
UC42LjAiKTsgfSBjYXRjaCAoZTEpIHt9Ci0gIHRyeSB7IHJldHVybiBuZXcgQWN0aXZlWE9iamVj
dCgiTXN4bWwyLlhNTEhUVFAuMy4wIik7IH0gY2F0Y2ggKGUyKSB7fQotICB0cnkgeyByZXR1cm4g
bmV3IEFjdGl2ZVhPYmplY3QoIk1zeG1sMi5YTUxIVFRQIik7IH0gY2F0Y2ggKGUzKSB7fQotICB0
aHJvdyBuZXcgRXJyb3IoIlRoaXMgYnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IFhNTEh0dHBSZXF1
ZXN0LiIpOwotfTsKLQotCi0vKioKLSAqIEBuZ2RvYyBvYmplY3QKLSAqIEBuYW1lIG5nLiRodHRw
QmFja2VuZAotICogQHJlcXVpcmVzICRicm93c2VyCi0gKiBAcmVxdWlyZXMgJHdpbmRvdwotICog
QHJlcXVpcmVzICRkb2N1bWVudAotICoKLSAqIEBkZXNjcmlwdGlvbgotICogSFRUUCBiYWNrZW5k
IHVzZWQgYnkgdGhlIHtAbGluayBuZy4kaHR0cCBzZXJ2aWNlfSB0aGF0IGRlbGVnYXRlcyB0bwot
ICogWE1MSHR0cFJlcXVlc3Qgb2JqZWN0IG9yIEpTT05QIGFuZCBkZWFscyB3aXRoIGJyb3dzZXIg
aW5jb21wYXRpYmlsaXRpZXMuCi0gKgotICogWW91IHNob3VsZCBuZXZlciBuZWVkIHRvIHVzZSB0
aGlzIHNlcnZpY2UgZGlyZWN0bHksIGluc3RlYWQgdXNlIHRoZSBoaWdoZXItbGV2ZWwgYWJzdHJh
Y3Rpb25zOgotICoge0BsaW5rIG5nLiRodHRwICRodHRwfSBvciB7QGxpbmsgbmdSZXNvdXJjZS4k
cmVzb3VyY2UgJHJlc291cmNlfS4KLSAqCi0gKiBEdXJpbmcgdGVzdGluZyB0aGlzIGltcGxlbWVu
dGF0aW9uIGlzIHN3YXBwZWQgd2l0aCB7QGxpbmsgbmdNb2NrLiRodHRwQmFja2VuZCBtb2NrCi0g
KiAkaHR0cEJhY2tlbmR9IHdoaWNoIGNhbiBiZSB0cmFpbmVkIHdpdGggcmVzcG9uc2VzLgotICov
Ci1mdW5jdGlvbiAkSHR0cEJhY2tlbmRQcm92aWRlcigpIHsKLSAgdGhpcy4kZ2V0ID0gWyckYnJv
d3NlcicsICckd2luZG93JywgJyRkb2N1bWVudCcsIGZ1bmN0aW9uKCRicm93c2VyLCAkd2luZG93
LCAkZG9jdW1lbnQpIHsKLSAgICByZXR1cm4gY3JlYXRlSHR0cEJhY2tlbmQoJGJyb3dzZXIsIFhI
UiwgJGJyb3dzZXIuZGVmZXIsICR3aW5kb3cuYW5ndWxhci5jYWxsYmFja3MsCi0gICAgICAgICRk
b2N1bWVudFswXSwgJHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbC5yZXBsYWNlKCc6JywgJycpKTsK
LSAgfV07Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZUh0dHBCYWNrZW5kKCRicm93c2VyLCBYSFIsICRi
cm93c2VyRGVmZXIsIGNhbGxiYWNrcywgcmF3RG9jdW1lbnQsIGxvY2F0aW9uUHJvdG9jb2wpIHsK
LSAgLy8gVE9ETyh2b2p0YSk6IGZpeCB0aGUgc2lnbmF0dXJlCi0gIHJldHVybiBmdW5jdGlvbiht
ZXRob2QsIHVybCwgcG9zdCwgY2FsbGJhY2ssIGhlYWRlcnMsIHRpbWVvdXQsIHdpdGhDcmVkZW50
aWFscykgewotICAgICRicm93c2VyLiQkaW5jT3V0c3RhbmRpbmdSZXF1ZXN0Q291bnQoKTsKLSAg
ICB1cmwgPSB1cmwgfHwgJGJyb3dzZXIudXJsKCk7Ci0KLSAgICBpZiAobG93ZXJjYXNlKG1ldGhv
ZCkgPT0gJ2pzb25wJykgewotICAgICAgdmFyIGNhbGxiYWNrSWQgPSAnXycgKyAoY2FsbGJhY2tz
LmNvdW50ZXIrKykudG9TdHJpbmcoMzYpOwotICAgICAgY2FsbGJhY2tzW2NhbGxiYWNrSWRdID0g
ZnVuY3Rpb24oZGF0YSkgewotICAgICAgICBjYWxsYmFja3NbY2FsbGJhY2tJZF0uZGF0YSA9IGRh
dGE7Ci0gICAgICB9OwotCi0gICAgICBqc29ucFJlcSh1cmwucmVwbGFjZSgnSlNPTl9DQUxMQkFD
SycsICdhbmd1bGFyLmNhbGxiYWNrcy4nICsgY2FsbGJhY2tJZCksCi0gICAgICAgICAgZnVuY3Rp
b24oKSB7Ci0gICAgICAgIGlmIChjYWxsYmFja3NbY2FsbGJhY2tJZF0uZGF0YSkgewotICAgICAg
ICAgIGNvbXBsZXRlUmVxdWVzdChjYWxsYmFjaywgMjAwLCBjYWxsYmFja3NbY2FsbGJhY2tJZF0u
ZGF0YSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgY29tcGxldGVSZXF1ZXN0KGNhbGxi
YWNrLCAtMik7Ci0gICAgICAgIH0KLSAgICAgICAgZGVsZXRlIGNhbGxiYWNrc1tjYWxsYmFja0lk
XTsKLSAgICAgIH0pOwotICAgIH0gZWxzZSB7Ci0gICAgICB2YXIgeGhyID0gbmV3IFhIUigpOwot
ICAgICAgeGhyLm9wZW4obWV0aG9kLCB1cmwsIHRydWUpOwotICAgICAgZm9yRWFjaChoZWFkZXJz
LCBmdW5jdGlvbih2YWx1ZSwga2V5KSB7Ci0gICAgICAgIGlmICh2YWx1ZSkgeGhyLnNldFJlcXVl
c3RIZWFkZXIoa2V5LCB2YWx1ZSk7Ci0gICAgICB9KTsKLQotICAgICAgdmFyIHN0YXR1czsKLQot
ICAgICAgLy8gSW4gSUU2IGFuZCA3LCB0aGlzIG1pZ2h0IGJlIGNhbGxlZCBzeW5jaHJvbm91c2x5
IHdoZW4geGhyLnNlbmQgYmVsb3cgaXMgY2FsbGVkIGFuZCB0aGUKLSAgICAgIC8vIHJlc3BvbnNl
IGlzIGluIHRoZSBjYWNoZS4gdGhlIHByb21pc2UgYXBpIHdpbGwgZW5zdXJlIHRoYXQgdG8gdGhl
IGFwcCBjb2RlIHRoZSBhcGkgaXMKLSAgICAgIC8vIGFsd2F5cyBhc3luYwotICAgICAgeGhyLm9u
cmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAoeGhyLnJlYWR5U3Rh
dGUgPT0gNCkgewotICAgICAgICAgIHZhciByZXNwb25zZUhlYWRlcnMgPSB4aHIuZ2V0QWxsUmVz
cG9uc2VIZWFkZXJzKCk7Ci0KLSAgICAgICAgICAvLyBUT0RPKHZvanRhKTogcmVtb3ZlIG9uY2Ug
RmlyZWZveCAyMSBnZXRzIHJlbGVhc2VkLgotICAgICAgICAgIC8vIGJlZ2luOiB3b3JrYXJvdW5k
IHRvIG92ZXJjb21lIEZpcmVmb3ggQ09SUyBodHRwIHJlc3BvbnNlIGhlYWRlcnMgYnVnCi0gICAg
ICAgICAgLy8gaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjA4
NzM1Ci0gICAgICAgICAgLy8gRmlyZWZveCBhbHJlYWR5IHBhdGNoZWQgaW4gbmlnaHRseS4gU2hv
dWxkIGxhbmQgaW4gRmlyZWZveCAyMS4KLQotICAgICAgICAgIC8vIENPUlMgInNpbXBsZSByZXNw
b25zZSBoZWFkZXJzIiBodHRwOi8vd3d3LnczLm9yZy9UUi9jb3JzLwotICAgICAgICAgIHZhciB2
YWx1ZSwKLSAgICAgICAgICAgICAgc2ltcGxlSGVhZGVycyA9IFsiQ2FjaGUtQ29udHJvbCIsICJD
b250ZW50LUxhbmd1YWdlIiwgIkNvbnRlbnQtVHlwZSIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIkV4cGlyZXMiLCAiTGFzdC1Nb2RpZmllZCIsICJQcmFnbWEiXTsKLSAgICAg
ICAgICBpZiAoIXJlc3BvbnNlSGVhZGVycykgewotICAgICAgICAgICAgcmVzcG9uc2VIZWFkZXJz
ID0gIiI7Ci0gICAgICAgICAgICBmb3JFYWNoKHNpbXBsZUhlYWRlcnMsIGZ1bmN0aW9uIChoZWFk
ZXIpIHsKLSAgICAgICAgICAgICAgdmFyIHZhbHVlID0geGhyLmdldFJlc3BvbnNlSGVhZGVyKGhl
YWRlcik7Ci0gICAgICAgICAgICAgIGlmICh2YWx1ZSkgewotICAgICAgICAgICAgICAgICAgcmVz
cG9uc2VIZWFkZXJzICs9IGhlYWRlciArICI6ICIgKyB2YWx1ZSArICJcbiI7Ci0gICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIH0pOwotICAgICAgICAgIH0KLSAgICAgICAgICAvLyBlbmQgb2Yg
dGhlIHdvcmthcm91bmQuCi0KLSAgICAgICAgICBjb21wbGV0ZVJlcXVlc3QoY2FsbGJhY2ssIHN0
YXR1cyB8fCB4aHIuc3RhdHVzLCB4aHIucmVzcG9uc2VUZXh0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXNwb25zZUhlYWRlcnMpOwotICAgICAgICB9Ci0gICAgICB9OwotCi0gICAgICBp
ZiAod2l0aENyZWRlbnRpYWxzKSB7Ci0gICAgICAgIHhoci53aXRoQ3JlZGVudGlhbHMgPSB0cnVl
OwotICAgICAgfQotCi0gICAgICB4aHIuc2VuZChwb3N0IHx8ICcnKTsKLQotICAgICAgaWYgKHRp
bWVvdXQgPiAwKSB7Ci0gICAgICAgICRicm93c2VyRGVmZXIoZnVuY3Rpb24oKSB7Ci0gICAgICAg
ICAgc3RhdHVzID0gLTE7Ci0gICAgICAgICAgeGhyLmFib3J0KCk7Ci0gICAgICAgIH0sIHRpbWVv
dXQpOwotICAgICAgfQotICAgIH0KLQotCi0gICAgZnVuY3Rpb24gY29tcGxldGVSZXF1ZXN0KGNh
bGxiYWNrLCBzdGF0dXMsIHJlc3BvbnNlLCBoZWFkZXJzU3RyaW5nKSB7Ci0gICAgICAvLyBVUkxf
TUFUQ0ggaXMgZGVmaW5lZCBpbiBzcmMvc2VydmljZS9sb2NhdGlvbi5qcwotICAgICAgdmFyIHBy
b3RvY29sID0gKHVybC5tYXRjaChVUkxfTUFUQ0gpIHx8IFsnJywgbG9jYXRpb25Qcm90b2NvbF0p
WzFdOwotCi0gICAgICAvLyBmaXggc3RhdHVzIGNvZGUgZm9yIGZpbGUgcHJvdG9jb2wgKGl0J3Mg
YWx3YXlzIDApCi0gICAgICBzdGF0dXMgPSAocHJvdG9jb2wgPT0gJ2ZpbGUnKSA/IChyZXNwb25z
ZSA/IDIwMCA6IDQwNCkgOiBzdGF0dXM7Ci0KLSAgICAgIC8vIG5vcm1hbGl6ZSBJRSBidWcgKGh0
dHA6Ly9idWdzLmpxdWVyeS5jb20vdGlja2V0LzE0NTApCi0gICAgICBzdGF0dXMgPSBzdGF0dXMg
PT0gMTIyMyA/IDIwNCA6IHN0YXR1czsKLQotICAgICAgY2FsbGJhY2soc3RhdHVzLCByZXNwb25z
ZSwgaGVhZGVyc1N0cmluZyk7Ci0gICAgICAkYnJvd3Nlci4kJGNvbXBsZXRlT3V0c3RhbmRpbmdS
ZXF1ZXN0KG5vb3ApOwotICAgIH0KLSAgfTsKLQotICBmdW5jdGlvbiBqc29ucFJlcSh1cmwsIGRv
bmUpIHsKLSAgICAvLyB3ZSBjYW4ndCB1c2UgalF1ZXJ5L2pxTGl0ZSBoZXJlIGJlY2F1c2UgalF1
ZXJ5IGRvZXMgY3Jhenkgc2hpdCB3aXRoIHNjcmlwdCBlbGVtZW50cywgZS5nLjoKLSAgICAvLyAt
IGZldGNoZXMgbG9jYWwgc2NyaXB0cyB2aWEgWEhSIGFuZCBldmFscyB0aGVtCi0gICAgLy8gLSBh
ZGRzIGFuZCBpbW1lZGlhdGVseSByZW1vdmVzIHNjcmlwdCBlbGVtZW50cyBmcm9tIHRoZSBkb2N1
bWVudAotICAgIHZhciBzY3JpcHQgPSByYXdEb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQn
KSwKLSAgICAgICAgZG9uZVdyYXBwZXIgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICByYXdEb2N1
bWVudC5ib2R5LnJlbW92ZUNoaWxkKHNjcmlwdCk7Ci0gICAgICAgICAgaWYgKGRvbmUpIGRvbmUo
KTsKLSAgICAgICAgfTsKLQotICAgIHNjcmlwdC50eXBlID0gJ3RleHQvamF2YXNjcmlwdCc7Ci0g
ICAgc2NyaXB0LnNyYyA9IHVybDsKLQotICAgIGlmIChtc2llKSB7Ci0gICAgICBzY3JpcHQub25y
ZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICgvbG9hZGVkfGNvbXBs
ZXRlLy50ZXN0KHNjcmlwdC5yZWFkeVN0YXRlKSkgZG9uZVdyYXBwZXIoKTsKLSAgICAgIH07Ci0g
ICAgfSBlbHNlIHsKLSAgICAgIHNjcmlwdC5vbmxvYWQgPSBzY3JpcHQub25lcnJvciA9IGRvbmVX
cmFwcGVyOwotICAgIH0KLQotICAgIHJhd0RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoc2NyaXB0
KTsKLSAgfQotfQotCi0vKioKLSAqIEBuZ2RvYyBvYmplY3QKLSAqIEBuYW1lIG5nLiRsb2NhbGUK
LSAqCi0gKiBAZGVzY3JpcHRpb24KLSAqICRsb2NhbGUgc2VydmljZSBwcm92aWRlcyBsb2NhbGl6
YXRpb24gcnVsZXMgZm9yIHZhcmlvdXMgQW5ndWxhciBjb21wb25lbnRzLiBBcyBvZiByaWdodCBu
b3cgdGhlCi0gKiBvbmx5IHB1YmxpYyBhcGkgaXM6Ci0gKgotICogKiBgaWRgIOKAkyBge3N0cmlu
Z31gIOKAkyBsb2NhbGUgaWQgZm9ybWF0dGVkIGFzIGBsYW5ndWFnZUlkLWNvdW50cnlJZGAgKGUu
Zy4gYGVuLXVzYCkKLSAqLwotZnVuY3Rpb24gJExvY2FsZVByb3ZpZGVyKCl7Ci0gIHRoaXMuJGdl
dCA9IGZ1bmN0aW9uKCkgewotICAgIHJldHVybiB7Ci0gICAgICBpZDogJ2VuLXVzJywKLQotICAg
ICAgTlVNQkVSX0ZPUk1BVFM6IHsKLSAgICAgICAgREVDSU1BTF9TRVA6ICcuJywKLSAgICAgICAg
R1JPVVBfU0VQOiAnLCcsCi0gICAgICAgIFBBVFRFUk5TOiBbCi0gICAgICAgICAgeyAvLyBEZWNp
bWFsIFBhdHRlcm4KLSAgICAgICAgICAgIG1pbkludDogMSwKLSAgICAgICAgICAgIG1pbkZyYWM6
IDAsCi0gICAgICAgICAgICBtYXhGcmFjOiAzLAotICAgICAgICAgICAgcG9zUHJlOiAnJywKLSAg
ICAgICAgICAgIHBvc1N1ZjogJycsCi0gICAgICAgICAgICBuZWdQcmU6ICctJywKLSAgICAgICAg
ICAgIG5lZ1N1ZjogJycsCi0gICAgICAgICAgICBnU2l6ZTogMywKLSAgICAgICAgICAgIGxnU2l6
ZTogMwotICAgICAgICAgIH0seyAvL0N1cnJlbmN5IFBhdHRlcm4KLSAgICAgICAgICAgIG1pbklu
dDogMSwKLSAgICAgICAgICAgIG1pbkZyYWM6IDIsCi0gICAgICAgICAgICBtYXhGcmFjOiAyLAot
ICAgICAgICAgICAgcG9zUHJlOiAnXHUwMEE0JywKLSAgICAgICAgICAgIHBvc1N1ZjogJycsCi0g
ICAgICAgICAgICBuZWdQcmU6ICcoXHUwMEE0JywKLSAgICAgICAgICAgIG5lZ1N1ZjogJyknLAot
ICAgICAgICAgICAgZ1NpemU6IDMsCi0gICAgICAgICAgICBsZ1NpemU6IDMKLSAgICAgICAgICB9
Ci0gICAgICAgIF0sCi0gICAgICAgIENVUlJFTkNZX1NZTTogJyQnCi0gICAgICB9LAotCi0gICAg
ICBEQVRFVElNRV9GT1JNQVRTOiB7Ci0gICAgICAgIE1PTlRIOiAnSmFudWFyeSxGZWJydWFyeSxN
YXJjaCxBcHJpbCxNYXksSnVuZSxKdWx5LEF1Z3VzdCxTZXB0ZW1iZXIsT2N0b2JlcixOb3ZlbWJl
cixEZWNlbWJlcicKLSAgICAgICAgICAgICAgICAuc3BsaXQoJywnKSwKLSAgICAgICAgU0hPUlRN
T05USDogICdKYW4sRmViLE1hcixBcHIsTWF5LEp1bixKdWwsQXVnLFNlcCxPY3QsTm92LERlYycu
c3BsaXQoJywnKSwKLSAgICAgICAgREFZOiAnU3VuZGF5LE1vbmRheSxUdWVzZGF5LFdlZG5lc2Rh
eSxUaHVyc2RheSxGcmlkYXksU2F0dXJkYXknLnNwbGl0KCcsJyksCi0gICAgICAgIFNIT1JUREFZ
OiAnU3VuLE1vbixUdWUsV2VkLFRodSxGcmksU2F0Jy5zcGxpdCgnLCcpLAotICAgICAgICBBTVBN
UzogWydBTScsJ1BNJ10sCi0gICAgICAgIG1lZGl1bTogJ01NTSBkLCB5IGg6bW06c3MgYScsCi0g
ICAgICAgIHNob3J0OiAnTS9kL3l5IGg6bW0gYScsCi0gICAgICAgIGZ1bGxEYXRlOiAnRUVFRSwg
TU1NTSBkLCB5JywKLSAgICAgICAgbG9uZ0RhdGU6ICdNTU1NIGQsIHknLAotICAgICAgICBtZWRp
dW1EYXRlOiAnTU1NIGQsIHknLAotICAgICAgICBzaG9ydERhdGU6ICdNL2QveXknLAotICAgICAg
ICBtZWRpdW1UaW1lOiAnaDptbTpzcyBhJywKLSAgICAgICAgc2hvcnRUaW1lOiAnaDptbSBhJwot
ICAgICAgfSwKLQotICAgICAgcGx1cmFsQ2F0OiBmdW5jdGlvbihudW0pIHsKLSAgICAgICAgaWYg
KG51bSA9PT0gMSkgewotICAgICAgICAgIHJldHVybiAnb25lJzsKLSAgICAgICAgfQotICAgICAg
ICByZXR1cm4gJ290aGVyJzsKLSAgICAgIH0KLSAgICB9OwotICB9OwotfQotCi1mdW5jdGlvbiAk
VGltZW91dFByb3ZpZGVyKCkgewotICB0aGlzLiRnZXQgPSBbJyRyb290U2NvcGUnLCAnJGJyb3dz
ZXInLCAnJHEnLCAnJGV4Y2VwdGlvbkhhbmRsZXInLAotICAgICAgIGZ1bmN0aW9uKCRyb290U2Nv
cGUsICAgJGJyb3dzZXIsICAgJHEsICAgJGV4Y2VwdGlvbkhhbmRsZXIpIHsKLSAgICB2YXIgZGVm
ZXJyZWRzID0ge307Ci0KLQotICAgICAvKioKLSAgICAgICogQG5nZG9jIGZ1bmN0aW9uCi0gICAg
ICAqIEBuYW1lIG5nLiR0aW1lb3V0Ci0gICAgICAqIEByZXF1aXJlcyAkYnJvd3NlcgotICAgICAg
KgotICAgICAgKiBAZGVzY3JpcHRpb24KLSAgICAgICogQW5ndWxhcidzIHdyYXBwZXIgZm9yIGB3
aW5kb3cuc2V0VGltZW91dGAuIFRoZSBgZm5gIGZ1bmN0aW9uIGlzIHdyYXBwZWQgaW50byBhIHRy
eS9jYXRjaAotICAgICAgKiBibG9jayBhbmQgZGVsZWdhdGVzIGFueSBleGNlcHRpb25zIHRvCi0g
ICAgICAqIHtAbGluayBuZy4kZXhjZXB0aW9uSGFuZGxlciAkZXhjZXB0aW9uSGFuZGxlcn0gc2Vy
dmljZS4KLSAgICAgICoKLSAgICAgICogVGhlIHJldHVybiB2YWx1ZSBvZiByZWdpc3RlcmluZyBh
IHRpbWVvdXQgZnVuY3Rpb24gaXMgYSBwcm9taXNlLCB3aGljaCB3aWxsIGJlIHJlc29sdmVkIHdo
ZW4KLSAgICAgICogdGhlIHRpbWVvdXQgaXMgcmVhY2hlZCBhbmQgdGhlIHRpbWVvdXQgZnVuY3Rp
b24gaXMgZXhlY3V0ZWQuCi0gICAgICAqCi0gICAgICAqIFRvIGNhbmNlbCBhIHRpbWVvdXQgcmVx
dWVzdCwgY2FsbCBgJHRpbWVvdXQuY2FuY2VsKHByb21pc2UpYC4KLSAgICAgICoKLSAgICAgICog
SW4gdGVzdHMgeW91IGNhbiB1c2Uge0BsaW5rIG5nTW9jay4kdGltZW91dCBgJHRpbWVvdXQuZmx1
c2goKWB9IHRvCi0gICAgICAqIHN5bmNocm9ub3VzbHkgZmx1c2ggdGhlIHF1ZXVlIG9mIGRlZmVy
cmVkIGZ1bmN0aW9ucy4KLSAgICAgICoKLSAgICAgICogQHBhcmFtIHtmdW5jdGlvbigpfSBmbiBB
IGZ1bmN0aW9uLCB3aG9zZSBleGVjdXRpb24gc2hvdWxkIGJlIGRlbGF5ZWQuCi0gICAgICAqIEBw
YXJhbSB7bnVtYmVyPX0gW2RlbGF5PTBdIERlbGF5IGluIG1pbGxpc2Vjb25kcy4KLSAgICAgICog
QHBhcmFtIHtib29sZWFuPX0gW2ludm9rZUFwcGx5PXRydWVdIElmIHNldCB0byBgZmFsc2VgIHNr
aXBzIG1vZGVsIGRpcnR5IGNoZWNraW5nLCBvdGhlcndpc2UKLSAgICAgICogICB3aWxsIGludm9r
ZSBgZm5gIHdpdGhpbiB0aGUge0BsaW5rIG5nLiRyb290U2NvcGUuU2NvcGUjJGFwcGx5ICRhcHBs
eX0gYmxvY2suCi0gICAgICAqIEByZXR1cm5zIHtQcm9taXNlfSBQcm9taXNlIHRoYXQgd2lsbCBi
ZSByZXNvbHZlZCB3aGVuIHRoZSB0aW1lb3V0IGlzIHJlYWNoZWQuIFRoZSB2YWx1ZSB0aGlzCi0g
ICAgICAqICAgcHJvbWlzZSB3aWxsIGJlIHJlc29sdmVkIHdpdGggaXMgdGhlIHJldHVybiB2YWx1
ZSBvZiB0aGUgYGZuYCBmdW5jdGlvbi4KLSAgICAgICovCi0gICAgZnVuY3Rpb24gdGltZW91dChm
biwgZGVsYXksIGludm9rZUFwcGx5KSB7Ci0gICAgICB2YXIgZGVmZXJyZWQgPSAkcS5kZWZlcigp
LAotICAgICAgICAgIHByb21pc2UgPSBkZWZlcnJlZC5wcm9taXNlLAotICAgICAgICAgIHNraXBB
cHBseSA9IChpc0RlZmluZWQoaW52b2tlQXBwbHkpICYmICFpbnZva2VBcHBseSksCi0gICAgICAg
ICAgdGltZW91dElkLCBjbGVhbnVwOwotCi0gICAgICB0aW1lb3V0SWQgPSAkYnJvd3Nlci5kZWZl
cihmdW5jdGlvbigpIHsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZl
KGZuKCkpOwotICAgICAgICB9IGNhdGNoKGUpIHsKLSAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qo
ZSk7Ci0gICAgICAgICAgJGV4Y2VwdGlvbkhhbmRsZXIoZSk7Ci0gICAgICAgIH0KLQotICAgICAg
ICBpZiAoIXNraXBBcHBseSkgJHJvb3RTY29wZS4kYXBwbHkoKTsKLSAgICAgIH0sIGRlbGF5KTsK
LQotICAgICAgY2xlYW51cCA9IGZ1bmN0aW9uKCkgewotICAgICAgICBkZWxldGUgZGVmZXJyZWRz
W3Byb21pc2UuJCR0aW1lb3V0SWRdOwotICAgICAgfTsKLQotICAgICAgcHJvbWlzZS4kJHRpbWVv
dXRJZCA9IHRpbWVvdXRJZDsKLSAgICAgIGRlZmVycmVkc1t0aW1lb3V0SWRdID0gZGVmZXJyZWQ7
Ci0gICAgICBwcm9taXNlLnRoZW4oY2xlYW51cCwgY2xlYW51cCk7Ci0KLSAgICAgIHJldHVybiBw
cm9taXNlOwotICAgIH0KLQotCi0gICAgIC8qKgotICAgICAgKiBAbmdkb2MgZnVuY3Rpb24KLSAg
ICAgICogQG5hbWUgbmcuJHRpbWVvdXQjY2FuY2VsCi0gICAgICAqIEBtZXRob2RPZiBuZy4kdGlt
ZW91dAotICAgICAgKgotICAgICAgKiBAZGVzY3JpcHRpb24KLSAgICAgICogQ2FuY2VscyBhIHRh
c2sgYXNzb2NpYXRlZCB3aXRoIHRoZSBgcHJvbWlzZWAuIEFzIGEgcmVzdWx0IG9mIHRoaXMsIHRo
ZSBwcm9taXNlIHdpbGwgYmUKLSAgICAgICogcmVzb2x2ZWQgd2l0aCBhIHJlamVjdGlvbi4KLSAg
ICAgICoKLSAgICAgICogQHBhcmFtIHtQcm9taXNlPX0gcHJvbWlzZSBQcm9taXNlIHJldHVybmVk
IGJ5IHRoZSBgJHRpbWVvdXRgIGZ1bmN0aW9uLgotICAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0g
UmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHRhc2sgaGFzbid0IGV4ZWN1dGVkIHlldCBhbmQgd2FzIHN1
Y2Nlc3NmdWxseQotICAgICAgKiAgIGNhbmNlbGVkLgotICAgICAgKi8KLSAgICB0aW1lb3V0LmNh
bmNlbCA9IGZ1bmN0aW9uKHByb21pc2UpIHsKLSAgICAgIGlmIChwcm9taXNlICYmIHByb21pc2Uu
JCR0aW1lb3V0SWQgaW4gZGVmZXJyZWRzKSB7Ci0gICAgICAgIGRlZmVycmVkc1twcm9taXNlLiQk
dGltZW91dElkXS5yZWplY3QoJ2NhbmNlbGVkJyk7Ci0gICAgICAgIHJldHVybiAkYnJvd3Nlci5k
ZWZlci5jYW5jZWwocHJvbWlzZS4kJHRpbWVvdXRJZCk7Ci0gICAgICB9Ci0gICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfTsKLQotICAgIHJldHVybiB0aW1lb3V0OwotICB9XTsKLX0KLQotLyoqCi0g
KiBAbmdkb2Mgb2JqZWN0Ci0gKiBAbmFtZSBuZy4kZmlsdGVyUHJvdmlkZXIKLSAqIEBkZXNjcmlw
dGlvbgotICoKLSAqIEZpbHRlcnMgYXJlIGp1c3QgZnVuY3Rpb25zIHdoaWNoIHRyYW5zZm9ybSBp
bnB1dCB0byBhbiBvdXRwdXQuIEhvd2V2ZXIgZmlsdGVycyBuZWVkIHRvIGJlIERlcGVuZGVuY3kg
SW5qZWN0ZWQuIFRvCi0gKiBhY2hpZXZlIHRoaXMgYSBmaWx0ZXIgZGVmaW5pdGlvbiBjb25zaXN0
cyBvZiBhIGZhY3RvcnkgZnVuY3Rpb24gd2hpY2ggaXMgYW5ub3RhdGVkIHdpdGggZGVwZW5kZW5j
aWVzIGFuZCBpcwotICogcmVzcG9uc2libGUgZm9yIGNyZWF0aW5nIGEgZmlsdGVyIGZ1bmN0aW9u
LgotICoKLSAqIDxwcmU+Ci0gKiAgIC8vIEZpbHRlciByZWdpc3RyYXRpb24KLSAqICAgZnVuY3Rp
b24gTXlNb2R1bGUoJHByb3ZpZGUsICRmaWx0ZXJQcm92aWRlcikgewotICogICAgIC8vIGNyZWF0
ZSBhIHNlcnZpY2UgdG8gZGVtb25zdHJhdGUgaW5qZWN0aW9uIChub3QgYWx3YXlzIG5lZWRlZCkK
LSAqICAgICAkcHJvdmlkZS52YWx1ZSgnZ3JlZXQnLCBmdW5jdGlvbihuYW1lKXsKLSAqICAgICAg
IHJldHVybiAnSGVsbG8gJyArIG5hbWUgKyAnISc7Ci0gKiAgICAgfSk7Ci0gKgotICogICAgIC8v
IHJlZ2lzdGVyIGEgZmlsdGVyIGZhY3Rvcnkgd2hpY2ggdXNlcyB0aGUKLSAqICAgICAvLyBncmVl
dCBzZXJ2aWNlIHRvIGRlbW9uc3RyYXRlIERJLgotICogICAgICRmaWx0ZXJQcm92aWRlci5yZWdp
c3RlcignZ3JlZXQnLCBmdW5jdGlvbihncmVldCl7Ci0gKiAgICAgICAvLyByZXR1cm4gdGhlIGZp
bHRlciBmdW5jdGlvbiB3aGljaCB1c2VzIHRoZSBncmVldCBzZXJ2aWNlCi0gKiAgICAgICAvLyB0
byBnZW5lcmF0ZSBzYWx1dGF0aW9uCi0gKiAgICAgICByZXR1cm4gZnVuY3Rpb24odGV4dCkgewot
ICogICAgICAgICAvLyBmaWx0ZXJzIG5lZWQgdG8gYmUgZm9yZ2l2aW5nIHNvIGNoZWNrIGlucHV0
IHZhbGlkaXR5Ci0gKiAgICAgICAgIHJldHVybiB0ZXh0ICYmIGdyZWV0KHRleHQpIHx8IHRleHQ7
Ci0gKiAgICAgICB9OwotICogICAgIH0pOwotICogICB9Ci0gKiA8L3ByZT4KLSAqCi0gKiBUaGUg
ZmlsdGVyIGZ1bmN0aW9uIGlzIHJlZ2lzdGVyZWQgd2l0aCB0aGUgYCRpbmplY3RvcmAgdW5kZXIg
dGhlIGZpbHRlciBuYW1lIHN1ZmZpeGUgd2l0aCBgRmlsdGVyYC4KLSAqIDxwcmU+Ci0gKiAgIGl0
KCdzaG91bGQgYmUgdGhlIHNhbWUgaW5zdGFuY2UnLCBpbmplY3QoCi0gKiAgICAgZnVuY3Rpb24o
JGZpbHRlclByb3ZpZGVyKSB7Ci0gKiAgICAgICAkZmlsdGVyUHJvdmlkZXIucmVnaXN0ZXIoJ3Jl
dmVyc2UnLCBmdW5jdGlvbigpewotICogICAgICAgICByZXR1cm4gLi4uOwotICogICAgICAgfSk7
Ci0gKiAgICAgfSwKLSAqICAgICBmdW5jdGlvbigkZmlsdGVyLCByZXZlcnNlRmlsdGVyKSB7Ci0g
KiAgICAgICBleHBlY3QoJGZpbHRlcigncmV2ZXJzZScpKS50b0JlKHJldmVyc2VGaWx0ZXIpOwot
ICogICAgIH0pOwotICogPC9wcmU+Ci0gKgotICoKLSAqIEZvciBtb3JlIGluZm9ybWF0aW9uIGFi
b3V0IGhvdyBhbmd1bGFyIGZpbHRlcnMgd29yaywgYW5kIGhvdyB0byBjcmVhdGUgeW91ciBvd24g
ZmlsdGVycywgc2VlCi0gKiB7QGxpbmsgZ3VpZGUvZGV2X2d1aWRlLnRlbXBsYXRlcy5maWx0ZXJz
IFVuZGVyc3RhbmRpbmcgQW5ndWxhciBGaWx0ZXJzfSBpbiB0aGUgYW5ndWxhciBEZXZlbG9wZXIK
LSAqIEd1aWRlLgotICovCi0vKioKLSAqIEBuZ2RvYyBtZXRob2QKLSAqIEBuYW1lIG5nLiRmaWx0
ZXJQcm92aWRlciNyZWdpc3RlcgotICogQG1ldGhvZE9mIG5nLiRmaWx0ZXJQcm92aWRlcgotICog
QGRlc2NyaXB0aW9uCi0gKiBSZWdpc3RlciBmaWx0ZXIgZmFjdG9yeSBmdW5jdGlvbi4KLSAqCi0g
KiBAcGFyYW0ge1N0cmluZ30gbmFtZSBOYW1lIG9mIHRoZSBmaWx0ZXIuCi0gKiBAcGFyYW0ge2Z1
bmN0aW9ufSBmbiBUaGUgZmlsdGVyIGZhY3RvcnkgZnVuY3Rpb24gd2hpY2ggaXMgaW5qZWN0YWJs
ZS4KLSAqLwotCi0KLS8qKgotICogQG5nZG9jIGZ1bmN0aW9uCi0gKiBAbmFtZSBuZy4kZmlsdGVy
Ci0gKiBAZnVuY3Rpb24KLSAqIEBkZXNjcmlwdGlvbgotICogRmlsdGVycyBhcmUgdXNlZCBmb3Ig
Zm9ybWF0dGluZyBkYXRhIGRpc3BsYXllZCB0byB0aGUgdXNlci4KLSAqCi0gKiBUaGUgZ2VuZXJh
bCBzeW50YXggaW4gdGVtcGxhdGVzIGlzIGFzIGZvbGxvd3M6Ci0gKgotICogICAgICAgICB7eyBl
eHByZXNzaW9uIFt8IGZpbHRlcl9uYW1lWzpwYXJhbWV0ZXJfdmFsdWVdIC4uLiBdIH19Ci0gKgot
ICogQHBhcmFtIHtTdHJpbmd9IG5hbWUgTmFtZSBvZiB0aGUgZmlsdGVyIGZ1bmN0aW9uIHRvIHJl
dHJpZXZlCi0gKiBAcmV0dXJuIHtGdW5jdGlvbn0gdGhlIGZpbHRlciBmdW5jdGlvbgotICovCi0k
RmlsdGVyUHJvdmlkZXIuJGluamVjdCA9IFsnJHByb3ZpZGUnXTsKLWZ1bmN0aW9uICRGaWx0ZXJQ
cm92aWRlcigkcHJvdmlkZSkgewotICB2YXIgc3VmZml4ID0gJ0ZpbHRlcic7Ci0KLSAgZnVuY3Rp
b24gcmVnaXN0ZXIobmFtZSwgZmFjdG9yeSkgewotICAgIHJldHVybiAkcHJvdmlkZS5mYWN0b3J5
KG5hbWUgKyBzdWZmaXgsIGZhY3RvcnkpOwotICB9Ci0gIHRoaXMucmVnaXN0ZXIgPSByZWdpc3Rl
cjsKLQotICB0aGlzLiRnZXQgPSBbJyRpbmplY3RvcicsIGZ1bmN0aW9uKCRpbmplY3Rvcikgewot
ICAgIHJldHVybiBmdW5jdGlvbihuYW1lKSB7Ci0gICAgICByZXR1cm4gJGluamVjdG9yLmdldChu
YW1lICsgc3VmZml4KTsKLSAgICB9Ci0gIH1dOwotCi0gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8KLQotICByZWdpc3RlcignY3VycmVuY3knLCBjdXJyZW5jeUZpbHRl
cik7Ci0gIHJlZ2lzdGVyKCdkYXRlJywgZGF0ZUZpbHRlcik7Ci0gIHJlZ2lzdGVyKCdmaWx0ZXIn
LCBmaWx0ZXJGaWx0ZXIpOwotICByZWdpc3RlcignanNvbicsIGpzb25GaWx0ZXIpOwotICByZWdp
c3RlcignbGltaXRUbycsIGxpbWl0VG9GaWx0ZXIpOwotICByZWdpc3RlcignbG93ZXJjYXNlJywg
bG93ZXJjYXNlRmlsdGVyKTsKLSAgcmVnaXN0ZXIoJ251bWJlcicsIG51bWJlckZpbHRlcik7Ci0g
IHJlZ2lzdGVyKCdvcmRlckJ5Jywgb3JkZXJCeUZpbHRlcik7Ci0gIHJlZ2lzdGVyKCd1cHBlcmNh
c2UnLCB1cHBlcmNhc2VGaWx0ZXIpOwotfQotCi0vKioKLSAqIEBuZ2RvYyBmaWx0ZXIKLSAqIEBu
YW1lIG5nLmZpbHRlcjpmaWx0ZXIKLSAqIEBmdW5jdGlvbgotICoKLSAqIEBkZXNjcmlwdGlvbgot
ICogU2VsZWN0cyBhIHN1YnNldCBvZiBpdGVtcyBmcm9tIGBhcnJheWAgYW5kIHJldHVybnMgaXQg
YXMgYSBuZXcgYXJyYXkuCi0gKgotICogTm90ZTogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGF1
Z21lbnQgdGhlIGBBcnJheWAgdHlwZSBpbiBBbmd1bGFyIGV4cHJlc3Npb25zLiBTZWUKLSAqIHtA
bGluayBuZy4kZmlsdGVyfSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBBbmd1bGFyIGFycmF5
cy4KLSAqCi0gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgc291cmNlIGFycmF5LgotICogQHBh
cmFtIHtzdHJpbmd8T2JqZWN0fGZ1bmN0aW9uKCl9IGV4cHJlc3Npb24gVGhlIHByZWRpY2F0ZSB0
byBiZSB1c2VkIGZvciBzZWxlY3RpbmcgaXRlbXMgZnJvbQotICogICBgYXJyYXlgLgotICoKLSAq
ICAgQ2FuIGJlIG9uZSBvZjoKLSAqCi0gKiAgIC0gYHN0cmluZ2A6IFByZWRpY2F0ZSB0aGF0IHJl
c3VsdHMgaW4gYSBzdWJzdHJpbmcgbWF0Y2ggdXNpbmcgdGhlIHZhbHVlIG9mIGBleHByZXNzaW9u
YAotICogICAgIHN0cmluZy4gQWxsIHN0cmluZ3Mgb3Igb2JqZWN0cyB3aXRoIHN0cmluZyBwcm9w
ZXJ0aWVzIGluIGBhcnJheWAgdGhhdCBjb250YWluIHRoaXMgc3RyaW5nCi0gKiAgICAgd2lsbCBi
ZSByZXR1cm5lZC4gVGhlIHByZWRpY2F0ZSBjYW4gYmUgbmVnYXRlZCBieSBwcmVmaXhpbmcgdGhl
IHN0cmluZyB3aXRoIGAhYC4KLSAqCi0gKiAgIC0gYE9iamVjdGA6IEEgcGF0dGVybiBvYmplY3Qg
Y2FuIGJlIHVzZWQgdG8gZmlsdGVyIHNwZWNpZmljIHByb3BlcnRpZXMgb24gb2JqZWN0cyBjb250
YWluZWQKLSAqICAgICBieSBgYXJyYXlgLiBGb3IgZXhhbXBsZSBge25hbWU6Ik0iLCBwaG9uZToi
MSJ9YCBwcmVkaWNhdGUgd2lsbCByZXR1cm4gYW4gYXJyYXkgb2YgaXRlbXMKLSAqICAgICB3aGlj
aCBoYXZlIHByb3BlcnR5IGBuYW1lYCBjb250YWluaW5nICJNIiBhbmQgcHJvcGVydHkgYHBob25l
YCBjb250YWluaW5nICIxIi4gQSBzcGVjaWFsCi0gKiAgICAgcHJvcGVydHkgbmFtZSBgJGAgY2Fu
IGJlIHVzZWQgKGFzIGluIGB7JDoidGV4dCJ9YCkgdG8gYWNjZXB0IGEgbWF0Y2ggYWdhaW5zdCBh
bnkKLSAqICAgICBwcm9wZXJ0eSBvZiB0aGUgb2JqZWN0LiBUaGF0J3MgZXF1aXZhbGVudCB0byB0
aGUgc2ltcGxlIHN1YnN0cmluZyBtYXRjaCB3aXRoIGEgYHN0cmluZ2AKLSAqICAgICBhcyBkZXNj
cmliZWQgYWJvdmUuCi0gKgotICogICAtIGBmdW5jdGlvbmA6IEEgcHJlZGljYXRlIGZ1bmN0aW9u
IGNhbiBiZSB1c2VkIHRvIHdyaXRlIGFyYml0cmFyeSBmaWx0ZXJzLiBUaGUgZnVuY3Rpb24gaXMK
LSAqICAgICBjYWxsZWQgZm9yIGVhY2ggZWxlbWVudCBvZiBgYXJyYXlgLiBUaGUgZmluYWwgcmVz
dWx0IGlzIGFuIGFycmF5IG9mIHRob3NlIGVsZW1lbnRzIHRoYXQKLSAqICAgICB0aGUgcHJlZGlj
YXRlIHJldHVybmVkIHRydWUgZm9yLgotICoKLSAqIEBleGFtcGxlCi0gICA8ZG9jOmV4YW1wbGU+
Ci0gICAgIDxkb2M6c291cmNlPgotICAgICAgIDxkaXYgbmctaW5pdD0iZnJpZW5kcyA9IFt7bmFt
ZTonSm9obicsIHBob25lOic1NTUtMTI3Nid9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB7bmFtZTonTWFyeScsIHBob25lOic4MDAtQklHLU1BUlknfSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAge25hbWU6J01pa2UnLCBwaG9uZTonNTU1LTQzMjEnfSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAge25hbWU6J0FkYW0nLCBwaG9uZTonNTU1LTU2Nzgn
fSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge25hbWU6J0p1bGllJywgcGhvbmU6
JzU1NS04NzY1J31dIj48L2Rpdj4KLQotICAgICAgIFNlYXJjaDogPGlucHV0IG5nLW1vZGVsPSJz
ZWFyY2hUZXh0Ij4KLSAgICAgICA8dGFibGUgaWQ9InNlYXJjaFRleHRSZXN1bHRzIj4KLSAgICAg
ICAgIDx0cj48dGg+TmFtZTwvdGg+PHRoPlBob25lPC90aD48L3RyPgotICAgICAgICAgPHRyIG5n
LXJlcGVhdD0iZnJpZW5kIGluIGZyaWVuZHMgfCBmaWx0ZXI6c2VhcmNoVGV4dCI+Ci0gICAgICAg
ICAgIDx0ZD57e2ZyaWVuZC5uYW1lfX08L3RkPgotICAgICAgICAgICA8dGQ+e3tmcmllbmQucGhv
bmV9fTwvdGQ+Ci0gICAgICAgICA8L3RyPgotICAgICAgIDwvdGFibGU+Ci0gICAgICAgPGhyPgot
ICAgICAgIEFueTogPGlucHV0IG5nLW1vZGVsPSJzZWFyY2guJCI+IDxicj4KLSAgICAgICBOYW1l
IG9ubHkgPGlucHV0IG5nLW1vZGVsPSJzZWFyY2gubmFtZSI+PGJyPgotICAgICAgIFBob25lIG9u
bHkgPGlucHV0IG5nLW1vZGVsPSJzZWFyY2gucGhvbmUiPjxicj4KLSAgICAgICA8dGFibGUgaWQ9
InNlYXJjaE9ialJlc3VsdHMiPgotICAgICAgICAgPHRyPjx0aD5OYW1lPC90aD48dGg+UGhvbmU8
L3RoPjwvdHI+Ci0gICAgICAgICA8dHIgbmctcmVwZWF0PSJmcmllbmQgaW4gZnJpZW5kcyB8IGZp
bHRlcjpzZWFyY2giPgotICAgICAgICAgICA8dGQ+e3tmcmllbmQubmFtZX19PC90ZD4KLSAgICAg
ICAgICAgPHRkPnt7ZnJpZW5kLnBob25lfX08L3RkPgotICAgICAgICAgPC90cj4KLSAgICAgICA8
L3RhYmxlPgotICAgICA8L2RvYzpzb3VyY2U+Ci0gICAgIDxkb2M6c2NlbmFyaW8+Ci0gICAgICAg
aXQoJ3Nob3VsZCBzZWFyY2ggYWNyb3NzIGFsbCBmaWVsZHMgd2hlbiBmaWx0ZXJpbmcgd2l0aCBh
IHN0cmluZycsIGZ1bmN0aW9uKCkgewotICAgICAgICAgaW5wdXQoJ3NlYXJjaFRleHQnKS5lbnRl
cignbScpOwotICAgICAgICAgZXhwZWN0KHJlcGVhdGVyKCcjc2VhcmNoVGV4dFJlc3VsdHMgdHIn
LCAnZnJpZW5kIGluIGZyaWVuZHMnKS5jb2x1bW4oJ2ZyaWVuZC5uYW1lJykpLgotICAgICAgICAg
ICB0b0VxdWFsKFsnTWFyeScsICdNaWtlJywgJ0FkYW0nXSk7Ci0KLSAgICAgICAgIGlucHV0KCdz
ZWFyY2hUZXh0JykuZW50ZXIoJzc2Jyk7Ci0gICAgICAgICBleHBlY3QocmVwZWF0ZXIoJyNzZWFy
Y2hUZXh0UmVzdWx0cyB0cicsICdmcmllbmQgaW4gZnJpZW5kcycpLmNvbHVtbignZnJpZW5kLm5h
bWUnKSkuCi0gICAgICAgICAgIHRvRXF1YWwoWydKb2huJywgJ0p1bGllJ10pOwotICAgICAgIH0p
OwotCi0gICAgICAgaXQoJ3Nob3VsZCBzZWFyY2ggaW4gc3BlY2lmaWMgZmllbGRzIHdoZW4gZmls
dGVyaW5nIHdpdGggYSBwcmVkaWNhdGUgb2JqZWN0JywgZnVuY3Rpb24oKSB7Ci0gICAgICAgICBp
bnB1dCgnc2VhcmNoLiQnKS5lbnRlcignaScpOwotICAgICAgICAgZXhwZWN0KHJlcGVhdGVyKCcj
c2VhcmNoT2JqUmVzdWx0cyB0cicsICdmcmllbmQgaW4gZnJpZW5kcycpLmNvbHVtbignZnJpZW5k
Lm5hbWUnKSkuCi0gICAgICAgICAgIHRvRXF1YWwoWydNYXJ5JywgJ01pa2UnLCAnSnVsaWUnXSk7
Ci0gICAgICAgfSk7Ci0gICAgIDwvZG9jOnNjZW5hcmlvPgotICAgPC9kb2M6ZXhhbXBsZT4KLSAq
LwotZnVuY3Rpb24gZmlsdGVyRmlsdGVyKCkgewotICByZXR1cm4gZnVuY3Rpb24oYXJyYXksIGV4
cHJlc3Npb24pIHsKLSAgICBpZiAoIWlzQXJyYXkoYXJyYXkpKSByZXR1cm4gYXJyYXk7Ci0gICAg
dmFyIHByZWRpY2F0ZXMgPSBbXTsKLSAgICBwcmVkaWNhdGVzLmNoZWNrID0gZnVuY3Rpb24odmFs
dWUpIHsKLSAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgcHJlZGljYXRlcy5sZW5ndGg7IGorKykg
ewotICAgICAgICBpZighcHJlZGljYXRlc1tqXSh2YWx1ZSkpIHsKLSAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIHJldHVybiB0cnVlOwotICAgIH07Ci0g
ICAgdmFyIHNlYXJjaCA9IGZ1bmN0aW9uKG9iaiwgdGV4dCl7Ci0gICAgICBpZiAodGV4dC5jaGFy
QXQoMCkgPT09ICchJykgewotICAgICAgICByZXR1cm4gIXNlYXJjaChvYmosIHRleHQuc3Vic3Ry
KDEpKTsKLSAgICAgIH0KLSAgICAgIHN3aXRjaCAodHlwZW9mIG9iaikgewotICAgICAgICBjYXNl
ICJib29sZWFuIjoKLSAgICAgICAgY2FzZSAibnVtYmVyIjoKLSAgICAgICAgY2FzZSAic3RyaW5n
IjoKLSAgICAgICAgICByZXR1cm4gKCcnICsgb2JqKS50b0xvd2VyQ2FzZSgpLmluZGV4T2YodGV4
dCkgPiAtMTsKLSAgICAgICAgY2FzZSAib2JqZWN0IjoKLSAgICAgICAgICBmb3IgKCB2YXIgb2Jq
S2V5IGluIG9iaikgewotICAgICAgICAgICAgaWYgKG9iaktleS5jaGFyQXQoMCkgIT09ICckJyAm
JiBzZWFyY2gob2JqW29iaktleV0sIHRleHQpKSB7Ci0gICAgICAgICAgICAgIHJldHVybiB0cnVl
OwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIGNhc2UgImFycmF5IjoKLSAgICAgICAgICBmb3IgKCB2YXIgaSA9IDA7IGkgPCBvYmou
bGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgIGlmIChzZWFyY2gob2JqW2ldLCB0ZXh0KSkgewot
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0g
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgIH0KLSAgICB9OwotICAgIHN3aXRjaCAodHlwZW9mIGV4cHJlc3Npb24p
IHsKLSAgICAgIGNhc2UgImJvb2xlYW4iOgotICAgICAgY2FzZSAibnVtYmVyIjoKLSAgICAgIGNh
c2UgInN0cmluZyI6Ci0gICAgICAgIGV4cHJlc3Npb24gPSB7JDpleHByZXNzaW9ufTsKLSAgICAg
IGNhc2UgIm9iamVjdCI6Ci0gICAgICAgIGZvciAodmFyIGtleSBpbiBleHByZXNzaW9uKSB7Ci0g
ICAgICAgICAgaWYgKGtleSA9PSAnJCcpIHsKLSAgICAgICAgICAgIChmdW5jdGlvbigpIHsKLSAg
ICAgICAgICAgICAgdmFyIHRleHQgPSAoJycrZXhwcmVzc2lvbltrZXldKS50b0xvd2VyQ2FzZSgp
OwotICAgICAgICAgICAgICBpZiAoIXRleHQpIHJldHVybjsKLSAgICAgICAgICAgICAgcHJlZGlj
YXRlcy5wdXNoKGZ1bmN0aW9uKHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlYXJj
aCh2YWx1ZSwgdGV4dCk7Ci0gICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfSkoKTsKLSAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAg
ICB2YXIgcGF0aCA9IGtleTsKLSAgICAgICAgICAgICAgdmFyIHRleHQgPSAoJycrZXhwcmVzc2lv
bltrZXldKS50b0xvd2VyQ2FzZSgpOwotICAgICAgICAgICAgICBpZiAoIXRleHQpIHJldHVybjsK
LSAgICAgICAgICAgICAgcHJlZGljYXRlcy5wdXNoKGZ1bmN0aW9uKHZhbHVlKSB7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIHNlYXJjaChnZXR0ZXIodmFsdWUsIHBhdGgpLCB0ZXh0KTsKLSAgICAg
ICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9KSgpOwotICAgICAgICAgIH0KLSAgICAgICAgfQot
ICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgJ2Z1bmN0aW9uJzoKLSAgICAgICAgcHJlZGljYXRl
cy5wdXNoKGV4cHJlc3Npb24pOwotICAgICAgICBicmVhazsKLSAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgIHJldHVybiBhcnJheTsKLSAgICB9Ci0gICAgdmFyIGZpbHRlcmVkID0gW107Ci0gICAgZm9y
ICggdmFyIGogPSAwOyBqIDwgYXJyYXkubGVuZ3RoOyBqKyspIHsKLSAgICAgIHZhciB2YWx1ZSA9
IGFycmF5W2pdOwotICAgICAgaWYgKHByZWRpY2F0ZXMuY2hlY2sodmFsdWUpKSB7Ci0gICAgICAg
IGZpbHRlcmVkLnB1c2godmFsdWUpOwotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gZmlsdGVy
ZWQ7Ci0gIH0KLX0KLQotLyoqCi0gKiBAbmdkb2MgZmlsdGVyCi0gKiBAbmFtZSBuZy5maWx0ZXI6
Y3VycmVuY3kKLSAqIEBmdW5jdGlvbgotICoKLSAqIEBkZXNjcmlwdGlvbgotICogRm9ybWF0cyBh
IG51bWJlciBhcyBhIGN1cnJlbmN5IChpZSAkMSwyMzQuNTYpLiBXaGVuIG5vIGN1cnJlbmN5IHN5
bWJvbCBpcyBwcm92aWRlZCwgZGVmYXVsdAotICogc3ltYm9sIGZvciBjdXJyZW50IGxvY2FsZSBp
cyB1c2VkLgotICoKLSAqIEBwYXJhbSB7bnVtYmVyfSBhbW91bnQgSW5wdXQgdG8gZmlsdGVyLgot
ICogQHBhcmFtIHtzdHJpbmc9fSBzeW1ib2wgQ3VycmVuY3kgc3ltYm9sIG9yIGlkZW50aWZpZXIg
dG8gYmUgZGlzcGxheWVkLgotICogQHJldHVybnMge3N0cmluZ30gRm9ybWF0dGVkIG51bWJlci4K
LSAqCi0gKgotICogQGV4YW1wbGUKLSAgIDxkb2M6ZXhhbXBsZT4KLSAgICAgPGRvYzpzb3VyY2U+
Ci0gICAgICAgPHNjcmlwdD4KLSAgICAgICAgIGZ1bmN0aW9uIEN0cmwoJHNjb3BlKSB7Ci0gICAg
ICAgICAgICRzY29wZS5hbW91bnQgPSAxMjM0LjU2OwotICAgICAgICAgfQotICAgICAgIDwvc2Ny
aXB0PgotICAgICAgIDxkaXYgbmctY29udHJvbGxlcj0iQ3RybCI+Ci0gICAgICAgICA8aW5wdXQg
dHlwZT0ibnVtYmVyIiBuZy1tb2RlbD0iYW1vdW50Ij4gPGJyPgotICAgICAgICAgZGVmYXVsdCBj
dXJyZW5jeSBzeW1ib2wgKCQpOiB7e2Ftb3VudCB8IGN1cnJlbmN5fX08YnI+Ci0gICAgICAgICBj
dXN0b20gY3VycmVuY3kgaWRlbnRpZmllciAoVVNEJCk6IHt7YW1vdW50IHwgY3VycmVuY3k6IlVT
RCQifX0KLSAgICAgICA8L2Rpdj4KLSAgICAgPC9kb2M6c291cmNlPgotICAgICA8ZG9jOnNjZW5h
cmlvPgotICAgICAgIGl0KCdzaG91bGQgaW5pdCB3aXRoIDEyMzQuNTYnLCBmdW5jdGlvbigpIHsK
LSAgICAgICAgIGV4cGVjdChiaW5kaW5nKCdhbW91bnQgfCBjdXJyZW5jeScpKS50b0JlKCckMSwy
MzQuNTYnKTsKLSAgICAgICAgIGV4cGVjdChiaW5kaW5nKCdhbW91bnQgfCBjdXJyZW5jeToiVVNE
JCInKSkudG9CZSgnVVNEJDEsMjM0LjU2Jyk7Ci0gICAgICAgfSk7Ci0gICAgICAgaXQoJ3Nob3Vs
ZCB1cGRhdGUnLCBmdW5jdGlvbigpIHsKLSAgICAgICAgIGlucHV0KCdhbW91bnQnKS5lbnRlcign
LTEyMzQnKTsKLSAgICAgICAgIGV4cGVjdChiaW5kaW5nKCdhbW91bnQgfCBjdXJyZW5jeScpKS50
b0JlKCcoJDEsMjM0LjAwKScpOwotICAgICAgICAgZXhwZWN0KGJpbmRpbmcoJ2Ftb3VudCB8IGN1
cnJlbmN5OiJVU0QkIicpKS50b0JlKCcoVVNEJDEsMjM0LjAwKScpOwotICAgICAgIH0pOwotICAg
ICA8L2RvYzpzY2VuYXJpbz4KLSAgIDwvZG9jOmV4YW1wbGU+Ci0gKi8KLWN1cnJlbmN5RmlsdGVy
LiRpbmplY3QgPSBbJyRsb2NhbGUnXTsKLWZ1bmN0aW9uIGN1cnJlbmN5RmlsdGVyKCRsb2NhbGUp
IHsKLSAgdmFyIGZvcm1hdHMgPSAkbG9jYWxlLk5VTUJFUl9GT1JNQVRTOwotICByZXR1cm4gZnVu
Y3Rpb24oYW1vdW50LCBjdXJyZW5jeVN5bWJvbCl7Ci0gICAgaWYgKGlzVW5kZWZpbmVkKGN1cnJl
bmN5U3ltYm9sKSkgY3VycmVuY3lTeW1ib2wgPSBmb3JtYXRzLkNVUlJFTkNZX1NZTTsKLSAgICBy
ZXR1cm4gZm9ybWF0TnVtYmVyKGFtb3VudCwgZm9ybWF0cy5QQVRURVJOU1sxXSwgZm9ybWF0cy5H
Uk9VUF9TRVAsIGZvcm1hdHMuREVDSU1BTF9TRVAsIDIpLgotICAgICAgICAgICAgICAgIHJlcGxh
Y2UoL1x1MDBBNC9nLCBjdXJyZW5jeVN5bWJvbCk7Ci0gIH07Ci19Ci0KLS8qKgotICogQG5nZG9j
IGZpbHRlcgotICogQG5hbWUgbmcuZmlsdGVyOm51bWJlcgotICogQGZ1bmN0aW9uCi0gKgotICog
QGRlc2NyaXB0aW9uCi0gKiBGb3JtYXRzIGEgbnVtYmVyIGFzIHRleHQuCi0gKgotICogSWYgdGhl
IGlucHV0IGlzIG5vdCBhIG51bWJlciBhbiBlbXB0eSBzdHJpbmcgaXMgcmV0dXJuZWQuCi0gKgot
ICogQHBhcmFtIHtudW1iZXJ8c3RyaW5nfSBudW1iZXIgTnVtYmVyIHRvIGZvcm1hdC4KLSAqIEBw
YXJhbSB7KG51bWJlcnxzdHJpbmcpPX0gW2ZyYWN0aW9uU2l6ZT0yXSBOdW1iZXIgb2YgZGVjaW1h
bCBwbGFjZXMgdG8gcm91bmQgdGhlIG51bWJlciB0by4KLSAqIEByZXR1cm5zIHtzdHJpbmd9IE51
bWJlciByb3VuZGVkIHRvIGRlY2ltYWxQbGFjZXMgYW5kIHBsYWNlcyBhIOKAnCzigJ0gYWZ0ZXIg
ZWFjaCB0aGlyZCBkaWdpdC4KLSAqCi0gKiBAZXhhbXBsZQotICAgPGRvYzpleGFtcGxlPgotICAg
ICA8ZG9jOnNvdXJjZT4KLSAgICAgICA8c2NyaXB0PgotICAgICAgICAgZnVuY3Rpb24gQ3RybCgk
c2NvcGUpIHsKLSAgICAgICAgICAgJHNjb3BlLnZhbCA9IDEyMzQuNTY3ODk7Ci0gICAgICAgICB9
Ci0gICAgICAgPC9zY3JpcHQ+Ci0gICAgICAgPGRpdiBuZy1jb250cm9sbGVyPSJDdHJsIj4KLSAg
ICAgICAgIEVudGVyIG51bWJlcjogPGlucHV0IG5nLW1vZGVsPSd2YWwnPjxicj4KLSAgICAgICAg
IERlZmF1bHQgZm9ybWF0dGluZzoge3t2YWwgfCBudW1iZXJ9fTxicj4KLSAgICAgICAgIE5vIGZy
YWN0aW9uczoge3t2YWwgfCBudW1iZXI6MH19PGJyPgotICAgICAgICAgTmVnYXRpdmUgbnVtYmVy
OiB7ey12YWwgfCBudW1iZXI6NH19Ci0gICAgICAgPC9kaXY+Ci0gICAgIDwvZG9jOnNvdXJjZT4K
LSAgICAgPGRvYzpzY2VuYXJpbz4KLSAgICAgICBpdCgnc2hvdWxkIGZvcm1hdCBudW1iZXJzJywg
ZnVuY3Rpb24oKSB7Ci0gICAgICAgICBleHBlY3QoYmluZGluZygndmFsIHwgbnVtYmVyJykpLnRv
QmUoJzEsMjM0LjU2OCcpOwotICAgICAgICAgZXhwZWN0KGJpbmRpbmcoJ3ZhbCB8IG51bWJlcjow
JykpLnRvQmUoJzEsMjM1Jyk7Ci0gICAgICAgICBleHBlY3QoYmluZGluZygnLXZhbCB8IG51bWJl
cjo0JykpLnRvQmUoJy0xLDIzNC41Njc5Jyk7Ci0gICAgICAgfSk7Ci0KLSAgICAgICBpdCgnc2hv
dWxkIHVwZGF0ZScsIGZ1bmN0aW9uKCkgewotICAgICAgICAgaW5wdXQoJ3ZhbCcpLmVudGVyKCcz
Mzc0LjMzMycpOwotICAgICAgICAgZXhwZWN0KGJpbmRpbmcoJ3ZhbCB8IG51bWJlcicpKS50b0Jl
KCczLDM3NC4zMzMnKTsKLSAgICAgICAgIGV4cGVjdChiaW5kaW5nKCd2YWwgfCBudW1iZXI6MCcp
KS50b0JlKCczLDM3NCcpOwotICAgICAgICAgZXhwZWN0KGJpbmRpbmcoJy12YWwgfCBudW1iZXI6
NCcpKS50b0JlKCctMywzNzQuMzMzMCcpOwotICAgICAgIH0pOwotICAgICA8L2RvYzpzY2VuYXJp
bz4KLSAgIDwvZG9jOmV4YW1wbGU+Ci0gKi8KLQotCi1udW1iZXJGaWx0ZXIuJGluamVjdCA9IFsn
JGxvY2FsZSddOwotZnVuY3Rpb24gbnVtYmVyRmlsdGVyKCRsb2NhbGUpIHsKLSAgdmFyIGZvcm1h
dHMgPSAkbG9jYWxlLk5VTUJFUl9GT1JNQVRTOwotICByZXR1cm4gZnVuY3Rpb24obnVtYmVyLCBm
cmFjdGlvblNpemUpIHsKLSAgICByZXR1cm4gZm9ybWF0TnVtYmVyKG51bWJlciwgZm9ybWF0cy5Q
QVRURVJOU1swXSwgZm9ybWF0cy5HUk9VUF9TRVAsIGZvcm1hdHMuREVDSU1BTF9TRVAsCi0gICAg
ICBmcmFjdGlvblNpemUpOwotICB9OwotfQotCi12YXIgREVDSU1BTF9TRVAgPSAnLic7Ci1mdW5j
dGlvbiBmb3JtYXROdW1iZXIobnVtYmVyLCBwYXR0ZXJuLCBncm91cFNlcCwgZGVjaW1hbFNlcCwg
ZnJhY3Rpb25TaXplKSB7Ci0gIGlmIChpc05hTihudW1iZXIpIHx8ICFpc0Zpbml0ZShudW1iZXIp
KSByZXR1cm4gJyc7Ci0KLSAgdmFyIGlzTmVnYXRpdmUgPSBudW1iZXIgPCAwOwotICBudW1iZXIg
PSBNYXRoLmFicyhudW1iZXIpOwotICB2YXIgbnVtU3RyID0gbnVtYmVyICsgJycsCi0gICAgICBm
b3JtYXRlZFRleHQgPSAnJywKLSAgICAgIHBhcnRzID0gW107Ci0KLSAgdmFyIGhhc0V4cG9uZW50
ID0gZmFsc2U7Ci0gIGlmIChudW1TdHIuaW5kZXhPZignZScpICE9PSAtMSkgewotICAgIHZhciBt
YXRjaCA9IG51bVN0ci5tYXRjaCgvKFtcZFwuXSspZSgtPykoXGQrKS8pOwotICAgIGlmIChtYXRj
aCAmJiBtYXRjaFsyXSA9PSAnLScgJiYgbWF0Y2hbM10gPiBmcmFjdGlvblNpemUgKyAxKSB7Ci0g
ICAgICBudW1TdHIgPSAnMCc7Ci0gICAgfSBlbHNlIHsKLSAgICAgIGZvcm1hdGVkVGV4dCA9IG51
bVN0cjsKLSAgICAgIGhhc0V4cG9uZW50ID0gdHJ1ZTsKLSAgICB9Ci0gIH0KLQotICBpZiAoIWhh
c0V4cG9uZW50KSB7Ci0gICAgdmFyIGZyYWN0aW9uTGVuID0gKG51bVN0ci5zcGxpdChERUNJTUFM
X1NFUClbMV0gfHwgJycpLmxlbmd0aDsKLQotICAgIC8vIGRldGVybWluZSBmcmFjdGlvblNpemUg
aWYgaXQgaXMgbm90IHNwZWNpZmllZAotICAgIGlmIChpc1VuZGVmaW5lZChmcmFjdGlvblNpemUp
KSB7Ci0gICAgICBmcmFjdGlvblNpemUgPSBNYXRoLm1pbihNYXRoLm1heChwYXR0ZXJuLm1pbkZy
YWMsIGZyYWN0aW9uTGVuKSwgcGF0dGVybi5tYXhGcmFjKTsKLSAgICB9Ci0KLSAgICB2YXIgcG93
ID0gTWF0aC5wb3coMTAsIGZyYWN0aW9uU2l6ZSk7Ci0gICAgbnVtYmVyID0gTWF0aC5yb3VuZChu
dW1iZXIgKiBwb3cpIC8gcG93OwotICAgIHZhciBmcmFjdGlvbiA9ICgnJyArIG51bWJlcikuc3Bs
aXQoREVDSU1BTF9TRVApOwotICAgIHZhciB3aG9sZSA9IGZyYWN0aW9uWzBdOwotICAgIGZyYWN0
aW9uID0gZnJhY3Rpb25bMV0gfHwgJyc7Ci0KLSAgICB2YXIgcG9zID0gMCwKLSAgICAgICAgbGdy
b3VwID0gcGF0dGVybi5sZ1NpemUsCi0gICAgICAgIGdyb3VwID0gcGF0dGVybi5nU2l6ZTsKLQot
ICAgIGlmICh3aG9sZS5sZW5ndGggPj0gKGxncm91cCArIGdyb3VwKSkgewotICAgICAgcG9zID0g
d2hvbGUubGVuZ3RoIC0gbGdyb3VwOwotICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb3M7IGkr
KykgewotICAgICAgICBpZiAoKHBvcyAtIGkpJWdyb3VwID09PSAwICYmIGkgIT09IDApIHsKLSAg
ICAgICAgICBmb3JtYXRlZFRleHQgKz0gZ3JvdXBTZXA7Ci0gICAgICAgIH0KLSAgICAgICAgZm9y
bWF0ZWRUZXh0ICs9IHdob2xlLmNoYXJBdChpKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICBmb3Ig
KGkgPSBwb3M7IGkgPCB3aG9sZS5sZW5ndGg7IGkrKykgewotICAgICAgaWYgKCh3aG9sZS5sZW5n
dGggLSBpKSVsZ3JvdXAgPT09IDAgJiYgaSAhPT0gMCkgewotICAgICAgICBmb3JtYXRlZFRleHQg
Kz0gZ3JvdXBTZXA7Ci0gICAgICB9Ci0gICAgICBmb3JtYXRlZFRleHQgKz0gd2hvbGUuY2hhckF0
KGkpOwotICAgIH0KLQotICAgIC8vIGZvcm1hdCBmcmFjdGlvbiBwYXJ0LgotICAgIHdoaWxlKGZy
YWN0aW9uLmxlbmd0aCA8IGZyYWN0aW9uU2l6ZSkgewotICAgICAgZnJhY3Rpb24gKz0gJzAnOwot
ICAgIH0KLQotICAgIGlmIChmcmFjdGlvblNpemUgJiYgZnJhY3Rpb25TaXplICE9PSAiMCIpIGZv
cm1hdGVkVGV4dCArPSBkZWNpbWFsU2VwICsgZnJhY3Rpb24uc3Vic3RyKDAsIGZyYWN0aW9uU2l6
ZSk7Ci0gIH0KLQotICBwYXJ0cy5wdXNoKGlzTmVnYXRpdmUgPyBwYXR0ZXJuLm5lZ1ByZSA6IHBh
dHRlcm4ucG9zUHJlKTsKLSAgcGFydHMucHVzaChmb3JtYXRlZFRleHQpOwotICBwYXJ0cy5wdXNo
KGlzTmVnYXRpdmUgPyBwYXR0ZXJuLm5lZ1N1ZiA6IHBhdHRlcm4ucG9zU3VmKTsKLSAgcmV0dXJu
IHBhcnRzLmpvaW4oJycpOwotfQotCi1mdW5jdGlvbiBwYWROdW1iZXIobnVtLCBkaWdpdHMsIHRy
aW0pIHsKLSAgdmFyIG5lZyA9ICcnOwotICBpZiAobnVtIDwgMCkgewotICAgIG5lZyA9ICAnLSc7
Ci0gICAgbnVtID0gLW51bTsKLSAgfQotICBudW0gPSAnJyArIG51bTsKLSAgd2hpbGUobnVtLmxl
bmd0aCA8IGRpZ2l0cykgbnVtID0gJzAnICsgbnVtOwotICBpZiAodHJpbSkKLSAgICBudW0gPSBu
dW0uc3Vic3RyKG51bS5sZW5ndGggLSBkaWdpdHMpOwotICByZXR1cm4gbmVnICsgbnVtOwotfQot
Ci0KLWZ1bmN0aW9uIGRhdGVHZXR0ZXIobmFtZSwgc2l6ZSwgb2Zmc2V0LCB0cmltKSB7Ci0gIG9m
ZnNldCA9IG9mZnNldCB8fCAwOwotICByZXR1cm4gZnVuY3Rpb24oZGF0ZSkgewotICAgIHZhciB2
YWx1ZSA9IGRhdGVbJ2dldCcgKyBuYW1lXSgpOwotICAgIGlmIChvZmZzZXQgPiAwIHx8IHZhbHVl
ID4gLW9mZnNldCkKLSAgICAgIHZhbHVlICs9IG9mZnNldDsKLSAgICBpZiAodmFsdWUgPT09IDAg
JiYgb2Zmc2V0ID09IC0xMiApIHZhbHVlID0gMTI7Ci0gICAgcmV0dXJuIHBhZE51bWJlcih2YWx1
ZSwgc2l6ZSwgdHJpbSk7Ci0gIH07Ci19Ci0KLWZ1bmN0aW9uIGRhdGVTdHJHZXR0ZXIobmFtZSwg
c2hvcnRGb3JtKSB7Ci0gIHJldHVybiBmdW5jdGlvbihkYXRlLCBmb3JtYXRzKSB7Ci0gICAgdmFy
IHZhbHVlID0gZGF0ZVsnZ2V0JyArIG5hbWVdKCk7Ci0gICAgdmFyIGdldCA9IHVwcGVyY2FzZShz
aG9ydEZvcm0gPyAoJ1NIT1JUJyArIG5hbWUpIDogbmFtZSk7Ci0KLSAgICByZXR1cm4gZm9ybWF0
c1tnZXRdW3ZhbHVlXTsKLSAgfTsKLX0KLQotZnVuY3Rpb24gdGltZVpvbmVHZXR0ZXIoZGF0ZSkg
ewotICB2YXIgem9uZSA9IC0xICogZGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpOwotICB2YXIgcGFk
ZGVkWm9uZSA9ICh6b25lID49IDApID8gIisiIDogIiI7Ci0KLSAgcGFkZGVkWm9uZSArPSBwYWRO
dW1iZXIoTWF0aFt6b25lID4gMCA/ICdmbG9vcicgOiAnY2VpbCddKHpvbmUgLyA2MCksIDIpICsK
LSAgICAgICAgICAgICAgICBwYWROdW1iZXIoTWF0aC5hYnMoem9uZSAlIDYwKSwgMik7Ci0KLSAg
cmV0dXJuIHBhZGRlZFpvbmU7Ci19Ci0KLWZ1bmN0aW9uIGFtcG1HZXR0ZXIoZGF0ZSwgZm9ybWF0
cykgewotICByZXR1cm4gZGF0ZS5nZXRIb3VycygpIDwgMTIgPyBmb3JtYXRzLkFNUE1TWzBdIDog
Zm9ybWF0cy5BTVBNU1sxXTsKLX0KLQotdmFyIERBVEVfRk9STUFUUyA9IHsKLSAgeXl5eTogZGF0
ZUdldHRlcignRnVsbFllYXInLCA0KSwKLSAgICB5eTogZGF0ZUdldHRlcignRnVsbFllYXInLCAy
LCAwLCB0cnVlKSwKLSAgICAgeTogZGF0ZUdldHRlcignRnVsbFllYXInLCAxKSwKLSAgTU1NTTog
ZGF0ZVN0ckdldHRlcignTW9udGgnKSwKLSAgIE1NTTogZGF0ZVN0ckdldHRlcignTW9udGgnLCB0
cnVlKSwKLSAgICBNTTogZGF0ZUdldHRlcignTW9udGgnLCAyLCAxKSwKLSAgICAgTTogZGF0ZUdl
dHRlcignTW9udGgnLCAxLCAxKSwKLSAgICBkZDogZGF0ZUdldHRlcignRGF0ZScsIDIpLAotICAg
ICBkOiBkYXRlR2V0dGVyKCdEYXRlJywgMSksCi0gICAgSEg6IGRhdGVHZXR0ZXIoJ0hvdXJzJywg
MiksCi0gICAgIEg6IGRhdGVHZXR0ZXIoJ0hvdXJzJywgMSksCi0gICAgaGg6IGRhdGVHZXR0ZXIo
J0hvdXJzJywgMiwgLTEyKSwKLSAgICAgaDogZGF0ZUdldHRlcignSG91cnMnLCAxLCAtMTIpLAot
ICAgIG1tOiBkYXRlR2V0dGVyKCdNaW51dGVzJywgMiksCi0gICAgIG06IGRhdGVHZXR0ZXIoJ01p
bnV0ZXMnLCAxKSwKLSAgICBzczogZGF0ZUdldHRlcignU2Vjb25kcycsIDIpLAotICAgICBzOiBk
YXRlR2V0dGVyKCdTZWNvbmRzJywgMSksCi0gIEVFRUU6IGRhdGVTdHJHZXR0ZXIoJ0RheScpLAot
ICAgRUVFOiBkYXRlU3RyR2V0dGVyKCdEYXknLCB0cnVlKSwKLSAgICAgYTogYW1wbUdldHRlciwK
LSAgICAgWjogdGltZVpvbmVHZXR0ZXIKLX07Ci0KLXZhciBEQVRFX0ZPUk1BVFNfU1BMSVQgPSAv
KCg/OlteeU1kSGhtc2FaRSddKyl8KD86Jyg/OlteJ118JycpKicpfCg/OkUrfHkrfE0rfGQrfEgr
fGgrfG0rfHMrfGF8WikpKC4qKS8sCi0gICAgTlVNQkVSX1NUUklORyA9IC9eXGQrJC87Ci0KLS8q
KgotICogQG5nZG9jIGZpbHRlcgotICogQG5hbWUgbmcuZmlsdGVyOmRhdGUKLSAqIEBmdW5jdGlv
bgotICoKLSAqIEBkZXNjcmlwdGlvbgotICogICBGb3JtYXRzIGBkYXRlYCB0byBhIHN0cmluZyBi
YXNlZCBvbiB0aGUgcmVxdWVzdGVkIGBmb3JtYXRgLgotICoKLSAqICAgYGZvcm1hdGAgc3RyaW5n
IGNhbiBiZSBjb21wb3NlZCBvZiB0aGUgZm9sbG93aW5nIGVsZW1lbnRzOgotICoKLSAqICAgKiBg
J3l5eXknYDogNCBkaWdpdCByZXByZXNlbnRhdGlvbiBvZiB5ZWFyIChlLmcuIEFEIDEgPT4gMDAw
MSwgQUQgMjAxMCA9PiAyMDEwKQotICogICAqIGAneXknYDogMiBkaWdpdCByZXByZXNlbnRhdGlv
biBvZiB5ZWFyLCBwYWRkZWQgKDAwLTk5KS4gKGUuZy4gQUQgMjAwMSA9PiAwMSwgQUQgMjAxMCA9
PiAxMCkKLSAqICAgKiBgJ3knYDogMSBkaWdpdCByZXByZXNlbnRhdGlvbiBvZiB5ZWFyLCBlLmcu
IChBRCAxID0+IDEsIEFEIDE5OSA9PiAxOTkpCi0gKiAgICogYCdNTU1NJ2A6IE1vbnRoIGluIHll
YXIgKEphbnVhcnktRGVjZW1iZXIpCi0gKiAgICogYCdNTU0nYDogTW9udGggaW4geWVhciAoSmFu
LURlYykKLSAqICAgKiBgJ01NJ2A6IE1vbnRoIGluIHllYXIsIHBhZGRlZCAoMDEtMTIpCi0gKiAg
ICogYCdNJ2A6IE1vbnRoIGluIHllYXIgKDEtMTIpCi0gKiAgICogYCdkZCdgOiBEYXkgaW4gbW9u
dGgsIHBhZGRlZCAoMDEtMzEpCi0gKiAgICogYCdkJ2A6IERheSBpbiBtb250aCAoMS0zMSkKLSAq
ICAgKiBgJ0VFRUUnYDogRGF5IGluIFdlZWssKFN1bmRheS1TYXR1cmRheSkKLSAqICAgKiBgJ0VF
RSdgOiBEYXkgaW4gV2VlaywgKFN1bi1TYXQpCi0gKiAgICogYCdISCdgOiBIb3VyIGluIGRheSwg
cGFkZGVkICgwMC0yMykKLSAqICAgKiBgJ0gnYDogSG91ciBpbiBkYXkgKDAtMjMpCi0gKiAgICog
YCdoaCdgOiBIb3VyIGluIGFtL3BtLCBwYWRkZWQgKDAxLTEyKQotICogICAqIGAnaCdgOiBIb3Vy
IGluIGFtL3BtLCAoMS0xMikKLSAqICAgKiBgJ21tJ2A6IE1pbnV0ZSBpbiBob3VyLCBwYWRkZWQg
KDAwLTU5KQotICogICAqIGAnbSdgOiBNaW51dGUgaW4gaG91ciAoMC01OSkKLSAqICAgKiBgJ3Nz
J2A6IFNlY29uZCBpbiBtaW51dGUsIHBhZGRlZCAoMDAtNTkpCi0gKiAgICogYCdzJ2A6IFNlY29u
ZCBpbiBtaW51dGUgKDAtNTkpCi0gKiAgICogYCdhJ2A6IGFtL3BtIG1hcmtlcgotICogICAqIGAn
WidgOiA0IGRpZ2l0ICgrc2lnbikgcmVwcmVzZW50YXRpb24gb2YgdGhlIHRpbWV6b25lIG9mZnNl
dCAoLTEyMDAtKzEyMDApCi0gKgotICogICBgZm9ybWF0YCBzdHJpbmcgY2FuIGFsc28gYmUgb25l
IG9mIHRoZSBmb2xsb3dpbmcgcHJlZGVmaW5lZAotICogICB7QGxpbmsgZ3VpZGUvaTE4biBsb2Nh
bGl6YWJsZSBmb3JtYXRzfToKLSAqCi0gKiAgICogYCdtZWRpdW0nYDogZXF1aXZhbGVudCB0byBg
J01NTSBkLCB5IGg6bW06c3MgYSdgIGZvciBlbl9VUyBsb2NhbGUKLSAqICAgICAoZS5nLiBTZXAg
MywgMjAxMCAxMjowNTowOCBwbSkKLSAqICAgKiBgJ3Nob3J0J2A6IGVxdWl2YWxlbnQgdG8gYCdN
L2QveXkgaDptbSBhJ2AgZm9yIGVuX1VTICBsb2NhbGUgKGUuZy4gOS8zLzEwIDEyOjA1IHBtKQot
ICogICAqIGAnZnVsbERhdGUnYDogZXF1aXZhbGVudCB0byBgJ0VFRUUsIE1NTU0gZCx5J2AgZm9y
IGVuX1VTICBsb2NhbGUKLSAqICAgICAoZS5nLiBGcmlkYXksIFNlcHRlbWJlciAzLCAyMDEwKQot
ICogICAqIGAnbG9uZ0RhdGUnYDogZXF1aXZhbGVudCB0byBgJ01NTU0gZCwgeSdgIGZvciBlbl9V
UyAgbG9jYWxlIChlLmcuIFNlcHRlbWJlciAzLCAyMDEwCi0gKiAgICogYCdtZWRpdW1EYXRlJ2A6
IGVxdWl2YWxlbnQgdG8gYCdNTU0gZCwgeSdgIGZvciBlbl9VUyAgbG9jYWxlIChlLmcuIFNlcCAz
LCAyMDEwKQotICogICAqIGAnc2hvcnREYXRlJ2A6IGVxdWl2YWxlbnQgdG8gYCdNL2QveXknYCBm
b3IgZW5fVVMgbG9jYWxlIChlLmcuIDkvMy8xMCkKLSAqICAgKiBgJ21lZGl1bVRpbWUnYDogZXF1
aXZhbGVudCB0byBgJ2g6bW06c3MgYSdgIGZvciBlbl9VUyBsb2NhbGUgKGUuZy4gMTI6MDU6MDgg
cG0pCi0gKiAgICogYCdzaG9ydFRpbWUnYDogZXF1aXZhbGVudCB0byBgJ2g6bW0gYSdgIGZvciBl
bl9VUyBsb2NhbGUgKGUuZy4gMTI6MDUgcG0pCi0gKgotICogICBgZm9ybWF0YCBzdHJpbmcgY2Fu
IGNvbnRhaW4gbGl0ZXJhbCB2YWx1ZXMuIFRoZXNlIG5lZWQgdG8gYmUgcXVvdGVkIHdpdGggc2lu
Z2xlIHF1b3RlcyAoZS5nLgotICogICBgImggJ2luIHRoZSBtb3JuaW5nJyJgKS4gSW4gb3JkZXIg
dG8gb3V0cHV0IHNpbmdsZSBxdW90ZSwgdXNlIHR3byBzaW5nbGUgcXVvdGVzIGluIGEgc2VxdWVu
Y2UKLSAqICAgKGUuZy4gYCJoIG8nJ2Nsb2NrImApLgotICoKLSAqIEBwYXJhbSB7KERhdGV8bnVt
YmVyfHN0cmluZyl9IGRhdGUgRGF0ZSB0byBmb3JtYXQgZWl0aGVyIGFzIERhdGUgb2JqZWN0LCBt
aWxsaXNlY29uZHMgKHN0cmluZyBvcgotICogICAgbnVtYmVyKSBvciB2YXJpb3VzIElTTyA4NjAx
IGRhdGV0aW1lIHN0cmluZyBmb3JtYXRzIChlLmcuIHl5eXktTU0tZGRUSEg6bW06c3MuU1NTWiBh
bmQgaXRzCi0gKiAgICBzaG9ydGVyIHZlcnNpb25zIGxpa2UgeXl5eS1NTS1kZFRISDptbVosIHl5
eXktTU0tZGQgb3IgeXl5eU1NZGRUSEhtbXNzWikuIElmIG5vIHRpbWV6b25lIGlzCi0gKiAgICBz
cGVjaWZpZWQgaW4gdGhlIHN0cmluZyBpbnB1dCwgdGhlIHRpbWUgaXMgY29uc2lkZXJlZCB0byBi
ZSBpbiB0aGUgbG9jYWwgdGltZXpvbmUuCi0gKiBAcGFyYW0ge3N0cmluZz19IGZvcm1hdCBGb3Jt
YXR0aW5nIHJ1bGVzIChzZWUgRGVzY3JpcHRpb24pLiBJZiBub3Qgc3BlY2lmaWVkLAotICogICAg
YG1lZGl1bURhdGVgIGlzIHVzZWQuCi0gKiBAcmV0dXJucyB7c3RyaW5nfSBGb3JtYXR0ZWQgc3Ry
aW5nIG9yIHRoZSBpbnB1dCBpZiBpbnB1dCBpcyBub3QgcmVjb2duaXplZCBhcyBkYXRlL21pbGxp
cy4KLSAqCi0gKiBAZXhhbXBsZQotICAgPGRvYzpleGFtcGxlPgotICAgICA8ZG9jOnNvdXJjZT4K
LSAgICAgICA8c3BhbiBuZy1ub24tYmluZGFibGU+e3sxMjg4MzIzNjIzMDA2IHwgZGF0ZTonbWVk
aXVtJ319PC9zcGFuPjoKLSAgICAgICAgICAge3sxMjg4MzIzNjIzMDA2IHwgZGF0ZTonbWVkaXVt
J319PGJyPgotICAgICAgIDxzcGFuIG5nLW5vbi1iaW5kYWJsZT57ezEyODgzMjM2MjMwMDYgfCBk
YXRlOid5eXl5LU1NLWRkIEhIOm1tOnNzIFonfX08L3NwYW4+OgotICAgICAgICAgIHt7MTI4ODMy
MzYyMzAwNiB8IGRhdGU6J3l5eXktTU0tZGQgSEg6bW06c3MgWid9fTxicj4KLSAgICAgICA8c3Bh
biBuZy1ub24tYmluZGFibGU+e3sxMjg4MzIzNjIzMDA2IHwgZGF0ZTonTU0vZGQveXl5eSBAIGg6
bW1hJ319PC9zcGFuPjoKLSAgICAgICAgICB7eycxMjg4MzIzNjIzMDA2JyB8IGRhdGU6J01NL2Rk
L3l5eXkgQCBoOm1tYSd9fTxicj4KLSAgICAgPC9kb2M6c291cmNlPgotICAgICA8ZG9jOnNjZW5h
cmlvPgotICAgICAgIGl0KCdzaG91bGQgZm9ybWF0IGRhdGUnLCBmdW5jdGlvbigpIHsKLSAgICAg
ICAgIGV4cGVjdChiaW5kaW5nKCIxMjg4MzIzNjIzMDA2IHwgZGF0ZTonbWVkaXVtJyIpKS4KLSAg
ICAgICAgICAgIHRvTWF0Y2goL09jdCAyXGQsIDIwMTAgXGR7MSwyfTpcZHsyfTpcZHsyfSAoQU18
UE0pLyk7Ci0gICAgICAgICBleHBlY3QoYmluZGluZygiMTI4ODMyMzYyMzAwNiB8IGRhdGU6J3l5
eXktTU0tZGQgSEg6bW06c3MgWiciKSkuCi0gICAgICAgICAgICB0b01hdGNoKC8yMDEwXC0xMFwt
MlxkIFxkezJ9OlxkezJ9OlxkezJ9IChcLXxcKyk/XGR7NH0vKTsKLSAgICAgICAgIGV4cGVjdChi
aW5kaW5nKCInMTI4ODMyMzYyMzAwNicgfCBkYXRlOidNTS9kZC95eXl5IEAgaDptbWEnIikpLgot
ICAgICAgICAgICAgdG9NYXRjaCgvMTBcLzJcZFwvMjAxMCBAIFxkezEsMn06XGR7Mn0oQU18UE0p
Lyk7Ci0gICAgICAgfSk7Ci0gICAgIDwvZG9jOnNjZW5hcmlvPgotICAgPC9kb2M6ZXhhbXBsZT4K
LSAqLwotZGF0ZUZpbHRlci4kaW5qZWN0ID0gWyckbG9jYWxlJ107Ci1mdW5jdGlvbiBkYXRlRmls
dGVyKCRsb2NhbGUpIHsKLQotCi0gIHZhciBSX0lTTzg2MDFfU1RSID0gL14oXGR7NH0pLT8oXGRc
ZCktPyhcZFxkKSg/OlQoXGRcZCkoPzo6PyhcZFxkKSg/Ojo/KFxkXGQpKD86XC4oXGQrKSk/KT8p
PyhafChbKy1dKShcZFxkKTo/KFxkXGQpKT8pPyQvOwotICBmdW5jdGlvbiBqc29uU3RyaW5nVG9E
YXRlKHN0cmluZyl7Ci0gICAgdmFyIG1hdGNoOwotICAgIGlmIChtYXRjaCA9IHN0cmluZy5tYXRj
aChSX0lTTzg2MDFfU1RSKSkgewotICAgICAgdmFyIGRhdGUgPSBuZXcgRGF0ZSgwKSwKLSAgICAg
ICAgICB0ekhvdXIgPSAwLAotICAgICAgICAgIHR6TWluICA9IDA7Ci0gICAgICBpZiAobWF0Y2hb
OV0pIHsKLSAgICAgICAgdHpIb3VyID0gaW50KG1hdGNoWzldICsgbWF0Y2hbMTBdKTsKLSAgICAg
ICAgdHpNaW4gPSBpbnQobWF0Y2hbOV0gKyBtYXRjaFsxMV0pOwotICAgICAgfQotICAgICAgZGF0
ZS5zZXRVVENGdWxsWWVhcihpbnQobWF0Y2hbMV0pLCBpbnQobWF0Y2hbMl0pIC0gMSwgaW50KG1h
dGNoWzNdKSk7Ci0gICAgICBkYXRlLnNldFVUQ0hvdXJzKGludChtYXRjaFs0XXx8MCkgLSB0ekhv
dXIsIGludChtYXRjaFs1XXx8MCkgLSB0ek1pbiwgaW50KG1hdGNoWzZdfHwwKSwgaW50KG1hdGNo
WzddfHwwKSk7Ci0gICAgICByZXR1cm4gZGF0ZTsKLSAgICB9Ci0gICAgcmV0dXJuIHN0cmluZzsK
LSAgfQotCi0KLSAgcmV0dXJuIGZ1bmN0aW9uKGRhdGUsIGZvcm1hdCkgewotICAgIHZhciB0ZXh0
ID0gJycsCi0gICAgICAgIHBhcnRzID0gW10sCi0gICAgICAgIGZuLCBtYXRjaDsKLQotICAgIGZv
cm1hdCA9IGZvcm1hdCB8fCAnbWVkaXVtRGF0ZSc7Ci0gICAgZm9ybWF0ID0gJGxvY2FsZS5EQVRF
VElNRV9GT1JNQVRTW2Zvcm1hdF0gfHwgZm9ybWF0OwotICAgIGlmIChpc1N0cmluZyhkYXRlKSkg
ewotICAgICAgaWYgKE5VTUJFUl9TVFJJTkcudGVzdChkYXRlKSkgewotICAgICAgICBkYXRlID0g
aW50KGRhdGUpOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgZGF0ZSA9IGpzb25TdHJpbmdUb0Rh
dGUoZGF0ZSk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgaWYgKGlzTnVtYmVyKGRhdGUpKSB7Ci0g
ICAgICBkYXRlID0gbmV3IERhdGUoZGF0ZSk7Ci0gICAgfQotCi0gICAgaWYgKCFpc0RhdGUoZGF0
ZSkpIHsKLSAgICAgIHJldHVybiBkYXRlOwotICAgIH0KLQotICAgIHdoaWxlKGZvcm1hdCkgewot
ICAgICAgbWF0Y2ggPSBEQVRFX0ZPUk1BVFNfU1BMSVQuZXhlYyhmb3JtYXQpOwotICAgICAgaWYg
KG1hdGNoKSB7Ci0gICAgICAgIHBhcnRzID0gY29uY2F0KHBhcnRzLCBtYXRjaCwgMSk7Ci0gICAg
ICAgIGZvcm1hdCA9IHBhcnRzLnBvcCgpOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgcGFydHMu
cHVzaChmb3JtYXQpOwotICAgICAgICBmb3JtYXQgPSBudWxsOwotICAgICAgfQotICAgIH0KLQot
ICAgIGZvckVhY2gocGFydHMsIGZ1bmN0aW9uKHZhbHVlKXsKLSAgICAgIGZuID0gREFURV9GT1JN
QVRTW3ZhbHVlXTsKLSAgICAgIHRleHQgKz0gZm4gPyBmbihkYXRlLCAkbG9jYWxlLkRBVEVUSU1F
X0ZPUk1BVFMpCi0gICAgICAgICAgICAgICAgIDogdmFsdWUucmVwbGFjZSgvKF4nfCckKS9nLCAn
JykucmVwbGFjZSgvJycvZywgIiciKTsKLSAgICB9KTsKLQotICAgIHJldHVybiB0ZXh0OwotICB9
OwotfQotCi0KLS8qKgotICogQG5nZG9jIGZpbHRlcgotICogQG5hbWUgbmcuZmlsdGVyOmpzb24K
LSAqIEBmdW5jdGlvbgotICoKLSAqIEBkZXNjcmlwdGlvbgotICogICBBbGxvd3MgeW91IHRvIGNv
bnZlcnQgYSBKYXZhU2NyaXB0IG9iamVjdCBpbnRvIEpTT04gc3RyaW5nLgotICoKLSAqICAgVGhp
cyBmaWx0ZXIgaXMgbW9zdGx5IHVzZWZ1bCBmb3IgZGVidWdnaW5nLiBXaGVuIHVzaW5nIHRoZSBk
b3VibGUgY3VybHkge3t2YWx1ZX19IG5vdGF0aW9uCi0gKiAgIHRoZSBiaW5kaW5nIGlzIGF1dG9t
YXRpY2FsbHkgY29udmVydGVkIHRvIEpTT04uCi0gKgotICogQHBhcmFtIHsqfSBvYmplY3QgQW55
IEphdmFTY3JpcHQgb2JqZWN0IChpbmNsdWRpbmcgYXJyYXlzIGFuZCBwcmltaXRpdmUgdHlwZXMp
IHRvIGZpbHRlci4KLSAqIEByZXR1cm5zIHtzdHJpbmd9IEpTT04gc3RyaW5nLgotICoKLSAqCi0g
KiBAZXhhbXBsZToKLSAgIDxkb2M6ZXhhbXBsZT4KLSAgICAgPGRvYzpzb3VyY2U+Ci0gICAgICAg
PHByZT57eyB7J25hbWUnOid2YWx1ZSd9IHwganNvbiB9fTwvcHJlPgotICAgICA8L2RvYzpzb3Vy
Y2U+Ci0gICAgIDxkb2M6c2NlbmFyaW8+Ci0gICAgICAgaXQoJ3Nob3VsZCBqc29uaWZ5IGZpbHRl
cmVkIG9iamVjdHMnLCBmdW5jdGlvbigpIHsKLSAgICAgICAgIGV4cGVjdChiaW5kaW5nKCJ7J25h
bWUnOid2YWx1ZSd9IikpLnRvTWF0Y2goL1x7XG4gICJuYW1lIjogPyJ2YWx1ZSJcbn0vKTsKLSAg
ICAgICB9KTsKLSAgICAgPC9kb2M6c2NlbmFyaW8+Ci0gICA8L2RvYzpleGFtcGxlPgotICoKLSAq
LwotZnVuY3Rpb24ganNvbkZpbHRlcigpIHsKLSAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkgewot
ICAgIHJldHVybiB0b0pzb24ob2JqZWN0LCB0cnVlKTsKLSAgfTsKLX0KLQotCi0vKioKLSAqIEBu
Z2RvYyBmaWx0ZXIKLSAqIEBuYW1lIG5nLmZpbHRlcjpsb3dlcmNhc2UKLSAqIEBmdW5jdGlvbgot
ICogQGRlc2NyaXB0aW9uCi0gKiBDb252ZXJ0cyBzdHJpbmcgdG8gbG93ZXJjYXNlLgotICogQHNl
ZSBhbmd1bGFyLmxvd2VyY2FzZQotICovCi12YXIgbG93ZXJjYXNlRmlsdGVyID0gdmFsdWVGbihs
b3dlcmNhc2UpOwotCi0KLS8qKgotICogQG5nZG9jIGZpbHRlcgotICogQG5hbWUgbmcuZmlsdGVy
OnVwcGVyY2FzZQotICogQGZ1bmN0aW9uCi0gKiBAZGVzY3JpcHRpb24KLSAqIENvbnZlcnRzIHN0
cmluZyB0byB1cHBlcmNhc2UuCi0gKiBAc2VlIGFuZ3VsYXIudXBwZXJjYXNlCi0gKi8KLXZhciB1
cHBlcmNhc2VGaWx0ZXIgPSB2YWx1ZUZuKHVwcGVyY2FzZSk7Ci0KLS8qKgotICogQG5nZG9jIGZ1
bmN0aW9uCi0gKiBAbmFtZSBuZy5maWx0ZXI6bGltaXRUbwotICogQGZ1bmN0aW9uCi0gKgotICog
QGRlc2NyaXB0aW9uCi0gKiBDcmVhdGVzIGEgbmV3IGFycmF5IGNvbnRhaW5pbmcgb25seSBhIHNw
ZWNpZmllZCBudW1iZXIgb2YgZWxlbWVudHMgaW4gYW4gYXJyYXkuIFRoZSBlbGVtZW50cwotICog
YXJlIHRha2VuIGZyb20gZWl0aGVyIHRoZSBiZWdpbm5pbmcgb3IgdGhlIGVuZCBvZiB0aGUgc291
cmNlIGFycmF5LCBhcyBzcGVjaWZpZWQgYnkgdGhlCi0gKiB2YWx1ZSBhbmQgc2lnbiAocG9zaXRp
dmUgb3IgbmVnYXRpdmUpIG9mIGBsaW1pdGAuCi0gKgotICogTm90ZTogVGhpcyBmdW5jdGlvbiBp
cyB1c2VkIHRvIGF1Z21lbnQgdGhlIGBBcnJheWAgdHlwZSBpbiBBbmd1bGFyIGV4cHJlc3Npb25z
LiBTZWUKLSAqIHtAbGluayBuZy4kZmlsdGVyfSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBB
bmd1bGFyIGFycmF5cy4KLSAqCi0gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBTb3VyY2UgYXJyYXkg
dG8gYmUgbGltaXRlZC4KLSAqIEBwYXJhbSB7c3RyaW5nfE51bWJlcn0gbGltaXQgVGhlIGxlbmd0
aCBvZiB0aGUgcmV0dXJuZWQgYXJyYXkuIElmIHRoZSBgbGltaXRgIG51bWJlciBpcwotICogICAg
IHBvc2l0aXZlLCBgbGltaXRgIG51bWJlciBvZiBpdGVtcyBmcm9tIHRoZSBiZWdpbm5pbmcgb2Yg
dGhlIHNvdXJjZSBhcnJheSBhcmUgY29waWVkLgotICogICAgIElmIHRoZSBudW1iZXIgaXMgbmVn
YXRpdmUsIGBsaW1pdGAgbnVtYmVyICBvZiBpdGVtcyBmcm9tIHRoZSBlbmQgb2YgdGhlIHNvdXJj
ZSBhcnJheSBhcmUKLSAqICAgICBjb3BpZWQuIFRoZSBgbGltaXRgIHdpbGwgYmUgdHJpbW1lZCBp
ZiBpdCBleGNlZWRzIGBhcnJheS5sZW5ndGhgCi0gKiBAcmV0dXJucyB7QXJyYXl9IEEgbmV3IHN1
Yi1hcnJheSBvZiBsZW5ndGggYGxpbWl0YCBvciBsZXNzIGlmIGlucHV0IGFycmF5IGhhZCBsZXNz
IHRoYW4gYGxpbWl0YAotICogICAgIGVsZW1lbnRzLgotICoKLSAqIEBleGFtcGxlCi0gICA8ZG9j
OmV4YW1wbGU+Ci0gICAgIDxkb2M6c291cmNlPgotICAgICAgIDxzY3JpcHQ+Ci0gICAgICAgICBm
dW5jdGlvbiBDdHJsKCRzY29wZSkgewotICAgICAgICAgICAkc2NvcGUubnVtYmVycyA9IFsxLDIs
Myw0LDUsNiw3LDgsOV07Ci0gICAgICAgICAgICRzY29wZS5saW1pdCA9IDM7Ci0gICAgICAgICB9
Ci0gICAgICAgPC9zY3JpcHQ+Ci0gICAgICAgPGRpdiBuZy1jb250cm9sbGVyPSJDdHJsIj4KLSAg
ICAgICAgIExpbWl0IHt7bnVtYmVyc319IHRvOiA8aW5wdXQgdHlwZT0iaW50ZWdlciIgbmctbW9k
ZWw9ImxpbWl0Ij4KLSAgICAgICAgIDxwPk91dHB1dDoge3sgbnVtYmVycyB8IGxpbWl0VG86bGlt
aXQgfX08L3A+Ci0gICAgICAgPC9kaXY+Ci0gICAgIDwvZG9jOnNvdXJjZT4KLSAgICAgPGRvYzpz
Y2VuYXJpbz4KLSAgICAgICBpdCgnc2hvdWxkIGxpbWl0IHRoZSBudW1lciBhcnJheSB0byBmaXJz
dCB0aHJlZSBpdGVtcycsIGZ1bmN0aW9uKCkgewotICAgICAgICAgZXhwZWN0KGVsZW1lbnQoJy5k
b2MtZXhhbXBsZS1saXZlIGlucHV0W25nLW1vZGVsPWxpbWl0XScpLnZhbCgpKS50b0JlKCczJyk7
Ci0gICAgICAgICBleHBlY3QoYmluZGluZygnbnVtYmVycyB8IGxpbWl0VG86bGltaXQnKSkudG9F
cXVhbCgnWzEsMiwzXScpOwotICAgICAgIH0pOwotCi0gICAgICAgaXQoJ3Nob3VsZCB1cGRhdGUg
dGhlIG91dHB1dCB3aGVuIC0zIGlzIGVudGVyZWQnLCBmdW5jdGlvbigpIHsKLSAgICAgICAgIGlu
cHV0KCdsaW1pdCcpLmVudGVyKC0zKTsKLSAgICAgICAgIGV4cGVjdChiaW5kaW5nKCdudW1iZXJz
IHwgbGltaXRUbzpsaW1pdCcpKS50b0VxdWFsKCdbNyw4LDldJyk7Ci0gICAgICAgfSk7Ci0KLSAg
ICAgICBpdCgnc2hvdWxkIG5vdCBleGNlZWQgdGhlIG1heGltdW0gc2l6ZSBvZiBpbnB1dCBhcnJh
eScsIGZ1bmN0aW9uKCkgewotICAgICAgICAgaW5wdXQoJ2xpbWl0JykuZW50ZXIoMTAwKTsKLSAg
ICAgICAgIGV4cGVjdChiaW5kaW5nKCdudW1iZXJzIHwgbGltaXRUbzpsaW1pdCcpKS50b0VxdWFs
KCdbMSwyLDMsNCw1LDYsNyw4LDldJyk7Ci0gICAgICAgfSk7Ci0gICAgIDwvZG9jOnNjZW5hcmlv
PgotICAgPC9kb2M6ZXhhbXBsZT4KLSAqLwotZnVuY3Rpb24gbGltaXRUb0ZpbHRlcigpewotICBy
ZXR1cm4gZnVuY3Rpb24oYXJyYXksIGxpbWl0KSB7Ci0gICAgaWYgKCEoYXJyYXkgaW5zdGFuY2Vv
ZiBBcnJheSkpIHJldHVybiBhcnJheTsKLSAgICBsaW1pdCA9IGludChsaW1pdCk7Ci0gICAgdmFy
IG91dCA9IFtdLAotICAgICAgaSwgbjsKLQotICAgIC8vIGNoZWNrIHRoYXQgYXJyYXkgaXMgaXRl
cmFibGUKLSAgICBpZiAoIWFycmF5IHx8ICEoYXJyYXkgaW5zdGFuY2VvZiBBcnJheSkpCi0gICAg
ICByZXR1cm4gb3V0OwotCi0gICAgLy8gaWYgYWJzKGxpbWl0KSBleGNlZWRzIG1heGltdW0gbGVu
Z3RoLCB0cmltIGl0Ci0gICAgaWYgKGxpbWl0ID4gYXJyYXkubGVuZ3RoKQotICAgICAgbGltaXQg
PSBhcnJheS5sZW5ndGg7Ci0gICAgZWxzZSBpZiAobGltaXQgPCAtYXJyYXkubGVuZ3RoKQotICAg
ICAgbGltaXQgPSAtYXJyYXkubGVuZ3RoOwotCi0gICAgaWYgKGxpbWl0ID4gMCkgewotICAgICAg
aSA9IDA7Ci0gICAgICBuID0gbGltaXQ7Ci0gICAgfSBlbHNlIHsKLSAgICAgIGkgPSBhcnJheS5s
ZW5ndGggKyBsaW1pdDsKLSAgICAgIG4gPSBhcnJheS5sZW5ndGg7Ci0gICAgfQotCi0gICAgZm9y
ICg7IGk8bjsgaSsrKSB7Ci0gICAgICBvdXQucHVzaChhcnJheVtpXSk7Ci0gICAgfQotCi0gICAg
cmV0dXJuIG91dDsKLSAgfQotfQotCi0vKioKLSAqIEBuZ2RvYyBmdW5jdGlvbgotICogQG5hbWUg
bmcuZmlsdGVyOm9yZGVyQnkKLSAqIEBmdW5jdGlvbgotICoKLSAqIEBkZXNjcmlwdGlvbgotICog
T3JkZXJzIGEgc3BlY2lmaWVkIGBhcnJheWAgYnkgdGhlIGBleHByZXNzaW9uYCBwcmVkaWNhdGUu
Ci0gKgotICogTm90ZTogdGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGF1Z21lbnQgdGhlIGBBcnJh
eWAgdHlwZSBpbiBBbmd1bGFyIGV4cHJlc3Npb25zLiBTZWUKLSAqIHtAbGluayBuZy4kZmlsdGVy
fSBmb3IgbW9yZSBpbmZvcm1hdG9uIGFib3V0IEFuZ3VsYXIgYXJyYXlzLgotICoKLSAqIEBwYXJh
bSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBzb3J0LgotICogQHBhcmFtIHtmdW5jdGlvbigq
KXxzdHJpbmd8QXJyYXkuPChmdW5jdGlvbigqKXxzdHJpbmcpPn0gZXhwcmVzc2lvbiBBIHByZWRp
Y2F0ZSB0byBiZQotICogICAgdXNlZCBieSB0aGUgY29tcGFyYXRvciB0byBkZXRlcm1pbmUgdGhl
IG9yZGVyIG9mIGVsZW1lbnRzLgotICoKLSAqICAgIENhbiBiZSBvbmUgb2Y6Ci0gKgotICogICAg
LSBgZnVuY3Rpb25gOiBHZXR0ZXIgZnVuY3Rpb24uIFRoZSByZXN1bHQgb2YgdGhpcyBmdW5jdGlv
biB3aWxsIGJlIHNvcnRlZCB1c2luZyB0aGUKLSAqICAgICAgYDxgLCBgPWAsIGA+YCBvcGVyYXRv
ci4KLSAqICAgIC0gYHN0cmluZ2A6IEFuIEFuZ3VsYXIgZXhwcmVzc2lvbiB3aGljaCBldmFsdWF0
ZXMgdG8gYW4gb2JqZWN0IHRvIG9yZGVyIGJ5LCBzdWNoIGFzICduYW1lJwotICogICAgICB0byBz
b3J0IGJ5IGEgcHJvcGVydHkgY2FsbGVkICduYW1lJy4gT3B0aW9uYWxseSBwcmVmaXhlZCB3aXRo
IGArYCBvciBgLWAgdG8gY29udHJvbAotICogICAgICBhc2NlbmRpbmcgb3IgZGVzY2VuZGluZyBz
b3J0IG9yZGVyIChmb3IgZXhhbXBsZSwgK25hbWUgb3IgLW5hbWUpLgotICogICAgLSBgQXJyYXlg
OiBBbiBhcnJheSBvZiBmdW5jdGlvbiBvciBzdHJpbmcgcHJlZGljYXRlcy4gVGhlIGZpcnN0IHBy
ZWRpY2F0ZSBpbiB0aGUgYXJyYXkKLSAqICAgICAgaXMgdXNlZCBmb3Igc29ydGluZywgYnV0IHdo
ZW4gdHdvIGl0ZW1zIGFyZSBlcXVpdmFsZW50LCB0aGUgbmV4dCBwcmVkaWNhdGUgaXMgdXNlZC4K
LSAqCi0gKiBAcGFyYW0ge2Jvb2xlYW49fSByZXZlcnNlIFJldmVyc2UgdGhlIG9yZGVyIHRoZSBh
cnJheS4KLSAqIEByZXR1cm5zIHtBcnJheX0gU29ydGVkIGNvcHkgb2YgdGhlIHNvdXJjZSBhcnJh
eS4KLSAqCi0gKiBAZXhhbXBsZQotICAgPGRvYzpleGFtcGxlPgotICAgICA8ZG9jOnNvdXJjZT4K
LSAgICAgICA8c2NyaXB0PgotICAgICAgICAgZnVuY3Rpb24gQ3RybCgkc2NvcGUpIHsKLSAgICAg
ICAgICAgJHNjb3BlLmZyaWVuZHMgPQotICAgICAgICAgICAgICAgW3tuYW1lOidKb2huJywgcGhv
bmU6JzU1NS0xMjEyJywgYWdlOjEwfSwKLSAgICAgICAgICAgICAgICB7bmFtZTonTWFyeScsIHBo
b25lOic1NTUtOTg3NicsIGFnZToxOX0sCi0gICAgICAgICAgICAgICAge25hbWU6J01pa2UnLCBw
aG9uZTonNTU1LTQzMjEnLCBhZ2U6MjF9LAotICAgICAgICAgICAgICAgIHtuYW1lOidBZGFtJywg
cGhvbmU6JzU1NS01Njc4JywgYWdlOjM1fSwKLSAgICAgICAgICAgICAgICB7bmFtZTonSnVsaWUn
LCBwaG9uZTonNTU1LTg3NjUnLCBhZ2U6Mjl9XQotICAgICAgICAgICAkc2NvcGUucHJlZGljYXRl
ID0gJy1hZ2UnOwotICAgICAgICAgfQotICAgICAgIDwvc2NyaXB0PgotICAgICAgIDxkaXYgbmct
Y29udHJvbGxlcj0iQ3RybCI+Ci0gICAgICAgICA8cHJlPlNvcnRpbmcgcHJlZGljYXRlID0ge3tw
cmVkaWNhdGV9fTsgcmV2ZXJzZSA9IHt7cmV2ZXJzZX19PC9wcmU+Ci0gICAgICAgICA8aHIvPgot
ICAgICAgICAgWyA8YSBocmVmPSIiIG5nLWNsaWNrPSJwcmVkaWNhdGU9JyciPnVuc29ydGVkPC9h
PiBdCi0gICAgICAgICA8dGFibGUgY2xhc3M9ImZyaWVuZCI+Ci0gICAgICAgICAgIDx0cj4KLSAg
ICAgICAgICAgICA8dGg+PGEgaHJlZj0iIiBuZy1jbGljaz0icHJlZGljYXRlID0gJ25hbWUnOyBy
ZXZlcnNlPWZhbHNlIj5OYW1lPC9hPgotICAgICAgICAgICAgICAgICAoPGEgaHJlZiBuZy1jbGlj
az0icHJlZGljYXRlID0gJy1uYW1lJzsgcmV2ZXJzZT1mYWxzZSI+XjwvYT4pPC90aD4KLSAgICAg
ICAgICAgICA8dGg+PGEgaHJlZj0iIiBuZy1jbGljaz0icHJlZGljYXRlID0gJ3Bob25lJzsgcmV2
ZXJzZT0hcmV2ZXJzZSI+UGhvbmUgTnVtYmVyPC9hPjwvdGg+Ci0gICAgICAgICAgICAgPHRoPjxh
IGhyZWY9IiIgbmctY2xpY2s9InByZWRpY2F0ZSA9ICdhZ2UnOyByZXZlcnNlPSFyZXZlcnNlIj5B
Z2U8L2E+PC90aD4KLSAgICAgICAgICAgPC90cj4KLSAgICAgICAgICAgPHRyIG5nLXJlcGVhdD0i
ZnJpZW5kIGluIGZyaWVuZHMgfCBvcmRlckJ5OnByZWRpY2F0ZTpyZXZlcnNlIj4KLSAgICAgICAg
ICAgICA8dGQ+e3tmcmllbmQubmFtZX19PC90ZD4KLSAgICAgICAgICAgICA8dGQ+e3tmcmllbmQu
cGhvbmV9fTwvdGQ+Ci0gICAgICAgICAgICAgPHRkPnt7ZnJpZW5kLmFnZX19PC90ZD4KLSAgICAg
ICAgICAgPC90cj4KLSAgICAgICAgIDwvdGFibGU+Ci0gICAgICAgPC9kaXY+Ci0gICAgIDwvZG9j
OnNvdXJjZT4KLSAgICAgPGRvYzpzY2VuYXJpbz4KLSAgICAgICBpdCgnc2hvdWxkIGJlIHJldmVy
c2Ugb3JkZXJlZCBieSBhZ2VkJywgZnVuY3Rpb24oKSB7Ci0gICAgICAgICBleHBlY3QoYmluZGlu
ZygncHJlZGljYXRlJykpLnRvQmUoJy1hZ2UnKTsKLSAgICAgICAgIGV4cGVjdChyZXBlYXRlcign
dGFibGUuZnJpZW5kJywgJ2ZyaWVuZCBpbiBmcmllbmRzJykuY29sdW1uKCdmcmllbmQuYWdlJykp
LgotICAgICAgICAgICB0b0VxdWFsKFsnMzUnLCAnMjknLCAnMjEnLCAnMTknLCAnMTAnXSk7Ci0g
ICAgICAgICBleHBlY3QocmVwZWF0ZXIoJ3RhYmxlLmZyaWVuZCcsICdmcmllbmQgaW4gZnJpZW5k
cycpLmNvbHVtbignZnJpZW5kLm5hbWUnKSkuCi0gICAgICAgICAgIHRvRXF1YWwoWydBZGFtJywg
J0p1bGllJywgJ01pa2UnLCAnTWFyeScsICdKb2huJ10pOwotICAgICAgIH0pOwotCi0gICAgICAg
aXQoJ3Nob3VsZCByZW9yZGVyIHRoZSB0YWJsZSB3aGVuIHVzZXIgc2VsZWN0cyBkaWZmZXJlbnQg
cHJlZGljYXRlJywgZnVuY3Rpb24oKSB7Ci0gICAgICAgICBlbGVtZW50KCcuZG9jLWV4YW1wbGUt
bGl2ZSBhOmNvbnRhaW5zKCJOYW1lIiknKS5jbGljaygpOwotICAgICAgICAgZXhwZWN0KHJlcGVh
dGVyKCd0YWJsZS5mcmllbmQnLCAnZnJpZW5kIGluIGZyaWVuZHMnKS5jb2x1bW4oJ2ZyaWVuZC5u
YW1lJykpLgotICAgICAgICAgICB0b0VxdWFsKFsnQWRhbScsICdKb2huJywgJ0p1bGllJywgJ01h
cnknLCAnTWlrZSddKTsKLSAgICAgICAgIGV4cGVjdChyZXBlYXRlcigndGFibGUuZnJpZW5kJywg
J2ZyaWVuZCBpbiBmcmllbmRzJykuY29sdW1uKCdmcmllbmQuYWdlJykpLgotICAgICAgICAgICB0
b0VxdWFsKFsnMzUnLCAnMTAnLCAnMjknLCAnMTknLCAnMjEnXSk7Ci0KLSAgICAgICAgIGVsZW1l
bnQoJy5kb2MtZXhhbXBsZS1saXZlIGE6Y29udGFpbnMoIlBob25lIiknKS5jbGljaygpOwotICAg
ICAgICAgZXhwZWN0KHJlcGVhdGVyKCd0YWJsZS5mcmllbmQnLCAnZnJpZW5kIGluIGZyaWVuZHMn
KS5jb2x1bW4oJ2ZyaWVuZC5waG9uZScpKS4KLSAgICAgICAgICAgdG9FcXVhbChbJzU1NS05ODc2
JywgJzU1NS04NzY1JywgJzU1NS01Njc4JywgJzU1NS00MzIxJywgJzU1NS0xMjEyJ10pOwotICAg
ICAgICAgZXhwZWN0KHJlcGVhdGVyKCd0YWJsZS5mcmllbmQnLCAnZnJpZW5kIGluIGZyaWVuZHMn
KS5jb2x1bW4oJ2ZyaWVuZC5uYW1lJykpLgotICAgICAgICAgICB0b0VxdWFsKFsnTWFyeScsICdK
dWxpZScsICdBZGFtJywgJ01pa2UnLCAnSm9obiddKTsKLSAgICAgICB9KTsKLSAgICAgPC9kb2M6
c2NlbmFyaW8+Ci0gICA8L2RvYzpleGFtcGxlPgotICovCi1vcmRlckJ5RmlsdGVyLiRpbmplY3Qg
PSBbJyRwYXJzZSddOwotZnVuY3Rpb24gb3JkZXJCeUZpbHRlcigkcGFyc2UpewotICByZXR1cm4g
ZnVuY3Rpb24oYXJyYXksIHNvcnRQcmVkaWNhdGUsIHJldmVyc2VPcmRlcikgewotICAgIGlmICgh
aXNBcnJheShhcnJheSkpIHJldHVybiBhcnJheTsKLSAgICBpZiAoIXNvcnRQcmVkaWNhdGUpIHJl
dHVybiBhcnJheTsKLSAgICBzb3J0UHJlZGljYXRlID0gaXNBcnJheShzb3J0UHJlZGljYXRlKSA/
IHNvcnRQcmVkaWNhdGU6IFtzb3J0UHJlZGljYXRlXTsKLSAgICBzb3J0UHJlZGljYXRlID0gbWFw
KHNvcnRQcmVkaWNhdGUsIGZ1bmN0aW9uKHByZWRpY2F0ZSl7Ci0gICAgICB2YXIgZGVzY2VuZGlu
ZyA9IGZhbHNlLCBnZXQgPSBwcmVkaWNhdGUgfHwgaWRlbnRpdHk7Ci0gICAgICBpZiAoaXNTdHJp
bmcocHJlZGljYXRlKSkgewotICAgICAgICBpZiAoKHByZWRpY2F0ZS5jaGFyQXQoMCkgPT0gJysn
IHx8IHByZWRpY2F0ZS5jaGFyQXQoMCkgPT0gJy0nKSkgewotICAgICAgICAgIGRlc2NlbmRpbmcg
PSBwcmVkaWNhdGUuY2hhckF0KDApID09ICctJzsKLSAgICAgICAgICBwcmVkaWNhdGUgPSBwcmVk
aWNhdGUuc3Vic3RyaW5nKDEpOwotICAgICAgICB9Ci0gICAgICAgIGdldCA9ICRwYXJzZShwcmVk
aWNhdGUpOwotICAgICAgfQotICAgICAgcmV0dXJuIHJldmVyc2VDb21wYXJhdG9yKGZ1bmN0aW9u
KGEsYil7Ci0gICAgICAgIHJldHVybiBjb21wYXJlKGdldChhKSxnZXQoYikpOwotICAgICAgfSwg
ZGVzY2VuZGluZyk7Ci0gICAgfSk7Ci0gICAgdmFyIGFycmF5Q29weSA9IFtdOwotICAgIGZvciAo
IHZhciBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7IGFycmF5Q29weS5wdXNoKGFycmF5
W2ldKTsgfQotICAgIHJldHVybiBhcnJheUNvcHkuc29ydChyZXZlcnNlQ29tcGFyYXRvcihjb21w
YXJhdG9yLCByZXZlcnNlT3JkZXIpKTsKLQotICAgIGZ1bmN0aW9uIGNvbXBhcmF0b3IobzEsIG8y
KXsKLSAgICAgIGZvciAoIHZhciBpID0gMDsgaSA8IHNvcnRQcmVkaWNhdGUubGVuZ3RoOyBpKysp
IHsKLSAgICAgICAgdmFyIGNvbXAgPSBzb3J0UHJlZGljYXRlW2ldKG8xLCBvMik7Ci0gICAgICAg
IGlmIChjb21wICE9PSAwKSByZXR1cm4gY29tcDsKLSAgICAgIH0KLSAgICAgIHJldHVybiAwOwot
ICAgIH0KLSAgICBmdW5jdGlvbiByZXZlcnNlQ29tcGFyYXRvcihjb21wLCBkZXNjZW5kaW5nKSB7
Ci0gICAgICByZXR1cm4gdG9Cb29sZWFuKGRlc2NlbmRpbmcpCi0gICAgICAgICAgPyBmdW5jdGlv
bihhLGIpe3JldHVybiBjb21wKGIsYSk7fQotICAgICAgICAgIDogY29tcDsKLSAgICB9Ci0gICAg
ZnVuY3Rpb24gY29tcGFyZSh2MSwgdjIpewotICAgICAgdmFyIHQxID0gdHlwZW9mIHYxOwotICAg
ICAgdmFyIHQyID0gdHlwZW9mIHYyOwotICAgICAgaWYgKHQxID09IHQyKSB7Ci0gICAgICAgIGlm
ICh0MSA9PSAic3RyaW5nIikgdjEgPSB2MS50b0xvd2VyQ2FzZSgpOwotICAgICAgICBpZiAodDEg
PT0gInN0cmluZyIpIHYyID0gdjIudG9Mb3dlckNhc2UoKTsKLSAgICAgICAgaWYgKHYxID09PSB2
MikgcmV0dXJuIDA7Ci0gICAgICAgIHJldHVybiB2MSA8IHYyID8gLTEgOiAxOwotICAgICAgfSBl
bHNlIHsKLSAgICAgICAgcmV0dXJuIHQxIDwgdDIgPyAtMSA6IDE7Ci0gICAgICB9Ci0gICAgfQot
ICB9Ci19Ci0KLWZ1bmN0aW9uIG5nRGlyZWN0aXZlKGRpcmVjdGl2ZSkgewotICBpZiAoaXNGdW5j
dGlvbihkaXJlY3RpdmUpKSB7Ci0gICAgZGlyZWN0aXZlID0gewotICAgICAgbGluazogZGlyZWN0
aXZlCi0gICAgfQotICB9Ci0gIGRpcmVjdGl2ZS5yZXN0cmljdCA9IGRpcmVjdGl2ZS5yZXN0cmlj
dCB8fCAnQUMnOwotICByZXR1cm4gdmFsdWVGbihkaXJlY3RpdmUpOwotfQotCi0vKioKLSAqIEBu
Z2RvYyBkaXJlY3RpdmUKLSAqIEBuYW1lIG5nLmRpcmVjdGl2ZTphCi0gKiBAcmVzdHJpY3QgRQot
ICoKLSAqIEBkZXNjcmlwdGlvbgotICogTW9kaWZpZXMgdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2Yg
aHRtbCBBIHRhZywgc28gdGhhdCB0aGUgZGVmYXVsdCBhY3Rpb24gaXMgcHJldmVudGVkIHdoZW4g
aHJlZgotICogYXR0cmlidXRlIGlzIGVtcHR5LgotICoKLSAqIFRoZSByZWFzb25pbmcgZm9yIHRo
aXMgY2hhbmdlIGlzIHRvIGFsbG93IGVhc3kgY3JlYXRpb24gb2YgYWN0aW9uIGxpbmtzIHdpdGgg
YG5nQ2xpY2tgIGRpcmVjdGl2ZQotICogd2l0aG91dCBjaGFuZ2luZyB0aGUgbG9jYXRpb24gb3Ig
Y2F1c2luZyBwYWdlIHJlbG9hZHMsIGUuZy46Ci0gKiBgPGEgaHJlZj0iIiBuZy1jbGljaz0ibW9k
ZWwuJHNhdmUoKSI+U2F2ZTwvYT5gCi0gKi8KLXZhciBodG1sQW5jaG9yRGlyZWN0aXZlID0gdmFs
dWVGbih7Ci0gIHJlc3RyaWN0OiAnRScsCi0gIGNvbXBpbGU6IGZ1bmN0aW9uKGVsZW1lbnQsIGF0
dHIpIHsKLQotICAgIGlmIChtc2llIDw9IDgpIHsKLQotICAgICAgLy8gdHVybiA8YSBocmVmIG5n
LWNsaWNrPSIuLiI+bGluazwvYT4gaW50byBhIHN0eWxhYmxlIGxpbmsgaW4gSUUKLSAgICAgIC8v
IGJ1dCBvbmx5IGlmIGl0IGRvZXNuJ3QgaGF2ZSBuYW1lIGF0dHJpYnV0ZSwgaW4gd2hpY2ggY2Fz
ZSBpdCdzIGFuIGFuY2hvcgotICAgICAgaWYgKCFhdHRyLmhyZWYgJiYgIWF0dHIubmFtZSkgewot
ICAgICAgICBhdHRyLiRzZXQoJ2hyZWYnLCAnJyk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIGFkZCBh
IGNvbW1lbnQgbm9kZSB0byBhbmNob3JzIHRvIHdvcmthcm91bmQgSUUgYnVnIHRoYXQgY2F1c2Vz
IGVsZW1lbnQgY29udGVudCB0byBiZSByZXNldAotICAgICAgLy8gdG8gbmV3IGF0dHJpYnV0ZSBj
b250ZW50IGlmIGF0dHJpYnV0ZSBpcyB1cGRhdGVkIHdpdGggdmFsdWUgY29udGFpbmluZyBAIGFu
ZCBlbGVtZW50IGFsc28KLSAgICAgIC8vIGNvbnRhaW5zIHZhbHVlIHdpdGggQAotICAgICAgLy8g
c2VlIGlzc3VlICMxOTQ5Ci0gICAgICBlbGVtZW50LmFwcGVuZChkb2N1bWVudC5jcmVhdGVDb21t
ZW50KCdJRSBmaXgnKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZ1bmN0aW9uKHNjb3BlLCBlbGVt
ZW50KSB7Ci0gICAgICBlbGVtZW50LmJpbmQoJ2NsaWNrJywgZnVuY3Rpb24oZXZlbnQpewotICAg
ICAgICAvLyBpZiB3ZSBoYXZlIG5vIGhyZWYgdXJsLCB0aGVuIGRvbid0IG5hdmlnYXRlIGFueXdo
ZXJlLgotICAgICAgICBpZiAoIWVsZW1lbnQuYXR0cignaHJlZicpKSB7Ci0gICAgICAgICAgZXZl
bnQucHJldmVudERlZmF1bHQoKTsKLSAgICAgICAgfQotICAgICAgfSk7Ci0gICAgfQotICB9Ci19
KTsKLQotLyoqCi0gKiBAbmdkb2MgZGlyZWN0aXZlCi0gKiBAbmFtZSBuZy5kaXJlY3RpdmU6bmdI
cmVmCi0gKiBAcmVzdHJpY3QgQQotICoKLSAqIEBkZXNjcmlwdGlvbgotICogVXNpbmcgQW5ndWxh
ciBtYXJrdXAgbGlrZSB7e2hhc2h9fSBpbiBhbiBocmVmIGF0dHJpYnV0ZSBtYWtlcwotICogdGhl
IHBhZ2Ugb3BlbiB0byBhIHdyb25nIFVSTCwgaWYgdGhlIHVzZXIgY2xpY2tzIHRoYXQgbGluayBi
ZWZvcmUKLSAqIGFuZ3VsYXIgaGFzIGEgY2hhbmNlIHRvIHJlcGxhY2UgdGhlIHt7aGFzaH19IHdp
dGggYWN0dWFsIFVSTCwgdGhlCi0gKiBsaW5rIHdpbGwgYmUgYnJva2VuIGFuZCB3aWxsIG1vc3Qg
bGlrZWx5IHJldHVybiBhIDQwNCBlcnJvci4KLSAqIFRoZSBgbmdIcmVmYCBkaXJlY3RpdmUgc29s
dmVzIHRoaXMgcHJvYmxlbS4KLSAqCi0gKiBUaGUgYnVnZ3kgd2F5IHRvIHdyaXRlIGl0OgotICog
PHByZT4KLSAqIDxhIGhyZWY9Imh0dHA6Ly93d3cuZ3JhdmF0YXIuY29tL2F2YXRhci97e2hhc2h9
fSIvPgotICogPC9wcmU+Ci0gKgotICogVGhlIGNvcnJlY3Qgd2F5IHRvIHdyaXRlIGl0OgotICog
PHByZT4KLSAqIDxhIG5nLWhyZWY9Imh0dHA6Ly93d3cuZ3JhdmF0YXIuY29tL2F2YXRhci97e2hh
c2h9fSIvPgotICogPC9wcmU+Ci0gKgotICogQGVsZW1lbnQgQQotICogQHBhcmFtIHt0ZW1wbGF0
ZX0gbmdIcmVmIGFueSBzdHJpbmcgd2hpY2ggY2FuIGNvbnRhaW4gYHt7fX1gIG1hcmt1cC4KLSAq
Ci0gKiBAZXhhbXBsZQotICogVGhpcyBleGFtcGxlIHVzZXMgYGxpbmtgIHZhcmlhYmxlIGluc2lk
ZSBgaHJlZmAgYXR0cmlidXRlOgotICAgIDxkb2M6ZXhhbXBsZT4KLSAgICAgIDxkb2M6c291cmNl
PgotICAgICAgICA8aW5wdXQgbmctbW9kZWw9InZhbHVlIiAvPjxiciAvPgotICAgICAgICA8YSBp
ZD0ibGluay0xIiBocmVmIG5nLWNsaWNrPSJ2YWx1ZSA9IDEiPmxpbmsgMTwvYT4gKGxpbmssIGRv
bid0IHJlbG9hZCk8YnIgLz4KLSAgICAgICAgPGEgaWQ9ImxpbmstMiIgaHJlZj0iIiBuZy1jbGlj
az0idmFsdWUgPSAyIj5saW5rIDI8L2E+IChsaW5rLCBkb24ndCByZWxvYWQpPGJyIC8+Ci0gICAg
ICAgIDxhIGlkPSJsaW5rLTMiIG5nLWhyZWY9Ii97eycxMjMnfX0iPmxpbmsgMzwvYT4gKGxpbmss
IHJlbG9hZCEpPGJyIC8+Ci0gICAgICAgIDxhIGlkPSJsaW5rLTQiIGhyZWY9IiIgbmFtZT0ieHgi
IG5nLWNsaWNrPSJ2YWx1ZSA9IDQiPmFuY2hvcjwvYT4gKGxpbmssIGRvbid0IHJlbG9hZCk8YnIg
Lz4KLSAgICAgICAgPGEgaWQ9ImxpbmstNSIgbmFtZT0ieHh4IiBuZy1jbGljaz0idmFsdWUgPSA1
Ij5hbmNob3I8L2E+IChubyBsaW5rKTxiciAvPgotICAgICAgICA8YSBpZD0ibGluay02IiBuZy1o
cmVmPSJ7e3ZhbHVlfX0iPmxpbms8L2E+IChsaW5rLCBjaGFuZ2UgbG9jYXRpb24pCi0gICAgICA8
L2RvYzpzb3VyY2U+Ci0gICAgICA8ZG9jOnNjZW5hcmlvPgotICAgICAgICBpdCgnc2hvdWxkIGV4
ZWN1dGUgbmctY2xpY2sgYnV0IG5vdCByZWxvYWQgd2hlbiBocmVmIHdpdGhvdXQgdmFsdWUnLCBm
dW5jdGlvbigpIHsKLSAgICAgICAgICBlbGVtZW50KCcjbGluay0xJykuY2xpY2soKTsKLSAgICAg
ICAgICBleHBlY3QoaW5wdXQoJ3ZhbHVlJykudmFsKCkpLnRvRXF1YWwoJzEnKTsKLSAgICAgICAg
ICBleHBlY3QoZWxlbWVudCgnI2xpbmstMScpLmF0dHIoJ2hyZWYnKSkudG9CZSgiIik7Ci0gICAg
ICAgIH0pOwotCi0gICAgICAgIGl0KCdzaG91bGQgZXhlY3V0ZSBuZy1jbGljayBidXQgbm90IHJl
bG9hZCB3aGVuIGhyZWYgZW1wdHkgc3RyaW5nJywgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgZWxl
bWVudCgnI2xpbmstMicpLmNsaWNrKCk7Ci0gICAgICAgICAgZXhwZWN0KGlucHV0KCd2YWx1ZScp
LnZhbCgpKS50b0VxdWFsKCcyJyk7Ci0gICAgICAgICAgZXhwZWN0KGVsZW1lbnQoJyNsaW5rLTIn
KS5hdHRyKCdocmVmJykpLnRvQmUoIiIpOwotICAgICAgICB9KTsKLQotICAgICAgICBpdCgnc2hv
dWxkIGV4ZWN1dGUgbmctY2xpY2sgYW5kIGNoYW5nZSB1cmwgd2hlbiBuZy1ocmVmIHNwZWNpZmll
ZCcsIGZ1bmN0aW9uKCkgewotICAgICAgICAgIGV4cGVjdChlbGVtZW50KCcjbGluay0zJykuYXR0
cignaHJlZicpKS50b0JlKCIvMTIzIik7Ci0KLSAgICAgICAgICBlbGVtZW50KCcjbGluay0zJyku
Y2xpY2soKTsKLSAgICAgICAgICBleHBlY3QoYnJvd3NlcigpLndpbmRvdygpLnBhdGgoKSkudG9F
cXVhbCgnLzEyMycpOwotICAgICAgICB9KTsKLQotICAgICAgICBpdCgnc2hvdWxkIGV4ZWN1dGUg
bmctY2xpY2sgYnV0IG5vdCByZWxvYWQgd2hlbiBocmVmIGVtcHR5IHN0cmluZyBhbmQgbmFtZSBz
cGVjaWZpZWQnLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICBlbGVtZW50KCcjbGluay00JykuY2xp
Y2soKTsKLSAgICAgICAgICBleHBlY3QoaW5wdXQoJ3ZhbHVlJykudmFsKCkpLnRvRXF1YWwoJzQn
KTsKLSAgICAgICAgICBleHBlY3QoZWxlbWVudCgnI2xpbmstNCcpLmF0dHIoJ2hyZWYnKSkudG9C
ZSgnJyk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGl0KCdzaG91bGQgZXhlY3V0ZSBuZy1jbGlj
ayBidXQgbm90IHJlbG9hZCB3aGVuIG5vIGhyZWYgYnV0IG5hbWUgc3BlY2lmaWVkJywgZnVuY3Rp
b24oKSB7Ci0gICAgICAgICAgZWxlbWVudCgnI2xpbmstNScpLmNsaWNrKCk7Ci0gICAgICAgICAg
ZXhwZWN0KGlucHV0KCd2YWx1ZScpLnZhbCgpKS50b0VxdWFsKCc1Jyk7Ci0gICAgICAgICAgZXhw
ZWN0KGVsZW1lbnQoJyNsaW5rLTUnKS5hdHRyKCdocmVmJykpLnRvQmUodW5kZWZpbmVkKTsKLSAg
ICAgICAgfSk7Ci0KLSAgICAgICAgaXQoJ3Nob3VsZCBvbmx5IGNoYW5nZSB1cmwgd2hlbiBvbmx5
IG5nLWhyZWYnLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICBpbnB1dCgndmFsdWUnKS5lbnRlcign
NicpOwotICAgICAgICAgIGV4cGVjdChlbGVtZW50KCcjbGluay02JykuYXR0cignaHJlZicpKS50
b0JlKCc2Jyk7Ci0KLSAgICAgICAgICBlbGVtZW50KCcjbGluay02JykuY2xpY2soKTsKLSAgICAg
ICAgICBleHBlY3QoYnJvd3NlcigpLmxvY2F0aW9uKCkudXJsKCkpLnRvRXF1YWwoJy82Jyk7Ci0g
ICAgICAgIH0pOwotICAgICAgPC9kb2M6c2NlbmFyaW8+Ci0gICAgPC9kb2M6ZXhhbXBsZT4KLSAq
LwotCi0vKioKLSAqIEBuZ2RvYyBkaXJlY3RpdmUKLSAqIEBuYW1lIG5nLmRpcmVjdGl2ZTpuZ1Ny
YwotICogQHJlc3RyaWN0IEEKLSAqCi0gKiBAZGVzY3JpcHRpb24KLSAqIFVzaW5nIEFuZ3VsYXIg
bWFya3VwIGxpa2UgYHt7aGFzaH19YCBpbiBhIGBzcmNgIGF0dHJpYnV0ZSBkb2Vzbid0Ci0gKiB3
b3JrIHJpZ2h0OiBUaGUgYnJvd3NlciB3aWxsIGZldGNoIGZyb20gdGhlIFVSTCB3aXRoIHRoZSBs
aXRlcmFsCi0gKiB0ZXh0IGB7e2hhc2h9fWAgdW50aWwgQW5ndWxhciByZXBsYWNlcyB0aGUgZXhw
cmVzc2lvbiBpbnNpZGUKLSAqIGB7e2hhc2h9fWAuIFRoZSBgbmdTcmNgIGRpcmVjdGl2ZSBzb2x2
ZXMgdGhpcyBwcm9ibGVtLgotICoKLSAqIFRoZSBidWdneSB3YXkgdG8gd3JpdGUgaXQ6Ci0gKiA8
cHJlPgotICogPGltZyBzcmM9Imh0dHA6Ly93d3cuZ3JhdmF0YXIuY29tL2F2YXRhci97e2hhc2h9
fSIvPgotICogPC9wcmU+Ci0gKgotICogVGhlIGNvcnJlY3Qgd2F5IHRvIHdyaXRlIGl0OgotICog
PHByZT4KLSAqIDxpbWcgbmctc3JjPSJodHRwOi8vd3d3LmdyYXZhdGFyLmNvbS9hdmF0YXIve3to
YXNofX0iLz4KLSAqIDwvcHJlPgotICoKLSAqIEBlbGVtZW50IElNRwotICogQHBhcmFtIHt0ZW1w
bGF0ZX0gbmdTcmMgYW55IHN0cmluZyB3aGljaCBjYW4gY29udGFpbiBge3t9fWAgbWFya3VwLgot
ICovCi0KLS8qKgotICogQG5nZG9jIGRpcmVjdGl2ZQotICogQG5hbWUgbmcuZGlyZWN0aXZlOm5n
RGlzYWJsZWQKLSAqIEByZXN0cmljdCBBCi0gKgotICogQGRlc2NyaXB0aW9uCi0gKgotICogVGhl
IGZvbGxvd2luZyBtYXJrdXAgd2lsbCBtYWtlIHRoZSBidXR0b24gZW5hYmxlZCBvbiBDaHJvbWUv
RmlyZWZveCBidXQgbm90IG9uIElFOCBhbmQgb2xkZXIgSUVzOgotICogPHByZT4KLSAqIDxkaXYg
bmctaW5pdD0ic2NvcGUgPSB7IGlzRGlzYWJsZWQ6IGZhbHNlIH0iPgotICogIDxidXR0b24gZGlz
YWJsZWQ9Int7c2NvcGUuaXNEaXNhYmxlZH19Ij5EaXNhYmxlZDwvYnV0dG9uPgotICogPC9kaXY+
Ci0gKiA8L3ByZT4KLSAqCi0gKiBUaGUgSFRNTCBzcGVjcyBkbyBub3QgcmVxdWlyZSBicm93c2Vy
cyB0byBwcmVzZXJ2ZSB0aGUgc3BlY2lhbCBhdHRyaWJ1dGVzIHN1Y2ggYXMgZGlzYWJsZWQuCi0g
KiAoVGhlIHByZXNlbmNlIG9mIHRoZW0gbWVhbnMgdHJ1ZSBhbmQgYWJzZW5jZSBtZWFucyBmYWxz
ZSkKLSAqIFRoaXMgcHJldmVudHMgdGhlIGFuZ3VsYXIgY29tcGlsZXIgZnJvbSBjb3JyZWN0bHkg
cmV0cmlldmluZyB0aGUgYmluZGluZyBleHByZXNzaW9uLgotICogVG8gc29sdmUgdGhpcyBwcm9i
bGVtLCB3ZSBpbnRyb2R1Y2UgdGhlIGBuZ0Rpc2FibGVkYCBkaXJlY3RpdmUuCi0gKgotICogQGV4
YW1wbGUKLSAgICA8ZG9jOmV4YW1wbGU+Ci0gICAgICA8ZG9jOnNvdXJjZT4KLSAgICAgICAgQ2xp
Y2sgbWUgdG8gdG9nZ2xlOiA8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5nLW1vZGVsPSJjaGVja2Vk
Ij48YnIvPgotICAgICAgICA8YnV0dG9uIG5nLW1vZGVsPSJidXR0b24iIG5nLWRpc2FibGVkPSJj
aGVja2VkIj5CdXR0b248L2J1dHRvbj4KLSAgICAgIDwvZG9jOnNvdXJjZT4KLSAgICAgIDxkb2M6
c2NlbmFyaW8+Ci0gICAgICAgIGl0KCdzaG91bGQgdG9nZ2xlIGJ1dHRvbicsIGZ1bmN0aW9uKCkg
ewotICAgICAgICAgIGV4cGVjdChlbGVtZW50KCcuZG9jLWV4YW1wbGUtbGl2ZSA6YnV0dG9uJyku
cHJvcCgnZGlzYWJsZWQnKSkudG9CZUZhbHN5KCk7Ci0gICAgICAgICAgaW5wdXQoJ2NoZWNrZWQn
KS5jaGVjaygpOwotICAgICAgICAgIGV4cGVjdChlbGVtZW50KCcuZG9jLWV4YW1wbGUtbGl2ZSA6
YnV0dG9uJykucHJvcCgnZGlzYWJsZWQnKSkudG9CZVRydXRoeSgpOwotICAgICAgICB9KTsKLSAg
ICAgIDwvZG9jOnNjZW5hcmlvPgotICAgIDwvZG9jOmV4YW1wbGU+Ci0gKgotICogQGVsZW1lbnQg
SU5QVVQKLSAqIEBwYXJhbSB7ZXhwcmVzc2lvbn0gbmdEaXNhYmxlZCBBbmd1bGFyIGV4cHJlc3Np
b24gdGhhdCB3aWxsIGJlIGV2YWx1YXRlZC4KLSAqLwotCi0KLS8qKgotICogQG5nZG9jIGRpcmVj
dGl2ZQotICogQG5hbWUgbmcuZGlyZWN0aXZlOm5nQ2hlY2tlZAotICogQHJlc3RyaWN0IEEKLSAq
Ci0gKiBAZGVzY3JpcHRpb24KLSAqIFRoZSBIVE1MIHNwZWNzIGRvIG5vdCByZXF1aXJlIGJyb3dz
ZXJzIHRvIHByZXNlcnZlIHRoZSBzcGVjaWFsIGF0dHJpYnV0ZXMgc3VjaCBhcyBjaGVja2VkLgot
ICogKFRoZSBwcmVzZW5jZSBvZiB0aGVtIG1lYW5zIHRydWUgYW5kIGFic2VuY2UgbWVhbnMgZmFs
c2UpCi0gKiBUaGlzIHByZXZlbnRzIHRoZSBhbmd1bGFyIGNvbXBpbGVyIGZyb20gY29ycmVjdGx5
IHJldHJpZXZpbmcgdGhlIGJpbmRpbmcgZXhwcmVzc2lvbi4KLSAqIFRvIHNvbHZlIHRoaXMgcHJv
YmxlbSwgd2UgaW50cm9kdWNlIHRoZSBgbmdDaGVja2VkYCBkaXJlY3RpdmUuCi0gKiBAZXhhbXBs
ZQotICAgIDxkb2M6ZXhhbXBsZT4KLSAgICAgIDxkb2M6c291cmNlPgotICAgICAgICBDaGVjayBt
ZSB0byBjaGVjayBib3RoOiA8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5nLW1vZGVsPSJtYXN0ZXIi
Pjxici8+Ci0gICAgICAgIDxpbnB1dCBpZD0iY2hlY2tTbGF2ZSIgdHlwZT0iY2hlY2tib3giIG5n
LWNoZWNrZWQ9Im1hc3RlciI+Ci0gICAgICA8L2RvYzpzb3VyY2U+Ci0gICAgICA8ZG9jOnNjZW5h
cmlvPgotICAgICAgICBpdCgnc2hvdWxkIGNoZWNrIGJvdGggY2hlY2tCb3hlcycsIGZ1bmN0aW9u
KCkgewotICAgICAgICAgIGV4cGVjdChlbGVtZW50KCcuZG9jLWV4YW1wbGUtbGl2ZSAjY2hlY2tT
bGF2ZScpLnByb3AoJ2NoZWNrZWQnKSkudG9CZUZhbHN5KCk7Ci0gICAgICAgICAgaW5wdXQoJ21h
c3RlcicpLmNoZWNrKCk7Ci0gICAgICAgICAgZXhwZWN0KGVsZW1lbnQoJy5kb2MtZXhhbXBsZS1s
aXZlICNjaGVja1NsYXZlJykucHJvcCgnY2hlY2tlZCcpKS50b0JlVHJ1dGh5KCk7Ci0gICAgICAg
IH0pOwotICAgICAgPC9kb2M6c2NlbmFyaW8+Ci0gICAgPC9kb2M6ZXhhbXBsZT4KLSAqCi0gKiBA
ZWxlbWVudCBJTlBVVAotICogQHBhcmFtIHtleHByZXNzaW9ufSBuZ0NoZWNrZWQgQW5ndWxhciBl
eHByZXNzaW9uIHRoYXQgd2lsbCBiZSBldmFsdWF0ZWQuCi0gKi8KLQotCi0vKioKLSAqIEBuZ2Rv
YyBkaXJlY3RpdmUKLSAqIEBuYW1lIG5nLmRpcmVjdGl2ZTpuZ011bHRpcGxlCi0gKiBAcmVzdHJp
Y3QgQQotICoKLSAqIEBkZXNjcmlwdGlvbgotICogVGhlIEhUTUwgc3BlY3MgZG8gbm90IHJlcXVp
cmUgYnJvd3NlcnMgdG8gcHJlc2VydmUgdGhlIHNwZWNpYWwgYXR0cmlidXRlcyBzdWNoIGFzIG11
bHRpcGxlLgotICogKFRoZSBwcmVzZW5jZSBvZiB0aGVtIG1lYW5zIHRydWUgYW5kIGFic2VuY2Ug
bWVhbnMgZmFsc2UpCi0gKiBUaGlzIHByZXZlbnRzIHRoZSBhbmd1bGFyIGNvbXBpbGVyIGZyb20g
Y29ycmVjdGx5IHJldHJpZXZpbmcgdGhlIGJpbmRpbmcgZXhwcmVzc2lvbi4KLSAqIFRvIHNvbHZl
IHRoaXMgcHJvYmxlbSwgd2UgaW50cm9kdWNlIHRoZSBgbmdNdWx0aXBsZWAgZGlyZWN0aXZlLgot
ICoKLSAqIEBleGFtcGxlCi0gICAgIDxkb2M6ZXhhbXBsZT4KLSAgICAgICA8ZG9jOnNvdXJjZT4K
LSAgICAgICAgIENoZWNrIG1lIGNoZWNrIG11bHRpcGxlOiA8aW5wdXQgdHlwZT0iY2hlY2tib3gi
IG5nLW1vZGVsPSJjaGVja2VkIj48YnIvPgotICAgICAgICAgPHNlbGVjdCBpZD0ic2VsZWN0IiBu
Zy1tdWx0aXBsZT0iY2hlY2tlZCI+Ci0gICAgICAgICAgIDxvcHRpb24+TWlza288L29wdGlvbj4K
LSAgICAgICAgICAgPG9wdGlvbj5JZ29yPC9vcHRpb24+Ci0gICAgICAgICAgIDxvcHRpb24+Vm9q
dGE8L29wdGlvbj4KLSAgICAgICAgICAgPG9wdGlvbj5EaTwvb3B0aW9uPgotICAgICAgICAgPC9z
ZWxlY3Q+Ci0gICAgICAgPC9kb2M6c291cmNlPgotICAgICAgIDxkb2M6c2NlbmFyaW8+Ci0gICAg
ICAgICBpdCgnc2hvdWxkIHRvZ2dsZSBtdWx0aXBsZScsIGZ1bmN0aW9uKCkgewotICAgICAgICAg
ICBleHBlY3QoZWxlbWVudCgnLmRvYy1leGFtcGxlLWxpdmUgI3NlbGVjdCcpLnByb3AoJ211bHRp
cGxlJykpLnRvQmVGYWxzeSgpOwotICAgICAgICAgICBpbnB1dCgnY2hlY2tlZCcpLmNoZWNrKCk7
Ci0gICAgICAgICAgIGV4cGVjdChlbGVtZW50KCcuZG9jLWV4YW1wbGUtbGl2ZSAjc2VsZWN0Jyku
cHJvcCgnbXVsdGlwbGUnKSkudG9CZVRydXRoeSgpOwotICAgICAgICAgfSk7Ci0gICAgICAgPC9k
b2M6c2NlbmFyaW8+Ci0gICAgIDwvZG9jOmV4YW1wbGU+Ci0gKgotICogQGVsZW1lbnQgU0VMRUNU
Ci0gKiBAcGFyYW0ge2V4cHJlc3Npb259IG5nTXVsdGlwbGUgQW5ndWxhciBleHByZXNzaW9uIHRo
YXQgd2lsbCBiZSBldmFsdWF0ZWQuCi0gKi8KLQotCi0vKioKLSAqIEBuZ2RvYyBkaXJlY3RpdmUK
LSAqIEBuYW1lIG5nLmRpcmVjdGl2ZTpuZ1JlYWRvbmx5Ci0gKiBAcmVzdHJpY3QgQQotICoKLSAq
IEBkZXNjcmlwdGlvbgotICogVGhlIEhUTUwgc3BlY3MgZG8gbm90IHJlcXVpcmUgYnJvd3NlcnMg
dG8gcHJlc2VydmUgdGhlIHNwZWNpYWwgYXR0cmlidXRlcyBzdWNoIGFzIHJlYWRvbmx5LgotICog
KFRoZSBwcmVzZW5jZSBvZiB0aGVtIG1lYW5zIHRydWUgYW5kIGFic2VuY2UgbWVhbnMgZmFsc2Up
Ci0gKiBUaGlzIHByZXZlbnRzIHRoZSBhbmd1bGFyIGNvbXBpbGVyIGZyb20gY29ycmVjdGx5IHJl
dHJpZXZpbmcgdGhlIGJpbmRpbmcgZXhwcmVzc2lvbi4KLSAqIFRvIHNvbHZlIHRoaXMgcHJvYmxl
bSwgd2UgaW50cm9kdWNlIHRoZSBgbmdSZWFkb25seWAgZGlyZWN0aXZlLgotICogQGV4YW1wbGUK
LSAgICA8ZG9jOmV4YW1wbGU+Ci0gICAgICA8ZG9jOnNvdXJjZT4KLSAgICAgICAgQ2hlY2sgbWUg
dG8gbWFrZSB0ZXh0IHJlYWRvbmx5OiA8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5nLW1vZGVsPSJj
aGVja2VkIj48YnIvPgotICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmctcmVhZG9ubHk9ImNo
ZWNrZWQiIHZhbHVlPSJJJ20gQW5ndWxhciIvPgotICAgICAgPC9kb2M6c291cmNlPgotICAgICAg
PGRvYzpzY2VuYXJpbz4KLSAgICAgICAgaXQoJ3Nob3VsZCB0b2dnbGUgcmVhZG9ubHkgYXR0cics
IGZ1bmN0aW9uKCkgewotICAgICAgICAgIGV4cGVjdChlbGVtZW50KCcuZG9jLWV4YW1wbGUtbGl2
ZSA6dGV4dCcpLnByb3AoJ3JlYWRvbmx5JykpLnRvQmVGYWxzeSgpOwotICAgICAgICAgIGlucHV0
KCdjaGVja2VkJykuY2hlY2soKTsKLSAgICAgICAgICBleHBlY3QoZWxlbWVudCgnLmRvYy1leGFt
cGxlLWxpdmUgOnRleHQnKS5wcm9wKCdyZWFkb25seScpKS50b0JlVHJ1dGh5KCk7Ci0gICAgICAg
IH0pOwotICAgICAgPC9kb2M6c2NlbmFyaW8+Ci0gICAgPC9kb2M6ZXhhbXBsZT4KLSAqCi0gKiBA
ZWxlbWVudCBJTlBVVAotICogQHBhcmFtIHtzdHJpbmd9IGV4cHJlc3Npb24gQW5ndWxhciBleHBy
ZXNzaW9uIHRoYXQgd2lsbCBiZSBldmFsdWF0ZWQuCi0gKi8KLQotCi0vKioKLSAqIEBuZ2RvYyBk
aXJlY3RpdmUKLSAqIEBuYW1lIG5nLmRpcmVjdGl2ZTpuZ1NlbGVjdGVkCi0gKiBAcmVzdHJpY3Qg
QQotICoKLSAqIEBkZXNjcmlwdGlvbgotICogVGhlIEhUTUwgc3BlY3MgZG8gbm90IHJlcXVpcmUg
YnJvd3NlcnMgdG8gcHJlc2VydmUgdGhlIHNwZWNpYWwgYXR0cmlidXRlcyBzdWNoIGFzIHNlbGVj
dGVkLgotICogKFRoZSBwcmVzZW5jZSBvZiB0aGVtIG1lYW5zIHRydWUgYW5kIGFic2VuY2UgbWVh
bnMgZmFsc2UpCi0gKiBUaGlzIHByZXZlbnRzIHRoZSBhbmd1bGFyIGNvbXBpbGVyIGZyb20gY29y
cmVjdGx5IHJldHJpZXZpbmcgdGhlIGJpbmRpbmcgZXhwcmVzc2lvbi4KLSAqIFRvIHNvbHZlIHRo
aXMgcHJvYmxlbSwgd2UgaW50cm9kdWNlZCB0aGUgYG5nU2VsZWN0ZWRgIGRpcmVjdGl2ZS4KLSAq
IEBleGFtcGxlCi0gICAgPGRvYzpleGFtcGxlPgotICAgICAgPGRvYzpzb3VyY2U+Ci0gICAgICAg
IENoZWNrIG1lIHRvIHNlbGVjdDogPGlucHV0IHR5cGU9ImNoZWNrYm94IiBuZy1tb2RlbD0ic2Vs
ZWN0ZWQiPjxici8+Ci0gICAgICAgIDxzZWxlY3Q+Ci0gICAgICAgICAgPG9wdGlvbj5IZWxsbyE8
L29wdGlvbj4KLSAgICAgICAgICA8b3B0aW9uIGlkPSJncmVldCIgbmctc2VsZWN0ZWQ9InNlbGVj
dGVkIj5HcmVldGluZ3MhPC9vcHRpb24+Ci0gICAgICAgIDwvc2VsZWN0PgotICAgICAgPC9kb2M6
c291cmNlPgotICAgICAgPGRvYzpzY2VuYXJpbz4KLSAgICAgICAgaXQoJ3Nob3VsZCBzZWxlY3Qg
R3JlZXRpbmdzIScsIGZ1bmN0aW9uKCkgewotICAgICAgICAgIGV4cGVjdChlbGVtZW50KCcuZG9j
LWV4YW1wbGUtbGl2ZSAjZ3JlZXQnKS5wcm9wKCdzZWxlY3RlZCcpKS50b0JlRmFsc3koKTsKLSAg
ICAgICAgICBpbnB1dCgnc2VsZWN0ZWQnKS5jaGVjaygpOwotICAgICAgICAgIGV4cGVjdChlbGVt
ZW50KCcuZG9jLWV4YW1wbGUtbGl2ZSAjZ3JlZXQnKS5wcm9wKCdzZWxlY3RlZCcpKS50b0JlVHJ1
dGh5KCk7Ci0gICAgICAgIH0pOwotICAgICAgPC9kb2M6c2NlbmFyaW8+Ci0gICAgPC9kb2M6ZXhh
bXBsZT4KLSAqCi0gKiBAZWxlbWVudCBPUFRJT04KLSAqIEBwYXJhbSB7c3RyaW5nfSBleHByZXNz
aW9uIEFuZ3VsYXIgZXhwcmVzc2lvbiB0aGF0IHdpbGwgYmUgZXZhbHVhdGVkLgotICovCi0KLQot
dmFyIG5nQXR0cmlidXRlQWxpYXNEaXJlY3RpdmVzID0ge307Ci0KLQotLy8gYm9vbGVhbiBhdHRy
cyBhcmUgZXZhbHVhdGVkCi1mb3JFYWNoKEJPT0xFQU5fQVRUUiwgZnVuY3Rpb24ocHJvcE5hbWUs
IGF0dHJOYW1lKSB7Ci0gIHZhciBub3JtYWxpemVkID0gZGlyZWN0aXZlTm9ybWFsaXplKCduZy0n
ICsgYXR0ck5hbWUpOwotICBuZ0F0dHJpYnV0ZUFsaWFzRGlyZWN0aXZlc1tub3JtYWxpemVkXSA9
IGZ1bmN0aW9uKCkgewotICAgIHJldHVybiB7Ci0gICAgICBwcmlvcml0eTogMTAwLAotICAgICAg
Y29tcGlsZTogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHJldHVybiBmdW5jdGlvbihzY29wZSwgZWxl
bWVudCwgYXR0cikgewotICAgICAgICAgIHNjb3BlLiR3YXRjaChhdHRyW25vcm1hbGl6ZWRdLCBm
dW5jdGlvbiBuZ0Jvb2xlYW5BdHRyV2F0Y2hBY3Rpb24odmFsdWUpIHsKLSAgICAgICAgICAgIGF0
dHIuJHNldChhdHRyTmFtZSwgISF2YWx1ZSk7Ci0gICAgICAgICAgfSk7Ci0gICAgICAgIH07Ci0g
ICAgICB9Ci0gICAgfTsKLSAgfTsKLX0pOwotCi0KLS8vIG5nLXNyYywgbmctaHJlZiBhcmUgaW50
ZXJwb2xhdGVkCi1mb3JFYWNoKFsnc3JjJywgJ2hyZWYnXSwgZnVuY3Rpb24oYXR0ck5hbWUpIHsK
LSAgdmFyIG5vcm1hbGl6ZWQgPSBkaXJlY3RpdmVOb3JtYWxpemUoJ25nLScgKyBhdHRyTmFtZSk7
Ci0gIG5nQXR0cmlidXRlQWxpYXNEaXJlY3RpdmVzW25vcm1hbGl6ZWRdID0gZnVuY3Rpb24oKSB7
Ci0gICAgcmV0dXJuIHsKLSAgICAgIHByaW9yaXR5OiA5OSwgLy8gaXQgbmVlZHMgdG8gcnVuIGFm
dGVyIHRoZSBhdHRyaWJ1dGVzIGFyZSBpbnRlcnBvbGF0ZWQKLSAgICAgIGxpbms6IGZ1bmN0aW9u
KHNjb3BlLCBlbGVtZW50LCBhdHRyKSB7Ci0gICAgICAgIGF0dHIuJG9ic2VydmUobm9ybWFsaXpl
ZCwgZnVuY3Rpb24odmFsdWUpIHsKLSAgICAgICAgICBpZiAoIXZhbHVlKQotICAgICAgICAgICAg
IHJldHVybjsKLQotICAgICAgICAgIGF0dHIuJHNldChhdHRyTmFtZSwgdmFsdWUpOwotCi0gICAg
ICAgICAgLy8gb24gSUUsIGlmICJuZzpzcmMiIGRpcmVjdGl2ZSBkZWNsYXJhdGlvbiBpcyB1c2Vk
IGFuZCAic3JjIiBhdHRyaWJ1dGUgZG9lc24ndCBleGlzdAotICAgICAgICAgIC8vIHRoZW4gY2Fs
bGluZyBlbGVtZW50LnNldEF0dHJpYnV0ZSgnc3JjJywgJ2ZvbycpIGRvZXNuJ3QgZG8gYW55dGhp
bmcsIHNvIHdlIG5lZWQKLSAgICAgICAgICAvLyB0byBzZXQgdGhlIHByb3BlcnR5IGFzIHdlbGwg
dG8gYWNoaWV2ZSB0aGUgZGVzaXJlZCBlZmZlY3QuCi0gICAgICAgICAgLy8gd2UgdXNlIGF0dHJb
YXR0ck5hbWVdIHZhbHVlIHNpbmNlICRzZXQgY2FuIHNhbml0aXplIHRoZSB1cmwuCi0gICAgICAg
ICAgaWYgKG1zaWUpIGVsZW1lbnQucHJvcChhdHRyTmFtZSwgYXR0clthdHRyTmFtZV0pOwotICAg
ICAgICB9KTsKLSAgICAgIH0KLSAgICB9OwotICB9OwotfSk7Ci0KLXZhciBudWxsRm9ybUN0cmwg
PSB7Ci0gICRhZGRDb250cm9sOiBub29wLAotICAkcmVtb3ZlQ29udHJvbDogbm9vcCwKLSAgJHNl
dFZhbGlkaXR5OiBub29wLAotICAkc2V0RGlydHk6IG5vb3AKLX07Ci0KLS8qKgotICogQG5nZG9j
IG9iamVjdAotICogQG5hbWUgbmcuZGlyZWN0aXZlOmZvcm0uRm9ybUNvbnRyb2xsZXIKLSAqCi0g
KiBAcHJvcGVydHkge2Jvb2xlYW59ICRwcmlzdGluZSBUcnVlIGlmIHVzZXIgaGFzIG5vdCBpbnRl
cmFjdGVkIHdpdGggdGhlIGZvcm0geWV0LgotICogQHByb3BlcnR5IHtib29sZWFufSAkZGlydHkg
VHJ1ZSBpZiB1c2VyIGhhcyBhbHJlYWR5IGludGVyYWN0ZWQgd2l0aCB0aGUgZm9ybS4KLSAqIEBw
cm9wZXJ0eSB7Ym9vbGVhbn0gJHZhbGlkIFRydWUgaWYgYWxsIG9mIHRoZSBjb250YWluaW5nIGZv
cm1zIGFuZCBjb250cm9scyBhcmUgdmFsaWQuCi0gKiBAcHJvcGVydHkge2Jvb2xlYW59ICRpbnZh
bGlkIFRydWUgaWYgYXQgbGVhc3Qgb25lIGNvbnRhaW5pbmcgY29udHJvbCBvciBmb3JtIGlzIGlu
dmFsaWQuCi0gKgotICogQHByb3BlcnR5IHtPYmplY3R9ICRlcnJvciBJcyBhbiBvYmplY3QgaGFz
aCwgY29udGFpbmluZyByZWZlcmVuY2VzIHRvIGFsbCBpbnZhbGlkIGNvbnRyb2xzIG9yCi0gKiAg
Zm9ybXMsIHdoZXJlOgotICoKLSAqICAtIGtleXMgYXJlIHZhbGlkYXRpb24gdG9rZW5zIChlcnJv
ciBuYW1lcykg4oCUIHN1Y2ggYXMgYHJlcXVpcmVkYCwgYHVybGAgb3IgYGVtYWlsYCksCi0gKiAg
LSB2YWx1ZXMgYXJlIGFycmF5cyBvZiBjb250cm9scyBvciBmb3JtcyB0aGF0IGFyZSBpbnZhbGlk
IHdpdGggZ2l2ZW4gZXJyb3IuCi0gKgotICogQGRlc2NyaXB0aW9uCi0gKiBgRm9ybUNvbnRyb2xs
ZXJgIGtlZXBzIHRyYWNrIG9mIGFsbCBpdHMgY29udHJvbHMgYW5kIG5lc3RlZCBmb3JtcyBhcyB3
ZWxsIGFzIHN0YXRlIG9mIHRoZW0sCi0gKiBzdWNoIGFzIGJlaW5nIHZhbGlkL2ludmFsaWQgb3Ig
ZGlydHkvcHJpc3RpbmUuCi0gKgotICogRWFjaCB7QGxpbmsgbmcuZGlyZWN0aXZlOmZvcm0gZm9y
bX0gZGlyZWN0aXZlIGNyZWF0ZXMgYW4gaW5zdGFuY2UKLSAqIG9mIGBGb3JtQ29udHJvbGxlcmAu
Ci0gKgotICovCi0vL2Fza3MgZm9yICRzY29wZSB0byBmb29sIHRoZSBCQyBjb250cm9sbGVyIG1v
ZHVsZQotRm9ybUNvbnRyb2xsZXIuJGluamVjdCA9IFsnJGVsZW1lbnQnLCAnJGF0dHJzJywgJyRz
Y29wZSddOwotZnVuY3Rpb24gRm9ybUNvbnRyb2xsZXIoZWxlbWVudCwgYXR0cnMpIHsKLSAgdmFy
IGZvcm0gPSB0aGlzLAotICAgICAgcGFyZW50Rm9ybSA9IGVsZW1lbnQucGFyZW50KCkuY29udHJv
bGxlcignZm9ybScpIHx8IG51bGxGb3JtQ3RybCwKLSAgICAgIGludmFsaWRDb3VudCA9IDAsIC8v
IHVzZWQgdG8gZWFzaWx5IGRldGVybWluZSBpZiB3ZSBhcmUgdmFsaWQKLSAgICAgIGVycm9ycyA9
IGZvcm0uJGVycm9yID0ge307Ci0KLSAgLy8gaW5pdCBzdGF0ZQotICBmb3JtLiRuYW1lID0gYXR0
cnMubmFtZTsKLSAgZm9ybS4kZGlydHkgPSBmYWxzZTsKLSAgZm9ybS4kcHJpc3RpbmUgPSB0cnVl
OwotICBmb3JtLiR2YWxpZCA9IHRydWU7Ci0gIGZvcm0uJGludmFsaWQgPSBmYWxzZTsKLQotICBw
YXJlbnRGb3JtLiRhZGRDb250cm9sKGZvcm0pOwotCi0gIC8vIFNldHVwIGluaXRpYWwgc3RhdGUg
b2YgdGhlIGNvbnRyb2wKLSAgZWxlbWVudC5hZGRDbGFzcyhQUklTVElORV9DTEFTUyk7Ci0gIHRv
Z2dsZVZhbGlkQ3NzKHRydWUpOwotCi0gIC8vIGNvbnZlbmllbmNlIG1ldGhvZCBmb3IgZWFzeSB0
b2dnbGluZyBvZiBjbGFzc2VzCi0gIGZ1bmN0aW9uIHRvZ2dsZVZhbGlkQ3NzKGlzVmFsaWQsIHZh
bGlkYXRpb25FcnJvcktleSkgewotICAgIHZhbGlkYXRpb25FcnJvcktleSA9IHZhbGlkYXRpb25F
cnJvcktleSA/ICctJyArIHNuYWtlX2Nhc2UodmFsaWRhdGlvbkVycm9yS2V5LCAnLScpIDogJyc7
Ci0gICAgZWxlbWVudC4KLSAgICAgIHJlbW92ZUNsYXNzKChpc1ZhbGlkID8gSU5WQUxJRF9DTEFT
UyA6IFZBTElEX0NMQVNTKSArIHZhbGlkYXRpb25FcnJvcktleSkuCi0gICAgICBhZGRDbGFzcygo
aXNWYWxpZCA/IFZBTElEX0NMQVNTIDogSU5WQUxJRF9DTEFTUykgKyB2YWxpZGF0aW9uRXJyb3JL
ZXkpOwotICB9Ci0KLSAgZm9ybS4kYWRkQ29udHJvbCA9IGZ1bmN0aW9uKGNvbnRyb2wpIHsKLSAg
ICBpZiAoY29udHJvbC4kbmFtZSAmJiAhZm9ybS5oYXNPd25Qcm9wZXJ0eShjb250cm9sLiRuYW1l
KSkgewotICAgICAgZm9ybVtjb250cm9sLiRuYW1lXSA9IGNvbnRyb2w7Ci0gICAgfQotICB9Owot
Ci0gIGZvcm0uJHJlbW92ZUNvbnRyb2wgPSBmdW5jdGlvbihjb250cm9sKSB7Ci0gICAgaWYgKGNv
bnRyb2wuJG5hbWUgJiYgZm9ybVtjb250cm9sLiRuYW1lXSA9PT0gY29udHJvbCkgewotICAgICAg
ZGVsZXRlIGZvcm1bY29udHJvbC4kbmFtZV07Ci0gICAgfQotICAgIGZvckVhY2goZXJyb3JzLCBm
dW5jdGlvbihxdWV1ZSwgdmFsaWRhdGlvblRva2VuKSB7Ci0gICAgICBmb3JtLiRzZXRWYWxpZGl0
eSh2YWxpZGF0aW9uVG9rZW4sIHRydWUsIGNvbnRyb2wpOwotICAgIH0pOwotICB9OwotCi0gIGZv
cm0uJHNldFZhbGlkaXR5ID0gZnVuY3Rpb24odmFsaWRhdGlvblRva2VuLCBpc1ZhbGlkLCBjb250
cm9sKSB7Ci0gICAgdmFyIHF1ZXVlID0gZXJyb3JzW3ZhbGlkYXRpb25Ub2tlbl07Ci0KLSAgICBp
ZiAoaXNWYWxpZCkgewotICAgICAgaWYgKHF1ZXVlKSB7Ci0gICAgICAgIGFycmF5UmVtb3ZlKHF1
ZXVlLCBjb250cm9sKTsKLSAgICAgICAgaWYgKCFxdWV1ZS5sZW5ndGgpIHsKLSAgICAgICAgICBp
bnZhbGlkQ291bnQtLTsKLSAgICAgICAgICBpZiAoIWludmFsaWRDb3VudCkgewotICAgICAgICAg
ICAgdG9nZ2xlVmFsaWRDc3MoaXNWYWxpZCk7Ci0gICAgICAgICAgICBmb3JtLiR2YWxpZCA9IHRy
dWU7Ci0gICAgICAgICAgICBmb3JtLiRpbnZhbGlkID0gZmFsc2U7Ci0gICAgICAgICAgfQotICAg
ICAgICAgIGVycm9yc1t2YWxpZGF0aW9uVG9rZW5dID0gZmFsc2U7Ci0gICAgICAgICAgdG9nZ2xl
VmFsaWRDc3ModHJ1ZSwgdmFsaWRhdGlvblRva2VuKTsKLSAgICAgICAgICBwYXJlbnRGb3JtLiRz
ZXRWYWxpZGl0eSh2YWxpZGF0aW9uVG9rZW4sIHRydWUsIGZvcm0pOwotICAgICAgICB9Ci0gICAg
ICB9Ci0KLSAgICB9IGVsc2UgewotICAgICAgaWYgKCFpbnZhbGlkQ291bnQpIHsKLSAgICAgICAg
dG9nZ2xlVmFsaWRDc3MoaXNWYWxpZCk7Ci0gICAgICB9Ci0gICAgICBpZiAocXVldWUpIHsKLSAg
ICAgICAgaWYgKGluY2x1ZGVzKHF1ZXVlLCBjb250cm9sKSkgcmV0dXJuOwotICAgICAgfSBlbHNl
IHsKLSAgICAgICAgZXJyb3JzW3ZhbGlkYXRpb25Ub2tlbl0gPSBxdWV1ZSA9IFtdOwotICAgICAg
ICBpbnZhbGlkQ291bnQrKzsKLSAgICAgICAgdG9nZ2xlVmFsaWRDc3MoZmFsc2UsIHZhbGlkYXRp
b25Ub2tlbik7Ci0gICAgICAgIHBhcmVudEZvcm0uJHNldFZhbGlkaXR5KHZhbGlkYXRpb25Ub2tl
biwgZmFsc2UsIGZvcm0pOwotICAgICAgfQotICAgICAgcXVldWUucHVzaChjb250cm9sKTsKLQot
ICAgICAgZm9ybS4kdmFsaWQgPSBmYWxzZTsKLSAgICAgIGZvcm0uJGludmFsaWQgPSB0cnVlOwot
ICAgIH0KLSAgfTsKLQotICBmb3JtLiRzZXREaXJ0eSA9IGZ1bmN0aW9uKCkgewotICAgIGVsZW1l
bnQucmVtb3ZlQ2xhc3MoUFJJU1RJTkVfQ0xBU1MpLmFkZENsYXNzKERJUlRZX0NMQVNTKTsKLSAg
ICBmb3JtLiRkaXJ0eSA9IHRydWU7Ci0gICAgZm9ybS4kcHJpc3RpbmUgPSBmYWxzZTsKLSAgICBw
YXJlbnRGb3JtLiRzZXREaXJ0eSgpOwotICB9OwotCi19Ci0KLQotLyoqCi0gKiBAbmdkb2MgZGly
ZWN0aXZlCi0gKiBAbmFtZSBuZy5kaXJlY3RpdmU6bmdGb3JtCi0gKiBAcmVzdHJpY3QgRUFDCi0g
KgotICogQGRlc2NyaXB0aW9uCi0gKiBOZXN0YWJsZSBhbGlhcyBvZiB7QGxpbmsgbmcuZGlyZWN0
aXZlOmZvcm0gYGZvcm1gfSBkaXJlY3RpdmUuIEhUTUwKLSAqIGRvZXMgbm90IGFsbG93IG5lc3Rp
bmcgb2YgZm9ybSBlbGVtZW50cy4gSXQgaXMgdXNlZnVsIHRvIG5lc3QgZm9ybXMsIGZvciBleGFt
cGxlIGlmIHRoZSB2YWxpZGl0eSBvZiBhCi0gKiBzdWItZ3JvdXAgb2YgY29udHJvbHMgbmVlZHMg
dG8gYmUgZGV0ZXJtaW5lZC4KLSAqCi0gKiBAcGFyYW0ge3N0cmluZz19IG5hbWV8bmdGb3JtIE5h
bWUgb2YgdGhlIGZvcm0uIElmIHNwZWNpZmllZCwgdGhlIGZvcm0gY29udHJvbGxlciB3aWxsIGJl
IHB1Ymxpc2hlZCBpbnRvCi0gKiAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRlZCBzY29wZSwg
dW5kZXIgdGhpcyBuYW1lLgotICoKLSAqLwotCi0gLyoqCi0gKiBAbmdkb2MgZGlyZWN0aXZlCi0g
KiBAbmFtZSBuZy5kaXJlY3RpdmU6Zm9ybQotICogQHJlc3RyaWN0IEUKLSAqCi0gKiBAZGVzY3Jp
cHRpb24KLSAqIERpcmVjdGl2ZSB0aGF0IGluc3RhbnRpYXRlcwotICoge0BsaW5rIG5nLmRpcmVj
dGl2ZTpmb3JtLkZvcm1Db250cm9sbGVyIEZvcm1Db250cm9sbGVyfS4KLSAqCi0gKiBJZiBgbmFt
ZWAgYXR0cmlidXRlIGlzIHNwZWNpZmllZCwgdGhlIGZvcm0gY29udHJvbGxlciBpcyBwdWJsaXNo
ZWQgb250byB0aGUgY3VycmVudCBzY29wZSB1bmRlcgotICogdGhpcyBuYW1lLgotICoKLSAqICMg
QWxpYXM6IHtAbGluayBuZy5kaXJlY3RpdmU6bmdGb3JtIGBuZ0Zvcm1gfQotICoKLSAqIEluIGFu
Z3VsYXIgZm9ybXMgY2FuIGJlIG5lc3RlZC4gVGhpcyBtZWFucyB0aGF0IHRoZSBvdXRlciBmb3Jt
IGlzIHZhbGlkIHdoZW4gYWxsIG9mIHRoZSBjaGlsZAotICogZm9ybXMgYXJlIHZhbGlkIGFzIHdl
bGwuIEhvd2V2ZXIgYnJvd3NlcnMgZG8gbm90IGFsbG93IG5lc3Rpbmcgb2YgYDxmb3JtPmAgZWxl
bWVudHMsIGZvciB0aGlzCi0gKiByZWFzb24gYW5ndWxhciBwcm92aWRlcyB7QGxpbmsgbmcuZGly
ZWN0aXZlOm5nRm9ybSBgbmdGb3JtYH0gYWxpYXMKLSAqIHdoaWNoIGJlaGF2ZXMgaWRlbnRpY2Fs
IHRvIGA8Zm9ybT5gIGJ1dCBhbGxvd3MgZm9ybSBuZXN0aW5nLgotICoKLSAqCi0gKiAjIENTUyBj
bGFzc2VzCi0gKiAgLSBgbmctdmFsaWRgIElzIHNldCBpZiB0aGUgZm9ybSBpcyB2YWxpZC4KLSAq
ICAtIGBuZy1pbnZhbGlkYCBJcyBzZXQgaWYgdGhlIGZvcm0gaXMgaW52YWxpZC4KLSAqICAtIGBu
Zy1wcmlzdGluZWAgSXMgc2V0IGlmIHRoZSBmb3JtIGlzIHByaXN0aW5lLgotICogIC0gYG5nLWRp
cnR5YCBJcyBzZXQgaWYgdGhlIGZvcm0gaXMgZGlydHkuCi0gKgotICoKLSAqICMgU3VibWl0dGlu
ZyBhIGZvcm0gYW5kIHByZXZlbnRpbmcgZGVmYXVsdCBhY3Rpb24KLSAqCi0gKiBTaW5jZSB0aGUg
cm9sZSBvZiBmb3JtcyBpbiBjbGllbnQtc2lkZSBBbmd1bGFyIGFwcGxpY2F0aW9ucyBpcyBkaWZm
ZXJlbnQgdGhhbiBpbiBjbGFzc2ljYWwKLSAqIHJvdW5kdHJpcCBhcHBzLCBpdCBpcyBkZXNpcmFi
bGUgZm9yIHRoZSBicm93c2VyIG5vdCB0byB0cmFuc2xhdGUgdGhlIGZvcm0gc3VibWlzc2lvbiBp
bnRvIGEgZnVsbAotICogcGFnZSByZWxvYWQgdGhhdCBzZW5kcyB0aGUgZGF0YSB0byB0aGUgc2Vy
dmVyLiBJbnN0ZWFkIHNvbWUgamF2YXNjcmlwdCBsb2dpYyBzaG91bGQgYmUgdHJpZ2dlcmVkCi0g
KiB0byBoYW5kbGUgdGhlIGZvcm0gc3VibWlzc2lvbiBpbiBhcHBsaWNhdGlvbiBzcGVjaWZpYyB3
YXkuCi0gKgotICogRm9yIHRoaXMgcmVhc29uLCBBbmd1bGFyIHByZXZlbnRzIHRoZSBkZWZhdWx0
IGFjdGlvbiAoZm9ybSBzdWJtaXNzaW9uIHRvIHRoZSBzZXJ2ZXIpIHVubGVzcyB0aGUKLSAqIGA8
Zm9ybT5gIGVsZW1lbnQgaGFzIGFuIGBhY3Rpb25gIGF0dHJpYnV0ZSBzcGVjaWZpZWQuCi0gKgot
ICogWW91IGNhbiB1c2Ugb25lIG9mIHRoZSBmb2xsb3dpbmcgdHdvIHdheXMgdG8gc3BlY2lmeSB3
aGF0IGphdmFzY3JpcHQgbWV0aG9kIHNob3VsZCBiZSBjYWxsZWQgd2hlbgotICogYSBmb3JtIGlz
IHN1Ym1pdHRlZDoKLSAqCi0gKiAtIHtAbGluayBuZy5kaXJlY3RpdmU6bmdTdWJtaXQgbmdTdWJt
aXR9IGRpcmVjdGl2ZSBvbiB0aGUgZm9ybSBlbGVtZW50Ci0gKiAtIHtAbGluayBuZy5kaXJlY3Rp
dmU6bmdDbGljayBuZ0NsaWNrfSBkaXJlY3RpdmUgb24gdGhlIGZpcnN0Ci0gICogIGJ1dHRvbiBv
ciBpbnB1dCBmaWVsZCBvZiB0eXBlIHN1Ym1pdCAoaW5wdXRbdHlwZT1zdWJtaXRdKQotICoKLSAq
IFRvIHByZXZlbnQgZG91YmxlIGV4ZWN1dGlvbiBvZiB0aGUgaGFuZGxlciwgdXNlIG9ubHkgb25l
IG9mIG5nU3VibWl0IG9yIG5nQ2xpY2sgZGlyZWN0aXZlcy4gVGhpcwotICogaXMgYmVjYXVzZSBv
ZiB0aGUgZm9sbG93aW5nIGZvcm0gc3VibWlzc2lvbiBydWxlcyBjb21pbmcgZnJvbSB0aGUgaHRt
bCBzcGVjOgotICoKLSAqIC0gSWYgYSBmb3JtIGhhcyBvbmx5IG9uZSBpbnB1dCBmaWVsZCB0aGVu
IGhpdHRpbmcgZW50ZXIgaW4gdGhpcyBmaWVsZCB0cmlnZ2VycyBmb3JtIHN1Ym1pdAotICogKGBu
Z1N1Ym1pdGApCi0gKiAtIGlmIGEgZm9ybSBoYXMgaGFzIDIrIGlucHV0IGZpZWxkcyBhbmQgbm8g
YnV0dG9ucyBvciBpbnB1dFt0eXBlPXN1Ym1pdF0gdGhlbiBoaXR0aW5nIGVudGVyCi0gKiBkb2Vz
bid0IHRyaWdnZXIgc3VibWl0Ci0gKiAtIGlmIGEgZm9ybSBoYXMgb25lIG9yIG1vcmUgaW5wdXQg
ZmllbGRzIGFuZCBvbmUgb3IgbW9yZSBidXR0b25zIG9yIGlucHV0W3R5cGU9c3VibWl0XSB0aGVu
Ci0gKiBoaXR0aW5nIGVudGVyIGluIGFueSBvZiB0aGUgaW5wdXQgZmllbGRzIHdpbGwgdHJpZ2dl
ciB0aGUgY2xpY2sgaGFuZGxlciBvbiB0aGUgKmZpcnN0KiBidXR0b24gb3IKLSAqIGlucHV0W3R5
cGU9c3VibWl0XSAoYG5nQ2xpY2tgKSAqYW5kKiBhIHN1Ym1pdCBoYW5kbGVyIG9uIHRoZSBlbmNs
b3NpbmcgZm9ybSAoYG5nU3VibWl0YCkKLSAqCi0gKiBAcGFyYW0ge3N0cmluZz19IG5hbWUgTmFt
ZSBvZiB0aGUgZm9ybS4gSWYgc3BlY2lmaWVkLCB0aGUgZm9ybSBjb250cm9sbGVyIHdpbGwgYmUg
cHVibGlzaGVkIGludG8KLSAqICAgICAgICAgICAgICAgICAgICAgICByZWxhdGVkIHNjb3BlLCB1
bmRlciB0aGlzIG5hbWUuCi0gKgotICogQGV4YW1wbGUKLSAgICA8ZG9jOmV4YW1wbGU+Ci0gICAg
ICA8ZG9jOnNvdXJjZT4KLSAgICAgICA8c2NyaXB0PgotICAgICAgICAgZnVuY3Rpb24gQ3RybCgk
c2NvcGUpIHsKLSAgICAgICAgICAgJHNjb3BlLnVzZXJUeXBlID0gJ2d1ZXN0JzsKLSAgICAgICAg
IH0KLSAgICAgICA8L3NjcmlwdD4KLSAgICAgICA8Zm9ybSBuYW1lPSJteUZvcm0iIG5nLWNvbnRy
b2xsZXI9IkN0cmwiPgotICAgICAgICAgdXNlclR5cGU6IDxpbnB1dCBuYW1lPSJpbnB1dCIgbmct
bW9kZWw9InVzZXJUeXBlIiByZXF1aXJlZD4KLSAgICAgICAgIDxzcGFuIGNsYXNzPSJlcnJvciIg
bmctc2hvdz0ibXlGb3JtLmlucHV0LiRlcnJvci5yZXF1aXJlZCI+UmVxdWlyZWQhPC9zcGFuPjxi
cj4KLSAgICAgICAgIDx0dD51c2VyVHlwZSA9IHt7dXNlclR5cGV9fTwvdHQ+PGJyPgotICAgICAg
ICAgPHR0Pm15Rm9ybS5pbnB1dC4kdmFsaWQgPSB7e215Rm9ybS5pbnB1dC4kdmFsaWR9fTwvdHQ+
PGJyPgotICAgICAgICAgPHR0Pm15Rm9ybS5pbnB1dC4kZXJyb3IgPSB7e215Rm9ybS5pbnB1dC4k
ZXJyb3J9fTwvdHQ+PGJyPgotICAgICAgICAgPHR0Pm15Rm9ybS4kdmFsaWQgPSB7e215Rm9ybS4k
dmFsaWR9fTwvdHQ+PGJyPgotICAgICAgICAgPHR0Pm15Rm9ybS4kZXJyb3IucmVxdWlyZWQgPSB7
eyEhbXlGb3JtLiRlcnJvci5yZXF1aXJlZH19PC90dD48YnI+Ci0gICAgICAgIDwvZm9ybT4KLSAg
ICAgIDwvZG9jOnNvdXJjZT4KLSAgICAgIDxkb2M6c2NlbmFyaW8+Ci0gICAgICAgIGl0KCdzaG91
bGQgaW5pdGlhbGl6ZSB0byBtb2RlbCcsIGZ1bmN0aW9uKCkgewotICAgICAgICAgZXhwZWN0KGJp
bmRpbmcoJ3VzZXJUeXBlJykpLnRvRXF1YWwoJ2d1ZXN0Jyk7Ci0gICAgICAgICBleHBlY3QoYmlu
ZGluZygnbXlGb3JtLmlucHV0LiR2YWxpZCcpKS50b0VxdWFsKCd0cnVlJyk7Ci0gICAgICAgIH0p
OwotCi0gICAgICAgIGl0KCdzaG91bGQgYmUgaW52YWxpZCBpZiBlbXB0eScsIGZ1bmN0aW9uKCkg
ewotICAgICAgICAgaW5wdXQoJ3VzZXJUeXBlJykuZW50ZXIoJycpOwotICAgICAgICAgZXhwZWN0
KGJpbmRpbmcoJ3VzZXJUeXBlJykpLnRvRXF1YWwoJycpOwotICAgICAgICAgZXhwZWN0KGJpbmRp
bmcoJ215Rm9ybS5pbnB1dC4kdmFsaWQnKSkudG9FcXVhbCgnZmFsc2UnKTsKLSAgICAgICAgfSk7
Ci0gICAgICA8L2RvYzpzY2VuYXJpbz4KLSAgICA8L2RvYzpleGFtcGxlPgotICovCi12YXIgZm9y
bURpcmVjdGl2ZUZhY3RvcnkgPSBmdW5jdGlvbihpc05nRm9ybSkgewotICByZXR1cm4gWyckdGlt
ZW91dCcsIGZ1bmN0aW9uKCR0aW1lb3V0KSB7Ci0gICAgdmFyIGZvcm1EaXJlY3RpdmUgPSB7Ci0g
ICAgICBuYW1lOiAnZm9ybScsCi0gICAgICByZXN0cmljdDogJ0UnLAotICAgICAgY29udHJvbGxl
cjogRm9ybUNvbnRyb2xsZXIsCi0gICAgICBjb21waWxlOiBmdW5jdGlvbigpIHsKLSAgICAgICAg
cmV0dXJuIHsKLSAgICAgICAgICBwcmU6IGZ1bmN0aW9uKHNjb3BlLCBmb3JtRWxlbWVudCwgYXR0
ciwgY29udHJvbGxlcikgewotICAgICAgICAgICAgaWYgKCFhdHRyLmFjdGlvbikgewotICAgICAg
ICAgICAgICAvLyB3ZSBjYW4ndCB1c2UganEgZXZlbnRzIGJlY2F1c2UgaWYgYSBmb3JtIGlzIGRl
c3Ryb3llZCBkdXJpbmcgc3VibWlzc2lvbiB0aGUgZGVmYXVsdAotICAgICAgICAgICAgICAvLyBh
Y3Rpb24gaXMgbm90IHByZXZlbnRlZC4gc2VlICMxMjM4Ci0gICAgICAgICAgICAgIC8vCi0gICAg
ICAgICAgICAgIC8vIElFIDkgaXMgbm90IGFmZmVjdGVkIGJlY2F1c2UgaXQgZG9lc24ndCBmaXJl
IGEgc3VibWl0IGV2ZW50IGFuZCB0cnkgdG8gZG8gYSBmdWxsCi0gICAgICAgICAgICAgIC8vIHBh
Z2UgcmVsb2FkIGlmIHRoZSBmb3JtIHdhcyBkZXN0cm95ZWQgYnkgc3VibWlzc2lvbiBvZiB0aGUg
Zm9ybSB2aWEgYSBjbGljayBoYW5kbGVyCi0gICAgICAgICAgICAgIC8vIG9uIGEgYnV0dG9uIGlu
IHRoZSBmb3JtLiBMb29rcyBsaWtlIGFuIElFOSBzcGVjaWZpYyBidWcuCi0gICAgICAgICAgICAg
IHZhciBwcmV2ZW50RGVmYXVsdExpc3RlbmVyID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAg
ICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdAotICAgICAgICAgICAgICAgICAgPyBldmVudC5w
cmV2ZW50RGVmYXVsdCgpCi0gICAgICAgICAgICAgICAgICA6IGV2ZW50LnJldHVyblZhbHVlID0g
ZmFsc2U7IC8vIElFCi0gICAgICAgICAgICAgIH07Ci0KLSAgICAgICAgICAgICAgYWRkRXZlbnRM
aXN0ZW5lckZuKGZvcm1FbGVtZW50WzBdLCAnc3VibWl0JywgcHJldmVudERlZmF1bHRMaXN0ZW5l
cik7Ci0KLSAgICAgICAgICAgICAgLy8gdW5yZWdpc3RlciB0aGUgcHJldmVudERlZmF1bHQgbGlz
dGVuZXIgc28gdGhhdCB3ZSBkb24ndCBub3QgbGVhayBtZW1vcnkgYnV0IGluIGEKLSAgICAgICAg
ICAgICAgLy8gd2F5IHRoYXQgd2lsbCBhY2hpZXZlIHRoZSBwcmV2ZW50aW9uIG9mIHRoZSBkZWZh
dWx0IGFjdGlvbi4KLSAgICAgICAgICAgICAgZm9ybUVsZW1lbnQuYmluZCgnJGRlc3Ryb3knLCBm
dW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpIHsKLSAgICAg
ICAgICAgICAgICAgIHJlbW92ZUV2ZW50TGlzdGVuZXJGbihmb3JtRWxlbWVudFswXSwgJ3N1Ym1p
dCcsIHByZXZlbnREZWZhdWx0TGlzdGVuZXIpOwotICAgICAgICAgICAgICAgIH0sIDAsIGZhbHNl
KTsKLSAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHZhciBw
YXJlbnRGb3JtQ3RybCA9IGZvcm1FbGVtZW50LnBhcmVudCgpLmNvbnRyb2xsZXIoJ2Zvcm0nKSwK
LSAgICAgICAgICAgICAgICBhbGlhcyA9IGF0dHIubmFtZSB8fCBhdHRyLm5nRm9ybTsKLQotICAg
ICAgICAgICAgaWYgKGFsaWFzKSB7Ci0gICAgICAgICAgICAgIHNjb3BlW2FsaWFzXSA9IGNvbnRy
b2xsZXI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAocGFyZW50Rm9ybUN0cmwpIHsK
LSAgICAgICAgICAgICAgZm9ybUVsZW1lbnQuYmluZCgnJGRlc3Ryb3knLCBmdW5jdGlvbigpIHsK
LSAgICAgICAgICAgICAgICBwYXJlbnRGb3JtQ3RybC4kcmVtb3ZlQ29udHJvbChjb250cm9sbGVy
KTsKLSAgICAgICAgICAgICAgICBpZiAoYWxpYXMpIHsKLSAgICAgICAgICAgICAgICAgIHNjb3Bl
W2FsaWFzXSA9IHVuZGVmaW5lZDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ZXh0ZW5kKGNvbnRyb2xsZXIsIG51bGxGb3JtQ3RybCk7IC8vc3RvcCBwcm9wYWdhdGluZyBjaGls
ZCBkZXN0cnVjdGlvbiBoYW5kbGVycyB1cHdhcmRzCi0gICAgICAgICAgICAgIH0pOwotICAgICAg
ICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgfTsKLSAgICAgIH0KLSAgICB9OwotCi0gICAg
cmV0dXJuIGlzTmdGb3JtID8gZXh0ZW5kKGNvcHkoZm9ybURpcmVjdGl2ZSksIHtyZXN0cmljdDog
J0VBQyd9KSA6IGZvcm1EaXJlY3RpdmU7Ci0gIH1dOwotfTsKLQotdmFyIGZvcm1EaXJlY3RpdmUg
PSBmb3JtRGlyZWN0aXZlRmFjdG9yeSgpOwotdmFyIG5nRm9ybURpcmVjdGl2ZSA9IGZvcm1EaXJl
Y3RpdmVGYWN0b3J5KHRydWUpOwotCi12YXIgVVJMX1JFR0VYUCA9IC9eKGZ0cHxodHRwfGh0dHBz
KTpcL1wvKFx3Kzp7MCwxfVx3KkApPyhcUyspKDpbMC05XSspPyhcL3xcLyhbXHcjITouPys9JiVA
IVwtXC9dKSk/JC87Ci12YXIgRU1BSUxfUkVHRVhQID0gL15bQS1aYS16MC05Ll8lKy1dK0BbQS1a
YS16MC05Li1dK1wuW0EtWmEtel17Miw0fSQvOwotdmFyIE5VTUJFUl9SRUdFWFAgPSAvXlxzKihc
LXxcKyk/KFxkK3woXGQqKFwuXGQqKSkpXHMqJC87Ci0KLXZhciBpbnB1dFR5cGUgPSB7Ci0KLSAg
LyoqCi0gICAqIEBuZ2RvYyBpbnB1dFR5cGUKLSAgICogQG5hbWUgbmcuZGlyZWN0aXZlOmlucHV0
LnRleHQKLSAgICoKLSAgICogQGRlc2NyaXB0aW9uCi0gICAqIFN0YW5kYXJkIEhUTUwgdGV4dCBp
bnB1dCB3aXRoIGFuZ3VsYXIgZGF0YSBiaW5kaW5nLgotICAgKgotICAgKiBAcGFyYW0ge3N0cmlu
Z30gbmdNb2RlbCBBc3NpZ25hYmxlIGFuZ3VsYXIgZXhwcmVzc2lvbiB0byBkYXRhLWJpbmQgdG8u
Ci0gICAqIEBwYXJhbSB7c3RyaW5nPX0gbmFtZSBQcm9wZXJ0eSBuYW1lIG9mIHRoZSBmb3JtIHVu
ZGVyIHdoaWNoIHRoZSBjb250cm9sIGlzIHB1Ymxpc2hlZC4KLSAgICogQHBhcmFtIHtzdHJpbmc9
fSByZXF1aXJlZCBBZGRzIGByZXF1aXJlZGAgdmFsaWRhdGlvbiBlcnJvciBrZXkgaWYgdGhlIHZh
bHVlIGlzIG5vdCBlbnRlcmVkLgotICAgKiBAcGFyYW0ge3N0cmluZz19IG5nUmVxdWlyZWQgQWRk
cyBgcmVxdWlyZWRgIGF0dHJpYnV0ZSBhbmQgYHJlcXVpcmVkYCB2YWxpZGF0aW9uIGNvbnN0cmFp
bnQgdG8KLSAgICogICAgdGhlIGVsZW1lbnQgd2hlbiB0aGUgbmdSZXF1aXJlZCBleHByZXNzaW9u
IGV2YWx1YXRlcyB0byB0cnVlLiBVc2UgYG5nUmVxdWlyZWRgIGluc3RlYWQgb2YKLSAgICogICAg
YHJlcXVpcmVkYCB3aGVuIHlvdSB3YW50IHRvIGRhdGEtYmluZCB0byB0aGUgYHJlcXVpcmVkYCBh
dHRyaWJ1dGUuCi0gICAqIEBwYXJhbSB7bnVtYmVyPX0gbmdNaW5sZW5ndGggU2V0cyBgbWlubGVu
Z3RoYCB2YWxpZGF0aW9uIGVycm9yIGtleSBpZiB0aGUgdmFsdWUgaXMgc2hvcnRlciB0aGFuCi0g
ICAqICAgIG1pbmxlbmd0aC4KLSAgICogQHBhcmFtIHtudW1iZXI9fSBuZ01heGxlbmd0aCBTZXRz
IGBtYXhsZW5ndGhgIHZhbGlkYXRpb24gZXJyb3Iga2V5IGlmIHRoZSB2YWx1ZSBpcyBsb25nZXIg
dGhhbgotICAgKiAgICBtYXhsZW5ndGguCi0gICAqIEBwYXJhbSB7c3RyaW5nPX0gbmdQYXR0ZXJu
IFNldHMgYHBhdHRlcm5gIHZhbGlkYXRpb24gZXJyb3Iga2V5IGlmIHRoZSB2YWx1ZSBkb2VzIG5v
dCBtYXRjaCB0aGUKLSAgICogICAgUmVnRXhwIHBhdHRlcm4gZXhwcmVzc2lvbi4gRXhwZWN0ZWQg
dmFsdWUgaXMgYC9yZWdleHAvYCBmb3IgaW5saW5lIHBhdHRlcm5zIG9yIGByZWdleHBgIGZvcgot
ICAgKiAgICBwYXR0ZXJucyBkZWZpbmVkIGFzIHNjb3BlIGV4cHJlc3Npb25zLgotICAgKiBAcGFy
YW0ge3N0cmluZz19IG5nQ2hhbmdlIEFuZ3VsYXIgZXhwcmVzc2lvbiB0byBiZSBleGVjdXRlZCB3
aGVuIGlucHV0IGNoYW5nZXMgZHVlIHRvIHVzZXIKLSAgICogICAgaW50ZXJhY3Rpb24gd2l0aCB0
aGUgaW5wdXQgZWxlbWVudC4KLSAgICoKLSAgICogQGV4YW1wbGUKLSAgICAgIDxkb2M6ZXhhbXBs
ZT4KLSAgICAgICAgPGRvYzpzb3VyY2U+Ci0gICAgICAgICA8c2NyaXB0PgotICAgICAgICAgICBm
dW5jdGlvbiBDdHJsKCRzY29wZSkgewotICAgICAgICAgICAgICRzY29wZS50ZXh0ID0gJ2d1ZXN0
JzsKLSAgICAgICAgICAgICAkc2NvcGUud29yZCA9IC9eXHcqJC87Ci0gICAgICAgICAgIH0KLSAg
ICAgICAgIDwvc2NyaXB0PgotICAgICAgICAgPGZvcm0gbmFtZT0ibXlGb3JtIiBuZy1jb250cm9s
bGVyPSJDdHJsIj4KLSAgICAgICAgICAgU2luZ2xlIHdvcmQ6IDxpbnB1dCB0eXBlPSJ0ZXh0IiBu
YW1lPSJpbnB1dCIgbmctbW9kZWw9InRleHQiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbmctcGF0dGVybj0id29yZCIgcmVxdWlyZWQ+Ci0gICAgICAgICAgIDxzcGFuIGNsYXNzPSJl
cnJvciIgbmctc2hvdz0ibXlGb3JtLmlucHV0LiRlcnJvci5yZXF1aXJlZCI+Ci0gICAgICAgICAg
ICAgUmVxdWlyZWQhPC9zcGFuPgotICAgICAgICAgICA8c3BhbiBjbGFzcz0iZXJyb3IiIG5nLXNo
b3c9Im15Rm9ybS5pbnB1dC4kZXJyb3IucGF0dGVybiI+Ci0gICAgICAgICAgICAgU2luZ2xlIHdv
cmQgb25seSE8L3NwYW4+Ci0KLSAgICAgICAgICAgPHR0PnRleHQgPSB7e3RleHR9fTwvdHQ+PGJy
Lz4KLSAgICAgICAgICAgPHR0Pm15Rm9ybS5pbnB1dC4kdmFsaWQgPSB7e215Rm9ybS5pbnB1dC4k
dmFsaWR9fTwvdHQ+PGJyLz4KLSAgICAgICAgICAgPHR0Pm15Rm9ybS5pbnB1dC4kZXJyb3IgPSB7
e215Rm9ybS5pbnB1dC4kZXJyb3J9fTwvdHQ+PGJyLz4KLSAgICAgICAgICAgPHR0Pm15Rm9ybS4k
dmFsaWQgPSB7e215Rm9ybS4kdmFsaWR9fTwvdHQ+PGJyLz4KLSAgICAgICAgICAgPHR0Pm15Rm9y
bS4kZXJyb3IucmVxdWlyZWQgPSB7eyEhbXlGb3JtLiRlcnJvci5yZXF1aXJlZH19PC90dD48YnIv
PgotICAgICAgICAgIDwvZm9ybT4KLSAgICAgICAgPC9kb2M6c291cmNlPgotICAgICAgICA8ZG9j
OnNjZW5hcmlvPgotICAgICAgICAgIGl0KCdzaG91bGQgaW5pdGlhbGl6ZSB0byBtb2RlbCcsIGZ1
bmN0aW9uKCkgewotICAgICAgICAgICAgZXhwZWN0KGJpbmRpbmcoJ3RleHQnKSkudG9FcXVhbCgn
Z3Vlc3QnKTsKLSAgICAgICAgICAgIGV4cGVjdChiaW5kaW5nKCdteUZvcm0uaW5wdXQuJHZhbGlk
JykpLnRvRXF1YWwoJ3RydWUnKTsKLSAgICAgICAgICB9KTsKLQotICAgICAgICAgIGl0KCdzaG91
bGQgYmUgaW52YWxpZCBpZiBlbXB0eScsIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgaW5wdXQo
J3RleHQnKS5lbnRlcignJyk7Ci0gICAgICAgICAgICBleHBlY3QoYmluZGluZygndGV4dCcpKS50
b0VxdWFsKCcnKTsKLSAgICAgICAgICAgIGV4cGVjdChiaW5kaW5nKCdteUZvcm0uaW5wdXQuJHZh
bGlkJykpLnRvRXF1YWwoJ2ZhbHNlJyk7Ci0gICAgICAgICAgfSk7Ci0KLSAgICAgICAgICBpdCgn
c2hvdWxkIGJlIGludmFsaWQgaWYgbXVsdGkgd29yZCcsIGZ1bmN0aW9uKCkgewotICAgICAgICAg
ICAgaW5wdXQoJ3RleHQnKS5lbnRlcignaGVsbG8gd29ybGQnKTsKLSAgICAgICAgICAgIGV4cGVj
dChiaW5kaW5nKCdteUZvcm0uaW5wdXQuJHZhbGlkJykpLnRvRXF1YWwoJ2ZhbHNlJyk7Ci0gICAg
ICAgICAgfSk7Ci0gICAgICAgIDwvZG9jOnNjZW5hcmlvPgotICAgICAgPC9kb2M6ZXhhbXBsZT4K
LSAgICovCi0gICd0ZXh0JzogdGV4dElucHV0VHlwZSwKLQotCi0gIC8qKgotICAgKiBAbmdkb2Mg
aW5wdXRUeXBlCi0gICAqIEBuYW1lIG5nLmRpcmVjdGl2ZTppbnB1dC5udW1iZXIKLSAgICoKLSAg
ICogQGRlc2NyaXB0aW9uCi0gICAqIFRleHQgaW5wdXQgd2l0aCBudW1iZXIgdmFsaWRhdGlvbiBh
bmQgdHJhbnNmb3JtYXRpb24uIFNldHMgdGhlIGBudW1iZXJgIHZhbGlkYXRpb24KLSAgICogZXJy
b3IgaWYgbm90IGEgdmFsaWQgbnVtYmVyLgotICAgKgotICAgKiBAcGFyYW0ge3N0cmluZ30gbmdN
b2RlbCBBc3NpZ25hYmxlIGFuZ3VsYXIgZXhwcmVzc2lvbiB0byBkYXRhLWJpbmQgdG8uCi0gICAq
IEBwYXJhbSB7c3RyaW5nPX0gbmFtZSBQcm9wZXJ0eSBuYW1lIG9mIHRoZSBmb3JtIHVuZGVyIHdo
aWNoIHRoZSBjb250cm9sIGlzIHB1Ymxpc2hlZC4KLSAgICogQHBhcmFtIHtzdHJpbmc9fSBtaW4g
U2V0cyB0aGUgYG1pbmAgdmFsaWRhdGlvbiBlcnJvciBrZXkgaWYgdGhlIHZhbHVlIGVudGVyZWQg
aXMgbGVzcyB0aGFuIGBtaW5gLgotICAgKiBAcGFyYW0ge3N0cmluZz19IG1heCBTZXRzIHRoZSBg
bWF4YCB2YWxpZGF0aW9uIGVycm9yIGtleSBpZiB0aGUgdmFsdWUgZW50ZXJlZCBpcyBncmVhdGVy
IHRoYW4gYG1heGAuCi0gICAqIEBwYXJhbSB7c3RyaW5nPX0gcmVxdWlyZWQgU2V0cyBgcmVxdWly
ZWRgIHZhbGlkYXRpb24gZXJyb3Iga2V5IGlmIHRoZSB2YWx1ZSBpcyBub3QgZW50ZXJlZC4KLSAg
ICogQHBhcmFtIHtzdHJpbmc9fSBuZ1JlcXVpcmVkIEFkZHMgYHJlcXVpcmVkYCBhdHRyaWJ1dGUg
YW5kIGByZXF1aXJlZGAgdmFsaWRhdGlvbiBjb25zdHJhaW50IHRvCi0gICAqICAgIHRoZSBlbGVt
ZW50IHdoZW4gdGhlIG5nUmVxdWlyZWQgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gdHJ1ZS4gVXNl
IGBuZ1JlcXVpcmVkYCBpbnN0ZWFkIG9mCi0gICAqICAgIGByZXF1aXJlZGAgd2hlbiB5b3Ugd2Fu
dCB0byBkYXRhLWJpbmQgdG8gdGhlIGByZXF1aXJlZGAgYXR0cmlidXRlLgotICAgKiBAcGFyYW0g
e251bWJlcj19IG5nTWlubGVuZ3RoIFNldHMgYG1pbmxlbmd0aGAgdmFsaWRhdGlvbiBlcnJvciBr
ZXkgaWYgdGhlIHZhbHVlIGlzIHNob3J0ZXIgdGhhbgotICAgKiAgICBtaW5sZW5ndGguCi0gICAq
IEBwYXJhbSB7bnVtYmVyPX0gbmdNYXhsZW5ndGggU2V0cyBgbWF4bGVuZ3RoYCB2YWxpZGF0aW9u
IGVycm9yIGtleSBpZiB0aGUgdmFsdWUgaXMgbG9uZ2VyIHRoYW4KLSAgICogICAgbWF4bGVuZ3Ro
LgotICAgKiBAcGFyYW0ge3N0cmluZz19IG5nUGF0dGVybiBTZXRzIGBwYXR0ZXJuYCB2YWxpZGF0
aW9uIGVycm9yIGtleSBpZiB0aGUgdmFsdWUgZG9lcyBub3QgbWF0Y2ggdGhlCi0gICAqICAgIFJl
Z0V4cCBwYXR0ZXJuIGV4cHJlc3Npb24uIEV4cGVjdGVkIHZhbHVlIGlzIGAvcmVnZXhwL2AgZm9y
IGlubGluZSBwYXR0ZXJucyBvciBgcmVnZXhwYCBmb3IKLSAgICogICAgcGF0dGVybnMgZGVmaW5l
ZCBhcyBzY29wZSBleHByZXNzaW9ucy4KLSAgICogQHBhcmFtIHtzdHJpbmc9fSBuZ0NoYW5nZSBB
bmd1bGFyIGV4cHJlc3Npb24gdG8gYmUgZXhlY3V0ZWQgd2hlbiBpbnB1dCBjaGFuZ2VzIGR1ZSB0
byB1c2VyCi0gICAqICAgIGludGVyYWN0aW9uIHdpdGggdGhlIGlucHV0IGVsZW1lbnQuCi0gICAq
Ci0gICAqIEBleGFtcGxlCi0gICAgICA8ZG9jOmV4YW1wbGU+Ci0gICAgICAgIDxkb2M6c291cmNl
PgotICAgICAgICAgPHNjcmlwdD4KLSAgICAgICAgICAgZnVuY3Rpb24gQ3RybCgkc2NvcGUpIHsK
LSAgICAgICAgICAgICAkc2NvcGUudmFsdWUgPSAxMjsKLSAgICAgICAgICAgfQotICAgICAgICAg
PC9zY3JpcHQ+Ci0gICAgICAgICA8Zm9ybSBuYW1lPSJteUZvcm0iIG5nLWNvbnRyb2xsZXI9IkN0
cmwiPgotICAgICAgICAgICBOdW1iZXI6IDxpbnB1dCB0eXBlPSJudW1iZXIiIG5hbWU9ImlucHV0
IiBuZy1tb2RlbD0idmFsdWUiCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG1pbj0iMCIgbWF4
PSI5OSIgcmVxdWlyZWQ+Ci0gICAgICAgICAgIDxzcGFuIGNsYXNzPSJlcnJvciIgbmctc2hvdz0i
bXlGb3JtLmxpc3QuJGVycm9yLnJlcXVpcmVkIj4KLSAgICAgICAgICAgICBSZXF1aXJlZCE8L3Nw
YW4+Ci0gICAgICAgICAgIDxzcGFuIGNsYXNzPSJlcnJvciIgbmctc2hvdz0ibXlGb3JtLmxpc3Qu
JGVycm9yLm51bWJlciI+Ci0gICAgICAgICAgICAgTm90IHZhbGlkIG51bWJlciE8L3NwYW4+Ci0g
ICAgICAgICAgIDx0dD52YWx1ZSA9IHt7dmFsdWV9fTwvdHQ+PGJyLz4KLSAgICAgICAgICAgPHR0
Pm15Rm9ybS5pbnB1dC4kdmFsaWQgPSB7e215Rm9ybS5pbnB1dC4kdmFsaWR9fTwvdHQ+PGJyLz4K
LSAgICAgICAgICAgPHR0Pm15Rm9ybS5pbnB1dC4kZXJyb3IgPSB7e215Rm9ybS5pbnB1dC4kZXJy
b3J9fTwvdHQ+PGJyLz4KLSAgICAgICAgICAgPHR0Pm15Rm9ybS4kdmFsaWQgPSB7e215Rm9ybS4k
dmFsaWR9fTwvdHQ+PGJyLz4KLSAgICAgICAgICAgPHR0Pm15Rm9ybS4kZXJyb3IucmVxdWlyZWQg
PSB7eyEhbXlGb3JtLiRlcnJvci5yZXF1aXJlZH19PC90dD48YnIvPgotICAgICAgICAgIDwvZm9y
bT4KLSAgICAgICAgPC9kb2M6c291cmNlPgotICAgICAgICA8ZG9jOnNjZW5hcmlvPgotICAgICAg
ICAgIGl0KCdzaG91bGQgaW5pdGlhbGl6ZSB0byBtb2RlbCcsIGZ1bmN0aW9uKCkgewotICAgICAg
ICAgICBleHBlY3QoYmluZGluZygndmFsdWUnKSkudG9FcXVhbCgnMTInKTsKLSAgICAgICAgICAg
ZXhwZWN0KGJpbmRpbmcoJ215Rm9ybS5pbnB1dC4kdmFsaWQnKSkudG9FcXVhbCgndHJ1ZScpOwot
ICAgICAgICAgIH0pOwotCi0gICAgICAgICAgaXQoJ3Nob3VsZCBiZSBpbnZhbGlkIGlmIGVtcHR5
JywgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgIGlucHV0KCd2YWx1ZScpLmVudGVyKCcnKTsKLSAg
ICAgICAgICAgZXhwZWN0KGJpbmRpbmcoJ3ZhbHVlJykpLnRvRXF1YWwoJycpOwotICAgICAgICAg
ICBleHBlY3QoYmluZGluZygnbXlGb3JtLmlucHV0LiR2YWxpZCcpKS50b0VxdWFsKCdmYWxzZScp
OwotICAgICAgICAgIH0pOwotCi0gICAgICAgICAgaXQoJ3Nob3VsZCBiZSBpbnZhbGlkIGlmIG92
ZXIgbWF4JywgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgIGlucHV0KCd2YWx1ZScpLmVudGVyKCcx
MjMnKTsKLSAgICAgICAgICAgZXhwZWN0KGJpbmRpbmcoJ3ZhbHVlJykpLnRvRXF1YWwoJycpOwot
ICAgICAgICAgICBleHBlY3QoYmluZGluZygnbXlGb3JtLmlucHV0LiR2YWxpZCcpKS50b0VxdWFs
KCdmYWxzZScpOwotICAgICAgICAgIH0pOwotICAgICAgICA8L2RvYzpzY2VuYXJpbz4KLSAgICAg
IDwvZG9jOmV4YW1wbGU+Ci0gICAqLwotICAnbnVtYmVyJzogbnVtYmVySW5wdXRUeXBlLAotCi0K
LSAgLyoqCi0gICAqIEBuZ2RvYyBpbnB1dFR5cGUKLSAgICogQG5hbWUgbmcuZGlyZWN0aXZlOmlu
cHV0LnVybAotICAgKgotICAgKiBAZGVzY3JpcHRpb24KLSAgICogVGV4dCBpbnB1dCB3aXRoIFVS
TCB2YWxpZGF0aW9uLiBTZXRzIHRoZSBgdXJsYCB2YWxpZGF0aW9uIGVycm9yIGtleSBpZiB0aGUg
Y29udGVudCBpcyBub3QgYQotICAgKiB2YWxpZCBVUkwuCi0gICAqCi0gICAqIEBwYXJhbSB7c3Ry
aW5nfSBuZ01vZGVsIEFzc2lnbmFibGUgYW5ndWxhciBleHByZXNzaW9uIHRvIGRhdGEtYmluZCB0
by4KLSAgICogQHBhcmFtIHtzdHJpbmc9fSBuYW1lIFByb3BlcnR5IG5hbWUgb2YgdGhlIGZvcm0g
dW5kZXIgd2hpY2ggdGhlIGNvbnRyb2wgaXMgcHVibGlzaGVkLgotICAgKiBAcGFyYW0ge3N0cmlu
Zz19IHJlcXVpcmVkIFNldHMgYHJlcXVpcmVkYCB2YWxpZGF0aW9uIGVycm9yIGtleSBpZiB0aGUg
dmFsdWUgaXMgbm90IGVudGVyZWQuCi0gICAqIEBwYXJhbSB7c3RyaW5nPX0gbmdSZXF1aXJlZCBB
ZGRzIGByZXF1aXJlZGAgYXR0cmlidXRlIGFuZCBgcmVxdWlyZWRgIHZhbGlkYXRpb24gY29uc3Ry
YWludCB0bwotICAgKiAgICB0aGUgZWxlbWVudCB3aGVuIHRoZSBuZ1JlcXVpcmVkIGV4cHJlc3Np
b24gZXZhbHVhdGVzIHRvIHRydWUuIFVzZSBgbmdSZXF1aXJlZGAgaW5zdGVhZCBvZgotICAgKiAg
ICBgcmVxdWlyZWRgIHdoZW4geW91IHdhbnQgdG8gZGF0YS1iaW5kIHRvIHRoZSBgcmVxdWlyZWRg
IGF0dHJpYnV0ZS4KLSAgICogQHBhcmFtIHtudW1iZXI9fSBuZ01pbmxlbmd0aCBTZXRzIGBtaW5s
ZW5ndGhgIHZhbGlkYXRpb24gZXJyb3Iga2V5IGlmIHRoZSB2YWx1ZSBpcyBzaG9ydGVyIHRoYW4K
LSAgICogICAgbWlubGVuZ3RoLgotICAgKiBAcGFyYW0ge251bWJlcj19IG5nTWF4bGVuZ3RoIFNl
dHMgYG1heGxlbmd0aGAgdmFsaWRhdGlvbiBlcnJvciBrZXkgaWYgdGhlIHZhbHVlIGlzIGxvbmdl
ciB0aGFuCi0gICAqICAgIG1heGxlbmd0aC4KLSAgICogQHBhcmFtIHtzdHJpbmc9fSBuZ1BhdHRl
cm4gU2V0cyBgcGF0dGVybmAgdmFsaWRhdGlvbiBlcnJvciBrZXkgaWYgdGhlIHZhbHVlIGRvZXMg
bm90IG1hdGNoIHRoZQotICAgKiAgICBSZWdFeHAgcGF0dGVybiBleHByZXNzaW9uLiBFeHBlY3Rl
ZCB2YWx1ZSBpcyBgL3JlZ2V4cC9gIGZvciBpbmxpbmUgcGF0dGVybnMgb3IgYHJlZ2V4cGAgZm9y
Ci0gICAqICAgIHBhdHRlcm5zIGRlZmluZWQgYXMgc2NvcGUgZXhwcmVzc2lvbnMuCi0gICAqIEBw
YXJhbSB7c3RyaW5nPX0gbmdDaGFuZ2UgQW5ndWxhciBleHByZXNzaW9uIHRvIGJlIGV4ZWN1dGVk
IHdoZW4gaW5wdXQgY2hhbmdlcyBkdWUgdG8gdXNlcgotICAgKiAgICBpbnRlcmFjdGlvbiB3aXRo
IHRoZSBpbnB1dCBlbGVtZW50LgotICAgKgotICAgKiBAZXhhbXBsZQotICAgICAgPGRvYzpleGFt
cGxlPgotICAgICAgICA8ZG9jOnNvdXJjZT4KLSAgICAgICAgIDxzY3JpcHQ+Ci0gICAgICAgICAg
IGZ1bmN0aW9uIEN0cmwoJHNjb3BlKSB7Ci0gICAgICAgICAgICAgJHNjb3BlLnRleHQgPSAnaHR0
cDovL2dvb2dsZS5jb20nOwotICAgICAgICAgICB9Ci0gICAgICAgICA8L3NjcmlwdD4KLSAgICAg
ICAgIDxmb3JtIG5hbWU9Im15Rm9ybSIgbmctY29udHJvbGxlcj0iQ3RybCI+Ci0gICAgICAgICAg
IFVSTDogPGlucHV0IHR5cGU9InVybCIgbmFtZT0iaW5wdXQiIG5nLW1vZGVsPSJ0ZXh0IiByZXF1
aXJlZD4KLSAgICAgICAgICAgPHNwYW4gY2xhc3M9ImVycm9yIiBuZy1zaG93PSJteUZvcm0uaW5w
dXQuJGVycm9yLnJlcXVpcmVkIj4KLSAgICAgICAgICAgICBSZXF1aXJlZCE8L3NwYW4+Ci0gICAg
ICAgICAgIDxzcGFuIGNsYXNzPSJlcnJvciIgbmctc2hvdz0ibXlGb3JtLmlucHV0LiRlcnJvci51
cmwiPgotICAgICAgICAgICAgIE5vdCB2YWxpZCB1cmwhPC9zcGFuPgotICAgICAgICAgICA8dHQ+
dGV4dCA9IHt7dGV4dH19PC90dD48YnIvPgotICAgICAgICAgICA8dHQ+bXlGb3JtLmlucHV0LiR2
YWxpZCA9IHt7bXlGb3JtLmlucHV0LiR2YWxpZH19PC90dD48YnIvPgotICAgICAgICAgICA8dHQ+
bXlGb3JtLmlucHV0LiRlcnJvciA9IHt7bXlGb3JtLmlucHV0LiRlcnJvcn19PC90dD48YnIvPgot
ICAgICAgICAgICA8dHQ+bXlGb3JtLiR2YWxpZCA9IHt7bXlGb3JtLiR2YWxpZH19PC90dD48YnIv
PgotICAgICAgICAgICA8dHQ+bXlGb3JtLiRlcnJvci5yZXF1aXJlZCA9IHt7ISFteUZvcm0uJGVy
cm9yLnJlcXVpcmVkfX08L3R0Pjxici8+Ci0gICAgICAgICAgIDx0dD5teUZvcm0uJGVycm9yLnVy
bCA9IHt7ISFteUZvcm0uJGVycm9yLnVybH19PC90dD48YnIvPgotICAgICAgICAgIDwvZm9ybT4K
LSAgICAgICAgPC9kb2M6c291cmNlPgotICAgICAgICA8ZG9jOnNjZW5hcmlvPgotICAgICAgICAg
IGl0KCdzaG91bGQgaW5pdGlhbGl6ZSB0byBtb2RlbCcsIGZ1bmN0aW9uKCkgewotICAgICAgICAg
ICAgZXhwZWN0KGJpbmRpbmcoJ3RleHQnKSkudG9FcXVhbCgnaHR0cDovL2dvb2dsZS5jb20nKTsK
LSAgICAgICAgICAgIGV4cGVjdChiaW5kaW5nKCdteUZvcm0uaW5wdXQuJHZhbGlkJykpLnRvRXF1
YWwoJ3RydWUnKTsKLSAgICAgICAgICB9KTsKLQotICAgICAgICAgIGl0KCdzaG91bGQgYmUgaW52
YWxpZCBpZiBlbXB0eScsIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgaW5wdXQoJ3RleHQnKS5l
bnRlcignJyk7Ci0gICAgICAgICAgICBleHBlY3QoYmluZGluZygndGV4dCcpKS50b0VxdWFsKCcn
KTsKLSAgICAgICAgICAgIGV4cGVjdChiaW5kaW5nKCdteUZvcm0uaW5wdXQuJHZhbGlkJykpLnRv
RXF1YWwoJ2ZhbHNlJyk7Ci0gICAgICAgICAgfSk7Ci0KLSAgICAgICAgICBpdCgnc2hvdWxkIGJl
IGludmFsaWQgaWYgbm90IHVybCcsIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgaW5wdXQoJ3Rl
eHQnKS5lbnRlcigneHh4Jyk7Ci0gICAgICAgICAgICBleHBlY3QoYmluZGluZygnbXlGb3JtLmlu
cHV0LiR2YWxpZCcpKS50b0VxdWFsKCdmYWxzZScpOwotICAgICAgICAgIH0pOwotICAgICAgICA8
L2RvYzpzY2VuYXJpbz4KLSAgICAgIDwvZG9jOmV4YW1wbGU+Ci0gICAqLwotICAndXJsJzogdXJs
SW5wdXRUeXBlLAotCi0KLSAgLyoqCi0gICAqIEBuZ2RvYyBpbnB1dFR5cGUKLSAgICogQG5hbWUg
bmcuZGlyZWN0aXZlOmlucHV0LmVtYWlsCi0gICAqCi0gICAqIEBkZXNjcmlwdGlvbgotICAgKiBU
ZXh0IGlucHV0IHdpdGggZW1haWwgdmFsaWRhdGlvbi4gU2V0cyB0aGUgYGVtYWlsYCB2YWxpZGF0
aW9uIGVycm9yIGtleSBpZiBub3QgYSB2YWxpZCBlbWFpbAotICAgKiBhZGRyZXNzLgotICAgKgot
ICAgKiBAcGFyYW0ge3N0cmluZ30gbmdNb2RlbCBBc3NpZ25hYmxlIGFuZ3VsYXIgZXhwcmVzc2lv
biB0byBkYXRhLWJpbmQgdG8uCi0gICAqIEBwYXJhbSB7c3RyaW5nPX0gbmFtZSBQcm9wZXJ0eSBu
YW1lIG9mIHRoZSBmb3JtIHVuZGVyIHdoaWNoIHRoZSBjb250cm9sIGlzIHB1Ymxpc2hlZC4KLSAg
ICogQHBhcmFtIHtzdHJpbmc9fSByZXF1aXJlZCBTZXRzIGByZXF1aXJlZGAgdmFsaWRhdGlvbiBl
cnJvciBrZXkgaWYgdGhlIHZhbHVlIGlzIG5vdCBlbnRlcmVkLgotICAgKiBAcGFyYW0ge3N0cmlu
Zz19IG5nUmVxdWlyZWQgQWRkcyBgcmVxdWlyZWRgIGF0dHJpYnV0ZSBhbmQgYHJlcXVpcmVkYCB2
YWxpZGF0aW9uIGNvbnN0cmFpbnQgdG8KLSAgICogICAgdGhlIGVsZW1lbnQgd2hlbiB0aGUgbmdS
ZXF1aXJlZCBleHByZXNzaW9uIGV2YWx1YXRlcyB0byB0cnVlLiBVc2UgYG5nUmVxdWlyZWRgIGlu
c3RlYWQgb2YKLSAgICogICAgYHJlcXVpcmVkYCB3aGVuIHlvdSB3YW50IHRvIGRhdGEtYmluZCB0
byB0aGUgYHJlcXVpcmVkYCBhdHRyaWJ1dGUuCi0gICAqIEBwYXJhbSB7bnVtYmVyPX0gbmdNaW5s
ZW5ndGggU2V0cyBgbWlubGVuZ3RoYCB2YWxpZGF0aW9uIGVycm9yIGtleSBpZiB0aGUgdmFsdWUg
aXMgc2hvcnRlciB0aGFuCi0gICAqICAgIG1pbmxlbmd0aC4KLSAgICogQHBhcmFtIHtudW1iZXI9
fSBuZ01heGxlbmd0aCBTZXRzIGBtYXhsZW5ndGhgIHZhbGlkYXRpb24gZXJyb3Iga2V5IGlmIHRo
ZSB2YWx1ZSBpcyBsb25nZXIgdGhhbgotICAgKiAgICBtYXhsZW5ndGguCi0gICAqIEBwYXJhbSB7
c3RyaW5nPX0gbmdQYXR0ZXJuIFNldHMgYHBhdHRlcm5gIHZhbGlkYXRpb24gZXJyb3Iga2V5IGlm
IHRoZSB2YWx1ZSBkb2VzIG5vdCBtYXRjaCB0aGUKLSAgICogICAgUmVnRXhwIHBhdHRlcm4gZXhw
cmVzc2lvbi4gRXhwZWN0ZWQgdmFsdWUgaXMgYC9yZWdleHAvYCBmb3IgaW5saW5lIHBhdHRlcm5z
IG9yIGByZWdleHBgIGZvcgotICAgKiAgICBwYXR0ZXJucyBkZWZpbmVkIGFzIHNjb3BlIGV4cHJl
c3Npb25zLgotICAgKgotICAgKiBAZXhhbXBsZQotICAgICAgPGRvYzpleGFtcGxlPgotICAgICAg
ICA8ZG9jOnNvdXJjZT4KLSAgICAgICAgIDxzY3JpcHQ+Ci0gICAgICAgICAgIGZ1bmN0aW9uIEN0
cmwoJHNjb3BlKSB7Ci0gICAgICAgICAgICAgJHNjb3BlLnRleHQgPSAnbWVAZXhhbXBsZS5jb20n
OwotICAgICAgICAgICB9Ci0gICAgICAgICA8L3NjcmlwdD4KLSAgICAgICAgICAgPGZvcm0gbmFt
ZT0ibXlGb3JtIiBuZy1jb250cm9sbGVyPSJDdHJsIj4KLSAgICAgICAgICAgICBFbWFpbDogPGlu
cHV0IHR5cGU9ImVtYWlsIiBuYW1lPSJpbnB1dCIgbmctbW9kZWw9InRleHQiIHJlcXVpcmVkPgot
ICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJlcnJvciIgbmctc2hvdz0ibXlGb3JtLmlucHV0LiRl
cnJvci5yZXF1aXJlZCI+Ci0gICAgICAgICAgICAgICBSZXF1aXJlZCE8L3NwYW4+Ci0gICAgICAg
ICAgICAgPHNwYW4gY2xhc3M9ImVycm9yIiBuZy1zaG93PSJteUZvcm0uaW5wdXQuJGVycm9yLmVt
YWlsIj4KLSAgICAgICAgICAgICAgIE5vdCB2YWxpZCBlbWFpbCE8L3NwYW4+Ci0gICAgICAgICAg
ICAgPHR0PnRleHQgPSB7e3RleHR9fTwvdHQ+PGJyLz4KLSAgICAgICAgICAgICA8dHQ+bXlGb3Jt
LmlucHV0LiR2YWxpZCA9IHt7bXlGb3JtLmlucHV0LiR2YWxpZH19PC90dD48YnIvPgotICAgICAg
ICAgICAgIDx0dD5teUZvcm0uaW5wdXQuJGVycm9yID0ge3tteUZvcm0uaW5wdXQuJGVycm9yfX08
L3R0Pjxici8+Ci0gICAgICAgICAgICAgPHR0Pm15Rm9ybS4kdmFsaWQgPSB7e215Rm9ybS4kdmFs
aWR9fTwvdHQ+PGJyLz4KLSAgICAgICAgICAgICA8dHQ+bXlGb3JtLiRlcnJvci5yZXF1aXJlZCA9
IHt7ISFteUZvcm0uJGVycm9yLnJlcXVpcmVkfX08L3R0Pjxici8+Ci0gICAgICAgICAgICAgPHR0
Pm15Rm9ybS4kZXJyb3IuZW1haWwgPSB7eyEhbXlGb3JtLiRlcnJvci5lbWFpbH19PC90dD48YnIv
PgotICAgICAgICAgICA8L2Zvcm0+Ci0gICAgICAgIDwvZG9jOnNvdXJjZT4KLSAgICAgICAgPGRv
YzpzY2VuYXJpbz4KLSAgICAgICAgICBpdCgnc2hvdWxkIGluaXRpYWxpemUgdG8gbW9kZWwnLCBm
dW5jdGlvbigpIHsKLSAgICAgICAgICAgIGV4cGVjdChiaW5kaW5nKCd0ZXh0JykpLnRvRXF1YWwo
J21lQGV4YW1wbGUuY29tJyk7Ci0gICAgICAgICAgICBleHBlY3QoYmluZGluZygnbXlGb3JtLmlu
cHV0LiR2YWxpZCcpKS50b0VxdWFsKCd0cnVlJyk7Ci0gICAgICAgICAgfSk7Ci0KLSAgICAgICAg
ICBpdCgnc2hvdWxkIGJlIGludmFsaWQgaWYgZW1wdHknLCBmdW5jdGlvbigpIHsKLSAgICAgICAg
ICAgIGlucHV0KCd0ZXh0JykuZW50ZXIoJycpOwotICAgICAgICAgICAgZXhwZWN0KGJpbmRpbmco
J3RleHQnKSkudG9FcXVhbCgnJyk7Ci0gICAgICAgICAgICBleHBlY3QoYmluZGluZygnbXlGb3Jt
LmlucHV0LiR2YWxpZCcpKS50b0VxdWFsKCdmYWxzZScpOwotICAgICAgICAgIH0pOwotCi0gICAg
ICAgICAgaXQoJ3Nob3VsZCBiZSBpbnZhbGlkIGlmIG5vdCBlbWFpbCcsIGZ1bmN0aW9uKCkgewot
ICAgICAgICAgICAgaW5wdXQoJ3RleHQnKS5lbnRlcigneHh4Jyk7Ci0gICAgICAgICAgICBleHBl
Y3QoYmluZGluZygnbXlGb3JtLmlucHV0LiR2YWxpZCcpKS50b0VxdWFsKCdmYWxzZScpOwotICAg
ICAgICAgIH0pOwotICAgICAgICA8L2RvYzpzY2VuYXJpbz4KLSAgICAgIDwvZG9jOmV4YW1wbGU+
Ci0gICAqLwotICAnZW1haWwnOiBlbWFpbElucHV0VHlwZSwKLQotCi0gIC8qKgotICAgKiBAbmdk
b2MgaW5wdXRUeXBlCi0gICAqIEBuYW1lIG5nLmRpcmVjdGl2ZTppbnB1dC5yYWRpbwotICAgKgot
ICAgKiBAZGVzY3JpcHRpb24KLSAgICogSFRNTCByYWRpbyBidXR0b24uCi0gICAqCi0gICAqIEBw
YXJhbSB7c3RyaW5nfSBuZ01vZGVsIEFzc2lnbmFibGUgYW5ndWxhciBleHByZXNzaW9uIHRvIGRh
dGEtYmluZCB0by4KLSAgICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlIFRoZSB2YWx1ZSB0byB3aGlj
aCB0aGUgZXhwcmVzc2lvbiBzaG91bGQgYmUgc2V0IHdoZW4gc2VsZWN0ZWQuCi0gICAqIEBwYXJh
bSB7c3RyaW5nPX0gbmFtZSBQcm9wZXJ0eSBuYW1lIG9mIHRoZSBmb3JtIHVuZGVyIHdoaWNoIHRo
ZSBjb250cm9sIGlzIHB1Ymxpc2hlZC4KLSAgICogQHBhcmFtIHtzdHJpbmc9fSBuZ0NoYW5nZSBB
bmd1bGFyIGV4cHJlc3Npb24gdG8gYmUgZXhlY3V0ZWQgd2hlbiBpbnB1dCBjaGFuZ2VzIGR1ZSB0
byB1c2VyCi0gICAqICAgIGludGVyYWN0aW9uIHdpdGggdGhlIGlucHV0IGVsZW1lbnQuCi0gICAq
Ci0gICAqIEBleGFtcGxlCi0gICAgICA8ZG9jOmV4YW1wbGU+Ci0gICAgICAgIDxkb2M6c291cmNl
PgotICAgICAgICAgPHNjcmlwdD4KLSAgICAgICAgICAgZnVuY3Rpb24gQ3RybCgkc2NvcGUpIHsK
LSAgICAgICAgICAgICAkc2NvcGUuY29sb3IgPSAnYmx1ZSc7Ci0gICAgICAgICAgIH0KLSAgICAg
ICAgIDwvc2NyaXB0PgotICAgICAgICAgPGZvcm0gbmFtZT0ibXlGb3JtIiBuZy1jb250cm9sbGVy
PSJDdHJsIj4KLSAgICAgICAgICAgPGlucHV0IHR5cGU9InJhZGlvIiBuZy1tb2RlbD0iY29sb3Ii
IHZhbHVlPSJyZWQiPiAgUmVkIDxici8+Ci0gICAgICAgICAgIDxpbnB1dCB0eXBlPSJyYWRpbyIg
bmctbW9kZWw9ImNvbG9yIiB2YWx1ZT0iZ3JlZW4iPiBHcmVlbiA8YnIvPgotICAgICAgICAgICA8
aW5wdXQgdHlwZT0icmFkaW8iIG5nLW1vZGVsPSJjb2xvciIgdmFsdWU9ImJsdWUiPiBCbHVlIDxi
ci8+Ci0gICAgICAgICAgIDx0dD5jb2xvciA9IHt7Y29sb3J9fTwvdHQ+PGJyLz4KLSAgICAgICAg
ICA8L2Zvcm0+Ci0gICAgICAgIDwvZG9jOnNvdXJjZT4KLSAgICAgICAgPGRvYzpzY2VuYXJpbz4K
LSAgICAgICAgICBpdCgnc2hvdWxkIGNoYW5nZSBzdGF0ZScsIGZ1bmN0aW9uKCkgewotICAgICAg
ICAgICAgZXhwZWN0KGJpbmRpbmcoJ2NvbG9yJykpLnRvRXF1YWwoJ2JsdWUnKTsKLQotICAgICAg
ICAgICAgaW5wdXQoJ2NvbG9yJykuc2VsZWN0KCdyZWQnKTsKLSAgICAgICAgICAgIGV4cGVjdChi
aW5kaW5nKCdjb2xvcicpKS50b0VxdWFsKCdyZWQnKTsKLSAgICAgICAgICB9KTsKLSAgICAgICAg
PC9kb2M6c2NlbmFyaW8+Ci0gICAgICA8L2RvYzpleGFtcGxlPgotICAgKi8KLSAgJ3JhZGlvJzog
cmFkaW9JbnB1dFR5cGUsCi0KLQotICAvKioKLSAgICogQG5nZG9jIGlucHV0VHlwZQotICAgKiBA
bmFtZSBuZy5kaXJlY3RpdmU6aW5wdXQuY2hlY2tib3gKLSAgICoKLSAgICogQGRlc2NyaXB0aW9u
Ci0gICAqIEhUTUwgY2hlY2tib3guCi0gICAqCi0gICAqIEBwYXJhbSB7c3RyaW5nfSBuZ01vZGVs
IEFzc2lnbmFibGUgYW5ndWxhciBleHByZXNzaW9uIHRvIGRhdGEtYmluZCB0by4KLSAgICogQHBh
cmFtIHtzdHJpbmc9fSBuYW1lIFByb3BlcnR5IG5hbWUgb2YgdGhlIGZvcm0gdW5kZXIgd2hpY2gg
dGhlIGNvbnRyb2wgaXMgcHVibGlzaGVkLgotICAgKiBAcGFyYW0ge3N0cmluZz19IG5nVHJ1ZVZh
bHVlIFRoZSB2YWx1ZSB0byB3aGljaCB0aGUgZXhwcmVzc2lvbiBzaG91bGQgYmUgc2V0IHdoZW4g
c2VsZWN0ZWQuCi0gICAqIEBwYXJhbSB7c3RyaW5nPX0gbmdGYWxzZVZhbHVlIFRoZSB2YWx1ZSB0
byB3aGljaCB0aGUgZXhwcmVzc2lvbiBzaG91bGQgYmUgc2V0IHdoZW4gbm90IHNlbGVjdGVkLgot
ICAgKiBAcGFyYW0ge3N0cmluZz19IG5nQ2hhbmdlIEFuZ3VsYXIgZXhwcmVzc2lvbiB0byBiZSBl
eGVjdXRlZCB3aGVuIGlucHV0IGNoYW5nZXMgZHVlIHRvIHVzZXIKLSAgICogICAgaW50ZXJhY3Rp
b24gd2l0aCB0aGUgaW5wdXQgZWxlbWVudC4KLSAgICoKLSAgICogQGV4YW1wbGUKLSAgICAgIDxk
b2M6ZXhhbXBsZT4KLSAgICAgICAgPGRvYzpzb3VyY2U+Ci0gICAgICAgICA8c2NyaXB0PgotICAg
ICAgICAgICBmdW5jdGlvbiBDdHJsKCRzY29wZSkgewotICAgICAgICAgICAgICRzY29wZS52YWx1
ZTEgPSB0cnVlOwotICAgICAgICAgICAgICRzY29wZS52YWx1ZTIgPSAnWUVTJwotICAgICAgICAg
ICB9Ci0gICAgICAgICA8L3NjcmlwdD4KLSAgICAgICAgIDxmb3JtIG5hbWU9Im15Rm9ybSIgbmct
Y29udHJvbGxlcj0iQ3RybCI+Ci0gICAgICAgICAgIFZhbHVlMTogPGlucHV0IHR5cGU9ImNoZWNr
Ym94IiBuZy1tb2RlbD0idmFsdWUxIj4gPGJyLz4KLSAgICAgICAgICAgVmFsdWUyOiA8aW5wdXQg
dHlwZT0iY2hlY2tib3giIG5nLW1vZGVsPSJ2YWx1ZTIiCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgIG5nLXRydWUtdmFsdWU9IllFUyIgbmctZmFsc2UtdmFsdWU9Ik5PIj4gPGJyLz4KLSAgICAg
ICAgICAgPHR0PnZhbHVlMSA9IHt7dmFsdWUxfX08L3R0Pjxici8+Ci0gICAgICAgICAgIDx0dD52
YWx1ZTIgPSB7e3ZhbHVlMn19PC90dD48YnIvPgotICAgICAgICAgIDwvZm9ybT4KLSAgICAgICAg
PC9kb2M6c291cmNlPgotICAgICAgICA8ZG9jOnNjZW5hcmlvPgotICAgICAgICAgIGl0KCdzaG91
bGQgY2hhbmdlIHN0YXRlJywgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBleHBlY3QoYmluZGlu
ZygndmFsdWUxJykpLnRvRXF1YWwoJ3RydWUnKTsKLSAgICAgICAgICAgIGV4cGVjdChiaW5kaW5n
KCd2YWx1ZTInKSkudG9FcXVhbCgnWUVTJyk7Ci0KLSAgICAgICAgICAgIGlucHV0KCd2YWx1ZTEn
KS5jaGVjaygpOwotICAgICAgICAgICAgaW5wdXQoJ3ZhbHVlMicpLmNoZWNrKCk7Ci0gICAgICAg
ICAgICBleHBlY3QoYmluZGluZygndmFsdWUxJykpLnRvRXF1YWwoJ2ZhbHNlJyk7Ci0gICAgICAg
ICAgICBleHBlY3QoYmluZGluZygndmFsdWUyJykpLnRvRXF1YWwoJ05PJyk7Ci0gICAgICAgICAg
fSk7Ci0gICAgICAgIDwvZG9jOnNjZW5hcmlvPgotICAgICAgPC9kb2M6ZXhhbXBsZT4KLSAgICov
Ci0gICdjaGVja2JveCc6IGNoZWNrYm94SW5wdXRUeXBlLAotCi0gICdoaWRkZW4nOiBub29wLAot
ICAnYnV0dG9uJzogbm9vcCwKLSAgJ3N1Ym1pdCc6IG5vb3AsCi0gICdyZXNldCc6IG5vb3AKLX07
Ci0KLQotZnVuY3Rpb24gaXNFbXB0eSh2YWx1ZSkgewotICByZXR1cm4gaXNVbmRlZmluZWQodmFs
dWUpIHx8IHZhbHVlID09PSAnJyB8fCB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSAhPT0gdmFsdWU7
Ci19Ci0KLQotZnVuY3Rpb24gdGV4dElucHV0VHlwZShzY29wZSwgZWxlbWVudCwgYXR0ciwgY3Ry
bCwgJHNuaWZmZXIsICRicm93c2VyKSB7Ci0KLSAgdmFyIGxpc3RlbmVyID0gZnVuY3Rpb24oKSB7
Ci0gICAgdmFyIHZhbHVlID0gdHJpbShlbGVtZW50LnZhbCgpKTsKLQotICAgIGlmIChjdHJsLiR2
aWV3VmFsdWUgIT09IHZhbHVlKSB7Ci0gICAgICBzY29wZS4kYXBwbHkoZnVuY3Rpb24oKSB7Ci0g
ICAgICAgIGN0cmwuJHNldFZpZXdWYWx1ZSh2YWx1ZSk7Ci0gICAgICB9KTsKLSAgICB9Ci0gIH07
Ci0KLSAgLy8gaWYgdGhlIGJyb3dzZXIgZG9lcyBzdXBwb3J0ICJpbnB1dCIgZXZlbnQsIHdlIGFy
ZSBmaW5lIC0gZXhjZXB0IG9uIElFOSB3aGljaCBkb2Vzbid0IGZpcmUgdGhlCi0gIC8vIGlucHV0
IGV2ZW50IG9uIGJhY2tzcGFjZSwgZGVsZXRlIG9yIGN1dAotICBpZiAoJHNuaWZmZXIuaGFzRXZl
bnQoJ2lucHV0JykpIHsKLSAgICBlbGVtZW50LmJpbmQoJ2lucHV0JywgbGlzdGVuZXIpOwotICB9
IGVsc2UgewotICAgIHZhciB0aW1lb3V0OwotCi0gICAgdmFyIGRlZmVyTGlzdGVuZXIgPSBmdW5j
dGlvbigpIHsKLSAgICAgIGlmICghdGltZW91dCkgewotICAgICAgICB0aW1lb3V0ID0gJGJyb3dz
ZXIuZGVmZXIoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgbGlzdGVuZXIoKTsKLSAgICAgICAgICB0
aW1lb3V0ID0gbnVsbDsKLSAgICAgICAgfSk7Ci0gICAgICB9Ci0gICAgfTsKLQotICAgIGVsZW1l
bnQuYmluZCgna2V5ZG93bicsIGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICB2YXIga2V5ID0gZXZl
bnQua2V5Q29kZTsKLQotICAgICAgLy8gaWdub3JlCi0gICAgICAvLyAgICBjb21tYW5kICAgICAg
ICAgICAgbW9kaWZpZXJzICAgICAgICAgICAgICAgICAgIGFycm93cwotICAgICAgaWYgKGtleSA9
PT0gOTEgfHwgKDE1IDwga2V5ICYmIGtleSA8IDE5KSB8fCAoMzcgPD0ga2V5ICYmIGtleSA8PSA0
MCkpIHJldHVybjsKLQotICAgICAgZGVmZXJMaXN0ZW5lcigpOwotICAgIH0pOwotCi0gICAgLy8g
aWYgdXNlciBwYXN0ZSBpbnRvIGlucHV0IHVzaW5nIG1vdXNlLCB3ZSBuZWVkICJjaGFuZ2UiIGV2
ZW50IHRvIGNhdGNoIGl0Ci0gICAgZWxlbWVudC5iaW5kKCdjaGFuZ2UnLCBsaXN0ZW5lcik7Ci0K
LSAgICAvLyBpZiB1c2VyIG1vZGlmaWVzIGlucHV0IHZhbHVlIHVzaW5nIGNvbnRleHQgbWVudSBp
biBJRSwgd2UgbmVlZCAicGFzdGUiIGFuZCAiY3V0IiBldmVudHMgdG8gY2F0Y2ggaXQKLSAgICBp
ZiAoJHNuaWZmZXIuaGFzRXZlbnQoJ3Bhc3RlJykpIHsKLSAgICAgIGVsZW1lbnQuYmluZCgncGFz
dGUgY3V0JywgZGVmZXJMaXN0ZW5lcik7Ci0gICAgfQotICB9Ci0KLQotICBjdHJsLiRyZW5kZXIg
PSBmdW5jdGlvbigpIHsKLSAgICBlbGVtZW50LnZhbChpc0VtcHR5KGN0cmwuJHZpZXdWYWx1ZSkg
PyAnJyA6IGN0cmwuJHZpZXdWYWx1ZSk7Ci0gIH07Ci0KLSAgLy8gcGF0dGVybiB2YWxpZGF0b3IK
LSAgdmFyIHBhdHRlcm4gPSBhdHRyLm5nUGF0dGVybiwKLSAgICAgIHBhdHRlcm5WYWxpZGF0b3I7
Ci0KLSAgdmFyIHZhbGlkYXRlID0gZnVuY3Rpb24ocmVnZXhwLCB2YWx1ZSkgewotICAgIGlmIChp
c0VtcHR5KHZhbHVlKSB8fCByZWdleHAudGVzdCh2YWx1ZSkpIHsKLSAgICAgIGN0cmwuJHNldFZh
bGlkaXR5KCdwYXR0ZXJuJywgdHJ1ZSk7Ci0gICAgICByZXR1cm4gdmFsdWU7Ci0gICAgfSBlbHNl
IHsKLSAgICAgIGN0cmwuJHNldFZhbGlkaXR5KCdwYXR0ZXJuJywgZmFsc2UpOwotICAgICAgcmV0
dXJuIHVuZGVmaW5lZDsKLSAgICB9Ci0gIH07Ci0KLSAgaWYgKHBhdHRlcm4pIHsKLSAgICBpZiAo
cGF0dGVybi5tYXRjaCgvXlwvKC4qKVwvJC8pKSB7Ci0gICAgICBwYXR0ZXJuID0gbmV3IFJlZ0V4
cChwYXR0ZXJuLnN1YnN0cigxLCBwYXR0ZXJuLmxlbmd0aCAtIDIpKTsKLSAgICAgIHBhdHRlcm5W
YWxpZGF0b3IgPSBmdW5jdGlvbih2YWx1ZSkgewotICAgICAgICByZXR1cm4gdmFsaWRhdGUocGF0
dGVybiwgdmFsdWUpCi0gICAgICB9OwotICAgIH0gZWxzZSB7Ci0gICAgICBwYXR0ZXJuVmFsaWRh
dG9yID0gZnVuY3Rpb24odmFsdWUpIHsKLSAgICAgICAgdmFyIHBhdHRlcm5PYmogPSBzY29wZS4k
ZXZhbChwYXR0ZXJuKTsKLQotICAgICAgICBpZiAoIXBhdHRlcm5PYmogfHwgIXBhdHRlcm5PYmou
dGVzdCkgewotICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgJyArIHBhdHRlcm4g
KyAnIHRvIGJlIGEgUmVnRXhwIGJ1dCB3YXMgJyArIHBhdHRlcm5PYmopOwotICAgICAgICB9Ci0g
ICAgICAgIHJldHVybiB2YWxpZGF0ZShwYXR0ZXJuT2JqLCB2YWx1ZSk7Ci0gICAgICB9OwotICAg
IH0KLQotICAgIGN0cmwuJGZvcm1hdHRlcnMucHVzaChwYXR0ZXJuVmFsaWRhdG9yKTsKLSAgICBj
dHJsLiRwYXJzZXJzLnB1c2gocGF0dGVyblZhbGlkYXRvcik7Ci0gIH0KLQotICAvLyBtaW4gbGVu
Z3RoIHZhbGlkYXRvcgotICBpZiAoYXR0ci5uZ01pbmxlbmd0aCkgewotICAgIHZhciBtaW5sZW5n
dGggPSBpbnQoYXR0ci5uZ01pbmxlbmd0aCk7Ci0gICAgdmFyIG1pbkxlbmd0aFZhbGlkYXRvciA9
IGZ1bmN0aW9uKHZhbHVlKSB7Ci0gICAgICBpZiAoIWlzRW1wdHkodmFsdWUpICYmIHZhbHVlLmxl
bmd0aCA8IG1pbmxlbmd0aCkgewotICAgICAgICBjdHJsLiRzZXRWYWxpZGl0eSgnbWlubGVuZ3Ro
JywgZmFsc2UpOwotICAgICAgICByZXR1cm4gdW5kZWZpbmVkOwotICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgY3RybC4kc2V0VmFsaWRpdHkoJ21pbmxlbmd0aCcsIHRydWUpOwotICAgICAgICByZXR1
cm4gdmFsdWU7Ci0gICAgICB9Ci0gICAgfTsKLQotICAgIGN0cmwuJHBhcnNlcnMucHVzaChtaW5M
ZW5ndGhWYWxpZGF0b3IpOwotICAgIGN0cmwuJGZvcm1hdHRlcnMucHVzaChtaW5MZW5ndGhWYWxp
ZGF0b3IpOwotICB9Ci0KLSAgLy8gbWF4IGxlbmd0aCB2YWxpZGF0b3IKLSAgaWYgKGF0dHIubmdN
YXhsZW5ndGgpIHsKLSAgICB2YXIgbWF4bGVuZ3RoID0gaW50KGF0dHIubmdNYXhsZW5ndGgpOwot
ICAgIHZhciBtYXhMZW5ndGhWYWxpZGF0b3IgPSBmdW5jdGlvbih2YWx1ZSkgewotICAgICAgaWYg
KCFpc0VtcHR5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPiBtYXhsZW5ndGgpIHsKLSAgICAgICAg
Y3RybC4kc2V0VmFsaWRpdHkoJ21heGxlbmd0aCcsIGZhbHNlKTsKLSAgICAgICAgcmV0dXJuIHVu
ZGVmaW5lZDsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIGN0cmwuJHNldFZhbGlkaXR5KCdtYXhs
ZW5ndGgnLCB0cnVlKTsKLSAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgICAgfQotICAgIH07Ci0K
LSAgICBjdHJsLiRwYXJzZXJzLnB1c2gobWF4TGVuZ3RoVmFsaWRhdG9yKTsKLSAgICBjdHJsLiRm
b3JtYXR0ZXJzLnB1c2gobWF4TGVuZ3RoVmFsaWRhdG9yKTsKLSAgfQotfQotCi1mdW5jdGlvbiBu
dW1iZXJJbnB1dFR5cGUoc2NvcGUsIGVsZW1lbnQsIGF0dHIsIGN0cmwsICRzbmlmZmVyLCAkYnJv
d3NlcikgewotICB0ZXh0SW5wdXRUeXBlKHNjb3BlLCBlbGVtZW50LCBhdHRyLCBjdHJsLCAkc25p
ZmZlciwgJGJyb3dzZXIpOwotCi0gIGN0cmwuJHBhcnNlcnMucHVzaChmdW5jdGlvbih2YWx1ZSkg
ewotICAgIHZhciBlbXB0eSA9IGlzRW1wdHkodmFsdWUpOwotICAgIGlmIChlbXB0eSB8fCBOVU1C
RVJfUkVHRVhQLnRlc3QodmFsdWUpKSB7Ci0gICAgICBjdHJsLiRzZXRWYWxpZGl0eSgnbnVtYmVy
JywgdHJ1ZSk7Ci0gICAgICByZXR1cm4gdmFsdWUgPT09ICcnID8gbnVsbCA6IChlbXB0eSA/IHZh
bHVlIDogcGFyc2VGbG9hdCh2YWx1ZSkpOwotICAgIH0gZWxzZSB7Ci0gICAgICBjdHJsLiRzZXRW
YWxpZGl0eSgnbnVtYmVyJywgZmFsc2UpOwotICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKLSAgICB9
Ci0gIH0pOwotCi0gIGN0cmwuJGZvcm1hdHRlcnMucHVzaChmdW5jdGlvbih2YWx1ZSkgewotICAg
IHJldHVybiBpc0VtcHR5KHZhbHVlKSA/ICcnIDogJycgKyB2YWx1ZTsKLSAgfSk7Ci0KLSAgaWYg
KGF0dHIubWluKSB7Ci0gICAgdmFyIG1pbiA9IHBhcnNlRmxvYXQoYXR0ci5taW4pOwotICAgIHZh
ciBtaW5WYWxpZGF0b3IgPSBmdW5jdGlvbih2YWx1ZSkgewotICAgICAgaWYgKCFpc0VtcHR5KHZh
bHVlKSAmJiB2YWx1ZSA8IG1pbikgewotICAgICAgICBjdHJsLiRzZXRWYWxpZGl0eSgnbWluJywg
ZmFsc2UpOwotICAgICAgICByZXR1cm4gdW5kZWZpbmVkOwotICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgY3RybC4kc2V0VmFsaWRpdHkoJ21pbicsIHRydWUpOwotICAgICAgICByZXR1cm4gdmFsdWU7
Ci0gICAgICB9Ci0gICAgfTsKLQotICAgIGN0cmwuJHBhcnNlcnMucHVzaChtaW5WYWxpZGF0b3Ip
OwotICAgIGN0cmwuJGZvcm1hdHRlcnMucHVzaChtaW5WYWxpZGF0b3IpOwotICB9Ci0KLSAgaWYg
KGF0dHIubWF4KSB7Ci0gICAgdmFyIG1heCA9IHBhcnNlRmxvYXQoYXR0ci5tYXgpOwotICAgIHZh
ciBtYXhWYWxpZGF0b3IgPSBmdW5jdGlvbih2YWx1ZSkgewotICAgICAgaWYgKCFpc0VtcHR5KHZh
bHVlKSAmJiB2YWx1ZSA+IG1heCkgewotICAgICAgICBjdHJsLiRzZXRWYWxpZGl0eSgnbWF4Jywg
ZmFsc2UpOwotICAgICAgICByZXR1cm4gdW5kZWZpbmVkOwotICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgY3RybC4kc2V0VmFsaWRpdHkoJ21heCcsIHRydWUpOwotICAgICAgICByZXR1cm4gdmFsdWU7
Ci0gICAgICB9Ci0gICAgfTsKLQotICAgIGN0cmwuJHBhcnNlcnMucHVzaChtYXhWYWxpZGF0b3Ip
OwotICAgIGN0cmwuJGZvcm1hdHRlcnMucHVzaChtYXhWYWxpZGF0b3IpOwotICB9Ci0KLSAgY3Ry
bC4kZm9ybWF0dGVycy5wdXNoKGZ1bmN0aW9uKHZhbHVlKSB7Ci0KLSAgICBpZiAoaXNFbXB0eSh2
YWx1ZSkgfHwgaXNOdW1iZXIodmFsdWUpKSB7Ci0gICAgICBjdHJsLiRzZXRWYWxpZGl0eSgnbnVt
YmVyJywgdHJ1ZSk7Ci0gICAgICByZXR1cm4gdmFsdWU7Ci0gICAgfSBlbHNlIHsKLSAgICAgIGN0
cmwuJHNldFZhbGlkaXR5KCdudW1iZXInLCBmYWxzZSk7Ci0gICAgICByZXR1cm4gdW5kZWZpbmVk
OwotICAgIH0KLSAgfSk7Ci19Ci0KLWZ1bmN0aW9uIHVybElucHV0VHlwZShzY29wZSwgZWxlbWVu
dCwgYXR0ciwgY3RybCwgJHNuaWZmZXIsICRicm93c2VyKSB7Ci0gIHRleHRJbnB1dFR5cGUoc2Nv
cGUsIGVsZW1lbnQsIGF0dHIsIGN0cmwsICRzbmlmZmVyLCAkYnJvd3Nlcik7Ci0KLSAgdmFyIHVy
bFZhbGlkYXRvciA9IGZ1bmN0aW9uKHZhbHVlKSB7Ci0gICAgaWYgKGlzRW1wdHkodmFsdWUpIHx8
IFVSTF9SRUdFWFAudGVzdCh2YWx1ZSkpIHsKLSAgICAgIGN0cmwuJHNldFZhbGlkaXR5KCd1cmwn
LCB0cnVlKTsKLSAgICAgIHJldHVybiB2YWx1ZTsKLSAgICB9IGVsc2UgewotICAgICAgY3RybC4k
c2V0VmFsaWRpdHkoJ3VybCcsIGZhbHNlKTsKLSAgICAgIHJldHVybiB1bmRlZmluZWQ7Ci0gICAg
fQotICB9OwotCi0gIGN0cmwuJGZvcm1hdHRlcnMucHVzaCh1cmxWYWxpZGF0b3IpOwotICBjdHJs
LiRwYXJzZXJzLnB1c2godXJsVmFsaWRhdG9yKTsKLX0KLQotZnVuY3Rpb24gZW1haWxJbnB1dFR5
cGUoc2NvcGUsIGVsZW1lbnQsIGF0dHIsIGN0cmwsICRzbmlmZmVyLCAkYnJvd3NlcikgewotICB0
ZXh0SW5wdXRUeXBlKHNjb3BlLCBlbGVtZW50LCBhdHRyLCBjdHJsLCAkc25pZmZlciwgJGJyb3dz
ZXIpOwotCi0gIHZhciBlbWFpbFZhbGlkYXRvciA9IGZ1bmN0aW9uKHZhbHVlKSB7Ci0gICAgaWYg
KGlzRW1wdHkodmFsdWUpIHx8IEVNQUlMX1JFR0VYUC50ZXN0KHZhbHVlKSkgewotICAgICAgY3Ry
bC4kc2V0VmFsaWRpdHkoJ2VtYWlsJywgdHJ1ZSk7Ci0gICAgICByZXR1cm4gdmFsdWU7Ci0gICAg
fSBlbHNlIHsKLSAgICAgIGN0cmwuJHNldFZhbGlkaXR5KCdlbWFpbCcsIGZhbHNlKTsKLSAgICAg
IHJldHVybiB1bmRlZmluZWQ7Ci0gICAgfQotICB9OwotCi0gIGN0cmwuJGZvcm1hdHRlcnMucHVz
aChlbWFpbFZhbGlkYXRvcik7Ci0gIGN0cmwuJHBhcnNlcnMucHVzaChlbWFpbFZhbGlkYXRvcik7
Ci19Ci0KLWZ1bmN0aW9uIHJhZGlvSW5wdXRUeXBlKHNjb3BlLCBlbGVtZW50LCBhdHRyLCBjdHJs
KSB7Ci0gIC8vIG1ha2UgdGhlIG5hbWUgdW5pcXVlLCBpZiBub3QgZGVmaW5lZAotICBpZiAoaXNV
bmRlZmluZWQoYXR0ci5uYW1lKSkgewotICAgIGVsZW1lbnQuYXR0cignbmFtZScsIG5leHRVaWQo
KSk7Ci0gIH0KLQotICBlbGVtZW50LmJpbmQoJ2NsaWNrJywgZnVuY3Rpb24oKSB7Ci0gICAgaWYg
KGVsZW1lbnRbMF0uY2hlY2tlZCkgewotICAgICAgc2NvcGUuJGFwcGx5KGZ1bmN0aW9uKCkgewot
ICAgICAgICBjdHJsLiRzZXRWaWV3VmFsdWUoYXR0ci52YWx1ZSk7Ci0gICAgICB9KTsKLSAgICB9
Ci0gIH0pOwotCi0gIGN0cmwuJHJlbmRlciA9IGZ1bmN0aW9uKCkgewotICAgIHZhciB2YWx1ZSA9
IGF0dHIudmFsdWU7Ci0gICAgZWxlbWVudFswXS5jaGVja2VkID0gKHZhbHVlID09IGN0cmwuJHZp
ZXdWYWx1ZSk7Ci0gIH07Ci0KLSAgYXR0ci4kb2JzZXJ2ZSgndmFsdWUnLCBjdHJsLiRyZW5kZXIp
OwotfQotCi1mdW5jdGlvbiBjaGVja2JveElucHV0VHlwZShzY29wZSwgZWxlbWVudCwgYXR0ciwg
Y3RybCkgewotICB2YXIgdHJ1ZVZhbHVlID0gYXR0ci5uZ1RydWVWYWx1ZSwKLSAgICAgIGZhbHNl
VmFsdWUgPSBhdHRyLm5nRmFsc2VWYWx1ZTsKLQotICBpZiAoIWlzU3RyaW5nKHRydWVWYWx1ZSkp
IHRydWVWYWx1ZSA9IHRydWU7Ci0gIGlmICghaXNTdHJpbmcoZmFsc2VWYWx1ZSkpIGZhbHNlVmFs
dWUgPSBmYWxzZTsKLQotICBlbGVtZW50LmJpbmQoJ2NsaWNrJywgZnVuY3Rpb24oKSB7Ci0gICAg
c2NvcGUuJGFwcGx5KGZ1bmN0aW9uKCkgewotICAgICAgY3RybC4kc2V0Vmlld1ZhbHVlKGVsZW1l
bnRbMF0uY2hlY2tlZCk7Ci0gICAgfSk7Ci0gIH0pOwotCi0gIGN0cmwuJHJlbmRlciA9IGZ1bmN0
aW9uKCkgewotICAgIGVsZW1lbnRbMF0uY2hlY2tlZCA9IGN0cmwuJHZpZXdWYWx1ZTsKLSAgfTsK
LQotICBjdHJsLiRmb3JtYXR0ZXJzLnB1c2goZnVuY3Rpb24odmFsdWUpIHsKLSAgICByZXR1cm4g
dmFsdWUgPT09IHRydWVWYWx1ZTsKLSAgfSk7Ci0KLSAgY3RybC4kcGFyc2Vycy5wdXNoKGZ1bmN0
aW9uKHZhbHVlKSB7Ci0gICAgcmV0dXJuIHZhbHVlID8gdHJ1ZVZhbHVlIDogZmFsc2VWYWx1ZTsK
LSAgfSk7Ci19Ci0KLQotLyoqCi0gKiBAbmdkb2MgZGlyZWN0aXZlCi0gKiBAbmFtZSBuZy5kaXJl
Y3RpdmU6dGV4dGFyZWEKLSAqIEByZXN0cmljdCBFCi0gKgotICogQGRlc2NyaXB0aW9uCi0gKiBI
VE1MIHRleHRhcmVhIGVsZW1lbnQgY29udHJvbCB3aXRoIGFuZ3VsYXIgZGF0YS1iaW5kaW5nLiBU
aGUgZGF0YS1iaW5kaW5nIGFuZCB2YWxpZGF0aW9uCi0gKiBwcm9wZXJ0aWVzIG9mIHRoaXMgZWxl
bWVudCBhcmUgZXhhY3RseSB0aGUgc2FtZSBhcyB0aG9zZSBvZiB0aGUKLSAqIHtAbGluayBuZy5k
aXJlY3RpdmU6aW5wdXQgaW5wdXQgZWxlbWVudH0uCi0gKgotICogQHBhcmFtIHtzdHJpbmd9IG5n
TW9kZWwgQXNzaWduYWJsZSBhbmd1bGFyIGV4cHJlc3Npb24gdG8gZGF0YS1iaW5kIHRvLgotICog
QHBhcmFtIHtzdHJpbmc9fSBuYW1lIFByb3BlcnR5IG5hbWUgb2YgdGhlIGZvcm0gdW5kZXIgd2hp
Y2ggdGhlIGNvbnRyb2wgaXMgcHVibGlzaGVkLgotICogQHBhcmFtIHtzdHJpbmc9fSByZXF1aXJl
ZCBTZXRzIGByZXF1aXJlZGAgdmFsaWRhdGlvbiBlcnJvciBrZXkgaWYgdGhlIHZhbHVlIGlzIG5v
dCBlbnRlcmVkLgotICogQHBhcmFtIHtzdHJpbmc9fSBuZ1JlcXVpcmVkIEFkZHMgYHJlcXVpcmVk
YCBhdHRyaWJ1dGUgYW5kIGByZXF1aXJlZGAgdmFsaWRhdGlvbiBjb25zdHJhaW50IHRvCi0gKiAg
ICB0aGUgZWxlbWVudCB3aGVuIHRoZSBuZ1JlcXVpcmVkIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRv
IHRydWUuIFVzZSBgbmdSZXF1aXJlZGAgaW5zdGVhZCBvZgotICogICAgYHJlcXVpcmVkYCB3aGVu
IHlvdSB3YW50IHRvIGRhdGEtYmluZCB0byB0aGUgYHJlcXVpcmVkYCBhdHRyaWJ1dGUuCi0gKiBA
cGFyYW0ge251bWJlcj19IG5nTWlubGVuZ3RoIFNldHMgYG1pbmxlbmd0aGAgdmFsaWRhdGlvbiBl
cnJvciBrZXkgaWYgdGhlIHZhbHVlIGlzIHNob3J0ZXIgdGhhbgotICogICAgbWlubGVuZ3RoLgot
ICogQHBhcmFtIHtudW1iZXI9fSBuZ01heGxlbmd0aCBTZXRzIGBtYXhsZW5ndGhgIHZhbGlkYXRp
b24gZXJyb3Iga2V5IGlmIHRoZSB2YWx1ZSBpcyBsb25nZXIgdGhhbgotICogICAgbWF4bGVuZ3Ro
LgotICogQHBhcmFtIHtzdHJpbmc9fSBuZ1BhdHRlcm4gU2V0cyBgcGF0dGVybmAgdmFsaWRhdGlv
biBlcnJvciBrZXkgaWYgdGhlIHZhbHVlIGRvZXMgbm90IG1hdGNoIHRoZQotICogICAgUmVnRXhw
IHBhdHRlcm4gZXhwcmVzc2lvbi4gRXhwZWN0ZWQgdmFsdWUgaXMgYC9yZWdleHAvYCBmb3IgaW5s
aW5lIHBhdHRlcm5zIG9yIGByZWdleHBgIGZvcgotICogICAgcGF0dGVybnMgZGVmaW5lZCBhcyBz
Y29wZSBleHByZXNzaW9ucy4KLSAqIEBwYXJhbSB7c3RyaW5nPX0gbmdDaGFuZ2UgQW5ndWxhciBl
eHByZXNzaW9uIHRvIGJlIGV4ZWN1dGVkIHdoZW4gaW5wdXQgY2hhbmdlcyBkdWUgdG8gdXNlcgot
ICogICAgaW50ZXJhY3Rpb24gd2l0aCB0aGUgaW5wdXQgZWxlbWVudC4KLSAqLwotCi0KLS8qKgot
ICogQG5nZG9jIGRpcmVjdGl2ZQotICogQG5hbWUgbmcuZGlyZWN0aXZlOmlucHV0Ci0gKiBAcmVz
dHJpY3QgRQotICoKLSAqIEBkZXNjcmlwdGlvbgotICogSFRNTCBpbnB1dCBlbGVtZW50IGNvbnRy
b2wgd2l0aCBhbmd1bGFyIGRhdGEtYmluZGluZy4gSW5wdXQgY29udHJvbCBmb2xsb3dzIEhUTUw1
IGlucHV0IHR5cGVzCi0gKiBhbmQgcG9seWZpbGxzIHRoZSBIVE1MNSB2YWxpZGF0aW9uIGJlaGF2
aW9yIGZvciBvbGRlciBicm93c2Vycy4KLSAqCi0gKiBAcGFyYW0ge3N0cmluZ30gbmdNb2RlbCBB
c3NpZ25hYmxlIGFuZ3VsYXIgZXhwcmVzc2lvbiB0byBkYXRhLWJpbmQgdG8uCi0gKiBAcGFyYW0g
e3N0cmluZz19IG5hbWUgUHJvcGVydHkgbmFtZSBvZiB0aGUgZm9ybSB1bmRlciB3aGljaCB0aGUg
Y29udHJvbCBpcyBwdWJsaXNoZWQuCi0gKiBAcGFyYW0ge3N0cmluZz19IHJlcXVpcmVkIFNldHMg
YHJlcXVpcmVkYCB2YWxpZGF0aW9uIGVycm9yIGtleSBpZiB0aGUgdmFsdWUgaXMgbm90IGVudGVy
ZWQuCi0gKiBAcGFyYW0ge2Jvb2xlYW49fSBuZ1JlcXVpcmVkIFNldHMgYHJlcXVpcmVkYCBhdHRy
aWJ1dGUgaWYgc2V0IHRvIHRydWUKLSAqIEBwYXJhbSB7bnVtYmVyPX0gbmdNaW5sZW5ndGggU2V0
cyBgbWlubGVuZ3RoYCB2YWxpZGF0aW9uIGVycm9yIGtleSBpZiB0aGUgdmFsdWUgaXMgc2hvcnRl
ciB0aGFuCi0gKiAgICBtaW5sZW5ndGguCi0gKiBAcGFyYW0ge251bWJlcj19IG5nTWF4bGVuZ3Ro
IFNldHMgYG1heGxlbmd0aGAgdmFsaWRhdGlvbiBlcnJvciBrZXkgaWYgdGhlIHZhbHVlIGlzIGxv
bmdlciB0aGFuCi0gKiAgICBtYXhsZW5ndGguCi0gKiBAcGFyYW0ge3N0cmluZz19IG5nUGF0dGVy
biBTZXRzIGBwYXR0ZXJuYCB2YWxpZGF0aW9uIGVycm9yIGtleSBpZiB0aGUgdmFsdWUgZG9lcyBu
b3QgbWF0Y2ggdGhlCi0gKiAgICBSZWdFeHAgcGF0dGVybiBleHByZXNzaW9uLiBFeHBlY3RlZCB2
YWx1ZSBpcyBgL3JlZ2V4cC9gIGZvciBpbmxpbmUgcGF0dGVybnMgb3IgYHJlZ2V4cGAgZm9yCi0g
KiAgICBwYXR0ZXJucyBkZWZpbmVkIGFzIHNjb3BlIGV4cHJlc3Npb25zLgotICogQHBhcmFtIHtz
dHJpbmc9fSBuZ0NoYW5nZSBBbmd1bGFyIGV4cHJlc3Npb24gdG8gYmUgZXhlY3V0ZWQgd2hlbiBp
bnB1dCBjaGFuZ2VzIGR1ZSB0byB1c2VyCi0gKiAgICBpbnRlcmFjdGlvbiB3aXRoIHRoZSBpbnB1
dCBlbGVtZW50LgotICoKLSAqIEBleGFtcGxlCi0gICAgPGRvYzpleGFtcGxlPgotICAgICAgPGRv
Yzpzb3VyY2U+Ci0gICAgICAgPHNjcmlwdD4KLSAgICAgICAgIGZ1bmN0aW9uIEN0cmwoJHNjb3Bl
KSB7Ci0gICAgICAgICAgICRzY29wZS51c2VyID0ge25hbWU6ICdndWVzdCcsIGxhc3Q6ICd2aXNp
dG9yJ307Ci0gICAgICAgICB9Ci0gICAgICAgPC9zY3JpcHQ+Ci0gICAgICAgPGRpdiBuZy1jb250
cm9sbGVyPSJDdHJsIj4KLSAgICAgICAgIDxmb3JtIG5hbWU9Im15Rm9ybSI+Ci0gICAgICAgICAg
IFVzZXIgbmFtZTogPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InVzZXJOYW1lIiBuZy1tb2RlbD0i
dXNlci5uYW1lIiByZXF1aXJlZD4KLSAgICAgICAgICAgPHNwYW4gY2xhc3M9ImVycm9yIiBuZy1z
aG93PSJteUZvcm0udXNlck5hbWUuJGVycm9yLnJlcXVpcmVkIj4KLSAgICAgICAgICAgICBSZXF1
aXJlZCE8L3NwYW4+PGJyPgotICAgICAgICAgICBMYXN0IG5hbWU6IDxpbnB1dCB0eXBlPSJ0ZXh0
IiBuYW1lPSJsYXN0TmFtZSIgbmctbW9kZWw9InVzZXIubGFzdCIKLSAgICAgICAgICAgICBuZy1t
aW5sZW5ndGg9IjMiIG5nLW1heGxlbmd0aD0iMTAiPgotICAgICAgICAgICA8c3BhbiBjbGFzcz0i
ZXJyb3IiIG5nLXNob3c9Im15Rm9ybS5sYXN0TmFtZS4kZXJyb3IubWlubGVuZ3RoIj4KLSAgICAg
ICAgICAgICBUb28gc2hvcnQhPC9zcGFuPgotICAgICAgICAgICA8c3BhbiBjbGFzcz0iZXJyb3Ii
IG5nLXNob3c9Im15Rm9ybS5sYXN0TmFtZS4kZXJyb3IubWF4bGVuZ3RoIj4KLSAgICAgICAgICAg
ICBUb28gbG9uZyE8L3NwYW4+PGJyPgotICAgICAgICAgPC9mb3JtPgotICAgICAgICAgPGhyPgot
ICAgICAgICAgPHR0PnVzZXIgPSB7e3VzZXJ9fTwvdHQ+PGJyLz4KLSAgICAgICAgIDx0dD5teUZv
cm0udXNlck5hbWUuJHZhbGlkID0ge3tteUZvcm0udXNlck5hbWUuJHZhbGlkfX08L3R0Pjxicj4K
LSAgICAgICAgIDx0dD5teUZvcm0udXNlck5hbWUuJGVycm9yID0ge3tteUZvcm0udXNlck5hbWUu
JGVycm9yfX08L3R0Pjxicj4KLSAgICAgICAgIDx0dD5teUZvcm0ubGFzdE5hbWUuJHZhbGlkID0g
e3tteUZvcm0ubGFzdE5hbWUuJHZhbGlkfX08L3R0Pjxicj4KLSAgICAgICAgIDx0dD5teUZvcm0u
bGFzdE5hbWUuJGVycm9yID0ge3tteUZvcm0ubGFzdE5hbWUuJGVycm9yfX08L3R0Pjxicj4KLSAg
ICAgICAgIDx0dD5teUZvcm0uJHZhbGlkID0ge3tteUZvcm0uJHZhbGlkfX08L3R0Pjxicj4KLSAg
ICAgICAgIDx0dD5teUZvcm0uJGVycm9yLnJlcXVpcmVkID0ge3shIW15Rm9ybS4kZXJyb3IucmVx
dWlyZWR9fTwvdHQ+PGJyPgotICAgICAgICAgPHR0Pm15Rm9ybS4kZXJyb3IubWlubGVuZ3RoID0g
e3shIW15Rm9ybS4kZXJyb3IubWlubGVuZ3RofX08L3R0Pjxicj4KLSAgICAgICAgIDx0dD5teUZv
cm0uJGVycm9yLm1heGxlbmd0aCA9IHt7ISFteUZvcm0uJGVycm9yLm1heGxlbmd0aH19PC90dD48
YnI+Ci0gICAgICAgPC9kaXY+Ci0gICAgICA8L2RvYzpzb3VyY2U+Ci0gICAgICA8ZG9jOnNjZW5h
cmlvPgotICAgICAgICBpdCgnc2hvdWxkIGluaXRpYWxpemUgdG8gbW9kZWwnLCBmdW5jdGlvbigp
IHsKLSAgICAgICAgICBleHBlY3QoYmluZGluZygndXNlcicpKS50b0VxdWFsKCd7Im5hbWUiOiJn
dWVzdCIsImxhc3QiOiJ2aXNpdG9yIn0nKTsKLSAgICAgICAgICBleHBlY3QoYmluZGluZygnbXlG
b3JtLnVzZXJOYW1lLiR2YWxpZCcpKS50b0VxdWFsKCd0cnVlJyk7Ci0gICAgICAgICAgZXhwZWN0
KGJpbmRpbmcoJ215Rm9ybS4kdmFsaWQnKSkudG9FcXVhbCgndHJ1ZScpOwotICAgICAgICB9KTsK
LQotICAgICAgICBpdCgnc2hvdWxkIGJlIGludmFsaWQgaWYgZW1wdHkgd2hlbiByZXF1aXJlZCcs
IGZ1bmN0aW9uKCkgewotICAgICAgICAgIGlucHV0KCd1c2VyLm5hbWUnKS5lbnRlcignJyk7Ci0g
ICAgICAgICAgZXhwZWN0KGJpbmRpbmcoJ3VzZXInKSkudG9FcXVhbCgneyJsYXN0IjoidmlzaXRv
ciJ9Jyk7Ci0gICAgICAgICAgZXhwZWN0KGJpbmRpbmcoJ215Rm9ybS51c2VyTmFtZS4kdmFsaWQn
KSkudG9FcXVhbCgnZmFsc2UnKTsKLSAgICAgICAgICBleHBlY3QoYmluZGluZygnbXlGb3JtLiR2
YWxpZCcpKS50b0VxdWFsKCdmYWxzZScpOwotICAgICAgICB9KTsKLQotICAgICAgICBpdCgnc2hv
dWxkIGJlIHZhbGlkIGlmIGVtcHR5IHdoZW4gbWluIGxlbmd0aCBpcyBzZXQnLCBmdW5jdGlvbigp
IHsKLSAgICAgICAgICBpbnB1dCgndXNlci5sYXN0JykuZW50ZXIoJycpOwotICAgICAgICAgIGV4
cGVjdChiaW5kaW5nKCd1c2VyJykpLnRvRXF1YWwoJ3sibmFtZSI6Imd1ZXN0IiwibGFzdCI6IiJ9
Jyk7Ci0gICAgICAgICAgZXhwZWN0KGJpbmRpbmcoJ215Rm9ybS5sYXN0TmFtZS4kdmFsaWQnKSku
dG9FcXVhbCgndHJ1ZScpOwotICAgICAgICAgIGV4cGVjdChiaW5kaW5nKCdteUZvcm0uJHZhbGlk
JykpLnRvRXF1YWwoJ3RydWUnKTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgaXQoJ3Nob3VsZCBi
ZSBpbnZhbGlkIGlmIGxlc3MgdGhhbiByZXF1aXJlZCBtaW4gbGVuZ3RoJywgZnVuY3Rpb24oKSB7
Ci0gICAgICAgICAgaW5wdXQoJ3VzZXIubGFzdCcpLmVudGVyKCd4eCcpOwotICAgICAgICAgIGV4
cGVjdChiaW5kaW5nKCd1c2VyJykpLnRvRXF1YWwoJ3sibmFtZSI6Imd1ZXN0In0nKTsKLSAgICAg
ICAgICBleHBlY3QoYmluZGluZygnbXlGb3JtLmxhc3ROYW1lLiR2YWxpZCcpKS50b0VxdWFsKCdm
YWxzZScpOwotICAgICAgICAgIGV4cGVjdChiaW5kaW5nKCdteUZvcm0ubGFzdE5hbWUuJGVycm9y
JykpLnRvTWF0Y2goL21pbmxlbmd0aC8pOwotICAgICAgICAgIGV4cGVjdChiaW5kaW5nKCdteUZv
cm0uJHZhbGlkJykpLnRvRXF1YWwoJ2ZhbHNlJyk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGl0
KCdzaG91bGQgYmUgaW52YWxpZCBpZiBsb25nZXIgdGhhbiBtYXggbGVuZ3RoJywgZnVuY3Rpb24o
KSB7Ci0gICAgICAgICAgaW5wdXQoJ3VzZXIubGFzdCcpLmVudGVyKCdzb21lIHJpZGljdWxvdXNs
eSBsb25nIG5hbWUnKTsKLSAgICAgICAgICBleHBlY3QoYmluZGluZygndXNlcicpKQotICAgICAg
ICAgICAgLnRvRXF1YWwoJ3sibmFtZSI6Imd1ZXN0In0nKTsKLSAgICAgICAgICBleHBlY3QoYmlu
ZGluZygnbXlGb3JtLmxhc3ROYW1lLiR2YWxpZCcpKS50b0VxdWFsKCdmYWxzZScpOwotICAgICAg
ICAgIGV4cGVjdChiaW5kaW5nKCdteUZvcm0ubGFzdE5hbWUuJGVycm9yJykpLnRvTWF0Y2goL21h
eGxlbmd0aC8pOwotICAgICAgICAgIGV4cGVjdChiaW5kaW5nKCdteUZvcm0uJHZhbGlkJykpLnRv
RXF1YWwoJ2ZhbHNlJyk7Ci0gICAgICAgIH0pOwotICAgICAgPC9kb2M6c2NlbmFyaW8+Ci0gICAg
PC9kb2M6ZXhhbXBsZT4KLSAqLwotdmFyIGlucHV0RGlyZWN0aXZlID0gWyckYnJvd3NlcicsICck
c25pZmZlcicsIGZ1bmN0aW9uKCRicm93c2VyLCAkc25pZmZlcikgewotICByZXR1cm4gewotICAg
IHJlc3RyaWN0OiAnRScsCi0gICAgcmVxdWlyZTogJz9uZ01vZGVsJywKLSAgICBsaW5rOiBmdW5j
dGlvbihzY29wZSwgZWxlbWVudCwgYXR0ciwgY3RybCkgewotICAgICAgaWYgKGN0cmwpIHsKLSAg
ICAgICAgKGlucHV0VHlwZVtsb3dlcmNhc2UoYXR0ci50eXBlKV0gfHwgaW5wdXRUeXBlLnRleHQp
KHNjb3BlLCBlbGVtZW50LCBhdHRyLCBjdHJsLCAkc25pZmZlciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRicm93c2VyKTsKLSAg
ICAgIH0KLSAgICB9Ci0gIH07Ci19XTsKLQotdmFyIFZBTElEX0NMQVNTID0gJ25nLXZhbGlkJywK
LSAgICBJTlZBTElEX0NMQVNTID0gJ25nLWludmFsaWQnLAotICAgIFBSSVNUSU5FX0NMQVNTID0g
J25nLXByaXN0aW5lJywKLSAgICBESVJUWV9DTEFTUyA9ICduZy1kaXJ0eSc7Ci0KLS8qKgotICog
QG5nZG9jIG9iamVjdAotICogQG5hbWUgbmcuZGlyZWN0aXZlOm5nTW9kZWwuTmdNb2RlbENvbnRy
b2xsZXIKLSAqCi0gKiBAcHJvcGVydHkge3N0cmluZ30gJHZpZXdWYWx1ZSBBY3R1YWwgc3RyaW5n
IHZhbHVlIGluIHRoZSB2aWV3LgotICogQHByb3BlcnR5IHsqfSAkbW9kZWxWYWx1ZSBUaGUgdmFs
dWUgaW4gdGhlIG1vZGVsLCB0aGF0IHRoZSBjb250cm9sIGlzIGJvdW5kIHRvLgotICogQHByb3Bl
cnR5IHtBcnJheS48RnVuY3Rpb24+fSAkcGFyc2VycyBXaGVuZXZlciB0aGUgY29udHJvbCByZWFk
cyB2YWx1ZSBmcm9tIHRoZSBET00sIGl0IGV4ZWN1dGVzCi0gKiAgICAgYWxsIG9mIHRoZXNlIGZ1
bmN0aW9ucyB0byBzYW5pdGl6ZSAvIGNvbnZlcnQgdGhlIHZhbHVlIGFzIHdlbGwgYXMgdmFsaWRh
dGUuCi0gKgotICogQHByb3BlcnR5IHtBcnJheS48RnVuY3Rpb24+fSAkZm9ybWF0dGVycyBXaGVu
ZXZlciB0aGUgbW9kZWwgdmFsdWUgY2hhbmdlcywgaXQgZXhlY3V0ZXMgYWxsIG9mCi0gKiAgICAg
dGhlc2UgZnVuY3Rpb25zIHRvIGNvbnZlcnQgdGhlIHZhbHVlIGFzIHdlbGwgYXMgdmFsaWRhdGUu
Ci0gKgotICogQHByb3BlcnR5IHtPYmplY3R9ICRlcnJvciBBbiBiamVjdCBoYXNoIHdpdGggYWxs
IGVycm9ycyBhcyBrZXlzLgotICoKLSAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gJHByaXN0aW5lIFRy
dWUgaWYgdXNlciBoYXMgbm90IGludGVyYWN0ZWQgd2l0aCB0aGUgY29udHJvbCB5ZXQuCi0gKiBA
cHJvcGVydHkge2Jvb2xlYW59ICRkaXJ0eSBUcnVlIGlmIHVzZXIgaGFzIGFscmVhZHkgaW50ZXJh
Y3RlZCB3aXRoIHRoZSBjb250cm9sLgotICogQHByb3BlcnR5IHtib29sZWFufSAkdmFsaWQgVHJ1
ZSBpZiB0aGVyZSBpcyBubyBlcnJvci4KLSAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gJGludmFsaWQg
VHJ1ZSBpZiBhdCBsZWFzdCBvbmUgZXJyb3Igb24gdGhlIGNvbnRyb2wuCi0gKgotICogQGRlc2Ny
aXB0aW9uCi0gKgotICogYE5nTW9kZWxDb250cm9sbGVyYCBwcm92aWRlcyBBUEkgZm9yIHRoZSBg
bmctbW9kZWxgIGRpcmVjdGl2ZS4gVGhlIGNvbnRyb2xsZXIgY29udGFpbnMKLSAqIHNlcnZpY2Vz
IGZvciBkYXRhLWJpbmRpbmcsIHZhbGlkYXRpb24sIENTUyB1cGRhdGUsIHZhbHVlIGZvcm1hdHRp
bmcgYW5kIHBhcnNpbmcuIEl0Ci0gKiBzcGVjaWZpY2FsbHkgZG9lcyBub3QgY29udGFpbiBhbnkg
bG9naWMgd2hpY2ggZGVhbHMgd2l0aCBET00gcmVuZGVyaW5nIG9yIGxpc3RlbmluZyB0bwotICog
RE9NIGV2ZW50cy4gVGhlIGBOZ01vZGVsQ29udHJvbGxlcmAgaXMgbWVhbnQgdG8gYmUgZXh0ZW5k
ZWQgYnkgb3RoZXIgZGlyZWN0aXZlcyB3aGVyZSwgdGhlCi0gKiBkaXJlY3RpdmUgcHJvdmlkZXMg
RE9NIG1hbmlwdWxhdGlvbiBhbmQgdGhlIGBOZ01vZGVsQ29udHJvbGxlcmAgcHJvdmlkZXMgdGhl
IGRhdGEtYmluZGluZy4KLSAqCi0gKiBUaGlzIGV4YW1wbGUgc2hvd3MgaG93IHRvIHVzZSBgTmdN
b2RlbENvbnRyb2xsZXJgIHdpdGggYSBjdXN0b20gY29udHJvbCB0byBhY2hpZXZlCi0gKiBkYXRh
LWJpbmRpbmcuIE5vdGljZSBob3cgZGlmZmVyZW50IGRpcmVjdGl2ZXMgKGBjb250ZW50ZWRpdGFi
bGVgLCBgbmctbW9kZWxgLCBhbmQgYHJlcXVpcmVkYCkKLSAqIGNvbGxhYm9yYXRlIHRvZ2V0aGVy
IHRvIGFjaGlldmUgdGhlIGRlc2lyZWQgcmVzdWx0LgotICoKLSAqIDxleGFtcGxlIG1vZHVsZT0i
Y3VzdG9tQ29udHJvbCI+Ci0gICAgPGZpbGUgbmFtZT0ic3R5bGUuY3NzIj4KLSAgICAgIFtjb250
ZW50ZWRpdGFibGVdIHsKLSAgICAgICAgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7Ci0gICAgICAg
IGJhY2tncm91bmQtY29sb3I6IHdoaXRlOwotICAgICAgICBtaW4taGVpZ2h0OiAyMHB4OwotICAg
ICAgfQotCi0gICAgICAubmctaW52YWxpZCB7Ci0gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJl
ZDsKLSAgICAgIH0KLQotICAgIDwvZmlsZT4KLSAgICA8ZmlsZSBuYW1lPSJzY3JpcHQuanMiPgot
ICAgICAgYW5ndWxhci5tb2R1bGUoJ2N1c3RvbUNvbnRyb2wnLCBbXSkuCi0gICAgICAgIGRpcmVj
dGl2ZSgnY29udGVudGVkaXRhYmxlJywgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgcmV0dXJuIHsK
LSAgICAgICAgICAgIHJlc3RyaWN0OiAnQScsIC8vIG9ubHkgYWN0aXZhdGUgb24gZWxlbWVudCBh
dHRyaWJ1dGUKLSAgICAgICAgICAgIHJlcXVpcmU6ICc/bmdNb2RlbCcsIC8vIGdldCBhIGhvbGQg
b2YgTmdNb2RlbENvbnRyb2xsZXIKLSAgICAgICAgICAgIGxpbms6IGZ1bmN0aW9uKHNjb3BlLCBl
bGVtZW50LCBhdHRycywgbmdNb2RlbCkgewotICAgICAgICAgICAgICBpZighbmdNb2RlbCkgcmV0
dXJuOyAvLyBkbyBub3RoaW5nIGlmIG5vIG5nLW1vZGVsCi0KLSAgICAgICAgICAgICAgLy8gU3Bl
Y2lmeSBob3cgVUkgc2hvdWxkIGJlIHVwZGF0ZWQKLSAgICAgICAgICAgICAgbmdNb2RlbC4kcmVu
ZGVyID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgZWxlbWVudC5odG1sKG5nTW9kZWwu
JHZpZXdWYWx1ZSB8fCAnJyk7Ci0gICAgICAgICAgICAgIH07Ci0KLSAgICAgICAgICAgICAgLy8g
TGlzdGVuIGZvciBjaGFuZ2UgZXZlbnRzIHRvIGVuYWJsZSBiaW5kaW5nCi0gICAgICAgICAgICAg
IGVsZW1lbnQuYmluZCgnYmx1ciBrZXl1cCBjaGFuZ2UnLCBmdW5jdGlvbigpIHsKLSAgICAgICAg
ICAgICAgICBzY29wZS4kYXBwbHkocmVhZCk7Ci0gICAgICAgICAgICAgIH0pOwotICAgICAgICAg
ICAgICByZWFkKCk7IC8vIGluaXRpYWxpemUKLQotICAgICAgICAgICAgICAvLyBXcml0ZSBkYXRh
IHRvIHRoZSBtb2RlbAotICAgICAgICAgICAgICBmdW5jdGlvbiByZWFkKCkgewotICAgICAgICAg
ICAgICAgIG5nTW9kZWwuJHNldFZpZXdWYWx1ZShlbGVtZW50Lmh0bWwoKSk7Ci0gICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9OwotICAgICAgICB9KTsKLSAgICA8L2Zp
bGU+Ci0gICAgPGZpbGUgbmFtZT0iaW5kZXguaHRtbCI+Ci0gICAgICA8Zm9ybSBuYW1lPSJteUZv
cm0iPgotICAgICAgIDxkaXYgY29udGVudGVkaXRhYmxlCi0gICAgICAgICAgICBuYW1lPSJteVdp
ZGdldCIgbmctbW9kZWw9InVzZXJDb250ZW50IgotICAgICAgICAgICAgcmVxdWlyZWQ+Q2hhbmdl
IG1lITwvZGl2PgotICAgICAgICA8c3BhbiBuZy1zaG93PSJteUZvcm0ubXlXaWRnZXQuJGVycm9y
LnJlcXVpcmVkIj5SZXF1aXJlZCE8L3NwYW4+Ci0gICAgICAgPGhyPgotICAgICAgIDx0ZXh0YXJl
YSBuZy1tb2RlbD0idXNlckNvbnRlbnQiPjwvdGV4dGFyZWE+Ci0gICAgICA8L2Zvcm0+Ci0gICAg
PC9maWxlPgotICAgIDxmaWxlIG5hbWU9InNjZW5hcmlvLmpzIj4KLSAgICAgIGl0KCdzaG91bGQg
ZGF0YS1iaW5kIGFuZCBiZWNvbWUgaW52YWxpZCcsIGZ1bmN0aW9uKCkgewotICAgICAgICB2YXIg
Y29udGVudEVkaXRhYmxlID0gZWxlbWVudCgnW2NvbnRlbnRlZGl0YWJsZV0nKTsKLQotICAgICAg
ICBleHBlY3QoY29udGVudEVkaXRhYmxlLnRleHQoKSkudG9FcXVhbCgnQ2hhbmdlIG1lIScpOwot
ICAgICAgICBpbnB1dCgndXNlckNvbnRlbnQnKS5lbnRlcignJyk7Ci0gICAgICAgIGV4cGVjdChj
b250ZW50RWRpdGFibGUudGV4dCgpKS50b0VxdWFsKCcnKTsKLSAgICAgICAgZXhwZWN0KGNvbnRl
bnRFZGl0YWJsZS5wcm9wKCdjbGFzc05hbWUnKSkudG9NYXRjaCgvbmctaW52YWxpZC1yZXF1aXJl
ZC8pOwotICAgICAgfSk7Ci0gICAgPC9maWxlPgotICogPC9leGFtcGxlPgotICoKLSAqLwotdmFy
IE5nTW9kZWxDb250cm9sbGVyID0gWyckc2NvcGUnLCAnJGV4Y2VwdGlvbkhhbmRsZXInLCAnJGF0
dHJzJywgJyRlbGVtZW50JywgJyRwYXJzZScsCi0gICAgZnVuY3Rpb24oJHNjb3BlLCAkZXhjZXB0
aW9uSGFuZGxlciwgJGF0dHIsICRlbGVtZW50LCAkcGFyc2UpIHsKLSAgdGhpcy4kdmlld1ZhbHVl
ID0gTnVtYmVyLk5hTjsKLSAgdGhpcy4kbW9kZWxWYWx1ZSA9IE51bWJlci5OYU47Ci0gIHRoaXMu
JHBhcnNlcnMgPSBbXTsKLSAgdGhpcy4kZm9ybWF0dGVycyA9IFtdOwotICB0aGlzLiR2aWV3Q2hh
bmdlTGlzdGVuZXJzID0gW107Ci0gIHRoaXMuJHByaXN0aW5lID0gdHJ1ZTsKLSAgdGhpcy4kZGly
dHkgPSBmYWxzZTsKLSAgdGhpcy4kdmFsaWQgPSB0cnVlOwotICB0aGlzLiRpbnZhbGlkID0gZmFs
c2U7Ci0gIHRoaXMuJG5hbWUgPSAkYXR0ci5uYW1lOwotCi0gIHZhciBuZ01vZGVsR2V0ID0gJHBh
cnNlKCRhdHRyLm5nTW9kZWwpLAotICAgICAgbmdNb2RlbFNldCA9IG5nTW9kZWxHZXQuYXNzaWdu
OwotCi0gIGlmICghbmdNb2RlbFNldCkgewotICAgIHRocm93IEVycm9yKE5PTl9BU1NJR05BQkxF
X01PREVMX0VYUFJFU1NJT04gKyAkYXR0ci5uZ01vZGVsICsKLSAgICAgICAgJyAoJyArIHN0YXJ0
aW5nVGFnKCRlbGVtZW50KSArICcpJyk7Ci0gIH0KLQotICAvKioKLSAgICogQG5nZG9jIGZ1bmN0
aW9uCi0gICAqIEBuYW1lIG5nLmRpcmVjdGl2ZTpuZ01vZGVsLk5nTW9kZWxDb250cm9sbGVyIyRy
ZW5kZXIKLSAgICogQG1ldGhvZE9mIG5nLmRpcmVjdGl2ZTpuZ01vZGVsLk5nTW9kZWxDb250cm9s
bGVyCi0gICAqCi0gICAqIEBkZXNjcmlwdGlvbgotICAgKiBDYWxsZWQgd2hlbiB0aGUgdmlldyBu
ZWVkcyB0byBiZSB1cGRhdGVkLiBJdCBpcyBleHBlY3RlZCB0aGF0IHRoZSB1c2VyIG9mIHRoZSBu
Zy1tb2RlbAotICAgKiBkaXJlY3RpdmUgd2lsbCBpbXBsZW1lbnQgdGhpcyBtZXRob2QuCi0gICAq
LwotICB0aGlzLiRyZW5kZXIgPSBub29wOwotCi0gIHZhciBwYXJlbnRGb3JtID0gJGVsZW1lbnQu
aW5oZXJpdGVkRGF0YSgnJGZvcm1Db250cm9sbGVyJykgfHwgbnVsbEZvcm1DdHJsLAotICAgICAg
aW52YWxpZENvdW50ID0gMCwgLy8gdXNlZCB0byBlYXNpbHkgZGV0ZXJtaW5lIGlmIHdlIGFyZSB2
YWxpZAotICAgICAgJGVycm9yID0gdGhpcy4kZXJyb3IgPSB7fTsgLy8ga2VlcCBpbnZhbGlkIGtl
eXMgaGVyZQotCi0KLSAgLy8gU2V0dXAgaW5pdGlhbCBzdGF0ZSBvZiB0aGUgY29udHJvbAotICAk
ZWxlbWVudC5hZGRDbGFzcyhQUklTVElORV9DTEFTUyk7Ci0gIHRvZ2dsZVZhbGlkQ3NzKHRydWUp
OwotCi0gIC8vIGNvbnZlbmllbmNlIG1ldGhvZCBmb3IgZWFzeSB0b2dnbGluZyBvZiBjbGFzc2Vz
Ci0gIGZ1bmN0aW9uIHRvZ2dsZVZhbGlkQ3NzKGlzVmFsaWQsIHZhbGlkYXRpb25FcnJvcktleSkg
ewotICAgIHZhbGlkYXRpb25FcnJvcktleSA9IHZhbGlkYXRpb25FcnJvcktleSA/ICctJyArIHNu
YWtlX2Nhc2UodmFsaWRhdGlvbkVycm9yS2V5LCAnLScpIDogJyc7Ci0gICAgJGVsZW1lbnQuCi0g
ICAgICByZW1vdmVDbGFzcygoaXNWYWxpZCA/IElOVkFMSURfQ0xBU1MgOiBWQUxJRF9DTEFTUykg
KyB2YWxpZGF0aW9uRXJyb3JLZXkpLgotICAgICAgYWRkQ2xhc3MoKGlzVmFsaWQgPyBWQUxJRF9D
TEFTUyA6IElOVkFMSURfQ0xBU1MpICsgdmFsaWRhdGlvbkVycm9yS2V5KTsKLSAgfQotCi0gIC8q
KgotICAgKiBAbmdkb2MgZnVuY3Rpb24KLSAgICogQG5hbWUgbmcuZGlyZWN0aXZlOm5nTW9kZWwu
TmdNb2RlbENvbnRyb2xsZXIjJHNldFZhbGlkaXR5Ci0gICAqIEBtZXRob2RPZiBuZy5kaXJlY3Rp
dmU6bmdNb2RlbC5OZ01vZGVsQ29udHJvbGxlcgotICAgKgotICAgKiBAZGVzY3JpcHRpb24KLSAg
ICogQ2hhbmdlIHRoZSB2YWxpZGl0eSBzdGF0ZSwgYW5kIG5vdGlmaWVzIHRoZSBmb3JtIHdoZW4g
dGhlIGNvbnRyb2wgY2hhbmdlcyB2YWxpZGl0eS4gKGkuZS4gaXQKLSAgICogZG9lcyBub3Qgbm90
aWZ5IGZvcm0gaWYgZ2l2ZW4gdmFsaWRhdG9yIGlzIGFscmVhZHkgbWFya2VkIGFzIGludmFsaWQp
LgotICAgKgotICAgKiBUaGlzIG1ldGhvZCBzaG91bGQgYmUgY2FsbGVkIGJ5IHZhbGlkYXRvcnMg
LSBpLmUuIHRoZSBwYXJzZXIgb3IgZm9ybWF0dGVyIGZ1bmN0aW9ucy4KLSAgICoKLSAgICogQHBh
cmFtIHtzdHJpbmd9IHZhbGlkYXRpb25FcnJvcktleSBOYW1lIG9mIHRoZSB2YWxpZGF0b3IuIHRo
ZSBgdmFsaWRhdGlvbkVycm9yS2V5YCB3aWxsIGFzc2lnbgotICAgKiAgICAgICAgdG8gYCRlcnJv
clt2YWxpZGF0aW9uRXJyb3JLZXldPWlzVmFsaWRgIHNvIHRoYXQgaXQgaXMgYXZhaWxhYmxlIGZv
ciBkYXRhLWJpbmRpbmcuCi0gICAqICAgICAgICBUaGUgYHZhbGlkYXRpb25FcnJvcktleWAgc2hv
dWxkIGJlIGluIGNhbWVsQ2FzZSBhbmQgd2lsbCBnZXQgY29udmVydGVkIGludG8gZGFzaC1jYXNl
Ci0gICAqICAgICAgICBmb3IgY2xhc3MgbmFtZS4gRXhhbXBsZTogYG15RXJyb3JgIHdpbGwgcmVz
dWx0IGluIGBuZy12YWxpZC1teS1lcnJvcmAgYW5kIGBuZy1pbnZhbGlkLW15LWVycm9yYAotICAg
KiAgICAgICAgY2xhc3MgYW5kIGNhbiBiZSBib3VuZCB0byBhcyAgYHt7c29tZUZvcm0uc29tZUNv
bnRyb2wuJGVycm9yLm15RXJyb3J9fWAgLgotICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlzVmFsaWQg
V2hldGhlciB0aGUgY3VycmVudCBzdGF0ZSBpcyB2YWxpZCAodHJ1ZSkgb3IgaW52YWxpZCAoZmFs
c2UpLgotICAgKi8KLSAgdGhpcy4kc2V0VmFsaWRpdHkgPSBmdW5jdGlvbih2YWxpZGF0aW9uRXJy
b3JLZXksIGlzVmFsaWQpIHsKLSAgICBpZiAoJGVycm9yW3ZhbGlkYXRpb25FcnJvcktleV0gPT09
ICFpc1ZhbGlkKSByZXR1cm47Ci0KLSAgICBpZiAoaXNWYWxpZCkgewotICAgICAgaWYgKCRlcnJv
clt2YWxpZGF0aW9uRXJyb3JLZXldKSBpbnZhbGlkQ291bnQtLTsKLSAgICAgIGlmICghaW52YWxp
ZENvdW50KSB7Ci0gICAgICAgIHRvZ2dsZVZhbGlkQ3NzKHRydWUpOwotICAgICAgICB0aGlzLiR2
YWxpZCA9IHRydWU7Ci0gICAgICAgIHRoaXMuJGludmFsaWQgPSBmYWxzZTsKLSAgICAgIH0KLSAg
ICB9IGVsc2UgewotICAgICAgdG9nZ2xlVmFsaWRDc3MoZmFsc2UpOwotICAgICAgdGhpcy4kaW52
YWxpZCA9IHRydWU7Ci0gICAgICB0aGlzLiR2YWxpZCA9IGZhbHNlOwotICAgICAgaW52YWxpZENv
dW50Kys7Ci0gICAgfQotCi0gICAgJGVycm9yW3ZhbGlkYXRpb25FcnJvcktleV0gPSAhaXNWYWxp
ZDsKLSAgICB0b2dnbGVWYWxpZENzcyhpc1ZhbGlkLCB2YWxpZGF0aW9uRXJyb3JLZXkpOwotCi0g
ICAgcGFyZW50Rm9ybS4kc2V0VmFsaWRpdHkodmFsaWRhdGlvbkVycm9yS2V5LCBpc1ZhbGlkLCB0
aGlzKTsKLSAgfTsKLQotCi0gIC8qKgotICAgKiBAbmdkb2MgZnVuY3Rpb24KLSAgICogQG5hbWUg
bmcuZGlyZWN0aXZlOm5nTW9kZWwuTmdNb2RlbENvbnRyb2xsZXIjJHNldFZpZXdWYWx1ZQotICAg
KiBAbWV0aG9kT2YgbmcuZGlyZWN0aXZlOm5nTW9kZWwuTmdNb2RlbENvbnRyb2xsZXIKLSAgICoK
LSAgICogQGRlc2NyaXB0aW9uCi0gICAqIFJlYWQgYSB2YWx1ZSBmcm9tIHZpZXcuCi0gICAqCi0g
ICAqIFRoaXMgbWV0aG9kIHNob3VsZCBiZSBjYWxsZWQgZnJvbSB3aXRoaW4gYSBET00gZXZlbnQg
aGFuZGxlci4KLSAgICogRm9yIGV4YW1wbGUge0BsaW5rIG5nLmRpcmVjdGl2ZTppbnB1dCBpbnB1
dH0gb3IKLSAgICoge0BsaW5rIG5nLmRpcmVjdGl2ZTpzZWxlY3Qgc2VsZWN0fSBkaXJlY3RpdmVz
IGNhbGwgaXQuCi0gICAqCi0gICAqIEl0IGludGVybmFsbHkgY2FsbHMgYWxsIGBwYXJzZXJzYCBh
bmQgaWYgcmVzdWx0ZWQgdmFsdWUgaXMgdmFsaWQsIHVwZGF0ZXMgdGhlIG1vZGVsIGFuZAotICAg
KiBjYWxscyBhbGwgcmVnaXN0ZXJlZCBjaGFuZ2UgbGlzdGVuZXJzLgotICAgKgotICAgKiBAcGFy
YW0ge3N0cmluZ30gdmFsdWUgVmFsdWUgZnJvbSB0aGUgdmlldy4KLSAgICovCi0gIHRoaXMuJHNl
dFZpZXdWYWx1ZSA9IGZ1bmN0aW9uKHZhbHVlKSB7Ci0gICAgdGhpcy4kdmlld1ZhbHVlID0gdmFs
dWU7Ci0KLSAgICAvLyBjaGFuZ2UgdG8gZGlydHkKLSAgICBpZiAodGhpcy4kcHJpc3RpbmUpIHsK
LSAgICAgIHRoaXMuJGRpcnR5ID0gdHJ1ZTsKLSAgICAgIHRoaXMuJHByaXN0aW5lID0gZmFsc2U7
Ci0gICAgICAkZWxlbWVudC5yZW1vdmVDbGFzcyhQUklTVElORV9DTEFTUykuYWRkQ2xhc3MoRElS
VFlfQ0xBU1MpOwotICAgICAgcGFyZW50Rm9ybS4kc2V0RGlydHkoKTsKLSAgICB9Ci0KLSAgICBm
b3JFYWNoKHRoaXMuJHBhcnNlcnMsIGZ1bmN0aW9uKGZuKSB7Ci0gICAgICB2YWx1ZSA9IGZuKHZh
bHVlKTsKLSAgICB9KTsKLQotICAgIGlmICh0aGlzLiRtb2RlbFZhbHVlICE9PSB2YWx1ZSkgewot
ICAgICAgdGhpcy4kbW9kZWxWYWx1ZSA9IHZhbHVlOwotICAgICAgbmdNb2RlbFNldCgkc2NvcGUs
IHZhbHVlKTsKLSAgICAgIGZvckVhY2godGhpcy4kdmlld0NoYW5nZUxpc3RlbmVycywgZnVuY3Rp
b24obGlzdGVuZXIpIHsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICBsaXN0ZW5lcigpOwotICAg
ICAgICB9IGNhdGNoKGUpIHsKLSAgICAgICAgICAkZXhjZXB0aW9uSGFuZGxlcihlKTsKLSAgICAg
ICAgfQotICAgICAgfSkKLSAgICB9Ci0gIH07Ci0KLSAgLy8gbW9kZWwgLT4gdmFsdWUKLSAgdmFy
IGN0cmwgPSB0aGlzOwotCi0gICRzY29wZS4kd2F0Y2goZnVuY3Rpb24gbmdNb2RlbFdhdGNoKCkg
ewotICAgIHZhciB2YWx1ZSA9IG5nTW9kZWxHZXQoJHNjb3BlKTsKLQotICAgIC8vIGlmIHNjb3Bl
IG1vZGVsIHZhbHVlIGFuZCBuZ01vZGVsIHZhbHVlIGFyZSBvdXQgb2Ygc3luYwotICAgIGlmIChj
dHJsLiRtb2RlbFZhbHVlICE9PSB2YWx1ZSkgewotCi0gICAgICB2YXIgZm9ybWF0dGVycyA9IGN0
cmwuJGZvcm1hdHRlcnMsCi0gICAgICAgICAgaWR4ID0gZm9ybWF0dGVycy5sZW5ndGg7Ci0KLSAg
ICAgIGN0cmwuJG1vZGVsVmFsdWUgPSB2YWx1ZTsKLSAgICAgIHdoaWxlKGlkeC0tKSB7Ci0gICAg
ICAgIHZhbHVlID0gZm9ybWF0dGVyc1tpZHhdKHZhbHVlKTsKLSAgICAgIH0KLQotICAgICAgaWYg
KGN0cmwuJHZpZXdWYWx1ZSAhPT0gdmFsdWUpIHsKLSAgICAgICAgY3RybC4kdmlld1ZhbHVlID0g
dmFsdWU7Ci0gICAgICAgIGN0cmwuJHJlbmRlcigpOwotICAgICAgfQotICAgIH0KLSAgfSk7Ci19
XTsKLQotCi0vKioKLSAqIEBuZ2RvYyBkaXJlY3RpdmUKLSAqIEBuYW1lIG5nLmRpcmVjdGl2ZTpu
Z01vZGVsCi0gKgotICogQGVsZW1lbnQgaW5wdXQKLSAqCi0gKiBAZGVzY3JpcHRpb24KLSAqIElz
IGRpcmVjdGl2ZSB0aGF0IHRlbGxzIEFuZ3VsYXIgdG8gZG8gdHdvLXdheSBkYXRhIGJpbmRpbmcu
IEl0IHdvcmtzIHRvZ2V0aGVyIHdpdGggYGlucHV0YCwKLSAqIGBzZWxlY3RgLCBgdGV4dGFyZWFg
LiBZb3UgY2FuIGVhc2lseSB3cml0ZSB5b3VyIG93biBkaXJlY3RpdmVzIHRvIHVzZSBgbmdNb2Rl
bGAgYXMgd2VsbC4KLSAqCi0gKiBgbmdNb2RlbGAgaXMgcmVzcG9uc2libGUgZm9yOgotICoKLSAq
IC0gYmluZGluZyB0aGUgdmlldyBpbnRvIHRoZSBtb2RlbCwgd2hpY2ggb3RoZXIgZGlyZWN0aXZl
cyBzdWNoIGFzIGBpbnB1dGAsIGB0ZXh0YXJlYWAgb3IgYHNlbGVjdGAKLSAqICAgcmVxdWlyZSwK
LSAqIC0gcHJvdmlkaW5nIHZhbGlkYXRpb24gYmVoYXZpb3IgKGkuZS4gcmVxdWlyZWQsIG51bWJl
ciwgZW1haWwsIHVybCksCi0gKiAtIGtlZXBpbmcgc3RhdGUgb2YgdGhlIGNvbnRyb2wgKHZhbGlk
L2ludmFsaWQsIGRpcnR5L3ByaXN0aW5lLCB2YWxpZGF0aW9uIGVycm9ycyksCi0gKiAtIHNldHRp
bmcgcmVsYXRlZCBjc3MgY2xhc3Mgb250byB0aGUgZWxlbWVudCAoYG5nLXZhbGlkYCwgYG5nLWlu
dmFsaWRgLCBgbmctZGlydHlgLCBgbmctcHJpc3RpbmVgKSwKLSAqIC0gcmVnaXN0ZXIgdGhlIGNv
bnRyb2wgd2l0aCBwYXJlbnQge0BsaW5rIG5nLmRpcmVjdGl2ZTpmb3JtIGZvcm19LgotICoKLSAq
IEZvciBiYXNpYyBleGFtcGxlcywgaG93IHRvIHVzZSBgbmdNb2RlbGAsIHNlZToKLSAqCi0gKiAg
LSB7QGxpbmsgbmcuZGlyZWN0aXZlOmlucHV0IGlucHV0fQotICogICAgLSB7QGxpbmsgbmcuZGly
ZWN0aXZlOmlucHV0LnRleHQgdGV4dH0KLSAqICAgIC0ge0BsaW5rIG5nLmRpcmVjdGl2ZTppbnB1
dC5jaGVja2JveCBjaGVja2JveH0KLSAqICAgIC0ge0BsaW5rIG5nLmRpcmVjdGl2ZTppbnB1dC5y
YWRpbyByYWRpb30KLSAqICAgIC0ge0BsaW5rIG5nLmRpcmVjdGl2ZTppbnB1dC5udW1iZXIgbnVt
YmVyfQotICogICAgLSB7QGxpbmsgbmcuZGlyZWN0aXZlOmlucHV0LmVtYWlsIGVtYWlsfQotICog
ICAgLSB7QGxpbmsgbmcuZGlyZWN0aXZlOmlucHV0LnVybCB1cmx9Ci0gKiAgLSB7QGxpbmsgbmcu
ZGlyZWN0aXZlOnNlbGVjdCBzZWxlY3R9Ci0gKiAgLSB7QGxpbmsgbmcuZGlyZWN0aXZlOnRleHRh
cmVhIHRleHRhcmVhfQotICoKLSAqLwotdmFyIG5nTW9kZWxEaXJlY3RpdmUgPSBmdW5jdGlvbigp
IHsKLSAgcmV0dXJuIHsKLSAgICByZXF1aXJlOiBbJ25nTW9kZWwnLCAnXj9mb3JtJ10sCi0gICAg
Y29udHJvbGxlcjogTmdNb2RlbENvbnRyb2xsZXIsCi0gICAgbGluazogZnVuY3Rpb24oc2NvcGUs
IGVsZW1lbnQsIGF0dHIsIGN0cmxzKSB7Ci0gICAgICAvLyBub3RpZnkgb3RoZXJzLCBlc3BlY2lh
bGx5IHBhcmVudCBmb3JtcwotCi0gICAgICB2YXIgbW9kZWxDdHJsID0gY3RybHNbMF0sCi0gICAg
ICAgICAgZm9ybUN0cmwgPSBjdHJsc1sxXSB8fCBudWxsRm9ybUN0cmw7Ci0KLSAgICAgIGZvcm1D
dHJsLiRhZGRDb250cm9sKG1vZGVsQ3RybCk7Ci0KLSAgICAgIGVsZW1lbnQuYmluZCgnJGRlc3Ry
b3knLCBmdW5jdGlvbigpIHsKLSAgICAgICAgZm9ybUN0cmwuJHJlbW92ZUNvbnRyb2wobW9kZWxD
dHJsKTsKLSAgICAgIH0pOwotICAgIH0KLSAgfTsKLX07Ci0KLQotLyoqCi0gKiBAbmdkb2MgZGly
ZWN0aXZlCi0gKiBAbmFtZSBuZy5kaXJlY3RpdmU6bmdDaGFuZ2UKLSAqIEByZXN0cmljdCBFCi0g
KgotICogQGRlc2NyaXB0aW9uCi0gKiBFdmFsdWF0ZSBnaXZlbiBleHByZXNzaW9uIHdoZW4gdXNl
ciBjaGFuZ2VzIHRoZSBpbnB1dC4KLSAqIFRoZSBleHByZXNzaW9uIGlzIG5vdCBldmFsdWF0ZWQg
d2hlbiB0aGUgdmFsdWUgY2hhbmdlIGlzIGNvbWluZyBmcm9tIHRoZSBtb2RlbC4KLSAqCi0gKiBO
b3RlLCB0aGlzIGRpcmVjdGl2ZSByZXF1aXJlcyBgbmdNb2RlbGAgdG8gYmUgcHJlc2VudC4KLSAq
Ci0gKiBAZWxlbWVudCBpbnB1dAotICoKLSAqIEBleGFtcGxlCi0gKiA8ZG9jOmV4YW1wbGU+Ci0g
KiAgIDxkb2M6c291cmNlPgotICogICAgIDxzY3JpcHQ+Ci0gKiAgICAgICBmdW5jdGlvbiBDb250
cm9sbGVyKCRzY29wZSkgewotICogICAgICAgICAkc2NvcGUuY291bnRlciA9IDA7Ci0gKiAgICAg
ICAgICRzY29wZS5jaGFuZ2UgPSBmdW5jdGlvbigpIHsKLSAqICAgICAgICAgICAkc2NvcGUuY291
bnRlcisrOwotICogICAgICAgICB9OwotICogICAgICAgfQotICogICAgIDwvc2NyaXB0PgotICog
ICAgIDxkaXYgbmctY29udHJvbGxlcj0iQ29udHJvbGxlciI+Ci0gKiAgICAgICA8aW5wdXQgdHlw
ZT0iY2hlY2tib3giIG5nLW1vZGVsPSJjb25maXJtZWQiIG5nLWNoYW5nZT0iY2hhbmdlKCkiIGlk
PSJuZy1jaGFuZ2UtZXhhbXBsZTEiIC8+Ci0gKiAgICAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3gi
IG5nLW1vZGVsPSJjb25maXJtZWQiIGlkPSJuZy1jaGFuZ2UtZXhhbXBsZTIiIC8+Ci0gKiAgICAg
ICA8bGFiZWwgZm9yPSJuZy1jaGFuZ2UtZXhhbXBsZTIiPkNvbmZpcm1lZDwvbGFiZWw+PGJyIC8+
Ci0gKiAgICAgICBkZWJ1ZyA9IHt7Y29uZmlybWVkfX08YnIgLz4KLSAqICAgICAgIGNvdW50ZXIg
PSB7e2NvdW50ZXJ9fQotICogICAgIDwvZGl2PgotICogICA8L2RvYzpzb3VyY2U+Ci0gKiAgIDxk
b2M6c2NlbmFyaW8+Ci0gKiAgICAgaXQoJ3Nob3VsZCBldmFsdWF0ZSB0aGUgZXhwcmVzc2lvbiBp
ZiBjaGFuZ2luZyBmcm9tIHZpZXcnLCBmdW5jdGlvbigpIHsKLSAqICAgICAgIGV4cGVjdChiaW5k
aW5nKCdjb3VudGVyJykpLnRvRXF1YWwoJzAnKTsKLSAqICAgICAgIGVsZW1lbnQoJyNuZy1jaGFu
Z2UtZXhhbXBsZTEnKS5jbGljaygpOwotICogICAgICAgZXhwZWN0KGJpbmRpbmcoJ2NvdW50ZXIn
KSkudG9FcXVhbCgnMScpOwotICogICAgICAgZXhwZWN0KGJpbmRpbmcoJ2NvbmZpcm1lZCcpKS50
b0VxdWFsKCd0cnVlJyk7Ci0gKiAgICAgfSk7Ci0gKgotICogICAgIGl0KCdzaG91bGQgbm90IGV2
YWx1YXRlIHRoZSBleHByZXNzaW9uIGlmIGNoYW5naW5nIGZyb20gbW9kZWwnLCBmdW5jdGlvbigp
IHsKLSAqICAgICAgIGVsZW1lbnQoJyNuZy1jaGFuZ2UtZXhhbXBsZTInKS5jbGljaygpOwotICog
ICAgICAgZXhwZWN0KGJpbmRpbmcoJ2NvdW50ZXInKSkudG9FcXVhbCgnMCcpOwotICogICAgICAg
ZXhwZWN0KGJpbmRpbmcoJ2NvbmZpcm1lZCcpKS50b0VxdWFsKCd0cnVlJyk7Ci0gKiAgICAgfSk7
Ci0gKiAgIDwvZG9jOnNjZW5hcmlvPgotICogPC9kb2M6ZXhhbXBsZT4KLSAqLwotdmFyIG5nQ2hh
bmdlRGlyZWN0aXZlID0gdmFsdWVGbih7Ci0gIHJlcXVpcmU6ICduZ01vZGVsJywKLSAgbGluazog
ZnVuY3Rpb24oc2NvcGUsIGVsZW1lbnQsIGF0dHIsIGN0cmwpIHsKLSAgICBjdHJsLiR2aWV3Q2hh
bmdlTGlzdGVuZXJzLnB1c2goZnVuY3Rpb24oKSB7Ci0gICAgICBzY29wZS4kZXZhbChhdHRyLm5n
Q2hhbmdlKTsKLSAgICB9KTsKLSAgfQotfSk7Ci0KLQotdmFyIHJlcXVpcmVkRGlyZWN0aXZlID0g
ZnVuY3Rpb24oKSB7Ci0gIHJldHVybiB7Ci0gICAgcmVxdWlyZTogJz9uZ01vZGVsJywKLSAgICBs
aW5rOiBmdW5jdGlvbihzY29wZSwgZWxtLCBhdHRyLCBjdHJsKSB7Ci0gICAgICBpZiAoIWN0cmwp
IHJldHVybjsKLSAgICAgIGF0dHIucmVxdWlyZWQgPSB0cnVlOyAvLyBmb3JjZSB0cnV0aHkgaW4g
Y2FzZSB3ZSBhcmUgb24gbm9uIGlucHV0IGVsZW1lbnQKLQotICAgICAgdmFyIHZhbGlkYXRvciA9
IGZ1bmN0aW9uKHZhbHVlKSB7Ci0gICAgICAgIGlmIChhdHRyLnJlcXVpcmVkICYmIChpc0VtcHR5
KHZhbHVlKSB8fCB2YWx1ZSA9PT0gZmFsc2UpKSB7Ci0gICAgICAgICAgY3RybC4kc2V0VmFsaWRp
dHkoJ3JlcXVpcmVkJywgZmFsc2UpOwotICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICBjdHJsLiRzZXRWYWxpZGl0eSgncmVxdWlyZWQnLCB0cnVlKTsKLSAgICAg
ICAgICByZXR1cm4gdmFsdWU7Ci0gICAgICAgIH0KLSAgICAgIH07Ci0KLSAgICAgIGN0cmwuJGZv
cm1hdHRlcnMucHVzaCh2YWxpZGF0b3IpOwotICAgICAgY3RybC4kcGFyc2Vycy51bnNoaWZ0KHZh
bGlkYXRvcik7Ci0KLSAgICAgIGF0dHIuJG9ic2VydmUoJ3JlcXVpcmVkJywgZnVuY3Rpb24oKSB7
Ci0gICAgICAgIHZhbGlkYXRvcihjdHJsLiR2aWV3VmFsdWUpOwotICAgICAgfSk7Ci0gICAgfQot
ICB9OwotfTsKLQotCi0vKioKLSAqIEBuZ2RvYyBkaXJlY3RpdmUKLSAqIEBuYW1lIG5nLmRpcmVj
dGl2ZTpuZ0xpc3QKLSAqCi0gKiBAZGVzY3JpcHRpb24KLSAqIFRleHQgaW5wdXQgdGhhdCBjb252
ZXJ0cyBiZXR3ZWVuIGNvbW1hLXNlcGFyYXRlZCBzdHJpbmcgaW50byBhbiBhcnJheSBvZiBzdHJp
bmdzLgotICoKLSAqIEBlbGVtZW50IGlucHV0Ci0gKiBAcGFyYW0ge3N0cmluZz19IG5nTGlzdCBv
cHRpb25hbCBkZWxpbWl0ZXIgdGhhdCBzaG91bGQgYmUgdXNlZCB0byBzcGxpdCB0aGUgdmFsdWUu
IElmCi0gKiAgIHNwZWNpZmllZCBpbiBmb3JtIGAvc29tZXRoaW5nL2AgdGhlbiB0aGUgdmFsdWUg
d2lsbCBiZSBjb252ZXJ0ZWQgaW50byBhIHJlZ3VsYXIgZXhwcmVzc2lvbi4KLSAqCi0gKiBAZXhh
bXBsZQotICAgIDxkb2M6ZXhhbXBsZT4KLSAgICAgIDxkb2M6c291cmNlPgotICAgICAgIDxzY3Jp
cHQ+Ci0gICAgICAgICBmdW5jdGlvbiBDdHJsKCRzY29wZSkgewotICAgICAgICAgICAkc2NvcGUu
bmFtZXMgPSBbJ2lnb3InLCAnbWlza28nLCAndm9qdGEnXTsKLSAgICAgICAgIH0KLSAgICAgICA8
L3NjcmlwdD4KLSAgICAgICA8Zm9ybSBuYW1lPSJteUZvcm0iIG5nLWNvbnRyb2xsZXI9IkN0cmwi
PgotICAgICAgICAgTGlzdDogPGlucHV0IG5hbWU9Im5hbWVzSW5wdXQiIG5nLW1vZGVsPSJuYW1l
cyIgbmctbGlzdCByZXF1aXJlZD4KLSAgICAgICAgIDxzcGFuIGNsYXNzPSJlcnJvciIgbmctc2hv
dz0ibXlGb3JtLmxpc3QuJGVycm9yLnJlcXVpcmVkIj4KLSAgICAgICAgICAgUmVxdWlyZWQhPC9z
cGFuPgotICAgICAgICAgPHR0Pm5hbWVzID0ge3tuYW1lc319PC90dD48YnIvPgotICAgICAgICAg
PHR0Pm15Rm9ybS5uYW1lc0lucHV0LiR2YWxpZCA9IHt7bXlGb3JtLm5hbWVzSW5wdXQuJHZhbGlk
fX08L3R0Pjxici8+Ci0gICAgICAgICA8dHQ+bXlGb3JtLm5hbWVzSW5wdXQuJGVycm9yID0ge3tt
eUZvcm0ubmFtZXNJbnB1dC4kZXJyb3J9fTwvdHQ+PGJyLz4KLSAgICAgICAgIDx0dD5teUZvcm0u
JHZhbGlkID0ge3tteUZvcm0uJHZhbGlkfX08L3R0Pjxici8+Ci0gICAgICAgICA8dHQ+bXlGb3Jt
LiRlcnJvci5yZXF1aXJlZCA9IHt7ISFteUZvcm0uJGVycm9yLnJlcXVpcmVkfX08L3R0Pjxici8+
Ci0gICAgICAgIDwvZm9ybT4KLSAgICAgIDwvZG9jOnNvdXJjZT4KLSAgICAgIDxkb2M6c2NlbmFy
aW8+Ci0gICAgICAgIGl0KCdzaG91bGQgaW5pdGlhbGl6ZSB0byBtb2RlbCcsIGZ1bmN0aW9uKCkg
ewotICAgICAgICAgIGV4cGVjdChiaW5kaW5nKCduYW1lcycpKS50b0VxdWFsKCdbImlnb3IiLCJt
aXNrbyIsInZvanRhIl0nKTsKLSAgICAgICAgICBleHBlY3QoYmluZGluZygnbXlGb3JtLm5hbWVz
SW5wdXQuJHZhbGlkJykpLnRvRXF1YWwoJ3RydWUnKTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAg
aXQoJ3Nob3VsZCBiZSBpbnZhbGlkIGlmIGVtcHR5JywgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAg
aW5wdXQoJ25hbWVzJykuZW50ZXIoJycpOwotICAgICAgICAgIGV4cGVjdChiaW5kaW5nKCduYW1l
cycpKS50b0VxdWFsKCdbXScpOwotICAgICAgICAgIGV4cGVjdChiaW5kaW5nKCdteUZvcm0ubmFt
ZXNJbnB1dC4kdmFsaWQnKSkudG9FcXVhbCgnZmFsc2UnKTsKLSAgICAgICAgfSk7Ci0gICAgICA8
L2RvYzpzY2VuYXJpbz4KLSAgICA8L2RvYzpleGFtcGxlPgotICovCi12YXIgbmdMaXN0RGlyZWN0
aXZlID0gZnVuY3Rpb24oKSB7Ci0gIHJldHVybiB7Ci0gICAgcmVxdWlyZTogJ25nTW9kZWwnLAot
ICAgIGxpbms6IGZ1bmN0aW9uKHNjb3BlLCBlbGVtZW50LCBhdHRyLCBjdHJsKSB7Ci0gICAgICB2
YXIgbWF0Y2ggPSAvXC8oLiopXC8vLmV4ZWMoYXR0ci5uZ0xpc3QpLAotICAgICAgICAgIHNlcGFy
YXRvciA9IG1hdGNoICYmIG5ldyBSZWdFeHAobWF0Y2hbMV0pIHx8IGF0dHIubmdMaXN0IHx8ICcs
JzsKLQotICAgICAgdmFyIHBhcnNlID0gZnVuY3Rpb24odmlld1ZhbHVlKSB7Ci0gICAgICAgIHZh
ciBsaXN0ID0gW107Ci0KLSAgICAgICAgaWYgKHZpZXdWYWx1ZSkgewotICAgICAgICAgIGZvckVh
Y2godmlld1ZhbHVlLnNwbGl0KHNlcGFyYXRvciksIGZ1bmN0aW9uKHZhbHVlKSB7Ci0gICAgICAg
ICAgICBpZiAodmFsdWUpIGxpc3QucHVzaCh0cmltKHZhbHVlKSk7Ci0gICAgICAgICAgfSk7Ci0g
ICAgICAgIH0KLQotICAgICAgICByZXR1cm4gbGlzdDsKLSAgICAgIH07Ci0KLSAgICAgIGN0cmwu
JHBhcnNlcnMucHVzaChwYXJzZSk7Ci0gICAgICBjdHJsLiRmb3JtYXR0ZXJzLnB1c2goZnVuY3Rp
b24odmFsdWUpIHsKLSAgICAgICAgaWYgKGlzQXJyYXkodmFsdWUpKSB7Ci0gICAgICAgICAgcmV0
dXJuIHZhbHVlLmpvaW4oJywgJyk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gdW5kZWZp
bmVkOwotICAgICAgfSk7Ci0gICAgfQotICB9OwotfTsKLQotCi12YXIgQ09OU1RBTlRfVkFMVUVf
UkVHRVhQID0gL14odHJ1ZXxmYWxzZXxcZCspJC87Ci0KLXZhciBuZ1ZhbHVlRGlyZWN0aXZlID0g
ZnVuY3Rpb24oKSB7Ci0gIHJldHVybiB7Ci0gICAgcHJpb3JpdHk6IDEwMCwKLSAgICBjb21waWxl
OiBmdW5jdGlvbih0cGwsIHRwbEF0dHIpIHsKLSAgICAgIGlmIChDT05TVEFOVF9WQUxVRV9SRUdF
WFAudGVzdCh0cGxBdHRyLm5nVmFsdWUpKSB7Ci0gICAgICAgIHJldHVybiBmdW5jdGlvbihzY29w
ZSwgZWxtLCBhdHRyKSB7Ci0gICAgICAgICAgYXR0ci4kc2V0KCd2YWx1ZScsIHNjb3BlLiRldmFs
KGF0dHIubmdWYWx1ZSkpOwotICAgICAgICB9OwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgcmV0
dXJuIGZ1bmN0aW9uKHNjb3BlLCBlbG0sIGF0dHIpIHsKLSAgICAgICAgICBzY29wZS4kd2F0Y2go
YXR0ci5uZ1ZhbHVlLCBmdW5jdGlvbiB2YWx1ZVdhdGNoQWN0aW9uKHZhbHVlKSB7Ci0gICAgICAg
ICAgICBhdHRyLiRzZXQoJ3ZhbHVlJywgdmFsdWUsIGZhbHNlKTsKLSAgICAgICAgICB9KTsKLSAg
ICAgICAgfTsKLSAgICAgIH0KLSAgICB9Ci0gIH07Ci19OwotCi0vKioKLSAqIEBuZ2RvYyBkaXJl
Y3RpdmUKLSAqIEBuYW1lIG5nLmRpcmVjdGl2ZTpuZ0JpbmQKLSAqCi0gKiBAZGVzY3JpcHRpb24K
LSAqIFRoZSBgbmdCaW5kYCBhdHRyaWJ1dGUgdGVsbHMgQW5ndWxhciB0byByZXBsYWNlIHRoZSB0
ZXh0IGNvbnRlbnQgb2YgdGhlIHNwZWNpZmllZCBIVE1MIGVsZW1lbnQKLSAqIHdpdGggdGhlIHZh
bHVlIG9mIGEgZ2l2ZW4gZXhwcmVzc2lvbiwgYW5kIHRvIHVwZGF0ZSB0aGUgdGV4dCBjb250ZW50
IHdoZW4gdGhlIHZhbHVlIG9mIHRoYXQKLSAqIGV4cHJlc3Npb24gY2hhbmdlcy4KLSAqCi0gKiBU
eXBpY2FsbHksIHlvdSBkb24ndCB1c2UgYG5nQmluZGAgZGlyZWN0bHksIGJ1dCBpbnN0ZWFkIHlv
dSB1c2UgdGhlIGRvdWJsZSBjdXJseSBtYXJrdXAgbGlrZQotICogYHt7IGV4cHJlc3Npb24gfX1g
IHdoaWNoIGlzIHNpbWlsYXIgYnV0IGxlc3MgdmVyYm9zZS4KLSAqCi0gKiBPbmUgc2NlbmFyaW8g
aW4gd2hpY2ggdGhlIHVzZSBvZiBgbmdCaW5kYCBpcyBwcmVmZXJyZWQgb3ZlciBge3sgZXhwcmVz
c2lvbiB9fWAgYmluZGluZyBpcyB3aGVuCi0gKiBpdCdzIGRlc2lyYWJsZSB0byBwdXQgYmluZGlu
Z3MgaW50byB0ZW1wbGF0ZSB0aGF0IGlzIG1vbWVudGFyaWx5IGRpc3BsYXllZCBieSB0aGUgYnJv
d3NlciBpbiBpdHMKLSAqIHJhdyBzdGF0ZSBiZWZvcmUgQW5ndWxhciBjb21waWxlcyBpdC4gU2lu
Y2UgYG5nQmluZGAgaXMgYW4gZWxlbWVudCBhdHRyaWJ1dGUsIGl0IG1ha2VzIHRoZQotICogYmlu
ZGluZ3MgaW52aXNpYmxlIHRvIHRoZSB1c2VyIHdoaWxlIHRoZSBwYWdlIGlzIGxvYWRpbmcuCi0g
KgotICogQW4gYWx0ZXJuYXRpdmUgc29sdXRpb24gdG8gdGhpcyBwcm9ibGVtIHdvdWxkIGJlIHVz
aW5nIHRoZQotICoge0BsaW5rIG5nLmRpcmVjdGl2ZTpuZ0Nsb2FrIG5nQ2xvYWt9IGRpcmVjdGl2
ZS4KLSAqCi0gKgotICogQGVsZW1lbnQgQU5ZCi0gKiBAcGFyYW0ge2V4cHJlc3Npb259IG5nQmlu
ZCB7QGxpbmsgZ3VpZGUvZXhwcmVzc2lvbiBFeHByZXNzaW9ufSB0byBldmFsdWF0ZS4KLSAqCi0g
KiBAZXhhbXBsZQotICogRW50ZXIgYSBuYW1lIGluIHRoZSBMaXZlIFByZXZpZXcgdGV4dCBib3g7
IHRoZSBncmVldGluZyBiZWxvdyB0aGUgdGV4dCBib3ggY2hhbmdlcyBpbnN0YW50bHkuCi0gICA8
ZG9jOmV4YW1wbGU+Ci0gICAgIDxkb2M6c291cmNlPgotICAgICAgIDxzY3JpcHQ+Ci0gICAgICAg
ICBmdW5jdGlvbiBDdHJsKCRzY29wZSkgewotICAgICAgICAgICAkc2NvcGUubmFtZSA9ICdXaGly
bGVkJzsKLSAgICAgICAgIH0KLSAgICAgICA8L3NjcmlwdD4KLSAgICAgICA8ZGl2IG5nLWNvbnRy
b2xsZXI9IkN0cmwiPgotICAgICAgICAgRW50ZXIgbmFtZTogPGlucHV0IHR5cGU9InRleHQiIG5n
LW1vZGVsPSJuYW1lIj48YnI+Ci0gICAgICAgICBIZWxsbyA8c3BhbiBuZy1iaW5kPSJuYW1lIj48
L3NwYW4+IQotICAgICAgIDwvZGl2PgotICAgICA8L2RvYzpzb3VyY2U+Ci0gICAgIDxkb2M6c2Nl
bmFyaW8+Ci0gICAgICAgaXQoJ3Nob3VsZCBjaGVjayBuZy1iaW5kJywgZnVuY3Rpb24oKSB7Ci0g
ICAgICAgICBleHBlY3QodXNpbmcoJy5kb2MtZXhhbXBsZS1saXZlJykuYmluZGluZygnbmFtZScp
KS50b0JlKCdXaGlybGVkJyk7Ci0gICAgICAgICB1c2luZygnLmRvYy1leGFtcGxlLWxpdmUnKS5p
bnB1dCgnbmFtZScpLmVudGVyKCd3b3JsZCcpOwotICAgICAgICAgZXhwZWN0KHVzaW5nKCcuZG9j
LWV4YW1wbGUtbGl2ZScpLmJpbmRpbmcoJ25hbWUnKSkudG9CZSgnd29ybGQnKTsKLSAgICAgICB9
KTsKLSAgICAgPC9kb2M6c2NlbmFyaW8+Ci0gICA8L2RvYzpleGFtcGxlPgotICovCi12YXIgbmdC
aW5kRGlyZWN0aXZlID0gbmdEaXJlY3RpdmUoZnVuY3Rpb24oc2NvcGUsIGVsZW1lbnQsIGF0dHIp
IHsKLSAgZWxlbWVudC5hZGRDbGFzcygnbmctYmluZGluZycpLmRhdGEoJyRiaW5kaW5nJywgYXR0
ci5uZ0JpbmQpOwotICBzY29wZS4kd2F0Y2goYXR0ci5uZ0JpbmQsIGZ1bmN0aW9uIG5nQmluZFdh
dGNoQWN0aW9uKHZhbHVlKSB7Ci0gICAgZWxlbWVudC50ZXh0KHZhbHVlID09IHVuZGVmaW5lZCA/
ICcnIDogdmFsdWUpOwotICB9KTsKLX0pOwotCi0KLS8qKgotICogQG5nZG9jIGRpcmVjdGl2ZQot
ICogQG5hbWUgbmcuZGlyZWN0aXZlOm5nQmluZFRlbXBsYXRlCi0gKgotICogQGRlc2NyaXB0aW9u
Ci0gKiBUaGUgYG5nQmluZFRlbXBsYXRlYCBkaXJlY3RpdmUgc3BlY2lmaWVzIHRoYXQgdGhlIGVs
ZW1lbnQKLSAqIHRleHQgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggdGhlIHRlbXBsYXRlIGluIG5n
QmluZFRlbXBsYXRlLgotICogVW5saWtlIG5nQmluZCB0aGUgbmdCaW5kVGVtcGxhdGUgY2FuIGNv
bnRhaW4gbXVsdGlwbGUgYHt7YCBgfX1gCi0gKiBleHByZXNzaW9ucy4gKFRoaXMgaXMgcmVxdWly
ZWQgc2luY2Ugc29tZSBIVE1MIGVsZW1lbnRzCi0gKiBjYW4gbm90IGhhdmUgU1BBTiBlbGVtZW50
cyBzdWNoIGFzIFRJVExFLCBvciBPUFRJT04gdG8gbmFtZSBhIGZldy4pCi0gKgotICogQGVsZW1l
bnQgQU5ZCi0gKiBAcGFyYW0ge3N0cmluZ30gbmdCaW5kVGVtcGxhdGUgdGVtcGxhdGUgb2YgZm9y
bQotICogICA8dHQ+e3s8L3R0PiA8dHQ+ZXhwcmVzc2lvbjwvdHQ+IDx0dD59fTwvdHQ+IHRvIGV2
YWwuCi0gKgotICogQGV4YW1wbGUKLSAqIFRyeSBpdCBoZXJlOiBlbnRlciB0ZXh0IGluIHRleHQg
Ym94IGFuZCB3YXRjaCB0aGUgZ3JlZXRpbmcgY2hhbmdlLgotICAgPGRvYzpleGFtcGxlPgotICAg
ICA8ZG9jOnNvdXJjZT4KLSAgICAgICA8c2NyaXB0PgotICAgICAgICAgZnVuY3Rpb24gQ3RybCgk
c2NvcGUpIHsKLSAgICAgICAgICAgJHNjb3BlLnNhbHV0YXRpb24gPSAnSGVsbG8nOwotICAgICAg
ICAgICAkc2NvcGUubmFtZSA9ICdXb3JsZCc7Ci0gICAgICAgICB9Ci0gICAgICAgPC9zY3JpcHQ+
Ci0gICAgICAgPGRpdiBuZy1jb250cm9sbGVyPSJDdHJsIj4KLSAgICAgICAgU2FsdXRhdGlvbjog
PGlucHV0IHR5cGU9InRleHQiIG5nLW1vZGVsPSJzYWx1dGF0aW9uIj48YnI+Ci0gICAgICAgIE5h
bWU6IDxpbnB1dCB0eXBlPSJ0ZXh0IiBuZy1tb2RlbD0ibmFtZSI+PGJyPgotICAgICAgICA8cHJl
IG5nLWJpbmQtdGVtcGxhdGU9Int7c2FsdXRhdGlvbn19IHt7bmFtZX19ISI+PC9wcmU+Ci0gICAg
ICAgPC9kaXY+Ci0gICAgIDwvZG9jOnNvdXJjZT4KLSAgICAgPGRvYzpzY2VuYXJpbz4KLSAgICAg
ICBpdCgnc2hvdWxkIGNoZWNrIG5nLWJpbmQnLCBmdW5jdGlvbigpIHsKLSAgICAgICAgIGV4cGVj
dCh1c2luZygnLmRvYy1leGFtcGxlLWxpdmUnKS5iaW5kaW5nKCdzYWx1dGF0aW9uJykpLgotICAg
ICAgICAgICB0b0JlKCdIZWxsbycpOwotICAgICAgICAgZXhwZWN0KHVzaW5nKCcuZG9jLWV4YW1w
bGUtbGl2ZScpLmJpbmRpbmcoJ25hbWUnKSkuCi0gICAgICAgICAgIHRvQmUoJ1dvcmxkJyk7Ci0g
ICAgICAgICB1c2luZygnLmRvYy1leGFtcGxlLWxpdmUnKS5pbnB1dCgnc2FsdXRhdGlvbicpLmVu
dGVyKCdHcmVldGluZ3MnKTsKLSAgICAgICAgIHVzaW5nKCcuZG9jLWV4YW1wbGUtbGl2ZScpLmlu
cHV0KCduYW1lJykuZW50ZXIoJ3VzZXInKTsKLSAgICAgICAgIGV4cGVjdCh1c2luZygnLmRvYy1l
eGFtcGxlLWxpdmUnKS5iaW5kaW5nKCdzYWx1dGF0aW9uJykpLgotICAgICAgICAgICB0b0JlKCdH
cmVldGluZ3MnKTsKLSAgICAgICAgIGV4cGVjdCh1c2luZygnLmRvYy1leGFtcGxlLWxpdmUnKS5i
aW5kaW5nKCduYW1lJykpLgotICAgICAgICAgICB0b0JlKCd1c2VyJyk7Ci0gICAgICAgfSk7Ci0g
ICAgIDwvZG9jOnNjZW5hcmlvPgotICAgPC9kb2M6ZXhhbXBsZT4KLSAqLwotdmFyIG5nQmluZFRl
bXBsYXRlRGlyZWN0aXZlID0gWyckaW50ZXJwb2xhdGUnLCBmdW5jdGlvbigkaW50ZXJwb2xhdGUp
IHsKLSAgcmV0dXJuIGZ1bmN0aW9uKHNjb3BlLCBlbGVtZW50LCBhdHRyKSB7Ci0gICAgLy8gVE9E
TzogbW92ZSB0aGlzIHRvIHNjZW5hcmlvIHJ1bm5lcgotICAgIHZhciBpbnRlcnBvbGF0ZUZuID0g
JGludGVycG9sYXRlKGVsZW1lbnQuYXR0cihhdHRyLiRhdHRyLm5nQmluZFRlbXBsYXRlKSk7Ci0g
ICAgZWxlbWVudC5hZGRDbGFzcygnbmctYmluZGluZycpLmRhdGEoJyRiaW5kaW5nJywgaW50ZXJw
b2xhdGVGbik7Ci0gICAgYXR0ci4kb2JzZXJ2ZSgnbmdCaW5kVGVtcGxhdGUnLCBmdW5jdGlvbih2
YWx1ZSkgewotICAgICAgZWxlbWVudC50ZXh0KHZhbHVlKTsKLSAgICB9KTsKLSAgfQotfV07Ci0K
LQotLyoqCi0gKiBAbmdkb2MgZGlyZWN0aXZlCi0gKiBAbmFtZSBuZy5kaXJlY3RpdmU6bmdCaW5k
SHRtbFVuc2FmZQotICoKLSAqIEBkZXNjcmlwdGlvbgotICogQ3JlYXRlcyBhIGJpbmRpbmcgdGhh
dCB3aWxsIGlubmVySFRNTCB0aGUgcmVzdWx0IG9mIGV2YWx1YXRpbmcgdGhlIGBleHByZXNzaW9u
YCBpbnRvIHRoZSBjdXJyZW50Ci0gKiBlbGVtZW50LiAqVGhlIGlubmVySFRNTC1lZCBjb250ZW50
IHdpbGwgbm90IGJlIHNhbml0aXplZCEqIFlvdSBzaG91bGQgdXNlIHRoaXMgZGlyZWN0aXZlIG9u
bHkgaWYKLSAqIHtAbGluayBuZ1Nhbml0aXplLmRpcmVjdGl2ZTpuZ0JpbmRIdG1sIG5nQmluZEh0
bWx9IGRpcmVjdGl2ZSBpcyB0b28KLSAqIHJlc3RyaWN0aXZlIGFuZCB3aGVuIHlvdSBhYnNvbHV0
ZWx5IHRydXN0IHRoZSBzb3VyY2Ugb2YgdGhlIGNvbnRlbnQgeW91IGFyZSBiaW5kaW5nIHRvLgot
ICoKLSAqIFNlZSB7QGxpbmsgbmdTYW5pdGl6ZS4kc2FuaXRpemUgJHNhbml0aXplfSBkb2NzIGZv
ciBleGFtcGxlcy4KLSAqCi0gKiBAZWxlbWVudCBBTlkKLSAqIEBwYXJhbSB7ZXhwcmVzc2lvbn0g
bmdCaW5kSHRtbFVuc2FmZSB7QGxpbmsgZ3VpZGUvZXhwcmVzc2lvbiBFeHByZXNzaW9ufSB0byBl
dmFsdWF0ZS4KLSAqLwotdmFyIG5nQmluZEh0bWxVbnNhZmVEaXJlY3RpdmUgPSBbZnVuY3Rpb24o
KSB7Ci0gIHJldHVybiBmdW5jdGlvbihzY29wZSwgZWxlbWVudCwgYXR0cikgewotICAgIGVsZW1l
bnQuYWRkQ2xhc3MoJ25nLWJpbmRpbmcnKS5kYXRhKCckYmluZGluZycsIGF0dHIubmdCaW5kSHRt
bFVuc2FmZSk7Ci0gICAgc2NvcGUuJHdhdGNoKGF0dHIubmdCaW5kSHRtbFVuc2FmZSwgZnVuY3Rp
b24gbmdCaW5kSHRtbFVuc2FmZVdhdGNoQWN0aW9uKHZhbHVlKSB7Ci0gICAgICBlbGVtZW50Lmh0
bWwodmFsdWUgfHwgJycpOwotICAgIH0pOwotICB9OwotfV07Ci0KLWZ1bmN0aW9uIGNsYXNzRGly
ZWN0aXZlKG5hbWUsIHNlbGVjdG9yKSB7Ci0gIG5hbWUgPSAnbmdDbGFzcycgKyBuYW1lOwotICBy
ZXR1cm4gbmdEaXJlY3RpdmUoZnVuY3Rpb24oc2NvcGUsIGVsZW1lbnQsIGF0dHIpIHsKLSAgICB2
YXIgb2xkVmFsID0gdW5kZWZpbmVkOwotCi0gICAgc2NvcGUuJHdhdGNoKGF0dHJbbmFtZV0sIG5n
Q2xhc3NXYXRjaEFjdGlvbiwgdHJ1ZSk7Ci0KLSAgICBhdHRyLiRvYnNlcnZlKCdjbGFzcycsIGZ1
bmN0aW9uKHZhbHVlKSB7Ci0gICAgICB2YXIgbmdDbGFzcyA9IHNjb3BlLiRldmFsKGF0dHJbbmFt
ZV0pOwotICAgICAgbmdDbGFzc1dhdGNoQWN0aW9uKG5nQ2xhc3MsIG5nQ2xhc3MpOwotICAgIH0p
OwotCi0KLSAgICBpZiAobmFtZSAhPT0gJ25nQ2xhc3MnKSB7Ci0gICAgICBzY29wZS4kd2F0Y2go
JyRpbmRleCcsIGZ1bmN0aW9uKCRpbmRleCwgb2xkJGluZGV4KSB7Ci0gICAgICAgIHZhciBtb2Qg
PSAkaW5kZXggJiAxOwotICAgICAgICBpZiAobW9kICE9PSBvbGQkaW5kZXggJiAxKSB7Ci0gICAg
ICAgICAgaWYgKG1vZCA9PT0gc2VsZWN0b3IpIHsKLSAgICAgICAgICAgIGFkZENsYXNzKHNjb3Bl
LiRldmFsKGF0dHJbbmFtZV0pKTsKLSAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmVt
b3ZlQ2xhc3Moc2NvcGUuJGV2YWwoYXR0cltuYW1lXSkpOwotICAgICAgICAgIH0KLSAgICAgICAg
fQotICAgICAgfSk7Ci0gICAgfQotCi0KLSAgICBmdW5jdGlvbiBuZ0NsYXNzV2F0Y2hBY3Rpb24o
bmV3VmFsKSB7Ci0gICAgICBpZiAoc2VsZWN0b3IgPT09IHRydWUgfHwgc2NvcGUuJGluZGV4ICUg
MiA9PT0gc2VsZWN0b3IpIHsKLSAgICAgICAgaWYgKG9sZFZhbCAmJiAhZXF1YWxzKG5ld1ZhbCxv
bGRWYWwpKSB7Ci0gICAgICAgICAgcmVtb3ZlQ2xhc3Mob2xkVmFsKTsKLSAgICAgICAgfQotICAg
ICAgICBhZGRDbGFzcyhuZXdWYWwpOwotICAgICAgfQotICAgICAgb2xkVmFsID0gY29weShuZXdW
YWwpOwotICAgIH0KLQotCi0gICAgZnVuY3Rpb24gcmVtb3ZlQ2xhc3MoY2xhc3NWYWwpIHsKLSAg
ICAgIGlmIChpc09iamVjdChjbGFzc1ZhbCkgJiYgIWlzQXJyYXkoY2xhc3NWYWwpKSB7Ci0gICAg
ICAgIGNsYXNzVmFsID0gbWFwKGNsYXNzVmFsLCBmdW5jdGlvbih2LCBrKSB7IGlmICh2KSByZXR1
cm4gayB9KTsKLSAgICAgIH0KLSAgICAgIGVsZW1lbnQucmVtb3ZlQ2xhc3MoaXNBcnJheShjbGFz
c1ZhbCkgPyBjbGFzc1ZhbC5qb2luKCcgJykgOiBjbGFzc1ZhbCk7Ci0gICAgfQotCi0KLSAgICBm
dW5jdGlvbiBhZGRDbGFzcyhjbGFzc1ZhbCkgewotICAgICAgaWYgKGlzT2JqZWN0KGNsYXNzVmFs
KSAmJiAhaXNBcnJheShjbGFzc1ZhbCkpIHsKLSAgICAgICAgY2xhc3NWYWwgPSBtYXAoY2xhc3NW
YWwsIGZ1bmN0aW9uKHYsIGspIHsgaWYgKHYpIHJldHVybiBrIH0pOwotICAgICAgfQotICAgICAg
aWYgKGNsYXNzVmFsKSB7Ci0gICAgICAgIGVsZW1lbnQuYWRkQ2xhc3MoaXNBcnJheShjbGFzc1Zh
bCkgPyBjbGFzc1ZhbC5qb2luKCcgJykgOiBjbGFzc1ZhbCk7Ci0gICAgICB9Ci0gICAgfQotICB9
KTsKLX0KLQotLyoqCi0gKiBAbmdkb2MgZGlyZWN0aXZlCi0gKiBAbmFtZSBuZy5kaXJlY3RpdmU6
bmdDbGFzcwotICoKLSAqIEBkZXNjcmlwdGlvbgotICogVGhlIGBuZ0NsYXNzYCBhbGxvd3MgeW91
IHRvIHNldCBDU1MgY2xhc3Mgb24gSFRNTCBlbGVtZW50IGR5bmFtaWNhbGx5IGJ5IGRhdGFiaW5k
aW5nIGFuCi0gKiBleHByZXNzaW9uIHRoYXQgcmVwcmVzZW50cyBhbGwgY2xhc3NlcyB0byBiZSBh
ZGRlZC4KLSAqCi0gKiBUaGUgZGlyZWN0aXZlIHdvbid0IGFkZCBkdXBsaWNhdGUgY2xhc3NlcyBp
ZiBhIHBhcnRpY3VsYXIgY2xhc3Mgd2FzIGFscmVhZHkgc2V0LgotICoKLSAqIFdoZW4gdGhlIGV4
cHJlc3Npb24gY2hhbmdlcywgdGhlIHByZXZpb3VzbHkgYWRkZWQgY2xhc3NlcyBhcmUgcmVtb3Zl
ZCBhbmQgb25seSB0aGVuIHRoZQotICogbmV3IGNsYXNzZXMgYXJlIGFkZGVkLgotICoKLSAqIEBl
bGVtZW50IEFOWQotICogQHBhcmFtIHtleHByZXNzaW9ufSBuZ0NsYXNzIHtAbGluayBndWlkZS9l
eHByZXNzaW9uIEV4cHJlc3Npb259IHRvIGV2YWwuIFRoZSByZXN1bHQKLSAqICAgb2YgdGhlIGV2
YWx1YXRpb24gY2FuIGJlIGEgc3RyaW5nIHJlcHJlc2VudGluZyBzcGFjZSBkZWxpbWl0ZWQgY2xh
c3MKLSAqICAgbmFtZXMsIGFuIGFycmF5LCBvciBhIG1hcCBvZiBjbGFzcyBuYW1lcyB0byBib29s
ZWFuIHZhbHVlcy4KLSAqCi0gKiBAZXhhbXBsZQotICAgPGV4YW1wbGU+Ci0gICAgIDxmaWxlIG5h
bWU9ImluZGV4Lmh0bWwiPgotICAgICAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9InNldCIg
bmctY2xpY2s9Im15VmFyPSdteS1jbGFzcyciPgotICAgICAgPGlucHV0IHR5cGU9ImJ1dHRvbiIg
dmFsdWU9ImNsZWFyIiBuZy1jbGljaz0ibXlWYXI9JyciPgotICAgICAgPGJyPgotICAgICAgPHNw
YW4gbmctY2xhc3M9Im15VmFyIj5TYW1wbGUgVGV4dDwvc3Bhbj4KLSAgICAgPC9maWxlPgotICAg
ICA8ZmlsZSBuYW1lPSJzdHlsZS5jc3MiPgotICAgICAgIC5teS1jbGFzcyB7Ci0gICAgICAgICBj
b2xvcjogcmVkOwotICAgICAgIH0KLSAgICAgPC9maWxlPgotICAgICA8ZmlsZSBuYW1lPSJzY2Vu
YXJpby5qcyI+Ci0gICAgICAgaXQoJ3Nob3VsZCBjaGVjayBuZy1jbGFzcycsIGZ1bmN0aW9uKCkg
ewotICAgICAgICAgZXhwZWN0KGVsZW1lbnQoJy5kb2MtZXhhbXBsZS1saXZlIHNwYW4nKS5wcm9w
KCdjbGFzc05hbWUnKSkubm90KCkuCi0gICAgICAgICAgIHRvTWF0Y2goL215LWNsYXNzLyk7Ci0K
LSAgICAgICAgIHVzaW5nKCcuZG9jLWV4YW1wbGUtbGl2ZScpLmVsZW1lbnQoJzpidXR0b246Zmly
c3QnKS5jbGljaygpOwotCi0gICAgICAgICBleHBlY3QoZWxlbWVudCgnLmRvYy1leGFtcGxlLWxp
dmUgc3BhbicpLnByb3AoJ2NsYXNzTmFtZScpKS4KLSAgICAgICAgICAgdG9NYXRjaCgvbXktY2xh
c3MvKTsKLQotICAgICAgICAgdXNpbmcoJy5kb2MtZXhhbXBsZS1saXZlJykuZWxlbWVudCgnOmJ1
dHRvbjpsYXN0JykuY2xpY2soKTsKLQotICAgICAgICAgZXhwZWN0KGVsZW1lbnQoJy5kb2MtZXhh
bXBsZS1saXZlIHNwYW4nKS5wcm9wKCdjbGFzc05hbWUnKSkubm90KCkuCi0gICAgICAgICAgIHRv
TWF0Y2goL215LWNsYXNzLyk7Ci0gICAgICAgfSk7Ci0gICAgIDwvZmlsZT4KLSAgIDwvZXhhbXBs
ZT4KLSAqLwotdmFyIG5nQ2xhc3NEaXJlY3RpdmUgPSBjbGFzc0RpcmVjdGl2ZSgnJywgdHJ1ZSk7
Ci0KLS8qKgotICogQG5nZG9jIGRpcmVjdGl2ZQotICogQG5hbWUgbmcuZGlyZWN0aXZlOm5nQ2xh
c3NPZGQKLSAqCi0gKiBAZGVzY3JpcHRpb24KLSAqIFRoZSBgbmdDbGFzc09kZGAgYW5kIGBuZ0Ns
YXNzRXZlbmAgZGlyZWN0aXZlcyB3b3JrIGV4YWN0bHkgYXMKLSAqIHtAbGluayBuZy5kaXJlY3Rp
dmU6bmdDbGFzcyBuZ0NsYXNzfSwgZXhjZXB0IGl0IHdvcmtzIGluCi0gKiBjb25qdW5jdGlvbiB3
aXRoIGBuZ1JlcGVhdGAgYW5kIHRha2VzIGFmZmVjdCBvbmx5IG9uIG9kZCAoZXZlbikgcm93cy4K
LSAqCi0gKiBUaGlzIGRpcmVjdGl2ZSBjYW4gYmUgYXBwbGllZCBvbmx5IHdpdGhpbiBhIHNjb3Bl
IG9mIGFuCi0gKiB7QGxpbmsgbmcuZGlyZWN0aXZlOm5nUmVwZWF0IG5nUmVwZWF0fS4KLSAqCi0g
KiBAZWxlbWVudCBBTlkKLSAqIEBwYXJhbSB7ZXhwcmVzc2lvbn0gbmdDbGFzc09kZCB7QGxpbmsg
Z3VpZGUvZXhwcmVzc2lvbiBFeHByZXNzaW9ufSB0byBldmFsLiBUaGUgcmVzdWx0Ci0gKiAgIG9m
IHRoZSBldmFsdWF0aW9uIGNhbiBiZSBhIHN0cmluZyByZXByZXNlbnRpbmcgc3BhY2UgZGVsaW1p
dGVkIGNsYXNzIG5hbWVzIG9yIGFuIGFycmF5LgotICoKLSAqIEBleGFtcGxlCi0gICA8ZXhhbXBs
ZT4KLSAgICAgPGZpbGUgbmFtZT0iaW5kZXguaHRtbCI+Ci0gICAgICAgIDxvbCBuZy1pbml0PSJu
YW1lcz1bJ0pvaG4nLCAnTWFyeScsICdDYXRlJywgJ1N1eiddIj4KLSAgICAgICAgICA8bGkgbmct
cmVwZWF0PSJuYW1lIGluIG5hbWVzIj4KLSAgICAgICAgICAgPHNwYW4gbmctY2xhc3Mtb2RkPSIn
b2RkJyIgbmctY2xhc3MtZXZlbj0iJ2V2ZW4nIj4KLSAgICAgICAgICAgICB7e25hbWV9fQotICAg
ICAgICAgICA8L3NwYW4+Ci0gICAgICAgICAgPC9saT4KLSAgICAgICAgPC9vbD4KLSAgICAgPC9m
aWxlPgotICAgICA8ZmlsZSBuYW1lPSJzdHlsZS5jc3MiPgotICAgICAgIC5vZGQgewotICAgICAg
ICAgY29sb3I6IHJlZDsKLSAgICAgICB9Ci0gICAgICAgLmV2ZW4gewotICAgICAgICAgY29sb3I6
IGJsdWU7Ci0gICAgICAgfQotICAgICA8L2ZpbGU+Ci0gICAgIDxmaWxlIG5hbWU9InNjZW5hcmlv
LmpzIj4KLSAgICAgICBpdCgnc2hvdWxkIGNoZWNrIG5nLWNsYXNzLW9kZCBhbmQgbmctY2xhc3Mt
ZXZlbicsIGZ1bmN0aW9uKCkgewotICAgICAgICAgZXhwZWN0KGVsZW1lbnQoJy5kb2MtZXhhbXBs
ZS1saXZlIGxpOmZpcnN0IHNwYW4nKS5wcm9wKCdjbGFzc05hbWUnKSkuCi0gICAgICAgICAgIHRv
TWF0Y2goL29kZC8pOwotICAgICAgICAgZXhwZWN0KGVsZW1lbnQoJy5kb2MtZXhhbXBsZS1saXZl
IGxpOmxhc3Qgc3BhbicpLnByb3AoJ2NsYXNzTmFtZScpKS4KLSAgICAgICAgICAgdG9NYXRjaCgv
ZXZlbi8pOwotICAgICAgIH0pOwotICAgICA8L2ZpbGU+Ci0gICA8L2V4YW1wbGU+Ci0gKi8KLXZh
ciBuZ0NsYXNzT2RkRGlyZWN0aXZlID0gY2xhc3NEaXJlY3RpdmUoJ09kZCcsIDApOwotCi0vKioK
LSAqIEBuZ2RvYyBkaXJlY3RpdmUKLSAqIEBuYW1lIG5nLmRpcmVjdGl2ZTpuZ0NsYXNzRXZlbgot
ICoKLSAqIEBkZXNjcmlwdGlvbgotICogVGhlIGBuZ0NsYXNzT2RkYCBhbmQgYG5nQ2xhc3NFdmVu
YCBkaXJlY3RpdmVzIHdvcmsgZXhhY3RseSBhcwotICoge0BsaW5rIG5nLmRpcmVjdGl2ZTpuZ0Ns
YXNzIG5nQ2xhc3N9LCBleGNlcHQgaXQgd29ya3MgaW4KLSAqIGNvbmp1bmN0aW9uIHdpdGggYG5n
UmVwZWF0YCBhbmQgdGFrZXMgYWZmZWN0IG9ubHkgb24gb2RkIChldmVuKSByb3dzLgotICoKLSAq
IFRoaXMgZGlyZWN0aXZlIGNhbiBiZSBhcHBsaWVkIG9ubHkgd2l0aGluIGEgc2NvcGUgb2YgYW4K
LSAqIHtAbGluayBuZy5kaXJlY3RpdmU6bmdSZXBlYXQgbmdSZXBlYXR9LgotICoKLSAqIEBlbGVt
ZW50IEFOWQotICogQHBhcmFtIHtleHByZXNzaW9ufSBuZ0NsYXNzRXZlbiB7QGxpbmsgZ3VpZGUv
ZXhwcmVzc2lvbiBFeHByZXNzaW9ufSB0byBldmFsLiBUaGUKLSAqICAgcmVzdWx0IG9mIHRoZSBl
dmFsdWF0aW9uIGNhbiBiZSBhIHN0cmluZyByZXByZXNlbnRpbmcgc3BhY2UgZGVsaW1pdGVkIGNs
YXNzIG5hbWVzIG9yIGFuIGFycmF5LgotICoKLSAqIEBleGFtcGxlCi0gICA8ZXhhbXBsZT4KLSAg
ICAgPGZpbGUgbmFtZT0iaW5kZXguaHRtbCI+Ci0gICAgICAgIDxvbCBuZy1pbml0PSJuYW1lcz1b
J0pvaG4nLCAnTWFyeScsICdDYXRlJywgJ1N1eiddIj4KLSAgICAgICAgICA8bGkgbmctcmVwZWF0
PSJuYW1lIGluIG5hbWVzIj4KLSAgICAgICAgICAgPHNwYW4gbmctY2xhc3Mtb2RkPSInb2RkJyIg
bmctY2xhc3MtZXZlbj0iJ2V2ZW4nIj4KLSAgICAgICAgICAgICB7e25hbWV9fSAmbmJzcDsgJm5i
c3A7ICZuYnNwOwotICAgICAgICAgICA8L3NwYW4+Ci0gICAgICAgICAgPC9saT4KLSAgICAgICAg
PC9vbD4KLSAgICAgPC9maWxlPgotICAgICA8ZmlsZSBuYW1lPSJzdHlsZS5jc3MiPgotICAgICAg
IC5vZGQgewotICAgICAgICAgY29sb3I6IHJlZDsKLSAgICAgICB9Ci0gICAgICAgLmV2ZW4gewot
ICAgICAgICAgY29sb3I6IGJsdWU7Ci0gICAgICAgfQotICAgICA8L2ZpbGU+Ci0gICAgIDxmaWxl
IG5hbWU9InNjZW5hcmlvLmpzIj4KLSAgICAgICBpdCgnc2hvdWxkIGNoZWNrIG5nLWNsYXNzLW9k
ZCBhbmQgbmctY2xhc3MtZXZlbicsIGZ1bmN0aW9uKCkgewotICAgICAgICAgZXhwZWN0KGVsZW1l
bnQoJy5kb2MtZXhhbXBsZS1saXZlIGxpOmZpcnN0IHNwYW4nKS5wcm9wKCdjbGFzc05hbWUnKSku
Ci0gICAgICAgICAgIHRvTWF0Y2goL29kZC8pOwotICAgICAgICAgZXhwZWN0KGVsZW1lbnQoJy5k
b2MtZXhhbXBsZS1saXZlIGxpOmxhc3Qgc3BhbicpLnByb3AoJ2NsYXNzTmFtZScpKS4KLSAgICAg
ICAgICAgdG9NYXRjaCgvZXZlbi8pOwotICAgICAgIH0pOwotICAgICA8L2ZpbGU+Ci0gICA8L2V4
YW1wbGU+Ci0gKi8KLXZhciBuZ0NsYXNzRXZlbkRpcmVjdGl2ZSA9IGNsYXNzRGlyZWN0aXZlKCdF
dmVuJywgMSk7Ci0KLS8qKgotICogQG5nZG9jIGRpcmVjdGl2ZQotICogQG5hbWUgbmcuZGlyZWN0
aXZlOm5nQ2xvYWsKLSAqCi0gKiBAZGVzY3JpcHRpb24KLSAqIFRoZSBgbmdDbG9ha2AgZGlyZWN0
aXZlIGlzIHVzZWQgdG8gcHJldmVudCB0aGUgQW5ndWxhciBodG1sIHRlbXBsYXRlIGZyb20gYmVp
bmcgYnJpZWZseQotICogZGlzcGxheWVkIGJ5IHRoZSBicm93c2VyIGluIGl0cyByYXcgKHVuY29t
cGlsZWQpIGZvcm0gd2hpbGUgeW91ciBhcHBsaWNhdGlvbiBpcyBsb2FkaW5nLiBVc2UgdGhpcwot
ICogZGlyZWN0aXZlIHRvIGF2b2lkIHRoZSB1bmRlc2lyYWJsZSBmbGlja2VyIGVmZmVjdCBjYXVz
ZWQgYnkgdGhlIGh0bWwgdGVtcGxhdGUgZGlzcGxheS4KLSAqCi0gKiBUaGUgZGlyZWN0aXZlIGNh
biBiZSBhcHBsaWVkIHRvIHRoZSBgPGJvZHk+YCBlbGVtZW50LCBidXQgdHlwaWNhbGx5IGEgZmlu
ZS1ncmFpbmVkIGFwcGxpY2F0aW9uIGlzCi0gKiBwcmVmZXJlZCBpbiBvcmRlciB0byBiZW5lZml0
IGZyb20gcHJvZ3Jlc3NpdmUgcmVuZGVyaW5nIG9mIHRoZSBicm93c2VyIHZpZXcuCi0gKgotICog
YG5nQ2xvYWtgIHdvcmtzIGluIGNvb3BlcmF0aW9uIHdpdGggYSBjc3MgcnVsZSB0aGF0IGlzIGVt
YmVkZGVkIHdpdGhpbiBgYW5ndWxhci5qc2AgYW5kCi0gKiAgYGFuZ3VsYXIubWluLmpzYCBmaWxl
cy4gRm9sbG93aW5nIGlzIHRoZSBjc3MgcnVsZToKLSAqCi0gKiA8cHJlPgotICogW25nXDpjbG9h
a10sIFtuZy1jbG9ha10sIFtkYXRhLW5nLWNsb2FrXSwgW3gtbmctY2xvYWtdLCAubmctY2xvYWss
IC54LW5nLWNsb2FrIHsKLSAqICAgZGlzcGxheTogbm9uZTsKLSAqIH0KLSAqIDwvcHJlPgotICoK
LSAqIFdoZW4gdGhpcyBjc3MgcnVsZSBpcyBsb2FkZWQgYnkgdGhlIGJyb3dzZXIsIGFsbCBodG1s
IGVsZW1lbnRzIChpbmNsdWRpbmcgdGhlaXIgY2hpbGRyZW4pIHRoYXQKLSAqIGFyZSB0YWdnZWQg
d2l0aCB0aGUgYG5nLWNsb2FrYCBkaXJlY3RpdmUgYXJlIGhpZGRlbi4gV2hlbiBBbmd1bGFyIGNv
bWVzIGFjcm9zcyB0aGlzIGRpcmVjdGl2ZQotICogZHVyaW5nIHRoZSBjb21waWxhdGlvbiBvZiB0
aGUgdGVtcGxhdGUgaXQgZGVsZXRlcyB0aGUgYG5nQ2xvYWtgIGVsZW1lbnQgYXR0cmlidXRlLCB3
aGljaAotICogbWFrZXMgdGhlIGNvbXBpbGVkIGVsZW1lbnQgdmlzaWJsZS4KLSAqCi0gKiBGb3Ig
dGhlIGJlc3QgcmVzdWx0LCBgYW5ndWxhci5qc2Agc2NyaXB0IG11c3QgYmUgbG9hZGVkIGluIHRo
ZSBoZWFkIHNlY3Rpb24gb2YgdGhlIGh0bWwgZmlsZTsKLSAqIGFsdGVybmF0aXZlbHksIHRoZSBj
c3MgcnVsZSAoYWJvdmUpIG11c3QgYmUgaW5jbHVkZWQgaW4gdGhlIGV4dGVybmFsIHN0eWxlc2hl
ZXQgb2YgdGhlCi0gKiBhcHBsaWNhdGlvbi4KLSAqCi0gKiBMZWdhY3kgYnJvd3NlcnMsIGxpa2Ug
SUU3LCBkbyBub3QgcHJvdmlkZSBhdHRyaWJ1dGUgc2VsZWN0b3Igc3VwcG9ydCAoYWRkZWQgaW4g
Q1NTIDIuMSkgc28gdGhleQotICogY2Fubm90IG1hdGNoIHRoZSBgW25nXDpjbG9ha11gIHNlbGVj
dG9yLiBUbyB3b3JrIGFyb3VuZCB0aGlzIGxpbWl0YXRpb24sIHlvdSBtdXN0IGFkZCB0aGUgY3Nz
Ci0gKiBjbGFzcyBgbmdDbG9ha2AgaW4gYWRkaXRpb24gdG8gYG5nQ2xvYWtgIGRpcmVjdGl2ZSBh
cyBzaG93biBpbiB0aGUgZXhhbXBsZSBiZWxvdy4KLSAqCi0gKiBAZWxlbWVudCBBTlkKLSAqCi0g
KiBAZXhhbXBsZQotICAgPGRvYzpleGFtcGxlPgotICAgICA8ZG9jOnNvdXJjZT4KLSAgICAgICAg
PGRpdiBpZD0idGVtcGxhdGUxIiBuZy1jbG9haz57eyAnaGVsbG8nIH19PC9kaXY+Ci0gICAgICAg
IDxkaXYgaWQ9InRlbXBsYXRlMiIgbmctY2xvYWsgY2xhc3M9Im5nLWNsb2FrIj57eyAnaGVsbG8g
SUU3JyB9fTwvZGl2PgotICAgICA8L2RvYzpzb3VyY2U+Ci0gICAgIDxkb2M6c2NlbmFyaW8+Ci0g
ICAgICAgaXQoJ3Nob3VsZCByZW1vdmUgdGhlIHRlbXBsYXRlIGRpcmVjdGl2ZSBhbmQgY3NzIGNs
YXNzJywgZnVuY3Rpb24oKSB7Ci0gICAgICAgICBleHBlY3QoZWxlbWVudCgnLmRvYy1leGFtcGxl
LWxpdmUgI3RlbXBsYXRlMScpLmF0dHIoJ25nLWNsb2FrJykpLgotICAgICAgICAgICBub3QoKS50
b0JlRGVmaW5lZCgpOwotICAgICAgICAgZXhwZWN0KGVsZW1lbnQoJy5kb2MtZXhhbXBsZS1saXZl
ICN0ZW1wbGF0ZTInKS5hdHRyKCduZy1jbG9haycpKS4KLSAgICAgICAgICAgbm90KCkudG9CZURl
ZmluZWQoKTsKLSAgICAgICB9KTsKLSAgICAgPC9kb2M6c2NlbmFyaW8+Ci0gICA8L2RvYzpleGFt
cGxlPgotICoKLSAqLwotdmFyIG5nQ2xvYWtEaXJlY3RpdmUgPSBuZ0RpcmVjdGl2ZSh7Ci0gIGNv
bXBpbGU6IGZ1bmN0aW9uKGVsZW1lbnQsIGF0dHIpIHsKLSAgICBhdHRyLiRzZXQoJ25nQ2xvYWsn
LCB1bmRlZmluZWQpOwotICAgIGVsZW1lbnQucmVtb3ZlQ2xhc3MoJ25nLWNsb2FrJyk7Ci0gIH0K
LX0pOwotCi0vKioKLSAqIEBuZ2RvYyBkaXJlY3RpdmUKLSAqIEBuYW1lIG5nLmRpcmVjdGl2ZTpu
Z0NvbnRyb2xsZXIKLSAqCi0gKiBAZGVzY3JpcHRpb24KLSAqIFRoZSBgbmdDb250cm9sbGVyYCBk
aXJlY3RpdmUgYXNzaWducyBiZWhhdmlvciB0byBhIHNjb3BlLiBUaGlzIGlzIGEga2V5IGFzcGVj
dCBvZiBob3cgYW5ndWxhcgotICogc3VwcG9ydHMgdGhlIHByaW5jaXBsZXMgYmVoaW5kIHRoZSBN
b2RlbC1WaWV3LUNvbnRyb2xsZXIgZGVzaWduIHBhdHRlcm4uCi0gKgotICogTVZDIGNvbXBvbmVu
dHMgaW4gYW5ndWxhcjoKLSAqCi0gKiAqIE1vZGVsIOKAlCBUaGUgTW9kZWwgaXMgZGF0YSBpbiBz
Y29wZSBwcm9wZXJ0aWVzOyBzY29wZXMgYXJlIGF0dGFjaGVkIHRvIHRoZSBET00uCi0gKiAqIFZp
ZXcg4oCUIFRoZSB0ZW1wbGF0ZSAoSFRNTCB3aXRoIGRhdGEgYmluZGluZ3MpIGlzIHJlbmRlcmVk
IGludG8gdGhlIFZpZXcuCi0gKiAqIENvbnRyb2xsZXIg4oCUIFRoZSBgbmdDb250cm9sbGVyYCBk
aXJlY3RpdmUgc3BlY2lmaWVzIGEgQ29udHJvbGxlciBjbGFzczsgdGhlIGNsYXNzIGhhcwotICog
ICBtZXRob2RzIHRoYXQgdHlwaWNhbGx5IGV4cHJlc3MgdGhlIGJ1c2luZXNzIGxvZ2ljIGJlaGlu
ZCB0aGUgYXBwbGljYXRpb24uCi0gKgotICogTm90ZSB0aGF0IGFuIGFsdGVybmF0aXZlIHdheSB0
byBkZWZpbmUgY29udHJvbGxlcnMgaXMgdmlhIHRoZSB7QGxpbmsgbmcuJHJvdXRlICRyb3V0ZX0g
c2VydmljZS4KLSAqCi0gKiBAZWxlbWVudCBBTlkKLSAqIEBzY29wZQotICogQHBhcmFtIHtleHBy
ZXNzaW9ufSBuZ0NvbnRyb2xsZXIgTmFtZSBvZiBhIGdsb2JhbGx5IGFjY2Vzc2libGUgY29uc3Ry
dWN0b3IgZnVuY3Rpb24gb3IgYW4KLSAqICAgICB7QGxpbmsgZ3VpZGUvZXhwcmVzc2lvbiBleHBy
ZXNzaW9ufSB0aGF0IG9uIHRoZSBjdXJyZW50IHNjb3BlIGV2YWx1YXRlcyB0byBhCi0gKiAgICAg
Y29uc3RydWN0b3IgZnVuY3Rpb24uCi0gKgotICogQGV4YW1wbGUKLSAqIEhlcmUgaXMgYSBzaW1w
bGUgZm9ybSBmb3IgZWRpdGluZyB1c2VyIGNvbnRhY3QgaW5mb3JtYXRpb24uIEFkZGluZywgcmVt
b3ZpbmcsIGNsZWFyaW5nLCBhbmQKLSAqIGdyZWV0aW5nIGFyZSBtZXRob2RzIGRlY2xhcmVkIG9u
IHRoZSBjb250cm9sbGVyIChzZWUgc291cmNlIHRhYikuIFRoZXNlIG1ldGhvZHMgY2FuCi0gKiBl
YXNpbHkgYmUgY2FsbGVkIGZyb20gdGhlIGFuZ3VsYXIgbWFya3VwLiBOb3RpY2UgdGhhdCB0aGUg
c2NvcGUgYmVjb21lcyB0aGUgYHRoaXNgIGZvciB0aGUKLSAqIGNvbnRyb2xsZXIncyBpbnN0YW5j
ZS4gVGhpcyBhbGxvd3MgZm9yIGVhc3kgYWNjZXNzIHRvIHRoZSB2aWV3IGRhdGEgZnJvbSB0aGUg
Y29udHJvbGxlci4gQWxzbwotICogbm90aWNlIHRoYXQgYW55IGNoYW5nZXMgdG8gdGhlIGRhdGEg
YXJlIGF1dG9tYXRpY2FsbHkgcmVmbGVjdGVkIGluIHRoZSBWaWV3IHdpdGhvdXQgdGhlIG5lZWQK
LSAqIGZvciBhIG1hbnVhbCB1cGRhdGUuCi0gICA8ZG9jOmV4YW1wbGU+Ci0gICAgIDxkb2M6c291
cmNlPgotICAgICAgPHNjcmlwdD4KLSAgICAgICAgZnVuY3Rpb24gU2V0dGluZ3NDb250cm9sbGVy
KCRzY29wZSkgewotICAgICAgICAgICRzY29wZS5uYW1lID0gIkpvaG4gU21pdGgiOwotICAgICAg
ICAgICRzY29wZS5jb250YWN0cyA9IFsKLSAgICAgICAgICAgIHt0eXBlOidwaG9uZScsIHZhbHVl
Oic0MDggNTU1IDEyMTInfSwKLSAgICAgICAgICAgIHt0eXBlOidlbWFpbCcsIHZhbHVlOidqb2hu
LnNtaXRoQGV4YW1wbGUub3JnJ30gXTsKLQotICAgICAgICAgICRzY29wZS5ncmVldCA9IGZ1bmN0
aW9uKCkgewotICAgICAgICAgICBhbGVydCh0aGlzLm5hbWUpOwotICAgICAgICAgIH07Ci0KLSAg
ICAgICAgICAkc2NvcGUuYWRkQ29udGFjdCA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICB0aGlz
LmNvbnRhY3RzLnB1c2goe3R5cGU6J2VtYWlsJywgdmFsdWU6J3lvdXJuYW1lQGV4YW1wbGUub3Jn
J30pOwotICAgICAgICAgIH07Ci0KLSAgICAgICAgICAkc2NvcGUucmVtb3ZlQ29udGFjdCA9IGZ1
bmN0aW9uKGNvbnRhY3RUb1JlbW92ZSkgewotICAgICAgICAgICB2YXIgaW5kZXggPSB0aGlzLmNv
bnRhY3RzLmluZGV4T2YoY29udGFjdFRvUmVtb3ZlKTsKLSAgICAgICAgICAgdGhpcy5jb250YWN0
cy5zcGxpY2UoaW5kZXgsIDEpOwotICAgICAgICAgIH07Ci0KLSAgICAgICAgICAkc2NvcGUuY2xl
YXJDb250YWN0ID0gZnVuY3Rpb24oY29udGFjdCkgewotICAgICAgICAgICBjb250YWN0LnR5cGUg
PSAncGhvbmUnOwotICAgICAgICAgICBjb250YWN0LnZhbHVlID0gJyc7Ci0gICAgICAgICAgfTsK
LSAgICAgICAgfQotICAgICAgPC9zY3JpcHQ+Ci0gICAgICA8ZGl2IG5nLWNvbnRyb2xsZXI9IlNl
dHRpbmdzQ29udHJvbGxlciI+Ci0gICAgICAgIE5hbWU6IDxpbnB1dCB0eXBlPSJ0ZXh0IiBuZy1t
b2RlbD0ibmFtZSIvPgotICAgICAgICBbIDxhIGhyZWY9IiIgbmctY2xpY2s9ImdyZWV0KCkiPmdy
ZWV0PC9hPiBdPGJyLz4KLSAgICAgICAgQ29udGFjdDoKLSAgICAgICAgPHVsPgotICAgICAgICAg
IDxsaSBuZy1yZXBlYXQ9ImNvbnRhY3QgaW4gY29udGFjdHMiPgotICAgICAgICAgICAgPHNlbGVj
dCBuZy1tb2RlbD0iY29udGFjdC50eXBlIj4KLSAgICAgICAgICAgICAgIDxvcHRpb24+cGhvbmU8
L29wdGlvbj4KLSAgICAgICAgICAgICAgIDxvcHRpb24+ZW1haWw8L29wdGlvbj4KLSAgICAgICAg
ICAgIDwvc2VsZWN0PgotICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5nLW1vZGVsPSJj
b250YWN0LnZhbHVlIi8+Ci0gICAgICAgICAgICBbIDxhIGhyZWY9IiIgbmctY2xpY2s9ImNsZWFy
Q29udGFjdChjb250YWN0KSI+Y2xlYXI8L2E+Ci0gICAgICAgICAgICB8IDxhIGhyZWY9IiIgbmct
Y2xpY2s9InJlbW92ZUNvbnRhY3QoY29udGFjdCkiPlg8L2E+IF0KLSAgICAgICAgICA8L2xpPgot
ICAgICAgICAgIDxsaT5bIDxhIGhyZWY9IiIgbmctY2xpY2s9ImFkZENvbnRhY3QoKSI+YWRkPC9h
PiBdPC9saT4KLSAgICAgICA8L3VsPgotICAgICAgPC9kaXY+Ci0gICAgIDwvZG9jOnNvdXJjZT4K
LSAgICAgPGRvYzpzY2VuYXJpbz4KLSAgICAgICBpdCgnc2hvdWxkIGNoZWNrIGNvbnRyb2xsZXIn
LCBmdW5jdGlvbigpIHsKLSAgICAgICAgIGV4cGVjdChlbGVtZW50KCcuZG9jLWV4YW1wbGUtbGl2
ZSBkaXY+OmlucHV0JykudmFsKCkpLnRvQmUoJ0pvaG4gU21pdGgnKTsKLSAgICAgICAgIGV4cGVj
dChlbGVtZW50KCcuZG9jLWV4YW1wbGUtbGl2ZSBsaTpudGgtY2hpbGQoMSkgaW5wdXQnKS52YWwo
KSkKLSAgICAgICAgICAgLnRvQmUoJzQwOCA1NTUgMTIxMicpOwotICAgICAgICAgZXhwZWN0KGVs
ZW1lbnQoJy5kb2MtZXhhbXBsZS1saXZlIGxpOm50aC1jaGlsZCgyKSBpbnB1dCcpLnZhbCgpKQot
ICAgICAgICAgICAudG9CZSgnam9obi5zbWl0aEBleGFtcGxlLm9yZycpOwotCi0gICAgICAgICBl
bGVtZW50KCcuZG9jLWV4YW1wbGUtbGl2ZSBsaTpmaXJzdCBhOmNvbnRhaW5zKCJjbGVhciIpJyku
Y2xpY2soKTsKLSAgICAgICAgIGV4cGVjdChlbGVtZW50KCcuZG9jLWV4YW1wbGUtbGl2ZSBsaTpm
aXJzdCBpbnB1dCcpLnZhbCgpKS50b0JlKCcnKTsKLQotICAgICAgICAgZWxlbWVudCgnLmRvYy1l
eGFtcGxlLWxpdmUgbGk6bGFzdCBhOmNvbnRhaW5zKCJhZGQiKScpLmNsaWNrKCk7Ci0gICAgICAg
ICBleHBlY3QoZWxlbWVudCgnLmRvYy1leGFtcGxlLWxpdmUgbGk6bnRoLWNoaWxkKDMpIGlucHV0
JykudmFsKCkpCi0gICAgICAgICAgIC50b0JlKCd5b3VybmFtZUBleGFtcGxlLm9yZycpOwotICAg
ICAgIH0pOwotICAgICA8L2RvYzpzY2VuYXJpbz4KLSAgIDwvZG9jOmV4YW1wbGU+Ci0gKi8KLXZh
ciBuZ0NvbnRyb2xsZXJEaXJlY3RpdmUgPSBbZnVuY3Rpb24oKSB7Ci0gIHJldHVybiB7Ci0gICAg
c2NvcGU6IHRydWUsCi0gICAgY29udHJvbGxlcjogJ0AnCi0gIH07Ci19XTsKLQotLyoqCi0gKiBA
bmdkb2MgZGlyZWN0aXZlCi0gKiBAbmFtZSBuZy5kaXJlY3RpdmU6bmdDc3AKLSAqIEBwcmlvcml0
eSAxMDAwCi0gKgotICogQGVsZW1lbnQgaHRtbAotICogQGRlc2NyaXB0aW9uCi0gKiBFbmFibGVz
IFtDU1AgKENvbnRlbnQgU2VjdXJpdHkgUG9saWN5KV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxs
YS5vcmcvZW4vU2VjdXJpdHkvQ1NQKSBzdXBwb3J0LgotICogCi0gKiBUaGlzIGlzIG5lY2Vzc2Fy
eSB3aGVuIGRldmVsb3BpbmcgdGhpbmdzIGxpa2UgR29vZ2xlIENocm9tZSBFeHRlbnNpb25zLgot
ICogCi0gKiBDU1AgZm9yYmlkcyBhcHBzIHRvIHVzZSBgZXZhbGAgb3IgYEZ1bmN0aW9uKHN0cmlu
ZylgIGdlbmVyYXRlZCBmdW5jdGlvbnMgKGFtb25nIG90aGVyIHRoaW5ncykuCi0gKiBGb3IgdXMg
dG8gYmUgY29tcGF0aWJsZSwgd2UganVzdCBuZWVkIHRvIGltcGxlbWVudCB0aGUgImdldHRlckZu
IiBpbiAkcGFyc2Ugd2l0aG91dCB2aW9sYXRpbmcKLSAqIGFueSBvZiB0aGVzZSByZXN0cmljdGlv
bnMuCi0gKiAKLSAqIEFuZ3VsYXJKUyB1c2VzIGBGdW5jdGlvbihzdHJpbmcpYCBnZW5lcmF0ZWQg
ZnVuY3Rpb25zIGFzIGEgc3BlZWQgb3B0aW1pemF0aW9uLiBCeSBhcHBseWluZyBgbmdDc3BgCi0g
KiBpdCBpcyBiZSBwb3NzaWJsZSB0byBvcHQgaW50byB0aGUgQ1NQIGNvbXBhdGlibGUgbW9kZS4g
V2hlbiB0aGlzIG1vZGUgaXMgb24gQW5ndWxhckpTIHdpbGwKLSAqIGV2YWx1YXRlIGFsbCBleHBy
ZXNzaW9ucyB1cCB0byAzMCUgc2xvd2VyIHRoYW4gaW4gbm9uLUNTUCBtb2RlLCBidXQgbm8gc2Vj
dXJpdHkgdmlvbGF0aW9ucyB3aWxsCi0gKiBiZSByYWlzZWQuCi0gKiAKLSAqIEluIG9yZGVyIHRv
IHVzZSB0aGlzIGZlYXR1cmUgcHV0IGBuZ0NzcGAgZGlyZWN0aXZlIG9uIHRoZSByb290IGVsZW1l
bnQgb2YgdGhlIGFwcGxpY2F0aW9uLgotICogCi0gKiBAZXhhbXBsZQotICogVGhpcyBleGFtcGxl
IHNob3dzIGhvdyB0byBhcHBseSB0aGUgYG5nQ3NwYCBkaXJlY3RpdmUgdG8gdGhlIGBodG1sYCB0
YWcuCi0gICA8cHJlPgotICAgICA8IWRvY3R5cGUgaHRtbD4KLSAgICAgPGh0bWwgbmctYXBwIG5n
LWNzcD4KLSAgICAgLi4uCi0gICAgIC4uLgotICAgICA8L2h0bWw+Ci0gICA8L3ByZT4KLSAqLwot
Ci12YXIgbmdDc3BEaXJlY3RpdmUgPSBbJyRzbmlmZmVyJywgZnVuY3Rpb24oJHNuaWZmZXIpIHsK
LSAgcmV0dXJuIHsKLSAgICBwcmlvcml0eTogMTAwMCwKLSAgICBjb21waWxlOiBmdW5jdGlvbigp
IHsKLSAgICAgICRzbmlmZmVyLmNzcCA9IHRydWU7Ci0gICAgfQotICB9OwotfV07Ci0KLS8qKgot
ICogQG5nZG9jIGRpcmVjdGl2ZQotICogQG5hbWUgbmcuZGlyZWN0aXZlOm5nQ2xpY2sKLSAqCi0g
KiBAZGVzY3JpcHRpb24KLSAqIFRoZSBuZ0NsaWNrIGFsbG93cyB5b3UgdG8gc3BlY2lmeSBjdXN0
b20gYmVoYXZpb3Igd2hlbgotICogZWxlbWVudCBpcyBjbGlja2VkLgotICoKLSAqIEBlbGVtZW50
IEFOWQotICogQHBhcmFtIHtleHByZXNzaW9ufSBuZ0NsaWNrIHtAbGluayBndWlkZS9leHByZXNz
aW9uIEV4cHJlc3Npb259IHRvIGV2YWx1YXRlIHVwb24KLSAqIGNsaWNrLiAoRXZlbnQgb2JqZWN0
IGlzIGF2YWlsYWJsZSBhcyBgJGV2ZW50YCkKLSAqCi0gKiBAZXhhbXBsZQotICAgPGRvYzpleGFt
cGxlPgotICAgICA8ZG9jOnNvdXJjZT4KLSAgICAgIDxidXR0b24gbmctY2xpY2s9ImNvdW50ID0g
Y291bnQgKyAxIiBuZy1pbml0PSJjb3VudD0wIj4KLSAgICAgICAgSW5jcmVtZW50Ci0gICAgICA8
L2J1dHRvbj4KLSAgICAgIGNvdW50OiB7e2NvdW50fX0KLSAgICAgPC9kb2M6c291cmNlPgotICAg
ICA8ZG9jOnNjZW5hcmlvPgotICAgICAgIGl0KCdzaG91bGQgY2hlY2sgbmctY2xpY2snLCBmdW5j
dGlvbigpIHsKLSAgICAgICAgIGV4cGVjdChiaW5kaW5nKCdjb3VudCcpKS50b0JlKCcwJyk7Ci0g
ICAgICAgICBlbGVtZW50KCcuZG9jLWV4YW1wbGUtbGl2ZSA6YnV0dG9uJykuY2xpY2soKTsKLSAg
ICAgICAgIGV4cGVjdChiaW5kaW5nKCdjb3VudCcpKS50b0JlKCcxJyk7Ci0gICAgICAgfSk7Ci0g
ICAgIDwvZG9jOnNjZW5hcmlvPgotICAgPC9kb2M6ZXhhbXBsZT4KLSAqLwotLyoKLSAqIEEgZGly
ZWN0aXZlIHRoYXQgYWxsb3dzIGNyZWF0aW9uIG9mIGN1c3RvbSBvbmNsaWNrIGhhbmRsZXJzIHRo
YXQgYXJlIGRlZmluZWQgYXMgYW5ndWxhcgotICogZXhwcmVzc2lvbnMgYW5kIGFyZSBjb21waWxl
ZCBhbmQgZXhlY3V0ZWQgd2l0aGluIHRoZSBjdXJyZW50IHNjb3BlLgotICoKLSAqIEV2ZW50cyB0
aGF0IGFyZSBoYW5kbGVkIHZpYSB0aGVzZSBoYW5kbGVyIGFyZSBhbHdheXMgY29uZmlndXJlZCBu
b3QgdG8gcHJvcGFnYXRlIGZ1cnRoZXIuCi0gKi8KLXZhciBuZ0V2ZW50RGlyZWN0aXZlcyA9IHt9
OwotZm9yRWFjaCgKLSAgJ2NsaWNrIGRibGNsaWNrIG1vdXNlZG93biBtb3VzZXVwIG1vdXNlb3Zl
ciBtb3VzZW91dCBtb3VzZW1vdmUgbW91c2VlbnRlciBtb3VzZWxlYXZlJy5zcGxpdCgnICcpLAot
ICBmdW5jdGlvbihuYW1lKSB7Ci0gICAgdmFyIGRpcmVjdGl2ZU5hbWUgPSBkaXJlY3RpdmVOb3Jt
YWxpemUoJ25nLScgKyBuYW1lKTsKLSAgICBuZ0V2ZW50RGlyZWN0aXZlc1tkaXJlY3RpdmVOYW1l
XSA9IFsnJHBhcnNlJywgZnVuY3Rpb24oJHBhcnNlKSB7Ci0gICAgICByZXR1cm4gZnVuY3Rpb24o
c2NvcGUsIGVsZW1lbnQsIGF0dHIpIHsKLSAgICAgICAgdmFyIGZuID0gJHBhcnNlKGF0dHJbZGly
ZWN0aXZlTmFtZV0pOwotICAgICAgICBlbGVtZW50LmJpbmQobG93ZXJjYXNlKG5hbWUpLCBmdW5j
dGlvbihldmVudCkgewotICAgICAgICAgIHNjb3BlLiRhcHBseShmdW5jdGlvbigpIHsKLSAgICAg
ICAgICAgIGZuKHNjb3BlLCB7JGV2ZW50OmV2ZW50fSk7Ci0gICAgICAgICAgfSk7Ci0gICAgICAg
IH0pOwotICAgICAgfTsKLSAgICB9XTsKLSAgfQotKTsKLQotLyoqCi0gKiBAbmdkb2MgZGlyZWN0
aXZlCi0gKiBAbmFtZSBuZy5kaXJlY3RpdmU6bmdEYmxjbGljawotICoKLSAqIEBkZXNjcmlwdGlv
bgotICogVGhlIGBuZ0RibGNsaWNrYCBkaXJlY3RpdmUgYWxsb3dzIHlvdSB0byBzcGVjaWZ5IGN1
c3RvbSBiZWhhdmlvciBvbiBkYmxjbGljayBldmVudC4KLSAqCi0gKiBAZWxlbWVudCBBTlkKLSAq
IEBwYXJhbSB7ZXhwcmVzc2lvbn0gbmdEYmxjbGljayB7QGxpbmsgZ3VpZGUvZXhwcmVzc2lvbiBF
eHByZXNzaW9ufSB0byBldmFsdWF0ZSB1cG9uCi0gKiBkYmxjbGljay4gKEV2ZW50IG9iamVjdCBp
cyBhdmFpbGFibGUgYXMgYCRldmVudGApCi0gKgotICogQGV4YW1wbGUKLSAqIFNlZSB7QGxpbmsg
bmcuZGlyZWN0aXZlOm5nQ2xpY2sgbmdDbGlja30KLSAqLwotCi0KLS8qKgotICogQG5nZG9jIGRp
cmVjdGl2ZQotICogQG5hbWUgbmcuZGlyZWN0aXZlOm5nTW91c2Vkb3duCi0gKgotICogQGRlc2Ny
aXB0aW9uCi0gKiBUaGUgbmdNb3VzZWRvd24gZGlyZWN0aXZlIGFsbG93cyB5b3UgdG8gc3BlY2lm
eSBjdXN0b20gYmVoYXZpb3Igb24gbW91c2Vkb3duIGV2ZW50LgotICoKLSAqIEBlbGVtZW50IEFO
WQotICogQHBhcmFtIHtleHByZXNzaW9ufSBuZ01vdXNlZG93biB7QGxpbmsgZ3VpZGUvZXhwcmVz
c2lvbiBFeHByZXNzaW9ufSB0byBldmFsdWF0ZSB1cG9uCi0gKiBtb3VzZWRvd24uIChFdmVudCBv
YmplY3QgaXMgYXZhaWxhYmxlIGFzIGAkZXZlbnRgKQotICoKLSAqIEBleGFtcGxlCi0gKiBTZWUg
e0BsaW5rIG5nLmRpcmVjdGl2ZTpuZ0NsaWNrIG5nQ2xpY2t9Ci0gKi8KLQotCi0vKioKLSAqIEBu
Z2RvYyBkaXJlY3RpdmUKLSAqIEBuYW1lIG5nLmRpcmVjdGl2ZTpuZ01vdXNldXAKLSAqCi0gKiBA
ZGVzY3JpcHRpb24KLSAqIFNwZWNpZnkgY3VzdG9tIGJlaGF2aW9yIG9uIG1vdXNldXAgZXZlbnQu
Ci0gKgotICogQGVsZW1lbnQgQU5ZCi0gKiBAcGFyYW0ge2V4cHJlc3Npb259IG5nTW91c2V1cCB7
QGxpbmsgZ3VpZGUvZXhwcmVzc2lvbiBFeHByZXNzaW9ufSB0byBldmFsdWF0ZSB1cG9uCi0gKiBt
b3VzZXVwLiAoRXZlbnQgb2JqZWN0IGlzIGF2YWlsYWJsZSBhcyBgJGV2ZW50YCkKLSAqCi0gKiBA
ZXhhbXBsZQotICogU2VlIHtAbGluayBuZy5kaXJlY3RpdmU6bmdDbGljayBuZ0NsaWNrfQotICov
Ci0KLS8qKgotICogQG5nZG9jIGRpcmVjdGl2ZQotICogQG5hbWUgbmcuZGlyZWN0aXZlOm5nTW91
c2VvdmVyCi0gKgotICogQGRlc2NyaXB0aW9uCi0gKiBTcGVjaWZ5IGN1c3RvbSBiZWhhdmlvciBv
biBtb3VzZW92ZXIgZXZlbnQuCi0gKgotICogQGVsZW1lbnQgQU5ZCi0gKiBAcGFyYW0ge2V4cHJl
c3Npb259IG5nTW91c2VvdmVyIHtAbGluayBndWlkZS9leHByZXNzaW9uIEV4cHJlc3Npb259IHRv
IGV2YWx1YXRlIHVwb24KLSAqIG1vdXNlb3Zlci4gKEV2ZW50IG9iamVjdCBpcyBhdmFpbGFibGUg
YXMgYCRldmVudGApCi0gKgotICogQGV4YW1wbGUKLSAqIFNlZSB7QGxpbmsgbmcuZGlyZWN0aXZl
Om5nQ2xpY2sgbmdDbGlja30KLSAqLwotCi0KLS8qKgotICogQG5nZG9jIGRpcmVjdGl2ZQotICog
QG5hbWUgbmcuZGlyZWN0aXZlOm5nTW91c2VlbnRlcgotICoKLSAqIEBkZXNjcmlwdGlvbgotICog
U3BlY2lmeSBjdXN0b20gYmVoYXZpb3Igb24gbW91c2VlbnRlciBldmVudC4KLSAqCi0gKiBAZWxl
bWVudCBBTlkKLSAqIEBwYXJhbSB7ZXhwcmVzc2lvbn0gbmdNb3VzZWVudGVyIHtAbGluayBndWlk
ZS9leHByZXNzaW9uIEV4cHJlc3Npb259IHRvIGV2YWx1YXRlIHVwb24KLSAqIG1vdXNlZW50ZXIu
IChFdmVudCBvYmplY3QgaXMgYXZhaWxhYmxlIGFzIGAkZXZlbnRgKQotICoKLSAqIEBleGFtcGxl
Ci0gKiBTZWUge0BsaW5rIG5nLmRpcmVjdGl2ZTpuZ0NsaWNrIG5nQ2xpY2t9Ci0gKi8KLQotCi0v
KioKLSAqIEBuZ2RvYyBkaXJlY3RpdmUKLSAqIEBuYW1lIG5nLmRpcmVjdGl2ZTpuZ01vdXNlbGVh
dmUKLSAqCi0gKiBAZGVzY3JpcHRpb24KLSAqIFNwZWNpZnkgY3VzdG9tIGJlaGF2aW9yIG9uIG1v
dXNlbGVhdmUgZXZlbnQuCi0gKgotICogQGVsZW1lbnQgQU5ZCi0gKiBAcGFyYW0ge2V4cHJlc3Np
b259IG5nTW91c2VsZWF2ZSB7QGxpbmsgZ3VpZGUvZXhwcmVzc2lvbiBFeHByZXNzaW9ufSB0byBl
dmFsdWF0ZSB1cG9uCi0gKiBtb3VzZWxlYXZlLiAoRXZlbnQgb2JqZWN0IGlzIGF2YWlsYWJsZSBh
cyBgJGV2ZW50YCkKLSAqCi0gKiBAZXhhbXBsZQotICogU2VlIHtAbGluayBuZy5kaXJlY3RpdmU6
bmdDbGljayBuZ0NsaWNrfQotICovCi0KLQotLyoqCi0gKiBAbmdkb2MgZGlyZWN0aXZlCi0gKiBA
bmFtZSBuZy5kaXJlY3RpdmU6bmdNb3VzZW1vdmUKLSAqCi0gKiBAZGVzY3JpcHRpb24KLSAqIFNw
ZWNpZnkgY3VzdG9tIGJlaGF2aW9yIG9uIG1vdXNlbW92ZSBldmVudC4KLSAqCi0gKiBAZWxlbWVu
dCBBTlkKLSAqIEBwYXJhbSB7ZXhwcmVzc2lvbn0gbmdNb3VzZW1vdmUge0BsaW5rIGd1aWRlL2V4
cHJlc3Npb24gRXhwcmVzc2lvbn0gdG8gZXZhbHVhdGUgdXBvbgotICogbW91c2Vtb3ZlLiAoRXZl
bnQgb2JqZWN0IGlzIGF2YWlsYWJsZSBhcyBgJGV2ZW50YCkKLSAqCi0gKiBAZXhhbXBsZQotICog
U2VlIHtAbGluayBuZy5kaXJlY3RpdmU6bmdDbGljayBuZ0NsaWNrfQotICovCi0KLQotLyoqCi0g
KiBAbmdkb2MgZGlyZWN0aXZlCi0gKiBAbmFtZSBuZy5kaXJlY3RpdmU6bmdTdWJtaXQKLSAqCi0g
KiBAZGVzY3JpcHRpb24KLSAqIEVuYWJsZXMgYmluZGluZyBhbmd1bGFyIGV4cHJlc3Npb25zIHRv
IG9uc3VibWl0IGV2ZW50cy4KLSAqCi0gKiBBZGRpdGlvbmFsbHkgaXQgcHJldmVudHMgdGhlIGRl
ZmF1bHQgYWN0aW9uICh3aGljaCBmb3IgZm9ybSBtZWFucyBzZW5kaW5nIHRoZSByZXF1ZXN0IHRv
IHRoZQotICogc2VydmVyIGFuZCByZWxvYWRpbmcgdGhlIGN1cnJlbnQgcGFnZSkuCi0gKgotICog
QGVsZW1lbnQgZm9ybQotICogQHBhcmFtIHtleHByZXNzaW9ufSBuZ1N1Ym1pdCB7QGxpbmsgZ3Vp
ZGUvZXhwcmVzc2lvbiBFeHByZXNzaW9ufSB0byBldmFsLgotICoKLSAqIEBleGFtcGxlCi0gICA8
ZG9jOmV4YW1wbGU+Ci0gICAgIDxkb2M6c291cmNlPgotICAgICAgPHNjcmlwdD4KLSAgICAgICAg
ZnVuY3Rpb24gQ3RybCgkc2NvcGUpIHsKLSAgICAgICAgICAkc2NvcGUubGlzdCA9IFtdOwotICAg
ICAgICAgICRzY29wZS50ZXh0ID0gJ2hlbGxvJzsKLSAgICAgICAgICAkc2NvcGUuc3VibWl0ID0g
ZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBpZiAodGhpcy50ZXh0KSB7Ci0gICAgICAgICAgICAg
IHRoaXMubGlzdC5wdXNoKHRoaXMudGV4dCk7Ci0gICAgICAgICAgICAgIHRoaXMudGV4dCA9ICcn
OwotICAgICAgICAgICAgfQotICAgICAgICAgIH07Ci0gICAgICAgIH0KLSAgICAgIDwvc2NyaXB0
PgotICAgICAgPGZvcm0gbmctc3VibWl0PSJzdWJtaXQoKSIgbmctY29udHJvbGxlcj0iQ3RybCI+
Ci0gICAgICAgIEVudGVyIHRleHQgYW5kIGhpdCBlbnRlcjoKLSAgICAgICAgPGlucHV0IHR5cGU9
InRleHQiIG5nLW1vZGVsPSJ0ZXh0IiBuYW1lPSJ0ZXh0IiAvPgotICAgICAgICA8aW5wdXQgdHlw
ZT0ic3VibWl0IiBpZD0ic3VibWl0IiB2YWx1ZT0iU3VibWl0IiAvPgotICAgICAgICA8cHJlPmxp
c3Q9e3tsaXN0fX08L3ByZT4KLSAgICAgIDwvZm9ybT4KLSAgICAgPC9kb2M6c291cmNlPgotICAg
ICA8ZG9jOnNjZW5hcmlvPgotICAgICAgIGl0KCdzaG91bGQgY2hlY2sgbmctc3VibWl0JywgZnVu
Y3Rpb24oKSB7Ci0gICAgICAgICBleHBlY3QoYmluZGluZygnbGlzdCcpKS50b0JlKCdbXScpOwot
ICAgICAgICAgZWxlbWVudCgnLmRvYy1leGFtcGxlLWxpdmUgI3N1Ym1pdCcpLmNsaWNrKCk7Ci0g
ICAgICAgICBleHBlY3QoYmluZGluZygnbGlzdCcpKS50b0JlKCdbImhlbGxvIl0nKTsKLSAgICAg
ICAgIGV4cGVjdChpbnB1dCgndGV4dCcpLnZhbCgpKS50b0JlKCcnKTsKLSAgICAgICB9KTsKLSAg
ICAgICBpdCgnc2hvdWxkIGlnbm9yZSBlbXB0eSBzdHJpbmdzJywgZnVuY3Rpb24oKSB7Ci0gICAg
ICAgICBleHBlY3QoYmluZGluZygnbGlzdCcpKS50b0JlKCdbXScpOwotICAgICAgICAgZWxlbWVu
dCgnLmRvYy1leGFtcGxlLWxpdmUgI3N1Ym1pdCcpLmNsaWNrKCk7Ci0gICAgICAgICBlbGVtZW50
KCcuZG9jLWV4YW1wbGUtbGl2ZSAjc3VibWl0JykuY2xpY2soKTsKLSAgICAgICAgIGV4cGVjdChi
aW5kaW5nKCdsaXN0JykpLnRvQmUoJ1siaGVsbG8iXScpOwotICAgICAgIH0pOwotICAgICA8L2Rv
YzpzY2VuYXJpbz4KLSAgIDwvZG9jOmV4YW1wbGU+Ci0gKi8KLXZhciBuZ1N1Ym1pdERpcmVjdGl2
ZSA9IG5nRGlyZWN0aXZlKGZ1bmN0aW9uKHNjb3BlLCBlbGVtZW50LCBhdHRycykgewotICBlbGVt
ZW50LmJpbmQoJ3N1Ym1pdCcsIGZ1bmN0aW9uKCkgewotICAgIHNjb3BlLiRhcHBseShhdHRycy5u
Z1N1Ym1pdCk7Ci0gIH0pOwotfSk7Ci0KLS8qKgotICogQG5nZG9jIGRpcmVjdGl2ZQotICogQG5h
bWUgbmcuZGlyZWN0aXZlOm5nSW5jbHVkZQotICogQHJlc3RyaWN0IEVDQQotICoKLSAqIEBkZXNj
cmlwdGlvbgotICogRmV0Y2hlcywgY29tcGlsZXMgYW5kIGluY2x1ZGVzIGFuIGV4dGVybmFsIEhU
TUwgZnJhZ21lbnQuCi0gKgotICogS2VlcCBpbiBtaW5kIHRoYXQgU2FtZSBPcmlnaW4gUG9saWN5
IGFwcGxpZXMgdG8gaW5jbHVkZWQgcmVzb3VyY2VzCi0gKiAoZS5nLiBuZ0luY2x1ZGUgd29uJ3Qg
d29yayBmb3IgY3Jvc3MtZG9tYWluIHJlcXVlc3RzIG9uIGFsbCBicm93c2VycyBhbmQgZm9yCi0g
KiAgZmlsZTovLyBhY2Nlc3Mgb24gc29tZSBicm93c2VycykuCi0gKgotICogQHNjb3BlCi0gKgot
ICogQHBhcmFtIHtzdHJpbmd9IG5nSW5jbHVkZXxzcmMgYW5ndWxhciBleHByZXNzaW9uIGV2YWx1
YXRpbmcgdG8gVVJMLiBJZiB0aGUgc291cmNlIGlzIGEgc3RyaW5nIGNvbnN0YW50LAotICogICAg
ICAgICAgICAgICAgIG1ha2Ugc3VyZSB5b3Ugd3JhcCBpdCBpbiBxdW90ZXMsIGUuZy4gYHNyYz0i
J215UGFydGlhbFRlbXBsYXRlLmh0bWwnImAuCi0gKiBAcGFyYW0ge3N0cmluZz19IG9ubG9hZCBF
eHByZXNzaW9uIHRvIGV2YWx1YXRlIHdoZW4gYSBuZXcgcGFydGlhbCBpcyBsb2FkZWQuCi0gKgot
ICogQHBhcmFtIHtzdHJpbmc9fSBhdXRvc2Nyb2xsIFdoZXRoZXIgYG5nSW5jbHVkZWAgc2hvdWxk
IGNhbGwge0BsaW5rIG5nLiRhbmNob3JTY3JvbGwKLSAqICAgICAgICAgICAgICAgICAgJGFuY2hv
clNjcm9sbH0gdG8gc2Nyb2xsIHRoZSB2aWV3cG9ydCBhZnRlciB0aGUgY29udGVudCBpcyBsb2Fk
ZWQuCi0gKgotICogICAgICAgICAgICAgICAgICAtIElmIHRoZSBhdHRyaWJ1dGUgaXMgbm90IHNl
dCwgZGlzYWJsZSBzY3JvbGxpbmcuCi0gKiAgICAgICAgICAgICAgICAgIC0gSWYgdGhlIGF0dHJp
YnV0ZSBpcyBzZXQgd2l0aG91dCB2YWx1ZSwgZW5hYmxlIHNjcm9sbGluZy4KLSAqICAgICAgICAg
ICAgICAgICAgLSBPdGhlcndpc2UgZW5hYmxlIHNjcm9sbGluZyBvbmx5IGlmIHRoZSBleHByZXNz
aW9uIGV2YWx1YXRlcyB0byB0cnV0aHkgdmFsdWUuCi0gKgotICogQGV4YW1wbGUKLSAgPGV4YW1w
bGU+Ci0gICAgPGZpbGUgbmFtZT0iaW5kZXguaHRtbCI+Ci0gICAgIDxkaXYgbmctY29udHJvbGxl
cj0iQ3RybCI+Ci0gICAgICAgPHNlbGVjdCBuZy1tb2RlbD0idGVtcGxhdGUiIG5nLW9wdGlvbnM9
InQubmFtZSBmb3IgdCBpbiB0ZW1wbGF0ZXMiPgotICAgICAgICA8b3B0aW9uIHZhbHVlPSIiPihi
bGFuayk8L29wdGlvbj4KLSAgICAgICA8L3NlbGVjdD4KLSAgICAgICB1cmwgb2YgdGhlIHRlbXBs
YXRlOiA8dHQ+e3t0ZW1wbGF0ZS51cmx9fTwvdHQ+Ci0gICAgICAgPGhyLz4KLSAgICAgICA8ZGl2
IG5nLWluY2x1ZGUgc3JjPSJ0ZW1wbGF0ZS51cmwiPjwvZGl2PgotICAgICA8L2Rpdj4KLSAgICA8
L2ZpbGU+Ci0gICAgPGZpbGUgbmFtZT0ic2NyaXB0LmpzIj4KLSAgICAgIGZ1bmN0aW9uIEN0cmwo
JHNjb3BlKSB7Ci0gICAgICAgICRzY29wZS50ZW1wbGF0ZXMgPQotICAgICAgICAgIFsgeyBuYW1l
OiAndGVtcGxhdGUxLmh0bWwnLCB1cmw6ICd0ZW1wbGF0ZTEuaHRtbCd9Ci0gICAgICAgICAgLCB7
IG5hbWU6ICd0ZW1wbGF0ZTIuaHRtbCcsIHVybDogJ3RlbXBsYXRlMi5odG1sJ30gXTsKLSAgICAg
ICAgJHNjb3BlLnRlbXBsYXRlID0gJHNjb3BlLnRlbXBsYXRlc1swXTsKLSAgICAgIH0KLSAgICAg
PC9maWxlPgotICAgIDxmaWxlIG5hbWU9InRlbXBsYXRlMS5odG1sIj4KLSAgICAgIENvbnRlbnQg
b2YgdGVtcGxhdGUxLmh0bWwKLSAgICA8L2ZpbGU+Ci0gICAgPGZpbGUgbmFtZT0idGVtcGxhdGUy
Lmh0bWwiPgotICAgICAgQ29udGVudCBvZiB0ZW1wbGF0ZTIuaHRtbAotICAgIDwvZmlsZT4KLSAg
ICA8ZmlsZSBuYW1lPSJzY2VuYXJpby5qcyI+Ci0gICAgICBpdCgnc2hvdWxkIGxvYWQgdGVtcGxh
dGUxLmh0bWwnLCBmdW5jdGlvbigpIHsKLSAgICAgICBleHBlY3QoZWxlbWVudCgnLmRvYy1leGFt
cGxlLWxpdmUgW25nLWluY2x1ZGVdJykudGV4dCgpKS4KLSAgICAgICAgIHRvTWF0Y2goL0NvbnRl
bnQgb2YgdGVtcGxhdGUxLmh0bWwvKTsKLSAgICAgIH0pOwotICAgICAgaXQoJ3Nob3VsZCBsb2Fk
IHRlbXBsYXRlMi5odG1sJywgZnVuY3Rpb24oKSB7Ci0gICAgICAgc2VsZWN0KCd0ZW1wbGF0ZScp
Lm9wdGlvbignMScpOwotICAgICAgIGV4cGVjdChlbGVtZW50KCcuZG9jLWV4YW1wbGUtbGl2ZSBb
bmctaW5jbHVkZV0nKS50ZXh0KCkpLgotICAgICAgICAgdG9NYXRjaCgvQ29udGVudCBvZiB0ZW1w
bGF0ZTIuaHRtbC8pOwotICAgICAgfSk7Ci0gICAgICBpdCgnc2hvdWxkIGNoYW5nZSB0byBibGFu
aycsIGZ1bmN0aW9uKCkgewotICAgICAgIHNlbGVjdCgndGVtcGxhdGUnKS5vcHRpb24oJycpOwot
ICAgICAgIGV4cGVjdChlbGVtZW50KCcuZG9jLWV4YW1wbGUtbGl2ZSBbbmctaW5jbHVkZV0nKS50
ZXh0KCkpLnRvRXF1YWwoJycpOwotICAgICAgfSk7Ci0gICAgPC9maWxlPgotICA8L2V4YW1wbGU+
Ci0gKi8KLQotCi0vKioKLSAqIEBuZ2RvYyBldmVudAotICogQG5hbWUgbmcuZGlyZWN0aXZlOm5n
SW5jbHVkZSMkaW5jbHVkZUNvbnRlbnRMb2FkZWQKLSAqIEBldmVudE9mIG5nLmRpcmVjdGl2ZTpu
Z0luY2x1ZGUKLSAqIEBldmVudFR5cGUgZW1pdCBvbiB0aGUgY3VycmVudCBuZ0luY2x1ZGUgc2Nv
cGUKLSAqIEBkZXNjcmlwdGlvbgotICogRW1pdHRlZCBldmVyeSB0aW1lIHRoZSBuZ0luY2x1ZGUg
Y29udGVudCBpcyByZWxvYWRlZC4KLSAqLwotdmFyIG5nSW5jbHVkZURpcmVjdGl2ZSA9IFsnJGh0
dHAnLCAnJHRlbXBsYXRlQ2FjaGUnLCAnJGFuY2hvclNjcm9sbCcsICckY29tcGlsZScsCi0gICAg
ICAgICAgICAgICAgICBmdW5jdGlvbigkaHR0cCwgICAkdGVtcGxhdGVDYWNoZSwgICAkYW5jaG9y
U2Nyb2xsLCAgICRjb21waWxlKSB7Ci0gIHJldHVybiB7Ci0gICAgcmVzdHJpY3Q6ICdFQ0EnLAot
ICAgIHRlcm1pbmFsOiB0cnVlLAotICAgIGNvbXBpbGU6IGZ1bmN0aW9uKGVsZW1lbnQsIGF0dHIp
IHsKLSAgICAgIHZhciBzcmNFeHAgPSBhdHRyLm5nSW5jbHVkZSB8fCBhdHRyLnNyYywKLSAgICAg
ICAgICBvbmxvYWRFeHAgPSBhdHRyLm9ubG9hZCB8fCAnJywKLSAgICAgICAgICBhdXRvU2Nyb2xs
RXhwID0gYXR0ci5hdXRvc2Nyb2xsOwotCi0gICAgICByZXR1cm4gZnVuY3Rpb24oc2NvcGUsIGVs
ZW1lbnQpIHsKLSAgICAgICAgdmFyIGNoYW5nZUNvdW50ZXIgPSAwLAotICAgICAgICAgICAgY2hp
bGRTY29wZTsKLQotICAgICAgICB2YXIgY2xlYXJDb250ZW50ID0gZnVuY3Rpb24oKSB7Ci0gICAg
ICAgICAgaWYgKGNoaWxkU2NvcGUpIHsKLSAgICAgICAgICAgIGNoaWxkU2NvcGUuJGRlc3Ryb3ko
KTsKLSAgICAgICAgICAgIGNoaWxkU2NvcGUgPSBudWxsOwotICAgICAgICAgIH0KLQotICAgICAg
ICAgIGVsZW1lbnQuaHRtbCgnJyk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgc2NvcGUuJHdhdGNo
KHNyY0V4cCwgZnVuY3Rpb24gbmdJbmNsdWRlV2F0Y2hBY3Rpb24oc3JjKSB7Ci0gICAgICAgICAg
dmFyIHRoaXNDaGFuZ2VJZCA9ICsrY2hhbmdlQ291bnRlcjsKLQotICAgICAgICAgIGlmIChzcmMp
IHsKLSAgICAgICAgICAgICRodHRwLmdldChzcmMsIHtjYWNoZTogJHRlbXBsYXRlQ2FjaGV9KS5z
dWNjZXNzKGZ1bmN0aW9uKHJlc3BvbnNlKSB7Ci0gICAgICAgICAgICAgIGlmICh0aGlzQ2hhbmdl
SWQgIT09IGNoYW5nZUNvdW50ZXIpIHJldHVybjsKLQotICAgICAgICAgICAgICBpZiAoY2hpbGRT
Y29wZSkgY2hpbGRTY29wZS4kZGVzdHJveSgpOwotICAgICAgICAgICAgICBjaGlsZFNjb3BlID0g
c2NvcGUuJG5ldygpOwotCi0gICAgICAgICAgICAgIGVsZW1lbnQuaHRtbChyZXNwb25zZSk7Ci0g
ICAgICAgICAgICAgICRjb21waWxlKGVsZW1lbnQuY29udGVudHMoKSkoY2hpbGRTY29wZSk7Ci0K
LSAgICAgICAgICAgICAgaWYgKGlzRGVmaW5lZChhdXRvU2Nyb2xsRXhwKSAmJiAoIWF1dG9TY3Jv
bGxFeHAgfHwgc2NvcGUuJGV2YWwoYXV0b1Njcm9sbEV4cCkpKSB7Ci0gICAgICAgICAgICAgICAg
JGFuY2hvclNjcm9sbCgpOwotICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgY2hpbGRT
Y29wZS4kZW1pdCgnJGluY2x1ZGVDb250ZW50TG9hZGVkJyk7Ci0gICAgICAgICAgICAgIHNjb3Bl
LiRldmFsKG9ubG9hZEV4cCk7Ci0gICAgICAgICAgICB9KS5lcnJvcihmdW5jdGlvbigpIHsKLSAg
ICAgICAgICAgICAgaWYgKHRoaXNDaGFuZ2VJZCA9PT0gY2hhbmdlQ291bnRlcikgY2xlYXJDb250
ZW50KCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICB9IGVsc2UgY2xlYXJDb250ZW50KCk7
Ci0gICAgICAgIH0pOwotICAgICAgfTsKLSAgICB9Ci0gIH07Ci19XTsKLQotLyoqCi0gKiBAbmdk
b2MgZGlyZWN0aXZlCi0gKiBAbmFtZSBuZy5kaXJlY3RpdmU6bmdJbml0Ci0gKgotICogQGRlc2Ny
aXB0aW9uCi0gKiBUaGUgYG5nSW5pdGAgZGlyZWN0aXZlIHNwZWNpZmllcyBpbml0aWFsaXphdGlv
biB0YXNrcyB0byBiZSBleGVjdXRlZAotICogIGJlZm9yZSB0aGUgdGVtcGxhdGUgZW50ZXJzIGV4
ZWN1dGlvbiBtb2RlIGR1cmluZyBib290c3RyYXAuCi0gKgotICogQGVsZW1lbnQgQU5ZCi0gKiBA
cGFyYW0ge2V4cHJlc3Npb259IG5nSW5pdCB7QGxpbmsgZ3VpZGUvZXhwcmVzc2lvbiBFeHByZXNz
aW9ufSB0byBldmFsLgotICoKLSAqIEBleGFtcGxlCi0gICA8ZG9jOmV4YW1wbGU+Ci0gICAgIDxk
b2M6c291cmNlPgotICAgIDxkaXYgbmctaW5pdD0iZ3JlZXRpbmc9J0hlbGxvJzsgcGVyc29uPSdX
b3JsZCciPgotICAgICAge3tncmVldGluZ319IHt7cGVyc29ufX0hCi0gICAgPC9kaXY+Ci0gICAg
IDwvZG9jOnNvdXJjZT4KLSAgICAgPGRvYzpzY2VuYXJpbz4KLSAgICAgICBpdCgnc2hvdWxkIGNo
ZWNrIGdyZWV0aW5nJywgZnVuY3Rpb24oKSB7Ci0gICAgICAgICBleHBlY3QoYmluZGluZygnZ3Jl
ZXRpbmcnKSkudG9CZSgnSGVsbG8nKTsKLSAgICAgICAgIGV4cGVjdChiaW5kaW5nKCdwZXJzb24n
KSkudG9CZSgnV29ybGQnKTsKLSAgICAgICB9KTsKLSAgICAgPC9kb2M6c2NlbmFyaW8+Ci0gICA8
L2RvYzpleGFtcGxlPgotICovCi12YXIgbmdJbml0RGlyZWN0aXZlID0gbmdEaXJlY3RpdmUoewot
ICBjb21waWxlOiBmdW5jdGlvbigpIHsKLSAgICByZXR1cm4gewotICAgICAgcHJlOiBmdW5jdGlv
bihzY29wZSwgZWxlbWVudCwgYXR0cnMpIHsKLSAgICAgICAgc2NvcGUuJGV2YWwoYXR0cnMubmdJ
bml0KTsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLX0pOwotCi0vKioKLSAqIEBuZ2RvYyBkaXJlY3Rp
dmUKLSAqIEBuYW1lIG5nLmRpcmVjdGl2ZTpuZ05vbkJpbmRhYmxlCi0gKiBAcHJpb3JpdHkgMTAw
MAotICoKLSAqIEBkZXNjcmlwdGlvbgotICogU29tZXRpbWVzIGl0IGlzIG5lY2Vzc2FyeSB0byB3
cml0ZSBjb2RlIHdoaWNoIGxvb2tzIGxpa2UgYmluZGluZ3MgYnV0IHdoaWNoIHNob3VsZCBiZSBs
ZWZ0IGFsb25lCi0gKiBieSBhbmd1bGFyLiBVc2UgYG5nTm9uQmluZGFibGVgIHRvIG1ha2UgYW5n
dWxhciBpZ25vcmUgYSBjaHVuayBvZiBIVE1MLgotICoKLSAqIEBlbGVtZW50IEFOWQotICoKLSAq
IEBleGFtcGxlCi0gKiBJbiB0aGlzIGV4YW1wbGUgdGhlcmUgYXJlIHR3byBsb2NhdGlvbiB3aGVy
ZSBhIHNpbXBsZSBiaW5kaW5nIChge3t9fWApIGlzIHByZXNlbnQsIGJ1dCB0aGUgb25lCi0gKiB3
cmFwcGVkIGluIGBuZ05vbkJpbmRhYmxlYCBpcyBsZWZ0IGFsb25lLgotICoKLSAqIEBleGFtcGxl
Ci0gICAgPGRvYzpleGFtcGxlPgotICAgICAgPGRvYzpzb3VyY2U+Ci0gICAgICAgIDxkaXY+Tm9y
bWFsOiB7ezEgKyAyfX08L2Rpdj4KLSAgICAgICAgPGRpdiBuZy1ub24tYmluZGFibGU+SWdub3Jl
ZDoge3sxICsgMn19PC9kaXY+Ci0gICAgICA8L2RvYzpzb3VyY2U+Ci0gICAgICA8ZG9jOnNjZW5h
cmlvPgotICAgICAgIGl0KCdzaG91bGQgY2hlY2sgbmctbm9uLWJpbmRhYmxlJywgZnVuY3Rpb24o
KSB7Ci0gICAgICAgICBleHBlY3QodXNpbmcoJy5kb2MtZXhhbXBsZS1saXZlJykuYmluZGluZygn
MSArIDInKSkudG9CZSgnMycpOwotICAgICAgICAgZXhwZWN0KHVzaW5nKCcuZG9jLWV4YW1wbGUt
bGl2ZScpLmVsZW1lbnQoJ2RpdjpsYXN0JykudGV4dCgpKS4KLSAgICAgICAgICAgdG9NYXRjaCgv
MSBcKyAyLyk7Ci0gICAgICAgfSk7Ci0gICAgICA8L2RvYzpzY2VuYXJpbz4KLSAgICA8L2RvYzpl
eGFtcGxlPgotICovCi12YXIgbmdOb25CaW5kYWJsZURpcmVjdGl2ZSA9IG5nRGlyZWN0aXZlKHsg
dGVybWluYWw6IHRydWUsIHByaW9yaXR5OiAxMDAwIH0pOwotCi0vKioKLSAqIEBuZ2RvYyBkaXJl
Y3RpdmUKLSAqIEBuYW1lIG5nLmRpcmVjdGl2ZTpuZ1BsdXJhbGl6ZQotICogQHJlc3RyaWN0IEVB
Ci0gKgotICogQGRlc2NyaXB0aW9uCi0gKiAjIE92ZXJ2aWV3Ci0gKiBgbmdQbHVyYWxpemVgIGlz
IGEgZGlyZWN0aXZlIHRoYXQgZGlzcGxheXMgbWVzc2FnZXMgYWNjb3JkaW5nIHRvIGVuLVVTIGxv
Y2FsaXphdGlvbiBydWxlcy4KLSAqIFRoZXNlIHJ1bGVzIGFyZSBidW5kbGVkIHdpdGggYW5ndWxh
ci5qcyBhbmQgdGhlIHJ1bGVzIGNhbiBiZSBvdmVycmlkZGVuCi0gKiAoc2VlIHtAbGluayBndWlk
ZS9pMThuIEFuZ3VsYXIgaTE4bn0gZGV2IGd1aWRlKS4gWW91IGNvbmZpZ3VyZSBuZ1BsdXJhbGl6
ZSBkaXJlY3RpdmUKLSAqIGJ5IHNwZWNpZnlpbmcgdGhlIG1hcHBpbmdzIGJldHdlZW4KLSAqIHtA
bGluayBodHRwOi8vdW5pY29kZS5vcmcvcmVwb3MvY2xkci10bXAvdHJ1bmsvZGlmZi9zdXBwbGVt
ZW50YWwvbGFuZ3VhZ2VfcGx1cmFsX3J1bGVzLmh0bWwKLSAqIHBsdXJhbCBjYXRlZ29yaWVzfSBh
bmQgdGhlIHN0cmluZ3MgdG8gYmUgZGlzcGxheWVkLgotICoKLSAqICMgUGx1cmFsIGNhdGVnb3Jp
ZXMgYW5kIGV4cGxpY2l0IG51bWJlciBydWxlcwotICogVGhlcmUgYXJlIHR3bwotICoge0BsaW5r
IGh0dHA6Ly91bmljb2RlLm9yZy9yZXBvcy9jbGRyLXRtcC90cnVuay9kaWZmL3N1cHBsZW1lbnRh
bC9sYW5ndWFnZV9wbHVyYWxfcnVsZXMuaHRtbAotICogcGx1cmFsIGNhdGVnb3JpZXN9IGluIEFu
Z3VsYXIncyBkZWZhdWx0IGVuLVVTIGxvY2FsZTogIm9uZSIgYW5kICJvdGhlciIuCi0gKgotICog
V2hpbGUgYSBwdXJhbCBjYXRlZ29yeSBtYXkgbWF0Y2ggbWFueSBudW1iZXJzIChmb3IgZXhhbXBs
ZSwgaW4gZW4tVVMgbG9jYWxlLCAib3RoZXIiIGNhbiBtYXRjaAotICogYW55IG51bWJlciB0aGF0
IGlzIG5vdCAxKSwgYW4gZXhwbGljaXQgbnVtYmVyIHJ1bGUgY2FuIG9ubHkgbWF0Y2ggb25lIG51
bWJlci4gRm9yIGV4YW1wbGUsIHRoZQotICogZXhwbGljaXQgbnVtYmVyIHJ1bGUgZm9yICIzIiBt
YXRjaGVzIHRoZSBudW1iZXIgMy4gWW91IHdpbGwgc2VlIHRoZSB1c2Ugb2YgcGx1cmFsIGNhdGVn
b3JpZXMKLSAqIGFuZCBleHBsaWNpdCBudW1iZXIgcnVsZXMgdGhyb3VnaG91dCBsYXRlciBwYXJ0
cyBvZiB0aGlzIGRvY3VtZW50YXRpb24uCi0gKgotICogIyBDb25maWd1cmluZyBuZ1BsdXJhbGl6
ZQotICogWW91IGNvbmZpZ3VyZSBuZ1BsdXJhbGl6ZSBieSBwcm92aWRpbmcgMiBhdHRyaWJ1dGVz
OiBgY291bnRgIGFuZCBgd2hlbmAuCi0gKiBZb3UgY2FuIGFsc28gcHJvdmlkZSBhbiBvcHRpb25h
bCBhdHRyaWJ1dGUsIGBvZmZzZXRgLgotICoKLSAqIFRoZSB2YWx1ZSBvZiB0aGUgYGNvdW50YCBh
dHRyaWJ1dGUgY2FuIGJlIGVpdGhlciBhIHN0cmluZyBvciBhbiB7QGxpbmsgZ3VpZGUvZXhwcmVz
c2lvbgotICogQW5ndWxhciBleHByZXNzaW9ufTsgdGhlc2UgYXJlIGV2YWx1YXRlZCBvbiB0aGUg
Y3VycmVudCBzY29wZSBmb3IgaXRzIGJvdW5kIHZhbHVlLgotICoKLSAqIFRoZSBgd2hlbmAgYXR0
cmlidXRlIHNwZWNpZmllcyB0aGUgbWFwcGluZ3MgYmV0d2VlbiBwbHVyYWwgY2F0ZWdvcmllcyBh
bmQgdGhlIGFjdHVhbAotICogc3RyaW5nIHRvIGJlIGRpc3BsYXllZC4gVGhlIHZhbHVlIG9mIHRo
ZSBhdHRyaWJ1dGUgc2hvdWxkIGJlIGEgSlNPTiBvYmplY3Qgc28gdGhhdCBBbmd1bGFyCi0gKiBj
YW4gaW50ZXJwcmV0IGl0IGNvcnJlY3RseS4KLSAqCi0gKiBUaGUgZm9sbG93aW5nIGV4YW1wbGUg
c2hvd3MgaG93IHRvIGNvbmZpZ3VyZSBuZ1BsdXJhbGl6ZToKLSAqCi0gKiA8cHJlPgotICogPG5n
LXBsdXJhbGl6ZSBjb3VudD0icGVyc29uQ291bnQiCi0gICAgICAgICAgICAgICAgIHdoZW49Insn
MCc6ICdOb2JvZHkgaXMgdmlld2luZy4nLAotICogICAgICAgICAgICAgICAgICAgICAgJ29uZSc6
ICcxIHBlcnNvbiBpcyB2aWV3aW5nLicsCi0gKiAgICAgICAgICAgICAgICAgICAgICAnb3RoZXIn
OiAne30gcGVvcGxlIGFyZSB2aWV3aW5nLid9Ij4KLSAqIDwvbmctcGx1cmFsaXplPgotICo8L3By
ZT4KLSAqCi0gKiBJbiB0aGUgZXhhbXBsZSwgYCIwOiBOb2JvZHkgaXMgdmlld2luZy4iYCBpcyBh
biBleHBsaWNpdCBudW1iZXIgcnVsZS4gSWYgeW91IGRpZCBub3QKLSAqIHNwZWNpZnkgdGhpcyBy
dWxlLCAwIHdvdWxkIGJlIG1hdGNoZWQgdG8gdGhlICJvdGhlciIgY2F0ZWdvcnkgYW5kICIwIHBl
b3BsZSBhcmUgdmlld2luZyIKLSAqIHdvdWxkIGJlIHNob3duIGluc3RlYWQgb2YgIk5vYm9keSBp
cyB2aWV3aW5nIi4gWW91IGNhbiBzcGVjaWZ5IGFuIGV4cGxpY2l0IG51bWJlciBydWxlIGZvcgot
ICogb3RoZXIgbnVtYmVycywgZm9yIGV4YW1wbGUgMTIsIHNvIHRoYXQgaW5zdGVhZCBvZiBzaG93
aW5nICIxMiBwZW9wbGUgYXJlIHZpZXdpbmciLCB5b3UgY2FuCi0gKiBzaG93ICJhIGRvemVuIHBl
b3BsZSBhcmUgdmlld2luZyIuCi0gKgotICogWW91IGNhbiB1c2UgYSBzZXQgb2YgY2xvc2VkIGJy
YWNlcyhge31gKSBhcyBhIHBsYWNlaG9sZGVyIGZvciB0aGUgbnVtYmVyIHRoYXQgeW91IHdhbnQg
c3Vic3RpdHV0ZWQKLSAqIGludG8gcGx1cmFsaXplZCBzdHJpbmdzLiBJbiB0aGUgcHJldmlvdXMg
ZXhhbXBsZSwgQW5ndWxhciB3aWxsIHJlcGxhY2UgYHt9YCB3aXRoCi0gKiA8c3BhbiBuZy1ub24t
YmluZGFibGU+YHt7cGVyc29uQ291bnR9fWA8L3NwYW4+LiBUaGUgY2xvc2VkIGJyYWNlcyBge31g
IGlzIGEgcGxhY2Vob2xkZXIKLSAqIGZvciA8c3BhbiBuZy1ub24tYmluZGFibGU+e3tudW1iZXJF
eHByZXNzaW9ufX08L3NwYW4+LgotICoKLSAqICMgQ29uZmlndXJpbmcgbmdQbHVyYWxpemUgd2l0
aCBvZmZzZXQKLSAqIFRoZSBgb2Zmc2V0YCBhdHRyaWJ1dGUgYWxsb3dzIGZ1cnRoZXIgY3VzdG9t
aXphdGlvbiBvZiBwbHVyYWxpemVkIHRleHQsIHdoaWNoIGNhbiByZXN1bHQgaW4KLSAqIGEgYmV0
dGVyIHVzZXIgZXhwZXJpZW5jZS4gRm9yIGV4YW1wbGUsIGluc3RlYWQgb2YgdGhlIG1lc3NhZ2Ug
IjQgcGVvcGxlIGFyZSB2aWV3aW5nIHRoaXMgZG9jdW1lbnQiLAotICogeW91IG1pZ2h0IGRpc3Bs
YXkgIkpvaG4sIEthdGUgYW5kIDIgb3RoZXJzIGFyZSB2aWV3aW5nIHRoaXMgZG9jdW1lbnQiLgot
ICogVGhlIG9mZnNldCBhdHRyaWJ1dGUgYWxsb3dzIHlvdSB0byBvZmZzZXQgYSBudW1iZXIgYnkg
YW55IGRlc2lyZWQgdmFsdWUuCi0gKiBMZXQncyB0YWtlIGEgbG9vayBhdCBhbiBleGFtcGxlOgot
ICoKLSAqIDxwcmU+Ci0gKiA8bmctcGx1cmFsaXplIGNvdW50PSJwZXJzb25Db3VudCIgb2Zmc2V0
PTIKLSAqICAgICAgICAgICAgICAgd2hlbj0ieycwJzogJ05vYm9keSBpcyB2aWV3aW5nLicsCi0g
KiAgICAgICAgICAgICAgICAgICAgICAnMSc6ICd7e3BlcnNvbjF9fSBpcyB2aWV3aW5nLicsCi0g
KiAgICAgICAgICAgICAgICAgICAgICAnMic6ICd7e3BlcnNvbjF9fSBhbmQge3twZXJzb24yfX0g
YXJlIHZpZXdpbmcuJywKLSAqICAgICAgICAgICAgICAgICAgICAgICdvbmUnOiAne3twZXJzb24x
fX0sIHt7cGVyc29uMn19IGFuZCBvbmUgb3RoZXIgcGVyc29uIGFyZSB2aWV3aW5nLicsCi0gKiAg
ICAgICAgICAgICAgICAgICAgICAnb3RoZXInOiAne3twZXJzb24xfX0sIHt7cGVyc29uMn19IGFu
ZCB7fSBvdGhlciBwZW9wbGUgYXJlIHZpZXdpbmcuJ30iPgotICogPC9uZy1wbHVyYWxpemU+Ci0g
KiA8L3ByZT4KLSAqCi0gKiBOb3RpY2UgdGhhdCB3ZSBhcmUgc3RpbGwgdXNpbmcgdHdvIHBsdXJh
bCBjYXRlZ29yaWVzKG9uZSwgb3RoZXIpLCBidXQgd2UgYWRkZWQKLSAqIHRocmVlIGV4cGxpY2l0
IG51bWJlciBydWxlcyAwLCAxIGFuZCAyLgotICogV2hlbiBvbmUgcGVyc29uLCBwZXJoYXBzIEpv
aG4sIHZpZXdzIHRoZSBkb2N1bWVudCwgIkpvaG4gaXMgdmlld2luZyIgd2lsbCBiZSBzaG93bi4K
LSAqIFdoZW4gdGhyZWUgcGVvcGxlIHZpZXcgdGhlIGRvY3VtZW50LCBubyBleHBsaWNpdCBudW1i
ZXIgcnVsZSBpcyBmb3VuZCwgc28KLSAqIGFuIG9mZnNldCBvZiAyIGlzIHRha2VuIG9mZiAzLCBh
bmQgQW5ndWxhciB1c2VzIDEgdG8gZGVjaWRlIHRoZSBwbHVyYWwgY2F0ZWdvcnkuCi0gKiBJbiB0
aGlzIGNhc2UsIHBsdXJhbCBjYXRlZ29yeSAnb25lJyBpcyBtYXRjaGVkIGFuZCAiSm9obiwgTWFy
cnkgYW5kIG9uZSBvdGhlciBwZXJzb24gYXJlIHZpZXdpbmciCi0gKiBpcyBzaG93bi4KLSAqCi0g
KiBOb3RlIHRoYXQgd2hlbiB5b3Ugc3BlY2lmeSBvZmZzZXRzLCB5b3UgbXVzdCBwcm92aWRlIGV4
cGxpY2l0IG51bWJlciBydWxlcyBmb3IKLSAqIG51bWJlcnMgZnJvbSAwIHVwIHRvIGFuZCBpbmNs
dWRpbmcgdGhlIG9mZnNldC4gSWYgeW91IHVzZSBhbiBvZmZzZXQgb2YgMywgZm9yIGV4YW1wbGUs
Ci0gKiB5b3UgbXVzdCBwcm92aWRlIGV4cGxpY2l0IG51bWJlciBydWxlcyBmb3IgMCwgMSwgMiBh
bmQgMy4gWW91IG11c3QgYWxzbyBwcm92aWRlIHBsdXJhbCBzdHJpbmdzIGZvcgotICogcGx1cmFs
IGNhdGVnb3JpZXMgIm9uZSIgYW5kICJvdGhlciIuCi0gKgotICogQHBhcmFtIHtzdHJpbmd8ZXhw
cmVzc2lvbn0gY291bnQgVGhlIHZhcmlhYmxlIHRvIGJlIGJvdW5kZWQgdG8uCi0gKiBAcGFyYW0g
e3N0cmluZ30gd2hlbiBUaGUgbWFwcGluZyBiZXR3ZWVuIHBsdXJhbCBjYXRlZ29yeSB0byBpdHMg
Y29ycmVzcG9kaW5nIHN0cmluZ3MuCi0gKiBAcGFyYW0ge251bWJlcj19IG9mZnNldCBPZmZzZXQg
dG8gZGVkdWN0IGZyb20gdGhlIHRvdGFsIG51bWJlci4KLSAqCi0gKiBAZXhhbXBsZQotICAgIDxk
b2M6ZXhhbXBsZT4KLSAgICAgIDxkb2M6c291cmNlPgotICAgICAgICA8c2NyaXB0PgotICAgICAg
ICAgIGZ1bmN0aW9uIEN0cmwoJHNjb3BlKSB7Ci0gICAgICAgICAgICAkc2NvcGUucGVyc29uMSA9
ICdJZ29yJzsKLSAgICAgICAgICAgICRzY29wZS5wZXJzb24yID0gJ01pc2tvJzsKLSAgICAgICAg
ICAgICRzY29wZS5wZXJzb25Db3VudCA9IDE7Ci0gICAgICAgICAgfQotICAgICAgICA8L3Njcmlw
dD4KLSAgICAgICAgPGRpdiBuZy1jb250cm9sbGVyPSJDdHJsIj4KLSAgICAgICAgICBQZXJzb24g
MTo8aW5wdXQgdHlwZT0idGV4dCIgbmctbW9kZWw9InBlcnNvbjEiIHZhbHVlPSJJZ29yIiAvPjxi
ci8+Ci0gICAgICAgICAgUGVyc29uIDI6PGlucHV0IHR5cGU9InRleHQiIG5nLW1vZGVsPSJwZXJz
b24yIiB2YWx1ZT0iTWlza28iIC8+PGJyLz4KLSAgICAgICAgICBOdW1iZXIgb2YgUGVvcGxlOjxp
bnB1dCB0eXBlPSJ0ZXh0IiBuZy1tb2RlbD0icGVyc29uQ291bnQiIHZhbHVlPSIxIiAvPjxici8+
Ci0KLSAgICAgICAgICA8IS0tLSBFeGFtcGxlIHdpdGggc2ltcGxlIHBsdXJhbGl6YXRpb24gcnVs
ZXMgZm9yIGVuIGxvY2FsZSAtLS0+Ci0gICAgICAgICAgV2l0aG91dCBPZmZzZXQ6Ci0gICAgICAg
ICAgPG5nLXBsdXJhbGl6ZSBjb3VudD0icGVyc29uQ291bnQiCi0gICAgICAgICAgICAgICAgICAg
ICAgICB3aGVuPSJ7JzAnOiAnTm9ib2R5IGlzIHZpZXdpbmcuJywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnb25lJzogJzEgcGVyc29uIGlzIHZpZXdpbmcuJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnb3RoZXInOiAne30gcGVvcGxlIGFyZSB2aWV3aW5nLid9Ij4K
LSAgICAgICAgICA8L25nLXBsdXJhbGl6ZT48YnI+Ci0KLSAgICAgICAgICA8IS0tLSBFeGFtcGxl
IHdpdGggb2Zmc2V0IC0tLT4KLSAgICAgICAgICBXaXRoIE9mZnNldCgyKToKLSAgICAgICAgICA8
bmctcGx1cmFsaXplIGNvdW50PSJwZXJzb25Db3VudCIgb2Zmc2V0PTIKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHdoZW49InsnMCc6ICdOb2JvZHkgaXMgdmlld2luZy4nLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICcxJzogJ3t7cGVyc29uMX19IGlzIHZpZXdpbmcuJywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnMic6ICd7e3BlcnNvbjF9fSBhbmQge3twZXJzb24y
fX0gYXJlIHZpZXdpbmcuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb25lJzog
J3t7cGVyc29uMX19LCB7e3BlcnNvbjJ9fSBhbmQgb25lIG90aGVyIHBlcnNvbiBhcmUgdmlld2lu
Zy4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvdGhlcic6ICd7e3BlcnNvbjF9
fSwge3twZXJzb24yfX0gYW5kIHt9IG90aGVyIHBlb3BsZSBhcmUgdmlld2luZy4nfSI+Ci0gICAg
ICAgICAgPC9uZy1wbHVyYWxpemU+Ci0gICAgICAgIDwvZGl2PgotICAgICAgPC9kb2M6c291cmNl
PgotICAgICAgPGRvYzpzY2VuYXJpbz4KLSAgICAgICAgaXQoJ3Nob3VsZCBzaG93IGNvcnJlY3Qg
cGx1cmFsaXplZCBzdHJpbmcnLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICBleHBlY3QoZWxlbWVu
dCgnLmRvYy1leGFtcGxlLWxpdmUgbmctcGx1cmFsaXplOmZpcnN0JykudGV4dCgpKS4KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvQmUoJzEgcGVyc29uIGlz
IHZpZXdpbmcuJyk7Ci0gICAgICAgICAgZXhwZWN0KGVsZW1lbnQoJy5kb2MtZXhhbXBsZS1saXZl
IG5nLXBsdXJhbGl6ZTpsYXN0JykudGV4dCgpKS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRvQmUoJ0lnb3IgaXMgdmlld2luZy4nKTsKLQotICAgICAg
ICAgIHVzaW5nKCcuZG9jLWV4YW1wbGUtbGl2ZScpLmlucHV0KCdwZXJzb25Db3VudCcpLmVudGVy
KCcwJyk7Ci0gICAgICAgICAgZXhwZWN0KGVsZW1lbnQoJy5kb2MtZXhhbXBsZS1saXZlIG5nLXBs
dXJhbGl6ZTpmaXJzdCcpLnRleHQoKSkuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRvQmUoJ05vYm9keSBpcyB2aWV3aW5nLicpOwotICAgICAgICAgIGV4
cGVjdChlbGVtZW50KCcuZG9jLWV4YW1wbGUtbGl2ZSBuZy1wbHVyYWxpemU6bGFzdCcpLnRleHQo
KSkuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9CZSgn
Tm9ib2R5IGlzIHZpZXdpbmcuJyk7Ci0KLSAgICAgICAgICB1c2luZygnLmRvYy1leGFtcGxlLWxp
dmUnKS5pbnB1dCgncGVyc29uQ291bnQnKS5lbnRlcignMicpOwotICAgICAgICAgIGV4cGVjdChl
bGVtZW50KCcuZG9jLWV4YW1wbGUtbGl2ZSBuZy1wbHVyYWxpemU6Zmlyc3QnKS50ZXh0KCkpLgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b0JlKCcyIHBlb3Bs
ZSBhcmUgdmlld2luZy4nKTsKLSAgICAgICAgICBleHBlY3QoZWxlbWVudCgnLmRvYy1leGFtcGxl
LWxpdmUgbmctcGx1cmFsaXplOmxhc3QnKS50ZXh0KCkpLgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdG9CZSgnSWdvciBhbmQgTWlza28gYXJlIHZpZXdpbmcuJyk7Ci0KLSAgICAgICAg
ICB1c2luZygnLmRvYy1leGFtcGxlLWxpdmUnKS5pbnB1dCgncGVyc29uQ291bnQnKS5lbnRlcign
MycpOwotICAgICAgICAgIGV4cGVjdChlbGVtZW50KCcuZG9jLWV4YW1wbGUtbGl2ZSBuZy1wbHVy
YWxpemU6Zmlyc3QnKS50ZXh0KCkpLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0b0JlKCczIHBlb3BsZSBhcmUgdmlld2luZy4nKTsKLSAgICAgICAgICBleHBl
Y3QoZWxlbWVudCgnLmRvYy1leGFtcGxlLWxpdmUgbmctcGx1cmFsaXplOmxhc3QnKS50ZXh0KCkp
LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9CZSgnSWdvciwgTWlza28gYW5kIG9u
ZSBvdGhlciBwZXJzb24gYXJlIHZpZXdpbmcuJyk7Ci0KLSAgICAgICAgICB1c2luZygnLmRvYy1l
eGFtcGxlLWxpdmUnKS5pbnB1dCgncGVyc29uQ291bnQnKS5lbnRlcignNCcpOwotICAgICAgICAg
IGV4cGVjdChlbGVtZW50KCcuZG9jLWV4YW1wbGUtbGl2ZSBuZy1wbHVyYWxpemU6Zmlyc3QnKS50
ZXh0KCkpLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b0Jl
KCc0IHBlb3BsZSBhcmUgdmlld2luZy4nKTsKLSAgICAgICAgICBleHBlY3QoZWxlbWVudCgnLmRv
Yy1leGFtcGxlLWxpdmUgbmctcGx1cmFsaXplOmxhc3QnKS50ZXh0KCkpLgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdG9CZSgnSWdvciwgTWlza28gYW5kIDIgb3RoZXIgcGVvcGxlIGFy
ZSB2aWV3aW5nLicpOwotICAgICAgICB9KTsKLQotICAgICAgICBpdCgnc2hvdWxkIHNob3cgZGF0
YS1iaW5kZWQgbmFtZXMnLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICB1c2luZygnLmRvYy1leGFt
cGxlLWxpdmUnKS5pbnB1dCgncGVyc29uQ291bnQnKS5lbnRlcignNCcpOwotICAgICAgICAgIGV4
cGVjdChlbGVtZW50KCcuZG9jLWV4YW1wbGUtbGl2ZSBuZy1wbHVyYWxpemU6bGFzdCcpLnRleHQo
KSkuCi0gICAgICAgICAgICAgIHRvQmUoJ0lnb3IsIE1pc2tvIGFuZCAyIG90aGVyIHBlb3BsZSBh
cmUgdmlld2luZy4nKTsKLQotICAgICAgICAgIHVzaW5nKCcuZG9jLWV4YW1wbGUtbGl2ZScpLmlu
cHV0KCdwZXJzb24xJykuZW50ZXIoJ0RpJyk7Ci0gICAgICAgICAgdXNpbmcoJy5kb2MtZXhhbXBs
ZS1saXZlJykuaW5wdXQoJ3BlcnNvbjInKS5lbnRlcignVm9qdGEnKTsKLSAgICAgICAgICBleHBl
Y3QoZWxlbWVudCgnLmRvYy1leGFtcGxlLWxpdmUgbmctcGx1cmFsaXplOmxhc3QnKS50ZXh0KCkp
LgotICAgICAgICAgICAgICB0b0JlKCdEaSwgVm9qdGEgYW5kIDIgb3RoZXIgcGVvcGxlIGFyZSB2
aWV3aW5nLicpOwotICAgICAgICB9KTsKLSAgICAgIDwvZG9jOnNjZW5hcmlvPgotICAgIDwvZG9j
OmV4YW1wbGU+Ci0gKi8KLXZhciBuZ1BsdXJhbGl6ZURpcmVjdGl2ZSA9IFsnJGxvY2FsZScsICck
aW50ZXJwb2xhdGUnLCBmdW5jdGlvbigkbG9jYWxlLCAkaW50ZXJwb2xhdGUpIHsKLSAgdmFyIEJS
QUNFID0gL3t9L2c7Ci0gIHJldHVybiB7Ci0gICAgcmVzdHJpY3Q6ICdFQScsCi0gICAgbGluazog
ZnVuY3Rpb24oc2NvcGUsIGVsZW1lbnQsIGF0dHIpIHsKLSAgICAgIHZhciBudW1iZXJFeHAgPSBh
dHRyLmNvdW50LAotICAgICAgICAgIHdoZW5FeHAgPSBlbGVtZW50LmF0dHIoYXR0ci4kYXR0ci53
aGVuKSwgLy8gdGhpcyBpcyBiZWNhdXNlIHdlIGhhdmUge3t9fSBpbiBhdHRycwotICAgICAgICAg
IG9mZnNldCA9IGF0dHIub2Zmc2V0IHx8IDAsCi0gICAgICAgICAgd2hlbnMgPSBzY29wZS4kZXZh
bCh3aGVuRXhwKSwKLSAgICAgICAgICB3aGVuc0V4cEZucyA9IHt9LAotICAgICAgICAgIHN0YXJ0
U3ltYm9sID0gJGludGVycG9sYXRlLnN0YXJ0U3ltYm9sKCksCi0gICAgICAgICAgZW5kU3ltYm9s
ID0gJGludGVycG9sYXRlLmVuZFN5bWJvbCgpOwotCi0gICAgICBmb3JFYWNoKHdoZW5zLCBmdW5j
dGlvbihleHByZXNzaW9uLCBrZXkpIHsKLSAgICAgICAgd2hlbnNFeHBGbnNba2V5XSA9Ci0gICAg
ICAgICAgJGludGVycG9sYXRlKGV4cHJlc3Npb24ucmVwbGFjZShCUkFDRSwgc3RhcnRTeW1ib2wg
KyBudW1iZXJFeHAgKyAnLScgKwotICAgICAgICAgICAgb2Zmc2V0ICsgZW5kU3ltYm9sKSk7Ci0g
ICAgICB9KTsKLQotICAgICAgc2NvcGUuJHdhdGNoKGZ1bmN0aW9uIG5nUGx1cmFsaXplV2F0Y2go
KSB7Ci0gICAgICAgIHZhciB2YWx1ZSA9IHBhcnNlRmxvYXQoc2NvcGUuJGV2YWwobnVtYmVyRXhw
KSk7Ci0KLSAgICAgICAgaWYgKCFpc05hTih2YWx1ZSkpIHsKLSAgICAgICAgICAvL2lmIGV4cGxp
Y2l0IG51bWJlciBydWxlIHN1Y2ggYXMgMSwgMiwgMy4uLiBpcyBkZWZpbmVkLCBqdXN0IHVzZSBp
dC4gT3RoZXJ3aXNlLAotICAgICAgICAgIC8vY2hlY2sgaXQgYWdhaW5zdCBwbHVyYWxpemF0aW9u
IHJ1bGVzIGluICRsb2NhbGUgc2VydmljZQotICAgICAgICAgIGlmICghKHZhbHVlIGluIHdoZW5z
KSkgdmFsdWUgPSAkbG9jYWxlLnBsdXJhbENhdCh2YWx1ZSAtIG9mZnNldCk7Ci0gICAgICAgICAg
IHJldHVybiB3aGVuc0V4cEZuc1t2YWx1ZV0oc2NvcGUsIGVsZW1lbnQsIHRydWUpOwotICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgIHJldHVybiAnJzsKLSAgICAgICAgfQotICAgICAgfSwgZnVu
Y3Rpb24gbmdQbHVyYWxpemVXYXRjaEFjdGlvbihuZXdWYWwpIHsKLSAgICAgICAgZWxlbWVudC50
ZXh0KG5ld1ZhbCk7Ci0gICAgICB9KTsKLSAgICB9Ci0gIH07Ci19XTsKLQotLyoqCi0gKiBAbmdk
b2MgZGlyZWN0aXZlCi0gKiBAbmFtZSBuZy5kaXJlY3RpdmU6bmdSZXBlYXQKLSAqCi0gKiBAZGVz
Y3JpcHRpb24KLSAqIFRoZSBgbmdSZXBlYXRgIGRpcmVjdGl2ZSBpbnN0YW50aWF0ZXMgYSB0ZW1w
bGF0ZSBvbmNlIHBlciBpdGVtIGZyb20gYSBjb2xsZWN0aW9uLiBFYWNoIHRlbXBsYXRlCi0gKiBp
bnN0YW5jZSBnZXRzIGl0cyBvd24gc2NvcGUsIHdoZXJlIHRoZSBnaXZlbiBsb29wIHZhcmlhYmxl
IGlzIHNldCB0byB0aGUgY3VycmVudCBjb2xsZWN0aW9uIGl0ZW0sCi0gKiBhbmQgYCRpbmRleGAg
aXMgc2V0IHRvIHRoZSBpdGVtIGluZGV4IG9yIGtleS4KLSAqCi0gKiBTcGVjaWFsIHByb3BlcnRp
ZXMgYXJlIGV4cG9zZWQgb24gdGhlIGxvY2FsIHNjb3BlIG9mIGVhY2ggdGVtcGxhdGUgaW5zdGFu
Y2UsIGluY2x1ZGluZzoKLSAqCi0gKiAgICogYCRpbmRleGAg4oCTIGB7bnVtYmVyfWAg4oCTIGl0
ZXJhdG9yIG9mZnNldCBvZiB0aGUgcmVwZWF0ZWQgZWxlbWVudCAoMC4ubGVuZ3RoLTEpCi0gKiAg
ICogYCRmaXJzdGAg4oCTIGB7Ym9vbGVhbn1gIOKAkyB0cnVlIGlmIHRoZSByZXBlYXRlZCBlbGVt
ZW50IGlzIGZpcnN0IGluIHRoZSBpdGVyYXRvci4KLSAqICAgKiBgJG1pZGRsZWAg4oCTIGB7Ym9v
bGVhbn1gIOKAkyB0cnVlIGlmIHRoZSByZXBlYXRlZCBlbGVtZW50IGlzIGJldHdlZW4gdGhlIGZp
cnN0IGFuZCBsYXN0IGluIHRoZSBpdGVyYXRvci4KLSAqICAgKiBgJGxhc3RgIOKAkyBge2Jvb2xl
YW59YCDigJMgdHJ1ZSBpZiB0aGUgcmVwZWF0ZWQgZWxlbWVudCBpcyBsYXN0IGluIHRoZSBpdGVy
YXRvci4KLSAqCi0gKgotICogQGVsZW1lbnQgQU5ZCi0gKiBAc2NvcGUKLSAqIEBwcmlvcml0eSAx
MDAwCi0gKiBAcGFyYW0ge3JlcGVhdF9leHByZXNzaW9ufSBuZ1JlcGVhdCBUaGUgZXhwcmVzc2lv
biBpbmRpY2F0aW5nIGhvdyB0byBlbnVtZXJhdGUgYSBjb2xsZWN0aW9uLiBUd28KLSAqICAgZm9y
bWF0cyBhcmUgY3VycmVudGx5IHN1cHBvcnRlZDoKLSAqCi0gKiAgICogYHZhcmlhYmxlIGluIGV4
cHJlc3Npb25gIOKAkyB3aGVyZSB2YXJpYWJsZSBpcyB0aGUgdXNlciBkZWZpbmVkIGxvb3AgdmFy
aWFibGUgYW5kIGBleHByZXNzaW9uYAotICogICAgIGlzIGEgc2NvcGUgZXhwcmVzc2lvbiBnaXZp
bmcgdGhlIGNvbGxlY3Rpb24gdG8gZW51bWVyYXRlLgotICoKLSAqICAgICBGb3IgZXhhbXBsZTog
YHRyYWNrIGluIGNkLnRyYWNrc2AuCi0gKgotICogICAqIGAoa2V5LCB2YWx1ZSkgaW4gZXhwcmVz
c2lvbmAg4oCTIHdoZXJlIGBrZXlgIGFuZCBgdmFsdWVgIGNhbiBiZSBhbnkgdXNlciBkZWZpbmVk
IGlkZW50aWZpZXJzLAotICogICAgIGFuZCBgZXhwcmVzc2lvbmAgaXMgdGhlIHNjb3BlIGV4cHJl
c3Npb24gZ2l2aW5nIHRoZSBjb2xsZWN0aW9uIHRvIGVudW1lcmF0ZS4KLSAqCi0gKiAgICAgRm9y
IGV4YW1wbGU6IGAobmFtZSwgYWdlKSBpbiB7J2FkYW0nOjEwLCAnYW1hbGllJzoxMn1gLgotICoK
LSAqIEBleGFtcGxlCi0gKiBUaGlzIGV4YW1wbGUgaW5pdGlhbGl6ZXMgdGhlIHNjb3BlIHRvIGEg
bGlzdCBvZiBuYW1lcyBhbmQKLSAqIHRoZW4gdXNlcyBgbmdSZXBlYXRgIHRvIGRpc3BsYXkgZXZl
cnkgcGVyc29uOgotICAgIDxkb2M6ZXhhbXBsZT4KLSAgICAgIDxkb2M6c291cmNlPgotICAgICAg
ICA8ZGl2IG5nLWluaXQ9ImZyaWVuZHMgPSBbe25hbWU6J0pvaG4nLCBhZ2U6MjV9LCB7bmFtZTon
TWFyeScsIGFnZToyOH1dIj4KLSAgICAgICAgICBJIGhhdmUge3tmcmllbmRzLmxlbmd0aH19IGZy
aWVuZHMuIFRoZXkgYXJlOgotICAgICAgICAgIDx1bD4KLSAgICAgICAgICAgIDxsaSBuZy1yZXBl
YXQ9ImZyaWVuZCBpbiBmcmllbmRzIj4KLSAgICAgICAgICAgICAgW3t7JGluZGV4ICsgMX19XSB7
e2ZyaWVuZC5uYW1lfX0gd2hvIGlzIHt7ZnJpZW5kLmFnZX19IHllYXJzIG9sZC4KLSAgICAgICAg
ICAgIDwvbGk+Ci0gICAgICAgICAgPC91bD4KLSAgICAgICAgPC9kaXY+Ci0gICAgICA8L2RvYzpz
b3VyY2U+Ci0gICAgICA8ZG9jOnNjZW5hcmlvPgotICAgICAgICAgaXQoJ3Nob3VsZCBjaGVjayBu
Zy1yZXBlYXQnLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgdmFyIHIgPSB1c2luZygnLmRvYy1l
eGFtcGxlLWxpdmUnKS5yZXBlYXRlcigndWwgbGknKTsKLSAgICAgICAgICAgZXhwZWN0KHIuY291
bnQoKSkudG9CZSgyKTsKLSAgICAgICAgICAgZXhwZWN0KHIucm93KDApKS50b0VxdWFsKFsiMSIs
IkpvaG4iLCIyNSJdKTsKLSAgICAgICAgICAgZXhwZWN0KHIucm93KDEpKS50b0VxdWFsKFsiMiIs
Ik1hcnkiLCIyOCJdKTsKLSAgICAgICAgIH0pOwotICAgICAgPC9kb2M6c2NlbmFyaW8+Ci0gICAg
PC9kb2M6ZXhhbXBsZT4KLSAqLwotdmFyIG5nUmVwZWF0RGlyZWN0aXZlID0gbmdEaXJlY3RpdmUo
ewotICB0cmFuc2NsdWRlOiAnZWxlbWVudCcsCi0gIHByaW9yaXR5OiAxMDAwLAotICB0ZXJtaW5h
bDogdHJ1ZSwKLSAgY29tcGlsZTogZnVuY3Rpb24oZWxlbWVudCwgYXR0ciwgbGlua2VyKSB7Ci0g
ICAgcmV0dXJuIGZ1bmN0aW9uKHNjb3BlLCBpdGVyU3RhcnRFbGVtZW50LCBhdHRyKXsKLSAgICAg
IHZhciBleHByZXNzaW9uID0gYXR0ci5uZ1JlcGVhdDsKLSAgICAgIHZhciBtYXRjaCA9IGV4cHJl
c3Npb24ubWF0Y2goL15ccyooLispXHMraW5ccysoLiopXHMqJC8pLAotICAgICAgICBsaHMsIHJo
cywgdmFsdWVJZGVudCwga2V5SWRlbnQ7Ci0gICAgICBpZiAoISBtYXRjaCkgewotICAgICAgICB0
aHJvdyBFcnJvcigiRXhwZWN0ZWQgbmdSZXBlYXQgaW4gZm9ybSBvZiAnX2l0ZW1fIGluIF9jb2xs
ZWN0aW9uXycgYnV0IGdvdCAnIiArCi0gICAgICAgICAgZXhwcmVzc2lvbiArICInLiIpOwotICAg
ICAgfQotICAgICAgbGhzID0gbWF0Y2hbMV07Ci0gICAgICByaHMgPSBtYXRjaFsyXTsKLSAgICAg
IG1hdGNoID0gbGhzLm1hdGNoKC9eKD86KFtcJFx3XSspfFwoKFtcJFx3XSspXHMqLFxzKihbXCRc
d10rKVwpKSQvKTsKLSAgICAgIGlmICghbWF0Y2gpIHsKLSAgICAgICAgdGhyb3cgRXJyb3IoIidp
dGVtJyBpbiAnaXRlbSBpbiBjb2xsZWN0aW9uJyBzaG91bGQgYmUgaWRlbnRpZmllciBvciAoa2V5
LCB2YWx1ZSkgYnV0IGdvdCAnIiArCi0gICAgICAgICAgICBsaHMgKyAiJy4iKTsKLSAgICAgIH0K
LSAgICAgIHZhbHVlSWRlbnQgPSBtYXRjaFszXSB8fCBtYXRjaFsxXTsKLSAgICAgIGtleUlkZW50
ID0gbWF0Y2hbMl07Ci0KLSAgICAgIC8vIFN0b3JlIGEgbGlzdCBvZiBlbGVtZW50cyBmcm9tIHBy
ZXZpb3VzIHJ1bi4gVGhpcyBpcyBhIGhhc2ggd2hlcmUga2V5IGlzIHRoZSBpdGVtIGZyb20gdGhl
Ci0gICAgICAvLyBpdGVyYXRvciwgYW5kIHRoZSB2YWx1ZSBpcyBhbiBhcnJheSBvZiBvYmplY3Rz
IHdpdGggZm9sbG93aW5nIHByb3BlcnRpZXMuCi0gICAgICAvLyAgIC0gc2NvcGU6IGJvdW5kIHNj
b3BlCi0gICAgICAvLyAgIC0gZWxlbWVudDogcHJldmlvdXMgZWxlbWVudC4KLSAgICAgIC8vICAg
LSBpbmRleDogcG9zaXRpb24KLSAgICAgIC8vIFdlIG5lZWQgYW4gYXJyYXkgb2YgdGhlc2Ugb2Jq
ZWN0cyBzaW5jZSB0aGUgc2FtZSBvYmplY3QgY2FuIGJlIHJldHVybmVkIGZyb20gdGhlIGl0ZXJh
dG9yLgotICAgICAgLy8gV2UgZXhwZWN0IHRoaXMgdG8gYmUgYSByYXJlIGNhc2UuCi0gICAgICB2
YXIgbGFzdE9yZGVyID0gbmV3IEhhc2hRdWV1ZU1hcCgpOwotCi0gICAgICBzY29wZS4kd2F0Y2go
ZnVuY3Rpb24gbmdSZXBlYXRXYXRjaChzY29wZSl7Ci0gICAgICAgIHZhciBpbmRleCwgbGVuZ3Ro
LAotICAgICAgICAgICAgY29sbGVjdGlvbiA9IHNjb3BlLiRldmFsKHJocyksCi0gICAgICAgICAg
ICBjdXJzb3IgPSBpdGVyU3RhcnRFbGVtZW50LCAgICAgLy8gY3VycmVudCBwb3NpdGlvbiBvZiB0
aGUgbm9kZQotICAgICAgICAgICAgLy8gU2FtZSBhcyBsYXN0T3JkZXIgYnV0IGl0IGhhcyB0aGUg
Y3VycmVudCBzdGF0ZS4gSXQgd2lsbCBiZWNvbWUgdGhlCi0gICAgICAgICAgICAvLyBsYXN0T3Jk
ZXIgb24gdGhlIG5leHQgaXRlcmF0aW9uLgotICAgICAgICAgICAgbmV4dE9yZGVyID0gbmV3IEhh
c2hRdWV1ZU1hcCgpLAotICAgICAgICAgICAgYXJyYXlCb3VuZCwKLSAgICAgICAgICAgIGNoaWxk
U2NvcGUsCi0gICAgICAgICAgICBrZXksIHZhbHVlLCAvLyBrZXkvdmFsdWUgb2YgaXRlcmF0aW9u
Ci0gICAgICAgICAgICBhcnJheSwKLSAgICAgICAgICAgIGxhc3Q7ICAgICAgIC8vIGxhc3Qgb2Jq
ZWN0IGluZm9ybWF0aW9uIHtzY29wZSwgZWxlbWVudCwgaW5kZXh9Ci0KLQotCi0gICAgICAgIGlm
ICghaXNBcnJheShjb2xsZWN0aW9uKSkgewotICAgICAgICAgIC8vIGlmIG9iamVjdCwgZXh0cmFj
dCBrZXlzLCBzb3J0IHRoZW0gYW5kIHVzZSB0byBkZXRlcm1pbmUgb3JkZXIgb2YgaXRlcmF0aW9u
IG92ZXIgb2JqIHByb3BzCi0gICAgICAgICAgYXJyYXkgPSBbXTsKLSAgICAgICAgICBmb3Ioa2V5
IGluIGNvbGxlY3Rpb24pIHsKLSAgICAgICAgICAgIGlmIChjb2xsZWN0aW9uLmhhc093blByb3Bl
cnR5KGtleSkgJiYga2V5LmNoYXJBdCgwKSAhPSAnJCcpIHsKLSAgICAgICAgICAgICAgYXJyYXku
cHVzaChrZXkpOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgICBhcnJheS5z
b3J0KCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgYXJyYXkgPSBjb2xsZWN0aW9uIHx8
IFtdOwotICAgICAgICB9Ci0KLSAgICAgICAgYXJyYXlCb3VuZCA9IGFycmF5Lmxlbmd0aC0xOwot
Ci0gICAgICAgIC8vIHdlIGFyZSBub3QgdXNpbmcgZm9yRWFjaCBmb3IgcGVyZiByZWFzb25zICh0
cnlpbmcgdG8gYXZvaWQgI2NhbGwpCi0gICAgICAgIGZvciAoaW5kZXggPSAwLCBsZW5ndGggPSBh
cnJheS5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrKSB7Ci0gICAgICAgICAga2V5ID0g
KGNvbGxlY3Rpb24gPT09IGFycmF5KSA/IGluZGV4IDogYXJyYXlbaW5kZXhdOwotICAgICAgICAg
IHZhbHVlID0gY29sbGVjdGlvbltrZXldOwotCi0gICAgICAgICAgbGFzdCA9IGxhc3RPcmRlci5z
aGlmdCh2YWx1ZSk7Ci0KLSAgICAgICAgICBpZiAobGFzdCkgewotICAgICAgICAgICAgLy8gaWYg
d2UgaGF2ZSBhbHJlYWR5IHNlZW4gdGhpcyBvYmplY3QsIHRoZW4gd2UgbmVlZCB0byByZXVzZSB0
aGUKLSAgICAgICAgICAgIC8vIGFzc29jaWF0ZWQgc2NvcGUvZWxlbWVudAotICAgICAgICAgICAg
Y2hpbGRTY29wZSA9IGxhc3Quc2NvcGU7Ci0gICAgICAgICAgICBuZXh0T3JkZXIucHVzaCh2YWx1
ZSwgbGFzdCk7Ci0KLSAgICAgICAgICAgIGlmIChpbmRleCA9PT0gbGFzdC5pbmRleCkgewotICAg
ICAgICAgICAgICAvLyBkbyBub3RoaW5nCi0gICAgICAgICAgICAgIGN1cnNvciA9IGxhc3QuZWxl
bWVudDsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgIC8vIGV4aXN0aW5nIGl0
ZW0gd2hpY2ggZ290IG1vdmVkCi0gICAgICAgICAgICAgIGxhc3QuaW5kZXggPSBpbmRleDsKLSAg
ICAgICAgICAgICAgLy8gVGhpcyBtYXkgYmUgYSBub29wLCBpZiB0aGUgZWxlbWVudCBpcyBuZXh0
LCBidXQgSSBkb24ndCBrbm93IG9mIGEgZ29vZCB3YXkgdG8KLSAgICAgICAgICAgICAgLy8gZmln
dXJlIHRoaXMgb3V0LCAgc2luY2UgaXQgd291bGQgcmVxdWlyZSBleHRyYSBET00gYWNjZXNzLCBz
byBsZXQncyBqdXN0IGhvcGUgdGhhdAotICAgICAgICAgICAgICAvLyB0aGUgYnJvd3NlcnMgcmVh
bGl6ZXMgdGhhdCBpdCBpcyBub29wLCBhbmQgdHJlYXRzIGl0IGFzIHN1Y2guCi0gICAgICAgICAg
ICAgIGN1cnNvci5hZnRlcihsYXN0LmVsZW1lbnQpOwotICAgICAgICAgICAgICBjdXJzb3IgPSBs
YXN0LmVsZW1lbnQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIC8vIG5ldyBpdGVtIHdoaWNoIHdlIGRvbid0IGtub3cgYWJvdXQKLSAgICAgICAgICAgIGNo
aWxkU2NvcGUgPSBzY29wZS4kbmV3KCk7Ci0gICAgICAgICAgfQotCi0gICAgICAgICAgY2hpbGRT
Y29wZVt2YWx1ZUlkZW50XSA9IHZhbHVlOwotICAgICAgICAgIGlmIChrZXlJZGVudCkgY2hpbGRT
Y29wZVtrZXlJZGVudF0gPSBrZXk7Ci0gICAgICAgICAgY2hpbGRTY29wZS4kaW5kZXggPSBpbmRl
eDsKLQotICAgICAgICAgIGNoaWxkU2NvcGUuJGZpcnN0ID0gKGluZGV4ID09PSAwKTsKLSAgICAg
ICAgICBjaGlsZFNjb3BlLiRsYXN0ID0gKGluZGV4ID09PSBhcnJheUJvdW5kKTsKLSAgICAgICAg
ICBjaGlsZFNjb3BlLiRtaWRkbGUgPSAhKGNoaWxkU2NvcGUuJGZpcnN0IHx8IGNoaWxkU2NvcGUu
JGxhc3QpOwotCi0gICAgICAgICAgaWYgKCFsYXN0KSB7Ci0gICAgICAgICAgICBsaW5rZXIoY2hp
bGRTY29wZSwgZnVuY3Rpb24oY2xvbmUpewotICAgICAgICAgICAgICBjdXJzb3IuYWZ0ZXIoY2xv
bmUpOwotICAgICAgICAgICAgICBsYXN0ID0gewotICAgICAgICAgICAgICAgICAgc2NvcGU6IGNo
aWxkU2NvcGUsCi0gICAgICAgICAgICAgICAgICBlbGVtZW50OiAoY3Vyc29yID0gY2xvbmUpLAot
ICAgICAgICAgICAgICAgICAgaW5kZXg6IGluZGV4Ci0gICAgICAgICAgICAgICAgfTsKLSAgICAg
ICAgICAgICAgbmV4dE9yZGVyLnB1c2godmFsdWUsIGxhc3QpOwotICAgICAgICAgICAgfSk7Ci0g
ICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLy9zaHJpbmsgY2hpbGRyZW4KLSAgICAg
ICAgZm9yIChrZXkgaW4gbGFzdE9yZGVyKSB7Ci0gICAgICAgICAgaWYgKGxhc3RPcmRlci5oYXNP
d25Qcm9wZXJ0eShrZXkpKSB7Ci0gICAgICAgICAgICBhcnJheSA9IGxhc3RPcmRlcltrZXldOwot
ICAgICAgICAgICAgd2hpbGUoYXJyYXkubGVuZ3RoKSB7Ci0gICAgICAgICAgICAgIHZhbHVlID0g
YXJyYXkucG9wKCk7Ci0gICAgICAgICAgICAgIHZhbHVlLmVsZW1lbnQucmVtb3ZlKCk7Ci0gICAg
ICAgICAgICAgIHZhbHVlLnNjb3BlLiRkZXN0cm95KCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgbGFzdE9yZGVyID0gbmV4dE9yZGVyOwotICAgICAg
fSk7Ci0gICAgfTsKLSAgfQotfSk7Ci0KLS8qKgotICogQG5nZG9jIGRpcmVjdGl2ZQotICogQG5h
bWUgbmcuZGlyZWN0aXZlOm5nU2hvdwotICoKLSAqIEBkZXNjcmlwdGlvbgotICogVGhlIGBuZ1No
b3dgIGFuZCBgbmdIaWRlYCBkaXJlY3RpdmVzIHNob3cgb3IgaGlkZSBhIHBvcnRpb24gb2YgdGhl
IERPTSB0cmVlIChIVE1MKQotICogY29uZGl0aW9uYWxseS4KLSAqCi0gKiBAZWxlbWVudCBBTlkK
LSAqIEBwYXJhbSB7ZXhwcmVzc2lvbn0gbmdTaG93IElmIHRoZSB7QGxpbmsgZ3VpZGUvZXhwcmVz
c2lvbiBleHByZXNzaW9ufSBpcyB0cnV0aHkKLSAqICAgICB0aGVuIHRoZSBlbGVtZW50IGlzIHNo
b3duIG9yIGhpZGRlbiByZXNwZWN0aXZlbHkuCi0gKgotICogQGV4YW1wbGUKLSAgIDxkb2M6ZXhh
bXBsZT4KLSAgICAgPGRvYzpzb3VyY2U+Ci0gICAgICAgIENsaWNrIG1lOiA8aW5wdXQgdHlwZT0i
Y2hlY2tib3giIG5nLW1vZGVsPSJjaGVja2VkIj48YnIvPgotICAgICAgICBTaG93OiA8c3BhbiBu
Zy1zaG93PSJjaGVja2VkIj5JIHNob3cgdXAgd2hlbiB5b3VyIGNoZWNrYm94IGlzIGNoZWNrZWQu
PC9zcGFuPiA8YnIvPgotICAgICAgICBIaWRlOiA8c3BhbiBuZy1oaWRlPSJjaGVja2VkIj5JIGhp
ZGUgd2hlbiB5b3VyIGNoZWNrYm94IGlzIGNoZWNrZWQuPC9zcGFuPgotICAgICA8L2RvYzpzb3Vy
Y2U+Ci0gICAgIDxkb2M6c2NlbmFyaW8+Ci0gICAgICAgaXQoJ3Nob3VsZCBjaGVjayBuZy1zaG93
IC8gbmctaGlkZScsIGZ1bmN0aW9uKCkgewotICAgICAgICAgZXhwZWN0KGVsZW1lbnQoJy5kb2Mt
ZXhhbXBsZS1saXZlIHNwYW46Zmlyc3Q6aGlkZGVuJykuY291bnQoKSkudG9FcXVhbCgxKTsKLSAg
ICAgICAgIGV4cGVjdChlbGVtZW50KCcuZG9jLWV4YW1wbGUtbGl2ZSBzcGFuOmxhc3Q6dmlzaWJs
ZScpLmNvdW50KCkpLnRvRXF1YWwoMSk7Ci0KLSAgICAgICAgIGlucHV0KCdjaGVja2VkJykuY2hl
Y2soKTsKLQotICAgICAgICAgZXhwZWN0KGVsZW1lbnQoJy5kb2MtZXhhbXBsZS1saXZlIHNwYW46
Zmlyc3Q6dmlzaWJsZScpLmNvdW50KCkpLnRvRXF1YWwoMSk7Ci0gICAgICAgICBleHBlY3QoZWxl
bWVudCgnLmRvYy1leGFtcGxlLWxpdmUgc3BhbjpsYXN0OmhpZGRlbicpLmNvdW50KCkpLnRvRXF1
YWwoMSk7Ci0gICAgICAgfSk7Ci0gICAgIDwvZG9jOnNjZW5hcmlvPgotICAgPC9kb2M6ZXhhbXBs
ZT4KLSAqLwotLy9UT0RPKG1pc2tvKTogcmVmYWN0b3IgdG8gcmVtb3ZlIGVsZW1lbnQgZnJvbSB0
aGUgRE9NCi12YXIgbmdTaG93RGlyZWN0aXZlID0gbmdEaXJlY3RpdmUoZnVuY3Rpb24oc2NvcGUs
IGVsZW1lbnQsIGF0dHIpewotICBzY29wZS4kd2F0Y2goYXR0ci5uZ1Nob3csIGZ1bmN0aW9uIG5n
U2hvd1dhdGNoQWN0aW9uKHZhbHVlKXsKLSAgICBlbGVtZW50LmNzcygnZGlzcGxheScsIHRvQm9v
bGVhbih2YWx1ZSkgPyAnJyA6ICdub25lJyk7Ci0gIH0pOwotfSk7Ci0KLQotLyoqCi0gKiBAbmdk
b2MgZGlyZWN0aXZlCi0gKiBAbmFtZSBuZy5kaXJlY3RpdmU6bmdIaWRlCi0gKgotICogQGRlc2Ny
aXB0aW9uCi0gKiBUaGUgYG5nSGlkZWAgYW5kIGBuZ1Nob3dgIGRpcmVjdGl2ZXMgaGlkZSBvciBz
aG93IGEgcG9ydGlvbiBvZiB0aGUgRE9NIHRyZWUgKEhUTUwpCi0gKiBjb25kaXRpb25hbGx5Lgot
ICoKLSAqIEBlbGVtZW50IEFOWQotICogQHBhcmFtIHtleHByZXNzaW9ufSBuZ0hpZGUgSWYgdGhl
IHtAbGluayBndWlkZS9leHByZXNzaW9uIGV4cHJlc3Npb259IGlzIHRydXRoeSB0aGVuCi0gKiAg
ICAgdGhlIGVsZW1lbnQgaXMgc2hvd24gb3IgaGlkZGVuIHJlc3BlY3RpdmVseS4KLSAqCi0gKiBA
ZXhhbXBsZQotICAgPGRvYzpleGFtcGxlPgotICAgICA8ZG9jOnNvdXJjZT4KLSAgICAgICAgQ2xp
Y2sgbWU6IDxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmctbW9kZWw9ImNoZWNrZWQiPjxici8+Ci0g
ICAgICAgIFNob3c6IDxzcGFuIG5nLXNob3c9ImNoZWNrZWQiPkkgc2hvdyB1cCB3aGVuIHlvdSBj
aGVja2JveCBpcyBjaGVja2VkPzwvc3Bhbj4gPGJyLz4KLSAgICAgICAgSGlkZTogPHNwYW4gbmct
aGlkZT0iY2hlY2tlZCI+SSBoaWRlIHdoZW4geW91IGNoZWNrYm94IGlzIGNoZWNrZWQ/PC9zcGFu
PgotICAgICA8L2RvYzpzb3VyY2U+Ci0gICAgIDxkb2M6c2NlbmFyaW8+Ci0gICAgICAgaXQoJ3No
b3VsZCBjaGVjayBuZy1zaG93IC8gbmctaGlkZScsIGZ1bmN0aW9uKCkgewotICAgICAgICAgZXhw
ZWN0KGVsZW1lbnQoJy5kb2MtZXhhbXBsZS1saXZlIHNwYW46Zmlyc3Q6aGlkZGVuJykuY291bnQo
KSkudG9FcXVhbCgxKTsKLSAgICAgICAgIGV4cGVjdChlbGVtZW50KCcuZG9jLWV4YW1wbGUtbGl2
ZSBzcGFuOmxhc3Q6dmlzaWJsZScpLmNvdW50KCkpLnRvRXF1YWwoMSk7Ci0KLSAgICAgICAgIGlu
cHV0KCdjaGVja2VkJykuY2hlY2soKTsKLQotICAgICAgICAgZXhwZWN0KGVsZW1lbnQoJy5kb2Mt
ZXhhbXBsZS1saXZlIHNwYW46Zmlyc3Q6dmlzaWJsZScpLmNvdW50KCkpLnRvRXF1YWwoMSk7Ci0g
ICAgICAgICBleHBlY3QoZWxlbWVudCgnLmRvYy1leGFtcGxlLWxpdmUgc3BhbjpsYXN0OmhpZGRl
bicpLmNvdW50KCkpLnRvRXF1YWwoMSk7Ci0gICAgICAgfSk7Ci0gICAgIDwvZG9jOnNjZW5hcmlv
PgotICAgPC9kb2M6ZXhhbXBsZT4KLSAqLwotLy9UT0RPKG1pc2tvKTogcmVmYWN0b3IgdG8gcmVt
b3ZlIGVsZW1lbnQgZnJvbSB0aGUgRE9NCi12YXIgbmdIaWRlRGlyZWN0aXZlID0gbmdEaXJlY3Rp
dmUoZnVuY3Rpb24oc2NvcGUsIGVsZW1lbnQsIGF0dHIpewotICBzY29wZS4kd2F0Y2goYXR0ci5u
Z0hpZGUsIGZ1bmN0aW9uIG5nSGlkZVdhdGNoQWN0aW9uKHZhbHVlKXsKLSAgICBlbGVtZW50LmNz
cygnZGlzcGxheScsIHRvQm9vbGVhbih2YWx1ZSkgPyAnbm9uZScgOiAnJyk7Ci0gIH0pOwotfSk7
Ci0KLS8qKgotICogQG5nZG9jIGRpcmVjdGl2ZQotICogQG5hbWUgbmcuZGlyZWN0aXZlOm5nU3R5
bGUKLSAqCi0gKiBAZGVzY3JpcHRpb24KLSAqIFRoZSBgbmdTdHlsZWAgZGlyZWN0aXZlIGFsbG93
cyB5b3UgdG8gc2V0IENTUyBzdHlsZSBvbiBhbiBIVE1MIGVsZW1lbnQgY29uZGl0aW9uYWxseS4K
LSAqCi0gKiBAZWxlbWVudCBBTlkKLSAqIEBwYXJhbSB7ZXhwcmVzc2lvbn0gbmdTdHlsZSB7QGxp
bmsgZ3VpZGUvZXhwcmVzc2lvbiBFeHByZXNzaW9ufSB3aGljaCBldmFscyB0byBhbgotICogICAg
ICBvYmplY3Qgd2hvc2Uga2V5cyBhcmUgQ1NTIHN0eWxlIG5hbWVzIGFuZCB2YWx1ZXMgYXJlIGNv
cnJlc3BvbmRpbmcgdmFsdWVzIGZvciB0aG9zZSBDU1MKLSAqICAgICAga2V5cy4KLSAqCi0gKiBA
ZXhhbXBsZQotICAgPGV4YW1wbGU+Ci0gICAgIDxmaWxlIG5hbWU9ImluZGV4Lmh0bWwiPgotICAg
ICAgICA8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0ic2V0IiBuZy1jbGljaz0ibXlTdHlsZT17
Y29sb3I6J3JlZCd9Ij4KLSAgICAgICAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9ImNsZWFy
IiBuZy1jbGljaz0ibXlTdHlsZT17fSI+Ci0gICAgICAgIDxici8+Ci0gICAgICAgIDxzcGFuIG5n
LXN0eWxlPSJteVN0eWxlIj5TYW1wbGUgVGV4dDwvc3Bhbj4KLSAgICAgICAgPHByZT5teVN0eWxl
PXt7bXlTdHlsZX19PC9wcmU+Ci0gICAgIDwvZmlsZT4KLSAgICAgPGZpbGUgbmFtZT0ic3R5bGUu
Y3NzIj4KLSAgICAgICBzcGFuIHsKLSAgICAgICAgIGNvbG9yOiBibGFjazsKLSAgICAgICB9Ci0g
ICAgIDwvZmlsZT4KLSAgICAgPGZpbGUgbmFtZT0ic2NlbmFyaW8uanMiPgotICAgICAgIGl0KCdz
aG91bGQgY2hlY2sgbmctc3R5bGUnLCBmdW5jdGlvbigpIHsKLSAgICAgICAgIGV4cGVjdChlbGVt
ZW50KCcuZG9jLWV4YW1wbGUtbGl2ZSBzcGFuJykuY3NzKCdjb2xvcicpKS50b0JlKCdyZ2IoMCwg
MCwgMCknKTsKLSAgICAgICAgIGVsZW1lbnQoJy5kb2MtZXhhbXBsZS1saXZlIDpidXR0b25bdmFs
dWU9c2V0XScpLmNsaWNrKCk7Ci0gICAgICAgICBleHBlY3QoZWxlbWVudCgnLmRvYy1leGFtcGxl
LWxpdmUgc3BhbicpLmNzcygnY29sb3InKSkudG9CZSgncmdiKDI1NSwgMCwgMCknKTsKLSAgICAg
ICAgIGVsZW1lbnQoJy5kb2MtZXhhbXBsZS1saXZlIDpidXR0b25bdmFsdWU9Y2xlYXJdJykuY2xp
Y2soKTsKLSAgICAgICAgIGV4cGVjdChlbGVtZW50KCcuZG9jLWV4YW1wbGUtbGl2ZSBzcGFuJyku
Y3NzKCdjb2xvcicpKS50b0JlKCdyZ2IoMCwgMCwgMCknKTsKLSAgICAgICB9KTsKLSAgICAgPC9m
aWxlPgotICAgPC9leGFtcGxlPgotICovCi12YXIgbmdTdHlsZURpcmVjdGl2ZSA9IG5nRGlyZWN0
aXZlKGZ1bmN0aW9uKHNjb3BlLCBlbGVtZW50LCBhdHRyKSB7Ci0gIHNjb3BlLiR3YXRjaChhdHRy
Lm5nU3R5bGUsIGZ1bmN0aW9uIG5nU3R5bGVXYXRjaEFjdGlvbihuZXdTdHlsZXMsIG9sZFN0eWxl
cykgewotICAgIGlmIChvbGRTdHlsZXMgJiYgKG5ld1N0eWxlcyAhPT0gb2xkU3R5bGVzKSkgewot
ICAgICAgZm9yRWFjaChvbGRTdHlsZXMsIGZ1bmN0aW9uKHZhbCwgc3R5bGUpIHsgZWxlbWVudC5j
c3Moc3R5bGUsICcnKTt9KTsKLSAgICB9Ci0gICAgaWYgKG5ld1N0eWxlcykgZWxlbWVudC5jc3Mo
bmV3U3R5bGVzKTsKLSAgfSwgdHJ1ZSk7Ci19KTsKLQotLyoqCi0gKiBAbmdkb2MgZGlyZWN0aXZl
Ci0gKiBAbmFtZSBuZy5kaXJlY3RpdmU6bmdTd2l0Y2gKLSAqIEByZXN0cmljdCBFQQotICoKLSAq
IEBkZXNjcmlwdGlvbgotICogQ29uZGl0aW9uYWxseSBjaGFuZ2UgdGhlIERPTSBzdHJ1Y3R1cmUu
Ci0gKgotICogQHVzYWdlCi0gKiA8QU5ZIG5nLXN3aXRjaD0iZXhwcmVzc2lvbiI+Ci0gKiAgIDxB
Tlkgbmctc3dpdGNoLXdoZW49Im1hdGNoVmFsdWUxIj4uLi48L0FOWT4KLSAqICAgPEFOWSBuZy1z
d2l0Y2gtd2hlbj0ibWF0Y2hWYWx1ZTIiPi4uLjwvQU5ZPgotICogICAuLi4KLSAqICAgPEFOWSBu
Zy1zd2l0Y2gtZGVmYXVsdD4uLi48L0FOWT4KLSAqIDwvQU5ZPgotICoKLSAqIEBzY29wZQotICog
QHBhcmFtIHsqfSBuZ1N3aXRjaHxvbiBleHByZXNzaW9uIHRvIG1hdGNoIGFnYWluc3QgPHR0Pm5n
LXN3aXRjaC13aGVuPC90dD4uCi0gKiBAcGFyYW1EZXNjcmlwdGlvbgotICogT24gY2hpbGQgZWxt
ZW50cyBhZGQ6Ci0gKgotICogKiBgbmdTd2l0Y2hXaGVuYDogdGhlIGNhc2Ugc3RhdGVtZW50IHRv
IG1hdGNoIGFnYWluc3QuIElmIG1hdGNoIHRoZW4gdGhpcwotICogICBjYXNlIHdpbGwgYmUgZGlz
cGxheWVkLgotICogKiBgbmdTd2l0Y2hEZWZhdWx0YDogdGhlIGRlZmF1bHQgY2FzZSB3aGVuIG5v
IG90aGVyIGNhc3NlcyBtYXRjaC4KLSAqCi0gKiBAZXhhbXBsZQotICAgIDxkb2M6ZXhhbXBsZT4K
LSAgICAgIDxkb2M6c291cmNlPgotICAgICAgICA8c2NyaXB0PgotICAgICAgICAgIGZ1bmN0aW9u
IEN0cmwoJHNjb3BlKSB7Ci0gICAgICAgICAgICAkc2NvcGUuaXRlbXMgPSBbJ3NldHRpbmdzJywg
J2hvbWUnLCAnb3RoZXInXTsKLSAgICAgICAgICAgICRzY29wZS5zZWxlY3Rpb24gPSAkc2NvcGUu
aXRlbXNbMF07Ci0gICAgICAgICAgfQotICAgICAgICA8L3NjcmlwdD4KLSAgICAgICAgPGRpdiBu
Zy1jb250cm9sbGVyPSJDdHJsIj4KLSAgICAgICAgICA8c2VsZWN0IG5nLW1vZGVsPSJzZWxlY3Rp
b24iIG5nLW9wdGlvbnM9Iml0ZW0gZm9yIGl0ZW0gaW4gaXRlbXMiPgotICAgICAgICAgIDwvc2Vs
ZWN0PgotICAgICAgICAgIDx0dD5zZWxlY3Rpb249e3tzZWxlY3Rpb259fTwvdHQ+Ci0gICAgICAg
ICAgPGhyLz4KLSAgICAgICAgICA8ZGl2IG5nLXN3aXRjaCBvbj0ic2VsZWN0aW9uIiA+Ci0gICAg
ICAgICAgICA8ZGl2IG5nLXN3aXRjaC13aGVuPSJzZXR0aW5ncyI+U2V0dGluZ3MgRGl2PC9kaXY+
Ci0gICAgICAgICAgICA8c3BhbiBuZy1zd2l0Y2gtd2hlbj0iaG9tZSI+SG9tZSBTcGFuPC9zcGFu
PgotICAgICAgICAgICAgPHNwYW4gbmctc3dpdGNoLWRlZmF1bHQ+ZGVmYXVsdDwvc3Bhbj4KLSAg
ICAgICAgICA8L2Rpdj4KLSAgICAgICAgPC9kaXY+Ci0gICAgICA8L2RvYzpzb3VyY2U+Ci0gICAg
ICA8ZG9jOnNjZW5hcmlvPgotICAgICAgICBpdCgnc2hvdWxkIHN0YXJ0IGluIHNldHRpbmdzJywg
ZnVuY3Rpb24oKSB7Ci0gICAgICAgICBleHBlY3QoZWxlbWVudCgnLmRvYy1leGFtcGxlLWxpdmUg
W25nLXN3aXRjaF0nKS50ZXh0KCkpLnRvTWF0Y2goL1NldHRpbmdzIERpdi8pOwotICAgICAgICB9
KTsKLSAgICAgICAgaXQoJ3Nob3VsZCBjaGFuZ2UgdG8gaG9tZScsIGZ1bmN0aW9uKCkgewotICAg
ICAgICAgc2VsZWN0KCdzZWxlY3Rpb24nKS5vcHRpb24oJ2hvbWUnKTsKLSAgICAgICAgIGV4cGVj
dChlbGVtZW50KCcuZG9jLWV4YW1wbGUtbGl2ZSBbbmctc3dpdGNoXScpLnRleHQoKSkudG9NYXRj
aCgvSG9tZSBTcGFuLyk7Ci0gICAgICAgIH0pOwotICAgICAgICBpdCgnc2hvdWxkIHNlbGVjdCBk
ZWFmYXVsdCcsIGZ1bmN0aW9uKCkgewotICAgICAgICAgc2VsZWN0KCdzZWxlY3Rpb24nKS5vcHRp
b24oJ290aGVyJyk7Ci0gICAgICAgICBleHBlY3QoZWxlbWVudCgnLmRvYy1leGFtcGxlLWxpdmUg
W25nLXN3aXRjaF0nKS50ZXh0KCkpLnRvTWF0Y2goL2RlZmF1bHQvKTsKLSAgICAgICAgfSk7Ci0g
ICAgICA8L2RvYzpzY2VuYXJpbz4KLSAgICA8L2RvYzpleGFtcGxlPgotICovCi12YXIgTkdfU1dJ
VENIID0gJ25nLXN3aXRjaCc7Ci12YXIgbmdTd2l0Y2hEaXJlY3RpdmUgPSB2YWx1ZUZuKHsKLSAg
cmVzdHJpY3Q6ICdFQScsCi0gIHJlcXVpcmU6ICduZ1N3aXRjaCcsCi0gIC8vIGFza3MgZm9yICRz
Y29wZSB0byBmb29sIHRoZSBCQyBjb250cm9sbGVyIG1vZHVsZQotICBjb250cm9sbGVyOiBbJyRz
Y29wZScsIGZ1bmN0aW9uIG5nU3dpdGNoQ29udHJvbGxlcigpIHsKLSAgICB0aGlzLmNhc2VzID0g
e307Ci0gIH1dLAotICBsaW5rOiBmdW5jdGlvbihzY29wZSwgZWxlbWVudCwgYXR0ciwgY3RybCkg
ewotICAgIHZhciB3YXRjaEV4cHIgPSBhdHRyLm5nU3dpdGNoIHx8IGF0dHIub24sCi0gICAgICAg
IHNlbGVjdGVkVHJhbnNjbHVkZSwKLSAgICAgICAgc2VsZWN0ZWRFbGVtZW50LAotICAgICAgICBz
ZWxlY3RlZFNjb3BlOwotCi0gICAgc2NvcGUuJHdhdGNoKHdhdGNoRXhwciwgZnVuY3Rpb24gbmdT
d2l0Y2hXYXRjaEFjdGlvbih2YWx1ZSkgewotICAgICAgaWYgKHNlbGVjdGVkRWxlbWVudCkgewot
ICAgICAgICBzZWxlY3RlZFNjb3BlLiRkZXN0cm95KCk7Ci0gICAgICAgIHNlbGVjdGVkRWxlbWVu
dC5yZW1vdmUoKTsKLSAgICAgICAgc2VsZWN0ZWRFbGVtZW50ID0gc2VsZWN0ZWRTY29wZSA9IG51
bGw7Ci0gICAgICB9Ci0gICAgICBpZiAoKHNlbGVjdGVkVHJhbnNjbHVkZSA9IGN0cmwuY2FzZXNb
JyEnICsgdmFsdWVdIHx8IGN0cmwuY2FzZXNbJz8nXSkpIHsKLSAgICAgICAgc2NvcGUuJGV2YWwo
YXR0ci5jaGFuZ2UpOwotICAgICAgICBzZWxlY3RlZFNjb3BlID0gc2NvcGUuJG5ldygpOwotICAg
ICAgICBzZWxlY3RlZFRyYW5zY2x1ZGUoc2VsZWN0ZWRTY29wZSwgZnVuY3Rpb24oY2FzZUVsZW1l
bnQpIHsKLSAgICAgICAgICBzZWxlY3RlZEVsZW1lbnQgPSBjYXNlRWxlbWVudDsKLSAgICAgICAg
ICBlbGVtZW50LmFwcGVuZChjYXNlRWxlbWVudCk7Ci0gICAgICAgIH0pOwotICAgICAgfQotICAg
IH0pOwotICB9Ci19KTsKLQotdmFyIG5nU3dpdGNoV2hlbkRpcmVjdGl2ZSA9IG5nRGlyZWN0aXZl
KHsKLSAgdHJhbnNjbHVkZTogJ2VsZW1lbnQnLAotICBwcmlvcml0eTogNTAwLAotICByZXF1aXJl
OiAnXm5nU3dpdGNoJywKLSAgY29tcGlsZTogZnVuY3Rpb24oZWxlbWVudCwgYXR0cnMsIHRyYW5z
Y2x1ZGUpIHsKLSAgICByZXR1cm4gZnVuY3Rpb24oc2NvcGUsIGVsZW1lbnQsIGF0dHIsIGN0cmwp
IHsKLSAgICAgIGN0cmwuY2FzZXNbJyEnICsgYXR0cnMubmdTd2l0Y2hXaGVuXSA9IHRyYW5zY2x1
ZGU7Ci0gICAgfTsKLSAgfQotfSk7Ci0KLXZhciBuZ1N3aXRjaERlZmF1bHREaXJlY3RpdmUgPSBu
Z0RpcmVjdGl2ZSh7Ci0gIHRyYW5zY2x1ZGU6ICdlbGVtZW50JywKLSAgcHJpb3JpdHk6IDUwMCwK
LSAgcmVxdWlyZTogJ15uZ1N3aXRjaCcsCi0gIGNvbXBpbGU6IGZ1bmN0aW9uKGVsZW1lbnQsIGF0
dHJzLCB0cmFuc2NsdWRlKSB7Ci0gICAgcmV0dXJuIGZ1bmN0aW9uKHNjb3BlLCBlbGVtZW50LCBh
dHRyLCBjdHJsKSB7Ci0gICAgICBjdHJsLmNhc2VzWyc/J10gPSB0cmFuc2NsdWRlOwotICAgIH07
Ci0gIH0KLX0pOwotCi0vKioKLSAqIEBuZ2RvYyBkaXJlY3RpdmUKLSAqIEBuYW1lIG5nLmRpcmVj
dGl2ZTpuZ1RyYW5zY2x1ZGUKLSAqCi0gKiBAZGVzY3JpcHRpb24KLSAqIEluc2VydCB0aGUgdHJh
bnNjbHVkZWQgRE9NIGhlcmUuCi0gKgotICogQGVsZW1lbnQgQU5ZCi0gKgotICogQGV4YW1wbGUK
LSAgIDxkb2M6ZXhhbXBsZSBtb2R1bGU9InRyYW5zY2x1ZGUiPgotICAgICA8ZG9jOnNvdXJjZT4K
LSAgICAgICA8c2NyaXB0PgotICAgICAgICAgZnVuY3Rpb24gQ3RybCgkc2NvcGUpIHsKLSAgICAg
ICAgICAgJHNjb3BlLnRpdGxlID0gJ0xvcmVtIElwc3VtJzsKLSAgICAgICAgICAgJHNjb3BlLnRl
eHQgPSAnTmVxdWUgcG9ycm8gcXVpc3F1YW0gZXN0IHF1aSBkb2xvcmVtIGlwc3VtIHF1aWEgZG9s
b3IuLi4nOwotICAgICAgICAgfQotCi0gICAgICAgICBhbmd1bGFyLm1vZHVsZSgndHJhbnNjbHVk
ZScsIFtdKQotICAgICAgICAgIC5kaXJlY3RpdmUoJ3BhbmUnLCBmdW5jdGlvbigpewotICAgICAg
ICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAgICByZXN0cmljdDogJ0UnLAotICAgICAgICAg
ICAgICAgdHJhbnNjbHVkZTogdHJ1ZSwKLSAgICAgICAgICAgICAgIHNjb3BlOiAnaXNvbGF0ZScs
Ci0gICAgICAgICAgICAgICBsb2NhbHM6IHsgdGl0bGU6J2JpbmQnIH0sCi0gICAgICAgICAgICAg
ICB0ZW1wbGF0ZTogJzxkaXYgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOyI+JyArCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAnPGRpdiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjog
Z3JheSI+e3t0aXRsZX19PC9kaXY+JyArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAnPGRp
diBuZy10cmFuc2NsdWRlPjwvZGl2PicgKwotICAgICAgICAgICAgICAgICAgICAgICAgICc8L2Rp
dj4nCi0gICAgICAgICAgICAgfTsKLSAgICAgICAgIH0pOwotICAgICAgIDwvc2NyaXB0PgotICAg
ICAgIDxkaXYgbmctY29udHJvbGxlcj0iQ3RybCI+Ci0gICAgICAgICA8aW5wdXQgbmctbW9kZWw9
InRpdGxlIj48YnI+Ci0gICAgICAgICA8dGV4dGFyZWEgbmctbW9kZWw9InRleHQiPjwvdGV4dGFy
ZWE+IDxici8+Ci0gICAgICAgICA8cGFuZSB0aXRsZT0ie3t0aXRsZX19Ij57e3RleHR9fTwvcGFu
ZT4KLSAgICAgICA8L2Rpdj4KLSAgICAgPC9kb2M6c291cmNlPgotICAgICA8ZG9jOnNjZW5hcmlv
PgotICAgICAgICBpdCgnc2hvdWxkIGhhdmUgdHJhbnNjbHVkZWQnLCBmdW5jdGlvbigpIHsKLSAg
ICAgICAgICBpbnB1dCgndGl0bGUnKS5lbnRlcignVElUTEUnKTsKLSAgICAgICAgICBpbnB1dCgn
dGV4dCcpLmVudGVyKCdURVhUJyk7Ci0gICAgICAgICAgZXhwZWN0KGJpbmRpbmcoJ3RpdGxlJykp
LnRvRXF1YWwoJ1RJVExFJyk7Ci0gICAgICAgICAgZXhwZWN0KGJpbmRpbmcoJ3RleHQnKSkudG9F
cXVhbCgnVEVYVCcpOwotICAgICAgICB9KTsKLSAgICAgPC9kb2M6c2NlbmFyaW8+Ci0gICA8L2Rv
YzpleGFtcGxlPgotICoKLSAqLwotdmFyIG5nVHJhbnNjbHVkZURpcmVjdGl2ZSA9IG5nRGlyZWN0
aXZlKHsKLSAgY29udHJvbGxlcjogWyckdHJhbnNjbHVkZScsICckZWxlbWVudCcsIGZ1bmN0aW9u
KCR0cmFuc2NsdWRlLCAkZWxlbWVudCkgewotICAgICR0cmFuc2NsdWRlKGZ1bmN0aW9uKGNsb25l
KSB7Ci0gICAgICAkZWxlbWVudC5hcHBlbmQoY2xvbmUpOwotICAgIH0pOwotICB9XQotfSk7Ci0K
LS8qKgotICogQG5nZG9jIGRpcmVjdGl2ZQotICogQG5hbWUgbmcuZGlyZWN0aXZlOm5nVmlldwot
ICogQHJlc3RyaWN0IEVDQQotICoKLSAqIEBkZXNjcmlwdGlvbgotICogIyBPdmVydmlldwotICog
YG5nVmlld2AgaXMgYSBkaXJlY3RpdmUgdGhhdCBjb21wbGVtZW50cyB0aGUge0BsaW5rIG5nLiRy
b3V0ZSAkcm91dGV9IHNlcnZpY2UgYnkKLSAqIGluY2x1ZGluZyB0aGUgcmVuZGVyZWQgdGVtcGxh
dGUgb2YgdGhlIGN1cnJlbnQgcm91dGUgaW50byB0aGUgbWFpbiBsYXlvdXQgKGBpbmRleC5odG1s
YCkgZmlsZS4KLSAqIEV2ZXJ5IHRpbWUgdGhlIGN1cnJlbnQgcm91dGUgY2hhbmdlcywgdGhlIGlu
Y2x1ZGVkIHZpZXcgY2hhbmdlcyB3aXRoIGl0IGFjY29yZGluZyB0byB0aGUKLSAqIGNvbmZpZ3Vy
YXRpb24gb2YgdGhlIGAkcm91dGVgIHNlcnZpY2UuCi0gKgotICogQHNjb3BlCi0gKiBAZXhhbXBs
ZQotICAgIDxleGFtcGxlIG1vZHVsZT0ibmdWaWV3Ij4KLSAgICAgIDxmaWxlIG5hbWU9ImluZGV4
Lmh0bWwiPgotICAgICAgICA8ZGl2IG5nLWNvbnRyb2xsZXI9Ik1haW5DbnRsIj4KLSAgICAgICAg
ICBDaG9vc2U6Ci0gICAgICAgICAgPGEgaHJlZj0iQm9vay9Nb2J5Ij5Nb2J5PC9hPiB8Ci0gICAg
ICAgICAgPGEgaHJlZj0iQm9vay9Nb2J5L2NoLzEiPk1vYnk6IENoMTwvYT4gfAotICAgICAgICAg
IDxhIGhyZWY9IkJvb2svR2F0c2J5Ij5HYXRzYnk8L2E+IHwKLSAgICAgICAgICA8YSBocmVmPSJC
b29rL0dhdHNieS9jaC80P2tleT12YWx1ZSI+R2F0c2J5OiBDaDQ8L2E+IHwKLSAgICAgICAgICA8
YSBocmVmPSJCb29rL1NjYXJsZXQiPlNjYXJsZXQgTGV0dGVyPC9hPjxici8+Ci0KLSAgICAgICAg
ICA8ZGl2IG5nLXZpZXc+PC9kaXY+Ci0gICAgICAgICAgPGhyIC8+Ci0KLSAgICAgICAgICA8cHJl
PiRsb2NhdGlvbi5wYXRoKCkgPSB7eyRsb2NhdGlvbi5wYXRoKCl9fTwvcHJlPgotICAgICAgICAg
IDxwcmU+JHJvdXRlLmN1cnJlbnQudGVtcGxhdGVVcmwgPSB7eyRyb3V0ZS5jdXJyZW50LnRlbXBs
YXRlVXJsfX08L3ByZT4KLSAgICAgICAgICA8cHJlPiRyb3V0ZS5jdXJyZW50LnBhcmFtcyA9IHt7
JHJvdXRlLmN1cnJlbnQucGFyYW1zfX08L3ByZT4KLSAgICAgICAgICA8cHJlPiRyb3V0ZS5jdXJy
ZW50LnNjb3BlLm5hbWUgPSB7eyRyb3V0ZS5jdXJyZW50LnNjb3BlLm5hbWV9fTwvcHJlPgotICAg
ICAgICAgIDxwcmU+JHJvdXRlUGFyYW1zID0ge3skcm91dGVQYXJhbXN9fTwvcHJlPgotICAgICAg
ICA8L2Rpdj4KLSAgICAgIDwvZmlsZT4KLQotICAgICAgPGZpbGUgbmFtZT0iYm9vay5odG1sIj4K
LSAgICAgICAgY29udHJvbGxlcjoge3tuYW1lfX08YnIgLz4KLSAgICAgICAgQm9vayBJZDoge3tw
YXJhbXMuYm9va0lkfX08YnIgLz4KLSAgICAgIDwvZmlsZT4KLQotICAgICAgPGZpbGUgbmFtZT0i
Y2hhcHRlci5odG1sIj4KLSAgICAgICAgY29udHJvbGxlcjoge3tuYW1lfX08YnIgLz4KLSAgICAg
ICAgQm9vayBJZDoge3twYXJhbXMuYm9va0lkfX08YnIgLz4KLSAgICAgICAgQ2hhcHRlciBJZDog
e3twYXJhbXMuY2hhcHRlcklkfX0KLSAgICAgIDwvZmlsZT4KLQotICAgICAgPGZpbGUgbmFtZT0i
c2NyaXB0LmpzIj4KLSAgICAgICAgYW5ndWxhci5tb2R1bGUoJ25nVmlldycsIFtdLCBmdW5jdGlv
bigkcm91dGVQcm92aWRlciwgJGxvY2F0aW9uUHJvdmlkZXIpIHsKLSAgICAgICAgICAkcm91dGVQ
cm92aWRlci53aGVuKCcvQm9vay86Ym9va0lkJywgewotICAgICAgICAgICAgdGVtcGxhdGVVcmw6
ICdib29rLmh0bWwnLAotICAgICAgICAgICAgY29udHJvbGxlcjogQm9va0NudGwKLSAgICAgICAg
ICB9KTsKLSAgICAgICAgICAkcm91dGVQcm92aWRlci53aGVuKCcvQm9vay86Ym9va0lkL2NoLzpj
aGFwdGVySWQnLCB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZVVybDogJ2NoYXB0ZXIuaHRtbCcsCi0g
ICAgICAgICAgICBjb250cm9sbGVyOiBDaGFwdGVyQ250bAotICAgICAgICAgIH0pOwotCi0gICAg
ICAgICAgLy8gY29uZmlndXJlIGh0bWw1IHRvIGdldCBsaW5rcyB3b3JraW5nIG9uIGpzZmlkZGxl
Ci0gICAgICAgICAgJGxvY2F0aW9uUHJvdmlkZXIuaHRtbDVNb2RlKHRydWUpOwotICAgICAgICB9
KTsKLQotICAgICAgICBmdW5jdGlvbiBNYWluQ250bCgkc2NvcGUsICRyb3V0ZSwgJHJvdXRlUGFy
YW1zLCAkbG9jYXRpb24pIHsKLSAgICAgICAgICAkc2NvcGUuJHJvdXRlID0gJHJvdXRlOwotICAg
ICAgICAgICRzY29wZS4kbG9jYXRpb24gPSAkbG9jYXRpb247Ci0gICAgICAgICAgJHNjb3BlLiRy
b3V0ZVBhcmFtcyA9ICRyb3V0ZVBhcmFtczsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9u
IEJvb2tDbnRsKCRzY29wZSwgJHJvdXRlUGFyYW1zKSB7Ci0gICAgICAgICAgJHNjb3BlLm5hbWUg
PSAiQm9va0NudGwiOwotICAgICAgICAgICRzY29wZS5wYXJhbXMgPSAkcm91dGVQYXJhbXM7Ci0g
ICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBDaGFwdGVyQ250bCgkc2NvcGUsICRyb3V0ZVBh
cmFtcykgewotICAgICAgICAgICRzY29wZS5uYW1lID0gIkNoYXB0ZXJDbnRsIjsKLSAgICAgICAg
ICAkc2NvcGUucGFyYW1zID0gJHJvdXRlUGFyYW1zOwotICAgICAgICB9Ci0gICAgICA8L2ZpbGU+
Ci0KLSAgICAgIDxmaWxlIG5hbWU9InNjZW5hcmlvLmpzIj4KLSAgICAgICAgaXQoJ3Nob3VsZCBs
b2FkIGFuZCBjb21waWxlIGNvcnJlY3QgdGVtcGxhdGUnLCBmdW5jdGlvbigpIHsKLSAgICAgICAg
ICBlbGVtZW50KCdhOmNvbnRhaW5zKCJNb2J5OiBDaDEiKScpLmNsaWNrKCk7Ci0gICAgICAgICAg
dmFyIGNvbnRlbnQgPSBlbGVtZW50KCcuZG9jLWV4YW1wbGUtbGl2ZSBbbmctdmlld10nKS50ZXh0
KCk7Ci0gICAgICAgICAgZXhwZWN0KGNvbnRlbnQpLnRvTWF0Y2goL2NvbnRyb2xsZXJcOiBDaGFw
dGVyQ250bC8pOwotICAgICAgICAgIGV4cGVjdChjb250ZW50KS50b01hdGNoKC9Cb29rIElkXDog
TW9ieS8pOwotICAgICAgICAgIGV4cGVjdChjb250ZW50KS50b01hdGNoKC9DaGFwdGVyIElkXDog
MS8pOwotCi0gICAgICAgICAgZWxlbWVudCgnYTpjb250YWlucygiU2NhcmxldCIpJykuY2xpY2so
KTsKLSAgICAgICAgICBjb250ZW50ID0gZWxlbWVudCgnLmRvYy1leGFtcGxlLWxpdmUgW25nLXZp
ZXddJykudGV4dCgpOwotICAgICAgICAgIGV4cGVjdChjb250ZW50KS50b01hdGNoKC9jb250cm9s
bGVyXDogQm9va0NudGwvKTsKLSAgICAgICAgICBleHBlY3QoY29udGVudCkudG9NYXRjaCgvQm9v
ayBJZFw6IFNjYXJsZXQvKTsKLSAgICAgICAgfSk7Ci0gICAgICA8L2ZpbGU+Ci0gICAgPC9leGFt
cGxlPgotICovCi0KLQotLyoqCi0gKiBAbmdkb2MgZXZlbnQKLSAqIEBuYW1lIG5nLmRpcmVjdGl2
ZTpuZ1ZpZXcjJHZpZXdDb250ZW50TG9hZGVkCi0gKiBAZXZlbnRPZiBuZy5kaXJlY3RpdmU6bmdW
aWV3Ci0gKiBAZXZlbnRUeXBlIGVtaXQgb24gdGhlIGN1cnJlbnQgbmdWaWV3IHNjb3BlCi0gKiBA
ZGVzY3JpcHRpb24KLSAqIEVtaXR0ZWQgZXZlcnkgdGltZSB0aGUgbmdWaWV3IGNvbnRlbnQgaXMg
cmVsb2FkZWQuCi0gKi8KLXZhciBuZ1ZpZXdEaXJlY3RpdmUgPSBbJyRodHRwJywgJyR0ZW1wbGF0
ZUNhY2hlJywgJyRyb3V0ZScsICckYW5jaG9yU2Nyb2xsJywgJyRjb21waWxlJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgJyRjb250cm9sbGVyJywKLSAgICAgICAgICAgICAgIGZ1bmN0aW9uKCRo
dHRwLCAgICR0ZW1wbGF0ZUNhY2hlLCAgICRyb3V0ZSwgICAkYW5jaG9yU2Nyb2xsLCAgICRjb21w
aWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRyb2xsZXIpIHsKLSAgcmV0dXJuIHsK
LSAgICByZXN0cmljdDogJ0VDQScsCi0gICAgdGVybWluYWw6IHRydWUsCi0gICAgbGluazogZnVu
Y3Rpb24oc2NvcGUsIGVsZW1lbnQsIGF0dHIpIHsKLSAgICAgIHZhciBsYXN0U2NvcGUsCi0gICAg
ICAgICAgb25sb2FkRXhwID0gYXR0ci5vbmxvYWQgfHwgJyc7Ci0KLSAgICAgIHNjb3BlLiRvbign
JHJvdXRlQ2hhbmdlU3VjY2VzcycsIHVwZGF0ZSk7Ci0gICAgICB1cGRhdGUoKTsKLQotCi0gICAg
ICBmdW5jdGlvbiBkZXN0cm95TGFzdFNjb3BlKCkgewotICAgICAgICBpZiAobGFzdFNjb3BlKSB7
Ci0gICAgICAgICAgbGFzdFNjb3BlLiRkZXN0cm95KCk7Ci0gICAgICAgICAgbGFzdFNjb3BlID0g
bnVsbDsKLSAgICAgICAgfQotICAgICAgfQotCi0gICAgICBmdW5jdGlvbiBjbGVhckNvbnRlbnQo
KSB7Ci0gICAgICAgIGVsZW1lbnQuaHRtbCgnJyk7Ci0gICAgICAgIGRlc3Ryb3lMYXN0U2NvcGUo
KTsKLSAgICAgIH0KLQotICAgICAgZnVuY3Rpb24gdXBkYXRlKCkgewotICAgICAgICB2YXIgbG9j
YWxzID0gJHJvdXRlLmN1cnJlbnQgJiYgJHJvdXRlLmN1cnJlbnQubG9jYWxzLAotICAgICAgICAg
ICAgdGVtcGxhdGUgPSBsb2NhbHMgJiYgbG9jYWxzLiR0ZW1wbGF0ZTsKLQotICAgICAgICBpZiAo
dGVtcGxhdGUpIHsKLSAgICAgICAgICBlbGVtZW50Lmh0bWwodGVtcGxhdGUpOwotICAgICAgICAg
IGRlc3Ryb3lMYXN0U2NvcGUoKTsKLQotICAgICAgICAgIHZhciBsaW5rID0gJGNvbXBpbGUoZWxl
bWVudC5jb250ZW50cygpKSwKLSAgICAgICAgICAgICAgY3VycmVudCA9ICRyb3V0ZS5jdXJyZW50
LAotICAgICAgICAgICAgICBjb250cm9sbGVyOwotCi0gICAgICAgICAgbGFzdFNjb3BlID0gY3Vy
cmVudC5zY29wZSA9IHNjb3BlLiRuZXcoKTsKLSAgICAgICAgICBpZiAoY3VycmVudC5jb250cm9s
bGVyKSB7Ci0gICAgICAgICAgICBsb2NhbHMuJHNjb3BlID0gbGFzdFNjb3BlOwotICAgICAgICAg
ICAgY29udHJvbGxlciA9ICRjb250cm9sbGVyKGN1cnJlbnQuY29udHJvbGxlciwgbG9jYWxzKTsK
LSAgICAgICAgICAgIGVsZW1lbnQuY2hpbGRyZW4oKS5kYXRhKCckbmdDb250cm9sbGVyQ29udHJv
bGxlcicsIGNvbnRyb2xsZXIpOwotICAgICAgICAgIH0KLQotICAgICAgICAgIGxpbmsobGFzdFNj
b3BlKTsKLSAgICAgICAgICBsYXN0U2NvcGUuJGVtaXQoJyR2aWV3Q29udGVudExvYWRlZCcpOwot
ICAgICAgICAgIGxhc3RTY29wZS4kZXZhbChvbmxvYWRFeHApOwotCi0gICAgICAgICAgLy8gJGFu
Y2hvclNjcm9sbCBtaWdodCBsaXN0ZW4gb24gZXZlbnQuLi4KLSAgICAgICAgICAkYW5jaG9yU2Ny
b2xsKCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgY2xlYXJDb250ZW50KCk7Ci0gICAg
ICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gIH07Ci19XTsKLQotLyoqCi0gKiBAbmdkb2MgZGlyZWN0
aXZlCi0gKiBAbmFtZSBuZy5kaXJlY3RpdmU6c2NyaXB0Ci0gKgotICogQGRlc2NyaXB0aW9uCi0g
KiBMb2FkIGNvbnRlbnQgb2YgYSBzY3JpcHQgdGFnLCB3aXRoIHR5cGUgYHRleHQvbmctdGVtcGxh
dGVgLCBpbnRvIGAkdGVtcGxhdGVDYWNoZWAsIHNvIHRoYXQgdGhlCi0gKiB0ZW1wbGF0ZSBjYW4g
YmUgdXNlZCBieSBgbmdJbmNsdWRlYCwgYG5nVmlld2Agb3IgZGlyZWN0aXZlIHRlbXBsYXRlcy4K
LSAqCi0gKiBAcmVzdHJpY3QgRQotICogQHBhcmFtIHsndGV4dC9uZy10ZW1wbGF0ZSd9IHR5cGUg
bXVzdCBiZSBzZXQgdG8gYCd0ZXh0L25nLXRlbXBsYXRlJ2AKLSAqCi0gKiBAZXhhbXBsZQotICA8
ZG9jOmV4YW1wbGU+Ci0gICAgPGRvYzpzb3VyY2U+Ci0gICAgICA8c2NyaXB0IHR5cGU9InRleHQv
bmctdGVtcGxhdGUiIGlkPSIvdHBsLmh0bWwiPgotICAgICAgICBDb250ZW50IG9mIHRoZSB0ZW1w
bGF0ZS4KLSAgICAgIDwvc2NyaXB0PgotCi0gICAgICA8YSBuZy1jbGljaz0iY3VycmVudFRwbD0n
L3RwbC5odG1sJyIgaWQ9InRwbC1saW5rIj5Mb2FkIGlubGluZWQgdGVtcGxhdGU8L2E+Ci0gICAg
ICA8ZGl2IGlkPSJ0cGwtY29udGVudCIgbmctaW5jbHVkZSBzcmM9ImN1cnJlbnRUcGwiPjwvZGl2
PgotICAgIDwvZG9jOnNvdXJjZT4KLSAgICA8ZG9jOnNjZW5hcmlvPgotICAgICAgaXQoJ3Nob3Vs
ZCBsb2FkIHRlbXBsYXRlIGRlZmluZWQgaW5zaWRlIHNjcmlwdCB0YWcnLCBmdW5jdGlvbigpIHsK
LSAgICAgICAgZWxlbWVudCgnI3RwbC1saW5rJykuY2xpY2soKTsKLSAgICAgICAgZXhwZWN0KGVs
ZW1lbnQoJyN0cGwtY29udGVudCcpLnRleHQoKSkudG9NYXRjaCgvQ29udGVudCBvZiB0aGUgdGVt
cGxhdGUvKTsKLSAgICAgIH0pOwotICAgIDwvZG9jOnNjZW5hcmlvPgotICA8L2RvYzpleGFtcGxl
PgotICovCi12YXIgc2NyaXB0RGlyZWN0aXZlID0gWyckdGVtcGxhdGVDYWNoZScsIGZ1bmN0aW9u
KCR0ZW1wbGF0ZUNhY2hlKSB7Ci0gIHJldHVybiB7Ci0gICAgcmVzdHJpY3Q6ICdFJywKLSAgICB0
ZXJtaW5hbDogdHJ1ZSwKLSAgICBjb21waWxlOiBmdW5jdGlvbihlbGVtZW50LCBhdHRyKSB7Ci0g
ICAgICBpZiAoYXR0ci50eXBlID09ICd0ZXh0L25nLXRlbXBsYXRlJykgewotICAgICAgICB2YXIg
dGVtcGxhdGVVcmwgPSBhdHRyLmlkLAotICAgICAgICAgICAgLy8gSUUgaXMgbm90IGNvbnNpc3Rl
bnQsIGluIHNjcmlwdHMgd2UgaGF2ZSB0byByZWFkIC50ZXh0IGJ1dCBpbiBvdGhlciBub2RlcyB3
ZSBoYXZlIHRvIHJlYWQgLnRleHRDb250ZW50Ci0gICAgICAgICAgICB0ZXh0ID0gZWxlbWVudFsw
XS50ZXh0OwotCi0gICAgICAgICR0ZW1wbGF0ZUNhY2hlLnB1dCh0ZW1wbGF0ZVVybCwgdGV4dCk7
Ci0gICAgICB9Ci0gICAgfQotICB9OwotfV07Ci0KLS8qKgotICogQG5nZG9jIGRpcmVjdGl2ZQot
ICogQG5hbWUgbmcuZGlyZWN0aXZlOnNlbGVjdAotICogQHJlc3RyaWN0IEUKLSAqCi0gKiBAZGVz
Y3JpcHRpb24KLSAqIEhUTUwgYFNFTEVDVGAgZWxlbWVudCB3aXRoIGFuZ3VsYXIgZGF0YS1iaW5k
aW5nLgotICoKLSAqICMgYG5nT3B0aW9uc2AKLSAqCi0gKiBPcHRpb25hbGx5IGBuZ09wdGlvbnNg
IGF0dHJpYnV0ZSBjYW4gYmUgdXNlZCB0byBkeW5hbWljYWxseSBnZW5lcmF0ZSBhIGxpc3Qgb2Yg
YDxvcHRpb24+YAotICogZWxlbWVudHMgZm9yIGEgYDxzZWxlY3Q+YCBlbGVtZW50IHVzaW5nIGFu
IGFycmF5IG9yIGFuIG9iamVjdCBvYnRhaW5lZCBieSBldmFsdWF0aW5nIHRoZQotICogYG5nT3B0
aW9uc2AgZXhwcmVzc2lvbi4KLSAqy53LnQotICogV2hlbiBhbiBpdGVtIGluIHRoZSBzZWxlY3Qg
bWVudSBpcyBzZWxlY3QsIHRoZSB2YWx1ZSBvZiBhcnJheSBlbGVtZW50IG9yIG9iamVjdCBwcm9w
ZXJ0eQotICogcmVwcmVzZW50ZWQgYnkgdGhlIHNlbGVjdGVkIG9wdGlvbiB3aWxsIGJlIGJvdW5k
IHRvIHRoZSBtb2RlbCBpZGVudGlmaWVkIGJ5IHRoZSBgbmdNb2RlbGAKLSAqIGRpcmVjdGl2ZSBv
ZiB0aGUgcGFyZW50IHNlbGVjdCBlbGVtZW50LgotICoKLSAqIE9wdGlvbmFsbHksIGEgc2luZ2xl
IGhhcmQtY29kZWQgYDxvcHRpb24+YCBlbGVtZW50LCB3aXRoIHRoZSB2YWx1ZSBzZXQgdG8gYW4g
ZW1wdHkgc3RyaW5nLCBjYW4KLSAqIGJlIG5lc3RlZCBpbnRvIHRoZSBgPHNlbGVjdD5gIGVsZW1l
bnQuIFRoaXMgZWxlbWVudCB3aWxsIHRoZW4gcmVwcmVzZW50IGBudWxsYCBvciAibm90IHNlbGVj
dGVkIgotICogb3B0aW9uLiBTZWUgZXhhbXBsZSBiZWxvdyBmb3IgZGVtb25zdHJhdGlvbi4KLSAq
Ci0gKiBOb3RlOiBgbmdPcHRpb25zYCBwcm92aWRlcyBpdGVyYXRvciBmYWNpbGl0eSBmb3IgYDxv
cHRpb24+YCBlbGVtZW50IHdoaWNoIHNob3VsZCBiZSB1c2VkIGluc3RlYWQKLSAqIG9mIHtAbGlu
ayBuZy5kaXJlY3RpdmU6bmdSZXBlYXQgbmdSZXBlYXR9IHdoZW4geW91IHdhbnQgdGhlCi0gKiBg
c2VsZWN0YCBtb2RlbCB0byBiZSBib3VuZCB0byBhIG5vbi1zdHJpbmcgdmFsdWUuIFRoaXMgaXMg
YmVjYXVzZSBhbiBvcHRpb24gZWxlbWVudCBjYW4gY3VycmVudGx5Ci0gKiBiZSBib3VuZCB0byBz
dHJpbmcgdmFsdWVzIG9ubHkuCi0gKgotICogQHBhcmFtIHtzdHJpbmd9IG5nTW9kZWwgQXNzaWdu
YWJsZSBhbmd1bGFyIGV4cHJlc3Npb24gdG8gZGF0YS1iaW5kIHRvLgotICogQHBhcmFtIHtzdHJp
bmc9fSBuYW1lIFByb3BlcnR5IG5hbWUgb2YgdGhlIGZvcm0gdW5kZXIgd2hpY2ggdGhlIGNvbnRy
b2wgaXMgcHVibGlzaGVkLgotICogQHBhcmFtIHtzdHJpbmc9fSByZXF1aXJlZCBUaGUgY29udHJv
bCBpcyBjb25zaWRlcmVkIHZhbGlkIG9ubHkgaWYgdmFsdWUgaXMgZW50ZXJlZC4KLSAqIEBwYXJh
bSB7c3RyaW5nPX0gbmdSZXF1aXJlZCBBZGRzIGByZXF1aXJlZGAgYXR0cmlidXRlIGFuZCBgcmVx
dWlyZWRgIHZhbGlkYXRpb24gY29uc3RyYWludCB0bwotICogICAgdGhlIGVsZW1lbnQgd2hlbiB0
aGUgbmdSZXF1aXJlZCBleHByZXNzaW9uIGV2YWx1YXRlcyB0byB0cnVlLiBVc2UgYG5nUmVxdWly
ZWRgIGluc3RlYWQgb2YKLSAqICAgIGByZXF1aXJlZGAgd2hlbiB5b3Ugd2FudCB0byBkYXRhLWJp
bmQgdG8gdGhlIGByZXF1aXJlZGAgYXR0cmlidXRlLgotICogQHBhcmFtIHtjb21wcmVoZW5zaW9u
X2V4cHJlc3Npb249fSBuZ09wdGlvbnMgaW4gb25lIG9mIHRoZSBmb2xsb3dpbmcgZm9ybXM6Ci0g
KgotICogICAqIGZvciBhcnJheSBkYXRhIHNvdXJjZXM6Ci0gKiAgICAgKiBgbGFiZWxgICoqYGZv
cmAqKiBgdmFsdWVgICoqYGluYCoqIGBhcnJheWAKLSAqICAgICAqIGBzZWxlY3RgICoqYGFzYCoq
IGBsYWJlbGAgKipgZm9yYCoqIGB2YWx1ZWAgKipgaW5gKiogYGFycmF5YAotICogICAgICogYGxh
YmVsYCAgKipgZ3JvdXAgYnlgKiogYGdyb3VwYCAqKmBmb3JgKiogYHZhbHVlYCAqKmBpbmAqKiBg
YXJyYXlgCi0gKiAgICAgKiBgc2VsZWN0YCAqKmBhc2AqKiBgbGFiZWxgICoqYGdyb3VwIGJ5YCoq
IGBncm91cGAgKipgZm9yYCoqIGB2YWx1ZWAgKipgaW5gKiogYGFycmF5YAotICogICAqIGZvciBv
YmplY3QgZGF0YSBzb3VyY2VzOgotICogICAgICogYGxhYmVsYCAqKmBmb3IgKGAqKmBrZXlgICoq
YCxgKiogYHZhbHVlYCoqYCkgaW5gKiogYG9iamVjdGAKLSAqICAgICAqIGBzZWxlY3RgICoqYGFz
YCoqIGBsYWJlbGAgKipgZm9yIChgKipga2V5YCAqKmAsYCoqIGB2YWx1ZWAqKmApIGluYCoqIGBv
YmplY3RgCi0gKiAgICAgKiBgbGFiZWxgICoqYGdyb3VwIGJ5YCoqIGBncm91cGAgKipgZm9yIChg
Kipga2V5YCoqYCxgKiogYHZhbHVlYCoqYCkgaW5gKiogYG9iamVjdGAKLSAqICAgICAqIGBzZWxl
Y3RgICoqYGFzYCoqIGBsYWJlbGAgKipgZ3JvdXAgYnlgKiogYGdyb3VwYAotICogICAgICAgICAq
KmBmb3JgIGAoYCoqYGtleWAqKmAsYCoqIGB2YWx1ZWAqKmApIGluYCoqIGBvYmplY3RgCi0gKgot
ICogV2hlcmU6Ci0gKgotICogICAqIGBhcnJheWAgLyBgb2JqZWN0YDogYW4gZXhwcmVzc2lvbiB3
aGljaCBldmFsdWF0ZXMgdG8gYW4gYXJyYXkgLyBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLgotICog
ICAqIGB2YWx1ZWA6IGxvY2FsIHZhcmlhYmxlIHdoaWNoIHdpbGwgcmVmZXIgdG8gZWFjaCBpdGVt
IGluIHRoZSBgYXJyYXlgIG9yIGVhY2ggcHJvcGVydHkgdmFsdWUKLSAqICAgICAgb2YgYG9iamVj
dGAgZHVyaW5nIGl0ZXJhdGlvbi4KLSAqICAgKiBga2V5YDogbG9jYWwgdmFyaWFibGUgd2hpY2gg
d2lsbCByZWZlciB0byBhIHByb3BlcnR5IG5hbWUgaW4gYG9iamVjdGAgZHVyaW5nIGl0ZXJhdGlv
bi4KLSAqICAgKiBgbGFiZWxgOiBUaGUgcmVzdWx0IG9mIHRoaXMgZXhwcmVzc2lvbiB3aWxsIGJl
IHRoZSBsYWJlbCBmb3IgYDxvcHRpb24+YCBlbGVtZW50LiBUaGUKLSAqICAgICBgZXhwcmVzc2lv
bmAgd2lsbCBtb3N0IGxpa2VseSByZWZlciB0byB0aGUgYHZhbHVlYCB2YXJpYWJsZSAoZS5nLiBg
dmFsdWUucHJvcGVydHlOYW1lYCkuCi0gKiAgICogYHNlbGVjdGA6IFRoZSByZXN1bHQgb2YgdGhp
cyBleHByZXNzaW9uIHdpbGwgYmUgYm91bmQgdG8gdGhlIG1vZGVsIG9mIHRoZSBwYXJlbnQgYDxz
ZWxlY3Q+YAotICogICAgICBlbGVtZW50LiBJZiBub3Qgc3BlY2lmaWVkLCBgc2VsZWN0YCBleHBy
ZXNzaW9uIHdpbGwgZGVmYXVsdCB0byBgdmFsdWVgLgotICogICAqIGBncm91cGA6IFRoZSByZXN1
bHQgb2YgdGhpcyBleHByZXNzaW9uIHdpbGwgYmUgdXNlZCB0byBncm91cCBvcHRpb25zIHVzaW5n
IHRoZSBgPG9wdGdyb3VwPmAKLSAqICAgICAgRE9NIGVsZW1lbnQuCi0gKgotICogQGV4YW1wbGUK
LSAgICA8ZG9jOmV4YW1wbGU+Ci0gICAgICA8ZG9jOnNvdXJjZT4KLSAgICAgICAgPHNjcmlwdD4K
LSAgICAgICAgZnVuY3Rpb24gTXlDbnRybCgkc2NvcGUpIHsKLSAgICAgICAgICAkc2NvcGUuY29s
b3JzID0gWwotICAgICAgICAgICAge25hbWU6J2JsYWNrJywgc2hhZGU6J2RhcmsnfSwKLSAgICAg
ICAgICAgIHtuYW1lOid3aGl0ZScsIHNoYWRlOidsaWdodCd9LAotICAgICAgICAgICAge25hbWU6
J3JlZCcsIHNoYWRlOidkYXJrJ30sCi0gICAgICAgICAgICB7bmFtZTonYmx1ZScsIHNoYWRlOidk
YXJrJ30sCi0gICAgICAgICAgICB7bmFtZToneWVsbG93Jywgc2hhZGU6J2xpZ2h0J30KLSAgICAg
ICAgICBdOwotICAgICAgICAgICRzY29wZS5jb2xvciA9ICRzY29wZS5jb2xvcnNbMl07IC8vIHJl
ZAotICAgICAgICB9Ci0gICAgICAgIDwvc2NyaXB0PgotICAgICAgICA8ZGl2IG5nLWNvbnRyb2xs
ZXI9Ik15Q250cmwiPgotICAgICAgICAgIDx1bD4KLSAgICAgICAgICAgIDxsaSBuZy1yZXBlYXQ9
ImNvbG9yIGluIGNvbG9ycyI+Ci0gICAgICAgICAgICAgIE5hbWU6IDxpbnB1dCBuZy1tb2RlbD0i
Y29sb3IubmFtZSI+Ci0gICAgICAgICAgICAgIFs8YSBocmVmIG5nLWNsaWNrPSJjb2xvcnMuc3Bs
aWNlKCRpbmRleCwgMSkiPlg8L2E+XQotICAgICAgICAgICAgPC9saT4KLSAgICAgICAgICAgIDxs
aT4KLSAgICAgICAgICAgICAgWzxhIGhyZWYgbmctY2xpY2s9ImNvbG9ycy5wdXNoKHt9KSI+YWRk
PC9hPl0KLSAgICAgICAgICAgIDwvbGk+Ci0gICAgICAgICAgPC91bD4KLSAgICAgICAgICA8aHIv
PgotICAgICAgICAgIENvbG9yIChudWxsIG5vdCBhbGxvd2VkKToKLSAgICAgICAgICA8c2VsZWN0
IG5nLW1vZGVsPSJjb2xvciIgbmctb3B0aW9ucz0iYy5uYW1lIGZvciBjIGluIGNvbG9ycyI+PC9z
ZWxlY3Q+PGJyPgotCi0gICAgICAgICAgQ29sb3IgKG51bGwgYWxsb3dlZCk6Ci0gICAgICAgICAg
PHNwYW4gIGNsYXNzPSJudWxsYWJsZSI+Ci0gICAgICAgICAgICA8c2VsZWN0IG5nLW1vZGVsPSJj
b2xvciIgbmctb3B0aW9ucz0iYy5uYW1lIGZvciBjIGluIGNvbG9ycyI+Ci0gICAgICAgICAgICAg
IDxvcHRpb24gdmFsdWU9IiI+LS0gY2hvc2UgY29sb3IgLS08L29wdGlvbj4KLSAgICAgICAgICAg
IDwvc2VsZWN0PgotICAgICAgICAgIDwvc3Bhbj48YnIvPgotCi0gICAgICAgICAgQ29sb3IgZ3Jv
dXBlZCBieSBzaGFkZToKLSAgICAgICAgICA8c2VsZWN0IG5nLW1vZGVsPSJjb2xvciIgbmctb3B0
aW9ucz0iYy5uYW1lIGdyb3VwIGJ5IGMuc2hhZGUgZm9yIGMgaW4gY29sb3JzIj4KLSAgICAgICAg
ICA8L3NlbGVjdD48YnIvPgotCi0KLSAgICAgICAgICBTZWxlY3QgPGEgaHJlZiBuZy1jbGljaz0i
Y29sb3I9e25hbWU6J25vdCBpbiBsaXN0J30iPmJvZ3VzPC9hPi48YnI+Ci0gICAgICAgICAgPGhy
Lz4KLSAgICAgICAgICBDdXJyZW50bHkgc2VsZWN0ZWQ6IHt7IHtzZWxlY3RlZF9jb2xvcjpjb2xv
cn0gIH19Ci0gICAgICAgICAgPGRpdiBzdHlsZT0iYm9yZGVyOnNvbGlkIDFweCBibGFjazsgaGVp
Z2h0OjIwcHgiCi0gICAgICAgICAgICAgICBuZy1zdHlsZT0ieydiYWNrZ3JvdW5kLWNvbG9yJzpj
b2xvci5uYW1lfSI+Ci0gICAgICAgICAgPC9kaXY+Ci0gICAgICAgIDwvZGl2PgotICAgICAgPC9k
b2M6c291cmNlPgotICAgICAgPGRvYzpzY2VuYXJpbz4KLSAgICAgICAgIGl0KCdzaG91bGQgY2hl
Y2sgbmctb3B0aW9ucycsIGZ1bmN0aW9uKCkgewotICAgICAgICAgICBleHBlY3QoYmluZGluZygn
e3NlbGVjdGVkX2NvbG9yOmNvbG9yfScpKS50b01hdGNoKCdyZWQnKTsKLSAgICAgICAgICAgc2Vs
ZWN0KCdjb2xvcicpLm9wdGlvbignMCcpOwotICAgICAgICAgICBleHBlY3QoYmluZGluZygne3Nl
bGVjdGVkX2NvbG9yOmNvbG9yfScpKS50b01hdGNoKCdibGFjaycpOwotICAgICAgICAgICB1c2lu
ZygnLm51bGxhYmxlJykuc2VsZWN0KCdjb2xvcicpLm9wdGlvbignJyk7Ci0gICAgICAgICAgIGV4
cGVjdChiaW5kaW5nKCd7c2VsZWN0ZWRfY29sb3I6Y29sb3J9JykpLnRvTWF0Y2goJ251bGwnKTsK
LSAgICAgICAgIH0pOwotICAgICAgPC9kb2M6c2NlbmFyaW8+Ci0gICAgPC9kb2M6ZXhhbXBsZT4K
LSAqLwotCi12YXIgbmdPcHRpb25zRGlyZWN0aXZlID0gdmFsdWVGbih7IHRlcm1pbmFsOiB0cnVl
IH0pOwotdmFyIHNlbGVjdERpcmVjdGl2ZSA9IFsnJGNvbXBpbGUnLCAnJHBhcnNlJywgZnVuY3Rp
b24oJGNvbXBpbGUsICAgJHBhcnNlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgLy8wMDAw
MTExMTEwMDAwMDAwMDAwMDIyMjIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMzMzMzAwMDAwMDAwMDAw
MDAwNDQ0NDQ0NDQ0NDQ0NDQ0NDQwMDAwMDAwMDA1NTU1NTU1NTU1NTU1NTU1NTAwMDAwMDA2NjY2
NjY2NjY2NjY2NjY2NjAwMDAwMDAwMDAwMDAwMDc3NzcwCi0gIHZhciBOR19PUFRJT05TX1JFR0VY
UCA9IC9eXHMqKC4qPykoPzpccythc1xzKyguKj8pKT8oPzpccytncm91cFxzK2J5XHMrKC4qKSk/
XHMrZm9yXHMrKD86KFtcJFx3XVtcJFx3XGRdKil8KD86XChccyooW1wkXHddW1wkXHdcZF0qKVxz
KixccyooW1wkXHddW1wkXHdcZF0qKVxzKlwpKSlccytpblxzKyguKikkLywKLSAgICAgIG51bGxN
b2RlbEN0cmwgPSB7JHNldFZpZXdWYWx1ZTogbm9vcH07Ci0KLSAgcmV0dXJuIHsKLSAgICByZXN0
cmljdDogJ0UnLAotICAgIHJlcXVpcmU6IFsnc2VsZWN0JywgJz9uZ01vZGVsJ10sCi0gICAgY29u
dHJvbGxlcjogWyckZWxlbWVudCcsICckc2NvcGUnLCAnJGF0dHJzJywgZnVuY3Rpb24oJGVsZW1l
bnQsICRzY29wZSwgJGF0dHJzKSB7Ci0gICAgICB2YXIgc2VsZiA9IHRoaXMsCi0gICAgICAgICAg
b3B0aW9uc01hcCA9IHt9LAotICAgICAgICAgIG5nTW9kZWxDdHJsID0gbnVsbE1vZGVsQ3RybCwK
LSAgICAgICAgICBudWxsT3B0aW9uLAotICAgICAgICAgIHVua25vd25PcHRpb247Ci0KLQotICAg
ICAgc2VsZi5kYXRhYm91bmQgPSAkYXR0cnMubmdNb2RlbDsKLQotCi0gICAgICBzZWxmLmluaXQg
PSBmdW5jdGlvbihuZ01vZGVsQ3RybF8sIG51bGxPcHRpb25fLCB1bmtub3duT3B0aW9uXykgewot
ICAgICAgICBuZ01vZGVsQ3RybCA9IG5nTW9kZWxDdHJsXzsKLSAgICAgICAgbnVsbE9wdGlvbiA9
IG51bGxPcHRpb25fOwotICAgICAgICB1bmtub3duT3B0aW9uID0gdW5rbm93bk9wdGlvbl87Ci0g
ICAgICB9Ci0KLQotICAgICAgc2VsZi5hZGRPcHRpb24gPSBmdW5jdGlvbih2YWx1ZSkgewotICAg
ICAgICBvcHRpb25zTWFwW3ZhbHVlXSA9IHRydWU7Ci0KLSAgICAgICAgaWYgKG5nTW9kZWxDdHJs
LiR2aWV3VmFsdWUgPT0gdmFsdWUpIHsKLSAgICAgICAgICAkZWxlbWVudC52YWwodmFsdWUpOwot
ICAgICAgICAgIGlmICh1bmtub3duT3B0aW9uLnBhcmVudCgpKSB1bmtub3duT3B0aW9uLnJlbW92
ZSgpOwotICAgICAgICB9Ci0gICAgICB9OwotCi0KLSAgICAgIHNlbGYucmVtb3ZlT3B0aW9uID0g
ZnVuY3Rpb24odmFsdWUpIHsKLSAgICAgICAgaWYgKHRoaXMuaGFzT3B0aW9uKHZhbHVlKSkgewot
ICAgICAgICAgIGRlbGV0ZSBvcHRpb25zTWFwW3ZhbHVlXTsKLSAgICAgICAgICBpZiAobmdNb2Rl
bEN0cmwuJHZpZXdWYWx1ZSA9PSB2YWx1ZSkgewotICAgICAgICAgICAgdGhpcy5yZW5kZXJVbmtu
b3duT3B0aW9uKHZhbHVlKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH07Ci0KLQot
ICAgICAgc2VsZi5yZW5kZXJVbmtub3duT3B0aW9uID0gZnVuY3Rpb24odmFsKSB7Ci0gICAgICAg
IHZhciB1bmtub3duVmFsID0gJz8gJyArIGhhc2hLZXkodmFsKSArICcgPyc7Ci0gICAgICAgIHVu
a25vd25PcHRpb24udmFsKHVua25vd25WYWwpOwotICAgICAgICAkZWxlbWVudC5wcmVwZW5kKHVu
a25vd25PcHRpb24pOwotICAgICAgICAkZWxlbWVudC52YWwodW5rbm93blZhbCk7Ci0gICAgICAg
IHVua25vd25PcHRpb24ucHJvcCgnc2VsZWN0ZWQnLCB0cnVlKTsgLy8gbmVlZGVkIGZvciBJRQot
ICAgICAgfQotCi0KLSAgICAgIHNlbGYuaGFzT3B0aW9uID0gZnVuY3Rpb24odmFsdWUpIHsKLSAg
ICAgICAgcmV0dXJuIG9wdGlvbnNNYXAuaGFzT3duUHJvcGVydHkodmFsdWUpOwotICAgICAgfQot
Ci0gICAgICAkc2NvcGUuJG9uKCckZGVzdHJveScsIGZ1bmN0aW9uKCkgewotICAgICAgICAvLyBk
aXNhYmxlIHVua25vd24gb3B0aW9uIHNvIHRoYXQgd2UgZG9uJ3QgZG8gd29yayB3aGVuIHRoZSB3
aG9sZSBzZWxlY3QgaXMgYmVpbmcgZGVzdHJveWVkCi0gICAgICAgIHNlbGYucmVuZGVyVW5rbm93
bk9wdGlvbiA9IG5vb3A7Ci0gICAgICB9KTsKLSAgICB9XSwKLQotICAgIGxpbms6IGZ1bmN0aW9u
KHNjb3BlLCBlbGVtZW50LCBhdHRyLCBjdHJscykgewotICAgICAgLy8gaWYgbmdNb2RlbCBpcyBu
b3QgZGVmaW5lZCwgd2UgZG9uJ3QgbmVlZCB0byBkbyBhbnl0aGluZwotICAgICAgaWYgKCFjdHJs
c1sxXSkgcmV0dXJuOwotCi0gICAgICB2YXIgc2VsZWN0Q3RybCA9IGN0cmxzWzBdLAotICAgICAg
ICAgIG5nTW9kZWxDdHJsID0gY3RybHNbMV0sCi0gICAgICAgICAgbXVsdGlwbGUgPSBhdHRyLm11
bHRpcGxlLAotICAgICAgICAgIG9wdGlvbnNFeHAgPSBhdHRyLm5nT3B0aW9ucywKLSAgICAgICAg
ICBudWxsT3B0aW9uID0gZmFsc2UsIC8vIGlmIGZhbHNlLCB1c2VyIHdpbGwgbm90IGJlIGFibGUg
dG8gc2VsZWN0IGl0ICh1c2VkIGJ5IG5nT3B0aW9ucykKLSAgICAgICAgICBlbXB0eU9wdGlvbiwK
LSAgICAgICAgICAvLyB3ZSBjYW4ndCBqdXN0IGpxTGl0ZSgnPG9wdGlvbj4nKSBzaW5jZSBqcUxp
dGUgaXMgbm90IHNtYXJ0IGVub3VnaAotICAgICAgICAgIC8vIHRvIGNyZWF0ZSBpdCBpbiA8c2Vs
ZWN0PiBhbmQgSUUgYmFyZnMgb3RoZXJ3aXNlLgotICAgICAgICAgIG9wdGlvblRlbXBsYXRlID0g
anFMaXRlKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ29wdGlvbicpKSwKLSAgICAgICAgICBvcHRH
cm91cFRlbXBsYXRlID1qcUxpdGUoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnb3B0Z3JvdXAnKSks
Ci0gICAgICAgICAgdW5rbm93bk9wdGlvbiA9IG9wdGlvblRlbXBsYXRlLmNsb25lKCk7Ci0KLSAg
ICAgIC8vIGZpbmQgIm51bGwiIG9wdGlvbgotICAgICAgZm9yKHZhciBpID0gMCwgY2hpbGRyZW4g
PSBlbGVtZW50LmNoaWxkcmVuKCksIGlpID0gY2hpbGRyZW4ubGVuZ3RoOyBpIDwgaWk7IGkrKykg
ewotICAgICAgICBpZiAoY2hpbGRyZW5baV0udmFsdWUgPT0gJycpIHsKLSAgICAgICAgICBlbXB0
eU9wdGlvbiA9IG51bGxPcHRpb24gPSBjaGlsZHJlbi5lcShpKTsKLSAgICAgICAgICBicmVhazsK
LSAgICAgICAgfQotICAgICAgfQotCi0gICAgICBzZWxlY3RDdHJsLmluaXQobmdNb2RlbEN0cmws
IG51bGxPcHRpb24sIHVua25vd25PcHRpb24pOwotCi0gICAgICAvLyByZXF1aXJlZCB2YWxpZGF0
b3IKLSAgICAgIGlmIChtdWx0aXBsZSAmJiAoYXR0ci5yZXF1aXJlZCB8fCBhdHRyLm5nUmVxdWly
ZWQpKSB7Ci0gICAgICAgIHZhciByZXF1aXJlZFZhbGlkYXRvciA9IGZ1bmN0aW9uKHZhbHVlKSB7
Ci0gICAgICAgICAgbmdNb2RlbEN0cmwuJHNldFZhbGlkaXR5KCdyZXF1aXJlZCcsICFhdHRyLnJl
cXVpcmVkIHx8ICh2YWx1ZSAmJiB2YWx1ZS5sZW5ndGgpKTsKLSAgICAgICAgICByZXR1cm4gdmFs
dWU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgbmdNb2RlbEN0cmwuJHBhcnNlcnMucHVzaChyZXF1
aXJlZFZhbGlkYXRvcik7Ci0gICAgICAgIG5nTW9kZWxDdHJsLiRmb3JtYXR0ZXJzLnVuc2hpZnQo
cmVxdWlyZWRWYWxpZGF0b3IpOwotCi0gICAgICAgIGF0dHIuJG9ic2VydmUoJ3JlcXVpcmVkJywg
ZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgcmVxdWlyZWRWYWxpZGF0b3IobmdNb2RlbEN0cmwuJHZp
ZXdWYWx1ZSk7Ci0gICAgICAgIH0pOwotICAgICAgfQotCi0gICAgICBpZiAob3B0aW9uc0V4cCkg
T3B0aW9ucyhzY29wZSwgZWxlbWVudCwgbmdNb2RlbEN0cmwpOwotICAgICAgZWxzZSBpZiAobXVs
dGlwbGUpIE11bHRpcGxlKHNjb3BlLCBlbGVtZW50LCBuZ01vZGVsQ3RybCk7Ci0gICAgICBlbHNl
IFNpbmdsZShzY29wZSwgZWxlbWVudCwgbmdNb2RlbEN0cmwsIHNlbGVjdEN0cmwpOwotCi0KLSAg
ICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotCi0KLSAgICAgIGZ1bmN0aW9uIFNp
bmdsZShzY29wZSwgc2VsZWN0RWxlbWVudCwgbmdNb2RlbEN0cmwsIHNlbGVjdEN0cmwpIHsKLSAg
ICAgICAgbmdNb2RlbEN0cmwuJHJlbmRlciA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgIHZhciB2
aWV3VmFsdWUgPSBuZ01vZGVsQ3RybC4kdmlld1ZhbHVlOwotCi0gICAgICAgICAgaWYgKHNlbGVj
dEN0cmwuaGFzT3B0aW9uKHZpZXdWYWx1ZSkpIHsKLSAgICAgICAgICAgIGlmICh1bmtub3duT3B0
aW9uLnBhcmVudCgpKSB1bmtub3duT3B0aW9uLnJlbW92ZSgpOwotICAgICAgICAgICAgc2VsZWN0
RWxlbWVudC52YWwodmlld1ZhbHVlKTsKLSAgICAgICAgICAgIGlmICh2aWV3VmFsdWUgPT09ICcn
KSBlbXB0eU9wdGlvbi5wcm9wKCdzZWxlY3RlZCcsIHRydWUpOyAvLyB0byBtYWtlIElFOSBoYXBw
eQotICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoaXNVbmRlZmluZWQodmlld1Zh
bHVlKSAmJiBlbXB0eU9wdGlvbikgewotICAgICAgICAgICAgICBzZWxlY3RFbGVtZW50LnZhbCgn
Jyk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICBzZWxlY3RDdHJsLnJlbmRl
clVua25vd25PcHRpb24odmlld1ZhbHVlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0g
ICAgICAgIH07Ci0KLSAgICAgICAgc2VsZWN0RWxlbWVudC5iaW5kKCdjaGFuZ2UnLCBmdW5jdGlv
bigpIHsKLSAgICAgICAgICBzY29wZS4kYXBwbHkoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBp
ZiAodW5rbm93bk9wdGlvbi5wYXJlbnQoKSkgdW5rbm93bk9wdGlvbi5yZW1vdmUoKTsKLSAgICAg
ICAgICAgIG5nTW9kZWxDdHJsLiRzZXRWaWV3VmFsdWUoc2VsZWN0RWxlbWVudC52YWwoKSk7Ci0g
ICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotICAgICAgfQotCi0gICAgICBmdW5jdGlvbiBNdWx0
aXBsZShzY29wZSwgc2VsZWN0RWxlbWVudCwgY3RybCkgewotICAgICAgICB2YXIgbGFzdFZpZXc7
Ci0gICAgICAgIGN0cmwuJHJlbmRlciA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgIHZhciBpdGVt
cyA9IG5ldyBIYXNoTWFwKGN0cmwuJHZpZXdWYWx1ZSk7Ci0gICAgICAgICAgZm9yRWFjaChzZWxl
Y3RFbGVtZW50LmZpbmQoJ29wdGlvbicpLCBmdW5jdGlvbihvcHRpb24pIHsKLSAgICAgICAgICAg
IG9wdGlvbi5zZWxlY3RlZCA9IGlzRGVmaW5lZChpdGVtcy5nZXQob3B0aW9uLnZhbHVlKSk7Ci0g
ICAgICAgICAgfSk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgLy8gd2UgaGF2ZSB0byBkbyBpdCBv
biBlYWNoIHdhdGNoIHNpbmNlIG5nTW9kZWwgd2F0Y2hlcyByZWZlcmVuY2UsIGJ1dAotICAgICAg
ICAvLyB3ZSBuZWVkIHRvIHdvcmsgb2YgYW4gYXJyYXksIHNvIHdlIG5lZWQgdG8gc2VlIGlmIGFu
eXRoaW5nIHdhcyBpbnNlcnRlZC9yZW1vdmVkCi0gICAgICAgIHNjb3BlLiR3YXRjaChmdW5jdGlv
biBzZWxlY3RNdWx0aXBsZVdhdGNoKCkgewotICAgICAgICAgIGlmICghZXF1YWxzKGxhc3RWaWV3
LCBjdHJsLiR2aWV3VmFsdWUpKSB7Ci0gICAgICAgICAgICBsYXN0VmlldyA9IGNvcHkoY3RybC4k
dmlld1ZhbHVlKTsKLSAgICAgICAgICAgIGN0cmwuJHJlbmRlcigpOwotICAgICAgICAgIH0KLSAg
ICAgICAgfSk7Ci0KLSAgICAgICAgc2VsZWN0RWxlbWVudC5iaW5kKCdjaGFuZ2UnLCBmdW5jdGlv
bigpIHsKLSAgICAgICAgICBzY29wZS4kYXBwbHkoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICB2
YXIgYXJyYXkgPSBbXTsKLSAgICAgICAgICAgIGZvckVhY2goc2VsZWN0RWxlbWVudC5maW5kKCdv
cHRpb24nKSwgZnVuY3Rpb24ob3B0aW9uKSB7Ci0gICAgICAgICAgICAgIGlmIChvcHRpb24uc2Vs
ZWN0ZWQpIHsKLSAgICAgICAgICAgICAgICBhcnJheS5wdXNoKG9wdGlvbi52YWx1ZSk7Ci0gICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgY3RybC4kc2V0Vmlld1Zh
bHVlKGFycmF5KTsKLSAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0gICAgICB9Ci0KLSAgICAg
IGZ1bmN0aW9uIE9wdGlvbnMoc2NvcGUsIHNlbGVjdEVsZW1lbnQsIGN0cmwpIHsKLSAgICAgICAg
dmFyIG1hdGNoOwotCi0gICAgICAgIGlmICghIChtYXRjaCA9IG9wdGlvbnNFeHAubWF0Y2goTkdf
T1BUSU9OU19SRUdFWFApKSkgewotICAgICAgICAgIHRocm93IEVycm9yKAotICAgICAgICAgICAg
IkV4cGVjdGVkIG5nT3B0aW9ucyBpbiBmb3JtIG9mICdfc2VsZWN0XyAoYXMgX2xhYmVsXyk/IGZv
ciAoX2tleV8sKT9fdmFsdWVfIGluIF9jb2xsZWN0aW9uXyciICsKLSAgICAgICAgICAgICIgYnV0
IGdvdCAnIiArIG9wdGlvbnNFeHAgKyAiJy4iKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciBk
aXNwbGF5Rm4gPSAkcGFyc2UobWF0Y2hbMl0gfHwgbWF0Y2hbMV0pLAotICAgICAgICAgICAgdmFs
dWVOYW1lID0gbWF0Y2hbNF0gfHwgbWF0Y2hbNl0sCi0gICAgICAgICAgICBrZXlOYW1lID0gbWF0
Y2hbNV0sCi0gICAgICAgICAgICBncm91cEJ5Rm4gPSAkcGFyc2UobWF0Y2hbM10gfHwgJycpLAot
ICAgICAgICAgICAgdmFsdWVGbiA9ICRwYXJzZShtYXRjaFsyXSA/IG1hdGNoWzFdIDogdmFsdWVO
YW1lKSwKLSAgICAgICAgICAgIHZhbHVlc0ZuID0gJHBhcnNlKG1hdGNoWzddKSwKLSAgICAgICAg
ICAgIC8vIFRoaXMgaXMgYW4gYXJyYXkgb2YgYXJyYXkgb2YgZXhpc3Rpbmcgb3B0aW9uIGdyb3Vw
cyBpbiBET00uIFdlIHRyeSB0byByZXVzZSB0aGVzZSBpZiBwb3NzaWJsZQotICAgICAgICAgICAg
Ly8gb3B0aW9uR3JvdXBzQ2FjaGVbMF0gaXMgdGhlIG9wdGlvbnMgd2l0aCBubyBvcHRpb24gZ3Jv
dXAKLSAgICAgICAgICAgIC8vIG9wdGlvbkdyb3Vwc0NhY2hlWz9dWzBdIGlzIHRoZSBwYXJlbnQ6
IGVpdGhlciB0aGUgU0VMRUNUIG9yIE9QVEdST1VQIGVsZW1lbnQKLSAgICAgICAgICAgIG9wdGlv
bkdyb3Vwc0NhY2hlID0gW1t7ZWxlbWVudDogc2VsZWN0RWxlbWVudCwgbGFiZWw6Jyd9XV07Ci0K
LSAgICAgICAgaWYgKG51bGxPcHRpb24pIHsKLSAgICAgICAgICAvLyBjb21waWxlIHRoZSBlbGVt
ZW50IHNpbmNlIHRoZXJlIG1pZ2h0IGJlIGJpbmRpbmdzIGluIGl0Ci0gICAgICAgICAgJGNvbXBp
bGUobnVsbE9wdGlvbikoc2NvcGUpOwotCi0gICAgICAgICAgLy8gcmVtb3ZlIHRoZSBjbGFzcywg
d2hpY2ggaXMgYWRkZWQgYXV0b21hdGljYWxseSBiZWNhdXNlIHdlIHJlY29tcGlsZSB0aGUgZWxl
bWVudCBhbmQgaXQKLSAgICAgICAgICAvLyBiZWNvbWVzIHRoZSBjb21waWxhdGlvbiByb290Ci0g
ICAgICAgICAgbnVsbE9wdGlvbi5yZW1vdmVDbGFzcygnbmctc2NvcGUnKTsKLQotICAgICAgICAg
IC8vIHdlIG5lZWQgdG8gcmVtb3ZlIGl0IGJlZm9yZSBjYWxsaW5nIHNlbGVjdEVsZW1lbnQuaHRt
bCgnJykgYmVjYXVzZSBvdGhlcndpc2UgSUUgd2lsbAotICAgICAgICAgIC8vIHJlbW92ZSB0aGUg
bGFiZWwgZnJvbSB0aGUgZWxlbWVudC4gd3RmPwotICAgICAgICAgIG51bGxPcHRpb24ucmVtb3Zl
KCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBjbGVhciBjb250ZW50cywgd2UnbGwgYWRkIHdo
YXQncyBuZWVkZWQgYmFzZWQgb24gdGhlIG1vZGVsCi0gICAgICAgIHNlbGVjdEVsZW1lbnQuaHRt
bCgnJyk7Ci0KLSAgICAgICAgc2VsZWN0RWxlbWVudC5iaW5kKCdjaGFuZ2UnLCBmdW5jdGlvbigp
IHsKLSAgICAgICAgICBzY29wZS4kYXBwbHkoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICB2YXIg
b3B0aW9uR3JvdXAsCi0gICAgICAgICAgICAgICAgY29sbGVjdGlvbiA9IHZhbHVlc0ZuKHNjb3Bl
KSB8fCBbXSwKLSAgICAgICAgICAgICAgICBsb2NhbHMgPSB7fSwKLSAgICAgICAgICAgICAgICBr
ZXksIHZhbHVlLCBvcHRpb25FbGVtZW50LCBpbmRleCwgZ3JvdXBJbmRleCwgbGVuZ3RoLCBncm91
cExlbmd0aDsKLQotICAgICAgICAgICAgaWYgKG11bHRpcGxlKSB7Ci0gICAgICAgICAgICAgIHZh
bHVlID0gW107Ci0gICAgICAgICAgICAgIGZvciAoZ3JvdXBJbmRleCA9IDAsIGdyb3VwTGVuZ3Ro
ID0gb3B0aW9uR3JvdXBzQ2FjaGUubGVuZ3RoOwotICAgICAgICAgICAgICAgICAgIGdyb3VwSW5k
ZXggPCBncm91cExlbmd0aDsKLSAgICAgICAgICAgICAgICAgICBncm91cEluZGV4KyspIHsKLSAg
ICAgICAgICAgICAgICAvLyBsaXN0IG9mIG9wdGlvbnMgZm9yIHRoYXQgZ3JvdXAuIChmaXJzdCBp
dGVtIGhhcyB0aGUgcGFyZW50KQotICAgICAgICAgICAgICAgIG9wdGlvbkdyb3VwID0gb3B0aW9u
R3JvdXBzQ2FjaGVbZ3JvdXBJbmRleF07Ci0KLSAgICAgICAgICAgICAgICBmb3IoaW5kZXggPSAx
LCBsZW5ndGggPSBvcHRpb25Hcm91cC5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrKSB7
Ci0gICAgICAgICAgICAgICAgICBpZiAoKG9wdGlvbkVsZW1lbnQgPSBvcHRpb25Hcm91cFtpbmRl
eF0uZWxlbWVudClbMF0uc2VsZWN0ZWQpIHsKLSAgICAgICAgICAgICAgICAgICAga2V5ID0gb3B0
aW9uRWxlbWVudC52YWwoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGtleU5hbWUpIGxvY2Fs
c1trZXlOYW1lXSA9IGtleTsKLSAgICAgICAgICAgICAgICAgICAgbG9jYWxzW3ZhbHVlTmFtZV0g
PSBjb2xsZWN0aW9uW2tleV07Ci0gICAgICAgICAgICAgICAgICAgIHZhbHVlLnB1c2godmFsdWVG
bihzY29wZSwgbG9jYWxzKSk7Ci0gICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICBr
ZXkgPSBzZWxlY3RFbGVtZW50LnZhbCgpOwotICAgICAgICAgICAgICBpZiAoa2V5ID09ICc/Jykg
ewotICAgICAgICAgICAgICAgIHZhbHVlID0gdW5kZWZpbmVkOwotICAgICAgICAgICAgICB9IGVs
c2UgaWYgKGtleSA9PSAnJyl7Ci0gICAgICAgICAgICAgICAgdmFsdWUgPSBudWxsOwotICAgICAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGxvY2Fsc1t2YWx1ZU5hbWVdID0gY29s
bGVjdGlvbltrZXldOwotICAgICAgICAgICAgICAgIGlmIChrZXlOYW1lKSBsb2NhbHNba2V5TmFt
ZV0gPSBrZXk7Ci0gICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZUZuKHNjb3BlLCBsb2NhbHMp
OwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjdHJsLiRzZXRW
aWV3VmFsdWUodmFsdWUpOwotICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLQotICAgICAgICBj
dHJsLiRyZW5kZXIgPSByZW5kZXI7Ci0KLSAgICAgICAgLy8gVE9ETyh2b2p0YSk6IGNhbid0IHdl
IG9wdGltaXplIHRoaXMgPwotICAgICAgICBzY29wZS4kd2F0Y2gocmVuZGVyKTsKLQotICAgICAg
ICBmdW5jdGlvbiByZW5kZXIoKSB7Ci0gICAgICAgICAgdmFyIG9wdGlvbkdyb3VwcyA9IHsnJzpb
XX0sIC8vIFRlbXBvcmFyeSBsb2NhdGlvbiBmb3IgdGhlIG9wdGlvbiBncm91cHMgYmVmb3JlIHdl
IHJlbmRlciB0aGVtCi0gICAgICAgICAgICAgIG9wdGlvbkdyb3VwTmFtZXMgPSBbJyddLAotICAg
ICAgICAgICAgICBvcHRpb25Hcm91cE5hbWUsCi0gICAgICAgICAgICAgIG9wdGlvbkdyb3VwLAot
ICAgICAgICAgICAgICBvcHRpb24sCi0gICAgICAgICAgICAgIGV4aXN0aW5nUGFyZW50LCBleGlz
dGluZ09wdGlvbnMsIGV4aXN0aW5nT3B0aW9uLAotICAgICAgICAgICAgICBtb2RlbFZhbHVlID0g
Y3RybC4kbW9kZWxWYWx1ZSwKLSAgICAgICAgICAgICAgdmFsdWVzID0gdmFsdWVzRm4oc2NvcGUp
IHx8IFtdLAotICAgICAgICAgICAgICBrZXlzID0ga2V5TmFtZSA/IHNvcnRlZEtleXModmFsdWVz
KSA6IHZhbHVlcywKLSAgICAgICAgICAgICAgZ3JvdXBMZW5ndGgsIGxlbmd0aCwKLSAgICAgICAg
ICAgICAgZ3JvdXBJbmRleCwgaW5kZXgsCi0gICAgICAgICAgICAgIGxvY2FscyA9IHt9LAotICAg
ICAgICAgICAgICBzZWxlY3RlZCwKLSAgICAgICAgICAgICAgc2VsZWN0ZWRTZXQgPSBmYWxzZSwg
Ly8gbm90aGluZyBpcyBzZWxlY3RlZCB5ZXQKLSAgICAgICAgICAgICAgbGFzdEVsZW1lbnQsCi0g
ICAgICAgICAgICAgIGVsZW1lbnQsCi0gICAgICAgICAgICAgIGxhYmVsOwotCi0gICAgICAgICAg
aWYgKG11bHRpcGxlKSB7Ci0gICAgICAgICAgICBzZWxlY3RlZFNldCA9IG5ldyBIYXNoTWFwKG1v
ZGVsVmFsdWUpOwotICAgICAgICAgIH0KLQotICAgICAgICAgIC8vIFdlIG5vdyBidWlsZCB1cCB0
aGUgbGlzdCBvZiBvcHRpb25zIHdlIG5lZWQgKHdlIG1lcmdlIGxhdGVyKQotICAgICAgICAgIGZv
ciAoaW5kZXggPSAwOyBsZW5ndGggPSBrZXlzLmxlbmd0aCwgaW5kZXggPCBsZW5ndGg7IGluZGV4
KyspIHsKLSAgICAgICAgICAgICAgIGxvY2Fsc1t2YWx1ZU5hbWVdID0gdmFsdWVzW2tleU5hbWUg
PyBsb2NhbHNba2V5TmFtZV09a2V5c1tpbmRleF06aW5kZXhdOwotICAgICAgICAgICAgICAgb3B0
aW9uR3JvdXBOYW1lID0gZ3JvdXBCeUZuKHNjb3BlLCBsb2NhbHMpIHx8ICcnOwotICAgICAgICAg
ICAgaWYgKCEob3B0aW9uR3JvdXAgPSBvcHRpb25Hcm91cHNbb3B0aW9uR3JvdXBOYW1lXSkpIHsK
LSAgICAgICAgICAgICAgb3B0aW9uR3JvdXAgPSBvcHRpb25Hcm91cHNbb3B0aW9uR3JvdXBOYW1l
XSA9IFtdOwotICAgICAgICAgICAgICBvcHRpb25Hcm91cE5hbWVzLnB1c2gob3B0aW9uR3JvdXBO
YW1lKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChtdWx0aXBsZSkgewotICAgICAg
ICAgICAgICBzZWxlY3RlZCA9IHNlbGVjdGVkU2V0LnJlbW92ZSh2YWx1ZUZuKHNjb3BlLCBsb2Nh
bHMpKSAhPSB1bmRlZmluZWQ7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICBz
ZWxlY3RlZCA9IG1vZGVsVmFsdWUgPT09IHZhbHVlRm4oc2NvcGUsIGxvY2Fscyk7Ci0gICAgICAg
ICAgICAgIHNlbGVjdGVkU2V0ID0gc2VsZWN0ZWRTZXQgfHwgc2VsZWN0ZWQ7IC8vIHNlZSBpZiBh
dCBsZWFzdCBvbmUgaXRlbSBpcyBzZWxlY3RlZAotICAgICAgICAgICAgfQotICAgICAgICAgICAg
bGFiZWwgPSBkaXNwbGF5Rm4oc2NvcGUsIGxvY2Fscyk7IC8vIHdoYXQgd2lsbCBiZSBzZWVuIGJ5
IHRoZSB1c2VyCi0gICAgICAgICAgICBsYWJlbCA9IGxhYmVsID09PSB1bmRlZmluZWQgPyAnJyA6
IGxhYmVsOyAvLyBkb2luZyBkaXNwbGF5Rm4oc2NvcGUsIGxvY2FscykgfHwgJycgb3ZlcndyaXRl
cyB6ZXJvIHZhbHVlcwotICAgICAgICAgICAgb3B0aW9uR3JvdXAucHVzaCh7Ci0gICAgICAgICAg
ICAgIGlkOiBrZXlOYW1lID8ga2V5c1tpbmRleF0gOiBpbmRleCwgICAvLyBlaXRoZXIgdGhlIGlu
ZGV4IGludG8gYXJyYXkgb3Iga2V5IGZyb20gb2JqZWN0Ci0gICAgICAgICAgICAgIGxhYmVsOiBs
YWJlbCwKLSAgICAgICAgICAgICAgc2VsZWN0ZWQ6IHNlbGVjdGVkICAgICAgICAgICAgICAgICAg
IC8vIGRldGVybWluZSBpZiB3ZSBzaG91bGQgYmUgc2VsZWN0ZWQKLSAgICAgICAgICAgIH0pOwot
ICAgICAgICAgIH0KLSAgICAgICAgICBpZiAoIW11bHRpcGxlKSB7Ci0gICAgICAgICAgICBpZiAo
bnVsbE9wdGlvbiB8fCBtb2RlbFZhbHVlID09PSBudWxsKSB7Ci0gICAgICAgICAgICAgIC8vIGlu
c2VydCBudWxsIG9wdGlvbiBpZiB3ZSBoYXZlIGEgcGxhY2Vob2xkZXIsIG9yIHRoZSBtb2RlbCBp
cyBudWxsCi0gICAgICAgICAgICAgIG9wdGlvbkdyb3Vwc1snJ10udW5zaGlmdCh7aWQ6JycsIGxh
YmVsOicnLCBzZWxlY3RlZDohc2VsZWN0ZWRTZXR9KTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAo
IXNlbGVjdGVkU2V0KSB7Ci0gICAgICAgICAgICAgIC8vIG9wdGlvbiBjb3VsZCBub3QgYmUgZm91
bmQsIHdlIGhhdmUgdG8gaW5zZXJ0IHRoZSB1bmRlZmluZWQgaXRlbQotICAgICAgICAgICAgICBv
cHRpb25Hcm91cHNbJyddLnVuc2hpZnQoe2lkOic/JywgbGFiZWw6JycsIHNlbGVjdGVkOnRydWV9
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0KLSAgICAgICAgICAvLyBOb3cgd2UgbmVl
ZCB0byB1cGRhdGUgdGhlIGxpc3Qgb2YgRE9NIG5vZGVzIHRvIG1hdGNoIHRoZSBvcHRpb25Hcm91
cHMgd2UgY29tcHV0ZWQgYWJvdmUKLSAgICAgICAgICBmb3IgKGdyb3VwSW5kZXggPSAwLCBncm91
cExlbmd0aCA9IG9wdGlvbkdyb3VwTmFtZXMubGVuZ3RoOwotICAgICAgICAgICAgICAgZ3JvdXBJ
bmRleCA8IGdyb3VwTGVuZ3RoOwotICAgICAgICAgICAgICAgZ3JvdXBJbmRleCsrKSB7Ci0gICAg
ICAgICAgICAvLyBjdXJyZW50IG9wdGlvbiBncm91cCBuYW1lIG9yICcnIGlmIG5vIGdyb3VwCi0g
ICAgICAgICAgICBvcHRpb25Hcm91cE5hbWUgPSBvcHRpb25Hcm91cE5hbWVzW2dyb3VwSW5kZXhd
OwotCi0gICAgICAgICAgICAvLyBsaXN0IG9mIG9wdGlvbnMgZm9yIHRoYXQgZ3JvdXAuIChmaXJz
dCBpdGVtIGhhcyB0aGUgcGFyZW50KQotICAgICAgICAgICAgb3B0aW9uR3JvdXAgPSBvcHRpb25H
cm91cHNbb3B0aW9uR3JvdXBOYW1lXTsKLQotICAgICAgICAgICAgaWYgKG9wdGlvbkdyb3Vwc0Nh
Y2hlLmxlbmd0aCA8PSBncm91cEluZGV4KSB7Ci0gICAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8g
Z3JvdyB0aGUgb3B0aW9uR3JvdXBzCi0gICAgICAgICAgICAgIGV4aXN0aW5nUGFyZW50ID0gewot
ICAgICAgICAgICAgICAgIGVsZW1lbnQ6IG9wdEdyb3VwVGVtcGxhdGUuY2xvbmUoKS5hdHRyKCds
YWJlbCcsIG9wdGlvbkdyb3VwTmFtZSksCi0gICAgICAgICAgICAgICAgbGFiZWw6IG9wdGlvbkdy
b3VwLmxhYmVsCi0gICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICAgIGV4aXN0aW5nT3B0aW9u
cyA9IFtleGlzdGluZ1BhcmVudF07Ci0gICAgICAgICAgICAgIG9wdGlvbkdyb3Vwc0NhY2hlLnB1
c2goZXhpc3RpbmdPcHRpb25zKTsKLSAgICAgICAgICAgICAgc2VsZWN0RWxlbWVudC5hcHBlbmQo
ZXhpc3RpbmdQYXJlbnQuZWxlbWVudCk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICBleGlzdGluZ09wdGlvbnMgPSBvcHRpb25Hcm91cHNDYWNoZVtncm91cEluZGV4XTsKLSAg
ICAgICAgICAgICAgZXhpc3RpbmdQYXJlbnQgPSBleGlzdGluZ09wdGlvbnNbMF07ICAvLyBlaXRo
ZXIgU0VMRUNUIChubyBncm91cCkgb3IgT1BUR1JPVVAgZWxlbWVudAotCi0gICAgICAgICAgICAg
IC8vIHVwZGF0ZSB0aGUgT1BUR1JPVVAgbGFiZWwgaWYgbm90IHRoZSBzYW1lLgotICAgICAgICAg
ICAgICBpZiAoZXhpc3RpbmdQYXJlbnQubGFiZWwgIT0gb3B0aW9uR3JvdXBOYW1lKSB7Ci0gICAg
ICAgICAgICAgICAgZXhpc3RpbmdQYXJlbnQuZWxlbWVudC5hdHRyKCdsYWJlbCcsIGV4aXN0aW5n
UGFyZW50LmxhYmVsID0gb3B0aW9uR3JvdXBOYW1lKTsKLSAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICBsYXN0RWxlbWVudCA9IG51bGw7ICAvLyBzdGFydCBhdCB0
aGUgYmVnaW5uaW5nCi0gICAgICAgICAgICBmb3IoaW5kZXggPSAwLCBsZW5ndGggPSBvcHRpb25H
cm91cC5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrKSB7Ci0gICAgICAgICAgICAgIG9w
dGlvbiA9IG9wdGlvbkdyb3VwW2luZGV4XTsKLSAgICAgICAgICAgICAgaWYgKChleGlzdGluZ09w
dGlvbiA9IGV4aXN0aW5nT3B0aW9uc1tpbmRleCsxXSkpIHsKLSAgICAgICAgICAgICAgICAvLyBy
ZXVzZSBlbGVtZW50cwotICAgICAgICAgICAgICAgIGxhc3RFbGVtZW50ID0gZXhpc3RpbmdPcHRp
b24uZWxlbWVudDsKLSAgICAgICAgICAgICAgICBpZiAoZXhpc3RpbmdPcHRpb24ubGFiZWwgIT09
IG9wdGlvbi5sYWJlbCkgewotICAgICAgICAgICAgICAgICAgbGFzdEVsZW1lbnQudGV4dChleGlz
dGluZ09wdGlvbi5sYWJlbCA9IG9wdGlvbi5sYWJlbCk7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIGlmIChleGlzdGluZ09wdGlvbi5pZCAhPT0gb3B0aW9uLmlkKSB7Ci0gICAg
ICAgICAgICAgICAgICBsYXN0RWxlbWVudC52YWwoZXhpc3RpbmdPcHRpb24uaWQgPSBvcHRpb24u
aWQpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAvLyBsYXN0RWxlbWVudC5w
cm9wKCdzZWxlY3RlZCcpIHByb3ZpZGVkIGJ5IGpRdWVyeSBoYXMgc2lkZS1lZmZlY3RzCi0gICAg
ICAgICAgICAgICAgaWYgKGxhc3RFbGVtZW50WzBdLnNlbGVjdGVkICE9PSBvcHRpb24uc2VsZWN0
ZWQpIHsKLSAgICAgICAgICAgICAgICAgIGxhc3RFbGVtZW50LnByb3AoJ3NlbGVjdGVkJywgKGV4
aXN0aW5nT3B0aW9uLnNlbGVjdGVkID0gb3B0aW9uLnNlbGVjdGVkKSk7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIC8vIGdyb3cgZWxl
bWVudHMKLQotICAgICAgICAgICAgICAgIC8vIGlmIGl0J3MgYSBudWxsIG9wdGlvbgotICAgICAg
ICAgICAgICAgIGlmIChvcHRpb24uaWQgPT09ICcnICYmIG51bGxPcHRpb24pIHsKLSAgICAgICAg
ICAgICAgICAgIC8vIHB1dCBiYWNrIHRoZSBwcmUtY29tcGlsZWQgZWxlbWVudAotICAgICAgICAg
ICAgICAgICAgZWxlbWVudCA9IG51bGxPcHRpb247Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgICAgIC8vIGpRdWVyeSh2MS40LjIpIEJ1ZzogV2Ugc2hvdWxkIGJlIGFi
bGUgdG8gY2hhaW4gdGhlIG1ldGhvZCBjYWxscywgYnV0Ci0gICAgICAgICAgICAgICAgICAvLyBp
biB0aGlzIHZlcnNpb24gb2YgalF1ZXJ5IG9uIHNvbWUgYnJvd3NlciB0aGUgLnRleHQoKSByZXR1
cm5zIGEgc3RyaW5nCi0gICAgICAgICAgICAgICAgICAvLyByYXRoZXIgdGhlbiB0aGUgZWxlbWVu
dC4KLSAgICAgICAgICAgICAgICAgIChlbGVtZW50ID0gb3B0aW9uVGVtcGxhdGUuY2xvbmUoKSkK
LSAgICAgICAgICAgICAgICAgICAgICAudmFsKG9wdGlvbi5pZCkKLSAgICAgICAgICAgICAgICAg
ICAgICAuYXR0cignc2VsZWN0ZWQnLCBvcHRpb24uc2VsZWN0ZWQpCi0gICAgICAgICAgICAgICAg
ICAgICAgLnRleHQob3B0aW9uLmxhYmVsKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgICAgICBleGlzdGluZ09wdGlvbnMucHVzaChleGlzdGluZ09wdGlvbiA9IHsKLSAgICAgICAg
ICAgICAgICAgICAgZWxlbWVudDogZWxlbWVudCwKLSAgICAgICAgICAgICAgICAgICAgbGFiZWw6
IG9wdGlvbi5sYWJlbCwKLSAgICAgICAgICAgICAgICAgICAgaWQ6IG9wdGlvbi5pZCwKLSAgICAg
ICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IG9wdGlvbi5zZWxlY3RlZAotICAgICAgICAgICAgICAg
IH0pOwotICAgICAgICAgICAgICAgIGlmIChsYXN0RWxlbWVudCkgewotICAgICAgICAgICAgICAg
ICAgbGFzdEVsZW1lbnQuYWZ0ZXIoZWxlbWVudCk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgICAgIGV4aXN0aW5nUGFyZW50LmVsZW1lbnQuYXBwZW5kKGVsZW1lbnQp
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBsYXN0RWxlbWVudCA9IGVsZW1l
bnQ7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8vIHJlbW92
ZSBhbnkgZXhjZXNzaXZlIE9QVElPTnMgaW4gYSBncm91cAotICAgICAgICAgICAgaW5kZXgrKzsg
Ly8gaW5jcmVtZW50IHNpbmNlIHRoZSBleGlzdGluZ09wdGlvbnNbMF0gaXMgcGFyZW50IGVsZW1l
bnQgbm90IE9QVElPTgotICAgICAgICAgICAgd2hpbGUoZXhpc3RpbmdPcHRpb25zLmxlbmd0aCA+
IGluZGV4KSB7Ci0gICAgICAgICAgICAgIGV4aXN0aW5nT3B0aW9ucy5wb3AoKS5lbGVtZW50LnJl
bW92ZSgpOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgICAvLyByZW1vdmUg
YW55IGV4Y2Vzc2l2ZSBPUFRHUk9VUHMgZnJvbSBzZWxlY3QKLSAgICAgICAgICB3aGlsZShvcHRp
b25Hcm91cHNDYWNoZS5sZW5ndGggPiBncm91cEluZGV4KSB7Ci0gICAgICAgICAgICBvcHRpb25H
cm91cHNDYWNoZS5wb3AoKVswXS5lbGVtZW50LnJlbW92ZSgpOwotICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgICAgfQotICAgIH0KLSAgfQotfV07Ci0KLXZhciBvcHRpb25EaXJlY3RpdmUgPSBb
JyRpbnRlcnBvbGF0ZScsIGZ1bmN0aW9uKCRpbnRlcnBvbGF0ZSkgewotICB2YXIgbnVsbFNlbGVj
dEN0cmwgPSB7Ci0gICAgYWRkT3B0aW9uOiBub29wLAotICAgIHJlbW92ZU9wdGlvbjogbm9vcAot
ICB9OwotCi0gIHJldHVybiB7Ci0gICAgcmVzdHJpY3Q6ICdFJywKLSAgICBwcmlvcml0eTogMTAw
LAotICAgIGNvbXBpbGU6IGZ1bmN0aW9uKGVsZW1lbnQsIGF0dHIpIHsKLSAgICAgIGlmIChpc1Vu
ZGVmaW5lZChhdHRyLnZhbHVlKSkgewotICAgICAgICB2YXIgaW50ZXJwb2xhdGVGbiA9ICRpbnRl
cnBvbGF0ZShlbGVtZW50LnRleHQoKSwgdHJ1ZSk7Ci0gICAgICAgIGlmICghaW50ZXJwb2xhdGVG
bikgewotICAgICAgICAgIGF0dHIuJHNldCgndmFsdWUnLCBlbGVtZW50LnRleHQoKSk7Ci0gICAg
ICAgIH0KLSAgICAgIH0KLQotICAgICAgcmV0dXJuIGZ1bmN0aW9uIChzY29wZSwgZWxlbWVudCwg
YXR0cikgewotICAgICAgICB2YXIgc2VsZWN0Q3RybE5hbWUgPSAnJHNlbGVjdENvbnRyb2xsZXIn
LAotICAgICAgICAgICAgcGFyZW50ID0gZWxlbWVudC5wYXJlbnQoKSwKLSAgICAgICAgICAgIHNl
bGVjdEN0cmwgPSBwYXJlbnQuZGF0YShzZWxlY3RDdHJsTmFtZSkgfHwKLSAgICAgICAgICAgICAg
cGFyZW50LnBhcmVudCgpLmRhdGEoc2VsZWN0Q3RybE5hbWUpOyAvLyBpbiBjYXNlIHdlIGFyZSBp
biBvcHRncm91cAotCi0gICAgICAgIGlmIChzZWxlY3RDdHJsICYmIHNlbGVjdEN0cmwuZGF0YWJv
dW5kKSB7Ci0gICAgICAgICAgLy8gRm9yIHNvbWUgcmVhc29uIE9wZXJhIGRlZmF1bHRzIHRvIHRy
dWUgYW5kIGlmIG5vdCBvdmVycmlkZGVuIHRoaXMgbWVzc2VzIHVwIHRoZSByZXBlYXRlci4KLSAg
ICAgICAgICAvLyBXZSBkb24ndCB3YW50IHRoZSB2aWV3IHRvIGRyaXZlIHRoZSBpbml0aWFsaXph
dGlvbiBvZiB0aGUgbW9kZWwgYW55d2F5LgotICAgICAgICAgIGVsZW1lbnQucHJvcCgnc2VsZWN0
ZWQnLCBmYWxzZSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgc2VsZWN0Q3RybCA9IG51
bGxTZWxlY3RDdHJsOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGludGVycG9sYXRlRm4pIHsK
LSAgICAgICAgICBzY29wZS4kd2F0Y2goaW50ZXJwb2xhdGVGbiwgZnVuY3Rpb24gaW50ZXJwb2xh
dGVXYXRjaEFjdGlvbihuZXdWYWwsIG9sZFZhbCkgewotICAgICAgICAgICAgYXR0ci4kc2V0KCd2
YWx1ZScsIG5ld1ZhbCk7Ci0gICAgICAgICAgICBpZiAobmV3VmFsICE9PSBvbGRWYWwpIHNlbGVj
dEN0cmwucmVtb3ZlT3B0aW9uKG9sZFZhbCk7Ci0gICAgICAgICAgICBzZWxlY3RDdHJsLmFkZE9w
dGlvbihuZXdWYWwpOwotICAgICAgICAgIH0pOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAg
IHNlbGVjdEN0cmwuYWRkT3B0aW9uKGF0dHIudmFsdWUpOwotICAgICAgICB9Ci0KLSAgICAgICAg
ZWxlbWVudC5iaW5kKCckZGVzdHJveScsIGZ1bmN0aW9uKCkgewotICAgICAgICAgIHNlbGVjdEN0
cmwucmVtb3ZlT3B0aW9uKGF0dHIudmFsdWUpOwotICAgICAgICB9KTsKLSAgICAgIH07Ci0gICAg
fQotICB9Ci19XTsKLQotdmFyIHN0eWxlRGlyZWN0aXZlID0gdmFsdWVGbih7Ci0gIHJlc3RyaWN0
OiAnRScsCi0gIHRlcm1pbmFsOiB0cnVlCi19KTsKLQotICAvL3RyeSB0byBiaW5kIHRvIGpxdWVy
eSBub3cgc28gdGhhdCBvbmUgY2FuIHdyaXRlIGFuZ3VsYXIuZWxlbWVudCgpLnJlYWQoKQotICAv
L2J1dCB3ZSB3aWxsIHJlYmluZCBvbiBib290c3RyYXAgYWdhaW4uCi0gIGJpbmRKUXVlcnkoKTsK
LQotICBwdWJsaXNoRXh0ZXJuYWxBUEkoYW5ndWxhcik7Ci0KLSAganFMaXRlKGRvY3VtZW50KS5y
ZWFkeShmdW5jdGlvbigpIHsKLSAgICBhbmd1bGFySW5pdChkb2N1bWVudCwgYm9vdHN0cmFwKTsK
LSAgfSk7Ci0KLX0pKHdpbmRvdywgZG9jdW1lbnQpOwotYW5ndWxhci5lbGVtZW50KGRvY3VtZW50
KS5maW5kKCdoZWFkJykuYXBwZW5kKCc8c3R5bGUgdHlwZT0idGV4dC9jc3MiPkBjaGFyc2V0ICJV
VEYtOCI7W25nXFw6Y2xvYWtdLFtuZy1jbG9ha10sW2RhdGEtbmctY2xvYWtdLFt4LW5nLWNsb2Fr
XSwubmctY2xvYWssLngtbmctY2xvYWt7ZGlzcGxheTpub25lO31uZ1xcOmZvcm17ZGlzcGxheTpi
bG9jazt9PC9zdHlsZT4nKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9hbmd1bGFyanMvYm93ZXJfY29tcG9uZW50cy90b2RvbXZjLWNvbW1vbi9i
YXNlLmNzcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ib3dlcl9jb21wb25lbnRzL3RvZG9tdmMt
Y29tbW9uL2Jhc2UuY3NzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MzdjZDljYzhj
N2UwN2U0NjkxZDRlZTFiYWE3MDJlNDk5M2NhMjFhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ib3dlcl9jb21wb25l
bnRzL3RvZG9tdmMtY29tbW9uL2Jhc2UuY3NzCisrKyAvZGV2L251bGwKQEAgLTEsNTU0ICswLDAg
QEAKLWh0bWwsCi1ib2R5IHsKLSAgICBtYXJnaW46IDA7Ci0gICAgcGFkZGluZzogMDsKLX0KLQot
YnV0dG9uIHsKLSAgICBtYXJnaW46IDA7Ci0gICAgcGFkZGluZzogMDsKLSAgICBib3JkZXI6IDA7
Ci0gICAgYmFja2dyb3VuZDogbm9uZTsKLSAgICBmb250LXNpemU6IDEwMCU7Ci0gICAgdmVydGlj
YWwtYWxpZ246IGJhc2VsaW5lOwotICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0OwotICAgIGNvbG9y
OiBpbmhlcml0OwotICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKLSAgICAvKi1tb3otYXBw
ZWFyYW5jZTogbm9uZTsqLwotICAgIC1tcy1hcHBlYXJhbmNlOiBub25lOwotICAgIC1vLWFwcGVh
cmFuY2U6IG5vbmU7Ci0gICAgYXBwZWFyYW5jZTogbm9uZTsKLX0KLQotYm9keSB7Ci0gICAgZm9u
dDogMTRweCAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOwot
ICAgIGxpbmUtaGVpZ2h0OiAxLjRlbTsKLSAgICBiYWNrZ3JvdW5kOiAjZWFlYWVhIHVybCgnYmcu
cG5nJyk7Ci0gICAgY29sb3I6ICM0ZDRkNGQ7Ci0gICAgd2lkdGg6IDU1MHB4OwotICAgIG1hcmdp
bjogMCBhdXRvOwotICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwotICAg
IC1tb3otZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwotICAgIC1tcy1mb250LXNtb290aGlu
ZzogYW50aWFsaWFzZWQ7Ci0gICAgLW8tZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwotICAg
IGZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKLX0KLQotI3RvZG9hcHAgewotICAgIGJhY2tn
cm91bmQ6ICNmZmY7Ci0gICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkpOwot
ICAgIG1hcmdpbjogMTMwcHggMCA0MHB4IDA7Ci0gICAgYm9yZGVyOiAxcHggc29saWQgI2NjYzsK
LSAgICBwb3NpdGlvbjogcmVsYXRpdmU7Ci0gICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMnB4
OwotICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAycHg7Ci0gICAgYm94LXNoYWRvdzogMCAy
cHggNnB4IDAgcmdiYSgwLCAwLCAwLCAwLjIpLAotICAgIDAgMjVweCA1MHB4IDAgcmdiYSgwLCAw
LCAwLCAwLjE1KTsKLX0KLQotI3RvZG9hcHA6YmVmb3JlIHsKLSAgICBjb250ZW50OiAnJzsKLSAg
ICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNmNWQ2ZDY7Ci0gICAgYm9yZGVyLXJpZ2h0OiAxcHgg
c29saWQgI2Y1ZDZkNjsKLSAgICB3aWR0aDogMnB4OwotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsK
LSAgICB0b3A6IDA7Ci0gICAgbGVmdDogNDBweDsKLSAgICBoZWlnaHQ6IDEwMCU7Ci19Ci0KLSN0
b2RvYXBwIGlucHV0Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsKLSAgICBmb250LXN0eWxl
OiBpdGFsaWM7Ci19Ci0KLSN0b2RvYXBwIGlucHV0OjotbW96LXBsYWNlaG9sZGVyIHsKLSAgICBm
b250LXN0eWxlOiBpdGFsaWM7Ci0gICAgY29sb3I6ICNhOWE5YTk7Ci19Ci0KLSN0b2RvYXBwIGgx
IHsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgdG9wOiAtMTIwcHg7Ci0gICAgd2lkdGg6
IDEwMCU7Ci0gICAgZm9udC1zaXplOiA3MHB4OwotICAgIGZvbnQtd2VpZ2h0OiBib2xkOwotICAg
IHRleHQtYWxpZ246IGNlbnRlcjsKLSAgICBjb2xvcjogI2IzYjNiMzsKLSAgICBjb2xvcjogcmdi
YSgyNTUsIDI1NSwgMjU1LCAwLjMpOwotICAgIHRleHQtc2hhZG93OiAtMXB4IC0xcHggcmdiYSgw
LCAwLCAwLCAwLjIpOwotICAgIC13ZWJraXQtdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJp
bGl0eTsKLSAgICAtbW96LXRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7Ci0gICAg
LW1zLXRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7Ci0gICAgLW8tdGV4dC1yZW5k
ZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTsKLSAgICB0ZXh0LXJlbmRlcmluZzogb3B0aW1pemVM
ZWdpYmlsaXR5OwotfQotCi0jaGVhZGVyIHsKLSAgICBwYWRkaW5nLXRvcDogMTVweDsKLSAgICBi
b3JkZXItcmFkaXVzOiBpbmhlcml0OwotfQotCi0jaGVhZGVyOmJlZm9yZSB7Ci0gICAgY29udGVu
dDogJyc7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHRvcDogMDsKLSAgICByaWdodDog
MDsKLSAgICBsZWZ0OiAwOwotICAgIGhlaWdodDogMTVweDsKLSAgICB6LWluZGV4OiAyOwotICAg
IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjNmM2MTVjOwotICAgIGJhY2tncm91bmQ6ICM4ZDdk
Nzc7Ci0gICAgYmFja2dyb3VuZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBs
ZWZ0IGJvdHRvbSwgZnJvbShyZ2JhKDEzMiwgMTEwLCAxMDAsIDAuOCkpLHRvKHJnYmEoMTAxLCA4
NCwgNzYsIDAuOCkpKTsKLSAgICBiYWNrZ3JvdW5kOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCh0
b3AsIHJnYmEoMTMyLCAxMTAsIDEwMCwgMC44KSwgcmdiYSgxMDEsIDg0LCA3NiwgMC44KSk7Ci0g
ICAgYmFja2dyb3VuZDogLW1vei1saW5lYXItZ3JhZGllbnQodG9wLCByZ2JhKDEzMiwgMTEwLCAx
MDAsIDAuOCksIHJnYmEoMTAxLCA4NCwgNzYsIDAuOCkpOwotICAgIGJhY2tncm91bmQ6IC1vLWxp
bmVhci1ncmFkaWVudCh0b3AsIHJnYmEoMTMyLCAxMTAsIDEwMCwgMC44KSwgcmdiYSgxMDEsIDg0
LCA3NiwgMC44KSk7Ci0gICAgYmFja2dyb3VuZDogLW1zLWxpbmVhci1ncmFkaWVudCh0b3AsIHJn
YmEoMTMyLCAxMTAsIDEwMCwgMC44KSwgcmdiYSgxMDEsIDg0LCA3NiwgMC44KSk7Ci0gICAgYmFj
a2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvcCwgcmdiYSgxMzIsIDExMCwgMTAwLCAwLjgpLCBy
Z2JhKDEwMSwgODQsIDc2LCAwLjgpKTsKLSAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAxcHg7
Ci0gICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDFweDsKLX0KLQotI25ldy10b2RvLAotLmVk
aXQgewotICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKLSAgICBtYXJnaW46IDA7Ci0gICAgd2lkdGg6
IDEwMCU7Ci0gICAgZm9udC1zaXplOiAyNHB4OwotICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0Owot
ICAgIGxpbmUtaGVpZ2h0OiAxLjRlbTsKLSAgICBib3JkZXI6IDA7Ci0gICAgb3V0bGluZTogbm9u
ZTsKLSAgICBjb2xvcjogaW5oZXJpdDsKLSAgICBwYWRkaW5nOiA2cHg7Ci0gICAgYm9yZGVyOiAx
cHggc29saWQgIzk5OTsKLSAgICBib3gtc2hhZG93OiBpbnNldCAwIC0xcHggNXB4IDAgcmdiYSgw
LCAwLCAwLCAwLjIpOwotICAgIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsKLSAgICAt
bW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7Ci0gICAgLW1zLWJveC1zaXppbmc6IGJvcmRlci1i
b3g7Ci0gICAgLW8tYm94LXNpemluZzogYm9yZGVyLWJveDsKLSAgICBib3gtc2l6aW5nOiBib3Jk
ZXItYm94OwotICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwotICAgIC1t
b3otZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwotICAgIC1tcy1mb250LXNtb290aGluZzog
YW50aWFsaWFzZWQ7Ci0gICAgLW8tZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwotICAgIGZv
bnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKLX0KLQotI25ldy10b2RvIHsKLSAgICBwYWRkaW5n
OiAxNnB4IDE2cHggMTZweCA2MHB4OwotICAgIGJvcmRlcjogbm9uZTsKLSAgICBiYWNrZ3JvdW5k
OiByZ2JhKDAsIDAsIDAsIDAuMDIpOwotICAgIHotaW5kZXg6IDI7Ci0gICAgYm94LXNoYWRvdzog
bm9uZTsKLX0KLQotI21haW4gewotICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKLSAgICB6LWluZGV4
OiAyOwotICAgIGJvcmRlci10b3A6IDFweCBkb3R0ZWQgI2FkYWRhZDsKLX0KLQotbGFiZWxbZm9y
PSd0b2dnbGUtYWxsJ10gewotICAgIGRpc3BsYXk6IG5vbmU7Ci19Ci0KLSN0b2dnbGUtYWxsIHsK
LSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgdG9wOiAtNDJweDsKLSAgICBsZWZ0OiAtNHB4
OwotICAgIHdpZHRoOiA0MHB4OwotICAgIHRleHQtYWxpZ246IGNlbnRlcjsKLSAgICBib3JkZXI6
IG5vbmU7IC8qIE1vYmlsZSBTYWZhcmkgKi8KLX0KLQotI3RvZ2dsZS1hbGw6YmVmb3JlIHsKLSAg
ICBjb250ZW50OiAnwrsnOwotICAgIGZvbnQtc2l6ZTogMjhweDsKLSAgICBjb2xvcjogI2Q5ZDlk
OTsKLSAgICBwYWRkaW5nOiAwIDI1cHggN3B4OwotfQotCi0jdG9nZ2xlLWFsbDpjaGVja2VkOmJl
Zm9yZSB7Ci0gICAgY29sb3I6ICM3MzczNzM7Ci19Ci0KLSN0b2RvLWxpc3QgewotICAgIG1hcmdp
bjogMDsKLSAgICBwYWRkaW5nOiAwOwotICAgIGxpc3Qtc3R5bGU6IG5vbmU7Ci19Ci0KLSN0b2Rv
LWxpc3QgbGkgewotICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKLSAgICBmb250LXNpemU6IDI0cHg7
Ci0gICAgYm9yZGVyLWJvdHRvbTogMXB4IGRvdHRlZCAjY2NjOwotfQotCi0jdG9kby1saXN0IGxp
Omxhc3QtY2hpbGQgewotICAgIGJvcmRlci1ib3R0b206IG5vbmU7Ci19Ci0KLSN0b2RvLWxpc3Qg
bGkuZWRpdGluZyB7Ci0gICAgYm9yZGVyLWJvdHRvbTogbm9uZTsKLSAgICBwYWRkaW5nOiAwOwot
fQotCi0jdG9kby1saXN0IGxpLmVkaXRpbmcgLmVkaXQgewotICAgIGRpc3BsYXk6IGJsb2NrOwot
ICAgIHdpZHRoOiA1MDZweDsKLSAgICBwYWRkaW5nOiAxM3B4IDE3cHggMTJweCAxN3B4OwotICAg
IG1hcmdpbjogMCAwIDAgNDNweDsKLX0KLQotI3RvZG8tbGlzdCBsaS5lZGl0aW5nIC52aWV3IHsK
LSAgICBkaXNwbGF5OiBub25lOwotfQotCi0jdG9kby1saXN0IGxpIC50b2dnbGUgewotICAgIHRl
eHQtYWxpZ246IGNlbnRlcjsKLSAgICB3aWR0aDogNDBweDsKLSAgICAvKiBhdXRvLCBzaW5jZSBu
b24tV2ViS2l0IGJyb3dzZXJzIGRvZXNuJ3Qgc3VwcG9ydCBpbnB1dCBzdHlsaW5nICovCi0gICAg
aGVpZ2h0OiBhdXRvOwotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICB0b3A6IDA7Ci0gICAg
Ym90dG9tOiAwOwotICAgIG1hcmdpbjogYXV0byAwOwotICAgIGJvcmRlcjogbm9uZTsgLyogTW9i
aWxlIFNhZmFyaSAqLwotICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKLSAgICAvKi1tb3ot
YXBwZWFyYW5jZTogbm9uZTsqLwotICAgIC1tcy1hcHBlYXJhbmNlOiBub25lOwotICAgIC1vLWFw
cGVhcmFuY2U6IG5vbmU7Ci0gICAgYXBwZWFyYW5jZTogbm9uZTsKLX0KLQotI3RvZG8tbGlzdCBs
aSAudG9nZ2xlOmFmdGVyIHsKLSAgICBjb250ZW50OiAn4pyUJzsKLSAgICBsaW5lLWhlaWdodDog
NDNweDsgLyogNDAgKyBhIGNvdXBsZSBvZiBwaXhlbHMgdmlzdWFsIGFkanVzdG1lbnQgKi8KLSAg
ICBmb250LXNpemU6IDIwcHg7Ci0gICAgY29sb3I6ICNkOWQ5ZDk7Ci0gICAgdGV4dC1zaGFkb3c6
IDAgLTFweCAwICNiZmJmYmY7Ci19Ci0KLSN0b2RvLWxpc3QgbGkgLnRvZ2dsZTpjaGVja2VkOmFm
dGVyIHsKLSAgICBjb2xvcjogIzg1YWRhNzsKLSAgICB0ZXh0LXNoYWRvdzogMCAxcHggMCAjNjY5
OTkxOwotICAgIGJvdHRvbTogMXB4OwotICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKLX0KLQotI3Rv
ZG8tbGlzdCBsaSBsYWJlbCB7Ci0gICAgd29yZC1icmVhazogYnJlYWstd29yZDsKLSAgICBwYWRk
aW5nOiAxNXB4OwotICAgIG1hcmdpbi1sZWZ0OiA0NXB4OwotICAgIGRpc3BsYXk6IGJsb2NrOwot
ICAgIGxpbmUtaGVpZ2h0OiAxLjI7Ci0gICAgLXdlYmtpdC10cmFuc2l0aW9uOiBjb2xvciAwLjRz
OwotICAgIC1tb3otdHJhbnNpdGlvbjogY29sb3IgMC40czsKLSAgICAtbXMtdHJhbnNpdGlvbjog
Y29sb3IgMC40czsKLSAgICAtby10cmFuc2l0aW9uOiBjb2xvciAwLjRzOwotICAgIHRyYW5zaXRp
b246IGNvbG9yIDAuNHM7Ci19Ci0KLSN0b2RvLWxpc3QgbGkuY29tcGxldGVkIGxhYmVsIHsKLSAg
ICBjb2xvcjogI2E5YTlhOTsKLSAgICB0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDsKLX0K
LQotI3RvZG8tbGlzdCBsaSAuZGVzdHJveSB7Ci0gICAgZGlzcGxheTogbm9uZTsKLSAgICBwb3Np
dGlvbjogYWJzb2x1dGU7Ci0gICAgdG9wOiAwOwotICAgIHJpZ2h0OiAxMHB4OwotICAgIGJvdHRv
bTogMDsKLSAgICB3aWR0aDogNDBweDsKLSAgICBoZWlnaHQ6IDQwcHg7Ci0gICAgbWFyZ2luOiBh
dXRvIDA7Ci0gICAgZm9udC1zaXplOiAyMnB4OwotICAgIGNvbG9yOiAjYTg4YThhOwotICAgIC13
ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuMnM7Ci0gICAgLW1vei10cmFuc2l0aW9uOiBhbGwgMC4y
czsKLSAgICAtbXMtdHJhbnNpdGlvbjogYWxsIDAuMnM7Ci0gICAgLW8tdHJhbnNpdGlvbjogYWxs
IDAuMnM7Ci0gICAgdHJhbnNpdGlvbjogYWxsIDAuMnM7Ci19Ci0KLSN0b2RvLWxpc3QgbGkgLmRl
c3Ryb3k6aG92ZXIgewotICAgIHRleHQtc2hhZG93OiAwIDAgMXB4ICMwMDAsCi0gICAgIDAgMCAx
MHB4IHJnYmEoMTk5LCAxMDcsIDEwNywgMC44KTsKLSAgICAtd2Via2l0LXRyYW5zZm9ybTogc2Nh
bGUoMS4zKTsKLSAgICAtbW96LXRyYW5zZm9ybTogc2NhbGUoMS4zKTsKLSAgICAtbXMtdHJhbnNm
b3JtOiBzY2FsZSgxLjMpOwotICAgIC1vLXRyYW5zZm9ybTogc2NhbGUoMS4zKTsKLSAgICB0cmFu
c2Zvcm06IHNjYWxlKDEuMyk7Ci19Ci0KLSN0b2RvLWxpc3QgbGkgLmRlc3Ryb3k6YWZ0ZXIgewot
ICAgIGNvbnRlbnQ6ICfinJYnOwotfQotCi0jdG9kby1saXN0IGxpOmhvdmVyIC5kZXN0cm95IHsK
LSAgICBkaXNwbGF5OiBibG9jazsKLX0KLQotI3RvZG8tbGlzdCBsaSAuZWRpdCB7Ci0gICAgZGlz
cGxheTogbm9uZTsKLX0KLQotI3RvZG8tbGlzdCBsaS5lZGl0aW5nOmxhc3QtY2hpbGQgewotICAg
IG1hcmdpbi1ib3R0b206IC0xcHg7Ci19Ci0KLSNmb290ZXIgewotICAgIGNvbG9yOiAjNzc3Owot
ICAgIHBhZGRpbmc6IDAgMTVweDsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgcmlnaHQ6
IDA7Ci0gICAgYm90dG9tOiAtMzFweDsKLSAgICBsZWZ0OiAwOwotICAgIGhlaWdodDogMjBweDsK
LSAgICB6LWluZGV4OiAxOwotICAgIHRleHQtYWxpZ246IGNlbnRlcjsKLX0KLQotI2Zvb3Rlcjpi
ZWZvcmUgewotICAgIGNvbnRlbnQ6ICcnOwotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICBy
aWdodDogMDsKLSAgICBib3R0b206IDMxcHg7Ci0gICAgbGVmdDogMDsKLSAgICBoZWlnaHQ6IDUw
cHg7Ci0gICAgei1pbmRleDogLTE7Ci0gICAgYm94LXNoYWRvdzogMCAxcHggMXB4IHJnYmEoMCwg
MCwgMCwgMC4zKSwKLSAgICAwIDZweCAwIC0zcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpLAot
ICAgIDAgN3B4IDFweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4zKSwKLSAgICAwIDQzcHggMCAtNnB4
IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KSwKLSAgICAwIDQ0cHggMnB4IC02cHggcmdiYSgwLCAw
LCAwLCAwLjIpOwotfQotCi0jdG9kby1jb3VudCB7Ci0gICAgZmxvYXQ6IGxlZnQ7Ci0gICAgdGV4
dC1hbGlnbjogbGVmdDsKLX0KLQotI2ZpbHRlcnMgewotICAgIG1hcmdpbjogMDsKLSAgICBwYWRk
aW5nOiAwOwotICAgIGxpc3Qtc3R5bGU6IG5vbmU7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwot
ICAgIHJpZ2h0OiAwOwotICAgIGxlZnQ6IDA7Ci19Ci0KLSNmaWx0ZXJzIGxpIHsKLSAgICBkaXNw
bGF5OiBpbmxpbmU7Ci19Ci0KLSNmaWx0ZXJzIGxpIGEgewotICAgIGNvbG9yOiAjODM3NTZmOwot
ICAgIG1hcmdpbjogMnB4OwotICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKLX0KLQotI2ZpbHRl
cnMgbGkgYS5zZWxlY3RlZCB7Ci0gICAgZm9udC13ZWlnaHQ6IGJvbGQ7Ci19Ci0KLSNjbGVhci1j
b21wbGV0ZWQgewotICAgIGZsb2F0OiByaWdodDsKLSAgICBwb3NpdGlvbjogcmVsYXRpdmU7Ci0g
ICAgbGluZS1oZWlnaHQ6IDIwcHg7Ci0gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwotICAgIGJh
Y2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4xKTsKLSAgICBmb250LXNpemU6IDExcHg7Ci0gICAg
cGFkZGluZzogMCAxMHB4OwotICAgIGJvcmRlci1yYWRpdXM6IDNweDsKLSAgICBib3gtc2hhZG93
OiAwIC0xcHggMCAwIHJnYmEoMCwgMCwgMCwgMC4yKTsKLX0KLQotI2NsZWFyLWNvbXBsZXRlZDpo
b3ZlciB7Ci0gICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjE1KTsKLSAgICBib3gtc2hh
ZG93OiAwIC0xcHggMCAwIHJnYmEoMCwgMCwgMCwgMC4zKTsKLX0KLQotI2luZm8gewotICAgIG1h
cmdpbjogNjVweCBhdXRvIDA7Ci0gICAgY29sb3I6ICNhNmE2YTY7Ci0gICAgZm9udC1zaXplOiAx
MnB4OwotICAgIHRleHQtc2hhZG93OiAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTsK
LSAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci19Ci0KLSNpbmZvIGEgewotICAgIGNvbG9yOiBpbmhl
cml0OwotfQotCi0vKgotICAgIEhhY2sgdG8gcmVtb3ZlIGJhY2tncm91bmQgZnJvbSBNb2JpbGUg
U2FmYXJpLgotICAgIENhbid0IHVzZSBpdCBnbG9iYWxseSBzaW5jZSBpdCBkZXN0cm95cyBjaGVj
a2JveGVzIGluIEZpcmVmb3ggYW5kIE9wZXJhCi0qLwotQG1lZGlhIHNjcmVlbiBhbmQgKC13ZWJr
aXQtbWluLWRldmljZS1waXhlbC1yYXRpbzowKSB7Ci0gICAgI3RvZ2dsZS1hbGwsCi0gICAgI3Rv
ZG8tbGlzdCBsaSAudG9nZ2xlIHsKLSAgICBiYWNrZ3JvdW5kOiBub25lOwotICAgIH0KLQotICAg
ICN0b2RvLWxpc3QgbGkgLnRvZ2dsZSB7Ci0gICAgaGVpZ2h0OiA0MHB4OwotICAgIH0KLQotICAg
ICN0b2dnbGUtYWxsIHsKLSAgICB0b3A6IC01NnB4OwotICAgIGxlZnQ6IC0xNXB4OwotICAgIHdp
ZHRoOiA2NXB4OwotICAgIGhlaWdodDogNDFweDsKLSAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90
YXRlKDkwZGVnKTsKLSAgICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7Ci0gICAgLXdlYmtpdC1h
cHBlYXJhbmNlOiBub25lOwotICAgIGFwcGVhcmFuY2U6IG5vbmU7Ci0gICAgfQotfQotCi0uaGlk
ZGVuewotICAgIGRpc3BsYXk6bm9uZTsKLX0KLQotaHIgewotICAgIG1hcmdpbjogMjBweCAwOwot
ICAgIGJvcmRlcjogMDsKLSAgICBib3JkZXItdG9wOiAxcHggZGFzaGVkICNDNUM1QzU7Ci0gICAg
Ym9yZGVyLWJvdHRvbTogMXB4IGRhc2hlZCAjRjdGN0Y3OwotfQotCi0ubGVhcm4gYSB7Ci0gICAg
Zm9udC13ZWlnaHQ6IG5vcm1hbDsKLSAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Ci0gICAgY29s
b3I6ICNiODNmNDU7Ci19Ci0KLS5sZWFybiBhOmhvdmVyIHsKLSAgICB0ZXh0LWRlY29yYXRpb246
IHVuZGVybGluZTsKLSAgICBjb2xvcjogIzc4N2U3ZTsKLX0KLQotLmxlYXJuIGgzLAotLmxlYXJu
IGg0LAotLmxlYXJuIGg1IHsKLSAgICBtYXJnaW46IDEwcHggMDsKLSAgICBmb250LXdlaWdodDog
NTAwOwotICAgIGxpbmUtaGVpZ2h0OiAxLjI7Ci0gICAgY29sb3I6ICMwMDA7Ci19Ci0KLS5sZWFy
biBoMyB7Ci0gICAgZm9udC1zaXplOiAyNHB4OwotfQotCi0ubGVhcm4gaDQgewotICAgIGZvbnQt
c2l6ZTogMThweDsKLX0KLQotLmxlYXJuIGg1IHsKLSAgICBtYXJnaW4tYm90dG9tOiAwOwotICAg
IGZvbnQtc2l6ZTogMTRweDsKLX0KLQotLmxlYXJuIHVsIHsKLSAgICBwYWRkaW5nOiAwOwotICAg
IG1hcmdpbjogMCAwIDMwcHggMjVweDsKLX0KLQotLmxlYXJuIGxpIHsKLSAgICBsaW5lLWhlaWdo
dDogMjBweDsKLX0KLQotLmxlYXJuIHAgewotICAgIGZvbnQtc2l6ZTogMTVweDsKLSAgICBmb250
LXdlaWdodDogMzAwOwotICAgIGxpbmUtaGVpZ2h0OiAxLjM7Ci0gICAgbWFyZ2luLXRvcDogMDsK
LSAgICBtYXJnaW4tYm90dG9tOiAwOwotfQotCi0ucXVvdGUgewotICAgIGJvcmRlcjogbm9uZTsK
LSAgICBtYXJnaW46IDIwcHggMCA2MHB4IDA7Ci19Ci0KLS5xdW90ZSBwIHsKLSAgICBmb250LXN0
eWxlOiBpdGFsaWM7Ci19Ci0KLS5xdW90ZSBwOmJlZm9yZSB7Ci0gICAgY29udGVudDogJ+KAnCc7
Ci0gICAgZm9udC1zaXplOiA1MHB4OwotICAgIG9wYWNpdHk6IC4xNTsKLSAgICBwb3NpdGlvbjog
YWJzb2x1dGU7Ci0gICAgdG9wOiAtMjBweDsKLSAgICBsZWZ0OiAzcHg7Ci19Ci0KLS5xdW90ZSBw
OmFmdGVyIHsKLSAgICBjb250ZW50OiAn4oCdJzsKLSAgICBmb250LXNpemU6IDUwcHg7Ci0gICAg
b3BhY2l0eTogLjE1OwotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICBib3R0b206IC00MnB4
OwotICAgIHJpZ2h0OiAzcHg7Ci19Ci0KLS5xdW90ZSBmb290ZXIgewotICAgIHBvc2l0aW9uOiBh
YnNvbHV0ZTsKLSAgICBib3R0b206IC00MHB4OwotICAgIHJpZ2h0OiAwOwotfQotCi0ucXVvdGUg
Zm9vdGVyIGltZyB7Ci0gICAgYm9yZGVyLXJhZGl1czogM3B4OwotfQotCi0ucXVvdGUgZm9vdGVy
IGEgewotICAgIG1hcmdpbi1sZWZ0OiA1cHg7Ci0gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsK
LX0KLQotLnNwZWVjaC1idWJibGUgewotICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKLSAgICBwYWRk
aW5nOiAxMHB4OwotICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgLjA0KTsKLSAgICBib3Jk
ZXItcmFkaXVzOiA1cHg7Ci19Ci0KLS5zcGVlY2gtYnViYmxlOmFmdGVyIHsKLSAgICBjb250ZW50
OiAnJzsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgdG9wOiAxMDAlOwotICAgIHJpZ2h0
OiAzMHB4OwotICAgIGJvcmRlcjogMTNweCBzb2xpZCB0cmFuc3BhcmVudDsKLSAgICBib3JkZXIt
dG9wLWNvbG9yOiByZ2JhKDAsIDAsIDAsIC4wNCk7Ci19Ci0KLS8qKmJvZHkqLy5sZWFybi1iYXIg
PiAubGVhcm4gewotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICB3aWR0aDogMjcycHg7Ci0g
ICAgdG9wOiA4cHg7Ci0gICAgbGVmdDogLTMwMHB4OwotICAgIHBhZGRpbmc6IDEwcHg7Ci0gICAg
Ym9yZGVyLXJhZGl1czogNXB4OwotICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUs
IDI1NSwgLjYpOwotICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IGxlZnQ7Ci0gICAgdHJhbnNpdGlv
bi1kdXJhdGlvbjogNTAwbXM7Ci19Ci0KLUBtZWRpYSAobWluLXdpZHRoOiA4OTlweCkgewotICAg
IC8qKmJvZHkqLy5sZWFybi1iYXIgewotICAgIHdpZHRoOiBhdXRvOwotICAgIG1hcmdpbjogMCAw
IDAgMzAwcHg7Ci0gICAgfQotICAgIC8qKmJvZHkqLy5sZWFybi1iYXIgPiAubGVhcm4gewotICAg
IGxlZnQ6IDhweDsKLSAgICB9Ci0gICAgLyoqYm9keSovLmxlYXJuLWJhciAjdG9kb2FwcCB7Ci0g
ICAgd2lkdGg6IDU1MHB4OwotICAgIG1hcmdpbjogMTMwcHggYXV0byA0MHB4IGF1dG87Ci0gICAg
fQotfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL2Jvd2VyX2NvbXBvbmVudHMv
dG9kb212Yy1jb21tb24vYmFzZS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ib3dlcl9jb21w
b25lbnRzL3RvZG9tdmMtY29tbW9uL2Jhc2UuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGY5YmY0MjQwZmFkOWE5YzExOTRjODE1ODZkYzI5MTZiZWMxY2NhNzguLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpz
L2Jvd2VyX2NvbXBvbmVudHMvdG9kb212Yy1jb21tb24vYmFzZS5qcworKysgL2Rldi9udWxsCkBA
IC0xLDIwOSArMCwwIEBACi0oZnVuY3Rpb24gKCkgewotICAgICd1c2Ugc3RyaWN0JzsKLQotICAg
IC8vIFVuZGVyc2NvcmUncyBUZW1wbGF0ZSBNb2R1bGUKLSAgICAvLyBDb3VydGVzeSBvZiB1bmRl
cnNjb3JlanMub3JnCi0gICAgdmFyIF8gPSAoZnVuY3Rpb24gKF8pIHsKLSAgICBfLmRlZmF1bHRz
ID0gZnVuY3Rpb24gKG9iamVjdCkgewotICAgIGlmICghb2JqZWN0KSB7Ci0gICAgcmV0dXJuIG9i
amVjdDsKLSAgICB9Ci0gICAgZm9yICh2YXIgYXJnc0luZGV4ID0gMSwgYXJnc0xlbmd0aCA9IGFy
Z3VtZW50cy5sZW5ndGg7IGFyZ3NJbmRleCA8IGFyZ3NMZW5ndGg7IGFyZ3NJbmRleCsrKSB7Ci0g
ICAgdmFyIGl0ZXJhYmxlID0gYXJndW1lbnRzW2FyZ3NJbmRleF07Ci0gICAgaWYgKGl0ZXJhYmxl
KSB7Ci0gICAgZm9yICh2YXIga2V5IGluIGl0ZXJhYmxlKSB7Ci0gICAgaWYgKG9iamVjdFtrZXld
ID09IG51bGwpIHsKLSAgICBvYmplY3Rba2V5XSA9IGl0ZXJhYmxlW2tleV07Ci0gICAgfQotICAg
IH0KLSAgICB9Ci0gICAgfQotICAgIHJldHVybiBvYmplY3Q7Ci0gICAgfQotCi0gICAgLy8gQnkg
ZGVmYXVsdCwgVW5kZXJzY29yZSB1c2VzIEVSQi1zdHlsZSB0ZW1wbGF0ZSBkZWxpbWl0ZXJzLCBj
aGFuZ2UgdGhlCi0gICAgLy8gZm9sbG93aW5nIHRlbXBsYXRlIHNldHRpbmdzIHRvIHVzZSBhbHRl
cm5hdGl2ZSBkZWxpbWl0ZXJzLgotICAgIF8udGVtcGxhdGVTZXR0aW5ncyA9IHsKLSAgICBldmFs
dWF0ZSAgICA6IC88JShbXHNcU10rPyklPi9nLAotICAgIGludGVycG9sYXRlIDogLzwlPShbXHNc
U10rPyklPi9nLAotICAgIGVzY2FwZSAgICAgIDogLzwlLShbXHNcU10rPyklPi9nCi0gICAgfTsK
LQotICAgIC8vIFdoZW4gY3VzdG9taXppbmcgYHRlbXBsYXRlU2V0dGluZ3NgLCBpZiB5b3UgZG9u
J3Qgd2FudCB0byBkZWZpbmUgYW4KLSAgICAvLyBpbnRlcnBvbGF0aW9uLCBldmFsdWF0aW9uIG9y
IGVzY2FwaW5nIHJlZ2V4LCB3ZSBuZWVkIG9uZSB0aGF0IGlzCi0gICAgLy8gZ3VhcmFudGVlZCBu
b3QgdG8gbWF0Y2guCi0gICAgdmFyIG5vTWF0Y2ggPSAvKC4pXi87Ci0KLSAgICAvLyBDZXJ0YWlu
IGNoYXJhY3RlcnMgbmVlZCB0byBiZSBlc2NhcGVkIHNvIHRoYXQgdGhleSBjYW4gYmUgcHV0IGlu
dG8gYQotICAgIC8vIHN0cmluZyBsaXRlcmFsLgotICAgIHZhciBlc2NhcGVzID0gewotICAgICIn
IjogICAgICAiJyIsCi0gICAgJ1xcJzogICAgICdcXCcsCi0gICAgJ1xyJzogICAgICdyJywKLSAg
ICAnXG4nOiAgICAgJ24nLAotICAgICdcdCc6ICAgICAndCcsCi0gICAgJ1x1MjAyOCc6ICd1MjAy
OCcsCi0gICAgJ1x1MjAyOSc6ICd1MjAyOScKLSAgICB9OwotCi0gICAgdmFyIGVzY2FwZXIgPSAv
XFx8J3xccnxcbnxcdHxcdTIwMjh8XHUyMDI5L2c7Ci0KLSAgICAvLyBKYXZhU2NyaXB0IG1pY3Jv
LXRlbXBsYXRpbmcsIHNpbWlsYXIgdG8gSm9obiBSZXNpZydzIGltcGxlbWVudGF0aW9uLgotICAg
IC8vIFVuZGVyc2NvcmUgdGVtcGxhdGluZyBoYW5kbGVzIGFyYml0cmFyeSBkZWxpbWl0ZXJzLCBw
cmVzZXJ2ZXMgd2hpdGVzcGFjZSwKLSAgICAvLyBhbmQgY29ycmVjdGx5IGVzY2FwZXMgcXVvdGVz
IHdpdGhpbiBpbnRlcnBvbGF0ZWQgY29kZS4KLSAgICBfLnRlbXBsYXRlID0gZnVuY3Rpb24odGV4
dCwgZGF0YSwgc2V0dGluZ3MpIHsKLSAgICB2YXIgcmVuZGVyOwotICAgIHNldHRpbmdzID0gXy5k
ZWZhdWx0cyh7fSwgc2V0dGluZ3MsIF8udGVtcGxhdGVTZXR0aW5ncyk7Ci0KLSAgICAvLyBDb21i
aW5lIGRlbGltaXRlcnMgaW50byBvbmUgcmVndWxhciBleHByZXNzaW9uIHZpYSBhbHRlcm5hdGlv
bi4KLSAgICB2YXIgbWF0Y2hlciA9IG5ldyBSZWdFeHAoWwotICAgIChzZXR0aW5ncy5lc2NhcGUg
fHwgbm9NYXRjaCkuc291cmNlLAotICAgIChzZXR0aW5ncy5pbnRlcnBvbGF0ZSB8fCBub01hdGNo
KS5zb3VyY2UsCi0gICAgKHNldHRpbmdzLmV2YWx1YXRlIHx8IG5vTWF0Y2gpLnNvdXJjZQotICAg
IF0uam9pbignfCcpICsgJ3wkJywgJ2cnKTsKLQotICAgIC8vIENvbXBpbGUgdGhlIHRlbXBsYXRl
IHNvdXJjZSwgZXNjYXBpbmcgc3RyaW5nIGxpdGVyYWxzIGFwcHJvcHJpYXRlbHkuCi0gICAgdmFy
IGluZGV4ID0gMDsKLSAgICB2YXIgc291cmNlID0gIl9fcCs9JyI7Ci0gICAgdGV4dC5yZXBsYWNl
KG1hdGNoZXIsIGZ1bmN0aW9uKG1hdGNoLCBlc2NhcGUsIGludGVycG9sYXRlLCBldmFsdWF0ZSwg
b2Zmc2V0KSB7Ci0gICAgc291cmNlICs9IHRleHQuc2xpY2UoaW5kZXgsIG9mZnNldCkKLSAgICAu
cmVwbGFjZShlc2NhcGVyLCBmdW5jdGlvbihtYXRjaCkgeyByZXR1cm4gJ1xcJyArIGVzY2FwZXNb
bWF0Y2hdOyB9KTsKLQotICAgIGlmIChlc2NhcGUpIHsKLSAgICBzb3VyY2UgKz0gIicrXG4oKF9f
dD0oIiArIGVzY2FwZSArICIpKT09bnVsbD8nJzpfLmVzY2FwZShfX3QpKStcbiciOwotICAgIH0K
LSAgICBpZiAoaW50ZXJwb2xhdGUpIHsKLSAgICBzb3VyY2UgKz0gIicrXG4oKF9fdD0oIiArIGlu
dGVycG9sYXRlICsgIikpPT1udWxsPycnOl9fdCkrXG4nIjsKLSAgICB9Ci0gICAgaWYgKGV2YWx1
YXRlKSB7Ci0gICAgc291cmNlICs9ICInO1xuIiArIGV2YWx1YXRlICsgIlxuX19wKz0nIjsKLSAg
ICB9Ci0gICAgaW5kZXggPSBvZmZzZXQgKyBtYXRjaC5sZW5ndGg7Ci0gICAgcmV0dXJuIG1hdGNo
OwotICAgIH0pOwotICAgIHNvdXJjZSArPSAiJztcbiI7Ci0KLSAgICAvLyBJZiBhIHZhcmlhYmxl
IGlzIG5vdCBzcGVjaWZpZWQsIHBsYWNlIGRhdGEgdmFsdWVzIGluIGxvY2FsIHNjb3BlLgotICAg
IGlmICghc2V0dGluZ3MudmFyaWFibGUpIHNvdXJjZSA9ICd3aXRoKG9ianx8e30pe1xuJyArIHNv
dXJjZSArICd9XG4nOwotCi0gICAgc291cmNlID0gInZhciBfX3QsX19wPScnLF9faj1BcnJheS5w
cm90b3R5cGUuam9pbiwiICsKLSAgICAicHJpbnQ9ZnVuY3Rpb24oKXtfX3ArPV9fai5jYWxsKGFy
Z3VtZW50cywnJyk7fTtcbiIgKwotICAgIHNvdXJjZSArICJyZXR1cm4gX19wO1xuIjsKLQotICAg
IHRyeSB7Ci0gICAgcmVuZGVyID0gbmV3IEZ1bmN0aW9uKHNldHRpbmdzLnZhcmlhYmxlIHx8ICdv
YmonLCAnXycsIHNvdXJjZSk7Ci0gICAgfSBjYXRjaCAoZSkgewotICAgIGUuc291cmNlID0gc291
cmNlOwotICAgIHRocm93IGU7Ci0gICAgfQotCi0gICAgaWYgKGRhdGEpIHJldHVybiByZW5kZXIo
ZGF0YSwgXyk7Ci0gICAgdmFyIHRlbXBsYXRlID0gZnVuY3Rpb24oZGF0YSkgewotICAgIHJldHVy
biByZW5kZXIuY2FsbCh0aGlzLCBkYXRhLCBfKTsKLSAgICB9OwotCi0gICAgLy8gUHJvdmlkZSB0
aGUgY29tcGlsZWQgZnVuY3Rpb24gc291cmNlIGFzIGEgY29udmVuaWVuY2UgZm9yIHByZWNvbXBp
bGF0aW9uLgotICAgIHRlbXBsYXRlLnNvdXJjZSA9ICdmdW5jdGlvbignICsgKHNldHRpbmdzLnZh
cmlhYmxlIHx8ICdvYmonKSArICcpe1xuJyArIHNvdXJjZSArICd9JzsKLQotICAgIHJldHVybiB0
ZW1wbGF0ZTsKLSAgICB9OwotCi0gICAgcmV0dXJuIF87Ci0gICAgfSkoe30pOwotCi0gICAgaWYg
KGxvY2F0aW9uLmhvc3RuYW1lID09PSAndG9kb212Yy5jb20nKSB7Ci0gICAgd2luZG93Ll9nYXEg
PSBbWydfc2V0QWNjb3VudCcsJ1VBLTMxMDgxMDYyLTEnXSxbJ190cmFja1BhZ2V2aWV3J11dOyhm
dW5jdGlvbihkLHQpe3ZhciBnPWQuY3JlYXRlRWxlbWVudCh0KSxzPWQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUodClbMF07Zy5zcmM9Jy8vd3d3Lmdvb2dsZS1hbmFseXRpY3MuY29tL2dhLmpzJztzLnBh
cmVudE5vZGUuaW5zZXJ0QmVmb3JlKGcscyl9KGRvY3VtZW50LCdzY3JpcHQnKSk7Ci0gICAgfQot
Ci0gICAgZnVuY3Rpb24gcmVkaXJlY3QoKSB7Ci0gICAgaWYgKGxvY2F0aW9uLmhvc3RuYW1lID09
PSAndGFzdGVqcy5naXRodWIuaW8nKSB7Ci0gICAgbG9jYXRpb24uaHJlZiA9IGxvY2F0aW9uLmhy
ZWYucmVwbGFjZSgndGFzdGVqcy5naXRodWIuaW8vdG9kb212YycsICd0b2RvbXZjLmNvbScpOwot
ICAgIH0KLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBmaW5kUm9vdCgpIHsKLSAgICB2YXIgYmFzZTsK
LQotICAgIFsvbGFicy8sIC9cdyotZXhhbXBsZXMvXS5mb3JFYWNoKGZ1bmN0aW9uIChocmVmKSB7
Ci0gICAgdmFyIG1hdGNoID0gbG9jYXRpb24uaHJlZi5tYXRjaChocmVmKTsKLQotICAgIGlmICgh
YmFzZSAmJiBtYXRjaCkgewotICAgIGJhc2UgPSBsb2NhdGlvbi5ocmVmLmluZGV4T2YobWF0Y2gp
OwotICAgIH0KLSAgICB9KTsKLQotICAgIHJldHVybiBsb2NhdGlvbi5ocmVmLnN1YnN0cigwLCBi
YXNlKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBnZXRGaWxlKGZpbGUsIGNhbGxiYWNrKSB7Ci0g
ICAgaWYgKCFsb2NhdGlvbi5ob3N0KSB7Ci0gICAgcmV0dXJuIGNvbnNvbGUuaW5mbygnTWlzcyB0
aGUgaW5mbyBiYXI/IFJ1biBUb2RvTVZDIGZyb20gYSBzZXJ2ZXIgdG8gYXZvaWQgYSBjcm9zcy1v
cmlnaW4gZXJyb3IuJyk7Ci0gICAgfQotCi0gICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVz
dCgpOwotCi0gICAgeGhyLm9wZW4oJ0dFVCcsIGZpbmRSb290KCkgKyBmaWxlLCB0cnVlKTsKLSAg
ICB4aHIuc2VuZCgpOwotCi0gICAgeGhyLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsKLSAgICBpZiAo
eGhyLnN0YXR1cyA9PT0gMjAwICYmIGNhbGxiYWNrKSB7Ci0gICAgY2FsbGJhY2soeGhyLnJlc3Bv
bnNlVGV4dCk7Ci0gICAgfQotICAgIH07Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gTGVhcm4obGVh
cm5KU09OLCBjb25maWcpIHsKLSAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgTGVhcm4pKSB7Ci0g
ICAgcmV0dXJuIG5ldyBMZWFybihsZWFybkpTT04sIGNvbmZpZyk7Ci0gICAgfQotCi0gICAgdmFy
IHRlbXBsYXRlLCBmcmFtZXdvcms7Ci0KLSAgICBpZiAodHlwZW9mIGxlYXJuSlNPTiAhPT0gJ29i
amVjdCcpIHsKLSAgICB0cnkgewotICAgIGxlYXJuSlNPTiA9IEpTT04ucGFyc2UobGVhcm5KU09O
KTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAgcmV0dXJuOwotICAgIH0KLSAgICB9Ci0KLSAgICBp
ZiAoY29uZmlnKSB7Ci0gICAgdGVtcGxhdGUgPSBjb25maWcudGVtcGxhdGU7Ci0gICAgZnJhbWV3
b3JrID0gY29uZmlnLmZyYW1ld29yazsKLSAgICB9Ci0KLSAgICBpZiAoIXRlbXBsYXRlICYmIGxl
YXJuSlNPTi50ZW1wbGF0ZXMpIHsKLSAgICB0ZW1wbGF0ZSA9IGxlYXJuSlNPTi50ZW1wbGF0ZXMu
dG9kb212YzsKLSAgICB9Ci0KLSAgICBpZiAoIWZyYW1ld29yayAmJiBkb2N1bWVudC5xdWVyeVNl
bGVjdG9yKCdbZGF0YS1mcmFtZXdvcmtdJykpIHsKLSAgICBmcmFtZXdvcmsgPSBkb2N1bWVudC5x
dWVyeVNlbGVjdG9yKCdbZGF0YS1mcmFtZXdvcmtdJykuZ2V0QXR0cmlidXRlKCdkYXRhLWZyYW1l
d29yaycpOwotICAgIH0KLQotCi0gICAgaWYgKHRlbXBsYXRlICYmIGxlYXJuSlNPTltmcmFtZXdv
cmtdKSB7Ci0gICAgdGhpcy5mcmFtZXdvcmtKU09OID0gbGVhcm5KU09OW2ZyYW1ld29ya107Ci0g
ICAgdGhpcy50ZW1wbGF0ZSA9IHRlbXBsYXRlOwotCi0gICAgdGhpcy5hcHBlbmQoKTsKLSAgICB9
Ci0gICAgfQotCi0gICAgTGVhcm4ucHJvdG90eXBlLmFwcGVuZCA9IGZ1bmN0aW9uICgpIHsKLSAg
ICB2YXIgYXNpZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhc2lkZScpOwotICAgIGFzaWRl
LmlubmVySFRNTCA9IF8udGVtcGxhdGUodGhpcy50ZW1wbGF0ZSwgdGhpcy5mcmFtZXdvcmtKU09O
KTsKLSAgICBhc2lkZS5jbGFzc05hbWUgPSAnbGVhcm4nOwotCi0gICAgLy8gTG9jYWxpemUgZGVt
byBsaW5rcwotICAgIHZhciBkZW1vTGlua3MgPSBhc2lkZS5xdWVyeVNlbGVjdG9yQWxsKCcuZGVt
by1saW5rJyk7Ci0gICAgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChkZW1vTGlua3MsIGZ1
bmN0aW9uIChkZW1vTGluaykgewotICAgIGRlbW9MaW5rLnNldEF0dHJpYnV0ZSgnaHJlZicsIGZp
bmRSb290KCkgKyBkZW1vTGluay5nZXRBdHRyaWJ1dGUoJ2hyZWYnKSk7Ci0gICAgfSk7Ci0KLSAg
ICBkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSA9IChkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSArICcg
bGVhcm4tYmFyJykudHJpbSgpOwotICAgIGRvY3VtZW50LmJvZHkuaW5zZXJ0QWRqYWNlbnRIVE1M
KCdhZnRlckJlZ2luJywgYXNpZGUub3V0ZXJIVE1MKTsKLSAgICB9OwotCi0gICAgcmVkaXJlY3Qo
KTsKLSAgICBnZXRGaWxlKCdsZWFybi5qc29uJywgTGVhcm4pOwotfSkoKTsKZGlmZiAtLWdpdCBh
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ib3dlcl9jb21wb25lbnRzL3RvZG9tdmMtY29tbW9uL2Jn
LnBuZyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ib3dlcl9jb21wb25lbnRzL3RvZG9tdmMtY29t
bW9uL2JnLnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjJhNzYwMDgyNWVlMTFm
MjE4NDllZDQ3NTQ5OWM3ZDFlY2JjYzg3MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKbGl0ZXJh
bCAyMTI2CnpjbVYtVTIoa0J4UCk8aDszS3xMazAwMGUxTkpMVHEwMDNrRjAwM2tIMHt7UjM0VUIh
cTAwMDBDUCl0LXM/KFhqRQp6Pis5eWA9SEs3bnQ9fjN0MDAwTzVOa2w8WmN3VGp1KFE0dn43S1dF
VyNZbT9sS192O1RtfCFGYylATndFbm10c2gKenghT356ODFKVDNwRnNtPm09MDRoVmFfbFhsX2Jt
PStNOz1lSTwlJHJPMnRhYHN1aCpTciNQT3cqP2FkcSFPIUNWCnoqMCZiKXJrQ0NFVikxbkl1aUxC
bnRVSC1NSkk7JnFZZ3p8ZEBOaG5uX2FiaTJnYHB1NE5BTVZpZDNoUyU/cXV6fgp6amxKZih4OGNq
PFBHY2puKkorYXsmSDVwKm41JDVlMz88S0NjP28wNm1Bc05TYmdQV08/UHojQ3puPCE9ez57VlMK
elVWRVAxbXNnOWBeT0ZVaFNPNXJ0WEhoUmx5VTJpPjYkQlQ9Z2xHYHtKbGN0R0hyd1JJbSk2QnV1
NjVqTFFuXkg4Cnp2bDlsWnFVQkErJXF2TTVYQyt5WUBtZkEoWUJ+WFA9ZXw2PHslJF5lVThucks/
djJjY2JASm9tNUNHPnJLQUw3Sgp6cGxIRUlhdlZwfDBwMSZtIUdgVGk/PDdpWjt9QEc3I1opfUtt
JTIhRkhuUTAqJj9QTFIpRyFIQWFIZ1UjY3wkZHoKenBqIzBIbWVhZEllPmAjKT1Kamtie0I9Rktu
VTNwYy0mWUBqX2o2KGg0WX4rVXE8UFUzNkM7NWI9TV5GYD1wMWRJCnprPENRT1BOYTc+IV5KPUxI
dW54MXhpNFFYSy1ZeyZNb1Q4a3k2VmI5Y3xXaG5Pd0Z+Yz0zek95OGFna3RsaVM2Iwp6YCM4RmA5
SClEPWJtazlCNU1uVyZfciMpZiRjKzskTFNyLUBeQW44ZGhjfklxdXV2PmpPSzdwdzdMSjsmWDBp
MUMKekdNc0hkUDFPc0BueSQkaiE+WEFpaSU3YnA1az5gcHlOQSF+ZXBiKSgpcDl6UjRZbDZ6PVV9
e0NJZGgxeihGcEFvCnpRSVchOzB6cEN5QzQqN1lMa1pDT0BjdWwwUl8memdoc0E4RWspeiU8IXAt
YnZzc3BsWVkyfVA7IXY0Q1lqOWttRgp6YjBiTl9tNFYqZl5ZWk1vYjIoajNwS2p+N3YjWnRrcz1J
byt7c3UlV2l1a2RKSCRiP2Zaa2lBPVBZXzNPaERCa28KeihMVFFIWSZGXl4yaEctWWAqWjkzdmJ+
Yz8qKEpjaERqVGZDcz96Um0qYCpOKlYtJD0/UXF0aG5Tcio/T1Mzc2pLCnpvPF9VXmZ7fmFnNjB1
bD5qTnBLYTkye0BOSCtTc3RYJUB9eEIqSmshbH1QWjFjQ2xJbnN+fTVeIVJuY1VrKnJtQQp6JVNJ
Vmd0NThFUXhMSitPaUZxPHl1NGVPRHw5THQzZE5zZWZ4T3VxKUQmJF8lajBEZ3FDeTFnemN8dFRE
MyptZWUKens9JXw8YGB9X0h5cGhPdXs7KXhrUmcrUW5IQ0MzVGYra3NwcVY2KnxRSy1SY3FEfTQ+
S2tCdXdxdXlaTFVwfGdyCnpQVWJVYkZiQnJQZDF4T2BeQypyLWkzcDkqRiMoT0JoITRXeUBhQyYq
IXxPfEdYY2pEQSZZaEZ7O2NENypvKEdTXgp6QHBRU0U3KXhfODE9UXlqZTYqTFEjVFh1LTcobztT
OHUzdHBEQTxTZ2NLY0tPcG1BOz1IQlpTQE9GVEBfWE92eHEKeipOfDNLTHl0Z3pINkdVJiZVb2M0
WnprNGx1bTNQezk/ZnBJNCtRR1BKK3Y2YDFsZlJxM0xjUyooTSpXSyt8YiVPCnplJHo+MF9kZGol
aG1Dc3BlWGRoWVJ9LWk5QT1DYEVvQ2hVWXVIfl54ITkrfCYoUGdiKj5Dazw9OWp8KSpAeHlmVAp6
cFAjK0t0PH0zOWJ8M1dsNGZ4VCgrRz9hSD5nR15kQE1FYVVPSlJmeTU1VHRGSTdeWSlWdU1VPTdQ
cDB5NTVqU34KeitUSilpZ015cnFrWDt3VThqNjhpSUR0cUpZaFNfRDNfT2VtLUBnNm1lX1JmaVF9
dVRfSy1BLTlxRyV9Z2szRTljCnohOGBLZ3NNTlhtKWJlbG9QZk1xbCp8JiRNPjFxYGkhY1kpUkZZ
bmpOWXUqZ1N2QDhYZWJWNyV9eFlMPjYpR0pQSgp6SnBBN0szMWxjSnVJRktTdy17eDRGWDBLMkF6
KX5YZzxgc091JDR8XjxNQzdAK3hid3hzR2dUdkpJQUxqUHs2OEwKejhBWXVTR1MwR1VnazZXYHY0
VztSeSp1b0VUbnVsUGl8NTczJWx2Klp4dyN2NnlVUV5NT2ZjcFQjVjhSSURWIyNOCnpEMWArQWVt
c09oKXdiV0RFeFZjZnBLeilqeVY9PH4mWlhQZzZjfFpERTdVNGJrPERePi0oXlhKWDRZem9pTlJ2
TAp6eXVZN34yNnctUF5adyU2Rn1zaEJ3VjIkMDJjOFJzU1V5NmRNOTJkaUNBeGlYM0lVcXNxNWln
Nj5VXyFWeSpxNSQKemptfTE2dEpyK1FaJlQ/SGtrcGVJd1ZYLXIxRUk9QCVabHQ7Njx0d0g4NklE
PmcqbWomRSFBKSklZ1hKPXg2dSNsCnpjS0VQPmJ4NHJxViprYEJCclokTXFqdHtUc0hjeFVIPjsp
aUFLfUIoS2lsYSZWRCViPzZtJl4wV0s0XiZFWk5BSQp6OEFNWXNfJSREJXxNK0ArY1FxTC1oaTR5
Rz5oKmp3ZGlpIVcxe31wPlpod0ZZdF80U3Uxa2pZOTxiQVpqen45ZWsKel9EaWFyK0FmSkZQXzlA
eW1VbyRLVz48LTVgISRWTk9JMXkoRURTSDRXcENpakVfPmFsIU50PV5lVkVSI3VKMT1iCno7QldG
MklneUY1TGV4Vit5ZWMkS2luO0FpQG15bztHPnpKJmpyZFcjZWNYaElacGg1T1lxd19QRWZjRjU2
PE8xOQp6TCk4ciFLTSgpaWYwYEA/VzQoSmRjKTdXb1BHXiY9JDx6VXNNK0hDV2FrQ14zdFp4aytQ
alFHfUI+WjU8WjZWeHcKekJASHJWJCZsfkBUYWo3MHBjZXtpU3VSTHNVY3pEWV81VG5EcThQeV9R
M3doYEQ4ITRqSzt2RmRSUCtRMD16SnkqCnp6dVdkJSFhaUBEe3wqSjxJO09EJmklbHtKcC04KlB1
M1ZHTFdpeWs2diNYbVFxd2AtKyVlJHxDSncqQGA1emIzPAp6RX16IztrUmhMJnE1UERHNkBtbSok
Plp1X1paRSNxM01jK04mMU9eN2hvaDlRUjdgK0wkY0JQNXBxRz1mcUEwdWgKelVCdWtheFRGbUgp
PHxYYnZwMmM9SFNiTmtwWHc3M2E1bHY3ViRqYjkyI3laMTQxQCRYP0Z9SnQ4Z0lVN1dtNm05Cno/
ZV87O3pzbm02YExaZVA+VD0kKUtyPlo/a3IqVW1GcVI3engwQzZeYm1jc2NAMUFHdHdfck5IPi1Y
bSRkKnxRPAp6biYxTG4wdTc9bCZJTHM+JUNrSnBgRGlHOUYxOHg0TmUrbGc8I2k/ZTdqTCV4OzRa
blJrTl5NeDA3KnFvTTZOPCQKRWYoPjBOITJrZE4KCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9h
bmd1bGFyanMvaW5kZXguaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9pbmRleC5odG1sCmlu
ZGV4IDdmMzc4YmRiMmM4OGNmMTRlODZkN2QwNjNiOWU3ZGRjZWE5YzRhN2QuLmZmMTdjOTg4ZjZh
YWVlZGFjN2M3NDc0ZTBjNTZmZTVlNzUyZTk4MzQgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2Fu
Z3VsYXJqcy9pbmRleC5odG1sCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9pbmRleC5odG1s
CkBAIC0xLDcxICsxLDIxIEBACiA8IWRvY3R5cGUgaHRtbD4KLTxodG1sIGxhbmc9ImVuIiBuZy1h
cHA9InRvZG9tdmMiIGRhdGEtZnJhbWV3b3JrPSJhbmd1bGFyanMiPgorPGh0bWwgbGFuZz0iZW4i
IGRhdGEtZnJhbWV3b3JrPSJhbmd1bGFyanMiPgogICAgIDxoZWFkPgotICAgIDxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KLSAgICA8bWV0YSBodHRwLWVxdWl2PSJYLVVBLUNvbXBhdGlibGUiIGNvbnRl
bnQ9IklFPWVkZ2UiPgotICAgIDx0aXRsZT5Bbmd1bGFySlMg4oCiIFRvZG9NVkM8L3RpdGxlPgot
ICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iYm93ZXJfY29tcG9uZW50cy90b2RvbXZj
LWNvbW1vbi9iYXNlLmNzcyI+Ci0gICAgPHN0eWxlPltuZy1jbG9ha10geyBkaXNwbGF5OiBub25l
OyB9PC9zdHlsZT4KKyAgICAgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgorICAgICAgICA8dGl0
bGU+QW5ndWxhckpTIOKAoiBUb2RvTVZDPC90aXRsZT4KKyAgICAgICAgPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSJub2RlX21vZHVsZXMvdG9kb212Yy1jb21tb24vYmFzZS5jc3MiPgorICAg
ICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Im5vZGVfbW9kdWxlcy90b2RvbXZjLWFw
cC1jc3MvaW5kZXguY3NzIj4KKyAgICAgICAgPHN0eWxlPltuZy1jbG9ha10geyBkaXNwbGF5OiBu
b25lOyB9PC9zdHlsZT4KICAgICA8L2hlYWQ+Ci0gICAgPGJvZHk+Ci0gICAgPHNlY3Rpb24gaWQ9
InRvZG9hcHAiIG5nLWNvbnRyb2xsZXI9IlRvZG9DdHJsIj4KLSAgICA8aGVhZGVyIGlkPSJoZWFk
ZXIiPgotICAgIDxoMT50b2RvczwvaDE+Ci0gICAgPGZvcm0gaWQ9InRvZG8tZm9ybSIgbmctc3Vi
bWl0PSJhZGRUb2RvKCkiPgotICAgIDxpbnB1dCBpZD0ibmV3LXRvZG8iIHBsYWNlaG9sZGVyPSJX
aGF0IG5lZWRzIHRvIGJlIGRvbmU/IiBuZy1tb2RlbD0ibmV3VG9kbyIgYXV0b2ZvY3VzPgotICAg
IDwvZm9ybT4KLSAgICA8L2hlYWRlcj4KLSAgICA8c2VjdGlvbiBpZD0ibWFpbiIgbmctc2hvdz0i
dG9kb3MubGVuZ3RoIiBuZy1jbG9haz4KLSAgICA8aW5wdXQgaWQ9InRvZ2dsZS1hbGwiIHR5cGU9
ImNoZWNrYm94IiBuZy1tb2RlbD0iYWxsQ2hlY2tlZCIgbmctY2xpY2s9Im1hcmtBbGwoYWxsQ2hl
Y2tlZCkiPgotICAgIDxsYWJlbCBmb3I9InRvZ2dsZS1hbGwiPk1hcmsgYWxsIGFzIGNvbXBsZXRl
PC9sYWJlbD4KLSAgICA8dWwgaWQ9InRvZG8tbGlzdCI+Ci0gICAgPGxpIG5nLXJlcGVhdD0idG9k
byBpbiB0b2RvcyB8IGZpbHRlcjpzdGF0dXNGaWx0ZXIiIG5nLWNsYXNzPSJ7Y29tcGxldGVkOiB0
b2RvLmNvbXBsZXRlZCwgZWRpdGluZzogdG9kbyA9PSBlZGl0ZWRUb2RvfSI+Ci0gICAgPGRpdiBj
bGFzcz0idmlldyI+Ci0gICAgPGlucHV0IGNsYXNzPSJ0b2dnbGUiIHR5cGU9ImNoZWNrYm94IiBu
Zy1tb2RlbD0idG9kby5jb21wbGV0ZWQiPgotICAgIDxsYWJlbCBuZy1kYmxjbGljaz0iZWRpdFRv
ZG8odG9kbykiPnt7dG9kby50aXRsZX19PC9sYWJlbD4KLSAgICA8YnV0dG9uIGNsYXNzPSJkZXN0
cm95IiBuZy1jbGljaz0icmVtb3ZlVG9kbyh0b2RvKSI+PC9idXR0b24+Ci0gICAgPC9kaXY+Ci0g
ICAgPGZvcm0gbmctc3VibWl0PSJkb25lRWRpdGluZyh0b2RvKSI+Ci0gICAgPGlucHV0IGNsYXNz
PSJlZGl0IiBuZy1tb2RlbD0idG9kby50aXRsZSIgdG9kby1lc2NhcGU9InJldmVydEVkaXRpbmco
dG9kbykiIHRvZG8tYmx1cj0iZG9uZUVkaXRpbmcodG9kbykiIHRvZG8tZm9jdXM9InRvZG8gPT0g
ZWRpdGVkVG9kbyI+Ci0gICAgPC9mb3JtPgotICAgIDwvbGk+Ci0gICAgPC91bD4KLSAgICA8L3Nl
Y3Rpb24+Ci0gICAgPGZvb3RlciBpZD0iZm9vdGVyIiBuZy1zaG93PSJ0b2Rvcy5sZW5ndGgiIG5n
LWNsb2FrPgotICAgIDxzcGFuIGlkPSJ0b2RvLWNvdW50Ij48c3Ryb25nPnt7cmVtYWluaW5nQ291
bnR9fTwvc3Ryb25nPgotICAgIDxuZy1wbHVyYWxpemUgY291bnQ9InJlbWFpbmluZ0NvdW50IiB3
aGVuPSJ7IG9uZTogJ2l0ZW0gbGVmdCcsIG90aGVyOiAnaXRlbXMgbGVmdCcgfSI+PC9uZy1wbHVy
YWxpemU+Ci0gICAgPC9zcGFuPgotICAgIDx1bCBpZD0iZmlsdGVycyI+Ci0gICAgPGxpPgotICAg
IDxhIG5nLWNsYXNzPSJ7c2VsZWN0ZWQ6IGxvY2F0aW9uLnBhdGgoKSA9PSAnLyd9ICIgaHJlZj0i
Iy8iPkFsbDwvYT4KLSAgICA8L2xpPgotICAgIDxsaT4KLSAgICA8YSBuZy1jbGFzcz0ie3NlbGVj
dGVkOiBsb2NhdGlvbi5wYXRoKCkgPT0gJy9hY3RpdmUnfSIgaHJlZj0iIy9hY3RpdmUiPkFjdGl2
ZTwvYT4KLSAgICA8L2xpPgotICAgIDxsaT4KLSAgICA8YSBuZy1jbGFzcz0ie3NlbGVjdGVkOiBs
b2NhdGlvbi5wYXRoKCkgPT0gJy9jb21wbGV0ZWQnfSIgaHJlZj0iIy9jb21wbGV0ZWQiPkNvbXBs
ZXRlZDwvYT4KLSAgICA8L2xpPgotICAgIDwvdWw+Ci0gICAgPGJ1dHRvbiBpZD0iY2xlYXItY29t
cGxldGVkIiBuZy1jbGljaz0iY2xlYXJDb21wbGV0ZWRUb2RvcygpIiBuZy1zaG93PSJjb21wbGV0
ZWRDb3VudCI+Q2xlYXIgY29tcGxldGVkICh7e2NvbXBsZXRlZENvdW50fX0pPC9idXR0b24+Ci0g
ICAgPC9mb290ZXI+Ci0gICAgPC9zZWN0aW9uPgotICAgIDxmb290ZXIgaWQ9ImluZm8iPgotICAg
IDxwPkRvdWJsZS1jbGljayB0byBlZGl0IGEgdG9kbzwvcD4KLSAgICA8cD5DcmVkaXRzOgotICAg
IDxhIGhyZWY9Imh0dHA6Ly90d2l0dGVyLmNvbS9jYnVyZ2RvcmYiPkNocmlzdG9waCBCdXJnZG9y
ZjwvYT4sCi0gICAgPGEgaHJlZj0iaHR0cDovL2VyaWNiaWRlbG1hbi5jb20iPkVyaWMgQmlkZWxt
YW48L2E+LAotICAgIDxhIGhyZWY9Imh0dHA6Ly9qYWNvYm11bW0uY29tIj5KYWNvYiBNdW1tPC9h
PiBhbmQKLSAgICA8YSBocmVmPSJodHRwOi8vaWdvcm1pbmFyLmNvbSI+SWdvciBNaW5hcjwvYT4K
LSAgICA8L3A+Ci0gICAgPHA+UGFydCBvZiA8YSBocmVmPSJodHRwOi8vdG9kb212Yy5jb20iPlRv
ZG9NVkM8L2E+PC9wPgotICAgIDwvZm9vdGVyPgotICAgIDxzY3JpcHQgc3JjPSJib3dlcl9jb21w
b25lbnRzL3RvZG9tdmMtY29tbW9uL2Jhc2UuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3Jj
PSJib3dlcl9jb21wb25lbnRzL2FuZ3VsYXIvYW5ndWxhci5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNj
cmlwdCBzcmM9ImpzL2FwcC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9ImpzL2NvbnRy
b2xsZXJzL3RvZG9DdHJsLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0ianMvc2Vydmlj
ZXMvdG9kb1N0b3JhZ2UuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJqcy9kaXJlY3Rp
dmVzL3RvZG9Gb2N1cy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9ImpzL2RpcmVjdGl2
ZXMvdG9kb0JsdXIuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJqcy9kaXJlY3RpdmVz
L3RvZG9Fc2NhcGUuanMiPjwvc2NyaXB0PgorICAgIDxib2R5IG5nLWFwcD0idG9kb212YyI+Cisg
ICAgICAgIDxuZy12aWV3IC8+CisgICAgICAgIDxzY3JpcHQgc3JjPSJub2RlX21vZHVsZXMvYW5n
dWxhci9hbmd1bGFyLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Im5vZGVfbW9k
dWxlcy9hbmd1bGFyLXJvdXRlL2FuZ3VsYXItcm91dGUuanMiPjwvc2NyaXB0PgorICAgICAgICA8
c2NyaXB0IHNyYz0ibm9kZV9tb2R1bGVzL2FuZ3VsYXItcmVzb3VyY2UvYW5ndWxhci1yZXNvdXJj
ZS5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSJqcy9hcHAuanMiPjwvc2NyaXB0
PgorICAgICAgICA8c2NyaXB0IHNyYz0ianMvY29udHJvbGxlcnMvdG9kb0N0cmwuanMiPjwvc2Ny
aXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0ianMvc2VydmljZXMvdG9kb1N0b3JhZ2UuanMiPjwv
c2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0ianMvZGlyZWN0aXZlcy90b2RvRm9jdXMuanMi
Pjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0ianMvZGlyZWN0aXZlcy90b2RvRXNjYXBl
LmpzIj48L3NjcmlwdD4KICAgICA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9hbmd1bGFyanMvanMvYXBwLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL2pzL2FwcC5q
cwppbmRleCA4MjNmZTc5ODMxNDkxY2Q1ZjAxNjUwZTcxOTdjODQ1MTc2ZjEwYjQ5Li41ZjMwZWEz
YTExOTk1MTA5ODQ1MGE1NmRhZDk3MWVhNDExMjljZGEyIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9hbmd1bGFyanMvanMvYXBwLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9qcy9hcHAu
anMKQEAgLTEsMTAgKzEsMzIgQEAKIC8qZ2xvYmFsIGFuZ3VsYXIgKi8KLS8qanNoaW50IHVudXNl
ZDpmYWxzZSAqLwotJ3VzZSBzdHJpY3QnOwogCiAvKioKICAqIFRoZSBtYWluIFRvZG9NVkMgYXBw
IG1vZHVsZQogICoKICAqIEB0eXBlIHthbmd1bGFyLk1vZHVsZX0KICAqLwotdmFyIHRvZG9tdmMg
PSBhbmd1bGFyLm1vZHVsZSgndG9kb212YycsIFtdKTsKK2FuZ3VsYXIubW9kdWxlKCd0b2RvbXZj
JywgWyduZ1JvdXRlJywgJ25nUmVzb3VyY2UnXSkKKyAgICAuY29uZmlnKGZ1bmN0aW9uICgkcm91
dGVQcm92aWRlcikgeworICAgICAgICAndXNlIHN0cmljdCc7CisKKyAgICAgICAgdmFyIHJvdXRl
Q29uZmlnID0geworICAgICAgICAgICAgY29udHJvbGxlcjogJ1RvZG9DdHJsJywKKyAgICAgICAg
ICAgIHRlbXBsYXRlVXJsOiAndG9kb212Yy1pbmRleC5odG1sJywKKyAgICAgICAgICAgIHJlc29s
dmU6IHsKKyAgICAgICAgICAgICAgICBzdG9yZTogZnVuY3Rpb24gKHRvZG9TdG9yYWdlKSB7Cisg
ICAgICAgICAgICAgICAgICAgIC8vIEdldCB0aGUgY29ycmVjdCBtb2R1bGUgKEFQSSBvciBsb2Nh
bFN0b3JhZ2UpLgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG9kb1N0b3JhZ2UudGhlbihm
dW5jdGlvbiAobW9kdWxlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUuZ2V0KCk7
IC8vIEZldGNoIHRoZSB0b2RvIHJlY29yZHMgaW4gdGhlIGJhY2tncm91bmQuCisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gbW9kdWxlOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgJHJv
dXRlUHJvdmlkZXIKKyAgICAgICAgICAgIC53aGVuKCcvJywgcm91dGVDb25maWcpCisgICAgICAg
ICAgICAud2hlbignLzpzdGF0dXMnLCByb3V0ZUNvbmZpZykKKyAgICAgICAgICAgIC5vdGhlcndp
c2UoeworICAgICAgICAgICAgICAgIHJlZGlyZWN0VG86ICcvJworICAgICAgICAgICAgfSk7Cisg
ICAgfSk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvanMvY29udHJvbGxlcnMv
dG9kb0N0cmwuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvanMvY29udHJvbGxlcnMvdG9kb0N0
cmwuanMKaW5kZXggNDkwYTJmNWM5NTNlODc0MGI4MmUyYWYzYWE3ZmQ2Nzg2ZTdlODJkMC4uYTM5
ZDVhZWM4YzI0MzQxZGIwMzZjZTBhNTBjNDE2ZTEyMjcyZjVmYSAxMDA2NDQKLS0tIGEvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvYW5ndWxhcmpzL2pzL2NvbnRyb2xsZXJzL3RvZG9DdHJsLmpzCisrKyBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2FuZ3VsYXJqcy9qcy9jb250cm9sbGVycy90b2RvQ3RybC5qcwpAQCAtMSw4NSArMSwxMjYg
QEAKLS8qZ2xvYmFsIHRvZG9tdmMsIGFuZ3VsYXIgKi8KLSd1c2Ugc3RyaWN0JzsKKy8qZ2xvYmFs
IGFuZ3VsYXIgKi8KIAogLyoqCiAgKiBUaGUgbWFpbiBjb250cm9sbGVyIGZvciB0aGUgYXBwLiBU
aGUgY29udHJvbGxlcjoKICAqIC0gcmV0cmlldmVzIGFuZCBwZXJzaXN0cyB0aGUgbW9kZWwgdmlh
IHRoZSB0b2RvU3RvcmFnZSBzZXJ2aWNlCiAgKiAtIGV4cG9zZXMgdGhlIG1vZGVsIHRvIHRoZSB0
ZW1wbGF0ZSBhbmQgcHJvdmlkZXMgZXZlbnQgaGFuZGxlcnMKICAqLwotdG9kb212Yy5jb250cm9s
bGVyKCdUb2RvQ3RybCcsIGZ1bmN0aW9uIFRvZG9DdHJsKCRzY29wZSwgJGxvY2F0aW9uLCB0b2Rv
U3RvcmFnZSwgZmlsdGVyRmlsdGVyKSB7Ci0gICAgdmFyIHRvZG9zID0gJHNjb3BlLnRvZG9zID0g
dG9kb1N0b3JhZ2UuZ2V0KCk7Ci0KLSAgICAkc2NvcGUubmV3VG9kbyA9ICcnOwotICAgICRzY29w
ZS5lZGl0ZWRUb2RvID0gbnVsbDsKLQotICAgICRzY29wZS4kd2F0Y2goJ3RvZG9zJywgZnVuY3Rp
b24gKG5ld1ZhbHVlLCBvbGRWYWx1ZSkgewotICAgICRzY29wZS5yZW1haW5pbmdDb3VudCA9IGZp
bHRlckZpbHRlcih0b2RvcywgeyBjb21wbGV0ZWQ6IGZhbHNlIH0pLmxlbmd0aDsKLSAgICAkc2Nv
cGUuY29tcGxldGVkQ291bnQgPSB0b2Rvcy5sZW5ndGggLSAkc2NvcGUucmVtYWluaW5nQ291bnQ7
Ci0gICAgJHNjb3BlLmFsbENoZWNrZWQgPSAhJHNjb3BlLnJlbWFpbmluZ0NvdW50OwotICAgIGlm
IChuZXdWYWx1ZSAhPT0gb2xkVmFsdWUpIHsgLy8gVGhpcyBwcmV2ZW50cyB1bm5lZWRlZCBjYWxs
cyB0byB0aGUgbG9jYWwgc3RvcmFnZQotICAgIHRvZG9TdG9yYWdlLnB1dCh0b2Rvcyk7Ci0gICAg
fQotICAgIH0sIHRydWUpOwotCi0gICAgaWYgKCRsb2NhdGlvbi5wYXRoKCkgPT09ICcnKSB7Ci0g
ICAgJGxvY2F0aW9uLnBhdGgoJy8nKTsKLSAgICB9Ci0KLSAgICAkc2NvcGUubG9jYXRpb24gPSAk
bG9jYXRpb247Ci0KLSAgICAkc2NvcGUuJHdhdGNoKCdsb2NhdGlvbi5wYXRoKCknLCBmdW5jdGlv
biAocGF0aCkgewotICAgICRzY29wZS5zdGF0dXNGaWx0ZXIgPSAocGF0aCA9PT0gJy9hY3RpdmUn
KSA/Ci0gICAgeyBjb21wbGV0ZWQ6IGZhbHNlIH0gOiAocGF0aCA9PT0gJy9jb21wbGV0ZWQnKSA/
Ci0gICAgeyBjb21wbGV0ZWQ6IHRydWUgfSA6IG51bGw7Cithbmd1bGFyLm1vZHVsZSgndG9kb212
YycpCisgICAgLmNvbnRyb2xsZXIoJ1RvZG9DdHJsJywgZnVuY3Rpb24gVG9kb0N0cmwoJHNjb3Bl
LCAkcm91dGVQYXJhbXMsICRmaWx0ZXIsIHN0b3JlKSB7CisgICAgICAgICd1c2Ugc3RyaWN0JzsK
KworICAgICAgICB2YXIgdG9kb3MgPSAkc2NvcGUudG9kb3MgPSBzdG9yZS50b2RvczsKKworICAg
ICAgICAkc2NvcGUubmV3VG9kbyA9ICcnOworICAgICAgICAkc2NvcGUuZWRpdGVkVG9kbyA9IG51
bGw7CisgICAgICAgICRzY29wZS5zdGF0dXMgPSAnJzsKKworICAgICAgICAkc2NvcGUuJHdhdGNo
KCd0b2RvcycsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICRzY29wZS5yZW1haW5pbmdDb3Vu
dCA9ICRmaWx0ZXIoJ2ZpbHRlcicpKHRvZG9zLCB7IGNvbXBsZXRlZDogZmFsc2UgfSkubGVuZ3Ro
OworICAgICAgICAgICAgJHNjb3BlLmNvbXBsZXRlZENvdW50ID0gdG9kb3MubGVuZ3RoIC0gJHNj
b3BlLnJlbWFpbmluZ0NvdW50OworICAgICAgICAgICAgJHNjb3BlLmFsbENoZWNrZWQgPSAhJHNj
b3BlLnJlbWFpbmluZ0NvdW50OworICAgICAgICB9LCB0cnVlKTsKKworICAgICAgICAvLyBNb25p
dG9yIHRoZSBjdXJyZW50IHJvdXRlIGZvciBjaGFuZ2VzIGFuZCBhZGp1c3QgdGhlIGZpbHRlciBh
Y2NvcmRpbmdseS4KKyAgICAgICAgJHNjb3BlLiRvbignJHJvdXRlQ2hhbmdlU3VjY2VzcycsIGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHZhciBzdGF0dXMgPSAkc2NvcGUuc3RhdHVzID0gJHJv
dXRlUGFyYW1zLnN0YXR1cyB8fCAnJzsKKyAgICAgICAgICAgICRzY29wZS5zdGF0dXNGaWx0ZXIg
PSAoc3RhdHVzID09PSAnYWN0aXZlJykgPworICAgICAgICAgICAgICAgIHsgY29tcGxldGVkOiBm
YWxzZSB9IDogKHN0YXR1cyA9PT0gJ2NvbXBsZXRlZCcpID8KKyAgICAgICAgICAgICAgICB7IGNv
bXBsZXRlZDogdHJ1ZSB9IDoge307CisgICAgICAgIH0pOworCisgICAgICAgICRzY29wZS5hZGRU
b2RvID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdmFyIG5ld1RvZG8gPSB7CisgICAgICAg
ICAgICAgICAgdGl0bGU6ICRzY29wZS5uZXdUb2RvLnRyaW0oKSwKKyAgICAgICAgICAgICAgICBj
b21wbGV0ZWQ6IGZhbHNlCisgICAgICAgICAgICB9OworCisgICAgICAgICAgICBpZiAoIW5ld1Rv
ZG8udGl0bGUpIHsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICRzY29wZS5zYXZpbmcgPSB0cnVlOworICAgICAgICAgICAgc3RvcmUuaW5zZXJ0
KG5ld1RvZG8pCisgICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gc3VjY2VzcygpIHsKKyAg
ICAgICAgICAgICAgICAgICAgJHNjb3BlLm5ld1RvZG8gPSAnJzsKKyAgICAgICAgICAgICAgICB9
KQorICAgICAgICAgICAgICAgIC5maW5hbGx5KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAg
ICAgICAgJHNjb3BlLnNhdmluZyA9IGZhbHNlOworICAgICAgICAgICAgICAgIH0pOworICAgICAg
ICB9OworCisgICAgICAgICRzY29wZS5lZGl0VG9kbyA9IGZ1bmN0aW9uICh0b2RvKSB7CisgICAg
ICAgICAgICAkc2NvcGUuZWRpdGVkVG9kbyA9IHRvZG87CisgICAgICAgICAgICAvLyBDbG9uZSB0
aGUgb3JpZ2luYWwgdG9kbyB0byByZXN0b3JlIGl0IG9uIGRlbWFuZC4KKyAgICAgICAgICAgICRz
Y29wZS5vcmlnaW5hbFRvZG8gPSBhbmd1bGFyLmV4dGVuZCh7fSwgdG9kbyk7CisgICAgICAgIH07
CisKKyAgICAgICAgJHNjb3BlLnNhdmVFZGl0cyA9IGZ1bmN0aW9uICh0b2RvLCBldmVudCkgewor
ICAgICAgICAgICAgLy8gQmx1ciBldmVudHMgYXJlIGF1dG9tYXRpY2FsbHkgdHJpZ2dlcmVkIGFm
dGVyIHRoZSBmb3JtIHN1Ym1pdCBldmVudC4KKyAgICAgICAgICAgIC8vIFRoaXMgZG9lcyBzb21l
IHVuZm9ydHVuYXRlIGxvZ2ljIGhhbmRsaW5nIHRvIHByZXZlbnQgc2F2aW5nIHR3aWNlLgorICAg
ICAgICAgICAgaWYgKGV2ZW50ID09PSAnYmx1cicgJiYgJHNjb3BlLnNhdmVFdmVudCA9PT0gJ3N1
Ym1pdCcpIHsKKyAgICAgICAgICAgICAgICAkc2NvcGUuc2F2ZUV2ZW50ID0gbnVsbDsKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICRzY29wZS5z
YXZlRXZlbnQgPSBldmVudDsKKworICAgICAgICAgICAgaWYgKCRzY29wZS5yZXZlcnRlZCkgewor
ICAgICAgICAgICAgICAgIC8vIFRvZG8gZWRpdHMgd2VyZSByZXZlcnRlZC0tIGRvbid0IHNhdmUu
CisgICAgICAgICAgICAgICAgJHNjb3BlLnJldmVydGVkID0gbnVsbDsKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRvZG8udGl0bGUgPSB0b2Rv
LnRpdGxlLnRyaW0oKTsKKworICAgICAgICAgICAgaWYgKHRvZG8udGl0bGUgPT09ICRzY29wZS5v
cmlnaW5hbFRvZG8udGl0bGUpIHsKKyAgICAgICAgICAgICAgICAkc2NvcGUuZWRpdGVkVG9kbyA9
IG51bGw7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBzdG9yZVt0b2RvLnRpdGxlID8gJ3B1dCcgOiAnZGVsZXRlJ10odG9kbykKKyAgICAgICAg
ICAgICAgICAudGhlbihmdW5jdGlvbiBzdWNjZXNzKCkge30sIGZ1bmN0aW9uIGVycm9yKCkgewor
ICAgICAgICAgICAgICAgICAgICB0b2RvLnRpdGxlID0gJHNjb3BlLm9yaWdpbmFsVG9kby50aXRs
ZTsKKyAgICAgICAgICAgICAgICB9KQorICAgICAgICAgICAgICAgIC5maW5hbGx5KGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmVkaXRlZFRvZG8gPSBudWxsOworICAg
ICAgICAgICAgICAgIH0pOworICAgICAgICB9OworCisgICAgICAgICRzY29wZS5yZXZlcnRFZGl0
cyA9IGZ1bmN0aW9uICh0b2RvKSB7CisgICAgICAgICAgICB0b2Rvc1t0b2Rvcy5pbmRleE9mKHRv
ZG8pXSA9ICRzY29wZS5vcmlnaW5hbFRvZG87CisgICAgICAgICAgICAkc2NvcGUuZWRpdGVkVG9k
byA9IG51bGw7CisgICAgICAgICAgICAkc2NvcGUub3JpZ2luYWxUb2RvID0gbnVsbDsKKyAgICAg
ICAgICAgICRzY29wZS5yZXZlcnRlZCA9IHRydWU7CisgICAgICAgIH07CisKKyAgICAgICAgJHNj
b3BlLnJlbW92ZVRvZG8gPSBmdW5jdGlvbiAodG9kbykgeworICAgICAgICAgICAgc3RvcmUuZGVs
ZXRlKHRvZG8pOworICAgICAgICB9OworCisgICAgICAgICRzY29wZS5zYXZlVG9kbyA9IGZ1bmN0
aW9uICh0b2RvKSB7CisgICAgICAgICAgICBzdG9yZS5wdXQodG9kbyk7CisgICAgICAgIH07CisK
KyAgICAgICAgJHNjb3BlLnRvZ2dsZUNvbXBsZXRlZCA9IGZ1bmN0aW9uICh0b2RvLCBjb21wbGV0
ZWQpIHsKKyAgICAgICAgICAgIGlmIChhbmd1bGFyLmlzRGVmaW5lZChjb21wbGV0ZWQpKSB7Cisg
ICAgICAgICAgICAgICAgdG9kby5jb21wbGV0ZWQgPSBjb21wbGV0ZWQ7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBzdG9yZS5wdXQodG9kbywgdG9kb3MuaW5kZXhPZih0b2RvKSkKKyAgICAg
ICAgICAgICAgICAudGhlbihmdW5jdGlvbiBzdWNjZXNzKCkge30sIGZ1bmN0aW9uIGVycm9yKCkg
eworICAgICAgICAgICAgICAgICAgICB0b2RvLmNvbXBsZXRlZCA9ICF0b2RvLmNvbXBsZXRlZDsK
KyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgfTsKKworICAgICAgICAkc2NvcGUuY2xlYXJD
b21wbGV0ZWRUb2RvcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHN0b3JlLmNsZWFyQ29t
cGxldGVkKCk7CisgICAgICAgIH07CisKKyAgICAgICAgJHNjb3BlLm1hcmtBbGwgPSBmdW5jdGlv
biAoY29tcGxldGVkKSB7CisgICAgICAgICAgICB0b2Rvcy5mb3JFYWNoKGZ1bmN0aW9uICh0b2Rv
KSB7CisgICAgICAgICAgICAgICAgaWYgKHRvZG8uY29tcGxldGVkICE9PSBjb21wbGV0ZWQpIHsK
KyAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnRvZ2dsZUNvbXBsZXRlZCh0b2RvLCBjb21wbGV0
ZWQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0pOworICAgICAgICB9OwogICAg
IH0pOwotCi0gICAgJHNjb3BlLmFkZFRvZG8gPSBmdW5jdGlvbiAoKSB7Ci0gICAgdmFyIG5ld1Rv
ZG8gPSAkc2NvcGUubmV3VG9kby50cmltKCk7Ci0gICAgaWYgKCFuZXdUb2RvLmxlbmd0aCkgewot
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICB0b2Rvcy5wdXNoKHsKLSAgICB0aXRsZTogbmV3VG9k
bywKLSAgICBjb21wbGV0ZWQ6IGZhbHNlCi0gICAgfSk7Ci0KLSAgICAkc2NvcGUubmV3VG9kbyA9
ICcnOwotICAgIH07Ci0KLSAgICAkc2NvcGUuZWRpdFRvZG8gPSBmdW5jdGlvbiAodG9kbykgewot
ICAgICRzY29wZS5lZGl0ZWRUb2RvID0gdG9kbzsKLSAgICAvLyBDbG9uZSB0aGUgb3JpZ2luYWwg
dG9kbyB0byByZXN0b3JlIGl0IG9uIGRlbWFuZC4KLSAgICAkc2NvcGUub3JpZ2luYWxUb2RvID0g
YW5ndWxhci5leHRlbmQoe30sIHRvZG8pOwotICAgIH07Ci0KLSAgICAkc2NvcGUuZG9uZUVkaXRp
bmcgPSBmdW5jdGlvbiAodG9kbykgewotICAgICRzY29wZS5lZGl0ZWRUb2RvID0gbnVsbDsKLSAg
ICB0b2RvLnRpdGxlID0gdG9kby50aXRsZS50cmltKCk7Ci0KLSAgICBpZiAoIXRvZG8udGl0bGUp
IHsKLSAgICAkc2NvcGUucmVtb3ZlVG9kbyh0b2RvKTsKLSAgICB9Ci0gICAgfTsKLQotICAgICRz
Y29wZS5yZXZlcnRFZGl0aW5nID0gZnVuY3Rpb24gKHRvZG8pIHsKLSAgICB0b2Rvc1t0b2Rvcy5p
bmRleE9mKHRvZG8pXSA9ICRzY29wZS5vcmlnaW5hbFRvZG87Ci0gICAgJHNjb3BlLmRvbmVFZGl0
aW5nKCRzY29wZS5vcmlnaW5hbFRvZG8pOwotICAgIH07Ci0KLSAgICAkc2NvcGUucmVtb3ZlVG9k
byA9IGZ1bmN0aW9uICh0b2RvKSB7Ci0gICAgdG9kb3Muc3BsaWNlKHRvZG9zLmluZGV4T2YodG9k
byksIDEpOwotICAgIH07Ci0KLSAgICAkc2NvcGUuY2xlYXJDb21wbGV0ZWRUb2RvcyA9IGZ1bmN0
aW9uICgpIHsKLSAgICAkc2NvcGUudG9kb3MgPSB0b2RvcyA9IHRvZG9zLmZpbHRlcihmdW5jdGlv
biAodmFsKSB7Ci0gICAgcmV0dXJuICF2YWwuY29tcGxldGVkOwotICAgIH0pOwotICAgIH07Ci0K
LSAgICAkc2NvcGUubWFya0FsbCA9IGZ1bmN0aW9uIChjb21wbGV0ZWQpIHsKLSAgICB0b2Rvcy5m
b3JFYWNoKGZ1bmN0aW9uICh0b2RvKSB7Ci0gICAgdG9kby5jb21wbGV0ZWQgPSBjb21wbGV0ZWQ7
Ci0gICAgfSk7Ci0gICAgfTsKLX0pOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpz
L2pzL2RpcmVjdGl2ZXMvdG9kb0JsdXIuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvanMvZGly
ZWN0aXZlcy90b2RvQmx1ci5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjhlMDMw
YWZiZTQ1YjA3NDYxNDVkNTdjOTIxOGZkYjhhNTY4MThkZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvanMvZGlyZWN0
aXZlcy90b2RvQmx1ci5qcworKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLS8qZ2xvYmFs
IHRvZG9tdmMgKi8KLSd1c2Ugc3RyaWN0JzsKLQotLyoqCi0gKiBEaXJlY3RpdmUgdGhhdCBleGVj
dXRlcyBhbiBleHByZXNzaW9uIHdoZW4gdGhlIGVsZW1lbnQgaXQgaXMgYXBwbGllZCB0byBsb3Nl
cyBmb2N1cwotICovCi10b2RvbXZjLmRpcmVjdGl2ZSgndG9kb0JsdXInLCBmdW5jdGlvbiAoKSB7
Ci0gICAgcmV0dXJuIGZ1bmN0aW9uIChzY29wZSwgZWxlbSwgYXR0cnMpIHsKLSAgICBlbGVtLmJp
bmQoJ2JsdXInLCBmdW5jdGlvbiAoKSB7Ci0gICAgc2NvcGUuJGFwcGx5KGF0dHJzLnRvZG9CbHVy
KTsKLSAgICB9KTsKLSAgICB9OwotfSk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFy
anMvanMvZGlyZWN0aXZlcy90b2RvRXNjYXBlLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL2pz
L2RpcmVjdGl2ZXMvdG9kb0VzY2FwZS5qcwppbmRleCBlZDE1ZmVjMGNmZjYxOWExOTI4YWEzNmJj
MjhjZTEzNjhhMWI1ZTZmLi45NDRiNTJjNWYzNWI3NzI2OWI5N2NkNjZkMGE4YzFkNTlhOTkyMjlj
IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvanMvZGlyZWN0aXZlcy90b2RvRXNj
YXBlLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9qcy9kaXJlY3RpdmVzL3RvZG9Fc2Nh
cGUuanMKQEAgLTEsMTggKzEsMjQgQEAKLS8qZ2xvYmFsIHRvZG9tdmMgKi8KLSd1c2Ugc3RyaWN0
JzsKKy8qZ2xvYmFsIGFuZ3VsYXIgKi8KIAogLyoqCiAgKiBEaXJlY3RpdmUgdGhhdCBleGVjdXRl
cyBhbiBleHByZXNzaW9uIHdoZW4gdGhlIGVsZW1lbnQgaXQgaXMgYXBwbGllZCB0byBnZXRzCiAg
KiBhbiBgZXNjYXBlYCBrZXlkb3duIGV2ZW50LgogICovCi10b2RvbXZjLmRpcmVjdGl2ZSgndG9k
b0VzY2FwZScsIGZ1bmN0aW9uICgpIHsKLSAgICB2YXIgRVNDQVBFX0tFWSA9IDI3OwotICAgIHJl
dHVybiBmdW5jdGlvbiAoc2NvcGUsIGVsZW0sIGF0dHJzKSB7Ci0gICAgZWxlbS5iaW5kKCdrZXlk
b3duJywgZnVuY3Rpb24gKGV2ZW50KSB7Ci0gICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IEVTQ0FQ
RV9LRVkpIHsKLSAgICBzY29wZS4kYXBwbHkoYXR0cnMudG9kb0VzY2FwZSk7Ci0gICAgfQotICAg
IH0pOwotICAgIH07Ci19KTsKK2FuZ3VsYXIubW9kdWxlKCd0b2RvbXZjJykKKyAgICAuZGlyZWN0
aXZlKCd0b2RvRXNjYXBlJywgZnVuY3Rpb24gKCkgeworICAgICAgICAndXNlIHN0cmljdCc7CisK
KyAgICAgICAgdmFyIEVTQ0FQRV9LRVkgPSAyNzsKIAorICAgICAgICByZXR1cm4gZnVuY3Rpb24g
KHNjb3BlLCBlbGVtLCBhdHRycykgeworICAgICAgICAgICAgZWxlbS5iaW5kKCdrZXlkb3duJywg
ZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09
IEVTQ0FQRV9LRVkpIHsKKyAgICAgICAgICAgICAgICAgICAgc2NvcGUuJGFwcGx5KGF0dHJzLnRv
ZG9Fc2NhcGUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0pOworCisgICAgICAg
ICAgICBzY29wZS4kb24oJyRkZXN0cm95JywgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAg
IGVsZW0udW5iaW5kKCdrZXlkb3duJyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfTsKKyAg
ICB9KTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9qcy9kaXJlY3RpdmVzL3Rv
ZG9Gb2N1cy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9qcy9kaXJlY3RpdmVzL3RvZG9Gb2N1
cy5qcwppbmRleCA3YzlkYzA5NThlNzYyMDU1ZDA0Y2E0YWM0NThmNjM0YzRmZTYzODU3Li5lMWU2
YzIxYzkwMGU2MmExNGJjZmI1NmY1YTI1Yjg3YzRjOTZiOWYyIDEwMDY0NAotLS0gYS9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9hbmd1bGFyanMvanMvZGlyZWN0aXZlcy90b2RvRm9jdXMuanMKKysrIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvYW5ndWxhcmpzL2pzL2RpcmVjdGl2ZXMvdG9kb0ZvY3VzLmpzCkBAIC0xLDE3ICsxLDIwIEBA
Ci0vKmdsb2JhbCB0b2RvbXZjICovCi0ndXNlIHN0cmljdCc7CisvKmdsb2JhbCBhbmd1bGFyICov
CiAKIC8qKgotICogRGlyZWN0aXZlIHRoYXQgcGxhY2VzIGZvY3VzIG9uIHRoZSBlbGVtZW50IGl0
IGlzIGFwcGxpZWQgdG8gd2hlbiB0aGUgZXhwcmVzc2lvbiBpdCBiaW5kcyB0byBldmFsdWF0ZXMg
dG8gdHJ1ZQorICogRGlyZWN0aXZlIHRoYXQgcGxhY2VzIGZvY3VzIG9uIHRoZSBlbGVtZW50IGl0
IGlzIGFwcGxpZWQgdG8gd2hlbiB0aGUKKyAqIGV4cHJlc3Npb24gaXQgYmluZHMgdG8gZXZhbHVh
dGVzIHRvIHRydWUKICAqLwotdG9kb212Yy5kaXJlY3RpdmUoJ3RvZG9Gb2N1cycsIGZ1bmN0aW9u
IHRvZG9Gb2N1cygkdGltZW91dCkgewotICAgIHJldHVybiBmdW5jdGlvbiAoc2NvcGUsIGVsZW0s
IGF0dHJzKSB7Ci0gICAgc2NvcGUuJHdhdGNoKGF0dHJzLnRvZG9Gb2N1cywgZnVuY3Rpb24gKG5l
d1ZhbCkgewotICAgIGlmIChuZXdWYWwpIHsKLSAgICAkdGltZW91dChmdW5jdGlvbiAoKSB7Ci0g
ICAgZWxlbVswXS5mb2N1cygpOwotICAgIH0sIDAsIGZhbHNlKTsKLSAgICB9Cithbmd1bGFyLm1v
ZHVsZSgndG9kb212YycpCisgICAgLmRpcmVjdGl2ZSgndG9kb0ZvY3VzJywgZnVuY3Rpb24gdG9k
b0ZvY3VzKCR0aW1lb3V0KSB7CisgICAgICAgICd1c2Ugc3RyaWN0JzsKKworICAgICAgICByZXR1
cm4gZnVuY3Rpb24gKHNjb3BlLCBlbGVtLCBhdHRycykgeworICAgICAgICAgICAgc2NvcGUuJHdh
dGNoKGF0dHJzLnRvZG9Gb2N1cywgZnVuY3Rpb24gKG5ld1ZhbCkgeworICAgICAgICAgICAgICAg
IGlmIChuZXdWYWwpIHsKKyAgICAgICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgICAgICAgICAgICAgZWxlbVswXS5mb2N1cygpOworICAgICAgICAgICAg
ICAgICAgICB9LCAwLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSk7
CisgICAgICAgIH07CiAgICAgfSk7Ci0gICAgfTsKLX0pOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvYW5ndWxhcmpzL2pzL3NlcnZpY2VzL3RvZG9TdG9yYWdlLmpzIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5n
dWxhcmpzL2pzL3NlcnZpY2VzL3RvZG9TdG9yYWdlLmpzCmluZGV4IDc2N2I3YjIyZWQzYzE0ZTE4
NzI1NjNjNDg5MDg1ZTg1NmU1ODFmZmYuLmI2OGU1OTYyOGQxZDE2ZmYwYWNmNWExNzJkZTFhOTM0
MDg2MGFjMWMgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9qcy9zZXJ2aWNlcy90
b2RvU3RvcmFnZS5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvanMvc2VydmljZXMvdG9k
b1N0b3JhZ2UuanMKQEAgLTEsMjQgKzEsOTYgQEAKLS8qZ2xvYmFsIHRvZG9tdmMgKi8KLSd1c2Ug
c3RyaWN0JzsKKy8qZ2xvYmFsIGFuZ3VsYXIgKi8KIAogLyoqCi0gKiBTZXJ2aWNlcyB0aGF0IHBl
cnNpc3RzIGFuZCByZXRyaWV2ZXMgVE9ET3MgZnJvbSBsb2NhbFN0b3JhZ2UKKyAqIFNlcnZpY2Vz
IHRoYXQgcGVyc2lzdHMgYW5kIHJldHJpZXZlcyB0b2RvcyBmcm9tIG1lbW9yeSBvciBhIGJhY2tl
bmQgQVBJCisgKiBpZiBhdmFpbGFibGUuCisgKgorICogVGhleSBib3RoIGZvbGxvdyB0aGUgc2Ft
ZSBBUEksIHJldHVybmluZyBwcm9taXNlcyBmb3IgYWxsIGNoYW5nZXMgdG8gdGhlCisgKiBtb2Rl
bC4KICAqLwotdG9kb212Yy5mYWN0b3J5KCd0b2RvU3RvcmFnZScsIGZ1bmN0aW9uICgpIHsKLSAg
ICB2YXIgU1RPUkFHRV9JRCA9ICd0b2Rvcy1hbmd1bGFyanMnOwotCi0gICAgdmFyIGxvY2FsU3Rv
cmFnZSA9IHsKLSAgICAgICAgZ2V0SXRlbTogZnVuY3Rpb24gKGlkKSB7IHRoaXNbaWRdOyB9LAot
ICAgICAgICBzZXRJdGVtOiBmdW5jdGlvbiAoaWQsIHZhbHVlKSB7IHRoaXNbaWRdID0gdmFsdWU7
IH0KLSAgICB9OwotCi0gICAgcmV0dXJuIHsKLSAgICBnZXQ6IGZ1bmN0aW9uICgpIHsKLSAgICBy
ZXR1cm4gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShTVE9SQUdFX0lEKSB8fCAnW10n
KTsKLSAgICB9LAotCi0gICAgcHV0OiBmdW5jdGlvbiAodG9kb3MpIHsKLSAgICBsb2NhbFN0b3Jh
Z2Uuc2V0SXRlbShTVE9SQUdFX0lELCBKU09OLnN0cmluZ2lmeSh0b2RvcykpOwotICAgIH0KLSAg
ICB9OwotfSk7Cithbmd1bGFyLm1vZHVsZSgndG9kb212YycpCisgICAgLmZhY3RvcnkoJ3RvZG9T
dG9yYWdlJywgZnVuY3Rpb24gKCRodHRwLCAkaW5qZWN0b3IpIHsKKyAgICAgICAgJ3VzZSBzdHJp
Y3QnOworICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgIHJldHVybiAkaW5qZWN0b3IuZ2V0KCdsb2NhbENhY2hlJyk7CisgICAgICAg
IH0pOworICAgIH0pCisKKyAgICAuZmFjdG9yeSgnbG9jYWxDYWNoZScsIGZ1bmN0aW9uICgkcSkg
eworICAgICAgICAndXNlIHN0cmljdCc7CisKKyAgICAgICAgdmFyIFNUT1JBR0VfSUQgPSAndG9k
b3MtYW5ndWxhcmpzJzsKKworICAgICAgICB2YXIgc3RvcmUgPSB7CisgICAgICAgICAgICB0b2Rv
czogW10sCisgICAgICAgICAgICBjYWNoZTogW10sCisKKyAgICAgICAgICAgIF9nZXRGcm9tTG9j
YWxDYWNoZTogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIC8vIHJldHVybiBKU09OLnBh
cnNlKHRoaXMuY2FjaGVbU1RPUkFHRV9JRF0gfHwgJ1tdJyk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIFtdOworICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgX3NhdmVUb0xvY2FsQ2FjaGU6
IGZ1bmN0aW9uICh0b2RvcykgeworICAgICAgICAgICAgICAgIC8vIHRoaXMuY2FjaGVbU1RPUkFH
RV9JRF0gPSBKU09OLnN0cmluZ2lmeSh0b2Rvcyk7CisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgY2xlYXJDb21wbGV0ZWQ6IGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgICAgICAgICB2YXIgZGVmZXJyZWQgPSAkcS5kZWZlcigpOworCisgICAgICAg
ICAgICAgICAgdmFyIGluY29tcGxldGVUb2RvcyA9IHN0b3JlLnRvZG9zLmZpbHRlcihmdW5jdGlv
biAodG9kbykgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gIXRvZG8uY29tcGxldGVkOwor
ICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAgYW5ndWxhci5jb3B5KGluY29t
cGxldGVUb2Rvcywgc3RvcmUudG9kb3MpOworCisgICAgICAgICAgICAgICAgc3RvcmUuX3NhdmVU
b0xvY2FsQ2FjaGUoc3RvcmUudG9kb3MpOworICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29s
dmUoc3RvcmUudG9kb3MpOworCisgICAgICAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21p
c2U7CisgICAgICAgICAgICB9LAorCisgICAgICAgICAgICBkZWxldGU6IGZ1bmN0aW9uICh0b2Rv
KSB7CisgICAgICAgICAgICAgICAgdmFyIGRlZmVycmVkID0gJHEuZGVmZXIoKTsKKworICAgICAg
ICAgICAgICAgIHN0b3JlLnRvZG9zLnNwbGljZShzdG9yZS50b2Rvcy5pbmRleE9mKHRvZG8pLCAx
KTsKKworICAgICAgICAgICAgICAgIHN0b3JlLl9zYXZlVG9Mb2NhbENhY2hlKHN0b3JlLnRvZG9z
KTsKKyAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHN0b3JlLnRvZG9zKTsKKworICAg
ICAgICAgICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlOworICAgICAgICAgICAgfSwKKwor
ICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgdmFyIGRlZmVy
cmVkID0gJHEuZGVmZXIoKTsKKworICAgICAgICAgICAgICAgIGFuZ3VsYXIuY29weShzdG9yZS5f
Z2V0RnJvbUxvY2FsQ2FjaGUoKSwgc3RvcmUudG9kb3MpOworICAgICAgICAgICAgICAgIGRlZmVy
cmVkLnJlc29sdmUoc3RvcmUudG9kb3MpOworCisgICAgICAgICAgICAgICAgcmV0dXJuIGRlZmVy
cmVkLnByb21pc2U7CisgICAgICAgICAgICB9LAorCisgICAgICAgICAgICBpbnNlcnQ6IGZ1bmN0
aW9uICh0b2RvKSB7CisgICAgICAgICAgICAgICAgdmFyIGRlZmVycmVkID0gJHEuZGVmZXIoKTsK
KworICAgICAgICAgICAgICAgIHN0b3JlLnRvZG9zLnB1c2godG9kbyk7CisKKyAgICAgICAgICAg
ICAgICBzdG9yZS5fc2F2ZVRvTG9jYWxDYWNoZShzdG9yZS50b2Rvcyk7CisgICAgICAgICAgICAg
ICAgZGVmZXJyZWQucmVzb2x2ZShzdG9yZS50b2Rvcyk7CisKKyAgICAgICAgICAgICAgICByZXR1
cm4gZGVmZXJyZWQucHJvbWlzZTsKKyAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgIHB1dDog
ZnVuY3Rpb24gKHRvZG8sIGluZGV4KSB7CisgICAgICAgICAgICAgICAgdmFyIGRlZmVycmVkID0g
JHEuZGVmZXIoKTsKKworICAgICAgICAgICAgICAgIHN0b3JlLnRvZG9zW2luZGV4XSA9IHRvZG87
CisKKyAgICAgICAgICAgICAgICBzdG9yZS5fc2F2ZVRvTG9jYWxDYWNoZShzdG9yZS50b2Rvcyk7
CisgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZShzdG9yZS50b2Rvcyk7CisKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfTsKKworICAgICAgICByZXR1cm4gc3RvcmU7CisgICAgfSk7CmRpZmYgLS1naXQgYS9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9hbmd1bGFyanMvbm9kZV9tb2R1bGVzL2FuZ3VsYXItbW9ja3MvTElDRU5TRS5tZCBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ub2RlX21vZHVsZXMvYW5ndWxhci1tb2Nrcy9MSUNFTlNF
Lm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjJjMzk1ZWVmMWJhZTZhMTY3MmQ3MjE2Y2Q2NzMxNWJmMDczNDE5OGMK
LS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvbm9kZV9tb2R1bGVzL2Fu
Z3VsYXItbW9ja3MvTElDRU5TRS5tZApAQCAtMCwwICsxLDIxIEBACitUaGUgTUlUIExpY2Vuc2Ug
KE1JVCkKKworQ29weXJpZ2h0IChjKSAyMDE2IEFuZ3VsYXIKKworUGVybWlzc2lvbiBpcyBoZXJl
YnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29w
eQorb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0
aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKK2luIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0
aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKK3RvIHVzZSwgY29w
eSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29y
IHNlbGwKK2NvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3
aG9tIHRoZSBTb2Z0d2FyZSBpcworZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9uczoKKworVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRo
aXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsCitjb3BpZXMgb3Ig
c3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorCitUSEUgU09GVFdBUkUgSVMg
UFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBP
UgorSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFksCitGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQg
Tk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKK0FVVEhPUlMgT1IgQ09QWVJJ
R0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKK0xJ
QUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJX
SVNFLCBBUklTSU5HIEZST00sCitPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZU
V0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQorU09GVFdBUkUuCmRpZmYg
LS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvbm9kZV9tb2R1bGVzL2FuZ3VsYXItbW9ja3Mv
UkVBRE1FLm1kIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL25vZGVfbW9kdWxlcy9hbmd1bGFyLW1v
Y2tzL1JFQURNRS5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MWI5ZDhjMDgzMWYxYzVjNWUyNjhkNDQ5YzI0NDA3
NjNlMDIzNzgzCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL25vZGVf
bW9kdWxlcy9hbmd1bGFyLW1vY2tzL1JFQURNRS5tZApAQCAtMCwwICsxLDYzIEBACisjIHBhY2th
Z2VkIGFuZ3VsYXItbW9ja3MKKworVGhpcyByZXBvIGlzIGZvciBkaXN0cmlidXRpb24gb24gYG5w
bWAgYW5kIGBib3dlcmAuIFRoZSBzb3VyY2UgZm9yIHRoaXMgbW9kdWxlIGlzIGluIHRoZQorW21h
aW4gQW5ndWxhckpTIHJlcG9dKGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIuanMv
dHJlZS9tYXN0ZXIvc3JjL25nTW9jaykuCitQbGVhc2UgZmlsZSBpc3N1ZXMgYW5kIHB1bGwgcmVx
dWVzdHMgYWdhaW5zdCB0aGF0IHJlcG8uCisKKyMjIEluc3RhbGwKKworWW91IGNhbiBpbnN0YWxs
IHRoaXMgcGFja2FnZSBlaXRoZXIgd2l0aCBgbnBtYCBvciB3aXRoIGBib3dlcmAuCisKKyMjIyBu
cG0KKworYGBgc2hlbGwKK25wbSBpbnN0YWxsIGFuZ3VsYXItbW9ja3MKK2BgYAorCitZb3UgY2Fu
IGByZXF1aXJlYCBuZ01vY2sgbW9kdWxlczoKKworYGBganMKK3ZhciBhbmd1bGFyID0gcmVxdWly
ZSgnYW5ndWxhcicpOworYW5ndWxhci5tb2R1bGUoJ215TW9kJywgWworICByZXF1aXJlKCdhbmd1
bGFyLWFuaW1hdGUnKSwKKyAgcmVxdWlyZSgnYW5ndWxhci1tb2Nrcy9uZ01vY2snKSwKKyAgcmVx
dWlyZSgnYW5ndWxhci1tb2Nrcy9uZ0FuaW1hdGVNb2NrJykKK10pOworYGBgCisKKyMjIyBib3dl
cgorCitgYGBzaGVsbAorYm93ZXIgaW5zdGFsbCBhbmd1bGFyLW1vY2tzCitgYGAKKworVGhlIG1v
Y2tzIGFyZSB0aGVuIGF2YWlsYWJsZSBhdCBgYm93ZXJfY29tcG9uZW50cy9hbmd1bGFyLW1vY2tz
L2FuZ3VsYXItbW9ja3MuanNgLgorCisjIyBEb2N1bWVudGF0aW9uCisKK0RvY3VtZW50YXRpb24g
aXMgYXZhaWxhYmxlIG9uIHRoZQorW0FuZ3VsYXJKUyBkb2NzIHNpdGVdKGh0dHBzOi8vZG9jcy5h
bmd1bGFyanMub3JnL2d1aWRlL3VuaXQtdGVzdGluZykuCisKKyMjIExpY2Vuc2UKKworVGhlIE1J
VCBMaWNlbnNlCisKK0NvcHlyaWdodCAoYykgMjAxMC0yMDE1IEdvb2dsZSwgSW5jLiBodHRwOi8v
YW5ndWxhcmpzLm9yZworCitQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNo
YXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CitvZiB0aGlzIHNvZnR3YXJlIGFu
ZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVh
bAoraW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0
IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwordG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJs
aXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAorY29waWVzIG9mIHRoZSBT
b2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCitm
dXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgor
CitUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBz
aGFsbCBiZSBpbmNsdWRlZCBpbgorYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBv
ZiB0aGUgU29mdHdhcmUuCisKK1RIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRI
T1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCitJTVBMSUVELCBJTkNMVURJTkcg
QlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKK0ZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRQorQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUg
Rk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorTElBQklMSVRZLCBXSEVUSEVSIElOIEFO
IEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKK09V
VCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RI
RVIgREVBTElOR1MgSU4KK1RIRSBTT0ZUV0FSRS4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2Fu
Z3VsYXJqcy9ub2RlX21vZHVsZXMvYW5ndWxhci1tb2Nrcy9hbmd1bGFyLW1vY2tzLmpzIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvYW5ndWxhcmpzL25vZGVfbW9kdWxlcy9hbmd1bGFyLW1vY2tzL2FuZ3VsYXItbW9j
a3MuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMWM0M2M4ZDg2ZDM1ZTY0OWQxN2UzM2E0MmM0ZjQ2ZmI0MWVlMTA0
MQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ub2RlX21vZHVsZXMv
YW5ndWxhci1tb2Nrcy9hbmd1bGFyLW1vY2tzLmpzCkBAIC0wLDAgKzEsMzEzOCBAQAorLyoqCisg
KiBAbGljZW5zZSBBbmd1bGFySlMgdjEuNS45CisgKiAoYykgMjAxMC0yMDE2IEdvb2dsZSwgSW5j
LiBodHRwOi8vYW5ndWxhcmpzLm9yZworICogTGljZW5zZTogTUlUCisgKi8KKyhmdW5jdGlvbih3
aW5kb3csIGFuZ3VsYXIpIHsKKworJ3VzZSBzdHJpY3QnOworCisvKioKKyAqIEBuZ2RvYyBvYmpl
Y3QKKyAqIEBuYW1lIGFuZ3VsYXIubW9jaworICogQGRlc2NyaXB0aW9uCisgKgorICogTmFtZXNw
YWNlIGZyb20gJ2FuZ3VsYXItbW9ja3MuanMnIHdoaWNoIGNvbnRhaW5zIHRlc3RpbmcgcmVsYXRl
ZCBjb2RlLgorICoKKyAqLworYW5ndWxhci5tb2NrID0ge307CisKKy8qKgorICogISBUaGlzIGlz
IGEgcHJpdmF0ZSB1bmRvY3VtZW50ZWQgc2VydmljZSAhCisgKgorICogQG5hbWUgJGJyb3dzZXIK
KyAqCisgKiBAZGVzY3JpcHRpb24KKyAqIFRoaXMgc2VydmljZSBpcyBhIG1vY2sgaW1wbGVtZW50
YXRpb24gb2Yge0BsaW5rIG5nLiRicm93c2VyfS4gSXQgcHJvdmlkZXMgZmFrZQorICogaW1wbGVt
ZW50YXRpb24gZm9yIGNvbW1vbmx5IHVzZWQgYnJvd3NlciBhcGlzIHRoYXQgYXJlIGhhcmQgdG8g
dGVzdCwgZS5nLiBzZXRUaW1lb3V0LCB4aHIsCisgKiBjb29raWVzLCBldGMuCisgKgorICogVGhl
IGFwaSBvZiB0aGlzIHNlcnZpY2UgaXMgdGhlIHNhbWUgYXMgdGhhdCBvZiB0aGUgcmVhbCB7QGxp
bmsgbmcuJGJyb3dzZXIgJGJyb3dzZXJ9LCBleGNlcHQKKyAqIHRoYXQgdGhlcmUgYXJlIHNldmVy
YWwgaGVscGVyIG1ldGhvZHMgYXZhaWxhYmxlIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRlc3RzLgor
ICovCithbmd1bGFyLm1vY2suJEJyb3dzZXJQcm92aWRlciA9IGZ1bmN0aW9uKCkgeworICB0aGlz
LiRnZXQgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gbmV3IGFuZ3VsYXIubW9jay4kQnJvd3Nl
cigpOworICB9OworfTsKKworYW5ndWxhci5tb2NrLiRCcm93c2VyID0gZnVuY3Rpb24oKSB7Cisg
IHZhciBzZWxmID0gdGhpczsKKworICB0aGlzLmlzTW9jayA9IHRydWU7CisgIHNlbGYuJCR1cmwg
PSAnaHR0cDovL3NlcnZlci8nOworICBzZWxmLiQkbGFzdFVybCA9IHNlbGYuJCR1cmw7IC8vIHVz
ZWQgYnkgdXJsIHBvbGxpbmcgZm4KKyAgc2VsZi5wb2xsRm5zID0gW107CisKKyAgLy8gVE9ETyh2
b2p0YSk6IHJlbW92ZSB0aGlzIHRlbXBvcmFyeSBhcGkKKyAgc2VsZi4kJGNvbXBsZXRlT3V0c3Rh
bmRpbmdSZXF1ZXN0ID0gYW5ndWxhci5ub29wOworICBzZWxmLiQkaW5jT3V0c3RhbmRpbmdSZXF1
ZXN0Q291bnQgPSBhbmd1bGFyLm5vb3A7CisKKworICAvLyByZWdpc3RlciB1cmwgcG9sbGluZyBm
bgorCisgIHNlbGYub25VcmxDaGFuZ2UgPSBmdW5jdGlvbihsaXN0ZW5lcikgeworICAgIHNlbGYu
cG9sbEZucy5wdXNoKAorICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgIGlmIChzZWxmLiQkbGFz
dFVybCAhPT0gc2VsZi4kJHVybCB8fCBzZWxmLiQkc3RhdGUgIT09IHNlbGYuJCRsYXN0U3RhdGUp
IHsKKyAgICAgICAgICBzZWxmLiQkbGFzdFVybCA9IHNlbGYuJCR1cmw7CisgICAgICAgICAgc2Vs
Zi4kJGxhc3RTdGF0ZSA9IHNlbGYuJCRzdGF0ZTsKKyAgICAgICAgICBsaXN0ZW5lcihzZWxmLiQk
dXJsLCBzZWxmLiQkc3RhdGUpOworICAgICAgICB9CisgICAgICB9CisgICAgKTsKKworICAgIHJl
dHVybiBsaXN0ZW5lcjsKKyAgfTsKKworICBzZWxmLiQkYXBwbGljYXRpb25EZXN0cm95ZWQgPSBh
bmd1bGFyLm5vb3A7CisgIHNlbGYuJCRjaGVja1VybENoYW5nZSA9IGFuZ3VsYXIubm9vcDsKKwor
ICBzZWxmLmRlZmVycmVkRm5zID0gW107CisgIHNlbGYuZGVmZXJyZWROZXh0SWQgPSAwOworCisg
IHNlbGYuZGVmZXIgPSBmdW5jdGlvbihmbiwgZGVsYXkpIHsKKyAgICBkZWxheSA9IGRlbGF5IHx8
IDA7CisgICAgc2VsZi5kZWZlcnJlZEZucy5wdXNoKHt0aW1lOihzZWxmLmRlZmVyLm5vdyArIGRl
bGF5KSwgZm46Zm4sIGlkOiBzZWxmLmRlZmVycmVkTmV4dElkfSk7CisgICAgc2VsZi5kZWZlcnJl
ZEZucy5zb3J0KGZ1bmN0aW9uKGEsIGIpIHsgcmV0dXJuIGEudGltZSAtIGIudGltZTt9KTsKKyAg
ICByZXR1cm4gc2VsZi5kZWZlcnJlZE5leHRJZCsrOworICB9OworCisKKyAgLyoqCisgICAqIEBu
YW1lICRicm93c2VyI2RlZmVyLm5vdworICAgKgorICAgKiBAZGVzY3JpcHRpb24KKyAgICogQ3Vy
cmVudCBtaWxsaXNlY29uZHMgbW9jayB0aW1lLgorICAgKi8KKyAgc2VsZi5kZWZlci5ub3cgPSAw
OworCisKKyAgc2VsZi5kZWZlci5jYW5jZWwgPSBmdW5jdGlvbihkZWZlcklkKSB7CisgICAgdmFy
IGZuSW5kZXg7CisKKyAgICBhbmd1bGFyLmZvckVhY2goc2VsZi5kZWZlcnJlZEZucywgZnVuY3Rp
b24oZm4sIGluZGV4KSB7CisgICAgICBpZiAoZm4uaWQgPT09IGRlZmVySWQpIGZuSW5kZXggPSBp
bmRleDsKKyAgICB9KTsKKworICAgIGlmIChhbmd1bGFyLmlzRGVmaW5lZChmbkluZGV4KSkgewor
ICAgICAgc2VsZi5kZWZlcnJlZEZucy5zcGxpY2UoZm5JbmRleCwgMSk7CisgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7CisgIH07CisKKworICAvKioKKyAgICog
QG5hbWUgJGJyb3dzZXIjZGVmZXIuZmx1c2gKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uCisgICAq
IEZsdXNoZXMgYWxsIHBlbmRpbmcgcmVxdWVzdHMgYW5kIGV4ZWN1dGVzIHRoZSBkZWZlciBjYWxs
YmFja3MuCisgICAqCisgICAqIEBwYXJhbSB7bnVtYmVyPX0gbnVtYmVyIG9mIG1pbGxpc2Vjb25k
cyB0byBmbHVzaC4gU2VlIHtAbGluayAjZGVmZXIubm93fQorICAgKi8KKyAgc2VsZi5kZWZlci5m
bHVzaCA9IGZ1bmN0aW9uKGRlbGF5KSB7CisgICAgdmFyIG5leHRUaW1lOworCisgICAgaWYgKGFu
Z3VsYXIuaXNEZWZpbmVkKGRlbGF5KSkgeworICAgICAgLy8gQSBkZWxheSB3YXMgcGFzc2VkIHNv
IGNvbXB1dGUgdGhlIG5leHQgdGltZQorICAgICAgbmV4dFRpbWUgPSBzZWxmLmRlZmVyLm5vdyAr
IGRlbGF5OworICAgIH0gZWxzZSB7CisgICAgICBpZiAoc2VsZi5kZWZlcnJlZEZucy5sZW5ndGgp
IHsKKyAgICAgICAgLy8gTm8gZGVsYXkgd2FzIHBhc3NlZCBzbyBzZXQgdGhlIG5leHQgdGltZSBz
byB0aGF0IGl0IGNsZWFycyB0aGUgZGVmZXJyZWQgcXVldWUKKyAgICAgICAgbmV4dFRpbWUgPSBz
ZWxmLmRlZmVycmVkRm5zW3NlbGYuZGVmZXJyZWRGbnMubGVuZ3RoIC0gMV0udGltZTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIC8vIE5vIGRlbGF5IHBhc3NlZCwgYnV0IHRoZXJlIGFyZSBubyBk
ZWZlcnJlZCB0YXNrcyBzbyBmbHVzaCAtIGluZGljYXRlcyBhbiBlcnJvciEKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCdObyBkZWZlcnJlZCB0YXNrcyB0byBiZSBmbHVzaGVkJyk7CisgICAgICB9
CisgICAgfQorCisgICAgd2hpbGUgKHNlbGYuZGVmZXJyZWRGbnMubGVuZ3RoICYmIHNlbGYuZGVm
ZXJyZWRGbnNbMF0udGltZSA8PSBuZXh0VGltZSkgeworICAgICAgLy8gSW5jcmVtZW50IHRoZSB0
aW1lIGFuZCBjYWxsIHRoZSBuZXh0IGRlZmVycmVkIGZ1bmN0aW9uCisgICAgICBzZWxmLmRlZmVy
Lm5vdyA9IHNlbGYuZGVmZXJyZWRGbnNbMF0udGltZTsKKyAgICAgIHNlbGYuZGVmZXJyZWRGbnMu
c2hpZnQoKS5mbigpOworICAgIH0KKworICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBjdXJyZW50IHRp
bWUgaXMgY29ycmVjdAorICAgIHNlbGYuZGVmZXIubm93ID0gbmV4dFRpbWU7CisgIH07CisKKyAg
c2VsZi4kJGJhc2VIcmVmID0gJy8nOworICBzZWxmLmJhc2VIcmVmID0gZnVuY3Rpb24oKSB7Cisg
ICAgcmV0dXJuIHRoaXMuJCRiYXNlSHJlZjsKKyAgfTsKK307Cithbmd1bGFyLm1vY2suJEJyb3dz
ZXIucHJvdG90eXBlID0geworCisgIC8qKgorICAgKiBAbmFtZSAkYnJvd3NlciNwb2xsCisgICAq
CisgICAqIEBkZXNjcmlwdGlvbgorICAgKiBydW4gYWxsIGZucyBpbiBwb2xsRm5zCisgICAqLwor
ICBwb2xsOiBmdW5jdGlvbiBwb2xsKCkgeworICAgIGFuZ3VsYXIuZm9yRWFjaCh0aGlzLnBvbGxG
bnMsIGZ1bmN0aW9uKHBvbGxGbikgeworICAgICAgcG9sbEZuKCk7CisgICAgfSk7CisgIH0sCisK
KyAgdXJsOiBmdW5jdGlvbih1cmwsIHJlcGxhY2UsIHN0YXRlKSB7CisgICAgaWYgKGFuZ3VsYXIu
aXNVbmRlZmluZWQoc3RhdGUpKSB7CisgICAgICBzdGF0ZSA9IG51bGw7CisgICAgfQorICAgIGlm
ICh1cmwpIHsKKyAgICAgIHRoaXMuJCR1cmwgPSB1cmw7CisgICAgICAvLyBOYXRpdmUgcHVzaFN0
YXRlIHNlcmlhbGl6ZXMgJiBjb3BpZXMgdGhlIG9iamVjdDsgc2ltdWxhdGUgaXQuCisgICAgICB0
aGlzLiQkc3RhdGUgPSBhbmd1bGFyLmNvcHkoc3RhdGUpOworICAgICAgcmV0dXJuIHRoaXM7Cisg
ICAgfQorCisgICAgcmV0dXJuIHRoaXMuJCR1cmw7CisgIH0sCisKKyAgc3RhdGU6IGZ1bmN0aW9u
KCkgeworICAgIHJldHVybiB0aGlzLiQkc3RhdGU7CisgIH0sCisKKyAgbm90aWZ5V2hlbk5vT3V0
c3RhbmRpbmdSZXF1ZXN0czogZnVuY3Rpb24oZm4pIHsKKyAgICBmbigpOworICB9Cit9OworCisK
Ky8qKgorICogQG5nZG9jIHByb3ZpZGVyCisgKiBAbmFtZSAkZXhjZXB0aW9uSGFuZGxlclByb3Zp
ZGVyCisgKgorICogQGRlc2NyaXB0aW9uCisgKiBDb25maWd1cmVzIHRoZSBtb2NrIGltcGxlbWVu
dGF0aW9uIG9mIHtAbGluayBuZy4kZXhjZXB0aW9uSGFuZGxlcn0gdG8gcmV0aHJvdyBvciB0byBs
b2cgZXJyb3JzCisgKiBwYXNzZWQgdG8gdGhlIGAkZXhjZXB0aW9uSGFuZGxlcmAuCisgKi8KKwor
LyoqCisgKiBAbmdkb2Mgc2VydmljZQorICogQG5hbWUgJGV4Y2VwdGlvbkhhbmRsZXIKKyAqCisg
KiBAZGVzY3JpcHRpb24KKyAqIE1vY2sgaW1wbGVtZW50YXRpb24gb2Yge0BsaW5rIG5nLiRleGNl
cHRpb25IYW5kbGVyfSB0aGF0IHJldGhyb3dzIG9yIGxvZ3MgZXJyb3JzIHBhc3NlZAorICogdG8g
aXQuIFNlZSB7QGxpbmsgbmdNb2NrLiRleGNlcHRpb25IYW5kbGVyUHJvdmlkZXIgJGV4Y2VwdGlv
bkhhbmRsZXJQcm92aWRlcn0gZm9yIGNvbmZpZ3VyYXRpb24KKyAqIGluZm9ybWF0aW9uLgorICoK
KyAqCisgKiBgYGBqcworICogICBkZXNjcmliZSgnJGV4Y2VwdGlvbkhhbmRsZXJQcm92aWRlcics
IGZ1bmN0aW9uKCkgeworICoKKyAqICAgICBpdCgnc2hvdWxkIGNhcHR1cmUgbG9nIG1lc3NhZ2Vz
IGFuZCBleGNlcHRpb25zJywgZnVuY3Rpb24oKSB7CisgKgorICogICAgICAgbW9kdWxlKGZ1bmN0
aW9uKCRleGNlcHRpb25IYW5kbGVyUHJvdmlkZXIpIHsKKyAqICAgICAgICAgJGV4Y2VwdGlvbkhh
bmRsZXJQcm92aWRlci5tb2RlKCdsb2cnKTsKKyAqICAgICAgIH0pOworICoKKyAqICAgICAgIGlu
amVjdChmdW5jdGlvbigkbG9nLCAkZXhjZXB0aW9uSGFuZGxlciwgJHRpbWVvdXQpIHsKKyAqICAg
ICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKSB7ICRsb2cubG9nKDEpOyB9KTsKKyAqICAgICAgICAg
JHRpbWVvdXQoZnVuY3Rpb24oKSB7ICRsb2cubG9nKDIpOyB0aHJvdyAnYmFuYW5hIHBlZWwnOyB9
KTsKKyAqICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKSB7ICRsb2cubG9nKDMpOyB9KTsKKyAq
ICAgICAgICAgZXhwZWN0KCRleGNlcHRpb25IYW5kbGVyLmVycm9ycykudG9FcXVhbChbXSk7Cisg
KiAgICAgICAgIGV4cGVjdCgkbG9nLmFzc2VydEVtcHR5KCkpOworICogICAgICAgICAkdGltZW91
dC5mbHVzaCgpOworICogICAgICAgICBleHBlY3QoJGV4Y2VwdGlvbkhhbmRsZXIuZXJyb3JzKS50
b0VxdWFsKFsnYmFuYW5hIHBlZWwnXSk7CisgKiAgICAgICAgIGV4cGVjdCgkbG9nLmxvZy5sb2dz
KS50b0VxdWFsKFtbMV0sIFsyXSwgWzNdXSk7CisgKiAgICAgICB9KTsKKyAqICAgICB9KTsKKyAq
ICAgfSk7CisgKiBgYGAKKyAqLworCithbmd1bGFyLm1vY2suJEV4Y2VwdGlvbkhhbmRsZXJQcm92
aWRlciA9IGZ1bmN0aW9uKCkgeworICB2YXIgaGFuZGxlcjsKKworICAvKioKKyAgICogQG5nZG9j
IG1ldGhvZAorICAgKiBAbmFtZSAkZXhjZXB0aW9uSGFuZGxlclByb3ZpZGVyI21vZGUKKyAgICoK
KyAgICogQGRlc2NyaXB0aW9uCisgICAqIFNldHMgdGhlIGxvZ2dpbmcgbW9kZS4KKyAgICoKKyAg
ICogQHBhcmFtIHtzdHJpbmd9IG1vZGUgTW9kZSBvZiBvcGVyYXRpb24sIGRlZmF1bHRzIHRvIGBy
ZXRocm93YC4KKyAgICoKKyAgICogICAtIGBsb2dgOiBTb21ldGltZXMgaXQgaXMgZGVzaXJhYmxl
IHRvIHRlc3QgdGhhdCBhbiBlcnJvciBpcyB0aHJvd24sIGZvciB0aGlzIGNhc2UgdGhlIGBsb2dg
CisgICAqICAgICBtb2RlIHN0b3JlcyBhbiBhcnJheSBvZiBlcnJvcnMgaW4gYCRleGNlcHRpb25I
YW5kbGVyLmVycm9yc2AsIHRvIGFsbG93IGxhdGVyIGFzc2VydGlvbiBvZgorICAgKiAgICAgdGhl
bS4gU2VlIHtAbGluayBuZ01vY2suJGxvZyNhc3NlcnRFbXB0eSBhc3NlcnRFbXB0eSgpfSBhbmQK
KyAgICogICAgIHtAbGluayBuZ01vY2suJGxvZyNyZXNldCByZXNldCgpfS4KKyAgICogICAtIGBy
ZXRocm93YDogSWYgYW55IGVycm9ycyBhcmUgcGFzc2VkIHRvIHRoZSBoYW5kbGVyIGluIHRlc3Rz
LCBpdCB0eXBpY2FsbHkgbWVhbnMgdGhhdCB0aGVyZQorICAgKiAgICAgaXMgYSBidWcgaW4gdGhl
IGFwcGxpY2F0aW9uIG9yIHRlc3QsIHNvIHRoaXMgbW9jayB3aWxsIG1ha2UgdGhlc2UgdGVzdHMg
ZmFpbC4gRm9yIGFueQorICAgKiAgICAgaW1wbGVtZW50YXRpb25zIHRoYXQgZXhwZWN0IGV4Y2Vw
dGlvbnMgdG8gYmUgdGhyb3duLCB0aGUgYHJldGhyb3dgIG1vZGUgd2lsbCBhbHNvIG1haW50YWlu
CisgICAqICAgICBhIGxvZyBvZiB0aHJvd24gZXJyb3JzIGluIGAkZXhjZXB0aW9uSGFuZGxlci5l
cnJvcnNgLgorICAgKi8KKyAgdGhpcy5tb2RlID0gZnVuY3Rpb24obW9kZSkgeworCisgICAgc3dp
dGNoIChtb2RlKSB7CisgICAgICBjYXNlICdsb2cnOgorICAgICAgY2FzZSAncmV0aHJvdyc6Cisg
ICAgICAgIHZhciBlcnJvcnMgPSBbXTsKKyAgICAgICAgaGFuZGxlciA9IGZ1bmN0aW9uKGUpIHsK
KyAgICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkgeworICAgICAgICAgICAgZXJy
b3JzLnB1c2goZSk7CisgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGVycm9ycy5wdXNo
KFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7CisgICAgICAgICAgfQorICAgICAgICAgIGlm
IChtb2RlID09PSAncmV0aHJvdycpIHsKKyAgICAgICAgICAgIHRocm93IGU7CisgICAgICAgICAg
fQorICAgICAgICB9OworICAgICAgICBoYW5kbGVyLmVycm9ycyA9IGVycm9yczsKKyAgICAgICAg
YnJlYWs7CisgICAgICBkZWZhdWx0OgorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24g
bW9kZSBcJycgKyBtb2RlICsgJ1wnLCBvbmx5IFwnbG9nXCcvXCdyZXRocm93XCcgbW9kZXMgYXJl
IGFsbG93ZWQhJyk7CisgICAgfQorICB9OworCisgIHRoaXMuJGdldCA9IGZ1bmN0aW9uKCkgewor
ICAgIHJldHVybiBoYW5kbGVyOworICB9OworCisgIHRoaXMubW9kZSgncmV0aHJvdycpOworfTsK
KworCisvKioKKyAqIEBuZ2RvYyBzZXJ2aWNlCisgKiBAbmFtZSAkbG9nCisgKgorICogQGRlc2Ny
aXB0aW9uCisgKiBNb2NrIGltcGxlbWVudGF0aW9uIG9mIHtAbGluayBuZy4kbG9nfSB0aGF0IGdh
dGhlcnMgYWxsIGxvZ2dlZCBtZXNzYWdlcyBpbiBhcnJheXMKKyAqIChvbmUgYXJyYXkgcGVyIGxv
Z2dpbmcgbGV2ZWwpLiBUaGVzZSBhcnJheXMgYXJlIGV4cG9zZWQgYXMgYGxvZ3NgIHByb3BlcnR5
IG9mIGVhY2ggb2YgdGhlCisgKiBsZXZlbC1zcGVjaWZpYyBsb2cgZnVuY3Rpb24sIGUuZy4gZm9y
IGxldmVsIGBlcnJvcmAgdGhlIGFycmF5IGlzIGV4cG9zZWQgYXMgYCRsb2cuZXJyb3IubG9nc2Au
CisgKgorICovCithbmd1bGFyLm1vY2suJExvZ1Byb3ZpZGVyID0gZnVuY3Rpb24oKSB7CisgIHZh
ciBkZWJ1ZyA9IHRydWU7CisKKyAgZnVuY3Rpb24gY29uY2F0KGFycmF5MSwgYXJyYXkyLCBpbmRl
eCkgeworICAgIHJldHVybiBhcnJheTEuY29uY2F0KEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxs
KGFycmF5MiwgaW5kZXgpKTsKKyAgfQorCisgIHRoaXMuZGVidWdFbmFibGVkID0gZnVuY3Rpb24o
ZmxhZykgeworICAgIGlmIChhbmd1bGFyLmlzRGVmaW5lZChmbGFnKSkgeworICAgICAgZGVidWcg
PSBmbGFnOworICAgICAgcmV0dXJuIHRoaXM7CisgICAgfSBlbHNlIHsKKyAgICAgIHJldHVybiBk
ZWJ1ZzsKKyAgICB9CisgIH07CisKKyAgdGhpcy4kZ2V0ID0gZnVuY3Rpb24oKSB7CisgICAgdmFy
ICRsb2cgPSB7CisgICAgICBsb2c6IGZ1bmN0aW9uKCkgeyAkbG9nLmxvZy5sb2dzLnB1c2goY29u
Y2F0KFtdLCBhcmd1bWVudHMsIDApKTsgfSwKKyAgICAgIHdhcm46IGZ1bmN0aW9uKCkgeyAkbG9n
Lndhcm4ubG9ncy5wdXNoKGNvbmNhdChbXSwgYXJndW1lbnRzLCAwKSk7IH0sCisgICAgICBpbmZv
OiBmdW5jdGlvbigpIHsgJGxvZy5pbmZvLmxvZ3MucHVzaChjb25jYXQoW10sIGFyZ3VtZW50cywg
MCkpOyB9LAorICAgICAgZXJyb3I6IGZ1bmN0aW9uKCkgeyAkbG9nLmVycm9yLmxvZ3MucHVzaChj
b25jYXQoW10sIGFyZ3VtZW50cywgMCkpOyB9LAorICAgICAgZGVidWc6IGZ1bmN0aW9uKCkgewor
ICAgICAgICBpZiAoZGVidWcpIHsKKyAgICAgICAgICAkbG9nLmRlYnVnLmxvZ3MucHVzaChjb25j
YXQoW10sIGFyZ3VtZW50cywgMCkpOworICAgICAgICB9CisgICAgICB9CisgICAgfTsKKworICAg
IC8qKgorICAgICAqIEBuZ2RvYyBtZXRob2QKKyAgICAgKiBAbmFtZSAkbG9nI3Jlc2V0CisgICAg
ICoKKyAgICAgKiBAZGVzY3JpcHRpb24KKyAgICAgKiBSZXNldCBhbGwgb2YgdGhlIGxvZ2dpbmcg
YXJyYXlzIHRvIGVtcHR5LgorICAgICAqLworICAgICRsb2cucmVzZXQgPSBmdW5jdGlvbigpIHsK
KyAgICAgIC8qKgorICAgICAgICogQG5nZG9jIHByb3BlcnR5CisgICAgICAgKiBAbmFtZSAkbG9n
I2xvZy5sb2dzCisgICAgICAgKgorICAgICAgICogQGRlc2NyaXB0aW9uCisgICAgICAgKiBBcnJh
eSBvZiBtZXNzYWdlcyBsb2dnZWQgdXNpbmcge0BsaW5rIG5nLiRsb2cjbG9nIGBsb2coKWB9Lgor
ICAgICAgICoKKyAgICAgICAqIEBleGFtcGxlCisgICAgICAgKiBgYGBqcworICAgICAgICogJGxv
Zy5sb2coJ1NvbWUgTG9nJyk7CisgICAgICAgKiB2YXIgZmlyc3QgPSAkbG9nLmxvZy5sb2dzLnVu
c2hpZnQoKTsKKyAgICAgICAqIGBgYAorICAgICAgICovCisgICAgICAkbG9nLmxvZy5sb2dzID0g
W107CisgICAgICAvKioKKyAgICAgICAqIEBuZ2RvYyBwcm9wZXJ0eQorICAgICAgICogQG5hbWUg
JGxvZyNpbmZvLmxvZ3MKKyAgICAgICAqCisgICAgICAgKiBAZGVzY3JpcHRpb24KKyAgICAgICAq
IEFycmF5IG9mIG1lc3NhZ2VzIGxvZ2dlZCB1c2luZyB7QGxpbmsgbmcuJGxvZyNpbmZvIGBpbmZv
KClgfS4KKyAgICAgICAqCisgICAgICAgKiBAZXhhbXBsZQorICAgICAgICogYGBganMKKyAgICAg
ICAqICRsb2cuaW5mbygnU29tZSBJbmZvJyk7CisgICAgICAgKiB2YXIgZmlyc3QgPSAkbG9nLmlu
Zm8ubG9ncy51bnNoaWZ0KCk7CisgICAgICAgKiBgYGAKKyAgICAgICAqLworICAgICAgJGxvZy5p
bmZvLmxvZ3MgPSBbXTsKKyAgICAgIC8qKgorICAgICAgICogQG5nZG9jIHByb3BlcnR5CisgICAg
ICAgKiBAbmFtZSAkbG9nI3dhcm4ubG9ncworICAgICAgICoKKyAgICAgICAqIEBkZXNjcmlwdGlv
bgorICAgICAgICogQXJyYXkgb2YgbWVzc2FnZXMgbG9nZ2VkIHVzaW5nIHtAbGluayBuZy4kbG9n
I3dhcm4gYHdhcm4oKWB9LgorICAgICAgICoKKyAgICAgICAqIEBleGFtcGxlCisgICAgICAgKiBg
YGBqcworICAgICAgICogJGxvZy53YXJuKCdTb21lIFdhcm5pbmcnKTsKKyAgICAgICAqIHZhciBm
aXJzdCA9ICRsb2cud2Fybi5sb2dzLnVuc2hpZnQoKTsKKyAgICAgICAqIGBgYAorICAgICAgICov
CisgICAgICAkbG9nLndhcm4ubG9ncyA9IFtdOworICAgICAgLyoqCisgICAgICAgKiBAbmdkb2Mg
cHJvcGVydHkKKyAgICAgICAqIEBuYW1lICRsb2cjZXJyb3IubG9ncworICAgICAgICoKKyAgICAg
ICAqIEBkZXNjcmlwdGlvbgorICAgICAgICogQXJyYXkgb2YgbWVzc2FnZXMgbG9nZ2VkIHVzaW5n
IHtAbGluayBuZy4kbG9nI2Vycm9yIGBlcnJvcigpYH0uCisgICAgICAgKgorICAgICAgICogQGV4
YW1wbGUKKyAgICAgICAqIGBgYGpzCisgICAgICAgKiAkbG9nLmVycm9yKCdTb21lIEVycm9yJyk7
CisgICAgICAgKiB2YXIgZmlyc3QgPSAkbG9nLmVycm9yLmxvZ3MudW5zaGlmdCgpOworICAgICAg
ICogYGBgCisgICAgICAgKi8KKyAgICAgICRsb2cuZXJyb3IubG9ncyA9IFtdOworICAgICAgICAv
KioKKyAgICAgICAqIEBuZ2RvYyBwcm9wZXJ0eQorICAgICAgICogQG5hbWUgJGxvZyNkZWJ1Zy5s
b2dzCisgICAgICAgKgorICAgICAgICogQGRlc2NyaXB0aW9uCisgICAgICAgKiBBcnJheSBvZiBt
ZXNzYWdlcyBsb2dnZWQgdXNpbmcge0BsaW5rIG5nLiRsb2cjZGVidWcgYGRlYnVnKClgfS4KKyAg
ICAgICAqCisgICAgICAgKiBAZXhhbXBsZQorICAgICAgICogYGBganMKKyAgICAgICAqICRsb2cu
ZGVidWcoJ1NvbWUgRXJyb3InKTsKKyAgICAgICAqIHZhciBmaXJzdCA9ICRsb2cuZGVidWcubG9n
cy51bnNoaWZ0KCk7CisgICAgICAgKiBgYGAKKyAgICAgICAqLworICAgICAgJGxvZy5kZWJ1Zy5s
b2dzID0gW107CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBuZ2RvYyBtZXRob2QKKyAgICAg
KiBAbmFtZSAkbG9nI2Fzc2VydEVtcHR5CisgICAgICoKKyAgICAgKiBAZGVzY3JpcHRpb24KKyAg
ICAgKiBBc3NlcnQgdGhhdCBhbGwgb2YgdGhlIGxvZ2dpbmcgbWV0aG9kcyBoYXZlIG5vIGxvZ2dl
ZCBtZXNzYWdlcy4gSWYgYW55IG1lc3NhZ2VzIGFyZSBwcmVzZW50LAorICAgICAqIGFuIGV4Y2Vw
dGlvbiBpcyB0aHJvd24uCisgICAgICovCisgICAgJGxvZy5hc3NlcnRFbXB0eSA9IGZ1bmN0aW9u
KCkgeworICAgICAgdmFyIGVycm9ycyA9IFtdOworICAgICAgYW5ndWxhci5mb3JFYWNoKFsnZXJy
b3InLCAnd2FybicsICdpbmZvJywgJ2xvZycsICdkZWJ1ZyddLCBmdW5jdGlvbihsb2dMZXZlbCkg
eworICAgICAgICBhbmd1bGFyLmZvckVhY2goJGxvZ1tsb2dMZXZlbF0ubG9ncywgZnVuY3Rpb24o
bG9nKSB7CisgICAgICAgICAgYW5ndWxhci5mb3JFYWNoKGxvZywgZnVuY3Rpb24obG9nSXRlbSkg
eworICAgICAgICAgICAgZXJyb3JzLnB1c2goJ01PQ0sgJGxvZyAoJyArIGxvZ0xldmVsICsgJyk6
ICcgKyBTdHJpbmcobG9nSXRlbSkgKyAnXG4nICsKKyAgICAgICAgICAgICAgICAgICAgICAgIChs
b2dJdGVtLnN0YWNrIHx8ICcnKSk7CisgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgICAg
fSk7CisgICAgICBpZiAoZXJyb3JzLmxlbmd0aCkgeworICAgICAgICBlcnJvcnMudW5zaGlmdCgn
RXhwZWN0ZWQgJGxvZyB0byBiZSBlbXB0eSEgRWl0aGVyIGEgbWVzc2FnZSB3YXMgbG9nZ2VkIHVu
ZXhwZWN0ZWRseSwgb3IgJyArCisgICAgICAgICAgJ2FuIGV4cGVjdGVkIGxvZyBtZXNzYWdlIHdh
cyBub3QgY2hlY2tlZCBhbmQgcmVtb3ZlZDonKTsKKyAgICAgICAgZXJyb3JzLnB1c2goJycpOwor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3JzLmpvaW4oJ1xuLS0tLS0tLS0tXG4nKSk7Cisg
ICAgICB9CisgICAgfTsKKworICAgICRsb2cucmVzZXQoKTsKKyAgICByZXR1cm4gJGxvZzsKKyAg
fTsKK307CisKKworLyoqCisgKiBAbmdkb2Mgc2VydmljZQorICogQG5hbWUgJGludGVydmFsCisg
KgorICogQGRlc2NyaXB0aW9uCisgKiBNb2NrIGltcGxlbWVudGF0aW9uIG9mIHRoZSAkaW50ZXJ2
YWwgc2VydmljZS4KKyAqCisgKiBVc2Uge0BsaW5rIG5nTW9jay4kaW50ZXJ2YWwjZmx1c2ggYCRp
bnRlcnZhbC5mbHVzaChtaWxsaXMpYH0gdG8KKyAqIG1vdmUgZm9yd2FyZCBieSBgbWlsbGlzYCBt
aWxsaXNlY29uZHMgYW5kIHRyaWdnZXIgYW55IGZ1bmN0aW9ucyBzY2hlZHVsZWQgdG8gcnVuIGlu
IHRoYXQKKyAqIHRpbWUuCisgKgorICogQHBhcmFtIHtmdW5jdGlvbigpfSBmbiBBIGZ1bmN0aW9u
IHRoYXQgc2hvdWxkIGJlIGNhbGxlZCByZXBlYXRlZGx5LgorICogQHBhcmFtIHtudW1iZXJ9IGRl
bGF5IE51bWJlciBvZiBtaWxsaXNlY29uZHMgYmV0d2VlbiBlYWNoIGZ1bmN0aW9uIGNhbGwuCisg
KiBAcGFyYW0ge251bWJlcj19IFtjb3VudD0wXSBOdW1iZXIgb2YgdGltZXMgdG8gcmVwZWF0LiBJ
ZiBub3Qgc2V0LCBvciAwLCB3aWxsIHJlcGVhdAorICogICBpbmRlZmluaXRlbHkuCisgKiBAcGFy
YW0ge2Jvb2xlYW49fSBbaW52b2tlQXBwbHk9dHJ1ZV0gSWYgc2V0IHRvIGBmYWxzZWAgc2tpcHMg
bW9kZWwgZGlydHkgY2hlY2tpbmcsIG90aGVyd2lzZQorICogICB3aWxsIGludm9rZSBgZm5gIHdp
dGhpbiB0aGUge0BsaW5rIG5nLiRyb290U2NvcGUuU2NvcGUjJGFwcGx5ICRhcHBseX0gYmxvY2su
CisgKiBAcGFyYW0gey4uLio9fSBQYXNzIGFkZGl0aW9uYWwgcGFyYW1ldGVycyB0byB0aGUgZXhl
Y3V0ZWQgZnVuY3Rpb24uCisgKiBAcmV0dXJucyB7cHJvbWlzZX0gQSBwcm9taXNlIHdoaWNoIHdp
bGwgYmUgbm90aWZpZWQgb24gZWFjaCBpdGVyYXRpb24uCisgKi8KK2FuZ3VsYXIubW9jay4kSW50
ZXJ2YWxQcm92aWRlciA9IGZ1bmN0aW9uKCkgeworICB0aGlzLiRnZXQgPSBbJyRicm93c2VyJywg
JyRyb290U2NvcGUnLCAnJHEnLCAnJCRxJywKKyAgICAgICBmdW5jdGlvbigkYnJvd3NlciwgICAk
cm9vdFNjb3BlLCAgICRxLCAgICQkcSkgeworICAgIHZhciByZXBlYXRGbnMgPSBbXSwKKyAgICAg
ICAgbmV4dFJlcGVhdElkID0gMCwKKyAgICAgICAgbm93ID0gMDsKKworICAgIHZhciAkaW50ZXJ2
YWwgPSBmdW5jdGlvbihmbiwgZGVsYXksIGNvdW50LCBpbnZva2VBcHBseSkgeworICAgICAgdmFy
IGhhc1BhcmFtcyA9IGFyZ3VtZW50cy5sZW5ndGggPiA0LAorICAgICAgICAgIGFyZ3MgPSBoYXNQ
YXJhbXMgPyBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDQpIDogW10sCisg
ICAgICAgICAgaXRlcmF0aW9uID0gMCwKKyAgICAgICAgICBza2lwQXBwbHkgPSAoYW5ndWxhci5p
c0RlZmluZWQoaW52b2tlQXBwbHkpICYmICFpbnZva2VBcHBseSksCisgICAgICAgICAgZGVmZXJy
ZWQgPSAoc2tpcEFwcGx5ID8gJCRxIDogJHEpLmRlZmVyKCksCisgICAgICAgICAgcHJvbWlzZSA9
IGRlZmVycmVkLnByb21pc2U7CisKKyAgICAgIGNvdW50ID0gKGFuZ3VsYXIuaXNEZWZpbmVkKGNv
dW50KSkgPyBjb3VudCA6IDA7CisgICAgICBwcm9taXNlLnRoZW4obnVsbCwgbnVsbCwgKCFoYXNQ
YXJhbXMpID8gZm4gOiBmdW5jdGlvbigpIHsKKyAgICAgICAgZm4uYXBwbHkobnVsbCwgYXJncyk7
CisgICAgICB9KTsKKworICAgICAgcHJvbWlzZS4kJGludGVydmFsSWQgPSBuZXh0UmVwZWF0SWQ7
CisKKyAgICAgIGZ1bmN0aW9uIHRpY2soKSB7CisgICAgICAgIGRlZmVycmVkLm5vdGlmeShpdGVy
YXRpb24rKyk7CisKKyAgICAgICAgaWYgKGNvdW50ID4gMCAmJiBpdGVyYXRpb24gPj0gY291bnQp
IHsKKyAgICAgICAgICB2YXIgZm5JbmRleDsKKyAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKGl0
ZXJhdGlvbik7CisKKyAgICAgICAgICBhbmd1bGFyLmZvckVhY2gocmVwZWF0Rm5zLCBmdW5jdGlv
bihmbiwgaW5kZXgpIHsKKyAgICAgICAgICAgIGlmIChmbi5pZCA9PT0gcHJvbWlzZS4kJGludGVy
dmFsSWQpIGZuSW5kZXggPSBpbmRleDsKKyAgICAgICAgICB9KTsKKworICAgICAgICAgIGlmIChh
bmd1bGFyLmlzRGVmaW5lZChmbkluZGV4KSkgeworICAgICAgICAgICAgcmVwZWF0Rm5zLnNwbGlj
ZShmbkluZGV4LCAxKTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoc2tp
cEFwcGx5KSB7CisgICAgICAgICAgJGJyb3dzZXIuZGVmZXIuZmx1c2goKTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAkcm9vdFNjb3BlLiRhcHBseSgpOworICAgICAgICB9CisgICAgICB9
CisKKyAgICAgIHJlcGVhdEZucy5wdXNoKHsKKyAgICAgICAgbmV4dFRpbWU6KG5vdyArIGRlbGF5
KSwKKyAgICAgICAgZGVsYXk6IGRlbGF5LAorICAgICAgICBmbjogdGljaywKKyAgICAgICAgaWQ6
IG5leHRSZXBlYXRJZCwKKyAgICAgICAgZGVmZXJyZWQ6IGRlZmVycmVkCisgICAgICB9KTsKKyAg
ICAgIHJlcGVhdEZucy5zb3J0KGZ1bmN0aW9uKGEsIGIpIHsgcmV0dXJuIGEubmV4dFRpbWUgLSBi
Lm5leHRUaW1lO30pOworCisgICAgICBuZXh0UmVwZWF0SWQrKzsKKyAgICAgIHJldHVybiBwcm9t
aXNlOworICAgIH07CisgICAgLyoqCisgICAgICogQG5nZG9jIG1ldGhvZAorICAgICAqIEBuYW1l
ICRpbnRlcnZhbCNjYW5jZWwKKyAgICAgKgorICAgICAqIEBkZXNjcmlwdGlvbgorICAgICAqIENh
bmNlbHMgYSB0YXNrIGFzc29jaWF0ZWQgd2l0aCB0aGUgYHByb21pc2VgLgorICAgICAqCisgICAg
ICogQHBhcmFtIHtwcm9taXNlfSBwcm9taXNlIEEgcHJvbWlzZSBmcm9tIGNhbGxpbmcgdGhlIGAk
aW50ZXJ2YWxgIGZ1bmN0aW9uLgorICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0
cnVlYCBpZiB0aGUgdGFzayB3YXMgc3VjY2Vzc2Z1bGx5IGNhbmNlbGxlZC4KKyAgICAgKi8KKyAg
ICAkaW50ZXJ2YWwuY2FuY2VsID0gZnVuY3Rpb24ocHJvbWlzZSkgeworICAgICAgaWYgKCFwcm9t
aXNlKSByZXR1cm4gZmFsc2U7CisgICAgICB2YXIgZm5JbmRleDsKKworICAgICAgYW5ndWxhci5m
b3JFYWNoKHJlcGVhdEZucywgZnVuY3Rpb24oZm4sIGluZGV4KSB7CisgICAgICAgIGlmIChmbi5p
ZCA9PT0gcHJvbWlzZS4kJGludGVydmFsSWQpIGZuSW5kZXggPSBpbmRleDsKKyAgICAgIH0pOwor
CisgICAgICBpZiAoYW5ndWxhci5pc0RlZmluZWQoZm5JbmRleCkpIHsKKyAgICAgICAgcmVwZWF0
Rm5zW2ZuSW5kZXhdLmRlZmVycmVkLnJlamVjdCgnY2FuY2VsZWQnKTsKKyAgICAgICAgcmVwZWF0
Rm5zLnNwbGljZShmbkluZGV4LCAxKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICB9CisK
KyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQG5nZG9jIG1l
dGhvZAorICAgICAqIEBuYW1lICRpbnRlcnZhbCNmbHVzaAorICAgICAqIEBkZXNjcmlwdGlvbgor
ICAgICAqCisgICAgICogUnVucyBpbnRlcnZhbCB0YXNrcyBzY2hlZHVsZWQgdG8gYmUgcnVuIGlu
IHRoZSBuZXh0IGBtaWxsaXNgIG1pbGxpc2Vjb25kcy4KKyAgICAgKgorICAgICAqIEBwYXJhbSB7
bnVtYmVyPX0gbWlsbGlzIG1heGltdW0gdGltZW91dCBhbW91bnQgdG8gZmx1c2ggdXAgdW50aWwu
CisgICAgICoKKyAgICAgKiBAcmV0dXJuIHtudW1iZXJ9IFRoZSBhbW91bnQgb2YgdGltZSBtb3Zl
ZCBmb3J3YXJkLgorICAgICAqLworICAgICRpbnRlcnZhbC5mbHVzaCA9IGZ1bmN0aW9uKG1pbGxp
cykgeworICAgICAgbm93ICs9IG1pbGxpczsKKyAgICAgIHdoaWxlIChyZXBlYXRGbnMubGVuZ3Ro
ICYmIHJlcGVhdEZuc1swXS5uZXh0VGltZSA8PSBub3cpIHsKKyAgICAgICAgdmFyIHRhc2sgPSBy
ZXBlYXRGbnNbMF07CisgICAgICAgIHRhc2suZm4oKTsKKyAgICAgICAgdGFzay5uZXh0VGltZSAr
PSB0YXNrLmRlbGF5OworICAgICAgICByZXBlYXRGbnMuc29ydChmdW5jdGlvbihhLCBiKSB7IHJl
dHVybiBhLm5leHRUaW1lIC0gYi5uZXh0VGltZTt9KTsKKyAgICAgIH0KKyAgICAgIHJldHVybiBt
aWxsaXM7CisgICAgfTsKKworICAgIHJldHVybiAkaW50ZXJ2YWw7CisgIH1dOworfTsKKworCitm
dW5jdGlvbiBqc29uU3RyaW5nVG9EYXRlKHN0cmluZykgeworICAvLyBUaGUgUl9JU084MDYxX1NU
UiByZWdleCBpcyBuZXZlciBnb2luZyB0byBmaXQgaW50byB0aGUgMTAwIGNoYXIgbGltaXQhCisg
IC8vIGVzbGl0LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW4KKyAgdmFyIFJfSVNPODA2MV9TVFIg
PSAvXigtP1xkezR9KS0/KFxkXGQpLT8oXGRcZCkoPzpUKFxkXGQpKD86Oj8oXGRcZCkoPzo6Pyhc
ZFxkKSg/OlwuKFxkezN9KSk/KT8pPyhafChbKy1dKShcZFxkKTo/KFxkXGQpKSk/JC87CisKKyAg
dmFyIG1hdGNoOworICBpZiAoKG1hdGNoID0gc3RyaW5nLm1hdGNoKFJfSVNPODA2MV9TVFIpKSkg
eworICAgIHZhciBkYXRlID0gbmV3IERhdGUoMCksCisgICAgICAgIHR6SG91ciA9IDAsCisgICAg
ICAgIHR6TWluICA9IDA7CisgICAgaWYgKG1hdGNoWzldKSB7CisgICAgICB0ekhvdXIgPSB0b0lu
dChtYXRjaFs5XSArIG1hdGNoWzEwXSk7CisgICAgICB0ek1pbiA9IHRvSW50KG1hdGNoWzldICsg
bWF0Y2hbMTFdKTsKKyAgICB9CisgICAgZGF0ZS5zZXRVVENGdWxsWWVhcih0b0ludChtYXRjaFsx
XSksIHRvSW50KG1hdGNoWzJdKSAtIDEsIHRvSW50KG1hdGNoWzNdKSk7CisgICAgZGF0ZS5zZXRV
VENIb3Vycyh0b0ludChtYXRjaFs0XSB8fCAwKSAtIHR6SG91ciwKKyAgICAgICAgICAgICAgICAg
ICAgIHRvSW50KG1hdGNoWzVdIHx8IDApIC0gdHpNaW4sCisgICAgICAgICAgICAgICAgICAgICB0
b0ludChtYXRjaFs2XSB8fCAwKSwKKyAgICAgICAgICAgICAgICAgICAgIHRvSW50KG1hdGNoWzdd
IHx8IDApKTsKKyAgICByZXR1cm4gZGF0ZTsKKyAgfQorICByZXR1cm4gc3RyaW5nOworfQorCitm
dW5jdGlvbiB0b0ludChzdHIpIHsKKyAgcmV0dXJuIHBhcnNlSW50KHN0ciwgMTApOworfQorCitm
dW5jdGlvbiBwYWROdW1iZXJJbk1vY2sobnVtLCBkaWdpdHMsIHRyaW0pIHsKKyAgdmFyIG5lZyA9
ICcnOworICBpZiAobnVtIDwgMCkgeworICAgIG5lZyA9ICAnLSc7CisgICAgbnVtID0gLW51bTsK
KyAgfQorICBudW0gPSAnJyArIG51bTsKKyAgd2hpbGUgKG51bS5sZW5ndGggPCBkaWdpdHMpIG51
bSA9ICcwJyArIG51bTsKKyAgaWYgKHRyaW0pIHsKKyAgICBudW0gPSBudW0uc3Vic3RyKG51bS5s
ZW5ndGggLSBkaWdpdHMpOworICB9CisgIHJldHVybiBuZWcgKyBudW07Cit9CisKKworLyoqCisg
KiBAbmdkb2MgdHlwZQorICogQG5hbWUgYW5ndWxhci5tb2NrLlR6RGF0ZQorICogQGRlc2NyaXB0
aW9uCisgKgorICogKk5PVEUqOiB0aGlzIGlzIG5vdCBhbiBpbmplY3RhYmxlIGluc3RhbmNlLCBq
dXN0IGEgZ2xvYmFsbHkgYXZhaWxhYmxlIG1vY2sgY2xhc3Mgb2YgYERhdGVgLgorICoKKyAqIE1v
Y2sgb2YgdGhlIERhdGUgdHlwZSB3aGljaCBoYXMgaXRzIHRpbWV6b25lIHNwZWNpZmllZCB2aWEg
Y29uc3RydWN0b3IgYXJnLgorICoKKyAqIFRoZSBtYWluIHB1cnBvc2UgaXMgdG8gY3JlYXRlIERh
dGUtbGlrZSBpbnN0YW5jZXMgd2l0aCB0aW1lem9uZSBmaXhlZCB0byB0aGUgc3BlY2lmaWVkIHRp
bWV6b25lCisgKiBvZmZzZXQsIHNvIHRoYXQgd2UgY2FuIHRlc3QgY29kZSB0aGF0IGRlcGVuZHMg
b24gbG9jYWwgdGltZXpvbmUgc2V0dGluZ3Mgd2l0aG91dCBkZXBlbmRlbmN5IG9uCisgKiB0aGUg
dGltZSB6b25lIHNldHRpbmdzIG9mIHRoZSBtYWNoaW5lIHdoZXJlIHRoZSBjb2RlIGlzIHJ1bm5p
bmcuCisgKgorICogQHBhcmFtIHtudW1iZXJ9IG9mZnNldCBPZmZzZXQgb2YgdGhlICpkZXNpcmVk
KiB0aW1lem9uZSBpbiBob3VycyAoZnJhY3Rpb25zIHdpbGwgYmUgaG9ub3JlZCkKKyAqIEBwYXJh
bSB7KG51bWJlcnxzdHJpbmcpfSB0aW1lc3RhbXAgVGltZXN0YW1wIHJlcHJlc2VudGluZyB0aGUg
ZGVzaXJlZCB0aW1lIGluICpVVEMqCisgKgorICogQGV4YW1wbGUKKyAqICEhISEgV0FSTklORyAh
ISEhIQorICogVGhpcyBpcyBub3QgYSBjb21wbGV0ZSBEYXRlIG9iamVjdCBzbyBvbmx5IG1ldGhv
ZHMgdGhhdCB3ZXJlIGltcGxlbWVudGVkIGNhbiBiZSBjYWxsZWQgc2FmZWx5LgorICogVG8gbWFr
ZSBtYXR0ZXJzIHdvcnNlLCBUekRhdGUgaW5zdGFuY2VzIGluaGVyaXQgc3R1ZmYgZnJvbSBEYXRl
IHZpYSBhIHByb3RvdHlwZS4KKyAqCisgKiBXZSBkbyBvdXIgYmVzdCB0byBpbnRlcmNlcHQgY2Fs
bHMgdG8gInVuaW1wbGVtZW50ZWQiIG1ldGhvZHMsIGJ1dCBzaW5jZSB0aGUgbGlzdCBvZiBtZXRo
b2RzIGlzCisgKiBpbmNvbXBsZXRlIHdlIG1pZ2h0IGJlIG1pc3Npbmcgc29tZSBub24tc3RhbmRh
cmQgbWV0aG9kcy4gVGhpcyBjYW4gcmVzdWx0IGluIGVycm9ycyBsaWtlOgorICogIkRhdGUucHJv
dG90eXBlLmZvbyBjYWxsZWQgb24gaW5jb21wYXRpYmxlIE9iamVjdCIuCisgKgorICogYGBganMK
KyAqIHZhciBuZXdZZWFySW5CcmF0aXNsYXZhID0gbmV3IFR6RGF0ZSgtMSwgJzIwMDktMTItMzFU
MjM6MDA6MDBaJyk7CisgKiBuZXdZZWFySW5CcmF0aXNsYXZhLmdldFRpbWV6b25lT2Zmc2V0KCkg
PT4gLTYwOworICogbmV3WWVhckluQnJhdGlzbGF2YS5nZXRGdWxsWWVhcigpID0+IDIwMTA7Cisg
KiBuZXdZZWFySW5CcmF0aXNsYXZhLmdldE1vbnRoKCkgPT4gMDsKKyAqIG5ld1llYXJJbkJyYXRp
c2xhdmEuZ2V0RGF0ZSgpID0+IDE7CisgKiBuZXdZZWFySW5CcmF0aXNsYXZhLmdldEhvdXJzKCkg
PT4gMDsKKyAqIG5ld1llYXJJbkJyYXRpc2xhdmEuZ2V0TWludXRlcygpID0+IDA7CisgKiBuZXdZ
ZWFySW5CcmF0aXNsYXZhLmdldFNlY29uZHMoKSA9PiAwOworICogYGBgCisgKgorICovCithbmd1
bGFyLm1vY2suVHpEYXRlID0gZnVuY3Rpb24ob2Zmc2V0LCB0aW1lc3RhbXApIHsKKyAgdmFyIHNl
bGYgPSBuZXcgRGF0ZSgwKTsKKyAgaWYgKGFuZ3VsYXIuaXNTdHJpbmcodGltZXN0YW1wKSkgewor
ICAgIHZhciB0c1N0ciA9IHRpbWVzdGFtcDsKKworICAgIHNlbGYub3JpZ0RhdGUgPSBqc29uU3Ry
aW5nVG9EYXRlKHRpbWVzdGFtcCk7CisKKyAgICB0aW1lc3RhbXAgPSBzZWxmLm9yaWdEYXRlLmdl
dFRpbWUoKTsKKyAgICBpZiAoaXNOYU4odGltZXN0YW1wKSkgeworICAgICAgLy8gZXNsaW50LWRp
c2FibGUtbmV4dC1saW5lIG5vLXRocm93LWxpdGVyYWwKKyAgICAgIHRocm93IHsKKyAgICAgICAg
bmFtZTogJ0lsbGVnYWwgQXJndW1lbnQnLAorICAgICAgICBtZXNzYWdlOiAnQXJnIFwnJyArIHRz
U3RyICsgJ1wnIHBhc3NlZCBpbnRvIFR6RGF0ZSBjb25zdHJ1Y3RvciBpcyBub3QgYSB2YWxpZCBk
YXRlIHN0cmluZycKKyAgICAgIH07CisgICAgfQorICB9IGVsc2UgeworICAgIHNlbGYub3JpZ0Rh
dGUgPSBuZXcgRGF0ZSh0aW1lc3RhbXApOworICB9CisKKyAgdmFyIGxvY2FsT2Zmc2V0ID0gbmV3
IERhdGUodGltZXN0YW1wKS5nZXRUaW1lem9uZU9mZnNldCgpOworICBzZWxmLm9mZnNldERpZmYg
PSBsb2NhbE9mZnNldCAqIDYwICogMTAwMCAtIG9mZnNldCAqIDEwMDAgKiA2MCAqIDYwOworICBz
ZWxmLmRhdGUgPSBuZXcgRGF0ZSh0aW1lc3RhbXAgKyBzZWxmLm9mZnNldERpZmYpOworCisgIHNl
bGYuZ2V0VGltZSA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiBzZWxmLmRhdGUuZ2V0VGltZSgp
IC0gc2VsZi5vZmZzZXREaWZmOworICB9OworCisgIHNlbGYudG9Mb2NhbGVEYXRlU3RyaW5nID0g
ZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHNlbGYuZGF0ZS50b0xvY2FsZURhdGVTdHJpbmcoKTsK
KyAgfTsKKworICBzZWxmLmdldEZ1bGxZZWFyID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHNl
bGYuZGF0ZS5nZXRGdWxsWWVhcigpOworICB9OworCisgIHNlbGYuZ2V0TW9udGggPSBmdW5jdGlv
bigpIHsKKyAgICByZXR1cm4gc2VsZi5kYXRlLmdldE1vbnRoKCk7CisgIH07CisKKyAgc2VsZi5n
ZXREYXRlID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHNlbGYuZGF0ZS5nZXREYXRlKCk7Cisg
IH07CisKKyAgc2VsZi5nZXRIb3VycyA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiBzZWxmLmRh
dGUuZ2V0SG91cnMoKTsKKyAgfTsKKworICBzZWxmLmdldE1pbnV0ZXMgPSBmdW5jdGlvbigpIHsK
KyAgICByZXR1cm4gc2VsZi5kYXRlLmdldE1pbnV0ZXMoKTsKKyAgfTsKKworICBzZWxmLmdldFNl
Y29uZHMgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gc2VsZi5kYXRlLmdldFNlY29uZHMoKTsK
KyAgfTsKKworICBzZWxmLmdldE1pbGxpc2Vjb25kcyA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVy
biBzZWxmLmRhdGUuZ2V0TWlsbGlzZWNvbmRzKCk7CisgIH07CisKKyAgc2VsZi5nZXRUaW1lem9u
ZU9mZnNldCA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiBvZmZzZXQgKiA2MDsKKyAgfTsKKwor
ICBzZWxmLmdldFVUQ0Z1bGxZZWFyID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHNlbGYub3Jp
Z0RhdGUuZ2V0VVRDRnVsbFllYXIoKTsKKyAgfTsKKworICBzZWxmLmdldFVUQ01vbnRoID0gZnVu
Y3Rpb24oKSB7CisgICAgcmV0dXJuIHNlbGYub3JpZ0RhdGUuZ2V0VVRDTW9udGgoKTsKKyAgfTsK
KworICBzZWxmLmdldFVUQ0RhdGUgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gc2VsZi5vcmln
RGF0ZS5nZXRVVENEYXRlKCk7CisgIH07CisKKyAgc2VsZi5nZXRVVENIb3VycyA9IGZ1bmN0aW9u
KCkgeworICAgIHJldHVybiBzZWxmLm9yaWdEYXRlLmdldFVUQ0hvdXJzKCk7CisgIH07CisKKyAg
c2VsZi5nZXRVVENNaW51dGVzID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHNlbGYub3JpZ0Rh
dGUuZ2V0VVRDTWludXRlcygpOworICB9OworCisgIHNlbGYuZ2V0VVRDU2Vjb25kcyA9IGZ1bmN0
aW9uKCkgeworICAgIHJldHVybiBzZWxmLm9yaWdEYXRlLmdldFVUQ1NlY29uZHMoKTsKKyAgfTsK
KworICBzZWxmLmdldFVUQ01pbGxpc2Vjb25kcyA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiBz
ZWxmLm9yaWdEYXRlLmdldFVUQ01pbGxpc2Vjb25kcygpOworICB9OworCisgIHNlbGYuZ2V0RGF5
ID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHNlbGYuZGF0ZS5nZXREYXkoKTsKKyAgfTsKKwor
ICAvLyBwcm92aWRlIHRoaXMgbWV0aG9kIG9ubHkgb24gYnJvd3NlcnMgdGhhdCBhbHJlYWR5IGhh
dmUgaXQKKyAgaWYgKHNlbGYudG9JU09TdHJpbmcpIHsKKyAgICBzZWxmLnRvSVNPU3RyaW5nID0g
ZnVuY3Rpb24oKSB7CisgICAgICByZXR1cm4gcGFkTnVtYmVySW5Nb2NrKHNlbGYub3JpZ0RhdGUu
Z2V0VVRDRnVsbFllYXIoKSwgNCkgKyAnLScgKworICAgICAgICAgICAgcGFkTnVtYmVySW5Nb2Nr
KHNlbGYub3JpZ0RhdGUuZ2V0VVRDTW9udGgoKSArIDEsIDIpICsgJy0nICsKKyAgICAgICAgICAg
IHBhZE51bWJlckluTW9jayhzZWxmLm9yaWdEYXRlLmdldFVUQ0RhdGUoKSwgMikgKyAnVCcgKwor
ICAgICAgICAgICAgcGFkTnVtYmVySW5Nb2NrKHNlbGYub3JpZ0RhdGUuZ2V0VVRDSG91cnMoKSwg
MikgKyAnOicgKworICAgICAgICAgICAgcGFkTnVtYmVySW5Nb2NrKHNlbGYub3JpZ0RhdGUuZ2V0
VVRDTWludXRlcygpLCAyKSArICc6JyArCisgICAgICAgICAgICBwYWROdW1iZXJJbk1vY2soc2Vs
Zi5vcmlnRGF0ZS5nZXRVVENTZWNvbmRzKCksIDIpICsgJy4nICsKKyAgICAgICAgICAgIHBhZE51
bWJlckluTW9jayhzZWxmLm9yaWdEYXRlLmdldFVUQ01pbGxpc2Vjb25kcygpLCAzKSArICdaJzsK
KyAgICB9OworICB9CisKKyAgLy9oaWRlIGFsbCBtZXRob2RzIG5vdCBpbXBsZW1lbnRlZCBpbiB0
aGlzIG1vY2sgdGhhdCB0aGUgRGF0ZSBwcm90b3R5cGUgZXhwb3NlcworICB2YXIgdW5pbXBsZW1l
bnRlZE1ldGhvZHMgPSBbJ2dldFVUQ0RheScsCisgICAgICAnZ2V0WWVhcicsICdzZXREYXRlJywg
J3NldEZ1bGxZZWFyJywgJ3NldEhvdXJzJywgJ3NldE1pbGxpc2Vjb25kcycsCisgICAgICAnc2V0
TWludXRlcycsICdzZXRNb250aCcsICdzZXRTZWNvbmRzJywgJ3NldFRpbWUnLCAnc2V0VVRDRGF0
ZScsICdzZXRVVENGdWxsWWVhcicsCisgICAgICAnc2V0VVRDSG91cnMnLCAnc2V0VVRDTWlsbGlz
ZWNvbmRzJywgJ3NldFVUQ01pbnV0ZXMnLCAnc2V0VVRDTW9udGgnLCAnc2V0VVRDU2Vjb25kcycs
CisgICAgICAnc2V0WWVhcicsICd0b0RhdGVTdHJpbmcnLCAndG9HTVRTdHJpbmcnLCAndG9KU09O
JywgJ3RvTG9jYWxlRm9ybWF0JywgJ3RvTG9jYWxlU3RyaW5nJywKKyAgICAgICd0b0xvY2FsZVRp
bWVTdHJpbmcnLCAndG9Tb3VyY2UnLCAndG9TdHJpbmcnLCAndG9UaW1lU3RyaW5nJywgJ3RvVVRD
U3RyaW5nJywgJ3ZhbHVlT2YnXTsKKworICBhbmd1bGFyLmZvckVhY2godW5pbXBsZW1lbnRlZE1l
dGhvZHMsIGZ1bmN0aW9uKG1ldGhvZE5hbWUpIHsKKyAgICBzZWxmW21ldGhvZE5hbWVdID0gZnVu
Y3Rpb24oKSB7CisgICAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBcJycgKyBtZXRob2ROYW1l
ICsgJ1wnIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgVHpEYXRlIG1vY2snKTsKKyAgICB9Owor
ICB9KTsKKworICByZXR1cm4gc2VsZjsKK307CisKKy8vbWFrZSAidHpEYXRlSW5zdGFuY2UgaW5z
dGFuY2VvZiBEYXRlIiByZXR1cm4gdHJ1ZQorYW5ndWxhci5tb2NrLlR6RGF0ZS5wcm90b3R5cGUg
PSBEYXRlLnByb3RvdHlwZTsKKworCisvKioKKyAqIEBuZ2RvYyBzZXJ2aWNlCisgKiBAbmFtZSAk
YW5pbWF0ZQorICoKKyAqIEBkZXNjcmlwdGlvbgorICogTW9jayBpbXBsZW1lbnRhdGlvbiBvZiB0
aGUge0BsaW5rIG5nLiRhbmltYXRlIGAkYW5pbWF0ZWB9IHNlcnZpY2UuIEV4cG9zZXMgdHdvIGFk
ZGl0aW9uYWwgbWV0aG9kcworICogZm9yIHRlc3RpbmcgYW5pbWF0aW9ucy4KKyAqCisgKiBZb3Ug
bmVlZCB0byByZXF1aXJlIHRoZSBgbmdBbmltYXRlTW9ja2AgbW9kdWxlIGluIHlvdXIgdGVzdCBz
dWl0ZSBmb3IgaW5zdGFuY2UgYGJlZm9yZUVhY2gobW9kdWxlKCduZ0FuaW1hdGVNb2NrJykpYAor
ICovCithbmd1bGFyLm1vY2suYW5pbWF0ZSA9IGFuZ3VsYXIubW9kdWxlKCduZ0FuaW1hdGVNb2Nr
JywgWyduZyddKQorCisgIC5jb25maWcoWyckcHJvdmlkZScsIGZ1bmN0aW9uKCRwcm92aWRlKSB7
CisKKyAgICAkcHJvdmlkZS5mYWN0b3J5KCckJGZvcmNlUmVmbG93JywgZnVuY3Rpb24oKSB7Cisg
ICAgICBmdW5jdGlvbiByZWZsb3dGbigpIHsKKyAgICAgICAgcmVmbG93Rm4udG90YWxSZWZsb3dz
Kys7CisgICAgICB9CisgICAgICByZWZsb3dGbi50b3RhbFJlZmxvd3MgPSAwOworICAgICAgcmV0
dXJuIHJlZmxvd0ZuOworICAgIH0pOworCisgICAgJHByb3ZpZGUuZmFjdG9yeSgnJCRhbmltYXRl
QXN5bmNSdW4nLCBmdW5jdGlvbigpIHsKKyAgICAgIHZhciBxdWV1ZSA9IFtdOworICAgICAgdmFy
IHF1ZXVlRm4gPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGZuKSB7Cisg
ICAgICAgICAgcXVldWUucHVzaChmbik7CisgICAgICAgIH07CisgICAgICB9OworICAgICAgcXVl
dWVGbi5mbHVzaCA9IGZ1bmN0aW9uKCkgeworICAgICAgICBpZiAocXVldWUubGVuZ3RoID09PSAw
KSByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBxdWV1ZS5sZW5n
dGg7IGkrKykgeworICAgICAgICAgIHF1ZXVlW2ldKCk7CisgICAgICAgIH0KKyAgICAgICAgcXVl
dWUgPSBbXTsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIH07CisgICAgICByZXR1cm4g
cXVldWVGbjsKKyAgICB9KTsKKworICAgICRwcm92aWRlLmRlY29yYXRvcignJCRhbmltYXRlSnMn
LCBbJyRkZWxlZ2F0ZScsIGZ1bmN0aW9uKCRkZWxlZ2F0ZSkgeworICAgICAgdmFyIHJ1bm5lcnMg
PSBbXTsKKworICAgICAgdmFyIGFuaW1hdGVKc0NvbnN0cnVjdG9yID0gZnVuY3Rpb24oKSB7Cisg
ICAgICAgIHZhciBhbmltYXRvciA9ICRkZWxlZ2F0ZS5hcHBseSgkZGVsZWdhdGUsIGFyZ3VtZW50
cyk7CisgICAgICAgIC8vIElmIG5vIGphdmFzY3JpcHQgYW5pbWF0aW9uIGlzIGZvdW5kLCBhbmlt
YXRvciBpcyB1bmRlZmluZWQKKyAgICAgICAgaWYgKGFuaW1hdG9yKSB7CisgICAgICAgICAgcnVu
bmVycy5wdXNoKGFuaW1hdG9yKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYW5pbWF0b3I7
CisgICAgICB9OworCisgICAgICBhbmltYXRlSnNDb25zdHJ1Y3Rvci4kY2xvc2VBbmRGbHVzaCA9
IGZ1bmN0aW9uKCkgeworICAgICAgICBydW5uZXJzLmZvckVhY2goZnVuY3Rpb24ocnVubmVyKSB7
CisgICAgICAgICAgcnVubmVyLmVuZCgpOworICAgICAgICB9KTsKKyAgICAgICAgcnVubmVycyA9
IFtdOworICAgICAgfTsKKworICAgICAgcmV0dXJuIGFuaW1hdGVKc0NvbnN0cnVjdG9yOworICAg
IH1dKTsKKworICAgICRwcm92aWRlLmRlY29yYXRvcignJGFuaW1hdGVDc3MnLCBbJyRkZWxlZ2F0
ZScsIGZ1bmN0aW9uKCRkZWxlZ2F0ZSkgeworICAgICAgdmFyIHJ1bm5lcnMgPSBbXTsKKworICAg
ICAgdmFyIGFuaW1hdGVDc3NDb25zdHJ1Y3RvciA9IGZ1bmN0aW9uKGVsZW1lbnQsIG9wdGlvbnMp
IHsKKyAgICAgICAgdmFyIGFuaW1hdG9yID0gJGRlbGVnYXRlKGVsZW1lbnQsIG9wdGlvbnMpOwor
ICAgICAgICBydW5uZXJzLnB1c2goYW5pbWF0b3IpOworICAgICAgICByZXR1cm4gYW5pbWF0b3I7
CisgICAgICB9OworCisgICAgICBhbmltYXRlQ3NzQ29uc3RydWN0b3IuJGNsb3NlQW5kRmx1c2gg
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgcnVubmVycy5mb3JFYWNoKGZ1bmN0aW9uKHJ1bm5lcikg
eworICAgICAgICAgIHJ1bm5lci5lbmQoKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJ1bm5lcnMg
PSBbXTsKKyAgICAgIH07CisKKyAgICAgIHJldHVybiBhbmltYXRlQ3NzQ29uc3RydWN0b3I7Cisg
ICAgfV0pOworCisgICAgJHByb3ZpZGUuZGVjb3JhdG9yKCckYW5pbWF0ZScsIFsnJGRlbGVnYXRl
JywgJyR0aW1lb3V0JywgJyRicm93c2VyJywgJyQkckFGJywgJyRhbmltYXRlQ3NzJywgJyQkYW5p
bWF0ZUpzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICckJGZvcmNlUmVm
bG93JywgJyQkYW5pbWF0ZUFzeW5jUnVuJywgJyRyb290U2NvcGUnLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZ1bmN0aW9uKCRkZWxlZ2F0ZSwgICAkdGltZW91dCwgICAkYnJvd3Nlciwg
ICAkJHJBRiwgICAkYW5pbWF0ZUNzcywgICAkJGFuaW1hdGVKcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAkJGZvcmNlUmVmbG93LCAgICQkYW5pbWF0ZUFzeW5jUnVuLCAg
JHJvb3RTY29wZSkgeworICAgICAgdmFyIGFuaW1hdGUgPSB7CisgICAgICAgIHF1ZXVlOiBbXSwK
KyAgICAgICAgY2FuY2VsOiAkZGVsZWdhdGUuY2FuY2VsLAorICAgICAgICBvbjogJGRlbGVnYXRl
Lm9uLAorICAgICAgICBvZmY6ICRkZWxlZ2F0ZS5vZmYsCisgICAgICAgIHBpbjogJGRlbGVnYXRl
LnBpbiwKKyAgICAgICAgZ2V0IHJlZmxvd3MoKSB7CisgICAgICAgICAgcmV0dXJuICQkZm9yY2VS
ZWZsb3cudG90YWxSZWZsb3dzOworICAgICAgICB9LAorICAgICAgICBlbmFibGVkOiAkZGVsZWdh
dGUuZW5hYmxlZCwKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBuZ2RvYyBtZXRob2QKKyAgICAg
ICAgICogQG5hbWUgJGFuaW1hdGUjY2xvc2VBbmRGbHVzaAorICAgICAgICAgKiBAZGVzY3JpcHRp
b24KKyAgICAgICAgICoKKyAgICAgICAgICogVGhpcyBtZXRob2Qgd2lsbCBjbG9zZSBhbGwgcGVu
ZGluZyBhbmltYXRpb25zIChib3RoIHtAbGluayBuZ0FuaW1hdGUjamF2YXNjcmlwdC1iYXNlZC1h
bmltYXRpb25zIEphdmFzY3JpcHR9CisgICAgICAgICAqIGFuZCB7QGxpbmsgbmdBbmltYXRlLiRh
bmltYXRlQ3NzIENTU30pIGFuZCBpdCB3aWxsIGFsc28gZmx1c2ggYW55IHJlbWFpbmluZyBhbmlt
YXRpb24gZnJhbWVzIGFuZC9vciBjYWxsYmFja3MuCisgICAgICAgICAqLworICAgICAgICBjbG9z
ZUFuZEZsdXNoOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAvLyB3ZSBhbGxvdyB0aGUgZmx1c2gg
Y29tbWFuZCB0byBzd2FsbG93IHRoZSBlcnJvcnMKKyAgICAgICAgICAvLyBiZWNhdXNlIGRlcGVu
ZGluZyBvbiB3aGV0aGVyIENTUyBvciBKUyBhbmltYXRpb25zIGFyZQorICAgICAgICAgIC8vIHVz
ZWQsIHRoZXJlIG1heSBub3QgYmUgYSBSQUYgZmx1c2guIFRoZSBwcmltYXJ5IGZsdXNoCisgICAg
ICAgICAgLy8gYXQgdGhlIGVuZCBvZiB0aGlzIGZ1bmN0aW9uIG11c3QgdGhyb3cgYW4gZXhjZXB0
aW9uCisgICAgICAgICAgLy8gYmVjYXVzZSBpdCB3aWxsIHRyYWNrIGlmIHRoZXJlIHdlcmUgcGVu
ZGluZyBhbmltYXRpb25zCisgICAgICAgICAgdGhpcy5mbHVzaCh0cnVlKTsKKyAgICAgICAgICAk
YW5pbWF0ZUNzcy4kY2xvc2VBbmRGbHVzaCgpOworICAgICAgICAgICQkYW5pbWF0ZUpzLiRjbG9z
ZUFuZEZsdXNoKCk7CisgICAgICAgICAgdGhpcy5mbHVzaCgpOworICAgICAgICB9LAorICAgICAg
ICAvKioKKyAgICAgICAgICogQG5nZG9jIG1ldGhvZAorICAgICAgICAgKiBAbmFtZSAkYW5pbWF0
ZSNmbHVzaAorICAgICAgICAgKiBAZGVzY3JpcHRpb24KKyAgICAgICAgICoKKyAgICAgICAgICog
VGhpcyBtZXRob2QgaXMgdXNlZCB0byBmbHVzaCB0aGUgcGVuZGluZyBjYWxsYmFja3MgYW5kIGFu
aW1hdGlvbiBmcmFtZXMgdG8gZWl0aGVyIHN0YXJ0CisgICAgICAgICAqIGFuIGFuaW1hdGlvbiBv
ciBjb25jbHVkZSBhbiBhbmltYXRpb24uIE5vdGUgdGhhdCB0aGlzIHdpbGwgbm90IGFjdHVhbGx5
IGNsb3NlIGFuCisgICAgICAgICAqIGFjdGl2ZWx5IHJ1bm5pbmcgYW5pbWF0aW9uIChzZWUge0Bs
aW5rIG5nTW9jay4kYW5pbWF0ZSNjbG9zZUFuZEZsdXNoIGBjbG9zZUFuZEZsdXNoKClgfSBmb3Ig
dGhhdCkuCisgICAgICAgICAqLworICAgICAgICBmbHVzaDogZnVuY3Rpb24oaGlkZUVycm9ycykg
eworICAgICAgICAgICRyb290U2NvcGUuJGRpZ2VzdCgpOworCisgICAgICAgICAgdmFyIGRvTmV4
dFJ1biwgc29tZXRoaW5nRmx1c2hlZCA9IGZhbHNlOworICAgICAgICAgIGRvIHsKKyAgICAgICAg
ICAgIGRvTmV4dFJ1biA9IGZhbHNlOworCisgICAgICAgICAgICBpZiAoJCRyQUYucXVldWUubGVu
Z3RoKSB7CisgICAgICAgICAgICAgICQkckFGLmZsdXNoKCk7CisgICAgICAgICAgICAgIGRvTmV4
dFJ1biA9IHNvbWV0aGluZ0ZsdXNoZWQgPSB0cnVlOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBpZiAoJCRhbmltYXRlQXN5bmNSdW4uZmx1c2goKSkgeworICAgICAgICAgICAgICBkb05l
eHRSdW4gPSBzb21ldGhpbmdGbHVzaGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICB9IHdoaWxlIChkb05leHRSdW4pOworCisgICAgICAgICAgaWYgKCFzb21ldGhpbmdGbHVzaGVk
ICYmICFoaWRlRXJyb3JzKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHBlbmRp
bmcgYW5pbWF0aW9ucyByZWFkeSB0byBiZSBjbG9zZWQgb3IgZmx1c2hlZCcpOworICAgICAgICAg
IH0KKworICAgICAgICAgICRyb290U2NvcGUuJGRpZ2VzdCgpOworICAgICAgICB9CisgICAgICB9
OworCisgICAgICBhbmd1bGFyLmZvckVhY2goCisgICAgICAgIFsnYW5pbWF0ZScsJ2VudGVyJywn
bGVhdmUnLCdtb3ZlJywnYWRkQ2xhc3MnLCdyZW1vdmVDbGFzcycsJ3NldENsYXNzJ10sIGZ1bmN0
aW9uKG1ldGhvZCkgeworICAgICAgICBhbmltYXRlW21ldGhvZF0gPSBmdW5jdGlvbigpIHsKKyAg
ICAgICAgICBhbmltYXRlLnF1ZXVlLnB1c2goeworICAgICAgICAgICAgZXZlbnQ6IG1ldGhvZCwK
KyAgICAgICAgICAgIGVsZW1lbnQ6IGFyZ3VtZW50c1swXSwKKyAgICAgICAgICAgIG9wdGlvbnM6
IGFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoIC0gMV0sCisgICAgICAgICAgICBhcmdzOiBhcmd1
bWVudHMKKyAgICAgICAgICB9KTsKKyAgICAgICAgICByZXR1cm4gJGRlbGVnYXRlW21ldGhvZF0u
YXBwbHkoJGRlbGVnYXRlLCBhcmd1bWVudHMpOworICAgICAgICB9OworICAgICAgfSk7CisKKyAg
ICAgIHJldHVybiBhbmltYXRlOworICAgIH1dKTsKKworICB9XSk7CisKKworLyoqCisgKiBAbmdk
b2MgZnVuY3Rpb24KKyAqIEBuYW1lIGFuZ3VsYXIubW9jay5kdW1wCisgKiBAZGVzY3JpcHRpb24K
KyAqCisgKiAqTk9URSo6IFRoaXMgaXMgbm90IGFuIGluamVjdGFibGUgaW5zdGFuY2UsIGp1c3Qg
YSBnbG9iYWxseSBhdmFpbGFibGUgZnVuY3Rpb24uCisgKgorICogTWV0aG9kIGZvciBzZXJpYWxp
emluZyBjb21tb24gYW5ndWxhciBvYmplY3RzIChzY29wZSwgZWxlbWVudHMsIGV0Yy4uKSBpbnRv
IHN0cmluZ3MuCisgKiBJdCBpcyB1c2VmdWwgZm9yIGxvZ2dpbmcgb2JqZWN0cyB0byB0aGUgY29u
c29sZSB3aGVuIGRlYnVnZ2luZy4KKyAqCisgKiBAcGFyYW0geyp9IG9iamVjdCAtIGFueSBvYmpl
Y3QgdG8gdHVybiBpbnRvIHN0cmluZy4KKyAqIEByZXR1cm4ge3N0cmluZ30gYSBzZXJpYWxpemVk
IHN0cmluZyBvZiB0aGUgYXJndW1lbnQKKyAqLworYW5ndWxhci5tb2NrLmR1bXAgPSBmdW5jdGlv
bihvYmplY3QpIHsKKyAgcmV0dXJuIHNlcmlhbGl6ZShvYmplY3QpOworCisgIGZ1bmN0aW9uIHNl
cmlhbGl6ZShvYmplY3QpIHsKKyAgICB2YXIgb3V0OworCisgICAgaWYgKGFuZ3VsYXIuaXNFbGVt
ZW50KG9iamVjdCkpIHsKKyAgICAgIG9iamVjdCA9IGFuZ3VsYXIuZWxlbWVudChvYmplY3QpOwor
ICAgICAgb3V0ID0gYW5ndWxhci5lbGVtZW50KCc8ZGl2PjwvZGl2PicpOworICAgICAgYW5ndWxh
ci5mb3JFYWNoKG9iamVjdCwgZnVuY3Rpb24oZWxlbWVudCkgeworICAgICAgICBvdXQuYXBwZW5k
KGFuZ3VsYXIuZWxlbWVudChlbGVtZW50KS5jbG9uZSgpKTsKKyAgICAgIH0pOworICAgICAgb3V0
ID0gb3V0Lmh0bWwoKTsKKyAgICB9IGVsc2UgaWYgKGFuZ3VsYXIuaXNBcnJheShvYmplY3QpKSB7
CisgICAgICBvdXQgPSBbXTsKKyAgICAgIGFuZ3VsYXIuZm9yRWFjaChvYmplY3QsIGZ1bmN0aW9u
KG8pIHsKKyAgICAgICAgb3V0LnB1c2goc2VyaWFsaXplKG8pKTsKKyAgICAgIH0pOworICAgICAg
b3V0ID0gJ1sgJyArIG91dC5qb2luKCcsICcpICsgJyBdJzsKKyAgICB9IGVsc2UgaWYgKGFuZ3Vs
YXIuaXNPYmplY3Qob2JqZWN0KSkgeworICAgICAgaWYgKGFuZ3VsYXIuaXNGdW5jdGlvbihvYmpl
Y3QuJGV2YWwpICYmIGFuZ3VsYXIuaXNGdW5jdGlvbihvYmplY3QuJGFwcGx5KSkgeworICAgICAg
ICBvdXQgPSBzZXJpYWxpemVTY29wZShvYmplY3QpOworICAgICAgfSBlbHNlIGlmIChvYmplY3Qg
aW5zdGFuY2VvZiBFcnJvcikgeworICAgICAgICBvdXQgPSBvYmplY3Quc3RhY2sgfHwgKCcnICsg
b2JqZWN0Lm5hbWUgKyAnOiAnICsgb2JqZWN0Lm1lc3NhZ2UpOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgLy8gVE9ETyhpKTogdGhpcyBwcmV2ZW50cyBtZXRob2RzIGJlaW5nIGxvZ2dlZCwKKyAg
ICAgICAgLy8gd2Ugc2hvdWxkIGhhdmUgYSBiZXR0ZXIgd2F5IHRvIHNlcmlhbGl6ZSBvYmplY3Rz
CisgICAgICAgIG91dCA9IGFuZ3VsYXIudG9Kc29uKG9iamVjdCwgdHJ1ZSk7CisgICAgICB9Cisg
ICAgfSBlbHNlIHsKKyAgICAgIG91dCA9IFN0cmluZyhvYmplY3QpOworICAgIH0KKworICAgIHJl
dHVybiBvdXQ7CisgIH0KKworICBmdW5jdGlvbiBzZXJpYWxpemVTY29wZShzY29wZSwgb2Zmc2V0
KSB7CisgICAgb2Zmc2V0ID0gb2Zmc2V0IHx8ICAnICAnOworICAgIHZhciBsb2cgPSBbb2Zmc2V0
ICsgJ1Njb3BlKCcgKyBzY29wZS4kaWQgKyAnKTogeyddOworICAgIGZvciAodmFyIGtleSBpbiBz
Y29wZSkgeworICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChz
Y29wZSwga2V5KSAmJiAha2V5Lm1hdGNoKC9eKFwkfHRoaXMpLykpIHsKKyAgICAgICAgbG9nLnB1
c2goJyAgJyArIGtleSArICc6ICcgKyBhbmd1bGFyLnRvSnNvbihzY29wZVtrZXldKSk7CisgICAg
ICB9CisgICAgfQorICAgIHZhciBjaGlsZCA9IHNjb3BlLiQkY2hpbGRIZWFkOworICAgIHdoaWxl
IChjaGlsZCkgeworICAgICAgbG9nLnB1c2goc2VyaWFsaXplU2NvcGUoY2hpbGQsIG9mZnNldCAr
ICcgICcpKTsKKyAgICAgIGNoaWxkID0gY2hpbGQuJCRuZXh0U2libGluZzsKKyAgICB9CisgICAg
bG9nLnB1c2goJ30nKTsKKyAgICByZXR1cm4gbG9nLmpvaW4oJ1xuJyArIG9mZnNldCk7CisgIH0K
K307CisKKy8qKgorICogQG5nZG9jIHNlcnZpY2UKKyAqIEBuYW1lICRodHRwQmFja2VuZAorICog
QGRlc2NyaXB0aW9uCisgKiBGYWtlIEhUVFAgYmFja2VuZCBpbXBsZW1lbnRhdGlvbiBzdWl0YWJs
ZSBmb3IgdW5pdCB0ZXN0aW5nIGFwcGxpY2F0aW9ucyB0aGF0IHVzZSB0aGUKKyAqIHtAbGluayBu
Zy4kaHR0cCAkaHR0cCBzZXJ2aWNlfS4KKyAqCisgKiA8ZGl2IGNsYXNzPSJhbGVydCBhbGVydC1p
bmZvIj4KKyAqICoqTm90ZSoqOiBGb3IgZmFrZSBIVFRQIGJhY2tlbmQgaW1wbGVtZW50YXRpb24g
c3VpdGFibGUgZm9yIGVuZC10by1lbmQgdGVzdGluZyBvciBiYWNrZW5kLWxlc3MKKyAqIGRldmVs
b3BtZW50IHBsZWFzZSBzZWUge0BsaW5rIG5nTW9ja0UyRS4kaHR0cEJhY2tlbmQgZTJlICRodHRw
QmFja2VuZCBtb2NrfS4KKyAqIDwvZGl2PgorICoKKyAqIER1cmluZyB1bml0IHRlc3RpbmcsIHdl
IHdhbnQgb3VyIHVuaXQgdGVzdHMgdG8gcnVuIHF1aWNrbHkgYW5kIGhhdmUgbm8gZXh0ZXJuYWwg
ZGVwZW5kZW5jaWVzIHNvCisgKiB3ZSBkb27igJl0IHdhbnQgdG8gc2VuZCBbWEhSXShodHRwczov
L2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi94bWxodHRwcmVxdWVzdCkgb3IKKyAqIFtKU09OUF0o
aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9KU09OUCkgcmVxdWVzdHMgdG8gYSByZWFsIHNl
cnZlci4gQWxsIHdlIHJlYWxseSBuZWVkIGlzCisgKiB0byB2ZXJpZnkgd2hldGhlciBhIGNlcnRh
aW4gcmVxdWVzdCBoYXMgYmVlbiBzZW50IG9yIG5vdCwgb3IgYWx0ZXJuYXRpdmVseSBqdXN0IGxl
dCB0aGUKKyAqIGFwcGxpY2F0aW9uIG1ha2UgcmVxdWVzdHMsIHJlc3BvbmQgd2l0aCBwcmUtdHJh
aW5lZCByZXNwb25zZXMgYW5kIGFzc2VydCB0aGF0IHRoZSBlbmQgcmVzdWx0IGlzCisgKiB3aGF0
IHdlIGV4cGVjdCBpdCB0byBiZS4KKyAqCisgKiBUaGlzIG1vY2sgaW1wbGVtZW50YXRpb24gY2Fu
IGJlIHVzZWQgdG8gcmVzcG9uZCB3aXRoIHN0YXRpYyBvciBkeW5hbWljIHJlc3BvbnNlcyB2aWEg
dGhlCisgKiBgZXhwZWN0YCBhbmQgYHdoZW5gIGFwaXMgYW5kIHRoZWlyIHNob3J0Y3V0cyAoYGV4
cGVjdEdFVGAsIGB3aGVuUE9TVGAsIGV0YykuCisgKgorICogV2hlbiBhbiBBbmd1bGFyIGFwcGxp
Y2F0aW9uIG5lZWRzIHNvbWUgZGF0YSBmcm9tIGEgc2VydmVyLCBpdCBjYWxscyB0aGUgJGh0dHAg
c2VydmljZSwgd2hpY2gKKyAqIHNlbmRzIHRoZSByZXF1ZXN0IHRvIGEgcmVhbCBzZXJ2ZXIgdXNp
bmcgJGh0dHBCYWNrZW5kIHNlcnZpY2UuIFdpdGggZGVwZW5kZW5jeSBpbmplY3Rpb24sIGl0IGlz
CisgKiBlYXN5IHRvIGluamVjdCAkaHR0cEJhY2tlbmQgbW9jayAod2hpY2ggaGFzIHRoZSBzYW1l
IEFQSSBhcyAkaHR0cEJhY2tlbmQpIGFuZCB1c2UgaXQgdG8gdmVyaWZ5CisgKiB0aGUgcmVxdWVz
dHMgYW5kIHJlc3BvbmQgd2l0aCBzb21lIHRlc3RpbmcgZGF0YSB3aXRob3V0IHNlbmRpbmcgYSBy
ZXF1ZXN0IHRvIGEgcmVhbCBzZXJ2ZXIuCisgKgorICogVGhlcmUgYXJlIHR3byB3YXlzIHRvIHNw
ZWNpZnkgd2hhdCB0ZXN0IGRhdGEgc2hvdWxkIGJlIHJldHVybmVkIGFzIGh0dHAgcmVzcG9uc2Vz
IGJ5IHRoZSBtb2NrCisgKiBiYWNrZW5kIHdoZW4gdGhlIGNvZGUgdW5kZXIgdGVzdCBtYWtlcyBo
dHRwIHJlcXVlc3RzOgorICoKKyAqIC0gYCRodHRwQmFja2VuZC5leHBlY3RgIC0gc3BlY2lmaWVz
IGEgcmVxdWVzdCBleHBlY3RhdGlvbgorICogLSBgJGh0dHBCYWNrZW5kLndoZW5gIC0gc3BlY2lm
aWVzIGEgYmFja2VuZCBkZWZpbml0aW9uCisgKgorICoKKyAqICMjIFJlcXVlc3QgRXhwZWN0YXRp
b25zIHZzIEJhY2tlbmQgRGVmaW5pdGlvbnMKKyAqCisgKiBSZXF1ZXN0IGV4cGVjdGF0aW9ucyBw
cm92aWRlIGEgd2F5IHRvIG1ha2UgYXNzZXJ0aW9ucyBhYm91dCByZXF1ZXN0cyBtYWRlIGJ5IHRo
ZSBhcHBsaWNhdGlvbiBhbmQKKyAqIHRvIGRlZmluZSByZXNwb25zZXMgZm9yIHRob3NlIHJlcXVl
c3RzLiBUaGUgdGVzdCB3aWxsIGZhaWwgaWYgdGhlIGV4cGVjdGVkIHJlcXVlc3RzIGFyZSBub3Qg
bWFkZQorICogb3IgdGhleSBhcmUgbWFkZSBpbiB0aGUgd3Jvbmcgb3JkZXIuCisgKgorICogQmFj
a2VuZCBkZWZpbml0aW9ucyBhbGxvdyB5b3UgdG8gZGVmaW5lIGEgZmFrZSBiYWNrZW5kIGZvciB5
b3VyIGFwcGxpY2F0aW9uIHdoaWNoIGRvZXNuJ3QgYXNzZXJ0CisgKiBpZiBhIHBhcnRpY3VsYXIg
cmVxdWVzdCB3YXMgbWFkZSBvciBub3QsIGl0IGp1c3QgcmV0dXJucyBhIHRyYWluZWQgcmVzcG9u
c2UgaWYgYSByZXF1ZXN0IGlzIG1hZGUuCisgKiBUaGUgdGVzdCB3aWxsIHBhc3Mgd2hldGhlciBv
ciBub3QgdGhlIHJlcXVlc3QgZ2V0cyBtYWRlIGR1cmluZyB0ZXN0aW5nLgorICoKKyAqCisgKiA8
dGFibGUgY2xhc3M9InRhYmxlIj4KKyAqICAgPHRyPjx0aCB3aWR0aD0iMjIwcHgiPjwvdGg+PHRo
PlJlcXVlc3QgZXhwZWN0YXRpb25zPC90aD48dGg+QmFja2VuZCBkZWZpbml0aW9uczwvdGg+PC90
cj4KKyAqICAgPHRyPgorICogICAgIDx0aD5TeW50YXg8L3RoPgorICogICAgIDx0ZD4uZXhwZWN0
KC4uLikucmVzcG9uZCguLi4pPC90ZD4KKyAqICAgICA8dGQ+LndoZW4oLi4uKS5yZXNwb25kKC4u
Lik8L3RkPgorICogICA8L3RyPgorICogICA8dHI+CisgKiAgICAgPHRoPlR5cGljYWwgdXNhZ2U8
L3RoPgorICogICAgIDx0ZD5zdHJpY3QgdW5pdCB0ZXN0czwvdGQ+CisgKiAgICAgPHRkPmxvb3Nl
IChibGFjay1ib3gpIHVuaXQgdGVzdGluZzwvdGQ+CisgKiAgIDwvdHI+CisgKiAgIDx0cj4KKyAq
ICAgICA8dGg+RnVsZmlsbHMgbXVsdGlwbGUgcmVxdWVzdHM8L3RoPgorICogICAgIDx0ZD5OTzwv
dGQ+CisgKiAgICAgPHRkPllFUzwvdGQ+CisgKiAgIDwvdHI+CisgKiAgIDx0cj4KKyAqICAgICA8
dGg+T3JkZXIgb2YgcmVxdWVzdHMgbWF0dGVyczwvdGg+CisgKiAgICAgPHRkPllFUzwvdGQ+Cisg
KiAgICAgPHRkPk5PPC90ZD4KKyAqICAgPC90cj4KKyAqICAgPHRyPgorICogICAgIDx0aD5SZXF1
ZXN0IHJlcXVpcmVkPC90aD4KKyAqICAgICA8dGQ+WUVTPC90ZD4KKyAqICAgICA8dGQ+Tk88L3Rk
PgorICogICA8L3RyPgorICogICA8dHI+CisgKiAgICAgPHRoPlJlc3BvbnNlIHJlcXVpcmVkPC90
aD4KKyAqICAgICA8dGQ+b3B0aW9uYWwgKHNlZSBiZWxvdyk8L3RkPgorICogICAgIDx0ZD5ZRVM8
L3RkPgorICogICA8L3RyPgorICogPC90YWJsZT4KKyAqCisgKiBJbiBjYXNlcyB3aGVyZSBib3Ro
IGJhY2tlbmQgZGVmaW5pdGlvbnMgYW5kIHJlcXVlc3QgZXhwZWN0YXRpb25zIGFyZSBzcGVjaWZp
ZWQgZHVyaW5nIHVuaXQKKyAqIHRlc3RpbmcsIHRoZSByZXF1ZXN0IGV4cGVjdGF0aW9ucyBhcmUg
ZXZhbHVhdGVkIGZpcnN0LgorICoKKyAqIElmIGEgcmVxdWVzdCBleHBlY3RhdGlvbiBoYXMgbm8g
cmVzcG9uc2Ugc3BlY2lmaWVkLCB0aGUgYWxnb3JpdGhtIHdpbGwgc2VhcmNoIHlvdXIgYmFja2Vu
ZAorICogZGVmaW5pdGlvbnMgZm9yIGFuIGFwcHJvcHJpYXRlIHJlc3BvbnNlLgorICoKKyAqIElm
IGEgcmVxdWVzdCBkaWRuJ3QgbWF0Y2ggYW55IGV4cGVjdGF0aW9uIG9yIGlmIHRoZSBleHBlY3Rh
dGlvbiBkb2Vzbid0IGhhdmUgdGhlIHJlc3BvbnNlCisgKiBkZWZpbmVkLCB0aGUgYmFja2VuZCBk
ZWZpbml0aW9ucyBhcmUgZXZhbHVhdGVkIGluIHNlcXVlbnRpYWwgb3JkZXIgdG8gc2VlIGlmIGFu
eSBvZiB0aGVtIG1hdGNoCisgKiB0aGUgcmVxdWVzdC4gVGhlIHJlc3BvbnNlIGZyb20gdGhlIGZp
cnN0IG1hdGNoZWQgZGVmaW5pdGlvbiBpcyByZXR1cm5lZC4KKyAqCisgKgorICogIyMgRmx1c2hp
bmcgSFRUUCByZXF1ZXN0cworICoKKyAqIFRoZSAkaHR0cEJhY2tlbmQgdXNlZCBpbiBwcm9kdWN0
aW9uIGFsd2F5cyByZXNwb25kcyB0byByZXF1ZXN0cyBhc3luY2hyb25vdXNseS4gSWYgd2UgcHJl
c2VydmVkCisgKiB0aGlzIGJlaGF2aW9yIGluIHVuaXQgdGVzdGluZywgd2UnZCBoYXZlIHRvIGNy
ZWF0ZSBhc3luYyB1bml0IHRlc3RzLCB3aGljaCBhcmUgaGFyZCB0byB3cml0ZSwKKyAqIHRvIGZv
bGxvdyBhbmQgdG8gbWFpbnRhaW4uIEJ1dCBuZWl0aGVyIGNhbiB0aGUgdGVzdGluZyBtb2NrIHJl
c3BvbmQgc3luY2hyb25vdXNseTsgdGhhdCB3b3VsZAorICogY2hhbmdlIHRoZSBleGVjdXRpb24g
b2YgdGhlIGNvZGUgdW5kZXIgdGVzdC4gRm9yIHRoaXMgcmVhc29uLCB0aGUgbW9jayAkaHR0cEJh
Y2tlbmQgaGFzIGEKKyAqIGBmbHVzaCgpYCBtZXRob2QsIHdoaWNoIGFsbG93cyB0aGUgdGVzdCB0
byBleHBsaWNpdGx5IGZsdXNoIHBlbmRpbmcgcmVxdWVzdHMuIFRoaXMgcHJlc2VydmVzCisgKiB0
aGUgYXN5bmMgYXBpIG9mIHRoZSBiYWNrZW5kLCB3aGlsZSBhbGxvd2luZyB0aGUgdGVzdCB0byBl
eGVjdXRlIHN5bmNocm9ub3VzbHkuCisgKgorICoKKyAqICMjIFVuaXQgdGVzdGluZyB3aXRoIG1v
Y2sgJGh0dHBCYWNrZW5kCisgKiBUaGUgZm9sbG93aW5nIGNvZGUgc2hvd3MgaG93IHRvIHNldHVw
IGFuZCB1c2UgdGhlIG1vY2sgYmFja2VuZCB3aGVuIHVuaXQgdGVzdGluZyBhIGNvbnRyb2xsZXIu
CisgKiBGaXJzdCB3ZSBjcmVhdGUgdGhlIGNvbnRyb2xsZXIgdW5kZXIgdGVzdDoKKyAqCisgIGBg
YGpzCisgIC8vIFRoZSBtb2R1bGUgY29kZQorICBhbmd1bGFyCisgICAgLm1vZHVsZSgnTXlBcHAn
LCBbXSkKKyAgICAuY29udHJvbGxlcignTXlDb250cm9sbGVyJywgTXlDb250cm9sbGVyKTsKKwor
ICAvLyBUaGUgY29udHJvbGxlciBjb2RlCisgIGZ1bmN0aW9uIE15Q29udHJvbGxlcigkc2NvcGUs
ICRodHRwKSB7CisgICAgdmFyIGF1dGhUb2tlbjsKKworICAgICRodHRwLmdldCgnL2F1dGgucHkn
KS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7CisgICAgICBhdXRoVG9rZW4gPSByZXNwb25zZS5o
ZWFkZXJzKCdBLVRva2VuJyk7CisgICAgICAkc2NvcGUudXNlciA9IHJlc3BvbnNlLmRhdGE7Cisg
ICAgfSk7CisKKyAgICAkc2NvcGUuc2F2ZU1lc3NhZ2UgPSBmdW5jdGlvbihtZXNzYWdlKSB7Cisg
ICAgICB2YXIgaGVhZGVycyA9IHsgJ0F1dGhvcml6YXRpb24nOiBhdXRoVG9rZW4gfTsKKyAgICAg
ICRzY29wZS5zdGF0dXMgPSAnU2F2aW5nLi4uJzsKKworICAgICAgJGh0dHAucG9zdCgnL2FkZC1t
c2cucHknLCBtZXNzYWdlLCB7IGhlYWRlcnM6IGhlYWRlcnMgfSApLnRoZW4oZnVuY3Rpb24ocmVz
cG9uc2UpIHsKKyAgICAgICAgJHNjb3BlLnN0YXR1cyA9ICcnOworICAgICAgfSlbJ2NhdGNoJ10o
ZnVuY3Rpb24oKSB7CisgICAgICAgICRzY29wZS5zdGF0dXMgPSAnRmFpbGVkLi4uJzsKKyAgICAg
IH0pOworICAgIH07CisgIH0KKyAgYGBgCisgKgorICogTm93IHdlIHNldHVwIHRoZSBtb2NrIGJh
Y2tlbmQgYW5kIGNyZWF0ZSB0aGUgdGVzdCBzcGVjczoKKyAqCisgIGBgYGpzCisgICAgLy8gdGVz
dGluZyBjb250cm9sbGVyCisgICAgZGVzY3JpYmUoJ015Q29udHJvbGxlcicsIGZ1bmN0aW9uKCkg
eworICAgICAgIHZhciAkaHR0cEJhY2tlbmQsICRyb290U2NvcGUsIGNyZWF0ZUNvbnRyb2xsZXIs
IGF1dGhSZXF1ZXN0SGFuZGxlcjsKKworICAgICAgIC8vIFNldCB1cCB0aGUgbW9kdWxlCisgICAg
ICAgYmVmb3JlRWFjaChtb2R1bGUoJ015QXBwJykpOworCisgICAgICAgYmVmb3JlRWFjaChpbmpl
Y3QoZnVuY3Rpb24oJGluamVjdG9yKSB7CisgICAgICAgICAvLyBTZXQgdXAgdGhlIG1vY2sgaHR0
cCBzZXJ2aWNlIHJlc3BvbnNlcworICAgICAgICAgJGh0dHBCYWNrZW5kID0gJGluamVjdG9yLmdl
dCgnJGh0dHBCYWNrZW5kJyk7CisgICAgICAgICAvLyBiYWNrZW5kIGRlZmluaXRpb24gY29tbW9u
IGZvciBhbGwgdGVzdHMKKyAgICAgICAgIGF1dGhSZXF1ZXN0SGFuZGxlciA9ICRodHRwQmFja2Vu
ZC53aGVuKCdHRVQnLCAnL2F1dGgucHknKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAucmVzcG9uZCh7dXNlcklkOiAndXNlclgnfSwgeydBLVRva2VuJzogJ3h4eCd9KTsKKworICAg
ICAgICAgLy8gR2V0IGhvbGQgb2YgYSBzY29wZSAoaS5lLiB0aGUgcm9vdCBzY29wZSkKKyAgICAg
ICAgICRyb290U2NvcGUgPSAkaW5qZWN0b3IuZ2V0KCckcm9vdFNjb3BlJyk7CisgICAgICAgICAv
LyBUaGUgJGNvbnRyb2xsZXIgc2VydmljZSBpcyB1c2VkIHRvIGNyZWF0ZSBpbnN0YW5jZXMgb2Yg
Y29udHJvbGxlcnMKKyAgICAgICAgIHZhciAkY29udHJvbGxlciA9ICRpbmplY3Rvci5nZXQoJyRj
b250cm9sbGVyJyk7CisKKyAgICAgICAgIGNyZWF0ZUNvbnRyb2xsZXIgPSBmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgcmV0dXJuICRjb250cm9sbGVyKCdNeUNvbnRyb2xsZXInLCB7JyRzY29wZScg
OiAkcm9vdFNjb3BlIH0pOworICAgICAgICAgfTsKKyAgICAgICB9KSk7CisKKworICAgICAgIGFm
dGVyRWFjaChmdW5jdGlvbigpIHsKKyAgICAgICAgICRodHRwQmFja2VuZC52ZXJpZnlOb091dHN0
YW5kaW5nRXhwZWN0YXRpb24oKTsKKyAgICAgICAgICRodHRwQmFja2VuZC52ZXJpZnlOb091dHN0
YW5kaW5nUmVxdWVzdCgpOworICAgICAgIH0pOworCisKKyAgICAgICBpdCgnc2hvdWxkIGZldGNo
IGF1dGhlbnRpY2F0aW9uIHRva2VuJywgZnVuY3Rpb24oKSB7CisgICAgICAgICAkaHR0cEJhY2tl
bmQuZXhwZWN0R0VUKCcvYXV0aC5weScpOworICAgICAgICAgdmFyIGNvbnRyb2xsZXIgPSBjcmVh
dGVDb250cm9sbGVyKCk7CisgICAgICAgICAkaHR0cEJhY2tlbmQuZmx1c2goKTsKKyAgICAgICB9
KTsKKworCisgICAgICAgaXQoJ3Nob3VsZCBmYWlsIGF1dGhlbnRpY2F0aW9uJywgZnVuY3Rpb24o
KSB7CisKKyAgICAgICAgIC8vIE5vdGljZSBob3cgeW91IGNhbiBjaGFuZ2UgdGhlIHJlc3BvbnNl
IGV2ZW4gYWZ0ZXIgaXQgd2FzIHNldAorICAgICAgICAgYXV0aFJlcXVlc3RIYW5kbGVyLnJlc3Bv
bmQoNDAxLCAnJyk7CisKKyAgICAgICAgICRodHRwQmFja2VuZC5leHBlY3RHRVQoJy9hdXRoLnB5
Jyk7CisgICAgICAgICB2YXIgY29udHJvbGxlciA9IGNyZWF0ZUNvbnRyb2xsZXIoKTsKKyAgICAg
ICAgICRodHRwQmFja2VuZC5mbHVzaCgpOworICAgICAgICAgZXhwZWN0KCRyb290U2NvcGUuc3Rh
dHVzKS50b0JlKCdGYWlsZWQuLi4nKTsKKyAgICAgICB9KTsKKworCisgICAgICAgaXQoJ3Nob3Vs
ZCBzZW5kIG1zZyB0byBzZXJ2ZXInLCBmdW5jdGlvbigpIHsKKyAgICAgICAgIHZhciBjb250cm9s
bGVyID0gY3JlYXRlQ29udHJvbGxlcigpOworICAgICAgICAgJGh0dHBCYWNrZW5kLmZsdXNoKCk7
CisKKyAgICAgICAgIC8vIG5vdyB5b3UgZG9u4oCZdCBjYXJlIGFib3V0IHRoZSBhdXRoZW50aWNh
dGlvbiwgYnV0CisgICAgICAgICAvLyB0aGUgY29udHJvbGxlciB3aWxsIHN0aWxsIHNlbmQgdGhl
IHJlcXVlc3QgYW5kCisgICAgICAgICAvLyAkaHR0cEJhY2tlbmQgd2lsbCByZXNwb25kIHdpdGhv
dXQgeW91IGhhdmluZyB0bworICAgICAgICAgLy8gc3BlY2lmeSB0aGUgZXhwZWN0YXRpb24gYW5k
IHJlc3BvbnNlIGZvciB0aGlzIHJlcXVlc3QKKworICAgICAgICAgJGh0dHBCYWNrZW5kLmV4cGVj
dFBPU1QoJy9hZGQtbXNnLnB5JywgJ21lc3NhZ2UgY29udGVudCcpLnJlc3BvbmQoMjAxLCAnJyk7
CisgICAgICAgICAkcm9vdFNjb3BlLnNhdmVNZXNzYWdlKCdtZXNzYWdlIGNvbnRlbnQnKTsKKyAg
ICAgICAgIGV4cGVjdCgkcm9vdFNjb3BlLnN0YXR1cykudG9CZSgnU2F2aW5nLi4uJyk7CisgICAg
ICAgICAkaHR0cEJhY2tlbmQuZmx1c2goKTsKKyAgICAgICAgIGV4cGVjdCgkcm9vdFNjb3BlLnN0
YXR1cykudG9CZSgnJyk7CisgICAgICAgfSk7CisKKworICAgICAgIGl0KCdzaG91bGQgc2VuZCBh
dXRoIGhlYWRlcicsIGZ1bmN0aW9uKCkgeworICAgICAgICAgdmFyIGNvbnRyb2xsZXIgPSBjcmVh
dGVDb250cm9sbGVyKCk7CisgICAgICAgICAkaHR0cEJhY2tlbmQuZmx1c2goKTsKKworICAgICAg
ICAgJGh0dHBCYWNrZW5kLmV4cGVjdFBPU1QoJy9hZGQtbXNnLnB5JywgdW5kZWZpbmVkLCBmdW5j
dGlvbihoZWFkZXJzKSB7CisgICAgICAgICAgIC8vIGNoZWNrIGlmIHRoZSBoZWFkZXIgd2FzIHNl
bnQsIGlmIGl0IHdhc24ndCB0aGUgZXhwZWN0YXRpb24gd29uJ3QKKyAgICAgICAgICAgLy8gbWF0
Y2ggdGhlIHJlcXVlc3QgYW5kIHRoZSB0ZXN0IHdpbGwgZmFpbAorICAgICAgICAgICByZXR1cm4g
aGVhZGVyc1snQXV0aG9yaXphdGlvbiddID09PSAneHh4JzsKKyAgICAgICAgIH0pLnJlc3BvbmQo
MjAxLCAnJyk7CisKKyAgICAgICAgICRyb290U2NvcGUuc2F2ZU1lc3NhZ2UoJ3doYXRldmVyJyk7
CisgICAgICAgICAkaHR0cEJhY2tlbmQuZmx1c2goKTsKKyAgICAgICB9KTsKKyAgICB9KTsKKyAg
YGBgCisgKgorICogIyMgRHluYW1pYyByZXNwb25zZXMKKyAqCisgKiBZb3UgZGVmaW5lIGEgcmVz
cG9uc2UgdG8gYSByZXF1ZXN0IGJ5IGNoYWluaW5nIGEgY2FsbCB0byBgcmVzcG9uZCgpYCBvbnRv
IGEgZGVmaW5pdGlvbiBvciBleHBlY3RhdGlvbi4KKyAqIElmIHlvdSBwcm92aWRlIGEgKipjYWxs
YmFjayoqIGFzIHRoZSBmaXJzdCBwYXJhbWV0ZXIgdG8gYHJlc3BvbmQoY2FsbGJhY2spYCB0aGVu
IHlvdSBjYW4gZHluYW1pY2FsbHkgZ2VuZXJhdGUKKyAqIGEgcmVzcG9uc2UgYmFzZWQgb24gdGhl
IHByb3BlcnRpZXMgb2YgdGhlIHJlcXVlc3QuCisgKgorICogVGhlIGBjYWxsYmFja2AgZnVuY3Rp
b24gc2hvdWxkIGJlIG9mIHRoZSBmb3JtIGBmdW5jdGlvbihtZXRob2QsIHVybCwgZGF0YSwgaGVh
ZGVycywgcGFyYW1zKWAuCisgKgorICogIyMjIFF1ZXJ5IHBhcmFtZXRlcnMKKyAqCisgKiBCeSBk
ZWZhdWx0LCBxdWVyeSBwYXJhbWV0ZXJzIG9uIHJlcXVlc3QgVVJMcyBhcmUgcGFyc2VkIGludG8g
dGhlIGBwYXJhbXNgIG9iamVjdC4gU28gYSByZXF1ZXN0IFVSTAorICogb2YgYC9saXN0P3E9c2Vh
cmNoc3RyJm9yZGVyYnk9LW5hbWVgIHdvdWxkIHNldCBgcGFyYW1zYCB0byBiZSBge3E6ICdzZWFy
Y2hzdHInLCBvcmRlcmJ5OiAnLW5hbWUnfWAuCisgKgorICogIyMjIFJlZ2V4IHBhcmFtZXRlciBt
YXRjaGluZworICoKKyAqIElmIGFuIGV4cGVjdGF0aW9uIG9yIGRlZmluaXRpb24gdXNlcyBhICoq
cmVnZXgqKiB0byBtYXRjaCB0aGUgVVJMLCB5b3UgY2FuIHByb3ZpZGUgYW4gYXJyYXkgb2YgKipr
ZXlzKiogdmlhIGEKKyAqIGBwYXJhbXNgIGFyZ3VtZW50LiBUaGUgaW5kZXggb2YgZWFjaCAqKmtl
eSoqIGluIHRoZSBhcnJheSB3aWxsIG1hdGNoIHRoZSBpbmRleCBvZiBhICoqZ3JvdXAqKiBpbiB0
aGUKKyAqICoqcmVnZXgqKi4KKyAqCisgKiBUaGUgYHBhcmFtc2Agb2JqZWN0IGluIHRoZSAqKmNh
bGxiYWNrKiogd2lsbCBub3cgaGF2ZSBwcm9wZXJ0aWVzIHdpdGggdGhlc2Uga2V5cywgd2hpY2gg
aG9sZCB0aGUgdmFsdWUgb2YgdGhlCisgKiBjb3JyZXNwb25kaW5nICoqZ3JvdXAqKiBpbiB0aGUg
KipyZWdleCoqLgorICoKKyAqIFRoaXMgYWxzbyBhcHBsaWVzIHRvIHRoZSBgd2hlbmAgYW5kIGBl
eHBlY3RgIHNob3J0Y3V0IG1ldGhvZHMuCisgKgorICoKKyAqIGBgYGpzCisgKiAgICRodHRwQmFj
a2VuZC5leHBlY3QoJ0dFVCcsIC9cL3VzZXJcLyguKykvLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwg
WydpZCddKQorICogICAgIC5yZXNwb25kKGZ1bmN0aW9uKG1ldGhvZCwgdXJsLCBkYXRhLCBoZWFk
ZXJzLCBwYXJhbXMpIHsKKyAqICAgICAgIC8vIGZvciByZXF1ZXN0ZWQgdXJsIG9mICcvdXNlci8x
MjM0JyBwYXJhbXMgaXMge2lkOiAnMTIzNCd9CisgKiAgICAgfSk7CisgKgorICogICAkaHR0cEJh
Y2tlbmQud2hlblBBVENIKC9cL3VzZXJcLyguKylcL2FydGljbGVcLyguKykvLCB1bmRlZmluZWQs
IHVuZGVmaW5lZCwgWyd1c2VyJywgJ2FydGljbGUnXSkKKyAqICAgICAucmVzcG9uZChmdW5jdGlv
bihtZXRob2QsIHVybCwgZGF0YSwgaGVhZGVycywgcGFyYW1zKSB7CisgKiAgICAgICAvLyBmb3Ig
dXJsIG9mICcvdXNlci8xMjM0L2FydGljbGUvNTY3JyBwYXJhbXMgaXMge3VzZXI6ICcxMjM0Jywg
YXJ0aWNsZTogJzU2Nyd9CisgKiAgICAgfSk7CisgKiBgYGAKKyAqCisgKiAjIyBNYXRjaGluZyBy
b3V0ZSByZXF1ZXN0cworICoKKyAqIEZvciBleHRyYSBjb252ZW5pZW5jZSwgYHdoZW5Sb3V0ZWAg
YW5kIGBleHBlY3RSb3V0ZWAgc2hvcnRjdXRzIGFyZSBhdmFpbGFibGUuIFRoZXNlIG1ldGhvZHMg
b2ZmZXIgY29sb24KKyAqIGRlbGltaXRlZCBtYXRjaGluZyBvZiB0aGUgdXJsIHBhdGgsIGlnbm9y
aW5nIHRoZSBxdWVyeSBzdHJpbmcuIFRoaXMgYWxsb3dzIGRlY2xhcmF0aW9ucworICogc2ltaWxh
ciB0byBob3cgYXBwbGljYXRpb24gcm91dGVzIGFyZSBjb25maWd1cmVkIHdpdGggYCRyb3V0ZVBy
b3ZpZGVyYC4gQmVjYXVzZSB0aGVzZSBtZXRob2RzIGNvbnZlcnQKKyAqIHRoZSBkZWZpbml0aW9u
IHVybCB0byByZWdleCwgZGVjbGFyYXRpb24gb3JkZXIgaXMgaW1wb3J0YW50LiBDb21iaW5lZCB3
aXRoIHF1ZXJ5IHBhcmFtZXRlciBwYXJzaW5nLAorICogdGhlIGZvbGxvd2luZyBpcyBwb3NzaWJs
ZToKKyAqCisgIGBgYGpzCisgICAgJGh0dHBCYWNrZW5kLndoZW5Sb3V0ZSgnR0VUJywgJy91c2Vy
cy86aWQnKQorICAgICAgLnJlc3BvbmQoZnVuY3Rpb24obWV0aG9kLCB1cmwsIGRhdGEsIGhlYWRl
cnMsIHBhcmFtcykgeworICAgICAgICByZXR1cm4gWzIwMCwgTW9ja1VzZXJMaXN0W051bWJlcihw
YXJhbXMuaWQpXV07CisgICAgICB9KTsKKworICAgICRodHRwQmFja2VuZC53aGVuUm91dGUoJ0dF
VCcsICcvdXNlcnMnKQorICAgICAgLnJlc3BvbmQoZnVuY3Rpb24obWV0aG9kLCB1cmwsIGRhdGEs
IGhlYWRlcnMsIHBhcmFtcykgeworICAgICAgICB2YXIgdXNlckxpc3QgPSBhbmd1bGFyLmNvcHko
TW9ja1VzZXJMaXN0KSwKKyAgICAgICAgICBkZWZhdWx0U29ydCA9ICdsYXN0TmFtZScsCisgICAg
ICAgICAgY291bnQsIHBhZ2VzLCBpc1ByZXZpb3VzLCBpc05leHQ7CisKKyAgICAgICAgLy8gcGFn
ZWQgYXBpIHJlc3BvbnNlICcvdjEvdXNlcnM/cGFnZT0yJworICAgICAgICBwYXJhbXMucGFnZSA9
IE51bWJlcihwYXJhbXMucGFnZSkgfHwgMTsKKworICAgICAgICAvLyBxdWVyeSBmb3IgbGFzdCBu
YW1lcyAnL3YxL3VzZXJzP3E9QXJjaGVyJworICAgICAgICBpZiAocGFyYW1zLnEpIHsKKyAgICAg
ICAgICB1c2VyTGlzdCA9ICRmaWx0ZXIoJ2ZpbHRlcicpKHtsYXN0TmFtZTogcGFyYW1zLnF9KTsK
KyAgICAgICAgfQorCisgICAgICAgIHBhZ2VzID0gTWF0aC5jZWlsKHVzZXJMaXN0Lmxlbmd0aCAv
IHBhZ2luZ0xlbmd0aCk7CisgICAgICAgIGlzUHJldmlvdXMgPSBwYXJhbXMucGFnZSA+IDE7Cisg
ICAgICAgIGlzTmV4dCA9IHBhcmFtcy5wYWdlIDwgcGFnZXM7CisKKyAgICAgICAgcmV0dXJuIFsy
MDAsIHsKKyAgICAgICAgICBjb3VudDogICAgdXNlckxpc3QubGVuZ3RoLAorICAgICAgICAgIHBy
ZXZpb3VzOiBpc1ByZXZpb3VzLAorICAgICAgICAgIG5leHQ6ICAgICBpc05leHQsCisgICAgICAg
ICAgLy8gc29ydCBmaWVsZCAtPiAnL3YxL3VzZXJzP3NvcnRCeT1maXJzdE5hbWUnCisgICAgICAg
ICAgcmVzdWx0czogICRmaWx0ZXIoJ29yZGVyQnknKSh1c2VyTGlzdCwgcGFyYW1zLnNvcnRCeSB8
fCBkZWZhdWx0U29ydCkKKyAgICAgICAgICAgICAgICAgICAgICAuc3BsaWNlKChwYXJhbXMucGFn
ZSAtIDEpICogcGFnaW5nTGVuZ3RoLCBwYWdpbmdMZW5ndGgpCisgICAgICAgIH1dOworICAgICAg
fSk7CisgIGBgYAorICovCithbmd1bGFyLm1vY2suJEh0dHBCYWNrZW5kUHJvdmlkZXIgPSBmdW5j
dGlvbigpIHsKKyAgdGhpcy4kZ2V0ID0gWyckcm9vdFNjb3BlJywgJyR0aW1lb3V0JywgY3JlYXRl
SHR0cEJhY2tlbmRNb2NrXTsKK307CisKKy8qKgorICogR2VuZXJhbCBmYWN0b3J5IGZ1bmN0aW9u
IGZvciAkaHR0cEJhY2tlbmQgbW9jay4KKyAqIFJldHVybnMgaW5zdGFuY2UgZm9yIHVuaXQgdGVz
dGluZyAod2hlbiBubyBhcmd1bWVudHMgc3BlY2lmaWVkKToKKyAqICAgLSBwYXNzaW5nIHRocm91
Z2ggaXMgZGlzYWJsZWQKKyAqICAgLSBhdXRvIGZsdXNoaW5nIGlzIGRpc2FibGVkCisgKgorICog
UmV0dXJucyBpbnN0YW5jZSBmb3IgZTJlIHRlc3RpbmcgKHdoZW4gYCRkZWxlZ2F0ZWAgYW5kIGAk
YnJvd3NlcmAgc3BlY2lmaWVkKToKKyAqICAgLSBwYXNzaW5nIHRocm91Z2ggKGRlbGVnYXRpbmcg
cmVxdWVzdCB0byByZWFsIGJhY2tlbmQpIGlzIGVuYWJsZWQKKyAqICAgLSBhdXRvIGZsdXNoaW5n
IGlzIGVuYWJsZWQKKyAqCisgKiBAcGFyYW0ge09iamVjdD19ICRkZWxlZ2F0ZSBSZWFsICRodHRw
QmFja2VuZCBpbnN0YW5jZSAoYWxsb3cgcGFzc2luZyB0aHJvdWdoIGlmIHNwZWNpZmllZCkKKyAq
IEBwYXJhbSB7T2JqZWN0PX0gJGJyb3dzZXIgQXV0by1mbHVzaGluZyBlbmFibGVkIGlmIHNwZWNp
ZmllZAorICogQHJldHVybiB7T2JqZWN0fSBJbnN0YW5jZSBvZiAkaHR0cEJhY2tlbmQgbW9jawor
ICovCitmdW5jdGlvbiBjcmVhdGVIdHRwQmFja2VuZE1vY2soJHJvb3RTY29wZSwgJHRpbWVvdXQs
ICRkZWxlZ2F0ZSwgJGJyb3dzZXIpIHsKKyAgdmFyIGRlZmluaXRpb25zID0gW10sCisgICAgICBl
eHBlY3RhdGlvbnMgPSBbXSwKKyAgICAgIHJlc3BvbnNlcyA9IFtdLAorICAgICAgcmVzcG9uc2Vz
UHVzaCA9IGFuZ3VsYXIuYmluZChyZXNwb25zZXMsIHJlc3BvbnNlcy5wdXNoKSwKKyAgICAgIGNv
cHkgPSBhbmd1bGFyLmNvcHk7CisKKyAgZnVuY3Rpb24gY3JlYXRlUmVzcG9uc2Uoc3RhdHVzLCBk
YXRhLCBoZWFkZXJzLCBzdGF0dXNUZXh0KSB7CisgICAgaWYgKGFuZ3VsYXIuaXNGdW5jdGlvbihz
dGF0dXMpKSByZXR1cm4gc3RhdHVzOworCisgICAgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAgICAg
cmV0dXJuIGFuZ3VsYXIuaXNOdW1iZXIoc3RhdHVzKQorICAgICAgICAgID8gW3N0YXR1cywgZGF0
YSwgaGVhZGVycywgc3RhdHVzVGV4dF0KKyAgICAgICAgICA6IFsyMDAsIHN0YXR1cywgZGF0YSwg
aGVhZGVyc107CisgICAgfTsKKyAgfQorCisgIC8vIFRPRE8odm9qdGEpOiBjaGFuZ2UgcGFyYW1z
IHRvOiBtZXRob2QsIHVybCwgZGF0YSwgaGVhZGVycywgY2FsbGJhY2sKKyAgZnVuY3Rpb24gJGh0
dHBCYWNrZW5kKG1ldGhvZCwgdXJsLCBkYXRhLCBjYWxsYmFjaywgaGVhZGVycywgdGltZW91dCwg
d2l0aENyZWRlbnRpYWxzLCByZXNwb25zZVR5cGUsIGV2ZW50SGFuZGxlcnMsIHVwbG9hZEV2ZW50
SGFuZGxlcnMpIHsKKworICAgIHZhciB4aHIgPSBuZXcgTW9ja1hocigpLAorICAgICAgICBleHBl
Y3RhdGlvbiA9IGV4cGVjdGF0aW9uc1swXSwKKyAgICAgICAgd2FzRXhwZWN0ZWQgPSBmYWxzZTsK
KworICAgIHhoci4kJGV2ZW50cyA9IGV2ZW50SGFuZGxlcnM7CisgICAgeGhyLnVwbG9hZC4kJGV2
ZW50cyA9IHVwbG9hZEV2ZW50SGFuZGxlcnM7CisKKyAgICBmdW5jdGlvbiBwcmV0dHlQcmludChk
YXRhKSB7CisgICAgICByZXR1cm4gKGFuZ3VsYXIuaXNTdHJpbmcoZGF0YSkgfHwgYW5ndWxhci5p
c0Z1bmN0aW9uKGRhdGEpIHx8IGRhdGEgaW5zdGFuY2VvZiBSZWdFeHApCisgICAgICAgICAgPyBk
YXRhCisgICAgICAgICAgOiBhbmd1bGFyLnRvSnNvbihkYXRhKTsKKyAgICB9CisKKyAgICBmdW5j
dGlvbiB3cmFwUmVzcG9uc2Uod3JhcHBlZCkgeworICAgICAgaWYgKCEkYnJvd3NlciAmJiB0aW1l
b3V0KSB7CisgICAgICAgIGlmICh0aW1lb3V0LnRoZW4pIHsKKyAgICAgICAgICB0aW1lb3V0LnRo
ZW4oaGFuZGxlVGltZW91dCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgJHRpbWVvdXQo
aGFuZGxlVGltZW91dCwgdGltZW91dCk7CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgcmV0
dXJuIGhhbmRsZVJlc3BvbnNlOworCisgICAgICBmdW5jdGlvbiBoYW5kbGVSZXNwb25zZSgpIHsK
KyAgICAgICAgdmFyIHJlc3BvbnNlID0gd3JhcHBlZC5yZXNwb25zZShtZXRob2QsIHVybCwgZGF0
YSwgaGVhZGVycywgd3JhcHBlZC5wYXJhbXModXJsKSk7CisgICAgICAgIHhoci4kJHJlc3BIZWFk
ZXJzID0gcmVzcG9uc2VbMl07CisgICAgICAgIGNhbGxiYWNrKGNvcHkocmVzcG9uc2VbMF0pLCBj
b3B5KHJlc3BvbnNlWzFdKSwgeGhyLmdldEFsbFJlc3BvbnNlSGVhZGVycygpLAorICAgICAgICAg
ICAgICAgICBjb3B5KHJlc3BvbnNlWzNdIHx8ICcnKSk7CisgICAgICB9CisKKyAgICAgIGZ1bmN0
aW9uIGhhbmRsZVRpbWVvdXQoKSB7CisgICAgICAgIGZvciAodmFyIGkgPSAwLCBpaSA9IHJlc3Bv
bnNlcy5sZW5ndGg7IGkgPCBpaTsgaSsrKSB7CisgICAgICAgICAgaWYgKHJlc3BvbnNlc1tpXSA9
PT0gaGFuZGxlUmVzcG9uc2UpIHsKKyAgICAgICAgICAgIHJlc3BvbnNlcy5zcGxpY2UoaSwgMSk7
CisgICAgICAgICAgICBjYWxsYmFjaygtMSwgdW5kZWZpbmVkLCAnJyk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisKKyAgICBpZiAo
ZXhwZWN0YXRpb24gJiYgZXhwZWN0YXRpb24ubWF0Y2gobWV0aG9kLCB1cmwpKSB7CisgICAgICBp
ZiAoIWV4cGVjdGF0aW9uLm1hdGNoRGF0YShkYXRhKSkgeworICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoJ0V4cGVjdGVkICcgKyBleHBlY3RhdGlvbiArICcgd2l0aCBkaWZmZXJlbnQgZGF0YVxuJyAr
CisgICAgICAgICAgICAnRVhQRUNURUQ6ICcgKyBwcmV0dHlQcmludChleHBlY3RhdGlvbi5kYXRh
KSArICdcbkdPVDogICAgICAnICsgZGF0YSk7CisgICAgICB9CisKKyAgICAgIGlmICghZXhwZWN0
YXRpb24ubWF0Y2hIZWFkZXJzKGhlYWRlcnMpKSB7CisgICAgICAgIHRocm93IG5ldyBFcnJvcign
RXhwZWN0ZWQgJyArIGV4cGVjdGF0aW9uICsgJyB3aXRoIGRpZmZlcmVudCBoZWFkZXJzXG4nICsK
KyAgICAgICAgICAgICAgICAgICAgICAgICdFWFBFQ1RFRDogJyArIHByZXR0eVByaW50KGV4cGVj
dGF0aW9uLmhlYWRlcnMpICsgJ1xuR09UOiAgICAgICcgKworICAgICAgICAgICAgICAgICAgICAg
ICAgcHJldHR5UHJpbnQoaGVhZGVycykpOworICAgICAgfQorCisgICAgICBleHBlY3RhdGlvbnMu
c2hpZnQoKTsKKworICAgICAgaWYgKGV4cGVjdGF0aW9uLnJlc3BvbnNlKSB7CisgICAgICAgIHJl
c3BvbnNlcy5wdXNoKHdyYXBSZXNwb25zZShleHBlY3RhdGlvbikpOworICAgICAgICByZXR1cm47
CisgICAgICB9CisgICAgICB3YXNFeHBlY3RlZCA9IHRydWU7CisgICAgfQorCisgICAgdmFyIGkg
PSAtMSwgZGVmaW5pdGlvbjsKKyAgICB3aGlsZSAoKGRlZmluaXRpb24gPSBkZWZpbml0aW9uc1sr
K2ldKSkgeworICAgICAgaWYgKGRlZmluaXRpb24ubWF0Y2gobWV0aG9kLCB1cmwsIGRhdGEsIGhl
YWRlcnMgfHwge30pKSB7CisgICAgICAgIGlmIChkZWZpbml0aW9uLnJlc3BvbnNlKSB7CisgICAg
ICAgICAgLy8gaWYgJGJyb3dzZXIgc3BlY2lmaWVkLCB3ZSBkbyBhdXRvIGZsdXNoIGFsbCByZXF1
ZXN0cworICAgICAgICAgICgkYnJvd3NlciA/ICRicm93c2VyLmRlZmVyIDogcmVzcG9uc2VzUHVz
aCkod3JhcFJlc3BvbnNlKGRlZmluaXRpb24pKTsKKyAgICAgICAgfSBlbHNlIGlmIChkZWZpbml0
aW9uLnBhc3NUaHJvdWdoKSB7CisgICAgICAgICAgJGRlbGVnYXRlKG1ldGhvZCwgdXJsLCBkYXRh
LCBjYWxsYmFjaywgaGVhZGVycywgdGltZW91dCwgd2l0aENyZWRlbnRpYWxzLCByZXNwb25zZVR5
cGUsIGV2ZW50SGFuZGxlcnMsIHVwbG9hZEV2ZW50SGFuZGxlcnMpOworICAgICAgICB9IGVsc2Ug
dGhyb3cgbmV3IEVycm9yKCdObyByZXNwb25zZSBkZWZpbmVkICEnKTsKKyAgICAgICAgcmV0dXJu
OworICAgICAgfQorICAgIH0KKyAgICB0aHJvdyB3YXNFeHBlY3RlZCA/CisgICAgICAgIG5ldyBF
cnJvcignTm8gcmVzcG9uc2UgZGVmaW5lZCAhJykgOgorICAgICAgICBuZXcgRXJyb3IoJ1VuZXhw
ZWN0ZWQgcmVxdWVzdDogJyArIG1ldGhvZCArICcgJyArIHVybCArICdcbicgKworICAgICAgICAg
ICAgICAgICAgKGV4cGVjdGF0aW9uID8gJ0V4cGVjdGVkICcgKyBleHBlY3RhdGlvbiA6ICdObyBt
b3JlIHJlcXVlc3QgZXhwZWN0ZWQnKSk7CisgIH0KKworICAvKioKKyAgICogQG5nZG9jIG1ldGhv
ZAorICAgKiBAbmFtZSAkaHR0cEJhY2tlbmQjd2hlbgorICAgKiBAZGVzY3JpcHRpb24KKyAgICog
Q3JlYXRlcyBhIG5ldyBiYWNrZW5kIGRlZmluaXRpb24uCisgICAqCisgICAqIEBwYXJhbSB7c3Ry
aW5nfSBtZXRob2QgSFRUUCBtZXRob2QuCisgICAqIEBwYXJhbSB7c3RyaW5nfFJlZ0V4cHxmdW5j
dGlvbihzdHJpbmcpfSB1cmwgSFRUUCB1cmwgb3IgZnVuY3Rpb24gdGhhdCByZWNlaXZlcyBhIHVy
bAorICAgKiAgIGFuZCByZXR1cm5zIHRydWUgaWYgdGhlIHVybCBtYXRjaGVzIHRoZSBjdXJyZW50
IGRlZmluaXRpb24uCisgICAqIEBwYXJhbSB7KHN0cmluZ3xSZWdFeHB8ZnVuY3Rpb24oc3RyaW5n
KSk9fSBkYXRhIEhUVFAgcmVxdWVzdCBib2R5IG9yIGZ1bmN0aW9uIHRoYXQgcmVjZWl2ZXMKKyAg
ICogICBkYXRhIHN0cmluZyBhbmQgcmV0dXJucyB0cnVlIGlmIHRoZSBkYXRhIGlzIGFzIGV4cGVj
dGVkLgorICAgKiBAcGFyYW0geyhPYmplY3R8ZnVuY3Rpb24oT2JqZWN0KSk9fSBoZWFkZXJzIEhU
VFAgaGVhZGVycyBvciBmdW5jdGlvbiB0aGF0IHJlY2VpdmVzIGh0dHAgaGVhZGVyCisgICAqICAg
b2JqZWN0IGFuZCByZXR1cm5zIHRydWUgaWYgdGhlIGhlYWRlcnMgbWF0Y2ggdGhlIGN1cnJlbnQg
ZGVmaW5pdGlvbi4KKyAgICogQHBhcmFtIHsoQXJyYXkpPX0ga2V5cyBBcnJheSBvZiBrZXlzIHRv
IGFzc2lnbiB0byByZWdleCBtYXRjaGVzIGluIHJlcXVlc3QgdXJsIGRlc2NyaWJlZCBhYm92ZS4K
KyAgICogQHJldHVybnMge3JlcXVlc3RIYW5kbGVyfSBSZXR1cm5zIGFuIG9iamVjdCB3aXRoIGBy
ZXNwb25kYCBtZXRob2QgdGhhdCBjb250cm9scyBob3cgYSBtYXRjaGVkCisgICAqICAgcmVxdWVz
dCBpcyBoYW5kbGVkLiBZb3UgY2FuIHNhdmUgdGhpcyBvYmplY3QgZm9yIGxhdGVyIHVzZSBhbmQg
aW52b2tlIGByZXNwb25kYCBhZ2FpbiBpbgorICAgKiAgIG9yZGVyIHRvIGNoYW5nZSBob3cgYSBt
YXRjaGVkIHJlcXVlc3QgaXMgaGFuZGxlZC4KKyAgICoKKyAgICogIC0gcmVzcG9uZCDigJMKKyAg
ICogICAgICBgYGBqcworICAgKiAgICAgIHtmdW5jdGlvbihbc3RhdHVzLF0gZGF0YVssIGhlYWRl
cnMsIHN0YXR1c1RleHRdKQorICAgKiAgICAgIHwgZnVuY3Rpb24oZnVuY3Rpb24obWV0aG9kLCB1
cmwsIGRhdGEsIGhlYWRlcnMsIHBhcmFtcyl9CisgICAqICAgICAgYGBgCisgICAqICAgIOKAkyBU
aGUgcmVzcG9uZCBtZXRob2QgdGFrZXMgYSBzZXQgb2Ygc3RhdGljIGRhdGEgdG8gYmUgcmV0dXJu
ZWQgb3IgYSBmdW5jdGlvbiB0aGF0IGNhbgorICAgKiAgICByZXR1cm4gYW4gYXJyYXkgY29udGFp
bmluZyByZXNwb25zZSBzdGF0dXMgKG51bWJlciksIHJlc3BvbnNlIGRhdGEgKEFycmF5fE9iamVj
dHxzdHJpbmcpLAorICAgKiAgICByZXNwb25zZSBoZWFkZXJzIChPYmplY3QpLCBhbmQgdGhlIHRl
eHQgZm9yIHRoZSBzdGF0dXMgKHN0cmluZykuIFRoZSByZXNwb25kIG1ldGhvZCByZXR1cm5zCisg
ICAqICAgIHRoZSBgcmVxdWVzdEhhbmRsZXJgIG9iamVjdCBmb3IgcG9zc2libGUgb3ZlcnJpZGVz
LgorICAgKi8KKyAgJGh0dHBCYWNrZW5kLndoZW4gPSBmdW5jdGlvbihtZXRob2QsIHVybCwgZGF0
YSwgaGVhZGVycywga2V5cykgeworICAgIHZhciBkZWZpbml0aW9uID0gbmV3IE1vY2tIdHRwRXhw
ZWN0YXRpb24obWV0aG9kLCB1cmwsIGRhdGEsIGhlYWRlcnMsIGtleXMpLAorICAgICAgICBjaGFp
biA9IHsKKyAgICAgICAgICByZXNwb25kOiBmdW5jdGlvbihzdGF0dXMsIGRhdGEsIGhlYWRlcnMs
IHN0YXR1c1RleHQpIHsKKyAgICAgICAgICAgIGRlZmluaXRpb24ucGFzc1Rocm91Z2ggPSB1bmRl
ZmluZWQ7CisgICAgICAgICAgICBkZWZpbml0aW9uLnJlc3BvbnNlID0gY3JlYXRlUmVzcG9uc2Uo
c3RhdHVzLCBkYXRhLCBoZWFkZXJzLCBzdGF0dXNUZXh0KTsKKyAgICAgICAgICAgIHJldHVybiBj
aGFpbjsKKyAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICBpZiAoJGJyb3dzZXIpIHsKKyAg
ICAgIGNoYWluLnBhc3NUaHJvdWdoID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGRlZmluaXRpb24u
cmVzcG9uc2UgPSB1bmRlZmluZWQ7CisgICAgICAgIGRlZmluaXRpb24ucGFzc1Rocm91Z2ggPSB0
cnVlOworICAgICAgICByZXR1cm4gY2hhaW47CisgICAgICB9OworICAgIH0KKworICAgIGRlZmlu
aXRpb25zLnB1c2goZGVmaW5pdGlvbik7CisgICAgcmV0dXJuIGNoYWluOworICB9OworCisgIC8q
KgorICAgKiBAbmdkb2MgbWV0aG9kCisgICAqIEBuYW1lICRodHRwQmFja2VuZCN3aGVuR0VUCisg
ICAqIEBkZXNjcmlwdGlvbgorICAgKiBDcmVhdGVzIGEgbmV3IGJhY2tlbmQgZGVmaW5pdGlvbiBm
b3IgR0VUIHJlcXVlc3RzLiBGb3IgbW9yZSBpbmZvIHNlZSBgd2hlbigpYC4KKyAgICoKKyAgICog
QHBhcmFtIHtzdHJpbmd8UmVnRXhwfGZ1bmN0aW9uKHN0cmluZyl9IHVybCBIVFRQIHVybCBvciBm
dW5jdGlvbiB0aGF0IHJlY2VpdmVzIGEgdXJsCisgICAqICAgYW5kIHJldHVybnMgdHJ1ZSBpZiB0
aGUgdXJsIG1hdGNoZXMgdGhlIGN1cnJlbnQgZGVmaW5pdGlvbi4KKyAgICogQHBhcmFtIHsoT2Jq
ZWN0fGZ1bmN0aW9uKE9iamVjdCkpPX0gaGVhZGVycyBIVFRQIGhlYWRlcnMuCisgICAqIEBwYXJh
bSB7KEFycmF5KT19IGtleXMgQXJyYXkgb2Yga2V5cyB0byBhc3NpZ24gdG8gcmVnZXggbWF0Y2hl
cyBpbiByZXF1ZXN0IHVybCBkZXNjcmliZWQgYWJvdmUuCisgICAqIEByZXR1cm5zIHtyZXF1ZXN0
SGFuZGxlcn0gUmV0dXJucyBhbiBvYmplY3Qgd2l0aCBgcmVzcG9uZGAgbWV0aG9kIHRoYXQgY29u
dHJvbHMgaG93IGEgbWF0Y2hlZAorICAgKiByZXF1ZXN0IGlzIGhhbmRsZWQuIFlvdSBjYW4gc2F2
ZSB0aGlzIG9iamVjdCBmb3IgbGF0ZXIgdXNlIGFuZCBpbnZva2UgYHJlc3BvbmRgIGFnYWluIGlu
CisgICAqIG9yZGVyIHRvIGNoYW5nZSBob3cgYSBtYXRjaGVkIHJlcXVlc3QgaXMgaGFuZGxlZC4K
KyAgICovCisKKyAgLyoqCisgICAqIEBuZ2RvYyBtZXRob2QKKyAgICogQG5hbWUgJGh0dHBCYWNr
ZW5kI3doZW5IRUFECisgICAqIEBkZXNjcmlwdGlvbgorICAgKiBDcmVhdGVzIGEgbmV3IGJhY2tl
bmQgZGVmaW5pdGlvbiBmb3IgSEVBRCByZXF1ZXN0cy4gRm9yIG1vcmUgaW5mbyBzZWUgYHdoZW4o
KWAuCisgICAqCisgICAqIEBwYXJhbSB7c3RyaW5nfFJlZ0V4cHxmdW5jdGlvbihzdHJpbmcpfSB1
cmwgSFRUUCB1cmwgb3IgZnVuY3Rpb24gdGhhdCByZWNlaXZlcyBhIHVybAorICAgKiAgIGFuZCBy
ZXR1cm5zIHRydWUgaWYgdGhlIHVybCBtYXRjaGVzIHRoZSBjdXJyZW50IGRlZmluaXRpb24uCisg
ICAqIEBwYXJhbSB7KE9iamVjdHxmdW5jdGlvbihPYmplY3QpKT19IGhlYWRlcnMgSFRUUCBoZWFk
ZXJzLgorICAgKiBAcGFyYW0geyhBcnJheSk9fSBrZXlzIEFycmF5IG9mIGtleXMgdG8gYXNzaWdu
IHRvIHJlZ2V4IG1hdGNoZXMgaW4gcmVxdWVzdCB1cmwgZGVzY3JpYmVkIGFib3ZlLgorICAgKiBA
cmV0dXJucyB7cmVxdWVzdEhhbmRsZXJ9IFJldHVybnMgYW4gb2JqZWN0IHdpdGggYHJlc3BvbmRg
IG1ldGhvZCB0aGF0IGNvbnRyb2xzIGhvdyBhIG1hdGNoZWQKKyAgICogcmVxdWVzdCBpcyBoYW5k
bGVkLiBZb3UgY2FuIHNhdmUgdGhpcyBvYmplY3QgZm9yIGxhdGVyIHVzZSBhbmQgaW52b2tlIGBy
ZXNwb25kYCBhZ2FpbiBpbgorICAgKiBvcmRlciB0byBjaGFuZ2UgaG93IGEgbWF0Y2hlZCByZXF1
ZXN0IGlzIGhhbmRsZWQuCisgICAqLworCisgIC8qKgorICAgKiBAbmdkb2MgbWV0aG9kCisgICAq
IEBuYW1lICRodHRwQmFja2VuZCN3aGVuREVMRVRFCisgICAqIEBkZXNjcmlwdGlvbgorICAgKiBD
cmVhdGVzIGEgbmV3IGJhY2tlbmQgZGVmaW5pdGlvbiBmb3IgREVMRVRFIHJlcXVlc3RzLiBGb3Ig
bW9yZSBpbmZvIHNlZSBgd2hlbigpYC4KKyAgICoKKyAgICogQHBhcmFtIHtzdHJpbmd8UmVnRXhw
fGZ1bmN0aW9uKHN0cmluZyl9IHVybCBIVFRQIHVybCBvciBmdW5jdGlvbiB0aGF0IHJlY2VpdmVz
IGEgdXJsCisgICAqICAgYW5kIHJldHVybnMgdHJ1ZSBpZiB0aGUgdXJsIG1hdGNoZXMgdGhlIGN1
cnJlbnQgZGVmaW5pdGlvbi4KKyAgICogQHBhcmFtIHsoT2JqZWN0fGZ1bmN0aW9uKE9iamVjdCkp
PX0gaGVhZGVycyBIVFRQIGhlYWRlcnMuCisgICAqIEBwYXJhbSB7KEFycmF5KT19IGtleXMgQXJy
YXkgb2Yga2V5cyB0byBhc3NpZ24gdG8gcmVnZXggbWF0Y2hlcyBpbiByZXF1ZXN0IHVybCBkZXNj
cmliZWQgYWJvdmUuCisgICAqIEByZXR1cm5zIHtyZXF1ZXN0SGFuZGxlcn0gUmV0dXJucyBhbiBv
YmplY3Qgd2l0aCBgcmVzcG9uZGAgbWV0aG9kIHRoYXQgY29udHJvbHMgaG93IGEgbWF0Y2hlZAor
ICAgKiByZXF1ZXN0IGlzIGhhbmRsZWQuIFlvdSBjYW4gc2F2ZSB0aGlzIG9iamVjdCBmb3IgbGF0
ZXIgdXNlIGFuZCBpbnZva2UgYHJlc3BvbmRgIGFnYWluIGluCisgICAqIG9yZGVyIHRvIGNoYW5n
ZSBob3cgYSBtYXRjaGVkIHJlcXVlc3QgaXMgaGFuZGxlZC4KKyAgICovCisKKyAgLyoqCisgICAq
IEBuZ2RvYyBtZXRob2QKKyAgICogQG5hbWUgJGh0dHBCYWNrZW5kI3doZW5QT1NUCisgICAqIEBk
ZXNjcmlwdGlvbgorICAgKiBDcmVhdGVzIGEgbmV3IGJhY2tlbmQgZGVmaW5pdGlvbiBmb3IgUE9T
VCByZXF1ZXN0cy4gRm9yIG1vcmUgaW5mbyBzZWUgYHdoZW4oKWAuCisgICAqCisgICAqIEBwYXJh
bSB7c3RyaW5nfFJlZ0V4cHxmdW5jdGlvbihzdHJpbmcpfSB1cmwgSFRUUCB1cmwgb3IgZnVuY3Rp
b24gdGhhdCByZWNlaXZlcyBhIHVybAorICAgKiAgIGFuZCByZXR1cm5zIHRydWUgaWYgdGhlIHVy
bCBtYXRjaGVzIHRoZSBjdXJyZW50IGRlZmluaXRpb24uCisgICAqIEBwYXJhbSB7KHN0cmluZ3xS
ZWdFeHB8ZnVuY3Rpb24oc3RyaW5nKSk9fSBkYXRhIEhUVFAgcmVxdWVzdCBib2R5IG9yIGZ1bmN0
aW9uIHRoYXQgcmVjZWl2ZXMKKyAgICogICBkYXRhIHN0cmluZyBhbmQgcmV0dXJucyB0cnVlIGlm
IHRoZSBkYXRhIGlzIGFzIGV4cGVjdGVkLgorICAgKiBAcGFyYW0geyhPYmplY3R8ZnVuY3Rpb24o
T2JqZWN0KSk9fSBoZWFkZXJzIEhUVFAgaGVhZGVycy4KKyAgICogQHBhcmFtIHsoQXJyYXkpPX0g
a2V5cyBBcnJheSBvZiBrZXlzIHRvIGFzc2lnbiB0byByZWdleCBtYXRjaGVzIGluIHJlcXVlc3Qg
dXJsIGRlc2NyaWJlZCBhYm92ZS4KKyAgICogQHJldHVybnMge3JlcXVlc3RIYW5kbGVyfSBSZXR1
cm5zIGFuIG9iamVjdCB3aXRoIGByZXNwb25kYCBtZXRob2QgdGhhdCBjb250cm9scyBob3cgYSBt
YXRjaGVkCisgICAqIHJlcXVlc3QgaXMgaGFuZGxlZC4gWW91IGNhbiBzYXZlIHRoaXMgb2JqZWN0
IGZvciBsYXRlciB1c2UgYW5kIGludm9rZSBgcmVzcG9uZGAgYWdhaW4gaW4KKyAgICogb3JkZXIg
dG8gY2hhbmdlIGhvdyBhIG1hdGNoZWQgcmVxdWVzdCBpcyBoYW5kbGVkLgorICAgKi8KKworICAv
KioKKyAgICogQG5nZG9jIG1ldGhvZAorICAgKiBAbmFtZSAkaHR0cEJhY2tlbmQjd2hlblBVVAor
ICAgKiBAZGVzY3JpcHRpb24KKyAgICogQ3JlYXRlcyBhIG5ldyBiYWNrZW5kIGRlZmluaXRpb24g
Zm9yIFBVVCByZXF1ZXN0cy4gIEZvciBtb3JlIGluZm8gc2VlIGB3aGVuKClgLgorICAgKgorICAg
KiBAcGFyYW0ge3N0cmluZ3xSZWdFeHB8ZnVuY3Rpb24oc3RyaW5nKX0gdXJsIEhUVFAgdXJsIG9y
IGZ1bmN0aW9uIHRoYXQgcmVjZWl2ZXMgYSB1cmwKKyAgICogICBhbmQgcmV0dXJucyB0cnVlIGlm
IHRoZSB1cmwgbWF0Y2hlcyB0aGUgY3VycmVudCBkZWZpbml0aW9uLgorICAgKiBAcGFyYW0geyhz
dHJpbmd8UmVnRXhwfGZ1bmN0aW9uKHN0cmluZykpPX0gZGF0YSBIVFRQIHJlcXVlc3QgYm9keSBv
ciBmdW5jdGlvbiB0aGF0IHJlY2VpdmVzCisgICAqICAgZGF0YSBzdHJpbmcgYW5kIHJldHVybnMg
dHJ1ZSBpZiB0aGUgZGF0YSBpcyBhcyBleHBlY3RlZC4KKyAgICogQHBhcmFtIHsoT2JqZWN0fGZ1
bmN0aW9uKE9iamVjdCkpPX0gaGVhZGVycyBIVFRQIGhlYWRlcnMuCisgICAqIEBwYXJhbSB7KEFy
cmF5KT19IGtleXMgQXJyYXkgb2Yga2V5cyB0byBhc3NpZ24gdG8gcmVnZXggbWF0Y2hlcyBpbiBy
ZXF1ZXN0IHVybCBkZXNjcmliZWQgYWJvdmUuCisgICAqIEByZXR1cm5zIHtyZXF1ZXN0SGFuZGxl
cn0gUmV0dXJucyBhbiBvYmplY3Qgd2l0aCBgcmVzcG9uZGAgbWV0aG9kIHRoYXQgY29udHJvbHMg
aG93IGEgbWF0Y2hlZAorICAgKiByZXF1ZXN0IGlzIGhhbmRsZWQuIFlvdSBjYW4gc2F2ZSB0aGlz
IG9iamVjdCBmb3IgbGF0ZXIgdXNlIGFuZCBpbnZva2UgYHJlc3BvbmRgIGFnYWluIGluCisgICAq
IG9yZGVyIHRvIGNoYW5nZSBob3cgYSBtYXRjaGVkIHJlcXVlc3QgaXMgaGFuZGxlZC4KKyAgICov
CisKKyAgLyoqCisgICAqIEBuZ2RvYyBtZXRob2QKKyAgICogQG5hbWUgJGh0dHBCYWNrZW5kI3do
ZW5KU09OUAorICAgKiBAZGVzY3JpcHRpb24KKyAgICogQ3JlYXRlcyBhIG5ldyBiYWNrZW5kIGRl
ZmluaXRpb24gZm9yIEpTT05QIHJlcXVlc3RzLiBGb3IgbW9yZSBpbmZvIHNlZSBgd2hlbigpYC4K
KyAgICoKKyAgICogQHBhcmFtIHtzdHJpbmd8UmVnRXhwfGZ1bmN0aW9uKHN0cmluZyl9IHVybCBI
VFRQIHVybCBvciBmdW5jdGlvbiB0aGF0IHJlY2VpdmVzIGEgdXJsCisgICAqICAgYW5kIHJldHVy
bnMgdHJ1ZSBpZiB0aGUgdXJsIG1hdGNoZXMgdGhlIGN1cnJlbnQgZGVmaW5pdGlvbi4KKyAgICog
QHBhcmFtIHsoQXJyYXkpPX0ga2V5cyBBcnJheSBvZiBrZXlzIHRvIGFzc2lnbiB0byByZWdleCBt
YXRjaGVzIGluIHJlcXVlc3QgdXJsIGRlc2NyaWJlZCBhYm92ZS4KKyAgICogQHJldHVybnMge3Jl
cXVlc3RIYW5kbGVyfSBSZXR1cm5zIGFuIG9iamVjdCB3aXRoIGByZXNwb25kYCBtZXRob2QgdGhh
dCBjb250cm9scyBob3cgYSBtYXRjaGVkCisgICAqIHJlcXVlc3QgaXMgaGFuZGxlZC4gWW91IGNh
biBzYXZlIHRoaXMgb2JqZWN0IGZvciBsYXRlciB1c2UgYW5kIGludm9rZSBgcmVzcG9uZGAgYWdh
aW4gaW4KKyAgICogb3JkZXIgdG8gY2hhbmdlIGhvdyBhIG1hdGNoZWQgcmVxdWVzdCBpcyBoYW5k
bGVkLgorICAgKi8KKyAgY3JlYXRlU2hvcnRNZXRob2RzKCd3aGVuJyk7CisKKyAgLyoqCisgICAq
IEBuZ2RvYyBtZXRob2QKKyAgICogQG5hbWUgJGh0dHBCYWNrZW5kI3doZW5Sb3V0ZQorICAgKiBA
ZGVzY3JpcHRpb24KKyAgICogQ3JlYXRlcyBhIG5ldyBiYWNrZW5kIGRlZmluaXRpb24gdGhhdCBj
b21wYXJlcyBvbmx5IHdpdGggdGhlIHJlcXVlc3RlZCByb3V0ZS4KKyAgICoKKyAgICogQHBhcmFt
IHtzdHJpbmd9IG1ldGhvZCBIVFRQIG1ldGhvZC4KKyAgICogQHBhcmFtIHtzdHJpbmd9IHVybCBI
VFRQIHVybCBzdHJpbmcgdGhhdCBzdXBwb3J0cyBjb2xvbiBwYXJhbSBtYXRjaGluZy4KKyAgICog
QHJldHVybnMge3JlcXVlc3RIYW5kbGVyfSBSZXR1cm5zIGFuIG9iamVjdCB3aXRoIGByZXNwb25k
YCBtZXRob2QgdGhhdCBjb250cm9scyBob3cgYSBtYXRjaGVkCisgICAqIHJlcXVlc3QgaXMgaGFu
ZGxlZC4gWW91IGNhbiBzYXZlIHRoaXMgb2JqZWN0IGZvciBsYXRlciB1c2UgYW5kIGludm9rZSBg
cmVzcG9uZGAgYWdhaW4gaW4KKyAgICogb3JkZXIgdG8gY2hhbmdlIGhvdyBhIG1hdGNoZWQgcmVx
dWVzdCBpcyBoYW5kbGVkLiBTZWUgI3doZW4gZm9yIG1vcmUgaW5mby4KKyAgICovCisgICRodHRw
QmFja2VuZC53aGVuUm91dGUgPSBmdW5jdGlvbihtZXRob2QsIHVybCkgeworICAgIHZhciBwYXRo
T2JqID0gcGFyc2VSb3V0ZSh1cmwpOworICAgIHJldHVybiAkaHR0cEJhY2tlbmQud2hlbihtZXRo
b2QsIHBhdGhPYmoucmVnZXhwLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgcGF0aE9iai5rZXlzKTsK
KyAgfTsKKworICBmdW5jdGlvbiBwYXJzZVJvdXRlKHVybCkgeworICAgIHZhciByZXQgPSB7Cisg
ICAgICByZWdleHA6IHVybAorICAgIH0sCisgICAga2V5cyA9IHJldC5rZXlzID0gW107CisKKyAg
ICBpZiAoIXVybCB8fCAhYW5ndWxhci5pc1N0cmluZyh1cmwpKSByZXR1cm4gcmV0OworCisgICAg
dXJsID0gdXJsCisgICAgICAucmVwbGFjZSgvKFsoKS5dKS9nLCAnXFwkMScpCisgICAgICAucmVw
bGFjZSgvKFwvKT86KFx3KykoW1w/XCpdKT8vZywgZnVuY3Rpb24oXywgc2xhc2gsIGtleSwgb3B0
aW9uKSB7CisgICAgICAgIHZhciBvcHRpb25hbCA9IG9wdGlvbiA9PT0gJz8nID8gb3B0aW9uIDog
bnVsbDsKKyAgICAgICAgdmFyIHN0YXIgPSBvcHRpb24gPT09ICcqJyA/IG9wdGlvbiA6IG51bGw7
CisgICAgICAgIGtleXMucHVzaCh7IG5hbWU6IGtleSwgb3B0aW9uYWw6ICEhb3B0aW9uYWwgfSk7
CisgICAgICAgIHNsYXNoID0gc2xhc2ggfHwgJyc7CisgICAgICAgIHJldHVybiAnJworICAgICAg
ICAgICsgKG9wdGlvbmFsID8gJycgOiBzbGFzaCkKKyAgICAgICAgICArICcoPzonCisgICAgICAg
ICAgKyAob3B0aW9uYWwgPyBzbGFzaCA6ICcnKQorICAgICAgICAgICsgKHN0YXIgJiYgJyguKz8p
JyB8fCAnKFteL10rKScpCisgICAgICAgICAgKyAob3B0aW9uYWwgfHwgJycpCisgICAgICAgICAg
KyAnKScKKyAgICAgICAgICArIChvcHRpb25hbCB8fCAnJyk7CisgICAgICB9KQorICAgICAgLnJl
cGxhY2UoLyhbXC8kXCpdKS9nLCAnXFwkMScpOworCisgICAgcmV0LnJlZ2V4cCA9IG5ldyBSZWdF
eHAoJ14nICsgdXJsLCAnaScpOworICAgIHJldHVybiByZXQ7CisgIH0KKworICAvKioKKyAgICog
QG5nZG9jIG1ldGhvZAorICAgKiBAbmFtZSAkaHR0cEJhY2tlbmQjZXhwZWN0CisgICAqIEBkZXNj
cmlwdGlvbgorICAgKiBDcmVhdGVzIGEgbmV3IHJlcXVlc3QgZXhwZWN0YXRpb24uCisgICAqCisg
ICAqIEBwYXJhbSB7c3RyaW5nfSBtZXRob2QgSFRUUCBtZXRob2QuCisgICAqIEBwYXJhbSB7c3Ry
aW5nfFJlZ0V4cHxmdW5jdGlvbihzdHJpbmcpfSB1cmwgSFRUUCB1cmwgb3IgZnVuY3Rpb24gdGhh
dCByZWNlaXZlcyBhIHVybAorICAgKiAgIGFuZCByZXR1cm5zIHRydWUgaWYgdGhlIHVybCBtYXRj
aGVzIHRoZSBjdXJyZW50IGRlZmluaXRpb24uCisgICAqIEBwYXJhbSB7KHN0cmluZ3xSZWdFeHB8
ZnVuY3Rpb24oc3RyaW5nKXxPYmplY3QpPX0gZGF0YSBIVFRQIHJlcXVlc3QgYm9keSBvciBmdW5j
dGlvbiB0aGF0CisgICAqICByZWNlaXZlcyBkYXRhIHN0cmluZyBhbmQgcmV0dXJucyB0cnVlIGlm
IHRoZSBkYXRhIGlzIGFzIGV4cGVjdGVkLCBvciBPYmplY3QgaWYgcmVxdWVzdCBib2R5CisgICAq
ICBpcyBpbiBKU09OIGZvcm1hdC4KKyAgICogQHBhcmFtIHsoT2JqZWN0fGZ1bmN0aW9uKE9iamVj
dCkpPX0gaGVhZGVycyBIVFRQIGhlYWRlcnMgb3IgZnVuY3Rpb24gdGhhdCByZWNlaXZlcyBodHRw
IGhlYWRlcgorICAgKiAgIG9iamVjdCBhbmQgcmV0dXJucyB0cnVlIGlmIHRoZSBoZWFkZXJzIG1h
dGNoIHRoZSBjdXJyZW50IGV4cGVjdGF0aW9uLgorICAgKiBAcGFyYW0geyhBcnJheSk9fSBrZXlz
IEFycmF5IG9mIGtleXMgdG8gYXNzaWduIHRvIHJlZ2V4IG1hdGNoZXMgaW4gcmVxdWVzdCB1cmwg
ZGVzY3JpYmVkIGFib3ZlLgorICAgKiBAcmV0dXJucyB7cmVxdWVzdEhhbmRsZXJ9IFJldHVybnMg
YW4gb2JqZWN0IHdpdGggYHJlc3BvbmRgIG1ldGhvZCB0aGF0IGNvbnRyb2xzIGhvdyBhIG1hdGNo
ZWQKKyAgICogIHJlcXVlc3QgaXMgaGFuZGxlZC4gWW91IGNhbiBzYXZlIHRoaXMgb2JqZWN0IGZv
ciBsYXRlciB1c2UgYW5kIGludm9rZSBgcmVzcG9uZGAgYWdhaW4gaW4KKyAgICogIG9yZGVyIHRv
IGNoYW5nZSBob3cgYSBtYXRjaGVkIHJlcXVlc3QgaXMgaGFuZGxlZC4KKyAgICoKKyAgICogIC0g
cmVzcG9uZCDigJMKKyAgICogICAgYGBgCisgICAqICAgIHsgZnVuY3Rpb24oW3N0YXR1cyxdIGRh
dGFbLCBoZWFkZXJzLCBzdGF0dXNUZXh0XSkKKyAgICogICAgfCBmdW5jdGlvbihmdW5jdGlvbiht
ZXRob2QsIHVybCwgZGF0YSwgaGVhZGVycywgcGFyYW1zKX0KKyAgICogICAgYGBgCisgICAqICAg
IOKAkyBUaGUgcmVzcG9uZCBtZXRob2QgdGFrZXMgYSBzZXQgb2Ygc3RhdGljIGRhdGEgdG8gYmUg
cmV0dXJuZWQgb3IgYSBmdW5jdGlvbiB0aGF0IGNhbgorICAgKiAgICByZXR1cm4gYW4gYXJyYXkg
Y29udGFpbmluZyByZXNwb25zZSBzdGF0dXMgKG51bWJlciksIHJlc3BvbnNlIGRhdGEgKEFycmF5
fE9iamVjdHxzdHJpbmcpLAorICAgKiAgICByZXNwb25zZSBoZWFkZXJzIChPYmplY3QpLCBhbmQg
dGhlIHRleHQgZm9yIHRoZSBzdGF0dXMgKHN0cmluZykuIFRoZSByZXNwb25kIG1ldGhvZCByZXR1
cm5zCisgICAqICAgIHRoZSBgcmVxdWVzdEhhbmRsZXJgIG9iamVjdCBmb3IgcG9zc2libGUgb3Zl
cnJpZGVzLgorICAgKi8KKyAgJGh0dHBCYWNrZW5kLmV4cGVjdCA9IGZ1bmN0aW9uKG1ldGhvZCwg
dXJsLCBkYXRhLCBoZWFkZXJzLCBrZXlzKSB7CisgICAgdmFyIGV4cGVjdGF0aW9uID0gbmV3IE1v
Y2tIdHRwRXhwZWN0YXRpb24obWV0aG9kLCB1cmwsIGRhdGEsIGhlYWRlcnMsIGtleXMpLAorICAg
ICAgICBjaGFpbiA9IHsKKyAgICAgICAgICByZXNwb25kOiBmdW5jdGlvbihzdGF0dXMsIGRhdGEs
IGhlYWRlcnMsIHN0YXR1c1RleHQpIHsKKyAgICAgICAgICAgIGV4cGVjdGF0aW9uLnJlc3BvbnNl
ID0gY3JlYXRlUmVzcG9uc2Uoc3RhdHVzLCBkYXRhLCBoZWFkZXJzLCBzdGF0dXNUZXh0KTsKKyAg
ICAgICAgICAgIHJldHVybiBjaGFpbjsKKyAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICBl
eHBlY3RhdGlvbnMucHVzaChleHBlY3RhdGlvbik7CisgICAgcmV0dXJuIGNoYWluOworICB9Owor
CisgIC8qKgorICAgKiBAbmdkb2MgbWV0aG9kCisgICAqIEBuYW1lICRodHRwQmFja2VuZCNleHBl
Y3RHRVQKKyAgICogQGRlc2NyaXB0aW9uCisgICAqIENyZWF0ZXMgYSBuZXcgcmVxdWVzdCBleHBl
Y3RhdGlvbiBmb3IgR0VUIHJlcXVlc3RzLiBGb3IgbW9yZSBpbmZvIHNlZSBgZXhwZWN0KClgLgor
ICAgKgorICAgKiBAcGFyYW0ge3N0cmluZ3xSZWdFeHB8ZnVuY3Rpb24oc3RyaW5nKX0gdXJsIEhU
VFAgdXJsIG9yIGZ1bmN0aW9uIHRoYXQgcmVjZWl2ZXMgYSB1cmwKKyAgICogICBhbmQgcmV0dXJu
cyB0cnVlIGlmIHRoZSB1cmwgbWF0Y2hlcyB0aGUgY3VycmVudCBkZWZpbml0aW9uLgorICAgKiBA
cGFyYW0ge09iamVjdD19IGhlYWRlcnMgSFRUUCBoZWFkZXJzLgorICAgKiBAcGFyYW0geyhBcnJh
eSk9fSBrZXlzIEFycmF5IG9mIGtleXMgdG8gYXNzaWduIHRvIHJlZ2V4IG1hdGNoZXMgaW4gcmVx
dWVzdCB1cmwgZGVzY3JpYmVkIGFib3ZlLgorICAgKiBAcmV0dXJucyB7cmVxdWVzdEhhbmRsZXJ9
IFJldHVybnMgYW4gb2JqZWN0IHdpdGggYHJlc3BvbmRgIG1ldGhvZCB0aGF0IGNvbnRyb2xzIGhv
dyBhIG1hdGNoZWQKKyAgICogcmVxdWVzdCBpcyBoYW5kbGVkLiBZb3UgY2FuIHNhdmUgdGhpcyBv
YmplY3QgZm9yIGxhdGVyIHVzZSBhbmQgaW52b2tlIGByZXNwb25kYCBhZ2FpbiBpbgorICAgKiBv
cmRlciB0byBjaGFuZ2UgaG93IGEgbWF0Y2hlZCByZXF1ZXN0IGlzIGhhbmRsZWQuIFNlZSAjZXhw
ZWN0IGZvciBtb3JlIGluZm8uCisgICAqLworCisgIC8qKgorICAgKiBAbmdkb2MgbWV0aG9kCisg
ICAqIEBuYW1lICRodHRwQmFja2VuZCNleHBlY3RIRUFECisgICAqIEBkZXNjcmlwdGlvbgorICAg
KiBDcmVhdGVzIGEgbmV3IHJlcXVlc3QgZXhwZWN0YXRpb24gZm9yIEhFQUQgcmVxdWVzdHMuIEZv
ciBtb3JlIGluZm8gc2VlIGBleHBlY3QoKWAuCisgICAqCisgICAqIEBwYXJhbSB7c3RyaW5nfFJl
Z0V4cHxmdW5jdGlvbihzdHJpbmcpfSB1cmwgSFRUUCB1cmwgb3IgZnVuY3Rpb24gdGhhdCByZWNl
aXZlcyBhIHVybAorICAgKiAgIGFuZCByZXR1cm5zIHRydWUgaWYgdGhlIHVybCBtYXRjaGVzIHRo
ZSBjdXJyZW50IGRlZmluaXRpb24uCisgICAqIEBwYXJhbSB7T2JqZWN0PX0gaGVhZGVycyBIVFRQ
IGhlYWRlcnMuCisgICAqIEBwYXJhbSB7KEFycmF5KT19IGtleXMgQXJyYXkgb2Yga2V5cyB0byBh
c3NpZ24gdG8gcmVnZXggbWF0Y2hlcyBpbiByZXF1ZXN0IHVybCBkZXNjcmliZWQgYWJvdmUuCisg
ICAqIEByZXR1cm5zIHtyZXF1ZXN0SGFuZGxlcn0gUmV0dXJucyBhbiBvYmplY3Qgd2l0aCBgcmVz
cG9uZGAgbWV0aG9kIHRoYXQgY29udHJvbHMgaG93IGEgbWF0Y2hlZAorICAgKiAgIHJlcXVlc3Qg
aXMgaGFuZGxlZC4gWW91IGNhbiBzYXZlIHRoaXMgb2JqZWN0IGZvciBsYXRlciB1c2UgYW5kIGlu
dm9rZSBgcmVzcG9uZGAgYWdhaW4gaW4KKyAgICogICBvcmRlciB0byBjaGFuZ2UgaG93IGEgbWF0
Y2hlZCByZXF1ZXN0IGlzIGhhbmRsZWQuCisgICAqLworCisgIC8qKgorICAgKiBAbmdkb2MgbWV0
aG9kCisgICAqIEBuYW1lICRodHRwQmFja2VuZCNleHBlY3RERUxFVEUKKyAgICogQGRlc2NyaXB0
aW9uCisgICAqIENyZWF0ZXMgYSBuZXcgcmVxdWVzdCBleHBlY3RhdGlvbiBmb3IgREVMRVRFIHJl
cXVlc3RzLiBGb3IgbW9yZSBpbmZvIHNlZSBgZXhwZWN0KClgLgorICAgKgorICAgKiBAcGFyYW0g
e3N0cmluZ3xSZWdFeHB8ZnVuY3Rpb24oc3RyaW5nKX0gdXJsIEhUVFAgdXJsIG9yIGZ1bmN0aW9u
IHRoYXQgcmVjZWl2ZXMgYSB1cmwKKyAgICogICBhbmQgcmV0dXJucyB0cnVlIGlmIHRoZSB1cmwg
bWF0Y2hlcyB0aGUgY3VycmVudCBkZWZpbml0aW9uLgorICAgKiBAcGFyYW0ge09iamVjdD19IGhl
YWRlcnMgSFRUUCBoZWFkZXJzLgorICAgKiBAcGFyYW0geyhBcnJheSk9fSBrZXlzIEFycmF5IG9m
IGtleXMgdG8gYXNzaWduIHRvIHJlZ2V4IG1hdGNoZXMgaW4gcmVxdWVzdCB1cmwgZGVzY3JpYmVk
IGFib3ZlLgorICAgKiBAcmV0dXJucyB7cmVxdWVzdEhhbmRsZXJ9IFJldHVybnMgYW4gb2JqZWN0
IHdpdGggYHJlc3BvbmRgIG1ldGhvZCB0aGF0IGNvbnRyb2xzIGhvdyBhIG1hdGNoZWQKKyAgICog
ICByZXF1ZXN0IGlzIGhhbmRsZWQuIFlvdSBjYW4gc2F2ZSB0aGlzIG9iamVjdCBmb3IgbGF0ZXIg
dXNlIGFuZCBpbnZva2UgYHJlc3BvbmRgIGFnYWluIGluCisgICAqICAgb3JkZXIgdG8gY2hhbmdl
IGhvdyBhIG1hdGNoZWQgcmVxdWVzdCBpcyBoYW5kbGVkLgorICAgKi8KKworICAvKioKKyAgICog
QG5nZG9jIG1ldGhvZAorICAgKiBAbmFtZSAkaHR0cEJhY2tlbmQjZXhwZWN0UE9TVAorICAgKiBA
ZGVzY3JpcHRpb24KKyAgICogQ3JlYXRlcyBhIG5ldyByZXF1ZXN0IGV4cGVjdGF0aW9uIGZvciBQ
T1NUIHJlcXVlc3RzLiBGb3IgbW9yZSBpbmZvIHNlZSBgZXhwZWN0KClgLgorICAgKgorICAgKiBA
cGFyYW0ge3N0cmluZ3xSZWdFeHB8ZnVuY3Rpb24oc3RyaW5nKX0gdXJsIEhUVFAgdXJsIG9yIGZ1
bmN0aW9uIHRoYXQgcmVjZWl2ZXMgYSB1cmwKKyAgICogICBhbmQgcmV0dXJucyB0cnVlIGlmIHRo
ZSB1cmwgbWF0Y2hlcyB0aGUgY3VycmVudCBkZWZpbml0aW9uLgorICAgKiBAcGFyYW0geyhzdHJp
bmd8UmVnRXhwfGZ1bmN0aW9uKHN0cmluZyl8T2JqZWN0KT19IGRhdGEgSFRUUCByZXF1ZXN0IGJv
ZHkgb3IgZnVuY3Rpb24gdGhhdAorICAgKiAgcmVjZWl2ZXMgZGF0YSBzdHJpbmcgYW5kIHJldHVy
bnMgdHJ1ZSBpZiB0aGUgZGF0YSBpcyBhcyBleHBlY3RlZCwgb3IgT2JqZWN0IGlmIHJlcXVlc3Qg
Ym9keQorICAgKiAgaXMgaW4gSlNPTiBmb3JtYXQuCisgICAqIEBwYXJhbSB7T2JqZWN0PX0gaGVh
ZGVycyBIVFRQIGhlYWRlcnMuCisgICAqIEBwYXJhbSB7KEFycmF5KT19IGtleXMgQXJyYXkgb2Yg
a2V5cyB0byBhc3NpZ24gdG8gcmVnZXggbWF0Y2hlcyBpbiByZXF1ZXN0IHVybCBkZXNjcmliZWQg
YWJvdmUuCisgICAqIEByZXR1cm5zIHtyZXF1ZXN0SGFuZGxlcn0gUmV0dXJucyBhbiBvYmplY3Qg
d2l0aCBgcmVzcG9uZGAgbWV0aG9kIHRoYXQgY29udHJvbHMgaG93IGEgbWF0Y2hlZAorICAgKiAg
IHJlcXVlc3QgaXMgaGFuZGxlZC4gWW91IGNhbiBzYXZlIHRoaXMgb2JqZWN0IGZvciBsYXRlciB1
c2UgYW5kIGludm9rZSBgcmVzcG9uZGAgYWdhaW4gaW4KKyAgICogICBvcmRlciB0byBjaGFuZ2Ug
aG93IGEgbWF0Y2hlZCByZXF1ZXN0IGlzIGhhbmRsZWQuCisgICAqLworCisgIC8qKgorICAgKiBA
bmdkb2MgbWV0aG9kCisgICAqIEBuYW1lICRodHRwQmFja2VuZCNleHBlY3RQVVQKKyAgICogQGRl
c2NyaXB0aW9uCisgICAqIENyZWF0ZXMgYSBuZXcgcmVxdWVzdCBleHBlY3RhdGlvbiBmb3IgUFVU
IHJlcXVlc3RzLiBGb3IgbW9yZSBpbmZvIHNlZSBgZXhwZWN0KClgLgorICAgKgorICAgKiBAcGFy
YW0ge3N0cmluZ3xSZWdFeHB8ZnVuY3Rpb24oc3RyaW5nKX0gdXJsIEhUVFAgdXJsIG9yIGZ1bmN0
aW9uIHRoYXQgcmVjZWl2ZXMgYSB1cmwKKyAgICogICBhbmQgcmV0dXJucyB0cnVlIGlmIHRoZSB1
cmwgbWF0Y2hlcyB0aGUgY3VycmVudCBkZWZpbml0aW9uLgorICAgKiBAcGFyYW0geyhzdHJpbmd8
UmVnRXhwfGZ1bmN0aW9uKHN0cmluZyl8T2JqZWN0KT19IGRhdGEgSFRUUCByZXF1ZXN0IGJvZHkg
b3IgZnVuY3Rpb24gdGhhdAorICAgKiAgcmVjZWl2ZXMgZGF0YSBzdHJpbmcgYW5kIHJldHVybnMg
dHJ1ZSBpZiB0aGUgZGF0YSBpcyBhcyBleHBlY3RlZCwgb3IgT2JqZWN0IGlmIHJlcXVlc3QgYm9k
eQorICAgKiAgaXMgaW4gSlNPTiBmb3JtYXQuCisgICAqIEBwYXJhbSB7T2JqZWN0PX0gaGVhZGVy
cyBIVFRQIGhlYWRlcnMuCisgICAqIEBwYXJhbSB7KEFycmF5KT19IGtleXMgQXJyYXkgb2Yga2V5
cyB0byBhc3NpZ24gdG8gcmVnZXggbWF0Y2hlcyBpbiByZXF1ZXN0IHVybCBkZXNjcmliZWQgYWJv
dmUuCisgICAqIEByZXR1cm5zIHtyZXF1ZXN0SGFuZGxlcn0gUmV0dXJucyBhbiBvYmplY3Qgd2l0
aCBgcmVzcG9uZGAgbWV0aG9kIHRoYXQgY29udHJvbHMgaG93IGEgbWF0Y2hlZAorICAgKiAgIHJl
cXVlc3QgaXMgaGFuZGxlZC4gWW91IGNhbiBzYXZlIHRoaXMgb2JqZWN0IGZvciBsYXRlciB1c2Ug
YW5kIGludm9rZSBgcmVzcG9uZGAgYWdhaW4gaW4KKyAgICogICBvcmRlciB0byBjaGFuZ2UgaG93
IGEgbWF0Y2hlZCByZXF1ZXN0IGlzIGhhbmRsZWQuCisgICAqLworCisgIC8qKgorICAgKiBAbmdk
b2MgbWV0aG9kCisgICAqIEBuYW1lICRodHRwQmFja2VuZCNleHBlY3RQQVRDSAorICAgKiBAZGVz
Y3JpcHRpb24KKyAgICogQ3JlYXRlcyBhIG5ldyByZXF1ZXN0IGV4cGVjdGF0aW9uIGZvciBQQVRD
SCByZXF1ZXN0cy4gRm9yIG1vcmUgaW5mbyBzZWUgYGV4cGVjdCgpYC4KKyAgICoKKyAgICogQHBh
cmFtIHtzdHJpbmd8UmVnRXhwfGZ1bmN0aW9uKHN0cmluZyl9IHVybCBIVFRQIHVybCBvciBmdW5j
dGlvbiB0aGF0IHJlY2VpdmVzIGEgdXJsCisgICAqICAgYW5kIHJldHVybnMgdHJ1ZSBpZiB0aGUg
dXJsIG1hdGNoZXMgdGhlIGN1cnJlbnQgZGVmaW5pdGlvbi4KKyAgICogQHBhcmFtIHsoc3RyaW5n
fFJlZ0V4cHxmdW5jdGlvbihzdHJpbmcpfE9iamVjdCk9fSBkYXRhIEhUVFAgcmVxdWVzdCBib2R5
IG9yIGZ1bmN0aW9uIHRoYXQKKyAgICogIHJlY2VpdmVzIGRhdGEgc3RyaW5nIGFuZCByZXR1cm5z
IHRydWUgaWYgdGhlIGRhdGEgaXMgYXMgZXhwZWN0ZWQsIG9yIE9iamVjdCBpZiByZXF1ZXN0IGJv
ZHkKKyAgICogIGlzIGluIEpTT04gZm9ybWF0LgorICAgKiBAcGFyYW0ge09iamVjdD19IGhlYWRl
cnMgSFRUUCBoZWFkZXJzLgorICAgKiBAcGFyYW0geyhBcnJheSk9fSBrZXlzIEFycmF5IG9mIGtl
eXMgdG8gYXNzaWduIHRvIHJlZ2V4IG1hdGNoZXMgaW4gcmVxdWVzdCB1cmwgZGVzY3JpYmVkIGFi
b3ZlLgorICAgKiBAcmV0dXJucyB7cmVxdWVzdEhhbmRsZXJ9IFJldHVybnMgYW4gb2JqZWN0IHdp
dGggYHJlc3BvbmRgIG1ldGhvZCB0aGF0IGNvbnRyb2xzIGhvdyBhIG1hdGNoZWQKKyAgICogICBy
ZXF1ZXN0IGlzIGhhbmRsZWQuIFlvdSBjYW4gc2F2ZSB0aGlzIG9iamVjdCBmb3IgbGF0ZXIgdXNl
IGFuZCBpbnZva2UgYHJlc3BvbmRgIGFnYWluIGluCisgICAqICAgb3JkZXIgdG8gY2hhbmdlIGhv
dyBhIG1hdGNoZWQgcmVxdWVzdCBpcyBoYW5kbGVkLgorICAgKi8KKworICAvKioKKyAgICogQG5n
ZG9jIG1ldGhvZAorICAgKiBAbmFtZSAkaHR0cEJhY2tlbmQjZXhwZWN0SlNPTlAKKyAgICogQGRl
c2NyaXB0aW9uCisgICAqIENyZWF0ZXMgYSBuZXcgcmVxdWVzdCBleHBlY3RhdGlvbiBmb3IgSlNP
TlAgcmVxdWVzdHMuIEZvciBtb3JlIGluZm8gc2VlIGBleHBlY3QoKWAuCisgICAqCisgICAqIEBw
YXJhbSB7c3RyaW5nfFJlZ0V4cHxmdW5jdGlvbihzdHJpbmcpfSB1cmwgSFRUUCB1cmwgb3IgZnVu
Y3Rpb24gdGhhdCByZWNlaXZlcyBhbiB1cmwKKyAgICogICBhbmQgcmV0dXJucyB0cnVlIGlmIHRo
ZSB1cmwgbWF0Y2hlcyB0aGUgY3VycmVudCBkZWZpbml0aW9uLgorICAgKiBAcGFyYW0geyhBcnJh
eSk9fSBrZXlzIEFycmF5IG9mIGtleXMgdG8gYXNzaWduIHRvIHJlZ2V4IG1hdGNoZXMgaW4gcmVx
dWVzdCB1cmwgZGVzY3JpYmVkIGFib3ZlLgorICAgKiBAcmV0dXJucyB7cmVxdWVzdEhhbmRsZXJ9
IFJldHVybnMgYW4gb2JqZWN0IHdpdGggYHJlc3BvbmRgIG1ldGhvZCB0aGF0IGNvbnRyb2xzIGhv
dyBhIG1hdGNoZWQKKyAgICogICByZXF1ZXN0IGlzIGhhbmRsZWQuIFlvdSBjYW4gc2F2ZSB0aGlz
IG9iamVjdCBmb3IgbGF0ZXIgdXNlIGFuZCBpbnZva2UgYHJlc3BvbmRgIGFnYWluIGluCisgICAq
ICAgb3JkZXIgdG8gY2hhbmdlIGhvdyBhIG1hdGNoZWQgcmVxdWVzdCBpcyBoYW5kbGVkLgorICAg
Ki8KKyAgY3JlYXRlU2hvcnRNZXRob2RzKCdleHBlY3QnKTsKKworICAvKioKKyAgICogQG5nZG9j
IG1ldGhvZAorICAgKiBAbmFtZSAkaHR0cEJhY2tlbmQjZXhwZWN0Um91dGUKKyAgICogQGRlc2Ny
aXB0aW9uCisgICAqIENyZWF0ZXMgYSBuZXcgcmVxdWVzdCBleHBlY3RhdGlvbiB0aGF0IGNvbXBh
cmVzIG9ubHkgd2l0aCB0aGUgcmVxdWVzdGVkIHJvdXRlLgorICAgKgorICAgKiBAcGFyYW0ge3N0
cmluZ30gbWV0aG9kIEhUVFAgbWV0aG9kLgorICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsIEhUVFAg
dXJsIHN0cmluZyB0aGF0IHN1cHBvcnRzIGNvbG9uIHBhcmFtIG1hdGNoaW5nLgorICAgKiBAcmV0
dXJucyB7cmVxdWVzdEhhbmRsZXJ9IFJldHVybnMgYW4gb2JqZWN0IHdpdGggYHJlc3BvbmRgIG1l
dGhvZCB0aGF0IGNvbnRyb2xzIGhvdyBhIG1hdGNoZWQKKyAgICogcmVxdWVzdCBpcyBoYW5kbGVk
LiBZb3UgY2FuIHNhdmUgdGhpcyBvYmplY3QgZm9yIGxhdGVyIHVzZSBhbmQgaW52b2tlIGByZXNw
b25kYCBhZ2FpbiBpbgorICAgKiBvcmRlciB0byBjaGFuZ2UgaG93IGEgbWF0Y2hlZCByZXF1ZXN0
IGlzIGhhbmRsZWQuIFNlZSAjZXhwZWN0IGZvciBtb3JlIGluZm8uCisgICAqLworICAkaHR0cEJh
Y2tlbmQuZXhwZWN0Um91dGUgPSBmdW5jdGlvbihtZXRob2QsIHVybCkgeworICAgIHZhciBwYXRo
T2JqID0gcGFyc2VSb3V0ZSh1cmwpOworICAgIHJldHVybiAkaHR0cEJhY2tlbmQuZXhwZWN0KG1l
dGhvZCwgcGF0aE9iai5yZWdleHAsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBwYXRoT2JqLmtleXMp
OworICB9OworCisKKyAgLyoqCisgICAqIEBuZ2RvYyBtZXRob2QKKyAgICogQG5hbWUgJGh0dHBC
YWNrZW5kI2ZsdXNoCisgICAqIEBkZXNjcmlwdGlvbgorICAgKiBGbHVzaGVzIHBlbmRpbmcgcmVx
dWVzdHMgdXNpbmcgdGhlIHRyYWluZWQgcmVzcG9uc2VzLiBSZXF1ZXN0cyBhcmUgZmx1c2hlZCBp
biB0aGUgb3JkZXIgdGhleQorICAgKiB3ZXJlIG1hZGUsIGJ1dCBpdCBpcyBhbHNvIHBvc3NpYmxl
IHRvIHNraXAgb25lIG9yIG1vcmUgcmVxdWVzdHMgKGZvciBleGFtcGxlIHRvIGhhdmUgdGhlbQor
ICAgKiBmbHVzaGVkIGxhdGVyKS4gVGhpcyBpcyB1c2VmdWwgZm9yIHNpbXVsYXRpbmcgc2NlbmFy
aW9zIHdoZXJlIHJlc3BvbnNlcyBhcnJpdmUgZnJvbSB0aGUgc2VydmVyCisgICAqIGluIGFueSBv
cmRlci4KKyAgICoKKyAgICogSWYgdGhlcmUgYXJlIG5vIHBlbmRpbmcgcmVxdWVzdHMgdG8gZmx1
c2ggd2hlbiB0aGUgbWV0aG9kIGlzIGNhbGxlZCwgYW4gZXhjZXB0aW9uIGlzIHRocm93biAoYXMK
KyAgICogdGhpcyBpcyB0eXBpY2FsbHkgYSBzaWduIG9mIHByb2dyYW1taW5nIGVycm9yKS4KKyAg
ICoKKyAgICogQHBhcmFtIHtudW1iZXI9fSBjb3VudCAtIE51bWJlciBvZiByZXNwb25zZXMgdG8g
Zmx1c2guIElmIHVuZGVmaW5lZC9udWxsLCBhbGwgcGVuZGluZyByZXF1ZXN0cworICAgKiAgICAg
KHN0YXJ0aW5nIGFmdGVyIGBza2lwYCkgd2lsbCBiZSBmbHVzaGVkLgorICAgKiBAcGFyYW0ge251
bWJlcj19IFtza2lwPTBdIC0gTnVtYmVyIG9mIHBlbmRpbmcgcmVxdWVzdHMgdG8gc2tpcC4gRm9y
IGV4YW1wbGUsIGEgdmFsdWUgb2YgYDVgCisgICAqICAgICB3b3VsZCBza2lwIHRoZSBmaXJzdCA1
IHBlbmRpbmcgcmVxdWVzdHMgYW5kIHN0YXJ0IGZsdXNoaW5nIGZyb20gdGhlIDZ0aCBvbndhcmRz
LgorICAgKi8KKyAgJGh0dHBCYWNrZW5kLmZsdXNoID0gZnVuY3Rpb24oY291bnQsIHNraXAsIGRp
Z2VzdCkgeworICAgIGlmIChkaWdlc3QgIT09IGZhbHNlKSAkcm9vdFNjb3BlLiRkaWdlc3QoKTsK
KworICAgIHNraXAgPSBza2lwIHx8IDA7CisgICAgaWYgKHNraXAgPj0gcmVzcG9uc2VzLmxlbmd0
aCkgdGhyb3cgbmV3IEVycm9yKCdObyBwZW5kaW5nIHJlcXVlc3QgdG8gZmx1c2ggIScpOworCisg
ICAgaWYgKGFuZ3VsYXIuaXNEZWZpbmVkKGNvdW50KSAmJiBjb3VudCAhPT0gbnVsbCkgeworICAg
ICAgd2hpbGUgKGNvdW50LS0pIHsKKyAgICAgICAgdmFyIHBhcnQgPSByZXNwb25zZXMuc3BsaWNl
KHNraXAsIDEpOworICAgICAgICBpZiAoIXBhcnQubGVuZ3RoKSB0aHJvdyBuZXcgRXJyb3IoJ05v
IG1vcmUgcGVuZGluZyByZXF1ZXN0IHRvIGZsdXNoICEnKTsKKyAgICAgICAgcGFydFswXSgpOwor
ICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICB3aGlsZSAocmVzcG9uc2VzLmxlbmd0aCA+IHNr
aXApIHsKKyAgICAgICAgcmVzcG9uc2VzLnNwbGljZShza2lwLCAxKVswXSgpOworICAgICAgfQor
ICAgIH0KKyAgICAkaHR0cEJhY2tlbmQudmVyaWZ5Tm9PdXRzdGFuZGluZ0V4cGVjdGF0aW9uKGRp
Z2VzdCk7CisgIH07CisKKworICAvKioKKyAgICogQG5nZG9jIG1ldGhvZAorICAgKiBAbmFtZSAk
aHR0cEJhY2tlbmQjdmVyaWZ5Tm9PdXRzdGFuZGluZ0V4cGVjdGF0aW9uCisgICAqIEBkZXNjcmlw
dGlvbgorICAgKiBWZXJpZmllcyB0aGF0IGFsbCBvZiB0aGUgcmVxdWVzdHMgZGVmaW5lZCB2aWEg
dGhlIGBleHBlY3RgIGFwaSB3ZXJlIG1hZGUuIElmIGFueSBvZiB0aGUKKyAgICogcmVxdWVzdHMg
d2VyZSBub3QgbWFkZSwgdmVyaWZ5Tm9PdXRzdGFuZGluZ0V4cGVjdGF0aW9uIHRocm93cyBhbiBl
eGNlcHRpb24uCisgICAqCisgICAqIFR5cGljYWxseSwgeW91IHdvdWxkIGNhbGwgdGhpcyBtZXRo
b2QgZm9sbG93aW5nIGVhY2ggdGVzdCBjYXNlIHRoYXQgYXNzZXJ0cyByZXF1ZXN0cyB1c2luZyBh
bgorICAgKiAiYWZ0ZXJFYWNoIiBjbGF1c2UuCisgICAqCisgICAqIGBgYGpzCisgICAqICAgYWZ0
ZXJFYWNoKCRodHRwQmFja2VuZC52ZXJpZnlOb091dHN0YW5kaW5nRXhwZWN0YXRpb24pOworICAg
KiBgYGAKKyAgICovCisgICRodHRwQmFja2VuZC52ZXJpZnlOb091dHN0YW5kaW5nRXhwZWN0YXRp
b24gPSBmdW5jdGlvbihkaWdlc3QpIHsKKyAgICBpZiAoZGlnZXN0ICE9PSBmYWxzZSkgJHJvb3RT
Y29wZS4kZGlnZXN0KCk7CisgICAgaWYgKGV4cGVjdGF0aW9ucy5sZW5ndGgpIHsKKyAgICAgIHRo
cm93IG5ldyBFcnJvcignVW5zYXRpc2ZpZWQgcmVxdWVzdHM6ICcgKyBleHBlY3RhdGlvbnMuam9p
bignLCAnKSk7CisgICAgfQorICB9OworCisKKyAgLyoqCisgICAqIEBuZ2RvYyBtZXRob2QKKyAg
ICogQG5hbWUgJGh0dHBCYWNrZW5kI3ZlcmlmeU5vT3V0c3RhbmRpbmdSZXF1ZXN0CisgICAqIEBk
ZXNjcmlwdGlvbgorICAgKiBWZXJpZmllcyB0aGF0IHRoZXJlIGFyZSBubyBvdXRzdGFuZGluZyBy
ZXF1ZXN0cyB0aGF0IG5lZWQgdG8gYmUgZmx1c2hlZC4KKyAgICoKKyAgICogVHlwaWNhbGx5LCB5
b3Ugd291bGQgY2FsbCB0aGlzIG1ldGhvZCBmb2xsb3dpbmcgZWFjaCB0ZXN0IGNhc2UgdGhhdCBh
c3NlcnRzIHJlcXVlc3RzIHVzaW5nIGFuCisgICAqICJhZnRlckVhY2giIGNsYXVzZS4KKyAgICoK
KyAgICogYGBganMKKyAgICogICBhZnRlckVhY2goJGh0dHBCYWNrZW5kLnZlcmlmeU5vT3V0c3Rh
bmRpbmdSZXF1ZXN0KTsKKyAgICogYGBgCisgICAqLworICAkaHR0cEJhY2tlbmQudmVyaWZ5Tm9P
dXRzdGFuZGluZ1JlcXVlc3QgPSBmdW5jdGlvbigpIHsKKyAgICBpZiAocmVzcG9uc2VzLmxlbmd0
aCkgeworICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmZsdXNoZWQgcmVxdWVzdHM6ICcgKyByZXNw
b25zZXMubGVuZ3RoKTsKKyAgICB9CisgIH07CisKKworICAvKioKKyAgICogQG5nZG9jIG1ldGhv
ZAorICAgKiBAbmFtZSAkaHR0cEJhY2tlbmQjcmVzZXRFeHBlY3RhdGlvbnMKKyAgICogQGRlc2Ny
aXB0aW9uCisgICAqIFJlc2V0cyBhbGwgcmVxdWVzdCBleHBlY3RhdGlvbnMsIGJ1dCBwcmVzZXJ2
ZXMgYWxsIGJhY2tlbmQgZGVmaW5pdGlvbnMuIFR5cGljYWxseSwgeW91IHdvdWxkCisgICAqIGNh
bGwgcmVzZXRFeHBlY3RhdGlvbnMgZHVyaW5nIGEgbXVsdGlwbGUtcGhhc2UgdGVzdCB3aGVuIHlv
dSB3YW50IHRvIHJldXNlIHRoZSBzYW1lIGluc3RhbmNlIG9mCisgICAqICRodHRwQmFja2VuZCBt
b2NrLgorICAgKi8KKyAgJGh0dHBCYWNrZW5kLnJlc2V0RXhwZWN0YXRpb25zID0gZnVuY3Rpb24o
KSB7CisgICAgZXhwZWN0YXRpb25zLmxlbmd0aCA9IDA7CisgICAgcmVzcG9uc2VzLmxlbmd0aCA9
IDA7CisgIH07CisKKyAgcmV0dXJuICRodHRwQmFja2VuZDsKKworCisgIGZ1bmN0aW9uIGNyZWF0
ZVNob3J0TWV0aG9kcyhwcmVmaXgpIHsKKyAgICBhbmd1bGFyLmZvckVhY2goWydHRVQnLCAnREVM
RVRFJywgJ0pTT05QJywgJ0hFQUQnXSwgZnVuY3Rpb24obWV0aG9kKSB7CisgICAgICRodHRwQmFj
a2VuZFtwcmVmaXggKyBtZXRob2RdID0gZnVuY3Rpb24odXJsLCBoZWFkZXJzLCBrZXlzKSB7Cisg
ICAgICAgcmV0dXJuICRodHRwQmFja2VuZFtwcmVmaXhdKG1ldGhvZCwgdXJsLCB1bmRlZmluZWQs
IGhlYWRlcnMsIGtleXMpOworICAgICB9OworICAgIH0pOworCisgICAgYW5ndWxhci5mb3JFYWNo
KFsnUFVUJywgJ1BPU1QnLCAnUEFUQ0gnXSwgZnVuY3Rpb24obWV0aG9kKSB7CisgICAgICAkaHR0
cEJhY2tlbmRbcHJlZml4ICsgbWV0aG9kXSA9IGZ1bmN0aW9uKHVybCwgZGF0YSwgaGVhZGVycywg
a2V5cykgeworICAgICAgICByZXR1cm4gJGh0dHBCYWNrZW5kW3ByZWZpeF0obWV0aG9kLCB1cmws
IGRhdGEsIGhlYWRlcnMsIGtleXMpOworICAgICAgfTsKKyAgICB9KTsKKyAgfQorfQorCitmdW5j
dGlvbiBNb2NrSHR0cEV4cGVjdGF0aW9uKG1ldGhvZCwgdXJsLCBkYXRhLCBoZWFkZXJzLCBrZXlz
KSB7CisKKyAgZnVuY3Rpb24gZ2V0VXJsUGFyYW1zKHUpIHsKKyAgICB2YXIgcGFyYW1zID0gdS5z
bGljZSh1LmluZGV4T2YoJz8nKSArIDEpLnNwbGl0KCcmJyk7CisgICAgcmV0dXJuIHBhcmFtcy5z
b3J0KCk7CisgIH0KKworICBmdW5jdGlvbiBjb21wYXJlVXJsKHUpIHsKKyAgICByZXR1cm4gKHVy
bC5zbGljZSgwLCB1cmwuaW5kZXhPZignPycpKSA9PT0gdS5zbGljZSgwLCB1LmluZGV4T2YoJz8n
KSkgJiYKKyAgICAgIGdldFVybFBhcmFtcyh1cmwpLmpvaW4oKSA9PT0gZ2V0VXJsUGFyYW1zKHUp
LmpvaW4oKSk7CisgIH0KKworICB0aGlzLmRhdGEgPSBkYXRhOworICB0aGlzLmhlYWRlcnMgPSBo
ZWFkZXJzOworCisgIHRoaXMubWF0Y2ggPSBmdW5jdGlvbihtLCB1LCBkLCBoKSB7CisgICAgaWYg
KG1ldGhvZCAhPT0gbSkgcmV0dXJuIGZhbHNlOworICAgIGlmICghdGhpcy5tYXRjaFVybCh1KSkg
cmV0dXJuIGZhbHNlOworICAgIGlmIChhbmd1bGFyLmlzRGVmaW5lZChkKSAmJiAhdGhpcy5tYXRj
aERhdGEoZCkpIHJldHVybiBmYWxzZTsKKyAgICBpZiAoYW5ndWxhci5pc0RlZmluZWQoaCkgJiYg
IXRoaXMubWF0Y2hIZWFkZXJzKGgpKSByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cisg
IH07CisKKyAgdGhpcy5tYXRjaFVybCA9IGZ1bmN0aW9uKHUpIHsKKyAgICBpZiAoIXVybCkgcmV0
dXJuIHRydWU7CisgICAgaWYgKGFuZ3VsYXIuaXNGdW5jdGlvbih1cmwudGVzdCkpIHJldHVybiB1
cmwudGVzdCh1KTsKKyAgICBpZiAoYW5ndWxhci5pc0Z1bmN0aW9uKHVybCkpIHJldHVybiB1cmwo
dSk7CisgICAgcmV0dXJuICh1cmwgPT09IHUgfHwgY29tcGFyZVVybCh1KSk7CisgIH07CisKKyAg
dGhpcy5tYXRjaEhlYWRlcnMgPSBmdW5jdGlvbihoKSB7CisgICAgaWYgKGFuZ3VsYXIuaXNVbmRl
ZmluZWQoaGVhZGVycykpIHJldHVybiB0cnVlOworICAgIGlmIChhbmd1bGFyLmlzRnVuY3Rpb24o
aGVhZGVycykpIHJldHVybiBoZWFkZXJzKGgpOworICAgIHJldHVybiBhbmd1bGFyLmVxdWFscyho
ZWFkZXJzLCBoKTsKKyAgfTsKKworICB0aGlzLm1hdGNoRGF0YSA9IGZ1bmN0aW9uKGQpIHsKKyAg
ICBpZiAoYW5ndWxhci5pc1VuZGVmaW5lZChkYXRhKSkgcmV0dXJuIHRydWU7CisgICAgaWYgKGRh
dGEgJiYgYW5ndWxhci5pc0Z1bmN0aW9uKGRhdGEudGVzdCkpIHJldHVybiBkYXRhLnRlc3QoZCk7
CisgICAgaWYgKGRhdGEgJiYgYW5ndWxhci5pc0Z1bmN0aW9uKGRhdGEpKSByZXR1cm4gZGF0YShk
KTsKKyAgICBpZiAoZGF0YSAmJiAhYW5ndWxhci5pc1N0cmluZyhkYXRhKSkgeworICAgICAgcmV0
dXJuIGFuZ3VsYXIuZXF1YWxzKGFuZ3VsYXIuZnJvbUpzb24oYW5ndWxhci50b0pzb24oZGF0YSkp
LCBhbmd1bGFyLmZyb21Kc29uKGQpKTsKKyAgICB9CisgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4
dC1saW5lIGVxZXFlcQorICAgIHJldHVybiBkYXRhID09IGQ7CisgIH07CisKKyAgdGhpcy50b1N0
cmluZyA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiBtZXRob2QgKyAnICcgKyB1cmw7CisgIH07
CisKKyAgdGhpcy5wYXJhbXMgPSBmdW5jdGlvbih1KSB7CisgICAgcmV0dXJuIGFuZ3VsYXIuZXh0
ZW5kKHBhcnNlUXVlcnkoKSwgcGF0aFBhcmFtcygpKTsKKworICAgIGZ1bmN0aW9uIHBhdGhQYXJh
bXMoKSB7CisgICAgICB2YXIga2V5T2JqID0ge307CisgICAgICBpZiAoIXVybCB8fCAhYW5ndWxh
ci5pc0Z1bmN0aW9uKHVybC50ZXN0KSB8fCAha2V5cyB8fCBrZXlzLmxlbmd0aCA9PT0gMCkgcmV0
dXJuIGtleU9iajsKKworICAgICAgdmFyIG0gPSB1cmwuZXhlYyh1KTsKKyAgICAgIGlmICghbSkg
cmV0dXJuIGtleU9iajsKKyAgICAgIGZvciAodmFyIGkgPSAxLCBsZW4gPSBtLmxlbmd0aDsgaSA8
IGxlbjsgKytpKSB7CisgICAgICAgIHZhciBrZXkgPSBrZXlzW2kgLSAxXTsKKyAgICAgICAgdmFy
IHZhbCA9IG1baV07CisgICAgICAgIGlmIChrZXkgJiYgdmFsKSB7CisgICAgICAgICAga2V5T2Jq
W2tleS5uYW1lIHx8IGtleV0gPSB2YWw7CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgcmV0
dXJuIGtleU9iajsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBwYXJzZVF1ZXJ5KCkgeworICAgICAg
dmFyIG9iaiA9IHt9LCBrZXlfdmFsdWUsIGtleSwKKyAgICAgICAgICBxdWVyeVN0ciA9IHUuaW5k
ZXhPZignPycpID4gLTEKKyAgICAgICAgICA/IHUuc3Vic3RyaW5nKHUuaW5kZXhPZignPycpICsg
MSkKKyAgICAgICAgICA6ICcnOworCisgICAgICBhbmd1bGFyLmZvckVhY2gocXVlcnlTdHIuc3Bs
aXQoJyYnKSwgZnVuY3Rpb24oa2V5VmFsdWUpIHsKKyAgICAgICAgaWYgKGtleVZhbHVlKSB7Cisg
ICAgICAgICAga2V5X3ZhbHVlID0ga2V5VmFsdWUucmVwbGFjZSgvXCsvZywnJTIwJykuc3BsaXQo
Jz0nKTsKKyAgICAgICAgICBrZXkgPSB0cnlEZWNvZGVVUklDb21wb25lbnQoa2V5X3ZhbHVlWzBd
KTsKKyAgICAgICAgICBpZiAoYW5ndWxhci5pc0RlZmluZWQoa2V5KSkgeworICAgICAgICAgICAg
dmFyIHZhbCA9IGFuZ3VsYXIuaXNEZWZpbmVkKGtleV92YWx1ZVsxXSkgPyB0cnlEZWNvZGVVUklD
b21wb25lbnQoa2V5X3ZhbHVlWzFdKSA6IHRydWU7CisgICAgICAgICAgICBpZiAoIWhhc093blBy
b3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7CisgICAgICAgICAgICAgIG9ialtrZXldID0gdmFsOwor
ICAgICAgICAgICAgfSBlbHNlIGlmIChhbmd1bGFyLmlzQXJyYXkob2JqW2tleV0pKSB7CisgICAg
ICAgICAgICAgIG9ialtrZXldLnB1c2godmFsKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgIG9ialtrZXldID0gW29ialtrZXldLHZhbF07CisgICAgICAgICAgICB9CisgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICB9KTsKKyAgICAgIHJldHVybiBvYmo7CisgICAgfQor
ICAgIGZ1bmN0aW9uIHRyeURlY29kZVVSSUNvbXBvbmVudCh2YWx1ZSkgeworICAgICAgdHJ5IHsK
KyAgICAgICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudCh2YWx1ZSk7CisgICAgICB9IGNhdGNo
IChlKSB7CisgICAgICAgIC8vIElnbm9yZSBhbnkgaW52YWxpZCB1cmkgY29tcG9uZW50CisgICAg
ICB9CisgICAgfQorICB9OworfQorCitmdW5jdGlvbiBjcmVhdGVNb2NrWGhyKCkgeworICByZXR1
cm4gbmV3IE1vY2tYaHIoKTsKK30KKworZnVuY3Rpb24gTW9ja1hocigpIHsKKworICAvLyBoYWNr
IGZvciB0ZXN0aW5nICRodHRwLCAkaHR0cEJhY2tlbmQKKyAgTW9ja1hoci4kJGxhc3RJbnN0YW5j
ZSA9IHRoaXM7CisKKyAgdGhpcy5vcGVuID0gZnVuY3Rpb24obWV0aG9kLCB1cmwsIGFzeW5jKSB7
CisgICAgdGhpcy4kJG1ldGhvZCA9IG1ldGhvZDsKKyAgICB0aGlzLiQkdXJsID0gdXJsOworICAg
IHRoaXMuJCRhc3luYyA9IGFzeW5jOworICAgIHRoaXMuJCRyZXFIZWFkZXJzID0ge307CisgICAg
dGhpcy4kJHJlc3BIZWFkZXJzID0ge307CisgIH07CisKKyAgdGhpcy5zZW5kID0gZnVuY3Rpb24o
ZGF0YSkgeworICAgIHRoaXMuJCRkYXRhID0gZGF0YTsKKyAgfTsKKworICB0aGlzLnNldFJlcXVl
c3RIZWFkZXIgPSBmdW5jdGlvbihrZXksIHZhbHVlKSB7CisgICAgdGhpcy4kJHJlcUhlYWRlcnNb
a2V5XSA9IHZhbHVlOworICB9OworCisgIHRoaXMuZ2V0UmVzcG9uc2VIZWFkZXIgPSBmdW5jdGlv
bihuYW1lKSB7CisgICAgLy8gdGhlIGxvb2t1cCBtdXN0IGJlIGNhc2UgaW5zZW5zaXRpdmUsCisg
ICAgLy8gdGhhdCdzIHdoeSB3ZSB0cnkgdHdvIHF1aWNrIGxvb2t1cHMgZmlyc3QgYW5kIGZ1bGwg
c2NhbiBsYXN0CisgICAgdmFyIGhlYWRlciA9IHRoaXMuJCRyZXNwSGVhZGVyc1tuYW1lXTsKKyAg
ICBpZiAoaGVhZGVyKSByZXR1cm4gaGVhZGVyOworCisgICAgbmFtZSA9IGFuZ3VsYXIubG93ZXJj
YXNlKG5hbWUpOworICAgIGhlYWRlciA9IHRoaXMuJCRyZXNwSGVhZGVyc1tuYW1lXTsKKyAgICBp
ZiAoaGVhZGVyKSByZXR1cm4gaGVhZGVyOworCisgICAgaGVhZGVyID0gdW5kZWZpbmVkOworICAg
IGFuZ3VsYXIuZm9yRWFjaCh0aGlzLiQkcmVzcEhlYWRlcnMsIGZ1bmN0aW9uKGhlYWRlclZhbCwg
aGVhZGVyTmFtZSkgeworICAgICAgaWYgKCFoZWFkZXIgJiYgYW5ndWxhci5sb3dlcmNhc2UoaGVh
ZGVyTmFtZSkgPT09IG5hbWUpIGhlYWRlciA9IGhlYWRlclZhbDsKKyAgICB9KTsKKyAgICByZXR1
cm4gaGVhZGVyOworICB9OworCisgIHRoaXMuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzID0gZnVuY3Rp
b24oKSB7CisgICAgdmFyIGxpbmVzID0gW107CisKKyAgICBhbmd1bGFyLmZvckVhY2godGhpcy4k
JHJlc3BIZWFkZXJzLCBmdW5jdGlvbih2YWx1ZSwga2V5KSB7CisgICAgICBsaW5lcy5wdXNoKGtl
eSArICc6ICcgKyB2YWx1ZSk7CisgICAgfSk7CisgICAgcmV0dXJuIGxpbmVzLmpvaW4oJ1xuJyk7
CisgIH07CisKKyAgdGhpcy5hYm9ydCA9IGFuZ3VsYXIubm9vcDsKKworICAvLyBUaGlzIHNlY3Rp
b24gc2ltdWxhdGVzIHRoZSBldmVudHMgb24gYSByZWFsIFhIUiBvYmplY3QgKGFuZCB0aGUgdXBs
b2FkIG9iamVjdCkKKyAgLy8gV2hlbiB3ZSBhcmUgdGVzdGluZyAkaHR0cEJhY2tlbmQgKGluc2lk
ZSB0aGUgYW5ndWxhciBwcm9qZWN0KSB3ZSBtYWtlIHBhcnRpYWwgdXNlIG9mIHRoaXMKKyAgLy8g
YnV0IHN0b3JlIHRoZSBldmVudHMgZGlyZWN0bHkgb3Vyc2VsdmVzIG9uIGAkJGV2ZW50c2AsIGlu
c3RlYWQgb2YgZ29pbmcgdGhyb3VnaCB0aGUgYGFkZEV2ZW50TGlzdGVuZXJgCisgIHRoaXMuJCRl
dmVudHMgPSB7fTsKKyAgdGhpcy5hZGRFdmVudExpc3RlbmVyID0gZnVuY3Rpb24obmFtZSwgbGlz
dGVuZXIpIHsKKyAgICBpZiAoYW5ndWxhci5pc1VuZGVmaW5lZCh0aGlzLiQkZXZlbnRzW25hbWVd
KSkgdGhpcy4kJGV2ZW50c1tuYW1lXSA9IFtdOworICAgIHRoaXMuJCRldmVudHNbbmFtZV0ucHVz
aChsaXN0ZW5lcik7CisgIH07CisKKyAgdGhpcy51cGxvYWQgPSB7CisgICAgJCRldmVudHM6IHt9
LAorICAgIGFkZEV2ZW50TGlzdGVuZXI6IHRoaXMuYWRkRXZlbnRMaXN0ZW5lcgorICB9OworfQor
CisKKy8qKgorICogQG5nZG9jIHNlcnZpY2UKKyAqIEBuYW1lICR0aW1lb3V0CisgKiBAZGVzY3Jp
cHRpb24KKyAqCisgKiBUaGlzIHNlcnZpY2UgaXMganVzdCBhIHNpbXBsZSBkZWNvcmF0b3IgZm9y
IHtAbGluayBuZy4kdGltZW91dCAkdGltZW91dH0gc2VydmljZQorICogdGhhdCBhZGRzIGEgImZs
dXNoIiBhbmQgInZlcmlmeU5vUGVuZGluZ1Rhc2tzIiBtZXRob2RzLgorICovCisKK2FuZ3VsYXIu
bW9jay4kVGltZW91dERlY29yYXRvciA9IFsnJGRlbGVnYXRlJywgJyRicm93c2VyJywgZnVuY3Rp
b24oJGRlbGVnYXRlLCAkYnJvd3NlcikgeworCisgIC8qKgorICAgKiBAbmdkb2MgbWV0aG9kCisg
ICAqIEBuYW1lICR0aW1lb3V0I2ZsdXNoCisgICAqIEBkZXNjcmlwdGlvbgorICAgKgorICAgKiBG
bHVzaGVzIHRoZSBxdWV1ZSBvZiBwZW5kaW5nIHRhc2tzLgorICAgKgorICAgKiBAcGFyYW0ge251
bWJlcj19IGRlbGF5IG1heGltdW0gdGltZW91dCBhbW91bnQgdG8gZmx1c2ggdXAgdW50aWwKKyAg
ICovCisgICRkZWxlZ2F0ZS5mbHVzaCA9IGZ1bmN0aW9uKGRlbGF5KSB7CisgICAgJGJyb3dzZXIu
ZGVmZXIuZmx1c2goZGVsYXkpOworICB9OworCisgIC8qKgorICAgKiBAbmdkb2MgbWV0aG9kCisg
ICAqIEBuYW1lICR0aW1lb3V0I3ZlcmlmeU5vUGVuZGluZ1Rhc2tzCisgICAqIEBkZXNjcmlwdGlv
bgorICAgKgorICAgKiBWZXJpZmllcyB0aGF0IHRoZXJlIGFyZSBubyBwZW5kaW5nIHRhc2tzIHRo
YXQgbmVlZCB0byBiZSBmbHVzaGVkLgorICAgKi8KKyAgJGRlbGVnYXRlLnZlcmlmeU5vUGVuZGlu
Z1Rhc2tzID0gZnVuY3Rpb24oKSB7CisgICAgaWYgKCRicm93c2VyLmRlZmVycmVkRm5zLmxlbmd0
aCkgeworICAgICAgdGhyb3cgbmV3IEVycm9yKCdEZWZlcnJlZCB0YXNrcyB0byBmbHVzaCAoJyAr
ICRicm93c2VyLmRlZmVycmVkRm5zLmxlbmd0aCArICcpOiAnICsKKyAgICAgICAgICBmb3JtYXRQ
ZW5kaW5nVGFza3NBc1N0cmluZygkYnJvd3Nlci5kZWZlcnJlZEZucykpOworICAgIH0KKyAgfTsK
KworICBmdW5jdGlvbiBmb3JtYXRQZW5kaW5nVGFza3NBc1N0cmluZyh0YXNrcykgeworICAgIHZh
ciByZXN1bHQgPSBbXTsKKyAgICBhbmd1bGFyLmZvckVhY2godGFza3MsIGZ1bmN0aW9uKHRhc2sp
IHsKKyAgICAgIHJlc3VsdC5wdXNoKCd7aWQ6ICcgKyB0YXNrLmlkICsgJywgdGltZTogJyArIHRh
c2sudGltZSArICd9Jyk7CisgICAgfSk7CisKKyAgICByZXR1cm4gcmVzdWx0LmpvaW4oJywgJyk7
CisgIH0KKworICByZXR1cm4gJGRlbGVnYXRlOworfV07CisKK2FuZ3VsYXIubW9jay4kUkFGRGVj
b3JhdG9yID0gWyckZGVsZWdhdGUnLCBmdW5jdGlvbigkZGVsZWdhdGUpIHsKKyAgdmFyIHJhZkZu
ID0gZnVuY3Rpb24oZm4pIHsKKyAgICB2YXIgaW5kZXggPSByYWZGbi5xdWV1ZS5sZW5ndGg7Cisg
ICAgcmFmRm4ucXVldWUucHVzaChmbik7CisgICAgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAgICAg
cmFmRm4ucXVldWUuc3BsaWNlKGluZGV4LCAxKTsKKyAgICB9OworICB9OworCisgIHJhZkZuLnF1
ZXVlID0gW107CisgIHJhZkZuLnN1cHBvcnRlZCA9ICRkZWxlZ2F0ZS5zdXBwb3J0ZWQ7CisKKyAg
cmFmRm4uZmx1c2ggPSBmdW5jdGlvbigpIHsKKyAgICBpZiAocmFmRm4ucXVldWUubGVuZ3RoID09
PSAwKSB7CisgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHJBRiBjYWxsYmFja3MgcHJlc2VudCcp
OworICAgIH0KKworICAgIHZhciBsZW5ndGggPSByYWZGbi5xdWV1ZS5sZW5ndGg7CisgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgcmFmRm4ucXVldWVbaV0oKTsK
KyAgICB9CisKKyAgICByYWZGbi5xdWV1ZSA9IHJhZkZuLnF1ZXVlLnNsaWNlKGkpOworICB9Owor
CisgIHJldHVybiByYWZGbjsKK31dOworCisvKioKKyAqCisgKi8KK3ZhciBvcmlnaW5hbFJvb3RF
bGVtZW50OworYW5ndWxhci5tb2NrLiRSb290RWxlbWVudFByb3ZpZGVyID0gZnVuY3Rpb24oKSB7
CisgIHRoaXMuJGdldCA9IFsnJGluamVjdG9yJywgZnVuY3Rpb24oJGluamVjdG9yKSB7CisgICAg
b3JpZ2luYWxSb290RWxlbWVudCA9IGFuZ3VsYXIuZWxlbWVudCgnPGRpdiBuZy1hcHA+PC9kaXY+
JykuZGF0YSgnJGluamVjdG9yJywgJGluamVjdG9yKTsKKyAgICByZXR1cm4gb3JpZ2luYWxSb290
RWxlbWVudDsKKyAgfV07Cit9OworCisvKioKKyAqIEBuZ2RvYyBzZXJ2aWNlCisgKiBAbmFtZSAk
Y29udHJvbGxlcgorICogQGRlc2NyaXB0aW9uCisgKiBBIGRlY29yYXRvciBmb3Ige0BsaW5rIG5n
LiRjb250cm9sbGVyfSB3aXRoIGFkZGl0aW9uYWwgYGJpbmRpbmdzYCBwYXJhbWV0ZXIsIHVzZWZ1
bCB3aGVuIHRlc3RpbmcKKyAqIGNvbnRyb2xsZXJzIG9mIGRpcmVjdGl2ZXMgdGhhdCB1c2Uge0Bs
aW5rICRjb21waWxlIy1iaW5kdG9jb250cm9sbGVyLSBgYmluZFRvQ29udHJvbGxlcmB9LgorICoK
KyAqCisgKiAjIyBFeGFtcGxlCisgKgorICogYGBganMKKyAqCisgKiAvLyBEaXJlY3RpdmUgZGVm
aW5pdGlvbiAuLi4KKyAqCisgKiBteU1vZC5kaXJlY3RpdmUoJ215RGlyZWN0aXZlJywgeworICog
ICBjb250cm9sbGVyOiAnTXlEaXJlY3RpdmVDb250cm9sbGVyJywKKyAqICAgYmluZFRvQ29udHJv
bGxlcjogeworICogICAgIG5hbWU6ICdAJworICogICB9CisgKiB9KTsKKyAqCisgKgorICogLy8g
Q29udHJvbGxlciBkZWZpbml0aW9uIC4uLgorICoKKyAqIG15TW9kLmNvbnRyb2xsZXIoJ015RGly
ZWN0aXZlQ29udHJvbGxlcicsIFsnJGxvZycsIGZ1bmN0aW9uKCRsb2cpIHsKKyAqICAgJGxvZy5p
bmZvKHRoaXMubmFtZSk7CisgKiB9XSk7CisgKgorICoKKyAqIC8vIEluIGEgdGVzdCAuLi4KKyAq
CisgKiBkZXNjcmliZSgnbXlEaXJlY3RpdmVDb250cm9sbGVyJywgZnVuY3Rpb24oKSB7CisgKiAg
IGl0KCdzaG91bGQgd3JpdGUgdGhlIGJvdW5kIG5hbWUgdG8gdGhlIGxvZycsIGluamVjdChmdW5j
dGlvbigkY29udHJvbGxlciwgJGxvZykgeworICogICAgIHZhciBjdHJsID0gJGNvbnRyb2xsZXIo
J015RGlyZWN0aXZlQ29udHJvbGxlcicsIHsgLyogbm8gbG9jYWxzICYjNDI7LyB9LCB7IG5hbWU6
ICdDbGFyayBLZW50JyB9KTsKKyAqICAgICBleHBlY3QoY3RybC5uYW1lKS50b0VxdWFsKCdDbGFy
ayBLZW50Jyk7CisgKiAgICAgZXhwZWN0KCRsb2cuaW5mby5sb2dzKS50b0VxdWFsKFsnQ2xhcmsg
S2VudCddKTsKKyAqICAgfSkpOworICogfSk7CisgKgorICogYGBgCisgKgorICogQHBhcmFtIHtG
dW5jdGlvbnxzdHJpbmd9IGNvbnN0cnVjdG9yIElmIGNhbGxlZCB3aXRoIGEgZnVuY3Rpb24gdGhl
biBpdCdzIGNvbnNpZGVyZWQgdG8gYmUgdGhlCisgKiAgICBjb250cm9sbGVyIGNvbnN0cnVjdG9y
IGZ1bmN0aW9uLiBPdGhlcndpc2UgaXQncyBjb25zaWRlcmVkIHRvIGJlIGEgc3RyaW5nIHdoaWNo
IGlzIHVzZWQKKyAqICAgIHRvIHJldHJpZXZlIHRoZSBjb250cm9sbGVyIGNvbnN0cnVjdG9yIHVz
aW5nIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisgKgorICogICAgKiBjaGVjayBpZiBhIGNvbnRyb2xs
ZXIgd2l0aCBnaXZlbiBuYW1lIGlzIHJlZ2lzdGVyZWQgdmlhIGAkY29udHJvbGxlclByb3ZpZGVy
YAorICogICAgKiBjaGVjayBpZiBldmFsdWF0aW5nIHRoZSBzdHJpbmcgb24gdGhlIGN1cnJlbnQg
c2NvcGUgcmV0dXJucyBhIGNvbnN0cnVjdG9yCisgKiAgICAqIGlmICRjb250cm9sbGVyUHJvdmlk
ZXIjYWxsb3dHbG9iYWxzLCBjaGVjayBgd2luZG93W2NvbnN0cnVjdG9yXWAgb24gdGhlIGdsb2Jh
bAorICogICAgICBgd2luZG93YCBvYmplY3QgKG5vdCByZWNvbW1lbmRlZCkKKyAqCisgKiAgICBU
aGUgc3RyaW5nIGNhbiB1c2UgdGhlIGBjb250cm9sbGVyIGFzIHByb3BlcnR5YCBzeW50YXgsIHdo
ZXJlIHRoZSBjb250cm9sbGVyIGluc3RhbmNlIGlzIHB1Ymxpc2hlZAorICogICAgYXMgdGhlIHNw
ZWNpZmllZCBwcm9wZXJ0eSBvbiB0aGUgYHNjb3BlYDsgdGhlIGBzY29wZWAgbXVzdCBiZSBpbmpl
Y3RlZCBpbnRvIGBsb2NhbHNgIHBhcmFtIGZvciB0aGlzCisgKiAgICB0byB3b3JrIGNvcnJlY3Rs
eS4KKyAqCisgKiBAcGFyYW0ge09iamVjdH0gbG9jYWxzIEluamVjdGlvbiBsb2NhbHMgZm9yIENv
bnRyb2xsZXIuCisgKiBAcGFyYW0ge09iamVjdD19IGJpbmRpbmdzIFByb3BlcnRpZXMgdG8gYWRk
IHRvIHRoZSBjb250cm9sbGVyIGJlZm9yZSBpbnZva2luZyB0aGUgY29uc3RydWN0b3IuIFRoaXMg
aXMgdXNlZAorICogICAgICAgICAgICAgICAgICAgICAgICAgICB0byBzaW11bGF0ZSB0aGUgYGJp
bmRUb0NvbnRyb2xsZXJgIGZlYXR1cmUgYW5kIHNpbXBsaWZ5IGNlcnRhaW4ga2luZHMgb2YgdGVz
dHMuCisgKiBAcmV0dXJuIHtPYmplY3R9IEluc3RhbmNlIG9mIGdpdmVuIGNvbnRyb2xsZXIuCisg
Ki8KK2FuZ3VsYXIubW9jay4kQ29udHJvbGxlckRlY29yYXRvciA9IFsnJGRlbGVnYXRlJywgZnVu
Y3Rpb24oJGRlbGVnYXRlKSB7CisgIHJldHVybiBmdW5jdGlvbihleHByZXNzaW9uLCBsb2NhbHMs
IGxhdGVyLCBpZGVudCkgeworICAgIGlmIChsYXRlciAmJiB0eXBlb2YgbGF0ZXIgPT09ICdvYmpl
Y3QnKSB7CisgICAgICB2YXIgaW5zdGFudGlhdGUgPSAkZGVsZWdhdGUoZXhwcmVzc2lvbiwgbG9j
YWxzLCB0cnVlLCBpZGVudCk7CisgICAgICBhbmd1bGFyLmV4dGVuZChpbnN0YW50aWF0ZS5pbnN0
YW5jZSwgbGF0ZXIpOworCisgICAgICB2YXIgaW5zdGFuY2UgPSBpbnN0YW50aWF0ZSgpOworICAg
ICAgaWYgKGluc3RhbmNlICE9PSBpbnN0YW50aWF0ZS5pbnN0YW5jZSkgeworICAgICAgICBhbmd1
bGFyLmV4dGVuZChpbnN0YW5jZSwgbGF0ZXIpOworICAgICAgfQorCisgICAgICByZXR1cm4gaW5z
dGFuY2U7CisgICAgfQorICAgIHJldHVybiAkZGVsZWdhdGUoZXhwcmVzc2lvbiwgbG9jYWxzLCBs
YXRlciwgaWRlbnQpOworICB9OworfV07CisKKy8qKgorICogQG5nZG9jIHNlcnZpY2UKKyAqIEBu
YW1lICRjb21wb25lbnRDb250cm9sbGVyCisgKiBAZGVzY3JpcHRpb24KKyAqIEEgc2VydmljZSB0
aGF0IGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSBpbnN0YW5jZXMgb2YgY29tcG9uZW50IGNvbnRyb2xs
ZXJzLgorICogPGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtaW5mbyI+CisgKiBCZSBhd2FyZSB0aGF0
IHRoZSBjb250cm9sbGVyIHdpbGwgYmUgaW5zdGFudGlhdGVkIGFuZCBhdHRhY2hlZCB0byB0aGUg
c2NvcGUgYXMgc3BlY2lmaWVkIGluCisgKiB0aGUgY29tcG9uZW50IGRlZmluaXRpb24gb2JqZWN0
LiBJZiB5b3UgZG8gbm90IHByb3ZpZGUgYSBgJHNjb3BlYCBvYmplY3QgaW4gdGhlIGBsb2NhbHNg
IHBhcmFtCisgKiB0aGVuIHRoZSBoZWxwZXIgd2lsbCBjcmVhdGUgYSBuZXcgaXNvbGF0ZWQgc2Nv
cGUgYXMgYSBjaGlsZCBvZiBgJHJvb3RTY29wZWAuCisgKiA8L2Rpdj4KKyAqIEBwYXJhbSB7c3Ry
aW5nfSBjb21wb25lbnROYW1lIHRoZSBuYW1lIG9mIHRoZSBjb21wb25lbnQgd2hvc2UgY29udHJv
bGxlciB3ZSB3YW50IHRvIGluc3RhbnRpYXRlCisgKiBAcGFyYW0ge09iamVjdH0gbG9jYWxzIElu
amVjdGlvbiBsb2NhbHMgZm9yIENvbnRyb2xsZXIuCisgKiBAcGFyYW0ge09iamVjdD19IGJpbmRp
bmdzIFByb3BlcnRpZXMgdG8gYWRkIHRvIHRoZSBjb250cm9sbGVyIGJlZm9yZSBpbnZva2luZyB0
aGUgY29uc3RydWN0b3IuIFRoaXMgaXMgdXNlZAorICogICAgICAgICAgICAgICAgICAgICAgICAg
ICB0byBzaW11bGF0ZSB0aGUgYGJpbmRUb0NvbnRyb2xsZXJgIGZlYXR1cmUgYW5kIHNpbXBsaWZ5
IGNlcnRhaW4ga2luZHMgb2YgdGVzdHMuCisgKiBAcGFyYW0ge3N0cmluZz19IGlkZW50IE92ZXJy
aWRlIHRoZSBwcm9wZXJ0eSBuYW1lIHRvIHVzZSB3aGVuIGF0dGFjaGluZyB0aGUgY29udHJvbGxl
ciB0byB0aGUgc2NvcGUuCisgKiBAcmV0dXJuIHtPYmplY3R9IEluc3RhbmNlIG9mIHJlcXVlc3Rl
ZCBjb250cm9sbGVyLgorICovCithbmd1bGFyLm1vY2suJENvbXBvbmVudENvbnRyb2xsZXJQcm92
aWRlciA9IFsnJGNvbXBpbGVQcm92aWRlcicsCisgICAgZnVuY3Rpb24gQ29tcG9uZW50Q29udHJv
bGxlclByb3ZpZGVyKCRjb21waWxlUHJvdmlkZXIpIHsKKyAgdGhpcy4kZ2V0ID0gWyckY29udHJv
bGxlcicsJyRpbmplY3RvcicsICckcm9vdFNjb3BlJywgZnVuY3Rpb24oJGNvbnRyb2xsZXIsICRp
bmplY3RvciwgJHJvb3RTY29wZSkgeworICAgIHJldHVybiBmdW5jdGlvbiAkY29tcG9uZW50Q29u
dHJvbGxlcihjb21wb25lbnROYW1lLCBsb2NhbHMsIGJpbmRpbmdzLCBpZGVudCkgeworICAgICAg
Ly8gZ2V0IGFsbCBkaXJlY3RpdmVzIGFzc29jaWF0ZWQgdG8gdGhlIGNvbXBvbmVudCBuYW1lCisg
ICAgICB2YXIgZGlyZWN0aXZlcyA9ICRpbmplY3Rvci5nZXQoY29tcG9uZW50TmFtZSArICdEaXJl
Y3RpdmUnKTsKKyAgICAgIC8vIGxvb2sgZm9yIHRob3NlIGRpcmVjdGl2ZXMgdGhhdCBhcmUgY29t
cG9uZW50cworICAgICAgdmFyIGNhbmRpZGF0ZURpcmVjdGl2ZXMgPSBkaXJlY3RpdmVzLmZpbHRl
cihmdW5jdGlvbihkaXJlY3RpdmVJbmZvKSB7CisgICAgICAgIC8vIGNvbXBvbmVudHMgaGF2ZSBj
b250cm9sbGVyLCBjb250cm9sbGVyQXMgYW5kIHJlc3RyaWN0OidFJworICAgICAgICByZXR1cm4g
ZGlyZWN0aXZlSW5mby5jb250cm9sbGVyICYmIGRpcmVjdGl2ZUluZm8uY29udHJvbGxlckFzICYm
IGRpcmVjdGl2ZUluZm8ucmVzdHJpY3QgPT09ICdFJzsKKyAgICAgIH0pOworICAgICAgLy8gY2hl
Y2sgaWYgdmFsaWQgZGlyZWN0aXZlcyBmb3VuZAorICAgICAgaWYgKGNhbmRpZGF0ZURpcmVjdGl2
ZXMubGVuZ3RoID09PSAwKSB7CisgICAgICAgIHRocm93IG5ldyBFcnJvcignTm8gY29tcG9uZW50
IGZvdW5kJyk7CisgICAgICB9CisgICAgICBpZiAoY2FuZGlkYXRlRGlyZWN0aXZlcy5sZW5ndGgg
PiAxKSB7CisgICAgICAgIHRocm93IG5ldyBFcnJvcignVG9vIG1hbnkgY29tcG9uZW50cyBmb3Vu
ZCcpOworICAgICAgfQorICAgICAgLy8gZ2V0IHRoZSBpbmZvIG9mIHRoZSBjb21wb25lbnQKKyAg
ICAgIHZhciBkaXJlY3RpdmVJbmZvID0gY2FuZGlkYXRlRGlyZWN0aXZlc1swXTsKKyAgICAgIC8v
IGNyZWF0ZSBhIHNjb3BlIGlmIG5lZWRlZAorICAgICAgbG9jYWxzID0gbG9jYWxzIHx8IHt9Owor
ICAgICAgbG9jYWxzLiRzY29wZSA9IGxvY2Fscy4kc2NvcGUgfHwgJHJvb3RTY29wZS4kbmV3KHRy
dWUpOworICAgICAgcmV0dXJuICRjb250cm9sbGVyKGRpcmVjdGl2ZUluZm8uY29udHJvbGxlciwg
bG9jYWxzLCBiaW5kaW5ncywgaWRlbnQgfHwgZGlyZWN0aXZlSW5mby5jb250cm9sbGVyQXMpOwor
ICAgIH07CisgIH1dOworfV07CisKKworLyoqCisgKiBAbmdkb2MgbW9kdWxlCisgKiBAbmFtZSBu
Z01vY2sKKyAqIEBwYWNrYWdlTmFtZSBhbmd1bGFyLW1vY2tzCisgKiBAZGVzY3JpcHRpb24KKyAq
CisgKiAjIG5nTW9jaworICoKKyAqIFRoZSBgbmdNb2NrYCBtb2R1bGUgcHJvdmlkZXMgc3VwcG9y
dCB0byBpbmplY3QgYW5kIG1vY2sgQW5ndWxhciBzZXJ2aWNlcyBpbnRvIHVuaXQgdGVzdHMuCisg
KiBJbiBhZGRpdGlvbiwgbmdNb2NrIGFsc28gZXh0ZW5kcyB2YXJpb3VzIGNvcmUgbmcgc2Vydmlj
ZXMgc3VjaCB0aGF0IHRoZXkgY2FuIGJlCisgKiBpbnNwZWN0ZWQgYW5kIGNvbnRyb2xsZWQgaW4g
YSBzeW5jaHJvbm91cyBtYW5uZXIgd2l0aGluIHRlc3QgY29kZS4KKyAqCisgKgorICogPGRpdiBk
b2MtbW9kdWxlLWNvbXBvbmVudHM9Im5nTW9jayI+PC9kaXY+CisgKgorICogQGluc3RhbGxhdGlv
bgorICoKKyAqICBGaXJzdCwgZG93bmxvYWQgdGhlIGZpbGU6CisgKiAgKiBbR29vZ2xlIENETl0o
aHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vc3BlZWQvbGlicmFyaWVzL2Rldmd1aWRlI2Fu
Z3VsYXJqcykgZS5nLgorICogICAgYCIvL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2Fu
Z3VsYXJqcy9YLlkuWi9hbmd1bGFyLW1vY2tzLmpzImAKKyAqICAqIFtOUE1dKGh0dHBzOi8vd3d3
Lm5wbWpzLmNvbS8pIGUuZy4gYG5wbSBpbnN0YWxsIGFuZ3VsYXItbW9ja3NAWC5ZLlpgCisgKiAg
KiBbQm93ZXJdKGh0dHA6Ly9ib3dlci5pbykgZS5nLiBgYm93ZXIgaW5zdGFsbCBhbmd1bGFyLW1v
Y2tzI1guWS5aYAorICogICogW2NvZGUuYW5ndWxhcmpzLm9yZ10oaHR0cHM6Ly9jb2RlLmFuZ3Vs
YXJqcy5vcmcvKSAoZGlzY291cmFnZWQgZm9yIHByb2R1Y3Rpb24gdXNlKSAgZS5nLgorICogICAg
YCIvL2NvZGUuYW5ndWxhcmpzLm9yZy9YLlkuWi9hbmd1bGFyLW1vY2tzLmpzImAKKyAqCisgKiB3
aGVyZSBYLlkuWiBpcyB0aGUgQW5ndWxhckpTIHZlcnNpb24geW91IGFyZSBydW5uaW5nLgorICoK
KyAqIFRoZW4sIGNvbmZpZ3VyZSB5b3VyIHRlc3QgcnVubmVyIHRvIGxvYWQgYGFuZ3VsYXItbW9j
a3MuanNgIGFmdGVyIGBhbmd1bGFyLmpzYC4KKyAqIFRoaXMgZXhhbXBsZSB1c2VzIDxhIGhyZWY9
Imh0dHA6Ly9rYXJtYS1ydW5uZXIuZ2l0aHViLmlvLyI+S2FybWE8L2E+OgorICoKKyAqIGBgYAor
ICogY29uZmlnLnNldCh7CisgKiAgIGZpbGVzOiBbCisgKiAgICAgJ2J1aWxkL2FuZ3VsYXIuanMn
LCAvLyBhbmQgb3RoZXIgbW9kdWxlIGZpbGVzIHlvdSBuZWVkCisgKiAgICAgJ2J1aWxkL2FuZ3Vs
YXItbW9ja3MuanMnLAorICogICAgICc8cGF0aC90by9hcHBsaWNhdGlvbi9maWxlcz4nLAorICog
ICAgICc8cGF0aC90by9zcGVjL2ZpbGVzPicKKyAqICAgXQorICogfSk7CisgKiBgYGAKKyAqCisg
KiBJbmNsdWRpbmcgdGhlIGBhbmd1bGFyLW1vY2tzLmpzYCBmaWxlIGF1dG9tYXRpY2FsbHkgYWRk
cyB0aGUgYG5nTW9ja2AgbW9kdWxlLCBzbyB5b3VyIHRlc3RzCisgKiAgYXJlIHJlYWR5IHRvIGdv
IQorICovCithbmd1bGFyLm1vZHVsZSgnbmdNb2NrJywgWyduZyddKS5wcm92aWRlcih7CisgICRi
cm93c2VyOiBhbmd1bGFyLm1vY2suJEJyb3dzZXJQcm92aWRlciwKKyAgJGV4Y2VwdGlvbkhhbmRs
ZXI6IGFuZ3VsYXIubW9jay4kRXhjZXB0aW9uSGFuZGxlclByb3ZpZGVyLAorICAkbG9nOiBhbmd1
bGFyLm1vY2suJExvZ1Byb3ZpZGVyLAorICAkaW50ZXJ2YWw6IGFuZ3VsYXIubW9jay4kSW50ZXJ2
YWxQcm92aWRlciwKKyAgJGh0dHBCYWNrZW5kOiBhbmd1bGFyLm1vY2suJEh0dHBCYWNrZW5kUHJv
dmlkZXIsCisgICRyb290RWxlbWVudDogYW5ndWxhci5tb2NrLiRSb290RWxlbWVudFByb3ZpZGVy
LAorICAkY29tcG9uZW50Q29udHJvbGxlcjogYW5ndWxhci5tb2NrLiRDb21wb25lbnRDb250cm9s
bGVyUHJvdmlkZXIKK30pLmNvbmZpZyhbJyRwcm92aWRlJywgZnVuY3Rpb24oJHByb3ZpZGUpIHsK
KyAgJHByb3ZpZGUuZGVjb3JhdG9yKCckdGltZW91dCcsIGFuZ3VsYXIubW9jay4kVGltZW91dERl
Y29yYXRvcik7CisgICRwcm92aWRlLmRlY29yYXRvcignJCRyQUYnLCBhbmd1bGFyLm1vY2suJFJB
RkRlY29yYXRvcik7CisgICRwcm92aWRlLmRlY29yYXRvcignJHJvb3RTY29wZScsIGFuZ3VsYXIu
bW9jay4kUm9vdFNjb3BlRGVjb3JhdG9yKTsKKyAgJHByb3ZpZGUuZGVjb3JhdG9yKCckY29udHJv
bGxlcicsIGFuZ3VsYXIubW9jay4kQ29udHJvbGxlckRlY29yYXRvcik7Cit9XSk7CisKKy8qKgor
ICogQG5nZG9jIG1vZHVsZQorICogQG5hbWUgbmdNb2NrRTJFCisgKiBAbW9kdWxlIG5nTW9ja0Uy
RQorICogQHBhY2thZ2VOYW1lIGFuZ3VsYXItbW9ja3MKKyAqIEBkZXNjcmlwdGlvbgorICoKKyAq
IFRoZSBgbmdNb2NrRTJFYCBpcyBhbiBhbmd1bGFyIG1vZHVsZSB3aGljaCBjb250YWlucyBtb2Nr
cyBzdWl0YWJsZSBmb3IgZW5kLXRvLWVuZCB0ZXN0aW5nLgorICogQ3VycmVudGx5IHRoZXJlIGlz
IG9ubHkgb25lIG1vY2sgcHJlc2VudCBpbiB0aGlzIG1vZHVsZSAtCisgKiB0aGUge0BsaW5rIG5n
TW9ja0UyRS4kaHR0cEJhY2tlbmQgZTJlICRodHRwQmFja2VuZH0gbW9jay4KKyAqLworYW5ndWxh
ci5tb2R1bGUoJ25nTW9ja0UyRScsIFsnbmcnXSkuY29uZmlnKFsnJHByb3ZpZGUnLCBmdW5jdGlv
bigkcHJvdmlkZSkgeworICAkcHJvdmlkZS52YWx1ZSgnJGh0dHBCYWNrZW5kJywgYW5ndWxhci5p
bmplY3RvcihbJ25nJ10pLmdldCgnJGh0dHBCYWNrZW5kJykpOworICAkcHJvdmlkZS5kZWNvcmF0
b3IoJyRodHRwQmFja2VuZCcsIGFuZ3VsYXIubW9jay5lMmUuJGh0dHBCYWNrZW5kRGVjb3JhdG9y
KTsKK31dKTsKKworLyoqCisgKiBAbmdkb2Mgc2VydmljZQorICogQG5hbWUgJGh0dHBCYWNrZW5k
CisgKiBAbW9kdWxlIG5nTW9ja0UyRQorICogQGRlc2NyaXB0aW9uCisgKiBGYWtlIEhUVFAgYmFj
a2VuZCBpbXBsZW1lbnRhdGlvbiBzdWl0YWJsZSBmb3IgZW5kLXRvLWVuZCB0ZXN0aW5nIG9yIGJh
Y2tlbmQtbGVzcyBkZXZlbG9wbWVudCBvZgorICogYXBwbGljYXRpb25zIHRoYXQgdXNlIHRoZSB7
QGxpbmsgbmcuJGh0dHAgJGh0dHAgc2VydmljZX0uCisgKgorICogPGRpdiBjbGFzcz0iYWxlcnQg
YWxlcnQtaW5mbyI+CisgKiAqKk5vdGUqKjogRm9yIGZha2UgaHR0cCBiYWNrZW5kIGltcGxlbWVu
dGF0aW9uIHN1aXRhYmxlIGZvciB1bml0IHRlc3RpbmcgcGxlYXNlIHNlZQorICoge0BsaW5rIG5n
TW9jay4kaHR0cEJhY2tlbmQgdW5pdC10ZXN0aW5nICRodHRwQmFja2VuZCBtb2NrfS4KKyAqIDwv
ZGl2PgorICoKKyAqIFRoaXMgaW1wbGVtZW50YXRpb24gY2FuIGJlIHVzZWQgdG8gcmVzcG9uZCB3
aXRoIHN0YXRpYyBvciBkeW5hbWljIHJlc3BvbnNlcyB2aWEgdGhlIGB3aGVuYCBhcGkKKyAqIGFu
ZCBpdHMgc2hvcnRjdXRzIChgd2hlbkdFVGAsIGB3aGVuUE9TVGAsIGV0YykgYW5kIG9wdGlvbmFs
bHkgcGFzcyB0aHJvdWdoIHJlcXVlc3RzIHRvIHRoZQorICogcmVhbCAkaHR0cEJhY2tlbmQgZm9y
IHNwZWNpZmljIHJlcXVlc3RzIChlLmcuIHRvIGludGVyYWN0IHdpdGggY2VydGFpbiByZW1vdGUg
YXBpcyBvciB0byBmZXRjaAorICogdGVtcGxhdGVzIGZyb20gYSB3ZWJzZXJ2ZXIpLgorICoKKyAq
IEFzIG9wcG9zZWQgdG8gdW5pdC10ZXN0aW5nLCBpbiBhbiBlbmQtdG8tZW5kIHRlc3Rpbmcgc2Nl
bmFyaW8gb3IgaW4gc2NlbmFyaW8gd2hlbiBhbiBhcHBsaWNhdGlvbgorICogaXMgYmVpbmcgZGV2
ZWxvcGVkIHdpdGggdGhlIHJlYWwgYmFja2VuZCBhcGkgcmVwbGFjZWQgd2l0aCBhIG1vY2ssIGl0
IGlzIG9mdGVuIGRlc2lyYWJsZSBmb3IKKyAqIGNlcnRhaW4gY2F0ZWdvcnkgb2YgcmVxdWVzdHMg
dG8gYnlwYXNzIHRoZSBtb2NrIGFuZCBpc3N1ZSBhIHJlYWwgaHR0cCByZXF1ZXN0IChlLmcuIHRv
IGZldGNoCisgKiB0ZW1wbGF0ZXMgb3Igc3RhdGljIGZpbGVzIGZyb20gdGhlIHdlYnNlcnZlciku
IFRvIGNvbmZpZ3VyZSB0aGUgYmFja2VuZCB3aXRoIHRoaXMgYmVoYXZpb3IKKyAqIHVzZSB0aGUg
YHBhc3NUaHJvdWdoYCByZXF1ZXN0IGhhbmRsZXIgb2YgYHdoZW5gIGluc3RlYWQgb2YgYHJlc3Bv
bmRgLgorICoKKyAqIEFkZGl0aW9uYWxseSwgd2UgZG9uJ3Qgd2FudCB0byBtYW51YWxseSBoYXZl
IHRvIGZsdXNoIG1vY2tlZCBvdXQgcmVxdWVzdHMgbGlrZSB3ZSBkbyBkdXJpbmcgdW5pdAorICog
dGVzdGluZy4gRm9yIHRoaXMgcmVhc29uIHRoZSBlMmUgJGh0dHBCYWNrZW5kIGZsdXNoZXMgbW9j
a2VkIG91dCByZXF1ZXN0cworICogYXV0b21hdGljYWxseSwgY2xvc2VseSBzaW11bGF0aW5nIHRo
ZSBiZWhhdmlvciBvZiB0aGUgWE1MSHR0cFJlcXVlc3Qgb2JqZWN0LgorICoKKyAqIFRvIHNldHVw
IHRoZSBhcHBsaWNhdGlvbiB0byBydW4gd2l0aCB0aGlzIGh0dHAgYmFja2VuZCwgeW91IGhhdmUg
dG8gY3JlYXRlIGEgbW9kdWxlIHRoYXQgZGVwZW5kcworICogb24gdGhlIGBuZ01vY2tFMkVgIGFu
ZCB5b3VyIGFwcGxpY2F0aW9uIG1vZHVsZXMgYW5kIGRlZmluZXMgdGhlIGZha2UgYmFja2VuZDoK
KyAqCisgKiBgYGBqcworICogICB2YXIgbXlBcHBEZXYgPSBhbmd1bGFyLm1vZHVsZSgnbXlBcHBE
ZXYnLCBbJ215QXBwJywgJ25nTW9ja0UyRSddKTsKKyAqICAgbXlBcHBEZXYucnVuKGZ1bmN0aW9u
KCRodHRwQmFja2VuZCkgeworICogICAgIHZhciBwaG9uZXMgPSBbe25hbWU6ICdwaG9uZTEnfSwg
e25hbWU6ICdwaG9uZTInfV07CisgKgorICogICAgIC8vIHJldHVybnMgdGhlIGN1cnJlbnQgbGlz
dCBvZiBwaG9uZXMKKyAqICAgICAkaHR0cEJhY2tlbmQud2hlbkdFVCgnL3Bob25lcycpLnJlc3Bv
bmQocGhvbmVzKTsKKyAqCisgKiAgICAgLy8gYWRkcyBhIG5ldyBwaG9uZSB0byB0aGUgcGhvbmVz
IGFycmF5CisgKiAgICAgJGh0dHBCYWNrZW5kLndoZW5QT1NUKCcvcGhvbmVzJykucmVzcG9uZChm
dW5jdGlvbihtZXRob2QsIHVybCwgZGF0YSkgeworICogICAgICAgdmFyIHBob25lID0gYW5ndWxh
ci5mcm9tSnNvbihkYXRhKTsKKyAqICAgICAgIHBob25lcy5wdXNoKHBob25lKTsKKyAqICAgICAg
IHJldHVybiBbMjAwLCBwaG9uZSwge31dOworICogICAgIH0pOworICogICAgICRodHRwQmFja2Vu
ZC53aGVuR0VUKC9eXC90ZW1wbGF0ZXNcLy8pLnBhc3NUaHJvdWdoKCk7IC8vIFJlcXVlc3RzIGZv
ciB0ZW1wbGFyZSBhcmUgaGFuZGxlZCBieSB0aGUgcmVhbCBzZXJ2ZXIKKyAqICAgICAvLy4uLgor
ICogICB9KTsKKyAqIGBgYAorICoKKyAqIEFmdGVyd2FyZHMsIGJvb3RzdHJhcCB5b3VyIGFwcCB3
aXRoIHRoaXMgbmV3IG1vZHVsZS4KKyAqCisgKiAjIyBFeGFtcGxlCisgKiA8ZXhhbXBsZSBuYW1l
PSJodHRwYmFja2VuZC1lMmUtdGVzdGluZyIgbW9kdWxlPSJteUFwcEUyRSIgZGVwcz0iYW5ndWxh
ci1tb2Nrcy5qcyI+CisgKiA8ZmlsZSBuYW1lPSJhcHAuanMiPgorICogICB2YXIgbXlBcHAgPSBh
bmd1bGFyLm1vZHVsZSgnbXlBcHAnLCBbXSk7CisgKgorICogICBteUFwcC5jb250cm9sbGVyKCdN
YWluQ3RybCcsIGZ1bmN0aW9uIE1haW5DdHJsKCRodHRwKSB7CisgKiAgICAgdmFyIGN0cmwgPSB0
aGlzOworICoKKyAqICAgICBjdHJsLnBob25lcyA9IFtdOworICogICAgIGN0cmwubmV3UGhvbmUg
PSB7CisgKiAgICAgICBuYW1lOiAnJworICogICAgIH07CisgKgorICogICAgIGN0cmwuZ2V0UGhv
bmVzID0gZnVuY3Rpb24oKSB7CisgKiAgICAgICAkaHR0cC5nZXQoJy9waG9uZXMnKS50aGVuKGZ1
bmN0aW9uKHJlc3BvbnNlKSB7CisgKiAgICAgICAgIGN0cmwucGhvbmVzID0gcmVzcG9uc2UuZGF0
YTsKKyAqICAgICAgIH0pOworICogICAgIH07CisgKgorICogICAgIGN0cmwuYWRkUGhvbmUgPSBm
dW5jdGlvbihwaG9uZSkgeworICogICAgICAgJGh0dHAucG9zdCgnL3Bob25lcycsIHBob25lKS50
aGVuKGZ1bmN0aW9uKCkgeworICogICAgICAgICBjdHJsLm5ld1Bob25lID0ge25hbWU6ICcnfTsK
KyAqICAgICAgICAgcmV0dXJuIGN0cmwuZ2V0UGhvbmVzKCk7CisgKiAgICAgICB9KTsKKyAqICAg
ICB9OworICoKKyAqICAgICBjdHJsLmdldFBob25lcygpOworICogICB9KTsKKyAqIDwvZmlsZT4K
KyAqIDxmaWxlIG5hbWU9ImUyZS5qcyI+CisgKiAgIHZhciBteUFwcERldiA9IGFuZ3VsYXIubW9k
dWxlKCdteUFwcEUyRScsIFsnbXlBcHAnLCAnbmdNb2NrRTJFJ10pOworICoKKyAqICAgbXlBcHBE
ZXYucnVuKGZ1bmN0aW9uKCRodHRwQmFja2VuZCkgeworICogICAgIHZhciBwaG9uZXMgPSBbe25h
bWU6ICdwaG9uZTEnfSwge25hbWU6ICdwaG9uZTInfV07CisgKgorICogICAgIC8vIHJldHVybnMg
dGhlIGN1cnJlbnQgbGlzdCBvZiBwaG9uZXMKKyAqICAgICAkaHR0cEJhY2tlbmQud2hlbkdFVCgn
L3Bob25lcycpLnJlc3BvbmQocGhvbmVzKTsKKyAqCisgKiAgICAgLy8gYWRkcyBhIG5ldyBwaG9u
ZSB0byB0aGUgcGhvbmVzIGFycmF5CisgKiAgICAgJGh0dHBCYWNrZW5kLndoZW5QT1NUKCcvcGhv
bmVzJykucmVzcG9uZChmdW5jdGlvbihtZXRob2QsIHVybCwgZGF0YSkgeworICogICAgICAgdmFy
IHBob25lID0gYW5ndWxhci5mcm9tSnNvbihkYXRhKTsKKyAqICAgICAgIHBob25lcy5wdXNoKHBo
b25lKTsKKyAqICAgICAgIHJldHVybiBbMjAwLCBwaG9uZSwge31dOworICogICAgIH0pOworICog
ICB9KTsKKyAqIDwvZmlsZT4KKyAqIDxmaWxlIG5hbWU9ImluZGV4Lmh0bWwiPgorICogICA8ZGl2
IG5nLWNvbnRyb2xsZXI9Ik1haW5DdHJsIGFzICRjdHJsIj4KKyAqICAgPGZvcm0gbmFtZT0ibmV3
UGhvbmVGb3JtIiBuZy1zdWJtaXQ9IiRjdHJsLmFkZFBob25lKCRjdHJsLm5ld1Bob25lKSI+Cisg
KiAgICAgPGlucHV0IHR5cGU9InRleHQiIG5nLW1vZGVsPSIkY3RybC5uZXdQaG9uZS5uYW1lIj4K
KyAqICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iQWRkIFBob25lIj4KKyAqICAgPC9m
b3JtPgorICogICA8aDE+UGhvbmVzPC9oMT4KKyAqICAgPHVsPgorICogICAgIDxsaSBuZy1yZXBl
YXQ9InBob25lIGluICRjdHJsLnBob25lcyI+e3twaG9uZS5uYW1lfX08L2xpPgorICogICA8L3Vs
PgorICogICA8L2Rpdj4KKyAqIDwvZmlsZT4KKyAqIDwvZXhhbXBsZT4KKyAqCisgKgorICovCisK
Ky8qKgorICogQG5nZG9jIG1ldGhvZAorICogQG5hbWUgJGh0dHBCYWNrZW5kI3doZW4KKyAqIEBt
b2R1bGUgbmdNb2NrRTJFCisgKiBAZGVzY3JpcHRpb24KKyAqIENyZWF0ZXMgYSBuZXcgYmFja2Vu
ZCBkZWZpbml0aW9uLgorICoKKyAqIEBwYXJhbSB7c3RyaW5nfSBtZXRob2QgSFRUUCBtZXRob2Qu
CisgKiBAcGFyYW0ge3N0cmluZ3xSZWdFeHB8ZnVuY3Rpb24oc3RyaW5nKX0gdXJsIEhUVFAgdXJs
IG9yIGZ1bmN0aW9uIHRoYXQgcmVjZWl2ZXMgYSB1cmwKKyAqICAgYW5kIHJldHVybnMgdHJ1ZSBp
ZiB0aGUgdXJsIG1hdGNoZXMgdGhlIGN1cnJlbnQgZGVmaW5pdGlvbi4KKyAqIEBwYXJhbSB7KHN0
cmluZ3xSZWdFeHApPX0gZGF0YSBIVFRQIHJlcXVlc3QgYm9keS4KKyAqIEBwYXJhbSB7KE9iamVj
dHxmdW5jdGlvbihPYmplY3QpKT19IGhlYWRlcnMgSFRUUCBoZWFkZXJzIG9yIGZ1bmN0aW9uIHRo
YXQgcmVjZWl2ZXMgaHR0cCBoZWFkZXIKKyAqICAgb2JqZWN0IGFuZCByZXR1cm5zIHRydWUgaWYg
dGhlIGhlYWRlcnMgbWF0Y2ggdGhlIGN1cnJlbnQgZGVmaW5pdGlvbi4KKyAqIEBwYXJhbSB7KEFy
cmF5KT19IGtleXMgQXJyYXkgb2Yga2V5cyB0byBhc3NpZ24gdG8gcmVnZXggbWF0Y2hlcyBpbiBy
ZXF1ZXN0IHVybCBkZXNjcmliZWQgb24KKyAqICAge0BsaW5rIG5nTW9jay4kaHR0cEJhY2tlbmQg
JGh0dHBCYWNrZW5kIG1vY2t9LgorICogQHJldHVybnMge3JlcXVlc3RIYW5kbGVyfSBSZXR1cm5z
IGFuIG9iamVjdCB3aXRoIGByZXNwb25kYCBhbmQgYHBhc3NUaHJvdWdoYCBtZXRob2RzIHRoYXQK
KyAqICAgY29udHJvbCBob3cgYSBtYXRjaGVkIHJlcXVlc3QgaXMgaGFuZGxlZC4gWW91IGNhbiBz
YXZlIHRoaXMgb2JqZWN0IGZvciBsYXRlciB1c2UgYW5kIGludm9rZQorICogICBgcmVzcG9uZGAg
b3IgYHBhc3NUaHJvdWdoYCBhZ2FpbiBpbiBvcmRlciB0byBjaGFuZ2UgaG93IGEgbWF0Y2hlZCBy
ZXF1ZXN0IGlzIGhhbmRsZWQuCisgKgorICogIC0gcmVzcG9uZCDigJMKKyAqICAgIGBgYAorICog
ICAgeyBmdW5jdGlvbihbc3RhdHVzLF0gZGF0YVssIGhlYWRlcnMsIHN0YXR1c1RleHRdKQorICog
ICAgfCBmdW5jdGlvbihmdW5jdGlvbihtZXRob2QsIHVybCwgZGF0YSwgaGVhZGVycywgcGFyYW1z
KX0KKyAqICAgIGBgYAorICogICAg4oCTIFRoZSByZXNwb25kIG1ldGhvZCB0YWtlcyBhIHNldCBv
ZiBzdGF0aWMgZGF0YSB0byBiZSByZXR1cm5lZCBvciBhIGZ1bmN0aW9uIHRoYXQgY2FuIHJldHVy
bgorICogICAgYW4gYXJyYXkgY29udGFpbmluZyByZXNwb25zZSBzdGF0dXMgKG51bWJlciksIHJl
c3BvbnNlIGRhdGEgKEFycmF5fE9iamVjdHxzdHJpbmcpLCByZXNwb25zZQorICogICAgaGVhZGVy
cyAoT2JqZWN0KSwgYW5kIHRoZSB0ZXh0IGZvciB0aGUgc3RhdHVzIChzdHJpbmcpLgorICogIC0g
cGFzc1Rocm91Z2gg4oCTIGB7ZnVuY3Rpb24oKX1gIOKAkyBBbnkgcmVxdWVzdCBtYXRjaGluZyBh
IGJhY2tlbmQgZGVmaW5pdGlvbiB3aXRoCisgKiAgICBgcGFzc1Rocm91Z2hgIGhhbmRsZXIgd2ls
bCBiZSBwYXNzZWQgdGhyb3VnaCB0byB0aGUgcmVhbCBiYWNrZW5kIChhbiBYSFIgcmVxdWVzdCB3
aWxsIGJlIG1hZGUKKyAqICAgIHRvIHRoZSBzZXJ2ZXIuKQorICogIC0gQm90aCBtZXRob2RzIHJl
dHVybiB0aGUgYHJlcXVlc3RIYW5kbGVyYCBvYmplY3QgZm9yIHBvc3NpYmxlIG92ZXJyaWRlcy4K
KyAqLworCisvKioKKyAqIEBuZ2RvYyBtZXRob2QKKyAqIEBuYW1lICRodHRwQmFja2VuZCN3aGVu
R0VUCisgKiBAbW9kdWxlIG5nTW9ja0UyRQorICogQGRlc2NyaXB0aW9uCisgKiBDcmVhdGVzIGEg
bmV3IGJhY2tlbmQgZGVmaW5pdGlvbiBmb3IgR0VUIHJlcXVlc3RzLiBGb3IgbW9yZSBpbmZvIHNl
ZSBgd2hlbigpYC4KKyAqCisgKiBAcGFyYW0ge3N0cmluZ3xSZWdFeHB8ZnVuY3Rpb24oc3RyaW5n
KX0gdXJsIEhUVFAgdXJsIG9yIGZ1bmN0aW9uIHRoYXQgcmVjZWl2ZXMgYSB1cmwKKyAqICAgYW5k
IHJldHVybnMgdHJ1ZSBpZiB0aGUgdXJsIG1hdGNoZXMgdGhlIGN1cnJlbnQgZGVmaW5pdGlvbi4K
KyAqIEBwYXJhbSB7KE9iamVjdHxmdW5jdGlvbihPYmplY3QpKT19IGhlYWRlcnMgSFRUUCBoZWFk
ZXJzLgorICogQHBhcmFtIHsoQXJyYXkpPX0ga2V5cyBBcnJheSBvZiBrZXlzIHRvIGFzc2lnbiB0
byByZWdleCBtYXRjaGVzIGluIHJlcXVlc3QgdXJsIGRlc2NyaWJlZCBvbgorICogICB7QGxpbmsg
bmdNb2NrLiRodHRwQmFja2VuZCAkaHR0cEJhY2tlbmQgbW9ja30uCisgKiBAcmV0dXJucyB7cmVx
dWVzdEhhbmRsZXJ9IFJldHVybnMgYW4gb2JqZWN0IHdpdGggYHJlc3BvbmRgIGFuZCBgcGFzc1Ro
cm91Z2hgIG1ldGhvZHMgdGhhdAorICogICBjb250cm9sIGhvdyBhIG1hdGNoZWQgcmVxdWVzdCBp
cyBoYW5kbGVkLiBZb3UgY2FuIHNhdmUgdGhpcyBvYmplY3QgZm9yIGxhdGVyIHVzZSBhbmQgaW52
b2tlCisgKiAgIGByZXNwb25kYCBvciBgcGFzc1Rocm91Z2hgIGFnYWluIGluIG9yZGVyIHRvIGNo
YW5nZSBob3cgYSBtYXRjaGVkIHJlcXVlc3QgaXMgaGFuZGxlZC4KKyAqLworCisvKioKKyAqIEBu
Z2RvYyBtZXRob2QKKyAqIEBuYW1lICRodHRwQmFja2VuZCN3aGVuSEVBRAorICogQG1vZHVsZSBu
Z01vY2tFMkUKKyAqIEBkZXNjcmlwdGlvbgorICogQ3JlYXRlcyBhIG5ldyBiYWNrZW5kIGRlZmlu
aXRpb24gZm9yIEhFQUQgcmVxdWVzdHMuIEZvciBtb3JlIGluZm8gc2VlIGB3aGVuKClgLgorICoK
KyAqIEBwYXJhbSB7c3RyaW5nfFJlZ0V4cHxmdW5jdGlvbihzdHJpbmcpfSB1cmwgSFRUUCB1cmwg
b3IgZnVuY3Rpb24gdGhhdCByZWNlaXZlcyBhIHVybAorICogICBhbmQgcmV0dXJucyB0cnVlIGlm
IHRoZSB1cmwgbWF0Y2hlcyB0aGUgY3VycmVudCBkZWZpbml0aW9uLgorICogQHBhcmFtIHsoT2Jq
ZWN0fGZ1bmN0aW9uKE9iamVjdCkpPX0gaGVhZGVycyBIVFRQIGhlYWRlcnMuCisgKiBAcGFyYW0g
eyhBcnJheSk9fSBrZXlzIEFycmF5IG9mIGtleXMgdG8gYXNzaWduIHRvIHJlZ2V4IG1hdGNoZXMg
aW4gcmVxdWVzdCB1cmwgZGVzY3JpYmVkIG9uCisgKiAgIHtAbGluayBuZ01vY2suJGh0dHBCYWNr
ZW5kICRodHRwQmFja2VuZCBtb2NrfS4KKyAqIEByZXR1cm5zIHtyZXF1ZXN0SGFuZGxlcn0gUmV0
dXJucyBhbiBvYmplY3Qgd2l0aCBgcmVzcG9uZGAgYW5kIGBwYXNzVGhyb3VnaGAgbWV0aG9kcyB0
aGF0CisgKiAgIGNvbnRyb2wgaG93IGEgbWF0Y2hlZCByZXF1ZXN0IGlzIGhhbmRsZWQuIFlvdSBj
YW4gc2F2ZSB0aGlzIG9iamVjdCBmb3IgbGF0ZXIgdXNlIGFuZCBpbnZva2UKKyAqICAgYHJlc3Bv
bmRgIG9yIGBwYXNzVGhyb3VnaGAgYWdhaW4gaW4gb3JkZXIgdG8gY2hhbmdlIGhvdyBhIG1hdGNo
ZWQgcmVxdWVzdCBpcyBoYW5kbGVkLgorICovCisKKy8qKgorICogQG5nZG9jIG1ldGhvZAorICog
QG5hbWUgJGh0dHBCYWNrZW5kI3doZW5ERUxFVEUKKyAqIEBtb2R1bGUgbmdNb2NrRTJFCisgKiBA
ZGVzY3JpcHRpb24KKyAqIENyZWF0ZXMgYSBuZXcgYmFja2VuZCBkZWZpbml0aW9uIGZvciBERUxF
VEUgcmVxdWVzdHMuIEZvciBtb3JlIGluZm8gc2VlIGB3aGVuKClgLgorICoKKyAqIEBwYXJhbSB7
c3RyaW5nfFJlZ0V4cHxmdW5jdGlvbihzdHJpbmcpfSB1cmwgSFRUUCB1cmwgb3IgZnVuY3Rpb24g
dGhhdCByZWNlaXZlcyBhIHVybAorICogICBhbmQgcmV0dXJucyB0cnVlIGlmIHRoZSB1cmwgbWF0
Y2hlcyB0aGUgY3VycmVudCBkZWZpbml0aW9uLgorICogQHBhcmFtIHsoT2JqZWN0fGZ1bmN0aW9u
KE9iamVjdCkpPX0gaGVhZGVycyBIVFRQIGhlYWRlcnMuCisgKiBAcGFyYW0geyhBcnJheSk9fSBr
ZXlzIEFycmF5IG9mIGtleXMgdG8gYXNzaWduIHRvIHJlZ2V4IG1hdGNoZXMgaW4gcmVxdWVzdCB1
cmwgZGVzY3JpYmVkIG9uCisgKiAgIHtAbGluayBuZ01vY2suJGh0dHBCYWNrZW5kICRodHRwQmFj
a2VuZCBtb2NrfS4KKyAqIEByZXR1cm5zIHtyZXF1ZXN0SGFuZGxlcn0gUmV0dXJucyBhbiBvYmpl
Y3Qgd2l0aCBgcmVzcG9uZGAgYW5kIGBwYXNzVGhyb3VnaGAgbWV0aG9kcyB0aGF0CisgKiAgIGNv
bnRyb2wgaG93IGEgbWF0Y2hlZCByZXF1ZXN0IGlzIGhhbmRsZWQuIFlvdSBjYW4gc2F2ZSB0aGlz
IG9iamVjdCBmb3IgbGF0ZXIgdXNlIGFuZCBpbnZva2UKKyAqICAgYHJlc3BvbmRgIG9yIGBwYXNz
VGhyb3VnaGAgYWdhaW4gaW4gb3JkZXIgdG8gY2hhbmdlIGhvdyBhIG1hdGNoZWQgcmVxdWVzdCBp
cyBoYW5kbGVkLgorICovCisKKy8qKgorICogQG5nZG9jIG1ldGhvZAorICogQG5hbWUgJGh0dHBC
YWNrZW5kI3doZW5QT1NUCisgKiBAbW9kdWxlIG5nTW9ja0UyRQorICogQGRlc2NyaXB0aW9uCisg
KiBDcmVhdGVzIGEgbmV3IGJhY2tlbmQgZGVmaW5pdGlvbiBmb3IgUE9TVCByZXF1ZXN0cy4gRm9y
IG1vcmUgaW5mbyBzZWUgYHdoZW4oKWAuCisgKgorICogQHBhcmFtIHtzdHJpbmd8UmVnRXhwfGZ1
bmN0aW9uKHN0cmluZyl9IHVybCBIVFRQIHVybCBvciBmdW5jdGlvbiB0aGF0IHJlY2VpdmVzIGEg
dXJsCisgKiAgIGFuZCByZXR1cm5zIHRydWUgaWYgdGhlIHVybCBtYXRjaGVzIHRoZSBjdXJyZW50
IGRlZmluaXRpb24uCisgKiBAcGFyYW0geyhzdHJpbmd8UmVnRXhwKT19IGRhdGEgSFRUUCByZXF1
ZXN0IGJvZHkuCisgKiBAcGFyYW0geyhPYmplY3R8ZnVuY3Rpb24oT2JqZWN0KSk9fSBoZWFkZXJz
IEhUVFAgaGVhZGVycy4KKyAqIEBwYXJhbSB7KEFycmF5KT19IGtleXMgQXJyYXkgb2Yga2V5cyB0
byBhc3NpZ24gdG8gcmVnZXggbWF0Y2hlcyBpbiByZXF1ZXN0IHVybCBkZXNjcmliZWQgb24KKyAq
ICAge0BsaW5rIG5nTW9jay4kaHR0cEJhY2tlbmQgJGh0dHBCYWNrZW5kIG1vY2t9LgorICogQHJl
dHVybnMge3JlcXVlc3RIYW5kbGVyfSBSZXR1cm5zIGFuIG9iamVjdCB3aXRoIGByZXNwb25kYCBh
bmQgYHBhc3NUaHJvdWdoYCBtZXRob2RzIHRoYXQKKyAqICAgY29udHJvbCBob3cgYSBtYXRjaGVk
IHJlcXVlc3QgaXMgaGFuZGxlZC4gWW91IGNhbiBzYXZlIHRoaXMgb2JqZWN0IGZvciBsYXRlciB1
c2UgYW5kIGludm9rZQorICogICBgcmVzcG9uZGAgb3IgYHBhc3NUaHJvdWdoYCBhZ2FpbiBpbiBv
cmRlciB0byBjaGFuZ2UgaG93IGEgbWF0Y2hlZCByZXF1ZXN0IGlzIGhhbmRsZWQuCisgKi8KKwor
LyoqCisgKiBAbmdkb2MgbWV0aG9kCisgKiBAbmFtZSAkaHR0cEJhY2tlbmQjd2hlblBVVAorICog
QG1vZHVsZSBuZ01vY2tFMkUKKyAqIEBkZXNjcmlwdGlvbgorICogQ3JlYXRlcyBhIG5ldyBiYWNr
ZW5kIGRlZmluaXRpb24gZm9yIFBVVCByZXF1ZXN0cy4gIEZvciBtb3JlIGluZm8gc2VlIGB3aGVu
KClgLgorICoKKyAqIEBwYXJhbSB7c3RyaW5nfFJlZ0V4cHxmdW5jdGlvbihzdHJpbmcpfSB1cmwg
SFRUUCB1cmwgb3IgZnVuY3Rpb24gdGhhdCByZWNlaXZlcyBhIHVybAorICogICBhbmQgcmV0dXJu
cyB0cnVlIGlmIHRoZSB1cmwgbWF0Y2hlcyB0aGUgY3VycmVudCBkZWZpbml0aW9uLgorICogQHBh
cmFtIHsoc3RyaW5nfFJlZ0V4cCk9fSBkYXRhIEhUVFAgcmVxdWVzdCBib2R5LgorICogQHBhcmFt
IHsoT2JqZWN0fGZ1bmN0aW9uKE9iamVjdCkpPX0gaGVhZGVycyBIVFRQIGhlYWRlcnMuCisgKiBA
cGFyYW0geyhBcnJheSk9fSBrZXlzIEFycmF5IG9mIGtleXMgdG8gYXNzaWduIHRvIHJlZ2V4IG1h
dGNoZXMgaW4gcmVxdWVzdCB1cmwgZGVzY3JpYmVkIG9uCisgKiAgIHtAbGluayBuZ01vY2suJGh0
dHBCYWNrZW5kICRodHRwQmFja2VuZCBtb2NrfS4KKyAqIEByZXR1cm5zIHtyZXF1ZXN0SGFuZGxl
cn0gUmV0dXJucyBhbiBvYmplY3Qgd2l0aCBgcmVzcG9uZGAgYW5kIGBwYXNzVGhyb3VnaGAgbWV0
aG9kcyB0aGF0CisgKiAgIGNvbnRyb2wgaG93IGEgbWF0Y2hlZCByZXF1ZXN0IGlzIGhhbmRsZWQu
IFlvdSBjYW4gc2F2ZSB0aGlzIG9iamVjdCBmb3IgbGF0ZXIgdXNlIGFuZCBpbnZva2UKKyAqICAg
YHJlc3BvbmRgIG9yIGBwYXNzVGhyb3VnaGAgYWdhaW4gaW4gb3JkZXIgdG8gY2hhbmdlIGhvdyBh
IG1hdGNoZWQgcmVxdWVzdCBpcyBoYW5kbGVkLgorICovCisKKy8qKgorICogQG5nZG9jIG1ldGhv
ZAorICogQG5hbWUgJGh0dHBCYWNrZW5kI3doZW5QQVRDSAorICogQG1vZHVsZSBuZ01vY2tFMkUK
KyAqIEBkZXNjcmlwdGlvbgorICogQ3JlYXRlcyBhIG5ldyBiYWNrZW5kIGRlZmluaXRpb24gZm9y
IFBBVENIIHJlcXVlc3RzLiAgRm9yIG1vcmUgaW5mbyBzZWUgYHdoZW4oKWAuCisgKgorICogQHBh
cmFtIHtzdHJpbmd8UmVnRXhwfGZ1bmN0aW9uKHN0cmluZyl9IHVybCBIVFRQIHVybCBvciBmdW5j
dGlvbiB0aGF0IHJlY2VpdmVzIGEgdXJsCisgKiAgIGFuZCByZXR1cm5zIHRydWUgaWYgdGhlIHVy
bCBtYXRjaGVzIHRoZSBjdXJyZW50IGRlZmluaXRpb24uCisgKiBAcGFyYW0geyhzdHJpbmd8UmVn
RXhwKT19IGRhdGEgSFRUUCByZXF1ZXN0IGJvZHkuCisgKiBAcGFyYW0geyhPYmplY3R8ZnVuY3Rp
b24oT2JqZWN0KSk9fSBoZWFkZXJzIEhUVFAgaGVhZGVycy4KKyAqIEBwYXJhbSB7KEFycmF5KT19
IGtleXMgQXJyYXkgb2Yga2V5cyB0byBhc3NpZ24gdG8gcmVnZXggbWF0Y2hlcyBpbiByZXF1ZXN0
IHVybCBkZXNjcmliZWQgb24KKyAqICAge0BsaW5rIG5nTW9jay4kaHR0cEJhY2tlbmQgJGh0dHBC
YWNrZW5kIG1vY2t9LgorICogQHJldHVybnMge3JlcXVlc3RIYW5kbGVyfSBSZXR1cm5zIGFuIG9i
amVjdCB3aXRoIGByZXNwb25kYCBhbmQgYHBhc3NUaHJvdWdoYCBtZXRob2RzIHRoYXQKKyAqICAg
Y29udHJvbCBob3cgYSBtYXRjaGVkIHJlcXVlc3QgaXMgaGFuZGxlZC4gWW91IGNhbiBzYXZlIHRo
aXMgb2JqZWN0IGZvciBsYXRlciB1c2UgYW5kIGludm9rZQorICogICBgcmVzcG9uZGAgb3IgYHBh
c3NUaHJvdWdoYCBhZ2FpbiBpbiBvcmRlciB0byBjaGFuZ2UgaG93IGEgbWF0Y2hlZCByZXF1ZXN0
IGlzIGhhbmRsZWQuCisgKi8KKworLyoqCisgKiBAbmdkb2MgbWV0aG9kCisgKiBAbmFtZSAkaHR0
cEJhY2tlbmQjd2hlbkpTT05QCisgKiBAbW9kdWxlIG5nTW9ja0UyRQorICogQGRlc2NyaXB0aW9u
CisgKiBDcmVhdGVzIGEgbmV3IGJhY2tlbmQgZGVmaW5pdGlvbiBmb3IgSlNPTlAgcmVxdWVzdHMu
IEZvciBtb3JlIGluZm8gc2VlIGB3aGVuKClgLgorICoKKyAqIEBwYXJhbSB7c3RyaW5nfFJlZ0V4
cHxmdW5jdGlvbihzdHJpbmcpfSB1cmwgSFRUUCB1cmwgb3IgZnVuY3Rpb24gdGhhdCByZWNlaXZl
cyBhIHVybAorICogICBhbmQgcmV0dXJucyB0cnVlIGlmIHRoZSB1cmwgbWF0Y2hlcyB0aGUgY3Vy
cmVudCBkZWZpbml0aW9uLgorICogQHBhcmFtIHsoQXJyYXkpPX0ga2V5cyBBcnJheSBvZiBrZXlz
IHRvIGFzc2lnbiB0byByZWdleCBtYXRjaGVzIGluIHJlcXVlc3QgdXJsIGRlc2NyaWJlZCBvbgor
ICogICB7QGxpbmsgbmdNb2NrLiRodHRwQmFja2VuZCAkaHR0cEJhY2tlbmQgbW9ja30uCisgKiBA
cmV0dXJucyB7cmVxdWVzdEhhbmRsZXJ9IFJldHVybnMgYW4gb2JqZWN0IHdpdGggYHJlc3BvbmRg
IGFuZCBgcGFzc1Rocm91Z2hgIG1ldGhvZHMgdGhhdAorICogICBjb250cm9sIGhvdyBhIG1hdGNo
ZWQgcmVxdWVzdCBpcyBoYW5kbGVkLiBZb3UgY2FuIHNhdmUgdGhpcyBvYmplY3QgZm9yIGxhdGVy
IHVzZSBhbmQgaW52b2tlCisgKiAgIGByZXNwb25kYCBvciBgcGFzc1Rocm91Z2hgIGFnYWluIGlu
IG9yZGVyIHRvIGNoYW5nZSBob3cgYSBtYXRjaGVkIHJlcXVlc3QgaXMgaGFuZGxlZC4KKyAqLwor
LyoqCisgKiBAbmdkb2MgbWV0aG9kCisgKiBAbmFtZSAkaHR0cEJhY2tlbmQjd2hlblJvdXRlCisg
KiBAbW9kdWxlIG5nTW9ja0UyRQorICogQGRlc2NyaXB0aW9uCisgKiBDcmVhdGVzIGEgbmV3IGJh
Y2tlbmQgZGVmaW5pdGlvbiB0aGF0IGNvbXBhcmVzIG9ubHkgd2l0aCB0aGUgcmVxdWVzdGVkIHJv
dXRlLgorICoKKyAqIEBwYXJhbSB7c3RyaW5nfSBtZXRob2QgSFRUUCBtZXRob2QuCisgKiBAcGFy
YW0ge3N0cmluZ30gdXJsIEhUVFAgdXJsIHN0cmluZyB0aGF0IHN1cHBvcnRzIGNvbG9uIHBhcmFt
IG1hdGNoaW5nLgorICogQHJldHVybnMge3JlcXVlc3RIYW5kbGVyfSBSZXR1cm5zIGFuIG9iamVj
dCB3aXRoIGByZXNwb25kYCBhbmQgYHBhc3NUaHJvdWdoYCBtZXRob2RzIHRoYXQKKyAqICAgY29u
dHJvbCBob3cgYSBtYXRjaGVkIHJlcXVlc3QgaXMgaGFuZGxlZC4gWW91IGNhbiBzYXZlIHRoaXMg
b2JqZWN0IGZvciBsYXRlciB1c2UgYW5kIGludm9rZQorICogICBgcmVzcG9uZGAgb3IgYHBhc3NU
aHJvdWdoYCBhZ2FpbiBpbiBvcmRlciB0byBjaGFuZ2UgaG93IGEgbWF0Y2hlZCByZXF1ZXN0IGlz
IGhhbmRsZWQuCisgKi8KK2FuZ3VsYXIubW9jay5lMmUgPSB7fTsKK2FuZ3VsYXIubW9jay5lMmUu
JGh0dHBCYWNrZW5kRGVjb3JhdG9yID0KKyAgWyckcm9vdFNjb3BlJywgJyR0aW1lb3V0JywgJyRk
ZWxlZ2F0ZScsICckYnJvd3NlcicsIGNyZWF0ZUh0dHBCYWNrZW5kTW9ja107CisKKworLyoqCisg
KiBAbmdkb2MgdHlwZQorICogQG5hbWUgJHJvb3RTY29wZS5TY29wZQorICogQG1vZHVsZSBuZ01v
Y2sKKyAqIEBkZXNjcmlwdGlvbgorICoge0BsaW5rIG5nLiRyb290U2NvcGUuU2NvcGUgU2NvcGV9
IHR5cGUgZGVjb3JhdGVkIHdpdGggaGVscGVyIG1ldGhvZHMgdXNlZnVsIGZvciB0ZXN0aW5nLiBU
aGVzZQorICogbWV0aG9kcyBhcmUgYXV0b21hdGljYWxseSBhdmFpbGFibGUgb24gYW55IHtAbGlu
ayBuZy4kcm9vdFNjb3BlLlNjb3BlIFNjb3BlfSBpbnN0YW5jZSB3aGVuCisgKiBgbmdNb2NrYCBt
b2R1bGUgaXMgbG9hZGVkLgorICoKKyAqIEluIGFkZGl0aW9uIHRvIGFsbCB0aGUgcmVndWxhciBg
U2NvcGVgIG1ldGhvZHMsIHRoZSBmb2xsb3dpbmcgaGVscGVyIG1ldGhvZHMgYXJlIGF2YWlsYWJs
ZToKKyAqLworYW5ndWxhci5tb2NrLiRSb290U2NvcGVEZWNvcmF0b3IgPSBbJyRkZWxlZ2F0ZScs
IGZ1bmN0aW9uKCRkZWxlZ2F0ZSkgeworCisgIHZhciAkcm9vdFNjb3BlUHJvdG90eXBlID0gT2Jq
ZWN0LmdldFByb3RvdHlwZU9mKCRkZWxlZ2F0ZSk7CisKKyAgJHJvb3RTY29wZVByb3RvdHlwZS4k
Y291bnRDaGlsZFNjb3BlcyA9IGNvdW50Q2hpbGRTY29wZXM7CisgICRyb290U2NvcGVQcm90b3R5
cGUuJGNvdW50V2F0Y2hlcnMgPSBjb3VudFdhdGNoZXJzOworCisgIHJldHVybiAkZGVsZWdhdGU7
CisKKyAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC8vCisKKyAgLyoqCisg
ICAqIEBuZ2RvYyBtZXRob2QKKyAgICogQG5hbWUgJHJvb3RTY29wZS5TY29wZSMkY291bnRDaGls
ZFNjb3BlcworICAgKiBAbW9kdWxlIG5nTW9jaworICAgKiBAdGhpcyAkcm9vdFNjb3BlLlNjb3Bl
CisgICAqIEBkZXNjcmlwdGlvbgorICAgKiBDb3VudHMgYWxsIHRoZSBkaXJlY3QgYW5kIGluZGly
ZWN0IGNoaWxkIHNjb3BlcyBvZiB0aGUgY3VycmVudCBzY29wZS4KKyAgICoKKyAgICogVGhlIGN1
cnJlbnQgc2NvcGUgaXMgZXhjbHVkZWQgZnJvbSB0aGUgY291bnQuIFRoZSBjb3VudCBpbmNsdWRl
cyBhbGwgaXNvbGF0ZSBjaGlsZCBzY29wZXMuCisgICAqCisgICAqIEByZXR1cm5zIHtudW1iZXJ9
IFRvdGFsIG51bWJlciBvZiBjaGlsZCBzY29wZXMuCisgICAqLworICBmdW5jdGlvbiBjb3VudENo
aWxkU2NvcGVzKCkgeworICAgIHZhciBjb3VudCA9IDA7IC8vIGV4Y2x1ZGUgdGhlIGN1cnJlbnQg
c2NvcGUKKyAgICB2YXIgcGVuZGluZ0NoaWxkSGVhZHMgPSBbdGhpcy4kJGNoaWxkSGVhZF07Cisg
ICAgdmFyIGN1cnJlbnRTY29wZTsKKworICAgIHdoaWxlIChwZW5kaW5nQ2hpbGRIZWFkcy5sZW5n
dGgpIHsKKyAgICAgIGN1cnJlbnRTY29wZSA9IHBlbmRpbmdDaGlsZEhlYWRzLnNoaWZ0KCk7CisK
KyAgICAgIHdoaWxlIChjdXJyZW50U2NvcGUpIHsKKyAgICAgICAgY291bnQgKz0gMTsKKyAgICAg
ICAgcGVuZGluZ0NoaWxkSGVhZHMucHVzaChjdXJyZW50U2NvcGUuJCRjaGlsZEhlYWQpOworICAg
ICAgICBjdXJyZW50U2NvcGUgPSBjdXJyZW50U2NvcGUuJCRuZXh0U2libGluZzsKKyAgICAgIH0K
KyAgICB9CisKKyAgICByZXR1cm4gY291bnQ7CisgIH0KKworCisgIC8qKgorICAgKiBAbmdkb2Mg
bWV0aG9kCisgICAqIEBuYW1lICRyb290U2NvcGUuU2NvcGUjJGNvdW50V2F0Y2hlcnMKKyAgICog
QHRoaXMgJHJvb3RTY29wZS5TY29wZQorICAgKiBAbW9kdWxlIG5nTW9jaworICAgKiBAZGVzY3Jp
cHRpb24KKyAgICogQ291bnRzIGFsbCB0aGUgd2F0Y2hlcnMgb2YgZGlyZWN0IGFuZCBpbmRpcmVj
dCBjaGlsZCBzY29wZXMgb2YgdGhlIGN1cnJlbnQgc2NvcGUuCisgICAqCisgICAqIFRoZSB3YXRj
aGVycyBvZiB0aGUgY3VycmVudCBzY29wZSBhcmUgaW5jbHVkZWQgaW4gdGhlIGNvdW50IGFuZCBz
byBhcmUgYWxsIHRoZSB3YXRjaGVycyBvZgorICAgKiBpc29sYXRlIGNoaWxkIHNjb3Blcy4KKyAg
ICoKKyAgICogQHJldHVybnMge251bWJlcn0gVG90YWwgbnVtYmVyIG9mIHdhdGNoZXJzLgorICAg
Ki8KKyAgZnVuY3Rpb24gY291bnRXYXRjaGVycygpIHsKKyAgICB2YXIgY291bnQgPSB0aGlzLiQk
d2F0Y2hlcnMgPyB0aGlzLiQkd2F0Y2hlcnMubGVuZ3RoIDogMDsgLy8gaW5jbHVkZSB0aGUgY3Vy
cmVudCBzY29wZQorICAgIHZhciBwZW5kaW5nQ2hpbGRIZWFkcyA9IFt0aGlzLiQkY2hpbGRIZWFk
XTsKKyAgICB2YXIgY3VycmVudFNjb3BlOworCisgICAgd2hpbGUgKHBlbmRpbmdDaGlsZEhlYWRz
Lmxlbmd0aCkgeworICAgICAgY3VycmVudFNjb3BlID0gcGVuZGluZ0NoaWxkSGVhZHMuc2hpZnQo
KTsKKworICAgICAgd2hpbGUgKGN1cnJlbnRTY29wZSkgeworICAgICAgICBjb3VudCArPSBjdXJy
ZW50U2NvcGUuJCR3YXRjaGVycyA/IGN1cnJlbnRTY29wZS4kJHdhdGNoZXJzLmxlbmd0aCA6IDA7
CisgICAgICAgIHBlbmRpbmdDaGlsZEhlYWRzLnB1c2goY3VycmVudFNjb3BlLiQkY2hpbGRIZWFk
KTsKKyAgICAgICAgY3VycmVudFNjb3BlID0gY3VycmVudFNjb3BlLiQkbmV4dFNpYmxpbmc7Cisg
ICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGNvdW50OworICB9Cit9XTsKKworCisoZnVuY3Rp
b24oamFzbWluZU9yTW9jaGEpIHsKKworICBpZiAoIWphc21pbmVPck1vY2hhKSB7CisgICAgcmV0
dXJuOworICB9CisKKyAgdmFyIGN1cnJlbnRTcGVjID0gbnVsbCwKKyAgICAgIGluamVjdG9yU3Rh
dGUgPSBuZXcgSW5qZWN0b3JTdGF0ZSgpLAorICAgICAgYW5ub3RhdGVkRnVuY3Rpb25zID0gW10s
CisgICAgICB3YXNJbmplY3RvckNyZWF0ZWQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJu
ICEhY3VycmVudFNwZWM7CisgICAgICB9OworCisgIGFuZ3VsYXIubW9jay4kJGFubm90YXRlID0g
YW5ndWxhci5pbmplY3Rvci4kJGFubm90YXRlOworICBhbmd1bGFyLmluamVjdG9yLiQkYW5ub3Rh
dGUgPSBmdW5jdGlvbihmbikgeworICAgIGlmICh0eXBlb2YgZm4gPT09ICdmdW5jdGlvbicgJiYg
IWZuLiRpbmplY3QpIHsKKyAgICAgIGFubm90YXRlZEZ1bmN0aW9ucy5wdXNoKGZuKTsKKyAgICB9
CisgICAgcmV0dXJuIGFuZ3VsYXIubW9jay4kJGFubm90YXRlLmFwcGx5KHRoaXMsIGFyZ3VtZW50
cyk7CisgIH07CisKKyAgLyoqCisgICAqIEBuZ2RvYyBmdW5jdGlvbgorICAgKiBAbmFtZSBhbmd1
bGFyLm1vY2subW9kdWxlCisgICAqIEBkZXNjcmlwdGlvbgorICAgKgorICAgKiAqTk9URSo6IFRo
aXMgZnVuY3Rpb24gaXMgYWxzbyBwdWJsaXNoZWQgb24gd2luZG93IGZvciBlYXN5IGFjY2Vzcy48
YnI+CisgICAqICpOT1RFKjogVGhpcyBmdW5jdGlvbiBpcyBkZWNsYXJlZCBPTkxZIFdIRU4gcnVu
bmluZyB0ZXN0cyB3aXRoIGphc21pbmUgb3IgbW9jaGEKKyAgICoKKyAgICogVGhpcyBmdW5jdGlv
biByZWdpc3RlcnMgYSBtb2R1bGUgY29uZmlndXJhdGlvbiBjb2RlLiBJdCBjb2xsZWN0cyB0aGUg
Y29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbgorICAgKiB3aGljaCB3aWxsIGJlIHVzZWQgd2hlbiB0
aGUgaW5qZWN0b3IgaXMgY3JlYXRlZCBieSB7QGxpbmsgYW5ndWxhci5tb2NrLmluamVjdCBpbmpl
Y3R9LgorICAgKgorICAgKiBTZWUge0BsaW5rIGFuZ3VsYXIubW9jay5pbmplY3QgaW5qZWN0fSBm
b3IgdXNhZ2UgZXhhbXBsZQorICAgKgorICAgKiBAcGFyYW0gey4uLihzdHJpbmd8RnVuY3Rpb258
T2JqZWN0KX0gZm5zIGFueSBudW1iZXIgb2YgbW9kdWxlcyB3aGljaCBhcmUgcmVwcmVzZW50ZWQg
YXMgc3RyaW5nCisgICAqICAgICAgICBhbGlhc2VzIG9yIGFzIGFub255bW91cyBtb2R1bGUgaW5p
dGlhbGl6YXRpb24gZnVuY3Rpb25zLiBUaGUgbW9kdWxlcyBhcmUgdXNlZCB0bworICAgKiAgICAg
ICAgY29uZmlndXJlIHRoZSBpbmplY3Rvci4gVGhlICduZycgYW5kICduZ01vY2snIG1vZHVsZXMg
YXJlIGF1dG9tYXRpY2FsbHkgbG9hZGVkLiBJZiBhbgorICAgKiAgICAgICAgb2JqZWN0IGxpdGVy
YWwgaXMgcGFzc2VkIGVhY2gga2V5LXZhbHVlIHBhaXIgd2lsbCBiZSByZWdpc3RlcmVkIG9uIHRo
ZSBtb2R1bGUgdmlhCisgICAqICAgICAgICB7QGxpbmsgYXV0by4kcHJvdmlkZSAkcHJvdmlkZX0u
dmFsdWUsIHRoZSBrZXkgYmVpbmcgdGhlIHN0cmluZyBuYW1lIChvciB0b2tlbikgdG8gYXNzb2Np
YXRlCisgICAqICAgICAgICB3aXRoIHRoZSB2YWx1ZSBvbiB0aGUgaW5qZWN0b3IuCisgICAqLwor
ICB2YXIgbW9kdWxlID0gd2luZG93Lm1vZHVsZSA9IGFuZ3VsYXIubW9jay5tb2R1bGUgPSBmdW5j
dGlvbigpIHsKKyAgICB2YXIgbW9kdWxlRm5zID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwo
YXJndW1lbnRzLCAwKTsKKyAgICByZXR1cm4gd2FzSW5qZWN0b3JDcmVhdGVkKCkgPyB3b3JrRm4o
KSA6IHdvcmtGbjsKKyAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8KKyAgICBmdW5jdGlvbiB3b3Jr
Rm4oKSB7CisgICAgICBpZiAoY3VycmVudFNwZWMuJGluamVjdG9yKSB7CisgICAgICAgIHRocm93
IG5ldyBFcnJvcignSW5qZWN0b3IgYWxyZWFkeSBjcmVhdGVkLCBjYW4gbm90IHJlZ2lzdGVyIGEg
bW9kdWxlIScpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgdmFyIGZuLCBtb2R1bGVzID0gY3Vy
cmVudFNwZWMuJG1vZHVsZXMgfHwgKGN1cnJlbnRTcGVjLiRtb2R1bGVzID0gW10pOworICAgICAg
ICBhbmd1bGFyLmZvckVhY2gobW9kdWxlRm5zLCBmdW5jdGlvbihtb2R1bGUpIHsKKyAgICAgICAg
ICBpZiAoYW5ndWxhci5pc09iamVjdChtb2R1bGUpICYmICFhbmd1bGFyLmlzQXJyYXkobW9kdWxl
KSkgeworICAgICAgICAgICAgZm4gPSBbJyRwcm92aWRlJywgZnVuY3Rpb24oJHByb3ZpZGUpIHsK
KyAgICAgICAgICAgICAgYW5ndWxhci5mb3JFYWNoKG1vZHVsZSwgZnVuY3Rpb24odmFsdWUsIGtl
eSkgeworICAgICAgICAgICAgICAgICRwcm92aWRlLnZhbHVlKGtleSwgdmFsdWUpOworICAgICAg
ICAgICAgICB9KTsKKyAgICAgICAgICAgIH1dOworICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBmbiA9IG1vZHVsZTsKKyAgICAgICAgICB9CisgICAgICAgICAgaWYgKGN1cnJlbnRTcGVj
LiRwcm92aWRlckluamVjdG9yKSB7CisgICAgICAgICAgICBjdXJyZW50U3BlYy4kcHJvdmlkZXJJ
bmplY3Rvci5pbnZva2UoZm4pOworICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtb2R1
bGVzLnB1c2goZm4pOworICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgICB9CisgICAgfQor
ICB9OworCisgIG1vZHVsZS4kJGJlZm9yZUFsbEhvb2sgPSAod2luZG93LmJlZm9yZSB8fCB3aW5k
b3cuYmVmb3JlQWxsKTsKKyAgbW9kdWxlLiQkYWZ0ZXJBbGxIb29rID0gKHdpbmRvdy5hZnRlciB8
fCB3aW5kb3cuYWZ0ZXJBbGwpOworCisgIC8vIHB1cmVseSBmb3IgdGVzdGluZyBuZ01vY2sgaXRz
ZWxmCisgIG1vZHVsZS4kJGN1cnJlbnRTcGVjID0gZnVuY3Rpb24odG8pIHsKKyAgICBpZiAoYXJn
dW1lbnRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHRvOworICAgIGN1cnJlbnRTcGVjID0gdG87Cisg
IH07CisKKyAgLyoqCisgICAqIEBuZ2RvYyBmdW5jdGlvbgorICAgKiBAbmFtZSBhbmd1bGFyLm1v
Y2subW9kdWxlLnNoYXJlZEluamVjdG9yCisgICAqIEBkZXNjcmlwdGlvbgorICAgKgorICAgKiAq
Tk9URSo6IFRoaXMgZnVuY3Rpb24gaXMgZGVjbGFyZWQgT05MWSBXSEVOIHJ1bm5pbmcgdGVzdHMg
d2l0aCBqYXNtaW5lIG9yIG1vY2hhCisgICAqCisgICAqIFRoaXMgZnVuY3Rpb24gZW5zdXJlcyBh
IHNpbmdsZSBpbmplY3RvciB3aWxsIGJlIHVzZWQgZm9yIGFsbCB0ZXN0cyBpbiBhIGdpdmVuIGRl
c2NyaWJlIGNvbnRleHQuCisgICAqIFRoaXMgY29udHJhc3RzIHdpdGggdGhlIGRlZmF1bHQgYmVo
YXZpb3VyIHdoZXJlIGEgbmV3IGluamVjdG9yIGlzIGNyZWF0ZWQgcGVyIHRlc3QgY2FzZS4KKyAg
ICoKKyAgICogVXNlIHNoYXJlZEluamVjdG9yIHdoZW4geW91IHdhbnQgdG8gdGFrZSBhZHZhbnRh
Z2Ugb2YgSmFzbWluZSdzIGBiZWZvcmVBbGwoKWAsIG9yIG1vY2hhJ3MKKyAgICogYGJlZm9yZSgp
YCBtZXRob2RzLiBDYWxsIGBtb2R1bGUuc2hhcmVkSW5qZWN0b3IoKWAgYmVmb3JlIHlvdSBzZXR1
cCBhbnkgb3RoZXIgaG9va3MgdGhhdAorICAgKiB3aWxsIGNyZWF0ZSAoaS5lIGNhbGwgYG1vZHVs
ZSgpYCkgb3IgdXNlIChpLmUgY2FsbCBgaW5qZWN0KClgKSB0aGUgaW5qZWN0b3IuCisgICAqCisg
ICAqIFlvdSBjYW5ub3QgY2FsbCBgc2hhcmVkSW5qZWN0b3IoKWAgZnJvbSB3aXRoaW4gYSBjb250
ZXh0IGFscmVhZHkgdXNpbmcgYHNoYXJlZEluamVjdG9yKClgLgorICAgKgorICAgKiAjIyBFeGFt
cGxlCisgICAqCisgICAqIFR5cGljYWxseSBiZWZvcmVBbGwgaXMgdXNlZCB0byBtYWtlIG1hbnkg
YXNzZXJ0aW9ucyBhYm91dCBhIHNpbmdsZSBvcGVyYXRpb24uIFRoaXMgY2FuCisgICAqIGN1dCBk
b3duIHRlc3QgcnVuLXRpbWUgYXMgdGhlIHRlc3Qgc2V0dXAgZG9lc24ndCBuZWVkIHRvIGJlIHJl
LXJ1biwgYW5kIGVuYWJsaW5nIGZvY3Vzc2VkCisgICAqIHRlc3RzIGVhY2ggd2l0aCBhIHNpbmds
ZSBhc3NlcnRpb24uCisgICAqCisgICAqIGBgYGpzCisgICAqIGRlc2NyaWJlKCJEZWVwIFRob3Vn
aHQiLCBmdW5jdGlvbigpIHsKKyAgICoKKyAgICogICBtb2R1bGUuc2hhcmVkSW5qZWN0b3IoKTsK
KyAgICoKKyAgICogICBiZWZvcmVBbGwobW9kdWxlKCJVbHRpbWF0ZVF1ZXN0aW9uIikpOworICAg
KgorICAgKiAgIGJlZm9yZUFsbChpbmplY3QoZnVuY3Rpb24oRGVlcFRob3VnaHQpIHsKKyAgICog
ICAgIGV4cGVjdChEZWVwVGhvdWdodC5hbnN3ZXIpLnRvQmVVbmRlZmluZWQoKTsKKyAgICogICAg
IERlZXBUaG91Z2h0LmdlbmVyYXRlQW5zd2VyKCk7CisgICAqICAgfSkpOworICAgKgorICAgKiAg
IGl0KCJoYXMgY2FsY3VsYXRlZCB0aGUgYW5zd2VyIGNvcnJlY3RseSIsIGluamVjdChmdW5jdGlv
bihEZWVwVGhvdWdodCkgeworICAgKiAgICAgLy8gQmVjYXVzZSBvZiBzaGFyZWRJbmplY3Rvciwg
d2UgaGF2ZSBhY2Nlc3MgdG8gdGhlIGluc3RhbmNlIG9mIHRoZSBEZWVwVGhvdWdodCBzZXJ2aWNl
CisgICAqICAgICAvLyB0aGF0IHdhcyBwcm92aWRlZCB0byB0aGUgYmVmb3JlQWxsKCkgaG9vay4g
VGhlcmVmb3JlIHdlIGNhbiB0ZXN0IHRoZSBnZW5lcmF0ZWQgYW5zd2VyCisgICAqICAgICBleHBl
Y3QoRGVlcFRob3VnaHQuYW5zd2VyKS50b0JlKDQyKTsKKyAgICogICB9KSk7CisgICAqCisgICAq
ICAgaXQoImhhcyBjYWxjdWxhdGVkIHRoZSBhbnN3ZXIgd2l0aGluIHRoZSBleHBlY3RlZCB0aW1l
IiwgaW5qZWN0KGZ1bmN0aW9uKERlZXBUaG91Z2h0KSB7CisgICAqICAgICBleHBlY3QoRGVlcFRo
b3VnaHQucnVuVGltZU1pbGxlbm5pYSkudG9CZUxlc3NUaGFuKDgwMDApOworICAgKiAgIH0pKTsK
KyAgICoKKyAgICogICBpdCgiaGFzIGRvdWJsZSBjaGVja2VkIHRoZSBhbnN3ZXIiLCBpbmplY3Qo
ZnVuY3Rpb24oRGVlcFRob3VnaHQpIHsKKyAgICogICAgIGV4cGVjdChEZWVwVGhvdWdodC5hYnNv
bHV0ZWx5U3VyZUl0SXNUaGVSaWdodEFuc3dlcikudG9CZSh0cnVlKTsKKyAgICogICB9KSk7Cisg
ICAqCisgICAqIH0pOworICAgKgorICAgKiBgYGAKKyAgICovCisgIG1vZHVsZS5zaGFyZWRJbmpl
Y3RvciA9IGZ1bmN0aW9uKCkgeworICAgIGlmICghKG1vZHVsZS4kJGJlZm9yZUFsbEhvb2sgJiYg
bW9kdWxlLiQkYWZ0ZXJBbGxIb29rKSkgeworICAgICAgdGhyb3cgRXJyb3IoJ3NoYXJlZEluamVj
dG9yKCkgY2Fubm90IGJlIHVzZWQgdW5sZXNzIHlvdXIgdGVzdCBydW5uZXIgZGVmaW5lcyBiZWZv
cmVBbGwvYWZ0ZXJBbGwnKTsKKyAgICB9CisKKyAgICB2YXIgaW5pdGlhbGl6ZWQgPSBmYWxzZTsK
KworICAgIG1vZHVsZS4kJGJlZm9yZUFsbEhvb2soLyoqIEB0aGlzICovIGZ1bmN0aW9uKCkgewor
ICAgICAgaWYgKGluamVjdG9yU3RhdGUuc2hhcmVkKSB7CisgICAgICAgIGluamVjdG9yU3RhdGUu
c2hhcmVkRXJyb3IgPSBFcnJvcignc2hhcmVkSW5qZWN0b3IoKSBjYW5ub3QgYmUgY2FsbGVkIGlu
c2lkZSBhIGNvbnRleHQgdGhhdCBoYXMgYWxyZWFkeSBjYWxsZWQgc2hhcmVkSW5qZWN0b3IoKScp
OworICAgICAgICB0aHJvdyBpbmplY3RvclN0YXRlLnNoYXJlZEVycm9yOworICAgICAgfQorICAg
ICAgaW5pdGlhbGl6ZWQgPSB0cnVlOworICAgICAgY3VycmVudFNwZWMgPSB0aGlzOworICAgICAg
aW5qZWN0b3JTdGF0ZS5zaGFyZWQgPSB0cnVlOworICAgIH0pOworCisgICAgbW9kdWxlLiQkYWZ0
ZXJBbGxIb29rKGZ1bmN0aW9uKCkgeworICAgICAgaWYgKGluaXRpYWxpemVkKSB7CisgICAgICAg
IGluamVjdG9yU3RhdGUgPSBuZXcgSW5qZWN0b3JTdGF0ZSgpOworICAgICAgICBtb2R1bGUuJCRj
bGVhbnVwKCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBpbmplY3RvclN0YXRlLnNoYXJlZEVy
cm9yID0gbnVsbDsKKyAgICAgIH0KKyAgICB9KTsKKyAgfTsKKworICBtb2R1bGUuJCRiZWZvcmVF
YWNoID0gZnVuY3Rpb24oKSB7CisgICAgaWYgKGluamVjdG9yU3RhdGUuc2hhcmVkICYmIGN1cnJl
bnRTcGVjICYmIGN1cnJlbnRTcGVjICE9PSB0aGlzKSB7CisgICAgICB2YXIgc3RhdGUgPSBjdXJy
ZW50U3BlYzsKKyAgICAgIGN1cnJlbnRTcGVjID0gdGhpczsKKyAgICAgIGFuZ3VsYXIuZm9yRWFj
aChbJyRpbmplY3RvcicsJyRtb2R1bGVzJywnJHByb3ZpZGVySW5qZWN0b3InLCAnJGluamVjdG9y
U3RyaWN0J10sIGZ1bmN0aW9uKGspIHsKKyAgICAgICAgY3VycmVudFNwZWNba10gPSBzdGF0ZVtr
XTsKKyAgICAgICAgc3RhdGVba10gPSBudWxsOworICAgICAgfSk7CisgICAgfSBlbHNlIHsKKyAg
ICAgIGN1cnJlbnRTcGVjID0gdGhpczsKKyAgICAgIG9yaWdpbmFsUm9vdEVsZW1lbnQgPSBudWxs
OworICAgICAgYW5ub3RhdGVkRnVuY3Rpb25zID0gW107CisgICAgfQorICB9OworCisgIG1vZHVs
ZS4kJGFmdGVyRWFjaCA9IGZ1bmN0aW9uKCkgeworICAgIGlmIChpbmplY3RvclN0YXRlLmNsZWFu
dXBBZnRlckVhY2goKSkgeworICAgICAgbW9kdWxlLiQkY2xlYW51cCgpOworICAgIH0KKyAgfTsK
KworICBtb2R1bGUuJCRjbGVhbnVwID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIGluamVjdG9yID0g
Y3VycmVudFNwZWMuJGluamVjdG9yOworCisgICAgYW5ub3RhdGVkRnVuY3Rpb25zLmZvckVhY2go
ZnVuY3Rpb24oZm4pIHsKKyAgICAgIGRlbGV0ZSBmbi4kaW5qZWN0OworICAgIH0pOworCisgICAg
YW5ndWxhci5mb3JFYWNoKGN1cnJlbnRTcGVjLiRtb2R1bGVzLCBmdW5jdGlvbihtb2R1bGUpIHsK
KyAgICAgIGlmIChtb2R1bGUgJiYgbW9kdWxlLiQkaGFzaEtleSkgeworICAgICAgICBtb2R1bGUu
JCRoYXNoS2V5ID0gdW5kZWZpbmVkOworICAgICAgfQorICAgIH0pOworCisgICAgY3VycmVudFNw
ZWMuJGluamVjdG9yID0gbnVsbDsKKyAgICBjdXJyZW50U3BlYy4kbW9kdWxlcyA9IG51bGw7Cisg
ICAgY3VycmVudFNwZWMuJHByb3ZpZGVySW5qZWN0b3IgPSBudWxsOworICAgIGN1cnJlbnRTcGVj
ID0gbnVsbDsKKworICAgIGlmIChpbmplY3RvcikgeworICAgICAgLy8gRW5zdXJlIGAkcm9vdEVs
ZW1lbnRgIGlzIGluc3RhbnRpYXRlZCwgYmVmb3JlIGNoZWNraW5nIGBvcmlnaW5hbFJvb3RFbGVt
ZW50YAorICAgICAgdmFyICRyb290RWxlbWVudCA9IGluamVjdG9yLmdldCgnJHJvb3RFbGVtZW50
Jyk7CisgICAgICB2YXIgcm9vdE5vZGUgPSAkcm9vdEVsZW1lbnQgJiYgJHJvb3RFbGVtZW50WzBd
OworICAgICAgdmFyIGNsZWFuVXBOb2RlcyA9ICFvcmlnaW5hbFJvb3RFbGVtZW50ID8gW10gOiBb
b3JpZ2luYWxSb290RWxlbWVudFswXV07CisgICAgICBpZiAocm9vdE5vZGUgJiYgKCFvcmlnaW5h
bFJvb3RFbGVtZW50IHx8IHJvb3ROb2RlICE9PSBvcmlnaW5hbFJvb3RFbGVtZW50WzBdKSkgewor
ICAgICAgICBjbGVhblVwTm9kZXMucHVzaChyb290Tm9kZSk7CisgICAgICB9CisgICAgICBhbmd1
bGFyLmVsZW1lbnQuY2xlYW5EYXRhKGNsZWFuVXBOb2Rlcyk7CisKKyAgICAgIC8vIEVuc3VyZSBg
JGRlc3Ryb3koKWAgaXMgYXZhaWxhYmxlLCBiZWZvcmUgY2FsbGluZyBpdAorICAgICAgLy8gKGEg
bW9ja2VkIGAkcm9vdFNjb3BlYCBtaWdodCBub3QgaW1wbGVtZW50IGl0IChvciBub3QgZXZlbiBi
ZSBhbiBvYmplY3QgYXQgYWxsKSkKKyAgICAgIHZhciAkcm9vdFNjb3BlID0gaW5qZWN0b3IuZ2V0
KCckcm9vdFNjb3BlJyk7CisgICAgICBpZiAoJHJvb3RTY29wZSAmJiAkcm9vdFNjb3BlLiRkZXN0
cm95KSAkcm9vdFNjb3BlLiRkZXN0cm95KCk7CisgICAgfQorCisgICAgLy8gY2xlYW4gdXAganF1
ZXJ5J3MgZnJhZ21lbnQgY2FjaGUKKyAgICBhbmd1bGFyLmZvckVhY2goYW5ndWxhci5lbGVtZW50
LmZyYWdtZW50cywgZnVuY3Rpb24odmFsLCBrZXkpIHsKKyAgICAgIGRlbGV0ZSBhbmd1bGFyLmVs
ZW1lbnQuZnJhZ21lbnRzW2tleV07CisgICAgfSk7CisKKyAgICBNb2NrWGhyLiQkbGFzdEluc3Rh
bmNlID0gbnVsbDsKKworICAgIGFuZ3VsYXIuZm9yRWFjaChhbmd1bGFyLmNhbGxiYWNrcywgZnVu
Y3Rpb24odmFsLCBrZXkpIHsKKyAgICAgIGRlbGV0ZSBhbmd1bGFyLmNhbGxiYWNrc1trZXldOwor
ICAgIH0pOworICAgIGFuZ3VsYXIuY2FsbGJhY2tzLiQkY291bnRlciA9IDA7CisgIH07CisKKyAg
KHdpbmRvdy5iZWZvcmVFYWNoIHx8IHdpbmRvdy5zZXR1cCkobW9kdWxlLiQkYmVmb3JlRWFjaCk7
CisgICh3aW5kb3cuYWZ0ZXJFYWNoIHx8IHdpbmRvdy50ZWFyZG93bikobW9kdWxlLiQkYWZ0ZXJF
YWNoKTsKKworICAvKioKKyAgICogQG5nZG9jIGZ1bmN0aW9uCisgICAqIEBuYW1lIGFuZ3VsYXIu
bW9jay5pbmplY3QKKyAgICogQGRlc2NyaXB0aW9uCisgICAqCisgICAqICpOT1RFKjogVGhpcyBm
dW5jdGlvbiBpcyBhbHNvIHB1Ymxpc2hlZCBvbiB3aW5kb3cgZm9yIGVhc3kgYWNjZXNzLjxicj4K
KyAgICogKk5PVEUqOiBUaGlzIGZ1bmN0aW9uIGlzIGRlY2xhcmVkIE9OTFkgV0hFTiBydW5uaW5n
IHRlc3RzIHdpdGggamFzbWluZSBvciBtb2NoYQorICAgKgorICAgKiBUaGUgaW5qZWN0IGZ1bmN0
aW9uIHdyYXBzIGEgZnVuY3Rpb24gaW50byBhbiBpbmplY3RhYmxlIGZ1bmN0aW9uLiBUaGUgaW5q
ZWN0KCkgY3JlYXRlcyBuZXcKKyAgICogaW5zdGFuY2Ugb2Yge0BsaW5rIGF1dG8uJGluamVjdG9y
ICRpbmplY3Rvcn0gcGVyIHRlc3QsIHdoaWNoIGlzIHRoZW4gdXNlZCBmb3IKKyAgICogcmVzb2x2
aW5nIHJlZmVyZW5jZXMuCisgICAqCisgICAqCisgICAqICMjIFJlc29sdmluZyBSZWZlcmVuY2Vz
IChVbmRlcnNjb3JlIFdyYXBwaW5nKQorICAgKiBPZnRlbiwgd2Ugd291bGQgbGlrZSB0byBpbmpl
Y3QgYSByZWZlcmVuY2Ugb25jZSwgaW4gYSBgYmVmb3JlRWFjaCgpYCBibG9jayBhbmQgcmV1c2Ug
dGhpcworICAgKiBpbiBtdWx0aXBsZSBgaXQoKWAgY2xhdXNlcy4gVG8gYmUgYWJsZSB0byBkbyB0
aGlzIHdlIG11c3QgYXNzaWduIHRoZSByZWZlcmVuY2UgdG8gYSB2YXJpYWJsZQorICAgKiB0aGF0
IGlzIGRlY2xhcmVkIGluIHRoZSBzY29wZSBvZiB0aGUgYGRlc2NyaWJlKClgIGJsb2NrLiBTaW5j
ZSB3ZSB3b3VsZCwgbW9zdCBsaWtlbHksIHdhbnQKKyAgICogdGhlIHZhcmlhYmxlIHRvIGhhdmUg
dGhlIHNhbWUgbmFtZSBvZiB0aGUgcmVmZXJlbmNlIHdlIGhhdmUgYSBwcm9ibGVtLCBzaW5jZSB0
aGUgcGFyYW1ldGVyCisgICAqIHRvIHRoZSBgaW5qZWN0KClgIGZ1bmN0aW9uIHdvdWxkIGhpZGUg
dGhlIG91dGVyIHZhcmlhYmxlLgorICAgKgorICAgKiBUbyBoZWxwIHdpdGggdGhpcywgdGhlIGlu
amVjdGVkIHBhcmFtZXRlcnMgY2FuLCBvcHRpb25hbGx5LCBiZSBlbmNsb3NlZCB3aXRoIHVuZGVy
c2NvcmVzLgorICAgKiBUaGVzZSBhcmUgaWdub3JlZCBieSB0aGUgaW5qZWN0b3Igd2hlbiB0aGUg
cmVmZXJlbmNlIG5hbWUgaXMgcmVzb2x2ZWQuCisgICAqCisgICAqIEZvciBleGFtcGxlLCB0aGUg
cGFyYW1ldGVyIGBfbXlTZXJ2aWNlX2Agd291bGQgYmUgcmVzb2x2ZWQgYXMgdGhlIHJlZmVyZW5j
ZSBgbXlTZXJ2aWNlYC4KKyAgICogU2luY2UgaXQgaXMgYXZhaWxhYmxlIGluIHRoZSBmdW5jdGlv
biBib2R5IGFzIF9teVNlcnZpY2VfLCB3ZSBjYW4gdGhlbiBhc3NpZ24gaXQgdG8gYSB2YXJpYWJs
ZQorICAgKiBkZWZpbmVkIGluIGFuIG91dGVyIHNjb3BlLgorICAgKgorICAgKiBgYGAKKyAgICog
Ly8gRGVmaW5lZCBvdXQgcmVmZXJlbmNlIHZhcmlhYmxlIG91dHNpZGUKKyAgICogdmFyIG15U2Vy
dmljZTsKKyAgICoKKyAgICogLy8gV3JhcCB0aGUgcGFyYW1ldGVyIGluIHVuZGVyc2NvcmVzCisg
ICAqIGJlZm9yZUVhY2goIGluamVjdCggZnVuY3Rpb24oX215U2VydmljZV8peworICAgKiAgIG15
U2VydmljZSA9IF9teVNlcnZpY2VfOworICAgKiB9KSk7CisgICAqCisgICAqIC8vIFVzZSBteVNl
cnZpY2UgaW4gYSBzZXJpZXMgb2YgdGVzdHMuCisgICAqIGl0KCdtYWtlcyB1c2Ugb2YgbXlTZXJ2
aWNlJywgZnVuY3Rpb24oKSB7CisgICAqICAgbXlTZXJ2aWNlLmRvU3R1ZmYoKTsKKyAgICogfSk7
CisgICAqCisgICAqIGBgYAorICAgKgorICAgKiBTZWUgYWxzbyB7QGxpbmsgYW5ndWxhci5tb2Nr
Lm1vZHVsZSBhbmd1bGFyLm1vY2subW9kdWxlfQorICAgKgorICAgKiAjIyBFeGFtcGxlCisgICAq
IEV4YW1wbGUgb2Ygd2hhdCBhIHR5cGljYWwgamFzbWluZSB0ZXN0cyBsb29rcyBsaWtlIHdpdGgg
dGhlIGluamVjdCBtZXRob2QuCisgICAqIGBgYGpzCisgICAqCisgICAqICAgYW5ndWxhci5tb2R1
bGUoJ215QXBwbGljYXRpb25Nb2R1bGUnLCBbXSkKKyAgICogICAgICAgLnZhbHVlKCdtb2RlJywg
J2FwcCcpCisgICAqICAgICAgIC52YWx1ZSgndmVyc2lvbicsICd2MS4wLjEnKTsKKyAgICoKKyAg
ICoKKyAgICogICBkZXNjcmliZSgnTXlBcHAnLCBmdW5jdGlvbigpIHsKKyAgICoKKyAgICogICAg
IC8vIFlvdSBuZWVkIHRvIGxvYWQgbW9kdWxlcyB0aGF0IHlvdSB3YW50IHRvIHRlc3QsCisgICAq
ICAgICAvLyBpdCBsb2FkcyBvbmx5IHRoZSAibmciIG1vZHVsZSBieSBkZWZhdWx0LgorICAgKiAg
ICAgYmVmb3JlRWFjaChtb2R1bGUoJ215QXBwbGljYXRpb25Nb2R1bGUnKSk7CisgICAqCisgICAq
CisgICAqICAgICAvLyBpbmplY3QoKSBpcyB1c2VkIHRvIGluamVjdCBhcmd1bWVudHMgb2YgYWxs
IGdpdmVuIGZ1bmN0aW9ucworICAgKiAgICAgaXQoJ3Nob3VsZCBwcm92aWRlIGEgdmVyc2lvbics
IGluamVjdChmdW5jdGlvbihtb2RlLCB2ZXJzaW9uKSB7CisgICAqICAgICAgIGV4cGVjdCh2ZXJz
aW9uKS50b0VxdWFsKCd2MS4wLjEnKTsKKyAgICogICAgICAgZXhwZWN0KG1vZGUpLnRvRXF1YWwo
J2FwcCcpOworICAgKiAgICAgfSkpOworICAgKgorICAgKgorICAgKiAgICAgLy8gVGhlIGluamVj
dCBhbmQgbW9kdWxlIG1ldGhvZCBjYW4gYWxzbyBiZSB1c2VkIGluc2lkZSBvZiB0aGUgaXQgb3Ig
YmVmb3JlRWFjaAorICAgKiAgICAgaXQoJ3Nob3VsZCBvdmVycmlkZSBhIHZlcnNpb24gYW5kIHRl
c3QgdGhlIG5ldyB2ZXJzaW9uIGlzIGluamVjdGVkJywgZnVuY3Rpb24oKSB7CisgICAqICAgICAg
IC8vIG1vZHVsZSgpIHRha2VzIGZ1bmN0aW9ucyBvciBzdHJpbmdzIChtb2R1bGUgYWxpYXNlcykK
KyAgICogICAgICAgbW9kdWxlKGZ1bmN0aW9uKCRwcm92aWRlKSB7CisgICAqICAgICAgICAgJHBy
b3ZpZGUudmFsdWUoJ3ZlcnNpb24nLCAnb3ZlcnJpZGRlbicpOyAvLyBvdmVycmlkZSB2ZXJzaW9u
IGhlcmUKKyAgICogICAgICAgfSk7CisgICAqCisgICAqICAgICAgIGluamVjdChmdW5jdGlvbih2
ZXJzaW9uKSB7CisgICAqICAgICAgICAgZXhwZWN0KHZlcnNpb24pLnRvRXF1YWwoJ292ZXJyaWRk
ZW4nKTsKKyAgICogICAgICAgfSk7CisgICAqICAgICB9KTsKKyAgICogICB9KTsKKyAgICoKKyAg
ICogYGBgCisgICAqCisgICAqIEBwYXJhbSB7Li4uRnVuY3Rpb259IGZucyBhbnkgbnVtYmVyIG9m
IGZ1bmN0aW9ucyB3aGljaCB3aWxsIGJlIGluamVjdGVkIHVzaW5nIHRoZSBpbmplY3Rvci4KKyAg
ICovCisKKworCisgIHZhciBFcnJvckFkZGluZ0RlY2xhcmF0aW9uTG9jYXRpb25TdGFjayA9IGZ1
bmN0aW9uIEVycm9yQWRkaW5nRGVjbGFyYXRpb25Mb2NhdGlvblN0YWNrKGUsIGVycm9yRm9yU3Rh
Y2spIHsKKyAgICB0aGlzLm1lc3NhZ2UgPSBlLm1lc3NhZ2U7CisgICAgdGhpcy5uYW1lID0gZS5u
YW1lOworICAgIGlmIChlLmxpbmUpIHRoaXMubGluZSA9IGUubGluZTsKKyAgICBpZiAoZS5zb3Vy
Y2VJZCkgdGhpcy5zb3VyY2VJZCA9IGUuc291cmNlSWQ7CisgICAgaWYgKGUuc3RhY2sgJiYgZXJy
b3JGb3JTdGFjaykKKyAgICAgIHRoaXMuc3RhY2sgPSBlLnN0YWNrICsgJ1xuJyArIGVycm9yRm9y
U3RhY2suc3RhY2s7CisgICAgaWYgKGUuc3RhY2tBcnJheSkgdGhpcy5zdGFja0FycmF5ID0gZS5z
dGFja0FycmF5OworICB9OworICBFcnJvckFkZGluZ0RlY2xhcmF0aW9uTG9jYXRpb25TdGFjay5w
cm90b3R5cGUgPSBFcnJvci5wcm90b3R5cGU7CisKKyAgd2luZG93LmluamVjdCA9IGFuZ3VsYXIu
bW9jay5pbmplY3QgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgYmxvY2tGbnMgPSBBcnJheS5wcm90
b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApOworICAgIHZhciBlcnJvckZvclN0YWNrID0g
bmV3IEVycm9yKCdEZWNsYXJhdGlvbiBMb2NhdGlvbicpOworICAgIC8vIElFMTArIGFuZCBQaGFu
dGhvbUpTIGRvIG5vdCBzZXQgc3RhY2sgdHJhY2UgaW5mb3JtYXRpb24sIHVudGlsIHRoZSBlcnJv
ciBpcyB0aHJvd24KKyAgICBpZiAoIWVycm9yRm9yU3RhY2suc3RhY2spIHsKKyAgICAgIHRyeSB7
CisgICAgICAgIHRocm93IGVycm9yRm9yU3RhY2s7CisgICAgICB9IGNhdGNoIChlKSB7IC8qIGVt
cHR5ICovIH0KKyAgICB9CisgICAgcmV0dXJuIHdhc0luamVjdG9yQ3JlYXRlZCgpID8gV29ya0Zu
LmNhbGwoY3VycmVudFNwZWMpIDogV29ya0ZuOworICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLwor
ICAgIGZ1bmN0aW9uIFdvcmtGbigpIHsKKyAgICAgIHZhciBtb2R1bGVzID0gY3VycmVudFNwZWMu
JG1vZHVsZXMgfHwgW107CisgICAgICB2YXIgc3RyaWN0RGkgPSAhIWN1cnJlbnRTcGVjLiRpbmpl
Y3RvclN0cmljdDsKKyAgICAgIG1vZHVsZXMudW5zaGlmdChbJyRpbmplY3RvcicsIGZ1bmN0aW9u
KCRpbmplY3RvcikgeworICAgICAgICBjdXJyZW50U3BlYy4kcHJvdmlkZXJJbmplY3RvciA9ICRp
bmplY3RvcjsKKyAgICAgIH1dKTsKKyAgICAgIG1vZHVsZXMudW5zaGlmdCgnbmdNb2NrJyk7Cisg
ICAgICBtb2R1bGVzLnVuc2hpZnQoJ25nJyk7CisgICAgICB2YXIgaW5qZWN0b3IgPSBjdXJyZW50
U3BlYy4kaW5qZWN0b3I7CisgICAgICBpZiAoIWluamVjdG9yKSB7CisgICAgICAgIGlmIChzdHJp
Y3REaSkgeworICAgICAgICAgIC8vIElmIHN0cmljdERpIGlzIGVuYWJsZWQsIGFubm90YXRlIHRo
ZSBwcm92aWRlckluamVjdG9yIGJsb2NrcworICAgICAgICAgIGFuZ3VsYXIuZm9yRWFjaChtb2R1
bGVzLCBmdW5jdGlvbihtb2R1bGVGbikgeworICAgICAgICAgICAgaWYgKHR5cGVvZiBtb2R1bGVG
biA9PT0gJ2Z1bmN0aW9uJykgeworICAgICAgICAgICAgICBhbmd1bGFyLmluamVjdG9yLiQkYW5u
b3RhdGUobW9kdWxlRm4pOworICAgICAgICAgICAgfQorICAgICAgICAgIH0pOworICAgICAgICB9
CisgICAgICAgIGluamVjdG9yID0gY3VycmVudFNwZWMuJGluamVjdG9yID0gYW5ndWxhci5pbmpl
Y3Rvcihtb2R1bGVzLCBzdHJpY3REaSk7CisgICAgICAgIGN1cnJlbnRTcGVjLiRpbmplY3RvclN0
cmljdCA9IHN0cmljdERpOworICAgICAgfQorICAgICAgZm9yICh2YXIgaSA9IDAsIGlpID0gYmxv
Y2tGbnMubGVuZ3RoOyBpIDwgaWk7IGkrKykgeworICAgICAgICBpZiAoY3VycmVudFNwZWMuJGlu
amVjdG9yU3RyaWN0KSB7CisgICAgICAgICAgLy8gSWYgdGhlIGluamVjdG9yIGlzIHN0cmljdCAv
IHN0cmljdERpLCBhbmQgdGhlIHNwZWMgd2FudHMgdG8gaW5qZWN0IHVzaW5nIGF1dG9tYXRpYwor
ICAgICAgICAgIC8vIGFubm90YXRpb24sIHRoZW4gYW5ub3RhdGUgdGhlIGZ1bmN0aW9uIGhlcmUu
CisgICAgICAgICAgaW5qZWN0b3IuYW5ub3RhdGUoYmxvY2tGbnNbaV0pOworICAgICAgICB9Cisg
ICAgICAgIHRyeSB7CisgICAgICAgICAgaW5qZWN0b3IuaW52b2tlKGJsb2NrRm5zW2ldIHx8IGFu
Z3VsYXIubm9vcCwgdGhpcyk7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICBpZiAo
ZS5zdGFjayAmJiBlcnJvckZvclN0YWNrKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3JB
ZGRpbmdEZWNsYXJhdGlvbkxvY2F0aW9uU3RhY2soZSwgZXJyb3JGb3JTdGFjayk7CisgICAgICAg
ICAgfQorICAgICAgICAgIHRocm93IGU7CisgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAg
ZXJyb3JGb3JTdGFjayA9IG51bGw7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgIH07CisK
KworICBhbmd1bGFyLm1vY2suaW5qZWN0LnN0cmljdERpID0gZnVuY3Rpb24odmFsdWUpIHsKKyAg
ICB2YWx1ZSA9IGFyZ3VtZW50cy5sZW5ndGggPyAhIXZhbHVlIDogdHJ1ZTsKKyAgICByZXR1cm4g
d2FzSW5qZWN0b3JDcmVhdGVkKCkgPyB3b3JrRm4oKSA6IHdvcmtGbjsKKworICAgIGZ1bmN0aW9u
IHdvcmtGbigpIHsKKyAgICAgIGlmICh2YWx1ZSAhPT0gY3VycmVudFNwZWMuJGluamVjdG9yU3Ry
aWN0KSB7CisgICAgICAgIGlmIChjdXJyZW50U3BlYy4kaW5qZWN0b3IpIHsKKyAgICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoJ0luamVjdG9yIGFscmVhZHkgY3JlYXRlZCwgY2FuIG5vdCBtb2RpZnkg
c3RyaWN0IGFubm90YXRpb25zJyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgY3VycmVu
dFNwZWMuJGluamVjdG9yU3RyaWN0ID0gdmFsdWU7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9
CisgIH07CisKKyAgZnVuY3Rpb24gSW5qZWN0b3JTdGF0ZSgpIHsKKyAgICB0aGlzLnNoYXJlZCA9
IGZhbHNlOworICAgIHRoaXMuc2hhcmVkRXJyb3IgPSBudWxsOworCisgICAgdGhpcy5jbGVhbnVw
QWZ0ZXJFYWNoID0gZnVuY3Rpb24oKSB7CisgICAgICByZXR1cm4gIXRoaXMuc2hhcmVkIHx8IHRo
aXMuc2hhcmVkRXJyb3I7CisgICAgfTsKKyAgfQorfSkod2luZG93Lmphc21pbmUgfHwgd2luZG93
Lm1vY2hhKTsKKworCit9KSh3aW5kb3csIHdpbmRvdy5hbmd1bGFyKTsKZGlmZiAtLWdpdCBhL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2FuZ3VsYXJqcy9ub2RlX21vZHVsZXMvYW5ndWxhci1tb2Nrcy9ib3dlci5qc29u
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL25vZGVfbW9kdWxlcy9hbmd1bGFyLW1vY2tzL2Jvd2Vy
Lmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uY2I5ZTJiYTc0MDJhNTI5ODA0ZTA1YzdkZGU5NzMzNDQwYjFiN2Zm
ZQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ub2RlX21vZHVsZXMv
YW5ndWxhci1tb2Nrcy9ib3dlci5qc29uCkBAIC0wLDAgKzEsMTAgQEAKK3sKKyAgIm5hbWUiOiAi
YW5ndWxhci1tb2NrcyIsCisgICJ2ZXJzaW9uIjogIjEuNS45IiwKKyAgImxpY2Vuc2UiOiAiTUlU
IiwKKyAgIm1haW4iOiAiLi9hbmd1bGFyLW1vY2tzLmpzIiwKKyAgImlnbm9yZSI6IFtdLAorICAi
ZGVwZW5kZW5jaWVzIjogeworICAgICJhbmd1bGFyIjogIjEuNS45IgorICB9Cit9CmRpZmYgLS1n
aXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvbm9kZV9tb2R1bGVzL2FuZ3VsYXItbW9ja3MvbmdB
bmltYXRlTW9jay5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ub2RlX21vZHVsZXMvYW5ndWxh
ci1tb2Nrcy9uZ0FuaW1hdGVNb2NrLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZmOTllNjJlZjZhMDc0OGM3OTQ4
YjRiNDU4ODBlNmFhZGRhMTk5NTcKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1
bGFyanMvbm9kZV9tb2R1bGVzL2FuZ3VsYXItbW9ja3MvbmdBbmltYXRlTW9jay5qcwpAQCAtMCww
ICsxLDIgQEAKK3JlcXVpcmUoJy4vYW5ndWxhci1tb2NrcycpOworbW9kdWxlLmV4cG9ydHMgPSAn
bmdBbmltYXRlTW9jayc7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvbm9kZV9t
b2R1bGVzL2FuZ3VsYXItbW9ja3MvbmdNb2NrLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL25v
ZGVfbW9kdWxlcy9hbmd1bGFyLW1vY2tzL25nTW9jay5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43OTQ0ZGU3ZDVi
MWQ5ODM3YTRkYzg5MGNlM2NmMGRiYzEzYzQ1ZWIwCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvYW5ndWxhcmpzL25vZGVfbW9kdWxlcy9hbmd1bGFyLW1vY2tzL25nTW9jay5qcwpAQCAt
MCwwICsxLDIgQEAKK3JlcXVpcmUoJy4vYW5ndWxhci1tb2NrcycpOworbW9kdWxlLmV4cG9ydHMg
PSAnbmdNb2NrJzsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ub2RlX21vZHVs
ZXMvYW5ndWxhci1tb2Nrcy9uZ01vY2tFMkUuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvbm9k
ZV9tb2R1bGVzL2FuZ3VsYXItbW9ja3MvbmdNb2NrRTJFLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZjMmU1Mzlk
YmRjNDkzMjI0MWQzZTg1YjFmMDYyNzljNGE1MmRiYzAKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9hbmd1bGFyanMvbm9kZV9tb2R1bGVzL2FuZ3VsYXItbW9ja3MvbmdNb2NrRTJFLmpz
CkBAIC0wLDAgKzEsMiBAQAorcmVxdWlyZSgnLi9hbmd1bGFyLW1vY2tzJyk7Cittb2R1bGUuZXhw
b3J0cyA9ICduZ01vY2tFMkUnOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL25v
ZGVfbW9kdWxlcy9hbmd1bGFyLW1vY2tzL3BhY2thZ2UuanNvbiBiL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3Vs
YXJqcy9ub2RlX21vZHVsZXMvYW5ndWxhci1tb2Nrcy9wYWNrYWdlLmpzb24KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDNlOWVkMWFjYmRlYWZkOTNkMTE2YjkyM2FjODQ2ODc1OTc5ZmM3NAotLS0gL2Rldi9udWxsCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ub2RlX21vZHVsZXMvYW5ndWxhci1tb2Nrcy9wYWNr
YWdlLmpzb24KQEAgLTAsMCArMSwxMDUgQEAKK3sKKyAgIl9hcmdzIjogWworICAgIFsKKyAgICAg
IHsKKyAgICAgICAgInJhdyI6ICJhbmd1bGFyLW1vY2tzQF4xLjMuMTIiLAorICAgICAgICAic2Nv
cGUiOiBudWxsLAorICAgICAgICAiZXNjYXBlZE5hbWUiOiAiYW5ndWxhci1tb2NrcyIsCisgICAg
ICAgICJuYW1lIjogImFuZ3VsYXItbW9ja3MiLAorICAgICAgICAicmF3U3BlYyI6ICJeMS4zLjEy
IiwKKyAgICAgICAgInNwZWMiOiAiPj0xLjMuMTIgPDIuMC4wIiwKKyAgICAgICAgInR5cGUiOiAi
cmFuZ2UiCisgICAgICB9LAorICAgICAgIi9Vc2Vycy9hZGR5by9wcm9qZWN0cy9zcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzIgorICAg
IF0KKyAgXSwKKyAgIl9mcm9tIjogImFuZ3VsYXItbW9ja3NAPj0xLjMuMTIgPDIuMC4wIiwKKyAg
Il9pZCI6ICJhbmd1bGFyLW1vY2tzQDEuNS45IiwKKyAgIl9pbkNhY2hlIjogdHJ1ZSwKKyAgIl9s
b2NhdGlvbiI6ICIvYW5ndWxhci1tb2NrcyIsCisgICJfbm9kZVZlcnNpb24iOiAiNC40LjciLAor
ICAiX25wbU9wZXJhdGlvbmFsSW50ZXJuYWwiOiB7CisgICAgImhvc3QiOiAicGFja2FnZXMtMTIt
d2VzdC5pbnRlcm5hbC5ucG1qcy5jb20iLAorICAgICJ0bXAiOiAidG1wL2FuZ3VsYXItbW9ja3Mt
MS41LjkudGd6XzE0ODAwMTg2OTk4NTRfMC4wNzAzMjI4MDc0MTI1OTQ1NiIKKyAgfSwKKyAgIl9u
cG1Vc2VyIjogeworICAgICJuYW1lIjogImFuZ3VsYXJjb3JlIiwKKyAgICAiZW1haWwiOiAiYW5n
dWxhci1jb3JlK25wbUBnb29nbGUuY29tIgorICB9LAorICAiX25wbVZlcnNpb24iOiAiMi4xNS44
IiwKKyAgIl9waGFudG9tQ2hpbGRyZW4iOiB7fSwKKyAgIl9yZXF1ZXN0ZWQiOiB7CisgICAgInJh
dyI6ICJhbmd1bGFyLW1vY2tzQF4xLjMuMTIiLAorICAgICJzY29wZSI6IG51bGwsCisgICAgImVz
Y2FwZWROYW1lIjogImFuZ3VsYXItbW9ja3MiLAorICAgICJuYW1lIjogImFuZ3VsYXItbW9ja3Mi
LAorICAgICJyYXdTcGVjIjogIl4xLjMuMTIiLAorICAgICJzcGVjIjogIj49MS4zLjEyIDwyLjAu
MCIsCisgICAgInR5cGUiOiAicmFuZ2UiCisgIH0sCisgICJfcmVxdWlyZWRCeSI6IFsKKyAgICAi
I0RFVjovIgorICBdLAorICAiX3Jlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3Jn
L2FuZ3VsYXItbW9ja3MvLS9hbmd1bGFyLW1vY2tzLTEuNS45LnRneiIsCisgICJfc2hhc3VtIjog
IjVkNmQ2YjM3ODczZDZjNTllMzJlMTk1ZjVkZTE2MWY0YTNmMmY3ZTgiLAorICAiX3Nocmlua3dy
YXAiOiBudWxsLAorICAiX3NwZWMiOiAiYW5ndWxhci1tb2Nrc0BeMS4zLjEyIiwKKyAgIl93aGVy
ZSI6ICIvVXNlcnMvYWRkeW8vcHJvamVjdHMvc3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcyIsCisgICJhdXRob3IiOiB7CisgICAgIm5h
bWUiOiAiQW5ndWxhciBDb3JlIFRlYW0iLAorICAgICJlbWFpbCI6ICJhbmd1bGFyLWNvcmUrbnBt
QGdvb2dsZS5jb20iCisgIH0sCisgICJidWdzIjogeworICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRo
dWIuY29tL2FuZ3VsYXIvYW5ndWxhci5qcy9pc3N1ZXMiCisgIH0sCisgICJkZXBlbmRlbmNpZXMi
OiB7fSwKKyAgImRlc2NyaXB0aW9uIjogIkFuZ3VsYXJKUyBtb2NrcyBmb3IgdGVzdGluZyIsCisg
ICJkZXZEZXBlbmRlbmNpZXMiOiB7fSwKKyAgImRpcmVjdG9yaWVzIjoge30sCisgICJkaXN0Ijog
eworICAgICJzaGFzdW0iOiAiNWQ2ZDZiMzc4NzNkNmM1OWUzMmUxOTVmNWRlMTYxZjRhM2YyZjdl
OCIsCisgICAgInRhcmJhbGwiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYW5ndWxhci1t
b2Nrcy8tL2FuZ3VsYXItbW9ja3MtMS41LjkudGd6IgorICB9LAorICAiZ2l0SGVhZCI6ICI5NjZi
NzQ0ZGFlZWU1MDNmY2RkMDVkM2ZmMjZiMDAwNzI4MWUwNWNkIiwKKyAgImhvbWVwYWdlIjogImh0
dHA6Ly9hbmd1bGFyanMub3JnIiwKKyAgImpzcG0iOiB7CisgICAgInNoaW0iOiB7CisgICAgICAi
YW5ndWxhci1tb2NrcyI6IHsKKyAgICAgICAgImRlcHMiOiBbCisgICAgICAgICAgImFuZ3VsYXIi
CisgICAgICAgIF0KKyAgICAgIH0KKyAgICB9CisgIH0sCisgICJrZXl3b3JkcyI6IFsKKyAgICAi
YW5ndWxhciIsCisgICAgImZyYW1ld29yayIsCisgICAgImJyb3dzZXIiLAorICAgICJtb2NrcyIs
CisgICAgInRlc3RpbmciLAorICAgICJjbGllbnQtc2lkZSIKKyAgXSwKKyAgImxpY2Vuc2UiOiAi
TUlUIiwKKyAgIm1haW4iOiAiYW5ndWxhci1tb2Nrcy5qcyIsCisgICJtYWludGFpbmVycyI6IFsK
KyAgICB7CisgICAgICAibmFtZSI6ICJhbmd1bGFyY29yZSIsCisgICAgICAiZW1haWwiOiAiYW5n
dWxhci1jb3JlK25wbUBnb29nbGUuY29tIgorICAgIH0sCisgICAgeworICAgICAgIm5hbWUiOiAi
cGV0ZWJkIiwKKyAgICAgICJlbWFpbCI6ICJwZXRlQGJhY29uZGFyd2luLmNvbSIKKyAgICB9Cisg
IF0sCisgICJuYW1lIjogImFuZ3VsYXItbW9ja3MiLAorICAib3B0aW9uYWxEZXBlbmRlbmNpZXMi
OiB7fSwKKyAgInJlYWRtZSI6ICJFUlJPUjogTm8gUkVBRE1FIGRhdGEgZm91bmQhIiwKKyAgInJl
cG9zaXRvcnkiOiB7CisgICAgInR5cGUiOiAiZ2l0IiwKKyAgICAidXJsIjogImdpdCtodHRwczov
L2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyLmpzLmdpdCIKKyAgfSwKKyAgInNjcmlwdHMiOiB7
CisgICAgInRlc3QiOiAiZWNobyBcIkVycm9yOiBubyB0ZXN0IHNwZWNpZmllZFwiICYmIGV4aXQg
MSIKKyAgfSwKKyAgInZlcnNpb24iOiAiMS41LjkiCit9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9hbmd1bGFyanMvbm9kZV9tb2R1bGVzL2FuZ3VsYXItcmVzb3VyY2UvTElDRU5TRS5tZCBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2FuZ3VsYXJqcy9ub2RlX21vZHVsZXMvYW5ndWxhci1yZXNvdXJjZS9MSUNFTlNF
Lm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjJjMzk1ZWVmMWJhZTZhMTY3MmQ3MjE2Y2Q2NzMxNWJmMDczNDE5OGMK
LS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvbm9kZV9tb2R1bGVzL2Fu
Z3VsYXItcmVzb3VyY2UvTElDRU5TRS5tZApAQCAtMCwwICsxLDIxIEBACitUaGUgTUlUIExpY2Vu
c2UgKE1JVCkKKworQ29weXJpZ2h0IChjKSAyMDE2IEFuZ3VsYXIKKworUGVybWlzc2lvbiBpcyBo
ZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEg
Y29weQorb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVz
ICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKK2luIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3Ry
aWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKK3RvIHVzZSwg
Y29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5k
L29yIHNlbGwKK2NvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0
byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKworVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5k
IHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsCitjb3BpZXMg
b3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorCitUSEUgU09GVFdBUkUg
SVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVT
UyBPUgorSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFksCitGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
TkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKK0FVVEhPUlMgT1IgQ09Q
WVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIK
K0xJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RI
RVJXSVNFLCBBUklTSU5HIEZST00sCitPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBT
T0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQorU09GVFdBUkUuCmRp
ZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvbm9kZV9tb2R1bGVzL2FuZ3VsYXItcmVz
b3VyY2UvUkVBRE1FLm1kIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL25vZGVfbW9kdWxlcy9hbmd1
bGFyLXJlc291cmNlL1JFQURNRS5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mM2JkMTE5Y2UyMmI5ZmRkMzRjNDc4
ZTUyM2U2NzYyOTRkN2Q3NTAwCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxh
cmpzL25vZGVfbW9kdWxlcy9hbmd1bGFyLXJlc291cmNlL1JFQURNRS5tZApAQCAtMCwwICsxLDY4
IEBACisjIHBhY2thZ2VkIGFuZ3VsYXItcmVzb3VyY2UKKworVGhpcyByZXBvIGlzIGZvciBkaXN0
cmlidXRpb24gb24gYG5wbWAgYW5kIGBib3dlcmAuIFRoZSBzb3VyY2UgZm9yIHRoaXMgbW9kdWxl
IGlzIGluIHRoZQorW21haW4gQW5ndWxhckpTIHJlcG9dKGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1
bGFyL2FuZ3VsYXIuanMvdHJlZS9tYXN0ZXIvc3JjL25nUmVzb3VyY2UpLgorUGxlYXNlIGZpbGUg
aXNzdWVzIGFuZCBwdWxsIHJlcXVlc3RzIGFnYWluc3QgdGhhdCByZXBvLgorCisjIyBJbnN0YWxs
CisKK1lvdSBjYW4gaW5zdGFsbCB0aGlzIHBhY2thZ2UgZWl0aGVyIHdpdGggYG5wbWAgb3Igd2l0
aCBgYm93ZXJgLgorCisjIyMgbnBtCisKK2BgYHNoZWxsCitucG0gaW5zdGFsbCBhbmd1bGFyLXJl
c291cmNlCitgYGAKKworVGhlbiBhZGQgYG5nUmVzb3VyY2VgIGFzIGEgZGVwZW5kZW5jeSBmb3Ig
eW91ciBhcHA6CisKK2BgYGphdmFzY3JpcHQKK2FuZ3VsYXIubW9kdWxlKCdteUFwcCcsIFtyZXF1
aXJlKCdhbmd1bGFyLXJlc291cmNlJyldKTsKK2BgYAorCisjIyMgYm93ZXIKKworYGBgc2hlbGwK
K2Jvd2VyIGluc3RhbGwgYW5ndWxhci1yZXNvdXJjZQorYGBgCisKK0FkZCBhIGA8c2NyaXB0PmAg
dG8geW91ciBgaW5kZXguaHRtbGA6CisKK2BgYGh0bWwKKzxzY3JpcHQgc3JjPSIvYm93ZXJfY29t
cG9uZW50cy9hbmd1bGFyLXJlc291cmNlL2FuZ3VsYXItcmVzb3VyY2UuanMiPjwvc2NyaXB0Pgor
YGBgCisKK1RoZW4gYWRkIGBuZ1Jlc291cmNlYCBhcyBhIGRlcGVuZGVuY3kgZm9yIHlvdXIgYXBw
OgorCitgYGBqYXZhc2NyaXB0Cithbmd1bGFyLm1vZHVsZSgnbXlBcHAnLCBbJ25nUmVzb3VyY2Un
XSk7CitgYGAKKworIyMgRG9jdW1lbnRhdGlvbgorCitEb2N1bWVudGF0aW9uIGlzIGF2YWlsYWJs
ZSBvbiB0aGUKK1tBbmd1bGFySlMgZG9jcyBzaXRlXShodHRwOi8vZG9jcy5hbmd1bGFyanMub3Jn
L2FwaS9uZ1Jlc291cmNlKS4KKworIyMgTGljZW5zZQorCitUaGUgTUlUIExpY2Vuc2UKKworQ29w
eXJpZ2h0IChjKSAyMDEwLTIwMTUgR29vZ2xlLCBJbmMuIGh0dHA6Ly9hbmd1bGFyanMub3JnCisK
K1Blcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVy
c29uIG9idGFpbmluZyBhIGNvcHkKK29mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9j
dW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCitpbiB0aGUgU29mdHdh
cmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUg
cmlnaHRzCit0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUs
IHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCitjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8g
cGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKK2Z1cm5pc2hlZCB0byBkbyBz
bywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisKK1RoZSBhYm92ZSBjb3B5
cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVk
IGluCithbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4K
KworVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0Yg
QU5ZIEtJTkQsIEVYUFJFU1MgT1IKK0lNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQg
VE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
CitBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBE
QU1BR0VTIE9SIE9USEVSCitMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRS
QUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAorT1VUIE9GIE9SIElOIENPTk5F
Q1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgor
VEhFIFNPRlRXQVJFLgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL25vZGVfbW9k
dWxlcy9hbmd1bGFyLXJlc291cmNlL2FuZ3VsYXItcmVzb3VyY2UuanMgYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9h
bmd1bGFyanMvbm9kZV9tb2R1bGVzL2FuZ3VsYXItcmVzb3VyY2UvYW5ndWxhci1yZXNvdXJjZS5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42YzQxYzM5YTU3YjBmNGJhYjYzNmVmMjVhMTVlOGJiMzVlYzlkMDdlCi0t
LSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL25vZGVfbW9kdWxlcy9hbmd1
bGFyLXJlc291cmNlL2FuZ3VsYXItcmVzb3VyY2UuanMKQEAgLTAsMCArMSw4NjEgQEAKKy8qKgor
ICogQGxpY2Vuc2UgQW5ndWxhckpTIHYxLjUuOQorICogKGMpIDIwMTAtMjAxNiBHb29nbGUsIElu
Yy4gaHR0cDovL2FuZ3VsYXJqcy5vcmcKKyAqIExpY2Vuc2U6IE1JVAorICovCisoZnVuY3Rpb24o
d2luZG93LCBhbmd1bGFyKSB7J3VzZSBzdHJpY3QnOworCit2YXIgJHJlc291cmNlTWluRXJyID0g
YW5ndWxhci4kJG1pbkVycignJHJlc291cmNlJyk7CisKKy8vIEhlbHBlciBmdW5jdGlvbnMgYW5k
IHJlZ2V4IHRvIGxvb2t1cCBhIGRvdHRlZCBwYXRoIG9uIGFuIG9iamVjdAorLy8gc3RvcHBpbmcg
YXQgdW5kZWZpbmVkL251bGwuICBUaGUgcGF0aCBtdXN0IGJlIGNvbXBvc2VkIG9mIEFTQ0lJCisv
LyBpZGVudGlmaWVycyAoanVzdCBsaWtlICRwYXJzZSkKK3ZhciBNRU1CRVJfTkFNRV9SRUdFWCA9
IC9eKFwuW2EtekEtWl8kQF1bMC05YS16QS1aXyRAXSopKyQvOworCitmdW5jdGlvbiBpc1ZhbGlk
RG90dGVkUGF0aChwYXRoKSB7CisgIHJldHVybiAocGF0aCAhPSBudWxsICYmIHBhdGggIT09ICcn
ICYmIHBhdGggIT09ICdoYXNPd25Qcm9wZXJ0eScgJiYKKyAgICAgIE1FTUJFUl9OQU1FX1JFR0VY
LnRlc3QoJy4nICsgcGF0aCkpOworfQorCitmdW5jdGlvbiBsb29rdXBEb3R0ZWRQYXRoKG9iaiwg
cGF0aCkgeworICBpZiAoIWlzVmFsaWREb3R0ZWRQYXRoKHBhdGgpKSB7CisgICAgdGhyb3cgJHJl
c291cmNlTWluRXJyKCdiYWRtZW1iZXInLCAnRG90dGVkIG1lbWJlciBwYXRoICJAezB9IiBpcyBp
bnZhbGlkLicsIHBhdGgpOworICB9CisgIHZhciBrZXlzID0gcGF0aC5zcGxpdCgnLicpOworICBm
b3IgKHZhciBpID0gMCwgaWkgPSBrZXlzLmxlbmd0aDsgaSA8IGlpICYmIGFuZ3VsYXIuaXNEZWZp
bmVkKG9iaik7IGkrKykgeworICAgIHZhciBrZXkgPSBrZXlzW2ldOworICAgIG9iaiA9IChvYmog
IT09IG51bGwpID8gb2JqW2tleV0gOiB1bmRlZmluZWQ7CisgIH0KKyAgcmV0dXJuIG9iajsKK30K
KworLyoqCisgKiBDcmVhdGUgYSBzaGFsbG93IGNvcHkgb2YgYW4gb2JqZWN0IGFuZCBjbGVhciBv
dGhlciBmaWVsZHMgZnJvbSB0aGUgZGVzdGluYXRpb24KKyAqLworZnVuY3Rpb24gc2hhbGxvd0Ns
ZWFyQW5kQ29weShzcmMsIGRzdCkgeworICBkc3QgPSBkc3QgfHwge307CisKKyAgYW5ndWxhci5m
b3JFYWNoKGRzdCwgZnVuY3Rpb24odmFsdWUsIGtleSkgeworICAgIGRlbGV0ZSBkc3Rba2V5XTsK
KyAgfSk7CisKKyAgZm9yICh2YXIga2V5IGluIHNyYykgeworICAgIGlmIChzcmMuaGFzT3duUHJv
cGVydHkoa2V5KSAmJiAhKGtleS5jaGFyQXQoMCkgPT09ICckJyAmJiBrZXkuY2hhckF0KDEpID09
PSAnJCcpKSB7CisgICAgICBkc3Rba2V5XSA9IHNyY1trZXldOworICAgIH0KKyAgfQorCisgIHJl
dHVybiBkc3Q7Cit9CisKKy8qKgorICogQG5nZG9jIG1vZHVsZQorICogQG5hbWUgbmdSZXNvdXJj
ZQorICogQGRlc2NyaXB0aW9uCisgKgorICogIyBuZ1Jlc291cmNlCisgKgorICogVGhlIGBuZ1Jl
c291cmNlYCBtb2R1bGUgcHJvdmlkZXMgaW50ZXJhY3Rpb24gc3VwcG9ydCB3aXRoIFJFU1RmdWwg
c2VydmljZXMKKyAqIHZpYSB0aGUgJHJlc291cmNlIHNlcnZpY2UuCisgKgorICoKKyAqIDxkaXYg
ZG9jLW1vZHVsZS1jb21wb25lbnRzPSJuZ1Jlc291cmNlIj48L2Rpdj4KKyAqCisgKiBTZWUge0Bs
aW5rIG5nUmVzb3VyY2UuJHJlc291cmNlUHJvdmlkZXJ9IGFuZCB7QGxpbmsgbmdSZXNvdXJjZS4k
cmVzb3VyY2V9IGZvciB1c2FnZS4KKyAqLworCisvKioKKyAqIEBuZ2RvYyBwcm92aWRlcgorICog
QG5hbWUgJHJlc291cmNlUHJvdmlkZXIKKyAqCisgKiBAZGVzY3JpcHRpb24KKyAqCisgKiBVc2Ug
YCRyZXNvdXJjZVByb3ZpZGVyYCB0byBjaGFuZ2UgdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgdGhl
IHtAbGluayBuZ1Jlc291cmNlLiRyZXNvdXJjZX0KKyAqIHNlcnZpY2UuCisgKgorICogIyMgRGVw
ZW5kZW5jaWVzCisgKiBSZXF1aXJlcyB0aGUge0BsaW5rIG5nUmVzb3VyY2UgfSBtb2R1bGUgdG8g
YmUgaW5zdGFsbGVkLgorICoKKyAqLworCisvKioKKyAqIEBuZ2RvYyBzZXJ2aWNlCisgKiBAbmFt
ZSAkcmVzb3VyY2UKKyAqIEByZXF1aXJlcyAkaHR0cAorICogQHJlcXVpcmVzIG5nLiRsb2cKKyAq
IEByZXF1aXJlcyAkcQorICogQHJlcXVpcmVzIG5nLiR0aW1lb3V0CisgKgorICogQGRlc2NyaXB0
aW9uCisgKiBBIGZhY3Rvcnkgd2hpY2ggY3JlYXRlcyBhIHJlc291cmNlIG9iamVjdCB0aGF0IGxl
dHMgeW91IGludGVyYWN0IHdpdGgKKyAqIFtSRVNUZnVsXShodHRwOi8vZW4ud2lraXBlZGlhLm9y
Zy93aWtpL1JlcHJlc2VudGF0aW9uYWxfU3RhdGVfVHJhbnNmZXIpIHNlcnZlci1zaWRlIGRhdGEg
c291cmNlcy4KKyAqCisgKiBUaGUgcmV0dXJuZWQgcmVzb3VyY2Ugb2JqZWN0IGhhcyBhY3Rpb24g
bWV0aG9kcyB3aGljaCBwcm92aWRlIGhpZ2gtbGV2ZWwgYmVoYXZpb3JzIHdpdGhvdXQKKyAqIHRo
ZSBuZWVkIHRvIGludGVyYWN0IHdpdGggdGhlIGxvdyBsZXZlbCB7QGxpbmsgbmcuJGh0dHAgJGh0
dHB9IHNlcnZpY2UuCisgKgorICogUmVxdWlyZXMgdGhlIHtAbGluayBuZ1Jlc291cmNlIGBuZ1Jl
c291cmNlYH0gbW9kdWxlIHRvIGJlIGluc3RhbGxlZC4KKyAqCisgKiBCeSBkZWZhdWx0LCB0cmFp
bGluZyBzbGFzaGVzIHdpbGwgYmUgc3RyaXBwZWQgZnJvbSB0aGUgY2FsY3VsYXRlZCBVUkxzLAor
ICogd2hpY2ggY2FuIHBvc2UgcHJvYmxlbXMgd2l0aCBzZXJ2ZXIgYmFja2VuZHMgdGhhdCBkbyBu
b3QgZXhwZWN0IHRoYXQKKyAqIGJlaGF2aW9yLiAgVGhpcyBjYW4gYmUgZGlzYWJsZWQgYnkgY29u
ZmlndXJpbmcgdGhlIGAkcmVzb3VyY2VQcm92aWRlcmAgbGlrZQorICogdGhpczoKKyAqCisgKiBg
YGBqcworICAgICBhcHAuY29uZmlnKFsnJHJlc291cmNlUHJvdmlkZXInLCBmdW5jdGlvbigkcmVz
b3VyY2VQcm92aWRlcikgeworICAgICAgIC8vIERvbid0IHN0cmlwIHRyYWlsaW5nIHNsYXNoZXMg
ZnJvbSBjYWxjdWxhdGVkIFVSTHMKKyAgICAgICAkcmVzb3VyY2VQcm92aWRlci5kZWZhdWx0cy5z
dHJpcFRyYWlsaW5nU2xhc2hlcyA9IGZhbHNlOworICAgICB9XSk7CisgKiBgYGAKKyAqCisgKiBA
cGFyYW0ge3N0cmluZ30gdXJsIEEgcGFyYW1ldGVyaXplZCBVUkwgdGVtcGxhdGUgd2l0aCBwYXJh
bWV0ZXJzIHByZWZpeGVkIGJ5IGA6YCBhcyBpbgorICogICBgL3VzZXIvOnVzZXJuYW1lYC4gSWYg
eW91IGFyZSB1c2luZyBhIFVSTCB3aXRoIGEgcG9ydCBudW1iZXIgKGUuZy4KKyAqICAgYGh0dHA6
Ly9leGFtcGxlLmNvbTo4MDgwL2FwaWApLCBpdCB3aWxsIGJlIHJlc3BlY3RlZC4KKyAqCisgKiAg
IElmIHlvdSBhcmUgdXNpbmcgYSB1cmwgd2l0aCBhIHN1ZmZpeCwganVzdCBhZGQgdGhlIHN1ZmZp
eCwgbGlrZSB0aGlzOgorICogICBgJHJlc291cmNlKCdodHRwOi8vZXhhbXBsZS5jb20vcmVzb3Vy
Y2UuanNvbicpYCBvciBgJHJlc291cmNlKCdodHRwOi8vZXhhbXBsZS5jb20vOmlkLmpzb24nKWAK
KyAqICAgb3IgZXZlbiBgJHJlc291cmNlKCdodHRwOi8vZXhhbXBsZS5jb20vcmVzb3VyY2UvOnJl
c291cmNlX2lkLjpmb3JtYXQnKWAKKyAqICAgSWYgdGhlIHBhcmFtZXRlciBiZWZvcmUgdGhlIHN1
ZmZpeCBpcyBlbXB0eSwgOnJlc291cmNlX2lkIGluIHRoaXMgY2FzZSwgdGhlbiB0aGUgYC8uYCB3
aWxsIGJlCisgKiAgIGNvbGxhcHNlZCBkb3duIHRvIGEgc2luZ2xlIGAuYC4gIElmIHlvdSBuZWVk
IHRoaXMgc2VxdWVuY2UgdG8gYXBwZWFyIGFuZCBub3QgY29sbGFwc2UgdGhlbiB5b3UKKyAqICAg
Y2FuIGVzY2FwZSBpdCB3aXRoIGAvXC5gLgorICoKKyAqIEBwYXJhbSB7T2JqZWN0PX0gcGFyYW1E
ZWZhdWx0cyBEZWZhdWx0IHZhbHVlcyBmb3IgYHVybGAgcGFyYW1ldGVycy4gVGhlc2UgY2FuIGJl
IG92ZXJyaWRkZW4gaW4KKyAqICAgYGFjdGlvbnNgIG1ldGhvZHMuIElmIGEgcGFyYW1ldGVyIHZh
bHVlIGlzIGEgZnVuY3Rpb24sIGl0IHdpbGwgYmUgY2FsbGVkIGV2ZXJ5IHRpbWUKKyAqICAgYSBw
YXJhbSB2YWx1ZSBuZWVkcyB0byBiZSBvYnRhaW5lZCBmb3IgYSByZXF1ZXN0ICh1bmxlc3MgdGhl
IHBhcmFtIHdhcyBvdmVycmlkZGVuKS4gVGhlIGZ1bmN0aW9uCisgKiAgIHdpbGwgYmUgcGFzc2Vk
IHRoZSBjdXJyZW50IGRhdGEgdmFsdWUgYXMgYW4gYXJndW1lbnQuCisgKgorICogICBFYWNoIGtl
eSB2YWx1ZSBpbiB0aGUgcGFyYW1ldGVyIG9iamVjdCBpcyBmaXJzdCBib3VuZCB0byB1cmwgdGVt
cGxhdGUgaWYgcHJlc2VudCBhbmQgdGhlbiBhbnkKKyAqICAgZXhjZXNzIGtleXMgYXJlIGFwcGVu
ZGVkIHRvIHRoZSB1cmwgc2VhcmNoIHF1ZXJ5IGFmdGVyIHRoZSBgP2AuCisgKgorICogICBHaXZl
biBhIHRlbXBsYXRlIGAvcGF0aC86dmVyYmAgYW5kIHBhcmFtZXRlciBge3ZlcmI6J2dyZWV0Jywg
c2FsdXRhdGlvbjonSGVsbG8nfWAgcmVzdWx0cyBpbgorICogICBVUkwgYC9wYXRoL2dyZWV0P3Nh
bHV0YXRpb249SGVsbG9gLgorICoKKyAqICAgSWYgdGhlIHBhcmFtZXRlciB2YWx1ZSBpcyBwcmVm
aXhlZCB3aXRoIGBAYCwgdGhlbiB0aGUgdmFsdWUgZm9yIHRoYXQgcGFyYW1ldGVyIHdpbGwgYmUK
KyAqICAgZXh0cmFjdGVkIGZyb20gdGhlIGNvcnJlc3BvbmRpbmcgcHJvcGVydHkgb24gdGhlIGBk
YXRhYCBvYmplY3QgKHByb3ZpZGVkIHdoZW4gY2FsbGluZyBhCisgKiAgICJub24tR0VUIiBhY3Rp
b24gbWV0aG9kKS4KKyAqICAgRm9yIGV4YW1wbGUsIGlmIHRoZSBgZGVmYXVsdFBhcmFtYCBvYmpl
Y3QgaXMgYHtzb21lUGFyYW06ICdAc29tZVByb3AnfWAgdGhlbiB0aGUgdmFsdWUgb2YKKyAqICAg
YHNvbWVQYXJhbWAgd2lsbCBiZSBgZGF0YS5zb21lUHJvcGAuCisgKiAgIE5vdGUgdGhhdCB0aGUg
cGFyYW1ldGVyIHdpbGwgYmUgaWdub3JlZCwgd2hlbiBjYWxsaW5nIGEgIkdFVCIgYWN0aW9uIG1l
dGhvZCAoaS5lLiBhbiBhY3Rpb24KKyAqICAgbWV0aG9kIHRoYXQgZG9lcyBub3QgYWNjZXB0IGEg
cmVxdWVzdCBib2R5KQorICoKKyAqIEBwYXJhbSB7T2JqZWN0LjxPYmplY3Q+PX0gYWN0aW9ucyBI
YXNoIHdpdGggZGVjbGFyYXRpb24gb2YgY3VzdG9tIGFjdGlvbnMgdGhhdCBzaG91bGQgZXh0ZW5k
CisgKiAgIHRoZSBkZWZhdWx0IHNldCBvZiByZXNvdXJjZSBhY3Rpb25zLiBUaGUgZGVjbGFyYXRp
b24gc2hvdWxkIGJlIGNyZWF0ZWQgaW4gdGhlIGZvcm1hdCBvZiB7QGxpbmsKKyAqICAgbmcuJGh0
dHAjdXNhZ2UgJGh0dHAuY29uZmlnfToKKyAqCisgKiAgICAgICB7YWN0aW9uMToge21ldGhvZDo/
LCBwYXJhbXM6PywgaXNBcnJheTo/LCBoZWFkZXJzOj8sIC4uLn0sCisgKiAgICAgICAgYWN0aW9u
Mjoge21ldGhvZDo/LCBwYXJhbXM6PywgaXNBcnJheTo/LCBoZWFkZXJzOj8sIC4uLn0sCisgKiAg
ICAgICAgLi4ufQorICoKKyAqICAgV2hlcmU6CisgKgorICogICAtICoqYGFjdGlvbmAqKiDigJMg
e3N0cmluZ30g4oCTIFRoZSBuYW1lIG9mIGFjdGlvbi4gVGhpcyBuYW1lIGJlY29tZXMgdGhlIG5h
bWUgb2YgdGhlIG1ldGhvZCBvbgorICogICAgIHlvdXIgcmVzb3VyY2Ugb2JqZWN0LgorICogICAt
ICoqYG1ldGhvZGAqKiDigJMge3N0cmluZ30g4oCTIENhc2UgaW5zZW5zaXRpdmUgSFRUUCBtZXRo
b2QgKGUuZy4gYEdFVGAsIGBQT1NUYCwgYFBVVGAsCisgKiAgICAgYERFTEVURWAsIGBKU09OUGAs
IGV0YykuCisgKiAgIC0gKipgcGFyYW1zYCoqIOKAkyB7T2JqZWN0PX0g4oCTIE9wdGlvbmFsIHNl
dCBvZiBwcmUtYm91bmQgcGFyYW1ldGVycyBmb3IgdGhpcyBhY3Rpb24uIElmIGFueSBvZgorICog
ICAgIHRoZSBwYXJhbWV0ZXIgdmFsdWUgaXMgYSBmdW5jdGlvbiwgaXQgd2lsbCBiZSBjYWxsZWQg
ZXZlcnkgdGltZSB3aGVuIGEgcGFyYW0gdmFsdWUgbmVlZHMgdG8KKyAqICAgICBiZSBvYnRhaW5l
ZCBmb3IgYSByZXF1ZXN0ICh1bmxlc3MgdGhlIHBhcmFtIHdhcyBvdmVycmlkZGVuKS4gVGhlIGZ1
bmN0aW9uIHdpbGwgYmUgcGFzc2VkIHRoZQorICogICAgIGN1cnJlbnQgZGF0YSB2YWx1ZSBhcyBh
biBhcmd1bWVudC4KKyAqICAgLSAqKmB1cmxgKiog4oCTIHtzdHJpbmd9IOKAkyBhY3Rpb24gc3Bl
Y2lmaWMgYHVybGAgb3ZlcnJpZGUuIFRoZSB1cmwgdGVtcGxhdGluZyBpcyBzdXBwb3J0ZWQganVz
dAorICogICAgIGxpa2UgZm9yIHRoZSByZXNvdXJjZS1sZXZlbCB1cmxzLgorICogICAtICoqYGlz
QXJyYXlgKiog4oCTIHtib29sZWFuPX0g4oCTIElmIHRydWUgdGhlbiB0aGUgcmV0dXJuZWQgb2Jq
ZWN0IGZvciB0aGlzIGFjdGlvbiBpcyBhbiBhcnJheSwKKyAqICAgICBzZWUgYHJldHVybnNgIHNl
Y3Rpb24uCisgKiAgIC0gKipgdHJhbnNmb3JtUmVxdWVzdGAqKiDigJMKKyAqICAgICBge2Z1bmN0
aW9uKGRhdGEsIGhlYWRlcnNHZXR0ZXIpfEFycmF5LjxmdW5jdGlvbihkYXRhLCBoZWFkZXJzR2V0
dGVyKT59YCDigJMKKyAqICAgICB0cmFuc2Zvcm0gZnVuY3Rpb24gb3IgYW4gYXJyYXkgb2Ygc3Vj
aCBmdW5jdGlvbnMuIFRoZSB0cmFuc2Zvcm0gZnVuY3Rpb24gdGFrZXMgdGhlIGh0dHAKKyAqICAg
ICByZXF1ZXN0IGJvZHkgYW5kIGhlYWRlcnMgYW5kIHJldHVybnMgaXRzIHRyYW5zZm9ybWVkICh0
eXBpY2FsbHkgc2VyaWFsaXplZCkgdmVyc2lvbi4KKyAqICAgICBCeSBkZWZhdWx0LCB0cmFuc2Zv
cm1SZXF1ZXN0IHdpbGwgY29udGFpbiBvbmUgZnVuY3Rpb24gdGhhdCBjaGVja3MgaWYgdGhlIHJl
cXVlc3QgZGF0YSBpcworICogICAgIGFuIG9iamVjdCBhbmQgc2VyaWFsaXplcyB0byB1c2luZyBg
YW5ndWxhci50b0pzb25gLiBUbyBwcmV2ZW50IHRoaXMgYmVoYXZpb3IsIHNldAorICogICAgIGB0
cmFuc2Zvcm1SZXF1ZXN0YCB0byBhbiBlbXB0eSBhcnJheTogYHRyYW5zZm9ybVJlcXVlc3Q6IFtd
YAorICogICAtICoqYHRyYW5zZm9ybVJlc3BvbnNlYCoqIOKAkworICogICAgIGB7ZnVuY3Rpb24o
ZGF0YSwgaGVhZGVyc0dldHRlcil8QXJyYXkuPGZ1bmN0aW9uKGRhdGEsIGhlYWRlcnNHZXR0ZXIp
Pn1gIOKAkworICogICAgIHRyYW5zZm9ybSBmdW5jdGlvbiBvciBhbiBhcnJheSBvZiBzdWNoIGZ1
bmN0aW9ucy4gVGhlIHRyYW5zZm9ybSBmdW5jdGlvbiB0YWtlcyB0aGUgaHR0cAorICogICAgIHJl
c3BvbnNlIGJvZHkgYW5kIGhlYWRlcnMgYW5kIHJldHVybnMgaXRzIHRyYW5zZm9ybWVkICh0eXBp
Y2FsbHkgZGVzZXJpYWxpemVkKSB2ZXJzaW9uLgorICogICAgIEJ5IGRlZmF1bHQsIHRyYW5zZm9y
bVJlc3BvbnNlIHdpbGwgY29udGFpbiBvbmUgZnVuY3Rpb24gdGhhdCBjaGVja3MgaWYgdGhlIHJl
c3BvbnNlIGxvb2tzCisgKiAgICAgbGlrZSBhIEpTT04gc3RyaW5nIGFuZCBkZXNlcmlhbGl6ZXMg
aXQgdXNpbmcgYGFuZ3VsYXIuZnJvbUpzb25gLiBUbyBwcmV2ZW50IHRoaXMgYmVoYXZpb3IsCisg
KiAgICAgc2V0IGB0cmFuc2Zvcm1SZXNwb25zZWAgdG8gYW4gZW1wdHkgYXJyYXk6IGB0cmFuc2Zv
cm1SZXNwb25zZTogW11gCisgKiAgIC0gKipgY2FjaGVgKiog4oCTIGB7Ym9vbGVhbnxDYWNoZX1g
IOKAkyBJZiB0cnVlLCBhIGRlZmF1bHQgJGh0dHAgY2FjaGUgd2lsbCBiZSB1c2VkIHRvIGNhY2hl
IHRoZQorICogICAgIEdFVCByZXF1ZXN0LCBvdGhlcndpc2UgaWYgYSBjYWNoZSBpbnN0YW5jZSBi
dWlsdCB3aXRoCisgKiAgICAge0BsaW5rIG5nLiRjYWNoZUZhY3RvcnkgJGNhY2hlRmFjdG9yeX0s
IHRoaXMgY2FjaGUgd2lsbCBiZSB1c2VkIGZvcgorICogICAgIGNhY2hpbmcuCisgKiAgIC0gKipg
dGltZW91dGAqKiDigJMgYHtudW1iZXJ9YCDigJMgdGltZW91dCBpbiBtaWxsaXNlY29uZHMuPGJy
IC8+CisgKiAgICAgKipOb3RlOioqIEluIGNvbnRyYXN0IHRvIHtAbGluayBuZy4kaHR0cCN1c2Fn
ZSAkaHR0cC5jb25maWd9LCB7QGxpbmsgbmcuJHEgcHJvbWlzZXN9IGFyZQorICogICAgICoqbm90
Kiogc3VwcG9ydGVkIGluICRyZXNvdXJjZSwgYmVjYXVzZSB0aGUgc2FtZSB2YWx1ZSB3b3VsZCBi
ZSB1c2VkIGZvciBtdWx0aXBsZSByZXF1ZXN0cy4KKyAqICAgICBJZiB5b3UgYXJlIGxvb2tpbmcg
Zm9yIGEgd2F5IHRvIGNhbmNlbCByZXF1ZXN0cywgeW91IHNob3VsZCB1c2UgdGhlIGBjYW5jZWxs
YWJsZWAgb3B0aW9uLgorICogICAtICoqYGNhbmNlbGxhYmxlYCoqIOKAkyBge2Jvb2xlYW59YCDi
gJMgaWYgc2V0IHRvIHRydWUsIHRoZSByZXF1ZXN0IG1hZGUgYnkgYSAibm9uLWluc3RhbmNlIiBj
YWxsCisgKiAgICAgd2lsbCBiZSBjYW5jZWxsZWQgKGlmIG5vdCBhbHJlYWR5IGNvbXBsZXRlZCkg
YnkgY2FsbGluZyBgJGNhbmNlbFJlcXVlc3QoKWAgb24gdGhlIGNhbGwncworICogICAgIHJldHVy
biB2YWx1ZS4gQ2FsbGluZyBgJGNhbmNlbFJlcXVlc3QoKWAgZm9yIGEgbm9uLWNhbmNlbGxhYmxl
IG9yIGFuIGFscmVhZHkKKyAqICAgICBjb21wbGV0ZWQvY2FuY2VsbGVkIHJlcXVlc3Qgd2lsbCBo
YXZlIG5vIGVmZmVjdC48YnIgLz4KKyAqICAgLSAqKmB3aXRoQ3JlZGVudGlhbHNgKiogLSBge2Jv
b2xlYW59YCAtIHdoZXRoZXIgdG8gc2V0IHRoZSBgd2l0aENyZWRlbnRpYWxzYCBmbGFnIG9uIHRo
ZQorICogICAgIFhIUiBvYmplY3QuIFNlZQorICogICAgIFtyZXF1ZXN0cyB3aXRoIGNyZWRlbnRp
YWxzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi9odHRwX2FjY2Vzc19jb250cm9s
I3NlY3Rpb25fNSkKKyAqICAgICBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAqICAgLSAqKmByZXNw
b25zZVR5cGVgKiogLSBge3N0cmluZ31gIC0gc2VlCisgKiAgICAgW3JlcXVlc3RUeXBlXShodHRw
czovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0RPTS9YTUxIdHRwUmVxdWVzdCNy
ZXNwb25zZVR5cGUpLgorICogICAtICoqYGludGVyY2VwdG9yYCoqIC0gYHtPYmplY3Q9fWAgLSBU
aGUgaW50ZXJjZXB0b3Igb2JqZWN0IGhhcyB0d28gb3B0aW9uYWwgbWV0aG9kcyAtCisgKiAgICAg
YHJlc3BvbnNlYCBhbmQgYHJlc3BvbnNlRXJyb3JgLiBCb3RoIGByZXNwb25zZWAgYW5kIGByZXNw
b25zZUVycm9yYCBpbnRlcmNlcHRvcnMgZ2V0IGNhbGxlZAorICogICAgIHdpdGggYGh0dHAgcmVz
cG9uc2VgIG9iamVjdC4gU2VlIHtAbGluayBuZy4kaHR0cCAkaHR0cCBpbnRlcmNlcHRvcnN9Lgor
ICoKKyAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIEhhc2ggd2l0aCBjdXN0b20gc2V0dGluZ3Mg
dGhhdCBzaG91bGQgZXh0ZW5kIHRoZQorICogICBkZWZhdWx0IGAkcmVzb3VyY2VQcm92aWRlcmAg
YmVoYXZpb3IuICBUaGUgc3VwcG9ydGVkIG9wdGlvbnMgYXJlOgorICoKKyAqICAgLSAqKmBzdHJp
cFRyYWlsaW5nU2xhc2hlc2AqKiDigJMge2Jvb2xlYW59IOKAkyBJZiB0cnVlIHRoZW4gdGhlIHRy
YWlsaW5nCisgKiAgIHNsYXNoZXMgZnJvbSBhbnkgY2FsY3VsYXRlZCBVUkwgd2lsbCBiZSBzdHJp
cHBlZC4gKERlZmF1bHRzIHRvIHRydWUuKQorICogICAtICoqYGNhbmNlbGxhYmxlYCoqIOKAkyB7
Ym9vbGVhbn0g4oCTIElmIHRydWUsIHRoZSByZXF1ZXN0IG1hZGUgYnkgYSAibm9uLWluc3RhbmNl
IiBjYWxsIHdpbGwgYmUKKyAqICAgY2FuY2VsbGVkIChpZiBub3QgYWxyZWFkeSBjb21wbGV0ZWQp
IGJ5IGNhbGxpbmcgYCRjYW5jZWxSZXF1ZXN0KClgIG9uIHRoZSBjYWxsJ3MgcmV0dXJuIHZhbHVl
LgorICogICBUaGlzIGNhbiBiZSBvdmVyd3JpdHRlbiBwZXIgYWN0aW9uLiAoRGVmYXVsdHMgdG8g
ZmFsc2UuKQorICoKKyAqIEByZXR1cm5zIHtPYmplY3R9IEEgcmVzb3VyY2UgImNsYXNzIiBvYmpl
Y3Qgd2l0aCBtZXRob2RzIGZvciB0aGUgZGVmYXVsdCBzZXQgb2YgcmVzb3VyY2UgYWN0aW9ucwor
ICogICBvcHRpb25hbGx5IGV4dGVuZGVkIHdpdGggY3VzdG9tIGBhY3Rpb25zYC4gVGhlIGRlZmF1
bHQgc2V0IGNvbnRhaW5zIHRoZXNlIGFjdGlvbnM6CisgKiAgIGBgYGpzCisgKiAgIHsgJ2dldCc6
ICAgIHttZXRob2Q6J0dFVCd9LAorICogICAgICdzYXZlJzogICB7bWV0aG9kOidQT1NUJ30sCisg
KiAgICAgJ3F1ZXJ5JzogIHttZXRob2Q6J0dFVCcsIGlzQXJyYXk6dHJ1ZX0sCisgKiAgICAgJ3Jl
bW92ZSc6IHttZXRob2Q6J0RFTEVURSd9LAorICogICAgICdkZWxldGUnOiB7bWV0aG9kOidERUxF
VEUnfSB9OworICogICBgYGAKKyAqCisgKiAgIENhbGxpbmcgdGhlc2UgbWV0aG9kcyBpbnZva2Ug
YW4ge0BsaW5rIG5nLiRodHRwfSB3aXRoIHRoZSBzcGVjaWZpZWQgaHR0cCBtZXRob2QsCisgKiAg
IGRlc3RpbmF0aW9uIGFuZCBwYXJhbWV0ZXJzLiBXaGVuIHRoZSBkYXRhIGlzIHJldHVybmVkIGZy
b20gdGhlIHNlcnZlciB0aGVuIHRoZSBvYmplY3QgaXMgYW4KKyAqICAgaW5zdGFuY2Ugb2YgdGhl
IHJlc291cmNlIGNsYXNzLiBUaGUgYWN0aW9ucyBgc2F2ZWAsIGByZW1vdmVgIGFuZCBgZGVsZXRl
YCBhcmUgYXZhaWxhYmxlIG9uIGl0CisgKiAgIGFzICBtZXRob2RzIHdpdGggdGhlIGAkYCBwcmVm
aXguIFRoaXMgYWxsb3dzIHlvdSB0byBlYXNpbHkgcGVyZm9ybSBDUlVEIG9wZXJhdGlvbnMgKGNy
ZWF0ZSwKKyAqICAgcmVhZCwgdXBkYXRlLCBkZWxldGUpIG9uIHNlcnZlci1zaWRlIGRhdGEgbGlr
ZSB0aGlzOgorICogICBgYGBqcworICogICB2YXIgVXNlciA9ICRyZXNvdXJjZSgnL3VzZXIvOnVz
ZXJJZCcsIHt1c2VySWQ6J0BpZCd9KTsKKyAqICAgdmFyIHVzZXIgPSBVc2VyLmdldCh7dXNlcklk
OjEyM30sIGZ1bmN0aW9uKCkgeworICogICAgIHVzZXIuYWJjID0gdHJ1ZTsKKyAqICAgICB1c2Vy
LiRzYXZlKCk7CisgKiAgIH0pOworICogICBgYGAKKyAqCisgKiAgIEl0IGlzIGltcG9ydGFudCB0
byByZWFsaXplIHRoYXQgaW52b2tpbmcgYSAkcmVzb3VyY2Ugb2JqZWN0IG1ldGhvZCBpbW1lZGlh
dGVseSByZXR1cm5zIGFuCisgKiAgIGVtcHR5IHJlZmVyZW5jZSAob2JqZWN0IG9yIGFycmF5IGRl
cGVuZGluZyBvbiBgaXNBcnJheWApLiBPbmNlIHRoZSBkYXRhIGlzIHJldHVybmVkIGZyb20gdGhl
CisgKiAgIHNlcnZlciB0aGUgZXhpc3RpbmcgcmVmZXJlbmNlIGlzIHBvcHVsYXRlZCB3aXRoIHRo
ZSBhY3R1YWwgZGF0YS4gVGhpcyBpcyBhIHVzZWZ1bCB0cmljayBzaW5jZQorICogICB1c3VhbGx5
IHRoZSByZXNvdXJjZSBpcyBhc3NpZ25lZCB0byBhIG1vZGVsIHdoaWNoIGlzIHRoZW4gcmVuZGVy
ZWQgYnkgdGhlIHZpZXcuIEhhdmluZyBhbiBlbXB0eQorICogICBvYmplY3QgcmVzdWx0cyBpbiBu
byByZW5kZXJpbmcsIG9uY2UgdGhlIGRhdGEgYXJyaXZlcyBmcm9tIHRoZSBzZXJ2ZXIgdGhlbiB0
aGUgb2JqZWN0IGlzCisgKiAgIHBvcHVsYXRlZCB3aXRoIHRoZSBkYXRhIGFuZCB0aGUgdmlldyBh
dXRvbWF0aWNhbGx5IHJlLXJlbmRlcnMgaXRzZWxmIHNob3dpbmcgdGhlIG5ldyBkYXRhLiBUaGlz
CisgKiAgIG1lYW5zIHRoYXQgaW4gbW9zdCBjYXNlcyBvbmUgbmV2ZXIgaGFzIHRvIHdyaXRlIGEg
Y2FsbGJhY2sgZnVuY3Rpb24gZm9yIHRoZSBhY3Rpb24gbWV0aG9kcy4KKyAqCisgKiAgIFRoZSBh
Y3Rpb24gbWV0aG9kcyBvbiB0aGUgY2xhc3Mgb2JqZWN0IG9yIGluc3RhbmNlIG9iamVjdCBjYW4g
YmUgaW52b2tlZCB3aXRoIHRoZSBmb2xsb3dpbmcKKyAqICAgcGFyYW1ldGVyczoKKyAqCisgKiAg
IC0gSFRUUCBHRVQgImNsYXNzIiBhY3Rpb25zOiBgUmVzb3VyY2UuYWN0aW9uKFtwYXJhbWV0ZXJz
XSwgW3N1Y2Nlc3NdLCBbZXJyb3JdKWAKKyAqICAgLSBub24tR0VUICJjbGFzcyIgYWN0aW9uczog
YFJlc291cmNlLmFjdGlvbihbcGFyYW1ldGVyc10sIHBvc3REYXRhLCBbc3VjY2Vzc10sIFtlcnJv
cl0pYAorICogICAtIG5vbi1HRVQgaW5zdGFuY2UgYWN0aW9uczogIGBpbnN0YW5jZS4kYWN0aW9u
KFtwYXJhbWV0ZXJzXSwgW3N1Y2Nlc3NdLCBbZXJyb3JdKWAKKyAqCisgKgorICogICBTdWNjZXNz
IGNhbGxiYWNrIGlzIGNhbGxlZCB3aXRoICh2YWx1ZSwgcmVzcG9uc2VIZWFkZXJzKSBhcmd1bWVu
dHMsIHdoZXJlIHRoZSB2YWx1ZSBpcworICogICB0aGUgcG9wdWxhdGVkIHJlc291cmNlIGluc3Rh
bmNlIG9yIGNvbGxlY3Rpb24gb2JqZWN0LiBUaGUgZXJyb3IgY2FsbGJhY2sgaXMgY2FsbGVkCisg
KiAgIHdpdGggKGh0dHBSZXNwb25zZSkgYXJndW1lbnQuCisgKgorICogICBDbGFzcyBhY3Rpb25z
IHJldHVybiBlbXB0eSBpbnN0YW5jZSAod2l0aCBhZGRpdGlvbmFsIHByb3BlcnRpZXMgYmVsb3cp
LgorICogICBJbnN0YW5jZSBhY3Rpb25zIHJldHVybiBwcm9taXNlIG9mIHRoZSBhY3Rpb24uCisg
KgorICogICBUaGUgUmVzb3VyY2UgaW5zdGFuY2VzIGFuZCBjb2xsZWN0aW9ucyBoYXZlIHRoZXNl
IGFkZGl0aW9uYWwgcHJvcGVydGllczoKKyAqCisgKiAgIC0gYCRwcm9taXNlYDogdGhlIHtAbGlu
ayBuZy4kcSBwcm9taXNlfSBvZiB0aGUgb3JpZ2luYWwgc2VydmVyIGludGVyYWN0aW9uIHRoYXQg
Y3JlYXRlZCB0aGlzCisgKiAgICAgaW5zdGFuY2Ugb3IgY29sbGVjdGlvbi4KKyAqCisgKiAgICAg
T24gc3VjY2VzcywgdGhlIHByb21pc2UgaXMgcmVzb2x2ZWQgd2l0aCB0aGUgc2FtZSByZXNvdXJj
ZSBpbnN0YW5jZSBvciBjb2xsZWN0aW9uIG9iamVjdCwKKyAqICAgICB1cGRhdGVkIHdpdGggZGF0
YSBmcm9tIHNlcnZlci4gVGhpcyBtYWtlcyBpdCBlYXN5IHRvIHVzZSBpbgorICogICAgIHtAbGlu
ayBuZ1JvdXRlLiRyb3V0ZVByb3ZpZGVyIHJlc29sdmUgc2VjdGlvbiBvZiAkcm91dGVQcm92aWRl
ci53aGVuKCl9IHRvIGRlZmVyIHZpZXcKKyAqICAgICByZW5kZXJpbmcgdW50aWwgdGhlIHJlc291
cmNlKHMpIGFyZSBsb2FkZWQuCisgKgorICogICAgIE9uIGZhaWx1cmUsIHRoZSBwcm9taXNlIGlz
IHJlamVjdGVkIHdpdGggdGhlIHtAbGluayBuZy4kaHR0cCBodHRwIHJlc3BvbnNlfSBvYmplY3Qs
IHdpdGhvdXQKKyAqICAgICB0aGUgYHJlc291cmNlYCBwcm9wZXJ0eS4KKyAqCisgKiAgICAgSWYg
YW4gaW50ZXJjZXB0b3Igb2JqZWN0IHdhcyBwcm92aWRlZCwgdGhlIHByb21pc2Ugd2lsbCBpbnN0
ZWFkIGJlIHJlc29sdmVkIHdpdGggdGhlIHZhbHVlCisgKiAgICAgcmV0dXJuZWQgYnkgdGhlIGlu
dGVyY2VwdG9yLgorICoKKyAqICAgLSBgJHJlc29sdmVkYDogYHRydWVgIGFmdGVyIGZpcnN0IHNl
cnZlciBpbnRlcmFjdGlvbiBpcyBjb21wbGV0ZWQgKGVpdGhlciB3aXRoIHN1Y2Nlc3Mgb3IKKyAq
ICAgICAgcmVqZWN0aW9uKSwgYGZhbHNlYCBiZWZvcmUgdGhhdC4gS25vd2luZyBpZiB0aGUgUmVz
b3VyY2UgaGFzIGJlZW4gcmVzb2x2ZWQgaXMgdXNlZnVsIGluCisgKiAgICAgIGRhdGEtYmluZGlu
Zy4KKyAqCisgKiAgIFRoZSBSZXNvdXJjZSBpbnN0YW5jZXMgYW5kIGNvbGxlY3Rpb25zIGhhdmUg
dGhlc2UgYWRkaXRpb25hbCBtZXRob2RzOgorICoKKyAqICAgLSBgJGNhbmNlbFJlcXVlc3RgOiBJ
ZiB0aGVyZSBpcyBhIGNhbmNlbGxhYmxlLCBwZW5kaW5nIHJlcXVlc3QgcmVsYXRlZCB0byB0aGUg
aW5zdGFuY2Ugb3IKKyAqICAgICAgY29sbGVjdGlvbiwgY2FsbGluZyB0aGlzIG1ldGhvZCB3aWxs
IGFib3J0IHRoZSByZXF1ZXN0LgorICoKKyAqICAgVGhlIFJlc291cmNlIGluc3RhbmNlcyBoYXZl
IHRoZXNlIGFkZGl0aW9uYWwgbWV0aG9kczoKKyAqCisgKiAgIC0gYHRvSlNPTmA6IEl0IHJldHVy
bnMgYSBzaW1wbGUgb2JqZWN0IHdpdGhvdXQgYW55IG9mIHRoZSBleHRyYSBwcm9wZXJ0aWVzIGFk
ZGVkIGFzIHBhcnQgb2YKKyAqICAgICB0aGUgUmVzb3VyY2UgQVBJLiBUaGlzIG9iamVjdCBjYW4g
YmUgc2VyaWFsaXplZCB0aHJvdWdoIHtAbGluayBhbmd1bGFyLnRvSnNvbn0gc2FmZWx5CisgKiAg
ICAgd2l0aG91dCBhdHRhY2hpbmcgQW5ndWxhci1zcGVjaWZpYyBmaWVsZHMuIE5vdGljZSB0aGF0
IGBKU09OLnN0cmluZ2lmeWAgKGFuZAorICogICAgIGBhbmd1bGFyLnRvSnNvbmApIGF1dG9tYXRp
Y2FsbHkgdXNlIHRoaXMgbWV0aG9kIHdoZW4gc2VyaWFsaXppbmcgYSBSZXNvdXJjZSBpbnN0YW5j
ZQorICogICAgIChzZWUgW01ETl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMv
ZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvSlNPTi9zdHJpbmdp
ZnkjdG9KU09OKClfYmVoYXZpb3IpKS4KKyAqCisgKiBAZXhhbXBsZQorICoKKyAqICMgQ3JlZGl0
IGNhcmQgcmVzb3VyY2UKKyAqCisgKiBgYGBqcworICAgICAvLyBEZWZpbmUgQ3JlZGl0Q2FyZCBj
bGFzcworICAgICB2YXIgQ3JlZGl0Q2FyZCA9ICRyZXNvdXJjZSgnL3VzZXIvOnVzZXJJZC9jYXJk
LzpjYXJkSWQnLAorICAgICAge3VzZXJJZDoxMjMsIGNhcmRJZDonQGlkJ30sIHsKKyAgICAgICBj
aGFyZ2U6IHttZXRob2Q6J1BPU1QnLCBwYXJhbXM6e2NoYXJnZTp0cnVlfX0KKyAgICAgIH0pOwor
CisgICAgIC8vIFdlIGNhbiByZXRyaWV2ZSBhIGNvbGxlY3Rpb24gZnJvbSB0aGUgc2VydmVyCisg
ICAgIHZhciBjYXJkcyA9IENyZWRpdENhcmQucXVlcnkoZnVuY3Rpb24oKSB7CisgICAgICAgLy8g
R0VUOiAvdXNlci8xMjMvY2FyZAorICAgICAgIC8vIHNlcnZlciByZXR1cm5zOiBbIHtpZDo0NTYs
IG51bWJlcjonMTIzNCcsIG5hbWU6J1NtaXRoJ30gXTsKKworICAgICAgIHZhciBjYXJkID0gY2Fy
ZHNbMF07CisgICAgICAgLy8gZWFjaCBpdGVtIGlzIGFuIGluc3RhbmNlIG9mIENyZWRpdENhcmQK
KyAgICAgICBleHBlY3QoY2FyZCBpbnN0YW5jZW9mIENyZWRpdENhcmQpLnRvRXF1YWwodHJ1ZSk7
CisgICAgICAgY2FyZC5uYW1lID0gIkouIFNtaXRoIjsKKyAgICAgICAvLyBub24gR0VUIG1ldGhv
ZHMgYXJlIG1hcHBlZCBvbnRvIHRoZSBpbnN0YW5jZXMKKyAgICAgICBjYXJkLiRzYXZlKCk7Cisg
ICAgICAgLy8gUE9TVDogL3VzZXIvMTIzL2NhcmQvNDU2IHtpZDo0NTYsIG51bWJlcjonMTIzNCcs
IG5hbWU6J0ouIFNtaXRoJ30KKyAgICAgICAvLyBzZXJ2ZXIgcmV0dXJuczoge2lkOjQ1NiwgbnVt
YmVyOicxMjM0JywgbmFtZTogJ0ouIFNtaXRoJ307CisKKyAgICAgICAvLyBvdXIgY3VzdG9tIG1l
dGhvZCBpcyBtYXBwZWQgYXMgd2VsbC4KKyAgICAgICBjYXJkLiRjaGFyZ2Uoe2Ftb3VudDo5Ljk5
fSk7CisgICAgICAgLy8gUE9TVDogL3VzZXIvMTIzL2NhcmQvNDU2P2Ftb3VudD05Ljk5JmNoYXJn
ZT10cnVlIHtpZDo0NTYsIG51bWJlcjonMTIzNCcsIG5hbWU6J0ouIFNtaXRoJ30KKyAgICAgfSk7
CisKKyAgICAgLy8gd2UgY2FuIGNyZWF0ZSBhbiBpbnN0YW5jZSBhcyB3ZWxsCisgICAgIHZhciBu
ZXdDYXJkID0gbmV3IENyZWRpdENhcmQoe251bWJlcjonMDEyMyd9KTsKKyAgICAgbmV3Q2FyZC5u
YW1lID0gIk1pa2UgU21pdGgiOworICAgICBuZXdDYXJkLiRzYXZlKCk7CisgICAgIC8vIFBPU1Q6
IC91c2VyLzEyMy9jYXJkIHtudW1iZXI6JzAxMjMnLCBuYW1lOidNaWtlIFNtaXRoJ30KKyAgICAg
Ly8gc2VydmVyIHJldHVybnM6IHtpZDo3ODksIG51bWJlcjonMDEyMycsIG5hbWU6ICdNaWtlIFNt
aXRoJ307CisgICAgIGV4cGVjdChuZXdDYXJkLmlkKS50b0VxdWFsKDc4OSk7CisgKiBgYGAKKyAq
CisgKiBUaGUgb2JqZWN0IHJldHVybmVkIGZyb20gdGhpcyBmdW5jdGlvbiBleGVjdXRpb24gaXMg
YSByZXNvdXJjZSAiY2xhc3MiIHdoaWNoIGhhcyAic3RhdGljIiBtZXRob2QKKyAqIGZvciBlYWNo
IGFjdGlvbiBpbiB0aGUgZGVmaW5pdGlvbi4KKyAqCisgKiBDYWxsaW5nIHRoZXNlIG1ldGhvZHMg
aW52b2tlIGAkaHR0cGAgb24gdGhlIGB1cmxgIHRlbXBsYXRlIHdpdGggdGhlIGdpdmVuIGBtZXRo
b2RgLCBgcGFyYW1zYCBhbmQKKyAqIGBoZWFkZXJzYC4KKyAqCisgKiBAZXhhbXBsZQorICoKKyAq
ICMgVXNlciByZXNvdXJjZQorICoKKyAqIFdoZW4gdGhlIGRhdGEgaXMgcmV0dXJuZWQgZnJvbSB0
aGUgc2VydmVyIHRoZW4gdGhlIG9iamVjdCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgcmVzb3VyY2Ug
dHlwZSBhbmQKKyAqIGFsbCBvZiB0aGUgbm9uLUdFVCBtZXRob2RzIGFyZSBhdmFpbGFibGUgd2l0
aCBgJGAgcHJlZml4LiBUaGlzIGFsbG93cyB5b3UgdG8gZWFzaWx5IHN1cHBvcnQgQ1JVRAorICog
b3BlcmF0aW9ucyAoY3JlYXRlLCByZWFkLCB1cGRhdGUsIGRlbGV0ZSkgb24gc2VydmVyLXNpZGUg
ZGF0YS4KKworICAgYGBganMKKyAgICAgdmFyIFVzZXIgPSAkcmVzb3VyY2UoJy91c2VyLzp1c2Vy
SWQnLCB7dXNlcklkOidAaWQnfSk7CisgICAgIFVzZXIuZ2V0KHt1c2VySWQ6MTIzfSwgZnVuY3Rp
b24odXNlcikgeworICAgICAgIHVzZXIuYWJjID0gdHJ1ZTsKKyAgICAgICB1c2VyLiRzYXZlKCk7
CisgICAgIH0pOworICAgYGBgCisgKgorICogSXQncyB3b3J0aCBub3RpbmcgdGhhdCB0aGUgc3Vj
Y2VzcyBjYWxsYmFjayBmb3IgYGdldGAsIGBxdWVyeWAgYW5kIG90aGVyIG1ldGhvZHMgZ2V0cyBw
YXNzZWQKKyAqIGluIHRoZSByZXNwb25zZSB0aGF0IGNhbWUgZnJvbSB0aGUgc2VydmVyIGFzIHdl
bGwgYXMgJGh0dHAgaGVhZGVyIGdldHRlciBmdW5jdGlvbiwgc28gb25lCisgKiBjb3VsZCByZXdy
aXRlIHRoZSBhYm92ZSBleGFtcGxlIGFuZCBnZXQgYWNjZXNzIHRvIGh0dHAgaGVhZGVycyBhczoK
KyAqCisgICBgYGBqcworICAgICB2YXIgVXNlciA9ICRyZXNvdXJjZSgnL3VzZXIvOnVzZXJJZCcs
IHt1c2VySWQ6J0BpZCd9KTsKKyAgICAgVXNlci5nZXQoe3VzZXJJZDoxMjN9LCBmdW5jdGlvbih1
c2VyLCBnZXRSZXNwb25zZUhlYWRlcnMpeworICAgICAgIHVzZXIuYWJjID0gdHJ1ZTsKKyAgICAg
ICB1c2VyLiRzYXZlKGZ1bmN0aW9uKHVzZXIsIHB1dFJlc3BvbnNlSGVhZGVycykgeworICAgICAg
ICAgLy91c2VyID0+IHNhdmVkIHVzZXIgb2JqZWN0CisgICAgICAgICAvL3B1dFJlc3BvbnNlSGVh
ZGVycyA9PiAkaHR0cCBoZWFkZXIgZ2V0dGVyCisgICAgICAgfSk7CisgICAgIH0pOworICAgYGBg
CisgKgorICogWW91IGNhbiBhbHNvIGFjY2VzcyB0aGUgcmF3IGAkaHR0cGAgcHJvbWlzZSB2aWEg
dGhlIGAkcHJvbWlzZWAgcHJvcGVydHkgb24gdGhlIG9iamVjdCByZXR1cm5lZAorICoKKyAgIGBg
YAorICAgICB2YXIgVXNlciA9ICRyZXNvdXJjZSgnL3VzZXIvOnVzZXJJZCcsIHt1c2VySWQ6J0Bp
ZCd9KTsKKyAgICAgVXNlci5nZXQoe3VzZXJJZDoxMjN9KQorICAgICAgICAgLiRwcm9taXNlLnRo
ZW4oZnVuY3Rpb24odXNlcikgeworICAgICAgICAgICAkc2NvcGUudXNlciA9IHVzZXI7CisgICAg
ICAgICB9KTsKKyAgIGBgYAorICoKKyAqIEBleGFtcGxlCisgKgorICogIyBDcmVhdGluZyBhIGN1
c3RvbSAnUFVUJyByZXF1ZXN0CisgKgorICogSW4gdGhpcyBleGFtcGxlIHdlIGNyZWF0ZSBhIGN1
c3RvbSBtZXRob2Qgb24gb3VyIHJlc291cmNlIHRvIG1ha2UgYSBQVVQgcmVxdWVzdAorICogYGBg
anMKKyAqICAgIHZhciBhcHAgPSBhbmd1bGFyLm1vZHVsZSgnYXBwJywgWyduZ1Jlc291cmNlJywg
J25nUm91dGUnXSk7CisgKgorICogICAgLy8gU29tZSBBUElzIGV4cGVjdCBhIFBVVCByZXF1ZXN0
IGluIHRoZSBmb3JtYXQgVVJML29iamVjdC9JRAorICogICAgLy8gSGVyZSB3ZSBhcmUgY3JlYXRp
bmcgYW4gJ3VwZGF0ZScgbWV0aG9kCisgKiAgICBhcHAuZmFjdG9yeSgnTm90ZXMnLCBbJyRyZXNv
dXJjZScsIGZ1bmN0aW9uKCRyZXNvdXJjZSkgeworICogICAgcmV0dXJuICRyZXNvdXJjZSgnL25v
dGVzLzppZCcsIG51bGwsCisgKiAgICAgICAgeworICogICAgICAgICAgICAndXBkYXRlJzogeyBt
ZXRob2Q6J1BVVCcgfQorICogICAgICAgIH0pOworICogICAgfV0pOworICoKKyAqICAgIC8vIElu
IG91ciBjb250cm9sbGVyIHdlIGdldCB0aGUgSUQgZnJvbSB0aGUgVVJMIHVzaW5nIG5nUm91dGUg
YW5kICRyb3V0ZVBhcmFtcworICogICAgLy8gV2UgcGFzcyBpbiAkcm91dGVQYXJhbXMgYW5kIG91
ciBOb3RlcyBmYWN0b3J5IGFsb25nIHdpdGggJHNjb3BlCisgKiAgICBhcHAuY29udHJvbGxlcign
Tm90ZXNDdHJsJywgWyckc2NvcGUnLCAnJHJvdXRlUGFyYW1zJywgJ05vdGVzJywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oJHNjb3BlLCAkcm91dGVQYXJh
bXMsIE5vdGVzKSB7CisgKiAgICAvLyBGaXJzdCBnZXQgYSBub3RlIG9iamVjdCBmcm9tIHRoZSBm
YWN0b3J5CisgKiAgICB2YXIgbm90ZSA9IE5vdGVzLmdldCh7IGlkOiRyb3V0ZVBhcmFtcy5pZCB9
KTsKKyAqICAgICRpZCA9IG5vdGUuaWQ7CisgKgorICogICAgLy8gTm93IGNhbGwgdXBkYXRlIHBh
c3NpbmcgaW4gdGhlIElEIGZpcnN0IHRoZW4gdGhlIG9iamVjdCB5b3UgYXJlIHVwZGF0aW5nCisg
KiAgICBOb3Rlcy51cGRhdGUoeyBpZDokaWQgfSwgbm90ZSk7CisgKgorICogICAgLy8gVGhpcyB3
aWxsIFBVVCAvbm90ZXMvSUQgd2l0aCB0aGUgbm90ZSBvYmplY3QgaW4gdGhlIHJlcXVlc3QgcGF5
bG9hZAorICogICAgfV0pOworICogYGBgCisgKgorICogQGV4YW1wbGUKKyAqCisgKiAjIENhbmNl
bGxpbmcgcmVxdWVzdHMKKyAqCisgKiBJZiBhbiBhY3Rpb24ncyBjb25maWd1cmF0aW9uIHNwZWNp
ZmllcyB0aGF0IGl0IGlzIGNhbmNlbGxhYmxlLCB5b3UgY2FuIGNhbmNlbCB0aGUgcmVxdWVzdCBy
ZWxhdGVkCisgKiB0byBhbiBpbnN0YW5jZSBvciBjb2xsZWN0aW9uIChhcyBsb25nIGFzIGl0IGlz
IGEgcmVzdWx0IG9mIGEgIm5vbi1pbnN0YW5jZSIgY2FsbCk6CisgKgorICAgYGBganMKKyAgICAg
Ly8gLi4uZGVmaW5pbmcgdGhlIGBIb3RlbGAgcmVzb3VyY2UuLi4KKyAgICAgdmFyIEhvdGVsID0g
JHJlc291cmNlKCcvYXBpL2hvdGVsLzppZCcsIHtpZDogJ0BpZCd9LCB7CisgICAgICAgLy8gTGV0
J3MgbWFrZSB0aGUgYHF1ZXJ5KClgIG1ldGhvZCBjYW5jZWxsYWJsZQorICAgICAgIHF1ZXJ5OiB7
bWV0aG9kOiAnZ2V0JywgaXNBcnJheTogdHJ1ZSwgY2FuY2VsbGFibGU6IHRydWV9CisgICAgIH0p
OworCisgICAgIC8vIC4uLnNvbWV3aGVyZSBpbiB0aGUgUGxhblZhY2F0aW9uQ29udHJvbGxlci4u
LgorICAgICAuLi4KKyAgICAgdGhpcy5vbkRlc3RpbmF0aW9uQ2hhbmdlZCA9IGZ1bmN0aW9uIG9u
RGVzdGluYXRpb25DaGFuZ2VkKGRlc3RpbmF0aW9uKSB7CisgICAgICAgLy8gV2UgZG9uJ3QgY2Fy
ZSBhYm91dCBhbnkgcGVuZGluZyByZXF1ZXN0IGZvciBob3RlbHMKKyAgICAgICAvLyBpbiBhIGRp
ZmZlcmVudCBkZXN0aW5hdGlvbiBhbnkgbW9yZQorICAgICAgIHRoaXMuYXZhaWxhYmxlSG90ZWxz
LiRjYW5jZWxSZXF1ZXN0KCk7CisKKyAgICAgICAvLyBMZXQncyBxdWVyeSBmb3IgaG90ZWxzIGlu
ICc8ZGVzdGluYXRpb24+JworICAgICAgIC8vIChjYWxsczogL2FwaS9ob3RlbD9sb2NhdGlvbj08
ZGVzdGluYXRpb24+KQorICAgICAgIHRoaXMuYXZhaWxhYmxlSG90ZWxzID0gSG90ZWwucXVlcnko
e2xvY2F0aW9uOiBkZXN0aW5hdGlvbn0pOworICAgICB9OworICAgYGBgCisgKgorICovCithbmd1
bGFyLm1vZHVsZSgnbmdSZXNvdXJjZScsIFsnbmcnXSkuCisgIHByb3ZpZGVyKCckcmVzb3VyY2Un
LCBmdW5jdGlvbiBSZXNvdXJjZVByb3ZpZGVyKCkgeworICAgIHZhciBQUk9UT0NPTF9BTkRfRE9N
QUlOX1JFR0VYID0gL15odHRwcz86XC9cL1teXC9dKi87CisKKyAgICB2YXIgcHJvdmlkZXIgPSB0
aGlzOworCisgICAgLyoqCisgICAgICogQG5nZG9jIHByb3BlcnR5CisgICAgICogQG5hbWUgJHJl
c291cmNlUHJvdmlkZXIjZGVmYXVsdHMKKyAgICAgKiBAZGVzY3JpcHRpb24KKyAgICAgKiBPYmpl
Y3QgY29udGFpbmluZyBkZWZhdWx0IG9wdGlvbnMgdXNlZCB3aGVuIGNyZWF0aW5nIGAkcmVzb3Vy
Y2VgIGluc3RhbmNlcy4KKyAgICAgKgorICAgICAqIFRoZSBkZWZhdWx0IHZhbHVlcyBzYXRpc2Z5
IGEgd2lkZSByYW5nZSBvZiB1c2VjYXNlcywgYnV0IHlvdSBtYXkgY2hvb3NlIHRvIG92ZXJ3cml0
ZSBhbnkgb2YKKyAgICAgKiB0aGVtIHRvIGZ1cnRoZXIgY3VzdG9taXplIHlvdXIgaW5zdGFuY2Vz
LiBUaGUgYXZhaWxhYmxlIHByb3BlcnRpZXMgYXJlOgorICAgICAqCisgICAgICogLSAqKnN0cmlw
VHJhaWxpbmdTbGFzaGVzKiog4oCTIGB7Ym9vbGVhbn1gIOKAkyBJZiB0cnVlLCB0aGVuIHRoZSB0
cmFpbGluZyBzbGFzaGVzIGZyb20gYW55CisgICAgICogICBjYWxjdWxhdGVkIFVSTCB3aWxsIGJl
IHN0cmlwcGVkLjxiciAvPgorICAgICAqICAgKERlZmF1bHRzIHRvIHRydWUuKQorICAgICAqIC0g
KipjYW5jZWxsYWJsZSoqIOKAkyBge2Jvb2xlYW59YCDigJMgSWYgdHJ1ZSwgdGhlIHJlcXVlc3Qg
bWFkZSBieSBhICJub24taW5zdGFuY2UiIGNhbGwgd2lsbCBiZQorICAgICAqICAgY2FuY2VsbGVk
IChpZiBub3QgYWxyZWFkeSBjb21wbGV0ZWQpIGJ5IGNhbGxpbmcgYCRjYW5jZWxSZXF1ZXN0KClg
IG9uIHRoZSBjYWxsJ3MgcmV0dXJuCisgICAgICogICB2YWx1ZS4gRm9yIG1vcmUgZGV0YWlscywg
c2VlIHtAbGluayBuZ1Jlc291cmNlLiRyZXNvdXJjZX0uIFRoaXMgY2FuIGJlIG92ZXJ3cml0dGVu
IHBlcgorICAgICAqICAgcmVzb3VyY2UgY2xhc3Mgb3IgYWN0aW9uLjxiciAvPgorICAgICAqICAg
KERlZmF1bHRzIHRvIGZhbHNlLikKKyAgICAgKiAtICoqYWN0aW9ucyoqIC0gYHtPYmplY3QuPE9i
amVjdD59YCAtIEEgaGFzaCB3aXRoIGRlZmF1bHQgYWN0aW9ucyBkZWNsYXJhdGlvbnMuIEFjdGlv
bnMgYXJlCisgICAgICogICBoaWdoLWxldmVsIG1ldGhvZHMgY29ycmVzcG9uZGluZyB0byBSRVNU
ZnVsIGFjdGlvbnMvbWV0aG9kcyBvbiByZXNvdXJjZXMuIEFuIGFjdGlvbiBtYXkKKyAgICAgKiAg
IHNwZWNpZnkgd2hhdCBIVFRQIG1ldGhvZCB0byB1c2UsIHdoYXQgVVJMIHRvIGhpdCwgaWYgdGhl
IHJldHVybiB2YWx1ZSB3aWxsIGJlIGEgc2luZ2xlCisgICAgICogICBvYmplY3Qgb3IgYSBjb2xs
ZWN0aW9uIChhcnJheSkgb2Ygb2JqZWN0cyBldGMuIEZvciBtb3JlIGRldGFpbHMsIHNlZQorICAg
ICAqICAge0BsaW5rIG5nUmVzb3VyY2UuJHJlc291cmNlfS4gVGhlIGFjdGlvbnMgY2FuIGFsc28g
YmUgZW5oYW5jZWQgb3Igb3ZlcndyaXR0ZW4gcGVyIHJlc291cmNlCisgICAgICogICBjbGFzcy48
YnIgLz4KKyAgICAgKiAgIFRoZSBkZWZhdWx0IGFjdGlvbnMgYXJlOgorICAgICAqICAgYGBganMK
KyAgICAgKiAgIHsKKyAgICAgKiAgICAgZ2V0OiB7bWV0aG9kOiAnR0VUJ30sCisgICAgICogICAg
IHNhdmU6IHttZXRob2Q6ICdQT1NUJ30sCisgICAgICogICAgIHF1ZXJ5OiB7bWV0aG9kOiAnR0VU
JywgaXNBcnJheTogdHJ1ZX0sCisgICAgICogICAgIHJlbW92ZToge21ldGhvZDogJ0RFTEVURSd9
LAorICAgICAqICAgICBkZWxldGU6IHttZXRob2Q6ICdERUxFVEUnfQorICAgICAqICAgfQorICAg
ICAqICAgYGBgCisgICAgICoKKyAgICAgKiAjIyMjIEV4YW1wbGUKKyAgICAgKgorICAgICAqIEZv
ciBleGFtcGxlLCB5b3UgY2FuIHNwZWNpZnkgYSBuZXcgYHVwZGF0ZWAgYWN0aW9uIHRoYXQgdXNl
cyB0aGUgYFBVVGAgSFRUUCB2ZXJiOgorICAgICAqCisgICAgICogYGBganMKKyAgICAgKiAgIGFu
Z3VsYXIuCisgICAgICogICAgIG1vZHVsZSgnbXlBcHAnKS4KKyAgICAgKiAgICAgY29uZmlnKFsn
cmVzb3VyY2VQcm92aWRlcicsIGZ1bmN0aW9uICgkcmVzb3VyY2VQcm92aWRlcikgeworICAgICAq
ICAgICAgICRyZXNvdXJjZVByb3ZpZGVyLmRlZmF1bHRzLmFjdGlvbnMudXBkYXRlID0geworICAg
ICAqICAgICAgICAgbWV0aG9kOiAnUFVUJworICAgICAqICAgICAgIH07CisgICAgICogICAgIH0p
OworICAgICAqIGBgYAorICAgICAqCisgICAgICogT3IgeW91IGNhbiBldmVuIG92ZXJ3cml0ZSB0
aGUgd2hvbGUgYGFjdGlvbnNgIGxpc3QgYW5kIHNwZWNpZnkgeW91ciBvd246CisgICAgICoKKyAg
ICAgKiBgYGBqcworICAgICAqICAgYW5ndWxhci4KKyAgICAgKiAgICAgbW9kdWxlKCdteUFwcCcp
LgorICAgICAqICAgICBjb25maWcoWydyZXNvdXJjZVByb3ZpZGVyJywgZnVuY3Rpb24gKCRyZXNv
dXJjZVByb3ZpZGVyKSB7CisgICAgICogICAgICAgJHJlc291cmNlUHJvdmlkZXIuZGVmYXVsdHMu
YWN0aW9ucyA9IHsKKyAgICAgKiAgICAgICAgIGNyZWF0ZToge21ldGhvZDogJ1BPU1QnfQorICAg
ICAqICAgICAgICAgZ2V0OiAgICB7bWV0aG9kOiAnR0VUJ30sCisgICAgICogICAgICAgICBnZXRB
bGw6IHttZXRob2Q6ICdHRVQnLCBpc0FycmF5OnRydWV9LAorICAgICAqICAgICAgICAgdXBkYXRl
OiB7bWV0aG9kOiAnUFVUJ30sCisgICAgICogICAgICAgICBkZWxldGU6IHttZXRob2Q6ICdERUxF
VEUnfQorICAgICAqICAgICAgIH07CisgICAgICogICAgIH0pOworICAgICAqIGBgYAorICAgICAq
CisgICAgICovCisgICAgdGhpcy5kZWZhdWx0cyA9IHsKKyAgICAgIC8vIFN0cmlwIHNsYXNoZXMg
YnkgZGVmYXVsdAorICAgICAgc3RyaXBUcmFpbGluZ1NsYXNoZXM6IHRydWUsCisKKyAgICAgIC8v
IE1ha2Ugbm9uLWluc3RhbmNlIHJlcXVlc3RzIGNhbmNlbGxhYmxlICh2aWEgYCRjYW5jZWxSZXF1
ZXN0KClgKQorICAgICAgY2FuY2VsbGFibGU6IGZhbHNlLAorCisgICAgICAvLyBEZWZhdWx0IGFj
dGlvbnMgY29uZmlndXJhdGlvbgorICAgICAgYWN0aW9uczogeworICAgICAgICAnZ2V0Jzoge21l
dGhvZDogJ0dFVCd9LAorICAgICAgICAnc2F2ZSc6IHttZXRob2Q6ICdQT1NUJ30sCisgICAgICAg
ICdxdWVyeSc6IHttZXRob2Q6ICdHRVQnLCBpc0FycmF5OiB0cnVlfSwKKyAgICAgICAgJ3JlbW92
ZSc6IHttZXRob2Q6ICdERUxFVEUnfSwKKyAgICAgICAgJ2RlbGV0ZSc6IHttZXRob2Q6ICdERUxF
VEUnfQorICAgICAgfQorICAgIH07CisKKyAgICB0aGlzLiRnZXQgPSBbJyRodHRwJywgJyRsb2cn
LCAnJHEnLCAnJHRpbWVvdXQnLCBmdW5jdGlvbigkaHR0cCwgJGxvZywgJHEsICR0aW1lb3V0KSB7
CisKKyAgICAgIHZhciBub29wID0gYW5ndWxhci5ub29wLAorICAgICAgICBmb3JFYWNoID0gYW5n
dWxhci5mb3JFYWNoLAorICAgICAgICBleHRlbmQgPSBhbmd1bGFyLmV4dGVuZCwKKyAgICAgICAg
Y29weSA9IGFuZ3VsYXIuY29weSwKKyAgICAgICAgaXNGdW5jdGlvbiA9IGFuZ3VsYXIuaXNGdW5j
dGlvbjsKKworICAgICAgLyoqCisgICAgICAgKiBXZSBuZWVkIG91ciBjdXN0b20gbWV0aG9kIGJl
Y2F1c2UgZW5jb2RlVVJJQ29tcG9uZW50IGlzIHRvbyBhZ2dyZXNzaXZlIGFuZCBkb2Vzbid0IGZv
bGxvdworICAgICAgICogaHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMzk4Ni50eHQgd2l0aCBy
ZWdhcmRzIHRvIHRoZSBjaGFyYWN0ZXIgc2V0CisgICAgICAgKiAocGNoYXIpIGFsbG93ZWQgaW4g
cGF0aCBzZWdtZW50czoKKyAgICAgICAqICAgIHNlZ21lbnQgICAgICAgPSAqcGNoYXIKKyAgICAg
ICAqICAgIHBjaGFyICAgICAgICAgPSB1bnJlc2VydmVkIC8gcGN0LWVuY29kZWQgLyBzdWItZGVs
aW1zIC8gIjoiIC8gIkAiCisgICAgICAgKiAgICBwY3QtZW5jb2RlZCAgID0gIiUiIEhFWERJRyBI
RVhESUcKKyAgICAgICAqICAgIHVucmVzZXJ2ZWQgICAgPSBBTFBIQSAvIERJR0lUIC8gIi0iIC8g
Ii4iIC8gIl8iIC8gIn4iCisgICAgICAgKiAgICBzdWItZGVsaW1zICAgID0gIiEiIC8gIiQiIC8g
IiYiIC8gIiciIC8gIigiIC8gIikiCisgICAgICAgKiAgICAgICAgICAgICAgICAgICAgIC8gIioi
IC8gIisiIC8gIiwiIC8gIjsiIC8gIj0iCisgICAgICAgKi8KKyAgICAgIGZ1bmN0aW9uIGVuY29k
ZVVyaVNlZ21lbnQodmFsKSB7CisgICAgICAgIHJldHVybiBlbmNvZGVVcmlRdWVyeSh2YWwsIHRy
dWUpLgorICAgICAgICAgIHJlcGxhY2UoLyUyNi9naSwgJyYnKS4KKyAgICAgICAgICByZXBsYWNl
KC8lM0QvZ2ksICc9JykuCisgICAgICAgICAgcmVwbGFjZSgvJTJCL2dpLCAnKycpOworICAgICAg
fQorCisKKyAgICAgIC8qKgorICAgICAgICogVGhpcyBtZXRob2QgaXMgaW50ZW5kZWQgZm9yIGVu
Y29kaW5nICprZXkqIG9yICp2YWx1ZSogcGFydHMgb2YgcXVlcnkgY29tcG9uZW50LiBXZSBuZWVk
IGEKKyAgICAgICAqIGN1c3RvbSBtZXRob2QgYmVjYXVzZSBlbmNvZGVVUklDb21wb25lbnQgaXMg
dG9vIGFnZ3Jlc3NpdmUgYW5kIGVuY29kZXMgc3R1ZmYgdGhhdCBkb2Vzbid0CisgICAgICAgKiBo
YXZlIHRvIGJlIGVuY29kZWQgcGVyIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODY6
CisgICAgICAgKiAgICBxdWVyeSAgICAgICA9ICooIHBjaGFyIC8gIi8iIC8gIj8iICkKKyAgICAg
ICAqICAgIHBjaGFyICAgICAgICAgPSB1bnJlc2VydmVkIC8gcGN0LWVuY29kZWQgLyBzdWItZGVs
aW1zIC8gIjoiIC8gIkAiCisgICAgICAgKiAgICB1bnJlc2VydmVkICAgID0gQUxQSEEgLyBESUdJ
VCAvICItIiAvICIuIiAvICJfIiAvICJ+IgorICAgICAgICogICAgcGN0LWVuY29kZWQgICA9ICIl
IiBIRVhESUcgSEVYRElHCisgICAgICAgKiAgICBzdWItZGVsaW1zICAgID0gIiEiIC8gIiQiIC8g
IiYiIC8gIiciIC8gIigiIC8gIikiCisgICAgICAgKiAgICAgICAgICAgICAgICAgICAgIC8gIioi
IC8gIisiIC8gIiwiIC8gIjsiIC8gIj0iCisgICAgICAgKi8KKyAgICAgIGZ1bmN0aW9uIGVuY29k
ZVVyaVF1ZXJ5KHZhbCwgcGN0RW5jb2RlU3BhY2VzKSB7CisgICAgICAgIHJldHVybiBlbmNvZGVV
UklDb21wb25lbnQodmFsKS4KKyAgICAgICAgICByZXBsYWNlKC8lNDAvZ2ksICdAJykuCisgICAg
ICAgICAgcmVwbGFjZSgvJTNBL2dpLCAnOicpLgorICAgICAgICAgIHJlcGxhY2UoLyUyNC9nLCAn
JCcpLgorICAgICAgICAgIHJlcGxhY2UoLyUyQy9naSwgJywnKS4KKyAgICAgICAgICByZXBsYWNl
KC8lMjAvZywgKHBjdEVuY29kZVNwYWNlcyA/ICclMjAnIDogJysnKSk7CisgICAgICB9CisKKyAg
ICAgIGZ1bmN0aW9uIFJvdXRlKHRlbXBsYXRlLCBkZWZhdWx0cykgeworICAgICAgICB0aGlzLnRl
bXBsYXRlID0gdGVtcGxhdGU7CisgICAgICAgIHRoaXMuZGVmYXVsdHMgPSBleHRlbmQoe30sIHBy
b3ZpZGVyLmRlZmF1bHRzLCBkZWZhdWx0cyk7CisgICAgICAgIHRoaXMudXJsUGFyYW1zID0ge307
CisgICAgICB9CisKKyAgICAgIFJvdXRlLnByb3RvdHlwZSA9IHsKKyAgICAgICAgc2V0VXJsUGFy
YW1zOiBmdW5jdGlvbihjb25maWcsIHBhcmFtcywgYWN0aW9uVXJsKSB7CisgICAgICAgICAgdmFy
IHNlbGYgPSB0aGlzLAorICAgICAgICAgICAgdXJsID0gYWN0aW9uVXJsIHx8IHNlbGYudGVtcGxh
dGUsCisgICAgICAgICAgICB2YWwsCisgICAgICAgICAgICBlbmNvZGVkVmFsLAorICAgICAgICAg
ICAgcHJvdG9jb2xBbmREb21haW4gPSAnJzsKKworICAgICAgICAgIHZhciB1cmxQYXJhbXMgPSBz
ZWxmLnVybFBhcmFtcyA9IHt9OworICAgICAgICAgIGZvckVhY2godXJsLnNwbGl0KC9cVy8pLCBm
dW5jdGlvbihwYXJhbSkgeworICAgICAgICAgICAgaWYgKHBhcmFtID09PSAnaGFzT3duUHJvcGVy
dHknKSB7CisgICAgICAgICAgICAgIHRocm93ICRyZXNvdXJjZU1pbkVycignYmFkbmFtZScsICdo
YXNPd25Qcm9wZXJ0eSBpcyBub3QgYSB2YWxpZCBwYXJhbWV0ZXIgbmFtZS4nKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGlmICghKG5ldyBSZWdFeHAoJ15cXGQrJCcpLnRlc3QocGFyYW0p
KSAmJiBwYXJhbSAmJgorICAgICAgICAgICAgICAobmV3IFJlZ0V4cCgnKF58W15cXFxcXSk6JyAr
IHBhcmFtICsgJyhcXFd8JCknKS50ZXN0KHVybCkpKSB7CisgICAgICAgICAgICAgIHVybFBhcmFt
c1twYXJhbV0gPSB7CisgICAgICAgICAgICAgICAgaXNRdWVyeVBhcmFtVmFsdWU6IChuZXcgUmVn
RXhwKCdcXD8uKj06JyArIHBhcmFtICsgJyg/OlxcV3wkKScpKS50ZXN0KHVybCkKKyAgICAgICAg
ICAgICAgfTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9KTsKKyAgICAgICAgICB1cmwgPSB1
cmwucmVwbGFjZSgvXFw6L2csICc6Jyk7CisgICAgICAgICAgdXJsID0gdXJsLnJlcGxhY2UoUFJP
VE9DT0xfQU5EX0RPTUFJTl9SRUdFWCwgZnVuY3Rpb24obWF0Y2gpIHsKKyAgICAgICAgICAgIHBy
b3RvY29sQW5kRG9tYWluID0gbWF0Y2g7CisgICAgICAgICAgICByZXR1cm4gJyc7CisgICAgICAg
ICAgfSk7CisKKyAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMgfHwge307CisgICAgICAgICAgZm9y
RWFjaChzZWxmLnVybFBhcmFtcywgZnVuY3Rpb24ocGFyYW1JbmZvLCB1cmxQYXJhbSkgeworICAg
ICAgICAgICAgdmFsID0gcGFyYW1zLmhhc093blByb3BlcnR5KHVybFBhcmFtKSA/IHBhcmFtc1t1
cmxQYXJhbV0gOiBzZWxmLmRlZmF1bHRzW3VybFBhcmFtXTsKKyAgICAgICAgICAgIGlmIChhbmd1
bGFyLmlzRGVmaW5lZCh2YWwpICYmIHZhbCAhPT0gbnVsbCkgeworICAgICAgICAgICAgICBpZiAo
cGFyYW1JbmZvLmlzUXVlcnlQYXJhbVZhbHVlKSB7CisgICAgICAgICAgICAgICAgZW5jb2RlZFZh
bCA9IGVuY29kZVVyaVF1ZXJ5KHZhbCwgdHJ1ZSk7CisgICAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgZW5jb2RlZFZhbCA9IGVuY29kZVVyaVNlZ21lbnQodmFsKTsKKyAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICB1cmwgPSB1cmwucmVwbGFjZShuZXcgUmVnRXhwKCc6
JyArIHVybFBhcmFtICsgJyhcXFd8JCknLCAnZycpLCBmdW5jdGlvbihtYXRjaCwgcDEpIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZW5jb2RlZFZhbCArIHAxOworICAgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgIHVybCA9IHVybC5yZXBsYWNlKG5l
dyBSZWdFeHAoJygvPyk6JyArIHVybFBhcmFtICsgJyhcXFd8JCknLCAnZycpLCBmdW5jdGlvbiht
YXRjaCwKKyAgICAgICAgICAgICAgICAgIGxlYWRpbmdTbGFzaGVzLCB0YWlsKSB7CisgICAgICAg
ICAgICAgICAgaWYgKHRhaWwuY2hhckF0KDApID09PSAnLycpIHsKKyAgICAgICAgICAgICAgICAg
IHJldHVybiB0YWlsOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
ICByZXR1cm4gbGVhZGluZ1NsYXNoZXMgKyB0YWlsOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgfSk7CisKKyAgICAgICAgICAv
LyBzdHJpcCB0cmFpbGluZyBzbGFzaGVzIGFuZCBzZXQgdGhlIHVybCAodW5sZXNzIHRoaXMgYmVo
YXZpb3IgaXMgc3BlY2lmaWNhbGx5IGRpc2FibGVkKQorICAgICAgICAgIGlmIChzZWxmLmRlZmF1
bHRzLnN0cmlwVHJhaWxpbmdTbGFzaGVzKSB7CisgICAgICAgICAgICB1cmwgPSB1cmwucmVwbGFj
ZSgvXC8rJC8sICcnKSB8fCAnLyc7CisgICAgICAgICAgfQorCisgICAgICAgICAgLy8gdGhlbiBy
ZXBsYWNlIGNvbGxhcHNlIGAvLmAgaWYgZm91bmQgaW4gdGhlIGxhc3QgVVJMIHBhdGggc2VnbWVu
dCBiZWZvcmUgdGhlIHF1ZXJ5CisgICAgICAgICAgLy8gRS5nLiBgaHR0cDovL3VybC5jb20vaWQu
L2Zvcm1hdD9xPXhgIGJlY29tZXMgYGh0dHA6Ly91cmwuY29tL2lkLmZvcm1hdD9xPXhgCisgICAg
ICAgICAgdXJsID0gdXJsLnJlcGxhY2UoL1wvXC4oPz1cdysoJHxcPykpLywgJy4nKTsKKyAgICAg
ICAgICAvLyByZXBsYWNlIGVzY2FwZWQgYC9cLmAgd2l0aCBgLy5gCisgICAgICAgICAgY29uZmln
LnVybCA9IHByb3RvY29sQW5kRG9tYWluICsgdXJsLnJlcGxhY2UoL1wvXFxcLi8sICcvLicpOwor
CisKKyAgICAgICAgICAvLyBzZXQgcGFyYW1zIC0gZGVsZWdhdGUgcGFyYW0gZW5jb2RpbmcgdG8g
JGh0dHAKKyAgICAgICAgICBmb3JFYWNoKHBhcmFtcywgZnVuY3Rpb24odmFsdWUsIGtleSkgewor
ICAgICAgICAgICAgaWYgKCFzZWxmLnVybFBhcmFtc1trZXldKSB7CisgICAgICAgICAgICAgIGNv
bmZpZy5wYXJhbXMgPSBjb25maWcucGFyYW1zIHx8IHt9OworICAgICAgICAgICAgICBjb25maWcu
cGFyYW1zW2tleV0gPSB2YWx1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9KTsKKyAgICAg
ICAgfQorICAgICAgfTsKKworCisgICAgICBmdW5jdGlvbiByZXNvdXJjZUZhY3RvcnkodXJsLCBw
YXJhbURlZmF1bHRzLCBhY3Rpb25zLCBvcHRpb25zKSB7CisgICAgICAgIHZhciByb3V0ZSA9IG5l
dyBSb3V0ZSh1cmwsIG9wdGlvbnMpOworCisgICAgICAgIGFjdGlvbnMgPSBleHRlbmQoe30sIHBy
b3ZpZGVyLmRlZmF1bHRzLmFjdGlvbnMsIGFjdGlvbnMpOworCisgICAgICAgIGZ1bmN0aW9uIGV4
dHJhY3RQYXJhbXMoZGF0YSwgYWN0aW9uUGFyYW1zKSB7CisgICAgICAgICAgdmFyIGlkcyA9IHt9
OworICAgICAgICAgIGFjdGlvblBhcmFtcyA9IGV4dGVuZCh7fSwgcGFyYW1EZWZhdWx0cywgYWN0
aW9uUGFyYW1zKTsKKyAgICAgICAgICBmb3JFYWNoKGFjdGlvblBhcmFtcywgZnVuY3Rpb24odmFs
dWUsIGtleSkgeworICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24odmFsdWUpKSB7IHZhbHVlID0g
dmFsdWUoZGF0YSk7IH0KKyAgICAgICAgICAgIGlkc1trZXldID0gdmFsdWUgJiYgdmFsdWUuY2hh
ckF0ICYmIHZhbHVlLmNoYXJBdCgwKSA9PT0gJ0AnID8KKyAgICAgICAgICAgICAgbG9va3VwRG90
dGVkUGF0aChkYXRhLCB2YWx1ZS5zdWJzdHIoMSkpIDogdmFsdWU7CisgICAgICAgICAgfSk7Cisg
ICAgICAgICAgcmV0dXJuIGlkczsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGRlZmF1
bHRSZXNwb25zZUludGVyY2VwdG9yKHJlc3BvbnNlKSB7CisgICAgICAgICAgcmV0dXJuIHJlc3Bv
bnNlLnJlc291cmNlOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gUmVzb3VyY2UodmFs
dWUpIHsKKyAgICAgICAgICBzaGFsbG93Q2xlYXJBbmRDb3B5KHZhbHVlIHx8IHt9LCB0aGlzKTsK
KyAgICAgICAgfQorCisgICAgICAgIFJlc291cmNlLnByb3RvdHlwZS50b0pTT04gPSBmdW5jdGlv
bigpIHsKKyAgICAgICAgICB2YXIgZGF0YSA9IGV4dGVuZCh7fSwgdGhpcyk7CisgICAgICAgICAg
ZGVsZXRlIGRhdGEuJHByb21pc2U7CisgICAgICAgICAgZGVsZXRlIGRhdGEuJHJlc29sdmVkOwor
ICAgICAgICAgIHJldHVybiBkYXRhOworICAgICAgICB9OworCisgICAgICAgIGZvckVhY2goYWN0
aW9ucywgZnVuY3Rpb24oYWN0aW9uLCBuYW1lKSB7CisgICAgICAgICAgdmFyIGhhc0JvZHkgPSAv
XihQT1NUfFBVVHxQQVRDSCkkL2kudGVzdChhY3Rpb24ubWV0aG9kKTsKKyAgICAgICAgICB2YXIg
bnVtZXJpY1RpbWVvdXQgPSBhY3Rpb24udGltZW91dDsKKyAgICAgICAgICB2YXIgY2FuY2VsbGFi
bGUgPSBhbmd1bGFyLmlzRGVmaW5lZChhY3Rpb24uY2FuY2VsbGFibGUpID8gYWN0aW9uLmNhbmNl
bGxhYmxlIDoKKyAgICAgICAgICAgICAgKG9wdGlvbnMgJiYgYW5ndWxhci5pc0RlZmluZWQob3B0
aW9ucy5jYW5jZWxsYWJsZSkpID8gb3B0aW9ucy5jYW5jZWxsYWJsZSA6CisgICAgICAgICAgICAg
IHByb3ZpZGVyLmRlZmF1bHRzLmNhbmNlbGxhYmxlOworCisgICAgICAgICAgaWYgKG51bWVyaWNU
aW1lb3V0ICYmICFhbmd1bGFyLmlzTnVtYmVyKG51bWVyaWNUaW1lb3V0KSkgeworICAgICAgICAg
ICAgJGxvZy5kZWJ1ZygnbmdSZXNvdXJjZTpcbicgKworICAgICAgICAgICAgICAgICAgICAgICAn
ICBPbmx5IG51bWVyaWMgdmFsdWVzIGFyZSBhbGxvd2VkIGFzIGB0aW1lb3V0YC5cbicgKworICAg
ICAgICAgICAgICAgICAgICAgICAnICBQcm9taXNlcyBhcmUgbm90IHN1cHBvcnRlZCBpbiAkcmVz
b3VyY2UsIGJlY2F1c2UgdGhlIHNhbWUgdmFsdWUgd291bGQgJyArCisgICAgICAgICAgICAgICAg
ICAgICAgICdiZSB1c2VkIGZvciBtdWx0aXBsZSByZXF1ZXN0cy4gSWYgeW91IGFyZSBsb29raW5n
IGZvciBhIHdheSB0byBjYW5jZWwgJyArCisgICAgICAgICAgICAgICAgICAgICAgICdyZXF1ZXN0
cywgeW91IHNob3VsZCB1c2UgdGhlIGBjYW5jZWxsYWJsZWAgb3B0aW9uLicpOworICAgICAgICAg
ICAgZGVsZXRlIGFjdGlvbi50aW1lb3V0OworICAgICAgICAgICAgbnVtZXJpY1RpbWVvdXQgPSBu
dWxsOworICAgICAgICAgIH0KKworICAgICAgICAgIFJlc291cmNlW25hbWVdID0gZnVuY3Rpb24o
YTEsIGEyLCBhMywgYTQpIHsKKyAgICAgICAgICAgIHZhciBwYXJhbXMgPSB7fSwgZGF0YSwgc3Vj
Y2VzcywgZXJyb3I7CisKKyAgICAgICAgICAgIHN3aXRjaCAoYXJndW1lbnRzLmxlbmd0aCkgewor
ICAgICAgICAgICAgICBjYXNlIDQ6CisgICAgICAgICAgICAgICAgZXJyb3IgPSBhNDsKKyAgICAg
ICAgICAgICAgICBzdWNjZXNzID0gYTM7CisgICAgICAgICAgICAgICAgLy8gZmFsbHMgdGhyb3Vn
aAorICAgICAgICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAg
ICAgICAgICBpZiAoaXNGdW5jdGlvbihhMikpIHsKKyAgICAgICAgICAgICAgICAgIGlmIChpc0Z1
bmN0aW9uKGExKSkgeworICAgICAgICAgICAgICAgICAgICBzdWNjZXNzID0gYTE7CisgICAgICAg
ICAgICAgICAgICAgIGVycm9yID0gYTI7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICBzdWNjZXNzID0gYTI7CisgICAg
ICAgICAgICAgICAgICBlcnJvciA9IGEzOworICAgICAgICAgICAgICAgICAgLy8gZmFsbHMgdGhy
b3VnaAorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICBwYXJhbXMg
PSBhMTsKKyAgICAgICAgICAgICAgICAgIGRhdGEgPSBhMjsKKyAgICAgICAgICAgICAgICAgIHN1
Y2Nlc3MgPSBhMzsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAvLyBmYWxscyB0aHJvdWdoCisgICAgICAgICAgICAgIGNhc2UgMToK
KyAgICAgICAgICAgICAgICBpZiAoaXNGdW5jdGlvbihhMSkpIHN1Y2Nlc3MgPSBhMTsKKyAgICAg
ICAgICAgICAgICBlbHNlIGlmIChoYXNCb2R5KSBkYXRhID0gYTE7CisgICAgICAgICAgICAgICAg
ZWxzZSBwYXJhbXMgPSBhMTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
Y2FzZSAwOiBicmVhazsKKyAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICB0
aHJvdyAkcmVzb3VyY2VNaW5FcnIoJ2JhZGFyZ3MnLAorICAgICAgICAgICAgICAgICAgJ0V4cGVj
dGVkIHVwIHRvIDQgYXJndW1lbnRzIFtwYXJhbXMsIGRhdGEsIHN1Y2Nlc3MsIGVycm9yXSwgZ290
IHswfSBhcmd1bWVudHMnLAorICAgICAgICAgICAgICAgICAgYXJndW1lbnRzLmxlbmd0aCk7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciBpc0luc3RhbmNlQ2FsbCA9IHRoaXMgaW5z
dGFuY2VvZiBSZXNvdXJjZTsKKyAgICAgICAgICAgIHZhciB2YWx1ZSA9IGlzSW5zdGFuY2VDYWxs
ID8gZGF0YSA6IChhY3Rpb24uaXNBcnJheSA/IFtdIDogbmV3IFJlc291cmNlKGRhdGEpKTsKKyAg
ICAgICAgICAgIHZhciBodHRwQ29uZmlnID0ge307CisgICAgICAgICAgICB2YXIgcmVzcG9uc2VJ
bnRlcmNlcHRvciA9IGFjdGlvbi5pbnRlcmNlcHRvciAmJiBhY3Rpb24uaW50ZXJjZXB0b3IucmVz
cG9uc2UgfHwKKyAgICAgICAgICAgICAgZGVmYXVsdFJlc3BvbnNlSW50ZXJjZXB0b3I7CisgICAg
ICAgICAgICB2YXIgcmVzcG9uc2VFcnJvckludGVyY2VwdG9yID0gYWN0aW9uLmludGVyY2VwdG9y
ICYmIGFjdGlvbi5pbnRlcmNlcHRvci5yZXNwb25zZUVycm9yIHx8CisgICAgICAgICAgICAgIHVu
ZGVmaW5lZDsKKyAgICAgICAgICAgIHZhciB0aW1lb3V0RGVmZXJyZWQ7CisgICAgICAgICAgICB2
YXIgbnVtZXJpY1RpbWVvdXRQcm9taXNlOworCisgICAgICAgICAgICBmb3JFYWNoKGFjdGlvbiwg
ZnVuY3Rpb24odmFsdWUsIGtleSkgeworICAgICAgICAgICAgICBzd2l0Y2ggKGtleSkgeworICAg
ICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICBodHRwQ29uZmlnW2tleV0g
PSBjb3B5KHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IGNhc2UgJ3BhcmFtcyc6CisgICAgICAgICAgICAgICAgY2FzZSAnaXNBcnJheSc6CisgICAgICAg
ICAgICAgICAgY2FzZSAnaW50ZXJjZXB0b3InOgorICAgICAgICAgICAgICAgIGNhc2UgJ2NhbmNl
bGxhYmxlJzoKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9KTsKKworICAgICAgICAgICAgaWYgKCFpc0luc3RhbmNlQ2FsbCAmJiBjYW5jZWxs
YWJsZSkgeworICAgICAgICAgICAgICB0aW1lb3V0RGVmZXJyZWQgPSAkcS5kZWZlcigpOworICAg
ICAgICAgICAgICBodHRwQ29uZmlnLnRpbWVvdXQgPSB0aW1lb3V0RGVmZXJyZWQucHJvbWlzZTsK
KworICAgICAgICAgICAgICBpZiAobnVtZXJpY1RpbWVvdXQpIHsKKyAgICAgICAgICAgICAgICBu
dW1lcmljVGltZW91dFByb21pc2UgPSAkdGltZW91dCh0aW1lb3V0RGVmZXJyZWQucmVzb2x2ZSwg
bnVtZXJpY1RpbWVvdXQpOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGlmIChoYXNCb2R5KSBodHRwQ29uZmlnLmRhdGEgPSBkYXRhOworICAgICAgICAgICAg
cm91dGUuc2V0VXJsUGFyYW1zKGh0dHBDb25maWcsCisgICAgICAgICAgICAgIGV4dGVuZCh7fSwg
ZXh0cmFjdFBhcmFtcyhkYXRhLCBhY3Rpb24ucGFyYW1zIHx8IHt9KSwgcGFyYW1zKSwKKyAgICAg
ICAgICAgICAgYWN0aW9uLnVybCk7CisKKyAgICAgICAgICAgIHZhciBwcm9taXNlID0gJGh0dHAo
aHR0cENvbmZpZykudGhlbihmdW5jdGlvbihyZXNwb25zZSkgeworICAgICAgICAgICAgICB2YXIg
ZGF0YSA9IHJlc3BvbnNlLmRhdGE7CisKKyAgICAgICAgICAgICAgaWYgKGRhdGEpIHsKKyAgICAg
ICAgICAgICAgICAvLyBOZWVkIHRvIGNvbnZlcnQgYWN0aW9uLmlzQXJyYXkgdG8gYm9vbGVhbiBp
biBjYXNlIGl0IGlzIHVuZGVmaW5lZAorICAgICAgICAgICAgICAgIGlmIChhbmd1bGFyLmlzQXJy
YXkoZGF0YSkgIT09ICghIWFjdGlvbi5pc0FycmF5KSkgeworICAgICAgICAgICAgICAgICAgdGhy
b3cgJHJlc291cmNlTWluRXJyKCdiYWRjZmcnLAorICAgICAgICAgICAgICAgICAgICAgICdFcnJv
ciBpbiByZXNvdXJjZSBjb25maWd1cmF0aW9uIGZvciBhY3Rpb24gYHswfWAuIEV4cGVjdGVkIHJl
c3BvbnNlIHRvICcgKworICAgICAgICAgICAgICAgICAgICAgICdjb250YWluIGFuIHsxfSBidXQg
Z290IGFuIHsyfSAoUmVxdWVzdDogezN9IHs0fSknLCBuYW1lLCBhY3Rpb24uaXNBcnJheSA/ICdh
cnJheScgOiAnb2JqZWN0JywKKyAgICAgICAgICAgICAgICAgICAgYW5ndWxhci5pc0FycmF5KGRh
dGEpID8gJ2FycmF5JyA6ICdvYmplY3QnLCBodHRwQ29uZmlnLm1ldGhvZCwgaHR0cENvbmZpZy51
cmwpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoYWN0aW9uLmlzQXJy
YXkpIHsKKyAgICAgICAgICAgICAgICAgIHZhbHVlLmxlbmd0aCA9IDA7CisgICAgICAgICAgICAg
ICAgICBmb3JFYWNoKGRhdGEsIGZ1bmN0aW9uKGl0ZW0pIHsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKHR5cGVvZiBpdGVtID09PSAnb2JqZWN0JykgeworICAgICAgICAgICAgICAgICAgICAgIHZh
bHVlLnB1c2gobmV3IFJlc291cmNlKGl0ZW0pKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgICAvLyBWYWxpZCBKU09OIHZhbHVlcyBtYXkgYmUgc3Ry
aW5nIGxpdGVyYWxzLCBhbmQgdGhlc2Ugc2hvdWxkIG5vdCBiZSBjb252ZXJ0ZWQKKyAgICAgICAg
ICAgICAgICAgICAgICAvLyBpbnRvIG9iamVjdHMuIFRoZXNlIGl0ZW1zIHdpbGwgbm90IGhhdmUg
YWNjZXNzIHRvIHRoZSBSZXNvdXJjZSBwcm90b3R5cGUKKyAgICAgICAgICAgICAgICAgICAgICAv
LyBtZXRob2RzLCBidXQgdW5mb3J0dW5hdGVseSB0aGVyZQorICAgICAgICAgICAgICAgICAgICAg
IHZhbHVlLnB1c2goaXRlbSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICB2YXIg
cHJvbWlzZSA9IHZhbHVlLiRwcm9taXNlOyAgICAgLy8gU2F2ZSB0aGUgcHJvbWlzZQorICAgICAg
ICAgICAgICAgICAgc2hhbGxvd0NsZWFyQW5kQ29weShkYXRhLCB2YWx1ZSk7CisgICAgICAgICAg
ICAgICAgICB2YWx1ZS4kcHJvbWlzZSA9IHByb21pc2U7ICAgICAgICAgLy8gUmVzdG9yZSB0aGUg
cHJvbWlzZQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICByZXNwb25zZS5yZXNvdXJjZSA9IHZhbHVlOworCisgICAgICAgICAgICAgIHJldHVybiByZXNw
b25zZTsKKyAgICAgICAgICAgIH0sIGZ1bmN0aW9uKHJlc3BvbnNlKSB7CisgICAgICAgICAgICAg
IChlcnJvciB8fCBub29wKShyZXNwb25zZSk7CisgICAgICAgICAgICAgIHJldHVybiAkcS5yZWpl
Y3QocmVzcG9uc2UpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIHByb21pc2VbJ2Zp
bmFsbHknXShmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgdmFsdWUuJHJlc29sdmVkID0gdHJ1
ZTsKKyAgICAgICAgICAgICAgaWYgKCFpc0luc3RhbmNlQ2FsbCAmJiBjYW5jZWxsYWJsZSkgewor
ICAgICAgICAgICAgICAgIHZhbHVlLiRjYW5jZWxSZXF1ZXN0ID0gYW5ndWxhci5ub29wOworICAg
ICAgICAgICAgICAgICR0aW1lb3V0LmNhbmNlbChudW1lcmljVGltZW91dFByb21pc2UpOworICAg
ICAgICAgICAgICAgIHRpbWVvdXREZWZlcnJlZCA9IG51bWVyaWNUaW1lb3V0UHJvbWlzZSA9IGh0
dHBDb25maWcudGltZW91dCA9IG51bGw7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0p
OworCisgICAgICAgICAgICBwcm9taXNlID0gcHJvbWlzZS50aGVuKAorICAgICAgICAgICAgICBm
dW5jdGlvbihyZXNwb25zZSkgeworICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IHJlc3BvbnNl
SW50ZXJjZXB0b3IocmVzcG9uc2UpOworICAgICAgICAgICAgICAgIChzdWNjZXNzIHx8IG5vb3Ap
KHZhbHVlLCByZXNwb25zZS5oZWFkZXJzKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7
CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgIHJlc3BvbnNlRXJyb3JJbnRlcmNlcHRv
cik7CisKKyAgICAgICAgICAgIGlmICghaXNJbnN0YW5jZUNhbGwpIHsKKyAgICAgICAgICAgICAg
Ly8gd2UgYXJlIGNyZWF0aW5nIGluc3RhbmNlIC8gY29sbGVjdGlvbgorICAgICAgICAgICAgICAv
LyAtIHNldCB0aGUgaW5pdGlhbCBwcm9taXNlCisgICAgICAgICAgICAgIC8vIC0gcmV0dXJuIHRo
ZSBpbnN0YW5jZSAvIGNvbGxlY3Rpb24KKyAgICAgICAgICAgICAgdmFsdWUuJHByb21pc2UgPSBw
cm9taXNlOworICAgICAgICAgICAgICB2YWx1ZS4kcmVzb2x2ZWQgPSBmYWxzZTsKKyAgICAgICAg
ICAgICAgaWYgKGNhbmNlbGxhYmxlKSB2YWx1ZS4kY2FuY2VsUmVxdWVzdCA9IHRpbWVvdXREZWZl
cnJlZC5yZXNvbHZlOworCisgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgLy8gaW5zdGFuY2UgY2FsbAorICAgICAgICAgICAgcmV0dXJuIHBy
b21pc2U7CisgICAgICAgICAgfTsKKworCisgICAgICAgICAgUmVzb3VyY2UucHJvdG90eXBlWyck
JyArIG5hbWVdID0gZnVuY3Rpb24ocGFyYW1zLCBzdWNjZXNzLCBlcnJvcikgeworICAgICAgICAg
ICAgaWYgKGlzRnVuY3Rpb24ocGFyYW1zKSkgeworICAgICAgICAgICAgICBlcnJvciA9IHN1Y2Nl
c3M7IHN1Y2Nlc3MgPSBwYXJhbXM7IHBhcmFtcyA9IHt9OworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgdmFyIHJlc3VsdCA9IFJlc291cmNlW25hbWVdLmNhbGwodGhpcywgcGFyYW1zLCB0aGlz
LCBzdWNjZXNzLCBlcnJvcik7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0LiRwcm9taXNlIHx8
IHJlc3VsdDsKKyAgICAgICAgICB9OworICAgICAgICB9KTsKKworICAgICAgICBSZXNvdXJjZS5i
aW5kID0gZnVuY3Rpb24oYWRkaXRpb25hbFBhcmFtRGVmYXVsdHMpIHsKKyAgICAgICAgICByZXR1
cm4gcmVzb3VyY2VGYWN0b3J5KHVybCwgZXh0ZW5kKHt9LCBwYXJhbURlZmF1bHRzLCBhZGRpdGlv
bmFsUGFyYW1EZWZhdWx0cyksIGFjdGlvbnMpOworICAgICAgICB9OworCisgICAgICAgIHJldHVy
biBSZXNvdXJjZTsKKyAgICAgIH0KKworICAgICAgcmV0dXJuIHJlc291cmNlRmFjdG9yeTsKKyAg
ICB9XTsKKyAgfSk7CisKKworfSkod2luZG93LCB3aW5kb3cuYW5ndWxhcik7CmRpZmYgLS1naXQg
YS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9hbmd1bGFyanMvbm9kZV9tb2R1bGVzL2FuZ3VsYXItcmVzb3VyY2UvYW5n
dWxhci1yZXNvdXJjZS5taW4uanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvbm9kZV9tb2R1bGVz
L2FuZ3VsYXItcmVzb3VyY2UvYW5ndWxhci1yZXNvdXJjZS5taW4uanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Fl
Y2RkNDA2MjQxMWE1Y2Y4MzAyNWU2NmU1YTE4ZDAwNjYxNzNlNQotLS0gL2Rldi9udWxsCisrKyBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ub2RlX21vZHVsZXMvYW5ndWxhci1yZXNvdXJjZS9hbmd1
bGFyLXJlc291cmNlLm1pbi5qcwpAQCAtMCwwICsxLDE1IEBACisvKgorIEFuZ3VsYXJKUyB2MS41
LjkKKyAoYykgMjAxMC0yMDE2IEdvb2dsZSwgSW5jLiBodHRwOi8vYW5ndWxhcmpzLm9yZworIExp
Y2Vuc2U6IE1JVAorKi8KKyhmdW5jdGlvbihQLGQpeyd1c2Ugc3RyaWN0JztmdW5jdGlvbiBHKHQs
Zyl7Zz1nfHx7fTtkLmZvckVhY2goZyxmdW5jdGlvbihkLHEpe2RlbGV0ZSBnW3FdfSk7Zm9yKHZh
ciBxIGluIHQpIXQuaGFzT3duUHJvcGVydHkocSl8fCIkIj09PXEuY2hhckF0KDApJiYiJCI9PT1x
LmNoYXJBdCgxKXx8KGdbcV09dFtxXSk7cmV0dXJuIGd9dmFyIHo9ZC4kJG1pbkVycigiJHJlc291
cmNlIiksTT0vXihcLlthLXpBLVpfJEBdWzAtOWEtekEtWl8kQF0qKSskLztkLm1vZHVsZSgibmdS
ZXNvdXJjZSIsWyJuZyJdKS5wcm92aWRlcigiJHJlc291cmNlIixmdW5jdGlvbigpe3ZhciB0PS9e
aHR0cHM/OlwvXC9bXlwvXSovLGc9dGhpczt0aGlzLmRlZmF1bHRzPXtzdHJpcFRyYWlsaW5nU2xh
c2hlczohMCxjYW5jZWxsYWJsZTohMSxhY3Rpb25zOntnZXQ6e21ldGhvZDoiR0VUIn0sc2F2ZTp7
bWV0aG9kOiJQT1NUIn0scXVlcnk6e21ldGhvZDoiR0VUIixpc0FycmF5OiEwfSxyZW1vdmU6e21l
dGhvZDoiREVMRVRFIn0sCisiZGVsZXRlIjp7bWV0aG9kOiJERUxFVEUifX19O3RoaXMuJGdldD1b
IiRodHRwIiwiJGxvZyIsIiRxIiwiJHRpbWVvdXQiLGZ1bmN0aW9uKHEsTCxILEkpe2Z1bmN0aW9u
IEEoZCxoKXtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KGQpLnJlcGxhY2UoLyU0MC9naSwiQCIp
LnJlcGxhY2UoLyUzQS9naSwiOiIpLnJlcGxhY2UoLyUyNC9nLCIkIikucmVwbGFjZSgvJTJDL2dp
LCIsIikucmVwbGFjZSgvJTIwL2csaD8iJTIwIjoiKyIpfWZ1bmN0aW9uIEIoZCxoKXt0aGlzLnRl
bXBsYXRlPWQ7dGhpcy5kZWZhdWx0cz12KHt9LGcuZGVmYXVsdHMsaCk7dGhpcy51cmxQYXJhbXM9
e319ZnVuY3Rpb24gSihlLGgsbixrKXtmdW5jdGlvbiBiKGEsYyl7dmFyIGI9e307Yz12KHt9LGgs
Yyk7dShjLGZ1bmN0aW9uKGMsaCl7eChjKSYmKGM9YyhhKSk7dmFyIGY7aWYoYyYmYy5jaGFyQXQm
JiJAIj09PWMuY2hhckF0KDApKXtmPWE7dmFyIGw9Yy5zdWJzdHIoMSk7aWYobnVsbD09bHx8IiI9
PT1sfHwKKyJoYXNPd25Qcm9wZXJ0eSI9PT1sfHwhTS50ZXN0KCIuIitsKSl0aHJvdyB6KCJiYWRt
ZW1iZXIiLGwpO2Zvcih2YXIgbD1sLnNwbGl0KCIuIiksbT0wLGs9bC5sZW5ndGg7bTxrJiZkLmlz
RGVmaW5lZChmKTttKyspe3ZhciByPWxbbV07Zj1udWxsIT09Zj9mW3JdOnZvaWQgMH19ZWxzZSBm
PWM7YltoXT1mfSk7cmV0dXJuIGJ9ZnVuY3Rpb24gTihhKXtyZXR1cm4gYS5yZXNvdXJjZX1mdW5j
dGlvbiBtKGEpe0coYXx8e30sdGhpcyl9dmFyIHQ9bmV3IEIoZSxrKTtuPXYoe30sZy5kZWZhdWx0
cy5hY3Rpb25zLG4pO20ucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3ZhciBhPXYoe30sdGhp
cyk7ZGVsZXRlIGEuJHByb21pc2U7ZGVsZXRlIGEuJHJlc29sdmVkO3JldHVybiBhfTt1KG4sZnVu
Y3Rpb24oYSxjKXt2YXIgaD0vXihQT1NUfFBVVHxQQVRDSCkkL2kudGVzdChhLm1ldGhvZCksZT1h
LnRpbWVvdXQsRT1kLmlzRGVmaW5lZChhLmNhbmNlbGxhYmxlKT9hLmNhbmNlbGxhYmxlOgorayYm
ZC5pc0RlZmluZWQoay5jYW5jZWxsYWJsZSk/ay5jYW5jZWxsYWJsZTpnLmRlZmF1bHRzLmNhbmNl
bGxhYmxlO2UmJiFkLmlzTnVtYmVyKGUpJiYoTC5kZWJ1ZygibmdSZXNvdXJjZTpcbiAgT25seSBu
dW1lcmljIHZhbHVlcyBhcmUgYWxsb3dlZCBhcyBgdGltZW91dGAuXG4gIFByb21pc2VzIGFyZSBu
b3Qgc3VwcG9ydGVkIGluICRyZXNvdXJjZSwgYmVjYXVzZSB0aGUgc2FtZSB2YWx1ZSB3b3VsZCBi
ZSB1c2VkIGZvciBtdWx0aXBsZSByZXF1ZXN0cy4gSWYgeW91IGFyZSBsb29raW5nIGZvciBhIHdh
eSB0byBjYW5jZWwgcmVxdWVzdHMsIHlvdSBzaG91bGQgdXNlIHRoZSBgY2FuY2VsbGFibGVgIG9w
dGlvbi4iKSxkZWxldGUgYS50aW1lb3V0LGU9bnVsbCk7bVtjXT1mdW5jdGlvbihmLGwsayxnKXt2
YXIgcj17fSxuLHcsQztzd2l0Y2goYXJndW1lbnRzLmxlbmd0aCl7Y2FzZSA0OkM9Zyx3PWs7Y2Fz
ZSAzOmNhc2UgMjppZih4KGwpKXtpZih4KGYpKXt3PWY7Qz1sO2JyZWFrfXc9CitsO0M9a31lbHNl
e3I9ZjtuPWw7dz1rO2JyZWFrfWNhc2UgMTp4KGYpP3c9ZjpoP249ZjpyPWY7YnJlYWs7Y2FzZSAw
OmJyZWFrO2RlZmF1bHQ6dGhyb3cgeigiYmFkYXJncyIsYXJndW1lbnRzLmxlbmd0aCk7fXZhciBE
PXRoaXMgaW5zdGFuY2VvZiBtLHA9RD9uOmEuaXNBcnJheT9bXTpuZXcgbShuKSxzPXt9LEE9YS5p
bnRlcmNlcHRvciYmYS5pbnRlcmNlcHRvci5yZXNwb25zZXx8TixCPWEuaW50ZXJjZXB0b3ImJmEu
aW50ZXJjZXB0b3IucmVzcG9uc2VFcnJvcnx8dm9pZCAwLHksRjt1KGEsZnVuY3Rpb24oYSxjKXtz
d2l0Y2goYyl7ZGVmYXVsdDpzW2NdPU8oYSk7Y2FzZSAicGFyYW1zIjpjYXNlICJpc0FycmF5Ijpj
YXNlICJpbnRlcmNlcHRvciI6Y2FzZSAiY2FuY2VsbGFibGUiOn19KTshRCYmRSYmKHk9SC5kZWZl
cigpLHMudGltZW91dD15LnByb21pc2UsZSYmKEY9SSh5LnJlc29sdmUsZSkpKTtoJiYocy5kYXRh
PW4pO3Quc2V0VXJsUGFyYW1zKHMsdih7fSxiKG4sYS5wYXJhbXN8fAore30pLHIpLGEudXJsKTty
PXEocykudGhlbihmdW5jdGlvbihmKXt2YXIgYj1mLmRhdGE7aWYoYil7aWYoZC5pc0FycmF5KGIp
IT09ISFhLmlzQXJyYXkpdGhyb3cgeigiYmFkY2ZnIixjLGEuaXNBcnJheT8iYXJyYXkiOiJvYmpl
Y3QiLGQuaXNBcnJheShiKT8iYXJyYXkiOiJvYmplY3QiLHMubWV0aG9kLHMudXJsKTtpZihhLmlz
QXJyYXkpcC5sZW5ndGg9MCx1KGIsZnVuY3Rpb24oYSl7Im9iamVjdCI9PT10eXBlb2YgYT9wLnB1
c2gobmV3IG0oYSkpOnAucHVzaChhKX0pO2Vsc2V7dmFyIGw9cC4kcHJvbWlzZTtHKGIscCk7cC4k
cHJvbWlzZT1sfX1mLnJlc291cmNlPXA7cmV0dXJuIGZ9LGZ1bmN0aW9uKGEpeyhDfHxLKShhKTty
ZXR1cm4gSC5yZWplY3QoYSl9KTtyWyJmaW5hbGx5Il0oZnVuY3Rpb24oKXtwLiRyZXNvbHZlZD0h
MDshRCYmRSYmKHAuJGNhbmNlbFJlcXVlc3Q9ZC5ub29wLEkuY2FuY2VsKEYpLHk9Rj1zLnRpbWVv
dXQ9bnVsbCl9KTtyPXIudGhlbihmdW5jdGlvbihhKXt2YXIgYz0KK0EoYSk7KHd8fEspKGMsYS5o
ZWFkZXJzKTtyZXR1cm4gY30sQik7cmV0dXJuIEQ/cjoocC4kcHJvbWlzZT1yLHAuJHJlc29sdmVk
PSExLEUmJihwLiRjYW5jZWxSZXF1ZXN0PXkucmVzb2x2ZSkscCl9O20ucHJvdG90eXBlWyIkIitj
XT1mdW5jdGlvbihhLGIsZCl7eChhKSYmKGQ9YixiPWEsYT17fSk7YT1tW2NdLmNhbGwodGhpcyxh
LHRoaXMsYixkKTtyZXR1cm4gYS4kcHJvbWlzZXx8YX19KTttLmJpbmQ9ZnVuY3Rpb24oYSl7cmV0
dXJuIEooZSx2KHt9LGgsYSksbil9O3JldHVybiBtfXZhciBLPWQubm9vcCx1PWQuZm9yRWFjaCx2
PWQuZXh0ZW5kLE89ZC5jb3B5LHg9ZC5pc0Z1bmN0aW9uO0IucHJvdG90eXBlPXtzZXRVcmxQYXJh
bXM6ZnVuY3Rpb24oZSxoLG4pe3ZhciBrPXRoaXMsYj1ufHxrLnRlbXBsYXRlLGcsbSxxPSIiLGE9
ay51cmxQYXJhbXM9e307dShiLnNwbGl0KC9cVy8pLGZ1bmN0aW9uKGMpe2lmKCJoYXNPd25Qcm9w
ZXJ0eSI9PT1jKXRocm93IHooImJhZG5hbWUiKTsKKyEvXlxkKyQvLnRlc3QoYykmJmMmJihuZXcg
UmVnRXhwKCIoXnxbXlxcXFxdKToiK2MrIihcXFd8JCkiKSkudGVzdChiKSYmKGFbY109e2lzUXVl
cnlQYXJhbVZhbHVlOihuZXcgUmVnRXhwKCJcXD8uKj06IitjKyIoPzpcXFd8JCkiKSkudGVzdChi
KX0pfSk7Yj1iLnJlcGxhY2UoL1xcOi9nLCI6Iik7Yj1iLnJlcGxhY2UodCxmdW5jdGlvbihhKXtx
PWE7cmV0dXJuIiJ9KTtoPWh8fHt9O3Uoay51cmxQYXJhbXMsZnVuY3Rpb24oYSxlKXtnPWguaGFz
T3duUHJvcGVydHkoZSk/aFtlXTprLmRlZmF1bHRzW2VdO2QuaXNEZWZpbmVkKGcpJiZudWxsIT09
Zz8obT1hLmlzUXVlcnlQYXJhbVZhbHVlP0EoZywhMCk6QShnLCEwKS5yZXBsYWNlKC8lMjYvZ2ks
IiYiKS5yZXBsYWNlKC8lM0QvZ2ksIj0iKS5yZXBsYWNlKC8lMkIvZ2ksIisiKSxiPWIucmVwbGFj
ZShuZXcgUmVnRXhwKCI6IitlKyIoXFxXfCQpIiwiZyIpLGZ1bmN0aW9uKGEsYyl7cmV0dXJuIG0r
Y30pKTpiPWIucmVwbGFjZShuZXcgUmVnRXhwKCIoLz8pOiIrCitlKyIoXFxXfCQpIiwiZyIpLGZ1
bmN0aW9uKGEsYyxiKXtyZXR1cm4iLyI9PT1iLmNoYXJBdCgwKT9iOmMrYn0pfSk7ay5kZWZhdWx0
cy5zdHJpcFRyYWlsaW5nU2xhc2hlcyYmKGI9Yi5yZXBsYWNlKC9cLyskLywiIil8fCIvIik7Yj1i
LnJlcGxhY2UoL1wvXC4oPz1cdysoJHxcPykpLywiLiIpO2UudXJsPXErYi5yZXBsYWNlKC9cL1xc
XC4vLCIvLiIpO3UoaCxmdW5jdGlvbihhLGIpe2sudXJsUGFyYW1zW2JdfHwoZS5wYXJhbXM9ZS5w
YXJhbXN8fHt9LGUucGFyYW1zW2JdPWEpfSl9fTtyZXR1cm4gSn1dfSl9KSh3aW5kb3csd2luZG93
LmFuZ3VsYXIpOworLy8jIHNvdXJjZU1hcHBpbmdVUkw9YW5ndWxhci1yZXNvdXJjZS5taW4uanMu
bWFwCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvbm9kZV9tb2R1bGVzL2FuZ3Vs
YXItcmVzb3VyY2UvYW5ndWxhci1yZXNvdXJjZS5taW4uanMubWFwIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5n
dWxhcmpzL25vZGVfbW9kdWxlcy9hbmd1bGFyLXJlc291cmNlL2FuZ3VsYXItcmVzb3VyY2UubWlu
LmpzLm1hcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44OTAwOWJlYWU5YzVmNzlmMmU2NjFmMDg4MmZlOTFmOTBhNDJj
OGVhCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL25vZGVfbW9kdWxl
cy9hbmd1bGFyLXJlc291cmNlL2FuZ3VsYXItcmVzb3VyY2UubWluLmpzLm1hcApAQCAtMCwwICsx
LDggQEAKK3sKKyJ2ZXJzaW9uIjozLAorImZpbGUiOiJhbmd1bGFyLXJlc291cmNlLm1pbi5qcyIs
CisibGluZUNvdW50IjoxNCwKKyJtYXBwaW5ncyI6IkE7Ozs7O2FBS0MsU0FBUSxDQUFDQSxDQUFE
LENBQVNDLENBQVQsQ0FBa0IsQ0E2QjNCQyxRQUFTQSxFQUFtQixDQUFDQyxDQUFELENBQU1DLENB
QU4sQ0FBVyxDQUNyQ0EsQ0FBQSxDQUFNQSxDQUFOLEVBQWEsRUFFYkgsRUFBQUksUUFBQSxDQUFn
QkQsQ0FBaEIsQ0FBcUIsUUFBUSxDQUFDRSxDQUFELENBQVFDLENBQVIsQ0FBYSxDQUN4QyxPQUFP
SCxDQUFBLENBQUlHLENBQUosQ0FEaUMsQ0FBMUMsQ0FJQSxLQUFTQSxJQUFBQSxDQUFULEdBQWdC
SixFQUFoQixDQUNNLENBQUFBLENBQUFLLGVBQUEsQ0FBbUJELENBQW5CLENBQUosRUFBbUQsR0FB
bkQsR0FBaUNBLENBQUFFLE9BQUEsQ0FBVyxDQUFYLENBQWpDLEVBQTRFLEdBQTVFLEdBQTBERixD
QUFBRSxPQUFBLENBQVcsQ0FBWCxDQUExRCxHQUNFTCxDQUFBLENBQUlHLENBQUosQ0FERixDQUNh
SixDQUFBLENBQUlJLENBQUosQ0FEYixDQUtGLE9BQU9ILEVBYjhCLENBM0J2QyxJQUFJTSxFQUFr
QlQsQ0FBQVUsU0FBQSxDQUFpQixXQUFqQixDQUF0QixDQUtJQyxFQUFvQixtQ0FtYXhCWCxFQUFB
WSxPQUFBLENBQWUsWUFBZixDQUE2QixDQUFDLElBQUQsQ0FBN0IsQ0FBQUMsU0FBQSxDQUNXLFdB
RFgsQ0FDd0JDLFFBQXlCLEVBQUcsQ0FDaEQsSUFBSUMsRUFBNEIsb0JBQWhDLENBRUlGLEVBQVcs
SUFtRWYsS0FBQUcsU0FBQSxDQUFnQixDQUVkQyxxQkFBc0IsQ0FBQSxDQUZSLENBS2RDLFlBQWEs
Q0FBQSxDQUxDLENBUWRDLFFBQVMsQ0FDUCxJQUFPLENBQUNDLE9BQVEsS0FBVCxDQURBLENBRVAs
S0FBUSxDQUFDQSxPQUFRLE1BQVQsQ0FGRCxDQUdQLE1BQVMsQ0FBQ0EsT0FBUSxLQUFULENBQWdC
QyxRQUFTLENBQUEsQ0FBekIsQ0FIRixDQUlQLE9BQVUsQ0FBQ0QsT0FBUSxRQUFULENBSkg7QUFL
UCxTQUFVLENBQUNBLE9BQVEsUUFBVCxDQUxILENBUkssQ0FpQmhCLEtBQUFFLEtBQUEsQ0FBWSxD
QUFDLE9BQUQsQ0FBVSxNQUFWLENBQWtCLElBQWxCLENBQXdCLFVBQXhCLENBQW9DLFFBQVEsQ0FB
Q0MsQ0FBRCxDQUFRQyxDQUFSLENBQWNDLENBQWQsQ0FBa0JDLENBQWxCLENBQTRCLENBc0NsRkMs
UUFBU0EsRUFBYyxDQUFDQyxDQUFELENBQU1DLENBQU4sQ0FBdUIsQ0FDNUMsTUFBT0MsbUJBQUEs
Q0FBbUJGLENBQW5CLENBQUFHLFFBQUEsQ0FDRyxPQURILENBQ1ksR0FEWixDQUFBQSxRQUFBLENB
RUcsT0FGSCxDQUVZLEdBRlosQ0FBQUEsUUFBQSxDQUdHLE1BSEgsQ0FHVyxHQUhYLENBQUFBLFFB
QUEsQ0FJRyxPQUpILENBSVksR0FKWixDQUFBQSxRQUFBLENBS0csTUFMSCxDQUtZRixDQUFBLENB
QWtCLEtBQWxCLENBQTBCLEdBTHRDLENBRHFDLENBUzlDRyxRQUFTQSxFQUFLLENBQUNDLENBQUQs
Q0FBV2pCLENBQVgsQ0FBcUIsQ0FDakMsSUFBQWlCLFNBQUEsQ0FBZ0JBLENBQ2hCLEtBQUFqQixT
QUFBLENBQWdCa0IsQ0FBQSxDQUFPLEVBQVAsQ0FBV3JCLENBQUFHLFNBQVgsQ0FBOEJBLENBQTlC
LENBQ2hCLEtBQUFtQixVQUFBLENBQWlCLEVBSGdCLENBK0VuQ0MsUUFBU0EsRUFBZSxDQUFDQyxD
QUFELENBQU1DLENBQU4sQ0FBcUJuQixDQUFyQixDQUE4Qm9CLENBQTlCLENBQXVDLENBSzdEQyxR
QUFTQSxFQUFhLENBQUNDLENBQUQsQ0FBT0MsQ0FBUCxDQUFxQixDQUN6QyxJQUFJQyxFQUFNLEVB
Q1ZELEVBQUEsQ0FBZVIsQ0FBQSxDQUFPLEVBQVAsQ0FBV0ksQ0FBWCxDQUEwQkksQ0FBMUIsQ0FD
ZnRDLEVBQUEsQ0FBUXNDLENBQVIsQ0FBc0IsUUFBUSxDQUFDckMsQ0FBRCxDQUFRQyxDQUFSLENB
QWEsQ0FDckNzQyxDQUFBLENBQVd2QyxDQUFYLENBQUosR0FBeUJBLENBQXpCLENBQWlDQSxDQUFB
LENBQU1vQyxDQUFOLENBQWpDLENBQ1csS0FBQSxDQUFBLElBQUFwQyxDQUFBLEVBQVNBLENBQUFH
LE9BQVQsRUFBNkMsR0FBN0MsR0FBeUJILENBQUFHLE9BQUEsQ0FBYSxDQUFiLENBQXpCLENBQUEs
Q0FDVCxDQUFBLENBQUEsQ0FBQSxLQUFBLEVBQUEsQ0FBQSxPQUFBLENBQUEsQ0FBQSxDQTVuQlos
SUFMZ0IsSUFLaEIsRUFBdUJxQyxDQUF2QixFQUxpQyxFQUtqQyxHQUF1QkEsQ0FBdkI7QUFMZ0Qs
Z0JBS2hELEdBQXVCQSxDQUF2QixFQUpJLENBQUFsQyxDQUFBbUMsS0FBQSxDQUF1QixHQUF2QixD
QUltQkQsQ0FKbkIsQ0FJSixDQUNFLEtBQU1wQyxFQUFBLENBQWdCLFdBQWhCLENBQXNFb0MsQ0FB
dEUsQ0FBTixDQUdGLElBRElFLElBQUFBLEVBQU9GLENBQUFHLE1BQUEsQ0FBVyxHQUFYLENBQVBE
LENBQ0tFLEVBQUksQ0FEVEYsQ0FDWUcsRUFBS0gsQ0FBQUksT0FBckIsQ0FBa0NGLENBQWxDLENB
QXNDQyxDQUF0QyxFQUE0Q2xELENBQUFvRCxVQUFBLENBQWtCQyxDQUFsQixDQUE1QyxDQUFvRUos
Q0FBQSxFQUFwRSxDQUF5RSxDQUN2RSxJQUFJM0MsRUFBTXlDLENBQUEsQ0FBS0UsQ0FBTCxDQUNW
SSxFQUFBLENBQWUsSUFBVCxHQUFDQSxDQUFELENBQWlCQSxDQUFBLENBQUkvQyxDQUFKLENBQWpC
LENBQTRCZ0QsSUFBQUEsRUFGcUMsQ0F1bkJwRCxDQUFBLElBQ2lDakQsRUFBQUEsQ0FBQUEsQ0FE
NUNzQyxFQUFBLENBQUlyQyxDQUFKLENBQUEsQ0FBVyxDQUY4QixDQUEzQyxDQUtBLE9BQU9xQyxF
QVJrQyxDQVczQ1ksUUFBU0EsRUFBMEIsQ0FBQ0MsQ0FBRCxDQUFXLENBQzVDLE1BQU9BLEVBQUFD
LFNBRHFDLENBSTlDQyxRQUFTQSxFQUFRLENBQUNyRCxDQUFELENBQVEsQ0FDdkJKLENBQUEsQ0FB
b0JJLENBQXBCLEVBQTZCLEVBQTdCLENBQWlDLElBQWpDLENBRHVCLENBbkJ6QixJQUFJc0QsRUFB
USxJQUFJM0IsQ0FBSixDQUFVSyxDQUFWLENBQWVFLENBQWYsQ0FFWnBCLEVBQUEsQ0FBVWUsQ0FB
QSxDQUFPLEVBQVAsQ0FBV3JCLENBQUFHLFNBQUFHLFFBQVgsQ0FBc0NBLENBQXRDLENBcUJWdUMs
RUFBQUUsVUFBQUMsT0FBQSxDQUE0QkMsUUFBUSxFQUFHLENBQ3JDLElBQUlyQixFQUFPUCxDQUFB
LENBQU8sRUFBUCxDQUFXLElBQVgsQ0FDWCxRQUFPTyxDQUFBc0IsU0FDUCxRQUFPdEIsQ0FBQXVC
LFVBQ1AsT0FBT3ZCLEVBSjhCLENBT3ZDckMsRUFBQSxDQUFRZSxDQUFSLENBQWlCLFFBQVEsQ0FB
QzhDLENBQUQsQ0FBU0MsQ0FBVCxDQUFlLENBQ3RDLElBQUlDLEVBQVUscUJBQUFyQixLQUFBLENB
QTJCbUIsQ0FBQTdDLE9BQTNCLENBQWQsQ0FDSWdELEVBQWlCSCxDQUFBSSxRQURyQixDQUVJbkQs
RUFBY2xCLENBQUFvRCxVQUFBLENBQWtCYSxDQUFBL0MsWUFBbEIsQ0FBQSxDQUF3QytDLENBQUEv
QyxZQUF4QztBQUNicUIsQ0FBRCxFQUFZdkMsQ0FBQW9ELFVBQUEsQ0FBa0JiLENBQUFyQixZQUFs
QixDQUFaLENBQXNEcUIsQ0FBQXJCLFlBQXRELENBQ0FMLENBQUFHLFNBQUFFLFlBRUFrRCxFQUFK
LEVBQXVCLENBQUFwRSxDQUFBc0UsU0FBQSxDQUFpQkYsQ0FBakIsQ0FBdkIsR0FDRTVDLENBQUEr
QyxNQUFBLENBQVcsZ1FBQVgsQ0FNQSxDQURBLE9BQU9OLENBQUFJLFFBQ1AsQ0FBQUQsQ0FBQSxD
QUFpQixJQVBuQixDQVVBVixFQUFBLENBQVNRLENBQVQsQ0FBQSxDQUFpQixRQUFRLENBQUNNLENB
QUQsQ0FBS0MsQ0FBTCxDQUFTQyxDQUFULENBQWFDLENBQWIsQ0FBaUIsQ0FBQSxJQUNwQ0MsRUFB
UyxFQUQyQixDQUN2Qm5DLENBRHVCLENBQ2pCb0MsQ0FEaUIsQ0FDUkMsQ0FFaEMsUUFBUUMsU0FB
QTVCLE9BQVIsRUFDRSxLQUFLLENBQUwsQ0FDRTJCLENBQ0EsQ0FEUUgsQ0FDUixDQUFBRSxDQUFB
LENBQVVILENBRVosTUFBSyxDQUFMLENBQ0EsS0FBSyxDQUFMLENBQ0UsR0FBSTlCLENBQUEsQ0FB
VzZCLENBQVgsQ0FBSixDQUFvQixDQUNsQixHQUFJN0IsQ0FBQSxDQUFXNEIsQ0FBWCxDQUFKLENB
QW9CLENBQ2xCSyxDQUFBLENBQVVMLENBQ1ZNLEVBQUEsQ0FBUUwsQ0FDUixNQUhrQixDQU1wQkks
Q0FBQTtBQUFVSixDQUNWSyxFQUFBLENBQVFKLENBUlUsQ0FBcEIsSUFVTyxDQUNMRSxDQUFBLENB
QVNKLENBQ1QvQixFQUFBLENBQU9nQyxDQUNQSSxFQUFBLENBQVVILENBQ1YsTUFKSyxDQU9ULEtB
QUssQ0FBTCxDQUNNOUIsQ0FBQSxDQUFXNEIsQ0FBWCxDQUFKLENBQW9CSyxDQUFwQixDQUE4Qkws
Q0FBOUIsQ0FDU0wsQ0FBSixDQUFhMUIsQ0FBYixDQUFvQitCLENBQXBCLENBQ0FJLENBREEsQ0FD
U0osQ0FDZCxNQUNGLE1BQUssQ0FBTCxDQUFRLEtBQ1IsU0FDRSxLQUFNL0QsRUFBQSxDQUFnQixT
QUFoQixDQUVKc0UsU0FBQTVCLE9BRkksQ0FBTixDQS9CSixDQW9DQSxJQUFJNkIsRUFBaUIsSUFB
akJBLFdBQWlDdEIsRUFBckMsQ0FDSXJELEVBQVEyRSxDQUFBLENBQWlCdkMsQ0FBakIsQ0FBeUJ3
QixDQUFBNUMsUUFBQSxDQUFpQixFQUFqQixDQUFzQixJQUFJcUMsQ0FBSixDQUFhakIsQ0FBYixD
QUQzRCxDQUVJd0MsRUFBYSxFQUZqQixDQUdJQyxFQUFzQmpCLENBQUFrQixZQUF0QkQsRUFBNENq
QixDQUFBa0IsWUFBQTNCLFNBQTVDMEIsRUFDRjNCLENBSkYsQ0FLSTZCLEVBQTJCbkIsQ0FBQWtC
LFlBQTNCQyxFQUFpRG5CLENBQUFrQixZQUFBRSxjQUFqREQsRUFDRjlCLElBQUFBLEVBTkYsQ0FP
SWdDLENBUEosQ0FRSUMsQ0FFSm5GLEVBQUEsQ0FBUTZELENBQVIsQ0FBZ0IsUUFBUSxDQUFDNUQs
Q0FBRCxDQUFRQyxDQUFSLENBQWEsQ0FDbkMsT0FBUUEsQ0FBUixFQUNFLFFBQ0UyRSxDQUFBLENB
QVczRSxDQUFYLENBQUEsQ0FBa0JrRixDQUFBLENBQUtuRixDQUFMLENBRXBCLE1BQUssUUFBTCxD
QUNBLEtBQUssU0FBTCxDQUNBLEtBQUssYUFBTCxDQUNBLEtBQUssYUFBTCxDQVBGLENBRG1DLENB
QXJDLENBYUsyRSxFQUFBQSxDQUFMLEVBQXVCOUQsQ0FBdkIsR0FDRW9FLENBR0EsQ0FIa0I3RCxD
QUFBZ0UsTUFBQSxFQUdsQixDQUZBUixDQUFBWixRQUVBLENBRnFCaUIsQ0FBQUksUUFFckIsQ0FB
SXRCLENBQUosR0FDRW1CLENBREYsQ0FDMEI3RCxDQUFBLENBQVM0RCxDQUFBSyxRQUFULENBQWtD
dkIsQ0FBbEMsQ0FEMUIsQ0FKRixDQVNJRCxFQUFKLEdBQWFjLENBQUF4QyxLQUFiLENBQStCQSxD
QUEvQixDQUNBa0IsRUFBQWlDLGFBQUEsQ0FBbUJYLENBQW5CLENBQ0UvQyxDQUFBLENBQU8sRUFB
UCxDQUFXTSxDQUFBLENBQWNDLENBQWQsQ0FBb0J3QixDQUFBVyxPQUFwQjtBQUFxQyxFQUFyQyxD
QUFYLENBQXFEQSxDQUFyRCxDQURGLENBRUVYLENBQUE1QixJQUZGLENBSUlxRCxFQUFBQSxDQUFV
bkUsQ0FBQSxDQUFNMEQsQ0FBTixDQUFBWSxLQUFBLENBQXVCLFFBQVEsQ0FBQ3JDLENBQUQsQ0FB
VyxDQUN0RCxJQUFJZixFQUFPZSxDQUFBZixLQUVYLElBQUlBLENBQUosQ0FBVSxDQUVSLEdBQUl6
QyxDQUFBcUIsUUFBQSxDQUFnQm9CLENBQWhCLENBQUosR0FBK0IsQ0FBRXBCLENBQUE0QyxDQUFB
NUMsUUFBakMsQ0FDRSxLQUFNWixFQUFBLENBQWdCLFFBQWhCLENBRWtEeUQsQ0FGbEQsQ0FFd0RE
LENBQUE1QyxRQUFBLENBQWlCLE9BQWpCLENBQTJCLFFBRm5GLENBR0pyQixDQUFBcUIsUUFBQSxD
QUFnQm9CLENBQWhCLENBQUEsQ0FBd0IsT0FBeEIsQ0FBa0MsUUFIOUIsQ0FHd0N3QyxDQUFBN0Qs
T0FIeEMsQ0FHMkQ2RCxDQUFBNUMsSUFIM0QsQ0FBTixDQUtGLEdBQUk0QixDQUFBNUMsUUFBSixD
QUNFaEIsQ0FBQThDLE9BQ0EsQ0FEZSxDQUNmLENBQUEvQyxDQUFBLENBQVFxQyxDQUFSLENBQWMs
UUFBUSxDQUFDcUQsQ0FBRCxDQUFPLENBQ1AsUUFBcEIsR0FBSSxNQUFPQSxFQUFYLENBQ0V6RixD
QUFBMEYsS0FBQSxDQUFXLElBQUlyQyxDQUFKLENBQWFvQyxDQUFiLENBQVgsQ0FERixDQU1FekYs
Q0FBQTBGLEtBQUEsQ0FBV0QsQ0FBWCxDQVB5QixDQUE3QixDQUZGLEtBWU8sQ0FDTCxJQUFJSixF
QUFVckYsQ0FBQTBELFNBQ2Q5RCxFQUFBLENBQW9Cd0MsQ0FBcEIsQ0FBMEJwQyxDQUExQixDQUNB
QSxFQUFBMEQsU0FBQSxDQUFpQjJCLENBSFosQ0FwQkMsQ0EwQlZsQyxDQUFBQyxTQUFBLENBQW9C
cEQsQ0FFcEIsT0FBT21ELEVBL0IrQyxDQUExQyxDQWdDWCxRQUFRLENBQUNBLENBQUQsQ0FBVyxD
QUNwQixDQUFDc0IsQ0FBRCxFQUFVa0IsQ0FBVixFQUFnQnhDLENBQWhCLENBQ0EsT0FBTy9CLEVB
QUF3RSxPQUFBLENBQVV6QyxDQUFWLENBRmEsQ0FoQ1IsQ0FxQ2RrQyxFQUFBLENBQVEsU0FBUixD
QUFBLENBQW1CLFFBQVEsRUFBRyxDQUM1QnJGLENBQUEyRCxVQUFBLENBQWtCLENBQUEsQ0FDYmdC
LEVBQUFBLENBQUwsRUFBdUI5RCxDQUF2QixHQUNFYixDQUFBNkYsZUFFQSxDQUZ1QmxHLENBQUFn
RyxLQUV2QixDQURBdEUsQ0FBQXlFLE9BQUEsQ0FBZ0JaLENBQWhCLENBQ0EsQ0FBQUQsQ0FBQSxD
QUFrQkMsQ0FBbEIsQ0FBMENOLENBQUFaLFFBQTFDLENBQStELElBSGpFLENBRjRCLENBQTlCLENB
U0FxQixFQUFBLENBQVVBLENBQUFHLEtBQUEsQ0FDUixRQUFRLENBQUNyQyxDQUFELENBQVcsQ0FD
akIsSUFBSW5EO0FBQVE2RSxDQUFBLENBQW9CMUIsQ0FBcEIsQ0FDWixFQUFDcUIsQ0FBRCxFQUFZ
bUIsQ0FBWixFQUFrQjNGLENBQWxCLENBQXlCbUQsQ0FBQTRDLFFBQXpCLENBQ0EsT0FBTy9GLEVB
SFUsQ0FEWCxDQU1SK0UsQ0FOUSxDQVFWLE9BQUtKLEVBQUwsQ0FZT1UsQ0FaUCxFQUlFckYsQ0FB
QTBELFNBSU8xRCxDQUpVcUYsQ0FJVnJGLENBSFBBLENBQUEyRCxVQUdPM0QsQ0FIVyxDQUFBLENB
R1hBLENBRkhhLENBRUdiLEdBRlVBLENBQUE2RixlQUVWN0YsQ0FGaUNpRixDQUFBSyxRQUVqQ3RG
LEVBQUFBLENBUlQsQ0FsSXdDLENBa0oxQ3FELEVBQUFFLFVBQUEsQ0FBbUIsR0FBbkIsQ0FBeUJN
LENBQXpCLENBQUEsQ0FBaUMsUUFBUSxDQUFDVSxDQUFELENBQVNDLENBQVQsQ0FBa0JDLENBQWxC
LENBQXlCLENBQzVEbEMsQ0FBQSxDQUFXZ0MsQ0FBWCxDQUFKLEdBQ0VFLENBQW1DLENBQTNCRCxD
QUEyQixDQUFsQkEsQ0FBa0IsQ0FBUkQsQ0FBUSxDQUFBQSxDQUFBLENBQVMsRUFEOUMsQ0FHSXlC
LEVBQUFBLENBQVMzQyxDQUFBLENBQVNRLENBQVQsQ0FBQW9DLEtBQUEsQ0FBb0IsSUFBcEIsQ0FB
MEIxQixDQUExQixDQUFrQyxJQUFsQyxDQUF3Q0MsQ0FBeEMsQ0FBaURDLENBQWpELENBQ2IsT0FB
T3VCLEVBQUF0QyxTQUFQLEVBQTBCc0MsQ0FMc0MsQ0FuSzVCLENBQXhDLENBNEtBM0MsRUFBQTZD
LEtBQUEsQ0FBZ0JDLFFBQVEsQ0FBQ0MsQ0FBRCxDQUEwQixDQUNoRCxNQUFPckUsRUFBQSxDQUFn
QkMsQ0FBaEIsQ0FBcUJILENBQUEsQ0FBTyxFQUFQLENBQVdJLENBQVgsQ0FBMEJtRSxDQUExQixD
QUFyQixDQUF5RXRGLENBQXpFLENBRHlDLENBSWxELE9BQU91QyxFQS9Nc0QsQ0E5SG1CLElBRTlF
c0MsRUFBT2hHLENBQUFnRyxLQUZ1RSxDQUdoRjVGLEVBQVVKLENBQUFJLFFBSHNFLENBSWhGOEIs
RUFBU2xDLENBQUFrQyxPQUp1RSxDQUtoRnNELEVBQU94RixDQUFBd0YsS0FMeUUsQ0FNaEY1QyxF
QUFhNUMsQ0FBQTRDLFdBK0NmWixFQUFBNEIsVUFBQSxDQUFrQixDQUNoQmdDLGFBQWNBLFFBQVEs
Q0FBQ2MsQ0FBRCxDQUFTOUIsQ0FBVCxDQUFpQitCLENBQWpCLENBQTRCLENBQUEsSUFDNUNDLEVB
QU8sSUFEcUMsQ0FFOUN2RSxFQUFNc0UsQ0FBTnRFLEVBQW1CdUUsQ0FBQTNFLFNBRjJCLENBRzlD
TCxDQUg4QyxDQUk5Q2lGLENBSjhDLENBSzlDQyxFQUFvQixFQUwwQixDQU81QzNFLEVBQVl5RSxD
QUFBekUsVUFBWkEsQ0FBNkIsRUFDakMvQixFQUFBLENBQVFpQyxDQUFBVyxNQUFBLENBQVUsSUFB
VixDQUFSLENBQXlCLFFBQVEsQ0FBQytELENBQUQsQ0FBUSxDQUN2QyxHQUFjLGdCQUFkLEdBQUlB
LENBQUosQ0FDRSxLQUFNdEcsRUFBQSxDQUFnQixTQUFoQixDQUFOO0FBRUksQ0FBQSxPQUFBcUMs
S0FBQSxDQUEwQmlFLENBQTFCLENBQU4sRUFBMkNBLENBQTNDLEVBQ0dqRSxDQUFBLElBQUlrRSxN
QUFKLENBQVcsY0FBWCxDQUE0QkQsQ0FBNUIsQ0FBb0MsU0FBcEMsQ0FBQWpFLE1BQUEsQ0FBb0RU
LENBQXBELENBREgsR0FFRUYsQ0FBQSxDQUFVNEUsQ0FBVixDQUZGLENBRXFCLENBQ2pCRSxrQkFB
bUJuRSxDQUFDLElBQUlrRSxNQUFKLENBQVcsU0FBWCxDQUF1QkQsQ0FBdkIsQ0FBK0IsV0FBL0Is
Q0FBRGpFLE1BQUEsQ0FBbURULENBQW5ELENBREYsQ0FGckIsQ0FKdUMsQ0FBekMsQ0FXQUEsRUFB
QSxDQUFNQSxDQUFBTixRQUFBLENBQVksTUFBWixDQUFvQixHQUFwQixDQUNOTSxFQUFBLENBQU1B
LENBQUFOLFFBQUEsQ0FBWWhCLENBQVosQ0FBdUMsUUFBUSxDQUFDbUcsQ0FBRCxDQUFRLENBQzNE
SixDQUFBLENBQW9CSSxDQUNwQixPQUFPLEVBRm9ELENBQXZELENBS050QyxFQUFBLENBQVNBLENB
QVQsRUFBbUIsRUFDbkJ4RSxFQUFBLENBQVF3RyxDQUFBekUsVUFBUixDQUF3QixRQUFRLENBQUNn
RixDQUFELENBQVlDLENBQVosQ0FBc0IsQ0FDcER4RixDQUFBLENBQU1nRCxDQUFBckUsZUFBQSxD
QUFzQjZHLENBQXRCLENBQUEsQ0FBa0N4QyxDQUFBLENBQU93QyxDQUFQLENBQWxDLENBQXFEUixD
QUFBNUYsU0FBQSxDQUFjb0csQ0FBZCxDQUN2RHBILEVBQUFvRCxVQUFBLENBQWtCeEIsQ0FBbEIs
Q0FBSixFQUFzQyxJQUF0QyxHQUE4QkEsQ0FBOUIsRUFFSWlGLENBSUYsQ0FMSU0sQ0FBQUYsa0JB
QUosQ0FDZXRGLENBQUEsQ0FBZUMsQ0FBZixDQUFvQixDQUFBLENBQXBCLENBRGYsQ0EvRENELENB
QUEsQ0FrRStCQyxDQWxFL0IsQ0FBb0IsQ0FBQSxDQUFwQixDQUFBRyxRQUFBLENBQ0csT0FESCxD
QUNZLEdBRFosQ0FBQUEsUUFBQSxDQUVHLE9BRkgsQ0FFWSxHQUZaLENBQUFBLFFBQUEsQ0FHRyxP
QUhILENBR1ksR0FIWixDQW9FRCxDQUFBTSxDQUFBLENBQU1BLENBQUFOLFFBQUEsQ0FBWSxJQUFJ
aUYsTUFBSixDQUFXLEdBQVgsQ0FBaUJJLENBQWpCLENBQTRCLFNBQTVCLENBQXVDLEdBQXZDLENB
QVosQ0FBeUQsUUFBUSxDQUFDRixDQUFELENBQVFHLENBQVIsQ0FBWSxDQUNqRixNQUFPUixFQUFQ
LENBQW9CUSxDQUQ2RCxDQUE3RSxDQU5SLEVBVUVoRixDQVZGLENBVVFBLENBQUFOLFFBQUEsQ0FB
WSxJQUFJaUYsTUFBSixDQUFXLE9BQVg7QUFBcUJJLENBQXJCLENBQWdDLFNBQWhDLENBQTJDLEdB
QTNDLENBQVosQ0FBNkQsUUFBUSxDQUFDRixDQUFELENBQ3ZFSSxDQUR1RSxDQUN2REMsQ0FEdUQs
Q0FDakQsQ0FDeEIsTUFBdUIsR0FBdkIsR0FBSUEsQ0FBQS9HLE9BQUEsQ0FBWSxDQUFaLENBQUos
Q0FDUytHLENBRFQsQ0FHU0QsQ0FIVCxDQUcwQkMsQ0FKRixDQURwQixDQVo0QyxDQUF0RCxDQXdC
SVgsRUFBQTVGLFNBQUFDLHFCQUFKLEdBQ0VvQixDQURGLENBQ1FBLENBQUFOLFFBQUEsQ0FBWSxN
QUFaLENBQW9CLEVBQXBCLENBRFIsRUFDbUMsR0FEbkMsQ0FNQU0sRUFBQSxDQUFNQSxDQUFBTixR
QUFBLENBQVksbUJBQVosQ0FBaUMsR0FBakMsQ0FFTjJFLEVBQUFyRSxJQUFBLENBQWF5RSxDQUFi
LENBQWlDekUsQ0FBQU4sUUFBQSxDQUFZLFFBQVosQ0FBc0IsSUFBdEIsQ0FJakMzQixFQUFBLENB
QVF3RSxDQUFSLENBQWdCLFFBQVEsQ0FBQ3ZFLENBQUQsQ0FBUUMsQ0FBUixDQUFhLENBQzlCc0cs
Q0FBQXpFLFVBQUEsQ0FBZTdCLENBQWYsQ0FBTCxHQUNFb0csQ0FBQTlCLE9BQ0EsQ0FEZ0I4QixD
QUFBOUIsT0FDaEIsRUFEaUMsRUFDakMsQ0FBQThCLENBQUE5QixPQUFBLENBQWN0RSxDQUFkLENB
QUEsQ0FBcUJELENBRnZCLENBRG1DLENBQXJDLENBOURnRCxDQURsQyxDQTJSbEIsT0FBTytCLEVB
aFYyRSxDQUF4RSxDQXZGb0MsQ0FEcEQsQ0ExYTJCLENBQTFCLENBQUQsQ0F1MUJHckMsTUF2MUJI
LENBdTFCV0EsTUFBQUMsUUF2MUJYOyIsCisic291cmNlcyI6WyJhbmd1bGFyLXJlc291cmNlLmpz
Il0sCisibmFtZXMiOlsid2luZG93IiwiYW5ndWxhciIsInNoYWxsb3dDbGVhckFuZENvcHkiLCJz
cmMiLCJkc3QiLCJmb3JFYWNoIiwidmFsdWUiLCJrZXkiLCJoYXNPd25Qcm9wZXJ0eSIsImNoYXJB
dCIsIiRyZXNvdXJjZU1pbkVyciIsIiQkbWluRXJyIiwiTUVNQkVSX05BTUVfUkVHRVgiLCJtb2R1
bGUiLCJwcm92aWRlciIsIlJlc291cmNlUHJvdmlkZXIiLCJQUk9UT0NPTF9BTkRfRE9NQUlOX1JF
R0VYIiwiZGVmYXVsdHMiLCJzdHJpcFRyYWlsaW5nU2xhc2hlcyIsImNhbmNlbGxhYmxlIiwiYWN0
aW9ucyIsIm1ldGhvZCIsImlzQXJyYXkiLCIkZ2V0IiwiJGh0dHAiLCIkbG9nIiwiJHEiLCIkdGlt
ZW91dCIsImVuY29kZVVyaVF1ZXJ5IiwidmFsIiwicGN0RW5jb2RlU3BhY2VzIiwiZW5jb2RlVVJJ
Q29tcG9uZW50IiwicmVwbGFjZSIsIlJvdXRlIiwidGVtcGxhdGUiLCJleHRlbmQiLCJ1cmxQYXJh
bXMiLCJyZXNvdXJjZUZhY3RvcnkiLCJ1cmwiLCJwYXJhbURlZmF1bHRzIiwib3B0aW9ucyIsImV4
dHJhY3RQYXJhbXMiLCJkYXRhIiwiYWN0aW9uUGFyYW1zIiwiaWRzIiwiaXNGdW5jdGlvbiIsInBh
dGgiLCJ0ZXN0Iiwia2V5cyIsInNwbGl0IiwiaSIsImlpIiwibGVuZ3RoIiwiaXNEZWZpbmVkIiwi
b2JqIiwidW5kZWZpbmVkIiwiZGVmYXVsdFJlc3BvbnNlSW50ZXJjZXB0b3IiLCJyZXNwb25zZSIs
InJlc291cmNlIiwiUmVzb3VyY2UiLCJyb3V0ZSIsInByb3RvdHlwZSIsInRvSlNPTiIsIlJlc291
cmNlLnByb3RvdHlwZS50b0pTT04iLCIkcHJvbWlzZSIsIiRyZXNvbHZlZCIsImFjdGlvbiIsIm5h
bWUiLCJoYXNCb2R5IiwibnVtZXJpY1RpbWVvdXQiLCJ0aW1lb3V0IiwiaXNOdW1iZXIiLCJkZWJ1
ZyIsImExIiwiYTIiLCJhMyIsImE0IiwicGFyYW1zIiwic3VjY2VzcyIsImVycm9yIiwiYXJndW1l
bnRzIiwiaXNJbnN0YW5jZUNhbGwiLCJodHRwQ29uZmlnIiwicmVzcG9uc2VJbnRlcmNlcHRvciIs
ImludGVyY2VwdG9yIiwicmVzcG9uc2VFcnJvckludGVyY2VwdG9yIiwicmVzcG9uc2VFcnJvciIs
InRpbWVvdXREZWZlcnJlZCIsIm51bWVyaWNUaW1lb3V0UHJvbWlzZSIsImNvcHkiLCJkZWZlciIs
InByb21pc2UiLCJyZXNvbHZlIiwic2V0VXJsUGFyYW1zIiwidGhlbiIsIml0ZW0iLCJwdXNoIiwi
bm9vcCIsInJlamVjdCIsIiRjYW5jZWxSZXF1ZXN0IiwiY2FuY2VsIiwiaGVhZGVycyIsInJlc3Vs
dCIsImNhbGwiLCJiaW5kIiwiUmVzb3VyY2UuYmluZCIsImFkZGl0aW9uYWxQYXJhbURlZmF1bHRz
IiwiY29uZmlnIiwiYWN0aW9uVXJsIiwic2VsZiIsImVuY29kZWRWYWwiLCJwcm90b2NvbEFuZERv
bWFpbiIsInBhcmFtIiwiUmVnRXhwIiwiaXNRdWVyeVBhcmFtVmFsdWUiLCJtYXRjaCIsInBhcmFt
SW5mbyIsInVybFBhcmFtIiwicDEiLCJsZWFkaW5nU2xhc2hlcyIsInRhaWwiXQorfQpkaWZmIC0t
Z2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL25vZGVfbW9kdWxlcy9hbmd1bGFyLXJlc291cmNl
L2Jvd2VyLmpzb24gYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvbm9kZV9tb2R1bGVzL2FuZ3VsYXIt
cmVzb3VyY2UvYm93ZXIuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YzJiZGI0YTg4ZGFlNDgzZDk4M2ZiNTM5
NzBhNzMyMTMwNDE4NWQ1Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpz
L25vZGVfbW9kdWxlcy9hbmd1bGFyLXJlc291cmNlL2Jvd2VyLmpzb24KQEAgLTAsMCArMSwxMCBA
QAoreworICAibmFtZSI6ICJhbmd1bGFyLXJlc291cmNlIiwKKyAgInZlcnNpb24iOiAiMS41Ljki
LAorICAibGljZW5zZSI6ICJNSVQiLAorICAibWFpbiI6ICIuL2FuZ3VsYXItcmVzb3VyY2UuanMi
LAorICAiaWdub3JlIjogW10sCisgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgImFuZ3VsYXIiOiAi
MS41LjkiCisgIH0KK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ub2RlX21v
ZHVsZXMvYW5ndWxhci1yZXNvdXJjZS9pbmRleC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9u
b2RlX21vZHVsZXMvYW5ndWxhci1yZXNvdXJjZS9pbmRleC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYzQwMTUy
OThkMGY5YmUwZmI2YmU2NjhlMjJlMDg2YzI1YTNmM2U1Ci0tLSAvZGV2L251bGwKKysrIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvYW5ndWxhcmpzL25vZGVfbW9kdWxlcy9hbmd1bGFyLXJlc291cmNlL2luZGV4Lmpz
CkBAIC0wLDAgKzEsMiBAQAorcmVxdWlyZSgnLi9hbmd1bGFyLXJlc291cmNlJyk7Cittb2R1bGUu
ZXhwb3J0cyA9ICduZ1Jlc291cmNlJzsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJq
cy9ub2RlX21vZHVsZXMvYW5ndWxhci1yZXNvdXJjZS9wYWNrYWdlLmpzb24gYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9hbmd1bGFyanMvbm9kZV9tb2R1bGVzL2FuZ3VsYXItcmVzb3VyY2UvcGFja2FnZS5qc29uCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkZjc2Y2U3ZjQ4MmQ5OTNlMTAxOWRkOTlhMzU1MzAzYWEwN2Q3ZjYKLS0tIC9k
ZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvbm9kZV9tb2R1bGVzL2FuZ3VsYXIt
cmVzb3VyY2UvcGFja2FnZS5qc29uCkBAIC0wLDAgKzEsMTA1IEBACit7CisgICJfYXJncyI6IFsK
KyAgICBbCisgICAgICB7CisgICAgICAgICJyYXciOiAiYW5ndWxhci1yZXNvdXJjZUAxLjUuOSIs
CisgICAgICAgICJzY29wZSI6IG51bGwsCisgICAgICAgICJlc2NhcGVkTmFtZSI6ICJhbmd1bGFy
LXJlc291cmNlIiwKKyAgICAgICAgIm5hbWUiOiAiYW5ndWxhci1yZXNvdXJjZSIsCisgICAgICAg
ICJyYXdTcGVjIjogIjEuNS45IiwKKyAgICAgICAgInNwZWMiOiAiMS41LjkiLAorICAgICAgICAi
dHlwZSI6ICJ2ZXJzaW9uIgorICAgICAgfSwKKyAgICAgICIvVXNlcnMvYWRkeW8vcHJvamVjdHMv
c3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3Vs
YXJqcyIKKyAgICBdCisgIF0sCisgICJfZnJvbSI6ICJhbmd1bGFyLXJlc291cmNlQDEuNS45IiwK
KyAgIl9pZCI6ICJhbmd1bGFyLXJlc291cmNlQDEuNS45IiwKKyAgIl9pbkNhY2hlIjogdHJ1ZSwK
KyAgIl9sb2NhdGlvbiI6ICIvYW5ndWxhci1yZXNvdXJjZSIsCisgICJfbm9kZVZlcnNpb24iOiAi
NC40LjciLAorICAiX25wbU9wZXJhdGlvbmFsSW50ZXJuYWwiOiB7CisgICAgImhvc3QiOiAicGFj
a2FnZXMtMTgtZWFzdC5pbnRlcm5hbC5ucG1qcy5jb20iLAorICAgICJ0bXAiOiAidG1wL2FuZ3Vs
YXItcmVzb3VyY2UtMS41LjkudGd6XzE0ODAwMTg3MTQ3MDFfMC4yNzc5NzkzNDY0NTc4Njg4Igor
ICB9LAorICAiX25wbVVzZXIiOiB7CisgICAgIm5hbWUiOiAiYW5ndWxhcmNvcmUiLAorICAgICJl
bWFpbCI6ICJhbmd1bGFyLWNvcmUrbnBtQGdvb2dsZS5jb20iCisgIH0sCisgICJfbnBtVmVyc2lv
biI6ICIyLjE1LjgiLAorICAiX3BoYW50b21DaGlsZHJlbiI6IHt9LAorICAiX3JlcXVlc3RlZCI6
IHsKKyAgICAicmF3IjogImFuZ3VsYXItcmVzb3VyY2VAMS41LjkiLAorICAgICJzY29wZSI6IG51
bGwsCisgICAgImVzY2FwZWROYW1lIjogImFuZ3VsYXItcmVzb3VyY2UiLAorICAgICJuYW1lIjog
ImFuZ3VsYXItcmVzb3VyY2UiLAorICAgICJyYXdTcGVjIjogIjEuNS45IiwKKyAgICAic3BlYyI6
ICIxLjUuOSIsCisgICAgInR5cGUiOiAidmVyc2lvbiIKKyAgfSwKKyAgIl9yZXF1aXJlZEJ5Ijog
WworICAgICIjVVNFUiIsCisgICAgIi8iCisgIF0sCisgICJfcmVzb2x2ZWQiOiAiaHR0cHM6Ly9y
ZWdpc3RyeS5ucG1qcy5vcmcvYW5ndWxhci1yZXNvdXJjZS8tL2FuZ3VsYXItcmVzb3VyY2UtMS41
LjkudGd6IiwKKyAgIl9zaGFzdW0iOiAiYjA2MmM0NDQ3MjUzMDVjODEyOTYxMjIwZjQwOGU2NmZl
MDFmYWFmMyIsCisgICJfc2hyaW5rd3JhcCI6IG51bGwsCisgICJfc3BlYyI6ICJhbmd1bGFyLXJl
c291cmNlQDEuNS45IiwKKyAgIl93aGVyZSI6ICIvVXNlcnMvYWRkeW8vcHJvamVjdHMvc3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcyIs
CisgICJhdXRob3IiOiB7CisgICAgIm5hbWUiOiAiQW5ndWxhciBDb3JlIFRlYW0iLAorICAgICJl
bWFpbCI6ICJhbmd1bGFyLWNvcmUrbnBtQGdvb2dsZS5jb20iCisgIH0sCisgICJidWdzIjogewor
ICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci5qcy9pc3N1ZXMi
CisgIH0sCisgICJkZXBlbmRlbmNpZXMiOiB7fSwKKyAgImRlc2NyaXB0aW9uIjogIkFuZ3VsYXJK
UyBtb2R1bGUgZm9yIGludGVyYWN0aW5nIHdpdGggUkVTVGZ1bCBzZXJ2ZXItc2lkZSBkYXRhIHNv
dXJjZXMiLAorICAiZGV2RGVwZW5kZW5jaWVzIjoge30sCisgICJkaXJlY3RvcmllcyI6IHt9LAor
ICAiZGlzdCI6IHsKKyAgICAic2hhc3VtIjogImIwNjJjNDQ0NzI1MzA1YzgxMjk2MTIyMGY0MDhl
NjZmZTAxZmFhZjMiLAorICAgICJ0YXJiYWxsIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3Jn
L2FuZ3VsYXItcmVzb3VyY2UvLS9hbmd1bGFyLXJlc291cmNlLTEuNS45LnRneiIKKyAgfSwKKyAg
ImdpdEhlYWQiOiAiNjE5YzdkNTZmZGJmZGRlODhkNDczZThhOWRmOTMwODhlYWJiODE0YyIsCisg
ICJob21lcGFnZSI6ICJodHRwOi8vYW5ndWxhcmpzLm9yZyIsCisgICJqc3BtIjogeworICAgICJz
aGltIjogeworICAgICAgImFuZ3VsYXItcmVzb3VyY2UiOiB7CisgICAgICAgICJkZXBzIjogWwor
ICAgICAgICAgICJhbmd1bGFyIgorICAgICAgICBdCisgICAgICB9CisgICAgfQorICB9LAorICAi
a2V5d29yZHMiOiBbCisgICAgImFuZ3VsYXIiLAorICAgICJmcmFtZXdvcmsiLAorICAgICJicm93
c2VyIiwKKyAgICAicmVzdCIsCisgICAgImNsaWVudC1zaWRlIgorICBdLAorICAibGljZW5zZSI6
ICJNSVQiLAorICAibWFpbiI6ICJpbmRleC5qcyIsCisgICJtYWludGFpbmVycyI6IFsKKyAgICB7
CisgICAgICAibmFtZSI6ICJhbmd1bGFyY29yZSIsCisgICAgICAiZW1haWwiOiAiYW5ndWxhci1j
b3JlK25wbUBnb29nbGUuY29tIgorICAgIH0sCisgICAgeworICAgICAgIm5hbWUiOiAicGV0ZWJk
IiwKKyAgICAgICJlbWFpbCI6ICJwZXRlQGJhY29uZGFyd2luLmNvbSIKKyAgICB9CisgIF0sCisg
ICJuYW1lIjogImFuZ3VsYXItcmVzb3VyY2UiLAorICAib3B0aW9uYWxEZXBlbmRlbmNpZXMiOiB7
fSwKKyAgInJlYWRtZSI6ICJFUlJPUjogTm8gUkVBRE1FIGRhdGEgZm91bmQhIiwKKyAgInJlcG9z
aXRvcnkiOiB7CisgICAgInR5cGUiOiAiZ2l0IiwKKyAgICAidXJsIjogImdpdCtodHRwczovL2dp
dGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyLmpzLmdpdCIKKyAgfSwKKyAgInNjcmlwdHMiOiB7Cisg
ICAgInRlc3QiOiAiZWNobyBcIkVycm9yOiBubyB0ZXN0IHNwZWNpZmllZFwiICYmIGV4aXQgMSIK
KyAgfSwKKyAgInZlcnNpb24iOiAiMS41LjkiCit9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9h
bmd1bGFyanMvbm9kZV9tb2R1bGVzL2FuZ3VsYXItcm91dGUvTElDRU5TRS5tZCBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2FuZ3VsYXJqcy9ub2RlX21vZHVsZXMvYW5ndWxhci1yb3V0ZS9MSUNFTlNFLm1kCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjJjMzk1ZWVmMWJhZTZhMTY3MmQ3MjE2Y2Q2NzMxNWJmMDczNDE5OGMKLS0tIC9kZXYv
bnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvbm9kZV9tb2R1bGVzL2FuZ3VsYXItcm91
dGUvTElDRU5TRS5tZApAQCAtMCwwICsxLDIxIEBACitUaGUgTUlUIExpY2Vuc2UgKE1JVCkKKwor
Q29weXJpZ2h0IChjKSAyMDE2IEFuZ3VsYXIKKworUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRl
ZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQorb2YgdGhp
cyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3
YXJlIiksIHRvIGRlYWwKK2luIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNs
dWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKK3RvIHVzZSwgY29weSwgbW9kaWZ5
LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKK2Nv
cGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBT
b2Z0d2FyZSBpcworZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9uczoKKworVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlz
c2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsCitjb3BpZXMgb3Igc3Vic3RhbnRp
YWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorCitUSEUgU09GVFdBUkUgSVMgUFJPVklERUQg
IkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorSU1QTElF
RCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFksCitGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklO
R0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKK0FVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERF
UlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKK0xJQUJJTElUWSwg
V0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklT
SU5HIEZST00sCitPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBU
SEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQorU09GVFdBUkUuCmRpZmYgLS1naXQgYS9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9hbmd1bGFyanMvbm9kZV9tb2R1bGVzL2FuZ3VsYXItcm91dGUvUkVBRE1FLm1k
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL25vZGVfbW9kdWxlcy9hbmd1bGFyLXJvdXRlL1JFQURN
RS5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yY2Q0ZjkwOTFkNDQxZGUwODUxN2I0YzZlOTZhMDVmNGNiYTAxNmIz
Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL25vZGVfbW9kdWxlcy9h
bmd1bGFyLXJvdXRlL1JFQURNRS5tZApAQCAtMCwwICsxLDY4IEBACisjIHBhY2thZ2VkIGFuZ3Vs
YXItcm91dGUKKworVGhpcyByZXBvIGlzIGZvciBkaXN0cmlidXRpb24gb24gYG5wbWAgYW5kIGBi
b3dlcmAuIFRoZSBzb3VyY2UgZm9yIHRoaXMgbW9kdWxlIGlzIGluIHRoZQorW21haW4gQW5ndWxh
ckpTIHJlcG9dKGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIuanMvdHJlZS9tYXN0
ZXIvc3JjL25nUm91dGUpLgorUGxlYXNlIGZpbGUgaXNzdWVzIGFuZCBwdWxsIHJlcXVlc3RzIGFn
YWluc3QgdGhhdCByZXBvLgorCisjIyBJbnN0YWxsCisKK1lvdSBjYW4gaW5zdGFsbCB0aGlzIHBh
Y2thZ2UgZWl0aGVyIHdpdGggYG5wbWAgb3Igd2l0aCBgYm93ZXJgLgorCisjIyMgbnBtCisKK2Bg
YHNoZWxsCitucG0gaW5zdGFsbCBhbmd1bGFyLXJvdXRlCitgYGAKKworVGhlbiBhZGQgYG5nUm91
dGVgIGFzIGEgZGVwZW5kZW5jeSBmb3IgeW91ciBhcHA6CisKK2BgYGphdmFzY3JpcHQKK2FuZ3Vs
YXIubW9kdWxlKCdteUFwcCcsIFtyZXF1aXJlKCdhbmd1bGFyLXJvdXRlJyldKTsKK2BgYAorCisj
IyMgYm93ZXIKKworYGBgc2hlbGwKK2Jvd2VyIGluc3RhbGwgYW5ndWxhci1yb3V0ZQorYGBgCisK
K0FkZCBhIGA8c2NyaXB0PmAgdG8geW91ciBgaW5kZXguaHRtbGA6CisKK2BgYGh0bWwKKzxzY3Jp
cHQgc3JjPSIvYm93ZXJfY29tcG9uZW50cy9hbmd1bGFyLXJvdXRlL2FuZ3VsYXItcm91dGUuanMi
Pjwvc2NyaXB0PgorYGBgCisKK1RoZW4gYWRkIGBuZ1JvdXRlYCBhcyBhIGRlcGVuZGVuY3kgZm9y
IHlvdXIgYXBwOgorCitgYGBqYXZhc2NyaXB0Cithbmd1bGFyLm1vZHVsZSgnbXlBcHAnLCBbJ25n
Um91dGUnXSk7CitgYGAKKworIyMgRG9jdW1lbnRhdGlvbgorCitEb2N1bWVudGF0aW9uIGlzIGF2
YWlsYWJsZSBvbiB0aGUKK1tBbmd1bGFySlMgZG9jcyBzaXRlXShodHRwOi8vZG9jcy5hbmd1bGFy
anMub3JnL2FwaS9uZ1JvdXRlKS4KKworIyMgTGljZW5zZQorCitUaGUgTUlUIExpY2Vuc2UKKwor
Q29weXJpZ2h0IChjKSAyMDEwLTIwMTUgR29vZ2xlLCBJbmMuIGh0dHA6Ly9hbmd1bGFyanMub3Jn
CisKK1Blcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkg
cGVyc29uIG9idGFpbmluZyBhIGNvcHkKK29mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQg
ZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCitpbiB0aGUgU29m
dHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0
aGUgcmlnaHRzCit0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1
dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCitjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQg
dG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKK2Z1cm5pc2hlZCB0byBk
byBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisKK1RoZSBhYm92ZSBj
b3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1
ZGVkIGluCithbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2Fy
ZS4KKworVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkg
T0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKK0lNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlU
RUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFCitBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlN
LCBEQU1BR0VTIE9SIE9USEVSCitMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENP
TlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAorT1VUIE9GIE9SIElOIENP
Tk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJ
TgorVEhFIFNPRlRXQVJFLgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL25vZGVf
bW9kdWxlcy9hbmd1bGFyLXJvdXRlL2FuZ3VsYXItcm91dGUuanMgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1
bGFyanMvbm9kZV9tb2R1bGVzL2FuZ3VsYXItcm91dGUvYW5ndWxhci1yb3V0ZS5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44ZmFjM2NkMDhhMDFiZTUxMzRlMmQyZGFjZDAyYmQyMjQ4YTcxZjg5Ci0tLSAvZGV2L251
bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL25vZGVfbW9kdWxlcy9hbmd1bGFyLXJvdXRl
L2FuZ3VsYXItcm91dGUuanMKQEAgLTAsMCArMSwxMDcxIEBACisvKioKKyAqIEBsaWNlbnNlIEFu
Z3VsYXJKUyB2MS41LjkKKyAqIChjKSAyMDEwLTIwMTYgR29vZ2xlLCBJbmMuIGh0dHA6Ly9hbmd1
bGFyanMub3JnCisgKiBMaWNlbnNlOiBNSVQKKyAqLworKGZ1bmN0aW9uKHdpbmRvdywgYW5ndWxh
cikgeyd1c2Ugc3RyaWN0JzsKKworLyogZ2xvYmFsIHNoYWxsb3dDb3B5OiB0cnVlICovCisKKy8q
KgorICogQ3JlYXRlcyBhIHNoYWxsb3cgY29weSBvZiBhbiBvYmplY3QsIGFuIGFycmF5IG9yIGEg
cHJpbWl0aXZlLgorICoKKyAqIEFzc3VtZXMgdGhhdCB0aGVyZSBhcmUgbm8gcHJvdG8gcHJvcGVy
dGllcyBmb3Igb2JqZWN0cy4KKyAqLworZnVuY3Rpb24gc2hhbGxvd0NvcHkoc3JjLCBkc3QpIHsK
KyAgaWYgKGlzQXJyYXkoc3JjKSkgeworICAgIGRzdCA9IGRzdCB8fCBbXTsKKworICAgIGZvciAo
dmFyIGkgPSAwLCBpaSA9IHNyYy5sZW5ndGg7IGkgPCBpaTsgaSsrKSB7CisgICAgICBkc3RbaV0g
PSBzcmNbaV07CisgICAgfQorICB9IGVsc2UgaWYgKGlzT2JqZWN0KHNyYykpIHsKKyAgICBkc3Qg
PSBkc3QgfHwge307CisKKyAgICBmb3IgKHZhciBrZXkgaW4gc3JjKSB7CisgICAgICBpZiAoIShr
ZXkuY2hhckF0KDApID09PSAnJCcgJiYga2V5LmNoYXJBdCgxKSA9PT0gJyQnKSkgeworICAgICAg
ICBkc3Rba2V5XSA9IHNyY1trZXldOworICAgICAgfQorICAgIH0KKyAgfQorCisgIHJldHVybiBk
c3QgfHwgc3JjOworfQorCisvKiBnbG9iYWwgc2hhbGxvd0NvcHk6IGZhbHNlICovCisKKy8vIFRo
ZXJlIGFyZSBuZWNlc3NhcnkgZm9yIGBzaGFsbG93Q29weSgpYCAoaW5jbHVkZWQgdmlhIGBzcmMv
c2hhbGxvd0NvcHkuanNgKS4KKy8vIFRoZXkgYXJlIGluaXRpYWxpemVkIGluc2lkZSB0aGUgYCRS
b3V0ZVByb3ZpZGVyYCwgdG8gZW5zdXJlIGB3aW5kb3cuYW5ndWxhcmAgaXMgYXZhaWxhYmxlLgor
dmFyIGlzQXJyYXk7Cit2YXIgaXNPYmplY3Q7CisKKy8qKgorICogQG5nZG9jIG1vZHVsZQorICog
QG5hbWUgbmdSb3V0ZQorICogQGRlc2NyaXB0aW9uCisgKgorICogIyBuZ1JvdXRlCisgKgorICog
VGhlIGBuZ1JvdXRlYCBtb2R1bGUgcHJvdmlkZXMgcm91dGluZyBhbmQgZGVlcGxpbmtpbmcgc2Vy
dmljZXMgYW5kIGRpcmVjdGl2ZXMgZm9yIGFuZ3VsYXIgYXBwcy4KKyAqCisgKiAjIyBFeGFtcGxl
CisgKiBTZWUge0BsaW5rIG5nUm91dGUuJHJvdXRlI2V4YW1wbGUgJHJvdXRlfSBmb3IgYW4gZXhh
bXBsZSBvZiBjb25maWd1cmluZyBhbmQgdXNpbmcgYG5nUm91dGVgLgorICoKKyAqCisgKiA8ZGl2
IGRvYy1tb2R1bGUtY29tcG9uZW50cz0ibmdSb3V0ZSI+PC9kaXY+CisgKi8KKyAvKiBnbG9iYWwg
LW5nUm91dGVNb2R1bGUgKi8KK3ZhciBuZ1JvdXRlTW9kdWxlID0gYW5ndWxhci5tb2R1bGUoJ25n
Um91dGUnLCBbJ25nJ10pLgorICAgICAgICAgICAgICAgICAgICAgICAgcHJvdmlkZXIoJyRyb3V0
ZScsICRSb3V0ZVByb3ZpZGVyKSwKKyAgICAkcm91dGVNaW5FcnIgPSBhbmd1bGFyLiQkbWluRXJy
KCduZ1JvdXRlJyk7CisKKy8qKgorICogQG5nZG9jIHByb3ZpZGVyCisgKiBAbmFtZSAkcm91dGVQ
cm92aWRlcgorICogQHRoaXMKKyAqCisgKiBAZGVzY3JpcHRpb24KKyAqCisgKiBVc2VkIGZvciBj
b25maWd1cmluZyByb3V0ZXMuCisgKgorICogIyMgRXhhbXBsZQorICogU2VlIHtAbGluayBuZ1Jv
dXRlLiRyb3V0ZSNleGFtcGxlICRyb3V0ZX0gZm9yIGFuIGV4YW1wbGUgb2YgY29uZmlndXJpbmcg
YW5kIHVzaW5nIGBuZ1JvdXRlYC4KKyAqCisgKiAjIyBEZXBlbmRlbmNpZXMKKyAqIFJlcXVpcmVz
IHRoZSB7QGxpbmsgbmdSb3V0ZSBgbmdSb3V0ZWB9IG1vZHVsZSB0byBiZSBpbnN0YWxsZWQuCisg
Ki8KK2Z1bmN0aW9uICRSb3V0ZVByb3ZpZGVyKCkgeworICBpc0FycmF5ID0gYW5ndWxhci5pc0Fy
cmF5OworICBpc09iamVjdCA9IGFuZ3VsYXIuaXNPYmplY3Q7CisKKyAgZnVuY3Rpb24gaW5oZXJp
dChwYXJlbnQsIGV4dHJhKSB7CisgICAgcmV0dXJuIGFuZ3VsYXIuZXh0ZW5kKE9iamVjdC5jcmVh
dGUocGFyZW50KSwgZXh0cmEpOworICB9CisKKyAgdmFyIHJvdXRlcyA9IHt9OworCisgIC8qKgor
ICAgKiBAbmdkb2MgbWV0aG9kCisgICAqIEBuYW1lICRyb3V0ZVByb3ZpZGVyI3doZW4KKyAgICoK
KyAgICogQHBhcmFtIHtzdHJpbmd9IHBhdGggUm91dGUgcGF0aCAobWF0Y2hlZCBhZ2FpbnN0IGAk
bG9jYXRpb24ucGF0aGApLiBJZiBgJGxvY2F0aW9uLnBhdGhgCisgICAqICAgIGNvbnRhaW5zIHJl
ZHVuZGFudCB0cmFpbGluZyBzbGFzaCBvciBpcyBtaXNzaW5nIG9uZSwgdGhlIHJvdXRlIHdpbGwg
c3RpbGwgbWF0Y2ggYW5kIHRoZQorICAgKiAgICBgJGxvY2F0aW9uLnBhdGhgIHdpbGwgYmUgdXBk
YXRlZCB0byBhZGQgb3IgZHJvcCB0aGUgdHJhaWxpbmcgc2xhc2ggdG8gZXhhY3RseSBtYXRjaCB0
aGUKKyAgICogICAgcm91dGUgZGVmaW5pdGlvbi4KKyAgICoKKyAgICogICAgKiBgcGF0aGAgY2Fu
IGNvbnRhaW4gbmFtZWQgZ3JvdXBzIHN0YXJ0aW5nIHdpdGggYSBjb2xvbjogZS5nLiBgOm5hbWVg
LiBBbGwgY2hhcmFjdGVycyB1cAorICAgKiAgICAgICAgdG8gdGhlIG5leHQgc2xhc2ggYXJlIG1h
dGNoZWQgYW5kIHN0b3JlZCBpbiBgJHJvdXRlUGFyYW1zYCB1bmRlciB0aGUgZ2l2ZW4gYG5hbWVg
CisgICAqICAgICAgICB3aGVuIHRoZSByb3V0ZSBtYXRjaGVzLgorICAgKiAgICAqIGBwYXRoYCBj
YW4gY29udGFpbiBuYW1lZCBncm91cHMgc3RhcnRpbmcgd2l0aCBhIGNvbG9uIGFuZCBlbmRpbmcg
d2l0aCBhIHN0YXI6CisgICAqICAgICAgICBlLmcuYDpuYW1lKmAuIEFsbCBjaGFyYWN0ZXJzIGFy
ZSBlYWdlcmx5IHN0b3JlZCBpbiBgJHJvdXRlUGFyYW1zYCB1bmRlciB0aGUgZ2l2ZW4gYG5hbWVg
CisgICAqICAgICAgICB3aGVuIHRoZSByb3V0ZSBtYXRjaGVzLgorICAgKiAgICAqIGBwYXRoYCBj
YW4gY29udGFpbiBvcHRpb25hbCBuYW1lZCBncm91cHMgd2l0aCBhIHF1ZXN0aW9uIG1hcms6IGUu
Zy5gOm5hbWU/YC4KKyAgICoKKyAgICogICAgRm9yIGV4YW1wbGUsIHJvdXRlcyBsaWtlIGAvY29s
b3IvOmNvbG9yL2xhcmdlY29kZS86bGFyZ2Vjb2RlKlwvZWRpdGAgd2lsbCBtYXRjaAorICAgKiAg
ICBgL2NvbG9yL2Jyb3duL2xhcmdlY29kZS9jb2RlL3dpdGgvc2xhc2hlcy9lZGl0YCBhbmQgZXh0
cmFjdDoKKyAgICoKKyAgICogICAgKiBgY29sb3I6IGJyb3duYAorICAgKiAgICAqIGBsYXJnZWNv
ZGU6IGNvZGUvd2l0aC9zbGFzaGVzYC4KKyAgICoKKyAgICoKKyAgICogQHBhcmFtIHtPYmplY3R9
IHJvdXRlIE1hcHBpbmcgaW5mb3JtYXRpb24gdG8gYmUgYXNzaWduZWQgdG8gYCRyb3V0ZS5jdXJy
ZW50YCBvbiByb3V0ZQorICAgKiAgICBtYXRjaC4KKyAgICoKKyAgICogICAgT2JqZWN0IHByb3Bl
cnRpZXM6CisgICAqCisgICAqICAgIC0gYGNvbnRyb2xsZXJgIOKAkyBgeyhzdHJpbmd8ZnVuY3Rp
b24oKT19YCDigJMgQ29udHJvbGxlciBmbiB0aGF0IHNob3VsZCBiZSBhc3NvY2lhdGVkIHdpdGgK
KyAgICogICAgICBuZXdseSBjcmVhdGVkIHNjb3BlIG9yIHRoZSBuYW1lIG9mIGEge0BsaW5rIGFu
Z3VsYXIuTW9kdWxlI2NvbnRyb2xsZXIgcmVnaXN0ZXJlZAorICAgKiAgICAgIGNvbnRyb2xsZXJ9
IGlmIHBhc3NlZCBhcyBhIHN0cmluZy4KKyAgICogICAgLSBgY29udHJvbGxlckFzYCDigJMgYHtz
dHJpbmc9fWAg4oCTIEFuIGlkZW50aWZpZXIgbmFtZSBmb3IgYSByZWZlcmVuY2UgdG8gdGhlIGNv
bnRyb2xsZXIuCisgICAqICAgICAgSWYgcHJlc2VudCwgdGhlIGNvbnRyb2xsZXIgd2lsbCBiZSBw
dWJsaXNoZWQgdG8gc2NvcGUgdW5kZXIgdGhlIGBjb250cm9sbGVyQXNgIG5hbWUuCisgICAqICAg
IC0gYHRlbXBsYXRlYCDigJMgYHtzdHJpbmc9fGZ1bmN0aW9uKCk9fWAg4oCTIGh0bWwgdGVtcGxh
dGUgYXMgYSBzdHJpbmcgb3IgYSBmdW5jdGlvbiB0aGF0CisgICAqICAgICAgcmV0dXJucyBhbiBo
dG1sIHRlbXBsYXRlIGFzIGEgc3RyaW5nIHdoaWNoIHNob3VsZCBiZSB1c2VkIGJ5IHtAbGluawor
ICAgKiAgICAgIG5nUm91dGUuZGlyZWN0aXZlOm5nVmlldyBuZ1ZpZXd9IG9yIHtAbGluayBuZy5k
aXJlY3RpdmU6bmdJbmNsdWRlIG5nSW5jbHVkZX0gZGlyZWN0aXZlcy4KKyAgICogICAgICBUaGlz
IHByb3BlcnR5IHRha2VzIHByZWNlZGVuY2Ugb3ZlciBgdGVtcGxhdGVVcmxgLgorICAgKgorICAg
KiAgICAgIElmIGB0ZW1wbGF0ZWAgaXMgYSBmdW5jdGlvbiwgaXQgd2lsbCBiZSBjYWxsZWQgd2l0
aCB0aGUgZm9sbG93aW5nIHBhcmFtZXRlcnM6CisgICAqCisgICAqICAgICAgLSBge0FycmF5LjxP
YmplY3Q+fWAgLSByb3V0ZSBwYXJhbWV0ZXJzIGV4dHJhY3RlZCBmcm9tIHRoZSBjdXJyZW50Cisg
ICAqICAgICAgICBgJGxvY2F0aW9uLnBhdGgoKWAgYnkgYXBwbHlpbmcgdGhlIGN1cnJlbnQgcm91
dGUKKyAgICoKKyAgICogICAgLSBgdGVtcGxhdGVVcmxgIOKAkyBge3N0cmluZz18ZnVuY3Rpb24o
KT19YCDigJMgcGF0aCBvciBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSBwYXRoIHRvIGFuIGh0bWwK
KyAgICogICAgICB0ZW1wbGF0ZSB0aGF0IHNob3VsZCBiZSB1c2VkIGJ5IHtAbGluayBuZ1JvdXRl
LmRpcmVjdGl2ZTpuZ1ZpZXcgbmdWaWV3fS4KKyAgICoKKyAgICogICAgICBJZiBgdGVtcGxhdGVV
cmxgIGlzIGEgZnVuY3Rpb24sIGl0IHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlIGZvbGxvd2luZyBw
YXJhbWV0ZXJzOgorICAgKgorICAgKiAgICAgIC0gYHtBcnJheS48T2JqZWN0Pn1gIC0gcm91dGUg
cGFyYW1ldGVycyBleHRyYWN0ZWQgZnJvbSB0aGUgY3VycmVudAorICAgKiAgICAgICAgYCRsb2Nh
dGlvbi5wYXRoKClgIGJ5IGFwcGx5aW5nIHRoZSBjdXJyZW50IHJvdXRlCisgICAqCisgICAqICAg
IC0gYHJlc29sdmVgIC0gYHtPYmplY3QuPHN0cmluZywgZnVuY3Rpb24+PX1gIC0gQW4gb3B0aW9u
YWwgbWFwIG9mIGRlcGVuZGVuY2llcyB3aGljaCBzaG91bGQKKyAgICogICAgICBiZSBpbmplY3Rl
ZCBpbnRvIHRoZSBjb250cm9sbGVyLiBJZiBhbnkgb2YgdGhlc2UgZGVwZW5kZW5jaWVzIGFyZSBw
cm9taXNlcywgdGhlIHJvdXRlcgorICAgKiAgICAgIHdpbGwgd2FpdCBmb3IgdGhlbSBhbGwgdG8g
YmUgcmVzb2x2ZWQgb3Igb25lIHRvIGJlIHJlamVjdGVkIGJlZm9yZSB0aGUgY29udHJvbGxlciBp
cworICAgKiAgICAgIGluc3RhbnRpYXRlZC4KKyAgICogICAgICBJZiBhbGwgdGhlIHByb21pc2Vz
IGFyZSByZXNvbHZlZCBzdWNjZXNzZnVsbHksIHRoZSB2YWx1ZXMgb2YgdGhlIHJlc29sdmVkIHBy
b21pc2VzIGFyZQorICAgKiAgICAgIGluamVjdGVkIGFuZCB7QGxpbmsgbmdSb3V0ZS4kcm91dGUj
JHJvdXRlQ2hhbmdlU3VjY2VzcyAkcm91dGVDaGFuZ2VTdWNjZXNzfSBldmVudCBpcworICAgKiAg
ICAgIGZpcmVkLiBJZiBhbnkgb2YgdGhlIHByb21pc2VzIGFyZSByZWplY3RlZCB0aGUKKyAgICog
ICAgICB7QGxpbmsgbmdSb3V0ZS4kcm91dGUjJHJvdXRlQ2hhbmdlRXJyb3IgJHJvdXRlQ2hhbmdl
RXJyb3J9IGV2ZW50IGlzIGZpcmVkLgorICAgKiAgICAgIEZvciBlYXNpZXIgYWNjZXNzIHRvIHRo
ZSByZXNvbHZlZCBkZXBlbmRlbmNpZXMgZnJvbSB0aGUgdGVtcGxhdGUsIHRoZSBgcmVzb2x2ZWAg
bWFwIHdpbGwKKyAgICogICAgICBiZSBhdmFpbGFibGUgb24gdGhlIHNjb3BlIG9mIHRoZSByb3V0
ZSwgdW5kZXIgYCRyZXNvbHZlYCAoYnkgZGVmYXVsdCkgb3IgYSBjdXN0b20gbmFtZQorICAgKiAg
ICAgIHNwZWNpZmllZCBieSB0aGUgYHJlc29sdmVBc2AgcHJvcGVydHkgKHNlZSBiZWxvdykuIFRo
aXMgY2FuIGJlIHBhcnRpY3VsYXJseSB1c2VmdWwsIHdoZW4KKyAgICogICAgICB3b3JraW5nIHdp
dGgge0BsaW5rIGFuZ3VsYXIuTW9kdWxlI2NvbXBvbmVudCBjb21wb25lbnRzfSBhcyByb3V0ZSB0
ZW1wbGF0ZXMuPGJyIC8+CisgICAqICAgICAgPGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtd2Fybmlu
ZyI+CisgICAqICAgICAgICAqKk5vdGU6KiogSWYgeW91ciBzY29wZSBhbHJlYWR5IGNvbnRhaW5z
IGEgcHJvcGVydHkgd2l0aCB0aGlzIG5hbWUsIGl0IHdpbGwgYmUgaGlkZGVuCisgICAqICAgICAg
ICBvciBvdmVyd3JpdHRlbi4gTWFrZSBzdXJlLCB5b3Ugc3BlY2lmeSBhbiBhcHByb3ByaWF0ZSBu
YW1lIGZvciB0aGlzIHByb3BlcnR5LCB0aGF0CisgICAqICAgICAgICBkb2VzIG5vdCBjb2xsaWRl
IHdpdGggb3RoZXIgcHJvcGVydGllcyBvbiB0aGUgc2NvcGUuCisgICAqICAgICAgPC9kaXY+Cisg
ICAqICAgICAgVGhlIG1hcCBvYmplY3QgaXM6CisgICAqCisgICAqICAgICAgLSBga2V5YCDigJMg
YHtzdHJpbmd9YDogYSBuYW1lIG9mIGEgZGVwZW5kZW5jeSB0byBiZSBpbmplY3RlZCBpbnRvIHRo
ZSBjb250cm9sbGVyLgorICAgKiAgICAgIC0gYGZhY3RvcnlgIC0gYHtzdHJpbmd8ZnVuY3Rpb259
YDogSWYgYHN0cmluZ2AgdGhlbiBpdCBpcyBhbiBhbGlhcyBmb3IgYSBzZXJ2aWNlLgorICAgKiAg
ICAgICAgT3RoZXJ3aXNlIGlmIGZ1bmN0aW9uLCB0aGVuIGl0IGlzIHtAbGluayBhdXRvLiRpbmpl
Y3RvciNpbnZva2UgaW5qZWN0ZWR9CisgICAqICAgICAgICBhbmQgdGhlIHJldHVybiB2YWx1ZSBp
cyB0cmVhdGVkIGFzIHRoZSBkZXBlbmRlbmN5LiBJZiB0aGUgcmVzdWx0IGlzIGEgcHJvbWlzZSwg
aXQgaXMKKyAgICogICAgICAgIHJlc29sdmVkIGJlZm9yZSBpdHMgdmFsdWUgaXMgaW5qZWN0ZWQg
aW50byB0aGUgY29udHJvbGxlci4gQmUgYXdhcmUgdGhhdAorICAgKiAgICAgICAgYG5nUm91dGUu
JHJvdXRlUGFyYW1zYCB3aWxsIHN0aWxsIHJlZmVyIHRvIHRoZSBwcmV2aW91cyByb3V0ZSB3aXRo
aW4gdGhlc2UgcmVzb2x2ZQorICAgKiAgICAgICAgZnVuY3Rpb25zLiAgVXNlIGAkcm91dGUuY3Vy
cmVudC5wYXJhbXNgIHRvIGFjY2VzcyB0aGUgbmV3IHJvdXRlIHBhcmFtZXRlcnMsIGluc3RlYWQu
CisgICAqCisgICAqICAgIC0gYHJlc29sdmVBc2AgLSBge3N0cmluZz19YCAtIFRoZSBuYW1lIHVu
ZGVyIHdoaWNoIHRoZSBgcmVzb2x2ZWAgbWFwIHdpbGwgYmUgYXZhaWxhYmxlIG9uCisgICAqICAg
ICAgdGhlIHNjb3BlIG9mIHRoZSByb3V0ZS4gSWYgb21pdHRlZCwgZGVmYXVsdHMgdG8gYCRyZXNv
bHZlYC4KKyAgICoKKyAgICogICAgLSBgcmVkaXJlY3RUb2Ag4oCTIGB7KHN0cmluZ3xmdW5jdGlv
bigpKT19YCDigJMgdmFsdWUgdG8gdXBkYXRlCisgICAqICAgICAge0BsaW5rIG5nLiRsb2NhdGlv
biAkbG9jYXRpb259IHBhdGggd2l0aCBhbmQgdHJpZ2dlciByb3V0ZSByZWRpcmVjdGlvbi4KKyAg
ICoKKyAgICogICAgICBJZiBgcmVkaXJlY3RUb2AgaXMgYSBmdW5jdGlvbiwgaXQgd2lsbCBiZSBj
YWxsZWQgd2l0aCB0aGUgZm9sbG93aW5nIHBhcmFtZXRlcnM6CisgICAqCisgICAqICAgICAgLSBg
e09iamVjdC48c3RyaW5nPn1gIC0gcm91dGUgcGFyYW1ldGVycyBleHRyYWN0ZWQgZnJvbSB0aGUg
Y3VycmVudAorICAgKiAgICAgICAgYCRsb2NhdGlvbi5wYXRoKClgIGJ5IGFwcGx5aW5nIHRoZSBj
dXJyZW50IHJvdXRlIHRlbXBsYXRlVXJsLgorICAgKiAgICAgIC0gYHtzdHJpbmd9YCAtIGN1cnJl
bnQgYCRsb2NhdGlvbi5wYXRoKClgCisgICAqICAgICAgLSBge09iamVjdH1gIC0gY3VycmVudCBg
JGxvY2F0aW9uLnNlYXJjaCgpYAorICAgKgorICAgKiAgICAgIFRoZSBjdXN0b20gYHJlZGlyZWN0
VG9gIGZ1bmN0aW9uIGlzIGV4cGVjdGVkIHRvIHJldHVybiBhIHN0cmluZyB3aGljaCB3aWxsIGJl
IHVzZWQKKyAgICogICAgICB0byB1cGRhdGUgYCRsb2NhdGlvbi5wYXRoKClgIGFuZCBgJGxvY2F0
aW9uLnNlYXJjaCgpYC4KKyAgICoKKyAgICogICAgLSBgW3JlbG9hZE9uU2VhcmNoPXRydWVdYCAt
IGB7Ym9vbGVhbj19YCAtIHJlbG9hZCByb3V0ZSB3aGVuIG9ubHkgYCRsb2NhdGlvbi5zZWFyY2go
KWAKKyAgICogICAgICBvciBgJGxvY2F0aW9uLmhhc2goKWAgY2hhbmdlcy4KKyAgICoKKyAgICog
ICAgICBJZiB0aGUgb3B0aW9uIGlzIHNldCB0byBgZmFsc2VgIGFuZCB1cmwgaW4gdGhlIGJyb3dz
ZXIgY2hhbmdlcywgdGhlbgorICAgKiAgICAgIGAkcm91dGVVcGRhdGVgIGV2ZW50IGlzIGJyb2Fk
Y2FzdGVkIG9uIHRoZSByb290IHNjb3BlLgorICAgKgorICAgKiAgICAtIGBbY2FzZUluc2Vuc2l0
aXZlTWF0Y2g9ZmFsc2VdYCAtIGB7Ym9vbGVhbj19YCAtIG1hdGNoIHJvdXRlcyB3aXRob3V0IGJl
aW5nIGNhc2Ugc2Vuc2l0aXZlCisgICAqCisgICAqICAgICAgSWYgdGhlIG9wdGlvbiBpcyBzZXQg
dG8gYHRydWVgLCB0aGVuIHRoZSBwYXJ0aWN1bGFyIHJvdXRlIGNhbiBiZSBtYXRjaGVkIHdpdGhv
dXQgYmVpbmcKKyAgICogICAgICBjYXNlIHNlbnNpdGl2ZQorICAgKgorICAgKiBAcmV0dXJucyB7
T2JqZWN0fSBzZWxmCisgICAqCisgICAqIEBkZXNjcmlwdGlvbgorICAgKiBBZGRzIGEgbmV3IHJv
dXRlIGRlZmluaXRpb24gdG8gdGhlIGAkcm91dGVgIHNlcnZpY2UuCisgICAqLworICB0aGlzLndo
ZW4gPSBmdW5jdGlvbihwYXRoLCByb3V0ZSkgeworICAgIC8vY29weSBvcmlnaW5hbCByb3V0ZSBv
YmplY3QgdG8gcHJlc2VydmUgcGFyYW1zIGluaGVyaXRlZCBmcm9tIHByb3RvIGNoYWluCisgICAg
dmFyIHJvdXRlQ29weSA9IHNoYWxsb3dDb3B5KHJvdXRlKTsKKyAgICBpZiAoYW5ndWxhci5pc1Vu
ZGVmaW5lZChyb3V0ZUNvcHkucmVsb2FkT25TZWFyY2gpKSB7CisgICAgICByb3V0ZUNvcHkucmVs
b2FkT25TZWFyY2ggPSB0cnVlOworICAgIH0KKyAgICBpZiAoYW5ndWxhci5pc1VuZGVmaW5lZChy
b3V0ZUNvcHkuY2FzZUluc2Vuc2l0aXZlTWF0Y2gpKSB7CisgICAgICByb3V0ZUNvcHkuY2FzZUlu
c2Vuc2l0aXZlTWF0Y2ggPSB0aGlzLmNhc2VJbnNlbnNpdGl2ZU1hdGNoOworICAgIH0KKyAgICBy
b3V0ZXNbcGF0aF0gPSBhbmd1bGFyLmV4dGVuZCgKKyAgICAgIHJvdXRlQ29weSwKKyAgICAgIHBh
dGggJiYgcGF0aFJlZ0V4cChwYXRoLCByb3V0ZUNvcHkpCisgICAgKTsKKworICAgIC8vIGNyZWF0
ZSByZWRpcmVjdGlvbiBmb3IgdHJhaWxpbmcgc2xhc2hlcworICAgIGlmIChwYXRoKSB7CisgICAg
ICB2YXIgcmVkaXJlY3RQYXRoID0gKHBhdGhbcGF0aC5sZW5ndGggLSAxXSA9PT0gJy8nKQorICAg
ICAgICAgICAgPyBwYXRoLnN1YnN0cigwLCBwYXRoLmxlbmd0aCAtIDEpCisgICAgICAgICAgICA6
IHBhdGggKyAnLyc7CisKKyAgICAgIHJvdXRlc1tyZWRpcmVjdFBhdGhdID0gYW5ndWxhci5leHRl
bmQoCisgICAgICAgIHtyZWRpcmVjdFRvOiBwYXRofSwKKyAgICAgICAgcGF0aFJlZ0V4cChyZWRp
cmVjdFBhdGgsIHJvdXRlQ29weSkKKyAgICAgICk7CisgICAgfQorCisgICAgcmV0dXJuIHRoaXM7
CisgIH07CisKKyAgLyoqCisgICAqIEBuZ2RvYyBwcm9wZXJ0eQorICAgKiBAbmFtZSAkcm91dGVQ
cm92aWRlciNjYXNlSW5zZW5zaXRpdmVNYXRjaAorICAgKiBAZGVzY3JpcHRpb24KKyAgICoKKyAg
ICogQSBib29sZWFuIHByb3BlcnR5IGluZGljYXRpbmcgaWYgcm91dGVzIGRlZmluZWQKKyAgICog
dXNpbmcgdGhpcyBwcm92aWRlciBzaG91bGQgYmUgbWF0Y2hlZCB1c2luZyBhIGNhc2UgaW5zZW5z
aXRpdmUKKyAgICogYWxnb3JpdGhtLiBEZWZhdWx0cyB0byBgZmFsc2VgLgorICAgKi8KKyAgdGhp
cy5jYXNlSW5zZW5zaXRpdmVNYXRjaCA9IGZhbHNlOworCisgICAvKioKKyAgICAqIEBwYXJhbSBw
YXRoIHtzdHJpbmd9IHBhdGgKKyAgICAqIEBwYXJhbSBvcHRzIHtPYmplY3R9IG9wdGlvbnMKKyAg
ICAqIEByZXR1cm4gez9PYmplY3R9CisgICAgKgorICAgICogQGRlc2NyaXB0aW9uCisgICAgKiBO
b3JtYWxpemVzIHRoZSBnaXZlbiBwYXRoLCByZXR1cm5pbmcgYSByZWd1bGFyIGV4cHJlc3Npb24K
KyAgICAqIGFuZCB0aGUgb3JpZ2luYWwgcGF0aC4KKyAgICAqCisgICAgKiBJbnNwaXJlZCBieSBw
YXRoUmV4cCBpbiB2aXNpb25tZWRpYS9leHByZXNzL2xpYi91dGlscy5qcy4KKyAgICAqLworICBm
dW5jdGlvbiBwYXRoUmVnRXhwKHBhdGgsIG9wdHMpIHsKKyAgICB2YXIgaW5zZW5zaXRpdmUgPSBv
cHRzLmNhc2VJbnNlbnNpdGl2ZU1hdGNoLAorICAgICAgICByZXQgPSB7CisgICAgICAgICAgb3Jp
Z2luYWxQYXRoOiBwYXRoLAorICAgICAgICAgIHJlZ2V4cDogcGF0aAorICAgICAgICB9LAorICAg
ICAgICBrZXlzID0gcmV0LmtleXMgPSBbXTsKKworICAgIHBhdGggPSBwYXRoCisgICAgICAucmVw
bGFjZSgvKFsoKS5dKS9nLCAnXFwkMScpCisgICAgICAucmVwbGFjZSgvKFwvKT86KFx3KykoXCpc
P3xbXD9cKl0pPy9nLCBmdW5jdGlvbihfLCBzbGFzaCwga2V5LCBvcHRpb24pIHsKKyAgICAgICAg
dmFyIG9wdGlvbmFsID0gKG9wdGlvbiA9PT0gJz8nIHx8IG9wdGlvbiA9PT0gJyo/JykgPyAnPycg
OiBudWxsOworICAgICAgICB2YXIgc3RhciA9IChvcHRpb24gPT09ICcqJyB8fCBvcHRpb24gPT09
ICcqPycpID8gJyonIDogbnVsbDsKKyAgICAgICAga2V5cy5wdXNoKHsgbmFtZToga2V5LCBvcHRp
b25hbDogISFvcHRpb25hbCB9KTsKKyAgICAgICAgc2xhc2ggPSBzbGFzaCB8fCAnJzsKKyAgICAg
ICAgcmV0dXJuICcnCisgICAgICAgICAgKyAob3B0aW9uYWwgPyAnJyA6IHNsYXNoKQorICAgICAg
ICAgICsgJyg/OicKKyAgICAgICAgICArIChvcHRpb25hbCA/IHNsYXNoIDogJycpCisgICAgICAg
ICAgKyAoc3RhciAmJiAnKC4rPyknIHx8ICcoW14vXSspJykKKyAgICAgICAgICArIChvcHRpb25h
bCB8fCAnJykKKyAgICAgICAgICArICcpJworICAgICAgICAgICsgKG9wdGlvbmFsIHx8ICcnKTsK
KyAgICAgIH0pCisgICAgICAucmVwbGFjZSgvKFtcLyRcKl0pL2csICdcXCQxJyk7CisKKyAgICBy
ZXQucmVnZXhwID0gbmV3IFJlZ0V4cCgnXicgKyBwYXRoICsgJyQnLCBpbnNlbnNpdGl2ZSA/ICdp
JyA6ICcnKTsKKyAgICByZXR1cm4gcmV0OworICB9CisKKyAgLyoqCisgICAqIEBuZ2RvYyBtZXRo
b2QKKyAgICogQG5hbWUgJHJvdXRlUHJvdmlkZXIjb3RoZXJ3aXNlCisgICAqCisgICAqIEBkZXNj
cmlwdGlvbgorICAgKiBTZXRzIHJvdXRlIGRlZmluaXRpb24gdGhhdCB3aWxsIGJlIHVzZWQgb24g
cm91dGUgY2hhbmdlIHdoZW4gbm8gb3RoZXIgcm91dGUgZGVmaW5pdGlvbgorICAgKiBpcyBtYXRj
aGVkLgorICAgKgorICAgKiBAcGFyYW0ge09iamVjdHxzdHJpbmd9IHBhcmFtcyBNYXBwaW5nIGlu
Zm9ybWF0aW9uIHRvIGJlIGFzc2lnbmVkIHRvIGAkcm91dGUuY3VycmVudGAuCisgICAqIElmIGNh
bGxlZCB3aXRoIGEgc3RyaW5nLCB0aGUgdmFsdWUgbWFwcyB0byBgcmVkaXJlY3RUb2AuCisgICAq
IEByZXR1cm5zIHtPYmplY3R9IHNlbGYKKyAgICovCisgIHRoaXMub3RoZXJ3aXNlID0gZnVuY3Rp
b24ocGFyYW1zKSB7CisgICAgaWYgKHR5cGVvZiBwYXJhbXMgPT09ICdzdHJpbmcnKSB7CisgICAg
ICBwYXJhbXMgPSB7cmVkaXJlY3RUbzogcGFyYW1zfTsKKyAgICB9CisgICAgdGhpcy53aGVuKG51
bGwsIHBhcmFtcyk7CisgICAgcmV0dXJuIHRoaXM7CisgIH07CisKKworICB0aGlzLiRnZXQgPSBb
JyRyb290U2NvcGUnLAorICAgICAgICAgICAgICAgJyRsb2NhdGlvbicsCisgICAgICAgICAgICAg
ICAnJHJvdXRlUGFyYW1zJywKKyAgICAgICAgICAgICAgICckcScsCisgICAgICAgICAgICAgICAn
JGluamVjdG9yJywKKyAgICAgICAgICAgICAgICckdGVtcGxhdGVSZXF1ZXN0JywKKyAgICAgICAg
ICAgICAgICckc2NlJywKKyAgICAgIGZ1bmN0aW9uKCRyb290U2NvcGUsICRsb2NhdGlvbiwgJHJv
dXRlUGFyYW1zLCAkcSwgJGluamVjdG9yLCAkdGVtcGxhdGVSZXF1ZXN0LCAkc2NlKSB7CisKKyAg
ICAvKioKKyAgICAgKiBAbmdkb2Mgc2VydmljZQorICAgICAqIEBuYW1lICRyb3V0ZQorICAgICAq
IEByZXF1aXJlcyAkbG9jYXRpb24KKyAgICAgKiBAcmVxdWlyZXMgJHJvdXRlUGFyYW1zCisgICAg
ICoKKyAgICAgKiBAcHJvcGVydHkge09iamVjdH0gY3VycmVudCBSZWZlcmVuY2UgdG8gdGhlIGN1
cnJlbnQgcm91dGUgZGVmaW5pdGlvbi4KKyAgICAgKiBUaGUgcm91dGUgZGVmaW5pdGlvbiBjb250
YWluczoKKyAgICAgKgorICAgICAqICAgLSBgY29udHJvbGxlcmA6IFRoZSBjb250cm9sbGVyIGNv
bnN0cnVjdG9yIGFzIGRlZmluZWQgaW4gdGhlIHJvdXRlIGRlZmluaXRpb24uCisgICAgICogICAt
IGBsb2NhbHNgOiBBIG1hcCBvZiBsb2NhbHMgd2hpY2ggaXMgdXNlZCBieSB7QGxpbmsgbmcuJGNv
bnRyb2xsZXIgJGNvbnRyb2xsZXJ9IHNlcnZpY2UgZm9yCisgICAgICogICAgIGNvbnRyb2xsZXIg
aW5zdGFudGlhdGlvbi4gVGhlIGBsb2NhbHNgIGNvbnRhaW4KKyAgICAgKiAgICAgdGhlIHJlc29s
dmVkIHZhbHVlcyBvZiB0aGUgYHJlc29sdmVgIG1hcC4gQWRkaXRpb25hbGx5IHRoZSBgbG9jYWxz
YCBhbHNvIGNvbnRhaW46CisgICAgICoKKyAgICAgKiAgICAgLSBgJHNjb3BlYCAtIFRoZSBjdXJy
ZW50IHJvdXRlIHNjb3BlLgorICAgICAqICAgICAtIGAkdGVtcGxhdGVgIC0gVGhlIGN1cnJlbnQg
cm91dGUgdGVtcGxhdGUgSFRNTC4KKyAgICAgKgorICAgICAqICAgICBUaGUgYGxvY2Fsc2Agd2ls
bCBiZSBhc3NpZ25lZCB0byB0aGUgcm91dGUgc2NvcGUncyBgJHJlc29sdmVgIHByb3BlcnR5LiBZ
b3UgY2FuIG92ZXJyaWRlCisgICAgICogICAgIHRoZSBwcm9wZXJ0eSBuYW1lLCB1c2luZyBgcmVz
b2x2ZUFzYCBpbiB0aGUgcm91dGUgZGVmaW5pdGlvbi4gU2VlCisgICAgICogICAgIHtAbGluayBu
Z1JvdXRlLiRyb3V0ZVByb3ZpZGVyICRyb3V0ZVByb3ZpZGVyfSBmb3IgbW9yZSBpbmZvLgorICAg
ICAqCisgICAgICogQHByb3BlcnR5IHtPYmplY3R9IHJvdXRlcyBPYmplY3Qgd2l0aCBhbGwgcm91
dGUgY29uZmlndXJhdGlvbiBPYmplY3RzIGFzIGl0cyBwcm9wZXJ0aWVzLgorICAgICAqCisgICAg
ICogQGRlc2NyaXB0aW9uCisgICAgICogYCRyb3V0ZWAgaXMgdXNlZCBmb3IgZGVlcC1saW5raW5n
IFVSTHMgdG8gY29udHJvbGxlcnMgYW5kIHZpZXdzIChIVE1MIHBhcnRpYWxzKS4KKyAgICAgKiBJ
dCB3YXRjaGVzIGAkbG9jYXRpb24udXJsKClgIGFuZCB0cmllcyB0byBtYXAgdGhlIHBhdGggdG8g
YW4gZXhpc3Rpbmcgcm91dGUgZGVmaW5pdGlvbi4KKyAgICAgKgorICAgICAqIFJlcXVpcmVzIHRo
ZSB7QGxpbmsgbmdSb3V0ZSBgbmdSb3V0ZWB9IG1vZHVsZSB0byBiZSBpbnN0YWxsZWQuCisgICAg
ICoKKyAgICAgKiBZb3UgY2FuIGRlZmluZSByb3V0ZXMgdGhyb3VnaCB7QGxpbmsgbmdSb3V0ZS4k
cm91dGVQcm92aWRlciAkcm91dGVQcm92aWRlcn0ncyBBUEkuCisgICAgICoKKyAgICAgKiBUaGUg
YCRyb3V0ZWAgc2VydmljZSBpcyB0eXBpY2FsbHkgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIHRo
ZQorICAgICAqIHtAbGluayBuZ1JvdXRlLmRpcmVjdGl2ZTpuZ1ZpZXcgYG5nVmlld2B9IGRpcmVj
dGl2ZSBhbmQgdGhlCisgICAgICoge0BsaW5rIG5nUm91dGUuJHJvdXRlUGFyYW1zIGAkcm91dGVQ
YXJhbXNgfSBzZXJ2aWNlLgorICAgICAqCisgICAgICogQGV4YW1wbGUKKyAgICAgKiBUaGlzIGV4
YW1wbGUgc2hvd3MgaG93IGNoYW5naW5nIHRoZSBVUkwgaGFzaCBjYXVzZXMgdGhlIGAkcm91dGVg
IHRvIG1hdGNoIGEgcm91dGUgYWdhaW5zdCB0aGUKKyAgICAgKiBVUkwsIGFuZCB0aGUgYG5nVmll
d2AgcHVsbHMgaW4gdGhlIHBhcnRpYWwuCisgICAgICoKKyAgICAgKiA8ZXhhbXBsZSBuYW1lPSIk
cm91dGUtc2VydmljZSIgbW9kdWxlPSJuZ1JvdXRlRXhhbXBsZSIKKyAgICAgKiAgICAgICAgICBk
ZXBzPSJhbmd1bGFyLXJvdXRlLmpzIiBmaXhCYXNlPSJ0cnVlIj4KKyAgICAgKiAgIDxmaWxlIG5h
bWU9ImluZGV4Lmh0bWwiPgorICAgICAqICAgICA8ZGl2IG5nLWNvbnRyb2xsZXI9Ik1haW5Db250
cm9sbGVyIj4KKyAgICAgKiAgICAgICBDaG9vc2U6CisgICAgICogICAgICAgPGEgaHJlZj0iQm9v
ay9Nb2J5Ij5Nb2J5PC9hPiB8CisgICAgICogICAgICAgPGEgaHJlZj0iQm9vay9Nb2J5L2NoLzEi
Pk1vYnk6IENoMTwvYT4gfAorICAgICAqICAgICAgIDxhIGhyZWY9IkJvb2svR2F0c2J5Ij5HYXRz
Ynk8L2E+IHwKKyAgICAgKiAgICAgICA8YSBocmVmPSJCb29rL0dhdHNieS9jaC80P2tleT12YWx1
ZSI+R2F0c2J5OiBDaDQ8L2E+IHwKKyAgICAgKiAgICAgICA8YSBocmVmPSJCb29rL1NjYXJsZXQi
PlNjYXJsZXQgTGV0dGVyPC9hPjxici8+CisgICAgICoKKyAgICAgKiAgICAgICA8ZGl2IG5nLXZp
ZXc+PC9kaXY+CisgICAgICoKKyAgICAgKiAgICAgICA8aHIgLz4KKyAgICAgKgorICAgICAqICAg
ICAgIDxwcmU+JGxvY2F0aW9uLnBhdGgoKSA9IHt7JGxvY2F0aW9uLnBhdGgoKX19PC9wcmU+Cisg
ICAgICogICAgICAgPHByZT4kcm91dGUuY3VycmVudC50ZW1wbGF0ZVVybCA9IHt7JHJvdXRlLmN1
cnJlbnQudGVtcGxhdGVVcmx9fTwvcHJlPgorICAgICAqICAgICAgIDxwcmU+JHJvdXRlLmN1cnJl
bnQucGFyYW1zID0ge3skcm91dGUuY3VycmVudC5wYXJhbXN9fTwvcHJlPgorICAgICAqICAgICAg
IDxwcmU+JHJvdXRlLmN1cnJlbnQuc2NvcGUubmFtZSA9IHt7JHJvdXRlLmN1cnJlbnQuc2NvcGUu
bmFtZX19PC9wcmU+CisgICAgICogICAgICAgPHByZT4kcm91dGVQYXJhbXMgPSB7eyRyb3V0ZVBh
cmFtc319PC9wcmU+CisgICAgICogICAgIDwvZGl2PgorICAgICAqICAgPC9maWxlPgorICAgICAq
CisgICAgICogICA8ZmlsZSBuYW1lPSJib29rLmh0bWwiPgorICAgICAqICAgICBjb250cm9sbGVy
OiB7e25hbWV9fTxiciAvPgorICAgICAqICAgICBCb29rIElkOiB7e3BhcmFtcy5ib29rSWR9fTxi
ciAvPgorICAgICAqICAgPC9maWxlPgorICAgICAqCisgICAgICogICA8ZmlsZSBuYW1lPSJjaGFw
dGVyLmh0bWwiPgorICAgICAqICAgICBjb250cm9sbGVyOiB7e25hbWV9fTxiciAvPgorICAgICAq
ICAgICBCb29rIElkOiB7e3BhcmFtcy5ib29rSWR9fTxiciAvPgorICAgICAqICAgICBDaGFwdGVy
IElkOiB7e3BhcmFtcy5jaGFwdGVySWR9fQorICAgICAqICAgPC9maWxlPgorICAgICAqCisgICAg
ICogICA8ZmlsZSBuYW1lPSJzY3JpcHQuanMiPgorICAgICAqICAgICBhbmd1bGFyLm1vZHVsZSgn
bmdSb3V0ZUV4YW1wbGUnLCBbJ25nUm91dGUnXSkKKyAgICAgKgorICAgICAqICAgICAgLmNvbnRy
b2xsZXIoJ01haW5Db250cm9sbGVyJywgZnVuY3Rpb24oJHNjb3BlLCAkcm91dGUsICRyb3V0ZVBh
cmFtcywgJGxvY2F0aW9uKSB7CisgICAgICogICAgICAgICAgJHNjb3BlLiRyb3V0ZSA9ICRyb3V0
ZTsKKyAgICAgKiAgICAgICAgICAkc2NvcGUuJGxvY2F0aW9uID0gJGxvY2F0aW9uOworICAgICAq
ICAgICAgICAgICRzY29wZS4kcm91dGVQYXJhbXMgPSAkcm91dGVQYXJhbXM7CisgICAgICogICAg
ICB9KQorICAgICAqCisgICAgICogICAgICAuY29udHJvbGxlcignQm9va0NvbnRyb2xsZXInLCBm
dW5jdGlvbigkc2NvcGUsICRyb3V0ZVBhcmFtcykgeworICAgICAqICAgICAgICAgICRzY29wZS5u
YW1lID0gJ0Jvb2tDb250cm9sbGVyJzsKKyAgICAgKiAgICAgICAgICAkc2NvcGUucGFyYW1zID0g
JHJvdXRlUGFyYW1zOworICAgICAqICAgICAgfSkKKyAgICAgKgorICAgICAqICAgICAgLmNvbnRy
b2xsZXIoJ0NoYXB0ZXJDb250cm9sbGVyJywgZnVuY3Rpb24oJHNjb3BlLCAkcm91dGVQYXJhbXMp
IHsKKyAgICAgKiAgICAgICAgICAkc2NvcGUubmFtZSA9ICdDaGFwdGVyQ29udHJvbGxlcic7Cisg
ICAgICogICAgICAgICAgJHNjb3BlLnBhcmFtcyA9ICRyb3V0ZVBhcmFtczsKKyAgICAgKiAgICAg
IH0pCisgICAgICoKKyAgICAgKiAgICAgLmNvbmZpZyhmdW5jdGlvbigkcm91dGVQcm92aWRlciwg
JGxvY2F0aW9uUHJvdmlkZXIpIHsKKyAgICAgKiAgICAgICAkcm91dGVQcm92aWRlcgorICAgICAq
ICAgICAgICAud2hlbignL0Jvb2svOmJvb2tJZCcsIHsKKyAgICAgKiAgICAgICAgIHRlbXBsYXRl
VXJsOiAnYm9vay5odG1sJywKKyAgICAgKiAgICAgICAgIGNvbnRyb2xsZXI6ICdCb29rQ29udHJv
bGxlcicsCisgICAgICogICAgICAgICByZXNvbHZlOiB7CisgICAgICogICAgICAgICAgIC8vIEkg
d2lsbCBjYXVzZSBhIDEgc2Vjb25kIGRlbGF5CisgICAgICogICAgICAgICAgIGRlbGF5OiBmdW5j
dGlvbigkcSwgJHRpbWVvdXQpIHsKKyAgICAgKiAgICAgICAgICAgICB2YXIgZGVsYXkgPSAkcS5k
ZWZlcigpOworICAgICAqICAgICAgICAgICAgICR0aW1lb3V0KGRlbGF5LnJlc29sdmUsIDEwMDAp
OworICAgICAqICAgICAgICAgICAgIHJldHVybiBkZWxheS5wcm9taXNlOworICAgICAqICAgICAg
ICAgICB9CisgICAgICogICAgICAgICB9CisgICAgICogICAgICAgfSkKKyAgICAgKiAgICAgICAu
d2hlbignL0Jvb2svOmJvb2tJZC9jaC86Y2hhcHRlcklkJywgeworICAgICAqICAgICAgICAgdGVt
cGxhdGVVcmw6ICdjaGFwdGVyLmh0bWwnLAorICAgICAqICAgICAgICAgY29udHJvbGxlcjogJ0No
YXB0ZXJDb250cm9sbGVyJworICAgICAqICAgICAgIH0pOworICAgICAqCisgICAgICogICAgICAg
Ly8gY29uZmlndXJlIGh0bWw1IHRvIGdldCBsaW5rcyB3b3JraW5nIG9uIGpzZmlkZGxlCisgICAg
ICogICAgICAgJGxvY2F0aW9uUHJvdmlkZXIuaHRtbDVNb2RlKHRydWUpOworICAgICAqICAgICB9
KTsKKyAgICAgKgorICAgICAqICAgPC9maWxlPgorICAgICAqCisgICAgICogICA8ZmlsZSBuYW1l
PSJwcm90cmFjdG9yLmpzIiB0eXBlPSJwcm90cmFjdG9yIj4KKyAgICAgKiAgICAgaXQoJ3Nob3Vs
ZCBsb2FkIGFuZCBjb21waWxlIGNvcnJlY3QgdGVtcGxhdGUnLCBmdW5jdGlvbigpIHsKKyAgICAg
KiAgICAgICBlbGVtZW50KGJ5LmxpbmtUZXh0KCdNb2J5OiBDaDEnKSkuY2xpY2soKTsKKyAgICAg
KiAgICAgICB2YXIgY29udGVudCA9IGVsZW1lbnQoYnkuY3NzKCdbbmctdmlld10nKSkuZ2V0VGV4
dCgpOworICAgICAqICAgICAgIGV4cGVjdChjb250ZW50KS50b01hdGNoKC9jb250cm9sbGVyOiBD
aGFwdGVyQ29udHJvbGxlci8pOworICAgICAqICAgICAgIGV4cGVjdChjb250ZW50KS50b01hdGNo
KC9Cb29rIElkOiBNb2J5Lyk7CisgICAgICogICAgICAgZXhwZWN0KGNvbnRlbnQpLnRvTWF0Y2go
L0NoYXB0ZXIgSWQ6IDEvKTsKKyAgICAgKgorICAgICAqICAgICAgIGVsZW1lbnQoYnkucGFydGlh
bExpbmtUZXh0KCdTY2FybGV0JykpLmNsaWNrKCk7CisgICAgICoKKyAgICAgKiAgICAgICBjb250
ZW50ID0gZWxlbWVudChieS5jc3MoJ1tuZy12aWV3XScpKS5nZXRUZXh0KCk7CisgICAgICogICAg
ICAgZXhwZWN0KGNvbnRlbnQpLnRvTWF0Y2goL2NvbnRyb2xsZXI6IEJvb2tDb250cm9sbGVyLyk7
CisgICAgICogICAgICAgZXhwZWN0KGNvbnRlbnQpLnRvTWF0Y2goL0Jvb2sgSWQ6IFNjYXJsZXQv
KTsKKyAgICAgKiAgICAgfSk7CisgICAgICogICA8L2ZpbGU+CisgICAgICogPC9leGFtcGxlPgor
ICAgICAqLworCisgICAgLyoqCisgICAgICogQG5nZG9jIGV2ZW50CisgICAgICogQG5hbWUgJHJv
dXRlIyRyb3V0ZUNoYW5nZVN0YXJ0CisgICAgICogQGV2ZW50VHlwZSBicm9hZGNhc3Qgb24gcm9v
dCBzY29wZQorICAgICAqIEBkZXNjcmlwdGlvbgorICAgICAqIEJyb2FkY2FzdGVkIGJlZm9yZSBh
IHJvdXRlIGNoYW5nZS4gQXQgdGhpcyAgcG9pbnQgdGhlIHJvdXRlIHNlcnZpY2VzIHN0YXJ0cwor
ICAgICAqIHJlc29sdmluZyBhbGwgb2YgdGhlIGRlcGVuZGVuY2llcyBuZWVkZWQgZm9yIHRoZSBy
b3V0ZSBjaGFuZ2UgdG8gb2NjdXIuCisgICAgICogVHlwaWNhbGx5IHRoaXMgaW52b2x2ZXMgZmV0
Y2hpbmcgdGhlIHZpZXcgdGVtcGxhdGUgYXMgd2VsbCBhcyBhbnkgZGVwZW5kZW5jaWVzCisgICAg
ICogZGVmaW5lZCBpbiBgcmVzb2x2ZWAgcm91dGUgcHJvcGVydHkuIE9uY2UgIGFsbCBvZiB0aGUg
ZGVwZW5kZW5jaWVzIGFyZSByZXNvbHZlZAorICAgICAqIGAkcm91dGVDaGFuZ2VTdWNjZXNzYCBp
cyBmaXJlZC4KKyAgICAgKgorICAgICAqIFRoZSByb3V0ZSBjaGFuZ2UgKGFuZCB0aGUgYCRsb2Nh
dGlvbmAgY2hhbmdlIHRoYXQgdHJpZ2dlcmVkIGl0KSBjYW4gYmUgcHJldmVudGVkCisgICAgICog
YnkgY2FsbGluZyBgcHJldmVudERlZmF1bHRgIG1ldGhvZCBvZiB0aGUgZXZlbnQuIFNlZSB7QGxp
bmsgbmcuJHJvb3RTY29wZS5TY29wZSMkb259CisgICAgICogZm9yIG1vcmUgZGV0YWlscyBhYm91
dCBldmVudCBvYmplY3QuCisgICAgICoKKyAgICAgKiBAcGFyYW0ge09iamVjdH0gYW5ndWxhckV2
ZW50IFN5bnRoZXRpYyBldmVudCBvYmplY3QuCisgICAgICogQHBhcmFtIHtSb3V0ZX0gbmV4dCBG
dXR1cmUgcm91dGUgaW5mb3JtYXRpb24uCisgICAgICogQHBhcmFtIHtSb3V0ZX0gY3VycmVudCBD
dXJyZW50IHJvdXRlIGluZm9ybWF0aW9uLgorICAgICAqLworCisgICAgLyoqCisgICAgICogQG5n
ZG9jIGV2ZW50CisgICAgICogQG5hbWUgJHJvdXRlIyRyb3V0ZUNoYW5nZVN1Y2Nlc3MKKyAgICAg
KiBAZXZlbnRUeXBlIGJyb2FkY2FzdCBvbiByb290IHNjb3BlCisgICAgICogQGRlc2NyaXB0aW9u
CisgICAgICogQnJvYWRjYXN0ZWQgYWZ0ZXIgYSByb3V0ZSBjaGFuZ2UgaGFzIGhhcHBlbmVkIHN1
Y2Nlc3NmdWxseS4KKyAgICAgKiBUaGUgYHJlc29sdmVgIGRlcGVuZGVuY2llcyBhcmUgbm93IGF2
YWlsYWJsZSBpbiB0aGUgYGN1cnJlbnQubG9jYWxzYCBwcm9wZXJ0eS4KKyAgICAgKgorICAgICAq
IHtAbGluayBuZ1JvdXRlLmRpcmVjdGl2ZTpuZ1ZpZXcgbmdWaWV3fSBsaXN0ZW5zIGZvciB0aGUg
ZGlyZWN0aXZlCisgICAgICogdG8gaW5zdGFudGlhdGUgdGhlIGNvbnRyb2xsZXIgYW5kIHJlbmRl
ciB0aGUgdmlldy4KKyAgICAgKgorICAgICAqIEBwYXJhbSB7T2JqZWN0fSBhbmd1bGFyRXZlbnQg
U3ludGhldGljIGV2ZW50IG9iamVjdC4KKyAgICAgKiBAcGFyYW0ge1JvdXRlfSBjdXJyZW50IEN1
cnJlbnQgcm91dGUgaW5mb3JtYXRpb24uCisgICAgICogQHBhcmFtIHtSb3V0ZXxVbmRlZmluZWR9
IHByZXZpb3VzIFByZXZpb3VzIHJvdXRlIGluZm9ybWF0aW9uLCBvciB1bmRlZmluZWQgaWYgY3Vy
cmVudCBpcworICAgICAqIGZpcnN0IHJvdXRlIGVudGVyZWQuCisgICAgICovCisKKyAgICAvKioK
KyAgICAgKiBAbmdkb2MgZXZlbnQKKyAgICAgKiBAbmFtZSAkcm91dGUjJHJvdXRlQ2hhbmdlRXJy
b3IKKyAgICAgKiBAZXZlbnRUeXBlIGJyb2FkY2FzdCBvbiByb290IHNjb3BlCisgICAgICogQGRl
c2NyaXB0aW9uCisgICAgICogQnJvYWRjYXN0ZWQgaWYgYW55IG9mIHRoZSByZXNvbHZlIHByb21p
c2VzIGFyZSByZWplY3RlZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSB7T2JqZWN0fSBhbmd1bGFy
RXZlbnQgU3ludGhldGljIGV2ZW50IG9iamVjdAorICAgICAqIEBwYXJhbSB7Um91dGV9IGN1cnJl
bnQgQ3VycmVudCByb3V0ZSBpbmZvcm1hdGlvbi4KKyAgICAgKiBAcGFyYW0ge1JvdXRlfSBwcmV2
aW91cyBQcmV2aW91cyByb3V0ZSBpbmZvcm1hdGlvbi4KKyAgICAgKiBAcGFyYW0ge1JvdXRlfSBy
ZWplY3Rpb24gUmVqZWN0aW9uIG9mIHRoZSBwcm9taXNlLiBVc3VhbGx5IHRoZSBlcnJvciBvZiB0
aGUgZmFpbGVkIHByb21pc2UuCisgICAgICovCisKKyAgICAvKioKKyAgICAgKiBAbmdkb2MgZXZl
bnQKKyAgICAgKiBAbmFtZSAkcm91dGUjJHJvdXRlVXBkYXRlCisgICAgICogQGV2ZW50VHlwZSBi
cm9hZGNhc3Qgb24gcm9vdCBzY29wZQorICAgICAqIEBkZXNjcmlwdGlvbgorICAgICAqIFRoZSBg
cmVsb2FkT25TZWFyY2hgIHByb3BlcnR5IGhhcyBiZWVuIHNldCB0byBmYWxzZSwgYW5kIHdlIGFy
ZSByZXVzaW5nIHRoZSBzYW1lCisgICAgICogaW5zdGFuY2Ugb2YgdGhlIENvbnRyb2xsZXIuCisg
ICAgICoKKyAgICAgKiBAcGFyYW0ge09iamVjdH0gYW5ndWxhckV2ZW50IFN5bnRoZXRpYyBldmVu
dCBvYmplY3QKKyAgICAgKiBAcGFyYW0ge1JvdXRlfSBjdXJyZW50IEN1cnJlbnQvcHJldmlvdXMg
cm91dGUgaW5mb3JtYXRpb24uCisgICAgICovCisKKyAgICB2YXIgZm9yY2VSZWxvYWQgPSBmYWxz
ZSwKKyAgICAgICAgcHJlcGFyZWRSb3V0ZSwKKyAgICAgICAgcHJlcGFyZWRSb3V0ZUlzVXBkYXRl
T25seSwKKyAgICAgICAgJHJvdXRlID0geworICAgICAgICAgIHJvdXRlczogcm91dGVzLAorCisg
ICAgICAgICAgLyoqCisgICAgICAgICAgICogQG5nZG9jIG1ldGhvZAorICAgICAgICAgICAqIEBu
YW1lICRyb3V0ZSNyZWxvYWQKKyAgICAgICAgICAgKgorICAgICAgICAgICAqIEBkZXNjcmlwdGlv
bgorICAgICAgICAgICAqIENhdXNlcyBgJHJvdXRlYCBzZXJ2aWNlIHRvIHJlbG9hZCB0aGUgY3Vy
cmVudCByb3V0ZSBldmVuIGlmCisgICAgICAgICAgICoge0BsaW5rIG5nLiRsb2NhdGlvbiAkbG9j
YXRpb259IGhhc24ndCBjaGFuZ2VkLgorICAgICAgICAgICAqCisgICAgICAgICAgICogQXMgYSBy
ZXN1bHQgb2YgdGhhdCwge0BsaW5rIG5nUm91dGUuZGlyZWN0aXZlOm5nVmlldyBuZ1ZpZXd9Cisg
ICAgICAgICAgICogY3JlYXRlcyBuZXcgc2NvcGUgYW5kIHJlaW5zdGFudGlhdGVzIHRoZSBjb250
cm9sbGVyLgorICAgICAgICAgICAqLworICAgICAgICAgIHJlbG9hZDogZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICBmb3JjZVJlbG9hZCA9IHRydWU7CisKKyAgICAgICAgICAgIHZhciBmYWtlTG9j
YXRpb25FdmVudCA9IHsKKyAgICAgICAgICAgICAgZGVmYXVsdFByZXZlbnRlZDogZmFsc2UsCisg
ICAgICAgICAgICAgIHByZXZlbnREZWZhdWx0OiBmdW5jdGlvbiBmYWtlUHJldmVudERlZmF1bHQo
KSB7CisgICAgICAgICAgICAgICAgdGhpcy5kZWZhdWx0UHJldmVudGVkID0gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICBmb3JjZVJlbG9hZCA9IGZhbHNlOworICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9OworCisgICAgICAgICAgICAkcm9vdFNjb3BlLiRldmFsQXN5bmMoZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICAgIHByZXBhcmVSb3V0ZShmYWtlTG9jYXRpb25FdmVudCk7CisgICAgICAg
ICAgICAgIGlmICghZmFrZUxvY2F0aW9uRXZlbnQuZGVmYXVsdFByZXZlbnRlZCkgY29tbWl0Um91
dGUoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgIH0sCisKKyAgICAgICAgICAvKioKKyAg
ICAgICAgICAgKiBAbmdkb2MgbWV0aG9kCisgICAgICAgICAgICogQG5hbWUgJHJvdXRlI3VwZGF0
ZVBhcmFtcworICAgICAgICAgICAqCisgICAgICAgICAgICogQGRlc2NyaXB0aW9uCisgICAgICAg
ICAgICogQ2F1c2VzIGAkcm91dGVgIHNlcnZpY2UgdG8gdXBkYXRlIHRoZSBjdXJyZW50IFVSTCwg
cmVwbGFjaW5nCisgICAgICAgICAgICogY3VycmVudCByb3V0ZSBwYXJhbWV0ZXJzIHdpdGggdGhv
c2Ugc3BlY2lmaWVkIGluIGBuZXdQYXJhbXNgLgorICAgICAgICAgICAqIFByb3ZpZGVkIHByb3Bl
cnR5IG5hbWVzIHRoYXQgbWF0Y2ggdGhlIHJvdXRlJ3MgcGF0aCBzZWdtZW50CisgICAgICAgICAg
ICogZGVmaW5pdGlvbnMgd2lsbCBiZSBpbnRlcnBvbGF0ZWQgaW50byB0aGUgbG9jYXRpb24ncyBw
YXRoLCB3aGlsZQorICAgICAgICAgICAqIHJlbWFpbmluZyBwcm9wZXJ0aWVzIHdpbGwgYmUgdHJl
YXRlZCBhcyBxdWVyeSBwYXJhbXMuCisgICAgICAgICAgICoKKyAgICAgICAgICAgKiBAcGFyYW0g
eyFPYmplY3Q8c3RyaW5nLCBzdHJpbmc+fSBuZXdQYXJhbXMgbWFwcGluZyBvZiBVUkwgcGFyYW1l
dGVyIG5hbWVzIHRvIHZhbHVlcworICAgICAgICAgICAqLworICAgICAgICAgIHVwZGF0ZVBhcmFt
czogZnVuY3Rpb24obmV3UGFyYW1zKSB7CisgICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50ICYm
IHRoaXMuY3VycmVudC4kJHJvdXRlKSB7CisgICAgICAgICAgICAgIG5ld1BhcmFtcyA9IGFuZ3Vs
YXIuZXh0ZW5kKHt9LCB0aGlzLmN1cnJlbnQucGFyYW1zLCBuZXdQYXJhbXMpOworICAgICAgICAg
ICAgICAkbG9jYXRpb24ucGF0aChpbnRlcnBvbGF0ZSh0aGlzLmN1cnJlbnQuJCRyb3V0ZS5vcmln
aW5hbFBhdGgsIG5ld1BhcmFtcykpOworICAgICAgICAgICAgICAvLyBpbnRlcnBvbGF0ZSBtb2Rp
ZmllcyBuZXdQYXJhbXMsIG9ubHkgcXVlcnkgcGFyYW1zIGFyZSBsZWZ0CisgICAgICAgICAgICAg
ICRsb2NhdGlvbi5zZWFyY2gobmV3UGFyYW1zKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgIHRocm93ICRyb3V0ZU1pbkVycignbm9yb3V0JywgJ1RyaWVkIHVwZGF0aW5nIHJv
dXRlIHdoZW4gd2l0aCBubyBjdXJyZW50IHJvdXRlJyk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgfQorICAgICAgICB9OworCisgICAgJHJvb3RTY29wZS4kb24oJyRsb2NhdGlvbkNoYW5nZVN0
YXJ0JywgcHJlcGFyZVJvdXRlKTsKKyAgICAkcm9vdFNjb3BlLiRvbignJGxvY2F0aW9uQ2hhbmdl
U3VjY2VzcycsIGNvbW1pdFJvdXRlKTsKKworICAgIHJldHVybiAkcm91dGU7CisKKyAgICAvLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCisgICAg
LyoqCisgICAgICogQHBhcmFtIG9uIHtzdHJpbmd9IGN1cnJlbnQgdXJsCisgICAgICogQHBhcmFt
IHJvdXRlIHtPYmplY3R9IHJvdXRlIHJlZ2V4cCB0byBtYXRjaCB0aGUgdXJsIGFnYWluc3QKKyAg
ICAgKiBAcmV0dXJuIHs/T2JqZWN0fQorICAgICAqCisgICAgICogQGRlc2NyaXB0aW9uCisgICAg
ICogQ2hlY2sgaWYgdGhlIHJvdXRlIG1hdGNoZXMgdGhlIGN1cnJlbnQgdXJsLgorICAgICAqCisg
ICAgICogSW5zcGlyZWQgYnkgbWF0Y2ggaW4KKyAgICAgKiB2aXNpb25tZWRpYS9leHByZXNzL2xp
Yi9yb3V0ZXIvcm91dGVyLmpzLgorICAgICAqLworICAgIGZ1bmN0aW9uIHN3aXRjaFJvdXRlTWF0
Y2hlcihvbiwgcm91dGUpIHsKKyAgICAgIHZhciBrZXlzID0gcm91dGUua2V5cywKKyAgICAgICAg
ICBwYXJhbXMgPSB7fTsKKworICAgICAgaWYgKCFyb3V0ZS5yZWdleHApIHJldHVybiBudWxsOwor
CisgICAgICB2YXIgbSA9IHJvdXRlLnJlZ2V4cC5leGVjKG9uKTsKKyAgICAgIGlmICghbSkgcmV0
dXJuIG51bGw7CisKKyAgICAgIGZvciAodmFyIGkgPSAxLCBsZW4gPSBtLmxlbmd0aDsgaSA8IGxl
bjsgKytpKSB7CisgICAgICAgIHZhciBrZXkgPSBrZXlzW2kgLSAxXTsKKworICAgICAgICB2YXIg
dmFsID0gbVtpXTsKKworICAgICAgICBpZiAoa2V5ICYmIHZhbCkgeworICAgICAgICAgIHBhcmFt
c1trZXkubmFtZV0gPSB2YWw7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIHJldHVybiBwYXJh
bXM7CisgICAgfQorCisgICAgZnVuY3Rpb24gcHJlcGFyZVJvdXRlKCRsb2NhdGlvbkV2ZW50KSB7
CisgICAgICB2YXIgbGFzdFJvdXRlID0gJHJvdXRlLmN1cnJlbnQ7CisKKyAgICAgIHByZXBhcmVk
Um91dGUgPSBwYXJzZVJvdXRlKCk7CisgICAgICBwcmVwYXJlZFJvdXRlSXNVcGRhdGVPbmx5ID0g
cHJlcGFyZWRSb3V0ZSAmJiBsYXN0Um91dGUgJiYgcHJlcGFyZWRSb3V0ZS4kJHJvdXRlID09PSBs
YXN0Um91dGUuJCRyb3V0ZQorICAgICAgICAgICYmIGFuZ3VsYXIuZXF1YWxzKHByZXBhcmVkUm91
dGUucGF0aFBhcmFtcywgbGFzdFJvdXRlLnBhdGhQYXJhbXMpCisgICAgICAgICAgJiYgIXByZXBh
cmVkUm91dGUucmVsb2FkT25TZWFyY2ggJiYgIWZvcmNlUmVsb2FkOworCisgICAgICBpZiAoIXBy
ZXBhcmVkUm91dGVJc1VwZGF0ZU9ubHkgJiYgKGxhc3RSb3V0ZSB8fCBwcmVwYXJlZFJvdXRlKSkg
eworICAgICAgICBpZiAoJHJvb3RTY29wZS4kYnJvYWRjYXN0KCckcm91dGVDaGFuZ2VTdGFydCcs
IHByZXBhcmVkUm91dGUsIGxhc3RSb3V0ZSkuZGVmYXVsdFByZXZlbnRlZCkgeworICAgICAgICAg
IGlmICgkbG9jYXRpb25FdmVudCkgeworICAgICAgICAgICAgJGxvY2F0aW9uRXZlbnQucHJldmVu
dERlZmF1bHQoKTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisKKyAg
ICBmdW5jdGlvbiBjb21taXRSb3V0ZSgpIHsKKyAgICAgIHZhciBsYXN0Um91dGUgPSAkcm91dGUu
Y3VycmVudDsKKyAgICAgIHZhciBuZXh0Um91dGUgPSBwcmVwYXJlZFJvdXRlOworCisgICAgICBp
ZiAocHJlcGFyZWRSb3V0ZUlzVXBkYXRlT25seSkgeworICAgICAgICBsYXN0Um91dGUucGFyYW1z
ID0gbmV4dFJvdXRlLnBhcmFtczsKKyAgICAgICAgYW5ndWxhci5jb3B5KGxhc3RSb3V0ZS5wYXJh
bXMsICRyb3V0ZVBhcmFtcyk7CisgICAgICAgICRyb290U2NvcGUuJGJyb2FkY2FzdCgnJHJvdXRl
VXBkYXRlJywgbGFzdFJvdXRlKTsKKyAgICAgIH0gZWxzZSBpZiAobmV4dFJvdXRlIHx8IGxhc3RS
b3V0ZSkgeworICAgICAgICBmb3JjZVJlbG9hZCA9IGZhbHNlOworICAgICAgICAkcm91dGUuY3Vy
cmVudCA9IG5leHRSb3V0ZTsKKyAgICAgICAgaWYgKG5leHRSb3V0ZSkgeworICAgICAgICAgIGlm
IChuZXh0Um91dGUucmVkaXJlY3RUbykgeworICAgICAgICAgICAgaWYgKGFuZ3VsYXIuaXNTdHJp
bmcobmV4dFJvdXRlLnJlZGlyZWN0VG8pKSB7CisgICAgICAgICAgICAgICRsb2NhdGlvbi5wYXRo
KGludGVycG9sYXRlKG5leHRSb3V0ZS5yZWRpcmVjdFRvLCBuZXh0Um91dGUucGFyYW1zKSkuc2Vh
cmNoKG5leHRSb3V0ZS5wYXJhbXMpCisgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKCk7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAkbG9jYXRpb24udXJsKG5leHRS
b3V0ZS5yZWRpcmVjdFRvKG5leHRSb3V0ZS5wYXRoUGFyYW1zLCAkbG9jYXRpb24ucGF0aCgpLCAk
bG9jYXRpb24uc2VhcmNoKCkpKQorICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgpOwor
ICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgICRxLndoZW4o
bmV4dFJvdXRlKS4KKyAgICAgICAgICB0aGVuKHJlc29sdmVMb2NhbHMpLgorICAgICAgICAgIHRo
ZW4oZnVuY3Rpb24obG9jYWxzKSB7CisgICAgICAgICAgICAvLyBhZnRlciByb3V0ZSBjaGFuZ2UK
KyAgICAgICAgICAgIGlmIChuZXh0Um91dGUgPT09ICRyb3V0ZS5jdXJyZW50KSB7CisgICAgICAg
ICAgICAgIGlmIChuZXh0Um91dGUpIHsKKyAgICAgICAgICAgICAgICBuZXh0Um91dGUubG9jYWxz
ID0gbG9jYWxzOworICAgICAgICAgICAgICAgIGFuZ3VsYXIuY29weShuZXh0Um91dGUucGFyYW1z
LCAkcm91dGVQYXJhbXMpOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICRyb290U2Nv
cGUuJGJyb2FkY2FzdCgnJHJvdXRlQ2hhbmdlU3VjY2VzcycsIG5leHRSb3V0ZSwgbGFzdFJvdXRl
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCBmdW5jdGlvbihlcnJvcikgeworICAgICAg
ICAgICAgaWYgKG5leHRSb3V0ZSA9PT0gJHJvdXRlLmN1cnJlbnQpIHsKKyAgICAgICAgICAgICAg
JHJvb3RTY29wZS4kYnJvYWRjYXN0KCckcm91dGVDaGFuZ2VFcnJvcicsIG5leHRSb3V0ZSwgbGFz
dFJvdXRlLCBlcnJvcik7CisgICAgICAgICAgICB9CisgICAgICAgICAgfSk7CisgICAgICB9Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gcmVzb2x2ZUxvY2Fscyhyb3V0ZSkgeworICAgICAgaWYgKHJv
dXRlKSB7CisgICAgICAgIHZhciBsb2NhbHMgPSBhbmd1bGFyLmV4dGVuZCh7fSwgcm91dGUucmVz
b2x2ZSk7CisgICAgICAgIGFuZ3VsYXIuZm9yRWFjaChsb2NhbHMsIGZ1bmN0aW9uKHZhbHVlLCBr
ZXkpIHsKKyAgICAgICAgICBsb2NhbHNba2V5XSA9IGFuZ3VsYXIuaXNTdHJpbmcodmFsdWUpID8K
KyAgICAgICAgICAgICAgJGluamVjdG9yLmdldCh2YWx1ZSkgOgorICAgICAgICAgICAgICAkaW5q
ZWN0b3IuaW52b2tlKHZhbHVlLCBudWxsLCBudWxsLCBrZXkpOworICAgICAgICB9KTsKKyAgICAg
ICAgdmFyIHRlbXBsYXRlID0gZ2V0VGVtcGxhdGVGb3Iocm91dGUpOworICAgICAgICBpZiAoYW5n
dWxhci5pc0RlZmluZWQodGVtcGxhdGUpKSB7CisgICAgICAgICAgbG9jYWxzWyckdGVtcGxhdGUn
XSA9IHRlbXBsYXRlOworICAgICAgICB9CisgICAgICAgIHJldHVybiAkcS5hbGwobG9jYWxzKTsK
KyAgICAgIH0KKyAgICB9CisKKworICAgIGZ1bmN0aW9uIGdldFRlbXBsYXRlRm9yKHJvdXRlKSB7
CisgICAgICB2YXIgdGVtcGxhdGUsIHRlbXBsYXRlVXJsOworICAgICAgaWYgKGFuZ3VsYXIuaXNE
ZWZpbmVkKHRlbXBsYXRlID0gcm91dGUudGVtcGxhdGUpKSB7CisgICAgICAgIGlmIChhbmd1bGFy
LmlzRnVuY3Rpb24odGVtcGxhdGUpKSB7CisgICAgICAgICAgdGVtcGxhdGUgPSB0ZW1wbGF0ZShy
b3V0ZS5wYXJhbXMpOworICAgICAgICB9CisgICAgICB9IGVsc2UgaWYgKGFuZ3VsYXIuaXNEZWZp
bmVkKHRlbXBsYXRlVXJsID0gcm91dGUudGVtcGxhdGVVcmwpKSB7CisgICAgICAgIGlmIChhbmd1
bGFyLmlzRnVuY3Rpb24odGVtcGxhdGVVcmwpKSB7CisgICAgICAgICAgdGVtcGxhdGVVcmwgPSB0
ZW1wbGF0ZVVybChyb3V0ZS5wYXJhbXMpOworICAgICAgICB9CisgICAgICAgIGlmIChhbmd1bGFy
LmlzRGVmaW5lZCh0ZW1wbGF0ZVVybCkpIHsKKyAgICAgICAgICByb3V0ZS5sb2FkZWRUZW1wbGF0
ZVVybCA9ICRzY2UudmFsdWVPZih0ZW1wbGF0ZVVybCk7CisgICAgICAgICAgdGVtcGxhdGUgPSAk
dGVtcGxhdGVSZXF1ZXN0KHRlbXBsYXRlVXJsKTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAg
cmV0dXJuIHRlbXBsYXRlOworICAgIH0KKworCisgICAgLyoqCisgICAgICogQHJldHVybnMge09i
amVjdH0gdGhlIGN1cnJlbnQgYWN0aXZlIHJvdXRlLCBieSBtYXRjaGluZyBpdCBhZ2FpbnN0IHRo
ZSBVUkwKKyAgICAgKi8KKyAgICBmdW5jdGlvbiBwYXJzZVJvdXRlKCkgeworICAgICAgLy8gTWF0
Y2ggYSByb3V0ZQorICAgICAgdmFyIHBhcmFtcywgbWF0Y2g7CisgICAgICBhbmd1bGFyLmZvckVh
Y2gocm91dGVzLCBmdW5jdGlvbihyb3V0ZSwgcGF0aCkgeworICAgICAgICBpZiAoIW1hdGNoICYm
IChwYXJhbXMgPSBzd2l0Y2hSb3V0ZU1hdGNoZXIoJGxvY2F0aW9uLnBhdGgoKSwgcm91dGUpKSkg
eworICAgICAgICAgIG1hdGNoID0gaW5oZXJpdChyb3V0ZSwgeworICAgICAgICAgICAgcGFyYW1z
OiBhbmd1bGFyLmV4dGVuZCh7fSwgJGxvY2F0aW9uLnNlYXJjaCgpLCBwYXJhbXMpLAorICAgICAg
ICAgICAgcGF0aFBhcmFtczogcGFyYW1zfSk7CisgICAgICAgICAgbWF0Y2guJCRyb3V0ZSA9IHJv
dXRlOworICAgICAgICB9CisgICAgICB9KTsKKyAgICAgIC8vIE5vIHJvdXRlIG1hdGNoZWQ7IGZh
bGxiYWNrIHRvICJvdGhlcndpc2UiIHJvdXRlCisgICAgICByZXR1cm4gbWF0Y2ggfHwgcm91dGVz
W251bGxdICYmIGluaGVyaXQocm91dGVzW251bGxdLCB7cGFyYW1zOiB7fSwgcGF0aFBhcmFtczp7
fX0pOworICAgIH0KKworICAgIC8qKgorICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IGludGVycG9s
YXRpb24gb2YgdGhlIHJlZGlyZWN0IHBhdGggd2l0aCB0aGUgcGFyYW1ldGVycworICAgICAqLwor
ICAgIGZ1bmN0aW9uIGludGVycG9sYXRlKHN0cmluZywgcGFyYW1zKSB7CisgICAgICB2YXIgcmVz
dWx0ID0gW107CisgICAgICBhbmd1bGFyLmZvckVhY2goKHN0cmluZyB8fCAnJykuc3BsaXQoJzon
KSwgZnVuY3Rpb24oc2VnbWVudCwgaSkgeworICAgICAgICBpZiAoaSA9PT0gMCkgeworICAgICAg
ICAgIHJlc3VsdC5wdXNoKHNlZ21lbnQpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIHZh
ciBzZWdtZW50TWF0Y2ggPSBzZWdtZW50Lm1hdGNoKC8oXHcrKSg/Ols/Kl0pPyguKikvKTsKKyAg
ICAgICAgICB2YXIga2V5ID0gc2VnbWVudE1hdGNoWzFdOworICAgICAgICAgIHJlc3VsdC5wdXNo
KHBhcmFtc1trZXldKTsKKyAgICAgICAgICByZXN1bHQucHVzaChzZWdtZW50TWF0Y2hbMl0gfHwg
JycpOworICAgICAgICAgIGRlbGV0ZSBwYXJhbXNba2V5XTsKKyAgICAgICAgfQorICAgICAgfSk7
CisgICAgICByZXR1cm4gcmVzdWx0LmpvaW4oJycpOworICAgIH0KKyAgfV07Cit9CisKK25nUm91
dGVNb2R1bGUucHJvdmlkZXIoJyRyb3V0ZVBhcmFtcycsICRSb3V0ZVBhcmFtc1Byb3ZpZGVyKTsK
KworCisvKioKKyAqIEBuZ2RvYyBzZXJ2aWNlCisgKiBAbmFtZSAkcm91dGVQYXJhbXMKKyAqIEBy
ZXF1aXJlcyAkcm91dGUKKyAqIEB0aGlzCisgKgorICogQGRlc2NyaXB0aW9uCisgKiBUaGUgYCRy
b3V0ZVBhcmFtc2Agc2VydmljZSBhbGxvd3MgeW91IHRvIHJldHJpZXZlIHRoZSBjdXJyZW50IHNl
dCBvZiByb3V0ZSBwYXJhbWV0ZXJzLgorICoKKyAqIFJlcXVpcmVzIHRoZSB7QGxpbmsgbmdSb3V0
ZSBgbmdSb3V0ZWB9IG1vZHVsZSB0byBiZSBpbnN0YWxsZWQuCisgKgorICogVGhlIHJvdXRlIHBh
cmFtZXRlcnMgYXJlIGEgY29tYmluYXRpb24gb2Yge0BsaW5rIG5nLiRsb2NhdGlvbiBgJGxvY2F0
aW9uYH0ncworICoge0BsaW5rIG5nLiRsb2NhdGlvbiNzZWFyY2ggYHNlYXJjaCgpYH0gYW5kIHtA
bGluayBuZy4kbG9jYXRpb24jcGF0aCBgcGF0aCgpYH0uCisgKiBUaGUgYHBhdGhgIHBhcmFtZXRl
cnMgYXJlIGV4dHJhY3RlZCB3aGVuIHRoZSB7QGxpbmsgbmdSb3V0ZS4kcm91dGUgYCRyb3V0ZWB9
IHBhdGggaXMgbWF0Y2hlZC4KKyAqCisgKiBJbiBjYXNlIG9mIHBhcmFtZXRlciBuYW1lIGNvbGxp
c2lvbiwgYHBhdGhgIHBhcmFtcyB0YWtlIHByZWNlZGVuY2Ugb3ZlciBgc2VhcmNoYCBwYXJhbXMu
CisgKgorICogVGhlIHNlcnZpY2UgZ3VhcmFudGVlcyB0aGF0IHRoZSBpZGVudGl0eSBvZiB0aGUg
YCRyb3V0ZVBhcmFtc2Agb2JqZWN0IHdpbGwgcmVtYWluIHVuY2hhbmdlZAorICogKGJ1dCBpdHMg
cHJvcGVydGllcyB3aWxsIGxpa2VseSBjaGFuZ2UpIGV2ZW4gd2hlbiBhIHJvdXRlIGNoYW5nZSBv
Y2N1cnMuCisgKgorICogTm90ZSB0aGF0IHRoZSBgJHJvdXRlUGFyYW1zYCBhcmUgb25seSB1cGRh
dGVkICphZnRlciogYSByb3V0ZSBjaGFuZ2UgY29tcGxldGVzIHN1Y2Nlc3NmdWxseS4KKyAqIFRo
aXMgbWVhbnMgdGhhdCB5b3UgY2Fubm90IHJlbHkgb24gYCRyb3V0ZVBhcmFtc2AgYmVpbmcgY29y
cmVjdCBpbiByb3V0ZSByZXNvbHZlIGZ1bmN0aW9ucy4KKyAqIEluc3RlYWQgeW91IGNhbiB1c2Ug
YCRyb3V0ZS5jdXJyZW50LnBhcmFtc2AgdG8gYWNjZXNzIHRoZSBuZXcgcm91dGUncyBwYXJhbWV0
ZXJzLgorICoKKyAqIEBleGFtcGxlCisgKiBgYGBqcworICogIC8vIEdpdmVuOgorICogIC8vIFVS
TDogaHR0cDovL3NlcnZlci5jb20vaW5kZXguaHRtbCMvQ2hhcHRlci8xL1NlY3Rpb24vMj9zZWFy
Y2g9bW9ieQorICogIC8vIFJvdXRlOiAvQ2hhcHRlci86Y2hhcHRlcklkL1NlY3Rpb24vOnNlY3Rp
b25JZAorICogIC8vCisgKiAgLy8gVGhlbgorICogICRyb3V0ZVBhcmFtcyA9PT4ge2NoYXB0ZXJJ
ZDonMScsIHNlY3Rpb25JZDonMicsIHNlYXJjaDonbW9ieSd9CisgKiBgYGAKKyAqLworZnVuY3Rp
b24gJFJvdXRlUGFyYW1zUHJvdmlkZXIoKSB7CisgIHRoaXMuJGdldCA9IGZ1bmN0aW9uKCkgeyBy
ZXR1cm4ge307IH07Cit9CisKK25nUm91dGVNb2R1bGUuZGlyZWN0aXZlKCduZ1ZpZXcnLCBuZ1Zp
ZXdGYWN0b3J5KTsKK25nUm91dGVNb2R1bGUuZGlyZWN0aXZlKCduZ1ZpZXcnLCBuZ1ZpZXdGaWxs
Q29udGVudEZhY3RvcnkpOworCisKKy8qKgorICogQG5nZG9jIGRpcmVjdGl2ZQorICogQG5hbWUg
bmdWaWV3CisgKiBAcmVzdHJpY3QgRUNBCisgKgorICogQGRlc2NyaXB0aW9uCisgKiAjIE92ZXJ2
aWV3CisgKiBgbmdWaWV3YCBpcyBhIGRpcmVjdGl2ZSB0aGF0IGNvbXBsZW1lbnRzIHRoZSB7QGxp
bmsgbmdSb3V0ZS4kcm91dGUgJHJvdXRlfSBzZXJ2aWNlIGJ5CisgKiBpbmNsdWRpbmcgdGhlIHJl
bmRlcmVkIHRlbXBsYXRlIG9mIHRoZSBjdXJyZW50IHJvdXRlIGludG8gdGhlIG1haW4gbGF5b3V0
IChgaW5kZXguaHRtbGApIGZpbGUuCisgKiBFdmVyeSB0aW1lIHRoZSBjdXJyZW50IHJvdXRlIGNo
YW5nZXMsIHRoZSBpbmNsdWRlZCB2aWV3IGNoYW5nZXMgd2l0aCBpdCBhY2NvcmRpbmcgdG8gdGhl
CisgKiBjb25maWd1cmF0aW9uIG9mIHRoZSBgJHJvdXRlYCBzZXJ2aWNlLgorICoKKyAqIFJlcXVp
cmVzIHRoZSB7QGxpbmsgbmdSb3V0ZSBgbmdSb3V0ZWB9IG1vZHVsZSB0byBiZSBpbnN0YWxsZWQu
CisgKgorICogQGFuaW1hdGlvbnMKKyAqIHwgQW5pbWF0aW9uICAgICAgICAgICAgICAgICAgICAg
ICAgfCBPY2N1cnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgKiB8LS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tfAorICogfCB7QGxpbmsgbmcuJGFuaW1hdGUjZW50ZXIgZW50ZXJ9ICB8IHdoZW4gdGhl
IG5ldyBlbGVtZW50IGlzIGluc2VydGVkIHRvIHRoZSBET00gfAorICogfCB7QGxpbmsgbmcuJGFu
aW1hdGUjbGVhdmUgbGVhdmV9ICB8IHdoZW4gdGhlIG9sZCBlbGVtZW50IGlzIHJlbW92ZWQgZnJv
bSB0byB0aGUgRE9NICB8CisgKgorICogVGhlIGVudGVyIGFuZCBsZWF2ZSBhbmltYXRpb24gb2Nj
dXIgY29uY3VycmVudGx5LgorICoKKyAqIEBrbm93bklzc3VlIElmIGBuZ1ZpZXdgIGlzIGNvbnRh
aW5lZCBpbiBhbiBhc3luY2hyb25vdXNseSBsb2FkZWQgdGVtcGxhdGUgKGUuZy4gaW4gYW5vdGhl
cgorICogICAgICAgICAgICAgZGlyZWN0aXZlJ3MgdGVtcGxhdGVVcmwgb3IgaW4gYSB0ZW1wbGF0
ZSBsb2FkZWQgdXNpbmcgYG5nSW5jbHVkZWApLCB0aGVuIHlvdSBuZWVkIHRvCisgKiAgICAgICAg
ICAgICBtYWtlIHN1cmUgdGhhdCBgJHJvdXRlYCBpcyBpbnN0YW50aWF0ZWQgaW4gdGltZSB0byBj
YXB0dXJlIHRoZSBpbml0aWFsCisgKiAgICAgICAgICAgICBgJGxvY2F0aW9uQ2hhbmdlU3RhcnRg
IGV2ZW50IGFuZCBsb2FkIHRoZSBhcHByb3ByaWF0ZSB2aWV3LiBPbmUgd2F5IHRvIGFjaGlldmUg
dGhpcworICogICAgICAgICAgICAgaXMgdG8gaGF2ZSBpdCBhcyBhIGRlcGVuZGVuY3kgaW4gYSBg
LnJ1bmAgYmxvY2s6CisgKiAgICAgICAgICAgICBgbXlNb2R1bGUucnVuKFsnJHJvdXRlJywgZnVu
Y3Rpb24oKSB7fV0pO2AKKyAqCisgKiBAc2NvcGUKKyAqIEBwcmlvcml0eSA0MDAKKyAqIEBwYXJh
bSB7c3RyaW5nPX0gb25sb2FkIEV4cHJlc3Npb24gdG8gZXZhbHVhdGUgd2hlbmV2ZXIgdGhlIHZp
ZXcgdXBkYXRlcy4KKyAqCisgKiBAcGFyYW0ge3N0cmluZz19IGF1dG9zY3JvbGwgV2hldGhlciBg
bmdWaWV3YCBzaG91bGQgY2FsbCB7QGxpbmsgbmcuJGFuY2hvclNjcm9sbAorICogICAgICAgICAg
ICAgICAgICAkYW5jaG9yU2Nyb2xsfSB0byBzY3JvbGwgdGhlIHZpZXdwb3J0IGFmdGVyIHRoZSB2
aWV3IGlzIHVwZGF0ZWQuCisgKgorICogICAgICAgICAgICAgICAgICAtIElmIHRoZSBhdHRyaWJ1
dGUgaXMgbm90IHNldCwgZGlzYWJsZSBzY3JvbGxpbmcuCisgKiAgICAgICAgICAgICAgICAgIC0g
SWYgdGhlIGF0dHJpYnV0ZSBpcyBzZXQgd2l0aG91dCB2YWx1ZSwgZW5hYmxlIHNjcm9sbGluZy4K
KyAqICAgICAgICAgICAgICAgICAgLSBPdGhlcndpc2UgZW5hYmxlIHNjcm9sbGluZyBvbmx5IGlm
IHRoZSBgYXV0b3Njcm9sbGAgYXR0cmlidXRlIHZhbHVlIGV2YWx1YXRlZAorICogICAgICAgICAg
ICAgICAgICAgIGFzIGFuIGV4cHJlc3Npb24geWllbGRzIGEgdHJ1dGh5IHZhbHVlLgorICogQGV4
YW1wbGUKKyAgICA8ZXhhbXBsZSBuYW1lPSJuZ1ZpZXctZGlyZWN0aXZlIiBtb2R1bGU9Im5nVmll
d0V4YW1wbGUiCisgICAgICAgICAgICAgZGVwcz0iYW5ndWxhci1yb3V0ZS5qczthbmd1bGFyLWFu
aW1hdGUuanMiCisgICAgICAgICAgICAgYW5pbWF0aW9ucz0idHJ1ZSIgZml4QmFzZT0idHJ1ZSI+
CisgICAgICA8ZmlsZSBuYW1lPSJpbmRleC5odG1sIj4KKyAgICAgICAgPGRpdiBuZy1jb250cm9s
bGVyPSJNYWluQ3RybCBhcyBtYWluIj4KKyAgICAgICAgICBDaG9vc2U6CisgICAgICAgICAgPGEg
aHJlZj0iQm9vay9Nb2J5Ij5Nb2J5PC9hPiB8CisgICAgICAgICAgPGEgaHJlZj0iQm9vay9Nb2J5
L2NoLzEiPk1vYnk6IENoMTwvYT4gfAorICAgICAgICAgIDxhIGhyZWY9IkJvb2svR2F0c2J5Ij5H
YXRzYnk8L2E+IHwKKyAgICAgICAgICA8YSBocmVmPSJCb29rL0dhdHNieS9jaC80P2tleT12YWx1
ZSI+R2F0c2J5OiBDaDQ8L2E+IHwKKyAgICAgICAgICA8YSBocmVmPSJCb29rL1NjYXJsZXQiPlNj
YXJsZXQgTGV0dGVyPC9hPjxici8+CisKKyAgICAgICAgICA8ZGl2IGNsYXNzPSJ2aWV3LWFuaW1h
dGUtY29udGFpbmVyIj4KKyAgICAgICAgICAgIDxkaXYgbmctdmlldyBjbGFzcz0idmlldy1hbmlt
YXRlIj48L2Rpdj4KKyAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICA8aHIgLz4KKworICAgICAg
ICAgIDxwcmU+JGxvY2F0aW9uLnBhdGgoKSA9IHt7bWFpbi4kbG9jYXRpb24ucGF0aCgpfX08L3By
ZT4KKyAgICAgICAgICA8cHJlPiRyb3V0ZS5jdXJyZW50LnRlbXBsYXRlVXJsID0ge3ttYWluLiRy
b3V0ZS5jdXJyZW50LnRlbXBsYXRlVXJsfX08L3ByZT4KKyAgICAgICAgICA8cHJlPiRyb3V0ZS5j
dXJyZW50LnBhcmFtcyA9IHt7bWFpbi4kcm91dGUuY3VycmVudC5wYXJhbXN9fTwvcHJlPgorICAg
ICAgICAgIDxwcmU+JHJvdXRlUGFyYW1zID0ge3ttYWluLiRyb3V0ZVBhcmFtc319PC9wcmU+Cisg
ICAgICAgIDwvZGl2PgorICAgICAgPC9maWxlPgorCisgICAgICA8ZmlsZSBuYW1lPSJib29rLmh0
bWwiPgorICAgICAgICA8ZGl2PgorICAgICAgICAgIGNvbnRyb2xsZXI6IHt7Ym9vay5uYW1lfX08
YnIgLz4KKyAgICAgICAgICBCb29rIElkOiB7e2Jvb2sucGFyYW1zLmJvb2tJZH19PGJyIC8+Cisg
ICAgICAgIDwvZGl2PgorICAgICAgPC9maWxlPgorCisgICAgICA8ZmlsZSBuYW1lPSJjaGFwdGVy
Lmh0bWwiPgorICAgICAgICA8ZGl2PgorICAgICAgICAgIGNvbnRyb2xsZXI6IHt7Y2hhcHRlci5u
YW1lfX08YnIgLz4KKyAgICAgICAgICBCb29rIElkOiB7e2NoYXB0ZXIucGFyYW1zLmJvb2tJZH19
PGJyIC8+CisgICAgICAgICAgQ2hhcHRlciBJZDoge3tjaGFwdGVyLnBhcmFtcy5jaGFwdGVySWR9
fQorICAgICAgICA8L2Rpdj4KKyAgICAgIDwvZmlsZT4KKworICAgICAgPGZpbGUgbmFtZT0iYW5p
bWF0aW9ucy5jc3MiPgorICAgICAgICAudmlldy1hbmltYXRlLWNvbnRhaW5lciB7CisgICAgICAg
ICAgcG9zaXRpb246cmVsYXRpdmU7CisgICAgICAgICAgaGVpZ2h0OjEwMHB4IWltcG9ydGFudDsK
KyAgICAgICAgICBiYWNrZ3JvdW5kOndoaXRlOworICAgICAgICAgIGJvcmRlcjoxcHggc29saWQg
YmxhY2s7CisgICAgICAgICAgaGVpZ2h0OjQwcHg7CisgICAgICAgICAgb3ZlcmZsb3c6aGlkZGVu
OworICAgICAgICB9CisKKyAgICAgICAgLnZpZXctYW5pbWF0ZSB7CisgICAgICAgICAgcGFkZGlu
ZzoxMHB4OworICAgICAgICB9CisKKyAgICAgICAgLnZpZXctYW5pbWF0ZS5uZy1lbnRlciwgLnZp
ZXctYW5pbWF0ZS5uZy1sZWF2ZSB7CisgICAgICAgICAgdHJhbnNpdGlvbjphbGwgY3ViaWMtYmV6
aWVyKDAuMjUwLCAwLjQ2MCwgMC40NTAsIDAuOTQwKSAxLjVzOworCisgICAgICAgICAgZGlzcGxh
eTpibG9jazsKKyAgICAgICAgICB3aWR0aDoxMDAlOworICAgICAgICAgIGJvcmRlci1sZWZ0OjFw
eCBzb2xpZCBibGFjazsKKworICAgICAgICAgIHBvc2l0aW9uOmFic29sdXRlOworICAgICAgICAg
IHRvcDowOworICAgICAgICAgIGxlZnQ6MDsKKyAgICAgICAgICByaWdodDowOworICAgICAgICAg
IGJvdHRvbTowOworICAgICAgICAgIHBhZGRpbmc6MTBweDsKKyAgICAgICAgfQorCisgICAgICAg
IC52aWV3LWFuaW1hdGUubmctZW50ZXIgeworICAgICAgICAgIGxlZnQ6MTAwJTsKKyAgICAgICAg
fQorICAgICAgICAudmlldy1hbmltYXRlLm5nLWVudGVyLm5nLWVudGVyLWFjdGl2ZSB7CisgICAg
ICAgICAgbGVmdDowOworICAgICAgICB9CisgICAgICAgIC52aWV3LWFuaW1hdGUubmctbGVhdmUu
bmctbGVhdmUtYWN0aXZlIHsKKyAgICAgICAgICBsZWZ0Oi0xMDAlOworICAgICAgICB9CisgICAg
ICA8L2ZpbGU+CisKKyAgICAgIDxmaWxlIG5hbWU9InNjcmlwdC5qcyI+CisgICAgICAgIGFuZ3Vs
YXIubW9kdWxlKCduZ1ZpZXdFeGFtcGxlJywgWyduZ1JvdXRlJywgJ25nQW5pbWF0ZSddKQorICAg
ICAgICAgIC5jb25maWcoWyckcm91dGVQcm92aWRlcicsICckbG9jYXRpb25Qcm92aWRlcicsCisg
ICAgICAgICAgICBmdW5jdGlvbigkcm91dGVQcm92aWRlciwgJGxvY2F0aW9uUHJvdmlkZXIpIHsK
KyAgICAgICAgICAgICAgJHJvdXRlUHJvdmlkZXIKKyAgICAgICAgICAgICAgICAud2hlbignL0Jv
b2svOmJvb2tJZCcsIHsKKyAgICAgICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAnYm9vay5odG1s
JywKKyAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXI6ICdCb29rQ3RybCcsCisgICAgICAgICAg
ICAgICAgICBjb250cm9sbGVyQXM6ICdib29rJworICAgICAgICAgICAgICAgIH0pCisgICAgICAg
ICAgICAgICAgLndoZW4oJy9Cb29rLzpib29rSWQvY2gvOmNoYXB0ZXJJZCcsIHsKKyAgICAgICAg
ICAgICAgICAgIHRlbXBsYXRlVXJsOiAnY2hhcHRlci5odG1sJywKKyAgICAgICAgICAgICAgICAg
IGNvbnRyb2xsZXI6ICdDaGFwdGVyQ3RybCcsCisgICAgICAgICAgICAgICAgICBjb250cm9sbGVy
QXM6ICdjaGFwdGVyJworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICRsb2Nh
dGlvblByb3ZpZGVyLmh0bWw1TW9kZSh0cnVlKTsKKyAgICAgICAgICB9XSkKKyAgICAgICAgICAu
Y29udHJvbGxlcignTWFpbkN0cmwnLCBbJyRyb3V0ZScsICckcm91dGVQYXJhbXMnLCAnJGxvY2F0
aW9uJywKKyAgICAgICAgICAgIGZ1bmN0aW9uIE1haW5DdHJsKCRyb3V0ZSwgJHJvdXRlUGFyYW1z
LCAkbG9jYXRpb24pIHsKKyAgICAgICAgICAgICAgdGhpcy4kcm91dGUgPSAkcm91dGU7CisgICAg
ICAgICAgICAgIHRoaXMuJGxvY2F0aW9uID0gJGxvY2F0aW9uOworICAgICAgICAgICAgICB0aGlz
LiRyb3V0ZVBhcmFtcyA9ICRyb3V0ZVBhcmFtczsKKyAgICAgICAgICB9XSkKKyAgICAgICAgICAu
Y29udHJvbGxlcignQm9va0N0cmwnLCBbJyRyb3V0ZVBhcmFtcycsIGZ1bmN0aW9uIEJvb2tDdHJs
KCRyb3V0ZVBhcmFtcykgeworICAgICAgICAgICAgdGhpcy5uYW1lID0gJ0Jvb2tDdHJsJzsKKyAg
ICAgICAgICAgIHRoaXMucGFyYW1zID0gJHJvdXRlUGFyYW1zOworICAgICAgICAgIH1dKQorICAg
ICAgICAgIC5jb250cm9sbGVyKCdDaGFwdGVyQ3RybCcsIFsnJHJvdXRlUGFyYW1zJywgZnVuY3Rp
b24gQ2hhcHRlckN0cmwoJHJvdXRlUGFyYW1zKSB7CisgICAgICAgICAgICB0aGlzLm5hbWUgPSAn
Q2hhcHRlckN0cmwnOworICAgICAgICAgICAgdGhpcy5wYXJhbXMgPSAkcm91dGVQYXJhbXM7Cisg
ICAgICAgICAgfV0pOworCisgICAgICA8L2ZpbGU+CisKKyAgICAgIDxmaWxlIG5hbWU9InByb3Ry
YWN0b3IuanMiIHR5cGU9InByb3RyYWN0b3IiPgorICAgICAgICBpdCgnc2hvdWxkIGxvYWQgYW5k
IGNvbXBpbGUgY29ycmVjdCB0ZW1wbGF0ZScsIGZ1bmN0aW9uKCkgeworICAgICAgICAgIGVsZW1l
bnQoYnkubGlua1RleHQoJ01vYnk6IENoMScpKS5jbGljaygpOworICAgICAgICAgIHZhciBjb250
ZW50ID0gZWxlbWVudChieS5jc3MoJ1tuZy12aWV3XScpKS5nZXRUZXh0KCk7CisgICAgICAgICAg
ZXhwZWN0KGNvbnRlbnQpLnRvTWF0Y2goL2NvbnRyb2xsZXI6IENoYXB0ZXJDdHJsLyk7CisgICAg
ICAgICAgZXhwZWN0KGNvbnRlbnQpLnRvTWF0Y2goL0Jvb2sgSWQ6IE1vYnkvKTsKKyAgICAgICAg
ICBleHBlY3QoY29udGVudCkudG9NYXRjaCgvQ2hhcHRlciBJZDogMS8pOworCisgICAgICAgICAg
ZWxlbWVudChieS5wYXJ0aWFsTGlua1RleHQoJ1NjYXJsZXQnKSkuY2xpY2soKTsKKworICAgICAg
ICAgIGNvbnRlbnQgPSBlbGVtZW50KGJ5LmNzcygnW25nLXZpZXddJykpLmdldFRleHQoKTsKKyAg
ICAgICAgICBleHBlY3QoY29udGVudCkudG9NYXRjaCgvY29udHJvbGxlcjogQm9va0N0cmwvKTsK
KyAgICAgICAgICBleHBlY3QoY29udGVudCkudG9NYXRjaCgvQm9vayBJZDogU2NhcmxldC8pOwor
ICAgICAgICB9KTsKKyAgICAgIDwvZmlsZT4KKyAgICA8L2V4YW1wbGU+CisgKi8KKworCisvKioK
KyAqIEBuZ2RvYyBldmVudAorICogQG5hbWUgbmdWaWV3IyR2aWV3Q29udGVudExvYWRlZAorICog
QGV2ZW50VHlwZSBlbWl0IG9uIHRoZSBjdXJyZW50IG5nVmlldyBzY29wZQorICogQGRlc2NyaXB0
aW9uCisgKiBFbWl0dGVkIGV2ZXJ5IHRpbWUgdGhlIG5nVmlldyBjb250ZW50IGlzIHJlbG9hZGVk
LgorICovCituZ1ZpZXdGYWN0b3J5LiRpbmplY3QgPSBbJyRyb3V0ZScsICckYW5jaG9yU2Nyb2xs
JywgJyRhbmltYXRlJ107CitmdW5jdGlvbiBuZ1ZpZXdGYWN0b3J5KCRyb3V0ZSwgJGFuY2hvclNj
cm9sbCwgJGFuaW1hdGUpIHsKKyAgcmV0dXJuIHsKKyAgICByZXN0cmljdDogJ0VDQScsCisgICAg
dGVybWluYWw6IHRydWUsCisgICAgcHJpb3JpdHk6IDQwMCwKKyAgICB0cmFuc2NsdWRlOiAnZWxl
bWVudCcsCisgICAgbGluazogZnVuY3Rpb24oc2NvcGUsICRlbGVtZW50LCBhdHRyLCBjdHJsLCAk
dHJhbnNjbHVkZSkgeworICAgICAgICB2YXIgY3VycmVudFNjb3BlLAorICAgICAgICAgICAgY3Vy
cmVudEVsZW1lbnQsCisgICAgICAgICAgICBwcmV2aW91c0xlYXZlQW5pbWF0aW9uLAorICAgICAg
ICAgICAgYXV0b1Njcm9sbEV4cCA9IGF0dHIuYXV0b3Njcm9sbCwKKyAgICAgICAgICAgIG9ubG9h
ZEV4cCA9IGF0dHIub25sb2FkIHx8ICcnOworCisgICAgICAgIHNjb3BlLiRvbignJHJvdXRlQ2hh
bmdlU3VjY2VzcycsIHVwZGF0ZSk7CisgICAgICAgIHVwZGF0ZSgpOworCisgICAgICAgIGZ1bmN0
aW9uIGNsZWFudXBMYXN0VmlldygpIHsKKyAgICAgICAgICBpZiAocHJldmlvdXNMZWF2ZUFuaW1h
dGlvbikgeworICAgICAgICAgICAgJGFuaW1hdGUuY2FuY2VsKHByZXZpb3VzTGVhdmVBbmltYXRp
b24pOworICAgICAgICAgICAgcHJldmlvdXNMZWF2ZUFuaW1hdGlvbiA9IG51bGw7CisgICAgICAg
ICAgfQorCisgICAgICAgICAgaWYgKGN1cnJlbnRTY29wZSkgeworICAgICAgICAgICAgY3VycmVu
dFNjb3BlLiRkZXN0cm95KCk7CisgICAgICAgICAgICBjdXJyZW50U2NvcGUgPSBudWxsOworICAg
ICAgICAgIH0KKyAgICAgICAgICBpZiAoY3VycmVudEVsZW1lbnQpIHsKKyAgICAgICAgICAgIHBy
ZXZpb3VzTGVhdmVBbmltYXRpb24gPSAkYW5pbWF0ZS5sZWF2ZShjdXJyZW50RWxlbWVudCk7Cisg
ICAgICAgICAgICBwcmV2aW91c0xlYXZlQW5pbWF0aW9uLnRoZW4oZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICAgIHByZXZpb3VzTGVhdmVBbmltYXRpb24gPSBudWxsOworICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICBjdXJyZW50RWxlbWVudCA9IG51bGw7CisgICAgICAgICAgfQorICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gdXBkYXRlKCkgeworICAgICAgICAgIHZhciBsb2NhbHMg
PSAkcm91dGUuY3VycmVudCAmJiAkcm91dGUuY3VycmVudC5sb2NhbHMsCisgICAgICAgICAgICAg
IHRlbXBsYXRlID0gbG9jYWxzICYmIGxvY2Fscy4kdGVtcGxhdGU7CisKKyAgICAgICAgICBpZiAo
YW5ndWxhci5pc0RlZmluZWQodGVtcGxhdGUpKSB7CisgICAgICAgICAgICB2YXIgbmV3U2NvcGUg
PSBzY29wZS4kbmV3KCk7CisgICAgICAgICAgICB2YXIgY3VycmVudCA9ICRyb3V0ZS5jdXJyZW50
OworCisgICAgICAgICAgICAvLyBOb3RlOiBUaGlzIHdpbGwgYWxzbyBsaW5rIGFsbCBjaGlsZHJl
biBvZiBuZy12aWV3IHRoYXQgd2VyZSBjb250YWluZWQgaW4gdGhlIG9yaWdpbmFsCisgICAgICAg
ICAgICAvLyBodG1sLiBJZiB0aGF0IGNvbnRlbnQgY29udGFpbnMgY29udHJvbGxlcnMsIC4uLiB0
aGV5IGNvdWxkIHBvbGx1dGUvY2hhbmdlIHRoZSBzY29wZS4KKyAgICAgICAgICAgIC8vIEhvd2V2
ZXIsIHVzaW5nIG5nLXZpZXcgb24gYW4gZWxlbWVudCB3aXRoIGFkZGl0aW9uYWwgY29udGVudCBk
b2VzIG5vdCBtYWtlIHNlbnNlLi4uCisgICAgICAgICAgICAvLyBOb3RlOiBXZSBjYW4ndCByZW1v
dmUgdGhlbSBpbiB0aGUgY2xvbmVBdHRjaEZuIG9mICR0cmFuc2NsdWRlIGFzIHRoYXQKKyAgICAg
ICAgICAgIC8vIGZ1bmN0aW9uIGlzIGNhbGxlZCBiZWZvcmUgbGlua2luZyB0aGUgY29udGVudCwg
d2hpY2ggd291bGQgYXBwbHkgY2hpbGQKKyAgICAgICAgICAgIC8vIGRpcmVjdGl2ZXMgdG8gbm9u
IGV4aXN0aW5nIGVsZW1lbnRzLgorICAgICAgICAgICAgdmFyIGNsb25lID0gJHRyYW5zY2x1ZGUo
bmV3U2NvcGUsIGZ1bmN0aW9uKGNsb25lKSB7CisgICAgICAgICAgICAgICRhbmltYXRlLmVudGVy
KGNsb25lLCBudWxsLCBjdXJyZW50RWxlbWVudCB8fCAkZWxlbWVudCkudGhlbihmdW5jdGlvbiBv
bk5nVmlld0VudGVyKCkgeworICAgICAgICAgICAgICAgIGlmIChhbmd1bGFyLmlzRGVmaW5lZChh
dXRvU2Nyb2xsRXhwKQorICAgICAgICAgICAgICAgICAgJiYgKCFhdXRvU2Nyb2xsRXhwIHx8IHNj
b3BlLiRldmFsKGF1dG9TY3JvbGxFeHApKSkgeworICAgICAgICAgICAgICAgICAgJGFuY2hvclNj
cm9sbCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICAgIGNsZWFudXBMYXN0VmlldygpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGN1
cnJlbnRFbGVtZW50ID0gY2xvbmU7CisgICAgICAgICAgICBjdXJyZW50U2NvcGUgPSBjdXJyZW50
LnNjb3BlID0gbmV3U2NvcGU7CisgICAgICAgICAgICBjdXJyZW50U2NvcGUuJGVtaXQoJyR2aWV3
Q29udGVudExvYWRlZCcpOworICAgICAgICAgICAgY3VycmVudFNjb3BlLiRldmFsKG9ubG9hZEV4
cCk7CisgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNsZWFudXBMYXN0VmlldygpOwor
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgfTsKK30KKworLy8gVGhpcyBkaXJlY3Rp
dmUgaXMgY2FsbGVkIGR1cmluZyB0aGUgJHRyYW5zY2x1ZGUgY2FsbCBvZiB0aGUgZmlyc3QgYG5n
Vmlld2AgZGlyZWN0aXZlLgorLy8gSXQgd2lsbCByZXBsYWNlIGFuZCBjb21waWxlIHRoZSBjb250
ZW50IG9mIHRoZSBlbGVtZW50IHdpdGggdGhlIGxvYWRlZCB0ZW1wbGF0ZS4KKy8vIFdlIG5lZWQg
dGhpcyBkaXJlY3RpdmUgc28gdGhhdCB0aGUgZWxlbWVudCBjb250ZW50IGlzIGFscmVhZHkgZmls
bGVkIHdoZW4KKy8vIHRoZSBsaW5rIGZ1bmN0aW9uIG9mIGFub3RoZXIgZGlyZWN0aXZlIG9uIHRo
ZSBzYW1lIGVsZW1lbnQgYXMgbmdWaWV3CisvLyBpcyBjYWxsZWQuCituZ1ZpZXdGaWxsQ29udGVu
dEZhY3RvcnkuJGluamVjdCA9IFsnJGNvbXBpbGUnLCAnJGNvbnRyb2xsZXInLCAnJHJvdXRlJ107
CitmdW5jdGlvbiBuZ1ZpZXdGaWxsQ29udGVudEZhY3RvcnkoJGNvbXBpbGUsICRjb250cm9sbGVy
LCAkcm91dGUpIHsKKyAgcmV0dXJuIHsKKyAgICByZXN0cmljdDogJ0VDQScsCisgICAgcHJpb3Jp
dHk6IC00MDAsCisgICAgbGluazogZnVuY3Rpb24oc2NvcGUsICRlbGVtZW50KSB7CisgICAgICB2
YXIgY3VycmVudCA9ICRyb3V0ZS5jdXJyZW50LAorICAgICAgICAgIGxvY2FscyA9IGN1cnJlbnQu
bG9jYWxzOworCisgICAgICAkZWxlbWVudC5odG1sKGxvY2Fscy4kdGVtcGxhdGUpOworCisgICAg
ICB2YXIgbGluayA9ICRjb21waWxlKCRlbGVtZW50LmNvbnRlbnRzKCkpOworCisgICAgICBpZiAo
Y3VycmVudC5jb250cm9sbGVyKSB7CisgICAgICAgIGxvY2Fscy4kc2NvcGUgPSBzY29wZTsKKyAg
ICAgICAgdmFyIGNvbnRyb2xsZXIgPSAkY29udHJvbGxlcihjdXJyZW50LmNvbnRyb2xsZXIsIGxv
Y2Fscyk7CisgICAgICAgIGlmIChjdXJyZW50LmNvbnRyb2xsZXJBcykgeworICAgICAgICAgIHNj
b3BlW2N1cnJlbnQuY29udHJvbGxlckFzXSA9IGNvbnRyb2xsZXI7CisgICAgICAgIH0KKyAgICAg
ICAgJGVsZW1lbnQuZGF0YSgnJG5nQ29udHJvbGxlckNvbnRyb2xsZXInLCBjb250cm9sbGVyKTsK
KyAgICAgICAgJGVsZW1lbnQuY2hpbGRyZW4oKS5kYXRhKCckbmdDb250cm9sbGVyQ29udHJvbGxl
cicsIGNvbnRyb2xsZXIpOworICAgICAgfQorICAgICAgc2NvcGVbY3VycmVudC5yZXNvbHZlQXMg
fHwgJyRyZXNvbHZlJ10gPSBsb2NhbHM7CisKKyAgICAgIGxpbmsoc2NvcGUpOworICAgIH0KKyAg
fTsKK30KKworCit9KSh3aW5kb3csIHdpbmRvdy5hbmd1bGFyKTsKZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2FuZ3VsYXJqcy9ub2RlX21vZHVsZXMvYW5ndWxhci1yb3V0ZS9hbmd1bGFyLXJvdXRl
Lm1pbi5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ub2RlX21vZHVsZXMvYW5ndWxhci1yb3V0
ZS9hbmd1bGFyLXJvdXRlLm1pbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yODUzZDljMGU1ZDgwYTgyNjc0NzJh
ZDAzYzIyMDVlNWVkN2FiMzU1Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxh
cmpzL25vZGVfbW9kdWxlcy9hbmd1bGFyLXJvdXRlL2FuZ3VsYXItcm91dGUubWluLmpzCkBAIC0w
LDAgKzEsMTYgQEAKKy8qCisgQW5ndWxhckpTIHYxLjUuOQorIChjKSAyMDEwLTIwMTYgR29vZ2xl
LCBJbmMuIGh0dHA6Ly9hbmd1bGFyanMub3JnCisgTGljZW5zZTogTUlUCisqLworKGZ1bmN0aW9u
KEUsZCl7J3VzZSBzdHJpY3QnO2Z1bmN0aW9uIHkodCxsLGcpe3JldHVybntyZXN0cmljdDoiRUNB
Iix0ZXJtaW5hbDohMCxwcmlvcml0eTo0MDAsdHJhbnNjbHVkZToiZWxlbWVudCIsbGluazpmdW5j
dGlvbihiLGUsYSxjLGspe2Z1bmN0aW9uIHAoKXttJiYoZy5jYW5jZWwobSksbT1udWxsKTtoJiYo
aC4kZGVzdHJveSgpLGg9bnVsbCk7biYmKG09Zy5sZWF2ZShuKSxtLnRoZW4oZnVuY3Rpb24oKXtt
PW51bGx9KSxuPW51bGwpfWZ1bmN0aW9uIEIoKXt2YXIgYT10LmN1cnJlbnQmJnQuY3VycmVudC5s
b2NhbHM7aWYoZC5pc0RlZmluZWQoYSYmYS4kdGVtcGxhdGUpKXt2YXIgYT1iLiRuZXcoKSxjPXQu
Y3VycmVudDtuPWsoYSxmdW5jdGlvbihhKXtnLmVudGVyKGEsbnVsbCxufHxlKS50aGVuKGZ1bmN0
aW9uKCl7IWQuaXNEZWZpbmVkKEEpfHxBJiYhYi4kZXZhbChBKXx8bCgpfSk7cCgpfSk7aD1jLnNj
b3BlPWE7aC4kZW1pdCgiJHZpZXdDb250ZW50TG9hZGVkIik7CitoLiRldmFsKHMpfWVsc2UgcCgp
fXZhciBoLG4sbSxBPWEuYXV0b3Njcm9sbCxzPWEub25sb2FkfHwiIjtiLiRvbigiJHJvdXRlQ2hh
bmdlU3VjY2VzcyIsQik7QigpfX19ZnVuY3Rpb24gdyhkLGwsZyl7cmV0dXJue3Jlc3RyaWN0OiJF
Q0EiLHByaW9yaXR5Oi00MDAsbGluazpmdW5jdGlvbihiLGUpe3ZhciBhPWcuY3VycmVudCxjPWEu
bG9jYWxzO2UuaHRtbChjLiR0ZW1wbGF0ZSk7dmFyIGs9ZChlLmNvbnRlbnRzKCkpO2lmKGEuY29u
dHJvbGxlcil7Yy4kc2NvcGU9Yjt2YXIgcD1sKGEuY29udHJvbGxlcixjKTthLmNvbnRyb2xsZXJB
cyYmKGJbYS5jb250cm9sbGVyQXNdPXApO2UuZGF0YSgiJG5nQ29udHJvbGxlckNvbnRyb2xsZXIi
LHApO2UuY2hpbGRyZW4oKS5kYXRhKCIkbmdDb250cm9sbGVyQ29udHJvbGxlciIscCl9YlthLnJl
c29sdmVBc3x8IiRyZXNvbHZlIl09YztrKGIpfX19dmFyIHgsQyxzPWQubW9kdWxlKCJuZ1JvdXRl
IixbIm5nIl0pLnByb3ZpZGVyKCIkcm91dGUiLAorZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGIsZSl7
cmV0dXJuIGQuZXh0ZW5kKE9iamVjdC5jcmVhdGUoYiksZSl9ZnVuY3Rpb24gbChiLGQpe3ZhciBh
PWQuY2FzZUluc2Vuc2l0aXZlTWF0Y2gsYz17b3JpZ2luYWxQYXRoOmIscmVnZXhwOmJ9LGc9Yy5r
ZXlzPVtdO2I9Yi5yZXBsYWNlKC8oWygpLl0pL2csIlxcJDEiKS5yZXBsYWNlKC8oXC8pPzooXHcr
KShcKlw/fFtcP1wqXSk/L2csZnVuY3Rpb24oYixhLGQsYyl7Yj0iPyI9PT1jfHwiKj8iPT09Yz8i
PyI6bnVsbDtjPSIqIj09PWN8fCIqPyI9PT1jPyIqIjpudWxsO2cucHVzaCh7bmFtZTpkLG9wdGlv
bmFsOiEhYn0pO2E9YXx8IiI7cmV0dXJuIiIrKGI/IiI6YSkrIig/OiIrKGI/YToiIikrKGMmJiIo
Lis/KSJ8fCIoW14vXSspIikrKGJ8fCIiKSsiKSIrKGJ8fCIiKX0pLnJlcGxhY2UoLyhbXC8kXCpd
KS9nLCJcXCQxIik7Yy5yZWdleHA9bmV3IFJlZ0V4cCgiXiIrYisiJCIsYT8iaSI6IiIpO3JldHVy
biBjfXg9ZC5pc0FycmF5O0M9CitkLmlzT2JqZWN0O3ZhciBnPXt9O3RoaXMud2hlbj1mdW5jdGlv
bihiLGUpe3ZhciBhO2E9dm9pZCAwO2lmKHgoZSkpe2E9YXx8W107Zm9yKHZhciBjPTAsaz1lLmxl
bmd0aDtjPGs7YysrKWFbY109ZVtjXX1lbHNlIGlmKEMoZSkpZm9yKGMgaW4gYT1hfHx7fSxlKWlm
KCIkIiE9PWMuY2hhckF0KDApfHwiJCIhPT1jLmNoYXJBdCgxKSlhW2NdPWVbY107YT1hfHxlO2Qu
aXNVbmRlZmluZWQoYS5yZWxvYWRPblNlYXJjaCkmJihhLnJlbG9hZE9uU2VhcmNoPSEwKTtkLmlz
VW5kZWZpbmVkKGEuY2FzZUluc2Vuc2l0aXZlTWF0Y2gpJiYoYS5jYXNlSW5zZW5zaXRpdmVNYXRj
aD10aGlzLmNhc2VJbnNlbnNpdGl2ZU1hdGNoKTtnW2JdPWQuZXh0ZW5kKGEsYiYmbChiLGEpKTti
JiYoYz0iLyI9PT1iW2IubGVuZ3RoLTFdP2Iuc3Vic3RyKDAsYi5sZW5ndGgtMSk6YisiLyIsZ1tj
XT1kLmV4dGVuZCh7cmVkaXJlY3RUbzpifSxsKGMsYSkpKTtyZXR1cm4gdGhpc307dGhpcy5jYXNl
SW5zZW5zaXRpdmVNYXRjaD0KKyExO3RoaXMub3RoZXJ3aXNlPWZ1bmN0aW9uKGIpeyJzdHJpbmci
PT09dHlwZW9mIGImJihiPXtyZWRpcmVjdFRvOmJ9KTt0aGlzLndoZW4obnVsbCxiKTtyZXR1cm4g
dGhpc307dGhpcy4kZ2V0PVsiJHJvb3RTY29wZSIsIiRsb2NhdGlvbiIsIiRyb3V0ZVBhcmFtcyIs
IiRxIiwiJGluamVjdG9yIiwiJHRlbXBsYXRlUmVxdWVzdCIsIiRzY2UiLGZ1bmN0aW9uKGIsZSxh
LGMsayxwLGwpe2Z1bmN0aW9uIGgoYSl7dmFyIGY9di5jdXJyZW50Oyh4PShyPXkoKSkmJmYmJnIu
JCRyb3V0ZT09PWYuJCRyb3V0ZSYmZC5lcXVhbHMoci5wYXRoUGFyYW1zLGYucGF0aFBhcmFtcykm
JiFyLnJlbG9hZE9uU2VhcmNoJiYheil8fCFmJiYhcnx8Yi4kYnJvYWRjYXN0KCIkcm91dGVDaGFu
Z2VTdGFydCIscixmKS5kZWZhdWx0UHJldmVudGVkJiZhJiZhLnByZXZlbnREZWZhdWx0KCl9ZnVu
Y3Rpb24gbigpe3ZhciB1PXYuY3VycmVudCxmPXI7aWYoeCl1LnBhcmFtcz1mLnBhcmFtcyxkLmNv
cHkodS5wYXJhbXMsCithKSxiLiRicm9hZGNhc3QoIiRyb3V0ZVVwZGF0ZSIsdSk7ZWxzZSBpZihm
fHx1KXo9ITEsKHYuY3VycmVudD1mKSYmZi5yZWRpcmVjdFRvJiYoZC5pc1N0cmluZyhmLnJlZGly
ZWN0VG8pP2UucGF0aCh3KGYucmVkaXJlY3RUbyxmLnBhcmFtcykpLnNlYXJjaChmLnBhcmFtcyku
cmVwbGFjZSgpOmUudXJsKGYucmVkaXJlY3RUbyhmLnBhdGhQYXJhbXMsZS5wYXRoKCksZS5zZWFy
Y2goKSkpLnJlcGxhY2UoKSksYy53aGVuKGYpLnRoZW4obSkudGhlbihmdW5jdGlvbihjKXtmPT09
di5jdXJyZW50JiYoZiYmKGYubG9jYWxzPWMsZC5jb3B5KGYucGFyYW1zLGEpKSxiLiRicm9hZGNh
c3QoIiRyb3V0ZUNoYW5nZVN1Y2Nlc3MiLGYsdSkpfSxmdW5jdGlvbihhKXtmPT09di5jdXJyZW50
JiZiLiRicm9hZGNhc3QoIiRyb3V0ZUNoYW5nZUVycm9yIixmLHUsYSl9KX1mdW5jdGlvbiBtKGEp
e2lmKGEpe3ZhciBiPWQuZXh0ZW5kKHt9LGEucmVzb2x2ZSk7ZC5mb3JFYWNoKGIsZnVuY3Rpb24o
YSwKK2Mpe2JbY109ZC5pc1N0cmluZyhhKT9rLmdldChhKTprLmludm9rZShhLG51bGwsbnVsbCxj
KX0pO2E9cyhhKTtkLmlzRGVmaW5lZChhKSYmKGIuJHRlbXBsYXRlPWEpO3JldHVybiBjLmFsbChi
KX19ZnVuY3Rpb24gcyhhKXt2YXIgYixjO2QuaXNEZWZpbmVkKGI9YS50ZW1wbGF0ZSk/ZC5pc0Z1
bmN0aW9uKGIpJiYoYj1iKGEucGFyYW1zKSk6ZC5pc0RlZmluZWQoYz1hLnRlbXBsYXRlVXJsKSYm
KGQuaXNGdW5jdGlvbihjKSYmKGM9YyhhLnBhcmFtcykpLGQuaXNEZWZpbmVkKGMpJiYoYS5sb2Fk
ZWRUZW1wbGF0ZVVybD1sLnZhbHVlT2YoYyksYj1wKGMpKSk7cmV0dXJuIGJ9ZnVuY3Rpb24geSgp
e3ZhciBhLGI7ZC5mb3JFYWNoKGcsZnVuY3Rpb24oYyxnKXt2YXIgcTtpZihxPSFiKXt2YXIgaD1l
LnBhdGgoKTtxPWMua2V5czt2YXIgbD17fTtpZihjLnJlZ2V4cClpZihoPWMucmVnZXhwLmV4ZWMo
aCkpe2Zvcih2YXIgaz0xLHA9aC5sZW5ndGg7azxwOysrayl7dmFyIG09cVtrLTFdLAorbj1oW2td
O20mJm4mJihsW20ubmFtZV09bil9cT1sfWVsc2UgcT1udWxsO2Vsc2UgcT1udWxsO3E9YT1xfXEm
JihiPXQoYyx7cGFyYW1zOmQuZXh0ZW5kKHt9LGUuc2VhcmNoKCksYSkscGF0aFBhcmFtczphfSks
Yi4kJHJvdXRlPWMpfSk7cmV0dXJuIGJ8fGdbbnVsbF0mJnQoZ1tudWxsXSx7cGFyYW1zOnt9LHBh
dGhQYXJhbXM6e319KX1mdW5jdGlvbiB3KGEsYil7dmFyIGM9W107ZC5mb3JFYWNoKChhfHwiIiku
c3BsaXQoIjoiKSxmdW5jdGlvbihhLGQpe2lmKDA9PT1kKWMucHVzaChhKTtlbHNle3ZhciBlPWEu
bWF0Y2goLyhcdyspKD86Wz8qXSk/KC4qKS8pLGc9ZVsxXTtjLnB1c2goYltnXSk7Yy5wdXNoKGVb
Ml18fCIiKTtkZWxldGUgYltnXX19KTtyZXR1cm4gYy5qb2luKCIiKX12YXIgej0hMSxyLHgsdj17
cm91dGVzOmcscmVsb2FkOmZ1bmN0aW9uKCl7ej0hMDt2YXIgYT17ZGVmYXVsdFByZXZlbnRlZDoh
MSxwcmV2ZW50RGVmYXVsdDpmdW5jdGlvbigpe3RoaXMuZGVmYXVsdFByZXZlbnRlZD0KKyEwO3o9
ITF9fTtiLiRldmFsQXN5bmMoZnVuY3Rpb24oKXtoKGEpO2EuZGVmYXVsdFByZXZlbnRlZHx8bigp
fSl9LHVwZGF0ZVBhcmFtczpmdW5jdGlvbihhKXtpZih0aGlzLmN1cnJlbnQmJnRoaXMuY3VycmVu
dC4kJHJvdXRlKWE9ZC5leHRlbmQoe30sdGhpcy5jdXJyZW50LnBhcmFtcyxhKSxlLnBhdGgodyh0
aGlzLmN1cnJlbnQuJCRyb3V0ZS5vcmlnaW5hbFBhdGgsYSkpLGUuc2VhcmNoKGEpO2Vsc2UgdGhy
b3cgRCgibm9yb3V0Iik7fX07Yi4kb24oIiRsb2NhdGlvbkNoYW5nZVN0YXJ0IixoKTtiLiRvbigi
JGxvY2F0aW9uQ2hhbmdlU3VjY2VzcyIsbik7cmV0dXJuIHZ9XX0pLEQ9ZC4kJG1pbkVycigibmdS
b3V0ZSIpO3MucHJvdmlkZXIoIiRyb3V0ZVBhcmFtcyIsZnVuY3Rpb24oKXt0aGlzLiRnZXQ9ZnVu
Y3Rpb24oKXtyZXR1cm57fX19KTtzLmRpcmVjdGl2ZSgibmdWaWV3Iix5KTtzLmRpcmVjdGl2ZSgi
bmdWaWV3Iix3KTt5LiRpbmplY3Q9WyIkcm91dGUiLCIkYW5jaG9yU2Nyb2xsIiwKKyIkYW5pbWF0
ZSJdO3cuJGluamVjdD1bIiRjb21waWxlIiwiJGNvbnRyb2xsZXIiLCIkcm91dGUiXX0pKHdpbmRv
dyx3aW5kb3cuYW5ndWxhcik7CisvLyMgc291cmNlTWFwcGluZ1VSTD1hbmd1bGFyLXJvdXRlLm1p
bi5qcy5tYXAKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ub2RlX21vZHVsZXMv
YW5ndWxhci1yb3V0ZS9hbmd1bGFyLXJvdXRlLm1pbi5qcy5tYXAgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1
bGFyanMvbm9kZV9tb2R1bGVzL2FuZ3VsYXItcm91dGUvYW5ndWxhci1yb3V0ZS5taW4uanMubWFw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmFkYzAzMjA4NDhlZmZkM2NhMDVhZjVlZDZhZDQ3ZDkwOGQwN2ZiNmIKLS0t
IC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvbm9kZV9tb2R1bGVzL2FuZ3Vs
YXItcm91dGUvYW5ndWxhci1yb3V0ZS5taW4uanMubWFwCkBAIC0wLDAgKzEsOCBAQAoreworInZl
cnNpb24iOjMsCisiZmlsZSI6ImFuZ3VsYXItcm91dGUubWluLmpzIiwKKyJsaW5lQ291bnQiOjE1
LAorIm1hcHBpbmdzIjoiQTs7Ozs7YUFLQyxTQUFRLENBQUNBLENBQUQsQ0FBU0MsQ0FBVCxDQUFr
QixDQSs3QjNCQyxRQUFTQSxFQUFhLENBQUNDLENBQUQsQ0FBU0MsQ0FBVCxDQUF3QkMsQ0FBeEIs
Q0FBa0MsQ0FDdEQsTUFBTyxDQUNMQyxTQUFVLEtBREwsQ0FFTEMsU0FBVSxDQUFBLENBRkwsQ0FH
TEMsU0FBVSxHQUhMLENBSUxDLFdBQVksU0FKUCxDQUtMQyxLQUFNQSxRQUFRLENBQUNDLENBQUQs
Q0FBUUMsQ0FBUixDQUFrQkMsQ0FBbEIsQ0FBd0JDLENBQXhCLENBQThCQyxDQUE5QixDQUEyQyxD
QVVyREMsUUFBU0EsRUFBZSxFQUFHLENBQ3JCQyxDQUFKLEdBQ0VaLENBQUFhLE9BQUEsQ0FBZ0JE
LENBQWhCLENBQ0EsQ0FBQUEsQ0FBQSxDQUF5QixJQUYzQixDQUtJRSxFQUFKLEdBQ0VBLENBQUFD
LFNBQUEsRUFDQSxDQUFBRCxDQUFBLENBQWUsSUFGakIsQ0FJSUUsRUFBSixHQUNFSixDQUlBLENB
SnlCWixDQUFBaUIsTUFBQSxDQUFlRCxDQUFmLENBSXpCLENBSEFKLENBQUFNLEtBQUEsQ0FBNEIs
UUFBUSxFQUFHLENBQ3JDTixDQUFBLENBQXlCLElBRFksQ0FBdkMsQ0FHQSxDQUFBSSxDQUFBLENB
QWlCLElBTG5CLENBVnlCLENBbUIzQkcsUUFBU0EsRUFBTSxFQUFHLENBQUEsSUFDWkMsRUFBU3RC
LENBQUF1QixRQUFURCxFQUEyQnRCLENBQUF1QixRQUFBRCxPQUcvQixJQUFJeEIsQ0FBQTBCLFVB
QUEsQ0FGV0YsQ0FFWCxFQUZxQkEsQ0FBQUcsVUFFckIsQ0FBSixDQUFpQyxDQUMzQkMsSUFBQUEs
RUFBV2xCLENBQUFtQixLQUFBLEVBQVhELENBQ0FILEVBQVV2QixDQUFBdUIsUUFrQmRMLEVBQUEs
Q0FWWU4sQ0FBQWdCLENBQVlGLENBQVpFLENBQXNCLFFBQVEsQ0FBQ0EsQ0FBRCxDQUFRLENBQ2hE
MUIsQ0FBQTJCLE1BQUEsQ0FBZUQsQ0FBZixDQUFzQixJQUF0QixDQUE0QlYsQ0FBNUIsRUFBOENU
LENBQTlDLENBQUFXLEtBQUEsQ0FBNkRVLFFBQXNCLEVBQUcsQ0FDaEYsQ0FBQWhDLENBQUEwQixV
QUFBLENBQWtCTyxDQUFsQixDQUFKLEVBQ09BLENBRFAsRUFDd0IsQ0FBQXZCLENBQUF3QixNQUFB
LENBQVlELENBQVosQ0FEeEIsRUFFRTlCLENBQUEsRUFIa0YsQ0FBdEYsQ0FNQVksRUFBQSxFQVBn
RCxDQUF0Q2UsQ0FXWlosRUFBQSxDQUFlTyxDQUFBZixNQUFmLENBQStCa0IsQ0FDL0JWLEVBQUFp
QixNQUFBLENBQW1CLG9CQUFuQixDQUNBakI7Q0FBQWdCLE1BQUEsQ0FBbUJFLENBQW5CLENBdkIr
QixDQUFqQyxJQXlCRXJCLEVBQUEsRUE3QmMsQ0E3Qm1DLElBQ2pERyxDQURpRCxDQUVqREUsQ0FG
aUQsQ0FHakRKLENBSGlELENBSWpEaUIsRUFBZ0JyQixDQUFBeUIsV0FKaUMsQ0FLakRELEVBQVl4
QixDQUFBMEIsT0FBWkYsRUFBMkIsRUFFL0IxQixFQUFBNkIsSUFBQSxDQUFVLHFCQUFWLENBQWlD
aEIsQ0FBakMsQ0FDQUEsRUFBQSxFQVJxRCxDQUxwRCxDQUQrQyxDQTZFeERpQixRQUFTQSxFQUF3
QixDQUFDQyxDQUFELENBQVdDLENBQVgsQ0FBd0J4QyxDQUF4QixDQUFnQyxDQUMvRCxNQUFPLENB
Q0xHLFNBQVUsS0FETCxDQUVMRSxTQUFXLElBRk4sQ0FHTEUsS0FBTUEsUUFBUSxDQUFDQyxDQUFE
LENBQVFDLENBQVIsQ0FBa0IsQ0FBQSxJQUMxQmMsRUFBVXZCLENBQUF1QixRQURnQixDQUUxQkQs
RUFBU0MsQ0FBQUQsT0FFYmIsRUFBQWdDLEtBQUEsQ0FBY25CLENBQUFHLFVBQWQsQ0FFQSxLQUFJ
bEIsRUFBT2dDLENBQUEsQ0FBUzlCLENBQUFpQyxTQUFBLEVBQVQsQ0FFWCxJQUFJbkIsQ0FBQW9C
LFdBQUosQ0FBd0IsQ0FDdEJyQixDQUFBc0IsT0FBQSxDQUFnQnBDLENBQ2hCLEtBQUltQyxFQUFh
SCxDQUFBLENBQVlqQixDQUFBb0IsV0FBWixDQUFnQ3JCLENBQWhDLENBQ2JDLEVBQUFzQixhQUFK
LEdBQ0VyQyxDQUFBLENBQU1lLENBQUFzQixhQUFOLENBREYsQ0FDZ0NGLENBRGhDLENBR0FsQyxF
QUFBcUMsS0FBQSxDQUFjLHlCQUFkLENBQXlDSCxDQUF6QyxDQUNBbEMsRUFBQXNDLFNBQUEsRUFB
QUQsS0FBQSxDQUF5Qix5QkFBekIsQ0FBb0RILENBQXBELENBUHNCLENBU3hCbkMsQ0FBQSxDQUFN
ZSxDQUFBeUIsVUFBTixFQUEyQixVQUEzQixDQUFBLENBQXlDMUIsQ0FFekNmLEVBQUEsQ0FBS0Ms
Q0FBTCxDQW5COEIsQ0FIM0IsQ0FEd0QsQ0EzK0JqRSxJQUFJeUMsQ0FBSixDQUNJQyxDQURKLENB
bUJJQyxFQUFnQnJELENBQUFzRCxPQUFBLENBQWUsU0FBZixDQUEwQixDQUFDLElBQUQsQ0FBMUIs
Q0FBQUMsU0FBQSxDQUNhLFFBRGI7QUFtQnBCQyxRQUF1QixFQUFHLENBSXhCQyxRQUFTQSxFQUFP
LENBQUNDLENBQUQsQ0FBU0MsQ0FBVCxDQUFnQixDQUM5QixNQUFPM0QsRUFBQTRELE9BQUEsQ0FB
ZUMsTUFBQUMsT0FBQSxDQUFjSixDQUFkLENBQWYsQ0FBc0NDLENBQXRDLENBRHVCLENBd0toQ0ks
UUFBU0EsRUFBVSxDQUFDQyxDQUFELENBQU9DLENBQVAsQ0FBYSxDQUFBLElBQzFCQyxFQUFjRCxD
QUFBRSxxQkFEWSxDQUUxQkMsRUFBTSxDQUNKQyxhQUFjTCxDQURWLENBRUpNLE9BQVFOLENBRkos
Q0FGb0IsQ0FNMUJPLEVBQU9ILENBQUFHLEtBQVBBLENBQWtCLEVBRXRCUCxFQUFBLENBQU9BLENB
QUFRLFFBQUEsQ0FDSSxVQURKLENBQ2dCLE1BRGhCLENBQUFBLFFBQUEsQ0FFSSw0QkFGSixDQUVr
QyxRQUFRLENBQUNDLENBQUQsQ0FBSUMsQ0FBSixDQUFXQyxDQUFYLENBQWdCQyxDQUFoQixDQUF3
QixDQUNqRUMsQ0FBQUEsQ0FBdUIsR0FBWixHQUFDRCxDQUFELEVBQThCLElBQTlCLEdBQW1CQSxD
QUFuQixDQUFzQyxHQUF0QyxDQUE0QyxJQUN2REUsRUFBQUEsQ0FBbUIsR0FBWixHQUFDRixDQUFE
LEVBQThCLElBQTlCLEdBQW1CQSxDQUFuQixDQUFzQyxHQUF0QyxDQUE0QyxJQUN2REwsRUFBQVEs
S0FBQSxDQUFVLENBQUVDLEtBQU1MLENBQVIsQ0FBYUUsU0FBVSxDQUFFQSxDQUFBQSxDQUF6QixD
QUFWLENBQ0FILEVBQUEsQ0FBUUEsQ0FBUixFQUFpQixFQUNqQixPQUFPLEVBQVAsRUFDS0csQ0FB
QSxDQUFXLEVBQVgsQ0FBZ0JILENBRHJCLEVBRUksS0FGSixFQUdLRyxDQUFBLENBQVdILENBQVgs
Q0FBbUIsRUFIeEIsR0FJS0ksQ0FKTCxFQUlhLE9BSmIsRUFJd0IsU0FKeEIsR0FLS0QsQ0FMTCxF
QUtpQixFQUxqQixFQU1JLEdBTkosRUFPS0EsQ0FQTCxFQU9pQixFQVBqQixDQUxxRSxDQUZsRSxD
QUFBTCxRQUFBLENBZ0JJLFlBaEJKLENBZ0JrQixNQWhCbEIsQ0FrQlBKLEVBQUFFLE9BQUEsQ0FB
YSxJQUFJVyxNQUFKLENBQVcsR0FBWCxDQUFpQmpCLENBQWpCLENBQXdCLEdBQXhCLENBQTZCRSxD
QUFBLENBQWMsR0FBZCxDQUFvQixFQUFqRCxDQUNiLE9BQU9FLEVBM0J1QixDQTNLaENqQixDQUFB
LENBQVVuRCxDQUFBbUQsUUFDVkMsRUFBQTtBQUFXcEQsQ0FBQW9ELFNBTVgsS0FBSThCLEVBQVMs
RUFpSGIsS0FBQUMsS0FBQSxDQUFZQyxRQUFRLENBQUNwQixDQUFELENBQU9xQixDQUFQLENBQWMs
Q0FFaEMsSUFBSUMsQ0FBWSxFQUFBLENBQUEsSUFBQSxFQXhMbEIsSUFBSW5DLENBQUEsQ0F3TDBC
a0MsQ0F4TDFCLENBQUosQ0FBa0IsQ0FDaEJFLENBQUEsQ0FBTUEsQ0FBTixFQUFhLEVBRWIsS0FI
Z0IsSUFHUEMsRUFBSSxDQUhHLENBR0FDLEVBcUxZSixDQXJMUEssT0FBckIsQ0FBaUNGLENBQWpD
LENBQXFDQyxDQUFyQyxDQUF5Q0QsQ0FBQSxFQUF6QyxDQUNFRCxDQUFBLENBQUlDLENBQUosQ0FB
QSxDQW9MMEJILENBcExqQixDQUFJRyxDQUFKLENBSkssQ0FBbEIsSUFNTyxJQUFJcEMsQ0FBQSxD
QWtMbUJpQyxDQWxMbkIsQ0FBSixDQUdMLElBQVNWLENBQVQsR0FGQVksRUFpTDRCRixDQWpMdEJF
LENBaUxzQkYsRUFqTGYsRUFpTGVBLENBQUFBLENBL0s1QixDQUNFLEdBQXdCLEdBQXhCLEdBQU1W
LENBQUFnQixPQUFBLENBQVcsQ0FBWCxDQUFOLEVBQWlELEdBQWpELEdBQStCaEIsQ0FBQWdCLE9B
QUEsQ0FBVyxDQUFYLENBQS9CLENBQ0VKLENBQUEsQ0FBSVosQ0FBSixDQUFBLENBNkt3QlUsQ0E3
S2IsQ0FBSVYsQ0FBSixDQUtqQixFQUFBLENBQU9ZLENBQVAsRUF3SzhCRixDQUN4QnJGLEVBQUE0
RixZQUFBLENBQW9CTixDQUFBTyxlQUFwQixDQUFKLEdBQ0VQLENBQUFPLGVBREYsQ0FDNkIsQ0FB
QSxDQUQ3QixDQUdJN0YsRUFBQTRGLFlBQUEsQ0FBb0JOLENBQUFuQixxQkFBcEIsQ0FBSixHQUNF
bUIsQ0FBQW5CLHFCQURGLENBQ21DLElBQUFBLHFCQURuQyxDQUdBZSxFQUFBLENBQU9sQixDQUFQ
LENBQUEsQ0FBZWhFLENBQUE0RCxPQUFBLENBQ2IwQixDQURhLENBRWJ0QixDQUZhLEVBRUxELENB
QUEsQ0FBV0MsQ0FBWCxDQUFpQnNCLENBQWpCLENBRkssQ0FNWHRCLEVBQUosR0FDTThCLENBSUos
Q0FKOEMsR0FBM0IsR0FBQzlCLENBQUEsQ0FBS0EsQ0FBQTBCLE9BQUwsQ0FBbUIsQ0FBbkIsQ0FB
RCxDQUNYMUIsQ0FBQStCLE9BQUEsQ0FBWSxDQUFaLENBQWUvQixDQUFBMEIsT0FBZixDQUE2QixD
QUE3QixDQURXLENBRVgxQixDQUZXLENBRUosR0FFZixDQUFBa0IsQ0FBQSxDQUFPWSxDQUFQLENB
QUEsQ0FBdUI5RixDQUFBNEQsT0FBQSxDQUNyQixDQUFDb0MsV0FBWWhDLENBQWIsQ0FEcUIsQ0FF
ckJELENBQUEsQ0FBVytCLENBQVgsQ0FBeUJSLENBQXpCLENBRnFCLENBTHpCLENBV0EsT0FBTyxL
QTFCeUIsQ0FzQ2xDLEtBQUFuQixxQkFBQTtBQUE0QixDQUFBLENBdUQ1QixLQUFBOEIsVUFBQSxD
QUFpQkMsUUFBUSxDQUFDQyxDQUFELENBQVMsQ0FDVixRQUF0QixHQUFJLE1BQU9BLEVBQVgsR0FD
RUEsQ0FERixDQUNXLENBQUNILFdBQVlHLENBQWIsQ0FEWCxDQUdBLEtBQUFoQixLQUFBLENBQVUs
SUFBVixDQUFnQmdCLENBQWhCLENBQ0EsT0FBTyxLQUx5QixDQVNsQyxLQUFBQyxLQUFBLENBQVks
Q0FBQyxZQUFELENBQ0MsV0FERCxDQUVDLGNBRkQsQ0FHQyxJQUhELENBSUMsV0FKRCxDQUtDLGtC
QUxELENBTUMsTUFORCxDQU9SLFFBQVEsQ0FBQ0MsQ0FBRCxDQUFhQyxDQUFiLENBQXdCQyxDQUF4
QixDQUFzQ0MsQ0FBdEMsQ0FBMENDLENBQTFDLENBQXFEQyxDQUFyRCxDQUF1RUMsQ0FBdkUsQ0FB
NkUsQ0F5U3ZGQyxRQUFTQSxFQUFZLENBQUNDLENBQUQsQ0FBaUIsQ0FDcEMsSUFBSUMsRUFBWTVH
LENBQUF1QixRQU9oQixFQUpBc0YsQ0FJQSxFQUxBQyxDQUtBLENBTGdCQyxDQUFBLEVBS2hCLEdB
SjZDSCxDQUk3QyxFQUowREUsQ0FBQUUsUUFJMUQsR0FKb0ZKLENBQUFJLFFBSXBGLEVBSE9sSCxD
QUFBbUgsT0FBQSxDQUFlSCxDQUFBSSxXQUFmLENBQXlDTixDQUFBTSxXQUF6QyxDQUdQLEVBRk8s
Q0FBQ0osQ0FBQW5CLGVBRVIsRUFGd0MsQ0FBQ3dCLENBRXpDLEdBQW1DUCxDQUFBQSxDQUFuQyxF
QUFnREUsQ0FBQUEsQ0FBaEQsRUFDTVgsQ0FBQWlCLFdBQUEsQ0FBc0IsbUJBQXRCLENBQTJDTixD
QUEzQyxDQUEwREYsQ0FBMUQsQ0FBQVMsaUJBRE4sRUFFUVYsQ0FGUixFQUdNQSxDQUFBVyxlQUFB
LEVBWDhCLENBaUJ0Q0MsUUFBU0EsRUFBVyxFQUFHLENBQ3JCLElBQUlYLEVBQVk1RyxDQUFBdUIs
UUFBaEIsQ0FDSWlHLEVBQVlWLENBRWhCLElBQUlELENBQUosQ0FDRUQsQ0FBQVgsT0FFQSxDQUZt
QnVCLENBQUF2QixPQUVuQixDQURBbkcsQ0FBQTJILEtBQUEsQ0FBYWIsQ0FBQVgsT0FBYjtBQUEr
QkksQ0FBL0IsQ0FDQSxDQUFBRixDQUFBaUIsV0FBQSxDQUFzQixjQUF0QixDQUFzQ1IsQ0FBdEMs
Q0FIRixLQUlPLElBQUlZLENBQUosRUFBaUJaLENBQWpCLENBQ0xPLENBY0EsQ0FkYyxDQUFBLENB
Y2QsRUFiQW5ILENBQUF1QixRQWFBLENBYmlCaUcsQ0FhakIsR0FYTUEsQ0FBQTFCLFdBV04sR0FW
UWhHLENBQUE0SCxTQUFBLENBQWlCRixDQUFBMUIsV0FBakIsQ0FBSixDQUNFTSxDQUFBdEMsS0FB
QSxDQUFlNkQsQ0FBQSxDQUFZSCxDQUFBMUIsV0FBWixDQUFrQzBCLENBQUF2QixPQUFsQyxDQUFm
LENBQUEyQixPQUFBLENBQTJFSixDQUFBdkIsT0FBM0UsQ0FBQTNCLFFBQUEsRUFERixDQUlFOEIs
Q0FBQXlCLElBQUEsQ0FBY0wsQ0FBQTFCLFdBQUEsQ0FBcUIwQixDQUFBTixXQUFyQixDQUEyQ2Qs
Q0FBQXRDLEtBQUEsRUFBM0MsQ0FBNkRzQyxDQUFBd0IsT0FBQSxFQUE3RCxDQUFkLENBQUF0RCxR
QUFBLEVBTU4sRUFBQWdDLENBQUFyQixLQUFBLENBQVF1QyxDQUFSLENBQUFwRyxLQUFBLENBQ08w
RyxDQURQLENBQUExRyxLQUFBLENBRU8sUUFBUSxDQUFDRSxDQUFELENBQVMsQ0FFaEJrRyxDQUFK
LEdBQWtCeEgsQ0FBQXVCLFFBQWxCLEdBQ01pRyxDQUlKLEdBSEVBLENBQUFsRyxPQUNBLENBRG1C
QSxDQUNuQixDQUFBeEIsQ0FBQTJILEtBQUEsQ0FBYUQsQ0FBQXZCLE9BQWIsQ0FBK0JJLENBQS9C
LENBRUYsRUFBQUYsQ0FBQWlCLFdBQUEsQ0FBc0IscUJBQXRCLENBQTZDSSxDQUE3QyxDQUF3RFos
Q0FBeEQsQ0FMRixDQUZvQixDQUZ4QixDQVdLLFFBQVEsQ0FBQ21CLENBQUQsQ0FBUSxDQUNiUCxD
QUFKLEdBQWtCeEgsQ0FBQXVCLFFBQWxCLEVBQ0U0RSxDQUFBaUIsV0FBQSxDQUFzQixtQkFBdEIs
Q0FBMkNJLENBQTNDLENBQXNEWixDQUF0RCxDQUFpRW1CLENBQWpFLENBRmUsQ0FYckIsQ0F2Qm1C
LENBMEN2QkQsUUFBU0EsRUFBYSxDQUFDM0MsQ0FBRCxDQUFRLENBQzVCLEdBQUlBLENBQUosQ0FB
VyxDQUNULElBQUk3RCxFQUFTeEIsQ0FBQTRELE9BQUEsQ0FBZSxFQUFmLENBQW1CeUIsQ0FBQTZD
LFFBQW5CLENBQ2JsSSxFQUFBbUksUUFBQSxDQUFnQjNHLENBQWhCLENBQXdCLFFBQVEsQ0FBQzRH
LENBQUQ7QUFBUXpELENBQVIsQ0FBYSxDQUMzQ25ELENBQUEsQ0FBT21ELENBQVAsQ0FBQSxDQUFj
M0UsQ0FBQTRILFNBQUEsQ0FBaUJRLENBQWpCLENBQUEsQ0FDVjNCLENBQUE0QixJQUFBLENBQWNE
LENBQWQsQ0FEVSxDQUVWM0IsQ0FBQTZCLE9BQUEsQ0FBaUJGLENBQWpCLENBQXdCLElBQXhCLENB
QThCLElBQTlCLENBQW9DekQsQ0FBcEMsQ0FIdUMsQ0FBN0MsQ0FLSTRELEVBQUFBLENBQVdDLENB
QUEsQ0FBZW5ELENBQWYsQ0FDWHJGLEVBQUEwQixVQUFBLENBQWtCNkcsQ0FBbEIsQ0FBSixHQUNF
L0csQ0FBQSxVQURGLENBQ3dCK0csQ0FEeEIsQ0FHQSxPQUFPL0IsRUFBQWlDLElBQUEsQ0FBT2pI
LENBQVAsQ0FYRSxDQURpQixDQWlCOUJnSCxRQUFTQSxFQUFjLENBQUNuRCxDQUFELENBQVEsQ0FB
QSxJQUN6QmtELENBRHlCLENBQ2ZHLENBQ1YxSSxFQUFBMEIsVUFBQSxDQUFrQjZHLENBQWxCLENB
QTZCbEQsQ0FBQWtELFNBQTdCLENBQUosQ0FDTXZJLENBQUEySSxXQUFBLENBQW1CSixDQUFuQixD
QUROLEdBRUlBLENBRkosQ0FFZUEsQ0FBQSxDQUFTbEQsQ0FBQWMsT0FBVCxDQUZmLEVBSVduRyxD
QUFBMEIsVUFBQSxDQUFrQmdILENBQWxCLENBQWdDckQsQ0FBQXFELFlBQWhDLENBSlgsR0FLTTFJ
LENBQUEySSxXQUFBLENBQW1CRCxDQUFuQixDQUdKLEdBRkVBLENBRUYsQ0FGZ0JBLENBQUEsQ0FB
WXJELENBQUFjLE9BQVosQ0FFaEIsRUFBSW5HLENBQUEwQixVQUFBLENBQWtCZ0gsQ0FBbEIsQ0FB
SixHQUNFckQsQ0FBQXVELGtCQUNBLENBRDBCakMsQ0FBQWtDLFFBQUEsQ0FBYUgsQ0FBYixDQUMx
QixDQUFBSCxDQUFBLENBQVc3QixDQUFBLENBQWlCZ0MsQ0FBakIsQ0FGYixDQVJGLENBYUEsT0FB
T0gsRUFmc0IsQ0FzQi9CdEIsUUFBU0EsRUFBVSxFQUFHLENBQUEsSUFFaEJkLENBRmdCLENBRVIy
QyxDQUNaOUksRUFBQW1JLFFBQUEsQ0FBZ0JqRCxDQUFoQixDQUF3QixRQUFRLENBQUNHLENBQUQs
Q0FBUXJCLENBQVIsQ0FBYyxDQUN4QyxJQUFBLENBQUEsSUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFB
LENBQUEsQ0FBVyxJQUFBLEVBQUEsQ0FBQSxLQUFBLEVBMUhiTyxFQUFBQSxDQTBIYWMsQ0ExSE5k
LEtBQVgsS0FDSTRCLEVBQVMsRUFFYixJQXVIaUJkLENBdkhaZixPQUFMLENBR0EsR0FESXlFLENB
Q0osQ0FvSGlCMUQsQ0FySFRmLE9BQUEwRSxLQUFBLENBQWtCQyxDQUFsQixDQUNSLENBQUEsQ0FF
QSxJQVRxQyxJQVM1QnpELEVBQUksQ0FUd0IsQ0FTckIwRCxFQUFNSCxDQUFBckQsT0FBdEIsQ0FB
Z0NGLENBQWhDLENBQW9DMEQsQ0FBcEMsQ0FBeUMsRUFBRTFELENBQTNDLENBQThDLENBQzVDLElB
QUliLEVBQU1KLENBQUEsQ0FBS2lCLENBQUwsQ0FBUyxDQUFULENBQVY7QUFFSTJELEVBQU1KLENB
QUEsQ0FBRXZELENBQUYsQ0FFTmIsRUFBSixFQUFXd0UsQ0FBWCxHQUNFaEQsQ0FBQSxDQUFPeEIs
Q0FBQUssS0FBUCxDQURGLENBQ3FCbUUsQ0FEckIsQ0FMNEMsQ0FTOUMsQ0FBQSxDQUFPaEQsQ0FY
UCxDQUFBLElBQVEsRUFBQSxDQUFPLElBSGYsS0FBbUIsRUFBQSxDQUFPLElBdUhULEVBQUEsQ0FB
QSxDQUFBLENBQUEsQ0FBWCxDQUFBLENBQUosR0FDRTJDLENBR0EsQ0FIUXJGLENBQUEsQ0FBUTRC
LENBQVIsQ0FBZSxDQUNyQmMsT0FBUW5HLENBQUE0RCxPQUFBLENBQWUsRUFBZixDQUFtQjBDLENB
QUF3QixPQUFBLEVBQW5CLENBQXVDM0IsQ0FBdkMsQ0FEYSxDQUVyQmlCLFdBQVlqQixDQUZTLENB
QWYsQ0FHUixDQUFBMkMsQ0FBQTVCLFFBQUEsQ0FBZ0I3QixDQUpsQixDQUQ0QyxDQUE5QyxDQVNB
LE9BQU95RCxFQUFQLEVBQWdCNUQsQ0FBQSxDQUFPLElBQVAsQ0FBaEIsRUFBZ0N6QixDQUFBLENB
QVF5QixDQUFBLENBQU8sSUFBUCxDQUFSLENBQXNCLENBQUNpQixPQUFRLEVBQVQsQ0FBYWlCLFdB
QVcsRUFBeEIsQ0FBdEIsQ0FaWixDQWtCdEJTLFFBQVNBLEVBQVcsQ0FBQ3VCLENBQUQsQ0FBU2pE
LENBQVQsQ0FBaUIsQ0FDbkMsSUFBSWtELEVBQVMsRUFDYnJKLEVBQUFtSSxRQUFBLENBQWdCbUIs
Q0FBQ0YsQ0FBREUsRUFBVyxFQUFYQSxPQUFBLENBQXFCLEdBQXJCLENBQWhCLENBQTJDLFFBQVEs
Q0FBQ0MsQ0FBRCxDQUFVL0QsQ0FBVixDQUFhLENBQzlELEdBQVUsQ0FBVixHQUFJQSxDQUFKLENB
Q0U2RCxDQUFBdEUsS0FBQSxDQUFZd0UsQ0FBWixDQURGLEtBRU8sQ0FDTCxJQUFJQyxFQUFlRCxD
QUFBVCxNQUFBLENBQWMsb0JBQWQsQ0FBbkIsQ0FDSW5FLEVBQU02RSxDQUFBLENBQWEsQ0FBYixD
QUNWSCxFQUFBdEUsS0FBQSxDQUFZb0IsQ0FBQSxDQUFPeEIsQ0FBUCxDQUFaLENBQ0EwRSxFQUFB
dEUsS0FBQSxDQUFZeUUsQ0FBQSxDQUFhLENBQWIsQ0FBWixFQUErQixFQUEvQixDQUNBLFFBQU9y
RCxDQUFBLENBQU94QixDQUFQLENBTEYsQ0FIdUQsQ0FBaEUsQ0FXQSxPQUFPMEUsRUFBQUksS0FB
QSxDQUFZLEVBQVosQ0FiNEIsQ0E3WmtELElBdU1uRnBDLEVBQWMsQ0FBQSxDQXZNcUUsQ0F3TW5G
TCxDQXhNbUYsQ0F5TW5GRCxDQXpNbUYsQ0EwTW5GN0csRUFBUyxDQUNQZ0YsT0FBUUEsQ0FERCxD
QWNQd0UsT0FBUUEsUUFBUSxFQUFHLENBQ2pCckMsQ0FBQSxDQUFjLENBQUEsQ0FFZCxLQUFJc0Ms
RUFBb0IsQ0FDdEJwQyxpQkFBa0IsQ0FBQSxDQURJLENBRXRCQyxlQUFnQm9DLFFBQTJCLEVBQUcs
Q0FDNUMsSUFBQXJDLGlCQUFBO0FBQXdCLENBQUEsQ0FDeEJGLEVBQUEsQ0FBYyxDQUFBLENBRjhC
LENBRnhCLENBUXhCaEIsRUFBQXdELFdBQUEsQ0FBc0IsUUFBUSxFQUFHLENBQy9CakQsQ0FBQSxD
QUFhK0MsQ0FBYixDQUNLQSxFQUFBcEMsaUJBQUwsRUFBeUNFLENBQUEsRUFGVixDQUFqQyxDQVhp
QixDQWRaLENBNENQcUMsYUFBY0EsUUFBUSxDQUFDQyxDQUFELENBQVksQ0FDaEMsR0FBSSxJQUFB
dEksUUFBSixFQUFvQixJQUFBQSxRQUFBeUYsUUFBcEIsQ0FDRTZDLENBR0EsQ0FIWS9KLENBQUE0
RCxPQUFBLENBQWUsRUFBZixDQUFtQixJQUFBbkMsUUFBQTBFLE9BQW5CLENBQXdDNEQsQ0FBeEMs
Q0FHWixDQUZBekQsQ0FBQXRDLEtBQUEsQ0FBZTZELENBQUEsQ0FBWSxJQUFBcEcsUUFBQXlGLFFB
QUE3QyxhQUFaLENBQStDMEYsQ0FBL0MsQ0FBZixDQUVBLENBQUF6RCxDQUFBd0IsT0FBQSxDQUFp
QmlDLENBQWpCLENBSkYsS0FNRSxNQUFNQyxFQUFBLENBQWEsUUFBYixDQUFOLENBUDhCLENBNUMz
QixDQXdEYjNELEVBQUE5RCxJQUFBLENBQWUsc0JBQWYsQ0FBdUNxRSxDQUF2QyxDQUNBUCxFQUFB
OUQsSUFBQSxDQUFlLHdCQUFmLENBQXlDa0YsQ0FBekMsQ0FFQSxPQUFPdkgsRUFyUWdGLENBUDdF
LENBL05ZLENBbkJOLENBbkJwQixDQXFCSThKLEVBQWVoSyxDQUFBaUssU0FBQSxDQUFpQixTQUFq
QixDQXNxQm5CNUcsRUFBQUUsU0FBQSxDQUF1QixjQUF2QixDQXFDQTJHLFFBQTZCLEVBQUcsQ0FD
OUIsSUFBQTlELEtBQUEsQ0FBWStELFFBQVEsRUFBRyxDQUFFLE1BQU8sRUFBVCxDQURPLENBckNo
QyxDQXlDQTlHLEVBQUErRyxVQUFBLENBQXdCLFFBQXhCLENBQWtDbkssQ0FBbEMsQ0FDQW9ELEVB
QUErRyxVQUFBLENBQXdCLFFBQXhCLENBQWtDNUgsQ0FBbEMsQ0F3TEF2QyxFQUFBb0ssUUFBQSxD
QUF3QixDQUFDLFFBQUQsQ0FBVyxlQUFYO0FBQTRCLFVBQTVCLENBNkV4QjdILEVBQUE2SCxRQUFB
LENBQW1DLENBQUMsVUFBRCxDQUFhLGFBQWIsQ0FBNEIsUUFBNUIsQ0EzZ0NSLENBQTFCLENBQUQs
Q0F5aUNHdEssTUF6aUNILENBeWlDV0EsTUFBQUMsUUF6aUNYOyIsCisic291cmNlcyI6WyJhbmd1
bGFyLXJvdXRlLmpzIl0sCisibmFtZXMiOlsid2luZG93IiwiYW5ndWxhciIsIm5nVmlld0ZhY3Rv
cnkiLCIkcm91dGUiLCIkYW5jaG9yU2Nyb2xsIiwiJGFuaW1hdGUiLCJyZXN0cmljdCIsInRlcm1p
bmFsIiwicHJpb3JpdHkiLCJ0cmFuc2NsdWRlIiwibGluayIsInNjb3BlIiwiJGVsZW1lbnQiLCJh
dHRyIiwiY3RybCIsIiR0cmFuc2NsdWRlIiwiY2xlYW51cExhc3RWaWV3IiwicHJldmlvdXNMZWF2
ZUFuaW1hdGlvbiIsImNhbmNlbCIsImN1cnJlbnRTY29wZSIsIiRkZXN0cm95IiwiY3VycmVudEVs
ZW1lbnQiLCJsZWF2ZSIsInRoZW4iLCJ1cGRhdGUiLCJsb2NhbHMiLCJjdXJyZW50IiwiaXNEZWZp
bmVkIiwiJHRlbXBsYXRlIiwibmV3U2NvcGUiLCIkbmV3IiwiY2xvbmUiLCJlbnRlciIsIm9uTmdW
aWV3RW50ZXIiLCJhdXRvU2Nyb2xsRXhwIiwiJGV2YWwiLCIkZW1pdCIsIm9ubG9hZEV4cCIsImF1
dG9zY3JvbGwiLCJvbmxvYWQiLCIkb24iLCJuZ1ZpZXdGaWxsQ29udGVudEZhY3RvcnkiLCIkY29t
cGlsZSIsIiRjb250cm9sbGVyIiwiaHRtbCIsImNvbnRlbnRzIiwiY29udHJvbGxlciIsIiRzY29w
ZSIsImNvbnRyb2xsZXJBcyIsImRhdGEiLCJjaGlsZHJlbiIsInJlc29sdmVBcyIsImlzQXJyYXki
LCJpc09iamVjdCIsIm5nUm91dGVNb2R1bGUiLCJtb2R1bGUiLCJwcm92aWRlciIsIiRSb3V0ZVBy
b3ZpZGVyIiwiaW5oZXJpdCIsInBhcmVudCIsImV4dHJhIiwiZXh0ZW5kIiwiT2JqZWN0IiwiY3Jl
YXRlIiwicGF0aFJlZ0V4cCIsInBhdGgiLCJvcHRzIiwiaW5zZW5zaXRpdmUiLCJjYXNlSW5zZW5z
aXRpdmVNYXRjaCIsInJldCIsIm9yaWdpbmFsUGF0aCIsInJlZ2V4cCIsImtleXMiLCJyZXBsYWNl
IiwiXyIsInNsYXNoIiwia2V5Iiwib3B0aW9uIiwib3B0aW9uYWwiLCJzdGFyIiwicHVzaCIsIm5h
bWUiLCJSZWdFeHAiLCJyb3V0ZXMiLCJ3aGVuIiwidGhpcy53aGVuIiwicm91dGUiLCJyb3V0ZUNv
cHkiLCJkc3QiLCJpIiwiaWkiLCJsZW5ndGgiLCJjaGFyQXQiLCJpc1VuZGVmaW5lZCIsInJlbG9h
ZE9uU2VhcmNoIiwicmVkaXJlY3RQYXRoIiwic3Vic3RyIiwicmVkaXJlY3RUbyIsIm90aGVyd2lz
ZSIsInRoaXMub3RoZXJ3aXNlIiwicGFyYW1zIiwiJGdldCIsIiRyb290U2NvcGUiLCIkbG9jYXRp
b24iLCIkcm91dGVQYXJhbXMiLCIkcSIsIiRpbmplY3RvciIsIiR0ZW1wbGF0ZVJlcXVlc3QiLCIk
c2NlIiwicHJlcGFyZVJvdXRlIiwiJGxvY2F0aW9uRXZlbnQiLCJsYXN0Um91dGUiLCJwcmVwYXJl
ZFJvdXRlSXNVcGRhdGVPbmx5IiwicHJlcGFyZWRSb3V0ZSIsInBhcnNlUm91dGUiLCIkJHJvdXRl
IiwiZXF1YWxzIiwicGF0aFBhcmFtcyIsImZvcmNlUmVsb2FkIiwiJGJyb2FkY2FzdCIsImRlZmF1
bHRQcmV2ZW50ZWQiLCJwcmV2ZW50RGVmYXVsdCIsImNvbW1pdFJvdXRlIiwibmV4dFJvdXRlIiwi
Y29weSIsImlzU3RyaW5nIiwiaW50ZXJwb2xhdGUiLCJzZWFyY2giLCJ1cmwiLCJyZXNvbHZlTG9j
YWxzIiwiZXJyb3IiLCJyZXNvbHZlIiwiZm9yRWFjaCIsInZhbHVlIiwiZ2V0IiwiaW52b2tlIiwi
dGVtcGxhdGUiLCJnZXRUZW1wbGF0ZUZvciIsImFsbCIsInRlbXBsYXRlVXJsIiwiaXNGdW5jdGlv
biIsImxvYWRlZFRlbXBsYXRlVXJsIiwidmFsdWVPZiIsIm1hdGNoIiwibSIsImV4ZWMiLCJvbiIs
ImxlbiIsInZhbCIsInN0cmluZyIsInJlc3VsdCIsInNwbGl0Iiwic2VnbWVudCIsInNlZ21lbnRN
YXRjaCIsImpvaW4iLCJyZWxvYWQiLCJmYWtlTG9jYXRpb25FdmVudCIsImZha2VQcmV2ZW50RGVm
YXVsdCIsIiRldmFsQXN5bmMiLCJ1cGRhdGVQYXJhbXMiLCJuZXdQYXJhbXMiLCIkcm91dGVNaW5F
cnIiLCIkJG1pbkVyciIsIiRSb3V0ZVBhcmFtc1Byb3ZpZGVyIiwidGhpcy4kZ2V0IiwiZGlyZWN0
aXZlIiwiJGluamVjdCJdCit9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvbm9k
ZV9tb2R1bGVzL2FuZ3VsYXItcm91dGUvYm93ZXIuanNvbiBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJq
cy9ub2RlX21vZHVsZXMvYW5ndWxhci1yb3V0ZS9ib3dlci5qc29uCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5N2Q2
MDg4MzRiN2M2MjcyNzBlNzVlMDUxZmY4NDc2NWNlMTUxZDMKLS0tIC9kZXYvbnVsbAorKysgYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9hbmd1bGFyanMvbm9kZV9tb2R1bGVzL2FuZ3VsYXItcm91dGUvYm93ZXIuanNv
bgpAQCAtMCwwICsxLDEwIEBACit7CisgICJuYW1lIjogImFuZ3VsYXItcm91dGUiLAorICAidmVy
c2lvbiI6ICIxLjUuOSIsCisgICJsaWNlbnNlIjogIk1JVCIsCisgICJtYWluIjogIi4vYW5ndWxh
ci1yb3V0ZS5qcyIsCisgICJpZ25vcmUiOiBbXSwKKyAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAi
YW5ndWxhciI6ICIxLjUuOSIKKyAgfQorfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxh
cmpzL25vZGVfbW9kdWxlcy9hbmd1bGFyLXJvdXRlL2luZGV4LmpzIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5n
dWxhcmpzL25vZGVfbW9kdWxlcy9hbmd1bGFyLXJvdXRlL2luZGV4LmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjll
ZDI2NDVlNGUyNGM1MDgxZmUwZGFmNDhlODkwMzk5Zjc2NzRjMTkKLS0tIC9kZXYvbnVsbAorKysg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9hbmd1bGFyanMvbm9kZV9tb2R1bGVzL2FuZ3VsYXItcm91dGUvaW5kZXgu
anMKQEAgLTAsMCArMSwyIEBACityZXF1aXJlKCcuL2FuZ3VsYXItcm91dGUnKTsKK21vZHVsZS5l
eHBvcnRzID0gJ25nUm91dGUnOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL25v
ZGVfbW9kdWxlcy9hbmd1bGFyLXJvdXRlL3BhY2thZ2UuanNvbiBiL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3Vs
YXJqcy9ub2RlX21vZHVsZXMvYW5ndWxhci1yb3V0ZS9wYWNrYWdlLmpzb24KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NWRjNWZmZTg5MmY5Njk4MDVlNzljODkwYjVkMTI5ODkxOWM4MTVlNQotLS0gL2Rldi9udWxsCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ub2RlX21vZHVsZXMvYW5ndWxhci1yb3V0ZS9wYWNr
YWdlLmpzb24KQEAgLTAsMCArMSwxMDUgQEAKK3sKKyAgIl9hcmdzIjogWworICAgIFsKKyAgICAg
IHsKKyAgICAgICAgInJhdyI6ICJhbmd1bGFyLXJvdXRlQDEuNS45IiwKKyAgICAgICAgInNjb3Bl
IjogbnVsbCwKKyAgICAgICAgImVzY2FwZWROYW1lIjogImFuZ3VsYXItcm91dGUiLAorICAgICAg
ICAibmFtZSI6ICJhbmd1bGFyLXJvdXRlIiwKKyAgICAgICAgInJhd1NwZWMiOiAiMS41LjkiLAor
ICAgICAgICAic3BlYyI6ICIxLjUuOSIsCisgICAgICAgICJ0eXBlIjogInZlcnNpb24iCisgICAg
ICB9LAorICAgICAgIi9Vc2Vycy9hZGR5by9wcm9qZWN0cy9zcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzIgorICAgIF0KKyAgXSwKKyAg
Il9mcm9tIjogImFuZ3VsYXItcm91dGVAMS41LjkiLAorICAiX2lkIjogImFuZ3VsYXItcm91dGVA
MS41LjkiLAorICAiX2luQ2FjaGUiOiB0cnVlLAorICAiX2xvY2F0aW9uIjogIi9hbmd1bGFyLXJv
dXRlIiwKKyAgIl9ub2RlVmVyc2lvbiI6ICI0LjQuNyIsCisgICJfbnBtT3BlcmF0aW9uYWxJbnRl
cm5hbCI6IHsKKyAgICAiaG9zdCI6ICJwYWNrYWdlcy0xOC1lYXN0LmludGVybmFsLm5wbWpzLmNv
bSIsCisgICAgInRtcCI6ICJ0bXAvYW5ndWxhci1yb3V0ZS0xLjUuOS50Z3pfMTQ4MDAxODcyNDA5
NV8wLjc0OTk0MzUyNzE2MDIxMjQiCisgIH0sCisgICJfbnBtVXNlciI6IHsKKyAgICAibmFtZSI6
ICJhbmd1bGFyY29yZSIsCisgICAgImVtYWlsIjogImFuZ3VsYXItY29yZStucG1AZ29vZ2xlLmNv
bSIKKyAgfSwKKyAgIl9ucG1WZXJzaW9uIjogIjIuMTUuOCIsCisgICJfcGhhbnRvbUNoaWxkcmVu
Ijoge30sCisgICJfcmVxdWVzdGVkIjogeworICAgICJyYXciOiAiYW5ndWxhci1yb3V0ZUAxLjUu
OSIsCisgICAgInNjb3BlIjogbnVsbCwKKyAgICAiZXNjYXBlZE5hbWUiOiAiYW5ndWxhci1yb3V0
ZSIsCisgICAgIm5hbWUiOiAiYW5ndWxhci1yb3V0ZSIsCisgICAgInJhd1NwZWMiOiAiMS41Ljki
LAorICAgICJzcGVjIjogIjEuNS45IiwKKyAgICAidHlwZSI6ICJ2ZXJzaW9uIgorICB9LAorICAi
X3JlcXVpcmVkQnkiOiBbCisgICAgIiNVU0VSIiwKKyAgICAiLyIKKyAgXSwKKyAgIl9yZXNvbHZl
ZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9hbmd1bGFyLXJvdXRlLy0vYW5ndWxhci1y
b3V0ZS0xLjUuOS50Z3oiLAorICAiX3NoYXN1bSI6ICI0ZjA1ODJlYjBmYjQ0MzU0NDNhMDVhN2Q4
YzVlYjliZGMyYzVjNDFjIiwKKyAgIl9zaHJpbmt3cmFwIjogbnVsbCwKKyAgIl9zcGVjIjogImFu
Z3VsYXItcm91dGVAMS41LjkiLAorICAiX3doZXJlIjogIi9Vc2Vycy9hZGR5by9wcm9qZWN0cy9z
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxh
cmpzIiwKKyAgImF1dGhvciI6IHsKKyAgICAibmFtZSI6ICJBbmd1bGFyIENvcmUgVGVhbSIsCisg
ICAgImVtYWlsIjogImFuZ3VsYXItY29yZStucG1AZ29vZ2xlLmNvbSIKKyAgfSwKKyAgImJ1Z3Mi
OiB7CisgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyLmpzL2lz
c3VlcyIKKyAgfSwKKyAgImRlcGVuZGVuY2llcyI6IHt9LAorICAiZGVzY3JpcHRpb24iOiAiQW5n
dWxhckpTIHJvdXRlciBtb2R1bGUiLAorICAiZGV2RGVwZW5kZW5jaWVzIjoge30sCisgICJkaXJl
Y3RvcmllcyI6IHt9LAorICAiZGlzdCI6IHsKKyAgICAic2hhc3VtIjogIjRmMDU4MmViMGZiNDQz
NTQ0M2EwNWE3ZDhjNWViOWJkYzJjNWM0MWMiLAorICAgICJ0YXJiYWxsIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL2FuZ3VsYXItcm91dGUvLS9hbmd1bGFyLXJvdXRlLTEuNS45LnRneiIK
KyAgfSwKKyAgImdpdEhlYWQiOiAiNzMzNDRkNzk3MDE1OTViMDkzZWQ4ZGVhZWUwYjQ2YjliYjBk
Mzk3MCIsCisgICJob21lcGFnZSI6ICJodHRwOi8vYW5ndWxhcmpzLm9yZyIsCisgICJqc3BtIjog
eworICAgICJzaGltIjogeworICAgICAgImFuZ3VsYXItcm91dGUiOiB7CisgICAgICAgICJkZXBz
IjogWworICAgICAgICAgICJhbmd1bGFyIgorICAgICAgICBdCisgICAgICB9CisgICAgfQorICB9
LAorICAia2V5d29yZHMiOiBbCisgICAgImFuZ3VsYXIiLAorICAgICJmcmFtZXdvcmsiLAorICAg
ICJicm93c2VyIiwKKyAgICAicm91dGVyIiwKKyAgICAiY2xpZW50LXNpZGUiCisgIF0sCisgICJs
aWNlbnNlIjogIk1JVCIsCisgICJtYWluIjogImluZGV4LmpzIiwKKyAgIm1haW50YWluZXJzIjog
WworICAgIHsKKyAgICAgICJuYW1lIjogImFuZ3VsYXJjb3JlIiwKKyAgICAgICJlbWFpbCI6ICJh
bmd1bGFyLWNvcmUrbnBtQGdvb2dsZS5jb20iCisgICAgfSwKKyAgICB7CisgICAgICAibmFtZSI6
ICJwZXRlYmQiLAorICAgICAgImVtYWlsIjogInBldGVAYmFjb25kYXJ3aW4uY29tIgorICAgIH0K
KyAgXSwKKyAgIm5hbWUiOiAiYW5ndWxhci1yb3V0ZSIsCisgICJvcHRpb25hbERlcGVuZGVuY2ll
cyI6IHt9LAorICAicmVhZG1lIjogIkVSUk9SOiBObyBSRUFETUUgZGF0YSBmb3VuZCEiLAorICAi
cmVwb3NpdG9yeSI6IHsKKyAgICAidHlwZSI6ICJnaXQiLAorICAgICJ1cmwiOiAiZ2l0K2h0dHBz
Oi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIuanMuZ2l0IgorICB9LAorICAic2NyaXB0cyI6
IHsKKyAgICAidGVzdCI6ICJlY2hvIFwiRXJyb3I6IG5vIHRlc3Qgc3BlY2lmaWVkXCIgJiYgZXhp
dCAxIgorICB9LAorICAidmVyc2lvbiI6ICIxLjUuOSIKK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2FuZ3VsYXJqcy9ub2RlX21vZHVsZXMvYW5ndWxhci9SRUFETUUubWQgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9hbmd1bGFyanMvbm9kZV9tb2R1bGVzL2FuZ3VsYXIvUkVBRE1FLm1kCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQx
YmMwZWRkZjQ0OGViZTZkNzUwZGQwZmZiYjM1ZTQ2NjVmZDFlMTIKLS0tIC9kZXYvbnVsbAorKysg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9hbmd1bGFyanMvbm9kZV9tb2R1bGVzL2FuZ3VsYXIvUkVBRE1FLm1kCkBA
IC0wLDAgKzEsNjQgQEAKKyMgcGFja2FnZWQgYW5ndWxhcgorCitUaGlzIHJlcG8gaXMgZm9yIGRp
c3RyaWJ1dGlvbiBvbiBgbnBtYCBhbmQgYGJvd2VyYC4gVGhlIHNvdXJjZSBmb3IgdGhpcyBtb2R1
bGUgaXMgaW4gdGhlCitbbWFpbiBBbmd1bGFySlMgcmVwb10oaHR0cHM6Ly9naXRodWIuY29tL2Fu
Z3VsYXIvYW5ndWxhci5qcykuCitQbGVhc2UgZmlsZSBpc3N1ZXMgYW5kIHB1bGwgcmVxdWVzdHMg
YWdhaW5zdCB0aGF0IHJlcG8uCisKKyMjIEluc3RhbGwKKworWW91IGNhbiBpbnN0YWxsIHRoaXMg
cGFja2FnZSBlaXRoZXIgd2l0aCBgbnBtYCBvciB3aXRoIGBib3dlcmAuCisKKyMjIyBucG0KKwor
YGBgc2hlbGwKK25wbSBpbnN0YWxsIGFuZ3VsYXIKK2BgYAorCitUaGVuIGFkZCBhIGA8c2NyaXB0
PmAgdG8geW91ciBgaW5kZXguaHRtbGA6CisKK2BgYGh0bWwKKzxzY3JpcHQgc3JjPSIvbm9kZV9t
b2R1bGVzL2FuZ3VsYXIvYW5ndWxhci5qcyI+PC9zY3JpcHQ+CitgYGAKKworT3IgYHJlcXVpcmUo
J2FuZ3VsYXInKWAgZnJvbSB5b3VyIGNvZGUuCisKKyMjIyBib3dlcgorCitgYGBzaGVsbAorYm93
ZXIgaW5zdGFsbCBhbmd1bGFyCitgYGAKKworVGhlbiBhZGQgYSBgPHNjcmlwdD5gIHRvIHlvdXIg
YGluZGV4Lmh0bWxgOgorCitgYGBodG1sCis8c2NyaXB0IHNyYz0iL2Jvd2VyX2NvbXBvbmVudHMv
YW5ndWxhci9hbmd1bGFyLmpzIj48L3NjcmlwdD4KK2BgYAorCisjIyBEb2N1bWVudGF0aW9uCisK
K0RvY3VtZW50YXRpb24gaXMgYXZhaWxhYmxlIG9uIHRoZQorW0FuZ3VsYXJKUyBkb2NzIHNpdGVd
KGh0dHA6Ly9kb2NzLmFuZ3VsYXJqcy5vcmcvKS4KKworIyMgTGljZW5zZQorCitUaGUgTUlUIExp
Y2Vuc2UKKworQ29weXJpZ2h0IChjKSAyMDEwLTIwMTUgR29vZ2xlLCBJbmMuIGh0dHA6Ly9hbmd1
bGFyanMub3JnCisKK1Blcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdl
LCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKK29mIHRoaXMgc29mdHdhcmUgYW5kIGFz
c29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCitp
biB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGlt
aXRhdGlvbiB0aGUgcmlnaHRzCit0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gs
IGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCitjb3BpZXMgb2YgdGhlIFNvZnR3
YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKK2Z1cm5p
c2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisKK1Ro
ZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxs
IGJlIGluY2x1ZGVkIGluCithbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRo
ZSBTb2Z0d2FyZS4KKworVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQg
V0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKK0lNUExJRUQsIElOQ0xVRElORyBCVVQg
Tk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFCitBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1Ig
QU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCitMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNU
SU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAorT1VUIE9G
IE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBE
RUFMSU5HUyBJTgorVEhFIFNPRlRXQVJFLgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxh
cmpzL25vZGVfbW9kdWxlcy9hbmd1bGFyL2FuZ3VsYXItY3NwLmNzcyBiL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2Fu
Z3VsYXJqcy9ub2RlX21vZHVsZXMvYW5ndWxhci9hbmd1bGFyLWNzcC5jc3MKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZjNjZDkyNmNiMzZjNjcwNDQ1OGJkNzVkNzE3ZmUwYjAwZjU4MTI2MgotLS0gL2Rldi9udWxsCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ub2RlX21vZHVsZXMvYW5ndWxhci9hbmd1bGFyLWNz
cC5jc3MKQEAgLTAsMCArMSwyMSBAQAorLyogSW5jbHVkZSB0aGlzIGZpbGUgaW4geW91ciBodG1s
IGlmIHlvdSBhcmUgdXNpbmcgdGhlIENTUCBtb2RlLiAqLworCitAY2hhcnNldCAiVVRGLTgiOwor
CitbbmdcOmNsb2FrXSwgW25nLWNsb2FrXSwgW2RhdGEtbmctY2xvYWtdLCBbeC1uZy1jbG9ha10s
CisubmctY2xvYWssIC54LW5nLWNsb2FrLAorLm5nLWhpZGU6bm90KC5uZy1oaWRlLWFuaW1hdGUp
IHsKKyAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OworfQorCituZ1w6Zm9ybSB7CisgIGRpc3Bs
YXk6IGJsb2NrOworfQorCisubmctYW5pbWF0ZS1zaGltIHsKKyAgdmlzaWJpbGl0eTpoaWRkZW47
Cit9CisKKy5uZy1hbmNob3IgeworICBwb3NpdGlvbjphYnNvbHV0ZTsKK30KZGlmZiAtLWdpdCBh
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ub2RlX21vZHVsZXMvYW5ndWxhci9hbmd1bGFyLmpzIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvYW5ndWxhcmpzL25vZGVfbW9kdWxlcy9hbmd1bGFyL2FuZ3VsYXIuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZjc0NDJjMGIwMzFjYzhhZmFiNTc4ZTc3OWY5YWRkYTA5NmQ3ZWI0NwotLS0gL2Rl
di9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ub2RlX21vZHVsZXMvYW5ndWxhci9h
bmd1bGFyLmpzCkBAIC0wLDAgKzEsMjgzNjQgQEAKKy8qKgorICogQGxpY2Vuc2UgQW5ndWxhckpT
IHYxLjQuMworICogKGMpIDIwMTAtMjAxNSBHb29nbGUsIEluYy4gaHR0cDovL2FuZ3VsYXJqcy5v
cmcKKyAqIExpY2Vuc2U6IE1JVAorICovCisoZnVuY3Rpb24od2luZG93LCBkb2N1bWVudCwgdW5k
ZWZpbmVkKSB7J3VzZSBzdHJpY3QnOworCisvKioKKyAqIEBkZXNjcmlwdGlvbgorICoKKyAqIFRo
aXMgb2JqZWN0IHByb3ZpZGVzIGEgdXRpbGl0eSBmb3IgcHJvZHVjaW5nIHJpY2ggRXJyb3IgbWVz
c2FnZXMgd2l0aGluCisgKiBBbmd1bGFyLiBJdCBjYW4gYmUgY2FsbGVkIGFzIGZvbGxvd3M6Cisg
KgorICogdmFyIGV4YW1wbGVNaW5FcnIgPSBtaW5FcnIoJ2V4YW1wbGUnKTsKKyAqIHRocm93IGV4
YW1wbGVNaW5FcnIoJ29uZScsICdUaGlzIHswfSBpcyB7MX0nLCBmb28sIGJhcik7CisgKgorICog
VGhlIGFib3ZlIGNyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgbWluRXJyIGluIHRoZSBleGFtcGxlIG5h
bWVzcGFjZS4gVGhlCisgKiByZXN1bHRpbmcgZXJyb3Igd2lsbCBoYXZlIGEgbmFtZXNwYWNlZCBl
cnJvciBjb2RlIG9mIGV4YW1wbGUub25lLiAgVGhlCisgKiByZXN1bHRpbmcgZXJyb3Igd2lsbCBy
ZXBsYWNlIHswfSB3aXRoIHRoZSB2YWx1ZSBvZiBmb28sIGFuZCB7MX0gd2l0aCB0aGUKKyAqIHZh
bHVlIG9mIGJhci4gVGhlIG9iamVjdCBpcyBub3QgcmVzdHJpY3RlZCBpbiB0aGUgbnVtYmVyIG9m
IGFyZ3VtZW50cyBpdCBjYW4KKyAqIHRha2UuCisgKgorICogSWYgZmV3ZXIgYXJndW1lbnRzIGFy
ZSBzcGVjaWZpZWQgdGhhbiBuZWNlc3NhcnkgZm9yIGludGVycG9sYXRpb24sIHRoZSBleHRyYQor
ICogaW50ZXJwb2xhdGlvbiBtYXJrZXJzIHdpbGwgYmUgcHJlc2VydmVkIGluIHRoZSBmaW5hbCBz
dHJpbmcuCisgKgorICogU2luY2UgZGF0YSB3aWxsIGJlIHBhcnNlZCBzdGF0aWNhbGx5IGR1cmlu
ZyBhIGJ1aWxkIHN0ZXAsIHNvbWUgcmVzdHJpY3Rpb25zCisgKiBhcmUgYXBwbGllZCB3aXRoIHJl
c3BlY3QgdG8gaG93IG1pbkVyciBpbnN0YW5jZXMgYXJlIGNyZWF0ZWQgYW5kIGNhbGxlZC4KKyAq
IEluc3RhbmNlcyBzaG91bGQgaGF2ZSBuYW1lcyBvZiB0aGUgZm9ybSBuYW1lc3BhY2VNaW5FcnIg
Zm9yIGEgbWluRXJyIGNyZWF0ZWQKKyAqIHVzaW5nIG1pbkVycignbmFtZXNwYWNlJykgLiBFcnJv
ciBjb2RlcywgbmFtZXNwYWNlcyBhbmQgdGVtcGxhdGUgc3RyaW5ncworICogc2hvdWxkIGFsbCBi
ZSBzdGF0aWMgc3RyaW5ncywgbm90IHZhcmlhYmxlcyBvciBnZW5lcmFsIGV4cHJlc3Npb25zLgor
ICoKKyAqIEBwYXJhbSB7c3RyaW5nfSBtb2R1bGUgVGhlIG5hbWVzcGFjZSB0byB1c2UgZm9yIHRo
ZSBuZXcgbWluRXJyIGluc3RhbmNlLgorICogQHBhcmFtIHtmdW5jdGlvbn0gRXJyb3JDb25zdHJ1
Y3RvciBDdXN0b20gZXJyb3IgY29uc3RydWN0b3IgdG8gYmUgaW5zdGFudGlhdGVkIHdoZW4gcmV0
dXJuaW5nCisgKiAgIGVycm9yIGZyb20gcmV0dXJuZWQgZnVuY3Rpb24sIGZvciBjYXNlcyB3aGVu
IGEgcGFydGljdWxhciB0eXBlIG9mIGVycm9yIGlzIHVzZWZ1bC4KKyAqIEByZXR1cm5zIHtmdW5j
dGlvbihjb2RlOnN0cmluZywgdGVtcGxhdGU6c3RyaW5nLCAuLi50ZW1wbGF0ZUFyZ3MpOiBFcnJv
cn0gbWluRXJyIGluc3RhbmNlCisgKi8KKworZnVuY3Rpb24gbWluRXJyKG1vZHVsZSwgRXJyb3JD
b25zdHJ1Y3RvcikgeworICBFcnJvckNvbnN0cnVjdG9yID0gRXJyb3JDb25zdHJ1Y3RvciB8fCBF
cnJvcjsKKyAgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAgIHZhciBTS0lQX0lOREVYRVMgPSAyOwor
CisgICAgdmFyIHRlbXBsYXRlQXJncyA9IGFyZ3VtZW50cywKKyAgICAgIGNvZGUgPSB0ZW1wbGF0
ZUFyZ3NbMF0sCisgICAgICBtZXNzYWdlID0gJ1snICsgKG1vZHVsZSA/IG1vZHVsZSArICc6JyA6
ICcnKSArIGNvZGUgKyAnXSAnLAorICAgICAgdGVtcGxhdGUgPSB0ZW1wbGF0ZUFyZ3NbMV0sCisg
ICAgICBwYXJhbVByZWZpeCwgaTsKKworICAgIG1lc3NhZ2UgKz0gdGVtcGxhdGUucmVwbGFjZSgv
XHtcZCtcfS9nLCBmdW5jdGlvbihtYXRjaCkgeworICAgICAgdmFyIGluZGV4ID0gK21hdGNoLnNs
aWNlKDEsIC0xKSwKKyAgICAgICAgc2hpZnRlZEluZGV4ID0gaW5kZXggKyBTS0lQX0lOREVYRVM7
CisKKyAgICAgIGlmIChzaGlmdGVkSW5kZXggPCB0ZW1wbGF0ZUFyZ3MubGVuZ3RoKSB7CisgICAg
ICAgIHJldHVybiB0b0RlYnVnU3RyaW5nKHRlbXBsYXRlQXJnc1tzaGlmdGVkSW5kZXhdKTsKKyAg
ICAgIH0KKworICAgICAgcmV0dXJuIG1hdGNoOworICAgIH0pOworCisgICAgbWVzc2FnZSArPSAn
XG5odHRwOi8vZXJyb3JzLmFuZ3VsYXJqcy5vcmcvMS40LjMvJyArCisgICAgICAobW9kdWxlID8g
bW9kdWxlICsgJy8nIDogJycpICsgY29kZTsKKworICAgIGZvciAoaSA9IFNLSVBfSU5ERVhFUywg
cGFyYW1QcmVmaXggPSAnPyc7IGkgPCB0ZW1wbGF0ZUFyZ3MubGVuZ3RoOyBpKyssIHBhcmFtUHJl
Zml4ID0gJyYnKSB7CisgICAgICBtZXNzYWdlICs9IHBhcmFtUHJlZml4ICsgJ3AnICsgKGkgLSBT
S0lQX0lOREVYRVMpICsgJz0nICsKKyAgICAgICAgZW5jb2RlVVJJQ29tcG9uZW50KHRvRGVidWdT
dHJpbmcodGVtcGxhdGVBcmdzW2ldKSk7CisgICAgfQorCisgICAgcmV0dXJuIG5ldyBFcnJvckNv
bnN0cnVjdG9yKG1lc3NhZ2UpOworICB9OworfQorCisvKiBXZSBuZWVkIHRvIHRlbGwganNoaW50
IHdoYXQgdmFyaWFibGVzIGFyZSBiZWluZyBleHBvcnRlZCAqLworLyogZ2xvYmFsIGFuZ3VsYXI6
IHRydWUsCisgIG1zaWU6IHRydWUsCisgIGpxTGl0ZTogdHJ1ZSwKKyAgalF1ZXJ5OiB0cnVlLAor
ICBzbGljZTogdHJ1ZSwKKyAgc3BsaWNlOiB0cnVlLAorICBwdXNoOiB0cnVlLAorICB0b1N0cmlu
ZzogdHJ1ZSwKKyAgbmdNaW5FcnI6IHRydWUsCisgIGFuZ3VsYXJNb2R1bGU6IHRydWUsCisgIHVp
ZDogdHJ1ZSwKKyAgUkVHRVhfU1RSSU5HX1JFR0VYUDogdHJ1ZSwKKyAgVkFMSURJVFlfU1RBVEVf
UFJPUEVSVFk6IHRydWUsCisKKyAgbG93ZXJjYXNlOiB0cnVlLAorICB1cHBlcmNhc2U6IHRydWUs
CisgIG1hbnVhbExvd2VyY2FzZTogdHJ1ZSwKKyAgbWFudWFsVXBwZXJjYXNlOiB0cnVlLAorICBu
b2RlTmFtZV86IHRydWUsCisgIGlzQXJyYXlMaWtlOiB0cnVlLAorICBmb3JFYWNoOiB0cnVlLAor
ICBmb3JFYWNoU29ydGVkOiB0cnVlLAorICByZXZlcnNlUGFyYW1zOiB0cnVlLAorICBuZXh0VWlk
OiB0cnVlLAorICBzZXRIYXNoS2V5OiB0cnVlLAorICBleHRlbmQ6IHRydWUsCisgIHRvSW50OiB0
cnVlLAorICBpbmhlcml0OiB0cnVlLAorICBtZXJnZTogdHJ1ZSwKKyAgbm9vcDogdHJ1ZSwKKyAg
aWRlbnRpdHk6IHRydWUsCisgIHZhbHVlRm46IHRydWUsCisgIGlzVW5kZWZpbmVkOiB0cnVlLAor
ICBpc0RlZmluZWQ6IHRydWUsCisgIGlzT2JqZWN0OiB0cnVlLAorICBpc0JsYW5rT2JqZWN0OiB0
cnVlLAorICBpc1N0cmluZzogdHJ1ZSwKKyAgaXNOdW1iZXI6IHRydWUsCisgIGlzRGF0ZTogdHJ1
ZSwKKyAgaXNBcnJheTogdHJ1ZSwKKyAgaXNGdW5jdGlvbjogdHJ1ZSwKKyAgaXNSZWdFeHA6IHRy
dWUsCisgIGlzV2luZG93OiB0cnVlLAorICBpc1Njb3BlOiB0cnVlLAorICBpc0ZpbGU6IHRydWUs
CisgIGlzRm9ybURhdGE6IHRydWUsCisgIGlzQmxvYjogdHJ1ZSwKKyAgaXNCb29sZWFuOiB0cnVl
LAorICBpc1Byb21pc2VMaWtlOiB0cnVlLAorICB0cmltOiB0cnVlLAorICBlc2NhcGVGb3JSZWdl
eHA6IHRydWUsCisgIGlzRWxlbWVudDogdHJ1ZSwKKyAgbWFrZU1hcDogdHJ1ZSwKKyAgaW5jbHVk
ZXM6IHRydWUsCisgIGFycmF5UmVtb3ZlOiB0cnVlLAorICBjb3B5OiB0cnVlLAorICBzaGFsbG93
Q29weTogdHJ1ZSwKKyAgZXF1YWxzOiB0cnVlLAorICBjc3A6IHRydWUsCisgIGpxOiB0cnVlLAor
ICBjb25jYXQ6IHRydWUsCisgIHNsaWNlQXJnczogdHJ1ZSwKKyAgYmluZDogdHJ1ZSwKKyAgdG9K
c29uUmVwbGFjZXI6IHRydWUsCisgIHRvSnNvbjogdHJ1ZSwKKyAgZnJvbUpzb246IHRydWUsCisg
IGNvbnZlcnRUaW1lem9uZVRvTG9jYWw6IHRydWUsCisgIHRpbWV6b25lVG9PZmZzZXQ6IHRydWUs
CisgIHN0YXJ0aW5nVGFnOiB0cnVlLAorICB0cnlEZWNvZGVVUklDb21wb25lbnQ6IHRydWUsCisg
IHBhcnNlS2V5VmFsdWU6IHRydWUsCisgIHRvS2V5VmFsdWU6IHRydWUsCisgIGVuY29kZVVyaVNl
Z21lbnQ6IHRydWUsCisgIGVuY29kZVVyaVF1ZXJ5OiB0cnVlLAorICBhbmd1bGFySW5pdDogdHJ1
ZSwKKyAgYm9vdHN0cmFwOiB0cnVlLAorICBnZXRUZXN0YWJpbGl0eTogdHJ1ZSwKKyAgc25ha2Vf
Y2FzZTogdHJ1ZSwKKyAgYmluZEpRdWVyeTogdHJ1ZSwKKyAgYXNzZXJ0QXJnOiB0cnVlLAorICBh
c3NlcnRBcmdGbjogdHJ1ZSwKKyAgYXNzZXJ0Tm90SGFzT3duUHJvcGVydHk6IHRydWUsCisgIGdl
dHRlcjogdHJ1ZSwKKyAgZ2V0QmxvY2tOb2RlczogdHJ1ZSwKKyAgaGFzT3duUHJvcGVydHk6IHRy
dWUsCisgIGNyZWF0ZU1hcDogdHJ1ZSwKKworICBOT0RFX1RZUEVfRUxFTUVOVDogdHJ1ZSwKKyAg
Tk9ERV9UWVBFX0FUVFJJQlVURTogdHJ1ZSwKKyAgTk9ERV9UWVBFX1RFWFQ6IHRydWUsCisgIE5P
REVfVFlQRV9DT01NRU5UOiB0cnVlLAorICBOT0RFX1RZUEVfRE9DVU1FTlQ6IHRydWUsCisgIE5P
REVfVFlQRV9ET0NVTUVOVF9GUkFHTUVOVDogdHJ1ZSwKKyovCisKKy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLworCisvKioKKyAqIEBuZ2RvYyBtb2R1bGUKKyAqIEBuYW1lIG5n
CisgKiBAbW9kdWxlIG5nCisgKiBAZGVzY3JpcHRpb24KKyAqCisgKiAjIG5nIChjb3JlIG1vZHVs
ZSkKKyAqIFRoZSBuZyBtb2R1bGUgaXMgbG9hZGVkIGJ5IGRlZmF1bHQgd2hlbiBhbiBBbmd1bGFy
SlMgYXBwbGljYXRpb24gaXMgc3RhcnRlZC4gVGhlIG1vZHVsZSBpdHNlbGYKKyAqIGNvbnRhaW5z
IHRoZSBlc3NlbnRpYWwgY29tcG9uZW50cyBmb3IgYW4gQW5ndWxhckpTIGFwcGxpY2F0aW9uIHRv
IGZ1bmN0aW9uLiBUaGUgdGFibGUgYmVsb3cKKyAqIGxpc3RzIGEgaGlnaCBsZXZlbCBicmVha2Rv
d24gb2YgZWFjaCBvZiB0aGUgc2VydmljZXMvZmFjdG9yaWVzLCBmaWx0ZXJzLCBkaXJlY3RpdmVz
IGFuZCB0ZXN0aW5nCisgKiBjb21wb25lbnRzIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBjb3JlIG1v
ZHVsZS4KKyAqCisgKiA8ZGl2IGRvYy1tb2R1bGUtY29tcG9uZW50cz0ibmciPjwvZGl2PgorICov
CisKK3ZhciBSRUdFWF9TVFJJTkdfUkVHRVhQID0gL15cLyguKylcLyhbYS16XSopJC87CisKKy8v
IFRoZSBuYW1lIG9mIGEgZm9ybSBjb250cm9sJ3MgVmFsaWRpdHlTdGF0ZSBwcm9wZXJ0eS4KKy8v
IFRoaXMgaXMgdXNlZCBzbyB0aGF0IGl0J3MgcG9zc2libGUgZm9yIGludGVybmFsIHRlc3RzIHRv
IGNyZWF0ZSBtb2NrIFZhbGlkaXR5U3RhdGVzLgordmFyIFZBTElESVRZX1NUQVRFX1BST1BFUlRZ
ID0gJ3ZhbGlkaXR5JzsKKworLyoqCisgKiBAbmdkb2MgZnVuY3Rpb24KKyAqIEBuYW1lIGFuZ3Vs
YXIubG93ZXJjYXNlCisgKiBAbW9kdWxlIG5nCisgKiBAa2luZCBmdW5jdGlvbgorICoKKyAqIEBk
ZXNjcmlwdGlvbiBDb252ZXJ0cyB0aGUgc3BlY2lmaWVkIHN0cmluZyB0byBsb3dlcmNhc2UuCisg
KiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFN0cmluZyB0byBiZSBjb252ZXJ0ZWQgdG8gbG93ZXJj
YXNlLgorICogQHJldHVybnMge3N0cmluZ30gTG93ZXJjYXNlZCBzdHJpbmcuCisgKi8KK3ZhciBs
b3dlcmNhc2UgPSBmdW5jdGlvbihzdHJpbmcpIHtyZXR1cm4gaXNTdHJpbmcoc3RyaW5nKSA/IHN0
cmluZy50b0xvd2VyQ2FzZSgpIDogc3RyaW5nO307Cit2YXIgaGFzT3duUHJvcGVydHkgPSBPYmpl
Y3QucHJvdG90eXBlLmhhc093blByb3BlcnR5OworCisvKioKKyAqIEBuZ2RvYyBmdW5jdGlvbgor
ICogQG5hbWUgYW5ndWxhci51cHBlcmNhc2UKKyAqIEBtb2R1bGUgbmcKKyAqIEBraW5kIGZ1bmN0
aW9uCisgKgorICogQGRlc2NyaXB0aW9uIENvbnZlcnRzIHRoZSBzcGVjaWZpZWQgc3RyaW5nIHRv
IHVwcGVyY2FzZS4KKyAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgU3RyaW5nIHRvIGJlIGNvbnZl
cnRlZCB0byB1cHBlcmNhc2UuCisgKiBAcmV0dXJucyB7c3RyaW5nfSBVcHBlcmNhc2VkIHN0cmlu
Zy4KKyAqLwordmFyIHVwcGVyY2FzZSA9IGZ1bmN0aW9uKHN0cmluZykge3JldHVybiBpc1N0cmlu
ZyhzdHJpbmcpID8gc3RyaW5nLnRvVXBwZXJDYXNlKCkgOiBzdHJpbmc7fTsKKworCit2YXIgbWFu
dWFsTG93ZXJjYXNlID0gZnVuY3Rpb24ocykgeworICAvKiBqc2hpbnQgYml0d2lzZTogZmFsc2Ug
Ki8KKyAgcmV0dXJuIGlzU3RyaW5nKHMpCisgICAgICA/IHMucmVwbGFjZSgvW0EtWl0vZywgZnVu
Y3Rpb24oY2gpIHtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShjaC5jaGFyQ29kZUF0KDApIHwg
MzIpO30pCisgICAgICA6IHM7Cit9OwordmFyIG1hbnVhbFVwcGVyY2FzZSA9IGZ1bmN0aW9uKHMp
IHsKKyAgLyoganNoaW50IGJpdHdpc2U6IGZhbHNlICovCisgIHJldHVybiBpc1N0cmluZyhzKQor
ICAgICAgPyBzLnJlcGxhY2UoL1thLXpdL2csIGZ1bmN0aW9uKGNoKSB7cmV0dXJuIFN0cmluZy5m
cm9tQ2hhckNvZGUoY2guY2hhckNvZGVBdCgwKSAmIH4zMik7fSkKKyAgICAgIDogczsKK307CisK
KworLy8gU3RyaW5nI3RvTG93ZXJDYXNlIGFuZCBTdHJpbmcjdG9VcHBlckNhc2UgZG9uJ3QgcHJv
ZHVjZSBjb3JyZWN0IHJlc3VsdHMgaW4gYnJvd3NlcnMgd2l0aCBUdXJraXNoCisvLyBsb2NhbGUs
IGZvciB0aGlzIHJlYXNvbiB3ZSBuZWVkIHRvIGRldGVjdCB0aGlzIGNhc2UgYW5kIHJlZGVmaW5l
IGxvd2VyY2FzZS91cHBlcmNhc2UgbWV0aG9kcworLy8gd2l0aCBjb3JyZWN0IGJ1dCBzbG93ZXIg
YWx0ZXJuYXRpdmVzLgoraWYgKCdpJyAhPT0gJ0knLnRvTG93ZXJDYXNlKCkpIHsKKyAgbG93ZXJj
YXNlID0gbWFudWFsTG93ZXJjYXNlOworICB1cHBlcmNhc2UgPSBtYW51YWxVcHBlcmNhc2U7Cit9
CisKKwordmFyCisgICAgbXNpZSwgICAgICAgICAgICAgLy8gaG9sZHMgbWFqb3IgdmVyc2lvbiBu
dW1iZXIgZm9yIElFLCBvciBOYU4gaWYgVUEgaXMgbm90IElFLgorICAgIGpxTGl0ZSwgICAgICAg
ICAgIC8vIGRlbGF5IGJpbmRpbmcgc2luY2UgalF1ZXJ5IGNvdWxkIGJlIGxvYWRlZCBhZnRlciB1
cy4KKyAgICBqUXVlcnksICAgICAgICAgICAvLyBkZWxheSBiaW5kaW5nCisgICAgc2xpY2UgICAg
ICAgICAgICAgPSBbXS5zbGljZSwKKyAgICBzcGxpY2UgICAgICAgICAgICA9IFtdLnNwbGljZSwK
KyAgICBwdXNoICAgICAgICAgICAgICA9IFtdLnB1c2gsCisgICAgdG9TdHJpbmcgICAgICAgICAg
PSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLAorICAgIGdldFByb3RvdHlwZU9mICAgID0gT2Jq
ZWN0LmdldFByb3RvdHlwZU9mLAorICAgIG5nTWluRXJyICAgICAgICAgID0gbWluRXJyKCduZycp
LAorCisgICAgLyoqIEBuYW1lIGFuZ3VsYXIgKi8KKyAgICBhbmd1bGFyICAgICAgICAgICA9IHdp
bmRvdy5hbmd1bGFyIHx8ICh3aW5kb3cuYW5ndWxhciA9IHt9KSwKKyAgICBhbmd1bGFyTW9kdWxl
LAorICAgIHVpZCAgICAgICAgICAgICAgID0gMDsKKworLyoqCisgKiBkb2N1bWVudE1vZGUgaXMg
YW4gSUUtb25seSBwcm9wZXJ0eQorICogaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9s
aWJyYXJ5L2llL2NjMTk2OTg4KHY9dnMuODUpLmFzcHgKKyAqLworbXNpZSA9IGRvY3VtZW50LmRv
Y3VtZW50TW9kZTsKKworCisvKioKKyAqIEBwcml2YXRlCisgKiBAcGFyYW0geyp9IG9iagorICog
QHJldHVybiB7Ym9vbGVhbn0gUmV0dXJucyB0cnVlIGlmIGBvYmpgIGlzIGFuIGFycmF5IG9yIGFy
cmF5LWxpa2Ugb2JqZWN0IChOb2RlTGlzdCwgQXJndW1lbnRzLAorICogICAgICAgICAgICAgICAg
ICAgU3RyaW5nIC4uLikKKyAqLworZnVuY3Rpb24gaXNBcnJheUxpa2Uob2JqKSB7CisgIGlmIChv
YmogPT0gbnVsbCB8fCBpc1dpbmRvdyhvYmopKSB7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisK
KyAgLy8gU3VwcG9ydDogaU9TIDguMiAobm90IHJlcHJvZHVjaWJsZSBpbiBzaW11bGF0b3IpCisg
IC8vICJsZW5ndGgiIGluIG9iaiB1c2VkIHRvIHByZXZlbnQgSklUIGVycm9yIChnaC0xMTUwOCkK
KyAgdmFyIGxlbmd0aCA9ICJsZW5ndGgiIGluIE9iamVjdChvYmopICYmIG9iai5sZW5ndGg7CisK
KyAgaWYgKG9iai5ub2RlVHlwZSA9PT0gTk9ERV9UWVBFX0VMRU1FTlQgJiYgbGVuZ3RoKSB7Cisg
ICAgcmV0dXJuIHRydWU7CisgIH0KKworICByZXR1cm4gaXNTdHJpbmcob2JqKSB8fCBpc0FycmF5
KG9iaikgfHwgbGVuZ3RoID09PSAwIHx8CisgICAgICAgICB0eXBlb2YgbGVuZ3RoID09PSAnbnVt
YmVyJyAmJiBsZW5ndGggPiAwICYmIChsZW5ndGggLSAxKSBpbiBvYmo7Cit9CisKKy8qKgorICog
QG5nZG9jIGZ1bmN0aW9uCisgKiBAbmFtZSBhbmd1bGFyLmZvckVhY2gKKyAqIEBtb2R1bGUgbmcK
KyAqIEBraW5kIGZ1bmN0aW9uCisgKgorICogQGRlc2NyaXB0aW9uCisgKiBJbnZva2VzIHRoZSBg
aXRlcmF0b3JgIGZ1bmN0aW9uIG9uY2UgZm9yIGVhY2ggaXRlbSBpbiBgb2JqYCBjb2xsZWN0aW9u
LCB3aGljaCBjYW4gYmUgZWl0aGVyIGFuCisgKiBvYmplY3Qgb3IgYW4gYXJyYXkuIFRoZSBgaXRl
cmF0b3JgIGZ1bmN0aW9uIGlzIGludm9rZWQgd2l0aCBgaXRlcmF0b3IodmFsdWUsIGtleSwgb2Jq
KWAsIHdoZXJlIGB2YWx1ZWAKKyAqIGlzIHRoZSB2YWx1ZSBvZiBhbiBvYmplY3QgcHJvcGVydHkg
b3IgYW4gYXJyYXkgZWxlbWVudCwgYGtleWAgaXMgdGhlIG9iamVjdCBwcm9wZXJ0eSBrZXkgb3IK
KyAqIGFycmF5IGVsZW1lbnQgaW5kZXggYW5kIG9iaiBpcyB0aGUgYG9iamAgaXRzZWxmLiBTcGVj
aWZ5aW5nIGEgYGNvbnRleHRgIGZvciB0aGUgZnVuY3Rpb24gaXMgb3B0aW9uYWwuCisgKgorICog
SXQgaXMgd29ydGggbm90aW5nIHRoYXQgYC5mb3JFYWNoYCBkb2VzIG5vdCBpdGVyYXRlIG92ZXIg
aW5oZXJpdGVkIHByb3BlcnRpZXMgYmVjYXVzZSBpdCBmaWx0ZXJzCisgKiB1c2luZyB0aGUgYGhh
c093blByb3BlcnR5YCBtZXRob2QuCisgKgorICogVW5saWtlIEVTMjYyJ3MKKyAqIFtBcnJheS5w
cm90b3R5cGUuZm9yRWFjaF0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEt
MjYyLzUuMS8jc2VjLTE1LjQuNC4xOCksCisgKiBQcm92aWRpbmcgJ3VuZGVmaW5lZCcgb3IgJ251
bGwnIHZhbHVlcyBmb3IgYG9iamAgd2lsbCBub3QgdGhyb3cgYSBUeXBlRXJyb3IsIGJ1dCByYXRo
ZXIganVzdAorICogcmV0dXJuIHRoZSB2YWx1ZSBwcm92aWRlZC4KKyAqCisgICBgYGBqcworICAg
ICB2YXIgdmFsdWVzID0ge25hbWU6ICdtaXNrbycsIGdlbmRlcjogJ21hbGUnfTsKKyAgICAgdmFy
IGxvZyA9IFtdOworICAgICBhbmd1bGFyLmZvckVhY2godmFsdWVzLCBmdW5jdGlvbih2YWx1ZSwg
a2V5KSB7CisgICAgICAgdGhpcy5wdXNoKGtleSArICc6ICcgKyB2YWx1ZSk7CisgICAgIH0sIGxv
Zyk7CisgICAgIGV4cGVjdChsb2cpLnRvRXF1YWwoWyduYW1lOiBtaXNrbycsICdnZW5kZXI6IG1h
bGUnXSk7CisgICBgYGAKKyAqCisgKiBAcGFyYW0ge09iamVjdHxBcnJheX0gb2JqIE9iamVjdCB0
byBpdGVyYXRlIG92ZXIuCisgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRvciBJdGVyYXRvciBm
dW5jdGlvbi4KKyAqIEBwYXJhbSB7T2JqZWN0PX0gY29udGV4dCBPYmplY3QgdG8gYmVjb21lIGNv
bnRleHQgKGB0aGlzYCkgZm9yIHRoZSBpdGVyYXRvciBmdW5jdGlvbi4KKyAqIEByZXR1cm5zIHtP
YmplY3R8QXJyYXl9IFJlZmVyZW5jZSB0byBgb2JqYC4KKyAqLworCitmdW5jdGlvbiBmb3JFYWNo
KG9iaiwgaXRlcmF0b3IsIGNvbnRleHQpIHsKKyAgdmFyIGtleSwgbGVuZ3RoOworICBpZiAob2Jq
KSB7CisgICAgaWYgKGlzRnVuY3Rpb24ob2JqKSkgeworICAgICAgZm9yIChrZXkgaW4gb2JqKSB7
CisgICAgICAgIC8vIE5lZWQgdG8gY2hlY2sgaWYgaGFzT3duUHJvcGVydHkgZXhpc3RzLAorICAg
ICAgICAvLyBhcyBvbiBJRTggdGhlIHJlc3VsdCBvZiBxdWVyeVNlbGVjdG9yQWxsIGlzIGFuIG9i
amVjdCB3aXRob3V0IGEgaGFzT3duUHJvcGVydHkgZnVuY3Rpb24KKyAgICAgICAgaWYgKGtleSAh
PSAncHJvdG90eXBlJyAmJiBrZXkgIT0gJ2xlbmd0aCcgJiYga2V5ICE9ICduYW1lJyAmJiAoIW9i
ai5oYXNPd25Qcm9wZXJ0eSB8fCBvYmouaGFzT3duUHJvcGVydHkoa2V5KSkpIHsKKyAgICAgICAg
ICBpdGVyYXRvci5jYWxsKGNvbnRleHQsIG9ialtrZXldLCBrZXksIG9iaik7CisgICAgICAgIH0K
KyAgICAgIH0KKyAgICB9IGVsc2UgaWYgKGlzQXJyYXkob2JqKSB8fCBpc0FycmF5TGlrZShvYmop
KSB7CisgICAgICB2YXIgaXNQcmltaXRpdmUgPSB0eXBlb2Ygb2JqICE9PSAnb2JqZWN0JzsKKyAg
ICAgIGZvciAoa2V5ID0gMCwgbGVuZ3RoID0gb2JqLmxlbmd0aDsga2V5IDwgbGVuZ3RoOyBrZXkr
KykgeworICAgICAgICBpZiAoaXNQcmltaXRpdmUgfHwga2V5IGluIG9iaikgeworICAgICAgICAg
IGl0ZXJhdG9yLmNhbGwoY29udGV4dCwgb2JqW2tleV0sIGtleSwgb2JqKTsKKyAgICAgICAgfQor
ICAgICAgfQorICAgIH0gZWxzZSBpZiAob2JqLmZvckVhY2ggJiYgb2JqLmZvckVhY2ggIT09IGZv
ckVhY2gpIHsKKyAgICAgICAgb2JqLmZvckVhY2goaXRlcmF0b3IsIGNvbnRleHQsIG9iaik7Cisg
ICAgfSBlbHNlIGlmIChpc0JsYW5rT2JqZWN0KG9iaikpIHsKKyAgICAgIC8vIGNyZWF0ZU1hcCgp
IGZhc3QgcGF0aCAtLS0gU2FmZSB0byBhdm9pZCBoYXNPd25Qcm9wZXJ0eSBjaGVjayBiZWNhdXNl
IHByb3RvdHlwZSBjaGFpbiBpcyBlbXB0eQorICAgICAgZm9yIChrZXkgaW4gb2JqKSB7CisgICAg
ICAgIGl0ZXJhdG9yLmNhbGwoY29udGV4dCwgb2JqW2tleV0sIGtleSwgb2JqKTsKKyAgICAgIH0K
KyAgICB9IGVsc2UgaWYgKHR5cGVvZiBvYmouaGFzT3duUHJvcGVydHkgPT09ICdmdW5jdGlvbicp
IHsKKyAgICAgIC8vIFNsb3cgcGF0aCBmb3Igb2JqZWN0cyBpbmhlcml0aW5nIE9iamVjdC5wcm90
b3R5cGUsIGhhc093blByb3BlcnR5IGNoZWNrIG5lZWRlZAorICAgICAgZm9yIChrZXkgaW4gb2Jq
KSB7CisgICAgICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkoa2V5KSkgeworICAgICAgICAgIGl0
ZXJhdG9yLmNhbGwoY29udGV4dCwgb2JqW2tleV0sIGtleSwgb2JqKTsKKyAgICAgICAgfQorICAg
ICAgfQorICAgIH0gZWxzZSB7CisgICAgICAvLyBTbG93IHBhdGggZm9yIG9iamVjdHMgd2hpY2gg
ZG8gbm90IGhhdmUgYSBtZXRob2QgYGhhc093blByb3BlcnR5YAorICAgICAgZm9yIChrZXkgaW4g
b2JqKSB7CisgICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkgeworICAg
ICAgICAgIGl0ZXJhdG9yLmNhbGwoY29udGV4dCwgb2JqW2tleV0sIGtleSwgb2JqKTsKKyAgICAg
ICAgfQorICAgICAgfQorICAgIH0KKyAgfQorICByZXR1cm4gb2JqOworfQorCitmdW5jdGlvbiBm
b3JFYWNoU29ydGVkKG9iaiwgaXRlcmF0b3IsIGNvbnRleHQpIHsKKyAgdmFyIGtleXMgPSBPYmpl
Y3Qua2V5cyhvYmopLnNvcnQoKTsKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsg
aSsrKSB7CisgICAgaXRlcmF0b3IuY2FsbChjb250ZXh0LCBvYmpba2V5c1tpXV0sIGtleXNbaV0p
OworICB9CisgIHJldHVybiBrZXlzOworfQorCisKKy8qKgorICogd2hlbiB1c2luZyBmb3JFYWNo
IHRoZSBwYXJhbXMgYXJlIHZhbHVlLCBrZXksIGJ1dCBpdCBpcyBvZnRlbiB1c2VmdWwgdG8gaGF2
ZSBrZXksIHZhbHVlLgorICogQHBhcmFtIHtmdW5jdGlvbihzdHJpbmcsICopfSBpdGVyYXRvckZu
CisgKiBAcmV0dXJucyB7ZnVuY3Rpb24oKiwgc3RyaW5nKX0KKyAqLworZnVuY3Rpb24gcmV2ZXJz
ZVBhcmFtcyhpdGVyYXRvckZuKSB7CisgIHJldHVybiBmdW5jdGlvbih2YWx1ZSwga2V5KSB7IGl0
ZXJhdG9yRm4oa2V5LCB2YWx1ZSk7IH07Cit9CisKKy8qKgorICogQSBjb25zaXN0ZW50IHdheSBv
ZiBjcmVhdGluZyB1bmlxdWUgSURzIGluIGFuZ3VsYXIuCisgKgorICogVXNpbmcgc2ltcGxlIG51
bWJlcnMgYWxsb3dzIHVzIHRvIGdlbmVyYXRlIDI4LjYgbWlsbGlvbiB1bmlxdWUgaWRzIHBlciBz
ZWNvbmQgZm9yIDEwIHllYXJzIGJlZm9yZQorICogd2UgaGl0IG51bWJlciBwcmVjaXNpb24gaXNz
dWVzIGluIEphdmFTY3JpcHQuCisgKgorICogTWF0aC5wb3coMiw1MykgLyA2MCAvIDYwIC8gMjQg
LyAzNjUgLyAxMCA9IDI4LjZNCisgKgorICogQHJldHVybnMge251bWJlcn0gYW4gdW5pcXVlIGFs
cGhhLW51bWVyaWMgc3RyaW5nCisgKi8KK2Z1bmN0aW9uIG5leHRVaWQoKSB7CisgIHJldHVybiAr
K3VpZDsKK30KKworCisvKioKKyAqIFNldCBvciBjbGVhciB0aGUgaGFzaGtleSBmb3IgYW4gb2Jq
ZWN0LgorICogQHBhcmFtIG9iaiBvYmplY3QKKyAqIEBwYXJhbSBoIHRoZSBoYXNoa2V5ICghdHJ1
dGh5IHRvIGRlbGV0ZSB0aGUgaGFzaGtleSkKKyAqLworZnVuY3Rpb24gc2V0SGFzaEtleShvYmos
IGgpIHsKKyAgaWYgKGgpIHsKKyAgICBvYmouJCRoYXNoS2V5ID0gaDsKKyAgfSBlbHNlIHsKKyAg
ICBkZWxldGUgb2JqLiQkaGFzaEtleTsKKyAgfQorfQorCisKK2Z1bmN0aW9uIGJhc2VFeHRlbmQo
ZHN0LCBvYmpzLCBkZWVwKSB7CisgIHZhciBoID0gZHN0LiQkaGFzaEtleTsKKworICBmb3IgKHZh
ciBpID0gMCwgaWkgPSBvYmpzLmxlbmd0aDsgaSA8IGlpOyArK2kpIHsKKyAgICB2YXIgb2JqID0g
b2Jqc1tpXTsKKyAgICBpZiAoIWlzT2JqZWN0KG9iaikgJiYgIWlzRnVuY3Rpb24ob2JqKSkgY29u
dGludWU7CisgICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmopOworICAgIGZvciAodmFyIGog
PSAwLCBqaiA9IGtleXMubGVuZ3RoOyBqIDwgamo7IGorKykgeworICAgICAgdmFyIGtleSA9IGtl
eXNbal07CisgICAgICB2YXIgc3JjID0gb2JqW2tleV07CisKKyAgICAgIGlmIChkZWVwICYmIGlz
T2JqZWN0KHNyYykpIHsKKyAgICAgICAgaWYgKGlzRGF0ZShzcmMpKSB7CisgICAgICAgICAgZHN0
W2tleV0gPSBuZXcgRGF0ZShzcmMudmFsdWVPZigpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICBpZiAoIWlzT2JqZWN0KGRzdFtrZXldKSkgZHN0W2tleV0gPSBpc0FycmF5KHNyYykgPyBb
XSA6IHt9OworICAgICAgICAgIGJhc2VFeHRlbmQoZHN0W2tleV0sIFtzcmNdLCB0cnVlKTsKKyAg
ICAgICAgfQorICAgICAgfSBlbHNlIHsKKyAgICAgICAgZHN0W2tleV0gPSBzcmM7CisgICAgICB9
CisgICAgfQorICB9CisKKyAgc2V0SGFzaEtleShkc3QsIGgpOworICByZXR1cm4gZHN0OworfQor
CisvKioKKyAqIEBuZ2RvYyBmdW5jdGlvbgorICogQG5hbWUgYW5ndWxhci5leHRlbmQKKyAqIEBt
b2R1bGUgbmcKKyAqIEBraW5kIGZ1bmN0aW9uCisgKgorICogQGRlc2NyaXB0aW9uCisgKiBFeHRl
bmRzIHRoZSBkZXN0aW5hdGlvbiBvYmplY3QgYGRzdGAgYnkgY29weWluZyBvd24gZW51bWVyYWJs
ZSBwcm9wZXJ0aWVzIGZyb20gdGhlIGBzcmNgIG9iamVjdChzKQorICogdG8gYGRzdGAuIFlvdSBj
YW4gc3BlY2lmeSBtdWx0aXBsZSBgc3JjYCBvYmplY3RzLiBJZiB5b3Ugd2FudCB0byBwcmVzZXJ2
ZSBvcmlnaW5hbCBvYmplY3RzLCB5b3UgY2FuIGRvIHNvCisgKiBieSBwYXNzaW5nIGFuIGVtcHR5
IG9iamVjdCBhcyB0aGUgdGFyZ2V0OiBgdmFyIG9iamVjdCA9IGFuZ3VsYXIuZXh0ZW5kKHt9LCBv
YmplY3QxLCBvYmplY3QyKWAuCisgKgorICogKipOb3RlOioqIEtlZXAgaW4gbWluZCB0aGF0IGBh
bmd1bGFyLmV4dGVuZGAgZG9lcyBub3Qgc3VwcG9ydCByZWN1cnNpdmUgbWVyZ2UgKGRlZXAgY29w
eSkuIFVzZQorICoge0BsaW5rIGFuZ3VsYXIubWVyZ2V9IGZvciB0aGlzLgorICoKKyAqIEBwYXJh
bSB7T2JqZWN0fSBkc3QgRGVzdGluYXRpb24gb2JqZWN0LgorICogQHBhcmFtIHsuLi5PYmplY3R9
IHNyYyBTb3VyY2Ugb2JqZWN0KHMpLgorICogQHJldHVybnMge09iamVjdH0gUmVmZXJlbmNlIHRv
IGBkc3RgLgorICovCitmdW5jdGlvbiBleHRlbmQoZHN0KSB7CisgIHJldHVybiBiYXNlRXh0ZW5k
KGRzdCwgc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpLCBmYWxzZSk7Cit9CisKKworLyoqCisqIEBu
Z2RvYyBmdW5jdGlvbgorKiBAbmFtZSBhbmd1bGFyLm1lcmdlCisqIEBtb2R1bGUgbmcKKyogQGtp
bmQgZnVuY3Rpb24KKyoKKyogQGRlc2NyaXB0aW9uCisqIERlZXBseSBleHRlbmRzIHRoZSBkZXN0
aW5hdGlvbiBvYmplY3QgYGRzdGAgYnkgY29weWluZyBvd24gZW51bWVyYWJsZSBwcm9wZXJ0aWVz
IGZyb20gdGhlIGBzcmNgIG9iamVjdChzKQorKiB0byBgZHN0YC4gWW91IGNhbiBzcGVjaWZ5IG11
bHRpcGxlIGBzcmNgIG9iamVjdHMuIElmIHlvdSB3YW50IHRvIHByZXNlcnZlIG9yaWdpbmFsIG9i
amVjdHMsIHlvdSBjYW4gZG8gc28KKyogYnkgcGFzc2luZyBhbiBlbXB0eSBvYmplY3QgYXMgdGhl
IHRhcmdldDogYHZhciBvYmplY3QgPSBhbmd1bGFyLm1lcmdlKHt9LCBvYmplY3QxLCBvYmplY3Qy
KWAuCisqCisqIFVubGlrZSB7QGxpbmsgYW5ndWxhci5leHRlbmQgZXh0ZW5kKCl9LCBgbWVyZ2Uo
KWAgcmVjdXJzaXZlbHkgZGVzY2VuZHMgaW50byBvYmplY3QgcHJvcGVydGllcyBvZiBzb3VyY2UK
Kyogb2JqZWN0cywgcGVyZm9ybWluZyBhIGRlZXAgY29weS4KKyoKKyogQHBhcmFtIHtPYmplY3R9
IGRzdCBEZXN0aW5hdGlvbiBvYmplY3QuCisqIEBwYXJhbSB7Li4uT2JqZWN0fSBzcmMgU291cmNl
IG9iamVjdChzKS4KKyogQHJldHVybnMge09iamVjdH0gUmVmZXJlbmNlIHRvIGBkc3RgLgorKi8K
K2Z1bmN0aW9uIG1lcmdlKGRzdCkgeworICByZXR1cm4gYmFzZUV4dGVuZChkc3QsIHNsaWNlLmNh
bGwoYXJndW1lbnRzLCAxKSwgdHJ1ZSk7Cit9CisKKworCitmdW5jdGlvbiB0b0ludChzdHIpIHsK
KyAgcmV0dXJuIHBhcnNlSW50KHN0ciwgMTApOworfQorCisKK2Z1bmN0aW9uIGluaGVyaXQocGFy
ZW50LCBleHRyYSkgeworICByZXR1cm4gZXh0ZW5kKE9iamVjdC5jcmVhdGUocGFyZW50KSwgZXh0
cmEpOworfQorCisvKioKKyAqIEBuZ2RvYyBmdW5jdGlvbgorICogQG5hbWUgYW5ndWxhci5ub29w
CisgKiBAbW9kdWxlIG5nCisgKiBAa2luZCBmdW5jdGlvbgorICoKKyAqIEBkZXNjcmlwdGlvbgor
ICogQSBmdW5jdGlvbiB0aGF0IHBlcmZvcm1zIG5vIG9wZXJhdGlvbnMuIFRoaXMgZnVuY3Rpb24g
Y2FuIGJlIHVzZWZ1bCB3aGVuIHdyaXRpbmcgY29kZSBpbiB0aGUKKyAqIGZ1bmN0aW9uYWwgc3R5
bGUuCisgICBgYGBqcworICAgICBmdW5jdGlvbiBmb28oY2FsbGJhY2spIHsKKyAgICAgICB2YXIg
cmVzdWx0ID0gY2FsY3VsYXRlUmVzdWx0KCk7CisgICAgICAgKGNhbGxiYWNrIHx8IGFuZ3VsYXIu
bm9vcCkocmVzdWx0KTsKKyAgICAgfQorICAgYGBgCisgKi8KK2Z1bmN0aW9uIG5vb3AoKSB7fQor
bm9vcC4kaW5qZWN0ID0gW107CisKKworLyoqCisgKiBAbmdkb2MgZnVuY3Rpb24KKyAqIEBuYW1l
IGFuZ3VsYXIuaWRlbnRpdHkKKyAqIEBtb2R1bGUgbmcKKyAqIEBraW5kIGZ1bmN0aW9uCisgKgor
ICogQGRlc2NyaXB0aW9uCisgKiBBIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBpdHMgZmlyc3QgYXJn
dW1lbnQuIFRoaXMgZnVuY3Rpb24gaXMgdXNlZnVsIHdoZW4gd3JpdGluZyBjb2RlIGluIHRoZQor
ICogZnVuY3Rpb25hbCBzdHlsZS4KKyAqCisgICBgYGBqcworICAgICBmdW5jdGlvbiB0cmFuc2Zv
cm1lcih0cmFuc2Zvcm1hdGlvbkZuLCB2YWx1ZSkgeworICAgICAgIHJldHVybiAodHJhbnNmb3Jt
YXRpb25GbiB8fCBhbmd1bGFyLmlkZW50aXR5KSh2YWx1ZSk7CisgICAgIH07CisgICBgYGAKKyAg
KiBAcGFyYW0geyp9IHZhbHVlIHRvIGJlIHJldHVybmVkLgorICAqIEByZXR1cm5zIHsqfSB0aGUg
dmFsdWUgcGFzc2VkIGluLgorICovCitmdW5jdGlvbiBpZGVudGl0eSgkKSB7cmV0dXJuICQ7fQor
aWRlbnRpdHkuJGluamVjdCA9IFtdOworCisKK2Z1bmN0aW9uIHZhbHVlRm4odmFsdWUpIHtyZXR1
cm4gZnVuY3Rpb24oKSB7cmV0dXJuIHZhbHVlO307fQorCitmdW5jdGlvbiBoYXNDdXN0b21Ub1N0
cmluZyhvYmopIHsKKyAgcmV0dXJuIGlzRnVuY3Rpb24ob2JqLnRvU3RyaW5nKSAmJiBvYmoudG9T
dHJpbmcgIT09IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7Cit9CisKKworLyoqCisgKiBAbmdk
b2MgZnVuY3Rpb24KKyAqIEBuYW1lIGFuZ3VsYXIuaXNVbmRlZmluZWQKKyAqIEBtb2R1bGUgbmcK
KyAqIEBraW5kIGZ1bmN0aW9uCisgKgorICogQGRlc2NyaXB0aW9uCisgKiBEZXRlcm1pbmVzIGlm
IGEgcmVmZXJlbmNlIGlzIHVuZGVmaW5lZC4KKyAqCisgKiBAcGFyYW0geyp9IHZhbHVlIFJlZmVy
ZW5jZSB0byBjaGVjay4KKyAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIGB2YWx1ZWAgaXMg
dW5kZWZpbmVkLgorICovCitmdW5jdGlvbiBpc1VuZGVmaW5lZCh2YWx1ZSkge3JldHVybiB0eXBl
b2YgdmFsdWUgPT09ICd1bmRlZmluZWQnO30KKworCisvKioKKyAqIEBuZ2RvYyBmdW5jdGlvbgor
ICogQG5hbWUgYW5ndWxhci5pc0RlZmluZWQKKyAqIEBtb2R1bGUgbmcKKyAqIEBraW5kIGZ1bmN0
aW9uCisgKgorICogQGRlc2NyaXB0aW9uCisgKiBEZXRlcm1pbmVzIGlmIGEgcmVmZXJlbmNlIGlz
IGRlZmluZWQuCisgKgorICogQHBhcmFtIHsqfSB2YWx1ZSBSZWZlcmVuY2UgdG8gY2hlY2suCisg
KiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiBgdmFsdWVgIGlzIGRlZmluZWQuCisgKi8KK2Z1
bmN0aW9uIGlzRGVmaW5lZCh2YWx1ZSkge3JldHVybiB0eXBlb2YgdmFsdWUgIT09ICd1bmRlZmlu
ZWQnO30KKworCisvKioKKyAqIEBuZ2RvYyBmdW5jdGlvbgorICogQG5hbWUgYW5ndWxhci5pc09i
amVjdAorICogQG1vZHVsZSBuZworICogQGtpbmQgZnVuY3Rpb24KKyAqCisgKiBAZGVzY3JpcHRp
b24KKyAqIERldGVybWluZXMgaWYgYSByZWZlcmVuY2UgaXMgYW4gYE9iamVjdGAuIFVubGlrZSBg
dHlwZW9mYCBpbiBKYXZhU2NyaXB0LCBgbnVsbGBzIGFyZSBub3QKKyAqIGNvbnNpZGVyZWQgdG8g
YmUgb2JqZWN0cy4gTm90ZSB0aGF0IEphdmFTY3JpcHQgYXJyYXlzIGFyZSBvYmplY3RzLgorICoK
KyAqIEBwYXJhbSB7Kn0gdmFsdWUgUmVmZXJlbmNlIHRvIGNoZWNrLgorICogQHJldHVybnMge2Jv
b2xlYW59IFRydWUgaWYgYHZhbHVlYCBpcyBhbiBgT2JqZWN0YCBidXQgbm90IGBudWxsYC4KKyAq
LworZnVuY3Rpb24gaXNPYmplY3QodmFsdWUpIHsKKyAgLy8gaHR0cDovL2pzcGVyZi5jb20vaXNv
YmplY3Q0CisgIHJldHVybiB2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmpl
Y3QnOworfQorCisKKy8qKgorICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYW4gb2JqZWN0IHdp
dGggYSBudWxsIHByb3RvdHlwZQorICoKKyAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIGB2
YWx1ZWAgaXMgYW4gYE9iamVjdGAgd2l0aCBhIG51bGwgcHJvdG90eXBlCisgKi8KK2Z1bmN0aW9u
IGlzQmxhbmtPYmplY3QodmFsdWUpIHsKKyAgcmV0dXJuIHZhbHVlICE9PSBudWxsICYmIHR5cGVv
ZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgIWdldFByb3RvdHlwZU9mKHZhbHVlKTsKK30KKworCisv
KioKKyAqIEBuZ2RvYyBmdW5jdGlvbgorICogQG5hbWUgYW5ndWxhci5pc1N0cmluZworICogQG1v
ZHVsZSBuZworICogQGtpbmQgZnVuY3Rpb24KKyAqCisgKiBAZGVzY3JpcHRpb24KKyAqIERldGVy
bWluZXMgaWYgYSByZWZlcmVuY2UgaXMgYSBgU3RyaW5nYC4KKyAqCisgKiBAcGFyYW0geyp9IHZh
bHVlIFJlZmVyZW5jZSB0byBjaGVjay4KKyAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIGB2
YWx1ZWAgaXMgYSBgU3RyaW5nYC4KKyAqLworZnVuY3Rpb24gaXNTdHJpbmcodmFsdWUpIHtyZXR1
cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJzt9CisKKworLyoqCisgKiBAbmdkb2MgZnVuY3Rp
b24KKyAqIEBuYW1lIGFuZ3VsYXIuaXNOdW1iZXIKKyAqIEBtb2R1bGUgbmcKKyAqIEBraW5kIGZ1
bmN0aW9uCisgKgorICogQGRlc2NyaXB0aW9uCisgKiBEZXRlcm1pbmVzIGlmIGEgcmVmZXJlbmNl
IGlzIGEgYE51bWJlcmAuCisgKgorICogVGhpcyBpbmNsdWRlcyB0aGUgInNwZWNpYWwiIG51bWJl
cnMgYE5hTmAsIGArSW5maW5pdHlgIGFuZCBgLUluZmluaXR5YC4KKyAqCisgKiBJZiB5b3Ugd2lz
aCB0byBleGNsdWRlIHRoZXNlIHRoZW4geW91IGNhbiB1c2UgdGhlIG5hdGl2ZQorICogW2Bpc0Zp
bml0ZSddKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFT
Y3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL2lzRmluaXRlKQorICogbWV0aG9kLgorICoK
KyAqIEBwYXJhbSB7Kn0gdmFsdWUgUmVmZXJlbmNlIHRvIGNoZWNrLgorICogQHJldHVybnMge2Jv
b2xlYW59IFRydWUgaWYgYHZhbHVlYCBpcyBhIGBOdW1iZXJgLgorICovCitmdW5jdGlvbiBpc051
bWJlcih2YWx1ZSkge3JldHVybiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInO30KKworCisvKioK
KyAqIEBuZ2RvYyBmdW5jdGlvbgorICogQG5hbWUgYW5ndWxhci5pc0RhdGUKKyAqIEBtb2R1bGUg
bmcKKyAqIEBraW5kIGZ1bmN0aW9uCisgKgorICogQGRlc2NyaXB0aW9uCisgKiBEZXRlcm1pbmVz
IGlmIGEgdmFsdWUgaXMgYSBkYXRlLgorICoKKyAqIEBwYXJhbSB7Kn0gdmFsdWUgUmVmZXJlbmNl
IHRvIGNoZWNrLgorICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgYHZhbHVlYCBpcyBhIGBE
YXRlYC4KKyAqLworZnVuY3Rpb24gaXNEYXRlKHZhbHVlKSB7CisgIHJldHVybiB0b1N0cmluZy5j
YWxsKHZhbHVlKSA9PT0gJ1tvYmplY3QgRGF0ZV0nOworfQorCisKKy8qKgorICogQG5nZG9jIGZ1
bmN0aW9uCisgKiBAbmFtZSBhbmd1bGFyLmlzQXJyYXkKKyAqIEBtb2R1bGUgbmcKKyAqIEBraW5k
IGZ1bmN0aW9uCisgKgorICogQGRlc2NyaXB0aW9uCisgKiBEZXRlcm1pbmVzIGlmIGEgcmVmZXJl
bmNlIGlzIGFuIGBBcnJheWAuCisgKgorICogQHBhcmFtIHsqfSB2YWx1ZSBSZWZlcmVuY2UgdG8g
Y2hlY2suCisgKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiBgdmFsdWVgIGlzIGFuIGBBcnJh
eWAuCisgKi8KK3ZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheTsKKworLyoqCisgKiBAbmdkb2Mg
ZnVuY3Rpb24KKyAqIEBuYW1lIGFuZ3VsYXIuaXNGdW5jdGlvbgorICogQG1vZHVsZSBuZworICog
QGtpbmQgZnVuY3Rpb24KKyAqCisgKiBAZGVzY3JpcHRpb24KKyAqIERldGVybWluZXMgaWYgYSBy
ZWZlcmVuY2UgaXMgYSBgRnVuY3Rpb25gLgorICoKKyAqIEBwYXJhbSB7Kn0gdmFsdWUgUmVmZXJl
bmNlIHRvIGNoZWNrLgorICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgYHZhbHVlYCBpcyBh
IGBGdW5jdGlvbmAuCisgKi8KK2Z1bmN0aW9uIGlzRnVuY3Rpb24odmFsdWUpIHtyZXR1cm4gdHlw
ZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nO30KKworCisvKioKKyAqIERldGVybWluZXMgaWYgYSB2
YWx1ZSBpcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBvYmplY3QuCisgKgorICogQHByaXZhdGUKKyAq
IEBwYXJhbSB7Kn0gdmFsdWUgUmVmZXJlbmNlIHRvIGNoZWNrLgorICogQHJldHVybnMge2Jvb2xl
YW59IFRydWUgaWYgYHZhbHVlYCBpcyBhIGBSZWdFeHBgLgorICovCitmdW5jdGlvbiBpc1JlZ0V4
cCh2YWx1ZSkgeworICByZXR1cm4gdG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT09ICdbb2JqZWN0IFJl
Z0V4cF0nOworfQorCisKKy8qKgorICogQ2hlY2tzIGlmIGBvYmpgIGlzIGEgd2luZG93IG9iamVj
dC4KKyAqCisgKiBAcHJpdmF0ZQorICogQHBhcmFtIHsqfSBvYmogT2JqZWN0IHRvIGNoZWNrCisg
KiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiBgb2JqYCBpcyBhIHdpbmRvdyBvYmouCisgKi8K
K2Z1bmN0aW9uIGlzV2luZG93KG9iaikgeworICByZXR1cm4gb2JqICYmIG9iai53aW5kb3cgPT09
IG9iajsKK30KKworCitmdW5jdGlvbiBpc1Njb3BlKG9iaikgeworICByZXR1cm4gb2JqICYmIG9i
ai4kZXZhbEFzeW5jICYmIG9iai4kd2F0Y2g7Cit9CisKKworZnVuY3Rpb24gaXNGaWxlKG9iaikg
eworICByZXR1cm4gdG9TdHJpbmcuY2FsbChvYmopID09PSAnW29iamVjdCBGaWxlXSc7Cit9CisK
KworZnVuY3Rpb24gaXNGb3JtRGF0YShvYmopIHsKKyAgcmV0dXJuIHRvU3RyaW5nLmNhbGwob2Jq
KSA9PT0gJ1tvYmplY3QgRm9ybURhdGFdJzsKK30KKworCitmdW5jdGlvbiBpc0Jsb2Iob2JqKSB7
CisgIHJldHVybiB0b1N0cmluZy5jYWxsKG9iaikgPT09ICdbb2JqZWN0IEJsb2JdJzsKK30KKwor
CitmdW5jdGlvbiBpc0Jvb2xlYW4odmFsdWUpIHsKKyAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0g
J2Jvb2xlYW4nOworfQorCisKK2Z1bmN0aW9uIGlzUHJvbWlzZUxpa2Uob2JqKSB7CisgIHJldHVy
biBvYmogJiYgaXNGdW5jdGlvbihvYmoudGhlbik7Cit9CisKKwordmFyIFRZUEVEX0FSUkFZX1JF
R0VYUCA9IC9eXFtvYmplY3QgKFVpbnQ4KENsYW1wZWQpPyl8KFVpbnQxNil8KFVpbnQzMil8KElu
dDgpfChJbnQxNil8KEludDMyKXwoRmxvYXQoMzIpfCg2NCkpQXJyYXlcXSQvOworZnVuY3Rpb24g
aXNUeXBlZEFycmF5KHZhbHVlKSB7CisgIHJldHVybiBUWVBFRF9BUlJBWV9SRUdFWFAudGVzdCh0
b1N0cmluZy5jYWxsKHZhbHVlKSk7Cit9CisKKwordmFyIHRyaW0gPSBmdW5jdGlvbih2YWx1ZSkg
eworICByZXR1cm4gaXNTdHJpbmcodmFsdWUpID8gdmFsdWUudHJpbSgpIDogdmFsdWU7Cit9Owor
CisvLyBDb3BpZWQgZnJvbToKKy8vIGh0dHA6Ly9kb2NzLmNsb3N1cmUtbGlicmFyeS5nb29nbGVj
b2RlLmNvbS9naXQvbG9jYWxfY2xvc3VyZV9nb29nX3N0cmluZ19zdHJpbmcuanMuc291cmNlLmh0
bWwjbGluZTEwMjEKKy8vIFByZXJlcTogcyBpcyBhIHN0cmluZy4KK3ZhciBlc2NhcGVGb3JSZWdl
eHAgPSBmdW5jdGlvbihzKSB7CisgIHJldHVybiBzLnJlcGxhY2UoLyhbLSgpXFtcXXt9Kz8qLiRc
XnwsOiM8IVxcXSkvZywgJ1xcJDEnKS4KKyAgICAgICAgICAgcmVwbGFjZSgvXHgwOC9nLCAnXFx4
MDgnKTsKK307CisKKworLyoqCisgKiBAbmdkb2MgZnVuY3Rpb24KKyAqIEBuYW1lIGFuZ3VsYXIu
aXNFbGVtZW50CisgKiBAbW9kdWxlIG5nCisgKiBAa2luZCBmdW5jdGlvbgorICoKKyAqIEBkZXNj
cmlwdGlvbgorICogRGV0ZXJtaW5lcyBpZiBhIHJlZmVyZW5jZSBpcyBhIERPTSBlbGVtZW50IChv
ciB3cmFwcGVkIGpRdWVyeSBlbGVtZW50KS4KKyAqCisgKiBAcGFyYW0geyp9IHZhbHVlIFJlZmVy
ZW5jZSB0byBjaGVjay4KKyAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIGB2YWx1ZWAgaXMg
YSBET00gZWxlbWVudCAob3Igd3JhcHBlZCBqUXVlcnkgZWxlbWVudCkuCisgKi8KK2Z1bmN0aW9u
IGlzRWxlbWVudChub2RlKSB7CisgIHJldHVybiAhIShub2RlICYmCisgICAgKG5vZGUubm9kZU5h
bWUgIC8vIHdlIGFyZSBhIGRpcmVjdCBlbGVtZW50CisgICAgfHwgKG5vZGUucHJvcCAmJiBub2Rl
LmF0dHIgJiYgbm9kZS5maW5kKSkpOyAgLy8gd2UgaGF2ZSBhbiBvbiBhbmQgZmluZCBtZXRob2Qg
cGFydCBvZiBqUXVlcnkgQVBJCit9CisKKy8qKgorICogQHBhcmFtIHN0ciAna2V5MSxrZXkyLC4u
LicKKyAqIEByZXR1cm5zIHtvYmplY3R9IGluIHRoZSBmb3JtIG9mIHtrZXkxOnRydWUsIGtleTI6
dHJ1ZSwgLi4ufQorICovCitmdW5jdGlvbiBtYWtlTWFwKHN0cikgeworICB2YXIgb2JqID0ge30s
IGl0ZW1zID0gc3RyLnNwbGl0KCIsIiksIGk7CisgIGZvciAoaSA9IDA7IGkgPCBpdGVtcy5sZW5n
dGg7IGkrKykgeworICAgIG9ialtpdGVtc1tpXV0gPSB0cnVlOworICB9CisgIHJldHVybiBvYmo7
Cit9CisKKworZnVuY3Rpb24gbm9kZU5hbWVfKGVsZW1lbnQpIHsKKyAgcmV0dXJuIGxvd2VyY2Fz
ZShlbGVtZW50Lm5vZGVOYW1lIHx8IChlbGVtZW50WzBdICYmIGVsZW1lbnRbMF0ubm9kZU5hbWUp
KTsKK30KKworZnVuY3Rpb24gaW5jbHVkZXMoYXJyYXksIG9iaikgeworICByZXR1cm4gQXJyYXku
cHJvdG90eXBlLmluZGV4T2YuY2FsbChhcnJheSwgb2JqKSAhPSAtMTsKK30KKworZnVuY3Rpb24g
YXJyYXlSZW1vdmUoYXJyYXksIHZhbHVlKSB7CisgIHZhciBpbmRleCA9IGFycmF5LmluZGV4T2Yo
dmFsdWUpOworICBpZiAoaW5kZXggPj0gMCkgeworICAgIGFycmF5LnNwbGljZShpbmRleCwgMSk7
CisgIH0KKyAgcmV0dXJuIGluZGV4OworfQorCisvKioKKyAqIEBuZ2RvYyBmdW5jdGlvbgorICog
QG5hbWUgYW5ndWxhci5jb3B5CisgKiBAbW9kdWxlIG5nCisgKiBAa2luZCBmdW5jdGlvbgorICoK
KyAqIEBkZXNjcmlwdGlvbgorICogQ3JlYXRlcyBhIGRlZXAgY29weSBvZiBgc291cmNlYCwgd2hp
Y2ggc2hvdWxkIGJlIGFuIG9iamVjdCBvciBhbiBhcnJheS4KKyAqCisgKiAqIElmIG5vIGRlc3Rp
bmF0aW9uIGlzIHN1cHBsaWVkLCBhIGNvcHkgb2YgdGhlIG9iamVjdCBvciBhcnJheSBpcyBjcmVh
dGVkLgorICogKiBJZiBhIGRlc3RpbmF0aW9uIGlzIHByb3ZpZGVkLCBhbGwgb2YgaXRzIGVsZW1l
bnRzIChmb3IgYXJyYXlzKSBvciBwcm9wZXJ0aWVzIChmb3Igb2JqZWN0cykKKyAqICAgYXJlIGRl
bGV0ZWQgYW5kIHRoZW4gYWxsIGVsZW1lbnRzL3Byb3BlcnRpZXMgZnJvbSB0aGUgc291cmNlIGFy
ZSBjb3BpZWQgdG8gaXQuCisgKiAqIElmIGBzb3VyY2VgIGlzIG5vdCBhbiBvYmplY3Qgb3IgYXJy
YXkgKGluYy4gYG51bGxgIGFuZCBgdW5kZWZpbmVkYCksIGBzb3VyY2VgIGlzIHJldHVybmVkLgor
ICogKiBJZiBgc291cmNlYCBpcyBpZGVudGljYWwgdG8gJ2Rlc3RpbmF0aW9uJyBhbiBleGNlcHRp
b24gd2lsbCBiZSB0aHJvd24uCisgKgorICogQHBhcmFtIHsqfSBzb3VyY2UgVGhlIHNvdXJjZSB0
aGF0IHdpbGwgYmUgdXNlZCB0byBtYWtlIGEgY29weS4KKyAqICAgICAgICAgICAgICAgICAgIENh
biBiZSBhbnkgdHlwZSwgaW5jbHVkaW5nIHByaW1pdGl2ZXMsIGBudWxsYCwgYW5kIGB1bmRlZmlu
ZWRgLgorICogQHBhcmFtIHsoT2JqZWN0fEFycmF5KT19IGRlc3RpbmF0aW9uIERlc3RpbmF0aW9u
IGludG8gd2hpY2ggdGhlIHNvdXJjZSBpcyBjb3BpZWQuIElmCisgKiAgICAgcHJvdmlkZWQsIG11
c3QgYmUgb2YgdGhlIHNhbWUgdHlwZSBhcyBgc291cmNlYC4KKyAqIEByZXR1cm5zIHsqfSBUaGUg
Y29weSBvciB1cGRhdGVkIGBkZXN0aW5hdGlvbmAsIGlmIGBkZXN0aW5hdGlvbmAgd2FzIHNwZWNp
ZmllZC4KKyAqCisgKiBAZXhhbXBsZQorIDxleGFtcGxlIG1vZHVsZT0iY29weUV4YW1wbGUiPgor
IDxmaWxlIG5hbWU9ImluZGV4Lmh0bWwiPgorIDxkaXYgbmctY29udHJvbGxlcj0iRXhhbXBsZUNv
bnRyb2xsZXIiPgorIDxmb3JtIG5vdmFsaWRhdGUgY2xhc3M9InNpbXBsZS1mb3JtIj4KKyBOYW1l
OiA8aW5wdXQgdHlwZT0idGV4dCIgbmctbW9kZWw9InVzZXIubmFtZSIgLz48YnIgLz4KKyBFLW1h
aWw6IDxpbnB1dCB0eXBlPSJlbWFpbCIgbmctbW9kZWw9InVzZXIuZW1haWwiIC8+PGJyIC8+Cisg
R2VuZGVyOiA8aW5wdXQgdHlwZT0icmFkaW8iIG5nLW1vZGVsPSJ1c2VyLmdlbmRlciIgdmFsdWU9
Im1hbGUiIC8+bWFsZQorIDxpbnB1dCB0eXBlPSJyYWRpbyIgbmctbW9kZWw9InVzZXIuZ2VuZGVy
IiB2YWx1ZT0iZmVtYWxlIiAvPmZlbWFsZTxiciAvPgorIDxidXR0b24gbmctY2xpY2s9InJlc2V0
KCkiPlJFU0VUPC9idXR0b24+CisgPGJ1dHRvbiBuZy1jbGljaz0idXBkYXRlKHVzZXIpIj5TQVZF
PC9idXR0b24+CisgPC9mb3JtPgorIDxwcmU+Zm9ybSA9IHt7dXNlciB8IGpzb259fTwvcHJlPgor
IDxwcmU+bWFzdGVyID0ge3ttYXN0ZXIgfCBqc29ufX08L3ByZT4KKyA8L2Rpdj4KKworIDxzY3Jp
cHQ+CisgIGFuZ3VsYXIubW9kdWxlKCdjb3B5RXhhbXBsZScsIFtdKQorICAgIC5jb250cm9sbGVy
KCdFeGFtcGxlQ29udHJvbGxlcicsIFsnJHNjb3BlJywgZnVuY3Rpb24oJHNjb3BlKSB7CisgICAg
ICAkc2NvcGUubWFzdGVyPSB7fTsKKworICAgICAgJHNjb3BlLnVwZGF0ZSA9IGZ1bmN0aW9uKHVz
ZXIpIHsKKyAgICAgICAgLy8gRXhhbXBsZSB3aXRoIDEgYXJndW1lbnQKKyAgICAgICAgJHNjb3Bl
Lm1hc3Rlcj0gYW5ndWxhci5jb3B5KHVzZXIpOworICAgICAgfTsKKworICAgICAgJHNjb3BlLnJl
c2V0ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIC8vIEV4YW1wbGUgd2l0aCAyIGFyZ3VtZW50cwor
ICAgICAgICBhbmd1bGFyLmNvcHkoJHNjb3BlLm1hc3RlciwgJHNjb3BlLnVzZXIpOworICAgICAg
fTsKKworICAgICAgJHNjb3BlLnJlc2V0KCk7CisgICAgfV0pOworIDwvc2NyaXB0PgorIDwvZmls
ZT4KKyA8L2V4YW1wbGU+CisgKi8KK2Z1bmN0aW9uIGNvcHkoc291cmNlLCBkZXN0aW5hdGlvbiwg
c3RhY2tTb3VyY2UsIHN0YWNrRGVzdCkgeworICBpZiAoaXNXaW5kb3coc291cmNlKSB8fCBpc1Nj
b3BlKHNvdXJjZSkpIHsKKyAgICB0aHJvdyBuZ01pbkVycignY3B3cycsCisgICAgICAiQ2FuJ3Qg
Y29weSEgTWFraW5nIGNvcGllcyBvZiBXaW5kb3cgb3IgU2NvcGUgaW5zdGFuY2VzIGlzIG5vdCBz
dXBwb3J0ZWQuIik7CisgIH0KKyAgaWYgKGlzVHlwZWRBcnJheShkZXN0aW5hdGlvbikpIHsKKyAg
ICB0aHJvdyBuZ01pbkVycignY3B0YScsCisgICAgICAiQ2FuJ3QgY29weSEgVHlwZWRBcnJheSBk
ZXN0aW5hdGlvbiBjYW5ub3QgYmUgbXV0YXRlZC4iKTsKKyAgfQorCisgIGlmICghZGVzdGluYXRp
b24pIHsKKyAgICBkZXN0aW5hdGlvbiA9IHNvdXJjZTsKKyAgICBpZiAoaXNPYmplY3Qoc291cmNl
KSkgeworICAgICAgdmFyIGluZGV4OworICAgICAgaWYgKHN0YWNrU291cmNlICYmIChpbmRleCA9
IHN0YWNrU291cmNlLmluZGV4T2Yoc291cmNlKSkgIT09IC0xKSB7CisgICAgICAgIHJldHVybiBz
dGFja0Rlc3RbaW5kZXhdOworICAgICAgfQorCisgICAgICAvLyBUeXBlZEFycmF5LCBEYXRlIGFu
ZCBSZWdFeHAgaGF2ZSBzcGVjaWZpYyBjb3B5IGZ1bmN0aW9uYWxpdHkgYW5kIG11c3QgYmUKKyAg
ICAgIC8vIHB1c2hlZCBvbnRvIHRoZSBzdGFjayBiZWZvcmUgcmV0dXJuaW5nLgorICAgICAgLy8g
QXJyYXkgYW5kIG90aGVyIG9iamVjdHMgY3JlYXRlIHRoZSBiYXNlIG9iamVjdCBhbmQgcmVjdXJz
ZSB0byBjb3B5IGNoaWxkCisgICAgICAvLyBvYmplY3RzLiBUaGUgYXJyYXkvb2JqZWN0IHdpbGwg
YmUgcHVzaGVkIG9udG8gdGhlIHN0YWNrIHdoZW4gcmVjdXJzZWQuCisgICAgICBpZiAoaXNBcnJh
eShzb3VyY2UpKSB7CisgICAgICAgIHJldHVybiBjb3B5KHNvdXJjZSwgW10sIHN0YWNrU291cmNl
LCBzdGFja0Rlc3QpOworICAgICAgfSBlbHNlIGlmIChpc1R5cGVkQXJyYXkoc291cmNlKSkgewor
ICAgICAgICBkZXN0aW5hdGlvbiA9IG5ldyBzb3VyY2UuY29uc3RydWN0b3Ioc291cmNlKTsKKyAg
ICAgIH0gZWxzZSBpZiAoaXNEYXRlKHNvdXJjZSkpIHsKKyAgICAgICAgZGVzdGluYXRpb24gPSBu
ZXcgRGF0ZShzb3VyY2UuZ2V0VGltZSgpKTsKKyAgICAgIH0gZWxzZSBpZiAoaXNSZWdFeHAoc291
cmNlKSkgeworICAgICAgICBkZXN0aW5hdGlvbiA9IG5ldyBSZWdFeHAoc291cmNlLnNvdXJjZSwg
c291cmNlLnRvU3RyaW5nKCkubWF0Y2goL1teXC9dKiQvKVswXSk7CisgICAgICAgIGRlc3RpbmF0
aW9uLmxhc3RJbmRleCA9IHNvdXJjZS5sYXN0SW5kZXg7CisgICAgICB9IGVsc2UgeworICAgICAg
ICB2YXIgZW1wdHlPYmplY3QgPSBPYmplY3QuY3JlYXRlKGdldFByb3RvdHlwZU9mKHNvdXJjZSkp
OworICAgICAgICByZXR1cm4gY29weShzb3VyY2UsIGVtcHR5T2JqZWN0LCBzdGFja1NvdXJjZSwg
c3RhY2tEZXN0KTsKKyAgICAgIH0KKworICAgICAgaWYgKHN0YWNrRGVzdCkgeworICAgICAgICBz
dGFja1NvdXJjZS5wdXNoKHNvdXJjZSk7CisgICAgICAgIHN0YWNrRGVzdC5wdXNoKGRlc3RpbmF0
aW9uKTsKKyAgICAgIH0KKyAgICB9CisgIH0gZWxzZSB7CisgICAgaWYgKHNvdXJjZSA9PT0gZGVz
dGluYXRpb24pIHRocm93IG5nTWluRXJyKCdjcGknLAorICAgICAgIkNhbid0IGNvcHkhIFNvdXJj
ZSBhbmQgZGVzdGluYXRpb24gYXJlIGlkZW50aWNhbC4iKTsKKworICAgIHN0YWNrU291cmNlID0g
c3RhY2tTb3VyY2UgfHwgW107CisgICAgc3RhY2tEZXN0ID0gc3RhY2tEZXN0IHx8IFtdOworCisg
ICAgaWYgKGlzT2JqZWN0KHNvdXJjZSkpIHsKKyAgICAgIHN0YWNrU291cmNlLnB1c2goc291cmNl
KTsKKyAgICAgIHN0YWNrRGVzdC5wdXNoKGRlc3RpbmF0aW9uKTsKKyAgICB9CisKKyAgICB2YXIg
cmVzdWx0LCBrZXk7CisgICAgaWYgKGlzQXJyYXkoc291cmNlKSkgeworICAgICAgZGVzdGluYXRp
b24ubGVuZ3RoID0gMDsKKyAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc291cmNlLmxlbmd0aDsg
aSsrKSB7CisgICAgICAgIGRlc3RpbmF0aW9uLnB1c2goY29weShzb3VyY2VbaV0sIG51bGwsIHN0
YWNrU291cmNlLCBzdGFja0Rlc3QpKTsKKyAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgdmFy
IGggPSBkZXN0aW5hdGlvbi4kJGhhc2hLZXk7CisgICAgICBpZiAoaXNBcnJheShkZXN0aW5hdGlv
bikpIHsKKyAgICAgICAgZGVzdGluYXRpb24ubGVuZ3RoID0gMDsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIGZvckVhY2goZGVzdGluYXRpb24sIGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHsKKyAgICAg
ICAgICBkZWxldGUgZGVzdGluYXRpb25ba2V5XTsKKyAgICAgICAgfSk7CisgICAgICB9CisgICAg
ICBpZiAoaXNCbGFua09iamVjdChzb3VyY2UpKSB7CisgICAgICAgIC8vIGNyZWF0ZU1hcCgpIGZh
c3QgcGF0aCAtLS0gU2FmZSB0byBhdm9pZCBoYXNPd25Qcm9wZXJ0eSBjaGVjayBiZWNhdXNlIHBy
b3RvdHlwZSBjaGFpbiBpcyBlbXB0eQorICAgICAgICBmb3IgKGtleSBpbiBzb3VyY2UpIHsKKyAg
ICAgICAgICBkZXN0aW5hdGlvbltrZXldID0gY29weShzb3VyY2Vba2V5XSwgbnVsbCwgc3RhY2tT
b3VyY2UsIHN0YWNrRGVzdCk7CisgICAgICAgIH0KKyAgICAgIH0gZWxzZSBpZiAoc291cmNlICYm
IHR5cGVvZiBzb3VyY2UuaGFzT3duUHJvcGVydHkgPT09ICdmdW5jdGlvbicpIHsKKyAgICAgICAg
Ly8gU2xvdyBwYXRoLCB3aGljaCBtdXN0IHJlbHkgb24gaGFzT3duUHJvcGVydHkKKyAgICAgICAg
Zm9yIChrZXkgaW4gc291cmNlKSB7CisgICAgICAgICAgaWYgKHNvdXJjZS5oYXNPd25Qcm9wZXJ0
eShrZXkpKSB7CisgICAgICAgICAgICBkZXN0aW5hdGlvbltrZXldID0gY29weShzb3VyY2Vba2V5
XSwgbnVsbCwgc3RhY2tTb3VyY2UsIHN0YWNrRGVzdCk7CisgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICB9IGVsc2UgeworICAgICAgICAvLyBTbG93ZXN0IHBhdGggLS0tIGhhc093blByb3Bl
cnR5IGNhbid0IGJlIGNhbGxlZCBhcyBhIG1ldGhvZAorICAgICAgICBmb3IgKGtleSBpbiBzb3Vy
Y2UpIHsKKyAgICAgICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsK
KyAgICAgICAgICAgIGRlc3RpbmF0aW9uW2tleV0gPSBjb3B5KHNvdXJjZVtrZXldLCBudWxsLCBz
dGFja1NvdXJjZSwgc3RhY2tEZXN0KTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0K
KyAgICAgIHNldEhhc2hLZXkoZGVzdGluYXRpb24saCk7CisgICAgfQorICB9CisgIHJldHVybiBk
ZXN0aW5hdGlvbjsKK30KKworLyoqCisgKiBDcmVhdGVzIGEgc2hhbGxvdyBjb3B5IG9mIGFuIG9i
amVjdCwgYW4gYXJyYXkgb3IgYSBwcmltaXRpdmUuCisgKgorICogQXNzdW1lcyB0aGF0IHRoZXJl
IGFyZSBubyBwcm90byBwcm9wZXJ0aWVzIGZvciBvYmplY3RzLgorICovCitmdW5jdGlvbiBzaGFs
bG93Q29weShzcmMsIGRzdCkgeworICBpZiAoaXNBcnJheShzcmMpKSB7CisgICAgZHN0ID0gZHN0
IHx8IFtdOworCisgICAgZm9yICh2YXIgaSA9IDAsIGlpID0gc3JjLmxlbmd0aDsgaSA8IGlpOyBp
KyspIHsKKyAgICAgIGRzdFtpXSA9IHNyY1tpXTsKKyAgICB9CisgIH0gZWxzZSBpZiAoaXNPYmpl
Y3Qoc3JjKSkgeworICAgIGRzdCA9IGRzdCB8fCB7fTsKKworICAgIGZvciAodmFyIGtleSBpbiBz
cmMpIHsKKyAgICAgIGlmICghKGtleS5jaGFyQXQoMCkgPT09ICckJyAmJiBrZXkuY2hhckF0KDEp
ID09PSAnJCcpKSB7CisgICAgICAgIGRzdFtrZXldID0gc3JjW2tleV07CisgICAgICB9CisgICAg
fQorICB9CisKKyAgcmV0dXJuIGRzdCB8fCBzcmM7Cit9CisKKworLyoqCisgKiBAbmdkb2MgZnVu
Y3Rpb24KKyAqIEBuYW1lIGFuZ3VsYXIuZXF1YWxzCisgKiBAbW9kdWxlIG5nCisgKiBAa2luZCBm
dW5jdGlvbgorICoKKyAqIEBkZXNjcmlwdGlvbgorICogRGV0ZXJtaW5lcyBpZiB0d28gb2JqZWN0
cyBvciB0d28gdmFsdWVzIGFyZSBlcXVpdmFsZW50LiBTdXBwb3J0cyB2YWx1ZSB0eXBlcywgcmVn
dWxhcgorICogZXhwcmVzc2lvbnMsIGFycmF5cyBhbmQgb2JqZWN0cy4KKyAqCisgKiBUd28gb2Jq
ZWN0cyBvciB2YWx1ZXMgYXJlIGNvbnNpZGVyZWQgZXF1aXZhbGVudCBpZiBhdCBsZWFzdCBvbmUg
b2YgdGhlIGZvbGxvd2luZyBpcyB0cnVlOgorICoKKyAqICogQm90aCBvYmplY3RzIG9yIHZhbHVl
cyBwYXNzIGA9PT1gIGNvbXBhcmlzb24uCisgKiAqIEJvdGggb2JqZWN0cyBvciB2YWx1ZXMgYXJl
IG9mIHRoZSBzYW1lIHR5cGUgYW5kIGFsbCBvZiB0aGVpciBwcm9wZXJ0aWVzIGFyZSBlcXVhbCBi
eQorICogICBjb21wYXJpbmcgdGhlbSB3aXRoIGBhbmd1bGFyLmVxdWFsc2AuCisgKiAqIEJvdGgg
dmFsdWVzIGFyZSBOYU4uIChJbiBKYXZhU2NyaXB0LCBOYU4gPT0gTmFOID0+IGZhbHNlLiBCdXQg
d2UgY29uc2lkZXIgdHdvIE5hTiBhcyBlcXVhbCkKKyAqICogQm90aCB2YWx1ZXMgcmVwcmVzZW50
IHRoZSBzYW1lIHJlZ3VsYXIgZXhwcmVzc2lvbiAoSW4gSmF2YVNjcmlwdCwKKyAqICAgL2FiYy8g
PT0gL2FiYy8gPT4gZmFsc2UuIEJ1dCB3ZSBjb25zaWRlciB0d28gcmVndWxhciBleHByZXNzaW9u
cyBhcyBlcXVhbCB3aGVuIHRoZWlyIHRleHR1YWwKKyAqICAgcmVwcmVzZW50YXRpb24gbWF0Y2hl
cykuCisgKgorICogRHVyaW5nIGEgcHJvcGVydHkgY29tcGFyaXNvbiwgcHJvcGVydGllcyBvZiBg
ZnVuY3Rpb25gIHR5cGUgYW5kIHByb3BlcnRpZXMgd2l0aCBuYW1lcworICogdGhhdCBiZWdpbiB3
aXRoIGAkYCBhcmUgaWdub3JlZC4KKyAqCisgKiBTY29wZSBhbmQgRE9NV2luZG93IG9iamVjdHMg
YXJlIGJlaW5nIGNvbXBhcmVkIG9ubHkgYnkgaWRlbnRpZnkgKGA9PT1gKS4KKyAqCisgKiBAcGFy
YW0geyp9IG8xIE9iamVjdCBvciB2YWx1ZSB0byBjb21wYXJlLgorICogQHBhcmFtIHsqfSBvMiBP
YmplY3Qgb3IgdmFsdWUgdG8gY29tcGFyZS4KKyAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlm
IGFyZ3VtZW50cyBhcmUgZXF1YWwuCisgKi8KK2Z1bmN0aW9uIGVxdWFscyhvMSwgbzIpIHsKKyAg
aWYgKG8xID09PSBvMikgcmV0dXJuIHRydWU7CisgIGlmIChvMSA9PT0gbnVsbCB8fCBvMiA9PT0g
bnVsbCkgcmV0dXJuIGZhbHNlOworICBpZiAobzEgIT09IG8xICYmIG8yICE9PSBvMikgcmV0dXJu
IHRydWU7IC8vIE5hTiA9PT0gTmFOCisgIHZhciB0MSA9IHR5cGVvZiBvMSwgdDIgPSB0eXBlb2Yg
bzIsIGxlbmd0aCwga2V5LCBrZXlTZXQ7CisgIGlmICh0MSA9PSB0MikgeworICAgIGlmICh0MSA9
PSAnb2JqZWN0JykgeworICAgICAgaWYgKGlzQXJyYXkobzEpKSB7CisgICAgICAgIGlmICghaXNB
cnJheShvMikpIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKChsZW5ndGggPSBvMS5sZW5ndGgp
ID09IG8yLmxlbmd0aCkgeworICAgICAgICAgIGZvciAoa2V5ID0gMDsga2V5IDwgbGVuZ3RoOyBr
ZXkrKykgeworICAgICAgICAgICAgaWYgKCFlcXVhbHMobzFba2V5XSwgbzJba2V5XSkpIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICB9CisgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0K
KyAgICAgIH0gZWxzZSBpZiAoaXNEYXRlKG8xKSkgeworICAgICAgICBpZiAoIWlzRGF0ZShvMikp
IHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIGVxdWFscyhvMS5nZXRUaW1lKCksIG8yLmdl
dFRpbWUoKSk7CisgICAgICB9IGVsc2UgaWYgKGlzUmVnRXhwKG8xKSkgeworICAgICAgICByZXR1
cm4gaXNSZWdFeHAobzIpID8gbzEudG9TdHJpbmcoKSA9PSBvMi50b1N0cmluZygpIDogZmFsc2U7
CisgICAgICB9IGVsc2UgeworICAgICAgICBpZiAoaXNTY29wZShvMSkgfHwgaXNTY29wZShvMikg
fHwgaXNXaW5kb3cobzEpIHx8IGlzV2luZG93KG8yKSB8fAorICAgICAgICAgIGlzQXJyYXkobzIp
IHx8IGlzRGF0ZShvMikgfHwgaXNSZWdFeHAobzIpKSByZXR1cm4gZmFsc2U7CisgICAgICAgIGtl
eVNldCA9IGNyZWF0ZU1hcCgpOworICAgICAgICBmb3IgKGtleSBpbiBvMSkgeworICAgICAgICAg
IGlmIChrZXkuY2hhckF0KDApID09PSAnJCcgfHwgaXNGdW5jdGlvbihvMVtrZXldKSkgY29udGlu
dWU7CisgICAgICAgICAgaWYgKCFlcXVhbHMobzFba2V5XSwgbzJba2V5XSkpIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICBrZXlTZXRba2V5XSA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgZm9y
IChrZXkgaW4gbzIpIHsKKyAgICAgICAgICBpZiAoIShrZXkgaW4ga2V5U2V0KSAmJgorICAgICAg
ICAgICAgICBrZXkuY2hhckF0KDApICE9PSAnJCcgJiYKKyAgICAgICAgICAgICAgbzJba2V5XSAh
PT0gdW5kZWZpbmVkICYmCisgICAgICAgICAgICAgICFpc0Z1bmN0aW9uKG8yW2tleV0pKSByZXR1
cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICB9CisgICAg
fQorICB9CisgIHJldHVybiBmYWxzZTsKK30KKwordmFyIGNzcCA9IGZ1bmN0aW9uKCkgeworICBp
ZiAoaXNEZWZpbmVkKGNzcC5pc0FjdGl2ZV8pKSByZXR1cm4gY3NwLmlzQWN0aXZlXzsKKworICB2
YXIgYWN0aXZlID0gISEoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW25nLWNzcF0nKSB8fAorICAg
ICAgICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW2RhdGEtbmctY3NwXScpKTsK
KworICBpZiAoIWFjdGl2ZSkgeworICAgIHRyeSB7CisgICAgICAvKiBqc2hpbnQgLVcwMzEsIC1X
MDU0ICovCisgICAgICBuZXcgRnVuY3Rpb24oJycpOworICAgICAgLyoganNoaW50ICtXMDMxLCAr
VzA1NCAqLworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgIGFjdGl2ZSA9IHRydWU7CisgICAgfQor
ICB9CisKKyAgcmV0dXJuIChjc3AuaXNBY3RpdmVfID0gYWN0aXZlKTsKK307CisKKy8qKgorICog
QG5nZG9jIGRpcmVjdGl2ZQorICogQG1vZHVsZSBuZworICogQG5hbWUgbmdKcQorICoKKyAqIEBl
bGVtZW50IEFOWQorICogQHBhcmFtIHtzdHJpbmc9fSBuZ0pxIHRoZSBuYW1lIG9mIHRoZSBsaWJy
YXJ5IGF2YWlsYWJsZSB1bmRlciBgd2luZG93YAorICogdG8gYmUgdXNlZCBmb3IgYW5ndWxhci5l
bGVtZW50CisgKiBAZGVzY3JpcHRpb24KKyAqIFVzZSB0aGlzIGRpcmVjdGl2ZSB0byBmb3JjZSB0
aGUgYW5ndWxhci5lbGVtZW50IGxpYnJhcnkuICBUaGlzIHNob3VsZCBiZQorICogdXNlZCB0byBm
b3JjZSBlaXRoZXIganFMaXRlIGJ5IGxlYXZpbmcgbmctanEgYmxhbmsgb3Igc2V0dGluZyB0aGUg
bmFtZSBvZgorICogdGhlIGpxdWVyeSB2YXJpYWJsZSB1bmRlciB3aW5kb3cgKGVnLiBqUXVlcnkp
LgorICoKKyAqIFNpbmNlIGFuZ3VsYXIgbG9va3MgZm9yIHRoaXMgZGlyZWN0aXZlIHdoZW4gaXQg
aXMgbG9hZGVkIChkb2Vzbid0IHdhaXQgZm9yIHRoZQorICogRE9NQ29udGVudExvYWRlZCBldmVu
dCksIGl0IG11c3QgYmUgcGxhY2VkIG9uIGFuIGVsZW1lbnQgdGhhdCBjb21lcyBiZWZvcmUgdGhl
IHNjcmlwdAorICogd2hpY2ggbG9hZHMgYW5ndWxhci4gQWxzbywgb25seSB0aGUgZmlyc3QgaW5z
dGFuY2Ugb2YgYG5nLWpxYCB3aWxsIGJlIHVzZWQgYW5kIGFsbAorICogb3RoZXJzIGlnbm9yZWQu
CisgKgorICogQGV4YW1wbGUKKyAqIFRoaXMgZXhhbXBsZSBzaG93cyBob3cgdG8gZm9yY2UganFM
aXRlIHVzaW5nIHRoZSBgbmdKcWAgZGlyZWN0aXZlIHRvIHRoZSBgaHRtbGAgdGFnLgorIGBgYGh0
bWwKKyA8IWRvY3R5cGUgaHRtbD4KKyA8aHRtbCBuZy1hcHAgbmctanE+CisgLi4uCisgLi4uCisg
PC9odG1sPgorIGBgYAorICogQGV4YW1wbGUKKyAqIFRoaXMgZXhhbXBsZSBzaG93cyBob3cgdG8g
dXNlIGEgalF1ZXJ5IGJhc2VkIGxpYnJhcnkgb2YgYSBkaWZmZXJlbnQgbmFtZS4KKyAqIFRoZSBs
aWJyYXJ5IG5hbWUgbXVzdCBiZSBhdmFpbGFibGUgYXQgdGhlIHRvcCBtb3N0ICd3aW5kb3cnLgor
IGBgYGh0bWwKKyA8IWRvY3R5cGUgaHRtbD4KKyA8aHRtbCBuZy1hcHAgbmctanE9ImpRdWVyeUxp
YiI+CisgLi4uCisgLi4uCisgPC9odG1sPgorIGBgYAorICovCit2YXIganEgPSBmdW5jdGlvbigp
IHsKKyAgaWYgKGlzRGVmaW5lZChqcS5uYW1lXykpIHJldHVybiBqcS5uYW1lXzsKKyAgdmFyIGVs
OworICB2YXIgaSwgaWkgPSBuZ0F0dHJQcmVmaXhlcy5sZW5ndGgsIHByZWZpeCwgbmFtZTsKKyAg
Zm9yIChpID0gMDsgaSA8IGlpOyArK2kpIHsKKyAgICBwcmVmaXggPSBuZ0F0dHJQcmVmaXhlc1tp
XTsKKyAgICBpZiAoZWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbJyArIHByZWZpeC5yZXBs
YWNlKCc6JywgJ1xcOicpICsgJ2pxXScpKSB7CisgICAgICBuYW1lID0gZWwuZ2V0QXR0cmlidXRl
KHByZWZpeCArICdqcScpOworICAgICAgYnJlYWs7CisgICAgfQorICB9CisKKyAgcmV0dXJuIChq
cS5uYW1lXyA9IG5hbWUpOworfTsKKworZnVuY3Rpb24gY29uY2F0KGFycmF5MSwgYXJyYXkyLCBp
bmRleCkgeworICByZXR1cm4gYXJyYXkxLmNvbmNhdChzbGljZS5jYWxsKGFycmF5MiwgaW5kZXgp
KTsKK30KKworZnVuY3Rpb24gc2xpY2VBcmdzKGFyZ3MsIHN0YXJ0SW5kZXgpIHsKKyAgcmV0dXJu
IHNsaWNlLmNhbGwoYXJncywgc3RhcnRJbmRleCB8fCAwKTsKK30KKworCisvKiBqc2hpbnQgLVcx
MDEgKi8KKy8qKgorICogQG5nZG9jIGZ1bmN0aW9uCisgKiBAbmFtZSBhbmd1bGFyLmJpbmQKKyAq
IEBtb2R1bGUgbmcKKyAqIEBraW5kIGZ1bmN0aW9uCisgKgorICogQGRlc2NyaXB0aW9uCisgKiBS
ZXR1cm5zIGEgZnVuY3Rpb24gd2hpY2ggY2FsbHMgZnVuY3Rpb24gYGZuYCBib3VuZCB0byBgc2Vs
ZmAgKGBzZWxmYCBiZWNvbWVzIHRoZSBgdGhpc2AgZm9yCisgKiBgZm5gKS4gWW91IGNhbiBzdXBw
bHkgb3B0aW9uYWwgYGFyZ3NgIHRoYXQgYXJlIHByZWJvdW5kIHRvIHRoZSBmdW5jdGlvbi4gVGhp
cyBmZWF0dXJlIGlzIGFsc28KKyAqIGtub3duIGFzIFtwYXJ0aWFsIGFwcGxpY2F0aW9uXShodHRw
Oi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1BhcnRpYWxfYXBwbGljYXRpb24pLCBhcworICogZGlz
dGluZ3Vpc2hlZCBmcm9tIFtmdW5jdGlvbiBjdXJyeWluZ10oaHR0cDovL2VuLndpa2lwZWRpYS5v
cmcvd2lraS9DdXJyeWluZyNDb250cmFzdF93aXRoX3BhcnRpYWxfZnVuY3Rpb25fYXBwbGljYXRp
b24pLgorICoKKyAqIEBwYXJhbSB7T2JqZWN0fSBzZWxmIENvbnRleHQgd2hpY2ggYGZuYCBzaG91
bGQgYmUgZXZhbHVhdGVkIGluLgorICogQHBhcmFtIHtmdW5jdGlvbigpfSBmbiBGdW5jdGlvbiB0
byBiZSBib3VuZC4KKyAqIEBwYXJhbSB7Li4uKn0gYXJncyBPcHRpb25hbCBhcmd1bWVudHMgdG8g
YmUgcHJlYm91bmQgdG8gdGhlIGBmbmAgZnVuY3Rpb24gY2FsbC4KKyAqIEByZXR1cm5zIHtmdW5j
dGlvbigpfSBGdW5jdGlvbiB0aGF0IHdyYXBzIHRoZSBgZm5gIHdpdGggYWxsIHRoZSBzcGVjaWZp
ZWQgYmluZGluZ3MuCisgKi8KKy8qIGpzaGludCArVzEwMSAqLworZnVuY3Rpb24gYmluZChzZWxm
LCBmbikgeworICB2YXIgY3VycnlBcmdzID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgPyBzbGljZUFy
Z3MoYXJndW1lbnRzLCAyKSA6IFtdOworICBpZiAoaXNGdW5jdGlvbihmbikgJiYgIShmbiBpbnN0
YW5jZW9mIFJlZ0V4cCkpIHsKKyAgICByZXR1cm4gY3VycnlBcmdzLmxlbmd0aAorICAgICAgPyBm
dW5jdGlvbigpIHsKKyAgICAgICAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aAorICAgICAgICAg
ICAgPyBmbi5hcHBseShzZWxmLCBjb25jYXQoY3VycnlBcmdzLCBhcmd1bWVudHMsIDApKQorICAg
ICAgICAgICAgOiBmbi5hcHBseShzZWxmLCBjdXJyeUFyZ3MpOworICAgICAgICB9CisgICAgICA6
IGZ1bmN0aW9uKCkgeworICAgICAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoCisgICAgICAg
ICAgICA/IGZuLmFwcGx5KHNlbGYsIGFyZ3VtZW50cykKKyAgICAgICAgICAgIDogZm4uY2FsbChz
ZWxmKTsKKyAgICAgICAgfTsKKyAgfSBlbHNlIHsKKyAgICAvLyBpbiBJRSwgbmF0aXZlIG1ldGhv
ZHMgYXJlIG5vdCBmdW5jdGlvbnMgc28gdGhleSBjYW5ub3QgYmUgYm91bmQgKG5vdGU6IHRoZXkg
ZG9uJ3QgbmVlZCB0byBiZSkKKyAgICByZXR1cm4gZm47CisgIH0KK30KKworCitmdW5jdGlvbiB0
b0pzb25SZXBsYWNlcihrZXksIHZhbHVlKSB7CisgIHZhciB2YWwgPSB2YWx1ZTsKKworICBpZiAo
dHlwZW9mIGtleSA9PT0gJ3N0cmluZycgJiYga2V5LmNoYXJBdCgwKSA9PT0gJyQnICYmIGtleS5j
aGFyQXQoMSkgPT09ICckJykgeworICAgIHZhbCA9IHVuZGVmaW5lZDsKKyAgfSBlbHNlIGlmIChp
c1dpbmRvdyh2YWx1ZSkpIHsKKyAgICB2YWwgPSAnJFdJTkRPVyc7CisgIH0gZWxzZSBpZiAodmFs
dWUgJiYgIGRvY3VtZW50ID09PSB2YWx1ZSkgeworICAgIHZhbCA9ICckRE9DVU1FTlQnOworICB9
IGVsc2UgaWYgKGlzU2NvcGUodmFsdWUpKSB7CisgICAgdmFsID0gJyRTQ09QRSc7CisgIH0KKwor
ICByZXR1cm4gdmFsOworfQorCisKKy8qKgorICogQG5nZG9jIGZ1bmN0aW9uCisgKiBAbmFtZSBh
bmd1bGFyLnRvSnNvbgorICogQG1vZHVsZSBuZworICogQGtpbmQgZnVuY3Rpb24KKyAqCisgKiBA
ZGVzY3JpcHRpb24KKyAqIFNlcmlhbGl6ZXMgaW5wdXQgaW50byBhIEpTT04tZm9ybWF0dGVkIHN0
cmluZy4gUHJvcGVydGllcyB3aXRoIGxlYWRpbmcgJCQgY2hhcmFjdGVycyB3aWxsIGJlCisgKiBz
dHJpcHBlZCBzaW5jZSBhbmd1bGFyIHVzZXMgdGhpcyBub3RhdGlvbiBpbnRlcm5hbGx5LgorICoK
KyAqIEBwYXJhbSB7T2JqZWN0fEFycmF5fERhdGV8c3RyaW5nfG51bWJlcn0gb2JqIElucHV0IHRv
IGJlIHNlcmlhbGl6ZWQgaW50byBKU09OLgorICogQHBhcmFtIHtib29sZWFufG51bWJlcn0gW3By
ZXR0eT0yXSBJZiBzZXQgdG8gdHJ1ZSwgdGhlIEpTT04gb3V0cHV0IHdpbGwgY29udGFpbiBuZXds
aW5lcyBhbmQgd2hpdGVzcGFjZS4KKyAqICAgIElmIHNldCB0byBhbiBpbnRlZ2VyLCB0aGUgSlNP
TiBvdXRwdXQgd2lsbCBjb250YWluIHRoYXQgbWFueSBzcGFjZXMgcGVyIGluZGVudGF0aW9uLgor
ICogQHJldHVybnMge3N0cmluZ3x1bmRlZmluZWR9IEpTT04taWZpZWQgc3RyaW5nIHJlcHJlc2Vu
dGluZyBgb2JqYC4KKyAqLworZnVuY3Rpb24gdG9Kc29uKG9iaiwgcHJldHR5KSB7CisgIGlmICh0
eXBlb2Ygb2JqID09PSAndW5kZWZpbmVkJykgcmV0dXJuIHVuZGVmaW5lZDsKKyAgaWYgKCFpc051
bWJlcihwcmV0dHkpKSB7CisgICAgcHJldHR5ID0gcHJldHR5ID8gMiA6IG51bGw7CisgIH0KKyAg
cmV0dXJuIEpTT04uc3RyaW5naWZ5KG9iaiwgdG9Kc29uUmVwbGFjZXIsIHByZXR0eSk7Cit9CisK
KworLyoqCisgKiBAbmdkb2MgZnVuY3Rpb24KKyAqIEBuYW1lIGFuZ3VsYXIuZnJvbUpzb24KKyAq
IEBtb2R1bGUgbmcKKyAqIEBraW5kIGZ1bmN0aW9uCisgKgorICogQGRlc2NyaXB0aW9uCisgKiBE
ZXNlcmlhbGl6ZXMgYSBKU09OIHN0cmluZy4KKyAqCisgKiBAcGFyYW0ge3N0cmluZ30ganNvbiBK
U09OIHN0cmluZyB0byBkZXNlcmlhbGl6ZS4KKyAqIEByZXR1cm5zIHtPYmplY3R8QXJyYXl8c3Ry
aW5nfG51bWJlcn0gRGVzZXJpYWxpemVkIEpTT04gc3RyaW5nLgorICovCitmdW5jdGlvbiBmcm9t
SnNvbihqc29uKSB7CisgIHJldHVybiBpc1N0cmluZyhqc29uKQorICAgICAgPyBKU09OLnBhcnNl
KGpzb24pCisgICAgICA6IGpzb247Cit9CisKKworZnVuY3Rpb24gdGltZXpvbmVUb09mZnNldCh0
aW1lem9uZSwgZmFsbGJhY2spIHsKKyAgdmFyIHJlcXVlc3RlZFRpbWV6b25lT2Zmc2V0ID0gRGF0
ZS5wYXJzZSgnSmFuIDAxLCAxOTcwIDAwOjAwOjAwICcgKyB0aW1lem9uZSkgLyA2MDAwMDsKKyAg
cmV0dXJuIGlzTmFOKHJlcXVlc3RlZFRpbWV6b25lT2Zmc2V0KSA/IGZhbGxiYWNrIDogcmVxdWVz
dGVkVGltZXpvbmVPZmZzZXQ7Cit9CisKKworZnVuY3Rpb24gYWRkRGF0ZU1pbnV0ZXMoZGF0ZSwg
bWludXRlcykgeworICBkYXRlID0gbmV3IERhdGUoZGF0ZS5nZXRUaW1lKCkpOworICBkYXRlLnNl
dE1pbnV0ZXMoZGF0ZS5nZXRNaW51dGVzKCkgKyBtaW51dGVzKTsKKyAgcmV0dXJuIGRhdGU7Cit9
CisKKworZnVuY3Rpb24gY29udmVydFRpbWV6b25lVG9Mb2NhbChkYXRlLCB0aW1lem9uZSwgcmV2
ZXJzZSkgeworICByZXZlcnNlID0gcmV2ZXJzZSA/IC0xIDogMTsKKyAgdmFyIHRpbWV6b25lT2Zm
c2V0ID0gdGltZXpvbmVUb09mZnNldCh0aW1lem9uZSwgZGF0ZS5nZXRUaW1lem9uZU9mZnNldCgp
KTsKKyAgcmV0dXJuIGFkZERhdGVNaW51dGVzKGRhdGUsIHJldmVyc2UgKiAodGltZXpvbmVPZmZz
ZXQgLSBkYXRlLmdldFRpbWV6b25lT2Zmc2V0KCkpKTsKK30KKworCisvKioKKyAqIEByZXR1cm5z
IHtzdHJpbmd9IFJldHVybnMgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgZWxlbWVu
dC4KKyAqLworZnVuY3Rpb24gc3RhcnRpbmdUYWcoZWxlbWVudCkgeworICBlbGVtZW50ID0ganFM
aXRlKGVsZW1lbnQpLmNsb25lKCk7CisgIHRyeSB7CisgICAgLy8gdHVybnMgb3V0IElFIGRvZXMg
bm90IGxldCB5b3Ugc2V0IC5odG1sKCkgb24gZWxlbWVudHMgd2hpY2gKKyAgICAvLyBhcmUgbm90
IGFsbG93ZWQgdG8gaGF2ZSBjaGlsZHJlbi4gU28gd2UganVzdCBpZ25vcmUgaXQuCisgICAgZWxl
bWVudC5lbXB0eSgpOworICB9IGNhdGNoIChlKSB7fQorICB2YXIgZWxlbUh0bWwgPSBqcUxpdGUo
JzxkaXY+JykuYXBwZW5kKGVsZW1lbnQpLmh0bWwoKTsKKyAgdHJ5IHsKKyAgICByZXR1cm4gZWxl
bWVudFswXS5ub2RlVHlwZSA9PT0gTk9ERV9UWVBFX1RFWFQgPyBsb3dlcmNhc2UoZWxlbUh0bWwp
IDoKKyAgICAgICAgZWxlbUh0bWwuCisgICAgICAgICAgbWF0Y2goL14oPFtePl0rPikvKVsxXS4K
KyAgICAgICAgICByZXBsYWNlKC9ePChbXHdcLV0rKS8sIGZ1bmN0aW9uKG1hdGNoLCBub2RlTmFt
ZSkgeyByZXR1cm4gJzwnICsgbG93ZXJjYXNlKG5vZGVOYW1lKTsgfSk7CisgIH0gY2F0Y2ggKGUp
IHsKKyAgICByZXR1cm4gbG93ZXJjYXNlKGVsZW1IdG1sKTsKKyAgfQorCit9CisKKworLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCisvKioKKyAqIFRy
aWVzIHRvIGRlY29kZSB0aGUgVVJJIGNvbXBvbmVudCB3aXRob3V0IHRocm93aW5nIGFuIGV4Y2Vw
dGlvbi4KKyAqCisgKiBAcHJpdmF0ZQorICogQHBhcmFtIHN0ciB2YWx1ZSBwb3RlbnRpYWwgVVJJ
IGNvbXBvbmVudCB0byBjaGVjay4KKyAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIGB2YWx1
ZWAgY2FuIGJlIGRlY29kZWQKKyAqIHdpdGggdGhlIGRlY29kZVVSSUNvbXBvbmVudCBmdW5jdGlv
bi4KKyAqLworZnVuY3Rpb24gdHJ5RGVjb2RlVVJJQ29tcG9uZW50KHZhbHVlKSB7CisgIHRyeSB7
CisgICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudCh2YWx1ZSk7CisgIH0gY2F0Y2ggKGUpIHsK
KyAgICAvLyBJZ25vcmUgYW55IGludmFsaWQgdXJpIGNvbXBvbmVudAorICB9Cit9CisKKworLyoq
CisgKiBQYXJzZXMgYW4gZXNjYXBlZCB1cmwgcXVlcnkgc3RyaW5nIGludG8ga2V5LXZhbHVlIHBh
aXJzLgorICogQHJldHVybnMge09iamVjdC48c3RyaW5nLGJvb2xlYW58QXJyYXk+fQorICovCitm
dW5jdGlvbiBwYXJzZUtleVZhbHVlKC8qKnN0cmluZyova2V5VmFsdWUpIHsKKyAgdmFyIG9iaiA9
IHt9LCBrZXlfdmFsdWUsIGtleTsKKyAgZm9yRWFjaCgoa2V5VmFsdWUgfHwgIiIpLnNwbGl0KCcm
JyksIGZ1bmN0aW9uKGtleVZhbHVlKSB7CisgICAgaWYgKGtleVZhbHVlKSB7CisgICAgICBrZXlf
dmFsdWUgPSBrZXlWYWx1ZS5yZXBsYWNlKC9cKy9nLCclMjAnKS5zcGxpdCgnPScpOworICAgICAg
a2V5ID0gdHJ5RGVjb2RlVVJJQ29tcG9uZW50KGtleV92YWx1ZVswXSk7CisgICAgICBpZiAoaXNE
ZWZpbmVkKGtleSkpIHsKKyAgICAgICAgdmFyIHZhbCA9IGlzRGVmaW5lZChrZXlfdmFsdWVbMV0p
ID8gdHJ5RGVjb2RlVVJJQ29tcG9uZW50KGtleV92YWx1ZVsxXSkgOiB0cnVlOworICAgICAgICBp
ZiAoIWhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7CisgICAgICAgICAgb2JqW2tleV0g
PSB2YWw7CisgICAgICAgIH0gZWxzZSBpZiAoaXNBcnJheShvYmpba2V5XSkpIHsKKyAgICAgICAg
ICBvYmpba2V5XS5wdXNoKHZhbCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgb2JqW2tl
eV0gPSBbb2JqW2tleV0sdmFsXTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfSk7Cisg
IHJldHVybiBvYmo7Cit9CisKK2Z1bmN0aW9uIHRvS2V5VmFsdWUob2JqKSB7CisgIHZhciBwYXJ0
cyA9IFtdOworICBmb3JFYWNoKG9iaiwgZnVuY3Rpb24odmFsdWUsIGtleSkgeworICAgIGlmIChp
c0FycmF5KHZhbHVlKSkgeworICAgICAgZm9yRWFjaCh2YWx1ZSwgZnVuY3Rpb24oYXJyYXlWYWx1
ZSkgeworICAgICAgICBwYXJ0cy5wdXNoKGVuY29kZVVyaVF1ZXJ5KGtleSwgdHJ1ZSkgKworICAg
ICAgICAgICAgICAgICAgIChhcnJheVZhbHVlID09PSB0cnVlID8gJycgOiAnPScgKyBlbmNvZGVV
cmlRdWVyeShhcnJheVZhbHVlLCB0cnVlKSkpOworICAgICAgfSk7CisgICAgfSBlbHNlIHsKKyAg
ICBwYXJ0cy5wdXNoKGVuY29kZVVyaVF1ZXJ5KGtleSwgdHJ1ZSkgKworICAgICAgICAgICAgICAg
KHZhbHVlID09PSB0cnVlID8gJycgOiAnPScgKyBlbmNvZGVVcmlRdWVyeSh2YWx1ZSwgdHJ1ZSkp
KTsKKyAgICB9CisgIH0pOworICByZXR1cm4gcGFydHMubGVuZ3RoID8gcGFydHMuam9pbignJicp
IDogJyc7Cit9CisKKworLyoqCisgKiBXZSBuZWVkIG91ciBjdXN0b20gbWV0aG9kIGJlY2F1c2Ug
ZW5jb2RlVVJJQ29tcG9uZW50IGlzIHRvbyBhZ2dyZXNzaXZlIGFuZCBkb2Vzbid0IGZvbGxvdwor
ICogaHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMzk4Ni50eHQgd2l0aCByZWdhcmRzIHRvIHRo
ZSBjaGFyYWN0ZXIgc2V0IChwY2hhcikgYWxsb3dlZCBpbiBwYXRoCisgKiBzZWdtZW50czoKKyAq
ICAgIHNlZ21lbnQgICAgICAgPSAqcGNoYXIKKyAqICAgIHBjaGFyICAgICAgICAgPSB1bnJlc2Vy
dmVkIC8gcGN0LWVuY29kZWQgLyBzdWItZGVsaW1zIC8gIjoiIC8gIkAiCisgKiAgICBwY3QtZW5j
b2RlZCAgID0gIiUiIEhFWERJRyBIRVhESUcKKyAqICAgIHVucmVzZXJ2ZWQgICAgPSBBTFBIQSAv
IERJR0lUIC8gIi0iIC8gIi4iIC8gIl8iIC8gIn4iCisgKiAgICBzdWItZGVsaW1zICAgID0gIiEi
IC8gIiQiIC8gIiYiIC8gIiciIC8gIigiIC8gIikiCisgKiAgICAgICAgICAgICAgICAgICAgIC8g
IioiIC8gIisiIC8gIiwiIC8gIjsiIC8gIj0iCisgKi8KK2Z1bmN0aW9uIGVuY29kZVVyaVNlZ21l
bnQodmFsKSB7CisgIHJldHVybiBlbmNvZGVVcmlRdWVyeSh2YWwsIHRydWUpLgorICAgICAgICAg
ICAgIHJlcGxhY2UoLyUyNi9naSwgJyYnKS4KKyAgICAgICAgICAgICByZXBsYWNlKC8lM0QvZ2ks
ICc9JykuCisgICAgICAgICAgICAgcmVwbGFjZSgvJTJCL2dpLCAnKycpOworfQorCisKKy8qKgor
ICogVGhpcyBtZXRob2QgaXMgaW50ZW5kZWQgZm9yIGVuY29kaW5nICprZXkqIG9yICp2YWx1ZSog
cGFydHMgb2YgcXVlcnkgY29tcG9uZW50LiBXZSBuZWVkIGEgY3VzdG9tCisgKiBtZXRob2QgYmVj
YXVzZSBlbmNvZGVVUklDb21wb25lbnQgaXMgdG9vIGFnZ3Jlc3NpdmUgYW5kIGVuY29kZXMgc3R1
ZmYgdGhhdCBkb2Vzbid0IGhhdmUgdG8gYmUKKyAqIGVuY29kZWQgcGVyIGh0dHA6Ly90b29scy5p
ZXRmLm9yZy9odG1sL3JmYzM5ODY6CisgKiAgICBxdWVyeSAgICAgICA9ICooIHBjaGFyIC8gIi8i
IC8gIj8iICkKKyAqICAgIHBjaGFyICAgICAgICAgPSB1bnJlc2VydmVkIC8gcGN0LWVuY29kZWQg
LyBzdWItZGVsaW1zIC8gIjoiIC8gIkAiCisgKiAgICB1bnJlc2VydmVkICAgID0gQUxQSEEgLyBE
SUdJVCAvICItIiAvICIuIiAvICJfIiAvICJ+IgorICogICAgcGN0LWVuY29kZWQgICA9ICIlIiBI
RVhESUcgSEVYRElHCisgKiAgICBzdWItZGVsaW1zICAgID0gIiEiIC8gIiQiIC8gIiYiIC8gIici
IC8gIigiIC8gIikiCisgKiAgICAgICAgICAgICAgICAgICAgIC8gIioiIC8gIisiIC8gIiwiIC8g
IjsiIC8gIj0iCisgKi8KK2Z1bmN0aW9uIGVuY29kZVVyaVF1ZXJ5KHZhbCwgcGN0RW5jb2RlU3Bh
Y2VzKSB7CisgIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQodmFsKS4KKyAgICAgICAgICAgICBy
ZXBsYWNlKC8lNDAvZ2ksICdAJykuCisgICAgICAgICAgICAgcmVwbGFjZSgvJTNBL2dpLCAnOicp
LgorICAgICAgICAgICAgIHJlcGxhY2UoLyUyNC9nLCAnJCcpLgorICAgICAgICAgICAgIHJlcGxh
Y2UoLyUyQy9naSwgJywnKS4KKyAgICAgICAgICAgICByZXBsYWNlKC8lM0IvZ2ksICc7JykuCisg
ICAgICAgICAgICAgcmVwbGFjZSgvJTIwL2csIChwY3RFbmNvZGVTcGFjZXMgPyAnJTIwJyA6ICcr
JykpOworfQorCit2YXIgbmdBdHRyUHJlZml4ZXMgPSBbJ25nLScsICdkYXRhLW5nLScsICduZzon
LCAneC1uZy0nXTsKKworZnVuY3Rpb24gZ2V0TmdBdHRyaWJ1dGUoZWxlbWVudCwgbmdBdHRyKSB7
CisgIHZhciBhdHRyLCBpLCBpaSA9IG5nQXR0clByZWZpeGVzLmxlbmd0aDsKKyAgZm9yIChpID0g
MDsgaSA8IGlpOyArK2kpIHsKKyAgICBhdHRyID0gbmdBdHRyUHJlZml4ZXNbaV0gKyBuZ0F0dHI7
CisgICAgaWYgKGlzU3RyaW5nKGF0dHIgPSBlbGVtZW50LmdldEF0dHJpYnV0ZShhdHRyKSkpIHsK
KyAgICAgIHJldHVybiBhdHRyOworICAgIH0KKyAgfQorICByZXR1cm4gbnVsbDsKK30KKworLyoq
CisgKiBAbmdkb2MgZGlyZWN0aXZlCisgKiBAbmFtZSBuZ0FwcAorICogQG1vZHVsZSBuZworICoK
KyAqIEBlbGVtZW50IEFOWQorICogQHBhcmFtIHthbmd1bGFyLk1vZHVsZX0gbmdBcHAgYW4gb3B0
aW9uYWwgYXBwbGljYXRpb24KKyAqICAge0BsaW5rIGFuZ3VsYXIubW9kdWxlIG1vZHVsZX0gbmFt
ZSB0byBsb2FkLgorICogQHBhcmFtIHtib29sZWFuPX0gbmdTdHJpY3REaSBpZiB0aGlzIGF0dHJp
YnV0ZSBpcyBwcmVzZW50IG9uIHRoZSBhcHAgZWxlbWVudCwgdGhlIGluamVjdG9yIHdpbGwgYmUK
KyAqICAgY3JlYXRlZCBpbiAic3RyaWN0LWRpIiBtb2RlLiBUaGlzIG1lYW5zIHRoYXQgdGhlIGFw
cGxpY2F0aW9uIHdpbGwgZmFpbCB0byBpbnZva2UgZnVuY3Rpb25zIHdoaWNoCisgKiAgIGRvIG5v
dCB1c2UgZXhwbGljaXQgZnVuY3Rpb24gYW5ub3RhdGlvbiAoYW5kIGFyZSB0aHVzIHVuc3VpdGFi
bGUgZm9yIG1pbmlmaWNhdGlvbiksIGFzIGRlc2NyaWJlZAorICogICBpbiB7QGxpbmsgZ3VpZGUv
ZGkgdGhlIERlcGVuZGVuY3kgSW5qZWN0aW9uIGd1aWRlfSwgYW5kIHVzZWZ1bCBkZWJ1Z2dpbmcg
aW5mbyB3aWxsIGFzc2lzdCBpbgorICogICB0cmFja2luZyBkb3duIHRoZSByb290IG9mIHRoZXNl
IGJ1Z3MuCisgKgorICogQGRlc2NyaXB0aW9uCisgKgorICogVXNlIHRoaXMgZGlyZWN0aXZlIHRv
ICoqYXV0by1ib290c3RyYXAqKiBhbiBBbmd1bGFySlMgYXBwbGljYXRpb24uIFRoZSBgbmdBcHBg
IGRpcmVjdGl2ZQorICogZGVzaWduYXRlcyB0aGUgKipyb290IGVsZW1lbnQqKiBvZiB0aGUgYXBw
bGljYXRpb24gYW5kIGlzIHR5cGljYWxseSBwbGFjZWQgbmVhciB0aGUgcm9vdCBlbGVtZW50Cisg
KiBvZiB0aGUgcGFnZSAtIGUuZy4gb24gdGhlIGA8Ym9keT5gIG9yIGA8aHRtbD5gIHRhZ3MuCisg
KgorICogT25seSBvbmUgQW5ndWxhckpTIGFwcGxpY2F0aW9uIGNhbiBiZSBhdXRvLWJvb3RzdHJh
cHBlZCBwZXIgSFRNTCBkb2N1bWVudC4gVGhlIGZpcnN0IGBuZ0FwcGAKKyAqIGZvdW5kIGluIHRo
ZSBkb2N1bWVudCB3aWxsIGJlIHVzZWQgdG8gZGVmaW5lIHRoZSByb290IGVsZW1lbnQgdG8gYXV0
by1ib290c3RyYXAgYXMgYW4KKyAqIGFwcGxpY2F0aW9uLiBUbyBydW4gbXVsdGlwbGUgYXBwbGlj
YXRpb25zIGluIGFuIEhUTUwgZG9jdW1lbnQgeW91IG11c3QgbWFudWFsbHkgYm9vdHN0cmFwIHRo
ZW0gdXNpbmcKKyAqIHtAbGluayBhbmd1bGFyLmJvb3RzdHJhcH0gaW5zdGVhZC4gQW5ndWxhckpT
IGFwcGxpY2F0aW9ucyBjYW5ub3QgYmUgbmVzdGVkIHdpdGhpbiBlYWNoIG90aGVyLgorICoKKyAq
IFlvdSBjYW4gc3BlY2lmeSBhbiAqKkFuZ3VsYXJKUyBtb2R1bGUqKiB0byBiZSB1c2VkIGFzIHRo
ZSByb290IG1vZHVsZSBmb3IgdGhlIGFwcGxpY2F0aW9uLiAgVGhpcworICogbW9kdWxlIHdpbGwg
YmUgbG9hZGVkIGludG8gdGhlIHtAbGluayBhdXRvLiRpbmplY3Rvcn0gd2hlbiB0aGUgYXBwbGlj
YXRpb24gaXMgYm9vdHN0cmFwcGVkLiBJdAorICogc2hvdWxkIGNvbnRhaW4gdGhlIGFwcGxpY2F0
aW9uIGNvZGUgbmVlZGVkIG9yIGhhdmUgZGVwZW5kZW5jaWVzIG9uIG90aGVyIG1vZHVsZXMgdGhh
dCB3aWxsCisgKiBjb250YWluIHRoZSBjb2RlLiBTZWUge0BsaW5rIGFuZ3VsYXIubW9kdWxlfSBm
b3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAqCisgKiBJbiB0aGUgZXhhbXBsZSBiZWxvdyBpZiB0aGUg
YG5nQXBwYCBkaXJlY3RpdmUgd2VyZSBub3QgcGxhY2VkIG9uIHRoZSBgaHRtbGAgZWxlbWVudCB0
aGVuIHRoZQorICogZG9jdW1lbnQgd291bGQgbm90IGJlIGNvbXBpbGVkLCB0aGUgYEFwcENvbnRy
b2xsZXJgIHdvdWxkIG5vdCBiZSBpbnN0YW50aWF0ZWQgYW5kIHRoZSBge3sgYStiIH19YAorICog
d291bGQgbm90IGJlIHJlc29sdmVkIHRvIGAzYC4KKyAqCisgKiBgbmdBcHBgIGlzIHRoZSBlYXNp
ZXN0LCBhbmQgbW9zdCBjb21tb24gd2F5IHRvIGJvb3RzdHJhcCBhbiBhcHBsaWNhdGlvbi4KKyAq
CisgPGV4YW1wbGUgbW9kdWxlPSJuZ0FwcERlbW8iPgorICAgPGZpbGUgbmFtZT0iaW5kZXguaHRt
bCI+CisgICA8ZGl2IG5nLWNvbnRyb2xsZXI9Im5nQXBwRGVtb0NvbnRyb2xsZXIiPgorICAgICBJ
IGNhbiBhZGQ6IHt7YX19ICsge3tifX0gPSAge3sgYStiIH19CisgICA8L2Rpdj4KKyAgIDwvZmls
ZT4KKyAgIDxmaWxlIG5hbWU9InNjcmlwdC5qcyI+CisgICBhbmd1bGFyLm1vZHVsZSgnbmdBcHBE
ZW1vJywgW10pLmNvbnRyb2xsZXIoJ25nQXBwRGVtb0NvbnRyb2xsZXInLCBmdW5jdGlvbigkc2Nv
cGUpIHsKKyAgICAgJHNjb3BlLmEgPSAxOworICAgICAkc2NvcGUuYiA9IDI7CisgICB9KTsKKyAg
IDwvZmlsZT4KKyA8L2V4YW1wbGU+CisgKgorICogVXNpbmcgYG5nU3RyaWN0RGlgLCB5b3Ugd291
bGQgc2VlIHNvbWV0aGluZyBsaWtlIHRoaXM6CisgKgorIDxleGFtcGxlIG5nLWFwcC1pbmNsdWRl
ZD0idHJ1ZSI+CisgICA8ZmlsZSBuYW1lPSJpbmRleC5odG1sIj4KKyAgIDxkaXYgbmctYXBwPSJu
Z0FwcFN0cmljdERlbW8iIG5nLXN0cmljdC1kaT4KKyAgICAgICA8ZGl2IG5nLWNvbnRyb2xsZXI9
Ikdvb2RDb250cm9sbGVyMSI+CisgICAgICAgICAgIEkgY2FuIGFkZDoge3thfX0gKyB7e2J9fSA9
ICB7eyBhK2IgfX0KKworICAgICAgICAgICA8cD5UaGlzIHJlbmRlcnMgYmVjYXVzZSB0aGUgY29u
dHJvbGxlciBkb2VzIG5vdCBmYWlsIHRvCisgICAgICAgICAgICAgIGluc3RhbnRpYXRlLCBieSB1
c2luZyBleHBsaWNpdCBhbm5vdGF0aW9uIHN0eWxlIChzZWUKKyAgICAgICAgICAgICAgc2NyaXB0
LmpzIGZvciBkZXRhaWxzKQorICAgICAgICAgICA8L3A+CisgICAgICAgPC9kaXY+CisKKyAgICAg
ICA8ZGl2IG5nLWNvbnRyb2xsZXI9Ikdvb2RDb250cm9sbGVyMiI+CisgICAgICAgICAgIE5hbWU6
IDxpbnB1dCBuZy1tb2RlbD0ibmFtZSI+PGJyIC8+CisgICAgICAgICAgIEhlbGxvLCB7e25hbWV9
fSEKKworICAgICAgICAgICA8cD5UaGlzIHJlbmRlcnMgYmVjYXVzZSB0aGUgY29udHJvbGxlciBk
b2VzIG5vdCBmYWlsIHRvCisgICAgICAgICAgICAgIGluc3RhbnRpYXRlLCBieSB1c2luZyBleHBs
aWNpdCBhbm5vdGF0aW9uIHN0eWxlCisgICAgICAgICAgICAgIChzZWUgc2NyaXB0LmpzIGZvciBk
ZXRhaWxzKQorICAgICAgICAgICA8L3A+CisgICAgICAgPC9kaXY+CisKKyAgICAgICA8ZGl2IG5n
LWNvbnRyb2xsZXI9IkJhZENvbnRyb2xsZXIiPgorICAgICAgICAgICBJIGNhbiBhZGQ6IHt7YX19
ICsge3tifX0gPSAge3sgYStiIH19CisKKyAgICAgICAgICAgPHA+VGhlIGNvbnRyb2xsZXIgY291
bGQgbm90IGJlIGluc3RhbnRpYXRlZCwgZHVlIHRvIHJlbHlpbmcKKyAgICAgICAgICAgICAgb24g
YXV0b21hdGljIGZ1bmN0aW9uIGFubm90YXRpb25zICh3aGljaCBhcmUgZGlzYWJsZWQgaW4KKyAg
ICAgICAgICAgICAgc3RyaWN0IG1vZGUpLiBBcyBzdWNoLCB0aGUgY29udGVudCBvZiB0aGlzIHNl
Y3Rpb24gaXMgbm90CisgICAgICAgICAgICAgIGludGVycG9sYXRlZCwgYW5kIHRoZXJlIHNob3Vs
ZCBiZSBhbiBlcnJvciBpbiB5b3VyIHdlYiBjb25zb2xlLgorICAgICAgICAgICA8L3A+CisgICAg
ICAgPC9kaXY+CisgICA8L2Rpdj4KKyAgIDwvZmlsZT4KKyAgIDxmaWxlIG5hbWU9InNjcmlwdC5q
cyI+CisgICBhbmd1bGFyLm1vZHVsZSgnbmdBcHBTdHJpY3REZW1vJywgW10pCisgICAgIC8vIEJh
ZENvbnRyb2xsZXIgd2lsbCBmYWlsIHRvIGluc3RhbnRpYXRlLCBkdWUgdG8gcmVseWluZyBvbiBh
dXRvbWF0aWMgZnVuY3Rpb24gYW5ub3RhdGlvbiwKKyAgICAgLy8gcmF0aGVyIHRoYW4gYW4gZXhw
bGljaXQgYW5ub3RhdGlvbgorICAgICAuY29udHJvbGxlcignQmFkQ29udHJvbGxlcicsIGZ1bmN0
aW9uKCRzY29wZSkgeworICAgICAgICRzY29wZS5hID0gMTsKKyAgICAgICAkc2NvcGUuYiA9IDI7
CisgICAgIH0pCisgICAgIC8vIFVubGlrZSBCYWRDb250cm9sbGVyLCBHb29kQ29udHJvbGxlcjEg
YW5kIEdvb2RDb250cm9sbGVyMiB3aWxsIG5vdCBmYWlsIHRvIGJlIGluc3RhbnRpYXRlZCwKKyAg
ICAgLy8gZHVlIHRvIHVzaW5nIGV4cGxpY2l0IGFubm90YXRpb25zIHVzaW5nIHRoZSBhcnJheSBz
dHlsZSBhbmQgJGluamVjdCBwcm9wZXJ0eSwgcmVzcGVjdGl2ZWx5LgorICAgICAuY29udHJvbGxl
cignR29vZENvbnRyb2xsZXIxJywgWyckc2NvcGUnLCBmdW5jdGlvbigkc2NvcGUpIHsKKyAgICAg
ICAkc2NvcGUuYSA9IDE7CisgICAgICAgJHNjb3BlLmIgPSAyOworICAgICB9XSkKKyAgICAgLmNv
bnRyb2xsZXIoJ0dvb2RDb250cm9sbGVyMicsIEdvb2RDb250cm9sbGVyMik7CisgICAgIGZ1bmN0
aW9uIEdvb2RDb250cm9sbGVyMigkc2NvcGUpIHsKKyAgICAgICAkc2NvcGUubmFtZSA9ICJXb3Js
ZCI7CisgICAgIH0KKyAgICAgR29vZENvbnRyb2xsZXIyLiRpbmplY3QgPSBbJyRzY29wZSddOwor
ICAgPC9maWxlPgorICAgPGZpbGUgbmFtZT0ic3R5bGUuY3NzIj4KKyAgIGRpdltuZy1jb250cm9s
bGVyXSB7CisgICAgICAgbWFyZ2luLWJvdHRvbTogMWVtOworICAgICAgIC13ZWJraXQtYm9yZGVy
LXJhZGl1czogNHB4OworICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKKyAgICAgICBib3JkZXI6
IDFweCBzb2xpZDsKKyAgICAgICBwYWRkaW5nOiAuNWVtOworICAgfQorICAgZGl2W25nLWNvbnRy
b2xsZXJePUdvb2RdIHsKKyAgICAgICBib3JkZXItY29sb3I6ICNkNmU5YzY7CisgICAgICAgYmFj
a2dyb3VuZC1jb2xvcjogI2RmZjBkODsKKyAgICAgICBjb2xvcjogIzNjNzYzZDsKKyAgIH0KKyAg
IGRpdltuZy1jb250cm9sbGVyXj1CYWRdIHsKKyAgICAgICBib3JkZXItY29sb3I6ICNlYmNjZDE7
CisgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2YyZGVkZTsKKyAgICAgICBjb2xvcjogI2E5NDQ0
MjsKKyAgICAgICBtYXJnaW4tYm90dG9tOiAwOworICAgfQorICAgPC9maWxlPgorIDwvZXhhbXBs
ZT4KKyAqLworZnVuY3Rpb24gYW5ndWxhckluaXQoZWxlbWVudCwgYm9vdHN0cmFwKSB7CisgIHZh
ciBhcHBFbGVtZW50LAorICAgICAgbW9kdWxlLAorICAgICAgY29uZmlnID0ge307CisKKyAgLy8g
VGhlIGVsZW1lbnQgYGVsZW1lbnRgIGhhcyBwcmlvcml0eSBvdmVyIGFueSBvdGhlciBlbGVtZW50
CisgIGZvckVhY2gobmdBdHRyUHJlZml4ZXMsIGZ1bmN0aW9uKHByZWZpeCkgeworICAgIHZhciBu
YW1lID0gcHJlZml4ICsgJ2FwcCc7CisKKyAgICBpZiAoIWFwcEVsZW1lbnQgJiYgZWxlbWVudC5o
YXNBdHRyaWJ1dGUgJiYgZWxlbWVudC5oYXNBdHRyaWJ1dGUobmFtZSkpIHsKKyAgICAgIGFwcEVs
ZW1lbnQgPSBlbGVtZW50OworICAgICAgbW9kdWxlID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUobmFt
ZSk7CisgICAgfQorICB9KTsKKyAgZm9yRWFjaChuZ0F0dHJQcmVmaXhlcywgZnVuY3Rpb24ocHJl
Zml4KSB7CisgICAgdmFyIG5hbWUgPSBwcmVmaXggKyAnYXBwJzsKKyAgICB2YXIgY2FuZGlkYXRl
OworCisgICAgaWYgKCFhcHBFbGVtZW50ICYmIChjYW5kaWRhdGUgPSBlbGVtZW50LnF1ZXJ5U2Vs
ZWN0b3IoJ1snICsgbmFtZS5yZXBsYWNlKCc6JywgJ1xcOicpICsgJ10nKSkpIHsKKyAgICAgIGFw
cEVsZW1lbnQgPSBjYW5kaWRhdGU7CisgICAgICBtb2R1bGUgPSBjYW5kaWRhdGUuZ2V0QXR0cmli
dXRlKG5hbWUpOworICAgIH0KKyAgfSk7CisgIGlmIChhcHBFbGVtZW50KSB7CisgICAgY29uZmln
LnN0cmljdERpID0gZ2V0TmdBdHRyaWJ1dGUoYXBwRWxlbWVudCwgInN0cmljdC1kaSIpICE9PSBu
dWxsOworICAgIGJvb3RzdHJhcChhcHBFbGVtZW50LCBtb2R1bGUgPyBbbW9kdWxlXSA6IFtdLCBj
b25maWcpOworICB9Cit9CisKKy8qKgorICogQG5nZG9jIGZ1bmN0aW9uCisgKiBAbmFtZSBhbmd1
bGFyLmJvb3RzdHJhcAorICogQG1vZHVsZSBuZworICogQGRlc2NyaXB0aW9uCisgKiBVc2UgdGhp
cyBmdW5jdGlvbiB0byBtYW51YWxseSBzdGFydCB1cCBhbmd1bGFyIGFwcGxpY2F0aW9uLgorICoK
KyAqIFNlZToge0BsaW5rIGd1aWRlL2Jvb3RzdHJhcCBCb290c3RyYXB9CisgKgorICogTm90ZSB0
aGF0IFByb3RyYWN0b3IgYmFzZWQgZW5kLXRvLWVuZCB0ZXN0cyBjYW5ub3QgdXNlIHRoaXMgZnVu
Y3Rpb24gdG8gYm9vdHN0cmFwIG1hbnVhbGx5LgorICogVGhleSBtdXN0IHVzZSB7QGxpbmsgbmcu
ZGlyZWN0aXZlOm5nQXBwIG5nQXBwfS4KKyAqCisgKiBBbmd1bGFyIHdpbGwgZGV0ZWN0IGlmIGl0
IGhhcyBiZWVuIGxvYWRlZCBpbnRvIHRoZSBicm93c2VyIG1vcmUgdGhhbiBvbmNlIGFuZCBvbmx5
IGFsbG93IHRoZQorICogZmlyc3QgbG9hZGVkIHNjcmlwdCB0byBiZSBib290c3RyYXBwZWQgYW5k
IHdpbGwgcmVwb3J0IGEgd2FybmluZyB0byB0aGUgYnJvd3NlciBjb25zb2xlIGZvcgorICogZWFj
aCBvZiB0aGUgc3Vic2VxdWVudCBzY3JpcHRzLiBUaGlzIHByZXZlbnRzIHN0cmFuZ2UgcmVzdWx0
cyBpbiBhcHBsaWNhdGlvbnMsIHdoZXJlIG90aGVyd2lzZQorICogbXVsdGlwbGUgaW5zdGFuY2Vz
IG9mIEFuZ3VsYXIgdHJ5IHRvIHdvcmsgb24gdGhlIERPTS4KKyAqCisgKiBgYGBodG1sCisgKiA8
IWRvY3R5cGUgaHRtbD4KKyAqIDxodG1sPgorICogPGJvZHk+CisgKiA8ZGl2IG5nLWNvbnRyb2xs
ZXI9IldlbGNvbWVDb250cm9sbGVyIj4KKyAqICAge3tncmVldGluZ319CisgKiA8L2Rpdj4KKyAq
CisgKiA8c2NyaXB0IHNyYz0iYW5ndWxhci5qcyI+PC9zY3JpcHQ+CisgKiA8c2NyaXB0PgorICog
ICB2YXIgYXBwID0gYW5ndWxhci5tb2R1bGUoJ2RlbW8nLCBbXSkKKyAqICAgLmNvbnRyb2xsZXIo
J1dlbGNvbWVDb250cm9sbGVyJywgZnVuY3Rpb24oJHNjb3BlKSB7CisgKiAgICAgICAkc2NvcGUu
Z3JlZXRpbmcgPSAnV2VsY29tZSEnOworICogICB9KTsKKyAqICAgYW5ndWxhci5ib290c3RyYXAo
ZG9jdW1lbnQsIFsnZGVtbyddKTsKKyAqIDwvc2NyaXB0PgorICogPC9ib2R5PgorICogPC9odG1s
PgorICogYGBgCisgKgorICogQHBhcmFtIHtET01FbGVtZW50fSBlbGVtZW50IERPTSBlbGVtZW50
IHdoaWNoIGlzIHRoZSByb290IG9mIGFuZ3VsYXIgYXBwbGljYXRpb24uCisgKiBAcGFyYW0ge0Fy
cmF5PFN0cmluZ3xGdW5jdGlvbnxBcnJheT49fSBtb2R1bGVzIGFuIGFycmF5IG9mIG1vZHVsZXMg
dG8gbG9hZCBpbnRvIHRoZSBhcHBsaWNhdGlvbi4KKyAqICAgICBFYWNoIGl0ZW0gaW4gdGhlIGFy
cmF5IHNob3VsZCBiZSB0aGUgbmFtZSBvZiBhIHByZWRlZmluZWQgbW9kdWxlIG9yIGEgKERJIGFu
bm90YXRlZCkKKyAqICAgICBmdW5jdGlvbiB0aGF0IHdpbGwgYmUgaW52b2tlZCBieSB0aGUgaW5q
ZWN0b3IgYXMgYSBgY29uZmlnYCBibG9jay4KKyAqICAgICBTZWU6IHtAbGluayBhbmd1bGFyLm1v
ZHVsZSBtb2R1bGVzfQorICogQHBhcmFtIHtPYmplY3Q9fSBjb25maWcgYW4gb2JqZWN0IGZvciBk
ZWZpbmluZyBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBhcHBsaWNhdGlvbi4gVGhlCisg
KiAgICAgZm9sbG93aW5nIGtleXMgYXJlIHN1cHBvcnRlZDoKKyAqCisgKiAqIGBzdHJpY3REaWAg
LSBkaXNhYmxlIGF1dG9tYXRpYyBmdW5jdGlvbiBhbm5vdGF0aW9uIGZvciB0aGUgYXBwbGljYXRp
b24uIFRoaXMgaXMgbWVhbnQgdG8KKyAqICAgYXNzaXN0IGluIGZpbmRpbmcgYnVncyB3aGljaCBi
cmVhayBtaW5pZmllZCBjb2RlLiBEZWZhdWx0cyB0byBgZmFsc2VgLgorICoKKyAqIEByZXR1cm5z
IHthdXRvLiRpbmplY3Rvcn0gUmV0dXJucyB0aGUgbmV3bHkgY3JlYXRlZCBpbmplY3RvciBmb3Ig
dGhpcyBhcHAuCisgKi8KK2Z1bmN0aW9uIGJvb3RzdHJhcChlbGVtZW50LCBtb2R1bGVzLCBjb25m
aWcpIHsKKyAgaWYgKCFpc09iamVjdChjb25maWcpKSBjb25maWcgPSB7fTsKKyAgdmFyIGRlZmF1
bHRDb25maWcgPSB7CisgICAgc3RyaWN0RGk6IGZhbHNlCisgIH07CisgIGNvbmZpZyA9IGV4dGVu
ZChkZWZhdWx0Q29uZmlnLCBjb25maWcpOworICB2YXIgZG9Cb290c3RyYXAgPSBmdW5jdGlvbigp
IHsKKyAgICBlbGVtZW50ID0ganFMaXRlKGVsZW1lbnQpOworCisgICAgaWYgKGVsZW1lbnQuaW5q
ZWN0b3IoKSkgeworICAgICAgdmFyIHRhZyA9IChlbGVtZW50WzBdID09PSBkb2N1bWVudCkgPyAn
ZG9jdW1lbnQnIDogc3RhcnRpbmdUYWcoZWxlbWVudCk7CisgICAgICAvL0VuY29kZSBhbmdsZSBi
cmFja2V0cyB0byBwcmV2ZW50IGlucHV0IGZyb20gYmVpbmcgc2FuaXRpemVkIHRvIGVtcHR5IHN0
cmluZyAjODY4MworICAgICAgdGhyb3cgbmdNaW5FcnIoCisgICAgICAgICAgJ2J0c3RycGQnLAor
ICAgICAgICAgICJBcHAgQWxyZWFkeSBCb290c3RyYXBwZWQgd2l0aCB0aGlzIEVsZW1lbnQgJ3sw
fSciLAorICAgICAgICAgIHRhZy5yZXBsYWNlKC88LywnJmx0OycpLnJlcGxhY2UoLz4vLCcmZ3Q7
JykpOworICAgIH0KKworICAgIG1vZHVsZXMgPSBtb2R1bGVzIHx8IFtdOworICAgIG1vZHVsZXMu
dW5zaGlmdChbJyRwcm92aWRlJywgZnVuY3Rpb24oJHByb3ZpZGUpIHsKKyAgICAgICRwcm92aWRl
LnZhbHVlKCckcm9vdEVsZW1lbnQnLCBlbGVtZW50KTsKKyAgICB9XSk7CisKKyAgICBpZiAoY29u
ZmlnLmRlYnVnSW5mb0VuYWJsZWQpIHsKKyAgICAgIC8vIFB1c2hpbmcgc28gdGhhdCB0aGlzIG92
ZXJyaWRlcyBgZGVidWdJbmZvRW5hYmxlZGAgc2V0dGluZyBkZWZpbmVkIGluIHVzZXIncyBgbW9k
dWxlc2AuCisgICAgICBtb2R1bGVzLnB1c2goWyckY29tcGlsZVByb3ZpZGVyJywgZnVuY3Rpb24o
JGNvbXBpbGVQcm92aWRlcikgeworICAgICAgICAkY29tcGlsZVByb3ZpZGVyLmRlYnVnSW5mb0Vu
YWJsZWQodHJ1ZSk7CisgICAgICB9XSk7CisgICAgfQorCisgICAgbW9kdWxlcy51bnNoaWZ0KCdu
ZycpOworICAgIHZhciBpbmplY3RvciA9IGNyZWF0ZUluamVjdG9yKG1vZHVsZXMsIGNvbmZpZy5z
dHJpY3REaSk7CisgICAgaW5qZWN0b3IuaW52b2tlKFsnJHJvb3RTY29wZScsICckcm9vdEVsZW1l
bnQnLCAnJGNvbXBpbGUnLCAnJGluamVjdG9yJywKKyAgICAgICBmdW5jdGlvbiBib290c3RyYXBB
cHBseShzY29wZSwgZWxlbWVudCwgY29tcGlsZSwgaW5qZWN0b3IpIHsKKyAgICAgICAgc2NvcGUu
JGFwcGx5KGZ1bmN0aW9uKCkgeworICAgICAgICAgIGVsZW1lbnQuZGF0YSgnJGluamVjdG9yJywg
aW5qZWN0b3IpOworICAgICAgICAgIGNvbXBpbGUoZWxlbWVudCkoc2NvcGUpOworICAgICAgICB9
KTsKKyAgICAgIH1dCisgICAgKTsKKyAgICByZXR1cm4gaW5qZWN0b3I7CisgIH07CisKKyAgdmFy
IE5HX0VOQUJMRV9ERUJVR19JTkZPID0gL15OR19FTkFCTEVfREVCVUdfSU5GTyEvOworICB2YXIg
TkdfREVGRVJfQk9PVFNUUkFQID0gL15OR19ERUZFUl9CT09UU1RSQVAhLzsKKworICBpZiAod2lu
ZG93ICYmIE5HX0VOQUJMRV9ERUJVR19JTkZPLnRlc3Qod2luZG93Lm5hbWUpKSB7CisgICAgY29u
ZmlnLmRlYnVnSW5mb0VuYWJsZWQgPSB0cnVlOworICAgIHdpbmRvdy5uYW1lID0gd2luZG93Lm5h
bWUucmVwbGFjZShOR19FTkFCTEVfREVCVUdfSU5GTywgJycpOworICB9CisKKyAgaWYgKHdpbmRv
dyAmJiAhTkdfREVGRVJfQk9PVFNUUkFQLnRlc3Qod2luZG93Lm5hbWUpKSB7CisgICAgcmV0dXJu
IGRvQm9vdHN0cmFwKCk7CisgIH0KKworICB3aW5kb3cubmFtZSA9IHdpbmRvdy5uYW1lLnJlcGxh
Y2UoTkdfREVGRVJfQk9PVFNUUkFQLCAnJyk7CisgIGFuZ3VsYXIucmVzdW1lQm9vdHN0cmFwID0g
ZnVuY3Rpb24oZXh0cmFNb2R1bGVzKSB7CisgICAgZm9yRWFjaChleHRyYU1vZHVsZXMsIGZ1bmN0
aW9uKG1vZHVsZSkgeworICAgICAgbW9kdWxlcy5wdXNoKG1vZHVsZSk7CisgICAgfSk7CisgICAg
cmV0dXJuIGRvQm9vdHN0cmFwKCk7CisgIH07CisKKyAgaWYgKGlzRnVuY3Rpb24oYW5ndWxhci5y
ZXN1bWVEZWZlcnJlZEJvb3RzdHJhcCkpIHsKKyAgICBhbmd1bGFyLnJlc3VtZURlZmVycmVkQm9v
dHN0cmFwKCk7CisgIH0KK30KKworLyoqCisgKiBAbmdkb2MgZnVuY3Rpb24KKyAqIEBuYW1lIGFu
Z3VsYXIucmVsb2FkV2l0aERlYnVnSW5mbworICogQG1vZHVsZSBuZworICogQGRlc2NyaXB0aW9u
CisgKiBVc2UgdGhpcyBmdW5jdGlvbiB0byByZWxvYWQgdGhlIGN1cnJlbnQgYXBwbGljYXRpb24g
d2l0aCBkZWJ1ZyBpbmZvcm1hdGlvbiB0dXJuZWQgb24uCisgKiBUaGlzIHRha2VzIHByZWNlZGVu
Y2Ugb3ZlciBhIGNhbGwgdG8gYCRjb21waWxlUHJvdmlkZXIuZGVidWdJbmZvRW5hYmxlZChmYWxz
ZSlgLgorICoKKyAqIFNlZSB7QGxpbmsgbmcuJGNvbXBpbGVQcm92aWRlciNkZWJ1Z0luZm9FbmFi
bGVkfSBmb3IgbW9yZS4KKyAqLworZnVuY3Rpb24gcmVsb2FkV2l0aERlYnVnSW5mbygpIHsKKyAg
d2luZG93Lm5hbWUgPSAnTkdfRU5BQkxFX0RFQlVHX0lORk8hJyArIHdpbmRvdy5uYW1lOworICB3
aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7Cit9CisKKy8qKgorICogQG5hbWUgYW5ndWxhci5nZXRU
ZXN0YWJpbGl0eQorICogQG1vZHVsZSBuZworICogQGRlc2NyaXB0aW9uCisgKiBHZXQgdGhlIHRl
c3RhYmlsaXR5IHNlcnZpY2UgZm9yIHRoZSBpbnN0YW5jZSBvZiBBbmd1bGFyIG9uIHRoZSBnaXZl
bgorICogZWxlbWVudC4KKyAqIEBwYXJhbSB7RE9NRWxlbWVudH0gZWxlbWVudCBET00gZWxlbWVu
dCB3aGljaCBpcyB0aGUgcm9vdCBvZiBhbmd1bGFyIGFwcGxpY2F0aW9uLgorICovCitmdW5jdGlv
biBnZXRUZXN0YWJpbGl0eShyb290RWxlbWVudCkgeworICB2YXIgaW5qZWN0b3IgPSBhbmd1bGFy
LmVsZW1lbnQocm9vdEVsZW1lbnQpLmluamVjdG9yKCk7CisgIGlmICghaW5qZWN0b3IpIHsKKyAg
ICB0aHJvdyBuZ01pbkVycigndGVzdCcsCisgICAgICAnbm8gaW5qZWN0b3IgZm91bmQgZm9yIGVs
ZW1lbnQgYXJndW1lbnQgdG8gZ2V0VGVzdGFiaWxpdHknKTsKKyAgfQorICByZXR1cm4gaW5qZWN0
b3IuZ2V0KCckJHRlc3RhYmlsaXR5Jyk7Cit9CisKK3ZhciBTTkFLRV9DQVNFX1JFR0VYUCA9IC9b
QS1aXS9nOworZnVuY3Rpb24gc25ha2VfY2FzZShuYW1lLCBzZXBhcmF0b3IpIHsKKyAgc2VwYXJh
dG9yID0gc2VwYXJhdG9yIHx8ICdfJzsKKyAgcmV0dXJuIG5hbWUucmVwbGFjZShTTkFLRV9DQVNF
X1JFR0VYUCwgZnVuY3Rpb24obGV0dGVyLCBwb3MpIHsKKyAgICByZXR1cm4gKHBvcyA/IHNlcGFy
YXRvciA6ICcnKSArIGxldHRlci50b0xvd2VyQ2FzZSgpOworICB9KTsKK30KKwordmFyIGJpbmRK
UXVlcnlGaXJlZCA9IGZhbHNlOwordmFyIHNraXBEZXN0cm95T25OZXh0SlF1ZXJ5Q2xlYW5EYXRh
OworZnVuY3Rpb24gYmluZEpRdWVyeSgpIHsKKyAgdmFyIG9yaWdpbmFsQ2xlYW5EYXRhOworCisg
IGlmIChiaW5kSlF1ZXJ5RmlyZWQpIHsKKyAgICByZXR1cm47CisgIH0KKworICAvLyBiaW5kIHRv
IGpRdWVyeSBpZiBwcmVzZW50OworICB2YXIganFOYW1lID0ganEoKTsKKyAgalF1ZXJ5ID0gd2lu
ZG93LmpRdWVyeTsgLy8gdXNlIGRlZmF1bHQgalF1ZXJ5LgorICBpZiAoaXNEZWZpbmVkKGpxTmFt
ZSkpIHsgLy8gYG5nSnFgIHByZXNlbnQKKyAgICBqUXVlcnkgPSBqcU5hbWUgPT09IG51bGwgPyB1
bmRlZmluZWQgOiB3aW5kb3dbanFOYW1lXTsgLy8gaWYgZW1wdHk7IHVzZSBqcUxpdGUuIGlmIG5v
dCBlbXB0eSwgdXNlIGpRdWVyeSBzcGVjaWZpZWQgYnkgYG5nSnFgLgorICB9CisKKyAgLy8gVXNl
IGpRdWVyeSBpZiBpdCBleGlzdHMgd2l0aCBwcm9wZXIgZnVuY3Rpb25hbGl0eSwgb3RoZXJ3aXNl
IGRlZmF1bHQgdG8gdXMuCisgIC8vIEFuZ3VsYXIgMS4yKyByZXF1aXJlcyBqUXVlcnkgMS43KyBm
b3Igb24oKS9vZmYoKSBzdXBwb3J0LgorICAvLyBBbmd1bGFyIDEuMysgdGVjaG5pY2FsbHkgcmVx
dWlyZXMgYXQgbGVhc3QgalF1ZXJ5IDIuMSsgYnV0IGl0IG1heSB3b3JrIHdpdGggb2xkZXIKKyAg
Ly8gdmVyc2lvbnMuIEl0IHdpbGwgbm90IHdvcmsgZm9yIHN1cmUgd2l0aCBqUXVlcnkgPDEuNywg
dGhvdWdoLgorICBpZiAoalF1ZXJ5ICYmIGpRdWVyeS5mbi5vbikgeworICAgIGpxTGl0ZSA9IGpR
dWVyeTsKKyAgICBleHRlbmQoalF1ZXJ5LmZuLCB7CisgICAgICBzY29wZTogSlFMaXRlUHJvdG90
eXBlLnNjb3BlLAorICAgICAgaXNvbGF0ZVNjb3BlOiBKUUxpdGVQcm90b3R5cGUuaXNvbGF0ZVNj
b3BlLAorICAgICAgY29udHJvbGxlcjogSlFMaXRlUHJvdG90eXBlLmNvbnRyb2xsZXIsCisgICAg
ICBpbmplY3RvcjogSlFMaXRlUHJvdG90eXBlLmluamVjdG9yLAorICAgICAgaW5oZXJpdGVkRGF0
YTogSlFMaXRlUHJvdG90eXBlLmluaGVyaXRlZERhdGEKKyAgICB9KTsKKworICAgIC8vIEFsbCBu
b2RlcyByZW1vdmVkIGZyb20gdGhlIERPTSB2aWEgdmFyaW91cyBqUXVlcnkgQVBJcyBsaWtlIC5y
ZW1vdmUoKQorICAgIC8vIGFyZSBwYXNzZWQgdGhyb3VnaCBqUXVlcnkuY2xlYW5EYXRhLiBNb25r
ZXktcGF0Y2ggdGhpcyBtZXRob2QgdG8gZmlyZQorICAgIC8vIHRoZSAkZGVzdHJveSBldmVudCBv
biBhbGwgcmVtb3ZlZCBub2Rlcy4KKyAgICBvcmlnaW5hbENsZWFuRGF0YSA9IGpRdWVyeS5jbGVh
bkRhdGE7CisgICAgalF1ZXJ5LmNsZWFuRGF0YSA9IGZ1bmN0aW9uKGVsZW1zKSB7CisgICAgICB2
YXIgZXZlbnRzOworICAgICAgaWYgKCFza2lwRGVzdHJveU9uTmV4dEpRdWVyeUNsZWFuRGF0YSkg
eworICAgICAgICBmb3IgKHZhciBpID0gMCwgZWxlbTsgKGVsZW0gPSBlbGVtc1tpXSkgIT0gbnVs
bDsgaSsrKSB7CisgICAgICAgICAgZXZlbnRzID0galF1ZXJ5Ll9kYXRhKGVsZW0sICJldmVudHMi
KTsKKyAgICAgICAgICBpZiAoZXZlbnRzICYmIGV2ZW50cy4kZGVzdHJveSkgeworICAgICAgICAg
ICAgalF1ZXJ5KGVsZW0pLnRyaWdnZXJIYW5kbGVyKCckZGVzdHJveScpOworICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgfSBlbHNlIHsKKyAgICAgICAgc2tpcERlc3Ryb3lPbk5leHRKUXVl
cnlDbGVhbkRhdGEgPSBmYWxzZTsKKyAgICAgIH0KKyAgICAgIG9yaWdpbmFsQ2xlYW5EYXRhKGVs
ZW1zKTsKKyAgICB9OworICB9IGVsc2UgeworICAgIGpxTGl0ZSA9IEpRTGl0ZTsKKyAgfQorCisg
IGFuZ3VsYXIuZWxlbWVudCA9IGpxTGl0ZTsKKworICAvLyBQcmV2ZW50IGRvdWJsZS1wcm94eWlu
Zy4KKyAgYmluZEpRdWVyeUZpcmVkID0gdHJ1ZTsKK30KKworLyoqCisgKiB0aHJvdyBlcnJvciBp
ZiB0aGUgYXJndW1lbnQgaXMgZmFsc3kuCisgKi8KK2Z1bmN0aW9uIGFzc2VydEFyZyhhcmcsIG5h
bWUsIHJlYXNvbikgeworICBpZiAoIWFyZykgeworICAgIHRocm93IG5nTWluRXJyKCdhcmVxJywg
IkFyZ3VtZW50ICd7MH0nIGlzIHsxfSIsIChuYW1lIHx8ICc/JyksIChyZWFzb24gfHwgInJlcXVp
cmVkIikpOworICB9CisgIHJldHVybiBhcmc7Cit9CisKK2Z1bmN0aW9uIGFzc2VydEFyZ0ZuKGFy
ZywgbmFtZSwgYWNjZXB0QXJyYXlBbm5vdGF0aW9uKSB7CisgIGlmIChhY2NlcHRBcnJheUFubm90
YXRpb24gJiYgaXNBcnJheShhcmcpKSB7CisgICAgICBhcmcgPSBhcmdbYXJnLmxlbmd0aCAtIDFd
OworICB9CisKKyAgYXNzZXJ0QXJnKGlzRnVuY3Rpb24oYXJnKSwgbmFtZSwgJ25vdCBhIGZ1bmN0
aW9uLCBnb3QgJyArCisgICAgICAoYXJnICYmIHR5cGVvZiBhcmcgPT09ICdvYmplY3QnID8gYXJn
LmNvbnN0cnVjdG9yLm5hbWUgfHwgJ09iamVjdCcgOiB0eXBlb2YgYXJnKSk7CisgIHJldHVybiBh
cmc7Cit9CisKKy8qKgorICogdGhyb3cgZXJyb3IgaWYgdGhlIG5hbWUgZ2l2ZW4gaXMgaGFzT3du
UHJvcGVydHkKKyAqIEBwYXJhbSAge1N0cmluZ30gbmFtZSAgICB0aGUgbmFtZSB0byB0ZXN0Cisg
KiBAcGFyYW0gIHtTdHJpbmd9IGNvbnRleHQgdGhlIGNvbnRleHQgaW4gd2hpY2ggdGhlIG5hbWUg
aXMgdXNlZCwgc3VjaCBhcyBtb2R1bGUgb3IgZGlyZWN0aXZlCisgKi8KK2Z1bmN0aW9uIGFzc2Vy
dE5vdEhhc093blByb3BlcnR5KG5hbWUsIGNvbnRleHQpIHsKKyAgaWYgKG5hbWUgPT09ICdoYXNP
d25Qcm9wZXJ0eScpIHsKKyAgICB0aHJvdyBuZ01pbkVycignYmFkbmFtZScsICJoYXNPd25Qcm9w
ZXJ0eSBpcyBub3QgYSB2YWxpZCB7MH0gbmFtZSIsIGNvbnRleHQpOworICB9Cit9CisKKy8qKgor
ICogUmV0dXJuIHRoZSB2YWx1ZSBhY2Nlc3NpYmxlIGZyb20gdGhlIG9iamVjdCBieSBwYXRoLiBB
bnkgdW5kZWZpbmVkIHRyYXZlcnNhbHMgYXJlIGlnbm9yZWQKKyAqIEBwYXJhbSB7T2JqZWN0fSBv
Ymogc3RhcnRpbmcgb2JqZWN0CisgKiBAcGFyYW0ge1N0cmluZ30gcGF0aCBwYXRoIHRvIHRyYXZl
cnNlCisgKiBAcGFyYW0ge2Jvb2xlYW59IFtiaW5kRm5Ub1Njb3BlPXRydWVdCisgKiBAcmV0dXJu
cyB7T2JqZWN0fSB2YWx1ZSBhcyBhY2Nlc3NpYmxlIGJ5IHBhdGgKKyAqLworLy9UT0RPKG1pc2tv
KTogdGhpcyBmdW5jdGlvbiBuZWVkcyB0byBiZSByZW1vdmVkCitmdW5jdGlvbiBnZXR0ZXIob2Jq
LCBwYXRoLCBiaW5kRm5Ub1Njb3BlKSB7CisgIGlmICghcGF0aCkgcmV0dXJuIG9iajsKKyAgdmFy
IGtleXMgPSBwYXRoLnNwbGl0KCcuJyk7CisgIHZhciBrZXk7CisgIHZhciBsYXN0SW5zdGFuY2Ug
PSBvYmo7CisgIHZhciBsZW4gPSBrZXlzLmxlbmd0aDsKKworICBmb3IgKHZhciBpID0gMDsgaSA8
IGxlbjsgaSsrKSB7CisgICAga2V5ID0ga2V5c1tpXTsKKyAgICBpZiAob2JqKSB7CisgICAgICBv
YmogPSAobGFzdEluc3RhbmNlID0gb2JqKVtrZXldOworICAgIH0KKyAgfQorICBpZiAoIWJpbmRG
blRvU2NvcGUgJiYgaXNGdW5jdGlvbihvYmopKSB7CisgICAgcmV0dXJuIGJpbmQobGFzdEluc3Rh
bmNlLCBvYmopOworICB9CisgIHJldHVybiBvYmo7Cit9CisKKy8qKgorICogUmV0dXJuIHRoZSBE
T00gc2libGluZ3MgYmV0d2VlbiB0aGUgZmlyc3QgYW5kIGxhc3Qgbm9kZSBpbiB0aGUgZ2l2ZW4g
YXJyYXkuCisgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBsaWtlIG9iamVjdAorICogQHJldHVybnMg
e2pxTGl0ZX0ganFMaXRlIGNvbGxlY3Rpb24gY29udGFpbmluZyB0aGUgbm9kZXMKKyAqLworZnVu
Y3Rpb24gZ2V0QmxvY2tOb2Rlcyhub2RlcykgeworICAvLyBUT0RPKHBlcmYpOiBqdXN0IGNoZWNr
IGlmIGFsbCBpdGVtcyBpbiBgbm9kZXNgIGFyZSBzaWJsaW5ncyBhbmQgaWYgdGhleSBhcmUgcmV0
dXJuIHRoZSBvcmlnaW5hbAorICAvLyAgICAgICAgICAgICBjb2xsZWN0aW9uLCBvdGhlcndpc2Ug
dXBkYXRlIHRoZSBvcmlnaW5hbCBjb2xsZWN0aW9uLgorICB2YXIgbm9kZSA9IG5vZGVzWzBdOwor
ICB2YXIgZW5kTm9kZSA9IG5vZGVzW25vZGVzLmxlbmd0aCAtIDFdOworICB2YXIgYmxvY2tOb2Rl
cyA9IFtub2RlXTsKKworICBkbyB7CisgICAgbm9kZSA9IG5vZGUubmV4dFNpYmxpbmc7CisgICAg
aWYgKCFub2RlKSBicmVhazsKKyAgICBibG9ja05vZGVzLnB1c2gobm9kZSk7CisgIH0gd2hpbGUg
KG5vZGUgIT09IGVuZE5vZGUpOworCisgIHJldHVybiBqcUxpdGUoYmxvY2tOb2Rlcyk7Cit9CisK
KworLyoqCisgKiBDcmVhdGVzIGEgbmV3IG9iamVjdCB3aXRob3V0IGEgcHJvdG90eXBlLiBUaGlz
IG9iamVjdCBpcyB1c2VmdWwgZm9yIGxvb2t1cCB3aXRob3V0IGhhdmluZyB0bworICogZ3VhcmQg
YWdhaW5zdCBwcm90b3R5cGljYWxseSBpbmhlcml0ZWQgcHJvcGVydGllcyB2aWEgaGFzT3duUHJv
cGVydHkuCisgKgorICogUmVsYXRlZCBtaWNyby1iZW5jaG1hcmtzOgorICogLSBodHRwOi8vanNw
ZXJmLmNvbS9vYmplY3QtY3JlYXRlMgorICogLSBodHRwOi8vanNwZXJmLmNvbS9wcm90by1tYXAt
bG9va3VwLzIKKyAqIC0gaHR0cDovL2pzcGVyZi5jb20vZm9yLWluLXZzLW9iamVjdC1rZXlzMgor
ICoKKyAqIEByZXR1cm5zIHtPYmplY3R9CisgKi8KK2Z1bmN0aW9uIGNyZWF0ZU1hcCgpIHsKKyAg
cmV0dXJuIE9iamVjdC5jcmVhdGUobnVsbCk7Cit9CisKK3ZhciBOT0RFX1RZUEVfRUxFTUVOVCA9
IDE7Cit2YXIgTk9ERV9UWVBFX0FUVFJJQlVURSA9IDI7Cit2YXIgTk9ERV9UWVBFX1RFWFQgPSAz
OwordmFyIE5PREVfVFlQRV9DT01NRU5UID0gODsKK3ZhciBOT0RFX1RZUEVfRE9DVU1FTlQgPSA5
OwordmFyIE5PREVfVFlQRV9ET0NVTUVOVF9GUkFHTUVOVCA9IDExOworCisvKioKKyAqIEBuZ2Rv
YyB0eXBlCisgKiBAbmFtZSBhbmd1bGFyLk1vZHVsZQorICogQG1vZHVsZSBuZworICogQGRlc2Ny
aXB0aW9uCisgKgorICogSW50ZXJmYWNlIGZvciBjb25maWd1cmluZyBhbmd1bGFyIHtAbGluayBh
bmd1bGFyLm1vZHVsZSBtb2R1bGVzfS4KKyAqLworCitmdW5jdGlvbiBzZXR1cE1vZHVsZUxvYWRl
cih3aW5kb3cpIHsKKworICB2YXIgJGluamVjdG9yTWluRXJyID0gbWluRXJyKCckaW5qZWN0b3In
KTsKKyAgdmFyIG5nTWluRXJyID0gbWluRXJyKCduZycpOworCisgIGZ1bmN0aW9uIGVuc3VyZShv
YmosIG5hbWUsIGZhY3RvcnkpIHsKKyAgICByZXR1cm4gb2JqW25hbWVdIHx8IChvYmpbbmFtZV0g
PSBmYWN0b3J5KCkpOworICB9CisKKyAgdmFyIGFuZ3VsYXIgPSBlbnN1cmUod2luZG93LCAnYW5n
dWxhcicsIE9iamVjdCk7CisKKyAgLy8gV2UgbmVlZCB0byBleHBvc2UgYGFuZ3VsYXIuJCRtaW5F
cnJgIHRvIG1vZHVsZXMgc3VjaCBhcyBgbmdSZXNvdXJjZWAgdGhhdCByZWZlcmVuY2UgaXQgZHVy
aW5nIGJvb3RzdHJhcAorICBhbmd1bGFyLiQkbWluRXJyID0gYW5ndWxhci4kJG1pbkVyciB8fCBt
aW5FcnI7CisKKyAgcmV0dXJuIGVuc3VyZShhbmd1bGFyLCAnbW9kdWxlJywgZnVuY3Rpb24oKSB7
CisgICAgLyoqIEB0eXBlIHtPYmplY3QuPHN0cmluZywgYW5ndWxhci5Nb2R1bGU+fSAqLworICAg
IHZhciBtb2R1bGVzID0ge307CisKKyAgICAvKioKKyAgICAgKiBAbmdkb2MgZnVuY3Rpb24KKyAg
ICAgKiBAbmFtZSBhbmd1bGFyLm1vZHVsZQorICAgICAqIEBtb2R1bGUgbmcKKyAgICAgKiBAZGVz
Y3JpcHRpb24KKyAgICAgKgorICAgICAqIFRoZSBgYW5ndWxhci5tb2R1bGVgIGlzIGEgZ2xvYmFs
IHBsYWNlIGZvciBjcmVhdGluZywgcmVnaXN0ZXJpbmcgYW5kIHJldHJpZXZpbmcgQW5ndWxhcgor
ICAgICAqIG1vZHVsZXMuCisgICAgICogQWxsIG1vZHVsZXMgKGFuZ3VsYXIgY29yZSBvciAzcmQg
cGFydHkpIHRoYXQgc2hvdWxkIGJlIGF2YWlsYWJsZSB0byBhbiBhcHBsaWNhdGlvbiBtdXN0IGJl
CisgICAgICogcmVnaXN0ZXJlZCB1c2luZyB0aGlzIG1lY2hhbmlzbS4KKyAgICAgKgorICAgICAq
IFdoZW4gcGFzc2VkIHR3byBvciBtb3JlIGFyZ3VtZW50cywgYSBuZXcgbW9kdWxlIGlzIGNyZWF0
ZWQuICBJZiBwYXNzZWQgb25seSBvbmUgYXJndW1lbnQsIGFuCisgICAgICogZXhpc3RpbmcgbW9k
dWxlICh0aGUgbmFtZSBwYXNzZWQgYXMgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIGBtb2R1bGVgKSBp
cyByZXRyaWV2ZWQuCisgICAgICoKKyAgICAgKgorICAgICAqICMgTW9kdWxlCisgICAgICoKKyAg
ICAgKiBBIG1vZHVsZSBpcyBhIGNvbGxlY3Rpb24gb2Ygc2VydmljZXMsIGRpcmVjdGl2ZXMsIGNv
bnRyb2xsZXJzLCBmaWx0ZXJzLCBhbmQgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbi4KKyAgICAg
KiBgYW5ndWxhci5tb2R1bGVgIGlzIHVzZWQgdG8gY29uZmlndXJlIHRoZSB7QGxpbmsgYXV0by4k
aW5qZWN0b3IgJGluamVjdG9yfS4KKyAgICAgKgorICAgICAqIGBgYGpzCisgICAgICogLy8gQ3Jl
YXRlIGEgbmV3IG1vZHVsZQorICAgICAqIHZhciBteU1vZHVsZSA9IGFuZ3VsYXIubW9kdWxlKCdt
eU1vZHVsZScsIFtdKTsKKyAgICAgKgorICAgICAqIC8vIHJlZ2lzdGVyIGEgbmV3IHNlcnZpY2UK
KyAgICAgKiBteU1vZHVsZS52YWx1ZSgnYXBwTmFtZScsICdNeUNvb2xBcHAnKTsKKyAgICAgKgor
ICAgICAqIC8vIGNvbmZpZ3VyZSBleGlzdGluZyBzZXJ2aWNlcyBpbnNpZGUgaW5pdGlhbGl6YXRp
b24gYmxvY2tzLgorICAgICAqIG15TW9kdWxlLmNvbmZpZyhbJyRsb2NhdGlvblByb3ZpZGVyJywg
ZnVuY3Rpb24oJGxvY2F0aW9uUHJvdmlkZXIpIHsKKyAgICAgKiAgIC8vIENvbmZpZ3VyZSBleGlz
dGluZyBwcm92aWRlcnMKKyAgICAgKiAgICRsb2NhdGlvblByb3ZpZGVyLmhhc2hQcmVmaXgoJyEn
KTsKKyAgICAgKiB9XSk7CisgICAgICogYGBgCisgICAgICoKKyAgICAgKiBUaGVuIHlvdSBjYW4g
Y3JlYXRlIGFuIGluamVjdG9yIGFuZCBsb2FkIHlvdXIgbW9kdWxlcyBsaWtlIHRoaXM6CisgICAg
ICoKKyAgICAgKiBgYGBqcworICAgICAqIHZhciBpbmplY3RvciA9IGFuZ3VsYXIuaW5qZWN0b3Io
WyduZycsICdteU1vZHVsZSddKQorICAgICAqIGBgYAorICAgICAqCisgICAgICogSG93ZXZlciBp
dCdzIG1vcmUgbGlrZWx5IHRoYXQgeW91J2xsIGp1c3QgdXNlCisgICAgICoge0BsaW5rIG5nLmRp
cmVjdGl2ZTpuZ0FwcCBuZ0FwcH0gb3IKKyAgICAgKiB7QGxpbmsgYW5ndWxhci5ib290c3RyYXB9
IHRvIHNpbXBsaWZ5IHRoaXMgcHJvY2VzcyBmb3IgeW91LgorICAgICAqCisgICAgICogQHBhcmFt
IHshc3RyaW5nfSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdG8gY3JlYXRlIG9yIHJldHJp
ZXZlLgorICAgICAqIEBwYXJhbSB7IUFycmF5LjxzdHJpbmc+PX0gcmVxdWlyZXMgSWYgc3BlY2lm
aWVkIHRoZW4gbmV3IG1vZHVsZSBpcyBiZWluZyBjcmVhdGVkLiBJZgorICAgICAqICAgICAgICB1
bnNwZWNpZmllZCB0aGVuIHRoZSBtb2R1bGUgaXMgYmVpbmcgcmV0cmlldmVkIGZvciBmdXJ0aGVy
IGNvbmZpZ3VyYXRpb24uCisgICAgICogQHBhcmFtIHtGdW5jdGlvbj19IGNvbmZpZ0ZuIE9wdGlv
bmFsIGNvbmZpZ3VyYXRpb24gZnVuY3Rpb24gZm9yIHRoZSBtb2R1bGUuIFNhbWUgYXMKKyAgICAg
KiAgICAgICAge0BsaW5rIGFuZ3VsYXIuTW9kdWxlI2NvbmZpZyBNb2R1bGUjY29uZmlnKCl9Lgor
ICAgICAqIEByZXR1cm5zIHttb2R1bGV9IG5ldyBtb2R1bGUgd2l0aCB0aGUge0BsaW5rIGFuZ3Vs
YXIuTW9kdWxlfSBhcGkuCisgICAgICovCisgICAgcmV0dXJuIGZ1bmN0aW9uIG1vZHVsZShuYW1l
LCByZXF1aXJlcywgY29uZmlnRm4pIHsKKyAgICAgIHZhciBhc3NlcnROb3RIYXNPd25Qcm9wZXJ0
eSA9IGZ1bmN0aW9uKG5hbWUsIGNvbnRleHQpIHsKKyAgICAgICAgaWYgKG5hbWUgPT09ICdoYXNP
d25Qcm9wZXJ0eScpIHsKKyAgICAgICAgICB0aHJvdyBuZ01pbkVycignYmFkbmFtZScsICdoYXNP
d25Qcm9wZXJ0eSBpcyBub3QgYSB2YWxpZCB7MH0gbmFtZScsIGNvbnRleHQpOworICAgICAgICB9
CisgICAgICB9OworCisgICAgICBhc3NlcnROb3RIYXNPd25Qcm9wZXJ0eShuYW1lLCAnbW9kdWxl
Jyk7CisgICAgICBpZiAocmVxdWlyZXMgJiYgbW9kdWxlcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkg
eworICAgICAgICBtb2R1bGVzW25hbWVdID0gbnVsbDsKKyAgICAgIH0KKyAgICAgIHJldHVybiBl
bnN1cmUobW9kdWxlcywgbmFtZSwgZnVuY3Rpb24oKSB7CisgICAgICAgIGlmICghcmVxdWlyZXMp
IHsKKyAgICAgICAgICB0aHJvdyAkaW5qZWN0b3JNaW5FcnIoJ25vbW9kJywgIk1vZHVsZSAnezB9
JyBpcyBub3QgYXZhaWxhYmxlISBZb3UgZWl0aGVyIG1pc3NwZWxsZWQgIiArCisgICAgICAgICAg
ICAgInRoZSBtb2R1bGUgbmFtZSBvciBmb3Jnb3QgdG8gbG9hZCBpdC4gSWYgcmVnaXN0ZXJpbmcg
YSBtb2R1bGUgZW5zdXJlIHRoYXQgeW91ICIgKworICAgICAgICAgICAgICJzcGVjaWZ5IHRoZSBk
ZXBlbmRlbmNpZXMgYXMgdGhlIHNlY29uZCBhcmd1bWVudC4iLCBuYW1lKTsKKyAgICAgICAgfQor
CisgICAgICAgIC8qKiBAdHlwZSB7IUFycmF5LjxBcnJheS48Kj4+fSAqLworICAgICAgICB2YXIg
aW52b2tlUXVldWUgPSBbXTsKKworICAgICAgICAvKiogQHR5cGUgeyFBcnJheS48RnVuY3Rpb24+
fSAqLworICAgICAgICB2YXIgY29uZmlnQmxvY2tzID0gW107CisKKyAgICAgICAgLyoqIEB0eXBl
IHshQXJyYXkuPEZ1bmN0aW9uPn0gKi8KKyAgICAgICAgdmFyIHJ1bkJsb2NrcyA9IFtdOworCisg
ICAgICAgIHZhciBjb25maWcgPSBpbnZva2VMYXRlcignJGluamVjdG9yJywgJ2ludm9rZScsICdw
dXNoJywgY29uZmlnQmxvY2tzKTsKKworICAgICAgICAvKiogQHR5cGUge2FuZ3VsYXIuTW9kdWxl
fSAqLworICAgICAgICB2YXIgbW9kdWxlSW5zdGFuY2UgPSB7CisgICAgICAgICAgLy8gUHJpdmF0
ZSBzdGF0ZQorICAgICAgICAgIF9pbnZva2VRdWV1ZTogaW52b2tlUXVldWUsCisgICAgICAgICAg
X2NvbmZpZ0Jsb2NrczogY29uZmlnQmxvY2tzLAorICAgICAgICAgIF9ydW5CbG9ja3M6IHJ1bkJs
b2NrcywKKworICAgICAgICAgIC8qKgorICAgICAgICAgICAqIEBuZ2RvYyBwcm9wZXJ0eQorICAg
ICAgICAgICAqIEBuYW1lIGFuZ3VsYXIuTW9kdWxlI3JlcXVpcmVzCisgICAgICAgICAgICogQG1v
ZHVsZSBuZworICAgICAgICAgICAqCisgICAgICAgICAgICogQGRlc2NyaXB0aW9uCisgICAgICAg
ICAgICogSG9sZHMgdGhlIGxpc3Qgb2YgbW9kdWxlcyB3aGljaCB0aGUgaW5qZWN0b3Igd2lsbCBs
b2FkIGJlZm9yZSB0aGUgY3VycmVudCBtb2R1bGUgaXMKKyAgICAgICAgICAgKiBsb2FkZWQuCisg
ICAgICAgICAgICovCisgICAgICAgICAgcmVxdWlyZXM6IHJlcXVpcmVzLAorCisgICAgICAgICAg
LyoqCisgICAgICAgICAgICogQG5nZG9jIHByb3BlcnR5CisgICAgICAgICAgICogQG5hbWUgYW5n
dWxhci5Nb2R1bGUjbmFtZQorICAgICAgICAgICAqIEBtb2R1bGUgbmcKKyAgICAgICAgICAgKgor
ICAgICAgICAgICAqIEBkZXNjcmlwdGlvbgorICAgICAgICAgICAqIE5hbWUgb2YgdGhlIG1vZHVs
ZS4KKyAgICAgICAgICAgKi8KKyAgICAgICAgICBuYW1lOiBuYW1lLAorCisKKyAgICAgICAgICAv
KioKKyAgICAgICAgICAgKiBAbmdkb2MgbWV0aG9kCisgICAgICAgICAgICogQG5hbWUgYW5ndWxh
ci5Nb2R1bGUjcHJvdmlkZXIKKyAgICAgICAgICAgKiBAbW9kdWxlIG5nCisgICAgICAgICAgICog
QHBhcmFtIHtzdHJpbmd9IG5hbWUgc2VydmljZSBuYW1lCisgICAgICAgICAgICogQHBhcmFtIHtG
dW5jdGlvbn0gcHJvdmlkZXJUeXBlIENvbnN0cnVjdGlvbiBmdW5jdGlvbiBmb3IgY3JlYXRpbmcg
bmV3IGluc3RhbmNlIG9mIHRoZQorICAgICAgICAgICAqICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXJ2aWNlLgorICAgICAgICAgICAqIEBkZXNjcmlwdGlvbgorICAgICAgICAgICAq
IFNlZSB7QGxpbmsgYXV0by4kcHJvdmlkZSNwcm92aWRlciAkcHJvdmlkZS5wcm92aWRlcigpfS4K
KyAgICAgICAgICAgKi8KKyAgICAgICAgICBwcm92aWRlcjogaW52b2tlTGF0ZXJBbmRTZXRNb2R1
bGVOYW1lKCckcHJvdmlkZScsICdwcm92aWRlcicpLAorCisgICAgICAgICAgLyoqCisgICAgICAg
ICAgICogQG5nZG9jIG1ldGhvZAorICAgICAgICAgICAqIEBuYW1lIGFuZ3VsYXIuTW9kdWxlI2Zh
Y3RvcnkKKyAgICAgICAgICAgKiBAbW9kdWxlIG5nCisgICAgICAgICAgICogQHBhcmFtIHtzdHJp
bmd9IG5hbWUgc2VydmljZSBuYW1lCisgICAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gcHJv
dmlkZXJGdW5jdGlvbiBGdW5jdGlvbiBmb3IgY3JlYXRpbmcgbmV3IGluc3RhbmNlIG9mIHRoZSBz
ZXJ2aWNlLgorICAgICAgICAgICAqIEBkZXNjcmlwdGlvbgorICAgICAgICAgICAqIFNlZSB7QGxp
bmsgYXV0by4kcHJvdmlkZSNmYWN0b3J5ICRwcm92aWRlLmZhY3RvcnkoKX0uCisgICAgICAgICAg
ICovCisgICAgICAgICAgZmFjdG9yeTogaW52b2tlTGF0ZXJBbmRTZXRNb2R1bGVOYW1lKCckcHJv
dmlkZScsICdmYWN0b3J5JyksCisKKyAgICAgICAgICAvKioKKyAgICAgICAgICAgKiBAbmdkb2Mg
bWV0aG9kCisgICAgICAgICAgICogQG5hbWUgYW5ndWxhci5Nb2R1bGUjc2VydmljZQorICAgICAg
ICAgICAqIEBtb2R1bGUgbmcKKyAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBzZXJ2
aWNlIG5hbWUKKyAgICAgICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjb25zdHJ1Y3RvciBBIGNv
bnN0cnVjdG9yIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBpbnN0YW50aWF0ZWQuCisgICAgICAgICAg
ICogQGRlc2NyaXB0aW9uCisgICAgICAgICAgICogU2VlIHtAbGluayBhdXRvLiRwcm92aWRlI3Nl
cnZpY2UgJHByb3ZpZGUuc2VydmljZSgpfS4KKyAgICAgICAgICAgKi8KKyAgICAgICAgICBzZXJ2
aWNlOiBpbnZva2VMYXRlckFuZFNldE1vZHVsZU5hbWUoJyRwcm92aWRlJywgJ3NlcnZpY2UnKSwK
KworICAgICAgICAgIC8qKgorICAgICAgICAgICAqIEBuZ2RvYyBtZXRob2QKKyAgICAgICAgICAg
KiBAbmFtZSBhbmd1bGFyLk1vZHVsZSN2YWx1ZQorICAgICAgICAgICAqIEBtb2R1bGUgbmcKKyAg
ICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBzZXJ2aWNlIG5hbWUKKyAgICAgICAgICAg
KiBAcGFyYW0geyp9IG9iamVjdCBTZXJ2aWNlIGluc3RhbmNlIG9iamVjdC4KKyAgICAgICAgICAg
KiBAZGVzY3JpcHRpb24KKyAgICAgICAgICAgKiBTZWUge0BsaW5rIGF1dG8uJHByb3ZpZGUjdmFs
dWUgJHByb3ZpZGUudmFsdWUoKX0uCisgICAgICAgICAgICovCisgICAgICAgICAgdmFsdWU6IGlu
dm9rZUxhdGVyKCckcHJvdmlkZScsICd2YWx1ZScpLAorCisgICAgICAgICAgLyoqCisgICAgICAg
ICAgICogQG5nZG9jIG1ldGhvZAorICAgICAgICAgICAqIEBuYW1lIGFuZ3VsYXIuTW9kdWxlI2Nv
bnN0YW50CisgICAgICAgICAgICogQG1vZHVsZSBuZworICAgICAgICAgICAqIEBwYXJhbSB7c3Ry
aW5nfSBuYW1lIGNvbnN0YW50IG5hbWUKKyAgICAgICAgICAgKiBAcGFyYW0geyp9IG9iamVjdCBD
b25zdGFudCB2YWx1ZS4KKyAgICAgICAgICAgKiBAZGVzY3JpcHRpb24KKyAgICAgICAgICAgKiBC
ZWNhdXNlIHRoZSBjb25zdGFudCBhcmUgZml4ZWQsIHRoZXkgZ2V0IGFwcGxpZWQgYmVmb3JlIG90
aGVyIHByb3ZpZGUgbWV0aG9kcy4KKyAgICAgICAgICAgKiBTZWUge0BsaW5rIGF1dG8uJHByb3Zp
ZGUjY29uc3RhbnQgJHByb3ZpZGUuY29uc3RhbnQoKX0uCisgICAgICAgICAgICovCisgICAgICAg
ICAgY29uc3RhbnQ6IGludm9rZUxhdGVyKCckcHJvdmlkZScsICdjb25zdGFudCcsICd1bnNoaWZ0
JyksCisKKyAgICAgICAgICAgLyoqCisgICAgICAgICAgICogQG5nZG9jIG1ldGhvZAorICAgICAg
ICAgICAqIEBuYW1lIGFuZ3VsYXIuTW9kdWxlI2RlY29yYXRvcgorICAgICAgICAgICAqIEBtb2R1
bGUgbmcKKyAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gVGhlIG5hbWUgb2YgdGhlIHNlcnZp
Y2UgdG8gZGVjb3JhdGUuCisgICAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gVGhpcyBmdW5j
dGlvbiB3aWxsIGJlIGludm9rZWQgd2hlbiB0aGUgc2VydmljZSBuZWVkcyB0byBiZQorICAgICAg
ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFudGlhdGVkIGFu
ZCBzaG91bGQgcmV0dXJuIHRoZSBkZWNvcmF0ZWQgc2VydmljZSBpbnN0YW5jZS4KKyAgICAgICAg
ICAgKiBAZGVzY3JpcHRpb24KKyAgICAgICAgICAgKiBTZWUge0BsaW5rIGF1dG8uJHByb3ZpZGUj
ZGVjb3JhdG9yICRwcm92aWRlLmRlY29yYXRvcigpfS4KKyAgICAgICAgICAgKi8KKyAgICAgICAg
ICBkZWNvcmF0b3I6IGludm9rZUxhdGVyQW5kU2V0TW9kdWxlTmFtZSgnJHByb3ZpZGUnLCAnZGVj
b3JhdG9yJyksCisKKyAgICAgICAgICAvKioKKyAgICAgICAgICAgKiBAbmdkb2MgbWV0aG9kCisg
ICAgICAgICAgICogQG5hbWUgYW5ndWxhci5Nb2R1bGUjYW5pbWF0aW9uCisgICAgICAgICAgICog
QG1vZHVsZSBuZworICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIGFuaW1hdGlvbiBu
YW1lCisgICAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gYW5pbWF0aW9uRmFjdG9yeSBGYWN0
b3J5IGZ1bmN0aW9uIGZvciBjcmVhdGluZyBuZXcgaW5zdGFuY2Ugb2YgYW4KKyAgICAgICAgICAg
KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbi4KKyAgICAgICAg
ICAgKiBAZGVzY3JpcHRpb24KKyAgICAgICAgICAgKgorICAgICAgICAgICAqICoqTk9URSoqOiBh
bmltYXRpb25zIHRha2UgZWZmZWN0IG9ubHkgaWYgdGhlICoqbmdBbmltYXRlKiogbW9kdWxlIGlz
IGxvYWRlZC4KKyAgICAgICAgICAgKgorICAgICAgICAgICAqCisgICAgICAgICAgICogRGVmaW5l
cyBhbiBhbmltYXRpb24gaG9vayB0aGF0IGNhbiBiZSBsYXRlciB1c2VkIHdpdGgKKyAgICAgICAg
ICAgKiB7QGxpbmsgJGFuaW1hdGUgJGFuaW1hdGV9IHNlcnZpY2UgYW5kIGRpcmVjdGl2ZXMgdGhh
dCB1c2UgdGhpcyBzZXJ2aWNlLgorICAgICAgICAgICAqCisgICAgICAgICAgICogYGBganMKKyAg
ICAgICAgICAgKiBtb2R1bGUuYW5pbWF0aW9uKCcuYW5pbWF0aW9uLW5hbWUnLCBmdW5jdGlvbigk
aW5qZWN0MSwgJGluamVjdDIpIHsKKyAgICAgICAgICAgKiAgIHJldHVybiB7CisgICAgICAgICAg
ICogICAgIGV2ZW50TmFtZSA6IGZ1bmN0aW9uKGVsZW1lbnQsIGRvbmUpIHsKKyAgICAgICAgICAg
KiAgICAgICAvL2NvZGUgdG8gcnVuIHRoZSBhbmltYXRpb24KKyAgICAgICAgICAgKiAgICAgICAv
L29uY2UgY29tcGxldGUsIHRoZW4gcnVuIGRvbmUoKQorICAgICAgICAgICAqICAgICAgIHJldHVy
biBmdW5jdGlvbiBjYW5jZWxsYXRpb25GdW5jdGlvbihlbGVtZW50KSB7CisgICAgICAgICAgICog
ICAgICAgICAvL2NvZGUgdG8gY2FuY2VsIHRoZSBhbmltYXRpb24KKyAgICAgICAgICAgKiAgICAg
ICB9CisgICAgICAgICAgICogICAgIH0KKyAgICAgICAgICAgKiAgIH0KKyAgICAgICAgICAgKiB9
KQorICAgICAgICAgICAqIGBgYAorICAgICAgICAgICAqCisgICAgICAgICAgICogU2VlIHtAbGlu
ayBuZy4kYW5pbWF0ZVByb3ZpZGVyI3JlZ2lzdGVyICRhbmltYXRlUHJvdmlkZXIucmVnaXN0ZXIo
KX0gYW5kCisgICAgICAgICAgICoge0BsaW5rIG5nQW5pbWF0ZSBuZ0FuaW1hdGUgbW9kdWxlfSBm
b3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgKi8KKyAgICAgICAgICBhbmltYXRpb246
IGludm9rZUxhdGVyQW5kU2V0TW9kdWxlTmFtZSgnJGFuaW1hdGVQcm92aWRlcicsICdyZWdpc3Rl
cicpLAorCisgICAgICAgICAgLyoqCisgICAgICAgICAgICogQG5nZG9jIG1ldGhvZAorICAgICAg
ICAgICAqIEBuYW1lIGFuZ3VsYXIuTW9kdWxlI2ZpbHRlcgorICAgICAgICAgICAqIEBtb2R1bGUg
bmcKKyAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBGaWx0ZXIgbmFtZSAtIHRoaXMg
bXVzdCBiZSBhIHZhbGlkIGFuZ3VsYXIgZXhwcmVzc2lvbiBpZGVudGlmaWVyCisgICAgICAgICAg
ICogQHBhcmFtIHtGdW5jdGlvbn0gZmlsdGVyRmFjdG9yeSBGYWN0b3J5IGZ1bmN0aW9uIGZvciBj
cmVhdGluZyBuZXcgaW5zdGFuY2Ugb2YgZmlsdGVyLgorICAgICAgICAgICAqIEBkZXNjcmlwdGlv
bgorICAgICAgICAgICAqIFNlZSB7QGxpbmsgbmcuJGZpbHRlclByb3ZpZGVyI3JlZ2lzdGVyICRm
aWx0ZXJQcm92aWRlci5yZWdpc3RlcigpfS4KKyAgICAgICAgICAgKgorICAgICAgICAgICAqIDxk
aXYgY2xhc3M9ImFsZXJ0IGFsZXJ0LXdhcm5pbmciPgorICAgICAgICAgICAqICoqTm90ZToqKiBG
aWx0ZXIgbmFtZXMgbXVzdCBiZSB2YWxpZCBhbmd1bGFyIHtAbGluayBleHByZXNzaW9ufSBpZGVu
dGlmaWVycywgc3VjaCBhcyBgdXBwZXJjYXNlYCBvciBgb3JkZXJCeWAuCisgICAgICAgICAgICog
TmFtZXMgd2l0aCBzcGVjaWFsIGNoYXJhY3RlcnMsIHN1Y2ggYXMgaHlwaGVucyBhbmQgZG90cywg
YXJlIG5vdCBhbGxvd2VkLiBJZiB5b3Ugd2lzaCB0byBuYW1lc3BhY2UKKyAgICAgICAgICAgKiB5
b3VyIGZpbHRlcnMsIHRoZW4geW91IGNhbiB1c2UgY2FwaXRhbGl6YXRpb24gKGBteWFwcFN1YnNl
Y3Rpb25GaWx0ZXJ4YCkgb3IgdW5kZXJzY29yZXMKKyAgICAgICAgICAgKiAoYG15YXBwX3N1YnNl
Y3Rpb25fZmlsdGVyeGApLgorICAgICAgICAgICAqIDwvZGl2PgorICAgICAgICAgICAqLworICAg
ICAgICAgIGZpbHRlcjogaW52b2tlTGF0ZXJBbmRTZXRNb2R1bGVOYW1lKCckZmlsdGVyUHJvdmlk
ZXInLCAncmVnaXN0ZXInKSwKKworICAgICAgICAgIC8qKgorICAgICAgICAgICAqIEBuZ2RvYyBt
ZXRob2QKKyAgICAgICAgICAgKiBAbmFtZSBhbmd1bGFyLk1vZHVsZSNjb250cm9sbGVyCisgICAg
ICAgICAgICogQG1vZHVsZSBuZworICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfE9iamVjdH0g
bmFtZSBDb250cm9sbGVyIG5hbWUsIG9yIGFuIG9iamVjdCBtYXAgb2YgY29udHJvbGxlcnMgd2hl
cmUgdGhlCisgICAgICAgICAgICogICAga2V5cyBhcmUgdGhlIG5hbWVzIGFuZCB0aGUgdmFsdWVz
IGFyZSB0aGUgY29uc3RydWN0b3JzLgorICAgICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGNv
bnN0cnVjdG9yIENvbnRyb2xsZXIgY29uc3RydWN0b3IgZnVuY3Rpb24uCisgICAgICAgICAgICog
QGRlc2NyaXB0aW9uCisgICAgICAgICAgICogU2VlIHtAbGluayBuZy4kY29udHJvbGxlclByb3Zp
ZGVyI3JlZ2lzdGVyICRjb250cm9sbGVyUHJvdmlkZXIucmVnaXN0ZXIoKX0uCisgICAgICAgICAg
ICovCisgICAgICAgICAgY29udHJvbGxlcjogaW52b2tlTGF0ZXJBbmRTZXRNb2R1bGVOYW1lKCck
Y29udHJvbGxlclByb3ZpZGVyJywgJ3JlZ2lzdGVyJyksCisKKyAgICAgICAgICAvKioKKyAgICAg
ICAgICAgKiBAbmdkb2MgbWV0aG9kCisgICAgICAgICAgICogQG5hbWUgYW5ndWxhci5Nb2R1bGUj
ZGlyZWN0aXZlCisgICAgICAgICAgICogQG1vZHVsZSBuZworICAgICAgICAgICAqIEBwYXJhbSB7
c3RyaW5nfE9iamVjdH0gbmFtZSBEaXJlY3RpdmUgbmFtZSwgb3IgYW4gb2JqZWN0IG1hcCBvZiBk
aXJlY3RpdmVzIHdoZXJlIHRoZQorICAgICAgICAgICAqICAgIGtleXMgYXJlIHRoZSBuYW1lcyBh
bmQgdGhlIHZhbHVlcyBhcmUgdGhlIGZhY3Rvcmllcy4KKyAgICAgICAgICAgKiBAcGFyYW0ge0Z1
bmN0aW9ufSBkaXJlY3RpdmVGYWN0b3J5IEZhY3RvcnkgZnVuY3Rpb24gZm9yIGNyZWF0aW5nIG5l
dyBpbnN0YW5jZSBvZgorICAgICAgICAgICAqIGRpcmVjdGl2ZXMuCisgICAgICAgICAgICogQGRl
c2NyaXB0aW9uCisgICAgICAgICAgICogU2VlIHtAbGluayBuZy4kY29tcGlsZVByb3ZpZGVyI2Rp
cmVjdGl2ZSAkY29tcGlsZVByb3ZpZGVyLmRpcmVjdGl2ZSgpfS4KKyAgICAgICAgICAgKi8KKyAg
ICAgICAgICBkaXJlY3RpdmU6IGludm9rZUxhdGVyQW5kU2V0TW9kdWxlTmFtZSgnJGNvbXBpbGVQ
cm92aWRlcicsICdkaXJlY3RpdmUnKSwKKworICAgICAgICAgIC8qKgorICAgICAgICAgICAqIEBu
Z2RvYyBtZXRob2QKKyAgICAgICAgICAgKiBAbmFtZSBhbmd1bGFyLk1vZHVsZSNjb25maWcKKyAg
ICAgICAgICAgKiBAbW9kdWxlIG5nCisgICAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gY29u
ZmlnRm4gRXhlY3V0ZSB0aGlzIGZ1bmN0aW9uIG9uIG1vZHVsZSBsb2FkLiBVc2VmdWwgZm9yIHNl
cnZpY2UKKyAgICAgICAgICAgKiAgICBjb25maWd1cmF0aW9uLgorICAgICAgICAgICAqIEBkZXNj
cmlwdGlvbgorICAgICAgICAgICAqIFVzZSB0aGlzIG1ldGhvZCB0byByZWdpc3RlciB3b3JrIHdo
aWNoIG5lZWRzIHRvIGJlIHBlcmZvcm1lZCBvbiBtb2R1bGUgbG9hZGluZy4KKyAgICAgICAgICAg
KiBGb3IgbW9yZSBhYm91dCBob3cgdG8gY29uZmlndXJlIHNlcnZpY2VzLCBzZWUKKyAgICAgICAg
ICAgKiB7QGxpbmsgcHJvdmlkZXJzI3Byb3ZpZGVyLXJlY2lwZSBQcm92aWRlciBSZWNpcGV9Lgor
ICAgICAgICAgICAqLworICAgICAgICAgIGNvbmZpZzogY29uZmlnLAorCisgICAgICAgICAgLyoq
CisgICAgICAgICAgICogQG5nZG9jIG1ldGhvZAorICAgICAgICAgICAqIEBuYW1lIGFuZ3VsYXIu
TW9kdWxlI3J1bgorICAgICAgICAgICAqIEBtb2R1bGUgbmcKKyAgICAgICAgICAgKiBAcGFyYW0g
e0Z1bmN0aW9ufSBpbml0aWFsaXphdGlvbkZuIEV4ZWN1dGUgdGhpcyBmdW5jdGlvbiBhZnRlciBp
bmplY3RvciBjcmVhdGlvbi4KKyAgICAgICAgICAgKiAgICBVc2VmdWwgZm9yIGFwcGxpY2F0aW9u
IGluaXRpYWxpemF0aW9uLgorICAgICAgICAgICAqIEBkZXNjcmlwdGlvbgorICAgICAgICAgICAq
IFVzZSB0aGlzIG1ldGhvZCB0byByZWdpc3RlciB3b3JrIHdoaWNoIHNob3VsZCBiZSBwZXJmb3Jt
ZWQgd2hlbiB0aGUgaW5qZWN0b3IgaXMgZG9uZQorICAgICAgICAgICAqIGxvYWRpbmcgYWxsIG1v
ZHVsZXMuCisgICAgICAgICAgICovCisgICAgICAgICAgcnVuOiBmdW5jdGlvbihibG9jaykgewor
ICAgICAgICAgICAgcnVuQmxvY2tzLnB1c2goYmxvY2spOworICAgICAgICAgICAgcmV0dXJuIHRo
aXM7CisgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIGlmIChjb25maWdGbikgewor
ICAgICAgICAgIGNvbmZpZyhjb25maWdGbik7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4g
bW9kdWxlSW5zdGFuY2U7CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBwYXJhbSB7c3RyaW5n
fSBwcm92aWRlcgorICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gbWV0aG9kCisgICAgICAgICAq
IEBwYXJhbSB7U3RyaW5nPX0gaW5zZXJ0TWV0aG9kCisgICAgICAgICAqIEByZXR1cm5zIHthbmd1
bGFyLk1vZHVsZX0KKyAgICAgICAgICovCisgICAgICAgIGZ1bmN0aW9uIGludm9rZUxhdGVyKHBy
b3ZpZGVyLCBtZXRob2QsIGluc2VydE1ldGhvZCwgcXVldWUpIHsKKyAgICAgICAgICBpZiAoIXF1
ZXVlKSBxdWV1ZSA9IGludm9rZVF1ZXVlOworICAgICAgICAgIHJldHVybiBmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgIHF1ZXVlW2luc2VydE1ldGhvZCB8fCAncHVzaCddKFtwcm92aWRlciwgbWV0
aG9kLCBhcmd1bWVudHNdKTsKKyAgICAgICAgICAgIHJldHVybiBtb2R1bGVJbnN0YW5jZTsKKyAg
ICAgICAgICB9OworICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBwYXJhbSB7
c3RyaW5nfSBwcm92aWRlcgorICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gbWV0aG9kCisgICAg
ICAgICAqIEByZXR1cm5zIHthbmd1bGFyLk1vZHVsZX0KKyAgICAgICAgICovCisgICAgICAgIGZ1
bmN0aW9uIGludm9rZUxhdGVyQW5kU2V0TW9kdWxlTmFtZShwcm92aWRlciwgbWV0aG9kKSB7Cisg
ICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHJlY2lwZU5hbWUsIGZhY3RvcnlGdW5jdGlvbikgewor
ICAgICAgICAgICAgaWYgKGZhY3RvcnlGdW5jdGlvbiAmJiBpc0Z1bmN0aW9uKGZhY3RvcnlGdW5j
dGlvbikpIGZhY3RvcnlGdW5jdGlvbi4kJG1vZHVsZU5hbWUgPSBuYW1lOworICAgICAgICAgICAg
aW52b2tlUXVldWUucHVzaChbcHJvdmlkZXIsIG1ldGhvZCwgYXJndW1lbnRzXSk7CisgICAgICAg
ICAgICByZXR1cm4gbW9kdWxlSW5zdGFuY2U7CisgICAgICAgICAgfTsKKyAgICAgICAgfQorICAg
ICAgfSk7CisgICAgfTsKKyAgfSk7CisKK30KKworLyogZ2xvYmFsOiB0b0RlYnVnU3RyaW5nOiB0
cnVlICovCisKK2Z1bmN0aW9uIHNlcmlhbGl6ZU9iamVjdChvYmopIHsKKyAgdmFyIHNlZW4gPSBb
XTsKKworICByZXR1cm4gSlNPTi5zdHJpbmdpZnkob2JqLCBmdW5jdGlvbihrZXksIHZhbCkgewor
ICAgIHZhbCA9IHRvSnNvblJlcGxhY2VyKGtleSwgdmFsKTsKKyAgICBpZiAoaXNPYmplY3QodmFs
KSkgeworCisgICAgICBpZiAoc2Vlbi5pbmRleE9mKHZhbCkgPj0gMCkgcmV0dXJuICc8PGFscmVh
ZHkgc2Vlbj4+JzsKKworICAgICAgc2Vlbi5wdXNoKHZhbCk7CisgICAgfQorICAgIHJldHVybiB2
YWw7CisgIH0pOworfQorCitmdW5jdGlvbiB0b0RlYnVnU3RyaW5nKG9iaikgeworICBpZiAodHlw
ZW9mIG9iaiA9PT0gJ2Z1bmN0aW9uJykgeworICAgIHJldHVybiBvYmoudG9TdHJpbmcoKS5yZXBs
YWNlKC8gXHtbXHNcU10qJC8sICcnKTsKKyAgfSBlbHNlIGlmICh0eXBlb2Ygb2JqID09PSAndW5k
ZWZpbmVkJykgeworICAgIHJldHVybiAndW5kZWZpbmVkJzsKKyAgfSBlbHNlIGlmICh0eXBlb2Yg
b2JqICE9PSAnc3RyaW5nJykgeworICAgIHJldHVybiBzZXJpYWxpemVPYmplY3Qob2JqKTsKKyAg
fQorICByZXR1cm4gb2JqOworfQorCisvKiBnbG9iYWwgYW5ndWxhck1vZHVsZTogdHJ1ZSwKKyAg
dmVyc2lvbjogdHJ1ZSwKKworICAkTG9jYWxlUHJvdmlkZXIsCisgICRDb21waWxlUHJvdmlkZXIs
CisKKyAgaHRtbEFuY2hvckRpcmVjdGl2ZSwKKyAgaW5wdXREaXJlY3RpdmUsCisgIGlucHV0RGly
ZWN0aXZlLAorICBmb3JtRGlyZWN0aXZlLAorICBzY3JpcHREaXJlY3RpdmUsCisgIHNlbGVjdERp
cmVjdGl2ZSwKKyAgc3R5bGVEaXJlY3RpdmUsCisgIG9wdGlvbkRpcmVjdGl2ZSwKKyAgbmdCaW5k
RGlyZWN0aXZlLAorICBuZ0JpbmRIdG1sRGlyZWN0aXZlLAorICBuZ0JpbmRUZW1wbGF0ZURpcmVj
dGl2ZSwKKyAgbmdDbGFzc0RpcmVjdGl2ZSwKKyAgbmdDbGFzc0V2ZW5EaXJlY3RpdmUsCisgIG5n
Q2xhc3NPZGREaXJlY3RpdmUsCisgIG5nQ3NwRGlyZWN0aXZlLAorICBuZ0Nsb2FrRGlyZWN0aXZl
LAorICBuZ0NvbnRyb2xsZXJEaXJlY3RpdmUsCisgIG5nRm9ybURpcmVjdGl2ZSwKKyAgbmdIaWRl
RGlyZWN0aXZlLAorICBuZ0lmRGlyZWN0aXZlLAorICBuZ0luY2x1ZGVEaXJlY3RpdmUsCisgIG5n
SW5jbHVkZUZpbGxDb250ZW50RGlyZWN0aXZlLAorICBuZ0luaXREaXJlY3RpdmUsCisgIG5nTm9u
QmluZGFibGVEaXJlY3RpdmUsCisgIG5nUGx1cmFsaXplRGlyZWN0aXZlLAorICBuZ1JlcGVhdERp
cmVjdGl2ZSwKKyAgbmdTaG93RGlyZWN0aXZlLAorICBuZ1N0eWxlRGlyZWN0aXZlLAorICBuZ1N3
aXRjaERpcmVjdGl2ZSwKKyAgbmdTd2l0Y2hXaGVuRGlyZWN0aXZlLAorICBuZ1N3aXRjaERlZmF1
bHREaXJlY3RpdmUsCisgIG5nT3B0aW9uc0RpcmVjdGl2ZSwKKyAgbmdUcmFuc2NsdWRlRGlyZWN0
aXZlLAorICBuZ01vZGVsRGlyZWN0aXZlLAorICBuZ0xpc3REaXJlY3RpdmUsCisgIG5nQ2hhbmdl
RGlyZWN0aXZlLAorICBwYXR0ZXJuRGlyZWN0aXZlLAorICBwYXR0ZXJuRGlyZWN0aXZlLAorICBy
ZXF1aXJlZERpcmVjdGl2ZSwKKyAgcmVxdWlyZWREaXJlY3RpdmUsCisgIG1pbmxlbmd0aERpcmVj
dGl2ZSwKKyAgbWlubGVuZ3RoRGlyZWN0aXZlLAorICBtYXhsZW5ndGhEaXJlY3RpdmUsCisgIG1h
eGxlbmd0aERpcmVjdGl2ZSwKKyAgbmdWYWx1ZURpcmVjdGl2ZSwKKyAgbmdNb2RlbE9wdGlvbnNE
aXJlY3RpdmUsCisgIG5nQXR0cmlidXRlQWxpYXNEaXJlY3RpdmVzLAorICBuZ0V2ZW50RGlyZWN0
aXZlcywKKworICAkQW5jaG9yU2Nyb2xsUHJvdmlkZXIsCisgICRBbmltYXRlUHJvdmlkZXIsCisg
ICQkQ29yZUFuaW1hdGVRdWV1ZVByb3ZpZGVyLAorICAkJENvcmVBbmltYXRlUnVubmVyUHJvdmlk
ZXIsCisgICRCcm93c2VyUHJvdmlkZXIsCisgICRDYWNoZUZhY3RvcnlQcm92aWRlciwKKyAgJENv
bnRyb2xsZXJQcm92aWRlciwKKyAgJERvY3VtZW50UHJvdmlkZXIsCisgICRFeGNlcHRpb25IYW5k
bGVyUHJvdmlkZXIsCisgICRGaWx0ZXJQcm92aWRlciwKKyAgJEludGVycG9sYXRlUHJvdmlkZXIs
CisgICRJbnRlcnZhbFByb3ZpZGVyLAorICAkJEhhc2hNYXBQcm92aWRlciwKKyAgJEh0dHBQcm92
aWRlciwKKyAgJEh0dHBQYXJhbVNlcmlhbGl6ZXJQcm92aWRlciwKKyAgJEh0dHBQYXJhbVNlcmlh
bGl6ZXJKUUxpa2VQcm92aWRlciwKKyAgJEh0dHBCYWNrZW5kUHJvdmlkZXIsCisgICRMb2NhdGlv
blByb3ZpZGVyLAorICAkTG9nUHJvdmlkZXIsCisgICRQYXJzZVByb3ZpZGVyLAorICAkUm9vdFNj
b3BlUHJvdmlkZXIsCisgICRRUHJvdmlkZXIsCisgICQkUVByb3ZpZGVyLAorICAkJFNhbml0aXpl
VXJpUHJvdmlkZXIsCisgICRTY2VQcm92aWRlciwKKyAgJFNjZURlbGVnYXRlUHJvdmlkZXIsCisg
ICRTbmlmZmVyUHJvdmlkZXIsCisgICRUZW1wbGF0ZUNhY2hlUHJvdmlkZXIsCisgICRUZW1wbGF0
ZVJlcXVlc3RQcm92aWRlciwKKyAgJCRUZXN0YWJpbGl0eVByb3ZpZGVyLAorICAkVGltZW91dFBy
b3ZpZGVyLAorICAkJFJBRlByb3ZpZGVyLAorICAkV2luZG93UHJvdmlkZXIsCisgICQkanFMaXRl
UHJvdmlkZXIsCisgICQkQ29va2llUmVhZGVyUHJvdmlkZXIKKyovCisKKworLyoqCisgKiBAbmdk
b2Mgb2JqZWN0CisgKiBAbmFtZSBhbmd1bGFyLnZlcnNpb24KKyAqIEBtb2R1bGUgbmcKKyAqIEBk
ZXNjcmlwdGlvbgorICogQW4gb2JqZWN0IHRoYXQgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQg
dGhlIGN1cnJlbnQgQW5ndWxhckpTIHZlcnNpb24uIFRoaXMgb2JqZWN0IGhhcyB0aGUKKyAqIGZv
bGxvd2luZyBwcm9wZXJ0aWVzOgorICoKKyAqIC0gYGZ1bGxgIOKAkyBge3N0cmluZ31gIOKAkyBG
dWxsIHZlcnNpb24gc3RyaW5nLCBzdWNoIGFzICIwLjkuMTgiLgorICogLSBgbWFqb3JgIOKAkyBg
e251bWJlcn1gIOKAkyBNYWpvciB2ZXJzaW9uIG51bWJlciwgc3VjaCBhcyAiMCIuCisgKiAtIGBt
aW5vcmAg4oCTIGB7bnVtYmVyfWAg4oCTIE1pbm9yIHZlcnNpb24gbnVtYmVyLCBzdWNoIGFzICI5
Ii4KKyAqIC0gYGRvdGAg4oCTIGB7bnVtYmVyfWAg4oCTIERvdCB2ZXJzaW9uIG51bWJlciwgc3Vj
aCBhcyAiMTgiLgorICogLSBgY29kZU5hbWVgIOKAkyBge3N0cmluZ31gIOKAkyBDb2RlIG5hbWUg
b2YgdGhlIHJlbGVhc2UsIHN1Y2ggYXMgImppZ2dsaW5nLWFybWZhdCIuCisgKi8KK3ZhciB2ZXJz
aW9uID0geworICBmdWxsOiAnMS40LjMnLCAgICAvLyBhbGwgb2YgdGhlc2UgcGxhY2Vob2xkZXIg
c3RyaW5ncyB3aWxsIGJlIHJlcGxhY2VkIGJ5IGdydW50J3MKKyAgbWFqb3I6IDEsICAgIC8vIHBh
Y2thZ2UgdGFzaworICBtaW5vcjogNCwKKyAgZG90OiAzLAorICBjb2RlTmFtZTogJ2ZvYW0tYWNj
ZWxlcmF0aW9uJworfTsKKworCitmdW5jdGlvbiBwdWJsaXNoRXh0ZXJuYWxBUEkoYW5ndWxhcikg
eworICBleHRlbmQoYW5ndWxhciwgeworICAgICdib290c3RyYXAnOiBib290c3RyYXAsCisgICAg
J2NvcHknOiBjb3B5LAorICAgICdleHRlbmQnOiBleHRlbmQsCisgICAgJ21lcmdlJzogbWVyZ2Us
CisgICAgJ2VxdWFscyc6IGVxdWFscywKKyAgICAnZWxlbWVudCc6IGpxTGl0ZSwKKyAgICAnZm9y
RWFjaCc6IGZvckVhY2gsCisgICAgJ2luamVjdG9yJzogY3JlYXRlSW5qZWN0b3IsCisgICAgJ25v
b3AnOiBub29wLAorICAgICdiaW5kJzogYmluZCwKKyAgICAndG9Kc29uJzogdG9Kc29uLAorICAg
ICdmcm9tSnNvbic6IGZyb21Kc29uLAorICAgICdpZGVudGl0eSc6IGlkZW50aXR5LAorICAgICdp
c1VuZGVmaW5lZCc6IGlzVW5kZWZpbmVkLAorICAgICdpc0RlZmluZWQnOiBpc0RlZmluZWQsCisg
ICAgJ2lzU3RyaW5nJzogaXNTdHJpbmcsCisgICAgJ2lzRnVuY3Rpb24nOiBpc0Z1bmN0aW9uLAor
ICAgICdpc09iamVjdCc6IGlzT2JqZWN0LAorICAgICdpc051bWJlcic6IGlzTnVtYmVyLAorICAg
ICdpc0VsZW1lbnQnOiBpc0VsZW1lbnQsCisgICAgJ2lzQXJyYXknOiBpc0FycmF5LAorICAgICd2
ZXJzaW9uJzogdmVyc2lvbiwKKyAgICAnaXNEYXRlJzogaXNEYXRlLAorICAgICdsb3dlcmNhc2Un
OiBsb3dlcmNhc2UsCisgICAgJ3VwcGVyY2FzZSc6IHVwcGVyY2FzZSwKKyAgICAnY2FsbGJhY2tz
Jzoge2NvdW50ZXI6IDB9LAorICAgICdnZXRUZXN0YWJpbGl0eSc6IGdldFRlc3RhYmlsaXR5LAor
ICAgICckJG1pbkVycic6IG1pbkVyciwKKyAgICAnJCRjc3AnOiBjc3AsCisgICAgJ3JlbG9hZFdp
dGhEZWJ1Z0luZm8nOiByZWxvYWRXaXRoRGVidWdJbmZvCisgIH0pOworCisgIGFuZ3VsYXJNb2R1
bGUgPSBzZXR1cE1vZHVsZUxvYWRlcih3aW5kb3cpOworICB0cnkgeworICAgIGFuZ3VsYXJNb2R1
bGUoJ25nTG9jYWxlJyk7CisgIH0gY2F0Y2ggKGUpIHsKKyAgICBhbmd1bGFyTW9kdWxlKCduZ0xv
Y2FsZScsIFtdKS5wcm92aWRlcignJGxvY2FsZScsICRMb2NhbGVQcm92aWRlcik7CisgIH0KKwor
ICBhbmd1bGFyTW9kdWxlKCduZycsIFsnbmdMb2NhbGUnXSwgWyckcHJvdmlkZScsCisgICAgZnVu
Y3Rpb24gbmdNb2R1bGUoJHByb3ZpZGUpIHsKKyAgICAgIC8vICQkc2FuaXRpemVVcmlQcm92aWRl
ciBuZWVkcyB0byBiZSBiZWZvcmUgJGNvbXBpbGVQcm92aWRlciBhcyBpdCBpcyB1c2VkIGJ5IGl0
LgorICAgICAgJHByb3ZpZGUucHJvdmlkZXIoeworICAgICAgICAkJHNhbml0aXplVXJpOiAkJFNh
bml0aXplVXJpUHJvdmlkZXIKKyAgICAgIH0pOworICAgICAgJHByb3ZpZGUucHJvdmlkZXIoJyRj
b21waWxlJywgJENvbXBpbGVQcm92aWRlcikuCisgICAgICAgIGRpcmVjdGl2ZSh7CisgICAgICAg
ICAgICBhOiBodG1sQW5jaG9yRGlyZWN0aXZlLAorICAgICAgICAgICAgaW5wdXQ6IGlucHV0RGly
ZWN0aXZlLAorICAgICAgICAgICAgdGV4dGFyZWE6IGlucHV0RGlyZWN0aXZlLAorICAgICAgICAg
ICAgZm9ybTogZm9ybURpcmVjdGl2ZSwKKyAgICAgICAgICAgIHNjcmlwdDogc2NyaXB0RGlyZWN0
aXZlLAorICAgICAgICAgICAgc2VsZWN0OiBzZWxlY3REaXJlY3RpdmUsCisgICAgICAgICAgICBz
dHlsZTogc3R5bGVEaXJlY3RpdmUsCisgICAgICAgICAgICBvcHRpb246IG9wdGlvbkRpcmVjdGl2
ZSwKKyAgICAgICAgICAgIG5nQmluZDogbmdCaW5kRGlyZWN0aXZlLAorICAgICAgICAgICAgbmdC
aW5kSHRtbDogbmdCaW5kSHRtbERpcmVjdGl2ZSwKKyAgICAgICAgICAgIG5nQmluZFRlbXBsYXRl
OiBuZ0JpbmRUZW1wbGF0ZURpcmVjdGl2ZSwKKyAgICAgICAgICAgIG5nQ2xhc3M6IG5nQ2xhc3NE
aXJlY3RpdmUsCisgICAgICAgICAgICBuZ0NsYXNzRXZlbjogbmdDbGFzc0V2ZW5EaXJlY3RpdmUs
CisgICAgICAgICAgICBuZ0NsYXNzT2RkOiBuZ0NsYXNzT2RkRGlyZWN0aXZlLAorICAgICAgICAg
ICAgbmdDbG9hazogbmdDbG9ha0RpcmVjdGl2ZSwKKyAgICAgICAgICAgIG5nQ29udHJvbGxlcjog
bmdDb250cm9sbGVyRGlyZWN0aXZlLAorICAgICAgICAgICAgbmdGb3JtOiBuZ0Zvcm1EaXJlY3Rp
dmUsCisgICAgICAgICAgICBuZ0hpZGU6IG5nSGlkZURpcmVjdGl2ZSwKKyAgICAgICAgICAgIG5n
SWY6IG5nSWZEaXJlY3RpdmUsCisgICAgICAgICAgICBuZ0luY2x1ZGU6IG5nSW5jbHVkZURpcmVj
dGl2ZSwKKyAgICAgICAgICAgIG5nSW5pdDogbmdJbml0RGlyZWN0aXZlLAorICAgICAgICAgICAg
bmdOb25CaW5kYWJsZTogbmdOb25CaW5kYWJsZURpcmVjdGl2ZSwKKyAgICAgICAgICAgIG5nUGx1
cmFsaXplOiBuZ1BsdXJhbGl6ZURpcmVjdGl2ZSwKKyAgICAgICAgICAgIG5nUmVwZWF0OiBuZ1Jl
cGVhdERpcmVjdGl2ZSwKKyAgICAgICAgICAgIG5nU2hvdzogbmdTaG93RGlyZWN0aXZlLAorICAg
ICAgICAgICAgbmdTdHlsZTogbmdTdHlsZURpcmVjdGl2ZSwKKyAgICAgICAgICAgIG5nU3dpdGNo
OiBuZ1N3aXRjaERpcmVjdGl2ZSwKKyAgICAgICAgICAgIG5nU3dpdGNoV2hlbjogbmdTd2l0Y2hX
aGVuRGlyZWN0aXZlLAorICAgICAgICAgICAgbmdTd2l0Y2hEZWZhdWx0OiBuZ1N3aXRjaERlZmF1
bHREaXJlY3RpdmUsCisgICAgICAgICAgICBuZ09wdGlvbnM6IG5nT3B0aW9uc0RpcmVjdGl2ZSwK
KyAgICAgICAgICAgIG5nVHJhbnNjbHVkZTogbmdUcmFuc2NsdWRlRGlyZWN0aXZlLAorICAgICAg
ICAgICAgbmdNb2RlbDogbmdNb2RlbERpcmVjdGl2ZSwKKyAgICAgICAgICAgIG5nTGlzdDogbmdM
aXN0RGlyZWN0aXZlLAorICAgICAgICAgICAgbmdDaGFuZ2U6IG5nQ2hhbmdlRGlyZWN0aXZlLAor
ICAgICAgICAgICAgcGF0dGVybjogcGF0dGVybkRpcmVjdGl2ZSwKKyAgICAgICAgICAgIG5nUGF0
dGVybjogcGF0dGVybkRpcmVjdGl2ZSwKKyAgICAgICAgICAgIHJlcXVpcmVkOiByZXF1aXJlZERp
cmVjdGl2ZSwKKyAgICAgICAgICAgIG5nUmVxdWlyZWQ6IHJlcXVpcmVkRGlyZWN0aXZlLAorICAg
ICAgICAgICAgbWlubGVuZ3RoOiBtaW5sZW5ndGhEaXJlY3RpdmUsCisgICAgICAgICAgICBuZ01p
bmxlbmd0aDogbWlubGVuZ3RoRGlyZWN0aXZlLAorICAgICAgICAgICAgbWF4bGVuZ3RoOiBtYXhs
ZW5ndGhEaXJlY3RpdmUsCisgICAgICAgICAgICBuZ01heGxlbmd0aDogbWF4bGVuZ3RoRGlyZWN0
aXZlLAorICAgICAgICAgICAgbmdWYWx1ZTogbmdWYWx1ZURpcmVjdGl2ZSwKKyAgICAgICAgICAg
IG5nTW9kZWxPcHRpb25zOiBuZ01vZGVsT3B0aW9uc0RpcmVjdGl2ZQorICAgICAgICB9KS4KKyAg
ICAgICAgZGlyZWN0aXZlKHsKKyAgICAgICAgICBuZ0luY2x1ZGU6IG5nSW5jbHVkZUZpbGxDb250
ZW50RGlyZWN0aXZlCisgICAgICAgIH0pLgorICAgICAgICBkaXJlY3RpdmUobmdBdHRyaWJ1dGVB
bGlhc0RpcmVjdGl2ZXMpLgorICAgICAgICBkaXJlY3RpdmUobmdFdmVudERpcmVjdGl2ZXMpOwor
ICAgICAgJHByb3ZpZGUucHJvdmlkZXIoeworICAgICAgICAkYW5jaG9yU2Nyb2xsOiAkQW5jaG9y
U2Nyb2xsUHJvdmlkZXIsCisgICAgICAgICRhbmltYXRlOiAkQW5pbWF0ZVByb3ZpZGVyLAorICAg
ICAgICAkJGFuaW1hdGVRdWV1ZTogJCRDb3JlQW5pbWF0ZVF1ZXVlUHJvdmlkZXIsCisgICAgICAg
ICQkQW5pbWF0ZVJ1bm5lcjogJCRDb3JlQW5pbWF0ZVJ1bm5lclByb3ZpZGVyLAorICAgICAgICAk
YnJvd3NlcjogJEJyb3dzZXJQcm92aWRlciwKKyAgICAgICAgJGNhY2hlRmFjdG9yeTogJENhY2hl
RmFjdG9yeVByb3ZpZGVyLAorICAgICAgICAkY29udHJvbGxlcjogJENvbnRyb2xsZXJQcm92aWRl
ciwKKyAgICAgICAgJGRvY3VtZW50OiAkRG9jdW1lbnRQcm92aWRlciwKKyAgICAgICAgJGV4Y2Vw
dGlvbkhhbmRsZXI6ICRFeGNlcHRpb25IYW5kbGVyUHJvdmlkZXIsCisgICAgICAgICRmaWx0ZXI6
ICRGaWx0ZXJQcm92aWRlciwKKyAgICAgICAgJGludGVycG9sYXRlOiAkSW50ZXJwb2xhdGVQcm92
aWRlciwKKyAgICAgICAgJGludGVydmFsOiAkSW50ZXJ2YWxQcm92aWRlciwKKyAgICAgICAgJGh0
dHA6ICRIdHRwUHJvdmlkZXIsCisgICAgICAgICRodHRwUGFyYW1TZXJpYWxpemVyOiAkSHR0cFBh
cmFtU2VyaWFsaXplclByb3ZpZGVyLAorICAgICAgICAkaHR0cFBhcmFtU2VyaWFsaXplckpRTGlr
ZTogJEh0dHBQYXJhbVNlcmlhbGl6ZXJKUUxpa2VQcm92aWRlciwKKyAgICAgICAgJGh0dHBCYWNr
ZW5kOiAkSHR0cEJhY2tlbmRQcm92aWRlciwKKyAgICAgICAgJGxvY2F0aW9uOiAkTG9jYXRpb25Q
cm92aWRlciwKKyAgICAgICAgJGxvZzogJExvZ1Byb3ZpZGVyLAorICAgICAgICAkcGFyc2U6ICRQ
YXJzZVByb3ZpZGVyLAorICAgICAgICAkcm9vdFNjb3BlOiAkUm9vdFNjb3BlUHJvdmlkZXIsCisg
ICAgICAgICRxOiAkUVByb3ZpZGVyLAorICAgICAgICAkJHE6ICQkUVByb3ZpZGVyLAorICAgICAg
ICAkc2NlOiAkU2NlUHJvdmlkZXIsCisgICAgICAgICRzY2VEZWxlZ2F0ZTogJFNjZURlbGVnYXRl
UHJvdmlkZXIsCisgICAgICAgICRzbmlmZmVyOiAkU25pZmZlclByb3ZpZGVyLAorICAgICAgICAk
dGVtcGxhdGVDYWNoZTogJFRlbXBsYXRlQ2FjaGVQcm92aWRlciwKKyAgICAgICAgJHRlbXBsYXRl
UmVxdWVzdDogJFRlbXBsYXRlUmVxdWVzdFByb3ZpZGVyLAorICAgICAgICAkJHRlc3RhYmlsaXR5
OiAkJFRlc3RhYmlsaXR5UHJvdmlkZXIsCisgICAgICAgICR0aW1lb3V0OiAkVGltZW91dFByb3Zp
ZGVyLAorICAgICAgICAkd2luZG93OiAkV2luZG93UHJvdmlkZXIsCisgICAgICAgICQkckFGOiAk
JFJBRlByb3ZpZGVyLAorICAgICAgICAkJGpxTGl0ZTogJCRqcUxpdGVQcm92aWRlciwKKyAgICAg
ICAgJCRIYXNoTWFwOiAkJEhhc2hNYXBQcm92aWRlciwKKyAgICAgICAgJCRjb29raWVSZWFkZXI6
ICQkQ29va2llUmVhZGVyUHJvdmlkZXIKKyAgICAgIH0pOworICAgIH0KKyAgXSk7Cit9CisKKy8q
ICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICog
KiAqICogKiAqICogKiAqICoKKyAqICAgICBBbnkgY29tbWl0cyB0byB0aGlzIGZpbGUgc2hvdWxk
IGJlIHJldmlld2VkIHdpdGggc2VjdXJpdHkgaW4gbWluZC4gICoKKyAqICAgQ2hhbmdlcyB0byB0
aGlzIGZpbGUgY2FuIHBvdGVudGlhbGx5IGNyZWF0ZSBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMu
ICoKKyAqICAgICAgICAgIEFuIGFwcHJvdmFsIGZyb20gMiBDb3JlIG1lbWJlcnMgd2l0aCBoaXN0
b3J5IG9mIG1vZGlmeWluZyAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMg
ZmlsZSBpcyByZXF1aXJlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICoKKyAqICBEb2VzIHRoZSBjaGFuZ2Ugc29tZWhvdyBhbGxvdyBmb3IgYXJiaXRyYXJ5
IGphdmFzY3JpcHQgdG8gYmUgZXhlY3V0ZWQ/ICoKKyAqICAgIE9yIGFsbG93cyBmb3Igc29tZW9u
ZSB0byBjaGFuZ2UgdGhlIHByb3RvdHlwZSBvZiBidWlsdC1pbiBvYmplY3RzPyAgICoKKyAqICAg
ICBPciBnaXZlcyB1bmRlc2lyZWQgYWNjZXNzIHRvIHZhcmlhYmxlcyBsaWtlcyBkb2N1bWVudCBv
ciB3aW5kb3c/ICAgICoKKyAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICog
KiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICovCisKKy8qIGdsb2JhbCBKUUxpdGVQ
cm90b3R5cGU6IHRydWUsCisgIGFkZEV2ZW50TGlzdGVuZXJGbjogdHJ1ZSwKKyAgcmVtb3ZlRXZl
bnRMaXN0ZW5lckZuOiB0cnVlLAorICBCT09MRUFOX0FUVFI6IHRydWUsCisgIEFMSUFTRURfQVRU
UjogdHJ1ZSwKKyovCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vSlFM
aXRlCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKKy8qKgorICogQG5nZG9j
IGZ1bmN0aW9uCisgKiBAbmFtZSBhbmd1bGFyLmVsZW1lbnQKKyAqIEBtb2R1bGUgbmcKKyAqIEBr
aW5kIGZ1bmN0aW9uCisgKgorICogQGRlc2NyaXB0aW9uCisgKiBXcmFwcyBhIHJhdyBET00gZWxl
bWVudCBvciBIVE1MIHN0cmluZyBhcyBhIFtqUXVlcnldKGh0dHA6Ly9qcXVlcnkuY29tKSBlbGVt
ZW50LgorICoKKyAqIElmIGpRdWVyeSBpcyBhdmFpbGFibGUsIGBhbmd1bGFyLmVsZW1lbnRgIGlz
IGFuIGFsaWFzIGZvciB0aGUKKyAqIFtqUXVlcnldKGh0dHA6Ly9hcGkuanF1ZXJ5LmNvbS9qUXVl
cnkvKSBmdW5jdGlvbi4gSWYgalF1ZXJ5IGlzIG5vdCBhdmFpbGFibGUsIGBhbmd1bGFyLmVsZW1l
bnRgCisgKiBkZWxlZ2F0ZXMgdG8gQW5ndWxhcidzIGJ1aWx0LWluIHN1YnNldCBvZiBqUXVlcnks
IGNhbGxlZCAialF1ZXJ5IGxpdGUiIG9yICJqcUxpdGUuIgorICoKKyAqIDxkaXYgY2xhc3M9ImFs
ZXJ0IGFsZXJ0LXN1Y2Nlc3MiPmpxTGl0ZSBpcyBhIHRpbnksIEFQSS1jb21wYXRpYmxlIHN1YnNl
dCBvZiBqUXVlcnkgdGhhdCBhbGxvd3MKKyAqIEFuZ3VsYXIgdG8gbWFuaXB1bGF0ZSB0aGUgRE9N
IGluIGEgY3Jvc3MtYnJvd3NlciBjb21wYXRpYmxlIHdheS4gKipqcUxpdGUqKiBpbXBsZW1lbnRz
IG9ubHkgdGhlIG1vc3QKKyAqIGNvbW1vbmx5IG5lZWRlZCBmdW5jdGlvbmFsaXR5IHdpdGggdGhl
IGdvYWwgb2YgaGF2aW5nIGEgdmVyeSBzbWFsbCBmb290cHJpbnQuPC9kaXY+CisgKgorICogVG8g
dXNlIGBqUXVlcnlgLCBzaW1wbHkgZW5zdXJlIGl0IGlzIGxvYWRlZCBiZWZvcmUgdGhlIGBhbmd1
bGFyLmpzYCBmaWxlLgorICoKKyAqIDxkaXYgY2xhc3M9ImFsZXJ0Ij4qKk5vdGU6KiogYWxsIGVs
ZW1lbnQgcmVmZXJlbmNlcyBpbiBBbmd1bGFyIGFyZSBhbHdheXMgd3JhcHBlZCB3aXRoIGpRdWVy
eSBvcgorICoganFMaXRlOyB0aGV5IGFyZSBuZXZlciByYXcgRE9NIHJlZmVyZW5jZXMuPC9kaXY+
CisgKgorICogIyMgQW5ndWxhcidzIGpxTGl0ZQorICoganFMaXRlIHByb3ZpZGVzIG9ubHkgdGhl
IGZvbGxvd2luZyBqUXVlcnkgbWV0aG9kczoKKyAqCisgKiAtIFtgYWRkQ2xhc3MoKWBdKGh0dHA6
Ly9hcGkuanF1ZXJ5LmNvbS9hZGRDbGFzcy8pCisgKiAtIFtgYWZ0ZXIoKWBdKGh0dHA6Ly9hcGku
anF1ZXJ5LmNvbS9hZnRlci8pCisgKiAtIFtgYXBwZW5kKClgXShodHRwOi8vYXBpLmpxdWVyeS5j
b20vYXBwZW5kLykKKyAqIC0gW2BhdHRyKClgXShodHRwOi8vYXBpLmpxdWVyeS5jb20vYXR0ci8p
IC0gRG9lcyBub3Qgc3VwcG9ydCBmdW5jdGlvbnMgYXMgcGFyYW1ldGVycworICogLSBbYGJpbmQo
KWBdKGh0dHA6Ly9hcGkuanF1ZXJ5LmNvbS9iaW5kLykgLSBEb2VzIG5vdCBzdXBwb3J0IG5hbWVz
cGFjZXMsIHNlbGVjdG9ycyBvciBldmVudERhdGEKKyAqIC0gW2BjaGlsZHJlbigpYF0oaHR0cDov
L2FwaS5qcXVlcnkuY29tL2NoaWxkcmVuLykgLSBEb2VzIG5vdCBzdXBwb3J0IHNlbGVjdG9ycwor
ICogLSBbYGNsb25lKClgXShodHRwOi8vYXBpLmpxdWVyeS5jb20vY2xvbmUvKQorICogLSBbYGNv
bnRlbnRzKClgXShodHRwOi8vYXBpLmpxdWVyeS5jb20vY29udGVudHMvKQorICogLSBbYGNzcygp
YF0oaHR0cDovL2FwaS5qcXVlcnkuY29tL2Nzcy8pIC0gT25seSByZXRyaWV2ZXMgaW5saW5lLXN0
eWxlcywgZG9lcyBub3QgY2FsbCBgZ2V0Q29tcHV0ZWRTdHlsZSgpYC4gQXMgYSBzZXR0ZXIsIGRv
ZXMgbm90IGNvbnZlcnQgbnVtYmVycyB0byBzdHJpbmdzIG9yIGFwcGVuZCAncHgnLgorICogLSBb
YGRhdGEoKWBdKGh0dHA6Ly9hcGkuanF1ZXJ5LmNvbS9kYXRhLykKKyAqIC0gW2BkZXRhY2goKWBd
KGh0dHA6Ly9hcGkuanF1ZXJ5LmNvbS9kZXRhY2gvKQorICogLSBbYGVtcHR5KClgXShodHRwOi8v
YXBpLmpxdWVyeS5jb20vZW1wdHkvKQorICogLSBbYGVxKClgXShodHRwOi8vYXBpLmpxdWVyeS5j
b20vZXEvKQorICogLSBbYGZpbmQoKWBdKGh0dHA6Ly9hcGkuanF1ZXJ5LmNvbS9maW5kLykgLSBM
aW1pdGVkIHRvIGxvb2t1cHMgYnkgdGFnIG5hbWUKKyAqIC0gW2BoYXNDbGFzcygpYF0oaHR0cDov
L2FwaS5qcXVlcnkuY29tL2hhc0NsYXNzLykKKyAqIC0gW2BodG1sKClgXShodHRwOi8vYXBpLmpx
dWVyeS5jb20vaHRtbC8pCisgKiAtIFtgbmV4dCgpYF0oaHR0cDovL2FwaS5qcXVlcnkuY29tL25l
eHQvKSAtIERvZXMgbm90IHN1cHBvcnQgc2VsZWN0b3JzCisgKiAtIFtgb24oKWBdKGh0dHA6Ly9h
cGkuanF1ZXJ5LmNvbS9vbi8pIC0gRG9lcyBub3Qgc3VwcG9ydCBuYW1lc3BhY2VzLCBzZWxlY3Rv
cnMgb3IgZXZlbnREYXRhCisgKiAtIFtgb2ZmKClgXShodHRwOi8vYXBpLmpxdWVyeS5jb20vb2Zm
LykgLSBEb2VzIG5vdCBzdXBwb3J0IG5hbWVzcGFjZXMgb3Igc2VsZWN0b3JzCisgKiAtIFtgb25l
KClgXShodHRwOi8vYXBpLmpxdWVyeS5jb20vb25lLykgLSBEb2VzIG5vdCBzdXBwb3J0IG5hbWVz
cGFjZXMgb3Igc2VsZWN0b3JzCisgKiAtIFtgcGFyZW50KClgXShodHRwOi8vYXBpLmpxdWVyeS5j
b20vcGFyZW50LykgLSBEb2VzIG5vdCBzdXBwb3J0IHNlbGVjdG9ycworICogLSBbYHByZXBlbmQo
KWBdKGh0dHA6Ly9hcGkuanF1ZXJ5LmNvbS9wcmVwZW5kLykKKyAqIC0gW2Bwcm9wKClgXShodHRw
Oi8vYXBpLmpxdWVyeS5jb20vcHJvcC8pCisgKiAtIFtgcmVhZHkoKWBdKGh0dHA6Ly9hcGkuanF1
ZXJ5LmNvbS9yZWFkeS8pCisgKiAtIFtgcmVtb3ZlKClgXShodHRwOi8vYXBpLmpxdWVyeS5jb20v
cmVtb3ZlLykKKyAqIC0gW2ByZW1vdmVBdHRyKClgXShodHRwOi8vYXBpLmpxdWVyeS5jb20vcmVt
b3ZlQXR0ci8pCisgKiAtIFtgcmVtb3ZlQ2xhc3MoKWBdKGh0dHA6Ly9hcGkuanF1ZXJ5LmNvbS9y
ZW1vdmVDbGFzcy8pCisgKiAtIFtgcmVtb3ZlRGF0YSgpYF0oaHR0cDovL2FwaS5qcXVlcnkuY29t
L3JlbW92ZURhdGEvKQorICogLSBbYHJlcGxhY2VXaXRoKClgXShodHRwOi8vYXBpLmpxdWVyeS5j
b20vcmVwbGFjZVdpdGgvKQorICogLSBbYHRleHQoKWBdKGh0dHA6Ly9hcGkuanF1ZXJ5LmNvbS90
ZXh0LykKKyAqIC0gW2B0b2dnbGVDbGFzcygpYF0oaHR0cDovL2FwaS5qcXVlcnkuY29tL3RvZ2ds
ZUNsYXNzLykKKyAqIC0gW2B0cmlnZ2VySGFuZGxlcigpYF0oaHR0cDovL2FwaS5qcXVlcnkuY29t
L3RyaWdnZXJIYW5kbGVyLykgLSBQYXNzZXMgYSBkdW1teSBldmVudCBvYmplY3QgdG8gaGFuZGxl
cnMuCisgKiAtIFtgdW5iaW5kKClgXShodHRwOi8vYXBpLmpxdWVyeS5jb20vdW5iaW5kLykgLSBE
b2VzIG5vdCBzdXBwb3J0IG5hbWVzcGFjZXMKKyAqIC0gW2B2YWwoKWBdKGh0dHA6Ly9hcGkuanF1
ZXJ5LmNvbS92YWwvKQorICogLSBbYHdyYXAoKWBdKGh0dHA6Ly9hcGkuanF1ZXJ5LmNvbS93cmFw
LykKKyAqCisgKiAjIyBqUXVlcnkvanFMaXRlIEV4dHJhcworICogQW5ndWxhciBhbHNvIHByb3Zp
ZGVzIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCBtZXRob2RzIGFuZCBldmVudHMgdG8gYm90aCBq
UXVlcnkgYW5kIGpxTGl0ZToKKyAqCisgKiAjIyMgRXZlbnRzCisgKiAtIGAkZGVzdHJveWAgLSBB
bmd1bGFySlMgaW50ZXJjZXB0cyBhbGwganFMaXRlL2pRdWVyeSdzIERPTSBkZXN0cnVjdGlvbiBh
cGlzIGFuZCBmaXJlcyB0aGlzIGV2ZW50CisgKiAgICBvbiBhbGwgRE9NIG5vZGVzIGJlaW5nIHJl
bW92ZWQuICBUaGlzIGNhbiBiZSB1c2VkIHRvIGNsZWFuIHVwIGFueSAzcmQgcGFydHkgYmluZGlu
Z3MgdG8gdGhlIERPTQorICogICAgZWxlbWVudCBiZWZvcmUgaXQgaXMgcmVtb3ZlZC4KKyAqCisg
KiAjIyMgTWV0aG9kcworICogLSBgY29udHJvbGxlcihuYW1lKWAgLSByZXRyaWV2ZXMgdGhlIGNv
bnRyb2xsZXIgb2YgdGhlIGN1cnJlbnQgZWxlbWVudCBvciBpdHMgcGFyZW50LiBCeSBkZWZhdWx0
CisgKiAgIHJldHJpZXZlcyBjb250cm9sbGVyIGFzc29jaWF0ZWQgd2l0aCB0aGUgYG5nQ29udHJv
bGxlcmAgZGlyZWN0aXZlLiBJZiBgbmFtZWAgaXMgcHJvdmlkZWQgYXMKKyAqICAgY2FtZWxDYXNl
IGRpcmVjdGl2ZSBuYW1lLCB0aGVuIHRoZSBjb250cm9sbGVyIGZvciB0aGlzIGRpcmVjdGl2ZSB3
aWxsIGJlIHJldHJpZXZlZCAoZS5nLgorICogICBgJ25nTW9kZWwnYCkuCisgKiAtIGBpbmplY3Rv
cigpYCAtIHJldHJpZXZlcyB0aGUgaW5qZWN0b3Igb2YgdGhlIGN1cnJlbnQgZWxlbWVudCBvciBp
dHMgcGFyZW50LgorICogLSBgc2NvcGUoKWAgLSByZXRyaWV2ZXMgdGhlIHtAbGluayBuZy4kcm9v
dFNjb3BlLlNjb3BlIHNjb3BlfSBvZiB0aGUgY3VycmVudAorICogICBlbGVtZW50IG9yIGl0cyBw
YXJlbnQuIFJlcXVpcmVzIHtAbGluayBndWlkZS9wcm9kdWN0aW9uI2Rpc2FibGluZy1kZWJ1Zy1k
YXRhIERlYnVnIERhdGF9IHRvCisgKiAgIGJlIGVuYWJsZWQuCisgKiAtIGBpc29sYXRlU2NvcGUo
KWAgLSByZXRyaWV2ZXMgYW4gaXNvbGF0ZSB7QGxpbmsgbmcuJHJvb3RTY29wZS5TY29wZSBzY29w
ZX0gaWYgb25lIGlzIGF0dGFjaGVkIGRpcmVjdGx5IHRvIHRoZQorICogICBjdXJyZW50IGVsZW1l
bnQuIFRoaXMgZ2V0dGVyIHNob3VsZCBiZSB1c2VkIG9ubHkgb24gZWxlbWVudHMgdGhhdCBjb250
YWluIGEgZGlyZWN0aXZlIHdoaWNoIHN0YXJ0cyBhIG5ldyBpc29sYXRlCisgKiAgIHNjb3BlLiBD
YWxsaW5nIGBzY29wZSgpYCBvbiB0aGlzIGVsZW1lbnQgYWx3YXlzIHJldHVybnMgdGhlIG9yaWdp
bmFsIG5vbi1pc29sYXRlIHNjb3BlLgorICogICBSZXF1aXJlcyB7QGxpbmsgZ3VpZGUvcHJvZHVj
dGlvbiNkaXNhYmxpbmctZGVidWctZGF0YSBEZWJ1ZyBEYXRhfSB0byBiZSBlbmFibGVkLgorICog
LSBgaW5oZXJpdGVkRGF0YSgpYCAtIHNhbWUgYXMgYGRhdGEoKWAsIGJ1dCB3YWxrcyB1cCB0aGUg
RE9NIHVudGlsIGEgdmFsdWUgaXMgZm91bmQgb3IgdGhlIHRvcAorICogICBwYXJlbnQgZWxlbWVu
dCBpcyByZWFjaGVkLgorICoKKyAqIEBwYXJhbSB7c3RyaW5nfERPTUVsZW1lbnR9IGVsZW1lbnQg
SFRNTCBzdHJpbmcgb3IgRE9NRWxlbWVudCB0byBiZSB3cmFwcGVkIGludG8galF1ZXJ5LgorICog
QHJldHVybnMge09iamVjdH0galF1ZXJ5IG9iamVjdC4KKyAqLworCitKUUxpdGUuZXhwYW5kbyA9
ICduZzMzOSc7CisKK3ZhciBqcUNhY2hlID0gSlFMaXRlLmNhY2hlID0ge30sCisgICAganFJZCA9
IDEsCisgICAgYWRkRXZlbnRMaXN0ZW5lckZuID0gZnVuY3Rpb24oZWxlbWVudCwgdHlwZSwgZm4p
IHsKKyAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcih0eXBlLCBmbiwgZmFsc2UpOworICAg
IH0sCisgICAgcmVtb3ZlRXZlbnRMaXN0ZW5lckZuID0gZnVuY3Rpb24oZWxlbWVudCwgdHlwZSwg
Zm4pIHsKKyAgICAgIGVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCBmbiwgZmFsc2Up
OworICAgIH07CisKKy8qCisgKiAhISEgVGhpcyBpcyBhbiB1bmRvY3VtZW50ZWQgInByaXZhdGUi
IGZ1bmN0aW9uICEhIQorICovCitKUUxpdGUuX2RhdGEgPSBmdW5jdGlvbihub2RlKSB7CisgIC8v
alF1ZXJ5IGFsd2F5cyByZXR1cm5zIGFuIG9iamVjdCBvbiBjYWNoZSBtaXNzCisgIHJldHVybiB0
aGlzLmNhY2hlW25vZGVbdGhpcy5leHBhbmRvXV0gfHwge307Cit9OworCitmdW5jdGlvbiBqcU5l
eHRJZCgpIHsgcmV0dXJuICsranFJZDsgfQorCisKK3ZhciBTUEVDSUFMX0NIQVJTX1JFR0VYUCA9
IC8oW1w6XC1cX10rKC4pKS9nOwordmFyIE1PWl9IQUNLX1JFR0VYUCA9IC9ebW96KFtBLVpdKS87
Cit2YXIgTU9VU0VfRVZFTlRfTUFQPSB7IG1vdXNlbGVhdmU6ICJtb3VzZW91dCIsIG1vdXNlZW50
ZXI6ICJtb3VzZW92ZXIifTsKK3ZhciBqcUxpdGVNaW5FcnIgPSBtaW5FcnIoJ2pxTGl0ZScpOwor
CisvKioKKyAqIENvbnZlcnRzIHNuYWtlX2Nhc2UgdG8gY2FtZWxDYXNlLgorICogQWxzbyB0aGVy
ZSBpcyBzcGVjaWFsIGNhc2UgZm9yIE1veiBwcmVmaXggc3RhcnRpbmcgd2l0aCB1cHBlciBjYXNl
IGxldHRlci4KKyAqIEBwYXJhbSBuYW1lIE5hbWUgdG8gbm9ybWFsaXplCisgKi8KK2Z1bmN0aW9u
IGNhbWVsQ2FzZShuYW1lKSB7CisgIHJldHVybiBuYW1lLgorICAgIHJlcGxhY2UoU1BFQ0lBTF9D
SEFSU19SRUdFWFAsIGZ1bmN0aW9uKF8sIHNlcGFyYXRvciwgbGV0dGVyLCBvZmZzZXQpIHsKKyAg
ICAgIHJldHVybiBvZmZzZXQgPyBsZXR0ZXIudG9VcHBlckNhc2UoKSA6IGxldHRlcjsKKyAgICB9
KS4KKyAgICByZXBsYWNlKE1PWl9IQUNLX1JFR0VYUCwgJ01veiQxJyk7Cit9CisKK3ZhciBTSU5H
TEVfVEFHX1JFR0VYUCA9IC9ePChcdyspXHMqXC8/Pig/OjxcL1wxPnwpJC87Cit2YXIgSFRNTF9S
RUdFWFAgPSAvPHwmIz9cdys7LzsKK3ZhciBUQUdfTkFNRV9SRUdFWFAgPSAvPChbXHc6XSspLzsK
K3ZhciBYSFRNTF9UQUdfUkVHRVhQID0gLzwoPyFhcmVhfGJyfGNvbHxlbWJlZHxocnxpbWd8aW5w
dXR8bGlua3xtZXRhfHBhcmFtKSgoW1x3Ol0rKVtePl0qKVwvPi9naTsKKwordmFyIHdyYXBNYXAg
PSB7CisgICdvcHRpb24nOiBbMSwgJzxzZWxlY3QgbXVsdGlwbGU9Im11bHRpcGxlIj4nLCAnPC9z
ZWxlY3Q+J10sCisKKyAgJ3RoZWFkJzogWzEsICc8dGFibGU+JywgJzwvdGFibGU+J10sCisgICdj
b2wnOiBbMiwgJzx0YWJsZT48Y29sZ3JvdXA+JywgJzwvY29sZ3JvdXA+PC90YWJsZT4nXSwKKyAg
J3RyJzogWzIsICc8dGFibGU+PHRib2R5PicsICc8L3Rib2R5PjwvdGFibGU+J10sCisgICd0ZCc6
IFszLCAnPHRhYmxlPjx0Ym9keT48dHI+JywgJzwvdHI+PC90Ym9keT48L3RhYmxlPiddLAorICAn
X2RlZmF1bHQnOiBbMCwgIiIsICIiXQorfTsKKword3JhcE1hcC5vcHRncm91cCA9IHdyYXBNYXAu
b3B0aW9uOword3JhcE1hcC50Ym9keSA9IHdyYXBNYXAudGZvb3QgPSB3cmFwTWFwLmNvbGdyb3Vw
ID0gd3JhcE1hcC5jYXB0aW9uID0gd3JhcE1hcC50aGVhZDsKK3dyYXBNYXAudGggPSB3cmFwTWFw
LnRkOworCisKK2Z1bmN0aW9uIGpxTGl0ZUlzVGV4dE5vZGUoaHRtbCkgeworICByZXR1cm4gIUhU
TUxfUkVHRVhQLnRlc3QoaHRtbCk7Cit9CisKK2Z1bmN0aW9uIGpxTGl0ZUFjY2VwdHNEYXRhKG5v
ZGUpIHsKKyAgLy8gVGhlIHdpbmRvdyBvYmplY3QgY2FuIGFjY2VwdCBkYXRhIGJ1dCBoYXMgbm8g
bm9kZVR5cGUKKyAgLy8gT3RoZXJ3aXNlIHdlIGFyZSBvbmx5IGludGVyZXN0ZWQgaW4gZWxlbWVu
dHMgKDEpIGFuZCBkb2N1bWVudHMgKDkpCisgIHZhciBub2RlVHlwZSA9IG5vZGUubm9kZVR5cGU7
CisgIHJldHVybiBub2RlVHlwZSA9PT0gTk9ERV9UWVBFX0VMRU1FTlQgfHwgIW5vZGVUeXBlIHx8
IG5vZGVUeXBlID09PSBOT0RFX1RZUEVfRE9DVU1FTlQ7Cit9CisKK2Z1bmN0aW9uIGpxTGl0ZUhh
c0RhdGEobm9kZSkgeworICBmb3IgKHZhciBrZXkgaW4ganFDYWNoZVtub2RlLm5nMzM5XSkgewor
ICAgIHJldHVybiB0cnVlOworICB9CisgIHJldHVybiBmYWxzZTsKK30KKworZnVuY3Rpb24ganFM
aXRlQnVpbGRGcmFnbWVudChodG1sLCBjb250ZXh0KSB7CisgIHZhciB0bXAsIHRhZywgd3JhcCwK
KyAgICAgIGZyYWdtZW50ID0gY29udGV4dC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksCisgICAg
ICBub2RlcyA9IFtdLCBpOworCisgIGlmIChqcUxpdGVJc1RleHROb2RlKGh0bWwpKSB7CisgICAg
Ly8gQ29udmVydCBub24taHRtbCBpbnRvIGEgdGV4dCBub2RlCisgICAgbm9kZXMucHVzaChjb250
ZXh0LmNyZWF0ZVRleHROb2RlKGh0bWwpKTsKKyAgfSBlbHNlIHsKKyAgICAvLyBDb252ZXJ0IGh0
bWwgaW50byBET00gbm9kZXMKKyAgICB0bXAgPSB0bXAgfHwgZnJhZ21lbnQuYXBwZW5kQ2hpbGQo
Y29udGV4dC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7CisgICAgdGFnID0gKFRBR19OQU1FX1JFR0VY
UC5leGVjKGh0bWwpIHx8IFsiIiwgIiJdKVsxXS50b0xvd2VyQ2FzZSgpOworICAgIHdyYXAgPSB3
cmFwTWFwW3RhZ10gfHwgd3JhcE1hcC5fZGVmYXVsdDsKKyAgICB0bXAuaW5uZXJIVE1MID0gd3Jh
cFsxXSArIGh0bWwucmVwbGFjZShYSFRNTF9UQUdfUkVHRVhQLCAiPCQxPjwvJDI+IikgKyB3cmFw
WzJdOworCisgICAgLy8gRGVzY2VuZCB0aHJvdWdoIHdyYXBwZXJzIHRvIHRoZSByaWdodCBjb250
ZW50CisgICAgaSA9IHdyYXBbMF07CisgICAgd2hpbGUgKGktLSkgeworICAgICAgdG1wID0gdG1w
Lmxhc3RDaGlsZDsKKyAgICB9CisKKyAgICBub2RlcyA9IGNvbmNhdChub2RlcywgdG1wLmNoaWxk
Tm9kZXMpOworCisgICAgdG1wID0gZnJhZ21lbnQuZmlyc3RDaGlsZDsKKyAgICB0bXAudGV4dENv
bnRlbnQgPSAiIjsKKyAgfQorCisgIC8vIFJlbW92ZSB3cmFwcGVyIGZyb20gZnJhZ21lbnQKKyAg
ZnJhZ21lbnQudGV4dENvbnRlbnQgPSAiIjsKKyAgZnJhZ21lbnQuaW5uZXJIVE1MID0gIiI7IC8v
IENsZWFyIGlubmVyIEhUTUwKKyAgZm9yRWFjaChub2RlcywgZnVuY3Rpb24obm9kZSkgeworICAg
IGZyYWdtZW50LmFwcGVuZENoaWxkKG5vZGUpOworICB9KTsKKworICByZXR1cm4gZnJhZ21lbnQ7
Cit9CisKK2Z1bmN0aW9uIGpxTGl0ZVBhcnNlSFRNTChodG1sLCBjb250ZXh0KSB7CisgIGNvbnRl
eHQgPSBjb250ZXh0IHx8IGRvY3VtZW50OworICB2YXIgcGFyc2VkOworCisgIGlmICgocGFyc2Vk
ID0gU0lOR0xFX1RBR19SRUdFWFAuZXhlYyhodG1sKSkpIHsKKyAgICByZXR1cm4gW2NvbnRleHQu
Y3JlYXRlRWxlbWVudChwYXJzZWRbMV0pXTsKKyAgfQorCisgIGlmICgocGFyc2VkID0ganFMaXRl
QnVpbGRGcmFnbWVudChodG1sLCBjb250ZXh0KSkpIHsKKyAgICByZXR1cm4gcGFyc2VkLmNoaWxk
Tm9kZXM7CisgIH0KKworICByZXR1cm4gW107Cit9CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLworZnVuY3Rpb24gSlFMaXRlKGVsZW1lbnQpIHsKKyAgaWYg
KGVsZW1lbnQgaW5zdGFuY2VvZiBKUUxpdGUpIHsKKyAgICByZXR1cm4gZWxlbWVudDsKKyAgfQor
CisgIHZhciBhcmdJc1N0cmluZzsKKworICBpZiAoaXNTdHJpbmcoZWxlbWVudCkpIHsKKyAgICBl
bGVtZW50ID0gdHJpbShlbGVtZW50KTsKKyAgICBhcmdJc1N0cmluZyA9IHRydWU7CisgIH0KKyAg
aWYgKCEodGhpcyBpbnN0YW5jZW9mIEpRTGl0ZSkpIHsKKyAgICBpZiAoYXJnSXNTdHJpbmcgJiYg
ZWxlbWVudC5jaGFyQXQoMCkgIT0gJzwnKSB7CisgICAgICB0aHJvdyBqcUxpdGVNaW5FcnIoJ25v
c2VsJywgJ0xvb2tpbmcgdXAgZWxlbWVudHMgdmlhIHNlbGVjdG9ycyBpcyBub3Qgc3VwcG9ydGVk
IGJ5IGpxTGl0ZSEgU2VlOiBodHRwOi8vZG9jcy5hbmd1bGFyanMub3JnL2FwaS9hbmd1bGFyLmVs
ZW1lbnQnKTsKKyAgICB9CisgICAgcmV0dXJuIG5ldyBKUUxpdGUoZWxlbWVudCk7CisgIH0KKwor
ICBpZiAoYXJnSXNTdHJpbmcpIHsKKyAgICBqcUxpdGVBZGROb2Rlcyh0aGlzLCBqcUxpdGVQYXJz
ZUhUTUwoZWxlbWVudCkpOworICB9IGVsc2UgeworICAgIGpxTGl0ZUFkZE5vZGVzKHRoaXMsIGVs
ZW1lbnQpOworICB9Cit9CisKK2Z1bmN0aW9uIGpxTGl0ZUNsb25lKGVsZW1lbnQpIHsKKyAgcmV0
dXJuIGVsZW1lbnQuY2xvbmVOb2RlKHRydWUpOworfQorCitmdW5jdGlvbiBqcUxpdGVEZWFsb2Mo
ZWxlbWVudCwgb25seURlc2NlbmRhbnRzKSB7CisgIGlmICghb25seURlc2NlbmRhbnRzKSBqcUxp
dGVSZW1vdmVEYXRhKGVsZW1lbnQpOworCisgIGlmIChlbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwp
IHsKKyAgICB2YXIgZGVzY2VuZGFudHMgPSBlbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJyonKTsK
KyAgICBmb3IgKHZhciBpID0gMCwgbCA9IGRlc2NlbmRhbnRzLmxlbmd0aDsgaSA8IGw7IGkrKykg
eworICAgICAganFMaXRlUmVtb3ZlRGF0YShkZXNjZW5kYW50c1tpXSk7CisgICAgfQorICB9Cit9
CisKK2Z1bmN0aW9uIGpxTGl0ZU9mZihlbGVtZW50LCB0eXBlLCBmbiwgdW5zdXBwb3J0ZWQpIHsK
KyAgaWYgKGlzRGVmaW5lZCh1bnN1cHBvcnRlZCkpIHRocm93IGpxTGl0ZU1pbkVycignb2ZmYXJn
cycsICdqcUxpdGUjb2ZmKCkgZG9lcyBub3Qgc3VwcG9ydCB0aGUgYHNlbGVjdG9yYCBhcmd1bWVu
dCcpOworCisgIHZhciBleHBhbmRvU3RvcmUgPSBqcUxpdGVFeHBhbmRvU3RvcmUoZWxlbWVudCk7
CisgIHZhciBldmVudHMgPSBleHBhbmRvU3RvcmUgJiYgZXhwYW5kb1N0b3JlLmV2ZW50czsKKyAg
dmFyIGhhbmRsZSA9IGV4cGFuZG9TdG9yZSAmJiBleHBhbmRvU3RvcmUuaGFuZGxlOworCisgIGlm
ICghaGFuZGxlKSByZXR1cm47IC8vbm8gbGlzdGVuZXJzIHJlZ2lzdGVyZWQKKworICBpZiAoIXR5
cGUpIHsKKyAgICBmb3IgKHR5cGUgaW4gZXZlbnRzKSB7CisgICAgICBpZiAodHlwZSAhPT0gJyRk
ZXN0cm95JykgeworICAgICAgICByZW1vdmVFdmVudExpc3RlbmVyRm4oZWxlbWVudCwgdHlwZSwg
aGFuZGxlKTsKKyAgICAgIH0KKyAgICAgIGRlbGV0ZSBldmVudHNbdHlwZV07CisgICAgfQorICB9
IGVsc2UgeworICAgIGZvckVhY2godHlwZS5zcGxpdCgnICcpLCBmdW5jdGlvbih0eXBlKSB7Cisg
ICAgICBpZiAoaXNEZWZpbmVkKGZuKSkgeworICAgICAgICB2YXIgbGlzdGVuZXJGbnMgPSBldmVu
dHNbdHlwZV07CisgICAgICAgIGFycmF5UmVtb3ZlKGxpc3RlbmVyRm5zIHx8IFtdLCBmbik7Cisg
ICAgICAgIGlmIChsaXN0ZW5lckZucyAmJiBsaXN0ZW5lckZucy5sZW5ndGggPiAwKSB7CisgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIHJlbW92ZUV2ZW50TGlz
dGVuZXJGbihlbGVtZW50LCB0eXBlLCBoYW5kbGUpOworICAgICAgZGVsZXRlIGV2ZW50c1t0eXBl
XTsKKyAgICB9KTsKKyAgfQorfQorCitmdW5jdGlvbiBqcUxpdGVSZW1vdmVEYXRhKGVsZW1lbnQs
IG5hbWUpIHsKKyAgdmFyIGV4cGFuZG9JZCA9IGVsZW1lbnQubmczMzk7CisgIHZhciBleHBhbmRv
U3RvcmUgPSBleHBhbmRvSWQgJiYganFDYWNoZVtleHBhbmRvSWRdOworCisgIGlmIChleHBhbmRv
U3RvcmUpIHsKKyAgICBpZiAobmFtZSkgeworICAgICAgZGVsZXRlIGV4cGFuZG9TdG9yZS5kYXRh
W25hbWVdOworICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChleHBhbmRvU3RvcmUuaGFu
ZGxlKSB7CisgICAgICBpZiAoZXhwYW5kb1N0b3JlLmV2ZW50cy4kZGVzdHJveSkgeworICAgICAg
ICBleHBhbmRvU3RvcmUuaGFuZGxlKHt9LCAnJGRlc3Ryb3knKTsKKyAgICAgIH0KKyAgICAgIGpx
TGl0ZU9mZihlbGVtZW50KTsKKyAgICB9CisgICAgZGVsZXRlIGpxQ2FjaGVbZXhwYW5kb0lkXTsK
KyAgICBlbGVtZW50Lm5nMzM5ID0gdW5kZWZpbmVkOyAvLyBkb24ndCBkZWxldGUgRE9NIGV4cGFu
ZG9zLiBJRSBhbmQgQ2hyb21lIGRvbid0IGxpa2UgaXQKKyAgfQorfQorCisKK2Z1bmN0aW9uIGpx
TGl0ZUV4cGFuZG9TdG9yZShlbGVtZW50LCBjcmVhdGVJZk5lY2Vzc2FyeSkgeworICB2YXIgZXhw
YW5kb0lkID0gZWxlbWVudC5uZzMzOSwKKyAgICAgIGV4cGFuZG9TdG9yZSA9IGV4cGFuZG9JZCAm
JiBqcUNhY2hlW2V4cGFuZG9JZF07CisKKyAgaWYgKGNyZWF0ZUlmTmVjZXNzYXJ5ICYmICFleHBh
bmRvU3RvcmUpIHsKKyAgICBlbGVtZW50Lm5nMzM5ID0gZXhwYW5kb0lkID0ganFOZXh0SWQoKTsK
KyAgICBleHBhbmRvU3RvcmUgPSBqcUNhY2hlW2V4cGFuZG9JZF0gPSB7ZXZlbnRzOiB7fSwgZGF0
YToge30sIGhhbmRsZTogdW5kZWZpbmVkfTsKKyAgfQorCisgIHJldHVybiBleHBhbmRvU3RvcmU7
Cit9CisKKworZnVuY3Rpb24ganFMaXRlRGF0YShlbGVtZW50LCBrZXksIHZhbHVlKSB7CisgIGlm
IChqcUxpdGVBY2NlcHRzRGF0YShlbGVtZW50KSkgeworCisgICAgdmFyIGlzU2ltcGxlU2V0dGVy
ID0gaXNEZWZpbmVkKHZhbHVlKTsKKyAgICB2YXIgaXNTaW1wbGVHZXR0ZXIgPSAhaXNTaW1wbGVT
ZXR0ZXIgJiYga2V5ICYmICFpc09iamVjdChrZXkpOworICAgIHZhciBtYXNzR2V0dGVyID0gIWtl
eTsKKyAgICB2YXIgZXhwYW5kb1N0b3JlID0ganFMaXRlRXhwYW5kb1N0b3JlKGVsZW1lbnQsICFp
c1NpbXBsZUdldHRlcik7CisgICAgdmFyIGRhdGEgPSBleHBhbmRvU3RvcmUgJiYgZXhwYW5kb1N0
b3JlLmRhdGE7CisKKyAgICBpZiAoaXNTaW1wbGVTZXR0ZXIpIHsgLy8gZGF0YSgna2V5JywgdmFs
dWUpCisgICAgICBkYXRhW2tleV0gPSB2YWx1ZTsKKyAgICB9IGVsc2UgeworICAgICAgaWYgKG1h
c3NHZXR0ZXIpIHsgIC8vIGRhdGEoKQorICAgICAgICByZXR1cm4gZGF0YTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIGlmIChpc1NpbXBsZUdldHRlcikgeyAvLyBkYXRhKCdrZXknKQorICAgICAg
ICAgIC8vIGRvbid0IGZvcmNlIGNyZWF0aW9uIG9mIGV4cGFuZG9TdG9yZSBpZiBpdCBkb2Vzbid0
IGV4aXN0IHlldAorICAgICAgICAgIHJldHVybiBkYXRhICYmIGRhdGFba2V5XTsKKyAgICAgICAg
fSBlbHNlIHsgLy8gbWFzcy1zZXR0ZXI6IGRhdGEoe2tleTE6IHZhbDEsIGtleTI6IHZhbDJ9KQor
ICAgICAgICAgIGV4dGVuZChkYXRhLCBrZXkpOworICAgICAgICB9CisgICAgICB9CisgICAgfQor
ICB9Cit9CisKK2Z1bmN0aW9uIGpxTGl0ZUhhc0NsYXNzKGVsZW1lbnQsIHNlbGVjdG9yKSB7Cisg
IGlmICghZWxlbWVudC5nZXRBdHRyaWJ1dGUpIHJldHVybiBmYWxzZTsKKyAgcmV0dXJuICgoIiAi
ICsgKGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdjbGFzcycpIHx8ICcnKSArICIgIikucmVwbGFjZSgv
W1xuXHRdL2csICIgIikuCisgICAgICBpbmRleE9mKCIgIiArIHNlbGVjdG9yICsgIiAiKSA+IC0x
KTsKK30KKworZnVuY3Rpb24ganFMaXRlUmVtb3ZlQ2xhc3MoZWxlbWVudCwgY3NzQ2xhc3Nlcykg
eworICBpZiAoY3NzQ2xhc3NlcyAmJiBlbGVtZW50LnNldEF0dHJpYnV0ZSkgeworICAgIGZvckVh
Y2goY3NzQ2xhc3Nlcy5zcGxpdCgnICcpLCBmdW5jdGlvbihjc3NDbGFzcykgeworICAgICAgZWxl
bWVudC5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgdHJpbSgKKyAgICAgICAgICAoIiAiICsgKGVsZW1l
bnQuZ2V0QXR0cmlidXRlKCdjbGFzcycpIHx8ICcnKSArICIgIikKKyAgICAgICAgICAucmVwbGFj
ZSgvW1xuXHRdL2csICIgIikKKyAgICAgICAgICAucmVwbGFjZSgiICIgKyB0cmltKGNzc0NsYXNz
KSArICIgIiwgIiAiKSkKKyAgICAgICk7CisgICAgfSk7CisgIH0KK30KKworZnVuY3Rpb24ganFM
aXRlQWRkQ2xhc3MoZWxlbWVudCwgY3NzQ2xhc3NlcykgeworICBpZiAoY3NzQ2xhc3NlcyAmJiBl
bGVtZW50LnNldEF0dHJpYnV0ZSkgeworICAgIHZhciBleGlzdGluZ0NsYXNzZXMgPSAoJyAnICsg
KGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdjbGFzcycpIHx8ICcnKSArICcgJykKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAucmVwbGFjZSgvW1xuXHRdL2csICIgIik7CisKKyAgICBmb3JFYWNo
KGNzc0NsYXNzZXMuc3BsaXQoJyAnKSwgZnVuY3Rpb24oY3NzQ2xhc3MpIHsKKyAgICAgIGNzc0Ns
YXNzID0gdHJpbShjc3NDbGFzcyk7CisgICAgICBpZiAoZXhpc3RpbmdDbGFzc2VzLmluZGV4T2Yo
JyAnICsgY3NzQ2xhc3MgKyAnICcpID09PSAtMSkgeworICAgICAgICBleGlzdGluZ0NsYXNzZXMg
Kz0gY3NzQ2xhc3MgKyAnICc7CisgICAgICB9CisgICAgfSk7CisKKyAgICBlbGVtZW50LnNldEF0
dHJpYnV0ZSgnY2xhc3MnLCB0cmltKGV4aXN0aW5nQ2xhc3NlcykpOworICB9Cit9CisKKworZnVu
Y3Rpb24ganFMaXRlQWRkTm9kZXMocm9vdCwgZWxlbWVudHMpIHsKKyAgLy8gVEhJUyBDT0RFIElT
IFZFUlkgSE9ULiBEb24ndCBtYWtlIGNoYW5nZXMgd2l0aG91dCBiZW5jaG1hcmtpbmcuCisKKyAg
aWYgKGVsZW1lbnRzKSB7CisKKyAgICAvLyBpZiBhIE5vZGUgKHRoZSBtb3N0IGNvbW1vbiBjYXNl
KQorICAgIGlmIChlbGVtZW50cy5ub2RlVHlwZSkgeworICAgICAgcm9vdFtyb290Lmxlbmd0aCsr
XSA9IGVsZW1lbnRzOworICAgIH0gZWxzZSB7CisgICAgICB2YXIgbGVuZ3RoID0gZWxlbWVudHMu
bGVuZ3RoOworCisgICAgICAvLyBpZiBhbiBBcnJheSBvciBOb2RlTGlzdCBhbmQgbm90IGEgV2lu
ZG93CisgICAgICBpZiAodHlwZW9mIGxlbmd0aCA9PT0gJ251bWJlcicgJiYgZWxlbWVudHMud2lu
ZG93ICE9PSBlbGVtZW50cykgeworICAgICAgICBpZiAobGVuZ3RoKSB7CisgICAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICAgICAgcm9vdFtyb290Lmxl
bmd0aCsrXSA9IGVsZW1lbnRzW2ldOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcm9vdFtyb290Lmxlbmd0aCsrXSA9IGVsZW1lbnRzOworICAgICAgfQor
ICAgIH0KKyAgfQorfQorCisKK2Z1bmN0aW9uIGpxTGl0ZUNvbnRyb2xsZXIoZWxlbWVudCwgbmFt
ZSkgeworICByZXR1cm4ganFMaXRlSW5oZXJpdGVkRGF0YShlbGVtZW50LCAnJCcgKyAobmFtZSB8
fCAnbmdDb250cm9sbGVyJykgKyAnQ29udHJvbGxlcicpOworfQorCitmdW5jdGlvbiBqcUxpdGVJ
bmhlcml0ZWREYXRhKGVsZW1lbnQsIG5hbWUsIHZhbHVlKSB7CisgIC8vIGlmIGVsZW1lbnQgaXMg
dGhlIGRvY3VtZW50IG9iamVjdCB3b3JrIHdpdGggdGhlIGh0bWwgZWxlbWVudCBpbnN0ZWFkCisg
IC8vIHRoaXMgbWFrZXMgJChkb2N1bWVudCkuc2NvcGUoKSBwb3NzaWJsZQorICBpZiAoZWxlbWVu
dC5ub2RlVHlwZSA9PSBOT0RFX1RZUEVfRE9DVU1FTlQpIHsKKyAgICBlbGVtZW50ID0gZWxlbWVu
dC5kb2N1bWVudEVsZW1lbnQ7CisgIH0KKyAgdmFyIG5hbWVzID0gaXNBcnJheShuYW1lKSA/IG5h
bWUgOiBbbmFtZV07CisKKyAgd2hpbGUgKGVsZW1lbnQpIHsKKyAgICBmb3IgKHZhciBpID0gMCwg
aWkgPSBuYW1lcy5sZW5ndGg7IGkgPCBpaTsgaSsrKSB7CisgICAgICBpZiAoKHZhbHVlID0ganFM
aXRlLmRhdGEoZWxlbWVudCwgbmFtZXNbaV0pKSAhPT0gdW5kZWZpbmVkKSByZXR1cm4gdmFsdWU7
CisgICAgfQorCisgICAgLy8gSWYgZGVhbGluZyB3aXRoIGEgZG9jdW1lbnQgZnJhZ21lbnQgbm9k
ZSB3aXRoIGEgaG9zdCBlbGVtZW50LCBhbmQgbm8gcGFyZW50LCB1c2UgdGhlIGhvc3QKKyAgICAv
LyBlbGVtZW50IGFzIHRoZSBwYXJlbnQuIFRoaXMgZW5hYmxlcyBkaXJlY3RpdmVzIHdpdGhpbiBh
IFNoYWRvdyBET00gb3IgcG9seWZpbGxlZCBTaGFkb3cgRE9NCisgICAgLy8gdG8gbG9va3VwIHBh
cmVudCBjb250cm9sbGVycy4KKyAgICBlbGVtZW50ID0gZWxlbWVudC5wYXJlbnROb2RlIHx8IChl
bGVtZW50Lm5vZGVUeXBlID09PSBOT0RFX1RZUEVfRE9DVU1FTlRfRlJBR01FTlQgJiYgZWxlbWVu
dC5ob3N0KTsKKyAgfQorfQorCitmdW5jdGlvbiBqcUxpdGVFbXB0eShlbGVtZW50KSB7CisgIGpx
TGl0ZURlYWxvYyhlbGVtZW50LCB0cnVlKTsKKyAgd2hpbGUgKGVsZW1lbnQuZmlyc3RDaGlsZCkg
eworICAgIGVsZW1lbnQucmVtb3ZlQ2hpbGQoZWxlbWVudC5maXJzdENoaWxkKTsKKyAgfQorfQor
CitmdW5jdGlvbiBqcUxpdGVSZW1vdmUoZWxlbWVudCwga2VlcERhdGEpIHsKKyAgaWYgKCFrZWVw
RGF0YSkganFMaXRlRGVhbG9jKGVsZW1lbnQpOworICB2YXIgcGFyZW50ID0gZWxlbWVudC5wYXJl
bnROb2RlOworICBpZiAocGFyZW50KSBwYXJlbnQucmVtb3ZlQ2hpbGQoZWxlbWVudCk7Cit9CisK
KworZnVuY3Rpb24ganFMaXRlRG9jdW1lbnRMb2FkZWQoYWN0aW9uLCB3aW4pIHsKKyAgd2luID0g
d2luIHx8IHdpbmRvdzsKKyAgaWYgKHdpbi5kb2N1bWVudC5yZWFkeVN0YXRlID09PSAnY29tcGxl
dGUnKSB7CisgICAgLy8gRm9yY2UgdGhlIGFjdGlvbiB0byBiZSBydW4gYXN5bmMgZm9yIGNvbnNp
c3RlbnQgYmVoYXZpb3VyCisgICAgLy8gZnJvbSB0aGUgYWN0aW9uJ3MgcG9pbnQgb2Ygdmlldwor
ICAgIC8vIGkuZS4gaXQgd2lsbCBkZWZpbml0ZWx5IG5vdCBiZSBpbiBhICRhcHBseQorICAgIHdp
bi5zZXRUaW1lb3V0KGFjdGlvbik7CisgIH0gZWxzZSB7CisgICAgLy8gTm8gbmVlZCB0byB1bmJp
bmQgdGhpcyBoYW5kbGVyIGFzIGxvYWQgaXMgb25seSBldmVyIGNhbGxlZCBvbmNlCisgICAganFM
aXRlKHdpbikub24oJ2xvYWQnLCBhY3Rpb24pOworICB9Cit9CisKKy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gRnVuY3Rpb25zIHdoaWNoIGFyZSBkZWNsYXJl
ZCBkaXJlY3RseS4KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwor
dmFyIEpRTGl0ZVByb3RvdHlwZSA9IEpRTGl0ZS5wcm90b3R5cGUgPSB7CisgIHJlYWR5OiBmdW5j
dGlvbihmbikgeworICAgIHZhciBmaXJlZCA9IGZhbHNlOworCisgICAgZnVuY3Rpb24gdHJpZ2dl
cigpIHsKKyAgICAgIGlmIChmaXJlZCkgcmV0dXJuOworICAgICAgZmlyZWQgPSB0cnVlOworICAg
ICAgZm4oKTsKKyAgICB9CisKKyAgICAvLyBjaGVjayBpZiBkb2N1bWVudCBpcyBhbHJlYWR5IGxv
YWRlZAorICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnY29tcGxldGUnKSB7CisgICAg
ICBzZXRUaW1lb3V0KHRyaWdnZXIpOworICAgIH0gZWxzZSB7CisgICAgICB0aGlzLm9uKCdET01D
b250ZW50TG9hZGVkJywgdHJpZ2dlcik7IC8vIHdvcmtzIGZvciBtb2Rlcm4gYnJvd3NlcnMgYW5k
IElFOQorICAgICAgLy8gd2UgY2FuIG5vdCB1c2UganFMaXRlIHNpbmNlIHdlIGFyZSBub3QgZG9u
ZSBsb2FkaW5nIGFuZCBqUXVlcnkgY291bGQgYmUgbG9hZGVkIGxhdGVyLgorICAgICAgLy8ganNo
aW50IC1XMDY0CisgICAgICBKUUxpdGUod2luZG93KS5vbignbG9hZCcsIHRyaWdnZXIpOyAvLyBm
YWxsYmFjayB0byB3aW5kb3cub25sb2FkIGZvciBvdGhlcnMKKyAgICAgIC8vIGpzaGludCArVzA2
NAorICAgIH0KKyAgfSwKKyAgdG9TdHJpbmc6IGZ1bmN0aW9uKCkgeworICAgIHZhciB2YWx1ZSA9
IFtdOworICAgIGZvckVhY2godGhpcywgZnVuY3Rpb24oZSkgeyB2YWx1ZS5wdXNoKCcnICsgZSk7
fSk7CisgICAgcmV0dXJuICdbJyArIHZhbHVlLmpvaW4oJywgJykgKyAnXSc7CisgIH0sCisKKyAg
ZXE6IGZ1bmN0aW9uKGluZGV4KSB7CisgICAgICByZXR1cm4gKGluZGV4ID49IDApID8ganFMaXRl
KHRoaXNbaW5kZXhdKSA6IGpxTGl0ZSh0aGlzW3RoaXMubGVuZ3RoICsgaW5kZXhdKTsKKyAgfSwK
KworICBsZW5ndGg6IDAsCisgIHB1c2g6IHB1c2gsCisgIHNvcnQ6IFtdLnNvcnQsCisgIHNwbGlj
ZTogW10uc3BsaWNlCit9OworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8KKy8vIEZ1bmN0aW9ucyBpdGVyYXRpbmcgZ2V0dGVyL3NldHRlcnMuCisvLyB0aGVzZSBm
dW5jdGlvbnMgcmV0dXJuIHNlbGYgb24gc2V0dGVyIGFuZAorLy8gdmFsdWUgb24gZ2V0LgorLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCit2YXIgQk9PTEVBTl9BVFRS
ID0ge307Citmb3JFYWNoKCdtdWx0aXBsZSxzZWxlY3RlZCxjaGVja2VkLGRpc2FibGVkLHJlYWRP
bmx5LHJlcXVpcmVkLG9wZW4nLnNwbGl0KCcsJyksIGZ1bmN0aW9uKHZhbHVlKSB7CisgIEJPT0xF
QU5fQVRUUltsb3dlcmNhc2UodmFsdWUpXSA9IHZhbHVlOworfSk7Cit2YXIgQk9PTEVBTl9FTEVN
RU5UUyA9IHt9OworZm9yRWFjaCgnaW5wdXQsc2VsZWN0LG9wdGlvbix0ZXh0YXJlYSxidXR0b24s
Zm9ybSxkZXRhaWxzJy5zcGxpdCgnLCcpLCBmdW5jdGlvbih2YWx1ZSkgeworICBCT09MRUFOX0VM
RU1FTlRTW3ZhbHVlXSA9IHRydWU7Cit9KTsKK3ZhciBBTElBU0VEX0FUVFIgPSB7CisgICduZ01p
bmxlbmd0aCc6ICdtaW5sZW5ndGgnLAorICAnbmdNYXhsZW5ndGgnOiAnbWF4bGVuZ3RoJywKKyAg
J25nTWluJzogJ21pbicsCisgICduZ01heCc6ICdtYXgnLAorICAnbmdQYXR0ZXJuJzogJ3BhdHRl
cm4nCit9OworCitmdW5jdGlvbiBnZXRCb29sZWFuQXR0ck5hbWUoZWxlbWVudCwgbmFtZSkgewor
ICAvLyBjaGVjayBkb20gbGFzdCBzaW5jZSB3ZSB3aWxsIG1vc3QgbGlrZWx5IGZhaWwgb24gbmFt
ZQorICB2YXIgYm9vbGVhbkF0dHIgPSBCT09MRUFOX0FUVFJbbmFtZS50b0xvd2VyQ2FzZSgpXTsK
KworICAvLyBib29sZWFuQXR0ciBpcyBoZXJlIHR3aWNlIHRvIG1pbmltaXplIERPTSBhY2Nlc3MK
KyAgcmV0dXJuIGJvb2xlYW5BdHRyICYmIEJPT0xFQU5fRUxFTUVOVFNbbm9kZU5hbWVfKGVsZW1l
bnQpXSAmJiBib29sZWFuQXR0cjsKK30KKworZnVuY3Rpb24gZ2V0QWxpYXNlZEF0dHJOYW1lKGVs
ZW1lbnQsIG5hbWUpIHsKKyAgdmFyIG5vZGVOYW1lID0gZWxlbWVudC5ub2RlTmFtZTsKKyAgcmV0
dXJuIChub2RlTmFtZSA9PT0gJ0lOUFVUJyB8fCBub2RlTmFtZSA9PT0gJ1RFWFRBUkVBJykgJiYg
QUxJQVNFRF9BVFRSW25hbWVdOworfQorCitmb3JFYWNoKHsKKyAgZGF0YToganFMaXRlRGF0YSwK
KyAgcmVtb3ZlRGF0YToganFMaXRlUmVtb3ZlRGF0YSwKKyAgaGFzRGF0YToganFMaXRlSGFzRGF0
YQorfSwgZnVuY3Rpb24oZm4sIG5hbWUpIHsKKyAgSlFMaXRlW25hbWVdID0gZm47Cit9KTsKKwor
Zm9yRWFjaCh7CisgIGRhdGE6IGpxTGl0ZURhdGEsCisgIGluaGVyaXRlZERhdGE6IGpxTGl0ZUlu
aGVyaXRlZERhdGEsCisKKyAgc2NvcGU6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKKyAgICAvLyBDYW4n
dCB1c2UganFMaXRlRGF0YSBoZXJlIGRpcmVjdGx5IHNvIHdlIHN0YXkgY29tcGF0aWJsZSB3aXRo
IGpRdWVyeSEKKyAgICByZXR1cm4ganFMaXRlLmRhdGEoZWxlbWVudCwgJyRzY29wZScpIHx8IGpx
TGl0ZUluaGVyaXRlZERhdGEoZWxlbWVudC5wYXJlbnROb2RlIHx8IGVsZW1lbnQsIFsnJGlzb2xh
dGVTY29wZScsICckc2NvcGUnXSk7CisgIH0sCisKKyAgaXNvbGF0ZVNjb3BlOiBmdW5jdGlvbihl
bGVtZW50KSB7CisgICAgLy8gQ2FuJ3QgdXNlIGpxTGl0ZURhdGEgaGVyZSBkaXJlY3RseSBzbyB3
ZSBzdGF5IGNvbXBhdGlibGUgd2l0aCBqUXVlcnkhCisgICAgcmV0dXJuIGpxTGl0ZS5kYXRhKGVs
ZW1lbnQsICckaXNvbGF0ZVNjb3BlJykgfHwganFMaXRlLmRhdGEoZWxlbWVudCwgJyRpc29sYXRl
U2NvcGVOb1RlbXBsYXRlJyk7CisgIH0sCisKKyAgY29udHJvbGxlcjoganFMaXRlQ29udHJvbGxl
ciwKKworICBpbmplY3RvcjogZnVuY3Rpb24oZWxlbWVudCkgeworICAgIHJldHVybiBqcUxpdGVJ
bmhlcml0ZWREYXRhKGVsZW1lbnQsICckaW5qZWN0b3InKTsKKyAgfSwKKworICByZW1vdmVBdHRy
OiBmdW5jdGlvbihlbGVtZW50LCBuYW1lKSB7CisgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUo
bmFtZSk7CisgIH0sCisKKyAgaGFzQ2xhc3M6IGpxTGl0ZUhhc0NsYXNzLAorCisgIGNzczogZnVu
Y3Rpb24oZWxlbWVudCwgbmFtZSwgdmFsdWUpIHsKKyAgICBuYW1lID0gY2FtZWxDYXNlKG5hbWUp
OworCisgICAgaWYgKGlzRGVmaW5lZCh2YWx1ZSkpIHsKKyAgICAgIGVsZW1lbnQuc3R5bGVbbmFt
ZV0gPSB2YWx1ZTsKKyAgICB9IGVsc2UgeworICAgICAgcmV0dXJuIGVsZW1lbnQuc3R5bGVbbmFt
ZV07CisgICAgfQorICB9LAorCisgIGF0dHI6IGZ1bmN0aW9uKGVsZW1lbnQsIG5hbWUsIHZhbHVl
KSB7CisgICAgdmFyIG5vZGVUeXBlID0gZWxlbWVudC5ub2RlVHlwZTsKKyAgICBpZiAobm9kZVR5
cGUgPT09IE5PREVfVFlQRV9URVhUIHx8IG5vZGVUeXBlID09PSBOT0RFX1RZUEVfQVRUUklCVVRF
IHx8IG5vZGVUeXBlID09PSBOT0RFX1RZUEVfQ09NTUVOVCkgeworICAgICAgcmV0dXJuOworICAg
IH0KKyAgICB2YXIgbG93ZXJjYXNlZE5hbWUgPSBsb3dlcmNhc2UobmFtZSk7CisgICAgaWYgKEJP
T0xFQU5fQVRUUltsb3dlcmNhc2VkTmFtZV0pIHsKKyAgICAgIGlmIChpc0RlZmluZWQodmFsdWUp
KSB7CisgICAgICAgIGlmICghIXZhbHVlKSB7CisgICAgICAgICAgZWxlbWVudFtuYW1lXSA9IHRy
dWU7CisgICAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUobmFtZSwgbG93ZXJjYXNlZE5hbWUp
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIGVsZW1lbnRbbmFtZV0gPSBmYWxzZTsKKyAg
ICAgICAgICBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShsb3dlcmNhc2VkTmFtZSk7CisgICAgICAg
IH0KKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiAoZWxlbWVudFtuYW1lXSB8fAorICAg
ICAgICAgICAgICAgICAoZWxlbWVudC5hdHRyaWJ1dGVzLmdldE5hbWVkSXRlbShuYW1lKSB8fCBu
b29wKS5zcGVjaWZpZWQpCisgICAgICAgICAgICAgICA/IGxvd2VyY2FzZWROYW1lCisgICAgICAg
ICAgICAgICA6IHVuZGVmaW5lZDsKKyAgICAgIH0KKyAgICB9IGVsc2UgaWYgKGlzRGVmaW5lZCh2
YWx1ZSkpIHsKKyAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKKyAgICB9
IGVsc2UgaWYgKGVsZW1lbnQuZ2V0QXR0cmlidXRlKSB7CisgICAgICAvLyB0aGUgZXh0cmEgYXJn
dW1lbnQgIjIiIGlzIHRvIGdldCB0aGUgcmlnaHQgdGhpbmcgZm9yIGEuaHJlZiBpbiBJRSwgc2Vl
IGpRdWVyeSBjb2RlCisgICAgICAvLyBzb21lIGVsZW1lbnRzIChlLmcuIERvY3VtZW50KSBkb24n
dCBoYXZlIGdldCBhdHRyaWJ1dGUsIHNvIHJldHVybiB1bmRlZmluZWQKKyAgICAgIHZhciByZXQg
PSBlbGVtZW50LmdldEF0dHJpYnV0ZShuYW1lLCAyKTsKKyAgICAgIC8vIG5vcm1hbGl6ZSBub24t
ZXhpc3RpbmcgYXR0cmlidXRlcyB0byB1bmRlZmluZWQgKGFzIGpRdWVyeSkKKyAgICAgIHJldHVy
biByZXQgPT09IG51bGwgPyB1bmRlZmluZWQgOiByZXQ7CisgICAgfQorICB9LAorCisgIHByb3A6
IGZ1bmN0aW9uKGVsZW1lbnQsIG5hbWUsIHZhbHVlKSB7CisgICAgaWYgKGlzRGVmaW5lZCh2YWx1
ZSkpIHsKKyAgICAgIGVsZW1lbnRbbmFtZV0gPSB2YWx1ZTsKKyAgICB9IGVsc2UgeworICAgICAg
cmV0dXJuIGVsZW1lbnRbbmFtZV07CisgICAgfQorICB9LAorCisgIHRleHQ6IChmdW5jdGlvbigp
IHsKKyAgICBnZXRUZXh0LiRkdiA9ICcnOworICAgIHJldHVybiBnZXRUZXh0OworCisgICAgZnVu
Y3Rpb24gZ2V0VGV4dChlbGVtZW50LCB2YWx1ZSkgeworICAgICAgaWYgKGlzVW5kZWZpbmVkKHZh
bHVlKSkgeworICAgICAgICB2YXIgbm9kZVR5cGUgPSBlbGVtZW50Lm5vZGVUeXBlOworICAgICAg
ICByZXR1cm4gKG5vZGVUeXBlID09PSBOT0RFX1RZUEVfRUxFTUVOVCB8fCBub2RlVHlwZSA9PT0g
Tk9ERV9UWVBFX1RFWFQpID8gZWxlbWVudC50ZXh0Q29udGVudCA6ICcnOworICAgICAgfQorICAg
ICAgZWxlbWVudC50ZXh0Q29udGVudCA9IHZhbHVlOworICAgIH0KKyAgfSkoKSwKKworICB2YWw6
IGZ1bmN0aW9uKGVsZW1lbnQsIHZhbHVlKSB7CisgICAgaWYgKGlzVW5kZWZpbmVkKHZhbHVlKSkg
eworICAgICAgaWYgKGVsZW1lbnQubXVsdGlwbGUgJiYgbm9kZU5hbWVfKGVsZW1lbnQpID09PSAn
c2VsZWN0JykgeworICAgICAgICB2YXIgcmVzdWx0ID0gW107CisgICAgICAgIGZvckVhY2goZWxl
bWVudC5vcHRpb25zLCBmdW5jdGlvbihvcHRpb24pIHsKKyAgICAgICAgICBpZiAob3B0aW9uLnNl
bGVjdGVkKSB7CisgICAgICAgICAgICByZXN1bHQucHVzaChvcHRpb24udmFsdWUgfHwgb3B0aW9u
LnRleHQpOworICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybiByZXN1bHQu
bGVuZ3RoID09PSAwID8gbnVsbCA6IHJlc3VsdDsKKyAgICAgIH0KKyAgICAgIHJldHVybiBlbGVt
ZW50LnZhbHVlOworICAgIH0KKyAgICBlbGVtZW50LnZhbHVlID0gdmFsdWU7CisgIH0sCisKKyAg
aHRtbDogZnVuY3Rpb24oZWxlbWVudCwgdmFsdWUpIHsKKyAgICBpZiAoaXNVbmRlZmluZWQodmFs
dWUpKSB7CisgICAgICByZXR1cm4gZWxlbWVudC5pbm5lckhUTUw7CisgICAgfQorICAgIGpxTGl0
ZURlYWxvYyhlbGVtZW50LCB0cnVlKTsKKyAgICBlbGVtZW50LmlubmVySFRNTCA9IHZhbHVlOwor
ICB9LAorCisgIGVtcHR5OiBqcUxpdGVFbXB0eQorfSwgZnVuY3Rpb24oZm4sIG5hbWUpIHsKKyAg
LyoqCisgICAqIFByb3BlcnRpZXM6IHdyaXRlcyByZXR1cm4gc2VsZWN0aW9uLCByZWFkcyByZXR1
cm4gZmlyc3QgdmFsdWUKKyAgICovCisgIEpRTGl0ZS5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlv
bihhcmcxLCBhcmcyKSB7CisgICAgdmFyIGksIGtleTsKKyAgICB2YXIgbm9kZUNvdW50ID0gdGhp
cy5sZW5ndGg7CisKKyAgICAvLyBqcUxpdGVIYXNDbGFzcyBoYXMgb25seSB0d28gYXJndW1lbnRz
LCBidXQgaXMgYSBnZXR0ZXItb25seSBmbiwgc28gd2UgbmVlZCB0byBzcGVjaWFsLWNhc2UgaXQK
KyAgICAvLyBpbiBhIHdheSB0aGF0IHN1cnZpdmVzIG1pbmlmaWNhdGlvbi4KKyAgICAvLyBqcUxp
dGVFbXB0eSB0YWtlcyBubyBhcmd1bWVudHMgYnV0IGlzIGEgc2V0dGVyLgorICAgIGlmIChmbiAh
PT0ganFMaXRlRW1wdHkgJiYKKyAgICAgICAgKCgoZm4ubGVuZ3RoID09IDIgJiYgKGZuICE9PSBq
cUxpdGVIYXNDbGFzcyAmJiBmbiAhPT0ganFMaXRlQ29udHJvbGxlcikpID8gYXJnMSA6IGFyZzIp
ID09PSB1bmRlZmluZWQpKSB7CisgICAgICBpZiAoaXNPYmplY3QoYXJnMSkpIHsKKworICAgICAg
ICAvLyB3ZSBhcmUgYSB3cml0ZSwgYnV0IHRoZSBvYmplY3QgcHJvcGVydGllcyBhcmUgdGhlIGtl
eS92YWx1ZXMKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG5vZGVDb3VudDsgaSsrKSB7CisgICAg
ICAgICAgaWYgKGZuID09PSBqcUxpdGVEYXRhKSB7CisgICAgICAgICAgICAvLyBkYXRhKCkgdGFr
ZXMgdGhlIHdob2xlIG9iamVjdCBpbiBqUXVlcnkKKyAgICAgICAgICAgIGZuKHRoaXNbaV0sIGFy
ZzEpOworICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBmb3IgKGtleSBpbiBhcmcxKSB7
CisgICAgICAgICAgICAgIGZuKHRoaXNbaV0sIGtleSwgYXJnMVtrZXldKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgLy8gcmV0dXJuIHNlbGYgZm9yIGNo
YWluaW5nCisgICAgICAgIHJldHVybiB0aGlzOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgLy8g
d2UgYXJlIGEgcmVhZCwgc28gcmVhZCB0aGUgZmlyc3QgY2hpbGQuCisgICAgICAgIC8vIFRPRE86
IGRvIHdlIHN0aWxsIG5lZWQgdGhpcz8KKyAgICAgICAgdmFyIHZhbHVlID0gZm4uJGR2OworICAg
ICAgICAvLyBPbmx5IGlmIHdlIGhhdmUgJGR2IGRvIHdlIGl0ZXJhdGUgb3ZlciBhbGwsIG90aGVy
d2lzZSBpdCBpcyBqdXN0IHRoZSBmaXJzdCBlbGVtZW50LgorICAgICAgICB2YXIgamogPSAodmFs
dWUgPT09IHVuZGVmaW5lZCkgPyBNYXRoLm1pbihub2RlQ291bnQsIDEpIDogbm9kZUNvdW50Owor
ICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGpqOyBqKyspIHsKKyAgICAgICAgICB2YXIgbm9k
ZVZhbHVlID0gZm4odGhpc1tqXSwgYXJnMSwgYXJnMik7CisgICAgICAgICAgdmFsdWUgPSB2YWx1
ZSA/IHZhbHVlICsgbm9kZVZhbHVlIDogbm9kZVZhbHVlOworICAgICAgICB9CisgICAgICAgIHJl
dHVybiB2YWx1ZTsKKyAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgLy8gd2UgYXJlIGEgd3Jp
dGUsIHNvIGFwcGx5IHRvIGFsbCBjaGlsZHJlbgorICAgICAgZm9yIChpID0gMDsgaSA8IG5vZGVD
b3VudDsgaSsrKSB7CisgICAgICAgIGZuKHRoaXNbaV0sIGFyZzEsIGFyZzIpOworICAgICAgfQor
ICAgICAgLy8gcmV0dXJuIHNlbGYgZm9yIGNoYWluaW5nCisgICAgICByZXR1cm4gdGhpczsKKyAg
ICB9CisgIH07Cit9KTsKKworZnVuY3Rpb24gY3JlYXRlRXZlbnRIYW5kbGVyKGVsZW1lbnQsIGV2
ZW50cykgeworICB2YXIgZXZlbnRIYW5kbGVyID0gZnVuY3Rpb24oZXZlbnQsIHR5cGUpIHsKKyAg
ICAvLyBqUXVlcnkgc3BlY2lmaWMgYXBpCisgICAgZXZlbnQuaXNEZWZhdWx0UHJldmVudGVkID0g
ZnVuY3Rpb24oKSB7CisgICAgICByZXR1cm4gZXZlbnQuZGVmYXVsdFByZXZlbnRlZDsKKyAgICB9
OworCisgICAgdmFyIGV2ZW50Rm5zID0gZXZlbnRzW3R5cGUgfHwgZXZlbnQudHlwZV07CisgICAg
dmFyIGV2ZW50Rm5zTGVuZ3RoID0gZXZlbnRGbnMgPyBldmVudEZucy5sZW5ndGggOiAwOworCisg
ICAgaWYgKCFldmVudEZuc0xlbmd0aCkgcmV0dXJuOworCisgICAgaWYgKGlzVW5kZWZpbmVkKGV2
ZW50LmltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCkpIHsKKyAgICAgIHZhciBvcmlnaW5hbFN0
b3BJbW1lZGlhdGVQcm9wYWdhdGlvbiA9IGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbjsK
KyAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbiA9IGZ1bmN0aW9uKCkgeworICAg
ICAgICBldmVudC5pbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQgPSB0cnVlOworCisgICAgICAg
IGlmIChldmVudC5zdG9wUHJvcGFnYXRpb24pIHsKKyAgICAgICAgICBldmVudC5zdG9wUHJvcGFn
YXRpb24oKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChvcmlnaW5hbFN0b3BJbW1lZGlhdGVQ
cm9wYWdhdGlvbikgeworICAgICAgICAgIG9yaWdpbmFsU3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9u
LmNhbGwoZXZlbnQpOworICAgICAgICB9CisgICAgICB9OworICAgIH0KKworICAgIGV2ZW50Lmlz
SW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkID0gZnVuY3Rpb24oKSB7CisgICAgICByZXR1cm4g
ZXZlbnQuaW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkID09PSB0cnVlOworICAgIH07CisKKyAg
ICAvLyBDb3B5IGV2ZW50IGhhbmRsZXJzIGluIGNhc2UgZXZlbnQgaGFuZGxlcnMgYXJyYXkgaXMg
bW9kaWZpZWQgZHVyaW5nIGV4ZWN1dGlvbi4KKyAgICBpZiAoKGV2ZW50Rm5zTGVuZ3RoID4gMSkp
IHsKKyAgICAgIGV2ZW50Rm5zID0gc2hhbGxvd0NvcHkoZXZlbnRGbnMpOworICAgIH0KKworICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgZXZlbnRGbnNMZW5ndGg7IGkrKykgeworICAgICAgaWYgKCFl
dmVudC5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCgpKSB7CisgICAgICAgIGV2ZW50Rm5z
W2ldLmNhbGwoZWxlbWVudCwgZXZlbnQpOworICAgICAgfQorICAgIH0KKyAgfTsKKworICAvLyBU
T0RPOiB0aGlzIGlzIGEgaGFjayBmb3IgYW5ndWxhck1vY2tzL2NsZWFyRGF0YUNhY2hlIHRoYXQg
bWFrZXMgaXQgcG9zc2libGUgdG8gZGVyZWdpc3RlciBhbGwKKyAgLy8gICAgICAgZXZlbnRzIG9u
IGBlbGVtZW50YAorICBldmVudEhhbmRsZXIuZWxlbSA9IGVsZW1lbnQ7CisgIHJldHVybiBldmVu
dEhhbmRsZXI7Cit9CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
LworLy8gRnVuY3Rpb25zIGl0ZXJhdGluZyB0cmF2ZXJzYWwuCisvLyBUaGVzZSBmdW5jdGlvbnMg
Y2hhaW4gcmVzdWx0cyBpbnRvIGEgc2luZ2xlCisvLyBzZWxlY3Rvci4KKy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworZm9yRWFjaCh7CisgIHJlbW92ZURhdGE6IGpx
TGl0ZVJlbW92ZURhdGEsCisKKyAgb246IGZ1bmN0aW9uIGpxTGl0ZU9uKGVsZW1lbnQsIHR5cGUs
IGZuLCB1bnN1cHBvcnRlZCkgeworICAgIGlmIChpc0RlZmluZWQodW5zdXBwb3J0ZWQpKSB0aHJv
dyBqcUxpdGVNaW5FcnIoJ29uYXJncycsICdqcUxpdGUjb24oKSBkb2VzIG5vdCBzdXBwb3J0IHRo
ZSBgc2VsZWN0b3JgIG9yIGBldmVudERhdGFgIHBhcmFtZXRlcnMnKTsKKworICAgIC8vIERvIG5v
dCBhZGQgZXZlbnQgaGFuZGxlcnMgdG8gbm9uLWVsZW1lbnRzIGJlY2F1c2UgdGhleSB3aWxsIG5v
dCBiZSBjbGVhbmVkIHVwLgorICAgIGlmICghanFMaXRlQWNjZXB0c0RhdGEoZWxlbWVudCkpIHsK
KyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2YXIgZXhwYW5kb1N0b3JlID0ganFMaXRlRXhw
YW5kb1N0b3JlKGVsZW1lbnQsIHRydWUpOworICAgIHZhciBldmVudHMgPSBleHBhbmRvU3RvcmUu
ZXZlbnRzOworICAgIHZhciBoYW5kbGUgPSBleHBhbmRvU3RvcmUuaGFuZGxlOworCisgICAgaWYg
KCFoYW5kbGUpIHsKKyAgICAgIGhhbmRsZSA9IGV4cGFuZG9TdG9yZS5oYW5kbGUgPSBjcmVhdGVF
dmVudEhhbmRsZXIoZWxlbWVudCwgZXZlbnRzKTsKKyAgICB9CisKKyAgICAvLyBodHRwOi8vanNw
ZXJmLmNvbS9zdHJpbmctaW5kZXhvZi12cy1zcGxpdAorICAgIHZhciB0eXBlcyA9IHR5cGUuaW5k
ZXhPZignICcpID49IDAgPyB0eXBlLnNwbGl0KCcgJykgOiBbdHlwZV07CisgICAgdmFyIGkgPSB0
eXBlcy5sZW5ndGg7CisKKyAgICB3aGlsZSAoaS0tKSB7CisgICAgICB0eXBlID0gdHlwZXNbaV07
CisgICAgICB2YXIgZXZlbnRGbnMgPSBldmVudHNbdHlwZV07CisKKyAgICAgIGlmICghZXZlbnRG
bnMpIHsKKyAgICAgICAgZXZlbnRzW3R5cGVdID0gW107CisKKyAgICAgICAgaWYgKHR5cGUgPT09
ICdtb3VzZWVudGVyJyB8fCB0eXBlID09PSAnbW91c2VsZWF2ZScpIHsKKyAgICAgICAgICAvLyBS
ZWZlciB0byBqUXVlcnkncyBpbXBsZW1lbnRhdGlvbiBvZiBtb3VzZWVudGVyICYgbW91c2VsZWF2
ZQorICAgICAgICAgIC8vIFJlYWQgYWJvdXQgbW91c2VlbnRlciBhbmQgbW91c2VsZWF2ZToKKyAg
ICAgICAgICAvLyBodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2pzL2V2ZW50c19tb3VzZS5odG1s
I2xpbms4CisKKyAgICAgICAgICBqcUxpdGVPbihlbGVtZW50LCBNT1VTRV9FVkVOVF9NQVBbdHlw
ZV0sIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gdGhpcywgcmVs
YXRlZCA9IGV2ZW50LnJlbGF0ZWRUYXJnZXQ7CisgICAgICAgICAgICAvLyBGb3IgbW91c2VudGVy
L2xlYXZlIGNhbGwgdGhlIGhhbmRsZXIgaWYgcmVsYXRlZCBpcyBvdXRzaWRlIHRoZSB0YXJnZXQu
CisgICAgICAgICAgICAvLyBOQjogTm8gcmVsYXRlZFRhcmdldCBpZiB0aGUgbW91c2UgbGVmdC9l
bnRlcmVkIHRoZSBicm93c2VyIHdpbmRvdworICAgICAgICAgICAgaWYgKCFyZWxhdGVkIHx8IChy
ZWxhdGVkICE9PSB0YXJnZXQgJiYgIXRhcmdldC5jb250YWlucyhyZWxhdGVkKSkpIHsKKyAgICAg
ICAgICAgICAgaGFuZGxlKGV2ZW50LCB0eXBlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9
KTsKKworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIGlmICh0eXBlICE9PSAnJGRlc3Ryb3kn
KSB7CisgICAgICAgICAgICBhZGRFdmVudExpc3RlbmVyRm4oZWxlbWVudCwgdHlwZSwgaGFuZGxl
KTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZXZlbnRGbnMgPSBldmVudHNbdHlw
ZV07CisgICAgICB9CisgICAgICBldmVudEZucy5wdXNoKGZuKTsKKyAgICB9CisgIH0sCisKKyAg
b2ZmOiBqcUxpdGVPZmYsCisKKyAgb25lOiBmdW5jdGlvbihlbGVtZW50LCB0eXBlLCBmbikgewor
ICAgIGVsZW1lbnQgPSBqcUxpdGUoZWxlbWVudCk7CisKKyAgICAvL2FkZCB0aGUgbGlzdGVuZXIg
dHdpY2Ugc28gdGhhdCB3aGVuIGl0IGlzIGNhbGxlZAorICAgIC8veW91IGNhbiByZW1vdmUgdGhl
IG9yaWdpbmFsIGZ1bmN0aW9uIGFuZCBzdGlsbCBiZQorICAgIC8vYWJsZSB0byBjYWxsIGVsZW1l
bnQub2ZmKGV2LCBmbikgbm9ybWFsbHkKKyAgICBlbGVtZW50Lm9uKHR5cGUsIGZ1bmN0aW9uIG9u
Rm4oKSB7CisgICAgICBlbGVtZW50Lm9mZih0eXBlLCBmbik7CisgICAgICBlbGVtZW50Lm9mZih0
eXBlLCBvbkZuKTsKKyAgICB9KTsKKyAgICBlbGVtZW50Lm9uKHR5cGUsIGZuKTsKKyAgfSwKKwor
ICByZXBsYWNlV2l0aDogZnVuY3Rpb24oZWxlbWVudCwgcmVwbGFjZU5vZGUpIHsKKyAgICB2YXIg
aW5kZXgsIHBhcmVudCA9IGVsZW1lbnQucGFyZW50Tm9kZTsKKyAgICBqcUxpdGVEZWFsb2MoZWxl
bWVudCk7CisgICAgZm9yRWFjaChuZXcgSlFMaXRlKHJlcGxhY2VOb2RlKSwgZnVuY3Rpb24obm9k
ZSkgeworICAgICAgaWYgKGluZGV4KSB7CisgICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUobm9k
ZSwgaW5kZXgubmV4dFNpYmxpbmcpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcGFyZW50LnJl
cGxhY2VDaGlsZChub2RlLCBlbGVtZW50KTsKKyAgICAgIH0KKyAgICAgIGluZGV4ID0gbm9kZTsK
KyAgICB9KTsKKyAgfSwKKworICBjaGlsZHJlbjogZnVuY3Rpb24oZWxlbWVudCkgeworICAgIHZh
ciBjaGlsZHJlbiA9IFtdOworICAgIGZvckVhY2goZWxlbWVudC5jaGlsZE5vZGVzLCBmdW5jdGlv
bihlbGVtZW50KSB7CisgICAgICBpZiAoZWxlbWVudC5ub2RlVHlwZSA9PT0gTk9ERV9UWVBFX0VM
RU1FTlQpIHsKKyAgICAgICAgY2hpbGRyZW4ucHVzaChlbGVtZW50KTsKKyAgICAgIH0KKyAgICB9
KTsKKyAgICByZXR1cm4gY2hpbGRyZW47CisgIH0sCisKKyAgY29udGVudHM6IGZ1bmN0aW9uKGVs
ZW1lbnQpIHsKKyAgICByZXR1cm4gZWxlbWVudC5jb250ZW50RG9jdW1lbnQgfHwgZWxlbWVudC5j
aGlsZE5vZGVzIHx8IFtdOworICB9LAorCisgIGFwcGVuZDogZnVuY3Rpb24oZWxlbWVudCwgbm9k
ZSkgeworICAgIHZhciBub2RlVHlwZSA9IGVsZW1lbnQubm9kZVR5cGU7CisgICAgaWYgKG5vZGVU
eXBlICE9PSBOT0RFX1RZUEVfRUxFTUVOVCAmJiBub2RlVHlwZSAhPT0gTk9ERV9UWVBFX0RPQ1VN
RU5UX0ZSQUdNRU5UKSByZXR1cm47CisKKyAgICBub2RlID0gbmV3IEpRTGl0ZShub2RlKTsKKwor
ICAgIGZvciAodmFyIGkgPSAwLCBpaSA9IG5vZGUubGVuZ3RoOyBpIDwgaWk7IGkrKykgeworICAg
ICAgdmFyIGNoaWxkID0gbm9kZVtpXTsKKyAgICAgIGVsZW1lbnQuYXBwZW5kQ2hpbGQoY2hpbGQp
OworICAgIH0KKyAgfSwKKworICBwcmVwZW5kOiBmdW5jdGlvbihlbGVtZW50LCBub2RlKSB7Cisg
ICAgaWYgKGVsZW1lbnQubm9kZVR5cGUgPT09IE5PREVfVFlQRV9FTEVNRU5UKSB7CisgICAgICB2
YXIgaW5kZXggPSBlbGVtZW50LmZpcnN0Q2hpbGQ7CisgICAgICBmb3JFYWNoKG5ldyBKUUxpdGUo
bm9kZSksIGZ1bmN0aW9uKGNoaWxkKSB7CisgICAgICAgIGVsZW1lbnQuaW5zZXJ0QmVmb3JlKGNo
aWxkLCBpbmRleCk7CisgICAgICB9KTsKKyAgICB9CisgIH0sCisKKyAgd3JhcDogZnVuY3Rpb24o
ZWxlbWVudCwgd3JhcE5vZGUpIHsKKyAgICB3cmFwTm9kZSA9IGpxTGl0ZSh3cmFwTm9kZSkuZXEo
MCkuY2xvbmUoKVswXTsKKyAgICB2YXIgcGFyZW50ID0gZWxlbWVudC5wYXJlbnROb2RlOworICAg
IGlmIChwYXJlbnQpIHsKKyAgICAgIHBhcmVudC5yZXBsYWNlQ2hpbGQod3JhcE5vZGUsIGVsZW1l
bnQpOworICAgIH0KKyAgICB3cmFwTm9kZS5hcHBlbmRDaGlsZChlbGVtZW50KTsKKyAgfSwKKwor
ICByZW1vdmU6IGpxTGl0ZVJlbW92ZSwKKworICBkZXRhY2g6IGZ1bmN0aW9uKGVsZW1lbnQpIHsK
KyAgICBqcUxpdGVSZW1vdmUoZWxlbWVudCwgdHJ1ZSk7CisgIH0sCisKKyAgYWZ0ZXI6IGZ1bmN0
aW9uKGVsZW1lbnQsIG5ld0VsZW1lbnQpIHsKKyAgICB2YXIgaW5kZXggPSBlbGVtZW50LCBwYXJl
bnQgPSBlbGVtZW50LnBhcmVudE5vZGU7CisgICAgbmV3RWxlbWVudCA9IG5ldyBKUUxpdGUobmV3
RWxlbWVudCk7CisKKyAgICBmb3IgKHZhciBpID0gMCwgaWkgPSBuZXdFbGVtZW50Lmxlbmd0aDsg
aSA8IGlpOyBpKyspIHsKKyAgICAgIHZhciBub2RlID0gbmV3RWxlbWVudFtpXTsKKyAgICAgIHBh
cmVudC5pbnNlcnRCZWZvcmUobm9kZSwgaW5kZXgubmV4dFNpYmxpbmcpOworICAgICAgaW5kZXgg
PSBub2RlOworICAgIH0KKyAgfSwKKworICBhZGRDbGFzczoganFMaXRlQWRkQ2xhc3MsCisgIHJl
bW92ZUNsYXNzOiBqcUxpdGVSZW1vdmVDbGFzcywKKworICB0b2dnbGVDbGFzczogZnVuY3Rpb24o
ZWxlbWVudCwgc2VsZWN0b3IsIGNvbmRpdGlvbikgeworICAgIGlmIChzZWxlY3RvcikgeworICAg
ICAgZm9yRWFjaChzZWxlY3Rvci5zcGxpdCgnICcpLCBmdW5jdGlvbihjbGFzc05hbWUpIHsKKyAg
ICAgICAgdmFyIGNsYXNzQ29uZGl0aW9uID0gY29uZGl0aW9uOworICAgICAgICBpZiAoaXNVbmRl
ZmluZWQoY2xhc3NDb25kaXRpb24pKSB7CisgICAgICAgICAgY2xhc3NDb25kaXRpb24gPSAhanFM
aXRlSGFzQ2xhc3MoZWxlbWVudCwgY2xhc3NOYW1lKTsKKyAgICAgICAgfQorICAgICAgICAoY2xh
c3NDb25kaXRpb24gPyBqcUxpdGVBZGRDbGFzcyA6IGpxTGl0ZVJlbW92ZUNsYXNzKShlbGVtZW50
LCBjbGFzc05hbWUpOworICAgICAgfSk7CisgICAgfQorICB9LAorCisgIHBhcmVudDogZnVuY3Rp
b24oZWxlbWVudCkgeworICAgIHZhciBwYXJlbnQgPSBlbGVtZW50LnBhcmVudE5vZGU7CisgICAg
cmV0dXJuIHBhcmVudCAmJiBwYXJlbnQubm9kZVR5cGUgIT09IE5PREVfVFlQRV9ET0NVTUVOVF9G
UkFHTUVOVCA/IHBhcmVudCA6IG51bGw7CisgIH0sCisKKyAgbmV4dDogZnVuY3Rpb24oZWxlbWVu
dCkgeworICAgIHJldHVybiBlbGVtZW50Lm5leHRFbGVtZW50U2libGluZzsKKyAgfSwKKworICBm
aW5kOiBmdW5jdGlvbihlbGVtZW50LCBzZWxlY3RvcikgeworICAgIGlmIChlbGVtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKSB7CisgICAgICByZXR1cm4gZWxlbWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZShzZWxlY3Rvcik7CisgICAgfSBlbHNlIHsKKyAgICAgIHJldHVybiBbXTsKKyAgICB9Cisg
IH0sCisKKyAgY2xvbmU6IGpxTGl0ZUNsb25lLAorCisgIHRyaWdnZXJIYW5kbGVyOiBmdW5jdGlv
bihlbGVtZW50LCBldmVudCwgZXh0cmFQYXJhbWV0ZXJzKSB7CisKKyAgICB2YXIgZHVtbXlFdmVu
dCwgZXZlbnRGbnNDb3B5LCBoYW5kbGVyQXJnczsKKyAgICB2YXIgZXZlbnROYW1lID0gZXZlbnQu
dHlwZSB8fCBldmVudDsKKyAgICB2YXIgZXhwYW5kb1N0b3JlID0ganFMaXRlRXhwYW5kb1N0b3Jl
KGVsZW1lbnQpOworICAgIHZhciBldmVudHMgPSBleHBhbmRvU3RvcmUgJiYgZXhwYW5kb1N0b3Jl
LmV2ZW50czsKKyAgICB2YXIgZXZlbnRGbnMgPSBldmVudHMgJiYgZXZlbnRzW2V2ZW50TmFtZV07
CisKKyAgICBpZiAoZXZlbnRGbnMpIHsKKyAgICAgIC8vIENyZWF0ZSBhIGR1bW15IGV2ZW50IHRv
IHBhc3MgdG8gdGhlIGhhbmRsZXJzCisgICAgICBkdW1teUV2ZW50ID0geworICAgICAgICBwcmV2
ZW50RGVmYXVsdDogZnVuY3Rpb24oKSB7IHRoaXMuZGVmYXVsdFByZXZlbnRlZCA9IHRydWU7IH0s
CisgICAgICAgIGlzRGVmYXVsdFByZXZlbnRlZDogZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzLmRl
ZmF1bHRQcmV2ZW50ZWQgPT09IHRydWU7IH0sCisgICAgICAgIHN0b3BJbW1lZGlhdGVQcm9wYWdh
dGlvbjogZnVuY3Rpb24oKSB7IHRoaXMuaW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkID0gdHJ1
ZTsgfSwKKyAgICAgICAgaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ6IGZ1bmN0aW9uKCkg
eyByZXR1cm4gdGhpcy5pbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQgPT09IHRydWU7IH0sCisg
ICAgICAgIHN0b3BQcm9wYWdhdGlvbjogbm9vcCwKKyAgICAgICAgdHlwZTogZXZlbnROYW1lLAor
ICAgICAgICB0YXJnZXQ6IGVsZW1lbnQKKyAgICAgIH07CisKKyAgICAgIC8vIElmIGEgY3VzdG9t
IGV2ZW50IHdhcyBwcm92aWRlZCB0aGVuIGV4dGVuZCBvdXIgZHVtbXkgZXZlbnQgd2l0aCBpdAor
ICAgICAgaWYgKGV2ZW50LnR5cGUpIHsKKyAgICAgICAgZHVtbXlFdmVudCA9IGV4dGVuZChkdW1t
eUV2ZW50LCBldmVudCk7CisgICAgICB9CisKKyAgICAgIC8vIENvcHkgZXZlbnQgaGFuZGxlcnMg
aW4gY2FzZSBldmVudCBoYW5kbGVycyBhcnJheSBpcyBtb2RpZmllZCBkdXJpbmcgZXhlY3V0aW9u
LgorICAgICAgZXZlbnRGbnNDb3B5ID0gc2hhbGxvd0NvcHkoZXZlbnRGbnMpOworICAgICAgaGFu
ZGxlckFyZ3MgPSBleHRyYVBhcmFtZXRlcnMgPyBbZHVtbXlFdmVudF0uY29uY2F0KGV4dHJhUGFy
YW1ldGVycykgOiBbZHVtbXlFdmVudF07CisKKyAgICAgIGZvckVhY2goZXZlbnRGbnNDb3B5LCBm
dW5jdGlvbihmbikgeworICAgICAgICBpZiAoIWR1bW15RXZlbnQuaXNJbW1lZGlhdGVQcm9wYWdh
dGlvblN0b3BwZWQoKSkgeworICAgICAgICAgIGZuLmFwcGx5KGVsZW1lbnQsIGhhbmRsZXJBcmdz
KTsKKyAgICAgICAgfQorICAgICAgfSk7CisgICAgfQorICB9Cit9LCBmdW5jdGlvbihmbiwgbmFt
ZSkgeworICAvKioKKyAgICogY2hhaW5pbmcgZnVuY3Rpb25zCisgICAqLworICBKUUxpdGUucHJv
dG90eXBlW25hbWVdID0gZnVuY3Rpb24oYXJnMSwgYXJnMiwgYXJnMykgeworICAgIHZhciB2YWx1
ZTsKKworICAgIGZvciAodmFyIGkgPSAwLCBpaSA9IHRoaXMubGVuZ3RoOyBpIDwgaWk7IGkrKykg
eworICAgICAgaWYgKGlzVW5kZWZpbmVkKHZhbHVlKSkgeworICAgICAgICB2YWx1ZSA9IGZuKHRo
aXNbaV0sIGFyZzEsIGFyZzIsIGFyZzMpOworICAgICAgICBpZiAoaXNEZWZpbmVkKHZhbHVlKSkg
eworICAgICAgICAgIC8vIGFueSBmdW5jdGlvbiB3aGljaCByZXR1cm5zIGEgdmFsdWUgbmVlZHMg
dG8gYmUgd3JhcHBlZAorICAgICAgICAgIHZhbHVlID0ganFMaXRlKHZhbHVlKTsKKyAgICAgICAg
fQorICAgICAgfSBlbHNlIHsKKyAgICAgICAganFMaXRlQWRkTm9kZXModmFsdWUsIGZuKHRoaXNb
aV0sIGFyZzEsIGFyZzIsIGFyZzMpKTsKKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGlzRGVm
aW5lZCh2YWx1ZSkgPyB2YWx1ZSA6IHRoaXM7CisgIH07CisKKyAgLy8gYmluZCBsZWdhY3kgYmlu
ZC91bmJpbmQgdG8gb24vb2ZmCisgIEpRTGl0ZS5wcm90b3R5cGUuYmluZCA9IEpRTGl0ZS5wcm90
b3R5cGUub247CisgIEpRTGl0ZS5wcm90b3R5cGUudW5iaW5kID0gSlFMaXRlLnByb3RvdHlwZS5v
ZmY7Cit9KTsKKworCisvLyBQcm92aWRlciBmb3IgcHJpdmF0ZSAkJGpxTGl0ZSBzZXJ2aWNlCitm
dW5jdGlvbiAkJGpxTGl0ZVByb3ZpZGVyKCkgeworICB0aGlzLiRnZXQgPSBmdW5jdGlvbiAkJGpx
TGl0ZSgpIHsKKyAgICByZXR1cm4gZXh0ZW5kKEpRTGl0ZSwgeworICAgICAgaGFzQ2xhc3M6IGZ1
bmN0aW9uKG5vZGUsIGNsYXNzZXMpIHsKKyAgICAgICAgaWYgKG5vZGUuYXR0cikgbm9kZSA9IG5v
ZGVbMF07CisgICAgICAgIHJldHVybiBqcUxpdGVIYXNDbGFzcyhub2RlLCBjbGFzc2VzKTsKKyAg
ICAgIH0sCisgICAgICBhZGRDbGFzczogZnVuY3Rpb24obm9kZSwgY2xhc3NlcykgeworICAgICAg
ICBpZiAobm9kZS5hdHRyKSBub2RlID0gbm9kZVswXTsKKyAgICAgICAgcmV0dXJuIGpxTGl0ZUFk
ZENsYXNzKG5vZGUsIGNsYXNzZXMpOworICAgICAgfSwKKyAgICAgIHJlbW92ZUNsYXNzOiBmdW5j
dGlvbihub2RlLCBjbGFzc2VzKSB7CisgICAgICAgIGlmIChub2RlLmF0dHIpIG5vZGUgPSBub2Rl
WzBdOworICAgICAgICByZXR1cm4ganFMaXRlUmVtb3ZlQ2xhc3Mobm9kZSwgY2xhc3Nlcyk7Cisg
ICAgICB9CisgICAgfSk7CisgIH07Cit9CisKKy8qKgorICogQ29tcHV0ZXMgYSBoYXNoIG9mIGFu
ICdvYmonLgorICogSGFzaCBvZiBhOgorICogIHN0cmluZyBpcyBzdHJpbmcKKyAqICBudW1iZXIg
aXMgbnVtYmVyIGFzIHN0cmluZworICogIG9iamVjdCBpcyBlaXRoZXIgcmVzdWx0IG9mIGNhbGxp
bmcgJCRoYXNoS2V5IGZ1bmN0aW9uIG9uIHRoZSBvYmplY3Qgb3IgdW5pcXVlbHkgZ2VuZXJhdGVk
IGlkLAorICogICAgICAgICB0aGF0IGlzIGFsc28gYXNzaWduZWQgdG8gdGhlICQkaGFzaEtleSBw
cm9wZXJ0eSBvZiB0aGUgb2JqZWN0LgorICoKKyAqIEBwYXJhbSBvYmoKKyAqIEByZXR1cm5zIHtz
dHJpbmd9IGhhc2ggc3RyaW5nIHN1Y2ggdGhhdCB0aGUgc2FtZSBpbnB1dCB3aWxsIGhhdmUgdGhl
IHNhbWUgaGFzaCBzdHJpbmcuCisgKiAgICAgICAgIFRoZSByZXN1bHRpbmcgc3RyaW5nIGtleSBp
cyBpbiAndHlwZTpoYXNoS2V5JyBmb3JtYXQuCisgKi8KK2Z1bmN0aW9uIGhhc2hLZXkob2JqLCBu
ZXh0VWlkRm4pIHsKKyAgdmFyIGtleSA9IG9iaiAmJiBvYmouJCRoYXNoS2V5OworCisgIGlmIChr
ZXkpIHsKKyAgICBpZiAodHlwZW9mIGtleSA9PT0gJ2Z1bmN0aW9uJykgeworICAgICAga2V5ID0g
b2JqLiQkaGFzaEtleSgpOworICAgIH0KKyAgICByZXR1cm4ga2V5OworICB9CisKKyAgdmFyIG9i
alR5cGUgPSB0eXBlb2Ygb2JqOworICBpZiAob2JqVHlwZSA9PSAnZnVuY3Rpb24nIHx8IChvYmpU
eXBlID09ICdvYmplY3QnICYmIG9iaiAhPT0gbnVsbCkpIHsKKyAgICBrZXkgPSBvYmouJCRoYXNo
S2V5ID0gb2JqVHlwZSArICc6JyArIChuZXh0VWlkRm4gfHwgbmV4dFVpZCkoKTsKKyAgfSBlbHNl
IHsKKyAgICBrZXkgPSBvYmpUeXBlICsgJzonICsgb2JqOworICB9CisKKyAgcmV0dXJuIGtleTsK
K30KKworLyoqCisgKiBIYXNoTWFwIHdoaWNoIGNhbiB1c2Ugb2JqZWN0cyBhcyBrZXlzCisgKi8K
K2Z1bmN0aW9uIEhhc2hNYXAoYXJyYXksIGlzb2xhdGVkVWlkKSB7CisgIGlmIChpc29sYXRlZFVp
ZCkgeworICAgIHZhciB1aWQgPSAwOworICAgIHRoaXMubmV4dFVpZCA9IGZ1bmN0aW9uKCkgewor
ICAgICAgcmV0dXJuICsrdWlkOworICAgIH07CisgIH0KKyAgZm9yRWFjaChhcnJheSwgdGhpcy5w
dXQsIHRoaXMpOworfQorSGFzaE1hcC5wcm90b3R5cGUgPSB7CisgIC8qKgorICAgKiBTdG9yZSBr
ZXkgdmFsdWUgcGFpcgorICAgKiBAcGFyYW0ga2V5IGtleSB0byBzdG9yZSBjYW4gYmUgYW55IHR5
cGUKKyAgICogQHBhcmFtIHZhbHVlIHZhbHVlIHRvIHN0b3JlIGNhbiBiZSBhbnkgdHlwZQorICAg
Ki8KKyAgcHV0OiBmdW5jdGlvbihrZXksIHZhbHVlKSB7CisgICAgdGhpc1toYXNoS2V5KGtleSwg
dGhpcy5uZXh0VWlkKV0gPSB2YWx1ZTsKKyAgfSwKKworICAvKioKKyAgICogQHBhcmFtIGtleQor
ICAgKiBAcmV0dXJucyB7T2JqZWN0fSB0aGUgdmFsdWUgZm9yIHRoZSBrZXkKKyAgICovCisgIGdl
dDogZnVuY3Rpb24oa2V5KSB7CisgICAgcmV0dXJuIHRoaXNbaGFzaEtleShrZXksIHRoaXMubmV4
dFVpZCldOworICB9LAorCisgIC8qKgorICAgKiBSZW1vdmUgdGhlIGtleS92YWx1ZSBwYWlyCisg
ICAqIEBwYXJhbSBrZXkKKyAgICovCisgIHJlbW92ZTogZnVuY3Rpb24oa2V5KSB7CisgICAgdmFy
IHZhbHVlID0gdGhpc1trZXkgPSBoYXNoS2V5KGtleSwgdGhpcy5uZXh0VWlkKV07CisgICAgZGVs
ZXRlIHRoaXNba2V5XTsKKyAgICByZXR1cm4gdmFsdWU7CisgIH0KK307CisKK3ZhciAkJEhhc2hN
YXBQcm92aWRlciA9IFtmdW5jdGlvbigpIHsKKyAgdGhpcy4kZ2V0ID0gW2Z1bmN0aW9uKCkgewor
ICAgIHJldHVybiBIYXNoTWFwOworICB9XTsKK31dOworCisvKioKKyAqIEBuZ2RvYyBmdW5jdGlv
bgorICogQG1vZHVsZSBuZworICogQG5hbWUgYW5ndWxhci5pbmplY3RvcgorICogQGtpbmQgZnVu
Y3Rpb24KKyAqCisgKiBAZGVzY3JpcHRpb24KKyAqIENyZWF0ZXMgYW4gaW5qZWN0b3Igb2JqZWN0
IHRoYXQgY2FuIGJlIHVzZWQgZm9yIHJldHJpZXZpbmcgc2VydmljZXMgYXMgd2VsbCBhcyBmb3IK
KyAqIGRlcGVuZGVuY3kgaW5qZWN0aW9uIChzZWUge0BsaW5rIGd1aWRlL2RpIGRlcGVuZGVuY3kg
aW5qZWN0aW9ufSkuCisgKgorICogQHBhcmFtIHtBcnJheS48c3RyaW5nfEZ1bmN0aW9uPn0gbW9k
dWxlcyBBIGxpc3Qgb2YgbW9kdWxlIGZ1bmN0aW9ucyBvciB0aGVpciBhbGlhc2VzLiBTZWUKKyAq
ICAgICB7QGxpbmsgYW5ndWxhci5tb2R1bGV9LiBUaGUgYG5nYCBtb2R1bGUgbXVzdCBiZSBleHBs
aWNpdGx5IGFkZGVkLgorICogQHBhcmFtIHtib29sZWFuPX0gW3N0cmljdERpPWZhbHNlXSBXaGV0
aGVyIHRoZSBpbmplY3RvciBzaG91bGQgYmUgaW4gc3RyaWN0IG1vZGUsIHdoaWNoCisgKiAgICAg
ZGlzYWxsb3dzIGFyZ3VtZW50IG5hbWUgYW5ub3RhdGlvbiBpbmZlcmVuY2UuCisgKiBAcmV0dXJu
cyB7aW5qZWN0b3J9IEluamVjdG9yIG9iamVjdC4gU2VlIHtAbGluayBhdXRvLiRpbmplY3RvciAk
aW5qZWN0b3J9LgorICoKKyAqIEBleGFtcGxlCisgKiBUeXBpY2FsIHVzYWdlCisgKiBgYGBqcwor
ICogICAvLyBjcmVhdGUgYW4gaW5qZWN0b3IKKyAqICAgdmFyICRpbmplY3RvciA9IGFuZ3VsYXIu
aW5qZWN0b3IoWyduZyddKTsKKyAqCisgKiAgIC8vIHVzZSB0aGUgaW5qZWN0b3IgdG8ga2ljayBv
ZmYgeW91ciBhcHBsaWNhdGlvbgorICogICAvLyB1c2UgdGhlIHR5cGUgaW5mZXJlbmNlIHRvIGF1
dG8gaW5qZWN0IGFyZ3VtZW50cywgb3IgdXNlIGltcGxpY2l0IGluamVjdGlvbgorICogICAkaW5q
ZWN0b3IuaW52b2tlKGZ1bmN0aW9uKCRyb290U2NvcGUsICRjb21waWxlLCAkZG9jdW1lbnQpIHsK
KyAqICAgICAkY29tcGlsZSgkZG9jdW1lbnQpKCRyb290U2NvcGUpOworICogICAgICRyb290U2Nv
cGUuJGRpZ2VzdCgpOworICogICB9KTsKKyAqIGBgYAorICoKKyAqIFNvbWV0aW1lcyB5b3Ugd2Fu
dCB0byBnZXQgYWNjZXNzIHRvIHRoZSBpbmplY3RvciBvZiBhIGN1cnJlbnRseSBydW5uaW5nIEFu
Z3VsYXIgYXBwCisgKiBmcm9tIG91dHNpZGUgQW5ndWxhci4gUGVyaGFwcywgeW91IHdhbnQgdG8g
aW5qZWN0IGFuZCBjb21waWxlIHNvbWUgbWFya3VwIGFmdGVyIHRoZQorICogYXBwbGljYXRpb24g
aGFzIGJlZW4gYm9vdHN0cmFwcGVkLiBZb3UgY2FuIGRvIHRoaXMgdXNpbmcgdGhlIGV4dHJhIGBp
bmplY3RvcigpYCBhZGRlZAorICogdG8gSlF1ZXJ5L2pxTGl0ZSBlbGVtZW50cy4gU2VlIHtAbGlu
ayBhbmd1bGFyLmVsZW1lbnR9LgorICoKKyAqICpUaGlzIGlzIGZhaXJseSByYXJlIGJ1dCBjb3Vs
ZCBiZSB0aGUgY2FzZSBpZiBhIHRoaXJkIHBhcnR5IGxpYnJhcnkgaXMgaW5qZWN0aW5nIHRoZQor
ICogbWFya3VwLioKKyAqCisgKiBJbiB0aGUgZm9sbG93aW5nIGV4YW1wbGUgYSBuZXcgYmxvY2sg
b2YgSFRNTCBjb250YWluaW5nIGEgYG5nLWNvbnRyb2xsZXJgCisgKiBkaXJlY3RpdmUgaXMgYWRk
ZWQgdG8gdGhlIGVuZCBvZiB0aGUgZG9jdW1lbnQgYm9keSBieSBKUXVlcnkuIFdlIHRoZW4gY29t
cGlsZSBhbmQgbGluaworICogaXQgaW50byB0aGUgY3VycmVudCBBbmd1bGFySlMgc2NvcGUuCisg
KgorICogYGBganMKKyAqIHZhciAkZGl2ID0gJCgnPGRpdiBuZy1jb250cm9sbGVyPSJNeUN0cmwi
Pnt7Y29udGVudC5sYWJlbH19PC9kaXY+Jyk7CisgKiAkKGRvY3VtZW50LmJvZHkpLmFwcGVuZCgk
ZGl2KTsKKyAqCisgKiBhbmd1bGFyLmVsZW1lbnQoZG9jdW1lbnQpLmluamVjdG9yKCkuaW52b2tl
KGZ1bmN0aW9uKCRjb21waWxlKSB7CisgKiAgIHZhciBzY29wZSA9IGFuZ3VsYXIuZWxlbWVudCgk
ZGl2KS5zY29wZSgpOworICogICAkY29tcGlsZSgkZGl2KShzY29wZSk7CisgKiB9KTsKKyAqIGBg
YAorICovCisKKworLyoqCisgKiBAbmdkb2MgbW9kdWxlCisgKiBAbmFtZSBhdXRvCisgKiBAZGVz
Y3JpcHRpb24KKyAqCisgKiBJbXBsaWNpdCBtb2R1bGUgd2hpY2ggZ2V0cyBhdXRvbWF0aWNhbGx5
IGFkZGVkIHRvIGVhY2gge0BsaW5rIGF1dG8uJGluamVjdG9yICRpbmplY3Rvcn0uCisgKi8KKwor
dmFyIEZOX0FSR1MgPSAvXmZ1bmN0aW9uXHMqW15cKF0qXChccyooW15cKV0qKVwpL207Cit2YXIg
Rk5fQVJHX1NQTElUID0gLywvOwordmFyIEZOX0FSRyA9IC9eXHMqKF8/KShcUys/KVwxXHMqJC87
Cit2YXIgU1RSSVBfQ09NTUVOVFMgPSAvKChcL1wvLiokKXwoXC9cKltcc1xTXSo/XCpcLykpL21n
OwordmFyICRpbmplY3Rvck1pbkVyciA9IG1pbkVycignJGluamVjdG9yJyk7CisKK2Z1bmN0aW9u
IGFub25GbihmbikgeworICAvLyBGb3IgYW5vbnltb3VzIGZ1bmN0aW9ucywgc2hvd2luZyBhdCB0
aGUgdmVyeSBsZWFzdCB0aGUgZnVuY3Rpb24gc2lnbmF0dXJlIGNhbiBoZWxwIGluCisgIC8vIGRl
YnVnZ2luZy4KKyAgdmFyIGZuVGV4dCA9IGZuLnRvU3RyaW5nKCkucmVwbGFjZShTVFJJUF9DT01N
RU5UUywgJycpLAorICAgICAgYXJncyA9IGZuVGV4dC5tYXRjaChGTl9BUkdTKTsKKyAgaWYgKGFy
Z3MpIHsKKyAgICByZXR1cm4gJ2Z1bmN0aW9uKCcgKyAoYXJnc1sxXSB8fCAnJykucmVwbGFjZSgv
W1xzXHJcbl0rLywgJyAnKSArICcpJzsKKyAgfQorICByZXR1cm4gJ2ZuJzsKK30KKworZnVuY3Rp
b24gYW5ub3RhdGUoZm4sIHN0cmljdERpLCBuYW1lKSB7CisgIHZhciAkaW5qZWN0LAorICAgICAg
Zm5UZXh0LAorICAgICAgYXJnRGVjbCwKKyAgICAgIGxhc3Q7CisKKyAgaWYgKHR5cGVvZiBmbiA9
PT0gJ2Z1bmN0aW9uJykgeworICAgIGlmICghKCRpbmplY3QgPSBmbi4kaW5qZWN0KSkgeworICAg
ICAgJGluamVjdCA9IFtdOworICAgICAgaWYgKGZuLmxlbmd0aCkgeworICAgICAgICBpZiAoc3Ry
aWN0RGkpIHsKKyAgICAgICAgICBpZiAoIWlzU3RyaW5nKG5hbWUpIHx8ICFuYW1lKSB7CisgICAg
ICAgICAgICBuYW1lID0gZm4ubmFtZSB8fCBhbm9uRm4oZm4pOworICAgICAgICAgIH0KKyAgICAg
ICAgICB0aHJvdyAkaW5qZWN0b3JNaW5FcnIoJ3N0cmljdGRpJywKKyAgICAgICAgICAgICd7MH0g
aXMgbm90IHVzaW5nIGV4cGxpY2l0IGFubm90YXRpb24gYW5kIGNhbm5vdCBiZSBpbnZva2VkIGlu
IHN0cmljdCBtb2RlJywgbmFtZSk7CisgICAgICAgIH0KKyAgICAgICAgZm5UZXh0ID0gZm4udG9T
dHJpbmcoKS5yZXBsYWNlKFNUUklQX0NPTU1FTlRTLCAnJyk7CisgICAgICAgIGFyZ0RlY2wgPSBm
blRleHQubWF0Y2goRk5fQVJHUyk7CisgICAgICAgIGZvckVhY2goYXJnRGVjbFsxXS5zcGxpdChG
Tl9BUkdfU1BMSVQpLCBmdW5jdGlvbihhcmcpIHsKKyAgICAgICAgICBhcmcucmVwbGFjZShGTl9B
UkcsIGZ1bmN0aW9uKGFsbCwgdW5kZXJzY29yZSwgbmFtZSkgeworICAgICAgICAgICAgJGluamVj
dC5wdXNoKG5hbWUpOworICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICAgIH0KKyAgICAg
IGZuLiRpbmplY3QgPSAkaW5qZWN0OworICAgIH0KKyAgfSBlbHNlIGlmIChpc0FycmF5KGZuKSkg
eworICAgIGxhc3QgPSBmbi5sZW5ndGggLSAxOworICAgIGFzc2VydEFyZ0ZuKGZuW2xhc3RdLCAn
Zm4nKTsKKyAgICAkaW5qZWN0ID0gZm4uc2xpY2UoMCwgbGFzdCk7CisgIH0gZWxzZSB7CisgICAg
YXNzZXJ0QXJnRm4oZm4sICdmbicsIHRydWUpOworICB9CisgIHJldHVybiAkaW5qZWN0OworfQor
CisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworLyoqCisgKiBAbmdk
b2Mgc2VydmljZQorICogQG5hbWUgJGluamVjdG9yCisgKgorICogQGRlc2NyaXB0aW9uCisgKgor
ICogYCRpbmplY3RvcmAgaXMgdXNlZCB0byByZXRyaWV2ZSBvYmplY3QgaW5zdGFuY2VzIGFzIGRl
ZmluZWQgYnkKKyAqIHtAbGluayBhdXRvLiRwcm92aWRlIHByb3ZpZGVyfSwgaW5zdGFudGlhdGUg
dHlwZXMsIGludm9rZSBtZXRob2RzLAorICogYW5kIGxvYWQgbW9kdWxlcy4KKyAqCisgKiBUaGUg
Zm9sbG93aW5nIGFsd2F5cyBob2xkcyB0cnVlOgorICoKKyAqIGBgYGpzCisgKiAgIHZhciAkaW5q
ZWN0b3IgPSBhbmd1bGFyLmluamVjdG9yKCk7CisgKiAgIGV4cGVjdCgkaW5qZWN0b3IuZ2V0KCck
aW5qZWN0b3InKSkudG9CZSgkaW5qZWN0b3IpOworICogICBleHBlY3QoJGluamVjdG9yLmludm9r
ZShmdW5jdGlvbigkaW5qZWN0b3IpIHsKKyAqICAgICByZXR1cm4gJGluamVjdG9yOworICogICB9
KSkudG9CZSgkaW5qZWN0b3IpOworICogYGBgCisgKgorICogIyBJbmplY3Rpb24gRnVuY3Rpb24g
QW5ub3RhdGlvbgorICoKKyAqIEphdmFTY3JpcHQgZG9lcyBub3QgaGF2ZSBhbm5vdGF0aW9ucywg
YW5kIGFubm90YXRpb25zIGFyZSBuZWVkZWQgZm9yIGRlcGVuZGVuY3kgaW5qZWN0aW9uLiBUaGUK
KyAqIGZvbGxvd2luZyBhcmUgYWxsIHZhbGlkIHdheXMgb2YgYW5ub3RhdGluZyBmdW5jdGlvbiB3
aXRoIGluamVjdGlvbiBhcmd1bWVudHMgYW5kIGFyZSBlcXVpdmFsZW50LgorICoKKyAqIGBgYGpz
CisgKiAgIC8vIGluZmVycmVkIChvbmx5IHdvcmtzIGlmIGNvZGUgbm90IG1pbmlmaWVkL29iZnVz
Y2F0ZWQpCisgKiAgICRpbmplY3Rvci5pbnZva2UoZnVuY3Rpb24oc2VydmljZUEpe30pOworICoK
KyAqICAgLy8gYW5ub3RhdGVkCisgKiAgIGZ1bmN0aW9uIGV4cGxpY2l0KHNlcnZpY2VBKSB7fTsK
KyAqICAgZXhwbGljaXQuJGluamVjdCA9IFsnc2VydmljZUEnXTsKKyAqICAgJGluamVjdG9yLmlu
dm9rZShleHBsaWNpdCk7CisgKgorICogICAvLyBpbmxpbmUKKyAqICAgJGluamVjdG9yLmludm9r
ZShbJ3NlcnZpY2VBJywgZnVuY3Rpb24oc2VydmljZUEpe31dKTsKKyAqIGBgYAorICoKKyAqICMj
IEluZmVyZW5jZQorICoKKyAqIEluIEphdmFTY3JpcHQgY2FsbGluZyBgdG9TdHJpbmcoKWAgb24g
YSBmdW5jdGlvbiByZXR1cm5zIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uLiBUaGUgZGVmaW5pdGlv
bgorICogY2FuIHRoZW4gYmUgcGFyc2VkIGFuZCB0aGUgZnVuY3Rpb24gYXJndW1lbnRzIGNhbiBi
ZSBleHRyYWN0ZWQuIFRoaXMgbWV0aG9kIG9mIGRpc2NvdmVyaW5nCisgKiBhbm5vdGF0aW9ucyBp
cyBkaXNhbGxvd2VkIHdoZW4gdGhlIGluamVjdG9yIGlzIGluIHN0cmljdCBtb2RlLgorICogKk5P
VEU6KiBUaGlzIGRvZXMgbm90IHdvcmsgd2l0aCBtaW5pZmljYXRpb24sIGFuZCBvYmZ1c2NhdGlv
biB0b29scyBzaW5jZSB0aGVzZSB0b29scyBjaGFuZ2UgdGhlCisgKiBhcmd1bWVudCBuYW1lcy4K
KyAqCisgKiAjIyBgJGluamVjdGAgQW5ub3RhdGlvbgorICogQnkgYWRkaW5nIGFuIGAkaW5qZWN0
YCBwcm9wZXJ0eSBvbnRvIGEgZnVuY3Rpb24gdGhlIGluamVjdGlvbiBwYXJhbWV0ZXJzIGNhbiBi
ZSBzcGVjaWZpZWQuCisgKgorICogIyMgSW5saW5lCisgKiBBcyBhbiBhcnJheSBvZiBpbmplY3Rp
b24gbmFtZXMsIHdoZXJlIHRoZSBsYXN0IGl0ZW0gaW4gdGhlIGFycmF5IGlzIHRoZSBmdW5jdGlv
biB0byBjYWxsLgorICovCisKKy8qKgorICogQG5nZG9jIG1ldGhvZAorICogQG5hbWUgJGluamVj
dG9yI2dldAorICoKKyAqIEBkZXNjcmlwdGlvbgorICogUmV0dXJuIGFuIGluc3RhbmNlIG9mIHRo
ZSBzZXJ2aWNlLgorICoKKyAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBp
bnN0YW5jZSB0byByZXRyaWV2ZS4KKyAqIEBwYXJhbSB7c3RyaW5nPX0gY2FsbGVyIEFuIG9wdGlv
bmFsIHN0cmluZyB0byBwcm92aWRlIHRoZSBvcmlnaW4gb2YgdGhlIGZ1bmN0aW9uIGNhbGwgZm9y
IGVycm9yIG1lc3NhZ2VzLgorICogQHJldHVybiB7Kn0gVGhlIGluc3RhbmNlLgorICovCisKKy8q
KgorICogQG5nZG9jIG1ldGhvZAorICogQG5hbWUgJGluamVjdG9yI2ludm9rZQorICoKKyAqIEBk
ZXNjcmlwdGlvbgorICogSW52b2tlIHRoZSBtZXRob2QgYW5kIHN1cHBseSB0aGUgbWV0aG9kIGFy
Z3VtZW50cyBmcm9tIHRoZSBgJGluamVjdG9yYC4KKyAqCisgKiBAcGFyYW0ge0Z1bmN0aW9ufEFy
cmF5LjxzdHJpbmd8RnVuY3Rpb24+fSBmbiBUaGUgaW5qZWN0YWJsZSBmdW5jdGlvbiB0byBpbnZv
a2UuIEZ1bmN0aW9uIHBhcmFtZXRlcnMgYXJlCisgKiAgIGluamVjdGVkIGFjY29yZGluZyB0byB0
aGUge0BsaW5rIGd1aWRlL2RpICRpbmplY3QgQW5ub3RhdGlvbn0gcnVsZXMuCisgKiBAcGFyYW0g
e09iamVjdD19IHNlbGYgVGhlIGB0aGlzYCBmb3IgdGhlIGludm9rZWQgbWV0aG9kLgorICogQHBh
cmFtIHtPYmplY3Q9fSBsb2NhbHMgT3B0aW9uYWwgb2JqZWN0LiBJZiBwcmVzZXQgdGhlbiBhbnkg
YXJndW1lbnQgbmFtZXMgYXJlIHJlYWQgZnJvbSB0aGlzCisgKiAgICAgICAgICAgICAgICAgICAg
ICAgICBvYmplY3QgZmlyc3QsIGJlZm9yZSB0aGUgYCRpbmplY3RvcmAgaXMgY29uc3VsdGVkLgor
ICogQHJldHVybnMgeyp9IHRoZSB2YWx1ZSByZXR1cm5lZCBieSB0aGUgaW52b2tlZCBgZm5gIGZ1
bmN0aW9uLgorICovCisKKy8qKgorICogQG5nZG9jIG1ldGhvZAorICogQG5hbWUgJGluamVjdG9y
I2hhcworICoKKyAqIEBkZXNjcmlwdGlvbgorICogQWxsb3dzIHRoZSB1c2VyIHRvIHF1ZXJ5IGlm
IHRoZSBwYXJ0aWN1bGFyIHNlcnZpY2UgZXhpc3RzLgorICoKKyAqIEBwYXJhbSB7c3RyaW5nfSBu
YW1lIE5hbWUgb2YgdGhlIHNlcnZpY2UgdG8gcXVlcnkuCisgKiBAcmV0dXJucyB7Ym9vbGVhbn0g
YHRydWVgIGlmIGluamVjdG9yIGhhcyBnaXZlbiBzZXJ2aWNlLgorICovCisKKy8qKgorICogQG5n
ZG9jIG1ldGhvZAorICogQG5hbWUgJGluamVjdG9yI2luc3RhbnRpYXRlCisgKiBAZGVzY3JpcHRp
b24KKyAqIENyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiBKUyB0eXBlLiBUaGUgbWV0aG9kIHRha2Vz
IGEgY29uc3RydWN0b3IgZnVuY3Rpb24sIGludm9rZXMgdGhlIG5ldworICogb3BlcmF0b3IsIGFu
ZCBzdXBwbGllcyBhbGwgb2YgdGhlIGFyZ3VtZW50cyB0byB0aGUgY29uc3RydWN0b3IgZnVuY3Rp
b24gYXMgc3BlY2lmaWVkIGJ5IHRoZQorICogY29uc3RydWN0b3IgYW5ub3RhdGlvbi4KKyAqCisg
KiBAcGFyYW0ge0Z1bmN0aW9ufSBUeXBlIEFubm90YXRlZCBjb25zdHJ1Y3RvciBmdW5jdGlvbi4K
KyAqIEBwYXJhbSB7T2JqZWN0PX0gbG9jYWxzIE9wdGlvbmFsIG9iamVjdC4gSWYgcHJlc2V0IHRo
ZW4gYW55IGFyZ3VtZW50IG5hbWVzIGFyZSByZWFkIGZyb20gdGhpcworICogb2JqZWN0IGZpcnN0
LCBiZWZvcmUgdGhlIGAkaW5qZWN0b3JgIGlzIGNvbnN1bHRlZC4KKyAqIEByZXR1cm5zIHtPYmpl
Y3R9IG5ldyBpbnN0YW5jZSBvZiBgVHlwZWAuCisgKi8KKworLyoqCisgKiBAbmdkb2MgbWV0aG9k
CisgKiBAbmFtZSAkaW5qZWN0b3IjYW5ub3RhdGUKKyAqCisgKiBAZGVzY3JpcHRpb24KKyAqIFJl
dHVybnMgYW4gYXJyYXkgb2Ygc2VydmljZSBuYW1lcyB3aGljaCB0aGUgZnVuY3Rpb24gaXMgcmVx
dWVzdGluZyBmb3IgaW5qZWN0aW9uLiBUaGlzIEFQSSBpcworICogdXNlZCBieSB0aGUgaW5qZWN0
b3IgdG8gZGV0ZXJtaW5lIHdoaWNoIHNlcnZpY2VzIG5lZWQgdG8gYmUgaW5qZWN0ZWQgaW50byB0
aGUgZnVuY3Rpb24gd2hlbiB0aGUKKyAqIGZ1bmN0aW9uIGlzIGludm9rZWQuIFRoZXJlIGFyZSB0
aHJlZSB3YXlzIGluIHdoaWNoIHRoZSBmdW5jdGlvbiBjYW4gYmUgYW5ub3RhdGVkIHdpdGggdGhl
IG5lZWRlZAorICogZGVwZW5kZW5jaWVzLgorICoKKyAqICMgQXJndW1lbnQgbmFtZXMKKyAqCisg
KiBUaGUgc2ltcGxlc3QgZm9ybSBpcyB0byBleHRyYWN0IHRoZSBkZXBlbmRlbmNpZXMgZnJvbSB0
aGUgYXJndW1lbnRzIG9mIHRoZSBmdW5jdGlvbi4gVGhpcyBpcyBkb25lCisgKiBieSBjb252ZXJ0
aW5nIHRoZSBmdW5jdGlvbiBpbnRvIGEgc3RyaW5nIHVzaW5nIGB0b1N0cmluZygpYCBtZXRob2Qg
YW5kIGV4dHJhY3RpbmcgdGhlIGFyZ3VtZW50CisgKiBuYW1lcy4KKyAqIGBgYGpzCisgKiAgIC8v
IEdpdmVuCisgKiAgIGZ1bmN0aW9uIE15Q29udHJvbGxlcigkc2NvcGUsICRyb3V0ZSkgeworICog
ICAgIC8vIC4uLgorICogICB9CisgKgorICogICAvLyBUaGVuCisgKiAgIGV4cGVjdChpbmplY3Rv
ci5hbm5vdGF0ZShNeUNvbnRyb2xsZXIpKS50b0VxdWFsKFsnJHNjb3BlJywgJyRyb3V0ZSddKTsK
KyAqIGBgYAorICoKKyAqIFlvdSBjYW4gZGlzYWxsb3cgdGhpcyBtZXRob2QgYnkgdXNpbmcgc3Ry
aWN0IGluamVjdGlvbiBtb2RlLgorICoKKyAqIFRoaXMgbWV0aG9kIGRvZXMgbm90IHdvcmsgd2l0
aCBjb2RlIG1pbmlmaWNhdGlvbiAvIG9iZnVzY2F0aW9uLiBGb3IgdGhpcyByZWFzb24gdGhlIGZv
bGxvd2luZworICogYW5ub3RhdGlvbiBzdHJhdGVnaWVzIGFyZSBzdXBwb3J0ZWQuCisgKgorICog
IyBUaGUgYCRpbmplY3RgIHByb3BlcnR5CisgKgorICogSWYgYSBmdW5jdGlvbiBoYXMgYW4gYCRp
bmplY3RgIHByb3BlcnR5IGFuZCBpdHMgdmFsdWUgaXMgYW4gYXJyYXkgb2Ygc3RyaW5ncywgdGhl
biB0aGUgc3RyaW5ncworICogcmVwcmVzZW50IG5hbWVzIG9mIHNlcnZpY2VzIHRvIGJlIGluamVj
dGVkIGludG8gdGhlIGZ1bmN0aW9uLgorICogYGBganMKKyAqICAgLy8gR2l2ZW4KKyAqICAgdmFy
IE15Q29udHJvbGxlciA9IGZ1bmN0aW9uKG9iZnVzY2F0ZWRTY29wZSwgb2JmdXNjYXRlZFJvdXRl
KSB7CisgKiAgICAgLy8gLi4uCisgKiAgIH0KKyAqICAgLy8gRGVmaW5lIGZ1bmN0aW9uIGRlcGVu
ZGVuY2llcworICogICBNeUNvbnRyb2xsZXJbJyRpbmplY3QnXSA9IFsnJHNjb3BlJywgJyRyb3V0
ZSddOworICoKKyAqICAgLy8gVGhlbgorICogICBleHBlY3QoaW5qZWN0b3IuYW5ub3RhdGUoTXlD
b250cm9sbGVyKSkudG9FcXVhbChbJyRzY29wZScsICckcm91dGUnXSk7CisgKiBgYGAKKyAqCisg
KiAjIFRoZSBhcnJheSBub3RhdGlvbgorICoKKyAqIEl0IGlzIG9mdGVuIGRlc2lyYWJsZSB0byBp
bmxpbmUgSW5qZWN0ZWQgZnVuY3Rpb25zIGFuZCB0aGF0J3Mgd2hlbiBzZXR0aW5nIHRoZSBgJGlu
amVjdGAgcHJvcGVydHkKKyAqIGlzIHZlcnkgaW5jb252ZW5pZW50LiBJbiB0aGVzZSBzaXR1YXRp
b25zIHVzaW5nIHRoZSBhcnJheSBub3RhdGlvbiB0byBzcGVjaWZ5IHRoZSBkZXBlbmRlbmNpZXMg
aW4KKyAqIGEgd2F5IHRoYXQgc3Vydml2ZXMgbWluaWZpY2F0aW9uIGlzIGEgYmV0dGVyIGNob2lj
ZToKKyAqCisgKiBgYGBqcworICogICAvLyBXZSB3aXNoIHRvIHdyaXRlIHRoaXMgKG5vdCBtaW5p
ZmljYXRpb24gLyBvYmZ1c2NhdGlvbiBzYWZlKQorICogICBpbmplY3Rvci5pbnZva2UoZnVuY3Rp
b24oJGNvbXBpbGUsICRyb290U2NvcGUpIHsKKyAqICAgICAvLyAuLi4KKyAqICAgfSk7CisgKgor
ICogICAvLyBXZSBhcmUgZm9yY2VkIHRvIHdyaXRlIGJyZWFrIGlubGluaW5nCisgKiAgIHZhciB0
bXBGbiA9IGZ1bmN0aW9uKG9iZnVzY2F0ZWRDb21waWxlLCBvYmZ1c2NhdGVkUm9vdFNjb3BlKSB7
CisgKiAgICAgLy8gLi4uCisgKiAgIH07CisgKiAgIHRtcEZuLiRpbmplY3QgPSBbJyRjb21waWxl
JywgJyRyb290U2NvcGUnXTsKKyAqICAgaW5qZWN0b3IuaW52b2tlKHRtcEZuKTsKKyAqCisgKiAg
IC8vIFRvIGJldHRlciBzdXBwb3J0IGlubGluZSBmdW5jdGlvbiB0aGUgaW5saW5lIGFubm90YXRp
b24gaXMgc3VwcG9ydGVkCisgKiAgIGluamVjdG9yLmludm9rZShbJyRjb21waWxlJywgJyRyb290
U2NvcGUnLCBmdW5jdGlvbihvYmZDb21waWxlLCBvYmZSb290U2NvcGUpIHsKKyAqICAgICAvLyAu
Li4KKyAqICAgfV0pOworICoKKyAqICAgLy8gVGhlcmVmb3JlCisgKiAgIGV4cGVjdChpbmplY3Rv
ci5hbm5vdGF0ZSgKKyAqICAgICAgWyckY29tcGlsZScsICckcm9vdFNjb3BlJywgZnVuY3Rpb24o
b2JmdXNfJGNvbXBpbGUsIG9iZnVzXyRyb290U2NvcGUpIHt9XSkKKyAqICAgICkudG9FcXVhbChb
JyRjb21waWxlJywgJyRyb290U2NvcGUnXSk7CisgKiBgYGAKKyAqCisgKiBAcGFyYW0ge0Z1bmN0
aW9ufEFycmF5LjxzdHJpbmd8RnVuY3Rpb24+fSBmbiBGdW5jdGlvbiBmb3Igd2hpY2ggZGVwZW5k
ZW50IHNlcnZpY2UgbmFtZXMgbmVlZCB0bworICogYmUgcmV0cmlldmVkIGFzIGRlc2NyaWJlZCBh
Ym92ZS4KKyAqCisgKiBAcGFyYW0ge2Jvb2xlYW49fSBbc3RyaWN0RGk9ZmFsc2VdIERpc2FsbG93
IGFyZ3VtZW50IG5hbWUgYW5ub3RhdGlvbiBpbmZlcmVuY2UuCisgKgorICogQHJldHVybnMge0Fy
cmF5LjxzdHJpbmc+fSBUaGUgbmFtZXMgb2YgdGhlIHNlcnZpY2VzIHdoaWNoIHRoZSBmdW5jdGlv
biByZXF1aXJlcy4KKyAqLworCisKKworCisvKioKKyAqIEBuZ2RvYyBzZXJ2aWNlCisgKiBAbmFt
ZSAkcHJvdmlkZQorICoKKyAqIEBkZXNjcmlwdGlvbgorICoKKyAqIFRoZSB7QGxpbmsgYXV0by4k
cHJvdmlkZSAkcHJvdmlkZX0gc2VydmljZSBoYXMgYSBudW1iZXIgb2YgbWV0aG9kcyBmb3IgcmVn
aXN0ZXJpbmcgY29tcG9uZW50cworICogd2l0aCB0aGUge0BsaW5rIGF1dG8uJGluamVjdG9yICRp
bmplY3Rvcn0uIE1hbnkgb2YgdGhlc2UgZnVuY3Rpb25zIGFyZSBhbHNvIGV4cG9zZWQgb24KKyAq
IHtAbGluayBhbmd1bGFyLk1vZHVsZX0uCisgKgorICogQW4gQW5ndWxhciAqKnNlcnZpY2UqKiBp
cyBhIHNpbmdsZXRvbiBvYmplY3QgY3JlYXRlZCBieSBhICoqc2VydmljZSBmYWN0b3J5KiouICBU
aGVzZSAqKnNlcnZpY2UKKyAqIGZhY3RvcmllcyoqIGFyZSBmdW5jdGlvbnMgd2hpY2gsIGluIHR1
cm4sIGFyZSBjcmVhdGVkIGJ5IGEgKipzZXJ2aWNlIHByb3ZpZGVyKiouCisgKiBUaGUgKipzZXJ2
aWNlIHByb3ZpZGVycyoqIGFyZSBjb25zdHJ1Y3RvciBmdW5jdGlvbnMuIFdoZW4gaW5zdGFudGlh
dGVkIHRoZXkgbXVzdCBjb250YWluIGEKKyAqIHByb3BlcnR5IGNhbGxlZCBgJGdldGAsIHdoaWNo
IGhvbGRzIHRoZSAqKnNlcnZpY2UgZmFjdG9yeSoqIGZ1bmN0aW9uLgorICoKKyAqIFdoZW4geW91
IHJlcXVlc3QgYSBzZXJ2aWNlLCB0aGUge0BsaW5rIGF1dG8uJGluamVjdG9yICRpbmplY3Rvcn0g
aXMgcmVzcG9uc2libGUgZm9yIGZpbmRpbmcgdGhlCisgKiBjb3JyZWN0ICoqc2VydmljZSBwcm92
aWRlcioqLCBpbnN0YW50aWF0aW5nIGl0IGFuZCB0aGVuIGNhbGxpbmcgaXRzIGAkZ2V0YCAqKnNl
cnZpY2UgZmFjdG9yeSoqCisgKiBmdW5jdGlvbiB0byBnZXQgdGhlIGluc3RhbmNlIG9mIHRoZSAq
KnNlcnZpY2UqKi4KKyAqCisgKiBPZnRlbiBzZXJ2aWNlcyBoYXZlIG5vIGNvbmZpZ3VyYXRpb24g
b3B0aW9ucyBhbmQgdGhlcmUgaXMgbm8gbmVlZCB0byBhZGQgbWV0aG9kcyB0byB0aGUgc2Vydmlj
ZQorICogcHJvdmlkZXIuICBUaGUgcHJvdmlkZXIgd2lsbCBiZSBubyBtb3JlIHRoYW4gYSBjb25z
dHJ1Y3RvciBmdW5jdGlvbiB3aXRoIGEgYCRnZXRgIHByb3BlcnR5LiBGb3IKKyAqIHRoZXNlIGNh
c2VzIHRoZSB7QGxpbmsgYXV0by4kcHJvdmlkZSAkcHJvdmlkZX0gc2VydmljZSBoYXMgYWRkaXRp
b25hbCBoZWxwZXIgbWV0aG9kcyB0byByZWdpc3RlcgorICogc2VydmljZXMgd2l0aG91dCBzcGVj
aWZ5aW5nIGEgcHJvdmlkZXIuCisgKgorICogKiB7QGxpbmsgYXV0by4kcHJvdmlkZSNwcm92aWRl
ciBwcm92aWRlcihwcm92aWRlcil9IC0gcmVnaXN0ZXJzIGEgKipzZXJ2aWNlIHByb3ZpZGVyKiog
d2l0aCB0aGUKKyAqICAgICB7QGxpbmsgYXV0by4kaW5qZWN0b3IgJGluamVjdG9yfQorICogKiB7
QGxpbmsgYXV0by4kcHJvdmlkZSNjb25zdGFudCBjb25zdGFudChvYmopfSAtIHJlZ2lzdGVycyBh
IHZhbHVlL29iamVjdCB0aGF0IGNhbiBiZSBhY2Nlc3NlZCBieQorICogICAgIHByb3ZpZGVycyBh
bmQgc2VydmljZXMuCisgKiAqIHtAbGluayBhdXRvLiRwcm92aWRlI3ZhbHVlIHZhbHVlKG9iail9
IC0gcmVnaXN0ZXJzIGEgdmFsdWUvb2JqZWN0IHRoYXQgY2FuIG9ubHkgYmUgYWNjZXNzZWQgYnkK
KyAqICAgICBzZXJ2aWNlcywgbm90IHByb3ZpZGVycy4KKyAqICoge0BsaW5rIGF1dG8uJHByb3Zp
ZGUjZmFjdG9yeSBmYWN0b3J5KGZuKX0gLSByZWdpc3RlcnMgYSBzZXJ2aWNlICoqZmFjdG9yeSBm
dW5jdGlvbioqLCBgZm5gLAorICogICAgIHRoYXQgd2lsbCBiZSB3cmFwcGVkIGluIGEgKipzZXJ2
aWNlIHByb3ZpZGVyKiogb2JqZWN0LCB3aG9zZSBgJGdldGAgcHJvcGVydHkgd2lsbCBjb250YWlu
IHRoZQorICogICAgIGdpdmVuIGZhY3RvcnkgZnVuY3Rpb24uCisgKiAqIHtAbGluayBhdXRvLiRw
cm92aWRlI3NlcnZpY2Ugc2VydmljZShjbGFzcyl9IC0gcmVnaXN0ZXJzIGEgKipjb25zdHJ1Y3Rv
ciBmdW5jdGlvbioqLCBgY2xhc3NgCisgKiAgICAgdGhhdCB3aWxsIGJlIHdyYXBwZWQgaW4gYSAq
KnNlcnZpY2UgcHJvdmlkZXIqKiBvYmplY3QsIHdob3NlIGAkZ2V0YCBwcm9wZXJ0eSB3aWxsIGlu
c3RhbnRpYXRlCisgKiAgICAgIGEgbmV3IG9iamVjdCB1c2luZyB0aGUgZ2l2ZW4gY29uc3RydWN0
b3IgZnVuY3Rpb24uCisgKgorICogU2VlIHRoZSBpbmRpdmlkdWFsIG1ldGhvZHMgZm9yIG1vcmUg
aW5mb3JtYXRpb24gYW5kIGV4YW1wbGVzLgorICovCisKKy8qKgorICogQG5nZG9jIG1ldGhvZAor
ICogQG5hbWUgJHByb3ZpZGUjcHJvdmlkZXIKKyAqIEBkZXNjcmlwdGlvbgorICoKKyAqIFJlZ2lz
dGVyIGEgKipwcm92aWRlciBmdW5jdGlvbioqIHdpdGggdGhlIHtAbGluayBhdXRvLiRpbmplY3Rv
ciAkaW5qZWN0b3J9LiBQcm92aWRlciBmdW5jdGlvbnMKKyAqIGFyZSBjb25zdHJ1Y3RvciBmdW5j
dGlvbnMsIHdob3NlIGluc3RhbmNlcyBhcmUgcmVzcG9uc2libGUgZm9yICJwcm92aWRpbmciIGEg
ZmFjdG9yeSBmb3IgYQorICogc2VydmljZS4KKyAqCisgKiBTZXJ2aWNlIHByb3ZpZGVyIG5hbWVz
IHN0YXJ0IHdpdGggdGhlIG5hbWUgb2YgdGhlIHNlcnZpY2UgdGhleSBwcm92aWRlIGZvbGxvd2Vk
IGJ5IGBQcm92aWRlcmAuCisgKiBGb3IgZXhhbXBsZSwgdGhlIHtAbGluayBuZy4kbG9nICRsb2d9
IHNlcnZpY2UgaGFzIGEgcHJvdmlkZXIgY2FsbGVkCisgKiB7QGxpbmsgbmcuJGxvZ1Byb3ZpZGVy
ICRsb2dQcm92aWRlcn0uCisgKgorICogU2VydmljZSBwcm92aWRlciBvYmplY3RzIGNhbiBoYXZl
IGFkZGl0aW9uYWwgbWV0aG9kcyB3aGljaCBhbGxvdyBjb25maWd1cmF0aW9uIG9mIHRoZSBwcm92
aWRlcgorICogYW5kIGl0cyBzZXJ2aWNlLiBJbXBvcnRhbnRseSwgeW91IGNhbiBjb25maWd1cmUg
d2hhdCBraW5kIG9mIHNlcnZpY2UgaXMgY3JlYXRlZCBieSB0aGUgYCRnZXRgCisgKiBtZXRob2Qs
IG9yIGhvdyB0aGF0IHNlcnZpY2Ugd2lsbCBhY3QuIEZvciBleGFtcGxlLCB0aGUge0BsaW5rIG5n
LiRsb2dQcm92aWRlciAkbG9nUHJvdmlkZXJ9IGhhcyBhCisgKiBtZXRob2Qge0BsaW5rIG5nLiRs
b2dQcm92aWRlciNkZWJ1Z0VuYWJsZWQgZGVidWdFbmFibGVkfQorICogd2hpY2ggbGV0cyB5b3Ug
c3BlY2lmeSB3aGV0aGVyIHRoZSB7QGxpbmsgbmcuJGxvZyAkbG9nfSBzZXJ2aWNlIHdpbGwgbG9n
IGRlYnVnIG1lc3NhZ2VzIHRvIHRoZQorICogY29uc29sZSBvciBub3QuCisgKgorICogQHBhcmFt
IHtzdHJpbmd9IG5hbWUgVGhlIG5hbWUgb2YgdGhlIGluc3RhbmNlLiBOT1RFOiB0aGUgcHJvdmlk
ZXIgd2lsbCBiZSBhdmFpbGFibGUgdW5kZXIgYG5hbWUgKworICAgICAgICAgICAgICAgICAgICAg
ICAgJ1Byb3ZpZGVyJ2Aga2V5LgorICogQHBhcmFtIHsoT2JqZWN0fGZ1bmN0aW9uKCkpfSBwcm92
aWRlciBJZiB0aGUgcHJvdmlkZXIgaXM6CisgKgorICogICAtIGBPYmplY3RgOiB0aGVuIGl0IHNo
b3VsZCBoYXZlIGEgYCRnZXRgIG1ldGhvZC4gVGhlIGAkZ2V0YCBtZXRob2Qgd2lsbCBiZSBpbnZv
a2VkIHVzaW5nCisgKiAgICAge0BsaW5rIGF1dG8uJGluamVjdG9yI2ludm9rZSAkaW5qZWN0b3Iu
aW52b2tlKCl9IHdoZW4gYW4gaW5zdGFuY2UgbmVlZHMgdG8gYmUgY3JlYXRlZC4KKyAqICAgLSBg
Q29uc3RydWN0b3JgOiBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgcHJvdmlkZXIgd2lsbCBiZSBjcmVh
dGVkIHVzaW5nCisgKiAgICAge0BsaW5rIGF1dG8uJGluamVjdG9yI2luc3RhbnRpYXRlICRpbmpl
Y3Rvci5pbnN0YW50aWF0ZSgpfSwgdGhlbiB0cmVhdGVkIGFzIGBvYmplY3RgLgorICoKKyAqIEBy
ZXR1cm5zIHtPYmplY3R9IHJlZ2lzdGVyZWQgcHJvdmlkZXIgaW5zdGFuY2UKKworICogQGV4YW1w
bGUKKyAqCisgKiBUaGUgZm9sbG93aW5nIGV4YW1wbGUgc2hvd3MgaG93IHRvIGNyZWF0ZSBhIHNp
bXBsZSBldmVudCB0cmFja2luZyBzZXJ2aWNlIGFuZCByZWdpc3RlciBpdCB1c2luZworICoge0Bs
aW5rIGF1dG8uJHByb3ZpZGUjcHJvdmlkZXIgJHByb3ZpZGUucHJvdmlkZXIoKX0uCisgKgorICog
YGBganMKKyAqICAvLyBEZWZpbmUgdGhlIGV2ZW50VHJhY2tlciBwcm92aWRlcgorICogIGZ1bmN0
aW9uIEV2ZW50VHJhY2tlclByb3ZpZGVyKCkgeworICogICAgdmFyIHRyYWNraW5nVXJsID0gJy90
cmFjayc7CisgKgorICogICAgLy8gQSBwcm92aWRlciBtZXRob2QgZm9yIGNvbmZpZ3VyaW5nIHdo
ZXJlIHRoZSB0cmFja2VkIGV2ZW50cyBzaG91bGQgYmVlbiBzYXZlZAorICogICAgdGhpcy5zZXRU
cmFja2luZ1VybCA9IGZ1bmN0aW9uKHVybCkgeworICogICAgICB0cmFja2luZ1VybCA9IHVybDsK
KyAqICAgIH07CisgKgorICogICAgLy8gVGhlIHNlcnZpY2UgZmFjdG9yeSBmdW5jdGlvbgorICog
ICAgdGhpcy4kZ2V0ID0gWyckaHR0cCcsIGZ1bmN0aW9uKCRodHRwKSB7CisgKiAgICAgIHZhciB0
cmFja2VkRXZlbnRzID0ge307CisgKiAgICAgIHJldHVybiB7CisgKiAgICAgICAgLy8gQ2FsbCB0
aGlzIHRvIHRyYWNrIGFuIGV2ZW50CisgKiAgICAgICAgZXZlbnQ6IGZ1bmN0aW9uKGV2ZW50KSB7
CisgKiAgICAgICAgICB2YXIgY291bnQgPSB0cmFja2VkRXZlbnRzW2V2ZW50XSB8fCAwOworICog
ICAgICAgICAgY291bnQgKz0gMTsKKyAqICAgICAgICAgIHRyYWNrZWRFdmVudHNbZXZlbnRdID0g
Y291bnQ7CisgKiAgICAgICAgICByZXR1cm4gY291bnQ7CisgKiAgICAgICAgfSwKKyAqICAgICAg
ICAvLyBDYWxsIHRoaXMgdG8gc2F2ZSB0aGUgdHJhY2tlZCBldmVudHMgdG8gdGhlIHRyYWNraW5n
VXJsCisgKiAgICAgICAgc2F2ZTogZnVuY3Rpb24oKSB7CisgKiAgICAgICAgICAkaHR0cC5wb3N0
KHRyYWNraW5nVXJsLCB0cmFja2VkRXZlbnRzKTsKKyAqICAgICAgICB9CisgKiAgICAgIH07Cisg
KiAgICB9XTsKKyAqICB9CisgKgorICogIGRlc2NyaWJlKCdldmVudFRyYWNrZXInLCBmdW5jdGlv
bigpIHsKKyAqICAgIHZhciBwb3N0U3B5OworICoKKyAqICAgIGJlZm9yZUVhY2gobW9kdWxlKGZ1
bmN0aW9uKCRwcm92aWRlKSB7CisgKiAgICAgIC8vIFJlZ2lzdGVyIHRoZSBldmVudFRyYWNrZXIg
cHJvdmlkZXIKKyAqICAgICAgJHByb3ZpZGUucHJvdmlkZXIoJ2V2ZW50VHJhY2tlcicsIEV2ZW50
VHJhY2tlclByb3ZpZGVyKTsKKyAqICAgIH0pKTsKKyAqCisgKiAgICBiZWZvcmVFYWNoKG1vZHVs
ZShmdW5jdGlvbihldmVudFRyYWNrZXJQcm92aWRlcikgeworICogICAgICAvLyBDb25maWd1cmUg
ZXZlbnRUcmFja2VyIHByb3ZpZGVyCisgKiAgICAgIGV2ZW50VHJhY2tlclByb3ZpZGVyLnNldFRy
YWNraW5nVXJsKCcvY3VzdG9tLXRyYWNrJyk7CisgKiAgICB9KSk7CisgKgorICogICAgaXQoJ3Ry
YWNrcyBldmVudHMnLCBpbmplY3QoZnVuY3Rpb24oZXZlbnRUcmFja2VyKSB7CisgKiAgICAgIGV4
cGVjdChldmVudFRyYWNrZXIuZXZlbnQoJ2xvZ2luJykpLnRvRXF1YWwoMSk7CisgKiAgICAgIGV4
cGVjdChldmVudFRyYWNrZXIuZXZlbnQoJ2xvZ2luJykpLnRvRXF1YWwoMik7CisgKiAgICB9KSk7
CisgKgorICogICAgaXQoJ3NhdmVzIHRvIHRoZSB0cmFja2luZyB1cmwnLCBpbmplY3QoZnVuY3Rp
b24oZXZlbnRUcmFja2VyLCAkaHR0cCkgeworICogICAgICBwb3N0U3B5ID0gc3B5T24oJGh0dHAs
ICdwb3N0Jyk7CisgKiAgICAgIGV2ZW50VHJhY2tlci5ldmVudCgnbG9naW4nKTsKKyAqICAgICAg
ZXZlbnRUcmFja2VyLnNhdmUoKTsKKyAqICAgICAgZXhwZWN0KHBvc3RTcHkpLnRvSGF2ZUJlZW5D
YWxsZWQoKTsKKyAqICAgICAgZXhwZWN0KHBvc3RTcHkubW9zdFJlY2VudENhbGwuYXJnc1swXSku
bm90LnRvRXF1YWwoJy90cmFjaycpOworICogICAgICBleHBlY3QocG9zdFNweS5tb3N0UmVjZW50
Q2FsbC5hcmdzWzBdKS50b0VxdWFsKCcvY3VzdG9tLXRyYWNrJyk7CisgKiAgICAgIGV4cGVjdChw
b3N0U3B5Lm1vc3RSZWNlbnRDYWxsLmFyZ3NbMV0pLnRvRXF1YWwoeyAnbG9naW4nOiAxIH0pOwor
ICogICAgfSkpOworICogIH0pOworICogYGBgCisgKi8KKworLyoqCisgKiBAbmdkb2MgbWV0aG9k
CisgKiBAbmFtZSAkcHJvdmlkZSNmYWN0b3J5CisgKiBAZGVzY3JpcHRpb24KKyAqCisgKiBSZWdp
c3RlciBhICoqc2VydmljZSBmYWN0b3J5KiosIHdoaWNoIHdpbGwgYmUgY2FsbGVkIHRvIHJldHVy
biB0aGUgc2VydmljZSBpbnN0YW5jZS4KKyAqIFRoaXMgaXMgc2hvcnQgZm9yIHJlZ2lzdGVyaW5n
IGEgc2VydmljZSB3aGVyZSBpdHMgcHJvdmlkZXIgY29uc2lzdHMgb2Ygb25seSBhIGAkZ2V0YCBw
cm9wZXJ0eSwKKyAqIHdoaWNoIGlzIHRoZSBnaXZlbiBzZXJ2aWNlIGZhY3RvcnkgZnVuY3Rpb24u
CisgKiBZb3Ugc2hvdWxkIHVzZSB7QGxpbmsgYXV0by4kcHJvdmlkZSNmYWN0b3J5ICRwcm92aWRl
LmZhY3RvcnkoZ2V0Rm4pfSBpZiB5b3UgZG8gbm90IG5lZWQgdG8KKyAqIGNvbmZpZ3VyZSB5b3Vy
IHNlcnZpY2UgaW4gYSBwcm92aWRlci4KKyAqCisgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUg
bmFtZSBvZiB0aGUgaW5zdGFuY2UuCisgKiBAcGFyYW0ge0Z1bmN0aW9ufEFycmF5LjxzdHJpbmd8
RnVuY3Rpb24+fSAkZ2V0Rm4gVGhlIGluamVjdGFibGUgJGdldEZuIGZvciB0aGUgaW5zdGFuY2Ug
Y3JlYXRpb24uCisgKiAgICAgICAgICAgICAgICAgICAgICBJbnRlcm5hbGx5IHRoaXMgaXMgYSBz
aG9ydCBoYW5kIGZvciBgJHByb3ZpZGUucHJvdmlkZXIobmFtZSwgeyRnZXQ6ICRnZXRGbn0pYC4K
KyAqIEByZXR1cm5zIHtPYmplY3R9IHJlZ2lzdGVyZWQgcHJvdmlkZXIgaW5zdGFuY2UKKyAqCisg
KiBAZXhhbXBsZQorICogSGVyZSBpcyBhbiBleGFtcGxlIG9mIHJlZ2lzdGVyaW5nIGEgc2Vydmlj
ZQorICogYGBganMKKyAqICAgJHByb3ZpZGUuZmFjdG9yeSgncGluZycsIFsnJGh0dHAnLCBmdW5j
dGlvbigkaHR0cCkgeworICogICAgIHJldHVybiBmdW5jdGlvbiBwaW5nKCkgeworICogICAgICAg
cmV0dXJuICRodHRwLnNlbmQoJy9waW5nJyk7CisgKiAgICAgfTsKKyAqICAgfV0pOworICogYGBg
CisgKiBZb3Ugd291bGQgdGhlbiBpbmplY3QgYW5kIHVzZSB0aGlzIHNlcnZpY2UgbGlrZSB0aGlz
OgorICogYGBganMKKyAqICAgc29tZU1vZHVsZS5jb250cm9sbGVyKCdDdHJsJywgWydwaW5nJywg
ZnVuY3Rpb24ocGluZykgeworICogICAgIHBpbmcoKTsKKyAqICAgfV0pOworICogYGBgCisgKi8K
KworCisvKioKKyAqIEBuZ2RvYyBtZXRob2QKKyAqIEBuYW1lICRwcm92aWRlI3NlcnZpY2UKKyAq
IEBkZXNjcmlwdGlvbgorICoKKyAqIFJlZ2lzdGVyIGEgKipzZXJ2aWNlIGNvbnN0cnVjdG9yKios
IHdoaWNoIHdpbGwgYmUgaW52b2tlZCB3aXRoIGBuZXdgIHRvIGNyZWF0ZSB0aGUgc2VydmljZQor
ICogaW5zdGFuY2UuCisgKiBUaGlzIGlzIHNob3J0IGZvciByZWdpc3RlcmluZyBhIHNlcnZpY2Ug
d2hlcmUgaXRzIHByb3ZpZGVyJ3MgYCRnZXRgIHByb3BlcnR5IGlzIHRoZSBzZXJ2aWNlCisgKiBj
b25zdHJ1Y3RvciBmdW5jdGlvbiB0aGF0IHdpbGwgYmUgdXNlZCB0byBpbnN0YW50aWF0ZSB0aGUg
c2VydmljZSBpbnN0YW5jZS4KKyAqCisgKiBZb3Ugc2hvdWxkIHVzZSB7QGxpbmsgYXV0by4kcHJv
dmlkZSNzZXJ2aWNlICRwcm92aWRlLnNlcnZpY2UoY2xhc3MpfSBpZiB5b3UgZGVmaW5lIHlvdXIg
c2VydmljZQorICogYXMgYSB0eXBlL2NsYXNzLgorICoKKyAqIEBwYXJhbSB7c3RyaW5nfSBuYW1l
IFRoZSBuYW1lIG9mIHRoZSBpbnN0YW5jZS4KKyAqIEBwYXJhbSB7RnVuY3Rpb258QXJyYXkuPHN0
cmluZ3xGdW5jdGlvbj59IGNvbnN0cnVjdG9yIEFuIGluamVjdGFibGUgY2xhc3MgKGNvbnN0cnVj
dG9yIGZ1bmN0aW9uKQorICogICAgIHRoYXQgd2lsbCBiZSBpbnN0YW50aWF0ZWQuCisgKiBAcmV0
dXJucyB7T2JqZWN0fSByZWdpc3RlcmVkIHByb3ZpZGVyIGluc3RhbmNlCisgKgorICogQGV4YW1w
bGUKKyAqIEhlcmUgaXMgYW4gZXhhbXBsZSBvZiByZWdpc3RlcmluZyBhIHNlcnZpY2UgdXNpbmcK
KyAqIHtAbGluayBhdXRvLiRwcm92aWRlI3NlcnZpY2UgJHByb3ZpZGUuc2VydmljZShjbGFzcyl9
LgorICogYGBganMKKyAqICAgdmFyIFBpbmcgPSBmdW5jdGlvbigkaHR0cCkgeworICogICAgIHRo
aXMuJGh0dHAgPSAkaHR0cDsKKyAqICAgfTsKKyAqCisgKiAgIFBpbmcuJGluamVjdCA9IFsnJGh0
dHAnXTsKKyAqCisgKiAgIFBpbmcucHJvdG90eXBlLnNlbmQgPSBmdW5jdGlvbigpIHsKKyAqICAg
ICByZXR1cm4gdGhpcy4kaHR0cC5nZXQoJy9waW5nJyk7CisgKiAgIH07CisgKiAgICRwcm92aWRl
LnNlcnZpY2UoJ3BpbmcnLCBQaW5nKTsKKyAqIGBgYAorICogWW91IHdvdWxkIHRoZW4gaW5qZWN0
IGFuZCB1c2UgdGhpcyBzZXJ2aWNlIGxpa2UgdGhpczoKKyAqIGBgYGpzCisgKiAgIHNvbWVNb2R1
bGUuY29udHJvbGxlcignQ3RybCcsIFsncGluZycsIGZ1bmN0aW9uKHBpbmcpIHsKKyAqICAgICBw
aW5nLnNlbmQoKTsKKyAqICAgfV0pOworICogYGBgCisgKi8KKworCisvKioKKyAqIEBuZ2RvYyBt
ZXRob2QKKyAqIEBuYW1lICRwcm92aWRlI3ZhbHVlCisgKiBAZGVzY3JpcHRpb24KKyAqCisgKiBS
ZWdpc3RlciBhICoqdmFsdWUgc2VydmljZSoqIHdpdGggdGhlIHtAbGluayBhdXRvLiRpbmplY3Rv
ciAkaW5qZWN0b3J9LCBzdWNoIGFzIGEgc3RyaW5nLCBhCisgKiBudW1iZXIsIGFuIGFycmF5LCBh
biBvYmplY3Qgb3IgYSBmdW5jdGlvbi4gIFRoaXMgaXMgc2hvcnQgZm9yIHJlZ2lzdGVyaW5nIGEg
c2VydmljZSB3aGVyZSBpdHMKKyAqIHByb3ZpZGVyJ3MgYCRnZXRgIHByb3BlcnR5IGlzIGEgZmFj
dG9yeSBmdW5jdGlvbiB0aGF0IHRha2VzIG5vIGFyZ3VtZW50cyBhbmQgcmV0dXJucyB0aGUgKip2
YWx1ZQorICogc2VydmljZSoqLgorICoKKyAqIFZhbHVlIHNlcnZpY2VzIGFyZSBzaW1pbGFyIHRv
IGNvbnN0YW50IHNlcnZpY2VzLCBleGNlcHQgdGhhdCB0aGV5IGNhbm5vdCBiZSBpbmplY3RlZCBp
bnRvIGEKKyAqIG1vZHVsZSBjb25maWd1cmF0aW9uIGZ1bmN0aW9uIChzZWUge0BsaW5rIGFuZ3Vs
YXIuTW9kdWxlI2NvbmZpZ30pIGJ1dCB0aGV5IGNhbiBiZSBvdmVycmlkZGVuIGJ5CisgKiBhbiBB
bmd1bGFyCisgKiB7QGxpbmsgYXV0by4kcHJvdmlkZSNkZWNvcmF0b3IgZGVjb3JhdG9yfS4KKyAq
CisgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbmFtZSBvZiB0aGUgaW5zdGFuY2UuCisgKiBA
cGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZS4KKyAqIEByZXR1cm5zIHtPYmplY3R9IHJlZ2lzdGVy
ZWQgcHJvdmlkZXIgaW5zdGFuY2UKKyAqCisgKiBAZXhhbXBsZQorICogSGVyZSBhcmUgc29tZSBl
eGFtcGxlcyBvZiBjcmVhdGluZyB2YWx1ZSBzZXJ2aWNlcy4KKyAqIGBgYGpzCisgKiAgICRwcm92
aWRlLnZhbHVlKCdBRE1JTl9VU0VSJywgJ2FkbWluJyk7CisgKgorICogICAkcHJvdmlkZS52YWx1
ZSgnUm9sZUxvb2t1cCcsIHsgYWRtaW46IDAsIHdyaXRlcjogMSwgcmVhZGVyOiAyIH0pOworICoK
KyAqICAgJHByb3ZpZGUudmFsdWUoJ2hhbGZPZicsIGZ1bmN0aW9uKHZhbHVlKSB7CisgKiAgICAg
cmV0dXJuIHZhbHVlIC8gMjsKKyAqICAgfSk7CisgKiBgYGAKKyAqLworCisKKy8qKgorICogQG5n
ZG9jIG1ldGhvZAorICogQG5hbWUgJHByb3ZpZGUjY29uc3RhbnQKKyAqIEBkZXNjcmlwdGlvbgor
ICoKKyAqIFJlZ2lzdGVyIGEgKipjb25zdGFudCBzZXJ2aWNlKiosIHN1Y2ggYXMgYSBzdHJpbmcs
IGEgbnVtYmVyLCBhbiBhcnJheSwgYW4gb2JqZWN0IG9yIGEgZnVuY3Rpb24sCisgKiB3aXRoIHRo
ZSB7QGxpbmsgYXV0by4kaW5qZWN0b3IgJGluamVjdG9yfS4gVW5saWtlIHtAbGluayBhdXRvLiRw
cm92aWRlI3ZhbHVlIHZhbHVlfSBpdCBjYW4gYmUKKyAqIGluamVjdGVkIGludG8gYSBtb2R1bGUg
Y29uZmlndXJhdGlvbiBmdW5jdGlvbiAoc2VlIHtAbGluayBhbmd1bGFyLk1vZHVsZSNjb25maWd9
KSBhbmQgaXQgY2Fubm90CisgKiBiZSBvdmVycmlkZGVuIGJ5IGFuIEFuZ3VsYXIge0BsaW5rIGF1
dG8uJHByb3ZpZGUjZGVjb3JhdG9yIGRlY29yYXRvcn0uCisgKgorICogQHBhcmFtIHtzdHJpbmd9
IG5hbWUgVGhlIG5hbWUgb2YgdGhlIGNvbnN0YW50LgorICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUg
Y29uc3RhbnQgdmFsdWUuCisgKiBAcmV0dXJucyB7T2JqZWN0fSByZWdpc3RlcmVkIGluc3RhbmNl
CisgKgorICogQGV4YW1wbGUKKyAqIEhlcmUgYSBzb21lIGV4YW1wbGVzIG9mIGNyZWF0aW5nIGNv
bnN0YW50czoKKyAqIGBgYGpzCisgKiAgICRwcm92aWRlLmNvbnN0YW50KCdTSEFSRF9IRUlHSFQn
LCAzMDYpOworICoKKyAqICAgJHByb3ZpZGUuY29uc3RhbnQoJ01ZX0NPTE9VUlMnLCBbJ3JlZCcs
ICdibHVlJywgJ2dyZXknXSk7CisgKgorICogICAkcHJvdmlkZS5jb25zdGFudCgnZG91YmxlJywg
ZnVuY3Rpb24odmFsdWUpIHsKKyAqICAgICByZXR1cm4gdmFsdWUgKiAyOworICogICB9KTsKKyAq
IGBgYAorICovCisKKworLyoqCisgKiBAbmdkb2MgbWV0aG9kCisgKiBAbmFtZSAkcHJvdmlkZSNk
ZWNvcmF0b3IKKyAqIEBkZXNjcmlwdGlvbgorICoKKyAqIFJlZ2lzdGVyIGEgKipzZXJ2aWNlIGRl
Y29yYXRvcioqIHdpdGggdGhlIHtAbGluayBhdXRvLiRpbmplY3RvciAkaW5qZWN0b3J9LiBBIHNl
cnZpY2UgZGVjb3JhdG9yCisgKiBpbnRlcmNlcHRzIHRoZSBjcmVhdGlvbiBvZiBhIHNlcnZpY2Us
IGFsbG93aW5nIGl0IHRvIG92ZXJyaWRlIG9yIG1vZGlmeSB0aGUgYmVoYXZpb3VyIG9mIHRoZQor
ICogc2VydmljZS4gVGhlIG9iamVjdCByZXR1cm5lZCBieSB0aGUgZGVjb3JhdG9yIG1heSBiZSB0
aGUgb3JpZ2luYWwgc2VydmljZSwgb3IgYSBuZXcgc2VydmljZQorICogb2JqZWN0IHdoaWNoIHJl
cGxhY2VzIG9yIHdyYXBzIGFuZCBkZWxlZ2F0ZXMgdG8gdGhlIG9yaWdpbmFsIHNlcnZpY2UuCisg
KgorICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG5hbWUgb2YgdGhlIHNlcnZpY2UgdG8gZGVj
b3JhdGUuCisgKiBAcGFyYW0ge0Z1bmN0aW9ufEFycmF5LjxzdHJpbmd8RnVuY3Rpb24+fSBkZWNv
cmF0b3IgVGhpcyBmdW5jdGlvbiB3aWxsIGJlIGludm9rZWQgd2hlbiB0aGUgc2VydmljZSBuZWVk
cyB0byBiZQorICogICAgaW5zdGFudGlhdGVkIGFuZCBzaG91bGQgcmV0dXJuIHRoZSBkZWNvcmF0
ZWQgc2VydmljZSBpbnN0YW5jZS4gVGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCB1c2luZworICogICAg
dGhlIHtAbGluayBhdXRvLiRpbmplY3RvciNpbnZva2UgaW5qZWN0b3IuaW52b2tlfSBtZXRob2Qg
YW5kIGlzIHRoZXJlZm9yZSBmdWxseSBpbmplY3RhYmxlLgorICogICAgTG9jYWwgaW5qZWN0aW9u
IGFyZ3VtZW50czoKKyAqCisgKiAgICAqIGAkZGVsZWdhdGVgIC0gVGhlIG9yaWdpbmFsIHNlcnZp
Y2UgaW5zdGFuY2UsIHdoaWNoIGNhbiBiZSBtb25rZXkgcGF0Y2hlZCwgY29uZmlndXJlZCwKKyAq
ICAgICAgZGVjb3JhdGVkIG9yIGRlbGVnYXRlZCB0by4KKyAqCisgKiBAZXhhbXBsZQorICogSGVy
ZSB3ZSBkZWNvcmF0ZSB0aGUge0BsaW5rIG5nLiRsb2cgJGxvZ30gc2VydmljZSB0byBjb252ZXJ0
IHdhcm5pbmdzIHRvIGVycm9ycyBieSBpbnRlcmNlcHRpbmcKKyAqIGNhbGxzIHRvIHtAbGluayBu
Zy4kbG9nI2Vycm9yICRsb2cud2FybigpfS4KKyAqIGBgYGpzCisgKiAgICRwcm92aWRlLmRlY29y
YXRvcignJGxvZycsIFsnJGRlbGVnYXRlJywgZnVuY3Rpb24oJGRlbGVnYXRlKSB7CisgKiAgICAg
JGRlbGVnYXRlLndhcm4gPSAkZGVsZWdhdGUuZXJyb3I7CisgKiAgICAgcmV0dXJuICRkZWxlZ2F0
ZTsKKyAqICAgfV0pOworICogYGBgCisgKi8KKworCitmdW5jdGlvbiBjcmVhdGVJbmplY3Rvciht
b2R1bGVzVG9Mb2FkLCBzdHJpY3REaSkgeworICBzdHJpY3REaSA9IChzdHJpY3REaSA9PT0gdHJ1
ZSk7CisgIHZhciBJTlNUQU5USUFUSU5HID0ge30sCisgICAgICBwcm92aWRlclN1ZmZpeCA9ICdQ
cm92aWRlcicsCisgICAgICBwYXRoID0gW10sCisgICAgICBsb2FkZWRNb2R1bGVzID0gbmV3IEhh
c2hNYXAoW10sIHRydWUpLAorICAgICAgcHJvdmlkZXJDYWNoZSA9IHsKKyAgICAgICAgJHByb3Zp
ZGU6IHsKKyAgICAgICAgICAgIHByb3ZpZGVyOiBzdXBwb3J0T2JqZWN0KHByb3ZpZGVyKSwKKyAg
ICAgICAgICAgIGZhY3Rvcnk6IHN1cHBvcnRPYmplY3QoZmFjdG9yeSksCisgICAgICAgICAgICBz
ZXJ2aWNlOiBzdXBwb3J0T2JqZWN0KHNlcnZpY2UpLAorICAgICAgICAgICAgdmFsdWU6IHN1cHBv
cnRPYmplY3QodmFsdWUpLAorICAgICAgICAgICAgY29uc3RhbnQ6IHN1cHBvcnRPYmplY3QoY29u
c3RhbnQpLAorICAgICAgICAgICAgZGVjb3JhdG9yOiBkZWNvcmF0b3IKKyAgICAgICAgICB9Cisg
ICAgICB9LAorICAgICAgcHJvdmlkZXJJbmplY3RvciA9IChwcm92aWRlckNhY2hlLiRpbmplY3Rv
ciA9CisgICAgICAgICAgY3JlYXRlSW50ZXJuYWxJbmplY3Rvcihwcm92aWRlckNhY2hlLCBmdW5j
dGlvbihzZXJ2aWNlTmFtZSwgY2FsbGVyKSB7CisgICAgICAgICAgICBpZiAoYW5ndWxhci5pc1N0
cmluZyhjYWxsZXIpKSB7CisgICAgICAgICAgICAgIHBhdGgucHVzaChjYWxsZXIpOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgdGhyb3cgJGluamVjdG9yTWluRXJyKCd1bnByJywgIlVua25v
d24gcHJvdmlkZXI6IHswfSIsIHBhdGguam9pbignIDwtICcpKTsKKyAgICAgICAgICB9KSksCisg
ICAgICBpbnN0YW5jZUNhY2hlID0ge30sCisgICAgICBpbnN0YW5jZUluamVjdG9yID0gKGluc3Rh
bmNlQ2FjaGUuJGluamVjdG9yID0KKyAgICAgICAgICBjcmVhdGVJbnRlcm5hbEluamVjdG9yKGlu
c3RhbmNlQ2FjaGUsIGZ1bmN0aW9uKHNlcnZpY2VOYW1lLCBjYWxsZXIpIHsKKyAgICAgICAgICAg
IHZhciBwcm92aWRlciA9IHByb3ZpZGVySW5qZWN0b3IuZ2V0KHNlcnZpY2VOYW1lICsgcHJvdmlk
ZXJTdWZmaXgsIGNhbGxlcik7CisgICAgICAgICAgICByZXR1cm4gaW5zdGFuY2VJbmplY3Rvci5p
bnZva2UocHJvdmlkZXIuJGdldCwgcHJvdmlkZXIsIHVuZGVmaW5lZCwgc2VydmljZU5hbWUpOwor
ICAgICAgICAgIH0pKTsKKworCisgIGZvckVhY2gobG9hZE1vZHVsZXMobW9kdWxlc1RvTG9hZCks
IGZ1bmN0aW9uKGZuKSB7IGlmIChmbikgaW5zdGFuY2VJbmplY3Rvci5pbnZva2UoZm4pOyB9KTsK
KworICByZXR1cm4gaW5zdGFuY2VJbmplY3RvcjsKKworICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8KKyAgLy8gJHByb3ZpZGVyCisgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLworCisgIGZ1bmN0aW9uIHN1cHBvcnRPYmplY3QoZGVsZWdhdGUpIHsKKyAg
ICByZXR1cm4gZnVuY3Rpb24oa2V5LCB2YWx1ZSkgeworICAgICAgaWYgKGlzT2JqZWN0KGtleSkp
IHsKKyAgICAgICAgZm9yRWFjaChrZXksIHJldmVyc2VQYXJhbXMoZGVsZWdhdGUpKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHJldHVybiBkZWxlZ2F0ZShrZXksIHZhbHVlKTsKKyAgICAgIH0K
KyAgICB9OworICB9CisKKyAgZnVuY3Rpb24gcHJvdmlkZXIobmFtZSwgcHJvdmlkZXJfKSB7Cisg
ICAgYXNzZXJ0Tm90SGFzT3duUHJvcGVydHkobmFtZSwgJ3NlcnZpY2UnKTsKKyAgICBpZiAoaXNG
dW5jdGlvbihwcm92aWRlcl8pIHx8IGlzQXJyYXkocHJvdmlkZXJfKSkgeworICAgICAgcHJvdmlk
ZXJfID0gcHJvdmlkZXJJbmplY3Rvci5pbnN0YW50aWF0ZShwcm92aWRlcl8pOworICAgIH0KKyAg
ICBpZiAoIXByb3ZpZGVyXy4kZ2V0KSB7CisgICAgICB0aHJvdyAkaW5qZWN0b3JNaW5FcnIoJ3Bn
ZXQnLCAiUHJvdmlkZXIgJ3swfScgbXVzdCBkZWZpbmUgJGdldCBmYWN0b3J5IG1ldGhvZC4iLCBu
YW1lKTsKKyAgICB9CisgICAgcmV0dXJuIHByb3ZpZGVyQ2FjaGVbbmFtZSArIHByb3ZpZGVyU3Vm
Zml4XSA9IHByb3ZpZGVyXzsKKyAgfQorCisgIGZ1bmN0aW9uIGVuZm9yY2VSZXR1cm5WYWx1ZShu
YW1lLCBmYWN0b3J5KSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uIGVuZm9yY2VkUmV0dXJuVmFsdWUo
KSB7CisgICAgICB2YXIgcmVzdWx0ID0gaW5zdGFuY2VJbmplY3Rvci5pbnZva2UoZmFjdG9yeSwg
dGhpcyk7CisgICAgICBpZiAoaXNVbmRlZmluZWQocmVzdWx0KSkgeworICAgICAgICB0aHJvdyAk
aW5qZWN0b3JNaW5FcnIoJ3VuZGVmJywgIlByb3ZpZGVyICd7MH0nIG11c3QgcmV0dXJuIGEgdmFs
dWUgZnJvbSAkZ2V0IGZhY3RvcnkgbWV0aG9kLiIsIG5hbWUpOworICAgICAgfQorICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICB9OworICB9CisKKyAgZnVuY3Rpb24gZmFjdG9yeShuYW1lLCBmYWN0
b3J5Rm4sIGVuZm9yY2UpIHsKKyAgICByZXR1cm4gcHJvdmlkZXIobmFtZSwgeworICAgICAgJGdl
dDogZW5mb3JjZSAhPT0gZmFsc2UgPyBlbmZvcmNlUmV0dXJuVmFsdWUobmFtZSwgZmFjdG9yeUZu
KSA6IGZhY3RvcnlGbgorICAgIH0pOworICB9CisKKyAgZnVuY3Rpb24gc2VydmljZShuYW1lLCBj
b25zdHJ1Y3RvcikgeworICAgIHJldHVybiBmYWN0b3J5KG5hbWUsIFsnJGluamVjdG9yJywgZnVu
Y3Rpb24oJGluamVjdG9yKSB7CisgICAgICByZXR1cm4gJGluamVjdG9yLmluc3RhbnRpYXRlKGNv
bnN0cnVjdG9yKTsKKyAgICB9XSk7CisgIH0KKworICBmdW5jdGlvbiB2YWx1ZShuYW1lLCB2YWwp
IHsgcmV0dXJuIGZhY3RvcnkobmFtZSwgdmFsdWVGbih2YWwpLCBmYWxzZSk7IH0KKworICBmdW5j
dGlvbiBjb25zdGFudChuYW1lLCB2YWx1ZSkgeworICAgIGFzc2VydE5vdEhhc093blByb3BlcnR5
KG5hbWUsICdjb25zdGFudCcpOworICAgIHByb3ZpZGVyQ2FjaGVbbmFtZV0gPSB2YWx1ZTsKKyAg
ICBpbnN0YW5jZUNhY2hlW25hbWVdID0gdmFsdWU7CisgIH0KKworICBmdW5jdGlvbiBkZWNvcmF0
b3Ioc2VydmljZU5hbWUsIGRlY29yRm4pIHsKKyAgICB2YXIgb3JpZ1Byb3ZpZGVyID0gcHJvdmlk
ZXJJbmplY3Rvci5nZXQoc2VydmljZU5hbWUgKyBwcm92aWRlclN1ZmZpeCksCisgICAgICAgIG9y
aWckZ2V0ID0gb3JpZ1Byb3ZpZGVyLiRnZXQ7CisKKyAgICBvcmlnUHJvdmlkZXIuJGdldCA9IGZ1
bmN0aW9uKCkgeworICAgICAgdmFyIG9yaWdJbnN0YW5jZSA9IGluc3RhbmNlSW5qZWN0b3IuaW52
b2tlKG9yaWckZ2V0LCBvcmlnUHJvdmlkZXIpOworICAgICAgcmV0dXJuIGluc3RhbmNlSW5qZWN0
b3IuaW52b2tlKGRlY29yRm4sIG51bGwsIHskZGVsZWdhdGU6IG9yaWdJbnN0YW5jZX0pOworICAg
IH07CisgIH0KKworICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKyAgLy8g
TW9kdWxlIExvYWRpbmcKKyAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisg
IGZ1bmN0aW9uIGxvYWRNb2R1bGVzKG1vZHVsZXNUb0xvYWQpIHsKKyAgICB2YXIgcnVuQmxvY2tz
ID0gW10sIG1vZHVsZUZuOworICAgIGZvckVhY2gobW9kdWxlc1RvTG9hZCwgZnVuY3Rpb24obW9k
dWxlKSB7CisgICAgICBpZiAobG9hZGVkTW9kdWxlcy5nZXQobW9kdWxlKSkgcmV0dXJuOworICAg
ICAgbG9hZGVkTW9kdWxlcy5wdXQobW9kdWxlLCB0cnVlKTsKKworICAgICAgZnVuY3Rpb24gcnVu
SW52b2tlUXVldWUocXVldWUpIHsKKyAgICAgICAgdmFyIGksIGlpOworICAgICAgICBmb3IgKGkg
PSAwLCBpaSA9IHF1ZXVlLmxlbmd0aDsgaSA8IGlpOyBpKyspIHsKKyAgICAgICAgICB2YXIgaW52
b2tlQXJncyA9IHF1ZXVlW2ldLAorICAgICAgICAgICAgICBwcm92aWRlciA9IHByb3ZpZGVySW5q
ZWN0b3IuZ2V0KGludm9rZUFyZ3NbMF0pOworCisgICAgICAgICAgcHJvdmlkZXJbaW52b2tlQXJn
c1sxXV0uYXBwbHkocHJvdmlkZXIsIGludm9rZUFyZ3NbMl0pOworICAgICAgICB9CisgICAgICB9
CisKKyAgICAgIHRyeSB7CisgICAgICAgIGlmIChpc1N0cmluZyhtb2R1bGUpKSB7CisgICAgICAg
ICAgbW9kdWxlRm4gPSBhbmd1bGFyTW9kdWxlKG1vZHVsZSk7CisgICAgICAgICAgcnVuQmxvY2tz
ID0gcnVuQmxvY2tzLmNvbmNhdChsb2FkTW9kdWxlcyhtb2R1bGVGbi5yZXF1aXJlcykpLmNvbmNh
dChtb2R1bGVGbi5fcnVuQmxvY2tzKTsKKyAgICAgICAgICBydW5JbnZva2VRdWV1ZShtb2R1bGVG
bi5faW52b2tlUXVldWUpOworICAgICAgICAgIHJ1bkludm9rZVF1ZXVlKG1vZHVsZUZuLl9jb25m
aWdCbG9ja3MpOworICAgICAgICB9IGVsc2UgaWYgKGlzRnVuY3Rpb24obW9kdWxlKSkgeworICAg
ICAgICAgICAgcnVuQmxvY2tzLnB1c2gocHJvdmlkZXJJbmplY3Rvci5pbnZva2UobW9kdWxlKSk7
CisgICAgICAgIH0gZWxzZSBpZiAoaXNBcnJheShtb2R1bGUpKSB7CisgICAgICAgICAgICBydW5C
bG9ja3MucHVzaChwcm92aWRlckluamVjdG9yLmludm9rZShtb2R1bGUpKTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICBhc3NlcnRBcmdGbihtb2R1bGUsICdtb2R1bGUnKTsKKyAgICAgICAg
fQorICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBpZiAoaXNBcnJheShtb2R1bGUpKSB7Cisg
ICAgICAgICAgbW9kdWxlID0gbW9kdWxlW21vZHVsZS5sZW5ndGggLSAxXTsKKyAgICAgICAgfQor
ICAgICAgICBpZiAoZS5tZXNzYWdlICYmIGUuc3RhY2sgJiYgZS5zdGFjay5pbmRleE9mKGUubWVz
c2FnZSkgPT0gLTEpIHsKKyAgICAgICAgICAvLyBTYWZhcmkgJiBGRidzIHN0YWNrIHRyYWNlcyBk
b24ndCBjb250YWluIGVycm9yLm1lc3NhZ2UgY29udGVudAorICAgICAgICAgIC8vIHVubGlrZSB0
aG9zZSBvZiBDaHJvbWUgYW5kIElFCisgICAgICAgICAgLy8gU28gaWYgc3RhY2sgZG9lc24ndCBj
b250YWluIG1lc3NhZ2UsIHdlIGNyZWF0ZSBhIG5ldyBzdHJpbmcgdGhhdCBjb250YWlucyBib3Ro
LgorICAgICAgICAgIC8vIFNpbmNlIGVycm9yLnN0YWNrIGlzIHJlYWQtb25seSBpbiBTYWZhcmks
IEknbSBvdmVycmlkaW5nIGUgYW5kIG5vdCBlLnN0YWNrIGhlcmUuCisgICAgICAgICAgLyoganNo
aW50IC1XMDIyICovCisgICAgICAgICAgZSA9IGUubWVzc2FnZSArICdcbicgKyBlLnN0YWNrOwor
ICAgICAgICB9CisgICAgICAgIHRocm93ICRpbmplY3Rvck1pbkVycignbW9kdWxlcnInLCAiRmFp
bGVkIHRvIGluc3RhbnRpYXRlIG1vZHVsZSB7MH0gZHVlIHRvOlxuezF9IiwKKyAgICAgICAgICAg
ICAgICAgIG1vZHVsZSwgZS5zdGFjayB8fCBlLm1lc3NhZ2UgfHwgZSk7CisgICAgICB9CisgICAg
fSk7CisgICAgcmV0dXJuIHJ1bkJsb2NrczsKKyAgfQorCisgIC8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLworICAvLyBpbnRlcm5hbCBJbmplY3RvcgorICAvLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworICBmdW5jdGlvbiBjcmVhdGVJbnRlcm5hbEluamVj
dG9yKGNhY2hlLCBmYWN0b3J5KSB7CisKKyAgICBmdW5jdGlvbiBnZXRTZXJ2aWNlKHNlcnZpY2VO
YW1lLCBjYWxsZXIpIHsKKyAgICAgIGlmIChjYWNoZS5oYXNPd25Qcm9wZXJ0eShzZXJ2aWNlTmFt
ZSkpIHsKKyAgICAgICAgaWYgKGNhY2hlW3NlcnZpY2VOYW1lXSA9PT0gSU5TVEFOVElBVElORykg
eworICAgICAgICAgIHRocm93ICRpbmplY3Rvck1pbkVycignY2RlcCcsICdDaXJjdWxhciBkZXBl
bmRlbmN5IGZvdW5kOiB7MH0nLAorICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlTmFtZSArICcg
PC0gJyArIHBhdGguam9pbignIDwtICcpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gY2Fj
aGVbc2VydmljZU5hbWVdOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAg
ICBwYXRoLnVuc2hpZnQoc2VydmljZU5hbWUpOworICAgICAgICAgIGNhY2hlW3NlcnZpY2VOYW1l
XSA9IElOU1RBTlRJQVRJTkc7CisgICAgICAgICAgcmV0dXJuIGNhY2hlW3NlcnZpY2VOYW1lXSA9
IGZhY3Rvcnkoc2VydmljZU5hbWUsIGNhbGxlcik7CisgICAgICAgIH0gY2F0Y2ggKGVycikgewor
ICAgICAgICAgIGlmIChjYWNoZVtzZXJ2aWNlTmFtZV0gPT09IElOU1RBTlRJQVRJTkcpIHsKKyAg
ICAgICAgICAgIGRlbGV0ZSBjYWNoZVtzZXJ2aWNlTmFtZV07CisgICAgICAgICAgfQorICAgICAg
ICAgIHRocm93IGVycjsKKyAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICBwYXRoLnNoaWZ0
KCk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiBpbnZva2UoZm4s
IHNlbGYsIGxvY2Fscywgc2VydmljZU5hbWUpIHsKKyAgICAgIGlmICh0eXBlb2YgbG9jYWxzID09
PSAnc3RyaW5nJykgeworICAgICAgICBzZXJ2aWNlTmFtZSA9IGxvY2FsczsKKyAgICAgICAgbG9j
YWxzID0gbnVsbDsKKyAgICAgIH0KKworICAgICAgdmFyIGFyZ3MgPSBbXSwKKyAgICAgICAgICAk
aW5qZWN0ID0gY3JlYXRlSW5qZWN0b3IuJCRhbm5vdGF0ZShmbiwgc3RyaWN0RGksIHNlcnZpY2VO
YW1lKSwKKyAgICAgICAgICBsZW5ndGgsIGksCisgICAgICAgICAga2V5OworCisgICAgICBmb3Ig
KGkgPSAwLCBsZW5ndGggPSAkaW5qZWN0Lmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAg
ICAgIGtleSA9ICRpbmplY3RbaV07CisgICAgICAgIGlmICh0eXBlb2Yga2V5ICE9PSAnc3RyaW5n
JykgeworICAgICAgICAgIHRocm93ICRpbmplY3Rvck1pbkVycignaXRrbicsCisgICAgICAgICAg
ICAgICAgICAnSW5jb3JyZWN0IGluamVjdGlvbiB0b2tlbiEgRXhwZWN0ZWQgc2VydmljZSBuYW1l
IGFzIHN0cmluZywgZ290IHswfScsIGtleSk7CisgICAgICAgIH0KKyAgICAgICAgYXJncy5wdXNo
KAorICAgICAgICAgIGxvY2FscyAmJiBsb2NhbHMuaGFzT3duUHJvcGVydHkoa2V5KQorICAgICAg
ICAgID8gbG9jYWxzW2tleV0KKyAgICAgICAgICA6IGdldFNlcnZpY2Uoa2V5LCBzZXJ2aWNlTmFt
ZSkKKyAgICAgICAgKTsKKyAgICAgIH0KKyAgICAgIGlmIChpc0FycmF5KGZuKSkgeworICAgICAg
ICBmbiA9IGZuW2xlbmd0aF07CisgICAgICB9CisKKyAgICAgIC8vIGh0dHA6Ly9qc3BlcmYuY29t
L2FuZ3VsYXJqcy1pbnZva2UtYXBwbHktdnMtc3dpdGNoCisgICAgICAvLyAjNTM4OAorICAgICAg
cmV0dXJuIGZuLmFwcGx5KHNlbGYsIGFyZ3MpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGluc3Rh
bnRpYXRlKFR5cGUsIGxvY2Fscywgc2VydmljZU5hbWUpIHsKKyAgICAgIC8vIENoZWNrIGlmIFR5
cGUgaXMgYW5ub3RhdGVkIGFuZCB1c2UganVzdCB0aGUgZ2l2ZW4gZnVuY3Rpb24gYXQgbi0xIGFz
IHBhcmFtZXRlcgorICAgICAgLy8gZS5nLiBzb21lTW9kdWxlLmZhY3RvcnkoJ2dyZWV0ZXInLCBb
JyR3aW5kb3cnLCBmdW5jdGlvbihyZW5hbWVkJHdpbmRvdykge31dKTsKKyAgICAgIC8vIE9iamVj
dCBjcmVhdGlvbjogaHR0cDovL2pzcGVyZi5jb20vY3JlYXRlLWNvbnN0cnVjdG9yLzIKKyAgICAg
IHZhciBpbnN0YW5jZSA9IE9iamVjdC5jcmVhdGUoKGlzQXJyYXkoVHlwZSkgPyBUeXBlW1R5cGUu
bGVuZ3RoIC0gMV0gOiBUeXBlKS5wcm90b3R5cGUgfHwgbnVsbCk7CisgICAgICB2YXIgcmV0dXJu
ZWRWYWx1ZSA9IGludm9rZShUeXBlLCBpbnN0YW5jZSwgbG9jYWxzLCBzZXJ2aWNlTmFtZSk7CisK
KyAgICAgIHJldHVybiBpc09iamVjdChyZXR1cm5lZFZhbHVlKSB8fCBpc0Z1bmN0aW9uKHJldHVy
bmVkVmFsdWUpID8gcmV0dXJuZWRWYWx1ZSA6IGluc3RhbmNlOworICAgIH0KKworICAgIHJldHVy
biB7CisgICAgICBpbnZva2U6IGludm9rZSwKKyAgICAgIGluc3RhbnRpYXRlOiBpbnN0YW50aWF0
ZSwKKyAgICAgIGdldDogZ2V0U2VydmljZSwKKyAgICAgIGFubm90YXRlOiBjcmVhdGVJbmplY3Rv
ci4kJGFubm90YXRlLAorICAgICAgaGFzOiBmdW5jdGlvbihuYW1lKSB7CisgICAgICAgIHJldHVy
biBwcm92aWRlckNhY2hlLmhhc093blByb3BlcnR5KG5hbWUgKyBwcm92aWRlclN1ZmZpeCkgfHwg
Y2FjaGUuaGFzT3duUHJvcGVydHkobmFtZSk7CisgICAgICB9CisgICAgfTsKKyAgfQorfQorCitj
cmVhdGVJbmplY3Rvci4kJGFubm90YXRlID0gYW5ub3RhdGU7CisKKy8qKgorICogQG5nZG9jIHBy
b3ZpZGVyCisgKiBAbmFtZSAkYW5jaG9yU2Nyb2xsUHJvdmlkZXIKKyAqCisgKiBAZGVzY3JpcHRp
b24KKyAqIFVzZSBgJGFuY2hvclNjcm9sbFByb3ZpZGVyYCB0byBkaXNhYmxlIGF1dG9tYXRpYyBz
Y3JvbGxpbmcgd2hlbmV2ZXIKKyAqIHtAbGluayBuZy4kbG9jYXRpb24jaGFzaCAkbG9jYXRpb24u
aGFzaCgpfSBjaGFuZ2VzLgorICovCitmdW5jdGlvbiAkQW5jaG9yU2Nyb2xsUHJvdmlkZXIoKSB7
CisKKyAgdmFyIGF1dG9TY3JvbGxpbmdFbmFibGVkID0gdHJ1ZTsKKworICAvKioKKyAgICogQG5n
ZG9jIG1ldGhvZAorICAgKiBAbmFtZSAkYW5jaG9yU2Nyb2xsUHJvdmlkZXIjZGlzYWJsZUF1dG9T
Y3JvbGxpbmcKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uCisgICAqIEJ5IGRlZmF1bHQsIHtAbGlu
ayBuZy4kYW5jaG9yU2Nyb2xsICRhbmNob3JTY3JvbGwoKX0gd2lsbCBhdXRvbWF0aWNhbGx5IGRl
dGVjdCBjaGFuZ2VzIHRvCisgICAqIHtAbGluayBuZy4kbG9jYXRpb24jaGFzaCAkbG9jYXRpb24u
aGFzaCgpfSBhbmQgc2Nyb2xsIHRvIHRoZSBlbGVtZW50IG1hdGNoaW5nIHRoZSBuZXcgaGFzaC48
YnIgLz4KKyAgICogVXNlIHRoaXMgbWV0aG9kIHRvIGRpc2FibGUgYXV0b21hdGljIHNjcm9sbGlu
Zy4KKyAgICoKKyAgICogSWYgYXV0b21hdGljIHNjcm9sbGluZyBpcyBkaXNhYmxlZCwgb25lIG11
c3QgZXhwbGljaXRseSBjYWxsCisgICAqIHtAbGluayBuZy4kYW5jaG9yU2Nyb2xsICRhbmNob3JT
Y3JvbGwoKX0gaW4gb3JkZXIgdG8gc2Nyb2xsIHRvIHRoZSBlbGVtZW50IHJlbGF0ZWQgdG8gdGhl
CisgICAqIGN1cnJlbnQgaGFzaC4KKyAgICovCisgIHRoaXMuZGlzYWJsZUF1dG9TY3JvbGxpbmcg
PSBmdW5jdGlvbigpIHsKKyAgICBhdXRvU2Nyb2xsaW5nRW5hYmxlZCA9IGZhbHNlOworICB9Owor
CisgIC8qKgorICAgKiBAbmdkb2Mgc2VydmljZQorICAgKiBAbmFtZSAkYW5jaG9yU2Nyb2xsCisg
ICAqIEBraW5kIGZ1bmN0aW9uCisgICAqIEByZXF1aXJlcyAkd2luZG93CisgICAqIEByZXF1aXJl
cyAkbG9jYXRpb24KKyAgICogQHJlcXVpcmVzICRyb290U2NvcGUKKyAgICoKKyAgICogQGRlc2Ny
aXB0aW9uCisgICAqIFdoZW4gY2FsbGVkLCBpdCBzY3JvbGxzIHRvIHRoZSBlbGVtZW50IHJlbGF0
ZWQgdG8gdGhlIHNwZWNpZmllZCBgaGFzaGAgb3IgKGlmIG9taXR0ZWQpIHRvIHRoZQorICAgKiBj
dXJyZW50IHZhbHVlIG9mIHtAbGluayBuZy4kbG9jYXRpb24jaGFzaCAkbG9jYXRpb24uaGFzaCgp
fSwgYWNjb3JkaW5nIHRvIHRoZSBydWxlcyBzcGVjaWZpZWQKKyAgICogaW4gdGhlCisgICAqIFtI
VE1MNSBzcGVjXShodHRwOi8vZGV2LnczLm9yZy9odG1sNS9zcGVjL092ZXJ2aWV3Lmh0bWwjdGhl
LWluZGljYXRlZC1wYXJ0LW9mLXRoZS1kb2N1bWVudCkuCisgICAqCisgICAqIEl0IGFsc28gd2F0
Y2hlcyB0aGUge0BsaW5rIG5nLiRsb2NhdGlvbiNoYXNoICRsb2NhdGlvbi5oYXNoKCl9IGFuZCBh
dXRvbWF0aWNhbGx5IHNjcm9sbHMgdG8KKyAgICogbWF0Y2ggYW55IGFuY2hvciB3aGVuZXZlciBp
dCBjaGFuZ2VzLiBUaGlzIGNhbiBiZSBkaXNhYmxlZCBieSBjYWxsaW5nCisgICAqIHtAbGluayBu
Zy4kYW5jaG9yU2Nyb2xsUHJvdmlkZXIjZGlzYWJsZUF1dG9TY3JvbGxpbmcgJGFuY2hvclNjcm9s
bFByb3ZpZGVyLmRpc2FibGVBdXRvU2Nyb2xsaW5nKCl9LgorICAgKgorICAgKiBBZGRpdGlvbmFs
bHksIHlvdSBjYW4gdXNlIGl0cyB7QGxpbmsgbmcuJGFuY2hvclNjcm9sbCN5T2Zmc2V0IHlPZmZz
ZXR9IHByb3BlcnR5IHRvIHNwZWNpZnkgYQorICAgKiB2ZXJ0aWNhbCBzY3JvbGwtb2Zmc2V0IChl
aXRoZXIgZml4ZWQgb3IgZHluYW1pYykuCisgICAqCisgICAqIEBwYXJhbSB7c3RyaW5nPX0gaGFz
aCBUaGUgaGFzaCBzcGVjaWZ5aW5nIHRoZSBlbGVtZW50IHRvIHNjcm9sbCB0by4gSWYgb21pdHRl
ZCwgdGhlIHZhbHVlIG9mCisgICAqICAgICAgICAgICAgICAgICAgICAgICB7QGxpbmsgbmcuJGxv
Y2F0aW9uI2hhc2ggJGxvY2F0aW9uLmhhc2goKX0gd2lsbCBiZSB1c2VkLgorICAgKgorICAgKiBA
cHJvcGVydHkgeyhudW1iZXJ8ZnVuY3Rpb258anFMaXRlKX0geU9mZnNldAorICAgKiBJZiBzZXQs
IHNwZWNpZmllcyBhIHZlcnRpY2FsIHNjcm9sbC1vZmZzZXQuIFRoaXMgaXMgb2Z0ZW4gdXNlZnVs
IHdoZW4gdGhlcmUgYXJlIGZpeGVkCisgICAqIHBvc2l0aW9uZWQgZWxlbWVudHMgYXQgdGhlIHRv
cCBvZiB0aGUgcGFnZSwgc3VjaCBhcyBuYXZiYXJzLCBoZWFkZXJzIGV0Yy4KKyAgICoKKyAgICog
YHlPZmZzZXRgIGNhbiBiZSBzcGVjaWZpZWQgaW4gdmFyaW91cyB3YXlzOgorICAgKiAtICoqbnVt
YmVyKio6IEEgZml4ZWQgbnVtYmVyIG9mIHBpeGVscyB0byBiZSB1c2VkIGFzIG9mZnNldC48YnIg
Lz48YnIgLz4KKyAgICogLSAqKmZ1bmN0aW9uKio6IEEgZ2V0dGVyIGZ1bmN0aW9uIGNhbGxlZCBl
dmVyeXRpbWUgYCRhbmNob3JTY3JvbGwoKWAgaXMgZXhlY3V0ZWQuIE11c3QgcmV0dXJuCisgICAq
ICAgYSBudW1iZXIgcmVwcmVzZW50aW5nIHRoZSBvZmZzZXQgKGluIHBpeGVscykuPGJyIC8+PGJy
IC8+CisgICAqIC0gKipqcUxpdGUqKjogQSBqcUxpdGUvalF1ZXJ5IGVsZW1lbnQgdG8gYmUgdXNl
ZCBmb3Igc3BlY2lmeWluZyB0aGUgb2Zmc2V0LiBUaGUgZGlzdGFuY2UgZnJvbQorICAgKiAgIHRo
ZSB0b3Agb2YgdGhlIHBhZ2UgdG8gdGhlIGVsZW1lbnQncyBib3R0b20gd2lsbCBiZSB1c2VkIGFz
IG9mZnNldC48YnIgLz4KKyAgICogICAqKk5vdGUqKjogVGhlIGVsZW1lbnQgd2lsbCBiZSB0YWtl
biBpbnRvIGFjY291bnQgb25seSBhcyBsb25nIGFzIGl0cyBgcG9zaXRpb25gIGlzIHNldCB0bwor
ICAgKiAgIGBmaXhlZGAuIFRoaXMgb3B0aW9uIGlzIHVzZWZ1bCwgd2hlbiBkZWFsaW5nIHdpdGgg
cmVzcG9uc2l2ZSBuYXZiYXJzL2hlYWRlcnMgdGhhdCBhZGp1c3QKKyAgICogICB0aGVpciBoZWln
aHQgYW5kL29yIHBvc2l0aW9uaW5nIGFjY29yZGluZyB0byB0aGUgdmlld3BvcnQncyBzaXplLgor
ICAgKgorICAgKiA8YnIgLz4KKyAgICogPGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtd2FybmluZyI+
CisgICAqIEluIG9yZGVyIGZvciBgeU9mZnNldGAgdG8gd29yayBwcm9wZXJseSwgc2Nyb2xsaW5n
IHNob3VsZCB0YWtlIHBsYWNlIG9uIHRoZSBkb2N1bWVudCdzIHJvb3QgYW5kCisgICAqIG5vdCBz
b21lIGNoaWxkIGVsZW1lbnQuCisgICAqIDwvZGl2PgorICAgKgorICAgKiBAZXhhbXBsZQorICAg
ICA8ZXhhbXBsZSBtb2R1bGU9ImFuY2hvclNjcm9sbEV4YW1wbGUiPgorICAgICAgIDxmaWxlIG5h
bWU9ImluZGV4Lmh0bWwiPgorICAgICAgICAgPGRpdiBpZD0ic2Nyb2xsQXJlYSIgbmctY29udHJv
bGxlcj0iU2Nyb2xsQ29udHJvbGxlciI+CisgICAgICAgICAgIDxhIG5nLWNsaWNrPSJnb3RvQm90
dG9tKCkiPkdvIHRvIGJvdHRvbTwvYT4KKyAgICAgICAgICAgPGEgaWQ9ImJvdHRvbSI+PC9hPiBZ
b3UncmUgYXQgdGhlIGJvdHRvbSEKKyAgICAgICAgIDwvZGl2PgorICAgICAgIDwvZmlsZT4KKyAg
ICAgICA8ZmlsZSBuYW1lPSJzY3JpcHQuanMiPgorICAgICAgICAgYW5ndWxhci5tb2R1bGUoJ2Fu
Y2hvclNjcm9sbEV4YW1wbGUnLCBbXSkKKyAgICAgICAgICAgLmNvbnRyb2xsZXIoJ1Njcm9sbENv
bnRyb2xsZXInLCBbJyRzY29wZScsICckbG9jYXRpb24nLCAnJGFuY2hvclNjcm9sbCcsCisgICAg
ICAgICAgICAgZnVuY3Rpb24gKCRzY29wZSwgJGxvY2F0aW9uLCAkYW5jaG9yU2Nyb2xsKSB7Cisg
ICAgICAgICAgICAgICAkc2NvcGUuZ290b0JvdHRvbSA9IGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgICAgICAvLyBzZXQgdGhlIGxvY2F0aW9uLmhhc2ggdG8gdGhlIGlkIG9mCisgICAgICAgICAg
ICAgICAgIC8vIHRoZSBlbGVtZW50IHlvdSB3aXNoIHRvIHNjcm9sbCB0by4KKyAgICAgICAgICAg
ICAgICAgJGxvY2F0aW9uLmhhc2goJ2JvdHRvbScpOworCisgICAgICAgICAgICAgICAgIC8vIGNh
bGwgJGFuY2hvclNjcm9sbCgpCisgICAgICAgICAgICAgICAgICRhbmNob3JTY3JvbGwoKTsKKyAg
ICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgfV0pOworICAgICAgIDwvZmlsZT4KKyAgICAg
ICA8ZmlsZSBuYW1lPSJzdHlsZS5jc3MiPgorICAgICAgICAgI3Njcm9sbEFyZWEgeworICAgICAg
ICAgICBoZWlnaHQ6IDI4MHB4OworICAgICAgICAgICBvdmVyZmxvdzogYXV0bzsKKyAgICAgICAg
IH0KKworICAgICAgICAgI2JvdHRvbSB7CisgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOworICAg
ICAgICAgICBtYXJnaW4tdG9wOiAyMDAwcHg7CisgICAgICAgICB9CisgICAgICAgPC9maWxlPgor
ICAgICA8L2V4YW1wbGU+CisgICAqCisgICAqIDxociAvPgorICAgKiBUaGUgZXhhbXBsZSBiZWxv
dyBpbGx1c3RyYXRlcyB0aGUgdXNlIG9mIGEgdmVydGljYWwgc2Nyb2xsLW9mZnNldCAoc3BlY2lm
aWVkIGFzIGEgZml4ZWQgdmFsdWUpLgorICAgKiBTZWUge0BsaW5rIG5nLiRhbmNob3JTY3JvbGwj
eU9mZnNldCAkYW5jaG9yU2Nyb2xsLnlPZmZzZXR9IGZvciBtb3JlIGRldGFpbHMuCisgICAqCisg
ICAqIEBleGFtcGxlCisgICAgIDxleGFtcGxlIG1vZHVsZT0iYW5jaG9yU2Nyb2xsT2Zmc2V0RXhh
bXBsZSI+CisgICAgICAgPGZpbGUgbmFtZT0iaW5kZXguaHRtbCI+CisgICAgICAgICA8ZGl2IGNs
YXNzPSJmaXhlZC1oZWFkZXIiIG5nLWNvbnRyb2xsZXI9ImhlYWRlckN0cmwiPgorICAgICAgICAg
ICA8YSBocmVmPSIiIG5nLWNsaWNrPSJnb3RvQW5jaG9yKHgpIiBuZy1yZXBlYXQ9InggaW4gWzEs
MiwzLDQsNV0iPgorICAgICAgICAgICAgIEdvIHRvIGFuY2hvciB7e3h9fQorICAgICAgICAgICA8
L2E+CisgICAgICAgICA8L2Rpdj4KKyAgICAgICAgIDxkaXYgaWQ9ImFuY2hvcnt7eH19IiBjbGFz
cz0iYW5jaG9yIiBuZy1yZXBlYXQ9InggaW4gWzEsMiwzLDQsNV0iPgorICAgICAgICAgICBBbmNo
b3Ige3t4fX0gb2YgNQorICAgICAgICAgPC9kaXY+CisgICAgICAgPC9maWxlPgorICAgICAgIDxm
aWxlIG5hbWU9InNjcmlwdC5qcyI+CisgICAgICAgICBhbmd1bGFyLm1vZHVsZSgnYW5jaG9yU2Ny
b2xsT2Zmc2V0RXhhbXBsZScsIFtdKQorICAgICAgICAgICAucnVuKFsnJGFuY2hvclNjcm9sbCcs
IGZ1bmN0aW9uKCRhbmNob3JTY3JvbGwpIHsKKyAgICAgICAgICAgICAkYW5jaG9yU2Nyb2xsLnlP
ZmZzZXQgPSA1MDsgICAvLyBhbHdheXMgc2Nyb2xsIGJ5IDUwIGV4dHJhIHBpeGVscworICAgICAg
ICAgICB9XSkKKyAgICAgICAgICAgLmNvbnRyb2xsZXIoJ2hlYWRlckN0cmwnLCBbJyRhbmNob3JT
Y3JvbGwnLCAnJGxvY2F0aW9uJywgJyRzY29wZScsCisgICAgICAgICAgICAgZnVuY3Rpb24gKCRh
bmNob3JTY3JvbGwsICRsb2NhdGlvbiwgJHNjb3BlKSB7CisgICAgICAgICAgICAgICAkc2NvcGUu
Z290b0FuY2hvciA9IGZ1bmN0aW9uKHgpIHsKKyAgICAgICAgICAgICAgICAgdmFyIG5ld0hhc2gg
PSAnYW5jaG9yJyArIHg7CisgICAgICAgICAgICAgICAgIGlmICgkbG9jYXRpb24uaGFzaCgpICE9
PSBuZXdIYXNoKSB7CisgICAgICAgICAgICAgICAgICAgLy8gc2V0IHRoZSAkbG9jYXRpb24uaGFz
aCB0byBgbmV3SGFzaGAgYW5kCisgICAgICAgICAgICAgICAgICAgLy8gJGFuY2hvclNjcm9sbCB3
aWxsIGF1dG9tYXRpY2FsbHkgc2Nyb2xsIHRvIGl0CisgICAgICAgICAgICAgICAgICAgJGxvY2F0
aW9uLmhhc2goJ2FuY2hvcicgKyB4KTsKKyAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICAgICAvLyBjYWxsICRhbmNob3JTY3JvbGwoKSBleHBsaWNpdGx5LAorICAgICAg
ICAgICAgICAgICAgIC8vIHNpbmNlICRsb2NhdGlvbi5oYXNoIGhhc24ndCBjaGFuZ2VkCisgICAg
ICAgICAgICAgICAgICAgJGFuY2hvclNjcm9sbCgpOworICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICB9OworICAgICAgICAgICAgIH0KKyAgICAgICAgICAgXSk7CisgICAgICAgPC9m
aWxlPgorICAgICAgIDxmaWxlIG5hbWU9InN0eWxlLmNzcyI+CisgICAgICAgICBib2R5IHsKKyAg
ICAgICAgICAgcGFkZGluZy10b3A6IDUwcHg7CisgICAgICAgICB9CisKKyAgICAgICAgIC5hbmNo
b3IgeworICAgICAgICAgICBib3JkZXI6IDJweCBkYXNoZWQgRGFya09yY2hpZDsKKyAgICAgICAg
ICAgcGFkZGluZzogMTBweCAxMHB4IDIwMHB4IDEwcHg7CisgICAgICAgICB9CisKKyAgICAgICAg
IC5maXhlZC1oZWFkZXIgeworICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAs
IDAsIDAuMik7CisgICAgICAgICAgIGhlaWdodDogNTBweDsKKyAgICAgICAgICAgcG9zaXRpb246
IGZpeGVkOworICAgICAgICAgICB0b3A6IDA7IGxlZnQ6IDA7IHJpZ2h0OiAwOworICAgICAgICAg
fQorCisgICAgICAgICAuZml4ZWQtaGVhZGVyID4gYSB7CisgICAgICAgICAgIGRpc3BsYXk6IGlu
bGluZS1ibG9jazsKKyAgICAgICAgICAgbWFyZ2luOiA1cHggMTVweDsKKyAgICAgICAgIH0KKyAg
ICAgICA8L2ZpbGU+CisgICAgIDwvZXhhbXBsZT4KKyAgICovCisgIHRoaXMuJGdldCA9IFsnJHdp
bmRvdycsICckbG9jYXRpb24nLCAnJHJvb3RTY29wZScsIGZ1bmN0aW9uKCR3aW5kb3csICRsb2Nh
dGlvbiwgJHJvb3RTY29wZSkgeworICAgIHZhciBkb2N1bWVudCA9ICR3aW5kb3cuZG9jdW1lbnQ7
CisKKyAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gZ2V0IGZpcnN0IGFuY2hvciBmcm9tIGEgTm9k
ZUxpc3QKKyAgICAvLyAodXNpbmcgYEFycmF5I3NvbWUoKWAgaW5zdGVhZCBvZiBgYW5ndWxhciNm
b3JFYWNoKClgIHNpbmNlIGl0J3MgbW9yZSBwZXJmb3JtYW50CisgICAgLy8gIGFuZCB3b3JraW5n
IGluIGFsbCBzdXBwb3J0ZWQgYnJvd3NlcnMuKQorICAgIGZ1bmN0aW9uIGdldEZpcnN0QW5jaG9y
KGxpc3QpIHsKKyAgICAgIHZhciByZXN1bHQgPSBudWxsOworICAgICAgQXJyYXkucHJvdG90eXBl
LnNvbWUuY2FsbChsaXN0LCBmdW5jdGlvbihlbGVtZW50KSB7CisgICAgICAgIGlmIChub2RlTmFt
ZV8oZWxlbWVudCkgPT09ICdhJykgeworICAgICAgICAgIHJlc3VsdCA9IGVsZW1lbnQ7CisgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgIH0pOworICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBnZXRZT2Zmc2V0KCkgeworCisgICAgICB2YXIg
b2Zmc2V0ID0gc2Nyb2xsLnlPZmZzZXQ7CisKKyAgICAgIGlmIChpc0Z1bmN0aW9uKG9mZnNldCkp
IHsKKyAgICAgICAgb2Zmc2V0ID0gb2Zmc2V0KCk7CisgICAgICB9IGVsc2UgaWYgKGlzRWxlbWVu
dChvZmZzZXQpKSB7CisgICAgICAgIHZhciBlbGVtID0gb2Zmc2V0WzBdOworICAgICAgICB2YXIg
c3R5bGUgPSAkd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbSk7CisgICAgICAgIGlmIChzdHls
ZS5wb3NpdGlvbiAhPT0gJ2ZpeGVkJykgeworICAgICAgICAgIG9mZnNldCA9IDA7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgb2Zmc2V0ID0gZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3Qo
KS5ib3R0b207CisgICAgICAgIH0KKyAgICAgIH0gZWxzZSBpZiAoIWlzTnVtYmVyKG9mZnNldCkp
IHsKKyAgICAgICAgb2Zmc2V0ID0gMDsKKyAgICAgIH0KKworICAgICAgcmV0dXJuIG9mZnNldDsK
KyAgICB9CisKKyAgICBmdW5jdGlvbiBzY3JvbGxUbyhlbGVtKSB7CisgICAgICBpZiAoZWxlbSkg
eworICAgICAgICBlbGVtLnNjcm9sbEludG9WaWV3KCk7CisKKyAgICAgICAgdmFyIG9mZnNldCA9
IGdldFlPZmZzZXQoKTsKKworICAgICAgICBpZiAob2Zmc2V0KSB7CisgICAgICAgICAgLy8gYG9m
ZnNldGAgaXMgdGhlIG51bWJlciBvZiBwaXhlbHMgd2Ugc2hvdWxkIHNjcm9sbCBVUCBpbiBvcmRl
ciB0byBhbGlnbiBgZWxlbWAgcHJvcGVybHkuCisgICAgICAgICAgLy8gVGhpcyBpcyB0cnVlIE9O
TFkgaWYgdGhlIGNhbGwgdG8gYGVsZW0uc2Nyb2xsSW50b1ZpZXcoKWAgaW5pdGlhbGx5IGFsaWdu
cyBgZWxlbWAgYXQgdGhlCisgICAgICAgICAgLy8gdG9wIG9mIHRoZSB2aWV3cG9ydC4KKyAgICAg
ICAgICAvLworICAgICAgICAgIC8vIElGIHRoZSBudW1iZXIgb2YgcGl4ZWxzIGZyb20gdGhlIHRv
cCBvZiBgZWxlbWAgdG8gdGhlIGVuZCBvZiB0aGUgcGFnZSdzIGNvbnRlbnQgaXMgbGVzcworICAg
ICAgICAgIC8vIHRoYW4gdGhlIGhlaWdodCBvZiB0aGUgdmlld3BvcnQsIHRoZW4gYGVsZW0uc2Ny
b2xsSW50b1ZpZXcoKWAgd2lsbCBhbGlnbiB0aGUgYGVsZW1gIHNvbWUKKyAgICAgICAgICAvLyB3
YXkgZG93biB0aGUgcGFnZS4KKyAgICAgICAgICAvLworICAgICAgICAgIC8vIFRoaXMgaXMgb2Z0
ZW4gdGhlIGNhc2UgZm9yIGVsZW1lbnRzIG5lYXIgdGhlIGJvdHRvbSBvZiB0aGUgcGFnZS4KKyAg
ICAgICAgICAvLworICAgICAgICAgIC8vIEluIHN1Y2ggY2FzZXMgd2UgZG8gbm90IG5lZWQgdG8g
c2Nyb2xsIHRoZSB3aG9sZSBgb2Zmc2V0YCB1cCwganVzdCB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVu
CisgICAgICAgICAgLy8gdGhlIHRvcCBvZiB0aGUgZWxlbWVudCBhbmQgdGhlIG9mZnNldCwgd2hp
Y2ggaXMgZW5vdWdoIHRvIGFsaWduIHRoZSB0b3Agb2YgYGVsZW1gIGF0IHRoZQorICAgICAgICAg
IC8vIGRlc2lyZWQgcG9zaXRpb24uCisgICAgICAgICAgdmFyIGVsZW1Ub3AgPSBlbGVtLmdldEJv
dW5kaW5nQ2xpZW50UmVjdCgpLnRvcDsKKyAgICAgICAgICAkd2luZG93LnNjcm9sbEJ5KDAsIGVs
ZW1Ub3AgLSBvZmZzZXQpOworICAgICAgICB9CisgICAgICB9IGVsc2UgeworICAgICAgICAkd2lu
ZG93LnNjcm9sbFRvKDAsIDApOworICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIHNjcm9s
bChoYXNoKSB7CisgICAgICBoYXNoID0gaXNTdHJpbmcoaGFzaCkgPyBoYXNoIDogJGxvY2F0aW9u
Lmhhc2goKTsKKyAgICAgIHZhciBlbG07CisKKyAgICAgIC8vIGVtcHR5IGhhc2gsIHNjcm9sbCB0
byB0aGUgdG9wIG9mIHRoZSBwYWdlCisgICAgICBpZiAoIWhhc2gpIHNjcm9sbFRvKG51bGwpOwor
CisgICAgICAvLyBlbGVtZW50IHdpdGggZ2l2ZW4gaWQKKyAgICAgIGVsc2UgaWYgKChlbG0gPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZChoYXNoKSkpIHNjcm9sbFRvKGVsbSk7CisKKyAgICAgIC8v
IGZpcnN0IGFuY2hvciB3aXRoIGdpdmVuIG5hbWUgOi1ECisgICAgICBlbHNlIGlmICgoZWxtID0g
Z2V0Rmlyc3RBbmNob3IoZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoaGFzaCkpKSkgc2Nyb2xs
VG8oZWxtKTsKKworICAgICAgLy8gbm8gZWxlbWVudCBhbmQgaGFzaCA9PSAndG9wJywgc2Nyb2xs
IHRvIHRoZSB0b3Agb2YgdGhlIHBhZ2UKKyAgICAgIGVsc2UgaWYgKGhhc2ggPT09ICd0b3AnKSBz
Y3JvbGxUbyhudWxsKTsKKyAgICB9CisKKyAgICAvLyBkb2VzIG5vdCBzY3JvbGwgd2hlbiB1c2Vy
IGNsaWNrcyBvbiBhbmNob3IgbGluayB0aGF0IGlzIGN1cnJlbnRseSBvbgorICAgIC8vIChubyB1
cmwgY2hhbmdlLCBubyAkbG9jYXRpb24uaGFzaCgpIGNoYW5nZSksIGJyb3dzZXIgbmF0aXZlIGRv
ZXMgc2Nyb2xsCisgICAgaWYgKGF1dG9TY3JvbGxpbmdFbmFibGVkKSB7CisgICAgICAkcm9vdFNj
b3BlLiR3YXRjaChmdW5jdGlvbiBhdXRvU2Nyb2xsV2F0Y2goKSB7cmV0dXJuICRsb2NhdGlvbi5o
YXNoKCk7fSwKKyAgICAgICAgZnVuY3Rpb24gYXV0b1Njcm9sbFdhdGNoQWN0aW9uKG5ld1ZhbCwg
b2xkVmFsKSB7CisgICAgICAgICAgLy8gc2tpcCB0aGUgaW5pdGlhbCBzY3JvbGwgaWYgJGxvY2F0
aW9uLmhhc2ggaXMgZW1wdHkKKyAgICAgICAgICBpZiAobmV3VmFsID09PSBvbGRWYWwgJiYgbmV3
VmFsID09PSAnJykgcmV0dXJuOworCisgICAgICAgICAganFMaXRlRG9jdW1lbnRMb2FkZWQoZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICAkcm9vdFNjb3BlLiRldmFsQXN5bmMoc2Nyb2xsKTsKKyAg
ICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgcmV0dXJuIHNjcm9sbDsKKyAg
fV07Cit9CisKK3ZhciAkYW5pbWF0ZU1pbkVyciA9IG1pbkVycignJGFuaW1hdGUnKTsKK3ZhciBF
TEVNRU5UX05PREUgPSAxOwordmFyIE5HX0FOSU1BVEVfQ0xBU1NOQU1FID0gJ25nLWFuaW1hdGUn
OworCitmdW5jdGlvbiBtZXJnZUNsYXNzZXMoYSxiKSB7CisgIGlmICghYSAmJiAhYikgcmV0dXJu
ICcnOworICBpZiAoIWEpIHJldHVybiBiOworICBpZiAoIWIpIHJldHVybiBhOworICBpZiAoaXNB
cnJheShhKSkgYSA9IGEuam9pbignICcpOworICBpZiAoaXNBcnJheShiKSkgYiA9IGIuam9pbign
ICcpOworICByZXR1cm4gYSArICcgJyArIGI7Cit9CisKK2Z1bmN0aW9uIGV4dHJhY3RFbGVtZW50
Tm9kZShlbGVtZW50KSB7CisgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlbWVudC5sZW5ndGg7IGkr
KykgeworICAgIHZhciBlbG0gPSBlbGVtZW50W2ldOworICAgIGlmIChlbG0ubm9kZVR5cGUgPT09
IEVMRU1FTlRfTk9ERSkgeworICAgICAgcmV0dXJuIGVsbTsKKyAgICB9CisgIH0KK30KKworZnVu
Y3Rpb24gc3BsaXRDbGFzc2VzKGNsYXNzZXMpIHsKKyAgaWYgKGlzU3RyaW5nKGNsYXNzZXMpKSB7
CisgICAgY2xhc3NlcyA9IGNsYXNzZXMuc3BsaXQoJyAnKTsKKyAgfQorCisgIC8vIFVzZSBjcmVh
dGVNYXAoKSB0byBwcmV2ZW50IGNsYXNzIGFzc3VtcHRpb25zIGludm9sdmluZyBwcm9wZXJ0eSBu
YW1lcyBpbgorICAvLyBPYmplY3QucHJvdG90eXBlCisgIHZhciBvYmogPSBjcmVhdGVNYXAoKTsK
KyAgZm9yRWFjaChjbGFzc2VzLCBmdW5jdGlvbihrbGFzcykgeworICAgIC8vIHNvbWV0aW1lcyB0
aGUgc3BsaXQgbGVhdmVzIGVtcHR5IHN0cmluZyB2YWx1ZXMKKyAgICAvLyBpbmNhc2UgZXh0cmEg
c3BhY2VzIHdlcmUgYXBwbGllZCB0byB0aGUgb3B0aW9ucworICAgIGlmIChrbGFzcy5sZW5ndGgp
IHsKKyAgICAgIG9ialtrbGFzc10gPSB0cnVlOworICAgIH0KKyAgfSk7CisgIHJldHVybiBvYmo7
Cit9CisKKy8vIGlmIGFueSBvdGhlciB0eXBlIG9mIG9wdGlvbnMgdmFsdWUgYmVzaWRlcyBhbiBP
YmplY3QgdmFsdWUgaXMKKy8vIHBhc3NlZCBpbnRvIHRoZSAkYW5pbWF0ZS5tZXRob2QoKSBhbmlt
YXRpb24gdGhlbiB0aGlzIGhlbHBlciBjb2RlCisvLyB3aWxsIGJlIHJ1biB3aGljaCB3aWxsIGln
bm9yZSBpdC4gV2hpbGUgdGhpcyBwYXRjaCBpcyBub3QgdGhlCisvLyBncmVhdGVzdCBzb2x1dGlv
biB0byB0aGlzLCBhIGxvdCBvZiBleGlzdGluZyBwbHVnaW5zIGRlcGVuZCBvbgorLy8gJGFuaW1h
dGUgdG8gZWl0aGVyIGNhbGwgdGhlIGNhbGxiYWNrICg8IDEuMikgb3IgcmV0dXJuIGEgcHJvbWlz
ZQorLy8gdGhhdCBjYW4gYmUgY2hhbmdlZC4gVGhpcyBoZWxwZXIgZnVuY3Rpb24gZW5zdXJlcyB0
aGF0IHRoZSBvcHRpb25zCisvLyBhcmUgd2lwZWQgY2xlYW4gaW5jYXNlIGEgY2FsbGJhY2sgZnVu
Y3Rpb24gaXMgcHJvdmlkZWQuCitmdW5jdGlvbiBwcmVwYXJlQW5pbWF0ZU9wdGlvbnMob3B0aW9u
cykgeworICByZXR1cm4gaXNPYmplY3Qob3B0aW9ucykKKyAgICAgID8gb3B0aW9ucworICAgICAg
OiB7fTsKK30KKwordmFyICQkQ29yZUFuaW1hdGVSdW5uZXJQcm92aWRlciA9IGZ1bmN0aW9uKCkg
eworICB0aGlzLiRnZXQgPSBbJyRxJywgJyQkckFGJywgZnVuY3Rpb24oJHEsICQkckFGKSB7Cisg
ICAgZnVuY3Rpb24gQW5pbWF0ZVJ1bm5lcigpIHt9CisgICAgQW5pbWF0ZVJ1bm5lci5hbGwgPSBu
b29wOworICAgIEFuaW1hdGVSdW5uZXIuY2hhaW4gPSBub29wOworICAgIEFuaW1hdGVSdW5uZXIu
cHJvdG90eXBlID0geworICAgICAgZW5kOiBub29wLAorICAgICAgY2FuY2VsOiBub29wLAorICAg
ICAgcmVzdW1lOiBub29wLAorICAgICAgcGF1c2U6IG5vb3AsCisgICAgICBjb21wbGV0ZTogbm9v
cCwKKyAgICAgIHRoZW46IGZ1bmN0aW9uKHBhc3MsIGZhaWwpIHsKKyAgICAgICAgcmV0dXJuICRx
KGZ1bmN0aW9uKHJlc29sdmUpIHsKKyAgICAgICAgICAkJHJBRihmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICB9KTsKKyAgICAgICAgfSkudGhlbihwYXNzLCBm
YWlsKTsKKyAgICAgIH0KKyAgICB9OworICAgIHJldHVybiBBbmltYXRlUnVubmVyOworICB9XTsK
K307CisKKy8vIHRoaXMgaXMgcHJlZml4ZWQgd2l0aCBDb3JlIHNpbmNlIGl0IGNvbmZsaWN0cyB3
aXRoCisvLyB0aGUgYW5pbWF0ZVF1ZXVlUHJvdmlkZXIgZGVmaW5lZCBpbiBuZ0FuaW1hdGUvYW5p
bWF0ZVF1ZXVlLmpzCit2YXIgJCRDb3JlQW5pbWF0ZVF1ZXVlUHJvdmlkZXIgPSBmdW5jdGlvbigp
IHsKKyAgdmFyIHBvc3REaWdlc3RRdWV1ZSA9IG5ldyBIYXNoTWFwKCk7CisgIHZhciBwb3N0RGln
ZXN0RWxlbWVudHMgPSBbXTsKKworICB0aGlzLiRnZXQgPSBbJyQkQW5pbWF0ZVJ1bm5lcicsICck
cm9vdFNjb3BlJywKKyAgICAgICBmdW5jdGlvbigkJEFuaW1hdGVSdW5uZXIsICAgJHJvb3RTY29w
ZSkgeworICAgIHJldHVybiB7CisgICAgICBlbmFibGVkOiBub29wLAorICAgICAgb246IG5vb3As
CisgICAgICBvZmY6IG5vb3AsCisgICAgICBwaW46IG5vb3AsCisKKyAgICAgIHB1c2g6IGZ1bmN0
aW9uKGVsZW1lbnQsIGV2ZW50LCBvcHRpb25zLCBkb21PcGVyYXRpb24pIHsKKyAgICAgICAgZG9t
T3BlcmF0aW9uICAgICAgICAmJiBkb21PcGVyYXRpb24oKTsKKworICAgICAgICBvcHRpb25zID0g
b3B0aW9ucyB8fCB7fTsKKyAgICAgICAgb3B0aW9ucy5mcm9tICAgICAgICAmJiBlbGVtZW50LmNz
cyhvcHRpb25zLmZyb20pOworICAgICAgICBvcHRpb25zLnRvICAgICAgICAgICYmIGVsZW1lbnQu
Y3NzKG9wdGlvbnMudG8pOworCisgICAgICAgIGlmIChvcHRpb25zLmFkZENsYXNzIHx8IG9wdGlv
bnMucmVtb3ZlQ2xhc3MpIHsKKyAgICAgICAgICBhZGRSZW1vdmVDbGFzc2VzUG9zdERpZ2VzdChl
bGVtZW50LCBvcHRpb25zLmFkZENsYXNzLCBvcHRpb25zLnJlbW92ZUNsYXNzKTsKKyAgICAgICAg
fQorCisgICAgICAgIHJldHVybiBuZXcgJCRBbmltYXRlUnVubmVyKCk7IC8vIGpzaGludCBpZ25v
cmU6bGluZQorICAgICAgfQorICAgIH07CisKKyAgICBmdW5jdGlvbiBhZGRSZW1vdmVDbGFzc2Vz
UG9zdERpZ2VzdChlbGVtZW50LCBhZGQsIHJlbW92ZSkgeworICAgICAgdmFyIGRhdGEgPSBwb3N0
RGlnZXN0UXVldWUuZ2V0KGVsZW1lbnQpOworICAgICAgdmFyIGNsYXNzVmFsOworCisgICAgICBp
ZiAoIWRhdGEpIHsKKyAgICAgICAgcG9zdERpZ2VzdFF1ZXVlLnB1dChlbGVtZW50LCBkYXRhID0g
e30pOworICAgICAgICBwb3N0RGlnZXN0RWxlbWVudHMucHVzaChlbGVtZW50KTsKKyAgICAgIH0K
KworICAgICAgaWYgKGFkZCkgeworICAgICAgICBmb3JFYWNoKGFkZC5zcGxpdCgnICcpLCBmdW5j
dGlvbihjbGFzc05hbWUpIHsKKyAgICAgICAgICBpZiAoY2xhc3NOYW1lKSB7CisgICAgICAgICAg
ICBkYXRhW2NsYXNzTmFtZV0gPSB0cnVlOworICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAg
ICB9CisKKyAgICAgIGlmIChyZW1vdmUpIHsKKyAgICAgICAgZm9yRWFjaChyZW1vdmUuc3BsaXQo
JyAnKSwgZnVuY3Rpb24oY2xhc3NOYW1lKSB7CisgICAgICAgICAgaWYgKGNsYXNzTmFtZSkgewor
ICAgICAgICAgICAgZGF0YVtjbGFzc05hbWVdID0gZmFsc2U7CisgICAgICAgICAgfQorICAgICAg
ICB9KTsKKyAgICAgIH0KKworICAgICAgaWYgKHBvc3REaWdlc3RFbGVtZW50cy5sZW5ndGggPiAx
KSByZXR1cm47CisKKyAgICAgICRyb290U2NvcGUuJCRwb3N0RGlnZXN0KGZ1bmN0aW9uKCkgewor
ICAgICAgICBmb3JFYWNoKHBvc3REaWdlc3RFbGVtZW50cywgZnVuY3Rpb24oZWxlbWVudCkgewor
ICAgICAgICAgIHZhciBkYXRhID0gcG9zdERpZ2VzdFF1ZXVlLmdldChlbGVtZW50KTsKKyAgICAg
ICAgICBpZiAoZGF0YSkgeworICAgICAgICAgICAgdmFyIGV4aXN0aW5nID0gc3BsaXRDbGFzc2Vz
KGVsZW1lbnQuYXR0cignY2xhc3MnKSk7CisgICAgICAgICAgICB2YXIgdG9BZGQgPSAnJzsKKyAg
ICAgICAgICAgIHZhciB0b1JlbW92ZSA9ICcnOworICAgICAgICAgICAgZm9yRWFjaChkYXRhLCBm
dW5jdGlvbihzdGF0dXMsIGNsYXNzTmFtZSkgeworICAgICAgICAgICAgICB2YXIgaGFzQ2xhc3Mg
PSAhIWV4aXN0aW5nW2NsYXNzTmFtZV07CisgICAgICAgICAgICAgIGlmIChzdGF0dXMgIT09IGhh
c0NsYXNzKSB7CisgICAgICAgICAgICAgICAgaWYgKHN0YXR1cykgeworICAgICAgICAgICAgICAg
ICAgdG9BZGQgKz0gKHRvQWRkLmxlbmd0aCA/ICcgJyA6ICcnKSArIGNsYXNzTmFtZTsKKyAgICAg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgdG9SZW1vdmUgKz0gKHRvUmVt
b3ZlLmxlbmd0aCA/ICcgJyA6ICcnKSArIGNsYXNzTmFtZTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBmb3JFYWNoKGVs
ZW1lbnQsIGZ1bmN0aW9uKGVsbSkgeworICAgICAgICAgICAgICB0b0FkZCAgICAmJiBqcUxpdGVB
ZGRDbGFzcyhlbG0sIHRvQWRkKTsKKyAgICAgICAgICAgICAgdG9SZW1vdmUgJiYganFMaXRlUmVt
b3ZlQ2xhc3MoZWxtLCB0b1JlbW92ZSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHBv
c3REaWdlc3RRdWV1ZS5yZW1vdmUoZWxlbWVudCk7CisgICAgICAgICAgfQorICAgICAgICB9KTsK
KworICAgICAgICBwb3N0RGlnZXN0RWxlbWVudHMubGVuZ3RoID0gMDsKKyAgICAgIH0pOworICAg
IH0KKyAgfV07Cit9OworCisvKioKKyAqIEBuZ2RvYyBwcm92aWRlcgorICogQG5hbWUgJGFuaW1h
dGVQcm92aWRlcgorICoKKyAqIEBkZXNjcmlwdGlvbgorICogRGVmYXVsdCBpbXBsZW1lbnRhdGlv
biBvZiAkYW5pbWF0ZSB0aGF0IGRvZXNuJ3QgcGVyZm9ybSBhbnkgYW5pbWF0aW9ucywgaW5zdGVh
ZCBqdXN0CisgKiBzeW5jaHJvbm91c2x5IHBlcmZvcm1zIERPTSB1cGRhdGVzIGFuZCByZXNvbHZl
cyB0aGUgcmV0dXJuZWQgcnVubmVyIHByb21pc2UuCisgKgorICogSW4gb3JkZXIgdG8gZW5hYmxl
IGFuaW1hdGlvbnMgdGhlIGBuZ0FuaW1hdGVgIG1vZHVsZSBoYXMgdG8gYmUgbG9hZGVkLgorICoK
KyAqIFRvIHNlZSB0aGUgZnVuY3Rpb25hbCBpbXBsZW1lbnRhdGlvbiBjaGVjayBvdXQgYHNyYy9u
Z0FuaW1hdGUvYW5pbWF0ZS5qc2AuCisgKi8KK3ZhciAkQW5pbWF0ZVByb3ZpZGVyID0gWyckcHJv
dmlkZScsIGZ1bmN0aW9uKCRwcm92aWRlKSB7CisgIHZhciBwcm92aWRlciA9IHRoaXM7CisKKyAg
dGhpcy4kJHJlZ2lzdGVyZWRBbmltYXRpb25zID0gT2JqZWN0LmNyZWF0ZShudWxsKTsKKworICAg
LyoqCisgICAqIEBuZ2RvYyBtZXRob2QKKyAgICogQG5hbWUgJGFuaW1hdGVQcm92aWRlciNyZWdp
c3RlcgorICAgKgorICAgKiBAZGVzY3JpcHRpb24KKyAgICogUmVnaXN0ZXJzIGEgbmV3IGluamVj
dGFibGUgYW5pbWF0aW9uIGZhY3RvcnkgZnVuY3Rpb24uIFRoZSBmYWN0b3J5IGZ1bmN0aW9uIHBy
b2R1Y2VzIHRoZQorICAgKiBhbmltYXRpb24gb2JqZWN0IHdoaWNoIGNvbnRhaW5zIGNhbGxiYWNr
IGZ1bmN0aW9ucyBmb3IgZWFjaCBldmVudCB0aGF0IGlzIGV4cGVjdGVkIHRvIGJlCisgICAqIGFu
aW1hdGVkLgorICAgKgorICAgKiAgICogYGV2ZW50Rm5gOiBgZnVuY3Rpb24oZWxlbWVudCwgLi4u
ICwgZG9uZUZ1bmN0aW9uLCBvcHRpb25zKWAKKyAgICogICBUaGUgZWxlbWVudCB0byBhbmltYXRl
LCB0aGUgYGRvbmVGdW5jdGlvbmAgYW5kIHRoZSBvcHRpb25zIGZlZCBpbnRvIHRoZSBhbmltYXRp
b24uIERlcGVuZGluZworICAgKiAgIG9uIHRoZSB0eXBlIG9mIGFuaW1hdGlvbiBhZGRpdGlvbmFs
IGFyZ3VtZW50cyB3aWxsIGJlIGluamVjdGVkIGludG8gdGhlIGFuaW1hdGlvbiBmdW5jdGlvbi4g
VGhlCisgICAqICAgbGlzdCBiZWxvdyBleHBsYWlucyB0aGUgZnVuY3Rpb24gc2lnbmF0dXJlcyBm
b3IgdGhlIGRpZmZlcmVudCBhbmltYXRpb24gbWV0aG9kczoKKyAgICoKKyAgICogICAtIHNldENs
YXNzOiBmdW5jdGlvbihlbGVtZW50LCBhZGRlZENsYXNzZXMsIHJlbW92ZWRDbGFzc2VzLCBkb25l
RnVuY3Rpb24sIG9wdGlvbnMpCisgICAqICAgLSBhZGRDbGFzczogZnVuY3Rpb24oZWxlbWVudCwg
YWRkZWRDbGFzc2VzLCBkb25lRnVuY3Rpb24sIG9wdGlvbnMpCisgICAqICAgLSByZW1vdmVDbGFz
czogZnVuY3Rpb24oZWxlbWVudCwgcmVtb3ZlZENsYXNzZXMsIGRvbmVGdW5jdGlvbiwgb3B0aW9u
cykKKyAgICogICAtIGVudGVyLCBsZWF2ZSwgbW92ZTogZnVuY3Rpb24oZWxlbWVudCwgZG9uZUZ1
bmN0aW9uLCBvcHRpb25zKQorICAgKiAgIC0gYW5pbWF0ZTogZnVuY3Rpb24oZWxlbWVudCwgZnJv
bVN0eWxlcywgdG9TdHlsZXMsIGRvbmVGdW5jdGlvbiwgb3B0aW9ucykKKyAgICoKKyAgICogICBN
YWtlIHN1cmUgdG8gdHJpZ2dlciB0aGUgYGRvbmVGdW5jdGlvbmAgb25jZSB0aGUgYW5pbWF0aW9u
IGlzIGZ1bGx5IGNvbXBsZXRlLgorICAgKgorICAgKiBgYGBqcworICAgKiAgIHJldHVybiB7Cisg
ICAqICAgICAvL2VudGVyLCBsZWF2ZSwgbW92ZSBzaWduYXR1cmUKKyAgICogICAgIGV2ZW50Rm4g
OiBmdW5jdGlvbihlbGVtZW50LCBkb25lLCBvcHRpb25zKSB7CisgICAqICAgICAgIC8vY29kZSB0
byBydW4gdGhlIGFuaW1hdGlvbgorICAgKiAgICAgICAvL29uY2UgY29tcGxldGUsIHRoZW4gcnVu
IGRvbmUoKQorICAgKiAgICAgICByZXR1cm4gZnVuY3Rpb24gZW5kRnVuY3Rpb24od2FzQ2FuY2Vs
bGVkKSB7CisgICAqICAgICAgICAgLy9jb2RlIHRvIGNhbmNlbCB0aGUgYW5pbWF0aW9uCisgICAq
ICAgICAgIH0KKyAgICogICAgIH0KKyAgICogICB9CisgICAqIGBgYAorICAgKgorICAgKiBAcGFy
YW0ge3N0cmluZ30gbmFtZSBUaGUgbmFtZSBvZiB0aGUgYW5pbWF0aW9uICh0aGlzIGlzIHdoYXQg
dGhlIGNsYXNzLWJhc2VkIENTUyB2YWx1ZSB3aWxsIGJlIGNvbXBhcmVkIHRvKS4KKyAgICogQHBh
cmFtIHtGdW5jdGlvbn0gZmFjdG9yeSBUaGUgZmFjdG9yeSBmdW5jdGlvbiB0aGF0IHdpbGwgYmUg
ZXhlY3V0ZWQgdG8gcmV0dXJuIHRoZSBhbmltYXRpb24KKyAgICogICAgICAgICAgICAgICAgICAg
ICAgICAgICBvYmplY3QuCisgICAqLworICB0aGlzLnJlZ2lzdGVyID0gZnVuY3Rpb24obmFtZSwg
ZmFjdG9yeSkgeworICAgIGlmIChuYW1lICYmIG5hbWUuY2hhckF0KDApICE9PSAnLicpIHsKKyAg
ICAgIHRocm93ICRhbmltYXRlTWluRXJyKCdub3Rjc2VsJywgIkV4cGVjdGluZyBjbGFzcyBzZWxl
Y3RvciBzdGFydGluZyB3aXRoICcuJyBnb3QgJ3swfScuIiwgbmFtZSk7CisgICAgfQorCisgICAg
dmFyIGtleSA9IG5hbWUgKyAnLWFuaW1hdGlvbic7CisgICAgcHJvdmlkZXIuJCRyZWdpc3RlcmVk
QW5pbWF0aW9uc1tuYW1lLnN1YnN0cigxKV0gPSBrZXk7CisgICAgJHByb3ZpZGUuZmFjdG9yeShr
ZXksIGZhY3RvcnkpOworICB9OworCisgIC8qKgorICAgKiBAbmdkb2MgbWV0aG9kCisgICAqIEBu
YW1lICRhbmltYXRlUHJvdmlkZXIjY2xhc3NOYW1lRmlsdGVyCisgICAqCisgICAqIEBkZXNjcmlw
dGlvbgorICAgKiBTZXRzIGFuZC9vciByZXR1cm5zIHRoZSBDU1MgY2xhc3MgcmVndWxhciBleHBy
ZXNzaW9uIHRoYXQgaXMgY2hlY2tlZCB3aGVuIHBlcmZvcm1pbmcKKyAgICogYW4gYW5pbWF0aW9u
LiBVcG9uIGJvb3RzdHJhcCB0aGUgY2xhc3NOYW1lRmlsdGVyIHZhbHVlIGlzIG5vdCBzZXQgYXQg
YWxsIGFuZCB3aWxsCisgICAqIHRoZXJlZm9yZSBlbmFibGUgJGFuaW1hdGUgdG8gYXR0ZW1wdCB0
byBwZXJmb3JtIGFuIGFuaW1hdGlvbiBvbiBhbnkgZWxlbWVudCB0aGF0IGlzIHRyaWdnZXJlZC4K
KyAgICogV2hlbiBzZXR0aW5nIHRoZSBgY2xhc3NOYW1lRmlsdGVyYCB2YWx1ZSwgYW5pbWF0aW9u
cyB3aWxsIG9ubHkgYmUgcGVyZm9ybWVkIG9uIGVsZW1lbnRzCisgICAqIHRoYXQgc3VjY2Vzc2Z1
bGx5IG1hdGNoIHRoZSBmaWx0ZXIgZXhwcmVzc2lvbi4gVGhpcyBpbiB0dXJuIGNhbiBib29zdCBw
ZXJmb3JtYW5jZQorICAgKiBmb3IgbG93LXBvd2VyZWQgZGV2aWNlcyBhcyB3ZWxsIGFzIGFwcGxp
Y2F0aW9ucyBjb250YWluaW5nIGEgbG90IG9mIHN0cnVjdHVyYWwgb3BlcmF0aW9ucy4KKyAgICog
QHBhcmFtIHtSZWdFeHA9fSBleHByZXNzaW9uIFRoZSBjbGFzc05hbWUgZXhwcmVzc2lvbiB3aGlj
aCB3aWxsIGJlIGNoZWNrZWQgYWdhaW5zdCBhbGwgYW5pbWF0aW9ucworICAgKiBAcmV0dXJuIHtS
ZWdFeHB9IFRoZSBjdXJyZW50IENTUyBjbGFzc05hbWUgZXhwcmVzc2lvbiB2YWx1ZS4gSWYgbnVs
bCB0aGVuIHRoZXJlIGlzIG5vIGV4cHJlc3Npb24gdmFsdWUKKyAgICovCisgIHRoaXMuY2xhc3NO
YW1lRmlsdGVyID0gZnVuY3Rpb24oZXhwcmVzc2lvbikgeworICAgIGlmIChhcmd1bWVudHMubGVu
Z3RoID09PSAxKSB7CisgICAgICB0aGlzLiQkY2xhc3NOYW1lRmlsdGVyID0gKGV4cHJlc3Npb24g
aW5zdGFuY2VvZiBSZWdFeHApID8gZXhwcmVzc2lvbiA6IG51bGw7CisgICAgICBpZiAodGhpcy4k
JGNsYXNzTmFtZUZpbHRlcikgeworICAgICAgICB2YXIgcmVzZXJ2ZWRSZWdleCA9IG5ldyBSZWdF
eHAoIihcXHMrfFxcLykiICsgTkdfQU5JTUFURV9DTEFTU05BTUUgKyAiKFxccyt8XFwvKSIpOwor
ICAgICAgICBpZiAocmVzZXJ2ZWRSZWdleC50ZXN0KHRoaXMuJCRjbGFzc05hbWVGaWx0ZXIudG9T
dHJpbmcoKSkpIHsKKyAgICAgICAgICB0aHJvdyAkYW5pbWF0ZU1pbkVycignbm9uZ2NscycsJyRh
bmltYXRlUHJvdmlkZXIuY2xhc3NOYW1lRmlsdGVyKHJlZ2V4KSBwcm9oaWJpdHMgYWNjZXB0aW5n
IGEgcmVnZXggdmFsdWUgd2hpY2ggbWF0Y2hlcy9jb250YWlucyB0aGUgInswfSIgQ1NTIGNsYXNz
LicsIE5HX0FOSU1BVEVfQ0xBU1NOQU1FKTsKKworICAgICAgICB9CisgICAgICB9CisgICAgfQor
ICAgIHJldHVybiB0aGlzLiQkY2xhc3NOYW1lRmlsdGVyOworICB9OworCisgIHRoaXMuJGdldCA9
IFsnJCRhbmltYXRlUXVldWUnLCBmdW5jdGlvbigkJGFuaW1hdGVRdWV1ZSkgeworICAgIGZ1bmN0
aW9uIGRvbUluc2VydChlbGVtZW50LCBwYXJlbnRFbGVtZW50LCBhZnRlckVsZW1lbnQpIHsKKyAg
ICAgIC8vIGlmIGZvciBzb21lIHJlYXNvbiB0aGUgcHJldmlvdXMgZWxlbWVudCB3YXMgcmVtb3Zl
ZAorICAgICAgLy8gZnJvbSB0aGUgZG9tIHNvbWV0aW1lIGJlZm9yZSB0aGlzIGNvZGUgcnVucyB0
aGVuIGxldCdzCisgICAgICAvLyBqdXN0IHN0aWNrIHRvIHVzaW5nIHRoZSBwYXJlbnQgZWxlbWVu
dCBhcyB0aGUgYW5jaG9yCisgICAgICBpZiAoYWZ0ZXJFbGVtZW50KSB7CisgICAgICAgIHZhciBh
ZnRlck5vZGUgPSBleHRyYWN0RWxlbWVudE5vZGUoYWZ0ZXJFbGVtZW50KTsKKyAgICAgICAgaWYg
KGFmdGVyTm9kZSAmJiAhYWZ0ZXJOb2RlLnBhcmVudE5vZGUgJiYgIWFmdGVyTm9kZS5wcmV2aW91
c0VsZW1lbnRTaWJsaW5nKSB7CisgICAgICAgICAgYWZ0ZXJFbGVtZW50ID0gbnVsbDsKKyAgICAg
ICAgfQorICAgICAgfQorICAgICAgYWZ0ZXJFbGVtZW50ID8gYWZ0ZXJFbGVtZW50LmFmdGVyKGVs
ZW1lbnQpIDogcGFyZW50RWxlbWVudC5wcmVwZW5kKGVsZW1lbnQpOworICAgIH0KKworICAgIC8q
KgorICAgICAqIEBuZ2RvYyBzZXJ2aWNlCisgICAgICogQG5hbWUgJGFuaW1hdGUKKyAgICAgKiBA
ZGVzY3JpcHRpb24gVGhlICRhbmltYXRlIHNlcnZpY2UgZXhwb3NlcyBhIHNlcmllcyBvZiBET00g
dXRpbGl0eSBtZXRob2RzIHRoYXQgcHJvdmlkZSBzdXBwb3J0CisgICAgICogZm9yIGFuaW1hdGlv
biBob29rcy4gVGhlIGRlZmF1bHQgYmVoYXZpb3IgaXMgdGhlIGFwcGxpY2F0aW9uIG9mIERPTSBv
cGVyYXRpb25zLCBob3dldmVyLAorICAgICAqIHdoZW4gYW4gYW5pbWF0aW9uIGlzIGRldGVjdGVk
IChhbmQgYW5pbWF0aW9ucyBhcmUgZW5hYmxlZCksICRhbmltYXRlIHdpbGwgZG8gdGhlIGhlYXZ5
IGxpZnRpbmcKKyAgICAgKiB0byBlbnN1cmUgdGhhdCBhbmltYXRpb24gcnVucyB3aXRoIHRoZSB0
cmlnZ2VyZWQgRE9NIG9wZXJhdGlvbi4KKyAgICAgKgorICAgICAqIEJ5IGRlZmF1bHQgJGFuaW1h
dGUgZG9lc24ndCB0cmlnZ2VyIGFuIGFuaW1hdGlvbnMuIFRoaXMgaXMgYmVjYXVzZSB0aGUgYG5n
QW5pbWF0ZWAgbW9kdWxlIGlzbid0CisgICAgICogaW5jbHVkZWQgYW5kIG9ubHkgd2hlbiBpdCBp
cyBhY3RpdmUgdGhlbiB0aGUgYW5pbWF0aW9uIGhvb2tzIHRoYXQgYCRhbmltYXRlYCB0cmlnZ2Vy
cyB3aWxsIGJlCisgICAgICogZnVuY3Rpb25hbC4gT25jZSBhY3RpdmUgdGhlbiBhbGwgc3RydWN0
dXJhbCBgbmctYCBkaXJlY3RpdmVzIHdpbGwgdHJpZ2dlciBhbmltYXRpb25zIGFzIHRoZXkgcGVy
Zm9ybQorICAgICAqIHRoZWlyIERPTS1yZWxhdGVkIG9wZXJhdGlvbnMgKGVudGVyLCBsZWF2ZSBh
bmQgbW92ZSkuIE90aGVyIGRpcmVjdGl2ZXMgc3VjaCBhcyBgbmdDbGFzc2AsCisgICAgICogYG5n
U2hvd2AsIGBuZ0hpZGVgIGFuZCBgbmdNZXNzYWdlc2AgYWxzbyBwcm92aWRlIHN1cHBvcnQgZm9y
IGFuaW1hdGlvbnMuCisgICAgICoKKyAgICAgKiBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IHRoZWAk
YW5pbWF0ZWAgc2VydmljZSBpcyBhbHdheXMgdXNlZCB3aGVuIGV4ZWN1dGluZyBET00tcmVsYXRl
ZCBwcm9jZWR1cmVzIHdpdGhpbiBkaXJlY3RpdmVzLgorICAgICAqCisgICAgICogVG8gbGVhcm4g
bW9yZSBhYm91dCBlbmFibGluZyBhbmltYXRpb24gc3VwcG9ydCwgY2xpY2sgaGVyZSB0byB2aXNp
dCB0aGUKKyAgICAgKiB7QGxpbmsgbmdBbmltYXRlIG5nQW5pbWF0ZSBtb2R1bGUgcGFnZX0uCisg
ICAgICovCisgICAgcmV0dXJuIHsKKyAgICAgIC8vIHdlIGRvbid0IGNhbGwgaXQgZGlyZWN0bHkg
c2luY2Ugbm9uLWV4aXN0YW50IGFyZ3VtZW50cyBtYXkKKyAgICAgIC8vIGJlIGludGVycHJldGVk
IGFzIG51bGwgd2l0aGluIHRoZSBzdWIgZW5hYmxlZCBmdW5jdGlvbgorCisgICAgICAvKioKKyAg
ICAgICAqCisgICAgICAgKiBAbmdkb2MgbWV0aG9kCisgICAgICAgKiBAbmFtZSAkYW5pbWF0ZSNv
bgorICAgICAgICogQGtpbmQgZnVuY3Rpb24KKyAgICAgICAqIEBkZXNjcmlwdGlvbiBTZXRzIHVw
IGFuIGV2ZW50IGxpc3RlbmVyIHRvIGZpcmUgd2hlbmV2ZXIgdGhlIGFuaW1hdGlvbiBldmVudCAo
ZW50ZXIsIGxlYXZlLCBtb3ZlLCBldGMuLi4pCisgICAgICAgKiAgICBoYXMgZmlyZWQgb24gdGhl
IGdpdmVuIGVsZW1lbnQgb3IgYW1vbmcgYW55IG9mIGl0cyBjaGlsZHJlbi4gT25jZSB0aGUgbGlz
dGVuZXIgaXMgZmlyZWQsIHRoZSBwcm92aWRlZCBjYWxsYmFjaworICAgICAgICogICAgaXMgZmly
ZWQgd2l0aCB0aGUgZm9sbG93aW5nIHBhcmFtczoKKyAgICAgICAqCisgICAgICAgKiBgYGBqcwor
ICAgICAgICogJGFuaW1hdGUub24oJ2VudGVyJywgY29udGFpbmVyLAorICAgICAgICogICAgZnVu
Y3Rpb24gY2FsbGJhY2soZWxlbWVudCwgcGhhc2UpIHsKKyAgICAgICAqICAgICAgLy8gY29vbCB3
ZSBkZXRlY3RlZCBhbiBlbnRlciBhbmltYXRpb24gd2l0aGluIHRoZSBjb250YWluZXIKKyAgICAg
ICAqICAgIH0KKyAgICAgICAqICk7CisgICAgICAgKiBgYGAKKyAgICAgICAqCisgICAgICAgKiBA
cGFyYW0ge3N0cmluZ30gZXZlbnQgdGhlIGFuaW1hdGlvbiBldmVudCB0aGF0IHdpbGwgYmUgY2Fw
dHVyZWQgKGUuZy4gZW50ZXIsIGxlYXZlLCBtb3ZlLCBhZGRDbGFzcywgcmVtb3ZlQ2xhc3MsIGV0
Yy4uLikKKyAgICAgICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gY29udGFpbmVyIHRoZSBjb250YWlu
ZXIgZWxlbWVudCB0aGF0IHdpbGwgY2FwdHVyZSBlYWNoIG9mIHRoZSBhbmltYXRpb24gZXZlbnRz
IHRoYXQgYXJlIGZpcmVkIG9uIGl0c2VsZgorICAgICAgICogICAgIGFzIHdlbGwgYXMgYW1vbmcg
aXRzIGNoaWxkcmVuCisgICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFjayB0aGUgY2Fs
bGJhY2sgZnVuY3Rpb24gdGhhdCB3aWxsIGJlIGZpcmVkIHdoZW4gdGhlIGxpc3RlbmVyIGlzIHRy
aWdnZXJlZAorICAgICAgICoKKyAgICAgICAqIFRoZSBhcmd1bWVudHMgcHJlc2VudCBpbiB0aGUg
Y2FsbGJhY2sgZnVuY3Rpb24gYXJlOgorICAgICAgICogKiBgZWxlbWVudGAgLSBUaGUgY2FwdHVy
ZWQgRE9NIGVsZW1lbnQgdGhhdCB0aGUgYW5pbWF0aW9uIHdhcyBmaXJlZCBvbi4KKyAgICAgICAq
ICogYHBoYXNlYCAtIFRoZSBwaGFzZSBvZiB0aGUgYW5pbWF0aW9uLiBUaGUgdHdvIHBvc3NpYmxl
IHBoYXNlcyBhcmUgKipzdGFydCoqICh3aGVuIHRoZSBhbmltYXRpb24gc3RhcnRzKSBhbmQgKipj
bG9zZSoqICh3aGVuIGl0IGVuZHMpLgorICAgICAgICovCisgICAgICBvbjogJCRhbmltYXRlUXVl
dWUub24sCisKKyAgICAgIC8qKgorICAgICAgICoKKyAgICAgICAqIEBuZ2RvYyBtZXRob2QKKyAg
ICAgICAqIEBuYW1lICRhbmltYXRlI29mZgorICAgICAgICogQGtpbmQgZnVuY3Rpb24KKyAgICAg
ICAqIEBkZXNjcmlwdGlvbiBEZXJlZ2lzdGVycyBhbiBldmVudCBsaXN0ZW5lciBiYXNlZCBvbiB0
aGUgZXZlbnQgd2hpY2ggaGFzIGJlZW4gYXNzb2NpYXRlZCB3aXRoIHRoZSBwcm92aWRlZCBlbGVt
ZW50LiBUaGlzIG1ldGhvZAorICAgICAgICogY2FuIGJlIHVzZWQgaW4gdGhyZWUgZGlmZmVyZW50
IHdheXMgZGVwZW5kaW5nIG9uIHRoZSBhcmd1bWVudHM6CisgICAgICAgKgorICAgICAgICogYGBg
anMKKyAgICAgICAqIC8vIHJlbW92ZSBhbGwgdGhlIGFuaW1hdGlvbiBldmVudCBsaXN0ZW5lcnMg
bGlzdGVuaW5nIGZvciBgZW50ZXJgCisgICAgICAgKiAkYW5pbWF0ZS5vZmYoJ2VudGVyJyk7Cisg
ICAgICAgKgorICAgICAgICogLy8gcmVtb3ZlIGFsbCB0aGUgYW5pbWF0aW9uIGV2ZW50IGxpc3Rl
bmVycyBsaXN0ZW5pbmcgZm9yIGBlbnRlcmAgb24gdGhlIGdpdmVuIGVsZW1lbnQgYW5kIGl0cyBj
aGlsZHJlbgorICAgICAgICogJGFuaW1hdGUub2ZmKCdlbnRlcicsIGNvbnRhaW5lcik7CisgICAg
ICAgKgorICAgICAgICogLy8gcmVtb3ZlIHRoZSBldmVudCBsaXN0ZW5lciBmdW5jdGlvbiBwcm92
aWRlZCBieSBgbGlzdGVuZXJGbmAgdGhhdCBpcyBzZXQKKyAgICAgICAqIC8vIHRvIGxpc3RlbiBm
b3IgYGVudGVyYCBvbiB0aGUgZ2l2ZW4gYGVsZW1lbnRgIGFzIHdlbGwgYXMgaXRzIGNoaWxkcmVu
CisgICAgICAgKiAkYW5pbWF0ZS5vZmYoJ2VudGVyJywgY29udGFpbmVyLCBjYWxsYmFjayk7Cisg
ICAgICAgKiBgYGAKKyAgICAgICAqCisgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gZXZlbnQgdGhl
IGFuaW1hdGlvbiBldmVudCAoZS5nLiBlbnRlciwgbGVhdmUsIG1vdmUsIGFkZENsYXNzLCByZW1v
dmVDbGFzcywgZXRjLi4uKQorICAgICAgICogQHBhcmFtIHtET01FbGVtZW50PX0gY29udGFpbmVy
IHRoZSBjb250YWluZXIgZWxlbWVudCB0aGUgZXZlbnQgbGlzdGVuZXIgd2FzIHBsYWNlZCBvbgor
ICAgICAgICogQHBhcmFtIHtGdW5jdGlvbj19IGNhbGxiYWNrIHRoZSBjYWxsYmFjayBmdW5jdGlv
biB0aGF0IHdhcyByZWdpc3RlcmVkIGFzIHRoZSBsaXN0ZW5lcgorICAgICAgICovCisgICAgICBv
ZmY6ICQkYW5pbWF0ZVF1ZXVlLm9mZiwKKworICAgICAgLyoqCisgICAgICAgKiBAbmdkb2MgbWV0
aG9kCisgICAgICAgKiBAbmFtZSAkYW5pbWF0ZSNwaW4KKyAgICAgICAqIEBraW5kIGZ1bmN0aW9u
CisgICAgICAgKiBAZGVzY3JpcHRpb24gQXNzb2NpYXRlcyB0aGUgcHJvdmlkZWQgZWxlbWVudCB3
aXRoIGEgaG9zdCBwYXJlbnQgZWxlbWVudCB0byBhbGxvdyB0aGUgZWxlbWVudCB0byBiZSBhbmlt
YXRlZCBldmVuIGlmIGl0IGV4aXN0cworICAgICAgICogICAgb3V0c2lkZSBvZiB0aGUgRE9NIHN0
cnVjdHVyZSBvZiB0aGUgQW5ndWxhciBhcHBsaWNhdGlvbi4gQnkgZG9pbmcgc28sIGFueSBhbmlt
YXRpb24gdHJpZ2dlcmVkIHZpYSBgJGFuaW1hdGVgIGNhbiBiZSBpc3N1ZWQgb24gdGhlCisgICAg
ICAgKiAgICBlbGVtZW50IGRlc3BpdGUgYmVpbmcgb3V0c2lkZSB0aGUgcmVhbG0gb2YgdGhlIGFw
cGxpY2F0aW9uIG9yIHdpdGhpbiBhbm90aGVyIGFwcGxpY2F0aW9uLiBTYXkgZm9yIGV4YW1wbGUg
aWYgdGhlIGFwcGxpY2F0aW9uCisgICAgICAgKiAgICB3YXMgYm9vdHN0cmFwcGVkIG9uIGFuIGVs
ZW1lbnQgdGhhdCBpcyBzb21ld2hlcmUgaW5zaWRlIG9mIHRoZSBgPGJvZHk+YCB0YWcsIGJ1dCB3
ZSB3YW50ZWQgdG8gYWxsb3cgZm9yIGFuIGVsZW1lbnQgdG8gYmUgc2l0dWF0ZWQKKyAgICAgICAq
ICAgIGFzIGEgZGlyZWN0IGNoaWxkIG9mIGBkb2N1bWVudC5ib2R5YCwgdGhlbiB0aGlzIGNhbiBi
ZSBhY2hpZXZlZCBieSBwaW5uaW5nIHRoZSBlbGVtZW50IHZpYSBgJGFuaW1hdGUucGluKGVsZW1l
bnQpYC4gS2VlcCBpbiBtaW5kCisgICAgICAgKiAgICB0aGF0IGNhbGxpbmcgYCRhbmltYXRlLnBp
bihlbGVtZW50LCBwYXJlbnRFbGVtZW50KWAgd2lsbCBub3QgYWN0dWFsbHkgaW5zZXJ0IGludG8g
dGhlIERPTSBhbnl3aGVyZTsgaXQgd2lsbCBqdXN0IGNyZWF0ZSB0aGUgYXNzb2NpYXRpb24uCisg
ICAgICAgKgorICAgICAgICogICAgTm90ZSB0aGF0IHRoaXMgZmVhdHVyZSBpcyBvbmx5IGFjdGl2
ZSB3aGVuIHRoZSBgbmdBbmltYXRlYCBtb2R1bGUgaXMgdXNlZC4KKyAgICAgICAqCisgICAgICAg
KiBAcGFyYW0ge0RPTUVsZW1lbnR9IGVsZW1lbnQgdGhlIGV4dGVybmFsIGVsZW1lbnQgdGhhdCB3
aWxsIGJlIHBpbm5lZAorICAgICAgICogQHBhcmFtIHtET01FbGVtZW50fSBwYXJlbnRFbGVtZW50
IHRoZSBob3N0IHBhcmVudCBlbGVtZW50IHRoYXQgd2lsbCBiZSBhc3NvY2lhdGVkIHdpdGggdGhl
IGV4dGVybmFsIGVsZW1lbnQKKyAgICAgICAqLworICAgICAgcGluOiAkJGFuaW1hdGVRdWV1ZS5w
aW4sCisKKyAgICAgIC8qKgorICAgICAgICoKKyAgICAgICAqIEBuZ2RvYyBtZXRob2QKKyAgICAg
ICAqIEBuYW1lICRhbmltYXRlI2VuYWJsZWQKKyAgICAgICAqIEBraW5kIGZ1bmN0aW9uCisgICAg
ICAgKiBAZGVzY3JpcHRpb24gVXNlZCB0byBnZXQgYW5kIHNldCB3aGV0aGVyIGFuaW1hdGlvbnMg
YXJlIGVuYWJsZWQgb3Igbm90IG9uIHRoZSBlbnRpcmUgYXBwbGljYXRpb24gb3Igb24gYW4gZWxl
bWVudCBhbmQgaXRzIGNoaWxkcmVuLiBUaGlzCisgICAgICAgKiBmdW5jdGlvbiBjYW4gYmUgY2Fs
bGVkIGluIGZvdXIgd2F5czoKKyAgICAgICAqCisgICAgICAgKiBgYGBqcworICAgICAgICogLy8g
cmV0dXJucyB0cnVlIG9yIGZhbHNlCisgICAgICAgKiAkYW5pbWF0ZS5lbmFibGVkKCk7CisgICAg
ICAgKgorICAgICAgICogLy8gY2hhbmdlcyB0aGUgZW5hYmxlZCBzdGF0ZSBmb3IgYWxsIGFuaW1h
dGlvbnMKKyAgICAgICAqICRhbmltYXRlLmVuYWJsZWQoZmFsc2UpOworICAgICAgICogJGFuaW1h
dGUuZW5hYmxlZCh0cnVlKTsKKyAgICAgICAqCisgICAgICAgKiAvLyByZXR1cm5zIHRydWUgb3Ig
ZmFsc2UgaWYgYW5pbWF0aW9ucyBhcmUgZW5hYmxlZCBmb3IgYW4gZWxlbWVudAorICAgICAgICog
JGFuaW1hdGUuZW5hYmxlZChlbGVtZW50KTsKKyAgICAgICAqCisgICAgICAgKiAvLyBjaGFuZ2Vz
IHRoZSBlbmFibGVkIHN0YXRlIGZvciBhbiBlbGVtZW50IGFuZCBpdHMgY2hpbGRyZW4KKyAgICAg
ICAqICRhbmltYXRlLmVuYWJsZWQoZWxlbWVudCwgdHJ1ZSk7CisgICAgICAgKiAkYW5pbWF0ZS5l
bmFibGVkKGVsZW1lbnQsIGZhbHNlKTsKKyAgICAgICAqIGBgYAorICAgICAgICoKKyAgICAgICAq
IEBwYXJhbSB7RE9NRWxlbWVudD19IGVsZW1lbnQgdGhlIGVsZW1lbnQgdGhhdCB3aWxsIGJlIGNv
bnNpZGVyZWQgZm9yIGNoZWNraW5nL3NldHRpbmcgdGhlIGVuYWJsZWQgc3RhdGUKKyAgICAgICAq
IEBwYXJhbSB7Ym9vbGVhbj19IGVuYWJsZWQgd2hldGhlciBvciBub3QgdGhlIGFuaW1hdGlvbnMg
d2lsbCBiZSBlbmFibGVkIGZvciB0aGUgZWxlbWVudAorICAgICAgICoKKyAgICAgICAqIEByZXR1
cm4ge2Jvb2xlYW59IHdoZXRoZXIgb3Igbm90IGFuaW1hdGlvbnMgYXJlIGVuYWJsZWQKKyAgICAg
ICAqLworICAgICAgZW5hYmxlZDogJCRhbmltYXRlUXVldWUuZW5hYmxlZCwKKworICAgICAgLyoq
CisgICAgICAgKiBAbmdkb2MgbWV0aG9kCisgICAgICAgKiBAbmFtZSAkYW5pbWF0ZSNjYW5jZWwK
KyAgICAgICAqIEBraW5kIGZ1bmN0aW9uCisgICAgICAgKiBAZGVzY3JpcHRpb24gQ2FuY2VscyB0
aGUgcHJvdmlkZWQgYW5pbWF0aW9uLgorICAgICAgICoKKyAgICAgICAqIEBwYXJhbSB7UHJvbWlz
ZX0gYW5pbWF0aW9uUHJvbWlzZSBUaGUgYW5pbWF0aW9uIHByb21pc2UgdGhhdCBpcyByZXR1cm5l
ZCB3aGVuIGFuIGFuaW1hdGlvbiBpcyBzdGFydGVkLgorICAgICAgICovCisgICAgICBjYW5jZWw6
IGZ1bmN0aW9uKHJ1bm5lcikgeworICAgICAgICBydW5uZXIuZW5kICYmIHJ1bm5lci5lbmQoKTsK
KyAgICAgIH0sCisKKyAgICAgIC8qKgorICAgICAgICoKKyAgICAgICAqIEBuZ2RvYyBtZXRob2QK
KyAgICAgICAqIEBuYW1lICRhbmltYXRlI2VudGVyCisgICAgICAgKiBAa2luZCBmdW5jdGlvbgor
ICAgICAgICogQGRlc2NyaXB0aW9uIEluc2VydHMgdGhlIGVsZW1lbnQgaW50byB0aGUgRE9NIGVp
dGhlciBhZnRlciB0aGUgYGFmdGVyYCBlbGVtZW50IChpZiBwcm92aWRlZCkgb3IKKyAgICAgICAq
ICAgYXMgdGhlIGZpcnN0IGNoaWxkIHdpdGhpbiB0aGUgYHBhcmVudGAgZWxlbWVudCBhbmQgdGhl
biB0cmlnZ2VycyBhbiBhbmltYXRpb24uCisgICAgICAgKiAgIEEgcHJvbWlzZSBpcyByZXR1cm5l
ZCB0aGF0IHdpbGwgYmUgcmVzb2x2ZWQgZHVyaW5nIHRoZSBuZXh0IGRpZ2VzdCBvbmNlIHRoZSBh
bmltYXRpb24KKyAgICAgICAqICAgaGFzIGNvbXBsZXRlZC4KKyAgICAgICAqCisgICAgICAgKiBA
cGFyYW0ge0RPTUVsZW1lbnR9IGVsZW1lbnQgdGhlIGVsZW1lbnQgd2hpY2ggd2lsbCBiZSBpbnNl
cnRlZCBpbnRvIHRoZSBET00KKyAgICAgICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gcGFyZW50IHRo
ZSBwYXJlbnQgZWxlbWVudCB3aGljaCB3aWxsIGFwcGVuZCB0aGUgZWxlbWVudCBhcworICAgICAg
ICogICBhIGNoaWxkIChzbyBsb25nIGFzIHRoZSBhZnRlciBlbGVtZW50IGlzIG5vdCBwcmVzZW50
KQorICAgICAgICogQHBhcmFtIHtET01FbGVtZW50PX0gYWZ0ZXIgdGhlIHNpYmxpbmcgZWxlbWVu
dCBhZnRlciB3aGljaCB0aGUgZWxlbWVudCB3aWxsIGJlIGFwcGVuZGVkCisgICAgICAgKiBAcGFy
YW0ge29iamVjdD19IG9wdGlvbnMgYW4gb3B0aW9uYWwgY29sbGVjdGlvbiBvZiBvcHRpb25zL3N0
eWxlcyB0aGF0IHdpbGwgYmUgYXBwbGllZCB0byB0aGUgZWxlbWVudAorICAgICAgICoKKyAgICAg
ICAqIEByZXR1cm4ge1Byb21pc2V9IHRoZSBhbmltYXRpb24gY2FsbGJhY2sgcHJvbWlzZQorICAg
ICAgICovCisgICAgICBlbnRlcjogZnVuY3Rpb24oZWxlbWVudCwgcGFyZW50LCBhZnRlciwgb3B0
aW9ucykgeworICAgICAgICBwYXJlbnQgPSBwYXJlbnQgJiYganFMaXRlKHBhcmVudCk7CisgICAg
ICAgIGFmdGVyID0gYWZ0ZXIgJiYganFMaXRlKGFmdGVyKTsKKyAgICAgICAgcGFyZW50ID0gcGFy
ZW50IHx8IGFmdGVyLnBhcmVudCgpOworICAgICAgICBkb21JbnNlcnQoZWxlbWVudCwgcGFyZW50
LCBhZnRlcik7CisgICAgICAgIHJldHVybiAkJGFuaW1hdGVRdWV1ZS5wdXNoKGVsZW1lbnQsICdl
bnRlcicsIHByZXBhcmVBbmltYXRlT3B0aW9ucyhvcHRpb25zKSk7CisgICAgICB9LAorCisgICAg
ICAvKioKKyAgICAgICAqCisgICAgICAgKiBAbmdkb2MgbWV0aG9kCisgICAgICAgKiBAbmFtZSAk
YW5pbWF0ZSNtb3ZlCisgICAgICAgKiBAa2luZCBmdW5jdGlvbgorICAgICAgICogQGRlc2NyaXB0
aW9uIEluc2VydHMgKG1vdmVzKSB0aGUgZWxlbWVudCBpbnRvIGl0cyBuZXcgcG9zaXRpb24gaW4g
dGhlIERPTSBlaXRoZXIgYWZ0ZXIKKyAgICAgICAqICAgdGhlIGBhZnRlcmAgZWxlbWVudCAoaWYg
cHJvdmlkZWQpIG9yIGFzIHRoZSBmaXJzdCBjaGlsZCB3aXRoaW4gdGhlIGBwYXJlbnRgIGVsZW1l
bnQKKyAgICAgICAqICAgYW5kIHRoZW4gdHJpZ2dlcnMgYW4gYW5pbWF0aW9uLiBBIHByb21pc2Ug
aXMgcmV0dXJuZWQgdGhhdCB3aWxsIGJlIHJlc29sdmVkCisgICAgICAgKiAgIGR1cmluZyB0aGUg
bmV4dCBkaWdlc3Qgb25jZSB0aGUgYW5pbWF0aW9uIGhhcyBjb21wbGV0ZWQuCisgICAgICAgKgor
ICAgICAgICogQHBhcmFtIHtET01FbGVtZW50fSBlbGVtZW50IHRoZSBlbGVtZW50IHdoaWNoIHdp
bGwgYmUgbW92ZWQgaW50byB0aGUgbmV3IERPTSBwb3NpdGlvbgorICAgICAgICogQHBhcmFtIHtE
T01FbGVtZW50fSBwYXJlbnQgdGhlIHBhcmVudCBlbGVtZW50IHdoaWNoIHdpbGwgYXBwZW5kIHRo
ZSBlbGVtZW50IGFzCisgICAgICAgKiAgIGEgY2hpbGQgKHNvIGxvbmcgYXMgdGhlIGFmdGVyIGVs
ZW1lbnQgaXMgbm90IHByZXNlbnQpCisgICAgICAgKiBAcGFyYW0ge0RPTUVsZW1lbnQ9fSBhZnRl
ciB0aGUgc2libGluZyBlbGVtZW50IGFmdGVyIHdoaWNoIHRoZSBlbGVtZW50IHdpbGwgYmUgYXBw
ZW5kZWQKKyAgICAgICAqIEBwYXJhbSB7b2JqZWN0PX0gb3B0aW9ucyBhbiBvcHRpb25hbCBjb2xs
ZWN0aW9uIG9mIG9wdGlvbnMvc3R5bGVzIHRoYXQgd2lsbCBiZSBhcHBsaWVkIHRvIHRoZSBlbGVt
ZW50CisgICAgICAgKgorICAgICAgICogQHJldHVybiB7UHJvbWlzZX0gdGhlIGFuaW1hdGlvbiBj
YWxsYmFjayBwcm9taXNlCisgICAgICAgKi8KKyAgICAgIG1vdmU6IGZ1bmN0aW9uKGVsZW1lbnQs
IHBhcmVudCwgYWZ0ZXIsIG9wdGlvbnMpIHsKKyAgICAgICAgcGFyZW50ID0gcGFyZW50ICYmIGpx
TGl0ZShwYXJlbnQpOworICAgICAgICBhZnRlciA9IGFmdGVyICYmIGpxTGl0ZShhZnRlcik7Cisg
ICAgICAgIHBhcmVudCA9IHBhcmVudCB8fCBhZnRlci5wYXJlbnQoKTsKKyAgICAgICAgZG9tSW5z
ZXJ0KGVsZW1lbnQsIHBhcmVudCwgYWZ0ZXIpOworICAgICAgICByZXR1cm4gJCRhbmltYXRlUXVl
dWUucHVzaChlbGVtZW50LCAnbW92ZScsIHByZXBhcmVBbmltYXRlT3B0aW9ucyhvcHRpb25zKSk7
CisgICAgICB9LAorCisgICAgICAvKioKKyAgICAgICAqIEBuZ2RvYyBtZXRob2QKKyAgICAgICAq
IEBuYW1lICRhbmltYXRlI2xlYXZlCisgICAgICAgKiBAa2luZCBmdW5jdGlvbgorICAgICAgICog
QGRlc2NyaXB0aW9uIFRyaWdnZXJzIGFuIGFuaW1hdGlvbiBhbmQgdGhlbiByZW1vdmVzIHRoZSBl
bGVtZW50IGZyb20gdGhlIERPTS4KKyAgICAgICAqIFdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxl
ZCBhIHByb21pc2UgaXMgcmV0dXJuZWQgdGhhdCB3aWxsIGJlIHJlc29sdmVkIGR1cmluZyB0aGUg
bmV4dAorICAgICAgICogZGlnZXN0IG9uY2UgdGhlIGFuaW1hdGlvbiBoYXMgY29tcGxldGVkLgor
ICAgICAgICoKKyAgICAgICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gZWxlbWVudCB0aGUgZWxlbWVu
dCB3aGljaCB3aWxsIGJlIHJlbW92ZWQgZnJvbSB0aGUgRE9NCisgICAgICAgKiBAcGFyYW0ge29i
amVjdD19IG9wdGlvbnMgYW4gb3B0aW9uYWwgY29sbGVjdGlvbiBvZiBvcHRpb25zL3N0eWxlcyB0
aGF0IHdpbGwgYmUgYXBwbGllZCB0byB0aGUgZWxlbWVudAorICAgICAgICoKKyAgICAgICAqIEBy
ZXR1cm4ge1Byb21pc2V9IHRoZSBhbmltYXRpb24gY2FsbGJhY2sgcHJvbWlzZQorICAgICAgICov
CisgICAgICBsZWF2ZTogZnVuY3Rpb24oZWxlbWVudCwgb3B0aW9ucykgeworICAgICAgICByZXR1
cm4gJCRhbmltYXRlUXVldWUucHVzaChlbGVtZW50LCAnbGVhdmUnLCBwcmVwYXJlQW5pbWF0ZU9w
dGlvbnMob3B0aW9ucyksIGZ1bmN0aW9uKCkgeworICAgICAgICAgIGVsZW1lbnQucmVtb3ZlKCk7
CisgICAgICAgIH0pOworICAgICAgfSwKKworICAgICAgLyoqCisgICAgICAgKiBAbmdkb2MgbWV0
aG9kCisgICAgICAgKiBAbmFtZSAkYW5pbWF0ZSNhZGRDbGFzcworICAgICAgICogQGtpbmQgZnVu
Y3Rpb24KKyAgICAgICAqCisgICAgICAgKiBAZGVzY3JpcHRpb24gVHJpZ2dlcnMgYW4gYWRkQ2xh
c3MgYW5pbWF0aW9uIHN1cnJvdW5kaW5nIHRoZSBhZGRpdGlvbiBvZiB0aGUgcHJvdmlkZWQgQ1NT
IGNsYXNzKGVzKS4gVXBvbgorICAgICAgICogICBleGVjdXRpb24sIHRoZSBhZGRDbGFzcyBvcGVy
YXRpb24gd2lsbCBvbmx5IGJlIGhhbmRsZWQgYWZ0ZXIgdGhlIG5leHQgZGlnZXN0IGFuZCBpdCB3
aWxsIG5vdCB0cmlnZ2VyIGFuCisgICAgICAgKiAgIGFuaW1hdGlvbiBpZiBlbGVtZW50IGFscmVh
ZHkgY29udGFpbnMgdGhlIENTUyBjbGFzcyBvciBpZiB0aGUgY2xhc3MgaXMgcmVtb3ZlZCBhdCBh
IGxhdGVyIHN0ZXAuCisgICAgICAgKiAgIE5vdGUgdGhhdCBjbGFzcy1iYXNlZCBhbmltYXRpb25z
IGFyZSB0cmVhdGVkIGRpZmZlcmVudGx5IGNvbXBhcmVkIHRvIHN0cnVjdHVyYWwgYW5pbWF0aW9u
cworICAgICAgICogICAobGlrZSBlbnRlciwgbW92ZSBhbmQgbGVhdmUpIHNpbmNlIHRoZSBDU1Mg
Y2xhc3NlcyBtYXkgYmUgYWRkZWQvcmVtb3ZlZCBhdCBkaWZmZXJlbnQgcG9pbnRzCisgICAgICAg
KiAgIGRlcGVuZGluZyBpZiBDU1Mgb3IgSmF2YVNjcmlwdCBhbmltYXRpb25zIGFyZSB1c2VkLgor
ICAgICAgICoKKyAgICAgICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gZWxlbWVudCB0aGUgZWxlbWVu
dCB3aGljaCB0aGUgQ1NTIGNsYXNzZXMgd2lsbCBiZSBhcHBsaWVkIHRvCisgICAgICAgKiBAcGFy
YW0ge3N0cmluZ30gY2xhc3NOYW1lIHRoZSBDU1MgY2xhc3MoZXMpIHRoYXQgd2lsbCBiZSBhZGRl
ZCAobXVsdGlwbGUgY2xhc3NlcyBhcmUgc2VwYXJhdGVkIHZpYSBzcGFjZXMpCisgICAgICAgKiBA
cGFyYW0ge29iamVjdD19IG9wdGlvbnMgYW4gb3B0aW9uYWwgY29sbGVjdGlvbiBvZiBvcHRpb25z
L3N0eWxlcyB0aGF0IHdpbGwgYmUgYXBwbGllZCB0byB0aGUgZWxlbWVudAorICAgICAgICoKKyAg
ICAgICAqIEByZXR1cm4ge1Byb21pc2V9IHRoZSBhbmltYXRpb24gY2FsbGJhY2sgcHJvbWlzZQor
ICAgICAgICovCisgICAgICBhZGRDbGFzczogZnVuY3Rpb24oZWxlbWVudCwgY2xhc3NOYW1lLCBv
cHRpb25zKSB7CisgICAgICAgIG9wdGlvbnMgPSBwcmVwYXJlQW5pbWF0ZU9wdGlvbnMob3B0aW9u
cyk7CisgICAgICAgIG9wdGlvbnMuYWRkQ2xhc3MgPSBtZXJnZUNsYXNzZXMob3B0aW9ucy5hZGRj
bGFzcywgY2xhc3NOYW1lKTsKKyAgICAgICAgcmV0dXJuICQkYW5pbWF0ZVF1ZXVlLnB1c2goZWxl
bWVudCwgJ2FkZENsYXNzJywgb3B0aW9ucyk7CisgICAgICB9LAorCisgICAgICAvKioKKyAgICAg
ICAqIEBuZ2RvYyBtZXRob2QKKyAgICAgICAqIEBuYW1lICRhbmltYXRlI3JlbW92ZUNsYXNzCisg
ICAgICAgKiBAa2luZCBmdW5jdGlvbgorICAgICAgICoKKyAgICAgICAqIEBkZXNjcmlwdGlvbiBU
cmlnZ2VycyBhIHJlbW92ZUNsYXNzIGFuaW1hdGlvbiBzdXJyb3VuZGluZyB0aGUgcmVtb3ZhbCBv
ZiB0aGUgcHJvdmlkZWQgQ1NTIGNsYXNzKGVzKS4gVXBvbgorICAgICAgICogICBleGVjdXRpb24s
IHRoZSByZW1vdmVDbGFzcyBvcGVyYXRpb24gd2lsbCBvbmx5IGJlIGhhbmRsZWQgYWZ0ZXIgdGhl
IG5leHQgZGlnZXN0IGFuZCBpdCB3aWxsIG5vdCB0cmlnZ2VyIGFuCisgICAgICAgKiAgIGFuaW1h
dGlvbiBpZiBlbGVtZW50IGRvZXMgbm90IGNvbnRhaW4gdGhlIENTUyBjbGFzcyBvciBpZiB0aGUg
Y2xhc3MgaXMgYWRkZWQgYXQgYSBsYXRlciBzdGVwLgorICAgICAgICogICBOb3RlIHRoYXQgY2xh
c3MtYmFzZWQgYW5pbWF0aW9ucyBhcmUgdHJlYXRlZCBkaWZmZXJlbnRseSBjb21wYXJlZCB0byBz
dHJ1Y3R1cmFsIGFuaW1hdGlvbnMKKyAgICAgICAqICAgKGxpa2UgZW50ZXIsIG1vdmUgYW5kIGxl
YXZlKSBzaW5jZSB0aGUgQ1NTIGNsYXNzZXMgbWF5IGJlIGFkZGVkL3JlbW92ZWQgYXQgZGlmZmVy
ZW50IHBvaW50cworICAgICAgICogICBkZXBlbmRpbmcgaWYgQ1NTIG9yIEphdmFTY3JpcHQgYW5p
bWF0aW9ucyBhcmUgdXNlZC4KKyAgICAgICAqCisgICAgICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9
IGVsZW1lbnQgdGhlIGVsZW1lbnQgd2hpY2ggdGhlIENTUyBjbGFzc2VzIHdpbGwgYmUgYXBwbGll
ZCB0bworICAgICAgICogQHBhcmFtIHtzdHJpbmd9IGNsYXNzTmFtZSB0aGUgQ1NTIGNsYXNzKGVz
KSB0aGF0IHdpbGwgYmUgcmVtb3ZlZCAobXVsdGlwbGUgY2xhc3NlcyBhcmUgc2VwYXJhdGVkIHZp
YSBzcGFjZXMpCisgICAgICAgKiBAcGFyYW0ge29iamVjdD19IG9wdGlvbnMgYW4gb3B0aW9uYWwg
Y29sbGVjdGlvbiBvZiBvcHRpb25zL3N0eWxlcyB0aGF0IHdpbGwgYmUgYXBwbGllZCB0byB0aGUg
ZWxlbWVudAorICAgICAgICoKKyAgICAgICAqIEByZXR1cm4ge1Byb21pc2V9IHRoZSBhbmltYXRp
b24gY2FsbGJhY2sgcHJvbWlzZQorICAgICAgICovCisgICAgICByZW1vdmVDbGFzczogZnVuY3Rp
b24oZWxlbWVudCwgY2xhc3NOYW1lLCBvcHRpb25zKSB7CisgICAgICAgIG9wdGlvbnMgPSBwcmVw
YXJlQW5pbWF0ZU9wdGlvbnMob3B0aW9ucyk7CisgICAgICAgIG9wdGlvbnMucmVtb3ZlQ2xhc3Mg
PSBtZXJnZUNsYXNzZXMob3B0aW9ucy5yZW1vdmVDbGFzcywgY2xhc3NOYW1lKTsKKyAgICAgICAg
cmV0dXJuICQkYW5pbWF0ZVF1ZXVlLnB1c2goZWxlbWVudCwgJ3JlbW92ZUNsYXNzJywgb3B0aW9u
cyk7CisgICAgICB9LAorCisgICAgICAvKioKKyAgICAgICAqIEBuZ2RvYyBtZXRob2QKKyAgICAg
ICAqIEBuYW1lICRhbmltYXRlI3NldENsYXNzCisgICAgICAgKiBAa2luZCBmdW5jdGlvbgorICAg
ICAgICoKKyAgICAgICAqIEBkZXNjcmlwdGlvbiBQZXJmb3JtcyBib3RoIHRoZSBhZGRpdGlvbiBh
bmQgcmVtb3ZhbCBvZiBhIENTUyBjbGFzc2VzIG9uIGFuIGVsZW1lbnQgYW5kIChkdXJpbmcgdGhl
IHByb2Nlc3MpCisgICAgICAgKiAgICB0cmlnZ2VycyBhbiBhbmltYXRpb24gc3Vycm91bmRpbmcg
dGhlIGNsYXNzIGFkZGl0aW9uL3JlbW92YWwuIE11Y2ggbGlrZSBgJGFuaW1hdGUuYWRkQ2xhc3Ng
IGFuZAorICAgICAgICogICAgYCRhbmltYXRlLnJlbW92ZUNsYXNzYCwgYHNldENsYXNzYCB3aWxs
IG9ubHkgZXZhbHVhdGUgdGhlIGNsYXNzZXMgYmVpbmcgYWRkZWQvcmVtb3ZlZCBvbmNlIGEgZGln
ZXN0IGhhcworICAgICAgICogICAgcGFzc2VkLiBOb3RlIHRoYXQgY2xhc3MtYmFzZWQgYW5pbWF0
aW9ucyBhcmUgdHJlYXRlZCBkaWZmZXJlbnRseSBjb21wYXJlZCB0byBzdHJ1Y3R1cmFsIGFuaW1h
dGlvbnMKKyAgICAgICAqICAgIChsaWtlIGVudGVyLCBtb3ZlIGFuZCBsZWF2ZSkgc2luY2UgdGhl
IENTUyBjbGFzc2VzIG1heSBiZSBhZGRlZC9yZW1vdmVkIGF0IGRpZmZlcmVudCBwb2ludHMKKyAg
ICAgICAqICAgIGRlcGVuZGluZyBpZiBDU1Mgb3IgSmF2YVNjcmlwdCBhbmltYXRpb25zIGFyZSB1
c2VkLgorICAgICAgICoKKyAgICAgICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gZWxlbWVudCB0aGUg
ZWxlbWVudCB3aGljaCB0aGUgQ1NTIGNsYXNzZXMgd2lsbCBiZSBhcHBsaWVkIHRvCisgICAgICAg
KiBAcGFyYW0ge3N0cmluZ30gYWRkIHRoZSBDU1MgY2xhc3MoZXMpIHRoYXQgd2lsbCBiZSBhZGRl
ZCAobXVsdGlwbGUgY2xhc3NlcyBhcmUgc2VwYXJhdGVkIHZpYSBzcGFjZXMpCisgICAgICAgKiBA
cGFyYW0ge3N0cmluZ30gcmVtb3ZlIHRoZSBDU1MgY2xhc3MoZXMpIHRoYXQgd2lsbCBiZSByZW1v
dmVkIChtdWx0aXBsZSBjbGFzc2VzIGFyZSBzZXBhcmF0ZWQgdmlhIHNwYWNlcykKKyAgICAgICAq
IEBwYXJhbSB7b2JqZWN0PX0gb3B0aW9ucyBhbiBvcHRpb25hbCBjb2xsZWN0aW9uIG9mIG9wdGlv
bnMvc3R5bGVzIHRoYXQgd2lsbCBiZSBhcHBsaWVkIHRvIHRoZSBlbGVtZW50CisgICAgICAgKgor
ICAgICAgICogQHJldHVybiB7UHJvbWlzZX0gdGhlIGFuaW1hdGlvbiBjYWxsYmFjayBwcm9taXNl
CisgICAgICAgKi8KKyAgICAgIHNldENsYXNzOiBmdW5jdGlvbihlbGVtZW50LCBhZGQsIHJlbW92
ZSwgb3B0aW9ucykgeworICAgICAgICBvcHRpb25zID0gcHJlcGFyZUFuaW1hdGVPcHRpb25zKG9w
dGlvbnMpOworICAgICAgICBvcHRpb25zLmFkZENsYXNzID0gbWVyZ2VDbGFzc2VzKG9wdGlvbnMu
YWRkQ2xhc3MsIGFkZCk7CisgICAgICAgIG9wdGlvbnMucmVtb3ZlQ2xhc3MgPSBtZXJnZUNsYXNz
ZXMob3B0aW9ucy5yZW1vdmVDbGFzcywgcmVtb3ZlKTsKKyAgICAgICAgcmV0dXJuICQkYW5pbWF0
ZVF1ZXVlLnB1c2goZWxlbWVudCwgJ3NldENsYXNzJywgb3B0aW9ucyk7CisgICAgICB9LAorCisg
ICAgICAvKioKKyAgICAgICAqIEBuZ2RvYyBtZXRob2QKKyAgICAgICAqIEBuYW1lICRhbmltYXRl
I2FuaW1hdGUKKyAgICAgICAqIEBraW5kIGZ1bmN0aW9uCisgICAgICAgKgorICAgICAgICogQGRl
c2NyaXB0aW9uIFBlcmZvcm1zIGFuIGlubGluZSBhbmltYXRpb24gb24gdGhlIGVsZW1lbnQgd2hp
Y2ggYXBwbGllcyB0aGUgcHJvdmlkZWQgdG8gYW5kIGZyb20gQ1NTIHN0eWxlcyB0byB0aGUgZWxl
bWVudC4KKyAgICAgICAqIElmIGFueSBkZXRlY3RlZCBDU1MgdHJhbnNpdGlvbiwga2V5ZnJhbWUg
b3IgSmF2YVNjcmlwdCBtYXRjaGVzIHRoZSBwcm92aWRlZCBjbGFzc05hbWUgdmFsdWUgdGhlbiB0
aGUgYW5pbWF0aW9uIHdpbGwgdGFrZQorICAgICAgICogb24gdGhlIHByb3ZpZGVkIHN0eWxlcy4g
Rm9yIGV4YW1wbGUsIGlmIGEgdHJhbnNpdGlvbiBhbmltYXRpb24gaXMgc2V0IGZvciB0aGUgZ2l2
ZW4gY2xhc3NOYW1lIHRoZW4gdGhlIHByb3ZpZGVkIGZyb20gYW5kCisgICAgICAgKiB0byBzdHls
ZXMgd2lsbCBiZSBhcHBsaWVkIGFsb25nc2lkZSB0aGUgZ2l2ZW4gdHJhbnNpdGlvbi4gSWYgYSBK
YXZhU2NyaXB0IGFuaW1hdGlvbiBpcyBkZXRlY3RlZCB0aGVuIHRoZSBwcm92aWRlZCBzdHlsZXMK
KyAgICAgICAqIHdpbGwgYmUgZ2l2ZW4gaW4gYXMgZnVuY3Rpb24gcGFyYW10ZXJzIGludG8gdGhl
IGBhbmltYXRlYCBtZXRob2QgKG9yIGFzIGFwYXJ0IG9mIHRoZSBgb3B0aW9uc2AgcGFyYW1ldGVy
KS4KKyAgICAgICAqCisgICAgICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGVsZW1lbnQgdGhlIGVs
ZW1lbnQgd2hpY2ggdGhlIENTUyBzdHlsZXMgd2lsbCBiZSBhcHBsaWVkIHRvCisgICAgICAgKiBA
cGFyYW0ge29iamVjdH0gZnJvbSB0aGUgZnJvbSAoc3RhcnRpbmcpIENTUyBzdHlsZXMgdGhhdCB3
aWxsIGJlIGFwcGxpZWQgdG8gdGhlIGVsZW1lbnQgYW5kIGFjcm9zcyB0aGUgYW5pbWF0aW9uLgor
ICAgICAgICogQHBhcmFtIHtvYmplY3R9IHRvIHRoZSB0byAoZGVzdGluYXRpb24pIENTUyBzdHls
ZXMgdGhhdCB3aWxsIGJlIGFwcGxpZWQgdG8gdGhlIGVsZW1lbnQgYW5kIGFjcm9zcyB0aGUgYW5p
bWF0aW9uLgorICAgICAgICogQHBhcmFtIHtzdHJpbmc9fSBjbGFzc05hbWUgYW4gb3B0aW9uYWwg
Q1NTIGNsYXNzIHRoYXQgd2lsbCBiZSBhcHBsaWVkIHRvIHRoZSBlbGVtZW50IGZvciB0aGUgZHVy
YXRpb24gb2YgdGhlIGFuaW1hdGlvbi4gSWYKKyAgICAgICAqICAgIHRoaXMgdmFsdWUgaXMgbGVm
dCBhcyBlbXB0eSB0aGVuIGEgQ1NTIGNsYXNzIG9mIGBuZy1pbmxpbmUtYW5pbWF0ZWAgd2lsbCBi
ZSBhcHBsaWVkIHRvIHRoZSBlbGVtZW50LgorICAgICAgICogICAgKE5vdGUgdGhhdCBpZiBubyBh
bmltYXRpb24gaXMgZGV0ZWN0ZWQgdGhlbiB0aGlzIHZhbHVlIHdpbGwgbm90IGJlIGFwcHBsaWVk
IHRvIHRoZSBlbGVtZW50LikKKyAgICAgICAqIEBwYXJhbSB7b2JqZWN0PX0gb3B0aW9ucyBhbiBv
cHRpb25hbCBjb2xsZWN0aW9uIG9mIG9wdGlvbnMvc3R5bGVzIHRoYXQgd2lsbCBiZSBhcHBsaWVk
IHRvIHRoZSBlbGVtZW50CisgICAgICAgKgorICAgICAgICogQHJldHVybiB7UHJvbWlzZX0gdGhl
IGFuaW1hdGlvbiBjYWxsYmFjayBwcm9taXNlCisgICAgICAgKi8KKyAgICAgIGFuaW1hdGU6IGZ1
bmN0aW9uKGVsZW1lbnQsIGZyb20sIHRvLCBjbGFzc05hbWUsIG9wdGlvbnMpIHsKKyAgICAgICAg
b3B0aW9ucyA9IHByZXBhcmVBbmltYXRlT3B0aW9ucyhvcHRpb25zKTsKKyAgICAgICAgb3B0aW9u
cy5mcm9tID0gb3B0aW9ucy5mcm9tID8gZXh0ZW5kKG9wdGlvbnMuZnJvbSwgZnJvbSkgOiBmcm9t
OworICAgICAgICBvcHRpb25zLnRvICAgPSBvcHRpb25zLnRvICAgPyBleHRlbmQob3B0aW9ucy50
bywgdG8pICAgICA6IHRvOworCisgICAgICAgIGNsYXNzTmFtZSA9IGNsYXNzTmFtZSB8fCAnbmct
aW5saW5lLWFuaW1hdGUnOworICAgICAgICBvcHRpb25zLnRlbXBDbGFzc2VzID0gbWVyZ2VDbGFz
c2VzKG9wdGlvbnMudGVtcENsYXNzZXMsIGNsYXNzTmFtZSk7CisgICAgICAgIHJldHVybiAkJGFu
aW1hdGVRdWV1ZS5wdXNoKGVsZW1lbnQsICdhbmltYXRlJywgb3B0aW9ucyk7CisgICAgICB9Cisg
ICAgfTsKKyAgfV07Cit9XTsKKworZnVuY3Rpb24gJCRBc3luY0NhbGxiYWNrUHJvdmlkZXIoKSB7
CisgIHRoaXMuJGdldCA9IFsnJCRyQUYnLCAnJHRpbWVvdXQnLCBmdW5jdGlvbigkJHJBRiwgJHRp
bWVvdXQpIHsKKyAgICByZXR1cm4gJCRyQUYuc3VwcG9ydGVkCisgICAgICA/IGZ1bmN0aW9uKGZu
KSB7IHJldHVybiAkJHJBRihmbik7IH0KKyAgICAgIDogZnVuY3Rpb24oZm4pIHsKKyAgICAgICAg
cmV0dXJuICR0aW1lb3V0KGZuLCAwLCBmYWxzZSk7CisgICAgICB9OworICB9XTsKK30KKworLyog
Z2xvYmFsIHN0cmlwSGFzaDogdHJ1ZSAqLworCisvKioKKyAqICEgVGhpcyBpcyBhIHByaXZhdGUg
dW5kb2N1bWVudGVkIHNlcnZpY2UgIQorICoKKyAqIEBuYW1lICRicm93c2VyCisgKiBAcmVxdWly
ZXMgJGxvZworICogQGRlc2NyaXB0aW9uCisgKiBUaGlzIG9iamVjdCBoYXMgdHdvIGdvYWxzOgor
ICoKKyAqIC0gaGlkZSBhbGwgdGhlIGdsb2JhbCBzdGF0ZSBpbiB0aGUgYnJvd3NlciBjYXVzZWQg
YnkgdGhlIHdpbmRvdyBvYmplY3QKKyAqIC0gYWJzdHJhY3QgYXdheSBhbGwgdGhlIGJyb3dzZXIg
c3BlY2lmaWMgZmVhdHVyZXMgYW5kIGluY29uc2lzdGVuY2llcworICoKKyAqIEZvciB0ZXN0cyB3
ZSBwcm92aWRlIHtAbGluayBuZ01vY2suJGJyb3dzZXIgbW9jayBpbXBsZW1lbnRhdGlvbn0gb2Yg
dGhlIGAkYnJvd3NlcmAKKyAqIHNlcnZpY2UsIHdoaWNoIGNhbiBiZSB1c2VkIGZvciBjb252ZW5p
ZW50IHRlc3Rpbmcgb2YgdGhlIGFwcGxpY2F0aW9uIHdpdGhvdXQgdGhlIGludGVyYWN0aW9uIHdp
dGgKKyAqIHRoZSByZWFsIGJyb3dzZXIgYXBpcy4KKyAqLworLyoqCisgKiBAcGFyYW0ge29iamVj
dH0gd2luZG93IFRoZSBnbG9iYWwgd2luZG93IG9iamVjdC4KKyAqIEBwYXJhbSB7b2JqZWN0fSBk
b2N1bWVudCBqUXVlcnkgd3JhcHBlZCBkb2N1bWVudC4KKyAqIEBwYXJhbSB7b2JqZWN0fSAkbG9n
IHdpbmRvdy5jb25zb2xlIG9yIGFuIG9iamVjdCB3aXRoIHRoZSBzYW1lIGludGVyZmFjZS4KKyAq
IEBwYXJhbSB7b2JqZWN0fSAkc25pZmZlciAkc25pZmZlciBzZXJ2aWNlCisgKi8KK2Z1bmN0aW9u
IEJyb3dzZXIod2luZG93LCBkb2N1bWVudCwgJGxvZywgJHNuaWZmZXIpIHsKKyAgdmFyIHNlbGYg
PSB0aGlzLAorICAgICAgcmF3RG9jdW1lbnQgPSBkb2N1bWVudFswXSwKKyAgICAgIGxvY2F0aW9u
ID0gd2luZG93LmxvY2F0aW9uLAorICAgICAgaGlzdG9yeSA9IHdpbmRvdy5oaXN0b3J5LAorICAg
ICAgc2V0VGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0LAorICAgICAgY2xlYXJUaW1lb3V0ID0g
d2luZG93LmNsZWFyVGltZW91dCwKKyAgICAgIHBlbmRpbmdEZWZlcklkcyA9IHt9OworCisgIHNl
bGYuaXNNb2NrID0gZmFsc2U7CisKKyAgdmFyIG91dHN0YW5kaW5nUmVxdWVzdENvdW50ID0gMDsK
KyAgdmFyIG91dHN0YW5kaW5nUmVxdWVzdENhbGxiYWNrcyA9IFtdOworCisgIC8vIFRPRE8odm9q
dGEpOiByZW1vdmUgdGhpcyB0ZW1wb3JhcnkgYXBpCisgIHNlbGYuJCRjb21wbGV0ZU91dHN0YW5k
aW5nUmVxdWVzdCA9IGNvbXBsZXRlT3V0c3RhbmRpbmdSZXF1ZXN0OworICBzZWxmLiQkaW5jT3V0
c3RhbmRpbmdSZXF1ZXN0Q291bnQgPSBmdW5jdGlvbigpIHsgb3V0c3RhbmRpbmdSZXF1ZXN0Q291
bnQrKzsgfTsKKworICAvKioKKyAgICogRXhlY3V0ZXMgdGhlIGBmbmAgZnVuY3Rpb24oc3VwcG9y
dHMgY3VycnlpbmcpIGFuZCBkZWNyZW1lbnRzIHRoZSBgb3V0c3RhbmRpbmdSZXF1ZXN0Q2FsbGJh
Y2tzYAorICAgKiBjb3VudGVyLiBJZiB0aGUgY291bnRlciByZWFjaGVzIDAsIGFsbCB0aGUgYG91
dHN0YW5kaW5nUmVxdWVzdENhbGxiYWNrc2AgYXJlIGV4ZWN1dGVkLgorICAgKi8KKyAgZnVuY3Rp
b24gY29tcGxldGVPdXRzdGFuZGluZ1JlcXVlc3QoZm4pIHsKKyAgICB0cnkgeworICAgICAgZm4u
YXBwbHkobnVsbCwgc2xpY2VBcmdzKGFyZ3VtZW50cywgMSkpOworICAgIH0gZmluYWxseSB7Cisg
ICAgICBvdXRzdGFuZGluZ1JlcXVlc3RDb3VudC0tOworICAgICAgaWYgKG91dHN0YW5kaW5nUmVx
dWVzdENvdW50ID09PSAwKSB7CisgICAgICAgIHdoaWxlIChvdXRzdGFuZGluZ1JlcXVlc3RDYWxs
YmFja3MubGVuZ3RoKSB7CisgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG91dHN0YW5kaW5n
UmVxdWVzdENhbGxiYWNrcy5wb3AoKSgpOworICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAg
ICAgICAgICRsb2cuZXJyb3IoZSk7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9Cisg
ICAgfQorICB9CisKKyAgZnVuY3Rpb24gZ2V0SGFzaCh1cmwpIHsKKyAgICB2YXIgaW5kZXggPSB1
cmwuaW5kZXhPZignIycpOworICAgIHJldHVybiBpbmRleCA9PT0gLTEgPyAnJyA6IHVybC5zdWJz
dHIoaW5kZXgpOworICB9CisKKyAgLyoqCisgICAqIEBwcml2YXRlCisgICAqIE5vdGU6IHRoaXMg
bWV0aG9kIGlzIHVzZWQgb25seSBieSBzY2VuYXJpbyBydW5uZXIKKyAgICogVE9ETyh2b2p0YSk6
IHByZWZpeCB0aGlzIG1ldGhvZCB3aXRoICQkID8KKyAgICogQHBhcmFtIHtmdW5jdGlvbigpfSBj
YWxsYmFjayBGdW5jdGlvbiB0aGF0IHdpbGwgYmUgY2FsbGVkIHdoZW4gbm8gb3V0c3RhbmRpbmcg
cmVxdWVzdAorICAgKi8KKyAgc2VsZi5ub3RpZnlXaGVuTm9PdXRzdGFuZGluZ1JlcXVlc3RzID0g
ZnVuY3Rpb24oY2FsbGJhY2spIHsKKyAgICBpZiAob3V0c3RhbmRpbmdSZXF1ZXN0Q291bnQgPT09
IDApIHsKKyAgICAgIGNhbGxiYWNrKCk7CisgICAgfSBlbHNlIHsKKyAgICAgIG91dHN0YW5kaW5n
UmVxdWVzdENhbGxiYWNrcy5wdXNoKGNhbGxiYWNrKTsKKyAgICB9CisgIH07CisKKyAgLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8K
KyAgLy8gVVJMIEFQSQorICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLworCisgIHZhciBjYWNoZWRTdGF0ZSwgbGFzdEhpc3RvcnlT
dGF0ZSwKKyAgICAgIGxhc3RCcm93c2VyVXJsID0gbG9jYXRpb24uaHJlZiwKKyAgICAgIGJhc2VF
bGVtZW50ID0gZG9jdW1lbnQuZmluZCgnYmFzZScpLAorICAgICAgcmVsb2FkTG9jYXRpb24gPSBu
dWxsOworCisgIGNhY2hlU3RhdGUoKTsKKyAgbGFzdEhpc3RvcnlTdGF0ZSA9IGNhY2hlZFN0YXRl
OworCisgIC8qKgorICAgKiBAbmFtZSAkYnJvd3NlciN1cmwKKyAgICoKKyAgICogQGRlc2NyaXB0
aW9uCisgICAqIEdFVFRFUjoKKyAgICogV2l0aG91dCBhbnkgYXJndW1lbnQsIHRoaXMgbWV0aG9k
IGp1c3QgcmV0dXJucyBjdXJyZW50IHZhbHVlIG9mIGxvY2F0aW9uLmhyZWYuCisgICAqCisgICAq
IFNFVFRFUjoKKyAgICogV2l0aCBhdCBsZWFzdCBvbmUgYXJndW1lbnQsIHRoaXMgbWV0aG9kIHNl
dHMgdXJsIHRvIG5ldyB2YWx1ZS4KKyAgICogSWYgaHRtbDUgaGlzdG9yeSBhcGkgc3VwcG9ydGVk
LCBwdXNoU3RhdGUvcmVwbGFjZVN0YXRlIGlzIHVzZWQsIG90aGVyd2lzZQorICAgKiBsb2NhdGlv
bi5ocmVmL2xvY2F0aW9uLnJlcGxhY2UgaXMgdXNlZC4KKyAgICogUmV0dXJucyBpdHMgb3duIGlu
c3RhbmNlIHRvIGFsbG93IGNoYWluaW5nCisgICAqCisgICAqIE5PVEU6IHRoaXMgYXBpIGlzIGlu
dGVuZGVkIGZvciB1c2Ugb25seSBieSB0aGUgJGxvY2F0aW9uIHNlcnZpY2UuIFBsZWFzZSB1c2Ug
dGhlCisgICAqIHtAbGluayBuZy4kbG9jYXRpb24gJGxvY2F0aW9uIHNlcnZpY2V9IHRvIGNoYW5n
ZSB1cmwuCisgICAqCisgICAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgTmV3IHVybCAod2hlbiB1c2Vk
IGFzIHNldHRlcikKKyAgICogQHBhcmFtIHtib29sZWFuPX0gcmVwbGFjZSBTaG91bGQgbmV3IHVy
bCByZXBsYWNlIGN1cnJlbnQgaGlzdG9yeSByZWNvcmQ/CisgICAqIEBwYXJhbSB7b2JqZWN0PX0g
c3RhdGUgb2JqZWN0IHRvIHVzZSB3aXRoIHB1c2hTdGF0ZS9yZXBsYWNlU3RhdGUKKyAgICovCisg
IHNlbGYudXJsID0gZnVuY3Rpb24odXJsLCByZXBsYWNlLCBzdGF0ZSkgeworICAgIC8vIEluIG1v
ZGVybiBicm93c2VycyBgaGlzdG9yeS5zdGF0ZWAgaXMgYG51bGxgIGJ5IGRlZmF1bHQ7IHRyZWF0
aW5nIGl0IHNlcGFyYXRlbHkKKyAgICAvLyBmcm9tIGB1bmRlZmluZWRgIHdvdWxkIGNhdXNlIGAk
YnJvd3Nlci51cmwoJy9mb28nKWAgdG8gY2hhbmdlIGBoaXN0b3J5LnN0YXRlYAorICAgIC8vIHRv
IHVuZGVmaW5lZCB2aWEgYHB1c2hTdGF0ZWAuIEluc3RlYWQsIGxldCdzIGNoYW5nZSBgdW5kZWZp
bmVkYCB0byBgbnVsbGAgaGVyZS4KKyAgICBpZiAoaXNVbmRlZmluZWQoc3RhdGUpKSB7CisgICAg
ICBzdGF0ZSA9IG51bGw7CisgICAgfQorCisgICAgLy8gQW5kcm9pZCBCcm93c2VyIEJGQ2FjaGUg
Y2F1c2VzIGxvY2F0aW9uLCBoaXN0b3J5IHJlZmVyZW5jZSB0byBiZWNvbWUgc3RhbGUuCisgICAg
aWYgKGxvY2F0aW9uICE9PSB3aW5kb3cubG9jYXRpb24pIGxvY2F0aW9uID0gd2luZG93LmxvY2F0
aW9uOworICAgIGlmIChoaXN0b3J5ICE9PSB3aW5kb3cuaGlzdG9yeSkgaGlzdG9yeSA9IHdpbmRv
dy5oaXN0b3J5OworCisgICAgLy8gc2V0dGVyCisgICAgaWYgKHVybCkgeworICAgICAgdmFyIHNh
bWVTdGF0ZSA9IGxhc3RIaXN0b3J5U3RhdGUgPT09IHN0YXRlOworCisgICAgICAvLyBEb24ndCBj
aGFuZ2UgYW55dGhpbmcgaWYgcHJldmlvdXMgYW5kIGN1cnJlbnQgVVJMcyBhbmQgc3RhdGVzIG1h
dGNoLiBUaGlzIGFsc28gcHJldmVudHMKKyAgICAgIC8vIElFPDEwIGZyb20gZ2V0dGluZyBpbnRv
IHJlZGlyZWN0IGxvb3Agd2hlbiBpbiBMb2NhdGlvbkhhc2hiYW5nSW5IdG1sNVVybCBtb2RlLgor
ICAgICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIuanMvY29tbWl0
L2ZmYjI3MDEKKyAgICAgIGlmIChsYXN0QnJvd3NlclVybCA9PT0gdXJsICYmICghJHNuaWZmZXIu
aGlzdG9yeSB8fCBzYW1lU3RhdGUpKSB7CisgICAgICAgIHJldHVybiBzZWxmOworICAgICAgfQor
ICAgICAgdmFyIHNhbWVCYXNlID0gbGFzdEJyb3dzZXJVcmwgJiYgc3RyaXBIYXNoKGxhc3RCcm93
c2VyVXJsKSA9PT0gc3RyaXBIYXNoKHVybCk7CisgICAgICBsYXN0QnJvd3NlclVybCA9IHVybDsK
KyAgICAgIGxhc3RIaXN0b3J5U3RhdGUgPSBzdGF0ZTsKKyAgICAgIC8vIERvbid0IHVzZSBoaXN0
b3J5IEFQSSBpZiBvbmx5IHRoZSBoYXNoIGNoYW5nZWQKKyAgICAgIC8vIGR1ZSB0byBhIGJ1ZyBp
biBJRTEwL0lFMTEgd2hpY2ggbGVhZHMKKyAgICAgIC8vIHRvIG5vdCBmaXJpbmcgYSBgaGFzaGNo
YW5nZWAgbm9yIGBwb3BzdGF0ZWAgZXZlbnQKKyAgICAgIC8vIGluIHNvbWUgY2FzZXMgKHNlZSAj
OTE0MykuCisgICAgICBpZiAoJHNuaWZmZXIuaGlzdG9yeSAmJiAoIXNhbWVCYXNlIHx8ICFzYW1l
U3RhdGUpKSB7CisgICAgICAgIGhpc3RvcnlbcmVwbGFjZSA/ICdyZXBsYWNlU3RhdGUnIDogJ3B1
c2hTdGF0ZSddKHN0YXRlLCAnJywgdXJsKTsKKyAgICAgICAgY2FjaGVTdGF0ZSgpOworICAgICAg
ICAvLyBEbyB0aGUgYXNzaWdubWVudCBhZ2FpbiBzbyB0aGF0IHRob3NlIHR3byB2YXJpYWJsZXMg
YXJlIHJlZmVyZW50aWFsbHkgaWRlbnRpY2FsLgorICAgICAgICBsYXN0SGlzdG9yeVN0YXRlID0g
Y2FjaGVkU3RhdGU7CisgICAgICB9IGVsc2UgeworICAgICAgICBpZiAoIXNhbWVCYXNlIHx8IHJl
bG9hZExvY2F0aW9uKSB7CisgICAgICAgICAgcmVsb2FkTG9jYXRpb24gPSB1cmw7CisgICAgICAg
IH0KKyAgICAgICAgaWYgKHJlcGxhY2UpIHsKKyAgICAgICAgICBsb2NhdGlvbi5yZXBsYWNlKHVy
bCk7CisgICAgICAgIH0gZWxzZSBpZiAoIXNhbWVCYXNlKSB7CisgICAgICAgICAgbG9jYXRpb24u
aHJlZiA9IHVybDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBsb2NhdGlvbi5oYXNoID0g
Z2V0SGFzaCh1cmwpOworICAgICAgICB9CisgICAgICB9CisgICAgICByZXR1cm4gc2VsZjsKKyAg
ICAvLyBnZXR0ZXIKKyAgICB9IGVsc2UgeworICAgICAgLy8gLSByZWxvYWRMb2NhdGlvbiBpcyBu
ZWVkZWQgYXMgYnJvd3NlcnMgZG9uJ3QgYWxsb3cgdG8gcmVhZCBvdXQKKyAgICAgIC8vICAgdGhl
IG5ldyBsb2NhdGlvbi5ocmVmIGlmIGEgcmVsb2FkIGhhcHBlbmVkLgorICAgICAgLy8gLSB0aGUg
cmVwbGFjZW1lbnQgaXMgYSB3b3JrYXJvdW5kIGZvciBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEu
b3JnL3Nob3dfYnVnLmNnaT9pZD00MDcxNzIKKyAgICAgIHJldHVybiByZWxvYWRMb2NhdGlvbiB8
fCBsb2NhdGlvbi5ocmVmLnJlcGxhY2UoLyUyNy9nLCInIik7CisgICAgfQorICB9OworCisgIC8q
KgorICAgKiBAbmFtZSAkYnJvd3NlciNzdGF0ZQorICAgKgorICAgKiBAZGVzY3JpcHRpb24KKyAg
ICogVGhpcyBtZXRob2QgaXMgYSBnZXR0ZXIuCisgICAqCisgICAqIFJldHVybiBoaXN0b3J5LnN0
YXRlIG9yIG51bGwgaWYgaGlzdG9yeS5zdGF0ZSBpcyB1bmRlZmluZWQuCisgICAqCisgICAqIEBy
ZXR1cm5zIHtvYmplY3R9IHN0YXRlCisgICAqLworICBzZWxmLnN0YXRlID0gZnVuY3Rpb24oKSB7
CisgICAgcmV0dXJuIGNhY2hlZFN0YXRlOworICB9OworCisgIHZhciB1cmxDaGFuZ2VMaXN0ZW5l
cnMgPSBbXSwKKyAgICAgIHVybENoYW5nZUluaXQgPSBmYWxzZTsKKworICBmdW5jdGlvbiBjYWNo
ZVN0YXRlQW5kRmlyZVVybENoYW5nZSgpIHsKKyAgICBjYWNoZVN0YXRlKCk7CisgICAgZmlyZVVy
bENoYW5nZSgpOworICB9CisKKyAgZnVuY3Rpb24gZ2V0Q3VycmVudFN0YXRlKCkgeworICAgIHRy
eSB7CisgICAgICByZXR1cm4gaGlzdG9yeS5zdGF0ZTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAg
ICAvLyBNU0lFIGNhbiByZXBvcnRlZGx5IHRocm93IHdoZW4gdGhlcmUgaXMgbm8gc3RhdGUgKFVO
Q09ORklSTUVEKS4KKyAgICB9CisgIH0KKworICAvLyBUaGlzIHZhcmlhYmxlIHNob3VsZCBiZSB1
c2VkICpvbmx5KiBpbnNpZGUgdGhlIGNhY2hlU3RhdGUgZnVuY3Rpb24uCisgIHZhciBsYXN0Q2Fj
aGVkU3RhdGUgPSBudWxsOworICBmdW5jdGlvbiBjYWNoZVN0YXRlKCkgeworICAgIC8vIFRoaXMg
c2hvdWxkIGJlIHRoZSBvbmx5IHBsYWNlIGluICRicm93c2VyIHdoZXJlIGBoaXN0b3J5LnN0YXRl
YCBpcyByZWFkLgorICAgIGNhY2hlZFN0YXRlID0gZ2V0Q3VycmVudFN0YXRlKCk7CisgICAgY2Fj
aGVkU3RhdGUgPSBpc1VuZGVmaW5lZChjYWNoZWRTdGF0ZSkgPyBudWxsIDogY2FjaGVkU3RhdGU7
CisKKyAgICAvLyBQcmV2ZW50IGNhbGxiYWNrcyBmbyBmaXJlIHR3aWNlIGlmIGJvdGggaGFzaGNo
YW5nZSAmIHBvcHN0YXRlIHdlcmUgZmlyZWQuCisgICAgaWYgKGVxdWFscyhjYWNoZWRTdGF0ZSwg
bGFzdENhY2hlZFN0YXRlKSkgeworICAgICAgY2FjaGVkU3RhdGUgPSBsYXN0Q2FjaGVkU3RhdGU7
CisgICAgfQorICAgIGxhc3RDYWNoZWRTdGF0ZSA9IGNhY2hlZFN0YXRlOworICB9CisKKyAgZnVu
Y3Rpb24gZmlyZVVybENoYW5nZSgpIHsKKyAgICBpZiAobGFzdEJyb3dzZXJVcmwgPT09IHNlbGYu
dXJsKCkgJiYgbGFzdEhpc3RvcnlTdGF0ZSA9PT0gY2FjaGVkU3RhdGUpIHsKKyAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBsYXN0QnJvd3NlclVybCA9IHNlbGYudXJsKCk7CisgICAgbGFzdEhp
c3RvcnlTdGF0ZSA9IGNhY2hlZFN0YXRlOworICAgIGZvckVhY2godXJsQ2hhbmdlTGlzdGVuZXJz
LCBmdW5jdGlvbihsaXN0ZW5lcikgeworICAgICAgbGlzdGVuZXIoc2VsZi51cmwoKSwgY2FjaGVk
U3RhdGUpOworICAgIH0pOworICB9CisKKyAgLyoqCisgICAqIEBuYW1lICRicm93c2VyI29uVXJs
Q2hhbmdlCisgICAqCisgICAqIEBkZXNjcmlwdGlvbgorICAgKiBSZWdpc3RlciBjYWxsYmFjayBm
dW5jdGlvbiB0aGF0IHdpbGwgYmUgY2FsbGVkLCB3aGVuIHVybCBjaGFuZ2VzLgorICAgKgorICAg
KiBJdCdzIG9ubHkgY2FsbGVkIHdoZW4gdGhlIHVybCBpcyBjaGFuZ2VkIGZyb20gb3V0c2lkZSBv
ZiBhbmd1bGFyOgorICAgKiAtIHVzZXIgdHlwZXMgZGlmZmVyZW50IHVybCBpbnRvIGFkZHJlc3Mg
YmFyCisgICAqIC0gdXNlciBjbGlja3Mgb24gaGlzdG9yeSAoZm9yd2FyZC9iYWNrKSBidXR0b24K
KyAgICogLSB1c2VyIGNsaWNrcyBvbiBhIGxpbmsKKyAgICoKKyAgICogSXQncyBub3QgY2FsbGVk
IHdoZW4gdXJsIGlzIGNoYW5nZWQgYnkgJGJyb3dzZXIudXJsKCkgbWV0aG9kCisgICAqCisgICAq
IFRoZSBsaXN0ZW5lciBnZXRzIGNhbGxlZCB3aXRoIG5ldyB1cmwgYXMgcGFyYW1ldGVyLgorICAg
KgorICAgKiBOT1RFOiB0aGlzIGFwaSBpcyBpbnRlbmRlZCBmb3IgdXNlIG9ubHkgYnkgdGhlICRs
b2NhdGlvbiBzZXJ2aWNlLiBQbGVhc2UgdXNlIHRoZQorICAgKiB7QGxpbmsgbmcuJGxvY2F0aW9u
ICRsb2NhdGlvbiBzZXJ2aWNlfSB0byBtb25pdG9yIHVybCBjaGFuZ2VzIGluIGFuZ3VsYXIgYXBw
cy4KKyAgICoKKyAgICogQHBhcmFtIHtmdW5jdGlvbihzdHJpbmcpfSBsaXN0ZW5lciBMaXN0ZW5l
ciBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbiB1cmwgY2hhbmdlcy4KKyAgICogQHJldHVybiB7
ZnVuY3Rpb24oc3RyaW5nKX0gUmV0dXJucyB0aGUgcmVnaXN0ZXJlZCBsaXN0ZW5lciBmbiAtIGhh
bmR5IGlmIHRoZSBmbiBpcyBhbm9ueW1vdXMuCisgICAqLworICBzZWxmLm9uVXJsQ2hhbmdlID0g
ZnVuY3Rpb24oY2FsbGJhY2spIHsKKyAgICAvLyBUT0RPKHZvanRhKTogcmVmYWN0b3IgdG8gdXNl
IG5vZGUncyBzeW50YXggZm9yIGV2ZW50cworICAgIGlmICghdXJsQ2hhbmdlSW5pdCkgeworICAg
ICAgLy8gV2UgbGlzdGVuIG9uIGJvdGggKGhhc2hjaGFuZ2UvcG9wc3RhdGUpIHdoZW4gYXZhaWxh
YmxlLCBhcyBzb21lIGJyb3dzZXJzIChlLmcuIE9wZXJhKQorICAgICAgLy8gZG9uJ3QgZmlyZSBw
b3BzdGF0ZSB3aGVuIHVzZXIgY2hhbmdlIHRoZSBhZGRyZXNzIGJhciBhbmQgZG9uJ3QgZmlyZSBo
YXNoY2hhbmdlIHdoZW4gdXJsCisgICAgICAvLyBjaGFuZ2VkIGJ5IHB1c2gvcmVwbGFjZVN0YXRl
CisKKyAgICAgIC8vIGh0bWw1IGhpc3RvcnkgYXBpIC0gcG9wc3RhdGUgZXZlbnQKKyAgICAgIGlm
ICgkc25pZmZlci5oaXN0b3J5KSBqcUxpdGUod2luZG93KS5vbigncG9wc3RhdGUnLCBjYWNoZVN0
YXRlQW5kRmlyZVVybENoYW5nZSk7CisgICAgICAvLyBoYXNoY2hhbmdlIGV2ZW50CisgICAgICBq
cUxpdGUod2luZG93KS5vbignaGFzaGNoYW5nZScsIGNhY2hlU3RhdGVBbmRGaXJlVXJsQ2hhbmdl
KTsKKworICAgICAgdXJsQ2hhbmdlSW5pdCA9IHRydWU7CisgICAgfQorCisgICAgdXJsQ2hhbmdl
TGlzdGVuZXJzLnB1c2goY2FsbGJhY2spOworICAgIHJldHVybiBjYWxsYmFjazsKKyAgfTsKKwor
ICAvKioKKyAgICogQHByaXZhdGUKKyAgICogUmVtb3ZlIHBvcHN0YXRlIGFuZCBoYXNoY2hhbmdl
IGhhbmRsZXIgZnJvbSB3aW5kb3cuCisgICAqCisgICAqIE5PVEU6IHRoaXMgYXBpIGlzIGludGVu
ZGVkIGZvciB1c2Ugb25seSBieSAkcm9vdFNjb3BlLgorICAgKi8KKyAgc2VsZi4kJGFwcGxpY2F0
aW9uRGVzdHJveWVkID0gZnVuY3Rpb24oKSB7CisgICAganFMaXRlKHdpbmRvdykub2ZmKCdoYXNo
Y2hhbmdlIHBvcHN0YXRlJywgY2FjaGVTdGF0ZUFuZEZpcmVVcmxDaGFuZ2UpOworICB9OworCisg
IC8qKgorICAgKiBDaGVja3Mgd2hldGhlciB0aGUgdXJsIGhhcyBjaGFuZ2VkIG91dHNpZGUgb2Yg
QW5ndWxhci4KKyAgICogTmVlZHMgdG8gYmUgZXhwb3J0ZWQgdG8gYmUgYWJsZSB0byBjaGVjayBm
b3IgY2hhbmdlcyB0aGF0IGhhdmUgYmVlbiBkb25lIGluIHN5bmMsCisgICAqIGFzIGhhc2hjaGFu
Z2UvcG9wc3RhdGUgZXZlbnRzIGZpcmUgaW4gYXN5bmMuCisgICAqLworICBzZWxmLiQkY2hlY2tV
cmxDaGFuZ2UgPSBmaXJlVXJsQ2hhbmdlOworCisgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisgIC8vIE1pc2MgQVBJCisgIC8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vCisKKyAgLyoqCisgICAqIEBuYW1lICRicm93c2VyI2Jhc2VIcmVmCisgICAqCisgICAqIEBk
ZXNjcmlwdGlvbgorICAgKiBSZXR1cm5zIGN1cnJlbnQgPGJhc2UgaHJlZj4KKyAgICogKGFsd2F5
cyByZWxhdGl2ZSAtIHdpdGhvdXQgZG9tYWluKQorICAgKgorICAgKiBAcmV0dXJucyB7c3RyaW5n
fSBUaGUgY3VycmVudCBiYXNlIGhyZWYKKyAgICovCisgIHNlbGYuYmFzZUhyZWYgPSBmdW5jdGlv
bigpIHsKKyAgICB2YXIgaHJlZiA9IGJhc2VFbGVtZW50LmF0dHIoJ2hyZWYnKTsKKyAgICByZXR1
cm4gaHJlZiA/IGhyZWYucmVwbGFjZSgvXihodHRwcz9cOik/XC9cL1teXC9dKi8sICcnKSA6ICcn
OworICB9OworCisgIC8qKgorICAgKiBAbmFtZSAkYnJvd3NlciNkZWZlcgorICAgKiBAcGFyYW0g
e2Z1bmN0aW9uKCl9IGZuIEEgZnVuY3Rpb24sIHdobydzIGV4ZWN1dGlvbiBzaG91bGQgYmUgZGVm
ZXJyZWQuCisgICAqIEBwYXJhbSB7bnVtYmVyPX0gW2RlbGF5PTBdIG9mIG1pbGxpc2Vjb25kcyB0
byBkZWZlciB0aGUgZnVuY3Rpb24gZXhlY3V0aW9uLgorICAgKiBAcmV0dXJucyB7Kn0gRGVmZXJJ
ZCB0aGF0IGNhbiBiZSB1c2VkIHRvIGNhbmNlbCB0aGUgdGFzayB2aWEgYCRicm93c2VyLmRlZmVy
LmNhbmNlbCgpYC4KKyAgICoKKyAgICogQGRlc2NyaXB0aW9uCisgICAqIEV4ZWN1dGVzIGEgZm4g
YXN5bmNocm9ub3VzbHkgdmlhIGBzZXRUaW1lb3V0KGZuLCBkZWxheSlgLgorICAgKgorICAgKiBV
bmxpa2Ugd2hlbiBjYWxsaW5nIGBzZXRUaW1lb3V0YCBkaXJlY3RseSwgaW4gdGVzdCB0aGlzIGZ1
bmN0aW9uIGlzIG1vY2tlZCBhbmQgaW5zdGVhZCBvZiB1c2luZworICAgKiBgc2V0VGltZW91dGAg
aW4gdGVzdHMsIHRoZSBmbnMgYXJlIHF1ZXVlZCBpbiBhbiBhcnJheSwgd2hpY2ggY2FuIGJlIHBy
b2dyYW1tYXRpY2FsbHkgZmx1c2hlZAorICAgKiB2aWEgYCRicm93c2VyLmRlZmVyLmZsdXNoKClg
LgorICAgKgorICAgKi8KKyAgc2VsZi5kZWZlciA9IGZ1bmN0aW9uKGZuLCBkZWxheSkgeworICAg
IHZhciB0aW1lb3V0SWQ7CisgICAgb3V0c3RhbmRpbmdSZXF1ZXN0Q291bnQrKzsKKyAgICB0aW1l
b3V0SWQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgZGVsZXRlIHBlbmRpbmdEZWZl
cklkc1t0aW1lb3V0SWRdOworICAgICAgY29tcGxldGVPdXRzdGFuZGluZ1JlcXVlc3QoZm4pOwor
ICAgIH0sIGRlbGF5IHx8IDApOworICAgIHBlbmRpbmdEZWZlcklkc1t0aW1lb3V0SWRdID0gdHJ1
ZTsKKyAgICByZXR1cm4gdGltZW91dElkOworICB9OworCisKKyAgLyoqCisgICAqIEBuYW1lICRi
cm93c2VyI2RlZmVyLmNhbmNlbAorICAgKgorICAgKiBAZGVzY3JpcHRpb24KKyAgICogQ2FuY2Vs
cyBhIGRlZmVycmVkIHRhc2sgaWRlbnRpZmllZCB3aXRoIGBkZWZlcklkYC4KKyAgICoKKyAgICog
QHBhcmFtIHsqfSBkZWZlcklkIFRva2VuIHJldHVybmVkIGJ5IHRoZSBgJGJyb3dzZXIuZGVmZXJg
IGZ1bmN0aW9uLgorICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhl
IHRhc2sgaGFzbid0IGV4ZWN1dGVkIHlldCBhbmQgd2FzIHN1Y2Nlc3NmdWxseQorICAgKiAgICAg
ICAgICAgICAgICAgICAgY2FuY2VsZWQuCisgICAqLworICBzZWxmLmRlZmVyLmNhbmNlbCA9IGZ1
bmN0aW9uKGRlZmVySWQpIHsKKyAgICBpZiAocGVuZGluZ0RlZmVySWRzW2RlZmVySWRdKSB7Cisg
ICAgICBkZWxldGUgcGVuZGluZ0RlZmVySWRzW2RlZmVySWRdOworICAgICAgY2xlYXJUaW1lb3V0
KGRlZmVySWQpOworICAgICAgY29tcGxldGVPdXRzdGFuZGluZ1JlcXVlc3Qobm9vcCk7CisgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworICB9OworCit9CisKK2Z1
bmN0aW9uICRCcm93c2VyUHJvdmlkZXIoKSB7CisgIHRoaXMuJGdldCA9IFsnJHdpbmRvdycsICck
bG9nJywgJyRzbmlmZmVyJywgJyRkb2N1bWVudCcsCisgICAgICBmdW5jdGlvbigkd2luZG93LCAk
bG9nLCAkc25pZmZlciwgJGRvY3VtZW50KSB7CisgICAgICAgIHJldHVybiBuZXcgQnJvd3Nlcigk
d2luZG93LCAkZG9jdW1lbnQsICRsb2csICRzbmlmZmVyKTsKKyAgICAgIH1dOworfQorCisvKioK
KyAqIEBuZ2RvYyBzZXJ2aWNlCisgKiBAbmFtZSAkY2FjaGVGYWN0b3J5CisgKgorICogQGRlc2Ny
aXB0aW9uCisgKiBGYWN0b3J5IHRoYXQgY29uc3RydWN0cyB7QGxpbmsgJGNhY2hlRmFjdG9yeS5D
YWNoZSBDYWNoZX0gb2JqZWN0cyBhbmQgZ2l2ZXMgYWNjZXNzIHRvCisgKiB0aGVtLgorICoKKyAq
IGBgYGpzCisgKgorICogIHZhciBjYWNoZSA9ICRjYWNoZUZhY3RvcnkoJ2NhY2hlSWQnKTsKKyAq
ICBleHBlY3QoJGNhY2hlRmFjdG9yeS5nZXQoJ2NhY2hlSWQnKSkudG9CZShjYWNoZSk7CisgKiAg
ZXhwZWN0KCRjYWNoZUZhY3RvcnkuZ2V0KCdub1N1Y2hDYWNoZUlkJykpLm5vdC50b0JlRGVmaW5l
ZCgpOworICoKKyAqICBjYWNoZS5wdXQoImtleSIsICJ2YWx1ZSIpOworICogIGNhY2hlLnB1dCgi
YW5vdGhlciBrZXkiLCAiYW5vdGhlciB2YWx1ZSIpOworICoKKyAqICAvLyBXZSd2ZSBzcGVjaWZp
ZWQgbm8gb3B0aW9ucyBvbiBjcmVhdGlvbgorICogIGV4cGVjdChjYWNoZS5pbmZvKCkpLnRvRXF1
YWwoe2lkOiAnY2FjaGVJZCcsIHNpemU6IDJ9KTsKKyAqCisgKiBgYGAKKyAqCisgKgorICogQHBh
cmFtIHtzdHJpbmd9IGNhY2hlSWQgTmFtZSBvciBpZCBvZiB0aGUgbmV3bHkgY3JlYXRlZCBjYWNo
ZS4KKyAqIEBwYXJhbSB7b2JqZWN0PX0gb3B0aW9ucyBPcHRpb25zIG9iamVjdCB0aGF0IHNwZWNp
ZmllcyB0aGUgY2FjaGUgYmVoYXZpb3IuIFByb3BlcnRpZXM6CisgKgorICogICAtIGB7bnVtYmVy
PX1gIGBjYXBhY2l0eWAg4oCUIHR1cm5zIHRoZSBjYWNoZSBpbnRvIExSVSBjYWNoZS4KKyAqCisg
KiBAcmV0dXJucyB7b2JqZWN0fSBOZXdseSBjcmVhdGVkIGNhY2hlIG9iamVjdCB3aXRoIHRoZSBm
b2xsb3dpbmcgc2V0IG9mIG1ldGhvZHM6CisgKgorICogLSBge29iamVjdH1gIGBpbmZvKClgIOKA
lCBSZXR1cm5zIGlkLCBzaXplLCBhbmQgb3B0aW9ucyBvZiBjYWNoZS4KKyAqIC0gYHt7Kn19YCBg
cHV0KHtzdHJpbmd9IGtleSwgeyp9IHZhbHVlKWAg4oCUIFB1dHMgYSBuZXcga2V5LXZhbHVlIHBh
aXIgaW50byB0aGUgY2FjaGUgYW5kIHJldHVybnMKKyAqICAgaXQuCisgKiAtIGB7eyp9fWAgYGdl
dCh7c3RyaW5nfSBrZXkpYCDigJQgUmV0dXJucyBjYWNoZWQgdmFsdWUgZm9yIGBrZXlgIG9yIHVu
ZGVmaW5lZCBmb3IgY2FjaGUgbWlzcy4KKyAqIC0gYHt2b2lkfWAgYHJlbW92ZSh7c3RyaW5nfSBr
ZXkpYCDigJQgUmVtb3ZlcyBhIGtleS12YWx1ZSBwYWlyIGZyb20gdGhlIGNhY2hlLgorICogLSBg
e3ZvaWR9YCBgcmVtb3ZlQWxsKClgIOKAlCBSZW1vdmVzIGFsbCBjYWNoZWQgdmFsdWVzLgorICog
LSBge3ZvaWR9YCBgZGVzdHJveSgpYCDigJQgUmVtb3ZlcyByZWZlcmVuY2VzIHRvIHRoaXMgY2Fj
aGUgZnJvbSAkY2FjaGVGYWN0b3J5LgorICoKKyAqIEBleGFtcGxlCisgICA8ZXhhbXBsZSBtb2R1
bGU9ImNhY2hlRXhhbXBsZUFwcCI+CisgICAgIDxmaWxlIG5hbWU9ImluZGV4Lmh0bWwiPgorICAg
ICAgIDxkaXYgbmctY29udHJvbGxlcj0iQ2FjaGVDb250cm9sbGVyIj4KKyAgICAgICAgIDxpbnB1
dCBuZy1tb2RlbD0ibmV3Q2FjaGVLZXkiIHBsYWNlaG9sZGVyPSJLZXkiPgorICAgICAgICAgPGlu
cHV0IG5nLW1vZGVsPSJuZXdDYWNoZVZhbHVlIiBwbGFjZWhvbGRlcj0iVmFsdWUiPgorICAgICAg
ICAgPGJ1dHRvbiBuZy1jbGljaz0icHV0KG5ld0NhY2hlS2V5LCBuZXdDYWNoZVZhbHVlKSI+Q2Fj
aGU8L2J1dHRvbj4KKworICAgICAgICAgPHAgbmctaWY9ImtleXMubGVuZ3RoIj5DYWNoZWQgVmFs
dWVzPC9wPgorICAgICAgICAgPGRpdiBuZy1yZXBlYXQ9ImtleSBpbiBrZXlzIj4KKyAgICAgICAg
ICAgPHNwYW4gbmctYmluZD0ia2V5Ij48L3NwYW4+CisgICAgICAgICAgIDxzcGFuPjogPC9zcGFu
PgorICAgICAgICAgICA8YiBuZy1iaW5kPSJjYWNoZS5nZXQoa2V5KSI+PC9iPgorICAgICAgICAg
PC9kaXY+CisKKyAgICAgICAgIDxwPkNhY2hlIEluZm88L3A+CisgICAgICAgICA8ZGl2IG5nLXJl
cGVhdD0iKGtleSwgdmFsdWUpIGluIGNhY2hlLmluZm8oKSI+CisgICAgICAgICAgIDxzcGFuIG5n
LWJpbmQ9ImtleSI+PC9zcGFuPgorICAgICAgICAgICA8c3Bhbj46IDwvc3Bhbj4KKyAgICAgICAg
ICAgPGIgbmctYmluZD0idmFsdWUiPjwvYj4KKyAgICAgICAgIDwvZGl2PgorICAgICAgIDwvZGl2
PgorICAgICA8L2ZpbGU+CisgICAgIDxmaWxlIG5hbWU9InNjcmlwdC5qcyI+CisgICAgICAgYW5n
dWxhci5tb2R1bGUoJ2NhY2hlRXhhbXBsZUFwcCcsIFtdKS4KKyAgICAgICAgIGNvbnRyb2xsZXIo
J0NhY2hlQ29udHJvbGxlcicsIFsnJHNjb3BlJywgJyRjYWNoZUZhY3RvcnknLCBmdW5jdGlvbigk
c2NvcGUsICRjYWNoZUZhY3RvcnkpIHsKKyAgICAgICAgICAgJHNjb3BlLmtleXMgPSBbXTsKKyAg
ICAgICAgICAgJHNjb3BlLmNhY2hlID0gJGNhY2hlRmFjdG9yeSgnY2FjaGVJZCcpOworICAgICAg
ICAgICAkc2NvcGUucHV0ID0gZnVuY3Rpb24oa2V5LCB2YWx1ZSkgeworICAgICAgICAgICAgIGlm
ICgkc2NvcGUuY2FjaGUuZ2V0KGtleSkgPT09IHVuZGVmaW5lZCkgeworICAgICAgICAgICAgICAg
JHNjb3BlLmtleXMucHVzaChrZXkpOworICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAkc2Nv
cGUuY2FjaGUucHV0KGtleSwgdmFsdWUgPT09IHVuZGVmaW5lZCA/IG51bGwgOiB2YWx1ZSk7Cisg
ICAgICAgICAgIH07CisgICAgICAgICB9XSk7CisgICAgIDwvZmlsZT4KKyAgICAgPGZpbGUgbmFt
ZT0ic3R5bGUuY3NzIj4KKyAgICAgICBwIHsKKyAgICAgICAgIG1hcmdpbjogMTBweCAwIDNweDsK
KyAgICAgICB9CisgICAgIDwvZmlsZT4KKyAgIDwvZXhhbXBsZT4KKyAqLworZnVuY3Rpb24gJENh
Y2hlRmFjdG9yeVByb3ZpZGVyKCkgeworCisgIHRoaXMuJGdldCA9IGZ1bmN0aW9uKCkgeworICAg
IHZhciBjYWNoZXMgPSB7fTsKKworICAgIGZ1bmN0aW9uIGNhY2hlRmFjdG9yeShjYWNoZUlkLCBv
cHRpb25zKSB7CisgICAgICBpZiAoY2FjaGVJZCBpbiBjYWNoZXMpIHsKKyAgICAgICAgdGhyb3cg
bWluRXJyKCckY2FjaGVGYWN0b3J5JykoJ2lpZCcsICJDYWNoZUlkICd7MH0nIGlzIGFscmVhZHkg
dGFrZW4hIiwgY2FjaGVJZCk7CisgICAgICB9CisKKyAgICAgIHZhciBzaXplID0gMCwKKyAgICAg
ICAgICBzdGF0cyA9IGV4dGVuZCh7fSwgb3B0aW9ucywge2lkOiBjYWNoZUlkfSksCisgICAgICAg
ICAgZGF0YSA9IHt9LAorICAgICAgICAgIGNhcGFjaXR5ID0gKG9wdGlvbnMgJiYgb3B0aW9ucy5j
YXBhY2l0eSkgfHwgTnVtYmVyLk1BWF9WQUxVRSwKKyAgICAgICAgICBscnVIYXNoID0ge30sCisg
ICAgICAgICAgZnJlc2hFbmQgPSBudWxsLAorICAgICAgICAgIHN0YWxlRW5kID0gbnVsbDsKKwor
ICAgICAgLyoqCisgICAgICAgKiBAbmdkb2MgdHlwZQorICAgICAgICogQG5hbWUgJGNhY2hlRmFj
dG9yeS5DYWNoZQorICAgICAgICoKKyAgICAgICAqIEBkZXNjcmlwdGlvbgorICAgICAgICogQSBj
YWNoZSBvYmplY3QgdXNlZCB0byBzdG9yZSBhbmQgcmV0cmlldmUgZGF0YSwgcHJpbWFyaWx5IHVz
ZWQgYnkKKyAgICAgICAqIHtAbGluayAkaHR0cCAkaHR0cH0gYW5kIHRoZSB7QGxpbmsgbmcuZGly
ZWN0aXZlOnNjcmlwdCBzY3JpcHR9IGRpcmVjdGl2ZSB0byBjYWNoZQorICAgICAgICogdGVtcGxh
dGVzIGFuZCBvdGhlciBkYXRhLgorICAgICAgICoKKyAgICAgICAqIGBgYGpzCisgICAgICAgKiAg
YW5ndWxhci5tb2R1bGUoJ3N1cGVyQ2FjaGUnKQorICAgICAgICogICAgLmZhY3RvcnkoJ3N1cGVy
Q2FjaGUnLCBbJyRjYWNoZUZhY3RvcnknLCBmdW5jdGlvbigkY2FjaGVGYWN0b3J5KSB7CisgICAg
ICAgKiAgICAgIHJldHVybiAkY2FjaGVGYWN0b3J5KCdzdXBlci1jYWNoZScpOworICAgICAgICog
ICAgfV0pOworICAgICAgICogYGBgCisgICAgICAgKgorICAgICAgICogRXhhbXBsZSB0ZXN0Ogor
ICAgICAgICoKKyAgICAgICAqIGBgYGpzCisgICAgICAgKiAgaXQoJ3Nob3VsZCBiZWhhdmUgbGlr
ZSBhIGNhY2hlJywgaW5qZWN0KGZ1bmN0aW9uKHN1cGVyQ2FjaGUpIHsKKyAgICAgICAqICAgIHN1
cGVyQ2FjaGUucHV0KCdrZXknLCAndmFsdWUnKTsKKyAgICAgICAqICAgIHN1cGVyQ2FjaGUucHV0
KCdhbm90aGVyIGtleScsICdhbm90aGVyIHZhbHVlJyk7CisgICAgICAgKgorICAgICAgICogICAg
ZXhwZWN0KHN1cGVyQ2FjaGUuaW5mbygpKS50b0VxdWFsKHsKKyAgICAgICAqICAgICAgaWQ6ICdz
dXBlci1jYWNoZScsCisgICAgICAgKiAgICAgIHNpemU6IDIKKyAgICAgICAqICAgIH0pOworICAg
ICAgICoKKyAgICAgICAqICAgIHN1cGVyQ2FjaGUucmVtb3ZlKCdhbm90aGVyIGtleScpOworICAg
ICAgICogICAgZXhwZWN0KHN1cGVyQ2FjaGUuZ2V0KCdhbm90aGVyIGtleScpKS50b0JlVW5kZWZp
bmVkKCk7CisgICAgICAgKgorICAgICAgICogICAgc3VwZXJDYWNoZS5yZW1vdmVBbGwoKTsKKyAg
ICAgICAqICAgIGV4cGVjdChzdXBlckNhY2hlLmluZm8oKSkudG9FcXVhbCh7CisgICAgICAgKiAg
ICAgIGlkOiAnc3VwZXItY2FjaGUnLAorICAgICAgICogICAgICBzaXplOiAwCisgICAgICAgKiAg
ICB9KTsKKyAgICAgICAqICB9KSk7CisgICAgICAgKiBgYGAKKyAgICAgICAqLworICAgICAgcmV0
dXJuIGNhY2hlc1tjYWNoZUlkXSA9IHsKKworICAgICAgICAvKioKKyAgICAgICAgICogQG5nZG9j
IG1ldGhvZAorICAgICAgICAgKiBAbmFtZSAkY2FjaGVGYWN0b3J5LkNhY2hlI3B1dAorICAgICAg
ICAgKiBAa2luZCBmdW5jdGlvbgorICAgICAgICAgKgorICAgICAgICAgKiBAZGVzY3JpcHRpb24K
KyAgICAgICAgICogSW5zZXJ0cyBhIG5hbWVkIGVudHJ5IGludG8gdGhlIHtAbGluayAkY2FjaGVG
YWN0b3J5LkNhY2hlIENhY2hlfSBvYmplY3QgdG8gYmUKKyAgICAgICAgICogcmV0cmlldmVkIGxh
dGVyLCBhbmQgaW5jcmVtZW50aW5nIHRoZSBzaXplIG9mIHRoZSBjYWNoZSBpZiB0aGUga2V5IHdh
cyBub3QgYWxyZWFkeQorICAgICAgICAgKiBwcmVzZW50IGluIHRoZSBjYWNoZS4gSWYgYmVoYXZp
bmcgbGlrZSBhbiBMUlUgY2FjaGUsIGl0IHdpbGwgYWxzbyByZW1vdmUgc3RhbGUKKyAgICAgICAg
ICogZW50cmllcyBmcm9tIHRoZSBzZXQuCisgICAgICAgICAqCisgICAgICAgICAqIEl0IHdpbGwg
bm90IGluc2VydCB1bmRlZmluZWQgdmFsdWVzIGludG8gdGhlIGNhY2hlLgorICAgICAgICAgKgor
ICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IHRoZSBrZXkgdW5kZXIgd2hpY2ggdGhlIGNh
Y2hlZCBkYXRhIGlzIHN0b3JlZC4KKyAgICAgICAgICogQHBhcmFtIHsqfSB2YWx1ZSB0aGUgdmFs
dWUgdG8gc3RvcmUgYWxvbmdzaWRlIHRoZSBrZXkuIElmIGl0IGlzIHVuZGVmaW5lZCwgdGhlIGtl
eQorICAgICAgICAgKiAgICB3aWxsIG5vdCBiZSBzdG9yZWQuCisgICAgICAgICAqIEByZXR1cm5z
IHsqfSB0aGUgdmFsdWUgc3RvcmVkLgorICAgICAgICAgKi8KKyAgICAgICAgcHV0OiBmdW5jdGlv
bihrZXksIHZhbHVlKSB7CisgICAgICAgICAgaWYgKGlzVW5kZWZpbmVkKHZhbHVlKSkgcmV0dXJu
OworICAgICAgICAgIGlmIChjYXBhY2l0eSA8IE51bWJlci5NQVhfVkFMVUUpIHsKKyAgICAgICAg
ICAgIHZhciBscnVFbnRyeSA9IGxydUhhc2hba2V5XSB8fCAobHJ1SGFzaFtrZXldID0ge2tleTog
a2V5fSk7CisKKyAgICAgICAgICAgIHJlZnJlc2gobHJ1RW50cnkpOworICAgICAgICAgIH0KKwor
ICAgICAgICAgIGlmICghKGtleSBpbiBkYXRhKSkgc2l6ZSsrOworICAgICAgICAgIGRhdGFba2V5
XSA9IHZhbHVlOworCisgICAgICAgICAgaWYgKHNpemUgPiBjYXBhY2l0eSkgeworICAgICAgICAg
ICAgdGhpcy5yZW1vdmUoc3RhbGVFbmQua2V5KTsKKyAgICAgICAgICB9CisKKyAgICAgICAgICBy
ZXR1cm4gdmFsdWU7CisgICAgICAgIH0sCisKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBuZ2Rv
YyBtZXRob2QKKyAgICAgICAgICogQG5hbWUgJGNhY2hlRmFjdG9yeS5DYWNoZSNnZXQKKyAgICAg
ICAgICogQGtpbmQgZnVuY3Rpb24KKyAgICAgICAgICoKKyAgICAgICAgICogQGRlc2NyaXB0aW9u
CisgICAgICAgICAqIFJldHJpZXZlcyBuYW1lZCBkYXRhIHN0b3JlZCBpbiB0aGUge0BsaW5rICRj
YWNoZUZhY3RvcnkuQ2FjaGUgQ2FjaGV9IG9iamVjdC4KKyAgICAgICAgICoKKyAgICAgICAgICog
QHBhcmFtIHtzdHJpbmd9IGtleSB0aGUga2V5IG9mIHRoZSBkYXRhIHRvIGJlIHJldHJpZXZlZAor
ICAgICAgICAgKiBAcmV0dXJucyB7Kn0gdGhlIHZhbHVlIHN0b3JlZC4KKyAgICAgICAgICovCisg
ICAgICAgIGdldDogZnVuY3Rpb24oa2V5KSB7CisgICAgICAgICAgaWYgKGNhcGFjaXR5IDwgTnVt
YmVyLk1BWF9WQUxVRSkgeworICAgICAgICAgICAgdmFyIGxydUVudHJ5ID0gbHJ1SGFzaFtrZXld
OworCisgICAgICAgICAgICBpZiAoIWxydUVudHJ5KSByZXR1cm47CisKKyAgICAgICAgICAgIHJl
ZnJlc2gobHJ1RW50cnkpOworICAgICAgICAgIH0KKworICAgICAgICAgIHJldHVybiBkYXRhW2tl
eV07CisgICAgICAgIH0sCisKKworICAgICAgICAvKioKKyAgICAgICAgICogQG5nZG9jIG1ldGhv
ZAorICAgICAgICAgKiBAbmFtZSAkY2FjaGVGYWN0b3J5LkNhY2hlI3JlbW92ZQorICAgICAgICAg
KiBAa2luZCBmdW5jdGlvbgorICAgICAgICAgKgorICAgICAgICAgKiBAZGVzY3JpcHRpb24KKyAg
ICAgICAgICogUmVtb3ZlcyBhbiBlbnRyeSBmcm9tIHRoZSB7QGxpbmsgJGNhY2hlRmFjdG9yeS5D
YWNoZSBDYWNoZX0gb2JqZWN0LgorICAgICAgICAgKgorICAgICAgICAgKiBAcGFyYW0ge3N0cmlu
Z30ga2V5IHRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGJlIHJlbW92ZWQKKyAgICAgICAgICovCisg
ICAgICAgIHJlbW92ZTogZnVuY3Rpb24oa2V5KSB7CisgICAgICAgICAgaWYgKGNhcGFjaXR5IDwg
TnVtYmVyLk1BWF9WQUxVRSkgeworICAgICAgICAgICAgdmFyIGxydUVudHJ5ID0gbHJ1SGFzaFtr
ZXldOworCisgICAgICAgICAgICBpZiAoIWxydUVudHJ5KSByZXR1cm47CisKKyAgICAgICAgICAg
IGlmIChscnVFbnRyeSA9PSBmcmVzaEVuZCkgZnJlc2hFbmQgPSBscnVFbnRyeS5wOworICAgICAg
ICAgICAgaWYgKGxydUVudHJ5ID09IHN0YWxlRW5kKSBzdGFsZUVuZCA9IGxydUVudHJ5Lm47Cisg
ICAgICAgICAgICBsaW5rKGxydUVudHJ5Lm4sbHJ1RW50cnkucCk7CisKKyAgICAgICAgICAgIGRl
bGV0ZSBscnVIYXNoW2tleV07CisgICAgICAgICAgfQorCisgICAgICAgICAgZGVsZXRlIGRhdGFb
a2V5XTsKKyAgICAgICAgICBzaXplLS07CisgICAgICAgIH0sCisKKworICAgICAgICAvKioKKyAg
ICAgICAgICogQG5nZG9jIG1ldGhvZAorICAgICAgICAgKiBAbmFtZSAkY2FjaGVGYWN0b3J5LkNh
Y2hlI3JlbW92ZUFsbAorICAgICAgICAgKiBAa2luZCBmdW5jdGlvbgorICAgICAgICAgKgorICAg
ICAgICAgKiBAZGVzY3JpcHRpb24KKyAgICAgICAgICogQ2xlYXJzIHRoZSBjYWNoZSBvYmplY3Qg
b2YgYW55IGVudHJpZXMuCisgICAgICAgICAqLworICAgICAgICByZW1vdmVBbGw6IGZ1bmN0aW9u
KCkgeworICAgICAgICAgIGRhdGEgPSB7fTsKKyAgICAgICAgICBzaXplID0gMDsKKyAgICAgICAg
ICBscnVIYXNoID0ge307CisgICAgICAgICAgZnJlc2hFbmQgPSBzdGFsZUVuZCA9IG51bGw7Cisg
ICAgICAgIH0sCisKKworICAgICAgICAvKioKKyAgICAgICAgICogQG5nZG9jIG1ldGhvZAorICAg
ICAgICAgKiBAbmFtZSAkY2FjaGVGYWN0b3J5LkNhY2hlI2Rlc3Ryb3kKKyAgICAgICAgICogQGtp
bmQgZnVuY3Rpb24KKyAgICAgICAgICoKKyAgICAgICAgICogQGRlc2NyaXB0aW9uCisgICAgICAg
ICAqIERlc3Ryb3lzIHRoZSB7QGxpbmsgJGNhY2hlRmFjdG9yeS5DYWNoZSBDYWNoZX0gb2JqZWN0
IGVudGlyZWx5LAorICAgICAgICAgKiByZW1vdmluZyBpdCBmcm9tIHRoZSB7QGxpbmsgJGNhY2hl
RmFjdG9yeSAkY2FjaGVGYWN0b3J5fSBzZXQuCisgICAgICAgICAqLworICAgICAgICBkZXN0cm95
OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICBkYXRhID0gbnVsbDsKKyAgICAgICAgICBzdGF0cyA9
IG51bGw7CisgICAgICAgICAgbHJ1SGFzaCA9IG51bGw7CisgICAgICAgICAgZGVsZXRlIGNhY2hl
c1tjYWNoZUlkXTsKKyAgICAgICAgfSwKKworCisgICAgICAgIC8qKgorICAgICAgICAgKiBAbmdk
b2MgbWV0aG9kCisgICAgICAgICAqIEBuYW1lICRjYWNoZUZhY3RvcnkuQ2FjaGUjaW5mbworICAg
ICAgICAgKiBAa2luZCBmdW5jdGlvbgorICAgICAgICAgKgorICAgICAgICAgKiBAZGVzY3JpcHRp
b24KKyAgICAgICAgICogUmV0cmlldmUgaW5mb3JtYXRpb24gcmVnYXJkaW5nIGEgcGFydGljdWxh
ciB7QGxpbmsgJGNhY2hlRmFjdG9yeS5DYWNoZSBDYWNoZX0uCisgICAgICAgICAqCisgICAgICAg
ICAqIEByZXR1cm5zIHtvYmplY3R9IGFuIG9iamVjdCB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVy
dGllczoKKyAgICAgICAgICogICA8dWw+CisgICAgICAgICAqICAgICA8bGk+KippZCoqOiB0aGUg
aWQgb2YgdGhlIGNhY2hlIGluc3RhbmNlPC9saT4KKyAgICAgICAgICogICAgIDxsaT4qKnNpemUq
KjogdGhlIG51bWJlciBvZiBlbnRyaWVzIGtlcHQgaW4gdGhlIGNhY2hlIGluc3RhbmNlPC9saT4K
KyAgICAgICAgICogICAgIDxsaT4qKi4uLioqOiBhbnkgYWRkaXRpb25hbCBwcm9wZXJ0aWVzIGZy
b20gdGhlIG9wdGlvbnMgb2JqZWN0IHdoZW4gY3JlYXRpbmcgdGhlCisgICAgICAgICAqICAgICAg
IGNhY2hlLjwvbGk+CisgICAgICAgICAqICAgPC91bD4KKyAgICAgICAgICovCisgICAgICAgIGlu
Zm86IGZ1bmN0aW9uKCkgeworICAgICAgICAgIHJldHVybiBleHRlbmQoe30sIHN0YXRzLCB7c2l6
ZTogc2l6ZX0pOworICAgICAgICB9CisgICAgICB9OworCisKKyAgICAgIC8qKgorICAgICAgICog
bWFrZXMgdGhlIGBlbnRyeWAgdGhlIGZyZXNoRW5kIG9mIHRoZSBMUlUgbGlua2VkIGxpc3QKKyAg
ICAgICAqLworICAgICAgZnVuY3Rpb24gcmVmcmVzaChlbnRyeSkgeworICAgICAgICBpZiAoZW50
cnkgIT0gZnJlc2hFbmQpIHsKKyAgICAgICAgICBpZiAoIXN0YWxlRW5kKSB7CisgICAgICAgICAg
ICBzdGFsZUVuZCA9IGVudHJ5OworICAgICAgICAgIH0gZWxzZSBpZiAoc3RhbGVFbmQgPT0gZW50
cnkpIHsKKyAgICAgICAgICAgIHN0YWxlRW5kID0gZW50cnkubjsKKyAgICAgICAgICB9CisKKyAg
ICAgICAgICBsaW5rKGVudHJ5Lm4sIGVudHJ5LnApOworICAgICAgICAgIGxpbmsoZW50cnksIGZy
ZXNoRW5kKTsKKyAgICAgICAgICBmcmVzaEVuZCA9IGVudHJ5OworICAgICAgICAgIGZyZXNoRW5k
Lm4gPSBudWxsOworICAgICAgICB9CisgICAgICB9CisKKworICAgICAgLyoqCisgICAgICAgKiBi
aWRpcmVjdGlvbmFsbHkgbGlua3MgdHdvIGVudHJpZXMgb2YgdGhlIExSVSBsaW5rZWQgbGlzdAor
ICAgICAgICovCisgICAgICBmdW5jdGlvbiBsaW5rKG5leHRFbnRyeSwgcHJldkVudHJ5KSB7Cisg
ICAgICAgIGlmIChuZXh0RW50cnkgIT0gcHJldkVudHJ5KSB7CisgICAgICAgICAgaWYgKG5leHRF
bnRyeSkgbmV4dEVudHJ5LnAgPSBwcmV2RW50cnk7IC8vcCBzdGFuZHMgZm9yIHByZXZpb3VzLCAn
cHJldicgZGlkbid0IG1pbmlmeQorICAgICAgICAgIGlmIChwcmV2RW50cnkpIHByZXZFbnRyeS5u
ID0gbmV4dEVudHJ5OyAvL24gc3RhbmRzIGZvciBuZXh0LCAnbmV4dCcgZGlkbid0IG1pbmlmeQor
ICAgICAgICB9CisgICAgICB9CisgICAgfQorCisKKyAgLyoqCisgICAqIEBuZ2RvYyBtZXRob2QK
KyAgICogQG5hbWUgJGNhY2hlRmFjdG9yeSNpbmZvCisgICAqCisgICAqIEBkZXNjcmlwdGlvbgor
ICAgKiBHZXQgaW5mb3JtYXRpb24gYWJvdXQgYWxsIHRoZSBjYWNoZXMgdGhhdCBoYXZlIGJlZW4g
Y3JlYXRlZAorICAgKgorICAgKiBAcmV0dXJucyB7T2JqZWN0fSAtIGtleS12YWx1ZSBtYXAgb2Yg
YGNhY2hlSWRgIHRvIHRoZSByZXN1bHQgb2YgY2FsbGluZyBgY2FjaGUjaW5mb2AKKyAgICovCisg
ICAgY2FjaGVGYWN0b3J5LmluZm8gPSBmdW5jdGlvbigpIHsKKyAgICAgIHZhciBpbmZvID0ge307
CisgICAgICBmb3JFYWNoKGNhY2hlcywgZnVuY3Rpb24oY2FjaGUsIGNhY2hlSWQpIHsKKyAgICAg
ICAgaW5mb1tjYWNoZUlkXSA9IGNhY2hlLmluZm8oKTsKKyAgICAgIH0pOworICAgICAgcmV0dXJu
IGluZm87CisgICAgfTsKKworCisgIC8qKgorICAgKiBAbmdkb2MgbWV0aG9kCisgICAqIEBuYW1l
ICRjYWNoZUZhY3RvcnkjZ2V0CisgICAqCisgICAqIEBkZXNjcmlwdGlvbgorICAgKiBHZXQgYWNj
ZXNzIHRvIGEgY2FjaGUgb2JqZWN0IGJ5IHRoZSBgY2FjaGVJZGAgdXNlZCB3aGVuIGl0IHdhcyBj
cmVhdGVkLgorICAgKgorICAgKiBAcGFyYW0ge3N0cmluZ30gY2FjaGVJZCBOYW1lIG9yIGlkIG9m
IGEgY2FjaGUgdG8gYWNjZXNzLgorICAgKiBAcmV0dXJucyB7b2JqZWN0fSBDYWNoZSBvYmplY3Qg
aWRlbnRpZmllZCBieSB0aGUgY2FjaGVJZCBvciB1bmRlZmluZWQgaWYgbm8gc3VjaCBjYWNoZS4K
KyAgICovCisgICAgY2FjaGVGYWN0b3J5LmdldCA9IGZ1bmN0aW9uKGNhY2hlSWQpIHsKKyAgICAg
IHJldHVybiBjYWNoZXNbY2FjaGVJZF07CisgICAgfTsKKworCisgICAgcmV0dXJuIGNhY2hlRmFj
dG9yeTsKKyAgfTsKK30KKworLyoqCisgKiBAbmdkb2Mgc2VydmljZQorICogQG5hbWUgJHRlbXBs
YXRlQ2FjaGUKKyAqCisgKiBAZGVzY3JpcHRpb24KKyAqIFRoZSBmaXJzdCB0aW1lIGEgdGVtcGxh
dGUgaXMgdXNlZCwgaXQgaXMgbG9hZGVkIGluIHRoZSB0ZW1wbGF0ZSBjYWNoZSBmb3IgcXVpY2sg
cmV0cmlldmFsLiBZb3UKKyAqIGNhbiBsb2FkIHRlbXBsYXRlcyBkaXJlY3RseSBpbnRvIHRoZSBj
YWNoZSBpbiBhIGBzY3JpcHRgIHRhZywgb3IgYnkgY29uc3VtaW5nIHRoZQorICogYCR0ZW1wbGF0
ZUNhY2hlYCBzZXJ2aWNlIGRpcmVjdGx5LgorICoKKyAqIEFkZGluZyB2aWEgdGhlIGBzY3JpcHRg
IHRhZzoKKyAqCisgKiBgYGBodG1sCisgKiAgIDxzY3JpcHQgdHlwZT0idGV4dC9uZy10ZW1wbGF0
ZSIgaWQ9InRlbXBsYXRlSWQuaHRtbCI+CisgKiAgICAgPHA+VGhpcyBpcyB0aGUgY29udGVudCBv
ZiB0aGUgdGVtcGxhdGU8L3A+CisgKiAgIDwvc2NyaXB0PgorICogYGBgCisgKgorICogKipOb3Rl
OioqIHRoZSBgc2NyaXB0YCB0YWcgY29udGFpbmluZyB0aGUgdGVtcGxhdGUgZG9lcyBub3QgbmVl
ZCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYGhlYWRgIG9mCisgKiB0aGUgZG9jdW1lbnQsIGJ1dCBp
dCBtdXN0IGJlIGEgZGVzY2VuZGVudCBvZiB0aGUge0BsaW5rIG5nLiRyb290RWxlbWVudCAkcm9v
dEVsZW1lbnR9IChJRSwKKyAqIGVsZW1lbnQgd2l0aCBuZy1hcHAgYXR0cmlidXRlKSwgb3RoZXJ3
aXNlIHRoZSB0ZW1wbGF0ZSB3aWxsIGJlIGlnbm9yZWQuCisgKgorICogQWRkaW5nIHZpYSB0aGUg
YCR0ZW1wbGF0ZUNhY2hlYCBzZXJ2aWNlOgorICoKKyAqIGBgYGpzCisgKiB2YXIgbXlBcHAgPSBh
bmd1bGFyLm1vZHVsZSgnbXlBcHAnLCBbXSk7CisgKiBteUFwcC5ydW4oZnVuY3Rpb24oJHRlbXBs
YXRlQ2FjaGUpIHsKKyAqICAgJHRlbXBsYXRlQ2FjaGUucHV0KCd0ZW1wbGF0ZUlkLmh0bWwnLCAn
VGhpcyBpcyB0aGUgY29udGVudCBvZiB0aGUgdGVtcGxhdGUnKTsKKyAqIH0pOworICogYGBgCisg
KgorICogVG8gcmV0cmlldmUgdGhlIHRlbXBsYXRlIGxhdGVyLCBzaW1wbHkgdXNlIGl0IGluIHlv
dXIgSFRNTDoKKyAqIGBgYGh0bWwKKyAqIDxkaXYgbmctaW5jbHVkZT0iICd0ZW1wbGF0ZUlkLmh0
bWwnICI+PC9kaXY+CisgKiBgYGAKKyAqCisgKiBvciBnZXQgaXQgdmlhIEphdmFzY3JpcHQ6Cisg
KiBgYGBqcworICogJHRlbXBsYXRlQ2FjaGUuZ2V0KCd0ZW1wbGF0ZUlkLmh0bWwnKQorICogYGBg
CisgKgorICogU2VlIHtAbGluayBuZy4kY2FjaGVGYWN0b3J5ICRjYWNoZUZhY3Rvcnl9LgorICoK
KyAqLworZnVuY3Rpb24gJFRlbXBsYXRlQ2FjaGVQcm92aWRlcigpIHsKKyAgdGhpcy4kZ2V0ID0g
WyckY2FjaGVGYWN0b3J5JywgZnVuY3Rpb24oJGNhY2hlRmFjdG9yeSkgeworICAgIHJldHVybiAk
Y2FjaGVGYWN0b3J5KCd0ZW1wbGF0ZXMnKTsKKyAgfV07Cit9CisKKy8qICogKiAqICogKiAqICog
KiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAq
ICoKKyAqICAgICBBbnkgY29tbWl0cyB0byB0aGlzIGZpbGUgc2hvdWxkIGJlIHJldmlld2VkIHdp
dGggc2VjdXJpdHkgaW4gbWluZC4gICoKKyAqICAgQ2hhbmdlcyB0byB0aGlzIGZpbGUgY2FuIHBv
dGVudGlhbGx5IGNyZWF0ZSBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMuICoKKyAqICAgICAgICAg
IEFuIGFwcHJvdmFsIGZyb20gMiBDb3JlIG1lbWJlcnMgd2l0aCBoaXN0b3J5IG9mIG1vZGlmeWlu
ZyAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgZmlsZSBpcyByZXF1aXJl
ZC4gICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICBE
b2VzIHRoZSBjaGFuZ2Ugc29tZWhvdyBhbGxvdyBmb3IgYXJiaXRyYXJ5IGphdmFzY3JpcHQgdG8g
YmUgZXhlY3V0ZWQ/ICoKKyAqICAgIE9yIGFsbG93cyBmb3Igc29tZW9uZSB0byBjaGFuZ2UgdGhl
IHByb3RvdHlwZSBvZiBidWlsdC1pbiBvYmplY3RzPyAgICoKKyAqICAgICBPciBnaXZlcyB1bmRl
c2lyZWQgYWNjZXNzIHRvIHZhcmlhYmxlcyBsaWtlcyBkb2N1bWVudCBvciB3aW5kb3c/ICAgICoK
KyAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAq
ICogKiAqICogKiAqICogKiAqICovCisKKy8qICEgVkFSSUFCTEUvRlVOQ1RJT04gTkFNSU5HIENP
TlZFTlRJT05TIFRIQVQgQVBQTFkgVE8gVEhJUyBGSUxFIQorICoKKyAqIERPTS1yZWxhdGVkIHZh
cmlhYmxlczoKKyAqCisgKiAtICJub2RlIiAtIERPTSBOb2RlCisgKiAtICJlbGVtZW50IiAtIERP
TSBFbGVtZW50IG9yIE5vZGUKKyAqIC0gIiRub2RlIiBvciAiJGVsZW1lbnQiIC0ganFMaXRlLXdy
YXBwZWQgbm9kZSBvciBlbGVtZW50CisgKgorICoKKyAqIENvbXBpbGVyIHJlbGF0ZWQgc3R1ZmY6
CisgKgorICogLSAibGlua0ZuIiAtIGxpbmtpbmcgZm4gb2YgYSBzaW5nbGUgZGlyZWN0aXZlCisg
KiAtICJub2RlTGlua0ZuIiAtIGZ1bmN0aW9uIHRoYXQgYWdncmVnYXRlcyBhbGwgbGlua2luZyBm
bnMgZm9yIGEgcGFydGljdWxhciBub2RlCisgKiAtICJjaGlsZExpbmtGbiIgLSAgZnVuY3Rpb24g
dGhhdCBhZ2dyZWdhdGVzIGFsbCBsaW5raW5nIGZucyBmb3IgY2hpbGQgbm9kZXMgb2YgYSBwYXJ0
aWN1bGFyIG5vZGUKKyAqIC0gImNvbXBvc2l0ZUxpbmtGbiIgLSBmdW5jdGlvbiB0aGF0IGFnZ3Jl
Z2F0ZXMgYWxsIGxpbmtpbmcgZm5zIGZvciBhIGNvbXBpbGF0aW9uIHJvb3QgKG5vZGVMaXN0KQor
ICovCisKKworLyoqCisgKiBAbmdkb2Mgc2VydmljZQorICogQG5hbWUgJGNvbXBpbGUKKyAqIEBr
aW5kIGZ1bmN0aW9uCisgKgorICogQGRlc2NyaXB0aW9uCisgKiBDb21waWxlcyBhbiBIVE1MIHN0
cmluZyBvciBET00gaW50byBhIHRlbXBsYXRlIGFuZCBwcm9kdWNlcyBhIHRlbXBsYXRlIGZ1bmN0
aW9uLCB3aGljaAorICogY2FuIHRoZW4gYmUgdXNlZCB0byBsaW5rIHtAbGluayBuZy4kcm9vdFNj
b3BlLlNjb3BlIGBzY29wZWB9IGFuZCB0aGUgdGVtcGxhdGUgdG9nZXRoZXIuCisgKgorICogVGhl
IGNvbXBpbGF0aW9uIGlzIGEgcHJvY2VzcyBvZiB3YWxraW5nIHRoZSBET00gdHJlZSBhbmQgbWF0
Y2hpbmcgRE9NIGVsZW1lbnRzIHRvCisgKiB7QGxpbmsgbmcuJGNvbXBpbGVQcm92aWRlciNkaXJl
Y3RpdmUgZGlyZWN0aXZlc30uCisgKgorICogPGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtd2Fybmlu
ZyI+CisgKiAqKk5vdGU6KiogVGhpcyBkb2N1bWVudCBpcyBhbiBpbi1kZXB0aCByZWZlcmVuY2Ug
b2YgYWxsIGRpcmVjdGl2ZSBvcHRpb25zLgorICogRm9yIGEgZ2VudGxlIGludHJvZHVjdGlvbiB0
byBkaXJlY3RpdmVzIHdpdGggZXhhbXBsZXMgb2YgY29tbW9uIHVzZSBjYXNlcywKKyAqIHNlZSB0
aGUge0BsaW5rIGd1aWRlL2RpcmVjdGl2ZSBkaXJlY3RpdmUgZ3VpZGV9LgorICogPC9kaXY+Cisg
KgorICogIyMgQ29tcHJlaGVuc2l2ZSBEaXJlY3RpdmUgQVBJCisgKgorICogVGhlcmUgYXJlIG1h
bnkgZGlmZmVyZW50IG9wdGlvbnMgZm9yIGEgZGlyZWN0aXZlLgorICoKKyAqIFRoZSBkaWZmZXJl
bmNlIHJlc2lkZXMgaW4gdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgZmFjdG9yeSBmdW5jdGlvbi4K
KyAqIFlvdSBjYW4gZWl0aGVyIHJldHVybiBhICJEaXJlY3RpdmUgRGVmaW5pdGlvbiBPYmplY3Qi
IChzZWUgYmVsb3cpIHRoYXQgZGVmaW5lcyB0aGUgZGlyZWN0aXZlIHByb3BlcnRpZXMsCisgKiBv
ciBqdXN0IHRoZSBgcG9zdExpbmtgIGZ1bmN0aW9uIChhbGwgb3RoZXIgcHJvcGVydGllcyB3aWxs
IGhhdmUgdGhlIGRlZmF1bHQgdmFsdWVzKS4KKyAqCisgKiA8ZGl2IGNsYXNzPSJhbGVydCBhbGVy
dC1zdWNjZXNzIj4KKyAqICoqQmVzdCBQcmFjdGljZToqKiBJdCdzIHJlY29tbWVuZGVkIHRvIHVz
ZSB0aGUgImRpcmVjdGl2ZSBkZWZpbml0aW9uIG9iamVjdCIgZm9ybS4KKyAqIDwvZGl2PgorICoK
KyAqIEhlcmUncyBhbiBleGFtcGxlIGRpcmVjdGl2ZSBkZWNsYXJlZCB3aXRoIGEgRGlyZWN0aXZl
IERlZmluaXRpb24gT2JqZWN0OgorICoKKyAqIGBgYGpzCisgKiAgIHZhciBteU1vZHVsZSA9IGFu
Z3VsYXIubW9kdWxlKC4uLik7CisgKgorICogICBteU1vZHVsZS5kaXJlY3RpdmUoJ2RpcmVjdGl2
ZU5hbWUnLCBmdW5jdGlvbiBmYWN0b3J5KGluamVjdGFibGVzKSB7CisgKiAgICAgdmFyIGRpcmVj
dGl2ZURlZmluaXRpb25PYmplY3QgPSB7CisgKiAgICAgICBwcmlvcml0eTogMCwKKyAqICAgICAg
IHRlbXBsYXRlOiAnPGRpdj48L2Rpdj4nLCAvLyBvciAvLyBmdW5jdGlvbih0RWxlbWVudCwgdEF0
dHJzKSB7IC4uLiB9LAorICogICAgICAgLy8gb3IKKyAqICAgICAgIC8vIHRlbXBsYXRlVXJsOiAn
ZGlyZWN0aXZlLmh0bWwnLCAvLyBvciAvLyBmdW5jdGlvbih0RWxlbWVudCwgdEF0dHJzKSB7IC4u
LiB9LAorICogICAgICAgdHJhbnNjbHVkZTogZmFsc2UsCisgKiAgICAgICByZXN0cmljdDogJ0En
LAorICogICAgICAgdGVtcGxhdGVOYW1lc3BhY2U6ICdodG1sJywKKyAqICAgICAgIHNjb3BlOiBm
YWxzZSwKKyAqICAgICAgIGNvbnRyb2xsZXI6IGZ1bmN0aW9uKCRzY29wZSwgJGVsZW1lbnQsICRh
dHRycywgJHRyYW5zY2x1ZGUsIG90aGVySW5qZWN0YWJsZXMpIHsgLi4uIH0sCisgKiAgICAgICBj
b250cm9sbGVyQXM6ICdzdHJpbmdJZGVudGlmaWVyJywKKyAqICAgICAgIGJpbmRUb0NvbnRyb2xs
ZXI6IGZhbHNlLAorICogICAgICAgcmVxdWlyZTogJ3NpYmxpbmdEaXJlY3RpdmVOYW1lJywgLy8g
b3IgLy8gWydecGFyZW50RGlyZWN0aXZlTmFtZScsICc/b3B0aW9uYWxEaXJlY3RpdmVOYW1lJywg
Jz9eb3B0aW9uYWxQYXJlbnQnXSwKKyAqICAgICAgIGNvbXBpbGU6IGZ1bmN0aW9uIGNvbXBpbGUo
dEVsZW1lbnQsIHRBdHRycywgdHJhbnNjbHVkZSkgeworICogICAgICAgICByZXR1cm4geworICog
ICAgICAgICAgIHByZTogZnVuY3Rpb24gcHJlTGluayhzY29wZSwgaUVsZW1lbnQsIGlBdHRycywg
Y29udHJvbGxlcikgeyAuLi4gfSwKKyAqICAgICAgICAgICBwb3N0OiBmdW5jdGlvbiBwb3N0TGlu
ayhzY29wZSwgaUVsZW1lbnQsIGlBdHRycywgY29udHJvbGxlcikgeyAuLi4gfQorICogICAgICAg
ICB9CisgKiAgICAgICAgIC8vIG9yCisgKiAgICAgICAgIC8vIHJldHVybiBmdW5jdGlvbiBwb3N0
TGluayggLi4uICkgeyAuLi4gfQorICogICAgICAgfSwKKyAqICAgICAgIC8vIG9yCisgKiAgICAg
ICAvLyBsaW5rOiB7CisgKiAgICAgICAvLyAgcHJlOiBmdW5jdGlvbiBwcmVMaW5rKHNjb3BlLCBp
RWxlbWVudCwgaUF0dHJzLCBjb250cm9sbGVyKSB7IC4uLiB9LAorICogICAgICAgLy8gIHBvc3Q6
IGZ1bmN0aW9uIHBvc3RMaW5rKHNjb3BlLCBpRWxlbWVudCwgaUF0dHJzLCBjb250cm9sbGVyKSB7
IC4uLiB9CisgKiAgICAgICAvLyB9CisgKiAgICAgICAvLyBvcgorICogICAgICAgLy8gbGluazog
ZnVuY3Rpb24gcG9zdExpbmsoIC4uLiApIHsgLi4uIH0KKyAqICAgICB9OworICogICAgIHJldHVy
biBkaXJlY3RpdmVEZWZpbml0aW9uT2JqZWN0OworICogICB9KTsKKyAqIGBgYAorICoKKyAqIDxk
aXYgY2xhc3M9ImFsZXJ0IGFsZXJ0LXdhcm5pbmciPgorICogKipOb3RlOioqIEFueSB1bnNwZWNp
ZmllZCBvcHRpb25zIHdpbGwgdXNlIHRoZSBkZWZhdWx0IHZhbHVlLiBZb3UgY2FuIHNlZSB0aGUg
ZGVmYXVsdCB2YWx1ZXMgYmVsb3cuCisgKiA8L2Rpdj4KKyAqCisgKiBUaGVyZWZvcmUgdGhlIGFi
b3ZlIGNhbiBiZSBzaW1wbGlmaWVkIGFzOgorICoKKyAqIGBgYGpzCisgKiAgIHZhciBteU1vZHVs
ZSA9IGFuZ3VsYXIubW9kdWxlKC4uLik7CisgKgorICogICBteU1vZHVsZS5kaXJlY3RpdmUoJ2Rp
cmVjdGl2ZU5hbWUnLCBmdW5jdGlvbiBmYWN0b3J5KGluamVjdGFibGVzKSB7CisgKiAgICAgdmFy
IGRpcmVjdGl2ZURlZmluaXRpb25PYmplY3QgPSB7CisgKiAgICAgICBsaW5rOiBmdW5jdGlvbiBw
b3N0TGluayhzY29wZSwgaUVsZW1lbnQsIGlBdHRycykgeyAuLi4gfQorICogICAgIH07CisgKiAg
ICAgcmV0dXJuIGRpcmVjdGl2ZURlZmluaXRpb25PYmplY3Q7CisgKiAgICAgLy8gb3IKKyAqICAg
ICAvLyByZXR1cm4gZnVuY3Rpb24gcG9zdExpbmsoc2NvcGUsIGlFbGVtZW50LCBpQXR0cnMpIHsg
Li4uIH0KKyAqICAgfSk7CisgKiBgYGAKKyAqCisgKgorICoKKyAqICMjIyBEaXJlY3RpdmUgRGVm
aW5pdGlvbiBPYmplY3QKKyAqCisgKiBUaGUgZGlyZWN0aXZlIGRlZmluaXRpb24gb2JqZWN0IHBy
b3ZpZGVzIGluc3RydWN0aW9ucyB0byB0aGUge0BsaW5rIG5nLiRjb21waWxlCisgKiBjb21waWxl
cn0uIFRoZSBhdHRyaWJ1dGVzIGFyZToKKyAqCisgKiAjIyMjIGBtdWx0aUVsZW1lbnRgCisgKiBX
aGVuIHRoaXMgcHJvcGVydHkgaXMgc2V0IHRvIHRydWUsIHRoZSBIVE1MIGNvbXBpbGVyIHdpbGwg
Y29sbGVjdCBET00gbm9kZXMgYmV0d2VlbgorICogbm9kZXMgd2l0aCB0aGUgYXR0cmlidXRlcyBg
ZGlyZWN0aXZlLW5hbWUtc3RhcnRgIGFuZCBgZGlyZWN0aXZlLW5hbWUtZW5kYCwgYW5kIGdyb3Vw
IHRoZW0KKyAqIHRvZ2V0aGVyIGFzIHRoZSBkaXJlY3RpdmUgZWxlbWVudHMuIEl0IGlzIHJlY29t
bWVuZGVkIHRoYXQgdGhpcyBmZWF0dXJlIGJlIHVzZWQgb24gZGlyZWN0aXZlcworICogd2hpY2gg
YXJlIG5vdCBzdHJpY3RseSBiZWhhdmlvdXJhbCAoc3VjaCBhcyB7QGxpbmsgbmdDbGlja30pLCBh
bmQgd2hpY2gKKyAqIGRvIG5vdCBtYW5pcHVsYXRlIG9yIHJlcGxhY2UgY2hpbGQgbm9kZXMgKHN1
Y2ggYXMge0BsaW5rIG5nSW5jbHVkZX0pLgorICoKKyAqICMjIyMgYHByaW9yaXR5YAorICogV2hl
biB0aGVyZSBhcmUgbXVsdGlwbGUgZGlyZWN0aXZlcyBkZWZpbmVkIG9uIGEgc2luZ2xlIERPTSBl
bGVtZW50LCBzb21ldGltZXMgaXQKKyAqIGlzIG5lY2Vzc2FyeSB0byBzcGVjaWZ5IHRoZSBvcmRl
ciBpbiB3aGljaCB0aGUgZGlyZWN0aXZlcyBhcmUgYXBwbGllZC4gVGhlIGBwcmlvcml0eWAgaXMg
dXNlZAorICogdG8gc29ydCB0aGUgZGlyZWN0aXZlcyBiZWZvcmUgdGhlaXIgYGNvbXBpbGVgIGZ1
bmN0aW9ucyBnZXQgY2FsbGVkLiBQcmlvcml0eSBpcyBkZWZpbmVkIGFzIGEKKyAqIG51bWJlci4g
RGlyZWN0aXZlcyB3aXRoIGdyZWF0ZXIgbnVtZXJpY2FsIGBwcmlvcml0eWAgYXJlIGNvbXBpbGVk
IGZpcnN0LiBQcmUtbGluayBmdW5jdGlvbnMKKyAqIGFyZSBhbHNvIHJ1biBpbiBwcmlvcml0eSBv
cmRlciwgYnV0IHBvc3QtbGluayBmdW5jdGlvbnMgYXJlIHJ1biBpbiByZXZlcnNlIG9yZGVyLiBU
aGUgb3JkZXIKKyAqIG9mIGRpcmVjdGl2ZXMgd2l0aCB0aGUgc2FtZSBwcmlvcml0eSBpcyB1bmRl
ZmluZWQuIFRoZSBkZWZhdWx0IHByaW9yaXR5IGlzIGAwYC4KKyAqCisgKiAjIyMjIGB0ZXJtaW5h
bGAKKyAqIElmIHNldCB0byB0cnVlIHRoZW4gdGhlIGN1cnJlbnQgYHByaW9yaXR5YCB3aWxsIGJl
IHRoZSBsYXN0IHNldCBvZiBkaXJlY3RpdmVzCisgKiB3aGljaCB3aWxsIGV4ZWN1dGUgKGFueSBk
aXJlY3RpdmVzIGF0IHRoZSBjdXJyZW50IHByaW9yaXR5IHdpbGwgc3RpbGwgZXhlY3V0ZQorICog
YXMgdGhlIG9yZGVyIG9mIGV4ZWN1dGlvbiBvbiBzYW1lIGBwcmlvcml0eWAgaXMgdW5kZWZpbmVk
KS4gTm90ZSB0aGF0IGV4cHJlc3Npb25zCisgKiBhbmQgb3RoZXIgZGlyZWN0aXZlcyB1c2VkIGlu
IHRoZSBkaXJlY3RpdmUncyB0ZW1wbGF0ZSB3aWxsIGFsc28gYmUgZXhjbHVkZWQgZnJvbSBleGVj
dXRpb24uCisgKgorICogIyMjIyBgc2NvcGVgCisgKiAqKklmIHNldCB0byBgdHJ1ZWAsKiogdGhl
biBhIG5ldyBzY29wZSB3aWxsIGJlIGNyZWF0ZWQgZm9yIHRoaXMgZGlyZWN0aXZlLiBJZiBtdWx0
aXBsZSBkaXJlY3RpdmVzIG9uIHRoZQorICogc2FtZSBlbGVtZW50IHJlcXVlc3QgYSBuZXcgc2Nv
cGUsIG9ubHkgb25lIG5ldyBzY29wZSBpcyBjcmVhdGVkLiBUaGUgbmV3IHNjb3BlIHJ1bGUgZG9l
cyBub3QKKyAqIGFwcGx5IGZvciB0aGUgcm9vdCBvZiB0aGUgdGVtcGxhdGUgc2luY2UgdGhlIHJv
b3Qgb2YgdGhlIHRlbXBsYXRlIGFsd2F5cyBnZXRzIGEgbmV3IHNjb3BlLgorICoKKyAqICoqSWYg
c2V0IHRvIGB7fWAgKG9iamVjdCBoYXNoKSwqKiB0aGVuIGEgbmV3ICJpc29sYXRlIiBzY29wZSBp
cyBjcmVhdGVkLiBUaGUgJ2lzb2xhdGUnIHNjb3BlIGRpZmZlcnMgZnJvbQorICogbm9ybWFsIHNj
b3BlIGluIHRoYXQgaXQgZG9lcyBub3QgcHJvdG90eXBpY2FsbHkgaW5oZXJpdCBmcm9tIHRoZSBw
YXJlbnQgc2NvcGUuIFRoaXMgaXMgdXNlZnVsCisgKiB3aGVuIGNyZWF0aW5nIHJldXNhYmxlIGNv
bXBvbmVudHMsIHdoaWNoIHNob3VsZCBub3QgYWNjaWRlbnRhbGx5IHJlYWQgb3IgbW9kaWZ5IGRh
dGEgaW4gdGhlCisgKiBwYXJlbnQgc2NvcGUuCisgKgorICogVGhlICdpc29sYXRlJyBzY29wZSB0
YWtlcyBhbiBvYmplY3QgaGFzaCB3aGljaCBkZWZpbmVzIGEgc2V0IG9mIGxvY2FsIHNjb3BlIHBy
b3BlcnRpZXMKKyAqIGRlcml2ZWQgZnJvbSB0aGUgcGFyZW50IHNjb3BlLiBUaGVzZSBsb2NhbCBw
cm9wZXJ0aWVzIGFyZSB1c2VmdWwgZm9yIGFsaWFzaW5nIHZhbHVlcyBmb3IKKyAqIHRlbXBsYXRl
cy4gTG9jYWxzIGRlZmluaXRpb24gaXMgYSBoYXNoIG9mIGxvY2FsIHNjb3BlIHByb3BlcnR5IHRv
IGl0cyBzb3VyY2U6CisgKgorICogKiBgQGAgb3IgYEBhdHRyYCAtIGJpbmQgYSBsb2NhbCBzY29w
ZSBwcm9wZXJ0eSB0byB0aGUgdmFsdWUgb2YgRE9NIGF0dHJpYnV0ZS4gVGhlIHJlc3VsdCBpcwor
ICogICBhbHdheXMgYSBzdHJpbmcgc2luY2UgRE9NIGF0dHJpYnV0ZXMgYXJlIHN0cmluZ3MuIElm
IG5vIGBhdHRyYCBuYW1lIGlzIHNwZWNpZmllZCAgdGhlbiB0aGUKKyAqICAgYXR0cmlidXRlIG5h
bWUgaXMgYXNzdW1lZCB0byBiZSB0aGUgc2FtZSBhcyB0aGUgbG9jYWwgbmFtZS4KKyAqICAgR2l2
ZW4gYDx3aWRnZXQgbXktYXR0cj0iaGVsbG8ge3tuYW1lfX0iPmAgYW5kIHdpZGdldCBkZWZpbml0
aW9uCisgKiAgIG9mIGBzY29wZTogeyBsb2NhbE5hbWU6J0BteUF0dHInIH1gLCB0aGVuIHdpZGdl
dCBzY29wZSBwcm9wZXJ0eSBgbG9jYWxOYW1lYCB3aWxsIHJlZmxlY3QKKyAqICAgdGhlIGludGVy
cG9sYXRlZCB2YWx1ZSBvZiBgaGVsbG8ge3tuYW1lfX1gLiBBcyB0aGUgYG5hbWVgIGF0dHJpYnV0
ZSBjaGFuZ2VzIHNvIHdpbGwgdGhlCisgKiAgIGBsb2NhbE5hbWVgIHByb3BlcnR5IG9uIHRoZSB3
aWRnZXQgc2NvcGUuIFRoZSBgbmFtZWAgaXMgcmVhZCBmcm9tIHRoZSBwYXJlbnQgc2NvcGUgKG5v
dAorICogICBjb21wb25lbnQgc2NvcGUpLgorICoKKyAqICogYD1gIG9yIGA9YXR0cmAgLSBzZXQg
dXAgYmktZGlyZWN0aW9uYWwgYmluZGluZyBiZXR3ZWVuIGEgbG9jYWwgc2NvcGUgcHJvcGVydHkg
YW5kIHRoZQorICogICBwYXJlbnQgc2NvcGUgcHJvcGVydHkgb2YgbmFtZSBkZWZpbmVkIHZpYSB0
aGUgdmFsdWUgb2YgdGhlIGBhdHRyYCBhdHRyaWJ1dGUuIElmIG5vIGBhdHRyYAorICogICBuYW1l
IGlzIHNwZWNpZmllZCB0aGVuIHRoZSBhdHRyaWJ1dGUgbmFtZSBpcyBhc3N1bWVkIHRvIGJlIHRo
ZSBzYW1lIGFzIHRoZSBsb2NhbCBuYW1lLgorICogICBHaXZlbiBgPHdpZGdldCBteS1hdHRyPSJw
YXJlbnRNb2RlbCI+YCBhbmQgd2lkZ2V0IGRlZmluaXRpb24gb2YKKyAqICAgYHNjb3BlOiB7IGxv
Y2FsTW9kZWw6Jz1teUF0dHInIH1gLCB0aGVuIHdpZGdldCBzY29wZSBwcm9wZXJ0eSBgbG9jYWxN
b2RlbGAgd2lsbCByZWZsZWN0IHRoZQorICogICB2YWx1ZSBvZiBgcGFyZW50TW9kZWxgIG9uIHRo
ZSBwYXJlbnQgc2NvcGUuIEFueSBjaGFuZ2VzIHRvIGBwYXJlbnRNb2RlbGAgd2lsbCBiZSByZWZs
ZWN0ZWQKKyAqICAgaW4gYGxvY2FsTW9kZWxgIGFuZCBhbnkgY2hhbmdlcyBpbiBgbG9jYWxNb2Rl
bGAgd2lsbCByZWZsZWN0IGluIGBwYXJlbnRNb2RlbGAuIElmIHRoZSBwYXJlbnQKKyAqICAgc2Nv
cGUgcHJvcGVydHkgZG9lc24ndCBleGlzdCwgaXQgd2lsbCB0aHJvdyBhIE5PTl9BU1NJR05BQkxF
X01PREVMX0VYUFJFU1NJT04gZXhjZXB0aW9uLiBZb3UKKyAqICAgY2FuIGF2b2lkIHRoaXMgYmVo
YXZpb3IgdXNpbmcgYD0/YCBvciBgPT9hdHRyYCBpbiBvcmRlciB0byBmbGFnIHRoZSBwcm9wZXJ0
eSBhcyBvcHRpb25hbC4gSWYKKyAqICAgeW91IHdhbnQgdG8gc2hhbGxvdyB3YXRjaCBmb3IgY2hh
bmdlcyAoaS5lLiAkd2F0Y2hDb2xsZWN0aW9uIGluc3RlYWQgb2YgJHdhdGNoKSB5b3UgY2FuIHVz
ZQorICogICBgPSpgIG9yIGA9KmF0dHJgIChgPSo/YCBvciBgPSo/YXR0cmAgaWYgdGhlIHByb3Bl
cnR5IGlzIG9wdGlvbmFsKS4KKyAqCisgKiAqIGAmYCBvciBgJmF0dHJgIC0gcHJvdmlkZXMgYSB3
YXkgdG8gZXhlY3V0ZSBhbiBleHByZXNzaW9uIGluIHRoZSBjb250ZXh0IG9mIHRoZSBwYXJlbnQg
c2NvcGUuCisgKiAgIElmIG5vIGBhdHRyYCBuYW1lIGlzIHNwZWNpZmllZCB0aGVuIHRoZSBhdHRy
aWJ1dGUgbmFtZSBpcyBhc3N1bWVkIHRvIGJlIHRoZSBzYW1lIGFzIHRoZQorICogICBsb2NhbCBu
YW1lLiBHaXZlbiBgPHdpZGdldCBteS1hdHRyPSJjb3VudCA9IGNvdW50ICsgdmFsdWUiPmAgYW5k
IHdpZGdldCBkZWZpbml0aW9uIG9mCisgKiAgIGBzY29wZTogeyBsb2NhbEZuOicmbXlBdHRyJyB9
YCwgdGhlbiBpc29sYXRlIHNjb3BlIHByb3BlcnR5IGBsb2NhbEZuYCB3aWxsIHBvaW50IHRvCisg
KiAgIGEgZnVuY3Rpb24gd3JhcHBlciBmb3IgdGhlIGBjb3VudCA9IGNvdW50ICsgdmFsdWVgIGV4
cHJlc3Npb24uIE9mdGVuIGl0J3MgZGVzaXJhYmxlIHRvCisgKiAgIHBhc3MgZGF0YSBmcm9tIHRo
ZSBpc29sYXRlZCBzY29wZSB2aWEgYW4gZXhwcmVzc2lvbiB0byB0aGUgcGFyZW50IHNjb3BlLCB0
aGlzIGNhbiBiZQorICogICBkb25lIGJ5IHBhc3NpbmcgYSBtYXAgb2YgbG9jYWwgdmFyaWFibGUg
bmFtZXMgYW5kIHZhbHVlcyBpbnRvIHRoZSBleHByZXNzaW9uIHdyYXBwZXIgZm4uCisgKiAgIEZv
ciBleGFtcGxlLCBpZiB0aGUgZXhwcmVzc2lvbiBpcyBgaW5jcmVtZW50KGFtb3VudClgIHRoZW4g
d2UgY2FuIHNwZWNpZnkgdGhlIGFtb3VudCB2YWx1ZQorICogICBieSBjYWxsaW5nIHRoZSBgbG9j
YWxGbmAgYXMgYGxvY2FsRm4oe2Ftb3VudDogMjJ9KWAuCisgKgorICoKKyAqICMjIyMgYGJpbmRU
b0NvbnRyb2xsZXJgCisgKiBXaGVuIGFuIGlzb2xhdGUgc2NvcGUgaXMgdXNlZCBmb3IgYSBjb21w
b25lbnQgKHNlZSBhYm92ZSksIGFuZCBgY29udHJvbGxlckFzYCBpcyB1c2VkLCBgYmluZFRvQ29u
dHJvbGxlcjogdHJ1ZWAgd2lsbAorICogYWxsb3cgYSBjb21wb25lbnQgdG8gaGF2ZSBpdHMgcHJv
cGVydGllcyBib3VuZCB0byB0aGUgY29udHJvbGxlciwgcmF0aGVyIHRoYW4gdG8gc2NvcGUuIFdo
ZW4gdGhlIGNvbnRyb2xsZXIKKyAqIGlzIGluc3RhbnRpYXRlZCwgdGhlIGluaXRpYWwgdmFsdWVz
IG9mIHRoZSBpc29sYXRlIHNjb3BlIGJpbmRpbmdzIGFyZSBhbHJlYWR5IGF2YWlsYWJsZS4KKyAq
CisgKiAjIyMjIGBjb250cm9sbGVyYAorICogQ29udHJvbGxlciBjb25zdHJ1Y3RvciBmdW5jdGlv
bi4gVGhlIGNvbnRyb2xsZXIgaXMgaW5zdGFudGlhdGVkIGJlZm9yZSB0aGUKKyAqIHByZS1saW5r
aW5nIHBoYXNlIGFuZCBpdCBpcyBzaGFyZWQgd2l0aCBvdGhlciBkaXJlY3RpdmVzIChzZWUKKyAq
IGByZXF1aXJlYCBhdHRyaWJ1dGUpLiBUaGlzIGFsbG93cyB0aGUgZGlyZWN0aXZlcyB0byBjb21t
dW5pY2F0ZSB3aXRoIGVhY2ggb3RoZXIgYW5kIGF1Z21lbnQKKyAqIGVhY2ggb3RoZXIncyBiZWhh
dmlvci4gVGhlIGNvbnRyb2xsZXIgaXMgaW5qZWN0YWJsZSAoYW5kIHN1cHBvcnRzIGJyYWNrZXQg
bm90YXRpb24pIHdpdGggdGhlIGZvbGxvd2luZyBsb2NhbHM6CisgKgorICogKiBgJHNjb3BlYCAt
IEN1cnJlbnQgc2NvcGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBlbGVtZW50CisgKiAqIGAkZWxlbWVu
dGAgLSBDdXJyZW50IGVsZW1lbnQKKyAqICogYCRhdHRyc2AgLSBDdXJyZW50IGF0dHJpYnV0ZXMg
b2JqZWN0IGZvciB0aGUgZWxlbWVudAorICogKiBgJHRyYW5zY2x1ZGVgIC0gQSB0cmFuc2NsdWRl
IGxpbmtpbmcgZnVuY3Rpb24gcHJlLWJvdW5kIHRvIHRoZSBjb3JyZWN0IHRyYW5zY2x1c2lvbiBz
Y29wZToKKyAqICAgYGZ1bmN0aW9uKFtzY29wZV0sIGNsb25lTGlua2luZ0ZuLCBmdXR1cmVQYXJl
bnRFbGVtZW50KWAuCisgKiAgICAqIGBzY29wZWA6IG9wdGlvbmFsIGFyZ3VtZW50IHRvIG92ZXJy
aWRlIHRoZSBzY29wZS4KKyAqICAgICogYGNsb25lTGlua2luZ0ZuYDogb3B0aW9uYWwgYXJndW1l
bnQgdG8gY3JlYXRlIGNsb25lcyBvZiB0aGUgb3JpZ2luYWwgdHJhbnNjbHVkZWQgY29udGVudC4K
KyAqICAgICogYGZ1dHVyZVBhcmVudEVsZW1lbnRgOgorICogICAgICAgICogZGVmaW5lcyB0aGUg
cGFyZW50IHRvIHdoaWNoIHRoZSBgY2xvbmVMaW5raW5nRm5gIHdpbGwgYWRkIHRoZSBjbG9uZWQg
ZWxlbWVudHMuCisgKiAgICAgICAgKiBkZWZhdWx0OiBgJGVsZW1lbnQucGFyZW50KClgIHJlc3Au
IGAkZWxlbWVudGAgZm9yIGB0cmFuc2NsdWRlOidlbGVtZW50J2AgcmVzcC4gYHRyYW5zY2x1ZGU6
dHJ1ZWAuCisgKiAgICAgICAgKiBvbmx5IG5lZWRlZCBmb3IgdHJhbnNjbHVkZXMgdGhhdCBhcmUg
YWxsb3dlZCB0byBjb250YWluIG5vbiBodG1sIGVsZW1lbnRzIChlLmcuIFNWRyBlbGVtZW50cykK
KyAqICAgICAgICAgIGFuZCB3aGVuIHRoZSBgY2xvbmVMaW5raW5GbmAgaXMgcGFzc2VkLAorICog
ICAgICAgICAgYXMgdGhvc2UgZWxlbWVudHMgbmVlZCB0byBjcmVhdGVkIGFuZCBjbG9uZWQgaW4g
YSBzcGVjaWFsIHdheSB3aGVuIHRoZXkgYXJlIGRlZmluZWQgb3V0c2lkZSB0aGVpcgorICogICAg
ICAgICAgdXN1YWwgY29udGFpbmVycyAoZS5nLiBsaWtlIGA8c3ZnPmApLgorICogICAgICAgICog
U2VlIGFsc28gdGhlIGBkaXJlY3RpdmUudGVtcGxhdGVOYW1lc3BhY2VgIHByb3BlcnR5LgorICoK
KyAqCisgKiAjIyMjIGByZXF1aXJlYAorICogUmVxdWlyZSBhbm90aGVyIGRpcmVjdGl2ZSBhbmQg
aW5qZWN0IGl0cyBjb250cm9sbGVyIGFzIHRoZSBmb3VydGggYXJndW1lbnQgdG8gdGhlIGxpbmtp
bmcgZnVuY3Rpb24uIFRoZQorICogYHJlcXVpcmVgIHRha2VzIGEgc3RyaW5nIG5hbWUgKG9yIGFy
cmF5IG9mIHN0cmluZ3MpIG9mIHRoZSBkaXJlY3RpdmUocykgdG8gcGFzcyBpbi4gSWYgYW4gYXJy
YXkgaXMgdXNlZCwgdGhlCisgKiBpbmplY3RlZCBhcmd1bWVudCB3aWxsIGJlIGFuIGFycmF5IGlu
IGNvcnJlc3BvbmRpbmcgb3JkZXIuIElmIG5vIHN1Y2ggZGlyZWN0aXZlIGNhbiBiZQorICogZm91
bmQsIG9yIGlmIHRoZSBkaXJlY3RpdmUgZG9lcyBub3QgaGF2ZSBhIGNvbnRyb2xsZXIsIHRoZW4g
YW4gZXJyb3IgaXMgcmFpc2VkICh1bmxlc3Mgbm8gbGluayBmdW5jdGlvbgorICogaXMgc3BlY2lm
aWVkLCBpbiB3aGljaCBjYXNlIGVycm9yIGNoZWNraW5nIGlzIHNraXBwZWQpLiBUaGUgbmFtZSBj
YW4gYmUgcHJlZml4ZWQgd2l0aDoKKyAqCisgKiAqIChubyBwcmVmaXgpIC0gTG9jYXRlIHRoZSBy
ZXF1aXJlZCBjb250cm9sbGVyIG9uIHRoZSBjdXJyZW50IGVsZW1lbnQuIFRocm93IGFuIGVycm9y
IGlmIG5vdCBmb3VuZC4KKyAqICogYD9gIC0gQXR0ZW1wdCB0byBsb2NhdGUgdGhlIHJlcXVpcmVk
IGNvbnRyb2xsZXIgb3IgcGFzcyBgbnVsbGAgdG8gdGhlIGBsaW5rYCBmbiBpZiBub3QgZm91bmQu
CisgKiAqIGBeYCAtIExvY2F0ZSB0aGUgcmVxdWlyZWQgY29udHJvbGxlciBieSBzZWFyY2hpbmcg
dGhlIGVsZW1lbnQgYW5kIGl0cyBwYXJlbnRzLiBUaHJvdyBhbiBlcnJvciBpZiBub3QgZm91bmQu
CisgKiAqIGBeXmAgLSBMb2NhdGUgdGhlIHJlcXVpcmVkIGNvbnRyb2xsZXIgYnkgc2VhcmNoaW5n
IHRoZSBlbGVtZW50J3MgcGFyZW50cy4gVGhyb3cgYW4gZXJyb3IgaWYgbm90IGZvdW5kLgorICog
KiBgP15gIC0gQXR0ZW1wdCB0byBsb2NhdGUgdGhlIHJlcXVpcmVkIGNvbnRyb2xsZXIgYnkgc2Vh
cmNoaW5nIHRoZSBlbGVtZW50IGFuZCBpdHMgcGFyZW50cyBvciBwYXNzCisgKiAgIGBudWxsYCB0
byB0aGUgYGxpbmtgIGZuIGlmIG5vdCBmb3VuZC4KKyAqICogYD9eXmAgLSBBdHRlbXB0IHRvIGxv
Y2F0ZSB0aGUgcmVxdWlyZWQgY29udHJvbGxlciBieSBzZWFyY2hpbmcgdGhlIGVsZW1lbnQncyBw
YXJlbnRzLCBvciBwYXNzCisgKiAgIGBudWxsYCB0byB0aGUgYGxpbmtgIGZuIGlmIG5vdCBmb3Vu
ZC4KKyAqCisgKgorICogIyMjIyBgY29udHJvbGxlckFzYAorICogSWRlbnRpZmllciBuYW1lIGZv
ciBhIHJlZmVyZW5jZSB0byB0aGUgY29udHJvbGxlciBpbiB0aGUgZGlyZWN0aXZlJ3Mgc2NvcGUu
CisgKiBUaGlzIGFsbG93cyB0aGUgY29udHJvbGxlciB0byBiZSByZWZlcmVuY2VkIGZyb20gdGhl
IGRpcmVjdGl2ZSB0ZW1wbGF0ZS4gVGhlIGRpcmVjdGl2ZQorICogbmVlZHMgdG8gZGVmaW5lIGEg
c2NvcGUgZm9yIHRoaXMgY29uZmlndXJhdGlvbiB0byBiZSB1c2VkLiBVc2VmdWwgaW4gdGhlIGNh
c2Ugd2hlbgorICogZGlyZWN0aXZlIGlzIHVzZWQgYXMgY29tcG9uZW50LgorICoKKyAqCisgKiAj
IyMjIGByZXN0cmljdGAKKyAqIFN0cmluZyBvZiBzdWJzZXQgb2YgYEVBQ01gIHdoaWNoIHJlc3Ry
aWN0cyB0aGUgZGlyZWN0aXZlIHRvIGEgc3BlY2lmaWMgZGlyZWN0aXZlCisgKiBkZWNsYXJhdGlv
biBzdHlsZS4gSWYgb21pdHRlZCwgdGhlIGRlZmF1bHRzIChlbGVtZW50cyBhbmQgYXR0cmlidXRl
cykgYXJlIHVzZWQuCisgKgorICogKiBgRWAgLSBFbGVtZW50IG5hbWUgKGRlZmF1bHQpOiBgPG15
LWRpcmVjdGl2ZT48L215LWRpcmVjdGl2ZT5gCisgKiAqIGBBYCAtIEF0dHJpYnV0ZSAoZGVmYXVs
dCk6IGA8ZGl2IG15LWRpcmVjdGl2ZT0iZXhwIj48L2Rpdj5gCisgKiAqIGBDYCAtIENsYXNzOiBg
PGRpdiBjbGFzcz0ibXktZGlyZWN0aXZlOiBleHA7Ij48L2Rpdj5gCisgKiAqIGBNYCAtIENvbW1l
bnQ6IGA8IS0tIGRpcmVjdGl2ZTogbXktZGlyZWN0aXZlIGV4cCAtLT5gCisgKgorICoKKyAqICMj
IyMgYHRlbXBsYXRlTmFtZXNwYWNlYAorICogU3RyaW5nIHJlcHJlc2VudGluZyB0aGUgZG9jdW1l
bnQgdHlwZSB1c2VkIGJ5IHRoZSBtYXJrdXAgaW4gdGhlIHRlbXBsYXRlLgorICogQW5ndWxhckpT
IG5lZWRzIHRoaXMgaW5mb3JtYXRpb24gYXMgdGhvc2UgZWxlbWVudHMgbmVlZCB0byBiZSBjcmVh
dGVkIGFuZCBjbG9uZWQKKyAqIGluIGEgc3BlY2lhbCB3YXkgd2hlbiB0aGV5IGFyZSBkZWZpbmVk
IG91dHNpZGUgdGhlaXIgdXN1YWwgY29udGFpbmVycyBsaWtlIGA8c3ZnPmAgYW5kIGA8bWF0aD5g
LgorICoKKyAqICogYGh0bWxgIC0gQWxsIHJvb3Qgbm9kZXMgaW4gdGhlIHRlbXBsYXRlIGFyZSBI
VE1MLiBSb290IG5vZGVzIG1heSBhbHNvIGJlCisgKiAgIHRvcC1sZXZlbCBlbGVtZW50cyBzdWNo
IGFzIGA8c3ZnPmAgb3IgYDxtYXRoPmAuCisgKiAqIGBzdmdgIC0gVGhlIHJvb3Qgbm9kZXMgaW4g
dGhlIHRlbXBsYXRlIGFyZSBTVkcgZWxlbWVudHMgKGV4Y2x1ZGluZyBgPG1hdGg+YCkuCisgKiAq
IGBtYXRoYCAtIFRoZSByb290IG5vZGVzIGluIHRoZSB0ZW1wbGF0ZSBhcmUgTWF0aE1MIGVsZW1l
bnRzIChleGNsdWRpbmcgYDxzdmc+YCkuCisgKgorICogSWYgbm8gYHRlbXBsYXRlTmFtZXNwYWNl
YCBpcyBzcGVjaWZpZWQsIHRoZW4gdGhlIG5hbWVzcGFjZSBpcyBjb25zaWRlcmVkIHRvIGJlIGBo
dG1sYC4KKyAqCisgKiAjIyMjIGB0ZW1wbGF0ZWAKKyAqIEhUTUwgbWFya3VwIHRoYXQgbWF5Ogor
ICogKiBSZXBsYWNlIHRoZSBjb250ZW50cyBvZiB0aGUgZGlyZWN0aXZlJ3MgZWxlbWVudCAoZGVm
YXVsdCkuCisgKiAqIFJlcGxhY2UgdGhlIGRpcmVjdGl2ZSdzIGVsZW1lbnQgaXRzZWxmIChpZiBg
cmVwbGFjZWAgaXMgdHJ1ZSAtIERFUFJFQ0FURUQpLgorICogKiBXcmFwIHRoZSBjb250ZW50cyBv
ZiB0aGUgZGlyZWN0aXZlJ3MgZWxlbWVudCAoaWYgYHRyYW5zY2x1ZGVgIGlzIHRydWUpLgorICoK
KyAqIFZhbHVlIG1heSBiZToKKyAqCisgKiAqIEEgc3RyaW5nLiBGb3IgZXhhbXBsZSBgPGRpdiBy
ZWQtb24taG92ZXI+e3tkZWxldGVfc3RyfX08L2Rpdj5gLgorICogKiBBIGZ1bmN0aW9uIHdoaWNo
IHRha2VzIHR3byBhcmd1bWVudHMgYHRFbGVtZW50YCBhbmQgYHRBdHRyc2AgKGRlc2NyaWJlZCBp
biB0aGUgYGNvbXBpbGVgCisgKiAgIGZ1bmN0aW9uIGFwaSBiZWxvdykgYW5kIHJldHVybnMgYSBz
dHJpbmcgdmFsdWUuCisgKgorICoKKyAqICMjIyMgYHRlbXBsYXRlVXJsYAorICogVGhpcyBpcyBz
aW1pbGFyIHRvIGB0ZW1wbGF0ZWAgYnV0IHRoZSB0ZW1wbGF0ZSBpcyBsb2FkZWQgZnJvbSB0aGUg
c3BlY2lmaWVkIFVSTCwgYXN5bmNocm9ub3VzbHkuCisgKgorICogQmVjYXVzZSB0ZW1wbGF0ZSBs
b2FkaW5nIGlzIGFzeW5jaHJvbm91cyB0aGUgY29tcGlsZXIgd2lsbCBzdXNwZW5kIGNvbXBpbGF0
aW9uIG9mIGRpcmVjdGl2ZXMgb24gdGhhdCBlbGVtZW50CisgKiBmb3IgbGF0ZXIgd2hlbiB0aGUg
dGVtcGxhdGUgaGFzIGJlZW4gcmVzb2x2ZWQuICBJbiB0aGUgbWVhbnRpbWUgaXQgd2lsbCBjb250
aW51ZSB0byBjb21waWxlIGFuZCBsaW5rCisgKiBzaWJsaW5nIGFuZCBwYXJlbnQgZWxlbWVudHMg
YXMgdGhvdWdoIHRoaXMgZWxlbWVudCBoYWQgbm90IGNvbnRhaW5lZCBhbnkgZGlyZWN0aXZlcy4K
KyAqCisgKiBUaGUgY29tcGlsZXIgZG9lcyBub3Qgc3VzcGVuZCB0aGUgZW50aXJlIGNvbXBpbGF0
aW9uIHRvIHdhaXQgZm9yIHRlbXBsYXRlcyB0byBiZSBsb2FkZWQgYmVjYXVzZSB0aGlzCisgKiB3
b3VsZCByZXN1bHQgaW4gdGhlIHdob2xlIGFwcCAic3RhbGxpbmciIHVudGlsIGFsbCB0ZW1wbGF0
ZXMgYXJlIGxvYWRlZCBhc3luY2hyb25vdXNseSAtIGV2ZW4gaW4gdGhlCisgKiBjYXNlIHdoZW4g
b25seSBvbmUgZGVlcGx5IG5lc3RlZCBkaXJlY3RpdmUgaGFzIGB0ZW1wbGF0ZVVybGAuCisgKgor
ICogVGVtcGxhdGUgbG9hZGluZyBpcyBhc3luY2hyb25vdXMgZXZlbiBpZiB0aGUgdGVtcGxhdGUg
aGFzIGJlZW4gcHJlbG9hZGVkIGludG8gdGhlIHtAbGluayAkdGVtcGxhdGVDYWNoZX0KKyAqCisg
KiBZb3UgY2FuIHNwZWNpZnkgYHRlbXBsYXRlVXJsYCBhcyBhIHN0cmluZyByZXByZXNlbnRpbmcg
dGhlIFVSTCBvciBhcyBhIGZ1bmN0aW9uIHdoaWNoIHRha2VzIHR3bworICogYXJndW1lbnRzIGB0
RWxlbWVudGAgYW5kIGB0QXR0cnNgIChkZXNjcmliZWQgaW4gdGhlIGBjb21waWxlYCBmdW5jdGlv
biBhcGkgYmVsb3cpIGFuZCByZXR1cm5zCisgKiBhIHN0cmluZyB2YWx1ZSByZXByZXNlbnRpbmcg
dGhlIHVybC4gIEluIGVpdGhlciBjYXNlLCB0aGUgdGVtcGxhdGUgVVJMIGlzIHBhc3NlZCB0aHJv
dWdoIHtAbGluaworICogJHNjZSNnZXRUcnVzdGVkUmVzb3VyY2VVcmwgJHNjZS5nZXRUcnVzdGVk
UmVzb3VyY2VVcmx9LgorICoKKyAqCisgKiAjIyMjIGByZXBsYWNlYCAoWypERVBSRUNBVEVEKiFd
LCB3aWxsIGJlIHJlbW92ZWQgaW4gbmV4dCBtYWpvciByZWxlYXNlIC0gaS5lLiB2Mi4wKQorICog
c3BlY2lmeSB3aGF0IHRoZSB0ZW1wbGF0ZSBzaG91bGQgcmVwbGFjZS4gRGVmYXVsdHMgdG8gYGZh
bHNlYC4KKyAqCisgKiAqIGB0cnVlYCAtIHRoZSB0ZW1wbGF0ZSB3aWxsIHJlcGxhY2UgdGhlIGRp
cmVjdGl2ZSdzIGVsZW1lbnQuCisgKiAqIGBmYWxzZWAgLSB0aGUgdGVtcGxhdGUgd2lsbCByZXBs
YWNlIHRoZSBjb250ZW50cyBvZiB0aGUgZGlyZWN0aXZlJ3MgZWxlbWVudC4KKyAqCisgKiBUaGUg
cmVwbGFjZW1lbnQgcHJvY2VzcyBtaWdyYXRlcyBhbGwgb2YgdGhlIGF0dHJpYnV0ZXMgLyBjbGFz
c2VzIGZyb20gdGhlIG9sZCBlbGVtZW50IHRvIHRoZSBuZXcKKyAqIG9uZS4gU2VlIHRoZSB7QGxp
bmsgZ3VpZGUvZGlyZWN0aXZlI3RlbXBsYXRlLWV4cGFuZGluZy1kaXJlY3RpdmUKKyAqIERpcmVj
dGl2ZXMgR3VpZGV9IGZvciBhbiBleGFtcGxlLgorICoKKyAqIFRoZXJlIGFyZSB2ZXJ5IGZldyBz
Y2VuYXJpb3Mgd2hlcmUgZWxlbWVudCByZXBsYWNlbWVudCBpcyByZXF1aXJlZCBmb3IgdGhlIGFw
cGxpY2F0aW9uIGZ1bmN0aW9uLAorICogdGhlIG1haW4gb25lIGJlaW5nIHJldXNhYmxlIGN1c3Rv
bSBjb21wb25lbnRzIHRoYXQgYXJlIHVzZWQgd2l0aGluIFNWRyBjb250ZXh0cworICogKGJlY2F1
c2UgU1ZHIGRvZXNuJ3Qgd29yayB3aXRoIGN1c3RvbSBlbGVtZW50cyBpbiB0aGUgRE9NIHRyZWUp
LgorICoKKyAqICMjIyMgYHRyYW5zY2x1ZGVgCisgKiBFeHRyYWN0IHRoZSBjb250ZW50cyBvZiB0
aGUgZWxlbWVudCB3aGVyZSB0aGUgZGlyZWN0aXZlIGFwcGVhcnMgYW5kIG1ha2UgaXQgYXZhaWxh
YmxlIHRvIHRoZSBkaXJlY3RpdmUuCisgKiBUaGUgY29udGVudHMgYXJlIGNvbXBpbGVkIGFuZCBw
cm92aWRlZCB0byB0aGUgZGlyZWN0aXZlIGFzIGEgKip0cmFuc2NsdXNpb24gZnVuY3Rpb24qKi4g
U2VlIHRoZQorICoge0BsaW5rICRjb21waWxlI3RyYW5zY2x1c2lvbiBUcmFuc2NsdXNpb259IHNl
Y3Rpb24gYmVsb3cuCisgKgorICogVGhlcmUgYXJlIHR3byBraW5kcyBvZiB0cmFuc2NsdXNpb24g
ZGVwZW5kaW5nIHVwb24gd2hldGhlciB5b3Ugd2FudCB0byB0cmFuc2NsdWRlIGp1c3QgdGhlIGNv
bnRlbnRzIG9mIHRoZQorICogZGlyZWN0aXZlJ3MgZWxlbWVudCBvciB0aGUgZW50aXJlIGVsZW1l
bnQ6CisgKgorICogKiBgdHJ1ZWAgLSB0cmFuc2NsdWRlIHRoZSBjb250ZW50IChpLmUuIHRoZSBj
aGlsZCBub2Rlcykgb2YgdGhlIGRpcmVjdGl2ZSdzIGVsZW1lbnQuCisgKiAqIGAnZWxlbWVudCdg
IC0gdHJhbnNjbHVkZSB0aGUgd2hvbGUgb2YgdGhlIGRpcmVjdGl2ZSdzIGVsZW1lbnQgaW5jbHVk
aW5nIGFueSBkaXJlY3RpdmVzIG9uIHRoaXMKKyAqICAgZWxlbWVudCB0aGF0IGRlZmluZWQgYXQg
YSBsb3dlciBwcmlvcml0eSB0aGFuIHRoaXMgZGlyZWN0aXZlLiBXaGVuIHVzZWQsIHRoZSBgdGVt
cGxhdGVgCisgKiAgIHByb3BlcnR5IGlzIGlnbm9yZWQuCisgKgorICoKKyAqICMjIyMgYGNvbXBp
bGVgCisgKgorICogYGBganMKKyAqICAgZnVuY3Rpb24gY29tcGlsZSh0RWxlbWVudCwgdEF0dHJz
LCB0cmFuc2NsdWRlKSB7IC4uLiB9CisgKiBgYGAKKyAqCisgKiBUaGUgY29tcGlsZSBmdW5jdGlv
biBkZWFscyB3aXRoIHRyYW5zZm9ybWluZyB0aGUgdGVtcGxhdGUgRE9NLiBTaW5jZSBtb3N0IGRp
cmVjdGl2ZXMgZG8gbm90IGRvCisgKiB0ZW1wbGF0ZSB0cmFuc2Zvcm1hdGlvbiwgaXQgaXMgbm90
IHVzZWQgb2Z0ZW4uIFRoZSBjb21waWxlIGZ1bmN0aW9uIHRha2VzIHRoZSBmb2xsb3dpbmcgYXJn
dW1lbnRzOgorICoKKyAqICAgKiBgdEVsZW1lbnRgIC0gdGVtcGxhdGUgZWxlbWVudCAtIFRoZSBl
bGVtZW50IHdoZXJlIHRoZSBkaXJlY3RpdmUgaGFzIGJlZW4gZGVjbGFyZWQuIEl0IGlzCisgKiAg
ICAgc2FmZSB0byBkbyB0ZW1wbGF0ZSB0cmFuc2Zvcm1hdGlvbiBvbiB0aGUgZWxlbWVudCBhbmQg
Y2hpbGQgZWxlbWVudHMgb25seS4KKyAqCisgKiAgICogYHRBdHRyc2AgLSB0ZW1wbGF0ZSBhdHRy
aWJ1dGVzIC0gTm9ybWFsaXplZCBsaXN0IG9mIGF0dHJpYnV0ZXMgZGVjbGFyZWQgb24gdGhpcyBl
bGVtZW50IHNoYXJlZAorICogICAgIGJldHdlZW4gYWxsIGRpcmVjdGl2ZSBjb21waWxlIGZ1bmN0
aW9ucy4KKyAqCisgKiAgICogYHRyYW5zY2x1ZGVgIC0gIFsqREVQUkVDQVRFRCohXSBBIHRyYW5z
Y2x1ZGUgbGlua2luZyBmdW5jdGlvbjogYGZ1bmN0aW9uKHNjb3BlLCBjbG9uZUxpbmtpbmdGbilg
CisgKgorICogPGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtd2FybmluZyI+CisgKiAqKk5vdGU6Kiog
VGhlIHRlbXBsYXRlIGluc3RhbmNlIGFuZCB0aGUgbGluayBpbnN0YW5jZSBtYXkgYmUgZGlmZmVy
ZW50IG9iamVjdHMgaWYgdGhlIHRlbXBsYXRlIGhhcworICogYmVlbiBjbG9uZWQuIEZvciB0aGlz
IHJlYXNvbiBpdCBpcyAqKm5vdCoqIHNhZmUgdG8gZG8gYW55dGhpbmcgb3RoZXIgdGhhbiBET00g
dHJhbnNmb3JtYXRpb25zIHRoYXQKKyAqIGFwcGx5IHRvIGFsbCBjbG9uZWQgRE9NIG5vZGVzIHdp
dGhpbiB0aGUgY29tcGlsZSBmdW5jdGlvbi4gU3BlY2lmaWNhbGx5LCBET00gbGlzdGVuZXIgcmVn
aXN0cmF0aW9uCisgKiBzaG91bGQgYmUgZG9uZSBpbiBhIGxpbmtpbmcgZnVuY3Rpb24gcmF0aGVy
IHRoYW4gaW4gYSBjb21waWxlIGZ1bmN0aW9uLgorICogPC9kaXY+CisKKyAqIDxkaXYgY2xhc3M9
ImFsZXJ0IGFsZXJ0LXdhcm5pbmciPgorICogKipOb3RlOioqIFRoZSBjb21waWxlIGZ1bmN0aW9u
IGNhbm5vdCBoYW5kbGUgZGlyZWN0aXZlcyB0aGF0IHJlY3Vyc2l2ZWx5IHVzZSB0aGVtc2VsdmVz
IGluIHRoZWlyCisgKiBvd24gdGVtcGxhdGVzIG9yIGNvbXBpbGUgZnVuY3Rpb25zLiBDb21waWxp
bmcgdGhlc2UgZGlyZWN0aXZlcyByZXN1bHRzIGluIGFuIGluZmluaXRlIGxvb3AgYW5kIGEKKyAq
IHN0YWNrIG92ZXJmbG93IGVycm9ycy4KKyAqCisgKiBUaGlzIGNhbiBiZSBhdm9pZGVkIGJ5IG1h
bnVhbGx5IHVzaW5nICRjb21waWxlIGluIHRoZSBwb3N0TGluayBmdW5jdGlvbiB0byBpbXBlcmF0
aXZlbHkgY29tcGlsZQorICogYSBkaXJlY3RpdmUncyB0ZW1wbGF0ZSBpbnN0ZWFkIG9mIHJlbHlp
bmcgb24gYXV0b21hdGljIHRlbXBsYXRlIGNvbXBpbGF0aW9uIHZpYSBgdGVtcGxhdGVgIG9yCisg
KiBgdGVtcGxhdGVVcmxgIGRlY2xhcmF0aW9uIG9yIG1hbnVhbCBjb21waWxhdGlvbiBpbnNpZGUg
dGhlIGNvbXBpbGUgZnVuY3Rpb24uCisgKiA8L2Rpdj4KKyAqCisgKiA8ZGl2IGNsYXNzPSJhbGVy
dCBhbGVydC1kYW5nZXIiPgorICogKipOb3RlOioqIFRoZSBgdHJhbnNjbHVkZWAgZnVuY3Rpb24g
dGhhdCBpcyBwYXNzZWQgdG8gdGhlIGNvbXBpbGUgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZCwgYXMg
aXQKKyAqICAgZS5nLiBkb2VzIG5vdCBrbm93IGFib3V0IHRoZSByaWdodCBvdXRlciBzY29wZS4g
UGxlYXNlIHVzZSB0aGUgdHJhbnNjbHVkZSBmdW5jdGlvbiB0aGF0IGlzIHBhc3NlZAorICogICB0
byB0aGUgbGluayBmdW5jdGlvbiBpbnN0ZWFkLgorICogPC9kaXY+CisKKyAqIEEgY29tcGlsZSBm
dW5jdGlvbiBjYW4gaGF2ZSBhIHJldHVybiB2YWx1ZSB3aGljaCBjYW4gYmUgZWl0aGVyIGEgZnVu
Y3Rpb24gb3IgYW4gb2JqZWN0LgorICoKKyAqICogcmV0dXJuaW5nIGEgKHBvc3QtbGluaykgZnVu
Y3Rpb24gLSBpcyBlcXVpdmFsZW50IHRvIHJlZ2lzdGVyaW5nIHRoZSBsaW5raW5nIGZ1bmN0aW9u
IHZpYSB0aGUKKyAqICAgYGxpbmtgIHByb3BlcnR5IG9mIHRoZSBjb25maWcgb2JqZWN0IHdoZW4g
dGhlIGNvbXBpbGUgZnVuY3Rpb24gaXMgZW1wdHkuCisgKgorICogKiByZXR1cm5pbmcgYW4gb2Jq
ZWN0IHdpdGggZnVuY3Rpb24ocykgcmVnaXN0ZXJlZCB2aWEgYHByZWAgYW5kIGBwb3N0YCBwcm9w
ZXJ0aWVzIC0gYWxsb3dzIHlvdSB0bworICogICBjb250cm9sIHdoZW4gYSBsaW5raW5nIGZ1bmN0
aW9uIHNob3VsZCBiZSBjYWxsZWQgZHVyaW5nIHRoZSBsaW5raW5nIHBoYXNlLiBTZWUgaW5mbyBh
Ym91dAorICogICBwcmUtbGlua2luZyBhbmQgcG9zdC1saW5raW5nIGZ1bmN0aW9ucyBiZWxvdy4K
KyAqCisgKgorICogIyMjIyBgbGlua2AKKyAqIFRoaXMgcHJvcGVydHkgaXMgdXNlZCBvbmx5IGlm
IHRoZSBgY29tcGlsZWAgcHJvcGVydHkgaXMgbm90IGRlZmluZWQuCisgKgorICogYGBganMKKyAq
ICAgZnVuY3Rpb24gbGluayhzY29wZSwgaUVsZW1lbnQsIGlBdHRycywgY29udHJvbGxlciwgdHJh
bnNjbHVkZUZuKSB7IC4uLiB9CisgKiBgYGAKKyAqCisgKiBUaGUgbGluayBmdW5jdGlvbiBpcyBy
ZXNwb25zaWJsZSBmb3IgcmVnaXN0ZXJpbmcgRE9NIGxpc3RlbmVycyBhcyB3ZWxsIGFzIHVwZGF0
aW5nIHRoZSBET00uIEl0IGlzCisgKiBleGVjdXRlZCBhZnRlciB0aGUgdGVtcGxhdGUgaGFzIGJl
ZW4gY2xvbmVkLiBUaGlzIGlzIHdoZXJlIG1vc3Qgb2YgdGhlIGRpcmVjdGl2ZSBsb2dpYyB3aWxs
IGJlCisgKiBwdXQuCisgKgorICogICAqIGBzY29wZWAgLSB7QGxpbmsgbmcuJHJvb3RTY29wZS5T
Y29wZSBTY29wZX0gLSBUaGUgc2NvcGUgdG8gYmUgdXNlZCBieSB0aGUKKyAqICAgICBkaXJlY3Rp
dmUgZm9yIHJlZ2lzdGVyaW5nIHtAbGluayBuZy4kcm9vdFNjb3BlLlNjb3BlIyR3YXRjaCB3YXRj
aGVzfS4KKyAqCisgKiAgICogYGlFbGVtZW50YCAtIGluc3RhbmNlIGVsZW1lbnQgLSBUaGUgZWxl
bWVudCB3aGVyZSB0aGUgZGlyZWN0aXZlIGlzIHRvIGJlIHVzZWQuIEl0IGlzIHNhZmUgdG8KKyAq
ICAgICBtYW5pcHVsYXRlIHRoZSBjaGlsZHJlbiBvZiB0aGUgZWxlbWVudCBvbmx5IGluIGBwb3N0
TGlua2AgZnVuY3Rpb24gc2luY2UgdGhlIGNoaWxkcmVuIGhhdmUKKyAqICAgICBhbHJlYWR5IGJl
ZW4gbGlua2VkLgorICoKKyAqICAgKiBgaUF0dHJzYCAtIGluc3RhbmNlIGF0dHJpYnV0ZXMgLSBO
b3JtYWxpemVkIGxpc3Qgb2YgYXR0cmlidXRlcyBkZWNsYXJlZCBvbiB0aGlzIGVsZW1lbnQgc2hh
cmVkCisgKiAgICAgYmV0d2VlbiBhbGwgZGlyZWN0aXZlIGxpbmtpbmcgZnVuY3Rpb25zLgorICoK
KyAqICAgKiBgY29udHJvbGxlcmAgLSB0aGUgZGlyZWN0aXZlJ3MgcmVxdWlyZWQgY29udHJvbGxl
ciBpbnN0YW5jZShzKSAtIEluc3RhbmNlcyBhcmUgc2hhcmVkCisgKiAgICAgYW1vbmcgYWxsIGRp
cmVjdGl2ZXMsIHdoaWNoIGFsbG93cyB0aGUgZGlyZWN0aXZlcyB0byB1c2UgdGhlIGNvbnRyb2xs
ZXJzIGFzIGEgY29tbXVuaWNhdGlvbgorICogICAgIGNoYW5uZWwuIFRoZSBleGFjdCB2YWx1ZSBk
ZXBlbmRzIG9uIHRoZSBkaXJlY3RpdmUncyBgcmVxdWlyZWAgcHJvcGVydHk6CisgKiAgICAgICAq
IG5vIGNvbnRyb2xsZXIocykgcmVxdWlyZWQ6IHRoZSBkaXJlY3RpdmUncyBvd24gY29udHJvbGxl
ciwgb3IgYHVuZGVmaW5lZGAgaWYgaXQgZG9lc24ndCBoYXZlIG9uZQorICogICAgICAgKiBgc3Ry
aW5nYDogdGhlIGNvbnRyb2xsZXIgaW5zdGFuY2UKKyAqICAgICAgICogYGFycmF5YDogYXJyYXkg
b2YgY29udHJvbGxlciBpbnN0YW5jZXMKKyAqCisgKiAgICAgSWYgYSByZXF1aXJlZCBjb250cm9s
bGVyIGNhbm5vdCBiZSBmb3VuZCwgYW5kIGl0IGlzIG9wdGlvbmFsLCB0aGUgaW5zdGFuY2UgaXMg
YG51bGxgLAorICogICAgIG90aGVyd2lzZSB0aGUge0BsaW5rIGVycm9yOiRjb21waWxlOmN0cmVx
IE1pc3NpbmcgUmVxdWlyZWQgQ29udHJvbGxlcn0gZXJyb3IgaXMgdGhyb3duLgorICoKKyAqICAg
ICBOb3RlIHRoYXQgeW91IGNhbiBhbHNvIHJlcXVpcmUgdGhlIGRpcmVjdGl2ZSdzIG93biBjb250
cm9sbGVyIC0gaXQgd2lsbCBiZSBtYWRlIGF2YWlsYWJsZSBsaWtlCisgKiAgICAgbGlrZSBhbnkg
b3RoZXIgY29udHJvbGxlci4KKyAqCisgKiAgICogYHRyYW5zY2x1ZGVGbmAgLSBBIHRyYW5zY2x1
ZGUgbGlua2luZyBmdW5jdGlvbiBwcmUtYm91bmQgdG8gdGhlIGNvcnJlY3QgdHJhbnNjbHVzaW9u
IHNjb3BlLgorICogICAgIFRoaXMgaXMgdGhlIHNhbWUgYXMgdGhlIGAkdHJhbnNjbHVkZWAKKyAq
ICAgICBwYXJhbWV0ZXIgb2YgZGlyZWN0aXZlIGNvbnRyb2xsZXJzLCBzZWUgdGhlcmUgZm9yIGRl
dGFpbHMuCisgKiAgICAgYGZ1bmN0aW9uKFtzY29wZV0sIGNsb25lTGlua2luZ0ZuLCBmdXR1cmVQ
YXJlbnRFbGVtZW50KWAuCisgKgorICogIyMjIyBQcmUtbGlua2luZyBmdW5jdGlvbgorICoKKyAq
IEV4ZWN1dGVkIGJlZm9yZSB0aGUgY2hpbGQgZWxlbWVudHMgYXJlIGxpbmtlZC4gTm90IHNhZmUg
dG8gZG8gRE9NIHRyYW5zZm9ybWF0aW9uIHNpbmNlIHRoZQorICogY29tcGlsZXIgbGlua2luZyBm
dW5jdGlvbiB3aWxsIGZhaWwgdG8gbG9jYXRlIHRoZSBjb3JyZWN0IGVsZW1lbnRzIGZvciBsaW5r
aW5nLgorICoKKyAqICMjIyMgUG9zdC1saW5raW5nIGZ1bmN0aW9uCisgKgorICogRXhlY3V0ZWQg
YWZ0ZXIgdGhlIGNoaWxkIGVsZW1lbnRzIGFyZSBsaW5rZWQuCisgKgorICogTm90ZSB0aGF0IGNo
aWxkIGVsZW1lbnRzIHRoYXQgY29udGFpbiBgdGVtcGxhdGVVcmxgIGRpcmVjdGl2ZXMgd2lsbCBu
b3QgaGF2ZSBiZWVuIGNvbXBpbGVkCisgKiBhbmQgbGlua2VkIHNpbmNlIHRoZXkgYXJlIHdhaXRp
bmcgZm9yIHRoZWlyIHRlbXBsYXRlIHRvIGxvYWQgYXN5bmNocm9ub3VzbHkgYW5kIHRoZWlyIG93
bgorICogY29tcGlsYXRpb24gYW5kIGxpbmtpbmcgaGFzIGJlZW4gc3VzcGVuZGVkIHVudGlsIHRo
YXQgb2NjdXJzLgorICoKKyAqIEl0IGlzIHNhZmUgdG8gZG8gRE9NIHRyYW5zZm9ybWF0aW9uIGlu
IHRoZSBwb3N0LWxpbmtpbmcgZnVuY3Rpb24gb24gZWxlbWVudHMgdGhhdCBhcmUgbm90IHdhaXRp
bmcKKyAqIGZvciB0aGVpciBhc3luYyB0ZW1wbGF0ZXMgdG8gYmUgcmVzb2x2ZWQuCisgKgorICoK
KyAqICMjIyBUcmFuc2NsdXNpb24KKyAqCisgKiBUcmFuc2NsdXNpb24gaXMgdGhlIHByb2Nlc3Mg
b2YgZXh0cmFjdGluZyBhIGNvbGxlY3Rpb24gb2YgRE9NIGVsZW1lbnQgZnJvbSBvbmUgcGFydCBv
ZiB0aGUgRE9NIGFuZAorICogY29weWluZyB0aGVtIHRvIGFub3RoZXIgcGFydCBvZiB0aGUgRE9N
LCB3aGlsZSBtYWludGFpbmluZyB0aGVpciBjb25uZWN0aW9uIHRvIHRoZSBvcmlnaW5hbCBBbmd1
bGFySlMKKyAqIHNjb3BlIGZyb20gd2hlcmUgdGhleSB3ZXJlIHRha2VuLgorICoKKyAqIFRyYW5z
Y2x1c2lvbiBpcyB1c2VkIChvZnRlbiB3aXRoIHtAbGluayBuZ1RyYW5zY2x1ZGV9KSB0byBpbnNl
cnQgdGhlCisgKiBvcmlnaW5hbCBjb250ZW50cyBvZiBhIGRpcmVjdGl2ZSdzIGVsZW1lbnQgaW50
byBhIHNwZWNpZmllZCBwbGFjZSBpbiB0aGUgdGVtcGxhdGUgb2YgdGhlIGRpcmVjdGl2ZS4KKyAq
IFRoZSBiZW5lZml0IG9mIHRyYW5zY2x1c2lvbiwgb3ZlciBzaW1wbHkgbW92aW5nIHRoZSBET00g
ZWxlbWVudHMgbWFudWFsbHksIGlzIHRoYXQgdGhlIHRyYW5zY2x1ZGVkCisgKiBjb250ZW50IGhh
cyBhY2Nlc3MgdG8gdGhlIHByb3BlcnRpZXMgb24gdGhlIHNjb3BlIGZyb20gd2hpY2ggaXQgd2Fz
IHRha2VuLCBldmVuIGlmIHRoZSBkaXJlY3RpdmUKKyAqIGhhcyBpc29sYXRlZCBzY29wZS4KKyAq
IFNlZSB0aGUge0BsaW5rIGd1aWRlL2RpcmVjdGl2ZSNjcmVhdGluZy1hLWRpcmVjdGl2ZS10aGF0
LXdyYXBzLW90aGVyLWVsZW1lbnRzIERpcmVjdGl2ZXMgR3VpZGV9LgorICoKKyAqIFRoaXMgbWFr
ZXMgaXQgcG9zc2libGUgZm9yIHRoZSB3aWRnZXQgdG8gaGF2ZSBwcml2YXRlIHN0YXRlIGZvciBp
dHMgdGVtcGxhdGUsIHdoaWxlIHRoZSB0cmFuc2NsdWRlZAorICogY29udGVudCBoYXMgYWNjZXNz
IHRvIGl0cyBvcmlnaW5hdGluZyBzY29wZS4KKyAqCisgKiA8ZGl2IGNsYXNzPSJhbGVydCBhbGVy
dC13YXJuaW5nIj4KKyAqICoqTm90ZToqKiBXaGVuIHRlc3RpbmcgYW4gZWxlbWVudCB0cmFuc2Ns
dWRlIGRpcmVjdGl2ZSB5b3UgbXVzdCBub3QgcGxhY2UgdGhlIGRpcmVjdGl2ZSBhdCB0aGUgcm9v
dCBvZiB0aGUKKyAqIERPTSBmcmFnbWVudCB0aGF0IGlzIGJlaW5nIGNvbXBpbGVkLiBTZWUge0Bs
aW5rIGd1aWRlL3VuaXQtdGVzdGluZyN0ZXN0aW5nLXRyYW5zY2x1c2lvbi1kaXJlY3RpdmVzCisg
KiBUZXN0aW5nIFRyYW5zY2x1c2lvbiBEaXJlY3RpdmVzfS4KKyAqIDwvZGl2PgorICoKKyAqICMj
IyMgVHJhbnNjbHVzaW9uIEZ1bmN0aW9ucworICoKKyAqIFdoZW4gYSBkaXJlY3RpdmUgcmVxdWVz
dHMgdHJhbnNjbHVzaW9uLCB0aGUgY29tcGlsZXIgZXh0cmFjdHMgaXRzIGNvbnRlbnRzIGFuZCBw
cm92aWRlcyBhICoqdHJhbnNjbHVzaW9uCisgKiBmdW5jdGlvbioqIHRvIHRoZSBkaXJlY3RpdmUn
cyBgbGlua2AgZnVuY3Rpb24gYW5kIGBjb250cm9sbGVyYC4gVGhpcyB0cmFuc2NsdXNpb24gZnVu
Y3Rpb24gaXMgYSBzcGVjaWFsCisgKiAqKmxpbmtpbmcgZnVuY3Rpb24qKiB0aGF0IHdpbGwgcmV0
dXJuIHRoZSBjb21waWxlZCBjb250ZW50cyBsaW5rZWQgdG8gYSBuZXcgdHJhbnNjbHVzaW9uIHNj
b3BlLgorICoKKyAqIDxkaXYgY2xhc3M9ImFsZXJ0IGFsZXJ0LWluZm8iPgorICogSWYgeW91IGFy
ZSBqdXN0IHVzaW5nIHtAbGluayBuZ1RyYW5zY2x1ZGV9IHRoZW4geW91IGRvbid0IG5lZWQgdG8g
d29ycnkgYWJvdXQgdGhpcyBmdW5jdGlvbiwgc2luY2UKKyAqIG5nVHJhbnNjbHVkZSB3aWxsIGRl
YWwgd2l0aCBpdCBmb3IgdXMuCisgKiA8L2Rpdj4KKyAqCisgKiBJZiB5b3Ugd2FudCB0byBtYW51
YWxseSBjb250cm9sIHRoZSBpbnNlcnRpb24gYW5kIHJlbW92YWwgb2YgdGhlIHRyYW5zY2x1ZGVk
IGNvbnRlbnQgaW4geW91ciBkaXJlY3RpdmUKKyAqIHRoZW4geW91IG11c3QgdXNlIHRoaXMgdHJh
bnNjbHVkZSBmdW5jdGlvbi4gV2hlbiB5b3UgY2FsbCBhIHRyYW5zY2x1ZGUgZnVuY3Rpb24gaXQg
cmV0dXJucyBhIGEganFMaXRlL0pRdWVyeQorICogb2JqZWN0IHRoYXQgY29udGFpbnMgdGhlIGNv
bXBpbGVkIERPTSwgd2hpY2ggaXMgbGlua2VkIHRvIHRoZSBjb3JyZWN0IHRyYW5zY2x1c2lvbiBz
Y29wZS4KKyAqCisgKiBXaGVuIHlvdSBjYWxsIGEgdHJhbnNjbHVzaW9uIGZ1bmN0aW9uIHlvdSBj
YW4gcGFzcyBpbiBhICoqY2xvbmUgYXR0YWNoIGZ1bmN0aW9uKiouIFRoaXMgZnVuY3Rpb24gYWNj
ZXB0cworICogdHdvIHBhcmFtZXRlcnMsIGBmdW5jdGlvbihjbG9uZSwgc2NvcGUpIHsgLi4uIH1g
LCB3aGVyZSB0aGUgYGNsb25lYCBpcyBhIGZyZXNoIGNvbXBpbGVkIGNvcHkgb2YgeW91ciB0cmFu
c2NsdWRlZAorICogY29udGVudCBhbmQgdGhlIGBzY29wZWAgaXMgdGhlIG5ld2x5IGNyZWF0ZWQg
dHJhbnNjbHVzaW9uIHNjb3BlLCB0byB3aGljaCB0aGUgY2xvbmUgaXMgYm91bmQuCisgKgorICog
PGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtaW5mbyI+CisgKiAqKkJlc3QgUHJhY3RpY2UqKjogQWx3
YXlzIHByb3ZpZGUgYSBgY2xvbmVGbmAgKGNsb25lIGF0dGFjaCBmdW5jdGlvbikgd2hlbiB5b3Ug
Y2FsbCBhIHRyYW5zbHVkZSBmdW5jdGlvbgorICogc2luY2UgeW91IHRoZW4gZ2V0IGEgZnJlc2gg
Y2xvbmUgb2YgdGhlIG9yaWdpbmFsIERPTSBhbmQgYWxzbyBoYXZlIGFjY2VzcyB0byB0aGUgbmV3
IHRyYW5zY2x1c2lvbiBzY29wZS4KKyAqIDwvZGl2PgorICoKKyAqIEl0IGlzIG5vcm1hbCBwcmFj
dGljZSB0byBhdHRhY2ggeW91ciB0cmFuc2NsdWRlZCBjb250ZW50IChgY2xvbmVgKSB0byB0aGUg
RE9NIGluc2lkZSB5b3VyICoqY2xvbmUKKyAqIGF0dGFjaCBmdW5jdGlvbioqOgorICoKKyAqIGBg
YGpzCisgKiB2YXIgdHJhbnNjbHVkZWRDb250ZW50LCB0cmFuc2NsdXNpb25TY29wZTsKKyAqCisg
KiAkdHJhbnNjbHVkZShmdW5jdGlvbihjbG9uZSwgc2NvcGUpIHsKKyAqICAgZWxlbWVudC5hcHBl
bmQoY2xvbmUpOworICogICB0cmFuc2NsdWRlZENvbnRlbnQgPSBjbG9uZTsKKyAqICAgdHJhbnNj
bHVzaW9uU2NvcGUgPSBzY29wZTsKKyAqIH0pOworICogYGBgCisgKgorICogTGF0ZXIsIGlmIHlv
dSB3YW50IHRvIHJlbW92ZSB0aGUgdHJhbnNjbHVkZWQgY29udGVudCBmcm9tIHlvdXIgRE9NIHRo
ZW4geW91IHNob3VsZCBhbHNvIGRlc3Ryb3kgdGhlCisgKiBhc3NvY2lhdGVkIHRyYW5zY2x1c2lv
biBzY29wZToKKyAqCisgKiBgYGBqcworICogdHJhbnNjbHVkZWRDb250ZW50LnJlbW92ZSgpOwor
ICogdHJhbnNjbHVzaW9uU2NvcGUuJGRlc3Ryb3koKTsKKyAqIGBgYAorICoKKyAqIDxkaXYgY2xh
c3M9ImFsZXJ0IGFsZXJ0LWluZm8iPgorICogKipCZXN0IFByYWN0aWNlKio6IGlmIHlvdSBpbnRl
bmQgdG8gYWRkIGFuZCByZW1vdmUgdHJhbnNjbHVkZWQgY29udGVudCBtYW51YWxseSBpbiB5b3Vy
IGRpcmVjdGl2ZQorICogKGJ5IGNhbGxpbmcgdGhlIHRyYW5zY2x1ZGUgZnVuY3Rpb24gdG8gZ2V0
IHRoZSBET00gYW5kIGNhbGxpbmcgYGVsZW1lbnQucmVtb3ZlKClgIHRvIHJlbW92ZSBpdCksCisg
KiB0aGVuIHlvdSBhcmUgYWxzbyByZXNwb25zaWJsZSBmb3IgY2FsbGluZyBgJGRlc3Ryb3lgIG9u
IHRoZSB0cmFuc2NsdXNpb24gc2NvcGUuCisgKiA8L2Rpdj4KKyAqCisgKiBUaGUgYnVpbHQtaW4g
RE9NIG1hbmlwdWxhdGlvbiBkaXJlY3RpdmVzLCBzdWNoIGFzIHtAbGluayBuZ0lmfSwge0BsaW5r
IG5nU3dpdGNofSBhbmQge0BsaW5rIG5nUmVwZWF0fQorICogYXV0b21hdGljYWxseSBkZXN0cm95
IHRoZWlyIHRyYW5zbHVkZWQgY2xvbmVzIGFzIG5lY2Vzc2FyeSBzbyB5b3UgZG8gbm90IG5lZWQg
dG8gd29ycnkgYWJvdXQgdGhpcyBpZgorICogeW91IGFyZSBzaW1wbHkgdXNpbmcge0BsaW5rIG5n
VHJhbnNjbHVkZX0gdG8gaW5qZWN0IHRoZSB0cmFuc2NsdXNpb24gaW50byB5b3VyIGRpcmVjdGl2
ZS4KKyAqCisgKgorICogIyMjIyBUcmFuc2NsdXNpb24gU2NvcGVzCisgKgorICogV2hlbiB5b3Ug
Y2FsbCBhIHRyYW5zY2x1ZGUgZnVuY3Rpb24gaXQgcmV0dXJucyBhIERPTSBmcmFnbWVudCB0aGF0
IGlzIHByZS1ib3VuZCB0byBhICoqdHJhbnNjbHVzaW9uCisgKiBzY29wZSoqLiBUaGlzIHNjb3Bl
IGlzIHNwZWNpYWwsIGluIHRoYXQgaXQgaXMgYSBjaGlsZCBvZiB0aGUgZGlyZWN0aXZlJ3Mgc2Nv
cGUgKGFuZCBzbyBnZXRzIGRlc3Ryb3llZAorICogd2hlbiB0aGUgZGlyZWN0aXZlJ3Mgc2NvcGUg
Z2V0cyBkZXN0cm95ZWQpIGJ1dCBpdCBpbmhlcml0cyB0aGUgcHJvcGVydGllcyBvZiB0aGUgc2Nv
cGUgZnJvbSB3aGljaCBpdAorICogd2FzIHRha2VuLgorICoKKyAqIEZvciBleGFtcGxlIGNvbnNp
ZGVyIGEgZGlyZWN0aXZlIHRoYXQgdXNlcyB0cmFuc2NsdXNpb24gYW5kIGlzb2xhdGVkIHNjb3Bl
LiBUaGUgRE9NIGhpZXJhcmNoeSBtaWdodCBsb29rCisgKiBsaWtlIHRoaXM6CisgKgorICogYGBg
aHRtbAorICogPGRpdiBuZy1hcHA+CisgKiAgIDxkaXYgaXNvbGF0ZT4KKyAqICAgICA8ZGl2IHRy
YW5zY2x1c2lvbj4KKyAqICAgICA8L2Rpdj4KKyAqICAgPC9kaXY+CisgKiA8L2Rpdj4KKyAqIGBg
YAorICoKKyAqIFRoZSBgJHBhcmVudGAgc2NvcGUgaGllcmFyY2h5IHdpbGwgbG9vayBsaWtlIHRo
aXM6CisgKgorICogYGBgCisgKiAtICRyb290U2NvcGUKKyAqICAgLSBpc29sYXRlCisgKiAgICAg
LSB0cmFuc2NsdXNpb24KKyAqIGBgYAorICoKKyAqIGJ1dCB0aGUgc2NvcGVzIHdpbGwgaW5oZXJp
dCBwcm90b3R5cGljYWxseSBmcm9tIGRpZmZlcmVudCBzY29wZXMgdG8gdGhlaXIgYCRwYXJlbnRg
LgorICoKKyAqIGBgYAorICogLSAkcm9vdFNjb3BlCisgKiAgIC0gdHJhbnNjbHVzaW9uCisgKiAt
IGlzb2xhdGUKKyAqIGBgYAorICoKKyAqCisgKiAjIyMgQXR0cmlidXRlcworICoKKyAqIFRoZSB7
QGxpbmsgbmcuJGNvbXBpbGUuZGlyZWN0aXZlLkF0dHJpYnV0ZXMgQXR0cmlidXRlc30gb2JqZWN0
IC0gcGFzc2VkIGFzIGEgcGFyYW1ldGVyIGluIHRoZQorICogYGxpbmsoKWAgb3IgYGNvbXBpbGUo
KWAgZnVuY3Rpb25zLiBJdCBoYXMgYSB2YXJpZXR5IG9mIHVzZXMuCisgKgorICogYWNjZXNzaW5n
ICpOb3JtYWxpemVkIGF0dHJpYnV0ZSBuYW1lczoqCisgKiBEaXJlY3RpdmVzIGxpa2UgJ25nQmlu
ZCcgY2FuIGJlIGV4cHJlc3NlZCBpbiBtYW55IHdheXM6ICduZzpiaW5kJywgYGRhdGEtbmctYmlu
ZGAsIG9yICd4LW5nLWJpbmQnLgorICogdGhlIGF0dHJpYnV0ZXMgb2JqZWN0IGFsbG93cyBmb3Ig
bm9ybWFsaXplZCBhY2Nlc3MgdG8KKyAqICAgdGhlIGF0dHJpYnV0ZXMuCisgKgorICogKiAqRGly
ZWN0aXZlIGludGVyLWNvbW11bmljYXRpb246KiBBbGwgZGlyZWN0aXZlcyBzaGFyZSB0aGUgc2Ft
ZSBpbnN0YW5jZSBvZiB0aGUgYXR0cmlidXRlcworICogICBvYmplY3Qgd2hpY2ggYWxsb3dzIHRo
ZSBkaXJlY3RpdmVzIHRvIHVzZSB0aGUgYXR0cmlidXRlcyBvYmplY3QgYXMgaW50ZXIgZGlyZWN0
aXZlCisgKiAgIGNvbW11bmljYXRpb24uCisgKgorICogKiAqU3VwcG9ydHMgaW50ZXJwb2xhdGlv
bjoqIEludGVycG9sYXRpb24gYXR0cmlidXRlcyBhcmUgYXNzaWduZWQgdG8gdGhlIGF0dHJpYnV0
ZSBvYmplY3QKKyAqICAgYWxsb3dpbmcgb3RoZXIgZGlyZWN0aXZlcyB0byByZWFkIHRoZSBpbnRl
cnBvbGF0ZWQgdmFsdWUuCisgKgorICogKiAqT2JzZXJ2aW5nIGludGVycG9sYXRlZCBhdHRyaWJ1
dGVzOiogVXNlIGAkb2JzZXJ2ZWAgdG8gb2JzZXJ2ZSB0aGUgdmFsdWUgY2hhbmdlcyBvZiBhdHRy
aWJ1dGVzCisgKiAgIHRoYXQgY29udGFpbiBpbnRlcnBvbGF0aW9uIChlLmcuIGBzcmM9Int7YmFy
fX0iYCkuIE5vdCBvbmx5IGlzIHRoaXMgdmVyeSBlZmZpY2llbnQgYnV0IGl0J3MgYWxzbworICog
ICB0aGUgb25seSB3YXkgdG8gZWFzaWx5IGdldCB0aGUgYWN0dWFsIHZhbHVlIGJlY2F1c2UgZHVy
aW5nIHRoZSBsaW5raW5nIHBoYXNlIHRoZSBpbnRlcnBvbGF0aW9uCisgKiAgIGhhc24ndCBiZWVu
IGV2YWx1YXRlZCB5ZXQgYW5kIHNvIHRoZSB2YWx1ZSBpcyBhdCB0aGlzIHRpbWUgc2V0IHRvIGB1
bmRlZmluZWRgLgorICoKKyAqIGBgYGpzCisgKiBmdW5jdGlvbiBsaW5raW5nRm4oc2NvcGUsIGVs
bSwgYXR0cnMsIGN0cmwpIHsKKyAqICAgLy8gZ2V0IHRoZSBhdHRyaWJ1dGUgdmFsdWUKKyAqICAg
Y29uc29sZS5sb2coYXR0cnMubmdNb2RlbCk7CisgKgorICogICAvLyBjaGFuZ2UgdGhlIGF0dHJp
YnV0ZQorICogICBhdHRycy4kc2V0KCduZ01vZGVsJywgJ25ldyB2YWx1ZScpOworICoKKyAqICAg
Ly8gb2JzZXJ2ZSBjaGFuZ2VzIHRvIGludGVycG9sYXRlZCBhdHRyaWJ1dGUKKyAqICAgYXR0cnMu
JG9ic2VydmUoJ25nTW9kZWwnLCBmdW5jdGlvbih2YWx1ZSkgeworICogICAgIGNvbnNvbGUubG9n
KCduZ01vZGVsIGhhcyBjaGFuZ2VkIHZhbHVlIHRvICcgKyB2YWx1ZSk7CisgKiAgIH0pOworICog
fQorICogYGBgCisgKgorICogIyMgRXhhbXBsZQorICoKKyAqIDxkaXYgY2xhc3M9ImFsZXJ0IGFs
ZXJ0LXdhcm5pbmciPgorICogKipOb3RlKio6IFR5cGljYWxseSBkaXJlY3RpdmVzIGFyZSByZWdp
c3RlcmVkIHdpdGggYG1vZHVsZS5kaXJlY3RpdmVgLiBUaGUgZXhhbXBsZSBiZWxvdyBpcworICog
dG8gaWxsdXN0cmF0ZSBob3cgYCRjb21waWxlYCB3b3Jrcy4KKyAqIDwvZGl2PgorICoKKyA8ZXhh
bXBsZSBtb2R1bGU9ImNvbXBpbGVFeGFtcGxlIj4KKyAgIDxmaWxlIG5hbWU9ImluZGV4Lmh0bWwi
PgorICAgIDxzY3JpcHQ+CisgICAgICBhbmd1bGFyLm1vZHVsZSgnY29tcGlsZUV4YW1wbGUnLCBb
XSwgZnVuY3Rpb24oJGNvbXBpbGVQcm92aWRlcikgeworICAgICAgICAvLyBjb25maWd1cmUgbmV3
ICdjb21waWxlJyBkaXJlY3RpdmUgYnkgcGFzc2luZyBhIGRpcmVjdGl2ZQorICAgICAgICAvLyBm
YWN0b3J5IGZ1bmN0aW9uLiBUaGUgZmFjdG9yeSBmdW5jdGlvbiBpbmplY3RzIHRoZSAnJGNvbXBp
bGUnCisgICAgICAgICRjb21waWxlUHJvdmlkZXIuZGlyZWN0aXZlKCdjb21waWxlJywgZnVuY3Rp
b24oJGNvbXBpbGUpIHsKKyAgICAgICAgICAvLyBkaXJlY3RpdmUgZmFjdG9yeSBjcmVhdGVzIGEg
bGluayBmdW5jdGlvbgorICAgICAgICAgIHJldHVybiBmdW5jdGlvbihzY29wZSwgZWxlbWVudCwg
YXR0cnMpIHsKKyAgICAgICAgICAgIHNjb3BlLiR3YXRjaCgKKyAgICAgICAgICAgICAgZnVuY3Rp
b24oc2NvcGUpIHsKKyAgICAgICAgICAgICAgICAgLy8gd2F0Y2ggdGhlICdjb21waWxlJyBleHBy
ZXNzaW9uIGZvciBjaGFuZ2VzCisgICAgICAgICAgICAgICAgcmV0dXJuIHNjb3BlLiRldmFsKGF0
dHJzLmNvbXBpbGUpOworICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICBmdW5jdGlvbih2
YWx1ZSkgeworICAgICAgICAgICAgICAgIC8vIHdoZW4gdGhlICdjb21waWxlJyBleHByZXNzaW9u
IGNoYW5nZXMKKyAgICAgICAgICAgICAgICAvLyBhc3NpZ24gaXQgaW50byB0aGUgY3VycmVudCBE
T00KKyAgICAgICAgICAgICAgICBlbGVtZW50Lmh0bWwodmFsdWUpOworCisgICAgICAgICAgICAg
ICAgLy8gY29tcGlsZSB0aGUgbmV3IERPTSBhbmQgbGluayBpdCB0byB0aGUgY3VycmVudAorICAg
ICAgICAgICAgICAgIC8vIHNjb3BlLgorICAgICAgICAgICAgICAgIC8vIE5PVEU6IHdlIG9ubHkg
Y29tcGlsZSAuY2hpbGROb2RlcyBzbyB0aGF0CisgICAgICAgICAgICAgICAgLy8gd2UgZG9uJ3Qg
Z2V0IGludG8gaW5maW5pdGUgbG9vcCBjb21waWxpbmcgb3Vyc2VsdmVzCisgICAgICAgICAgICAg
ICAgJGNvbXBpbGUoZWxlbWVudC5jb250ZW50cygpKShzY29wZSk7CisgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICk7CisgICAgICAgICAgfTsKKyAgICAgICAgfSk7CisgICAgICB9KQorICAg
ICAgLmNvbnRyb2xsZXIoJ0dyZWV0ZXJDb250cm9sbGVyJywgWyckc2NvcGUnLCBmdW5jdGlvbigk
c2NvcGUpIHsKKyAgICAgICAgJHNjb3BlLm5hbWUgPSAnQW5ndWxhcic7CisgICAgICAgICRzY29w
ZS5odG1sID0gJ0hlbGxvIHt7bmFtZX19JzsKKyAgICAgIH1dKTsKKyAgICA8L3NjcmlwdD4KKyAg
ICA8ZGl2IG5nLWNvbnRyb2xsZXI9IkdyZWV0ZXJDb250cm9sbGVyIj4KKyAgICAgIDxpbnB1dCBu
Zy1tb2RlbD0ibmFtZSI+IDxici8+CisgICAgICA8dGV4dGFyZWEgbmctbW9kZWw9Imh0bWwiPjwv
dGV4dGFyZWE+IDxici8+CisgICAgICA8ZGl2IGNvbXBpbGU9Imh0bWwiPjwvZGl2PgorICAgIDwv
ZGl2PgorICAgPC9maWxlPgorICAgPGZpbGUgbmFtZT0icHJvdHJhY3Rvci5qcyIgdHlwZT0icHJv
dHJhY3RvciI+CisgICAgIGl0KCdzaG91bGQgYXV0byBjb21waWxlJywgZnVuY3Rpb24oKSB7Cisg
ICAgICAgdmFyIHRleHRhcmVhID0gJCgndGV4dGFyZWEnKTsKKyAgICAgICB2YXIgb3V0cHV0ID0g
JCgnZGl2W2NvbXBpbGVdJyk7CisgICAgICAgLy8gVGhlIGluaXRpYWwgc3RhdGUgcmVhZHMgJ0hl
bGxvIEFuZ3VsYXInLgorICAgICAgIGV4cGVjdChvdXRwdXQuZ2V0VGV4dCgpKS50b0JlKCdIZWxs
byBBbmd1bGFyJyk7CisgICAgICAgdGV4dGFyZWEuY2xlYXIoKTsKKyAgICAgICB0ZXh0YXJlYS5z
ZW5kS2V5cygne3tuYW1lfX0hJyk7CisgICAgICAgZXhwZWN0KG91dHB1dC5nZXRUZXh0KCkpLnRv
QmUoJ0FuZ3VsYXIhJyk7CisgICAgIH0pOworICAgPC9maWxlPgorIDwvZXhhbXBsZT4KKworICoK
KyAqCisgKiBAcGFyYW0ge3N0cmluZ3xET01FbGVtZW50fSBlbGVtZW50IEVsZW1lbnQgb3IgSFRN
TCBzdHJpbmcgdG8gY29tcGlsZSBpbnRvIGEgdGVtcGxhdGUgZnVuY3Rpb24uCisgKiBAcGFyYW0g
e2Z1bmN0aW9uKGFuZ3VsYXIuU2NvcGUsIGNsb25lQXR0YWNoRm49KX0gdHJhbnNjbHVkZSBmdW5j
dGlvbiBhdmFpbGFibGUgdG8gZGlyZWN0aXZlcyAtIERFUFJFQ0FURUQuCisgKgorICogPGRpdiBj
bGFzcz0iYWxlcnQgYWxlcnQtZGFuZ2VyIj4KKyAqICoqTm90ZToqKiBQYXNzaW5nIGEgYHRyYW5z
Y2x1ZGVgIGZ1bmN0aW9uIHRvIHRoZSAkY29tcGlsZSBmdW5jdGlvbiBpcyBkZXByZWNhdGVkLCBh
cyBpdAorICogICBlLmcuIHdpbGwgbm90IHVzZSB0aGUgcmlnaHQgb3V0ZXIgc2NvcGUuIFBsZWFz
ZSBwYXNzIHRoZSB0cmFuc2NsdWRlIGZ1bmN0aW9uIGFzIGEKKyAqICAgYHBhcmVudEJvdW5kVHJh
bnNjbHVkZUZuYCB0byB0aGUgbGluayBmdW5jdGlvbiBpbnN0ZWFkLgorICogPC9kaXY+CisgKgor
ICogQHBhcmFtIHtudW1iZXJ9IG1heFByaW9yaXR5IG9ubHkgYXBwbHkgZGlyZWN0aXZlcyBsb3dl
ciB0aGFuIGdpdmVuIHByaW9yaXR5IChPbmx5IGVmZmVjdHMgdGhlCisgKiAgICAgICAgICAgICAg
ICAgcm9vdCBlbGVtZW50KHMpLCBub3QgdGhlaXIgY2hpbGRyZW4pCisgKiBAcmV0dXJucyB7ZnVu
Y3Rpb24oc2NvcGUsIGNsb25lQXR0YWNoRm49LCBvcHRpb25zPSl9IGEgbGluayBmdW5jdGlvbiB3
aGljaCBpcyB1c2VkIHRvIGJpbmQgdGVtcGxhdGUKKyAqIChhIERPTSBlbGVtZW50L3RyZWUpIHRv
IGEgc2NvcGUuIFdoZXJlOgorICoKKyAqICAqIGBzY29wZWAgLSBBIHtAbGluayBuZy4kcm9vdFNj
b3BlLlNjb3BlIFNjb3BlfSB0byBiaW5kIHRvLgorICogICogYGNsb25lQXR0YWNoRm5gIC0gSWYg
YGNsb25lQXR0YWNoRm5gIGlzIHByb3ZpZGVkLCB0aGVuIHRoZSBsaW5rIGZ1bmN0aW9uIHdpbGwg
Y2xvbmUgdGhlCisgKiAgYHRlbXBsYXRlYCBhbmQgY2FsbCB0aGUgYGNsb25lQXR0YWNoRm5gIGZ1
bmN0aW9uIGFsbG93aW5nIHRoZSBjYWxsZXIgdG8gYXR0YWNoIHRoZQorICogIGNsb25lZCBlbGVt
ZW50cyB0byB0aGUgRE9NIGRvY3VtZW50IGF0IHRoZSBhcHByb3ByaWF0ZSBwbGFjZS4gVGhlIGBj
bG9uZUF0dGFjaEZuYCBpcworICogIGNhbGxlZCBhczogPGJyLz4gYGNsb25lQXR0YWNoRm4oY2xv
bmVkRWxlbWVudCwgc2NvcGUpYCB3aGVyZToKKyAqCisgKiAgICAgICogYGNsb25lZEVsZW1lbnRg
IC0gaXMgYSBjbG9uZSBvZiB0aGUgb3JpZ2luYWwgYGVsZW1lbnRgIHBhc3NlZCBpbnRvIHRoZSBj
b21waWxlci4KKyAqICAgICAgKiBgc2NvcGVgIC0gaXMgdGhlIGN1cnJlbnQgc2NvcGUgd2l0aCB3
aGljaCB0aGUgbGlua2luZyBmdW5jdGlvbiBpcyB3b3JraW5nIHdpdGguCisgKgorICogICogYG9w
dGlvbnNgIC0gQW4gb3B0aW9uYWwgb2JqZWN0IGhhc2ggd2l0aCBsaW5raW5nIG9wdGlvbnMuIElm
IGBvcHRpb25zYCBpcyBwcm92aWRlZCwgdGhlbiB0aGUgZm9sbG93aW5nCisgKiAga2V5cyBtYXkg
YmUgdXNlZCB0byBjb250cm9sIGxpbmtpbmcgYmVoYXZpb3I6CisgKgorICogICAgICAqIGBwYXJl
bnRCb3VuZFRyYW5zY2x1ZGVGbmAgLSB0aGUgdHJhbnNjbHVkZSBmdW5jdGlvbiBtYWRlIGF2YWls
YWJsZSB0bworICogICAgICAgIGRpcmVjdGl2ZXM7IGlmIGdpdmVuLCBpdCB3aWxsIGJlIHBhc3Nl
ZCB0aHJvdWdoIHRvIHRoZSBsaW5rIGZ1bmN0aW9ucyBvZgorICogICAgICAgIGRpcmVjdGl2ZXMg
Zm91bmQgaW4gYGVsZW1lbnRgIGR1cmluZyBjb21waWxhdGlvbi4KKyAqICAgICAgKiBgdHJhbnNj
bHVkZUNvbnRyb2xsZXJzYCAtIGFuIG9iamVjdCBoYXNoIHdpdGgga2V5cyB0aGF0IG1hcCBjb250
cm9sbGVyIG5hbWVzCisgKiAgICAgICAgdG8gY29udHJvbGxlciBpbnN0YW5jZXM7IGlmIGdpdmVu
LCBpdCB3aWxsIG1ha2UgdGhlIGNvbnRyb2xsZXJzCisgKiAgICAgICAgYXZhaWxhYmxlIHRvIGRp
cmVjdGl2ZXMuCisgKiAgICAgICogYGZ1dHVyZVBhcmVudEVsZW1lbnRgIC0gZGVmaW5lcyB0aGUg
cGFyZW50IHRvIHdoaWNoIHRoZSBgY2xvbmVBdHRhY2hGbmAgd2lsbCBhZGQKKyAqICAgICAgICB0
aGUgY2xvbmVkIGVsZW1lbnRzOyBvbmx5IG5lZWRlZCBmb3IgdHJhbnNjbHVkZXMgdGhhdCBhcmUg
YWxsb3dlZCB0byBjb250YWluIG5vbiBodG1sCisgKiAgICAgICAgZWxlbWVudHMgKGUuZy4gU1ZH
IGVsZW1lbnRzKS4gU2VlIGFsc28gdGhlIGRpcmVjdGl2ZS5jb250cm9sbGVyIHByb3BlcnR5Lgor
ICoKKyAqIENhbGxpbmcgdGhlIGxpbmtpbmcgZnVuY3Rpb24gcmV0dXJucyB0aGUgZWxlbWVudCBv
ZiB0aGUgdGVtcGxhdGUuIEl0IGlzIGVpdGhlciB0aGUgb3JpZ2luYWwKKyAqIGVsZW1lbnQgcGFz
c2VkIGluLCBvciB0aGUgY2xvbmUgb2YgdGhlIGVsZW1lbnQgaWYgdGhlIGBjbG9uZUF0dGFjaEZu
YCBpcyBwcm92aWRlZC4KKyAqCisgKiBBZnRlciBsaW5raW5nIHRoZSB2aWV3IGlzIG5vdCB1cGRh
dGVkIHVudGlsIGFmdGVyIGEgY2FsbCB0byAkZGlnZXN0IHdoaWNoIHR5cGljYWxseSBpcyBkb25l
IGJ5CisgKiBBbmd1bGFyIGF1dG9tYXRpY2FsbHkuCisgKgorICogSWYgeW91IG5lZWQgYWNjZXNz
IHRvIHRoZSBib3VuZCB2aWV3LCB0aGVyZSBhcmUgdHdvIHdheXMgdG8gZG8gaXQ6CisgKgorICog
LSBJZiB5b3UgYXJlIG5vdCBhc2tpbmcgdGhlIGxpbmtpbmcgZnVuY3Rpb24gdG8gY2xvbmUgdGhl
IHRlbXBsYXRlLCBjcmVhdGUgdGhlIERPTSBlbGVtZW50KHMpCisgKiAgIGJlZm9yZSB5b3Ugc2Vu
ZCB0aGVtIHRvIHRoZSBjb21waWxlciBhbmQga2VlcCB0aGlzIHJlZmVyZW5jZSBhcm91bmQuCisg
KiAgIGBgYGpzCisgKiAgICAgdmFyIGVsZW1lbnQgPSAkY29tcGlsZSgnPHA+e3t0b3RhbH19PC9w
PicpKHNjb3BlKTsKKyAqICAgYGBgCisgKgorICogLSBpZiBvbiB0aGUgb3RoZXIgaGFuZCwgeW91
IG5lZWQgdGhlIGVsZW1lbnQgdG8gYmUgY2xvbmVkLCB0aGUgdmlldyByZWZlcmVuY2UgZnJvbSB0
aGUgb3JpZ2luYWwKKyAqICAgZXhhbXBsZSB3b3VsZCBub3QgcG9pbnQgdG8gdGhlIGNsb25lLCBi
dXQgcmF0aGVyIHRvIHRoZSBvcmlnaW5hbCB0ZW1wbGF0ZSB0aGF0IHdhcyBjbG9uZWQuIEluCisg
KiAgIHRoaXMgY2FzZSwgeW91IGNhbiBhY2Nlc3MgdGhlIGNsb25lIHZpYSB0aGUgY2xvbmVBdHRh
Y2hGbjoKKyAqICAgYGBganMKKyAqICAgICB2YXIgdGVtcGxhdGVFbGVtZW50ID0gYW5ndWxhci5l
bGVtZW50KCc8cD57e3RvdGFsfX08L3A+JyksCisgKiAgICAgICAgIHNjb3BlID0gLi4uLjsKKyAq
CisgKiAgICAgdmFyIGNsb25lZEVsZW1lbnQgPSAkY29tcGlsZSh0ZW1wbGF0ZUVsZW1lbnQpKHNj
b3BlLCBmdW5jdGlvbihjbG9uZWRFbGVtZW50LCBzY29wZSkgeworICogICAgICAgLy9hdHRhY2gg
dGhlIGNsb25lIHRvIERPTSBkb2N1bWVudCBhdCB0aGUgcmlnaHQgcGxhY2UKKyAqICAgICB9KTsK
KyAqCisgKiAgICAgLy9ub3cgd2UgaGF2ZSByZWZlcmVuY2UgdG8gdGhlIGNsb25lZCBET00gdmlh
IGBjbG9uZWRFbGVtZW50YAorICogICBgYGAKKyAqCisgKgorICogRm9yIGluZm9ybWF0aW9uIG9u
IGhvdyB0aGUgY29tcGlsZXIgd29ya3MsIHNlZSB0aGUKKyAqIHtAbGluayBndWlkZS9jb21waWxl
ciBBbmd1bGFyIEhUTUwgQ29tcGlsZXJ9IHNlY3Rpb24gb2YgdGhlIERldmVsb3BlciBHdWlkZS4K
KyAqLworCit2YXIgJGNvbXBpbGVNaW5FcnIgPSBtaW5FcnIoJyRjb21waWxlJyk7CisKKy8qKgor
ICogQG5nZG9jIHByb3ZpZGVyCisgKiBAbmFtZSAkY29tcGlsZVByb3ZpZGVyCisgKgorICogQGRl
c2NyaXB0aW9uCisgKi8KKyRDb21waWxlUHJvdmlkZXIuJGluamVjdCA9IFsnJHByb3ZpZGUnLCAn
JCRzYW5pdGl6ZVVyaVByb3ZpZGVyJ107CitmdW5jdGlvbiAkQ29tcGlsZVByb3ZpZGVyKCRwcm92
aWRlLCAkJHNhbml0aXplVXJpUHJvdmlkZXIpIHsKKyAgdmFyIGhhc0RpcmVjdGl2ZXMgPSB7fSwK
KyAgICAgIFN1ZmZpeCA9ICdEaXJlY3RpdmUnLAorICAgICAgQ09NTUVOVF9ESVJFQ1RJVkVfUkVH
RVhQID0gL15ccypkaXJlY3RpdmVcOlxzKihbXHdcLV0rKVxzKyguKikkLywKKyAgICAgIENMQVNT
X0RJUkVDVElWRV9SRUdFWFAgPSAvKChbXHdcLV0rKSg/Olw6KFteO10rKSk/Oz8pLywKKyAgICAg
IEFMTF9PUl9OT1RISU5HX0FUVFJTID0gbWFrZU1hcCgnbmdTcmMsbmdTcmNzZXQsc3JjLHNyY3Nl
dCcpLAorICAgICAgUkVRVUlSRV9QUkVGSVhfUkVHRVhQID0gL14oPzooXF5cXj8pPyhcPyk/KFxe
XF4/KT8pPy87CisKKyAgLy8gUmVmOiBodHRwOi8vZGV2ZWxvcGVycy53aGF0d2cub3JnL3dlYmFw
cGFwaXMuaHRtbCNldmVudC1oYW5kbGVyLWlkbC1hdHRyaWJ1dGVzCisgIC8vIFRoZSBhc3N1bXB0
aW9uIGlzIHRoYXQgZnV0dXJlIERPTSBldmVudCBhdHRyaWJ1dGUgbmFtZXMgd2lsbCBiZWdpbiB3
aXRoCisgIC8vICdvbicgYW5kIGJlIGNvbXBvc2VkIG9mIG9ubHkgRW5nbGlzaCBsZXR0ZXJzLgor
ICB2YXIgRVZFTlRfSEFORExFUl9BVFRSX1JFR0VYUCA9IC9eKG9uW2Etel0rfGZvcm1hY3Rpb24p
JC87CisKKyAgZnVuY3Rpb24gcGFyc2VJc29sYXRlQmluZGluZ3Moc2NvcGUsIGRpcmVjdGl2ZU5h
bWUsIGlzQ29udHJvbGxlcikgeworICAgIHZhciBMT0NBTF9SRUdFWFAgPSAvXlxzKihbQCZdfD0o
XCo/KSkoXD8/KVxzKihcdyopXHMqJC87CisKKyAgICB2YXIgYmluZGluZ3MgPSB7fTsKKworICAg
IGZvckVhY2goc2NvcGUsIGZ1bmN0aW9uKGRlZmluaXRpb24sIHNjb3BlTmFtZSkgeworICAgICAg
dmFyIG1hdGNoID0gZGVmaW5pdGlvbi5tYXRjaChMT0NBTF9SRUdFWFApOworCisgICAgICBpZiAo
IW1hdGNoKSB7CisgICAgICAgIHRocm93ICRjb21waWxlTWluRXJyKCdpc2NwJywKKyAgICAgICAg
ICAgICJJbnZhbGlkIHszfSBmb3IgZGlyZWN0aXZlICd7MH0nLiIgKworICAgICAgICAgICAgIiBE
ZWZpbml0aW9uOiB7Li4uIHsxfTogJ3syfScgLi4ufSIsCisgICAgICAgICAgICBkaXJlY3RpdmVO
YW1lLCBzY29wZU5hbWUsIGRlZmluaXRpb24sCisgICAgICAgICAgICAoaXNDb250cm9sbGVyID8g
ImNvbnRyb2xsZXIgYmluZGluZ3MgZGVmaW5pdGlvbiIgOgorICAgICAgICAgICAgImlzb2xhdGUg
c2NvcGUgZGVmaW5pdGlvbiIpKTsKKyAgICAgIH0KKworICAgICAgYmluZGluZ3Nbc2NvcGVOYW1l
XSA9IHsKKyAgICAgICAgbW9kZTogbWF0Y2hbMV1bMF0sCisgICAgICAgIGNvbGxlY3Rpb246IG1h
dGNoWzJdID09PSAnKicsCisgICAgICAgIG9wdGlvbmFsOiBtYXRjaFszXSA9PT0gJz8nLAorICAg
ICAgICBhdHRyTmFtZTogbWF0Y2hbNF0gfHwgc2NvcGVOYW1lCisgICAgICB9OworICAgIH0pOwor
CisgICAgcmV0dXJuIGJpbmRpbmdzOworICB9CisKKyAgZnVuY3Rpb24gcGFyc2VEaXJlY3RpdmVC
aW5kaW5ncyhkaXJlY3RpdmUsIGRpcmVjdGl2ZU5hbWUpIHsKKyAgICB2YXIgYmluZGluZ3MgPSB7
CisgICAgICBpc29sYXRlU2NvcGU6IG51bGwsCisgICAgICBiaW5kVG9Db250cm9sbGVyOiBudWxs
CisgICAgfTsKKyAgICBpZiAoaXNPYmplY3QoZGlyZWN0aXZlLnNjb3BlKSkgeworICAgICAgaWYg
KGRpcmVjdGl2ZS5iaW5kVG9Db250cm9sbGVyID09PSB0cnVlKSB7CisgICAgICAgIGJpbmRpbmdz
LmJpbmRUb0NvbnRyb2xsZXIgPSBwYXJzZUlzb2xhdGVCaW5kaW5ncyhkaXJlY3RpdmUuc2NvcGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkaXJlY3RpdmVOYW1lLCB0cnVlKTsKKyAgICAgICAgYmluZGluZ3MuaXNvbGF0ZVNjb3BlID0g
e307CisgICAgICB9IGVsc2UgeworICAgICAgICBiaW5kaW5ncy5pc29sYXRlU2NvcGUgPSBwYXJz
ZUlzb2xhdGVCaW5kaW5ncyhkaXJlY3RpdmUuc2NvcGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGl2ZU5hbWUsIGZhbHNlKTsKKyAg
ICAgIH0KKyAgICB9CisgICAgaWYgKGlzT2JqZWN0KGRpcmVjdGl2ZS5iaW5kVG9Db250cm9sbGVy
KSkgeworICAgICAgYmluZGluZ3MuYmluZFRvQ29udHJvbGxlciA9CisgICAgICAgICAgcGFyc2VJ
c29sYXRlQmluZGluZ3MoZGlyZWN0aXZlLmJpbmRUb0NvbnRyb2xsZXIsIGRpcmVjdGl2ZU5hbWUs
IHRydWUpOworICAgIH0KKyAgICBpZiAoaXNPYmplY3QoYmluZGluZ3MuYmluZFRvQ29udHJvbGxl
cikpIHsKKyAgICAgIHZhciBjb250cm9sbGVyID0gZGlyZWN0aXZlLmNvbnRyb2xsZXI7CisgICAg
ICB2YXIgY29udHJvbGxlckFzID0gZGlyZWN0aXZlLmNvbnRyb2xsZXJBczsKKyAgICAgIGlmICgh
Y29udHJvbGxlcikgeworICAgICAgICAvLyBUaGVyZSBpcyBubyBjb250cm9sbGVyLCB0aGVyZSBt
YXkgb3IgbWF5IG5vdCBiZSBhIGNvbnRyb2xsZXJBcyBwcm9wZXJ0eQorICAgICAgICB0aHJvdyAk
Y29tcGlsZU1pbkVycignbm9jdHJsJywKKyAgICAgICAgICAgICAgIkNhbm5vdCBiaW5kIHRvIGNv
bnRyb2xsZXIgd2l0aG91dCBkaXJlY3RpdmUgJ3swfSdzIGNvbnRyb2xsZXIuIiwKKyAgICAgICAg
ICAgICAgZGlyZWN0aXZlTmFtZSk7CisgICAgICB9IGVsc2UgaWYgKCFpZGVudGlmaWVyRm9yQ29u
dHJvbGxlcihjb250cm9sbGVyLCBjb250cm9sbGVyQXMpKSB7CisgICAgICAgIC8vIFRoZXJlIGlz
IGEgY29udHJvbGxlciwgYnV0IG5vIGlkZW50aWZpZXIgb3IgY29udHJvbGxlckFzIHByb3BlcnR5
CisgICAgICAgIHRocm93ICRjb21waWxlTWluRXJyKCdub2lkZW50JywKKyAgICAgICAgICAgICAg
IkNhbm5vdCBiaW5kIHRvIGNvbnRyb2xsZXIgd2l0aG91dCBpZGVudGlmaWVyIGZvciBkaXJlY3Rp
dmUgJ3swfScuIiwKKyAgICAgICAgICAgICAgZGlyZWN0aXZlTmFtZSk7CisgICAgICB9CisgICAg
fQorICAgIHJldHVybiBiaW5kaW5nczsKKyAgfQorCisgIGZ1bmN0aW9uIGFzc2VydFZhbGlkRGly
ZWN0aXZlTmFtZShuYW1lKSB7CisgICAgdmFyIGxldHRlciA9IG5hbWUuY2hhckF0KDApOworICAg
IGlmICghbGV0dGVyIHx8IGxldHRlciAhPT0gbG93ZXJjYXNlKGxldHRlcikpIHsKKyAgICAgIHRo
cm93ICRjb21waWxlTWluRXJyKCdiYWRkaXInLCAiRGlyZWN0aXZlIG5hbWUgJ3swfScgaXMgaW52
YWxpZC4gVGhlIGZpcnN0IGNoYXJhY3RlciBtdXN0IGJlIGEgbG93ZXJjYXNlIGxldHRlciIsIG5h
bWUpOworICAgIH0KKyAgICBpZiAobmFtZSAhPT0gbmFtZS50cmltKCkpIHsKKyAgICAgIHRocm93
ICRjb21waWxlTWluRXJyKCdiYWRkaXInLAorICAgICAgICAgICAgIkRpcmVjdGl2ZSBuYW1lICd7
MH0nIGlzIGludmFsaWQuIFRoZSBuYW1lIHNob3VsZCBub3QgY29udGFpbiBsZWFkaW5nIG9yIHRy
YWlsaW5nIHdoaXRlc3BhY2VzIiwKKyAgICAgICAgICAgIG5hbWUpOworICAgIH0KKyAgfQorCisg
IC8qKgorICAgKiBAbmdkb2MgbWV0aG9kCisgICAqIEBuYW1lICRjb21waWxlUHJvdmlkZXIjZGly
ZWN0aXZlCisgICAqIEBraW5kIGZ1bmN0aW9uCisgICAqCisgICAqIEBkZXNjcmlwdGlvbgorICAg
KiBSZWdpc3RlciBhIG5ldyBkaXJlY3RpdmUgd2l0aCB0aGUgY29tcGlsZXIuCisgICAqCisgICAq
IEBwYXJhbSB7c3RyaW5nfE9iamVjdH0gbmFtZSBOYW1lIG9mIHRoZSBkaXJlY3RpdmUgaW4gY2Ft
ZWwtY2FzZSAoaS5lLiA8Y29kZT5uZ0JpbmQ8L2NvZGU+IHdoaWNoCisgICAqICAgIHdpbGwgbWF0
Y2ggYXMgPGNvZGU+bmctYmluZDwvY29kZT4pLCBvciBhbiBvYmplY3QgbWFwIG9mIGRpcmVjdGl2
ZXMgd2hlcmUgdGhlIGtleXMgYXJlIHRoZQorICAgKiAgICBuYW1lcyBhbmQgdGhlIHZhbHVlcyBh
cmUgdGhlIGZhY3Rvcmllcy4KKyAgICogQHBhcmFtIHtGdW5jdGlvbnxBcnJheX0gZGlyZWN0aXZl
RmFjdG9yeSBBbiBpbmplY3RhYmxlIGRpcmVjdGl2ZSBmYWN0b3J5IGZ1bmN0aW9uLiBTZWUKKyAg
ICogICAge0BsaW5rIGd1aWRlL2RpcmVjdGl2ZX0gZm9yIG1vcmUgaW5mby4KKyAgICogQHJldHVy
bnMge25nLiRjb21waWxlUHJvdmlkZXJ9IFNlbGYgZm9yIGNoYWluaW5nLgorICAgKi8KKyAgIHRo
aXMuZGlyZWN0aXZlID0gZnVuY3Rpb24gcmVnaXN0ZXJEaXJlY3RpdmUobmFtZSwgZGlyZWN0aXZl
RmFjdG9yeSkgeworICAgIGFzc2VydE5vdEhhc093blByb3BlcnR5KG5hbWUsICdkaXJlY3RpdmUn
KTsKKyAgICBpZiAoaXNTdHJpbmcobmFtZSkpIHsKKyAgICAgIGFzc2VydFZhbGlkRGlyZWN0aXZl
TmFtZShuYW1lKTsKKyAgICAgIGFzc2VydEFyZyhkaXJlY3RpdmVGYWN0b3J5LCAnZGlyZWN0aXZl
RmFjdG9yeScpOworICAgICAgaWYgKCFoYXNEaXJlY3RpdmVzLmhhc093blByb3BlcnR5KG5hbWUp
KSB7CisgICAgICAgIGhhc0RpcmVjdGl2ZXNbbmFtZV0gPSBbXTsKKyAgICAgICAgJHByb3ZpZGUu
ZmFjdG9yeShuYW1lICsgU3VmZml4LCBbJyRpbmplY3RvcicsICckZXhjZXB0aW9uSGFuZGxlcics
CisgICAgICAgICAgZnVuY3Rpb24oJGluamVjdG9yLCAkZXhjZXB0aW9uSGFuZGxlcikgeworICAg
ICAgICAgICAgdmFyIGRpcmVjdGl2ZXMgPSBbXTsKKyAgICAgICAgICAgIGZvckVhY2goaGFzRGly
ZWN0aXZlc1tuYW1lXSwgZnVuY3Rpb24oZGlyZWN0aXZlRmFjdG9yeSwgaW5kZXgpIHsKKyAgICAg
ICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICB2YXIgZGlyZWN0aXZlID0gJGluamVjdG9y
Lmludm9rZShkaXJlY3RpdmVGYWN0b3J5KTsKKyAgICAgICAgICAgICAgICBpZiAoaXNGdW5jdGlv
bihkaXJlY3RpdmUpKSB7CisgICAgICAgICAgICAgICAgICBkaXJlY3RpdmUgPSB7IGNvbXBpbGU6
IHZhbHVlRm4oZGlyZWN0aXZlKSB9OworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWRpcmVj
dGl2ZS5jb21waWxlICYmIGRpcmVjdGl2ZS5saW5rKSB7CisgICAgICAgICAgICAgICAgICBkaXJl
Y3RpdmUuY29tcGlsZSA9IHZhbHVlRm4oZGlyZWN0aXZlLmxpbmspOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBkaXJlY3RpdmUucHJpb3JpdHkgPSBkaXJlY3RpdmUucHJpb3Jp
dHkgfHwgMDsKKyAgICAgICAgICAgICAgICBkaXJlY3RpdmUuaW5kZXggPSBpbmRleDsKKyAgICAg
ICAgICAgICAgICBkaXJlY3RpdmUubmFtZSA9IGRpcmVjdGl2ZS5uYW1lIHx8IG5hbWU7CisgICAg
ICAgICAgICAgICAgZGlyZWN0aXZlLnJlcXVpcmUgPSBkaXJlY3RpdmUucmVxdWlyZSB8fCAoZGly
ZWN0aXZlLmNvbnRyb2xsZXIgJiYgZGlyZWN0aXZlLm5hbWUpOworICAgICAgICAgICAgICAgIGRp
cmVjdGl2ZS5yZXN0cmljdCA9IGRpcmVjdGl2ZS5yZXN0cmljdCB8fCAnRUEnOworICAgICAgICAg
ICAgICAgIHZhciBiaW5kaW5ncyA9IGRpcmVjdGl2ZS4kJGJpbmRpbmdzID0KKyAgICAgICAgICAg
ICAgICAgICAgcGFyc2VEaXJlY3RpdmVCaW5kaW5ncyhkaXJlY3RpdmUsIGRpcmVjdGl2ZS5uYW1l
KTsKKyAgICAgICAgICAgICAgICBpZiAoaXNPYmplY3QoYmluZGluZ3MuaXNvbGF0ZVNjb3BlKSkg
eworICAgICAgICAgICAgICAgICAgZGlyZWN0aXZlLiQkaXNvbGF0ZUJpbmRpbmdzID0gYmluZGlu
Z3MuaXNvbGF0ZVNjb3BlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkaXJl
Y3RpdmUuJCRtb2R1bGVOYW1lID0gZGlyZWN0aXZlRmFjdG9yeS4kJG1vZHVsZU5hbWU7CisgICAg
ICAgICAgICAgICAgZGlyZWN0aXZlcy5wdXNoKGRpcmVjdGl2ZSk7CisgICAgICAgICAgICAgIH0g
Y2F0Y2ggKGUpIHsKKyAgICAgICAgICAgICAgICAkZXhjZXB0aW9uSGFuZGxlcihlKTsKKyAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfSk7CisgICAgICAgICAgICByZXR1cm4gZGlyZWN0aXZl
czsKKyAgICAgICAgICB9XSk7CisgICAgICB9CisgICAgICBoYXNEaXJlY3RpdmVzW25hbWVdLnB1
c2goZGlyZWN0aXZlRmFjdG9yeSk7CisgICAgfSBlbHNlIHsKKyAgICAgIGZvckVhY2gobmFtZSwg
cmV2ZXJzZVBhcmFtcyhyZWdpc3RlckRpcmVjdGl2ZSkpOworICAgIH0KKyAgICByZXR1cm4gdGhp
czsKKyAgfTsKKworCisgIC8qKgorICAgKiBAbmdkb2MgbWV0aG9kCisgICAqIEBuYW1lICRjb21w
aWxlUHJvdmlkZXIjYUhyZWZTYW5pdGl6YXRpb25XaGl0ZWxpc3QKKyAgICogQGtpbmQgZnVuY3Rp
b24KKyAgICoKKyAgICogQGRlc2NyaXB0aW9uCisgICAqIFJldHJpZXZlcyBvciBvdmVycmlkZXMg
dGhlIGRlZmF1bHQgcmVndWxhciBleHByZXNzaW9uIHRoYXQgaXMgdXNlZCBmb3Igd2hpdGVsaXN0
aW5nIG9mIHNhZmUKKyAgICogdXJscyBkdXJpbmcgYVtocmVmXSBzYW5pdGl6YXRpb24uCisgICAq
CisgICAqIFRoZSBzYW5pdGl6YXRpb24gaXMgYSBzZWN1cml0eSBtZWFzdXJlIGFpbWVkIGF0IHBy
ZXZlbnRpbmcgWFNTIGF0dGFja3MgdmlhIGh0bWwgbGlua3MuCisgICAqCisgICAqIEFueSB1cmwg
YWJvdXQgdG8gYmUgYXNzaWduZWQgdG8gYVtocmVmXSB2aWEgZGF0YS1iaW5kaW5nIGlzIGZpcnN0
IG5vcm1hbGl6ZWQgYW5kIHR1cm5lZCBpbnRvCisgICAqIGFuIGFic29sdXRlIHVybC4gQWZ0ZXJ3
YXJkcywgdGhlIHVybCBpcyBtYXRjaGVkIGFnYWluc3QgdGhlIGBhSHJlZlNhbml0aXphdGlvbldo
aXRlbGlzdGAKKyAgICogcmVndWxhciBleHByZXNzaW9uLiBJZiBhIG1hdGNoIGlzIGZvdW5kLCB0
aGUgb3JpZ2luYWwgdXJsIGlzIHdyaXR0ZW4gaW50byB0aGUgZG9tLiBPdGhlcndpc2UsCisgICAq
IHRoZSBhYnNvbHV0ZSB1cmwgaXMgcHJlZml4ZWQgd2l0aCBgJ3Vuc2FmZTonYCBzdHJpbmcgYW5k
IG9ubHkgdGhlbiBpcyBpdCB3cml0dGVuIGludG8gdGhlIERPTS4KKyAgICoKKyAgICogQHBhcmFt
IHtSZWdFeHA9fSByZWdleHAgTmV3IHJlZ2V4cCB0byB3aGl0ZWxpc3QgdXJscyB3aXRoLgorICAg
KiBAcmV0dXJucyB7UmVnRXhwfG5nLiRjb21waWxlUHJvdmlkZXJ9IEN1cnJlbnQgUmVnRXhwIGlm
IGNhbGxlZCB3aXRob3V0IHZhbHVlIG9yIHNlbGYgZm9yCisgICAqICAgIGNoYWluaW5nIG90aGVy
d2lzZS4KKyAgICovCisgIHRoaXMuYUhyZWZTYW5pdGl6YXRpb25XaGl0ZWxpc3QgPSBmdW5jdGlv
bihyZWdleHApIHsKKyAgICBpZiAoaXNEZWZpbmVkKHJlZ2V4cCkpIHsKKyAgICAgICQkc2FuaXRp
emVVcmlQcm92aWRlci5hSHJlZlNhbml0aXphdGlvbldoaXRlbGlzdChyZWdleHApOworICAgICAg
cmV0dXJuIHRoaXM7CisgICAgfSBlbHNlIHsKKyAgICAgIHJldHVybiAkJHNhbml0aXplVXJpUHJv
dmlkZXIuYUhyZWZTYW5pdGl6YXRpb25XaGl0ZWxpc3QoKTsKKyAgICB9CisgIH07CisKKworICAv
KioKKyAgICogQG5nZG9jIG1ldGhvZAorICAgKiBAbmFtZSAkY29tcGlsZVByb3ZpZGVyI2ltZ1Ny
Y1Nhbml0aXphdGlvbldoaXRlbGlzdAorICAgKiBAa2luZCBmdW5jdGlvbgorICAgKgorICAgKiBA
ZGVzY3JpcHRpb24KKyAgICogUmV0cmlldmVzIG9yIG92ZXJyaWRlcyB0aGUgZGVmYXVsdCByZWd1
bGFyIGV4cHJlc3Npb24gdGhhdCBpcyB1c2VkIGZvciB3aGl0ZWxpc3Rpbmcgb2Ygc2FmZQorICAg
KiB1cmxzIGR1cmluZyBpbWdbc3JjXSBzYW5pdGl6YXRpb24uCisgICAqCisgICAqIFRoZSBzYW5p
dGl6YXRpb24gaXMgYSBzZWN1cml0eSBtZWFzdXJlIGFpbWVkIGF0IHByZXZlbnQgWFNTIGF0dGFj
a3MgdmlhIGh0bWwgbGlua3MuCisgICAqCisgICAqIEFueSB1cmwgYWJvdXQgdG8gYmUgYXNzaWdu
ZWQgdG8gaW1nW3NyY10gdmlhIGRhdGEtYmluZGluZyBpcyBmaXJzdCBub3JtYWxpemVkIGFuZCB0
dXJuZWQgaW50bworICAgKiBhbiBhYnNvbHV0ZSB1cmwuIEFmdGVyd2FyZHMsIHRoZSB1cmwgaXMg
bWF0Y2hlZCBhZ2FpbnN0IHRoZSBgaW1nU3JjU2FuaXRpemF0aW9uV2hpdGVsaXN0YAorICAgKiBy
ZWd1bGFyIGV4cHJlc3Npb24uIElmIGEgbWF0Y2ggaXMgZm91bmQsIHRoZSBvcmlnaW5hbCB1cmwg
aXMgd3JpdHRlbiBpbnRvIHRoZSBkb20uIE90aGVyd2lzZSwKKyAgICogdGhlIGFic29sdXRlIHVy
bCBpcyBwcmVmaXhlZCB3aXRoIGAndW5zYWZlOidgIHN0cmluZyBhbmQgb25seSB0aGVuIGlzIGl0
IHdyaXR0ZW4gaW50byB0aGUgRE9NLgorICAgKgorICAgKiBAcGFyYW0ge1JlZ0V4cD19IHJlZ2V4
cCBOZXcgcmVnZXhwIHRvIHdoaXRlbGlzdCB1cmxzIHdpdGguCisgICAqIEByZXR1cm5zIHtSZWdF
eHB8bmcuJGNvbXBpbGVQcm92aWRlcn0gQ3VycmVudCBSZWdFeHAgaWYgY2FsbGVkIHdpdGhvdXQg
dmFsdWUgb3Igc2VsZiBmb3IKKyAgICogICAgY2hhaW5pbmcgb3RoZXJ3aXNlLgorICAgKi8KKyAg
dGhpcy5pbWdTcmNTYW5pdGl6YXRpb25XaGl0ZWxpc3QgPSBmdW5jdGlvbihyZWdleHApIHsKKyAg
ICBpZiAoaXNEZWZpbmVkKHJlZ2V4cCkpIHsKKyAgICAgICQkc2FuaXRpemVVcmlQcm92aWRlci5p
bWdTcmNTYW5pdGl6YXRpb25XaGl0ZWxpc3QocmVnZXhwKTsKKyAgICAgIHJldHVybiB0aGlzOwor
ICAgIH0gZWxzZSB7CisgICAgICByZXR1cm4gJCRzYW5pdGl6ZVVyaVByb3ZpZGVyLmltZ1NyY1Nh
bml0aXphdGlvbldoaXRlbGlzdCgpOworICAgIH0KKyAgfTsKKworICAvKioKKyAgICogQG5nZG9j
IG1ldGhvZAorICAgKiBAbmFtZSAgJGNvbXBpbGVQcm92aWRlciNkZWJ1Z0luZm9FbmFibGVkCisg
ICAqCisgICAqIEBwYXJhbSB7Ym9vbGVhbj19IGVuYWJsZWQgdXBkYXRlIHRoZSBkZWJ1Z0luZm9F
bmFibGVkIHN0YXRlIGlmIHByb3ZpZGVkLCBvdGhlcndpc2UganVzdCByZXR1cm4gdGhlCisgICAq
IGN1cnJlbnQgZGVidWdJbmZvRW5hYmxlZCBzdGF0ZQorICAgKiBAcmV0dXJucyB7Kn0gY3VycmVu
dCB2YWx1ZSBpZiB1c2VkIGFzIGdldHRlciBvciBpdHNlbGYgKGNoYWluaW5nKSBpZiB1c2VkIGFz
IHNldHRlcgorICAgKgorICAgKiBAa2luZCBmdW5jdGlvbgorICAgKgorICAgKiBAZGVzY3JpcHRp
b24KKyAgICogQ2FsbCB0aGlzIG1ldGhvZCB0byBlbmFibGUvZGlzYWJsZSB2YXJpb3VzIGRlYnVn
IHJ1bnRpbWUgaW5mb3JtYXRpb24gaW4gdGhlIGNvbXBpbGVyIHN1Y2ggYXMgYWRkaW5nCisgICAq
IGJpbmRpbmcgaW5mb3JtYXRpb24gYW5kIGEgcmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IHNjb3Bl
IG9uIHRvIERPTSBlbGVtZW50cy4KKyAgICogSWYgZW5hYmxlZCwgdGhlIGNvbXBpbGVyIHdpbGwg
YWRkIHRoZSBmb2xsb3dpbmcgdG8gRE9NIGVsZW1lbnRzIHRoYXQgaGF2ZSBiZWVuIGJvdW5kIHRv
IHRoZSBzY29wZQorICAgKiAqIGBuZy1iaW5kaW5nYCBDU1MgY2xhc3MKKyAgICogKiBgJGJpbmRp
bmdgIGRhdGEgcHJvcGVydHkgY29udGFpbmluZyBhbiBhcnJheSBvZiB0aGUgYmluZGluZyBleHBy
ZXNzaW9ucworICAgKgorICAgKiBZb3UgbWF5IHdhbnQgdG8gZGlzYWJsZSB0aGlzIGluIHByb2R1
Y3Rpb24gZm9yIGEgc2lnbmlmaWNhbnQgcGVyZm9ybWFuY2UgYm9vc3QuIFNlZQorICAgKiB7QGxp
bmsgZ3VpZGUvcHJvZHVjdGlvbiNkaXNhYmxpbmctZGVidWctZGF0YSBEaXNhYmxpbmcgRGVidWcg
RGF0YX0gZm9yIG1vcmUuCisgICAqCisgICAqIFRoZSBkZWZhdWx0IHZhbHVlIGlzIHRydWUuCisg
ICAqLworICB2YXIgZGVidWdJbmZvRW5hYmxlZCA9IHRydWU7CisgIHRoaXMuZGVidWdJbmZvRW5h
YmxlZCA9IGZ1bmN0aW9uKGVuYWJsZWQpIHsKKyAgICBpZiAoaXNEZWZpbmVkKGVuYWJsZWQpKSB7
CisgICAgICBkZWJ1Z0luZm9FbmFibGVkID0gZW5hYmxlZDsKKyAgICAgIHJldHVybiB0aGlzOwor
ICAgIH0KKyAgICByZXR1cm4gZGVidWdJbmZvRW5hYmxlZDsKKyAgfTsKKworICB0aGlzLiRnZXQg
PSBbCisgICAgICAgICAgICAnJGluamVjdG9yJywgJyRpbnRlcnBvbGF0ZScsICckZXhjZXB0aW9u
SGFuZGxlcicsICckdGVtcGxhdGVSZXF1ZXN0JywgJyRwYXJzZScsCisgICAgICAgICAgICAnJGNv
bnRyb2xsZXInLCAnJHJvb3RTY29wZScsICckZG9jdW1lbnQnLCAnJHNjZScsICckYW5pbWF0ZScs
ICckJHNhbml0aXplVXJpJywKKyAgICBmdW5jdGlvbigkaW5qZWN0b3IsICAgJGludGVycG9sYXRl
LCAgICRleGNlcHRpb25IYW5kbGVyLCAgICR0ZW1wbGF0ZVJlcXVlc3QsICAgJHBhcnNlLAorICAg
ICAgICAgICAgICRjb250cm9sbGVyLCAgICRyb290U2NvcGUsICAgJGRvY3VtZW50LCAgICRzY2Us
ICAgJGFuaW1hdGUsICAgJCRzYW5pdGl6ZVVyaSkgeworCisgICAgdmFyIEF0dHJpYnV0ZXMgPSBm
dW5jdGlvbihlbGVtZW50LCBhdHRyaWJ1dGVzVG9Db3B5KSB7CisgICAgICBpZiAoYXR0cmlidXRl
c1RvQ29weSkgeworICAgICAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKGF0dHJpYnV0ZXNUb0Nv
cHkpOworICAgICAgICB2YXIgaSwgbCwga2V5OworCisgICAgICAgIGZvciAoaSA9IDAsIGwgPSBr
ZXlzLmxlbmd0aDsgaSA8IGw7IGkrKykgeworICAgICAgICAgIGtleSA9IGtleXNbaV07CisgICAg
ICAgICAgdGhpc1trZXldID0gYXR0cmlidXRlc1RvQ29weVtrZXldOworICAgICAgICB9CisgICAg
ICB9IGVsc2UgeworICAgICAgICB0aGlzLiRhdHRyID0ge307CisgICAgICB9CisKKyAgICAgIHRo
aXMuJCRlbGVtZW50ID0gZWxlbWVudDsKKyAgICB9OworCisgICAgQXR0cmlidXRlcy5wcm90b3R5
cGUgPSB7CisgICAgICAvKioKKyAgICAgICAqIEBuZ2RvYyBtZXRob2QKKyAgICAgICAqIEBuYW1l
ICRjb21waWxlLmRpcmVjdGl2ZS5BdHRyaWJ1dGVzIyRub3JtYWxpemUKKyAgICAgICAqIEBraW5k
IGZ1bmN0aW9uCisgICAgICAgKgorICAgICAgICogQGRlc2NyaXB0aW9uCisgICAgICAgKiBDb252
ZXJ0cyBhbiBhdHRyaWJ1dGUgbmFtZSAoZS5nLiBkYXNoL2NvbG9uL3VuZGVyc2NvcmUtZGVsaW1p
dGVkIHN0cmluZywgb3B0aW9uYWxseSBwcmVmaXhlZCB3aXRoIGB4LWAgb3IKKyAgICAgICAqIGBk
YXRhLWApIHRvIGl0cyBub3JtYWxpemVkLCBjYW1lbENhc2UgZm9ybS4KKyAgICAgICAqCisgICAg
ICAgKiBBbHNvIHRoZXJlIGlzIHNwZWNpYWwgY2FzZSBmb3IgTW96IHByZWZpeCBzdGFydGluZyB3
aXRoIHVwcGVyIGNhc2UgbGV0dGVyLgorICAgICAgICoKKyAgICAgICAqIEZvciBmdXJ0aGVyIGlu
Zm9ybWF0aW9uIGNoZWNrIG91dCB0aGUgZ3VpZGUgb24ge0BsaW5rIGd1aWRlL2RpcmVjdGl2ZSNt
YXRjaGluZy1kaXJlY3RpdmVzIE1hdGNoaW5nIERpcmVjdGl2ZXN9CisgICAgICAgKgorICAgICAg
ICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgTmFtZSB0byBub3JtYWxpemUKKyAgICAgICAqLworICAg
ICAgJG5vcm1hbGl6ZTogZGlyZWN0aXZlTm9ybWFsaXplLAorCisKKyAgICAgIC8qKgorICAgICAg
ICogQG5nZG9jIG1ldGhvZAorICAgICAgICogQG5hbWUgJGNvbXBpbGUuZGlyZWN0aXZlLkF0dHJp
YnV0ZXMjJGFkZENsYXNzCisgICAgICAgKiBAa2luZCBmdW5jdGlvbgorICAgICAgICoKKyAgICAg
ICAqIEBkZXNjcmlwdGlvbgorICAgICAgICogQWRkcyB0aGUgQ1NTIGNsYXNzIHZhbHVlIHNwZWNp
ZmllZCBieSB0aGUgY2xhc3NWYWwgcGFyYW1ldGVyIHRvIHRoZSBlbGVtZW50LiBJZiBhbmltYXRp
b25zCisgICAgICAgKiBhcmUgZW5hYmxlZCB0aGVuIGFuIGFuaW1hdGlvbiB3aWxsIGJlIHRyaWdn
ZXJlZCBmb3IgdGhlIGNsYXNzIGFkZGl0aW9uLgorICAgICAgICoKKyAgICAgICAqIEBwYXJhbSB7
c3RyaW5nfSBjbGFzc1ZhbCBUaGUgY2xhc3NOYW1lIHZhbHVlIHRoYXQgd2lsbCBiZSBhZGRlZCB0
byB0aGUgZWxlbWVudAorICAgICAgICovCisgICAgICAkYWRkQ2xhc3M6IGZ1bmN0aW9uKGNsYXNz
VmFsKSB7CisgICAgICAgIGlmIChjbGFzc1ZhbCAmJiBjbGFzc1ZhbC5sZW5ndGggPiAwKSB7Cisg
ICAgICAgICAgJGFuaW1hdGUuYWRkQ2xhc3ModGhpcy4kJGVsZW1lbnQsIGNsYXNzVmFsKTsKKyAg
ICAgICAgfQorICAgICAgfSwKKworICAgICAgLyoqCisgICAgICAgKiBAbmdkb2MgbWV0aG9kCisg
ICAgICAgKiBAbmFtZSAkY29tcGlsZS5kaXJlY3RpdmUuQXR0cmlidXRlcyMkcmVtb3ZlQ2xhc3MK
KyAgICAgICAqIEBraW5kIGZ1bmN0aW9uCisgICAgICAgKgorICAgICAgICogQGRlc2NyaXB0aW9u
CisgICAgICAgKiBSZW1vdmVzIHRoZSBDU1MgY2xhc3MgdmFsdWUgc3BlY2lmaWVkIGJ5IHRoZSBj
bGFzc1ZhbCBwYXJhbWV0ZXIgZnJvbSB0aGUgZWxlbWVudC4gSWYKKyAgICAgICAqIGFuaW1hdGlv
bnMgYXJlIGVuYWJsZWQgdGhlbiBhbiBhbmltYXRpb24gd2lsbCBiZSB0cmlnZ2VyZWQgZm9yIHRo
ZSBjbGFzcyByZW1vdmFsLgorICAgICAgICoKKyAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjbGFz
c1ZhbCBUaGUgY2xhc3NOYW1lIHZhbHVlIHRoYXQgd2lsbCBiZSByZW1vdmVkIGZyb20gdGhlIGVs
ZW1lbnQKKyAgICAgICAqLworICAgICAgJHJlbW92ZUNsYXNzOiBmdW5jdGlvbihjbGFzc1ZhbCkg
eworICAgICAgICBpZiAoY2xhc3NWYWwgJiYgY2xhc3NWYWwubGVuZ3RoID4gMCkgeworICAgICAg
ICAgICRhbmltYXRlLnJlbW92ZUNsYXNzKHRoaXMuJCRlbGVtZW50LCBjbGFzc1ZhbCk7CisgICAg
ICAgIH0KKyAgICAgIH0sCisKKyAgICAgIC8qKgorICAgICAgICogQG5nZG9jIG1ldGhvZAorICAg
ICAgICogQG5hbWUgJGNvbXBpbGUuZGlyZWN0aXZlLkF0dHJpYnV0ZXMjJHVwZGF0ZUNsYXNzCisg
ICAgICAgKiBAa2luZCBmdW5jdGlvbgorICAgICAgICoKKyAgICAgICAqIEBkZXNjcmlwdGlvbgor
ICAgICAgICogQWRkcyBhbmQgcmVtb3ZlcyB0aGUgYXBwcm9wcmlhdGUgQ1NTIGNsYXNzIHZhbHVl
cyB0byB0aGUgZWxlbWVudCBiYXNlZCBvbiB0aGUgZGlmZmVyZW5jZQorICAgICAgICogYmV0d2Vl
biB0aGUgbmV3IGFuZCBvbGQgQ1NTIGNsYXNzIHZhbHVlcyAoc3BlY2lmaWVkIGFzIG5ld0NsYXNz
ZXMgYW5kIG9sZENsYXNzZXMpLgorICAgICAgICoKKyAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBu
ZXdDbGFzc2VzIFRoZSBjdXJyZW50IENTUyBjbGFzc05hbWUgdmFsdWUKKyAgICAgICAqIEBwYXJh
bSB7c3RyaW5nfSBvbGRDbGFzc2VzIFRoZSBmb3JtZXIgQ1NTIGNsYXNzTmFtZSB2YWx1ZQorICAg
ICAgICovCisgICAgICAkdXBkYXRlQ2xhc3M6IGZ1bmN0aW9uKG5ld0NsYXNzZXMsIG9sZENsYXNz
ZXMpIHsKKyAgICAgICAgdmFyIHRvQWRkID0gdG9rZW5EaWZmZXJlbmNlKG5ld0NsYXNzZXMsIG9s
ZENsYXNzZXMpOworICAgICAgICBpZiAodG9BZGQgJiYgdG9BZGQubGVuZ3RoKSB7CisgICAgICAg
ICAgJGFuaW1hdGUuYWRkQ2xhc3ModGhpcy4kJGVsZW1lbnQsIHRvQWRkKTsKKyAgICAgICAgfQor
CisgICAgICAgIHZhciB0b1JlbW92ZSA9IHRva2VuRGlmZmVyZW5jZShvbGRDbGFzc2VzLCBuZXdD
bGFzc2VzKTsKKyAgICAgICAgaWYgKHRvUmVtb3ZlICYmIHRvUmVtb3ZlLmxlbmd0aCkgeworICAg
ICAgICAgICRhbmltYXRlLnJlbW92ZUNsYXNzKHRoaXMuJCRlbGVtZW50LCB0b1JlbW92ZSk7Cisg
ICAgICAgIH0KKyAgICAgIH0sCisKKyAgICAgIC8qKgorICAgICAgICogU2V0IGEgbm9ybWFsaXpl
ZCBhdHRyaWJ1dGUgb24gdGhlIGVsZW1lbnQgaW4gYSB3YXkgc3VjaCB0aGF0IGFsbCBkaXJlY3Rp
dmVzCisgICAgICAgKiBjYW4gc2hhcmUgdGhlIGF0dHJpYnV0ZS4gVGhpcyBmdW5jdGlvbiBwcm9w
ZXJseSBoYW5kbGVzIGJvb2xlYW4gYXR0cmlidXRlcy4KKyAgICAgICAqIEBwYXJhbSB7c3RyaW5n
fSBrZXkgTm9ybWFsaXplZCBrZXkuIChpZSBuZ0F0dHJpYnV0ZSkKKyAgICAgICAqIEBwYXJhbSB7
c3RyaW5nfGJvb2xlYW59IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuIElmIGBudWxsYCBhdHRyaWJ1
dGUgd2lsbCBiZSBkZWxldGVkLgorICAgICAgICogQHBhcmFtIHtib29sZWFuPX0gd3JpdGVBdHRy
IElmIGZhbHNlLCBkb2VzIG5vdCB3cml0ZSB0aGUgdmFsdWUgdG8gRE9NIGVsZW1lbnQgYXR0cmli
dXRlLgorICAgICAgICogICAgIERlZmF1bHRzIHRvIHRydWUuCisgICAgICAgKiBAcGFyYW0ge3N0
cmluZz19IGF0dHJOYW1lIE9wdGlvbmFsIG5vbmUgbm9ybWFsaXplZCBuYW1lLiBEZWZhdWx0cyB0
byBrZXkuCisgICAgICAgKi8KKyAgICAgICRzZXQ6IGZ1bmN0aW9uKGtleSwgdmFsdWUsIHdyaXRl
QXR0ciwgYXR0ck5hbWUpIHsKKyAgICAgICAgLy8gVE9ETzogZGVjaWRlIHdoZXRoZXIgb3Igbm90
IHRvIHRocm93IGFuIGVycm9yIGlmICJjbGFzcyIKKyAgICAgICAgLy9pcyBzZXQgdGhyb3VnaCB0
aGlzIGZ1bmN0aW9uIHNpbmNlIGl0IG1heSBjYXVzZSAkdXBkYXRlQ2xhc3MgdG8KKyAgICAgICAg
Ly9iZWNvbWUgdW5zdGFibGUuCisKKyAgICAgICAgdmFyIG5vZGUgPSB0aGlzLiQkZWxlbWVudFsw
XSwKKyAgICAgICAgICAgIGJvb2xlYW5LZXkgPSBnZXRCb29sZWFuQXR0ck5hbWUobm9kZSwga2V5
KSwKKyAgICAgICAgICAgIGFsaWFzZWRLZXkgPSBnZXRBbGlhc2VkQXR0ck5hbWUobm9kZSwga2V5
KSwKKyAgICAgICAgICAgIG9ic2VydmVyID0ga2V5LAorICAgICAgICAgICAgbm9kZU5hbWU7CisK
KyAgICAgICAgaWYgKGJvb2xlYW5LZXkpIHsKKyAgICAgICAgICB0aGlzLiQkZWxlbWVudC5wcm9w
KGtleSwgdmFsdWUpOworICAgICAgICAgIGF0dHJOYW1lID0gYm9vbGVhbktleTsKKyAgICAgICAg
fSBlbHNlIGlmIChhbGlhc2VkS2V5KSB7CisgICAgICAgICAgdGhpc1thbGlhc2VkS2V5XSA9IHZh
bHVlOworICAgICAgICAgIG9ic2VydmVyID0gYWxpYXNlZEtleTsKKyAgICAgICAgfQorCisgICAg
ICAgIHRoaXNba2V5XSA9IHZhbHVlOworCisgICAgICAgIC8vIHRyYW5zbGF0ZSBub3JtYWxpemVk
IGtleSB0byBhY3R1YWwga2V5CisgICAgICAgIGlmIChhdHRyTmFtZSkgeworICAgICAgICAgIHRo
aXMuJGF0dHJba2V5XSA9IGF0dHJOYW1lOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIGF0
dHJOYW1lID0gdGhpcy4kYXR0cltrZXldOworICAgICAgICAgIGlmICghYXR0ck5hbWUpIHsKKyAg
ICAgICAgICAgIHRoaXMuJGF0dHJba2V5XSA9IGF0dHJOYW1lID0gc25ha2VfY2FzZShrZXksICct
Jyk7CisgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgbm9kZU5hbWUgPSBub2RlTmFt
ZV8odGhpcy4kJGVsZW1lbnQpOworCisgICAgICAgIGlmICgobm9kZU5hbWUgPT09ICdhJyAmJiBr
ZXkgPT09ICdocmVmJykgfHwKKyAgICAgICAgICAgIChub2RlTmFtZSA9PT0gJ2ltZycgJiYga2V5
ID09PSAnc3JjJykpIHsKKyAgICAgICAgICAvLyBzYW5pdGl6ZSBhW2hyZWZdIGFuZCBpbWdbc3Jj
XSB2YWx1ZXMKKyAgICAgICAgICB0aGlzW2tleV0gPSB2YWx1ZSA9ICQkc2FuaXRpemVVcmkodmFs
dWUsIGtleSA9PT0gJ3NyYycpOworICAgICAgICB9IGVsc2UgaWYgKG5vZGVOYW1lID09PSAnaW1n
JyAmJiBrZXkgPT09ICdzcmNzZXQnKSB7CisgICAgICAgICAgLy8gc2FuaXRpemUgaW1nW3NyY3Nl
dF0gdmFsdWVzCisgICAgICAgICAgdmFyIHJlc3VsdCA9ICIiOworCisgICAgICAgICAgLy8gZmly
c3QgY2hlY2sgaWYgdGhlcmUgYXJlIHNwYWNlcyBiZWNhdXNlIGl0J3Mgbm90IHRoZSBzYW1lIHBh
dHRlcm4KKyAgICAgICAgICB2YXIgdHJpbW1lZFNyY3NldCA9IHRyaW0odmFsdWUpOworICAgICAg
ICAgIC8vICAgICAgICAgICAgICAgICggICA5OTl4ICAgLHwgICA5OTl3ICAgLHwgICAsfCwgICAp
CisgICAgICAgICAgdmFyIHNyY1BhdHRlcm4gPSAvKFxzK1xkK3hccyosfFxzK1xkK3dccyosfFxz
Kyx8LFxzKykvOworICAgICAgICAgIHZhciBwYXR0ZXJuID0gL1xzLy50ZXN0KHRyaW1tZWRTcmNz
ZXQpID8gc3JjUGF0dGVybiA6IC8oLCkvOworCisgICAgICAgICAgLy8gc3BsaXQgc3Jjc2V0IGlu
dG8gdHVwbGUgb2YgdXJpIGFuZCBkZXNjcmlwdG9yIGV4Y2VwdCBmb3IgdGhlIGxhc3QgaXRlbQor
ICAgICAgICAgIHZhciByYXdVcmlzID0gdHJpbW1lZFNyY3NldC5zcGxpdChwYXR0ZXJuKTsKKwor
ICAgICAgICAgIC8vIGZvciBlYWNoIHR1cGxlcworICAgICAgICAgIHZhciBuYnJVcmlzV2l0aDJw
YXJ0cyA9IE1hdGguZmxvb3IocmF3VXJpcy5sZW5ndGggLyAyKTsKKyAgICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IG5iclVyaXNXaXRoMnBhcnRzOyBpKyspIHsKKyAgICAgICAgICAgIHZhciBp
bm5lcklkeCA9IGkgKiAyOworICAgICAgICAgICAgLy8gc2FuaXRpemUgdGhlIHVyaQorICAgICAg
ICAgICAgcmVzdWx0ICs9ICQkc2FuaXRpemVVcmkodHJpbShyYXdVcmlzW2lubmVySWR4XSksIHRy
dWUpOworICAgICAgICAgICAgLy8gYWRkIHRoZSBkZXNjcmlwdG9yCisgICAgICAgICAgICByZXN1
bHQgKz0gKCIgIiArIHRyaW0ocmF3VXJpc1tpbm5lcklkeCArIDFdKSk7CisgICAgICAgICAgfQor
CisgICAgICAgICAgLy8gc3BsaXQgdGhlIGxhc3QgaXRlbSBpbnRvIHVyaSBhbmQgZGVzY3JpcHRv
cgorICAgICAgICAgIHZhciBsYXN0VHVwbGUgPSB0cmltKHJhd1VyaXNbaSAqIDJdKS5zcGxpdCgv
XHMvKTsKKworICAgICAgICAgIC8vIHNhbml0aXplIHRoZSBsYXN0IHVyaQorICAgICAgICAgIHJl
c3VsdCArPSAkJHNhbml0aXplVXJpKHRyaW0obGFzdFR1cGxlWzBdKSwgdHJ1ZSk7CisKKyAgICAg
ICAgICAvLyBhbmQgYWRkIHRoZSBsYXN0IGRlc2NyaXB0b3IgaWYgYW55CisgICAgICAgICAgaWYg
KGxhc3RUdXBsZS5sZW5ndGggPT09IDIpIHsKKyAgICAgICAgICAgIHJlc3VsdCArPSAoIiAiICsg
dHJpbShsYXN0VHVwbGVbMV0pKTsKKyAgICAgICAgICB9CisgICAgICAgICAgdGhpc1trZXldID0g
dmFsdWUgPSByZXN1bHQ7CisgICAgICAgIH0KKworICAgICAgICBpZiAod3JpdGVBdHRyICE9PSBm
YWxzZSkgeworICAgICAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZp
bmVkKSB7CisgICAgICAgICAgICB0aGlzLiQkZWxlbWVudC5yZW1vdmVBdHRyKGF0dHJOYW1lKTsK
KyAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhpcy4kJGVsZW1lbnQuYXR0cihhdHRy
TmFtZSwgdmFsdWUpOworICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIGZpcmUg
b2JzZXJ2ZXJzCisgICAgICAgIHZhciAkJG9ic2VydmVycyA9IHRoaXMuJCRvYnNlcnZlcnM7Cisg
ICAgICAgICQkb2JzZXJ2ZXJzICYmIGZvckVhY2goJCRvYnNlcnZlcnNbb2JzZXJ2ZXJdLCBmdW5j
dGlvbihmbikgeworICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmbih2YWx1ZSk7CisgICAg
ICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgJGV4Y2VwdGlvbkhhbmRsZXIoZSk7Cisg
ICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICAgIH0sCisKKworICAgICAgLyoqCisgICAgICAg
KiBAbmdkb2MgbWV0aG9kCisgICAgICAgKiBAbmFtZSAkY29tcGlsZS5kaXJlY3RpdmUuQXR0cmli
dXRlcyMkb2JzZXJ2ZQorICAgICAgICogQGtpbmQgZnVuY3Rpb24KKyAgICAgICAqCisgICAgICAg
KiBAZGVzY3JpcHRpb24KKyAgICAgICAqIE9ic2VydmVzIGFuIGludGVycG9sYXRlZCBhdHRyaWJ1
dGUuCisgICAgICAgKgorICAgICAgICogVGhlIG9ic2VydmVyIGZ1bmN0aW9uIHdpbGwgYmUgaW52
b2tlZCBvbmNlIGR1cmluZyB0aGUgbmV4dCBgJGRpZ2VzdGAgZm9sbG93aW5nCisgICAgICAgKiBj
b21waWxhdGlvbi4gVGhlIG9ic2VydmVyIGlzIHRoZW4gaW52b2tlZCB3aGVuZXZlciB0aGUgaW50
ZXJwb2xhdGVkIHZhbHVlCisgICAgICAgKiBjaGFuZ2VzLgorICAgICAgICoKKyAgICAgICAqIEBw
YXJhbSB7c3RyaW5nfSBrZXkgTm9ybWFsaXplZCBrZXkuIChpZSBuZ0F0dHJpYnV0ZSkgLgorICAg
ICAgICogQHBhcmFtIHtmdW5jdGlvbihpbnRlcnBvbGF0ZWRWYWx1ZSl9IGZuIEZ1bmN0aW9uIHRo
YXQgd2lsbCBiZSBjYWxsZWQgd2hlbmV2ZXIKKyAgICAgICAgICAgICAgICB0aGUgaW50ZXJwb2xh
dGVkIHZhbHVlIG9mIHRoZSBhdHRyaWJ1dGUgY2hhbmdlcy4KKyAgICAgICAqICAgICAgICBTZWUg
dGhlIHtAbGluayBndWlkZS9kaXJlY3RpdmUjdGV4dC1hbmQtYXR0cmlidXRlLWJpbmRpbmdzIERp
cmVjdGl2ZXN9IGd1aWRlIGZvciBtb3JlIGluZm8uCisgICAgICAgKiBAcmV0dXJucyB7ZnVuY3Rp
b24oKX0gUmV0dXJucyBhIGRlcmVnaXN0cmF0aW9uIGZ1bmN0aW9uIGZvciB0aGlzIG9ic2VydmVy
LgorICAgICAgICovCisgICAgICAkb2JzZXJ2ZTogZnVuY3Rpb24oa2V5LCBmbikgeworICAgICAg
ICB2YXIgYXR0cnMgPSB0aGlzLAorICAgICAgICAgICAgJCRvYnNlcnZlcnMgPSAoYXR0cnMuJCRv
YnNlcnZlcnMgfHwgKGF0dHJzLiQkb2JzZXJ2ZXJzID0gY3JlYXRlTWFwKCkpKSwKKyAgICAgICAg
ICAgIGxpc3RlbmVycyA9ICgkJG9ic2VydmVyc1trZXldIHx8ICgkJG9ic2VydmVyc1trZXldID0g
W10pKTsKKworICAgICAgICBsaXN0ZW5lcnMucHVzaChmbik7CisgICAgICAgICRyb290U2NvcGUu
JGV2YWxBc3luYyhmdW5jdGlvbigpIHsKKyAgICAgICAgICBpZiAoIWxpc3RlbmVycy4kJGludGVy
ICYmIGF0dHJzLmhhc093blByb3BlcnR5KGtleSkpIHsKKyAgICAgICAgICAgIC8vIG5vIG9uZSBy
ZWdpc3RlcmVkIGF0dHJpYnV0ZSBpbnRlcnBvbGF0aW9uIGZ1bmN0aW9uLCBzbyBsZXRzIGNhbGwg
aXQgbWFudWFsbHkKKyAgICAgICAgICAgIGZuKGF0dHJzW2tleV0pOworICAgICAgICAgIH0KKyAg
ICAgICAgfSk7CisKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAgICAgICAgIGFycmF5
UmVtb3ZlKGxpc3RlbmVycywgZm4pOworICAgICAgICB9OworICAgICAgfQorICAgIH07CisKKwor
ICAgIGZ1bmN0aW9uIHNhZmVBZGRDbGFzcygkZWxlbWVudCwgY2xhc3NOYW1lKSB7CisgICAgICB0
cnkgeworICAgICAgICAkZWxlbWVudC5hZGRDbGFzcyhjbGFzc05hbWUpOworICAgICAgfSBjYXRj
aCAoZSkgeworICAgICAgICAvLyBpZ25vcmUsIHNpbmNlIGl0IG1lYW5zIHRoYXQgd2UgYXJlIHRy
eWluZyB0byBzZXQgY2xhc3Mgb24KKyAgICAgICAgLy8gU1ZHIGVsZW1lbnQsIHdoZXJlIGNsYXNz
IG5hbWUgaXMgcmVhZC1vbmx5LgorICAgICAgfQorICAgIH0KKworCisgICAgdmFyIHN0YXJ0U3lt
Ym9sID0gJGludGVycG9sYXRlLnN0YXJ0U3ltYm9sKCksCisgICAgICAgIGVuZFN5bWJvbCA9ICRp
bnRlcnBvbGF0ZS5lbmRTeW1ib2woKSwKKyAgICAgICAgZGVub3JtYWxpemVUZW1wbGF0ZSA9IChz
dGFydFN5bWJvbCA9PSAne3snIHx8IGVuZFN5bWJvbCAgPT0gJ319JykKKyAgICAgICAgICAgID8g
aWRlbnRpdHkKKyAgICAgICAgICAgIDogZnVuY3Rpb24gZGVub3JtYWxpemVUZW1wbGF0ZSh0ZW1w
bGF0ZSkgeworICAgICAgICAgICAgICByZXR1cm4gdGVtcGxhdGUucmVwbGFjZSgvXHtcey9nLCBz
dGFydFN5bWJvbCkucmVwbGFjZSgvfX0vZywgZW5kU3ltYm9sKTsKKyAgICAgICAgfSwKKyAgICAg
ICAgTkdfQVRUUl9CSU5ESU5HID0gL15uZ0F0dHJbQS1aXS87CisKKyAgICBjb21waWxlLiQkYWRk
QmluZGluZ0luZm8gPSBkZWJ1Z0luZm9FbmFibGVkID8gZnVuY3Rpb24gJCRhZGRCaW5kaW5nSW5m
bygkZWxlbWVudCwgYmluZGluZykgeworICAgICAgdmFyIGJpbmRpbmdzID0gJGVsZW1lbnQuZGF0
YSgnJGJpbmRpbmcnKSB8fCBbXTsKKworICAgICAgaWYgKGlzQXJyYXkoYmluZGluZykpIHsKKyAg
ICAgICAgYmluZGluZ3MgPSBiaW5kaW5ncy5jb25jYXQoYmluZGluZyk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBiaW5kaW5ncy5wdXNoKGJpbmRpbmcpOworICAgICAgfQorCisgICAgICAkZWxl
bWVudC5kYXRhKCckYmluZGluZycsIGJpbmRpbmdzKTsKKyAgICB9IDogbm9vcDsKKworICAgIGNv
bXBpbGUuJCRhZGRCaW5kaW5nQ2xhc3MgPSBkZWJ1Z0luZm9FbmFibGVkID8gZnVuY3Rpb24gJCRh
ZGRCaW5kaW5nQ2xhc3MoJGVsZW1lbnQpIHsKKyAgICAgIHNhZmVBZGRDbGFzcygkZWxlbWVudCwg
J25nLWJpbmRpbmcnKTsKKyAgICB9IDogbm9vcDsKKworICAgIGNvbXBpbGUuJCRhZGRTY29wZUlu
Zm8gPSBkZWJ1Z0luZm9FbmFibGVkID8gZnVuY3Rpb24gJCRhZGRTY29wZUluZm8oJGVsZW1lbnQs
IHNjb3BlLCBpc29sYXRlZCwgbm9UZW1wbGF0ZSkgeworICAgICAgdmFyIGRhdGFOYW1lID0gaXNv
bGF0ZWQgPyAobm9UZW1wbGF0ZSA/ICckaXNvbGF0ZVNjb3BlTm9UZW1wbGF0ZScgOiAnJGlzb2xh
dGVTY29wZScpIDogJyRzY29wZSc7CisgICAgICAkZWxlbWVudC5kYXRhKGRhdGFOYW1lLCBzY29w
ZSk7CisgICAgfSA6IG5vb3A7CisKKyAgICBjb21waWxlLiQkYWRkU2NvcGVDbGFzcyA9IGRlYnVn
SW5mb0VuYWJsZWQgPyBmdW5jdGlvbiAkJGFkZFNjb3BlQ2xhc3MoJGVsZW1lbnQsIGlzb2xhdGVk
KSB7CisgICAgICBzYWZlQWRkQ2xhc3MoJGVsZW1lbnQsIGlzb2xhdGVkID8gJ25nLWlzb2xhdGUt
c2NvcGUnIDogJ25nLXNjb3BlJyk7CisgICAgfSA6IG5vb3A7CisKKyAgICByZXR1cm4gY29tcGls
ZTsKKworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAgIGZ1bmN0
aW9uIGNvbXBpbGUoJGNvbXBpbGVOb2RlcywgdHJhbnNjbHVkZUZuLCBtYXhQcmlvcml0eSwgaWdu
b3JlRGlyZWN0aXZlLAorICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNDb21waWxlQ29u
dGV4dCkgeworICAgICAgaWYgKCEoJGNvbXBpbGVOb2RlcyBpbnN0YW5jZW9mIGpxTGl0ZSkpIHsK
KyAgICAgICAgLy8ganF1ZXJ5IGFsd2F5cyByZXdyYXBzLCB3aGVyZWFzIHdlIG5lZWQgdG8gcHJl
c2VydmUgdGhlIG9yaWdpbmFsIHNlbGVjdG9yIHNvIHRoYXQgd2UgY2FuCisgICAgICAgIC8vIG1v
ZGlmeSBpdC4KKyAgICAgICAgJGNvbXBpbGVOb2RlcyA9IGpxTGl0ZSgkY29tcGlsZU5vZGVzKTsK
KyAgICAgIH0KKyAgICAgIC8vIFdlIGNhbiBub3QgY29tcGlsZSB0b3AgbGV2ZWwgdGV4dCBlbGVt
ZW50cyBzaW5jZSB0ZXh0IG5vZGVzIGNhbiBiZSBtZXJnZWQgYW5kIHdlIHdpbGwKKyAgICAgIC8v
IG5vdCBiZSBhYmxlIHRvIGF0dGFjaCBzY29wZSBkYXRhIHRvIHRoZW0sIHNvIHdlIHdpbGwgd3Jh
cCB0aGVtIGluIDxzcGFuPgorICAgICAgZm9yRWFjaCgkY29tcGlsZU5vZGVzLCBmdW5jdGlvbihu
b2RlLCBpbmRleCkgeworICAgICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PSBOT0RFX1RZUEVfVEVY
VCAmJiBub2RlLm5vZGVWYWx1ZS5tYXRjaCgvXFMrLykgLyogbm9uLWVtcHR5ICovICkgeworICAg
ICAgICAgICRjb21waWxlTm9kZXNbaW5kZXhdID0ganFMaXRlKG5vZGUpLndyYXAoJzxzcGFuPjwv
c3Bhbj4nKS5wYXJlbnQoKVswXTsKKyAgICAgICAgfQorICAgICAgfSk7CisgICAgICB2YXIgY29t
cG9zaXRlTGlua0ZuID0KKyAgICAgICAgICAgICAgY29tcGlsZU5vZGVzKCRjb21waWxlTm9kZXMs
IHRyYW5zY2x1ZGVGbiwgJGNvbXBpbGVOb2RlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1heFByaW9yaXR5LCBpZ25vcmVEaXJlY3RpdmUsIHByZXZpb3VzQ29tcGlsZUNvbnRleHQpOwor
ICAgICAgY29tcGlsZS4kJGFkZFNjb3BlQ2xhc3MoJGNvbXBpbGVOb2Rlcyk7CisgICAgICB2YXIg
bmFtZXNwYWNlID0gbnVsbDsKKyAgICAgIHJldHVybiBmdW5jdGlvbiBwdWJsaWNMaW5rRm4oc2Nv
cGUsIGNsb25lQ29ubmVjdEZuLCBvcHRpb25zKSB7CisgICAgICAgIGFzc2VydEFyZyhzY29wZSwg
J3Njb3BlJyk7CisKKyAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307CisgICAgICAgIHZh
ciBwYXJlbnRCb3VuZFRyYW5zY2x1ZGVGbiA9IG9wdGlvbnMucGFyZW50Qm91bmRUcmFuc2NsdWRl
Rm4sCisgICAgICAgICAgdHJhbnNjbHVkZUNvbnRyb2xsZXJzID0gb3B0aW9ucy50cmFuc2NsdWRl
Q29udHJvbGxlcnMsCisgICAgICAgICAgZnV0dXJlUGFyZW50RWxlbWVudCA9IG9wdGlvbnMuZnV0
dXJlUGFyZW50RWxlbWVudDsKKworICAgICAgICAvLyBXaGVuIGBwYXJlbnRCb3VuZFRyYW5zY2x1
ZGVGbmAgaXMgcGFzc2VkLCBpdCBpcyBhCisgICAgICAgIC8vIGBjb250cm9sbGVyc0JvdW5kVHJh
bnNjbHVkZWAgZnVuY3Rpb24gKGl0IHdhcyBwcmV2aW91c2x5IHBhc3NlZAorICAgICAgICAvLyBh
cyBgdHJhbnNjbHVkZWAgdG8gZGlyZWN0aXZlLmxpbmspIHNvIHdlIG11c3QgdW53cmFwIGl0IHRv
IGdldAorICAgICAgICAvLyBpdHMgYGJvdW5kVHJhbnNjbHVkZUZuYAorICAgICAgICBpZiAocGFy
ZW50Qm91bmRUcmFuc2NsdWRlRm4gJiYgcGFyZW50Qm91bmRUcmFuc2NsdWRlRm4uJCRib3VuZFRy
YW5zY2x1ZGUpIHsKKyAgICAgICAgICBwYXJlbnRCb3VuZFRyYW5zY2x1ZGVGbiA9IHBhcmVudEJv
dW5kVHJhbnNjbHVkZUZuLiQkYm91bmRUcmFuc2NsdWRlOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKCFuYW1lc3BhY2UpIHsKKyAgICAgICAgICBuYW1lc3BhY2UgPSBkZXRlY3ROYW1lc3BhY2VG
b3JDaGlsZEVsZW1lbnRzKGZ1dHVyZVBhcmVudEVsZW1lbnQpOworICAgICAgICB9CisgICAgICAg
IHZhciAkbGlua05vZGU7CisgICAgICAgIGlmIChuYW1lc3BhY2UgIT09ICdodG1sJykgeworICAg
ICAgICAgIC8vIFdoZW4gdXNpbmcgYSBkaXJlY3RpdmUgd2l0aCByZXBsYWNlOnRydWUgYW5kIHRl
bXBsYXRlVXJsIHRoZSAkY29tcGlsZU5vZGVzCisgICAgICAgICAgLy8gKG9yIGEgY2hpbGQgZWxl
bWVudCBpbnNpZGUgb2YgdGhlbSkKKyAgICAgICAgICAvLyBtaWdodCBjaGFuZ2UsIHNvIHdlIG5l
ZWQgdG8gcmVjcmVhdGUgdGhlIG5hbWVzcGFjZSBhZGFwdGVkIGNvbXBpbGVOb2RlcworICAgICAg
ICAgIC8vIGZvciBjYWxsIHRvIHRoZSBsaW5rIGZ1bmN0aW9uLgorICAgICAgICAgIC8vIE5vdGU6
IFRoaXMgd2lsbCBhbHJlYWR5IGNsb25lIHRoZSBub2Rlcy4uLgorICAgICAgICAgICRsaW5rTm9k
ZSA9IGpxTGl0ZSgKKyAgICAgICAgICAgIHdyYXBUZW1wbGF0ZShuYW1lc3BhY2UsIGpxTGl0ZSgn
PGRpdj4nKS5hcHBlbmQoJGNvbXBpbGVOb2RlcykuaHRtbCgpKQorICAgICAgICAgICk7CisgICAg
ICAgIH0gZWxzZSBpZiAoY2xvbmVDb25uZWN0Rm4pIHsKKyAgICAgICAgICAvLyBpbXBvcnRhbnQh
ITogd2UgbXVzdCBjYWxsIG91ciBqcUxpdGUuY2xvbmUoKSBzaW5jZSB0aGUgalF1ZXJ5IG9uZSBp
cyB0cnlpbmcgdG8gYmUgc21hcnQKKyAgICAgICAgICAvLyBhbmQgc29tZXRpbWVzIGNoYW5nZXMg
dGhlIHN0cnVjdHVyZSBvZiB0aGUgRE9NLgorICAgICAgICAgICRsaW5rTm9kZSA9IEpRTGl0ZVBy
b3RvdHlwZS5jbG9uZS5jYWxsKCRjb21waWxlTm9kZXMpOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICRsaW5rTm9kZSA9ICRjb21waWxlTm9kZXM7CisgICAgICAgIH0KKworICAgICAgICBp
ZiAodHJhbnNjbHVkZUNvbnRyb2xsZXJzKSB7CisgICAgICAgICAgZm9yICh2YXIgY29udHJvbGxl
ck5hbWUgaW4gdHJhbnNjbHVkZUNvbnRyb2xsZXJzKSB7CisgICAgICAgICAgICAkbGlua05vZGUu
ZGF0YSgnJCcgKyBjb250cm9sbGVyTmFtZSArICdDb250cm9sbGVyJywgdHJhbnNjbHVkZUNvbnRy
b2xsZXJzW2NvbnRyb2xsZXJOYW1lXS5pbnN0YW5jZSk7CisgICAgICAgICAgfQorICAgICAgICB9
CisKKyAgICAgICAgY29tcGlsZS4kJGFkZFNjb3BlSW5mbygkbGlua05vZGUsIHNjb3BlKTsKKwor
ICAgICAgICBpZiAoY2xvbmVDb25uZWN0Rm4pIGNsb25lQ29ubmVjdEZuKCRsaW5rTm9kZSwgc2Nv
cGUpOworICAgICAgICBpZiAoY29tcG9zaXRlTGlua0ZuKSBjb21wb3NpdGVMaW5rRm4oc2NvcGUs
ICRsaW5rTm9kZSwgJGxpbmtOb2RlLCBwYXJlbnRCb3VuZFRyYW5zY2x1ZGVGbik7CisgICAgICAg
IHJldHVybiAkbGlua05vZGU7CisgICAgICB9OworICAgIH0KKworICAgIGZ1bmN0aW9uIGRldGVj
dE5hbWVzcGFjZUZvckNoaWxkRWxlbWVudHMocGFyZW50RWxlbWVudCkgeworICAgICAgLy8gVE9E
TzogTWFrZSB0aGlzIGRldGVjdCBNYXRoTUwgYXMgd2VsbC4uLgorICAgICAgdmFyIG5vZGUgPSBw
YXJlbnRFbGVtZW50ICYmIHBhcmVudEVsZW1lbnRbMF07CisgICAgICBpZiAoIW5vZGUpIHsKKyAg
ICAgICAgcmV0dXJuICdodG1sJzsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiBub2Rl
TmFtZV8obm9kZSkgIT09ICdmb3JlaWdub2JqZWN0JyAmJiBub2RlLnRvU3RyaW5nKCkubWF0Y2go
L1NWRy8pID8gJ3N2ZycgOiAnaHRtbCc7CisgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAg
ICogQ29tcGlsZSBmdW5jdGlvbiBtYXRjaGVzIGVhY2ggbm9kZSBpbiBub2RlTGlzdCBhZ2FpbnN0
IHRoZSBkaXJlY3RpdmVzLiBPbmNlIGFsbCBkaXJlY3RpdmVzCisgICAgICogZm9yIGEgcGFydGlj
dWxhciBub2RlIGFyZSBjb2xsZWN0ZWQgdGhlaXIgY29tcGlsZSBmdW5jdGlvbnMgYXJlIGV4ZWN1
dGVkLiBUaGUgY29tcGlsZQorICAgICAqIGZ1bmN0aW9ucyByZXR1cm4gdmFsdWVzIC0gdGhlIGxp
bmtpbmcgZnVuY3Rpb25zIC0gYXJlIGNvbWJpbmVkIGludG8gYSBjb21wb3NpdGUgbGlua2luZwor
ICAgICAqIGZ1bmN0aW9uLCB3aGljaCBpcyB0aGUgYSBsaW5raW5nIGZ1bmN0aW9uIGZvciB0aGUg
bm9kZS4KKyAgICAgKgorICAgICAqIEBwYXJhbSB7Tm9kZUxpc3R9IG5vZGVMaXN0IGFuIGFycmF5
IG9mIG5vZGVzIG9yIE5vZGVMaXN0IHRvIGNvbXBpbGUKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9u
KGFuZ3VsYXIuU2NvcGUsIGNsb25lQXR0YWNoRm49KX0gdHJhbnNjbHVkZUZuIEEgbGlua2luZyBm
dW5jdGlvbiwgd2hlcmUgdGhlCisgICAgICogICAgICAgIHNjb3BlIGFyZ3VtZW50IGlzIGF1dG8t
Z2VuZXJhdGVkIHRvIHRoZSBuZXcgY2hpbGQgb2YgdGhlIHRyYW5zY2x1ZGVkIHBhcmVudCBzY29w
ZS4KKyAgICAgKiBAcGFyYW0ge0RPTUVsZW1lbnQ9fSAkcm9vdEVsZW1lbnQgSWYgdGhlIG5vZGVM
aXN0IGlzIHRoZSByb290IG9mIHRoZSBjb21waWxhdGlvbiB0cmVlIHRoZW4KKyAgICAgKiAgICAg
ICAgdGhlIHJvb3RFbGVtZW50IG11c3QgYmUgc2V0IHRoZSBqcUxpdGUgY29sbGVjdGlvbiBvZiB0
aGUgY29tcGlsZSByb290LiBUaGlzIGlzCisgICAgICogICAgICAgIG5lZWRlZCBzbyB0aGF0IHRo
ZSBqcUxpdGUgY29sbGVjdGlvbiBpdGVtcyBjYW4gYmUgcmVwbGFjZWQgd2l0aCB3aWRnZXRzLgor
ICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gbWF4UHJpb3JpdHkgTWF4IGRpcmVjdGl2ZSBwcmlvcml0
eS4KKyAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IEEgY29tcG9zaXRlIGxpbmtpbmcgZnVuY3Rp
b24gb2YgYWxsIG9mIHRoZSBtYXRjaGVkIGRpcmVjdGl2ZXMgb3IgbnVsbC4KKyAgICAgKi8KKyAg
ICBmdW5jdGlvbiBjb21waWxlTm9kZXMobm9kZUxpc3QsIHRyYW5zY2x1ZGVGbiwgJHJvb3RFbGVt
ZW50LCBtYXhQcmlvcml0eSwgaWdub3JlRGlyZWN0aXZlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHByZXZpb3VzQ29tcGlsZUNvbnRleHQpIHsKKyAgICAgIHZhciBsaW5rRm5zID0gW10s
CisgICAgICAgICAgYXR0cnMsIGRpcmVjdGl2ZXMsIG5vZGVMaW5rRm4sIGNoaWxkTm9kZXMsIGNo
aWxkTGlua0ZuLCBsaW5rRm5Gb3VuZCwgbm9kZUxpbmtGbkZvdW5kOworCisgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IG5vZGVMaXN0Lmxlbmd0aDsgaSsrKSB7CisgICAgICAgIGF0dHJzID0gbmV3
IEF0dHJpYnV0ZXMoKTsKKworICAgICAgICAvLyB3ZSBtdXN0IGFsd2F5cyByZWZlciB0byBub2Rl
TGlzdFtpXSBzaW5jZSB0aGUgbm9kZXMgY2FuIGJlIHJlcGxhY2VkIHVuZGVybmVhdGggdXMuCisg
ICAgICAgIGRpcmVjdGl2ZXMgPSBjb2xsZWN0RGlyZWN0aXZlcyhub2RlTGlzdFtpXSwgW10sIGF0
dHJzLCBpID09PSAwID8gbWF4UHJpb3JpdHkgOiB1bmRlZmluZWQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlRGlyZWN0aXZlKTsKKworICAgICAgICBub2Rl
TGlua0ZuID0gKGRpcmVjdGl2ZXMubGVuZ3RoKQorICAgICAgICAgICAgPyBhcHBseURpcmVjdGl2
ZXNUb05vZGUoZGlyZWN0aXZlcywgbm9kZUxpc3RbaV0sIGF0dHJzLCB0cmFuc2NsdWRlRm4sICRy
b290RWxlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCwg
W10sIFtdLCBwcmV2aW91c0NvbXBpbGVDb250ZXh0KQorICAgICAgICAgICAgOiBudWxsOworCisg
ICAgICAgIGlmIChub2RlTGlua0ZuICYmIG5vZGVMaW5rRm4uc2NvcGUpIHsKKyAgICAgICAgICBj
b21waWxlLiQkYWRkU2NvcGVDbGFzcyhhdHRycy4kJGVsZW1lbnQpOworICAgICAgICB9CisKKyAg
ICAgICAgY2hpbGRMaW5rRm4gPSAobm9kZUxpbmtGbiAmJiBub2RlTGlua0ZuLnRlcm1pbmFsIHx8
CisgICAgICAgICAgICAgICAgICAgICAgIShjaGlsZE5vZGVzID0gbm9kZUxpc3RbaV0uY2hpbGRO
b2RlcykgfHwKKyAgICAgICAgICAgICAgICAgICAgICAhY2hpbGROb2Rlcy5sZW5ndGgpCisgICAg
ICAgICAgICA/IG51bGwKKyAgICAgICAgICAgIDogY29tcGlsZU5vZGVzKGNoaWxkTm9kZXMsCisg
ICAgICAgICAgICAgICAgIG5vZGVMaW5rRm4gPyAoCisgICAgICAgICAgICAgICAgICAobm9kZUxp
bmtGbi50cmFuc2NsdWRlT25UaGlzRWxlbWVudCB8fCAhbm9kZUxpbmtGbi50ZW1wbGF0ZU9uVGhp
c0VsZW1lbnQpCisgICAgICAgICAgICAgICAgICAgICAmJiBub2RlTGlua0ZuLnRyYW5zY2x1ZGUp
IDogdHJhbnNjbHVkZUZuKTsKKworICAgICAgICBpZiAobm9kZUxpbmtGbiB8fCBjaGlsZExpbmtG
bikgeworICAgICAgICAgIGxpbmtGbnMucHVzaChpLCBub2RlTGlua0ZuLCBjaGlsZExpbmtGbik7
CisgICAgICAgICAgbGlua0ZuRm91bmQgPSB0cnVlOworICAgICAgICAgIG5vZGVMaW5rRm5Gb3Vu
ZCA9IG5vZGVMaW5rRm5Gb3VuZCB8fCBub2RlTGlua0ZuOworICAgICAgICB9CisKKyAgICAgICAg
Ly91c2UgdGhlIHByZXZpb3VzIGNvbnRleHQgb25seSBmb3IgdGhlIGZpcnN0IGVsZW1lbnQgaW4g
dGhlIHZpcnR1YWwgZ3JvdXAKKyAgICAgICAgcHJldmlvdXNDb21waWxlQ29udGV4dCA9IG51bGw7
CisgICAgICB9CisKKyAgICAgIC8vIHJldHVybiBhIGxpbmtpbmcgZnVuY3Rpb24gaWYgd2UgaGF2
ZSBmb3VuZCBhbnl0aGluZywgbnVsbCBvdGhlcndpc2UKKyAgICAgIHJldHVybiBsaW5rRm5Gb3Vu
ZCA/IGNvbXBvc2l0ZUxpbmtGbiA6IG51bGw7CisKKyAgICAgIGZ1bmN0aW9uIGNvbXBvc2l0ZUxp
bmtGbihzY29wZSwgbm9kZUxpc3QsICRyb290RWxlbWVudCwgcGFyZW50Qm91bmRUcmFuc2NsdWRl
Rm4pIHsKKyAgICAgICAgdmFyIG5vZGVMaW5rRm4sIGNoaWxkTGlua0ZuLCBub2RlLCBjaGlsZFNj
b3BlLCBpLCBpaSwgaWR4LCBjaGlsZEJvdW5kVHJhbnNjbHVkZUZuOworICAgICAgICB2YXIgc3Rh
YmxlTm9kZUxpc3Q7CisKKworICAgICAgICBpZiAobm9kZUxpbmtGbkZvdW5kKSB7CisgICAgICAg
ICAgLy8gY29weSBub2RlTGlzdCBzbyB0aGF0IGlmIGEgbm9kZUxpbmtGbiByZW1vdmVzIG9yIGFk
ZHMgYW4gZWxlbWVudCBhdCB0aGlzIERPTSBsZXZlbCBvdXIKKyAgICAgICAgICAvLyBvZmZzZXRz
IGRvbid0IGdldCBzY3Jld2VkIHVwCisgICAgICAgICAgdmFyIG5vZGVMaXN0TGVuZ3RoID0gbm9k
ZUxpc3QubGVuZ3RoOworICAgICAgICAgIHN0YWJsZU5vZGVMaXN0ID0gbmV3IEFycmF5KG5vZGVM
aXN0TGVuZ3RoKTsKKworICAgICAgICAgIC8vIGNyZWF0ZSBhIHNwYXJzZSBhcnJheSBieSBvbmx5
IGNvcHlpbmcgdGhlIGVsZW1lbnRzIHdoaWNoIGhhdmUgYSBsaW5rRm4KKyAgICAgICAgICBmb3Ig
KGkgPSAwOyBpIDwgbGlua0Zucy5sZW5ndGg7IGkrPTMpIHsKKyAgICAgICAgICAgIGlkeCA9IGxp
bmtGbnNbaV07CisgICAgICAgICAgICBzdGFibGVOb2RlTGlzdFtpZHhdID0gbm9kZUxpc3RbaWR4
XTsKKyAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgc3RhYmxlTm9kZUxp
c3QgPSBub2RlTGlzdDsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAoaSA9IDAsIGlpID0gbGlu
a0Zucy5sZW5ndGg7IGkgPCBpaTspIHsKKyAgICAgICAgICBub2RlID0gc3RhYmxlTm9kZUxpc3Rb
bGlua0Zuc1tpKytdXTsKKyAgICAgICAgICBub2RlTGlua0ZuID0gbGlua0Zuc1tpKytdOworICAg
ICAgICAgIGNoaWxkTGlua0ZuID0gbGlua0Zuc1tpKytdOworCisgICAgICAgICAgaWYgKG5vZGVM
aW5rRm4pIHsKKyAgICAgICAgICAgIGlmIChub2RlTGlua0ZuLnNjb3BlKSB7CisgICAgICAgICAg
ICAgIGNoaWxkU2NvcGUgPSBzY29wZS4kbmV3KCk7CisgICAgICAgICAgICAgIGNvbXBpbGUuJCRh
ZGRTY29wZUluZm8oanFMaXRlKG5vZGUpLCBjaGlsZFNjb3BlKTsKKyAgICAgICAgICAgICAgdmFy
IGRlc3Ryb3lCaW5kaW5ncyA9IG5vZGVMaW5rRm4uJCRkZXN0cm95QmluZGluZ3M7CisgICAgICAg
ICAgICAgIGlmIChkZXN0cm95QmluZGluZ3MpIHsKKyAgICAgICAgICAgICAgICBub2RlTGlua0Zu
LiQkZGVzdHJveUJpbmRpbmdzID0gbnVsbDsKKyAgICAgICAgICAgICAgICBjaGlsZFNjb3BlLiRv
bignJGRlc3Ryb3llZCcsIGRlc3Ryb3lCaW5kaW5ncyk7CisgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgIGNoaWxkU2NvcGUgPSBzY29wZTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG5vZGVMaW5rRm4udHJhbnNjbHVkZU9uVGhpc0Vs
ZW1lbnQpIHsKKyAgICAgICAgICAgICAgY2hpbGRCb3VuZFRyYW5zY2x1ZGVGbiA9IGNyZWF0ZUJv
dW5kVHJhbnNjbHVkZUZuKAorICAgICAgICAgICAgICAgICAgc2NvcGUsIG5vZGVMaW5rRm4udHJh
bnNjbHVkZSwgcGFyZW50Qm91bmRUcmFuc2NsdWRlRm4pOworCisgICAgICAgICAgICB9IGVsc2Ug
aWYgKCFub2RlTGlua0ZuLnRlbXBsYXRlT25UaGlzRWxlbWVudCAmJiBwYXJlbnRCb3VuZFRyYW5z
Y2x1ZGVGbikgeworICAgICAgICAgICAgICBjaGlsZEJvdW5kVHJhbnNjbHVkZUZuID0gcGFyZW50
Qm91bmRUcmFuc2NsdWRlRm47CisKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoIXBhcmVudEJvdW5k
VHJhbnNjbHVkZUZuICYmIHRyYW5zY2x1ZGVGbikgeworICAgICAgICAgICAgICBjaGlsZEJvdW5k
VHJhbnNjbHVkZUZuID0gY3JlYXRlQm91bmRUcmFuc2NsdWRlRm4oc2NvcGUsIHRyYW5zY2x1ZGVG
bik7CisKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgIGNoaWxkQm91bmRUcmFu
c2NsdWRlRm4gPSBudWxsOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBub2RlTGlua0Zu
KGNoaWxkTGlua0ZuLCBjaGlsZFNjb3BlLCBub2RlLCAkcm9vdEVsZW1lbnQsIGNoaWxkQm91bmRU
cmFuc2NsdWRlRm4sCisgICAgICAgICAgICAgICAgICAgICAgIG5vZGVMaW5rRm4pOworCisgICAg
ICAgICAgfSBlbHNlIGlmIChjaGlsZExpbmtGbikgeworICAgICAgICAgICAgY2hpbGRMaW5rRm4o
c2NvcGUsIG5vZGUuY2hpbGROb2RlcywgdW5kZWZpbmVkLCBwYXJlbnRCb3VuZFRyYW5zY2x1ZGVG
bik7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfQorCisgICAgZnVuY3Rp
b24gY3JlYXRlQm91bmRUcmFuc2NsdWRlRm4oc2NvcGUsIHRyYW5zY2x1ZGVGbiwgcHJldmlvdXNC
b3VuZFRyYW5zY2x1ZGVGbikgeworCisgICAgICB2YXIgYm91bmRUcmFuc2NsdWRlRm4gPSBmdW5j
dGlvbih0cmFuc2NsdWRlZFNjb3BlLCBjbG9uZUZuLCBjb250cm9sbGVycywgZnV0dXJlUGFyZW50
RWxlbWVudCwgY29udGFpbmluZ1Njb3BlKSB7CisKKyAgICAgICAgaWYgKCF0cmFuc2NsdWRlZFNj
b3BlKSB7CisgICAgICAgICAgdHJhbnNjbHVkZWRTY29wZSA9IHNjb3BlLiRuZXcoZmFsc2UsIGNv
bnRhaW5pbmdTY29wZSk7CisgICAgICAgICAgdHJhbnNjbHVkZWRTY29wZS4kJHRyYW5zY2x1ZGVk
ID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0cmFuc2NsdWRlRm4odHJhbnNj
bHVkZWRTY29wZSwgY2xvbmVGbiwgeworICAgICAgICAgIHBhcmVudEJvdW5kVHJhbnNjbHVkZUZu
OiBwcmV2aW91c0JvdW5kVHJhbnNjbHVkZUZuLAorICAgICAgICAgIHRyYW5zY2x1ZGVDb250cm9s
bGVyczogY29udHJvbGxlcnMsCisgICAgICAgICAgZnV0dXJlUGFyZW50RWxlbWVudDogZnV0dXJl
UGFyZW50RWxlbWVudAorICAgICAgICB9KTsKKyAgICAgIH07CisKKyAgICAgIHJldHVybiBib3Vu
ZFRyYW5zY2x1ZGVGbjsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBMb29rcyBmb3IgZGlyZWN0
aXZlcyBvbiB0aGUgZ2l2ZW4gbm9kZSBhbmQgYWRkcyB0aGVtIHRvIHRoZSBkaXJlY3RpdmUgY29s
bGVjdGlvbiB3aGljaCBpcworICAgICAqIHNvcnRlZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBu
b2RlIE5vZGUgdG8gc2VhcmNoLgorICAgICAqIEBwYXJhbSBkaXJlY3RpdmVzIEFuIGFycmF5IHRv
IHdoaWNoIHRoZSBkaXJlY3RpdmVzIGFyZSBhZGRlZCB0by4gVGhpcyBhcnJheSBpcyBzb3J0ZWQg
YmVmb3JlCisgICAgICogICAgICAgIHRoZSBmdW5jdGlvbiByZXR1cm5zLgorICAgICAqIEBwYXJh
bSBhdHRycyBUaGUgc2hhcmVkIGF0dHJzIG9iamVjdCB3aGljaCBpcyB1c2VkIHRvIHBvcHVsYXRl
IHRoZSBub3JtYWxpemVkIGF0dHJpYnV0ZXMuCisgICAgICogQHBhcmFtIHtudW1iZXI9fSBtYXhQ
cmlvcml0eSBNYXggZGlyZWN0aXZlIHByaW9yaXR5LgorICAgICAqLworICAgIGZ1bmN0aW9uIGNv
bGxlY3REaXJlY3RpdmVzKG5vZGUsIGRpcmVjdGl2ZXMsIGF0dHJzLCBtYXhQcmlvcml0eSwgaWdu
b3JlRGlyZWN0aXZlKSB7CisgICAgICB2YXIgbm9kZVR5cGUgPSBub2RlLm5vZGVUeXBlLAorICAg
ICAgICAgIGF0dHJzTWFwID0gYXR0cnMuJGF0dHIsCisgICAgICAgICAgbWF0Y2gsCisgICAgICAg
ICAgY2xhc3NOYW1lOworCisgICAgICBzd2l0Y2ggKG5vZGVUeXBlKSB7CisgICAgICAgIGNhc2Ug
Tk9ERV9UWVBFX0VMRU1FTlQ6IC8qIEVsZW1lbnQgKi8KKyAgICAgICAgICAvLyB1c2UgdGhlIG5v
ZGUgbmFtZTogPGRpcmVjdGl2ZT4KKyAgICAgICAgICBhZGREaXJlY3RpdmUoZGlyZWN0aXZlcywK
KyAgICAgICAgICAgICAgZGlyZWN0aXZlTm9ybWFsaXplKG5vZGVOYW1lXyhub2RlKSksICdFJywg
bWF4UHJpb3JpdHksIGlnbm9yZURpcmVjdGl2ZSk7CisKKyAgICAgICAgICAvLyBpdGVyYXRlIG92
ZXIgdGhlIGF0dHJpYnV0ZXMKKyAgICAgICAgICBmb3IgKHZhciBhdHRyLCBuYW1lLCBuTmFtZSwg
bmdBdHRyTmFtZSwgdmFsdWUsIGlzTmdBdHRyLCBuQXR0cnMgPSBub2RlLmF0dHJpYnV0ZXMsCisg
ICAgICAgICAgICAgICAgICAgaiA9IDAsIGpqID0gbkF0dHJzICYmIG5BdHRycy5sZW5ndGg7IGog
PCBqajsgaisrKSB7CisgICAgICAgICAgICB2YXIgYXR0clN0YXJ0TmFtZSA9IGZhbHNlOworICAg
ICAgICAgICAgdmFyIGF0dHJFbmROYW1lID0gZmFsc2U7CisKKyAgICAgICAgICAgIGF0dHIgPSBu
QXR0cnNbal07CisgICAgICAgICAgICBuYW1lID0gYXR0ci5uYW1lOworICAgICAgICAgICAgdmFs
dWUgPSB0cmltKGF0dHIudmFsdWUpOworCisgICAgICAgICAgICAvLyBzdXBwb3J0IG5nQXR0ciBh
dHRyaWJ1dGUgYmluZGluZworICAgICAgICAgICAgbmdBdHRyTmFtZSA9IGRpcmVjdGl2ZU5vcm1h
bGl6ZShuYW1lKTsKKyAgICAgICAgICAgIGlmIChpc05nQXR0ciA9IE5HX0FUVFJfQklORElORy50
ZXN0KG5nQXR0ck5hbWUpKSB7CisgICAgICAgICAgICAgIG5hbWUgPSBuYW1lLnJlcGxhY2UoUFJF
RklYX1JFR0VYUCwgJycpCisgICAgICAgICAgICAgICAgLnN1YnN0cig4KS5yZXBsYWNlKC9fKC4p
L2csIGZ1bmN0aW9uKG1hdGNoLCBsZXR0ZXIpIHsKKyAgICAgICAgICAgICAgICAgIHJldHVybiBs
ZXR0ZXIudG9VcHBlckNhc2UoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgdmFyIGRpcmVjdGl2ZU5OYW1lID0gbmdBdHRyTmFtZS5yZXBsYWNlKC8o
U3RhcnR8RW5kKSQvLCAnJyk7CisgICAgICAgICAgICBpZiAoZGlyZWN0aXZlSXNNdWx0aUVsZW1l
bnQoZGlyZWN0aXZlTk5hbWUpKSB7CisgICAgICAgICAgICAgIGlmIChuZ0F0dHJOYW1lID09PSBk
aXJlY3RpdmVOTmFtZSArICdTdGFydCcpIHsKKyAgICAgICAgICAgICAgICBhdHRyU3RhcnROYW1l
ID0gbmFtZTsKKyAgICAgICAgICAgICAgICBhdHRyRW5kTmFtZSA9IG5hbWUuc3Vic3RyKDAsIG5h
bWUubGVuZ3RoIC0gNSkgKyAnZW5kJzsKKyAgICAgICAgICAgICAgICBuYW1lID0gbmFtZS5zdWJz
dHIoMCwgbmFtZS5sZW5ndGggLSA2KTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBuTmFtZSA9IGRpcmVjdGl2ZU5vcm1hbGl6ZShuYW1lLnRvTG93ZXJDYXNl
KCkpOworICAgICAgICAgICAgYXR0cnNNYXBbbk5hbWVdID0gbmFtZTsKKyAgICAgICAgICAgIGlm
IChpc05nQXR0ciB8fCAhYXR0cnMuaGFzT3duUHJvcGVydHkobk5hbWUpKSB7CisgICAgICAgICAg
ICAgICAgYXR0cnNbbk5hbWVdID0gdmFsdWU7CisgICAgICAgICAgICAgICAgaWYgKGdldEJvb2xl
YW5BdHRyTmFtZShub2RlLCBuTmFtZSkpIHsKKyAgICAgICAgICAgICAgICAgIGF0dHJzW25OYW1l
XSA9IHRydWU7IC8vIHByZXNlbmNlIG1lYW5zIHRydWUKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBhZGRBdHRySW50ZXJwb2xhdGVEaXJlY3RpdmUobm9kZSwg
ZGlyZWN0aXZlcywgdmFsdWUsIG5OYW1lLCBpc05nQXR0cik7CisgICAgICAgICAgICBhZGREaXJl
Y3RpdmUoZGlyZWN0aXZlcywgbk5hbWUsICdBJywgbWF4UHJpb3JpdHksIGlnbm9yZURpcmVjdGl2
ZSwgYXR0clN0YXJ0TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0ckVuZE5hbWUp
OworICAgICAgICAgIH0KKworICAgICAgICAgIC8vIHVzZSBjbGFzcyBhcyBkaXJlY3RpdmUKKyAg
ICAgICAgICBjbGFzc05hbWUgPSBub2RlLmNsYXNzTmFtZTsKKyAgICAgICAgICBpZiAoaXNPYmpl
Y3QoY2xhc3NOYW1lKSkgeworICAgICAgICAgICAgICAvLyBNYXliZSBTVkdBbmltYXRlZFN0cmlu
ZworICAgICAgICAgICAgICBjbGFzc05hbWUgPSBjbGFzc05hbWUuYW5pbVZhbDsKKyAgICAgICAg
ICB9CisgICAgICAgICAgaWYgKGlzU3RyaW5nKGNsYXNzTmFtZSkgJiYgY2xhc3NOYW1lICE9PSAn
JykgeworICAgICAgICAgICAgd2hpbGUgKG1hdGNoID0gQ0xBU1NfRElSRUNUSVZFX1JFR0VYUC5l
eGVjKGNsYXNzTmFtZSkpIHsKKyAgICAgICAgICAgICAgbk5hbWUgPSBkaXJlY3RpdmVOb3JtYWxp
emUobWF0Y2hbMl0pOworICAgICAgICAgICAgICBpZiAoYWRkRGlyZWN0aXZlKGRpcmVjdGl2ZXMs
IG5OYW1lLCAnQycsIG1heFByaW9yaXR5LCBpZ25vcmVEaXJlY3RpdmUpKSB7CisgICAgICAgICAg
ICAgICAgYXR0cnNbbk5hbWVdID0gdHJpbShtYXRjaFszXSk7CisgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgY2xhc3NOYW1lID0gY2xhc3NOYW1lLnN1YnN0cihtYXRjaC5pbmRleCArIG1h
dGNoWzBdLmxlbmd0aCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIE5PREVfVFlQRV9URVhUOiAvKiBUZXh0IE5vZGUgKi8KKyAgICAg
ICAgICBpZiAobXNpZSA9PT0gMTEpIHsKKyAgICAgICAgICAgIC8vIFdvcmthcm91bmQgZm9yICMx
MTc4MQorICAgICAgICAgICAgd2hpbGUgKG5vZGUucGFyZW50Tm9kZSAmJiBub2RlLm5leHRTaWJs
aW5nICYmIG5vZGUubmV4dFNpYmxpbmcubm9kZVR5cGUgPT09IE5PREVfVFlQRV9URVhUKSB7Cisg
ICAgICAgICAgICAgIG5vZGUubm9kZVZhbHVlID0gbm9kZS5ub2RlVmFsdWUgKyBub2RlLm5leHRT
aWJsaW5nLm5vZGVWYWx1ZTsKKyAgICAgICAgICAgICAgbm9kZS5wYXJlbnROb2RlLnJlbW92ZUNo
aWxkKG5vZGUubmV4dFNpYmxpbmcpOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAg
ICAgICBhZGRUZXh0SW50ZXJwb2xhdGVEaXJlY3RpdmUoZGlyZWN0aXZlcywgbm9kZS5ub2RlVmFs
dWUpOworICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE5PREVfVFlQRV9DT01NRU5UOiAv
KiBDb21tZW50ICovCisgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG1hdGNoID0gQ09NTUVO
VF9ESVJFQ1RJVkVfUkVHRVhQLmV4ZWMobm9kZS5ub2RlVmFsdWUpOworICAgICAgICAgICAgaWYg
KG1hdGNoKSB7CisgICAgICAgICAgICAgIG5OYW1lID0gZGlyZWN0aXZlTm9ybWFsaXplKG1hdGNo
WzFdKTsKKyAgICAgICAgICAgICAgaWYgKGFkZERpcmVjdGl2ZShkaXJlY3RpdmVzLCBuTmFtZSwg
J00nLCBtYXhQcmlvcml0eSwgaWdub3JlRGlyZWN0aXZlKSkgeworICAgICAgICAgICAgICAgIGF0
dHJzW25OYW1lXSA9IHRyaW0obWF0Y2hbMl0pOworICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisgICAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgLy8gdHVybnMgb3V0IHRo
YXQgdW5kZXIgc29tZSBjaXJjdW1zdGFuY2VzIElFOSB0aHJvd3MgZXJyb3JzIHdoZW4gb25lIGF0
dGVtcHRzIHRvIHJlYWQKKyAgICAgICAgICAgIC8vIGNvbW1lbnQncyBub2RlIHZhbHVlLgorICAg
ICAgICAgICAgLy8gSnVzdCBpZ25vcmUgaXQgYW5kIGNvbnRpbnVlLiAoQ2FuJ3Qgc2VlbSB0byBy
ZXByb2R1Y2UgaW4gdGVzdCBjYXNlLikKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7Cisg
ICAgICB9CisKKyAgICAgIGRpcmVjdGl2ZXMuc29ydChieVByaW9yaXR5KTsKKyAgICAgIHJldHVy
biBkaXJlY3RpdmVzOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdpdmVuIGEgbm9kZSB3aXRo
IGFuIGRpcmVjdGl2ZS1zdGFydCBpdCBjb2xsZWN0cyBhbGwgb2YgdGhlIHNpYmxpbmdzIHVudGls
IGl0IGZpbmRzCisgICAgICogZGlyZWN0aXZlLWVuZC4KKyAgICAgKiBAcGFyYW0gbm9kZQorICAg
ICAqIEBwYXJhbSBhdHRyU3RhcnQKKyAgICAgKiBAcGFyYW0gYXR0ckVuZAorICAgICAqIEByZXR1
cm5zIHsqfQorICAgICAqLworICAgIGZ1bmN0aW9uIGdyb3VwU2Nhbihub2RlLCBhdHRyU3RhcnQs
IGF0dHJFbmQpIHsKKyAgICAgIHZhciBub2RlcyA9IFtdOworICAgICAgdmFyIGRlcHRoID0gMDsK
KyAgICAgIGlmIChhdHRyU3RhcnQgJiYgbm9kZS5oYXNBdHRyaWJ1dGUgJiYgbm9kZS5oYXNBdHRy
aWJ1dGUoYXR0clN0YXJ0KSkgeworICAgICAgICBkbyB7CisgICAgICAgICAgaWYgKCFub2RlKSB7
CisgICAgICAgICAgICB0aHJvdyAkY29tcGlsZU1pbkVycigndXRlcmRpcicsCisgICAgICAgICAg
ICAgICAgICAgICAgIlVudGVybWluYXRlZCBhdHRyaWJ1dGUsIGZvdW5kICd7MH0nIGJ1dCBubyBt
YXRjaGluZyAnezF9JyBmb3VuZC4iLAorICAgICAgICAgICAgICAgICAgICAgIGF0dHJTdGFydCwg
YXR0ckVuZCk7CisgICAgICAgICAgfQorICAgICAgICAgIGlmIChub2RlLm5vZGVUeXBlID09IE5P
REVfVFlQRV9FTEVNRU5UKSB7CisgICAgICAgICAgICBpZiAobm9kZS5oYXNBdHRyaWJ1dGUoYXR0
clN0YXJ0KSkgZGVwdGgrKzsKKyAgICAgICAgICAgIGlmIChub2RlLmhhc0F0dHJpYnV0ZShhdHRy
RW5kKSkgZGVwdGgtLTsKKyAgICAgICAgICB9CisgICAgICAgICAgbm9kZXMucHVzaChub2RlKTsK
KyAgICAgICAgICBub2RlID0gbm9kZS5uZXh0U2libGluZzsKKyAgICAgICAgfSB3aGlsZSAoZGVw
dGggPiAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIG5vZGVzLnB1c2gobm9kZSk7CisgICAg
ICB9CisKKyAgICAgIHJldHVybiBqcUxpdGUobm9kZXMpOworICAgIH0KKworICAgIC8qKgorICAg
ICAqIFdyYXBwZXIgZm9yIGxpbmtpbmcgZnVuY3Rpb24gd2hpY2ggY29udmVydHMgbm9ybWFsIGxp
bmtpbmcgZnVuY3Rpb24gaW50byBhIGdyb3VwZWQKKyAgICAgKiBsaW5raW5nIGZ1bmN0aW9uLgor
ICAgICAqIEBwYXJhbSBsaW5rRm4KKyAgICAgKiBAcGFyYW0gYXR0clN0YXJ0CisgICAgICogQHBh
cmFtIGF0dHJFbmQKKyAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259CisgICAgICovCisgICAgZnVu
Y3Rpb24gZ3JvdXBFbGVtZW50c0xpbmtGbldyYXBwZXIobGlua0ZuLCBhdHRyU3RhcnQsIGF0dHJF
bmQpIHsKKyAgICAgIHJldHVybiBmdW5jdGlvbihzY29wZSwgZWxlbWVudCwgYXR0cnMsIGNvbnRy
b2xsZXJzLCB0cmFuc2NsdWRlRm4pIHsKKyAgICAgICAgZWxlbWVudCA9IGdyb3VwU2NhbihlbGVt
ZW50WzBdLCBhdHRyU3RhcnQsIGF0dHJFbmQpOworICAgICAgICByZXR1cm4gbGlua0ZuKHNjb3Bl
LCBlbGVtZW50LCBhdHRycywgY29udHJvbGxlcnMsIHRyYW5zY2x1ZGVGbik7CisgICAgICB9Owor
ICAgIH0KKworICAgIC8qKgorICAgICAqIE9uY2UgdGhlIGRpcmVjdGl2ZXMgaGF2ZSBiZWVuIGNv
bGxlY3RlZCwgdGhlaXIgY29tcGlsZSBmdW5jdGlvbnMgYXJlIGV4ZWN1dGVkLiBUaGlzIG1ldGhv
ZAorICAgICAqIGlzIHJlc3BvbnNpYmxlIGZvciBpbmxpbmluZyBkaXJlY3RpdmUgdGVtcGxhdGVz
IGFzIHdlbGwgYXMgdGVybWluYXRpbmcgdGhlIGFwcGxpY2F0aW9uCisgICAgICogb2YgdGhlIGRp
cmVjdGl2ZXMgaWYgdGhlIHRlcm1pbmFsIGRpcmVjdGl2ZSBoYXMgYmVlbiByZWFjaGVkLgorICAg
ICAqCisgICAgICogQHBhcmFtIHtBcnJheX0gZGlyZWN0aXZlcyBBcnJheSBvZiBjb2xsZWN0ZWQg
ZGlyZWN0aXZlcyB0byBleGVjdXRlIHRoZWlyIGNvbXBpbGUgZnVuY3Rpb24uCisgICAgICogICAg
ICAgIHRoaXMgbmVlZHMgdG8gYmUgcHJlLXNvcnRlZCBieSBwcmlvcml0eSBvcmRlci4KKyAgICAg
KiBAcGFyYW0ge05vZGV9IGNvbXBpbGVOb2RlIFRoZSByYXcgRE9NIG5vZGUgdG8gYXBwbHkgdGhl
IGNvbXBpbGUgZnVuY3Rpb25zIHRvCisgICAgICogQHBhcmFtIHtPYmplY3R9IHRlbXBsYXRlQXR0
cnMgVGhlIHNoYXJlZCBhdHRyaWJ1dGUgZnVuY3Rpb24KKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9u
KGFuZ3VsYXIuU2NvcGUsIGNsb25lQXR0YWNoRm49KX0gdHJhbnNjbHVkZUZuIEEgbGlua2luZyBm
dW5jdGlvbiwgd2hlcmUgdGhlCisgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNjb3BlIGFyZ3VtZW50IGlzIGF1dG8tZ2VuZXJhdGVkIHRvIHRo
ZSBuZXcKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2hpbGQgb2YgdGhlIHRyYW5zY2x1ZGVkIHBhcmVudCBzY29wZS4KKyAgICAgKiBAcGFy
YW0ge0pRTGl0ZX0ganFDb2xsZWN0aW9uIElmIHdlIGFyZSB3b3JraW5nIG9uIHRoZSByb290IG9m
IHRoZSBjb21waWxlIHRyZWUgdGhlbiB0aGlzCisgICAgICogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhcmd1bWVudCBoYXMgdGhlIHJvb3QganFMaXRlIGFycmF5IHNvIHRoYXQgd2UgY2Fu
IHJlcGxhY2Ugbm9kZXMKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uIGl0
LgorICAgICAqIEBwYXJhbSB7T2JqZWN0PX0gb3JpZ2luYWxSZXBsYWNlRGlyZWN0aXZlIEFuIG9w
dGlvbmFsIGRpcmVjdGl2ZSB0aGF0IHdpbGwgYmUgaWdub3JlZCB3aGVuCisgICAgICogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGlsaW5nIHRoZSB0cmFuc2Ns
dXNpb24uCisgICAgICogQHBhcmFtIHtBcnJheS48RnVuY3Rpb24+fSBwcmVMaW5rRm5zCisgICAg
ICogQHBhcmFtIHtBcnJheS48RnVuY3Rpb24+fSBwb3N0TGlua0ZucworICAgICAqIEBwYXJhbSB7
T2JqZWN0fSBwcmV2aW91c0NvbXBpbGVDb250ZXh0IENvbnRleHQgdXNlZCBmb3IgcHJldmlvdXMg
Y29tcGlsYXRpb24gb2YgdGhlIGN1cnJlbnQKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBub2RlCisgICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBsaW5rRm4K
KyAgICAgKi8KKyAgICBmdW5jdGlvbiBhcHBseURpcmVjdGl2ZXNUb05vZGUoZGlyZWN0aXZlcywg
Y29tcGlsZU5vZGUsIHRlbXBsYXRlQXR0cnMsIHRyYW5zY2x1ZGVGbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAganFDb2xsZWN0aW9uLCBvcmlnaW5hbFJlcGxhY2VEaXJlY3Rp
dmUsIHByZUxpbmtGbnMsIHBvc3RMaW5rRm5zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwcmV2aW91c0NvbXBpbGVDb250ZXh0KSB7CisgICAgICBwcmV2aW91c0NvbXBpbGVD
b250ZXh0ID0gcHJldmlvdXNDb21waWxlQ29udGV4dCB8fCB7fTsKKworICAgICAgdmFyIHRlcm1p
bmFsUHJpb3JpdHkgPSAtTnVtYmVyLk1BWF9WQUxVRSwKKyAgICAgICAgICBuZXdTY29wZURpcmVj
dGl2ZSA9IHByZXZpb3VzQ29tcGlsZUNvbnRleHQubmV3U2NvcGVEaXJlY3RpdmUsCisgICAgICAg
ICAgY29udHJvbGxlckRpcmVjdGl2ZXMgPSBwcmV2aW91c0NvbXBpbGVDb250ZXh0LmNvbnRyb2xs
ZXJEaXJlY3RpdmVzLAorICAgICAgICAgIG5ld0lzb2xhdGVTY29wZURpcmVjdGl2ZSA9IHByZXZp
b3VzQ29tcGlsZUNvbnRleHQubmV3SXNvbGF0ZVNjb3BlRGlyZWN0aXZlLAorICAgICAgICAgIHRl
bXBsYXRlRGlyZWN0aXZlID0gcHJldmlvdXNDb21waWxlQ29udGV4dC50ZW1wbGF0ZURpcmVjdGl2
ZSwKKyAgICAgICAgICBub25UbGJUcmFuc2NsdWRlRGlyZWN0aXZlID0gcHJldmlvdXNDb21waWxl
Q29udGV4dC5ub25UbGJUcmFuc2NsdWRlRGlyZWN0aXZlLAorICAgICAgICAgIGhhc1RyYW5zY2x1
ZGVEaXJlY3RpdmUgPSBmYWxzZSwKKyAgICAgICAgICBoYXNUZW1wbGF0ZSA9IGZhbHNlLAorICAg
ICAgICAgIGhhc0VsZW1lbnRUcmFuc2NsdWRlRGlyZWN0aXZlID0gcHJldmlvdXNDb21waWxlQ29u
dGV4dC5oYXNFbGVtZW50VHJhbnNjbHVkZURpcmVjdGl2ZSwKKyAgICAgICAgICAkY29tcGlsZU5v
ZGUgPSB0ZW1wbGF0ZUF0dHJzLiQkZWxlbWVudCA9IGpxTGl0ZShjb21waWxlTm9kZSksCisgICAg
ICAgICAgZGlyZWN0aXZlLAorICAgICAgICAgIGRpcmVjdGl2ZU5hbWUsCisgICAgICAgICAgJHRl
bXBsYXRlLAorICAgICAgICAgIHJlcGxhY2VEaXJlY3RpdmUgPSBvcmlnaW5hbFJlcGxhY2VEaXJl
Y3RpdmUsCisgICAgICAgICAgY2hpbGRUcmFuc2NsdWRlRm4gPSB0cmFuc2NsdWRlRm4sCisgICAg
ICAgICAgbGlua0ZuLAorICAgICAgICAgIGRpcmVjdGl2ZVZhbHVlOworCisgICAgICAvLyBleGVj
dXRlcyBhbGwgZGlyZWN0aXZlcyBvbiB0aGUgY3VycmVudCBlbGVtZW50CisgICAgICBmb3IgKHZh
ciBpID0gMCwgaWkgPSBkaXJlY3RpdmVzLmxlbmd0aDsgaSA8IGlpOyBpKyspIHsKKyAgICAgICAg
ZGlyZWN0aXZlID0gZGlyZWN0aXZlc1tpXTsKKyAgICAgICAgdmFyIGF0dHJTdGFydCA9IGRpcmVj
dGl2ZS4kJHN0YXJ0OworICAgICAgICB2YXIgYXR0ckVuZCA9IGRpcmVjdGl2ZS4kJGVuZDsKKwor
ICAgICAgICAvLyBjb2xsZWN0IG11bHRpYmxvY2sgc2VjdGlvbnMKKyAgICAgICAgaWYgKGF0dHJT
dGFydCkgeworICAgICAgICAgICRjb21waWxlTm9kZSA9IGdyb3VwU2Nhbihjb21waWxlTm9kZSwg
YXR0clN0YXJ0LCBhdHRyRW5kKTsKKyAgICAgICAgfQorICAgICAgICAkdGVtcGxhdGUgPSB1bmRl
ZmluZWQ7CisKKyAgICAgICAgaWYgKHRlcm1pbmFsUHJpb3JpdHkgPiBkaXJlY3RpdmUucHJpb3Jp
dHkpIHsKKyAgICAgICAgICBicmVhazsgLy8gcHJldmVudCBmdXJ0aGVyIHByb2Nlc3Npbmcgb2Yg
ZGlyZWN0aXZlcworICAgICAgICB9CisKKyAgICAgICAgaWYgKGRpcmVjdGl2ZVZhbHVlID0gZGly
ZWN0aXZlLnNjb3BlKSB7CisKKyAgICAgICAgICAvLyBza2lwIHRoZSBjaGVjayBmb3IgZGlyZWN0
aXZlcyB3aXRoIGFzeW5jIHRlbXBsYXRlcywgd2UnbGwgY2hlY2sgdGhlIGRlcml2ZWQgc3luYwor
ICAgICAgICAgIC8vIGRpcmVjdGl2ZSB3aGVuIHRoZSB0ZW1wbGF0ZSBhcnJpdmVzCisgICAgICAg
ICAgaWYgKCFkaXJlY3RpdmUudGVtcGxhdGVVcmwpIHsKKyAgICAgICAgICAgIGlmIChpc09iamVj
dChkaXJlY3RpdmVWYWx1ZSkpIHsKKyAgICAgICAgICAgICAgLy8gVGhpcyBkaXJlY3RpdmUgaXMg
dHJ5aW5nIHRvIGFkZCBhbiBpc29sYXRlZCBzY29wZS4KKyAgICAgICAgICAgICAgLy8gQ2hlY2sg
dGhhdCB0aGVyZSBpcyBubyBzY29wZSBvZiBhbnkga2luZCBhbHJlYWR5CisgICAgICAgICAgICAg
IGFzc2VydE5vRHVwbGljYXRlKCduZXcvaXNvbGF0ZWQgc2NvcGUnLCBuZXdJc29sYXRlU2NvcGVE
aXJlY3RpdmUgfHwgbmV3U2NvcGVEaXJlY3RpdmUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRpcmVjdGl2ZSwgJGNvbXBpbGVOb2RlKTsKKyAgICAgICAgICAgICAgbmV3SXNvbGF0
ZVNjb3BlRGlyZWN0aXZlID0gZGlyZWN0aXZlOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgLy8gVGhpcyBkaXJlY3RpdmUgaXMgdHJ5aW5nIHRvIGFkZCBhIGNoaWxkIHNjb3Bl
LgorICAgICAgICAgICAgICAvLyBDaGVjayB0aGF0IHRoZXJlIGlzIG5vIGlzb2xhdGVkIHNjb3Bl
IGFscmVhZHkKKyAgICAgICAgICAgICAgYXNzZXJ0Tm9EdXBsaWNhdGUoJ25ldy9pc29sYXRlZCBz
Y29wZScsIG5ld0lzb2xhdGVTY29wZURpcmVjdGl2ZSwgZGlyZWN0aXZlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAkY29tcGlsZU5vZGUpOworICAgICAgICAgICAgfQorICAgICAg
ICAgIH0KKworICAgICAgICAgIG5ld1Njb3BlRGlyZWN0aXZlID0gbmV3U2NvcGVEaXJlY3RpdmUg
fHwgZGlyZWN0aXZlOworICAgICAgICB9CisKKyAgICAgICAgZGlyZWN0aXZlTmFtZSA9IGRpcmVj
dGl2ZS5uYW1lOworCisgICAgICAgIGlmICghZGlyZWN0aXZlLnRlbXBsYXRlVXJsICYmIGRpcmVj
dGl2ZS5jb250cm9sbGVyKSB7CisgICAgICAgICAgZGlyZWN0aXZlVmFsdWUgPSBkaXJlY3RpdmUu
Y29udHJvbGxlcjsKKyAgICAgICAgICBjb250cm9sbGVyRGlyZWN0aXZlcyA9IGNvbnRyb2xsZXJE
aXJlY3RpdmVzIHx8IGNyZWF0ZU1hcCgpOworICAgICAgICAgIGFzc2VydE5vRHVwbGljYXRlKCIn
IiArIGRpcmVjdGl2ZU5hbWUgKyAiJyBjb250cm9sbGVyIiwKKyAgICAgICAgICAgICAgY29udHJv
bGxlckRpcmVjdGl2ZXNbZGlyZWN0aXZlTmFtZV0sIGRpcmVjdGl2ZSwgJGNvbXBpbGVOb2RlKTsK
KyAgICAgICAgICBjb250cm9sbGVyRGlyZWN0aXZlc1tkaXJlY3RpdmVOYW1lXSA9IGRpcmVjdGl2
ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChkaXJlY3RpdmVWYWx1ZSA9IGRpcmVjdGl2ZS50
cmFuc2NsdWRlKSB7CisgICAgICAgICAgaGFzVHJhbnNjbHVkZURpcmVjdGl2ZSA9IHRydWU7CisK
KyAgICAgICAgICAvLyBTcGVjaWFsIGNhc2UgbmdJZiBhbmQgbmdSZXBlYXQgc28gdGhhdCB3ZSBk
b24ndCBjb21wbGFpbiBhYm91dCBkdXBsaWNhdGUgdHJhbnNjbHVzaW9uLgorICAgICAgICAgIC8v
IFRoaXMgb3B0aW9uIHNob3VsZCBvbmx5IGJlIHVzZWQgYnkgZGlyZWN0aXZlcyB0aGF0IGtub3cg
aG93IHRvIHNhZmVseSBoYW5kbGUgZWxlbWVudCB0cmFuc2NsdXNpb24sCisgICAgICAgICAgLy8g
d2hlcmUgdGhlIHRyYW5zY2x1ZGVkIG5vZGVzIGFyZSBhZGRlZCBvciByZXBsYWNlZCBhZnRlciBs
aW5raW5nLgorICAgICAgICAgIGlmICghZGlyZWN0aXZlLiQkdGxiKSB7CisgICAgICAgICAgICBh
c3NlcnROb0R1cGxpY2F0ZSgndHJhbnNjbHVzaW9uJywgbm9uVGxiVHJhbnNjbHVkZURpcmVjdGl2
ZSwgZGlyZWN0aXZlLCAkY29tcGlsZU5vZGUpOworICAgICAgICAgICAgbm9uVGxiVHJhbnNjbHVk
ZURpcmVjdGl2ZSA9IGRpcmVjdGl2ZTsKKyAgICAgICAgICB9CisKKyAgICAgICAgICBpZiAoZGly
ZWN0aXZlVmFsdWUgPT0gJ2VsZW1lbnQnKSB7CisgICAgICAgICAgICBoYXNFbGVtZW50VHJhbnNj
bHVkZURpcmVjdGl2ZSA9IHRydWU7CisgICAgICAgICAgICB0ZXJtaW5hbFByaW9yaXR5ID0gZGly
ZWN0aXZlLnByaW9yaXR5OworICAgICAgICAgICAgJHRlbXBsYXRlID0gJGNvbXBpbGVOb2RlOwor
ICAgICAgICAgICAgJGNvbXBpbGVOb2RlID0gdGVtcGxhdGVBdHRycy4kJGVsZW1lbnQgPQorICAg
ICAgICAgICAgICAgIGpxTGl0ZShkb2N1bWVudC5jcmVhdGVDb21tZW50KCcgJyArIGRpcmVjdGl2
ZU5hbWUgKyAnOiAnICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0ZW1wbGF0ZUF0dHJzW2RpcmVjdGl2ZU5hbWVdICsgJyAnKSk7CisgICAgICAgICAgICBj
b21waWxlTm9kZSA9ICRjb21waWxlTm9kZVswXTsKKyAgICAgICAgICAgIHJlcGxhY2VXaXRoKGpx
Q29sbGVjdGlvbiwgc2xpY2VBcmdzKCR0ZW1wbGF0ZSksIGNvbXBpbGVOb2RlKTsKKworICAgICAg
ICAgICAgY2hpbGRUcmFuc2NsdWRlRm4gPSBjb21waWxlKCR0ZW1wbGF0ZSwgdHJhbnNjbHVkZUZu
LCB0ZXJtaW5hbFByaW9yaXR5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlcGxhY2VEaXJlY3RpdmUgJiYgcmVwbGFjZURpcmVjdGl2ZS5uYW1lLCB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEb24ndCBwYXNzIGluOgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLSBjb250cm9sbGVyRGly
ZWN0aXZlcyAtIG90aGVyd2lzZSB3ZSdsbCBjcmVhdGUgZHVwbGljYXRlcyBjb250cm9sbGVycwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLSBuZXdJc29sYXRl
U2NvcGVEaXJlY3RpdmUgb3IgdGVtcGxhdGVEaXJlY3RpdmUgLSBjb21iaW5pbmcgdGVtcGxhdGVz
IHdpdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgZWxl
bWVudCB0cmFuc2NsdXNpb24gZG9lc24ndCBtYWtlIHNlbnNlLgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIFdlIG5lZWQgb25seSBub25UbGJUcmFuc2NsdWRlRGlyZWN0aXZlIHNv
IHRoYXQgd2UgcHJldmVudCBwdXR0aW5nIHRyYW5zY2x1c2lvbgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gb24gdGhlIHNhbWUgZWxlbWVudCBtb3JlIHRoYW4g
b25jZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vblRsYlRy
YW5zY2x1ZGVEaXJlY3RpdmU6IG5vblRsYlRyYW5zY2x1ZGVEaXJlY3RpdmUKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgJHRlbXBsYXRlID0ganFMaXRlKGpxTGl0ZUNsb25lKGNvbXBpbGVOb2RlKSkuY29u
dGVudHMoKTsKKyAgICAgICAgICAgICRjb21waWxlTm9kZS5lbXB0eSgpOyAvLyBjbGVhciBjb250
ZW50cworICAgICAgICAgICAgY2hpbGRUcmFuc2NsdWRlRm4gPSBjb21waWxlKCR0ZW1wbGF0ZSwg
dHJhbnNjbHVkZUZuKTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoZGly
ZWN0aXZlLnRlbXBsYXRlKSB7CisgICAgICAgICAgaGFzVGVtcGxhdGUgPSB0cnVlOworICAgICAg
ICAgIGFzc2VydE5vRHVwbGljYXRlKCd0ZW1wbGF0ZScsIHRlbXBsYXRlRGlyZWN0aXZlLCBkaXJl
Y3RpdmUsICRjb21waWxlTm9kZSk7CisgICAgICAgICAgdGVtcGxhdGVEaXJlY3RpdmUgPSBkaXJl
Y3RpdmU7CisKKyAgICAgICAgICBkaXJlY3RpdmVWYWx1ZSA9IChpc0Z1bmN0aW9uKGRpcmVjdGl2
ZS50ZW1wbGF0ZSkpCisgICAgICAgICAgICAgID8gZGlyZWN0aXZlLnRlbXBsYXRlKCRjb21waWxl
Tm9kZSwgdGVtcGxhdGVBdHRycykKKyAgICAgICAgICAgICAgOiBkaXJlY3RpdmUudGVtcGxhdGU7
CisKKyAgICAgICAgICBkaXJlY3RpdmVWYWx1ZSA9IGRlbm9ybWFsaXplVGVtcGxhdGUoZGlyZWN0
aXZlVmFsdWUpOworCisgICAgICAgICAgaWYgKGRpcmVjdGl2ZS5yZXBsYWNlKSB7CisgICAgICAg
ICAgICByZXBsYWNlRGlyZWN0aXZlID0gZGlyZWN0aXZlOworICAgICAgICAgICAgaWYgKGpxTGl0
ZUlzVGV4dE5vZGUoZGlyZWN0aXZlVmFsdWUpKSB7CisgICAgICAgICAgICAgICR0ZW1wbGF0ZSA9
IFtdOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgJHRlbXBsYXRlID0gcmVt
b3ZlQ29tbWVudHMod3JhcFRlbXBsYXRlKGRpcmVjdGl2ZS50ZW1wbGF0ZU5hbWVzcGFjZSwgdHJp
bShkaXJlY3RpdmVWYWx1ZSkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvbXBpbGVO
b2RlID0gJHRlbXBsYXRlWzBdOworCisgICAgICAgICAgICBpZiAoJHRlbXBsYXRlLmxlbmd0aCAh
PSAxIHx8IGNvbXBpbGVOb2RlLm5vZGVUeXBlICE9PSBOT0RFX1RZUEVfRUxFTUVOVCkgeworICAg
ICAgICAgICAgICB0aHJvdyAkY29tcGlsZU1pbkVycigndHBscnQnLAorICAgICAgICAgICAgICAg
ICAgIlRlbXBsYXRlIGZvciBkaXJlY3RpdmUgJ3swfScgbXVzdCBoYXZlIGV4YWN0bHkgb25lIHJv
b3QgZWxlbWVudC4gezF9IiwKKyAgICAgICAgICAgICAgICAgIGRpcmVjdGl2ZU5hbWUsICcnKTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmVwbGFjZVdpdGgoanFDb2xsZWN0aW9uLCAk
Y29tcGlsZU5vZGUsIGNvbXBpbGVOb2RlKTsKKworICAgICAgICAgICAgdmFyIG5ld1RlbXBsYXRl
QXR0cnMgPSB7JGF0dHI6IHt9fTsKKworICAgICAgICAgICAgLy8gY29tYmluZSBkaXJlY3RpdmVz
IGZyb20gdGhlIG9yaWdpbmFsIG5vZGUgYW5kIGZyb20gdGhlIHRlbXBsYXRlOgorICAgICAgICAg
ICAgLy8gLSB0YWtlIHRoZSBhcnJheSBvZiBkaXJlY3RpdmVzIGZvciB0aGlzIGVsZW1lbnQKKyAg
ICAgICAgICAgIC8vIC0gc3BsaXQgaXQgaW50byB0d28gcGFydHMsIHRob3NlIHRoYXQgYWxyZWFk
eSBhcHBsaWVkIChwcm9jZXNzZWQpIGFuZCB0aG9zZSB0aGF0IHdlcmVuJ3QgKHVucHJvY2Vzc2Vk
KQorICAgICAgICAgICAgLy8gLSBjb2xsZWN0IGRpcmVjdGl2ZXMgZnJvbSB0aGUgdGVtcGxhdGUg
YW5kIHNvcnQgdGhlbSBieSBwcmlvcml0eQorICAgICAgICAgICAgLy8gLSBjb21iaW5lIGRpcmVj
dGl2ZXMgYXM6IHByb2Nlc3NlZCArIHRlbXBsYXRlICsgdW5wcm9jZXNzZWQKKyAgICAgICAgICAg
IHZhciB0ZW1wbGF0ZURpcmVjdGl2ZXMgPSBjb2xsZWN0RGlyZWN0aXZlcyhjb21waWxlTm9kZSwg
W10sIG5ld1RlbXBsYXRlQXR0cnMpOworICAgICAgICAgICAgdmFyIHVucHJvY2Vzc2VkRGlyZWN0
aXZlcyA9IGRpcmVjdGl2ZXMuc3BsaWNlKGkgKyAxLCBkaXJlY3RpdmVzLmxlbmd0aCAtIChpICsg
MSkpOworCisgICAgICAgICAgICBpZiAobmV3SXNvbGF0ZVNjb3BlRGlyZWN0aXZlKSB7CisgICAg
ICAgICAgICAgIG1hcmtEaXJlY3RpdmVzQXNJc29sYXRlKHRlbXBsYXRlRGlyZWN0aXZlcyk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBkaXJlY3RpdmVzID0gZGlyZWN0aXZlcy5jb25jYXQo
dGVtcGxhdGVEaXJlY3RpdmVzKS5jb25jYXQodW5wcm9jZXNzZWREaXJlY3RpdmVzKTsKKyAgICAg
ICAgICAgIG1lcmdlVGVtcGxhdGVBdHRyaWJ1dGVzKHRlbXBsYXRlQXR0cnMsIG5ld1RlbXBsYXRl
QXR0cnMpOworCisgICAgICAgICAgICBpaSA9IGRpcmVjdGl2ZXMubGVuZ3RoOworICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAkY29tcGlsZU5vZGUuaHRtbChkaXJlY3RpdmVWYWx1ZSk7
CisgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKGRpcmVjdGl2ZS50ZW1wbGF0
ZVVybCkgeworICAgICAgICAgIGhhc1RlbXBsYXRlID0gdHJ1ZTsKKyAgICAgICAgICBhc3NlcnRO
b0R1cGxpY2F0ZSgndGVtcGxhdGUnLCB0ZW1wbGF0ZURpcmVjdGl2ZSwgZGlyZWN0aXZlLCAkY29t
cGlsZU5vZGUpOworICAgICAgICAgIHRlbXBsYXRlRGlyZWN0aXZlID0gZGlyZWN0aXZlOworCisg
ICAgICAgICAgaWYgKGRpcmVjdGl2ZS5yZXBsYWNlKSB7CisgICAgICAgICAgICByZXBsYWNlRGly
ZWN0aXZlID0gZGlyZWN0aXZlOworICAgICAgICAgIH0KKworICAgICAgICAgIG5vZGVMaW5rRm4g
PSBjb21waWxlVGVtcGxhdGVVcmwoZGlyZWN0aXZlcy5zcGxpY2UoaSwgZGlyZWN0aXZlcy5sZW5n
dGggLSBpKSwgJGNvbXBpbGVOb2RlLAorICAgICAgICAgICAgICB0ZW1wbGF0ZUF0dHJzLCBqcUNv
bGxlY3Rpb24sIGhhc1RyYW5zY2x1ZGVEaXJlY3RpdmUgJiYgY2hpbGRUcmFuc2NsdWRlRm4sIHBy
ZUxpbmtGbnMsIHBvc3RMaW5rRm5zLCB7CisgICAgICAgICAgICAgICAgY29udHJvbGxlckRpcmVj
dGl2ZXM6IGNvbnRyb2xsZXJEaXJlY3RpdmVzLAorICAgICAgICAgICAgICAgIG5ld1Njb3BlRGly
ZWN0aXZlOiAobmV3U2NvcGVEaXJlY3RpdmUgIT09IGRpcmVjdGl2ZSkgJiYgbmV3U2NvcGVEaXJl
Y3RpdmUsCisgICAgICAgICAgICAgICAgbmV3SXNvbGF0ZVNjb3BlRGlyZWN0aXZlOiBuZXdJc29s
YXRlU2NvcGVEaXJlY3RpdmUsCisgICAgICAgICAgICAgICAgdGVtcGxhdGVEaXJlY3RpdmU6IHRl
bXBsYXRlRGlyZWN0aXZlLAorICAgICAgICAgICAgICAgIG5vblRsYlRyYW5zY2x1ZGVEaXJlY3Rp
dmU6IG5vblRsYlRyYW5zY2x1ZGVEaXJlY3RpdmUKKyAgICAgICAgICAgICAgfSk7CisgICAgICAg
ICAgaWkgPSBkaXJlY3RpdmVzLmxlbmd0aDsKKyAgICAgICAgfSBlbHNlIGlmIChkaXJlY3RpdmUu
Y29tcGlsZSkgeworICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICBsaW5rRm4gPSBkaXJlY3Rp
dmUuY29tcGlsZSgkY29tcGlsZU5vZGUsIHRlbXBsYXRlQXR0cnMsIGNoaWxkVHJhbnNjbHVkZUZu
KTsKKyAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKGxpbmtGbikpIHsKKyAgICAgICAgICAgICAg
YWRkTGlua0ZucyhudWxsLCBsaW5rRm4sIGF0dHJTdGFydCwgYXR0ckVuZCk7CisgICAgICAgICAg
ICB9IGVsc2UgaWYgKGxpbmtGbikgeworICAgICAgICAgICAgICBhZGRMaW5rRm5zKGxpbmtGbi5w
cmUsIGxpbmtGbi5wb3N0LCBhdHRyU3RhcnQsIGF0dHJFbmQpOworICAgICAgICAgICAgfQorICAg
ICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgICRleGNlcHRpb25IYW5kbGVyKGUsIHN0
YXJ0aW5nVGFnKCRjb21waWxlTm9kZSkpOworICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAg
ICAgIGlmIChkaXJlY3RpdmUudGVybWluYWwpIHsKKyAgICAgICAgICBub2RlTGlua0ZuLnRlcm1p
bmFsID0gdHJ1ZTsKKyAgICAgICAgICB0ZXJtaW5hbFByaW9yaXR5ID0gTWF0aC5tYXgodGVybWlu
YWxQcmlvcml0eSwgZGlyZWN0aXZlLnByaW9yaXR5KTsKKyAgICAgICAgfQorCisgICAgICB9CisK
KyAgICAgIG5vZGVMaW5rRm4uc2NvcGUgPSBuZXdTY29wZURpcmVjdGl2ZSAmJiBuZXdTY29wZURp
cmVjdGl2ZS5zY29wZSA9PT0gdHJ1ZTsKKyAgICAgIG5vZGVMaW5rRm4udHJhbnNjbHVkZU9uVGhp
c0VsZW1lbnQgPSBoYXNUcmFuc2NsdWRlRGlyZWN0aXZlOworICAgICAgbm9kZUxpbmtGbi50ZW1w
bGF0ZU9uVGhpc0VsZW1lbnQgPSBoYXNUZW1wbGF0ZTsKKyAgICAgIG5vZGVMaW5rRm4udHJhbnNj
bHVkZSA9IGNoaWxkVHJhbnNjbHVkZUZuOworCisgICAgICBwcmV2aW91c0NvbXBpbGVDb250ZXh0
Lmhhc0VsZW1lbnRUcmFuc2NsdWRlRGlyZWN0aXZlID0gaGFzRWxlbWVudFRyYW5zY2x1ZGVEaXJl
Y3RpdmU7CisKKyAgICAgIC8vIG1pZ2h0IGJlIG5vcm1hbCBvciBkZWxheWVkIG5vZGVMaW5rRm4g
ZGVwZW5kaW5nIG9uIGlmIHRlbXBsYXRlVXJsIGlzIHByZXNlbnQKKyAgICAgIHJldHVybiBub2Rl
TGlua0ZuOworCisgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLworCisgICAgICBmdW5jdGlvbiBh
ZGRMaW5rRm5zKHByZSwgcG9zdCwgYXR0clN0YXJ0LCBhdHRyRW5kKSB7CisgICAgICAgIGlmIChw
cmUpIHsKKyAgICAgICAgICBpZiAoYXR0clN0YXJ0KSBwcmUgPSBncm91cEVsZW1lbnRzTGlua0Zu
V3JhcHBlcihwcmUsIGF0dHJTdGFydCwgYXR0ckVuZCk7CisgICAgICAgICAgcHJlLnJlcXVpcmUg
PSBkaXJlY3RpdmUucmVxdWlyZTsKKyAgICAgICAgICBwcmUuZGlyZWN0aXZlTmFtZSA9IGRpcmVj
dGl2ZU5hbWU7CisgICAgICAgICAgaWYgKG5ld0lzb2xhdGVTY29wZURpcmVjdGl2ZSA9PT0gZGly
ZWN0aXZlIHx8IGRpcmVjdGl2ZS4kJGlzb2xhdGVTY29wZSkgeworICAgICAgICAgICAgcHJlID0g
Y2xvbmVBbmRBbm5vdGF0ZUZuKHByZSwge2lzb2xhdGVTY29wZTogdHJ1ZX0pOworICAgICAgICAg
IH0KKyAgICAgICAgICBwcmVMaW5rRm5zLnB1c2gocHJlKTsKKyAgICAgICAgfQorICAgICAgICBp
ZiAocG9zdCkgeworICAgICAgICAgIGlmIChhdHRyU3RhcnQpIHBvc3QgPSBncm91cEVsZW1lbnRz
TGlua0ZuV3JhcHBlcihwb3N0LCBhdHRyU3RhcnQsIGF0dHJFbmQpOworICAgICAgICAgIHBvc3Qu
cmVxdWlyZSA9IGRpcmVjdGl2ZS5yZXF1aXJlOworICAgICAgICAgIHBvc3QuZGlyZWN0aXZlTmFt
ZSA9IGRpcmVjdGl2ZU5hbWU7CisgICAgICAgICAgaWYgKG5ld0lzb2xhdGVTY29wZURpcmVjdGl2
ZSA9PT0gZGlyZWN0aXZlIHx8IGRpcmVjdGl2ZS4kJGlzb2xhdGVTY29wZSkgeworICAgICAgICAg
ICAgcG9zdCA9IGNsb25lQW5kQW5ub3RhdGVGbihwb3N0LCB7aXNvbGF0ZVNjb3BlOiB0cnVlfSk7
CisgICAgICAgICAgfQorICAgICAgICAgIHBvc3RMaW5rRm5zLnB1c2gocG9zdCk7CisgICAgICAg
IH0KKyAgICAgIH0KKworCisgICAgICBmdW5jdGlvbiBnZXRDb250cm9sbGVycyhkaXJlY3RpdmVO
YW1lLCByZXF1aXJlLCAkZWxlbWVudCwgZWxlbWVudENvbnRyb2xsZXJzKSB7CisgICAgICAgIHZh
ciB2YWx1ZTsKKworICAgICAgICBpZiAoaXNTdHJpbmcocmVxdWlyZSkpIHsKKyAgICAgICAgICB2
YXIgbWF0Y2ggPSByZXF1aXJlLm1hdGNoKFJFUVVJUkVfUFJFRklYX1JFR0VYUCk7CisgICAgICAg
ICAgdmFyIG5hbWUgPSByZXF1aXJlLnN1YnN0cmluZyhtYXRjaFswXS5sZW5ndGgpOworICAgICAg
ICAgIHZhciBpbmhlcml0VHlwZSA9IG1hdGNoWzFdIHx8IG1hdGNoWzNdOworICAgICAgICAgIHZh
ciBvcHRpb25hbCA9IG1hdGNoWzJdID09PSAnPyc7CisKKyAgICAgICAgICAvL0lmIG9ubHkgcGFy
ZW50cyB0aGVuIHN0YXJ0IGF0IHRoZSBwYXJlbnQgZWxlbWVudAorICAgICAgICAgIGlmIChpbmhl
cml0VHlwZSA9PT0gJ15eJykgeworICAgICAgICAgICAgJGVsZW1lbnQgPSAkZWxlbWVudC5wYXJl
bnQoKTsKKyAgICAgICAgICAvL090aGVyd2lzZSBhdHRlbXB0IGdldHRpbmcgdGhlIGNvbnRyb2xs
ZXIgZnJvbSBlbGVtZW50Q29udHJvbGxlcnMgaW4gY2FzZQorICAgICAgICAgIC8vdGhlIGVsZW1l
bnQgaXMgdHJhbnNjbHVkZWQgKGFuZCBoYXMgbm8gZGF0YSkgYW5kIHRvIGF2b2lkIC5kYXRhIGlm
IHBvc3NpYmxlCisgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHZhbHVlID0gZWxlbWVu
dENvbnRyb2xsZXJzICYmIGVsZW1lbnRDb250cm9sbGVyc1tuYW1lXTsKKyAgICAgICAgICAgIHZh
bHVlID0gdmFsdWUgJiYgdmFsdWUuaW5zdGFuY2U7CisgICAgICAgICAgfQorCisgICAgICAgICAg
aWYgKCF2YWx1ZSkgeworICAgICAgICAgICAgdmFyIGRhdGFOYW1lID0gJyQnICsgbmFtZSArICdD
b250cm9sbGVyJzsKKyAgICAgICAgICAgIHZhbHVlID0gaW5oZXJpdFR5cGUgPyAkZWxlbWVudC5p
bmhlcml0ZWREYXRhKGRhdGFOYW1lKSA6ICRlbGVtZW50LmRhdGEoZGF0YU5hbWUpOworICAgICAg
ICAgIH0KKworICAgICAgICAgIGlmICghdmFsdWUgJiYgIW9wdGlvbmFsKSB7CisgICAgICAgICAg
ICB0aHJvdyAkY29tcGlsZU1pbkVycignY3RyZXEnLAorICAgICAgICAgICAgICAgICJDb250cm9s
bGVyICd7MH0nLCByZXF1aXJlZCBieSBkaXJlY3RpdmUgJ3sxfScsIGNhbid0IGJlIGZvdW5kISIs
CisgICAgICAgICAgICAgICAgbmFtZSwgZGlyZWN0aXZlTmFtZSk7CisgICAgICAgICAgfQorICAg
ICAgICB9IGVsc2UgaWYgKGlzQXJyYXkocmVxdWlyZSkpIHsKKyAgICAgICAgICB2YWx1ZSA9IFtd
OworICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBpaSA9IHJlcXVpcmUubGVuZ3RoOyBpIDwgaWk7
IGkrKykgeworICAgICAgICAgICAgdmFsdWVbaV0gPSBnZXRDb250cm9sbGVycyhkaXJlY3RpdmVO
YW1lLCByZXF1aXJlW2ldLCAkZWxlbWVudCwgZWxlbWVudENvbnRyb2xsZXJzKTsKKyAgICAgICAg
ICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdmFsdWUgfHwgbnVsbDsKKyAgICAgIH0K
KworICAgICAgZnVuY3Rpb24gc2V0dXBDb250cm9sbGVycygkZWxlbWVudCwgYXR0cnMsIHRyYW5z
Y2x1ZGVGbiwgY29udHJvbGxlckRpcmVjdGl2ZXMsIGlzb2xhdGVTY29wZSwgc2NvcGUpIHsKKyAg
ICAgICAgdmFyIGVsZW1lbnRDb250cm9sbGVycyA9IGNyZWF0ZU1hcCgpOworICAgICAgICBmb3Ig
KHZhciBjb250cm9sbGVyS2V5IGluIGNvbnRyb2xsZXJEaXJlY3RpdmVzKSB7CisgICAgICAgICAg
dmFyIGRpcmVjdGl2ZSA9IGNvbnRyb2xsZXJEaXJlY3RpdmVzW2NvbnRyb2xsZXJLZXldOworICAg
ICAgICAgIHZhciBsb2NhbHMgPSB7CisgICAgICAgICAgICAkc2NvcGU6IGRpcmVjdGl2ZSA9PT0g
bmV3SXNvbGF0ZVNjb3BlRGlyZWN0aXZlIHx8IGRpcmVjdGl2ZS4kJGlzb2xhdGVTY29wZSA/IGlz
b2xhdGVTY29wZSA6IHNjb3BlLAorICAgICAgICAgICAgJGVsZW1lbnQ6ICRlbGVtZW50LAorICAg
ICAgICAgICAgJGF0dHJzOiBhdHRycywKKyAgICAgICAgICAgICR0cmFuc2NsdWRlOiB0cmFuc2Ns
dWRlRm4KKyAgICAgICAgICB9OworCisgICAgICAgICAgdmFyIGNvbnRyb2xsZXIgPSBkaXJlY3Rp
dmUuY29udHJvbGxlcjsKKyAgICAgICAgICBpZiAoY29udHJvbGxlciA9PSAnQCcpIHsKKyAgICAg
ICAgICAgIGNvbnRyb2xsZXIgPSBhdHRyc1tkaXJlY3RpdmUubmFtZV07CisgICAgICAgICAgfQor
CisgICAgICAgICAgdmFyIGNvbnRyb2xsZXJJbnN0YW5jZSA9ICRjb250cm9sbGVyKGNvbnRyb2xs
ZXIsIGxvY2FscywgdHJ1ZSwgZGlyZWN0aXZlLmNvbnRyb2xsZXJBcyk7CisKKyAgICAgICAgICAv
LyBGb3IgZGlyZWN0aXZlcyB3aXRoIGVsZW1lbnQgdHJhbnNjbHVzaW9uIHRoZSBlbGVtZW50IGlz
IGEgY29tbWVudCwKKyAgICAgICAgICAvLyBidXQgalF1ZXJ5IC5kYXRhIGRvZXNuJ3Qgc3VwcG9y
dCBhdHRhY2hpbmcgZGF0YSB0byBjb21tZW50IG5vZGVzIGFzIGl0J3MgaGFyZCB0bworICAgICAg
ICAgIC8vIGNsZWFuIHVwIChodHRwOi8vYnVncy5qcXVlcnkuY29tL3RpY2tldC84MzM1KS4KKyAg
ICAgICAgICAvLyBJbnN0ZWFkLCB3ZSBzYXZlIHRoZSBjb250cm9sbGVycyBmb3IgdGhlIGVsZW1l
bnQgaW4gYSBsb2NhbCBoYXNoIGFuZCBhdHRhY2ggdG8gLmRhdGEKKyAgICAgICAgICAvLyBsYXRl
ciwgb25jZSB3ZSBoYXZlIHRoZSBhY3R1YWwgZWxlbWVudC4KKyAgICAgICAgICBlbGVtZW50Q29u
dHJvbGxlcnNbZGlyZWN0aXZlLm5hbWVdID0gY29udHJvbGxlckluc3RhbmNlOworICAgICAgICAg
IGlmICghaGFzRWxlbWVudFRyYW5zY2x1ZGVEaXJlY3RpdmUpIHsKKyAgICAgICAgICAgICRlbGVt
ZW50LmRhdGEoJyQnICsgZGlyZWN0aXZlLm5hbWUgKyAnQ29udHJvbGxlcicsIGNvbnRyb2xsZXJJ
bnN0YW5jZS5pbnN0YW5jZSk7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVy
biBlbGVtZW50Q29udHJvbGxlcnM7CisgICAgICB9CisKKyAgICAgIGZ1bmN0aW9uIG5vZGVMaW5r
Rm4oY2hpbGRMaW5rRm4sIHNjb3BlLCBsaW5rTm9kZSwgJHJvb3RFbGVtZW50LCBib3VuZFRyYW5z
Y2x1ZGVGbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpc0xpbmtGbikgeworICAgICAg
ICB2YXIgaSwgaWksIGxpbmtGbiwgY29udHJvbGxlciwgaXNvbGF0ZVNjb3BlLCBlbGVtZW50Q29u
dHJvbGxlcnMsIHRyYW5zY2x1ZGVGbiwgJGVsZW1lbnQsCisgICAgICAgICAgICBhdHRyczsKKwor
ICAgICAgICBpZiAoY29tcGlsZU5vZGUgPT09IGxpbmtOb2RlKSB7CisgICAgICAgICAgYXR0cnMg
PSB0ZW1wbGF0ZUF0dHJzOworICAgICAgICAgICRlbGVtZW50ID0gdGVtcGxhdGVBdHRycy4kJGVs
ZW1lbnQ7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgJGVsZW1lbnQgPSBqcUxpdGUobGlu
a05vZGUpOworICAgICAgICAgIGF0dHJzID0gbmV3IEF0dHJpYnV0ZXMoJGVsZW1lbnQsIHRlbXBs
YXRlQXR0cnMpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG5ld0lzb2xhdGVTY29wZURpcmVj
dGl2ZSkgeworICAgICAgICAgIGlzb2xhdGVTY29wZSA9IHNjb3BlLiRuZXcodHJ1ZSk7CisgICAg
ICAgIH0KKworICAgICAgICBpZiAoYm91bmRUcmFuc2NsdWRlRm4pIHsKKyAgICAgICAgICAvLyB0
cmFjayBgYm91bmRUcmFuc2NsdWRlRm5gIHNvIGl0IGNhbiBiZSB1bndyYXBwZWQgaWYgYHRyYW5z
Y2x1ZGVGbmAKKyAgICAgICAgICAvLyBpcyBsYXRlciBwYXNzZWQgYXMgYHBhcmVudEJvdW5kVHJh
bnNjbHVkZUZuYCB0byBgcHVibGljTGlua0ZuYAorICAgICAgICAgIHRyYW5zY2x1ZGVGbiA9IGNv
bnRyb2xsZXJzQm91bmRUcmFuc2NsdWRlOworICAgICAgICAgIHRyYW5zY2x1ZGVGbi4kJGJvdW5k
VHJhbnNjbHVkZSA9IGJvdW5kVHJhbnNjbHVkZUZuOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KGNvbnRyb2xsZXJEaXJlY3RpdmVzKSB7CisgICAgICAgICAgZWxlbWVudENvbnRyb2xsZXJzID0g
c2V0dXBDb250cm9sbGVycygkZWxlbWVudCwgYXR0cnMsIHRyYW5zY2x1ZGVGbiwgY29udHJvbGxl
ckRpcmVjdGl2ZXMsIGlzb2xhdGVTY29wZSwgc2NvcGUpOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKG5ld0lzb2xhdGVTY29wZURpcmVjdGl2ZSkgeworICAgICAgICAgIC8vIEluaXRpYWxpemUg
aXNvbGF0ZSBzY29wZSBiaW5kaW5ncyBmb3IgbmV3IGlzb2xhdGUgc2NvcGUgZGlyZWN0aXZlLgor
ICAgICAgICAgIGNvbXBpbGUuJCRhZGRTY29wZUluZm8oJGVsZW1lbnQsIGlzb2xhdGVTY29wZSwg
dHJ1ZSwgISh0ZW1wbGF0ZURpcmVjdGl2ZSAmJiAodGVtcGxhdGVEaXJlY3RpdmUgPT09IG5ld0lz
b2xhdGVTY29wZURpcmVjdGl2ZSB8fAorICAgICAgICAgICAgICB0ZW1wbGF0ZURpcmVjdGl2ZSA9
PT0gbmV3SXNvbGF0ZVNjb3BlRGlyZWN0aXZlLiQkb3JpZ2luYWxEaXJlY3RpdmUpKSk7CisgICAg
ICAgICAgY29tcGlsZS4kJGFkZFNjb3BlQ2xhc3MoJGVsZW1lbnQsIHRydWUpOworICAgICAgICAg
IGlzb2xhdGVTY29wZS4kJGlzb2xhdGVCaW5kaW5ncyA9CisgICAgICAgICAgICAgIG5ld0lzb2xh
dGVTY29wZURpcmVjdGl2ZS4kJGlzb2xhdGVCaW5kaW5nczsKKyAgICAgICAgICBpbml0aWFsaXpl
RGlyZWN0aXZlQmluZGluZ3Moc2NvcGUsIGF0dHJzLCBpc29sYXRlU2NvcGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzb2xhdGVTY29wZS4kJGlzb2xhdGVCaW5kaW5n
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3SXNvbGF0ZVNjb3Bl
RGlyZWN0aXZlLCBpc29sYXRlU2NvcGUpOworICAgICAgICB9CisgICAgICAgIGlmIChlbGVtZW50
Q29udHJvbGxlcnMpIHsKKyAgICAgICAgICAvLyBJbml0aWFsaXplIGJpbmRUb0NvbnRyb2xsZXIg
YmluZGluZ3MgZm9yIG5ldy9pc29sYXRlIHNjb3BlcworICAgICAgICAgIHZhciBzY29wZURpcmVj
dGl2ZSA9IG5ld0lzb2xhdGVTY29wZURpcmVjdGl2ZSB8fCBuZXdTY29wZURpcmVjdGl2ZTsKKyAg
ICAgICAgICB2YXIgYmluZGluZ3M7CisgICAgICAgICAgdmFyIGNvbnRyb2xsZXJGb3JCaW5kaW5n
czsKKyAgICAgICAgICBpZiAoc2NvcGVEaXJlY3RpdmUgJiYgZWxlbWVudENvbnRyb2xsZXJzW3Nj
b3BlRGlyZWN0aXZlLm5hbWVdKSB7CisgICAgICAgICAgICBiaW5kaW5ncyA9IHNjb3BlRGlyZWN0
aXZlLiQkYmluZGluZ3MuYmluZFRvQ29udHJvbGxlcjsKKyAgICAgICAgICAgIGNvbnRyb2xsZXIg
PSBlbGVtZW50Q29udHJvbGxlcnNbc2NvcGVEaXJlY3RpdmUubmFtZV07CisKKyAgICAgICAgICAg
IGlmIChjb250cm9sbGVyICYmIGNvbnRyb2xsZXIuaWRlbnRpZmllciAmJiBiaW5kaW5ncykgewor
ICAgICAgICAgICAgICBjb250cm9sbGVyRm9yQmluZGluZ3MgPSBjb250cm9sbGVyOworICAgICAg
ICAgICAgICB0aGlzTGlua0ZuLiQkZGVzdHJveUJpbmRpbmdzID0KKyAgICAgICAgICAgICAgICAg
IGluaXRpYWxpemVEaXJlY3RpdmVCaW5kaW5ncyhzY29wZSwgYXR0cnMsIGNvbnRyb2xsZXIuaW5z
dGFuY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmlu
ZGluZ3MsIHNjb3BlRGlyZWN0aXZlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAg
ICAgICAgZm9yIChpIGluIGVsZW1lbnRDb250cm9sbGVycykgeworICAgICAgICAgICAgY29udHJv
bGxlciA9IGVsZW1lbnRDb250cm9sbGVyc1tpXTsKKyAgICAgICAgICAgIHZhciBjb250cm9sbGVy
UmVzdWx0ID0gY29udHJvbGxlcigpOworCisgICAgICAgICAgICBpZiAoY29udHJvbGxlclJlc3Vs
dCAhPT0gY29udHJvbGxlci5pbnN0YW5jZSkgeworICAgICAgICAgICAgICAvLyBJZiB0aGUgY29u
dHJvbGxlciBjb25zdHJ1Y3RvciBoYXMgYSByZXR1cm4gdmFsdWUsIG92ZXJ3cml0ZSB0aGUgaW5z
dGFuY2UKKyAgICAgICAgICAgICAgLy8gZnJvbSBzZXR1cENvbnRyb2xsZXJzIGFuZCB1cGRhdGUg
dGhlIGVsZW1lbnQgZGF0YQorICAgICAgICAgICAgICBjb250cm9sbGVyLmluc3RhbmNlID0gY29u
dHJvbGxlclJlc3VsdDsKKyAgICAgICAgICAgICAgJGVsZW1lbnQuZGF0YSgnJCcgKyBpICsgJ0Nv
bnRyb2xsZXInLCBjb250cm9sbGVyUmVzdWx0KTsKKyAgICAgICAgICAgICAgaWYgKGNvbnRyb2xs
ZXIgPT09IGNvbnRyb2xsZXJGb3JCaW5kaW5ncykgeworICAgICAgICAgICAgICAgIC8vIFJlbW92
ZSBhbmQgcmUtaW5zdGFsbCBiaW5kVG9Db250cm9sbGVyIGJpbmRpbmdzCisgICAgICAgICAgICAg
ICAgdGhpc0xpbmtGbi4kJGRlc3Ryb3lCaW5kaW5ncygpOworICAgICAgICAgICAgICAgIHRoaXNM
aW5rRm4uJCRkZXN0cm95QmluZGluZ3MgPQorICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6ZURp
cmVjdGl2ZUJpbmRpbmdzKHNjb3BlLCBhdHRycywgY29udHJvbGxlclJlc3VsdCwgYmluZGluZ3Ms
IHNjb3BlRGlyZWN0aXZlKTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAg
ICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIFBSRUxJTktJTkcKKyAgICAgICAgZm9yIChp
ID0gMCwgaWkgPSBwcmVMaW5rRm5zLmxlbmd0aDsgaSA8IGlpOyBpKyspIHsKKyAgICAgICAgICBs
aW5rRm4gPSBwcmVMaW5rRm5zW2ldOworICAgICAgICAgIGludm9rZUxpbmtGbihsaW5rRm4sCisg
ICAgICAgICAgICAgIGxpbmtGbi5pc29sYXRlU2NvcGUgPyBpc29sYXRlU2NvcGUgOiBzY29wZSwK
KyAgICAgICAgICAgICAgJGVsZW1lbnQsCisgICAgICAgICAgICAgIGF0dHJzLAorICAgICAgICAg
ICAgICBsaW5rRm4ucmVxdWlyZSAmJiBnZXRDb250cm9sbGVycyhsaW5rRm4uZGlyZWN0aXZlTmFt
ZSwgbGlua0ZuLnJlcXVpcmUsICRlbGVtZW50LCBlbGVtZW50Q29udHJvbGxlcnMpLAorICAgICAg
ICAgICAgICB0cmFuc2NsdWRlRm4KKyAgICAgICAgICApOworICAgICAgICB9CisKKyAgICAgICAg
Ly8gUkVDVVJTSU9OCisgICAgICAgIC8vIFdlIG9ubHkgcGFzcyB0aGUgaXNvbGF0ZSBzY29wZSwg
aWYgdGhlIGlzb2xhdGUgZGlyZWN0aXZlIGhhcyBhIHRlbXBsYXRlLAorICAgICAgICAvLyBvdGhl
cndpc2UgdGhlIGNoaWxkIGVsZW1lbnRzIGRvIG5vdCBiZWxvbmcgdG8gdGhlIGlzb2xhdGUgZGly
ZWN0aXZlLgorICAgICAgICB2YXIgc2NvcGVUb0NoaWxkID0gc2NvcGU7CisgICAgICAgIGlmIChu
ZXdJc29sYXRlU2NvcGVEaXJlY3RpdmUgJiYgKG5ld0lzb2xhdGVTY29wZURpcmVjdGl2ZS50ZW1w
bGF0ZSB8fCBuZXdJc29sYXRlU2NvcGVEaXJlY3RpdmUudGVtcGxhdGVVcmwgPT09IG51bGwpKSB7
CisgICAgICAgICAgc2NvcGVUb0NoaWxkID0gaXNvbGF0ZVNjb3BlOworICAgICAgICB9CisgICAg
ICAgIGNoaWxkTGlua0ZuICYmIGNoaWxkTGlua0ZuKHNjb3BlVG9DaGlsZCwgbGlua05vZGUuY2hp
bGROb2RlcywgdW5kZWZpbmVkLCBib3VuZFRyYW5zY2x1ZGVGbik7CisKKyAgICAgICAgLy8gUE9T
VExJTktJTkcKKyAgICAgICAgZm9yIChpID0gcG9zdExpbmtGbnMubGVuZ3RoIC0gMTsgaSA+PSAw
OyBpLS0pIHsKKyAgICAgICAgICBsaW5rRm4gPSBwb3N0TGlua0Zuc1tpXTsKKyAgICAgICAgICBp
bnZva2VMaW5rRm4obGlua0ZuLAorICAgICAgICAgICAgICBsaW5rRm4uaXNvbGF0ZVNjb3BlID8g
aXNvbGF0ZVNjb3BlIDogc2NvcGUsCisgICAgICAgICAgICAgICRlbGVtZW50LAorICAgICAgICAg
ICAgICBhdHRycywKKyAgICAgICAgICAgICAgbGlua0ZuLnJlcXVpcmUgJiYgZ2V0Q29udHJvbGxl
cnMobGlua0ZuLmRpcmVjdGl2ZU5hbWUsIGxpbmtGbi5yZXF1aXJlLCAkZWxlbWVudCwgZWxlbWVu
dENvbnRyb2xsZXJzKSwKKyAgICAgICAgICAgICAgdHJhbnNjbHVkZUZuCisgICAgICAgICAgKTsK
KyAgICAgICAgfQorCisgICAgICAgIC8vIFRoaXMgaXMgdGhlIGZ1bmN0aW9uIHRoYXQgaXMgaW5q
ZWN0ZWQgYXMgYCR0cmFuc2NsdWRlYC4KKyAgICAgICAgLy8gTm90ZTogYWxsIGFyZ3VtZW50cyBh
cmUgb3B0aW9uYWwhCisgICAgICAgIGZ1bmN0aW9uIGNvbnRyb2xsZXJzQm91bmRUcmFuc2NsdWRl
KHNjb3BlLCBjbG9uZUF0dGFjaEZuLCBmdXR1cmVQYXJlbnRFbGVtZW50KSB7CisgICAgICAgICAg
dmFyIHRyYW5zY2x1ZGVDb250cm9sbGVyczsKKworICAgICAgICAgIC8vIE5vIHNjb3BlIHBhc3Nl
ZCBpbjoKKyAgICAgICAgICBpZiAoIWlzU2NvcGUoc2NvcGUpKSB7CisgICAgICAgICAgICBmdXR1
cmVQYXJlbnRFbGVtZW50ID0gY2xvbmVBdHRhY2hGbjsKKyAgICAgICAgICAgIGNsb25lQXR0YWNo
Rm4gPSBzY29wZTsKKyAgICAgICAgICAgIHNjb3BlID0gdW5kZWZpbmVkOworICAgICAgICAgIH0K
KworICAgICAgICAgIGlmIChoYXNFbGVtZW50VHJhbnNjbHVkZURpcmVjdGl2ZSkgeworICAgICAg
ICAgICAgdHJhbnNjbHVkZUNvbnRyb2xsZXJzID0gZWxlbWVudENvbnRyb2xsZXJzOworICAgICAg
ICAgIH0KKyAgICAgICAgICBpZiAoIWZ1dHVyZVBhcmVudEVsZW1lbnQpIHsKKyAgICAgICAgICAg
IGZ1dHVyZVBhcmVudEVsZW1lbnQgPSBoYXNFbGVtZW50VHJhbnNjbHVkZURpcmVjdGl2ZSA/ICRl
bGVtZW50LnBhcmVudCgpIDogJGVsZW1lbnQ7CisgICAgICAgICAgfQorICAgICAgICAgIHJldHVy
biBib3VuZFRyYW5zY2x1ZGVGbihzY29wZSwgY2xvbmVBdHRhY2hGbiwgdHJhbnNjbHVkZUNvbnRy
b2xsZXJzLCBmdXR1cmVQYXJlbnRFbGVtZW50LCBzY29wZVRvQ2hpbGQpOworICAgICAgICB9Cisg
ICAgICB9CisgICAgfQorCisgICAgZnVuY3Rpb24gbWFya0RpcmVjdGl2ZXNBc0lzb2xhdGUoZGly
ZWN0aXZlcykgeworICAgICAgLy8gbWFyayBhbGwgZGlyZWN0aXZlcyBhcyBuZWVkaW5nIGlzb2xh
dGUgc2NvcGUuCisgICAgICBmb3IgKHZhciBqID0gMCwgamogPSBkaXJlY3RpdmVzLmxlbmd0aDsg
aiA8IGpqOyBqKyspIHsKKyAgICAgICAgZGlyZWN0aXZlc1tqXSA9IGluaGVyaXQoZGlyZWN0aXZl
c1tqXSwgeyQkaXNvbGF0ZVNjb3BlOiB0cnVlfSk7CisgICAgICB9CisgICAgfQorCisgICAgLyoq
CisgICAgICogbG9va3MgdXAgdGhlIGRpcmVjdGl2ZSBhbmQgZGVjb3JhdGVzIGl0IHdpdGggZXhj
ZXB0aW9uIGhhbmRsaW5nIGFuZCBwcm9wZXIgcGFyYW1ldGVycy4gV2UKKyAgICAgKiBjYWxsIHRo
aXMgdGhlIGJvdW5kRGlyZWN0aXZlLgorICAgICAqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5h
bWUgbmFtZSBvZiB0aGUgZGlyZWN0aXZlIHRvIGxvb2sgdXAuCisgICAgICogQHBhcmFtIHtzdHJp
bmd9IGxvY2F0aW9uIFRoZSBkaXJlY3RpdmUgbXVzdCBiZSBmb3VuZCBpbiBzcGVjaWZpYyBmb3Jt
YXQuCisgICAgICogICBTdHJpbmcgY29udGFpbmluZyBhbnkgb2YgdGhlc2VzIGNoYXJhY3RlcnM6
CisgICAgICoKKyAgICAgKiAgICogYEVgOiBlbGVtZW50IG5hbWUKKyAgICAgKiAgICogYEEnOiBh
dHRyaWJ1dGUKKyAgICAgKiAgICogYENgOiBjbGFzcworICAgICAqICAgKiBgTWA6IGNvbW1lbnQK
KyAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gdHJ1ZSBpZiBkaXJlY3RpdmUgd2FzIGFkZGVkLgor
ICAgICAqLworICAgIGZ1bmN0aW9uIGFkZERpcmVjdGl2ZSh0RGlyZWN0aXZlcywgbmFtZSwgbG9j
YXRpb24sIG1heFByaW9yaXR5LCBpZ25vcmVEaXJlY3RpdmUsIHN0YXJ0QXR0ck5hbWUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIGVuZEF0dHJOYW1lKSB7CisgICAgICBpZiAobmFtZSA9PT0g
aWdub3JlRGlyZWN0aXZlKSByZXR1cm4gbnVsbDsKKyAgICAgIHZhciBtYXRjaCA9IG51bGw7Cisg
ICAgICBpZiAoaGFzRGlyZWN0aXZlcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkgeworICAgICAgICBm
b3IgKHZhciBkaXJlY3RpdmUsIGRpcmVjdGl2ZXMgPSAkaW5qZWN0b3IuZ2V0KG5hbWUgKyBTdWZm
aXgpLAorICAgICAgICAgICAgaSA9IDAsIGlpID0gZGlyZWN0aXZlcy5sZW5ndGg7IGkgPCBpaTsg
aSsrKSB7CisgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGRpcmVjdGl2ZSA9IGRpcmVjdGl2
ZXNbaV07CisgICAgICAgICAgICBpZiAoKG1heFByaW9yaXR5ID09PSB1bmRlZmluZWQgfHwgbWF4
UHJpb3JpdHkgPiBkaXJlY3RpdmUucHJpb3JpdHkpICYmCisgICAgICAgICAgICAgICAgIGRpcmVj
dGl2ZS5yZXN0cmljdC5pbmRleE9mKGxvY2F0aW9uKSAhPSAtMSkgeworICAgICAgICAgICAgICBp
ZiAoc3RhcnRBdHRyTmFtZSkgeworICAgICAgICAgICAgICAgIGRpcmVjdGl2ZSA9IGluaGVyaXQo
ZGlyZWN0aXZlLCB7JCRzdGFydDogc3RhcnRBdHRyTmFtZSwgJCRlbmQ6IGVuZEF0dHJOYW1lfSk7
CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgdERpcmVjdGl2ZXMucHVzaChkaXJlY3Rp
dmUpOworICAgICAgICAgICAgICBtYXRjaCA9IGRpcmVjdGl2ZTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICB9IGNhdGNoIChlKSB7ICRleGNlcHRpb25IYW5kbGVyKGUpOyB9CisgICAgICAgIH0K
KyAgICAgIH0KKyAgICAgIHJldHVybiBtYXRjaDsKKyAgICB9CisKKworICAgIC8qKgorICAgICAq
IGxvb2tzIHVwIHRoZSBkaXJlY3RpdmUgYW5kIHJldHVybnMgdHJ1ZSBpZiBpdCBpcyBhIG11bHRp
LWVsZW1lbnQgZGlyZWN0aXZlLAorICAgICAqIGFuZCB0aGVyZWZvcmUgcmVxdWlyZXMgRE9NIG5v
ZGVzIGJldHdlZW4gLXN0YXJ0IGFuZCAtZW5kIG1hcmtlcnMgdG8gYmUgZ3JvdXBlZAorICAgICAq
IHRvZ2V0aGVyLgorICAgICAqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgbmFtZSBvZiB0
aGUgZGlyZWN0aXZlIHRvIGxvb2sgdXAuCisgICAgICogQHJldHVybnMgdHJ1ZSBpZiBkaXJlY3Rp
dmUgd2FzIHJlZ2lzdGVyZWQgYXMgbXVsdGktZWxlbWVudC4KKyAgICAgKi8KKyAgICBmdW5jdGlv
biBkaXJlY3RpdmVJc011bHRpRWxlbWVudChuYW1lKSB7CisgICAgICBpZiAoaGFzRGlyZWN0aXZl
cy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkgeworICAgICAgICBmb3IgKHZhciBkaXJlY3RpdmUsIGRp
cmVjdGl2ZXMgPSAkaW5qZWN0b3IuZ2V0KG5hbWUgKyBTdWZmaXgpLAorICAgICAgICAgICAgaSA9
IDAsIGlpID0gZGlyZWN0aXZlcy5sZW5ndGg7IGkgPCBpaTsgaSsrKSB7CisgICAgICAgICAgZGly
ZWN0aXZlID0gZGlyZWN0aXZlc1tpXTsKKyAgICAgICAgICBpZiAoZGlyZWN0aXZlLm11bHRpRWxl
bWVudCkgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICB9CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLyoqCisgICAgICog
V2hlbiB0aGUgZWxlbWVudCBpcyByZXBsYWNlZCB3aXRoIEhUTUwgdGVtcGxhdGUgdGhlbiB0aGUg
bmV3IGF0dHJpYnV0ZXMKKyAgICAgKiBvbiB0aGUgdGVtcGxhdGUgbmVlZCB0byBiZSBtZXJnZWQg
d2l0aCB0aGUgZXhpc3RpbmcgYXR0cmlidXRlcyBpbiB0aGUgRE9NLgorICAgICAqIFRoZSBkZXNp
cmVkIGVmZmVjdCBpcyB0byBoYXZlIGJvdGggb2YgdGhlIGF0dHJpYnV0ZXMgcHJlc2VudC4KKyAg
ICAgKgorICAgICAqIEBwYXJhbSB7b2JqZWN0fSBkc3QgZGVzdGluYXRpb24gYXR0cmlidXRlcyAo
b3JpZ2luYWwgRE9NKQorICAgICAqIEBwYXJhbSB7b2JqZWN0fSBzcmMgc291cmNlIGF0dHJpYnV0
ZXMgKGZyb20gdGhlIGRpcmVjdGl2ZSB0ZW1wbGF0ZSkKKyAgICAgKi8KKyAgICBmdW5jdGlvbiBt
ZXJnZVRlbXBsYXRlQXR0cmlidXRlcyhkc3QsIHNyYykgeworICAgICAgdmFyIHNyY0F0dHIgPSBz
cmMuJGF0dHIsCisgICAgICAgICAgZHN0QXR0ciA9IGRzdC4kYXR0ciwKKyAgICAgICAgICAkZWxl
bWVudCA9IGRzdC4kJGVsZW1lbnQ7CisKKyAgICAgIC8vIHJlYXBwbHkgdGhlIG9sZCBhdHRyaWJ1
dGVzIHRvIHRoZSBuZXcgZWxlbWVudAorICAgICAgZm9yRWFjaChkc3QsIGZ1bmN0aW9uKHZhbHVl
LCBrZXkpIHsKKyAgICAgICAgaWYgKGtleS5jaGFyQXQoMCkgIT0gJyQnKSB7CisgICAgICAgICAg
aWYgKHNyY1trZXldICYmIHNyY1trZXldICE9PSB2YWx1ZSkgeworICAgICAgICAgICAgdmFsdWUg
Kz0gKGtleSA9PT0gJ3N0eWxlJyA/ICc7JyA6ICcgJykgKyBzcmNba2V5XTsKKyAgICAgICAgICB9
CisgICAgICAgICAgZHN0LiRzZXQoa2V5LCB2YWx1ZSwgdHJ1ZSwgc3JjQXR0cltrZXldKTsKKyAg
ICAgICAgfQorICAgICAgfSk7CisKKyAgICAgIC8vIGNvcHkgdGhlIG5ldyBhdHRyaWJ1dGVzIG9u
IHRoZSBvbGQgYXR0cnMgb2JqZWN0CisgICAgICBmb3JFYWNoKHNyYywgZnVuY3Rpb24odmFsdWUs
IGtleSkgeworICAgICAgICBpZiAoa2V5ID09ICdjbGFzcycpIHsKKyAgICAgICAgICBzYWZlQWRk
Q2xhc3MoJGVsZW1lbnQsIHZhbHVlKTsKKyAgICAgICAgICBkc3RbJ2NsYXNzJ10gPSAoZHN0Wydj
bGFzcyddID8gZHN0WydjbGFzcyddICsgJyAnIDogJycpICsgdmFsdWU7CisgICAgICAgIH0gZWxz
ZSBpZiAoa2V5ID09ICdzdHlsZScpIHsKKyAgICAgICAgICAkZWxlbWVudC5hdHRyKCdzdHlsZScs
ICRlbGVtZW50LmF0dHIoJ3N0eWxlJykgKyAnOycgKyB2YWx1ZSk7CisgICAgICAgICAgZHN0Wydz
dHlsZSddID0gKGRzdFsnc3R5bGUnXSA/IGRzdFsnc3R5bGUnXSArICc7JyA6ICcnKSArIHZhbHVl
OworICAgICAgICAgIC8vIGBkc3RgIHdpbGwgbmV2ZXIgY29udGFpbiBoYXNPd25Qcm9wZXJ0eSBh
cyBET00gcGFyc2VyIHdvbid0IGxldCBpdC4KKyAgICAgICAgICAvLyBZb3Ugd2lsbCBnZXQgYW4g
IkludmFsaWRDaGFyYWN0ZXJFcnJvcjogRE9NIEV4Y2VwdGlvbiA1IiBlcnJvciBpZiB5b3UKKyAg
ICAgICAgICAvLyBoYXZlIGFuIGF0dHJpYnV0ZSBsaWtlICJoYXMtb3duLXByb3BlcnR5IiBvciAi
ZGF0YS1oYXMtb3duLXByb3BlcnR5IiwgZXRjLgorICAgICAgICB9IGVsc2UgaWYgKGtleS5jaGFy
QXQoMCkgIT0gJyQnICYmICFkc3QuaGFzT3duUHJvcGVydHkoa2V5KSkgeworICAgICAgICAgIGRz
dFtrZXldID0gdmFsdWU7CisgICAgICAgICAgZHN0QXR0cltrZXldID0gc3JjQXR0cltrZXldOwor
ICAgICAgICB9CisgICAgICB9KTsKKyAgICB9CisKKworICAgIGZ1bmN0aW9uIGNvbXBpbGVUZW1w
bGF0ZVVybChkaXJlY3RpdmVzLCAkY29tcGlsZU5vZGUsIHRBdHRycywKKyAgICAgICAgJHJvb3RF
bGVtZW50LCBjaGlsZFRyYW5zY2x1ZGVGbiwgcHJlTGlua0ZucywgcG9zdExpbmtGbnMsIHByZXZp
b3VzQ29tcGlsZUNvbnRleHQpIHsKKyAgICAgIHZhciBsaW5rUXVldWUgPSBbXSwKKyAgICAgICAg
ICBhZnRlclRlbXBsYXRlTm9kZUxpbmtGbiwKKyAgICAgICAgICBhZnRlclRlbXBsYXRlQ2hpbGRM
aW5rRm4sCisgICAgICAgICAgYmVmb3JlVGVtcGxhdGVDb21waWxlTm9kZSA9ICRjb21waWxlTm9k
ZVswXSwKKyAgICAgICAgICBvcmlnQXN5bmNEaXJlY3RpdmUgPSBkaXJlY3RpdmVzLnNoaWZ0KCks
CisgICAgICAgICAgZGVyaXZlZFN5bmNEaXJlY3RpdmUgPSBpbmhlcml0KG9yaWdBc3luY0RpcmVj
dGl2ZSwgeworICAgICAgICAgICAgdGVtcGxhdGVVcmw6IG51bGwsIHRyYW5zY2x1ZGU6IG51bGws
IHJlcGxhY2U6IG51bGwsICQkb3JpZ2luYWxEaXJlY3RpdmU6IG9yaWdBc3luY0RpcmVjdGl2ZQor
ICAgICAgICAgIH0pLAorICAgICAgICAgIHRlbXBsYXRlVXJsID0gKGlzRnVuY3Rpb24ob3JpZ0Fz
eW5jRGlyZWN0aXZlLnRlbXBsYXRlVXJsKSkKKyAgICAgICAgICAgICAgPyBvcmlnQXN5bmNEaXJl
Y3RpdmUudGVtcGxhdGVVcmwoJGNvbXBpbGVOb2RlLCB0QXR0cnMpCisgICAgICAgICAgICAgIDog
b3JpZ0FzeW5jRGlyZWN0aXZlLnRlbXBsYXRlVXJsLAorICAgICAgICAgIHRlbXBsYXRlTmFtZXNw
YWNlID0gb3JpZ0FzeW5jRGlyZWN0aXZlLnRlbXBsYXRlTmFtZXNwYWNlOworCisgICAgICAkY29t
cGlsZU5vZGUuZW1wdHkoKTsKKworICAgICAgJHRlbXBsYXRlUmVxdWVzdCh0ZW1wbGF0ZVVybCkK
KyAgICAgICAgLnRoZW4oZnVuY3Rpb24oY29udGVudCkgeworICAgICAgICAgIHZhciBjb21waWxl
Tm9kZSwgdGVtcFRlbXBsYXRlQXR0cnMsICR0ZW1wbGF0ZSwgY2hpbGRCb3VuZFRyYW5zY2x1ZGVG
bjsKKworICAgICAgICAgIGNvbnRlbnQgPSBkZW5vcm1hbGl6ZVRlbXBsYXRlKGNvbnRlbnQpOwor
CisgICAgICAgICAgaWYgKG9yaWdBc3luY0RpcmVjdGl2ZS5yZXBsYWNlKSB7CisgICAgICAgICAg
ICBpZiAoanFMaXRlSXNUZXh0Tm9kZShjb250ZW50KSkgeworICAgICAgICAgICAgICAkdGVtcGxh
dGUgPSBbXTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICR0ZW1wbGF0ZSA9
IHJlbW92ZUNvbW1lbnRzKHdyYXBUZW1wbGF0ZSh0ZW1wbGF0ZU5hbWVzcGFjZSwgdHJpbShjb250
ZW50KSkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY29tcGlsZU5vZGUgPSAkdGVtcGxh
dGVbMF07CisKKyAgICAgICAgICAgIGlmICgkdGVtcGxhdGUubGVuZ3RoICE9IDEgfHwgY29tcGls
ZU5vZGUubm9kZVR5cGUgIT09IE5PREVfVFlQRV9FTEVNRU5UKSB7CisgICAgICAgICAgICAgIHRo
cm93ICRjb21waWxlTWluRXJyKCd0cGxydCcsCisgICAgICAgICAgICAgICAgICAiVGVtcGxhdGUg
Zm9yIGRpcmVjdGl2ZSAnezB9JyBtdXN0IGhhdmUgZXhhY3RseSBvbmUgcm9vdCBlbGVtZW50LiB7
MX0iLAorICAgICAgICAgICAgICAgICAgb3JpZ0FzeW5jRGlyZWN0aXZlLm5hbWUsIHRlbXBsYXRl
VXJsKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdGVtcFRlbXBsYXRlQXR0cnMgPSB7
JGF0dHI6IHt9fTsKKyAgICAgICAgICAgIHJlcGxhY2VXaXRoKCRyb290RWxlbWVudCwgJGNvbXBp
bGVOb2RlLCBjb21waWxlTm9kZSk7CisgICAgICAgICAgICB2YXIgdGVtcGxhdGVEaXJlY3RpdmVz
ID0gY29sbGVjdERpcmVjdGl2ZXMoY29tcGlsZU5vZGUsIFtdLCB0ZW1wVGVtcGxhdGVBdHRycyk7
CisKKyAgICAgICAgICAgIGlmIChpc09iamVjdChvcmlnQXN5bmNEaXJlY3RpdmUuc2NvcGUpKSB7
CisgICAgICAgICAgICAgIG1hcmtEaXJlY3RpdmVzQXNJc29sYXRlKHRlbXBsYXRlRGlyZWN0aXZl
cyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkaXJlY3RpdmVzID0gdGVtcGxhdGVEaXJl
Y3RpdmVzLmNvbmNhdChkaXJlY3RpdmVzKTsKKyAgICAgICAgICAgIG1lcmdlVGVtcGxhdGVBdHRy
aWJ1dGVzKHRBdHRycywgdGVtcFRlbXBsYXRlQXR0cnMpOworICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBjb21waWxlTm9kZSA9IGJlZm9yZVRlbXBsYXRlQ29tcGlsZU5vZGU7CisgICAg
ICAgICAgICAkY29tcGlsZU5vZGUuaHRtbChjb250ZW50KTsKKyAgICAgICAgICB9CisKKyAgICAg
ICAgICBkaXJlY3RpdmVzLnVuc2hpZnQoZGVyaXZlZFN5bmNEaXJlY3RpdmUpOworCisgICAgICAg
ICAgYWZ0ZXJUZW1wbGF0ZU5vZGVMaW5rRm4gPSBhcHBseURpcmVjdGl2ZXNUb05vZGUoZGlyZWN0
aXZlcywgY29tcGlsZU5vZGUsIHRBdHRycywKKyAgICAgICAgICAgICAgY2hpbGRUcmFuc2NsdWRl
Rm4sICRjb21waWxlTm9kZSwgb3JpZ0FzeW5jRGlyZWN0aXZlLCBwcmVMaW5rRm5zLCBwb3N0TGlu
a0ZucywKKyAgICAgICAgICAgICAgcHJldmlvdXNDb21waWxlQ29udGV4dCk7CisgICAgICAgICAg
Zm9yRWFjaCgkcm9vdEVsZW1lbnQsIGZ1bmN0aW9uKG5vZGUsIGkpIHsKKyAgICAgICAgICAgIGlm
IChub2RlID09IGNvbXBpbGVOb2RlKSB7CisgICAgICAgICAgICAgICRyb290RWxlbWVudFtpXSA9
ICRjb21waWxlTm9kZVswXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9KTsKKyAgICAgICAg
ICBhZnRlclRlbXBsYXRlQ2hpbGRMaW5rRm4gPSBjb21waWxlTm9kZXMoJGNvbXBpbGVOb2RlWzBd
LmNoaWxkTm9kZXMsIGNoaWxkVHJhbnNjbHVkZUZuKTsKKworICAgICAgICAgIHdoaWxlIChsaW5r
UXVldWUubGVuZ3RoKSB7CisgICAgICAgICAgICB2YXIgc2NvcGUgPSBsaW5rUXVldWUuc2hpZnQo
KSwKKyAgICAgICAgICAgICAgICBiZWZvcmVUZW1wbGF0ZUxpbmtOb2RlID0gbGlua1F1ZXVlLnNo
aWZ0KCksCisgICAgICAgICAgICAgICAgbGlua1Jvb3RFbGVtZW50ID0gbGlua1F1ZXVlLnNoaWZ0
KCksCisgICAgICAgICAgICAgICAgYm91bmRUcmFuc2NsdWRlRm4gPSBsaW5rUXVldWUuc2hpZnQo
KSwKKyAgICAgICAgICAgICAgICBsaW5rTm9kZSA9ICRjb21waWxlTm9kZVswXTsKKworICAgICAg
ICAgICAgaWYgKHNjb3BlLiQkZGVzdHJveWVkKSBjb250aW51ZTsKKworICAgICAgICAgICAgaWYg
KGJlZm9yZVRlbXBsYXRlTGlua05vZGUgIT09IGJlZm9yZVRlbXBsYXRlQ29tcGlsZU5vZGUpIHsK
KyAgICAgICAgICAgICAgdmFyIG9sZENsYXNzZXMgPSBiZWZvcmVUZW1wbGF0ZUxpbmtOb2RlLmNs
YXNzTmFtZTsKKworICAgICAgICAgICAgICBpZiAoIShwcmV2aW91c0NvbXBpbGVDb250ZXh0Lmhh
c0VsZW1lbnRUcmFuc2NsdWRlRGlyZWN0aXZlICYmCisgICAgICAgICAgICAgICAgICBvcmlnQXN5
bmNEaXJlY3RpdmUucmVwbGFjZSkpIHsKKyAgICAgICAgICAgICAgICAvLyBpdCB3YXMgY2xvbmVk
IHRoZXJlZm9yZSB3ZSBoYXZlIHRvIGNsb25lIGFzIHdlbGwuCisgICAgICAgICAgICAgICAgbGlu
a05vZGUgPSBqcUxpdGVDbG9uZShjb21waWxlTm9kZSk7CisgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgcmVwbGFjZVdpdGgobGlua1Jvb3RFbGVtZW50LCBqcUxpdGUoYmVmb3JlVGVtcGxh
dGVMaW5rTm9kZSksIGxpbmtOb2RlKTsKKworICAgICAgICAgICAgICAvLyBDb3B5IGluIENTUyBj
bGFzc2VzIGZyb20gb3JpZ2luYWwgbm9kZQorICAgICAgICAgICAgICBzYWZlQWRkQ2xhc3MoanFM
aXRlKGxpbmtOb2RlKSwgb2xkQ2xhc3Nlcyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBp
ZiAoYWZ0ZXJUZW1wbGF0ZU5vZGVMaW5rRm4udHJhbnNjbHVkZU9uVGhpc0VsZW1lbnQpIHsKKyAg
ICAgICAgICAgICAgY2hpbGRCb3VuZFRyYW5zY2x1ZGVGbiA9IGNyZWF0ZUJvdW5kVHJhbnNjbHVk
ZUZuKHNjb3BlLCBhZnRlclRlbXBsYXRlTm9kZUxpbmtGbi50cmFuc2NsdWRlLCBib3VuZFRyYW5z
Y2x1ZGVGbik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICBjaGlsZEJvdW5k
VHJhbnNjbHVkZUZuID0gYm91bmRUcmFuc2NsdWRlRm47CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBhZnRlclRlbXBsYXRlTm9kZUxpbmtGbihhZnRlclRlbXBsYXRlQ2hpbGRMaW5rRm4sIHNj
b3BlLCBsaW5rTm9kZSwgJHJvb3RFbGVtZW50LAorICAgICAgICAgICAgICBjaGlsZEJvdW5kVHJh
bnNjbHVkZUZuLCBhZnRlclRlbXBsYXRlTm9kZUxpbmtGbik7CisgICAgICAgICAgfQorICAgICAg
ICAgIGxpbmtRdWV1ZSA9IG51bGw7CisgICAgICAgIH0pOworCisgICAgICByZXR1cm4gZnVuY3Rp
b24gZGVsYXllZE5vZGVMaW5rRm4oaWdub3JlQ2hpbGRMaW5rRm4sIHNjb3BlLCBub2RlLCByb290
RWxlbWVudCwgYm91bmRUcmFuc2NsdWRlRm4pIHsKKyAgICAgICAgdmFyIGNoaWxkQm91bmRUcmFu
c2NsdWRlRm4gPSBib3VuZFRyYW5zY2x1ZGVGbjsKKyAgICAgICAgaWYgKHNjb3BlLiQkZGVzdHJv
eWVkKSByZXR1cm47CisgICAgICAgIGlmIChsaW5rUXVldWUpIHsKKyAgICAgICAgICBsaW5rUXVl
dWUucHVzaChzY29wZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgIHJvb3RFbGVtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgIGNo
aWxkQm91bmRUcmFuc2NsdWRlRm4pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIGlmIChh
ZnRlclRlbXBsYXRlTm9kZUxpbmtGbi50cmFuc2NsdWRlT25UaGlzRWxlbWVudCkgeworICAgICAg
ICAgICAgY2hpbGRCb3VuZFRyYW5zY2x1ZGVGbiA9IGNyZWF0ZUJvdW5kVHJhbnNjbHVkZUZuKHNj
b3BlLCBhZnRlclRlbXBsYXRlTm9kZUxpbmtGbi50cmFuc2NsdWRlLCBib3VuZFRyYW5zY2x1ZGVG
bik7CisgICAgICAgICAgfQorICAgICAgICAgIGFmdGVyVGVtcGxhdGVOb2RlTGlua0ZuKGFmdGVy
VGVtcGxhdGVDaGlsZExpbmtGbiwgc2NvcGUsIG5vZGUsIHJvb3RFbGVtZW50LCBjaGlsZEJvdW5k
VHJhbnNjbHVkZUZuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFmdGVyVGVt
cGxhdGVOb2RlTGlua0ZuKTsKKyAgICAgICAgfQorICAgICAgfTsKKyAgICB9CisKKworICAgIC8q
KgorICAgICAqIFNvcnRpbmcgZnVuY3Rpb24gZm9yIGJvdW5kIGRpcmVjdGl2ZXMuCisgICAgICov
CisgICAgZnVuY3Rpb24gYnlQcmlvcml0eShhLCBiKSB7CisgICAgICB2YXIgZGlmZiA9IGIucHJp
b3JpdHkgLSBhLnByaW9yaXR5OworICAgICAgaWYgKGRpZmYgIT09IDApIHJldHVybiBkaWZmOwor
ICAgICAgaWYgKGEubmFtZSAhPT0gYi5uYW1lKSByZXR1cm4gKGEubmFtZSA8IGIubmFtZSkgPyAt
MSA6IDE7CisgICAgICByZXR1cm4gYS5pbmRleCAtIGIuaW5kZXg7CisgICAgfQorCisgICAgZnVu
Y3Rpb24gYXNzZXJ0Tm9EdXBsaWNhdGUod2hhdCwgcHJldmlvdXNEaXJlY3RpdmUsIGRpcmVjdGl2
ZSwgZWxlbWVudCkgeworCisgICAgICBmdW5jdGlvbiB3cmFwTW9kdWxlTmFtZUlmRGVmaW5lZCht
b2R1bGVOYW1lKSB7CisgICAgICAgIHJldHVybiBtb2R1bGVOYW1lID8KKyAgICAgICAgICAoJyAo
bW9kdWxlOiAnICsgbW9kdWxlTmFtZSArICcpJykgOgorICAgICAgICAgICcnOworICAgICAgfQor
CisgICAgICBpZiAocHJldmlvdXNEaXJlY3RpdmUpIHsKKyAgICAgICAgdGhyb3cgJGNvbXBpbGVN
aW5FcnIoJ211bHRpZGlyJywgJ011bHRpcGxlIGRpcmVjdGl2ZXMgW3swfXsxfSwgezJ9ezN9XSBh
c2tpbmcgZm9yIHs0fSBvbjogezV9JywKKyAgICAgICAgICAgIHByZXZpb3VzRGlyZWN0aXZlLm5h
bWUsIHdyYXBNb2R1bGVOYW1lSWZEZWZpbmVkKHByZXZpb3VzRGlyZWN0aXZlLiQkbW9kdWxlTmFt
ZSksCisgICAgICAgICAgICBkaXJlY3RpdmUubmFtZSwgd3JhcE1vZHVsZU5hbWVJZkRlZmluZWQo
ZGlyZWN0aXZlLiQkbW9kdWxlTmFtZSksIHdoYXQsIHN0YXJ0aW5nVGFnKGVsZW1lbnQpKTsKKyAg
ICAgIH0KKyAgICB9CisKKworICAgIGZ1bmN0aW9uIGFkZFRleHRJbnRlcnBvbGF0ZURpcmVjdGl2
ZShkaXJlY3RpdmVzLCB0ZXh0KSB7CisgICAgICB2YXIgaW50ZXJwb2xhdGVGbiA9ICRpbnRlcnBv
bGF0ZSh0ZXh0LCB0cnVlKTsKKyAgICAgIGlmIChpbnRlcnBvbGF0ZUZuKSB7CisgICAgICAgIGRp
cmVjdGl2ZXMucHVzaCh7CisgICAgICAgICAgcHJpb3JpdHk6IDAsCisgICAgICAgICAgY29tcGls
ZTogZnVuY3Rpb24gdGV4dEludGVycG9sYXRlQ29tcGlsZUZuKHRlbXBsYXRlTm9kZSkgeworICAg
ICAgICAgICAgdmFyIHRlbXBsYXRlTm9kZVBhcmVudCA9IHRlbXBsYXRlTm9kZS5wYXJlbnQoKSwK
KyAgICAgICAgICAgICAgICBoYXNDb21waWxlUGFyZW50ID0gISF0ZW1wbGF0ZU5vZGVQYXJlbnQu
bGVuZ3RoOworCisgICAgICAgICAgICAvLyBXaGVuIHRyYW5zY2x1ZGluZyBhIHRlbXBsYXRlIHRo
YXQgaGFzIGJpbmRpbmdzIGluIHRoZSByb290CisgICAgICAgICAgICAvLyB3ZSBkb24ndCBoYXZl
IGEgcGFyZW50IGFuZCB0aHVzIG5lZWQgdG8gYWRkIHRoZSBjbGFzcyBkdXJpbmcgbGlua2luZyBm
bi4KKyAgICAgICAgICAgIGlmIChoYXNDb21waWxlUGFyZW50KSBjb21waWxlLiQkYWRkQmluZGlu
Z0NsYXNzKHRlbXBsYXRlTm9kZVBhcmVudCk7CisKKyAgICAgICAgICAgIHJldHVybiBmdW5jdGlv
biB0ZXh0SW50ZXJwb2xhdGVMaW5rRm4oc2NvcGUsIG5vZGUpIHsKKyAgICAgICAgICAgICAgdmFy
IHBhcmVudCA9IG5vZGUucGFyZW50KCk7CisgICAgICAgICAgICAgIGlmICghaGFzQ29tcGlsZVBh
cmVudCkgY29tcGlsZS4kJGFkZEJpbmRpbmdDbGFzcyhwYXJlbnQpOworICAgICAgICAgICAgICBj
b21waWxlLiQkYWRkQmluZGluZ0luZm8ocGFyZW50LCBpbnRlcnBvbGF0ZUZuLmV4cHJlc3Npb25z
KTsKKyAgICAgICAgICAgICAgc2NvcGUuJHdhdGNoKGludGVycG9sYXRlRm4sIGZ1bmN0aW9uIGlu
dGVycG9sYXRlRm5XYXRjaEFjdGlvbih2YWx1ZSkgeworICAgICAgICAgICAgICAgIG5vZGVbMF0u
bm9kZVZhbHVlID0gdmFsdWU7CisgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfTsKKyAg
ICAgICAgICB9CisgICAgICAgIH0pOworICAgICAgfQorICAgIH0KKworCisgICAgZnVuY3Rpb24g
d3JhcFRlbXBsYXRlKHR5cGUsIHRlbXBsYXRlKSB7CisgICAgICB0eXBlID0gbG93ZXJjYXNlKHR5
cGUgfHwgJ2h0bWwnKTsKKyAgICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgY2FzZSAnc3ZnJzoK
KyAgICAgIGNhc2UgJ21hdGgnOgorICAgICAgICB2YXIgd3JhcHBlciA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICB3cmFwcGVyLmlubmVySFRNTCA9ICc8JyArIHR5cGUg
KyAnPicgKyB0ZW1wbGF0ZSArICc8LycgKyB0eXBlICsgJz4nOworICAgICAgICByZXR1cm4gd3Jh
cHBlci5jaGlsZE5vZGVzWzBdLmNoaWxkTm9kZXM7CisgICAgICBkZWZhdWx0OgorICAgICAgICBy
ZXR1cm4gdGVtcGxhdGU7CisgICAgICB9CisgICAgfQorCisKKyAgICBmdW5jdGlvbiBnZXRUcnVz
dGVkQ29udGV4dChub2RlLCBhdHRyTm9ybWFsaXplZE5hbWUpIHsKKyAgICAgIGlmIChhdHRyTm9y
bWFsaXplZE5hbWUgPT0gInNyY2RvYyIpIHsKKyAgICAgICAgcmV0dXJuICRzY2UuSFRNTDsKKyAg
ICAgIH0KKyAgICAgIHZhciB0YWcgPSBub2RlTmFtZV8obm9kZSk7CisgICAgICAvLyBtYWN0aW9u
W3hsaW5rOmhyZWZdIGNhbiBzb3VyY2UgU1ZHLiAgSXQncyBub3QgbGltaXRlZCB0byA8bWFjdGlv
bj4uCisgICAgICBpZiAoYXR0ck5vcm1hbGl6ZWROYW1lID09ICJ4bGlua0hyZWYiIHx8CisgICAg
ICAgICAgKHRhZyA9PSAiZm9ybSIgJiYgYXR0ck5vcm1hbGl6ZWROYW1lID09ICJhY3Rpb24iKSB8
fAorICAgICAgICAgICh0YWcgIT0gImltZyIgJiYgKGF0dHJOb3JtYWxpemVkTmFtZSA9PSAic3Jj
IiB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJOb3JtYWxpemVkTmFtZSA9PSAi
bmdTcmMiKSkpIHsKKyAgICAgICAgcmV0dXJuICRzY2UuUkVTT1VSQ0VfVVJMOworICAgICAgfQor
ICAgIH0KKworCisgICAgZnVuY3Rpb24gYWRkQXR0ckludGVycG9sYXRlRGlyZWN0aXZlKG5vZGUs
IGRpcmVjdGl2ZXMsIHZhbHVlLCBuYW1lLCBhbGxPck5vdGhpbmcpIHsKKyAgICAgIHZhciB0cnVz
dGVkQ29udGV4dCA9IGdldFRydXN0ZWRDb250ZXh0KG5vZGUsIG5hbWUpOworICAgICAgYWxsT3JO
b3RoaW5nID0gQUxMX09SX05PVEhJTkdfQVRUUlNbbmFtZV0gfHwgYWxsT3JOb3RoaW5nOworCisg
ICAgICB2YXIgaW50ZXJwb2xhdGVGbiA9ICRpbnRlcnBvbGF0ZSh2YWx1ZSwgdHJ1ZSwgdHJ1c3Rl
ZENvbnRleHQsIGFsbE9yTm90aGluZyk7CisKKyAgICAgIC8vIG5vIGludGVycG9sYXRpb24gZm91
bmQgLT4gaWdub3JlCisgICAgICBpZiAoIWludGVycG9sYXRlRm4pIHJldHVybjsKKworCisgICAg
ICBpZiAobmFtZSA9PT0gIm11bHRpcGxlIiAmJiBub2RlTmFtZV8obm9kZSkgPT09ICJzZWxlY3Qi
KSB7CisgICAgICAgIHRocm93ICRjb21waWxlTWluRXJyKCJzZWxtdWx0aSIsCisgICAgICAgICAg
ICAiQmluZGluZyB0byB0aGUgJ211bHRpcGxlJyBhdHRyaWJ1dGUgaXMgbm90IHN1cHBvcnRlZC4g
RWxlbWVudDogezB9IiwKKyAgICAgICAgICAgIHN0YXJ0aW5nVGFnKG5vZGUpKTsKKyAgICAgIH0K
KworICAgICAgZGlyZWN0aXZlcy5wdXNoKHsKKyAgICAgICAgcHJpb3JpdHk6IDEwMCwKKyAgICAg
ICAgY29tcGlsZTogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICByZXR1cm4geworICAgICAgICAg
ICAgICBwcmU6IGZ1bmN0aW9uIGF0dHJJbnRlcnBvbGF0ZVByZUxpbmtGbihzY29wZSwgZWxlbWVu
dCwgYXR0cikgeworICAgICAgICAgICAgICAgIHZhciAkJG9ic2VydmVycyA9IChhdHRyLiQkb2Jz
ZXJ2ZXJzIHx8IChhdHRyLiQkb2JzZXJ2ZXJzID0ge30pKTsKKworICAgICAgICAgICAgICAgIGlm
IChFVkVOVF9IQU5ETEVSX0FUVFJfUkVHRVhQLnRlc3QobmFtZSkpIHsKKyAgICAgICAgICAgICAg
ICAgIHRocm93ICRjb21waWxlTWluRXJyKCdub2RvbWV2ZW50cycsCisgICAgICAgICAgICAgICAg
ICAgICAgIkludGVycG9sYXRpb25zIGZvciBIVE1MIERPTSBldmVudCBhdHRyaWJ1dGVzIGFyZSBk
aXNhbGxvd2VkLiAgUGxlYXNlIHVzZSB0aGUgIiArCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICJuZy0gdmVyc2lvbnMgKHN1Y2ggYXMgbmctY2xpY2sgaW5zdGVhZCBvZiBvbmNsaWNrKSBpbnN0
ZWFkLiIpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIElmIHRoZSBh
dHRyaWJ1dGUgaGFzIGNoYW5nZWQgc2luY2UgbGFzdCAkaW50ZXJwb2xhdGUoKWVkCisgICAgICAg
ICAgICAgICAgdmFyIG5ld1ZhbHVlID0gYXR0cltuYW1lXTsKKyAgICAgICAgICAgICAgICBpZiAo
bmV3VmFsdWUgIT09IHZhbHVlKSB7CisgICAgICAgICAgICAgICAgICAvLyB3ZSBuZWVkIHRvIGlu
dGVycG9sYXRlIGFnYWluIHNpbmNlIHRoZSBhdHRyaWJ1dGUgdmFsdWUgaGFzIGJlZW4gdXBkYXRl
ZAorICAgICAgICAgICAgICAgICAgLy8gKGUuZy4gYnkgYW5vdGhlciBkaXJlY3RpdmUncyBjb21w
aWxlIGZ1bmN0aW9uKQorICAgICAgICAgICAgICAgICAgLy8gZW5zdXJlIHVuc2V0L2VtcHR5IHZh
bHVlcyBtYWtlIGludGVycG9sYXRlRm4gZmFsc3kKKyAgICAgICAgICAgICAgICAgIGludGVycG9s
YXRlRm4gPSBuZXdWYWx1ZSAmJiAkaW50ZXJwb2xhdGUobmV3VmFsdWUsIHRydWUsIHRydXN0ZWRD
b250ZXh0LCBhbGxPck5vdGhpbmcpOworICAgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXdWYWx1
ZTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBpZiBhdHRyaWJ1dGUg
d2FzIHVwZGF0ZWQgc28gdGhhdCB0aGVyZSBpcyBubyBpbnRlcnBvbGF0aW9uIGdvaW5nIG9uIHdl
IGRvbid0IHdhbnQgdG8KKyAgICAgICAgICAgICAgICAvLyByZWdpc3RlciBhbnkgb2JzZXJ2ZXJz
CisgICAgICAgICAgICAgICAgaWYgKCFpbnRlcnBvbGF0ZUZuKSByZXR1cm47CisKKyAgICAgICAg
ICAgICAgICAvLyBpbml0aWFsaXplIGF0dHIgb2JqZWN0IHNvIHRoYXQgaXQncyByZWFkeSBpbiBj
YXNlIHdlIG5lZWQgdGhlIHZhbHVlIGZvciBpc29sYXRlCisgICAgICAgICAgICAgICAgLy8gc2Nv
cGUgaW5pdGlhbGl6YXRpb24sIG90aGVyd2lzZSB0aGUgdmFsdWUgd291bGQgbm90IGJlIGF2YWls
YWJsZSBmcm9tIGlzb2xhdGUKKyAgICAgICAgICAgICAgICAvLyBkaXJlY3RpdmUncyBsaW5raW5n
IGZuIGR1cmluZyBsaW5raW5nIHBoYXNlCisgICAgICAgICAgICAgICAgYXR0cltuYW1lXSA9IGlu
dGVycG9sYXRlRm4oc2NvcGUpOworCisgICAgICAgICAgICAgICAgKCQkb2JzZXJ2ZXJzW25hbWVd
IHx8ICgkJG9ic2VydmVyc1tuYW1lXSA9IFtdKSkuJCRpbnRlciA9IHRydWU7CisgICAgICAgICAg
ICAgICAgKGF0dHIuJCRvYnNlcnZlcnMgJiYgYXR0ci4kJG9ic2VydmVyc1tuYW1lXS4kJHNjb3Bl
IHx8IHNjb3BlKS4KKyAgICAgICAgICAgICAgICAgICR3YXRjaChpbnRlcnBvbGF0ZUZuLCBmdW5j
dGlvbiBpbnRlcnBvbGF0ZUZuV2F0Y2hBY3Rpb24obmV3VmFsdWUsIG9sZFZhbHVlKSB7CisgICAg
ICAgICAgICAgICAgICAgIC8vc3BlY2lhbCBjYXNlIGZvciBjbGFzcyBhdHRyaWJ1dGUgYWRkaXRp
b24gKyByZW1vdmFsCisgICAgICAgICAgICAgICAgICAgIC8vc28gdGhhdCBjbGFzcyBjaGFuZ2Vz
IGNhbiB0YXAgaW50byB0aGUgYW5pbWF0aW9uCisgICAgICAgICAgICAgICAgICAgIC8vaG9va3Mg
cHJvdmlkZWQgYnkgdGhlICRhbmltYXRlIHNlcnZpY2UuIEJlIHN1cmUgdG8KKyAgICAgICAgICAg
ICAgICAgICAgLy9za2lwIGFuaW1hdGlvbnMgd2hlbiB0aGUgZmlyc3QgZGlnZXN0IG9jY3VycyAo
d2hlbgorICAgICAgICAgICAgICAgICAgICAvL2JvdGggdGhlIG5ldyBhbmQgdGhlIG9sZCB2YWx1
ZXMgYXJlIHRoZSBzYW1lKSBzaW5jZQorICAgICAgICAgICAgICAgICAgICAvL3RoZSBDU1MgY2xh
c3NlcyBhcmUgdGhlIG5vbi1pbnRlcnBvbGF0ZWQgdmFsdWVzCisgICAgICAgICAgICAgICAgICAg
IGlmIChuYW1lID09PSAnY2xhc3MnICYmIG5ld1ZhbHVlICE9IG9sZFZhbHVlKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgYXR0ci4kdXBkYXRlQ2xhc3MobmV3VmFsdWUsIG9sZFZhbHVlKTsKKyAg
ICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICBhdHRyLiRz
ZXQobmFtZSwgbmV3VmFsdWUpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfTsKKyAgICAgICAgICB9Cisg
ICAgICB9KTsKKyAgICB9CisKKworICAgIC8qKgorICAgICAqIFRoaXMgaXMgYSBzcGVjaWFsIGpx
TGl0ZS5yZXBsYWNlV2l0aCwgd2hpY2ggY2FuIHJlcGxhY2UgaXRlbXMgd2hpY2gKKyAgICAgKiBo
YXZlIG5vIHBhcmVudHMsIHByb3ZpZGVkIHRoYXQgdGhlIGNvbnRhaW5pbmcganFMaXRlIGNvbGxl
Y3Rpb24gaXMgcHJvdmlkZWQuCisgICAgICoKKyAgICAgKiBAcGFyYW0ge0pxTGl0ZT19ICRyb290
RWxlbWVudCBUaGUgcm9vdCBvZiB0aGUgY29tcGlsZSB0cmVlLiBVc2VkIHNvIHRoYXQgd2UgY2Fu
IHJlcGxhY2Ugbm9kZXMKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0
aGUgcm9vdCBvZiB0aGUgdHJlZS4KKyAgICAgKiBAcGFyYW0ge0pxTGl0ZX0gZWxlbWVudHNUb1Jl
bW92ZSBUaGUganFMaXRlIGVsZW1lbnQgd2hpY2ggd2UgYXJlIGdvaW5nIHRvIHJlcGxhY2UuIFdl
IGtlZXAKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgc2hlbGws
IGJ1dCByZXBsYWNlIGl0cyBET00gbm9kZSByZWZlcmVuY2UuCisgICAgICogQHBhcmFtIHtOb2Rl
fSBuZXdOb2RlIFRoZSBuZXcgRE9NIG5vZGUuCisgICAgICovCisgICAgZnVuY3Rpb24gcmVwbGFj
ZVdpdGgoJHJvb3RFbGVtZW50LCBlbGVtZW50c1RvUmVtb3ZlLCBuZXdOb2RlKSB7CisgICAgICB2
YXIgZmlyc3RFbGVtZW50VG9SZW1vdmUgPSBlbGVtZW50c1RvUmVtb3ZlWzBdLAorICAgICAgICAg
IHJlbW92ZUNvdW50ID0gZWxlbWVudHNUb1JlbW92ZS5sZW5ndGgsCisgICAgICAgICAgcGFyZW50
ID0gZmlyc3RFbGVtZW50VG9SZW1vdmUucGFyZW50Tm9kZSwKKyAgICAgICAgICBpLCBpaTsKKwor
ICAgICAgaWYgKCRyb290RWxlbWVudCkgeworICAgICAgICBmb3IgKGkgPSAwLCBpaSA9ICRyb290
RWxlbWVudC5sZW5ndGg7IGkgPCBpaTsgaSsrKSB7CisgICAgICAgICAgaWYgKCRyb290RWxlbWVu
dFtpXSA9PSBmaXJzdEVsZW1lbnRUb1JlbW92ZSkgeworICAgICAgICAgICAgJHJvb3RFbGVtZW50
W2krK10gPSBuZXdOb2RlOworICAgICAgICAgICAgZm9yICh2YXIgaiA9IGksIGoyID0gaiArIHJl
bW92ZUNvdW50IC0gMSwKKyAgICAgICAgICAgICAgICAgICAgIGpqID0gJHJvb3RFbGVtZW50Lmxl
bmd0aDsKKyAgICAgICAgICAgICAgICAgaiA8IGpqOyBqKyssIGoyKyspIHsKKyAgICAgICAgICAg
ICAgaWYgKGoyIDwgamopIHsKKyAgICAgICAgICAgICAgICAkcm9vdEVsZW1lbnRbal0gPSAkcm9v
dEVsZW1lbnRbajJdOworICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRl
bGV0ZSAkcm9vdEVsZW1lbnRbal07CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICRyb290RWxlbWVudC5sZW5ndGggLT0gcmVtb3ZlQ291bnQgLSAxOworCisgICAg
ICAgICAgICAvLyBJZiB0aGUgcmVwbGFjZWQgZWxlbWVudCBpcyBhbHNvIHRoZSBqUXVlcnkgLmNv
bnRleHQgdGhlbiByZXBsYWNlIGl0CisgICAgICAgICAgICAvLyAuY29udGV4dCBpcyBhIGRlcHJl
Y2F0ZWQgalF1ZXJ5IGFwaSwgc28gd2Ugc2hvdWxkIHNldCBpdCBvbmx5IHdoZW4galF1ZXJ5IHNl
dCBpdAorICAgICAgICAgICAgLy8gaHR0cDovL2FwaS5qcXVlcnkuY29tL2NvbnRleHQvCisgICAg
ICAgICAgICBpZiAoJHJvb3RFbGVtZW50LmNvbnRleHQgPT09IGZpcnN0RWxlbWVudFRvUmVtb3Zl
KSB7CisgICAgICAgICAgICAgICRyb290RWxlbWVudC5jb250ZXh0ID0gbmV3Tm9kZTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgfQorCisgICAgICBpZiAocGFyZW50KSB7CisgICAgICAgIHBhcmVudC5yZXBsYWNlQ2hpbGQo
bmV3Tm9kZSwgZmlyc3RFbGVtZW50VG9SZW1vdmUpOworICAgICAgfQorCisgICAgICAvLyBUT0RP
KHBlcmYpOiB3aGF0J3MgdGhpcyBkb2N1bWVudCBmcmFnbWVudCBmb3I/IGlzIGl0IG5lZWRlZD8g
Y2FuIHdlIGF0IGxlYXN0IHJldXNlIGl0PworICAgICAgdmFyIGZyYWdtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOworICAgICAgZnJhZ21lbnQuYXBwZW5kQ2hpbGQoZmly
c3RFbGVtZW50VG9SZW1vdmUpOworCisgICAgICBpZiAoanFMaXRlLmhhc0RhdGEoZmlyc3RFbGVt
ZW50VG9SZW1vdmUpKSB7CisgICAgICAgIC8vIENvcHkgb3ZlciB1c2VyIGRhdGEgKHRoYXQgaW5j
bHVkZXMgQW5ndWxhcidzICRzY29wZSBldGMuKS4gRG9uJ3QgY29weSBwcml2YXRlCisgICAgICAg
IC8vIGRhdGEgaGVyZSBiZWNhdXNlIHRoZXJlJ3Mgbm8gcHVibGljIGludGVyZmFjZSBpbiBqUXVl
cnkgdG8gZG8gdGhhdCBhbmQgY29weWluZyBvdmVyCisgICAgICAgIC8vIGV2ZW50IGxpc3RlbmVy
cyAod2hpY2ggaXMgdGhlIG1haW4gdXNlIG9mIHByaXZhdGUgZGF0YSkgd291bGRuJ3Qgd29yayBh
bnl3YXkuCisgICAgICAgIGpxTGl0ZShuZXdOb2RlKS5kYXRhKGpxTGl0ZShmaXJzdEVsZW1lbnRU
b1JlbW92ZSkuZGF0YSgpKTsKKworICAgICAgICAvLyBSZW1vdmUgZGF0YSBvZiB0aGUgcmVwbGFj
ZWQgZWxlbWVudC4gV2UgY2Fubm90IGp1c3QgY2FsbCAucmVtb3ZlKCkKKyAgICAgICAgLy8gb24g
dGhlIGVsZW1lbnQgaXQgc2luY2UgdGhhdCB3b3VsZCBkZWFsbG9jYXRlIHNjb3BlIHRoYXQgaXMg
bmVlZGVkCisgICAgICAgIC8vIGZvciB0aGUgbmV3IG5vZGUuIEluc3RlYWQsIHJlbW92ZSB0aGUg
ZGF0YSAibWFudWFsbHkiLgorICAgICAgICBpZiAoIWpRdWVyeSkgeworICAgICAgICAgIGRlbGV0
ZSBqcUxpdGUuY2FjaGVbZmlyc3RFbGVtZW50VG9SZW1vdmVbanFMaXRlLmV4cGFuZG9dXTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAvLyBqUXVlcnkgMi54IGRvZXNuJ3QgZXhwb3NlIHRo
ZSBkYXRhIHN0b3JhZ2UuIFVzZSBqUXVlcnkuY2xlYW5EYXRhIHRvIGNsZWFuIHVwIGFmdGVyCisg
ICAgICAgICAgLy8gdGhlIHJlcGxhY2VkIGVsZW1lbnQuIFRoZSBjbGVhbkRhdGEgdmVyc2lvbiBt
b25rZXktcGF0Y2hlZCBieSBBbmd1bGFyIHdvdWxkIGNhdXNlCisgICAgICAgICAgLy8gdGhlIHNj
b3BlIHRvIGJlIHRyYXNoZWQgYW5kIHdlIGRvIG5lZWQgdGhlIHZlcnkgc2FtZSBzY29wZSB0byB3
b3JrIHdpdGggdGhlIG5ldworICAgICAgICAgIC8vIGVsZW1lbnQuIEhvd2V2ZXIsIHdlIGNhbm5v
dCBqdXN0IGNhY2hlIHRoZSBub24tcGF0Y2hlZCB2ZXJzaW9uIGFuZCB1c2UgaXQgaGVyZSBhcwor
ICAgICAgICAgIC8vIHRoYXQgd291bGQgYnJlYWsgaWYgYW5vdGhlciBsaWJyYXJ5IHBhdGNoZXMg
dGhlIG1ldGhvZCBhZnRlciBBbmd1bGFyIGRvZXMgKG9uZQorICAgICAgICAgIC8vIGV4YW1wbGUg
aXMgalF1ZXJ5IFVJKS4gSW5zdGVhZCwgc2V0IGEgZmxhZyBpbmRpY2F0aW5nIHNjb3BlIGRlc3Ry
b3lpbmcgc2hvdWxkIGJlCisgICAgICAgICAgLy8gc2tpcHBlZCB0aGlzIG9uZSB0aW1lLgorICAg
ICAgICAgIHNraXBEZXN0cm95T25OZXh0SlF1ZXJ5Q2xlYW5EYXRhID0gdHJ1ZTsKKyAgICAgICAg
ICBqUXVlcnkuY2xlYW5EYXRhKFtmaXJzdEVsZW1lbnRUb1JlbW92ZV0pOworICAgICAgICB9Cisg
ICAgICB9CisKKyAgICAgIGZvciAodmFyIGsgPSAxLCBrayA9IGVsZW1lbnRzVG9SZW1vdmUubGVu
Z3RoOyBrIDwga2s7IGsrKykgeworICAgICAgICB2YXIgZWxlbWVudCA9IGVsZW1lbnRzVG9SZW1v
dmVba107CisgICAgICAgIGpxTGl0ZShlbGVtZW50KS5yZW1vdmUoKTsgLy8gbXVzdCBkbyB0aGlz
IHdheSB0byBjbGVhbiB1cCBleHBhbmRvCisgICAgICAgIGZyYWdtZW50LmFwcGVuZENoaWxkKGVs
ZW1lbnQpOworICAgICAgICBkZWxldGUgZWxlbWVudHNUb1JlbW92ZVtrXTsKKyAgICAgIH0KKwor
ICAgICAgZWxlbWVudHNUb1JlbW92ZVswXSA9IG5ld05vZGU7CisgICAgICBlbGVtZW50c1RvUmVt
b3ZlLmxlbmd0aCA9IDE7CisgICAgfQorCisKKyAgICBmdW5jdGlvbiBjbG9uZUFuZEFubm90YXRl
Rm4oZm4sIGFubm90YXRpb24pIHsKKyAgICAgIHJldHVybiBleHRlbmQoZnVuY3Rpb24oKSB7IHJl
dHVybiBmbi5hcHBseShudWxsLCBhcmd1bWVudHMpOyB9LCBmbiwgYW5ub3RhdGlvbik7CisgICAg
fQorCisKKyAgICBmdW5jdGlvbiBpbnZva2VMaW5rRm4obGlua0ZuLCBzY29wZSwgJGVsZW1lbnQs
IGF0dHJzLCBjb250cm9sbGVycywgdHJhbnNjbHVkZUZuKSB7CisgICAgICB0cnkgeworICAgICAg
ICBsaW5rRm4oc2NvcGUsICRlbGVtZW50LCBhdHRycywgY29udHJvbGxlcnMsIHRyYW5zY2x1ZGVG
bik7CisgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICRleGNlcHRpb25IYW5kbGVyKGUsIHN0
YXJ0aW5nVGFnKCRlbGVtZW50KSk7CisgICAgICB9CisgICAgfQorCisKKyAgICAvLyBTZXQgdXAg
JHdhdGNoZXMgZm9yIGlzb2xhdGUgc2NvcGUgYW5kIGNvbnRyb2xsZXIgYmluZGluZ3MuIFRoaXMg
cHJvY2VzcworICAgIC8vIG9ubHkgb2NjdXJzIGZvciBpc29sYXRlIHNjb3BlcyBhbmQgbmV3IHNj
b3BlcyB3aXRoIGNvbnRyb2xsZXJBcy4KKyAgICBmdW5jdGlvbiBpbml0aWFsaXplRGlyZWN0aXZl
QmluZGluZ3Moc2NvcGUsIGF0dHJzLCBkZXN0aW5hdGlvbiwgYmluZGluZ3MsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGl2ZSwgbmV3U2NvcGUpIHsKKyAg
ICAgIHZhciBvbk5ld1Njb3BlRGVzdHJveWVkOworICAgICAgZm9yRWFjaChiaW5kaW5ncywgZnVu
Y3Rpb24oZGVmaW5pdGlvbiwgc2NvcGVOYW1lKSB7CisgICAgICAgIHZhciBhdHRyTmFtZSA9IGRl
ZmluaXRpb24uYXR0ck5hbWUsCisgICAgICAgIG9wdGlvbmFsID0gZGVmaW5pdGlvbi5vcHRpb25h
bCwKKyAgICAgICAgbW9kZSA9IGRlZmluaXRpb24ubW9kZSwgLy8gQCwgPSwgb3IgJgorICAgICAg
ICBsYXN0VmFsdWUsCisgICAgICAgIHBhcmVudEdldCwgcGFyZW50U2V0LCBjb21wYXJlOworCisg
ICAgICAgIGlmICghaGFzT3duUHJvcGVydHkuY2FsbChhdHRycywgYXR0ck5hbWUpKSB7CisgICAg
ICAgICAgLy8gSW4gdGhlIGNhc2Ugb2YgdXNlciBkZWZpbmVkIGEgYmluZGluZyB3aXRoIHRoZSBz
YW1lIG5hbWUgYXMgYSBtZXRob2QgaW4gT2JqZWN0LnByb3RvdHlwZSBidXQgZGlkbid0IHNldAor
ICAgICAgICAgIC8vIHRoZSBjb3JyZXNwb25kaW5nIGF0dHJpYnV0ZS4gV2UgbmVlZCB0byBtYWtl
IHN1cmUgc3Vic2VxdWVudCBjb2RlIHdvbid0IGFjY2VzcyB0byB0aGUgcHJvdG90eXBlIGZ1bmN0
aW9uCisgICAgICAgICAgYXR0cnNbYXR0ck5hbWVdID0gdW5kZWZpbmVkOworICAgICAgICB9CisK
KyAgICAgICAgc3dpdGNoIChtb2RlKSB7CisKKyAgICAgICAgICBjYXNlICdAJzoKKyAgICAgICAg
ICAgIGlmICghYXR0cnNbYXR0ck5hbWVdICYmICFvcHRpb25hbCkgeworICAgICAgICAgICAgICBk
ZXN0aW5hdGlvbltzY29wZU5hbWVdID0gdW5kZWZpbmVkOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBhdHRycy4kb2JzZXJ2ZShhdHRyTmFtZSwgZnVuY3Rpb24odmFsdWUpIHsKKyAgICAg
ICAgICAgICAgZGVzdGluYXRpb25bc2NvcGVOYW1lXSA9IHZhbHVlOworICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICBhdHRycy4kJG9ic2VydmVyc1thdHRyTmFtZV0uJCRzY29wZSA9IHNjb3Bl
OworICAgICAgICAgICAgaWYgKGF0dHJzW2F0dHJOYW1lXSkgeworICAgICAgICAgICAgICAvLyBJ
ZiB0aGUgYXR0cmlidXRlIGhhcyBiZWVuIHByb3ZpZGVkIHRoZW4gd2UgdHJpZ2dlciBhbiBpbnRl
cnBvbGF0aW9uIHRvIGVuc3VyZQorICAgICAgICAgICAgICAvLyB0aGUgdmFsdWUgaXMgdGhlcmUg
Zm9yIHVzZSBpbiB0aGUgbGluayBmbgorICAgICAgICAgICAgICBkZXN0aW5hdGlvbltzY29wZU5h
bWVdID0gJGludGVycG9sYXRlKGF0dHJzW2F0dHJOYW1lXSkoc2NvcGUpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICBjYXNlICc9JzoKKyAgICAgICAgICAg
IGlmIChvcHRpb25hbCAmJiAhYXR0cnNbYXR0ck5hbWVdKSB7CisgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHBhcmVudEdldCA9ICRwYXJzZShhdHRyc1th
dHRyTmFtZV0pOworCisgICAgICAgICAgICBpZiAocGFyZW50R2V0LmxpdGVyYWwpIHsKKyAgICAg
ICAgICAgICAgY29tcGFyZSA9IGVxdWFsczsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgIGNvbXBhcmUgPSBmdW5jdGlvbihhLCBiKSB7IHJldHVybiBhID09PSBiIHx8IChhICE9
PSBhICYmIGIgIT09IGIpOyB9OworICAgICAgICAgICAgfQorICAgICAgICAgICAgcGFyZW50U2V0
ID0gcGFyZW50R2V0LmFzc2lnbiB8fCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgLy8gcmVz
ZXQgdGhlIGNoYW5nZSwgb3Igd2Ugd2lsbCB0aHJvdyB0aGlzIGV4Y2VwdGlvbiBvbiBldmVyeSAk
ZGlnZXN0CisgICAgICAgICAgICAgIGxhc3RWYWx1ZSA9IGRlc3RpbmF0aW9uW3Njb3BlTmFtZV0g
PSBwYXJlbnRHZXQoc2NvcGUpOworICAgICAgICAgICAgICB0aHJvdyAkY29tcGlsZU1pbkVycign
bm9uYXNzaWduJywKKyAgICAgICAgICAgICAgICAgICJFeHByZXNzaW9uICd7MH0nIHVzZWQgd2l0
aCBkaXJlY3RpdmUgJ3sxfScgaXMgbm9uLWFzc2lnbmFibGUhIiwKKyAgICAgICAgICAgICAgICAg
IGF0dHJzW2F0dHJOYW1lXSwgZGlyZWN0aXZlLm5hbWUpOworICAgICAgICAgICAgfTsKKyAgICAg
ICAgICAgIGxhc3RWYWx1ZSA9IGRlc3RpbmF0aW9uW3Njb3BlTmFtZV0gPSBwYXJlbnRHZXQoc2Nv
cGUpOworICAgICAgICAgICAgdmFyIHBhcmVudFZhbHVlV2F0Y2ggPSBmdW5jdGlvbiBwYXJlbnRW
YWx1ZVdhdGNoKHBhcmVudFZhbHVlKSB7CisgICAgICAgICAgICAgIGlmICghY29tcGFyZShwYXJl
bnRWYWx1ZSwgZGVzdGluYXRpb25bc2NvcGVOYW1lXSkpIHsKKyAgICAgICAgICAgICAgICAvLyB3
ZSBhcmUgb3V0IG9mIHN5bmMgYW5kIG5lZWQgdG8gY29weQorICAgICAgICAgICAgICAgIGlmICgh
Y29tcGFyZShwYXJlbnRWYWx1ZSwgbGFzdFZhbHVlKSkgeworICAgICAgICAgICAgICAgICAgLy8g
cGFyZW50IGNoYW5nZWQgYW5kIGl0IGhhcyBwcmVjZWRlbmNlCisgICAgICAgICAgICAgICAgICBk
ZXN0aW5hdGlvbltzY29wZU5hbWVdID0gcGFyZW50VmFsdWU7CisgICAgICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBwYXJlbnQgY2FuIGJlIGFzc2lnbmVk
IHRoZW4gZG8gc28KKyAgICAgICAgICAgICAgICAgIHBhcmVudFNldChzY29wZSwgcGFyZW50VmFs
dWUgPSBkZXN0aW5hdGlvbltzY29wZU5hbWVdKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgcmV0dXJuIGxhc3RWYWx1ZSA9IHBhcmVudFZhbHVlOwor
ICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIHBhcmVudFZhbHVlV2F0Y2guJHN0YXRlZnVsID0g
dHJ1ZTsKKyAgICAgICAgICAgIHZhciB1bndhdGNoOworICAgICAgICAgICAgaWYgKGRlZmluaXRp
b24uY29sbGVjdGlvbikgeworICAgICAgICAgICAgICB1bndhdGNoID0gc2NvcGUuJHdhdGNoQ29s
bGVjdGlvbihhdHRyc1thdHRyTmFtZV0sIHBhcmVudFZhbHVlV2F0Y2gpOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgdW53YXRjaCA9IHNjb3BlLiR3YXRjaCgkcGFyc2UoYXR0
cnNbYXR0ck5hbWVdLCBwYXJlbnRWYWx1ZVdhdGNoKSwgbnVsbCwgcGFyZW50R2V0LmxpdGVyYWwp
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgb25OZXdTY29wZURlc3Ryb3llZCA9IChvbk5l
d1Njb3BlRGVzdHJveWVkIHx8IFtdKTsKKyAgICAgICAgICAgIG9uTmV3U2NvcGVEZXN0cm95ZWQu
cHVzaCh1bndhdGNoKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgY2FzZSAnJic6
CisgICAgICAgICAgICBwYXJlbnRHZXQgPSAkcGFyc2UoYXR0cnNbYXR0ck5hbWVdKTsKKworICAg
ICAgICAgICAgLy8gRG9uJ3QgYXNzaWduIG5vb3AgdG8gZGVzdGluYXRpb24gaWYgZXhwcmVzc2lv
biBpcyBub3QgdmFsaWQKKyAgICAgICAgICAgIGlmIChwYXJlbnRHZXQgPT09IG5vb3AgJiYgb3B0
aW9uYWwpIGJyZWFrOworCisgICAgICAgICAgICBkZXN0aW5hdGlvbltzY29wZU5hbWVdID0gZnVu
Y3Rpb24obG9jYWxzKSB7CisgICAgICAgICAgICAgIHJldHVybiBwYXJlbnRHZXQoc2NvcGUsIGxv
Y2Fscyk7CisgICAgICAgICAgICB9OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICAgIH0pOworICAgICAgdmFyIGRlc3Ryb3lCaW5kaW5ncyA9IG9uTmV3U2NvcGVEZXN0cm95ZWQg
PyBmdW5jdGlvbiBkZXN0cm95QmluZGluZ3MoKSB7CisgICAgICAgIGZvciAodmFyIGkgPSAwLCBp
aSA9IG9uTmV3U2NvcGVEZXN0cm95ZWQubGVuZ3RoOyBpIDwgaWk7ICsraSkgeworICAgICAgICAg
IG9uTmV3U2NvcGVEZXN0cm95ZWRbaV0oKTsKKyAgICAgICAgfQorICAgICAgfSA6IG5vb3A7Cisg
ICAgICBpZiAobmV3U2NvcGUgJiYgZGVzdHJveUJpbmRpbmdzICE9PSBub29wKSB7CisgICAgICAg
IG5ld1Njb3BlLiRvbignJGRlc3Ryb3knLCBkZXN0cm95QmluZGluZ3MpOworICAgICAgICByZXR1
cm4gbm9vcDsKKyAgICAgIH0KKyAgICAgIHJldHVybiBkZXN0cm95QmluZGluZ3M7CisgICAgfQor
ICB9XTsKK30KKwordmFyIFBSRUZJWF9SRUdFWFAgPSAvXigoPzp4fGRhdGEpW1w6XC1fXSkvaTsK
Ky8qKgorICogQ29udmVydHMgYWxsIGFjY2VwdGVkIGRpcmVjdGl2ZXMgZm9ybWF0IGludG8gcHJv
cGVyIGRpcmVjdGl2ZSBuYW1lLgorICogQHBhcmFtIG5hbWUgTmFtZSB0byBub3JtYWxpemUKKyAq
LworZnVuY3Rpb24gZGlyZWN0aXZlTm9ybWFsaXplKG5hbWUpIHsKKyAgcmV0dXJuIGNhbWVsQ2Fz
ZShuYW1lLnJlcGxhY2UoUFJFRklYX1JFR0VYUCwgJycpKTsKK30KKworLyoqCisgKiBAbmdkb2Mg
dHlwZQorICogQG5hbWUgJGNvbXBpbGUuZGlyZWN0aXZlLkF0dHJpYnV0ZXMKKyAqCisgKiBAZGVz
Y3JpcHRpb24KKyAqIEEgc2hhcmVkIG9iamVjdCBiZXR3ZWVuIGRpcmVjdGl2ZSBjb21waWxlIC8g
bGlua2luZyBmdW5jdGlvbnMgd2hpY2ggY29udGFpbnMgbm9ybWFsaXplZCBET00KKyAqIGVsZW1l
bnQgYXR0cmlidXRlcy4gVGhlIHZhbHVlcyByZWZsZWN0IGN1cnJlbnQgYmluZGluZyBzdGF0ZSBg
e3sgfX1gLiBUaGUgbm9ybWFsaXphdGlvbiBpcworICogbmVlZGVkIHNpbmNlIGFsbCBvZiB0aGVz
ZSBhcmUgdHJlYXRlZCBhcyBlcXVpdmFsZW50IGluIEFuZ3VsYXI6CisgKgorICogYGBgCisgKiAg
ICA8c3BhbiBuZzpiaW5kPSJhIiBuZy1iaW5kPSJhIiBkYXRhLW5nLWJpbmQ9ImEiIHgtbmctYmlu
ZD0iYSI+CisgKiBgYGAKKyAqLworCisvKioKKyAqIEBuZ2RvYyBwcm9wZXJ0eQorICogQG5hbWUg
JGNvbXBpbGUuZGlyZWN0aXZlLkF0dHJpYnV0ZXMjJGF0dHIKKyAqCisgKiBAZGVzY3JpcHRpb24K
KyAqIEEgbWFwIG9mIERPTSBlbGVtZW50IGF0dHJpYnV0ZSBuYW1lcyB0byB0aGUgbm9ybWFsaXpl
ZCBuYW1lLiBUaGlzIGlzCisgKiBuZWVkZWQgdG8gZG8gcmV2ZXJzZSBsb29rdXAgZnJvbSBub3Jt
YWxpemVkIG5hbWUgYmFjayB0byBhY3R1YWwgbmFtZS4KKyAqLworCisKKy8qKgorICogQG5nZG9j
IG1ldGhvZAorICogQG5hbWUgJGNvbXBpbGUuZGlyZWN0aXZlLkF0dHJpYnV0ZXMjJHNldAorICog
QGtpbmQgZnVuY3Rpb24KKyAqCisgKiBAZGVzY3JpcHRpb24KKyAqIFNldCBET00gZWxlbWVudCBh
dHRyaWJ1dGUgdmFsdWUuCisgKgorICoKKyAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIE5vcm1hbGl6
ZWQgZWxlbWVudCBhdHRyaWJ1dGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgdG8gbW9kaWZ5LiBUaGUg
bmFtZSBpcworICogICAgICAgICAgcmV2ZXJzZS10cmFuc2xhdGVkIHVzaW5nIHRoZSB7QGxpbmsg
bmcuJGNvbXBpbGUuZGlyZWN0aXZlLkF0dHJpYnV0ZXMjJGF0dHIgJGF0dHJ9CisgKiAgICAgICAg
ICBwcm9wZXJ0eSB0byB0aGUgb3JpZ2luYWwgbmFtZS4KKyAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1
ZSBWYWx1ZSB0byBzZXQgdGhlIGF0dHJpYnV0ZSB0by4gVGhlIHZhbHVlIGNhbiBiZSBhbiBpbnRl
cnBvbGF0ZWQgc3RyaW5nLgorICovCisKKworCisvKioKKyAqIENsb3N1cmUgY29tcGlsZXIgdHlw
ZSBpbmZvcm1hdGlvbgorICovCisKK2Z1bmN0aW9uIG5vZGVzZXRMaW5raW5nRm4oCisgIC8qIGFu
Z3VsYXIuU2NvcGUgKi8gc2NvcGUsCisgIC8qIE5vZGVMaXN0ICovIG5vZGVMaXN0LAorICAvKiBF
bGVtZW50ICovIHJvb3RFbGVtZW50LAorICAvKiBmdW5jdGlvbihGdW5jdGlvbikgKi8gYm91bmRU
cmFuc2NsdWRlRm4KKykge30KKworZnVuY3Rpb24gZGlyZWN0aXZlTGlua2luZ0ZuKAorICAvKiBu
b2Rlc2V0TGlua2luZ0ZuICovIG5vZGVzZXRMaW5raW5nRm4sCisgIC8qIGFuZ3VsYXIuU2NvcGUg
Ki8gc2NvcGUsCisgIC8qIE5vZGUgKi8gbm9kZSwKKyAgLyogRWxlbWVudCAqLyByb290RWxlbWVu
dCwKKyAgLyogZnVuY3Rpb24oRnVuY3Rpb24pICovIGJvdW5kVHJhbnNjbHVkZUZuCispIHt9CisK
K2Z1bmN0aW9uIHRva2VuRGlmZmVyZW5jZShzdHIxLCBzdHIyKSB7CisgIHZhciB2YWx1ZXMgPSAn
JywKKyAgICAgIHRva2VuczEgPSBzdHIxLnNwbGl0KC9ccysvKSwKKyAgICAgIHRva2VuczIgPSBz
dHIyLnNwbGl0KC9ccysvKTsKKworICBvdXRlcjoKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b2tl
bnMxLmxlbmd0aDsgaSsrKSB7CisgICAgdmFyIHRva2VuID0gdG9rZW5zMVtpXTsKKyAgICBmb3Ig
KHZhciBqID0gMDsgaiA8IHRva2VuczIubGVuZ3RoOyBqKyspIHsKKyAgICAgIGlmICh0b2tlbiA9
PSB0b2tlbnMyW2pdKSBjb250aW51ZSBvdXRlcjsKKyAgICB9CisgICAgdmFsdWVzICs9ICh2YWx1
ZXMubGVuZ3RoID4gMCA/ICcgJyA6ICcnKSArIHRva2VuOworICB9CisgIHJldHVybiB2YWx1ZXM7
Cit9CisKK2Z1bmN0aW9uIHJlbW92ZUNvbW1lbnRzKGpxTm9kZXMpIHsKKyAganFOb2RlcyA9IGpx
TGl0ZShqcU5vZGVzKTsKKyAgdmFyIGkgPSBqcU5vZGVzLmxlbmd0aDsKKworICBpZiAoaSA8PSAx
KSB7CisgICAgcmV0dXJuIGpxTm9kZXM7CisgIH0KKworICB3aGlsZSAoaS0tKSB7CisgICAgdmFy
IG5vZGUgPSBqcU5vZGVzW2ldOworICAgIGlmIChub2RlLm5vZGVUeXBlID09PSBOT0RFX1RZUEVf
Q09NTUVOVCkgeworICAgICAgc3BsaWNlLmNhbGwoanFOb2RlcywgaSwgMSk7CisgICAgfQorICB9
CisgIHJldHVybiBqcU5vZGVzOworfQorCit2YXIgJGNvbnRyb2xsZXJNaW5FcnIgPSBtaW5FcnIo
JyRjb250cm9sbGVyJyk7CisKKwordmFyIENOVFJMX1JFRyA9IC9eKFxTKykoXHMrYXNccysoXHcr
KSk/JC87CitmdW5jdGlvbiBpZGVudGlmaWVyRm9yQ29udHJvbGxlcihjb250cm9sbGVyLCBpZGVu
dCkgeworICBpZiAoaWRlbnQgJiYgaXNTdHJpbmcoaWRlbnQpKSByZXR1cm4gaWRlbnQ7CisgIGlm
IChpc1N0cmluZyhjb250cm9sbGVyKSkgeworICAgIHZhciBtYXRjaCA9IENOVFJMX1JFRy5leGVj
KGNvbnRyb2xsZXIpOworICAgIGlmIChtYXRjaCkgcmV0dXJuIG1hdGNoWzNdOworICB9Cit9CisK
KworLyoqCisgKiBAbmdkb2MgcHJvdmlkZXIKKyAqIEBuYW1lICRjb250cm9sbGVyUHJvdmlkZXIK
KyAqIEBkZXNjcmlwdGlvbgorICogVGhlIHtAbGluayBuZy4kY29udHJvbGxlciAkY29udHJvbGxl
ciBzZXJ2aWNlfSBpcyB1c2VkIGJ5IEFuZ3VsYXIgdG8gY3JlYXRlIG5ldworICogY29udHJvbGxl
cnMuCisgKgorICogVGhpcyBwcm92aWRlciBhbGxvd3MgY29udHJvbGxlciByZWdpc3RyYXRpb24g
dmlhIHRoZQorICoge0BsaW5rIG5nLiRjb250cm9sbGVyUHJvdmlkZXIjcmVnaXN0ZXIgcmVnaXN0
ZXJ9IG1ldGhvZC4KKyAqLworZnVuY3Rpb24gJENvbnRyb2xsZXJQcm92aWRlcigpIHsKKyAgdmFy
IGNvbnRyb2xsZXJzID0ge30sCisgICAgICBnbG9iYWxzID0gZmFsc2U7CisKKyAgLyoqCisgICAq
IEBuZ2RvYyBtZXRob2QKKyAgICogQG5hbWUgJGNvbnRyb2xsZXJQcm92aWRlciNyZWdpc3Rlcgor
ICAgKiBAcGFyYW0ge3N0cmluZ3xPYmplY3R9IG5hbWUgQ29udHJvbGxlciBuYW1lLCBvciBhbiBv
YmplY3QgbWFwIG9mIGNvbnRyb2xsZXJzIHdoZXJlIHRoZSBrZXlzIGFyZQorICAgKiAgICB0aGUg
bmFtZXMgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBjb25zdHJ1Y3RvcnMuCisgICAqIEBwYXJhbSB7
RnVuY3Rpb258QXJyYXl9IGNvbnN0cnVjdG9yIENvbnRyb2xsZXIgY29uc3RydWN0b3IgZm4gKG9w
dGlvbmFsbHkgZGVjb3JhdGVkIHdpdGggREkKKyAgICogICAgYW5ub3RhdGlvbnMgaW4gdGhlIGFy
cmF5IG5vdGF0aW9uKS4KKyAgICovCisgIHRoaXMucmVnaXN0ZXIgPSBmdW5jdGlvbihuYW1lLCBj
b25zdHJ1Y3RvcikgeworICAgIGFzc2VydE5vdEhhc093blByb3BlcnR5KG5hbWUsICdjb250cm9s
bGVyJyk7CisgICAgaWYgKGlzT2JqZWN0KG5hbWUpKSB7CisgICAgICBleHRlbmQoY29udHJvbGxl
cnMsIG5hbWUpOworICAgIH0gZWxzZSB7CisgICAgICBjb250cm9sbGVyc1tuYW1lXSA9IGNvbnN0
cnVjdG9yOworICAgIH0KKyAgfTsKKworICAvKioKKyAgICogQG5nZG9jIG1ldGhvZAorICAgKiBA
bmFtZSAkY29udHJvbGxlclByb3ZpZGVyI2FsbG93R2xvYmFscworICAgKiBAZGVzY3JpcHRpb24g
SWYgY2FsbGVkLCBhbGxvd3MgYCRjb250cm9sbGVyYCB0byBmaW5kIGNvbnRyb2xsZXIgY29uc3Ry
dWN0b3JzIG9uIGB3aW5kb3dgCisgICAqLworICB0aGlzLmFsbG93R2xvYmFscyA9IGZ1bmN0aW9u
KCkgeworICAgIGdsb2JhbHMgPSB0cnVlOworICB9OworCisKKyAgdGhpcy4kZ2V0ID0gWyckaW5q
ZWN0b3InLCAnJHdpbmRvdycsIGZ1bmN0aW9uKCRpbmplY3RvciwgJHdpbmRvdykgeworCisgICAg
LyoqCisgICAgICogQG5nZG9jIHNlcnZpY2UKKyAgICAgKiBAbmFtZSAkY29udHJvbGxlcgorICAg
ICAqIEByZXF1aXJlcyAkaW5qZWN0b3IKKyAgICAgKgorICAgICAqIEBwYXJhbSB7RnVuY3Rpb258
c3RyaW5nfSBjb25zdHJ1Y3RvciBJZiBjYWxsZWQgd2l0aCBhIGZ1bmN0aW9uIHRoZW4gaXQncyBj
b25zaWRlcmVkIHRvIGJlIHRoZQorICAgICAqICAgIGNvbnRyb2xsZXIgY29uc3RydWN0b3IgZnVu
Y3Rpb24uIE90aGVyd2lzZSBpdCdzIGNvbnNpZGVyZWQgdG8gYmUgYSBzdHJpbmcgd2hpY2ggaXMg
dXNlZAorICAgICAqICAgIHRvIHJldHJpZXZlIHRoZSBjb250cm9sbGVyIGNvbnN0cnVjdG9yIHVz
aW5nIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisgICAgICoKKyAgICAgKiAgICAqIGNoZWNrIGlmIGEg
Y29udHJvbGxlciB3aXRoIGdpdmVuIG5hbWUgaXMgcmVnaXN0ZXJlZCB2aWEgYCRjb250cm9sbGVy
UHJvdmlkZXJgCisgICAgICogICAgKiBjaGVjayBpZiBldmFsdWF0aW5nIHRoZSBzdHJpbmcgb24g
dGhlIGN1cnJlbnQgc2NvcGUgcmV0dXJucyBhIGNvbnN0cnVjdG9yCisgICAgICogICAgKiBpZiAk
Y29udHJvbGxlclByb3ZpZGVyI2FsbG93R2xvYmFscywgY2hlY2sgYHdpbmRvd1tjb25zdHJ1Y3Rv
cl1gIG9uIHRoZSBnbG9iYWwKKyAgICAgKiAgICAgIGB3aW5kb3dgIG9iamVjdCAobm90IHJlY29t
bWVuZGVkKQorICAgICAqCisgICAgICogICAgVGhlIHN0cmluZyBjYW4gdXNlIHRoZSBgY29udHJv
bGxlciBhcyBwcm9wZXJ0eWAgc3ludGF4LCB3aGVyZSB0aGUgY29udHJvbGxlciBpbnN0YW5jZSBp
cyBwdWJsaXNoZWQKKyAgICAgKiAgICBhcyB0aGUgc3BlY2lmaWVkIHByb3BlcnR5IG9uIHRoZSBg
c2NvcGVgOyB0aGUgYHNjb3BlYCBtdXN0IGJlIGluamVjdGVkIGludG8gYGxvY2Fsc2AgcGFyYW0g
Zm9yIHRoaXMKKyAgICAgKiAgICB0byB3b3JrIGNvcnJlY3RseS4KKyAgICAgKgorICAgICAqIEBw
YXJhbSB7T2JqZWN0fSBsb2NhbHMgSW5qZWN0aW9uIGxvY2FscyBmb3IgQ29udHJvbGxlci4KKyAg
ICAgKiBAcmV0dXJuIHtPYmplY3R9IEluc3RhbmNlIG9mIGdpdmVuIGNvbnRyb2xsZXIuCisgICAg
ICoKKyAgICAgKiBAZGVzY3JpcHRpb24KKyAgICAgKiBgJGNvbnRyb2xsZXJgIHNlcnZpY2UgaXMg
cmVzcG9uc2libGUgZm9yIGluc3RhbnRpYXRpbmcgY29udHJvbGxlcnMuCisgICAgICoKKyAgICAg
KiBJdCdzIGp1c3QgYSBzaW1wbGUgY2FsbCB0byB7QGxpbmsgYXV0by4kaW5qZWN0b3IgJGluamVj
dG9yfSwgYnV0IGV4dHJhY3RlZCBpbnRvCisgICAgICogYSBzZXJ2aWNlLCBzbyB0aGF0IG9uZSBj
YW4gb3ZlcnJpZGUgdGhpcyBzZXJ2aWNlIHdpdGggW0JDIHZlcnNpb25dKGh0dHBzOi8vZ2lzdC5n
aXRodWIuY29tLzE2NDk3ODgpLgorICAgICAqLworICAgIHJldHVybiBmdW5jdGlvbihleHByZXNz
aW9uLCBsb2NhbHMsIGxhdGVyLCBpZGVudCkgeworICAgICAgLy8gUFJJVkFURSBBUEk6CisgICAg
ICAvLyAgIHBhcmFtIGBsYXRlcmAgLS0tIGluZGljYXRlcyB0aGF0IHRoZSBjb250cm9sbGVyJ3Mg
Y29uc3RydWN0b3IgaXMgaW52b2tlZCBhdCBhIGxhdGVyIHRpbWUuCisgICAgICAvLyAgICAgICAg
ICAgICAgICAgICAgIElmIHRydWUsICRjb250cm9sbGVyIHdpbGwgYWxsb2NhdGUgdGhlIG9iamVj
dCB3aXRoIHRoZSBjb3JyZWN0CisgICAgICAvLyAgICAgICAgICAgICAgICAgICAgIHByb3RvdHlw
ZSBjaGFpbiwgYnV0IHdpbGwgbm90IGludm9rZSB0aGUgY29udHJvbGxlciB1bnRpbCBhIHJldHVy
bmVkCisgICAgICAvLyAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrIGlzIGludm9rZWQuCisg
ICAgICAvLyAgIHBhcmFtIGBpZGVudGAgLS0tIEFuIG9wdGlvbmFsIGxhYmVsIHdoaWNoIG92ZXJy
aWRlcyB0aGUgbGFiZWwgcGFyc2VkIGZyb20gdGhlIGNvbnRyb2xsZXIKKyAgICAgIC8vICAgICAg
ICAgICAgICAgICAgICAgZXhwcmVzc2lvbiwgaWYgYW55LgorICAgICAgdmFyIGluc3RhbmNlLCBt
YXRjaCwgY29uc3RydWN0b3IsIGlkZW50aWZpZXI7CisgICAgICBsYXRlciA9IGxhdGVyID09PSB0
cnVlOworICAgICAgaWYgKGlkZW50ICYmIGlzU3RyaW5nKGlkZW50KSkgeworICAgICAgICBpZGVu
dGlmaWVyID0gaWRlbnQ7CisgICAgICB9CisKKyAgICAgIGlmIChpc1N0cmluZyhleHByZXNzaW9u
KSkgeworICAgICAgICBtYXRjaCA9IGV4cHJlc3Npb24ubWF0Y2goQ05UUkxfUkVHKTsKKyAgICAg
ICAgaWYgKCFtYXRjaCkgeworICAgICAgICAgIHRocm93ICRjb250cm9sbGVyTWluRXJyKCdjdHJs
Zm10JywKKyAgICAgICAgICAgICJCYWRseSBmb3JtZWQgY29udHJvbGxlciBzdHJpbmcgJ3swfScu
ICIgKworICAgICAgICAgICAgIk11c3QgbWF0Y2ggYF9fbmFtZV9fIGFzIF9faWRfX2Agb3IgYF9f
bmFtZV9fYC4iLCBleHByZXNzaW9uKTsKKyAgICAgICAgfQorICAgICAgICBjb25zdHJ1Y3RvciA9
IG1hdGNoWzFdLAorICAgICAgICBpZGVudGlmaWVyID0gaWRlbnRpZmllciB8fCBtYXRjaFszXTsK
KyAgICAgICAgZXhwcmVzc2lvbiA9IGNvbnRyb2xsZXJzLmhhc093blByb3BlcnR5KGNvbnN0cnVj
dG9yKQorICAgICAgICAgICAgPyBjb250cm9sbGVyc1tjb25zdHJ1Y3Rvcl0KKyAgICAgICAgICAg
IDogZ2V0dGVyKGxvY2Fscy4kc2NvcGUsIGNvbnN0cnVjdG9yLCB0cnVlKSB8fAorICAgICAgICAg
ICAgICAgIChnbG9iYWxzID8gZ2V0dGVyKCR3aW5kb3csIGNvbnN0cnVjdG9yLCB0cnVlKSA6IHVu
ZGVmaW5lZCk7CisKKyAgICAgICAgYXNzZXJ0QXJnRm4oZXhwcmVzc2lvbiwgY29uc3RydWN0b3Is
IHRydWUpOworICAgICAgfQorCisgICAgICBpZiAobGF0ZXIpIHsKKyAgICAgICAgLy8gSW5zdGFu
dGlhdGUgY29udHJvbGxlciBsYXRlcjoKKyAgICAgICAgLy8gVGhpcyBtYWNoaW5lcnkgaXMgdXNl
ZCB0byBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgdGhlIG9iamVjdCBiZWZvcmUgY2FsbGluZyB0aGUK
KyAgICAgICAgLy8gY29udHJvbGxlcidzIGNvbnN0cnVjdG9yIGl0c2VsZi4KKyAgICAgICAgLy8K
KyAgICAgICAgLy8gVGhpcyBhbGxvd3MgcHJvcGVydGllcyB0byBiZSBhZGRlZCB0byB0aGUgY29u
dHJvbGxlciBiZWZvcmUgdGhlIGNvbnN0cnVjdG9yIGlzCisgICAgICAgIC8vIGludm9rZWQuIFBy
aW1hcmlseSwgdGhpcyBpcyB1c2VkIGZvciBpc29sYXRlIHNjb3BlIGJpbmRpbmdzIGluICRjb21w
aWxlLgorICAgICAgICAvLworICAgICAgICAvLyBUaGlzIGZlYXR1cmUgaXMgbm90IGludGVuZGVk
IGZvciB1c2UgYnkgYXBwbGljYXRpb25zLCBhbmQgaXMgdGh1cyBub3QgZG9jdW1lbnRlZAorICAg
ICAgICAvLyBwdWJsaWNseS4KKyAgICAgICAgLy8gT2JqZWN0IGNyZWF0aW9uOiBodHRwOi8vanNw
ZXJmLmNvbS9jcmVhdGUtY29uc3RydWN0b3IvMgorICAgICAgICB2YXIgY29udHJvbGxlclByb3Rv
dHlwZSA9IChpc0FycmF5KGV4cHJlc3Npb24pID8KKyAgICAgICAgICBleHByZXNzaW9uW2V4cHJl
c3Npb24ubGVuZ3RoIC0gMV0gOiBleHByZXNzaW9uKS5wcm90b3R5cGU7CisgICAgICAgIGluc3Rh
bmNlID0gT2JqZWN0LmNyZWF0ZShjb250cm9sbGVyUHJvdG90eXBlIHx8IG51bGwpOworCisgICAg
ICAgIGlmIChpZGVudGlmaWVyKSB7CisgICAgICAgICAgYWRkSWRlbnRpZmllcihsb2NhbHMsIGlk
ZW50aWZpZXIsIGluc3RhbmNlLCBjb25zdHJ1Y3RvciB8fCBleHByZXNzaW9uLm5hbWUpOworICAg
ICAgICB9CisKKyAgICAgICAgdmFyIGluc3RhbnRpYXRlOworICAgICAgICByZXR1cm4gaW5zdGFu
dGlhdGUgPSBleHRlbmQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgdmFyIHJlc3VsdCA9ICRpbmpl
Y3Rvci5pbnZva2UoZXhwcmVzc2lvbiwgaW5zdGFuY2UsIGxvY2FscywgY29uc3RydWN0b3IpOwor
ICAgICAgICAgIGlmIChyZXN1bHQgIT09IGluc3RhbmNlICYmIChpc09iamVjdChyZXN1bHQpIHx8
IGlzRnVuY3Rpb24ocmVzdWx0KSkpIHsKKyAgICAgICAgICAgIGluc3RhbmNlID0gcmVzdWx0Owor
ICAgICAgICAgICAgaWYgKGlkZW50aWZpZXIpIHsKKyAgICAgICAgICAgICAgLy8gSWYgcmVzdWx0
IGNoYW5nZWQsIHJlLWFzc2lnbiBjb250cm9sbGVyQXMgdmFsdWUgdG8gc2NvcGUuCisgICAgICAg
ICAgICAgIGFkZElkZW50aWZpZXIobG9jYWxzLCBpZGVudGlmaWVyLCBpbnN0YW5jZSwgY29uc3Ry
dWN0b3IgfHwgZXhwcmVzc2lvbi5uYW1lKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9Cisg
ICAgICAgICAgcmV0dXJuIGluc3RhbmNlOworICAgICAgICB9LCB7CisgICAgICAgICAgaW5zdGFu
Y2U6IGluc3RhbmNlLAorICAgICAgICAgIGlkZW50aWZpZXI6IGlkZW50aWZpZXIKKyAgICAgICAg
fSk7CisgICAgICB9CisKKyAgICAgIGluc3RhbmNlID0gJGluamVjdG9yLmluc3RhbnRpYXRlKGV4
cHJlc3Npb24sIGxvY2FscywgY29uc3RydWN0b3IpOworCisgICAgICBpZiAoaWRlbnRpZmllcikg
eworICAgICAgICBhZGRJZGVudGlmaWVyKGxvY2FscywgaWRlbnRpZmllciwgaW5zdGFuY2UsIGNv
bnN0cnVjdG9yIHx8IGV4cHJlc3Npb24ubmFtZSk7CisgICAgICB9CisKKyAgICAgIHJldHVybiBp
bnN0YW5jZTsKKyAgICB9OworCisgICAgZnVuY3Rpb24gYWRkSWRlbnRpZmllcihsb2NhbHMsIGlk
ZW50aWZpZXIsIGluc3RhbmNlLCBuYW1lKSB7CisgICAgICBpZiAoIShsb2NhbHMgJiYgaXNPYmpl
Y3QobG9jYWxzLiRzY29wZSkpKSB7CisgICAgICAgIHRocm93IG1pbkVycignJGNvbnRyb2xsZXIn
KSgnbm9zY3AnLAorICAgICAgICAgICJDYW5ub3QgZXhwb3J0IGNvbnRyb2xsZXIgJ3swfScgYXMg
J3sxfSchIE5vICRzY29wZSBvYmplY3QgcHJvdmlkZWQgdmlhIGBsb2NhbHNgLiIsCisgICAgICAg
ICAgbmFtZSwgaWRlbnRpZmllcik7CisgICAgICB9CisKKyAgICAgIGxvY2Fscy4kc2NvcGVbaWRl
bnRpZmllcl0gPSBpbnN0YW5jZTsKKyAgICB9CisgIH1dOworfQorCisvKioKKyAqIEBuZ2RvYyBz
ZXJ2aWNlCisgKiBAbmFtZSAkZG9jdW1lbnQKKyAqIEByZXF1aXJlcyAkd2luZG93CisgKgorICog
QGRlc2NyaXB0aW9uCisgKiBBIHtAbGluayBhbmd1bGFyLmVsZW1lbnQgalF1ZXJ5IG9yIGpxTGl0
ZX0gd3JhcHBlciBmb3IgdGhlIGJyb3dzZXIncyBgd2luZG93LmRvY3VtZW50YCBvYmplY3QuCisg
KgorICogQGV4YW1wbGUKKyAgIDxleGFtcGxlIG1vZHVsZT0iZG9jdW1lbnRFeGFtcGxlIj4KKyAg
ICAgPGZpbGUgbmFtZT0iaW5kZXguaHRtbCI+CisgICAgICAgPGRpdiBuZy1jb250cm9sbGVyPSJF
eGFtcGxlQ29udHJvbGxlciI+CisgICAgICAgICA8cD4kZG9jdW1lbnQgdGl0bGU6IDxiIG5nLWJp
bmQ9InRpdGxlIj48L2I+PC9wPgorICAgICAgICAgPHA+d2luZG93LmRvY3VtZW50IHRpdGxlOiA8
YiBuZy1iaW5kPSJ3aW5kb3dUaXRsZSI+PC9iPjwvcD4KKyAgICAgICA8L2Rpdj4KKyAgICAgPC9m
aWxlPgorICAgICA8ZmlsZSBuYW1lPSJzY3JpcHQuanMiPgorICAgICAgIGFuZ3VsYXIubW9kdWxl
KCdkb2N1bWVudEV4YW1wbGUnLCBbXSkKKyAgICAgICAgIC5jb250cm9sbGVyKCdFeGFtcGxlQ29u
dHJvbGxlcicsIFsnJHNjb3BlJywgJyRkb2N1bWVudCcsIGZ1bmN0aW9uKCRzY29wZSwgJGRvY3Vt
ZW50KSB7CisgICAgICAgICAgICRzY29wZS50aXRsZSA9ICRkb2N1bWVudFswXS50aXRsZTsKKyAg
ICAgICAgICAgJHNjb3BlLndpbmRvd1RpdGxlID0gYW5ndWxhci5lbGVtZW50KHdpbmRvdy5kb2N1
bWVudClbMF0udGl0bGU7CisgICAgICAgICB9XSk7CisgICAgIDwvZmlsZT4KKyAgIDwvZXhhbXBs
ZT4KKyAqLworZnVuY3Rpb24gJERvY3VtZW50UHJvdmlkZXIoKSB7CisgIHRoaXMuJGdldCA9IFsn
JHdpbmRvdycsIGZ1bmN0aW9uKHdpbmRvdykgeworICAgIHJldHVybiBqcUxpdGUod2luZG93LmRv
Y3VtZW50KTsKKyAgfV07Cit9CisKKy8qKgorICogQG5nZG9jIHNlcnZpY2UKKyAqIEBuYW1lICRl
eGNlcHRpb25IYW5kbGVyCisgKiBAcmVxdWlyZXMgbmcuJGxvZworICoKKyAqIEBkZXNjcmlwdGlv
bgorICogQW55IHVuY2F1Z2h0IGV4Y2VwdGlvbiBpbiBhbmd1bGFyIGV4cHJlc3Npb25zIGlzIGRl
bGVnYXRlZCB0byB0aGlzIHNlcnZpY2UuCisgKiBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBz
aW1wbHkgZGVsZWdhdGVzIHRvIGAkbG9nLmVycm9yYCB3aGljaCBsb2dzIGl0IGludG8KKyAqIHRo
ZSBicm93c2VyIGNvbnNvbGUuCisgKgorICogSW4gdW5pdCB0ZXN0cywgaWYgYGFuZ3VsYXItbW9j
a3MuanNgIGlzIGxvYWRlZCwgdGhpcyBzZXJ2aWNlIGlzIG92ZXJyaWRkZW4gYnkKKyAqIHtAbGlu
ayBuZ01vY2suJGV4Y2VwdGlvbkhhbmRsZXIgbW9jayAkZXhjZXB0aW9uSGFuZGxlcn0gd2hpY2gg
YWlkcyBpbiB0ZXN0aW5nLgorICoKKyAqICMjIEV4YW1wbGU6CisgKgorICogYGBganMKKyAqICAg
YW5ndWxhci5tb2R1bGUoJ2V4Y2VwdGlvbk92ZXJyaWRlJywgW10pLmZhY3RvcnkoJyRleGNlcHRp
b25IYW5kbGVyJywgZnVuY3Rpb24oKSB7CisgKiAgICAgcmV0dXJuIGZ1bmN0aW9uKGV4Y2VwdGlv
biwgY2F1c2UpIHsKKyAqICAgICAgIGV4Y2VwdGlvbi5tZXNzYWdlICs9ICcgKGNhdXNlZCBieSAi
JyArIGNhdXNlICsgJyIpJzsKKyAqICAgICAgIHRocm93IGV4Y2VwdGlvbjsKKyAqICAgICB9Owor
ICogICB9KTsKKyAqIGBgYAorICoKKyAqIFRoaXMgZXhhbXBsZSB3aWxsIG92ZXJyaWRlIHRoZSBu
b3JtYWwgYWN0aW9uIG9mIGAkZXhjZXB0aW9uSGFuZGxlcmAsIHRvIG1ha2UgYW5ndWxhcgorICog
ZXhjZXB0aW9ucyBmYWlsIGhhcmQgd2hlbiB0aGV5IGhhcHBlbiwgaW5zdGVhZCBvZiBqdXN0IGxv
Z2dpbmcgdG8gdGhlIGNvbnNvbGUuCisgKgorICogPGhyIC8+CisgKiBOb3RlLCB0aGF0IGNvZGUg
ZXhlY3V0ZWQgaW4gZXZlbnQtbGlzdGVuZXJzIChldmVuIHRob3NlIHJlZ2lzdGVyZWQgdXNpbmcg
anFMaXRlJ3MgYG9uYC9gYmluZGAKKyAqIG1ldGhvZHMpIGRvZXMgbm90IGRlbGVnYXRlIGV4Y2Vw
dGlvbnMgdG8gdGhlIHtAbGluayBuZy4kZXhjZXB0aW9uSGFuZGxlciAkZXhjZXB0aW9uSGFuZGxl
cn0KKyAqICh1bmxlc3MgZXhlY3V0ZWQgZHVyaW5nIGEgZGlnZXN0KS4KKyAqCisgKiBJZiB5b3Ug
d2lzaCwgeW91IGNhbiBtYW51YWxseSBkZWxlZ2F0ZSBleGNlcHRpb25zLCBlLmcuCisgKiBgdHJ5
IHsgLi4uIH0gY2F0Y2goZSkgeyAkZXhjZXB0aW9uSGFuZGxlcihlKTsgfWAKKyAqCisgKiBAcGFy
YW0ge0Vycm9yfSBleGNlcHRpb24gRXhjZXB0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXJyb3Iu
CisgKiBAcGFyYW0ge3N0cmluZz19IGNhdXNlIG9wdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IHRo
ZSBjb250ZXh0IGluIHdoaWNoCisgKiAgICAgICB0aGUgZXJyb3Igd2FzIHRocm93bi4KKyAqCisg
Ki8KK2Z1bmN0aW9uICRFeGNlcHRpb25IYW5kbGVyUHJvdmlkZXIoKSB7CisgIHRoaXMuJGdldCA9
IFsnJGxvZycsIGZ1bmN0aW9uKCRsb2cpIHsKKyAgICByZXR1cm4gZnVuY3Rpb24oZXhjZXB0aW9u
LCBjYXVzZSkgeworICAgICAgJGxvZy5lcnJvci5hcHBseSgkbG9nLCBhcmd1bWVudHMpOworICAg
IH07CisgIH1dOworfQorCit2YXIgQVBQTElDQVRJT05fSlNPTiA9ICdhcHBsaWNhdGlvbi9qc29u
JzsKK3ZhciBDT05URU5UX1RZUEVfQVBQTElDQVRJT05fSlNPTiA9IHsnQ29udGVudC1UeXBlJzog
QVBQTElDQVRJT05fSlNPTiArICc7Y2hhcnNldD11dGYtOCd9OwordmFyIEpTT05fU1RBUlQgPSAv
XlxbfF5ceyg/IVx7KS87Cit2YXIgSlNPTl9FTkRTID0geworICAnWyc6IC9dJC8sCisgICd7Jzog
L30kLworfTsKK3ZhciBKU09OX1BST1RFQ1RJT05fUFJFRklYID0gL15cKVxdXH0nLD9cbi87CisK
K2Z1bmN0aW9uIHNlcmlhbGl6ZVZhbHVlKHYpIHsKKyAgaWYgKGlzT2JqZWN0KHYpKSB7CisgICAg
cmV0dXJuIGlzRGF0ZSh2KSA/IHYudG9JU09TdHJpbmcoKSA6IHRvSnNvbih2KTsKKyAgfQorICBy
ZXR1cm4gdjsKK30KKworCitmdW5jdGlvbiAkSHR0cFBhcmFtU2VyaWFsaXplclByb3ZpZGVyKCkg
eworICAvKioKKyAgICogQG5nZG9jIHNlcnZpY2UKKyAgICogQG5hbWUgJGh0dHBQYXJhbVNlcmlh
bGl6ZXIKKyAgICogQGRlc2NyaXB0aW9uCisgICAqCisgICAqIERlZmF1bHQge0BsaW5rICRodHRw
IGAkaHR0cGB9IHBhcmFtcyBzZXJpYWxpemVyIHRoYXQgY29udmVydHMgb2JqZWN0cyB0byBzdHJp
bmdzCisgICAqIGFjY29yZGluZyB0byB0aGUgZm9sbG93aW5nIHJ1bGVzOgorICAgKgorICAgKiAq
IGB7J2Zvbyc6ICdiYXInfWAgcmVzdWx0cyBpbiBgZm9vPWJhcmAKKyAgICogKiBgeydmb28nOiBE
YXRlLm5vdygpfWAgcmVzdWx0cyBpbiBgZm9vPTIwMTUtMDQtMDFUMDklM0E1MCUzQTQ5LjI2Mlpg
IChgdG9JU09TdHJpbmcoKWAgYW5kIGVuY29kZWQgcmVwcmVzZW50YXRpb24gb2YgYSBEYXRlIG9i
amVjdCkKKyAgICogKiBgeydmb28nOiBbJ2JhcicsICdiYXonXX1gIHJlc3VsdHMgaW4gYGZvbz1i
YXImZm9vPWJhemAgKHJlcGVhdGVkIGtleSBmb3IgZWFjaCBhcnJheSBlbGVtZW50KQorICAgKiAq
IGB7J2Zvbyc6IHsnYmFyJzonYmF6J319YCByZXN1bHRzIGluIGBmb289JTdCJTIyYmFyJTIyJTNB
JTIyYmF6JTIyJTdEImAgKHN0cmluZ2lmaWVkIGFuZCBlbmNvZGVkIHJlcHJlc2VudGF0aW9uIG9m
IGFuIG9iamVjdCkKKyAgICoKKyAgICogTm90ZSB0aGF0IHNlcmlhbGl6ZXIgd2lsbCBzb3J0IHRo
ZSByZXF1ZXN0IHBhcmFtZXRlcnMgYWxwaGFiZXRpY2FsbHkuCisgICAqICovCisKKyAgdGhpcy4k
Z2V0ID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uIG5nUGFyYW1TZXJpYWxpemVy
KHBhcmFtcykgeworICAgICAgaWYgKCFwYXJhbXMpIHJldHVybiAnJzsKKyAgICAgIHZhciBwYXJ0
cyA9IFtdOworICAgICAgZm9yRWFjaFNvcnRlZChwYXJhbXMsIGZ1bmN0aW9uKHZhbHVlLCBrZXkp
IHsKKyAgICAgICAgaWYgKHZhbHVlID09PSBudWxsIHx8IGlzVW5kZWZpbmVkKHZhbHVlKSkgcmV0
dXJuOworICAgICAgICBpZiAoaXNBcnJheSh2YWx1ZSkpIHsKKyAgICAgICAgICBmb3JFYWNoKHZh
bHVlLCBmdW5jdGlvbih2LCBrKSB7CisgICAgICAgICAgICBwYXJ0cy5wdXNoKGVuY29kZVVyaVF1
ZXJ5KGtleSkgICsgJz0nICsgZW5jb2RlVXJpUXVlcnkoc2VyaWFsaXplVmFsdWUodikpKTsKKyAg
ICAgICAgICB9KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBwYXJ0cy5wdXNoKGVuY29k
ZVVyaVF1ZXJ5KGtleSkgKyAnPScgKyBlbmNvZGVVcmlRdWVyeShzZXJpYWxpemVWYWx1ZSh2YWx1
ZSkpKTsKKyAgICAgICAgfQorICAgICAgfSk7CisKKyAgICAgIHJldHVybiBwYXJ0cy5qb2luKCcm
Jyk7CisgICAgfTsKKyAgfTsKK30KKworZnVuY3Rpb24gJEh0dHBQYXJhbVNlcmlhbGl6ZXJKUUxp
a2VQcm92aWRlcigpIHsKKyAgLyoqCisgICAqIEBuZ2RvYyBzZXJ2aWNlCisgICAqIEBuYW1lICRo
dHRwUGFyYW1TZXJpYWxpemVySlFMaWtlCisgICAqIEBkZXNjcmlwdGlvbgorICAgKgorICAgKiBB
bHRlcm5hdGl2ZSB7QGxpbmsgJGh0dHAgYCRodHRwYH0gcGFyYW1zIHNlcmlhbGl6ZXIgdGhhdCBm
b2xsb3dzCisgICAqIGpRdWVyeSdzIFtgcGFyYW0oKWBdKGh0dHA6Ly9hcGkuanF1ZXJ5LmNvbS9q
cXVlcnkucGFyYW0vKSBtZXRob2QgbG9naWMuCisgICAqIFRoZSBzZXJpYWxpemVyIHdpbGwgYWxz
byBzb3J0IHRoZSBwYXJhbXMgYWxwaGFiZXRpY2FsbHkuCisgICAqCisgICAqIFRvIHVzZSBpdCBm
b3Igc2VyaWFsaXppbmcgYCRodHRwYCByZXF1ZXN0IHBhcmFtZXRlcnMsIHNldCBpdCBhcyB0aGUg
YHBhcmFtU2VyaWFsaXplcmAgcHJvcGVydHk6CisgICAqCisgICAqIGBgYGpzCisgICAqICRodHRw
KHsKKyAgICogICB1cmw6IG15VXJsLAorICAgKiAgIG1ldGhvZDogJ0dFVCcsCisgICAqICAgcGFy
YW1zOiBteVBhcmFtcywKKyAgICogICBwYXJhbVNlcmlhbGl6ZXI6ICckaHR0cFBhcmFtU2VyaWFs
aXplckpRTGlrZScKKyAgICogfSk7CisgICAqIGBgYAorICAgKgorICAgKiBJdCBpcyBhbHNvIHBv
c3NpYmxlIHRvIHNldCBpdCBhcyB0aGUgZGVmYXVsdCBgcGFyYW1TZXJpYWxpemVyYCBpbiB0aGUK
KyAgICoge0BsaW5rICRodHRwUHJvdmlkZXIjZGVmYXVsdHMgYCRodHRwUHJvdmlkZXJgfS4KKyAg
ICoKKyAgICogQWRkaXRpb25hbGx5LCB5b3UgY2FuIGluamVjdCB0aGUgc2VyaWFsaXplciBhbmQg
dXNlIGl0IGV4cGxpY2l0bHksIGZvciBleGFtcGxlIHRvIHNlcmlhbGl6ZQorICAgKiBmb3JtIGRh
dGEgZm9yIHN1Ym1pc3Npb246CisgICAqCisgICAqIGBgYGpzCisgICAqIC5jb250cm9sbGVyKGZ1
bmN0aW9uKCRodHRwLCAkaHR0cFBhcmFtU2VyaWFsaXplckpRTGlrZSkgeworICAgKiAgIC8vLi4u
CisgICAqCisgICAqICAgJGh0dHAoeworICAgKiAgICAgdXJsOiBteVVybCwKKyAgICogICAgIG1l
dGhvZDogJ1BPU1QnLAorICAgKiAgICAgZGF0YTogJGh0dHBQYXJhbVNlcmlhbGl6ZXJKUUxpa2Uo
bXlEYXRhKSwKKyAgICogICAgIGhlYWRlcnM6IHsKKyAgICogICAgICAgJ0NvbnRlbnQtVHlwZSc6
ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnCisgICAqICAgICB9CisgICAqICAg
fSk7CisgICAqCisgICAqIH0pOworICAgKiBgYGAKKyAgICoKKyAgICogKi8KKyAgdGhpcy4kZ2V0
ID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uIGpRdWVyeUxpa2VQYXJhbVNlcmlh
bGl6ZXIocGFyYW1zKSB7CisgICAgICBpZiAoIXBhcmFtcykgcmV0dXJuICcnOworICAgICAgdmFy
IHBhcnRzID0gW107CisgICAgICBzZXJpYWxpemUocGFyYW1zLCAnJywgdHJ1ZSk7CisgICAgICBy
ZXR1cm4gcGFydHMuam9pbignJicpOworCisgICAgICBmdW5jdGlvbiBzZXJpYWxpemUodG9TZXJp
YWxpemUsIHByZWZpeCwgdG9wTGV2ZWwpIHsKKyAgICAgICAgaWYgKHRvU2VyaWFsaXplID09PSBu
dWxsIHx8IGlzVW5kZWZpbmVkKHRvU2VyaWFsaXplKSkgcmV0dXJuOworICAgICAgICBpZiAoaXNB
cnJheSh0b1NlcmlhbGl6ZSkpIHsKKyAgICAgICAgICBmb3JFYWNoKHRvU2VyaWFsaXplLCBmdW5j
dGlvbih2YWx1ZSkgeworICAgICAgICAgICAgc2VyaWFsaXplKHZhbHVlLCBwcmVmaXggKyAnW10n
KTsKKyAgICAgICAgICB9KTsKKyAgICAgICAgfSBlbHNlIGlmIChpc09iamVjdCh0b1NlcmlhbGl6
ZSkgJiYgIWlzRGF0ZSh0b1NlcmlhbGl6ZSkpIHsKKyAgICAgICAgICBmb3JFYWNoU29ydGVkKHRv
U2VyaWFsaXplLCBmdW5jdGlvbih2YWx1ZSwga2V5KSB7CisgICAgICAgICAgICBzZXJpYWxpemUo
dmFsdWUsIHByZWZpeCArCisgICAgICAgICAgICAgICAgKHRvcExldmVsID8gJycgOiAnWycpICsK
KyAgICAgICAgICAgICAgICBrZXkgKworICAgICAgICAgICAgICAgICh0b3BMZXZlbCA/ICcnIDog
J10nKSk7CisgICAgICAgICAgfSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgcGFydHMu
cHVzaChlbmNvZGVVcmlRdWVyeShwcmVmaXgpICsgJz0nICsgZW5jb2RlVXJpUXVlcnkoc2VyaWFs
aXplVmFsdWUodG9TZXJpYWxpemUpKSk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9OworICB9
OworfQorCitmdW5jdGlvbiBkZWZhdWx0SHR0cFJlc3BvbnNlVHJhbnNmb3JtKGRhdGEsIGhlYWRl
cnMpIHsKKyAgaWYgKGlzU3RyaW5nKGRhdGEpKSB7CisgICAgLy8gU3RyaXAganNvbiB2dWxuZXJh
YmlsaXR5IHByb3RlY3Rpb24gcHJlZml4IGFuZCB0cmltIHdoaXRlc3BhY2UKKyAgICB2YXIgdGVt
cERhdGEgPSBkYXRhLnJlcGxhY2UoSlNPTl9QUk9URUNUSU9OX1BSRUZJWCwgJycpLnRyaW0oKTsK
KworICAgIGlmICh0ZW1wRGF0YSkgeworICAgICAgdmFyIGNvbnRlbnRUeXBlID0gaGVhZGVycygn
Q29udGVudC1UeXBlJyk7CisgICAgICBpZiAoKGNvbnRlbnRUeXBlICYmIChjb250ZW50VHlwZS5p
bmRleE9mKEFQUExJQ0FUSU9OX0pTT04pID09PSAwKSkgfHwgaXNKc29uTGlrZSh0ZW1wRGF0YSkp
IHsKKyAgICAgICAgZGF0YSA9IGZyb21Kc29uKHRlbXBEYXRhKTsKKyAgICAgIH0KKyAgICB9Cisg
IH0KKworICByZXR1cm4gZGF0YTsKK30KKworZnVuY3Rpb24gaXNKc29uTGlrZShzdHIpIHsKKyAg
ICB2YXIganNvblN0YXJ0ID0gc3RyLm1hdGNoKEpTT05fU1RBUlQpOworICAgIHJldHVybiBqc29u
U3RhcnQgJiYgSlNPTl9FTkRTW2pzb25TdGFydFswXV0udGVzdChzdHIpOworfQorCisvKioKKyAq
IFBhcnNlIGhlYWRlcnMgaW50byBrZXkgdmFsdWUgb2JqZWN0CisgKgorICogQHBhcmFtIHtzdHJp
bmd9IGhlYWRlcnMgUmF3IGhlYWRlcnMgYXMgYSBzdHJpbmcKKyAqIEByZXR1cm5zIHtPYmplY3R9
IFBhcnNlZCBoZWFkZXJzIGFzIGtleSB2YWx1ZSBvYmplY3QKKyAqLworZnVuY3Rpb24gcGFyc2VI
ZWFkZXJzKGhlYWRlcnMpIHsKKyAgdmFyIHBhcnNlZCA9IGNyZWF0ZU1hcCgpLCBpOworCisgIGZ1
bmN0aW9uIGZpbGxJblBhcnNlZChrZXksIHZhbCkgeworICAgIGlmIChrZXkpIHsKKyAgICAgIHBh
cnNlZFtrZXldID0gcGFyc2VkW2tleV0gPyBwYXJzZWRba2V5XSArICcsICcgKyB2YWwgOiB2YWw7
CisgICAgfQorICB9CisKKyAgaWYgKGlzU3RyaW5nKGhlYWRlcnMpKSB7CisgICAgZm9yRWFjaCho
ZWFkZXJzLnNwbGl0KCdcbicpLCBmdW5jdGlvbihsaW5lKSB7CisgICAgICBpID0gbGluZS5pbmRl
eE9mKCc6Jyk7CisgICAgICBmaWxsSW5QYXJzZWQobG93ZXJjYXNlKHRyaW0obGluZS5zdWJzdHIo
MCwgaSkpKSwgdHJpbShsaW5lLnN1YnN0cihpICsgMSkpKTsKKyAgICB9KTsKKyAgfSBlbHNlIGlm
IChpc09iamVjdChoZWFkZXJzKSkgeworICAgIGZvckVhY2goaGVhZGVycywgZnVuY3Rpb24oaGVh
ZGVyVmFsLCBoZWFkZXJLZXkpIHsKKyAgICAgIGZpbGxJblBhcnNlZChsb3dlcmNhc2UoaGVhZGVy
S2V5KSwgdHJpbShoZWFkZXJWYWwpKTsKKyAgICB9KTsKKyAgfQorCisgIHJldHVybiBwYXJzZWQ7
Cit9CisKKworLyoqCisgKiBSZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCBwcm92aWRlcyBhY2Nlc3Mg
dG8gcGFyc2VkIGhlYWRlcnMuCisgKgorICogSGVhZGVycyBhcmUgbGF6eSBwYXJzZWQgd2hlbiBm
aXJzdCByZXF1ZXN0ZWQuCisgKiBAc2VlIHBhcnNlSGVhZGVycworICoKKyAqIEBwYXJhbSB7KHN0
cmluZ3xPYmplY3QpfSBoZWFkZXJzIEhlYWRlcnMgdG8gcHJvdmlkZSBhY2Nlc3MgdG8uCisgKiBA
cmV0dXJucyB7ZnVuY3Rpb24oc3RyaW5nPSl9IFJldHVybnMgYSBnZXR0ZXIgZnVuY3Rpb24gd2hp
Y2ggaWYgY2FsbGVkIHdpdGg6CisgKgorICogICAtIGlmIGNhbGxlZCB3aXRoIHNpbmdsZSBhbiBh
cmd1bWVudCByZXR1cm5zIGEgc2luZ2xlIGhlYWRlciB2YWx1ZSBvciBudWxsCisgKiAgIC0gaWYg
Y2FsbGVkIHdpdGggbm8gYXJndW1lbnRzIHJldHVybnMgYW4gb2JqZWN0IGNvbnRhaW5pbmcgYWxs
IGhlYWRlcnMuCisgKi8KK2Z1bmN0aW9uIGhlYWRlcnNHZXR0ZXIoaGVhZGVycykgeworICB2YXIg
aGVhZGVyc09iajsKKworICByZXR1cm4gZnVuY3Rpb24obmFtZSkgeworICAgIGlmICghaGVhZGVy
c09iaikgaGVhZGVyc09iaiA9ICBwYXJzZUhlYWRlcnMoaGVhZGVycyk7CisKKyAgICBpZiAobmFt
ZSkgeworICAgICAgdmFyIHZhbHVlID0gaGVhZGVyc09ialtsb3dlcmNhc2UobmFtZSldOworICAg
ICAgaWYgKHZhbHVlID09PSB2b2lkIDApIHsKKyAgICAgICAgdmFsdWUgPSBudWxsOworICAgICAg
fQorICAgICAgcmV0dXJuIHZhbHVlOworICAgIH0KKworICAgIHJldHVybiBoZWFkZXJzT2JqOwor
ICB9OworfQorCisKKy8qKgorICogQ2hhaW4gYWxsIGdpdmVuIGZ1bmN0aW9ucworICoKKyAqIFRo
aXMgZnVuY3Rpb24gaXMgdXNlZCBmb3IgYm90aCByZXF1ZXN0IGFuZCByZXNwb25zZSB0cmFuc2Zv
cm1pbmcKKyAqCisgKiBAcGFyYW0geyp9IGRhdGEgRGF0YSB0byB0cmFuc2Zvcm0uCisgKiBAcGFy
YW0ge2Z1bmN0aW9uKHN0cmluZz0pfSBoZWFkZXJzIEhUVFAgaGVhZGVycyBnZXR0ZXIgZm4uCisg
KiBAcGFyYW0ge251bWJlcn0gc3RhdHVzIEhUVFAgc3RhdHVzIGNvZGUgb2YgdGhlIHJlc3BvbnNl
LgorICogQHBhcmFtIHsoRnVuY3Rpb258QXJyYXkuPEZ1bmN0aW9uPil9IGZucyBGdW5jdGlvbiBv
ciBhbiBhcnJheSBvZiBmdW5jdGlvbnMuCisgKiBAcmV0dXJucyB7Kn0gVHJhbnNmb3JtZWQgZGF0
YS4KKyAqLworZnVuY3Rpb24gdHJhbnNmb3JtRGF0YShkYXRhLCBoZWFkZXJzLCBzdGF0dXMsIGZu
cykgeworICBpZiAoaXNGdW5jdGlvbihmbnMpKSB7CisgICAgcmV0dXJuIGZucyhkYXRhLCBoZWFk
ZXJzLCBzdGF0dXMpOworICB9CisKKyAgZm9yRWFjaChmbnMsIGZ1bmN0aW9uKGZuKSB7CisgICAg
ZGF0YSA9IGZuKGRhdGEsIGhlYWRlcnMsIHN0YXR1cyk7CisgIH0pOworCisgIHJldHVybiBkYXRh
OworfQorCisKK2Z1bmN0aW9uIGlzU3VjY2VzcyhzdGF0dXMpIHsKKyAgcmV0dXJuIDIwMCA8PSBz
dGF0dXMgJiYgc3RhdHVzIDwgMzAwOworfQorCisKKy8qKgorICogQG5nZG9jIHByb3ZpZGVyCisg
KiBAbmFtZSAkaHR0cFByb3ZpZGVyCisgKiBAZGVzY3JpcHRpb24KKyAqIFVzZSBgJGh0dHBQcm92
aWRlcmAgdG8gY2hhbmdlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIHRoZSB7QGxpbmsgbmcuJGh0
dHAgJGh0dHB9IHNlcnZpY2UuCisgKiAqLworZnVuY3Rpb24gJEh0dHBQcm92aWRlcigpIHsKKyAg
LyoqCisgICAqIEBuZ2RvYyBwcm9wZXJ0eQorICAgKiBAbmFtZSAkaHR0cFByb3ZpZGVyI2RlZmF1
bHRzCisgICAqIEBkZXNjcmlwdGlvbgorICAgKgorICAgKiBPYmplY3QgY29udGFpbmluZyBkZWZh
dWx0IHZhbHVlcyBmb3IgYWxsIHtAbGluayBuZy4kaHR0cCAkaHR0cH0gcmVxdWVzdHMuCisgICAq
CisgICAqIC0gKipgZGVmYXVsdHMuY2FjaGVgKiogLSB7T2JqZWN0fSAtIGFuIG9iamVjdCBidWls
dCB3aXRoIHtAbGluayBuZy4kY2FjaGVGYWN0b3J5IGAkY2FjaGVGYWN0b3J5YH0KKyAgICogdGhh
dCB3aWxsIHByb3ZpZGUgdGhlIGNhY2hlIGZvciBhbGwgcmVxdWVzdHMgd2hvIHNldCB0aGVpciBg
Y2FjaGVgIHByb3BlcnR5IHRvIGB0cnVlYC4KKyAgICogSWYgeW91IHNldCB0aGUgYGRlZmF1bHRz
LmNhY2hlID0gZmFsc2VgIHRoZW4gb25seSByZXF1ZXN0cyB0aGF0IHNwZWNpZnkgdGhlaXIgb3du
IGN1c3RvbQorICAgKiBjYWNoZSBvYmplY3Qgd2lsbCBiZSBjYWNoZWQuIFNlZSB7QGxpbmsgJGh0
dHAjY2FjaGluZyAkaHR0cCBDYWNoaW5nfSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICoKKyAg
ICogLSAqKmBkZWZhdWx0cy54c3JmQ29va2llTmFtZWAqKiAtIHtzdHJpbmd9IC0gTmFtZSBvZiBj
b29raWUgY29udGFpbmluZyB0aGUgWFNSRiB0b2tlbi4KKyAgICogRGVmYXVsdHMgdmFsdWUgaXMg
YCdYU1JGLVRPS0VOJ2AuCisgICAqCisgICAqIC0gKipgZGVmYXVsdHMueHNyZkhlYWRlck5hbWVg
KiogLSB7c3RyaW5nfSAtIE5hbWUgb2YgSFRUUCBoZWFkZXIgdG8gcG9wdWxhdGUgd2l0aCB0aGUK
KyAgICogWFNSRiB0b2tlbi4gRGVmYXVsdHMgdmFsdWUgaXMgYCdYLVhTUkYtVE9LRU4nYC4KKyAg
ICoKKyAgICogLSAqKmBkZWZhdWx0cy5oZWFkZXJzYCoqIC0ge09iamVjdH0gLSBEZWZhdWx0IGhl
YWRlcnMgZm9yIGFsbCAkaHR0cCByZXF1ZXN0cy4KKyAgICogUmVmZXIgdG8ge0BsaW5rIG5nLiRo
dHRwI3NldHRpbmctaHR0cC1oZWFkZXJzICRodHRwfSBmb3IgZG9jdW1lbnRhdGlvbiBvbgorICAg
KiBzZXR0aW5nIGRlZmF1bHQgaGVhZGVycy4KKyAgICogICAgIC0gKipgZGVmYXVsdHMuaGVhZGVy
cy5jb21tb25gKioKKyAgICogICAgIC0gKipgZGVmYXVsdHMuaGVhZGVycy5wb3N0YCoqCisgICAq
ICAgICAtICoqYGRlZmF1bHRzLmhlYWRlcnMucHV0YCoqCisgICAqICAgICAtICoqYGRlZmF1bHRz
LmhlYWRlcnMucGF0Y2hgKioKKyAgICoKKyAgICoKKyAgICogLSAqKmBkZWZhdWx0cy5wYXJhbVNl
cmlhbGl6ZXJgKiogLSBge3N0cmluZ3xmdW5jdGlvbihPYmplY3Q8c3RyaW5nLHN0cmluZz4pOnN0
cmluZ31gIC0gQSBmdW5jdGlvbgorICAgKiAgdXNlZCB0byB0aGUgcHJlcGFyZSBzdHJpbmcgcmVw
cmVzZW50YXRpb24gb2YgcmVxdWVzdCBwYXJhbWV0ZXJzIChzcGVjaWZpZWQgYXMgYW4gb2JqZWN0
KS4KKyAgICogIElmIHNwZWNpZmllZCBhcyBzdHJpbmcsIGl0IGlzIGludGVycHJldGVkIGFzIGEg
ZnVuY3Rpb24gcmVnaXN0ZXJlZCB3aXRoIHRoZSB7QGxpbmsgYXV0by4kaW5qZWN0b3IgJGluamVj
dG9yfS4KKyAgICogIERlZmF1bHRzIHRvIHtAbGluayBuZy4kaHR0cFBhcmFtU2VyaWFsaXplciAk
aHR0cFBhcmFtU2VyaWFsaXplcn0uCisgICAqCisgICAqKi8KKyAgdmFyIGRlZmF1bHRzID0gdGhp
cy5kZWZhdWx0cyA9IHsKKyAgICAvLyB0cmFuc2Zvcm0gaW5jb21pbmcgcmVzcG9uc2UgZGF0YQor
ICAgIHRyYW5zZm9ybVJlc3BvbnNlOiBbZGVmYXVsdEh0dHBSZXNwb25zZVRyYW5zZm9ybV0sCisK
KyAgICAvLyB0cmFuc2Zvcm0gb3V0Z29pbmcgcmVxdWVzdCBkYXRhCisgICAgdHJhbnNmb3JtUmVx
dWVzdDogW2Z1bmN0aW9uKGQpIHsKKyAgICAgIHJldHVybiBpc09iamVjdChkKSAmJiAhaXNGaWxl
KGQpICYmICFpc0Jsb2IoZCkgJiYgIWlzRm9ybURhdGEoZCkgPyB0b0pzb24oZCkgOiBkOworICAg
IH1dLAorCisgICAgLy8gZGVmYXVsdCBoZWFkZXJzCisgICAgaGVhZGVyczogeworICAgICAgY29t
bW9uOiB7CisgICAgICAgICdBY2NlcHQnOiAnYXBwbGljYXRpb24vanNvbiwgdGV4dC9wbGFpbiwg
Ki8qJworICAgICAgfSwKKyAgICAgIHBvc3Q6ICAgc2hhbGxvd0NvcHkoQ09OVEVOVF9UWVBFX0FQ
UExJQ0FUSU9OX0pTT04pLAorICAgICAgcHV0OiAgICBzaGFsbG93Q29weShDT05URU5UX1RZUEVf
QVBQTElDQVRJT05fSlNPTiksCisgICAgICBwYXRjaDogIHNoYWxsb3dDb3B5KENPTlRFTlRfVFlQ
RV9BUFBMSUNBVElPTl9KU09OKQorICAgIH0sCisKKyAgICB4c3JmQ29va2llTmFtZTogJ1hTUkYt
VE9LRU4nLAorICAgIHhzcmZIZWFkZXJOYW1lOiAnWC1YU1JGLVRPS0VOJywKKworICAgIHBhcmFt
U2VyaWFsaXplcjogJyRodHRwUGFyYW1TZXJpYWxpemVyJworICB9OworCisgIHZhciB1c2VBcHBs
eUFzeW5jID0gZmFsc2U7CisgIC8qKgorICAgKiBAbmdkb2MgbWV0aG9kCisgICAqIEBuYW1lICRo
dHRwUHJvdmlkZXIjdXNlQXBwbHlBc3luYworICAgKiBAZGVzY3JpcHRpb24KKyAgICoKKyAgICog
Q29uZmlndXJlICRodHRwIHNlcnZpY2UgdG8gY29tYmluZSBwcm9jZXNzaW5nIG9mIG11bHRpcGxl
IGh0dHAgcmVzcG9uc2VzIHJlY2VpdmVkIGF0IGFyb3VuZAorICAgKiB0aGUgc2FtZSB0aW1lIHZp
YSB7QGxpbmsgbmcuJHJvb3RTY29wZS5TY29wZSMkYXBwbHlBc3luYyAkcm9vdFNjb3BlLiRhcHBs
eUFzeW5jfS4gVGhpcyBjYW4gcmVzdWx0IGluCisgICAqIHNpZ25pZmljYW50IHBlcmZvcm1hbmNl
IGltcHJvdmVtZW50IGZvciBiaWdnZXIgYXBwbGljYXRpb25zIHRoYXQgbWFrZSBtYW55IEhUVFAg
cmVxdWVzdHMKKyAgICogY29uY3VycmVudGx5IChjb21tb24gZHVyaW5nIGFwcGxpY2F0aW9uIGJv
b3RzdHJhcCkuCisgICAqCisgICAqIERlZmF1bHRzIHRvIGZhbHNlLiBJZiBubyB2YWx1ZSBpcyBz
cGVjaWZpZWQsIHJldHVybnMgdGhlIGN1cnJlbnQgY29uZmlndXJlZCB2YWx1ZS4KKyAgICoKKyAg
ICogQHBhcmFtIHtib29sZWFuPX0gdmFsdWUgSWYgdHJ1ZSwgd2hlbiByZXF1ZXN0cyBhcmUgbG9h
ZGVkLCB0aGV5IHdpbGwgc2NoZWR1bGUgYSBkZWZlcnJlZAorICAgKiAgICAiYXBwbHkiIG9uIHRo
ZSBuZXh0IHRpY2ssIGdpdmluZyB0aW1lIGZvciBzdWJzZXF1ZW50IHJlcXVlc3RzIGluIGEgcm91
Z2hseSB+MTBtcyB3aW5kb3cKKyAgICogICAgdG8gbG9hZCBhbmQgc2hhcmUgdGhlIHNhbWUgZGln
ZXN0IGN5Y2xlLgorICAgKgorICAgKiBAcmV0dXJucyB7Ym9vbGVhbnxPYmplY3R9IElmIGEgdmFs
dWUgaXMgc3BlY2lmaWVkLCByZXR1cm5zIHRoZSAkaHR0cFByb3ZpZGVyIGZvciBjaGFpbmluZy4K
KyAgICogICAgb3RoZXJ3aXNlLCByZXR1cm5zIHRoZSBjdXJyZW50IGNvbmZpZ3VyZWQgdmFsdWUu
CisgICAqKi8KKyAgdGhpcy51c2VBcHBseUFzeW5jID0gZnVuY3Rpb24odmFsdWUpIHsKKyAgICBp
ZiAoaXNEZWZpbmVkKHZhbHVlKSkgeworICAgICAgdXNlQXBwbHlBc3luYyA9ICEhdmFsdWU7Cisg
ICAgICByZXR1cm4gdGhpczsKKyAgICB9CisgICAgcmV0dXJuIHVzZUFwcGx5QXN5bmM7CisgIH07
CisKKyAgLyoqCisgICAqIEBuZ2RvYyBwcm9wZXJ0eQorICAgKiBAbmFtZSAkaHR0cFByb3ZpZGVy
I2ludGVyY2VwdG9ycworICAgKiBAZGVzY3JpcHRpb24KKyAgICoKKyAgICogQXJyYXkgY29udGFp
bmluZyBzZXJ2aWNlIGZhY3RvcmllcyBmb3IgYWxsIHN5bmNocm9ub3VzIG9yIGFzeW5jaHJvbm91
cyB7QGxpbmsgbmcuJGh0dHAgJGh0dHB9CisgICAqIHByZS1wcm9jZXNzaW5nIG9mIHJlcXVlc3Qg
b3IgcG9zdHByb2Nlc3Npbmcgb2YgcmVzcG9uc2VzLgorICAgKgorICAgKiBUaGVzZSBzZXJ2aWNl
IGZhY3RvcmllcyBhcmUgb3JkZXJlZCBieSByZXF1ZXN0LCBpLmUuIHRoZXkgYXJlIGFwcGxpZWQg
aW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhlCisgICAqIGFycmF5LCBvbiByZXF1ZXN0LCBidXQgcmV2
ZXJzZSBvcmRlciwgb24gcmVzcG9uc2UuCisgICAqCisgICAqIHtAbGluayBuZy4kaHR0cCNpbnRl
cmNlcHRvcnMgSW50ZXJjZXB0b3JzIGRldGFpbGVkIGluZm99CisgICAqKi8KKyAgdmFyIGludGVy
Y2VwdG9yRmFjdG9yaWVzID0gdGhpcy5pbnRlcmNlcHRvcnMgPSBbXTsKKworICB0aGlzLiRnZXQg
PSBbJyRodHRwQmFja2VuZCcsICckJGNvb2tpZVJlYWRlcicsICckY2FjaGVGYWN0b3J5JywgJyRy
b290U2NvcGUnLCAnJHEnLCAnJGluamVjdG9yJywKKyAgICAgIGZ1bmN0aW9uKCRodHRwQmFja2Vu
ZCwgJCRjb29raWVSZWFkZXIsICRjYWNoZUZhY3RvcnksICRyb290U2NvcGUsICRxLCAkaW5qZWN0
b3IpIHsKKworICAgIHZhciBkZWZhdWx0Q2FjaGUgPSAkY2FjaGVGYWN0b3J5KCckaHR0cCcpOwor
CisgICAgLyoqCisgICAgICogTWFrZSBzdXJlIHRoYXQgZGVmYXVsdCBwYXJhbSBzZXJpYWxpemVy
IGlzIGV4cG9zZWQgYXMgYSBmdW5jdGlvbgorICAgICAqLworICAgIGRlZmF1bHRzLnBhcmFtU2Vy
aWFsaXplciA9IGlzU3RyaW5nKGRlZmF1bHRzLnBhcmFtU2VyaWFsaXplcikgPworICAgICAgJGlu
amVjdG9yLmdldChkZWZhdWx0cy5wYXJhbVNlcmlhbGl6ZXIpIDogZGVmYXVsdHMucGFyYW1TZXJp
YWxpemVyOworCisgICAgLyoqCisgICAgICogSW50ZXJjZXB0b3JzIHN0b3JlZCBpbiByZXZlcnNl
IG9yZGVyLiBJbm5lciBpbnRlcmNlcHRvcnMgYmVmb3JlIG91dGVyIGludGVyY2VwdG9ycy4KKyAg
ICAgKiBUaGUgcmV2ZXJzYWwgaXMgbmVlZGVkIHNvIHRoYXQgd2UgY2FuIGJ1aWxkIHVwIHRoZSBp
bnRlcmNlcHRpb24gY2hhaW4gYXJvdW5kIHRoZQorICAgICAqIHNlcnZlciByZXF1ZXN0LgorICAg
ICAqLworICAgIHZhciByZXZlcnNlZEludGVyY2VwdG9ycyA9IFtdOworCisgICAgZm9yRWFjaChp
bnRlcmNlcHRvckZhY3RvcmllcywgZnVuY3Rpb24oaW50ZXJjZXB0b3JGYWN0b3J5KSB7CisgICAg
ICByZXZlcnNlZEludGVyY2VwdG9ycy51bnNoaWZ0KGlzU3RyaW5nKGludGVyY2VwdG9yRmFjdG9y
eSkKKyAgICAgICAgICA/ICRpbmplY3Rvci5nZXQoaW50ZXJjZXB0b3JGYWN0b3J5KSA6ICRpbmpl
Y3Rvci5pbnZva2UoaW50ZXJjZXB0b3JGYWN0b3J5KSk7CisgICAgfSk7CisKKyAgICAvKioKKyAg
ICAgKiBAbmdkb2Mgc2VydmljZQorICAgICAqIEBraW5kIGZ1bmN0aW9uCisgICAgICogQG5hbWUg
JGh0dHAKKyAgICAgKiBAcmVxdWlyZXMgbmcuJGh0dHBCYWNrZW5kCisgICAgICogQHJlcXVpcmVz
ICRjYWNoZUZhY3RvcnkKKyAgICAgKiBAcmVxdWlyZXMgJHJvb3RTY29wZQorICAgICAqIEByZXF1
aXJlcyAkcQorICAgICAqIEByZXF1aXJlcyAkaW5qZWN0b3IKKyAgICAgKgorICAgICAqIEBkZXNj
cmlwdGlvbgorICAgICAqIFRoZSBgJGh0dHBgIHNlcnZpY2UgaXMgYSBjb3JlIEFuZ3VsYXIgc2Vy
dmljZSB0aGF0IGZhY2lsaXRhdGVzIGNvbW11bmljYXRpb24gd2l0aCB0aGUgcmVtb3RlCisgICAg
ICogSFRUUCBzZXJ2ZXJzIHZpYSB0aGUgYnJvd3NlcidzIFtYTUxIdHRwUmVxdWVzdF0oaHR0cHM6
Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4veG1saHR0cHJlcXVlc3QpCisgICAgICogb2JqZWN0
IG9yIHZpYSBbSlNPTlBdKGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSlNPTlApLgorICAg
ICAqCisgICAgICogRm9yIHVuaXQgdGVzdGluZyBhcHBsaWNhdGlvbnMgdGhhdCB1c2UgYCRodHRw
YCBzZXJ2aWNlLCBzZWUKKyAgICAgKiB7QGxpbmsgbmdNb2NrLiRodHRwQmFja2VuZCAkaHR0cEJh
Y2tlbmQgbW9ja30uCisgICAgICoKKyAgICAgKiBGb3IgYSBoaWdoZXIgbGV2ZWwgb2YgYWJzdHJh
Y3Rpb24sIHBsZWFzZSBjaGVjayBvdXQgdGhlIHtAbGluayBuZ1Jlc291cmNlLiRyZXNvdXJjZQor
ICAgICAqICRyZXNvdXJjZX0gc2VydmljZS4KKyAgICAgKgorICAgICAqIFRoZSAkaHR0cCBBUEkg
aXMgYmFzZWQgb24gdGhlIHtAbGluayBuZy4kcSBkZWZlcnJlZC9wcm9taXNlIEFQSXN9IGV4cG9z
ZWQgYnkKKyAgICAgKiB0aGUgJHEgc2VydmljZS4gV2hpbGUgZm9yIHNpbXBsZSB1c2FnZSBwYXR0
ZXJucyB0aGlzIGRvZXNuJ3QgbWF0dGVyIG11Y2gsIGZvciBhZHZhbmNlZCB1c2FnZQorICAgICAq
IGl0IGlzIGltcG9ydGFudCB0byBmYW1pbGlhcml6ZSB5b3Vyc2VsZiB3aXRoIHRoZXNlIEFQSXMg
YW5kIHRoZSBndWFyYW50ZWVzIHRoZXkgcHJvdmlkZS4KKyAgICAgKgorICAgICAqCisgICAgICog
IyMgR2VuZXJhbCB1c2FnZQorICAgICAqIFRoZSBgJGh0dHBgIHNlcnZpY2UgaXMgYSBmdW5jdGlv
biB3aGljaCB0YWtlcyBhIHNpbmdsZSBhcmd1bWVudCDigJQgYSBjb25maWd1cmF0aW9uIG9iamVj
dCDigJQKKyAgICAgKiB0aGF0IGlzIHVzZWQgdG8gZ2VuZXJhdGUgYW4gSFRUUCByZXF1ZXN0IGFu
ZCByZXR1cm5zICBhIHtAbGluayBuZy4kcSBwcm9taXNlfQorICAgICAqIHdpdGggdHdvICRodHRw
IHNwZWNpZmljIG1ldGhvZHM6IGBzdWNjZXNzYCBhbmQgYGVycm9yYC4KKyAgICAgKgorICAgICAq
IGBgYGpzCisgICAgICogICAvLyBTaW1wbGUgR0VUIHJlcXVlc3QgZXhhbXBsZSA6CisgICAgICog
ICAkaHR0cC5nZXQoJy9zb21lVXJsJykuCisgICAgICogICAgIHN1Y2Nlc3MoZnVuY3Rpb24oZGF0
YSwgc3RhdHVzLCBoZWFkZXJzLCBjb25maWcpIHsKKyAgICAgKiAgICAgICAvLyB0aGlzIGNhbGxi
YWNrIHdpbGwgYmUgY2FsbGVkIGFzeW5jaHJvbm91c2x5CisgICAgICogICAgICAgLy8gd2hlbiB0
aGUgcmVzcG9uc2UgaXMgYXZhaWxhYmxlCisgICAgICogICAgIH0pLgorICAgICAqICAgICBlcnJv
cihmdW5jdGlvbihkYXRhLCBzdGF0dXMsIGhlYWRlcnMsIGNvbmZpZykgeworICAgICAqICAgICAg
IC8vIGNhbGxlZCBhc3luY2hyb25vdXNseSBpZiBhbiBlcnJvciBvY2N1cnMKKyAgICAgKiAgICAg
ICAvLyBvciBzZXJ2ZXIgcmV0dXJucyByZXNwb25zZSB3aXRoIGFuIGVycm9yIHN0YXR1cy4KKyAg
ICAgKiAgICAgfSk7CisgICAgICogYGBgCisgICAgICoKKyAgICAgKiBgYGBqcworICAgICAqICAg
Ly8gU2ltcGxlIFBPU1QgcmVxdWVzdCBleGFtcGxlIChwYXNzaW5nIGRhdGEpIDoKKyAgICAgKiAg
ICRodHRwLnBvc3QoJy9zb21lVXJsJywge21zZzonaGVsbG8gd29yZCEnfSkuCisgICAgICogICAg
IHN1Y2Nlc3MoZnVuY3Rpb24oZGF0YSwgc3RhdHVzLCBoZWFkZXJzLCBjb25maWcpIHsKKyAgICAg
KiAgICAgICAvLyB0aGlzIGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkIGFzeW5jaHJvbm91c2x5Cisg
ICAgICogICAgICAgLy8gd2hlbiB0aGUgcmVzcG9uc2UgaXMgYXZhaWxhYmxlCisgICAgICogICAg
IH0pLgorICAgICAqICAgICBlcnJvcihmdW5jdGlvbihkYXRhLCBzdGF0dXMsIGhlYWRlcnMsIGNv
bmZpZykgeworICAgICAqICAgICAgIC8vIGNhbGxlZCBhc3luY2hyb25vdXNseSBpZiBhbiBlcnJv
ciBvY2N1cnMKKyAgICAgKiAgICAgICAvLyBvciBzZXJ2ZXIgcmV0dXJucyByZXNwb25zZSB3aXRo
IGFuIGVycm9yIHN0YXR1cy4KKyAgICAgKiAgICAgfSk7CisgICAgICogYGBgCisgICAgICoKKyAg
ICAgKgorICAgICAqIFNpbmNlIHRoZSByZXR1cm5lZCB2YWx1ZSBvZiBjYWxsaW5nIHRoZSAkaHR0
cCBmdW5jdGlvbiBpcyBhIGBwcm9taXNlYCwgeW91IGNhbiBhbHNvIHVzZQorICAgICAqIHRoZSBg
dGhlbmAgbWV0aG9kIHRvIHJlZ2lzdGVyIGNhbGxiYWNrcywgYW5kIHRoZXNlIGNhbGxiYWNrcyB3
aWxsIHJlY2VpdmUgYSBzaW5nbGUgYXJndW1lbnQg4oCTCisgICAgICogYW4gb2JqZWN0IHJlcHJl
c2VudGluZyB0aGUgcmVzcG9uc2UuIFNlZSB0aGUgQVBJIHNpZ25hdHVyZSBhbmQgdHlwZSBpbmZv
IGJlbG93IGZvciBtb3JlCisgICAgICogZGV0YWlscy4KKyAgICAgKgorICAgICAqIEEgcmVzcG9u
c2Ugc3RhdHVzIGNvZGUgYmV0d2VlbiAyMDAgYW5kIDI5OSBpcyBjb25zaWRlcmVkIGEgc3VjY2Vz
cyBzdGF0dXMgYW5kCisgICAgICogd2lsbCByZXN1bHQgaW4gdGhlIHN1Y2Nlc3MgY2FsbGJhY2sg
YmVpbmcgY2FsbGVkLiBOb3RlIHRoYXQgaWYgdGhlIHJlc3BvbnNlIGlzIGEgcmVkaXJlY3QsCisg
ICAgICogWE1MSHR0cFJlcXVlc3Qgd2lsbCB0cmFuc3BhcmVudGx5IGZvbGxvdyBpdCwgbWVhbmlu
ZyB0aGF0IHRoZSBlcnJvciBjYWxsYmFjayB3aWxsIG5vdCBiZQorICAgICAqIGNhbGxlZCBmb3Ig
c3VjaCByZXNwb25zZXMuCisgICAgICoKKyAgICAgKiAjIyBXcml0aW5nIFVuaXQgVGVzdHMgdGhh
dCB1c2UgJGh0dHAKKyAgICAgKiBXaGVuIHVuaXQgdGVzdGluZyAodXNpbmcge0BsaW5rIG5nTW9j
ayBuZ01vY2t9KSwgaXQgaXMgbmVjZXNzYXJ5IHRvIGNhbGwKKyAgICAgKiB7QGxpbmsgbmdNb2Nr
LiRodHRwQmFja2VuZCNmbHVzaCAkaHR0cEJhY2tlbmQuZmx1c2goKX0gdG8gZmx1c2ggZWFjaCBw
ZW5kaW5nCisgICAgICogcmVxdWVzdCB1c2luZyB0cmFpbmVkIHJlc3BvbnNlcy4KKyAgICAgKgor
ICAgICAqIGBgYAorICAgICAqICRodHRwQmFja2VuZC5leHBlY3RHRVQoLi4uKTsKKyAgICAgKiAk
aHR0cC5nZXQoLi4uKTsKKyAgICAgKiAkaHR0cEJhY2tlbmQuZmx1c2goKTsKKyAgICAgKiBgYGAK
KyAgICAgKgorICAgICAqICMjIFNob3J0Y3V0IG1ldGhvZHMKKyAgICAgKgorICAgICAqIFNob3J0
Y3V0IG1ldGhvZHMgYXJlIGFsc28gYXZhaWxhYmxlLiBBbGwgc2hvcnRjdXQgbWV0aG9kcyByZXF1
aXJlIHBhc3NpbmcgaW4gdGhlIFVSTCwgYW5kCisgICAgICogcmVxdWVzdCBkYXRhIG11c3QgYmUg
cGFzc2VkIGluIGZvciBQT1NUL1BVVCByZXF1ZXN0cy4KKyAgICAgKgorICAgICAqIGBgYGpzCisg
ICAgICogICAkaHR0cC5nZXQoJy9zb21lVXJsJykuc3VjY2VzcyhzdWNjZXNzQ2FsbGJhY2spOwor
ICAgICAqICAgJGh0dHAucG9zdCgnL3NvbWVVcmwnLCBkYXRhKS5zdWNjZXNzKHN1Y2Nlc3NDYWxs
YmFjayk7CisgICAgICogYGBgCisgICAgICoKKyAgICAgKiBDb21wbGV0ZSBsaXN0IG9mIHNob3J0
Y3V0IG1ldGhvZHM6CisgICAgICoKKyAgICAgKiAtIHtAbGluayBuZy4kaHR0cCNnZXQgJGh0dHAu
Z2V0fQorICAgICAqIC0ge0BsaW5rIG5nLiRodHRwI2hlYWQgJGh0dHAuaGVhZH0KKyAgICAgKiAt
IHtAbGluayBuZy4kaHR0cCNwb3N0ICRodHRwLnBvc3R9CisgICAgICogLSB7QGxpbmsgbmcuJGh0
dHAjcHV0ICRodHRwLnB1dH0KKyAgICAgKiAtIHtAbGluayBuZy4kaHR0cCNkZWxldGUgJGh0dHAu
ZGVsZXRlfQorICAgICAqIC0ge0BsaW5rIG5nLiRodHRwI2pzb25wICRodHRwLmpzb25wfQorICAg
ICAqIC0ge0BsaW5rIG5nLiRodHRwI3BhdGNoICRodHRwLnBhdGNofQorICAgICAqCisgICAgICoK
KyAgICAgKiAjIyBTZXR0aW5nIEhUVFAgSGVhZGVycworICAgICAqCisgICAgICogVGhlICRodHRw
IHNlcnZpY2Ugd2lsbCBhdXRvbWF0aWNhbGx5IGFkZCBjZXJ0YWluIEhUVFAgaGVhZGVycyB0byBh
bGwgcmVxdWVzdHMuIFRoZXNlIGRlZmF1bHRzCisgICAgICogY2FuIGJlIGZ1bGx5IGNvbmZpZ3Vy
ZWQgYnkgYWNjZXNzaW5nIHRoZSBgJGh0dHBQcm92aWRlci5kZWZhdWx0cy5oZWFkZXJzYCBjb25m
aWd1cmF0aW9uCisgICAgICogb2JqZWN0LCB3aGljaCBjdXJyZW50bHkgY29udGFpbnMgdGhpcyBk
ZWZhdWx0IGNvbmZpZ3VyYXRpb246CisgICAgICoKKyAgICAgKiAtIGAkaHR0cFByb3ZpZGVyLmRl
ZmF1bHRzLmhlYWRlcnMuY29tbW9uYCAoaGVhZGVycyB0aGF0IGFyZSBjb21tb24gZm9yIGFsbCBy
ZXF1ZXN0cyk6CisgICAgICogICAtIGBBY2NlcHQ6IGFwcGxpY2F0aW9uL2pzb24sIHRleHQvcGxh
aW4sICogLyAqYAorICAgICAqIC0gYCRodHRwUHJvdmlkZXIuZGVmYXVsdHMuaGVhZGVycy5wb3N0
YDogKGhlYWRlciBkZWZhdWx0cyBmb3IgUE9TVCByZXF1ZXN0cykKKyAgICAgKiAgIC0gYENvbnRl
bnQtVHlwZTogYXBwbGljYXRpb24vanNvbmAKKyAgICAgKiAtIGAkaHR0cFByb3ZpZGVyLmRlZmF1
bHRzLmhlYWRlcnMucHV0YCAoaGVhZGVyIGRlZmF1bHRzIGZvciBQVVQgcmVxdWVzdHMpCisgICAg
ICogICAtIGBDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb25gCisgICAgICoKKyAgICAgKiBU
byBhZGQgb3Igb3ZlcndyaXRlIHRoZXNlIGRlZmF1bHRzLCBzaW1wbHkgYWRkIG9yIHJlbW92ZSBh
IHByb3BlcnR5IGZyb20gdGhlc2UgY29uZmlndXJhdGlvbgorICAgICAqIG9iamVjdHMuIFRvIGFk
ZCBoZWFkZXJzIGZvciBhbiBIVFRQIG1ldGhvZCBvdGhlciB0aGFuIFBPU1Qgb3IgUFVULCBzaW1w
bHkgYWRkIGEgbmV3IG9iamVjdAorICAgICAqIHdpdGggdGhlIGxvd2VyY2FzZWQgSFRUUCBtZXRo
b2QgbmFtZSBhcyB0aGUga2V5LCBlLmcuCisgICAgICogYCRodHRwUHJvdmlkZXIuZGVmYXVsdHMu
aGVhZGVycy5nZXQgPSB7ICdNeS1IZWFkZXInIDogJ3ZhbHVlJyB9YC4KKyAgICAgKgorICAgICAq
IFRoZSBkZWZhdWx0cyBjYW4gYWxzbyBiZSBzZXQgYXQgcnVudGltZSB2aWEgdGhlIGAkaHR0cC5k
ZWZhdWx0c2Agb2JqZWN0IGluIHRoZSBzYW1lCisgICAgICogZmFzaGlvbi4gRm9yIGV4YW1wbGU6
CisgICAgICoKKyAgICAgKiBgYGAKKyAgICAgKiBtb2R1bGUucnVuKGZ1bmN0aW9uKCRodHRwKSB7
CisgICAgICogICAkaHR0cC5kZWZhdWx0cy5oZWFkZXJzLmNvbW1vbi5BdXRob3JpemF0aW9uID0g
J0Jhc2ljIFltVmxjRHBpYjI5dycKKyAgICAgKiB9KTsKKyAgICAgKiBgYGAKKyAgICAgKgorICAg
ICAqIEluIGFkZGl0aW9uLCB5b3UgY2FuIHN1cHBseSBhIGBoZWFkZXJzYCBwcm9wZXJ0eSBpbiB0
aGUgY29uZmlnIG9iamVjdCBwYXNzZWQgd2hlbgorICAgICAqIGNhbGxpbmcgYCRodHRwKGNvbmZp
ZylgLCB3aGljaCBvdmVycmlkZXMgdGhlIGRlZmF1bHRzIHdpdGhvdXQgY2hhbmdpbmcgdGhlbSBn
bG9iYWxseS4KKyAgICAgKgorICAgICAqIFRvIGV4cGxpY2l0bHkgcmVtb3ZlIGEgaGVhZGVyIGF1
dG9tYXRpY2FsbHkgYWRkZWQgdmlhICRodHRwUHJvdmlkZXIuZGVmYXVsdHMuaGVhZGVycyBvbiBh
IHBlciByZXF1ZXN0IGJhc2lzLAorICAgICAqIFVzZSB0aGUgYGhlYWRlcnNgIHByb3BlcnR5LCBz
ZXR0aW5nIHRoZSBkZXNpcmVkIGhlYWRlciB0byBgdW5kZWZpbmVkYC4gRm9yIGV4YW1wbGU6Cisg
ICAgICoKKyAgICAgKiBgYGBqcworICAgICAqIHZhciByZXEgPSB7CisgICAgICogIG1ldGhvZDog
J1BPU1QnLAorICAgICAqICB1cmw6ICdodHRwOi8vZXhhbXBsZS5jb20nLAorICAgICAqICBoZWFk
ZXJzOiB7CisgICAgICogICAgJ0NvbnRlbnQtVHlwZSc6IHVuZGVmaW5lZAorICAgICAqICB9LAor
ICAgICAqICBkYXRhOiB7IHRlc3Q6ICd0ZXN0JyB9CisgICAgICogfQorICAgICAqCisgICAgICog
JGh0dHAocmVxKS5zdWNjZXNzKGZ1bmN0aW9uKCl7Li4ufSkuZXJyb3IoZnVuY3Rpb24oKXsuLi59
KTsKKyAgICAgKiBgYGAKKyAgICAgKgorICAgICAqICMjIFRyYW5zZm9ybWluZyBSZXF1ZXN0cyBh
bmQgUmVzcG9uc2VzCisgICAgICoKKyAgICAgKiBCb3RoIHJlcXVlc3RzIGFuZCByZXNwb25zZXMg
Y2FuIGJlIHRyYW5zZm9ybWVkIHVzaW5nIHRyYW5zZm9ybWF0aW9uIGZ1bmN0aW9uczogYHRyYW5z
Zm9ybVJlcXVlc3RgCisgICAgICogYW5kIGB0cmFuc2Zvcm1SZXNwb25zZWAuIFRoZXNlIHByb3Bl
cnRpZXMgY2FuIGJlIGEgc2luZ2xlIGZ1bmN0aW9uIHRoYXQgcmV0dXJucworICAgICAqIHRoZSB0
cmFuc2Zvcm1lZCB2YWx1ZSAoYGZ1bmN0aW9uKGRhdGEsIGhlYWRlcnNHZXR0ZXIsIHN0YXR1cylg
KSBvciBhbiBhcnJheSBvZiBzdWNoIHRyYW5zZm9ybWF0aW9uIGZ1bmN0aW9ucywKKyAgICAgKiB3
aGljaCBhbGxvd3MgeW91IHRvIGBwdXNoYCBvciBgdW5zaGlmdGAgYSBuZXcgdHJhbnNmb3JtYXRp
b24gZnVuY3Rpb24gaW50byB0aGUgdHJhbnNmb3JtYXRpb24gY2hhaW4uCisgICAgICoKKyAgICAg
KiAjIyMgRGVmYXVsdCBUcmFuc2Zvcm1hdGlvbnMKKyAgICAgKgorICAgICAqIFRoZSBgJGh0dHBQ
cm92aWRlcmAgcHJvdmlkZXIgYW5kIGAkaHR0cGAgc2VydmljZSBleHBvc2UgYGRlZmF1bHRzLnRy
YW5zZm9ybVJlcXVlc3RgIGFuZAorICAgICAqIGBkZWZhdWx0cy50cmFuc2Zvcm1SZXNwb25zZWAg
cHJvcGVydGllcy4gSWYgYSByZXF1ZXN0IGRvZXMgbm90IHByb3ZpZGUgaXRzIG93biB0cmFuc2Zv
cm1hdGlvbnMKKyAgICAgKiB0aGVuIHRoZXNlIHdpbGwgYmUgYXBwbGllZC4KKyAgICAgKgorICAg
ICAqIFlvdSBjYW4gYXVnbWVudCBvciByZXBsYWNlIHRoZSBkZWZhdWx0IHRyYW5zZm9ybWF0aW9u
cyBieSBtb2RpZnlpbmcgdGhlc2UgcHJvcGVydGllcyBieSBhZGRpbmcgdG8gb3IKKyAgICAgKiBy
ZXBsYWNpbmcgdGhlIGFycmF5LgorICAgICAqCisgICAgICogQW5ndWxhciBwcm92aWRlcyB0aGUg
Zm9sbG93aW5nIGRlZmF1bHQgdHJhbnNmb3JtYXRpb25zOgorICAgICAqCisgICAgICogUmVxdWVz
dCB0cmFuc2Zvcm1hdGlvbnMgKGAkaHR0cFByb3ZpZGVyLmRlZmF1bHRzLnRyYW5zZm9ybVJlcXVl
c3RgIGFuZCBgJGh0dHAuZGVmYXVsdHMudHJhbnNmb3JtUmVxdWVzdGApOgorICAgICAqCisgICAg
ICogLSBJZiB0aGUgYGRhdGFgIHByb3BlcnR5IG9mIHRoZSByZXF1ZXN0IGNvbmZpZ3VyYXRpb24g
b2JqZWN0IGNvbnRhaW5zIGFuIG9iamVjdCwgc2VyaWFsaXplIGl0CisgICAgICogICBpbnRvIEpT
T04gZm9ybWF0LgorICAgICAqCisgICAgICogUmVzcG9uc2UgdHJhbnNmb3JtYXRpb25zIChgJGh0
dHBQcm92aWRlci5kZWZhdWx0cy50cmFuc2Zvcm1SZXNwb25zZWAgYW5kIGAkaHR0cC5kZWZhdWx0
cy50cmFuc2Zvcm1SZXNwb25zZWApOgorICAgICAqCisgICAgICogIC0gSWYgWFNSRiBwcmVmaXgg
aXMgZGV0ZWN0ZWQsIHN0cmlwIGl0IChzZWUgU2VjdXJpdHkgQ29uc2lkZXJhdGlvbnMgc2VjdGlv
biBiZWxvdykuCisgICAgICogIC0gSWYgSlNPTiByZXNwb25zZSBpcyBkZXRlY3RlZCwgZGVzZXJp
YWxpemUgaXQgdXNpbmcgYSBKU09OIHBhcnNlci4KKyAgICAgKgorICAgICAqCisgICAgICogIyMj
IE92ZXJyaWRpbmcgdGhlIERlZmF1bHQgVHJhbnNmb3JtYXRpb25zIFBlciBSZXF1ZXN0CisgICAg
ICoKKyAgICAgKiBJZiB5b3Ugd2lzaCBvdmVycmlkZSB0aGUgcmVxdWVzdC9yZXNwb25zZSB0cmFu
c2Zvcm1hdGlvbnMgb25seSBmb3IgYSBzaW5nbGUgcmVxdWVzdCB0aGVuIHByb3ZpZGUKKyAgICAg
KiBgdHJhbnNmb3JtUmVxdWVzdGAgYW5kL29yIGB0cmFuc2Zvcm1SZXNwb25zZWAgcHJvcGVydGll
cyBvbiB0aGUgY29uZmlndXJhdGlvbiBvYmplY3QgcGFzc2VkCisgICAgICogaW50byBgJGh0dHBg
LgorICAgICAqCisgICAgICogTm90ZSB0aGF0IGlmIHlvdSBwcm92aWRlIHRoZXNlIHByb3BlcnRp
ZXMgb24gdGhlIGNvbmZpZyBvYmplY3QgdGhlIGRlZmF1bHQgdHJhbnNmb3JtYXRpb25zIHdpbGwg
YmUKKyAgICAgKiBvdmVyd3JpdHRlbi4gSWYgeW91IHdpc2ggdG8gYXVnbWVudCB0aGUgZGVmYXVs
dCB0cmFuc2Zvcm1hdGlvbnMgdGhlbiB5b3UgbXVzdCBpbmNsdWRlIHRoZW0gaW4geW91cgorICAg
ICAqIGxvY2FsIHRyYW5zZm9ybWF0aW9uIGFycmF5LgorICAgICAqCisgICAgICogVGhlIGZvbGxv
d2luZyBjb2RlIGRlbW9uc3RyYXRlcyBhZGRpbmcgYSBuZXcgcmVzcG9uc2UgdHJhbnNmb3JtYXRp
b24gdG8gYmUgcnVuIGFmdGVyIHRoZSBkZWZhdWx0IHJlc3BvbnNlCisgICAgICogdHJhbnNmb3Jt
YXRpb25zIGhhdmUgYmVlbiBydW4uCisgICAgICoKKyAgICAgKiBgYGBqcworICAgICAqIGZ1bmN0
aW9uIGFwcGVuZFRyYW5zZm9ybShkZWZhdWx0cywgdHJhbnNmb3JtKSB7CisgICAgICoKKyAgICAg
KiAgIC8vIFdlIGNhbid0IGd1YXJhbnRlZSB0aGF0IHRoZSBkZWZhdWx0IHRyYW5zZm9ybWF0aW9u
IGlzIGFuIGFycmF5CisgICAgICogICBkZWZhdWx0cyA9IGFuZ3VsYXIuaXNBcnJheShkZWZhdWx0
cykgPyBkZWZhdWx0cyA6IFtkZWZhdWx0c107CisgICAgICoKKyAgICAgKiAgIC8vIEFwcGVuZCB0
aGUgbmV3IHRyYW5zZm9ybWF0aW9uIHRvIHRoZSBkZWZhdWx0cworICAgICAqICAgcmV0dXJuIGRl
ZmF1bHRzLmNvbmNhdCh0cmFuc2Zvcm0pOworICAgICAqIH0KKyAgICAgKgorICAgICAqICRodHRw
KHsKKyAgICAgKiAgIHVybDogJy4uLicsCisgICAgICogICBtZXRob2Q6ICdHRVQnLAorICAgICAq
ICAgdHJhbnNmb3JtUmVzcG9uc2U6IGFwcGVuZFRyYW5zZm9ybSgkaHR0cC5kZWZhdWx0cy50cmFu
c2Zvcm1SZXNwb25zZSwgZnVuY3Rpb24odmFsdWUpIHsKKyAgICAgKiAgICAgcmV0dXJuIGRvVHJh
bnNmb3JtKHZhbHVlKTsKKyAgICAgKiAgIH0pCisgICAgICogfSk7CisgICAgICogYGBgCisgICAg
ICoKKyAgICAgKgorICAgICAqICMjIENhY2hpbmcKKyAgICAgKgorICAgICAqIFRvIGVuYWJsZSBj
YWNoaW5nLCBzZXQgdGhlIHJlcXVlc3QgY29uZmlndXJhdGlvbiBgY2FjaGVgIHByb3BlcnR5IHRv
IGB0cnVlYCAodG8gdXNlIGRlZmF1bHQKKyAgICAgKiBjYWNoZSkgb3IgdG8gYSBjdXN0b20gY2Fj
aGUgb2JqZWN0IChidWlsdCB3aXRoIHtAbGluayBuZy4kY2FjaGVGYWN0b3J5IGAkY2FjaGVGYWN0
b3J5YH0pLgorICAgICAqIFdoZW4gdGhlIGNhY2hlIGlzIGVuYWJsZWQsIGAkaHR0cGAgc3RvcmVz
IHRoZSByZXNwb25zZSBmcm9tIHRoZSBzZXJ2ZXIgaW4gdGhlIHNwZWNpZmllZAorICAgICAqIGNh
Y2hlLiBUaGUgbmV4dCB0aW1lIHRoZSBzYW1lIHJlcXVlc3QgaXMgbWFkZSwgdGhlIHJlc3BvbnNl
IGlzIHNlcnZlZCBmcm9tIHRoZSBjYWNoZSB3aXRob3V0CisgICAgICogc2VuZGluZyBhIHJlcXVl
c3QgdG8gdGhlIHNlcnZlci4KKyAgICAgKgorICAgICAqIE5vdGUgdGhhdCBldmVuIGlmIHRoZSBy
ZXNwb25zZSBpcyBzZXJ2ZWQgZnJvbSBjYWNoZSwgZGVsaXZlcnkgb2YgdGhlIGRhdGEgaXMgYXN5
bmNocm9ub3VzIGluCisgICAgICogdGhlIHNhbWUgd2F5IHRoYXQgcmVhbCByZXF1ZXN0cyBhcmUu
CisgICAgICoKKyAgICAgKiBJZiB0aGVyZSBhcmUgbXVsdGlwbGUgR0VUIHJlcXVlc3RzIGZvciB0
aGUgc2FtZSBVUkwgdGhhdCBzaG91bGQgYmUgY2FjaGVkIHVzaW5nIHRoZSBzYW1lCisgICAgICog
Y2FjaGUsIGJ1dCB0aGUgY2FjaGUgaXMgbm90IHBvcHVsYXRlZCB5ZXQsIG9ubHkgb25lIHJlcXVl
c3QgdG8gdGhlIHNlcnZlciB3aWxsIGJlIG1hZGUgYW5kCisgICAgICogdGhlIHJlbWFpbmluZyBy
ZXF1ZXN0cyB3aWxsIGJlIGZ1bGZpbGxlZCB1c2luZyB0aGUgcmVzcG9uc2UgZnJvbSB0aGUgZmly
c3QgcmVxdWVzdC4KKyAgICAgKgorICAgICAqIFlvdSBjYW4gY2hhbmdlIHRoZSBkZWZhdWx0IGNh
Y2hlIHRvIGEgbmV3IG9iamVjdCAoYnVpbHQgd2l0aAorICAgICAqIHtAbGluayBuZy4kY2FjaGVG
YWN0b3J5IGAkY2FjaGVGYWN0b3J5YH0pIGJ5IHVwZGF0aW5nIHRoZQorICAgICAqIHtAbGluayBu
Zy4kaHR0cCNkZWZhdWx0cyBgJGh0dHAuZGVmYXVsdHMuY2FjaGVgfSBwcm9wZXJ0eS4gQWxsIHJl
cXVlc3RzIHdobyBzZXQKKyAgICAgKiB0aGVpciBgY2FjaGVgIHByb3BlcnR5IHRvIGB0cnVlYCB3
aWxsIG5vdyB1c2UgdGhpcyBjYWNoZSBvYmplY3QuCisgICAgICoKKyAgICAgKiBJZiB5b3Ugc2V0
IHRoZSBkZWZhdWx0IGNhY2hlIHRvIGBmYWxzZWAgdGhlbiBvbmx5IHJlcXVlc3RzIHRoYXQgc3Bl
Y2lmeSB0aGVpciBvd24gY3VzdG9tCisgICAgICogY2FjaGUgb2JqZWN0IHdpbGwgYmUgY2FjaGVk
LgorICAgICAqCisgICAgICogIyMgSW50ZXJjZXB0b3JzCisgICAgICoKKyAgICAgKiBCZWZvcmUg
eW91IHN0YXJ0IGNyZWF0aW5nIGludGVyY2VwdG9ycywgYmUgc3VyZSB0byB1bmRlcnN0YW5kIHRo
ZQorICAgICAqIHtAbGluayBuZy4kcSAkcSBhbmQgZGVmZXJyZWQvcHJvbWlzZSBBUElzfS4KKyAg
ICAgKgorICAgICAqIEZvciBwdXJwb3NlcyBvZiBnbG9iYWwgZXJyb3IgaGFuZGxpbmcsIGF1dGhl
bnRpY2F0aW9uLCBvciBhbnkga2luZCBvZiBzeW5jaHJvbm91cyBvcgorICAgICAqIGFzeW5jaHJv
bm91cyBwcmUtcHJvY2Vzc2luZyBvZiByZXF1ZXN0IG9yIHBvc3Rwcm9jZXNzaW5nIG9mIHJlc3Bv
bnNlcywgaXQgaXMgZGVzaXJhYmxlIHRvIGJlCisgICAgICogYWJsZSB0byBpbnRlcmNlcHQgcmVx
dWVzdHMgYmVmb3JlIHRoZXkgYXJlIGhhbmRlZCB0byB0aGUgc2VydmVyIGFuZAorICAgICAqIHJl
c3BvbnNlcyBiZWZvcmUgdGhleSBhcmUgaGFuZGVkIG92ZXIgdG8gdGhlIGFwcGxpY2F0aW9uIGNv
ZGUgdGhhdAorICAgICAqIGluaXRpYXRlZCB0aGVzZSByZXF1ZXN0cy4gVGhlIGludGVyY2VwdG9y
cyBsZXZlcmFnZSB0aGUge0BsaW5rIG5nLiRxCisgICAgICogcHJvbWlzZSBBUElzfSB0byBmdWxm
aWxsIHRoaXMgbmVlZCBmb3IgYm90aCBzeW5jaHJvbm91cyBhbmQgYXN5bmNocm9ub3VzIHByZS1w
cm9jZXNzaW5nLgorICAgICAqCisgICAgICogVGhlIGludGVyY2VwdG9ycyBhcmUgc2VydmljZSBm
YWN0b3JpZXMgdGhhdCBhcmUgcmVnaXN0ZXJlZCB3aXRoIHRoZSBgJGh0dHBQcm92aWRlcmAgYnkK
KyAgICAgKiBhZGRpbmcgdGhlbSB0byB0aGUgYCRodHRwUHJvdmlkZXIuaW50ZXJjZXB0b3JzYCBh
cnJheS4gVGhlIGZhY3RvcnkgaXMgY2FsbGVkIGFuZAorICAgICAqIGluamVjdGVkIHdpdGggZGVw
ZW5kZW5jaWVzIChpZiBzcGVjaWZpZWQpIGFuZCByZXR1cm5zIHRoZSBpbnRlcmNlcHRvci4KKyAg
ICAgKgorICAgICAqIFRoZXJlIGFyZSB0d28ga2luZHMgb2YgaW50ZXJjZXB0b3JzIChhbmQgdHdv
IGtpbmRzIG9mIHJlamVjdGlvbiBpbnRlcmNlcHRvcnMpOgorICAgICAqCisgICAgICogICAqIGBy
ZXF1ZXN0YDogaW50ZXJjZXB0b3JzIGdldCBjYWxsZWQgd2l0aCBhIGh0dHAgYGNvbmZpZ2Agb2Jq
ZWN0LiBUaGUgZnVuY3Rpb24gaXMgZnJlZSB0bworICAgICAqICAgICBtb2RpZnkgdGhlIGBjb25m
aWdgIG9iamVjdCBvciBjcmVhdGUgYSBuZXcgb25lLiBUaGUgZnVuY3Rpb24gbmVlZHMgdG8gcmV0
dXJuIHRoZSBgY29uZmlnYAorICAgICAqICAgICBvYmplY3QgZGlyZWN0bHksIG9yIGEgcHJvbWlz
ZSBjb250YWluaW5nIHRoZSBgY29uZmlnYCBvciBhIG5ldyBgY29uZmlnYCBvYmplY3QuCisgICAg
ICogICAqIGByZXF1ZXN0RXJyb3JgOiBpbnRlcmNlcHRvciBnZXRzIGNhbGxlZCB3aGVuIGEgcHJl
dmlvdXMgaW50ZXJjZXB0b3IgdGhyZXcgYW4gZXJyb3Igb3IKKyAgICAgKiAgICAgcmVzb2x2ZWQg
d2l0aCBhIHJlamVjdGlvbi4KKyAgICAgKiAgICogYHJlc3BvbnNlYDogaW50ZXJjZXB0b3JzIGdl
dCBjYWxsZWQgd2l0aCBodHRwIGByZXNwb25zZWAgb2JqZWN0LiBUaGUgZnVuY3Rpb24gaXMgZnJl
ZSB0bworICAgICAqICAgICBtb2RpZnkgdGhlIGByZXNwb25zZWAgb2JqZWN0IG9yIGNyZWF0ZSBh
IG5ldyBvbmUuIFRoZSBmdW5jdGlvbiBuZWVkcyB0byByZXR1cm4gdGhlIGByZXNwb25zZWAKKyAg
ICAgKiAgICAgb2JqZWN0IGRpcmVjdGx5LCBvciBhcyBhIHByb21pc2UgY29udGFpbmluZyB0aGUg
YHJlc3BvbnNlYCBvciBhIG5ldyBgcmVzcG9uc2VgIG9iamVjdC4KKyAgICAgKiAgICogYHJlc3Bv
bnNlRXJyb3JgOiBpbnRlcmNlcHRvciBnZXRzIGNhbGxlZCB3aGVuIGEgcHJldmlvdXMgaW50ZXJj
ZXB0b3IgdGhyZXcgYW4gZXJyb3Igb3IKKyAgICAgKiAgICAgcmVzb2x2ZWQgd2l0aCBhIHJlamVj
dGlvbi4KKyAgICAgKgorICAgICAqCisgICAgICogYGBganMKKyAgICAgKiAgIC8vIHJlZ2lzdGVy
IHRoZSBpbnRlcmNlcHRvciBhcyBhIHNlcnZpY2UKKyAgICAgKiAgICRwcm92aWRlLmZhY3Rvcnko
J215SHR0cEludGVyY2VwdG9yJywgZnVuY3Rpb24oJHEsIGRlcGVuZGVuY3kxLCBkZXBlbmRlbmN5
MikgeworICAgICAqICAgICByZXR1cm4geworICAgICAqICAgICAgIC8vIG9wdGlvbmFsIG1ldGhv
ZAorICAgICAqICAgICAgICdyZXF1ZXN0JzogZnVuY3Rpb24oY29uZmlnKSB7CisgICAgICogICAg
ICAgICAvLyBkbyBzb21ldGhpbmcgb24gc3VjY2VzcworICAgICAqICAgICAgICAgcmV0dXJuIGNv
bmZpZzsKKyAgICAgKiAgICAgICB9LAorICAgICAqCisgICAgICogICAgICAgLy8gb3B0aW9uYWwg
bWV0aG9kCisgICAgICogICAgICAncmVxdWVzdEVycm9yJzogZnVuY3Rpb24ocmVqZWN0aW9uKSB7
CisgICAgICogICAgICAgICAvLyBkbyBzb21ldGhpbmcgb24gZXJyb3IKKyAgICAgKiAgICAgICAg
IGlmIChjYW5SZWNvdmVyKHJlamVjdGlvbikpIHsKKyAgICAgKiAgICAgICAgICAgcmV0dXJuIHJl
c3BvbnNlT3JOZXdQcm9taXNlCisgICAgICogICAgICAgICB9CisgICAgICogICAgICAgICByZXR1
cm4gJHEucmVqZWN0KHJlamVjdGlvbik7CisgICAgICogICAgICAgfSwKKyAgICAgKgorICAgICAq
CisgICAgICoKKyAgICAgKiAgICAgICAvLyBvcHRpb25hbCBtZXRob2QKKyAgICAgKiAgICAgICAn
cmVzcG9uc2UnOiBmdW5jdGlvbihyZXNwb25zZSkgeworICAgICAqICAgICAgICAgLy8gZG8gc29t
ZXRoaW5nIG9uIHN1Y2Nlc3MKKyAgICAgKiAgICAgICAgIHJldHVybiByZXNwb25zZTsKKyAgICAg
KiAgICAgICB9LAorICAgICAqCisgICAgICogICAgICAgLy8gb3B0aW9uYWwgbWV0aG9kCisgICAg
ICogICAgICAncmVzcG9uc2VFcnJvcic6IGZ1bmN0aW9uKHJlamVjdGlvbikgeworICAgICAqICAg
ICAgICAgLy8gZG8gc29tZXRoaW5nIG9uIGVycm9yCisgICAgICogICAgICAgICBpZiAoY2FuUmVj
b3ZlcihyZWplY3Rpb24pKSB7CisgICAgICogICAgICAgICAgIHJldHVybiByZXNwb25zZU9yTmV3
UHJvbWlzZQorICAgICAqICAgICAgICAgfQorICAgICAqICAgICAgICAgcmV0dXJuICRxLnJlamVj
dChyZWplY3Rpb24pOworICAgICAqICAgICAgIH0KKyAgICAgKiAgICAgfTsKKyAgICAgKiAgIH0p
OworICAgICAqCisgICAgICogICAkaHR0cFByb3ZpZGVyLmludGVyY2VwdG9ycy5wdXNoKCdteUh0
dHBJbnRlcmNlcHRvcicpOworICAgICAqCisgICAgICoKKyAgICAgKiAgIC8vIGFsdGVybmF0aXZl
bHksIHJlZ2lzdGVyIHRoZSBpbnRlcmNlcHRvciB2aWEgYW4gYW5vbnltb3VzIGZhY3RvcnkKKyAg
ICAgKiAgICRodHRwUHJvdmlkZXIuaW50ZXJjZXB0b3JzLnB1c2goZnVuY3Rpb24oJHEsIGRlcGVu
ZGVuY3kxLCBkZXBlbmRlbmN5MikgeworICAgICAqICAgICByZXR1cm4geworICAgICAqICAgICAg
J3JlcXVlc3QnOiBmdW5jdGlvbihjb25maWcpIHsKKyAgICAgKiAgICAgICAgICAvLyBzYW1lIGFz
IGFib3ZlCisgICAgICogICAgICAgfSwKKyAgICAgKgorICAgICAqICAgICAgICdyZXNwb25zZSc6
IGZ1bmN0aW9uKHJlc3BvbnNlKSB7CisgICAgICogICAgICAgICAgLy8gc2FtZSBhcyBhYm92ZQor
ICAgICAqICAgICAgIH0KKyAgICAgKiAgICAgfTsKKyAgICAgKiAgIH0pOworICAgICAqIGBgYAor
ICAgICAqCisgICAgICogIyMgU2VjdXJpdHkgQ29uc2lkZXJhdGlvbnMKKyAgICAgKgorICAgICAq
IFdoZW4gZGVzaWduaW5nIHdlYiBhcHBsaWNhdGlvbnMsIGNvbnNpZGVyIHNlY3VyaXR5IHRocmVh
dHMgZnJvbToKKyAgICAgKgorICAgICAqIC0gW0pTT04gdnVsbmVyYWJpbGl0eV0oaHR0cDovL2hh
YWNrZWQuY29tL2FyY2hpdmUvMjAwOC8xMS8yMC9hbmF0b215LW9mLWEtc3VidGxlLWpzb24tdnVs
bmVyYWJpbGl0eS5hc3B4KQorICAgICAqIC0gW1hTUkZdKGh0dHA6Ly9lbi53aWtpcGVkaWEub3Jn
L3dpa2kvQ3Jvc3Mtc2l0ZV9yZXF1ZXN0X2ZvcmdlcnkpCisgICAgICoKKyAgICAgKiBCb3RoIHNl
cnZlciBhbmQgdGhlIGNsaWVudCBtdXN0IGNvb3BlcmF0ZSBpbiBvcmRlciB0byBlbGltaW5hdGUg
dGhlc2UgdGhyZWF0cy4gQW5ndWxhciBjb21lcworICAgICAqIHByZS1jb25maWd1cmVkIHdpdGgg
c3RyYXRlZ2llcyB0aGF0IGFkZHJlc3MgdGhlc2UgaXNzdWVzLCBidXQgZm9yIHRoaXMgdG8gd29y
ayBiYWNrZW5kIHNlcnZlcgorICAgICAqIGNvb3BlcmF0aW9uIGlzIHJlcXVpcmVkLgorICAgICAq
CisgICAgICogIyMjIEpTT04gVnVsbmVyYWJpbGl0eSBQcm90ZWN0aW9uCisgICAgICoKKyAgICAg
KiBBIFtKU09OIHZ1bG5lcmFiaWxpdHldKGh0dHA6Ly9oYWFja2VkLmNvbS9hcmNoaXZlLzIwMDgv
MTEvMjAvYW5hdG9teS1vZi1hLXN1YnRsZS1qc29uLXZ1bG5lcmFiaWxpdHkuYXNweCkKKyAgICAg
KiBhbGxvd3MgdGhpcmQgcGFydHkgd2Vic2l0ZSB0byB0dXJuIHlvdXIgSlNPTiByZXNvdXJjZSBV
UkwgaW50bworICAgICAqIFtKU09OUF0oaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9KU09O
UCkgcmVxdWVzdCB1bmRlciBzb21lIGNvbmRpdGlvbnMuIFRvCisgICAgICogY291bnRlciB0aGlz
IHlvdXIgc2VydmVyIGNhbiBwcmVmaXggYWxsIEpTT04gcmVxdWVzdHMgd2l0aCBmb2xsb3dpbmcg
c3RyaW5nIGAiKV19JyxcbiJgLgorICAgICAqIEFuZ3VsYXIgd2lsbCBhdXRvbWF0aWNhbGx5IHN0
cmlwIHRoZSBwcmVmaXggYmVmb3JlIHByb2Nlc3NpbmcgaXQgYXMgSlNPTi4KKyAgICAgKgorICAg
ICAqIEZvciBleGFtcGxlIGlmIHlvdXIgc2VydmVyIG5lZWRzIHRvIHJldHVybjoKKyAgICAgKiBg
YGBqcworICAgICAqIFsnb25lJywndHdvJ10KKyAgICAgKiBgYGAKKyAgICAgKgorICAgICAqIHdo
aWNoIGlzIHZ1bG5lcmFibGUgdG8gYXR0YWNrLCB5b3VyIHNlcnZlciBjYW4gcmV0dXJuOgorICAg
ICAqIGBgYGpzCisgICAgICogKV19JywKKyAgICAgKiBbJ29uZScsJ3R3byddCisgICAgICogYGBg
CisgICAgICoKKyAgICAgKiBBbmd1bGFyIHdpbGwgc3RyaXAgdGhlIHByZWZpeCwgYmVmb3JlIHBy
b2Nlc3NpbmcgdGhlIEpTT04uCisgICAgICoKKyAgICAgKgorICAgICAqICMjIyBDcm9zcyBTaXRl
IFJlcXVlc3QgRm9yZ2VyeSAoWFNSRikgUHJvdGVjdGlvbgorICAgICAqCisgICAgICogW1hTUkZd
KGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ3Jvc3Mtc2l0ZV9yZXF1ZXN0X2Zvcmdlcnkp
IGlzIGEgdGVjaG5pcXVlIGJ5IHdoaWNoCisgICAgICogYW4gdW5hdXRob3JpemVkIHNpdGUgY2Fu
IGdhaW4geW91ciB1c2VyJ3MgcHJpdmF0ZSBkYXRhLiBBbmd1bGFyIHByb3ZpZGVzIGEgbWVjaGFu
aXNtCisgICAgICogdG8gY291bnRlciBYU1JGLiBXaGVuIHBlcmZvcm1pbmcgWEhSIHJlcXVlc3Rz
LCB0aGUgJGh0dHAgc2VydmljZSByZWFkcyBhIHRva2VuIGZyb20gYSBjb29raWUKKyAgICAgKiAo
YnkgZGVmYXVsdCwgYFhTUkYtVE9LRU5gKSBhbmQgc2V0cyBpdCBhcyBhbiBIVFRQIGhlYWRlciAo
YFgtWFNSRi1UT0tFTmApLiBTaW5jZSBvbmx5CisgICAgICogSmF2YVNjcmlwdCB0aGF0IHJ1bnMg
b24geW91ciBkb21haW4gY291bGQgcmVhZCB0aGUgY29va2llLCB5b3VyIHNlcnZlciBjYW4gYmUg
YXNzdXJlZCB0aGF0CisgICAgICogdGhlIFhIUiBjYW1lIGZyb20gSmF2YVNjcmlwdCBydW5uaW5n
IG9uIHlvdXIgZG9tYWluLiBUaGUgaGVhZGVyIHdpbGwgbm90IGJlIHNldCBmb3IKKyAgICAgKiBj
cm9zcy1kb21haW4gcmVxdWVzdHMuCisgICAgICoKKyAgICAgKiBUbyB0YWtlIGFkdmFudGFnZSBv
ZiB0aGlzLCB5b3VyIHNlcnZlciBuZWVkcyB0byBzZXQgYSB0b2tlbiBpbiBhIEphdmFTY3JpcHQg
cmVhZGFibGUgc2Vzc2lvbgorICAgICAqIGNvb2tpZSBjYWxsZWQgYFhTUkYtVE9LRU5gIG9uIHRo
ZSBmaXJzdCBIVFRQIEdFVCByZXF1ZXN0LiBPbiBzdWJzZXF1ZW50IFhIUiByZXF1ZXN0cyB0aGUK
KyAgICAgKiBzZXJ2ZXIgY2FuIHZlcmlmeSB0aGF0IHRoZSBjb29raWUgbWF0Y2hlcyBgWC1YU1JG
LVRPS0VOYCBIVFRQIGhlYWRlciwgYW5kIHRoZXJlZm9yZSBiZSBzdXJlCisgICAgICogdGhhdCBv
bmx5IEphdmFTY3JpcHQgcnVubmluZyBvbiB5b3VyIGRvbWFpbiBjb3VsZCBoYXZlIHNlbnQgdGhl
IHJlcXVlc3QuIFRoZSB0b2tlbiBtdXN0IGJlCisgICAgICogdW5pcXVlIGZvciBlYWNoIHVzZXIg
YW5kIG11c3QgYmUgdmVyaWZpYWJsZSBieSB0aGUgc2VydmVyICh0byBwcmV2ZW50IHRoZSBKYXZh
U2NyaXB0IGZyb20KKyAgICAgKiBtYWtpbmcgdXAgaXRzIG93biB0b2tlbnMpLiBXZSByZWNvbW1l
bmQgdGhhdCB0aGUgdG9rZW4gaXMgYSBkaWdlc3Qgb2YgeW91ciBzaXRlJ3MKKyAgICAgKiBhdXRo
ZW50aWNhdGlvbiBjb29raWUgd2l0aCBhIFtzYWx0XShodHRwczovL2VuLndpa2lwZWRpYS5vcmcv
d2lraS9TYWx0XyhjcnlwdG9ncmFwaHkmIzQxOykKKyAgICAgKiBmb3IgYWRkZWQgc2VjdXJpdHku
CisgICAgICoKKyAgICAgKiBUaGUgbmFtZSBvZiB0aGUgaGVhZGVycyBjYW4gYmUgc3BlY2lmaWVk
IHVzaW5nIHRoZSB4c3JmSGVhZGVyTmFtZSBhbmQgeHNyZkNvb2tpZU5hbWUKKyAgICAgKiBwcm9w
ZXJ0aWVzIG9mIGVpdGhlciAkaHR0cFByb3ZpZGVyLmRlZmF1bHRzIGF0IGNvbmZpZy10aW1lLCAk
aHR0cC5kZWZhdWx0cyBhdCBydW4tdGltZSwKKyAgICAgKiBvciB0aGUgcGVyLXJlcXVlc3QgY29u
ZmlnIG9iamVjdC4KKyAgICAgKgorICAgICAqIEluIG9yZGVyIHRvIHByZXZlbnQgY29sbGlzaW9u
cyBpbiBlbnZpcm9ubWVudHMgd2hlcmUgbXVsdGlwbGUgQW5ndWxhciBhcHBzIHNoYXJlIHRoZQor
ICAgICAqIHNhbWUgZG9tYWluIG9yIHN1YmRvbWFpbiwgd2UgcmVjb21tZW5kIHRoYXQgZWFjaCBh
cHBsaWNhdGlvbiB1c2VzIHVuaXF1ZSBjb29raWUgbmFtZS4KKyAgICAgKgorICAgICAqCisgICAg
ICogQHBhcmFtIHtvYmplY3R9IGNvbmZpZyBPYmplY3QgZGVzY3JpYmluZyB0aGUgcmVxdWVzdCB0
byBiZSBtYWRlIGFuZCBob3cgaXQgc2hvdWxkIGJlCisgICAgICogICAgcHJvY2Vzc2VkLiBUaGUg
b2JqZWN0IGhhcyBmb2xsb3dpbmcgcHJvcGVydGllczoKKyAgICAgKgorICAgICAqICAgIC0gKipt
ZXRob2QqKiDigJMgYHtzdHJpbmd9YCDigJMgSFRUUCBtZXRob2QgKGUuZy4gJ0dFVCcsICdQT1NU
JywgZXRjKQorICAgICAqICAgIC0gKip1cmwqKiDigJMgYHtzdHJpbmd9YCDigJMgQWJzb2x1dGUg
b3IgcmVsYXRpdmUgVVJMIG9mIHRoZSByZXNvdXJjZSB0aGF0IGlzIGJlaW5nIHJlcXVlc3RlZC4K
KyAgICAgKiAgICAtICoqcGFyYW1zKiog4oCTIGB7T2JqZWN0LjxzdHJpbmd8T2JqZWN0Pn1gIOKA
kyBNYXAgb2Ygc3RyaW5ncyBvciBvYmplY3RzIHdoaWNoIHdpbGwgYmUgc2VyaWFsaXplZAorICAg
ICAqICAgICAgd2l0aCB0aGUgYHBhcmFtU2VyaWFsaXplcmAgYW5kIGFwcGVuZGVkIGFzIEdFVCBw
YXJhbWV0ZXJzLgorICAgICAqICAgIC0gKipkYXRhKiog4oCTIGB7c3RyaW5nfE9iamVjdH1gIOKA
kyBEYXRhIHRvIGJlIHNlbnQgYXMgdGhlIHJlcXVlc3QgbWVzc2FnZSBkYXRhLgorICAgICAqICAg
IC0gKipoZWFkZXJzKiog4oCTIGB7T2JqZWN0fWAg4oCTIE1hcCBvZiBzdHJpbmdzIG9yIGZ1bmN0
aW9ucyB3aGljaCByZXR1cm4gc3RyaW5ncyByZXByZXNlbnRpbmcKKyAgICAgKiAgICAgIEhUVFAg
aGVhZGVycyB0byBzZW5kIHRvIHRoZSBzZXJ2ZXIuIElmIHRoZSByZXR1cm4gdmFsdWUgb2YgYSBm
dW5jdGlvbiBpcyBudWxsLCB0aGUKKyAgICAgKiAgICAgIGhlYWRlciB3aWxsIG5vdCBiZSBzZW50
LiBGdW5jdGlvbnMgYWNjZXB0IGEgY29uZmlnIG9iamVjdCBhcyBhbiBhcmd1bWVudC4KKyAgICAg
KiAgICAtICoqeHNyZkhlYWRlck5hbWUqKiDigJMgYHtzdHJpbmd9YCDigJMgTmFtZSBvZiBIVFRQ
IGhlYWRlciB0byBwb3B1bGF0ZSB3aXRoIHRoZSBYU1JGIHRva2VuLgorICAgICAqICAgIC0gKip4
c3JmQ29va2llTmFtZSoqIOKAkyBge3N0cmluZ31gIOKAkyBOYW1lIG9mIGNvb2tpZSBjb250YWlu
aW5nIHRoZSBYU1JGIHRva2VuLgorICAgICAqICAgIC0gKip0cmFuc2Zvcm1SZXF1ZXN0Kiog4oCT
CisgICAgICogICAgICBge2Z1bmN0aW9uKGRhdGEsIGhlYWRlcnNHZXR0ZXIpfEFycmF5LjxmdW5j
dGlvbihkYXRhLCBoZWFkZXJzR2V0dGVyKT59YCDigJMKKyAgICAgKiAgICAgIHRyYW5zZm9ybSBm
dW5jdGlvbiBvciBhbiBhcnJheSBvZiBzdWNoIGZ1bmN0aW9ucy4gVGhlIHRyYW5zZm9ybSBmdW5j
dGlvbiB0YWtlcyB0aGUgaHR0cAorICAgICAqICAgICAgcmVxdWVzdCBib2R5IGFuZCBoZWFkZXJz
IGFuZCByZXR1cm5zIGl0cyB0cmFuc2Zvcm1lZCAodHlwaWNhbGx5IHNlcmlhbGl6ZWQpIHZlcnNp
b24uCisgICAgICogICAgICBTZWUge0BsaW5rIG5nLiRodHRwI292ZXJyaWRpbmctdGhlLWRlZmF1
bHQtdHJhbnNmb3JtYXRpb25zLXBlci1yZXF1ZXN0CisgICAgICogICAgICBPdmVycmlkaW5nIHRo
ZSBEZWZhdWx0IFRyYW5zZm9ybWF0aW9uc30KKyAgICAgKiAgICAtICoqdHJhbnNmb3JtUmVzcG9u
c2UqKiDigJMKKyAgICAgKiAgICAgIGB7ZnVuY3Rpb24oZGF0YSwgaGVhZGVyc0dldHRlciwgc3Rh
dHVzKXxBcnJheS48ZnVuY3Rpb24oZGF0YSwgaGVhZGVyc0dldHRlciwgc3RhdHVzKT59YCDigJMK
KyAgICAgKiAgICAgIHRyYW5zZm9ybSBmdW5jdGlvbiBvciBhbiBhcnJheSBvZiBzdWNoIGZ1bmN0
aW9ucy4gVGhlIHRyYW5zZm9ybSBmdW5jdGlvbiB0YWtlcyB0aGUgaHR0cAorICAgICAqICAgICAg
cmVzcG9uc2UgYm9keSwgaGVhZGVycyBhbmQgc3RhdHVzIGFuZCByZXR1cm5zIGl0cyB0cmFuc2Zv
cm1lZCAodHlwaWNhbGx5IGRlc2VyaWFsaXplZCkgdmVyc2lvbi4KKyAgICAgKiAgICAgIFNlZSB7
QGxpbmsgbmcuJGh0dHAjb3ZlcnJpZGluZy10aGUtZGVmYXVsdC10cmFuc2Zvcm1hdGlvbnMtcGVy
LXJlcXVlc3QKKyAgICAgKiAgICAgIE92ZXJyaWRpbmcgdGhlIERlZmF1bHQgVHJhbnNmb3JtYXRp
b25qcUxpa3N9CisgICAgICogICAgLSAqKnBhcmFtU2VyaWFsaXplcioqIC0gYHtzdHJpbmd8ZnVu
Y3Rpb24oT2JqZWN0PHN0cmluZyxzdHJpbmc+KTpzdHJpbmd9YCAtIEEgZnVuY3Rpb24gdXNlZCB0
bworICAgICAqICAgICAgcHJlcGFyZSB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHJlcXVl
c3QgcGFyYW1ldGVycyAoc3BlY2lmaWVkIGFzIGFuIG9iamVjdCkuCisgICAgICogICAgICBJZiBz
cGVjaWZpZWQgYXMgc3RyaW5nLCBpdCBpcyBpbnRlcnByZXRlZCBhcyBmdW5jdGlvbiByZWdpc3Rl
cmVkIHdpdGggdGhlCisgICAgICogICAgICB7QGxpbmsgJGluamVjdG9yICRpbmplY3Rvcn0sIHdo
aWNoIG1lYW5zIHlvdSBjYW4gY3JlYXRlIHlvdXIgb3duIHNlcmlhbGl6ZXIKKyAgICAgKiAgICAg
IGJ5IHJlZ2lzdGVyaW5nIGl0IGFzIGEge0BsaW5rIGF1dG8uJHByb3ZpZGUjc2VydmljZSBzZXJ2
aWNlfS4KKyAgICAgKiAgICAgIFRoZSBkZWZhdWx0IHNlcmlhbGl6ZXIgaXMgdGhlIHtAbGluayAk
aHR0cFBhcmFtU2VyaWFsaXplciAkaHR0cFBhcmFtU2VyaWFsaXplcn07CisgICAgICogICAgICBh
bHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHVzZSB0aGUge0BsaW5rICRodHRwUGFyYW1TZXJpYWxpemVy
SlFMaWtlICRodHRwUGFyYW1TZXJpYWxpemVySlFMaWtlfQorICAgICAqICAgIC0gKipjYWNoZSoq
IOKAkyBge2Jvb2xlYW58Q2FjaGV9YCDigJMgSWYgdHJ1ZSwgYSBkZWZhdWx0ICRodHRwIGNhY2hl
IHdpbGwgYmUgdXNlZCB0byBjYWNoZSB0aGUKKyAgICAgKiAgICAgIEdFVCByZXF1ZXN0LCBvdGhl
cndpc2UgaWYgYSBjYWNoZSBpbnN0YW5jZSBidWlsdCB3aXRoCisgICAgICogICAgICB7QGxpbmsg
bmcuJGNhY2hlRmFjdG9yeSAkY2FjaGVGYWN0b3J5fSwgdGhpcyBjYWNoZSB3aWxsIGJlIHVzZWQg
Zm9yCisgICAgICogICAgICBjYWNoaW5nLgorICAgICAqICAgIC0gKip0aW1lb3V0Kiog4oCTIGB7
bnVtYmVyfFByb21pc2V9YCDigJMgdGltZW91dCBpbiBtaWxsaXNlY29uZHMsIG9yIHtAbGluayBu
Zy4kcSBwcm9taXNlfQorICAgICAqICAgICAgdGhhdCBzaG91bGQgYWJvcnQgdGhlIHJlcXVlc3Qg
d2hlbiByZXNvbHZlZC4KKyAgICAgKiAgICAtICoqd2l0aENyZWRlbnRpYWxzKiogLSBge2Jvb2xl
YW59YCAtIHdoZXRoZXIgdG8gc2V0IHRoZSBgd2l0aENyZWRlbnRpYWxzYCBmbGFnIG9uIHRoZQor
ICAgICAqICAgICAgWEhSIG9iamVjdC4gU2VlIFtyZXF1ZXN0cyB3aXRoIGNyZWRlbnRpYWxzXSho
dHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVFRQL0FjY2Vzc19jb250cm9s
X0NPUlMjUmVxdWVzdHNfd2l0aF9jcmVkZW50aWFscykKKyAgICAgKiAgICAgIGZvciBtb3JlIGlu
Zm9ybWF0aW9uLgorICAgICAqICAgIC0gKipyZXNwb25zZVR5cGUqKiAtIGB7c3RyaW5nfWAgLSBz
ZWUKKyAgICAgKiAgICAgIFtYTUxIdHRwUmVxdWVzdC5yZXNwb25zZVR5cGVdKGh0dHBzOi8vZGV2
ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9YTUxIdHRwUmVxdWVzdCN4bWxo
dHRwcmVxdWVzdC1yZXNwb25zZXR5cGUpLgorICAgICAqCisgICAgICogQHJldHVybnMge0h0dHBQ
cm9taXNlfSBSZXR1cm5zIGEge0BsaW5rIG5nLiRxIHByb21pc2V9IG9iamVjdCB3aXRoIHRoZQor
ICAgICAqICAgc3RhbmRhcmQgYHRoZW5gIG1ldGhvZCBhbmQgdHdvIGh0dHAgc3BlY2lmaWMgbWV0
aG9kczogYHN1Y2Nlc3NgIGFuZCBgZXJyb3JgLiBUaGUgYHRoZW5gCisgICAgICogICBtZXRob2Qg
dGFrZXMgdHdvIGFyZ3VtZW50cyBhIHN1Y2Nlc3MgYW5kIGFuIGVycm9yIGNhbGxiYWNrIHdoaWNo
IHdpbGwgYmUgY2FsbGVkIHdpdGggYQorICAgICAqICAgcmVzcG9uc2Ugb2JqZWN0LiBUaGUgYHN1
Y2Nlc3NgIGFuZCBgZXJyb3JgIG1ldGhvZHMgdGFrZSBhIHNpbmdsZSBhcmd1bWVudCAtIGEgZnVu
Y3Rpb24gdGhhdAorICAgICAqICAgd2lsbCBiZSBjYWxsZWQgd2hlbiB0aGUgcmVxdWVzdCBzdWNj
ZWVkcyBvciBmYWlscyByZXNwZWN0aXZlbHkuIFRoZSBhcmd1bWVudHMgcGFzc2VkIGludG8KKyAg
ICAgKiAgIHRoZXNlIGZ1bmN0aW9ucyBhcmUgZGVzdHJ1Y3R1cmVkIHJlcHJlc2VudGF0aW9uIG9m
IHRoZSByZXNwb25zZSBvYmplY3QgcGFzc2VkIGludG8gdGhlCisgICAgICogICBgdGhlbmAgbWV0
aG9kLiBUaGUgcmVzcG9uc2Ugb2JqZWN0IGhhcyB0aGVzZSBwcm9wZXJ0aWVzOgorICAgICAqCisg
ICAgICogICAtICoqZGF0YSoqIOKAkyBge3N0cmluZ3xPYmplY3R9YCDigJMgVGhlIHJlc3BvbnNl
IGJvZHkgdHJhbnNmb3JtZWQgd2l0aCB0aGUgdHJhbnNmb3JtCisgICAgICogICAgIGZ1bmN0aW9u
cy4KKyAgICAgKiAgIC0gKipzdGF0dXMqKiDigJMgYHtudW1iZXJ9YCDigJMgSFRUUCBzdGF0dXMg
Y29kZSBvZiB0aGUgcmVzcG9uc2UuCisgICAgICogICAtICoqaGVhZGVycyoqIOKAkyBge2Z1bmN0
aW9uKFtoZWFkZXJOYW1lXSl9YCDigJMgSGVhZGVyIGdldHRlciBmdW5jdGlvbi4KKyAgICAgKiAg
IC0gKipjb25maWcqKiDigJMgYHtPYmplY3R9YCDigJMgVGhlIGNvbmZpZ3VyYXRpb24gb2JqZWN0
IHRoYXQgd2FzIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIHJlcXVlc3QuCisgICAgICogICAtICoqc3Rh
dHVzVGV4dCoqIOKAkyBge3N0cmluZ31gIOKAkyBIVFRQIHN0YXR1cyB0ZXh0IG9mIHRoZSByZXNw
b25zZS4KKyAgICAgKgorICAgICAqIEBwcm9wZXJ0eSB7QXJyYXkuPE9iamVjdD59IHBlbmRpbmdS
ZXF1ZXN0cyBBcnJheSBvZiBjb25maWcgb2JqZWN0cyBmb3IgY3VycmVudGx5IHBlbmRpbmcKKyAg
ICAgKiAgIHJlcXVlc3RzLiBUaGlzIGlzIHByaW1hcmlseSBtZWFudCB0byBiZSB1c2VkIGZvciBk
ZWJ1Z2dpbmcgcHVycG9zZXMuCisgICAgICoKKyAgICAgKgorICAgICAqIEBleGFtcGxlCis8ZXhh
bXBsZSBtb2R1bGU9Imh0dHBFeGFtcGxlIj4KKzxmaWxlIG5hbWU9ImluZGV4Lmh0bWwiPgorICA8
ZGl2IG5nLWNvbnRyb2xsZXI9IkZldGNoQ29udHJvbGxlciI+CisgICAgPHNlbGVjdCBuZy1tb2Rl
bD0ibWV0aG9kIiBhcmlhLWxhYmVsPSJSZXF1ZXN0IG1ldGhvZCI+CisgICAgICA8b3B0aW9uPkdF
VDwvb3B0aW9uPgorICAgICAgPG9wdGlvbj5KU09OUDwvb3B0aW9uPgorICAgIDwvc2VsZWN0Pgor
ICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuZy1tb2RlbD0idXJsIiBzaXplPSI4MCIgYXJpYS1sYWJl
bD0iVVJMIiAvPgorICAgIDxidXR0b24gaWQ9ImZldGNoYnRuIiBuZy1jbGljaz0iZmV0Y2goKSI+
ZmV0Y2g8L2J1dHRvbj48YnI+CisgICAgPGJ1dHRvbiBpZD0ic2FtcGxlZ2V0YnRuIiBuZy1jbGlj
az0idXBkYXRlTW9kZWwoJ0dFVCcsICdodHRwLWhlbGxvLmh0bWwnKSI+U2FtcGxlIEdFVDwvYnV0
dG9uPgorICAgIDxidXR0b24gaWQ9InNhbXBsZWpzb25wYnRuIgorICAgICAgbmctY2xpY2s9InVw
ZGF0ZU1vZGVsKCdKU09OUCcsCisgICAgICAgICAgICAgICAgICAgICdodHRwczovL2FuZ3VsYXJq
cy5vcmcvZ3JlZXQucGhwP2NhbGxiYWNrPUpTT05fQ0FMTEJBQ0smbmFtZT1TdXBlciUyMEhlcm8n
KSI+CisgICAgICBTYW1wbGUgSlNPTlAKKyAgICA8L2J1dHRvbj4KKyAgICA8YnV0dG9uIGlkPSJp
bnZhbGlkanNvbnBidG4iCisgICAgICBuZy1jbGljaz0idXBkYXRlTW9kZWwoJ0pTT05QJywgJ2h0
dHBzOi8vYW5ndWxhcmpzLm9yZy9kb2VzbnRleGlzdCZjYWxsYmFjaz1KU09OX0NBTExCQUNLJyki
PgorICAgICAgICBJbnZhbGlkIEpTT05QCisgICAgICA8L2J1dHRvbj4KKyAgICA8cHJlPmh0dHAg
c3RhdHVzIGNvZGU6IHt7c3RhdHVzfX08L3ByZT4KKyAgICA8cHJlPmh0dHAgcmVzcG9uc2UgZGF0
YToge3tkYXRhfX08L3ByZT4KKyAgPC9kaXY+Cis8L2ZpbGU+Cis8ZmlsZSBuYW1lPSJzY3JpcHQu
anMiPgorICBhbmd1bGFyLm1vZHVsZSgnaHR0cEV4YW1wbGUnLCBbXSkKKyAgICAuY29udHJvbGxl
cignRmV0Y2hDb250cm9sbGVyJywgWyckc2NvcGUnLCAnJGh0dHAnLCAnJHRlbXBsYXRlQ2FjaGUn
LAorICAgICAgZnVuY3Rpb24oJHNjb3BlLCAkaHR0cCwgJHRlbXBsYXRlQ2FjaGUpIHsKKyAgICAg
ICAgJHNjb3BlLm1ldGhvZCA9ICdHRVQnOworICAgICAgICAkc2NvcGUudXJsID0gJ2h0dHAtaGVs
bG8uaHRtbCc7CisKKyAgICAgICAgJHNjb3BlLmZldGNoID0gZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgJHNjb3BlLmNvZGUgPSBudWxsOworICAgICAgICAgICRzY29wZS5yZXNwb25zZSA9IG51bGw7
CisKKyAgICAgICAgICAkaHR0cCh7bWV0aG9kOiAkc2NvcGUubWV0aG9kLCB1cmw6ICRzY29wZS51
cmwsIGNhY2hlOiAkdGVtcGxhdGVDYWNoZX0pLgorICAgICAgICAgICAgc3VjY2VzcyhmdW5jdGlv
bihkYXRhLCBzdGF0dXMpIHsKKyAgICAgICAgICAgICAgJHNjb3BlLnN0YXR1cyA9IHN0YXR1czsK
KyAgICAgICAgICAgICAgJHNjb3BlLmRhdGEgPSBkYXRhOworICAgICAgICAgICAgfSkuCisgICAg
ICAgICAgICBlcnJvcihmdW5jdGlvbihkYXRhLCBzdGF0dXMpIHsKKyAgICAgICAgICAgICAgJHNj
b3BlLmRhdGEgPSBkYXRhIHx8ICJSZXF1ZXN0IGZhaWxlZCI7CisgICAgICAgICAgICAgICRzY29w
ZS5zdGF0dXMgPSBzdGF0dXM7CisgICAgICAgICAgfSk7CisgICAgICAgIH07CisKKyAgICAgICAg
JHNjb3BlLnVwZGF0ZU1vZGVsID0gZnVuY3Rpb24obWV0aG9kLCB1cmwpIHsKKyAgICAgICAgICAk
c2NvcGUubWV0aG9kID0gbWV0aG9kOworICAgICAgICAgICRzY29wZS51cmwgPSB1cmw7CisgICAg
ICAgIH07CisgICAgICB9XSk7Cis8L2ZpbGU+Cis8ZmlsZSBuYW1lPSJodHRwLWhlbGxvLmh0bWwi
PgorICBIZWxsbywgJGh0dHAhCis8L2ZpbGU+Cis8ZmlsZSBuYW1lPSJwcm90cmFjdG9yLmpzIiB0
eXBlPSJwcm90cmFjdG9yIj4KKyAgdmFyIHN0YXR1cyA9IGVsZW1lbnQoYnkuYmluZGluZygnc3Rh
dHVzJykpOworICB2YXIgZGF0YSA9IGVsZW1lbnQoYnkuYmluZGluZygnZGF0YScpKTsKKyAgdmFy
IGZldGNoQnRuID0gZWxlbWVudChieS5pZCgnZmV0Y2hidG4nKSk7CisgIHZhciBzYW1wbGVHZXRC
dG4gPSBlbGVtZW50KGJ5LmlkKCdzYW1wbGVnZXRidG4nKSk7CisgIHZhciBzYW1wbGVKc29ucEJ0
biA9IGVsZW1lbnQoYnkuaWQoJ3NhbXBsZWpzb25wYnRuJykpOworICB2YXIgaW52YWxpZEpzb25w
QnRuID0gZWxlbWVudChieS5pZCgnaW52YWxpZGpzb25wYnRuJykpOworCisgIGl0KCdzaG91bGQg
bWFrZSBhbiB4aHIgR0VUIHJlcXVlc3QnLCBmdW5jdGlvbigpIHsKKyAgICBzYW1wbGVHZXRCdG4u
Y2xpY2soKTsKKyAgICBmZXRjaEJ0bi5jbGljaygpOworICAgIGV4cGVjdChzdGF0dXMuZ2V0VGV4
dCgpKS50b01hdGNoKCcyMDAnKTsKKyAgICBleHBlY3QoZGF0YS5nZXRUZXh0KCkpLnRvTWF0Y2go
L0hlbGxvLCBcJGh0dHAhLyk7CisgIH0pOworCisvLyBDb21tZW50ZWQgb3V0IGR1ZSB0byBmbGFr
ZXMuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyLmpzL2lzc3Vlcy85MTg1
CisvLyBpdCgnc2hvdWxkIG1ha2UgYSBKU09OUCByZXF1ZXN0IHRvIGFuZ3VsYXJqcy5vcmcnLCBm
dW5jdGlvbigpIHsKKy8vICAgc2FtcGxlSnNvbnBCdG4uY2xpY2soKTsKKy8vICAgZmV0Y2hCdG4u
Y2xpY2soKTsKKy8vICAgZXhwZWN0KHN0YXR1cy5nZXRUZXh0KCkpLnRvTWF0Y2goJzIwMCcpOwor
Ly8gICBleHBlY3QoZGF0YS5nZXRUZXh0KCkpLnRvTWF0Y2goL1N1cGVyIEhlcm8hLyk7CisvLyB9
KTsKKworICBpdCgnc2hvdWxkIG1ha2UgSlNPTlAgcmVxdWVzdCB0byBpbnZhbGlkIFVSTCBhbmQg
aW52b2tlIHRoZSBlcnJvciBoYW5kbGVyJywKKyAgICAgIGZ1bmN0aW9uKCkgeworICAgIGludmFs
aWRKc29ucEJ0bi5jbGljaygpOworICAgIGZldGNoQnRuLmNsaWNrKCk7CisgICAgZXhwZWN0KHN0
YXR1cy5nZXRUZXh0KCkpLnRvTWF0Y2goJzAnKTsKKyAgICBleHBlY3QoZGF0YS5nZXRUZXh0KCkp
LnRvTWF0Y2goJ1JlcXVlc3QgZmFpbGVkJyk7CisgIH0pOworPC9maWxlPgorPC9leGFtcGxlPgor
ICAgICAqLworICAgIGZ1bmN0aW9uICRodHRwKHJlcXVlc3RDb25maWcpIHsKKworICAgICAgaWYg
KCFhbmd1bGFyLmlzT2JqZWN0KHJlcXVlc3RDb25maWcpKSB7CisgICAgICAgIHRocm93IG1pbkVy
cignJGh0dHAnKSgnYmFkcmVxJywgJ0h0dHAgcmVxdWVzdCBjb25maWd1cmF0aW9uIG11c3QgYmUg
YW4gb2JqZWN0LiAgUmVjZWl2ZWQ6IHswfScsIHJlcXVlc3RDb25maWcpOworICAgICAgfQorCisg
ICAgICB2YXIgY29uZmlnID0gZXh0ZW5kKHsKKyAgICAgICAgbWV0aG9kOiAnZ2V0JywKKyAgICAg
ICAgdHJhbnNmb3JtUmVxdWVzdDogZGVmYXVsdHMudHJhbnNmb3JtUmVxdWVzdCwKKyAgICAgICAg
dHJhbnNmb3JtUmVzcG9uc2U6IGRlZmF1bHRzLnRyYW5zZm9ybVJlc3BvbnNlLAorICAgICAgICBw
YXJhbVNlcmlhbGl6ZXI6IGRlZmF1bHRzLnBhcmFtU2VyaWFsaXplcgorICAgICAgfSwgcmVxdWVz
dENvbmZpZyk7CisKKyAgICAgIGNvbmZpZy5oZWFkZXJzID0gbWVyZ2VIZWFkZXJzKHJlcXVlc3RD
b25maWcpOworICAgICAgY29uZmlnLm1ldGhvZCA9IHVwcGVyY2FzZShjb25maWcubWV0aG9kKTsK
KyAgICAgIGNvbmZpZy5wYXJhbVNlcmlhbGl6ZXIgPSBpc1N0cmluZyhjb25maWcucGFyYW1TZXJp
YWxpemVyKSA/CisgICAgICAgICRpbmplY3Rvci5nZXQoY29uZmlnLnBhcmFtU2VyaWFsaXplcikg
OiBjb25maWcucGFyYW1TZXJpYWxpemVyOworCisgICAgICB2YXIgc2VydmVyUmVxdWVzdCA9IGZ1
bmN0aW9uKGNvbmZpZykgeworICAgICAgICB2YXIgaGVhZGVycyA9IGNvbmZpZy5oZWFkZXJzOwor
ICAgICAgICB2YXIgcmVxRGF0YSA9IHRyYW5zZm9ybURhdGEoY29uZmlnLmRhdGEsIGhlYWRlcnNH
ZXR0ZXIoaGVhZGVycyksIHVuZGVmaW5lZCwgY29uZmlnLnRyYW5zZm9ybVJlcXVlc3QpOworCisg
ICAgICAgIC8vIHN0cmlwIGNvbnRlbnQtdHlwZSBpZiBkYXRhIGlzIHVuZGVmaW5lZAorICAgICAg
ICBpZiAoaXNVbmRlZmluZWQocmVxRGF0YSkpIHsKKyAgICAgICAgICBmb3JFYWNoKGhlYWRlcnMs
IGZ1bmN0aW9uKHZhbHVlLCBoZWFkZXIpIHsKKyAgICAgICAgICAgIGlmIChsb3dlcmNhc2UoaGVh
ZGVyKSA9PT0gJ2NvbnRlbnQtdHlwZScpIHsKKyAgICAgICAgICAgICAgICBkZWxldGUgaGVhZGVy
c1toZWFkZXJdOworICAgICAgICAgICAgfQorICAgICAgICAgIH0pOworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKGlzVW5kZWZpbmVkKGNvbmZpZy53aXRoQ3JlZGVudGlhbHMpICYmICFpc1VuZGVm
aW5lZChkZWZhdWx0cy53aXRoQ3JlZGVudGlhbHMpKSB7CisgICAgICAgICAgY29uZmlnLndpdGhD
cmVkZW50aWFscyA9IGRlZmF1bHRzLndpdGhDcmVkZW50aWFsczsKKyAgICAgICAgfQorCisgICAg
ICAgIC8vIHNlbmQgcmVxdWVzdAorICAgICAgICByZXR1cm4gc2VuZFJlcShjb25maWcsIHJlcURh
dGEpLnRoZW4odHJhbnNmb3JtUmVzcG9uc2UsIHRyYW5zZm9ybVJlc3BvbnNlKTsKKyAgICAgIH07
CisKKyAgICAgIHZhciBjaGFpbiA9IFtzZXJ2ZXJSZXF1ZXN0LCB1bmRlZmluZWRdOworICAgICAg
dmFyIHByb21pc2UgPSAkcS53aGVuKGNvbmZpZyk7CisKKyAgICAgIC8vIGFwcGx5IGludGVyY2Vw
dG9ycworICAgICAgZm9yRWFjaChyZXZlcnNlZEludGVyY2VwdG9ycywgZnVuY3Rpb24oaW50ZXJj
ZXB0b3IpIHsKKyAgICAgICAgaWYgKGludGVyY2VwdG9yLnJlcXVlc3QgfHwgaW50ZXJjZXB0b3Iu
cmVxdWVzdEVycm9yKSB7CisgICAgICAgICAgY2hhaW4udW5zaGlmdChpbnRlcmNlcHRvci5yZXF1
ZXN0LCBpbnRlcmNlcHRvci5yZXF1ZXN0RXJyb3IpOworICAgICAgICB9CisgICAgICAgIGlmIChp
bnRlcmNlcHRvci5yZXNwb25zZSB8fCBpbnRlcmNlcHRvci5yZXNwb25zZUVycm9yKSB7CisgICAg
ICAgICAgY2hhaW4ucHVzaChpbnRlcmNlcHRvci5yZXNwb25zZSwgaW50ZXJjZXB0b3IucmVzcG9u
c2VFcnJvcik7CisgICAgICAgIH0KKyAgICAgIH0pOworCisgICAgICB3aGlsZSAoY2hhaW4ubGVu
Z3RoKSB7CisgICAgICAgIHZhciB0aGVuRm4gPSBjaGFpbi5zaGlmdCgpOworICAgICAgICB2YXIg
cmVqZWN0Rm4gPSBjaGFpbi5zaGlmdCgpOworCisgICAgICAgIHByb21pc2UgPSBwcm9taXNlLnRo
ZW4odGhlbkZuLCByZWplY3RGbik7CisgICAgICB9CisKKyAgICAgIHByb21pc2Uuc3VjY2VzcyA9
IGZ1bmN0aW9uKGZuKSB7CisgICAgICAgIGFzc2VydEFyZ0ZuKGZuLCAnZm4nKTsKKworICAgICAg
ICBwcm9taXNlLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHsKKyAgICAgICAgICBmbihyZXNwb25z
ZS5kYXRhLCByZXNwb25zZS5zdGF0dXMsIHJlc3BvbnNlLmhlYWRlcnMsIGNvbmZpZyk7CisgICAg
ICAgIH0pOworICAgICAgICByZXR1cm4gcHJvbWlzZTsKKyAgICAgIH07CisKKyAgICAgIHByb21p
c2UuZXJyb3IgPSBmdW5jdGlvbihmbikgeworICAgICAgICBhc3NlcnRBcmdGbihmbiwgJ2ZuJyk7
CisKKyAgICAgICAgcHJvbWlzZS50aGVuKG51bGwsIGZ1bmN0aW9uKHJlc3BvbnNlKSB7CisgICAg
ICAgICAgZm4ocmVzcG9uc2UuZGF0YSwgcmVzcG9uc2Uuc3RhdHVzLCByZXNwb25zZS5oZWFkZXJz
LCBjb25maWcpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuIHByb21pc2U7CisgICAgICB9
OworCisgICAgICByZXR1cm4gcHJvbWlzZTsKKworICAgICAgZnVuY3Rpb24gdHJhbnNmb3JtUmVz
cG9uc2UocmVzcG9uc2UpIHsKKyAgICAgICAgLy8gbWFrZSBhIGNvcHkgc2luY2UgdGhlIHJlc3Bv
bnNlIG11c3QgYmUgY2FjaGVhYmxlCisgICAgICAgIHZhciByZXNwID0gZXh0ZW5kKHt9LCByZXNw
b25zZSk7CisgICAgICAgIGlmICghcmVzcG9uc2UuZGF0YSkgeworICAgICAgICAgIHJlc3AuZGF0
YSA9IHJlc3BvbnNlLmRhdGE7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgcmVzcC5kYXRh
ID0gdHJhbnNmb3JtRGF0YShyZXNwb25zZS5kYXRhLCByZXNwb25zZS5oZWFkZXJzLCByZXNwb25z
ZS5zdGF0dXMsIGNvbmZpZy50cmFuc2Zvcm1SZXNwb25zZSk7CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIChpc1N1Y2Nlc3MocmVzcG9uc2Uuc3RhdHVzKSkKKyAgICAgICAgICA/IHJlc3AKKyAg
ICAgICAgICA6ICRxLnJlamVjdChyZXNwKTsKKyAgICAgIH0KKworICAgICAgZnVuY3Rpb24gZXhl
Y3V0ZUhlYWRlckZucyhoZWFkZXJzLCBjb25maWcpIHsKKyAgICAgICAgdmFyIGhlYWRlckNvbnRl
bnQsIHByb2Nlc3NlZEhlYWRlcnMgPSB7fTsKKworICAgICAgICBmb3JFYWNoKGhlYWRlcnMsIGZ1
bmN0aW9uKGhlYWRlckZuLCBoZWFkZXIpIHsKKyAgICAgICAgICBpZiAoaXNGdW5jdGlvbihoZWFk
ZXJGbikpIHsKKyAgICAgICAgICAgIGhlYWRlckNvbnRlbnQgPSBoZWFkZXJGbihjb25maWcpOwor
ICAgICAgICAgICAgaWYgKGhlYWRlckNvbnRlbnQgIT0gbnVsbCkgeworICAgICAgICAgICAgICBw
cm9jZXNzZWRIZWFkZXJzW2hlYWRlcl0gPSBoZWFkZXJDb250ZW50OworICAgICAgICAgICAgfQor
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwcm9jZXNzZWRIZWFkZXJzW2hlYWRlcl0g
PSBoZWFkZXJGbjsKKyAgICAgICAgICB9CisgICAgICAgIH0pOworCisgICAgICAgIHJldHVybiBw
cm9jZXNzZWRIZWFkZXJzOworICAgICAgfQorCisgICAgICBmdW5jdGlvbiBtZXJnZUhlYWRlcnMo
Y29uZmlnKSB7CisgICAgICAgIHZhciBkZWZIZWFkZXJzID0gZGVmYXVsdHMuaGVhZGVycywKKyAg
ICAgICAgICAgIHJlcUhlYWRlcnMgPSBleHRlbmQoe30sIGNvbmZpZy5oZWFkZXJzKSwKKyAgICAg
ICAgICAgIGRlZkhlYWRlck5hbWUsIGxvd2VyY2FzZURlZkhlYWRlck5hbWUsIHJlcUhlYWRlck5h
bWU7CisKKyAgICAgICAgZGVmSGVhZGVycyA9IGV4dGVuZCh7fSwgZGVmSGVhZGVycy5jb21tb24s
IGRlZkhlYWRlcnNbbG93ZXJjYXNlKGNvbmZpZy5tZXRob2QpXSk7CisKKyAgICAgICAgLy8gdXNp
bmcgZm9yLWluIGluc3RlYWQgb2YgZm9yRWFjaCB0byBhdm9pZCB1bmVjZXNzYXJ5IGl0ZXJhdGlv
biBhZnRlciBoZWFkZXIgaGFzIGJlZW4gZm91bmQKKyAgICAgICAgZGVmYXVsdEhlYWRlcnNJdGVy
YXRpb246CisgICAgICAgIGZvciAoZGVmSGVhZGVyTmFtZSBpbiBkZWZIZWFkZXJzKSB7CisgICAg
ICAgICAgbG93ZXJjYXNlRGVmSGVhZGVyTmFtZSA9IGxvd2VyY2FzZShkZWZIZWFkZXJOYW1lKTsK
KworICAgICAgICAgIGZvciAocmVxSGVhZGVyTmFtZSBpbiByZXFIZWFkZXJzKSB7CisgICAgICAg
ICAgICBpZiAobG93ZXJjYXNlKHJlcUhlYWRlck5hbWUpID09PSBsb3dlcmNhc2VEZWZIZWFkZXJO
YW1lKSB7CisgICAgICAgICAgICAgIGNvbnRpbnVlIGRlZmF1bHRIZWFkZXJzSXRlcmF0aW9uOwor
ICAgICAgICAgICAgfQorICAgICAgICAgIH0KKworICAgICAgICAgIHJlcUhlYWRlcnNbZGVmSGVh
ZGVyTmFtZV0gPSBkZWZIZWFkZXJzW2RlZkhlYWRlck5hbWVdOworICAgICAgICB9CisKKyAgICAg
ICAgLy8gZXhlY3V0ZSBpZiBoZWFkZXIgdmFsdWUgaXMgYSBmdW5jdGlvbiBmb3IgbWVyZ2VkIGhl
YWRlcnMKKyAgICAgICAgcmV0dXJuIGV4ZWN1dGVIZWFkZXJGbnMocmVxSGVhZGVycywgc2hhbGxv
d0NvcHkoY29uZmlnKSk7CisgICAgICB9CisgICAgfQorCisgICAgJGh0dHAucGVuZGluZ1JlcXVl
c3RzID0gW107CisKKyAgICAvKioKKyAgICAgKiBAbmdkb2MgbWV0aG9kCisgICAgICogQG5hbWUg
JGh0dHAjZ2V0CisgICAgICoKKyAgICAgKiBAZGVzY3JpcHRpb24KKyAgICAgKiBTaG9ydGN1dCBt
ZXRob2QgdG8gcGVyZm9ybSBgR0VUYCByZXF1ZXN0LgorICAgICAqCisgICAgICogQHBhcmFtIHtz
dHJpbmd9IHVybCBSZWxhdGl2ZSBvciBhYnNvbHV0ZSBVUkwgc3BlY2lmeWluZyB0aGUgZGVzdGlu
YXRpb24gb2YgdGhlIHJlcXVlc3QKKyAgICAgKiBAcGFyYW0ge09iamVjdD19IGNvbmZpZyBPcHRp
b25hbCBjb25maWd1cmF0aW9uIG9iamVjdAorICAgICAqIEByZXR1cm5zIHtIdHRwUHJvbWlzZX0g
RnV0dXJlIG9iamVjdAorICAgICAqLworCisgICAgLyoqCisgICAgICogQG5nZG9jIG1ldGhvZAor
ICAgICAqIEBuYW1lICRodHRwI2RlbGV0ZQorICAgICAqCisgICAgICogQGRlc2NyaXB0aW9uCisg
ICAgICogU2hvcnRjdXQgbWV0aG9kIHRvIHBlcmZvcm0gYERFTEVURWAgcmVxdWVzdC4KKyAgICAg
KgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgUmVsYXRpdmUgb3IgYWJzb2x1dGUgVVJMIHNw
ZWNpZnlpbmcgdGhlIGRlc3RpbmF0aW9uIG9mIHRoZSByZXF1ZXN0CisgICAgICogQHBhcmFtIHtP
YmplY3Q9fSBjb25maWcgT3B0aW9uYWwgY29uZmlndXJhdGlvbiBvYmplY3QKKyAgICAgKiBAcmV0
dXJucyB7SHR0cFByb21pc2V9IEZ1dHVyZSBvYmplY3QKKyAgICAgKi8KKworICAgIC8qKgorICAg
ICAqIEBuZ2RvYyBtZXRob2QKKyAgICAgKiBAbmFtZSAkaHR0cCNoZWFkCisgICAgICoKKyAgICAg
KiBAZGVzY3JpcHRpb24KKyAgICAgKiBTaG9ydGN1dCBtZXRob2QgdG8gcGVyZm9ybSBgSEVBRGAg
cmVxdWVzdC4KKyAgICAgKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgUmVsYXRpdmUgb3Ig
YWJzb2x1dGUgVVJMIHNwZWNpZnlpbmcgdGhlIGRlc3RpbmF0aW9uIG9mIHRoZSByZXF1ZXN0Cisg
ICAgICogQHBhcmFtIHtPYmplY3Q9fSBjb25maWcgT3B0aW9uYWwgY29uZmlndXJhdGlvbiBvYmpl
Y3QKKyAgICAgKiBAcmV0dXJucyB7SHR0cFByb21pc2V9IEZ1dHVyZSBvYmplY3QKKyAgICAgKi8K
KworICAgIC8qKgorICAgICAqIEBuZ2RvYyBtZXRob2QKKyAgICAgKiBAbmFtZSAkaHR0cCNqc29u
cAorICAgICAqCisgICAgICogQGRlc2NyaXB0aW9uCisgICAgICogU2hvcnRjdXQgbWV0aG9kIHRv
IHBlcmZvcm0gYEpTT05QYCByZXF1ZXN0LgorICAgICAqCisgICAgICogQHBhcmFtIHtzdHJpbmd9
IHVybCBSZWxhdGl2ZSBvciBhYnNvbHV0ZSBVUkwgc3BlY2lmeWluZyB0aGUgZGVzdGluYXRpb24g
b2YgdGhlIHJlcXVlc3QuCisgICAgICogICAgICAgICAgICAgICAgICAgICBUaGUgbmFtZSBvZiB0
aGUgY2FsbGJhY2sgc2hvdWxkIGJlIHRoZSBzdHJpbmcgYEpTT05fQ0FMTEJBQ0tgLgorICAgICAq
IEBwYXJhbSB7T2JqZWN0PX0gY29uZmlnIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gb2JqZWN0Cisg
ICAgICogQHJldHVybnMge0h0dHBQcm9taXNlfSBGdXR1cmUgb2JqZWN0CisgICAgICovCisgICAg
Y3JlYXRlU2hvcnRNZXRob2RzKCdnZXQnLCAnZGVsZXRlJywgJ2hlYWQnLCAnanNvbnAnKTsKKwor
ICAgIC8qKgorICAgICAqIEBuZ2RvYyBtZXRob2QKKyAgICAgKiBAbmFtZSAkaHR0cCNwb3N0Cisg
ICAgICoKKyAgICAgKiBAZGVzY3JpcHRpb24KKyAgICAgKiBTaG9ydGN1dCBtZXRob2QgdG8gcGVy
Zm9ybSBgUE9TVGAgcmVxdWVzdC4KKyAgICAgKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1cmwg
UmVsYXRpdmUgb3IgYWJzb2x1dGUgVVJMIHNwZWNpZnlpbmcgdGhlIGRlc3RpbmF0aW9uIG9mIHRo
ZSByZXF1ZXN0CisgICAgICogQHBhcmFtIHsqfSBkYXRhIFJlcXVlc3QgY29udGVudAorICAgICAq
IEBwYXJhbSB7T2JqZWN0PX0gY29uZmlnIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gb2JqZWN0Cisg
ICAgICogQHJldHVybnMge0h0dHBQcm9taXNlfSBGdXR1cmUgb2JqZWN0CisgICAgICovCisKKyAg
ICAvKioKKyAgICAgKiBAbmdkb2MgbWV0aG9kCisgICAgICogQG5hbWUgJGh0dHAjcHV0CisgICAg
ICoKKyAgICAgKiBAZGVzY3JpcHRpb24KKyAgICAgKiBTaG9ydGN1dCBtZXRob2QgdG8gcGVyZm9y
bSBgUFVUYCByZXF1ZXN0LgorICAgICAqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IHVybCBSZWxh
dGl2ZSBvciBhYnNvbHV0ZSBVUkwgc3BlY2lmeWluZyB0aGUgZGVzdGluYXRpb24gb2YgdGhlIHJl
cXVlc3QKKyAgICAgKiBAcGFyYW0geyp9IGRhdGEgUmVxdWVzdCBjb250ZW50CisgICAgICogQHBh
cmFtIHtPYmplY3Q9fSBjb25maWcgT3B0aW9uYWwgY29uZmlndXJhdGlvbiBvYmplY3QKKyAgICAg
KiBAcmV0dXJucyB7SHR0cFByb21pc2V9IEZ1dHVyZSBvYmplY3QKKyAgICAgKi8KKworICAgICAv
KioKKyAgICAgICogQG5nZG9jIG1ldGhvZAorICAgICAgKiBAbmFtZSAkaHR0cCNwYXRjaAorICAg
ICAgKgorICAgICAgKiBAZGVzY3JpcHRpb24KKyAgICAgICogU2hvcnRjdXQgbWV0aG9kIHRvIHBl
cmZvcm0gYFBBVENIYCByZXF1ZXN0LgorICAgICAgKgorICAgICAgKiBAcGFyYW0ge3N0cmluZ30g
dXJsIFJlbGF0aXZlIG9yIGFic29sdXRlIFVSTCBzcGVjaWZ5aW5nIHRoZSBkZXN0aW5hdGlvbiBv
ZiB0aGUgcmVxdWVzdAorICAgICAgKiBAcGFyYW0geyp9IGRhdGEgUmVxdWVzdCBjb250ZW50Cisg
ICAgICAqIEBwYXJhbSB7T2JqZWN0PX0gY29uZmlnIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gb2Jq
ZWN0CisgICAgICAqIEByZXR1cm5zIHtIdHRwUHJvbWlzZX0gRnV0dXJlIG9iamVjdAorICAgICAg
Ki8KKyAgICBjcmVhdGVTaG9ydE1ldGhvZHNXaXRoRGF0YSgncG9zdCcsICdwdXQnLCAncGF0Y2gn
KTsKKworICAgICAgICAvKioKKyAgICAgICAgICogQG5nZG9jIHByb3BlcnR5CisgICAgICAgICAq
IEBuYW1lICRodHRwI2RlZmF1bHRzCisgICAgICAgICAqCisgICAgICAgICAqIEBkZXNjcmlwdGlv
bgorICAgICAgICAgKiBSdW50aW1lIGVxdWl2YWxlbnQgb2YgdGhlIGAkaHR0cFByb3ZpZGVyLmRl
ZmF1bHRzYCBwcm9wZXJ0eS4gQWxsb3dzIGNvbmZpZ3VyYXRpb24gb2YKKyAgICAgICAgICogZGVm
YXVsdCBoZWFkZXJzLCB3aXRoQ3JlZGVudGlhbHMgYXMgd2VsbCBhcyByZXF1ZXN0IGFuZCByZXNw
b25zZSB0cmFuc2Zvcm1hdGlvbnMuCisgICAgICAgICAqCisgICAgICAgICAqIFNlZSAiU2V0dGlu
ZyBIVFRQIEhlYWRlcnMiIGFuZCAiVHJhbnNmb3JtaW5nIFJlcXVlc3RzIGFuZCBSZXNwb25zZXMi
IHNlY3Rpb25zIGFib3ZlLgorICAgICAgICAgKi8KKyAgICAkaHR0cC5kZWZhdWx0cyA9IGRlZmF1
bHRzOworCisKKyAgICByZXR1cm4gJGh0dHA7CisKKworICAgIGZ1bmN0aW9uIGNyZWF0ZVNob3J0
TWV0aG9kcyhuYW1lcykgeworICAgICAgZm9yRWFjaChhcmd1bWVudHMsIGZ1bmN0aW9uKG5hbWUp
IHsKKyAgICAgICAgJGh0dHBbbmFtZV0gPSBmdW5jdGlvbih1cmwsIGNvbmZpZykgeworICAgICAg
ICAgIHJldHVybiAkaHR0cChleHRlbmQoe30sIGNvbmZpZyB8fCB7fSwgeworICAgICAgICAgICAg
bWV0aG9kOiBuYW1lLAorICAgICAgICAgICAgdXJsOiB1cmwKKyAgICAgICAgICB9KSk7CisgICAg
ICAgIH07CisgICAgICB9KTsKKyAgICB9CisKKworICAgIGZ1bmN0aW9uIGNyZWF0ZVNob3J0TWV0
aG9kc1dpdGhEYXRhKG5hbWUpIHsKKyAgICAgIGZvckVhY2goYXJndW1lbnRzLCBmdW5jdGlvbihu
YW1lKSB7CisgICAgICAgICRodHRwW25hbWVdID0gZnVuY3Rpb24odXJsLCBkYXRhLCBjb25maWcp
IHsKKyAgICAgICAgICByZXR1cm4gJGh0dHAoZXh0ZW5kKHt9LCBjb25maWcgfHwge30sIHsKKyAg
ICAgICAgICAgIG1ldGhvZDogbmFtZSwKKyAgICAgICAgICAgIHVybDogdXJsLAorICAgICAgICAg
ICAgZGF0YTogZGF0YQorICAgICAgICAgIH0pKTsKKyAgICAgICAgfTsKKyAgICAgIH0pOworICAg
IH0KKworCisgICAgLyoqCisgICAgICogTWFrZXMgdGhlIHJlcXVlc3QuCisgICAgICoKKyAgICAg
KiAhISEgQUNDRVNTRVMgQ0xPU1VSRSBWQVJTOgorICAgICAqICRodHRwQmFja2VuZCwgZGVmYXVs
dHMsICRsb2csICRyb290U2NvcGUsIGRlZmF1bHRDYWNoZSwgJGh0dHAucGVuZGluZ1JlcXVlc3Rz
CisgICAgICovCisgICAgZnVuY3Rpb24gc2VuZFJlcShjb25maWcsIHJlcURhdGEpIHsKKyAgICAg
IHZhciBkZWZlcnJlZCA9ICRxLmRlZmVyKCksCisgICAgICAgICAgcHJvbWlzZSA9IGRlZmVycmVk
LnByb21pc2UsCisgICAgICAgICAgY2FjaGUsCisgICAgICAgICAgY2FjaGVkUmVzcCwKKyAgICAg
ICAgICByZXFIZWFkZXJzID0gY29uZmlnLmhlYWRlcnMsCisgICAgICAgICAgdXJsID0gYnVpbGRV
cmwoY29uZmlnLnVybCwgY29uZmlnLnBhcmFtU2VyaWFsaXplcihjb25maWcucGFyYW1zKSk7CisK
KyAgICAgICRodHRwLnBlbmRpbmdSZXF1ZXN0cy5wdXNoKGNvbmZpZyk7CisgICAgICBwcm9taXNl
LnRoZW4ocmVtb3ZlUGVuZGluZ1JlcSwgcmVtb3ZlUGVuZGluZ1JlcSk7CisKKworICAgICAgaWYg
KChjb25maWcuY2FjaGUgfHwgZGVmYXVsdHMuY2FjaGUpICYmIGNvbmZpZy5jYWNoZSAhPT0gZmFs
c2UgJiYKKyAgICAgICAgICAoY29uZmlnLm1ldGhvZCA9PT0gJ0dFVCcgfHwgY29uZmlnLm1ldGhv
ZCA9PT0gJ0pTT05QJykpIHsKKyAgICAgICAgY2FjaGUgPSBpc09iamVjdChjb25maWcuY2FjaGUp
ID8gY29uZmlnLmNhY2hlCisgICAgICAgICAgICAgIDogaXNPYmplY3QoZGVmYXVsdHMuY2FjaGUp
ID8gZGVmYXVsdHMuY2FjaGUKKyAgICAgICAgICAgICAgOiBkZWZhdWx0Q2FjaGU7CisgICAgICB9
CisKKyAgICAgIGlmIChjYWNoZSkgeworICAgICAgICBjYWNoZWRSZXNwID0gY2FjaGUuZ2V0KHVy
bCk7CisgICAgICAgIGlmIChpc0RlZmluZWQoY2FjaGVkUmVzcCkpIHsKKyAgICAgICAgICBpZiAo
aXNQcm9taXNlTGlrZShjYWNoZWRSZXNwKSkgeworICAgICAgICAgICAgLy8gY2FjaGVkIHJlcXVl
c3QgaGFzIGFscmVhZHkgYmVlbiBzZW50LCBidXQgdGhlcmUgaXMgbm8gcmVzcG9uc2UgeWV0Cisg
ICAgICAgICAgICBjYWNoZWRSZXNwLnRoZW4ocmVzb2x2ZVByb21pc2VXaXRoUmVzdWx0LCByZXNv
bHZlUHJvbWlzZVdpdGhSZXN1bHQpOworICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAv
LyBzZXJ2aW5nIGZyb20gY2FjaGUKKyAgICAgICAgICAgIGlmIChpc0FycmF5KGNhY2hlZFJlc3Ap
KSB7CisgICAgICAgICAgICAgIHJlc29sdmVQcm9taXNlKGNhY2hlZFJlc3BbMV0sIGNhY2hlZFJl
c3BbMF0sIHNoYWxsb3dDb3B5KGNhY2hlZFJlc3BbMl0pLCBjYWNoZWRSZXNwWzNdKTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgIHJlc29sdmVQcm9taXNlKGNhY2hlZFJlc3As
IDIwMCwge30sICdPSycpOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAvLyBwdXQgdGhlIHByb21pc2UgZm9yIHRoZSBub24tdHJhbnNmb3Jt
ZWQgcmVzcG9uc2UgaW50byBjYWNoZSBhcyBhIHBsYWNlaG9sZGVyCisgICAgICAgICAgY2FjaGUu
cHV0KHVybCwgcHJvbWlzZSk7CisgICAgICAgIH0KKyAgICAgIH0KKworCisgICAgICAvLyBpZiB3
ZSB3b24ndCBoYXZlIHRoZSByZXNwb25zZSBpbiBjYWNoZSwgc2V0IHRoZSB4c3JmIGhlYWRlcnMg
YW5kCisgICAgICAvLyBzZW5kIHRoZSByZXF1ZXN0IHRvIHRoZSBiYWNrZW5kCisgICAgICBpZiAo
aXNVbmRlZmluZWQoY2FjaGVkUmVzcCkpIHsKKyAgICAgICAgdmFyIHhzcmZWYWx1ZSA9IHVybElz
U2FtZU9yaWdpbihjb25maWcudXJsKQorICAgICAgICAgICAgPyAkJGNvb2tpZVJlYWRlcigpW2Nv
bmZpZy54c3JmQ29va2llTmFtZSB8fCBkZWZhdWx0cy54c3JmQ29va2llTmFtZV0KKyAgICAgICAg
ICAgIDogdW5kZWZpbmVkOworICAgICAgICBpZiAoeHNyZlZhbHVlKSB7CisgICAgICAgICAgcmVx
SGVhZGVyc1soY29uZmlnLnhzcmZIZWFkZXJOYW1lIHx8IGRlZmF1bHRzLnhzcmZIZWFkZXJOYW1l
KV0gPSB4c3JmVmFsdWU7CisgICAgICAgIH0KKworICAgICAgICAkaHR0cEJhY2tlbmQoY29uZmln
Lm1ldGhvZCwgdXJsLCByZXFEYXRhLCBkb25lLCByZXFIZWFkZXJzLCBjb25maWcudGltZW91dCwK
KyAgICAgICAgICAgIGNvbmZpZy53aXRoQ3JlZGVudGlhbHMsIGNvbmZpZy5yZXNwb25zZVR5cGUp
OworICAgICAgfQorCisgICAgICByZXR1cm4gcHJvbWlzZTsKKworCisgICAgICAvKioKKyAgICAg
ICAqIENhbGxiYWNrIHJlZ2lzdGVyZWQgdG8gJGh0dHBCYWNrZW5kKCk6CisgICAgICAgKiAgLSBj
YWNoZXMgdGhlIHJlc3BvbnNlIGlmIGRlc2lyZWQKKyAgICAgICAqICAtIHJlc29sdmVzIHRoZSBy
YXcgJGh0dHAgcHJvbWlzZQorICAgICAgICogIC0gY2FsbHMgJGFwcGx5CisgICAgICAgKi8KKyAg
ICAgIGZ1bmN0aW9uIGRvbmUoc3RhdHVzLCByZXNwb25zZSwgaGVhZGVyc1N0cmluZywgc3RhdHVz
VGV4dCkgeworICAgICAgICBpZiAoY2FjaGUpIHsKKyAgICAgICAgICBpZiAoaXNTdWNjZXNzKHN0
YXR1cykpIHsKKyAgICAgICAgICAgIGNhY2hlLnB1dCh1cmwsIFtzdGF0dXMsIHJlc3BvbnNlLCBw
YXJzZUhlYWRlcnMoaGVhZGVyc1N0cmluZyksIHN0YXR1c1RleHRdKTsKKyAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgLy8gcmVtb3ZlIHByb21pc2UgZnJvbSB0aGUgY2FjaGUKKyAgICAg
ICAgICAgIGNhY2hlLnJlbW92ZSh1cmwpOworICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHJlc29sdmVIdHRwUHJvbWlzZSgpIHsKKyAgICAgICAgICByZXNvbHZlUHJv
bWlzZShyZXNwb25zZSwgc3RhdHVzLCBoZWFkZXJzU3RyaW5nLCBzdGF0dXNUZXh0KTsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmICh1c2VBcHBseUFzeW5jKSB7CisgICAgICAgICAgJHJvb3RTY29w
ZS4kYXBwbHlBc3luYyhyZXNvbHZlSHR0cFByb21pc2UpOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgIHJlc29sdmVIdHRwUHJvbWlzZSgpOworICAgICAgICAgIGlmICghJHJvb3RTY29wZS4k
JHBoYXNlKSAkcm9vdFNjb3BlLiRhcHBseSgpOworICAgICAgICB9CisgICAgICB9CisKKworICAg
ICAgLyoqCisgICAgICAgKiBSZXNvbHZlcyB0aGUgcmF3ICRodHRwIHByb21pc2UuCisgICAgICAg
Ki8KKyAgICAgIGZ1bmN0aW9uIHJlc29sdmVQcm9taXNlKHJlc3BvbnNlLCBzdGF0dXMsIGhlYWRl
cnMsIHN0YXR1c1RleHQpIHsKKyAgICAgICAgLy8gbm9ybWFsaXplIGludGVybmFsIHN0YXR1c2Vz
IHRvIDAKKyAgICAgICAgc3RhdHVzID0gTWF0aC5tYXgoc3RhdHVzLCAwKTsKKworICAgICAgICAo
aXNTdWNjZXNzKHN0YXR1cykgPyBkZWZlcnJlZC5yZXNvbHZlIDogZGVmZXJyZWQucmVqZWN0KSh7
CisgICAgICAgICAgZGF0YTogcmVzcG9uc2UsCisgICAgICAgICAgc3RhdHVzOiBzdGF0dXMsCisg
ICAgICAgICAgaGVhZGVyczogaGVhZGVyc0dldHRlcihoZWFkZXJzKSwKKyAgICAgICAgICBjb25m
aWc6IGNvbmZpZywKKyAgICAgICAgICBzdGF0dXNUZXh0OiBzdGF0dXNUZXh0CisgICAgICAgIH0p
OworICAgICAgfQorCisgICAgICBmdW5jdGlvbiByZXNvbHZlUHJvbWlzZVdpdGhSZXN1bHQocmVz
dWx0KSB7CisgICAgICAgIHJlc29sdmVQcm9taXNlKHJlc3VsdC5kYXRhLCByZXN1bHQuc3RhdHVz
LCBzaGFsbG93Q29weShyZXN1bHQuaGVhZGVycygpKSwgcmVzdWx0LnN0YXR1c1RleHQpOworICAg
ICAgfQorCisgICAgICBmdW5jdGlvbiByZW1vdmVQZW5kaW5nUmVxKCkgeworICAgICAgICB2YXIg
aWR4ID0gJGh0dHAucGVuZGluZ1JlcXVlc3RzLmluZGV4T2YoY29uZmlnKTsKKyAgICAgICAgaWYg
KGlkeCAhPT0gLTEpICRodHRwLnBlbmRpbmdSZXF1ZXN0cy5zcGxpY2UoaWR4LCAxKTsKKyAgICAg
IH0KKyAgICB9CisKKworICAgIGZ1bmN0aW9uIGJ1aWxkVXJsKHVybCwgc2VyaWFsaXplZFBhcmFt
cykgeworICAgICAgaWYgKHNlcmlhbGl6ZWRQYXJhbXMubGVuZ3RoID4gMCkgeworICAgICAgICB1
cmwgKz0gKCh1cmwuaW5kZXhPZignPycpID09IC0xKSA/ICc/JyA6ICcmJykgKyBzZXJpYWxpemVk
UGFyYW1zOworICAgICAgfQorICAgICAgcmV0dXJuIHVybDsKKyAgICB9CisgIH1dOworfQorCitm
dW5jdGlvbiBjcmVhdGVYaHIoKSB7CisgICAgcmV0dXJuIG5ldyB3aW5kb3cuWE1MSHR0cFJlcXVl
c3QoKTsKK30KKworLyoqCisgKiBAbmdkb2Mgc2VydmljZQorICogQG5hbWUgJGh0dHBCYWNrZW5k
CisgKiBAcmVxdWlyZXMgJHdpbmRvdworICogQHJlcXVpcmVzICRkb2N1bWVudAorICoKKyAqIEBk
ZXNjcmlwdGlvbgorICogSFRUUCBiYWNrZW5kIHVzZWQgYnkgdGhlIHtAbGluayBuZy4kaHR0cCBz
ZXJ2aWNlfSB0aGF0IGRlbGVnYXRlcyB0bworICogWE1MSHR0cFJlcXVlc3Qgb2JqZWN0IG9yIEpT
T05QIGFuZCBkZWFscyB3aXRoIGJyb3dzZXIgaW5jb21wYXRpYmlsaXRpZXMuCisgKgorICogWW91
IHNob3VsZCBuZXZlciBuZWVkIHRvIHVzZSB0aGlzIHNlcnZpY2UgZGlyZWN0bHksIGluc3RlYWQg
dXNlIHRoZSBoaWdoZXItbGV2ZWwgYWJzdHJhY3Rpb25zOgorICoge0BsaW5rIG5nLiRodHRwICRo
dHRwfSBvciB7QGxpbmsgbmdSZXNvdXJjZS4kcmVzb3VyY2UgJHJlc291cmNlfS4KKyAqCisgKiBE
dXJpbmcgdGVzdGluZyB0aGlzIGltcGxlbWVudGF0aW9uIGlzIHN3YXBwZWQgd2l0aCB7QGxpbmsg
bmdNb2NrLiRodHRwQmFja2VuZCBtb2NrCisgKiAkaHR0cEJhY2tlbmR9IHdoaWNoIGNhbiBiZSB0
cmFpbmVkIHdpdGggcmVzcG9uc2VzLgorICovCitmdW5jdGlvbiAkSHR0cEJhY2tlbmRQcm92aWRl
cigpIHsKKyAgdGhpcy4kZ2V0ID0gWyckYnJvd3NlcicsICckd2luZG93JywgJyRkb2N1bWVudCcs
IGZ1bmN0aW9uKCRicm93c2VyLCAkd2luZG93LCAkZG9jdW1lbnQpIHsKKyAgICByZXR1cm4gY3Jl
YXRlSHR0cEJhY2tlbmQoJGJyb3dzZXIsIGNyZWF0ZVhociwgJGJyb3dzZXIuZGVmZXIsICR3aW5k
b3cuYW5ndWxhci5jYWxsYmFja3MsICRkb2N1bWVudFswXSk7CisgIH1dOworfQorCitmdW5jdGlv
biBjcmVhdGVIdHRwQmFja2VuZCgkYnJvd3NlciwgY3JlYXRlWGhyLCAkYnJvd3NlckRlZmVyLCBj
YWxsYmFja3MsIHJhd0RvY3VtZW50KSB7CisgIC8vIFRPRE8odm9qdGEpOiBmaXggdGhlIHNpZ25h
dHVyZQorICByZXR1cm4gZnVuY3Rpb24obWV0aG9kLCB1cmwsIHBvc3QsIGNhbGxiYWNrLCBoZWFk
ZXJzLCB0aW1lb3V0LCB3aXRoQ3JlZGVudGlhbHMsIHJlc3BvbnNlVHlwZSkgeworICAgICRicm93
c2VyLiQkaW5jT3V0c3RhbmRpbmdSZXF1ZXN0Q291bnQoKTsKKyAgICB1cmwgPSB1cmwgfHwgJGJy
b3dzZXIudXJsKCk7CisKKyAgICBpZiAobG93ZXJjYXNlKG1ldGhvZCkgPT0gJ2pzb25wJykgewor
ICAgICAgdmFyIGNhbGxiYWNrSWQgPSAnXycgKyAoY2FsbGJhY2tzLmNvdW50ZXIrKykudG9TdHJp
bmcoMzYpOworICAgICAgY2FsbGJhY2tzW2NhbGxiYWNrSWRdID0gZnVuY3Rpb24oZGF0YSkgewor
ICAgICAgICBjYWxsYmFja3NbY2FsbGJhY2tJZF0uZGF0YSA9IGRhdGE7CisgICAgICAgIGNhbGxi
YWNrc1tjYWxsYmFja0lkXS5jYWxsZWQgPSB0cnVlOworICAgICAgfTsKKworICAgICAgdmFyIGpz
b25wRG9uZSA9IGpzb25wUmVxKHVybC5yZXBsYWNlKCdKU09OX0NBTExCQUNLJywgJ2FuZ3VsYXIu
Y2FsbGJhY2tzLicgKyBjYWxsYmFja0lkKSwKKyAgICAgICAgICBjYWxsYmFja0lkLCBmdW5jdGlv
bihzdGF0dXMsIHRleHQpIHsKKyAgICAgICAgY29tcGxldGVSZXF1ZXN0KGNhbGxiYWNrLCBzdGF0
dXMsIGNhbGxiYWNrc1tjYWxsYmFja0lkXS5kYXRhLCAiIiwgdGV4dCk7CisgICAgICAgIGNhbGxi
YWNrc1tjYWxsYmFja0lkXSA9IG5vb3A7CisgICAgICB9KTsKKyAgICB9IGVsc2UgeworCisgICAg
ICB2YXIgeGhyID0gY3JlYXRlWGhyKCk7CisKKyAgICAgIHhoci5vcGVuKG1ldGhvZCwgdXJsLCB0
cnVlKTsKKyAgICAgIGZvckVhY2goaGVhZGVycywgZnVuY3Rpb24odmFsdWUsIGtleSkgeworICAg
ICAgICBpZiAoaXNEZWZpbmVkKHZhbHVlKSkgeworICAgICAgICAgICAgeGhyLnNldFJlcXVlc3RI
ZWFkZXIoa2V5LCB2YWx1ZSk7CisgICAgICAgIH0KKyAgICAgIH0pOworCisgICAgICB4aHIub25s
b2FkID0gZnVuY3Rpb24gcmVxdWVzdExvYWRlZCgpIHsKKyAgICAgICAgdmFyIHN0YXR1c1RleHQg
PSB4aHIuc3RhdHVzVGV4dCB8fCAnJzsKKworICAgICAgICAvLyByZXNwb25zZVRleHQgaXMgdGhl
IG9sZC1zY2hvb2wgd2F5IG9mIHJldHJpZXZpbmcgcmVzcG9uc2UgKHN1cHBvcnRlZCBieSBJRTgg
JiA5KQorICAgICAgICAvLyByZXNwb25zZS9yZXNwb25zZVR5cGUgcHJvcGVydGllcyB3ZXJlIGlu
dHJvZHVjZWQgaW4gWEhSIExldmVsMiBzcGVjIChzdXBwb3J0ZWQgYnkgSUUxMCkKKyAgICAgICAg
dmFyIHJlc3BvbnNlID0gKCdyZXNwb25zZScgaW4geGhyKSA/IHhoci5yZXNwb25zZSA6IHhoci5y
ZXNwb25zZVRleHQ7CisKKyAgICAgICAgLy8gbm9ybWFsaXplIElFOSBidWcgKGh0dHA6Ly9idWdz
LmpxdWVyeS5jb20vdGlja2V0LzE0NTApCisgICAgICAgIHZhciBzdGF0dXMgPSB4aHIuc3RhdHVz
ID09PSAxMjIzID8gMjA0IDogeGhyLnN0YXR1czsKKworICAgICAgICAvLyBmaXggc3RhdHVzIGNv
ZGUgd2hlbiBpdCBpcyAwICgwIHN0YXR1cyBpcyB1bmRvY3VtZW50ZWQpLgorICAgICAgICAvLyBP
Y2N1cnMgd2hlbiBhY2Nlc3NpbmcgZmlsZSByZXNvdXJjZXMgb3Igb24gQW5kcm9pZCA0LjEgc3Rv
Y2sgYnJvd3NlcgorICAgICAgICAvLyB3aGlsZSByZXRyaWV2aW5nIGZpbGVzIGZyb20gYXBwbGlj
YXRpb24gY2FjaGUuCisgICAgICAgIGlmIChzdGF0dXMgPT09IDApIHsKKyAgICAgICAgICBzdGF0
dXMgPSByZXNwb25zZSA/IDIwMCA6IHVybFJlc29sdmUodXJsKS5wcm90b2NvbCA9PSAnZmlsZScg
PyA0MDQgOiAwOworICAgICAgICB9CisKKyAgICAgICAgY29tcGxldGVSZXF1ZXN0KGNhbGxiYWNr
LAorICAgICAgICAgICAgc3RhdHVzLAorICAgICAgICAgICAgcmVzcG9uc2UsCisgICAgICAgICAg
ICB4aHIuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCksCisgICAgICAgICAgICBzdGF0dXNUZXh0KTsK
KyAgICAgIH07CisKKyAgICAgIHZhciByZXF1ZXN0RXJyb3IgPSBmdW5jdGlvbigpIHsKKyAgICAg
ICAgLy8gVGhlIHJlc3BvbnNlIGlzIGFsd2F5cyBlbXB0eQorICAgICAgICAvLyBTZWUgaHR0cHM6
Ly94aHIuc3BlYy53aGF0d2cub3JnLyNyZXF1ZXN0LWVycm9yLXN0ZXBzIGFuZCBodHRwczovL2Zl
dGNoLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC1uZXR3b3JrLWVycm9yCisgICAgICAgIGNvbXBs
ZXRlUmVxdWVzdChjYWxsYmFjaywgLTEsIG51bGwsIG51bGwsICcnKTsKKyAgICAgIH07CisKKyAg
ICAgIHhoci5vbmVycm9yID0gcmVxdWVzdEVycm9yOworICAgICAgeGhyLm9uYWJvcnQgPSByZXF1
ZXN0RXJyb3I7CisKKyAgICAgIGlmICh3aXRoQ3JlZGVudGlhbHMpIHsKKyAgICAgICAgeGhyLndp
dGhDcmVkZW50aWFscyA9IHRydWU7CisgICAgICB9CisKKyAgICAgIGlmIChyZXNwb25zZVR5cGUp
IHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICB4aHIucmVzcG9uc2VUeXBlID0gcmVzcG9uc2VU
eXBlOworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgLy8gV2ViS2l0IGFkZGVkIHN1
cHBvcnQgZm9yIHRoZSBqc29uIHJlc3BvbnNlVHlwZSB2YWx1ZSBvbiAwOS8wMy8yMDEzCisgICAg
ICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczNjQ4LiBW
ZXJzaW9ucyBvZiBTYWZhcmkgcHJpb3IgdG8gNyBhcmUKKyAgICAgICAgICAvLyBrbm93biB0byB0
aHJvdyB3aGVuIHNldHRpbmcgdGhlIHZhbHVlICJqc29uIiBhcyB0aGUgcmVzcG9uc2UgdHlwZS4g
T3RoZXIgb2xkZXIKKyAgICAgICAgICAvLyBicm93c2VycyBpbXBsZW1lbnRpbmcgdGhlIHJlc3Bv
bnNlVHlwZQorICAgICAgICAgIC8vCisgICAgICAgICAgLy8gVGhlIGpzb24gcmVzcG9uc2UgdHlw
ZSBjYW4gYmUgaWdub3JlZCBpZiBub3Qgc3VwcG9ydGVkLCBiZWNhdXNlIEpTT04gcGF5bG9hZHMg
YXJlCisgICAgICAgICAgLy8gcGFyc2VkIG9uIHRoZSBjbGllbnQtc2lkZSByZWdhcmRsZXNzLgor
ICAgICAgICAgIGlmIChyZXNwb25zZVR5cGUgIT09ICdqc29uJykgeworICAgICAgICAgICAgdGhy
b3cgZTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgeGhyLnNlbmQo
cG9zdCk7CisgICAgfQorCisgICAgaWYgKHRpbWVvdXQgPiAwKSB7CisgICAgICB2YXIgdGltZW91
dElkID0gJGJyb3dzZXJEZWZlcih0aW1lb3V0UmVxdWVzdCwgdGltZW91dCk7CisgICAgfSBlbHNl
IGlmIChpc1Byb21pc2VMaWtlKHRpbWVvdXQpKSB7CisgICAgICB0aW1lb3V0LnRoZW4odGltZW91
dFJlcXVlc3QpOworICAgIH0KKworCisgICAgZnVuY3Rpb24gdGltZW91dFJlcXVlc3QoKSB7Cisg
ICAgICBqc29ucERvbmUgJiYganNvbnBEb25lKCk7CisgICAgICB4aHIgJiYgeGhyLmFib3J0KCk7
CisgICAgfQorCisgICAgZnVuY3Rpb24gY29tcGxldGVSZXF1ZXN0KGNhbGxiYWNrLCBzdGF0dXMs
IHJlc3BvbnNlLCBoZWFkZXJzU3RyaW5nLCBzdGF0dXNUZXh0KSB7CisgICAgICAvLyBjYW5jZWwg
dGltZW91dCBhbmQgc3Vic2VxdWVudCB0aW1lb3V0IHByb21pc2UgcmVzb2x1dGlvbgorICAgICAg
aWYgKHRpbWVvdXRJZCAhPT0gdW5kZWZpbmVkKSB7CisgICAgICAgICRicm93c2VyRGVmZXIuY2Fu
Y2VsKHRpbWVvdXRJZCk7CisgICAgICB9CisgICAgICBqc29ucERvbmUgPSB4aHIgPSBudWxsOwor
CisgICAgICBjYWxsYmFjayhzdGF0dXMsIHJlc3BvbnNlLCBoZWFkZXJzU3RyaW5nLCBzdGF0dXNU
ZXh0KTsKKyAgICAgICRicm93c2VyLiQkY29tcGxldGVPdXRzdGFuZGluZ1JlcXVlc3Qobm9vcCk7
CisgICAgfQorICB9OworCisgIGZ1bmN0aW9uIGpzb25wUmVxKHVybCwgY2FsbGJhY2tJZCwgZG9u
ZSkgeworICAgIC8vIHdlIGNhbid0IHVzZSBqUXVlcnkvanFMaXRlIGhlcmUgYmVjYXVzZSBqUXVl
cnkgZG9lcyBjcmF6eSBzdHVmZiB3aXRoIHNjcmlwdCBlbGVtZW50cywgZS5nLjoKKyAgICAvLyAt
IGZldGNoZXMgbG9jYWwgc2NyaXB0cyB2aWEgWEhSIGFuZCBldmFscyB0aGVtCisgICAgLy8gLSBh
ZGRzIGFuZCBpbW1lZGlhdGVseSByZW1vdmVzIHNjcmlwdCBlbGVtZW50cyBmcm9tIHRoZSBkb2N1
bWVudAorICAgIHZhciBzY3JpcHQgPSByYXdEb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQn
KSwgY2FsbGJhY2sgPSBudWxsOworICAgIHNjcmlwdC50eXBlID0gInRleHQvamF2YXNjcmlwdCI7
CisgICAgc2NyaXB0LnNyYyA9IHVybDsKKyAgICBzY3JpcHQuYXN5bmMgPSB0cnVlOworCisgICAg
Y2FsbGJhY2sgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgcmVtb3ZlRXZlbnRMaXN0ZW5lckZu
KHNjcmlwdCwgImxvYWQiLCBjYWxsYmFjayk7CisgICAgICByZW1vdmVFdmVudExpc3RlbmVyRm4o
c2NyaXB0LCAiZXJyb3IiLCBjYWxsYmFjayk7CisgICAgICByYXdEb2N1bWVudC5ib2R5LnJlbW92
ZUNoaWxkKHNjcmlwdCk7CisgICAgICBzY3JpcHQgPSBudWxsOworICAgICAgdmFyIHN0YXR1cyA9
IC0xOworICAgICAgdmFyIHRleHQgPSAidW5rbm93biI7CisKKyAgICAgIGlmIChldmVudCkgewor
ICAgICAgICBpZiAoZXZlbnQudHlwZSA9PT0gImxvYWQiICYmICFjYWxsYmFja3NbY2FsbGJhY2tJ
ZF0uY2FsbGVkKSB7CisgICAgICAgICAgZXZlbnQgPSB7IHR5cGU6ICJlcnJvciIgfTsKKyAgICAg
ICAgfQorICAgICAgICB0ZXh0ID0gZXZlbnQudHlwZTsKKyAgICAgICAgc3RhdHVzID0gZXZlbnQu
dHlwZSA9PT0gImVycm9yIiA/IDQwNCA6IDIwMDsKKyAgICAgIH0KKworICAgICAgaWYgKGRvbmUp
IHsKKyAgICAgICAgZG9uZShzdGF0dXMsIHRleHQpOworICAgICAgfQorICAgIH07CisKKyAgICBh
ZGRFdmVudExpc3RlbmVyRm4oc2NyaXB0LCAibG9hZCIsIGNhbGxiYWNrKTsKKyAgICBhZGRFdmVu
dExpc3RlbmVyRm4oc2NyaXB0LCAiZXJyb3IiLCBjYWxsYmFjayk7CisgICAgcmF3RG9jdW1lbnQu
Ym9keS5hcHBlbmRDaGlsZChzY3JpcHQpOworICAgIHJldHVybiBjYWxsYmFjazsKKyAgfQorfQor
Cit2YXIgJGludGVycG9sYXRlTWluRXJyID0gYW5ndWxhci4kaW50ZXJwb2xhdGVNaW5FcnIgPSBt
aW5FcnIoJyRpbnRlcnBvbGF0ZScpOworJGludGVycG9sYXRlTWluRXJyLnRocm93Tm9jb25jYXQg
PSBmdW5jdGlvbih0ZXh0KSB7CisgIHRocm93ICRpbnRlcnBvbGF0ZU1pbkVycignbm9jb25jYXQn
LAorICAgICAgIkVycm9yIHdoaWxlIGludGVycG9sYXRpbmc6IHswfVxuU3RyaWN0IENvbnRleHR1
YWwgRXNjYXBpbmcgZGlzYWxsb3dzICIgKworICAgICAgImludGVycG9sYXRpb25zIHRoYXQgY29u
Y2F0ZW5hdGUgbXVsdGlwbGUgZXhwcmVzc2lvbnMgd2hlbiBhIHRydXN0ZWQgdmFsdWUgaXMgIiAr
CisgICAgICAicmVxdWlyZWQuICBTZWUgaHR0cDovL2RvY3MuYW5ndWxhcmpzLm9yZy9hcGkvbmcu
JHNjZSIsIHRleHQpOworfTsKKworJGludGVycG9sYXRlTWluRXJyLmludGVyciA9IGZ1bmN0aW9u
KHRleHQsIGVycikgeworICByZXR1cm4gJGludGVycG9sYXRlTWluRXJyKCdpbnRlcnInLCAiQ2Fu
J3QgaW50ZXJwb2xhdGU6IHswfVxuezF9IiwgdGV4dCwgZXJyLnRvU3RyaW5nKCkpOworfTsKKwor
LyoqCisgKiBAbmdkb2MgcHJvdmlkZXIKKyAqIEBuYW1lICRpbnRlcnBvbGF0ZVByb3ZpZGVyCisg
KgorICogQGRlc2NyaXB0aW9uCisgKgorICogVXNlZCBmb3IgY29uZmlndXJpbmcgdGhlIGludGVy
cG9sYXRpb24gbWFya3VwLiBEZWZhdWx0cyB0byBge3tgIGFuZCBgfX1gLgorICoKKyAqIEBleGFt
cGxlCis8ZXhhbXBsZSBtb2R1bGU9ImN1c3RvbUludGVycG9sYXRpb25BcHAiPgorPGZpbGUgbmFt
ZT0iaW5kZXguaHRtbCI+Cis8c2NyaXB0PgorICB2YXIgY3VzdG9tSW50ZXJwb2xhdGlvbkFwcCA9
IGFuZ3VsYXIubW9kdWxlKCdjdXN0b21JbnRlcnBvbGF0aW9uQXBwJywgW10pOworCisgIGN1c3Rv
bUludGVycG9sYXRpb25BcHAuY29uZmlnKGZ1bmN0aW9uKCRpbnRlcnBvbGF0ZVByb3ZpZGVyKSB7
CisgICAgJGludGVycG9sYXRlUHJvdmlkZXIuc3RhcnRTeW1ib2woJy8vJyk7CisgICAgJGludGVy
cG9sYXRlUHJvdmlkZXIuZW5kU3ltYm9sKCcvLycpOworICB9KTsKKworCisgIGN1c3RvbUludGVy
cG9sYXRpb25BcHAuY29udHJvbGxlcignRGVtb0NvbnRyb2xsZXInLCBmdW5jdGlvbigpIHsKKyAg
ICAgIHRoaXMubGFiZWwgPSAiVGhpcyBiaW5kaW5nIGlzIGJyb3VnaHQgeW91IGJ5IC8vIGludGVy
cG9sYXRpb24gc3ltYm9scy4iOworICB9KTsKKzwvc2NyaXB0PgorPGRpdiBuZy1hcHA9IkFwcCIg
bmctY29udHJvbGxlcj0iRGVtb0NvbnRyb2xsZXIgYXMgZGVtbyI+CisgICAgLy9kZW1vLmxhYmVs
Ly8KKzwvZGl2PgorPC9maWxlPgorPGZpbGUgbmFtZT0icHJvdHJhY3Rvci5qcyIgdHlwZT0icHJv
dHJhY3RvciI+CisgIGl0KCdzaG91bGQgaW50ZXJwb2xhdGUgYmluZGluZyB3aXRoIGN1c3RvbSBz
eW1ib2xzJywgZnVuY3Rpb24oKSB7CisgICAgZXhwZWN0KGVsZW1lbnQoYnkuYmluZGluZygnZGVt
by5sYWJlbCcpKS5nZXRUZXh0KCkpLnRvQmUoJ1RoaXMgYmluZGluZyBpcyBicm91Z2h0IHlvdSBi
eSAvLyBpbnRlcnBvbGF0aW9uIHN5bWJvbHMuJyk7CisgIH0pOworPC9maWxlPgorPC9leGFtcGxl
PgorICovCitmdW5jdGlvbiAkSW50ZXJwb2xhdGVQcm92aWRlcigpIHsKKyAgdmFyIHN0YXJ0U3lt
Ym9sID0gJ3t7JzsKKyAgdmFyIGVuZFN5bWJvbCA9ICd9fSc7CisKKyAgLyoqCisgICAqIEBuZ2Rv
YyBtZXRob2QKKyAgICogQG5hbWUgJGludGVycG9sYXRlUHJvdmlkZXIjc3RhcnRTeW1ib2wKKyAg
ICogQGRlc2NyaXB0aW9uCisgICAqIFN5bWJvbCB0byBkZW5vdGUgc3RhcnQgb2YgZXhwcmVzc2lv
biBpbiB0aGUgaW50ZXJwb2xhdGVkIHN0cmluZy4gRGVmYXVsdHMgdG8gYHt7YC4KKyAgICoKKyAg
ICogQHBhcmFtIHtzdHJpbmc9fSB2YWx1ZSBuZXcgdmFsdWUgdG8gc2V0IHRoZSBzdGFydGluZyBz
eW1ib2wgdG8uCisgICAqIEByZXR1cm5zIHtzdHJpbmd8c2VsZn0gUmV0dXJucyB0aGUgc3ltYm9s
IHdoZW4gdXNlZCBhcyBnZXR0ZXIgYW5kIHNlbGYgaWYgdXNlZCBhcyBzZXR0ZXIuCisgICAqLwor
ICB0aGlzLnN0YXJ0U3ltYm9sID0gZnVuY3Rpb24odmFsdWUpIHsKKyAgICBpZiAodmFsdWUpIHsK
KyAgICAgIHN0YXJ0U3ltYm9sID0gdmFsdWU7CisgICAgICByZXR1cm4gdGhpczsKKyAgICB9IGVs
c2UgeworICAgICAgcmV0dXJuIHN0YXJ0U3ltYm9sOworICAgIH0KKyAgfTsKKworICAvKioKKyAg
ICogQG5nZG9jIG1ldGhvZAorICAgKiBAbmFtZSAkaW50ZXJwb2xhdGVQcm92aWRlciNlbmRTeW1i
b2wKKyAgICogQGRlc2NyaXB0aW9uCisgICAqIFN5bWJvbCB0byBkZW5vdGUgdGhlIGVuZCBvZiBl
eHByZXNzaW9uIGluIHRoZSBpbnRlcnBvbGF0ZWQgc3RyaW5nLiBEZWZhdWx0cyB0byBgfX1gLgor
ICAgKgorICAgKiBAcGFyYW0ge3N0cmluZz19IHZhbHVlIG5ldyB2YWx1ZSB0byBzZXQgdGhlIGVu
ZGluZyBzeW1ib2wgdG8uCisgICAqIEByZXR1cm5zIHtzdHJpbmd8c2VsZn0gUmV0dXJucyB0aGUg
c3ltYm9sIHdoZW4gdXNlZCBhcyBnZXR0ZXIgYW5kIHNlbGYgaWYgdXNlZCBhcyBzZXR0ZXIuCisg
ICAqLworICB0aGlzLmVuZFN5bWJvbCA9IGZ1bmN0aW9uKHZhbHVlKSB7CisgICAgaWYgKHZhbHVl
KSB7CisgICAgICBlbmRTeW1ib2wgPSB2YWx1ZTsKKyAgICAgIHJldHVybiB0aGlzOworICAgIH0g
ZWxzZSB7CisgICAgICByZXR1cm4gZW5kU3ltYm9sOworICAgIH0KKyAgfTsKKworCisgIHRoaXMu
JGdldCA9IFsnJHBhcnNlJywgJyRleGNlcHRpb25IYW5kbGVyJywgJyRzY2UnLCBmdW5jdGlvbigk
cGFyc2UsICRleGNlcHRpb25IYW5kbGVyLCAkc2NlKSB7CisgICAgdmFyIHN0YXJ0U3ltYm9sTGVu
Z3RoID0gc3RhcnRTeW1ib2wubGVuZ3RoLAorICAgICAgICBlbmRTeW1ib2xMZW5ndGggPSBlbmRT
eW1ib2wubGVuZ3RoLAorICAgICAgICBlc2NhcGVkU3RhcnRSZWdleHAgPSBuZXcgUmVnRXhwKHN0
YXJ0U3ltYm9sLnJlcGxhY2UoLy4vZywgZXNjYXBlKSwgJ2cnKSwKKyAgICAgICAgZXNjYXBlZEVu
ZFJlZ2V4cCA9IG5ldyBSZWdFeHAoZW5kU3ltYm9sLnJlcGxhY2UoLy4vZywgZXNjYXBlKSwgJ2cn
KTsKKworICAgIGZ1bmN0aW9uIGVzY2FwZShjaCkgeworICAgICAgcmV0dXJuICdcXFxcXFwnICsg
Y2g7CisgICAgfQorCisgICAgZnVuY3Rpb24gdW5lc2NhcGVUZXh0KHRleHQpIHsKKyAgICAgIHJl
dHVybiB0ZXh0LnJlcGxhY2UoZXNjYXBlZFN0YXJ0UmVnZXhwLCBzdGFydFN5bWJvbCkuCisgICAg
ICAgIHJlcGxhY2UoZXNjYXBlZEVuZFJlZ2V4cCwgZW5kU3ltYm9sKTsKKyAgICB9CisKKyAgICBm
dW5jdGlvbiBzdHJpbmdpZnkodmFsdWUpIHsKKyAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7IC8v
IG51bGwgfHwgdW5kZWZpbmVkCisgICAgICAgIHJldHVybiAnJzsKKyAgICAgIH0KKyAgICAgIHN3
aXRjaCAodHlwZW9mIHZhbHVlKSB7CisgICAgICAgIGNhc2UgJ3N0cmluZyc6CisgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgJ251bWJlcic6CisgICAgICAgICAgdmFsdWUgPSAnJyArIHZh
bHVlOworICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgIHZhbHVl
ID0gdG9Kc29uKHZhbHVlKTsKKyAgICAgIH0KKworICAgICAgcmV0dXJuIHZhbHVlOworICAgIH0K
KworICAgIC8qKgorICAgICAqIEBuZ2RvYyBzZXJ2aWNlCisgICAgICogQG5hbWUgJGludGVycG9s
YXRlCisgICAgICogQGtpbmQgZnVuY3Rpb24KKyAgICAgKgorICAgICAqIEByZXF1aXJlcyAkcGFy
c2UKKyAgICAgKiBAcmVxdWlyZXMgJHNjZQorICAgICAqCisgICAgICogQGRlc2NyaXB0aW9uCisg
ICAgICoKKyAgICAgKiBDb21waWxlcyBhIHN0cmluZyB3aXRoIG1hcmt1cCBpbnRvIGFuIGludGVy
cG9sYXRpb24gZnVuY3Rpb24uIFRoaXMgc2VydmljZSBpcyB1c2VkIGJ5IHRoZQorICAgICAqIEhU
TUwge0BsaW5rIG5nLiRjb21waWxlICRjb21waWxlfSBzZXJ2aWNlIGZvciBkYXRhIGJpbmRpbmcu
IFNlZQorICAgICAqIHtAbGluayBuZy4kaW50ZXJwb2xhdGVQcm92aWRlciAkaW50ZXJwb2xhdGVQ
cm92aWRlcn0gZm9yIGNvbmZpZ3VyaW5nIHRoZQorICAgICAqIGludGVycG9sYXRpb24gbWFya3Vw
LgorICAgICAqCisgICAgICoKKyAgICAgKiBgYGBqcworICAgICAqICAgdmFyICRpbnRlcnBvbGF0
ZSA9IC4uLjsgLy8gaW5qZWN0ZWQKKyAgICAgKiAgIHZhciBleHAgPSAkaW50ZXJwb2xhdGUoJ0hl
bGxvIHt7bmFtZSB8IHVwcGVyY2FzZX19IScpOworICAgICAqICAgZXhwZWN0KGV4cCh7bmFtZTon
QW5ndWxhcid9KS50b0VxdWFsKCdIZWxsbyBBTkdVTEFSIScpOworICAgICAqIGBgYAorICAgICAq
CisgICAgICogYCRpbnRlcnBvbGF0ZWAgdGFrZXMgYW4gb3B0aW9uYWwgZm91cnRoIGFyZ3VtZW50
LCBgYWxsT3JOb3RoaW5nYC4gSWYgYGFsbE9yTm90aGluZ2AgaXMKKyAgICAgKiBgdHJ1ZWAsIHRo
ZSBpbnRlcnBvbGF0aW9uIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIGB1bmRlZmluZWRgIHVubGVzcyBh
bGwgZW1iZWRkZWQgZXhwcmVzc2lvbnMKKyAgICAgKiBldmFsdWF0ZSB0byBhIHZhbHVlIG90aGVy
IHRoYW4gYHVuZGVmaW5lZGAuCisgICAgICoKKyAgICAgKiBgYGBqcworICAgICAqICAgdmFyICRp
bnRlcnBvbGF0ZSA9IC4uLjsgLy8gaW5qZWN0ZWQKKyAgICAgKiAgIHZhciBjb250ZXh0ID0ge2dy
ZWV0aW5nOiAnSGVsbG8nLCBuYW1lOiB1bmRlZmluZWQgfTsKKyAgICAgKgorICAgICAqICAgLy8g
ZGVmYXVsdCAiZm9yZ2l2aW5nIiBtb2RlCisgICAgICogICB2YXIgZXhwID0gJGludGVycG9sYXRl
KCd7e2dyZWV0aW5nfX0ge3tuYW1lfX0hJyk7CisgICAgICogICBleHBlY3QoZXhwKGNvbnRleHQp
KS50b0VxdWFsKCdIZWxsbyAhJyk7CisgICAgICoKKyAgICAgKiAgIC8vICJhbGxPck5vdGhpbmci
IG1vZGUKKyAgICAgKiAgIGV4cCA9ICRpbnRlcnBvbGF0ZSgne3tncmVldGluZ319IHt7bmFtZX19
IScsIGZhbHNlLCBudWxsLCB0cnVlKTsKKyAgICAgKiAgIGV4cGVjdChleHAoY29udGV4dCkpLnRv
QmVVbmRlZmluZWQoKTsKKyAgICAgKiAgIGNvbnRleHQubmFtZSA9ICdBbmd1bGFyJzsKKyAgICAg
KiAgIGV4cGVjdChleHAoY29udGV4dCkpLnRvRXF1YWwoJ0hlbGxvIEFuZ3VsYXIhJyk7CisgICAg
ICogYGBgCisgICAgICoKKyAgICAgKiBgYWxsT3JOb3RoaW5nYCBpcyB1c2VmdWwgZm9yIGludGVy
cG9sYXRpbmcgVVJMcy4gYG5nU3JjYCBhbmQgYG5nU3Jjc2V0YCB1c2UgdGhpcyBiZWhhdmlvci4K
KyAgICAgKgorICAgICAqICMjIyNFc2NhcGVkIEludGVycG9sYXRpb24KKyAgICAgKiAkaW50ZXJw
b2xhdGUgcHJvdmlkZXMgYSBtZWNoYW5pc20gZm9yIGVzY2FwaW5nIGludGVycG9sYXRpb24gbWFy
a2Vycy4gU3RhcnQgYW5kIGVuZCBtYXJrZXJzCisgICAgICogY2FuIGJlIGVzY2FwZWQgYnkgcHJl
Y2VkaW5nIGVhY2ggb2YgdGhlaXIgY2hhcmFjdGVycyB3aXRoIGEgUkVWRVJTRSBTT0xJRFVTIFUr
MDA1QyAoYmFja3NsYXNoKS4KKyAgICAgKiBJdCB3aWxsIGJlIHJlbmRlcmVkIGFzIGEgcmVndWxh
ciBzdGFydC9lbmQgbWFya2VyLCBhbmQgd2lsbCBub3QgYmUgaW50ZXJwcmV0ZWQgYXMgYW4gZXhw
cmVzc2lvbgorICAgICAqIG9yIGJpbmRpbmcuCisgICAgICoKKyAgICAgKiBUaGlzIGVuYWJsZXMg
d2ViLXNlcnZlcnMgdG8gcHJldmVudCBzY3JpcHQgaW5qZWN0aW9uIGF0dGFja3MgYW5kIGRlZmFj
aW5nIGF0dGFja3MsIHRvIHNvbWUKKyAgICAgKiBkZWdyZWUsIHdoaWxlIGFsc28gZW5hYmxpbmcg
Y29kZSBleGFtcGxlcyB0byB3b3JrIHdpdGhvdXQgcmVseWluZyBvbiB0aGUKKyAgICAgKiB7QGxp
bmsgbmcuZGlyZWN0aXZlOm5nTm9uQmluZGFibGUgbmdOb25CaW5kYWJsZX0gZGlyZWN0aXZlLgor
ICAgICAqCisgICAgICogKipGb3Igc2VjdXJpdHkgcHVycG9zZXMsIGl0IGlzIHN0cm9uZ2x5IGVu
Y291cmFnZWQgdGhhdCB3ZWIgc2VydmVycyBlc2NhcGUgdXNlci1zdXBwbGllZCBkYXRhLAorICAg
ICAqIHJlcGxhY2luZyBhbmdsZSBicmFja2V0cyAoJmx0OywgJmd0Oykgd2l0aCAmYW1wO2x0OyBh
bmQgJmFtcDtndDsgcmVzcGVjdGl2ZWx5LCBhbmQgcmVwbGFjaW5nIGFsbAorICAgICAqIGludGVy
cG9sYXRpb24gc3RhcnQvZW5kIG1hcmtlcnMgd2l0aCB0aGVpciBlc2NhcGVkIGNvdW50ZXJwYXJ0
cy4qKgorICAgICAqCisgICAgICogRXNjYXBlZCBpbnRlcnBvbGF0aW9uIG1hcmtlcnMgYXJlIG9u
bHkgcmVwbGFjZWQgd2l0aCB0aGUgYWN0dWFsIGludGVycG9sYXRpb24gbWFya2VycyBpbiByZW5k
ZXJlZAorICAgICAqIG91dHB1dCB3aGVuIHRoZSAkaW50ZXJwb2xhdGUgc2VydmljZSBwcm9jZXNz
ZXMgdGhlIHRleHQuIFNvLCBmb3IgSFRNTCBlbGVtZW50cyBpbnRlcnBvbGF0ZWQKKyAgICAgKiBi
eSB7QGxpbmsgbmcuJGNvbXBpbGUgJGNvbXBpbGV9LCBvciBvdGhlcndpc2UgaW50ZXJwb2xhdGVk
IHdpdGggdGhlIGBtdXN0SGF2ZUV4cHJlc3Npb25gIHBhcmFtZXRlcgorICAgICAqIHNldCB0byBg
dHJ1ZWAsIHRoZSBpbnRlcnBvbGF0ZWQgdGV4dCBtdXN0IGNvbnRhaW4gYW4gdW5lc2NhcGVkIGlu
dGVycG9sYXRpb24gZXhwcmVzc2lvbi4gQXMgc3VjaCwKKyAgICAgKiB0aGlzIGlzIHR5cGljYWxs
eSB1c2VmdWwgb25seSB3aGVuIHVzZXItZGF0YSBpcyB1c2VkIGluIHJlbmRlcmluZyBhIHRlbXBs
YXRlIGZyb20gdGhlIHNlcnZlciwgb3IKKyAgICAgKiB3aGVuIG90aGVyd2lzZSB1bnRydXN0ZWQg
ZGF0YSBpcyB1c2VkIGJ5IGEgZGlyZWN0aXZlLgorICAgICAqCisgICAgICogPGV4YW1wbGU+Cisg
ICAgICogIDxmaWxlIG5hbWU9ImluZGV4Lmh0bWwiPgorICAgICAqICAgIDxkaXYgbmctaW5pdD0i
dXNlcm5hbWU9J0EgdXNlciciPgorICAgICAqICAgICAgPHAgbmctaW5pdD0iYXBwdGl0bGU9J0Vz
Y2FwaW5nIGRlbW8nIj57e2FwcHRpdGxlfX06IFx7XHsgdXNlcm5hbWUgPSAiZGVmYWNlZCB2YWx1
ZSI7IFx9XH0KKyAgICAgKiAgICAgICAgPC9wPgorICAgICAqICAgICAgPHA+PHN0cm9uZz57e3Vz
ZXJuYW1lfX08L3N0cm9uZz4gYXR0ZW1wdHMgdG8gaW5qZWN0IGNvZGUgd2hpY2ggd2lsbCBkZWZh
Y2UgdGhlCisgICAgICogICAgICAgIGFwcGxpY2F0aW9uLCBidXQgZmFpbHMgdG8gYWNjb21wbGlz
aCB0aGVpciB0YXNrLCBiZWNhdXNlIHRoZSBzZXJ2ZXIgaGFzIGNvcnJlY3RseQorICAgICAqICAg
ICAgICBlc2NhcGVkIHRoZSBpbnRlcnBvbGF0aW9uIHN0YXJ0L2VuZCBtYXJrZXJzIHdpdGggUkVW
RVJTRSBTT0xJRFVTIFUrMDA1QyAoYmFja3NsYXNoKQorICAgICAqICAgICAgICBjaGFyYWN0ZXJz
LjwvcD4KKyAgICAgKiAgICAgIDxwPkluc3RlYWQsIHRoZSByZXN1bHQgb2YgdGhlIGF0dGVtcHRl
ZCBzY3JpcHQgaW5qZWN0aW9uIGlzIHZpc2libGUsIGFuZCBjYW4gYmUgcmVtb3ZlZAorICAgICAq
ICAgICAgICBmcm9tIHRoZSBkYXRhYmFzZSBieSBhbiBhZG1pbmlzdHJhdG9yLjwvcD4KKyAgICAg
KiAgICA8L2Rpdj4KKyAgICAgKiAgPC9maWxlPgorICAgICAqIDwvZXhhbXBsZT4KKyAgICAgKgor
ICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IFRoZSB0ZXh0IHdpdGggbWFya3VwIHRvIGludGVy
cG9sYXRlLgorICAgICAqIEBwYXJhbSB7Ym9vbGVhbj19IG11c3RIYXZlRXhwcmVzc2lvbiBpZiBz
ZXQgdG8gdHJ1ZSB0aGVuIHRoZSBpbnRlcnBvbGF0aW9uIHN0cmluZyBtdXN0IGhhdmUKKyAgICAg
KiAgICBlbWJlZGRlZCBleHByZXNzaW9uIGluIG9yZGVyIHRvIHJldHVybiBhbiBpbnRlcnBvbGF0
aW9uIGZ1bmN0aW9uLiBTdHJpbmdzIHdpdGggbm8KKyAgICAgKiAgICBlbWJlZGRlZCBleHByZXNz
aW9uIHdpbGwgcmV0dXJuIG51bGwgZm9yIHRoZSBpbnRlcnBvbGF0aW9uIGZ1bmN0aW9uLgorICAg
ICAqIEBwYXJhbSB7c3RyaW5nPX0gdHJ1c3RlZENvbnRleHQgd2hlbiBwcm92aWRlZCwgdGhlIHJl
dHVybmVkIGZ1bmN0aW9uIHBhc3NlcyB0aGUgaW50ZXJwb2xhdGVkCisgICAgICogICAgcmVzdWx0
IHRocm91Z2gge0BsaW5rIG5nLiRzY2UjZ2V0VHJ1c3RlZCAkc2NlLmdldFRydXN0ZWQoaW50ZXJw
b2xhdGVkUmVzdWx0LAorICAgICAqICAgIHRydXN0ZWRDb250ZXh0KX0gYmVmb3JlIHJldHVybmlu
ZyBpdC4gIFJlZmVyIHRvIHRoZSB7QGxpbmsgbmcuJHNjZSAkc2NlfSBzZXJ2aWNlIHRoYXQKKyAg
ICAgKiAgICBwcm92aWRlcyBTdHJpY3QgQ29udGV4dHVhbCBFc2NhcGluZyBmb3IgZGV0YWlscy4K
KyAgICAgKiBAcGFyYW0ge2Jvb2xlYW49fSBhbGxPck5vdGhpbmcgaWYgYHRydWVgLCB0aGVuIHRo
ZSByZXR1cm5lZCBmdW5jdGlvbiByZXR1cm5zIHVuZGVmaW5lZAorICAgICAqICAgIHVubGVzcyBh
bGwgZW1iZWRkZWQgZXhwcmVzc2lvbnMgZXZhbHVhdGUgdG8gYSB2YWx1ZSBvdGhlciB0aGFuIGB1
bmRlZmluZWRgLgorICAgICAqIEByZXR1cm5zIHtmdW5jdGlvbihjb250ZXh0KX0gYW4gaW50ZXJw
b2xhdGlvbiBmdW5jdGlvbiB3aGljaCBpcyB1c2VkIHRvIGNvbXB1dGUgdGhlCisgICAgICogICAg
aW50ZXJwb2xhdGVkIHN0cmluZy4gVGhlIGZ1bmN0aW9uIGhhcyB0aGVzZSBwYXJhbWV0ZXJzOgor
ICAgICAqCisgICAgICogLSBgY29udGV4dGA6IGV2YWx1YXRpb24gY29udGV4dCBmb3IgYWxsIGV4
cHJlc3Npb25zIGVtYmVkZGVkIGluIHRoZSBpbnRlcnBvbGF0ZWQgdGV4dAorICAgICAqLworICAg
IGZ1bmN0aW9uICRpbnRlcnBvbGF0ZSh0ZXh0LCBtdXN0SGF2ZUV4cHJlc3Npb24sIHRydXN0ZWRD
b250ZXh0LCBhbGxPck5vdGhpbmcpIHsKKyAgICAgIGFsbE9yTm90aGluZyA9ICEhYWxsT3JOb3Ro
aW5nOworICAgICAgdmFyIHN0YXJ0SW5kZXgsCisgICAgICAgICAgZW5kSW5kZXgsCisgICAgICAg
ICAgaW5kZXggPSAwLAorICAgICAgICAgIGV4cHJlc3Npb25zID0gW10sCisgICAgICAgICAgcGFy
c2VGbnMgPSBbXSwKKyAgICAgICAgICB0ZXh0TGVuZ3RoID0gdGV4dC5sZW5ndGgsCisgICAgICAg
ICAgZXhwLAorICAgICAgICAgIGNvbmNhdCA9IFtdLAorICAgICAgICAgIGV4cHJlc3Npb25Qb3Np
dGlvbnMgPSBbXTsKKworICAgICAgd2hpbGUgKGluZGV4IDwgdGV4dExlbmd0aCkgeworICAgICAg
ICBpZiAoKChzdGFydEluZGV4ID0gdGV4dC5pbmRleE9mKHN0YXJ0U3ltYm9sLCBpbmRleCkpICE9
IC0xKSAmJgorICAgICAgICAgICAgICgoZW5kSW5kZXggPSB0ZXh0LmluZGV4T2YoZW5kU3ltYm9s
LCBzdGFydEluZGV4ICsgc3RhcnRTeW1ib2xMZW5ndGgpKSAhPSAtMSkpIHsKKyAgICAgICAgICBp
ZiAoaW5kZXggIT09IHN0YXJ0SW5kZXgpIHsKKyAgICAgICAgICAgIGNvbmNhdC5wdXNoKHVuZXNj
YXBlVGV4dCh0ZXh0LnN1YnN0cmluZyhpbmRleCwgc3RhcnRJbmRleCkpKTsKKyAgICAgICAgICB9
CisgICAgICAgICAgZXhwID0gdGV4dC5zdWJzdHJpbmcoc3RhcnRJbmRleCArIHN0YXJ0U3ltYm9s
TGVuZ3RoLCBlbmRJbmRleCk7CisgICAgICAgICAgZXhwcmVzc2lvbnMucHVzaChleHApOworICAg
ICAgICAgIHBhcnNlRm5zLnB1c2goJHBhcnNlKGV4cCwgcGFyc2VTdHJpbmdpZnlJbnRlcmNlcHRv
cikpOworICAgICAgICAgIGluZGV4ID0gZW5kSW5kZXggKyBlbmRTeW1ib2xMZW5ndGg7CisgICAg
ICAgICAgZXhwcmVzc2lvblBvc2l0aW9ucy5wdXNoKGNvbmNhdC5sZW5ndGgpOworICAgICAgICAg
IGNvbmNhdC5wdXNoKCcnKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAvLyB3ZSBkaWQg
bm90IGZpbmQgYW4gaW50ZXJwb2xhdGlvbiwgc28gd2UgaGF2ZSB0byBhZGQgdGhlIHJlbWFpbmRl
ciB0byB0aGUgc2VwYXJhdG9ycyBhcnJheQorICAgICAgICAgIGlmIChpbmRleCAhPT0gdGV4dExl
bmd0aCkgeworICAgICAgICAgICAgY29uY2F0LnB1c2godW5lc2NhcGVUZXh0KHRleHQuc3Vic3Ry
aW5nKGluZGV4KSkpOworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgICAgfQorCisgICAgICAvLyBDb25jYXRlbmF0aW5nIGV4cHJlc3Npb25zIG1ha2VzIGl0IGhh
cmQgdG8gcmVhc29uIGFib3V0IHdoZXRoZXIgc29tZSBjb21iaW5hdGlvbiBvZgorICAgICAgLy8g
Y29uY2F0ZW5hdGVkIHZhbHVlcyBhcmUgdW5zYWZlIHRvIHVzZSBhbmQgY291bGQgZWFzaWx5IGxl
YWQgdG8gWFNTLiAgQnkgcmVxdWlyaW5nIHRoYXQgYQorICAgICAgLy8gc2luZ2xlIGV4cHJlc3Np
b24gYmUgdXNlZCBmb3IgaWZyYW1lW3NyY10sIG9iamVjdFtzcmNdLCBldGMuLCB3ZSBlbnN1cmUg
dGhhdCB0aGUgdmFsdWUKKyAgICAgIC8vIHRoYXQncyB1c2VkIGlzIGFzc2lnbmVkIG9yIGNvbnN0
cnVjdGVkIGJ5IHNvbWUgSlMgY29kZSBzb21ld2hlcmUgdGhhdCBpcyBtb3JlIHRlc3RhYmxlIG9y
CisgICAgICAvLyBtYWtlIGl0IG9idmlvdXMgdGhhdCB5b3UgYm91bmQgdGhlIHZhbHVlIHRvIHNv
bWUgdXNlciBjb250cm9sbGVkIHZhbHVlLiAgVGhpcyBoZWxwcyByZWR1Y2UKKyAgICAgIC8vIHRo
ZSBsb2FkIHdoZW4gYXVkaXRpbmcgZm9yIFhTUyBpc3N1ZXMuCisgICAgICBpZiAodHJ1c3RlZENv
bnRleHQgJiYgY29uY2F0Lmxlbmd0aCA+IDEpIHsKKyAgICAgICAgICAkaW50ZXJwb2xhdGVNaW5F
cnIudGhyb3dOb2NvbmNhdCh0ZXh0KTsKKyAgICAgIH0KKworICAgICAgaWYgKCFtdXN0SGF2ZUV4
cHJlc3Npb24gfHwgZXhwcmVzc2lvbnMubGVuZ3RoKSB7CisgICAgICAgIHZhciBjb21wdXRlID0g
ZnVuY3Rpb24odmFsdWVzKSB7CisgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGlpID0gZXhwcmVz
c2lvbnMubGVuZ3RoOyBpIDwgaWk7IGkrKykgeworICAgICAgICAgICAgaWYgKGFsbE9yTm90aGlu
ZyAmJiBpc1VuZGVmaW5lZCh2YWx1ZXNbaV0pKSByZXR1cm47CisgICAgICAgICAgICBjb25jYXRb
ZXhwcmVzc2lvblBvc2l0aW9uc1tpXV0gPSB2YWx1ZXNbaV07CisgICAgICAgICAgfQorICAgICAg
ICAgIHJldHVybiBjb25jYXQuam9pbignJyk7CisgICAgICAgIH07CisKKyAgICAgICAgdmFyIGdl
dFZhbHVlID0gZnVuY3Rpb24odmFsdWUpIHsKKyAgICAgICAgICByZXR1cm4gdHJ1c3RlZENvbnRl
eHQgPworICAgICAgICAgICAgJHNjZS5nZXRUcnVzdGVkKHRydXN0ZWRDb250ZXh0LCB2YWx1ZSkg
OgorICAgICAgICAgICAgJHNjZS52YWx1ZU9mKHZhbHVlKTsKKyAgICAgICAgfTsKKworICAgICAg
ICByZXR1cm4gZXh0ZW5kKGZ1bmN0aW9uIGludGVycG9sYXRpb25Gbihjb250ZXh0KSB7CisgICAg
ICAgICAgICB2YXIgaSA9IDA7CisgICAgICAgICAgICB2YXIgaWkgPSBleHByZXNzaW9ucy5sZW5n
dGg7CisgICAgICAgICAgICB2YXIgdmFsdWVzID0gbmV3IEFycmF5KGlpKTsKKworICAgICAgICAg
ICAgdHJ5IHsKKyAgICAgICAgICAgICAgZm9yICg7IGkgPCBpaTsgaSsrKSB7CisgICAgICAgICAg
ICAgICAgdmFsdWVzW2ldID0gcGFyc2VGbnNbaV0oY29udGV4dCk7CisgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICByZXR1cm4gY29tcHV0ZSh2YWx1ZXMpOworICAgICAgICAgICAgfSBj
YXRjaCAoZXJyKSB7CisgICAgICAgICAgICAgICRleGNlcHRpb25IYW5kbGVyKCRpbnRlcnBvbGF0
ZU1pbkVyci5pbnRlcnIodGV4dCwgZXJyKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICB9
LCB7CisgICAgICAgICAgLy8gYWxsIG9mIHRoZXNlIHByb3BlcnRpZXMgYXJlIHVuZG9jdW1lbnRl
ZCBmb3Igbm93CisgICAgICAgICAgZXhwOiB0ZXh0LCAvL2p1c3QgZm9yIGNvbXBhdGliaWxpdHkg
d2l0aCByZWd1bGFyIHdhdGNoZXJzIGNyZWF0ZWQgdmlhICR3YXRjaAorICAgICAgICAgIGV4cHJl
c3Npb25zOiBleHByZXNzaW9ucywKKyAgICAgICAgICAkJHdhdGNoRGVsZWdhdGU6IGZ1bmN0aW9u
KHNjb3BlLCBsaXN0ZW5lcikgeworICAgICAgICAgICAgdmFyIGxhc3RWYWx1ZTsKKyAgICAgICAg
ICAgIHJldHVybiBzY29wZS4kd2F0Y2hHcm91cChwYXJzZUZucywgZnVuY3Rpb24gaW50ZXJwb2xh
dGVGbldhdGNoZXIodmFsdWVzLCBvbGRWYWx1ZXMpIHsKKyAgICAgICAgICAgICAgdmFyIGN1cnJW
YWx1ZSA9IGNvbXB1dGUodmFsdWVzKTsKKyAgICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24obGlz
dGVuZXIpKSB7CisgICAgICAgICAgICAgICAgbGlzdGVuZXIuY2FsbCh0aGlzLCBjdXJyVmFsdWUs
IHZhbHVlcyAhPT0gb2xkVmFsdWVzID8gbGFzdFZhbHVlIDogY3VyclZhbHVlLCBzY29wZSk7Cisg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgbGFzdFZhbHVlID0gY3VyclZhbHVlOworICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICAgIH0KKworICAgICAg
ZnVuY3Rpb24gcGFyc2VTdHJpbmdpZnlJbnRlcmNlcHRvcih2YWx1ZSkgeworICAgICAgICB0cnkg
eworICAgICAgICAgIHZhbHVlID0gZ2V0VmFsdWUodmFsdWUpOworICAgICAgICAgIHJldHVybiBh
bGxPck5vdGhpbmcgJiYgIWlzRGVmaW5lZCh2YWx1ZSkgPyB2YWx1ZSA6IHN0cmluZ2lmeSh2YWx1
ZSk7CisgICAgICAgIH0gY2F0Y2ggKGVycikgeworICAgICAgICAgICRleGNlcHRpb25IYW5kbGVy
KCRpbnRlcnBvbGF0ZU1pbkVyci5pbnRlcnIodGV4dCwgZXJyKSk7CisgICAgICAgIH0KKyAgICAg
IH0KKyAgICB9CisKKworICAgIC8qKgorICAgICAqIEBuZ2RvYyBtZXRob2QKKyAgICAgKiBAbmFt
ZSAkaW50ZXJwb2xhdGUjc3RhcnRTeW1ib2wKKyAgICAgKiBAZGVzY3JpcHRpb24KKyAgICAgKiBT
eW1ib2wgdG8gZGVub3RlIHRoZSBzdGFydCBvZiBleHByZXNzaW9uIGluIHRoZSBpbnRlcnBvbGF0
ZWQgc3RyaW5nLiBEZWZhdWx0cyB0byBge3tgLgorICAgICAqCisgICAgICogVXNlIHtAbGluayBu
Zy4kaW50ZXJwb2xhdGVQcm92aWRlciNzdGFydFN5bWJvbCBgJGludGVycG9sYXRlUHJvdmlkZXIu
c3RhcnRTeW1ib2xgfSB0byBjaGFuZ2UKKyAgICAgKiB0aGUgc3ltYm9sLgorICAgICAqCisgICAg
ICogQHJldHVybnMge3N0cmluZ30gc3RhcnQgc3ltYm9sLgorICAgICAqLworICAgICRpbnRlcnBv
bGF0ZS5zdGFydFN5bWJvbCA9IGZ1bmN0aW9uKCkgeworICAgICAgcmV0dXJuIHN0YXJ0U3ltYm9s
OworICAgIH07CisKKworICAgIC8qKgorICAgICAqIEBuZ2RvYyBtZXRob2QKKyAgICAgKiBAbmFt
ZSAkaW50ZXJwb2xhdGUjZW5kU3ltYm9sCisgICAgICogQGRlc2NyaXB0aW9uCisgICAgICogU3lt
Ym9sIHRvIGRlbm90ZSB0aGUgZW5kIG9mIGV4cHJlc3Npb24gaW4gdGhlIGludGVycG9sYXRlZCBz
dHJpbmcuIERlZmF1bHRzIHRvIGB9fWAuCisgICAgICoKKyAgICAgKiBVc2Uge0BsaW5rIG5nLiRp
bnRlcnBvbGF0ZVByb3ZpZGVyI2VuZFN5bWJvbCBgJGludGVycG9sYXRlUHJvdmlkZXIuZW5kU3lt
Ym9sYH0gdG8gY2hhbmdlCisgICAgICogdGhlIHN5bWJvbC4KKyAgICAgKgorICAgICAqIEByZXR1
cm5zIHtzdHJpbmd9IGVuZCBzeW1ib2wuCisgICAgICovCisgICAgJGludGVycG9sYXRlLmVuZFN5
bWJvbCA9IGZ1bmN0aW9uKCkgeworICAgICAgcmV0dXJuIGVuZFN5bWJvbDsKKyAgICB9OworCisg
ICAgcmV0dXJuICRpbnRlcnBvbGF0ZTsKKyAgfV07Cit9CisKK2Z1bmN0aW9uICRJbnRlcnZhbFBy
b3ZpZGVyKCkgeworICB0aGlzLiRnZXQgPSBbJyRyb290U2NvcGUnLCAnJHdpbmRvdycsICckcScs
ICckJHEnLAorICAgICAgIGZ1bmN0aW9uKCRyb290U2NvcGUsICAgJHdpbmRvdywgICAkcSwgICAk
JHEpIHsKKyAgICB2YXIgaW50ZXJ2YWxzID0ge307CisKKworICAgICAvKioKKyAgICAgICogQG5n
ZG9jIHNlcnZpY2UKKyAgICAgICogQG5hbWUgJGludGVydmFsCisgICAgICAqCisgICAgICAqIEBk
ZXNjcmlwdGlvbgorICAgICAgKiBBbmd1bGFyJ3Mgd3JhcHBlciBmb3IgYHdpbmRvdy5zZXRJbnRl
cnZhbGAuIFRoZSBgZm5gIGZ1bmN0aW9uIGlzIGV4ZWN1dGVkIGV2ZXJ5IGBkZWxheWAKKyAgICAg
ICogbWlsbGlzZWNvbmRzLgorICAgICAgKgorICAgICAgKiBUaGUgcmV0dXJuIHZhbHVlIG9mIHJl
Z2lzdGVyaW5nIGFuIGludGVydmFsIGZ1bmN0aW9uIGlzIGEgcHJvbWlzZS4gVGhpcyBwcm9taXNl
IHdpbGwgYmUKKyAgICAgICogbm90aWZpZWQgdXBvbiBlYWNoIHRpY2sgb2YgdGhlIGludGVydmFs
LCBhbmQgd2lsbCBiZSByZXNvbHZlZCBhZnRlciBgY291bnRgIGl0ZXJhdGlvbnMsIG9yCisgICAg
ICAqIHJ1biBpbmRlZmluaXRlbHkgaWYgYGNvdW50YCBpcyBub3QgZGVmaW5lZC4gVGhlIHZhbHVl
IG9mIHRoZSBub3RpZmljYXRpb24gd2lsbCBiZSB0aGUKKyAgICAgICogbnVtYmVyIG9mIGl0ZXJh
dGlvbnMgdGhhdCBoYXZlIHJ1bi4KKyAgICAgICogVG8gY2FuY2VsIGFuIGludGVydmFsLCBjYWxs
IGAkaW50ZXJ2YWwuY2FuY2VsKHByb21pc2UpYC4KKyAgICAgICoKKyAgICAgICogSW4gdGVzdHMg
eW91IGNhbiB1c2Uge0BsaW5rIG5nTW9jay4kaW50ZXJ2YWwjZmx1c2ggYCRpbnRlcnZhbC5mbHVz
aChtaWxsaXMpYH0gdG8KKyAgICAgICogbW92ZSBmb3J3YXJkIGJ5IGBtaWxsaXNgIG1pbGxpc2Vj
b25kcyBhbmQgdHJpZ2dlciBhbnkgZnVuY3Rpb25zIHNjaGVkdWxlZCB0byBydW4gaW4gdGhhdAor
ICAgICAgKiB0aW1lLgorICAgICAgKgorICAgICAgKiA8ZGl2IGNsYXNzPSJhbGVydCBhbGVydC13
YXJuaW5nIj4KKyAgICAgICogKipOb3RlKio6IEludGVydmFscyBjcmVhdGVkIGJ5IHRoaXMgc2Vy
dmljZSBtdXN0IGJlIGV4cGxpY2l0bHkgZGVzdHJveWVkIHdoZW4geW91IGFyZSBmaW5pc2hlZAor
ICAgICAgKiB3aXRoIHRoZW0uICBJbiBwYXJ0aWN1bGFyIHRoZXkgYXJlIG5vdCBhdXRvbWF0aWNh
bGx5IGRlc3Ryb3llZCB3aGVuIGEgY29udHJvbGxlcidzIHNjb3BlIG9yIGEKKyAgICAgICogZGly
ZWN0aXZlJ3MgZWxlbWVudCBhcmUgZGVzdHJveWVkLgorICAgICAgKiBZb3Ugc2hvdWxkIHRha2Ug
dGhpcyBpbnRvIGNvbnNpZGVyYXRpb24gYW5kIG1ha2Ugc3VyZSB0byBhbHdheXMgY2FuY2VsIHRo
ZSBpbnRlcnZhbCBhdCB0aGUKKyAgICAgICogYXBwcm9wcmlhdGUgbW9tZW50LiAgU2VlIHRoZSBl
eGFtcGxlIGJlbG93IGZvciBtb3JlIGRldGFpbHMgb24gaG93IGFuZCB3aGVuIHRvIGRvIHRoaXMu
CisgICAgICAqIDwvZGl2PgorICAgICAgKgorICAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKCl9IGZu
IEEgZnVuY3Rpb24gdGhhdCBzaG91bGQgYmUgY2FsbGVkIHJlcGVhdGVkbHkuCisgICAgICAqIEBw
YXJhbSB7bnVtYmVyfSBkZWxheSBOdW1iZXIgb2YgbWlsbGlzZWNvbmRzIGJldHdlZW4gZWFjaCBm
dW5jdGlvbiBjYWxsLgorICAgICAgKiBAcGFyYW0ge251bWJlcj19IFtjb3VudD0wXSBOdW1iZXIg
b2YgdGltZXMgdG8gcmVwZWF0LiBJZiBub3Qgc2V0LCBvciAwLCB3aWxsIHJlcGVhdAorICAgICAg
KiAgIGluZGVmaW5pdGVseS4KKyAgICAgICogQHBhcmFtIHtib29sZWFuPX0gW2ludm9rZUFwcGx5
PXRydWVdIElmIHNldCB0byBgZmFsc2VgIHNraXBzIG1vZGVsIGRpcnR5IGNoZWNraW5nLCBvdGhl
cndpc2UKKyAgICAgICogICB3aWxsIGludm9rZSBgZm5gIHdpdGhpbiB0aGUge0BsaW5rIG5nLiRy
b290U2NvcGUuU2NvcGUjJGFwcGx5ICRhcHBseX0gYmxvY2suCisgICAgICAqIEBwYXJhbSB7Li4u
Kj19IFBhc3MgYWRkaXRpb25hbCBwYXJhbWV0ZXJzIHRvIHRoZSBleGVjdXRlZCBmdW5jdGlvbi4K
KyAgICAgICogQHJldHVybnMge3Byb21pc2V9IEEgcHJvbWlzZSB3aGljaCB3aWxsIGJlIG5vdGlm
aWVkIG9uIGVhY2ggaXRlcmF0aW9uLgorICAgICAgKgorICAgICAgKiBAZXhhbXBsZQorICAgICAg
KiA8ZXhhbXBsZSBtb2R1bGU9ImludGVydmFsRXhhbXBsZSI+CisgICAgICAqIDxmaWxlIG5hbWU9
ImluZGV4Lmh0bWwiPgorICAgICAgKiAgIDxzY3JpcHQ+CisgICAgICAqICAgICBhbmd1bGFyLm1v
ZHVsZSgnaW50ZXJ2YWxFeGFtcGxlJywgW10pCisgICAgICAqICAgICAgIC5jb250cm9sbGVyKCdF
eGFtcGxlQ29udHJvbGxlcicsIFsnJHNjb3BlJywgJyRpbnRlcnZhbCcsCisgICAgICAqICAgICAg
ICAgZnVuY3Rpb24oJHNjb3BlLCAkaW50ZXJ2YWwpIHsKKyAgICAgICogICAgICAgICAgICRzY29w
ZS5mb3JtYXQgPSAnTS9kL3l5IGg6bW06c3MgYSc7CisgICAgICAqICAgICAgICAgICAkc2NvcGUu
Ymxvb2RfMSA9IDEwMDsKKyAgICAgICogICAgICAgICAgICRzY29wZS5ibG9vZF8yID0gMTIwOwor
ICAgICAgKgorICAgICAgKiAgICAgICAgICAgdmFyIHN0b3A7CisgICAgICAqICAgICAgICAgICAk
c2NvcGUuZmlnaHQgPSBmdW5jdGlvbigpIHsKKyAgICAgICogICAgICAgICAgICAgLy8gRG9uJ3Qg
c3RhcnQgYSBuZXcgZmlnaHQgaWYgd2UgYXJlIGFscmVhZHkgZmlnaHRpbmcKKyAgICAgICogICAg
ICAgICAgICAgaWYgKCBhbmd1bGFyLmlzRGVmaW5lZChzdG9wKSApIHJldHVybjsKKyAgICAgICoK
KyAgICAgICogICAgICAgICAgICAgc3RvcCA9ICRpbnRlcnZhbChmdW5jdGlvbigpIHsKKyAgICAg
ICogICAgICAgICAgICAgICBpZiAoJHNjb3BlLmJsb29kXzEgPiAwICYmICRzY29wZS5ibG9vZF8y
ID4gMCkgeworICAgICAgKiAgICAgICAgICAgICAgICAgJHNjb3BlLmJsb29kXzEgPSAkc2NvcGUu
Ymxvb2RfMSAtIDM7CisgICAgICAqICAgICAgICAgICAgICAgICAkc2NvcGUuYmxvb2RfMiA9ICRz
Y29wZS5ibG9vZF8yIC0gNDsKKyAgICAgICogICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
KiAgICAgICAgICAgICAgICAgJHNjb3BlLnN0b3BGaWdodCgpOworICAgICAgKiAgICAgICAgICAg
ICAgIH0KKyAgICAgICogICAgICAgICAgICAgfSwgMTAwKTsKKyAgICAgICogICAgICAgICAgIH07
CisgICAgICAqCisgICAgICAqICAgICAgICAgICAkc2NvcGUuc3RvcEZpZ2h0ID0gZnVuY3Rpb24o
KSB7CisgICAgICAqICAgICAgICAgICAgIGlmIChhbmd1bGFyLmlzRGVmaW5lZChzdG9wKSkgewor
ICAgICAgKiAgICAgICAgICAgICAgICRpbnRlcnZhbC5jYW5jZWwoc3RvcCk7CisgICAgICAqICAg
ICAgICAgICAgICAgc3RvcCA9IHVuZGVmaW5lZDsKKyAgICAgICogICAgICAgICAgICAgfQorICAg
ICAgKiAgICAgICAgICAgfTsKKyAgICAgICoKKyAgICAgICogICAgICAgICAgICRzY29wZS5yZXNl
dEZpZ2h0ID0gZnVuY3Rpb24oKSB7CisgICAgICAqICAgICAgICAgICAgICRzY29wZS5ibG9vZF8x
ID0gMTAwOworICAgICAgKiAgICAgICAgICAgICAkc2NvcGUuYmxvb2RfMiA9IDEyMDsKKyAgICAg
ICogICAgICAgICAgIH07CisgICAgICAqCisgICAgICAqICAgICAgICAgICAkc2NvcGUuJG9uKCck
ZGVzdHJveScsIGZ1bmN0aW9uKCkgeworICAgICAgKiAgICAgICAgICAgICAvLyBNYWtlIHN1cmUg
dGhhdCB0aGUgaW50ZXJ2YWwgaXMgZGVzdHJveWVkIHRvbworICAgICAgKiAgICAgICAgICAgICAk
c2NvcGUuc3RvcEZpZ2h0KCk7CisgICAgICAqICAgICAgICAgICB9KTsKKyAgICAgICogICAgICAg
ICB9XSkKKyAgICAgICogICAgICAgLy8gUmVnaXN0ZXIgdGhlICdteUN1cnJlbnRUaW1lJyBkaXJl
Y3RpdmUgZmFjdG9yeSBtZXRob2QuCisgICAgICAqICAgICAgIC8vIFdlIGluamVjdCAkaW50ZXJ2
YWwgYW5kIGRhdGVGaWx0ZXIgc2VydmljZSBzaW5jZSB0aGUgZmFjdG9yeSBtZXRob2QgaXMgREku
CisgICAgICAqICAgICAgIC5kaXJlY3RpdmUoJ215Q3VycmVudFRpbWUnLCBbJyRpbnRlcnZhbCcs
ICdkYXRlRmlsdGVyJywKKyAgICAgICogICAgICAgICBmdW5jdGlvbigkaW50ZXJ2YWwsIGRhdGVG
aWx0ZXIpIHsKKyAgICAgICogICAgICAgICAgIC8vIHJldHVybiB0aGUgZGlyZWN0aXZlIGxpbmsg
ZnVuY3Rpb24uIChjb21waWxlIGZ1bmN0aW9uIG5vdCBuZWVkZWQpCisgICAgICAqICAgICAgICAg
ICByZXR1cm4gZnVuY3Rpb24oc2NvcGUsIGVsZW1lbnQsIGF0dHJzKSB7CisgICAgICAqICAgICAg
ICAgICAgIHZhciBmb3JtYXQsICAvLyBkYXRlIGZvcm1hdAorICAgICAgKiAgICAgICAgICAgICAg
ICAgc3RvcFRpbWU7IC8vIHNvIHRoYXQgd2UgY2FuIGNhbmNlbCB0aGUgdGltZSB1cGRhdGVzCisg
ICAgICAqCisgICAgICAqICAgICAgICAgICAgIC8vIHVzZWQgdG8gdXBkYXRlIHRoZSBVSQorICAg
ICAgKiAgICAgICAgICAgICBmdW5jdGlvbiB1cGRhdGVUaW1lKCkgeworICAgICAgKiAgICAgICAg
ICAgICAgIGVsZW1lbnQudGV4dChkYXRlRmlsdGVyKG5ldyBEYXRlKCksIGZvcm1hdCkpOworICAg
ICAgKiAgICAgICAgICAgICB9CisgICAgICAqCisgICAgICAqICAgICAgICAgICAgIC8vIHdhdGNo
IHRoZSBleHByZXNzaW9uLCBhbmQgdXBkYXRlIHRoZSBVSSBvbiBjaGFuZ2UuCisgICAgICAqICAg
ICAgICAgICAgIHNjb3BlLiR3YXRjaChhdHRycy5teUN1cnJlbnRUaW1lLCBmdW5jdGlvbih2YWx1
ZSkgeworICAgICAgKiAgICAgICAgICAgICAgIGZvcm1hdCA9IHZhbHVlOworICAgICAgKiAgICAg
ICAgICAgICAgIHVwZGF0ZVRpbWUoKTsKKyAgICAgICogICAgICAgICAgICAgfSk7CisgICAgICAq
CisgICAgICAqICAgICAgICAgICAgIHN0b3BUaW1lID0gJGludGVydmFsKHVwZGF0ZVRpbWUsIDEw
MDApOworICAgICAgKgorICAgICAgKiAgICAgICAgICAgICAvLyBsaXN0ZW4gb24gRE9NIGRlc3Ry
b3kgKHJlbW92YWwpIGV2ZW50LCBhbmQgY2FuY2VsIHRoZSBuZXh0IFVJIHVwZGF0ZQorICAgICAg
KiAgICAgICAgICAgICAvLyB0byBwcmV2ZW50IHVwZGF0aW5nIHRpbWUgYWZ0ZXIgdGhlIERPTSBl
bGVtZW50IHdhcyByZW1vdmVkLgorICAgICAgKiAgICAgICAgICAgICBlbGVtZW50Lm9uKCckZGVz
dHJveScsIGZ1bmN0aW9uKCkgeworICAgICAgKiAgICAgICAgICAgICAgICRpbnRlcnZhbC5jYW5j
ZWwoc3RvcFRpbWUpOworICAgICAgKiAgICAgICAgICAgICB9KTsKKyAgICAgICogICAgICAgICAg
IH0KKyAgICAgICogICAgICAgICB9XSk7CisgICAgICAqICAgPC9zY3JpcHQ+CisgICAgICAqCisg
ICAgICAqICAgPGRpdj4KKyAgICAgICogICAgIDxkaXYgbmctY29udHJvbGxlcj0iRXhhbXBsZUNv
bnRyb2xsZXIiPgorICAgICAgKiAgICAgICA8bGFiZWw+RGF0ZSBmb3JtYXQ6IDxpbnB1dCBuZy1t
b2RlbD0iZm9ybWF0Ij48L2xhYmVsPiA8aHIvPgorICAgICAgKiAgICAgICBDdXJyZW50IHRpbWUg
aXM6IDxzcGFuIG15LWN1cnJlbnQtdGltZT0iZm9ybWF0Ij48L3NwYW4+CisgICAgICAqICAgICAg
IDxoci8+CisgICAgICAqICAgICAgIEJsb29kIDEgOiA8Zm9udCBjb2xvcj0ncmVkJz57e2Jsb29k
XzF9fTwvZm9udD4KKyAgICAgICogICAgICAgQmxvb2QgMiA6IDxmb250IGNvbG9yPSdyZWQnPnt7
Ymxvb2RfMn19PC9mb250PgorICAgICAgKiAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgZGF0
YS1uZy1jbGljaz0iZmlnaHQoKSI+RmlnaHQ8L2J1dHRvbj4KKyAgICAgICogICAgICAgPGJ1dHRv
biB0eXBlPSJidXR0b24iIGRhdGEtbmctY2xpY2s9InN0b3BGaWdodCgpIj5TdG9wRmlnaHQ8L2J1
dHRvbj4KKyAgICAgICogICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGRhdGEtbmctY2xpY2s9
InJlc2V0RmlnaHQoKSI+cmVzZXRGaWdodDwvYnV0dG9uPgorICAgICAgKiAgICAgPC9kaXY+Cisg
ICAgICAqICAgPC9kaXY+CisgICAgICAqCisgICAgICAqIDwvZmlsZT4KKyAgICAgICogPC9leGFt
cGxlPgorICAgICAgKi8KKyAgICBmdW5jdGlvbiBpbnRlcnZhbChmbiwgZGVsYXksIGNvdW50LCBp
bnZva2VBcHBseSkgeworICAgICAgdmFyIGhhc1BhcmFtcyA9IGFyZ3VtZW50cy5sZW5ndGggPiA0
LAorICAgICAgICAgIGFyZ3MgPSBoYXNQYXJhbXMgPyBzbGljZUFyZ3MoYXJndW1lbnRzLCA0KSA6
IFtdLAorICAgICAgICAgIHNldEludGVydmFsID0gJHdpbmRvdy5zZXRJbnRlcnZhbCwKKyAgICAg
ICAgICBjbGVhckludGVydmFsID0gJHdpbmRvdy5jbGVhckludGVydmFsLAorICAgICAgICAgIGl0
ZXJhdGlvbiA9IDAsCisgICAgICAgICAgc2tpcEFwcGx5ID0gKGlzRGVmaW5lZChpbnZva2VBcHBs
eSkgJiYgIWludm9rZUFwcGx5KSwKKyAgICAgICAgICBkZWZlcnJlZCA9IChza2lwQXBwbHkgPyAk
JHEgOiAkcSkuZGVmZXIoKSwKKyAgICAgICAgICBwcm9taXNlID0gZGVmZXJyZWQucHJvbWlzZTsK
KworICAgICAgY291bnQgPSBpc0RlZmluZWQoY291bnQpID8gY291bnQgOiAwOworCisgICAgICBw
cm9taXNlLnRoZW4obnVsbCwgbnVsbCwgKCFoYXNQYXJhbXMpID8gZm4gOiBmdW5jdGlvbigpIHsK
KyAgICAgICAgZm4uYXBwbHkobnVsbCwgYXJncyk7CisgICAgICB9KTsKKworICAgICAgcHJvbWlz
ZS4kJGludGVydmFsSWQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbiB0aWNrKCkgeworICAgICAgICBk
ZWZlcnJlZC5ub3RpZnkoaXRlcmF0aW9uKyspOworCisgICAgICAgIGlmIChjb3VudCA+IDAgJiYg
aXRlcmF0aW9uID49IGNvdW50KSB7CisgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZShpdGVyYXRp
b24pOworICAgICAgICAgIGNsZWFySW50ZXJ2YWwocHJvbWlzZS4kJGludGVydmFsSWQpOworICAg
ICAgICAgIGRlbGV0ZSBpbnRlcnZhbHNbcHJvbWlzZS4kJGludGVydmFsSWRdOworICAgICAgICB9
CisKKyAgICAgICAgaWYgKCFza2lwQXBwbHkpICRyb290U2NvcGUuJGFwcGx5KCk7CisKKyAgICAg
IH0sIGRlbGF5KTsKKworICAgICAgaW50ZXJ2YWxzW3Byb21pc2UuJCRpbnRlcnZhbElkXSA9IGRl
ZmVycmVkOworCisgICAgICByZXR1cm4gcHJvbWlzZTsKKyAgICB9CisKKworICAgICAvKioKKyAg
ICAgICogQG5nZG9jIG1ldGhvZAorICAgICAgKiBAbmFtZSAkaW50ZXJ2YWwjY2FuY2VsCisgICAg
ICAqCisgICAgICAqIEBkZXNjcmlwdGlvbgorICAgICAgKiBDYW5jZWxzIGEgdGFzayBhc3NvY2lh
dGVkIHdpdGggdGhlIGBwcm9taXNlYC4KKyAgICAgICoKKyAgICAgICogQHBhcmFtIHtwcm9taXNl
fSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSBgJGludGVydmFsYCBmdW5jdGlvbi4KKyAgICAgICog
QHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSB0YXNrIHdhcyBzdWNjZXNz
ZnVsbHkgY2FuY2VsZWQuCisgICAgICAqLworICAgIGludGVydmFsLmNhbmNlbCA9IGZ1bmN0aW9u
KHByb21pc2UpIHsKKyAgICAgIGlmIChwcm9taXNlICYmIHByb21pc2UuJCRpbnRlcnZhbElkIGlu
IGludGVydmFscykgeworICAgICAgICBpbnRlcnZhbHNbcHJvbWlzZS4kJGludGVydmFsSWRdLnJl
amVjdCgnY2FuY2VsZWQnKTsKKyAgICAgICAgJHdpbmRvdy5jbGVhckludGVydmFsKHByb21pc2Uu
JCRpbnRlcnZhbElkKTsKKyAgICAgICAgZGVsZXRlIGludGVydmFsc1twcm9taXNlLiQkaW50ZXJ2
YWxJZF07CisgICAgICAgIHJldHVybiB0cnVlOworICAgICAgfQorICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH07CisKKyAgICByZXR1cm4gaW50ZXJ2YWw7CisgIH1dOworfQorCisvKioKKyAqIEBu
Z2RvYyBzZXJ2aWNlCisgKiBAbmFtZSAkbG9jYWxlCisgKgorICogQGRlc2NyaXB0aW9uCisgKiAk
bG9jYWxlIHNlcnZpY2UgcHJvdmlkZXMgbG9jYWxpemF0aW9uIHJ1bGVzIGZvciB2YXJpb3VzIEFu
Z3VsYXIgY29tcG9uZW50cy4gQXMgb2YgcmlnaHQgbm93IHRoZQorICogb25seSBwdWJsaWMgYXBp
IGlzOgorICoKKyAqICogYGlkYCDigJMgYHtzdHJpbmd9YCDigJMgbG9jYWxlIGlkIGZvcm1hdHRl
ZCBhcyBgbGFuZ3VhZ2VJZC1jb3VudHJ5SWRgIChlLmcuIGBlbi11c2ApCisgKi8KK2Z1bmN0aW9u
ICRMb2NhbGVQcm92aWRlcigpIHsKKyAgdGhpcy4kZ2V0ID0gZnVuY3Rpb24oKSB7CisgICAgcmV0
dXJuIHsKKyAgICAgIGlkOiAnZW4tdXMnLAorCisgICAgICBOVU1CRVJfRk9STUFUUzogeworICAg
ICAgICBERUNJTUFMX1NFUDogJy4nLAorICAgICAgICBHUk9VUF9TRVA6ICcsJywKKyAgICAgICAg
UEFUVEVSTlM6IFsKKyAgICAgICAgICB7IC8vIERlY2ltYWwgUGF0dGVybgorICAgICAgICAgICAg
bWluSW50OiAxLAorICAgICAgICAgICAgbWluRnJhYzogMCwKKyAgICAgICAgICAgIG1heEZyYWM6
IDMsCisgICAgICAgICAgICBwb3NQcmU6ICcnLAorICAgICAgICAgICAgcG9zU3VmOiAnJywKKyAg
ICAgICAgICAgIG5lZ1ByZTogJy0nLAorICAgICAgICAgICAgbmVnU3VmOiAnJywKKyAgICAgICAg
ICAgIGdTaXplOiAzLAorICAgICAgICAgICAgbGdTaXplOiAzCisgICAgICAgICAgfSx7IC8vQ3Vy
cmVuY3kgUGF0dGVybgorICAgICAgICAgICAgbWluSW50OiAxLAorICAgICAgICAgICAgbWluRnJh
YzogMiwKKyAgICAgICAgICAgIG1heEZyYWM6IDIsCisgICAgICAgICAgICBwb3NQcmU6ICdcdTAw
QTQnLAorICAgICAgICAgICAgcG9zU3VmOiAnJywKKyAgICAgICAgICAgIG5lZ1ByZTogJyhcdTAw
QTQnLAorICAgICAgICAgICAgbmVnU3VmOiAnKScsCisgICAgICAgICAgICBnU2l6ZTogMywKKyAg
ICAgICAgICAgIGxnU2l6ZTogMworICAgICAgICAgIH0KKyAgICAgICAgXSwKKyAgICAgICAgQ1VS
UkVOQ1lfU1lNOiAnJCcKKyAgICAgIH0sCisKKyAgICAgIERBVEVUSU1FX0ZPUk1BVFM6IHsKKyAg
ICAgICAgTU9OVEg6CisgICAgICAgICAgICAnSmFudWFyeSxGZWJydWFyeSxNYXJjaCxBcHJpbCxN
YXksSnVuZSxKdWx5LEF1Z3VzdCxTZXB0ZW1iZXIsT2N0b2JlcixOb3ZlbWJlcixEZWNlbWJlcicK
KyAgICAgICAgICAgIC5zcGxpdCgnLCcpLAorICAgICAgICBTSE9SVE1PTlRIOiAgJ0phbixGZWIs
TWFyLEFwcixNYXksSnVuLEp1bCxBdWcsU2VwLE9jdCxOb3YsRGVjJy5zcGxpdCgnLCcpLAorICAg
ICAgICBEQVk6ICdTdW5kYXksTW9uZGF5LFR1ZXNkYXksV2VkbmVzZGF5LFRodXJzZGF5LEZyaWRh
eSxTYXR1cmRheScuc3BsaXQoJywnKSwKKyAgICAgICAgU0hPUlREQVk6ICdTdW4sTW9uLFR1ZSxX
ZWQsVGh1LEZyaSxTYXQnLnNwbGl0KCcsJyksCisgICAgICAgIEFNUE1TOiBbJ0FNJywnUE0nXSwK
KyAgICAgICAgbWVkaXVtOiAnTU1NIGQsIHkgaDptbTpzcyBhJywKKyAgICAgICAgJ3Nob3J0Jzog
J00vZC95eSBoOm1tIGEnLAorICAgICAgICBmdWxsRGF0ZTogJ0VFRUUsIE1NTU0gZCwgeScsCisg
ICAgICAgIGxvbmdEYXRlOiAnTU1NTSBkLCB5JywKKyAgICAgICAgbWVkaXVtRGF0ZTogJ01NTSBk
LCB5JywKKyAgICAgICAgc2hvcnREYXRlOiAnTS9kL3l5JywKKyAgICAgICAgbWVkaXVtVGltZTog
J2g6bW06c3MgYScsCisgICAgICAgIHNob3J0VGltZTogJ2g6bW0gYScsCisgICAgICAgIEVSQU5B
TUVTOiBbCisgICAgICAgICAgIkJlZm9yZSBDaHJpc3QiLAorICAgICAgICAgICJBbm5vIERvbWlu
aSIKKyAgICAgICAgXSwKKyAgICAgICAgRVJBUzogWworICAgICAgICAgICJCQyIsCisgICAgICAg
ICAgIkFEIgorICAgICAgICBdCisgICAgICB9LAorCisgICAgICBwbHVyYWxDYXQ6IGZ1bmN0aW9u
KG51bSkgeworICAgICAgICBpZiAobnVtID09PSAxKSB7CisgICAgICAgICAgcmV0dXJuICdvbmUn
OworICAgICAgICB9CisgICAgICAgIHJldHVybiAnb3RoZXInOworICAgICAgfQorICAgIH07Cisg
IH07Cit9CisKK3ZhciBQQVRIX01BVENIID0gL14oW15cPyNdKikoXD8oW14jXSopKT8oIyguKikp
PyQvLAorICAgIERFRkFVTFRfUE9SVFMgPSB7J2h0dHAnOiA4MCwgJ2h0dHBzJzogNDQzLCAnZnRw
JzogMjF9OwordmFyICRsb2NhdGlvbk1pbkVyciA9IG1pbkVycignJGxvY2F0aW9uJyk7CisKKwor
LyoqCisgKiBFbmNvZGUgcGF0aCB1c2luZyBlbmNvZGVVcmlTZWdtZW50LCBpZ25vcmluZyBmb3J3
YXJkIHNsYXNoZXMKKyAqCisgKiBAcGFyYW0ge3N0cmluZ30gcGF0aCBQYXRoIHRvIGVuY29kZQor
ICogQHJldHVybnMge3N0cmluZ30KKyAqLworZnVuY3Rpb24gZW5jb2RlUGF0aChwYXRoKSB7Cisg
IHZhciBzZWdtZW50cyA9IHBhdGguc3BsaXQoJy8nKSwKKyAgICAgIGkgPSBzZWdtZW50cy5sZW5n
dGg7CisKKyAgd2hpbGUgKGktLSkgeworICAgIHNlZ21lbnRzW2ldID0gZW5jb2RlVXJpU2VnbWVu
dChzZWdtZW50c1tpXSk7CisgIH0KKworICByZXR1cm4gc2VnbWVudHMuam9pbignLycpOworfQor
CitmdW5jdGlvbiBwYXJzZUFic29sdXRlVXJsKGFic29sdXRlVXJsLCBsb2NhdGlvbk9iaikgewor
ICB2YXIgcGFyc2VkVXJsID0gdXJsUmVzb2x2ZShhYnNvbHV0ZVVybCk7CisKKyAgbG9jYXRpb25P
YmouJCRwcm90b2NvbCA9IHBhcnNlZFVybC5wcm90b2NvbDsKKyAgbG9jYXRpb25PYmouJCRob3N0
ID0gcGFyc2VkVXJsLmhvc3RuYW1lOworICBsb2NhdGlvbk9iai4kJHBvcnQgPSB0b0ludChwYXJz
ZWRVcmwucG9ydCkgfHwgREVGQVVMVF9QT1JUU1twYXJzZWRVcmwucHJvdG9jb2xdIHx8IG51bGw7
Cit9CisKKworZnVuY3Rpb24gcGFyc2VBcHBVcmwocmVsYXRpdmVVcmwsIGxvY2F0aW9uT2JqKSB7
CisgIHZhciBwcmVmaXhlZCA9IChyZWxhdGl2ZVVybC5jaGFyQXQoMCkgIT09ICcvJyk7CisgIGlm
IChwcmVmaXhlZCkgeworICAgIHJlbGF0aXZlVXJsID0gJy8nICsgcmVsYXRpdmVVcmw7CisgIH0K
KyAgdmFyIG1hdGNoID0gdXJsUmVzb2x2ZShyZWxhdGl2ZVVybCk7CisgIGxvY2F0aW9uT2JqLiQk
cGF0aCA9IGRlY29kZVVSSUNvbXBvbmVudChwcmVmaXhlZCAmJiBtYXRjaC5wYXRobmFtZS5jaGFy
QXQoMCkgPT09ICcvJyA/CisgICAgICBtYXRjaC5wYXRobmFtZS5zdWJzdHJpbmcoMSkgOiBtYXRj
aC5wYXRobmFtZSk7CisgIGxvY2F0aW9uT2JqLiQkc2VhcmNoID0gcGFyc2VLZXlWYWx1ZShtYXRj
aC5zZWFyY2gpOworICBsb2NhdGlvbk9iai4kJGhhc2ggPSBkZWNvZGVVUklDb21wb25lbnQobWF0
Y2guaGFzaCk7CisKKyAgLy8gbWFrZSBzdXJlIHBhdGggc3RhcnRzIHdpdGggJy8nOworICBpZiAo
bG9jYXRpb25PYmouJCRwYXRoICYmIGxvY2F0aW9uT2JqLiQkcGF0aC5jaGFyQXQoMCkgIT0gJy8n
KSB7CisgICAgbG9jYXRpb25PYmouJCRwYXRoID0gJy8nICsgbG9jYXRpb25PYmouJCRwYXRoOwor
ICB9Cit9CisKKworLyoqCisgKgorICogQHBhcmFtIHtzdHJpbmd9IGJlZ2luCisgKiBAcGFyYW0g
e3N0cmluZ30gd2hvbGUKKyAqIEByZXR1cm5zIHtzdHJpbmd9IHJldHVybnMgdGV4dCBmcm9tIHdo
b2xlIGFmdGVyIGJlZ2luIG9yIHVuZGVmaW5lZCBpZiBpdCBkb2VzIG5vdCBiZWdpbiB3aXRoCisg
KiAgICAgICAgICAgICAgICAgICBleHBlY3RlZCBzdHJpbmcuCisgKi8KK2Z1bmN0aW9uIGJlZ2lu
c1dpdGgoYmVnaW4sIHdob2xlKSB7CisgIGlmICh3aG9sZS5pbmRleE9mKGJlZ2luKSA9PT0gMCkg
eworICAgIHJldHVybiB3aG9sZS5zdWJzdHIoYmVnaW4ubGVuZ3RoKTsKKyAgfQorfQorCisKK2Z1
bmN0aW9uIHN0cmlwSGFzaCh1cmwpIHsKKyAgdmFyIGluZGV4ID0gdXJsLmluZGV4T2YoJyMnKTsK
KyAgcmV0dXJuIGluZGV4ID09IC0xID8gdXJsIDogdXJsLnN1YnN0cigwLCBpbmRleCk7Cit9CisK
K2Z1bmN0aW9uIHRyaW1FbXB0eUhhc2godXJsKSB7CisgIHJldHVybiB1cmwucmVwbGFjZSgvKCMu
Kyl8IyQvLCAnJDEnKTsKK30KKworCitmdW5jdGlvbiBzdHJpcEZpbGUodXJsKSB7CisgIHJldHVy
biB1cmwuc3Vic3RyKDAsIHN0cmlwSGFzaCh1cmwpLmxhc3RJbmRleE9mKCcvJykgKyAxKTsKK30K
KworLyogcmV0dXJuIHRoZSBzZXJ2ZXIgb25seSAoc2NoZW1lOi8vaG9zdDpwb3J0KSAqLworZnVu
Y3Rpb24gc2VydmVyQmFzZSh1cmwpIHsKKyAgcmV0dXJuIHVybC5zdWJzdHJpbmcoMCwgdXJsLmlu
ZGV4T2YoJy8nLCB1cmwuaW5kZXhPZignLy8nKSArIDIpKTsKK30KKworCisvKioKKyAqIExvY2F0
aW9uSHRtbDVVcmwgcmVwcmVzZW50cyBhbiB1cmwKKyAqIFRoaXMgb2JqZWN0IGlzIGV4cG9zZWQg
YXMgJGxvY2F0aW9uIHNlcnZpY2Ugd2hlbiBIVE1MNSBtb2RlIGlzIGVuYWJsZWQgYW5kIHN1cHBv
cnRlZAorICoKKyAqIEBjb25zdHJ1Y3RvcgorICogQHBhcmFtIHtzdHJpbmd9IGFwcEJhc2UgYXBw
bGljYXRpb24gYmFzZSBVUkwKKyAqIEBwYXJhbSB7c3RyaW5nfSBiYXNlUHJlZml4IHVybCBwYXRo
IHByZWZpeAorICovCitmdW5jdGlvbiBMb2NhdGlvbkh0bWw1VXJsKGFwcEJhc2UsIGJhc2VQcmVm
aXgpIHsKKyAgdGhpcy4kJGh0bWw1ID0gdHJ1ZTsKKyAgYmFzZVByZWZpeCA9IGJhc2VQcmVmaXgg
fHwgJyc7CisgIHZhciBhcHBCYXNlTm9GaWxlID0gc3RyaXBGaWxlKGFwcEJhc2UpOworICBwYXJz
ZUFic29sdXRlVXJsKGFwcEJhc2UsIHRoaXMpOworCisKKyAgLyoqCisgICAqIFBhcnNlIGdpdmVu
IGh0bWw1IChyZWd1bGFyKSB1cmwgc3RyaW5nIGludG8gcHJvcGVydGllcworICAgKiBAcGFyYW0g
e3N0cmluZ30gdXJsIEhUTUw1IHVybAorICAgKiBAcHJpdmF0ZQorICAgKi8KKyAgdGhpcy4kJHBh
cnNlID0gZnVuY3Rpb24odXJsKSB7CisgICAgdmFyIHBhdGhVcmwgPSBiZWdpbnNXaXRoKGFwcEJh
c2VOb0ZpbGUsIHVybCk7CisgICAgaWYgKCFpc1N0cmluZyhwYXRoVXJsKSkgeworICAgICAgdGhy
b3cgJGxvY2F0aW9uTWluRXJyKCdpcHRocHJmeCcsICdJbnZhbGlkIHVybCAiezB9IiwgbWlzc2lu
ZyBwYXRoIHByZWZpeCAiezF9Ii4nLCB1cmwsCisgICAgICAgICAgYXBwQmFzZU5vRmlsZSk7Cisg
ICAgfQorCisgICAgcGFyc2VBcHBVcmwocGF0aFVybCwgdGhpcyk7CisKKyAgICBpZiAoIXRoaXMu
JCRwYXRoKSB7CisgICAgICB0aGlzLiQkcGF0aCA9ICcvJzsKKyAgICB9CisKKyAgICB0aGlzLiQk
Y29tcG9zZSgpOworICB9OworCisgIC8qKgorICAgKiBDb21wb3NlIHVybCBhbmQgdXBkYXRlIGBh
YnNVcmxgIHByb3BlcnR5CisgICAqIEBwcml2YXRlCisgICAqLworICB0aGlzLiQkY29tcG9zZSA9
IGZ1bmN0aW9uKCkgeworICAgIHZhciBzZWFyY2ggPSB0b0tleVZhbHVlKHRoaXMuJCRzZWFyY2gp
LAorICAgICAgICBoYXNoID0gdGhpcy4kJGhhc2ggPyAnIycgKyBlbmNvZGVVcmlTZWdtZW50KHRo
aXMuJCRoYXNoKSA6ICcnOworCisgICAgdGhpcy4kJHVybCA9IGVuY29kZVBhdGgodGhpcy4kJHBh
dGgpICsgKHNlYXJjaCA/ICc/JyArIHNlYXJjaCA6ICcnKSArIGhhc2g7CisgICAgdGhpcy4kJGFi
c1VybCA9IGFwcEJhc2VOb0ZpbGUgKyB0aGlzLiQkdXJsLnN1YnN0cigxKTsgLy8gZmlyc3QgY2hh
ciBpcyBhbHdheXMgJy8nCisgIH07CisKKyAgdGhpcy4kJHBhcnNlTGlua1VybCA9IGZ1bmN0aW9u
KHVybCwgcmVsSHJlZikgeworICAgIGlmIChyZWxIcmVmICYmIHJlbEhyZWZbMF0gPT09ICcjJykg
eworICAgICAgLy8gc3BlY2lhbCBjYXNlIGZvciBsaW5rcyB0byBoYXNoIGZyYWdtZW50czoKKyAg
ICAgIC8vIGtlZXAgdGhlIG9sZCB1cmwgYW5kIG9ubHkgcmVwbGFjZSB0aGUgaGFzaCBmcmFnbWVu
dAorICAgICAgdGhpcy5oYXNoKHJlbEhyZWYuc2xpY2UoMSkpOworICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorICAgIHZhciBhcHBVcmwsIHByZXZBcHBVcmw7CisgICAgdmFyIHJld3JpdHRlblVy
bDsKKworICAgIGlmICgoYXBwVXJsID0gYmVnaW5zV2l0aChhcHBCYXNlLCB1cmwpKSAhPT0gdW5k
ZWZpbmVkKSB7CisgICAgICBwcmV2QXBwVXJsID0gYXBwVXJsOworICAgICAgaWYgKChhcHBVcmwg
PSBiZWdpbnNXaXRoKGJhc2VQcmVmaXgsIGFwcFVybCkpICE9PSB1bmRlZmluZWQpIHsKKyAgICAg
ICAgcmV3cml0dGVuVXJsID0gYXBwQmFzZU5vRmlsZSArIChiZWdpbnNXaXRoKCcvJywgYXBwVXJs
KSB8fCBhcHBVcmwpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcmV3cml0dGVuVXJsID0gYXBw
QmFzZSArIHByZXZBcHBVcmw7CisgICAgICB9CisgICAgfSBlbHNlIGlmICgoYXBwVXJsID0gYmVn
aW5zV2l0aChhcHBCYXNlTm9GaWxlLCB1cmwpKSAhPT0gdW5kZWZpbmVkKSB7CisgICAgICByZXdy
aXR0ZW5VcmwgPSBhcHBCYXNlTm9GaWxlICsgYXBwVXJsOworICAgIH0gZWxzZSBpZiAoYXBwQmFz
ZU5vRmlsZSA9PSB1cmwgKyAnLycpIHsKKyAgICAgIHJld3JpdHRlblVybCA9IGFwcEJhc2VOb0Zp
bGU7CisgICAgfQorICAgIGlmIChyZXdyaXR0ZW5VcmwpIHsKKyAgICAgIHRoaXMuJCRwYXJzZShy
ZXdyaXR0ZW5VcmwpOworICAgIH0KKyAgICByZXR1cm4gISFyZXdyaXR0ZW5Vcmw7CisgIH07Cit9
CisKKworLyoqCisgKiBMb2NhdGlvbkhhc2hiYW5nVXJsIHJlcHJlc2VudHMgdXJsCisgKiBUaGlz
IG9iamVjdCBpcyBleHBvc2VkIGFzICRsb2NhdGlvbiBzZXJ2aWNlIHdoZW4gZGV2ZWxvcGVyIGRv
ZXNuJ3Qgb3B0IGludG8gaHRtbDUgbW9kZS4KKyAqIEl0IGFsc28gc2VydmVzIGFzIHRoZSBiYXNl
IGNsYXNzIGZvciBodG1sNSBtb2RlIGZhbGxiYWNrIG9uIGxlZ2FjeSBicm93c2Vycy4KKyAqCisg
KiBAY29uc3RydWN0b3IKKyAqIEBwYXJhbSB7c3RyaW5nfSBhcHBCYXNlIGFwcGxpY2F0aW9uIGJh
c2UgVVJMCisgKiBAcGFyYW0ge3N0cmluZ30gaGFzaFByZWZpeCBoYXNoYmFuZyBwcmVmaXgKKyAq
LworZnVuY3Rpb24gTG9jYXRpb25IYXNoYmFuZ1VybChhcHBCYXNlLCBoYXNoUHJlZml4KSB7Cisg
IHZhciBhcHBCYXNlTm9GaWxlID0gc3RyaXBGaWxlKGFwcEJhc2UpOworCisgIHBhcnNlQWJzb2x1
dGVVcmwoYXBwQmFzZSwgdGhpcyk7CisKKworICAvKioKKyAgICogUGFyc2UgZ2l2ZW4gaGFzaGJh
bmcgdXJsIGludG8gcHJvcGVydGllcworICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsIEhhc2hiYW5n
IHVybAorICAgKiBAcHJpdmF0ZQorICAgKi8KKyAgdGhpcy4kJHBhcnNlID0gZnVuY3Rpb24odXJs
KSB7CisgICAgdmFyIHdpdGhvdXRCYXNlVXJsID0gYmVnaW5zV2l0aChhcHBCYXNlLCB1cmwpIHx8
IGJlZ2luc1dpdGgoYXBwQmFzZU5vRmlsZSwgdXJsKTsKKyAgICB2YXIgd2l0aG91dEhhc2hVcmw7
CisKKyAgICBpZiAoIWlzVW5kZWZpbmVkKHdpdGhvdXRCYXNlVXJsKSAmJiB3aXRob3V0QmFzZVVy
bC5jaGFyQXQoMCkgPT09ICcjJykgeworCisgICAgICAvLyBUaGUgcmVzdCBvZiB0aGUgdXJsIHN0
YXJ0cyB3aXRoIGEgaGFzaCBzbyB3ZSBoYXZlCisgICAgICAvLyBnb3QgZWl0aGVyIGEgaGFzaGJh
bmcgcGF0aCBvciBhIHBsYWluIGhhc2ggZnJhZ21lbnQKKyAgICAgIHdpdGhvdXRIYXNoVXJsID0g
YmVnaW5zV2l0aChoYXNoUHJlZml4LCB3aXRob3V0QmFzZVVybCk7CisgICAgICBpZiAoaXNVbmRl
ZmluZWQod2l0aG91dEhhc2hVcmwpKSB7CisgICAgICAgIC8vIFRoZXJlIHdhcyBubyBoYXNoYmFu
ZyBwcmVmaXggc28gd2UganVzdCBoYXZlIGEgaGFzaCBmcmFnbWVudAorICAgICAgICB3aXRob3V0
SGFzaFVybCA9IHdpdGhvdXRCYXNlVXJsOworICAgICAgfQorCisgICAgfSBlbHNlIHsKKyAgICAg
IC8vIFRoZXJlIHdhcyBubyBoYXNoYmFuZyBwYXRoIG5vciBoYXNoIGZyYWdtZW50OgorICAgICAg
Ly8gSWYgd2UgYXJlIGluIEhUTUw1IG1vZGUgd2UgdXNlIHdoYXQgaXMgbGVmdCBhcyB0aGUgcGF0
aDsKKyAgICAgIC8vIE90aGVyd2lzZSB3ZSBpZ25vcmUgd2hhdCBpcyBsZWZ0CisgICAgICBpZiAo
dGhpcy4kJGh0bWw1KSB7CisgICAgICAgIHdpdGhvdXRIYXNoVXJsID0gd2l0aG91dEJhc2VVcmw7
CisgICAgICB9IGVsc2UgeworICAgICAgICB3aXRob3V0SGFzaFVybCA9ICcnOworICAgICAgICBp
ZiAoaXNVbmRlZmluZWQod2l0aG91dEJhc2VVcmwpKSB7CisgICAgICAgICAgYXBwQmFzZSA9IHVy
bDsKKyAgICAgICAgICB0aGlzLnJlcGxhY2UoKTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0K
KworICAgIHBhcnNlQXBwVXJsKHdpdGhvdXRIYXNoVXJsLCB0aGlzKTsKKworICAgIHRoaXMuJCRw
YXRoID0gcmVtb3ZlV2luZG93c0RyaXZlTmFtZSh0aGlzLiQkcGF0aCwgd2l0aG91dEhhc2hVcmws
IGFwcEJhc2UpOworCisgICAgdGhpcy4kJGNvbXBvc2UoKTsKKworICAgIC8qCisgICAgICogSW4g
V2luZG93cywgb24gYW4gYW5jaG9yIG5vZGUgb24gZG9jdW1lbnRzIGxvYWRlZCBmcm9tCisgICAg
ICogdGhlIGZpbGVzeXN0ZW0sIHRoZSBicm93c2VyIHdpbGwgcmV0dXJuIGEgcGF0aG5hbWUKKyAg
ICAgKiBwcmVmaXhlZCB3aXRoIHRoZSBkcml2ZSBuYW1lICgnL0M6L3BhdGgnKSB3aGVuIGEKKyAg
ICAgKiBwYXRobmFtZSB3aXRob3V0IGEgZHJpdmUgaXMgc2V0OgorICAgICAqICAqIGEuc2V0QXR0
cmlidXRlKCdocmVmJywgJy9mb28nKQorICAgICAqICAgKiBhLnBhdGhuYW1lID09PSAnL0M6L2Zv
bycgLy90cnVlCisgICAgICoKKyAgICAgKiBJbnNpZGUgb2YgQW5ndWxhciwgd2UncmUgYWx3YXlz
IHVzaW5nIHBhdGhuYW1lcyB0aGF0CisgICAgICogZG8gbm90IGluY2x1ZGUgZHJpdmUgbmFtZXMg
Zm9yIHJvdXRpbmcuCisgICAgICovCisgICAgZnVuY3Rpb24gcmVtb3ZlV2luZG93c0RyaXZlTmFt
ZShwYXRoLCB1cmwsIGJhc2UpIHsKKyAgICAgIC8qCisgICAgICBNYXRjaGVzIHBhdGhzIGZvciBm
aWxlIHByb3RvY29sIG9uIHdpbmRvd3MsCisgICAgICBzdWNoIGFzIC9DOi9mb28vYmFyLCBhbmQg
Y2FwdHVyZXMgb25seSAvZm9vL2Jhci4KKyAgICAgICovCisgICAgICB2YXIgd2luZG93c0ZpbGVQ
YXRoRXhwID0gL15cL1tBLVpdOihcLy4qKS87CisKKyAgICAgIHZhciBmaXJzdFBhdGhTZWdtZW50
TWF0Y2g7CisKKyAgICAgIC8vR2V0IHRoZSByZWxhdGl2ZSBwYXRoIGZyb20gdGhlIGlucHV0IFVS
TC4KKyAgICAgIGlmICh1cmwuaW5kZXhPZihiYXNlKSA9PT0gMCkgeworICAgICAgICB1cmwgPSB1
cmwucmVwbGFjZShiYXNlLCAnJyk7CisgICAgICB9CisKKyAgICAgIC8vIFRoZSBpbnB1dCBVUkwg
aW50ZW50aW9uYWxseSBjb250YWlucyBhIGZpcnN0IHBhdGggc2VnbWVudCB0aGF0IGVuZHMgd2l0
aCBhIGNvbG9uLgorICAgICAgaWYgKHdpbmRvd3NGaWxlUGF0aEV4cC5leGVjKHVybCkpIHsKKyAg
ICAgICAgcmV0dXJuIHBhdGg7CisgICAgICB9CisKKyAgICAgIGZpcnN0UGF0aFNlZ21lbnRNYXRj
aCA9IHdpbmRvd3NGaWxlUGF0aEV4cC5leGVjKHBhdGgpOworICAgICAgcmV0dXJuIGZpcnN0UGF0
aFNlZ21lbnRNYXRjaCA/IGZpcnN0UGF0aFNlZ21lbnRNYXRjaFsxXSA6IHBhdGg7CisgICAgfQor
ICB9OworCisgIC8qKgorICAgKiBDb21wb3NlIGhhc2hiYW5nIHVybCBhbmQgdXBkYXRlIGBhYnNV
cmxgIHByb3BlcnR5CisgICAqIEBwcml2YXRlCisgICAqLworICB0aGlzLiQkY29tcG9zZSA9IGZ1
bmN0aW9uKCkgeworICAgIHZhciBzZWFyY2ggPSB0b0tleVZhbHVlKHRoaXMuJCRzZWFyY2gpLAor
ICAgICAgICBoYXNoID0gdGhpcy4kJGhhc2ggPyAnIycgKyBlbmNvZGVVcmlTZWdtZW50KHRoaXMu
JCRoYXNoKSA6ICcnOworCisgICAgdGhpcy4kJHVybCA9IGVuY29kZVBhdGgodGhpcy4kJHBhdGgp
ICsgKHNlYXJjaCA/ICc/JyArIHNlYXJjaCA6ICcnKSArIGhhc2g7CisgICAgdGhpcy4kJGFic1Vy
bCA9IGFwcEJhc2UgKyAodGhpcy4kJHVybCA/IGhhc2hQcmVmaXggKyB0aGlzLiQkdXJsIDogJycp
OworICB9OworCisgIHRoaXMuJCRwYXJzZUxpbmtVcmwgPSBmdW5jdGlvbih1cmwsIHJlbEhyZWYp
IHsKKyAgICBpZiAoc3RyaXBIYXNoKGFwcEJhc2UpID09IHN0cmlwSGFzaCh1cmwpKSB7CisgICAg
ICB0aGlzLiQkcGFyc2UodXJsKTsKKyAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1
cm4gZmFsc2U7CisgIH07Cit9CisKKworLyoqCisgKiBMb2NhdGlvbkhhc2hiYW5nVXJsIHJlcHJl
c2VudHMgdXJsCisgKiBUaGlzIG9iamVjdCBpcyBleHBvc2VkIGFzICRsb2NhdGlvbiBzZXJ2aWNl
IHdoZW4gaHRtbDUgaGlzdG9yeSBhcGkgaXMgZW5hYmxlZCBidXQgdGhlIGJyb3dzZXIKKyAqIGRv
ZXMgbm90IHN1cHBvcnQgaXQuCisgKgorICogQGNvbnN0cnVjdG9yCisgKiBAcGFyYW0ge3N0cmlu
Z30gYXBwQmFzZSBhcHBsaWNhdGlvbiBiYXNlIFVSTAorICogQHBhcmFtIHtzdHJpbmd9IGhhc2hQ
cmVmaXggaGFzaGJhbmcgcHJlZml4CisgKi8KK2Z1bmN0aW9uIExvY2F0aW9uSGFzaGJhbmdJbkh0
bWw1VXJsKGFwcEJhc2UsIGhhc2hQcmVmaXgpIHsKKyAgdGhpcy4kJGh0bWw1ID0gdHJ1ZTsKKyAg
TG9jYXRpb25IYXNoYmFuZ1VybC5hcHBseSh0aGlzLCBhcmd1bWVudHMpOworCisgIHZhciBhcHBC
YXNlTm9GaWxlID0gc3RyaXBGaWxlKGFwcEJhc2UpOworCisgIHRoaXMuJCRwYXJzZUxpbmtVcmwg
PSBmdW5jdGlvbih1cmwsIHJlbEhyZWYpIHsKKyAgICBpZiAocmVsSHJlZiAmJiByZWxIcmVmWzBd
ID09PSAnIycpIHsKKyAgICAgIC8vIHNwZWNpYWwgY2FzZSBmb3IgbGlua3MgdG8gaGFzaCBmcmFn
bWVudHM6CisgICAgICAvLyBrZWVwIHRoZSBvbGQgdXJsIGFuZCBvbmx5IHJlcGxhY2UgdGhlIGhh
c2ggZnJhZ21lbnQKKyAgICAgIHRoaXMuaGFzaChyZWxIcmVmLnNsaWNlKDEpKTsKKyAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKworICAgIHZhciByZXdyaXR0ZW5Vcmw7CisgICAgdmFyIGFwcFVy
bDsKKworICAgIGlmIChhcHBCYXNlID09IHN0cmlwSGFzaCh1cmwpKSB7CisgICAgICByZXdyaXR0
ZW5VcmwgPSB1cmw7CisgICAgfSBlbHNlIGlmICgoYXBwVXJsID0gYmVnaW5zV2l0aChhcHBCYXNl
Tm9GaWxlLCB1cmwpKSkgeworICAgICAgcmV3cml0dGVuVXJsID0gYXBwQmFzZSArIGhhc2hQcmVm
aXggKyBhcHBVcmw7CisgICAgfSBlbHNlIGlmIChhcHBCYXNlTm9GaWxlID09PSB1cmwgKyAnLycp
IHsKKyAgICAgIHJld3JpdHRlblVybCA9IGFwcEJhc2VOb0ZpbGU7CisgICAgfQorICAgIGlmIChy
ZXdyaXR0ZW5VcmwpIHsKKyAgICAgIHRoaXMuJCRwYXJzZShyZXdyaXR0ZW5VcmwpOworICAgIH0K
KyAgICByZXR1cm4gISFyZXdyaXR0ZW5Vcmw7CisgIH07CisKKyAgdGhpcy4kJGNvbXBvc2UgPSBm
dW5jdGlvbigpIHsKKyAgICB2YXIgc2VhcmNoID0gdG9LZXlWYWx1ZSh0aGlzLiQkc2VhcmNoKSwK
KyAgICAgICAgaGFzaCA9IHRoaXMuJCRoYXNoID8gJyMnICsgZW5jb2RlVXJpU2VnbWVudCh0aGlz
LiQkaGFzaCkgOiAnJzsKKworICAgIHRoaXMuJCR1cmwgPSBlbmNvZGVQYXRoKHRoaXMuJCRwYXRo
KSArIChzZWFyY2ggPyAnPycgKyBzZWFyY2ggOiAnJykgKyBoYXNoOworICAgIC8vIGluY2x1ZGUg
aGFzaFByZWZpeCBpbiAkJGFic1VybCB3aGVuICQkdXJsIGlzIGVtcHR5IHNvIElFOCAmIDkgZG8g
bm90IHJlbG9hZCBwYWdlIGJlY2F1c2Ugb2YgcmVtb3ZhbCBvZiAnIycKKyAgICB0aGlzLiQkYWJz
VXJsID0gYXBwQmFzZSArIGhhc2hQcmVmaXggKyB0aGlzLiQkdXJsOworICB9OworCit9CisKKwor
dmFyIGxvY2F0aW9uUHJvdG90eXBlID0geworCisgIC8qKgorICAgKiBBcmUgd2UgaW4gaHRtbDUg
bW9kZT8KKyAgICogQHByaXZhdGUKKyAgICovCisgICQkaHRtbDU6IGZhbHNlLAorCisgIC8qKgor
ICAgKiBIYXMgYW55IGNoYW5nZSBiZWVuIHJlcGxhY2luZz8KKyAgICogQHByaXZhdGUKKyAgICov
CisgICQkcmVwbGFjZTogZmFsc2UsCisKKyAgLyoqCisgICAqIEBuZ2RvYyBtZXRob2QKKyAgICog
QG5hbWUgJGxvY2F0aW9uI2Fic1VybAorICAgKgorICAgKiBAZGVzY3JpcHRpb24KKyAgICogVGhp
cyBtZXRob2QgaXMgZ2V0dGVyIG9ubHkuCisgICAqCisgICAqIFJldHVybiBmdWxsIHVybCByZXBy
ZXNlbnRhdGlvbiB3aXRoIGFsbCBzZWdtZW50cyBlbmNvZGVkIGFjY29yZGluZyB0byBydWxlcyBz
cGVjaWZpZWQgaW4KKyAgICogW1JGQyAzOTg2XShodHRwOi8vd3d3LmlldGYub3JnL3JmYy9yZmMz
OTg2LnR4dCkuCisgICAqCisgICAqCisgICAqIGBgYGpzCisgICAqIC8vIGdpdmVuIHVybCBodHRw
Oi8vZXhhbXBsZS5jb20vIy9zb21lL3BhdGg/Zm9vPWJhciZiYXo9eG94bworICAgKiB2YXIgYWJz
VXJsID0gJGxvY2F0aW9uLmFic1VybCgpOworICAgKiAvLyA9PiAiaHR0cDovL2V4YW1wbGUuY29t
LyMvc29tZS9wYXRoP2Zvbz1iYXImYmF6PXhveG8iCisgICAqIGBgYAorICAgKgorICAgKiBAcmV0
dXJuIHtzdHJpbmd9IGZ1bGwgdXJsCisgICAqLworICBhYnNVcmw6IGxvY2F0aW9uR2V0dGVyKCck
JGFic1VybCcpLAorCisgIC8qKgorICAgKiBAbmdkb2MgbWV0aG9kCisgICAqIEBuYW1lICRsb2Nh
dGlvbiN1cmwKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uCisgICAqIFRoaXMgbWV0aG9kIGlzIGdl
dHRlciAvIHNldHRlci4KKyAgICoKKyAgICogUmV0dXJuIHVybCAoZS5nLiBgL3BhdGg/YT1iI2hh
c2hgKSB3aGVuIGNhbGxlZCB3aXRob3V0IGFueSBwYXJhbWV0ZXIuCisgICAqCisgICAqIENoYW5n
ZSBwYXRoLCBzZWFyY2ggYW5kIGhhc2gsIHdoZW4gY2FsbGVkIHdpdGggcGFyYW1ldGVyIGFuZCBy
ZXR1cm4gYCRsb2NhdGlvbmAuCisgICAqCisgICAqCisgICAqIGBgYGpzCisgICAqIC8vIGdpdmVu
IHVybCBodHRwOi8vZXhhbXBsZS5jb20vIy9zb21lL3BhdGg/Zm9vPWJhciZiYXo9eG94bworICAg
KiB2YXIgdXJsID0gJGxvY2F0aW9uLnVybCgpOworICAgKiAvLyA9PiAiL3NvbWUvcGF0aD9mb289
YmFyJmJhej14b3hvIgorICAgKiBgYGAKKyAgICoKKyAgICogQHBhcmFtIHtzdHJpbmc9fSB1cmwg
TmV3IHVybCB3aXRob3V0IGJhc2UgcHJlZml4IChlLmcuIGAvcGF0aD9hPWIjaGFzaGApCisgICAq
IEByZXR1cm4ge3N0cmluZ30gdXJsCisgICAqLworICB1cmw6IGZ1bmN0aW9uKHVybCkgeworICAg
IGlmIChpc1VuZGVmaW5lZCh1cmwpKSB7CisgICAgICByZXR1cm4gdGhpcy4kJHVybDsKKyAgICB9
CisKKyAgICB2YXIgbWF0Y2ggPSBQQVRIX01BVENILmV4ZWModXJsKTsKKyAgICBpZiAobWF0Y2hb
MV0gfHwgdXJsID09PSAnJykgdGhpcy5wYXRoKGRlY29kZVVSSUNvbXBvbmVudChtYXRjaFsxXSkp
OworICAgIGlmIChtYXRjaFsyXSB8fCBtYXRjaFsxXSB8fCB1cmwgPT09ICcnKSB0aGlzLnNlYXJj
aChtYXRjaFszXSB8fCAnJyk7CisgICAgdGhpcy5oYXNoKG1hdGNoWzVdIHx8ICcnKTsKKworICAg
IHJldHVybiB0aGlzOworICB9LAorCisgIC8qKgorICAgKiBAbmdkb2MgbWV0aG9kCisgICAqIEBu
YW1lICRsb2NhdGlvbiNwcm90b2NvbAorICAgKgorICAgKiBAZGVzY3JpcHRpb24KKyAgICogVGhp
cyBtZXRob2QgaXMgZ2V0dGVyIG9ubHkuCisgICAqCisgICAqIFJldHVybiBwcm90b2NvbCBvZiBj
dXJyZW50IHVybC4KKyAgICoKKyAgICoKKyAgICogYGBganMKKyAgICogLy8gZ2l2ZW4gdXJsIGh0
dHA6Ly9leGFtcGxlLmNvbS8jL3NvbWUvcGF0aD9mb289YmFyJmJhej14b3hvCisgICAqIHZhciBw
cm90b2NvbCA9ICRsb2NhdGlvbi5wcm90b2NvbCgpOworICAgKiAvLyA9PiAiaHR0cCIKKyAgICog
YGBgCisgICAqCisgICAqIEByZXR1cm4ge3N0cmluZ30gcHJvdG9jb2wgb2YgY3VycmVudCB1cmwK
KyAgICovCisgIHByb3RvY29sOiBsb2NhdGlvbkdldHRlcignJCRwcm90b2NvbCcpLAorCisgIC8q
KgorICAgKiBAbmdkb2MgbWV0aG9kCisgICAqIEBuYW1lICRsb2NhdGlvbiNob3N0CisgICAqCisg
ICAqIEBkZXNjcmlwdGlvbgorICAgKiBUaGlzIG1ldGhvZCBpcyBnZXR0ZXIgb25seS4KKyAgICoK
KyAgICogUmV0dXJuIGhvc3Qgb2YgY3VycmVudCB1cmwuCisgICAqCisgICAqIE5vdGU6IGNvbXBh
cmVkIHRvIHRoZSBub24tYW5ndWxhciB2ZXJzaW9uIGBsb2NhdGlvbi5ob3N0YCB3aGljaCByZXR1
cm5zIGBob3N0bmFtZTpwb3J0YCwgdGhpcyByZXR1cm5zIHRoZSBgaG9zdG5hbWVgIHBvcnRpb24g
b25seS4KKyAgICoKKyAgICoKKyAgICogYGBganMKKyAgICogLy8gZ2l2ZW4gdXJsIGh0dHA6Ly9l
eGFtcGxlLmNvbS8jL3NvbWUvcGF0aD9mb289YmFyJmJhej14b3hvCisgICAqIHZhciBob3N0ID0g
JGxvY2F0aW9uLmhvc3QoKTsKKyAgICogLy8gPT4gImV4YW1wbGUuY29tIgorICAgKgorICAgKiAv
LyBnaXZlbiB1cmwgaHR0cDovL3VzZXI6cGFzc3dvcmRAZXhhbXBsZS5jb206ODA4MC8jL3NvbWUv
cGF0aD9mb289YmFyJmJhej14b3hvCisgICAqIGhvc3QgPSAkbG9jYXRpb24uaG9zdCgpOworICAg
KiAvLyA9PiAiZXhhbXBsZS5jb20iCisgICAqIGhvc3QgPSBsb2NhdGlvbi5ob3N0OworICAgKiAv
LyA9PiAiZXhhbXBsZS5jb206ODA4MCIKKyAgICogYGBgCisgICAqCisgICAqIEByZXR1cm4ge3N0
cmluZ30gaG9zdCBvZiBjdXJyZW50IHVybC4KKyAgICovCisgIGhvc3Q6IGxvY2F0aW9uR2V0dGVy
KCckJGhvc3QnKSwKKworICAvKioKKyAgICogQG5nZG9jIG1ldGhvZAorICAgKiBAbmFtZSAkbG9j
YXRpb24jcG9ydAorICAgKgorICAgKiBAZGVzY3JpcHRpb24KKyAgICogVGhpcyBtZXRob2QgaXMg
Z2V0dGVyIG9ubHkuCisgICAqCisgICAqIFJldHVybiBwb3J0IG9mIGN1cnJlbnQgdXJsLgorICAg
KgorICAgKgorICAgKiBgYGBqcworICAgKiAvLyBnaXZlbiB1cmwgaHR0cDovL2V4YW1wbGUuY29t
LyMvc29tZS9wYXRoP2Zvbz1iYXImYmF6PXhveG8KKyAgICogdmFyIHBvcnQgPSAkbG9jYXRpb24u
cG9ydCgpOworICAgKiAvLyA9PiA4MAorICAgKiBgYGAKKyAgICoKKyAgICogQHJldHVybiB7TnVt
YmVyfSBwb3J0CisgICAqLworICBwb3J0OiBsb2NhdGlvbkdldHRlcignJCRwb3J0JyksCisKKyAg
LyoqCisgICAqIEBuZ2RvYyBtZXRob2QKKyAgICogQG5hbWUgJGxvY2F0aW9uI3BhdGgKKyAgICoK
KyAgICogQGRlc2NyaXB0aW9uCisgICAqIFRoaXMgbWV0aG9kIGlzIGdldHRlciAvIHNldHRlci4K
KyAgICoKKyAgICogUmV0dXJuIHBhdGggb2YgY3VycmVudCB1cmwgd2hlbiBjYWxsZWQgd2l0aG91
dCBhbnkgcGFyYW1ldGVyLgorICAgKgorICAgKiBDaGFuZ2UgcGF0aCB3aGVuIGNhbGxlZCB3aXRo
IHBhcmFtZXRlciBhbmQgcmV0dXJuIGAkbG9jYXRpb25gLgorICAgKgorICAgKiBOb3RlOiBQYXRo
IHNob3VsZCBhbHdheXMgYmVnaW4gd2l0aCBmb3J3YXJkIHNsYXNoICgvKSwgdGhpcyBtZXRob2Qg
d2lsbCBhZGQgdGhlIGZvcndhcmQgc2xhc2gKKyAgICogaWYgaXQgaXMgbWlzc2luZy4KKyAgICoK
KyAgICoKKyAgICogYGBganMKKyAgICogLy8gZ2l2ZW4gdXJsIGh0dHA6Ly9leGFtcGxlLmNvbS8j
L3NvbWUvcGF0aD9mb289YmFyJmJhej14b3hvCisgICAqIHZhciBwYXRoID0gJGxvY2F0aW9uLnBh
dGgoKTsKKyAgICogLy8gPT4gIi9zb21lL3BhdGgiCisgICAqIGBgYAorICAgKgorICAgKiBAcGFy
YW0geyhzdHJpbmd8bnVtYmVyKT19IHBhdGggTmV3IHBhdGgKKyAgICogQHJldHVybiB7c3RyaW5n
fSBwYXRoCisgICAqLworICBwYXRoOiBsb2NhdGlvbkdldHRlclNldHRlcignJCRwYXRoJywgZnVu
Y3Rpb24ocGF0aCkgeworICAgIHBhdGggPSBwYXRoICE9PSBudWxsID8gcGF0aC50b1N0cmluZygp
IDogJyc7CisgICAgcmV0dXJuIHBhdGguY2hhckF0KDApID09ICcvJyA/IHBhdGggOiAnLycgKyBw
YXRoOworICB9KSwKKworICAvKioKKyAgICogQG5nZG9jIG1ldGhvZAorICAgKiBAbmFtZSAkbG9j
YXRpb24jc2VhcmNoCisgICAqCisgICAqIEBkZXNjcmlwdGlvbgorICAgKiBUaGlzIG1ldGhvZCBp
cyBnZXR0ZXIgLyBzZXR0ZXIuCisgICAqCisgICAqIFJldHVybiBzZWFyY2ggcGFydCAoYXMgb2Jq
ZWN0KSBvZiBjdXJyZW50IHVybCB3aGVuIGNhbGxlZCB3aXRob3V0IGFueSBwYXJhbWV0ZXIuCisg
ICAqCisgICAqIENoYW5nZSBzZWFyY2ggcGFydCB3aGVuIGNhbGxlZCB3aXRoIHBhcmFtZXRlciBh
bmQgcmV0dXJuIGAkbG9jYXRpb25gLgorICAgKgorICAgKgorICAgKiBgYGBqcworICAgKiAvLyBn
aXZlbiB1cmwgaHR0cDovL2V4YW1wbGUuY29tLyMvc29tZS9wYXRoP2Zvbz1iYXImYmF6PXhveG8K
KyAgICogdmFyIHNlYXJjaE9iamVjdCA9ICRsb2NhdGlvbi5zZWFyY2goKTsKKyAgICogLy8gPT4g
e2ZvbzogJ2JhcicsIGJhejogJ3hveG8nfQorICAgKgorICAgKiAvLyBzZXQgZm9vIHRvICd5aXBl
ZScKKyAgICogJGxvY2F0aW9uLnNlYXJjaCgnZm9vJywgJ3lpcGVlJyk7CisgICAqIC8vICRsb2Nh
dGlvbi5zZWFyY2goKSA9PiB7Zm9vOiAneWlwZWUnLCBiYXo6ICd4b3hvJ30KKyAgICogYGBgCisg
ICAqCisgICAqIEBwYXJhbSB7c3RyaW5nfE9iamVjdC48c3RyaW5nPnxPYmplY3QuPEFycmF5Ljxz
dHJpbmc+Pn0gc2VhcmNoIE5ldyBzZWFyY2ggcGFyYW1zIC0gc3RyaW5nIG9yCisgICAqIGhhc2gg
b2JqZWN0LgorICAgKgorICAgKiBXaGVuIGNhbGxlZCB3aXRoIGEgc2luZ2xlIGFyZ3VtZW50IHRo
ZSBtZXRob2QgYWN0cyBhcyBhIHNldHRlciwgc2V0dGluZyB0aGUgYHNlYXJjaGAgY29tcG9uZW50
CisgICAqIG9mIGAkbG9jYXRpb25gIHRvIHRoZSBzcGVjaWZpZWQgdmFsdWUuCisgICAqCisgICAq
IElmIHRoZSBhcmd1bWVudCBpcyBhIGhhc2ggb2JqZWN0IGNvbnRhaW5pbmcgYW4gYXJyYXkgb2Yg
dmFsdWVzLCB0aGVzZSB2YWx1ZXMgd2lsbCBiZSBlbmNvZGVkCisgICAqIGFzIGR1cGxpY2F0ZSBz
ZWFyY2ggcGFyYW1ldGVycyBpbiB0aGUgdXJsLgorICAgKgorICAgKiBAcGFyYW0geyhzdHJpbmd8
TnVtYmVyfEFycmF5PHN0cmluZz58Ym9vbGVhbik9fSBwYXJhbVZhbHVlIElmIGBzZWFyY2hgIGlz
IGEgc3RyaW5nIG9yIG51bWJlciwgdGhlbiBgcGFyYW1WYWx1ZWAKKyAgICogd2lsbCBvdmVycmlk
ZSBvbmx5IGEgc2luZ2xlIHNlYXJjaCBwcm9wZXJ0eS4KKyAgICoKKyAgICogSWYgYHBhcmFtVmFs
dWVgIGlzIGFuIGFycmF5LCBpdCB3aWxsIG92ZXJyaWRlIHRoZSBwcm9wZXJ0eSBvZiB0aGUgYHNl
YXJjaGAgY29tcG9uZW50IG9mCisgICAqIGAkbG9jYXRpb25gIHNwZWNpZmllZCB2aWEgdGhlIGZp
cnN0IGFyZ3VtZW50LgorICAgKgorICAgKiBJZiBgcGFyYW1WYWx1ZWAgaXMgYG51bGxgLCB0aGUg
cHJvcGVydHkgc3BlY2lmaWVkIHZpYSB0aGUgZmlyc3QgYXJndW1lbnQgd2lsbCBiZSBkZWxldGVk
LgorICAgKgorICAgKiBJZiBgcGFyYW1WYWx1ZWAgaXMgYHRydWVgLCB0aGUgcHJvcGVydHkgc3Bl
Y2lmaWVkIHZpYSB0aGUgZmlyc3QgYXJndW1lbnQgd2lsbCBiZSBhZGRlZCB3aXRoIG5vCisgICAq
IHZhbHVlIG5vciB0cmFpbGluZyBlcXVhbCBzaWduLgorICAgKgorICAgKiBAcmV0dXJuIHtPYmpl
Y3R9IElmIGNhbGxlZCB3aXRoIG5vIGFyZ3VtZW50cyByZXR1cm5zIHRoZSBwYXJzZWQgYHNlYXJj
aGAgb2JqZWN0LiBJZiBjYWxsZWQgd2l0aAorICAgKiBvbmUgb3IgbW9yZSBhcmd1bWVudHMgcmV0
dXJucyBgJGxvY2F0aW9uYCBvYmplY3QgaXRzZWxmLgorICAgKi8KKyAgc2VhcmNoOiBmdW5jdGlv
bihzZWFyY2gsIHBhcmFtVmFsdWUpIHsKKyAgICBzd2l0Y2ggKGFyZ3VtZW50cy5sZW5ndGgpIHsK
KyAgICAgIGNhc2UgMDoKKyAgICAgICAgcmV0dXJuIHRoaXMuJCRzZWFyY2g7CisgICAgICBjYXNl
IDE6CisgICAgICAgIGlmIChpc1N0cmluZyhzZWFyY2gpIHx8IGlzTnVtYmVyKHNlYXJjaCkpIHsK
KyAgICAgICAgICBzZWFyY2ggPSBzZWFyY2gudG9TdHJpbmcoKTsKKyAgICAgICAgICB0aGlzLiQk
c2VhcmNoID0gcGFyc2VLZXlWYWx1ZShzZWFyY2gpOworICAgICAgICB9IGVsc2UgaWYgKGlzT2Jq
ZWN0KHNlYXJjaCkpIHsKKyAgICAgICAgICBzZWFyY2ggPSBjb3B5KHNlYXJjaCwge30pOworICAg
ICAgICAgIC8vIHJlbW92ZSBvYmplY3QgdW5kZWZpbmVkIG9yIG51bGwgcHJvcGVydGllcworICAg
ICAgICAgIGZvckVhY2goc2VhcmNoLCBmdW5jdGlvbih2YWx1ZSwga2V5KSB7CisgICAgICAgICAg
ICBpZiAodmFsdWUgPT0gbnVsbCkgZGVsZXRlIHNlYXJjaFtrZXldOworICAgICAgICAgIH0pOwor
CisgICAgICAgICAgdGhpcy4kJHNlYXJjaCA9IHNlYXJjaDsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICB0aHJvdyAkbG9jYXRpb25NaW5FcnIoJ2lzcmNoYXJnJywKKyAgICAgICAgICAgICAg
J1RoZSBmaXJzdCBhcmd1bWVudCBvZiB0aGUgYCRsb2NhdGlvbiNzZWFyY2goKWAgY2FsbCBtdXN0
IGJlIGEgc3RyaW5nIG9yIGFuIG9iamVjdC4nKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsK
KyAgICAgIGRlZmF1bHQ6CisgICAgICAgIGlmIChpc1VuZGVmaW5lZChwYXJhbVZhbHVlKSB8fCBw
YXJhbVZhbHVlID09PSBudWxsKSB7CisgICAgICAgICAgZGVsZXRlIHRoaXMuJCRzZWFyY2hbc2Vh
cmNoXTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICB0aGlzLiQkc2VhcmNoW3NlYXJjaF0g
PSBwYXJhbVZhbHVlOworICAgICAgICB9CisgICAgfQorCisgICAgdGhpcy4kJGNvbXBvc2UoKTsK
KyAgICByZXR1cm4gdGhpczsKKyAgfSwKKworICAvKioKKyAgICogQG5nZG9jIG1ldGhvZAorICAg
KiBAbmFtZSAkbG9jYXRpb24jaGFzaAorICAgKgorICAgKiBAZGVzY3JpcHRpb24KKyAgICogVGhp
cyBtZXRob2QgaXMgZ2V0dGVyIC8gc2V0dGVyLgorICAgKgorICAgKiBSZXR1cm4gaGFzaCBmcmFn
bWVudCB3aGVuIGNhbGxlZCB3aXRob3V0IGFueSBwYXJhbWV0ZXIuCisgICAqCisgICAqIENoYW5n
ZSBoYXNoIGZyYWdtZW50IHdoZW4gY2FsbGVkIHdpdGggcGFyYW1ldGVyIGFuZCByZXR1cm4gYCRs
b2NhdGlvbmAuCisgICAqCisgICAqCisgICAqIGBgYGpzCisgICAqIC8vIGdpdmVuIHVybCBodHRw
Oi8vZXhhbXBsZS5jb20vIy9zb21lL3BhdGg/Zm9vPWJhciZiYXo9eG94byNoYXNoVmFsdWUKKyAg
ICogdmFyIGhhc2ggPSAkbG9jYXRpb24uaGFzaCgpOworICAgKiAvLyA9PiAiaGFzaFZhbHVlIgor
ICAgKiBgYGAKKyAgICoKKyAgICogQHBhcmFtIHsoc3RyaW5nfG51bWJlcik9fSBoYXNoIE5ldyBo
YXNoIGZyYWdtZW50CisgICAqIEByZXR1cm4ge3N0cmluZ30gaGFzaAorICAgKi8KKyAgaGFzaDog
bG9jYXRpb25HZXR0ZXJTZXR0ZXIoJyQkaGFzaCcsIGZ1bmN0aW9uKGhhc2gpIHsKKyAgICByZXR1
cm4gaGFzaCAhPT0gbnVsbCA/IGhhc2gudG9TdHJpbmcoKSA6ICcnOworICB9KSwKKworICAvKioK
KyAgICogQG5nZG9jIG1ldGhvZAorICAgKiBAbmFtZSAkbG9jYXRpb24jcmVwbGFjZQorICAgKgor
ICAgKiBAZGVzY3JpcHRpb24KKyAgICogSWYgY2FsbGVkLCBhbGwgY2hhbmdlcyB0byAkbG9jYXRp
b24gZHVyaW5nIGN1cnJlbnQgYCRkaWdlc3RgIHdpbGwgYmUgcmVwbGFjaW5nIGN1cnJlbnQgaGlz
dG9yeQorICAgKiByZWNvcmQsIGluc3RlYWQgb2YgYWRkaW5nIG5ldyBvbmUuCisgICAqLworICBy
ZXBsYWNlOiBmdW5jdGlvbigpIHsKKyAgICB0aGlzLiQkcmVwbGFjZSA9IHRydWU7CisgICAgcmV0
dXJuIHRoaXM7CisgIH0KK307CisKK2ZvckVhY2goW0xvY2F0aW9uSGFzaGJhbmdJbkh0bWw1VXJs
LCBMb2NhdGlvbkhhc2hiYW5nVXJsLCBMb2NhdGlvbkh0bWw1VXJsXSwgZnVuY3Rpb24oTG9jYXRp
b24pIHsKKyAgTG9jYXRpb24ucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShsb2NhdGlvblByb3Rv
dHlwZSk7CisKKyAgLyoqCisgICAqIEBuZ2RvYyBtZXRob2QKKyAgICogQG5hbWUgJGxvY2F0aW9u
I3N0YXRlCisgICAqCisgICAqIEBkZXNjcmlwdGlvbgorICAgKiBUaGlzIG1ldGhvZCBpcyBnZXR0
ZXIgLyBzZXR0ZXIuCisgICAqCisgICAqIFJldHVybiB0aGUgaGlzdG9yeSBzdGF0ZSBvYmplY3Qg
d2hlbiBjYWxsZWQgd2l0aG91dCBhbnkgcGFyYW1ldGVyLgorICAgKgorICAgKiBDaGFuZ2UgdGhl
IGhpc3Rvcnkgc3RhdGUgb2JqZWN0IHdoZW4gY2FsbGVkIHdpdGggb25lIHBhcmFtZXRlciBhbmQg
cmV0dXJuIGAkbG9jYXRpb25gLgorICAgKiBUaGUgc3RhdGUgb2JqZWN0IGlzIGxhdGVyIHBhc3Nl
ZCB0byBgcHVzaFN0YXRlYCBvciBgcmVwbGFjZVN0YXRlYC4KKyAgICoKKyAgICogTk9URTogVGhp
cyBtZXRob2QgaXMgc3VwcG9ydGVkIG9ubHkgaW4gSFRNTDUgbW9kZSBhbmQgb25seSBpbiBicm93
c2VycyBzdXBwb3J0aW5nCisgICAqIHRoZSBIVE1MNSBIaXN0b3J5IEFQSSAoaS5lLiBtZXRob2Rz
IGBwdXNoU3RhdGVgIGFuZCBgcmVwbGFjZVN0YXRlYCkuIElmIHlvdSBuZWVkIHRvIHN1cHBvcnQK
KyAgICogb2xkZXIgYnJvd3NlcnMgKGxpa2UgSUU5IG9yIEFuZHJvaWQgPCA0LjApLCBkb24ndCB1
c2UgdGhpcyBtZXRob2QuCisgICAqCisgICAqIEBwYXJhbSB7b2JqZWN0PX0gc3RhdGUgU3RhdGUg
b2JqZWN0IGZvciBwdXNoU3RhdGUgb3IgcmVwbGFjZVN0YXRlCisgICAqIEByZXR1cm4ge29iamVj
dH0gc3RhdGUKKyAgICovCisgIExvY2F0aW9uLnByb3RvdHlwZS5zdGF0ZSA9IGZ1bmN0aW9uKHN0
YXRlKSB7CisgICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKSB7CisgICAgICByZXR1cm4gdGhpcy4k
JHN0YXRlOworICAgIH0KKworICAgIGlmIChMb2NhdGlvbiAhPT0gTG9jYXRpb25IdG1sNVVybCB8
fCAhdGhpcy4kJGh0bWw1KSB7CisgICAgICB0aHJvdyAkbG9jYXRpb25NaW5FcnIoJ25vc3RhdGUn
LCAnSGlzdG9yeSBBUEkgc3RhdGUgc3VwcG9ydCBpcyBhdmFpbGFibGUgb25seSAnICsKKyAgICAg
ICAgJ2luIEhUTUw1IG1vZGUgYW5kIG9ubHkgaW4gYnJvd3NlcnMgc3VwcG9ydGluZyBIVE1MNSBI
aXN0b3J5IEFQSScpOworICAgIH0KKyAgICAvLyBUaGUgdXNlciBtaWdodCBtb2RpZnkgYHN0YXRl
T2JqZWN0YCBhZnRlciBpbnZva2luZyBgJGxvY2F0aW9uLnN0YXRlKHN0YXRlT2JqZWN0KWAKKyAg
ICAvLyBidXQgd2UncmUgY2hhbmdpbmcgdGhlICQkc3RhdGUgcmVmZXJlbmNlIHRvICRicm93c2Vy
LnN0YXRlKCkgZHVyaW5nIHRoZSAkZGlnZXN0CisgICAgLy8gc28gdGhlIG1vZGlmaWNhdGlvbiB3
aW5kb3cgaXMgbmFycm93LgorICAgIHRoaXMuJCRzdGF0ZSA9IGlzVW5kZWZpbmVkKHN0YXRlKSA/
IG51bGwgOiBzdGF0ZTsKKworICAgIHJldHVybiB0aGlzOworICB9OworfSk7CisKKworZnVuY3Rp
b24gbG9jYXRpb25HZXR0ZXIocHJvcGVydHkpIHsKKyAgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAg
IHJldHVybiB0aGlzW3Byb3BlcnR5XTsKKyAgfTsKK30KKworCitmdW5jdGlvbiBsb2NhdGlvbkdl
dHRlclNldHRlcihwcm9wZXJ0eSwgcHJlcHJvY2VzcykgeworICByZXR1cm4gZnVuY3Rpb24odmFs
dWUpIHsKKyAgICBpZiAoaXNVbmRlZmluZWQodmFsdWUpKSB7CisgICAgICByZXR1cm4gdGhpc1tw
cm9wZXJ0eV07CisgICAgfQorCisgICAgdGhpc1twcm9wZXJ0eV0gPSBwcmVwcm9jZXNzKHZhbHVl
KTsKKyAgICB0aGlzLiQkY29tcG9zZSgpOworCisgICAgcmV0dXJuIHRoaXM7CisgIH07Cit9CisK
KworLyoqCisgKiBAbmdkb2Mgc2VydmljZQorICogQG5hbWUgJGxvY2F0aW9uCisgKgorICogQHJl
cXVpcmVzICRyb290RWxlbWVudAorICoKKyAqIEBkZXNjcmlwdGlvbgorICogVGhlICRsb2NhdGlv
biBzZXJ2aWNlIHBhcnNlcyB0aGUgVVJMIGluIHRoZSBicm93c2VyIGFkZHJlc3MgYmFyIChiYXNl
ZCBvbiB0aGUKKyAqIFt3aW5kb3cubG9jYXRpb25dKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEu
b3JnL2VuL3dpbmRvdy5sb2NhdGlvbikpIGFuZCBtYWtlcyB0aGUgVVJMCisgKiBhdmFpbGFibGUg
dG8geW91ciBhcHBsaWNhdGlvbi4gQ2hhbmdlcyB0byB0aGUgVVJMIGluIHRoZSBhZGRyZXNzIGJh
ciBhcmUgcmVmbGVjdGVkIGludG8KKyAqICRsb2NhdGlvbiBzZXJ2aWNlIGFuZCBjaGFuZ2VzIHRv
ICRsb2NhdGlvbiBhcmUgcmVmbGVjdGVkIGludG8gdGhlIGJyb3dzZXIgYWRkcmVzcyBiYXIuCisg
KgorICogKipUaGUgJGxvY2F0aW9uIHNlcnZpY2U6KioKKyAqCisgKiAtIEV4cG9zZXMgdGhlIGN1
cnJlbnQgVVJMIGluIHRoZSBicm93c2VyIGFkZHJlc3MgYmFyLCBzbyB5b3UgY2FuCisgKiAgIC0g
V2F0Y2ggYW5kIG9ic2VydmUgdGhlIFVSTC4KKyAqICAgLSBDaGFuZ2UgdGhlIFVSTC4KKyAqIC0g
U3luY2hyb25pemVzIHRoZSBVUkwgd2l0aCB0aGUgYnJvd3NlciB3aGVuIHRoZSB1c2VyCisgKiAg
IC0gQ2hhbmdlcyB0aGUgYWRkcmVzcyBiYXIuCisgKiAgIC0gQ2xpY2tzIHRoZSBiYWNrIG9yIGZv
cndhcmQgYnV0dG9uIChvciBjbGlja3MgYSBIaXN0b3J5IGxpbmspLgorICogICAtIENsaWNrcyBv
biBhIGxpbmsuCisgKiAtIFJlcHJlc2VudHMgdGhlIFVSTCBvYmplY3QgYXMgYSBzZXQgb2YgbWV0
aG9kcyAocHJvdG9jb2wsIGhvc3QsIHBvcnQsIHBhdGgsIHNlYXJjaCwgaGFzaCkuCisgKgorICog
Rm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIHtAbGluayBndWlkZS8kbG9jYXRpb24gRGV2ZWxvcGVy
IEd1aWRlOiBVc2luZyAkbG9jYXRpb259CisgKi8KKworLyoqCisgKiBAbmdkb2MgcHJvdmlkZXIK
KyAqIEBuYW1lICRsb2NhdGlvblByb3ZpZGVyCisgKiBAZGVzY3JpcHRpb24KKyAqIFVzZSB0aGUg
YCRsb2NhdGlvblByb3ZpZGVyYCB0byBjb25maWd1cmUgaG93IHRoZSBhcHBsaWNhdGlvbiBkZWVw
IGxpbmtpbmcgcGF0aHMgYXJlIHN0b3JlZC4KKyAqLworZnVuY3Rpb24gJExvY2F0aW9uUHJvdmlk
ZXIoKSB7CisgIHZhciBoYXNoUHJlZml4ID0gJycsCisgICAgICBodG1sNU1vZGUgPSB7CisgICAg
ICAgIGVuYWJsZWQ6IGZhbHNlLAorICAgICAgICByZXF1aXJlQmFzZTogdHJ1ZSwKKyAgICAgICAg
cmV3cml0ZUxpbmtzOiB0cnVlCisgICAgICB9OworCisgIC8qKgorICAgKiBAbmdkb2MgbWV0aG9k
CisgICAqIEBuYW1lICRsb2NhdGlvblByb3ZpZGVyI2hhc2hQcmVmaXgKKyAgICogQGRlc2NyaXB0
aW9uCisgICAqIEBwYXJhbSB7c3RyaW5nPX0gcHJlZml4IFByZWZpeCBmb3IgaGFzaCBwYXJ0IChj
b250YWluaW5nIHBhdGggYW5kIHNlYXJjaCkKKyAgICogQHJldHVybnMgeyp9IGN1cnJlbnQgdmFs
dWUgaWYgdXNlZCBhcyBnZXR0ZXIgb3IgaXRzZWxmIChjaGFpbmluZykgaWYgdXNlZCBhcyBzZXR0
ZXIKKyAgICovCisgIHRoaXMuaGFzaFByZWZpeCA9IGZ1bmN0aW9uKHByZWZpeCkgeworICAgIGlm
IChpc0RlZmluZWQocHJlZml4KSkgeworICAgICAgaGFzaFByZWZpeCA9IHByZWZpeDsKKyAgICAg
IHJldHVybiB0aGlzOworICAgIH0gZWxzZSB7CisgICAgICByZXR1cm4gaGFzaFByZWZpeDsKKyAg
ICB9CisgIH07CisKKyAgLyoqCisgICAqIEBuZ2RvYyBtZXRob2QKKyAgICogQG5hbWUgJGxvY2F0
aW9uUHJvdmlkZXIjaHRtbDVNb2RlCisgICAqIEBkZXNjcmlwdGlvbgorICAgKiBAcGFyYW0geyhi
b29sZWFufE9iamVjdCk9fSBtb2RlIElmIGJvb2xlYW4sIHNldHMgYGh0bWw1TW9kZS5lbmFibGVk
YCB0byB2YWx1ZS4KKyAgICogICBJZiBvYmplY3QsIHNldHMgYGVuYWJsZWRgLCBgcmVxdWlyZUJh
c2VgIGFuZCBgcmV3cml0ZUxpbmtzYCB0byByZXNwZWN0aXZlIHZhbHVlcy4gU3VwcG9ydGVkCisg
ICAqICAgcHJvcGVydGllczoKKyAgICogICAtICoqZW5hYmxlZCoqIOKAkyBge2Jvb2xlYW59YCDi
gJMgKGRlZmF1bHQ6IGZhbHNlKSBJZiB0cnVlLCB3aWxsIHJlbHkgb24gYGhpc3RvcnkucHVzaFN0
YXRlYCB0bworICAgKiAgICAgY2hhbmdlIHVybHMgd2hlcmUgc3VwcG9ydGVkLiBXaWxsIGZhbGwg
YmFjayB0byBoYXNoLXByZWZpeGVkIHBhdGhzIGluIGJyb3dzZXJzIHRoYXQgZG8gbm90CisgICAq
ICAgICBzdXBwb3J0IGBwdXNoU3RhdGVgLgorICAgKiAgIC0gKipyZXF1aXJlQmFzZSoqIC0gYHti
b29sZWFufWAgLSAoZGVmYXVsdDogYHRydWVgKSBXaGVuIGh0bWw1TW9kZSBpcyBlbmFibGVkLCBz
cGVjaWZpZXMKKyAgICogICAgIHdoZXRoZXIgb3Igbm90IGEgPGJhc2U+IHRhZyBpcyByZXF1aXJl
ZCB0byBiZSBwcmVzZW50LiBJZiBgZW5hYmxlZGAgYW5kIGByZXF1aXJlQmFzZWAgYXJlCisgICAq
ICAgICB0cnVlLCBhbmQgYSBiYXNlIHRhZyBpcyBub3QgcHJlc2VudCwgYW4gZXJyb3Igd2lsbCBi
ZSB0aHJvd24gd2hlbiBgJGxvY2F0aW9uYCBpcyBpbmplY3RlZC4KKyAgICogICAgIFNlZSB0aGUg
e0BsaW5rIGd1aWRlLyRsb2NhdGlvbiAkbG9jYXRpb24gZ3VpZGUgZm9yIG1vcmUgaW5mb3JtYXRp
b259CisgICAqICAgLSAqKnJld3JpdGVMaW5rcyoqIC0gYHtib29sZWFufWAgLSAoZGVmYXVsdDog
YHRydWVgKSBXaGVuIGh0bWw1TW9kZSBpcyBlbmFibGVkLAorICAgKiAgICAgZW5hYmxlcy9kaXNh
YmxlcyB1cmwgcmV3cml0aW5nIGZvciByZWxhdGl2ZSBsaW5rcy4KKyAgICoKKyAgICogQHJldHVy
bnMge09iamVjdH0gaHRtbDVNb2RlIG9iamVjdCBpZiB1c2VkIGFzIGdldHRlciBvciBpdHNlbGYg
KGNoYWluaW5nKSBpZiB1c2VkIGFzIHNldHRlcgorICAgKi8KKyAgdGhpcy5odG1sNU1vZGUgPSBm
dW5jdGlvbihtb2RlKSB7CisgICAgaWYgKGlzQm9vbGVhbihtb2RlKSkgeworICAgICAgaHRtbDVN
b2RlLmVuYWJsZWQgPSBtb2RlOworICAgICAgcmV0dXJuIHRoaXM7CisgICAgfSBlbHNlIGlmIChp
c09iamVjdChtb2RlKSkgeworCisgICAgICBpZiAoaXNCb29sZWFuKG1vZGUuZW5hYmxlZCkpIHsK
KyAgICAgICAgaHRtbDVNb2RlLmVuYWJsZWQgPSBtb2RlLmVuYWJsZWQ7CisgICAgICB9CisKKyAg
ICAgIGlmIChpc0Jvb2xlYW4obW9kZS5yZXF1aXJlQmFzZSkpIHsKKyAgICAgICAgaHRtbDVNb2Rl
LnJlcXVpcmVCYXNlID0gbW9kZS5yZXF1aXJlQmFzZTsKKyAgICAgIH0KKworICAgICAgaWYgKGlz
Qm9vbGVhbihtb2RlLnJld3JpdGVMaW5rcykpIHsKKyAgICAgICAgaHRtbDVNb2RlLnJld3JpdGVM
aW5rcyA9IG1vZGUucmV3cml0ZUxpbmtzOworICAgICAgfQorCisgICAgICByZXR1cm4gdGhpczsK
KyAgICB9IGVsc2UgeworICAgICAgcmV0dXJuIGh0bWw1TW9kZTsKKyAgICB9CisgIH07CisKKyAg
LyoqCisgICAqIEBuZ2RvYyBldmVudAorICAgKiBAbmFtZSAkbG9jYXRpb24jJGxvY2F0aW9uQ2hh
bmdlU3RhcnQKKyAgICogQGV2ZW50VHlwZSBicm9hZGNhc3Qgb24gcm9vdCBzY29wZQorICAgKiBA
ZGVzY3JpcHRpb24KKyAgICogQnJvYWRjYXN0ZWQgYmVmb3JlIGEgVVJMIHdpbGwgY2hhbmdlLgor
ICAgKgorICAgKiBUaGlzIGNoYW5nZSBjYW4gYmUgcHJldmVudGVkIGJ5IGNhbGxpbmcKKyAgICog
YHByZXZlbnREZWZhdWx0YCBtZXRob2Qgb2YgdGhlIGV2ZW50LiBTZWUge0BsaW5rIG5nLiRyb290
U2NvcGUuU2NvcGUjJG9ufSBmb3IgbW9yZQorICAgKiBkZXRhaWxzIGFib3V0IGV2ZW50IG9iamVj
dC4gVXBvbiBzdWNjZXNzZnVsIGNoYW5nZQorICAgKiB7QGxpbmsgbmcuJGxvY2F0aW9uIyRsb2Nh
dGlvbkNoYW5nZVN1Y2Nlc3MgJGxvY2F0aW9uQ2hhbmdlU3VjY2Vzc30gaXMgZmlyZWQuCisgICAq
CisgICAqIFRoZSBgbmV3U3RhdGVgIGFuZCBgb2xkU3RhdGVgIHBhcmFtZXRlcnMgbWF5IGJlIGRl
ZmluZWQgb25seSBpbiBIVE1MNSBtb2RlIGFuZCB3aGVuCisgICAqIHRoZSBicm93c2VyIHN1cHBv
cnRzIHRoZSBIVE1MNSBIaXN0b3J5IEFQSS4KKyAgICoKKyAgICogQHBhcmFtIHtPYmplY3R9IGFu
Z3VsYXJFdmVudCBTeW50aGV0aWMgZXZlbnQgb2JqZWN0LgorICAgKiBAcGFyYW0ge3N0cmluZ30g
bmV3VXJsIE5ldyBVUkwKKyAgICogQHBhcmFtIHtzdHJpbmc9fSBvbGRVcmwgVVJMIHRoYXQgd2Fz
IGJlZm9yZSBpdCB3YXMgY2hhbmdlZC4KKyAgICogQHBhcmFtIHtzdHJpbmc9fSBuZXdTdGF0ZSBO
ZXcgaGlzdG9yeSBzdGF0ZSBvYmplY3QKKyAgICogQHBhcmFtIHtzdHJpbmc9fSBvbGRTdGF0ZSBI
aXN0b3J5IHN0YXRlIG9iamVjdCB0aGF0IHdhcyBiZWZvcmUgaXQgd2FzIGNoYW5nZWQuCisgICAq
LworCisgIC8qKgorICAgKiBAbmdkb2MgZXZlbnQKKyAgICogQG5hbWUgJGxvY2F0aW9uIyRsb2Nh
dGlvbkNoYW5nZVN1Y2Nlc3MKKyAgICogQGV2ZW50VHlwZSBicm9hZGNhc3Qgb24gcm9vdCBzY29w
ZQorICAgKiBAZGVzY3JpcHRpb24KKyAgICogQnJvYWRjYXN0ZWQgYWZ0ZXIgYSBVUkwgd2FzIGNo
YW5nZWQuCisgICAqCisgICAqIFRoZSBgbmV3U3RhdGVgIGFuZCBgb2xkU3RhdGVgIHBhcmFtZXRl
cnMgbWF5IGJlIGRlZmluZWQgb25seSBpbiBIVE1MNSBtb2RlIGFuZCB3aGVuCisgICAqIHRoZSBi
cm93c2VyIHN1cHBvcnRzIHRoZSBIVE1MNSBIaXN0b3J5IEFQSS4KKyAgICoKKyAgICogQHBhcmFt
IHtPYmplY3R9IGFuZ3VsYXJFdmVudCBTeW50aGV0aWMgZXZlbnQgb2JqZWN0LgorICAgKiBAcGFy
YW0ge3N0cmluZ30gbmV3VXJsIE5ldyBVUkwKKyAgICogQHBhcmFtIHtzdHJpbmc9fSBvbGRVcmwg
VVJMIHRoYXQgd2FzIGJlZm9yZSBpdCB3YXMgY2hhbmdlZC4KKyAgICogQHBhcmFtIHtzdHJpbmc9
fSBuZXdTdGF0ZSBOZXcgaGlzdG9yeSBzdGF0ZSBvYmplY3QKKyAgICogQHBhcmFtIHtzdHJpbmc9
fSBvbGRTdGF0ZSBIaXN0b3J5IHN0YXRlIG9iamVjdCB0aGF0IHdhcyBiZWZvcmUgaXQgd2FzIGNo
YW5nZWQuCisgICAqLworCisgIHRoaXMuJGdldCA9IFsnJHJvb3RTY29wZScsICckYnJvd3Nlcics
ICckc25pZmZlcicsICckcm9vdEVsZW1lbnQnLCAnJHdpbmRvdycsCisgICAgICBmdW5jdGlvbigk
cm9vdFNjb3BlLCAkYnJvd3NlciwgJHNuaWZmZXIsICRyb290RWxlbWVudCwgJHdpbmRvdykgewor
ICAgIHZhciAkbG9jYXRpb24sCisgICAgICAgIExvY2F0aW9uTW9kZSwKKyAgICAgICAgYmFzZUhy
ZWYgPSAkYnJvd3Nlci5iYXNlSHJlZigpLCAvLyBpZiBiYXNlW2hyZWZdIGlzIHVuZGVmaW5lZCwg
aXQgZGVmYXVsdHMgdG8gJycKKyAgICAgICAgaW5pdGlhbFVybCA9ICRicm93c2VyLnVybCgpLAor
ICAgICAgICBhcHBCYXNlOworCisgICAgaWYgKGh0bWw1TW9kZS5lbmFibGVkKSB7CisgICAgICBp
ZiAoIWJhc2VIcmVmICYmIGh0bWw1TW9kZS5yZXF1aXJlQmFzZSkgeworICAgICAgICB0aHJvdyAk
bG9jYXRpb25NaW5FcnIoJ25vYmFzZScsCisgICAgICAgICAgIiRsb2NhdGlvbiBpbiBIVE1MNSBt
b2RlIHJlcXVpcmVzIGEgPGJhc2U+IHRhZyB0byBiZSBwcmVzZW50ISIpOworICAgICAgfQorICAg
ICAgYXBwQmFzZSA9IHNlcnZlckJhc2UoaW5pdGlhbFVybCkgKyAoYmFzZUhyZWYgfHwgJy8nKTsK
KyAgICAgIExvY2F0aW9uTW9kZSA9ICRzbmlmZmVyLmhpc3RvcnkgPyBMb2NhdGlvbkh0bWw1VXJs
IDogTG9jYXRpb25IYXNoYmFuZ0luSHRtbDVVcmw7CisgICAgfSBlbHNlIHsKKyAgICAgIGFwcEJh
c2UgPSBzdHJpcEhhc2goaW5pdGlhbFVybCk7CisgICAgICBMb2NhdGlvbk1vZGUgPSBMb2NhdGlv
bkhhc2hiYW5nVXJsOworICAgIH0KKyAgICAkbG9jYXRpb24gPSBuZXcgTG9jYXRpb25Nb2RlKGFw
cEJhc2UsICcjJyArIGhhc2hQcmVmaXgpOworICAgICRsb2NhdGlvbi4kJHBhcnNlTGlua1VybChp
bml0aWFsVXJsLCBpbml0aWFsVXJsKTsKKworICAgICRsb2NhdGlvbi4kJHN0YXRlID0gJGJyb3dz
ZXIuc3RhdGUoKTsKKworICAgIHZhciBJR05PUkVfVVJJX1JFR0VYUCA9IC9eXHMqKGphdmFzY3Jp
cHR8bWFpbHRvKTovaTsKKworICAgIGZ1bmN0aW9uIHNldEJyb3dzZXJVcmxXaXRoRmFsbGJhY2so
dXJsLCByZXBsYWNlLCBzdGF0ZSkgeworICAgICAgdmFyIG9sZFVybCA9ICRsb2NhdGlvbi51cmwo
KTsKKyAgICAgIHZhciBvbGRTdGF0ZSA9ICRsb2NhdGlvbi4kJHN0YXRlOworICAgICAgdHJ5IHsK
KyAgICAgICAgJGJyb3dzZXIudXJsKHVybCwgcmVwbGFjZSwgc3RhdGUpOworCisgICAgICAgIC8v
IE1ha2Ugc3VyZSAkbG9jYXRpb24uc3RhdGUoKSByZXR1cm5zIHJlZmVyZW50aWFsbHkgaWRlbnRp
Y2FsIChub3QganVzdCBkZWVwbHkgZXF1YWwpCisgICAgICAgIC8vIHN0YXRlIG9iamVjdDsgdGhp
cyBtYWtlcyBwb3NzaWJsZSBxdWljayBjaGVja2luZyBpZiB0aGUgc3RhdGUgY2hhbmdlZCBpbiB0
aGUgZGlnZXN0CisgICAgICAgIC8vIGxvb3AuIENoZWNraW5nIGRlZXAgZXF1YWxpdHkgd291bGQg
YmUgdG9vIGV4cGVuc2l2ZS4KKyAgICAgICAgJGxvY2F0aW9uLiQkc3RhdGUgPSAkYnJvd3Nlci5z
dGF0ZSgpOworICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAvLyBSZXN0b3JlIG9sZCB2YWx1
ZXMgaWYgcHVzaFN0YXRlIGZhaWxzCisgICAgICAgICRsb2NhdGlvbi51cmwob2xkVXJsKTsKKyAg
ICAgICAgJGxvY2F0aW9uLiQkc3RhdGUgPSBvbGRTdGF0ZTsKKworICAgICAgICB0aHJvdyBlOwor
ICAgICAgfQorICAgIH0KKworICAgICRyb290RWxlbWVudC5vbignY2xpY2snLCBmdW5jdGlvbihl
dmVudCkgeworICAgICAgLy8gVE9ETyh2b2p0YSk6IHJld3JpdGUgbGluayB3aGVuIG9wZW5pbmcg
aW4gbmV3IHRhYi93aW5kb3cgKGluIGxlZ2FjeSBicm93c2VyKQorICAgICAgLy8gY3VycmVudGx5
IHdlIG9wZW4gbmljZSB1cmwgbGluayBhbmQgcmVkaXJlY3QgdGhlbgorCisgICAgICBpZiAoIWh0
bWw1TW9kZS5yZXdyaXRlTGlua3MgfHwgZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5IHx8
IGV2ZW50LnNoaWZ0S2V5IHx8IGV2ZW50LndoaWNoID09IDIgfHwgZXZlbnQuYnV0dG9uID09IDIp
IHJldHVybjsKKworICAgICAgdmFyIGVsbSA9IGpxTGl0ZShldmVudC50YXJnZXQpOworCisgICAg
ICAvLyB0cmF2ZXJzZSB0aGUgRE9NIHVwIHRvIGZpbmQgZmlyc3QgQSB0YWcKKyAgICAgIHdoaWxl
IChub2RlTmFtZV8oZWxtWzBdKSAhPT0gJ2EnKSB7CisgICAgICAgIC8vIGlnbm9yZSByZXdyaXRp
bmcgaWYgbm8gQSB0YWcgKHJlYWNoZWQgcm9vdCBlbGVtZW50LCBvciBubyBwYXJlbnQgLSByZW1v
dmVkIGZyb20gZG9jdW1lbnQpCisgICAgICAgIGlmIChlbG1bMF0gPT09ICRyb290RWxlbWVudFsw
XSB8fCAhKGVsbSA9IGVsbS5wYXJlbnQoKSlbMF0pIHJldHVybjsKKyAgICAgIH0KKworICAgICAg
dmFyIGFic0hyZWYgPSBlbG0ucHJvcCgnaHJlZicpOworICAgICAgLy8gZ2V0IHRoZSBhY3R1YWwg
aHJlZiBhdHRyaWJ1dGUgLSBzZWUKKyAgICAgIC8vIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20v
ZW4tdXMvbGlicmFyeS9pZS9kZDM0NzE0OCh2PXZzLjg1KS5hc3B4CisgICAgICB2YXIgcmVsSHJl
ZiA9IGVsbS5hdHRyKCdocmVmJykgfHwgZWxtLmF0dHIoJ3hsaW5rOmhyZWYnKTsKKworICAgICAg
aWYgKGlzT2JqZWN0KGFic0hyZWYpICYmIGFic0hyZWYudG9TdHJpbmcoKSA9PT0gJ1tvYmplY3Qg
U1ZHQW5pbWF0ZWRTdHJpbmddJykgeworICAgICAgICAvLyBTVkdBbmltYXRlZFN0cmluZy5hbmlt
VmFsIHNob3VsZCBiZSBpZGVudGljYWwgdG8gU1ZHQW5pbWF0ZWRTdHJpbmcuYmFzZVZhbCwgdW5s
ZXNzIGR1cmluZworICAgICAgICAvLyBhbiBhbmltYXRpb24uCisgICAgICAgIGFic0hyZWYgPSB1
cmxSZXNvbHZlKGFic0hyZWYuYW5pbVZhbCkuaHJlZjsKKyAgICAgIH0KKworICAgICAgLy8gSWdu
b3JlIHdoZW4gdXJsIGlzIHN0YXJ0ZWQgd2l0aCBqYXZhc2NyaXB0OiBvciBtYWlsdG86CisgICAg
ICBpZiAoSUdOT1JFX1VSSV9SRUdFWFAudGVzdChhYnNIcmVmKSkgcmV0dXJuOworCisgICAgICBp
ZiAoYWJzSHJlZiAmJiAhZWxtLmF0dHIoJ3RhcmdldCcpICYmICFldmVudC5pc0RlZmF1bHRQcmV2
ZW50ZWQoKSkgeworICAgICAgICBpZiAoJGxvY2F0aW9uLiQkcGFyc2VMaW5rVXJsKGFic0hyZWYs
IHJlbEhyZWYpKSB7CisgICAgICAgICAgLy8gV2UgZG8gYSBwcmV2ZW50RGVmYXVsdCBmb3IgYWxs
IHVybHMgdGhhdCBhcmUgcGFydCBvZiB0aGUgYW5ndWxhciBhcHBsaWNhdGlvbiwKKyAgICAgICAg
ICAvLyBpbiBodG1sNW1vZGUgYW5kIGFsc28gd2l0aG91dCwgc28gdGhhdCB3ZSBhcmUgYWJsZSB0
byBhYm9ydCBuYXZpZ2F0aW9uIHdpdGhvdXQKKyAgICAgICAgICAvLyBnZXR0aW5nIGRvdWJsZSBl
bnRyaWVzIGluIHRoZSBsb2NhdGlvbiBoaXN0b3J5LgorICAgICAgICAgIGV2ZW50LnByZXZlbnRE
ZWZhdWx0KCk7CisgICAgICAgICAgLy8gdXBkYXRlIGxvY2F0aW9uIG1hbnVhbGx5CisgICAgICAg
ICAgaWYgKCRsb2NhdGlvbi5hYnNVcmwoKSAhPSAkYnJvd3Nlci51cmwoKSkgeworICAgICAgICAg
ICAgJHJvb3RTY29wZS4kYXBwbHkoKTsKKyAgICAgICAgICAgIC8vIGhhY2sgdG8gd29yayBhcm91
bmQgRkY2IGJ1ZyA2ODQyMDggd2hlbiBzY2VuYXJpbyBydW5uZXIgY2xpY2tzIG9uIGxpbmtzCisg
ICAgICAgICAgICAkd2luZG93LmFuZ3VsYXJbJ2ZmLTY4NDIwOC1wcmV2ZW50RGVmYXVsdCddID0g
dHJ1ZTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9KTsKKworCisgICAg
Ly8gcmV3cml0ZSBoYXNoYmFuZyB1cmwgPD4gaHRtbDUgdXJsCisgICAgaWYgKHRyaW1FbXB0eUhh
c2goJGxvY2F0aW9uLmFic1VybCgpKSAhPSB0cmltRW1wdHlIYXNoKGluaXRpYWxVcmwpKSB7Cisg
ICAgICAkYnJvd3Nlci51cmwoJGxvY2F0aW9uLmFic1VybCgpLCB0cnVlKTsKKyAgICB9CisKKyAg
ICB2YXIgaW5pdGlhbGl6aW5nID0gdHJ1ZTsKKworICAgIC8vIHVwZGF0ZSAkbG9jYXRpb24gd2hl
biAkYnJvd3NlciB1cmwgY2hhbmdlcworICAgICRicm93c2VyLm9uVXJsQ2hhbmdlKGZ1bmN0aW9u
KG5ld1VybCwgbmV3U3RhdGUpIHsKKyAgICAgICRyb290U2NvcGUuJGV2YWxBc3luYyhmdW5jdGlv
bigpIHsKKyAgICAgICAgdmFyIG9sZFVybCA9ICRsb2NhdGlvbi5hYnNVcmwoKTsKKyAgICAgICAg
dmFyIG9sZFN0YXRlID0gJGxvY2F0aW9uLiQkc3RhdGU7CisgICAgICAgIHZhciBkZWZhdWx0UHJl
dmVudGVkOworCisgICAgICAgICRsb2NhdGlvbi4kJHBhcnNlKG5ld1VybCk7CisgICAgICAgICRs
b2NhdGlvbi4kJHN0YXRlID0gbmV3U3RhdGU7CisKKyAgICAgICAgZGVmYXVsdFByZXZlbnRlZCA9
ICRyb290U2NvcGUuJGJyb2FkY2FzdCgnJGxvY2F0aW9uQ2hhbmdlU3RhcnQnLCBuZXdVcmwsIG9s
ZFVybCwKKyAgICAgICAgICAgIG5ld1N0YXRlLCBvbGRTdGF0ZSkuZGVmYXVsdFByZXZlbnRlZDsK
KworICAgICAgICAvLyBpZiB0aGUgbG9jYXRpb24gd2FzIGNoYW5nZWQgYnkgYSBgJGxvY2F0aW9u
Q2hhbmdlU3RhcnRgIGhhbmRsZXIgdGhlbiBzdG9wCisgICAgICAgIC8vIHByb2Nlc3NpbmcgdGhp
cyBsb2NhdGlvbiBjaGFuZ2UKKyAgICAgICAgaWYgKCRsb2NhdGlvbi5hYnNVcmwoKSAhPT0gbmV3
VXJsKSByZXR1cm47CisKKyAgICAgICAgaWYgKGRlZmF1bHRQcmV2ZW50ZWQpIHsKKyAgICAgICAg
ICAkbG9jYXRpb24uJCRwYXJzZShvbGRVcmwpOworICAgICAgICAgICRsb2NhdGlvbi4kJHN0YXRl
ID0gb2xkU3RhdGU7CisgICAgICAgICAgc2V0QnJvd3NlclVybFdpdGhGYWxsYmFjayhvbGRVcmws
IGZhbHNlLCBvbGRTdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgaW5pdGlhbGl6
aW5nID0gZmFsc2U7CisgICAgICAgICAgYWZ0ZXJMb2NhdGlvbkNoYW5nZShvbGRVcmwsIG9sZFN0
YXRlKTsKKyAgICAgICAgfQorICAgICAgfSk7CisgICAgICBpZiAoISRyb290U2NvcGUuJCRwaGFz
ZSkgJHJvb3RTY29wZS4kZGlnZXN0KCk7CisgICAgfSk7CisKKyAgICAvLyB1cGRhdGUgYnJvd3Nl
cgorICAgICRyb290U2NvcGUuJHdhdGNoKGZ1bmN0aW9uICRsb2NhdGlvbldhdGNoKCkgeworICAg
ICAgdmFyIG9sZFVybCA9IHRyaW1FbXB0eUhhc2goJGJyb3dzZXIudXJsKCkpOworICAgICAgdmFy
IG5ld1VybCA9IHRyaW1FbXB0eUhhc2goJGxvY2F0aW9uLmFic1VybCgpKTsKKyAgICAgIHZhciBv
bGRTdGF0ZSA9ICRicm93c2VyLnN0YXRlKCk7CisgICAgICB2YXIgY3VycmVudFJlcGxhY2UgPSAk
bG9jYXRpb24uJCRyZXBsYWNlOworICAgICAgdmFyIHVybE9yU3RhdGVDaGFuZ2VkID0gb2xkVXJs
ICE9PSBuZXdVcmwgfHwKKyAgICAgICAgKCRsb2NhdGlvbi4kJGh0bWw1ICYmICRzbmlmZmVyLmhp
c3RvcnkgJiYgb2xkU3RhdGUgIT09ICRsb2NhdGlvbi4kJHN0YXRlKTsKKworICAgICAgaWYgKGlu
aXRpYWxpemluZyB8fCB1cmxPclN0YXRlQ2hhbmdlZCkgeworICAgICAgICBpbml0aWFsaXppbmcg
PSBmYWxzZTsKKworICAgICAgICAkcm9vdFNjb3BlLiRldmFsQXN5bmMoZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgdmFyIG5ld1VybCA9ICRsb2NhdGlvbi5hYnNVcmwoKTsKKyAgICAgICAgICB2YXIg
ZGVmYXVsdFByZXZlbnRlZCA9ICRyb290U2NvcGUuJGJyb2FkY2FzdCgnJGxvY2F0aW9uQ2hhbmdl
U3RhcnQnLCBuZXdVcmwsIG9sZFVybCwKKyAgICAgICAgICAgICAgJGxvY2F0aW9uLiQkc3RhdGUs
IG9sZFN0YXRlKS5kZWZhdWx0UHJldmVudGVkOworCisgICAgICAgICAgLy8gaWYgdGhlIGxvY2F0
aW9uIHdhcyBjaGFuZ2VkIGJ5IGEgYCRsb2NhdGlvbkNoYW5nZVN0YXJ0YCBoYW5kbGVyIHRoZW4g
c3RvcAorICAgICAgICAgIC8vIHByb2Nlc3NpbmcgdGhpcyBsb2NhdGlvbiBjaGFuZ2UKKyAgICAg
ICAgICBpZiAoJGxvY2F0aW9uLmFic1VybCgpICE9PSBuZXdVcmwpIHJldHVybjsKKworICAgICAg
ICAgIGlmIChkZWZhdWx0UHJldmVudGVkKSB7CisgICAgICAgICAgICAkbG9jYXRpb24uJCRwYXJz
ZShvbGRVcmwpOworICAgICAgICAgICAgJGxvY2F0aW9uLiQkc3RhdGUgPSBvbGRTdGF0ZTsKKyAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKHVybE9yU3RhdGVDaGFuZ2VkKSB7Cisg
ICAgICAgICAgICAgIHNldEJyb3dzZXJVcmxXaXRoRmFsbGJhY2sobmV3VXJsLCBjdXJyZW50UmVw
bGFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGRTdGF0ZSA9
PT0gJGxvY2F0aW9uLiQkc3RhdGUgPyBudWxsIDogJGxvY2F0aW9uLiQkc3RhdGUpOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgYWZ0ZXJMb2NhdGlvbkNoYW5nZShvbGRVcmwsIG9sZFN0YXRl
KTsKKyAgICAgICAgICB9CisgICAgICAgIH0pOworICAgICAgfQorCisgICAgICAkbG9jYXRpb24u
JCRyZXBsYWNlID0gZmFsc2U7CisKKyAgICAgIC8vIHdlIGRvbid0IG5lZWQgdG8gcmV0dXJuIGFu
eXRoaW5nIGJlY2F1c2UgJGV2YWxBc3luYyB3aWxsIG1ha2UgdGhlIGRpZ2VzdCBsb29wIGRpcnR5
IHdoZW4KKyAgICAgIC8vIHRoZXJlIGlzIGEgY2hhbmdlCisgICAgfSk7CisKKyAgICByZXR1cm4g
JGxvY2F0aW9uOworCisgICAgZnVuY3Rpb24gYWZ0ZXJMb2NhdGlvbkNoYW5nZShvbGRVcmwsIG9s
ZFN0YXRlKSB7CisgICAgICAkcm9vdFNjb3BlLiRicm9hZGNhc3QoJyRsb2NhdGlvbkNoYW5nZVN1
Y2Nlc3MnLCAkbG9jYXRpb24uYWJzVXJsKCksIG9sZFVybCwKKyAgICAgICAgJGxvY2F0aW9uLiQk
c3RhdGUsIG9sZFN0YXRlKTsKKyAgICB9Cit9XTsKK30KKworLyoqCisgKiBAbmdkb2Mgc2Vydmlj
ZQorICogQG5hbWUgJGxvZworICogQHJlcXVpcmVzICR3aW5kb3cKKyAqCisgKiBAZGVzY3JpcHRp
b24KKyAqIFNpbXBsZSBzZXJ2aWNlIGZvciBsb2dnaW5nLiBEZWZhdWx0IGltcGxlbWVudGF0aW9u
IHNhZmVseSB3cml0ZXMgdGhlIG1lc3NhZ2UKKyAqIGludG8gdGhlIGJyb3dzZXIncyBjb25zb2xl
IChpZiBwcmVzZW50KS4KKyAqCisgKiBUaGUgbWFpbiBwdXJwb3NlIG9mIHRoaXMgc2VydmljZSBp
cyB0byBzaW1wbGlmeSBkZWJ1Z2dpbmcgYW5kIHRyb3VibGVzaG9vdGluZy4KKyAqCisgKiBUaGUg
ZGVmYXVsdCBpcyB0byBsb2cgYGRlYnVnYCBtZXNzYWdlcy4gWW91IGNhbiB1c2UKKyAqIHtAbGlu
ayBuZy4kbG9nUHJvdmlkZXIgbmcuJGxvZ1Byb3ZpZGVyI2RlYnVnRW5hYmxlZH0gdG8gY2hhbmdl
IHRoaXMuCisgKgorICogQGV4YW1wbGUKKyAgIDxleGFtcGxlIG1vZHVsZT0ibG9nRXhhbXBsZSI+
CisgICAgIDxmaWxlIG5hbWU9InNjcmlwdC5qcyI+CisgICAgICAgYW5ndWxhci5tb2R1bGUoJ2xv
Z0V4YW1wbGUnLCBbXSkKKyAgICAgICAgIC5jb250cm9sbGVyKCdMb2dDb250cm9sbGVyJywgWyck
c2NvcGUnLCAnJGxvZycsIGZ1bmN0aW9uKCRzY29wZSwgJGxvZykgeworICAgICAgICAgICAkc2Nv
cGUuJGxvZyA9ICRsb2c7CisgICAgICAgICAgICRzY29wZS5tZXNzYWdlID0gJ0hlbGxvIFdvcmxk
ISc7CisgICAgICAgICB9XSk7CisgICAgIDwvZmlsZT4KKyAgICAgPGZpbGUgbmFtZT0iaW5kZXgu
aHRtbCI+CisgICAgICAgPGRpdiBuZy1jb250cm9sbGVyPSJMb2dDb250cm9sbGVyIj4KKyAgICAg
ICAgIDxwPlJlbG9hZCB0aGlzIHBhZ2Ugd2l0aCBvcGVuIGNvbnNvbGUsIGVudGVyIHRleHQgYW5k
IGhpdCB0aGUgbG9nIGJ1dHRvbi4uLjwvcD4KKyAgICAgICAgIDxsYWJlbD5NZXNzYWdlOgorICAg
ICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5nLW1vZGVsPSJtZXNzYWdlIiAvPjwvbGFiZWw+Cisg
ICAgICAgICA8YnV0dG9uIG5nLWNsaWNrPSIkbG9nLmxvZyhtZXNzYWdlKSI+bG9nPC9idXR0b24+
CisgICAgICAgICA8YnV0dG9uIG5nLWNsaWNrPSIkbG9nLndhcm4obWVzc2FnZSkiPndhcm48L2J1
dHRvbj4KKyAgICAgICAgIDxidXR0b24gbmctY2xpY2s9IiRsb2cuaW5mbyhtZXNzYWdlKSI+aW5m
bzwvYnV0dG9uPgorICAgICAgICAgPGJ1dHRvbiBuZy1jbGljaz0iJGxvZy5lcnJvcihtZXNzYWdl
KSI+ZXJyb3I8L2J1dHRvbj4KKyAgICAgICAgIDxidXR0b24gbmctY2xpY2s9IiRsb2cuZGVidWco
bWVzc2FnZSkiPmRlYnVnPC9idXR0b24+CisgICAgICAgPC9kaXY+CisgICAgIDwvZmlsZT4KKyAg
IDwvZXhhbXBsZT4KKyAqLworCisvKioKKyAqIEBuZ2RvYyBwcm92aWRlcgorICogQG5hbWUgJGxv
Z1Byb3ZpZGVyCisgKiBAZGVzY3JpcHRpb24KKyAqIFVzZSB0aGUgYCRsb2dQcm92aWRlcmAgdG8g
Y29uZmlndXJlIGhvdyB0aGUgYXBwbGljYXRpb24gbG9ncyBtZXNzYWdlcworICovCitmdW5jdGlv
biAkTG9nUHJvdmlkZXIoKSB7CisgIHZhciBkZWJ1ZyA9IHRydWUsCisgICAgICBzZWxmID0gdGhp
czsKKworICAvKioKKyAgICogQG5nZG9jIG1ldGhvZAorICAgKiBAbmFtZSAkbG9nUHJvdmlkZXIj
ZGVidWdFbmFibGVkCisgICAqIEBkZXNjcmlwdGlvbgorICAgKiBAcGFyYW0ge2Jvb2xlYW49fSBm
bGFnIGVuYWJsZSBvciBkaXNhYmxlIGRlYnVnIGxldmVsIG1lc3NhZ2VzCisgICAqIEByZXR1cm5z
IHsqfSBjdXJyZW50IHZhbHVlIGlmIHVzZWQgYXMgZ2V0dGVyIG9yIGl0c2VsZiAoY2hhaW5pbmcp
IGlmIHVzZWQgYXMgc2V0dGVyCisgICAqLworICB0aGlzLmRlYnVnRW5hYmxlZCA9IGZ1bmN0aW9u
KGZsYWcpIHsKKyAgICBpZiAoaXNEZWZpbmVkKGZsYWcpKSB7CisgICAgICBkZWJ1ZyA9IGZsYWc7
CisgICAgcmV0dXJuIHRoaXM7CisgICAgfSBlbHNlIHsKKyAgICAgIHJldHVybiBkZWJ1ZzsKKyAg
ICB9CisgIH07CisKKyAgdGhpcy4kZ2V0ID0gWyckd2luZG93JywgZnVuY3Rpb24oJHdpbmRvdykg
eworICAgIHJldHVybiB7CisgICAgICAvKioKKyAgICAgICAqIEBuZ2RvYyBtZXRob2QKKyAgICAg
ICAqIEBuYW1lICRsb2cjbG9nCisgICAgICAgKgorICAgICAgICogQGRlc2NyaXB0aW9uCisgICAg
ICAgKiBXcml0ZSBhIGxvZyBtZXNzYWdlCisgICAgICAgKi8KKyAgICAgIGxvZzogY29uc29sZUxv
ZygnbG9nJyksCisKKyAgICAgIC8qKgorICAgICAgICogQG5nZG9jIG1ldGhvZAorICAgICAgICog
QG5hbWUgJGxvZyNpbmZvCisgICAgICAgKgorICAgICAgICogQGRlc2NyaXB0aW9uCisgICAgICAg
KiBXcml0ZSBhbiBpbmZvcm1hdGlvbiBtZXNzYWdlCisgICAgICAgKi8KKyAgICAgIGluZm86IGNv
bnNvbGVMb2coJ2luZm8nKSwKKworICAgICAgLyoqCisgICAgICAgKiBAbmdkb2MgbWV0aG9kCisg
ICAgICAgKiBAbmFtZSAkbG9nI3dhcm4KKyAgICAgICAqCisgICAgICAgKiBAZGVzY3JpcHRpb24K
KyAgICAgICAqIFdyaXRlIGEgd2FybmluZyBtZXNzYWdlCisgICAgICAgKi8KKyAgICAgIHdhcm46
IGNvbnNvbGVMb2coJ3dhcm4nKSwKKworICAgICAgLyoqCisgICAgICAgKiBAbmdkb2MgbWV0aG9k
CisgICAgICAgKiBAbmFtZSAkbG9nI2Vycm9yCisgICAgICAgKgorICAgICAgICogQGRlc2NyaXB0
aW9uCisgICAgICAgKiBXcml0ZSBhbiBlcnJvciBtZXNzYWdlCisgICAgICAgKi8KKyAgICAgIGVy
cm9yOiBjb25zb2xlTG9nKCdlcnJvcicpLAorCisgICAgICAvKioKKyAgICAgICAqIEBuZ2RvYyBt
ZXRob2QKKyAgICAgICAqIEBuYW1lICRsb2cjZGVidWcKKyAgICAgICAqCisgICAgICAgKiBAZGVz
Y3JpcHRpb24KKyAgICAgICAqIFdyaXRlIGEgZGVidWcgbWVzc2FnZQorICAgICAgICovCisgICAg
ICBkZWJ1ZzogKGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgZm4gPSBjb25zb2xlTG9nKCdkZWJ1
ZycpOworCisgICAgICAgIHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAgICBpZiAoZGVidWcp
IHsKKyAgICAgICAgICAgIGZuLmFwcGx5KHNlbGYsIGFyZ3VtZW50cyk7CisgICAgICAgICAgfQor
ICAgICAgICB9OworICAgICAgfSgpKQorICAgIH07CisKKyAgICBmdW5jdGlvbiBmb3JtYXRFcnJv
cihhcmcpIHsKKyAgICAgIGlmIChhcmcgaW5zdGFuY2VvZiBFcnJvcikgeworICAgICAgICBpZiAo
YXJnLnN0YWNrKSB7CisgICAgICAgICAgYXJnID0gKGFyZy5tZXNzYWdlICYmIGFyZy5zdGFjay5p
bmRleE9mKGFyZy5tZXNzYWdlKSA9PT0gLTEpCisgICAgICAgICAgICAgID8gJ0Vycm9yOiAnICsg
YXJnLm1lc3NhZ2UgKyAnXG4nICsgYXJnLnN0YWNrCisgICAgICAgICAgICAgIDogYXJnLnN0YWNr
OworICAgICAgICB9IGVsc2UgaWYgKGFyZy5zb3VyY2VVUkwpIHsKKyAgICAgICAgICBhcmcgPSBh
cmcubWVzc2FnZSArICdcbicgKyBhcmcuc291cmNlVVJMICsgJzonICsgYXJnLmxpbmU7CisgICAg
ICAgIH0KKyAgICAgIH0KKyAgICAgIHJldHVybiBhcmc7CisgICAgfQorCisgICAgZnVuY3Rpb24g
Y29uc29sZUxvZyh0eXBlKSB7CisgICAgICB2YXIgY29uc29sZSA9ICR3aW5kb3cuY29uc29sZSB8
fCB7fSwKKyAgICAgICAgICBsb2dGbiA9IGNvbnNvbGVbdHlwZV0gfHwgY29uc29sZS5sb2cgfHwg
bm9vcCwKKyAgICAgICAgICBoYXNBcHBseSA9IGZhbHNlOworCisgICAgICAvLyBOb3RlOiByZWFk
aW5nIGxvZ0ZuLmFwcGx5IHRocm93cyBhbiBlcnJvciBpbiBJRTExIGluIElFOCBkb2N1bWVudCBt
b2RlLgorICAgICAgLy8gVGhlIHJlYXNvbiBiZWhpbmQgdGhpcyBpcyB0aGF0IGNvbnNvbGUubG9n
IGhhcyB0eXBlICJvYmplY3QiIGluIElFOC4uLgorICAgICAgdHJ5IHsKKyAgICAgICAgaGFzQXBw
bHkgPSAhIWxvZ0ZuLmFwcGx5OworICAgICAgfSBjYXRjaCAoZSkge30KKworICAgICAgaWYgKGhh
c0FwcGx5KSB7CisgICAgICAgIHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAgICB2YXIgYXJn
cyA9IFtdOworICAgICAgICAgIGZvckVhY2goYXJndW1lbnRzLCBmdW5jdGlvbihhcmcpIHsKKyAg
ICAgICAgICAgIGFyZ3MucHVzaChmb3JtYXRFcnJvcihhcmcpKTsKKyAgICAgICAgICB9KTsKKyAg
ICAgICAgICByZXR1cm4gbG9nRm4uYXBwbHkoY29uc29sZSwgYXJncyk7CisgICAgICAgIH07Cisg
ICAgICB9CisKKyAgICAgIC8vIHdlIGFyZSBJRSB3aGljaCBlaXRoZXIgZG9lc24ndCBoYXZlIHdp
bmRvdy5jb25zb2xlID0+IHRoaXMgaXMgbm9vcCBhbmQgd2UgZG8gbm90aGluZywKKyAgICAgIC8v
IG9yIHdlIGFyZSBJRSB3aGVyZSBjb25zb2xlLmxvZyBkb2Vzbid0IGhhdmUgYXBwbHkgc28gd2Ug
bG9nIGF0IGxlYXN0IGZpcnN0IDIgYXJncworICAgICAgcmV0dXJuIGZ1bmN0aW9uKGFyZzEsIGFy
ZzIpIHsKKyAgICAgICAgbG9nRm4oYXJnMSwgYXJnMiA9PSBudWxsID8gJycgOiBhcmcyKTsKKyAg
ICAgIH07CisgICAgfQorICB9XTsKK30KKworLyogKiAqICogKiAqICogKiAqICogKiAqICogKiAq
ICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKgorICogICAgIEFu
eSBjb21taXRzIHRvIHRoaXMgZmlsZSBzaG91bGQgYmUgcmV2aWV3ZWQgd2l0aCBzZWN1cml0eSBp
biBtaW5kLiAgKgorICogICBDaGFuZ2VzIHRvIHRoaXMgZmlsZSBjYW4gcG90ZW50aWFsbHkgY3Jl
YXRlIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcy4gKgorICogICAgICAgICAgQW4gYXBwcm92YWwg
ZnJvbSAyIENvcmUgbWVtYmVycyB3aXRoIGhpc3Rvcnkgb2YgbW9kaWZ5aW5nICAgICAgKgorICog
ICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyBmaWxlIGlzIHJlcXVpcmVkLiAgICAgICAgICAg
ICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogIERvZXMgdGhlIGNoYW5n
ZSBzb21laG93IGFsbG93IGZvciBhcmJpdHJhcnkgamF2YXNjcmlwdCB0byBiZSBleGVjdXRlZD8g
KgorICogICAgT3IgYWxsb3dzIGZvciBzb21lb25lIHRvIGNoYW5nZSB0aGUgcHJvdG90eXBlIG9m
IGJ1aWx0LWluIG9iamVjdHM/ICAgKgorICogICAgIE9yIGdpdmVzIHVuZGVzaXJlZCBhY2Nlc3Mg
dG8gdmFyaWFibGVzIGxpa2VzIGRvY3VtZW50IG9yIHdpbmRvdz8gICAgKgorICogKiAqICogKiAq
ICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICog
KiAqICogKi8KKwordmFyICRwYXJzZU1pbkVyciA9IG1pbkVycignJHBhcnNlJyk7CisKKy8vIFNh
bmRib3hpbmcgQW5ndWxhciBFeHByZXNzaW9ucworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisvLyBBbmd1bGFyIGV4cHJlc3Npb25zIGFyZSBnZW5lcmFsbHkgY29uc2lkZXJlZCBz
YWZlIGJlY2F1c2UgdGhlc2UgZXhwcmVzc2lvbnMgb25seSBoYXZlIGRpcmVjdAorLy8gYWNjZXNz
IHRvIGAkc2NvcGVgIGFuZCBsb2NhbHMuIEhvd2V2ZXIsIG9uZSBjYW4gb2J0YWluIHRoZSBhYmls
aXR5IHRvIGV4ZWN1dGUgYXJiaXRyYXJ5IEpTIGNvZGUgYnkKKy8vIG9idGFpbmluZyBhIHJlZmVy
ZW5jZSB0byBuYXRpdmUgSlMgZnVuY3Rpb25zIHN1Y2ggYXMgdGhlIEZ1bmN0aW9uIGNvbnN0cnVj
dG9yLgorLy8KKy8vIEFzIGFuIGV4YW1wbGUsIGNvbnNpZGVyIHRoZSBmb2xsb3dpbmcgQW5ndWxh
ciBleHByZXNzaW9uOgorLy8KKy8vICAge30udG9TdHJpbmcuY29uc3RydWN0b3IoJ2FsZXJ0KCJl
dmlsIEpTIGNvZGUiKScpCisvLworLy8gVGhpcyBzYW5kYm94aW5nIHRlY2huaXF1ZSBpcyBub3Qg
cGVyZmVjdCBhbmQgZG9lc24ndCBhaW0gdG8gYmUuIFRoZSBnb2FsIGlzIHRvIHByZXZlbnQgZXhw
bG9pdHMKKy8vIGFnYWluc3QgdGhlIGV4cHJlc3Npb24gbGFuZ3VhZ2UsIGJ1dCBub3QgdG8gcHJl
dmVudCBleHBsb2l0cyB0aGF0IHdlcmUgZW5hYmxlZCBieSBleHBvc2luZworLy8gc2Vuc2l0aXZl
IEphdmFTY3JpcHQgb3IgYnJvd3NlciBBUElzIG9uIFNjb3BlLiBFeHBvc2luZyBzdWNoIG9iamVj
dHMgb24gYSBTY29wZSBpcyBuZXZlciBhIGdvb2QKKy8vIHByYWN0aWNlIGFuZCB0aGVyZWZvcmUg
d2UgYXJlIG5vdCBldmVuIHRyeWluZyB0byBwcm90ZWN0IGFnYWluc3QgaW50ZXJhY3Rpb24gd2l0
aCBhbiBvYmplY3QKKy8vIGV4cGxpY2l0bHkgZXhwb3NlZCBpbiB0aGlzIHdheS4KKy8vCisvLyBJ
biBnZW5lcmFsLCBpdCBpcyBub3QgcG9zc2libGUgdG8gYWNjZXNzIGEgV2luZG93IG9iamVjdCBm
cm9tIGFuIGFuZ3VsYXIgZXhwcmVzc2lvbiB1bmxlc3MgYQorLy8gd2luZG93IG9yIHNvbWUgRE9N
IG9iamVjdCB0aGF0IGhhcyBhIHJlZmVyZW5jZSB0byB3aW5kb3cgaXMgcHVibGlzaGVkIG9udG8g
YSBTY29wZS4KKy8vIFNpbWlsYXJseSB3ZSBwcmV2ZW50IGludm9jYXRpb25zIG9mIGZ1bmN0aW9u
IGtub3duIHRvIGJlIGRhbmdlcm91cywgYXMgd2VsbCBhcyBhc3NpZ25tZW50cyB0bworLy8gbmF0
aXZlIG9iamVjdHMuCisvLworLy8gU2VlIGh0dHBzOi8vZG9jcy5hbmd1bGFyanMub3JnL2d1aWRl
L3NlY3VyaXR5CisKKworZnVuY3Rpb24gZW5zdXJlU2FmZU1lbWJlck5hbWUobmFtZSwgZnVsbEV4
cHJlc3Npb24pIHsKKyAgaWYgKG5hbWUgPT09ICJfX2RlZmluZUdldHRlcl9fIiB8fCBuYW1lID09
PSAiX19kZWZpbmVTZXR0ZXJfXyIKKyAgICAgIHx8IG5hbWUgPT09ICJfX2xvb2t1cEdldHRlcl9f
IiB8fCBuYW1lID09PSAiX19sb29rdXBTZXR0ZXJfXyIKKyAgICAgIHx8IG5hbWUgPT09ICJfX3By
b3RvX18iKSB7CisgICAgdGhyb3cgJHBhcnNlTWluRXJyKCdpc2VjZmxkJywKKyAgICAgICAgJ0F0
dGVtcHRpbmcgdG8gYWNjZXNzIGEgZGlzYWxsb3dlZCBmaWVsZCBpbiBBbmd1bGFyIGV4cHJlc3Np
b25zISAnCisgICAgICAgICsgJ0V4cHJlc3Npb246IHswfScsIGZ1bGxFeHByZXNzaW9uKTsKKyAg
fQorICByZXR1cm4gbmFtZTsKK30KKworZnVuY3Rpb24gZW5zdXJlU2FmZU9iamVjdChvYmosIGZ1
bGxFeHByZXNzaW9uKSB7CisgIC8vIG5pZnR5IGNoZWNrIGlmIG9iaiBpcyBGdW5jdGlvbiB0aGF0
IGlzIGZhc3QgYW5kIHdvcmtzIGFjcm9zcyBpZnJhbWVzIGFuZCBvdGhlciBjb250ZXh0cworICBp
ZiAob2JqKSB7CisgICAgaWYgKG9iai5jb25zdHJ1Y3RvciA9PT0gb2JqKSB7CisgICAgICB0aHJv
dyAkcGFyc2VNaW5FcnIoJ2lzZWNmbicsCisgICAgICAgICAgJ1JlZmVyZW5jaW5nIEZ1bmN0aW9u
IGluIEFuZ3VsYXIgZXhwcmVzc2lvbnMgaXMgZGlzYWxsb3dlZCEgRXhwcmVzc2lvbjogezB9JywK
KyAgICAgICAgICBmdWxsRXhwcmVzc2lvbik7CisgICAgfSBlbHNlIGlmICgvLyBpc1dpbmRvdyhv
YmopCisgICAgICAgIG9iai53aW5kb3cgPT09IG9iaikgeworICAgICAgdGhyb3cgJHBhcnNlTWlu
RXJyKCdpc2Vjd2luZG93JywKKyAgICAgICAgICAnUmVmZXJlbmNpbmcgdGhlIFdpbmRvdyBpbiBB
bmd1bGFyIGV4cHJlc3Npb25zIGlzIGRpc2FsbG93ZWQhIEV4cHJlc3Npb246IHswfScsCisgICAg
ICAgICAgZnVsbEV4cHJlc3Npb24pOworICAgIH0gZWxzZSBpZiAoLy8gaXNFbGVtZW50KG9iaikK
KyAgICAgICAgb2JqLmNoaWxkcmVuICYmIChvYmoubm9kZU5hbWUgfHwgKG9iai5wcm9wICYmIG9i
ai5hdHRyICYmIG9iai5maW5kKSkpIHsKKyAgICAgIHRocm93ICRwYXJzZU1pbkVycignaXNlY2Rv
bScsCisgICAgICAgICAgJ1JlZmVyZW5jaW5nIERPTSBub2RlcyBpbiBBbmd1bGFyIGV4cHJlc3Np
b25zIGlzIGRpc2FsbG93ZWQhIEV4cHJlc3Npb246IHswfScsCisgICAgICAgICAgZnVsbEV4cHJl
c3Npb24pOworICAgIH0gZWxzZSBpZiAoLy8gYmxvY2sgT2JqZWN0IHNvIHRoYXQgd2UgY2FuJ3Qg
Z2V0IGhvbGQgb2YgZGFuZ2Vyb3VzIE9iamVjdC4qIG1ldGhvZHMKKyAgICAgICAgb2JqID09PSBP
YmplY3QpIHsKKyAgICAgIHRocm93ICRwYXJzZU1pbkVycignaXNlY29iaicsCisgICAgICAgICAg
J1JlZmVyZW5jaW5nIE9iamVjdCBpbiBBbmd1bGFyIGV4cHJlc3Npb25zIGlzIGRpc2FsbG93ZWQh
IEV4cHJlc3Npb246IHswfScsCisgICAgICAgICAgZnVsbEV4cHJlc3Npb24pOworICAgIH0KKyAg
fQorICByZXR1cm4gb2JqOworfQorCit2YXIgQ0FMTCA9IEZ1bmN0aW9uLnByb3RvdHlwZS5jYWxs
OwordmFyIEFQUExZID0gRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5OwordmFyIEJJTkQgPSBGdW5j
dGlvbi5wcm90b3R5cGUuYmluZDsKKworZnVuY3Rpb24gZW5zdXJlU2FmZUZ1bmN0aW9uKG9iaiwg
ZnVsbEV4cHJlc3Npb24pIHsKKyAgaWYgKG9iaikgeworICAgIGlmIChvYmouY29uc3RydWN0b3Ig
PT09IG9iaikgeworICAgICAgdGhyb3cgJHBhcnNlTWluRXJyKCdpc2VjZm4nLAorICAgICAgICAn
UmVmZXJlbmNpbmcgRnVuY3Rpb24gaW4gQW5ndWxhciBleHByZXNzaW9ucyBpcyBkaXNhbGxvd2Vk
ISBFeHByZXNzaW9uOiB7MH0nLAorICAgICAgICBmdWxsRXhwcmVzc2lvbik7CisgICAgfSBlbHNl
IGlmIChvYmogPT09IENBTEwgfHwgb2JqID09PSBBUFBMWSB8fCBvYmogPT09IEJJTkQpIHsKKyAg
ICAgIHRocm93ICRwYXJzZU1pbkVycignaXNlY2ZmJywKKyAgICAgICAgJ1JlZmVyZW5jaW5nIGNh
bGwsIGFwcGx5IG9yIGJpbmQgaW4gQW5ndWxhciBleHByZXNzaW9ucyBpcyBkaXNhbGxvd2VkISBF
eHByZXNzaW9uOiB7MH0nLAorICAgICAgICBmdWxsRXhwcmVzc2lvbik7CisgICAgfQorICB9Cit9
CisKK3ZhciBPUEVSQVRPUlMgPSBjcmVhdGVNYXAoKTsKK2ZvckVhY2goJysgLSAqIC8gJSA9PT0g
IT09ID09ICE9IDwgPiA8PSA+PSAmJiB8fCAhID0gfCcuc3BsaXQoJyAnKSwgZnVuY3Rpb24ob3Bl
cmF0b3IpIHsgT1BFUkFUT1JTW29wZXJhdG9yXSA9IHRydWU7IH0pOwordmFyIEVTQ0FQRSA9IHsi
biI6IlxuIiwgImYiOiJcZiIsICJyIjoiXHIiLCAidCI6Ilx0IiwgInYiOiJcdiIsICInIjoiJyIs
ICciJzonIid9OworCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
CisKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqLwordmFyIExleGVyID0gZnVuY3Rpb24ob3B0
aW9ucykgeworICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zOworfTsKKworTGV4ZXIucHJvdG90eXBl
ID0geworICBjb25zdHJ1Y3RvcjogTGV4ZXIsCisKKyAgbGV4OiBmdW5jdGlvbih0ZXh0KSB7Cisg
ICAgdGhpcy50ZXh0ID0gdGV4dDsKKyAgICB0aGlzLmluZGV4ID0gMDsKKyAgICB0aGlzLnRva2Vu
cyA9IFtdOworCisgICAgd2hpbGUgKHRoaXMuaW5kZXggPCB0aGlzLnRleHQubGVuZ3RoKSB7Cisg
ICAgICB2YXIgY2ggPSB0aGlzLnRleHQuY2hhckF0KHRoaXMuaW5kZXgpOworICAgICAgaWYgKGNo
ID09PSAnIicgfHwgY2ggPT09ICInIikgeworICAgICAgICB0aGlzLnJlYWRTdHJpbmcoY2gpOwor
ICAgICAgfSBlbHNlIGlmICh0aGlzLmlzTnVtYmVyKGNoKSB8fCBjaCA9PT0gJy4nICYmIHRoaXMu
aXNOdW1iZXIodGhpcy5wZWVrKCkpKSB7CisgICAgICAgIHRoaXMucmVhZE51bWJlcigpOworICAg
ICAgfSBlbHNlIGlmICh0aGlzLmlzSWRlbnQoY2gpKSB7CisgICAgICAgIHRoaXMucmVhZElkZW50
KCk7CisgICAgICB9IGVsc2UgaWYgKHRoaXMuaXMoY2gsICcoKXt9W10uLDs6PycpKSB7CisgICAg
ICAgIHRoaXMudG9rZW5zLnB1c2goe2luZGV4OiB0aGlzLmluZGV4LCB0ZXh0OiBjaH0pOworICAg
ICAgICB0aGlzLmluZGV4Kys7CisgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNXaGl0ZXNwYWNlKGNo
KSkgeworICAgICAgICB0aGlzLmluZGV4Kys7CisgICAgICB9IGVsc2UgeworICAgICAgICB2YXIg
Y2gyID0gY2ggKyB0aGlzLnBlZWsoKTsKKyAgICAgICAgdmFyIGNoMyA9IGNoMiArIHRoaXMucGVl
aygyKTsKKyAgICAgICAgdmFyIG9wMSA9IE9QRVJBVE9SU1tjaF07CisgICAgICAgIHZhciBvcDIg
PSBPUEVSQVRPUlNbY2gyXTsKKyAgICAgICAgdmFyIG9wMyA9IE9QRVJBVE9SU1tjaDNdOworICAg
ICAgICBpZiAob3AxIHx8IG9wMiB8fCBvcDMpIHsKKyAgICAgICAgICB2YXIgdG9rZW4gPSBvcDMg
PyBjaDMgOiAob3AyID8gY2gyIDogY2gpOworICAgICAgICAgIHRoaXMudG9rZW5zLnB1c2goe2lu
ZGV4OiB0aGlzLmluZGV4LCB0ZXh0OiB0b2tlbiwgb3BlcmF0b3I6IHRydWV9KTsKKyAgICAgICAg
ICB0aGlzLmluZGV4ICs9IHRva2VuLmxlbmd0aDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICB0aGlzLnRocm93RXJyb3IoJ1VuZXhwZWN0ZWQgbmV4dCBjaGFyYWN0ZXIgJywgdGhpcy5pbmRl
eCwgdGhpcy5pbmRleCArIDEpOworICAgICAgICB9CisgICAgICB9CisgICAgfQorICAgIHJldHVy
biB0aGlzLnRva2VuczsKKyAgfSwKKworICBpczogZnVuY3Rpb24oY2gsIGNoYXJzKSB7CisgICAg
cmV0dXJuIGNoYXJzLmluZGV4T2YoY2gpICE9PSAtMTsKKyAgfSwKKworICBwZWVrOiBmdW5jdGlv
bihpKSB7CisgICAgdmFyIG51bSA9IGkgfHwgMTsKKyAgICByZXR1cm4gKHRoaXMuaW5kZXggKyBu
dW0gPCB0aGlzLnRleHQubGVuZ3RoKSA/IHRoaXMudGV4dC5jaGFyQXQodGhpcy5pbmRleCArIG51
bSkgOiBmYWxzZTsKKyAgfSwKKworICBpc051bWJlcjogZnVuY3Rpb24oY2gpIHsKKyAgICByZXR1
cm4gKCcwJyA8PSBjaCAmJiBjaCA8PSAnOScpICYmIHR5cGVvZiBjaCA9PT0gInN0cmluZyI7Cisg
IH0sCisKKyAgaXNXaGl0ZXNwYWNlOiBmdW5jdGlvbihjaCkgeworICAgIC8vIElFIHRyZWF0cyBu
b24tYnJlYWtpbmcgc3BhY2UgYXMgXHUwMEEwCisgICAgcmV0dXJuIChjaCA9PT0gJyAnIHx8IGNo
ID09PSAnXHInIHx8IGNoID09PSAnXHQnIHx8CisgICAgICAgICAgICBjaCA9PT0gJ1xuJyB8fCBj
aCA9PT0gJ1x2JyB8fCBjaCA9PT0gJ1x1MDBBMCcpOworICB9LAorCisgIGlzSWRlbnQ6IGZ1bmN0
aW9uKGNoKSB7CisgICAgcmV0dXJuICgnYScgPD0gY2ggJiYgY2ggPD0gJ3onIHx8CisgICAgICAg
ICAgICAnQScgPD0gY2ggJiYgY2ggPD0gJ1onIHx8CisgICAgICAgICAgICAnXycgPT09IGNoIHx8
IGNoID09PSAnJCcpOworICB9LAorCisgIGlzRXhwT3BlcmF0b3I6IGZ1bmN0aW9uKGNoKSB7Cisg
ICAgcmV0dXJuIChjaCA9PT0gJy0nIHx8IGNoID09PSAnKycgfHwgdGhpcy5pc051bWJlcihjaCkp
OworICB9LAorCisgIHRocm93RXJyb3I6IGZ1bmN0aW9uKGVycm9yLCBzdGFydCwgZW5kKSB7Cisg
ICAgZW5kID0gZW5kIHx8IHRoaXMuaW5kZXg7CisgICAgdmFyIGNvbFN0ciA9IChpc0RlZmluZWQo
c3RhcnQpCisgICAgICAgICAgICA/ICdzICcgKyBzdGFydCArICAnLScgKyB0aGlzLmluZGV4ICsg
JyBbJyArIHRoaXMudGV4dC5zdWJzdHJpbmcoc3RhcnQsIGVuZCkgKyAnXScKKyAgICAgICAgICAg
IDogJyAnICsgZW5kKTsKKyAgICB0aHJvdyAkcGFyc2VNaW5FcnIoJ2xleGVycicsICdMZXhlciBF
cnJvcjogezB9IGF0IGNvbHVtbnsxfSBpbiBleHByZXNzaW9uIFt7Mn1dLicsCisgICAgICAgIGVy
cm9yLCBjb2xTdHIsIHRoaXMudGV4dCk7CisgIH0sCisKKyAgcmVhZE51bWJlcjogZnVuY3Rpb24o
KSB7CisgICAgdmFyIG51bWJlciA9ICcnOworICAgIHZhciBzdGFydCA9IHRoaXMuaW5kZXg7Cisg
ICAgd2hpbGUgKHRoaXMuaW5kZXggPCB0aGlzLnRleHQubGVuZ3RoKSB7CisgICAgICB2YXIgY2gg
PSBsb3dlcmNhc2UodGhpcy50ZXh0LmNoYXJBdCh0aGlzLmluZGV4KSk7CisgICAgICBpZiAoY2gg
PT0gJy4nIHx8IHRoaXMuaXNOdW1iZXIoY2gpKSB7CisgICAgICAgIG51bWJlciArPSBjaDsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHZhciBwZWVrQ2ggPSB0aGlzLnBlZWsoKTsKKyAgICAgICAg
aWYgKGNoID09ICdlJyAmJiB0aGlzLmlzRXhwT3BlcmF0b3IocGVla0NoKSkgeworICAgICAgICAg
IG51bWJlciArPSBjaDsKKyAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzRXhwT3BlcmF0b3IoY2gp
ICYmCisgICAgICAgICAgICBwZWVrQ2ggJiYgdGhpcy5pc051bWJlcihwZWVrQ2gpICYmCisgICAg
ICAgICAgICBudW1iZXIuY2hhckF0KG51bWJlci5sZW5ndGggLSAxKSA9PSAnZScpIHsKKyAgICAg
ICAgICBudW1iZXIgKz0gY2g7CisgICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc0V4cE9wZXJhdG9y
KGNoKSAmJgorICAgICAgICAgICAgKCFwZWVrQ2ggfHwgIXRoaXMuaXNOdW1iZXIocGVla0NoKSkg
JiYKKyAgICAgICAgICAgIG51bWJlci5jaGFyQXQobnVtYmVyLmxlbmd0aCAtIDEpID09ICdlJykg
eworICAgICAgICAgIHRoaXMudGhyb3dFcnJvcignSW52YWxpZCBleHBvbmVudCcpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICB9CisgICAgICB0
aGlzLmluZGV4Kys7CisgICAgfQorICAgIHRoaXMudG9rZW5zLnB1c2goeworICAgICAgaW5kZXg6
IHN0YXJ0LAorICAgICAgdGV4dDogbnVtYmVyLAorICAgICAgY29uc3RhbnQ6IHRydWUsCisgICAg
ICB2YWx1ZTogTnVtYmVyKG51bWJlcikKKyAgICB9KTsKKyAgfSwKKworICByZWFkSWRlbnQ6IGZ1
bmN0aW9uKCkgeworICAgIHZhciBzdGFydCA9IHRoaXMuaW5kZXg7CisgICAgd2hpbGUgKHRoaXMu
aW5kZXggPCB0aGlzLnRleHQubGVuZ3RoKSB7CisgICAgICB2YXIgY2ggPSB0aGlzLnRleHQuY2hh
ckF0KHRoaXMuaW5kZXgpOworICAgICAgaWYgKCEodGhpcy5pc0lkZW50KGNoKSB8fCB0aGlzLmlz
TnVtYmVyKGNoKSkpIHsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICB0aGlzLmluZGV4
Kys7CisgICAgfQorICAgIHRoaXMudG9rZW5zLnB1c2goeworICAgICAgaW5kZXg6IHN0YXJ0LAor
ICAgICAgdGV4dDogdGhpcy50ZXh0LnNsaWNlKHN0YXJ0LCB0aGlzLmluZGV4KSwKKyAgICAgIGlk
ZW50aWZpZXI6IHRydWUKKyAgICB9KTsKKyAgfSwKKworICByZWFkU3RyaW5nOiBmdW5jdGlvbihx
dW90ZSkgeworICAgIHZhciBzdGFydCA9IHRoaXMuaW5kZXg7CisgICAgdGhpcy5pbmRleCsrOwor
ICAgIHZhciBzdHJpbmcgPSAnJzsKKyAgICB2YXIgcmF3U3RyaW5nID0gcXVvdGU7CisgICAgdmFy
IGVzY2FwZSA9IGZhbHNlOworICAgIHdoaWxlICh0aGlzLmluZGV4IDwgdGhpcy50ZXh0Lmxlbmd0
aCkgeworICAgICAgdmFyIGNoID0gdGhpcy50ZXh0LmNoYXJBdCh0aGlzLmluZGV4KTsKKyAgICAg
IHJhd1N0cmluZyArPSBjaDsKKyAgICAgIGlmIChlc2NhcGUpIHsKKyAgICAgICAgaWYgKGNoID09
PSAndScpIHsKKyAgICAgICAgICB2YXIgaGV4ID0gdGhpcy50ZXh0LnN1YnN0cmluZyh0aGlzLmlu
ZGV4ICsgMSwgdGhpcy5pbmRleCArIDUpOworICAgICAgICAgIGlmICghaGV4Lm1hdGNoKC9bXGRh
LWZdezR9L2kpKSB7CisgICAgICAgICAgICB0aGlzLnRocm93RXJyb3IoJ0ludmFsaWQgdW5pY29k
ZSBlc2NhcGUgW1xcdScgKyBoZXggKyAnXScpOworICAgICAgICAgIH0KKyAgICAgICAgICB0aGlz
LmluZGV4ICs9IDQ7CisgICAgICAgICAgc3RyaW5nICs9IFN0cmluZy5mcm9tQ2hhckNvZGUocGFy
c2VJbnQoaGV4LCAxNikpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIHZhciByZXAgPSBF
U0NBUEVbY2hdOworICAgICAgICAgIHN0cmluZyA9IHN0cmluZyArIChyZXAgfHwgY2gpOworICAg
ICAgICB9CisgICAgICAgIGVzY2FwZSA9IGZhbHNlOworICAgICAgfSBlbHNlIGlmIChjaCA9PT0g
J1xcJykgeworICAgICAgICBlc2NhcGUgPSB0cnVlOworICAgICAgfSBlbHNlIGlmIChjaCA9PT0g
cXVvdGUpIHsKKyAgICAgICAgdGhpcy5pbmRleCsrOworICAgICAgICB0aGlzLnRva2Vucy5wdXNo
KHsKKyAgICAgICAgICBpbmRleDogc3RhcnQsCisgICAgICAgICAgdGV4dDogcmF3U3RyaW5nLAor
ICAgICAgICAgIGNvbnN0YW50OiB0cnVlLAorICAgICAgICAgIHZhbHVlOiBzdHJpbmcKKyAgICAg
ICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHN0cmluZyAr
PSBjaDsKKyAgICAgIH0KKyAgICAgIHRoaXMuaW5kZXgrKzsKKyAgICB9CisgICAgdGhpcy50aHJv
d0Vycm9yKCdVbnRlcm1pbmF0ZWQgcXVvdGUnLCBzdGFydCk7CisgIH0KK307CisKK3ZhciBBU1Qg
PSBmdW5jdGlvbihsZXhlciwgb3B0aW9ucykgeworICB0aGlzLmxleGVyID0gbGV4ZXI7CisgIHRo
aXMub3B0aW9ucyA9IG9wdGlvbnM7Cit9OworCitBU1QuUHJvZ3JhbSA9ICdQcm9ncmFtJzsKK0FT
VC5FeHByZXNzaW9uU3RhdGVtZW50ID0gJ0V4cHJlc3Npb25TdGF0ZW1lbnQnOworQVNULkFzc2ln
bm1lbnRFeHByZXNzaW9uID0gJ0Fzc2lnbm1lbnRFeHByZXNzaW9uJzsKK0FTVC5Db25kaXRpb25h
bEV4cHJlc3Npb24gPSAnQ29uZGl0aW9uYWxFeHByZXNzaW9uJzsKK0FTVC5Mb2dpY2FsRXhwcmVz
c2lvbiA9ICdMb2dpY2FsRXhwcmVzc2lvbic7CitBU1QuQmluYXJ5RXhwcmVzc2lvbiA9ICdCaW5h
cnlFeHByZXNzaW9uJzsKK0FTVC5VbmFyeUV4cHJlc3Npb24gPSAnVW5hcnlFeHByZXNzaW9uJzsK
K0FTVC5DYWxsRXhwcmVzc2lvbiA9ICdDYWxsRXhwcmVzc2lvbic7CitBU1QuTWVtYmVyRXhwcmVz
c2lvbiA9ICdNZW1iZXJFeHByZXNzaW9uJzsKK0FTVC5JZGVudGlmaWVyID0gJ0lkZW50aWZpZXIn
OworQVNULkxpdGVyYWwgPSAnTGl0ZXJhbCc7CitBU1QuQXJyYXlFeHByZXNzaW9uID0gJ0FycmF5
RXhwcmVzc2lvbic7CitBU1QuUHJvcGVydHkgPSAnUHJvcGVydHknOworQVNULk9iamVjdEV4cHJl
c3Npb24gPSAnT2JqZWN0RXhwcmVzc2lvbic7CitBU1QuVGhpc0V4cHJlc3Npb24gPSAnVGhpc0V4
cHJlc3Npb24nOworCisvLyBJbnRlcm5hbCB1c2Ugb25seQorQVNULk5HVmFsdWVQYXJhbWV0ZXIg
PSAnTkdWYWx1ZVBhcmFtZXRlcic7CisKK0FTVC5wcm90b3R5cGUgPSB7CisgIGFzdDogZnVuY3Rp
b24odGV4dCkgeworICAgIHRoaXMudGV4dCA9IHRleHQ7CisgICAgdGhpcy50b2tlbnMgPSB0aGlz
LmxleGVyLmxleCh0ZXh0KTsKKworICAgIHZhciB2YWx1ZSA9IHRoaXMucHJvZ3JhbSgpOworCisg
ICAgaWYgKHRoaXMudG9rZW5zLmxlbmd0aCAhPT0gMCkgeworICAgICAgdGhpcy50aHJvd0Vycm9y
KCdpcyBhbiB1bmV4cGVjdGVkIHRva2VuJywgdGhpcy50b2tlbnNbMF0pOworICAgIH0KKworICAg
IHJldHVybiB2YWx1ZTsKKyAgfSwKKworICBwcm9ncmFtOiBmdW5jdGlvbigpIHsKKyAgICB2YXIg
Ym9keSA9IFtdOworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICBpZiAodGhpcy50b2tlbnMubGVu
Z3RoID4gMCAmJiAhdGhpcy5wZWVrKCd9JywgJyknLCAnOycsICddJykpCisgICAgICAgIGJvZHku
cHVzaCh0aGlzLmV4cHJlc3Npb25TdGF0ZW1lbnQoKSk7CisgICAgICBpZiAoIXRoaXMuZXhwZWN0
KCc7JykpIHsKKyAgICAgICAgcmV0dXJuIHsgdHlwZTogQVNULlByb2dyYW0sIGJvZHk6IGJvZHl9
OworICAgICAgfQorICAgIH0KKyAgfSwKKworICBleHByZXNzaW9uU3RhdGVtZW50OiBmdW5jdGlv
bigpIHsKKyAgICByZXR1cm4geyB0eXBlOiBBU1QuRXhwcmVzc2lvblN0YXRlbWVudCwgZXhwcmVz
c2lvbjogdGhpcy5maWx0ZXJDaGFpbigpIH07CisgIH0sCisKKyAgZmlsdGVyQ2hhaW46IGZ1bmN0
aW9uKCkgeworICAgIHZhciBsZWZ0ID0gdGhpcy5leHByZXNzaW9uKCk7CisgICAgdmFyIHRva2Vu
OworICAgIHdoaWxlICgodG9rZW4gPSB0aGlzLmV4cGVjdCgnfCcpKSkgeworICAgICAgbGVmdCA9
IHRoaXMuZmlsdGVyKGxlZnQpOworICAgIH0KKyAgICByZXR1cm4gbGVmdDsKKyAgfSwKKworICBl
eHByZXNzaW9uOiBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gdGhpcy5hc3NpZ25tZW50KCk7Cisg
IH0sCisKKyAgYXNzaWdubWVudDogZnVuY3Rpb24oKSB7CisgICAgdmFyIHJlc3VsdCA9IHRoaXMu
dGVybmFyeSgpOworICAgIGlmICh0aGlzLmV4cGVjdCgnPScpKSB7CisgICAgICByZXN1bHQgPSB7
IHR5cGU6IEFTVC5Bc3NpZ25tZW50RXhwcmVzc2lvbiwgbGVmdDogcmVzdWx0LCByaWdodDogdGhp
cy5hc3NpZ25tZW50KCksIG9wZXJhdG9yOiAnPSd9OworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0
OworICB9LAorCisgIHRlcm5hcnk6IGZ1bmN0aW9uKCkgeworICAgIHZhciB0ZXN0ID0gdGhpcy5s
b2dpY2FsT1IoKTsKKyAgICB2YXIgYWx0ZXJuYXRlOworICAgIHZhciBjb25zZXF1ZW50OworICAg
IGlmICh0aGlzLmV4cGVjdCgnPycpKSB7CisgICAgICBhbHRlcm5hdGUgPSB0aGlzLmV4cHJlc3Np
b24oKTsKKyAgICAgIGlmICh0aGlzLmNvbnN1bWUoJzonKSkgeworICAgICAgICBjb25zZXF1ZW50
ID0gdGhpcy5leHByZXNzaW9uKCk7CisgICAgICAgIHJldHVybiB7IHR5cGU6IEFTVC5Db25kaXRp
b25hbEV4cHJlc3Npb24sIHRlc3Q6IHRlc3QsIGFsdGVybmF0ZTogYWx0ZXJuYXRlLCBjb25zZXF1
ZW50OiBjb25zZXF1ZW50fTsKKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHRlc3Q7CisgIH0s
CisKKyAgbG9naWNhbE9SOiBmdW5jdGlvbigpIHsKKyAgICB2YXIgbGVmdCA9IHRoaXMubG9naWNh
bEFORCgpOworICAgIHdoaWxlICh0aGlzLmV4cGVjdCgnfHwnKSkgeworICAgICAgbGVmdCA9IHsg
dHlwZTogQVNULkxvZ2ljYWxFeHByZXNzaW9uLCBvcGVyYXRvcjogJ3x8JywgbGVmdDogbGVmdCwg
cmlnaHQ6IHRoaXMubG9naWNhbEFORCgpIH07CisgICAgfQorICAgIHJldHVybiBsZWZ0OworICB9
LAorCisgIGxvZ2ljYWxBTkQ6IGZ1bmN0aW9uKCkgeworICAgIHZhciBsZWZ0ID0gdGhpcy5lcXVh
bGl0eSgpOworICAgIHdoaWxlICh0aGlzLmV4cGVjdCgnJiYnKSkgeworICAgICAgbGVmdCA9IHsg
dHlwZTogQVNULkxvZ2ljYWxFeHByZXNzaW9uLCBvcGVyYXRvcjogJyYmJywgbGVmdDogbGVmdCwg
cmlnaHQ6IHRoaXMuZXF1YWxpdHkoKX07CisgICAgfQorICAgIHJldHVybiBsZWZ0OworICB9LAor
CisgIGVxdWFsaXR5OiBmdW5jdGlvbigpIHsKKyAgICB2YXIgbGVmdCA9IHRoaXMucmVsYXRpb25h
bCgpOworICAgIHZhciB0b2tlbjsKKyAgICB3aGlsZSAoKHRva2VuID0gdGhpcy5leHBlY3QoJz09
JywnIT0nLCc9PT0nLCchPT0nKSkpIHsKKyAgICAgIGxlZnQgPSB7IHR5cGU6IEFTVC5CaW5hcnlF
eHByZXNzaW9uLCBvcGVyYXRvcjogdG9rZW4udGV4dCwgbGVmdDogbGVmdCwgcmlnaHQ6IHRoaXMu
cmVsYXRpb25hbCgpIH07CisgICAgfQorICAgIHJldHVybiBsZWZ0OworICB9LAorCisgIHJlbGF0
aW9uYWw6IGZ1bmN0aW9uKCkgeworICAgIHZhciBsZWZ0ID0gdGhpcy5hZGRpdGl2ZSgpOworICAg
IHZhciB0b2tlbjsKKyAgICB3aGlsZSAoKHRva2VuID0gdGhpcy5leHBlY3QoJzwnLCAnPicsICc8
PScsICc+PScpKSkgeworICAgICAgbGVmdCA9IHsgdHlwZTogQVNULkJpbmFyeUV4cHJlc3Npb24s
IG9wZXJhdG9yOiB0b2tlbi50ZXh0LCBsZWZ0OiBsZWZ0LCByaWdodDogdGhpcy5hZGRpdGl2ZSgp
IH07CisgICAgfQorICAgIHJldHVybiBsZWZ0OworICB9LAorCisgIGFkZGl0aXZlOiBmdW5jdGlv
bigpIHsKKyAgICB2YXIgbGVmdCA9IHRoaXMubXVsdGlwbGljYXRpdmUoKTsKKyAgICB2YXIgdG9r
ZW47CisgICAgd2hpbGUgKCh0b2tlbiA9IHRoaXMuZXhwZWN0KCcrJywnLScpKSkgeworICAgICAg
bGVmdCA9IHsgdHlwZTogQVNULkJpbmFyeUV4cHJlc3Npb24sIG9wZXJhdG9yOiB0b2tlbi50ZXh0
LCBsZWZ0OiBsZWZ0LCByaWdodDogdGhpcy5tdWx0aXBsaWNhdGl2ZSgpIH07CisgICAgfQorICAg
IHJldHVybiBsZWZ0OworICB9LAorCisgIG11bHRpcGxpY2F0aXZlOiBmdW5jdGlvbigpIHsKKyAg
ICB2YXIgbGVmdCA9IHRoaXMudW5hcnkoKTsKKyAgICB2YXIgdG9rZW47CisgICAgd2hpbGUgKCh0
b2tlbiA9IHRoaXMuZXhwZWN0KCcqJywnLycsJyUnKSkpIHsKKyAgICAgIGxlZnQgPSB7IHR5cGU6
IEFTVC5CaW5hcnlFeHByZXNzaW9uLCBvcGVyYXRvcjogdG9rZW4udGV4dCwgbGVmdDogbGVmdCwg
cmlnaHQ6IHRoaXMudW5hcnkoKSB9OworICAgIH0KKyAgICByZXR1cm4gbGVmdDsKKyAgfSwKKwor
ICB1bmFyeTogZnVuY3Rpb24oKSB7CisgICAgdmFyIHRva2VuOworICAgIGlmICgodG9rZW4gPSB0
aGlzLmV4cGVjdCgnKycsICctJywgJyEnKSkpIHsKKyAgICAgIHJldHVybiB7IHR5cGU6IEFTVC5V
bmFyeUV4cHJlc3Npb24sIG9wZXJhdG9yOiB0b2tlbi50ZXh0LCBwcmVmaXg6IHRydWUsIGFyZ3Vt
ZW50OiB0aGlzLnVuYXJ5KCkgfTsKKyAgICB9IGVsc2UgeworICAgICAgcmV0dXJuIHRoaXMucHJp
bWFyeSgpOworICAgIH0KKyAgfSwKKworICBwcmltYXJ5OiBmdW5jdGlvbigpIHsKKyAgICB2YXIg
cHJpbWFyeTsKKyAgICBpZiAodGhpcy5leHBlY3QoJygnKSkgeworICAgICAgcHJpbWFyeSA9IHRo
aXMuZmlsdGVyQ2hhaW4oKTsKKyAgICAgIHRoaXMuY29uc3VtZSgnKScpOworICAgIH0gZWxzZSBp
ZiAodGhpcy5leHBlY3QoJ1snKSkgeworICAgICAgcHJpbWFyeSA9IHRoaXMuYXJyYXlEZWNsYXJh
dGlvbigpOworICAgIH0gZWxzZSBpZiAodGhpcy5leHBlY3QoJ3snKSkgeworICAgICAgcHJpbWFy
eSA9IHRoaXMub2JqZWN0KCk7CisgICAgfSBlbHNlIGlmICh0aGlzLmNvbnN0YW50cy5oYXNPd25Q
cm9wZXJ0eSh0aGlzLnBlZWsoKS50ZXh0KSkgeworICAgICAgcHJpbWFyeSA9IGNvcHkodGhpcy5j
b25zdGFudHNbdGhpcy5jb25zdW1lKCkudGV4dF0pOworICAgIH0gZWxzZSBpZiAodGhpcy5wZWVr
KCkuaWRlbnRpZmllcikgeworICAgICAgcHJpbWFyeSA9IHRoaXMuaWRlbnRpZmllcigpOworICAg
IH0gZWxzZSBpZiAodGhpcy5wZWVrKCkuY29uc3RhbnQpIHsKKyAgICAgIHByaW1hcnkgPSB0aGlz
LmNvbnN0YW50KCk7CisgICAgfSBlbHNlIHsKKyAgICAgIHRoaXMudGhyb3dFcnJvcignbm90IGEg
cHJpbWFyeSBleHByZXNzaW9uJywgdGhpcy5wZWVrKCkpOworICAgIH0KKworICAgIHZhciBuZXh0
OworICAgIHdoaWxlICgobmV4dCA9IHRoaXMuZXhwZWN0KCcoJywgJ1snLCAnLicpKSkgeworICAg
ICAgaWYgKG5leHQudGV4dCA9PT0gJygnKSB7CisgICAgICAgIHByaW1hcnkgPSB7dHlwZTogQVNU
LkNhbGxFeHByZXNzaW9uLCBjYWxsZWU6IHByaW1hcnksIGFyZ3VtZW50czogdGhpcy5wYXJzZUFy
Z3VtZW50cygpIH07CisgICAgICAgIHRoaXMuY29uc3VtZSgnKScpOworICAgICAgfSBlbHNlIGlm
IChuZXh0LnRleHQgPT09ICdbJykgeworICAgICAgICBwcmltYXJ5ID0geyB0eXBlOiBBU1QuTWVt
YmVyRXhwcmVzc2lvbiwgb2JqZWN0OiBwcmltYXJ5LCBwcm9wZXJ0eTogdGhpcy5leHByZXNzaW9u
KCksIGNvbXB1dGVkOiB0cnVlIH07CisgICAgICAgIHRoaXMuY29uc3VtZSgnXScpOworICAgICAg
fSBlbHNlIGlmIChuZXh0LnRleHQgPT09ICcuJykgeworICAgICAgICBwcmltYXJ5ID0geyB0eXBl
OiBBU1QuTWVtYmVyRXhwcmVzc2lvbiwgb2JqZWN0OiBwcmltYXJ5LCBwcm9wZXJ0eTogdGhpcy5p
ZGVudGlmaWVyKCksIGNvbXB1dGVkOiBmYWxzZSB9OworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
dGhpcy50aHJvd0Vycm9yKCdJTVBPU1NJQkxFJyk7CisgICAgICB9CisgICAgfQorICAgIHJldHVy
biBwcmltYXJ5OworICB9LAorCisgIGZpbHRlcjogZnVuY3Rpb24oYmFzZUV4cHJlc3Npb24pIHsK
KyAgICB2YXIgYXJncyA9IFtiYXNlRXhwcmVzc2lvbl07CisgICAgdmFyIHJlc3VsdCA9IHt0eXBl
OiBBU1QuQ2FsbEV4cHJlc3Npb24sIGNhbGxlZTogdGhpcy5pZGVudGlmaWVyKCksIGFyZ3VtZW50
czogYXJncywgZmlsdGVyOiB0cnVlfTsKKworICAgIHdoaWxlICh0aGlzLmV4cGVjdCgnOicpKSB7
CisgICAgICBhcmdzLnB1c2godGhpcy5leHByZXNzaW9uKCkpOworICAgIH0KKworICAgIHJldHVy
biByZXN1bHQ7CisgIH0sCisKKyAgcGFyc2VBcmd1bWVudHM6IGZ1bmN0aW9uKCkgeworICAgIHZh
ciBhcmdzID0gW107CisgICAgaWYgKHRoaXMucGVla1Rva2VuKCkudGV4dCAhPT0gJyknKSB7Cisg
ICAgICBkbyB7CisgICAgICAgIGFyZ3MucHVzaCh0aGlzLmV4cHJlc3Npb24oKSk7CisgICAgICB9
IHdoaWxlICh0aGlzLmV4cGVjdCgnLCcpKTsKKyAgICB9CisgICAgcmV0dXJuIGFyZ3M7CisgIH0s
CisKKyAgaWRlbnRpZmllcjogZnVuY3Rpb24oKSB7CisgICAgdmFyIHRva2VuID0gdGhpcy5jb25z
dW1lKCk7CisgICAgaWYgKCF0b2tlbi5pZGVudGlmaWVyKSB7CisgICAgICB0aGlzLnRocm93RXJy
b3IoJ2lzIG5vdCBhIHZhbGlkIGlkZW50aWZpZXInLCB0b2tlbik7CisgICAgfQorICAgIHJldHVy
biB7IHR5cGU6IEFTVC5JZGVudGlmaWVyLCBuYW1lOiB0b2tlbi50ZXh0IH07CisgIH0sCisKKyAg
Y29uc3RhbnQ6IGZ1bmN0aW9uKCkgeworICAgIC8vIFRPRE8gY2hlY2sgdGhhdCBpdCBpcyBhIGNv
bnN0YW50CisgICAgcmV0dXJuIHsgdHlwZTogQVNULkxpdGVyYWwsIHZhbHVlOiB0aGlzLmNvbnN1
bWUoKS52YWx1ZSB9OworICB9LAorCisgIGFycmF5RGVjbGFyYXRpb246IGZ1bmN0aW9uKCkgewor
ICAgIHZhciBlbGVtZW50cyA9IFtdOworICAgIGlmICh0aGlzLnBlZWtUb2tlbigpLnRleHQgIT09
ICddJykgeworICAgICAgZG8geworICAgICAgICBpZiAodGhpcy5wZWVrKCddJykpIHsKKyAgICAg
ICAgICAvLyBTdXBwb3J0IHRyYWlsaW5nIGNvbW1hcyBwZXIgRVM1LjEuCisgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgICAgZWxlbWVudHMucHVzaCh0aGlzLmV4cHJlc3Npb24oKSk7
CisgICAgICB9IHdoaWxlICh0aGlzLmV4cGVjdCgnLCcpKTsKKyAgICB9CisgICAgdGhpcy5jb25z
dW1lKCddJyk7CisKKyAgICByZXR1cm4geyB0eXBlOiBBU1QuQXJyYXlFeHByZXNzaW9uLCBlbGVt
ZW50czogZWxlbWVudHMgfTsKKyAgfSwKKworICBvYmplY3Q6IGZ1bmN0aW9uKCkgeworICAgIHZh
ciBwcm9wZXJ0aWVzID0gW10sIHByb3BlcnR5OworICAgIGlmICh0aGlzLnBlZWtUb2tlbigpLnRl
eHQgIT09ICd9JykgeworICAgICAgZG8geworICAgICAgICBpZiAodGhpcy5wZWVrKCd9JykpIHsK
KyAgICAgICAgICAvLyBTdXBwb3J0IHRyYWlsaW5nIGNvbW1hcyBwZXIgRVM1LjEuCisgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgcHJvcGVydHkgPSB7dHlwZTogQVNULlByb3Bl
cnR5LCBraW5kOiAnaW5pdCd9OworICAgICAgICBpZiAodGhpcy5wZWVrKCkuY29uc3RhbnQpIHsK
KyAgICAgICAgICBwcm9wZXJ0eS5rZXkgPSB0aGlzLmNvbnN0YW50KCk7CisgICAgICAgIH0gZWxz
ZSBpZiAodGhpcy5wZWVrKCkuaWRlbnRpZmllcikgeworICAgICAgICAgIHByb3BlcnR5LmtleSA9
IHRoaXMuaWRlbnRpZmllcigpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIHRoaXMudGhy
b3dFcnJvcigiaW52YWxpZCBrZXkiLCB0aGlzLnBlZWsoKSk7CisgICAgICAgIH0KKyAgICAgICAg
dGhpcy5jb25zdW1lKCc6Jyk7CisgICAgICAgIHByb3BlcnR5LnZhbHVlID0gdGhpcy5leHByZXNz
aW9uKCk7CisgICAgICAgIHByb3BlcnRpZXMucHVzaChwcm9wZXJ0eSk7CisgICAgICB9IHdoaWxl
ICh0aGlzLmV4cGVjdCgnLCcpKTsKKyAgICB9CisgICAgdGhpcy5jb25zdW1lKCd9Jyk7CisKKyAg
ICByZXR1cm4ge3R5cGU6IEFTVC5PYmplY3RFeHByZXNzaW9uLCBwcm9wZXJ0aWVzOiBwcm9wZXJ0
aWVzIH07CisgIH0sCisKKyAgdGhyb3dFcnJvcjogZnVuY3Rpb24obXNnLCB0b2tlbikgeworICAg
IHRocm93ICRwYXJzZU1pbkVycignc3ludGF4JywKKyAgICAgICAgJ1N5bnRheCBFcnJvcjogVG9r
ZW4gXCd7MH1cJyB7MX0gYXQgY29sdW1uIHsyfSBvZiB0aGUgZXhwcmVzc2lvbiBbezN9XSBzdGFy
dGluZyBhdCBbezR9XS4nLAorICAgICAgICAgIHRva2VuLnRleHQsIG1zZywgKHRva2VuLmluZGV4
ICsgMSksIHRoaXMudGV4dCwgdGhpcy50ZXh0LnN1YnN0cmluZyh0b2tlbi5pbmRleCkpOworICB9
LAorCisgIGNvbnN1bWU6IGZ1bmN0aW9uKGUxKSB7CisgICAgaWYgKHRoaXMudG9rZW5zLmxlbmd0
aCA9PT0gMCkgeworICAgICAgdGhyb3cgJHBhcnNlTWluRXJyKCd1ZW9lJywgJ1VuZXhwZWN0ZWQg
ZW5kIG9mIGV4cHJlc3Npb246IHswfScsIHRoaXMudGV4dCk7CisgICAgfQorCisgICAgdmFyIHRv
a2VuID0gdGhpcy5leHBlY3QoZTEpOworICAgIGlmICghdG9rZW4pIHsKKyAgICAgIHRoaXMudGhy
b3dFcnJvcignaXMgdW5leHBlY3RlZCwgZXhwZWN0aW5nIFsnICsgZTEgKyAnXScsIHRoaXMucGVl
aygpKTsKKyAgICB9CisgICAgcmV0dXJuIHRva2VuOworICB9LAorCisgIHBlZWtUb2tlbjogZnVu
Y3Rpb24oKSB7CisgICAgaWYgKHRoaXMudG9rZW5zLmxlbmd0aCA9PT0gMCkgeworICAgICAgdGhy
b3cgJHBhcnNlTWluRXJyKCd1ZW9lJywgJ1VuZXhwZWN0ZWQgZW5kIG9mIGV4cHJlc3Npb246IHsw
fScsIHRoaXMudGV4dCk7CisgICAgfQorICAgIHJldHVybiB0aGlzLnRva2Vuc1swXTsKKyAgfSwK
KworICBwZWVrOiBmdW5jdGlvbihlMSwgZTIsIGUzLCBlNCkgeworICAgIHJldHVybiB0aGlzLnBl
ZWtBaGVhZCgwLCBlMSwgZTIsIGUzLCBlNCk7CisgIH0sCisKKyAgcGVla0FoZWFkOiBmdW5jdGlv
bihpLCBlMSwgZTIsIGUzLCBlNCkgeworICAgIGlmICh0aGlzLnRva2Vucy5sZW5ndGggPiBpKSB7
CisgICAgICB2YXIgdG9rZW4gPSB0aGlzLnRva2Vuc1tpXTsKKyAgICAgIHZhciB0ID0gdG9rZW4u
dGV4dDsKKyAgICAgIGlmICh0ID09PSBlMSB8fCB0ID09PSBlMiB8fCB0ID09PSBlMyB8fCB0ID09
PSBlNCB8fAorICAgICAgICAgICghZTEgJiYgIWUyICYmICFlMyAmJiAhZTQpKSB7CisgICAgICAg
IHJldHVybiB0b2tlbjsKKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworICB9LAor
CisgIGV4cGVjdDogZnVuY3Rpb24oZTEsIGUyLCBlMywgZTQpIHsKKyAgICB2YXIgdG9rZW4gPSB0
aGlzLnBlZWsoZTEsIGUyLCBlMywgZTQpOworICAgIGlmICh0b2tlbikgeworICAgICAgdGhpcy50
b2tlbnMuc2hpZnQoKTsKKyAgICAgIHJldHVybiB0b2tlbjsKKyAgICB9CisgICAgcmV0dXJuIGZh
bHNlOworICB9LAorCisKKyAgLyogYHVuZGVmaW5lZGAgaXMgbm90IGEgY29uc3RhbnQsIGl0IGlz
IGFuIGlkZW50aWZpZXIsCisgICAqIGJ1dCB1c2luZyBpdCBhcyBhbiBpZGVudGlmaWVyIGlzIG5v
dCBzdXBwb3J0ZWQKKyAgICovCisgIGNvbnN0YW50czogeworICAgICd0cnVlJzogeyB0eXBlOiBB
U1QuTGl0ZXJhbCwgdmFsdWU6IHRydWUgfSwKKyAgICAnZmFsc2UnOiB7IHR5cGU6IEFTVC5MaXRl
cmFsLCB2YWx1ZTogZmFsc2UgfSwKKyAgICAnbnVsbCc6IHsgdHlwZTogQVNULkxpdGVyYWwsIHZh
bHVlOiBudWxsIH0sCisgICAgJ3VuZGVmaW5lZCc6IHt0eXBlOiBBU1QuTGl0ZXJhbCwgdmFsdWU6
IHVuZGVmaW5lZCB9LAorICAgICd0aGlzJzoge3R5cGU6IEFTVC5UaGlzRXhwcmVzc2lvbiB9Cisg
IH0KK307CisKK2Z1bmN0aW9uIGlmRGVmaW5lZCh2LCBkKSB7CisgIHJldHVybiB0eXBlb2YgdiAh
PT0gJ3VuZGVmaW5lZCcgPyB2IDogZDsKK30KKworZnVuY3Rpb24gcGx1c0ZuKGwsIHIpIHsKKyAg
aWYgKHR5cGVvZiBsID09PSAndW5kZWZpbmVkJykgcmV0dXJuIHI7CisgIGlmICh0eXBlb2YgciA9
PT0gJ3VuZGVmaW5lZCcpIHJldHVybiBsOworICByZXR1cm4gbCArIHI7Cit9CisKK2Z1bmN0aW9u
IGlzU3RhdGVsZXNzKCRmaWx0ZXIsIGZpbHRlck5hbWUpIHsKKyAgdmFyIGZuID0gJGZpbHRlcihm
aWx0ZXJOYW1lKTsKKyAgcmV0dXJuICFmbi4kc3RhdGVmdWw7Cit9CisKK2Z1bmN0aW9uIGZpbmRD
b25zdGFudEFuZFdhdGNoRXhwcmVzc2lvbnMoYXN0LCAkZmlsdGVyKSB7CisgIHZhciBhbGxDb25z
dGFudHM7CisgIHZhciBhcmdzVG9XYXRjaDsKKyAgc3dpdGNoIChhc3QudHlwZSkgeworICBjYXNl
IEFTVC5Qcm9ncmFtOgorICAgIGFsbENvbnN0YW50cyA9IHRydWU7CisgICAgZm9yRWFjaChhc3Qu
Ym9keSwgZnVuY3Rpb24oZXhwcikgeworICAgICAgZmluZENvbnN0YW50QW5kV2F0Y2hFeHByZXNz
aW9ucyhleHByLmV4cHJlc3Npb24sICRmaWx0ZXIpOworICAgICAgYWxsQ29uc3RhbnRzID0gYWxs
Q29uc3RhbnRzICYmIGV4cHIuZXhwcmVzc2lvbi5jb25zdGFudDsKKyAgICB9KTsKKyAgICBhc3Qu
Y29uc3RhbnQgPSBhbGxDb25zdGFudHM7CisgICAgYnJlYWs7CisgIGNhc2UgQVNULkxpdGVyYWw6
CisgICAgYXN0LmNvbnN0YW50ID0gdHJ1ZTsKKyAgICBhc3QudG9XYXRjaCA9IFtdOworICAgIGJy
ZWFrOworICBjYXNlIEFTVC5VbmFyeUV4cHJlc3Npb246CisgICAgZmluZENvbnN0YW50QW5kV2F0
Y2hFeHByZXNzaW9ucyhhc3QuYXJndW1lbnQsICRmaWx0ZXIpOworICAgIGFzdC5jb25zdGFudCA9
IGFzdC5hcmd1bWVudC5jb25zdGFudDsKKyAgICBhc3QudG9XYXRjaCA9IGFzdC5hcmd1bWVudC50
b1dhdGNoOworICAgIGJyZWFrOworICBjYXNlIEFTVC5CaW5hcnlFeHByZXNzaW9uOgorICAgIGZp
bmRDb25zdGFudEFuZFdhdGNoRXhwcmVzc2lvbnMoYXN0LmxlZnQsICRmaWx0ZXIpOworICAgIGZp
bmRDb25zdGFudEFuZFdhdGNoRXhwcmVzc2lvbnMoYXN0LnJpZ2h0LCAkZmlsdGVyKTsKKyAgICBh
c3QuY29uc3RhbnQgPSBhc3QubGVmdC5jb25zdGFudCAmJiBhc3QucmlnaHQuY29uc3RhbnQ7Cisg
ICAgYXN0LnRvV2F0Y2ggPSBhc3QubGVmdC50b1dhdGNoLmNvbmNhdChhc3QucmlnaHQudG9XYXRj
aCk7CisgICAgYnJlYWs7CisgIGNhc2UgQVNULkxvZ2ljYWxFeHByZXNzaW9uOgorICAgIGZpbmRD
b25zdGFudEFuZFdhdGNoRXhwcmVzc2lvbnMoYXN0LmxlZnQsICRmaWx0ZXIpOworICAgIGZpbmRD
b25zdGFudEFuZFdhdGNoRXhwcmVzc2lvbnMoYXN0LnJpZ2h0LCAkZmlsdGVyKTsKKyAgICBhc3Qu
Y29uc3RhbnQgPSBhc3QubGVmdC5jb25zdGFudCAmJiBhc3QucmlnaHQuY29uc3RhbnQ7CisgICAg
YXN0LnRvV2F0Y2ggPSBhc3QuY29uc3RhbnQgPyBbXSA6IFthc3RdOworICAgIGJyZWFrOworICBj
YXNlIEFTVC5Db25kaXRpb25hbEV4cHJlc3Npb246CisgICAgZmluZENvbnN0YW50QW5kV2F0Y2hF
eHByZXNzaW9ucyhhc3QudGVzdCwgJGZpbHRlcik7CisgICAgZmluZENvbnN0YW50QW5kV2F0Y2hF
eHByZXNzaW9ucyhhc3QuYWx0ZXJuYXRlLCAkZmlsdGVyKTsKKyAgICBmaW5kQ29uc3RhbnRBbmRX
YXRjaEV4cHJlc3Npb25zKGFzdC5jb25zZXF1ZW50LCAkZmlsdGVyKTsKKyAgICBhc3QuY29uc3Rh
bnQgPSBhc3QudGVzdC5jb25zdGFudCAmJiBhc3QuYWx0ZXJuYXRlLmNvbnN0YW50ICYmIGFzdC5j
b25zZXF1ZW50LmNvbnN0YW50OworICAgIGFzdC50b1dhdGNoID0gYXN0LmNvbnN0YW50ID8gW10g
OiBbYXN0XTsKKyAgICBicmVhazsKKyAgY2FzZSBBU1QuSWRlbnRpZmllcjoKKyAgICBhc3QuY29u
c3RhbnQgPSBmYWxzZTsKKyAgICBhc3QudG9XYXRjaCA9IFthc3RdOworICAgIGJyZWFrOworICBj
YXNlIEFTVC5NZW1iZXJFeHByZXNzaW9uOgorICAgIGZpbmRDb25zdGFudEFuZFdhdGNoRXhwcmVz
c2lvbnMoYXN0Lm9iamVjdCwgJGZpbHRlcik7CisgICAgaWYgKGFzdC5jb21wdXRlZCkgeworICAg
ICAgZmluZENvbnN0YW50QW5kV2F0Y2hFeHByZXNzaW9ucyhhc3QucHJvcGVydHksICRmaWx0ZXIp
OworICAgIH0KKyAgICBhc3QuY29uc3RhbnQgPSBhc3Qub2JqZWN0LmNvbnN0YW50ICYmICghYXN0
LmNvbXB1dGVkIHx8IGFzdC5wcm9wZXJ0eS5jb25zdGFudCk7CisgICAgYXN0LnRvV2F0Y2ggPSBb
YXN0XTsKKyAgICBicmVhazsKKyAgY2FzZSBBU1QuQ2FsbEV4cHJlc3Npb246CisgICAgYWxsQ29u
c3RhbnRzID0gYXN0LmZpbHRlciA/IGlzU3RhdGVsZXNzKCRmaWx0ZXIsIGFzdC5jYWxsZWUubmFt
ZSkgOiBmYWxzZTsKKyAgICBhcmdzVG9XYXRjaCA9IFtdOworICAgIGZvckVhY2goYXN0LmFyZ3Vt
ZW50cywgZnVuY3Rpb24oZXhwcikgeworICAgICAgZmluZENvbnN0YW50QW5kV2F0Y2hFeHByZXNz
aW9ucyhleHByLCAkZmlsdGVyKTsKKyAgICAgIGFsbENvbnN0YW50cyA9IGFsbENvbnN0YW50cyAm
JiBleHByLmNvbnN0YW50OworICAgICAgaWYgKCFleHByLmNvbnN0YW50KSB7CisgICAgICAgIGFy
Z3NUb1dhdGNoLnB1c2guYXBwbHkoYXJnc1RvV2F0Y2gsIGV4cHIudG9XYXRjaCk7CisgICAgICB9
CisgICAgfSk7CisgICAgYXN0LmNvbnN0YW50ID0gYWxsQ29uc3RhbnRzOworICAgIGFzdC50b1dh
dGNoID0gYXN0LmZpbHRlciAmJiBpc1N0YXRlbGVzcygkZmlsdGVyLCBhc3QuY2FsbGVlLm5hbWUp
ID8gYXJnc1RvV2F0Y2ggOiBbYXN0XTsKKyAgICBicmVhazsKKyAgY2FzZSBBU1QuQXNzaWdubWVu
dEV4cHJlc3Npb246CisgICAgZmluZENvbnN0YW50QW5kV2F0Y2hFeHByZXNzaW9ucyhhc3QubGVm
dCwgJGZpbHRlcik7CisgICAgZmluZENvbnN0YW50QW5kV2F0Y2hFeHByZXNzaW9ucyhhc3Qucmln
aHQsICRmaWx0ZXIpOworICAgIGFzdC5jb25zdGFudCA9IGFzdC5sZWZ0LmNvbnN0YW50ICYmIGFz
dC5yaWdodC5jb25zdGFudDsKKyAgICBhc3QudG9XYXRjaCA9IFthc3RdOworICAgIGJyZWFrOwor
ICBjYXNlIEFTVC5BcnJheUV4cHJlc3Npb246CisgICAgYWxsQ29uc3RhbnRzID0gdHJ1ZTsKKyAg
ICBhcmdzVG9XYXRjaCA9IFtdOworICAgIGZvckVhY2goYXN0LmVsZW1lbnRzLCBmdW5jdGlvbihl
eHByKSB7CisgICAgICBmaW5kQ29uc3RhbnRBbmRXYXRjaEV4cHJlc3Npb25zKGV4cHIsICRmaWx0
ZXIpOworICAgICAgYWxsQ29uc3RhbnRzID0gYWxsQ29uc3RhbnRzICYmIGV4cHIuY29uc3RhbnQ7
CisgICAgICBpZiAoIWV4cHIuY29uc3RhbnQpIHsKKyAgICAgICAgYXJnc1RvV2F0Y2gucHVzaC5h
cHBseShhcmdzVG9XYXRjaCwgZXhwci50b1dhdGNoKTsKKyAgICAgIH0KKyAgICB9KTsKKyAgICBh
c3QuY29uc3RhbnQgPSBhbGxDb25zdGFudHM7CisgICAgYXN0LnRvV2F0Y2ggPSBhcmdzVG9XYXRj
aDsKKyAgICBicmVhazsKKyAgY2FzZSBBU1QuT2JqZWN0RXhwcmVzc2lvbjoKKyAgICBhbGxDb25z
dGFudHMgPSB0cnVlOworICAgIGFyZ3NUb1dhdGNoID0gW107CisgICAgZm9yRWFjaChhc3QucHJv
cGVydGllcywgZnVuY3Rpb24ocHJvcGVydHkpIHsKKyAgICAgIGZpbmRDb25zdGFudEFuZFdhdGNo
RXhwcmVzc2lvbnMocHJvcGVydHkudmFsdWUsICRmaWx0ZXIpOworICAgICAgYWxsQ29uc3RhbnRz
ID0gYWxsQ29uc3RhbnRzICYmIHByb3BlcnR5LnZhbHVlLmNvbnN0YW50OworICAgICAgaWYgKCFw
cm9wZXJ0eS52YWx1ZS5jb25zdGFudCkgeworICAgICAgICBhcmdzVG9XYXRjaC5wdXNoLmFwcGx5
KGFyZ3NUb1dhdGNoLCBwcm9wZXJ0eS52YWx1ZS50b1dhdGNoKTsKKyAgICAgIH0KKyAgICB9KTsK
KyAgICBhc3QuY29uc3RhbnQgPSBhbGxDb25zdGFudHM7CisgICAgYXN0LnRvV2F0Y2ggPSBhcmdz
VG9XYXRjaDsKKyAgICBicmVhazsKKyAgY2FzZSBBU1QuVGhpc0V4cHJlc3Npb246CisgICAgYXN0
LmNvbnN0YW50ID0gZmFsc2U7CisgICAgYXN0LnRvV2F0Y2ggPSBbXTsKKyAgICBicmVhazsKKyAg
fQorfQorCitmdW5jdGlvbiBnZXRJbnB1dHMoYm9keSkgeworICBpZiAoYm9keS5sZW5ndGggIT0g
MSkgcmV0dXJuOworICB2YXIgbGFzdEV4cHJlc3Npb24gPSBib2R5WzBdLmV4cHJlc3Npb247Cisg
IHZhciBjYW5kaWRhdGUgPSBsYXN0RXhwcmVzc2lvbi50b1dhdGNoOworICBpZiAoY2FuZGlkYXRl
Lmxlbmd0aCAhPT0gMSkgcmV0dXJuIGNhbmRpZGF0ZTsKKyAgcmV0dXJuIGNhbmRpZGF0ZVswXSAh
PT0gbGFzdEV4cHJlc3Npb24gPyBjYW5kaWRhdGUgOiB1bmRlZmluZWQ7Cit9CisKK2Z1bmN0aW9u
IGlzQXNzaWduYWJsZShhc3QpIHsKKyAgcmV0dXJuIGFzdC50eXBlID09PSBBU1QuSWRlbnRpZmll
ciB8fCBhc3QudHlwZSA9PT0gQVNULk1lbWJlckV4cHJlc3Npb247Cit9CisKK2Z1bmN0aW9uIGFz
c2lnbmFibGVBU1QoYXN0KSB7CisgIGlmIChhc3QuYm9keS5sZW5ndGggPT09IDEgJiYgaXNBc3Np
Z25hYmxlKGFzdC5ib2R5WzBdLmV4cHJlc3Npb24pKSB7CisgICAgcmV0dXJuIHt0eXBlOiBBU1Qu
QXNzaWdubWVudEV4cHJlc3Npb24sIGxlZnQ6IGFzdC5ib2R5WzBdLmV4cHJlc3Npb24sIHJpZ2h0
OiB7dHlwZTogQVNULk5HVmFsdWVQYXJhbWV0ZXJ9LCBvcGVyYXRvcjogJz0nfTsKKyAgfQorfQor
CitmdW5jdGlvbiBpc0xpdGVyYWwoYXN0KSB7CisgIHJldHVybiBhc3QuYm9keS5sZW5ndGggPT09
IDAgfHwKKyAgICAgIGFzdC5ib2R5Lmxlbmd0aCA9PT0gMSAmJiAoCisgICAgICBhc3QuYm9keVsw
XS5leHByZXNzaW9uLnR5cGUgPT09IEFTVC5MaXRlcmFsIHx8CisgICAgICBhc3QuYm9keVswXS5l
eHByZXNzaW9uLnR5cGUgPT09IEFTVC5BcnJheUV4cHJlc3Npb24gfHwKKyAgICAgIGFzdC5ib2R5
WzBdLmV4cHJlc3Npb24udHlwZSA9PT0gQVNULk9iamVjdEV4cHJlc3Npb24pOworfQorCitmdW5j
dGlvbiBpc0NvbnN0YW50KGFzdCkgeworICByZXR1cm4gYXN0LmNvbnN0YW50OworfQorCitmdW5j
dGlvbiBBU1RDb21waWxlcihhc3RCdWlsZGVyLCAkZmlsdGVyKSB7CisgIHRoaXMuYXN0QnVpbGRl
ciA9IGFzdEJ1aWxkZXI7CisgIHRoaXMuJGZpbHRlciA9ICRmaWx0ZXI7Cit9CisKK0FTVENvbXBp
bGVyLnByb3RvdHlwZSA9IHsKKyAgY29tcGlsZTogZnVuY3Rpb24oZXhwcmVzc2lvbiwgZXhwZW5z
aXZlQ2hlY2tzKSB7CisgICAgdmFyIHNlbGYgPSB0aGlzOworICAgIHZhciBhc3QgPSB0aGlzLmFz
dEJ1aWxkZXIuYXN0KGV4cHJlc3Npb24pOworICAgIHRoaXMuc3RhdGUgPSB7CisgICAgICBuZXh0
SWQ6IDAsCisgICAgICBmaWx0ZXJzOiB7fSwKKyAgICAgIGV4cGVuc2l2ZUNoZWNrczogZXhwZW5z
aXZlQ2hlY2tzLAorICAgICAgZm46IHt2YXJzOiBbXSwgYm9keTogW10sIG93bjoge319LAorICAg
ICAgYXNzaWduOiB7dmFyczogW10sIGJvZHk6IFtdLCBvd246IHt9fSwKKyAgICAgIGlucHV0czog
W10KKyAgICB9OworICAgIGZpbmRDb25zdGFudEFuZFdhdGNoRXhwcmVzc2lvbnMoYXN0LCBzZWxm
LiRmaWx0ZXIpOworICAgIHZhciBleHRyYSA9ICcnOworICAgIHZhciBhc3NpZ25hYmxlOworICAg
IHRoaXMuc3RhZ2UgPSAnYXNzaWduJzsKKyAgICBpZiAoKGFzc2lnbmFibGUgPSBhc3NpZ25hYmxl
QVNUKGFzdCkpKSB7CisgICAgICB0aGlzLnN0YXRlLmNvbXB1dGluZyA9ICdhc3NpZ24nOworICAg
ICAgdmFyIHJlc3VsdCA9IHRoaXMubmV4dElkKCk7CisgICAgICB0aGlzLnJlY3Vyc2UoYXNzaWdu
YWJsZSwgcmVzdWx0KTsKKyAgICAgIGV4dHJhID0gJ2ZuLmFzc2lnbj0nICsgdGhpcy5nZW5lcmF0
ZUZ1bmN0aW9uKCdhc3NpZ24nLCAncyx2LGwnKTsKKyAgICB9CisgICAgdmFyIHRvV2F0Y2ggPSBn
ZXRJbnB1dHMoYXN0LmJvZHkpOworICAgIHNlbGYuc3RhZ2UgPSAnaW5wdXRzJzsKKyAgICBmb3JF
YWNoKHRvV2F0Y2gsIGZ1bmN0aW9uKHdhdGNoLCBrZXkpIHsKKyAgICAgIHZhciBmbktleSA9ICdm
bicgKyBrZXk7CisgICAgICBzZWxmLnN0YXRlW2ZuS2V5XSA9IHt2YXJzOiBbXSwgYm9keTogW10s
IG93bjoge319OworICAgICAgc2VsZi5zdGF0ZS5jb21wdXRpbmcgPSBmbktleTsKKyAgICAgIHZh
ciBpbnRvSWQgPSBzZWxmLm5leHRJZCgpOworICAgICAgc2VsZi5yZWN1cnNlKHdhdGNoLCBpbnRv
SWQpOworICAgICAgc2VsZi5yZXR1cm5fKGludG9JZCk7CisgICAgICBzZWxmLnN0YXRlLmlucHV0
cy5wdXNoKGZuS2V5KTsKKyAgICAgIHdhdGNoLndhdGNoSWQgPSBrZXk7CisgICAgfSk7CisgICAg
dGhpcy5zdGF0ZS5jb21wdXRpbmcgPSAnZm4nOworICAgIHRoaXMuc3RhZ2UgPSAnbWFpbic7Cisg
ICAgdGhpcy5yZWN1cnNlKGFzdCk7CisgICAgdmFyIGZuU3RyaW5nID0KKyAgICAgIC8vIFRoZSBi
dWlsZCBhbmQgbWluaWZpY2F0aW9uIHN0ZXBzIHJlbW92ZSB0aGUgc3RyaW5nICJ1c2Ugc3RyaWN0
IiBmcm9tIHRoZSBjb2RlLCBidXQgdGhpcyBpcyBkb25lIHVzaW5nIGEgcmVnZXguCisgICAgICAv
LyBUaGlzIGlzIGEgd29ya2Fyb3VuZCBmb3IgdGhpcyB1bnRpbCB3ZSBkbyBhIGJldHRlciBqb2Ig
YXQgb25seSByZW1vdmluZyB0aGUgcHJlZml4IG9ubHkgd2hlbiB3ZSBzaG91bGQuCisgICAgICAn
IicgKyB0aGlzLlVTRSArICcgJyArIHRoaXMuU1RSSUNUICsgJyI7XG4nICsKKyAgICAgIHRoaXMu
ZmlsdGVyUHJlZml4KCkgKworICAgICAgJ3ZhciBmbj0nICsgdGhpcy5nZW5lcmF0ZUZ1bmN0aW9u
KCdmbicsICdzLGwsYSxpJykgKworICAgICAgZXh0cmEgKworICAgICAgdGhpcy53YXRjaEZucygp
ICsKKyAgICAgICdyZXR1cm4gZm47JzsKKworICAgIC8qIGpzaGludCAtVzA1NCAqLworICAgIHZh
ciBmbiA9IChuZXcgRnVuY3Rpb24oJyRmaWx0ZXInLAorICAgICAgICAnZW5zdXJlU2FmZU1lbWJl
ck5hbWUnLAorICAgICAgICAnZW5zdXJlU2FmZU9iamVjdCcsCisgICAgICAgICdlbnN1cmVTYWZl
RnVuY3Rpb24nLAorICAgICAgICAnaWZEZWZpbmVkJywKKyAgICAgICAgJ3BsdXMnLAorICAgICAg
ICAndGV4dCcsCisgICAgICAgIGZuU3RyaW5nKSkoCisgICAgICAgICAgdGhpcy4kZmlsdGVyLAor
ICAgICAgICAgIGVuc3VyZVNhZmVNZW1iZXJOYW1lLAorICAgICAgICAgIGVuc3VyZVNhZmVPYmpl
Y3QsCisgICAgICAgICAgZW5zdXJlU2FmZUZ1bmN0aW9uLAorICAgICAgICAgIGlmRGVmaW5lZCwK
KyAgICAgICAgICBwbHVzRm4sCisgICAgICAgICAgZXhwcmVzc2lvbik7CisgICAgLyoganNoaW50
ICtXMDU0ICovCisgICAgdGhpcy5zdGF0ZSA9IHRoaXMuc3RhZ2UgPSB1bmRlZmluZWQ7CisgICAg
Zm4ubGl0ZXJhbCA9IGlzTGl0ZXJhbChhc3QpOworICAgIGZuLmNvbnN0YW50ID0gaXNDb25zdGFu
dChhc3QpOworICAgIHJldHVybiBmbjsKKyAgfSwKKworICBVU0U6ICd1c2UnLAorCisgIFNUUklD
VDogJ3N0cmljdCcsCisKKyAgd2F0Y2hGbnM6IGZ1bmN0aW9uKCkgeworICAgIHZhciByZXN1bHQg
PSBbXTsKKyAgICB2YXIgZm5zID0gdGhpcy5zdGF0ZS5pbnB1dHM7CisgICAgdmFyIHNlbGYgPSB0
aGlzOworICAgIGZvckVhY2goZm5zLCBmdW5jdGlvbihuYW1lKSB7CisgICAgICByZXN1bHQucHVz
aCgndmFyICcgKyBuYW1lICsgJz0nICsgc2VsZi5nZW5lcmF0ZUZ1bmN0aW9uKG5hbWUsICdzJykp
OworICAgIH0pOworICAgIGlmIChmbnMubGVuZ3RoKSB7CisgICAgICByZXN1bHQucHVzaCgnZm4u
aW5wdXRzPVsnICsgZm5zLmpvaW4oJywnKSArICddOycpOworICAgIH0KKyAgICByZXR1cm4gcmVz
dWx0LmpvaW4oJycpOworICB9LAorCisgIGdlbmVyYXRlRnVuY3Rpb246IGZ1bmN0aW9uKG5hbWUs
IHBhcmFtcykgeworICAgIHJldHVybiAnZnVuY3Rpb24oJyArIHBhcmFtcyArICcpeycgKworICAg
ICAgICB0aGlzLnZhcnNQcmVmaXgobmFtZSkgKworICAgICAgICB0aGlzLmJvZHkobmFtZSkgKwor
ICAgICAgICAnfTsnOworICB9LAorCisgIGZpbHRlclByZWZpeDogZnVuY3Rpb24oKSB7CisgICAg
dmFyIHBhcnRzID0gW107CisgICAgdmFyIHNlbGYgPSB0aGlzOworICAgIGZvckVhY2godGhpcy5z
dGF0ZS5maWx0ZXJzLCBmdW5jdGlvbihpZCwgZmlsdGVyKSB7CisgICAgICBwYXJ0cy5wdXNoKGlk
ICsgJz0kZmlsdGVyKCcgKyBzZWxmLmVzY2FwZShmaWx0ZXIpICsgJyknKTsKKyAgICB9KTsKKyAg
ICBpZiAocGFydHMubGVuZ3RoKSByZXR1cm4gJ3ZhciAnICsgcGFydHMuam9pbignLCcpICsgJzsn
OworICAgIHJldHVybiAnJzsKKyAgfSwKKworICB2YXJzUHJlZml4OiBmdW5jdGlvbihzZWN0aW9u
KSB7CisgICAgcmV0dXJuIHRoaXMuc3RhdGVbc2VjdGlvbl0udmFycy5sZW5ndGggPyAndmFyICcg
KyB0aGlzLnN0YXRlW3NlY3Rpb25dLnZhcnMuam9pbignLCcpICsgJzsnIDogJyc7CisgIH0sCisK
KyAgYm9keTogZnVuY3Rpb24oc2VjdGlvbikgeworICAgIHJldHVybiB0aGlzLnN0YXRlW3NlY3Rp
b25dLmJvZHkuam9pbignJyk7CisgIH0sCisKKyAgcmVjdXJzZTogZnVuY3Rpb24oYXN0LCBpbnRv
SWQsIG5hbWVJZCwgcmVjdXJzaW9uRm4sIGNyZWF0ZSwgc2tpcFdhdGNoSWRDaGVjaykgeworICAg
IHZhciBsZWZ0LCByaWdodCwgc2VsZiA9IHRoaXMsIGFyZ3MsIGV4cHJlc3Npb247CisgICAgcmVj
dXJzaW9uRm4gPSByZWN1cnNpb25GbiB8fCBub29wOworICAgIGlmICghc2tpcFdhdGNoSWRDaGVj
ayAmJiBpc0RlZmluZWQoYXN0LndhdGNoSWQpKSB7CisgICAgICBpbnRvSWQgPSBpbnRvSWQgfHwg
dGhpcy5uZXh0SWQoKTsKKyAgICAgIHRoaXMuaWZfKCdpJywKKyAgICAgICAgdGhpcy5sYXp5QXNz
aWduKGludG9JZCwgdGhpcy5jb21wdXRlZE1lbWJlcignaScsIGFzdC53YXRjaElkKSksCisgICAg
ICAgIHRoaXMubGF6eVJlY3Vyc2UoYXN0LCBpbnRvSWQsIG5hbWVJZCwgcmVjdXJzaW9uRm4sIGNy
ZWF0ZSwgdHJ1ZSkKKyAgICAgICk7CisgICAgICByZXR1cm47CisgICAgfQorICAgIHN3aXRjaCAo
YXN0LnR5cGUpIHsKKyAgICBjYXNlIEFTVC5Qcm9ncmFtOgorICAgICAgZm9yRWFjaChhc3QuYm9k
eSwgZnVuY3Rpb24oZXhwcmVzc2lvbiwgcG9zKSB7CisgICAgICAgIHNlbGYucmVjdXJzZShleHBy
ZXNzaW9uLmV4cHJlc3Npb24sIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBmdW5jdGlvbihleHByKSB7
IHJpZ2h0ID0gZXhwcjsgfSk7CisgICAgICAgIGlmIChwb3MgIT09IGFzdC5ib2R5Lmxlbmd0aCAt
IDEpIHsKKyAgICAgICAgICBzZWxmLmN1cnJlbnQoKS5ib2R5LnB1c2gocmlnaHQsICc7Jyk7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgc2VsZi5yZXR1cm5fKHJpZ2h0KTsKKyAgICAgICAg
fQorICAgICAgfSk7CisgICAgICBicmVhazsKKyAgICBjYXNlIEFTVC5MaXRlcmFsOgorICAgICAg
ZXhwcmVzc2lvbiA9IHRoaXMuZXNjYXBlKGFzdC52YWx1ZSk7CisgICAgICB0aGlzLmFzc2lnbihp
bnRvSWQsIGV4cHJlc3Npb24pOworICAgICAgcmVjdXJzaW9uRm4oZXhwcmVzc2lvbik7CisgICAg
ICBicmVhazsKKyAgICBjYXNlIEFTVC5VbmFyeUV4cHJlc3Npb246CisgICAgICB0aGlzLnJlY3Vy
c2UoYXN0LmFyZ3VtZW50LCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgZnVuY3Rpb24oZXhwcikgeyBy
aWdodCA9IGV4cHI7IH0pOworICAgICAgZXhwcmVzc2lvbiA9IGFzdC5vcGVyYXRvciArICcoJyAr
IHRoaXMuaWZEZWZpbmVkKHJpZ2h0LCAwKSArICcpJzsKKyAgICAgIHRoaXMuYXNzaWduKGludG9J
ZCwgZXhwcmVzc2lvbik7CisgICAgICByZWN1cnNpb25GbihleHByZXNzaW9uKTsKKyAgICAgIGJy
ZWFrOworICAgIGNhc2UgQVNULkJpbmFyeUV4cHJlc3Npb246CisgICAgICB0aGlzLnJlY3Vyc2Uo
YXN0LmxlZnQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBmdW5jdGlvbihleHByKSB7IGxlZnQgPSBl
eHByOyB9KTsKKyAgICAgIHRoaXMucmVjdXJzZShhc3QucmlnaHQsIHVuZGVmaW5lZCwgdW5kZWZp
bmVkLCBmdW5jdGlvbihleHByKSB7IHJpZ2h0ID0gZXhwcjsgfSk7CisgICAgICBpZiAoYXN0Lm9w
ZXJhdG9yID09PSAnKycpIHsKKyAgICAgICAgZXhwcmVzc2lvbiA9IHRoaXMucGx1cyhsZWZ0LCBy
aWdodCk7CisgICAgICB9IGVsc2UgaWYgKGFzdC5vcGVyYXRvciA9PT0gJy0nKSB7CisgICAgICAg
IGV4cHJlc3Npb24gPSB0aGlzLmlmRGVmaW5lZChsZWZ0LCAwKSArIGFzdC5vcGVyYXRvciArIHRo
aXMuaWZEZWZpbmVkKHJpZ2h0LCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGV4cHJlc3Np
b24gPSAnKCcgKyBsZWZ0ICsgJyknICsgYXN0Lm9wZXJhdG9yICsgJygnICsgcmlnaHQgKyAnKSc7
CisgICAgICB9CisgICAgICB0aGlzLmFzc2lnbihpbnRvSWQsIGV4cHJlc3Npb24pOworICAgICAg
cmVjdXJzaW9uRm4oZXhwcmVzc2lvbik7CisgICAgICBicmVhazsKKyAgICBjYXNlIEFTVC5Mb2dp
Y2FsRXhwcmVzc2lvbjoKKyAgICAgIGludG9JZCA9IGludG9JZCB8fCB0aGlzLm5leHRJZCgpOwor
ICAgICAgc2VsZi5yZWN1cnNlKGFzdC5sZWZ0LCBpbnRvSWQpOworICAgICAgc2VsZi5pZl8oYXN0
Lm9wZXJhdG9yID09PSAnJiYnID8gaW50b0lkIDogc2VsZi5ub3QoaW50b0lkKSwgc2VsZi5sYXp5
UmVjdXJzZShhc3QucmlnaHQsIGludG9JZCkpOworICAgICAgcmVjdXJzaW9uRm4oaW50b0lkKTsK
KyAgICAgIGJyZWFrOworICAgIGNhc2UgQVNULkNvbmRpdGlvbmFsRXhwcmVzc2lvbjoKKyAgICAg
IGludG9JZCA9IGludG9JZCB8fCB0aGlzLm5leHRJZCgpOworICAgICAgc2VsZi5yZWN1cnNlKGFz
dC50ZXN0LCBpbnRvSWQpOworICAgICAgc2VsZi5pZl8oaW50b0lkLCBzZWxmLmxhenlSZWN1cnNl
KGFzdC5hbHRlcm5hdGUsIGludG9JZCksIHNlbGYubGF6eVJlY3Vyc2UoYXN0LmNvbnNlcXVlbnQs
IGludG9JZCkpOworICAgICAgcmVjdXJzaW9uRm4oaW50b0lkKTsKKyAgICAgIGJyZWFrOworICAg
IGNhc2UgQVNULklkZW50aWZpZXI6CisgICAgICBpbnRvSWQgPSBpbnRvSWQgfHwgdGhpcy5uZXh0
SWQoKTsKKyAgICAgIGlmIChuYW1lSWQpIHsKKyAgICAgICAgbmFtZUlkLmNvbnRleHQgPSBzZWxm
LnN0YWdlID09PSAnaW5wdXRzJyA/ICdzJyA6IHRoaXMuYXNzaWduKHRoaXMubmV4dElkKCksIHRo
aXMuZ2V0SGFzT3duUHJvcGVydHkoJ2wnLCBhc3QubmFtZSkgKyAnP2w6cycpOworICAgICAgICBu
YW1lSWQuY29tcHV0ZWQgPSBmYWxzZTsKKyAgICAgICAgbmFtZUlkLm5hbWUgPSBhc3QubmFtZTsK
KyAgICAgIH0KKyAgICAgIGVuc3VyZVNhZmVNZW1iZXJOYW1lKGFzdC5uYW1lKTsKKyAgICAgIHNl
bGYuaWZfKHNlbGYuc3RhZ2UgPT09ICdpbnB1dHMnIHx8IHNlbGYubm90KHNlbGYuZ2V0SGFzT3du
UHJvcGVydHkoJ2wnLCBhc3QubmFtZSkpLAorICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICBzZWxmLmlmXyhzZWxmLnN0YWdlID09PSAnaW5wdXRzJyB8fCAncycsIGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgaWYgKGNyZWF0ZSAmJiBjcmVhdGUgIT09IDEpIHsKKyAgICAgICAgICAgICAg
c2VsZi5pZl8oCisgICAgICAgICAgICAgICAgc2VsZi5ub3Qoc2VsZi5ub25Db21wdXRlZE1lbWJl
cigncycsIGFzdC5uYW1lKSksCisgICAgICAgICAgICAgICAgc2VsZi5sYXp5QXNzaWduKHNlbGYu
bm9uQ29tcHV0ZWRNZW1iZXIoJ3MnLCBhc3QubmFtZSksICd7fScpKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIHNlbGYuYXNzaWduKGludG9JZCwgc2VsZi5ub25Db21wdXRlZE1lbWJlcign
cycsIGFzdC5uYW1lKSk7CisgICAgICAgICAgfSk7CisgICAgICAgIH0sIGludG9JZCAmJiBzZWxm
LmxhenlBc3NpZ24oaW50b0lkLCBzZWxmLm5vbkNvbXB1dGVkTWVtYmVyKCdsJywgYXN0Lm5hbWUp
KQorICAgICAgICApOworICAgICAgaWYgKHNlbGYuc3RhdGUuZXhwZW5zaXZlQ2hlY2tzIHx8IGlz
UG9zc2libHlEYW5nZXJvdXNNZW1iZXJOYW1lKGFzdC5uYW1lKSkgeworICAgICAgICBzZWxmLmFk
ZEVuc3VyZVNhZmVPYmplY3QoaW50b0lkKTsKKyAgICAgIH0KKyAgICAgIHJlY3Vyc2lvbkZuKGlu
dG9JZCk7CisgICAgICBicmVhazsKKyAgICBjYXNlIEFTVC5NZW1iZXJFeHByZXNzaW9uOgorICAg
ICAgbGVmdCA9IG5hbWVJZCAmJiAobmFtZUlkLmNvbnRleHQgPSB0aGlzLm5leHRJZCgpKSB8fCB0
aGlzLm5leHRJZCgpOworICAgICAgaW50b0lkID0gaW50b0lkIHx8IHRoaXMubmV4dElkKCk7Cisg
ICAgICBzZWxmLnJlY3Vyc2UoYXN0Lm9iamVjdCwgbGVmdCwgdW5kZWZpbmVkLCBmdW5jdGlvbigp
IHsKKyAgICAgICAgc2VsZi5pZl8oc2VsZi5ub3ROdWxsKGxlZnQpLCBmdW5jdGlvbigpIHsKKyAg
ICAgICAgICBpZiAoYXN0LmNvbXB1dGVkKSB7CisgICAgICAgICAgICByaWdodCA9IHNlbGYubmV4
dElkKCk7CisgICAgICAgICAgICBzZWxmLnJlY3Vyc2UoYXN0LnByb3BlcnR5LCByaWdodCk7Cisg
ICAgICAgICAgICBzZWxmLmFkZEVuc3VyZVNhZmVNZW1iZXJOYW1lKHJpZ2h0KTsKKyAgICAgICAg
ICAgIGlmIChjcmVhdGUgJiYgY3JlYXRlICE9PSAxKSB7CisgICAgICAgICAgICAgIHNlbGYuaWZf
KHNlbGYubm90KHNlbGYuY29tcHV0ZWRNZW1iZXIobGVmdCwgcmlnaHQpKSwgc2VsZi5sYXp5QXNz
aWduKHNlbGYuY29tcHV0ZWRNZW1iZXIobGVmdCwgcmlnaHQpLCAne30nKSk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBleHByZXNzaW9uID0gc2VsZi5lbnN1cmVTYWZlT2JqZWN0KHNlbGYu
Y29tcHV0ZWRNZW1iZXIobGVmdCwgcmlnaHQpKTsKKyAgICAgICAgICAgIHNlbGYuYXNzaWduKGlu
dG9JZCwgZXhwcmVzc2lvbik7CisgICAgICAgICAgICBpZiAobmFtZUlkKSB7CisgICAgICAgICAg
ICAgIG5hbWVJZC5jb21wdXRlZCA9IHRydWU7CisgICAgICAgICAgICAgIG5hbWVJZC5uYW1lID0g
cmlnaHQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGVu
c3VyZVNhZmVNZW1iZXJOYW1lKGFzdC5wcm9wZXJ0eS5uYW1lKTsKKyAgICAgICAgICAgIGlmIChj
cmVhdGUgJiYgY3JlYXRlICE9PSAxKSB7CisgICAgICAgICAgICAgIHNlbGYuaWZfKHNlbGYubm90
KHNlbGYubm9uQ29tcHV0ZWRNZW1iZXIobGVmdCwgYXN0LnByb3BlcnR5Lm5hbWUpKSwgc2VsZi5s
YXp5QXNzaWduKHNlbGYubm9uQ29tcHV0ZWRNZW1iZXIobGVmdCwgYXN0LnByb3BlcnR5Lm5hbWUp
LCAne30nKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBleHByZXNzaW9uID0gc2VsZi5u
b25Db21wdXRlZE1lbWJlcihsZWZ0LCBhc3QucHJvcGVydHkubmFtZSk7CisgICAgICAgICAgICBp
ZiAoc2VsZi5zdGF0ZS5leHBlbnNpdmVDaGVja3MgfHwgaXNQb3NzaWJseURhbmdlcm91c01lbWJl
ck5hbWUoYXN0LnByb3BlcnR5Lm5hbWUpKSB7CisgICAgICAgICAgICAgIGV4cHJlc3Npb24gPSBz
ZWxmLmVuc3VyZVNhZmVPYmplY3QoZXhwcmVzc2lvbik7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBzZWxmLmFzc2lnbihpbnRvSWQsIGV4cHJlc3Npb24pOworICAgICAgICAgICAgaWYgKG5h
bWVJZCkgeworICAgICAgICAgICAgICBuYW1lSWQuY29tcHV0ZWQgPSBmYWxzZTsKKyAgICAgICAg
ICAgICAgbmFtZUlkLm5hbWUgPSBhc3QucHJvcGVydHkubmFtZTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICB9CisgICAgICAgIH0sIGZ1bmN0aW9uKCkgeworICAgICAgICAgIHNlbGYuYXNzaWdu
KGludG9JZCwgJ3VuZGVmaW5lZCcpOworICAgICAgICB9KTsKKyAgICAgICAgcmVjdXJzaW9uRm4o
aW50b0lkKTsKKyAgICAgIH0sICEhY3JlYXRlKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgQVNU
LkNhbGxFeHByZXNzaW9uOgorICAgICAgaW50b0lkID0gaW50b0lkIHx8IHRoaXMubmV4dElkKCk7
CisgICAgICBpZiAoYXN0LmZpbHRlcikgeworICAgICAgICByaWdodCA9IHNlbGYuZmlsdGVyKGFz
dC5jYWxsZWUubmFtZSk7CisgICAgICAgIGFyZ3MgPSBbXTsKKyAgICAgICAgZm9yRWFjaChhc3Qu
YXJndW1lbnRzLCBmdW5jdGlvbihleHByKSB7CisgICAgICAgICAgdmFyIGFyZ3VtZW50ID0gc2Vs
Zi5uZXh0SWQoKTsKKyAgICAgICAgICBzZWxmLnJlY3Vyc2UoZXhwciwgYXJndW1lbnQpOworICAg
ICAgICAgIGFyZ3MucHVzaChhcmd1bWVudCk7CisgICAgICAgIH0pOworICAgICAgICBleHByZXNz
aW9uID0gcmlnaHQgKyAnKCcgKyBhcmdzLmpvaW4oJywnKSArICcpJzsKKyAgICAgICAgc2VsZi5h
c3NpZ24oaW50b0lkLCBleHByZXNzaW9uKTsKKyAgICAgICAgcmVjdXJzaW9uRm4oaW50b0lkKTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHJpZ2h0ID0gc2VsZi5uZXh0SWQoKTsKKyAgICAgICAg
bGVmdCA9IHt9OworICAgICAgICBhcmdzID0gW107CisgICAgICAgIHNlbGYucmVjdXJzZShhc3Qu
Y2FsbGVlLCByaWdodCwgbGVmdCwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgc2VsZi5pZl8oc2Vs
Zi5ub3ROdWxsKHJpZ2h0KSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBzZWxmLmFkZEVuc3Vy
ZVNhZmVGdW5jdGlvbihyaWdodCk7CisgICAgICAgICAgICBmb3JFYWNoKGFzdC5hcmd1bWVudHMs
IGZ1bmN0aW9uKGV4cHIpIHsKKyAgICAgICAgICAgICAgc2VsZi5yZWN1cnNlKGV4cHIsIHNlbGYu
bmV4dElkKCksIHVuZGVmaW5lZCwgZnVuY3Rpb24oYXJndW1lbnQpIHsKKyAgICAgICAgICAgICAg
ICBhcmdzLnB1c2goc2VsZi5lbnN1cmVTYWZlT2JqZWN0KGFyZ3VtZW50KSk7CisgICAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBpZiAobGVmdC5uYW1lKSB7Cisg
ICAgICAgICAgICAgIGlmICghc2VsZi5zdGF0ZS5leHBlbnNpdmVDaGVja3MpIHsKKyAgICAgICAg
ICAgICAgICBzZWxmLmFkZEVuc3VyZVNhZmVPYmplY3QobGVmdC5jb250ZXh0KTsKKyAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICBleHByZXNzaW9uID0gc2VsZi5tZW1iZXIobGVmdC5jb250
ZXh0LCBsZWZ0Lm5hbWUsIGxlZnQuY29tcHV0ZWQpICsgJygnICsgYXJncy5qb2luKCcsJykgKyAn
KSc7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICBleHByZXNzaW9uID0gcmln
aHQgKyAnKCcgKyBhcmdzLmpvaW4oJywnKSArICcpJzsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGV4cHJlc3Npb24gPSBzZWxmLmVuc3VyZVNhZmVPYmplY3QoZXhwcmVzc2lvbik7CisgICAg
ICAgICAgICBzZWxmLmFzc2lnbihpbnRvSWQsIGV4cHJlc3Npb24pOworICAgICAgICAgIH0sIGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgc2VsZi5hc3NpZ24oaW50b0lkLCAndW5kZWZpbmVkJyk7
CisgICAgICAgICAgfSk7CisgICAgICAgICAgcmVjdXJzaW9uRm4oaW50b0lkKTsKKyAgICAgICAg
fSk7CisgICAgICB9CisgICAgICBicmVhazsKKyAgICBjYXNlIEFTVC5Bc3NpZ25tZW50RXhwcmVz
c2lvbjoKKyAgICAgIHJpZ2h0ID0gdGhpcy5uZXh0SWQoKTsKKyAgICAgIGxlZnQgPSB7fTsKKyAg
ICAgIGlmICghaXNBc3NpZ25hYmxlKGFzdC5sZWZ0KSkgeworICAgICAgICB0aHJvdyAkcGFyc2VN
aW5FcnIoJ2x2YWwnLCAnVHJ5aW5nIHRvIGFzc2luZyBhIHZhbHVlIHRvIGEgbm9uIGwtdmFsdWUn
KTsKKyAgICAgIH0KKyAgICAgIHRoaXMucmVjdXJzZShhc3QubGVmdCwgdW5kZWZpbmVkLCBsZWZ0
LCBmdW5jdGlvbigpIHsKKyAgICAgICAgc2VsZi5pZl8oc2VsZi5ub3ROdWxsKGxlZnQuY29udGV4
dCksIGZ1bmN0aW9uKCkgeworICAgICAgICAgIHNlbGYucmVjdXJzZShhc3QucmlnaHQsIHJpZ2h0
KTsKKyAgICAgICAgICBzZWxmLmFkZEVuc3VyZVNhZmVPYmplY3Qoc2VsZi5tZW1iZXIobGVmdC5j
b250ZXh0LCBsZWZ0Lm5hbWUsIGxlZnQuY29tcHV0ZWQpKTsKKyAgICAgICAgICBleHByZXNzaW9u
ID0gc2VsZi5tZW1iZXIobGVmdC5jb250ZXh0LCBsZWZ0Lm5hbWUsIGxlZnQuY29tcHV0ZWQpICsg
YXN0Lm9wZXJhdG9yICsgcmlnaHQ7CisgICAgICAgICAgc2VsZi5hc3NpZ24oaW50b0lkLCBleHBy
ZXNzaW9uKTsKKyAgICAgICAgICByZWN1cnNpb25GbihpbnRvSWQgfHwgZXhwcmVzc2lvbik7Cisg
ICAgICAgIH0pOworICAgICAgfSwgMSk7CisgICAgICBicmVhazsKKyAgICBjYXNlIEFTVC5BcnJh
eUV4cHJlc3Npb246CisgICAgICBhcmdzID0gW107CisgICAgICBmb3JFYWNoKGFzdC5lbGVtZW50
cywgZnVuY3Rpb24oZXhwcikgeworICAgICAgICBzZWxmLnJlY3Vyc2UoZXhwciwgc2VsZi5uZXh0
SWQoKSwgdW5kZWZpbmVkLCBmdW5jdGlvbihhcmd1bWVudCkgeworICAgICAgICAgIGFyZ3MucHVz
aChhcmd1bWVudCk7CisgICAgICAgIH0pOworICAgICAgfSk7CisgICAgICBleHByZXNzaW9uID0g
J1snICsgYXJncy5qb2luKCcsJykgKyAnXSc7CisgICAgICB0aGlzLmFzc2lnbihpbnRvSWQsIGV4
cHJlc3Npb24pOworICAgICAgcmVjdXJzaW9uRm4oZXhwcmVzc2lvbik7CisgICAgICBicmVhazsK
KyAgICBjYXNlIEFTVC5PYmplY3RFeHByZXNzaW9uOgorICAgICAgYXJncyA9IFtdOworICAgICAg
Zm9yRWFjaChhc3QucHJvcGVydGllcywgZnVuY3Rpb24ocHJvcGVydHkpIHsKKyAgICAgICAgc2Vs
Zi5yZWN1cnNlKHByb3BlcnR5LnZhbHVlLCBzZWxmLm5leHRJZCgpLCB1bmRlZmluZWQsIGZ1bmN0
aW9uKGV4cHIpIHsKKyAgICAgICAgICBhcmdzLnB1c2goc2VsZi5lc2NhcGUoCisgICAgICAgICAg
ICAgIHByb3BlcnR5LmtleS50eXBlID09PSBBU1QuSWRlbnRpZmllciA/IHByb3BlcnR5LmtleS5u
YW1lIDoKKyAgICAgICAgICAgICAgICAoJycgKyBwcm9wZXJ0eS5rZXkudmFsdWUpKSArCisgICAg
ICAgICAgICAgICc6JyArIGV4cHIpOworICAgICAgICB9KTsKKyAgICAgIH0pOworICAgICAgZXhw
cmVzc2lvbiA9ICd7JyArIGFyZ3Muam9pbignLCcpICsgJ30nOworICAgICAgdGhpcy5hc3NpZ24o
aW50b0lkLCBleHByZXNzaW9uKTsKKyAgICAgIHJlY3Vyc2lvbkZuKGV4cHJlc3Npb24pOworICAg
ICAgYnJlYWs7CisgICAgY2FzZSBBU1QuVGhpc0V4cHJlc3Npb246CisgICAgICB0aGlzLmFzc2ln
bihpbnRvSWQsICdzJyk7CisgICAgICByZWN1cnNpb25GbigncycpOworICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBBU1QuTkdWYWx1ZVBhcmFtZXRlcjoKKyAgICAgIHRoaXMuYXNzaWduKGludG9JZCwg
J3YnKTsKKyAgICAgIHJlY3Vyc2lvbkZuKCd2Jyk7CisgICAgICBicmVhazsKKyAgICB9CisgIH0s
CisKKyAgZ2V0SGFzT3duUHJvcGVydHk6IGZ1bmN0aW9uKGVsZW1lbnQsIHByb3BlcnR5KSB7Cisg
ICAgdmFyIGtleSA9IGVsZW1lbnQgKyAnLicgKyBwcm9wZXJ0eTsKKyAgICB2YXIgb3duID0gdGhp
cy5jdXJyZW50KCkub3duOworICAgIGlmICghb3duLmhhc093blByb3BlcnR5KGtleSkpIHsKKyAg
ICAgIG93bltrZXldID0gdGhpcy5uZXh0SWQoZmFsc2UsIGVsZW1lbnQgKyAnJiYoJyArIHRoaXMu
ZXNjYXBlKHByb3BlcnR5KSArICcgaW4gJyArIGVsZW1lbnQgKyAnKScpOworICAgIH0KKyAgICBy
ZXR1cm4gb3duW2tleV07CisgIH0sCisKKyAgYXNzaWduOiBmdW5jdGlvbihpZCwgdmFsdWUpIHsK
KyAgICBpZiAoIWlkKSByZXR1cm47CisgICAgdGhpcy5jdXJyZW50KCkuYm9keS5wdXNoKGlkLCAn
PScsIHZhbHVlLCAnOycpOworICAgIHJldHVybiBpZDsKKyAgfSwKKworICBmaWx0ZXI6IGZ1bmN0
aW9uKGZpbHRlck5hbWUpIHsKKyAgICBpZiAoIXRoaXMuc3RhdGUuZmlsdGVycy5oYXNPd25Qcm9w
ZXJ0eShmaWx0ZXJOYW1lKSkgeworICAgICAgdGhpcy5zdGF0ZS5maWx0ZXJzW2ZpbHRlck5hbWVd
ID0gdGhpcy5uZXh0SWQodHJ1ZSk7CisgICAgfQorICAgIHJldHVybiB0aGlzLnN0YXRlLmZpbHRl
cnNbZmlsdGVyTmFtZV07CisgIH0sCisKKyAgaWZEZWZpbmVkOiBmdW5jdGlvbihpZCwgZGVmYXVs
dFZhbHVlKSB7CisgICAgcmV0dXJuICdpZkRlZmluZWQoJyArIGlkICsgJywnICsgdGhpcy5lc2Nh
cGUoZGVmYXVsdFZhbHVlKSArICcpJzsKKyAgfSwKKworICBwbHVzOiBmdW5jdGlvbihsZWZ0LCBy
aWdodCkgeworICAgIHJldHVybiAncGx1cygnICsgbGVmdCArICcsJyArIHJpZ2h0ICsgJyknOwor
ICB9LAorCisgIHJldHVybl86IGZ1bmN0aW9uKGlkKSB7CisgICAgdGhpcy5jdXJyZW50KCkuYm9k
eS5wdXNoKCdyZXR1cm4gJywgaWQsICc7Jyk7CisgIH0sCisKKyAgaWZfOiBmdW5jdGlvbih0ZXN0
LCBhbHRlcm5hdGUsIGNvbnNlcXVlbnQpIHsKKyAgICBpZiAodGVzdCA9PT0gdHJ1ZSkgeworICAg
ICAgYWx0ZXJuYXRlKCk7CisgICAgfSBlbHNlIHsKKyAgICAgIHZhciBib2R5ID0gdGhpcy5jdXJy
ZW50KCkuYm9keTsKKyAgICAgIGJvZHkucHVzaCgnaWYoJywgdGVzdCwgJyl7Jyk7CisgICAgICBh
bHRlcm5hdGUoKTsKKyAgICAgIGJvZHkucHVzaCgnfScpOworICAgICAgaWYgKGNvbnNlcXVlbnQp
IHsKKyAgICAgICAgYm9keS5wdXNoKCdlbHNleycpOworICAgICAgICBjb25zZXF1ZW50KCk7Cisg
ICAgICAgIGJvZHkucHVzaCgnfScpOworICAgICAgfQorICAgIH0KKyAgfSwKKworICBub3Q6IGZ1
bmN0aW9uKGV4cHJlc3Npb24pIHsKKyAgICByZXR1cm4gJyEoJyArIGV4cHJlc3Npb24gKyAnKSc7
CisgIH0sCisKKyAgbm90TnVsbDogZnVuY3Rpb24oZXhwcmVzc2lvbikgeworICAgIHJldHVybiBl
eHByZXNzaW9uICsgJyE9bnVsbCc7CisgIH0sCisKKyAgbm9uQ29tcHV0ZWRNZW1iZXI6IGZ1bmN0
aW9uKGxlZnQsIHJpZ2h0KSB7CisgICAgcmV0dXJuIGxlZnQgKyAnLicgKyByaWdodDsKKyAgfSwK
KworICBjb21wdXRlZE1lbWJlcjogZnVuY3Rpb24obGVmdCwgcmlnaHQpIHsKKyAgICByZXR1cm4g
bGVmdCArICdbJyArIHJpZ2h0ICsgJ10nOworICB9LAorCisgIG1lbWJlcjogZnVuY3Rpb24obGVm
dCwgcmlnaHQsIGNvbXB1dGVkKSB7CisgICAgaWYgKGNvbXB1dGVkKSByZXR1cm4gdGhpcy5jb21w
dXRlZE1lbWJlcihsZWZ0LCByaWdodCk7CisgICAgcmV0dXJuIHRoaXMubm9uQ29tcHV0ZWRNZW1i
ZXIobGVmdCwgcmlnaHQpOworICB9LAorCisgIGFkZEVuc3VyZVNhZmVPYmplY3Q6IGZ1bmN0aW9u
KGl0ZW0pIHsKKyAgICB0aGlzLmN1cnJlbnQoKS5ib2R5LnB1c2godGhpcy5lbnN1cmVTYWZlT2Jq
ZWN0KGl0ZW0pLCAnOycpOworICB9LAorCisgIGFkZEVuc3VyZVNhZmVNZW1iZXJOYW1lOiBmdW5j
dGlvbihpdGVtKSB7CisgICAgdGhpcy5jdXJyZW50KCkuYm9keS5wdXNoKHRoaXMuZW5zdXJlU2Fm
ZU1lbWJlck5hbWUoaXRlbSksICc7Jyk7CisgIH0sCisKKyAgYWRkRW5zdXJlU2FmZUZ1bmN0aW9u
OiBmdW5jdGlvbihpdGVtKSB7CisgICAgdGhpcy5jdXJyZW50KCkuYm9keS5wdXNoKHRoaXMuZW5z
dXJlU2FmZUZ1bmN0aW9uKGl0ZW0pLCAnOycpOworICB9LAorCisgIGVuc3VyZVNhZmVPYmplY3Q6
IGZ1bmN0aW9uKGl0ZW0pIHsKKyAgICByZXR1cm4gJ2Vuc3VyZVNhZmVPYmplY3QoJyArIGl0ZW0g
KyAnLHRleHQpJzsKKyAgfSwKKworICBlbnN1cmVTYWZlTWVtYmVyTmFtZTogZnVuY3Rpb24oaXRl
bSkgeworICAgIHJldHVybiAnZW5zdXJlU2FmZU1lbWJlck5hbWUoJyArIGl0ZW0gKyAnLHRleHQp
JzsKKyAgfSwKKworICBlbnN1cmVTYWZlRnVuY3Rpb246IGZ1bmN0aW9uKGl0ZW0pIHsKKyAgICBy
ZXR1cm4gJ2Vuc3VyZVNhZmVGdW5jdGlvbignICsgaXRlbSArICcsdGV4dCknOworICB9LAorCisg
IGxhenlSZWN1cnNlOiBmdW5jdGlvbihhc3QsIGludG9JZCwgbmFtZUlkLCByZWN1cnNpb25Gbiwg
Y3JlYXRlLCBza2lwV2F0Y2hJZENoZWNrKSB7CisgICAgdmFyIHNlbGYgPSB0aGlzOworICAgIHJl
dHVybiBmdW5jdGlvbigpIHsKKyAgICAgIHNlbGYucmVjdXJzZShhc3QsIGludG9JZCwgbmFtZUlk
LCByZWN1cnNpb25GbiwgY3JlYXRlLCBza2lwV2F0Y2hJZENoZWNrKTsKKyAgICB9OworICB9LAor
CisgIGxhenlBc3NpZ246IGZ1bmN0aW9uKGlkLCB2YWx1ZSkgeworICAgIHZhciBzZWxmID0gdGhp
czsKKyAgICByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICBzZWxmLmFzc2lnbihpZCwgdmFsdWUp
OworICAgIH07CisgIH0sCisKKyAgc3RyaW5nRXNjYXBlUmVnZXg6IC9bXiBhLXpBLVowLTldL2cs
CisKKyAgc3RyaW5nRXNjYXBlRm46IGZ1bmN0aW9uKGMpIHsKKyAgICByZXR1cm4gJ1xcdScgKyAo
JzAwMDAnICsgYy5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTQpOworICB9LAor
CisgIGVzY2FwZTogZnVuY3Rpb24odmFsdWUpIHsKKyAgICBpZiAoaXNTdHJpbmcodmFsdWUpKSBy
ZXR1cm4gIiciICsgdmFsdWUucmVwbGFjZSh0aGlzLnN0cmluZ0VzY2FwZVJlZ2V4LCB0aGlzLnN0
cmluZ0VzY2FwZUZuKSArICInIjsKKyAgICBpZiAoaXNOdW1iZXIodmFsdWUpKSByZXR1cm4gdmFs
dWUudG9TdHJpbmcoKTsKKyAgICBpZiAodmFsdWUgPT09IHRydWUpIHJldHVybiAndHJ1ZSc7Cisg
ICAgaWYgKHZhbHVlID09PSBmYWxzZSkgcmV0dXJuICdmYWxzZSc7CisgICAgaWYgKHZhbHVlID09
PSBudWxsKSByZXR1cm4gJ251bGwnOworICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmlu
ZWQnKSByZXR1cm4gJ3VuZGVmaW5lZCc7CisKKyAgICB0aHJvdyAkcGFyc2VNaW5FcnIoJ2VzYycs
ICdJTVBPU1NJQkxFJyk7CisgIH0sCisKKyAgbmV4dElkOiBmdW5jdGlvbihza2lwLCBpbml0KSB7
CisgICAgdmFyIGlkID0gJ3YnICsgKHRoaXMuc3RhdGUubmV4dElkKyspOworICAgIGlmICghc2tp
cCkgeworICAgICAgdGhpcy5jdXJyZW50KCkudmFycy5wdXNoKGlkICsgKGluaXQgPyAnPScgKyBp
bml0IDogJycpKTsKKyAgICB9CisgICAgcmV0dXJuIGlkOworICB9LAorCisgIGN1cnJlbnQ6IGZ1
bmN0aW9uKCkgeworICAgIHJldHVybiB0aGlzLnN0YXRlW3RoaXMuc3RhdGUuY29tcHV0aW5nXTsK
KyAgfQorfTsKKworCitmdW5jdGlvbiBBU1RJbnRlcnByZXRlcihhc3RCdWlsZGVyLCAkZmlsdGVy
KSB7CisgIHRoaXMuYXN0QnVpbGRlciA9IGFzdEJ1aWxkZXI7CisgIHRoaXMuJGZpbHRlciA9ICRm
aWx0ZXI7Cit9CisKK0FTVEludGVycHJldGVyLnByb3RvdHlwZSA9IHsKKyAgY29tcGlsZTogZnVu
Y3Rpb24oZXhwcmVzc2lvbiwgZXhwZW5zaXZlQ2hlY2tzKSB7CisgICAgdmFyIHNlbGYgPSB0aGlz
OworICAgIHZhciBhc3QgPSB0aGlzLmFzdEJ1aWxkZXIuYXN0KGV4cHJlc3Npb24pOworICAgIHRo
aXMuZXhwcmVzc2lvbiA9IGV4cHJlc3Npb247CisgICAgdGhpcy5leHBlbnNpdmVDaGVja3MgPSBl
eHBlbnNpdmVDaGVja3M7CisgICAgZmluZENvbnN0YW50QW5kV2F0Y2hFeHByZXNzaW9ucyhhc3Qs
IHNlbGYuJGZpbHRlcik7CisgICAgdmFyIGFzc2lnbmFibGU7CisgICAgdmFyIGFzc2lnbjsKKyAg
ICBpZiAoKGFzc2lnbmFibGUgPSBhc3NpZ25hYmxlQVNUKGFzdCkpKSB7CisgICAgICBhc3NpZ24g
PSB0aGlzLnJlY3Vyc2UoYXNzaWduYWJsZSk7CisgICAgfQorICAgIHZhciB0b1dhdGNoID0gZ2V0
SW5wdXRzKGFzdC5ib2R5KTsKKyAgICB2YXIgaW5wdXRzOworICAgIGlmICh0b1dhdGNoKSB7Cisg
ICAgICBpbnB1dHMgPSBbXTsKKyAgICAgIGZvckVhY2godG9XYXRjaCwgZnVuY3Rpb24od2F0Y2gs
IGtleSkgeworICAgICAgICB2YXIgaW5wdXQgPSBzZWxmLnJlY3Vyc2Uod2F0Y2gpOworICAgICAg
ICB3YXRjaC5pbnB1dCA9IGlucHV0OworICAgICAgICBpbnB1dHMucHVzaChpbnB1dCk7CisgICAg
ICAgIHdhdGNoLndhdGNoSWQgPSBrZXk7CisgICAgICB9KTsKKyAgICB9CisgICAgdmFyIGV4cHJl
c3Npb25zID0gW107CisgICAgZm9yRWFjaChhc3QuYm9keSwgZnVuY3Rpb24oZXhwcmVzc2lvbikg
eworICAgICAgZXhwcmVzc2lvbnMucHVzaChzZWxmLnJlY3Vyc2UoZXhwcmVzc2lvbi5leHByZXNz
aW9uKSk7CisgICAgfSk7CisgICAgdmFyIGZuID0gYXN0LmJvZHkubGVuZ3RoID09PSAwID8gZnVu
Y3Rpb24oKSB7fSA6CisgICAgICAgICAgICAgYXN0LmJvZHkubGVuZ3RoID09PSAxID8gZXhwcmVz
c2lvbnNbMF0gOgorICAgICAgICAgICAgIGZ1bmN0aW9uKHNjb3BlLCBsb2NhbHMpIHsKKyAgICAg
ICAgICAgICAgIHZhciBsYXN0VmFsdWU7CisgICAgICAgICAgICAgICBmb3JFYWNoKGV4cHJlc3Np
b25zLCBmdW5jdGlvbihleHApIHsKKyAgICAgICAgICAgICAgICAgbGFzdFZhbHVlID0gZXhwKHNj
b3BlLCBsb2NhbHMpOworICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICByZXR1cm4g
bGFzdFZhbHVlOworICAgICAgICAgICAgIH07CisgICAgaWYgKGFzc2lnbikgeworICAgICAgZm4u
YXNzaWduID0gZnVuY3Rpb24oc2NvcGUsIHZhbHVlLCBsb2NhbHMpIHsKKyAgICAgICAgcmV0dXJu
IGFzc2lnbihzY29wZSwgbG9jYWxzLCB2YWx1ZSk7CisgICAgICB9OworICAgIH0KKyAgICBpZiAo
aW5wdXRzKSB7CisgICAgICBmbi5pbnB1dHMgPSBpbnB1dHM7CisgICAgfQorICAgIGZuLmxpdGVy
YWwgPSBpc0xpdGVyYWwoYXN0KTsKKyAgICBmbi5jb25zdGFudCA9IGlzQ29uc3RhbnQoYXN0KTsK
KyAgICByZXR1cm4gZm47CisgIH0sCisKKyAgcmVjdXJzZTogZnVuY3Rpb24oYXN0LCBjb250ZXh0
LCBjcmVhdGUpIHsKKyAgICB2YXIgbGVmdCwgcmlnaHQsIHNlbGYgPSB0aGlzLCBhcmdzLCBleHBy
ZXNzaW9uOworICAgIGlmIChhc3QuaW5wdXQpIHsKKyAgICAgIHJldHVybiB0aGlzLmlucHV0cyhh
c3QuaW5wdXQsIGFzdC53YXRjaElkKTsKKyAgICB9CisgICAgc3dpdGNoIChhc3QudHlwZSkgewor
ICAgIGNhc2UgQVNULkxpdGVyYWw6CisgICAgICByZXR1cm4gdGhpcy52YWx1ZShhc3QudmFsdWUs
IGNvbnRleHQpOworICAgIGNhc2UgQVNULlVuYXJ5RXhwcmVzc2lvbjoKKyAgICAgIHJpZ2h0ID0g
dGhpcy5yZWN1cnNlKGFzdC5hcmd1bWVudCk7CisgICAgICByZXR1cm4gdGhpc1sndW5hcnknICsg
YXN0Lm9wZXJhdG9yXShyaWdodCwgY29udGV4dCk7CisgICAgY2FzZSBBU1QuQmluYXJ5RXhwcmVz
c2lvbjoKKyAgICAgIGxlZnQgPSB0aGlzLnJlY3Vyc2UoYXN0LmxlZnQpOworICAgICAgcmlnaHQg
PSB0aGlzLnJlY3Vyc2UoYXN0LnJpZ2h0KTsKKyAgICAgIHJldHVybiB0aGlzWydiaW5hcnknICsg
YXN0Lm9wZXJhdG9yXShsZWZ0LCByaWdodCwgY29udGV4dCk7CisgICAgY2FzZSBBU1QuTG9naWNh
bEV4cHJlc3Npb246CisgICAgICBsZWZ0ID0gdGhpcy5yZWN1cnNlKGFzdC5sZWZ0KTsKKyAgICAg
IHJpZ2h0ID0gdGhpcy5yZWN1cnNlKGFzdC5yaWdodCk7CisgICAgICByZXR1cm4gdGhpc1snYmlu
YXJ5JyArIGFzdC5vcGVyYXRvcl0obGVmdCwgcmlnaHQsIGNvbnRleHQpOworICAgIGNhc2UgQVNU
LkNvbmRpdGlvbmFsRXhwcmVzc2lvbjoKKyAgICAgIHJldHVybiB0aGlzWyd0ZXJuYXJ5PzonXSgK
KyAgICAgICAgdGhpcy5yZWN1cnNlKGFzdC50ZXN0KSwKKyAgICAgICAgdGhpcy5yZWN1cnNlKGFz
dC5hbHRlcm5hdGUpLAorICAgICAgICB0aGlzLnJlY3Vyc2UoYXN0LmNvbnNlcXVlbnQpLAorICAg
ICAgICBjb250ZXh0CisgICAgICApOworICAgIGNhc2UgQVNULklkZW50aWZpZXI6CisgICAgICBl
bnN1cmVTYWZlTWVtYmVyTmFtZShhc3QubmFtZSwgc2VsZi5leHByZXNzaW9uKTsKKyAgICAgIHJl
dHVybiBzZWxmLmlkZW50aWZpZXIoYXN0Lm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNlbGYuZXhwZW5zaXZlQ2hlY2tzIHx8IGlzUG9zc2libHlEYW5nZXJvdXNNZW1iZXJOYW1l
KGFzdC5uYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgY3JlYXRl
LCBzZWxmLmV4cHJlc3Npb24pOworICAgIGNhc2UgQVNULk1lbWJlckV4cHJlc3Npb246CisgICAg
ICBsZWZ0ID0gdGhpcy5yZWN1cnNlKGFzdC5vYmplY3QsIGZhbHNlLCAhIWNyZWF0ZSk7CisgICAg
ICBpZiAoIWFzdC5jb21wdXRlZCkgeworICAgICAgICBlbnN1cmVTYWZlTWVtYmVyTmFtZShhc3Qu
cHJvcGVydHkubmFtZSwgc2VsZi5leHByZXNzaW9uKTsKKyAgICAgICAgcmlnaHQgPSBhc3QucHJv
cGVydHkubmFtZTsKKyAgICAgIH0KKyAgICAgIGlmIChhc3QuY29tcHV0ZWQpIHJpZ2h0ID0gdGhp
cy5yZWN1cnNlKGFzdC5wcm9wZXJ0eSk7CisgICAgICByZXR1cm4gYXN0LmNvbXB1dGVkID8KKyAg
ICAgICAgdGhpcy5jb21wdXRlZE1lbWJlcihsZWZ0LCByaWdodCwgY29udGV4dCwgY3JlYXRlLCBz
ZWxmLmV4cHJlc3Npb24pIDoKKyAgICAgICAgdGhpcy5ub25Db21wdXRlZE1lbWJlcihsZWZ0LCBy
aWdodCwgc2VsZi5leHBlbnNpdmVDaGVja3MsIGNvbnRleHQsIGNyZWF0ZSwgc2VsZi5leHByZXNz
aW9uKTsKKyAgICBjYXNlIEFTVC5DYWxsRXhwcmVzc2lvbjoKKyAgICAgIGFyZ3MgPSBbXTsKKyAg
ICAgIGZvckVhY2goYXN0LmFyZ3VtZW50cywgZnVuY3Rpb24oZXhwcikgeworICAgICAgICBhcmdz
LnB1c2goc2VsZi5yZWN1cnNlKGV4cHIpKTsKKyAgICAgIH0pOworICAgICAgaWYgKGFzdC5maWx0
ZXIpIHJpZ2h0ID0gdGhpcy4kZmlsdGVyKGFzdC5jYWxsZWUubmFtZSk7CisgICAgICBpZiAoIWFz
dC5maWx0ZXIpIHJpZ2h0ID0gdGhpcy5yZWN1cnNlKGFzdC5jYWxsZWUsIHRydWUpOworICAgICAg
cmV0dXJuIGFzdC5maWx0ZXIgPworICAgICAgICBmdW5jdGlvbihzY29wZSwgbG9jYWxzLCBhc3Np
Z24sIGlucHV0cykgeworICAgICAgICAgIHZhciB2YWx1ZXMgPSBbXTsKKyAgICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIHZhbHVlcy5w
dXNoKGFyZ3NbaV0oc2NvcGUsIGxvY2FscywgYXNzaWduLCBpbnB1dHMpKTsKKyAgICAgICAgICB9
CisgICAgICAgICAgdmFyIHZhbHVlID0gcmlnaHQuYXBwbHkodW5kZWZpbmVkLCB2YWx1ZXMsIGlu
cHV0cyk7CisgICAgICAgICAgcmV0dXJuIGNvbnRleHQgPyB7Y29udGV4dDogdW5kZWZpbmVkLCBu
YW1lOiB1bmRlZmluZWQsIHZhbHVlOiB2YWx1ZX0gOiB2YWx1ZTsKKyAgICAgICAgfSA6CisgICAg
ICAgIGZ1bmN0aW9uKHNjb3BlLCBsb2NhbHMsIGFzc2lnbiwgaW5wdXRzKSB7CisgICAgICAgICAg
dmFyIHJocyA9IHJpZ2h0KHNjb3BlLCBsb2NhbHMsIGFzc2lnbiwgaW5wdXRzKTsKKyAgICAgICAg
ICB2YXIgdmFsdWU7CisgICAgICAgICAgaWYgKHJocy52YWx1ZSAhPSBudWxsKSB7CisgICAgICAg
ICAgICBlbnN1cmVTYWZlT2JqZWN0KHJocy5jb250ZXh0LCBzZWxmLmV4cHJlc3Npb24pOworICAg
ICAgICAgICAgZW5zdXJlU2FmZUZ1bmN0aW9uKHJocy52YWx1ZSwgc2VsZi5leHByZXNzaW9uKTsK
KyAgICAgICAgICAgIHZhciB2YWx1ZXMgPSBbXTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgYXJncy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICB2YWx1ZXMucHVzaChlbnN1
cmVTYWZlT2JqZWN0KGFyZ3NbaV0oc2NvcGUsIGxvY2FscywgYXNzaWduLCBpbnB1dHMpLCBzZWxm
LmV4cHJlc3Npb24pKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHZhbHVlID0gZW5zdXJl
U2FmZU9iamVjdChyaHMudmFsdWUuYXBwbHkocmhzLmNvbnRleHQsIHZhbHVlcyksIHNlbGYuZXhw
cmVzc2lvbik7CisgICAgICAgICAgfQorICAgICAgICAgIHJldHVybiBjb250ZXh0ID8ge3ZhbHVl
OiB2YWx1ZX0gOiB2YWx1ZTsKKyAgICAgICAgfTsKKyAgICBjYXNlIEFTVC5Bc3NpZ25tZW50RXhw
cmVzc2lvbjoKKyAgICAgIGxlZnQgPSB0aGlzLnJlY3Vyc2UoYXN0LmxlZnQsIHRydWUsIDEpOwor
ICAgICAgcmlnaHQgPSB0aGlzLnJlY3Vyc2UoYXN0LnJpZ2h0KTsKKyAgICAgIHJldHVybiBmdW5j
dGlvbihzY29wZSwgbG9jYWxzLCBhc3NpZ24sIGlucHV0cykgeworICAgICAgICB2YXIgbGhzID0g
bGVmdChzY29wZSwgbG9jYWxzLCBhc3NpZ24sIGlucHV0cyk7CisgICAgICAgIHZhciByaHMgPSBy
aWdodChzY29wZSwgbG9jYWxzLCBhc3NpZ24sIGlucHV0cyk7CisgICAgICAgIGVuc3VyZVNhZmVP
YmplY3QobGhzLnZhbHVlLCBzZWxmLmV4cHJlc3Npb24pOworICAgICAgICBsaHMuY29udGV4dFts
aHMubmFtZV0gPSByaHM7CisgICAgICAgIHJldHVybiBjb250ZXh0ID8ge3ZhbHVlOiByaHN9IDog
cmhzOworICAgICAgfTsKKyAgICBjYXNlIEFTVC5BcnJheUV4cHJlc3Npb246CisgICAgICBhcmdz
ID0gW107CisgICAgICBmb3JFYWNoKGFzdC5lbGVtZW50cywgZnVuY3Rpb24oZXhwcikgeworICAg
ICAgICBhcmdzLnB1c2goc2VsZi5yZWN1cnNlKGV4cHIpKTsKKyAgICAgIH0pOworICAgICAgcmV0
dXJuIGZ1bmN0aW9uKHNjb3BlLCBsb2NhbHMsIGFzc2lnbiwgaW5wdXRzKSB7CisgICAgICAgIHZh
ciB2YWx1ZSA9IFtdOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyAr
K2kpIHsKKyAgICAgICAgICB2YWx1ZS5wdXNoKGFyZ3NbaV0oc2NvcGUsIGxvY2FscywgYXNzaWdu
LCBpbnB1dHMpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gY29udGV4dCA/IHt2YWx1ZTog
dmFsdWV9IDogdmFsdWU7CisgICAgICB9OworICAgIGNhc2UgQVNULk9iamVjdEV4cHJlc3Npb246
CisgICAgICBhcmdzID0gW107CisgICAgICBmb3JFYWNoKGFzdC5wcm9wZXJ0aWVzLCBmdW5jdGlv
bihwcm9wZXJ0eSkgeworICAgICAgICBhcmdzLnB1c2goe2tleTogcHJvcGVydHkua2V5LnR5cGUg
PT09IEFTVC5JZGVudGlmaWVyID8KKyAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5Lmtl
eS5uYW1lIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICgnJyArIHByb3BlcnR5LmtleS52YWx1
ZSksCisgICAgICAgICAgICAgICAgICAgdmFsdWU6IHNlbGYucmVjdXJzZShwcm9wZXJ0eS52YWx1
ZSkKKyAgICAgICAgfSk7CisgICAgICB9KTsKKyAgICAgIHJldHVybiBmdW5jdGlvbihzY29wZSwg
bG9jYWxzLCBhc3NpZ24sIGlucHV0cykgeworICAgICAgICB2YXIgdmFsdWUgPSB7fTsKKyAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgdmFs
dWVbYXJnc1tpXS5rZXldID0gYXJnc1tpXS52YWx1ZShzY29wZSwgbG9jYWxzLCBhc3NpZ24sIGlu
cHV0cyk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGNvbnRleHQgPyB7dmFsdWU6IHZhbHVl
fSA6IHZhbHVlOworICAgICAgfTsKKyAgICBjYXNlIEFTVC5UaGlzRXhwcmVzc2lvbjoKKyAgICAg
IHJldHVybiBmdW5jdGlvbihzY29wZSkgeworICAgICAgICByZXR1cm4gY29udGV4dCA/IHt2YWx1
ZTogc2NvcGV9IDogc2NvcGU7CisgICAgICB9OworICAgIGNhc2UgQVNULk5HVmFsdWVQYXJhbWV0
ZXI6CisgICAgICByZXR1cm4gZnVuY3Rpb24oc2NvcGUsIGxvY2FscywgYXNzaWduLCBpbnB1dHMp
IHsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQgPyB7dmFsdWU6IGFzc2lnbn0gOiBhc3NpZ247Cisg
ICAgICB9OworICAgIH0KKyAgfSwKKworICAndW5hcnkrJzogZnVuY3Rpb24oYXJndW1lbnQsIGNv
bnRleHQpIHsKKyAgICByZXR1cm4gZnVuY3Rpb24oc2NvcGUsIGxvY2FscywgYXNzaWduLCBpbnB1
dHMpIHsKKyAgICAgIHZhciBhcmcgPSBhcmd1bWVudChzY29wZSwgbG9jYWxzLCBhc3NpZ24sIGlu
cHV0cyk7CisgICAgICBpZiAoaXNEZWZpbmVkKGFyZykpIHsKKyAgICAgICAgYXJnID0gK2FyZzsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIGFyZyA9IDA7CisgICAgICB9CisgICAgICByZXR1cm4g
Y29udGV4dCA/IHt2YWx1ZTogYXJnfSA6IGFyZzsKKyAgICB9OworICB9LAorICAndW5hcnktJzog
ZnVuY3Rpb24oYXJndW1lbnQsIGNvbnRleHQpIHsKKyAgICByZXR1cm4gZnVuY3Rpb24oc2NvcGUs
IGxvY2FscywgYXNzaWduLCBpbnB1dHMpIHsKKyAgICAgIHZhciBhcmcgPSBhcmd1bWVudChzY29w
ZSwgbG9jYWxzLCBhc3NpZ24sIGlucHV0cyk7CisgICAgICBpZiAoaXNEZWZpbmVkKGFyZykpIHsK
KyAgICAgICAgYXJnID0gLWFyZzsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGFyZyA9IDA7Cisg
ICAgICB9CisgICAgICByZXR1cm4gY29udGV4dCA/IHt2YWx1ZTogYXJnfSA6IGFyZzsKKyAgICB9
OworICB9LAorICAndW5hcnkhJzogZnVuY3Rpb24oYXJndW1lbnQsIGNvbnRleHQpIHsKKyAgICBy
ZXR1cm4gZnVuY3Rpb24oc2NvcGUsIGxvY2FscywgYXNzaWduLCBpbnB1dHMpIHsKKyAgICAgIHZh
ciBhcmcgPSAhYXJndW1lbnQoc2NvcGUsIGxvY2FscywgYXNzaWduLCBpbnB1dHMpOworICAgICAg
cmV0dXJuIGNvbnRleHQgPyB7dmFsdWU6IGFyZ30gOiBhcmc7CisgICAgfTsKKyAgfSwKKyAgJ2Jp
bmFyeSsnOiBmdW5jdGlvbihsZWZ0LCByaWdodCwgY29udGV4dCkgeworICAgIHJldHVybiBmdW5j
dGlvbihzY29wZSwgbG9jYWxzLCBhc3NpZ24sIGlucHV0cykgeworICAgICAgdmFyIGxocyA9IGxl
ZnQoc2NvcGUsIGxvY2FscywgYXNzaWduLCBpbnB1dHMpOworICAgICAgdmFyIHJocyA9IHJpZ2h0
KHNjb3BlLCBsb2NhbHMsIGFzc2lnbiwgaW5wdXRzKTsKKyAgICAgIHZhciBhcmcgPSBwbHVzRm4o
bGhzLCByaHMpOworICAgICAgcmV0dXJuIGNvbnRleHQgPyB7dmFsdWU6IGFyZ30gOiBhcmc7Cisg
ICAgfTsKKyAgfSwKKyAgJ2JpbmFyeS0nOiBmdW5jdGlvbihsZWZ0LCByaWdodCwgY29udGV4dCkg
eworICAgIHJldHVybiBmdW5jdGlvbihzY29wZSwgbG9jYWxzLCBhc3NpZ24sIGlucHV0cykgewor
ICAgICAgdmFyIGxocyA9IGxlZnQoc2NvcGUsIGxvY2FscywgYXNzaWduLCBpbnB1dHMpOworICAg
ICAgdmFyIHJocyA9IHJpZ2h0KHNjb3BlLCBsb2NhbHMsIGFzc2lnbiwgaW5wdXRzKTsKKyAgICAg
IHZhciBhcmcgPSAoaXNEZWZpbmVkKGxocykgPyBsaHMgOiAwKSAtIChpc0RlZmluZWQocmhzKSA/
IHJocyA6IDApOworICAgICAgcmV0dXJuIGNvbnRleHQgPyB7dmFsdWU6IGFyZ30gOiBhcmc7Cisg
ICAgfTsKKyAgfSwKKyAgJ2JpbmFyeSonOiBmdW5jdGlvbihsZWZ0LCByaWdodCwgY29udGV4dCkg
eworICAgIHJldHVybiBmdW5jdGlvbihzY29wZSwgbG9jYWxzLCBhc3NpZ24sIGlucHV0cykgewor
ICAgICAgdmFyIGFyZyA9IGxlZnQoc2NvcGUsIGxvY2FscywgYXNzaWduLCBpbnB1dHMpICogcmln
aHQoc2NvcGUsIGxvY2FscywgYXNzaWduLCBpbnB1dHMpOworICAgICAgcmV0dXJuIGNvbnRleHQg
PyB7dmFsdWU6IGFyZ30gOiBhcmc7CisgICAgfTsKKyAgfSwKKyAgJ2JpbmFyeS8nOiBmdW5jdGlv
bihsZWZ0LCByaWdodCwgY29udGV4dCkgeworICAgIHJldHVybiBmdW5jdGlvbihzY29wZSwgbG9j
YWxzLCBhc3NpZ24sIGlucHV0cykgeworICAgICAgdmFyIGFyZyA9IGxlZnQoc2NvcGUsIGxvY2Fs
cywgYXNzaWduLCBpbnB1dHMpIC8gcmlnaHQoc2NvcGUsIGxvY2FscywgYXNzaWduLCBpbnB1dHMp
OworICAgICAgcmV0dXJuIGNvbnRleHQgPyB7dmFsdWU6IGFyZ30gOiBhcmc7CisgICAgfTsKKyAg
fSwKKyAgJ2JpbmFyeSUnOiBmdW5jdGlvbihsZWZ0LCByaWdodCwgY29udGV4dCkgeworICAgIHJl
dHVybiBmdW5jdGlvbihzY29wZSwgbG9jYWxzLCBhc3NpZ24sIGlucHV0cykgeworICAgICAgdmFy
IGFyZyA9IGxlZnQoc2NvcGUsIGxvY2FscywgYXNzaWduLCBpbnB1dHMpICUgcmlnaHQoc2NvcGUs
IGxvY2FscywgYXNzaWduLCBpbnB1dHMpOworICAgICAgcmV0dXJuIGNvbnRleHQgPyB7dmFsdWU6
IGFyZ30gOiBhcmc7CisgICAgfTsKKyAgfSwKKyAgJ2JpbmFyeT09PSc6IGZ1bmN0aW9uKGxlZnQs
IHJpZ2h0LCBjb250ZXh0KSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uKHNjb3BlLCBsb2NhbHMsIGFz
c2lnbiwgaW5wdXRzKSB7CisgICAgICB2YXIgYXJnID0gbGVmdChzY29wZSwgbG9jYWxzLCBhc3Np
Z24sIGlucHV0cykgPT09IHJpZ2h0KHNjb3BlLCBsb2NhbHMsIGFzc2lnbiwgaW5wdXRzKTsKKyAg
ICAgIHJldHVybiBjb250ZXh0ID8ge3ZhbHVlOiBhcmd9IDogYXJnOworICAgIH07CisgIH0sCisg
ICdiaW5hcnkhPT0nOiBmdW5jdGlvbihsZWZ0LCByaWdodCwgY29udGV4dCkgeworICAgIHJldHVy
biBmdW5jdGlvbihzY29wZSwgbG9jYWxzLCBhc3NpZ24sIGlucHV0cykgeworICAgICAgdmFyIGFy
ZyA9IGxlZnQoc2NvcGUsIGxvY2FscywgYXNzaWduLCBpbnB1dHMpICE9PSByaWdodChzY29wZSwg
bG9jYWxzLCBhc3NpZ24sIGlucHV0cyk7CisgICAgICByZXR1cm4gY29udGV4dCA/IHt2YWx1ZTog
YXJnfSA6IGFyZzsKKyAgICB9OworICB9LAorICAnYmluYXJ5PT0nOiBmdW5jdGlvbihsZWZ0LCBy
aWdodCwgY29udGV4dCkgeworICAgIHJldHVybiBmdW5jdGlvbihzY29wZSwgbG9jYWxzLCBhc3Np
Z24sIGlucHV0cykgeworICAgICAgdmFyIGFyZyA9IGxlZnQoc2NvcGUsIGxvY2FscywgYXNzaWdu
LCBpbnB1dHMpID09IHJpZ2h0KHNjb3BlLCBsb2NhbHMsIGFzc2lnbiwgaW5wdXRzKTsKKyAgICAg
IHJldHVybiBjb250ZXh0ID8ge3ZhbHVlOiBhcmd9IDogYXJnOworICAgIH07CisgIH0sCisgICdi
aW5hcnkhPSc6IGZ1bmN0aW9uKGxlZnQsIHJpZ2h0LCBjb250ZXh0KSB7CisgICAgcmV0dXJuIGZ1
bmN0aW9uKHNjb3BlLCBsb2NhbHMsIGFzc2lnbiwgaW5wdXRzKSB7CisgICAgICB2YXIgYXJnID0g
bGVmdChzY29wZSwgbG9jYWxzLCBhc3NpZ24sIGlucHV0cykgIT0gcmlnaHQoc2NvcGUsIGxvY2Fs
cywgYXNzaWduLCBpbnB1dHMpOworICAgICAgcmV0dXJuIGNvbnRleHQgPyB7dmFsdWU6IGFyZ30g
OiBhcmc7CisgICAgfTsKKyAgfSwKKyAgJ2JpbmFyeTwnOiBmdW5jdGlvbihsZWZ0LCByaWdodCwg
Y29udGV4dCkgeworICAgIHJldHVybiBmdW5jdGlvbihzY29wZSwgbG9jYWxzLCBhc3NpZ24sIGlu
cHV0cykgeworICAgICAgdmFyIGFyZyA9IGxlZnQoc2NvcGUsIGxvY2FscywgYXNzaWduLCBpbnB1
dHMpIDwgcmlnaHQoc2NvcGUsIGxvY2FscywgYXNzaWduLCBpbnB1dHMpOworICAgICAgcmV0dXJu
IGNvbnRleHQgPyB7dmFsdWU6IGFyZ30gOiBhcmc7CisgICAgfTsKKyAgfSwKKyAgJ2JpbmFyeT4n
OiBmdW5jdGlvbihsZWZ0LCByaWdodCwgY29udGV4dCkgeworICAgIHJldHVybiBmdW5jdGlvbihz
Y29wZSwgbG9jYWxzLCBhc3NpZ24sIGlucHV0cykgeworICAgICAgdmFyIGFyZyA9IGxlZnQoc2Nv
cGUsIGxvY2FscywgYXNzaWduLCBpbnB1dHMpID4gcmlnaHQoc2NvcGUsIGxvY2FscywgYXNzaWdu
LCBpbnB1dHMpOworICAgICAgcmV0dXJuIGNvbnRleHQgPyB7dmFsdWU6IGFyZ30gOiBhcmc7Cisg
ICAgfTsKKyAgfSwKKyAgJ2JpbmFyeTw9JzogZnVuY3Rpb24obGVmdCwgcmlnaHQsIGNvbnRleHQp
IHsKKyAgICByZXR1cm4gZnVuY3Rpb24oc2NvcGUsIGxvY2FscywgYXNzaWduLCBpbnB1dHMpIHsK
KyAgICAgIHZhciBhcmcgPSBsZWZ0KHNjb3BlLCBsb2NhbHMsIGFzc2lnbiwgaW5wdXRzKSA8PSBy
aWdodChzY29wZSwgbG9jYWxzLCBhc3NpZ24sIGlucHV0cyk7CisgICAgICByZXR1cm4gY29udGV4
dCA/IHt2YWx1ZTogYXJnfSA6IGFyZzsKKyAgICB9OworICB9LAorICAnYmluYXJ5Pj0nOiBmdW5j
dGlvbihsZWZ0LCByaWdodCwgY29udGV4dCkgeworICAgIHJldHVybiBmdW5jdGlvbihzY29wZSwg
bG9jYWxzLCBhc3NpZ24sIGlucHV0cykgeworICAgICAgdmFyIGFyZyA9IGxlZnQoc2NvcGUsIGxv
Y2FscywgYXNzaWduLCBpbnB1dHMpID49IHJpZ2h0KHNjb3BlLCBsb2NhbHMsIGFzc2lnbiwgaW5w
dXRzKTsKKyAgICAgIHJldHVybiBjb250ZXh0ID8ge3ZhbHVlOiBhcmd9IDogYXJnOworICAgIH07
CisgIH0sCisgICdiaW5hcnkmJic6IGZ1bmN0aW9uKGxlZnQsIHJpZ2h0LCBjb250ZXh0KSB7Cisg
ICAgcmV0dXJuIGZ1bmN0aW9uKHNjb3BlLCBsb2NhbHMsIGFzc2lnbiwgaW5wdXRzKSB7CisgICAg
ICB2YXIgYXJnID0gbGVmdChzY29wZSwgbG9jYWxzLCBhc3NpZ24sIGlucHV0cykgJiYgcmlnaHQo
c2NvcGUsIGxvY2FscywgYXNzaWduLCBpbnB1dHMpOworICAgICAgcmV0dXJuIGNvbnRleHQgPyB7
dmFsdWU6IGFyZ30gOiBhcmc7CisgICAgfTsKKyAgfSwKKyAgJ2JpbmFyeXx8JzogZnVuY3Rpb24o
bGVmdCwgcmlnaHQsIGNvbnRleHQpIHsKKyAgICByZXR1cm4gZnVuY3Rpb24oc2NvcGUsIGxvY2Fs
cywgYXNzaWduLCBpbnB1dHMpIHsKKyAgICAgIHZhciBhcmcgPSBsZWZ0KHNjb3BlLCBsb2NhbHMs
IGFzc2lnbiwgaW5wdXRzKSB8fCByaWdodChzY29wZSwgbG9jYWxzLCBhc3NpZ24sIGlucHV0cyk7
CisgICAgICByZXR1cm4gY29udGV4dCA/IHt2YWx1ZTogYXJnfSA6IGFyZzsKKyAgICB9OworICB9
LAorICAndGVybmFyeT86JzogZnVuY3Rpb24odGVzdCwgYWx0ZXJuYXRlLCBjb25zZXF1ZW50LCBj
b250ZXh0KSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uKHNjb3BlLCBsb2NhbHMsIGFzc2lnbiwgaW5w
dXRzKSB7CisgICAgICB2YXIgYXJnID0gdGVzdChzY29wZSwgbG9jYWxzLCBhc3NpZ24sIGlucHV0
cykgPyBhbHRlcm5hdGUoc2NvcGUsIGxvY2FscywgYXNzaWduLCBpbnB1dHMpIDogY29uc2VxdWVu
dChzY29wZSwgbG9jYWxzLCBhc3NpZ24sIGlucHV0cyk7CisgICAgICByZXR1cm4gY29udGV4dCA/
IHt2YWx1ZTogYXJnfSA6IGFyZzsKKyAgICB9OworICB9LAorICB2YWx1ZTogZnVuY3Rpb24odmFs
dWUsIGNvbnRleHQpIHsKKyAgICByZXR1cm4gZnVuY3Rpb24oKSB7IHJldHVybiBjb250ZXh0ID8g
e2NvbnRleHQ6IHVuZGVmaW5lZCwgbmFtZTogdW5kZWZpbmVkLCB2YWx1ZTogdmFsdWV9IDogdmFs
dWU7IH07CisgIH0sCisgIGlkZW50aWZpZXI6IGZ1bmN0aW9uKG5hbWUsIGV4cGVuc2l2ZUNoZWNr
cywgY29udGV4dCwgY3JlYXRlLCBleHByZXNzaW9uKSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uKHNj
b3BlLCBsb2NhbHMsIGFzc2lnbiwgaW5wdXRzKSB7CisgICAgICB2YXIgYmFzZSA9IGxvY2FscyAm
JiAobmFtZSBpbiBsb2NhbHMpID8gbG9jYWxzIDogc2NvcGU7CisgICAgICBpZiAoY3JlYXRlICYm
IGNyZWF0ZSAhPT0gMSAmJiBiYXNlICYmICEoYmFzZVtuYW1lXSkpIHsKKyAgICAgICAgYmFzZVtu
YW1lXSA9IHt9OworICAgICAgfQorICAgICAgdmFyIHZhbHVlID0gYmFzZSA/IGJhc2VbbmFtZV0g
OiB1bmRlZmluZWQ7CisgICAgICBpZiAoZXhwZW5zaXZlQ2hlY2tzKSB7CisgICAgICAgIGVuc3Vy
ZVNhZmVPYmplY3QodmFsdWUsIGV4cHJlc3Npb24pOworICAgICAgfQorICAgICAgaWYgKGNvbnRl
eHQpIHsKKyAgICAgICAgcmV0dXJuIHtjb250ZXh0OiBiYXNlLCBuYW1lOiBuYW1lLCB2YWx1ZTog
dmFsdWV9OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgICAgfQor
ICAgIH07CisgIH0sCisgIGNvbXB1dGVkTWVtYmVyOiBmdW5jdGlvbihsZWZ0LCByaWdodCwgY29u
dGV4dCwgY3JlYXRlLCBleHByZXNzaW9uKSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uKHNjb3BlLCBs
b2NhbHMsIGFzc2lnbiwgaW5wdXRzKSB7CisgICAgICB2YXIgbGhzID0gbGVmdChzY29wZSwgbG9j
YWxzLCBhc3NpZ24sIGlucHV0cyk7CisgICAgICB2YXIgcmhzOworICAgICAgdmFyIHZhbHVlOwor
ICAgICAgaWYgKGxocyAhPSBudWxsKSB7CisgICAgICAgIHJocyA9IHJpZ2h0KHNjb3BlLCBsb2Nh
bHMsIGFzc2lnbiwgaW5wdXRzKTsKKyAgICAgICAgZW5zdXJlU2FmZU1lbWJlck5hbWUocmhzLCBl
eHByZXNzaW9uKTsKKyAgICAgICAgaWYgKGNyZWF0ZSAmJiBjcmVhdGUgIT09IDEgJiYgbGhzICYm
ICEobGhzW3Joc10pKSB7CisgICAgICAgICAgbGhzW3Joc10gPSB7fTsKKyAgICAgICAgfQorICAg
ICAgICB2YWx1ZSA9IGxoc1tyaHNdOworICAgICAgICBlbnN1cmVTYWZlT2JqZWN0KHZhbHVlLCBl
eHByZXNzaW9uKTsKKyAgICAgIH0KKyAgICAgIGlmIChjb250ZXh0KSB7CisgICAgICAgIHJldHVy
biB7Y29udGV4dDogbGhzLCBuYW1lOiByaHMsIHZhbHVlOiB2YWx1ZX07CisgICAgICB9IGVsc2Ug
eworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgICB9CisgICAgfTsKKyAgfSwKKyAgbm9uQ29t
cHV0ZWRNZW1iZXI6IGZ1bmN0aW9uKGxlZnQsIHJpZ2h0LCBleHBlbnNpdmVDaGVja3MsIGNvbnRl
eHQsIGNyZWF0ZSwgZXhwcmVzc2lvbikgeworICAgIHJldHVybiBmdW5jdGlvbihzY29wZSwgbG9j
YWxzLCBhc3NpZ24sIGlucHV0cykgeworICAgICAgdmFyIGxocyA9IGxlZnQoc2NvcGUsIGxvY2Fs
cywgYXNzaWduLCBpbnB1dHMpOworICAgICAgaWYgKGNyZWF0ZSAmJiBjcmVhdGUgIT09IDEgJiYg
bGhzICYmICEobGhzW3JpZ2h0XSkpIHsKKyAgICAgICAgbGhzW3JpZ2h0XSA9IHt9OworICAgICAg
fQorICAgICAgdmFyIHZhbHVlID0gbGhzICE9IG51bGwgPyBsaHNbcmlnaHRdIDogdW5kZWZpbmVk
OworICAgICAgaWYgKGV4cGVuc2l2ZUNoZWNrcyB8fCBpc1Bvc3NpYmx5RGFuZ2Vyb3VzTWVtYmVy
TmFtZShyaWdodCkpIHsKKyAgICAgICAgZW5zdXJlU2FmZU9iamVjdCh2YWx1ZSwgZXhwcmVzc2lv
bik7CisgICAgICB9CisgICAgICBpZiAoY29udGV4dCkgeworICAgICAgICByZXR1cm4ge2NvbnRl
eHQ6IGxocywgbmFtZTogcmlnaHQsIHZhbHVlOiB2YWx1ZX07CisgICAgICB9IGVsc2UgeworICAg
ICAgICByZXR1cm4gdmFsdWU7CisgICAgICB9CisgICAgfTsKKyAgfSwKKyAgaW5wdXRzOiBmdW5j
dGlvbihpbnB1dCwgd2F0Y2hJZCkgeworICAgIHJldHVybiBmdW5jdGlvbihzY29wZSwgdmFsdWUs
IGxvY2FscywgaW5wdXRzKSB7CisgICAgICBpZiAoaW5wdXRzKSByZXR1cm4gaW5wdXRzW3dhdGNo
SWRdOworICAgICAgcmV0dXJuIGlucHV0KHNjb3BlLCB2YWx1ZSwgbG9jYWxzKTsKKyAgICB9Owor
ICB9Cit9OworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICovCit2YXIgUGFyc2VyID0gZnVuY3Rp
b24obGV4ZXIsICRmaWx0ZXIsIG9wdGlvbnMpIHsKKyAgdGhpcy5sZXhlciA9IGxleGVyOworICB0
aGlzLiRmaWx0ZXIgPSAkZmlsdGVyOworICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zOworICB0aGlz
LmFzdCA9IG5ldyBBU1QodGhpcy5sZXhlcik7CisgIHRoaXMuYXN0Q29tcGlsZXIgPSBvcHRpb25z
LmNzcCA/IG5ldyBBU1RJbnRlcnByZXRlcih0aGlzLmFzdCwgJGZpbHRlcikgOgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgQVNUQ29tcGlsZXIodGhpcy5hc3QsICRmaWx0
ZXIpOworfTsKKworUGFyc2VyLnByb3RvdHlwZSA9IHsKKyAgY29uc3RydWN0b3I6IFBhcnNlciwK
KworICBwYXJzZTogZnVuY3Rpb24odGV4dCkgeworICAgIHJldHVybiB0aGlzLmFzdENvbXBpbGVy
LmNvbXBpbGUodGV4dCwgdGhpcy5vcHRpb25zLmV4cGVuc2l2ZUNoZWNrcyk7CisgIH0KK307CisK
Ky8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLyBQ
YXJzZXIgaGVscGVyIGZ1bmN0aW9ucworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8KKworZnVuY3Rpb24gc2V0dGVyKG9iaiwgcGF0aCwgc2V0VmFsdWUs
IGZ1bGxFeHApIHsKKyAgZW5zdXJlU2FmZU9iamVjdChvYmosIGZ1bGxFeHApOworCisgIHZhciBl
bGVtZW50ID0gcGF0aC5zcGxpdCgnLicpLCBrZXk7CisgIGZvciAodmFyIGkgPSAwOyBlbGVtZW50
Lmxlbmd0aCA+IDE7IGkrKykgeworICAgIGtleSA9IGVuc3VyZVNhZmVNZW1iZXJOYW1lKGVsZW1l
bnQuc2hpZnQoKSwgZnVsbEV4cCk7CisgICAgdmFyIHByb3BlcnR5T2JqID0gZW5zdXJlU2FmZU9i
amVjdChvYmpba2V5XSwgZnVsbEV4cCk7CisgICAgaWYgKCFwcm9wZXJ0eU9iaikgeworICAgICAg
cHJvcGVydHlPYmogPSB7fTsKKyAgICAgIG9ialtrZXldID0gcHJvcGVydHlPYmo7CisgICAgfQor
ICAgIG9iaiA9IHByb3BlcnR5T2JqOworICB9CisgIGtleSA9IGVuc3VyZVNhZmVNZW1iZXJOYW1l
KGVsZW1lbnQuc2hpZnQoKSwgZnVsbEV4cCk7CisgIGVuc3VyZVNhZmVPYmplY3Qob2JqW2tleV0s
IGZ1bGxFeHApOworICBvYmpba2V5XSA9IHNldFZhbHVlOworICByZXR1cm4gc2V0VmFsdWU7Cit9
CisKK3ZhciBnZXR0ZXJGbkNhY2hlRGVmYXVsdCA9IGNyZWF0ZU1hcCgpOwordmFyIGdldHRlckZu
Q2FjaGVFeHBlbnNpdmUgPSBjcmVhdGVNYXAoKTsKKworZnVuY3Rpb24gaXNQb3NzaWJseURhbmdl
cm91c01lbWJlck5hbWUobmFtZSkgeworICByZXR1cm4gbmFtZSA9PSAnY29uc3RydWN0b3InOwor
fQorCit2YXIgb2JqZWN0VmFsdWVPZiA9IE9iamVjdC5wcm90b3R5cGUudmFsdWVPZjsKKworZnVu
Y3Rpb24gZ2V0VmFsdWVPZih2YWx1ZSkgeworICByZXR1cm4gaXNGdW5jdGlvbih2YWx1ZS52YWx1
ZU9mKSA/IHZhbHVlLnZhbHVlT2YoKSA6IG9iamVjdFZhbHVlT2YuY2FsbCh2YWx1ZSk7Cit9CisK
Ky8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKKy8qKgorICogQG5nZG9jIHNl
cnZpY2UKKyAqIEBuYW1lICRwYXJzZQorICogQGtpbmQgZnVuY3Rpb24KKyAqCisgKiBAZGVzY3Jp
cHRpb24KKyAqCisgKiBDb252ZXJ0cyBBbmd1bGFyIHtAbGluayBndWlkZS9leHByZXNzaW9uIGV4
cHJlc3Npb259IGludG8gYSBmdW5jdGlvbi4KKyAqCisgKiBgYGBqcworICogICB2YXIgZ2V0dGVy
ID0gJHBhcnNlKCd1c2VyLm5hbWUnKTsKKyAqICAgdmFyIHNldHRlciA9IGdldHRlci5hc3NpZ247
CisgKiAgIHZhciBjb250ZXh0ID0ge3VzZXI6e25hbWU6J2FuZ3VsYXInfX07CisgKiAgIHZhciBs
b2NhbHMgPSB7dXNlcjp7bmFtZTonbG9jYWwnfX07CisgKgorICogICBleHBlY3QoZ2V0dGVyKGNv
bnRleHQpKS50b0VxdWFsKCdhbmd1bGFyJyk7CisgKiAgIHNldHRlcihjb250ZXh0LCAnbmV3VmFs
dWUnKTsKKyAqICAgZXhwZWN0KGNvbnRleHQudXNlci5uYW1lKS50b0VxdWFsKCduZXdWYWx1ZScp
OworICogICBleHBlY3QoZ2V0dGVyKGNvbnRleHQsIGxvY2FscykpLnRvRXF1YWwoJ2xvY2FsJyk7
CisgKiBgYGAKKyAqCisgKgorICogQHBhcmFtIHtzdHJpbmd9IGV4cHJlc3Npb24gU3RyaW5nIGV4
cHJlc3Npb24gdG8gY29tcGlsZS4KKyAqIEByZXR1cm5zIHtmdW5jdGlvbihjb250ZXh0LCBsb2Nh
bHMpfSBhIGZ1bmN0aW9uIHdoaWNoIHJlcHJlc2VudHMgdGhlIGNvbXBpbGVkIGV4cHJlc3Npb246
CisgKgorICogICAgKiBgY29udGV4dGAg4oCTIGB7b2JqZWN0fWAg4oCTIGFuIG9iamVjdCBhZ2Fp
bnN0IHdoaWNoIGFueSBleHByZXNzaW9ucyBlbWJlZGRlZCBpbiB0aGUgc3RyaW5ncworICogICAg
ICBhcmUgZXZhbHVhdGVkIGFnYWluc3QgKHR5cGljYWxseSBhIHNjb3BlIG9iamVjdCkuCisgKiAg
ICAqIGBsb2NhbHNgIOKAkyBge29iamVjdD19YCDigJMgbG9jYWwgdmFyaWFibGVzIGNvbnRleHQg
b2JqZWN0LCB1c2VmdWwgZm9yIG92ZXJyaWRpbmcgdmFsdWVzIGluCisgKiAgICAgIGBjb250ZXh0
YC4KKyAqCisgKiAgICBUaGUgcmV0dXJuZWQgZnVuY3Rpb24gYWxzbyBoYXMgdGhlIGZvbGxvd2lu
ZyBwcm9wZXJ0aWVzOgorICogICAgICAqIGBsaXRlcmFsYCDigJMgYHtib29sZWFufWAg4oCTIHdo
ZXRoZXIgdGhlIGV4cHJlc3Npb24ncyB0b3AtbGV2ZWwgbm9kZSBpcyBhIEphdmFTY3JpcHQKKyAq
ICAgICAgICBsaXRlcmFsLgorICogICAgICAqIGBjb25zdGFudGAg4oCTIGB7Ym9vbGVhbn1gIOKA
kyB3aGV0aGVyIHRoZSBleHByZXNzaW9uIGlzIG1hZGUgZW50aXJlbHkgb2YgSmF2YVNjcmlwdAor
ICogICAgICAgIGNvbnN0YW50IGxpdGVyYWxzLgorICogICAgICAqIGBhc3NpZ25gIOKAkyBgez9m
dW5jdGlvbihjb250ZXh0LCB2YWx1ZSl9YCDigJMgaWYgdGhlIGV4cHJlc3Npb24gaXMgYXNzaWdu
YWJsZSwgdGhpcyB3aWxsIGJlCisgKiAgICAgICAgc2V0IHRvIGEgZnVuY3Rpb24gdG8gY2hhbmdl
IGl0cyB2YWx1ZSBvbiB0aGUgZ2l2ZW4gY29udGV4dC4KKyAqCisgKi8KKworCisvKioKKyAqIEBu
Z2RvYyBwcm92aWRlcgorICogQG5hbWUgJHBhcnNlUHJvdmlkZXIKKyAqCisgKiBAZGVzY3JpcHRp
b24KKyAqIGAkcGFyc2VQcm92aWRlcmAgY2FuIGJlIHVzZWQgZm9yIGNvbmZpZ3VyaW5nIHRoZSBk
ZWZhdWx0IGJlaGF2aW9yIG9mIHRoZSB7QGxpbmsgbmcuJHBhcnNlICRwYXJzZX0KKyAqICBzZXJ2
aWNlLgorICovCitmdW5jdGlvbiAkUGFyc2VQcm92aWRlcigpIHsKKyAgdmFyIGNhY2hlRGVmYXVs
dCA9IGNyZWF0ZU1hcCgpOworICB2YXIgY2FjaGVFeHBlbnNpdmUgPSBjcmVhdGVNYXAoKTsKKwor
ICB0aGlzLiRnZXQgPSBbJyRmaWx0ZXInLCAnJHNuaWZmZXInLCBmdW5jdGlvbigkZmlsdGVyLCAk
c25pZmZlcikgeworICAgIHZhciAkcGFyc2VPcHRpb25zID0geworICAgICAgICAgIGNzcDogJHNu
aWZmZXIuY3NwLAorICAgICAgICAgIGV4cGVuc2l2ZUNoZWNrczogZmFsc2UKKyAgICAgICAgfSwK
KyAgICAgICAgJHBhcnNlT3B0aW9uc0V4cGVuc2l2ZSA9IHsKKyAgICAgICAgICBjc3A6ICRzbmlm
ZmVyLmNzcCwKKyAgICAgICAgICBleHBlbnNpdmVDaGVja3M6IHRydWUKKyAgICAgICAgfTsKKwor
ICAgIHJldHVybiBmdW5jdGlvbiAkcGFyc2UoZXhwLCBpbnRlcmNlcHRvckZuLCBleHBlbnNpdmVD
aGVja3MpIHsKKyAgICAgIHZhciBwYXJzZWRFeHByZXNzaW9uLCBvbmVUaW1lLCBjYWNoZUtleTsK
KworICAgICAgc3dpdGNoICh0eXBlb2YgZXhwKSB7CisgICAgICAgIGNhc2UgJ3N0cmluZyc6Cisg
ICAgICAgICAgZXhwID0gZXhwLnRyaW0oKTsKKyAgICAgICAgICBjYWNoZUtleSA9IGV4cDsKKwor
ICAgICAgICAgIHZhciBjYWNoZSA9IChleHBlbnNpdmVDaGVja3MgPyBjYWNoZUV4cGVuc2l2ZSA6
IGNhY2hlRGVmYXVsdCk7CisgICAgICAgICAgcGFyc2VkRXhwcmVzc2lvbiA9IGNhY2hlW2NhY2hl
S2V5XTsKKworICAgICAgICAgIGlmICghcGFyc2VkRXhwcmVzc2lvbikgeworICAgICAgICAgICAg
aWYgKGV4cC5jaGFyQXQoMCkgPT09ICc6JyAmJiBleHAuY2hhckF0KDEpID09PSAnOicpIHsKKyAg
ICAgICAgICAgICAgb25lVGltZSA9IHRydWU7CisgICAgICAgICAgICAgIGV4cCA9IGV4cC5zdWJz
dHJpbmcoMik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB2YXIgcGFyc2VPcHRpb25zID0g
ZXhwZW5zaXZlQ2hlY2tzID8gJHBhcnNlT3B0aW9uc0V4cGVuc2l2ZSA6ICRwYXJzZU9wdGlvbnM7
CisgICAgICAgICAgICB2YXIgbGV4ZXIgPSBuZXcgTGV4ZXIocGFyc2VPcHRpb25zKTsKKyAgICAg
ICAgICAgIHZhciBwYXJzZXIgPSBuZXcgUGFyc2VyKGxleGVyLCAkZmlsdGVyLCBwYXJzZU9wdGlv
bnMpOworICAgICAgICAgICAgcGFyc2VkRXhwcmVzc2lvbiA9IHBhcnNlci5wYXJzZShleHApOwor
ICAgICAgICAgICAgaWYgKHBhcnNlZEV4cHJlc3Npb24uY29uc3RhbnQpIHsKKyAgICAgICAgICAg
ICAgcGFyc2VkRXhwcmVzc2lvbi4kJHdhdGNoRGVsZWdhdGUgPSBjb25zdGFudFdhdGNoRGVsZWdh
dGU7CisgICAgICAgICAgICB9IGVsc2UgaWYgKG9uZVRpbWUpIHsKKyAgICAgICAgICAgICAgcGFy
c2VkRXhwcmVzc2lvbi4kJHdhdGNoRGVsZWdhdGUgPSBwYXJzZWRFeHByZXNzaW9uLmxpdGVyYWwg
PworICAgICAgICAgICAgICAgICAgb25lVGltZUxpdGVyYWxXYXRjaERlbGVnYXRlIDogb25lVGlt
ZVdhdGNoRGVsZWdhdGU7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHBhcnNlZEV4cHJlc3Npb24u
aW5wdXRzKSB7CisgICAgICAgICAgICAgIHBhcnNlZEV4cHJlc3Npb24uJCR3YXRjaERlbGVnYXRl
ID0gaW5wdXRzV2F0Y2hEZWxlZ2F0ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhY2hl
W2NhY2hlS2V5XSA9IHBhcnNlZEV4cHJlc3Npb247CisgICAgICAgICAgfQorICAgICAgICAgIHJl
dHVybiBhZGRJbnRlcmNlcHRvcihwYXJzZWRFeHByZXNzaW9uLCBpbnRlcmNlcHRvckZuKTsKKwor
ICAgICAgICBjYXNlICdmdW5jdGlvbic6CisgICAgICAgICAgcmV0dXJuIGFkZEludGVyY2VwdG9y
KGV4cCwgaW50ZXJjZXB0b3JGbik7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICByZXR1
cm4gbm9vcDsKKyAgICAgIH0KKyAgICB9OworCisgICAgZnVuY3Rpb24gZXhwcmVzc2lvbklucHV0
RGlydHlDaGVjayhuZXdWYWx1ZSwgb2xkVmFsdWVPZlZhbHVlKSB7CisKKyAgICAgIGlmIChuZXdW
YWx1ZSA9PSBudWxsIHx8IG9sZFZhbHVlT2ZWYWx1ZSA9PSBudWxsKSB7IC8vIG51bGwvdW5kZWZp
bmVkCisgICAgICAgIHJldHVybiBuZXdWYWx1ZSA9PT0gb2xkVmFsdWVPZlZhbHVlOworICAgICAg
fQorCisgICAgICBpZiAodHlwZW9mIG5ld1ZhbHVlID09PSAnb2JqZWN0JykgeworCisgICAgICAg
IC8vIGF0dGVtcHQgdG8gY29udmVydCB0aGUgdmFsdWUgdG8gYSBwcmltaXRpdmUgdHlwZQorICAg
ICAgICAvLyBUT0RPKGRvY3MpOiBhZGQgYSBub3RlIHRvIGRvY3MgdGhhdCBieSBpbXBsZW1lbnRp
bmcgdmFsdWVPZiBldmVuIG9iamVjdHMgYW5kIGFycmF5cyBjYW4KKyAgICAgICAgLy8gICAgICAg
ICAgICAgYmUgY2hlYXBseSBkaXJ0eS1jaGVja2VkCisgICAgICAgIG5ld1ZhbHVlID0gZ2V0VmFs
dWVPZihuZXdWYWx1ZSk7CisKKyAgICAgICAgaWYgKHR5cGVvZiBuZXdWYWx1ZSA9PT0gJ29iamVj
dCcpIHsKKyAgICAgICAgICAvLyBvYmplY3RzL2FycmF5cyBhcmUgbm90IHN1cHBvcnRlZCAtIGRl
ZXAtd2F0Y2hpbmcgdGhlbSB3b3VsZCBiZSB0b28gZXhwZW5zaXZlCisgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgLy8gZmFsbC10aHJvdWdoIHRvIHRoZSBwcmlt
aXRpdmUgZXF1YWxpdHkgY2hlY2sKKyAgICAgIH0KKworICAgICAgLy9QcmltaXRpdmUgb3IgTmFO
CisgICAgICByZXR1cm4gbmV3VmFsdWUgPT09IG9sZFZhbHVlT2ZWYWx1ZSB8fCAobmV3VmFsdWUg
IT09IG5ld1ZhbHVlICYmIG9sZFZhbHVlT2ZWYWx1ZSAhPT0gb2xkVmFsdWVPZlZhbHVlKTsKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiBpbnB1dHNXYXRjaERlbGVnYXRlKHNjb3BlLCBsaXN0ZW5lciwg
b2JqZWN0RXF1YWxpdHksIHBhcnNlZEV4cHJlc3Npb24sIHByZXR0eVByaW50RXhwcmVzc2lvbikg
eworICAgICAgdmFyIGlucHV0RXhwcmVzc2lvbnMgPSBwYXJzZWRFeHByZXNzaW9uLmlucHV0czsK
KyAgICAgIHZhciBsYXN0UmVzdWx0OworCisgICAgICBpZiAoaW5wdXRFeHByZXNzaW9ucy5sZW5n
dGggPT09IDEpIHsKKyAgICAgICAgdmFyIG9sZElucHV0VmFsdWVPZiA9IGV4cHJlc3Npb25JbnB1
dERpcnR5Q2hlY2s7IC8vIGluaXQgdG8gc29tZXRoaW5nIHVuaXF1ZSBzbyB0aGF0IGVxdWFscyBj
aGVjayBmYWlscworICAgICAgICBpbnB1dEV4cHJlc3Npb25zID0gaW5wdXRFeHByZXNzaW9uc1sw
XTsKKyAgICAgICAgcmV0dXJuIHNjb3BlLiR3YXRjaChmdW5jdGlvbiBleHByZXNzaW9uSW5wdXRX
YXRjaChzY29wZSkgeworICAgICAgICAgIHZhciBuZXdJbnB1dFZhbHVlID0gaW5wdXRFeHByZXNz
aW9ucyhzY29wZSk7CisgICAgICAgICAgaWYgKCFleHByZXNzaW9uSW5wdXREaXJ0eUNoZWNrKG5l
d0lucHV0VmFsdWUsIG9sZElucHV0VmFsdWVPZikpIHsKKyAgICAgICAgICAgIGxhc3RSZXN1bHQg
PSBwYXJzZWRFeHByZXNzaW9uKHNjb3BlLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgW25ld0lucHV0
VmFsdWVdKTsKKyAgICAgICAgICAgIG9sZElucHV0VmFsdWVPZiA9IG5ld0lucHV0VmFsdWUgJiYg
Z2V0VmFsdWVPZihuZXdJbnB1dFZhbHVlKTsKKyAgICAgICAgICB9CisgICAgICAgICAgcmV0dXJu
IGxhc3RSZXN1bHQ7CisgICAgICAgIH0sIGxpc3RlbmVyLCBvYmplY3RFcXVhbGl0eSwgcHJldHR5
UHJpbnRFeHByZXNzaW9uKTsKKyAgICAgIH0KKworICAgICAgdmFyIG9sZElucHV0VmFsdWVPZlZh
bHVlcyA9IFtdOworICAgICAgdmFyIG9sZElucHV0VmFsdWVzID0gW107CisgICAgICBmb3IgKHZh
ciBpID0gMCwgaWkgPSBpbnB1dEV4cHJlc3Npb25zLmxlbmd0aDsgaSA8IGlpOyBpKyspIHsKKyAg
ICAgICAgb2xkSW5wdXRWYWx1ZU9mVmFsdWVzW2ldID0gZXhwcmVzc2lvbklucHV0RGlydHlDaGVj
azsgLy8gaW5pdCB0byBzb21ldGhpbmcgdW5pcXVlIHNvIHRoYXQgZXF1YWxzIGNoZWNrIGZhaWxz
CisgICAgICAgIG9sZElucHV0VmFsdWVzW2ldID0gbnVsbDsKKyAgICAgIH0KKworICAgICAgcmV0
dXJuIHNjb3BlLiR3YXRjaChmdW5jdGlvbiBleHByZXNzaW9uSW5wdXRzV2F0Y2goc2NvcGUpIHsK
KyAgICAgICAgdmFyIGNoYW5nZWQgPSBmYWxzZTsKKworICAgICAgICBmb3IgKHZhciBpID0gMCwg
aWkgPSBpbnB1dEV4cHJlc3Npb25zLmxlbmd0aDsgaSA8IGlpOyBpKyspIHsKKyAgICAgICAgICB2
YXIgbmV3SW5wdXRWYWx1ZSA9IGlucHV0RXhwcmVzc2lvbnNbaV0oc2NvcGUpOworICAgICAgICAg
IGlmIChjaGFuZ2VkIHx8IChjaGFuZ2VkID0gIWV4cHJlc3Npb25JbnB1dERpcnR5Q2hlY2sobmV3
SW5wdXRWYWx1ZSwgb2xkSW5wdXRWYWx1ZU9mVmFsdWVzW2ldKSkpIHsKKyAgICAgICAgICAgIG9s
ZElucHV0VmFsdWVzW2ldID0gbmV3SW5wdXRWYWx1ZTsKKyAgICAgICAgICAgIG9sZElucHV0VmFs
dWVPZlZhbHVlc1tpXSA9IG5ld0lucHV0VmFsdWUgJiYgZ2V0VmFsdWVPZihuZXdJbnB1dFZhbHVl
KTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoY2hhbmdlZCkgeworICAg
ICAgICAgIGxhc3RSZXN1bHQgPSBwYXJzZWRFeHByZXNzaW9uKHNjb3BlLCB1bmRlZmluZWQsIHVu
ZGVmaW5lZCwgb2xkSW5wdXRWYWx1ZXMpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGxh
c3RSZXN1bHQ7CisgICAgICB9LCBsaXN0ZW5lciwgb2JqZWN0RXF1YWxpdHksIHByZXR0eVByaW50
RXhwcmVzc2lvbik7CisgICAgfQorCisgICAgZnVuY3Rpb24gb25lVGltZVdhdGNoRGVsZWdhdGUo
c2NvcGUsIGxpc3RlbmVyLCBvYmplY3RFcXVhbGl0eSwgcGFyc2VkRXhwcmVzc2lvbikgeworICAg
ICAgdmFyIHVud2F0Y2gsIGxhc3RWYWx1ZTsKKyAgICAgIHJldHVybiB1bndhdGNoID0gc2NvcGUu
JHdhdGNoKGZ1bmN0aW9uIG9uZVRpbWVXYXRjaChzY29wZSkgeworICAgICAgICByZXR1cm4gcGFy
c2VkRXhwcmVzc2lvbihzY29wZSk7CisgICAgICB9LCBmdW5jdGlvbiBvbmVUaW1lTGlzdGVuZXIo
dmFsdWUsIG9sZCwgc2NvcGUpIHsKKyAgICAgICAgbGFzdFZhbHVlID0gdmFsdWU7CisgICAgICAg
IGlmIChpc0Z1bmN0aW9uKGxpc3RlbmVyKSkgeworICAgICAgICAgIGxpc3RlbmVyLmFwcGx5KHRo
aXMsIGFyZ3VtZW50cyk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGlzRGVmaW5lZCh2YWx1ZSkp
IHsKKyAgICAgICAgICBzY29wZS4kJHBvc3REaWdlc3QoZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICBpZiAoaXNEZWZpbmVkKGxhc3RWYWx1ZSkpIHsKKyAgICAgICAgICAgICAgdW53YXRjaCgpOwor
ICAgICAgICAgICAgfQorICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgICB9LCBvYmplY3RF
cXVhbGl0eSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gb25lVGltZUxpdGVyYWxXYXRjaERlbGVn
YXRlKHNjb3BlLCBsaXN0ZW5lciwgb2JqZWN0RXF1YWxpdHksIHBhcnNlZEV4cHJlc3Npb24pIHsK
KyAgICAgIHZhciB1bndhdGNoLCBsYXN0VmFsdWU7CisgICAgICByZXR1cm4gdW53YXRjaCA9IHNj
b3BlLiR3YXRjaChmdW5jdGlvbiBvbmVUaW1lV2F0Y2goc2NvcGUpIHsKKyAgICAgICAgcmV0dXJu
IHBhcnNlZEV4cHJlc3Npb24oc2NvcGUpOworICAgICAgfSwgZnVuY3Rpb24gb25lVGltZUxpc3Rl
bmVyKHZhbHVlLCBvbGQsIHNjb3BlKSB7CisgICAgICAgIGxhc3RWYWx1ZSA9IHZhbHVlOworICAg
ICAgICBpZiAoaXNGdW5jdGlvbihsaXN0ZW5lcikpIHsKKyAgICAgICAgICBsaXN0ZW5lci5jYWxs
KHRoaXMsIHZhbHVlLCBvbGQsIHNjb3BlKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoaXNBbGxE
ZWZpbmVkKHZhbHVlKSkgeworICAgICAgICAgIHNjb3BlLiQkcG9zdERpZ2VzdChmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgIGlmIChpc0FsbERlZmluZWQobGFzdFZhbHVlKSkgdW53YXRjaCgpOwor
ICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgICB9LCBvYmplY3RFcXVhbGl0eSk7CisKKyAg
ICAgIGZ1bmN0aW9uIGlzQWxsRGVmaW5lZCh2YWx1ZSkgeworICAgICAgICB2YXIgYWxsRGVmaW5l
ZCA9IHRydWU7CisgICAgICAgIGZvckVhY2godmFsdWUsIGZ1bmN0aW9uKHZhbCkgeworICAgICAg
ICAgIGlmICghaXNEZWZpbmVkKHZhbCkpIGFsbERlZmluZWQgPSBmYWxzZTsKKyAgICAgICAgfSk7
CisgICAgICAgIHJldHVybiBhbGxEZWZpbmVkOworICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0
aW9uIGNvbnN0YW50V2F0Y2hEZWxlZ2F0ZShzY29wZSwgbGlzdGVuZXIsIG9iamVjdEVxdWFsaXR5
LCBwYXJzZWRFeHByZXNzaW9uKSB7CisgICAgICB2YXIgdW53YXRjaDsKKyAgICAgIHJldHVybiB1
bndhdGNoID0gc2NvcGUuJHdhdGNoKGZ1bmN0aW9uIGNvbnN0YW50V2F0Y2goc2NvcGUpIHsKKyAg
ICAgICAgcmV0dXJuIHBhcnNlZEV4cHJlc3Npb24oc2NvcGUpOworICAgICAgfSwgZnVuY3Rpb24g
Y29uc3RhbnRMaXN0ZW5lcih2YWx1ZSwgb2xkLCBzY29wZSkgeworICAgICAgICBpZiAoaXNGdW5j
dGlvbihsaXN0ZW5lcikpIHsKKyAgICAgICAgICBsaXN0ZW5lci5hcHBseSh0aGlzLCBhcmd1bWVu
dHMpOworICAgICAgICB9CisgICAgICAgIHVud2F0Y2goKTsKKyAgICAgIH0sIG9iamVjdEVxdWFs
aXR5KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBhZGRJbnRlcmNlcHRvcihwYXJzZWRFeHByZXNz
aW9uLCBpbnRlcmNlcHRvckZuKSB7CisgICAgICBpZiAoIWludGVyY2VwdG9yRm4pIHJldHVybiBw
YXJzZWRFeHByZXNzaW9uOworICAgICAgdmFyIHdhdGNoRGVsZWdhdGUgPSBwYXJzZWRFeHByZXNz
aW9uLiQkd2F0Y2hEZWxlZ2F0ZTsKKworICAgICAgdmFyIHJlZ3VsYXJXYXRjaCA9CisgICAgICAg
ICAgd2F0Y2hEZWxlZ2F0ZSAhPT0gb25lVGltZUxpdGVyYWxXYXRjaERlbGVnYXRlICYmCisgICAg
ICAgICAgd2F0Y2hEZWxlZ2F0ZSAhPT0gb25lVGltZVdhdGNoRGVsZWdhdGU7CisKKyAgICAgIHZh
ciBmbiA9IHJlZ3VsYXJXYXRjaCA/IGZ1bmN0aW9uIHJlZ3VsYXJJbnRlcmNlcHRlZEV4cHJlc3Np
b24oc2NvcGUsIGxvY2FscywgYXNzaWduLCBpbnB1dHMpIHsKKyAgICAgICAgdmFyIHZhbHVlID0g
cGFyc2VkRXhwcmVzc2lvbihzY29wZSwgbG9jYWxzLCBhc3NpZ24sIGlucHV0cyk7CisgICAgICAg
IHJldHVybiBpbnRlcmNlcHRvckZuKHZhbHVlLCBzY29wZSwgbG9jYWxzKTsKKyAgICAgIH0gOiBm
dW5jdGlvbiBvbmVUaW1lSW50ZXJjZXB0ZWRFeHByZXNzaW9uKHNjb3BlLCBsb2NhbHMsIGFzc2ln
biwgaW5wdXRzKSB7CisgICAgICAgIHZhciB2YWx1ZSA9IHBhcnNlZEV4cHJlc3Npb24oc2NvcGUs
IGxvY2FscywgYXNzaWduLCBpbnB1dHMpOworICAgICAgICB2YXIgcmVzdWx0ID0gaW50ZXJjZXB0
b3JGbih2YWx1ZSwgc2NvcGUsIGxvY2Fscyk7CisgICAgICAgIC8vIHdlIG9ubHkgcmV0dXJuIHRo
ZSBpbnRlcmNlcHRvcidzIHJlc3VsdCBpZiB0aGUKKyAgICAgICAgLy8gaW5pdGlhbCB2YWx1ZSBp
cyBkZWZpbmVkIChmb3IgYmluZC1vbmNlKQorICAgICAgICByZXR1cm4gaXNEZWZpbmVkKHZhbHVl
KSA/IHJlc3VsdCA6IHZhbHVlOworICAgICAgfTsKKworICAgICAgLy8gUHJvcGFnYXRlICQkd2F0
Y2hEZWxlZ2F0ZXMgb3RoZXIgdGhlbiBpbnB1dHNXYXRjaERlbGVnYXRlCisgICAgICBpZiAocGFy
c2VkRXhwcmVzc2lvbi4kJHdhdGNoRGVsZWdhdGUgJiYKKyAgICAgICAgICBwYXJzZWRFeHByZXNz
aW9uLiQkd2F0Y2hEZWxlZ2F0ZSAhPT0gaW5wdXRzV2F0Y2hEZWxlZ2F0ZSkgeworICAgICAgICBm
bi4kJHdhdGNoRGVsZWdhdGUgPSBwYXJzZWRFeHByZXNzaW9uLiQkd2F0Y2hEZWxlZ2F0ZTsKKyAg
ICAgIH0gZWxzZSBpZiAoIWludGVyY2VwdG9yRm4uJHN0YXRlZnVsKSB7CisgICAgICAgIC8vIElm
IHRoZXJlIGlzIGFuIGludGVyY2VwdG9yLCBidXQgbm8gd2F0Y2hEZWxlZ2F0ZSB0aGVuIHRyZWF0
IHRoZSBpbnRlcmNlcHRvciBsaWtlCisgICAgICAgIC8vIHdlIHRyZWF0IGZpbHRlcnMgLSBpdCBp
cyBhc3N1bWVkIHRvIGJlIGEgcHVyZSBmdW5jdGlvbiB1bmxlc3MgZmxhZ2dlZCB3aXRoICRzdGF0
ZWZ1bAorICAgICAgICBmbi4kJHdhdGNoRGVsZWdhdGUgPSBpbnB1dHNXYXRjaERlbGVnYXRlOwor
ICAgICAgICBmbi5pbnB1dHMgPSBwYXJzZWRFeHByZXNzaW9uLmlucHV0cyA/IHBhcnNlZEV4cHJl
c3Npb24uaW5wdXRzIDogW3BhcnNlZEV4cHJlc3Npb25dOworICAgICAgfQorCisgICAgICByZXR1
cm4gZm47CisgICAgfQorICB9XTsKK30KKworLyoqCisgKiBAbmdkb2Mgc2VydmljZQorICogQG5h
bWUgJHEKKyAqIEByZXF1aXJlcyAkcm9vdFNjb3BlCisgKgorICogQGRlc2NyaXB0aW9uCisgKiBB
IHNlcnZpY2UgdGhhdCBoZWxwcyB5b3UgcnVuIGZ1bmN0aW9ucyBhc3luY2hyb25vdXNseSwgYW5k
IHVzZSB0aGVpciByZXR1cm4gdmFsdWVzIChvciBleGNlcHRpb25zKQorICogd2hlbiB0aGV5IGFy
ZSBkb25lIHByb2Nlc3NpbmcuCisgKgorICogVGhpcyBpcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiBw
cm9taXNlcy9kZWZlcnJlZCBvYmplY3RzIGluc3BpcmVkIGJ5CisgKiBbS3JpcyBLb3dhbCdzIFFd
KGh0dHBzOi8vZ2l0aHViLmNvbS9rcmlza293YWwvcSkuCisgKgorICogJHEgY2FuIGJlIHVzZWQg
aW4gdHdvIGZhc2hpb25zIC0tLSBvbmUgd2hpY2ggaXMgbW9yZSBzaW1pbGFyIHRvIEtyaXMgS293
YWwncyBRIG9yIGpRdWVyeSdzIERlZmVycmVkCisgKiBpbXBsZW1lbnRhdGlvbnMsIGFuZCB0aGUg
b3RoZXIgd2hpY2ggcmVzZW1ibGVzIEVTNiBwcm9taXNlcyB0byBzb21lIGRlZ3JlZS4KKyAqCisg
KiAjICRxIGNvbnN0cnVjdG9yCisgKgorICogVGhlIHN0cmVhbWxpbmVkIEVTNiBzdHlsZSBwcm9t
aXNlIGlzIGVzc2VudGlhbGx5IGp1c3QgdXNpbmcgJHEgYXMgYSBjb25zdHJ1Y3RvciB3aGljaCB0
YWtlcyBhIGByZXNvbHZlcmAKKyAqIGZ1bmN0aW9uIGFzIHRoZSBmaXJzdCBhcmd1bWVudC4gVGhp
cyBpcyBzaW1pbGFyIHRvIHRoZSBuYXRpdmUgUHJvbWlzZSBpbXBsZW1lbnRhdGlvbiBmcm9tIEVT
NiBIYXJtb255LAorICogc2VlIFtNRE5dKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2Vu
LVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL1Byb21pc2Up
LgorICoKKyAqIFdoaWxlIHRoZSBjb25zdHJ1Y3Rvci1zdHlsZSB1c2UgaXMgc3VwcG9ydGVkLCBu
b3QgYWxsIG9mIHRoZSBzdXBwb3J0aW5nIG1ldGhvZHMgZnJvbSBFUzYgSGFybW9ueSBwcm9taXNl
cyBhcmUKKyAqIGF2YWlsYWJsZSB5ZXQuCisgKgorICogSXQgY2FuIGJlIHVzZWQgbGlrZSBzbzoK
KyAqCisgKiBgYGBqcworICogICAvLyBmb3IgdGhlIHB1cnBvc2Ugb2YgdGhpcyBleGFtcGxlIGxl
dCdzIGFzc3VtZSB0aGF0IHZhcmlhYmxlcyBgJHFgIGFuZCBgb2tUb0dyZWV0YAorICogICAvLyBh
cmUgYXZhaWxhYmxlIGluIHRoZSBjdXJyZW50IGxleGljYWwgc2NvcGUgKHRoZXkgY291bGQgaGF2
ZSBiZWVuIGluamVjdGVkIG9yIHBhc3NlZCBpbikuCisgKgorICogICBmdW5jdGlvbiBhc3luY0dy
ZWV0KG5hbWUpIHsKKyAqICAgICAvLyBwZXJmb3JtIHNvbWUgYXN5bmNocm9ub3VzIG9wZXJhdGlv
biwgcmVzb2x2ZSBvciByZWplY3QgdGhlIHByb21pc2Ugd2hlbiBhcHByb3ByaWF0ZS4KKyAqICAg
ICByZXR1cm4gJHEoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7CisgKiAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeworICogICAgICAgICBpZiAob2tUb0dyZWV0KG5hbWUpKSB7CisgKiAg
ICAgICAgICAgcmVzb2x2ZSgnSGVsbG8sICcgKyBuYW1lICsgJyEnKTsKKyAqICAgICAgICAgfSBl
bHNlIHsKKyAqICAgICAgICAgICByZWplY3QoJ0dyZWV0aW5nICcgKyBuYW1lICsgJyBpcyBub3Qg
YWxsb3dlZC4nKTsKKyAqICAgICAgICAgfQorICogICAgICAgfSwgMTAwMCk7CisgKiAgICAgfSk7
CisgKiAgIH0KKyAqCisgKiAgIHZhciBwcm9taXNlID0gYXN5bmNHcmVldCgnUm9iaW4gSG9vZCcp
OworICogICBwcm9taXNlLnRoZW4oZnVuY3Rpb24oZ3JlZXRpbmcpIHsKKyAqICAgICBhbGVydCgn
U3VjY2VzczogJyArIGdyZWV0aW5nKTsKKyAqICAgfSwgZnVuY3Rpb24ocmVhc29uKSB7CisgKiAg
ICAgYWxlcnQoJ0ZhaWxlZDogJyArIHJlYXNvbik7CisgKiAgIH0pOworICogYGBgCisgKgorICog
Tm90ZTogcHJvZ3Jlc3Mvbm90aWZ5IGNhbGxiYWNrcyBhcmUgbm90IGN1cnJlbnRseSBzdXBwb3J0
ZWQgdmlhIHRoZSBFUzYtc3R5bGUgaW50ZXJmYWNlLgorICoKKyAqIEhvd2V2ZXIsIHRoZSBtb3Jl
IHRyYWRpdGlvbmFsIENvbW1vbkpTLXN0eWxlIHVzYWdlIGlzIHN0aWxsIGF2YWlsYWJsZSwgYW5k
IGRvY3VtZW50ZWQgYmVsb3cuCisgKgorICogW1RoZSBDb21tb25KUyBQcm9taXNlIHByb3Bvc2Fs
XShodHRwOi8vd2lraS5jb21tb25qcy5vcmcvd2lraS9Qcm9taXNlcykgZGVzY3JpYmVzIGEgcHJv
bWlzZSBhcyBhbgorICogaW50ZXJmYWNlIGZvciBpbnRlcmFjdGluZyB3aXRoIGFuIG9iamVjdCB0
aGF0IHJlcHJlc2VudHMgdGhlIHJlc3VsdCBvZiBhbiBhY3Rpb24gdGhhdCBpcworICogcGVyZm9y
bWVkIGFzeW5jaHJvbm91c2x5LCBhbmQgbWF5IG9yIG1heSBub3QgYmUgZmluaXNoZWQgYXQgYW55
IGdpdmVuIHBvaW50IGluIHRpbWUuCisgKgorICogRnJvbSB0aGUgcGVyc3BlY3RpdmUgb2YgZGVh
bGluZyB3aXRoIGVycm9yIGhhbmRsaW5nLCBkZWZlcnJlZCBhbmQgcHJvbWlzZSBBUElzIGFyZSB0
bworICogYXN5bmNocm9ub3VzIHByb2dyYW1taW5nIHdoYXQgYHRyeWAsIGBjYXRjaGAgYW5kIGB0
aHJvd2Aga2V5d29yZHMgYXJlIHRvIHN5bmNocm9ub3VzIHByb2dyYW1taW5nLgorICoKKyAqIGBg
YGpzCisgKiAgIC8vIGZvciB0aGUgcHVycG9zZSBvZiB0aGlzIGV4YW1wbGUgbGV0J3MgYXNzdW1l
IHRoYXQgdmFyaWFibGVzIGAkcWAgYW5kIGBva1RvR3JlZXRgCisgKiAgIC8vIGFyZSBhdmFpbGFi
bGUgaW4gdGhlIGN1cnJlbnQgbGV4aWNhbCBzY29wZSAodGhleSBjb3VsZCBoYXZlIGJlZW4gaW5q
ZWN0ZWQgb3IgcGFzc2VkIGluKS4KKyAqCisgKiAgIGZ1bmN0aW9uIGFzeW5jR3JlZXQobmFtZSkg
eworICogICAgIHZhciBkZWZlcnJlZCA9ICRxLmRlZmVyKCk7CisgKgorICogICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7CisgKiAgICAgICBkZWZlcnJlZC5ub3RpZnkoJ0Fib3V0IHRvIGdyZWV0
ICcgKyBuYW1lICsgJy4nKTsKKyAqCisgKiAgICAgICBpZiAob2tUb0dyZWV0KG5hbWUpKSB7Cisg
KiAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoJ0hlbGxvLCAnICsgbmFtZSArICchJyk7CisgKiAg
ICAgICB9IGVsc2UgeworICogICAgICAgICBkZWZlcnJlZC5yZWplY3QoJ0dyZWV0aW5nICcgKyBu
YW1lICsgJyBpcyBub3QgYWxsb3dlZC4nKTsKKyAqICAgICAgIH0KKyAqICAgICB9LCAxMDAwKTsK
KyAqCisgKiAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7CisgKiAgIH0KKyAqCisgKiAgIHZh
ciBwcm9taXNlID0gYXN5bmNHcmVldCgnUm9iaW4gSG9vZCcpOworICogICBwcm9taXNlLnRoZW4o
ZnVuY3Rpb24oZ3JlZXRpbmcpIHsKKyAqICAgICBhbGVydCgnU3VjY2VzczogJyArIGdyZWV0aW5n
KTsKKyAqICAgfSwgZnVuY3Rpb24ocmVhc29uKSB7CisgKiAgICAgYWxlcnQoJ0ZhaWxlZDogJyAr
IHJlYXNvbik7CisgKiAgIH0sIGZ1bmN0aW9uKHVwZGF0ZSkgeworICogICAgIGFsZXJ0KCdHb3Qg
bm90aWZpY2F0aW9uOiAnICsgdXBkYXRlKTsKKyAqICAgfSk7CisgKiBgYGAKKyAqCisgKiBBdCBm
aXJzdCBpdCBtaWdodCBub3QgYmUgb2J2aW91cyB3aHkgdGhpcyBleHRyYSBjb21wbGV4aXR5IGlz
IHdvcnRoIHRoZSB0cm91YmxlLiBUaGUgcGF5b2ZmCisgKiBjb21lcyBpbiB0aGUgd2F5IG9mIGd1
YXJhbnRlZXMgdGhhdCBwcm9taXNlIGFuZCBkZWZlcnJlZCBBUElzIG1ha2UsIHNlZQorICogaHR0
cHM6Ly9naXRodWIuY29tL2tyaXNrb3dhbC91bmNvbW1vbmpzL2Jsb2IvbWFzdGVyL3Byb21pc2Vz
L3NwZWNpZmljYXRpb24ubWQuCisgKgorICogQWRkaXRpb25hbGx5IHRoZSBwcm9taXNlIGFwaSBh
bGxvd3MgZm9yIGNvbXBvc2l0aW9uIHRoYXQgaXMgdmVyeSBoYXJkIHRvIGRvIHdpdGggdGhlCisg
KiB0cmFkaXRpb25hbCBjYWxsYmFjayAoW0NQU10oaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lr
aS9Db250aW51YXRpb24tcGFzc2luZ19zdHlsZSkpIGFwcHJvYWNoLgorICogRm9yIG1vcmUgb24g
dGhpcyBwbGVhc2Ugc2VlIHRoZSBbUSBkb2N1bWVudGF0aW9uXShodHRwczovL2dpdGh1Yi5jb20v
a3Jpc2tvd2FsL3EpIGVzcGVjaWFsbHkgdGhlCisgKiBzZWN0aW9uIG9uIHNlcmlhbCBvciBwYXJh
bGxlbCBqb2luaW5nIG9mIHByb21pc2VzLgorICoKKyAqICMgVGhlIERlZmVycmVkIEFQSQorICoK
KyAqIEEgbmV3IGluc3RhbmNlIG9mIGRlZmVycmVkIGlzIGNvbnN0cnVjdGVkIGJ5IGNhbGxpbmcg
YCRxLmRlZmVyKClgLgorICoKKyAqIFRoZSBwdXJwb3NlIG9mIHRoZSBkZWZlcnJlZCBvYmplY3Qg
aXMgdG8gZXhwb3NlIHRoZSBhc3NvY2lhdGVkIFByb21pc2UgaW5zdGFuY2UgYXMgd2VsbCBhcyBB
UElzCisgKiB0aGF0IGNhbiBiZSB1c2VkIGZvciBzaWduYWxpbmcgdGhlIHN1Y2Nlc3NmdWwgb3Ig
dW5zdWNjZXNzZnVsIGNvbXBsZXRpb24sIGFzIHdlbGwgYXMgdGhlIHN0YXR1cworICogb2YgdGhl
IHRhc2suCisgKgorICogKipNZXRob2RzKioKKyAqCisgKiAtIGByZXNvbHZlKHZhbHVlKWAg4oCT
IHJlc29sdmVzIHRoZSBkZXJpdmVkIHByb21pc2Ugd2l0aCB0aGUgYHZhbHVlYC4gSWYgdGhlIHZh
bHVlIGlzIGEgcmVqZWN0aW9uCisgKiAgIGNvbnN0cnVjdGVkIHZpYSBgJHEucmVqZWN0YCwgdGhl
IHByb21pc2Ugd2lsbCBiZSByZWplY3RlZCBpbnN0ZWFkLgorICogLSBgcmVqZWN0KHJlYXNvbilg
IOKAkyByZWplY3RzIHRoZSBkZXJpdmVkIHByb21pc2Ugd2l0aCB0aGUgYHJlYXNvbmAuIFRoaXMg
aXMgZXF1aXZhbGVudCB0bworICogICByZXNvbHZpbmcgaXQgd2l0aCBhIHJlamVjdGlvbiBjb25z
dHJ1Y3RlZCB2aWEgYCRxLnJlamVjdGAuCisgKiAtIGBub3RpZnkodmFsdWUpYCAtIHByb3ZpZGVz
IHVwZGF0ZXMgb24gdGhlIHN0YXR1cyBvZiB0aGUgcHJvbWlzZSdzIGV4ZWN1dGlvbi4gVGhpcyBt
YXkgYmUgY2FsbGVkCisgKiAgIG11bHRpcGxlIHRpbWVzIGJlZm9yZSB0aGUgcHJvbWlzZSBpcyBl
aXRoZXIgcmVzb2x2ZWQgb3IgcmVqZWN0ZWQuCisgKgorICogKipQcm9wZXJ0aWVzKioKKyAqCisg
KiAtIHByb21pc2Ug4oCTIGB7UHJvbWlzZX1gIOKAkyBwcm9taXNlIG9iamVjdCBhc3NvY2lhdGVk
IHdpdGggdGhpcyBkZWZlcnJlZC4KKyAqCisgKgorICogIyBUaGUgUHJvbWlzZSBBUEkKKyAqCisg
KiBBIG5ldyBwcm9taXNlIGluc3RhbmNlIGlzIGNyZWF0ZWQgd2hlbiBhIGRlZmVycmVkIGluc3Rh
bmNlIGlzIGNyZWF0ZWQgYW5kIGNhbiBiZSByZXRyaWV2ZWQgYnkKKyAqIGNhbGxpbmcgYGRlZmVy
cmVkLnByb21pc2VgLgorICoKKyAqIFRoZSBwdXJwb3NlIG9mIHRoZSBwcm9taXNlIG9iamVjdCBp
cyB0byBhbGxvdyBmb3IgaW50ZXJlc3RlZCBwYXJ0aWVzIHRvIGdldCBhY2Nlc3MgdG8gdGhlIHJl
c3VsdAorICogb2YgdGhlIGRlZmVycmVkIHRhc2sgd2hlbiBpdCBjb21wbGV0ZXMuCisgKgorICog
KipNZXRob2RzKioKKyAqCisgKiAtIGB0aGVuKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFj
aywgbm90aWZ5Q2FsbGJhY2spYCDigJMgcmVnYXJkbGVzcyBvZiB3aGVuIHRoZSBwcm9taXNlIHdh
cyBvcgorICogICB3aWxsIGJlIHJlc29sdmVkIG9yIHJlamVjdGVkLCBgdGhlbmAgY2FsbHMgb25l
IG9mIHRoZSBzdWNjZXNzIG9yIGVycm9yIGNhbGxiYWNrcyBhc3luY2hyb25vdXNseQorICogICBh
cyBzb29uIGFzIHRoZSByZXN1bHQgaXMgYXZhaWxhYmxlLiBUaGUgY2FsbGJhY2tzIGFyZSBjYWxs
ZWQgd2l0aCBhIHNpbmdsZSBhcmd1bWVudDogdGhlIHJlc3VsdAorICogICBvciByZWplY3Rpb24g
cmVhc29uLiBBZGRpdGlvbmFsbHksIHRoZSBub3RpZnkgY2FsbGJhY2sgbWF5IGJlIGNhbGxlZCB6
ZXJvIG9yIG1vcmUgdGltZXMgdG8KKyAqICAgcHJvdmlkZSBhIHByb2dyZXNzIGluZGljYXRpb24s
IGJlZm9yZSB0aGUgcHJvbWlzZSBpcyByZXNvbHZlZCBvciByZWplY3RlZC4KKyAqCisgKiAgIFRo
aXMgbWV0aG9kICpyZXR1cm5zIGEgbmV3IHByb21pc2UqIHdoaWNoIGlzIHJlc29sdmVkIG9yIHJl
amVjdGVkIHZpYSB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZQorICogICBgc3VjY2Vzc0NhbGxiYWNr
YCwgYGVycm9yQ2FsbGJhY2tgICh1bmxlc3MgdGhhdCB2YWx1ZSBpcyBhIHByb21pc2UsIGluIHdo
aWNoIGNhc2UgaXQgaXMgcmVzb2x2ZWQKKyAqICAgd2l0aCB0aGUgdmFsdWUgd2hpY2ggaXMgcmVz
b2x2ZWQgaW4gdGhhdCBwcm9taXNlIHVzaW5nCisgKiAgIFtwcm9taXNlIGNoYWluaW5nXShodHRw
Oi8vd3d3Lmh0bWw1cm9ja3MuY29tL2VuL3R1dG9yaWFscy9lczYvcHJvbWlzZXMvI3RvYy1wcm9t
aXNlcy1xdWV1ZXMpKS4KKyAqICAgSXQgYWxzbyBub3RpZmllcyB2aWEgdGhlIHJldHVybiB2YWx1
ZSBvZiB0aGUgYG5vdGlmeUNhbGxiYWNrYCBtZXRob2QuIFRoZSBwcm9taXNlIGNhbm5vdCBiZQor
ICogICByZXNvbHZlZCBvciByZWplY3RlZCBmcm9tIHRoZSBub3RpZnlDYWxsYmFjayBtZXRob2Qu
CisgKgorICogLSBgY2F0Y2goZXJyb3JDYWxsYmFjaylgIOKAkyBzaG9ydGhhbmQgZm9yIGBwcm9t
aXNlLnRoZW4obnVsbCwgZXJyb3JDYWxsYmFjaylgCisgKgorICogLSBgZmluYWxseShjYWxsYmFj
aywgbm90aWZ5Q2FsbGJhY2spYCDigJMgYWxsb3dzIHlvdSB0byBvYnNlcnZlIGVpdGhlciB0aGUg
ZnVsZmlsbG1lbnQgb3IgcmVqZWN0aW9uIG9mIGEgcHJvbWlzZSwKKyAqICAgYnV0IHRvIGRvIHNv
IHdpdGhvdXQgbW9kaWZ5aW5nIHRoZSBmaW5hbCB2YWx1ZS4gVGhpcyBpcyB1c2VmdWwgdG8gcmVs
ZWFzZSByZXNvdXJjZXMgb3IgZG8gc29tZQorICogICBjbGVhbi11cCB0aGF0IG5lZWRzIHRvIGJl
IGRvbmUgd2hldGhlciB0aGUgcHJvbWlzZSB3YXMgcmVqZWN0ZWQgb3IgcmVzb2x2ZWQuIFNlZSB0
aGUgW2Z1bGwKKyAqICAgc3BlY2lmaWNhdGlvbl0oaHR0cHM6Ly9naXRodWIuY29tL2tyaXNrb3dh
bC9xL3dpa2kvQVBJLVJlZmVyZW5jZSNwcm9taXNlZmluYWxseWNhbGxiYWNrKSBmb3IKKyAqICAg
bW9yZSBpbmZvcm1hdGlvbi4KKyAqCisgKiAjIENoYWluaW5nIHByb21pc2VzCisgKgorICogQmVj
YXVzZSBjYWxsaW5nIHRoZSBgdGhlbmAgbWV0aG9kIG9mIGEgcHJvbWlzZSByZXR1cm5zIGEgbmV3
IGRlcml2ZWQgcHJvbWlzZSwgaXQgaXMgZWFzaWx5CisgKiBwb3NzaWJsZSB0byBjcmVhdGUgYSBj
aGFpbiBvZiBwcm9taXNlczoKKyAqCisgKiBgYGBqcworICogICBwcm9taXNlQiA9IHByb21pc2VB
LnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgKiAgICAgcmV0dXJuIHJlc3VsdCArIDE7CisgKiAg
IH0pOworICoKKyAqICAgLy8gcHJvbWlzZUIgd2lsbCBiZSByZXNvbHZlZCBpbW1lZGlhdGVseSBh
ZnRlciBwcm9taXNlQSBpcyByZXNvbHZlZCBhbmQgaXRzIHZhbHVlCisgKiAgIC8vIHdpbGwgYmUg
dGhlIHJlc3VsdCBvZiBwcm9taXNlQSBpbmNyZW1lbnRlZCBieSAxCisgKiBgYGAKKyAqCisgKiBJ
dCBpcyBwb3NzaWJsZSB0byBjcmVhdGUgY2hhaW5zIG9mIGFueSBsZW5ndGggYW5kIHNpbmNlIGEg
cHJvbWlzZSBjYW4gYmUgcmVzb2x2ZWQgd2l0aCBhbm90aGVyCisgKiBwcm9taXNlICh3aGljaCB3
aWxsIGRlZmVyIGl0cyByZXNvbHV0aW9uIGZ1cnRoZXIpLCBpdCBpcyBwb3NzaWJsZSB0byBwYXVz
ZS9kZWZlciByZXNvbHV0aW9uIG9mCisgKiB0aGUgcHJvbWlzZXMgYXQgYW55IHBvaW50IGluIHRo
ZSBjaGFpbi4gVGhpcyBtYWtlcyBpdCBwb3NzaWJsZSB0byBpbXBsZW1lbnQgcG93ZXJmdWwgQVBJ
cyBsaWtlCisgKiAkaHR0cCdzIHJlc3BvbnNlIGludGVyY2VwdG9ycy4KKyAqCisgKgorICogIyBE
aWZmZXJlbmNlcyBiZXR3ZWVuIEtyaXMgS293YWwncyBRIGFuZCAkcQorICoKKyAqICBUaGVyZSBh
cmUgdHdvIG1haW4gZGlmZmVyZW5jZXM6CisgKgorICogLSAkcSBpcyBpbnRlZ3JhdGVkIHdpdGgg
dGhlIHtAbGluayBuZy4kcm9vdFNjb3BlLlNjb3BlfSBTY29wZSBtb2RlbCBvYnNlcnZhdGlvbgor
ICogICBtZWNoYW5pc20gaW4gYW5ndWxhciwgd2hpY2ggbWVhbnMgZmFzdGVyIHByb3BhZ2F0aW9u
IG9mIHJlc29sdXRpb24gb3IgcmVqZWN0aW9uIGludG8geW91cgorICogICBtb2RlbHMgYW5kIGF2
b2lkaW5nIHVubmVjZXNzYXJ5IGJyb3dzZXIgcmVwYWludHMsIHdoaWNoIHdvdWxkIHJlc3VsdCBp
biBmbGlja2VyaW5nIFVJLgorICogLSBRIGhhcyBtYW55IG1vcmUgZmVhdHVyZXMgdGhhbiAkcSwg
YnV0IHRoYXQgY29tZXMgYXQgYSBjb3N0IG9mIGJ5dGVzLiAkcSBpcyB0aW55LCBidXQgY29udGFp
bnMKKyAqICAgYWxsIHRoZSBpbXBvcnRhbnQgZnVuY3Rpb25hbGl0eSBuZWVkZWQgZm9yIGNvbW1v
biBhc3luYyB0YXNrcy4KKyAqCisgKiAgIyBUZXN0aW5nCisgKgorICogIGBgYGpzCisgKiAgICBp
dCgnc2hvdWxkIHNpbXVsYXRlIHByb21pc2UnLCBpbmplY3QoZnVuY3Rpb24oJHEsICRyb290U2Nv
cGUpIHsKKyAqICAgICAgdmFyIGRlZmVycmVkID0gJHEuZGVmZXIoKTsKKyAqICAgICAgdmFyIHBy
b21pc2UgPSBkZWZlcnJlZC5wcm9taXNlOworICogICAgICB2YXIgcmVzb2x2ZWRWYWx1ZTsKKyAq
CisgKiAgICAgIHByb21pc2UudGhlbihmdW5jdGlvbih2YWx1ZSkgeyByZXNvbHZlZFZhbHVlID0g
dmFsdWU7IH0pOworICogICAgICBleHBlY3QocmVzb2x2ZWRWYWx1ZSkudG9CZVVuZGVmaW5lZCgp
OworICoKKyAqICAgICAgLy8gU2ltdWxhdGUgcmVzb2x2aW5nIG9mIHByb21pc2UKKyAqICAgICAg
ZGVmZXJyZWQucmVzb2x2ZSgxMjMpOworICogICAgICAvLyBOb3RlIHRoYXQgdGhlICd0aGVuJyBm
dW5jdGlvbiBkb2VzIG5vdCBnZXQgY2FsbGVkIHN5bmNocm9ub3VzbHkuCisgKiAgICAgIC8vIFRo
aXMgaXMgYmVjYXVzZSB3ZSB3YW50IHRoZSBwcm9taXNlIEFQSSB0byBhbHdheXMgYmUgYXN5bmMs
IHdoZXRoZXIgb3Igbm90CisgKiAgICAgIC8vIGl0IGdvdCBjYWxsZWQgc3luY2hyb25vdXNseSBv
ciBhc3luY2hyb25vdXNseS4KKyAqICAgICAgZXhwZWN0KHJlc29sdmVkVmFsdWUpLnRvQmVVbmRl
ZmluZWQoKTsKKyAqCisgKiAgICAgIC8vIFByb3BhZ2F0ZSBwcm9taXNlIHJlc29sdXRpb24gdG8g
J3RoZW4nIGZ1bmN0aW9ucyB1c2luZyAkYXBwbHkoKS4KKyAqICAgICAgJHJvb3RTY29wZS4kYXBw
bHkoKTsKKyAqICAgICAgZXhwZWN0KHJlc29sdmVkVmFsdWUpLnRvRXF1YWwoMTIzKTsKKyAqICAg
IH0pKTsKKyAqICBgYGAKKyAqCisgKiBAcGFyYW0ge2Z1bmN0aW9uKGZ1bmN0aW9uLCBmdW5jdGlv
bil9IHJlc29sdmVyIEZ1bmN0aW9uIHdoaWNoIGlzIHJlc3BvbnNpYmxlIGZvciByZXNvbHZpbmcg
b3IKKyAqICAgcmVqZWN0aW5nIHRoZSBuZXdseSBjcmVhdGVkIHByb21pc2UuIFRoZSBmaXJzdCBw
YXJhbWV0ZXIgaXMgYSBmdW5jdGlvbiB3aGljaCByZXNvbHZlcyB0aGUKKyAqICAgcHJvbWlzZSwg
dGhlIHNlY29uZCBwYXJhbWV0ZXIgaXMgYSBmdW5jdGlvbiB3aGljaCByZWplY3RzIHRoZSBwcm9t
aXNlLgorICoKKyAqIEByZXR1cm5zIHtQcm9taXNlfSBUaGUgbmV3bHkgY3JlYXRlZCBwcm9taXNl
LgorICovCitmdW5jdGlvbiAkUVByb3ZpZGVyKCkgeworCisgIHRoaXMuJGdldCA9IFsnJHJvb3RT
Y29wZScsICckZXhjZXB0aW9uSGFuZGxlcicsIGZ1bmN0aW9uKCRyb290U2NvcGUsICRleGNlcHRp
b25IYW5kbGVyKSB7CisgICAgcmV0dXJuIHFGYWN0b3J5KGZ1bmN0aW9uKGNhbGxiYWNrKSB7Cisg
ICAgICAkcm9vdFNjb3BlLiRldmFsQXN5bmMoY2FsbGJhY2spOworICAgIH0sICRleGNlcHRpb25I
YW5kbGVyKTsKKyAgfV07Cit9CisKK2Z1bmN0aW9uICQkUVByb3ZpZGVyKCkgeworICB0aGlzLiRn
ZXQgPSBbJyRicm93c2VyJywgJyRleGNlcHRpb25IYW5kbGVyJywgZnVuY3Rpb24oJGJyb3dzZXIs
ICRleGNlcHRpb25IYW5kbGVyKSB7CisgICAgcmV0dXJuIHFGYWN0b3J5KGZ1bmN0aW9uKGNhbGxi
YWNrKSB7CisgICAgICAkYnJvd3Nlci5kZWZlcihjYWxsYmFjayk7CisgICAgfSwgJGV4Y2VwdGlv
bkhhbmRsZXIpOworICB9XTsKK30KKworLyoqCisgKiBDb25zdHJ1Y3RzIGEgcHJvbWlzZSBtYW5h
Z2VyLgorICoKKyAqIEBwYXJhbSB7ZnVuY3Rpb24oZnVuY3Rpb24pfSBuZXh0VGljayBGdW5jdGlv
biBmb3IgZXhlY3V0aW5nIGZ1bmN0aW9ucyBpbiB0aGUgbmV4dCB0dXJuLgorICogQHBhcmFtIHtm
dW5jdGlvbiguLi4qKX0gZXhjZXB0aW9uSGFuZGxlciBGdW5jdGlvbiBpbnRvIHdoaWNoIHVuZXhw
ZWN0ZWQgZXhjZXB0aW9ucyBhcmUgcGFzc2VkIGZvcgorICogICAgIGRlYnVnZ2luZyBwdXJwb3Nl
cy4KKyAqIEByZXR1cm5zIHtvYmplY3R9IFByb21pc2UgbWFuYWdlci4KKyAqLworZnVuY3Rpb24g
cUZhY3RvcnkobmV4dFRpY2ssIGV4Y2VwdGlvbkhhbmRsZXIpIHsKKyAgdmFyICRxTWluRXJyID0g
bWluRXJyKCckcScsIFR5cGVFcnJvcik7CisgIGZ1bmN0aW9uIGNhbGxPbmNlKHNlbGYsIHJlc29s
dmVGbiwgcmVqZWN0Rm4pIHsKKyAgICB2YXIgY2FsbGVkID0gZmFsc2U7CisgICAgZnVuY3Rpb24g
d3JhcChmbikgeworICAgICAgcmV0dXJuIGZ1bmN0aW9uKHZhbHVlKSB7CisgICAgICAgIGlmIChj
YWxsZWQpIHJldHVybjsKKyAgICAgICAgY2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgZm4uY2FsbChz
ZWxmLCB2YWx1ZSk7CisgICAgICB9OworICAgIH0KKworICAgIHJldHVybiBbd3JhcChyZXNvbHZl
Rm4pLCB3cmFwKHJlamVjdEZuKV07CisgIH0KKworICAvKioKKyAgICogQG5nZG9jIG1ldGhvZAor
ICAgKiBAbmFtZSBuZy4kcSNkZWZlcgorICAgKiBAa2luZCBmdW5jdGlvbgorICAgKgorICAgKiBA
ZGVzY3JpcHRpb24KKyAgICogQ3JlYXRlcyBhIGBEZWZlcnJlZGAgb2JqZWN0IHdoaWNoIHJlcHJl
c2VudHMgYSB0YXNrIHdoaWNoIHdpbGwgZmluaXNoIGluIHRoZSBmdXR1cmUuCisgICAqCisgICAq
IEByZXR1cm5zIHtEZWZlcnJlZH0gUmV0dXJucyBhIG5ldyBpbnN0YW5jZSBvZiBkZWZlcnJlZC4K
KyAgICovCisgIHZhciBkZWZlciA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiBuZXcgRGVmZXJy
ZWQoKTsKKyAgfTsKKworICBmdW5jdGlvbiBQcm9taXNlKCkgeworICAgIHRoaXMuJCRzdGF0ZSA9
IHsgc3RhdHVzOiAwIH07CisgIH0KKworICBQcm9taXNlLnByb3RvdHlwZSA9IHsKKyAgICB0aGVu
OiBmdW5jdGlvbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCwgcHJvZ3Jlc3NCYWNrKSB7CisgICAg
ICB2YXIgcmVzdWx0ID0gbmV3IERlZmVycmVkKCk7CisKKyAgICAgIHRoaXMuJCRzdGF0ZS5wZW5k
aW5nID0gdGhpcy4kJHN0YXRlLnBlbmRpbmcgfHwgW107CisgICAgICB0aGlzLiQkc3RhdGUucGVu
ZGluZy5wdXNoKFtyZXN1bHQsIG9uRnVsZmlsbGVkLCBvblJlamVjdGVkLCBwcm9ncmVzc0JhY2td
KTsKKyAgICAgIGlmICh0aGlzLiQkc3RhdGUuc3RhdHVzID4gMCkgc2NoZWR1bGVQcm9jZXNzUXVl
dWUodGhpcy4kJHN0YXRlKTsKKworICAgICAgcmV0dXJuIHJlc3VsdC5wcm9taXNlOworICAgIH0s
CisKKyAgICAiY2F0Y2giOiBmdW5jdGlvbihjYWxsYmFjaykgeworICAgICAgcmV0dXJuIHRoaXMu
dGhlbihudWxsLCBjYWxsYmFjayk7CisgICAgfSwKKworICAgICJmaW5hbGx5IjogZnVuY3Rpb24o
Y2FsbGJhY2ssIHByb2dyZXNzQmFjaykgeworICAgICAgcmV0dXJuIHRoaXMudGhlbihmdW5jdGlv
bih2YWx1ZSkgeworICAgICAgICByZXR1cm4gaGFuZGxlQ2FsbGJhY2sodmFsdWUsIHRydWUsIGNh
bGxiYWNrKTsKKyAgICAgIH0sIGZ1bmN0aW9uKGVycm9yKSB7CisgICAgICAgIHJldHVybiBoYW5k
bGVDYWxsYmFjayhlcnJvciwgZmFsc2UsIGNhbGxiYWNrKTsKKyAgICAgIH0sIHByb2dyZXNzQmFj
ayk7CisgICAgfQorICB9OworCisgIC8vRmFzdGVyLCBtb3JlIGJhc2ljIHRoYW4gYW5ndWxhci5i
aW5kIGh0dHA6Ly9qc3BlcmYuY29tL2FuZ3VsYXItYmluZC12cy1jdXN0b20tdnMtbmF0aXZlCisg
IGZ1bmN0aW9uIHNpbXBsZUJpbmQoY29udGV4dCwgZm4pIHsKKyAgICByZXR1cm4gZnVuY3Rpb24o
dmFsdWUpIHsKKyAgICAgIGZuLmNhbGwoY29udGV4dCwgdmFsdWUpOworICAgIH07CisgIH0KKwor
ICBmdW5jdGlvbiBwcm9jZXNzUXVldWUoc3RhdGUpIHsKKyAgICB2YXIgZm4sIGRlZmVycmVkLCBw
ZW5kaW5nOworCisgICAgcGVuZGluZyA9IHN0YXRlLnBlbmRpbmc7CisgICAgc3RhdGUucHJvY2Vz
c1NjaGVkdWxlZCA9IGZhbHNlOworICAgIHN0YXRlLnBlbmRpbmcgPSB1bmRlZmluZWQ7CisgICAg
Zm9yICh2YXIgaSA9IDAsIGlpID0gcGVuZGluZy5sZW5ndGg7IGkgPCBpaTsgKytpKSB7CisgICAg
ICBkZWZlcnJlZCA9IHBlbmRpbmdbaV1bMF07CisgICAgICBmbiA9IHBlbmRpbmdbaV1bc3RhdGUu
c3RhdHVzXTsKKyAgICAgIHRyeSB7CisgICAgICAgIGlmIChpc0Z1bmN0aW9uKGZuKSkgeworICAg
ICAgICAgIGRlZmVycmVkLnJlc29sdmUoZm4oc3RhdGUudmFsdWUpKTsKKyAgICAgICAgfSBlbHNl
IGlmIChzdGF0ZS5zdGF0dXMgPT09IDEpIHsKKyAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHN0
YXRlLnZhbHVlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qo
c3RhdGUudmFsdWUpOworICAgICAgICB9CisgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGRl
ZmVycmVkLnJlamVjdChlKTsKKyAgICAgICAgZXhjZXB0aW9uSGFuZGxlcihlKTsKKyAgICAgIH0K
KyAgICB9CisgIH0KKworICBmdW5jdGlvbiBzY2hlZHVsZVByb2Nlc3NRdWV1ZShzdGF0ZSkgewor
ICAgIGlmIChzdGF0ZS5wcm9jZXNzU2NoZWR1bGVkIHx8ICFzdGF0ZS5wZW5kaW5nKSByZXR1cm47
CisgICAgc3RhdGUucHJvY2Vzc1NjaGVkdWxlZCA9IHRydWU7CisgICAgbmV4dFRpY2soZnVuY3Rp
b24oKSB7IHByb2Nlc3NRdWV1ZShzdGF0ZSk7IH0pOworICB9CisKKyAgZnVuY3Rpb24gRGVmZXJy
ZWQoKSB7CisgICAgdGhpcy5wcm9taXNlID0gbmV3IFByb21pc2UoKTsKKyAgICAvL05lY2Vzc2Fy
eSB0byBzdXBwb3J0IHVuYm91bmQgZXhlY3V0aW9uIDovCisgICAgdGhpcy5yZXNvbHZlID0gc2lt
cGxlQmluZCh0aGlzLCB0aGlzLnJlc29sdmUpOworICAgIHRoaXMucmVqZWN0ID0gc2ltcGxlQmlu
ZCh0aGlzLCB0aGlzLnJlamVjdCk7CisgICAgdGhpcy5ub3RpZnkgPSBzaW1wbGVCaW5kKHRoaXMs
IHRoaXMubm90aWZ5KTsKKyAgfQorCisgIERlZmVycmVkLnByb3RvdHlwZSA9IHsKKyAgICByZXNv
bHZlOiBmdW5jdGlvbih2YWwpIHsKKyAgICAgIGlmICh0aGlzLnByb21pc2UuJCRzdGF0ZS5zdGF0
dXMpIHJldHVybjsKKyAgICAgIGlmICh2YWwgPT09IHRoaXMucHJvbWlzZSkgeworICAgICAgICB0
aGlzLiQkcmVqZWN0KCRxTWluRXJyKAorICAgICAgICAgICdxY3ljbGUnLAorICAgICAgICAgICJF
eHBlY3RlZCBwcm9taXNlIHRvIGJlIHJlc29sdmVkIHdpdGggdmFsdWUgb3RoZXIgdGhhbiBpdHNl
bGYgJ3swfSciLAorICAgICAgICAgIHZhbCkpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgdGhp
cy4kJHJlc29sdmUodmFsKTsKKyAgICAgIH0KKworICAgIH0sCisKKyAgICAkJHJlc29sdmU6IGZ1
bmN0aW9uKHZhbCkgeworICAgICAgdmFyIHRoZW4sIGZuczsKKworICAgICAgZm5zID0gY2FsbE9u
Y2UodGhpcywgdGhpcy4kJHJlc29sdmUsIHRoaXMuJCRyZWplY3QpOworICAgICAgdHJ5IHsKKyAg
ICAgICAgaWYgKChpc09iamVjdCh2YWwpIHx8IGlzRnVuY3Rpb24odmFsKSkpIHRoZW4gPSB2YWwg
JiYgdmFsLnRoZW47CisgICAgICAgIGlmIChpc0Z1bmN0aW9uKHRoZW4pKSB7CisgICAgICAgICAg
dGhpcy5wcm9taXNlLiQkc3RhdGUuc3RhdHVzID0gLTE7CisgICAgICAgICAgdGhlbi5jYWxsKHZh
bCwgZm5zWzBdLCBmbnNbMV0sIHRoaXMubm90aWZ5KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICB0aGlzLnByb21pc2UuJCRzdGF0ZS52YWx1ZSA9IHZhbDsKKyAgICAgICAgICB0aGlzLnBy
b21pc2UuJCRzdGF0ZS5zdGF0dXMgPSAxOworICAgICAgICAgIHNjaGVkdWxlUHJvY2Vzc1F1ZXVl
KHRoaXMucHJvbWlzZS4kJHN0YXRlKTsKKyAgICAgICAgfQorICAgICAgfSBjYXRjaCAoZSkgewor
ICAgICAgICBmbnNbMV0oZSk7CisgICAgICAgIGV4Y2VwdGlvbkhhbmRsZXIoZSk7CisgICAgICB9
CisgICAgfSwKKworICAgIHJlamVjdDogZnVuY3Rpb24ocmVhc29uKSB7CisgICAgICBpZiAodGhp
cy5wcm9taXNlLiQkc3RhdGUuc3RhdHVzKSByZXR1cm47CisgICAgICB0aGlzLiQkcmVqZWN0KHJl
YXNvbik7CisgICAgfSwKKworICAgICQkcmVqZWN0OiBmdW5jdGlvbihyZWFzb24pIHsKKyAgICAg
IHRoaXMucHJvbWlzZS4kJHN0YXRlLnZhbHVlID0gcmVhc29uOworICAgICAgdGhpcy5wcm9taXNl
LiQkc3RhdGUuc3RhdHVzID0gMjsKKyAgICAgIHNjaGVkdWxlUHJvY2Vzc1F1ZXVlKHRoaXMucHJv
bWlzZS4kJHN0YXRlKTsKKyAgICB9LAorCisgICAgbm90aWZ5OiBmdW5jdGlvbihwcm9ncmVzcykg
eworICAgICAgdmFyIGNhbGxiYWNrcyA9IHRoaXMucHJvbWlzZS4kJHN0YXRlLnBlbmRpbmc7CisK
KyAgICAgIGlmICgodGhpcy5wcm9taXNlLiQkc3RhdGUuc3RhdHVzIDw9IDApICYmIGNhbGxiYWNr
cyAmJiBjYWxsYmFja3MubGVuZ3RoKSB7CisgICAgICAgIG5leHRUaWNrKGZ1bmN0aW9uKCkgewor
ICAgICAgICAgIHZhciBjYWxsYmFjaywgcmVzdWx0OworICAgICAgICAgIGZvciAodmFyIGkgPSAw
LCBpaSA9IGNhbGxiYWNrcy5sZW5ndGg7IGkgPCBpaTsgaSsrKSB7CisgICAgICAgICAgICByZXN1
bHQgPSBjYWxsYmFja3NbaV1bMF07CisgICAgICAgICAgICBjYWxsYmFjayA9IGNhbGxiYWNrc1tp
XVszXTsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgIHJlc3VsdC5ub3RpZnkoaXNG
dW5jdGlvbihjYWxsYmFjaykgPyBjYWxsYmFjayhwcm9ncmVzcykgOiBwcm9ncmVzcyk7CisgICAg
ICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZXIoZSk7
CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICAgIH0KKyAgICB9
CisgIH07CisKKyAgLyoqCisgICAqIEBuZ2RvYyBtZXRob2QKKyAgICogQG5hbWUgJHEjcmVqZWN0
CisgICAqIEBraW5kIGZ1bmN0aW9uCisgICAqCisgICAqIEBkZXNjcmlwdGlvbgorICAgKiBDcmVh
dGVzIGEgcHJvbWlzZSB0aGF0IGlzIHJlc29sdmVkIGFzIHJlamVjdGVkIHdpdGggdGhlIHNwZWNp
ZmllZCBgcmVhc29uYC4gVGhpcyBhcGkgc2hvdWxkIGJlCisgICAqIHVzZWQgdG8gZm9yd2FyZCBy
ZWplY3Rpb24gaW4gYSBjaGFpbiBvZiBwcm9taXNlcy4gSWYgeW91IGFyZSBkZWFsaW5nIHdpdGgg
dGhlIGxhc3QgcHJvbWlzZSBpbgorICAgKiBhIHByb21pc2UgY2hhaW4sIHlvdSBkb24ndCBuZWVk
IHRvIHdvcnJ5IGFib3V0IGl0LgorICAgKgorICAgKiBXaGVuIGNvbXBhcmluZyBkZWZlcnJlZHMv
cHJvbWlzZXMgdG8gdGhlIGZhbWlsaWFyIGJlaGF2aW9yIG9mIHRyeS9jYXRjaC90aHJvdywgdGhp
bmsgb2YKKyAgICogYHJlamVjdGAgYXMgdGhlIGB0aHJvd2Aga2V5d29yZCBpbiBKYXZhU2NyaXB0
LiBUaGlzIGFsc28gbWVhbnMgdGhhdCBpZiB5b3UgImNhdGNoIiBhbiBlcnJvciB2aWEKKyAgICog
YSBwcm9taXNlIGVycm9yIGNhbGxiYWNrIGFuZCB5b3Ugd2FudCB0byBmb3J3YXJkIHRoZSBlcnJv
ciB0byB0aGUgcHJvbWlzZSBkZXJpdmVkIGZyb20gdGhlCisgICAqIGN1cnJlbnQgcHJvbWlzZSwg
eW91IGhhdmUgdG8gInJldGhyb3ciIHRoZSBlcnJvciBieSByZXR1cm5pbmcgYSByZWplY3Rpb24g
Y29uc3RydWN0ZWQgdmlhCisgICAqIGByZWplY3RgLgorICAgKgorICAgKiBgYGBqcworICAgKiAg
IHByb21pc2VCID0gcHJvbWlzZUEudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKKyAgICogICAgIC8v
IHN1Y2Nlc3M6IGRvIHNvbWV0aGluZyBhbmQgcmVzb2x2ZSBwcm9taXNlQgorICAgKiAgICAgLy8g
ICAgICAgICAgd2l0aCB0aGUgb2xkIG9yIGEgbmV3IHJlc3VsdAorICAgKiAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICogICB9LCBmdW5jdGlvbihyZWFzb24pIHsKKyAgICogICAgIC8vIGVycm9yOiBo
YW5kbGUgdGhlIGVycm9yIGlmIHBvc3NpYmxlIGFuZAorICAgKiAgICAgLy8gICAgICAgIHJlc29s
dmUgcHJvbWlzZUIgd2l0aCBuZXdQcm9taXNlT3JWYWx1ZSwKKyAgICogICAgIC8vICAgICAgICBv
dGhlcndpc2UgZm9yd2FyZCB0aGUgcmVqZWN0aW9uIHRvIHByb21pc2VCCisgICAqICAgICBpZiAo
Y2FuSGFuZGxlKHJlYXNvbikpIHsKKyAgICogICAgICAvLyBoYW5kbGUgdGhlIGVycm9yIGFuZCBy
ZWNvdmVyCisgICAqICAgICAgcmV0dXJuIG5ld1Byb21pc2VPclZhbHVlOworICAgKiAgICAgfQor
ICAgKiAgICAgcmV0dXJuICRxLnJlamVjdChyZWFzb24pOworICAgKiAgIH0pOworICAgKiBgYGAK
KyAgICoKKyAgICogQHBhcmFtIHsqfSByZWFzb24gQ29uc3RhbnQsIG1lc3NhZ2UsIGV4Y2VwdGlv
biBvciBhbiBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSByZWplY3Rpb24gcmVhc29uLgorICAgKiBA
cmV0dXJucyB7UHJvbWlzZX0gUmV0dXJucyBhIHByb21pc2UgdGhhdCB3YXMgYWxyZWFkeSByZXNv
bHZlZCBhcyByZWplY3RlZCB3aXRoIHRoZSBgcmVhc29uYC4KKyAgICovCisgIHZhciByZWplY3Qg
PSBmdW5jdGlvbihyZWFzb24pIHsKKyAgICB2YXIgcmVzdWx0ID0gbmV3IERlZmVycmVkKCk7Cisg
ICAgcmVzdWx0LnJlamVjdChyZWFzb24pOworICAgIHJldHVybiByZXN1bHQucHJvbWlzZTsKKyAg
fTsKKworICB2YXIgbWFrZVByb21pc2UgPSBmdW5jdGlvbiBtYWtlUHJvbWlzZSh2YWx1ZSwgcmVz
b2x2ZWQpIHsKKyAgICB2YXIgcmVzdWx0ID0gbmV3IERlZmVycmVkKCk7CisgICAgaWYgKHJlc29s
dmVkKSB7CisgICAgICByZXN1bHQucmVzb2x2ZSh2YWx1ZSk7CisgICAgfSBlbHNlIHsKKyAgICAg
IHJlc3VsdC5yZWplY3QodmFsdWUpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0LnByb21pc2U7
CisgIH07CisKKyAgdmFyIGhhbmRsZUNhbGxiYWNrID0gZnVuY3Rpb24gaGFuZGxlQ2FsbGJhY2so
dmFsdWUsIGlzUmVzb2x2ZWQsIGNhbGxiYWNrKSB7CisgICAgdmFyIGNhbGxiYWNrT3V0cHV0ID0g
bnVsbDsKKyAgICB0cnkgeworICAgICAgaWYgKGlzRnVuY3Rpb24oY2FsbGJhY2spKSBjYWxsYmFj
a091dHB1dCA9IGNhbGxiYWNrKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgcmV0dXJuIG1h
a2VQcm9taXNlKGUsIGZhbHNlKTsKKyAgICB9CisgICAgaWYgKGlzUHJvbWlzZUxpa2UoY2FsbGJh
Y2tPdXRwdXQpKSB7CisgICAgICByZXR1cm4gY2FsbGJhY2tPdXRwdXQudGhlbihmdW5jdGlvbigp
IHsKKyAgICAgICAgcmV0dXJuIG1ha2VQcm9taXNlKHZhbHVlLCBpc1Jlc29sdmVkKTsKKyAgICAg
IH0sIGZ1bmN0aW9uKGVycm9yKSB7CisgICAgICAgIHJldHVybiBtYWtlUHJvbWlzZShlcnJvciwg
ZmFsc2UpOworICAgICAgfSk7CisgICAgfSBlbHNlIHsKKyAgICAgIHJldHVybiBtYWtlUHJvbWlz
ZSh2YWx1ZSwgaXNSZXNvbHZlZCk7CisgICAgfQorICB9OworCisgIC8qKgorICAgKiBAbmdkb2Mg
bWV0aG9kCisgICAqIEBuYW1lICRxI3doZW4KKyAgICogQGtpbmQgZnVuY3Rpb24KKyAgICoKKyAg
ICogQGRlc2NyaXB0aW9uCisgICAqIFdyYXBzIGFuIG9iamVjdCB0aGF0IG1pZ2h0IGJlIGEgdmFs
dWUgb3IgYSAoM3JkIHBhcnR5KSB0aGVuLWFibGUgcHJvbWlzZSBpbnRvIGEgJHEgcHJvbWlzZS4K
KyAgICogVGhpcyBpcyB1c2VmdWwgd2hlbiB5b3UgYXJlIGRlYWxpbmcgd2l0aCBhbiBvYmplY3Qg
dGhhdCBtaWdodCBvciBtaWdodCBub3QgYmUgYSBwcm9taXNlLCBvciBpZgorICAgKiB0aGUgcHJv
bWlzZSBjb21lcyBmcm9tIGEgc291cmNlIHRoYXQgY2FuJ3QgYmUgdHJ1c3RlZC4KKyAgICoKKyAg
ICogQHBhcmFtIHsqfSB2YWx1ZSBWYWx1ZSBvciBhIHByb21pc2UKKyAgICogQHJldHVybnMge1By
b21pc2V9IFJldHVybnMgYSBwcm9taXNlIG9mIHRoZSBwYXNzZWQgdmFsdWUgb3IgcHJvbWlzZQor
ICAgKi8KKworCisgIHZhciB3aGVuID0gZnVuY3Rpb24odmFsdWUsIGNhbGxiYWNrLCBlcnJiYWNr
LCBwcm9ncmVzc0JhY2spIHsKKyAgICB2YXIgcmVzdWx0ID0gbmV3IERlZmVycmVkKCk7CisgICAg
cmVzdWx0LnJlc29sdmUodmFsdWUpOworICAgIHJldHVybiByZXN1bHQucHJvbWlzZS50aGVuKGNh
bGxiYWNrLCBlcnJiYWNrLCBwcm9ncmVzc0JhY2spOworICB9OworCisgIC8qKgorICAgKiBAbmdk
b2MgbWV0aG9kCisgICAqIEBuYW1lICRxI3Jlc29sdmUKKyAgICogQGtpbmQgZnVuY3Rpb24KKyAg
ICoKKyAgICogQGRlc2NyaXB0aW9uCisgICAqIEFsaWFzIG9mIHtAbGluayBuZy4kcSN3aGVuIHdo
ZW59IHRvIG1haW50YWluIG5hbWluZyBjb25zaXN0ZW5jeSB3aXRoIEVTNi4KKyAgICoKKyAgICog
QHBhcmFtIHsqfSB2YWx1ZSBWYWx1ZSBvciBhIHByb21pc2UKKyAgICogQHJldHVybnMge1Byb21p
c2V9IFJldHVybnMgYSBwcm9taXNlIG9mIHRoZSBwYXNzZWQgdmFsdWUgb3IgcHJvbWlzZQorICAg
Ki8KKyAgdmFyIHJlc29sdmUgPSB3aGVuOworCisgIC8qKgorICAgKiBAbmdkb2MgbWV0aG9kCisg
ICAqIEBuYW1lICRxI2FsbAorICAgKiBAa2luZCBmdW5jdGlvbgorICAgKgorICAgKiBAZGVzY3Jp
cHRpb24KKyAgICogQ29tYmluZXMgbXVsdGlwbGUgcHJvbWlzZXMgaW50byBhIHNpbmdsZSBwcm9t
aXNlIHRoYXQgaXMgcmVzb2x2ZWQgd2hlbiBhbGwgb2YgdGhlIGlucHV0CisgICAqIHByb21pc2Vz
IGFyZSByZXNvbHZlZC4KKyAgICoKKyAgICogQHBhcmFtIHtBcnJheS48UHJvbWlzZT58T2JqZWN0
LjxQcm9taXNlPn0gcHJvbWlzZXMgQW4gYXJyYXkgb3IgaGFzaCBvZiBwcm9taXNlcy4KKyAgICog
QHJldHVybnMge1Byb21pc2V9IFJldHVybnMgYSBzaW5nbGUgcHJvbWlzZSB0aGF0IHdpbGwgYmUg
cmVzb2x2ZWQgd2l0aCBhbiBhcnJheS9oYXNoIG9mIHZhbHVlcywKKyAgICogICBlYWNoIHZhbHVl
IGNvcnJlc3BvbmRpbmcgdG8gdGhlIHByb21pc2UgYXQgdGhlIHNhbWUgaW5kZXgva2V5IGluIHRo
ZSBgcHJvbWlzZXNgIGFycmF5L2hhc2guCisgICAqICAgSWYgYW55IG9mIHRoZSBwcm9taXNlcyBp
cyByZXNvbHZlZCB3aXRoIGEgcmVqZWN0aW9uLCB0aGlzIHJlc3VsdGluZyBwcm9taXNlIHdpbGwg
YmUgcmVqZWN0ZWQKKyAgICogICB3aXRoIHRoZSBzYW1lIHJlamVjdGlvbiB2YWx1ZS4KKyAgICov
CisKKyAgZnVuY3Rpb24gYWxsKHByb21pc2VzKSB7CisgICAgdmFyIGRlZmVycmVkID0gbmV3IERl
ZmVycmVkKCksCisgICAgICAgIGNvdW50ZXIgPSAwLAorICAgICAgICByZXN1bHRzID0gaXNBcnJh
eShwcm9taXNlcykgPyBbXSA6IHt9OworCisgICAgZm9yRWFjaChwcm9taXNlcywgZnVuY3Rpb24o
cHJvbWlzZSwga2V5KSB7CisgICAgICBjb3VudGVyKys7CisgICAgICB3aGVuKHByb21pc2UpLnRo
ZW4oZnVuY3Rpb24odmFsdWUpIHsKKyAgICAgICAgaWYgKHJlc3VsdHMuaGFzT3duUHJvcGVydHko
a2V5KSkgcmV0dXJuOworICAgICAgICByZXN1bHRzW2tleV0gPSB2YWx1ZTsKKyAgICAgICAgaWYg
KCEoLS1jb3VudGVyKSkgZGVmZXJyZWQucmVzb2x2ZShyZXN1bHRzKTsKKyAgICAgIH0sIGZ1bmN0
aW9uKHJlYXNvbikgeworICAgICAgICBpZiAocmVzdWx0cy5oYXNPd25Qcm9wZXJ0eShrZXkpKSBy
ZXR1cm47CisgICAgICAgIGRlZmVycmVkLnJlamVjdChyZWFzb24pOworICAgICAgfSk7CisgICAg
fSk7CisKKyAgICBpZiAoY291bnRlciA9PT0gMCkgeworICAgICAgZGVmZXJyZWQucmVzb2x2ZShy
ZXN1bHRzKTsKKyAgICB9CisKKyAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTsKKyAgfQorCisg
IHZhciAkUSA9IGZ1bmN0aW9uIFEocmVzb2x2ZXIpIHsKKyAgICBpZiAoIWlzRnVuY3Rpb24ocmVz
b2x2ZXIpKSB7CisgICAgICB0aHJvdyAkcU1pbkVycignbm9yc2x2cicsICJFeHBlY3RlZCByZXNv
bHZlckZuLCBnb3QgJ3swfSciLCByZXNvbHZlcik7CisgICAgfQorCisgICAgaWYgKCEodGhpcyBp
bnN0YW5jZW9mIFEpKSB7CisgICAgICAvLyBNb3JlIHVzZWZ1bCB3aGVuICRRIGlzIHRoZSBQcm9t
aXNlIGl0c2VsZi4KKyAgICAgIHJldHVybiBuZXcgUShyZXNvbHZlcik7CisgICAgfQorCisgICAg
dmFyIGRlZmVycmVkID0gbmV3IERlZmVycmVkKCk7CisKKyAgICBmdW5jdGlvbiByZXNvbHZlRm4o
dmFsdWUpIHsKKyAgICAgIGRlZmVycmVkLnJlc29sdmUodmFsdWUpOworICAgIH0KKworICAgIGZ1
bmN0aW9uIHJlamVjdEZuKHJlYXNvbikgeworICAgICAgZGVmZXJyZWQucmVqZWN0KHJlYXNvbik7
CisgICAgfQorCisgICAgcmVzb2x2ZXIocmVzb2x2ZUZuLCByZWplY3RGbik7CisKKyAgICByZXR1
cm4gZGVmZXJyZWQucHJvbWlzZTsKKyAgfTsKKworICAkUS5kZWZlciA9IGRlZmVyOworICAkUS5y
ZWplY3QgPSByZWplY3Q7CisgICRRLndoZW4gPSB3aGVuOworICAkUS5yZXNvbHZlID0gcmVzb2x2
ZTsKKyAgJFEuYWxsID0gYWxsOworCisgIHJldHVybiAkUTsKK30KKworZnVuY3Rpb24gJCRSQUZQ
cm92aWRlcigpIHsgLy9yQUYKKyAgdGhpcy4kZ2V0ID0gWyckd2luZG93JywgJyR0aW1lb3V0Jywg
ZnVuY3Rpb24oJHdpbmRvdywgJHRpbWVvdXQpIHsKKyAgICB2YXIgcmVxdWVzdEFuaW1hdGlvbkZy
YW1lID0gJHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgfHwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJHdpbmRvdy53ZWJraXRSZXF1ZXN0QW5pbWF0aW9uRnJhbWU7CisKKyAg
ICB2YXIgY2FuY2VsQW5pbWF0aW9uRnJhbWUgPSAkd2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1l
IHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHdpbmRvdy53ZWJraXRDYW5jZWxB
bmltYXRpb25GcmFtZSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR3aW5kb3cu
d2Via2l0Q2FuY2VsUmVxdWVzdEFuaW1hdGlvbkZyYW1lOworCisgICAgdmFyIHJhZlN1cHBvcnRl
ZCA9ICEhcmVxdWVzdEFuaW1hdGlvbkZyYW1lOworICAgIHZhciByYWZGbiA9IHJhZlN1cHBvcnRl
ZAorICAgICAgPyBmdW5jdGlvbihmbikgeworICAgICAgICAgIHZhciBpZCA9IHJlcXVlc3RBbmlt
YXRpb25GcmFtZShmbik7CisgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUoaWQpOworICAgICAgICAgIH07CisgICAgICAgIH0KKyAg
ICAgIDogZnVuY3Rpb24oZm4pIHsKKyAgICAgICAgICB2YXIgdGltZXIgPSAkdGltZW91dChmbiwg
MTYuNjYsIGZhbHNlKTsgLy8gMTAwMCAvIDYwID0gMTYuNjY2CisgICAgICAgICAgcmV0dXJuIGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgJHRpbWVvdXQuY2FuY2VsKHRpbWVyKTsKKyAgICAgICAg
ICB9OworICAgICAgICB9OworCisgICAgcXVldWVGbi5zdXBwb3J0ZWQgPSByYWZTdXBwb3J0ZWQ7
CisKKyAgICB2YXIgY2FuY2VsTGFzdFJBRjsKKyAgICB2YXIgdGFza0NvdW50ID0gMDsKKyAgICB2
YXIgdGFza1F1ZXVlID0gW107CisgICAgcmV0dXJuIHF1ZXVlRm47CisKKyAgICBmdW5jdGlvbiBm
bHVzaCgpIHsKKyAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGFza1F1ZXVlLmxlbmd0aDsgaSsr
KSB7CisgICAgICAgIHZhciB0YXNrID0gdGFza1F1ZXVlW2ldOworICAgICAgICBpZiAodGFzaykg
eworICAgICAgICAgIHRhc2tRdWV1ZVtpXSA9IG51bGw7CisgICAgICAgICAgdGFzaygpOworICAg
ICAgICB9CisgICAgICB9CisgICAgICB0YXNrQ291bnQgPSB0YXNrUXVldWUubGVuZ3RoID0gMDsK
KyAgICB9CisKKyAgICBmdW5jdGlvbiBxdWV1ZUZuKGFzeW5jRm4pIHsKKyAgICAgIHZhciBpbmRl
eCA9IHRhc2tRdWV1ZS5sZW5ndGg7CisKKyAgICAgIHRhc2tDb3VudCsrOworICAgICAgdGFza1F1
ZXVlLnB1c2goYXN5bmNGbik7CisKKyAgICAgIGlmIChpbmRleCA9PT0gMCkgeworICAgICAgICBj
YW5jZWxMYXN0UkFGID0gcmFmRm4oZmx1c2gpOworICAgICAgfQorCisgICAgICByZXR1cm4gZnVu
Y3Rpb24gY2FuY2VsUXVldWVGbigpIHsKKyAgICAgICAgaWYgKGluZGV4ID49IDApIHsKKyAgICAg
ICAgICB0YXNrUXVldWVbaW5kZXhdID0gbnVsbDsKKyAgICAgICAgICBpbmRleCA9IG51bGw7CisK
KyAgICAgICAgICBpZiAoLS10YXNrQ291bnQgPT09IDAgJiYgY2FuY2VsTGFzdFJBRikgeworICAg
ICAgICAgICAgY2FuY2VsTGFzdFJBRigpOworICAgICAgICAgICAgY2FuY2VsTGFzdFJBRiA9IG51
bGw7CisgICAgICAgICAgICB0YXNrUXVldWUubGVuZ3RoID0gMDsKKyAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgIH07CisgICAgfQorICB9XTsKK30KKworLyoqCisgKiBERVNJR04gTk9URVMK
KyAqCisgKiBUaGUgZGVzaWduIGRlY2lzaW9ucyBiZWhpbmQgdGhlIHNjb3BlIGFyZSBoZWF2aWx5
IGZhdm9yZWQgZm9yIHNwZWVkIGFuZCBtZW1vcnkgY29uc3VtcHRpb24uCisgKgorICogVGhlIHR5
cGljYWwgdXNlIG9mIHNjb3BlIGlzIHRvIHdhdGNoIHRoZSBleHByZXNzaW9ucywgd2hpY2ggbW9z
dCBvZiB0aGUgdGltZSByZXR1cm4gdGhlIHNhbWUKKyAqIHZhbHVlIGFzIGxhc3QgdGltZSBzbyB3
ZSBvcHRpbWl6ZSB0aGUgb3BlcmF0aW9uLgorICoKKyAqIENsb3N1cmVzIGNvbnN0cnVjdGlvbiBp
cyBleHBlbnNpdmUgaW4gdGVybXMgb2Ygc3BlZWQgYXMgd2VsbCBhcyBtZW1vcnk6CisgKiAgIC0g
Tm8gY2xvc3VyZXMsIGluc3RlYWQgdXNlIHByb3RvdHlwaWNhbCBpbmhlcml0YW5jZSBmb3IgQVBJ
CisgKiAgIC0gSW50ZXJuYWwgc3RhdGUgbmVlZHMgdG8gYmUgc3RvcmVkIG9uIHNjb3BlIGRpcmVj
dGx5LCB3aGljaCBtZWFucyB0aGF0IHByaXZhdGUgc3RhdGUgaXMKKyAqICAgICBleHBvc2VkIGFz
ICQkX19fXyBwcm9wZXJ0aWVzCisgKgorICogTG9vcCBvcGVyYXRpb25zIGFyZSBvcHRpbWl6ZWQg
YnkgdXNpbmcgd2hpbGUoY291bnQtLSkgeyAuLi4gfQorICogICAtIHRoaXMgbWVhbnMgdGhhdCBp
biBvcmRlciB0byBrZWVwIHRoZSBzYW1lIG9yZGVyIG9mIGV4ZWN1dGlvbiBhcyBhZGRpdGlvbiB3
ZSBoYXZlIHRvIGFkZAorICogICAgIGl0ZW1zIHRvIHRoZSBhcnJheSBhdCB0aGUgYmVnaW5uaW5n
ICh1bnNoaWZ0KSBpbnN0ZWFkIG9mIGF0IHRoZSBlbmQgKHB1c2gpCisgKgorICogQ2hpbGQgc2Nv
cGVzIGFyZSBjcmVhdGVkIGFuZCByZW1vdmVkIG9mdGVuCisgKiAgIC0gVXNpbmcgYW4gYXJyYXkg
d291bGQgYmUgc2xvdyBzaW5jZSBpbnNlcnRzIGluIG1pZGRsZSBhcmUgZXhwZW5zaXZlIHNvIHdl
IHVzZSBsaW5rZWQgbGlzdAorICoKKyAqIFRoZXJlIGFyZSBmZXcgd2F0Y2hlcyB0aGVuIGEgbG90
IG9mIG9ic2VydmVycy4gVGhpcyBpcyB3aHkgeW91IGRvbid0IHdhbnQgdGhlIG9ic2VydmVyIHRv
IGJlCisgKiBpbXBsZW1lbnRlZCBpbiB0aGUgc2FtZSB3YXkgYXMgd2F0Y2guIFdhdGNoIHJlcXVp
cmVzIHJldHVybiBvZiBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiB3aGljaAorICogYXJlIGV4cGVu
c2l2ZSB0byBjb25zdHJ1Y3QuCisgKi8KKworCisvKioKKyAqIEBuZ2RvYyBwcm92aWRlcgorICog
QG5hbWUgJHJvb3RTY29wZVByb3ZpZGVyCisgKiBAZGVzY3JpcHRpb24KKyAqCisgKiBQcm92aWRl
ciBmb3IgdGhlICRyb290U2NvcGUgc2VydmljZS4KKyAqLworCisvKioKKyAqIEBuZ2RvYyBtZXRo
b2QKKyAqIEBuYW1lICRyb290U2NvcGVQcm92aWRlciNkaWdlc3RUdGwKKyAqIEBkZXNjcmlwdGlv
bgorICoKKyAqIFNldHMgdGhlIG51bWJlciBvZiBgJGRpZ2VzdGAgaXRlcmF0aW9ucyB0aGUgc2Nv
cGUgc2hvdWxkIGF0dGVtcHQgdG8gZXhlY3V0ZSBiZWZvcmUgZ2l2aW5nIHVwIGFuZAorICogYXNz
dW1pbmcgdGhhdCB0aGUgbW9kZWwgaXMgdW5zdGFibGUuCisgKgorICogVGhlIGN1cnJlbnQgZGVm
YXVsdCBpcyAxMCBpdGVyYXRpb25zLgorICoKKyAqIEluIGNvbXBsZXggYXBwbGljYXRpb25zIGl0
J3MgcG9zc2libGUgdGhhdCB0aGUgZGVwZW5kZW5jaWVzIGJldHdlZW4gYCR3YXRjaGBzIHdpbGwg
cmVzdWx0IGluCisgKiBzZXZlcmFsIGRpZ2VzdCBpdGVyYXRpb25zLiBIb3dldmVyIGlmIGFuIGFw
cGxpY2F0aW9uIG5lZWRzIG1vcmUgdGhhbiB0aGUgZGVmYXVsdCAxMCBkaWdlc3QKKyAqIGl0ZXJh
dGlvbnMgZm9yIGl0cyBtb2RlbCB0byBzdGFiaWxpemUgdGhlbiB5b3Ugc2hvdWxkIGludmVzdGln
YXRlIHdoYXQgaXMgY2F1c2luZyB0aGUgbW9kZWwgdG8KKyAqIGNvbnRpbnVvdXNseSBjaGFuZ2Ug
ZHVyaW5nIHRoZSBkaWdlc3QuCisgKgorICogSW5jcmVhc2luZyB0aGUgVFRMIGNvdWxkIGhhdmUg
cGVyZm9ybWFuY2UgaW1wbGljYXRpb25zLCBzbyB5b3Ugc2hvdWxkIG5vdCBjaGFuZ2UgaXQgd2l0
aG91dAorICogcHJvcGVyIGp1c3RpZmljYXRpb24uCisgKgorICogQHBhcmFtIHtudW1iZXJ9IGxp
bWl0IFRoZSBudW1iZXIgb2YgZGlnZXN0IGl0ZXJhdGlvbnMuCisgKi8KKworCisvKioKKyAqIEBu
Z2RvYyBzZXJ2aWNlCisgKiBAbmFtZSAkcm9vdFNjb3BlCisgKiBAZGVzY3JpcHRpb24KKyAqCisg
KiBFdmVyeSBhcHBsaWNhdGlvbiBoYXMgYSBzaW5nbGUgcm9vdCB7QGxpbmsgbmcuJHJvb3RTY29w
ZS5TY29wZSBzY29wZX0uCisgKiBBbGwgb3RoZXIgc2NvcGVzIGFyZSBkZXNjZW5kYW50IHNjb3Bl
cyBvZiB0aGUgcm9vdCBzY29wZS4gU2NvcGVzIHByb3ZpZGUgc2VwYXJhdGlvbgorICogYmV0d2Vl
biB0aGUgbW9kZWwgYW5kIHRoZSB2aWV3LCB2aWEgYSBtZWNoYW5pc20gZm9yIHdhdGNoaW5nIHRo
ZSBtb2RlbCBmb3IgY2hhbmdlcy4KKyAqIFRoZXkgYWxzbyBwcm92aWRlIGFuIGV2ZW50IGVtaXNz
aW9uL2Jyb2FkY2FzdCBhbmQgc3Vic2NyaXB0aW9uIGZhY2lsaXR5LiBTZWUgdGhlCisgKiB7QGxp
bmsgZ3VpZGUvc2NvcGUgZGV2ZWxvcGVyIGd1aWRlIG9uIHNjb3Blc30uCisgKi8KK2Z1bmN0aW9u
ICRSb290U2NvcGVQcm92aWRlcigpIHsKKyAgdmFyIFRUTCA9IDEwOworICB2YXIgJHJvb3RTY29w
ZU1pbkVyciA9IG1pbkVycignJHJvb3RTY29wZScpOworICB2YXIgbGFzdERpcnR5V2F0Y2ggPSBu
dWxsOworICB2YXIgYXBwbHlBc3luY0lkID0gbnVsbDsKKworICB0aGlzLmRpZ2VzdFR0bCA9IGZ1
bmN0aW9uKHZhbHVlKSB7CisgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGgpIHsKKyAgICAgIFRUTCA9
IHZhbHVlOworICAgIH0KKyAgICByZXR1cm4gVFRMOworICB9OworCisgIGZ1bmN0aW9uIGNyZWF0
ZUNoaWxkU2NvcGVDbGFzcyhwYXJlbnQpIHsKKyAgICBmdW5jdGlvbiBDaGlsZFNjb3BlKCkgewor
ICAgICAgdGhpcy4kJHdhdGNoZXJzID0gdGhpcy4kJG5leHRTaWJsaW5nID0KKyAgICAgICAgICB0
aGlzLiQkY2hpbGRIZWFkID0gdGhpcy4kJGNoaWxkVGFpbCA9IG51bGw7CisgICAgICB0aGlzLiQk
bGlzdGVuZXJzID0ge307CisgICAgICB0aGlzLiQkbGlzdGVuZXJDb3VudCA9IHt9OworICAgICAg
dGhpcy4kJHdhdGNoZXJzQ291bnQgPSAwOworICAgICAgdGhpcy4kaWQgPSBuZXh0VWlkKCk7Cisg
ICAgICB0aGlzLiQkQ2hpbGRTY29wZSA9IG51bGw7CisgICAgfQorICAgIENoaWxkU2NvcGUucHJv
dG90eXBlID0gcGFyZW50OworICAgIHJldHVybiBDaGlsZFNjb3BlOworICB9CisKKyAgdGhpcy4k
Z2V0ID0gWyckaW5qZWN0b3InLCAnJGV4Y2VwdGlvbkhhbmRsZXInLCAnJHBhcnNlJywgJyRicm93
c2VyJywKKyAgICAgIGZ1bmN0aW9uKCRpbmplY3RvciwgJGV4Y2VwdGlvbkhhbmRsZXIsICRwYXJz
ZSwgJGJyb3dzZXIpIHsKKworICAgIGZ1bmN0aW9uIGRlc3Ryb3lDaGlsZFNjb3BlKCRldmVudCkg
eworICAgICAgICAkZXZlbnQuY3VycmVudFNjb3BlLiQkZGVzdHJveWVkID0gdHJ1ZTsKKyAgICB9
CisKKyAgICAvKioKKyAgICAgKiBAbmdkb2MgdHlwZQorICAgICAqIEBuYW1lICRyb290U2NvcGUu
U2NvcGUKKyAgICAgKgorICAgICAqIEBkZXNjcmlwdGlvbgorICAgICAqIEEgcm9vdCBzY29wZSBj
YW4gYmUgcmV0cmlldmVkIHVzaW5nIHRoZSB7QGxpbmsgbmcuJHJvb3RTY29wZSAkcm9vdFNjb3Bl
fSBrZXkgZnJvbSB0aGUKKyAgICAgKiB7QGxpbmsgYXV0by4kaW5qZWN0b3IgJGluamVjdG9yfS4g
Q2hpbGQgc2NvcGVzIGFyZSBjcmVhdGVkIHVzaW5nIHRoZQorICAgICAqIHtAbGluayBuZy4kcm9v
dFNjb3BlLlNjb3BlIyRuZXcgJG5ldygpfSBtZXRob2QuIChNb3N0IHNjb3BlcyBhcmUgY3JlYXRl
ZCBhdXRvbWF0aWNhbGx5IHdoZW4KKyAgICAgKiBjb21waWxlZCBIVE1MIHRlbXBsYXRlIGlzIGV4
ZWN1dGVkLikKKyAgICAgKgorICAgICAqIEhlcmUgaXMgYSBzaW1wbGUgc2NvcGUgc25pcHBldCB0
byBzaG93IGhvdyB5b3UgY2FuIGludGVyYWN0IHdpdGggdGhlIHNjb3BlLgorICAgICAqIGBgYGh0
bWwKKyAgICAgKiA8ZmlsZSBzcmM9Ii4vdGVzdC9uZy9yb290U2NvcGVTcGVjLmpzIiB0YWc9ImRv
Y3MxIiAvPgorICAgICAqIGBgYAorICAgICAqCisgICAgICogIyBJbmhlcml0YW5jZQorICAgICAq
IEEgc2NvcGUgY2FuIGluaGVyaXQgZnJvbSBhIHBhcmVudCBzY29wZSwgYXMgaW4gdGhpcyBleGFt
cGxlOgorICAgICAqIGBgYGpzCisgICAgICAgICB2YXIgcGFyZW50ID0gJHJvb3RTY29wZTsKKyAg
ICAgICAgIHZhciBjaGlsZCA9IHBhcmVudC4kbmV3KCk7CisKKyAgICAgICAgIHBhcmVudC5zYWx1
dGF0aW9uID0gIkhlbGxvIjsKKyAgICAgICAgIGV4cGVjdChjaGlsZC5zYWx1dGF0aW9uKS50b0Vx
dWFsKCdIZWxsbycpOworCisgICAgICAgICBjaGlsZC5zYWx1dGF0aW9uID0gIldlbGNvbWUiOwor
ICAgICAgICAgZXhwZWN0KGNoaWxkLnNhbHV0YXRpb24pLnRvRXF1YWwoJ1dlbGNvbWUnKTsKKyAg
ICAgICAgIGV4cGVjdChwYXJlbnQuc2FsdXRhdGlvbikudG9FcXVhbCgnSGVsbG8nKTsKKyAgICAg
KiBgYGAKKyAgICAgKgorICAgICAqIFdoZW4gaW50ZXJhY3Rpbmcgd2l0aCBgU2NvcGVgIGluIHRl
c3RzLCBhZGRpdGlvbmFsIGhlbHBlciBtZXRob2RzIGFyZSBhdmFpbGFibGUgb24gdGhlCisgICAg
ICogaW5zdGFuY2VzIG9mIGBTY29wZWAgdHlwZS4gU2VlIHtAbGluayBuZ01vY2suJHJvb3RTY29w
ZS5TY29wZSBuZ01vY2sgU2NvcGV9IGZvciBhZGRpdGlvbmFsCisgICAgICogZGV0YWlscy4KKyAg
ICAgKgorICAgICAqCisgICAgICogQHBhcmFtIHtPYmplY3QuPHN0cmluZywgZnVuY3Rpb24oKT49
fSBwcm92aWRlcnMgTWFwIG9mIHNlcnZpY2UgZmFjdG9yeSB3aGljaCBuZWVkIHRvIGJlCisgICAg
ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm92aWRlZCBmb3IgdGhl
IGN1cnJlbnQgc2NvcGUuIERlZmF1bHRzIHRvIHtAbGluayBuZ30uCisgICAgICogQHBhcmFtIHtP
YmplY3QuPHN0cmluZywgKj49fSBpbnN0YW5jZUNhY2hlIFByb3ZpZGVzIHByZS1pbnN0YW50aWF0
ZWQgc2VydmljZXMgd2hpY2ggc2hvdWxkCisgICAgICogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhcHBlbmQvb3ZlcnJpZGUgc2VydmljZXMgcHJvdmlkZWQgYnkgYHByb3ZpZGVyc2AuIFRo
aXMgaXMgaGFuZHkKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gdW5p
dC10ZXN0aW5nIGFuZCBoYXZpbmcgdGhlIG5lZWQgdG8gb3ZlcnJpZGUgYSBkZWZhdWx0CisgICAg
ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlLgorICAgICAqIEByZXR1cm5z
IHtPYmplY3R9IE5ld2x5IGNyZWF0ZWQgc2NvcGUuCisgICAgICoKKyAgICAgKi8KKyAgICBmdW5j
dGlvbiBTY29wZSgpIHsKKyAgICAgIHRoaXMuJGlkID0gbmV4dFVpZCgpOworICAgICAgdGhpcy4k
JHBoYXNlID0gdGhpcy4kcGFyZW50ID0gdGhpcy4kJHdhdGNoZXJzID0KKyAgICAgICAgICAgICAg
ICAgICAgIHRoaXMuJCRuZXh0U2libGluZyA9IHRoaXMuJCRwcmV2U2libGluZyA9CisgICAgICAg
ICAgICAgICAgICAgICB0aGlzLiQkY2hpbGRIZWFkID0gdGhpcy4kJGNoaWxkVGFpbCA9IG51bGw7
CisgICAgICB0aGlzLiRyb290ID0gdGhpczsKKyAgICAgIHRoaXMuJCRkZXN0cm95ZWQgPSBmYWxz
ZTsKKyAgICAgIHRoaXMuJCRsaXN0ZW5lcnMgPSB7fTsKKyAgICAgIHRoaXMuJCRsaXN0ZW5lckNv
dW50ID0ge307CisgICAgICB0aGlzLiQkd2F0Y2hlcnNDb3VudCA9IDA7CisgICAgICB0aGlzLiQk
aXNvbGF0ZUJpbmRpbmdzID0gbnVsbDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAbmdkb2Mg
cHJvcGVydHkKKyAgICAgKiBAbmFtZSAkcm9vdFNjb3BlLlNjb3BlIyRpZAorICAgICAqCisgICAg
ICogQGRlc2NyaXB0aW9uCisgICAgICogVW5pcXVlIHNjb3BlIElEIChtb25vdG9uaWNhbGx5IGlu
Y3JlYXNpbmcpIHVzZWZ1bCBmb3IgZGVidWdnaW5nLgorICAgICAqLworCisgICAgIC8qKgorICAg
ICAgKiBAbmdkb2MgcHJvcGVydHkKKyAgICAgICogQG5hbWUgJHJvb3RTY29wZS5TY29wZSMkcGFy
ZW50CisgICAgICAqCisgICAgICAqIEBkZXNjcmlwdGlvbgorICAgICAgKiBSZWZlcmVuY2UgdG8g
dGhlIHBhcmVudCBzY29wZS4KKyAgICAgICovCisKKyAgICAgIC8qKgorICAgICAgICogQG5nZG9j
IHByb3BlcnR5CisgICAgICAgKiBAbmFtZSAkcm9vdFNjb3BlLlNjb3BlIyRyb290CisgICAgICAg
KgorICAgICAgICogQGRlc2NyaXB0aW9uCisgICAgICAgKiBSZWZlcmVuY2UgdG8gdGhlIHJvb3Qg
c2NvcGUuCisgICAgICAgKi8KKworICAgIFNjb3BlLnByb3RvdHlwZSA9IHsKKyAgICAgIGNvbnN0
cnVjdG9yOiBTY29wZSwKKyAgICAgIC8qKgorICAgICAgICogQG5nZG9jIG1ldGhvZAorICAgICAg
ICogQG5hbWUgJHJvb3RTY29wZS5TY29wZSMkbmV3CisgICAgICAgKiBAa2luZCBmdW5jdGlvbgor
ICAgICAgICoKKyAgICAgICAqIEBkZXNjcmlwdGlvbgorICAgICAgICogQ3JlYXRlcyBhIG5ldyBj
aGlsZCB7QGxpbmsgbmcuJHJvb3RTY29wZS5TY29wZSBzY29wZX0uCisgICAgICAgKgorICAgICAg
ICogVGhlIHBhcmVudCBzY29wZSB3aWxsIHByb3BhZ2F0ZSB0aGUge0BsaW5rIG5nLiRyb290U2Nv
cGUuU2NvcGUjJGRpZ2VzdCAkZGlnZXN0KCl9IGV2ZW50LgorICAgICAgICogVGhlIHNjb3BlIGNh
biBiZSByZW1vdmVkIGZyb20gdGhlIHNjb3BlIGhpZXJhcmNoeSB1c2luZyB7QGxpbmsgbmcuJHJv
b3RTY29wZS5TY29wZSMkZGVzdHJveSAkZGVzdHJveSgpfS4KKyAgICAgICAqCisgICAgICAgKiB7
QGxpbmsgbmcuJHJvb3RTY29wZS5TY29wZSMkZGVzdHJveSAkZGVzdHJveSgpfSBtdXN0IGJlIGNh
bGxlZCBvbiBhIHNjb3BlIHdoZW4gaXQgaXMKKyAgICAgICAqIGRlc2lyZWQgZm9yIHRoZSBzY29w
ZSBhbmQgaXRzIGNoaWxkIHNjb3BlcyB0byBiZSBwZXJtYW5lbnRseSBkZXRhY2hlZCBmcm9tIHRo
ZSBwYXJlbnQgYW5kCisgICAgICAgKiB0aHVzIHN0b3AgcGFydGljaXBhdGluZyBpbiBtb2RlbCBj
aGFuZ2UgZGV0ZWN0aW9uIGFuZCBsaXN0ZW5lciBub3RpZmljYXRpb24gYnkgaW52b2tpbmcuCisg
ICAgICAgKgorICAgICAgICogQHBhcmFtIHtib29sZWFufSBpc29sYXRlIElmIHRydWUsIHRoZW4g
dGhlIHNjb3BlIGRvZXMgbm90IHByb3RvdHlwaWNhbGx5IGluaGVyaXQgZnJvbSB0aGUKKyAgICAg
ICAqICAgICAgICAgcGFyZW50IHNjb3BlLiBUaGUgc2NvcGUgaXMgaXNvbGF0ZWQsIGFzIGl0IGNh
biBub3Qgc2VlIHBhcmVudCBzY29wZSBwcm9wZXJ0aWVzLgorICAgICAgICogICAgICAgICBXaGVu
IGNyZWF0aW5nIHdpZGdldHMsIGl0IGlzIHVzZWZ1bCBmb3IgdGhlIHdpZGdldCB0byBub3QgYWNj
aWRlbnRhbGx5IHJlYWQgcGFyZW50CisgICAgICAgKiAgICAgICAgIHN0YXRlLgorICAgICAgICoK
KyAgICAgICAqIEBwYXJhbSB7U2NvcGV9IFtwYXJlbnQ9dGhpc10gVGhlIHtAbGluayBuZy4kcm9v
dFNjb3BlLlNjb3BlIGBTY29wZWB9IHRoYXQgd2lsbCBiZSB0aGUgYCRwYXJlbnRgCisgICAgICAg
KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBuZXdseSBjcmVhdGVkIHNjb3Bl
LiBEZWZhdWx0cyB0byBgdGhpc2Agc2NvcGUgaWYgbm90IHByb3ZpZGVkLgorICAgICAgICogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGlzIHVzZWQgd2hlbiBjcmVhdGluZyBhIHRy
YW5zY2x1ZGUgc2NvcGUgdG8gY29ycmVjdGx5IHBsYWNlIGl0CisgICAgICAgKiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGluIHRoZSBzY29wZSBoaWVyYXJjaHkgd2hpbGUgbWFpbnRhaW5p
bmcgdGhlIGNvcnJlY3QgcHJvdG90eXBpY2FsCisgICAgICAgKiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluaGVyaXRhbmNlLgorICAgICAgICoKKyAgICAgICAqIEByZXR1cm5zIHtPYmpl
Y3R9IFRoZSBuZXdseSBjcmVhdGVkIGNoaWxkIHNjb3BlLgorICAgICAgICoKKyAgICAgICAqLwor
ICAgICAgJG5ldzogZnVuY3Rpb24oaXNvbGF0ZSwgcGFyZW50KSB7CisgICAgICAgIHZhciBjaGls
ZDsKKworICAgICAgICBwYXJlbnQgPSBwYXJlbnQgfHwgdGhpczsKKworICAgICAgICBpZiAoaXNv
bGF0ZSkgeworICAgICAgICAgIGNoaWxkID0gbmV3IFNjb3BlKCk7CisgICAgICAgICAgY2hpbGQu
JHJvb3QgPSB0aGlzLiRyb290OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIC8vIE9ubHkg
Y3JlYXRlIGEgY2hpbGQgc2NvcGUgY2xhc3MgaWYgc29tZWJvZHkgYXNrcyBmb3Igb25lLAorICAg
ICAgICAgIC8vIGJ1dCBjYWNoZSBpdCB0byBhbGxvdyB0aGUgVk0gdG8gb3B0aW1pemUgbG9va3Vw
cy4KKyAgICAgICAgICBpZiAoIXRoaXMuJCRDaGlsZFNjb3BlKSB7CisgICAgICAgICAgICB0aGlz
LiQkQ2hpbGRTY29wZSA9IGNyZWF0ZUNoaWxkU2NvcGVDbGFzcyh0aGlzKTsKKyAgICAgICAgICB9
CisgICAgICAgICAgY2hpbGQgPSBuZXcgdGhpcy4kJENoaWxkU2NvcGUoKTsKKyAgICAgICAgfQor
ICAgICAgICBjaGlsZC4kcGFyZW50ID0gcGFyZW50OworICAgICAgICBjaGlsZC4kJHByZXZTaWJs
aW5nID0gcGFyZW50LiQkY2hpbGRUYWlsOworICAgICAgICBpZiAocGFyZW50LiQkY2hpbGRIZWFk
KSB7CisgICAgICAgICAgcGFyZW50LiQkY2hpbGRUYWlsLiQkbmV4dFNpYmxpbmcgPSBjaGlsZDsK
KyAgICAgICAgICBwYXJlbnQuJCRjaGlsZFRhaWwgPSBjaGlsZDsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICBwYXJlbnQuJCRjaGlsZEhlYWQgPSBwYXJlbnQuJCRjaGlsZFRhaWwgPSBjaGls
ZDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFdoZW4gdGhlIG5ldyBzY29wZSBpcyBub3QgaXNv
bGF0ZWQgb3Igd2UgaW5oZXJpdCBmcm9tIGB0aGlzYCwgYW5kCisgICAgICAgIC8vIHRoZSBwYXJl
bnQgc2NvcGUgaXMgZGVzdHJveWVkLCB0aGUgcHJvcGVydHkgYCQkZGVzdHJveWVkYCBpcyBpbmhl
cml0ZWQKKyAgICAgICAgLy8gcHJvdG90eXBpY2FsbHkuIEluIGFsbCBvdGhlciBjYXNlcywgdGhp
cyBwcm9wZXJ0eSBuZWVkcyB0byBiZSBzZXQKKyAgICAgICAgLy8gd2hlbiB0aGUgcGFyZW50IHNj
b3BlIGlzIGRlc3Ryb3llZC4KKyAgICAgICAgLy8gVGhlIGxpc3RlbmVyIG5lZWRzIHRvIGJlIGFk
ZGVkIGFmdGVyIHRoZSBwYXJlbnQgaXMgc2V0CisgICAgICAgIGlmIChpc29sYXRlIHx8IHBhcmVu
dCAhPSB0aGlzKSBjaGlsZC4kb24oJyRkZXN0cm95JywgZGVzdHJveUNoaWxkU2NvcGUpOworCisg
ICAgICAgIHJldHVybiBjaGlsZDsKKyAgICAgIH0sCisKKyAgICAgIC8qKgorICAgICAgICogQG5n
ZG9jIG1ldGhvZAorICAgICAgICogQG5hbWUgJHJvb3RTY29wZS5TY29wZSMkd2F0Y2gKKyAgICAg
ICAqIEBraW5kIGZ1bmN0aW9uCisgICAgICAgKgorICAgICAgICogQGRlc2NyaXB0aW9uCisgICAg
ICAgKiBSZWdpc3RlcnMgYSBgbGlzdGVuZXJgIGNhbGxiYWNrIHRvIGJlIGV4ZWN1dGVkIHdoZW5l
dmVyIHRoZSBgd2F0Y2hFeHByZXNzaW9uYCBjaGFuZ2VzLgorICAgICAgICoKKyAgICAgICAqIC0g
VGhlIGB3YXRjaEV4cHJlc3Npb25gIGlzIGNhbGxlZCBvbiBldmVyeSBjYWxsIHRvIHtAbGluayBu
Zy4kcm9vdFNjb3BlLlNjb3BlIyRkaWdlc3QKKyAgICAgICAqICAgJGRpZ2VzdCgpfSBhbmQgc2hv
dWxkIHJldHVybiB0aGUgdmFsdWUgdGhhdCB3aWxsIGJlIHdhdGNoZWQuIChTaW5jZQorICAgICAg
ICogICB7QGxpbmsgbmcuJHJvb3RTY29wZS5TY29wZSMkZGlnZXN0ICRkaWdlc3QoKX0gcmVydW5z
IHdoZW4gaXQgZGV0ZWN0cyBjaGFuZ2VzIHRoZQorICAgICAgICogICBgd2F0Y2hFeHByZXNzaW9u
YCBjYW4gZXhlY3V0ZSBtdWx0aXBsZSB0aW1lcyBwZXIKKyAgICAgICAqICAge0BsaW5rIG5nLiRy
b290U2NvcGUuU2NvcGUjJGRpZ2VzdCAkZGlnZXN0KCl9IGFuZCBzaG91bGQgYmUgaWRlbXBvdGVu
dC4pCisgICAgICAgKiAtIFRoZSBgbGlzdGVuZXJgIGlzIGNhbGxlZCBvbmx5IHdoZW4gdGhlIHZh
bHVlIGZyb20gdGhlIGN1cnJlbnQgYHdhdGNoRXhwcmVzc2lvbmAgYW5kIHRoZQorICAgICAgICog
ICBwcmV2aW91cyBjYWxsIHRvIGB3YXRjaEV4cHJlc3Npb25gIGFyZSBub3QgZXF1YWwgKHdpdGgg
dGhlIGV4Y2VwdGlvbiBvZiB0aGUgaW5pdGlhbCBydW4sCisgICAgICAgKiAgIHNlZSBiZWxvdyku
IEluZXF1YWxpdHkgaXMgZGV0ZXJtaW5lZCBhY2NvcmRpbmcgdG8gcmVmZXJlbmNlIGluZXF1YWxp
dHksCisgICAgICAgKiAgIFtzdHJpY3QgY29tcGFyaXNvbl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96
aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvT3BlcmF0b3JzL0Nv
bXBhcmlzb25fT3BlcmF0b3JzKQorICAgICAgICogICAgdmlhIHRoZSBgIT09YCBKYXZhc2NyaXB0
IG9wZXJhdG9yLCB1bmxlc3MgYG9iamVjdEVxdWFsaXR5ID09IHRydWVgCisgICAgICAgKiAgIChz
ZWUgbmV4dCBwb2ludCkKKyAgICAgICAqIC0gV2hlbiBgb2JqZWN0RXF1YWxpdHkgPT0gdHJ1ZWAs
IGluZXF1YWxpdHkgb2YgdGhlIGB3YXRjaEV4cHJlc3Npb25gIGlzIGRldGVybWluZWQKKyAgICAg
ICAqICAgYWNjb3JkaW5nIHRvIHRoZSB7QGxpbmsgYW5ndWxhci5lcXVhbHN9IGZ1bmN0aW9uLiBU
byBzYXZlIHRoZSB2YWx1ZSBvZiB0aGUgb2JqZWN0IGZvcgorICAgICAgICogICBsYXRlciBjb21w
YXJpc29uLCB0aGUge0BsaW5rIGFuZ3VsYXIuY29weX0gZnVuY3Rpb24gaXMgdXNlZC4gVGhpcyB0
aGVyZWZvcmUgbWVhbnMgdGhhdAorICAgICAgICogICB3YXRjaGluZyBjb21wbGV4IG9iamVjdHMg
d2lsbCBoYXZlIGFkdmVyc2UgbWVtb3J5IGFuZCBwZXJmb3JtYW5jZSBpbXBsaWNhdGlvbnMuCisg
ICAgICAgKiAtIFRoZSB3YXRjaCBgbGlzdGVuZXJgIG1heSBjaGFuZ2UgdGhlIG1vZGVsLCB3aGlj
aCBtYXkgdHJpZ2dlciBvdGhlciBgbGlzdGVuZXJgcyB0byBmaXJlLgorICAgICAgICogICBUaGlz
IGlzIGFjaGlldmVkIGJ5IHJlcnVubmluZyB0aGUgd2F0Y2hlcnMgdW50aWwgbm8gY2hhbmdlcyBh
cmUgZGV0ZWN0ZWQuIFRoZSByZXJ1bgorICAgICAgICogICBpdGVyYXRpb24gbGltaXQgaXMgMTAg
dG8gcHJldmVudCBhbiBpbmZpbml0ZSBsb29wIGRlYWRsb2NrLgorICAgICAgICoKKyAgICAgICAq
CisgICAgICAgKiBJZiB5b3Ugd2FudCB0byBiZSBub3RpZmllZCB3aGVuZXZlciB7QGxpbmsgbmcu
JHJvb3RTY29wZS5TY29wZSMkZGlnZXN0ICRkaWdlc3R9IGlzIGNhbGxlZCwKKyAgICAgICAqIHlv
dSBjYW4gcmVnaXN0ZXIgYSBgd2F0Y2hFeHByZXNzaW9uYCBmdW5jdGlvbiB3aXRoIG5vIGBsaXN0
ZW5lcmAuIChTaW5jZSBgd2F0Y2hFeHByZXNzaW9uYAorICAgICAgICogY2FuIGV4ZWN1dGUgbXVs
dGlwbGUgdGltZXMgcGVyIHtAbGluayBuZy4kcm9vdFNjb3BlLlNjb3BlIyRkaWdlc3QgJGRpZ2Vz
dH0gY3ljbGUgd2hlbiBhCisgICAgICAgKiBjaGFuZ2UgaXMgZGV0ZWN0ZWQsIGJlIHByZXBhcmVk
IGZvciBtdWx0aXBsZSBjYWxscyB0byB5b3VyIGxpc3RlbmVyLikKKyAgICAgICAqCisgICAgICAg
KiBBZnRlciBhIHdhdGNoZXIgaXMgcmVnaXN0ZXJlZCB3aXRoIHRoZSBzY29wZSwgdGhlIGBsaXN0
ZW5lcmAgZm4gaXMgY2FsbGVkIGFzeW5jaHJvbm91c2x5CisgICAgICAgKiAodmlhIHtAbGluayBu
Zy4kcm9vdFNjb3BlLlNjb3BlIyRldmFsQXN5bmMgJGV2YWxBc3luY30pIHRvIGluaXRpYWxpemUg
dGhlCisgICAgICAgKiB3YXRjaGVyLiBJbiByYXJlIGNhc2VzLCB0aGlzIGlzIHVuZGVzaXJhYmxl
IGJlY2F1c2UgdGhlIGxpc3RlbmVyIGlzIGNhbGxlZCB3aGVuIHRoZSByZXN1bHQKKyAgICAgICAq
IG9mIGB3YXRjaEV4cHJlc3Npb25gIGRpZG4ndCBjaGFuZ2UuIFRvIGRldGVjdCB0aGlzIHNjZW5h
cmlvIHdpdGhpbiB0aGUgYGxpc3RlbmVyYCBmbiwgeW91CisgICAgICAgKiBjYW4gY29tcGFyZSB0
aGUgYG5ld1ZhbGAgYW5kIGBvbGRWYWxgLiBJZiB0aGVzZSB0d28gdmFsdWVzIGFyZSBpZGVudGlj
YWwgKGA9PT1gKSB0aGVuIHRoZQorICAgICAgICogbGlzdGVuZXIgd2FzIGNhbGxlZCBkdWUgdG8g
aW5pdGlhbGl6YXRpb24uCisgICAgICAgKgorICAgICAgICoKKyAgICAgICAqCisgICAgICAgKiAj
IEV4YW1wbGUKKyAgICAgICAqIGBgYGpzCisgICAgICAgICAgIC8vIGxldCdzIGFzc3VtZSB0aGF0
IHNjb3BlIHdhcyBkZXBlbmRlbmN5IGluamVjdGVkIGFzIHRoZSAkcm9vdFNjb3BlCisgICAgICAg
ICAgIHZhciBzY29wZSA9ICRyb290U2NvcGU7CisgICAgICAgICAgIHNjb3BlLm5hbWUgPSAnbWlz
a28nOworICAgICAgICAgICBzY29wZS5jb3VudGVyID0gMDsKKworICAgICAgICAgICBleHBlY3Qo
c2NvcGUuY291bnRlcikudG9FcXVhbCgwKTsKKyAgICAgICAgICAgc2NvcGUuJHdhdGNoKCduYW1l
JywgZnVuY3Rpb24obmV3VmFsdWUsIG9sZFZhbHVlKSB7CisgICAgICAgICAgICAgc2NvcGUuY291
bnRlciA9IHNjb3BlLmNvdW50ZXIgKyAxOworICAgICAgICAgICB9KTsKKyAgICAgICAgICAgZXhw
ZWN0KHNjb3BlLmNvdW50ZXIpLnRvRXF1YWwoMCk7CisKKyAgICAgICAgICAgc2NvcGUuJGRpZ2Vz
dCgpOworICAgICAgICAgICAvLyB0aGUgbGlzdGVuZXIgaXMgYWx3YXlzIGNhbGxlZCBkdXJpbmcg
dGhlIGZpcnN0ICRkaWdlc3QgbG9vcCBhZnRlciBpdCB3YXMgcmVnaXN0ZXJlZAorICAgICAgICAg
ICBleHBlY3Qoc2NvcGUuY291bnRlcikudG9FcXVhbCgxKTsKKworICAgICAgICAgICBzY29wZS4k
ZGlnZXN0KCk7CisgICAgICAgICAgIC8vIGJ1dCBub3cgaXQgd2lsbCBub3QgYmUgY2FsbGVkIHVu
bGVzcyB0aGUgdmFsdWUgY2hhbmdlcworICAgICAgICAgICBleHBlY3Qoc2NvcGUuY291bnRlciku
dG9FcXVhbCgxKTsKKworICAgICAgICAgICBzY29wZS5uYW1lID0gJ2FkYW0nOworICAgICAgICAg
ICBzY29wZS4kZGlnZXN0KCk7CisgICAgICAgICAgIGV4cGVjdChzY29wZS5jb3VudGVyKS50b0Vx
dWFsKDIpOworCisKKworICAgICAgICAgICAvLyBVc2luZyBhIGZ1bmN0aW9uIGFzIGEgd2F0Y2hF
eHByZXNzaW9uCisgICAgICAgICAgIHZhciBmb29kOworICAgICAgICAgICBzY29wZS5mb29kQ291
bnRlciA9IDA7CisgICAgICAgICAgIGV4cGVjdChzY29wZS5mb29kQ291bnRlcikudG9FcXVhbCgw
KTsKKyAgICAgICAgICAgc2NvcGUuJHdhdGNoKAorICAgICAgICAgICAgIC8vIFRoaXMgZnVuY3Rp
b24gcmV0dXJucyB0aGUgdmFsdWUgYmVpbmcgd2F0Y2hlZC4gSXQgaXMgY2FsbGVkIGZvciBlYWNo
IHR1cm4gb2YgdGhlICRkaWdlc3QgbG9vcAorICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyByZXR1
cm4gZm9vZDsgfSwKKyAgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBjaGFuZ2UgbGlzdGVuZXIs
IGNhbGxlZCB3aGVuIHRoZSB2YWx1ZSByZXR1cm5lZCBmcm9tIHRoZSBhYm92ZSBmdW5jdGlvbiBj
aGFuZ2VzCisgICAgICAgICAgICAgZnVuY3Rpb24obmV3VmFsdWUsIG9sZFZhbHVlKSB7CisgICAg
ICAgICAgICAgICBpZiAoIG5ld1ZhbHVlICE9PSBvbGRWYWx1ZSApIHsKKyAgICAgICAgICAgICAg
ICAgLy8gT25seSBpbmNyZW1lbnQgdGhlIGNvdW50ZXIgaWYgdGhlIHZhbHVlIGNoYW5nZWQKKyAg
ICAgICAgICAgICAgICAgc2NvcGUuZm9vZENvdW50ZXIgPSBzY29wZS5mb29kQ291bnRlciArIDE7
CisgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgfQorICAgICAgICAgICApOworICAgICAg
ICAgICAvLyBObyBkaWdlc3QgaGFzIGJlZW4gcnVuIHNvIHRoZSBjb3VudGVyIHdpbGwgYmUgemVy
bworICAgICAgICAgICBleHBlY3Qoc2NvcGUuZm9vZENvdW50ZXIpLnRvRXF1YWwoMCk7CisKKyAg
ICAgICAgICAgLy8gUnVuIHRoZSBkaWdlc3QgYnV0IHNpbmNlIGZvb2QgaGFzIG5vdCBjaGFuZ2Vk
IGNvdW50IHdpbGwgc3RpbGwgYmUgemVybworICAgICAgICAgICBzY29wZS4kZGlnZXN0KCk7Cisg
ICAgICAgICAgIGV4cGVjdChzY29wZS5mb29kQ291bnRlcikudG9FcXVhbCgwKTsKKworICAgICAg
ICAgICAvLyBVcGRhdGUgZm9vZCBhbmQgcnVuIGRpZ2VzdC4gIE5vdyB0aGUgY291bnRlciB3aWxs
IGluY3JlbWVudAorICAgICAgICAgICBmb29kID0gJ2NoZWVzZWJ1cmdlcic7CisgICAgICAgICAg
IHNjb3BlLiRkaWdlc3QoKTsKKyAgICAgICAgICAgZXhwZWN0KHNjb3BlLmZvb2RDb3VudGVyKS50
b0VxdWFsKDEpOworCisgICAgICAgKiBgYGAKKyAgICAgICAqCisgICAgICAgKgorICAgICAgICoK
KyAgICAgICAqIEBwYXJhbSB7KGZ1bmN0aW9uKCl8c3RyaW5nKX0gd2F0Y2hFeHByZXNzaW9uIEV4
cHJlc3Npb24gdGhhdCBpcyBldmFsdWF0ZWQgb24gZWFjaAorICAgICAgICogICAge0BsaW5rIG5n
LiRyb290U2NvcGUuU2NvcGUjJGRpZ2VzdCAkZGlnZXN0fSBjeWNsZS4gQSBjaGFuZ2UgaW4gdGhl
IHJldHVybiB2YWx1ZSB0cmlnZ2VycworICAgICAgICogICAgYSBjYWxsIHRvIHRoZSBgbGlzdGVu
ZXJgLgorICAgICAgICoKKyAgICAgICAqICAgIC0gYHN0cmluZ2A6IEV2YWx1YXRlZCBhcyB7QGxp
bmsgZ3VpZGUvZXhwcmVzc2lvbiBleHByZXNzaW9ufQorICAgICAgICogICAgLSBgZnVuY3Rpb24o
c2NvcGUpYDogY2FsbGVkIHdpdGggY3VycmVudCBgc2NvcGVgIGFzIGEgcGFyYW1ldGVyLgorICAg
ICAgICogQHBhcmFtIHtmdW5jdGlvbihuZXdWYWwsIG9sZFZhbCwgc2NvcGUpfSBsaXN0ZW5lciBD
YWxsYmFjayBjYWxsZWQgd2hlbmV2ZXIgdGhlIHZhbHVlCisgICAgICAgKiAgICBvZiBgd2F0Y2hF
eHByZXNzaW9uYCBjaGFuZ2VzLgorICAgICAgICoKKyAgICAgICAqICAgIC0gYG5ld1ZhbGAgY29u
dGFpbnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGB3YXRjaEV4cHJlc3Npb25gCisgICAgICAg
KiAgICAtIGBvbGRWYWxgIGNvbnRhaW5zIHRoZSBwcmV2aW91cyB2YWx1ZSBvZiB0aGUgYHdhdGNo
RXhwcmVzc2lvbmAKKyAgICAgICAqICAgIC0gYHNjb3BlYCByZWZlcnMgdG8gdGhlIGN1cnJlbnQg
c2NvcGUKKyAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbj19IG9iamVjdEVxdWFsaXR5IENvbXBhcmUg
Zm9yIG9iamVjdCBlcXVhbGl0eSB1c2luZyB7QGxpbmsgYW5ndWxhci5lcXVhbHN9IGluc3RlYWQg
b2YKKyAgICAgICAqICAgICBjb21wYXJpbmcgZm9yIHJlZmVyZW5jZSBlcXVhbGl0eS4KKyAgICAg
ICAqIEByZXR1cm5zIHtmdW5jdGlvbigpfSBSZXR1cm5zIGEgZGVyZWdpc3RyYXRpb24gZnVuY3Rp
b24gZm9yIHRoaXMgbGlzdGVuZXIuCisgICAgICAgKi8KKyAgICAgICR3YXRjaDogZnVuY3Rpb24o
d2F0Y2hFeHAsIGxpc3RlbmVyLCBvYmplY3RFcXVhbGl0eSwgcHJldHR5UHJpbnRFeHByZXNzaW9u
KSB7CisgICAgICAgIHZhciBnZXQgPSAkcGFyc2Uod2F0Y2hFeHApOworCisgICAgICAgIGlmIChn
ZXQuJCR3YXRjaERlbGVnYXRlKSB7CisgICAgICAgICAgcmV0dXJuIGdldC4kJHdhdGNoRGVsZWdh
dGUodGhpcywgbGlzdGVuZXIsIG9iamVjdEVxdWFsaXR5LCBnZXQsIHdhdGNoRXhwKTsKKyAgICAg
ICAgfQorICAgICAgICB2YXIgc2NvcGUgPSB0aGlzLAorICAgICAgICAgICAgYXJyYXkgPSBzY29w
ZS4kJHdhdGNoZXJzLAorICAgICAgICAgICAgd2F0Y2hlciA9IHsKKyAgICAgICAgICAgICAgZm46
IGxpc3RlbmVyLAorICAgICAgICAgICAgICBsYXN0OiBpbml0V2F0Y2hWYWwsCisgICAgICAgICAg
ICAgIGdldDogZ2V0LAorICAgICAgICAgICAgICBleHA6IHByZXR0eVByaW50RXhwcmVzc2lvbiB8
fCB3YXRjaEV4cCwKKyAgICAgICAgICAgICAgZXE6ICEhb2JqZWN0RXF1YWxpdHkKKyAgICAgICAg
ICAgIH07CisKKyAgICAgICAgbGFzdERpcnR5V2F0Y2ggPSBudWxsOworCisgICAgICAgIGlmICgh
aXNGdW5jdGlvbihsaXN0ZW5lcikpIHsKKyAgICAgICAgICB3YXRjaGVyLmZuID0gbm9vcDsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmICghYXJyYXkpIHsKKyAgICAgICAgICBhcnJheSA9IHNjb3Bl
LiQkd2F0Y2hlcnMgPSBbXTsKKyAgICAgICAgfQorICAgICAgICAvLyB3ZSB1c2UgdW5zaGlmdCBz
aW5jZSB3ZSB1c2UgYSB3aGlsZSBsb29wIGluICRkaWdlc3QgZm9yIHNwZWVkLgorICAgICAgICAv
LyB0aGUgd2hpbGUgbG9vcCByZWFkcyBpbiByZXZlcnNlIG9yZGVyLgorICAgICAgICBhcnJheS51
bnNoaWZ0KHdhdGNoZXIpOworICAgICAgICBpbmNyZW1lbnRXYXRjaGVyc0NvdW50KHRoaXMsIDEp
OworCisgICAgICAgIHJldHVybiBmdW5jdGlvbiBkZXJlZ2lzdGVyV2F0Y2goKSB7CisgICAgICAg
ICAgaWYgKGFycmF5UmVtb3ZlKGFycmF5LCB3YXRjaGVyKSA+PSAwKSB7CisgICAgICAgICAgICBp
bmNyZW1lbnRXYXRjaGVyc0NvdW50KHNjb3BlLCAtMSk7CisgICAgICAgICAgfQorICAgICAgICAg
IGxhc3REaXJ0eVdhdGNoID0gbnVsbDsKKyAgICAgICAgfTsKKyAgICAgIH0sCisKKyAgICAgIC8q
KgorICAgICAgICogQG5nZG9jIG1ldGhvZAorICAgICAgICogQG5hbWUgJHJvb3RTY29wZS5TY29w
ZSMkd2F0Y2hHcm91cAorICAgICAgICogQGtpbmQgZnVuY3Rpb24KKyAgICAgICAqCisgICAgICAg
KiBAZGVzY3JpcHRpb24KKyAgICAgICAqIEEgdmFyaWFudCBvZiB7QGxpbmsgbmcuJHJvb3RTY29w
ZS5TY29wZSMkd2F0Y2ggJHdhdGNoKCl9IHdoZXJlIGl0IHdhdGNoZXMgYW4gYXJyYXkgb2YgYHdh
dGNoRXhwcmVzc2lvbnNgLgorICAgICAgICogSWYgYW55IG9uZSBleHByZXNzaW9uIGluIHRoZSBj
b2xsZWN0aW9uIGNoYW5nZXMgdGhlIGBsaXN0ZW5lcmAgaXMgZXhlY3V0ZWQuCisgICAgICAgKgor
ICAgICAgICogLSBUaGUgaXRlbXMgaW4gdGhlIGB3YXRjaEV4cHJlc3Npb25zYCBhcnJheSBhcmUg
b2JzZXJ2ZWQgdmlhIHN0YW5kYXJkICR3YXRjaCBvcGVyYXRpb24gYW5kIGFyZSBleGFtaW5lZCBv
biBldmVyeQorICAgICAgICogICBjYWxsIHRvICRkaWdlc3QoKSB0byBzZWUgaWYgYW55IGl0ZW1z
IGNoYW5nZXMuCisgICAgICAgKiAtIFRoZSBgbGlzdGVuZXJgIGlzIGNhbGxlZCB3aGVuZXZlciBh
bnkgZXhwcmVzc2lvbiBpbiB0aGUgYHdhdGNoRXhwcmVzc2lvbnNgIGFycmF5IGNoYW5nZXMuCisg
ICAgICAgKgorICAgICAgICogQHBhcmFtIHtBcnJheS48c3RyaW5nfEZ1bmN0aW9uKHNjb3BlKT59
IHdhdGNoRXhwcmVzc2lvbnMgQXJyYXkgb2YgZXhwcmVzc2lvbnMgdGhhdCB3aWxsIGJlIGluZGl2
aWR1YWxseQorICAgICAgICogd2F0Y2hlZCB1c2luZyB7QGxpbmsgbmcuJHJvb3RTY29wZS5TY29w
ZSMkd2F0Y2ggJHdhdGNoKCl9CisgICAgICAgKgorICAgICAgICogQHBhcmFtIHtmdW5jdGlvbihu
ZXdWYWx1ZXMsIG9sZFZhbHVlcywgc2NvcGUpfSBsaXN0ZW5lciBDYWxsYmFjayBjYWxsZWQgd2hl
bmV2ZXIgdGhlIHJldHVybiB2YWx1ZSBvZiBhbnkKKyAgICAgICAqICAgIGV4cHJlc3Npb24gaW4g
YHdhdGNoRXhwcmVzc2lvbnNgIGNoYW5nZXMKKyAgICAgICAqICAgIFRoZSBgbmV3VmFsdWVzYCBh
cnJheSBjb250YWlucyB0aGUgY3VycmVudCB2YWx1ZXMgb2YgdGhlIGB3YXRjaEV4cHJlc3Npb25z
YCwgd2l0aCB0aGUgaW5kZXhlcyBtYXRjaGluZworICAgICAgICogICAgdGhvc2Ugb2YgYHdhdGNo
RXhwcmVzc2lvbmAKKyAgICAgICAqICAgIGFuZCB0aGUgYG9sZFZhbHVlc2AgYXJyYXkgY29udGFp
bnMgdGhlIHByZXZpb3VzIHZhbHVlcyBvZiB0aGUgYHdhdGNoRXhwcmVzc2lvbnNgLCB3aXRoIHRo
ZSBpbmRleGVzIG1hdGNoaW5nCisgICAgICAgKiAgICB0aG9zZSBvZiBgd2F0Y2hFeHByZXNzaW9u
YAorICAgICAgICogICAgVGhlIGBzY29wZWAgcmVmZXJzIHRvIHRoZSBjdXJyZW50IHNjb3BlLgor
ICAgICAgICogQHJldHVybnMge2Z1bmN0aW9uKCl9IFJldHVybnMgYSBkZS1yZWdpc3RyYXRpb24g
ZnVuY3Rpb24gZm9yIGFsbCBsaXN0ZW5lcnMuCisgICAgICAgKi8KKyAgICAgICR3YXRjaEdyb3Vw
OiBmdW5jdGlvbih3YXRjaEV4cHJlc3Npb25zLCBsaXN0ZW5lcikgeworICAgICAgICB2YXIgb2xk
VmFsdWVzID0gbmV3IEFycmF5KHdhdGNoRXhwcmVzc2lvbnMubGVuZ3RoKTsKKyAgICAgICAgdmFy
IG5ld1ZhbHVlcyA9IG5ldyBBcnJheSh3YXRjaEV4cHJlc3Npb25zLmxlbmd0aCk7CisgICAgICAg
IHZhciBkZXJlZ2lzdGVyRm5zID0gW107CisgICAgICAgIHZhciBzZWxmID0gdGhpczsKKyAgICAg
ICAgdmFyIGNoYW5nZVJlYWN0aW9uU2NoZWR1bGVkID0gZmFsc2U7CisgICAgICAgIHZhciBmaXJz
dFJ1biA9IHRydWU7CisKKyAgICAgICAgaWYgKCF3YXRjaEV4cHJlc3Npb25zLmxlbmd0aCkgewor
ICAgICAgICAgIC8vIE5vIGV4cHJlc3Npb25zIG1lYW5zIHdlIGNhbGwgdGhlIGxpc3RlbmVyIEFT
QVAKKyAgICAgICAgICB2YXIgc2hvdWxkQ2FsbCA9IHRydWU7CisgICAgICAgICAgc2VsZi4kZXZh
bEFzeW5jKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgaWYgKHNob3VsZENhbGwpIGxpc3RlbmVy
KG5ld1ZhbHVlcywgbmV3VmFsdWVzLCBzZWxmKTsKKyAgICAgICAgICB9KTsKKyAgICAgICAgICBy
ZXR1cm4gZnVuY3Rpb24gZGVyZWdpc3RlcldhdGNoR3JvdXAoKSB7CisgICAgICAgICAgICBzaG91
bGRDYWxsID0gZmFsc2U7CisgICAgICAgICAgfTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh3
YXRjaEV4cHJlc3Npb25zLmxlbmd0aCA9PT0gMSkgeworICAgICAgICAgIC8vIFNwZWNpYWwgY2Fz
ZSBzaXplIG9mIG9uZQorICAgICAgICAgIHJldHVybiB0aGlzLiR3YXRjaCh3YXRjaEV4cHJlc3Np
b25zWzBdLCBmdW5jdGlvbiB3YXRjaEdyb3VwQWN0aW9uKHZhbHVlLCBvbGRWYWx1ZSwgc2NvcGUp
IHsKKyAgICAgICAgICAgIG5ld1ZhbHVlc1swXSA9IHZhbHVlOworICAgICAgICAgICAgb2xkVmFs
dWVzWzBdID0gb2xkVmFsdWU7CisgICAgICAgICAgICBsaXN0ZW5lcihuZXdWYWx1ZXMsICh2YWx1
ZSA9PT0gb2xkVmFsdWUpID8gbmV3VmFsdWVzIDogb2xkVmFsdWVzLCBzY29wZSk7CisgICAgICAg
ICAgfSk7CisgICAgICAgIH0KKworICAgICAgICBmb3JFYWNoKHdhdGNoRXhwcmVzc2lvbnMsIGZ1
bmN0aW9uKGV4cHIsIGkpIHsKKyAgICAgICAgICB2YXIgdW53YXRjaEZuID0gc2VsZi4kd2F0Y2go
ZXhwciwgZnVuY3Rpb24gd2F0Y2hHcm91cFN1YkFjdGlvbih2YWx1ZSwgb2xkVmFsdWUpIHsKKyAg
ICAgICAgICAgIG5ld1ZhbHVlc1tpXSA9IHZhbHVlOworICAgICAgICAgICAgb2xkVmFsdWVzW2ld
ID0gb2xkVmFsdWU7CisgICAgICAgICAgICBpZiAoIWNoYW5nZVJlYWN0aW9uU2NoZWR1bGVkKSB7
CisgICAgICAgICAgICAgIGNoYW5nZVJlYWN0aW9uU2NoZWR1bGVkID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgc2VsZi4kZXZhbEFzeW5jKHdhdGNoR3JvdXBBY3Rpb24pOworICAgICAgICAgICAgfQor
ICAgICAgICAgIH0pOworICAgICAgICAgIGRlcmVnaXN0ZXJGbnMucHVzaCh1bndhdGNoRm4pOwor
ICAgICAgICB9KTsKKworICAgICAgICBmdW5jdGlvbiB3YXRjaEdyb3VwQWN0aW9uKCkgeworICAg
ICAgICAgIGNoYW5nZVJlYWN0aW9uU2NoZWR1bGVkID0gZmFsc2U7CisKKyAgICAgICAgICBpZiAo
Zmlyc3RSdW4pIHsKKyAgICAgICAgICAgIGZpcnN0UnVuID0gZmFsc2U7CisgICAgICAgICAgICBs
aXN0ZW5lcihuZXdWYWx1ZXMsIG5ld1ZhbHVlcywgc2VsZik7CisgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIGxpc3RlbmVyKG5ld1ZhbHVlcywgb2xkVmFsdWVzLCBzZWxmKTsKKyAgICAg
ICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZnVuY3Rpb24gZGVyZWdpc3Rlcldh
dGNoR3JvdXAoKSB7CisgICAgICAgICAgd2hpbGUgKGRlcmVnaXN0ZXJGbnMubGVuZ3RoKSB7Cisg
ICAgICAgICAgICBkZXJlZ2lzdGVyRm5zLnNoaWZ0KCkoKTsKKyAgICAgICAgICB9CisgICAgICAg
IH07CisgICAgICB9LAorCisKKyAgICAgIC8qKgorICAgICAgICogQG5nZG9jIG1ldGhvZAorICAg
ICAgICogQG5hbWUgJHJvb3RTY29wZS5TY29wZSMkd2F0Y2hDb2xsZWN0aW9uCisgICAgICAgKiBA
a2luZCBmdW5jdGlvbgorICAgICAgICoKKyAgICAgICAqIEBkZXNjcmlwdGlvbgorICAgICAgICog
U2hhbGxvdyB3YXRjaGVzIHRoZSBwcm9wZXJ0aWVzIG9mIGFuIG9iamVjdCBhbmQgZmlyZXMgd2hl
bmV2ZXIgYW55IG9mIHRoZSBwcm9wZXJ0aWVzIGNoYW5nZQorICAgICAgICogKGZvciBhcnJheXMs
IHRoaXMgaW1wbGllcyB3YXRjaGluZyB0aGUgYXJyYXkgaXRlbXM7IGZvciBvYmplY3QgbWFwcywg
dGhpcyBpbXBsaWVzIHdhdGNoaW5nCisgICAgICAgKiB0aGUgcHJvcGVydGllcykuIElmIGEgY2hh
bmdlIGlzIGRldGVjdGVkLCB0aGUgYGxpc3RlbmVyYCBjYWxsYmFjayBpcyBmaXJlZC4KKyAgICAg
ICAqCisgICAgICAgKiAtIFRoZSBgb2JqYCBjb2xsZWN0aW9uIGlzIG9ic2VydmVkIHZpYSBzdGFu
ZGFyZCAkd2F0Y2ggb3BlcmF0aW9uIGFuZCBpcyBleGFtaW5lZCBvbiBldmVyeQorICAgICAgICog
ICBjYWxsIHRvICRkaWdlc3QoKSB0byBzZWUgaWYgYW55IGl0ZW1zIGhhdmUgYmVlbiBhZGRlZCwg
cmVtb3ZlZCwgb3IgbW92ZWQuCisgICAgICAgKiAtIFRoZSBgbGlzdGVuZXJgIGlzIGNhbGxlZCB3
aGVuZXZlciBhbnl0aGluZyB3aXRoaW4gdGhlIGBvYmpgIGhhcyBjaGFuZ2VkLiBFeGFtcGxlcyBp
bmNsdWRlCisgICAgICAgKiAgIGFkZGluZywgcmVtb3ZpbmcsIGFuZCBtb3ZpbmcgaXRlbXMgYmVs
b25naW5nIHRvIGFuIG9iamVjdCBvciBhcnJheS4KKyAgICAgICAqCisgICAgICAgKgorICAgICAg
ICogIyBFeGFtcGxlCisgICAgICAgKiBgYGBqcworICAgICAgICAgICRzY29wZS5uYW1lcyA9IFsn
aWdvcicsICdtYXRpYXMnLCAnbWlza28nLCAnamFtZXMnXTsKKyAgICAgICAgICAkc2NvcGUuZGF0
YUNvdW50ID0gNDsKKworICAgICAgICAgICRzY29wZS4kd2F0Y2hDb2xsZWN0aW9uKCduYW1lcycs
IGZ1bmN0aW9uKG5ld05hbWVzLCBvbGROYW1lcykgeworICAgICAgICAgICAgJHNjb3BlLmRhdGFD
b3VudCA9IG5ld05hbWVzLmxlbmd0aDsKKyAgICAgICAgICB9KTsKKworICAgICAgICAgIGV4cGVj
dCgkc2NvcGUuZGF0YUNvdW50KS50b0VxdWFsKDQpOworICAgICAgICAgICRzY29wZS4kZGlnZXN0
KCk7CisKKyAgICAgICAgICAvL3N0aWxsIGF0IDQgLi4uIG5vIGNoYW5nZXMKKyAgICAgICAgICBl
eHBlY3QoJHNjb3BlLmRhdGFDb3VudCkudG9FcXVhbCg0KTsKKworICAgICAgICAgICRzY29wZS5u
YW1lcy5wb3AoKTsKKyAgICAgICAgICAkc2NvcGUuJGRpZ2VzdCgpOworCisgICAgICAgICAgLy9u
b3cgdGhlcmUncyBiZWVuIGEgY2hhbmdlCisgICAgICAgICAgZXhwZWN0KCRzY29wZS5kYXRhQ291
bnQpLnRvRXF1YWwoMyk7CisgICAgICAgKiBgYGAKKyAgICAgICAqCisgICAgICAgKgorICAgICAg
ICogQHBhcmFtIHtzdHJpbmd8ZnVuY3Rpb24oc2NvcGUpfSBvYmogRXZhbHVhdGVkIGFzIHtAbGlu
ayBndWlkZS9leHByZXNzaW9uIGV4cHJlc3Npb259LiBUaGUKKyAgICAgICAqICAgIGV4cHJlc3Np
b24gdmFsdWUgc2hvdWxkIGV2YWx1YXRlIHRvIGFuIG9iamVjdCBvciBhbiBhcnJheSB3aGljaCBp
cyBvYnNlcnZlZCBvbiBlYWNoCisgICAgICAgKiAgICB7QGxpbmsgbmcuJHJvb3RTY29wZS5TY29w
ZSMkZGlnZXN0ICRkaWdlc3R9IGN5Y2xlLiBBbnkgc2hhbGxvdyBjaGFuZ2Ugd2l0aGluIHRoZQor
ICAgICAgICogICAgY29sbGVjdGlvbiB3aWxsIHRyaWdnZXIgYSBjYWxsIHRvIHRoZSBgbGlzdGVu
ZXJgLgorICAgICAgICoKKyAgICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24obmV3Q29sbGVjdGlvbiwg
b2xkQ29sbGVjdGlvbiwgc2NvcGUpfSBsaXN0ZW5lciBhIGNhbGxiYWNrIGZ1bmN0aW9uIGNhbGxl
ZAorICAgICAgICogICAgd2hlbiBhIGNoYW5nZSBpcyBkZXRlY3RlZC4KKyAgICAgICAqICAgIC0g
VGhlIGBuZXdDb2xsZWN0aW9uYCBvYmplY3QgaXMgdGhlIG5ld2x5IG1vZGlmaWVkIGRhdGEgb2J0
YWluZWQgZnJvbSB0aGUgYG9iamAgZXhwcmVzc2lvbgorICAgICAgICogICAgLSBUaGUgYG9sZENv
bGxlY3Rpb25gIG9iamVjdCBpcyBhIGNvcHkgb2YgdGhlIGZvcm1lciBjb2xsZWN0aW9uIGRhdGEu
CisgICAgICAgKiAgICAgIER1ZSB0byBwZXJmb3JtYW5jZSBjb25zaWRlcmF0aW9ucywgdGhlYG9s
ZENvbGxlY3Rpb25gIHZhbHVlIGlzIGNvbXB1dGVkIG9ubHkgaWYgdGhlCisgICAgICAgKiAgICAg
IGBsaXN0ZW5lcmAgZnVuY3Rpb24gZGVjbGFyZXMgdHdvIG9yIG1vcmUgYXJndW1lbnRzLgorICAg
ICAgICogICAgLSBUaGUgYHNjb3BlYCBhcmd1bWVudCByZWZlcnMgdG8gdGhlIGN1cnJlbnQgc2Nv
cGUuCisgICAgICAgKgorICAgICAgICogQHJldHVybnMge2Z1bmN0aW9uKCl9IFJldHVybnMgYSBk
ZS1yZWdpc3RyYXRpb24gZnVuY3Rpb24gZm9yIHRoaXMgbGlzdGVuZXIuIFdoZW4gdGhlCisgICAg
ICAgKiAgICBkZS1yZWdpc3RyYXRpb24gZnVuY3Rpb24gaXMgZXhlY3V0ZWQsIHRoZSBpbnRlcm5h
bCB3YXRjaCBvcGVyYXRpb24gaXMgdGVybWluYXRlZC4KKyAgICAgICAqLworICAgICAgJHdhdGNo
Q29sbGVjdGlvbjogZnVuY3Rpb24ob2JqLCBsaXN0ZW5lcikgeworICAgICAgICAkd2F0Y2hDb2xs
ZWN0aW9uSW50ZXJjZXB0b3IuJHN0YXRlZnVsID0gdHJ1ZTsKKworICAgICAgICB2YXIgc2VsZiA9
IHRoaXM7CisgICAgICAgIC8vIHRoZSBjdXJyZW50IHZhbHVlLCB1cGRhdGVkIG9uIGVhY2ggZGly
dHktY2hlY2sgcnVuCisgICAgICAgIHZhciBuZXdWYWx1ZTsKKyAgICAgICAgLy8gYSBzaGFsbG93
IGNvcHkgb2YgdGhlIG5ld1ZhbHVlIGZyb20gdGhlIGxhc3QgZGlydHktY2hlY2sgcnVuLAorICAg
ICAgICAvLyB1cGRhdGVkIHRvIG1hdGNoIG5ld1ZhbHVlIGR1cmluZyBkaXJ0eS1jaGVjayBydW4K
KyAgICAgICAgdmFyIG9sZFZhbHVlOworICAgICAgICAvLyBhIHNoYWxsb3cgY29weSBvZiB0aGUg
bmV3VmFsdWUgZnJvbSB3aGVuIHRoZSBsYXN0IGNoYW5nZSBoYXBwZW5lZAorICAgICAgICB2YXIg
dmVyeU9sZFZhbHVlOworICAgICAgICAvLyBvbmx5IHRyYWNrIHZlcnlPbGRWYWx1ZSBpZiB0aGUg
bGlzdGVuZXIgaXMgYXNraW5nIGZvciBpdAorICAgICAgICB2YXIgdHJhY2tWZXJ5T2xkVmFsdWUg
PSAobGlzdGVuZXIubGVuZ3RoID4gMSk7CisgICAgICAgIHZhciBjaGFuZ2VEZXRlY3RlZCA9IDA7
CisgICAgICAgIHZhciBjaGFuZ2VEZXRlY3RvciA9ICRwYXJzZShvYmosICR3YXRjaENvbGxlY3Rp
b25JbnRlcmNlcHRvcik7CisgICAgICAgIHZhciBpbnRlcm5hbEFycmF5ID0gW107CisgICAgICAg
IHZhciBpbnRlcm5hbE9iamVjdCA9IHt9OworICAgICAgICB2YXIgaW5pdFJ1biA9IHRydWU7Cisg
ICAgICAgIHZhciBvbGRMZW5ndGggPSAwOworCisgICAgICAgIGZ1bmN0aW9uICR3YXRjaENvbGxl
Y3Rpb25JbnRlcmNlcHRvcihfdmFsdWUpIHsKKyAgICAgICAgICBuZXdWYWx1ZSA9IF92YWx1ZTsK
KyAgICAgICAgICB2YXIgbmV3TGVuZ3RoLCBrZXksIGJvdGhOYU4sIG5ld0l0ZW0sIG9sZEl0ZW07
CisKKyAgICAgICAgICAvLyBJZiB0aGUgbmV3IHZhbHVlIGlzIHVuZGVmaW5lZCwgdGhlbiByZXR1
cm4gdW5kZWZpbmVkIGFzIHRoZSB3YXRjaCBtYXkgYmUgYSBvbmUtdGltZSB3YXRjaAorICAgICAg
ICAgIGlmIChpc1VuZGVmaW5lZChuZXdWYWx1ZSkpIHJldHVybjsKKworICAgICAgICAgIGlmICgh
aXNPYmplY3QobmV3VmFsdWUpKSB7IC8vIGlmIHByaW1pdGl2ZQorICAgICAgICAgICAgaWYgKG9s
ZFZhbHVlICE9PSBuZXdWYWx1ZSkgeworICAgICAgICAgICAgICBvbGRWYWx1ZSA9IG5ld1ZhbHVl
OworICAgICAgICAgICAgICBjaGFuZ2VEZXRlY3RlZCsrOworICAgICAgICAgICAgfQorICAgICAg
ICAgIH0gZWxzZSBpZiAoaXNBcnJheUxpa2UobmV3VmFsdWUpKSB7CisgICAgICAgICAgICBpZiAo
b2xkVmFsdWUgIT09IGludGVybmFsQXJyYXkpIHsKKyAgICAgICAgICAgICAgLy8gd2UgYXJlIHRy
YW5zaXRpb25pbmcgZnJvbSBzb21ldGhpbmcgd2hpY2ggd2FzIG5vdCBhbiBhcnJheSBpbnRvIGFy
cmF5LgorICAgICAgICAgICAgICBvbGRWYWx1ZSA9IGludGVybmFsQXJyYXk7CisgICAgICAgICAg
ICAgIG9sZExlbmd0aCA9IG9sZFZhbHVlLmxlbmd0aCA9IDA7CisgICAgICAgICAgICAgIGNoYW5n
ZURldGVjdGVkKys7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG5ld0xlbmd0aCA9IG5l
d1ZhbHVlLmxlbmd0aDsKKworICAgICAgICAgICAgaWYgKG9sZExlbmd0aCAhPT0gbmV3TGVuZ3Ro
KSB7CisgICAgICAgICAgICAgIC8vIGlmIGxlbmd0aHMgZG8gbm90IG1hdGNoIHdlIG5lZWQgdG8g
dHJpZ2dlciBjaGFuZ2Ugbm90aWZpY2F0aW9uCisgICAgICAgICAgICAgIGNoYW5nZURldGVjdGVk
Kys7CisgICAgICAgICAgICAgIG9sZFZhbHVlLmxlbmd0aCA9IG9sZExlbmd0aCA9IG5ld0xlbmd0
aDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIGNvcHkgdGhlIGl0ZW1zIHRvIG9sZFZh
bHVlIGFuZCBsb29rIGZvciBjaGFuZ2VzLgorICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBuZXdMZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICBvbGRJdGVtID0gb2xkVmFsdWVbaV07
CisgICAgICAgICAgICAgIG5ld0l0ZW0gPSBuZXdWYWx1ZVtpXTsKKworICAgICAgICAgICAgICBi
b3RoTmFOID0gKG9sZEl0ZW0gIT09IG9sZEl0ZW0pICYmIChuZXdJdGVtICE9PSBuZXdJdGVtKTsK
KyAgICAgICAgICAgICAgaWYgKCFib3RoTmFOICYmIChvbGRJdGVtICE9PSBuZXdJdGVtKSkgewor
ICAgICAgICAgICAgICAgIGNoYW5nZURldGVjdGVkKys7CisgICAgICAgICAgICAgICAgb2xkVmFs
dWVbaV0gPSBuZXdJdGVtOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChvbGRWYWx1ZSAhPT0gaW50ZXJuYWxPYmplY3Qp
IHsKKyAgICAgICAgICAgICAgLy8gd2UgYXJlIHRyYW5zaXRpb25pbmcgZnJvbSBzb21ldGhpbmcg
d2hpY2ggd2FzIG5vdCBhbiBvYmplY3QgaW50byBvYmplY3QuCisgICAgICAgICAgICAgIG9sZFZh
bHVlID0gaW50ZXJuYWxPYmplY3QgPSB7fTsKKyAgICAgICAgICAgICAgb2xkTGVuZ3RoID0gMDsK
KyAgICAgICAgICAgICAgY2hhbmdlRGV0ZWN0ZWQrKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIC8vIGNvcHkgdGhlIGl0ZW1zIHRvIG9sZFZhbHVlIGFuZCBsb29rIGZvciBjaGFuZ2VzLgor
ICAgICAgICAgICAgbmV3TGVuZ3RoID0gMDsKKyAgICAgICAgICAgIGZvciAoa2V5IGluIG5ld1Zh
bHVlKSB7CisgICAgICAgICAgICAgIGlmIChuZXdWYWx1ZS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7
CisgICAgICAgICAgICAgICAgbmV3TGVuZ3RoKys7CisgICAgICAgICAgICAgICAgbmV3SXRlbSA9
IG5ld1ZhbHVlW2tleV07CisgICAgICAgICAgICAgICAgb2xkSXRlbSA9IG9sZFZhbHVlW2tleV07
CisKKyAgICAgICAgICAgICAgICBpZiAoa2V5IGluIG9sZFZhbHVlKSB7CisgICAgICAgICAgICAg
ICAgICBib3RoTmFOID0gKG9sZEl0ZW0gIT09IG9sZEl0ZW0pICYmIChuZXdJdGVtICE9PSBuZXdJ
dGVtKTsKKyAgICAgICAgICAgICAgICAgIGlmICghYm90aE5hTiAmJiAob2xkSXRlbSAhPT0gbmV3
SXRlbSkpIHsKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlRGV0ZWN0ZWQrKzsKKyAgICAgICAg
ICAgICAgICAgICAgb2xkVmFsdWVba2V5XSA9IG5ld0l0ZW07CisgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgIG9sZExlbmd0aCsr
OworICAgICAgICAgICAgICAgICAgb2xkVmFsdWVba2V5XSA9IG5ld0l0ZW07CisgICAgICAgICAg
ICAgICAgICBjaGFuZ2VEZXRlY3RlZCsrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG9sZExlbmd0aCA+IG5ld0xlbmd0
aCkgeworICAgICAgICAgICAgICAvLyB3ZSB1c2VkIHRvIGhhdmUgbW9yZSBrZXlzLCBuZWVkIHRv
IGZpbmQgdGhlbSBhbmQgZGVzdHJveSB0aGVtLgorICAgICAgICAgICAgICBjaGFuZ2VEZXRlY3Rl
ZCsrOworICAgICAgICAgICAgICBmb3IgKGtleSBpbiBvbGRWYWx1ZSkgeworICAgICAgICAgICAg
ICAgIGlmICghbmV3VmFsdWUuaGFzT3duUHJvcGVydHkoa2V5KSkgeworICAgICAgICAgICAgICAg
ICAgb2xkTGVuZ3RoLS07CisgICAgICAgICAgICAgICAgICBkZWxldGUgb2xkVmFsdWVba2V5XTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICB9CisgICAgICAgICAgcmV0dXJuIGNoYW5nZURldGVjdGVkOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gJHdhdGNoQ29sbGVjdGlvbkFjdGlvbigpIHsKKyAgICAgICAgICBpZiAo
aW5pdFJ1bikgeworICAgICAgICAgICAgaW5pdFJ1biA9IGZhbHNlOworICAgICAgICAgICAgbGlz
dGVuZXIobmV3VmFsdWUsIG5ld1ZhbHVlLCBzZWxmKTsKKyAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgbGlzdGVuZXIobmV3VmFsdWUsIHZlcnlPbGRWYWx1ZSwgc2VsZik7CisgICAgICAg
ICAgfQorCisgICAgICAgICAgLy8gbWFrZSBhIGNvcHkgZm9yIHRoZSBuZXh0IHRpbWUgYSBjb2xs
ZWN0aW9uIGlzIGNoYW5nZWQKKyAgICAgICAgICBpZiAodHJhY2tWZXJ5T2xkVmFsdWUpIHsKKyAg
ICAgICAgICAgIGlmICghaXNPYmplY3QobmV3VmFsdWUpKSB7CisgICAgICAgICAgICAgIC8vcHJp
bWl0aXZlCisgICAgICAgICAgICAgIHZlcnlPbGRWYWx1ZSA9IG5ld1ZhbHVlOworICAgICAgICAg
ICAgfSBlbHNlIGlmIChpc0FycmF5TGlrZShuZXdWYWx1ZSkpIHsKKyAgICAgICAgICAgICAgdmVy
eU9sZFZhbHVlID0gbmV3IEFycmF5KG5ld1ZhbHVlLmxlbmd0aCk7CisgICAgICAgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgbmV3VmFsdWUubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAg
ICB2ZXJ5T2xkVmFsdWVbaV0gPSBuZXdWYWx1ZVtpXTsKKyAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfSBlbHNlIHsgLy8gaWYgb2JqZWN0CisgICAgICAgICAgICAgIHZlcnlPbGRWYWx1ZSA9
IHt9OworICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gbmV3VmFsdWUpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChuZXdWYWx1ZSwga2V5KSkgeworICAgICAg
ICAgICAgICAgICAgdmVyeU9sZFZhbHVlW2tleV0gPSBuZXdWYWx1ZVtrZXldOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAg
ICAgICAgfQorCisgICAgICAgIHJldHVybiB0aGlzLiR3YXRjaChjaGFuZ2VEZXRlY3RvciwgJHdh
dGNoQ29sbGVjdGlvbkFjdGlvbik7CisgICAgICB9LAorCisgICAgICAvKioKKyAgICAgICAqIEBu
Z2RvYyBtZXRob2QKKyAgICAgICAqIEBuYW1lICRyb290U2NvcGUuU2NvcGUjJGRpZ2VzdAorICAg
ICAgICogQGtpbmQgZnVuY3Rpb24KKyAgICAgICAqCisgICAgICAgKiBAZGVzY3JpcHRpb24KKyAg
ICAgICAqIFByb2Nlc3NlcyBhbGwgb2YgdGhlIHtAbGluayBuZy4kcm9vdFNjb3BlLlNjb3BlIyR3
YXRjaCB3YXRjaGVyc30gb2YgdGhlIGN1cnJlbnQgc2NvcGUgYW5kCisgICAgICAgKiBpdHMgY2hp
bGRyZW4uIEJlY2F1c2UgYSB7QGxpbmsgbmcuJHJvb3RTY29wZS5TY29wZSMkd2F0Y2ggd2F0Y2hl
cn0ncyBsaXN0ZW5lciBjYW4gY2hhbmdlCisgICAgICAgKiB0aGUgbW9kZWwsIHRoZSBgJGRpZ2Vz
dCgpYCBrZWVwcyBjYWxsaW5nIHRoZSB7QGxpbmsgbmcuJHJvb3RTY29wZS5TY29wZSMkd2F0Y2gg
d2F0Y2hlcnN9CisgICAgICAgKiB1bnRpbCBubyBtb3JlIGxpc3RlbmVycyBhcmUgZmlyaW5nLiBU
aGlzIG1lYW5zIHRoYXQgaXQgaXMgcG9zc2libGUgdG8gZ2V0IGludG8gYW4gaW5maW5pdGUKKyAg
ICAgICAqIGxvb3AuIFRoaXMgZnVuY3Rpb24gd2lsbCB0aHJvdyBgJ01heGltdW0gaXRlcmF0aW9u
IGxpbWl0IGV4Y2VlZGVkLidgIGlmIHRoZSBudW1iZXIgb2YKKyAgICAgICAqIGl0ZXJhdGlvbnMg
ZXhjZWVkcyAxMC4KKyAgICAgICAqCisgICAgICAgKiBVc3VhbGx5LCB5b3UgZG9uJ3QgY2FsbCBg
JGRpZ2VzdCgpYCBkaXJlY3RseSBpbgorICAgICAgICoge0BsaW5rIG5nLmRpcmVjdGl2ZTpuZ0Nv
bnRyb2xsZXIgY29udHJvbGxlcnN9IG9yIGluCisgICAgICAgKiB7QGxpbmsgbmcuJGNvbXBpbGVQ
cm92aWRlciNkaXJlY3RpdmUgZGlyZWN0aXZlc30uCisgICAgICAgKiBJbnN0ZWFkLCB5b3Ugc2hv
dWxkIGNhbGwge0BsaW5rIG5nLiRyb290U2NvcGUuU2NvcGUjJGFwcGx5ICRhcHBseSgpfSAodHlw
aWNhbGx5IGZyb20gd2l0aGluCisgICAgICAgKiBhIHtAbGluayBuZy4kY29tcGlsZVByb3ZpZGVy
I2RpcmVjdGl2ZSBkaXJlY3RpdmV9KSwgd2hpY2ggd2lsbCBmb3JjZSBhIGAkZGlnZXN0KClgLgor
ICAgICAgICoKKyAgICAgICAqIElmIHlvdSB3YW50IHRvIGJlIG5vdGlmaWVkIHdoZW5ldmVyIGAk
ZGlnZXN0KClgIGlzIGNhbGxlZCwKKyAgICAgICAqIHlvdSBjYW4gcmVnaXN0ZXIgYSBgd2F0Y2hF
eHByZXNzaW9uYCBmdW5jdGlvbiB3aXRoCisgICAgICAgKiB7QGxpbmsgbmcuJHJvb3RTY29wZS5T
Y29wZSMkd2F0Y2ggJHdhdGNoKCl9IHdpdGggbm8gYGxpc3RlbmVyYC4KKyAgICAgICAqCisgICAg
ICAgKiBJbiB1bml0IHRlc3RzLCB5b3UgbWF5IG5lZWQgdG8gY2FsbCBgJGRpZ2VzdCgpYCB0byBz
aW11bGF0ZSB0aGUgc2NvcGUgbGlmZSBjeWNsZS4KKyAgICAgICAqCisgICAgICAgKiAjIEV4YW1w
bGUKKyAgICAgICAqIGBgYGpzCisgICAgICAgICAgIHZhciBzY29wZSA9IC4uLjsKKyAgICAgICAg
ICAgc2NvcGUubmFtZSA9ICdtaXNrbyc7CisgICAgICAgICAgIHNjb3BlLmNvdW50ZXIgPSAwOwor
CisgICAgICAgICAgIGV4cGVjdChzY29wZS5jb3VudGVyKS50b0VxdWFsKDApOworICAgICAgICAg
ICBzY29wZS4kd2F0Y2goJ25hbWUnLCBmdW5jdGlvbihuZXdWYWx1ZSwgb2xkVmFsdWUpIHsKKyAg
ICAgICAgICAgICBzY29wZS5jb3VudGVyID0gc2NvcGUuY291bnRlciArIDE7CisgICAgICAgICAg
IH0pOworICAgICAgICAgICBleHBlY3Qoc2NvcGUuY291bnRlcikudG9FcXVhbCgwKTsKKworICAg
ICAgICAgICBzY29wZS4kZGlnZXN0KCk7CisgICAgICAgICAgIC8vIHRoZSBsaXN0ZW5lciBpcyBh
bHdheXMgY2FsbGVkIGR1cmluZyB0aGUgZmlyc3QgJGRpZ2VzdCBsb29wIGFmdGVyIGl0IHdhcyBy
ZWdpc3RlcmVkCisgICAgICAgICAgIGV4cGVjdChzY29wZS5jb3VudGVyKS50b0VxdWFsKDEpOwor
CisgICAgICAgICAgIHNjb3BlLiRkaWdlc3QoKTsKKyAgICAgICAgICAgLy8gYnV0IG5vdyBpdCB3
aWxsIG5vdCBiZSBjYWxsZWQgdW5sZXNzIHRoZSB2YWx1ZSBjaGFuZ2VzCisgICAgICAgICAgIGV4
cGVjdChzY29wZS5jb3VudGVyKS50b0VxdWFsKDEpOworCisgICAgICAgICAgIHNjb3BlLm5hbWUg
PSAnYWRhbSc7CisgICAgICAgICAgIHNjb3BlLiRkaWdlc3QoKTsKKyAgICAgICAgICAgZXhwZWN0
KHNjb3BlLmNvdW50ZXIpLnRvRXF1YWwoMik7CisgICAgICAgKiBgYGAKKyAgICAgICAqCisgICAg
ICAgKi8KKyAgICAgICRkaWdlc3Q6IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgd2F0Y2gsIHZh
bHVlLCBsYXN0LAorICAgICAgICAgICAgd2F0Y2hlcnMsCisgICAgICAgICAgICBsZW5ndGgsCisg
ICAgICAgICAgICBkaXJ0eSwgdHRsID0gVFRMLAorICAgICAgICAgICAgbmV4dCwgY3VycmVudCwg
dGFyZ2V0ID0gdGhpcywKKyAgICAgICAgICAgIHdhdGNoTG9nID0gW10sCisgICAgICAgICAgICBs
b2dJZHgsIGxvZ01zZywgYXN5bmNUYXNrOworCisgICAgICAgIGJlZ2luUGhhc2UoJyRkaWdlc3Qn
KTsKKyAgICAgICAgLy8gQ2hlY2sgZm9yIGNoYW5nZXMgdG8gYnJvd3NlciB1cmwgdGhhdCBoYXBw
ZW5lZCBpbiBzeW5jIGJlZm9yZSB0aGUgY2FsbCB0byAkZGlnZXN0CisgICAgICAgICRicm93c2Vy
LiQkY2hlY2tVcmxDaGFuZ2UoKTsKKworICAgICAgICBpZiAodGhpcyA9PT0gJHJvb3RTY29wZSAm
JiBhcHBseUFzeW5jSWQgIT09IG51bGwpIHsKKyAgICAgICAgICAvLyBJZiB0aGlzIGlzIHRoZSBy
b290IHNjb3BlLCBhbmQgJGFwcGx5QXN5bmMgaGFzIHNjaGVkdWxlZCBhIGRlZmVycmVkICRhcHBs
eSgpLCB0aGVuCisgICAgICAgICAgLy8gY2FuY2VsIHRoZSBzY2hlZHVsZWQgJGFwcGx5IGFuZCBm
bHVzaCB0aGUgcXVldWUgb2YgZXhwcmVzc2lvbnMgdG8gYmUgZXZhbHVhdGVkLgorICAgICAgICAg
ICRicm93c2VyLmRlZmVyLmNhbmNlbChhcHBseUFzeW5jSWQpOworICAgICAgICAgIGZsdXNoQXBw
bHlBc3luYygpOworICAgICAgICB9CisKKyAgICAgICAgbGFzdERpcnR5V2F0Y2ggPSBudWxsOwor
CisgICAgICAgIGRvIHsgLy8gIndoaWxlIGRpcnR5IiBsb29wCisgICAgICAgICAgZGlydHkgPSBm
YWxzZTsKKyAgICAgICAgICBjdXJyZW50ID0gdGFyZ2V0OworCisgICAgICAgICAgd2hpbGUgKGFz
eW5jUXVldWUubGVuZ3RoKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICBhc3lu
Y1Rhc2sgPSBhc3luY1F1ZXVlLnNoaWZ0KCk7CisgICAgICAgICAgICAgIGFzeW5jVGFzay5zY29w
ZS4kZXZhbChhc3luY1Rhc2suZXhwcmVzc2lvbiwgYXN5bmNUYXNrLmxvY2Fscyk7CisgICAgICAg
ICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICAgICRleGNlcHRpb25IYW5kbGVyKGUpOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgbGFzdERpcnR5V2F0Y2ggPSBudWxsOworICAgICAg
ICAgIH0KKworICAgICAgICAgIHRyYXZlcnNlU2NvcGVzTG9vcDoKKyAgICAgICAgICBkbyB7IC8v
ICJ0cmF2ZXJzZSB0aGUgc2NvcGVzIiBsb29wCisgICAgICAgICAgICBpZiAoKHdhdGNoZXJzID0g
Y3VycmVudC4kJHdhdGNoZXJzKSkgeworICAgICAgICAgICAgICAvLyBwcm9jZXNzIG91ciB3YXRj
aGVzCisgICAgICAgICAgICAgIGxlbmd0aCA9IHdhdGNoZXJzLmxlbmd0aDsKKyAgICAgICAgICAg
ICAgd2hpbGUgKGxlbmd0aC0tKSB7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAg
ICAgICAgIHdhdGNoID0gd2F0Y2hlcnNbbGVuZ3RoXTsKKyAgICAgICAgICAgICAgICAgIC8vIE1v
c3QgY29tbW9uIHdhdGNoZXMgYXJlIG9uIHByaW1pdGl2ZXMsIGluIHdoaWNoIGNhc2Ugd2UgY2Fu
IHNob3J0CisgICAgICAgICAgICAgICAgICAvLyBjaXJjdWl0IGl0IHdpdGggPT09IG9wZXJhdG9y
LCBvbmx5IHdoZW4gPT09IGZhaWxzIGRvIHdlIHVzZSAuZXF1YWxzCisgICAgICAgICAgICAgICAg
ICBpZiAod2F0Y2gpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCh2YWx1ZSA9IHdhdGNoLmdl
dChjdXJyZW50KSkgIT09IChsYXN0ID0gd2F0Y2gubGFzdCkgJiYKKyAgICAgICAgICAgICAgICAg
ICAgICAgICEod2F0Y2guZXEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGVxdWFscyh2
YWx1ZSwgbGFzdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICh0eXBlb2YgdmFsdWUg
PT09ICdudW1iZXInICYmIHR5cGVvZiBsYXN0ID09PSAnbnVtYmVyJworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICYmIGlzTmFOKHZhbHVlKSAmJiBpc05hTihsYXN0KSkpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgZGlydHkgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgIGxh
c3REaXJ0eVdhdGNoID0gd2F0Y2g7CisgICAgICAgICAgICAgICAgICAgICAgd2F0Y2gubGFzdCA9
IHdhdGNoLmVxID8gY29weSh2YWx1ZSwgbnVsbCkgOiB2YWx1ZTsKKyAgICAgICAgICAgICAgICAg
ICAgICB3YXRjaC5mbih2YWx1ZSwgKChsYXN0ID09PSBpbml0V2F0Y2hWYWwpID8gdmFsdWUgOiBs
YXN0KSwgY3VycmVudCk7CisgICAgICAgICAgICAgICAgICAgICAgaWYgKHR0bCA8IDUpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGxvZ0lkeCA9IDQgLSB0dGw7CisgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoIXdhdGNoTG9nW2xvZ0lkeF0pIHdhdGNoTG9nW2xvZ0lkeF0gPSBbXTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHdhdGNoTG9nW2xvZ0lkeF0ucHVzaCh7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1zZzogaXNGdW5jdGlvbih3YXRjaC5leHApID8gJ2ZuOiAnICsgKHdh
dGNoLmV4cC5uYW1lIHx8IHdhdGNoLmV4cC50b1N0cmluZygpKSA6IHdhdGNoLmV4cCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgbmV3VmFsOiB2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgb2xkVmFsOiBsYXN0CisgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAod2F0Y2ggPT09
IGxhc3REaXJ0eVdhdGNoKSB7CisgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIG1vc3Qg
cmVjZW50bHkgZGlydHkgd2F0Y2hlciBpcyBub3cgY2xlYW4sIHNob3J0IGNpcmN1aXQgc2luY2Ug
dGhlIHJlbWFpbmluZyB3YXRjaGVycworICAgICAgICAgICAgICAgICAgICAgIC8vIGhhdmUgYWxy
ZWFkeSBiZWVuIHRlc3RlZC4KKyAgICAgICAgICAgICAgICAgICAgICBkaXJ0eSA9IGZhbHNlOwor
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHRyYXZlcnNlU2NvcGVzTG9vcDsKKyAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gY2F0
Y2ggKGUpIHsKKyAgICAgICAgICAgICAgICAgICRleGNlcHRpb25IYW5kbGVyKGUpOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAvLyBJbnNhbml0eSBXYXJuaW5nOiBzY29wZSBkZXB0aC1maXJzdCB0cmF2ZXJzYWwKKyAgICAg
ICAgICAgIC8vIHllcywgdGhpcyBjb2RlIGlzIGEgYml0IGNyYXp5LCBidXQgaXQgd29ya3MgYW5k
IHdlIGhhdmUgdGVzdHMgdG8gcHJvdmUgaXQhCisgICAgICAgICAgICAvLyB0aGlzIHBpZWNlIHNo
b3VsZCBiZSBrZXB0IGluIHN5bmMgd2l0aCB0aGUgdHJhdmVyc2FsIGluICRicm9hZGNhc3QKKyAg
ICAgICAgICAgIGlmICghKG5leHQgPSAoKGN1cnJlbnQuJCR3YXRjaGVyc0NvdW50ICYmIGN1cnJl
bnQuJCRjaGlsZEhlYWQpIHx8CisgICAgICAgICAgICAgICAgKGN1cnJlbnQgIT09IHRhcmdldCAm
JiBjdXJyZW50LiQkbmV4dFNpYmxpbmcpKSkpIHsKKyAgICAgICAgICAgICAgd2hpbGUgKGN1cnJl
bnQgIT09IHRhcmdldCAmJiAhKG5leHQgPSBjdXJyZW50LiQkbmV4dFNpYmxpbmcpKSB7CisgICAg
ICAgICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQuJHBhcmVudDsKKyAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICAgIH0gd2hpbGUgKChjdXJyZW50ID0gbmV4dCkpOworCisg
ICAgICAgICAgLy8gYGJyZWFrIHRyYXZlcnNlU2NvcGVzTG9vcDtgIHRha2VzIHVzIHRvIGhlcmUK
KworICAgICAgICAgIGlmICgoZGlydHkgfHwgYXN5bmNRdWV1ZS5sZW5ndGgpICYmICEodHRsLS0p
KSB7CisgICAgICAgICAgICBjbGVhclBoYXNlKCk7CisgICAgICAgICAgICB0aHJvdyAkcm9vdFNj
b3BlTWluRXJyKCdpbmZkaWcnLAorICAgICAgICAgICAgICAgICd7MH0gJGRpZ2VzdCgpIGl0ZXJh
dGlvbnMgcmVhY2hlZC4gQWJvcnRpbmchXG4nICsKKyAgICAgICAgICAgICAgICAnV2F0Y2hlcnMg
ZmlyZWQgaW4gdGhlIGxhc3QgNSBpdGVyYXRpb25zOiB7MX0nLAorICAgICAgICAgICAgICAgIFRU
TCwgd2F0Y2hMb2cpOworICAgICAgICAgIH0KKworICAgICAgICB9IHdoaWxlIChkaXJ0eSB8fCBh
c3luY1F1ZXVlLmxlbmd0aCk7CisKKyAgICAgICAgY2xlYXJQaGFzZSgpOworCisgICAgICAgIHdo
aWxlIChwb3N0RGlnZXN0UXVldWUubGVuZ3RoKSB7CisgICAgICAgICAgdHJ5IHsKKyAgICAgICAg
ICAgIHBvc3REaWdlc3RRdWV1ZS5zaGlmdCgpKCk7CisgICAgICAgICAgfSBjYXRjaCAoZSkgewor
ICAgICAgICAgICAgJGV4Y2VwdGlvbkhhbmRsZXIoZSk7CisgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICB9LAorCisKKyAgICAgIC8qKgorICAgICAgICogQG5nZG9jIGV2ZW50CisgICAgICAg
KiBAbmFtZSAkcm9vdFNjb3BlLlNjb3BlIyRkZXN0cm95CisgICAgICAgKiBAZXZlbnRUeXBlIGJy
b2FkY2FzdCBvbiBzY29wZSBiZWluZyBkZXN0cm95ZWQKKyAgICAgICAqCisgICAgICAgKiBAZGVz
Y3JpcHRpb24KKyAgICAgICAqIEJyb2FkY2FzdGVkIHdoZW4gYSBzY29wZSBhbmQgaXRzIGNoaWxk
cmVuIGFyZSBiZWluZyBkZXN0cm95ZWQuCisgICAgICAgKgorICAgICAgICogTm90ZSB0aGF0LCBp
biBBbmd1bGFySlMsIHRoZXJlIGlzIGFsc28gYSBgJGRlc3Ryb3lgIGpRdWVyeSBldmVudCwgd2hp
Y2ggY2FuIGJlIHVzZWQgdG8KKyAgICAgICAqIGNsZWFuIHVwIERPTSBiaW5kaW5ncyBiZWZvcmUg
YW4gZWxlbWVudCBpcyByZW1vdmVkIGZyb20gdGhlIERPTS4KKyAgICAgICAqLworCisgICAgICAv
KioKKyAgICAgICAqIEBuZ2RvYyBtZXRob2QKKyAgICAgICAqIEBuYW1lICRyb290U2NvcGUuU2Nv
cGUjJGRlc3Ryb3kKKyAgICAgICAqIEBraW5kIGZ1bmN0aW9uCisgICAgICAgKgorICAgICAgICog
QGRlc2NyaXB0aW9uCisgICAgICAgKiBSZW1vdmVzIHRoZSBjdXJyZW50IHNjb3BlIChhbmQgYWxs
IG9mIGl0cyBjaGlsZHJlbikgZnJvbSB0aGUgcGFyZW50IHNjb3BlLiBSZW1vdmFsIGltcGxpZXMK
KyAgICAgICAqIHRoYXQgY2FsbHMgdG8ge0BsaW5rIG5nLiRyb290U2NvcGUuU2NvcGUjJGRpZ2Vz
dCAkZGlnZXN0KCl9IHdpbGwgbm8gbG9uZ2VyCisgICAgICAgKiBwcm9wYWdhdGUgdG8gdGhlIGN1
cnJlbnQgc2NvcGUgYW5kIGl0cyBjaGlsZHJlbi4gUmVtb3ZhbCBhbHNvIGltcGxpZXMgdGhhdCB0
aGUgY3VycmVudAorICAgICAgICogc2NvcGUgaXMgZWxpZ2libGUgZm9yIGdhcmJhZ2UgY29sbGVj
dGlvbi4KKyAgICAgICAqCisgICAgICAgKiBUaGUgYCRkZXN0cm95KClgIGlzIHVzdWFsbHkgdXNl
ZCBieSBkaXJlY3RpdmVzIHN1Y2ggYXMKKyAgICAgICAqIHtAbGluayBuZy5kaXJlY3RpdmU6bmdS
ZXBlYXQgbmdSZXBlYXR9IGZvciBtYW5hZ2luZyB0aGUKKyAgICAgICAqIHVucm9sbGluZyBvZiB0
aGUgbG9vcC4KKyAgICAgICAqCisgICAgICAgKiBKdXN0IGJlZm9yZSBhIHNjb3BlIGlzIGRlc3Ry
b3llZCwgYSBgJGRlc3Ryb3lgIGV2ZW50IGlzIGJyb2FkY2FzdGVkIG9uIHRoaXMgc2NvcGUuCisg
ICAgICAgKiBBcHBsaWNhdGlvbiBjb2RlIGNhbiByZWdpc3RlciBhIGAkZGVzdHJveWAgZXZlbnQg
aGFuZGxlciB0aGF0IHdpbGwgZ2l2ZSBpdCBhIGNoYW5jZSB0bworICAgICAgICogcGVyZm9ybSBh
bnkgbmVjZXNzYXJ5IGNsZWFudXAuCisgICAgICAgKgorICAgICAgICogTm90ZSB0aGF0LCBpbiBB
bmd1bGFySlMsIHRoZXJlIGlzIGFsc28gYSBgJGRlc3Ryb3lgIGpRdWVyeSBldmVudCwgd2hpY2gg
Y2FuIGJlIHVzZWQgdG8KKyAgICAgICAqIGNsZWFuIHVwIERPTSBiaW5kaW5ncyBiZWZvcmUgYW4g
ZWxlbWVudCBpcyByZW1vdmVkIGZyb20gdGhlIERPTS4KKyAgICAgICAqLworICAgICAgJGRlc3Ry
b3k6IGZ1bmN0aW9uKCkgeworICAgICAgICAvLyBXZSBjYW4ndCBkZXN0cm95IGEgc2NvcGUgdGhh
dCBoYXMgYmVlbiBhbHJlYWR5IGRlc3Ryb3llZC4KKyAgICAgICAgaWYgKHRoaXMuJCRkZXN0cm95
ZWQpIHJldHVybjsKKyAgICAgICAgdmFyIHBhcmVudCA9IHRoaXMuJHBhcmVudDsKKworICAgICAg
ICB0aGlzLiRicm9hZGNhc3QoJyRkZXN0cm95Jyk7CisgICAgICAgIHRoaXMuJCRkZXN0cm95ZWQg
PSB0cnVlOworCisgICAgICAgIGlmICh0aGlzID09PSAkcm9vdFNjb3BlKSB7CisgICAgICAgICAg
Ly9SZW1vdmUgaGFuZGxlcnMgYXR0YWNoZWQgdG8gd2luZG93IHdoZW4gJHJvb3RTY29wZSBpcyBy
ZW1vdmVkCisgICAgICAgICAgJGJyb3dzZXIuJCRhcHBsaWNhdGlvbkRlc3Ryb3llZCgpOworICAg
ICAgICB9CisKKyAgICAgICAgaW5jcmVtZW50V2F0Y2hlcnNDb3VudCh0aGlzLCAtdGhpcy4kJHdh
dGNoZXJzQ291bnQpOworICAgICAgICBmb3IgKHZhciBldmVudE5hbWUgaW4gdGhpcy4kJGxpc3Rl
bmVyQ291bnQpIHsKKyAgICAgICAgICBkZWNyZW1lbnRMaXN0ZW5lckNvdW50KHRoaXMsIHRoaXMu
JCRsaXN0ZW5lckNvdW50W2V2ZW50TmFtZV0sIGV2ZW50TmFtZSk7CisgICAgICAgIH0KKworICAg
ICAgICAvLyBzZXZlciBhbGwgdGhlIHJlZmVyZW5jZXMgdG8gcGFyZW50IHNjb3BlcyAoYWZ0ZXIg
dGhpcyBjbGVhbnVwLCB0aGUgY3VycmVudCBzY29wZSBzaG91bGQKKyAgICAgICAgLy8gbm90IGJl
IHJldGFpbmVkIGJ5IGFueSBvZiBvdXIgcmVmZXJlbmNlcyBhbmQgc2hvdWxkIGJlIGVsaWdpYmxl
IGZvciBnYXJiYWdlIGNvbGxlY3Rpb24pCisgICAgICAgIGlmIChwYXJlbnQgJiYgcGFyZW50LiQk
Y2hpbGRIZWFkID09IHRoaXMpIHBhcmVudC4kJGNoaWxkSGVhZCA9IHRoaXMuJCRuZXh0U2libGlu
ZzsKKyAgICAgICAgaWYgKHBhcmVudCAmJiBwYXJlbnQuJCRjaGlsZFRhaWwgPT0gdGhpcykgcGFy
ZW50LiQkY2hpbGRUYWlsID0gdGhpcy4kJHByZXZTaWJsaW5nOworICAgICAgICBpZiAodGhpcy4k
JHByZXZTaWJsaW5nKSB0aGlzLiQkcHJldlNpYmxpbmcuJCRuZXh0U2libGluZyA9IHRoaXMuJCRu
ZXh0U2libGluZzsKKyAgICAgICAgaWYgKHRoaXMuJCRuZXh0U2libGluZykgdGhpcy4kJG5leHRT
aWJsaW5nLiQkcHJldlNpYmxpbmcgPSB0aGlzLiQkcHJldlNpYmxpbmc7CisKKyAgICAgICAgLy8g
RGlzYWJsZSBsaXN0ZW5lcnMsIHdhdGNoZXJzIGFuZCBhcHBseS9kaWdlc3QgbWV0aG9kcworICAg
ICAgICB0aGlzLiRkZXN0cm95ID0gdGhpcy4kZGlnZXN0ID0gdGhpcy4kYXBwbHkgPSB0aGlzLiRl
dmFsQXN5bmMgPSB0aGlzLiRhcHBseUFzeW5jID0gbm9vcDsKKyAgICAgICAgdGhpcy4kb24gPSB0
aGlzLiR3YXRjaCA9IHRoaXMuJHdhdGNoR3JvdXAgPSBmdW5jdGlvbigpIHsgcmV0dXJuIG5vb3A7
IH07CisgICAgICAgIHRoaXMuJCRsaXN0ZW5lcnMgPSB7fTsKKworICAgICAgICAvLyBBbGwgb2Yg
dGhlIGNvZGUgYmVsb3cgaXMgYm9ndXMgY29kZSB0aGF0IHdvcmtzIGFyb3VuZCBWOCdzIG1lbW9y
eSBsZWFrIHZpYSBvcHRpbWl6ZWQgY29kZQorICAgICAgICAvLyBhbmQgaW5saW5lIGNhY2hlcy4K
KyAgICAgICAgLy8KKyAgICAgICAgLy8gc2VlOgorICAgICAgICAvLyAtIGh0dHBzOi8vY29kZS5n
b29nbGUuY29tL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0yMDczI2MyNgorICAgICAgICAvLyAtIGh0
dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIuanMvaXNzdWVzLzY3OTQjaXNzdWVjb21t
ZW50LTM4NjQ4OTA5CisgICAgICAgIC8vIC0gaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5n
dWxhci5qcy9pc3N1ZXMvMTMxMyNpc3N1ZWNvbW1lbnQtMTAzNzg0NTEKKworICAgICAgICB0aGlz
LiRwYXJlbnQgPSB0aGlzLiQkbmV4dFNpYmxpbmcgPSB0aGlzLiQkcHJldlNpYmxpbmcgPSB0aGlz
LiQkY2hpbGRIZWFkID0KKyAgICAgICAgICAgIHRoaXMuJCRjaGlsZFRhaWwgPSB0aGlzLiRyb290
ID0gdGhpcy4kJHdhdGNoZXJzID0gbnVsbDsKKyAgICAgIH0sCisKKyAgICAgIC8qKgorICAgICAg
ICogQG5nZG9jIG1ldGhvZAorICAgICAgICogQG5hbWUgJHJvb3RTY29wZS5TY29wZSMkZXZhbAor
ICAgICAgICogQGtpbmQgZnVuY3Rpb24KKyAgICAgICAqCisgICAgICAgKiBAZGVzY3JpcHRpb24K
KyAgICAgICAqIEV4ZWN1dGVzIHRoZSBgZXhwcmVzc2lvbmAgb24gdGhlIGN1cnJlbnQgc2NvcGUg
YW5kIHJldHVybnMgdGhlIHJlc3VsdC4gQW55IGV4Y2VwdGlvbnMgaW4KKyAgICAgICAqIHRoZSBl
eHByZXNzaW9uIGFyZSBwcm9wYWdhdGVkICh1bmNhdWdodCkuIFRoaXMgaXMgdXNlZnVsIHdoZW4g
ZXZhbHVhdGluZyBBbmd1bGFyCisgICAgICAgKiBleHByZXNzaW9ucy4KKyAgICAgICAqCisgICAg
ICAgKiAjIEV4YW1wbGUKKyAgICAgICAqIGBgYGpzCisgICAgICAgICAgIHZhciBzY29wZSA9IG5n
LiRyb290U2NvcGUuU2NvcGUoKTsKKyAgICAgICAgICAgc2NvcGUuYSA9IDE7CisgICAgICAgICAg
IHNjb3BlLmIgPSAyOworCisgICAgICAgICAgIGV4cGVjdChzY29wZS4kZXZhbCgnYStiJykpLnRv
RXF1YWwoMyk7CisgICAgICAgICAgIGV4cGVjdChzY29wZS4kZXZhbChmdW5jdGlvbihzY29wZSl7
IHJldHVybiBzY29wZS5hICsgc2NvcGUuYjsgfSkpLnRvRXF1YWwoMyk7CisgICAgICAgKiBgYGAK
KyAgICAgICAqCisgICAgICAgKiBAcGFyYW0geyhzdHJpbmd8ZnVuY3Rpb24oKSk9fSBleHByZXNz
aW9uIEFuIGFuZ3VsYXIgZXhwcmVzc2lvbiB0byBiZSBleGVjdXRlZC4KKyAgICAgICAqCisgICAg
ICAgKiAgICAtIGBzdHJpbmdgOiBleGVjdXRlIHVzaW5nIHRoZSBydWxlcyBhcyBkZWZpbmVkIGlu
ICB7QGxpbmsgZ3VpZGUvZXhwcmVzc2lvbiBleHByZXNzaW9ufS4KKyAgICAgICAqICAgIC0gYGZ1
bmN0aW9uKHNjb3BlKWA6IGV4ZWN1dGUgdGhlIGZ1bmN0aW9uIHdpdGggdGhlIGN1cnJlbnQgYHNj
b3BlYCBwYXJhbWV0ZXIuCisgICAgICAgKgorICAgICAgICogQHBhcmFtIHsob2JqZWN0KT19IGxv
Y2FscyBMb2NhbCB2YXJpYWJsZXMgb2JqZWN0LCB1c2VmdWwgZm9yIG92ZXJyaWRpbmcgdmFsdWVz
IGluIHNjb3BlLgorICAgICAgICogQHJldHVybnMgeyp9IFRoZSByZXN1bHQgb2YgZXZhbHVhdGlu
ZyB0aGUgZXhwcmVzc2lvbi4KKyAgICAgICAqLworICAgICAgJGV2YWw6IGZ1bmN0aW9uKGV4cHIs
IGxvY2FscykgeworICAgICAgICByZXR1cm4gJHBhcnNlKGV4cHIpKHRoaXMsIGxvY2Fscyk7Cisg
ICAgICB9LAorCisgICAgICAvKioKKyAgICAgICAqIEBuZ2RvYyBtZXRob2QKKyAgICAgICAqIEBu
YW1lICRyb290U2NvcGUuU2NvcGUjJGV2YWxBc3luYworICAgICAgICogQGtpbmQgZnVuY3Rpb24K
KyAgICAgICAqCisgICAgICAgKiBAZGVzY3JpcHRpb24KKyAgICAgICAqIEV4ZWN1dGVzIHRoZSBl
eHByZXNzaW9uIG9uIHRoZSBjdXJyZW50IHNjb3BlIGF0IGEgbGF0ZXIgcG9pbnQgaW4gdGltZS4K
KyAgICAgICAqCisgICAgICAgKiBUaGUgYCRldmFsQXN5bmNgIG1ha2VzIG5vIGd1YXJhbnRlZXMg
YXMgdG8gd2hlbiB0aGUgYGV4cHJlc3Npb25gIHdpbGwgYmUgZXhlY3V0ZWQsIG9ubHkKKyAgICAg
ICAqIHRoYXQ6CisgICAgICAgKgorICAgICAgICogICAtIGl0IHdpbGwgZXhlY3V0ZSBhZnRlciB0
aGUgZnVuY3Rpb24gdGhhdCBzY2hlZHVsZWQgdGhlIGV2YWx1YXRpb24gKHByZWZlcmFibHkgYmVm
b3JlIERPTQorICAgICAgICogICAgIHJlbmRlcmluZykuCisgICAgICAgKiAgIC0gYXQgbGVhc3Qg
b25lIHtAbGluayBuZy4kcm9vdFNjb3BlLlNjb3BlIyRkaWdlc3QgJGRpZ2VzdCBjeWNsZX0gd2ls
bCBiZSBwZXJmb3JtZWQgYWZ0ZXIKKyAgICAgICAqICAgICBgZXhwcmVzc2lvbmAgZXhlY3V0aW9u
LgorICAgICAgICoKKyAgICAgICAqIEFueSBleGNlcHRpb25zIGZyb20gdGhlIGV4ZWN1dGlvbiBv
ZiB0aGUgZXhwcmVzc2lvbiBhcmUgZm9yd2FyZGVkIHRvIHRoZQorICAgICAgICoge0BsaW5rIG5n
LiRleGNlcHRpb25IYW5kbGVyICRleGNlcHRpb25IYW5kbGVyfSBzZXJ2aWNlLgorICAgICAgICoK
KyAgICAgICAqIF9fTm90ZTpfXyBpZiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBvdXRzaWRlIG9m
IGEgYCRkaWdlc3RgIGN5Y2xlLCBhIG5ldyBgJGRpZ2VzdGAgY3ljbGUKKyAgICAgICAqIHdpbGwg
YmUgc2NoZWR1bGVkLiBIb3dldmVyLCBpdCBpcyBlbmNvdXJhZ2VkIHRvIGFsd2F5cyBjYWxsIGNv
ZGUgdGhhdCBjaGFuZ2VzIHRoZSBtb2RlbAorICAgICAgICogZnJvbSB3aXRoaW4gYW4gYCRhcHBs
eWAgY2FsbC4gVGhhdCBpbmNsdWRlcyBjb2RlIGV2YWx1YXRlZCB2aWEgYCRldmFsQXN5bmNgLgor
ICAgICAgICoKKyAgICAgICAqIEBwYXJhbSB7KHN0cmluZ3xmdW5jdGlvbigpKT19IGV4cHJlc3Np
b24gQW4gYW5ndWxhciBleHByZXNzaW9uIHRvIGJlIGV4ZWN1dGVkLgorICAgICAgICoKKyAgICAg
ICAqICAgIC0gYHN0cmluZ2A6IGV4ZWN1dGUgdXNpbmcgdGhlIHJ1bGVzIGFzIGRlZmluZWQgaW4g
e0BsaW5rIGd1aWRlL2V4cHJlc3Npb24gZXhwcmVzc2lvbn0uCisgICAgICAgKiAgICAtIGBmdW5j
dGlvbihzY29wZSlgOiBleGVjdXRlIHRoZSBmdW5jdGlvbiB3aXRoIHRoZSBjdXJyZW50IGBzY29w
ZWAgcGFyYW1ldGVyLgorICAgICAgICoKKyAgICAgICAqIEBwYXJhbSB7KG9iamVjdCk9fSBsb2Nh
bHMgTG9jYWwgdmFyaWFibGVzIG9iamVjdCwgdXNlZnVsIGZvciBvdmVycmlkaW5nIHZhbHVlcyBp
biBzY29wZS4KKyAgICAgICAqLworICAgICAgJGV2YWxBc3luYzogZnVuY3Rpb24oZXhwciwgbG9j
YWxzKSB7CisgICAgICAgIC8vIGlmIHdlIGFyZSBvdXRzaWRlIG9mIGFuICRkaWdlc3QgbG9vcCBh
bmQgdGhpcyBpcyB0aGUgZmlyc3QgdGltZSB3ZSBhcmUgc2NoZWR1bGluZyBhc3luYworICAgICAg
ICAvLyB0YXNrIGFsc28gc2NoZWR1bGUgYXN5bmMgYXV0by1mbHVzaAorICAgICAgICBpZiAoISRy
b290U2NvcGUuJCRwaGFzZSAmJiAhYXN5bmNRdWV1ZS5sZW5ndGgpIHsKKyAgICAgICAgICAkYnJv
d3Nlci5kZWZlcihmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGlmIChhc3luY1F1ZXVlLmxlbmd0
aCkgeworICAgICAgICAgICAgICAkcm9vdFNjb3BlLiRkaWdlc3QoKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGFzeW5jUXVldWUucHVzaCh7c2Nv
cGU6IHRoaXMsIGV4cHJlc3Npb246IGV4cHIsIGxvY2FsczogbG9jYWxzfSk7CisgICAgICB9LAor
CisgICAgICAkJHBvc3REaWdlc3Q6IGZ1bmN0aW9uKGZuKSB7CisgICAgICAgIHBvc3REaWdlc3RR
dWV1ZS5wdXNoKGZuKTsKKyAgICAgIH0sCisKKyAgICAgIC8qKgorICAgICAgICogQG5nZG9jIG1l
dGhvZAorICAgICAgICogQG5hbWUgJHJvb3RTY29wZS5TY29wZSMkYXBwbHkKKyAgICAgICAqIEBr
aW5kIGZ1bmN0aW9uCisgICAgICAgKgorICAgICAgICogQGRlc2NyaXB0aW9uCisgICAgICAgKiBg
JGFwcGx5KClgIGlzIHVzZWQgdG8gZXhlY3V0ZSBhbiBleHByZXNzaW9uIGluIGFuZ3VsYXIgZnJv
bSBvdXRzaWRlIG9mIHRoZSBhbmd1bGFyCisgICAgICAgKiBmcmFtZXdvcmsuIChGb3IgZXhhbXBs
ZSBmcm9tIGJyb3dzZXIgRE9NIGV2ZW50cywgc2V0VGltZW91dCwgWEhSIG9yIHRoaXJkIHBhcnR5
IGxpYnJhcmllcykuCisgICAgICAgKiBCZWNhdXNlIHdlIGFyZSBjYWxsaW5nIGludG8gdGhlIGFu
Z3VsYXIgZnJhbWV3b3JrIHdlIG5lZWQgdG8gcGVyZm9ybSBwcm9wZXIgc2NvcGUgbGlmZQorICAg
ICAgICogY3ljbGUgb2Yge0BsaW5rIG5nLiRleGNlcHRpb25IYW5kbGVyIGV4Y2VwdGlvbiBoYW5k
bGluZ30sCisgICAgICAgKiB7QGxpbmsgbmcuJHJvb3RTY29wZS5TY29wZSMkZGlnZXN0IGV4ZWN1
dGluZyB3YXRjaGVzfS4KKyAgICAgICAqCisgICAgICAgKiAjIyBMaWZlIGN5Y2xlCisgICAgICAg
KgorICAgICAgICogIyBQc2V1ZG8tQ29kZSBvZiBgJGFwcGx5KClgCisgICAgICAgKiBgYGBqcwor
ICAgICAgICAgICBmdW5jdGlvbiAkYXBwbHkoZXhwcikgeworICAgICAgICAgICAgIHRyeSB7Cisg
ICAgICAgICAgICAgICByZXR1cm4gJGV2YWwoZXhwcik7CisgICAgICAgICAgICAgfSBjYXRjaCAo
ZSkgeworICAgICAgICAgICAgICAgJGV4Y2VwdGlvbkhhbmRsZXIoZSk7CisgICAgICAgICAgICAg
fSBmaW5hbGx5IHsKKyAgICAgICAgICAgICAgICRyb290LiRkaWdlc3QoKTsKKyAgICAgICAgICAg
ICB9CisgICAgICAgICAgIH0KKyAgICAgICAqIGBgYAorICAgICAgICoKKyAgICAgICAqCisgICAg
ICAgKiBTY29wZSdzIGAkYXBwbHkoKWAgbWV0aG9kIHRyYW5zaXRpb25zIHRocm91Z2ggdGhlIGZv
bGxvd2luZyBzdGFnZXM6CisgICAgICAgKgorICAgICAgICogMS4gVGhlIHtAbGluayBndWlkZS9l
eHByZXNzaW9uIGV4cHJlc3Npb259IGlzIGV4ZWN1dGVkIHVzaW5nIHRoZQorICAgICAgICogICAg
e0BsaW5rIG5nLiRyb290U2NvcGUuU2NvcGUjJGV2YWwgJGV2YWwoKX0gbWV0aG9kLgorICAgICAg
ICogMi4gQW55IGV4Y2VwdGlvbnMgZnJvbSB0aGUgZXhlY3V0aW9uIG9mIHRoZSBleHByZXNzaW9u
IGFyZSBmb3J3YXJkZWQgdG8gdGhlCisgICAgICAgKiAgICB7QGxpbmsgbmcuJGV4Y2VwdGlvbkhh
bmRsZXIgJGV4Y2VwdGlvbkhhbmRsZXJ9IHNlcnZpY2UuCisgICAgICAgKiAzLiBUaGUge0BsaW5r
IG5nLiRyb290U2NvcGUuU2NvcGUjJHdhdGNoIHdhdGNofSBsaXN0ZW5lcnMgYXJlIGZpcmVkIGlt
bWVkaWF0ZWx5IGFmdGVyIHRoZQorICAgICAgICogICAgZXhwcmVzc2lvbiB3YXMgZXhlY3V0ZWQg
dXNpbmcgdGhlIHtAbGluayBuZy4kcm9vdFNjb3BlLlNjb3BlIyRkaWdlc3QgJGRpZ2VzdCgpfSBt
ZXRob2QuCisgICAgICAgKgorICAgICAgICoKKyAgICAgICAqIEBwYXJhbSB7KHN0cmluZ3xmdW5j
dGlvbigpKT19IGV4cCBBbiBhbmd1bGFyIGV4cHJlc3Npb24gdG8gYmUgZXhlY3V0ZWQuCisgICAg
ICAgKgorICAgICAgICogICAgLSBgc3RyaW5nYDogZXhlY3V0ZSB1c2luZyB0aGUgcnVsZXMgYXMg
ZGVmaW5lZCBpbiB7QGxpbmsgZ3VpZGUvZXhwcmVzc2lvbiBleHByZXNzaW9ufS4KKyAgICAgICAq
ICAgIC0gYGZ1bmN0aW9uKHNjb3BlKWA6IGV4ZWN1dGUgdGhlIGZ1bmN0aW9uIHdpdGggY3VycmVu
dCBgc2NvcGVgIHBhcmFtZXRlci4KKyAgICAgICAqCisgICAgICAgKiBAcmV0dXJucyB7Kn0gVGhl
IHJlc3VsdCBvZiBldmFsdWF0aW5nIHRoZSBleHByZXNzaW9uLgorICAgICAgICovCisgICAgICAk
YXBwbHk6IGZ1bmN0aW9uKGV4cHIpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICBiZWdpblBo
YXNlKCckYXBwbHknKTsKKyAgICAgICAgICByZXR1cm4gdGhpcy4kZXZhbChleHByKTsKKyAgICAg
ICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICRleGNlcHRpb25IYW5kbGVyKGUpOworICAgICAg
ICB9IGZpbmFsbHkgeworICAgICAgICAgIGNsZWFyUGhhc2UoKTsKKyAgICAgICAgICB0cnkgewor
ICAgICAgICAgICAgJHJvb3RTY29wZS4kZGlnZXN0KCk7CisgICAgICAgICAgfSBjYXRjaCAoZSkg
eworICAgICAgICAgICAgJGV4Y2VwdGlvbkhhbmRsZXIoZSk7CisgICAgICAgICAgICB0aHJvdyBl
OworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfSwKKworICAgICAgLyoqCisgICAgICAg
KiBAbmdkb2MgbWV0aG9kCisgICAgICAgKiBAbmFtZSAkcm9vdFNjb3BlLlNjb3BlIyRhcHBseUFz
eW5jCisgICAgICAgKiBAa2luZCBmdW5jdGlvbgorICAgICAgICoKKyAgICAgICAqIEBkZXNjcmlw
dGlvbgorICAgICAgICogU2NoZWR1bGUgdGhlIGludm9jYXRpb24gb2YgJGFwcGx5IHRvIG9jY3Vy
IGF0IGEgbGF0ZXIgdGltZS4gVGhlIGFjdHVhbCB0aW1lIGRpZmZlcmVuY2UKKyAgICAgICAqIHZh
cmllcyBhY3Jvc3MgYnJvd3NlcnMsIGJ1dCBpcyB0eXBpY2FsbHkgYXJvdW5kIH4xMCBtaWxsaXNl
Y29uZHMuCisgICAgICAgKgorICAgICAgICogVGhpcyBjYW4gYmUgdXNlZCB0byBxdWV1ZSB1cCBt
dWx0aXBsZSBleHByZXNzaW9ucyB3aGljaCBuZWVkIHRvIGJlIGV2YWx1YXRlZCBpbiB0aGUgc2Ft
ZQorICAgICAgICogZGlnZXN0LgorICAgICAgICoKKyAgICAgICAqIEBwYXJhbSB7KHN0cmluZ3xm
dW5jdGlvbigpKT19IGV4cCBBbiBhbmd1bGFyIGV4cHJlc3Npb24gdG8gYmUgZXhlY3V0ZWQuCisg
ICAgICAgKgorICAgICAgICogICAgLSBgc3RyaW5nYDogZXhlY3V0ZSB1c2luZyB0aGUgcnVsZXMg
YXMgZGVmaW5lZCBpbiB7QGxpbmsgZ3VpZGUvZXhwcmVzc2lvbiBleHByZXNzaW9ufS4KKyAgICAg
ICAqICAgIC0gYGZ1bmN0aW9uKHNjb3BlKWA6IGV4ZWN1dGUgdGhlIGZ1bmN0aW9uIHdpdGggY3Vy
cmVudCBgc2NvcGVgIHBhcmFtZXRlci4KKyAgICAgICAqLworICAgICAgJGFwcGx5QXN5bmM6IGZ1
bmN0aW9uKGV4cHIpIHsKKyAgICAgICAgdmFyIHNjb3BlID0gdGhpczsKKyAgICAgICAgZXhwciAm
JiBhcHBseUFzeW5jUXVldWUucHVzaCgkYXBwbHlBc3luY0V4cHJlc3Npb24pOworICAgICAgICBz
Y2hlZHVsZUFwcGx5QXN5bmMoKTsKKworICAgICAgICBmdW5jdGlvbiAkYXBwbHlBc3luY0V4cHJl
c3Npb24oKSB7CisgICAgICAgICAgc2NvcGUuJGV2YWwoZXhwcik7CisgICAgICAgIH0KKyAgICAg
IH0sCisKKyAgICAgIC8qKgorICAgICAgICogQG5nZG9jIG1ldGhvZAorICAgICAgICogQG5hbWUg
JHJvb3RTY29wZS5TY29wZSMkb24KKyAgICAgICAqIEBraW5kIGZ1bmN0aW9uCisgICAgICAgKgor
ICAgICAgICogQGRlc2NyaXB0aW9uCisgICAgICAgKiBMaXN0ZW5zIG9uIGV2ZW50cyBvZiBhIGdp
dmVuIHR5cGUuIFNlZSB7QGxpbmsgbmcuJHJvb3RTY29wZS5TY29wZSMkZW1pdCAkZW1pdH0gZm9y
CisgICAgICAgKiBkaXNjdXNzaW9uIG9mIGV2ZW50IGxpZmUgY3ljbGUuCisgICAgICAgKgorICAg
ICAgICogVGhlIGV2ZW50IGxpc3RlbmVyIGZ1bmN0aW9uIGZvcm1hdCBpczogYGZ1bmN0aW9uKGV2
ZW50LCBhcmdzLi4uKWAuIFRoZSBgZXZlbnRgIG9iamVjdAorICAgICAgICogcGFzc2VkIGludG8g
dGhlIGxpc3RlbmVyIGhhcyB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXM6CisgICAgICAgKgorICAg
ICAgICogICAtIGB0YXJnZXRTY29wZWAgLSBge1Njb3BlfWA6IHRoZSBzY29wZSBvbiB3aGljaCB0
aGUgZXZlbnQgd2FzIGAkZW1pdGAtZWQgb3IKKyAgICAgICAqICAgICBgJGJyb2FkY2FzdGAtZWQu
CisgICAgICAgKiAgIC0gYGN1cnJlbnRTY29wZWAgLSBge1Njb3BlfWA6IHRoZSBzY29wZSB0aGF0
IGlzIGN1cnJlbnRseSBoYW5kbGluZyB0aGUgZXZlbnQuIE9uY2UgdGhlCisgICAgICAgKiAgICAg
ZXZlbnQgcHJvcGFnYXRlcyB0aHJvdWdoIHRoZSBzY29wZSBoaWVyYXJjaHksIHRoaXMgcHJvcGVy
dHkgaXMgc2V0IHRvIG51bGwuCisgICAgICAgKiAgIC0gYG5hbWVgIC0gYHtzdHJpbmd9YDogbmFt
ZSBvZiB0aGUgZXZlbnQuCisgICAgICAgKiAgIC0gYHN0b3BQcm9wYWdhdGlvbmAgLSBge2Z1bmN0
aW9uPX1gOiBjYWxsaW5nIGBzdG9wUHJvcGFnYXRpb25gIGZ1bmN0aW9uIHdpbGwgY2FuY2VsCisg
ICAgICAgKiAgICAgZnVydGhlciBldmVudCBwcm9wYWdhdGlvbiAoYXZhaWxhYmxlIG9ubHkgZm9y
IGV2ZW50cyB0aGF0IHdlcmUgYCRlbWl0YC1lZCkuCisgICAgICAgKiAgIC0gYHByZXZlbnREZWZh
dWx0YCAtIGB7ZnVuY3Rpb259YDogY2FsbGluZyBgcHJldmVudERlZmF1bHRgIHNldHMgYGRlZmF1
bHRQcmV2ZW50ZWRgIGZsYWcKKyAgICAgICAqICAgICB0byB0cnVlLgorICAgICAgICogICAtIGBk
ZWZhdWx0UHJldmVudGVkYCAtIGB7Ym9vbGVhbn1gOiB0cnVlIGlmIGBwcmV2ZW50RGVmYXVsdGAg
d2FzIGNhbGxlZC4KKyAgICAgICAqCisgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBFdmVu
dCBuYW1lIHRvIGxpc3RlbiBvbi4KKyAgICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oZXZlbnQsIC4u
LmFyZ3MpfSBsaXN0ZW5lciBGdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIGV2ZW50IGlzIGVtaXR0
ZWQuCisgICAgICAgKiBAcmV0dXJucyB7ZnVuY3Rpb24oKX0gUmV0dXJucyBhIGRlcmVnaXN0cmF0
aW9uIGZ1bmN0aW9uIGZvciB0aGlzIGxpc3RlbmVyLgorICAgICAgICovCisgICAgICAkb246IGZ1
bmN0aW9uKG5hbWUsIGxpc3RlbmVyKSB7CisgICAgICAgIHZhciBuYW1lZExpc3RlbmVycyA9IHRo
aXMuJCRsaXN0ZW5lcnNbbmFtZV07CisgICAgICAgIGlmICghbmFtZWRMaXN0ZW5lcnMpIHsKKyAg
ICAgICAgICB0aGlzLiQkbGlzdGVuZXJzW25hbWVdID0gbmFtZWRMaXN0ZW5lcnMgPSBbXTsKKyAg
ICAgICAgfQorICAgICAgICBuYW1lZExpc3RlbmVycy5wdXNoKGxpc3RlbmVyKTsKKworICAgICAg
ICB2YXIgY3VycmVudCA9IHRoaXM7CisgICAgICAgIGRvIHsKKyAgICAgICAgICBpZiAoIWN1cnJl
bnQuJCRsaXN0ZW5lckNvdW50W25hbWVdKSB7CisgICAgICAgICAgICBjdXJyZW50LiQkbGlzdGVu
ZXJDb3VudFtuYW1lXSA9IDA7CisgICAgICAgICAgfQorICAgICAgICAgIGN1cnJlbnQuJCRsaXN0
ZW5lckNvdW50W25hbWVdKys7CisgICAgICAgIH0gd2hpbGUgKChjdXJyZW50ID0gY3VycmVudC4k
cGFyZW50KSk7CisKKyAgICAgICAgdmFyIHNlbGYgPSB0aGlzOworICAgICAgICByZXR1cm4gZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgdmFyIGluZGV4T2ZMaXN0ZW5lciA9IG5hbWVkTGlzdGVuZXJz
LmluZGV4T2YobGlzdGVuZXIpOworICAgICAgICAgIGlmIChpbmRleE9mTGlzdGVuZXIgIT09IC0x
KSB7CisgICAgICAgICAgICBuYW1lZExpc3RlbmVyc1tpbmRleE9mTGlzdGVuZXJdID0gbnVsbDsK
KyAgICAgICAgICAgIGRlY3JlbWVudExpc3RlbmVyQ291bnQoc2VsZiwgMSwgbmFtZSk7CisgICAg
ICAgICAgfQorICAgICAgICB9OworICAgICAgfSwKKworCisgICAgICAvKioKKyAgICAgICAqIEBu
Z2RvYyBtZXRob2QKKyAgICAgICAqIEBuYW1lICRyb290U2NvcGUuU2NvcGUjJGVtaXQKKyAgICAg
ICAqIEBraW5kIGZ1bmN0aW9uCisgICAgICAgKgorICAgICAgICogQGRlc2NyaXB0aW9uCisgICAg
ICAgKiBEaXNwYXRjaGVzIGFuIGV2ZW50IGBuYW1lYCB1cHdhcmRzIHRocm91Z2ggdGhlIHNjb3Bl
IGhpZXJhcmNoeSBub3RpZnlpbmcgdGhlCisgICAgICAgKiByZWdpc3RlcmVkIHtAbGluayBuZy4k
cm9vdFNjb3BlLlNjb3BlIyRvbn0gbGlzdGVuZXJzLgorICAgICAgICoKKyAgICAgICAqIFRoZSBl
dmVudCBsaWZlIGN5Y2xlIHN0YXJ0cyBhdCB0aGUgc2NvcGUgb24gd2hpY2ggYCRlbWl0YCB3YXMg
Y2FsbGVkLiBBbGwKKyAgICAgICAqIHtAbGluayBuZy4kcm9vdFNjb3BlLlNjb3BlIyRvbiBsaXN0
ZW5lcnN9IGxpc3RlbmluZyBmb3IgYG5hbWVgIGV2ZW50IG9uIHRoaXMgc2NvcGUgZ2V0CisgICAg
ICAgKiBub3RpZmllZC4gQWZ0ZXJ3YXJkcywgdGhlIGV2ZW50IHRyYXZlcnNlcyB1cHdhcmRzIHRv
d2FyZCB0aGUgcm9vdCBzY29wZSBhbmQgY2FsbHMgYWxsCisgICAgICAgKiByZWdpc3RlcmVkIGxp
c3RlbmVycyBhbG9uZyB0aGUgd2F5LiBUaGUgZXZlbnQgd2lsbCBzdG9wIHByb3BhZ2F0aW5nIGlm
IG9uZSBvZiB0aGUgbGlzdGVuZXJzCisgICAgICAgKiBjYW5jZWxzIGl0LgorICAgICAgICoKKyAg
ICAgICAqIEFueSBleGNlcHRpb24gZW1pdHRlZCBmcm9tIHRoZSB7QGxpbmsgbmcuJHJvb3RTY29w
ZS5TY29wZSMkb24gbGlzdGVuZXJzfSB3aWxsIGJlIHBhc3NlZAorICAgICAgICogb250byB0aGUg
e0BsaW5rIG5nLiRleGNlcHRpb25IYW5kbGVyICRleGNlcHRpb25IYW5kbGVyfSBzZXJ2aWNlLgor
ICAgICAgICoKKyAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIEV2ZW50IG5hbWUgdG8gZW1p
dC4KKyAgICAgICAqIEBwYXJhbSB7Li4uKn0gYXJncyBPcHRpb25hbCBvbmUgb3IgbW9yZSBhcmd1
bWVudHMgd2hpY2ggd2lsbCBiZSBwYXNzZWQgb250byB0aGUgZXZlbnQgbGlzdGVuZXJzLgorICAg
ICAgICogQHJldHVybiB7T2JqZWN0fSBFdmVudCBvYmplY3QgKHNlZSB7QGxpbmsgbmcuJHJvb3RT
Y29wZS5TY29wZSMkb259KS4KKyAgICAgICAqLworICAgICAgJGVtaXQ6IGZ1bmN0aW9uKG5hbWUs
IGFyZ3MpIHsKKyAgICAgICAgdmFyIGVtcHR5ID0gW10sCisgICAgICAgICAgICBuYW1lZExpc3Rl
bmVycywKKyAgICAgICAgICAgIHNjb3BlID0gdGhpcywKKyAgICAgICAgICAgIHN0b3BQcm9wYWdh
dGlvbiA9IGZhbHNlLAorICAgICAgICAgICAgZXZlbnQgPSB7CisgICAgICAgICAgICAgIG5hbWU6
IG5hbWUsCisgICAgICAgICAgICAgIHRhcmdldFNjb3BlOiBzY29wZSwKKyAgICAgICAgICAgICAg
c3RvcFByb3BhZ2F0aW9uOiBmdW5jdGlvbigpIHtzdG9wUHJvcGFnYXRpb24gPSB0cnVlO30sCisg
ICAgICAgICAgICAgIHByZXZlbnREZWZhdWx0OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAg
ICBldmVudC5kZWZhdWx0UHJldmVudGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgICAgZGVmYXVsdFByZXZlbnRlZDogZmFsc2UKKyAgICAgICAgICAgIH0sCisgICAgICAg
ICAgICBsaXN0ZW5lckFyZ3MgPSBjb25jYXQoW2V2ZW50XSwgYXJndW1lbnRzLCAxKSwKKyAgICAg
ICAgICAgIGksIGxlbmd0aDsKKworICAgICAgICBkbyB7CisgICAgICAgICAgbmFtZWRMaXN0ZW5l
cnMgPSBzY29wZS4kJGxpc3RlbmVyc1tuYW1lXSB8fCBlbXB0eTsKKyAgICAgICAgICBldmVudC5j
dXJyZW50U2NvcGUgPSBzY29wZTsKKyAgICAgICAgICBmb3IgKGkgPSAwLCBsZW5ndGggPSBuYW1l
ZExpc3RlbmVycy5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykgeworCisgICAgICAgICAgICAvLyBp
ZiBsaXN0ZW5lcnMgd2VyZSBkZXJlZ2lzdGVyZWQsIGRlZnJhZ21lbnQgdGhlIGFycmF5CisgICAg
ICAgICAgICBpZiAoIW5hbWVkTGlzdGVuZXJzW2ldKSB7CisgICAgICAgICAgICAgIG5hbWVkTGlz
dGVuZXJzLnNwbGljZShpLCAxKTsKKyAgICAgICAgICAgICAgaS0tOworICAgICAgICAgICAgICBs
ZW5ndGgtLTsKKyAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICB0cnkgeworICAgICAgICAgICAgICAvL2FsbG93IGFsbCBsaXN0ZW5lcnMgYXR0YWNoZWQg
dG8gdGhlIGN1cnJlbnQgc2NvcGUgdG8gcnVuCisgICAgICAgICAgICAgIG5hbWVkTGlzdGVuZXJz
W2ldLmFwcGx5KG51bGwsIGxpc3RlbmVyQXJncyk7CisgICAgICAgICAgICB9IGNhdGNoIChlKSB7
CisgICAgICAgICAgICAgICRleGNlcHRpb25IYW5kbGVyKGUpOworICAgICAgICAgICAgfQorICAg
ICAgICAgIH0KKyAgICAgICAgICAvL2lmIGFueSBsaXN0ZW5lciBvbiB0aGUgY3VycmVudCBzY29w
ZSBzdG9wcyBwcm9wYWdhdGlvbiwgcHJldmVudCBidWJibGluZworICAgICAgICAgIGlmIChzdG9w
UHJvcGFnYXRpb24pIHsKKyAgICAgICAgICAgIGV2ZW50LmN1cnJlbnRTY29wZSA9IG51bGw7Cisg
ICAgICAgICAgICByZXR1cm4gZXZlbnQ7CisgICAgICAgICAgfQorICAgICAgICAgIC8vdHJhdmVy
c2UgdXB3YXJkcworICAgICAgICAgIHNjb3BlID0gc2NvcGUuJHBhcmVudDsKKyAgICAgICAgfSB3
aGlsZSAoc2NvcGUpOworCisgICAgICAgIGV2ZW50LmN1cnJlbnRTY29wZSA9IG51bGw7CisKKyAg
ICAgICAgcmV0dXJuIGV2ZW50OworICAgICAgfSwKKworCisgICAgICAvKioKKyAgICAgICAqIEBu
Z2RvYyBtZXRob2QKKyAgICAgICAqIEBuYW1lICRyb290U2NvcGUuU2NvcGUjJGJyb2FkY2FzdAor
ICAgICAgICogQGtpbmQgZnVuY3Rpb24KKyAgICAgICAqCisgICAgICAgKiBAZGVzY3JpcHRpb24K
KyAgICAgICAqIERpc3BhdGNoZXMgYW4gZXZlbnQgYG5hbWVgIGRvd253YXJkcyB0byBhbGwgY2hp
bGQgc2NvcGVzIChhbmQgdGhlaXIgY2hpbGRyZW4pIG5vdGlmeWluZyB0aGUKKyAgICAgICAqIHJl
Z2lzdGVyZWQge0BsaW5rIG5nLiRyb290U2NvcGUuU2NvcGUjJG9ufSBsaXN0ZW5lcnMuCisgICAg
ICAgKgorICAgICAgICogVGhlIGV2ZW50IGxpZmUgY3ljbGUgc3RhcnRzIGF0IHRoZSBzY29wZSBv
biB3aGljaCBgJGJyb2FkY2FzdGAgd2FzIGNhbGxlZC4gQWxsCisgICAgICAgKiB7QGxpbmsgbmcu
JHJvb3RTY29wZS5TY29wZSMkb24gbGlzdGVuZXJzfSBsaXN0ZW5pbmcgZm9yIGBuYW1lYCBldmVu
dCBvbiB0aGlzIHNjb3BlIGdldAorICAgICAgICogbm90aWZpZWQuIEFmdGVyd2FyZHMsIHRoZSBl
dmVudCBwcm9wYWdhdGVzIHRvIGFsbCBkaXJlY3QgYW5kIGluZGlyZWN0IHNjb3BlcyBvZiB0aGUg
Y3VycmVudAorICAgICAgICogc2NvcGUgYW5kIGNhbGxzIGFsbCByZWdpc3RlcmVkIGxpc3RlbmVy
cyBhbG9uZyB0aGUgd2F5LiBUaGUgZXZlbnQgY2Fubm90IGJlIGNhbmNlbGVkLgorICAgICAgICoK
KyAgICAgICAqIEFueSBleGNlcHRpb24gZW1pdHRlZCBmcm9tIHRoZSB7QGxpbmsgbmcuJHJvb3RT
Y29wZS5TY29wZSMkb24gbGlzdGVuZXJzfSB3aWxsIGJlIHBhc3NlZAorICAgICAgICogb250byB0
aGUge0BsaW5rIG5nLiRleGNlcHRpb25IYW5kbGVyICRleGNlcHRpb25IYW5kbGVyfSBzZXJ2aWNl
LgorICAgICAgICoKKyAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIEV2ZW50IG5hbWUgdG8g
YnJvYWRjYXN0LgorICAgICAgICogQHBhcmFtIHsuLi4qfSBhcmdzIE9wdGlvbmFsIG9uZSBvciBt
b3JlIGFyZ3VtZW50cyB3aGljaCB3aWxsIGJlIHBhc3NlZCBvbnRvIHRoZSBldmVudCBsaXN0ZW5l
cnMuCisgICAgICAgKiBAcmV0dXJuIHtPYmplY3R9IEV2ZW50IG9iamVjdCwgc2VlIHtAbGluayBu
Zy4kcm9vdFNjb3BlLlNjb3BlIyRvbn0KKyAgICAgICAqLworICAgICAgJGJyb2FkY2FzdDogZnVu
Y3Rpb24obmFtZSwgYXJncykgeworICAgICAgICB2YXIgdGFyZ2V0ID0gdGhpcywKKyAgICAgICAg
ICAgIGN1cnJlbnQgPSB0YXJnZXQsCisgICAgICAgICAgICBuZXh0ID0gdGFyZ2V0LAorICAgICAg
ICAgICAgZXZlbnQgPSB7CisgICAgICAgICAgICAgIG5hbWU6IG5hbWUsCisgICAgICAgICAgICAg
IHRhcmdldFNjb3BlOiB0YXJnZXQsCisgICAgICAgICAgICAgIHByZXZlbnREZWZhdWx0OiBmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgICAgICBldmVudC5kZWZhdWx0UHJldmVudGVkID0gdHJ1ZTsK
KyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgZGVmYXVsdFByZXZlbnRlZDogZmFsc2UK
KyAgICAgICAgICAgIH07CisKKyAgICAgICAgaWYgKCF0YXJnZXQuJCRsaXN0ZW5lckNvdW50W25h
bWVdKSByZXR1cm4gZXZlbnQ7CisKKyAgICAgICAgdmFyIGxpc3RlbmVyQXJncyA9IGNvbmNhdChb
ZXZlbnRdLCBhcmd1bWVudHMsIDEpLAorICAgICAgICAgICAgbGlzdGVuZXJzLCBpLCBsZW5ndGg7
CisKKyAgICAgICAgLy9kb3duIHdoaWxlIHlvdSBjYW4sIHRoZW4gdXAgYW5kIG5leHQgc2libGlu
ZyBvciB1cCBhbmQgbmV4dCBzaWJsaW5nIHVudGlsIGJhY2sgYXQgcm9vdAorICAgICAgICB3aGls
ZSAoKGN1cnJlbnQgPSBuZXh0KSkgeworICAgICAgICAgIGV2ZW50LmN1cnJlbnRTY29wZSA9IGN1
cnJlbnQ7CisgICAgICAgICAgbGlzdGVuZXJzID0gY3VycmVudC4kJGxpc3RlbmVyc1tuYW1lXSB8
fCBbXTsKKyAgICAgICAgICBmb3IgKGkgPSAwLCBsZW5ndGggPSBsaXN0ZW5lcnMubGVuZ3RoOyBp
IDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIC8vIGlmIGxpc3RlbmVycyB3ZXJlIGRlcmVn
aXN0ZXJlZCwgZGVmcmFnbWVudCB0aGUgYXJyYXkKKyAgICAgICAgICAgIGlmICghbGlzdGVuZXJz
W2ldKSB7CisgICAgICAgICAgICAgIGxpc3RlbmVycy5zcGxpY2UoaSwgMSk7CisgICAgICAgICAg
ICAgIGktLTsKKyAgICAgICAgICAgICAgbGVuZ3RoLS07CisgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICBsaXN0
ZW5lcnNbaV0uYXBwbHkobnVsbCwgbGlzdGVuZXJBcmdzKTsKKyAgICAgICAgICAgIH0gY2F0Y2gg
KGUpIHsKKyAgICAgICAgICAgICAgJGV4Y2VwdGlvbkhhbmRsZXIoZSk7CisgICAgICAgICAgICB9
CisgICAgICAgICAgfQorCisgICAgICAgICAgLy8gSW5zYW5pdHkgV2FybmluZzogc2NvcGUgZGVw
dGgtZmlyc3QgdHJhdmVyc2FsCisgICAgICAgICAgLy8geWVzLCB0aGlzIGNvZGUgaXMgYSBiaXQg
Y3JhenksIGJ1dCBpdCB3b3JrcyBhbmQgd2UgaGF2ZSB0ZXN0cyB0byBwcm92ZSBpdCEKKyAgICAg
ICAgICAvLyB0aGlzIHBpZWNlIHNob3VsZCBiZSBrZXB0IGluIHN5bmMgd2l0aCB0aGUgdHJhdmVy
c2FsIGluICRkaWdlc3QKKyAgICAgICAgICAvLyAodGhvdWdoIGl0IGRpZmZlcnMgZHVlIHRvIGhh
dmluZyB0aGUgZXh0cmEgY2hlY2sgZm9yICQkbGlzdGVuZXJDb3VudCkKKyAgICAgICAgICBpZiAo
IShuZXh0ID0gKChjdXJyZW50LiQkbGlzdGVuZXJDb3VudFtuYW1lXSAmJiBjdXJyZW50LiQkY2hp
bGRIZWFkKSB8fAorICAgICAgICAgICAgICAoY3VycmVudCAhPT0gdGFyZ2V0ICYmIGN1cnJlbnQu
JCRuZXh0U2libGluZykpKSkgeworICAgICAgICAgICAgd2hpbGUgKGN1cnJlbnQgIT09IHRhcmdl
dCAmJiAhKG5leHQgPSBjdXJyZW50LiQkbmV4dFNpYmxpbmcpKSB7CisgICAgICAgICAgICAgIGN1
cnJlbnQgPSBjdXJyZW50LiRwYXJlbnQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAg
ICAgICB9CisKKyAgICAgICAgZXZlbnQuY3VycmVudFNjb3BlID0gbnVsbDsKKyAgICAgICAgcmV0
dXJuIGV2ZW50OworICAgICAgfQorICAgIH07CisKKyAgICB2YXIgJHJvb3RTY29wZSA9IG5ldyBT
Y29wZSgpOworCisgICAgLy9UaGUgaW50ZXJuYWwgcXVldWVzLiBFeHBvc2UgdGhlbSBvbiB0aGUg
JHJvb3RTY29wZSBmb3IgZGVidWdnaW5nL3Rlc3RpbmcgcHVycG9zZXMuCisgICAgdmFyIGFzeW5j
UXVldWUgPSAkcm9vdFNjb3BlLiQkYXN5bmNRdWV1ZSA9IFtdOworICAgIHZhciBwb3N0RGlnZXN0
UXVldWUgPSAkcm9vdFNjb3BlLiQkcG9zdERpZ2VzdFF1ZXVlID0gW107CisgICAgdmFyIGFwcGx5
QXN5bmNRdWV1ZSA9ICRyb290U2NvcGUuJCRhcHBseUFzeW5jUXVldWUgPSBbXTsKKworICAgIHJl
dHVybiAkcm9vdFNjb3BlOworCisKKyAgICBmdW5jdGlvbiBiZWdpblBoYXNlKHBoYXNlKSB7Cisg
ICAgICBpZiAoJHJvb3RTY29wZS4kJHBoYXNlKSB7CisgICAgICAgIHRocm93ICRyb290U2NvcGVN
aW5FcnIoJ2lucHJvZycsICd7MH0gYWxyZWFkeSBpbiBwcm9ncmVzcycsICRyb290U2NvcGUuJCRw
aGFzZSk7CisgICAgICB9CisKKyAgICAgICRyb290U2NvcGUuJCRwaGFzZSA9IHBoYXNlOworICAg
IH0KKworICAgIGZ1bmN0aW9uIGNsZWFyUGhhc2UoKSB7CisgICAgICAkcm9vdFNjb3BlLiQkcGhh
c2UgPSBudWxsOworICAgIH0KKworICAgIGZ1bmN0aW9uIGluY3JlbWVudFdhdGNoZXJzQ291bnQo
Y3VycmVudCwgY291bnQpIHsKKyAgICAgIGRvIHsKKyAgICAgICAgY3VycmVudC4kJHdhdGNoZXJz
Q291bnQgKz0gY291bnQ7CisgICAgICB9IHdoaWxlICgoY3VycmVudCA9IGN1cnJlbnQuJHBhcmVu
dCkpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGRlY3JlbWVudExpc3RlbmVyQ291bnQoY3VycmVu
dCwgY291bnQsIG5hbWUpIHsKKyAgICAgIGRvIHsKKyAgICAgICAgY3VycmVudC4kJGxpc3RlbmVy
Q291bnRbbmFtZV0gLT0gY291bnQ7CisKKyAgICAgICAgaWYgKGN1cnJlbnQuJCRsaXN0ZW5lckNv
dW50W25hbWVdID09PSAwKSB7CisgICAgICAgICAgZGVsZXRlIGN1cnJlbnQuJCRsaXN0ZW5lckNv
dW50W25hbWVdOworICAgICAgICB9CisgICAgICB9IHdoaWxlICgoY3VycmVudCA9IGN1cnJlbnQu
JHBhcmVudCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIGZ1bmN0aW9uIHVzZWQgYXMgYW4g
aW5pdGlhbCB2YWx1ZSBmb3Igd2F0Y2hlcnMuCisgICAgICogYmVjYXVzZSBpdCdzIHVuaXF1ZSB3
ZSBjYW4gZWFzaWx5IHRlbGwgaXQgYXBhcnQgZnJvbSBvdGhlciB2YWx1ZXMKKyAgICAgKi8KKyAg
ICBmdW5jdGlvbiBpbml0V2F0Y2hWYWwoKSB7fQorCisgICAgZnVuY3Rpb24gZmx1c2hBcHBseUFz
eW5jKCkgeworICAgICAgd2hpbGUgKGFwcGx5QXN5bmNRdWV1ZS5sZW5ndGgpIHsKKyAgICAgICAg
dHJ5IHsKKyAgICAgICAgICBhcHBseUFzeW5jUXVldWUuc2hpZnQoKSgpOworICAgICAgICB9IGNh
dGNoIChlKSB7CisgICAgICAgICAgJGV4Y2VwdGlvbkhhbmRsZXIoZSk7CisgICAgICAgIH0KKyAg
ICAgIH0KKyAgICAgIGFwcGx5QXN5bmNJZCA9IG51bGw7CisgICAgfQorCisgICAgZnVuY3Rpb24g
c2NoZWR1bGVBcHBseUFzeW5jKCkgeworICAgICAgaWYgKGFwcGx5QXN5bmNJZCA9PT0gbnVsbCkg
eworICAgICAgICBhcHBseUFzeW5jSWQgPSAkYnJvd3Nlci5kZWZlcihmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAkcm9vdFNjb3BlLiRhcHBseShmbHVzaEFwcGx5QXN5bmMpOworICAgICAgICB9KTsK
KyAgICAgIH0KKyAgICB9CisgIH1dOworfQorCisvKioKKyAqIEBkZXNjcmlwdGlvbgorICogUHJp
dmF0ZSBzZXJ2aWNlIHRvIHNhbml0aXplIHVyaXMgZm9yIGxpbmtzIGFuZCBpbWFnZXMuIFVzZWQg
YnkgJGNvbXBpbGUgYW5kICRzYW5pdGl6ZS4KKyAqLworZnVuY3Rpb24gJCRTYW5pdGl6ZVVyaVBy
b3ZpZGVyKCkgeworICB2YXIgYUhyZWZTYW5pdGl6YXRpb25XaGl0ZWxpc3QgPSAvXlxzKihodHRw
cz98ZnRwfG1haWx0b3x0ZWx8ZmlsZSk6LywKKyAgICBpbWdTcmNTYW5pdGl6YXRpb25XaGl0ZWxp
c3QgPSAvXlxzKigoaHR0cHM/fGZ0cHxmaWxlfGJsb2IpOnxkYXRhOmltYWdlXC8pLzsKKworICAv
KioKKyAgICogQGRlc2NyaXB0aW9uCisgICAqIFJldHJpZXZlcyBvciBvdmVycmlkZXMgdGhlIGRl
ZmF1bHQgcmVndWxhciBleHByZXNzaW9uIHRoYXQgaXMgdXNlZCBmb3Igd2hpdGVsaXN0aW5nIG9m
IHNhZmUKKyAgICogdXJscyBkdXJpbmcgYVtocmVmXSBzYW5pdGl6YXRpb24uCisgICAqCisgICAq
IFRoZSBzYW5pdGl6YXRpb24gaXMgYSBzZWN1cml0eSBtZWFzdXJlIGFpbWVkIGF0IHByZXZlbnQg
WFNTIGF0dGFja3MgdmlhIGh0bWwgbGlua3MuCisgICAqCisgICAqIEFueSB1cmwgYWJvdXQgdG8g
YmUgYXNzaWduZWQgdG8gYVtocmVmXSB2aWEgZGF0YS1iaW5kaW5nIGlzIGZpcnN0IG5vcm1hbGl6
ZWQgYW5kIHR1cm5lZCBpbnRvCisgICAqIGFuIGFic29sdXRlIHVybC4gQWZ0ZXJ3YXJkcywgdGhl
IHVybCBpcyBtYXRjaGVkIGFnYWluc3QgdGhlIGBhSHJlZlNhbml0aXphdGlvbldoaXRlbGlzdGAK
KyAgICogcmVndWxhciBleHByZXNzaW9uLiBJZiBhIG1hdGNoIGlzIGZvdW5kLCB0aGUgb3JpZ2lu
YWwgdXJsIGlzIHdyaXR0ZW4gaW50byB0aGUgZG9tLiBPdGhlcndpc2UsCisgICAqIHRoZSBhYnNv
bHV0ZSB1cmwgaXMgcHJlZml4ZWQgd2l0aCBgJ3Vuc2FmZTonYCBzdHJpbmcgYW5kIG9ubHkgdGhl
biBpcyBpdCB3cml0dGVuIGludG8gdGhlIERPTS4KKyAgICoKKyAgICogQHBhcmFtIHtSZWdFeHA9
fSByZWdleHAgTmV3IHJlZ2V4cCB0byB3aGl0ZWxpc3QgdXJscyB3aXRoLgorICAgKiBAcmV0dXJu
cyB7UmVnRXhwfG5nLiRjb21waWxlUHJvdmlkZXJ9IEN1cnJlbnQgUmVnRXhwIGlmIGNhbGxlZCB3
aXRob3V0IHZhbHVlIG9yIHNlbGYgZm9yCisgICAqICAgIGNoYWluaW5nIG90aGVyd2lzZS4KKyAg
ICovCisgIHRoaXMuYUhyZWZTYW5pdGl6YXRpb25XaGl0ZWxpc3QgPSBmdW5jdGlvbihyZWdleHAp
IHsKKyAgICBpZiAoaXNEZWZpbmVkKHJlZ2V4cCkpIHsKKyAgICAgIGFIcmVmU2FuaXRpemF0aW9u
V2hpdGVsaXN0ID0gcmVnZXhwOworICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorICAgIHJldHVy
biBhSHJlZlNhbml0aXphdGlvbldoaXRlbGlzdDsKKyAgfTsKKworCisgIC8qKgorICAgKiBAZGVz
Y3JpcHRpb24KKyAgICogUmV0cmlldmVzIG9yIG92ZXJyaWRlcyB0aGUgZGVmYXVsdCByZWd1bGFy
IGV4cHJlc3Npb24gdGhhdCBpcyB1c2VkIGZvciB3aGl0ZWxpc3Rpbmcgb2Ygc2FmZQorICAgKiB1
cmxzIGR1cmluZyBpbWdbc3JjXSBzYW5pdGl6YXRpb24uCisgICAqCisgICAqIFRoZSBzYW5pdGl6
YXRpb24gaXMgYSBzZWN1cml0eSBtZWFzdXJlIGFpbWVkIGF0IHByZXZlbnQgWFNTIGF0dGFja3Mg
dmlhIGh0bWwgbGlua3MuCisgICAqCisgICAqIEFueSB1cmwgYWJvdXQgdG8gYmUgYXNzaWduZWQg
dG8gaW1nW3NyY10gdmlhIGRhdGEtYmluZGluZyBpcyBmaXJzdCBub3JtYWxpemVkIGFuZCB0dXJu
ZWQgaW50bworICAgKiBhbiBhYnNvbHV0ZSB1cmwuIEFmdGVyd2FyZHMsIHRoZSB1cmwgaXMgbWF0
Y2hlZCBhZ2FpbnN0IHRoZSBgaW1nU3JjU2FuaXRpemF0aW9uV2hpdGVsaXN0YAorICAgKiByZWd1
bGFyIGV4cHJlc3Npb24uIElmIGEgbWF0Y2ggaXMgZm91bmQsIHRoZSBvcmlnaW5hbCB1cmwgaXMg
d3JpdHRlbiBpbnRvIHRoZSBkb20uIE90aGVyd2lzZSwKKyAgICogdGhlIGFic29sdXRlIHVybCBp
cyBwcmVmaXhlZCB3aXRoIGAndW5zYWZlOidgIHN0cmluZyBhbmQgb25seSB0aGVuIGlzIGl0IHdy
aXR0ZW4gaW50byB0aGUgRE9NLgorICAgKgorICAgKiBAcGFyYW0ge1JlZ0V4cD19IHJlZ2V4cCBO
ZXcgcmVnZXhwIHRvIHdoaXRlbGlzdCB1cmxzIHdpdGguCisgICAqIEByZXR1cm5zIHtSZWdFeHB8
bmcuJGNvbXBpbGVQcm92aWRlcn0gQ3VycmVudCBSZWdFeHAgaWYgY2FsbGVkIHdpdGhvdXQgdmFs
dWUgb3Igc2VsZiBmb3IKKyAgICogICAgY2hhaW5pbmcgb3RoZXJ3aXNlLgorICAgKi8KKyAgdGhp
cy5pbWdTcmNTYW5pdGl6YXRpb25XaGl0ZWxpc3QgPSBmdW5jdGlvbihyZWdleHApIHsKKyAgICBp
ZiAoaXNEZWZpbmVkKHJlZ2V4cCkpIHsKKyAgICAgIGltZ1NyY1Nhbml0aXphdGlvbldoaXRlbGlz
dCA9IHJlZ2V4cDsKKyAgICAgIHJldHVybiB0aGlzOworICAgIH0KKyAgICByZXR1cm4gaW1nU3Jj
U2FuaXRpemF0aW9uV2hpdGVsaXN0OworICB9OworCisgIHRoaXMuJGdldCA9IGZ1bmN0aW9uKCkg
eworICAgIHJldHVybiBmdW5jdGlvbiBzYW5pdGl6ZVVyaSh1cmksIGlzSW1hZ2UpIHsKKyAgICAg
IHZhciByZWdleCA9IGlzSW1hZ2UgPyBpbWdTcmNTYW5pdGl6YXRpb25XaGl0ZWxpc3QgOiBhSHJl
ZlNhbml0aXphdGlvbldoaXRlbGlzdDsKKyAgICAgIHZhciBub3JtYWxpemVkVmFsOworICAgICAg
bm9ybWFsaXplZFZhbCA9IHVybFJlc29sdmUodXJpKS5ocmVmOworICAgICAgaWYgKG5vcm1hbGl6
ZWRWYWwgIT09ICcnICYmICFub3JtYWxpemVkVmFsLm1hdGNoKHJlZ2V4KSkgeworICAgICAgICBy
ZXR1cm4gJ3Vuc2FmZTonICsgbm9ybWFsaXplZFZhbDsKKyAgICAgIH0KKyAgICAgIHJldHVybiB1
cmk7CisgICAgfTsKKyAgfTsKK30KKworLyogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICog
KiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKgorICogICAgIEFueSBj
b21taXRzIHRvIHRoaXMgZmlsZSBzaG91bGQgYmUgcmV2aWV3ZWQgd2l0aCBzZWN1cml0eSBpbiBt
aW5kLiAgKgorICogICBDaGFuZ2VzIHRvIHRoaXMgZmlsZSBjYW4gcG90ZW50aWFsbHkgY3JlYXRl
IHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcy4gKgorICogICAgICAgICAgQW4gYXBwcm92YWwgZnJv
bSAyIENvcmUgbWVtYmVycyB3aXRoIGhpc3Rvcnkgb2YgbW9kaWZ5aW5nICAgICAgKgorICogICAg
ICAgICAgICAgICAgICAgICAgICAgdGhpcyBmaWxlIGlzIHJlcXVpcmVkLiAgICAgICAgICAgICAg
ICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogIERvZXMgdGhlIGNoYW5nZSBz
b21laG93IGFsbG93IGZvciBhcmJpdHJhcnkgamF2YXNjcmlwdCB0byBiZSBleGVjdXRlZD8gKgor
ICogICAgT3IgYWxsb3dzIGZvciBzb21lb25lIHRvIGNoYW5nZSB0aGUgcHJvdG90eXBlIG9mIGJ1
aWx0LWluIG9iamVjdHM/ICAgKgorICogICAgIE9yIGdpdmVzIHVuZGVzaXJlZCBhY2Nlc3MgdG8g
dmFyaWFibGVzIGxpa2VzIGRvY3VtZW50IG9yIHdpbmRvdz8gICAgKgorICogKiAqICogKiAqICog
KiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAq
ICogKi8KKwordmFyICRzY2VNaW5FcnIgPSBtaW5FcnIoJyRzY2UnKTsKKwordmFyIFNDRV9DT05U
RVhUUyA9IHsKKyAgSFRNTDogJ2h0bWwnLAorICBDU1M6ICdjc3MnLAorICBVUkw6ICd1cmwnLAor
ICAvLyBSRVNPVVJDRV9VUkwgaXMgYSBzdWJ0eXBlIG9mIFVSTCB1c2VkIGluIGNvbnRleHRzIHdo
ZXJlIGEgcHJpdmlsZWdlZCByZXNvdXJjZSBpcyBzb3VyY2VkIGZyb20gYQorICAvLyB1cmwuICAo
ZS5nLiBuZy1pbmNsdWRlLCBzY3JpcHQgc3JjLCB0ZW1wbGF0ZVVybCkKKyAgUkVTT1VSQ0VfVVJM
OiAncmVzb3VyY2VVcmwnLAorICBKUzogJ2pzJworfTsKKworLy8gSGVscGVyIGZ1bmN0aW9ucyBm
b2xsb3cuCisKK2Z1bmN0aW9uIGFkanVzdE1hdGNoZXIobWF0Y2hlcikgeworICBpZiAobWF0Y2hl
ciA9PT0gJ3NlbGYnKSB7CisgICAgcmV0dXJuIG1hdGNoZXI7CisgIH0gZWxzZSBpZiAoaXNTdHJp
bmcobWF0Y2hlcikpIHsKKyAgICAvLyBTdHJpbmdzIG1hdGNoIGV4YWN0bHkgZXhjZXB0IGZvciAy
IHdpbGRjYXJkcyAtICcqJyBhbmQgJyoqJy4KKyAgICAvLyAnKicgbWF0Y2hlcyBhbnkgY2hhcmFj
dGVyIGV4Y2VwdCB0aG9zZSBmcm9tIHRoZSBzZXQgJzovLj8mJy4KKyAgICAvLyAnKionIG1hdGNo
ZXMgYW55IGNoYXJhY3RlciAobGlrZSAuKiBpbiBhIFJlZ0V4cCkuCisgICAgLy8gTW9yZSB0aGFu
IDIgKidzIHJhaXNlcyBhbiBlcnJvciBhcyBpdCdzIGlsbCBkZWZpbmVkLgorICAgIGlmIChtYXRj
aGVyLmluZGV4T2YoJyoqKicpID4gLTEpIHsKKyAgICAgIHRocm93ICRzY2VNaW5FcnIoJ2l3Y2Fy
ZCcsCisgICAgICAgICAgJ0lsbGVnYWwgc2VxdWVuY2UgKioqIGluIHN0cmluZyBtYXRjaGVyLiAg
U3RyaW5nOiB7MH0nLCBtYXRjaGVyKTsKKyAgICB9CisgICAgbWF0Y2hlciA9IGVzY2FwZUZvclJl
Z2V4cChtYXRjaGVyKS4KKyAgICAgICAgICAgICAgICAgIHJlcGxhY2UoJ1xcKlxcKicsICcuKicp
LgorICAgICAgICAgICAgICAgICAgcmVwbGFjZSgnXFwqJywgJ1teOi8uPyY7XSonKTsKKyAgICBy
ZXR1cm4gbmV3IFJlZ0V4cCgnXicgKyBtYXRjaGVyICsgJyQnKTsKKyAgfSBlbHNlIGlmIChpc1Jl
Z0V4cChtYXRjaGVyKSkgeworICAgIC8vIFRoZSBvbmx5IG90aGVyIHR5cGUgb2YgbWF0Y2hlciBh
bGxvd2VkIGlzIGEgUmVnZXhwLgorICAgIC8vIE1hdGNoIGVudGlyZSBVUkwgLyBkaXNhbGxvdyBw
YXJ0aWFsIG1hdGNoZXMuCisgICAgLy8gRmxhZ3MgYXJlIHJlc2V0IChpLmUuIG5vIGdsb2JhbCwg
aWdub3JlQ2FzZSBvciBtdWx0aWxpbmUpCisgICAgcmV0dXJuIG5ldyBSZWdFeHAoJ14nICsgbWF0
Y2hlci5zb3VyY2UgKyAnJCcpOworICB9IGVsc2UgeworICAgIHRocm93ICRzY2VNaW5FcnIoJ2lt
YXRjaGVyJywKKyAgICAgICAgJ01hdGNoZXJzIG1heSBvbmx5IGJlICJzZWxmIiwgc3RyaW5nIHBh
dHRlcm5zIG9yIFJlZ0V4cCBvYmplY3RzJyk7CisgIH0KK30KKworCitmdW5jdGlvbiBhZGp1c3RN
YXRjaGVycyhtYXRjaGVycykgeworICB2YXIgYWRqdXN0ZWRNYXRjaGVycyA9IFtdOworICBpZiAo
aXNEZWZpbmVkKG1hdGNoZXJzKSkgeworICAgIGZvckVhY2gobWF0Y2hlcnMsIGZ1bmN0aW9uKG1h
dGNoZXIpIHsKKyAgICAgIGFkanVzdGVkTWF0Y2hlcnMucHVzaChhZGp1c3RNYXRjaGVyKG1hdGNo
ZXIpKTsKKyAgICB9KTsKKyAgfQorICByZXR1cm4gYWRqdXN0ZWRNYXRjaGVyczsKK30KKworCisv
KioKKyAqIEBuZ2RvYyBzZXJ2aWNlCisgKiBAbmFtZSAkc2NlRGVsZWdhdGUKKyAqIEBraW5kIGZ1
bmN0aW9uCisgKgorICogQGRlc2NyaXB0aW9uCisgKgorICogYCRzY2VEZWxlZ2F0ZWAgaXMgYSBz
ZXJ2aWNlIHRoYXQgaXMgdXNlZCBieSB0aGUgYCRzY2VgIHNlcnZpY2UgdG8gcHJvdmlkZSB7QGxp
bmsgbmcuJHNjZSBTdHJpY3QKKyAqIENvbnRleHR1YWwgRXNjYXBpbmcgKFNDRSl9IHNlcnZpY2Vz
IHRvIEFuZ3VsYXJKUy4KKyAqCisgKiBUeXBpY2FsbHksIHlvdSB3b3VsZCBjb25maWd1cmUgb3Ig
b3ZlcnJpZGUgdGhlIHtAbGluayBuZy4kc2NlRGVsZWdhdGUgJHNjZURlbGVnYXRlfSBpbnN0ZWFk
IG9mCisgKiB0aGUgYCRzY2VgIHNlcnZpY2UgdG8gY3VzdG9taXplIHRoZSB3YXkgU3RyaWN0IENv
bnRleHR1YWwgRXNjYXBpbmcgd29ya3MgaW4gQW5ndWxhckpTLiAgVGhpcyBpcworICogYmVjYXVz
ZSwgd2hpbGUgdGhlIGAkc2NlYCBwcm92aWRlcyBudW1lcm91cyBzaG9ydGhhbmQgbWV0aG9kcywg
ZXRjLiwgeW91IHJlYWxseSBvbmx5IG5lZWQgdG8KKyAqIG92ZXJyaWRlIDMgY29yZSBmdW5jdGlv
bnMgKGB0cnVzdEFzYCwgYGdldFRydXN0ZWRgIGFuZCBgdmFsdWVPZmApIHRvIHJlcGxhY2UgdGhl
IHdheSB0aGluZ3MKKyAqIHdvcmsgYmVjYXVzZSBgJHNjZWAgZGVsZWdhdGVzIHRvIGAkc2NlRGVs
ZWdhdGVgIGZvciB0aGVzZSBvcGVyYXRpb25zLgorICoKKyAqIFJlZmVyIHtAbGluayBuZy4kc2Nl
RGVsZWdhdGVQcm92aWRlciAkc2NlRGVsZWdhdGVQcm92aWRlcn0gdG8gY29uZmlndXJlIHRoaXMg
c2VydmljZS4KKyAqCisgKiBUaGUgZGVmYXVsdCBpbnN0YW5jZSBvZiBgJHNjZURlbGVnYXRlYCBz
aG91bGQgd29yayBvdXQgb2YgdGhlIGJveCB3aXRoIGxpdHRsZSBwYWluLiAgV2hpbGUgeW91Cisg
KiBjYW4gb3ZlcnJpZGUgaXQgY29tcGxldGVseSB0byBjaGFuZ2UgdGhlIGJlaGF2aW9yIG9mIGAk
c2NlYCwgdGhlIGNvbW1vbiBjYXNlIHdvdWxkCisgKiBpbnZvbHZlIGNvbmZpZ3VyaW5nIHRoZSB7
QGxpbmsgbmcuJHNjZURlbGVnYXRlUHJvdmlkZXIgJHNjZURlbGVnYXRlUHJvdmlkZXJ9IGluc3Rl
YWQgYnkgc2V0dGluZworICogeW91ciBvd24gd2hpdGVsaXN0cyBhbmQgYmxhY2tsaXN0cyBmb3Ig
dHJ1c3RpbmcgVVJMcyB1c2VkIGZvciBsb2FkaW5nIEFuZ3VsYXJKUyByZXNvdXJjZXMgc3VjaCBh
cworICogdGVtcGxhdGVzLiAgUmVmZXIge0BsaW5rIG5nLiRzY2VEZWxlZ2F0ZVByb3ZpZGVyI3Jl
c291cmNlVXJsV2hpdGVsaXN0CisgKiAkc2NlRGVsZWdhdGVQcm92aWRlci5yZXNvdXJjZVVybFdo
aXRlbGlzdH0gYW5kIHtAbGluaworICogbmcuJHNjZURlbGVnYXRlUHJvdmlkZXIjcmVzb3VyY2VV
cmxCbGFja2xpc3QgJHNjZURlbGVnYXRlUHJvdmlkZXIucmVzb3VyY2VVcmxCbGFja2xpc3R9Cisg
Ki8KKworLyoqCisgKiBAbmdkb2MgcHJvdmlkZXIKKyAqIEBuYW1lICRzY2VEZWxlZ2F0ZVByb3Zp
ZGVyCisgKiBAZGVzY3JpcHRpb24KKyAqCisgKiBUaGUgYCRzY2VEZWxlZ2F0ZVByb3ZpZGVyYCBw
cm92aWRlciBhbGxvd3MgZGV2ZWxvcGVycyB0byBjb25maWd1cmUgdGhlIHtAbGluayBuZy4kc2Nl
RGVsZWdhdGUKKyAqICRzY2VEZWxlZ2F0ZX0gc2VydmljZS4gIFRoaXMgYWxsb3dzIG9uZSB0byBn
ZXQvc2V0IHRoZSB3aGl0ZWxpc3RzIGFuZCBibGFja2xpc3RzIHVzZWQgdG8gZW5zdXJlCisgKiB0
aGF0IHRoZSBVUkxzIHVzZWQgZm9yIHNvdXJjaW5nIEFuZ3VsYXIgdGVtcGxhdGVzIGFyZSBzYWZl
LiAgUmVmZXIge0BsaW5rCisgKiBuZy4kc2NlRGVsZWdhdGVQcm92aWRlciNyZXNvdXJjZVVybFdo
aXRlbGlzdCAkc2NlRGVsZWdhdGVQcm92aWRlci5yZXNvdXJjZVVybFdoaXRlbGlzdH0gYW5kCisg
KiB7QGxpbmsgbmcuJHNjZURlbGVnYXRlUHJvdmlkZXIjcmVzb3VyY2VVcmxCbGFja2xpc3QgJHNj
ZURlbGVnYXRlUHJvdmlkZXIucmVzb3VyY2VVcmxCbGFja2xpc3R9CisgKgorICogRm9yIHRoZSBn
ZW5lcmFsIGRldGFpbHMgYWJvdXQgdGhpcyBzZXJ2aWNlIGluIEFuZ3VsYXIsIHJlYWQgdGhlIG1h
aW4gcGFnZSBmb3Ige0BsaW5rIG5nLiRzY2UKKyAqIFN0cmljdCBDb250ZXh0dWFsIEVzY2FwaW5n
IChTQ0UpfS4KKyAqCisgKiAqKkV4YW1wbGUqKjogIENvbnNpZGVyIHRoZSBmb2xsb3dpbmcgY2Fz
ZS4gPGEgbmFtZT0iZXhhbXBsZSI+PC9hPgorICoKKyAqIC0geW91ciBhcHAgaXMgaG9zdGVkIGF0
IHVybCBgaHR0cDovL215YXBwLmV4YW1wbGUuY29tL2AKKyAqIC0gYnV0IHNvbWUgb2YgeW91ciB0
ZW1wbGF0ZXMgYXJlIGhvc3RlZCBvbiBvdGhlciBkb21haW5zIHlvdSBjb250cm9sIHN1Y2ggYXMK
KyAqICAgYGh0dHA6Ly9zcnYwMS5hc3NldHMuZXhhbXBsZS5jb20vYCzCoCBgaHR0cDovL3NydjAy
LmFzc2V0cy5leGFtcGxlLmNvbS9gLCBldGMuCisgKiAtIGFuZCB5b3UgaGF2ZSBhbiBvcGVuIHJl
ZGlyZWN0IGF0IGBodHRwOi8vbXlhcHAuZXhhbXBsZS5jb20vY2xpY2tUaHJ1Py4uLmAuCisgKgor
ICogSGVyZSBpcyB3aGF0IGEgc2VjdXJlIGNvbmZpZ3VyYXRpb24gZm9yIHRoaXMgc2NlbmFyaW8g
bWlnaHQgbG9vayBsaWtlOgorICoKKyAqIGBgYAorICogIGFuZ3VsYXIubW9kdWxlKCdteUFwcCcs
IFtdKS5jb25maWcoZnVuY3Rpb24oJHNjZURlbGVnYXRlUHJvdmlkZXIpIHsKKyAqICAgICRzY2VE
ZWxlZ2F0ZVByb3ZpZGVyLnJlc291cmNlVXJsV2hpdGVsaXN0KFsKKyAqICAgICAgLy8gQWxsb3cg
c2FtZSBvcmlnaW4gcmVzb3VyY2UgbG9hZHMuCisgKiAgICAgICdzZWxmJywKKyAqICAgICAgLy8g
QWxsb3cgbG9hZGluZyBmcm9tIG91ciBhc3NldHMgZG9tYWluLiAgTm90aWNlIHRoZSBkaWZmZXJl
bmNlIGJldHdlZW4gKiBhbmQgKiouCisgKiAgICAgICdodHRwOi8vc3J2Ki5hc3NldHMuZXhhbXBs
ZS5jb20vKionCisgKiAgICBdKTsKKyAqCisgKiAgICAvLyBUaGUgYmxhY2tsaXN0IG92ZXJyaWRl
cyB0aGUgd2hpdGVsaXN0IHNvIHRoZSBvcGVuIHJlZGlyZWN0IGhlcmUgaXMgYmxvY2tlZC4KKyAq
ICAgICRzY2VEZWxlZ2F0ZVByb3ZpZGVyLnJlc291cmNlVXJsQmxhY2tsaXN0KFsKKyAqICAgICAg
J2h0dHA6Ly9teWFwcC5leGFtcGxlLmNvbS9jbGlja1RocnUqKicKKyAqICAgIF0pOworICogIH0p
OworICogYGBgCisgKi8KKworZnVuY3Rpb24gJFNjZURlbGVnYXRlUHJvdmlkZXIoKSB7CisgIHRo
aXMuU0NFX0NPTlRFWFRTID0gU0NFX0NPTlRFWFRTOworCisgIC8vIFJlc291cmNlIFVSTHMgY2Fu
IGFsc28gYmUgdHJ1c3RlZCBieSBwb2xpY3kuCisgIHZhciByZXNvdXJjZVVybFdoaXRlbGlzdCA9
IFsnc2VsZiddLAorICAgICAgcmVzb3VyY2VVcmxCbGFja2xpc3QgPSBbXTsKKworICAvKioKKyAg
ICogQG5nZG9jIG1ldGhvZAorICAgKiBAbmFtZSAkc2NlRGVsZWdhdGVQcm92aWRlciNyZXNvdXJj
ZVVybFdoaXRlbGlzdAorICAgKiBAa2luZCBmdW5jdGlvbgorICAgKgorICAgKiBAcGFyYW0ge0Fy
cmF5PX0gd2hpdGVsaXN0IFdoZW4gcHJvdmlkZWQsIHJlcGxhY2VzIHRoZSByZXNvdXJjZVVybFdo
aXRlbGlzdCB3aXRoIHRoZSB2YWx1ZQorICAgKiAgICAgcHJvdmlkZWQuICBUaGlzIG11c3QgYmUg
YW4gYXJyYXkgb3IgbnVsbC4gIEEgc25hcHNob3Qgb2YgdGhpcyBhcnJheSBpcyB1c2VkIHNvIGZ1
cnRoZXIKKyAgICogICAgIGNoYW5nZXMgdG8gdGhlIGFycmF5IGFyZSBpZ25vcmVkLgorICAgKgor
ICAgKiAgICAgRm9sbG93IHtAbGluayBuZy4kc2NlI3Jlc291cmNlVXJsUGF0dGVybkl0ZW0gdGhp
cyBsaW5rfSBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGUgaXRlbXMKKyAgICogICAgIGFsbG93ZWQg
aW4gdGhpcyBhcnJheS4KKyAgICoKKyAgICogICAgIE5vdGU6ICoqYW4gZW1wdHkgd2hpdGVsaXN0
IGFycmF5IHdpbGwgYmxvY2sgYWxsIFVSTHMqKiEKKyAgICoKKyAgICogQHJldHVybiB7QXJyYXl9
IHRoZSBjdXJyZW50bHkgc2V0IHdoaXRlbGlzdCBhcnJheS4KKyAgICoKKyAgICogVGhlICoqZGVm
YXVsdCB2YWx1ZSoqIHdoZW4gbm8gd2hpdGVsaXN0IGhhcyBiZWVuIGV4cGxpY2l0bHkgc2V0IGlz
IGBbJ3NlbGYnXWAgYWxsb3dpbmcgb25seQorICAgKiBzYW1lIG9yaWdpbiByZXNvdXJjZSByZXF1
ZXN0cy4KKyAgICoKKyAgICogQGRlc2NyaXB0aW9uCisgICAqIFNldHMvR2V0cyB0aGUgd2hpdGVs
aXN0IG9mIHRydXN0ZWQgcmVzb3VyY2UgVVJMcy4KKyAgICovCisgIHRoaXMucmVzb3VyY2VVcmxX
aGl0ZWxpc3QgPSBmdW5jdGlvbih2YWx1ZSkgeworICAgIGlmIChhcmd1bWVudHMubGVuZ3RoKSB7
CisgICAgICByZXNvdXJjZVVybFdoaXRlbGlzdCA9IGFkanVzdE1hdGNoZXJzKHZhbHVlKTsKKyAg
ICB9CisgICAgcmV0dXJuIHJlc291cmNlVXJsV2hpdGVsaXN0OworICB9OworCisgIC8qKgorICAg
KiBAbmdkb2MgbWV0aG9kCisgICAqIEBuYW1lICRzY2VEZWxlZ2F0ZVByb3ZpZGVyI3Jlc291cmNl
VXJsQmxhY2tsaXN0CisgICAqIEBraW5kIGZ1bmN0aW9uCisgICAqCisgICAqIEBwYXJhbSB7QXJy
YXk9fSBibGFja2xpc3QgV2hlbiBwcm92aWRlZCwgcmVwbGFjZXMgdGhlIHJlc291cmNlVXJsQmxh
Y2tsaXN0IHdpdGggdGhlIHZhbHVlCisgICAqICAgICBwcm92aWRlZC4gIFRoaXMgbXVzdCBiZSBh
biBhcnJheSBvciBudWxsLiAgQSBzbmFwc2hvdCBvZiB0aGlzIGFycmF5IGlzIHVzZWQgc28gZnVy
dGhlcgorICAgKiAgICAgY2hhbmdlcyB0byB0aGUgYXJyYXkgYXJlIGlnbm9yZWQuCisgICAqCisg
ICAqICAgICBGb2xsb3cge0BsaW5rIG5nLiRzY2UjcmVzb3VyY2VVcmxQYXR0ZXJuSXRlbSB0aGlz
IGxpbmt9IGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSBpdGVtcworICAgKiAgICAgYWxsb3dlZCBp
biB0aGlzIGFycmF5LgorICAgKgorICAgKiAgICAgVGhlIHR5cGljYWwgdXNhZ2UgZm9yIHRoZSBi
bGFja2xpc3QgaXMgdG8gKipibG9jaworICAgKiAgICAgW29wZW4gcmVkaXJlY3RzXShodHRwOi8v
Y3dlLm1pdHJlLm9yZy9kYXRhL2RlZmluaXRpb25zLzYwMS5odG1sKSoqIHNlcnZlZCBieSB5b3Vy
IGRvbWFpbiBhcworICAgKiAgICAgdGhlc2Ugd291bGQgb3RoZXJ3aXNlIGJlIHRydXN0ZWQgYnV0
IGFjdHVhbGx5IHJldHVybiBjb250ZW50IGZyb20gdGhlIHJlZGlyZWN0ZWQgZG9tYWluLgorICAg
KgorICAgKiAgICAgRmluYWxseSwgKip0aGUgYmxhY2tsaXN0IG92ZXJyaWRlcyB0aGUgd2hpdGVs
aXN0KiogYW5kIGhhcyB0aGUgZmluYWwgc2F5LgorICAgKgorICAgKiBAcmV0dXJuIHtBcnJheX0g
dGhlIGN1cnJlbnRseSBzZXQgYmxhY2tsaXN0IGFycmF5LgorICAgKgorICAgKiBUaGUgKipkZWZh
dWx0IHZhbHVlKiogd2hlbiBubyB3aGl0ZWxpc3QgaGFzIGJlZW4gZXhwbGljaXRseSBzZXQgaXMg
dGhlIGVtcHR5IGFycmF5IChpLmUuIHRoZXJlCisgICAqIGlzIG5vIGJsYWNrbGlzdC4pCisgICAq
CisgICAqIEBkZXNjcmlwdGlvbgorICAgKiBTZXRzL0dldHMgdGhlIGJsYWNrbGlzdCBvZiB0cnVz
dGVkIHJlc291cmNlIFVSTHMuCisgICAqLworCisgIHRoaXMucmVzb3VyY2VVcmxCbGFja2xpc3Qg
PSBmdW5jdGlvbih2YWx1ZSkgeworICAgIGlmIChhcmd1bWVudHMubGVuZ3RoKSB7CisgICAgICBy
ZXNvdXJjZVVybEJsYWNrbGlzdCA9IGFkanVzdE1hdGNoZXJzKHZhbHVlKTsKKyAgICB9CisgICAg
cmV0dXJuIHJlc291cmNlVXJsQmxhY2tsaXN0OworICB9OworCisgIHRoaXMuJGdldCA9IFsnJGlu
amVjdG9yJywgZnVuY3Rpb24oJGluamVjdG9yKSB7CisKKyAgICB2YXIgaHRtbFNhbml0aXplciA9
IGZ1bmN0aW9uIGh0bWxTYW5pdGl6ZXIoaHRtbCkgeworICAgICAgdGhyb3cgJHNjZU1pbkVycign
dW5zYWZlJywgJ0F0dGVtcHRpbmcgdG8gdXNlIGFuIHVuc2FmZSB2YWx1ZSBpbiBhIHNhZmUgY29u
dGV4dC4nKTsKKyAgICB9OworCisgICAgaWYgKCRpbmplY3Rvci5oYXMoJyRzYW5pdGl6ZScpKSB7
CisgICAgICBodG1sU2FuaXRpemVyID0gJGluamVjdG9yLmdldCgnJHNhbml0aXplJyk7CisgICAg
fQorCisKKyAgICBmdW5jdGlvbiBtYXRjaFVybChtYXRjaGVyLCBwYXJzZWRVcmwpIHsKKyAgICAg
IGlmIChtYXRjaGVyID09PSAnc2VsZicpIHsKKyAgICAgICAgcmV0dXJuIHVybElzU2FtZU9yaWdp
bihwYXJzZWRVcmwpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gZGVmaW5pdGVseSBhIHJl
Z2V4LiAgU2VlIGFkanVzdE1hdGNoZXJzKCkKKyAgICAgICAgcmV0dXJuICEhbWF0Y2hlci5leGVj
KHBhcnNlZFVybC5ocmVmKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiBpc1Jlc291
cmNlVXJsQWxsb3dlZEJ5UG9saWN5KHVybCkgeworICAgICAgdmFyIHBhcnNlZFVybCA9IHVybFJl
c29sdmUodXJsLnRvU3RyaW5nKCkpOworICAgICAgdmFyIGksIG4sIGFsbG93ZWQgPSBmYWxzZTsK
KyAgICAgIC8vIEVuc3VyZSB0aGF0IGF0IGxlYXN0IG9uZSBpdGVtIGZyb20gdGhlIHdoaXRlbGlz
dCBhbGxvd3MgdGhpcyB1cmwuCisgICAgICBmb3IgKGkgPSAwLCBuID0gcmVzb3VyY2VVcmxXaGl0
ZWxpc3QubGVuZ3RoOyBpIDwgbjsgaSsrKSB7CisgICAgICAgIGlmIChtYXRjaFVybChyZXNvdXJj
ZVVybFdoaXRlbGlzdFtpXSwgcGFyc2VkVXJsKSkgeworICAgICAgICAgIGFsbG93ZWQgPSB0cnVl
OworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICB9CisgICAgICBpZiAoYWxsb3dl
ZCkgeworICAgICAgICAvLyBFbnN1cmUgdGhhdCBubyBpdGVtIGZyb20gdGhlIGJsYWNrbGlzdCBi
bG9ja2VkIHRoaXMgdXJsLgorICAgICAgICBmb3IgKGkgPSAwLCBuID0gcmVzb3VyY2VVcmxCbGFj
a2xpc3QubGVuZ3RoOyBpIDwgbjsgaSsrKSB7CisgICAgICAgICAgaWYgKG1hdGNoVXJsKHJlc291
cmNlVXJsQmxhY2tsaXN0W2ldLCBwYXJzZWRVcmwpKSB7CisgICAgICAgICAgICBhbGxvd2VkID0g
ZmFsc2U7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
IH0KKyAgICAgIHJldHVybiBhbGxvd2VkOworICAgIH0KKworICAgIGZ1bmN0aW9uIGdlbmVyYXRl
SG9sZGVyVHlwZShCYXNlKSB7CisgICAgICB2YXIgaG9sZGVyVHlwZSA9IGZ1bmN0aW9uIFRydXN0
ZWRWYWx1ZUhvbGRlclR5cGUodHJ1c3RlZFZhbHVlKSB7CisgICAgICAgIHRoaXMuJCR1bndyYXBU
cnVzdGVkVmFsdWUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICByZXR1cm4gdHJ1c3RlZFZhbHVl
OworICAgICAgICB9OworICAgICAgfTsKKyAgICAgIGlmIChCYXNlKSB7CisgICAgICAgIGhvbGRl
clR5cGUucHJvdG90eXBlID0gbmV3IEJhc2UoKTsKKyAgICAgIH0KKyAgICAgIGhvbGRlclR5cGUu
cHJvdG90eXBlLnZhbHVlT2YgPSBmdW5jdGlvbiBzY2VWYWx1ZU9mKCkgeworICAgICAgICByZXR1
cm4gdGhpcy4kJHVud3JhcFRydXN0ZWRWYWx1ZSgpOworICAgICAgfTsKKyAgICAgIGhvbGRlclR5
cGUucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gc2NlVG9TdHJpbmcoKSB7CisgICAgICAg
IHJldHVybiB0aGlzLiQkdW53cmFwVHJ1c3RlZFZhbHVlKCkudG9TdHJpbmcoKTsKKyAgICAgIH07
CisgICAgICByZXR1cm4gaG9sZGVyVHlwZTsKKyAgICB9CisKKyAgICB2YXIgdHJ1c3RlZFZhbHVl
SG9sZGVyQmFzZSA9IGdlbmVyYXRlSG9sZGVyVHlwZSgpLAorICAgICAgICBieVR5cGUgPSB7fTsK
KworICAgIGJ5VHlwZVtTQ0VfQ09OVEVYVFMuSFRNTF0gPSBnZW5lcmF0ZUhvbGRlclR5cGUodHJ1
c3RlZFZhbHVlSG9sZGVyQmFzZSk7CisgICAgYnlUeXBlW1NDRV9DT05URVhUUy5DU1NdID0gZ2Vu
ZXJhdGVIb2xkZXJUeXBlKHRydXN0ZWRWYWx1ZUhvbGRlckJhc2UpOworICAgIGJ5VHlwZVtTQ0Vf
Q09OVEVYVFMuVVJMXSA9IGdlbmVyYXRlSG9sZGVyVHlwZSh0cnVzdGVkVmFsdWVIb2xkZXJCYXNl
KTsKKyAgICBieVR5cGVbU0NFX0NPTlRFWFRTLkpTXSA9IGdlbmVyYXRlSG9sZGVyVHlwZSh0cnVz
dGVkVmFsdWVIb2xkZXJCYXNlKTsKKyAgICBieVR5cGVbU0NFX0NPTlRFWFRTLlJFU09VUkNFX1VS
TF0gPSBnZW5lcmF0ZUhvbGRlclR5cGUoYnlUeXBlW1NDRV9DT05URVhUUy5VUkxdKTsKKworICAg
IC8qKgorICAgICAqIEBuZ2RvYyBtZXRob2QKKyAgICAgKiBAbmFtZSAkc2NlRGVsZWdhdGUjdHJ1
c3RBcworICAgICAqCisgICAgICogQGRlc2NyaXB0aW9uCisgICAgICogUmV0dXJucyBhbiBvYmpl
Y3QgdGhhdCBpcyB0cnVzdGVkIGJ5IGFuZ3VsYXIgZm9yIHVzZSBpbiBzcGVjaWZpZWQgc3RyaWN0
CisgICAgICogY29udGV4dHVhbCBlc2NhcGluZyBjb250ZXh0cyAoc3VjaCBhcyBuZy1iaW5kLWh0
bWwsIG5nLWluY2x1ZGUsIGFueSBzcmMKKyAgICAgKiBhdHRyaWJ1dGUgaW50ZXJwb2xhdGlvbiwg
YW55IGRvbSBldmVudCBiaW5kaW5nIGF0dHJpYnV0ZSBpbnRlcnBvbGF0aW9uCisgICAgICogc3Vj
aCBhcyBmb3Igb25jbGljaywgIGV0Yy4pIHRoYXQgdXNlcyB0aGUgcHJvdmlkZWQgdmFsdWUuCisg
ICAgICogU2VlIHtAbGluayBuZy4kc2NlICRzY2V9IGZvciBlbmFibGluZyBzdHJpY3QgY29udGV4
dHVhbCBlc2NhcGluZy4KKyAgICAgKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlIFRoZSBr
aW5kIG9mIGNvbnRleHQgaW4gd2hpY2ggdGhpcyB2YWx1ZSBpcyBzYWZlIGZvciB1c2UuICBlLmcu
IHVybCwKKyAgICAgKiAgIHJlc291cmNlVXJsLCBodG1sLCBqcyBhbmQgY3NzLgorICAgICAqIEBw
YXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRoYXQgdGhhdCBzaG91bGQgYmUgY29uc2lkZXJlZCB0
cnVzdGVkL3NhZmUuCisgICAgICogQHJldHVybnMgeyp9IEEgdmFsdWUgdGhhdCBjYW4gYmUgdXNl
ZCB0byBzdGFuZCBpbiBmb3IgdGhlIHByb3ZpZGVkIGB2YWx1ZWAgaW4gcGxhY2VzCisgICAgICog
d2hlcmUgQW5ndWxhciBleHBlY3RzIGEgJHNjZS50cnVzdEFzKCkgcmV0dXJuIHZhbHVlLgorICAg
ICAqLworICAgIGZ1bmN0aW9uIHRydXN0QXModHlwZSwgdHJ1c3RlZFZhbHVlKSB7CisgICAgICB2
YXIgQ29uc3RydWN0b3IgPSAoYnlUeXBlLmhhc093blByb3BlcnR5KHR5cGUpID8gYnlUeXBlW3R5
cGVdIDogbnVsbCk7CisgICAgICBpZiAoIUNvbnN0cnVjdG9yKSB7CisgICAgICAgIHRocm93ICRz
Y2VNaW5FcnIoJ2ljb250ZXh0JywKKyAgICAgICAgICAgICdBdHRlbXB0ZWQgdG8gdHJ1c3QgYSB2
YWx1ZSBpbiBpbnZhbGlkIGNvbnRleHQuIENvbnRleHQ6IHswfTsgVmFsdWU6IHsxfScsCisgICAg
ICAgICAgICB0eXBlLCB0cnVzdGVkVmFsdWUpOworICAgICAgfQorICAgICAgaWYgKHRydXN0ZWRW
YWx1ZSA9PT0gbnVsbCB8fCB0cnVzdGVkVmFsdWUgPT09IHVuZGVmaW5lZCB8fCB0cnVzdGVkVmFs
dWUgPT09ICcnKSB7CisgICAgICAgIHJldHVybiB0cnVzdGVkVmFsdWU7CisgICAgICB9CisgICAg
ICAvLyBBbGwgdGhlIGN1cnJlbnQgY29udGV4dHMgaW4gU0NFX0NPTlRFWFRTIGhhcHBlbiB0byBi
ZSBzdHJpbmdzLiAgSW4gb3JkZXIgdG8gYXZvaWQgdHJ1c3RpbmcKKyAgICAgIC8vIG11dGFibGUg
b2JqZWN0cywgd2UgZW5zdXJlIGhlcmUgdGhhdCB0aGUgdmFsdWUgcGFzc2VkIGluIGlzIGFjdHVh
bGx5IGEgc3RyaW5nLgorICAgICAgaWYgKHR5cGVvZiB0cnVzdGVkVmFsdWUgIT09ICdzdHJpbmcn
KSB7CisgICAgICAgIHRocm93ICRzY2VNaW5FcnIoJ2l0eXBlJywKKyAgICAgICAgICAgICdBdHRl
bXB0ZWQgdG8gdHJ1c3QgYSBub24tc3RyaW5nIHZhbHVlIGluIGEgY29udGVudCByZXF1aXJpbmcg
YSBzdHJpbmc6IENvbnRleHQ6IHswfScsCisgICAgICAgICAgICB0eXBlKTsKKyAgICAgIH0KKyAg
ICAgIHJldHVybiBuZXcgQ29uc3RydWN0b3IodHJ1c3RlZFZhbHVlKTsKKyAgICB9CisKKyAgICAv
KioKKyAgICAgKiBAbmdkb2MgbWV0aG9kCisgICAgICogQG5hbWUgJHNjZURlbGVnYXRlI3ZhbHVl
T2YKKyAgICAgKgorICAgICAqIEBkZXNjcmlwdGlvbgorICAgICAqIElmIHRoZSBwYXNzZWQgcGFy
YW1ldGVyIGhhZCBiZWVuIHJldHVybmVkIGJ5IGEgcHJpb3IgY2FsbCB0byB7QGxpbmsgbmcuJHNj
ZURlbGVnYXRlI3RydXN0QXMKKyAgICAgKiBgJHNjZURlbGVnYXRlLnRydXN0QXNgfSwgcmV0dXJu
cyB0aGUgdmFsdWUgdGhhdCBoYWQgYmVlbiBwYXNzZWQgdG8ge0BsaW5rCisgICAgICogbmcuJHNj
ZURlbGVnYXRlI3RydXN0QXMgYCRzY2VEZWxlZ2F0ZS50cnVzdEFzYH0uCisgICAgICoKKyAgICAg
KiBJZiB0aGUgcGFzc2VkIHBhcmFtZXRlciBpcyBub3QgYSB2YWx1ZSB0aGF0IGhhZCBiZWVuIHJl
dHVybmVkIGJ5IHtAbGluaworICAgICAqIG5nLiRzY2VEZWxlZ2F0ZSN0cnVzdEFzIGAkc2NlRGVs
ZWdhdGUudHJ1c3RBc2B9LCByZXR1cm5zIGl0IGFzLWlzLgorICAgICAqCisgICAgICogQHBhcmFt
IHsqfSB2YWx1ZSBUaGUgcmVzdWx0IG9mIGEgcHJpb3Ige0BsaW5rIG5nLiRzY2VEZWxlZ2F0ZSN0
cnVzdEFzIGAkc2NlRGVsZWdhdGUudHJ1c3RBc2B9CisgICAgICogICAgICBjYWxsIG9yIGFueXRo
aW5nIGVsc2UuCisgICAgICogQHJldHVybnMgeyp9IFRoZSBgdmFsdWVgIHRoYXQgd2FzIG9yaWdp
bmFsbHkgcHJvdmlkZWQgdG8ge0BsaW5rIG5nLiRzY2VEZWxlZ2F0ZSN0cnVzdEFzCisgICAgICog
ICAgIGAkc2NlRGVsZWdhdGUudHJ1c3RBc2B9IGlmIGB2YWx1ZWAgaXMgdGhlIHJlc3VsdCBvZiBz
dWNoIGEgY2FsbC4gIE90aGVyd2lzZSwgcmV0dXJucworICAgICAqICAgICBgdmFsdWVgIHVuY2hh
bmdlZC4KKyAgICAgKi8KKyAgICBmdW5jdGlvbiB2YWx1ZU9mKG1heWJlVHJ1c3RlZCkgeworICAg
ICAgaWYgKG1heWJlVHJ1c3RlZCBpbnN0YW5jZW9mIHRydXN0ZWRWYWx1ZUhvbGRlckJhc2UpIHsK
KyAgICAgICAgcmV0dXJuIG1heWJlVHJ1c3RlZC4kJHVud3JhcFRydXN0ZWRWYWx1ZSgpOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIG1heWJlVHJ1c3RlZDsKKyAgICAgIH0KKyAgICB9
CisKKyAgICAvKioKKyAgICAgKiBAbmdkb2MgbWV0aG9kCisgICAgICogQG5hbWUgJHNjZURlbGVn
YXRlI2dldFRydXN0ZWQKKyAgICAgKgorICAgICAqIEBkZXNjcmlwdGlvbgorICAgICAqIFRha2Vz
IHRoZSByZXN1bHQgb2YgYSB7QGxpbmsgbmcuJHNjZURlbGVnYXRlI3RydXN0QXMgYCRzY2VEZWxl
Z2F0ZS50cnVzdEFzYH0gY2FsbCBhbmQKKyAgICAgKiByZXR1cm5zIHRoZSBvcmlnaW5hbGx5IHN1
cHBsaWVkIHZhbHVlIGlmIHRoZSBxdWVyaWVkIGNvbnRleHQgdHlwZSBpcyBhIHN1cGVydHlwZSBv
ZiB0aGUKKyAgICAgKiBjcmVhdGVkIHR5cGUuICBJZiB0aGlzIGNvbmRpdGlvbiBpc24ndCBzYXRp
c2ZpZWQsIHRocm93cyBhbiBleGNlcHRpb24uCisgICAgICoKKyAgICAgKiBAcGFyYW0ge3N0cmlu
Z30gdHlwZSBUaGUga2luZCBvZiBjb250ZXh0IGluIHdoaWNoIHRoaXMgdmFsdWUgaXMgdG8gYmUg
dXNlZC4KKyAgICAgKiBAcGFyYW0geyp9IG1heWJlVHJ1c3RlZCBUaGUgcmVzdWx0IG9mIGEgcHJp
b3Ige0BsaW5rIG5nLiRzY2VEZWxlZ2F0ZSN0cnVzdEFzCisgICAgICogICAgIGAkc2NlRGVsZWdh
dGUudHJ1c3RBc2B9IGNhbGwuCisgICAgICogQHJldHVybnMgeyp9IFRoZSB2YWx1ZSB0aGUgd2Fz
IG9yaWdpbmFsbHkgcHJvdmlkZWQgdG8ge0BsaW5rIG5nLiRzY2VEZWxlZ2F0ZSN0cnVzdEFzCisg
ICAgICogICAgIGAkc2NlRGVsZWdhdGUudHJ1c3RBc2B9IGlmIHZhbGlkIGluIHRoaXMgY29udGV4
dC4gIE90aGVyd2lzZSwgdGhyb3dzIGFuIGV4Y2VwdGlvbi4KKyAgICAgKi8KKyAgICBmdW5jdGlv
biBnZXRUcnVzdGVkKHR5cGUsIG1heWJlVHJ1c3RlZCkgeworICAgICAgaWYgKG1heWJlVHJ1c3Rl
ZCA9PT0gbnVsbCB8fCBtYXliZVRydXN0ZWQgPT09IHVuZGVmaW5lZCB8fCBtYXliZVRydXN0ZWQg
PT09ICcnKSB7CisgICAgICAgIHJldHVybiBtYXliZVRydXN0ZWQ7CisgICAgICB9CisgICAgICB2
YXIgY29uc3RydWN0b3IgPSAoYnlUeXBlLmhhc093blByb3BlcnR5KHR5cGUpID8gYnlUeXBlW3R5
cGVdIDogbnVsbCk7CisgICAgICBpZiAoY29uc3RydWN0b3IgJiYgbWF5YmVUcnVzdGVkIGluc3Rh
bmNlb2YgY29uc3RydWN0b3IpIHsKKyAgICAgICAgcmV0dXJuIG1heWJlVHJ1c3RlZC4kJHVud3Jh
cFRydXN0ZWRWYWx1ZSgpOworICAgICAgfQorICAgICAgLy8gSWYgd2UgZ2V0IGhlcmUsIHRoZW4g
d2UgbWF5IG9ubHkgdGFrZSBvbmUgb2YgdHdvIGFjdGlvbnMuCisgICAgICAvLyAxLiBzYW5pdGl6
ZSB0aGUgdmFsdWUgZm9yIHRoZSByZXF1ZXN0ZWQgdHlwZSwgb3IKKyAgICAgIC8vIDIuIHRocm93
IGFuIGV4Y2VwdGlvbi4KKyAgICAgIGlmICh0eXBlID09PSBTQ0VfQ09OVEVYVFMuUkVTT1VSQ0Vf
VVJMKSB7CisgICAgICAgIGlmIChpc1Jlc291cmNlVXJsQWxsb3dlZEJ5UG9saWN5KG1heWJlVHJ1
c3RlZCkpIHsKKyAgICAgICAgICByZXR1cm4gbWF5YmVUcnVzdGVkOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgIHRocm93ICRzY2VNaW5FcnIoJ2luc2VjdXJsJywKKyAgICAgICAgICAgICAg
J0Jsb2NrZWQgbG9hZGluZyByZXNvdXJjZSBmcm9tIHVybCBub3QgYWxsb3dlZCBieSAkc2NlRGVs
ZWdhdGUgcG9saWN5LiAgVVJMOiB7MH0nLAorICAgICAgICAgICAgICBtYXliZVRydXN0ZWQudG9T
dHJpbmcoKSk7CisgICAgICAgIH0KKyAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gU0NFX0NPTlRF
WFRTLkhUTUwpIHsKKyAgICAgICAgcmV0dXJuIGh0bWxTYW5pdGl6ZXIobWF5YmVUcnVzdGVkKTsK
KyAgICAgIH0KKyAgICAgIHRocm93ICRzY2VNaW5FcnIoJ3Vuc2FmZScsICdBdHRlbXB0aW5nIHRv
IHVzZSBhbiB1bnNhZmUgdmFsdWUgaW4gYSBzYWZlIGNvbnRleHQuJyk7CisgICAgfQorCisgICAg
cmV0dXJuIHsgdHJ1c3RBczogdHJ1c3RBcywKKyAgICAgICAgICAgICBnZXRUcnVzdGVkOiBnZXRU
cnVzdGVkLAorICAgICAgICAgICAgIHZhbHVlT2Y6IHZhbHVlT2YgfTsKKyAgfV07Cit9CisKKwor
LyoqCisgKiBAbmdkb2MgcHJvdmlkZXIKKyAqIEBuYW1lICRzY2VQcm92aWRlcgorICogQGRlc2Ny
aXB0aW9uCisgKgorICogVGhlICRzY2VQcm92aWRlciBwcm92aWRlciBhbGxvd3MgZGV2ZWxvcGVy
cyB0byBjb25maWd1cmUgdGhlIHtAbGluayBuZy4kc2NlICRzY2V9IHNlcnZpY2UuCisgKiAtICAg
ZW5hYmxlL2Rpc2FibGUgU3RyaWN0IENvbnRleHR1YWwgRXNjYXBpbmcgKFNDRSkgaW4gYSBtb2R1
bGUKKyAqIC0gICBvdmVycmlkZSB0aGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiB3aXRoIGEgY3Vz
dG9tIGRlbGVnYXRlCisgKgorICogUmVhZCBtb3JlIGFib3V0IHtAbGluayBuZy4kc2NlIFN0cmlj
dCBDb250ZXh0dWFsIEVzY2FwaW5nIChTQ0UpfS4KKyAqLworCisvKiBqc2hpbnQgbWF4bGVuOiBm
YWxzZSovCisKKy8qKgorICogQG5nZG9jIHNlcnZpY2UKKyAqIEBuYW1lICRzY2UKKyAqIEBraW5k
IGZ1bmN0aW9uCisgKgorICogQGRlc2NyaXB0aW9uCisgKgorICogYCRzY2VgIGlzIGEgc2Vydmlj
ZSB0aGF0IHByb3ZpZGVzIFN0cmljdCBDb250ZXh0dWFsIEVzY2FwaW5nIHNlcnZpY2VzIHRvIEFu
Z3VsYXJKUy4KKyAqCisgKiAjIFN0cmljdCBDb250ZXh0dWFsIEVzY2FwaW5nCisgKgorICogU3Ry
aWN0IENvbnRleHR1YWwgRXNjYXBpbmcgKFNDRSkgaXMgYSBtb2RlIGluIHdoaWNoIEFuZ3VsYXJK
UyByZXF1aXJlcyBiaW5kaW5ncyBpbiBjZXJ0YWluCisgKiBjb250ZXh0cyB0byByZXN1bHQgaW4g
YSB2YWx1ZSB0aGF0IGlzIG1hcmtlZCBhcyBzYWZlIHRvIHVzZSBmb3IgdGhhdCBjb250ZXh0LiAg
T25lIGV4YW1wbGUgb2YKKyAqIHN1Y2ggYSBjb250ZXh0IGlzIGJpbmRpbmcgYXJiaXRyYXJ5IGh0
bWwgY29udHJvbGxlZCBieSB0aGUgdXNlciB2aWEgYG5nLWJpbmQtaHRtbGAuICBXZSByZWZlcgor
ICogdG8gdGhlc2UgY29udGV4dHMgYXMgcHJpdmlsZWdlZCBvciBTQ0UgY29udGV4dHMuCisgKgor
ICogQXMgb2YgdmVyc2lvbiAxLjIsIEFuZ3VsYXIgc2hpcHMgd2l0aCBTQ0UgZW5hYmxlZCBieSBk
ZWZhdWx0LgorICoKKyAqIE5vdGU6ICBXaGVuIGVuYWJsZWQgKHRoZSBkZWZhdWx0KSwgSUU8MTEg
aW4gcXVpcmtzIG1vZGUgaXMgbm90IHN1cHBvcnRlZC4gIEluIHRoaXMgbW9kZSwgSUU8MTEgYWxs
b3cKKyAqIG9uZSB0byBleGVjdXRlIGFyYml0cmFyeSBqYXZhc2NyaXB0IGJ5IHRoZSB1c2Ugb2Yg
dGhlIGV4cHJlc3Npb24oKSBzeW50YXguICBSZWZlcgorICogPGh0dHA6Ly9ibG9ncy5tc2RuLmNv
bS9iL2llL2FyY2hpdmUvMjAwOC8xMC8xNi9lbmRpbmctZXhwcmVzc2lvbnMuYXNweD4gdG8gbGVh
cm4gbW9yZSBhYm91dCB0aGVtLgorICogWW91IGNhbiBlbnN1cmUgeW91ciBkb2N1bWVudCBpcyBp
biBzdGFuZGFyZHMgbW9kZSBhbmQgbm90IHF1aXJrcyBtb2RlIGJ5IGFkZGluZyBgPCFkb2N0eXBl
IGh0bWw+YAorICogdG8gdGhlIHRvcCBvZiB5b3VyIEhUTUwgZG9jdW1lbnQuCisgKgorICogU0NF
IGFzc2lzdHMgaW4gd3JpdGluZyBjb2RlIGluIHdheSB0aGF0IChhKSBpcyBzZWN1cmUgYnkgZGVm
YXVsdCBhbmQgKGIpIG1ha2VzIGF1ZGl0aW5nIGZvcgorICogc2VjdXJpdHkgdnVsbmVyYWJpbGl0
aWVzIHN1Y2ggYXMgWFNTLCBjbGlja2phY2tpbmcsIGV0Yy4gYSBsb3QgZWFzaWVyLgorICoKKyAq
IEhlcmUncyBhbiBleGFtcGxlIG9mIGEgYmluZGluZyBpbiBhIHByaXZpbGVnZWQgY29udGV4dDoK
KyAqCisgKiBgYGAKKyAqIDxpbnB1dCBuZy1tb2RlbD0idXNlckh0bWwiIGFyaWEtbGFiZWw9IlVz
ZXIgaW5wdXQiPgorICogPGRpdiBuZy1iaW5kLWh0bWw9InVzZXJIdG1sIj48L2Rpdj4KKyAqIGBg
YAorICoKKyAqIE5vdGljZSB0aGF0IGBuZy1iaW5kLWh0bWxgIGlzIGJvdW5kIHRvIGB1c2VySHRt
bGAgY29udHJvbGxlZCBieSB0aGUgdXNlci4gIFdpdGggU0NFCisgKiBkaXNhYmxlZCwgdGhpcyBh
cHBsaWNhdGlvbiBhbGxvd3MgdGhlIHVzZXIgdG8gcmVuZGVyIGFyYml0cmFyeSBIVE1MIGludG8g
dGhlIERJVi4KKyAqIEluIGEgbW9yZSByZWFsaXN0aWMgZXhhbXBsZSwgb25lIG1heSBiZSByZW5k
ZXJpbmcgdXNlciBjb21tZW50cywgYmxvZyBhcnRpY2xlcywgZXRjLiB2aWEKKyAqIGJpbmRpbmdz
LiAgKEhUTUwgaXMganVzdCBvbmUgZXhhbXBsZSBvZiBhIGNvbnRleHQgd2hlcmUgcmVuZGVyaW5n
IHVzZXIgY29udHJvbGxlZCBpbnB1dCBjcmVhdGVzCisgKiBzZWN1cml0eSB2dWxuZXJhYmlsaXRp
ZXMuKQorICoKKyAqIEZvciB0aGUgY2FzZSBvZiBIVE1MLCB5b3UgbWlnaHQgdXNlIGEgbGlicmFy
eSwgZWl0aGVyIG9uIHRoZSBjbGllbnQgc2lkZSwgb3Igb24gdGhlIHNlcnZlciBzaWRlLAorICog
dG8gc2FuaXRpemUgdW5zYWZlIEhUTUwgYmVmb3JlIGJpbmRpbmcgdG8gdGhlIHZhbHVlIGFuZCBy
ZW5kZXJpbmcgaXQgaW4gdGhlIGRvY3VtZW50LgorICoKKyAqIEhvdyB3b3VsZCB5b3UgZW5zdXJl
IHRoYXQgZXZlcnkgcGxhY2UgdGhhdCB1c2VkIHRoZXNlIHR5cGVzIG9mIGJpbmRpbmdzIHdhcyBi
b3VuZCB0byBhIHZhbHVlIHRoYXQKKyAqIHdhcyBzYW5pdGl6ZWQgYnkgeW91ciBsaWJyYXJ5IChv
ciByZXR1cm5lZCBhcyBzYWZlIGZvciByZW5kZXJpbmcgYnkgeW91ciBzZXJ2ZXI/KSAgSG93IGNh
biB5b3UKKyAqIGVuc3VyZSB0aGF0IHlvdSBkaWRuJ3QgYWNjaWRlbnRhbGx5IGRlbGV0ZSB0aGUg
bGluZSB0aGF0IHNhbml0aXplZCB0aGUgdmFsdWUsIG9yIHJlbmFtZWQgc29tZQorICogcHJvcGVy
dGllcy9maWVsZHMgYW5kIGZvcmdvdCB0byB1cGRhdGUgdGhlIGJpbmRpbmcgdG8gdGhlIHNhbml0
aXplZCB2YWx1ZT8KKyAqCisgKiBUbyBiZSBzZWN1cmUgYnkgZGVmYXVsdCwgeW91IHdhbnQgdG8g
ZW5zdXJlIHRoYXQgYW55IHN1Y2ggYmluZGluZ3MgYXJlIGRpc2FsbG93ZWQgdW5sZXNzIHlvdSBj
YW4KKyAqIGRldGVybWluZSB0aGF0IHNvbWV0aGluZyBleHBsaWNpdGx5IHNheXMgaXQncyBzYWZl
IHRvIHVzZSBhIHZhbHVlIGZvciBiaW5kaW5nIGluIHRoYXQKKyAqIGNvbnRleHQuICBZb3UgY2Fu
IHRoZW4gYXVkaXQgeW91ciBjb2RlIChhIHNpbXBsZSBncmVwIHdvdWxkIGRvKSB0byBlbnN1cmUg
dGhhdCB0aGlzIGlzIG9ubHkgZG9uZQorICogZm9yIHRob3NlIHZhbHVlcyB0aGF0IHlvdSBjYW4g
ZWFzaWx5IHRlbGwgYXJlIHNhZmUgLSBiZWNhdXNlIHRoZXkgd2VyZSByZWNlaXZlZCBmcm9tIHlv
dXIgc2VydmVyLAorICogc2FuaXRpemVkIGJ5IHlvdXIgbGlicmFyeSwgZXRjLiAgWW91IGNhbiBv
cmdhbml6ZSB5b3VyIGNvZGViYXNlIHRvIGhlbHAgd2l0aCB0aGlzIC0gcGVyaGFwcworICogYWxs
b3dpbmcgb25seSB0aGUgZmlsZXMgaW4gYSBzcGVjaWZpYyBkaXJlY3RvcnkgdG8gZG8gdGhpcy4g
IEVuc3VyaW5nIHRoYXQgdGhlIGludGVybmFsIEFQSQorICogZXhwb3NlZCBieSB0aGF0IGNvZGUg
ZG9lc24ndCBtYXJrdXAgYXJiaXRyYXJ5IHZhbHVlcyBhcyBzYWZlIHRoZW4gYmVjb21lcyBhIG1v
cmUgbWFuYWdlYWJsZSB0YXNrLgorICoKKyAqIEluIHRoZSBjYXNlIG9mIEFuZ3VsYXJKUycgU0NF
IHNlcnZpY2UsIG9uZSB1c2VzIHtAbGluayBuZy4kc2NlI3RydXN0QXMgJHNjZS50cnVzdEFzfQor
ICogKGFuZCBzaG9ydGhhbmQgbWV0aG9kcyBzdWNoIGFzIHtAbGluayBuZy4kc2NlI3RydXN0QXNI
dG1sICRzY2UudHJ1c3RBc0h0bWx9LCBldGMuKSB0bworICogb2J0YWluIHZhbHVlcyB0aGF0IHdp
bGwgYmUgYWNjZXB0ZWQgYnkgU0NFIC8gcHJpdmlsZWdlZCBjb250ZXh0cy4KKyAqCisgKgorICog
IyMgSG93IGRvZXMgaXQgd29yaz8KKyAqCisgKiBJbiBwcml2aWxlZ2VkIGNvbnRleHRzLCBkaXJl
Y3RpdmVzIGFuZCBjb2RlIHdpbGwgYmluZCB0byB0aGUgcmVzdWx0IG9mIHtAbGluayBuZy4kc2Nl
I2dldFRydXN0ZWQKKyAqICRzY2UuZ2V0VHJ1c3RlZChjb250ZXh0LCB2YWx1ZSl9IHJhdGhlciB0
aGFuIHRvIHRoZSB2YWx1ZSBkaXJlY3RseS4gIERpcmVjdGl2ZXMgdXNlIHtAbGluaworICogbmcu
JHNjZSNwYXJzZUFzICRzY2UucGFyc2VBc30gcmF0aGVyIHRoYW4gYCRwYXJzZWAgdG8gd2F0Y2gg
YXR0cmlidXRlIGJpbmRpbmdzLCB3aGljaCBwZXJmb3JtcyB0aGUKKyAqIHtAbGluayBuZy4kc2Nl
I2dldFRydXN0ZWQgJHNjZS5nZXRUcnVzdGVkfSBiZWhpbmQgdGhlIHNjZW5lcyBvbiBub24tY29u
c3RhbnQgbGl0ZXJhbHMuCisgKgorICogQXMgYW4gZXhhbXBsZSwge0BsaW5rIG5nLmRpcmVjdGl2
ZTpuZ0JpbmRIdG1sIG5nQmluZEh0bWx9IHVzZXMge0BsaW5rCisgKiBuZy4kc2NlI3BhcnNlQXNI
dG1sICRzY2UucGFyc2VBc0h0bWwoYmluZGluZyBleHByZXNzaW9uKX0uICBIZXJlJ3MgdGhlIGFj
dHVhbCBjb2RlIChzbGlnaHRseQorICogc2ltcGxpZmllZCk6CisgKgorICogYGBgCisgKiB2YXIg
bmdCaW5kSHRtbERpcmVjdGl2ZSA9IFsnJHNjZScsIGZ1bmN0aW9uKCRzY2UpIHsKKyAqICAgcmV0
dXJuIGZ1bmN0aW9uKHNjb3BlLCBlbGVtZW50LCBhdHRyKSB7CisgKiAgICAgc2NvcGUuJHdhdGNo
KCRzY2UucGFyc2VBc0h0bWwoYXR0ci5uZ0JpbmRIdG1sKSwgZnVuY3Rpb24odmFsdWUpIHsKKyAq
ICAgICAgIGVsZW1lbnQuaHRtbCh2YWx1ZSB8fCAnJyk7CisgKiAgICAgfSk7CisgKiAgIH07Cisg
KiB9XTsKKyAqIGBgYAorICoKKyAqICMjIEltcGFjdCBvbiBsb2FkaW5nIHRlbXBsYXRlcworICoK
KyAqIFRoaXMgYXBwbGllcyBib3RoIHRvIHRoZSB7QGxpbmsgbmcuZGlyZWN0aXZlOm5nSW5jbHVk
ZSBgbmctaW5jbHVkZWB9IGRpcmVjdGl2ZSBhcyB3ZWxsIGFzCisgKiBgdGVtcGxhdGVVcmxgJ3Mg
c3BlY2lmaWVkIGJ5IHtAbGluayBndWlkZS9kaXJlY3RpdmUgZGlyZWN0aXZlc30uCisgKgorICog
QnkgZGVmYXVsdCwgQW5ndWxhciBvbmx5IGxvYWRzIHRlbXBsYXRlcyBmcm9tIHRoZSBzYW1lIGRv
bWFpbiBhbmQgcHJvdG9jb2wgYXMgdGhlIGFwcGxpY2F0aW9uCisgKiBkb2N1bWVudC4gIFRoaXMg
aXMgZG9uZSBieSBjYWxsaW5nIHtAbGluayBuZy4kc2NlI2dldFRydXN0ZWRSZXNvdXJjZVVybAor
ICogJHNjZS5nZXRUcnVzdGVkUmVzb3VyY2VVcmx9IG9uIHRoZSB0ZW1wbGF0ZSBVUkwuICBUbyBs
b2FkIHRlbXBsYXRlcyBmcm9tIG90aGVyIGRvbWFpbnMgYW5kL29yCisgKiBwcm90b2NvbHMsIHlv
dSBtYXkgZWl0aGVyIGVpdGhlciB7QGxpbmsgbmcuJHNjZURlbGVnYXRlUHJvdmlkZXIjcmVzb3Vy
Y2VVcmxXaGl0ZWxpc3Qgd2hpdGVsaXN0CisgKiB0aGVtfSBvciB7QGxpbmsgbmcuJHNjZSN0cnVz
dEFzUmVzb3VyY2VVcmwgd3JhcCBpdH0gaW50byBhIHRydXN0ZWQgdmFsdWUuCisgKgorICogKlBs
ZWFzZSBub3RlKjoKKyAqIFRoZSBicm93c2VyJ3MKKyAqIFtTYW1lIE9yaWdpbiBQb2xpY3ldKGh0
dHBzOi8vY29kZS5nb29nbGUuY29tL3AvYnJvd3NlcnNlYy93aWtpL1BhcnQyI1NhbWUtb3JpZ2lu
X3BvbGljeV9mb3JfWE1MSHR0cFJlcXVlc3QpCisgKiBhbmQgW0Nyb3NzLU9yaWdpbiBSZXNvdXJj
ZSBTaGFyaW5nIChDT1JTKV0oaHR0cDovL3d3dy53My5vcmcvVFIvY29ycy8pCisgKiBwb2xpY3kg
YXBwbHkgaW4gYWRkaXRpb24gdG8gdGhpcyBhbmQgbWF5IGZ1cnRoZXIgcmVzdHJpY3Qgd2hldGhl
ciB0aGUgdGVtcGxhdGUgaXMgc3VjY2Vzc2Z1bGx5CisgKiBsb2FkZWQuICBUaGlzIG1lYW5zIHRo
YXQgd2l0aG91dCB0aGUgcmlnaHQgQ09SUyBwb2xpY3ksIGxvYWRpbmcgdGVtcGxhdGVzIGZyb20g
YSBkaWZmZXJlbnQgZG9tYWluCisgKiB3b24ndCB3b3JrIG9uIGFsbCBicm93c2Vycy4gIEFsc28s
IGxvYWRpbmcgdGVtcGxhdGVzIGZyb20gYGZpbGU6Ly9gIFVSTCBkb2VzIG5vdCB3b3JrIG9uIHNv
bWUKKyAqIGJyb3dzZXJzLgorICoKKyAqICMjIFRoaXMgZmVlbHMgbGlrZSB0b28gbXVjaCBvdmVy
aGVhZAorICoKKyAqIEl0J3MgaW1wb3J0YW50IHRvIHJlbWVtYmVyIHRoYXQgU0NFIG9ubHkgYXBw
bGllcyB0byBpbnRlcnBvbGF0aW9uIGV4cHJlc3Npb25zLgorICoKKyAqIElmIHlvdXIgZXhwcmVz
c2lvbnMgYXJlIGNvbnN0YW50IGxpdGVyYWxzLCB0aGV5J3JlIGF1dG9tYXRpY2FsbHkgdHJ1c3Rl
ZCBhbmQgeW91IGRvbid0IG5lZWQgdG8KKyAqIGNhbGwgYCRzY2UudHJ1c3RBc2Agb24gdGhlbSAo
cmVtZW1iZXIgdG8gaW5jbHVkZSB0aGUgYG5nU2FuaXRpemVgIG1vZHVsZSkgKGUuZy4KKyAqIGA8
ZGl2IG5nLWJpbmQtaHRtbD0iJzxiPmltcGxpY2l0bHkgdHJ1c3RlZDwvYj4nIj48L2Rpdj5gKSBq
dXN0IHdvcmtzLgorICoKKyAqIEFkZGl0aW9uYWxseSwgYGFbaHJlZl1gIGFuZCBgaW1nW3NyY11g
IGF1dG9tYXRpY2FsbHkgc2FuaXRpemUgdGhlaXIgVVJMcyBhbmQgZG8gbm90IHBhc3MgdGhlbQor
ICogdGhyb3VnaCB7QGxpbmsgbmcuJHNjZSNnZXRUcnVzdGVkICRzY2UuZ2V0VHJ1c3RlZH0uICBT
Q0UgZG9lc24ndCBwbGF5IGEgcm9sZSBoZXJlLgorICoKKyAqIFRoZSBpbmNsdWRlZCB7QGxpbmsg
bmcuJHNjZURlbGVnYXRlICRzY2VEZWxlZ2F0ZX0gY29tZXMgd2l0aCBzYW5lIGRlZmF1bHRzIHRv
IGFsbG93IHlvdSB0byBsb2FkCisgKiB0ZW1wbGF0ZXMgaW4gYG5nLWluY2x1ZGVgIGZyb20geW91
ciBhcHBsaWNhdGlvbidzIGRvbWFpbiB3aXRob3V0IGhhdmluZyB0byBldmVuIGtub3cgYWJvdXQg
U0NFLgorICogSXQgYmxvY2tzIGxvYWRpbmcgdGVtcGxhdGVzIGZyb20gb3RoZXIgZG9tYWlucyBv
ciBsb2FkaW5nIHRlbXBsYXRlcyBvdmVyIGh0dHAgZnJvbSBhbiBodHRwcworICogc2VydmVkIGRv
Y3VtZW50LiAgWW91IGNhbiBjaGFuZ2UgdGhlc2UgYnkgc2V0dGluZyB5b3VyIG93biBjdXN0b20g
e0BsaW5rCisgKiBuZy4kc2NlRGVsZWdhdGVQcm92aWRlciNyZXNvdXJjZVVybFdoaXRlbGlzdCB3
aGl0ZWxpc3RzfSBhbmQge0BsaW5rCisgKiBuZy4kc2NlRGVsZWdhdGVQcm92aWRlciNyZXNvdXJj
ZVVybEJsYWNrbGlzdCBibGFja2xpc3RzfSBmb3IgbWF0Y2hpbmcgc3VjaCBVUkxzLgorICoKKyAq
IFRoaXMgc2lnbmlmaWNhbnRseSByZWR1Y2VzIHRoZSBvdmVyaGVhZC4gIEl0IGlzIGZhciBlYXNp
ZXIgdG8gcGF5IHRoZSBzbWFsbCBvdmVyaGVhZCBhbmQgaGF2ZSBhbgorICogYXBwbGljYXRpb24g
dGhhdCdzIHNlY3VyZSBhbmQgY2FuIGJlIGF1ZGl0ZWQgdG8gdmVyaWZ5IHRoYXQgd2l0aCBtdWNo
IG1vcmUgZWFzZSB0aGFuIGJvbHRpbmcKKyAqIHNlY3VyaXR5IG9udG8gYW4gYXBwbGljYXRpb24g
bGF0ZXIuCisgKgorICogPGEgbmFtZT0iY29udGV4dHMiPjwvYT4KKyAqICMjIFdoYXQgdHJ1c3Rl
ZCBjb250ZXh0IHR5cGVzIGFyZSBzdXBwb3J0ZWQ/CisgKgorICogfCBDb250ZXh0ICAgICAgICAg
ICAgIHwgTm90ZXMgICAgICAgICAgfAorICogfC0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0t
LS0tLS0tLS0tfAorICogfCBgJHNjZS5IVE1MYCAgICAgICAgIHwgRm9yIEhUTUwgdGhhdCdzIHNh
ZmUgdG8gc291cmNlIGludG8gdGhlIGFwcGxpY2F0aW9uLiAgVGhlIHtAbGluayBuZy5kaXJlY3Rp
dmU6bmdCaW5kSHRtbCBuZ0JpbmRIdG1sfSBkaXJlY3RpdmUgdXNlcyB0aGlzIGNvbnRleHQgZm9y
IGJpbmRpbmdzLiBJZiBhbiB1bnNhZmUgdmFsdWUgaXMgZW5jb3VudGVyZWQgYW5kIHRoZSB7QGxp
bmsgbmdTYW5pdGl6ZSAkc2FuaXRpemV9IG1vZHVsZSBpcyBwcmVzZW50IHRoaXMgd2lsbCBzYW5p
dGl6ZSB0aGUgdmFsdWUgaW5zdGVhZCBvZiB0aHJvd2luZyBhbiBlcnJvci4gfAorICogfCBgJHNj
ZS5DU1NgICAgICAgICAgIHwgRm9yIENTUyB0aGF0J3Mgc2FmZSB0byBzb3VyY2UgaW50byB0aGUg
YXBwbGljYXRpb24uICBDdXJyZW50bHkgdW51c2VkLiAgRmVlbCBmcmVlIHRvIHVzZSBpdCBpbiB5
b3VyIG93biBkaXJlY3RpdmVzLiB8CisgKiB8IGAkc2NlLlVSTGAgICAgICAgICAgfCBGb3IgVVJM
cyB0aGF0IGFyZSBzYWZlIHRvIGZvbGxvdyBhcyBsaW5rcy4gIEN1cnJlbnRseSB1bnVzZWQgKGA8
YSBocmVmPWAgYW5kIGA8aW1nIHNyYz1gIHNhbml0aXplIHRoZWlyIHVybHMgYW5kIGRvbid0IGNv
bnN0aXR1dGUgYW4gU0NFIGNvbnRleHQuIHwKKyAqIHwgYCRzY2UuUkVTT1VSQ0VfVVJMYCB8IEZv
ciBVUkxzIHRoYXQgYXJlIG5vdCBvbmx5IHNhZmUgdG8gZm9sbG93IGFzIGxpbmtzLCBidXQgd2hv
c2UgY29udGVudHMgYXJlIGFsc28gc2FmZSB0byBpbmNsdWRlIGluIHlvdXIgYXBwbGljYXRpb24u
ICBFeGFtcGxlcyBpbmNsdWRlIGBuZy1pbmNsdWRlYCwgYHNyY2AgLyBgbmdTcmNgIGJpbmRpbmdz
IGZvciB0YWdzIG90aGVyIHRoYW4gYElNR2AgKGUuZy4gYElGUkFNRWAsIGBPQkpFQ1RgLCBldGMu
KSAgPGJyPjxicj5Ob3RlIHRoYXQgYCRzY2UuUkVTT1VSQ0VfVVJMYCBtYWtlcyBhIHN0cm9uZ2Vy
IHN0YXRlbWVudCBhYm91dCB0aGUgVVJMIHRoYW4gYCRzY2UuVVJMYCBkb2VzIGFuZCB0aGVyZWZv
cmUgY29udGV4dHMgcmVxdWlyaW5nIHZhbHVlcyB0cnVzdGVkIGZvciBgJHNjZS5SRVNPVVJDRV9V
UkxgIGNhbiBiZSB1c2VkIGFueXdoZXJlIHRoYXQgdmFsdWVzIHRydXN0ZWQgZm9yIGAkc2NlLlVS
TGAgYXJlIHJlcXVpcmVkLiB8CisgKiB8IGAkc2NlLkpTYCAgICAgICAgICAgfCBGb3IgSmF2YVNj
cmlwdCB0aGF0IGlzIHNhZmUgdG8gZXhlY3V0ZSBpbiB5b3VyIGFwcGxpY2F0aW9uJ3MgY29udGV4
dC4gIEN1cnJlbnRseSB1bnVzZWQuICBGZWVsIGZyZWUgdG8gdXNlIGl0IGluIHlvdXIgb3duIGRp
cmVjdGl2ZXMuIHwKKyAqCisgKiAjIyBGb3JtYXQgb2YgaXRlbXMgaW4ge0BsaW5rIG5nLiRzY2VE
ZWxlZ2F0ZVByb3ZpZGVyI3Jlc291cmNlVXJsV2hpdGVsaXN0IHJlc291cmNlVXJsV2hpdGVsaXN0
fS97QGxpbmsgbmcuJHNjZURlbGVnYXRlUHJvdmlkZXIjcmVzb3VyY2VVcmxCbGFja2xpc3QgQmxh
Y2tsaXN0fSA8YSBuYW1lPSJyZXNvdXJjZVVybFBhdHRlcm5JdGVtIj48L2E+CisgKgorICogIEVh
Y2ggZWxlbWVudCBpbiB0aGVzZSBhcnJheXMgbXVzdCBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZzoK
KyAqCisgKiAgLSAqKidzZWxmJyoqCisgKiAgICAtIFRoZSBzcGVjaWFsICoqc3RyaW5nKiosIGAn
c2VsZidgLCBjYW4gYmUgdXNlZCB0byBtYXRjaCBhZ2FpbnN0IGFsbCBVUkxzIG9mIHRoZSAqKnNh
bWUKKyAqICAgICAgZG9tYWluKiogYXMgdGhlIGFwcGxpY2F0aW9uIGRvY3VtZW50IHVzaW5nIHRo
ZSAqKnNhbWUgcHJvdG9jb2wqKi4KKyAqICAtICoqU3RyaW5nKiogKGV4Y2VwdCB0aGUgc3BlY2lh
bCB2YWx1ZSBgJ3NlbGYnYCkKKyAqICAgIC0gVGhlIHN0cmluZyBpcyBtYXRjaGVkIGFnYWluc3Qg
dGhlIGZ1bGwgKm5vcm1hbGl6ZWQgLyBhYnNvbHV0ZSBVUkwqIG9mIHRoZSByZXNvdXJjZQorICog
ICAgICBiZWluZyB0ZXN0ZWQgKHN1YnN0cmluZyBtYXRjaGVzIGFyZSBub3QgZ29vZCBlbm91Z2gu
KQorICogICAgLSBUaGVyZSBhcmUgZXhhY3RseSAqKnR3byB3aWxkY2FyZCBzZXF1ZW5jZXMqKiAt
IGAqYCBhbmQgYCoqYC4gIEFsbCBvdGhlciBjaGFyYWN0ZXJzCisgKiAgICAgIG1hdGNoIHRoZW1z
ZWx2ZXMuCisgKiAgICAtIGAqYDogbWF0Y2hlcyB6ZXJvIG9yIG1vcmUgb2NjdXJyZW5jZXMgb2Yg
YW55IGNoYXJhY3RlciBvdGhlciB0aGFuIG9uZSBvZiB0aGUgZm9sbG93aW5nIDYKKyAqICAgICAg
Y2hhcmFjdGVyczogJ2A6YCcsICdgL2AnLCAnYC5gJywgJ2A/YCcsICdgJmAnIGFuZCAnOycuICBJ
dCdzIGEgdXNlZnVsIHdpbGRjYXJkIGZvciB1c2UKKyAqICAgICAgaW4gYSB3aGl0ZWxpc3QuCisg
KiAgICAtIGAqKmA6IG1hdGNoZXMgemVybyBvciBtb3JlIG9jY3VycmVuY2VzIG9mICphbnkqIGNo
YXJhY3Rlci4gIEFzIHN1Y2gsIGl0J3Mgbm90CisgKiAgICAgIG5vdCBhcHByb3ByaWF0ZSB0byB1
c2UgaW4gZm9yIGEgc2NoZW1lLCBkb21haW4sIGV0Yy4gYXMgaXQgd291bGQgbWF0Y2ggdG9vIG11
Y2guICAoZS5nLgorICogICAgICBodHRwOi8vKiouZXhhbXBsZS5jb20vIHdvdWxkIG1hdGNoIGh0
dHA6Ly9ldmlsLmNvbS8/aWdub3JlPS5leGFtcGxlLmNvbS8gYW5kIHRoYXQgbWlnaHQKKyAqICAg
ICAgbm90IGhhdmUgYmVlbiB0aGUgaW50ZW50aW9uLikgIEl0cyB1c2FnZSBhdCB0aGUgdmVyeSBl
bmQgb2YgdGhlIHBhdGggaXMgb2suICAoZS5nLgorICogICAgICBodHRwOi8vZm9vLmV4YW1wbGUu
Y29tL3RlbXBsYXRlcy8qKikuCisgKiAgLSAqKlJlZ0V4cCoqICgqc2VlIGNhdmVhdCBiZWxvdyop
CisgKiAgICAtICpDYXZlYXQqOiAgV2hpbGUgcmVndWxhciBleHByZXNzaW9ucyBhcmUgcG93ZXJm
dWwgYW5kIG9mZmVyIGdyZWF0IGZsZXhpYmlsaXR5LCAgdGhlaXIgc3ludGF4CisgKiAgICAgIChh
bmQgYWxsIHRoZSBpbmV2aXRhYmxlIGVzY2FwaW5nKSBtYWtlcyB0aGVtICpoYXJkZXIgdG8gbWFp
bnRhaW4qLiAgSXQncyBlYXN5IHRvCisgKiAgICAgIGFjY2lkZW50YWxseSBpbnRyb2R1Y2UgYSBi
dWcgd2hlbiBvbmUgdXBkYXRlcyBhIGNvbXBsZXggZXhwcmVzc2lvbiAoaW1obywgYWxsIHJlZ2V4
ZXMgc2hvdWxkCisgKiAgICAgIGhhdmUgZ29vZCB0ZXN0IGNvdmVyYWdlLikuICBGb3IgaW5zdGFu
Y2UsIHRoZSB1c2Ugb2YgYC5gIGluIHRoZSByZWdleCBpcyBjb3JyZWN0IG9ubHkgaW4gYQorICog
ICAgICBzbWFsbCBudW1iZXIgb2YgY2FzZXMuICBBIGAuYCBjaGFyYWN0ZXIgaW4gdGhlIHJlZ2V4
IHVzZWQgd2hlbiBtYXRjaGluZyB0aGUgc2NoZW1lIG9yIGEKKyAqICAgICAgc3ViZG9tYWluIGNv
dWxkIGJlIG1hdGNoZWQgYWdhaW5zdCBhIGA6YCBvciBsaXRlcmFsIGAuYCB0aGF0IHdhcyBsaWtl
bHkgbm90IGludGVuZGVkLiAgIEl0CisgKiAgICAgIGlzIGhpZ2hseSByZWNvbW1lbmRlZCB0byB1
c2UgdGhlIHN0cmluZyBwYXR0ZXJucyBhbmQgb25seSBmYWxsIGJhY2sgdG8gcmVndWxhciBleHBy
ZXNzaW9ucworICogICAgICBpZiB0aGV5IGFzIGEgbGFzdCByZXNvcnQuCisgKiAgICAtIFRoZSBy
ZWd1bGFyIGV4cHJlc3Npb24gbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBSZWdFeHAgKGkuZS4gbm90
IGEgc3RyaW5nLikgIEl0IGlzCisgKiAgICAgIG1hdGNoZWQgYWdhaW5zdCB0aGUgKiplbnRpcmUq
KiAqbm9ybWFsaXplZCAvIGFic29sdXRlIFVSTCogb2YgdGhlIHJlc291cmNlIGJlaW5nIHRlc3Rl
ZAorICogICAgICAoZXZlbiB3aGVuIHRoZSBSZWdFeHAgZGlkIG5vdCBoYXZlIHRoZSBgXmAgYW5k
IGAkYCBjb2Rlcy4pICBJbiBhZGRpdGlvbiwgYW55IGZsYWdzCisgKiAgICAgIHByZXNlbnQgb24g
dGhlIFJlZ0V4cCAoc3VjaCBhcyBtdWx0aWxpbmUsIGdsb2JhbCwgaWdub3JlQ2FzZSkgYXJlIGln
bm9yZWQuCisgKiAgICAtIElmIHlvdSBhcmUgZ2VuZXJhdGluZyB5b3VyIEphdmFTY3JpcHQgZnJv
bSBzb21lIG90aGVyIHRlbXBsYXRpbmcgZW5naW5lIChub3QKKyAqICAgICAgcmVjb21tZW5kZWQs
IGUuZy4gaW4gaXNzdWUgWyM0MDA2XShodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFy
LmpzL2lzc3Vlcy80MDA2KSksCisgKiAgICAgIHJlbWVtYmVyIHRvIGVzY2FwZSB5b3VyIHJlZ3Vs
YXIgZXhwcmVzc2lvbiAoYW5kIGJlIGF3YXJlIHRoYXQgeW91IG1pZ2h0IG5lZWQgbW9yZSB0aGFu
CisgKiAgICAgIG9uZSBsZXZlbCBvZiBlc2NhcGluZyBkZXBlbmRpbmcgb24geW91ciB0ZW1wbGF0
aW5nIGVuZ2luZSBhbmQgdGhlIHdheSB5b3UgaW50ZXJwb2xhdGVkCisgKiAgICAgIHRoZSB2YWx1
ZS4pICBEbyBtYWtlIHVzZSBvZiB5b3VyIHBsYXRmb3JtJ3MgZXNjYXBpbmcgbWVjaGFuaXNtIGFz
IGl0IG1pZ2h0IGJlIGdvb2QKKyAqICAgICAgZW5vdWdoIGJlZm9yZSBjb2RpbmcgeW91ciBvd24u
ICBlLmcuIFJ1YnkgaGFzCisgKiAgICAgIFtSZWdleHAuZXNjYXBlKHN0cildKGh0dHA6Ly93d3cu
cnVieS1kb2Mub3JnL2NvcmUtMi4wLjAvUmVnZXhwLmh0bWwjbWV0aG9kLWMtZXNjYXBlKQorICog
ICAgICBhbmQgUHl0aG9uIGhhcyBbcmUuZXNjYXBlXShodHRwOi8vZG9jcy5weXRob24ub3JnL2xp
YnJhcnkvcmUuaHRtbCNyZS5lc2NhcGUpLgorICogICAgICBKYXZhc2NyaXB0IGxhY2tzIGEgc2lt
aWxhciBidWlsdCBpbiBmdW5jdGlvbiBmb3IgZXNjYXBpbmcuICBUYWtlIGEgbG9vayBhdCBHb29n
bGUKKyAqICAgICAgQ2xvc3VyZSBsaWJyYXJ5J3MgW2dvb2cuc3RyaW5nLnJlZ0V4cEVzY2FwZShz
KV0oCisgKiAgICAgIGh0dHA6Ly9kb2NzLmNsb3N1cmUtbGlicmFyeS5nb29nbGVjb2RlLmNvbS9n
aXQvY2xvc3VyZV9nb29nX3N0cmluZ19zdHJpbmcuanMuc291cmNlLmh0bWwjbGluZTk2MikuCisg
KgorICogUmVmZXIge0BsaW5rIG5nLiRzY2VEZWxlZ2F0ZVByb3ZpZGVyICRzY2VEZWxlZ2F0ZVBy
b3ZpZGVyfSBmb3IgYW4gZXhhbXBsZS4KKyAqCisgKiAjIyBTaG93IG1lIGFuIGV4YW1wbGUgdXNp
bmcgU0NFLgorICoKKyAqIDxleGFtcGxlIG1vZHVsZT0ibXlTY2VBcHAiIGRlcHM9ImFuZ3VsYXIt
c2FuaXRpemUuanMiPgorICogPGZpbGUgbmFtZT0iaW5kZXguaHRtbCI+CisgKiAgIDxkaXYgbmct
Y29udHJvbGxlcj0iQXBwQ29udHJvbGxlciBhcyBteUN0cmwiPgorICogICAgIDxpIG5nLWJpbmQt
aHRtbD0ibXlDdHJsLmV4cGxpY2l0bHlUcnVzdGVkSHRtbCIgaWQ9ImV4cGxpY2l0bHlUcnVzdGVk
SHRtbCI+PC9pPjxicj48YnI+CisgKiAgICAgPGI+VXNlciBjb21tZW50czwvYj48YnI+CisgKiAg
ICAgQnkgZGVmYXVsdCwgSFRNTCB0aGF0IGlzbid0IGV4cGxpY2l0bHkgdHJ1c3RlZCAoZS5nLiBB
bGljZSdzIGNvbW1lbnQpIGlzIHNhbml0aXplZCB3aGVuCisgKiAgICAgJHNhbml0aXplIGlzIGF2
YWlsYWJsZS4gIElmICRzYW5pdGl6ZSBpc24ndCBhdmFpbGFibGUsIHRoaXMgcmVzdWx0cyBpbiBh
biBlcnJvciBpbnN0ZWFkIG9mIGFuCisgKiAgICAgZXhwbG9pdC4KKyAqICAgICA8ZGl2IGNsYXNz
PSJ3ZWxsIj4KKyAqICAgICAgIDxkaXYgbmctcmVwZWF0PSJ1c2VyQ29tbWVudCBpbiBteUN0cmwu
dXNlckNvbW1lbnRzIj4KKyAqICAgICAgICAgPGI+e3t1c2VyQ29tbWVudC5uYW1lfX08L2I+Ogor
ICogICAgICAgICA8c3BhbiBuZy1iaW5kLWh0bWw9InVzZXJDb21tZW50Lmh0bWxDb21tZW50IiBj
bGFzcz0iaHRtbENvbW1lbnQiPjwvc3Bhbj4KKyAqICAgICAgICAgPGJyPgorICogICAgICAgPC9k
aXY+CisgKiAgICAgPC9kaXY+CisgKiAgIDwvZGl2PgorICogPC9maWxlPgorICoKKyAqIDxmaWxl
IG5hbWU9InNjcmlwdC5qcyI+CisgKiAgIGFuZ3VsYXIubW9kdWxlKCdteVNjZUFwcCcsIFsnbmdT
YW5pdGl6ZSddKQorICogICAgIC5jb250cm9sbGVyKCdBcHBDb250cm9sbGVyJywgWyckaHR0cCcs
ICckdGVtcGxhdGVDYWNoZScsICckc2NlJywKKyAqICAgICAgIGZ1bmN0aW9uKCRodHRwLCAkdGVt
cGxhdGVDYWNoZSwgJHNjZSkgeworICogICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CisgKiAgICAg
ICAgICRodHRwLmdldCgidGVzdF9kYXRhLmpzb24iLCB7Y2FjaGU6ICR0ZW1wbGF0ZUNhY2hlfSku
c3VjY2VzcyhmdW5jdGlvbih1c2VyQ29tbWVudHMpIHsKKyAqICAgICAgICAgICBzZWxmLnVzZXJD
b21tZW50cyA9IHVzZXJDb21tZW50czsKKyAqICAgICAgICAgfSk7CisgKiAgICAgICAgIHNlbGYu
ZXhwbGljaXRseVRydXN0ZWRIdG1sID0gJHNjZS50cnVzdEFzSHRtbCgKKyAqICAgICAgICAgICAg
ICc8c3BhbiBvbm1vdXNlb3Zlcj0idGhpcy50ZXh0Q29udGVudD0mcXVvdDtFeHBsaWNpdGx5IHRy
dXN0ZWQgSFRNTCBieXBhc3NlcyAnICsKKyAqICAgICAgICAgICAgICdzYW5pdGl6YXRpb24uJnF1
b3Q7Ij5Ib3ZlciBvdmVyIHRoaXMgdGV4dC48L3NwYW4+Jyk7CisgKiAgICAgICB9XSk7CisgKiA8
L2ZpbGU+CisgKgorICogPGZpbGUgbmFtZT0idGVzdF9kYXRhLmpzb24iPgorICogWworICogICB7
ICJuYW1lIjogIkFsaWNlIiwKKyAqICAgICAiaHRtbENvbW1lbnQiOgorICogICAgICAgICAiPHNw
YW4gb25tb3VzZW92ZXI9J3RoaXMudGV4dENvbnRlbnQ9XCJQV04zRCFcIic+SXMgPGk+YW55b25l
PC9pPiByZWFkaW5nIHRoaXM/PC9zcGFuPiIKKyAqICAgfSwKKyAqICAgeyAibmFtZSI6ICJCb2Ii
LAorICogICAgICJodG1sQ29tbWVudCI6ICI8aT5ZZXMhPC9pPiAgQW0gSSB0aGUgb25seSBvdGhl
ciBvbmU/IgorICogICB9CisgKiBdCisgKiA8L2ZpbGU+CisgKgorICogPGZpbGUgbmFtZT0icHJv
dHJhY3Rvci5qcyIgdHlwZT0icHJvdHJhY3RvciI+CisgKiAgIGRlc2NyaWJlKCdTQ0UgZG9jIGRl
bW8nLCBmdW5jdGlvbigpIHsKKyAqICAgICBpdCgnc2hvdWxkIHNhbml0aXplIHVudHJ1c3RlZCB2
YWx1ZXMnLCBmdW5jdGlvbigpIHsKKyAqICAgICAgIGV4cGVjdChlbGVtZW50LmFsbChieS5jc3Mo
Jy5odG1sQ29tbWVudCcpKS5maXJzdCgpLmdldElubmVySHRtbCgpKQorICogICAgICAgICAgIC50
b0JlKCc8c3Bhbj5JcyA8aT5hbnlvbmU8L2k+IHJlYWRpbmcgdGhpcz88L3NwYW4+Jyk7CisgKiAg
ICAgfSk7CisgKgorICogICAgIGl0KCdzaG91bGQgTk9UIHNhbml0aXplIGV4cGxpY2l0bHkgdHJ1
c3RlZCB2YWx1ZXMnLCBmdW5jdGlvbigpIHsKKyAqICAgICAgIGV4cGVjdChlbGVtZW50KGJ5Lmlk
KCdleHBsaWNpdGx5VHJ1c3RlZEh0bWwnKSkuZ2V0SW5uZXJIdG1sKCkpLnRvQmUoCisgKiAgICAg
ICAgICAgJzxzcGFuIG9ubW91c2VvdmVyPSJ0aGlzLnRleHRDb250ZW50PSZxdW90O0V4cGxpY2l0
bHkgdHJ1c3RlZCBIVE1MIGJ5cGFzc2VzICcgKworICogICAgICAgICAgICdzYW5pdGl6YXRpb24u
JnF1b3Q7Ij5Ib3ZlciBvdmVyIHRoaXMgdGV4dC48L3NwYW4+Jyk7CisgKiAgICAgfSk7CisgKiAg
IH0pOworICogPC9maWxlPgorICogPC9leGFtcGxlPgorICoKKyAqCisgKgorICogIyMgQ2FuIEkg
ZGlzYWJsZSBTQ0UgY29tcGxldGVseT8KKyAqCisgKiBZZXMsIHlvdSBjYW4uICBIb3dldmVyLCB0
aGlzIGlzIHN0cm9uZ2x5IGRpc2NvdXJhZ2VkLiAgU0NFIGdpdmVzIHlvdSBhIGxvdCBvZiBzZWN1
cml0eSBiZW5lZml0cworICogZm9yIGxpdHRsZSBjb2Rpbmcgb3ZlcmhlYWQuICBJdCB3aWxsIGJl
IG11Y2ggaGFyZGVyIHRvIHRha2UgYW4gU0NFIGRpc2FibGVkIGFwcGxpY2F0aW9uIGFuZAorICog
ZWl0aGVyIHNlY3VyZSBpdCBvbiB5b3VyIG93biBvciBlbmFibGUgU0NFIGF0IGEgbGF0ZXIgc3Rh
Z2UuICBJdCBtaWdodCBtYWtlIHNlbnNlIHRvIGRpc2FibGUgU0NFCisgKiBmb3IgY2FzZXMgd2hl
cmUgeW91IGhhdmUgYSBsb3Qgb2YgZXhpc3RpbmcgY29kZSB0aGF0IHdhcyB3cml0dGVuIGJlZm9y
ZSBTQ0Ugd2FzIGludHJvZHVjZWQgYW5kCisgKiB5b3UncmUgbWlncmF0aW5nIHRoZW0gYSBtb2R1
bGUgYXQgYSB0aW1lLgorICoKKyAqIFRoYXQgc2FpZCwgaGVyZSdzIGhvdyB5b3UgY2FuIGNvbXBs
ZXRlbHkgZGlzYWJsZSBTQ0U6CisgKgorICogYGBgCisgKiBhbmd1bGFyLm1vZHVsZSgnbXlBcHBX
aXRoU2NlRGlzYWJsZWRteUFwcCcsIFtdKS5jb25maWcoZnVuY3Rpb24oJHNjZVByb3ZpZGVyKSB7
CisgKiAgIC8vIENvbXBsZXRlbHkgZGlzYWJsZSBTQ0UuICBGb3IgZGVtb25zdHJhdGlvbiBwdXJw
b3NlcyBvbmx5IQorICogICAvLyBEbyBub3QgdXNlIGluIG5ldyBwcm9qZWN0cy4KKyAqICAgJHNj
ZVByb3ZpZGVyLmVuYWJsZWQoZmFsc2UpOworICogfSk7CisgKiBgYGAKKyAqCisgKi8KKy8qIGpz
aGludCBtYXhsZW46IDEwMCAqLworCitmdW5jdGlvbiAkU2NlUHJvdmlkZXIoKSB7CisgIHZhciBl
bmFibGVkID0gdHJ1ZTsKKworICAvKioKKyAgICogQG5nZG9jIG1ldGhvZAorICAgKiBAbmFtZSAk
c2NlUHJvdmlkZXIjZW5hYmxlZAorICAgKiBAa2luZCBmdW5jdGlvbgorICAgKgorICAgKiBAcGFy
YW0ge2Jvb2xlYW49fSB2YWx1ZSBJZiBwcm92aWRlZCwgdGhlbiBlbmFibGVzL2Rpc2FibGVzIFND
RS4KKyAgICogQHJldHVybiB7Ym9vbGVhbn0gdHJ1ZSBpZiBTQ0UgaXMgZW5hYmxlZCwgZmFsc2Ug
b3RoZXJ3aXNlLgorICAgKgorICAgKiBAZGVzY3JpcHRpb24KKyAgICogRW5hYmxlcy9kaXNhYmxl
cyBTQ0UgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUuCisgICAqLworICB0aGlzLmVuYWJs
ZWQgPSBmdW5jdGlvbih2YWx1ZSkgeworICAgIGlmIChhcmd1bWVudHMubGVuZ3RoKSB7CisgICAg
ICBlbmFibGVkID0gISF2YWx1ZTsKKyAgICB9CisgICAgcmV0dXJuIGVuYWJsZWQ7CisgIH07CisK
KworICAvKiBEZXNpZ24gbm90ZXMgb24gdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gZm9yIFND
RS4KKyAgICoKKyAgICogVGhlIEFQSSBjb250cmFjdCBmb3IgdGhlIFNDRSBkZWxlZ2F0ZQorICAg
KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAqIFRoZSBTQ0UgZGVs
ZWdhdGUgb2JqZWN0IG11c3QgcHJvdmlkZSB0aGUgZm9sbG93aW5nIDMgbWV0aG9kczoKKyAgICoK
KyAgICogLSB0cnVzdEFzKGNvbnRleHRFbnVtLCB2YWx1ZSkKKyAgICogICAgIFRoaXMgbWV0aG9k
IGlzIHVzZWQgdG8gdGVsbCB0aGUgU0NFIHNlcnZpY2UgdGhhdCB0aGUgcHJvdmlkZWQgdmFsdWUg
aXMgT0sgdG8gdXNlIGluIHRoZQorICAgKiAgICAgY29udGV4dHMgc3BlY2lmaWVkIGJ5IGNvbnRl
eHRFbnVtLiAgSXQgbXVzdCByZXR1cm4gYW4gb2JqZWN0IHRoYXQgd2lsbCBiZSBhY2NlcHRlZCBi
eQorICAgKiAgICAgZ2V0VHJ1c3RlZCgpIGZvciBhIGNvbXBhdGlibGUgY29udGV4dEVudW0gYW5k
IHJldHVybiB0aGlzIHZhbHVlLgorICAgKgorICAgKiAtIHZhbHVlT2YodmFsdWUpCisgICAqICAg
ICBGb3IgdmFsdWVzIHRoYXQgd2VyZSBub3QgcHJvZHVjZWQgYnkgdHJ1c3RBcygpLCByZXR1cm4g
dGhlbSBhcyBpcy4gIEZvciB2YWx1ZXMgdGhhdCB3ZXJlCisgICAqICAgICBwcm9kdWNlZCBieSB0
cnVzdEFzKCksIHJldHVybiB0aGUgY29ycmVzcG9uZGluZyBpbnB1dCB2YWx1ZSB0byB0cnVzdEFz
LiAgQmFzaWNhbGx5LCBpZgorICAgKiAgICAgdHJ1c3RBcyBpcyB3cmFwcGluZyB0aGUgZ2l2ZW4g
dmFsdWVzIGludG8gc29tZSB0eXBlLCB0aGlzIG9wZXJhdGlvbiB1bndyYXBzIGl0IHdoZW4gZ2l2
ZW4KKyAgICogICAgIHN1Y2ggYSB2YWx1ZS4KKyAgICoKKyAgICogLSBnZXRUcnVzdGVkKGNvbnRl
eHRFbnVtLCB2YWx1ZSkKKyAgICogICAgIFRoaXMgZnVuY3Rpb24gc2hvdWxkIHJldHVybiB0aGUg
YSB2YWx1ZSB0aGF0IGlzIHNhZmUgdG8gdXNlIGluIHRoZSBjb250ZXh0IHNwZWNpZmllZCBieQor
ICAgKiAgICAgY29udGV4dEVudW0gb3IgdGhyb3cgYW5kIGV4Y2VwdGlvbiBvdGhlcndpc2UuCisg
ICAqCisgICAqIE5PVEU6IFRoaXMgY29udHJhY3QgZGVsaWJlcmF0ZWx5IGRvZXMgTk9UIHN0YXRl
IHRoYXQgdmFsdWVzIHJldHVybmVkIGJ5IHRydXN0QXMoKSBtdXN0IGJlCisgICAqIG9wYXF1ZSBv
ciB3cmFwcGVkIGluIHNvbWUgaG9sZGVyIG9iamVjdC4gIFRoYXQgaGFwcGVucyB0byBiZSBhbiBp
bXBsZW1lbnRhdGlvbiBkZXRhaWwuICBGb3IKKyAgICogaW5zdGFuY2UsIGFuIGltcGxlbWVudGF0
aW9uIGNvdWxkIG1haW50YWluIGEgcmVnaXN0cnkgb2YgYWxsIHRydXN0ZWQgb2JqZWN0cyBieSBj
b250ZXh0LiAgSW4KKyAgICogc3VjaCBhIGNhc2UsIHRydXN0QXMoKSB3b3VsZCByZXR1cm4gdGhl
IHNhbWUgb2JqZWN0IHRoYXQgd2FzIHBhc3NlZCBpbi4gIGdldFRydXN0ZWQoKSB3b3VsZAorICAg
KiByZXR1cm4gdGhlIHNhbWUgb2JqZWN0IHBhc3NlZCBpbiBpZiBpdCB3YXMgZm91bmQgaW4gdGhl
IHJlZ2lzdHJ5IHVuZGVyIGEgY29tcGF0aWJsZSBjb250ZXh0IG9yCisgICAqIHRocm93IGFuIGV4
Y2VwdGlvbiBvdGhlcndpc2UuICBBbiBpbXBsZW1lbnRhdGlvbiBtaWdodCBvbmx5IHdyYXAgdmFs
dWVzIHNvbWUgb2YgdGhlIHRpbWUgYmFzZWQKKyAgICogb24gc29tZSBjcml0ZXJpYS4gIGdldFRy
dXN0ZWQoKSBtaWdodCByZXR1cm4gYSB2YWx1ZSBhbmQgbm90IHRocm93IGFuIGV4Y2VwdGlvbiBm
b3Igc3BlY2lhbAorICAgKiBjb25zdGFudHMgb3Igb2JqZWN0cyBldmVuIGlmIG5vdCB3cmFwcGVk
LiAgQWxsIHN1Y2ggaW1wbGVtZW50YXRpb25zIGZ1bGZpbGwgdGhpcyBjb250cmFjdC4KKyAgICoK
KyAgICoKKyAgICogQSBub3RlIG9uIHRoZSBpbmhlcml0YW5jZSBtb2RlbCBmb3IgU0NFIGNvbnRl
eHRzCisgICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorICAgKiBJJ3ZlIHVzZWQgaW5oZXJpdGFuY2UgYW5kIG1hZGUgUkVTT1VSQ0VfVVJMIHdyYXBw
ZWQgdHlwZXMgYSBzdWJ0eXBlIG9mIFVSTCB3cmFwcGVkIHR5cGVzLiAgVGhpcworICAgKiBpcyBw
dXJlbHkgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlscy4KKyAgICoKKyAgICogVGhlIGNvbnRyYWN0
IGlzIHNpbXBseSB0aGlzOgorICAgKgorICAgKiAgICAgZ2V0VHJ1c3RlZCgkc2NlLlJFU09VUkNF
X1VSTCwgdmFsdWUpIHN1Y2NlZWRpbmcgaW1wbGllcyB0aGF0IGdldFRydXN0ZWQoJHNjZS5VUkws
IHZhbHVlKQorICAgKiAgICAgd2lsbCBhbHNvIHN1Y2NlZWQuCisgICAqCisgICAqIEluaGVyaXRh
bmNlIGhhcHBlbnMgdG8gY2FwdHVyZSB0aGlzIGluIGEgbmF0dXJhbCB3YXkuICBJbiBzb21lIGZ1
dHVyZSwgd2UKKyAgICogbWF5IG5vdCB1c2UgaW5oZXJpdGFuY2UgYW55bW9yZS4gIFRoYXQgaXMg
T0sgYmVjYXVzZSBubyBjb2RlIG91dHNpZGUgb2YKKyAgICogc2NlLmpzIGFuZCBzY2VTcGVjcy5q
cyB3b3VsZCBuZWVkIHRvIGJlIGF3YXJlIG9mIHRoaXMgZGV0YWlsLgorICAgKi8KKworICB0aGlz
LiRnZXQgPSBbJyRwYXJzZScsICckc2NlRGVsZWdhdGUnLCBmdW5jdGlvbigKKyAgICAgICAgICAg
ICAgICAkcGFyc2UsICAgJHNjZURlbGVnYXRlKSB7CisgICAgLy8gUHJlcmVxOiBFbnN1cmUgdGhh
dCB3ZSdyZSBub3QgcnVubmluZyBpbiBJRTwxMSBxdWlya3MgbW9kZS4gIEluIHRoYXQgbW9kZSwg
SUUgPCAxMSBhbGxvdworICAgIC8vIHRoZSAiZXhwcmVzc2lvbihqYXZhc2NyaXB0IGV4cHJlc3Np
b24pIiBzeW50YXggd2hpY2ggaXMgaW5zZWN1cmUuCisgICAgaWYgKGVuYWJsZWQgJiYgbXNpZSA8
IDgpIHsKKyAgICAgIHRocm93ICRzY2VNaW5FcnIoJ2llcXVpcmtzJywKKyAgICAgICAgJ1N0cmlj
dCBDb250ZXh0dWFsIEVzY2FwaW5nIGRvZXMgbm90IHN1cHBvcnQgSW50ZXJuZXQgRXhwbG9yZXIg
dmVyc2lvbiA8IDExIGluIHF1aXJrcyAnICsKKyAgICAgICAgJ21vZGUuICBZb3UgY2FuIGZpeCB0
aGlzIGJ5IGFkZGluZyB0aGUgdGV4dCA8IWRvY3R5cGUgaHRtbD4gdG8gdGhlIHRvcCBvZiB5b3Vy
IEhUTUwgJyArCisgICAgICAgICdkb2N1bWVudC4gIFNlZSBodHRwOi8vZG9jcy5hbmd1bGFyanMu
b3JnL2FwaS9uZy4kc2NlIGZvciBtb3JlIGluZm9ybWF0aW9uLicpOworICAgIH0KKworICAgIHZh
ciBzY2UgPSBzaGFsbG93Q29weShTQ0VfQ09OVEVYVFMpOworCisgICAgLyoqCisgICAgICogQG5n
ZG9jIG1ldGhvZAorICAgICAqIEBuYW1lICRzY2UjaXNFbmFibGVkCisgICAgICogQGtpbmQgZnVu
Y3Rpb24KKyAgICAgKgorICAgICAqIEByZXR1cm4ge0Jvb2xlYW59IHRydWUgaWYgU0NFIGlzIGVu
YWJsZWQsIGZhbHNlIG90aGVyd2lzZS4gIElmIHlvdSB3YW50IHRvIHNldCB0aGUgdmFsdWUsIHlv
dQorICAgICAqIGhhdmUgdG8gZG8gaXQgYXQgbW9kdWxlIGNvbmZpZyB0aW1lIG9uIHtAbGluayBu
Zy4kc2NlUHJvdmlkZXIgJHNjZVByb3ZpZGVyfS4KKyAgICAgKgorICAgICAqIEBkZXNjcmlwdGlv
bgorICAgICAqIFJldHVybnMgYSBib29sZWFuIGluZGljYXRpbmcgaWYgU0NFIGlzIGVuYWJsZWQu
CisgICAgICovCisgICAgc2NlLmlzRW5hYmxlZCA9IGZ1bmN0aW9uKCkgeworICAgICAgcmV0dXJu
IGVuYWJsZWQ7CisgICAgfTsKKyAgICBzY2UudHJ1c3RBcyA9ICRzY2VEZWxlZ2F0ZS50cnVzdEFz
OworICAgIHNjZS5nZXRUcnVzdGVkID0gJHNjZURlbGVnYXRlLmdldFRydXN0ZWQ7CisgICAgc2Nl
LnZhbHVlT2YgPSAkc2NlRGVsZWdhdGUudmFsdWVPZjsKKworICAgIGlmICghZW5hYmxlZCkgewor
ICAgICAgc2NlLnRydXN0QXMgPSBzY2UuZ2V0VHJ1c3RlZCA9IGZ1bmN0aW9uKHR5cGUsIHZhbHVl
KSB7IHJldHVybiB2YWx1ZTsgfTsKKyAgICAgIHNjZS52YWx1ZU9mID0gaWRlbnRpdHk7CisgICAg
fQorCisgICAgLyoqCisgICAgICogQG5nZG9jIG1ldGhvZAorICAgICAqIEBuYW1lICRzY2UjcGFy
c2VBcworICAgICAqCisgICAgICogQGRlc2NyaXB0aW9uCisgICAgICogQ29udmVydHMgQW5ndWxh
ciB7QGxpbmsgZ3VpZGUvZXhwcmVzc2lvbiBleHByZXNzaW9ufSBpbnRvIGEgZnVuY3Rpb24uICBU
aGlzIGlzIGxpa2Uge0BsaW5rCisgICAgICogbmcuJHBhcnNlICRwYXJzZX0gYW5kIGlzIGlkZW50
aWNhbCB3aGVuIHRoZSBleHByZXNzaW9uIGlzIGEgbGl0ZXJhbCBjb25zdGFudC4gIE90aGVyd2lz
ZSwgaXQKKyAgICAgKiB3cmFwcyB0aGUgZXhwcmVzc2lvbiBpbiBhIGNhbGwgdG8ge0BsaW5rIG5n
LiRzY2UjZ2V0VHJ1c3RlZCAkc2NlLmdldFRydXN0ZWQoKnR5cGUqLAorICAgICAqICpyZXN1bHQq
KX0KKyAgICAgKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlIFRoZSBraW5kIG9mIFNDRSBj
b250ZXh0IGluIHdoaWNoIHRoaXMgcmVzdWx0IHdpbGwgYmUgdXNlZC4KKyAgICAgKiBAcGFyYW0g
e3N0cmluZ30gZXhwcmVzc2lvbiBTdHJpbmcgZXhwcmVzc2lvbiB0byBjb21waWxlLgorICAgICAq
IEByZXR1cm5zIHtmdW5jdGlvbihjb250ZXh0LCBsb2NhbHMpfSBhIGZ1bmN0aW9uIHdoaWNoIHJl
cHJlc2VudHMgdGhlIGNvbXBpbGVkIGV4cHJlc3Npb246CisgICAgICoKKyAgICAgKiAgICAqIGBj
b250ZXh0YCDigJMgYHtvYmplY3R9YCDigJMgYW4gb2JqZWN0IGFnYWluc3Qgd2hpY2ggYW55IGV4
cHJlc3Npb25zIGVtYmVkZGVkIGluIHRoZSBzdHJpbmdzCisgICAgICogICAgICBhcmUgZXZhbHVh
dGVkIGFnYWluc3QgKHR5cGljYWxseSBhIHNjb3BlIG9iamVjdCkuCisgICAgICogICAgKiBgbG9j
YWxzYCDigJMgYHtvYmplY3Q9fWAg4oCTIGxvY2FsIHZhcmlhYmxlcyBjb250ZXh0IG9iamVjdCwg
dXNlZnVsIGZvciBvdmVycmlkaW5nIHZhbHVlcyBpbgorICAgICAqICAgICAgYGNvbnRleHRgLgor
ICAgICAqLworICAgIHNjZS5wYXJzZUFzID0gZnVuY3Rpb24gc2NlUGFyc2VBcyh0eXBlLCBleHBy
KSB7CisgICAgICB2YXIgcGFyc2VkID0gJHBhcnNlKGV4cHIpOworICAgICAgaWYgKHBhcnNlZC5s
aXRlcmFsICYmIHBhcnNlZC5jb25zdGFudCkgeworICAgICAgICByZXR1cm4gcGFyc2VkOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuICRwYXJzZShleHByLCBmdW5jdGlvbih2YWx1ZSkg
eworICAgICAgICAgIHJldHVybiBzY2UuZ2V0VHJ1c3RlZCh0eXBlLCB2YWx1ZSk7CisgICAgICAg
IH0pOworICAgICAgfQorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAbmdkb2MgbWV0aG9kCisg
ICAgICogQG5hbWUgJHNjZSN0cnVzdEFzCisgICAgICoKKyAgICAgKiBAZGVzY3JpcHRpb24KKyAg
ICAgKiBEZWxlZ2F0ZXMgdG8ge0BsaW5rIG5nLiRzY2VEZWxlZ2F0ZSN0cnVzdEFzIGAkc2NlRGVs
ZWdhdGUudHJ1c3RBc2B9LiAgQXMgc3VjaCwKKyAgICAgKiByZXR1cm5zIGFuIG9iamVjdCB0aGF0
IGlzIHRydXN0ZWQgYnkgYW5ndWxhciBmb3IgdXNlIGluIHNwZWNpZmllZCBzdHJpY3QgY29udGV4
dHVhbAorICAgICAqIGVzY2FwaW5nIGNvbnRleHRzIChzdWNoIGFzIG5nLWJpbmQtaHRtbCwgbmct
aW5jbHVkZSwgYW55IHNyYyBhdHRyaWJ1dGUKKyAgICAgKiBpbnRlcnBvbGF0aW9uLCBhbnkgZG9t
IGV2ZW50IGJpbmRpbmcgYXR0cmlidXRlIGludGVycG9sYXRpb24gc3VjaCBhcyBmb3Igb25jbGlj
aywgIGV0Yy4pCisgICAgICogdGhhdCB1c2VzIHRoZSBwcm92aWRlZCB2YWx1ZS4gIFNlZSAqIHtA
bGluayBuZy4kc2NlICRzY2V9IGZvciBlbmFibGluZyBzdHJpY3QgY29udGV4dHVhbAorICAgICAq
IGVzY2FwaW5nLgorICAgICAqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IHR5cGUgVGhlIGtpbmQg
b2YgY29udGV4dCBpbiB3aGljaCB0aGlzIHZhbHVlIGlzIHNhZmUgZm9yIHVzZS4gIGUuZy4gdXJs
LAorICAgICAqICAgcmVzb3VyY2VVcmwsIGh0bWwsIGpzIGFuZCBjc3MuCisgICAgICogQHBhcmFt
IHsqfSB2YWx1ZSBUaGUgdmFsdWUgdGhhdCB0aGF0IHNob3VsZCBiZSBjb25zaWRlcmVkIHRydXN0
ZWQvc2FmZS4KKyAgICAgKiBAcmV0dXJucyB7Kn0gQSB2YWx1ZSB0aGF0IGNhbiBiZSB1c2VkIHRv
IHN0YW5kIGluIGZvciB0aGUgcHJvdmlkZWQgYHZhbHVlYCBpbiBwbGFjZXMKKyAgICAgKiB3aGVy
ZSBBbmd1bGFyIGV4cGVjdHMgYSAkc2NlLnRydXN0QXMoKSByZXR1cm4gdmFsdWUuCisgICAgICov
CisKKyAgICAvKioKKyAgICAgKiBAbmdkb2MgbWV0aG9kCisgICAgICogQG5hbWUgJHNjZSN0cnVz
dEFzSHRtbAorICAgICAqCisgICAgICogQGRlc2NyaXB0aW9uCisgICAgICogU2hvcnRoYW5kIG1l
dGhvZC4gIGAkc2NlLnRydXN0QXNIdG1sKHZhbHVlKWAg4oaSCisgICAgICogICAgIHtAbGluayBu
Zy4kc2NlRGVsZWdhdGUjdHJ1c3RBcyBgJHNjZURlbGVnYXRlLnRydXN0QXMoJHNjZS5IVE1MLCB2
YWx1ZSlgfQorICAgICAqCisgICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gdHJ1
c3RBcy4KKyAgICAgKiBAcmV0dXJucyB7Kn0gQW4gb2JqZWN0IHRoYXQgY2FuIGJlIHBhc3NlZCB0
byB7QGxpbmsgbmcuJHNjZSNnZXRUcnVzdGVkSHRtbAorICAgICAqICAgICAkc2NlLmdldFRydXN0
ZWRIdG1sKHZhbHVlKX0gdG8gb2J0YWluIHRoZSBvcmlnaW5hbCB2YWx1ZS4gIChwcml2aWxlZ2Vk
IGRpcmVjdGl2ZXMKKyAgICAgKiAgICAgb25seSBhY2NlcHQgZXhwcmVzc2lvbnMgdGhhdCBhcmUg
ZWl0aGVyIGxpdGVyYWwgY29uc3RhbnRzIG9yIGFyZSB0aGUKKyAgICAgKiAgICAgcmV0dXJuIHZh
bHVlIG9mIHtAbGluayBuZy4kc2NlI3RydXN0QXMgJHNjZS50cnVzdEFzfS4pCisgICAgICovCisK
KyAgICAvKioKKyAgICAgKiBAbmdkb2MgbWV0aG9kCisgICAgICogQG5hbWUgJHNjZSN0cnVzdEFz
VXJsCisgICAgICoKKyAgICAgKiBAZGVzY3JpcHRpb24KKyAgICAgKiBTaG9ydGhhbmQgbWV0aG9k
LiAgYCRzY2UudHJ1c3RBc1VybCh2YWx1ZSlgIOKGkgorICAgICAqICAgICB7QGxpbmsgbmcuJHNj
ZURlbGVnYXRlI3RydXN0QXMgYCRzY2VEZWxlZ2F0ZS50cnVzdEFzKCRzY2UuVVJMLCB2YWx1ZSlg
fQorICAgICAqCisgICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gdHJ1c3RBcy4K
KyAgICAgKiBAcmV0dXJucyB7Kn0gQW4gb2JqZWN0IHRoYXQgY2FuIGJlIHBhc3NlZCB0byB7QGxp
bmsgbmcuJHNjZSNnZXRUcnVzdGVkVXJsCisgICAgICogICAgICRzY2UuZ2V0VHJ1c3RlZFVybCh2
YWx1ZSl9IHRvIG9idGFpbiB0aGUgb3JpZ2luYWwgdmFsdWUuICAocHJpdmlsZWdlZCBkaXJlY3Rp
dmVzCisgICAgICogICAgIG9ubHkgYWNjZXB0IGV4cHJlc3Npb25zIHRoYXQgYXJlIGVpdGhlciBs
aXRlcmFsIGNvbnN0YW50cyBvciBhcmUgdGhlCisgICAgICogICAgIHJldHVybiB2YWx1ZSBvZiB7
QGxpbmsgbmcuJHNjZSN0cnVzdEFzICRzY2UudHJ1c3RBc30uKQorICAgICAqLworCisgICAgLyoq
CisgICAgICogQG5nZG9jIG1ldGhvZAorICAgICAqIEBuYW1lICRzY2UjdHJ1c3RBc1Jlc291cmNl
VXJsCisgICAgICoKKyAgICAgKiBAZGVzY3JpcHRpb24KKyAgICAgKiBTaG9ydGhhbmQgbWV0aG9k
LiAgYCRzY2UudHJ1c3RBc1Jlc291cmNlVXJsKHZhbHVlKWAg4oaSCisgICAgICogICAgIHtAbGlu
ayBuZy4kc2NlRGVsZWdhdGUjdHJ1c3RBcyBgJHNjZURlbGVnYXRlLnRydXN0QXMoJHNjZS5SRVNP
VVJDRV9VUkwsIHZhbHVlKWB9CisgICAgICoKKyAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2
YWx1ZSB0byB0cnVzdEFzLgorICAgICAqIEByZXR1cm5zIHsqfSBBbiBvYmplY3QgdGhhdCBjYW4g
YmUgcGFzc2VkIHRvIHtAbGluayBuZy4kc2NlI2dldFRydXN0ZWRSZXNvdXJjZVVybAorICAgICAq
ICAgICAkc2NlLmdldFRydXN0ZWRSZXNvdXJjZVVybCh2YWx1ZSl9IHRvIG9idGFpbiB0aGUgb3Jp
Z2luYWwgdmFsdWUuICAocHJpdmlsZWdlZCBkaXJlY3RpdmVzCisgICAgICogICAgIG9ubHkgYWNj
ZXB0IGV4cHJlc3Npb25zIHRoYXQgYXJlIGVpdGhlciBsaXRlcmFsIGNvbnN0YW50cyBvciBhcmUg
dGhlIHJldHVybgorICAgICAqICAgICB2YWx1ZSBvZiB7QGxpbmsgbmcuJHNjZSN0cnVzdEFzICRz
Y2UudHJ1c3RBc30uKQorICAgICAqLworCisgICAgLyoqCisgICAgICogQG5nZG9jIG1ldGhvZAor
ICAgICAqIEBuYW1lICRzY2UjdHJ1c3RBc0pzCisgICAgICoKKyAgICAgKiBAZGVzY3JpcHRpb24K
KyAgICAgKiBTaG9ydGhhbmQgbWV0aG9kLiAgYCRzY2UudHJ1c3RBc0pzKHZhbHVlKWAg4oaSCisg
ICAgICogICAgIHtAbGluayBuZy4kc2NlRGVsZWdhdGUjdHJ1c3RBcyBgJHNjZURlbGVnYXRlLnRy
dXN0QXMoJHNjZS5KUywgdmFsdWUpYH0KKyAgICAgKgorICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUg
VGhlIHZhbHVlIHRvIHRydXN0QXMuCisgICAgICogQHJldHVybnMgeyp9IEFuIG9iamVjdCB0aGF0
IGNhbiBiZSBwYXNzZWQgdG8ge0BsaW5rIG5nLiRzY2UjZ2V0VHJ1c3RlZEpzCisgICAgICogICAg
ICRzY2UuZ2V0VHJ1c3RlZEpzKHZhbHVlKX0gdG8gb2J0YWluIHRoZSBvcmlnaW5hbCB2YWx1ZS4g
IChwcml2aWxlZ2VkIGRpcmVjdGl2ZXMKKyAgICAgKiAgICAgb25seSBhY2NlcHQgZXhwcmVzc2lv
bnMgdGhhdCBhcmUgZWl0aGVyIGxpdGVyYWwgY29uc3RhbnRzIG9yIGFyZSB0aGUKKyAgICAgKiAg
ICAgcmV0dXJuIHZhbHVlIG9mIHtAbGluayBuZy4kc2NlI3RydXN0QXMgJHNjZS50cnVzdEFzfS4p
CisgICAgICovCisKKyAgICAvKioKKyAgICAgKiBAbmdkb2MgbWV0aG9kCisgICAgICogQG5hbWUg
JHNjZSNnZXRUcnVzdGVkCisgICAgICoKKyAgICAgKiBAZGVzY3JpcHRpb24KKyAgICAgKiBEZWxl
Z2F0ZXMgdG8ge0BsaW5rIG5nLiRzY2VEZWxlZ2F0ZSNnZXRUcnVzdGVkIGAkc2NlRGVsZWdhdGUu
Z2V0VHJ1c3RlZGB9LiAgQXMgc3VjaCwKKyAgICAgKiB0YWtlcyB0aGUgcmVzdWx0IG9mIGEge0Bs
aW5rIG5nLiRzY2UjdHJ1c3RBcyBgJHNjZS50cnVzdEFzYH0oKSBjYWxsIGFuZCByZXR1cm5zIHRo
ZQorICAgICAqIG9yaWdpbmFsbHkgc3VwcGxpZWQgdmFsdWUgaWYgdGhlIHF1ZXJpZWQgY29udGV4
dCB0eXBlIGlzIGEgc3VwZXJ0eXBlIG9mIHRoZSBjcmVhdGVkIHR5cGUuCisgICAgICogSWYgdGhp
cyBjb25kaXRpb24gaXNuJ3Qgc2F0aXNmaWVkLCB0aHJvd3MgYW4gZXhjZXB0aW9uLgorICAgICAq
CisgICAgICogQHBhcmFtIHtzdHJpbmd9IHR5cGUgVGhlIGtpbmQgb2YgY29udGV4dCBpbiB3aGlj
aCB0aGlzIHZhbHVlIGlzIHRvIGJlIHVzZWQuCisgICAgICogQHBhcmFtIHsqfSBtYXliZVRydXN0
ZWQgVGhlIHJlc3VsdCBvZiBhIHByaW9yIHtAbGluayBuZy4kc2NlI3RydXN0QXMgYCRzY2UudHJ1
c3RBc2B9CisgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgY2FsbC4KKyAgICAgKiBAcmV0
dXJucyB7Kn0gVGhlIHZhbHVlIHRoZSB3YXMgb3JpZ2luYWxseSBwcm92aWRlZCB0bworICAgICAq
ICAgICAgICAgICAgICB7QGxpbmsgbmcuJHNjZSN0cnVzdEFzIGAkc2NlLnRydXN0QXNgfSBpZiB2
YWxpZCBpbiB0aGlzIGNvbnRleHQuCisgICAgICogICAgICAgICAgICAgIE90aGVyd2lzZSwgdGhy
b3dzIGFuIGV4Y2VwdGlvbi4KKyAgICAgKi8KKworICAgIC8qKgorICAgICAqIEBuZ2RvYyBtZXRo
b2QKKyAgICAgKiBAbmFtZSAkc2NlI2dldFRydXN0ZWRIdG1sCisgICAgICoKKyAgICAgKiBAZGVz
Y3JpcHRpb24KKyAgICAgKiBTaG9ydGhhbmQgbWV0aG9kLiAgYCRzY2UuZ2V0VHJ1c3RlZEh0bWwo
dmFsdWUpYCDihpIKKyAgICAgKiAgICAge0BsaW5rIG5nLiRzY2VEZWxlZ2F0ZSNnZXRUcnVzdGVk
IGAkc2NlRGVsZWdhdGUuZ2V0VHJ1c3RlZCgkc2NlLkhUTUwsIHZhbHVlKWB9CisgICAgICoKKyAg
ICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBwYXNzIHRvIGAkc2NlLmdldFRydXN0
ZWRgLgorICAgICAqIEByZXR1cm5zIHsqfSBUaGUgcmV0dXJuIHZhbHVlIG9mIGAkc2NlLmdldFRy
dXN0ZWQoJHNjZS5IVE1MLCB2YWx1ZSlgCisgICAgICovCisKKyAgICAvKioKKyAgICAgKiBAbmdk
b2MgbWV0aG9kCisgICAgICogQG5hbWUgJHNjZSNnZXRUcnVzdGVkQ3NzCisgICAgICoKKyAgICAg
KiBAZGVzY3JpcHRpb24KKyAgICAgKiBTaG9ydGhhbmQgbWV0aG9kLiAgYCRzY2UuZ2V0VHJ1c3Rl
ZENzcyh2YWx1ZSlgIOKGkgorICAgICAqICAgICB7QGxpbmsgbmcuJHNjZURlbGVnYXRlI2dldFRy
dXN0ZWQgYCRzY2VEZWxlZ2F0ZS5nZXRUcnVzdGVkKCRzY2UuQ1NTLCB2YWx1ZSlgfQorICAgICAq
CisgICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcGFzcyB0byBgJHNjZS5nZXRU
cnVzdGVkYC4KKyAgICAgKiBAcmV0dXJucyB7Kn0gVGhlIHJldHVybiB2YWx1ZSBvZiBgJHNjZS5n
ZXRUcnVzdGVkKCRzY2UuQ1NTLCB2YWx1ZSlgCisgICAgICovCisKKyAgICAvKioKKyAgICAgKiBA
bmdkb2MgbWV0aG9kCisgICAgICogQG5hbWUgJHNjZSNnZXRUcnVzdGVkVXJsCisgICAgICoKKyAg
ICAgKiBAZGVzY3JpcHRpb24KKyAgICAgKiBTaG9ydGhhbmQgbWV0aG9kLiAgYCRzY2UuZ2V0VHJ1
c3RlZFVybCh2YWx1ZSlgIOKGkgorICAgICAqICAgICB7QGxpbmsgbmcuJHNjZURlbGVnYXRlI2dl
dFRydXN0ZWQgYCRzY2VEZWxlZ2F0ZS5nZXRUcnVzdGVkKCRzY2UuVVJMLCB2YWx1ZSlgfQorICAg
ICAqCisgICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcGFzcyB0byBgJHNjZS5n
ZXRUcnVzdGVkYC4KKyAgICAgKiBAcmV0dXJucyB7Kn0gVGhlIHJldHVybiB2YWx1ZSBvZiBgJHNj
ZS5nZXRUcnVzdGVkKCRzY2UuVVJMLCB2YWx1ZSlgCisgICAgICovCisKKyAgICAvKioKKyAgICAg
KiBAbmdkb2MgbWV0aG9kCisgICAgICogQG5hbWUgJHNjZSNnZXRUcnVzdGVkUmVzb3VyY2VVcmwK
KyAgICAgKgorICAgICAqIEBkZXNjcmlwdGlvbgorICAgICAqIFNob3J0aGFuZCBtZXRob2QuICBg
JHNjZS5nZXRUcnVzdGVkUmVzb3VyY2VVcmwodmFsdWUpYCDihpIKKyAgICAgKiAgICAge0BsaW5r
IG5nLiRzY2VEZWxlZ2F0ZSNnZXRUcnVzdGVkIGAkc2NlRGVsZWdhdGUuZ2V0VHJ1c3RlZCgkc2Nl
LlJFU09VUkNFX1VSTCwgdmFsdWUpYH0KKyAgICAgKgorICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUg
VGhlIHZhbHVlIHRvIHBhc3MgdG8gYCRzY2VEZWxlZ2F0ZS5nZXRUcnVzdGVkYC4KKyAgICAgKiBA
cmV0dXJucyB7Kn0gVGhlIHJldHVybiB2YWx1ZSBvZiBgJHNjZS5nZXRUcnVzdGVkKCRzY2UuUkVT
T1VSQ0VfVVJMLCB2YWx1ZSlgCisgICAgICovCisKKyAgICAvKioKKyAgICAgKiBAbmdkb2MgbWV0
aG9kCisgICAgICogQG5hbWUgJHNjZSNnZXRUcnVzdGVkSnMKKyAgICAgKgorICAgICAqIEBkZXNj
cmlwdGlvbgorICAgICAqIFNob3J0aGFuZCBtZXRob2QuICBgJHNjZS5nZXRUcnVzdGVkSnModmFs
dWUpYCDihpIKKyAgICAgKiAgICAge0BsaW5rIG5nLiRzY2VEZWxlZ2F0ZSNnZXRUcnVzdGVkIGAk
c2NlRGVsZWdhdGUuZ2V0VHJ1c3RlZCgkc2NlLkpTLCB2YWx1ZSlgfQorICAgICAqCisgICAgICog
QHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcGFzcyB0byBgJHNjZS5nZXRUcnVzdGVkYC4K
KyAgICAgKiBAcmV0dXJucyB7Kn0gVGhlIHJldHVybiB2YWx1ZSBvZiBgJHNjZS5nZXRUcnVzdGVk
KCRzY2UuSlMsIHZhbHVlKWAKKyAgICAgKi8KKworICAgIC8qKgorICAgICAqIEBuZ2RvYyBtZXRo
b2QKKyAgICAgKiBAbmFtZSAkc2NlI3BhcnNlQXNIdG1sCisgICAgICoKKyAgICAgKiBAZGVzY3Jp
cHRpb24KKyAgICAgKiBTaG9ydGhhbmQgbWV0aG9kLiAgYCRzY2UucGFyc2VBc0h0bWwoZXhwcmVz
c2lvbiBzdHJpbmcpYCDihpIKKyAgICAgKiAgICAge0BsaW5rIG5nLiRzY2UjcGFyc2VBcyBgJHNj
ZS5wYXJzZUFzKCRzY2UuSFRNTCwgdmFsdWUpYH0KKyAgICAgKgorICAgICAqIEBwYXJhbSB7c3Ry
aW5nfSBleHByZXNzaW9uIFN0cmluZyBleHByZXNzaW9uIHRvIGNvbXBpbGUuCisgICAgICogQHJl
dHVybnMge2Z1bmN0aW9uKGNvbnRleHQsIGxvY2Fscyl9IGEgZnVuY3Rpb24gd2hpY2ggcmVwcmVz
ZW50cyB0aGUgY29tcGlsZWQgZXhwcmVzc2lvbjoKKyAgICAgKgorICAgICAqICAgICogYGNvbnRl
eHRgIOKAkyBge29iamVjdH1gIOKAkyBhbiBvYmplY3QgYWdhaW5zdCB3aGljaCBhbnkgZXhwcmVz
c2lvbnMgZW1iZWRkZWQgaW4gdGhlIHN0cmluZ3MKKyAgICAgKiAgICAgIGFyZSBldmFsdWF0ZWQg
YWdhaW5zdCAodHlwaWNhbGx5IGEgc2NvcGUgb2JqZWN0KS4KKyAgICAgKiAgICAqIGBsb2NhbHNg
IOKAkyBge29iamVjdD19YCDigJMgbG9jYWwgdmFyaWFibGVzIGNvbnRleHQgb2JqZWN0LCB1c2Vm
dWwgZm9yIG92ZXJyaWRpbmcgdmFsdWVzIGluCisgICAgICogICAgICBgY29udGV4dGAuCisgICAg
ICovCisKKyAgICAvKioKKyAgICAgKiBAbmdkb2MgbWV0aG9kCisgICAgICogQG5hbWUgJHNjZSNw
YXJzZUFzQ3NzCisgICAgICoKKyAgICAgKiBAZGVzY3JpcHRpb24KKyAgICAgKiBTaG9ydGhhbmQg
bWV0aG9kLiAgYCRzY2UucGFyc2VBc0Nzcyh2YWx1ZSlgIOKGkgorICAgICAqICAgICB7QGxpbmsg
bmcuJHNjZSNwYXJzZUFzIGAkc2NlLnBhcnNlQXMoJHNjZS5DU1MsIHZhbHVlKWB9CisgICAgICoK
KyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZXhwcmVzc2lvbiBTdHJpbmcgZXhwcmVzc2lvbiB0byBj
b21waWxlLgorICAgICAqIEByZXR1cm5zIHtmdW5jdGlvbihjb250ZXh0LCBsb2NhbHMpfSBhIGZ1
bmN0aW9uIHdoaWNoIHJlcHJlc2VudHMgdGhlIGNvbXBpbGVkIGV4cHJlc3Npb246CisgICAgICoK
KyAgICAgKiAgICAqIGBjb250ZXh0YCDigJMgYHtvYmplY3R9YCDigJMgYW4gb2JqZWN0IGFnYWlu
c3Qgd2hpY2ggYW55IGV4cHJlc3Npb25zIGVtYmVkZGVkIGluIHRoZSBzdHJpbmdzCisgICAgICog
ICAgICBhcmUgZXZhbHVhdGVkIGFnYWluc3QgKHR5cGljYWxseSBhIHNjb3BlIG9iamVjdCkuCisg
ICAgICogICAgKiBgbG9jYWxzYCDigJMgYHtvYmplY3Q9fWAg4oCTIGxvY2FsIHZhcmlhYmxlcyBj
b250ZXh0IG9iamVjdCwgdXNlZnVsIGZvciBvdmVycmlkaW5nIHZhbHVlcyBpbgorICAgICAqICAg
ICAgYGNvbnRleHRgLgorICAgICAqLworCisgICAgLyoqCisgICAgICogQG5nZG9jIG1ldGhvZAor
ICAgICAqIEBuYW1lICRzY2UjcGFyc2VBc1VybAorICAgICAqCisgICAgICogQGRlc2NyaXB0aW9u
CisgICAgICogU2hvcnRoYW5kIG1ldGhvZC4gIGAkc2NlLnBhcnNlQXNVcmwodmFsdWUpYCDihpIK
KyAgICAgKiAgICAge0BsaW5rIG5nLiRzY2UjcGFyc2VBcyBgJHNjZS5wYXJzZUFzKCRzY2UuVVJM
LCB2YWx1ZSlgfQorICAgICAqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGV4cHJlc3Npb24gU3Ry
aW5nIGV4cHJlc3Npb24gdG8gY29tcGlsZS4KKyAgICAgKiBAcmV0dXJucyB7ZnVuY3Rpb24oY29u
dGV4dCwgbG9jYWxzKX0gYSBmdW5jdGlvbiB3aGljaCByZXByZXNlbnRzIHRoZSBjb21waWxlZCBl
eHByZXNzaW9uOgorICAgICAqCisgICAgICogICAgKiBgY29udGV4dGAg4oCTIGB7b2JqZWN0fWAg
4oCTIGFuIG9iamVjdCBhZ2FpbnN0IHdoaWNoIGFueSBleHByZXNzaW9ucyBlbWJlZGRlZCBpbiB0
aGUgc3RyaW5ncworICAgICAqICAgICAgYXJlIGV2YWx1YXRlZCBhZ2FpbnN0ICh0eXBpY2FsbHkg
YSBzY29wZSBvYmplY3QpLgorICAgICAqICAgICogYGxvY2Fsc2Ag4oCTIGB7b2JqZWN0PX1gIOKA
kyBsb2NhbCB2YXJpYWJsZXMgY29udGV4dCBvYmplY3QsIHVzZWZ1bCBmb3Igb3ZlcnJpZGluZyB2
YWx1ZXMgaW4KKyAgICAgKiAgICAgIGBjb250ZXh0YC4KKyAgICAgKi8KKworICAgIC8qKgorICAg
ICAqIEBuZ2RvYyBtZXRob2QKKyAgICAgKiBAbmFtZSAkc2NlI3BhcnNlQXNSZXNvdXJjZVVybAor
ICAgICAqCisgICAgICogQGRlc2NyaXB0aW9uCisgICAgICogU2hvcnRoYW5kIG1ldGhvZC4gIGAk
c2NlLnBhcnNlQXNSZXNvdXJjZVVybCh2YWx1ZSlgIOKGkgorICAgICAqICAgICB7QGxpbmsgbmcu
JHNjZSNwYXJzZUFzIGAkc2NlLnBhcnNlQXMoJHNjZS5SRVNPVVJDRV9VUkwsIHZhbHVlKWB9Cisg
ICAgICoKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZXhwcmVzc2lvbiBTdHJpbmcgZXhwcmVzc2lv
biB0byBjb21waWxlLgorICAgICAqIEByZXR1cm5zIHtmdW5jdGlvbihjb250ZXh0LCBsb2NhbHMp
fSBhIGZ1bmN0aW9uIHdoaWNoIHJlcHJlc2VudHMgdGhlIGNvbXBpbGVkIGV4cHJlc3Npb246Cisg
ICAgICoKKyAgICAgKiAgICAqIGBjb250ZXh0YCDigJMgYHtvYmplY3R9YCDigJMgYW4gb2JqZWN0
IGFnYWluc3Qgd2hpY2ggYW55IGV4cHJlc3Npb25zIGVtYmVkZGVkIGluIHRoZSBzdHJpbmdzCisg
ICAgICogICAgICBhcmUgZXZhbHVhdGVkIGFnYWluc3QgKHR5cGljYWxseSBhIHNjb3BlIG9iamVj
dCkuCisgICAgICogICAgKiBgbG9jYWxzYCDigJMgYHtvYmplY3Q9fWAg4oCTIGxvY2FsIHZhcmlh
YmxlcyBjb250ZXh0IG9iamVjdCwgdXNlZnVsIGZvciBvdmVycmlkaW5nIHZhbHVlcyBpbgorICAg
ICAqICAgICAgYGNvbnRleHRgLgorICAgICAqLworCisgICAgLyoqCisgICAgICogQG5nZG9jIG1l
dGhvZAorICAgICAqIEBuYW1lICRzY2UjcGFyc2VBc0pzCisgICAgICoKKyAgICAgKiBAZGVzY3Jp
cHRpb24KKyAgICAgKiBTaG9ydGhhbmQgbWV0aG9kLiAgYCRzY2UucGFyc2VBc0pzKHZhbHVlKWAg
4oaSCisgICAgICogICAgIHtAbGluayBuZy4kc2NlI3BhcnNlQXMgYCRzY2UucGFyc2VBcygkc2Nl
LkpTLCB2YWx1ZSlgfQorICAgICAqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGV4cHJlc3Npb24g
U3RyaW5nIGV4cHJlc3Npb24gdG8gY29tcGlsZS4KKyAgICAgKiBAcmV0dXJucyB7ZnVuY3Rpb24o
Y29udGV4dCwgbG9jYWxzKX0gYSBmdW5jdGlvbiB3aGljaCByZXByZXNlbnRzIHRoZSBjb21waWxl
ZCBleHByZXNzaW9uOgorICAgICAqCisgICAgICogICAgKiBgY29udGV4dGAg4oCTIGB7b2JqZWN0
fWAg4oCTIGFuIG9iamVjdCBhZ2FpbnN0IHdoaWNoIGFueSBleHByZXNzaW9ucyBlbWJlZGRlZCBp
biB0aGUgc3RyaW5ncworICAgICAqICAgICAgYXJlIGV2YWx1YXRlZCBhZ2FpbnN0ICh0eXBpY2Fs
bHkgYSBzY29wZSBvYmplY3QpLgorICAgICAqICAgICogYGxvY2Fsc2Ag4oCTIGB7b2JqZWN0PX1g
IOKAkyBsb2NhbCB2YXJpYWJsZXMgY29udGV4dCBvYmplY3QsIHVzZWZ1bCBmb3Igb3ZlcnJpZGlu
ZyB2YWx1ZXMgaW4KKyAgICAgKiAgICAgIGBjb250ZXh0YC4KKyAgICAgKi8KKworICAgIC8vIFNo
b3J0aGFuZCBkZWxlZ2F0aW9ucy4KKyAgICB2YXIgcGFyc2UgPSBzY2UucGFyc2VBcywKKyAgICAg
ICAgZ2V0VHJ1c3RlZCA9IHNjZS5nZXRUcnVzdGVkLAorICAgICAgICB0cnVzdEFzID0gc2NlLnRy
dXN0QXM7CisKKyAgICBmb3JFYWNoKFNDRV9DT05URVhUUywgZnVuY3Rpb24oZW51bVZhbHVlLCBu
YW1lKSB7CisgICAgICB2YXIgbE5hbWUgPSBsb3dlcmNhc2UobmFtZSk7CisgICAgICBzY2VbY2Ft
ZWxDYXNlKCJwYXJzZV9hc18iICsgbE5hbWUpXSA9IGZ1bmN0aW9uKGV4cHIpIHsKKyAgICAgICAg
cmV0dXJuIHBhcnNlKGVudW1WYWx1ZSwgZXhwcik7CisgICAgICB9OworICAgICAgc2NlW2NhbWVs
Q2FzZSgiZ2V0X3RydXN0ZWRfIiArIGxOYW1lKV0gPSBmdW5jdGlvbih2YWx1ZSkgeworICAgICAg
ICByZXR1cm4gZ2V0VHJ1c3RlZChlbnVtVmFsdWUsIHZhbHVlKTsKKyAgICAgIH07CisgICAgICBz
Y2VbY2FtZWxDYXNlKCJ0cnVzdF9hc18iICsgbE5hbWUpXSA9IGZ1bmN0aW9uKHZhbHVlKSB7Cisg
ICAgICAgIHJldHVybiB0cnVzdEFzKGVudW1WYWx1ZSwgdmFsdWUpOworICAgICAgfTsKKyAgICB9
KTsKKworICAgIHJldHVybiBzY2U7CisgIH1dOworfQorCisvKioKKyAqICEhISBUaGlzIGlzIGFu
IHVuZG9jdW1lbnRlZCAicHJpdmF0ZSIgc2VydmljZSAhISEKKyAqCisgKiBAbmFtZSAkc25pZmZl
cgorICogQHJlcXVpcmVzICR3aW5kb3cKKyAqIEByZXF1aXJlcyAkZG9jdW1lbnQKKyAqCisgKiBA
cHJvcGVydHkge2Jvb2xlYW59IGhpc3RvcnkgRG9lcyB0aGUgYnJvd3NlciBzdXBwb3J0IGh0bWw1
IGhpc3RvcnkgYXBpID8KKyAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gdHJhbnNpdGlvbnMgRG9lcyB0
aGUgYnJvd3NlciBzdXBwb3J0IENTUyB0cmFuc2l0aW9uIGV2ZW50cyA/CisgKiBAcHJvcGVydHkg
e2Jvb2xlYW59IGFuaW1hdGlvbnMgRG9lcyB0aGUgYnJvd3NlciBzdXBwb3J0IENTUyBhbmltYXRp
b24gZXZlbnRzID8KKyAqCisgKiBAZGVzY3JpcHRpb24KKyAqIFRoaXMgaXMgdmVyeSBzaW1wbGUg
aW1wbGVtZW50YXRpb24gb2YgdGVzdGluZyBicm93c2VyJ3MgZmVhdHVyZXMuCisgKi8KK2Z1bmN0
aW9uICRTbmlmZmVyUHJvdmlkZXIoKSB7CisgIHRoaXMuJGdldCA9IFsnJHdpbmRvdycsICckZG9j
dW1lbnQnLCBmdW5jdGlvbigkd2luZG93LCAkZG9jdW1lbnQpIHsKKyAgICB2YXIgZXZlbnRTdXBw
b3J0ID0ge30sCisgICAgICAgIGFuZHJvaWQgPQorICAgICAgICAgIHRvSW50KCgvYW5kcm9pZCAo
XGQrKS8uZXhlYyhsb3dlcmNhc2UoKCR3aW5kb3cubmF2aWdhdG9yIHx8IHt9KS51c2VyQWdlbnQp
KSB8fCBbXSlbMV0pLAorICAgICAgICBib3hlZSA9IC9Cb3hlZS9pLnRlc3QoKCR3aW5kb3cubmF2
aWdhdG9yIHx8IHt9KS51c2VyQWdlbnQpLAorICAgICAgICBkb2N1bWVudCA9ICRkb2N1bWVudFsw
XSB8fCB7fSwKKyAgICAgICAgdmVuZG9yUHJlZml4LAorICAgICAgICB2ZW5kb3JSZWdleCA9IC9e
KE1venx3ZWJraXR8bXMpKD89W0EtWl0pLywKKyAgICAgICAgYm9keVN0eWxlID0gZG9jdW1lbnQu
Ym9keSAmJiBkb2N1bWVudC5ib2R5LnN0eWxlLAorICAgICAgICB0cmFuc2l0aW9ucyA9IGZhbHNl
LAorICAgICAgICBhbmltYXRpb25zID0gZmFsc2UsCisgICAgICAgIG1hdGNoOworCisgICAgaWYg
KGJvZHlTdHlsZSkgeworICAgICAgZm9yICh2YXIgcHJvcCBpbiBib2R5U3R5bGUpIHsKKyAgICAg
ICAgaWYgKG1hdGNoID0gdmVuZG9yUmVnZXguZXhlYyhwcm9wKSkgeworICAgICAgICAgIHZlbmRv
clByZWZpeCA9IG1hdGNoWzBdOworICAgICAgICAgIHZlbmRvclByZWZpeCA9IHZlbmRvclByZWZp
eC5zdWJzdHIoMCwgMSkudG9VcHBlckNhc2UoKSArIHZlbmRvclByZWZpeC5zdWJzdHIoMSk7Cisg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgaWYgKCF2ZW5kb3JQ
cmVmaXgpIHsKKyAgICAgICAgdmVuZG9yUHJlZml4ID0gKCdXZWJraXRPcGFjaXR5JyBpbiBib2R5
U3R5bGUpICYmICd3ZWJraXQnOworICAgICAgfQorCisgICAgICB0cmFuc2l0aW9ucyA9ICEhKCgn
dHJhbnNpdGlvbicgaW4gYm9keVN0eWxlKSB8fCAodmVuZG9yUHJlZml4ICsgJ1RyYW5zaXRpb24n
IGluIGJvZHlTdHlsZSkpOworICAgICAgYW5pbWF0aW9ucyAgPSAhISgoJ2FuaW1hdGlvbicgaW4g
Ym9keVN0eWxlKSB8fCAodmVuZG9yUHJlZml4ICsgJ0FuaW1hdGlvbicgaW4gYm9keVN0eWxlKSk7
CisKKyAgICAgIGlmIChhbmRyb2lkICYmICghdHJhbnNpdGlvbnMgfHwgICFhbmltYXRpb25zKSkg
eworICAgICAgICB0cmFuc2l0aW9ucyA9IGlzU3RyaW5nKGJvZHlTdHlsZS53ZWJraXRUcmFuc2l0
aW9uKTsKKyAgICAgICAgYW5pbWF0aW9ucyA9IGlzU3RyaW5nKGJvZHlTdHlsZS53ZWJraXRBbmlt
YXRpb24pOworICAgICAgfQorICAgIH0KKworCisgICAgcmV0dXJuIHsKKyAgICAgIC8vIEFuZHJv
aWQgaGFzIGhpc3RvcnkucHVzaFN0YXRlLCBidXQgaXQgZG9lcyBub3QgdXBkYXRlIGxvY2F0aW9u
IGNvcnJlY3RseQorICAgICAgLy8gc28gbGV0J3Mgbm90IHVzZSB0aGUgaGlzdG9yeSBBUEkgYXQg
YWxsLgorICAgICAgLy8gaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2FuZHJvaWQvaXNzdWVzL2Rl
dGFpbD9pZD0xNzQ3MQorICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxh
ci5qcy9pc3N1ZXMvOTA0CisKKyAgICAgIC8vIG9sZGVyIHdlYmtpdCBicm93c2VyICg1MzMuOSkg
b24gQm94ZWUgYm94IGhhcyBleGFjdGx5IHRoZSBzYW1lIHByb2JsZW0gYXMgQW5kcm9pZCBoYXMK
KyAgICAgIC8vIHNvIGxldCdzIG5vdCB1c2UgdGhlIGhpc3RvcnkgQVBJIGFsc28KKyAgICAgIC8v
IFdlIGFyZSBwdXJwb3NlZnVsbHkgdXNpbmcgYCEoYW5kcm9pZCA8IDQpYCB0byBjb3ZlciB0aGUg
Y2FzZSB3aGVuIGBhbmRyb2lkYCBpcyB1bmRlZmluZWQKKyAgICAgIC8vIGpzaGludCAtVzAxOAor
ICAgICAgaGlzdG9yeTogISEoJHdpbmRvdy5oaXN0b3J5ICYmICR3aW5kb3cuaGlzdG9yeS5wdXNo
U3RhdGUgJiYgIShhbmRyb2lkIDwgNCkgJiYgIWJveGVlKSwKKyAgICAgIC8vIGpzaGludCArVzAx
OAorICAgICAgaGFzRXZlbnQ6IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIC8vIElFOSBpbXBs
ZW1lbnRzICdpbnB1dCcgZXZlbnQgaXQncyBzbyBmdWJhcmVkIHRoYXQgd2UgcmF0aGVyIHByZXRl
bmQgdGhhdCBpdCBkb2Vzbid0IGhhdmUKKyAgICAgICAgLy8gaXQuIEluIHBhcnRpY3VsYXIgdGhl
IGV2ZW50IGlzIG5vdCBmaXJlZCB3aGVuIGJhY2tzcGFjZSBvciBkZWxldGUga2V5IGFyZSBwcmVz
c2VkIG9yCisgICAgICAgIC8vIHdoZW4gY3V0IG9wZXJhdGlvbiBpcyBwZXJmb3JtZWQuCisgICAg
ICAgIC8vIElFMTArIGltcGxlbWVudHMgJ2lucHV0JyBldmVudCBidXQgaXQgZXJyb25lb3VzbHkg
ZmlyZXMgdW5kZXIgdmFyaW91cyBzaXR1YXRpb25zLAorICAgICAgICAvLyBlLmcuIHdoZW4gcGxh
Y2Vob2xkZXIgY2hhbmdlcywgb3IgYSBmb3JtIGlzIGZvY3VzZWQuCisgICAgICAgIGlmIChldmVu
dCA9PT0gJ2lucHV0JyAmJiBtc2llIDw9IDExKSByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaWYg
KGlzVW5kZWZpbmVkKGV2ZW50U3VwcG9ydFtldmVudF0pKSB7CisgICAgICAgICAgdmFyIGRpdkVs
bSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICAgIGV2ZW50U3VwcG9y
dFtldmVudF0gPSAnb24nICsgZXZlbnQgaW4gZGl2RWxtOworICAgICAgICB9CisKKyAgICAgICAg
cmV0dXJuIGV2ZW50U3VwcG9ydFtldmVudF07CisgICAgICB9LAorICAgICAgY3NwOiBjc3AoKSwK
KyAgICAgIHZlbmRvclByZWZpeDogdmVuZG9yUHJlZml4LAorICAgICAgdHJhbnNpdGlvbnM6IHRy
YW5zaXRpb25zLAorICAgICAgYW5pbWF0aW9uczogYW5pbWF0aW9ucywKKyAgICAgIGFuZHJvaWQ6
IGFuZHJvaWQKKyAgICB9OworICB9XTsKK30KKwordmFyICRjb21waWxlTWluRXJyID0gbWluRXJy
KCckY29tcGlsZScpOworCisvKioKKyAqIEBuZ2RvYyBzZXJ2aWNlCisgKiBAbmFtZSAkdGVtcGxh
dGVSZXF1ZXN0CisgKgorICogQGRlc2NyaXB0aW9uCisgKiBUaGUgYCR0ZW1wbGF0ZVJlcXVlc3Rg
IHNlcnZpY2UgcnVucyBzZWN1cml0eSBjaGVja3MgdGhlbiBkb3dubG9hZHMgdGhlIHByb3ZpZGVk
IHRlbXBsYXRlIHVzaW5nCisgKiBgJGh0dHBgIGFuZCwgdXBvbiBzdWNjZXNzLCBzdG9yZXMgdGhl
IGNvbnRlbnRzIGluc2lkZSBvZiBgJHRlbXBsYXRlQ2FjaGVgLiBJZiB0aGUgSFRUUCByZXF1ZXN0
CisgKiBmYWlscyBvciB0aGUgcmVzcG9uc2UgZGF0YSBvZiB0aGUgSFRUUCByZXF1ZXN0IGlzIGVt
cHR5LCBhIGAkY29tcGlsZWAgZXJyb3Igd2lsbCBiZSB0aHJvd24gKHRoZQorICogZXhjZXB0aW9u
IGNhbiBiZSB0aHdhcnRlZCBieSBzZXR0aW5nIHRoZSAybmQgcGFyYW1ldGVyIG9mIHRoZSBmdW5j
dGlvbiB0byB0cnVlKS4gTm90ZSB0aGF0IHRoZQorICogY29udGVudHMgb2YgYCR0ZW1wbGF0ZUNh
Y2hlYCBhcmUgdHJ1c3RlZCwgc28gdGhlIGNhbGwgdG8gYCRzY2UuZ2V0VHJ1c3RlZFVybCh0cGwp
YCBpcyBvbWl0dGVkCisgKiB3aGVuIGB0cGxgIGlzIG9mIHR5cGUgc3RyaW5nIGFuZCBgJHRlbXBs
YXRlQ2FjaGVgIGhhcyB0aGUgbWF0Y2hpbmcgZW50cnkuCisgKgorICogQHBhcmFtIHtzdHJpbmd8
VHJ1c3RlZFJlc291cmNlVXJsfSB0cGwgVGhlIEhUVFAgcmVxdWVzdCB0ZW1wbGF0ZSBVUkwKKyAq
IEBwYXJhbSB7Ym9vbGVhbj19IGlnbm9yZVJlcXVlc3RFcnJvciBXaGV0aGVyIG9yIG5vdCB0byBp
Z25vcmUgdGhlIGV4Y2VwdGlvbiB3aGVuIHRoZSByZXF1ZXN0IGZhaWxzIG9yIHRoZSB0ZW1wbGF0
ZSBpcyBlbXB0eQorICoKKyAqIEByZXR1cm4ge1Byb21pc2V9IGEgcHJvbWlzZSBmb3IgdGhlIEhU
VFAgcmVzcG9uc2UgZGF0YSBvZiB0aGUgZ2l2ZW4gVVJMLgorICoKKyAqIEBwcm9wZXJ0eSB7bnVt
YmVyfSB0b3RhbFBlbmRpbmdSZXF1ZXN0cyB0b3RhbCBhbW91bnQgb2YgcGVuZGluZyB0ZW1wbGF0
ZSByZXF1ZXN0cyBiZWluZyBkb3dubG9hZGVkLgorICovCitmdW5jdGlvbiAkVGVtcGxhdGVSZXF1
ZXN0UHJvdmlkZXIoKSB7CisgIHRoaXMuJGdldCA9IFsnJHRlbXBsYXRlQ2FjaGUnLCAnJGh0dHAn
LCAnJHEnLCAnJHNjZScsIGZ1bmN0aW9uKCR0ZW1wbGF0ZUNhY2hlLCAkaHR0cCwgJHEsICRzY2Up
IHsKKyAgICBmdW5jdGlvbiBoYW5kbGVSZXF1ZXN0Rm4odHBsLCBpZ25vcmVSZXF1ZXN0RXJyb3Ip
IHsKKyAgICAgIGhhbmRsZVJlcXVlc3RGbi50b3RhbFBlbmRpbmdSZXF1ZXN0cysrOworCisgICAg
ICAvLyBXZSBjb25zaWRlciB0aGUgdGVtcGxhdGUgY2FjaGUgaG9sZHMgb25seSB0cnVzdGVkIHRl
bXBsYXRlcywgc28KKyAgICAgIC8vIHRoZXJlJ3Mgbm8gbmVlZCB0byBnbyB0aHJvdWdoIHdoaXRl
bGlzdGluZyBhZ2FpbiBmb3Iga2V5cyB0aGF0IGFscmVhZHkKKyAgICAgIC8vIGFyZSBpbmNsdWRl
ZCBpbiB0aGVyZS4gVGhpcyBhbHNvIG1ha2VzIEFuZ3VsYXIgYWNjZXB0IGFueSBzY3JpcHQKKyAg
ICAgIC8vIGRpcmVjdGl2ZSwgbm8gbWF0dGVyIGl0cyBuYW1lLiBIb3dldmVyLCB3ZSBzdGlsbCBu
ZWVkIHRvIHVud3JhcCB0cnVzdGVkCisgICAgICAvLyB0eXBlcy4KKyAgICAgIGlmICghaXNTdHJp
bmcodHBsKSB8fCAhJHRlbXBsYXRlQ2FjaGUuZ2V0KHRwbCkpIHsKKyAgICAgICAgdHBsID0gJHNj
ZS5nZXRUcnVzdGVkUmVzb3VyY2VVcmwodHBsKTsKKyAgICAgIH0KKworICAgICAgdmFyIHRyYW5z
Zm9ybVJlc3BvbnNlID0gJGh0dHAuZGVmYXVsdHMgJiYgJGh0dHAuZGVmYXVsdHMudHJhbnNmb3Jt
UmVzcG9uc2U7CisKKyAgICAgIGlmIChpc0FycmF5KHRyYW5zZm9ybVJlc3BvbnNlKSkgeworICAg
ICAgICB0cmFuc2Zvcm1SZXNwb25zZSA9IHRyYW5zZm9ybVJlc3BvbnNlLmZpbHRlcihmdW5jdGlv
bih0cmFuc2Zvcm1lcikgeworICAgICAgICAgIHJldHVybiB0cmFuc2Zvcm1lciAhPT0gZGVmYXVs
dEh0dHBSZXNwb25zZVRyYW5zZm9ybTsKKyAgICAgICAgfSk7CisgICAgICB9IGVsc2UgaWYgKHRy
YW5zZm9ybVJlc3BvbnNlID09PSBkZWZhdWx0SHR0cFJlc3BvbnNlVHJhbnNmb3JtKSB7CisgICAg
ICAgIHRyYW5zZm9ybVJlc3BvbnNlID0gbnVsbDsKKyAgICAgIH0KKworICAgICAgdmFyIGh0dHBP
cHRpb25zID0geworICAgICAgICBjYWNoZTogJHRlbXBsYXRlQ2FjaGUsCisgICAgICAgIHRyYW5z
Zm9ybVJlc3BvbnNlOiB0cmFuc2Zvcm1SZXNwb25zZQorICAgICAgfTsKKworICAgICAgcmV0dXJu
ICRodHRwLmdldCh0cGwsIGh0dHBPcHRpb25zKQorICAgICAgICBbJ2ZpbmFsbHknXShmdW5jdGlv
bigpIHsKKyAgICAgICAgICBoYW5kbGVSZXF1ZXN0Rm4udG90YWxQZW5kaW5nUmVxdWVzdHMtLTsK
KyAgICAgICAgfSkKKyAgICAgICAgLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHsKKyAgICAgICAg
ICAkdGVtcGxhdGVDYWNoZS5wdXQodHBsLCByZXNwb25zZS5kYXRhKTsKKyAgICAgICAgICByZXR1
cm4gcmVzcG9uc2UuZGF0YTsKKyAgICAgICAgfSwgaGFuZGxlRXJyb3IpOworCisgICAgICBmdW5j
dGlvbiBoYW5kbGVFcnJvcihyZXNwKSB7CisgICAgICAgIGlmICghaWdub3JlUmVxdWVzdEVycm9y
KSB7CisgICAgICAgICAgdGhyb3cgJGNvbXBpbGVNaW5FcnIoJ3RwbG9hZCcsICdGYWlsZWQgdG8g
bG9hZCB0ZW1wbGF0ZTogezB9IChIVFRQIHN0YXR1czogezF9IHsyfSknLAorICAgICAgICAgICAg
dHBsLCByZXNwLnN0YXR1cywgcmVzcC5zdGF0dXNUZXh0KTsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm4gJHEucmVqZWN0KHJlc3ApOworICAgICAgfQorICAgIH0KKworICAgIGhhbmRsZVJlcXVl
c3RGbi50b3RhbFBlbmRpbmdSZXF1ZXN0cyA9IDA7CisKKyAgICByZXR1cm4gaGFuZGxlUmVxdWVz
dEZuOworICB9XTsKK30KKworZnVuY3Rpb24gJCRUZXN0YWJpbGl0eVByb3ZpZGVyKCkgeworICB0
aGlzLiRnZXQgPSBbJyRyb290U2NvcGUnLCAnJGJyb3dzZXInLCAnJGxvY2F0aW9uJywKKyAgICAg
ICBmdW5jdGlvbigkcm9vdFNjb3BlLCAgICRicm93c2VyLCAgICRsb2NhdGlvbikgeworCisgICAg
LyoqCisgICAgICogQG5hbWUgJHRlc3RhYmlsaXR5CisgICAgICoKKyAgICAgKiBAZGVzY3JpcHRp
b24KKyAgICAgKiBUaGUgcHJpdmF0ZSAkJHRlc3RhYmlsaXR5IHNlcnZpY2UgcHJvdmlkZXMgYSBj
b2xsZWN0aW9uIG9mIG1ldGhvZHMgZm9yIHVzZSB3aGVuIGRlYnVnZ2luZworICAgICAqIG9yIGJ5
IGF1dG9tYXRlZCB0ZXN0IGFuZCBkZWJ1Z2dpbmcgdG9vbHMuCisgICAgICovCisgICAgdmFyIHRl
c3RhYmlsaXR5ID0ge307CisKKyAgICAvKioKKyAgICAgKiBAbmFtZSAkJHRlc3RhYmlsaXR5I2Zp
bmRCaW5kaW5ncworICAgICAqCisgICAgICogQGRlc2NyaXB0aW9uCisgICAgICogUmV0dXJucyBh
biBhcnJheSBvZiBlbGVtZW50cyB0aGF0IGFyZSBib3VuZCAodmlhIG5nLWJpbmQgb3Ige3t9fSkK
KyAgICAgKiB0byBleHByZXNzaW9ucyBtYXRjaGluZyB0aGUgaW5wdXQuCisgICAgICoKKyAgICAg
KiBAcGFyYW0ge0VsZW1lbnR9IGVsZW1lbnQgVGhlIGVsZW1lbnQgcm9vdCB0byBzZWFyY2ggZnJv
bS4KKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZXhwcmVzc2lvbiBUaGUgYmluZGluZyBleHByZXNz
aW9uIHRvIG1hdGNoLgorICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0X2V4YWN0TWF0Y2ggSWYg
dHJ1ZSwgb25seSByZXR1cm5zIGV4YWN0IG1hdGNoZXMKKyAgICAgKiAgICAgZm9yIHRoZSBleHBy
ZXNzaW9uLiBGaWx0ZXJzIGFuZCB3aGl0ZXNwYWNlIGFyZSBpZ25vcmVkLgorICAgICAqLworICAg
IHRlc3RhYmlsaXR5LmZpbmRCaW5kaW5ncyA9IGZ1bmN0aW9uKGVsZW1lbnQsIGV4cHJlc3Npb24s
IG9wdF9leGFjdE1hdGNoKSB7CisgICAgICB2YXIgYmluZGluZ3MgPSBlbGVtZW50LmdldEVsZW1l
bnRzQnlDbGFzc05hbWUoJ25nLWJpbmRpbmcnKTsKKyAgICAgIHZhciBtYXRjaGVzID0gW107Cisg
ICAgICBmb3JFYWNoKGJpbmRpbmdzLCBmdW5jdGlvbihiaW5kaW5nKSB7CisgICAgICAgIHZhciBk
YXRhQmluZGluZyA9IGFuZ3VsYXIuZWxlbWVudChiaW5kaW5nKS5kYXRhKCckYmluZGluZycpOwor
ICAgICAgICBpZiAoZGF0YUJpbmRpbmcpIHsKKyAgICAgICAgICBmb3JFYWNoKGRhdGFCaW5kaW5n
LCBmdW5jdGlvbihiaW5kaW5nTmFtZSkgeworICAgICAgICAgICAgaWYgKG9wdF9leGFjdE1hdGNo
KSB7CisgICAgICAgICAgICAgIHZhciBtYXRjaGVyID0gbmV3IFJlZ0V4cCgnKF58XFxzKScgKyBl
c2NhcGVGb3JSZWdleHAoZXhwcmVzc2lvbikgKyAnKFxcc3xcXHx8JCknKTsKKyAgICAgICAgICAg
ICAgaWYgKG1hdGNoZXIudGVzdChiaW5kaW5nTmFtZSkpIHsKKyAgICAgICAgICAgICAgICBtYXRj
aGVzLnB1c2goYmluZGluZyk7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgIGlmIChiaW5kaW5nTmFtZS5pbmRleE9mKGV4cHJlc3Npb24pICE9IC0x
KSB7CisgICAgICAgICAgICAgICAgbWF0Y2hlcy5wdXNoKGJpbmRpbmcpOworICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICAgIH0pOwor
ICAgICAgcmV0dXJuIG1hdGNoZXM7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBuYW1lICQk
dGVzdGFiaWxpdHkjZmluZE1vZGVscworICAgICAqCisgICAgICogQGRlc2NyaXB0aW9uCisgICAg
ICogUmV0dXJucyBhbiBhcnJheSBvZiBlbGVtZW50cyB0aGF0IGFyZSB0d28td2F5IGZvdW5kIHZp
YSBuZy1tb2RlbCB0bworICAgICAqIGV4cHJlc3Npb25zIG1hdGNoaW5nIHRoZSBpbnB1dC4KKyAg
ICAgKgorICAgICAqIEBwYXJhbSB7RWxlbWVudH0gZWxlbWVudCBUaGUgZWxlbWVudCByb290IHRv
IHNlYXJjaCBmcm9tLgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBleHByZXNzaW9uIFRoZSBtb2Rl
bCBleHByZXNzaW9uIHRvIG1hdGNoLgorICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0X2V4YWN0
TWF0Y2ggSWYgdHJ1ZSwgb25seSByZXR1cm5zIGV4YWN0IG1hdGNoZXMKKyAgICAgKiAgICAgZm9y
IHRoZSBleHByZXNzaW9uLgorICAgICAqLworICAgIHRlc3RhYmlsaXR5LmZpbmRNb2RlbHMgPSBm
dW5jdGlvbihlbGVtZW50LCBleHByZXNzaW9uLCBvcHRfZXhhY3RNYXRjaCkgeworICAgICAgdmFy
IHByZWZpeGVzID0gWyduZy0nLCAnZGF0YS1uZy0nLCAnbmdcXDonXTsKKyAgICAgIGZvciAodmFy
IHAgPSAwOyBwIDwgcHJlZml4ZXMubGVuZ3RoOyArK3ApIHsKKyAgICAgICAgdmFyIGF0dHJpYnV0
ZUVxdWFscyA9IG9wdF9leGFjdE1hdGNoID8gJz0nIDogJyo9JzsKKyAgICAgICAgdmFyIHNlbGVj
dG9yID0gJ1snICsgcHJlZml4ZXNbcF0gKyAnbW9kZWwnICsgYXR0cmlidXRlRXF1YWxzICsgJyIn
ICsgZXhwcmVzc2lvbiArICciXSc7CisgICAgICAgIHZhciBlbGVtZW50cyA9IGVsZW1lbnQucXVl
cnlTZWxlY3RvckFsbChzZWxlY3Rvcik7CisgICAgICAgIGlmIChlbGVtZW50cy5sZW5ndGgpIHsK
KyAgICAgICAgICByZXR1cm4gZWxlbWVudHM7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9Owor
CisgICAgLyoqCisgICAgICogQG5hbWUgJCR0ZXN0YWJpbGl0eSNnZXRMb2NhdGlvbgorICAgICAq
CisgICAgICogQGRlc2NyaXB0aW9uCisgICAgICogU2hvcnRjdXQgZm9yIGdldHRpbmcgdGhlIGxv
Y2F0aW9uIGluIGEgYnJvd3NlciBhZ25vc3RpYyB3YXkuIFJldHVybnMKKyAgICAgKiAgICAgdGhl
IHBhdGgsIHNlYXJjaCwgYW5kIGhhc2guIChlLmcuIC9wYXRoP2E9YiNoYXNoKQorICAgICAqLwor
ICAgIHRlc3RhYmlsaXR5LmdldExvY2F0aW9uID0gZnVuY3Rpb24oKSB7CisgICAgICByZXR1cm4g
JGxvY2F0aW9uLnVybCgpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAbmFtZSAkJHRlc3Rh
YmlsaXR5I3NldExvY2F0aW9uCisgICAgICoKKyAgICAgKiBAZGVzY3JpcHRpb24KKyAgICAgKiBT
aG9ydGN1dCBmb3IgbmF2aWdhdGluZyB0byBhIGxvY2F0aW9uIHdpdGhvdXQgZG9pbmcgYSBmdWxs
IHBhZ2UgcmVsb2FkLgorICAgICAqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IHVybCBUaGUgbG9j
YXRpb24gdXJsIChwYXRoLCBzZWFyY2ggYW5kIGhhc2gsCisgICAgICogICAgIGUuZy4gL3BhdGg/
YT1iI2hhc2gpIHRvIGdvIHRvLgorICAgICAqLworICAgIHRlc3RhYmlsaXR5LnNldExvY2F0aW9u
ID0gZnVuY3Rpb24odXJsKSB7CisgICAgICBpZiAodXJsICE9PSAkbG9jYXRpb24udXJsKCkpIHsK
KyAgICAgICAgJGxvY2F0aW9uLnVybCh1cmwpOworICAgICAgICAkcm9vdFNjb3BlLiRkaWdlc3Qo
KTsKKyAgICAgIH0KKyAgICB9OworCisgICAgLyoqCisgICAgICogQG5hbWUgJCR0ZXN0YWJpbGl0
eSN3aGVuU3RhYmxlCisgICAgICoKKyAgICAgKiBAZGVzY3JpcHRpb24KKyAgICAgKiBDYWxscyB0
aGUgY2FsbGJhY2sgd2hlbiAkdGltZW91dCBhbmQgJGh0dHAgcmVxdWVzdHMgYXJlIGNvbXBsZXRl
ZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrCisgICAgICovCisg
ICAgdGVzdGFiaWxpdHkud2hlblN0YWJsZSA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7CisgICAgICAk
YnJvd3Nlci5ub3RpZnlXaGVuTm9PdXRzdGFuZGluZ1JlcXVlc3RzKGNhbGxiYWNrKTsKKyAgICB9
OworCisgICAgcmV0dXJuIHRlc3RhYmlsaXR5OworICB9XTsKK30KKworZnVuY3Rpb24gJFRpbWVv
dXRQcm92aWRlcigpIHsKKyAgdGhpcy4kZ2V0ID0gWyckcm9vdFNjb3BlJywgJyRicm93c2VyJywg
JyRxJywgJyQkcScsICckZXhjZXB0aW9uSGFuZGxlcicsCisgICAgICAgZnVuY3Rpb24oJHJvb3RT
Y29wZSwgICAkYnJvd3NlciwgICAkcSwgICAkJHEsICAgJGV4Y2VwdGlvbkhhbmRsZXIpIHsKKwor
ICAgIHZhciBkZWZlcnJlZHMgPSB7fTsKKworCisgICAgIC8qKgorICAgICAgKiBAbmdkb2Mgc2Vy
dmljZQorICAgICAgKiBAbmFtZSAkdGltZW91dAorICAgICAgKgorICAgICAgKiBAZGVzY3JpcHRp
b24KKyAgICAgICogQW5ndWxhcidzIHdyYXBwZXIgZm9yIGB3aW5kb3cuc2V0VGltZW91dGAuIFRo
ZSBgZm5gIGZ1bmN0aW9uIGlzIHdyYXBwZWQgaW50byBhIHRyeS9jYXRjaAorICAgICAgKiBibG9j
ayBhbmQgZGVsZWdhdGVzIGFueSBleGNlcHRpb25zIHRvCisgICAgICAqIHtAbGluayBuZy4kZXhj
ZXB0aW9uSGFuZGxlciAkZXhjZXB0aW9uSGFuZGxlcn0gc2VydmljZS4KKyAgICAgICoKKyAgICAg
ICogVGhlIHJldHVybiB2YWx1ZSBvZiBjYWxsaW5nIGAkdGltZW91dGAgaXMgYSBwcm9taXNlLCB3
aGljaCB3aWxsIGJlIHJlc29sdmVkIHdoZW4KKyAgICAgICogdGhlIGRlbGF5IGhhcyBwYXNzZWQg
YW5kIHRoZSB0aW1lb3V0IGZ1bmN0aW9uLCBpZiBwcm92aWRlZCwgaXMgZXhlY3V0ZWQuCisgICAg
ICAqCisgICAgICAqIFRvIGNhbmNlbCBhIHRpbWVvdXQgcmVxdWVzdCwgY2FsbCBgJHRpbWVvdXQu
Y2FuY2VsKHByb21pc2UpYC4KKyAgICAgICoKKyAgICAgICogSW4gdGVzdHMgeW91IGNhbiB1c2Ug
e0BsaW5rIG5nTW9jay4kdGltZW91dCBgJHRpbWVvdXQuZmx1c2goKWB9IHRvCisgICAgICAqIHN5
bmNocm9ub3VzbHkgZmx1c2ggdGhlIHF1ZXVlIG9mIGRlZmVycmVkIGZ1bmN0aW9ucy4KKyAgICAg
ICoKKyAgICAgICogSWYgeW91IG9ubHkgd2FudCBhIHByb21pc2UgdGhhdCB3aWxsIGJlIHJlc29s
dmVkIGFmdGVyIHNvbWUgc3BlY2lmaWVkIGRlbGF5CisgICAgICAqIHRoZW4geW91IGNhbiBjYWxs
IGAkdGltZW91dGAgd2l0aG91dCB0aGUgYGZuYCBmdW5jdGlvbi4KKyAgICAgICoKKyAgICAgICog
QHBhcmFtIHtmdW5jdGlvbigpPX0gZm4gQSBmdW5jdGlvbiwgd2hvc2UgZXhlY3V0aW9uIHNob3Vs
ZCBiZSBkZWxheWVkLgorICAgICAgKiBAcGFyYW0ge251bWJlcj19IFtkZWxheT0wXSBEZWxheSBp
biBtaWxsaXNlY29uZHMuCisgICAgICAqIEBwYXJhbSB7Ym9vbGVhbj19IFtpbnZva2VBcHBseT10
cnVlXSBJZiBzZXQgdG8gYGZhbHNlYCBza2lwcyBtb2RlbCBkaXJ0eSBjaGVja2luZywgb3RoZXJ3
aXNlCisgICAgICAqICAgd2lsbCBpbnZva2UgYGZuYCB3aXRoaW4gdGhlIHtAbGluayBuZy4kcm9v
dFNjb3BlLlNjb3BlIyRhcHBseSAkYXBwbHl9IGJsb2NrLgorICAgICAgKiBAcGFyYW0gey4uLio9
fSBQYXNzIGFkZGl0aW9uYWwgcGFyYW1ldGVycyB0byB0aGUgZXhlY3V0ZWQgZnVuY3Rpb24uCisg
ICAgICAqIEByZXR1cm5zIHtQcm9taXNlfSBQcm9taXNlIHRoYXQgd2lsbCBiZSByZXNvbHZlZCB3
aGVuIHRoZSB0aW1lb3V0IGlzIHJlYWNoZWQuIFRoZSB2YWx1ZSB0aGlzCisgICAgICAqICAgcHJv
bWlzZSB3aWxsIGJlIHJlc29sdmVkIHdpdGggaXMgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgYGZu
YCBmdW5jdGlvbi4KKyAgICAgICoKKyAgICAgICovCisgICAgZnVuY3Rpb24gdGltZW91dChmbiwg
ZGVsYXksIGludm9rZUFwcGx5KSB7CisgICAgICBpZiAoIWlzRnVuY3Rpb24oZm4pKSB7CisgICAg
ICAgIGludm9rZUFwcGx5ID0gZGVsYXk7CisgICAgICAgIGRlbGF5ID0gZm47CisgICAgICAgIGZu
ID0gbm9vcDsKKyAgICAgIH0KKworICAgICAgdmFyIGFyZ3MgPSBzbGljZUFyZ3MoYXJndW1lbnRz
LCAzKSwKKyAgICAgICAgICBza2lwQXBwbHkgPSAoaXNEZWZpbmVkKGludm9rZUFwcGx5KSAmJiAh
aW52b2tlQXBwbHkpLAorICAgICAgICAgIGRlZmVycmVkID0gKHNraXBBcHBseSA/ICQkcSA6ICRx
KS5kZWZlcigpLAorICAgICAgICAgIHByb21pc2UgPSBkZWZlcnJlZC5wcm9taXNlLAorICAgICAg
ICAgIHRpbWVvdXRJZDsKKworICAgICAgdGltZW91dElkID0gJGJyb3dzZXIuZGVmZXIoZnVuY3Rp
b24oKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZShmbi5hcHBs
eShudWxsLCBhcmdzKSk7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICBkZWZlcnJl
ZC5yZWplY3QoZSk7CisgICAgICAgICAgJGV4Y2VwdGlvbkhhbmRsZXIoZSk7CisgICAgICAgIH0K
KyAgICAgICAgZmluYWxseSB7CisgICAgICAgICAgZGVsZXRlIGRlZmVycmVkc1twcm9taXNlLiQk
dGltZW91dElkXTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghc2tpcEFwcGx5KSAkcm9vdFNj
b3BlLiRhcHBseSgpOworICAgICAgfSwgZGVsYXkpOworCisgICAgICBwcm9taXNlLiQkdGltZW91
dElkID0gdGltZW91dElkOworICAgICAgZGVmZXJyZWRzW3RpbWVvdXRJZF0gPSBkZWZlcnJlZDsK
KworICAgICAgcmV0dXJuIHByb21pc2U7CisgICAgfQorCisKKyAgICAgLyoqCisgICAgICAqIEBu
Z2RvYyBtZXRob2QKKyAgICAgICogQG5hbWUgJHRpbWVvdXQjY2FuY2VsCisgICAgICAqCisgICAg
ICAqIEBkZXNjcmlwdGlvbgorICAgICAgKiBDYW5jZWxzIGEgdGFzayBhc3NvY2lhdGVkIHdpdGgg
dGhlIGBwcm9taXNlYC4gQXMgYSByZXN1bHQgb2YgdGhpcywgdGhlIHByb21pc2Ugd2lsbCBiZQor
ICAgICAgKiByZXNvbHZlZCB3aXRoIGEgcmVqZWN0aW9uLgorICAgICAgKgorICAgICAgKiBAcGFy
YW0ge1Byb21pc2U9fSBwcm9taXNlIFByb21pc2UgcmV0dXJuZWQgYnkgdGhlIGAkdGltZW91dGAg
ZnVuY3Rpb24uCisgICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0
aGUgdGFzayBoYXNuJ3QgZXhlY3V0ZWQgeWV0IGFuZCB3YXMgc3VjY2Vzc2Z1bGx5CisgICAgICAq
ICAgY2FuY2VsZWQuCisgICAgICAqLworICAgIHRpbWVvdXQuY2FuY2VsID0gZnVuY3Rpb24ocHJv
bWlzZSkgeworICAgICAgaWYgKHByb21pc2UgJiYgcHJvbWlzZS4kJHRpbWVvdXRJZCBpbiBkZWZl
cnJlZHMpIHsKKyAgICAgICAgZGVmZXJyZWRzW3Byb21pc2UuJCR0aW1lb3V0SWRdLnJlamVjdCgn
Y2FuY2VsZWQnKTsKKyAgICAgICAgZGVsZXRlIGRlZmVycmVkc1twcm9taXNlLiQkdGltZW91dElk
XTsKKyAgICAgICAgcmV0dXJuICRicm93c2VyLmRlZmVyLmNhbmNlbChwcm9taXNlLiQkdGltZW91
dElkKTsKKyAgICAgIH0KKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9OworCisgICAgcmV0dXJu
IHRpbWVvdXQ7CisgIH1dOworfQorCisvLyBOT1RFOiAgVGhlIHVzYWdlIG9mIHdpbmRvdyBhbmQg
ZG9jdW1lbnQgaW5zdGVhZCBvZiAkd2luZG93IGFuZCAkZG9jdW1lbnQgaGVyZSBpcworLy8gZGVs
aWJlcmF0ZS4gIFRoaXMgc2VydmljZSBkZXBlbmRzIG9uIHRoZSBzcGVjaWZpYyBiZWhhdmlvciBv
ZiBhbmNob3Igbm9kZXMgY3JlYXRlZCBieSB0aGUKKy8vIGJyb3dzZXIgKHJlc29sdmluZyBhbmQg
cGFyc2luZyBVUkxzKSB0aGF0IGlzIHVubGlrZWx5IHRvIGJlIHByb3ZpZGVkIGJ5IG1vY2sgb2Jq
ZWN0cyBhbmQKKy8vIGNhdXNlIHVzIHRvIGJyZWFrIHRlc3RzLiAgSW4gYWRkaXRpb24sIHdoZW4g
dGhlIGJyb3dzZXIgcmVzb2x2ZXMgYSBVUkwgZm9yIFhIUiwgaXQKKy8vIGRvZXNuJ3Qga25vdyBh
Ym91dCBtb2NrZWQgbG9jYXRpb25zIGFuZCByZXNvbHZlcyBVUkxzIHRvIHRoZSByZWFsIGRvY3Vt
ZW50IC0gd2hpY2ggaXMKKy8vIGV4YWN0bHkgdGhlIGJlaGF2aW9yIG5lZWRlZCBoZXJlLiAgVGhl
cmUgaXMgbGl0dGxlIHZhbHVlIGlzIG1vY2tpbmcgdGhlc2Ugb3V0IGZvciB0aGlzCisvLyBzZXJ2
aWNlLgordmFyIHVybFBhcnNpbmdOb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpOwor
dmFyIG9yaWdpblVybCA9IHVybFJlc29sdmUod2luZG93LmxvY2F0aW9uLmhyZWYpOworCisKKy8q
KgorICoKKyAqIEltcGxlbWVudGF0aW9uIE5vdGVzIGZvciBub24tSUUgYnJvd3NlcnMKKyAqIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIEFzc2lnbmluZyBhIFVS
TCB0byB0aGUgaHJlZiBwcm9wZXJ0eSBvZiBhbiBhbmNob3IgRE9NIG5vZGUsIGV2ZW4gb25lIGF0
dGFjaGVkIHRvIHRoZSBET00sCisgKiByZXN1bHRzIGJvdGggaW4gdGhlIG5vcm1hbGl6aW5nIGFu
ZCBwYXJzaW5nIG9mIHRoZSBVUkwuICBOb3JtYWxpemluZyBtZWFucyB0aGF0IGEgcmVsYXRpdmUK
KyAqIFVSTCB3aWxsIGJlIHJlc29sdmVkIGludG8gYW4gYWJzb2x1dGUgVVJMIGluIHRoZSBjb250
ZXh0IG9mIHRoZSBhcHBsaWNhdGlvbiBkb2N1bWVudC4KKyAqIFBhcnNpbmcgbWVhbnMgdGhhdCB0
aGUgYW5jaG9yIG5vZGUncyBob3N0LCBob3N0bmFtZSwgcHJvdG9jb2wsIHBvcnQsIHBhdGhuYW1l
IGFuZCByZWxhdGVkCisgKiBwcm9wZXJ0aWVzIGFyZSBhbGwgcG9wdWxhdGVkIHRvIHJlZmxlY3Qg
dGhlIG5vcm1hbGl6ZWQgVVJMLiAgVGhpcyBhcHByb2FjaCBoYXMgd2lkZQorICogY29tcGF0aWJp
bGl0eSAtIFNhZmFyaSAxKywgTW96aWxsYSAxKywgT3BlcmEgNyssZSBldGMuICBTZWUKKyAqIGh0
dHA6Ly93d3cuYXB0YW5hLmNvbS9yZWZlcmVuY2UvaHRtbC9hcGkvSFRNTEFuY2hvckVsZW1lbnQu
aHRtbAorICoKKyAqIEltcGxlbWVudGF0aW9uIE5vdGVzIGZvciBJRQorICogLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisgKiBJRSA+PSA4IGFuZCA8PSAxMCBub3JtYWxpemVzIHRoZSBVUkwg
d2hlbiBhc3NpZ25lZCB0byB0aGUgYW5jaG9yIG5vZGUgc2ltaWxhciB0byB0aGUgb3RoZXIKKyAq
IGJyb3dzZXJzLiAgSG93ZXZlciwgdGhlIHBhcnNlZCBjb21wb25lbnRzIHdpbGwgbm90IGJlIHNl
dCBpZiB0aGUgVVJMIGFzc2lnbmVkIGRpZCBub3Qgc3BlY2lmeQorICogdGhlbS4gIChlLmcuIGlm
IHlvdSBhc3NpZ24gYS5ocmVmID0gImZvbyIsIHRoZW4gYS5wcm90b2NvbCwgYS5ob3N0LCBldGMu
IHdpbGwgYmUgZW1wdHkuKSAgV2UKKyAqIHdvcmsgYXJvdW5kIHRoYXQgYnkgcGVyZm9ybWluZyB0
aGUgcGFyc2luZyBpbiBhIDJuZCBzdGVwIGJ5IHRha2luZyBhIHByZXZpb3VzbHkgbm9ybWFsaXpl
ZAorICogVVJMIChlLmcuIGJ5IGFzc2lnbmluZyB0byBhLmhyZWYpIGFuZCBhc3NpZ25pbmcgaXQg
YS5ocmVmIGFnYWluLiAgVGhpcyBjb3JyZWN0bHkgcG9wdWxhdGVzIHRoZQorICogcHJvcGVydGll
cyBzdWNoIGFzIHByb3RvY29sLCBob3N0bmFtZSwgcG9ydCwgZXRjLgorICoKKyAqIElFNyBkb2Vz
IG5vdCBub3JtYWxpemUgdGhlIFVSTCB3aGVuIGFzc2lnbmVkIHRvIGFuIGFuY2hvciBub2RlLiAg
KEFwcGFyZW50bHksIGl0IGRvZXMsIGlmIG9uZQorICogdXNlcyB0aGUgaW5uZXIgSFRNTCBhcHBy
b2FjaCB0byBhc3NpZ24gdGhlIFVSTCBhcyBwYXJ0IG9mIGFuIEhUTUwgc25pcHBldCAtCisgKiBo
dHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS80NzI3MjkpICBIb3dldmVyLCBzZXR0aW5nIGltZ1tz
cmNdIGRvZXMgbm9ybWFsaXplIHRoZSBVUkwuCisgKiBVbmZvcnR1bmF0ZWx5LCBzZXR0aW5nIGlt
Z1tzcmNdIHRvIHNvbWV0aGluZyBsaWtlICJqYXZhc2NyaXB0OmZvbyIgb24gSUUgdGhyb3dzIGFu
IGV4Y2VwdGlvbi4KKyAqIFNpbmNlIHRoZSBwcmltYXJ5IHVzYWdlIGZvciBub3JtYWxpemluZyBV
UkxzIGlzIHRvIHNhbml0aXplIHN1Y2ggVVJMcywgd2UgY2FuJ3QgdXNlIHRoYXQKKyAqIG1ldGhv
ZCBhbmQgSUUgPCA4IGlzIHVuc3VwcG9ydGVkLgorICoKKyAqIFJlZmVyZW5jZXM6CisgKiAgIGh0
dHA6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0hUTUxBbmNob3JF
bGVtZW50CisgKiAgIGh0dHA6Ly93d3cuYXB0YW5hLmNvbS9yZWZlcmVuY2UvaHRtbC9hcGkvSFRN
TEFuY2hvckVsZW1lbnQuaHRtbAorICogICBodHRwOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jdXJs
dXRpbHMKKyAqICAgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci5qcy9wdWxsLzI5
MDIKKyAqICAgaHR0cDovL2phbWVzLnBhZG9sc2V5LmNvbS9qYXZhc2NyaXB0L3BhcnNpbmctdXJs
cy13aXRoLXRoZS1kb20vCisgKgorICogQGtpbmQgZnVuY3Rpb24KKyAqIEBwYXJhbSB7c3RyaW5n
fSB1cmwgVGhlIFVSTCB0byBiZSBwYXJzZWQuCisgKiBAZGVzY3JpcHRpb24gTm9ybWFsaXplcyBh
bmQgcGFyc2VzIGEgVVJMLgorICogQHJldHVybnMge29iamVjdH0gUmV0dXJucyB0aGUgbm9ybWFs
aXplZCBVUkwgYXMgYSBkaWN0aW9uYXJ5LgorICoKKyAqICAgfCBtZW1iZXIgbmFtZSAgIHwgRGVz
Y3JpcHRpb24gICAgfAorICogICB8LS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS18Cisg
KiAgIHwgaHJlZiAgICAgICAgICB8IEEgbm9ybWFsaXplZCB2ZXJzaW9uIG9mIHRoZSBwcm92aWRl
ZCBVUkwgaWYgaXQgd2FzIG5vdCBhbiBhYnNvbHV0ZSBVUkwgfAorICogICB8IHByb3RvY29sICAg
ICAgfCBUaGUgcHJvdG9jb2wgaW5jbHVkaW5nIHRoZSB0cmFpbGluZyBjb2xvbiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwKKyAqICAgfCBob3N0ICAgICAgICAgIHwgVGhlIGhvc3QgYW5k
IHBvcnQgKGlmIHRoZSBwb3J0IGlzIG5vbi1kZWZhdWx0KSBvZiB0aGUgbm9ybWFsaXplZFVybCAg
ICB8CisgKiAgIHwgc2VhcmNoICAgICAgICB8IFRoZSBzZWFyY2ggcGFyYW1zLCBtaW51cyB0aGUg
cXVlc3Rpb24gbWFyayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICogICB8IGhhc2gg
ICAgICAgICAgfCBUaGUgaGFzaCBzdHJpbmcsIG1pbnVzIHRoZSBoYXNoIHN5bWJvbAorICogICB8
IGhvc3RuYW1lICAgICAgfCBUaGUgaG9zdG5hbWUKKyAqICAgfCBwb3J0ICAgICAgICAgIHwgVGhl
IHBvcnQsIHdpdGhvdXQgIjoiCisgKiAgIHwgcGF0aG5hbWUgICAgICB8IFRoZSBwYXRobmFtZSwg
YmVnaW5uaW5nIHdpdGggIi8iCisgKgorICovCitmdW5jdGlvbiB1cmxSZXNvbHZlKHVybCkgewor
ICB2YXIgaHJlZiA9IHVybDsKKworICBpZiAobXNpZSkgeworICAgIC8vIE5vcm1hbGl6ZSBiZWZv
cmUgcGFyc2UuICBSZWZlciBJbXBsZW1lbnRhdGlvbiBOb3RlcyBvbiB3aHkgdGhpcyBpcworICAg
IC8vIGRvbmUgaW4gdHdvIHN0ZXBzIG9uIElFLgorICAgIHVybFBhcnNpbmdOb2RlLnNldEF0dHJp
YnV0ZSgiaHJlZiIsIGhyZWYpOworICAgIGhyZWYgPSB1cmxQYXJzaW5nTm9kZS5ocmVmOworICB9
CisKKyAgdXJsUGFyc2luZ05vZGUuc2V0QXR0cmlidXRlKCdocmVmJywgaHJlZik7CisKKyAgLy8g
dXJsUGFyc2luZ05vZGUgcHJvdmlkZXMgdGhlIFVybFV0aWxzIGludGVyZmFjZSAtIGh0dHA6Ly91
cmwuc3BlYy53aGF0d2cub3JnLyN1cmx1dGlscworICByZXR1cm4geworICAgIGhyZWY6IHVybFBh
cnNpbmdOb2RlLmhyZWYsCisgICAgcHJvdG9jb2w6IHVybFBhcnNpbmdOb2RlLnByb3RvY29sID8g
dXJsUGFyc2luZ05vZGUucHJvdG9jb2wucmVwbGFjZSgvOiQvLCAnJykgOiAnJywKKyAgICBob3N0
OiB1cmxQYXJzaW5nTm9kZS5ob3N0LAorICAgIHNlYXJjaDogdXJsUGFyc2luZ05vZGUuc2VhcmNo
ID8gdXJsUGFyc2luZ05vZGUuc2VhcmNoLnJlcGxhY2UoL15cPy8sICcnKSA6ICcnLAorICAgIGhh
c2g6IHVybFBhcnNpbmdOb2RlLmhhc2ggPyB1cmxQYXJzaW5nTm9kZS5oYXNoLnJlcGxhY2UoL14j
LywgJycpIDogJycsCisgICAgaG9zdG5hbWU6IHVybFBhcnNpbmdOb2RlLmhvc3RuYW1lLAorICAg
IHBvcnQ6IHVybFBhcnNpbmdOb2RlLnBvcnQsCisgICAgcGF0aG5hbWU6ICh1cmxQYXJzaW5nTm9k
ZS5wYXRobmFtZS5jaGFyQXQoMCkgPT09ICcvJykKKyAgICAgID8gdXJsUGFyc2luZ05vZGUucGF0
aG5hbWUKKyAgICAgIDogJy8nICsgdXJsUGFyc2luZ05vZGUucGF0aG5hbWUKKyAgfTsKK30KKwor
LyoqCisgKiBQYXJzZSBhIHJlcXVlc3QgVVJMIGFuZCBkZXRlcm1pbmUgd2hldGhlciB0aGlzIGlz
IGEgc2FtZS1vcmlnaW4gcmVxdWVzdCBhcyB0aGUgYXBwbGljYXRpb24gZG9jdW1lbnQuCisgKgor
ICogQHBhcmFtIHtzdHJpbmd8b2JqZWN0fSByZXF1ZXN0VXJsIFRoZSB1cmwgb2YgdGhlIHJlcXVl
c3QgYXMgYSBzdHJpbmcgdGhhdCB3aWxsIGJlIHJlc29sdmVkCisgKiBvciBhIHBhcnNlZCBVUkwg
b2JqZWN0LgorICogQHJldHVybnMge2Jvb2xlYW59IFdoZXRoZXIgdGhlIHJlcXVlc3QgaXMgZm9y
IHRoZSBzYW1lIG9yaWdpbiBhcyB0aGUgYXBwbGljYXRpb24gZG9jdW1lbnQuCisgKi8KK2Z1bmN0
aW9uIHVybElzU2FtZU9yaWdpbihyZXF1ZXN0VXJsKSB7CisgIHZhciBwYXJzZWQgPSAoaXNTdHJp
bmcocmVxdWVzdFVybCkpID8gdXJsUmVzb2x2ZShyZXF1ZXN0VXJsKSA6IHJlcXVlc3RVcmw7Cisg
IHJldHVybiAocGFyc2VkLnByb3RvY29sID09PSBvcmlnaW5VcmwucHJvdG9jb2wgJiYKKyAgICAg
ICAgICBwYXJzZWQuaG9zdCA9PT0gb3JpZ2luVXJsLmhvc3QpOworfQorCisvKioKKyAqIEBuZ2Rv
YyBzZXJ2aWNlCisgKiBAbmFtZSAkd2luZG93CisgKgorICogQGRlc2NyaXB0aW9uCisgKiBBIHJl
ZmVyZW5jZSB0byB0aGUgYnJvd3NlcidzIGB3aW5kb3dgIG9iamVjdC4gV2hpbGUgYHdpbmRvd2AK
KyAqIGlzIGdsb2JhbGx5IGF2YWlsYWJsZSBpbiBKYXZhU2NyaXB0LCBpdCBjYXVzZXMgdGVzdGFi
aWxpdHkgcHJvYmxlbXMsIGJlY2F1c2UKKyAqIGl0IGlzIGEgZ2xvYmFsIHZhcmlhYmxlLiBJbiBh
bmd1bGFyIHdlIGFsd2F5cyByZWZlciB0byBpdCB0aHJvdWdoIHRoZQorICogYCR3aW5kb3dgIHNl
cnZpY2UsIHNvIGl0IG1heSBiZSBvdmVycmlkZGVuLCByZW1vdmVkIG9yIG1vY2tlZCBmb3IgdGVz
dGluZy4KKyAqCisgKiBFeHByZXNzaW9ucywgbGlrZSB0aGUgb25lIGRlZmluZWQgZm9yIHRoZSBg
bmdDbGlja2AgZGlyZWN0aXZlIGluIHRoZSBleGFtcGxlCisgKiBiZWxvdywgYXJlIGV2YWx1YXRl
ZCB3aXRoIHJlc3BlY3QgdG8gdGhlIGN1cnJlbnQgc2NvcGUuICBUaGVyZWZvcmUsIHRoZXJlIGlz
CisgKiBubyByaXNrIG9mIGluYWR2ZXJ0ZW50bHkgY29kaW5nIGluIGEgZGVwZW5kZW5jeSBvbiBh
IGdsb2JhbCB2YWx1ZSBpbiBzdWNoIGFuCisgKiBleHByZXNzaW9uLgorICoKKyAqIEBleGFtcGxl
CisgICA8ZXhhbXBsZSBtb2R1bGU9IndpbmRvd0V4YW1wbGUiPgorICAgICA8ZmlsZSBuYW1lPSJp
bmRleC5odG1sIj4KKyAgICAgICA8c2NyaXB0PgorICAgICAgICAgYW5ndWxhci5tb2R1bGUoJ3dp
bmRvd0V4YW1wbGUnLCBbXSkKKyAgICAgICAgICAgLmNvbnRyb2xsZXIoJ0V4YW1wbGVDb250cm9s
bGVyJywgWyckc2NvcGUnLCAnJHdpbmRvdycsIGZ1bmN0aW9uKCRzY29wZSwgJHdpbmRvdykgewor
ICAgICAgICAgICAgICRzY29wZS5ncmVldGluZyA9ICdIZWxsbywgV29ybGQhJzsKKyAgICAgICAg
ICAgICAkc2NvcGUuZG9HcmVldGluZyA9IGZ1bmN0aW9uKGdyZWV0aW5nKSB7CisgICAgICAgICAg
ICAgICAkd2luZG93LmFsZXJ0KGdyZWV0aW5nKTsKKyAgICAgICAgICAgICB9OworICAgICAgICAg
ICB9XSk7CisgICAgICAgPC9zY3JpcHQ+CisgICAgICAgPGRpdiBuZy1jb250cm9sbGVyPSJFeGFt
cGxlQ29udHJvbGxlciI+CisgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmctbW9kZWw9Imdy
ZWV0aW5nIiBhcmlhLWxhYmVsPSJncmVldGluZyIgLz4KKyAgICAgICAgIDxidXR0b24gbmctY2xp
Y2s9ImRvR3JlZXRpbmcoZ3JlZXRpbmcpIj5BTEVSVDwvYnV0dG9uPgorICAgICAgIDwvZGl2Pgor
ICAgICA8L2ZpbGU+CisgICAgIDxmaWxlIG5hbWU9InByb3RyYWN0b3IuanMiIHR5cGU9InByb3Ry
YWN0b3IiPgorICAgICAgaXQoJ3Nob3VsZCBkaXNwbGF5IHRoZSBncmVldGluZyBpbiB0aGUgaW5w
dXQgYm94JywgZnVuY3Rpb24oKSB7CisgICAgICAgZWxlbWVudChieS5tb2RlbCgnZ3JlZXRpbmcn
KSkuc2VuZEtleXMoJ0hlbGxvLCBFMkUgVGVzdHMnKTsKKyAgICAgICAvLyBJZiB3ZSBjbGljayB0
aGUgYnV0dG9uIGl0IHdpbGwgYmxvY2sgdGhlIHRlc3QgcnVubmVyCisgICAgICAgLy8gZWxlbWVu
dCgnOmJ1dHRvbicpLmNsaWNrKCk7CisgICAgICB9KTsKKyAgICAgPC9maWxlPgorICAgPC9leGFt
cGxlPgorICovCitmdW5jdGlvbiAkV2luZG93UHJvdmlkZXIoKSB7CisgIHRoaXMuJGdldCA9IHZh
bHVlRm4od2luZG93KTsKK30KKworLyoqCisgKiBAbmFtZSAkJGNvb2tpZVJlYWRlcgorICogQHJl
cXVpcmVzICRkb2N1bWVudAorICoKKyAqIEBkZXNjcmlwdGlvbgorICogVGhpcyBpcyBhIHByaXZh
dGUgc2VydmljZSBmb3IgcmVhZGluZyBjb29raWVzIHVzZWQgYnkgJGh0dHAgYW5kIG5nQ29va2ll
cworICoKKyAqIEByZXR1cm4ge09iamVjdH0gYSBrZXkvdmFsdWUgbWFwIG9mIHRoZSBjdXJyZW50
IGNvb2tpZXMKKyAqLworZnVuY3Rpb24gJCRDb29raWVSZWFkZXIoJGRvY3VtZW50KSB7CisgIHZh
ciByYXdEb2N1bWVudCA9ICRkb2N1bWVudFswXSB8fCB7fTsKKyAgdmFyIGxhc3RDb29raWVzID0g
e307CisgIHZhciBsYXN0Q29va2llU3RyaW5nID0gJyc7CisKKyAgZnVuY3Rpb24gc2FmZURlY29k
ZVVSSUNvbXBvbmVudChzdHIpIHsKKyAgICB0cnkgeworICAgICAgcmV0dXJuIGRlY29kZVVSSUNv
bXBvbmVudChzdHIpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgIHJldHVybiBzdHI7CisgICAg
fQorICB9CisKKyAgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAgIHZhciBjb29raWVBcnJheSwgY29v
a2llLCBpLCBpbmRleCwgbmFtZTsKKyAgICB2YXIgY3VycmVudENvb2tpZVN0cmluZyA9IHJhd0Rv
Y3VtZW50LmNvb2tpZSB8fCAnJzsKKworICAgIGlmIChjdXJyZW50Q29va2llU3RyaW5nICE9PSBs
YXN0Q29va2llU3RyaW5nKSB7CisgICAgICBsYXN0Q29va2llU3RyaW5nID0gY3VycmVudENvb2tp
ZVN0cmluZzsKKyAgICAgIGNvb2tpZUFycmF5ID0gbGFzdENvb2tpZVN0cmluZy5zcGxpdCgnOyAn
KTsKKyAgICAgIGxhc3RDb29raWVzID0ge307CisKKyAgICAgIGZvciAoaSA9IDA7IGkgPCBjb29r
aWVBcnJheS5sZW5ndGg7IGkrKykgeworICAgICAgICBjb29raWUgPSBjb29raWVBcnJheVtpXTsK
KyAgICAgICAgaW5kZXggPSBjb29raWUuaW5kZXhPZignPScpOworICAgICAgICBpZiAoaW5kZXgg
PiAwKSB7IC8vaWdub3JlIG5hbWVsZXNzIGNvb2tpZXMKKyAgICAgICAgICBuYW1lID0gc2FmZURl
Y29kZVVSSUNvbXBvbmVudChjb29raWUuc3Vic3RyaW5nKDAsIGluZGV4KSk7CisgICAgICAgICAg
Ly8gdGhlIGZpcnN0IHZhbHVlIHRoYXQgaXMgc2VlbiBmb3IgYSBjb29raWUgaXMgdGhlIG1vc3QK
KyAgICAgICAgICAvLyBzcGVjaWZpYyBvbmUuICB2YWx1ZXMgZm9yIHRoZSBzYW1lIGNvb2tpZSBu
YW1lIHRoYXQKKyAgICAgICAgICAvLyBmb2xsb3cgYXJlIGZvciBsZXNzIHNwZWNpZmljIHBhdGhz
LgorICAgICAgICAgIGlmIChsYXN0Q29va2llc1tuYW1lXSA9PT0gdW5kZWZpbmVkKSB7CisgICAg
ICAgICAgICBsYXN0Q29va2llc1tuYW1lXSA9IHNhZmVEZWNvZGVVUklDb21wb25lbnQoY29va2ll
LnN1YnN0cmluZyhpbmRleCArIDEpKTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0K
KyAgICB9CisgICAgcmV0dXJuIGxhc3RDb29raWVzOworICB9OworfQorCiskJENvb2tpZVJlYWRl
ci4kaW5qZWN0ID0gWyckZG9jdW1lbnQnXTsKKworZnVuY3Rpb24gJCRDb29raWVSZWFkZXJQcm92
aWRlcigpIHsKKyAgdGhpcy4kZ2V0ID0gJCRDb29raWVSZWFkZXI7Cit9CisKKy8qIGdsb2JhbCBj
dXJyZW5jeUZpbHRlcjogdHJ1ZSwKKyBkYXRlRmlsdGVyOiB0cnVlLAorIGZpbHRlckZpbHRlcjog
dHJ1ZSwKKyBqc29uRmlsdGVyOiB0cnVlLAorIGxpbWl0VG9GaWx0ZXI6IHRydWUsCisgbG93ZXJj
YXNlRmlsdGVyOiB0cnVlLAorIG51bWJlckZpbHRlcjogdHJ1ZSwKKyBvcmRlckJ5RmlsdGVyOiB0
cnVlLAorIHVwcGVyY2FzZUZpbHRlcjogdHJ1ZSwKKyAqLworCisvKioKKyAqIEBuZ2RvYyBwcm92
aWRlcgorICogQG5hbWUgJGZpbHRlclByb3ZpZGVyCisgKiBAZGVzY3JpcHRpb24KKyAqCisgKiBG
aWx0ZXJzIGFyZSBqdXN0IGZ1bmN0aW9ucyB3aGljaCB0cmFuc2Zvcm0gaW5wdXQgdG8gYW4gb3V0
cHV0LiBIb3dldmVyIGZpbHRlcnMgbmVlZCB0byBiZQorICogRGVwZW5kZW5jeSBJbmplY3RlZC4g
VG8gYWNoaWV2ZSB0aGlzIGEgZmlsdGVyIGRlZmluaXRpb24gY29uc2lzdHMgb2YgYSBmYWN0b3J5
IGZ1bmN0aW9uIHdoaWNoIGlzCisgKiBhbm5vdGF0ZWQgd2l0aCBkZXBlbmRlbmNpZXMgYW5kIGlz
IHJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyBhIGZpbHRlciBmdW5jdGlvbi4KKyAqCisgKiA8ZGl2
IGNsYXNzPSJhbGVydCBhbGVydC13YXJuaW5nIj4KKyAqICoqTm90ZToqKiBGaWx0ZXIgbmFtZXMg
bXVzdCBiZSB2YWxpZCBhbmd1bGFyIHtAbGluayBleHByZXNzaW9ufSBpZGVudGlmaWVycywgc3Vj
aCBhcyBgdXBwZXJjYXNlYCBvciBgb3JkZXJCeWAuCisgKiBOYW1lcyB3aXRoIHNwZWNpYWwgY2hh
cmFjdGVycywgc3VjaCBhcyBoeXBoZW5zIGFuZCBkb3RzLCBhcmUgbm90IGFsbG93ZWQuIElmIHlv
dSB3aXNoIHRvIG5hbWVzcGFjZQorICogeW91ciBmaWx0ZXJzLCB0aGVuIHlvdSBjYW4gdXNlIGNh
cGl0YWxpemF0aW9uIChgbXlhcHBTdWJzZWN0aW9uRmlsdGVyeGApIG9yIHVuZGVyc2NvcmVzCisg
KiAoYG15YXBwX3N1YnNlY3Rpb25fZmlsdGVyeGApLgorICogPC9kaXY+CisgKgorICogYGBganMK
KyAqICAgLy8gRmlsdGVyIHJlZ2lzdHJhdGlvbgorICogICBmdW5jdGlvbiBNeU1vZHVsZSgkcHJv
dmlkZSwgJGZpbHRlclByb3ZpZGVyKSB7CisgKiAgICAgLy8gY3JlYXRlIGEgc2VydmljZSB0byBk
ZW1vbnN0cmF0ZSBpbmplY3Rpb24gKG5vdCBhbHdheXMgbmVlZGVkKQorICogICAgICRwcm92aWRl
LnZhbHVlKCdncmVldCcsIGZ1bmN0aW9uKG5hbWUpeworICogICAgICAgcmV0dXJuICdIZWxsbyAn
ICsgbmFtZSArICchJzsKKyAqICAgICB9KTsKKyAqCisgKiAgICAgLy8gcmVnaXN0ZXIgYSBmaWx0
ZXIgZmFjdG9yeSB3aGljaCB1c2VzIHRoZQorICogICAgIC8vIGdyZWV0IHNlcnZpY2UgdG8gZGVt
b25zdHJhdGUgREkuCisgKiAgICAgJGZpbHRlclByb3ZpZGVyLnJlZ2lzdGVyKCdncmVldCcsIGZ1
bmN0aW9uKGdyZWV0KXsKKyAqICAgICAgIC8vIHJldHVybiB0aGUgZmlsdGVyIGZ1bmN0aW9uIHdo
aWNoIHVzZXMgdGhlIGdyZWV0IHNlcnZpY2UKKyAqICAgICAgIC8vIHRvIGdlbmVyYXRlIHNhbHV0
YXRpb24KKyAqICAgICAgIHJldHVybiBmdW5jdGlvbih0ZXh0KSB7CisgKiAgICAgICAgIC8vIGZp
bHRlcnMgbmVlZCB0byBiZSBmb3JnaXZpbmcgc28gY2hlY2sgaW5wdXQgdmFsaWRpdHkKKyAqICAg
ICAgICAgcmV0dXJuIHRleHQgJiYgZ3JlZXQodGV4dCkgfHwgdGV4dDsKKyAqICAgICAgIH07Cisg
KiAgICAgfSk7CisgKiAgIH0KKyAqIGBgYAorICoKKyAqIFRoZSBmaWx0ZXIgZnVuY3Rpb24gaXMg
cmVnaXN0ZXJlZCB3aXRoIHRoZSBgJGluamVjdG9yYCB1bmRlciB0aGUgZmlsdGVyIG5hbWUgc3Vm
Zml4IHdpdGgKKyAqIGBGaWx0ZXJgLgorICoKKyAqIGBgYGpzCisgKiAgIGl0KCdzaG91bGQgYmUg
dGhlIHNhbWUgaW5zdGFuY2UnLCBpbmplY3QoCisgKiAgICAgZnVuY3Rpb24oJGZpbHRlclByb3Zp
ZGVyKSB7CisgKiAgICAgICAkZmlsdGVyUHJvdmlkZXIucmVnaXN0ZXIoJ3JldmVyc2UnLCBmdW5j
dGlvbigpeworICogICAgICAgICByZXR1cm4gLi4uOworICogICAgICAgfSk7CisgKiAgICAgfSwK
KyAqICAgICBmdW5jdGlvbigkZmlsdGVyLCByZXZlcnNlRmlsdGVyKSB7CisgKiAgICAgICBleHBl
Y3QoJGZpbHRlcigncmV2ZXJzZScpKS50b0JlKHJldmVyc2VGaWx0ZXIpOworICogICAgIH0pOwor
ICogYGBgCisgKgorICoKKyAqIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGhvdyBhbmd1bGFy
IGZpbHRlcnMgd29yaywgYW5kIGhvdyB0byBjcmVhdGUgeW91ciBvd24gZmlsdGVycywgc2VlCisg
KiB7QGxpbmsgZ3VpZGUvZmlsdGVyIEZpbHRlcnN9IGluIHRoZSBBbmd1bGFyIERldmVsb3BlciBH
dWlkZS4KKyAqLworCisvKioKKyAqIEBuZ2RvYyBzZXJ2aWNlCisgKiBAbmFtZSAkZmlsdGVyCisg
KiBAa2luZCBmdW5jdGlvbgorICogQGRlc2NyaXB0aW9uCisgKiBGaWx0ZXJzIGFyZSB1c2VkIGZv
ciBmb3JtYXR0aW5nIGRhdGEgZGlzcGxheWVkIHRvIHRoZSB1c2VyLgorICoKKyAqIFRoZSBnZW5l
cmFsIHN5bnRheCBpbiB0ZW1wbGF0ZXMgaXMgYXMgZm9sbG93czoKKyAqCisgKiAgICAgICAgIHt7
IGV4cHJlc3Npb24gW3wgZmlsdGVyX25hbWVbOnBhcmFtZXRlcl92YWx1ZV0gLi4uIF0gfX0KKyAq
CisgKiBAcGFyYW0ge1N0cmluZ30gbmFtZSBOYW1lIG9mIHRoZSBmaWx0ZXIgZnVuY3Rpb24gdG8g
cmV0cmlldmUKKyAqIEByZXR1cm4ge0Z1bmN0aW9ufSB0aGUgZmlsdGVyIGZ1bmN0aW9uCisgKiBA
ZXhhbXBsZQorICAgPGV4YW1wbGUgbmFtZT0iJGZpbHRlciIgbW9kdWxlPSJmaWx0ZXJFeGFtcGxl
Ij4KKyAgICAgPGZpbGUgbmFtZT0iaW5kZXguaHRtbCI+CisgICAgICAgPGRpdiBuZy1jb250cm9s
bGVyPSJNYWluQ3RybCI+CisgICAgICAgIDxoMz57eyBvcmlnaW5hbFRleHQgfX08L2gzPgorICAg
ICAgICA8aDM+e3sgZmlsdGVyZWRUZXh0IH19PC9oMz4KKyAgICAgICA8L2Rpdj4KKyAgICAgPC9m
aWxlPgorCisgICAgIDxmaWxlIG5hbWU9InNjcmlwdC5qcyI+CisgICAgICBhbmd1bGFyLm1vZHVs
ZSgnZmlsdGVyRXhhbXBsZScsIFtdKQorICAgICAgLmNvbnRyb2xsZXIoJ01haW5DdHJsJywgZnVu
Y3Rpb24oJHNjb3BlLCAkZmlsdGVyKSB7CisgICAgICAgICRzY29wZS5vcmlnaW5hbFRleHQgPSAn
aGVsbG8nOworICAgICAgICAkc2NvcGUuZmlsdGVyZWRUZXh0ID0gJGZpbHRlcigndXBwZXJjYXNl
JykoJHNjb3BlLm9yaWdpbmFsVGV4dCk7CisgICAgICB9KTsKKyAgICAgPC9maWxlPgorICAgPC9l
eGFtcGxlPgorICAqLworJEZpbHRlclByb3ZpZGVyLiRpbmplY3QgPSBbJyRwcm92aWRlJ107Citm
dW5jdGlvbiAkRmlsdGVyUHJvdmlkZXIoJHByb3ZpZGUpIHsKKyAgdmFyIHN1ZmZpeCA9ICdGaWx0
ZXInOworCisgIC8qKgorICAgKiBAbmdkb2MgbWV0aG9kCisgICAqIEBuYW1lICRmaWx0ZXJQcm92
aWRlciNyZWdpc3RlcgorICAgKiBAcGFyYW0ge3N0cmluZ3xPYmplY3R9IG5hbWUgTmFtZSBvZiB0
aGUgZmlsdGVyIGZ1bmN0aW9uLCBvciBhbiBvYmplY3QgbWFwIG9mIGZpbHRlcnMgd2hlcmUKKyAg
ICogICAgdGhlIGtleXMgYXJlIHRoZSBmaWx0ZXIgbmFtZXMgYW5kIHRoZSB2YWx1ZXMgYXJlIHRo
ZSBmaWx0ZXIgZmFjdG9yaWVzLgorICAgKgorICAgKiAgICA8ZGl2IGNsYXNzPSJhbGVydCBhbGVy
dC13YXJuaW5nIj4KKyAgICogICAgKipOb3RlOioqIEZpbHRlciBuYW1lcyBtdXN0IGJlIHZhbGlk
IGFuZ3VsYXIge0BsaW5rIGV4cHJlc3Npb259IGlkZW50aWZpZXJzLCBzdWNoIGFzIGB1cHBlcmNh
c2VgIG9yIGBvcmRlckJ5YC4KKyAgICogICAgTmFtZXMgd2l0aCBzcGVjaWFsIGNoYXJhY3RlcnMs
IHN1Y2ggYXMgaHlwaGVucyBhbmQgZG90cywgYXJlIG5vdCBhbGxvd2VkLiBJZiB5b3Ugd2lzaCB0
byBuYW1lc3BhY2UKKyAgICogICAgeW91ciBmaWx0ZXJzLCB0aGVuIHlvdSBjYW4gdXNlIGNhcGl0
YWxpemF0aW9uIChgbXlhcHBTdWJzZWN0aW9uRmlsdGVyeGApIG9yIHVuZGVyc2NvcmVzCisgICAq
ICAgIChgbXlhcHBfc3Vic2VjdGlvbl9maWx0ZXJ4YCkuCisgICAqICAgIDwvZGl2PgorICAgKiBA
cmV0dXJucyB7T2JqZWN0fSBSZWdpc3RlcmVkIGZpbHRlciBpbnN0YW5jZSwgb3IgaWYgYSBtYXAg
b2YgZmlsdGVycyB3YXMgcHJvdmlkZWQgdGhlbiBhIG1hcAorICAgKiAgICBvZiB0aGUgcmVnaXN0
ZXJlZCBmaWx0ZXIgaW5zdGFuY2VzLgorICAgKi8KKyAgZnVuY3Rpb24gcmVnaXN0ZXIobmFtZSwg
ZmFjdG9yeSkgeworICAgIGlmIChpc09iamVjdChuYW1lKSkgeworICAgICAgdmFyIGZpbHRlcnMg
PSB7fTsKKyAgICAgIGZvckVhY2gobmFtZSwgZnVuY3Rpb24oZmlsdGVyLCBrZXkpIHsKKyAgICAg
ICAgZmlsdGVyc1trZXldID0gcmVnaXN0ZXIoa2V5LCBmaWx0ZXIpOworICAgICAgfSk7CisgICAg
ICByZXR1cm4gZmlsdGVyczsKKyAgICB9IGVsc2UgeworICAgICAgcmV0dXJuICRwcm92aWRlLmZh
Y3RvcnkobmFtZSArIHN1ZmZpeCwgZmFjdG9yeSk7CisgICAgfQorICB9CisgIHRoaXMucmVnaXN0
ZXIgPSByZWdpc3RlcjsKKworICB0aGlzLiRnZXQgPSBbJyRpbmplY3RvcicsIGZ1bmN0aW9uKCRp
bmplY3RvcikgeworICAgIHJldHVybiBmdW5jdGlvbihuYW1lKSB7CisgICAgICByZXR1cm4gJGlu
amVjdG9yLmdldChuYW1lICsgc3VmZml4KTsKKyAgICB9OworICB9XTsKKworICAvLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKKyAgLyogZ2xvYmFsCisgICAgY3VycmVu
Y3lGaWx0ZXI6IGZhbHNlLAorICAgIGRhdGVGaWx0ZXI6IGZhbHNlLAorICAgIGZpbHRlckZpbHRl
cjogZmFsc2UsCisgICAganNvbkZpbHRlcjogZmFsc2UsCisgICAgbGltaXRUb0ZpbHRlcjogZmFs
c2UsCisgICAgbG93ZXJjYXNlRmlsdGVyOiBmYWxzZSwKKyAgICBudW1iZXJGaWx0ZXI6IGZhbHNl
LAorICAgIG9yZGVyQnlGaWx0ZXI6IGZhbHNlLAorICAgIHVwcGVyY2FzZUZpbHRlcjogZmFsc2Us
CisgICovCisKKyAgcmVnaXN0ZXIoJ2N1cnJlbmN5JywgY3VycmVuY3lGaWx0ZXIpOworICByZWdp
c3RlcignZGF0ZScsIGRhdGVGaWx0ZXIpOworICByZWdpc3RlcignZmlsdGVyJywgZmlsdGVyRmls
dGVyKTsKKyAgcmVnaXN0ZXIoJ2pzb24nLCBqc29uRmlsdGVyKTsKKyAgcmVnaXN0ZXIoJ2xpbWl0
VG8nLCBsaW1pdFRvRmlsdGVyKTsKKyAgcmVnaXN0ZXIoJ2xvd2VyY2FzZScsIGxvd2VyY2FzZUZp
bHRlcik7CisgIHJlZ2lzdGVyKCdudW1iZXInLCBudW1iZXJGaWx0ZXIpOworICByZWdpc3Rlcign
b3JkZXJCeScsIG9yZGVyQnlGaWx0ZXIpOworICByZWdpc3RlcigndXBwZXJjYXNlJywgdXBwZXJj
YXNlRmlsdGVyKTsKK30KKworLyoqCisgKiBAbmdkb2MgZmlsdGVyCisgKiBAbmFtZSBmaWx0ZXIK
KyAqIEBraW5kIGZ1bmN0aW9uCisgKgorICogQGRlc2NyaXB0aW9uCisgKiBTZWxlY3RzIGEgc3Vi
c2V0IG9mIGl0ZW1zIGZyb20gYGFycmF5YCBhbmQgcmV0dXJucyBpdCBhcyBhIG5ldyBhcnJheS4K
KyAqCisgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgc291cmNlIGFycmF5LgorICogQHBhcmFt
IHtzdHJpbmd8T2JqZWN0fGZ1bmN0aW9uKCl9IGV4cHJlc3Npb24gVGhlIHByZWRpY2F0ZSB0byBi
ZSB1c2VkIGZvciBzZWxlY3RpbmcgaXRlbXMgZnJvbQorICogICBgYXJyYXlgLgorICoKKyAqICAg
Q2FuIGJlIG9uZSBvZjoKKyAqCisgKiAgIC0gYHN0cmluZ2A6IFRoZSBzdHJpbmcgaXMgdXNlZCBm
b3IgbWF0Y2hpbmcgYWdhaW5zdCB0aGUgY29udGVudHMgb2YgdGhlIGBhcnJheWAuIEFsbCBzdHJp
bmdzIG9yCisgKiAgICAgb2JqZWN0cyB3aXRoIHN0cmluZyBwcm9wZXJ0aWVzIGluIGBhcnJheWAg
dGhhdCBtYXRjaCB0aGlzIHN0cmluZyB3aWxsIGJlIHJldHVybmVkLiBUaGlzIGFsc28KKyAqICAg
ICBhcHBsaWVzIHRvIG5lc3RlZCBvYmplY3QgcHJvcGVydGllcy4KKyAqICAgICBUaGUgcHJlZGlj
YXRlIGNhbiBiZSBuZWdhdGVkIGJ5IHByZWZpeGluZyB0aGUgc3RyaW5nIHdpdGggYCFgLgorICoK
KyAqICAgLSBgT2JqZWN0YDogQSBwYXR0ZXJuIG9iamVjdCBjYW4gYmUgdXNlZCB0byBmaWx0ZXIg
c3BlY2lmaWMgcHJvcGVydGllcyBvbiBvYmplY3RzIGNvbnRhaW5lZAorICogICAgIGJ5IGBhcnJh
eWAuIEZvciBleGFtcGxlIGB7bmFtZToiTSIsIHBob25lOiIxIn1gIHByZWRpY2F0ZSB3aWxsIHJl
dHVybiBhbiBhcnJheSBvZiBpdGVtcworICogICAgIHdoaWNoIGhhdmUgcHJvcGVydHkgYG5hbWVg
IGNvbnRhaW5pbmcgIk0iIGFuZCBwcm9wZXJ0eSBgcGhvbmVgIGNvbnRhaW5pbmcgIjEiLiBBIHNw
ZWNpYWwKKyAqICAgICBwcm9wZXJ0eSBuYW1lIGAkYCBjYW4gYmUgdXNlZCAoYXMgaW4gYHskOiJ0
ZXh0In1gKSB0byBhY2NlcHQgYSBtYXRjaCBhZ2FpbnN0IGFueQorICogICAgIHByb3BlcnR5IG9m
IHRoZSBvYmplY3Qgb3IgaXRzIG5lc3RlZCBvYmplY3QgcHJvcGVydGllcy4gVGhhdCdzIGVxdWl2
YWxlbnQgdG8gdGhlIHNpbXBsZQorICogICAgIHN1YnN0cmluZyBtYXRjaCB3aXRoIGEgYHN0cmlu
Z2AgYXMgZGVzY3JpYmVkIGFib3ZlLiBUaGUgcHJlZGljYXRlIGNhbiBiZSBuZWdhdGVkIGJ5IHBy
ZWZpeGluZworICogICAgIHRoZSBzdHJpbmcgd2l0aCBgIWAuCisgKiAgICAgRm9yIGV4YW1wbGUg
YHtuYW1lOiAiIU0ifWAgcHJlZGljYXRlIHdpbGwgcmV0dXJuIGFuIGFycmF5IG9mIGl0ZW1zIHdo
aWNoIGhhdmUgcHJvcGVydHkgYG5hbWVgCisgKiAgICAgbm90IGNvbnRhaW5pbmcgIk0iLgorICoK
KyAqICAgICBOb3RlIHRoYXQgYSBuYW1lZCBwcm9wZXJ0eSB3aWxsIG1hdGNoIHByb3BlcnRpZXMg
b24gdGhlIHNhbWUgbGV2ZWwgb25seSwgd2hpbGUgdGhlIHNwZWNpYWwKKyAqICAgICBgJGAgcHJv
cGVydHkgd2lsbCBtYXRjaCBwcm9wZXJ0aWVzIG9uIHRoZSBzYW1lIGxldmVsIG9yIGRlZXBlci4g
RS5nLiBhbiBhcnJheSBpdGVtIGxpa2UKKyAqICAgICBge25hbWU6IHtmaXJzdDogJ0pvaG4nLCBs
YXN0OiAnRG9lJ319YCB3aWxsICoqbm90KiogYmUgbWF0Y2hlZCBieSBge25hbWU6ICdKb2huJ31g
LCBidXQKKyAqICAgICAqKndpbGwqKiBiZSBtYXRjaGVkIGJ5IGB7JDogJ0pvaG4nfWAuCisgKgor
ICogICAtIGBmdW5jdGlvbih2YWx1ZSwgaW5kZXgsIGFycmF5KWA6IEEgcHJlZGljYXRlIGZ1bmN0
aW9uIGNhbiBiZSB1c2VkIHRvIHdyaXRlIGFyYml0cmFyeSBmaWx0ZXJzLgorICogICAgIFRoZSBm
dW5jdGlvbiBpcyBjYWxsZWQgZm9yIGVhY2ggZWxlbWVudCBvZiB0aGUgYXJyYXksIHdpdGggdGhl
IGVsZW1lbnQsIGl0cyBpbmRleCwgYW5kCisgKiAgICAgdGhlIGVudGlyZSBhcnJheSBpdHNlbGYg
YXMgYXJndW1lbnRzLgorICoKKyAqICAgICBUaGUgZmluYWwgcmVzdWx0IGlzIGFuIGFycmF5IG9m
IHRob3NlIGVsZW1lbnRzIHRoYXQgdGhlIHByZWRpY2F0ZSByZXR1cm5lZCB0cnVlIGZvci4KKyAq
CisgKiBAcGFyYW0ge2Z1bmN0aW9uKGFjdHVhbCwgZXhwZWN0ZWQpfHRydWV8dW5kZWZpbmVkfSBj
b21wYXJhdG9yIENvbXBhcmF0b3Igd2hpY2ggaXMgdXNlZCBpbgorICogICAgIGRldGVybWluaW5n
IGlmIHRoZSBleHBlY3RlZCB2YWx1ZSAoZnJvbSB0aGUgZmlsdGVyIGV4cHJlc3Npb24pIGFuZCBh
Y3R1YWwgdmFsdWUgKGZyb20KKyAqICAgICB0aGUgb2JqZWN0IGluIHRoZSBhcnJheSkgc2hvdWxk
IGJlIGNvbnNpZGVyZWQgYSBtYXRjaC4KKyAqCisgKiAgIENhbiBiZSBvbmUgb2Y6CisgKgorICog
ICAtIGBmdW5jdGlvbihhY3R1YWwsIGV4cGVjdGVkKWA6CisgKiAgICAgVGhlIGZ1bmN0aW9uIHdp
bGwgYmUgZ2l2ZW4gdGhlIG9iamVjdCB2YWx1ZSBhbmQgdGhlIHByZWRpY2F0ZSB2YWx1ZSB0byBj
b21wYXJlIGFuZAorICogICAgIHNob3VsZCByZXR1cm4gdHJ1ZSBpZiBib3RoIHZhbHVlcyBzaG91
bGQgYmUgY29uc2lkZXJlZCBlcXVhbC4KKyAqCisgKiAgIC0gYHRydWVgOiBBIHNob3J0aGFuZCBm
b3IgYGZ1bmN0aW9uKGFjdHVhbCwgZXhwZWN0ZWQpIHsgcmV0dXJuIGFuZ3VsYXIuZXF1YWxzKGFj
dHVhbCwgZXhwZWN0ZWQpfWAuCisgKiAgICAgVGhpcyBpcyBlc3NlbnRpYWxseSBzdHJpY3QgY29t
cGFyaXNvbiBvZiBleHBlY3RlZCBhbmQgYWN0dWFsLgorICoKKyAqICAgLSBgZmFsc2V8dW5kZWZp
bmVkYDogQSBzaG9ydCBoYW5kIGZvciBhIGZ1bmN0aW9uIHdoaWNoIHdpbGwgbG9vayBmb3IgYSBz
dWJzdHJpbmcgbWF0Y2ggaW4gY2FzZQorICogICAgIGluc2Vuc2l0aXZlIHdheS4KKyAqCisgKiAg
ICAgUHJpbWl0aXZlIHZhbHVlcyBhcmUgY29udmVydGVkIHRvIHN0cmluZ3MuIE9iamVjdHMgYXJl
IG5vdCBjb21wYXJlZCBhZ2FpbnN0IHByaW1pdGl2ZXMsCisgKiAgICAgdW5sZXNzIHRoZXkgaGF2
ZSBhIGN1c3RvbSBgdG9TdHJpbmdgIG1ldGhvZCAoZS5nLiBgRGF0ZWAgb2JqZWN0cykuCisgKgor
ICogQGV4YW1wbGUKKyAgIDxleGFtcGxlPgorICAgICA8ZmlsZSBuYW1lPSJpbmRleC5odG1sIj4K
KyAgICAgICA8ZGl2IG5nLWluaXQ9ImZyaWVuZHMgPSBbe25hbWU6J0pvaG4nLCBwaG9uZTonNTU1
LTEyNzYnfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge25hbWU6J01hcnknLCBw
aG9uZTonODAwLUJJRy1NQVJZJ30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtu
YW1lOidNaWtlJywgcGhvbmU6JzU1NS00MzIxJ30sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHtuYW1lOidBZGFtJywgcGhvbmU6JzU1NS01Njc4J30sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHtuYW1lOidKdWxpZScsIHBob25lOic1NTUtODc2NSd9LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB7bmFtZTonSnVsaWV0dGUnLCBwaG9uZTonNTU1LTU2
NzgnfV0iPjwvZGl2PgorCisgICAgICAgPGxhYmVsPlNlYXJjaDogPGlucHV0IG5nLW1vZGVsPSJz
ZWFyY2hUZXh0Ij48L2xhYmVsPgorICAgICAgIDx0YWJsZSBpZD0ic2VhcmNoVGV4dFJlc3VsdHMi
PgorICAgICAgICAgPHRyPjx0aD5OYW1lPC90aD48dGg+UGhvbmU8L3RoPjwvdHI+CisgICAgICAg
ICA8dHIgbmctcmVwZWF0PSJmcmllbmQgaW4gZnJpZW5kcyB8IGZpbHRlcjpzZWFyY2hUZXh0Ij4K
KyAgICAgICAgICAgPHRkPnt7ZnJpZW5kLm5hbWV9fTwvdGQ+CisgICAgICAgICAgIDx0ZD57e2Zy
aWVuZC5waG9uZX19PC90ZD4KKyAgICAgICAgIDwvdHI+CisgICAgICAgPC90YWJsZT4KKyAgICAg
ICA8aHI+CisgICAgICAgPGxhYmVsPkFueTogPGlucHV0IG5nLW1vZGVsPSJzZWFyY2guJCI+PC9s
YWJlbD4gPGJyPgorICAgICAgIDxsYWJlbD5OYW1lIG9ubHkgPGlucHV0IG5nLW1vZGVsPSJzZWFy
Y2gubmFtZSI+PC9sYWJlbD48YnI+CisgICAgICAgPGxhYmVsPlBob25lIG9ubHkgPGlucHV0IG5n
LW1vZGVsPSJzZWFyY2gucGhvbmUiPjwvbGFiZWw+PGJyPgorICAgICAgIDxsYWJlbD5FcXVhbGl0
eSA8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5nLW1vZGVsPSJzdHJpY3QiPjwvbGFiZWw+PGJyPgor
ICAgICAgIDx0YWJsZSBpZD0ic2VhcmNoT2JqUmVzdWx0cyI+CisgICAgICAgICA8dHI+PHRoPk5h
bWU8L3RoPjx0aD5QaG9uZTwvdGg+PC90cj4KKyAgICAgICAgIDx0ciBuZy1yZXBlYXQ9ImZyaWVu
ZE9iaiBpbiBmcmllbmRzIHwgZmlsdGVyOnNlYXJjaDpzdHJpY3QiPgorICAgICAgICAgICA8dGQ+
e3tmcmllbmRPYmoubmFtZX19PC90ZD4KKyAgICAgICAgICAgPHRkPnt7ZnJpZW5kT2JqLnBob25l
fX08L3RkPgorICAgICAgICAgPC90cj4KKyAgICAgICA8L3RhYmxlPgorICAgICA8L2ZpbGU+Cisg
ICAgIDxmaWxlIG5hbWU9InByb3RyYWN0b3IuanMiIHR5cGU9InByb3RyYWN0b3IiPgorICAgICAg
IHZhciBleHBlY3RGcmllbmROYW1lcyA9IGZ1bmN0aW9uKGV4cGVjdGVkTmFtZXMsIGtleSkgewor
ICAgICAgICAgZWxlbWVudC5hbGwoYnkucmVwZWF0ZXIoa2V5ICsgJyBpbiBmcmllbmRzJykuY29s
dW1uKGtleSArICcubmFtZScpKS50aGVuKGZ1bmN0aW9uKGFycikgeworICAgICAgICAgICBhcnIu
Zm9yRWFjaChmdW5jdGlvbih3ZCwgaSkgeworICAgICAgICAgICAgIGV4cGVjdCh3ZC5nZXRUZXh0
KCkpLnRvTWF0Y2goZXhwZWN0ZWROYW1lc1tpXSk7CisgICAgICAgICAgIH0pOworICAgICAgICAg
fSk7CisgICAgICAgfTsKKworICAgICAgIGl0KCdzaG91bGQgc2VhcmNoIGFjcm9zcyBhbGwgZmll
bGRzIHdoZW4gZmlsdGVyaW5nIHdpdGggYSBzdHJpbmcnLCBmdW5jdGlvbigpIHsKKyAgICAgICAg
IHZhciBzZWFyY2hUZXh0ID0gZWxlbWVudChieS5tb2RlbCgnc2VhcmNoVGV4dCcpKTsKKyAgICAg
ICAgIHNlYXJjaFRleHQuY2xlYXIoKTsKKyAgICAgICAgIHNlYXJjaFRleHQuc2VuZEtleXMoJ20n
KTsKKyAgICAgICAgIGV4cGVjdEZyaWVuZE5hbWVzKFsnTWFyeScsICdNaWtlJywgJ0FkYW0nXSwg
J2ZyaWVuZCcpOworCisgICAgICAgICBzZWFyY2hUZXh0LmNsZWFyKCk7CisgICAgICAgICBzZWFy
Y2hUZXh0LnNlbmRLZXlzKCc3NicpOworICAgICAgICAgZXhwZWN0RnJpZW5kTmFtZXMoWydKb2hu
JywgJ0p1bGllJ10sICdmcmllbmQnKTsKKyAgICAgICB9KTsKKworICAgICAgIGl0KCdzaG91bGQg
c2VhcmNoIGluIHNwZWNpZmljIGZpZWxkcyB3aGVuIGZpbHRlcmluZyB3aXRoIGEgcHJlZGljYXRl
IG9iamVjdCcsIGZ1bmN0aW9uKCkgeworICAgICAgICAgdmFyIHNlYXJjaEFueSA9IGVsZW1lbnQo
YnkubW9kZWwoJ3NlYXJjaC4kJykpOworICAgICAgICAgc2VhcmNoQW55LmNsZWFyKCk7CisgICAg
ICAgICBzZWFyY2hBbnkuc2VuZEtleXMoJ2knKTsKKyAgICAgICAgIGV4cGVjdEZyaWVuZE5hbWVz
KFsnTWFyeScsICdNaWtlJywgJ0p1bGllJywgJ0p1bGlldHRlJ10sICdmcmllbmRPYmonKTsKKyAg
ICAgICB9KTsKKyAgICAgICBpdCgnc2hvdWxkIHVzZSBhIGVxdWFsIGNvbXBhcmlzb24gd2hlbiBj
b21wYXJhdG9yIGlzIHRydWUnLCBmdW5jdGlvbigpIHsKKyAgICAgICAgIHZhciBzZWFyY2hOYW1l
ID0gZWxlbWVudChieS5tb2RlbCgnc2VhcmNoLm5hbWUnKSk7CisgICAgICAgICB2YXIgc3RyaWN0
ID0gZWxlbWVudChieS5tb2RlbCgnc3RyaWN0JykpOworICAgICAgICAgc2VhcmNoTmFtZS5jbGVh
cigpOworICAgICAgICAgc2VhcmNoTmFtZS5zZW5kS2V5cygnSnVsaWUnKTsKKyAgICAgICAgIHN0
cmljdC5jbGljaygpOworICAgICAgICAgZXhwZWN0RnJpZW5kTmFtZXMoWydKdWxpZSddLCAnZnJp
ZW5kT2JqJyk7CisgICAgICAgfSk7CisgICAgIDwvZmlsZT4KKyAgIDwvZXhhbXBsZT4KKyAqLwor
ZnVuY3Rpb24gZmlsdGVyRmlsdGVyKCkgeworICByZXR1cm4gZnVuY3Rpb24oYXJyYXksIGV4cHJl
c3Npb24sIGNvbXBhcmF0b3IpIHsKKyAgICBpZiAoIWlzQXJyYXlMaWtlKGFycmF5KSkgeworICAg
ICAgaWYgKGFycmF5ID09IG51bGwpIHsKKyAgICAgICAgcmV0dXJuIGFycmF5OworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgdGhyb3cgbWluRXJyKCdmaWx0ZXInKSgnbm90YXJyYXknLCAnRXhwZWN0
ZWQgYXJyYXkgYnV0IHJlY2VpdmVkOiB7MH0nLCBhcnJheSk7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGV4cHJlc3Npb25UeXBlID0gZ2V0VHlwZUZvckZpbHRlcihleHByZXNzaW9uKTsKKyAg
ICB2YXIgcHJlZGljYXRlRm47CisgICAgdmFyIG1hdGNoQWdhaW5zdEFueVByb3A7CisKKyAgICBz
d2l0Y2ggKGV4cHJlc3Npb25UeXBlKSB7CisgICAgICBjYXNlICdmdW5jdGlvbic6CisgICAgICAg
IHByZWRpY2F0ZUZuID0gZXhwcmVzc2lvbjsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICdi
b29sZWFuJzoKKyAgICAgIGNhc2UgJ251bGwnOgorICAgICAgY2FzZSAnbnVtYmVyJzoKKyAgICAg
IGNhc2UgJ3N0cmluZyc6CisgICAgICAgIG1hdGNoQWdhaW5zdEFueVByb3AgPSB0cnVlOworICAg
ICAgICAvL2pzaGludCAtVzA4NgorICAgICAgY2FzZSAnb2JqZWN0JzoKKyAgICAgICAgLy9qc2hp
bnQgK1cwODYKKyAgICAgICAgcHJlZGljYXRlRm4gPSBjcmVhdGVQcmVkaWNhdGVGbihleHByZXNz
aW9uLCBjb21wYXJhdG9yLCBtYXRjaEFnYWluc3RBbnlQcm9wKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gYXJyYXk7CisgICAgfQorCisgICAgcmV0dXJu
IEFycmF5LnByb3RvdHlwZS5maWx0ZXIuY2FsbChhcnJheSwgcHJlZGljYXRlRm4pOworICB9Owor
fQorCisvLyBIZWxwZXIgZnVuY3Rpb25zIGZvciBgZmlsdGVyRmlsdGVyYAorZnVuY3Rpb24gY3Jl
YXRlUHJlZGljYXRlRm4oZXhwcmVzc2lvbiwgY29tcGFyYXRvciwgbWF0Y2hBZ2FpbnN0QW55UHJv
cCkgeworICB2YXIgc2hvdWxkTWF0Y2hQcmltaXRpdmVzID0gaXNPYmplY3QoZXhwcmVzc2lvbikg
JiYgKCckJyBpbiBleHByZXNzaW9uKTsKKyAgdmFyIHByZWRpY2F0ZUZuOworCisgIGlmIChjb21w
YXJhdG9yID09PSB0cnVlKSB7CisgICAgY29tcGFyYXRvciA9IGVxdWFsczsKKyAgfSBlbHNlIGlm
ICghaXNGdW5jdGlvbihjb21wYXJhdG9yKSkgeworICAgIGNvbXBhcmF0b3IgPSBmdW5jdGlvbihh
Y3R1YWwsIGV4cGVjdGVkKSB7CisgICAgICBpZiAoaXNVbmRlZmluZWQoYWN0dWFsKSkgeworICAg
ICAgICAvLyBObyBzdWJzdHJpbmcgbWF0Y2hpbmcgYWdhaW5zdCBgdW5kZWZpbmVkYAorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICB9CisgICAgICBpZiAoKGFjdHVhbCA9PT0gbnVsbCkgfHwg
KGV4cGVjdGVkID09PSBudWxsKSkgeworICAgICAgICAvLyBObyBzdWJzdHJpbmcgbWF0Y2hpbmcg
YWdhaW5zdCBgbnVsbGA7IG9ubHkgbWF0Y2ggYWdhaW5zdCBgbnVsbGAKKyAgICAgICAgcmV0dXJu
IGFjdHVhbCA9PT0gZXhwZWN0ZWQ7CisgICAgICB9CisgICAgICBpZiAoaXNPYmplY3QoZXhwZWN0
ZWQpIHx8IChpc09iamVjdChhY3R1YWwpICYmICFoYXNDdXN0b21Ub1N0cmluZyhhY3R1YWwpKSkg
eworICAgICAgICAvLyBTaG91bGQgbm90IGNvbXBhcmUgcHJpbWl0aXZlcyBhZ2FpbnN0IG9iamVj
dHMsIHVubGVzcyB0aGV5IGhhdmUgY3VzdG9tIGB0b1N0cmluZ2AgbWV0aG9kCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgIH0KKworICAgICAgYWN0dWFsID0gbG93ZXJjYXNlKCcnICsgYWN0
dWFsKTsKKyAgICAgIGV4cGVjdGVkID0gbG93ZXJjYXNlKCcnICsgZXhwZWN0ZWQpOworICAgICAg
cmV0dXJuIGFjdHVhbC5pbmRleE9mKGV4cGVjdGVkKSAhPT0gLTE7CisgICAgfTsKKyAgfQorCisg
IHByZWRpY2F0ZUZuID0gZnVuY3Rpb24oaXRlbSkgeworICAgIGlmIChzaG91bGRNYXRjaFByaW1p
dGl2ZXMgJiYgIWlzT2JqZWN0KGl0ZW0pKSB7CisgICAgICByZXR1cm4gZGVlcENvbXBhcmUoaXRl
bSwgZXhwcmVzc2lvbi4kLCBjb21wYXJhdG9yLCBmYWxzZSk7CisgICAgfQorICAgIHJldHVybiBk
ZWVwQ29tcGFyZShpdGVtLCBleHByZXNzaW9uLCBjb21wYXJhdG9yLCBtYXRjaEFnYWluc3RBbnlQ
cm9wKTsKKyAgfTsKKworICByZXR1cm4gcHJlZGljYXRlRm47Cit9CisKK2Z1bmN0aW9uIGRlZXBD
b21wYXJlKGFjdHVhbCwgZXhwZWN0ZWQsIGNvbXBhcmF0b3IsIG1hdGNoQWdhaW5zdEFueVByb3As
IGRvbnRNYXRjaFdob2xlT2JqZWN0KSB7CisgIHZhciBhY3R1YWxUeXBlID0gZ2V0VHlwZUZvckZp
bHRlcihhY3R1YWwpOworICB2YXIgZXhwZWN0ZWRUeXBlID0gZ2V0VHlwZUZvckZpbHRlcihleHBl
Y3RlZCk7CisKKyAgaWYgKChleHBlY3RlZFR5cGUgPT09ICdzdHJpbmcnKSAmJiAoZXhwZWN0ZWQu
Y2hhckF0KDApID09PSAnIScpKSB7CisgICAgcmV0dXJuICFkZWVwQ29tcGFyZShhY3R1YWwsIGV4
cGVjdGVkLnN1YnN0cmluZygxKSwgY29tcGFyYXRvciwgbWF0Y2hBZ2FpbnN0QW55UHJvcCk7Cisg
IH0gZWxzZSBpZiAoaXNBcnJheShhY3R1YWwpKSB7CisgICAgLy8gSW4gY2FzZSBgYWN0dWFsYCBp
cyBhbiBhcnJheSwgY29uc2lkZXIgaXQgYSBtYXRjaAorICAgIC8vIGlmIEFOWSBvZiBpdCdzIGl0
ZW1zIG1hdGNoZXMgYGV4cGVjdGVkYAorICAgIHJldHVybiBhY3R1YWwuc29tZShmdW5jdGlvbihp
dGVtKSB7CisgICAgICByZXR1cm4gZGVlcENvbXBhcmUoaXRlbSwgZXhwZWN0ZWQsIGNvbXBhcmF0
b3IsIG1hdGNoQWdhaW5zdEFueVByb3ApOworICAgIH0pOworICB9CisKKyAgc3dpdGNoIChhY3R1
YWxUeXBlKSB7CisgICAgY2FzZSAnb2JqZWN0JzoKKyAgICAgIHZhciBrZXk7CisgICAgICBpZiAo
bWF0Y2hBZ2FpbnN0QW55UHJvcCkgeworICAgICAgICBmb3IgKGtleSBpbiBhY3R1YWwpIHsKKyAg
ICAgICAgICBpZiAoKGtleS5jaGFyQXQoMCkgIT09ICckJykgJiYgZGVlcENvbXBhcmUoYWN0dWFs
W2tleV0sIGV4cGVjdGVkLCBjb21wYXJhdG9yLCB0cnVlKSkgeworICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBkb250TWF0Y2hX
aG9sZU9iamVjdCA/IGZhbHNlIDogZGVlcENvbXBhcmUoYWN0dWFsLCBleHBlY3RlZCwgY29tcGFy
YXRvciwgZmFsc2UpOworICAgICAgfSBlbHNlIGlmIChleHBlY3RlZFR5cGUgPT09ICdvYmplY3Qn
KSB7CisgICAgICAgIGZvciAoa2V5IGluIGV4cGVjdGVkKSB7CisgICAgICAgICAgdmFyIGV4cGVj
dGVkVmFsID0gZXhwZWN0ZWRba2V5XTsKKyAgICAgICAgICBpZiAoaXNGdW5jdGlvbihleHBlY3Rl
ZFZhbCkgfHwgaXNVbmRlZmluZWQoZXhwZWN0ZWRWYWwpKSB7CisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICB9CisKKyAgICAgICAgICB2YXIgbWF0Y2hBbnlQcm9wZXJ0eSA9IGtleSA9
PT0gJyQnOworICAgICAgICAgIHZhciBhY3R1YWxWYWwgPSBtYXRjaEFueVByb3BlcnR5ID8gYWN0
dWFsIDogYWN0dWFsW2tleV07CisgICAgICAgICAgaWYgKCFkZWVwQ29tcGFyZShhY3R1YWxWYWws
IGV4cGVjdGVkVmFsLCBjb21wYXJhdG9yLCBtYXRjaEFueVByb3BlcnR5LCBtYXRjaEFueVByb3Bl
cnR5KSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiBj
b21wYXJhdG9yKGFjdHVhbCwgZXhwZWN0ZWQpOworICAgICAgfQorICAgICAgYnJlYWs7CisgICAg
Y2FzZSAnZnVuY3Rpb24nOgorICAgICAgcmV0dXJuIGZhbHNlOworICAgIGRlZmF1bHQ6CisgICAg
ICByZXR1cm4gY29tcGFyYXRvcihhY3R1YWwsIGV4cGVjdGVkKTsKKyAgfQorfQorCisvLyBVc2Vk
IGZvciBlYXNpbHkgZGlmZmVyZW50aWF0aW5nIGJldHdlZW4gYG51bGxgIGFuZCBhY3R1YWwgYG9i
amVjdGAKK2Z1bmN0aW9uIGdldFR5cGVGb3JGaWx0ZXIodmFsKSB7CisgIHJldHVybiAodmFsID09
PSBudWxsKSA/ICdudWxsJyA6IHR5cGVvZiB2YWw7Cit9CisKKy8qKgorICogQG5nZG9jIGZpbHRl
cgorICogQG5hbWUgY3VycmVuY3kKKyAqIEBraW5kIGZ1bmN0aW9uCisgKgorICogQGRlc2NyaXB0
aW9uCisgKiBGb3JtYXRzIGEgbnVtYmVyIGFzIGEgY3VycmVuY3kgKGllICQxLDIzNC41NikuIFdo
ZW4gbm8gY3VycmVuY3kgc3ltYm9sIGlzIHByb3ZpZGVkLCBkZWZhdWx0CisgKiBzeW1ib2wgZm9y
IGN1cnJlbnQgbG9jYWxlIGlzIHVzZWQuCisgKgorICogQHBhcmFtIHtudW1iZXJ9IGFtb3VudCBJ
bnB1dCB0byBmaWx0ZXIuCisgKiBAcGFyYW0ge3N0cmluZz19IHN5bWJvbCBDdXJyZW5jeSBzeW1i
b2wgb3IgaWRlbnRpZmllciB0byBiZSBkaXNwbGF5ZWQuCisgKiBAcGFyYW0ge251bWJlcj19IGZy
YWN0aW9uU2l6ZSBOdW1iZXIgb2YgZGVjaW1hbCBwbGFjZXMgdG8gcm91bmQgdGhlIGFtb3VudCB0
bywgZGVmYXVsdHMgdG8gZGVmYXVsdCBtYXggZnJhY3Rpb24gc2l6ZSBmb3IgY3VycmVudCBsb2Nh
bGUKKyAqIEByZXR1cm5zIHtzdHJpbmd9IEZvcm1hdHRlZCBudW1iZXIuCisgKgorICoKKyAqIEBl
eGFtcGxlCisgICA8ZXhhbXBsZSBtb2R1bGU9ImN1cnJlbmN5RXhhbXBsZSI+CisgICAgIDxmaWxl
IG5hbWU9ImluZGV4Lmh0bWwiPgorICAgICAgIDxzY3JpcHQ+CisgICAgICAgICBhbmd1bGFyLm1v
ZHVsZSgnY3VycmVuY3lFeGFtcGxlJywgW10pCisgICAgICAgICAgIC5jb250cm9sbGVyKCdFeGFt
cGxlQ29udHJvbGxlcicsIFsnJHNjb3BlJywgZnVuY3Rpb24oJHNjb3BlKSB7CisgICAgICAgICAg
ICAgJHNjb3BlLmFtb3VudCA9IDEyMzQuNTY7CisgICAgICAgICAgIH1dKTsKKyAgICAgICA8L3Nj
cmlwdD4KKyAgICAgICA8ZGl2IG5nLWNvbnRyb2xsZXI9IkV4YW1wbGVDb250cm9sbGVyIj4KKyAg
ICAgICAgIDxpbnB1dCB0eXBlPSJudW1iZXIiIG5nLW1vZGVsPSJhbW91bnQiIGFyaWEtbGFiZWw9
ImFtb3VudCI+IDxicj4KKyAgICAgICAgIGRlZmF1bHQgY3VycmVuY3kgc3ltYm9sICgkKTogPHNw
YW4gaWQ9ImN1cnJlbmN5LWRlZmF1bHQiPnt7YW1vdW50IHwgY3VycmVuY3l9fTwvc3Bhbj48YnI+
CisgICAgICAgICBjdXN0b20gY3VycmVuY3kgaWRlbnRpZmllciAoVVNEJCk6IDxzcGFuIGlkPSJj
dXJyZW5jeS1jdXN0b20iPnt7YW1vdW50IHwgY3VycmVuY3k6IlVTRCQifX08L3NwYW4+CisgICAg
ICAgICBubyBmcmFjdGlvbnMgKDApOiA8c3BhbiBpZD0iY3VycmVuY3ktbm8tZnJhY3Rpb25zIj57
e2Ftb3VudCB8IGN1cnJlbmN5OiJVU0QkIjowfX08L3NwYW4+CisgICAgICAgPC9kaXY+CisgICAg
IDwvZmlsZT4KKyAgICAgPGZpbGUgbmFtZT0icHJvdHJhY3Rvci5qcyIgdHlwZT0icHJvdHJhY3Rv
ciI+CisgICAgICAgaXQoJ3Nob3VsZCBpbml0IHdpdGggMTIzNC41NicsIGZ1bmN0aW9uKCkgewor
ICAgICAgICAgZXhwZWN0KGVsZW1lbnQoYnkuaWQoJ2N1cnJlbmN5LWRlZmF1bHQnKSkuZ2V0VGV4
dCgpKS50b0JlKCckMSwyMzQuNTYnKTsKKyAgICAgICAgIGV4cGVjdChlbGVtZW50KGJ5LmlkKCdj
dXJyZW5jeS1jdXN0b20nKSkuZ2V0VGV4dCgpKS50b0JlKCdVU0QkMSwyMzQuNTYnKTsKKyAgICAg
ICAgIGV4cGVjdChlbGVtZW50KGJ5LmlkKCdjdXJyZW5jeS1uby1mcmFjdGlvbnMnKSkuZ2V0VGV4
dCgpKS50b0JlKCdVU0QkMSwyMzUnKTsKKyAgICAgICB9KTsKKyAgICAgICBpdCgnc2hvdWxkIHVw
ZGF0ZScsIGZ1bmN0aW9uKCkgeworICAgICAgICAgaWYgKGJyb3dzZXIucGFyYW1zLmJyb3dzZXIg
PT0gJ3NhZmFyaScpIHsKKyAgICAgICAgICAgLy8gU2FmYXJpIGRvZXMgbm90IHVuZGVyc3RhbmQg
dGhlIG1pbnVzIGtleS4gU2VlCisgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1
bGFyL3Byb3RyYWN0b3IvaXNzdWVzLzQ4MQorICAgICAgICAgICByZXR1cm47CisgICAgICAgICB9
CisgICAgICAgICBlbGVtZW50KGJ5Lm1vZGVsKCdhbW91bnQnKSkuY2xlYXIoKTsKKyAgICAgICAg
IGVsZW1lbnQoYnkubW9kZWwoJ2Ftb3VudCcpKS5zZW5kS2V5cygnLTEyMzQnKTsKKyAgICAgICAg
IGV4cGVjdChlbGVtZW50KGJ5LmlkKCdjdXJyZW5jeS1kZWZhdWx0JykpLmdldFRleHQoKSkudG9C
ZSgnKCQxLDIzNC4wMCknKTsKKyAgICAgICAgIGV4cGVjdChlbGVtZW50KGJ5LmlkKCdjdXJyZW5j
eS1jdXN0b20nKSkuZ2V0VGV4dCgpKS50b0JlKCcoVVNEJDEsMjM0LjAwKScpOworICAgICAgICAg
ZXhwZWN0KGVsZW1lbnQoYnkuaWQoJ2N1cnJlbmN5LW5vLWZyYWN0aW9ucycpKS5nZXRUZXh0KCkp
LnRvQmUoJyhVU0QkMSwyMzQpJyk7CisgICAgICAgfSk7CisgICAgIDwvZmlsZT4KKyAgIDwvZXhh
bXBsZT4KKyAqLworY3VycmVuY3lGaWx0ZXIuJGluamVjdCA9IFsnJGxvY2FsZSddOworZnVuY3Rp
b24gY3VycmVuY3lGaWx0ZXIoJGxvY2FsZSkgeworICB2YXIgZm9ybWF0cyA9ICRsb2NhbGUuTlVN
QkVSX0ZPUk1BVFM7CisgIHJldHVybiBmdW5jdGlvbihhbW91bnQsIGN1cnJlbmN5U3ltYm9sLCBm
cmFjdGlvblNpemUpIHsKKyAgICBpZiAoaXNVbmRlZmluZWQoY3VycmVuY3lTeW1ib2wpKSB7Cisg
ICAgICBjdXJyZW5jeVN5bWJvbCA9IGZvcm1hdHMuQ1VSUkVOQ1lfU1lNOworICAgIH0KKworICAg
IGlmIChpc1VuZGVmaW5lZChmcmFjdGlvblNpemUpKSB7CisgICAgICBmcmFjdGlvblNpemUgPSBm
b3JtYXRzLlBBVFRFUk5TWzFdLm1heEZyYWM7CisgICAgfQorCisgICAgLy8gaWYgbnVsbCBvciB1
bmRlZmluZWQgcGFzcyBpdCB0aHJvdWdoCisgICAgcmV0dXJuIChhbW91bnQgPT0gbnVsbCkKKyAg
ICAgICAgPyBhbW91bnQKKyAgICAgICAgOiBmb3JtYXROdW1iZXIoYW1vdW50LCBmb3JtYXRzLlBB
VFRFUk5TWzFdLCBmb3JtYXRzLkdST1VQX1NFUCwgZm9ybWF0cy5ERUNJTUFMX1NFUCwgZnJhY3Rp
b25TaXplKS4KKyAgICAgICAgICAgIHJlcGxhY2UoL1x1MDBBNC9nLCBjdXJyZW5jeVN5bWJvbCk7
CisgIH07Cit9CisKKy8qKgorICogQG5nZG9jIGZpbHRlcgorICogQG5hbWUgbnVtYmVyCisgKiBA
a2luZCBmdW5jdGlvbgorICoKKyAqIEBkZXNjcmlwdGlvbgorICogRm9ybWF0cyBhIG51bWJlciBh
cyB0ZXh0LgorICoKKyAqIElmIHRoZSBpbnB1dCBpcyBudWxsIG9yIHVuZGVmaW5lZCwgaXQgd2ls
bCBqdXN0IGJlIHJldHVybmVkLgorICogSWYgdGhlIGlucHV0IGlzIGluZmluaXRlIChJbmZpbml0
eS8tSW5maW5pdHkpIHRoZSBJbmZpbml0eSBzeW1ib2wgJ+KInicgaXMgcmV0dXJuZWQuCisgKiBJ
ZiB0aGUgaW5wdXQgaXMgbm90IGEgbnVtYmVyIGFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZC4K
KyAqCisgKgorICogQHBhcmFtIHtudW1iZXJ8c3RyaW5nfSBudW1iZXIgTnVtYmVyIHRvIGZvcm1h
dC4KKyAqIEBwYXJhbSB7KG51bWJlcnxzdHJpbmcpPX0gZnJhY3Rpb25TaXplIE51bWJlciBvZiBk
ZWNpbWFsIHBsYWNlcyB0byByb3VuZCB0aGUgbnVtYmVyIHRvLgorICogSWYgdGhpcyBpcyBub3Qg
cHJvdmlkZWQgdGhlbiB0aGUgZnJhY3Rpb24gc2l6ZSBpcyBjb21wdXRlZCBmcm9tIHRoZSBjdXJy
ZW50IGxvY2FsZSdzIG51bWJlcgorICogZm9ybWF0dGluZyBwYXR0ZXJuLiBJbiB0aGUgY2FzZSBv
ZiB0aGUgZGVmYXVsdCBsb2NhbGUsIGl0IHdpbGwgYmUgMy4KKyAqIEByZXR1cm5zIHtzdHJpbmd9
IE51bWJlciByb3VuZGVkIHRvIGRlY2ltYWxQbGFjZXMgYW5kIHBsYWNlcyBhIOKAnCzigJ0gYWZ0
ZXIgZWFjaCB0aGlyZCBkaWdpdC4KKyAqCisgKiBAZXhhbXBsZQorICAgPGV4YW1wbGUgbW9kdWxl
PSJudW1iZXJGaWx0ZXJFeGFtcGxlIj4KKyAgICAgPGZpbGUgbmFtZT0iaW5kZXguaHRtbCI+Cisg
ICAgICAgPHNjcmlwdD4KKyAgICAgICAgIGFuZ3VsYXIubW9kdWxlKCdudW1iZXJGaWx0ZXJFeGFt
cGxlJywgW10pCisgICAgICAgICAgIC5jb250cm9sbGVyKCdFeGFtcGxlQ29udHJvbGxlcicsIFsn
JHNjb3BlJywgZnVuY3Rpb24oJHNjb3BlKSB7CisgICAgICAgICAgICAgJHNjb3BlLnZhbCA9IDEy
MzQuNTY3ODk7CisgICAgICAgICAgIH1dKTsKKyAgICAgICA8L3NjcmlwdD4KKyAgICAgICA8ZGl2
IG5nLWNvbnRyb2xsZXI9IkV4YW1wbGVDb250cm9sbGVyIj4KKyAgICAgICAgIDxsYWJlbD5FbnRl
ciBudW1iZXI6IDxpbnB1dCBuZy1tb2RlbD0ndmFsJz48L2xhYmVsPjxicj4KKyAgICAgICAgIERl
ZmF1bHQgZm9ybWF0dGluZzogPHNwYW4gaWQ9J251bWJlci1kZWZhdWx0Jz57e3ZhbCB8IG51bWJl
cn19PC9zcGFuPjxicj4KKyAgICAgICAgIE5vIGZyYWN0aW9uczogPHNwYW4+e3t2YWwgfCBudW1i
ZXI6MH19PC9zcGFuPjxicj4KKyAgICAgICAgIE5lZ2F0aXZlIG51bWJlcjogPHNwYW4+e3stdmFs
IHwgbnVtYmVyOjR9fTwvc3Bhbj4KKyAgICAgICA8L2Rpdj4KKyAgICAgPC9maWxlPgorICAgICA8
ZmlsZSBuYW1lPSJwcm90cmFjdG9yLmpzIiB0eXBlPSJwcm90cmFjdG9yIj4KKyAgICAgICBpdCgn
c2hvdWxkIGZvcm1hdCBudW1iZXJzJywgZnVuY3Rpb24oKSB7CisgICAgICAgICBleHBlY3QoZWxl
bWVudChieS5pZCgnbnVtYmVyLWRlZmF1bHQnKSkuZ2V0VGV4dCgpKS50b0JlKCcxLDIzNC41Njgn
KTsKKyAgICAgICAgIGV4cGVjdChlbGVtZW50KGJ5LmJpbmRpbmcoJ3ZhbCB8IG51bWJlcjowJykp
LmdldFRleHQoKSkudG9CZSgnMSwyMzUnKTsKKyAgICAgICAgIGV4cGVjdChlbGVtZW50KGJ5LmJp
bmRpbmcoJy12YWwgfCBudW1iZXI6NCcpKS5nZXRUZXh0KCkpLnRvQmUoJy0xLDIzNC41Njc5Jyk7
CisgICAgICAgfSk7CisKKyAgICAgICBpdCgnc2hvdWxkIHVwZGF0ZScsIGZ1bmN0aW9uKCkgewor
ICAgICAgICAgZWxlbWVudChieS5tb2RlbCgndmFsJykpLmNsZWFyKCk7CisgICAgICAgICBlbGVt
ZW50KGJ5Lm1vZGVsKCd2YWwnKSkuc2VuZEtleXMoJzMzNzQuMzMzJyk7CisgICAgICAgICBleHBl
Y3QoZWxlbWVudChieS5pZCgnbnVtYmVyLWRlZmF1bHQnKSkuZ2V0VGV4dCgpKS50b0JlKCczLDM3
NC4zMzMnKTsKKyAgICAgICAgIGV4cGVjdChlbGVtZW50KGJ5LmJpbmRpbmcoJ3ZhbCB8IG51bWJl
cjowJykpLmdldFRleHQoKSkudG9CZSgnMywzNzQnKTsKKyAgICAgICAgIGV4cGVjdChlbGVtZW50
KGJ5LmJpbmRpbmcoJy12YWwgfCBudW1iZXI6NCcpKS5nZXRUZXh0KCkpLnRvQmUoJy0zLDM3NC4z
MzMwJyk7CisgICAgICB9KTsKKyAgICAgPC9maWxlPgorICAgPC9leGFtcGxlPgorICovCisKKwor
bnVtYmVyRmlsdGVyLiRpbmplY3QgPSBbJyRsb2NhbGUnXTsKK2Z1bmN0aW9uIG51bWJlckZpbHRl
cigkbG9jYWxlKSB7CisgIHZhciBmb3JtYXRzID0gJGxvY2FsZS5OVU1CRVJfRk9STUFUUzsKKyAg
cmV0dXJuIGZ1bmN0aW9uKG51bWJlciwgZnJhY3Rpb25TaXplKSB7CisKKyAgICAvLyBpZiBudWxs
IG9yIHVuZGVmaW5lZCBwYXNzIGl0IHRocm91Z2gKKyAgICByZXR1cm4gKG51bWJlciA9PSBudWxs
KQorICAgICAgICA/IG51bWJlcgorICAgICAgICA6IGZvcm1hdE51bWJlcihudW1iZXIsIGZvcm1h
dHMuUEFUVEVSTlNbMF0sIGZvcm1hdHMuR1JPVVBfU0VQLCBmb3JtYXRzLkRFQ0lNQUxfU0VQLAor
ICAgICAgICAgICAgICAgICAgICAgICBmcmFjdGlvblNpemUpOworICB9OworfQorCit2YXIgREVD
SU1BTF9TRVAgPSAnLic7CitmdW5jdGlvbiBmb3JtYXROdW1iZXIobnVtYmVyLCBwYXR0ZXJuLCBn
cm91cFNlcCwgZGVjaW1hbFNlcCwgZnJhY3Rpb25TaXplKSB7CisgIGlmIChpc09iamVjdChudW1i
ZXIpKSByZXR1cm4gJyc7CisKKyAgdmFyIGlzTmVnYXRpdmUgPSBudW1iZXIgPCAwOworICBudW1i
ZXIgPSBNYXRoLmFicyhudW1iZXIpOworCisgIHZhciBpc0luZmluaXR5ID0gbnVtYmVyID09PSBJ
bmZpbml0eTsKKyAgaWYgKCFpc0luZmluaXR5ICYmICFpc0Zpbml0ZShudW1iZXIpKSByZXR1cm4g
Jyc7CisKKyAgdmFyIG51bVN0ciA9IG51bWJlciArICcnLAorICAgICAgZm9ybWF0ZWRUZXh0ID0g
JycsCisgICAgICBoYXNFeHBvbmVudCA9IGZhbHNlLAorICAgICAgcGFydHMgPSBbXTsKKworICBp
ZiAoaXNJbmZpbml0eSkgZm9ybWF0ZWRUZXh0ID0gJ1x1MjIxZSc7CisKKyAgaWYgKCFpc0luZmlu
aXR5ICYmIG51bVN0ci5pbmRleE9mKCdlJykgIT09IC0xKSB7CisgICAgdmFyIG1hdGNoID0gbnVt
U3RyLm1hdGNoKC8oW1xkXC5dKyllKC0/KShcZCspLyk7CisgICAgaWYgKG1hdGNoICYmIG1hdGNo
WzJdID09ICctJyAmJiBtYXRjaFszXSA+IGZyYWN0aW9uU2l6ZSArIDEpIHsKKyAgICAgIG51bWJl
ciA9IDA7CisgICAgfSBlbHNlIHsKKyAgICAgIGZvcm1hdGVkVGV4dCA9IG51bVN0cjsKKyAgICAg
IGhhc0V4cG9uZW50ID0gdHJ1ZTsKKyAgICB9CisgIH0KKworICBpZiAoIWlzSW5maW5pdHkgJiYg
IWhhc0V4cG9uZW50KSB7CisgICAgdmFyIGZyYWN0aW9uTGVuID0gKG51bVN0ci5zcGxpdChERUNJ
TUFMX1NFUClbMV0gfHwgJycpLmxlbmd0aDsKKworICAgIC8vIGRldGVybWluZSBmcmFjdGlvblNp
emUgaWYgaXQgaXMgbm90IHNwZWNpZmllZAorICAgIGlmIChpc1VuZGVmaW5lZChmcmFjdGlvblNp
emUpKSB7CisgICAgICBmcmFjdGlvblNpemUgPSBNYXRoLm1pbihNYXRoLm1heChwYXR0ZXJuLm1p
bkZyYWMsIGZyYWN0aW9uTGVuKSwgcGF0dGVybi5tYXhGcmFjKTsKKyAgICB9CisKKyAgICAvLyBz
YWZlbHkgcm91bmQgbnVtYmVycyBpbiBKUyB3aXRob3V0IGhpdHRpbmcgaW1wcmVjaXNpb25zIG9m
IGZsb2F0aW5nLXBvaW50IGFyaXRobWV0aWNzCisgICAgLy8gaW5zcGlyZWQgYnk6CisgICAgLy8g
aHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9S
ZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvTWF0aC9yb3VuZAorICAgIG51bWJlciA9ICsoTWF0aC5y
b3VuZCgrKG51bWJlci50b1N0cmluZygpICsgJ2UnICsgZnJhY3Rpb25TaXplKSkudG9TdHJpbmco
KSArICdlJyArIC1mcmFjdGlvblNpemUpOworCisgICAgdmFyIGZyYWN0aW9uID0gKCcnICsgbnVt
YmVyKS5zcGxpdChERUNJTUFMX1NFUCk7CisgICAgdmFyIHdob2xlID0gZnJhY3Rpb25bMF07Cisg
ICAgZnJhY3Rpb24gPSBmcmFjdGlvblsxXSB8fCAnJzsKKworICAgIHZhciBpLCBwb3MgPSAwLAor
ICAgICAgICBsZ3JvdXAgPSBwYXR0ZXJuLmxnU2l6ZSwKKyAgICAgICAgZ3JvdXAgPSBwYXR0ZXJu
LmdTaXplOworCisgICAgaWYgKHdob2xlLmxlbmd0aCA+PSAobGdyb3VwICsgZ3JvdXApKSB7Cisg
ICAgICBwb3MgPSB3aG9sZS5sZW5ndGggLSBsZ3JvdXA7CisgICAgICBmb3IgKGkgPSAwOyBpIDwg
cG9zOyBpKyspIHsKKyAgICAgICAgaWYgKChwb3MgLSBpKSAlIGdyb3VwID09PSAwICYmIGkgIT09
IDApIHsKKyAgICAgICAgICBmb3JtYXRlZFRleHQgKz0gZ3JvdXBTZXA7CisgICAgICAgIH0KKyAg
ICAgICAgZm9ybWF0ZWRUZXh0ICs9IHdob2xlLmNoYXJBdChpKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICBmb3IgKGkgPSBwb3M7IGkgPCB3aG9sZS5sZW5ndGg7IGkrKykgeworICAgICAgaWYgKCh3
aG9sZS5sZW5ndGggLSBpKSAlIGxncm91cCA9PT0gMCAmJiBpICE9PSAwKSB7CisgICAgICAgIGZv
cm1hdGVkVGV4dCArPSBncm91cFNlcDsKKyAgICAgIH0KKyAgICAgIGZvcm1hdGVkVGV4dCArPSB3
aG9sZS5jaGFyQXQoaSk7CisgICAgfQorCisgICAgLy8gZm9ybWF0IGZyYWN0aW9uIHBhcnQuCisg
ICAgd2hpbGUgKGZyYWN0aW9uLmxlbmd0aCA8IGZyYWN0aW9uU2l6ZSkgeworICAgICAgZnJhY3Rp
b24gKz0gJzAnOworICAgIH0KKworICAgIGlmIChmcmFjdGlvblNpemUgJiYgZnJhY3Rpb25TaXpl
ICE9PSAiMCIpIGZvcm1hdGVkVGV4dCArPSBkZWNpbWFsU2VwICsgZnJhY3Rpb24uc3Vic3RyKDAs
IGZyYWN0aW9uU2l6ZSk7CisgIH0gZWxzZSB7CisgICAgaWYgKGZyYWN0aW9uU2l6ZSA+IDAgJiYg
bnVtYmVyIDwgMSkgeworICAgICAgZm9ybWF0ZWRUZXh0ID0gbnVtYmVyLnRvRml4ZWQoZnJhY3Rp
b25TaXplKTsKKyAgICAgIG51bWJlciA9IHBhcnNlRmxvYXQoZm9ybWF0ZWRUZXh0KTsKKyAgICB9
CisgIH0KKworICBpZiAobnVtYmVyID09PSAwKSB7CisgICAgaXNOZWdhdGl2ZSA9IGZhbHNlOwor
ICB9CisKKyAgcGFydHMucHVzaChpc05lZ2F0aXZlID8gcGF0dGVybi5uZWdQcmUgOiBwYXR0ZXJu
LnBvc1ByZSwKKyAgICAgICAgICAgICBmb3JtYXRlZFRleHQsCisgICAgICAgICAgICAgaXNOZWdh
dGl2ZSA/IHBhdHRlcm4ubmVnU3VmIDogcGF0dGVybi5wb3NTdWYpOworICByZXR1cm4gcGFydHMu
am9pbignJyk7Cit9CisKK2Z1bmN0aW9uIHBhZE51bWJlcihudW0sIGRpZ2l0cywgdHJpbSkgewor
ICB2YXIgbmVnID0gJyc7CisgIGlmIChudW0gPCAwKSB7CisgICAgbmVnID0gICctJzsKKyAgICBu
dW0gPSAtbnVtOworICB9CisgIG51bSA9ICcnICsgbnVtOworICB3aGlsZSAobnVtLmxlbmd0aCA8
IGRpZ2l0cykgbnVtID0gJzAnICsgbnVtOworICBpZiAodHJpbSkgeworICAgIG51bSA9IG51bS5z
dWJzdHIobnVtLmxlbmd0aCAtIGRpZ2l0cyk7CisgIH0KKyAgcmV0dXJuIG5lZyArIG51bTsKK30K
KworCitmdW5jdGlvbiBkYXRlR2V0dGVyKG5hbWUsIHNpemUsIG9mZnNldCwgdHJpbSkgeworICBv
ZmZzZXQgPSBvZmZzZXQgfHwgMDsKKyAgcmV0dXJuIGZ1bmN0aW9uKGRhdGUpIHsKKyAgICB2YXIg
dmFsdWUgPSBkYXRlWydnZXQnICsgbmFtZV0oKTsKKyAgICBpZiAob2Zmc2V0ID4gMCB8fCB2YWx1
ZSA+IC1vZmZzZXQpIHsKKyAgICAgIHZhbHVlICs9IG9mZnNldDsKKyAgICB9CisgICAgaWYgKHZh
bHVlID09PSAwICYmIG9mZnNldCA9PSAtMTIpIHZhbHVlID0gMTI7CisgICAgcmV0dXJuIHBhZE51
bWJlcih2YWx1ZSwgc2l6ZSwgdHJpbSk7CisgIH07Cit9CisKK2Z1bmN0aW9uIGRhdGVTdHJHZXR0
ZXIobmFtZSwgc2hvcnRGb3JtKSB7CisgIHJldHVybiBmdW5jdGlvbihkYXRlLCBmb3JtYXRzKSB7
CisgICAgdmFyIHZhbHVlID0gZGF0ZVsnZ2V0JyArIG5hbWVdKCk7CisgICAgdmFyIGdldCA9IHVw
cGVyY2FzZShzaG9ydEZvcm0gPyAoJ1NIT1JUJyArIG5hbWUpIDogbmFtZSk7CisKKyAgICByZXR1
cm4gZm9ybWF0c1tnZXRdW3ZhbHVlXTsKKyAgfTsKK30KKworZnVuY3Rpb24gdGltZVpvbmVHZXR0
ZXIoZGF0ZSwgZm9ybWF0cywgb2Zmc2V0KSB7CisgIHZhciB6b25lID0gLTEgKiBvZmZzZXQ7Cisg
IHZhciBwYWRkZWRab25lID0gKHpvbmUgPj0gMCkgPyAiKyIgOiAiIjsKKworICBwYWRkZWRab25l
ICs9IHBhZE51bWJlcihNYXRoW3pvbmUgPiAwID8gJ2Zsb29yJyA6ICdjZWlsJ10oem9uZSAvIDYw
KSwgMikgKworICAgICAgICAgICAgICAgIHBhZE51bWJlcihNYXRoLmFicyh6b25lICUgNjApLCAy
KTsKKworICByZXR1cm4gcGFkZGVkWm9uZTsKK30KKworZnVuY3Rpb24gZ2V0Rmlyc3RUaHVyc2Rh
eU9mWWVhcih5ZWFyKSB7CisgICAgLy8gMCA9IGluZGV4IG9mIEphbnVhcnkKKyAgICB2YXIgZGF5
T2ZXZWVrT25GaXJzdCA9IChuZXcgRGF0ZSh5ZWFyLCAwLCAxKSkuZ2V0RGF5KCk7CisgICAgLy8g
NCA9IGluZGV4IG9mIFRodXJzZGF5ICgrMSB0byBhY2NvdW50IGZvciAxc3QgPSA1KQorICAgIC8v
IDExID0gaW5kZXggb2YgKm5leHQqIFRodXJzZGF5ICgrMSBhY2NvdW50IGZvciAxc3QgPSAxMikK
KyAgICByZXR1cm4gbmV3IERhdGUoeWVhciwgMCwgKChkYXlPZldlZWtPbkZpcnN0IDw9IDQpID8g
NSA6IDEyKSAtIGRheU9mV2Vla09uRmlyc3QpOworfQorCitmdW5jdGlvbiBnZXRUaHVyc2RheVRo
aXNXZWVrKGRhdGV0aW1lKSB7CisgICAgcmV0dXJuIG5ldyBEYXRlKGRhdGV0aW1lLmdldEZ1bGxZ
ZWFyKCksIGRhdGV0aW1lLmdldE1vbnRoKCksCisgICAgICAvLyA0ID0gaW5kZXggb2YgVGh1cnNk
YXkKKyAgICAgIGRhdGV0aW1lLmdldERhdGUoKSArICg0IC0gZGF0ZXRpbWUuZ2V0RGF5KCkpKTsK
K30KKworZnVuY3Rpb24gd2Vla0dldHRlcihzaXplKSB7CisgICByZXR1cm4gZnVuY3Rpb24oZGF0
ZSkgeworICAgICAgdmFyIGZpcnN0VGh1cnMgPSBnZXRGaXJzdFRodXJzZGF5T2ZZZWFyKGRhdGUu
Z2V0RnVsbFllYXIoKSksCisgICAgICAgICB0aGlzVGh1cnMgPSBnZXRUaHVyc2RheVRoaXNXZWVr
KGRhdGUpOworCisgICAgICB2YXIgZGlmZiA9ICt0aGlzVGh1cnMgLSArZmlyc3RUaHVycywKKyAg
ICAgICAgIHJlc3VsdCA9IDEgKyBNYXRoLnJvdW5kKGRpZmYgLyA2LjA0OGU4KTsgLy8gNi4wNDhl
OCBtcyBwZXIgd2VlaworCisgICAgICByZXR1cm4gcGFkTnVtYmVyKHJlc3VsdCwgc2l6ZSk7Cisg
ICB9OworfQorCitmdW5jdGlvbiBhbXBtR2V0dGVyKGRhdGUsIGZvcm1hdHMpIHsKKyAgcmV0dXJu
IGRhdGUuZ2V0SG91cnMoKSA8IDEyID8gZm9ybWF0cy5BTVBNU1swXSA6IGZvcm1hdHMuQU1QTVNb
MV07Cit9CisKK2Z1bmN0aW9uIGVyYUdldHRlcihkYXRlLCBmb3JtYXRzKSB7CisgIHJldHVybiBk
YXRlLmdldEZ1bGxZZWFyKCkgPD0gMCA/IGZvcm1hdHMuRVJBU1swXSA6IGZvcm1hdHMuRVJBU1sx
XTsKK30KKworZnVuY3Rpb24gbG9uZ0VyYUdldHRlcihkYXRlLCBmb3JtYXRzKSB7CisgIHJldHVy
biBkYXRlLmdldEZ1bGxZZWFyKCkgPD0gMCA/IGZvcm1hdHMuRVJBTkFNRVNbMF0gOiBmb3JtYXRz
LkVSQU5BTUVTWzFdOworfQorCit2YXIgREFURV9GT1JNQVRTID0geworICB5eXl5OiBkYXRlR2V0
dGVyKCdGdWxsWWVhcicsIDQpLAorICAgIHl5OiBkYXRlR2V0dGVyKCdGdWxsWWVhcicsIDIsIDAs
IHRydWUpLAorICAgICB5OiBkYXRlR2V0dGVyKCdGdWxsWWVhcicsIDEpLAorICBNTU1NOiBkYXRl
U3RyR2V0dGVyKCdNb250aCcpLAorICAgTU1NOiBkYXRlU3RyR2V0dGVyKCdNb250aCcsIHRydWUp
LAorICAgIE1NOiBkYXRlR2V0dGVyKCdNb250aCcsIDIsIDEpLAorICAgICBNOiBkYXRlR2V0dGVy
KCdNb250aCcsIDEsIDEpLAorICAgIGRkOiBkYXRlR2V0dGVyKCdEYXRlJywgMiksCisgICAgIGQ6
IGRhdGVHZXR0ZXIoJ0RhdGUnLCAxKSwKKyAgICBISDogZGF0ZUdldHRlcignSG91cnMnLCAyKSwK
KyAgICAgSDogZGF0ZUdldHRlcignSG91cnMnLCAxKSwKKyAgICBoaDogZGF0ZUdldHRlcignSG91
cnMnLCAyLCAtMTIpLAorICAgICBoOiBkYXRlR2V0dGVyKCdIb3VycycsIDEsIC0xMiksCisgICAg
bW06IGRhdGVHZXR0ZXIoJ01pbnV0ZXMnLCAyKSwKKyAgICAgbTogZGF0ZUdldHRlcignTWludXRl
cycsIDEpLAorICAgIHNzOiBkYXRlR2V0dGVyKCdTZWNvbmRzJywgMiksCisgICAgIHM6IGRhdGVH
ZXR0ZXIoJ1NlY29uZHMnLCAxKSwKKyAgICAgLy8gd2hpbGUgSVNPIDg2MDEgcmVxdWlyZXMgZnJh
Y3Rpb25zIHRvIGJlIHByZWZpeGVkIHdpdGggYC5gIG9yIGAsYAorICAgICAvLyB3ZSBjYW4gYmUg
anVzdCBzYWZlbHkgcmVseSBvbiB1c2luZyBgc3NzYCBzaW5jZSB3ZSBjdXJyZW50bHkgZG9uJ3Qg
c3VwcG9ydCBzaW5nbGUgb3IgdHdvIGRpZ2l0IGZyYWN0aW9ucworICAgc3NzOiBkYXRlR2V0dGVy
KCdNaWxsaXNlY29uZHMnLCAzKSwKKyAgRUVFRTogZGF0ZVN0ckdldHRlcignRGF5JyksCisgICBF
RUU6IGRhdGVTdHJHZXR0ZXIoJ0RheScsIHRydWUpLAorICAgICBhOiBhbXBtR2V0dGVyLAorICAg
ICBaOiB0aW1lWm9uZUdldHRlciwKKyAgICB3dzogd2Vla0dldHRlcigyKSwKKyAgICAgdzogd2Vl
a0dldHRlcigxKSwKKyAgICAgRzogZXJhR2V0dGVyLAorICAgICBHRzogZXJhR2V0dGVyLAorICAg
ICBHR0c6IGVyYUdldHRlciwKKyAgICAgR0dHRzogbG9uZ0VyYUdldHRlcgorfTsKKwordmFyIERB
VEVfRk9STUFUU19TUExJVCA9IC8oKD86W155TWRIaG1zYVpFd0cnXSspfCg/OicoPzpbXiddfCcn
KSonKXwoPzpFK3x5K3xNK3xkK3xIK3xoK3xtK3xzK3xhfFp8Ryt8dyspKSguKikvLAorICAgIE5V
TUJFUl9TVFJJTkcgPSAvXlwtP1xkKyQvOworCisvKioKKyAqIEBuZ2RvYyBmaWx0ZXIKKyAqIEBu
YW1lIGRhdGUKKyAqIEBraW5kIGZ1bmN0aW9uCisgKgorICogQGRlc2NyaXB0aW9uCisgKiAgIEZv
cm1hdHMgYGRhdGVgIHRvIGEgc3RyaW5nIGJhc2VkIG9uIHRoZSByZXF1ZXN0ZWQgYGZvcm1hdGAu
CisgKgorICogICBgZm9ybWF0YCBzdHJpbmcgY2FuIGJlIGNvbXBvc2VkIG9mIHRoZSBmb2xsb3dp
bmcgZWxlbWVudHM6CisgKgorICogICAqIGAneXl5eSdgOiA0IGRpZ2l0IHJlcHJlc2VudGF0aW9u
IG9mIHllYXIgKGUuZy4gQUQgMSA9PiAwMDAxLCBBRCAyMDEwID0+IDIwMTApCisgKiAgICogYCd5
eSdgOiAyIGRpZ2l0IHJlcHJlc2VudGF0aW9uIG9mIHllYXIsIHBhZGRlZCAoMDAtOTkpLiAoZS5n
LiBBRCAyMDAxID0+IDAxLCBBRCAyMDEwID0+IDEwKQorICogICAqIGAneSdgOiAxIGRpZ2l0IHJl
cHJlc2VudGF0aW9uIG9mIHllYXIsIGUuZy4gKEFEIDEgPT4gMSwgQUQgMTk5ID0+IDE5OSkKKyAq
ICAgKiBgJ01NTU0nYDogTW9udGggaW4geWVhciAoSmFudWFyeS1EZWNlbWJlcikKKyAqICAgKiBg
J01NTSdgOiBNb250aCBpbiB5ZWFyIChKYW4tRGVjKQorICogICAqIGAnTU0nYDogTW9udGggaW4g
eWVhciwgcGFkZGVkICgwMS0xMikKKyAqICAgKiBgJ00nYDogTW9udGggaW4geWVhciAoMS0xMikK
KyAqICAgKiBgJ2RkJ2A6IERheSBpbiBtb250aCwgcGFkZGVkICgwMS0zMSkKKyAqICAgKiBgJ2Qn
YDogRGF5IGluIG1vbnRoICgxLTMxKQorICogICAqIGAnRUVFRSdgOiBEYXkgaW4gV2VlaywoU3Vu
ZGF5LVNhdHVyZGF5KQorICogICAqIGAnRUVFJ2A6IERheSBpbiBXZWVrLCAoU3VuLVNhdCkKKyAq
ICAgKiBgJ0hIJ2A6IEhvdXIgaW4gZGF5LCBwYWRkZWQgKDAwLTIzKQorICogICAqIGAnSCdgOiBI
b3VyIGluIGRheSAoMC0yMykKKyAqICAgKiBgJ2hoJ2A6IEhvdXIgaW4gQU0vUE0sIHBhZGRlZCAo
MDEtMTIpCisgKiAgICogYCdoJ2A6IEhvdXIgaW4gQU0vUE0sICgxLTEyKQorICogICAqIGAnbW0n
YDogTWludXRlIGluIGhvdXIsIHBhZGRlZCAoMDAtNTkpCisgKiAgICogYCdtJ2A6IE1pbnV0ZSBp
biBob3VyICgwLTU5KQorICogICAqIGAnc3MnYDogU2Vjb25kIGluIG1pbnV0ZSwgcGFkZGVkICgw
MC01OSkKKyAqICAgKiBgJ3MnYDogU2Vjb25kIGluIG1pbnV0ZSAoMC01OSkKKyAqICAgKiBgJ3Nz
cydgOiBNaWxsaXNlY29uZCBpbiBzZWNvbmQsIHBhZGRlZCAoMDAwLTk5OSkKKyAqICAgKiBgJ2En
YDogQU0vUE0gbWFya2VyCisgKiAgICogYCdaJ2A6IDQgZGlnaXQgKCtzaWduKSByZXByZXNlbnRh
dGlvbiBvZiB0aGUgdGltZXpvbmUgb2Zmc2V0ICgtMTIwMC0rMTIwMCkKKyAqICAgKiBgJ3d3J2A6
IFdlZWsgb2YgeWVhciwgcGFkZGVkICgwMC01MykuIFdlZWsgMDEgaXMgdGhlIHdlZWsgd2l0aCB0
aGUgZmlyc3QgVGh1cnNkYXkgb2YgdGhlIHllYXIKKyAqICAgKiBgJ3cnYDogV2VlayBvZiB5ZWFy
ICgwLTUzKS4gV2VlayAxIGlzIHRoZSB3ZWVrIHdpdGggdGhlIGZpcnN0IFRodXJzZGF5IG9mIHRo
ZSB5ZWFyCisgKiAgICogYCdHJ2AsIGAnR0cnYCwgYCdHR0cnYDogVGhlIGFiYnJldmlhdGVkIGZv
cm0gb2YgdGhlIGVyYSBzdHJpbmcgKGUuZy4gJ0FEJykKKyAqICAgKiBgJ0dHR0cnYDogVGhlIGxv
bmcgZm9ybSBvZiB0aGUgZXJhIHN0cmluZyAoZS5nLiAnQW5ubyBEb21pbmknKQorICoKKyAqICAg
YGZvcm1hdGAgc3RyaW5nIGNhbiBhbHNvIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHByZWRlZmlu
ZWQKKyAqICAge0BsaW5rIGd1aWRlL2kxOG4gbG9jYWxpemFibGUgZm9ybWF0c306CisgKgorICog
ICAqIGAnbWVkaXVtJ2A6IGVxdWl2YWxlbnQgdG8gYCdNTU0gZCwgeSBoOm1tOnNzIGEnYCBmb3Ig
ZW5fVVMgbG9jYWxlCisgKiAgICAgKGUuZy4gU2VwIDMsIDIwMTAgMTI6MDU6MDggUE0pCisgKiAg
ICogYCdzaG9ydCdgOiBlcXVpdmFsZW50IHRvIGAnTS9kL3l5IGg6bW0gYSdgIGZvciBlbl9VUyAg
bG9jYWxlIChlLmcuIDkvMy8xMCAxMjowNSBQTSkKKyAqICAgKiBgJ2Z1bGxEYXRlJ2A6IGVxdWl2
YWxlbnQgdG8gYCdFRUVFLCBNTU1NIGQsIHknYCBmb3IgZW5fVVMgIGxvY2FsZQorICogICAgIChl
LmcuIEZyaWRheSwgU2VwdGVtYmVyIDMsIDIwMTApCisgKiAgICogYCdsb25nRGF0ZSdgOiBlcXVp
dmFsZW50IHRvIGAnTU1NTSBkLCB5J2AgZm9yIGVuX1VTICBsb2NhbGUgKGUuZy4gU2VwdGVtYmVy
IDMsIDIwMTApCisgKiAgICogYCdtZWRpdW1EYXRlJ2A6IGVxdWl2YWxlbnQgdG8gYCdNTU0gZCwg
eSdgIGZvciBlbl9VUyAgbG9jYWxlIChlLmcuIFNlcCAzLCAyMDEwKQorICogICAqIGAnc2hvcnRE
YXRlJ2A6IGVxdWl2YWxlbnQgdG8gYCdNL2QveXknYCBmb3IgZW5fVVMgbG9jYWxlIChlLmcuIDkv
My8xMCkKKyAqICAgKiBgJ21lZGl1bVRpbWUnYDogZXF1aXZhbGVudCB0byBgJ2g6bW06c3MgYSdg
IGZvciBlbl9VUyBsb2NhbGUgKGUuZy4gMTI6MDU6MDggUE0pCisgKiAgICogYCdzaG9ydFRpbWUn
YDogZXF1aXZhbGVudCB0byBgJ2g6bW0gYSdgIGZvciBlbl9VUyBsb2NhbGUgKGUuZy4gMTI6MDUg
UE0pCisgKgorICogICBgZm9ybWF0YCBzdHJpbmcgY2FuIGNvbnRhaW4gbGl0ZXJhbCB2YWx1ZXMu
IFRoZXNlIG5lZWQgdG8gYmUgZXNjYXBlZCBieSBzdXJyb3VuZGluZyB3aXRoIHNpbmdsZSBxdW90
ZXMgKGUuZy4KKyAqICAgYCJoICdpbiB0aGUgbW9ybmluZyciYCkuIEluIG9yZGVyIHRvIG91dHB1
dCBhIHNpbmdsZSBxdW90ZSwgZXNjYXBlIGl0IC0gaS5lLiwgdHdvIHNpbmdsZSBxdW90ZXMgaW4g
YSBzZXF1ZW5jZQorICogICAoZS5nLiBgImggJ28nJ2Nsb2NrJyJgKS4KKyAqCisgKiBAcGFyYW0g
eyhEYXRlfG51bWJlcnxzdHJpbmcpfSBkYXRlIERhdGUgdG8gZm9ybWF0IGVpdGhlciBhcyBEYXRl
IG9iamVjdCwgbWlsbGlzZWNvbmRzIChzdHJpbmcgb3IKKyAqICAgIG51bWJlcikgb3IgdmFyaW91
cyBJU08gODYwMSBkYXRldGltZSBzdHJpbmcgZm9ybWF0cyAoZS5nLiB5eXl5LU1NLWRkVEhIOm1t
OnNzLnNzc1ogYW5kIGl0cworICogICAgc2hvcnRlciB2ZXJzaW9ucyBsaWtlIHl5eXktTU0tZGRU
SEg6bW1aLCB5eXl5LU1NLWRkIG9yIHl5eXlNTWRkVEhIbW1zc1opLiBJZiBubyB0aW1lem9uZSBp
cworICogICAgc3BlY2lmaWVkIGluIHRoZSBzdHJpbmcgaW5wdXQsIHRoZSB0aW1lIGlzIGNvbnNp
ZGVyZWQgdG8gYmUgaW4gdGhlIGxvY2FsIHRpbWV6b25lLgorICogQHBhcmFtIHtzdHJpbmc9fSBm
b3JtYXQgRm9ybWF0dGluZyBydWxlcyAoc2VlIERlc2NyaXB0aW9uKS4gSWYgbm90IHNwZWNpZmll
ZCwKKyAqICAgIGBtZWRpdW1EYXRlYCBpcyB1c2VkLgorICogQHBhcmFtIHtzdHJpbmc9fSB0aW1l
em9uZSBUaW1lem9uZSB0byBiZSB1c2VkIGZvciBmb3JtYXR0aW5nLiBJdCB1bmRlcnN0YW5kcyBV
VEMvR01UIGFuZCB0aGUKKyAqICAgIGNvbnRpbmVudGFsIFVTIHRpbWUgem9uZSBhYmJyZXZpYXRp
b25zLCBidXQgZm9yIGdlbmVyYWwgdXNlLCB1c2UgYSB0aW1lIHpvbmUgb2Zmc2V0LCBmb3IKKyAq
ICAgIGV4YW1wbGUsIGAnKzA0MzAnYCAoNCBob3VycywgMzAgbWludXRlcyBlYXN0IG9mIHRoZSBH
cmVlbndpY2ggbWVyaWRpYW4pCisgKiAgICBJZiBub3Qgc3BlY2lmaWVkLCB0aGUgdGltZXpvbmUg
b2YgdGhlIGJyb3dzZXIgd2lsbCBiZSB1c2VkLgorICogQHJldHVybnMge3N0cmluZ30gRm9ybWF0
dGVkIHN0cmluZyBvciB0aGUgaW5wdXQgaWYgaW5wdXQgaXMgbm90IHJlY29nbml6ZWQgYXMgZGF0
ZS9taWxsaXMuCisgKgorICogQGV4YW1wbGUKKyAgIDxleGFtcGxlPgorICAgICA8ZmlsZSBuYW1l
PSJpbmRleC5odG1sIj4KKyAgICAgICA8c3BhbiBuZy1ub24tYmluZGFibGU+e3sxMjg4MzIzNjIz
MDA2IHwgZGF0ZTonbWVkaXVtJ319PC9zcGFuPjoKKyAgICAgICAgICAgPHNwYW4+e3sxMjg4MzIz
NjIzMDA2IHwgZGF0ZTonbWVkaXVtJ319PC9zcGFuPjxicj4KKyAgICAgICA8c3BhbiBuZy1ub24t
YmluZGFibGU+e3sxMjg4MzIzNjIzMDA2IHwgZGF0ZToneXl5eS1NTS1kZCBISDptbTpzcyBaJ319
PC9zcGFuPjoKKyAgICAgICAgICA8c3Bhbj57ezEyODgzMjM2MjMwMDYgfCBkYXRlOid5eXl5LU1N
LWRkIEhIOm1tOnNzIFonfX08L3NwYW4+PGJyPgorICAgICAgIDxzcGFuIG5nLW5vbi1iaW5kYWJs
ZT57ezEyODgzMjM2MjMwMDYgfCBkYXRlOidNTS9kZC95eXl5IEAgaDptbWEnfX08L3NwYW4+Ogor
ICAgICAgICAgIDxzcGFuPnt7JzEyODgzMjM2MjMwMDYnIHwgZGF0ZTonTU0vZGQveXl5eSBAIGg6
bW1hJ319PC9zcGFuPjxicj4KKyAgICAgICA8c3BhbiBuZy1ub24tYmluZGFibGU+e3sxMjg4MzIz
NjIzMDA2IHwgZGF0ZToiTU0vZGQveXl5eSAnYXQnIGg6bW1hIn19PC9zcGFuPjoKKyAgICAgICAg
ICA8c3Bhbj57eycxMjg4MzIzNjIzMDA2JyB8IGRhdGU6Ik1NL2RkL3l5eXkgJ2F0JyBoOm1tYSJ9
fTwvc3Bhbj48YnI+CisgICAgIDwvZmlsZT4KKyAgICAgPGZpbGUgbmFtZT0icHJvdHJhY3Rvci5q
cyIgdHlwZT0icHJvdHJhY3RvciI+CisgICAgICAgaXQoJ3Nob3VsZCBmb3JtYXQgZGF0ZScsIGZ1
bmN0aW9uKCkgeworICAgICAgICAgZXhwZWN0KGVsZW1lbnQoYnkuYmluZGluZygiMTI4ODMyMzYy
MzAwNiB8IGRhdGU6J21lZGl1bSciKSkuZ2V0VGV4dCgpKS4KKyAgICAgICAgICAgIHRvTWF0Y2go
L09jdCAyXGQsIDIwMTAgXGR7MSwyfTpcZHsyfTpcZHsyfSAoQU18UE0pLyk7CisgICAgICAgICBl
eHBlY3QoZWxlbWVudChieS5iaW5kaW5nKCIxMjg4MzIzNjIzMDA2IHwgZGF0ZToneXl5eS1NTS1k
ZCBISDptbTpzcyBaJyIpKS5nZXRUZXh0KCkpLgorICAgICAgICAgICAgdG9NYXRjaCgvMjAxMFwt
MTBcLTJcZCBcZHsyfTpcZHsyfTpcZHsyfSAoXC18XCspP1xkezR9Lyk7CisgICAgICAgICBleHBl
Y3QoZWxlbWVudChieS5iaW5kaW5nKCInMTI4ODMyMzYyMzAwNicgfCBkYXRlOidNTS9kZC95eXl5
IEAgaDptbWEnIikpLmdldFRleHQoKSkuCisgICAgICAgICAgICB0b01hdGNoKC8xMFwvMlxkXC8y
MDEwIEAgXGR7MSwyfTpcZHsyfShBTXxQTSkvKTsKKyAgICAgICAgIGV4cGVjdChlbGVtZW50KGJ5
LmJpbmRpbmcoIicxMjg4MzIzNjIzMDA2JyB8IGRhdGU6XCJNTS9kZC95eXl5ICdhdCcgaDptbWFc
IiIpKS5nZXRUZXh0KCkpLgorICAgICAgICAgICAgdG9NYXRjaCgvMTBcLzJcZFwvMjAxMCBhdCBc
ZHsxLDJ9OlxkezJ9KEFNfFBNKS8pOworICAgICAgIH0pOworICAgICA8L2ZpbGU+CisgICA8L2V4
YW1wbGU+CisgKi8KK2RhdGVGaWx0ZXIuJGluamVjdCA9IFsnJGxvY2FsZSddOworZnVuY3Rpb24g
ZGF0ZUZpbHRlcigkbG9jYWxlKSB7CisKKworICB2YXIgUl9JU084NjAxX1NUUiA9IC9eKFxkezR9
KS0/KFxkXGQpLT8oXGRcZCkoPzpUKFxkXGQpKD86Oj8oXGRcZCkoPzo6PyhcZFxkKSg/OlwuKFxk
KykpPyk/KT8oWnwoWystXSkoXGRcZCk6PyhcZFxkKSk/KT8kLzsKKyAgICAgICAgICAgICAgICAg
ICAgIC8vIDEgICAgICAgIDIgICAgICAgMyAgICAgICAgIDQgICAgICAgICAgNSAgICAgICAgICA2
ICAgICAgICAgIDcgICAgICAgICAgOCAgOSAgICAgMTAgICAgICAxMQorICBmdW5jdGlvbiBqc29u
U3RyaW5nVG9EYXRlKHN0cmluZykgeworICAgIHZhciBtYXRjaDsKKyAgICBpZiAobWF0Y2ggPSBz
dHJpbmcubWF0Y2goUl9JU084NjAxX1NUUikpIHsKKyAgICAgIHZhciBkYXRlID0gbmV3IERhdGUo
MCksCisgICAgICAgICAgdHpIb3VyID0gMCwKKyAgICAgICAgICB0ek1pbiAgPSAwLAorICAgICAg
ICAgIGRhdGVTZXR0ZXIgPSBtYXRjaFs4XSA/IGRhdGUuc2V0VVRDRnVsbFllYXIgOiBkYXRlLnNl
dEZ1bGxZZWFyLAorICAgICAgICAgIHRpbWVTZXR0ZXIgPSBtYXRjaFs4XSA/IGRhdGUuc2V0VVRD
SG91cnMgOiBkYXRlLnNldEhvdXJzOworCisgICAgICBpZiAobWF0Y2hbOV0pIHsKKyAgICAgICAg
dHpIb3VyID0gdG9JbnQobWF0Y2hbOV0gKyBtYXRjaFsxMF0pOworICAgICAgICB0ek1pbiA9IHRv
SW50KG1hdGNoWzldICsgbWF0Y2hbMTFdKTsKKyAgICAgIH0KKyAgICAgIGRhdGVTZXR0ZXIuY2Fs
bChkYXRlLCB0b0ludChtYXRjaFsxXSksIHRvSW50KG1hdGNoWzJdKSAtIDEsIHRvSW50KG1hdGNo
WzNdKSk7CisgICAgICB2YXIgaCA9IHRvSW50KG1hdGNoWzRdIHx8IDApIC0gdHpIb3VyOworICAg
ICAgdmFyIG0gPSB0b0ludChtYXRjaFs1XSB8fCAwKSAtIHR6TWluOworICAgICAgdmFyIHMgPSB0
b0ludChtYXRjaFs2XSB8fCAwKTsKKyAgICAgIHZhciBtcyA9IE1hdGgucm91bmQocGFyc2VGbG9h
dCgnMC4nICsgKG1hdGNoWzddIHx8IDApKSAqIDEwMDApOworICAgICAgdGltZVNldHRlci5jYWxs
KGRhdGUsIGgsIG0sIHMsIG1zKTsKKyAgICAgIHJldHVybiBkYXRlOworICAgIH0KKyAgICByZXR1
cm4gc3RyaW5nOworICB9CisKKworICByZXR1cm4gZnVuY3Rpb24oZGF0ZSwgZm9ybWF0LCB0aW1l
em9uZSkgeworICAgIHZhciB0ZXh0ID0gJycsCisgICAgICAgIHBhcnRzID0gW10sCisgICAgICAg
IGZuLCBtYXRjaDsKKworICAgIGZvcm1hdCA9IGZvcm1hdCB8fCAnbWVkaXVtRGF0ZSc7CisgICAg
Zm9ybWF0ID0gJGxvY2FsZS5EQVRFVElNRV9GT1JNQVRTW2Zvcm1hdF0gfHwgZm9ybWF0OworICAg
IGlmIChpc1N0cmluZyhkYXRlKSkgeworICAgICAgZGF0ZSA9IE5VTUJFUl9TVFJJTkcudGVzdChk
YXRlKSA/IHRvSW50KGRhdGUpIDoganNvblN0cmluZ1RvRGF0ZShkYXRlKTsKKyAgICB9CisKKyAg
ICBpZiAoaXNOdW1iZXIoZGF0ZSkpIHsKKyAgICAgIGRhdGUgPSBuZXcgRGF0ZShkYXRlKTsKKyAg
ICB9CisKKyAgICBpZiAoIWlzRGF0ZShkYXRlKSB8fCAhaXNGaW5pdGUoZGF0ZS5nZXRUaW1lKCkp
KSB7CisgICAgICByZXR1cm4gZGF0ZTsKKyAgICB9CisKKyAgICB3aGlsZSAoZm9ybWF0KSB7Cisg
ICAgICBtYXRjaCA9IERBVEVfRk9STUFUU19TUExJVC5leGVjKGZvcm1hdCk7CisgICAgICBpZiAo
bWF0Y2gpIHsKKyAgICAgICAgcGFydHMgPSBjb25jYXQocGFydHMsIG1hdGNoLCAxKTsKKyAgICAg
ICAgZm9ybWF0ID0gcGFydHMucG9wKCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBwYXJ0cy5w
dXNoKGZvcm1hdCk7CisgICAgICAgIGZvcm1hdCA9IG51bGw7CisgICAgICB9CisgICAgfQorCisg
ICAgdmFyIGRhdGVUaW1lem9uZU9mZnNldCA9IGRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKTsKKyAg
ICBpZiAodGltZXpvbmUpIHsKKyAgICAgIGRhdGVUaW1lem9uZU9mZnNldCA9IHRpbWV6b25lVG9P
ZmZzZXQodGltZXpvbmUsIGRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKSk7CisgICAgICBkYXRlID0g
Y29udmVydFRpbWV6b25lVG9Mb2NhbChkYXRlLCB0aW1lem9uZSwgdHJ1ZSk7CisgICAgfQorICAg
IGZvckVhY2gocGFydHMsIGZ1bmN0aW9uKHZhbHVlKSB7CisgICAgICBmbiA9IERBVEVfRk9STUFU
U1t2YWx1ZV07CisgICAgICB0ZXh0ICs9IGZuID8gZm4oZGF0ZSwgJGxvY2FsZS5EQVRFVElNRV9G
T1JNQVRTLCBkYXRlVGltZXpvbmVPZmZzZXQpCisgICAgICAgICAgICAgICAgIDogdmFsdWUucmVw
bGFjZSgvKF4nfCckKS9nLCAnJykucmVwbGFjZSgvJycvZywgIiciKTsKKyAgICB9KTsKKworICAg
IHJldHVybiB0ZXh0OworICB9OworfQorCisKKy8qKgorICogQG5nZG9jIGZpbHRlcgorICogQG5h
bWUganNvbgorICogQGtpbmQgZnVuY3Rpb24KKyAqCisgKiBAZGVzY3JpcHRpb24KKyAqICAgQWxs
b3dzIHlvdSB0byBjb252ZXJ0IGEgSmF2YVNjcmlwdCBvYmplY3QgaW50byBKU09OIHN0cmluZy4K
KyAqCisgKiAgIFRoaXMgZmlsdGVyIGlzIG1vc3RseSB1c2VmdWwgZm9yIGRlYnVnZ2luZy4gV2hl
biB1c2luZyB0aGUgZG91YmxlIGN1cmx5IHt7dmFsdWV9fSBub3RhdGlvbgorICogICB0aGUgYmlu
ZGluZyBpcyBhdXRvbWF0aWNhbGx5IGNvbnZlcnRlZCB0byBKU09OLgorICoKKyAqIEBwYXJhbSB7
Kn0gb2JqZWN0IEFueSBKYXZhU2NyaXB0IG9iamVjdCAoaW5jbHVkaW5nIGFycmF5cyBhbmQgcHJp
bWl0aXZlIHR5cGVzKSB0byBmaWx0ZXIuCisgKiBAcGFyYW0ge251bWJlcj19IHNwYWNpbmcgVGhl
IG51bWJlciBvZiBzcGFjZXMgdG8gdXNlIHBlciBpbmRlbnRhdGlvbiwgZGVmYXVsdHMgdG8gMi4K
KyAqIEByZXR1cm5zIHtzdHJpbmd9IEpTT04gc3RyaW5nLgorICoKKyAqCisgKiBAZXhhbXBsZQor
ICAgPGV4YW1wbGU+CisgICAgIDxmaWxlIG5hbWU9ImluZGV4Lmh0bWwiPgorICAgICAgIDxwcmUg
aWQ9ImRlZmF1bHQtc3BhY2luZyI+e3sgeyduYW1lJzondmFsdWUnfSB8IGpzb24gfX08L3ByZT4K
KyAgICAgICA8cHJlIGlkPSJjdXN0b20tc3BhY2luZyI+e3sgeyduYW1lJzondmFsdWUnfSB8IGpz
b246NCB9fTwvcHJlPgorICAgICA8L2ZpbGU+CisgICAgIDxmaWxlIG5hbWU9InByb3RyYWN0b3Iu
anMiIHR5cGU9InByb3RyYWN0b3IiPgorICAgICAgIGl0KCdzaG91bGQganNvbmlmeSBmaWx0ZXJl
ZCBvYmplY3RzJywgZnVuY3Rpb24oKSB7CisgICAgICAgICBleHBlY3QoZWxlbWVudChieS5pZCgn
ZGVmYXVsdC1zcGFjaW5nJykpLmdldFRleHQoKSkudG9NYXRjaCgvXHtcbiAgIm5hbWUiOiA/InZh
bHVlIlxufS8pOworICAgICAgICAgZXhwZWN0KGVsZW1lbnQoYnkuaWQoJ2N1c3RvbS1zcGFjaW5n
JykpLmdldFRleHQoKSkudG9NYXRjaCgvXHtcbiAgICAibmFtZSI6ID8idmFsdWUiXG59Lyk7Cisg
ICAgICAgfSk7CisgICAgIDwvZmlsZT4KKyAgIDwvZXhhbXBsZT4KKyAqCisgKi8KK2Z1bmN0aW9u
IGpzb25GaWx0ZXIoKSB7CisgIHJldHVybiBmdW5jdGlvbihvYmplY3QsIHNwYWNpbmcpIHsKKyAg
ICBpZiAoaXNVbmRlZmluZWQoc3BhY2luZykpIHsKKyAgICAgICAgc3BhY2luZyA9IDI7CisgICAg
fQorICAgIHJldHVybiB0b0pzb24ob2JqZWN0LCBzcGFjaW5nKTsKKyAgfTsKK30KKworCisvKioK
KyAqIEBuZ2RvYyBmaWx0ZXIKKyAqIEBuYW1lIGxvd2VyY2FzZQorICogQGtpbmQgZnVuY3Rpb24K
KyAqIEBkZXNjcmlwdGlvbgorICogQ29udmVydHMgc3RyaW5nIHRvIGxvd2VyY2FzZS4KKyAqIEBz
ZWUgYW5ndWxhci5sb3dlcmNhc2UKKyAqLwordmFyIGxvd2VyY2FzZUZpbHRlciA9IHZhbHVlRm4o
bG93ZXJjYXNlKTsKKworCisvKioKKyAqIEBuZ2RvYyBmaWx0ZXIKKyAqIEBuYW1lIHVwcGVyY2Fz
ZQorICogQGtpbmQgZnVuY3Rpb24KKyAqIEBkZXNjcmlwdGlvbgorICogQ29udmVydHMgc3RyaW5n
IHRvIHVwcGVyY2FzZS4KKyAqIEBzZWUgYW5ndWxhci51cHBlcmNhc2UKKyAqLwordmFyIHVwcGVy
Y2FzZUZpbHRlciA9IHZhbHVlRm4odXBwZXJjYXNlKTsKKworLyoqCisgKiBAbmdkb2MgZmlsdGVy
CisgKiBAbmFtZSBsaW1pdFRvCisgKiBAa2luZCBmdW5jdGlvbgorICoKKyAqIEBkZXNjcmlwdGlv
bgorICogQ3JlYXRlcyBhIG5ldyBhcnJheSBvciBzdHJpbmcgY29udGFpbmluZyBvbmx5IGEgc3Bl
Y2lmaWVkIG51bWJlciBvZiBlbGVtZW50cy4gVGhlIGVsZW1lbnRzCisgKiBhcmUgdGFrZW4gZnJv
bSBlaXRoZXIgdGhlIGJlZ2lubmluZyBvciB0aGUgZW5kIG9mIHRoZSBzb3VyY2UgYXJyYXksIHN0
cmluZyBvciBudW1iZXIsIGFzIHNwZWNpZmllZCBieQorICogdGhlIHZhbHVlIGFuZCBzaWduIChw
b3NpdGl2ZSBvciBuZWdhdGl2ZSkgb2YgYGxpbWl0YC4gSWYgYSBudW1iZXIgaXMgdXNlZCBhcyBp
bnB1dCwgaXQgaXMKKyAqIGNvbnZlcnRlZCB0byBhIHN0cmluZy4KKyAqCisgKiBAcGFyYW0ge0Fy
cmF5fHN0cmluZ3xudW1iZXJ9IGlucHV0IFNvdXJjZSBhcnJheSwgc3RyaW5nIG9yIG51bWJlciB0
byBiZSBsaW1pdGVkLgorICogQHBhcmFtIHtzdHJpbmd8bnVtYmVyfSBsaW1pdCBUaGUgbGVuZ3Ro
IG9mIHRoZSByZXR1cm5lZCBhcnJheSBvciBzdHJpbmcuIElmIHRoZSBgbGltaXRgIG51bWJlcgor
ICogICAgIGlzIHBvc2l0aXZlLCBgbGltaXRgIG51bWJlciBvZiBpdGVtcyBmcm9tIHRoZSBiZWdp
bm5pbmcgb2YgdGhlIHNvdXJjZSBhcnJheS9zdHJpbmcgYXJlIGNvcGllZC4KKyAqICAgICBJZiB0
aGUgbnVtYmVyIGlzIG5lZ2F0aXZlLCBgbGltaXRgIG51bWJlciAgb2YgaXRlbXMgZnJvbSB0aGUg
ZW5kIG9mIHRoZSBzb3VyY2UgYXJyYXkvc3RyaW5nCisgKiAgICAgYXJlIGNvcGllZC4gVGhlIGBs
aW1pdGAgd2lsbCBiZSB0cmltbWVkIGlmIGl0IGV4Y2VlZHMgYGFycmF5Lmxlbmd0aGAuIElmIGBs
aW1pdGAgaXMgdW5kZWZpbmVkLAorICogICAgIHRoZSBpbnB1dCB3aWxsIGJlIHJldHVybmVkIHVu
Y2hhbmdlZC4KKyAqIEBwYXJhbSB7KHN0cmluZ3xudW1iZXIpPX0gYmVnaW4gSW5kZXggYXQgd2hp
Y2ggdG8gYmVnaW4gbGltaXRhdGlvbi4gQXMgYSBuZWdhdGl2ZSBpbmRleCwgYGJlZ2luYAorICog
ICAgIGluZGljYXRlcyBhbiBvZmZzZXQgZnJvbSB0aGUgZW5kIG9mIGBpbnB1dGAuIERlZmF1bHRz
IHRvIGAwYC4KKyAqIEByZXR1cm5zIHtBcnJheXxzdHJpbmd9IEEgbmV3IHN1Yi1hcnJheSBvciBz
dWJzdHJpbmcgb2YgbGVuZ3RoIGBsaW1pdGAgb3IgbGVzcyBpZiBpbnB1dCBhcnJheQorICogICAg
IGhhZCBsZXNzIHRoYW4gYGxpbWl0YCBlbGVtZW50cy4KKyAqCisgKiBAZXhhbXBsZQorICAgPGV4
YW1wbGUgbW9kdWxlPSJsaW1pdFRvRXhhbXBsZSI+CisgICAgIDxmaWxlIG5hbWU9ImluZGV4Lmh0
bWwiPgorICAgICAgIDxzY3JpcHQ+CisgICAgICAgICBhbmd1bGFyLm1vZHVsZSgnbGltaXRUb0V4
YW1wbGUnLCBbXSkKKyAgICAgICAgICAgLmNvbnRyb2xsZXIoJ0V4YW1wbGVDb250cm9sbGVyJywg
Wyckc2NvcGUnLCBmdW5jdGlvbigkc2NvcGUpIHsKKyAgICAgICAgICAgICAkc2NvcGUubnVtYmVy
cyA9IFsxLDIsMyw0LDUsNiw3LDgsOV07CisgICAgICAgICAgICAgJHNjb3BlLmxldHRlcnMgPSAi
YWJjZGVmZ2hpIjsKKyAgICAgICAgICAgICAkc2NvcGUubG9uZ051bWJlciA9IDIzNDU0MzIzNDI7
CisgICAgICAgICAgICAgJHNjb3BlLm51bUxpbWl0ID0gMzsKKyAgICAgICAgICAgICAkc2NvcGUu
bGV0dGVyTGltaXQgPSAzOworICAgICAgICAgICAgICRzY29wZS5sb25nTnVtYmVyTGltaXQgPSAz
OworICAgICAgICAgICB9XSk7CisgICAgICAgPC9zY3JpcHQ+CisgICAgICAgPGRpdiBuZy1jb250
cm9sbGVyPSJFeGFtcGxlQ29udHJvbGxlciI+CisgICAgICAgICA8bGFiZWw+CisgICAgICAgICAg
ICBMaW1pdCB7e251bWJlcnN9fSB0bzoKKyAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJudW1iZXIi
IHN0ZXA9IjEiIG5nLW1vZGVsPSJudW1MaW1pdCI+CisgICAgICAgICA8L2xhYmVsPgorICAgICAg
ICAgPHA+T3V0cHV0IG51bWJlcnM6IHt7IG51bWJlcnMgfCBsaW1pdFRvOm51bUxpbWl0IH19PC9w
PgorICAgICAgICAgPGxhYmVsPgorICAgICAgICAgICAgTGltaXQge3tsZXR0ZXJzfX0gdG86Cisg
ICAgICAgICAgICA8aW5wdXQgdHlwZT0ibnVtYmVyIiBzdGVwPSIxIiBuZy1tb2RlbD0ibGV0dGVy
TGltaXQiPgorICAgICAgICAgPC9sYWJlbD4KKyAgICAgICAgIDxwPk91dHB1dCBsZXR0ZXJzOiB7
eyBsZXR0ZXJzIHwgbGltaXRUbzpsZXR0ZXJMaW1pdCB9fTwvcD4KKyAgICAgICAgIDxsYWJlbD4K
KyAgICAgICAgICAgIExpbWl0IHt7bG9uZ051bWJlcn19IHRvOgorICAgICAgICAgICAgPGlucHV0
IHR5cGU9Im51bWJlciIgc3RlcD0iMSIgbmctbW9kZWw9ImxvbmdOdW1iZXJMaW1pdCI+CisgICAg
ICAgICA8L2xhYmVsPgorICAgICAgICAgPHA+T3V0cHV0IGxvbmcgbnVtYmVyOiB7eyBsb25nTnVt
YmVyIHwgbGltaXRUbzpsb25nTnVtYmVyTGltaXQgfX08L3A+CisgICAgICAgPC9kaXY+CisgICAg
IDwvZmlsZT4KKyAgICAgPGZpbGUgbmFtZT0icHJvdHJhY3Rvci5qcyIgdHlwZT0icHJvdHJhY3Rv
ciI+CisgICAgICAgdmFyIG51bUxpbWl0SW5wdXQgPSBlbGVtZW50KGJ5Lm1vZGVsKCdudW1MaW1p
dCcpKTsKKyAgICAgICB2YXIgbGV0dGVyTGltaXRJbnB1dCA9IGVsZW1lbnQoYnkubW9kZWwoJ2xl
dHRlckxpbWl0JykpOworICAgICAgIHZhciBsb25nTnVtYmVyTGltaXRJbnB1dCA9IGVsZW1lbnQo
YnkubW9kZWwoJ2xvbmdOdW1iZXJMaW1pdCcpKTsKKyAgICAgICB2YXIgbGltaXRlZE51bWJlcnMg
PSBlbGVtZW50KGJ5LmJpbmRpbmcoJ251bWJlcnMgfCBsaW1pdFRvOm51bUxpbWl0JykpOworICAg
ICAgIHZhciBsaW1pdGVkTGV0dGVycyA9IGVsZW1lbnQoYnkuYmluZGluZygnbGV0dGVycyB8IGxp
bWl0VG86bGV0dGVyTGltaXQnKSk7CisgICAgICAgdmFyIGxpbWl0ZWRMb25nTnVtYmVyID0gZWxl
bWVudChieS5iaW5kaW5nKCdsb25nTnVtYmVyIHwgbGltaXRUbzpsb25nTnVtYmVyTGltaXQnKSk7
CisKKyAgICAgICBpdCgnc2hvdWxkIGxpbWl0IHRoZSBudW1iZXIgYXJyYXkgdG8gZmlyc3QgdGhy
ZWUgaXRlbXMnLCBmdW5jdGlvbigpIHsKKyAgICAgICAgIGV4cGVjdChudW1MaW1pdElucHV0Lmdl
dEF0dHJpYnV0ZSgndmFsdWUnKSkudG9CZSgnMycpOworICAgICAgICAgZXhwZWN0KGxldHRlckxp
bWl0SW5wdXQuZ2V0QXR0cmlidXRlKCd2YWx1ZScpKS50b0JlKCczJyk7CisgICAgICAgICBleHBl
Y3QobG9uZ051bWJlckxpbWl0SW5wdXQuZ2V0QXR0cmlidXRlKCd2YWx1ZScpKS50b0JlKCczJyk7
CisgICAgICAgICBleHBlY3QobGltaXRlZE51bWJlcnMuZ2V0VGV4dCgpKS50b0VxdWFsKCdPdXRw
dXQgbnVtYmVyczogWzEsMiwzXScpOworICAgICAgICAgZXhwZWN0KGxpbWl0ZWRMZXR0ZXJzLmdl
dFRleHQoKSkudG9FcXVhbCgnT3V0cHV0IGxldHRlcnM6IGFiYycpOworICAgICAgICAgZXhwZWN0
KGxpbWl0ZWRMb25nTnVtYmVyLmdldFRleHQoKSkudG9FcXVhbCgnT3V0cHV0IGxvbmcgbnVtYmVy
OiAyMzQnKTsKKyAgICAgICB9KTsKKworICAgICAgIC8vIFRoZXJlIGlzIGEgYnVnIGluIHNhZmFy
aSBhbmQgcHJvdHJhY3RvciB0aGF0IGRvZXNuJ3QgbGlrZSB0aGUgbWludXMga2V5CisgICAgICAg
Ly8gaXQoJ3Nob3VsZCB1cGRhdGUgdGhlIG91dHB1dCB3aGVuIC0zIGlzIGVudGVyZWQnLCBmdW5j
dGlvbigpIHsKKyAgICAgICAvLyAgIG51bUxpbWl0SW5wdXQuY2xlYXIoKTsKKyAgICAgICAvLyAg
IG51bUxpbWl0SW5wdXQuc2VuZEtleXMoJy0zJyk7CisgICAgICAgLy8gICBsZXR0ZXJMaW1pdElu
cHV0LmNsZWFyKCk7CisgICAgICAgLy8gICBsZXR0ZXJMaW1pdElucHV0LnNlbmRLZXlzKCctMycp
OworICAgICAgIC8vICAgbG9uZ051bWJlckxpbWl0SW5wdXQuY2xlYXIoKTsKKyAgICAgICAvLyAg
IGxvbmdOdW1iZXJMaW1pdElucHV0LnNlbmRLZXlzKCctMycpOworICAgICAgIC8vICAgZXhwZWN0
KGxpbWl0ZWROdW1iZXJzLmdldFRleHQoKSkudG9FcXVhbCgnT3V0cHV0IG51bWJlcnM6IFs3LDgs
OV0nKTsKKyAgICAgICAvLyAgIGV4cGVjdChsaW1pdGVkTGV0dGVycy5nZXRUZXh0KCkpLnRvRXF1
YWwoJ091dHB1dCBsZXR0ZXJzOiBnaGknKTsKKyAgICAgICAvLyAgIGV4cGVjdChsaW1pdGVkTG9u
Z051bWJlci5nZXRUZXh0KCkpLnRvRXF1YWwoJ091dHB1dCBsb25nIG51bWJlcjogMzQyJyk7Cisg
ICAgICAgLy8gfSk7CisKKyAgICAgICBpdCgnc2hvdWxkIG5vdCBleGNlZWQgdGhlIG1heGltdW0g
c2l6ZSBvZiBpbnB1dCBhcnJheScsIGZ1bmN0aW9uKCkgeworICAgICAgICAgbnVtTGltaXRJbnB1
dC5jbGVhcigpOworICAgICAgICAgbnVtTGltaXRJbnB1dC5zZW5kS2V5cygnMTAwJyk7CisgICAg
ICAgICBsZXR0ZXJMaW1pdElucHV0LmNsZWFyKCk7CisgICAgICAgICBsZXR0ZXJMaW1pdElucHV0
LnNlbmRLZXlzKCcxMDAnKTsKKyAgICAgICAgIGxvbmdOdW1iZXJMaW1pdElucHV0LmNsZWFyKCk7
CisgICAgICAgICBsb25nTnVtYmVyTGltaXRJbnB1dC5zZW5kS2V5cygnMTAwJyk7CisgICAgICAg
ICBleHBlY3QobGltaXRlZE51bWJlcnMuZ2V0VGV4dCgpKS50b0VxdWFsKCdPdXRwdXQgbnVtYmVy
czogWzEsMiwzLDQsNSw2LDcsOCw5XScpOworICAgICAgICAgZXhwZWN0KGxpbWl0ZWRMZXR0ZXJz
LmdldFRleHQoKSkudG9FcXVhbCgnT3V0cHV0IGxldHRlcnM6IGFiY2RlZmdoaScpOworICAgICAg
ICAgZXhwZWN0KGxpbWl0ZWRMb25nTnVtYmVyLmdldFRleHQoKSkudG9FcXVhbCgnT3V0cHV0IGxv
bmcgbnVtYmVyOiAyMzQ1NDMyMzQyJyk7CisgICAgICAgfSk7CisgICAgIDwvZmlsZT4KKyAgIDwv
ZXhhbXBsZT4KKyovCitmdW5jdGlvbiBsaW1pdFRvRmlsdGVyKCkgeworICByZXR1cm4gZnVuY3Rp
b24oaW5wdXQsIGxpbWl0LCBiZWdpbikgeworICAgIGlmIChNYXRoLmFicyhOdW1iZXIobGltaXQp
KSA9PT0gSW5maW5pdHkpIHsKKyAgICAgIGxpbWl0ID0gTnVtYmVyKGxpbWl0KTsKKyAgICB9IGVs
c2UgeworICAgICAgbGltaXQgPSB0b0ludChsaW1pdCk7CisgICAgfQorICAgIGlmIChpc05hTihs
aW1pdCkpIHJldHVybiBpbnB1dDsKKworICAgIGlmIChpc051bWJlcihpbnB1dCkpIGlucHV0ID0g
aW5wdXQudG9TdHJpbmcoKTsKKyAgICBpZiAoIWlzQXJyYXkoaW5wdXQpICYmICFpc1N0cmluZyhp
bnB1dCkpIHJldHVybiBpbnB1dDsKKworICAgIGJlZ2luID0gKCFiZWdpbiB8fCBpc05hTihiZWdp
bikpID8gMCA6IHRvSW50KGJlZ2luKTsKKyAgICBiZWdpbiA9IChiZWdpbiA8IDAgJiYgYmVnaW4g
Pj0gLWlucHV0Lmxlbmd0aCkgPyBpbnB1dC5sZW5ndGggKyBiZWdpbiA6IGJlZ2luOworCisgICAg
aWYgKGxpbWl0ID49IDApIHsKKyAgICAgIHJldHVybiBpbnB1dC5zbGljZShiZWdpbiwgYmVnaW4g
KyBsaW1pdCk7CisgICAgfSBlbHNlIHsKKyAgICAgIGlmIChiZWdpbiA9PT0gMCkgeworICAgICAg
ICByZXR1cm4gaW5wdXQuc2xpY2UobGltaXQsIGlucHV0Lmxlbmd0aCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICByZXR1cm4gaW5wdXQuc2xpY2UoTWF0aC5tYXgoMCwgYmVnaW4gKyBsaW1pdCks
IGJlZ2luKTsKKyAgICAgIH0KKyAgICB9CisgIH07Cit9CisKKy8qKgorICogQG5nZG9jIGZpbHRl
cgorICogQG5hbWUgb3JkZXJCeQorICogQGtpbmQgZnVuY3Rpb24KKyAqCisgKiBAZGVzY3JpcHRp
b24KKyAqIE9yZGVycyBhIHNwZWNpZmllZCBgYXJyYXlgIGJ5IHRoZSBgZXhwcmVzc2lvbmAgcHJl
ZGljYXRlLiBJdCBpcyBvcmRlcmVkIGFscGhhYmV0aWNhbGx5CisgKiBmb3Igc3RyaW5ncyBhbmQg
bnVtZXJpY2FsbHkgZm9yIG51bWJlcnMuIE5vdGU6IGlmIHlvdSBub3RpY2UgbnVtYmVycyBhcmUg
bm90IGJlaW5nIHNvcnRlZAorICogYXMgZXhwZWN0ZWQsIG1ha2Ugc3VyZSB0aGV5IGFyZSBhY3R1
YWxseSBiZWluZyBzYXZlZCBhcyBudW1iZXJzIGFuZCBub3Qgc3RyaW5ncy4KKyAqCisgKiBAcGFy
YW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gc29ydC4KKyAqIEBwYXJhbSB7ZnVuY3Rpb24o
Kil8c3RyaW5nfEFycmF5LjwoZnVuY3Rpb24oKil8c3RyaW5nKT49fSBleHByZXNzaW9uIEEgcHJl
ZGljYXRlIHRvIGJlCisgKiAgICB1c2VkIGJ5IHRoZSBjb21wYXJhdG9yIHRvIGRldGVybWluZSB0
aGUgb3JkZXIgb2YgZWxlbWVudHMuCisgKgorICogICAgQ2FuIGJlIG9uZSBvZjoKKyAqCisgKiAg
ICAtIGBmdW5jdGlvbmA6IEdldHRlciBmdW5jdGlvbi4gVGhlIHJlc3VsdCBvZiB0aGlzIGZ1bmN0
aW9uIHdpbGwgYmUgc29ydGVkIHVzaW5nIHRoZQorICogICAgICBgPGAsIGA9PT1gLCBgPmAgb3Bl
cmF0b3IuCisgKiAgICAtIGBzdHJpbmdgOiBBbiBBbmd1bGFyIGV4cHJlc3Npb24uIFRoZSByZXN1
bHQgb2YgdGhpcyBleHByZXNzaW9uIGlzIHVzZWQgdG8gY29tcGFyZSBlbGVtZW50cworICogICAg
ICAoZm9yIGV4YW1wbGUgYG5hbWVgIHRvIHNvcnQgYnkgYSBwcm9wZXJ0eSBjYWxsZWQgYG5hbWVg
IG9yIGBuYW1lLnN1YnN0cigwLCAzKWAgdG8gc29ydCBieQorICogICAgICAzIGZpcnN0IGNoYXJh
Y3RlcnMgb2YgYSBwcm9wZXJ0eSBjYWxsZWQgYG5hbWVgKS4gVGhlIHJlc3VsdCBvZiBhIGNvbnN0
YW50IGV4cHJlc3Npb24KKyAqICAgICAgaXMgaW50ZXJwcmV0ZWQgYXMgYSBwcm9wZXJ0eSBuYW1l
IHRvIGJlIHVzZWQgaW4gY29tcGFyaXNvbnMgKGZvciBleGFtcGxlIGAic3BlY2lhbCBuYW1lImAK
KyAqICAgICAgdG8gc29ydCBvYmplY3QgYnkgdGhlIHZhbHVlIG9mIHRoZWlyIGBzcGVjaWFsIG5h
bWVgIHByb3BlcnR5KS4gQW4gZXhwcmVzc2lvbiBjYW4gYmUKKyAqICAgICAgb3B0aW9uYWxseSBw
cmVmaXhlZCB3aXRoIGArYCBvciBgLWAgdG8gY29udHJvbCBhc2NlbmRpbmcgb3IgZGVzY2VuZGlu
ZyBzb3J0IG9yZGVyCisgKiAgICAgIChmb3IgZXhhbXBsZSwgYCtuYW1lYCBvciBgLW5hbWVgKS4g
SWYgbm8gcHJvcGVydHkgaXMgcHJvdmlkZWQsIChlLmcuIGAnKydgKSB0aGVuIHRoZSBhcnJheQor
ICogICAgICBlbGVtZW50IGl0c2VsZiBpcyB1c2VkIHRvIGNvbXBhcmUgd2hlcmUgc29ydGluZy4K
KyAqICAgIC0gYEFycmF5YDogQW4gYXJyYXkgb2YgZnVuY3Rpb24gb3Igc3RyaW5nIHByZWRpY2F0
ZXMuIFRoZSBmaXJzdCBwcmVkaWNhdGUgaW4gdGhlIGFycmF5CisgKiAgICAgIGlzIHVzZWQgZm9y
IHNvcnRpbmcsIGJ1dCB3aGVuIHR3byBpdGVtcyBhcmUgZXF1aXZhbGVudCwgdGhlIG5leHQgcHJl
ZGljYXRlIGlzIHVzZWQuCisgKgorICogICAgSWYgdGhlIHByZWRpY2F0ZSBpcyBtaXNzaW5nIG9y
IGVtcHR5IHRoZW4gaXQgZGVmYXVsdHMgdG8gYCcrJ2AuCisgKgorICogQHBhcmFtIHtib29sZWFu
PX0gcmV2ZXJzZSBSZXZlcnNlIHRoZSBvcmRlciBvZiB0aGUgYXJyYXkuCisgKiBAcmV0dXJucyB7
QXJyYXl9IFNvcnRlZCBjb3B5IG9mIHRoZSBzb3VyY2UgYXJyYXkuCisgKgorICoKKyAqIEBleGFt
cGxlCisgKiBUaGUgZXhhbXBsZSBiZWxvdyBkZW1vbnN0cmF0ZXMgYSBzaW1wbGUgbmdSZXBlYXQs
IHdoZXJlIHRoZSBkYXRhIGlzIHNvcnRlZAorICogYnkgYWdlIGluIGRlc2NlbmRpbmcgb3JkZXIg
KHByZWRpY2F0ZSBpcyBzZXQgdG8gYCctYWdlJ2ApLgorICogYHJldmVyc2VgIGlzIG5vdCBzZXQs
IHdoaWNoIG1lYW5zIGl0IGRlZmF1bHRzIHRvIGBmYWxzZWAuCisgICA8ZXhhbXBsZSBtb2R1bGU9
Im9yZGVyQnlFeGFtcGxlIj4KKyAgICAgPGZpbGUgbmFtZT0iaW5kZXguaHRtbCI+CisgICAgICAg
PHNjcmlwdD4KKyAgICAgICAgIGFuZ3VsYXIubW9kdWxlKCdvcmRlckJ5RXhhbXBsZScsIFtdKQor
ICAgICAgICAgICAuY29udHJvbGxlcignRXhhbXBsZUNvbnRyb2xsZXInLCBbJyRzY29wZScsIGZ1
bmN0aW9uKCRzY29wZSkgeworICAgICAgICAgICAgICRzY29wZS5mcmllbmRzID0KKyAgICAgICAg
ICAgICAgICAgW3tuYW1lOidKb2huJywgcGhvbmU6JzU1NS0xMjEyJywgYWdlOjEwfSwKKyAgICAg
ICAgICAgICAgICAgIHtuYW1lOidNYXJ5JywgcGhvbmU6JzU1NS05ODc2JywgYWdlOjE5fSwKKyAg
ICAgICAgICAgICAgICAgIHtuYW1lOidNaWtlJywgcGhvbmU6JzU1NS00MzIxJywgYWdlOjIxfSwK
KyAgICAgICAgICAgICAgICAgIHtuYW1lOidBZGFtJywgcGhvbmU6JzU1NS01Njc4JywgYWdlOjM1
fSwKKyAgICAgICAgICAgICAgICAgIHtuYW1lOidKdWxpZScsIHBob25lOic1NTUtODc2NScsIGFn
ZToyOX1dOworICAgICAgICAgICB9XSk7CisgICAgICAgPC9zY3JpcHQ+CisgICAgICAgPGRpdiBu
Zy1jb250cm9sbGVyPSJFeGFtcGxlQ29udHJvbGxlciI+CisgICAgICAgICA8dGFibGUgY2xhc3M9
ImZyaWVuZCI+CisgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICA8dGg+TmFtZTwvdGg+Cisg
ICAgICAgICAgICAgPHRoPlBob25lIE51bWJlcjwvdGg+CisgICAgICAgICAgICAgPHRoPkFnZTwv
dGg+CisgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgIDx0ciBuZy1yZXBlYXQ9ImZyaWVuZCBp
biBmcmllbmRzIHwgb3JkZXJCeTonLWFnZSciPgorICAgICAgICAgICAgIDx0ZD57e2ZyaWVuZC5u
YW1lfX08L3RkPgorICAgICAgICAgICAgIDx0ZD57e2ZyaWVuZC5waG9uZX19PC90ZD4KKyAgICAg
ICAgICAgICA8dGQ+e3tmcmllbmQuYWdlfX08L3RkPgorICAgICAgICAgICA8L3RyPgorICAgICAg
ICAgPC90YWJsZT4KKyAgICAgICA8L2Rpdj4KKyAgICAgPC9maWxlPgorICAgPC9leGFtcGxlPgor
ICoKKyAqIFRoZSBwcmVkaWNhdGUgYW5kIHJldmVyc2UgcGFyYW1ldGVycyBjYW4gYmUgY29udHJv
bGxlZCBkeW5hbWljYWxseSB0aHJvdWdoIHNjb3BlIHByb3BlcnRpZXMsCisgKiBhcyBzaG93biBp
biB0aGUgbmV4dCBleGFtcGxlLgorICogQGV4YW1wbGUKKyAgIDxleGFtcGxlIG1vZHVsZT0ib3Jk
ZXJCeUV4YW1wbGUiPgorICAgICA8ZmlsZSBuYW1lPSJpbmRleC5odG1sIj4KKyAgICAgICA8c2Ny
aXB0PgorICAgICAgICAgYW5ndWxhci5tb2R1bGUoJ29yZGVyQnlFeGFtcGxlJywgW10pCisgICAg
ICAgICAgIC5jb250cm9sbGVyKCdFeGFtcGxlQ29udHJvbGxlcicsIFsnJHNjb3BlJywgZnVuY3Rp
b24oJHNjb3BlKSB7CisgICAgICAgICAgICAgJHNjb3BlLmZyaWVuZHMgPQorICAgICAgICAgICAg
ICAgICBbe25hbWU6J0pvaG4nLCBwaG9uZTonNTU1LTEyMTInLCBhZ2U6MTB9LAorICAgICAgICAg
ICAgICAgICAge25hbWU6J01hcnknLCBwaG9uZTonNTU1LTk4NzYnLCBhZ2U6MTl9LAorICAgICAg
ICAgICAgICAgICAge25hbWU6J01pa2UnLCBwaG9uZTonNTU1LTQzMjEnLCBhZ2U6MjF9LAorICAg
ICAgICAgICAgICAgICAge25hbWU6J0FkYW0nLCBwaG9uZTonNTU1LTU2NzgnLCBhZ2U6MzV9LAor
ICAgICAgICAgICAgICAgICAge25hbWU6J0p1bGllJywgcGhvbmU6JzU1NS04NzY1JywgYWdlOjI5
fV07CisgICAgICAgICAgICAgJHNjb3BlLnByZWRpY2F0ZSA9ICdhZ2UnOworICAgICAgICAgICAg
ICRzY29wZS5yZXZlcnNlID0gdHJ1ZTsKKyAgICAgICAgICAgICAkc2NvcGUub3JkZXIgPSBmdW5j
dGlvbihwcmVkaWNhdGUpIHsKKyAgICAgICAgICAgICAgICRzY29wZS5yZXZlcnNlID0gKCRzY29w
ZS5wcmVkaWNhdGUgPT09IHByZWRpY2F0ZSkgPyAhJHNjb3BlLnJldmVyc2UgOiBmYWxzZTsKKyAg
ICAgICAgICAgICAgICRzY29wZS5wcmVkaWNhdGUgPSBwcmVkaWNhdGU7CisgICAgICAgICAgICAg
fTsKKyAgICAgICAgICAgfV0pOworICAgICAgIDwvc2NyaXB0PgorICAgICAgIDxzdHlsZSB0eXBl
PSJ0ZXh0L2NzcyI+CisgICAgICAgICAuc29ydG9yZGVyOmFmdGVyIHsKKyAgICAgICAgICAgY29u
dGVudDogJ1wyNWIyJzsKKyAgICAgICAgIH0KKyAgICAgICAgIC5zb3J0b3JkZXIucmV2ZXJzZTph
ZnRlciB7CisgICAgICAgICAgIGNvbnRlbnQ6ICdcMjViYyc7CisgICAgICAgICB9CisgICAgICAg
PC9zdHlsZT4KKyAgICAgICA8ZGl2IG5nLWNvbnRyb2xsZXI9IkV4YW1wbGVDb250cm9sbGVyIj4K
KyAgICAgICAgIDxwcmU+U29ydGluZyBwcmVkaWNhdGUgPSB7e3ByZWRpY2F0ZX19OyByZXZlcnNl
ID0ge3tyZXZlcnNlfX08L3ByZT4KKyAgICAgICAgIDxoci8+CisgICAgICAgICBbIDxhIGhyZWY9
IiIgbmctY2xpY2s9InByZWRpY2F0ZT0nJyI+dW5zb3J0ZWQ8L2E+IF0KKyAgICAgICAgIDx0YWJs
ZSBjbGFzcz0iZnJpZW5kIj4KKyAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgIDx0aD4KKyAg
ICAgICAgICAgICAgIDxhIGhyZWY9IiIgbmctY2xpY2s9Im9yZGVyKCduYW1lJykiPk5hbWU8L2E+
CisgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic29ydG9yZGVyIiBuZy1zaG93PSJwcmVkaWNh
dGUgPT09ICduYW1lJyIgbmctY2xhc3M9IntyZXZlcnNlOnJldmVyc2V9Ij48L3NwYW4+CisgICAg
ICAgICAgICAgPC90aD4KKyAgICAgICAgICAgICA8dGg+CisgICAgICAgICAgICAgICA8YSBocmVm
PSIiIG5nLWNsaWNrPSJvcmRlcigncGhvbmUnKSI+UGhvbmUgTnVtYmVyPC9hPgorICAgICAgICAg
ICAgICAgPHNwYW4gY2xhc3M9InNvcnRvcmRlciIgbmctc2hvdz0icHJlZGljYXRlID09PSAncGhv
bmUnIiBuZy1jbGFzcz0ie3JldmVyc2U6cmV2ZXJzZX0iPjwvc3Bhbj4KKyAgICAgICAgICAgICA8
L3RoPgorICAgICAgICAgICAgIDx0aD4KKyAgICAgICAgICAgICAgIDxhIGhyZWY9IiIgbmctY2xp
Y2s9Im9yZGVyKCdhZ2UnKSI+QWdlPC9hPgorICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNv
cnRvcmRlciIgbmctc2hvdz0icHJlZGljYXRlID09PSAnYWdlJyIgbmctY2xhc3M9IntyZXZlcnNl
OnJldmVyc2V9Ij48L3NwYW4+CisgICAgICAgICAgICAgPC90aD4KKyAgICAgICAgICAgPC90cj4K
KyAgICAgICAgICAgPHRyIG5nLXJlcGVhdD0iZnJpZW5kIGluIGZyaWVuZHMgfCBvcmRlckJ5OnBy
ZWRpY2F0ZTpyZXZlcnNlIj4KKyAgICAgICAgICAgICA8dGQ+e3tmcmllbmQubmFtZX19PC90ZD4K
KyAgICAgICAgICAgICA8dGQ+e3tmcmllbmQucGhvbmV9fTwvdGQ+CisgICAgICAgICAgICAgPHRk
Pnt7ZnJpZW5kLmFnZX19PC90ZD4KKyAgICAgICAgICAgPC90cj4KKyAgICAgICAgIDwvdGFibGU+
CisgICAgICAgPC9kaXY+CisgICAgIDwvZmlsZT4KKyAgIDwvZXhhbXBsZT4KKyAqCisgKiBJdCdz
IGFsc28gcG9zc2libGUgdG8gY2FsbCB0aGUgb3JkZXJCeSBmaWx0ZXIgbWFudWFsbHksIGJ5IGlu
amVjdGluZyBgJGZpbHRlcmAsIHJldHJpZXZpbmcgdGhlCisgKiBmaWx0ZXIgcm91dGluZSB3aXRo
IGAkZmlsdGVyKCdvcmRlckJ5JylgLCBhbmQgY2FsbGluZyB0aGUgcmV0dXJuZWQgZmlsdGVyIHJv
dXRpbmUgd2l0aCB0aGUKKyAqIGRlc2lyZWQgcGFyYW1ldGVycy4KKyAqCisgKiBFeGFtcGxlOgor
ICoKKyAqIEBleGFtcGxlCisgIDxleGFtcGxlIG1vZHVsZT0ib3JkZXJCeUV4YW1wbGUiPgorICAg
IDxmaWxlIG5hbWU9ImluZGV4Lmh0bWwiPgorICAgICAgPGRpdiBuZy1jb250cm9sbGVyPSJFeGFt
cGxlQ29udHJvbGxlciI+CisgICAgICAgIDx0YWJsZSBjbGFzcz0iZnJpZW5kIj4KKyAgICAgICAg
ICA8dHI+CisgICAgICAgICAgICA8dGg+PGEgaHJlZj0iIiBuZy1jbGljaz0icmV2ZXJzZT1mYWxz
ZTtvcmRlcignbmFtZScsIGZhbHNlKSI+TmFtZTwvYT4KKyAgICAgICAgICAgICAgKDxhIGhyZWY9
IiIgbmctY2xpY2s9Im9yZGVyKCctbmFtZScsZmFsc2UpIj5ePC9hPik8L3RoPgorICAgICAgICAg
ICAgPHRoPjxhIGhyZWY9IiIgbmctY2xpY2s9InJldmVyc2U9IXJldmVyc2U7b3JkZXIoJ3Bob25l
JywgcmV2ZXJzZSkiPlBob25lIE51bWJlcjwvYT48L3RoPgorICAgICAgICAgICAgPHRoPjxhIGhy
ZWY9IiIgbmctY2xpY2s9InJldmVyc2U9IXJldmVyc2U7b3JkZXIoJ2FnZScscmV2ZXJzZSkiPkFn
ZTwvYT48L3RoPgorICAgICAgICAgIDwvdHI+CisgICAgICAgICAgPHRyIG5nLXJlcGVhdD0iZnJp
ZW5kIGluIGZyaWVuZHMiPgorICAgICAgICAgICAgPHRkPnt7ZnJpZW5kLm5hbWV9fTwvdGQ+Cisg
ICAgICAgICAgICA8dGQ+e3tmcmllbmQucGhvbmV9fTwvdGQ+CisgICAgICAgICAgICA8dGQ+e3tm
cmllbmQuYWdlfX08L3RkPgorICAgICAgICAgIDwvdHI+CisgICAgICAgIDwvdGFibGU+CisgICAg
ICA8L2Rpdj4KKyAgICA8L2ZpbGU+CisKKyAgICA8ZmlsZSBuYW1lPSJzY3JpcHQuanMiPgorICAg
ICAgYW5ndWxhci5tb2R1bGUoJ29yZGVyQnlFeGFtcGxlJywgW10pCisgICAgICAgIC5jb250cm9s
bGVyKCdFeGFtcGxlQ29udHJvbGxlcicsIFsnJHNjb3BlJywgJyRmaWx0ZXInLCBmdW5jdGlvbigk
c2NvcGUsICRmaWx0ZXIpIHsKKyAgICAgICAgICB2YXIgb3JkZXJCeSA9ICRmaWx0ZXIoJ29yZGVy
QnknKTsKKyAgICAgICAgICAkc2NvcGUuZnJpZW5kcyA9IFsKKyAgICAgICAgICAgIHsgbmFtZTog
J0pvaG4nLCAgICBwaG9uZTogJzU1NS0xMjEyJywgICAgYWdlOiAxMCB9LAorICAgICAgICAgICAg
eyBuYW1lOiAnTWFyeScsICAgIHBob25lOiAnNTU1LTk4NzYnLCAgICBhZ2U6IDE5IH0sCisgICAg
ICAgICAgICB7IG5hbWU6ICdNaWtlJywgICAgcGhvbmU6ICc1NTUtNDMyMScsICAgIGFnZTogMjEg
fSwKKyAgICAgICAgICAgIHsgbmFtZTogJ0FkYW0nLCAgICBwaG9uZTogJzU1NS01Njc4JywgICAg
YWdlOiAzNSB9LAorICAgICAgICAgICAgeyBuYW1lOiAnSnVsaWUnLCAgIHBob25lOiAnNTU1LTg3
NjUnLCAgICBhZ2U6IDI5IH0KKyAgICAgICAgICBdOworICAgICAgICAgICRzY29wZS5vcmRlciA9
IGZ1bmN0aW9uKHByZWRpY2F0ZSwgcmV2ZXJzZSkgeworICAgICAgICAgICAgJHNjb3BlLmZyaWVu
ZHMgPSBvcmRlckJ5KCRzY29wZS5mcmllbmRzLCBwcmVkaWNhdGUsIHJldmVyc2UpOworICAgICAg
ICAgIH07CisgICAgICAgICAgJHNjb3BlLm9yZGVyKCctYWdlJyxmYWxzZSk7CisgICAgICAgIH1d
KTsKKyAgICA8L2ZpbGU+Cis8L2V4YW1wbGU+CisgKi8KK29yZGVyQnlGaWx0ZXIuJGluamVjdCA9
IFsnJHBhcnNlJ107CitmdW5jdGlvbiBvcmRlckJ5RmlsdGVyKCRwYXJzZSkgeworICByZXR1cm4g
ZnVuY3Rpb24oYXJyYXksIHNvcnRQcmVkaWNhdGUsIHJldmVyc2VPcmRlcikgeworCisgICAgaWYg
KCEoaXNBcnJheUxpa2UoYXJyYXkpKSkgcmV0dXJuIGFycmF5OworCisgICAgaWYgKCFpc0FycmF5
KHNvcnRQcmVkaWNhdGUpKSB7IHNvcnRQcmVkaWNhdGUgPSBbc29ydFByZWRpY2F0ZV07IH0KKyAg
ICBpZiAoc29ydFByZWRpY2F0ZS5sZW5ndGggPT09IDApIHsgc29ydFByZWRpY2F0ZSA9IFsnKydd
OyB9CisKKyAgICB2YXIgcHJlZGljYXRlcyA9IHByb2Nlc3NQcmVkaWNhdGVzKHNvcnRQcmVkaWNh
dGUsIHJldmVyc2VPcmRlcik7CisKKyAgICAvLyBUaGUgbmV4dCB0aHJlZSBsaW5lcyBhcmUgYSB2
ZXJzaW9uIG9mIGEgU3dhcnR6aWFuIFRyYW5zZm9ybSBpZGlvbSBmcm9tIFBlcmwKKyAgICAvLyAo
c29tZXRpbWVzIGNhbGxlZCB0aGUgRGVjb3JhdGUtU29ydC1VbmRlY29yYXRlIGlkaW9tKQorICAg
IC8vIFNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TY2h3YXJ0emlhbl90cmFuc2Zv
cm0KKyAgICB2YXIgY29tcGFyZVZhbHVlcyA9IEFycmF5LnByb3RvdHlwZS5tYXAuY2FsbChhcnJh
eSwgZ2V0Q29tcGFyaXNvbk9iamVjdCk7CisgICAgY29tcGFyZVZhbHVlcy5zb3J0KGRvQ29tcGFy
aXNvbik7CisgICAgYXJyYXkgPSBjb21wYXJlVmFsdWVzLm1hcChmdW5jdGlvbihpdGVtKSB7IHJl
dHVybiBpdGVtLnZhbHVlOyB9KTsKKworICAgIHJldHVybiBhcnJheTsKKworICAgIGZ1bmN0aW9u
IGdldENvbXBhcmlzb25PYmplY3QodmFsdWUsIGluZGV4KSB7CisgICAgICByZXR1cm4geworICAg
ICAgICB2YWx1ZTogdmFsdWUsCisgICAgICAgIHByZWRpY2F0ZVZhbHVlczogcHJlZGljYXRlcy5t
YXAoZnVuY3Rpb24ocHJlZGljYXRlKSB7CisgICAgICAgICAgcmV0dXJuIGdldFByZWRpY2F0ZVZh
bHVlKHByZWRpY2F0ZS5nZXQodmFsdWUpLCBpbmRleCk7CisgICAgICAgIH0pCisgICAgICB9Owor
ICAgIH0KKworICAgIGZ1bmN0aW9uIGRvQ29tcGFyaXNvbih2MSwgdjIpIHsKKyAgICAgIHZhciBy
ZXN1bHQgPSAwOworICAgICAgZm9yICh2YXIgaW5kZXg9MCwgbGVuZ3RoID0gcHJlZGljYXRlcy5s
ZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyArK2luZGV4KSB7CisgICAgICAgIHJlc3VsdCA9IGNvbXBh
cmUodjEucHJlZGljYXRlVmFsdWVzW2luZGV4XSwgdjIucHJlZGljYXRlVmFsdWVzW2luZGV4XSkg
KiBwcmVkaWNhdGVzW2luZGV4XS5kZXNjZW5kaW5nOworICAgICAgICBpZiAocmVzdWx0KSBicmVh
azsKKyAgICAgIH0KKyAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICB9OworCisgIGZ1bmN0
aW9uIHByb2Nlc3NQcmVkaWNhdGVzKHNvcnRQcmVkaWNhdGUsIHJldmVyc2VPcmRlcikgeworICAg
IHJldmVyc2VPcmRlciA9IHJldmVyc2VPcmRlciA/IC0xIDogMTsKKyAgICByZXR1cm4gc29ydFBy
ZWRpY2F0ZS5tYXAoZnVuY3Rpb24ocHJlZGljYXRlKSB7CisgICAgICB2YXIgZGVzY2VuZGluZyA9
IDEsIGdldCA9IGlkZW50aXR5OworCisgICAgICBpZiAoaXNGdW5jdGlvbihwcmVkaWNhdGUpKSB7
CisgICAgICAgIGdldCA9IHByZWRpY2F0ZTsKKyAgICAgIH0gZWxzZSBpZiAoaXNTdHJpbmcocHJl
ZGljYXRlKSkgeworICAgICAgICBpZiAoKHByZWRpY2F0ZS5jaGFyQXQoMCkgPT0gJysnIHx8IHBy
ZWRpY2F0ZS5jaGFyQXQoMCkgPT0gJy0nKSkgeworICAgICAgICAgIGRlc2NlbmRpbmcgPSBwcmVk
aWNhdGUuY2hhckF0KDApID09ICctJyA/IC0xIDogMTsKKyAgICAgICAgICBwcmVkaWNhdGUgPSBw
cmVkaWNhdGUuc3Vic3RyaW5nKDEpOworICAgICAgICB9CisgICAgICAgIGlmIChwcmVkaWNhdGUg
IT09ICcnKSB7CisgICAgICAgICAgZ2V0ID0gJHBhcnNlKHByZWRpY2F0ZSk7CisgICAgICAgICAg
aWYgKGdldC5jb25zdGFudCkgeworICAgICAgICAgICAgdmFyIGtleSA9IGdldCgpOworICAgICAg
ICAgICAgZ2V0ID0gZnVuY3Rpb24odmFsdWUpIHsgcmV0dXJuIHZhbHVlW2tleV07IH07CisgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgICByZXR1cm4geyBnZXQ6IGdldCwgZGVz
Y2VuZGluZzogZGVzY2VuZGluZyAqIHJldmVyc2VPcmRlciB9OworICAgIH0pOworICB9CisKKyAg
ZnVuY3Rpb24gaXNQcmltaXRpdmUodmFsdWUpIHsKKyAgICBzd2l0Y2ggKHR5cGVvZiB2YWx1ZSkg
eworICAgICAgY2FzZSAnbnVtYmVyJzogLyogZmFsbHMgdGhyb3VnaCAqLworICAgICAgY2FzZSAn
Ym9vbGVhbic6IC8qIGZhbGxzIHRocm91Z2ggKi8KKyAgICAgIGNhc2UgJ3N0cmluZyc6CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKyAgfQorCisgIGZ1bmN0aW9uIG9iamVjdFZhbHVlKHZhbHVlLCBpbmRleCkgeworICAg
IC8vIElmIGB2YWx1ZU9mYCBpcyBhIHZhbGlkIGZ1bmN0aW9uIHVzZSB0aGF0CisgICAgaWYgKHR5
cGVvZiB2YWx1ZS52YWx1ZU9mID09PSAnZnVuY3Rpb24nKSB7CisgICAgICB2YWx1ZSA9IHZhbHVl
LnZhbHVlT2YoKTsKKyAgICAgIGlmIChpc1ByaW1pdGl2ZSh2YWx1ZSkpIHJldHVybiB2YWx1ZTsK
KyAgICB9CisgICAgLy8gSWYgYHRvU3RyaW5nYCBpcyBhIHZhbGlkIGZ1bmN0aW9uIGFuZCBub3Qg
dGhlIG9uZSBmcm9tIGBPYmplY3QucHJvdG90eXBlYCB1c2UgdGhhdAorICAgIGlmIChoYXNDdXN0
b21Ub1N0cmluZyh2YWx1ZSkpIHsKKyAgICAgIHZhbHVlID0gdmFsdWUudG9TdHJpbmcoKTsKKyAg
ICAgIGlmIChpc1ByaW1pdGl2ZSh2YWx1ZSkpIHJldHVybiB2YWx1ZTsKKyAgICB9CisgICAgLy8g
V2UgaGF2ZSBhIGJhc2ljIG9iamVjdCBzbyB3ZSB1c2UgdGhlIHBvc2l0aW9uIG9mIHRoZSBvYmpl
Y3QgaW4gdGhlIGNvbGxlY3Rpb24KKyAgICByZXR1cm4gaW5kZXg7CisgIH0KKworICBmdW5jdGlv
biBnZXRQcmVkaWNhdGVWYWx1ZSh2YWx1ZSwgaW5kZXgpIHsKKyAgICB2YXIgdHlwZSA9IHR5cGVv
ZiB2YWx1ZTsKKyAgICBpZiAodmFsdWUgPT09IG51bGwpIHsKKyAgICAgIHR5cGUgPSAnc3RyaW5n
JzsKKyAgICAgIHZhbHVlID0gJ251bGwnOworICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3N0cmlu
ZycpIHsKKyAgICAgIHZhbHVlID0gdmFsdWUudG9Mb3dlckNhc2UoKTsKKyAgICB9IGVsc2UgaWYg
KHR5cGUgPT09ICdvYmplY3QnKSB7CisgICAgICB2YWx1ZSA9IG9iamVjdFZhbHVlKHZhbHVlLCBp
bmRleCk7CisgICAgfQorICAgIHJldHVybiB7IHZhbHVlOiB2YWx1ZSwgdHlwZTogdHlwZSB9Owor
ICB9CisKKyAgZnVuY3Rpb24gY29tcGFyZSh2MSwgdjIpIHsKKyAgICB2YXIgcmVzdWx0ID0gMDsK
KyAgICBpZiAodjEudHlwZSA9PT0gdjIudHlwZSkgeworICAgICAgaWYgKHYxLnZhbHVlICE9PSB2
Mi52YWx1ZSkgeworICAgICAgICByZXN1bHQgPSB2MS52YWx1ZSA8IHYyLnZhbHVlID8gLTEgOiAx
OworICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICByZXN1bHQgPSB2MS50eXBlIDwgdjIudHlw
ZSA/IC0xIDogMTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQorfQorCitmdW5jdGlv
biBuZ0RpcmVjdGl2ZShkaXJlY3RpdmUpIHsKKyAgaWYgKGlzRnVuY3Rpb24oZGlyZWN0aXZlKSkg
eworICAgIGRpcmVjdGl2ZSA9IHsKKyAgICAgIGxpbms6IGRpcmVjdGl2ZQorICAgIH07CisgIH0K
KyAgZGlyZWN0aXZlLnJlc3RyaWN0ID0gZGlyZWN0aXZlLnJlc3RyaWN0IHx8ICdBQyc7CisgIHJl
dHVybiB2YWx1ZUZuKGRpcmVjdGl2ZSk7Cit9CisKKy8qKgorICogQG5nZG9jIGRpcmVjdGl2ZQor
ICogQG5hbWUgYQorICogQHJlc3RyaWN0IEUKKyAqCisgKiBAZGVzY3JpcHRpb24KKyAqIE1vZGlm
aWVzIHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIHRoZSBodG1sIEEgdGFnIHNvIHRoYXQgdGhlIGRl
ZmF1bHQgYWN0aW9uIGlzIHByZXZlbnRlZCB3aGVuCisgKiB0aGUgaHJlZiBhdHRyaWJ1dGUgaXMg
ZW1wdHkuCisgKgorICogVGhpcyBjaGFuZ2UgcGVybWl0cyB0aGUgZWFzeSBjcmVhdGlvbiBvZiBh
Y3Rpb24gbGlua3Mgd2l0aCB0aGUgYG5nQ2xpY2tgIGRpcmVjdGl2ZQorICogd2l0aG91dCBjaGFu
Z2luZyB0aGUgbG9jYXRpb24gb3IgY2F1c2luZyBwYWdlIHJlbG9hZHMsIGUuZy46CisgKiBgPGEg
aHJlZj0iIiBuZy1jbGljaz0ibGlzdC5hZGRJdGVtKCkiPkFkZCBJdGVtPC9hPmAKKyAqLwordmFy
IGh0bWxBbmNob3JEaXJlY3RpdmUgPSB2YWx1ZUZuKHsKKyAgcmVzdHJpY3Q6ICdFJywKKyAgY29t
cGlsZTogZnVuY3Rpb24oZWxlbWVudCwgYXR0cikgeworICAgIGlmICghYXR0ci5ocmVmICYmICFh
dHRyLnhsaW5rSHJlZikgeworICAgICAgcmV0dXJuIGZ1bmN0aW9uKHNjb3BlLCBlbGVtZW50KSB7
CisgICAgICAgIC8vIElmIHRoZSBsaW5rZWQgZWxlbWVudCBpcyBub3QgYW4gYW5jaG9yIHRhZyBh
bnltb3JlLCBkbyBub3RoaW5nCisgICAgICAgIGlmIChlbGVtZW50WzBdLm5vZGVOYW1lLnRvTG93
ZXJDYXNlKCkgIT09ICdhJykgcmV0dXJuOworCisgICAgICAgIC8vIFNWR0FFbGVtZW50IGRvZXMg
bm90IHVzZSB0aGUgaHJlZiBhdHRyaWJ1dGUsIGJ1dCByYXRoZXIgdGhlICd4bGlua0hyZWYnIGF0
dHJpYnV0ZS4KKyAgICAgICAgdmFyIGhyZWYgPSB0b1N0cmluZy5jYWxsKGVsZW1lbnQucHJvcCgn
aHJlZicpKSA9PT0gJ1tvYmplY3QgU1ZHQW5pbWF0ZWRTdHJpbmddJyA/CisgICAgICAgICAgICAg
ICAgICAgJ3hsaW5rOmhyZWYnIDogJ2hyZWYnOworICAgICAgICBlbGVtZW50Lm9uKCdjbGljaycs
IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgICAgLy8gaWYgd2UgaGF2ZSBubyBocmVmIHVybCwg
dGhlbiBkb24ndCBuYXZpZ2F0ZSBhbnl3aGVyZS4KKyAgICAgICAgICBpZiAoIWVsZW1lbnQuYXR0
cihocmVmKSkgeworICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAg
ICB9CisgICAgICAgIH0pOworICAgICAgfTsKKyAgICB9CisgIH0KK30pOworCisvKioKKyAqIEBu
Z2RvYyBkaXJlY3RpdmUKKyAqIEBuYW1lIG5nSHJlZgorICogQHJlc3RyaWN0IEEKKyAqIEBwcmlv
cml0eSA5OQorICoKKyAqIEBkZXNjcmlwdGlvbgorICogVXNpbmcgQW5ndWxhciBtYXJrdXAgbGlr
ZSBge3toYXNofX1gIGluIGFuIGhyZWYgYXR0cmlidXRlIHdpbGwKKyAqIG1ha2UgdGhlIGxpbmsg
Z28gdG8gdGhlIHdyb25nIFVSTCBpZiB0aGUgdXNlciBjbGlja3MgaXQgYmVmb3JlCisgKiBBbmd1
bGFyIGhhcyBhIGNoYW5jZSB0byByZXBsYWNlIHRoZSBge3toYXNofX1gIG1hcmt1cCB3aXRoIGl0
cworICogdmFsdWUuIFVudGlsIEFuZ3VsYXIgcmVwbGFjZXMgdGhlIG1hcmt1cCB0aGUgbGluayB3
aWxsIGJlIGJyb2tlbgorICogYW5kIHdpbGwgbW9zdCBsaWtlbHkgcmV0dXJuIGEgNDA0IGVycm9y
LiBUaGUgYG5nSHJlZmAgZGlyZWN0aXZlCisgKiBzb2x2ZXMgdGhpcyBwcm9ibGVtLgorICoKKyAq
IFRoZSB3cm9uZyB3YXkgdG8gd3JpdGUgaXQ6CisgKiBgYGBodG1sCisgKiA8YSBocmVmPSJodHRw
Oi8vd3d3LmdyYXZhdGFyLmNvbS9hdmF0YXIve3toYXNofX0iPmxpbmsxPC9hPgorICogYGBgCisg
KgorICogVGhlIGNvcnJlY3Qgd2F5IHRvIHdyaXRlIGl0OgorICogYGBgaHRtbAorICogPGEgbmct
aHJlZj0iaHR0cDovL3d3dy5ncmF2YXRhci5jb20vYXZhdGFyL3t7aGFzaH19Ij5saW5rMTwvYT4K
KyAqIGBgYAorICoKKyAqIEBlbGVtZW50IEEKKyAqIEBwYXJhbSB7dGVtcGxhdGV9IG5nSHJlZiBh
bnkgc3RyaW5nIHdoaWNoIGNhbiBjb250YWluIGB7e319YCBtYXJrdXAuCisgKgorICogQGV4YW1w
bGUKKyAqIFRoaXMgZXhhbXBsZSBzaG93cyB2YXJpb3VzIGNvbWJpbmF0aW9ucyBvZiBgaHJlZmAs
IGBuZy1ocmVmYCBhbmQgYG5nLWNsaWNrYCBhdHRyaWJ1dGVzCisgKiBpbiBsaW5rcyBhbmQgdGhl
aXIgZGlmZmVyZW50IGJlaGF2aW9yczoKKyAgICA8ZXhhbXBsZT4KKyAgICAgIDxmaWxlIG5hbWU9
ImluZGV4Lmh0bWwiPgorICAgICAgICA8aW5wdXQgbmctbW9kZWw9InZhbHVlIiAvPjxiciAvPgor
ICAgICAgICA8YSBpZD0ibGluay0xIiBocmVmIG5nLWNsaWNrPSJ2YWx1ZSA9IDEiPmxpbmsgMTwv
YT4gKGxpbmssIGRvbid0IHJlbG9hZCk8YnIgLz4KKyAgICAgICAgPGEgaWQ9ImxpbmstMiIgaHJl
Zj0iIiBuZy1jbGljaz0idmFsdWUgPSAyIj5saW5rIDI8L2E+IChsaW5rLCBkb24ndCByZWxvYWQp
PGJyIC8+CisgICAgICAgIDxhIGlkPSJsaW5rLTMiIG5nLWhyZWY9Ii97eycxMjMnfX0iPmxpbmsg
MzwvYT4gKGxpbmssIHJlbG9hZCEpPGJyIC8+CisgICAgICAgIDxhIGlkPSJsaW5rLTQiIGhyZWY9
IiIgbmFtZT0ieHgiIG5nLWNsaWNrPSJ2YWx1ZSA9IDQiPmFuY2hvcjwvYT4gKGxpbmssIGRvbid0
IHJlbG9hZCk8YnIgLz4KKyAgICAgICAgPGEgaWQ9ImxpbmstNSIgbmFtZT0ieHh4IiBuZy1jbGlj
az0idmFsdWUgPSA1Ij5hbmNob3I8L2E+IChubyBsaW5rKTxiciAvPgorICAgICAgICA8YSBpZD0i
bGluay02IiBuZy1ocmVmPSJ7e3ZhbHVlfX0iPmxpbms8L2E+IChsaW5rLCBjaGFuZ2UgbG9jYXRp
b24pCisgICAgICA8L2ZpbGU+CisgICAgICA8ZmlsZSBuYW1lPSJwcm90cmFjdG9yLmpzIiB0eXBl
PSJwcm90cmFjdG9yIj4KKyAgICAgICAgaXQoJ3Nob3VsZCBleGVjdXRlIG5nLWNsaWNrIGJ1dCBu
b3QgcmVsb2FkIHdoZW4gaHJlZiB3aXRob3V0IHZhbHVlJywgZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgZWxlbWVudChieS5pZCgnbGluay0xJykpLmNsaWNrKCk7CisgICAgICAgICAgZXhwZWN0KGVs
ZW1lbnQoYnkubW9kZWwoJ3ZhbHVlJykpLmdldEF0dHJpYnV0ZSgndmFsdWUnKSkudG9FcXVhbCgn
MScpOworICAgICAgICAgIGV4cGVjdChlbGVtZW50KGJ5LmlkKCdsaW5rLTEnKSkuZ2V0QXR0cmli
dXRlKCdocmVmJykpLnRvQmUoJycpOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxk
IGV4ZWN1dGUgbmctY2xpY2sgYnV0IG5vdCByZWxvYWQgd2hlbiBocmVmIGVtcHR5IHN0cmluZycs
IGZ1bmN0aW9uKCkgeworICAgICAgICAgIGVsZW1lbnQoYnkuaWQoJ2xpbmstMicpKS5jbGljaygp
OworICAgICAgICAgIGV4cGVjdChlbGVtZW50KGJ5Lm1vZGVsKCd2YWx1ZScpKS5nZXRBdHRyaWJ1
dGUoJ3ZhbHVlJykpLnRvRXF1YWwoJzInKTsKKyAgICAgICAgICBleHBlY3QoZWxlbWVudChieS5p
ZCgnbGluay0yJykpLmdldEF0dHJpYnV0ZSgnaHJlZicpKS50b0JlKCcnKTsKKyAgICAgICAgfSk7
CisKKyAgICAgICAgaXQoJ3Nob3VsZCBleGVjdXRlIG5nLWNsaWNrIGFuZCBjaGFuZ2UgdXJsIHdo
ZW4gbmctaHJlZiBzcGVjaWZpZWQnLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICBleHBlY3QoZWxl
bWVudChieS5pZCgnbGluay0zJykpLmdldEF0dHJpYnV0ZSgnaHJlZicpKS50b01hdGNoKC9cLzEy
MyQvKTsKKworICAgICAgICAgIGVsZW1lbnQoYnkuaWQoJ2xpbmstMycpKS5jbGljaygpOworCisg
ICAgICAgICAgLy8gQXQgdGhpcyBwb2ludCwgd2UgbmF2aWdhdGUgYXdheSBmcm9tIGFuIEFuZ3Vs
YXIgcGFnZSwgc28gd2UgbmVlZAorICAgICAgICAgIC8vIHRvIHVzZSBicm93c2VyLmRyaXZlciB0
byBnZXQgdGhlIGJhc2Ugd2ViZHJpdmVyLgorCisgICAgICAgICAgYnJvd3Nlci53YWl0KGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgcmV0dXJuIGJyb3dzZXIuZHJpdmVyLmdldEN1cnJlbnRVcmwo
KS50aGVuKGZ1bmN0aW9uKHVybCkgeworICAgICAgICAgICAgICByZXR1cm4gdXJsLm1hdGNoKC9c
LzEyMyQvKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgIH0sIDUwMDAsICdwYWdlIHNob3Vs
ZCBuYXZpZ2F0ZSB0byAvMTIzJyk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQg
ZXhlY3V0ZSBuZy1jbGljayBidXQgbm90IHJlbG9hZCB3aGVuIGhyZWYgZW1wdHkgc3RyaW5nIGFu
ZCBuYW1lIHNwZWNpZmllZCcsIGZ1bmN0aW9uKCkgeworICAgICAgICAgIGVsZW1lbnQoYnkuaWQo
J2xpbmstNCcpKS5jbGljaygpOworICAgICAgICAgIGV4cGVjdChlbGVtZW50KGJ5Lm1vZGVsKCd2
YWx1ZScpKS5nZXRBdHRyaWJ1dGUoJ3ZhbHVlJykpLnRvRXF1YWwoJzQnKTsKKyAgICAgICAgICBl
eHBlY3QoZWxlbWVudChieS5pZCgnbGluay00JykpLmdldEF0dHJpYnV0ZSgnaHJlZicpKS50b0Jl
KCcnKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCBleGVjdXRlIG5nLWNsaWNr
IGJ1dCBub3QgcmVsb2FkIHdoZW4gbm8gaHJlZiBidXQgbmFtZSBzcGVjaWZpZWQnLCBmdW5jdGlv
bigpIHsKKyAgICAgICAgICBlbGVtZW50KGJ5LmlkKCdsaW5rLTUnKSkuY2xpY2soKTsKKyAgICAg
ICAgICBleHBlY3QoZWxlbWVudChieS5tb2RlbCgndmFsdWUnKSkuZ2V0QXR0cmlidXRlKCd2YWx1
ZScpKS50b0VxdWFsKCc1Jyk7CisgICAgICAgICAgZXhwZWN0KGVsZW1lbnQoYnkuaWQoJ2xpbmst
NScpKS5nZXRBdHRyaWJ1dGUoJ2hyZWYnKSkudG9CZShudWxsKTsKKyAgICAgICAgfSk7CisKKyAg
ICAgICAgaXQoJ3Nob3VsZCBvbmx5IGNoYW5nZSB1cmwgd2hlbiBvbmx5IG5nLWhyZWYnLCBmdW5j
dGlvbigpIHsKKyAgICAgICAgICBlbGVtZW50KGJ5Lm1vZGVsKCd2YWx1ZScpKS5jbGVhcigpOwor
ICAgICAgICAgIGVsZW1lbnQoYnkubW9kZWwoJ3ZhbHVlJykpLnNlbmRLZXlzKCc2Jyk7CisgICAg
ICAgICAgZXhwZWN0KGVsZW1lbnQoYnkuaWQoJ2xpbmstNicpKS5nZXRBdHRyaWJ1dGUoJ2hyZWYn
KSkudG9NYXRjaCgvXC82JC8pOworCisgICAgICAgICAgZWxlbWVudChieS5pZCgnbGluay02Jykp
LmNsaWNrKCk7CisKKyAgICAgICAgICAvLyBBdCB0aGlzIHBvaW50LCB3ZSBuYXZpZ2F0ZSBhd2F5
IGZyb20gYW4gQW5ndWxhciBwYWdlLCBzbyB3ZSBuZWVkCisgICAgICAgICAgLy8gdG8gdXNlIGJy
b3dzZXIuZHJpdmVyIHRvIGdldCB0aGUgYmFzZSB3ZWJkcml2ZXIuCisgICAgICAgICAgYnJvd3Nl
ci53YWl0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcmV0dXJuIGJyb3dzZXIuZHJpdmVyLmdl
dEN1cnJlbnRVcmwoKS50aGVuKGZ1bmN0aW9uKHVybCkgeworICAgICAgICAgICAgICByZXR1cm4g
dXJsLm1hdGNoKC9cLzYkLyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICB9LCA1MDAwLCAn
cGFnZSBzaG91bGQgbmF2aWdhdGUgdG8gLzYnKTsKKyAgICAgICAgfSk7CisgICAgICA8L2ZpbGU+
CisgICAgPC9leGFtcGxlPgorICovCisKKy8qKgorICogQG5nZG9jIGRpcmVjdGl2ZQorICogQG5h
bWUgbmdTcmMKKyAqIEByZXN0cmljdCBBCisgKiBAcHJpb3JpdHkgOTkKKyAqCisgKiBAZGVzY3Jp
cHRpb24KKyAqIFVzaW5nIEFuZ3VsYXIgbWFya3VwIGxpa2UgYHt7aGFzaH19YCBpbiBhIGBzcmNg
IGF0dHJpYnV0ZSBkb2Vzbid0CisgKiB3b3JrIHJpZ2h0OiBUaGUgYnJvd3NlciB3aWxsIGZldGNo
IGZyb20gdGhlIFVSTCB3aXRoIHRoZSBsaXRlcmFsCisgKiB0ZXh0IGB7e2hhc2h9fWAgdW50aWwg
QW5ndWxhciByZXBsYWNlcyB0aGUgZXhwcmVzc2lvbiBpbnNpZGUKKyAqIGB7e2hhc2h9fWAuIFRo
ZSBgbmdTcmNgIGRpcmVjdGl2ZSBzb2x2ZXMgdGhpcyBwcm9ibGVtLgorICoKKyAqIFRoZSBidWdn
eSB3YXkgdG8gd3JpdGUgaXQ6CisgKiBgYGBodG1sCisgKiA8aW1nIHNyYz0iaHR0cDovL3d3dy5n
cmF2YXRhci5jb20vYXZhdGFyL3t7aGFzaH19IiBhbHQ9IkRlc2NyaXB0aW9uIi8+CisgKiBgYGAK
KyAqCisgKiBUaGUgY29ycmVjdCB3YXkgdG8gd3JpdGUgaXQ6CisgKiBgYGBodG1sCisgKiA8aW1n
IG5nLXNyYz0iaHR0cDovL3d3dy5ncmF2YXRhci5jb20vYXZhdGFyL3t7aGFzaH19IiBhbHQ9IkRl
c2NyaXB0aW9uIiAvPgorICogYGBgCisgKgorICogQGVsZW1lbnQgSU1HCisgKiBAcGFyYW0ge3Rl
bXBsYXRlfSBuZ1NyYyBhbnkgc3RyaW5nIHdoaWNoIGNhbiBjb250YWluIGB7e319YCBtYXJrdXAu
CisgKi8KKworLyoqCisgKiBAbmdkb2MgZGlyZWN0aXZlCisgKiBAbmFtZSBuZ1NyY3NldAorICog
QHJlc3RyaWN0IEEKKyAqIEBwcmlvcml0eSA5OQorICoKKyAqIEBkZXNjcmlwdGlvbgorICogVXNp
bmcgQW5ndWxhciBtYXJrdXAgbGlrZSBge3toYXNofX1gIGluIGEgYHNyY3NldGAgYXR0cmlidXRl
IGRvZXNuJ3QKKyAqIHdvcmsgcmlnaHQ6IFRoZSBicm93c2VyIHdpbGwgZmV0Y2ggZnJvbSB0aGUg
VVJMIHdpdGggdGhlIGxpdGVyYWwKKyAqIHRleHQgYHt7aGFzaH19YCB1bnRpbCBBbmd1bGFyIHJl
cGxhY2VzIHRoZSBleHByZXNzaW9uIGluc2lkZQorICogYHt7aGFzaH19YC4gVGhlIGBuZ1NyY3Nl
dGAgZGlyZWN0aXZlIHNvbHZlcyB0aGlzIHByb2JsZW0uCisgKgorICogVGhlIGJ1Z2d5IHdheSB0
byB3cml0ZSBpdDoKKyAqIGBgYGh0bWwKKyAqIDxpbWcgc3Jjc2V0PSJodHRwOi8vd3d3LmdyYXZh
dGFyLmNvbS9hdmF0YXIve3toYXNofX0gMngiIGFsdD0iRGVzY3JpcHRpb24iLz4KKyAqIGBgYAor
ICoKKyAqIFRoZSBjb3JyZWN0IHdheSB0byB3cml0ZSBpdDoKKyAqIGBgYGh0bWwKKyAqIDxpbWcg
bmctc3Jjc2V0PSJodHRwOi8vd3d3LmdyYXZhdGFyLmNvbS9hdmF0YXIve3toYXNofX0gMngiIGFs
dD0iRGVzY3JpcHRpb24iIC8+CisgKiBgYGAKKyAqCisgKiBAZWxlbWVudCBJTUcKKyAqIEBwYXJh
bSB7dGVtcGxhdGV9IG5nU3Jjc2V0IGFueSBzdHJpbmcgd2hpY2ggY2FuIGNvbnRhaW4gYHt7fX1g
IG1hcmt1cC4KKyAqLworCisvKioKKyAqIEBuZ2RvYyBkaXJlY3RpdmUKKyAqIEBuYW1lIG5nRGlz
YWJsZWQKKyAqIEByZXN0cmljdCBBCisgKiBAcHJpb3JpdHkgMTAwCisgKgorICogQGRlc2NyaXB0
aW9uCisgKgorICogVGhpcyBkaXJlY3RpdmUgc2V0cyB0aGUgYGRpc2FibGVkYCBhdHRyaWJ1dGUg
b24gdGhlIGVsZW1lbnQgaWYgdGhlCisgKiB7QGxpbmsgZ3VpZGUvZXhwcmVzc2lvbiBleHByZXNz
aW9ufSBpbnNpZGUgYG5nRGlzYWJsZWRgIGV2YWx1YXRlcyB0byB0cnV0aHkuCisgKgorICogQSBz
cGVjaWFsIGRpcmVjdGl2ZSBpcyBuZWNlc3NhcnkgYmVjYXVzZSB3ZSBjYW5ub3QgdXNlIGludGVy
cG9sYXRpb24gaW5zaWRlIHRoZSBgZGlzYWJsZWRgCisgKiBhdHRyaWJ1dGUuICBUaGUgZm9sbG93
aW5nIGV4YW1wbGUgd291bGQgbWFrZSB0aGUgYnV0dG9uIGVuYWJsZWQgb24gQ2hyb21lL0ZpcmVm
b3gKKyAqIGJ1dCBub3Qgb24gb2xkZXIgSUVzOgorICoKKyAqIGBgYGh0bWwKKyAqIDwhLS0gU2Vl
IGJlbG93IGZvciBhbiBleGFtcGxlIG9mIG5nLWRpc2FibGVkIGJlaW5nIHVzZWQgY29ycmVjdGx5
IC0tPgorICogPGRpdiBuZy1pbml0PSJpc0Rpc2FibGVkID0gZmFsc2UiPgorICogIDxidXR0b24g
ZGlzYWJsZWQ9Int7aXNEaXNhYmxlZH19Ij5EaXNhYmxlZDwvYnV0dG9uPgorICogPC9kaXY+Cisg
KiBgYGAKKyAqCisgKiBUaGlzIGlzIGJlY2F1c2UgdGhlIEhUTUwgc3BlY2lmaWNhdGlvbiBkb2Vz
IG5vdCByZXF1aXJlIGJyb3dzZXJzIHRvIHByZXNlcnZlIHRoZSB2YWx1ZXMgb2YKKyAqIGJvb2xl
YW4gYXR0cmlidXRlcyBzdWNoIGFzIGBkaXNhYmxlZGAgKFRoZWlyIHByZXNlbmNlIG1lYW5zIHRy
dWUgYW5kIHRoZWlyIGFic2VuY2UgbWVhbnMgZmFsc2UuKQorICogSWYgd2UgcHV0IGFuIEFuZ3Vs
YXIgaW50ZXJwb2xhdGlvbiBleHByZXNzaW9uIGludG8gc3VjaCBhbiBhdHRyaWJ1dGUgdGhlbiB0
aGUKKyAqIGJpbmRpbmcgaW5mb3JtYXRpb24gd291bGQgYmUgbG9zdCB3aGVuIHRoZSBicm93c2Vy
IHJlbW92ZXMgdGhlIGF0dHJpYnV0ZS4KKyAqCisgKiBAZXhhbXBsZQorICAgIDxleGFtcGxlPgor
ICAgICAgPGZpbGUgbmFtZT0iaW5kZXguaHRtbCI+CisgICAgICAgIDxsYWJlbD5DbGljayBtZSB0
byB0b2dnbGU6IDxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmctbW9kZWw9ImNoZWNrZWQiPjwvbGFi
ZWw+PGJyLz4KKyAgICAgICAgPGJ1dHRvbiBuZy1tb2RlbD0iYnV0dG9uIiBuZy1kaXNhYmxlZD0i
Y2hlY2tlZCI+QnV0dG9uPC9idXR0b24+CisgICAgICA8L2ZpbGU+CisgICAgICA8ZmlsZSBuYW1l
PSJwcm90cmFjdG9yLmpzIiB0eXBlPSJwcm90cmFjdG9yIj4KKyAgICAgICAgaXQoJ3Nob3VsZCB0
b2dnbGUgYnV0dG9uJywgZnVuY3Rpb24oKSB7CisgICAgICAgICAgZXhwZWN0KGVsZW1lbnQoYnku
Y3NzKCdidXR0b24nKSkuZ2V0QXR0cmlidXRlKCdkaXNhYmxlZCcpKS50b0JlRmFsc3koKTsKKyAg
ICAgICAgICBlbGVtZW50KGJ5Lm1vZGVsKCdjaGVja2VkJykpLmNsaWNrKCk7CisgICAgICAgICAg
ZXhwZWN0KGVsZW1lbnQoYnkuY3NzKCdidXR0b24nKSkuZ2V0QXR0cmlidXRlKCdkaXNhYmxlZCcp
KS50b0JlVHJ1dGh5KCk7CisgICAgICAgIH0pOworICAgICAgPC9maWxlPgorICAgIDwvZXhhbXBs
ZT4KKyAqCisgKiBAZWxlbWVudCBJTlBVVAorICogQHBhcmFtIHtleHByZXNzaW9ufSBuZ0Rpc2Fi
bGVkIElmIHRoZSB7QGxpbmsgZ3VpZGUvZXhwcmVzc2lvbiBleHByZXNzaW9ufSBpcyB0cnV0aHks
CisgKiAgICAgdGhlbiB0aGUgYGRpc2FibGVkYCBhdHRyaWJ1dGUgd2lsbCBiZSBzZXQgb24gdGhl
IGVsZW1lbnQKKyAqLworCisKKy8qKgorICogQG5nZG9jIGRpcmVjdGl2ZQorICogQG5hbWUgbmdD
aGVja2VkCisgKiBAcmVzdHJpY3QgQQorICogQHByaW9yaXR5IDEwMAorICoKKyAqIEBkZXNjcmlw
dGlvbgorICogU2V0cyB0aGUgYGNoZWNrZWRgIGF0dHJpYnV0ZSBvbiB0aGUgZWxlbWVudCwgaWYg
dGhlIGV4cHJlc3Npb24gaW5zaWRlIGBuZ0NoZWNrZWRgIGlzIHRydXRoeS4KKyAqCisgKiBOb3Rl
IHRoYXQgdGhpcyBkaXJlY3RpdmUgc2hvdWxkIG5vdCBiZSB1c2VkIHRvZ2V0aGVyIHdpdGgge0Bs
aW5rIG5nTW9kZWwgYG5nTW9kZWxgfSwKKyAqIGFzIHRoaXMgY2FuIGxlYWQgdG8gdW5leHBlY3Rl
ZCBiZWhhdmlvci4KKyAqCisgKiAjIyMgV2h5IGRvIHdlIG5lZWQgYG5nQ2hlY2tlZGA/CisgKgor
ICogVGhlIEhUTUwgc3BlY2lmaWNhdGlvbiBkb2VzIG5vdCByZXF1aXJlIGJyb3dzZXJzIHRvIHBy
ZXNlcnZlIHRoZSB2YWx1ZXMgb2YgYm9vbGVhbiBhdHRyaWJ1dGVzCisgKiBzdWNoIGFzIGNoZWNr
ZWQuIChUaGVpciBwcmVzZW5jZSBtZWFucyB0cnVlIGFuZCB0aGVpciBhYnNlbmNlIG1lYW5zIGZh
bHNlLikKKyAqIElmIHdlIHB1dCBhbiBBbmd1bGFyIGludGVycG9sYXRpb24gZXhwcmVzc2lvbiBp
bnRvIHN1Y2ggYW4gYXR0cmlidXRlIHRoZW4gdGhlCisgKiBiaW5kaW5nIGluZm9ybWF0aW9uIHdv
dWxkIGJlIGxvc3Qgd2hlbiB0aGUgYnJvd3NlciByZW1vdmVzIHRoZSBhdHRyaWJ1dGUuCisgKiBU
aGUgYG5nQ2hlY2tlZGAgZGlyZWN0aXZlIHNvbHZlcyB0aGlzIHByb2JsZW0gZm9yIHRoZSBgY2hl
Y2tlZGAgYXR0cmlidXRlLgorICogVGhpcyBjb21wbGVtZW50YXJ5IGRpcmVjdGl2ZSBpcyBub3Qg
cmVtb3ZlZCBieSB0aGUgYnJvd3NlciBhbmQgc28gcHJvdmlkZXMKKyAqIGEgcGVybWFuZW50IHJl
bGlhYmxlIHBsYWNlIHRvIHN0b3JlIHRoZSBiaW5kaW5nIGluZm9ybWF0aW9uLgorICogQGV4YW1w
bGUKKyAgICA8ZXhhbXBsZT4KKyAgICAgIDxmaWxlIG5hbWU9ImluZGV4Lmh0bWwiPgorICAgICAg
ICA8bGFiZWw+Q2hlY2sgbWUgdG8gY2hlY2sgYm90aDogPGlucHV0IHR5cGU9ImNoZWNrYm94IiBu
Zy1tb2RlbD0ibWFzdGVyIj48L2xhYmVsPjxici8+CisgICAgICAgIDxpbnB1dCBpZD0iY2hlY2tT
bGF2ZSIgdHlwZT0iY2hlY2tib3giIG5nLWNoZWNrZWQ9Im1hc3RlciIgYXJpYS1sYWJlbD0iU2xh
dmUgaW5wdXQiPgorICAgICAgPC9maWxlPgorICAgICAgPGZpbGUgbmFtZT0icHJvdHJhY3Rvci5q
cyIgdHlwZT0icHJvdHJhY3RvciI+CisgICAgICAgIGl0KCdzaG91bGQgY2hlY2sgYm90aCBjaGVj
a0JveGVzJywgZnVuY3Rpb24oKSB7CisgICAgICAgICAgZXhwZWN0KGVsZW1lbnQoYnkuaWQoJ2No
ZWNrU2xhdmUnKSkuZ2V0QXR0cmlidXRlKCdjaGVja2VkJykpLnRvQmVGYWxzeSgpOworICAgICAg
ICAgIGVsZW1lbnQoYnkubW9kZWwoJ21hc3RlcicpKS5jbGljaygpOworICAgICAgICAgIGV4cGVj
dChlbGVtZW50KGJ5LmlkKCdjaGVja1NsYXZlJykpLmdldEF0dHJpYnV0ZSgnY2hlY2tlZCcpKS50
b0JlVHJ1dGh5KCk7CisgICAgICAgIH0pOworICAgICAgPC9maWxlPgorICAgIDwvZXhhbXBsZT4K
KyAqCisgKiBAZWxlbWVudCBJTlBVVAorICogQHBhcmFtIHtleHByZXNzaW9ufSBuZ0NoZWNrZWQg
SWYgdGhlIHtAbGluayBndWlkZS9leHByZXNzaW9uIGV4cHJlc3Npb259IGlzIHRydXRoeSwKKyAq
ICAgICB0aGVuIHRoZSBgY2hlY2tlZGAgYXR0cmlidXRlIHdpbGwgYmUgc2V0IG9uIHRoZSBlbGVt
ZW50CisgKi8KKworCisvKioKKyAqIEBuZ2RvYyBkaXJlY3RpdmUKKyAqIEBuYW1lIG5nUmVhZG9u
bHkKKyAqIEByZXN0cmljdCBBCisgKiBAcHJpb3JpdHkgMTAwCisgKgorICogQGRlc2NyaXB0aW9u
CisgKiBUaGUgSFRNTCBzcGVjaWZpY2F0aW9uIGRvZXMgbm90IHJlcXVpcmUgYnJvd3NlcnMgdG8g
cHJlc2VydmUgdGhlIHZhbHVlcyBvZiBib29sZWFuIGF0dHJpYnV0ZXMKKyAqIHN1Y2ggYXMgcmVh
ZG9ubHkuIChUaGVpciBwcmVzZW5jZSBtZWFucyB0cnVlIGFuZCB0aGVpciBhYnNlbmNlIG1lYW5z
IGZhbHNlLikKKyAqIElmIHdlIHB1dCBhbiBBbmd1bGFyIGludGVycG9sYXRpb24gZXhwcmVzc2lv
biBpbnRvIHN1Y2ggYW4gYXR0cmlidXRlIHRoZW4gdGhlCisgKiBiaW5kaW5nIGluZm9ybWF0aW9u
IHdvdWxkIGJlIGxvc3Qgd2hlbiB0aGUgYnJvd3NlciByZW1vdmVzIHRoZSBhdHRyaWJ1dGUuCisg
KiBUaGUgYG5nUmVhZG9ubHlgIGRpcmVjdGl2ZSBzb2x2ZXMgdGhpcyBwcm9ibGVtIGZvciB0aGUg
YHJlYWRvbmx5YCBhdHRyaWJ1dGUuCisgKiBUaGlzIGNvbXBsZW1lbnRhcnkgZGlyZWN0aXZlIGlz
IG5vdCByZW1vdmVkIGJ5IHRoZSBicm93c2VyIGFuZCBzbyBwcm92aWRlcworICogYSBwZXJtYW5l
bnQgcmVsaWFibGUgcGxhY2UgdG8gc3RvcmUgdGhlIGJpbmRpbmcgaW5mb3JtYXRpb24uCisgKiBA
ZXhhbXBsZQorICAgIDxleGFtcGxlPgorICAgICAgPGZpbGUgbmFtZT0iaW5kZXguaHRtbCI+Cisg
ICAgICAgIDxsYWJlbD5DaGVjayBtZSB0byBtYWtlIHRleHQgcmVhZG9ubHk6IDxpbnB1dCB0eXBl
PSJjaGVja2JveCIgbmctbW9kZWw9ImNoZWNrZWQiPjwvbGFiZWw+PGJyLz4KKyAgICAgICAgPGlu
cHV0IHR5cGU9InRleHQiIG5nLXJlYWRvbmx5PSJjaGVja2VkIiB2YWx1ZT0iSSdtIEFuZ3VsYXIi
IGFyaWEtbGFiZWw9IlJlYWRvbmx5IGZpZWxkIiAvPgorICAgICAgPC9maWxlPgorICAgICAgPGZp
bGUgbmFtZT0icHJvdHJhY3Rvci5qcyIgdHlwZT0icHJvdHJhY3RvciI+CisgICAgICAgIGl0KCdz
aG91bGQgdG9nZ2xlIHJlYWRvbmx5IGF0dHInLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICBleHBl
Y3QoZWxlbWVudChieS5jc3MoJ1t0eXBlPSJ0ZXh0Il0nKSkuZ2V0QXR0cmlidXRlKCdyZWFkb25s
eScpKS50b0JlRmFsc3koKTsKKyAgICAgICAgICBlbGVtZW50KGJ5Lm1vZGVsKCdjaGVja2VkJykp
LmNsaWNrKCk7CisgICAgICAgICAgZXhwZWN0KGVsZW1lbnQoYnkuY3NzKCdbdHlwZT0idGV4dCJd
JykpLmdldEF0dHJpYnV0ZSgncmVhZG9ubHknKSkudG9CZVRydXRoeSgpOworICAgICAgICB9KTsK
KyAgICAgIDwvZmlsZT4KKyAgICA8L2V4YW1wbGU+CisgKgorICogQGVsZW1lbnQgSU5QVVQKKyAq
IEBwYXJhbSB7ZXhwcmVzc2lvbn0gbmdSZWFkb25seSBJZiB0aGUge0BsaW5rIGd1aWRlL2V4cHJl
c3Npb24gZXhwcmVzc2lvbn0gaXMgdHJ1dGh5LAorICogICAgIHRoZW4gc3BlY2lhbCBhdHRyaWJ1
dGUgInJlYWRvbmx5IiB3aWxsIGJlIHNldCBvbiB0aGUgZWxlbWVudAorICovCisKKworLyoqCisg
KiBAbmdkb2MgZGlyZWN0aXZlCisgKiBAbmFtZSBuZ1NlbGVjdGVkCisgKiBAcmVzdHJpY3QgQQor
ICogQHByaW9yaXR5IDEwMAorICoKKyAqIEBkZXNjcmlwdGlvbgorICogVGhlIEhUTUwgc3BlY2lm
aWNhdGlvbiBkb2VzIG5vdCByZXF1aXJlIGJyb3dzZXJzIHRvIHByZXNlcnZlIHRoZSB2YWx1ZXMg
b2YgYm9vbGVhbiBhdHRyaWJ1dGVzCisgKiBzdWNoIGFzIHNlbGVjdGVkLiAoVGhlaXIgcHJlc2Vu
Y2UgbWVhbnMgdHJ1ZSBhbmQgdGhlaXIgYWJzZW5jZSBtZWFucyBmYWxzZS4pCisgKiBJZiB3ZSBw
dXQgYW4gQW5ndWxhciBpbnRlcnBvbGF0aW9uIGV4cHJlc3Npb24gaW50byBzdWNoIGFuIGF0dHJp
YnV0ZSB0aGVuIHRoZQorICogYmluZGluZyBpbmZvcm1hdGlvbiB3b3VsZCBiZSBsb3N0IHdoZW4g
dGhlIGJyb3dzZXIgcmVtb3ZlcyB0aGUgYXR0cmlidXRlLgorICogVGhlIGBuZ1NlbGVjdGVkYCBk
aXJlY3RpdmUgc29sdmVzIHRoaXMgcHJvYmxlbSBmb3IgdGhlIGBzZWxlY3RlZGAgYXR0cmlidXRl
LgorICogVGhpcyBjb21wbGVtZW50YXJ5IGRpcmVjdGl2ZSBpcyBub3QgcmVtb3ZlZCBieSB0aGUg
YnJvd3NlciBhbmQgc28gcHJvdmlkZXMKKyAqIGEgcGVybWFuZW50IHJlbGlhYmxlIHBsYWNlIHRv
IHN0b3JlIHRoZSBiaW5kaW5nIGluZm9ybWF0aW9uLgorICoKKyAqIEBleGFtcGxlCisgICAgPGV4
YW1wbGU+CisgICAgICA8ZmlsZSBuYW1lPSJpbmRleC5odG1sIj4KKyAgICAgICAgPGxhYmVsPkNo
ZWNrIG1lIHRvIHNlbGVjdDogPGlucHV0IHR5cGU9ImNoZWNrYm94IiBuZy1tb2RlbD0ic2VsZWN0
ZWQiPjwvbGFiZWw+PGJyLz4KKyAgICAgICAgPHNlbGVjdCBhcmlhLWxhYmVsPSJuZ1NlbGVjdGVk
IGRlbW8iPgorICAgICAgICAgIDxvcHRpb24+SGVsbG8hPC9vcHRpb24+CisgICAgICAgICAgPG9w
dGlvbiBpZD0iZ3JlZXQiIG5nLXNlbGVjdGVkPSJzZWxlY3RlZCI+R3JlZXRpbmdzITwvb3B0aW9u
PgorICAgICAgICA8L3NlbGVjdD4KKyAgICAgIDwvZmlsZT4KKyAgICAgIDxmaWxlIG5hbWU9InBy
b3RyYWN0b3IuanMiIHR5cGU9InByb3RyYWN0b3IiPgorICAgICAgICBpdCgnc2hvdWxkIHNlbGVj
dCBHcmVldGluZ3MhJywgZnVuY3Rpb24oKSB7CisgICAgICAgICAgZXhwZWN0KGVsZW1lbnQoYnku
aWQoJ2dyZWV0JykpLmdldEF0dHJpYnV0ZSgnc2VsZWN0ZWQnKSkudG9CZUZhbHN5KCk7CisgICAg
ICAgICAgZWxlbWVudChieS5tb2RlbCgnc2VsZWN0ZWQnKSkuY2xpY2soKTsKKyAgICAgICAgICBl
eHBlY3QoZWxlbWVudChieS5pZCgnZ3JlZXQnKSkuZ2V0QXR0cmlidXRlKCdzZWxlY3RlZCcpKS50
b0JlVHJ1dGh5KCk7CisgICAgICAgIH0pOworICAgICAgPC9maWxlPgorICAgIDwvZXhhbXBsZT4K
KyAqCisgKiBAZWxlbWVudCBPUFRJT04KKyAqIEBwYXJhbSB7ZXhwcmVzc2lvbn0gbmdTZWxlY3Rl
ZCBJZiB0aGUge0BsaW5rIGd1aWRlL2V4cHJlc3Npb24gZXhwcmVzc2lvbn0gaXMgdHJ1dGh5LAor
ICogICAgIHRoZW4gc3BlY2lhbCBhdHRyaWJ1dGUgInNlbGVjdGVkIiB3aWxsIGJlIHNldCBvbiB0
aGUgZWxlbWVudAorICovCisKKy8qKgorICogQG5nZG9jIGRpcmVjdGl2ZQorICogQG5hbWUgbmdP
cGVuCisgKiBAcmVzdHJpY3QgQQorICogQHByaW9yaXR5IDEwMAorICoKKyAqIEBkZXNjcmlwdGlv
bgorICogVGhlIEhUTUwgc3BlY2lmaWNhdGlvbiBkb2VzIG5vdCByZXF1aXJlIGJyb3dzZXJzIHRv
IHByZXNlcnZlIHRoZSB2YWx1ZXMgb2YgYm9vbGVhbiBhdHRyaWJ1dGVzCisgKiBzdWNoIGFzIG9w
ZW4uIChUaGVpciBwcmVzZW5jZSBtZWFucyB0cnVlIGFuZCB0aGVpciBhYnNlbmNlIG1lYW5zIGZh
bHNlLikKKyAqIElmIHdlIHB1dCBhbiBBbmd1bGFyIGludGVycG9sYXRpb24gZXhwcmVzc2lvbiBp
bnRvIHN1Y2ggYW4gYXR0cmlidXRlIHRoZW4gdGhlCisgKiBiaW5kaW5nIGluZm9ybWF0aW9uIHdv
dWxkIGJlIGxvc3Qgd2hlbiB0aGUgYnJvd3NlciByZW1vdmVzIHRoZSBhdHRyaWJ1dGUuCisgKiBU
aGUgYG5nT3BlbmAgZGlyZWN0aXZlIHNvbHZlcyB0aGlzIHByb2JsZW0gZm9yIHRoZSBgb3BlbmAg
YXR0cmlidXRlLgorICogVGhpcyBjb21wbGVtZW50YXJ5IGRpcmVjdGl2ZSBpcyBub3QgcmVtb3Zl
ZCBieSB0aGUgYnJvd3NlciBhbmQgc28gcHJvdmlkZXMKKyAqIGEgcGVybWFuZW50IHJlbGlhYmxl
IHBsYWNlIHRvIHN0b3JlIHRoZSBiaW5kaW5nIGluZm9ybWF0aW9uLgorICogQGV4YW1wbGUKKyAg
ICAgPGV4YW1wbGU+CisgICAgICAgPGZpbGUgbmFtZT0iaW5kZXguaHRtbCI+CisgICAgICAgICA8
bGFiZWw+Q2hlY2sgbWUgY2hlY2sgbXVsdGlwbGU6IDxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmct
bW9kZWw9Im9wZW4iPjwvbGFiZWw+PGJyLz4KKyAgICAgICAgIDxkZXRhaWxzIGlkPSJkZXRhaWxz
IiBuZy1vcGVuPSJvcGVuIj4KKyAgICAgICAgICAgIDxzdW1tYXJ5PlNob3cvSGlkZSBtZTwvc3Vt
bWFyeT4KKyAgICAgICAgIDwvZGV0YWlscz4KKyAgICAgICA8L2ZpbGU+CisgICAgICAgPGZpbGUg
bmFtZT0icHJvdHJhY3Rvci5qcyIgdHlwZT0icHJvdHJhY3RvciI+CisgICAgICAgICBpdCgnc2hv
dWxkIHRvZ2dsZSBvcGVuJywgZnVuY3Rpb24oKSB7CisgICAgICAgICAgIGV4cGVjdChlbGVtZW50
KGJ5LmlkKCdkZXRhaWxzJykpLmdldEF0dHJpYnV0ZSgnb3BlbicpKS50b0JlRmFsc3koKTsKKyAg
ICAgICAgICAgZWxlbWVudChieS5tb2RlbCgnb3BlbicpKS5jbGljaygpOworICAgICAgICAgICBl
eHBlY3QoZWxlbWVudChieS5pZCgnZGV0YWlscycpKS5nZXRBdHRyaWJ1dGUoJ29wZW4nKSkudG9C
ZVRydXRoeSgpOworICAgICAgICAgfSk7CisgICAgICAgPC9maWxlPgorICAgICA8L2V4YW1wbGU+
CisgKgorICogQGVsZW1lbnQgREVUQUlMUworICogQHBhcmFtIHtleHByZXNzaW9ufSBuZ09wZW4g
SWYgdGhlIHtAbGluayBndWlkZS9leHByZXNzaW9uIGV4cHJlc3Npb259IGlzIHRydXRoeSwKKyAq
ICAgICB0aGVuIHNwZWNpYWwgYXR0cmlidXRlICJvcGVuIiB3aWxsIGJlIHNldCBvbiB0aGUgZWxl
bWVudAorICovCisKK3ZhciBuZ0F0dHJpYnV0ZUFsaWFzRGlyZWN0aXZlcyA9IHt9OworCisvLyBi
b29sZWFuIGF0dHJzIGFyZSBldmFsdWF0ZWQKK2ZvckVhY2goQk9PTEVBTl9BVFRSLCBmdW5jdGlv
bihwcm9wTmFtZSwgYXR0ck5hbWUpIHsKKyAgLy8gYmluZGluZyB0byBtdWx0aXBsZSBpcyBub3Qg
c3VwcG9ydGVkCisgIGlmIChwcm9wTmFtZSA9PSAibXVsdGlwbGUiKSByZXR1cm47CisKKyAgZnVu
Y3Rpb24gZGVmYXVsdExpbmtGbihzY29wZSwgZWxlbWVudCwgYXR0cikgeworICAgIHNjb3BlLiR3
YXRjaChhdHRyW25vcm1hbGl6ZWRdLCBmdW5jdGlvbiBuZ0Jvb2xlYW5BdHRyV2F0Y2hBY3Rpb24o
dmFsdWUpIHsKKyAgICAgIGF0dHIuJHNldChhdHRyTmFtZSwgISF2YWx1ZSk7CisgICAgfSk7Cisg
IH0KKworICB2YXIgbm9ybWFsaXplZCA9IGRpcmVjdGl2ZU5vcm1hbGl6ZSgnbmctJyArIGF0dHJO
YW1lKTsKKyAgdmFyIGxpbmtGbiA9IGRlZmF1bHRMaW5rRm47CisKKyAgaWYgKHByb3BOYW1lID09
PSAnY2hlY2tlZCcpIHsKKyAgICBsaW5rRm4gPSBmdW5jdGlvbihzY29wZSwgZWxlbWVudCwgYXR0
cikgeworICAgICAgLy8gZW5zdXJpbmcgbmdDaGVja2VkIGRvZXNuJ3QgaW50ZXJmZXJlIHdpdGgg
bmdNb2RlbCB3aGVuIGJvdGggYXJlIHNldCBvbiB0aGUgc2FtZSBpbnB1dAorICAgICAgaWYgKGF0
dHIubmdNb2RlbCAhPT0gYXR0cltub3JtYWxpemVkXSkgeworICAgICAgICBkZWZhdWx0TGlua0Zu
KHNjb3BlLCBlbGVtZW50LCBhdHRyKTsKKyAgICAgIH0KKyAgICB9OworICB9CisKKyAgbmdBdHRy
aWJ1dGVBbGlhc0RpcmVjdGl2ZXNbbm9ybWFsaXplZF0gPSBmdW5jdGlvbigpIHsKKyAgICByZXR1
cm4geworICAgICAgcmVzdHJpY3Q6ICdBJywKKyAgICAgIHByaW9yaXR5OiAxMDAsCisgICAgICBs
aW5rOiBsaW5rRm4KKyAgICB9OworICB9OworfSk7CisKKy8vIGFsaWFzZWQgaW5wdXQgYXR0cnMg
YXJlIGV2YWx1YXRlZAorZm9yRWFjaChBTElBU0VEX0FUVFIsIGZ1bmN0aW9uKGh0bWxBdHRyLCBu
Z0F0dHIpIHsKKyAgbmdBdHRyaWJ1dGVBbGlhc0RpcmVjdGl2ZXNbbmdBdHRyXSA9IGZ1bmN0aW9u
KCkgeworICAgIHJldHVybiB7CisgICAgICBwcmlvcml0eTogMTAwLAorICAgICAgbGluazogZnVu
Y3Rpb24oc2NvcGUsIGVsZW1lbnQsIGF0dHIpIHsKKyAgICAgICAgLy9zcGVjaWFsIGNhc2UgbmdQ
YXR0ZXJuIHdoZW4gYSBsaXRlcmFsIHJlZ3VsYXIgZXhwcmVzc2lvbiB2YWx1ZQorICAgICAgICAv
L2lzIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gKHRoaXMgd2F5IHdlIGRvbid0IGhhdmUgdG8gd2F0
Y2ggYW55dGhpbmcpLgorICAgICAgICBpZiAobmdBdHRyID09PSAibmdQYXR0ZXJuIiAmJiBhdHRy
Lm5nUGF0dGVybi5jaGFyQXQoMCkgPT0gIi8iKSB7CisgICAgICAgICAgdmFyIG1hdGNoID0gYXR0
ci5uZ1BhdHRlcm4ubWF0Y2goUkVHRVhfU1RSSU5HX1JFR0VYUCk7CisgICAgICAgICAgaWYgKG1h
dGNoKSB7CisgICAgICAgICAgICBhdHRyLiRzZXQoIm5nUGF0dGVybiIsIG5ldyBSZWdFeHAobWF0
Y2hbMV0sIG1hdGNoWzJdKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgfQorICAg
ICAgICB9CisKKyAgICAgICAgc2NvcGUuJHdhdGNoKGF0dHJbbmdBdHRyXSwgZnVuY3Rpb24gbmdB
dHRyQWxpYXNXYXRjaEFjdGlvbih2YWx1ZSkgeworICAgICAgICAgIGF0dHIuJHNldChuZ0F0dHIs
IHZhbHVlKTsKKyAgICAgICAgfSk7CisgICAgICB9CisgICAgfTsKKyAgfTsKK30pOworCisvLyBu
Zy1zcmMsIG5nLXNyY3NldCwgbmctaHJlZiBhcmUgaW50ZXJwb2xhdGVkCitmb3JFYWNoKFsnc3Jj
JywgJ3NyY3NldCcsICdocmVmJ10sIGZ1bmN0aW9uKGF0dHJOYW1lKSB7CisgIHZhciBub3JtYWxp
emVkID0gZGlyZWN0aXZlTm9ybWFsaXplKCduZy0nICsgYXR0ck5hbWUpOworICBuZ0F0dHJpYnV0
ZUFsaWFzRGlyZWN0aXZlc1tub3JtYWxpemVkXSA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiB7
CisgICAgICBwcmlvcml0eTogOTksIC8vIGl0IG5lZWRzIHRvIHJ1biBhZnRlciB0aGUgYXR0cmli
dXRlcyBhcmUgaW50ZXJwb2xhdGVkCisgICAgICBsaW5rOiBmdW5jdGlvbihzY29wZSwgZWxlbWVu
dCwgYXR0cikgeworICAgICAgICB2YXIgcHJvcE5hbWUgPSBhdHRyTmFtZSwKKyAgICAgICAgICAg
IG5hbWUgPSBhdHRyTmFtZTsKKworICAgICAgICBpZiAoYXR0ck5hbWUgPT09ICdocmVmJyAmJgor
ICAgICAgICAgICAgdG9TdHJpbmcuY2FsbChlbGVtZW50LnByb3AoJ2hyZWYnKSkgPT09ICdbb2Jq
ZWN0IFNWR0FuaW1hdGVkU3RyaW5nXScpIHsKKyAgICAgICAgICBuYW1lID0gJ3hsaW5rSHJlZic7
CisgICAgICAgICAgYXR0ci4kYXR0cltuYW1lXSA9ICd4bGluazpocmVmJzsKKyAgICAgICAgICBw
cm9wTmFtZSA9IG51bGw7CisgICAgICAgIH0KKworICAgICAgICBhdHRyLiRvYnNlcnZlKG5vcm1h
bGl6ZWQsIGZ1bmN0aW9uKHZhbHVlKSB7CisgICAgICAgICAgaWYgKCF2YWx1ZSkgeworICAgICAg
ICAgICAgaWYgKGF0dHJOYW1lID09PSAnaHJlZicpIHsKKyAgICAgICAgICAgICAgYXR0ci4kc2V0
KG5hbWUsIG51bGwpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgIH0KKworICAgICAgICAgIGF0dHIuJHNldChuYW1lLCB2YWx1ZSk7CisKKyAgICAgICAgICAv
LyBvbiBJRSwgaWYgIm5nOnNyYyIgZGlyZWN0aXZlIGRlY2xhcmF0aW9uIGlzIHVzZWQgYW5kICJz
cmMiIGF0dHJpYnV0ZSBkb2Vzbid0IGV4aXN0CisgICAgICAgICAgLy8gdGhlbiBjYWxsaW5nIGVs
ZW1lbnQuc2V0QXR0cmlidXRlKCdzcmMnLCAnZm9vJykgZG9lc24ndCBkbyBhbnl0aGluZywgc28g
d2UgbmVlZAorICAgICAgICAgIC8vIHRvIHNldCB0aGUgcHJvcGVydHkgYXMgd2VsbCB0byBhY2hp
ZXZlIHRoZSBkZXNpcmVkIGVmZmVjdC4KKyAgICAgICAgICAvLyB3ZSB1c2UgYXR0clthdHRyTmFt
ZV0gdmFsdWUgc2luY2UgJHNldCBjYW4gc2FuaXRpemUgdGhlIHVybC4KKyAgICAgICAgICBpZiAo
bXNpZSAmJiBwcm9wTmFtZSkgZWxlbWVudC5wcm9wKHByb3BOYW1lLCBhdHRyW25hbWVdKTsKKyAg
ICAgICAgfSk7CisgICAgICB9CisgICAgfTsKKyAgfTsKK30pOworCisvKiBnbG9iYWwgLW51bGxG
b3JtQ3RybCwgLVNVQk1JVFRFRF9DTEFTUywgYWRkU2V0VmFsaWRpdHlNZXRob2Q6IHRydWUKKyAq
LwordmFyIG51bGxGb3JtQ3RybCA9IHsKKyAgJGFkZENvbnRyb2w6IG5vb3AsCisgICQkcmVuYW1l
Q29udHJvbDogbnVsbEZvcm1SZW5hbWVDb250cm9sLAorICAkcmVtb3ZlQ29udHJvbDogbm9vcCwK
KyAgJHNldFZhbGlkaXR5OiBub29wLAorICAkc2V0RGlydHk6IG5vb3AsCisgICRzZXRQcmlzdGlu
ZTogbm9vcCwKKyAgJHNldFN1Ym1pdHRlZDogbm9vcAorfSwKK1NVQk1JVFRFRF9DTEFTUyA9ICdu
Zy1zdWJtaXR0ZWQnOworCitmdW5jdGlvbiBudWxsRm9ybVJlbmFtZUNvbnRyb2woY29udHJvbCwg
bmFtZSkgeworICBjb250cm9sLiRuYW1lID0gbmFtZTsKK30KKworLyoqCisgKiBAbmdkb2MgdHlw
ZQorICogQG5hbWUgZm9ybS5Gb3JtQ29udHJvbGxlcgorICoKKyAqIEBwcm9wZXJ0eSB7Ym9vbGVh
bn0gJHByaXN0aW5lIFRydWUgaWYgdXNlciBoYXMgbm90IGludGVyYWN0ZWQgd2l0aCB0aGUgZm9y
bSB5ZXQuCisgKiBAcHJvcGVydHkge2Jvb2xlYW59ICRkaXJ0eSBUcnVlIGlmIHVzZXIgaGFzIGFs
cmVhZHkgaW50ZXJhY3RlZCB3aXRoIHRoZSBmb3JtLgorICogQHByb3BlcnR5IHtib29sZWFufSAk
dmFsaWQgVHJ1ZSBpZiBhbGwgb2YgdGhlIGNvbnRhaW5pbmcgZm9ybXMgYW5kIGNvbnRyb2xzIGFy
ZSB2YWxpZC4KKyAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gJGludmFsaWQgVHJ1ZSBpZiBhdCBsZWFz
dCBvbmUgY29udGFpbmluZyBjb250cm9sIG9yIGZvcm0gaXMgaW52YWxpZC4KKyAqIEBwcm9wZXJ0
eSB7Ym9vbGVhbn0gJHN1Ym1pdHRlZCBUcnVlIGlmIHVzZXIgaGFzIHN1Ym1pdHRlZCB0aGUgZm9y
bSBldmVuIGlmIGl0cyBpbnZhbGlkLgorICoKKyAqIEBwcm9wZXJ0eSB7T2JqZWN0fSAkZXJyb3Ig
SXMgYW4gb2JqZWN0IGhhc2gsIGNvbnRhaW5pbmcgcmVmZXJlbmNlcyB0byBjb250cm9scyBvcgor
ICogIGZvcm1zIHdpdGggZmFpbGluZyB2YWxpZGF0b3JzLCB3aGVyZToKKyAqCisgKiAgLSBrZXlz
IGFyZSB2YWxpZGF0aW9uIHRva2VucyAoZXJyb3IgbmFtZXMpLAorICogIC0gdmFsdWVzIGFyZSBh
cnJheXMgb2YgY29udHJvbHMgb3IgZm9ybXMgdGhhdCBoYXZlIGEgZmFpbGluZyB2YWxpZGF0b3Ig
Zm9yIGdpdmVuIGVycm9yIG5hbWUuCisgKgorICogIEJ1aWx0LWluIHZhbGlkYXRpb24gdG9rZW5z
OgorICoKKyAqICAtIGBlbWFpbGAKKyAqICAtIGBtYXhgCisgKiAgLSBgbWF4bGVuZ3RoYAorICog
IC0gYG1pbmAKKyAqICAtIGBtaW5sZW5ndGhgCisgKiAgLSBgbnVtYmVyYAorICogIC0gYHBhdHRl
cm5gCisgKiAgLSBgcmVxdWlyZWRgCisgKiAgLSBgdXJsYAorICogIC0gYGRhdGVgCisgKiAgLSBg
ZGF0ZXRpbWVsb2NhbGAKKyAqICAtIGB0aW1lYAorICogIC0gYHdlZWtgCisgKiAgLSBgbW9udGhg
CisgKgorICogQGRlc2NyaXB0aW9uCisgKiBgRm9ybUNvbnRyb2xsZXJgIGtlZXBzIHRyYWNrIG9m
IGFsbCBpdHMgY29udHJvbHMgYW5kIG5lc3RlZCBmb3JtcyBhcyB3ZWxsIGFzIHRoZSBzdGF0ZSBv
ZiB0aGVtLAorICogc3VjaCBhcyBiZWluZyB2YWxpZC9pbnZhbGlkIG9yIGRpcnR5L3ByaXN0aW5l
LgorICoKKyAqIEVhY2gge0BsaW5rIG5nLmRpcmVjdGl2ZTpmb3JtIGZvcm19IGRpcmVjdGl2ZSBj
cmVhdGVzIGFuIGluc3RhbmNlCisgKiBvZiBgRm9ybUNvbnRyb2xsZXJgLgorICoKKyAqLworLy9h
c2tzIGZvciAkc2NvcGUgdG8gZm9vbCB0aGUgQkMgY29udHJvbGxlciBtb2R1bGUKK0Zvcm1Db250
cm9sbGVyLiRpbmplY3QgPSBbJyRlbGVtZW50JywgJyRhdHRycycsICckc2NvcGUnLCAnJGFuaW1h
dGUnLCAnJGludGVycG9sYXRlJ107CitmdW5jdGlvbiBGb3JtQ29udHJvbGxlcihlbGVtZW50LCBh
dHRycywgJHNjb3BlLCAkYW5pbWF0ZSwgJGludGVycG9sYXRlKSB7CisgIHZhciBmb3JtID0gdGhp
cywKKyAgICAgIGNvbnRyb2xzID0gW107CisKKyAgdmFyIHBhcmVudEZvcm0gPSBmb3JtLiQkcGFy
ZW50Rm9ybSA9IGVsZW1lbnQucGFyZW50KCkuY29udHJvbGxlcignZm9ybScpIHx8IG51bGxGb3Jt
Q3RybDsKKworICAvLyBpbml0IHN0YXRlCisgIGZvcm0uJGVycm9yID0ge307CisgIGZvcm0uJCRz
dWNjZXNzID0ge307CisgIGZvcm0uJHBlbmRpbmcgPSB1bmRlZmluZWQ7CisgIGZvcm0uJG5hbWUg
PSAkaW50ZXJwb2xhdGUoYXR0cnMubmFtZSB8fCBhdHRycy5uZ0Zvcm0gfHwgJycpKCRzY29wZSk7
CisgIGZvcm0uJGRpcnR5ID0gZmFsc2U7CisgIGZvcm0uJHByaXN0aW5lID0gdHJ1ZTsKKyAgZm9y
bS4kdmFsaWQgPSB0cnVlOworICBmb3JtLiRpbnZhbGlkID0gZmFsc2U7CisgIGZvcm0uJHN1Ym1p
dHRlZCA9IGZhbHNlOworCisgIHBhcmVudEZvcm0uJGFkZENvbnRyb2woZm9ybSk7CisKKyAgLyoq
CisgICAqIEBuZ2RvYyBtZXRob2QKKyAgICogQG5hbWUgZm9ybS5Gb3JtQ29udHJvbGxlciMkcm9s
bGJhY2tWaWV3VmFsdWUKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uCisgICAqIFJvbGxiYWNrIGFs
bCBmb3JtIGNvbnRyb2xzIHBlbmRpbmcgdXBkYXRlcyB0byB0aGUgYCRtb2RlbFZhbHVlYC4KKyAg
ICoKKyAgICogVXBkYXRlcyBtYXkgYmUgcGVuZGluZyBieSBhIGRlYm91bmNlZCBldmVudCBvciBi
ZWNhdXNlIHRoZSBpbnB1dCBpcyB3YWl0aW5nIGZvciBhIHNvbWUgZnV0dXJlCisgICAqIGV2ZW50
IGRlZmluZWQgaW4gYG5nLW1vZGVsLW9wdGlvbnNgLiBUaGlzIG1ldGhvZCBpcyB0eXBpY2FsbHkg
bmVlZGVkIGJ5IHRoZSByZXNldCBidXR0b24gb2YKKyAgICogYSBmb3JtIHRoYXQgdXNlcyBgbmct
bW9kZWwtb3B0aW9uc2AgdG8gcGVuZCB1cGRhdGVzLgorICAgKi8KKyAgZm9ybS4kcm9sbGJhY2tW
aWV3VmFsdWUgPSBmdW5jdGlvbigpIHsKKyAgICBmb3JFYWNoKGNvbnRyb2xzLCBmdW5jdGlvbihj
b250cm9sKSB7CisgICAgICBjb250cm9sLiRyb2xsYmFja1ZpZXdWYWx1ZSgpOworICAgIH0pOwor
ICB9OworCisgIC8qKgorICAgKiBAbmdkb2MgbWV0aG9kCisgICAqIEBuYW1lIGZvcm0uRm9ybUNv
bnRyb2xsZXIjJGNvbW1pdFZpZXdWYWx1ZQorICAgKgorICAgKiBAZGVzY3JpcHRpb24KKyAgICog
Q29tbWl0IGFsbCBmb3JtIGNvbnRyb2xzIHBlbmRpbmcgdXBkYXRlcyB0byB0aGUgYCRtb2RlbFZh
bHVlYC4KKyAgICoKKyAgICogVXBkYXRlcyBtYXkgYmUgcGVuZGluZyBieSBhIGRlYm91bmNlZCBl
dmVudCBvciBiZWNhdXNlIHRoZSBpbnB1dCBpcyB3YWl0aW5nIGZvciBhIHNvbWUgZnV0dXJlCisg
ICAqIGV2ZW50IGRlZmluZWQgaW4gYG5nLW1vZGVsLW9wdGlvbnNgLiBUaGlzIG1ldGhvZCBpcyBy
YXJlbHkgbmVlZGVkIGFzIGBOZ01vZGVsQ29udHJvbGxlcmAKKyAgICogdXN1YWxseSBoYW5kbGVz
IGNhbGxpbmcgdGhpcyBpbiByZXNwb25zZSB0byBpbnB1dCBldmVudHMuCisgICAqLworICBmb3Jt
LiRjb21taXRWaWV3VmFsdWUgPSBmdW5jdGlvbigpIHsKKyAgICBmb3JFYWNoKGNvbnRyb2xzLCBm
dW5jdGlvbihjb250cm9sKSB7CisgICAgICBjb250cm9sLiRjb21taXRWaWV3VmFsdWUoKTsKKyAg
ICB9KTsKKyAgfTsKKworICAvKioKKyAgICogQG5nZG9jIG1ldGhvZAorICAgKiBAbmFtZSBmb3Jt
LkZvcm1Db250cm9sbGVyIyRhZGRDb250cm9sCisgICAqCisgICAqIEBkZXNjcmlwdGlvbgorICAg
KiBSZWdpc3RlciBhIGNvbnRyb2wgd2l0aCB0aGUgZm9ybS4KKyAgICoKKyAgICogSW5wdXQgZWxl
bWVudHMgdXNpbmcgbmdNb2RlbENvbnRyb2xsZXIgZG8gdGhpcyBhdXRvbWF0aWNhbGx5IHdoZW4g
dGhleSBhcmUgbGlua2VkLgorICAgKi8KKyAgZm9ybS4kYWRkQ29udHJvbCA9IGZ1bmN0aW9uKGNv
bnRyb2wpIHsKKyAgICAvLyBCcmVha2luZyBjaGFuZ2UgLSBiZWZvcmUsIGlucHV0cyB3aG9zZSBu
YW1lIHdhcyAiaGFzT3duUHJvcGVydHkiIHdlcmUgcXVpZXRseSBpZ25vcmVkCisgICAgLy8gYW5k
IG5vdCBhZGRlZCB0byB0aGUgc2NvcGUuICBOb3cgd2UgdGhyb3cgYW4gZXJyb3IuCisgICAgYXNz
ZXJ0Tm90SGFzT3duUHJvcGVydHkoY29udHJvbC4kbmFtZSwgJ2lucHV0Jyk7CisgICAgY29udHJv
bHMucHVzaChjb250cm9sKTsKKworICAgIGlmIChjb250cm9sLiRuYW1lKSB7CisgICAgICBmb3Jt
W2NvbnRyb2wuJG5hbWVdID0gY29udHJvbDsKKyAgICB9CisgIH07CisKKyAgLy8gUHJpdmF0ZSBB
UEk6IHJlbmFtZSBhIGZvcm0gY29udHJvbAorICBmb3JtLiQkcmVuYW1lQ29udHJvbCA9IGZ1bmN0
aW9uKGNvbnRyb2wsIG5ld05hbWUpIHsKKyAgICB2YXIgb2xkTmFtZSA9IGNvbnRyb2wuJG5hbWU7
CisKKyAgICBpZiAoZm9ybVtvbGROYW1lXSA9PT0gY29udHJvbCkgeworICAgICAgZGVsZXRlIGZv
cm1bb2xkTmFtZV07CisgICAgfQorICAgIGZvcm1bbmV3TmFtZV0gPSBjb250cm9sOworICAgIGNv
bnRyb2wuJG5hbWUgPSBuZXdOYW1lOworICB9OworCisgIC8qKgorICAgKiBAbmdkb2MgbWV0aG9k
CisgICAqIEBuYW1lIGZvcm0uRm9ybUNvbnRyb2xsZXIjJHJlbW92ZUNvbnRyb2wKKyAgICoKKyAg
ICogQGRlc2NyaXB0aW9uCisgICAqIERlcmVnaXN0ZXIgYSBjb250cm9sIGZyb20gdGhlIGZvcm0u
CisgICAqCisgICAqIElucHV0IGVsZW1lbnRzIHVzaW5nIG5nTW9kZWxDb250cm9sbGVyIGRvIHRo
aXMgYXV0b21hdGljYWxseSB3aGVuIHRoZXkgYXJlIGRlc3Ryb3llZC4KKyAgICovCisgIGZvcm0u
JHJlbW92ZUNvbnRyb2wgPSBmdW5jdGlvbihjb250cm9sKSB7CisgICAgaWYgKGNvbnRyb2wuJG5h
bWUgJiYgZm9ybVtjb250cm9sLiRuYW1lXSA9PT0gY29udHJvbCkgeworICAgICAgZGVsZXRlIGZv
cm1bY29udHJvbC4kbmFtZV07CisgICAgfQorICAgIGZvckVhY2goZm9ybS4kcGVuZGluZywgZnVu
Y3Rpb24odmFsdWUsIG5hbWUpIHsKKyAgICAgIGZvcm0uJHNldFZhbGlkaXR5KG5hbWUsIG51bGws
IGNvbnRyb2wpOworICAgIH0pOworICAgIGZvckVhY2goZm9ybS4kZXJyb3IsIGZ1bmN0aW9uKHZh
bHVlLCBuYW1lKSB7CisgICAgICBmb3JtLiRzZXRWYWxpZGl0eShuYW1lLCBudWxsLCBjb250cm9s
KTsKKyAgICB9KTsKKyAgICBmb3JFYWNoKGZvcm0uJCRzdWNjZXNzLCBmdW5jdGlvbih2YWx1ZSwg
bmFtZSkgeworICAgICAgZm9ybS4kc2V0VmFsaWRpdHkobmFtZSwgbnVsbCwgY29udHJvbCk7Cisg
ICAgfSk7CisKKyAgICBhcnJheVJlbW92ZShjb250cm9scywgY29udHJvbCk7CisgIH07CisKKwor
ICAvKioKKyAgICogQG5nZG9jIG1ldGhvZAorICAgKiBAbmFtZSBmb3JtLkZvcm1Db250cm9sbGVy
IyRzZXRWYWxpZGl0eQorICAgKgorICAgKiBAZGVzY3JpcHRpb24KKyAgICogU2V0cyB0aGUgdmFs
aWRpdHkgb2YgYSBmb3JtIGNvbnRyb2wuCisgICAqCisgICAqIFRoaXMgbWV0aG9kIHdpbGwgYWxz
byBwcm9wYWdhdGUgdG8gcGFyZW50IGZvcm1zLgorICAgKi8KKyAgYWRkU2V0VmFsaWRpdHlNZXRo
b2QoeworICAgIGN0cmw6IHRoaXMsCisgICAgJGVsZW1lbnQ6IGVsZW1lbnQsCisgICAgc2V0OiBm
dW5jdGlvbihvYmplY3QsIHByb3BlcnR5LCBjb250cm9sbGVyKSB7CisgICAgICB2YXIgbGlzdCA9
IG9iamVjdFtwcm9wZXJ0eV07CisgICAgICBpZiAoIWxpc3QpIHsKKyAgICAgICAgb2JqZWN0W3By
b3BlcnR5XSA9IFtjb250cm9sbGVyXTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHZhciBpbmRl
eCA9IGxpc3QuaW5kZXhPZihjb250cm9sbGVyKTsKKyAgICAgICAgaWYgKGluZGV4ID09PSAtMSkg
eworICAgICAgICAgIGxpc3QucHVzaChjb250cm9sbGVyKTsKKyAgICAgICAgfQorICAgICAgfQor
ICAgIH0sCisgICAgdW5zZXQ6IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHksIGNvbnRyb2xsZXIp
IHsKKyAgICAgIHZhciBsaXN0ID0gb2JqZWN0W3Byb3BlcnR5XTsKKyAgICAgIGlmICghbGlzdCkg
eworICAgICAgICByZXR1cm47CisgICAgICB9CisgICAgICBhcnJheVJlbW92ZShsaXN0LCBjb250
cm9sbGVyKTsKKyAgICAgIGlmIChsaXN0Lmxlbmd0aCA9PT0gMCkgeworICAgICAgICBkZWxldGUg
b2JqZWN0W3Byb3BlcnR5XTsKKyAgICAgIH0KKyAgICB9LAorICAgIHBhcmVudEZvcm06IHBhcmVu
dEZvcm0sCisgICAgJGFuaW1hdGU6ICRhbmltYXRlCisgIH0pOworCisgIC8qKgorICAgKiBAbmdk
b2MgbWV0aG9kCisgICAqIEBuYW1lIGZvcm0uRm9ybUNvbnRyb2xsZXIjJHNldERpcnR5CisgICAq
CisgICAqIEBkZXNjcmlwdGlvbgorICAgKiBTZXRzIHRoZSBmb3JtIHRvIGEgZGlydHkgc3RhdGUu
CisgICAqCisgICAqIFRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQgdG8gYWRkIHRoZSAnbmctZGly
dHknIGNsYXNzIGFuZCBzZXQgdGhlIGZvcm0gdG8gYSBkaXJ0eQorICAgKiBzdGF0ZSAobmctZGly
dHkgY2xhc3MpLiBUaGlzIG1ldGhvZCB3aWxsIGFsc28gcHJvcGFnYXRlIHRvIHBhcmVudCBmb3Jt
cy4KKyAgICovCisgIGZvcm0uJHNldERpcnR5ID0gZnVuY3Rpb24oKSB7CisgICAgJGFuaW1hdGUu
cmVtb3ZlQ2xhc3MoZWxlbWVudCwgUFJJU1RJTkVfQ0xBU1MpOworICAgICRhbmltYXRlLmFkZENs
YXNzKGVsZW1lbnQsIERJUlRZX0NMQVNTKTsKKyAgICBmb3JtLiRkaXJ0eSA9IHRydWU7CisgICAg
Zm9ybS4kcHJpc3RpbmUgPSBmYWxzZTsKKyAgICBwYXJlbnRGb3JtLiRzZXREaXJ0eSgpOworICB9
OworCisgIC8qKgorICAgKiBAbmdkb2MgbWV0aG9kCisgICAqIEBuYW1lIGZvcm0uRm9ybUNvbnRy
b2xsZXIjJHNldFByaXN0aW5lCisgICAqCisgICAqIEBkZXNjcmlwdGlvbgorICAgKiBTZXRzIHRo
ZSBmb3JtIHRvIGl0cyBwcmlzdGluZSBzdGF0ZS4KKyAgICoKKyAgICogVGhpcyBtZXRob2QgY2Fu
IGJlIGNhbGxlZCB0byByZW1vdmUgdGhlICduZy1kaXJ0eScgY2xhc3MgYW5kIHNldCB0aGUgZm9y
bSB0byBpdHMgcHJpc3RpbmUKKyAgICogc3RhdGUgKG5nLXByaXN0aW5lIGNsYXNzKS4gVGhpcyBt
ZXRob2Qgd2lsbCBhbHNvIHByb3BhZ2F0ZSB0byBhbGwgdGhlIGNvbnRyb2xzIGNvbnRhaW5lZAor
ICAgKiBpbiB0aGlzIGZvcm0uCisgICAqCisgICAqIFNldHRpbmcgYSBmb3JtIGJhY2sgdG8gYSBw
cmlzdGluZSBzdGF0ZSBpcyBvZnRlbiB1c2VmdWwgd2hlbiB3ZSB3YW50IHRvICdyZXVzZScgYSBm
b3JtIGFmdGVyCisgICAqIHNhdmluZyBvciByZXNldHRpbmcgaXQuCisgICAqLworICBmb3JtLiRz
ZXRQcmlzdGluZSA9IGZ1bmN0aW9uKCkgeworICAgICRhbmltYXRlLnNldENsYXNzKGVsZW1lbnQs
IFBSSVNUSU5FX0NMQVNTLCBESVJUWV9DTEFTUyArICcgJyArIFNVQk1JVFRFRF9DTEFTUyk7Cisg
ICAgZm9ybS4kZGlydHkgPSBmYWxzZTsKKyAgICBmb3JtLiRwcmlzdGluZSA9IHRydWU7CisgICAg
Zm9ybS4kc3VibWl0dGVkID0gZmFsc2U7CisgICAgZm9yRWFjaChjb250cm9scywgZnVuY3Rpb24o
Y29udHJvbCkgeworICAgICAgY29udHJvbC4kc2V0UHJpc3RpbmUoKTsKKyAgICB9KTsKKyAgfTsK
KworICAvKioKKyAgICogQG5nZG9jIG1ldGhvZAorICAgKiBAbmFtZSBmb3JtLkZvcm1Db250cm9s
bGVyIyRzZXRVbnRvdWNoZWQKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uCisgICAqIFNldHMgdGhl
IGZvcm0gdG8gaXRzIHVudG91Y2hlZCBzdGF0ZS4KKyAgICoKKyAgICogVGhpcyBtZXRob2QgY2Fu
IGJlIGNhbGxlZCB0byByZW1vdmUgdGhlICduZy10b3VjaGVkJyBjbGFzcyBhbmQgc2V0IHRoZSBm
b3JtIGNvbnRyb2xzIHRvIHRoZWlyCisgICAqIHVudG91Y2hlZCBzdGF0ZSAobmctdW50b3VjaGVk
IGNsYXNzKS4KKyAgICoKKyAgICogU2V0dGluZyBhIGZvcm0gY29udHJvbHMgYmFjayB0byB0aGVp
ciB1bnRvdWNoZWQgc3RhdGUgaXMgb2Z0ZW4gdXNlZnVsIHdoZW4gc2V0dGluZyB0aGUgZm9ybQor
ICAgKiBiYWNrIHRvIGl0cyBwcmlzdGluZSBzdGF0ZS4KKyAgICovCisgIGZvcm0uJHNldFVudG91
Y2hlZCA9IGZ1bmN0aW9uKCkgeworICAgIGZvckVhY2goY29udHJvbHMsIGZ1bmN0aW9uKGNvbnRy
b2wpIHsKKyAgICAgIGNvbnRyb2wuJHNldFVudG91Y2hlZCgpOworICAgIH0pOworICB9OworCisg
IC8qKgorICAgKiBAbmdkb2MgbWV0aG9kCisgICAqIEBuYW1lIGZvcm0uRm9ybUNvbnRyb2xsZXIj
JHNldFN1Ym1pdHRlZAorICAgKgorICAgKiBAZGVzY3JpcHRpb24KKyAgICogU2V0cyB0aGUgZm9y
bSB0byBpdHMgc3VibWl0dGVkIHN0YXRlLgorICAgKi8KKyAgZm9ybS4kc2V0U3VibWl0dGVkID0g
ZnVuY3Rpb24oKSB7CisgICAgJGFuaW1hdGUuYWRkQ2xhc3MoZWxlbWVudCwgU1VCTUlUVEVEX0NM
QVNTKTsKKyAgICBmb3JtLiRzdWJtaXR0ZWQgPSB0cnVlOworICAgIHBhcmVudEZvcm0uJHNldFN1
Ym1pdHRlZCgpOworICB9OworfQorCisvKioKKyAqIEBuZ2RvYyBkaXJlY3RpdmUKKyAqIEBuYW1l
IG5nRm9ybQorICogQHJlc3RyaWN0IEVBQworICoKKyAqIEBkZXNjcmlwdGlvbgorICogTmVzdGFi
bGUgYWxpYXMgb2Yge0BsaW5rIG5nLmRpcmVjdGl2ZTpmb3JtIGBmb3JtYH0gZGlyZWN0aXZlLiBI
VE1MCisgKiBkb2VzIG5vdCBhbGxvdyBuZXN0aW5nIG9mIGZvcm0gZWxlbWVudHMuIEl0IGlzIHVz
ZWZ1bCB0byBuZXN0IGZvcm1zLCBmb3IgZXhhbXBsZSBpZiB0aGUgdmFsaWRpdHkgb2YgYQorICog
c3ViLWdyb3VwIG9mIGNvbnRyb2xzIG5lZWRzIHRvIGJlIGRldGVybWluZWQuCisgKgorICogTm90
ZTogdGhlIHB1cnBvc2Ugb2YgYG5nRm9ybWAgaXMgdG8gZ3JvdXAgY29udHJvbHMsCisgKiBidXQg
bm90IHRvIGJlIGEgcmVwbGFjZW1lbnQgZm9yIHRoZSBgPGZvcm0+YCB0YWcgd2l0aCBhbGwgb2Yg
aXRzIGNhcGFiaWxpdGllcworICogKGUuZy4gcG9zdGluZyB0byB0aGUgc2VydmVyLCAuLi4pLgor
ICoKKyAqIEBwYXJhbSB7c3RyaW5nPX0gbmdGb3JtfG5hbWUgTmFtZSBvZiB0aGUgZm9ybS4gSWYg
c3BlY2lmaWVkLCB0aGUgZm9ybSBjb250cm9sbGVyIHdpbGwgYmUgcHVibGlzaGVkIGludG8KKyAq
ICAgICAgICAgICAgICAgICAgICAgICByZWxhdGVkIHNjb3BlLCB1bmRlciB0aGlzIG5hbWUuCisg
KgorICovCisKKyAvKioKKyAqIEBuZ2RvYyBkaXJlY3RpdmUKKyAqIEBuYW1lIGZvcm0KKyAqIEBy
ZXN0cmljdCBFCisgKgorICogQGRlc2NyaXB0aW9uCisgKiBEaXJlY3RpdmUgdGhhdCBpbnN0YW50
aWF0ZXMKKyAqIHtAbGluayBmb3JtLkZvcm1Db250cm9sbGVyIEZvcm1Db250cm9sbGVyfS4KKyAq
CisgKiBJZiB0aGUgYG5hbWVgIGF0dHJpYnV0ZSBpcyBzcGVjaWZpZWQsIHRoZSBmb3JtIGNvbnRy
b2xsZXIgaXMgcHVibGlzaGVkIG9udG8gdGhlIGN1cnJlbnQgc2NvcGUgdW5kZXIKKyAqIHRoaXMg
bmFtZS4KKyAqCisgKiAjIEFsaWFzOiB7QGxpbmsgbmcuZGlyZWN0aXZlOm5nRm9ybSBgbmdGb3Jt
YH0KKyAqCisgKiBJbiBBbmd1bGFyLCBmb3JtcyBjYW4gYmUgbmVzdGVkLiBUaGlzIG1lYW5zIHRo
YXQgdGhlIG91dGVyIGZvcm0gaXMgdmFsaWQgd2hlbiBhbGwgb2YgdGhlIGNoaWxkCisgKiBmb3Jt
cyBhcmUgdmFsaWQgYXMgd2VsbC4gSG93ZXZlciwgYnJvd3NlcnMgZG8gbm90IGFsbG93IG5lc3Rp
bmcgb2YgYDxmb3JtPmAgZWxlbWVudHMsIHNvCisgKiBBbmd1bGFyIHByb3ZpZGVzIHRoZSB7QGxp
bmsgbmcuZGlyZWN0aXZlOm5nRm9ybSBgbmdGb3JtYH0gZGlyZWN0aXZlIHdoaWNoIGJlaGF2ZXMg
aWRlbnRpY2FsbHkgdG8KKyAqIGA8Zm9ybT5gIGJ1dCBjYW4gYmUgbmVzdGVkLiAgVGhpcyBhbGxv
d3MgeW91IHRvIGhhdmUgbmVzdGVkIGZvcm1zLCB3aGljaCBpcyB2ZXJ5IHVzZWZ1bCB3aGVuCisg
KiB1c2luZyBBbmd1bGFyIHZhbGlkYXRpb24gZGlyZWN0aXZlcyBpbiBmb3JtcyB0aGF0IGFyZSBk
eW5hbWljYWxseSBnZW5lcmF0ZWQgdXNpbmcgdGhlCisgKiB7QGxpbmsgbmcuZGlyZWN0aXZlOm5n
UmVwZWF0IGBuZ1JlcGVhdGB9IGRpcmVjdGl2ZS4gU2luY2UgeW91IGNhbm5vdCBkeW5hbWljYWxs
eSBnZW5lcmF0ZSB0aGUgYG5hbWVgCisgKiBhdHRyaWJ1dGUgb2YgaW5wdXQgZWxlbWVudHMgdXNp
bmcgaW50ZXJwb2xhdGlvbiwgeW91IGhhdmUgdG8gd3JhcCBlYWNoIHNldCBvZiByZXBlYXRlZCBp
bnB1dHMgaW4gYW4KKyAqIGBuZ0Zvcm1gIGRpcmVjdGl2ZSBhbmQgbmVzdCB0aGVzZSBpbiBhbiBv
dXRlciBgZm9ybWAgZWxlbWVudC4KKyAqCisgKgorICogIyBDU1MgY2xhc3NlcworICogIC0gYG5n
LXZhbGlkYCBpcyBzZXQgaWYgdGhlIGZvcm0gaXMgdmFsaWQuCisgKiAgLSBgbmctaW52YWxpZGAg
aXMgc2V0IGlmIHRoZSBmb3JtIGlzIGludmFsaWQuCisgKiAgLSBgbmctcHJpc3RpbmVgIGlzIHNl
dCBpZiB0aGUgZm9ybSBpcyBwcmlzdGluZS4KKyAqICAtIGBuZy1kaXJ0eWAgaXMgc2V0IGlmIHRo
ZSBmb3JtIGlzIGRpcnR5LgorICogIC0gYG5nLXN1Ym1pdHRlZGAgaXMgc2V0IGlmIHRoZSBmb3Jt
IHdhcyBzdWJtaXR0ZWQuCisgKgorICogS2VlcCBpbiBtaW5kIHRoYXQgbmdBbmltYXRlIGNhbiBk
ZXRlY3QgZWFjaCBvZiB0aGVzZSBjbGFzc2VzIHdoZW4gYWRkZWQgYW5kIHJlbW92ZWQuCisgKgor
ICoKKyAqICMgU3VibWl0dGluZyBhIGZvcm0gYW5kIHByZXZlbnRpbmcgdGhlIGRlZmF1bHQgYWN0
aW9uCisgKgorICogU2luY2UgdGhlIHJvbGUgb2YgZm9ybXMgaW4gY2xpZW50LXNpZGUgQW5ndWxh
ciBhcHBsaWNhdGlvbnMgaXMgZGlmZmVyZW50IHRoYW4gaW4gY2xhc3NpY2FsCisgKiByb3VuZHRy
aXAgYXBwcywgaXQgaXMgZGVzaXJhYmxlIGZvciB0aGUgYnJvd3NlciBub3QgdG8gdHJhbnNsYXRl
IHRoZSBmb3JtIHN1Ym1pc3Npb24gaW50byBhIGZ1bGwKKyAqIHBhZ2UgcmVsb2FkIHRoYXQgc2Vu
ZHMgdGhlIGRhdGEgdG8gdGhlIHNlcnZlci4gSW5zdGVhZCBzb21lIGphdmFzY3JpcHQgbG9naWMg
c2hvdWxkIGJlIHRyaWdnZXJlZAorICogdG8gaGFuZGxlIHRoZSBmb3JtIHN1Ym1pc3Npb24gaW4g
YW4gYXBwbGljYXRpb24tc3BlY2lmaWMgd2F5LgorICoKKyAqIEZvciB0aGlzIHJlYXNvbiwgQW5n
dWxhciBwcmV2ZW50cyB0aGUgZGVmYXVsdCBhY3Rpb24gKGZvcm0gc3VibWlzc2lvbiB0byB0aGUg
c2VydmVyKSB1bmxlc3MgdGhlCisgKiBgPGZvcm0+YCBlbGVtZW50IGhhcyBhbiBgYWN0aW9uYCBh
dHRyaWJ1dGUgc3BlY2lmaWVkLgorICoKKyAqIFlvdSBjYW4gdXNlIG9uZSBvZiB0aGUgZm9sbG93
aW5nIHR3byB3YXlzIHRvIHNwZWNpZnkgd2hhdCBqYXZhc2NyaXB0IG1ldGhvZCBzaG91bGQgYmUg
Y2FsbGVkIHdoZW4KKyAqIGEgZm9ybSBpcyBzdWJtaXR0ZWQ6CisgKgorICogLSB7QGxpbmsgbmcu
ZGlyZWN0aXZlOm5nU3VibWl0IG5nU3VibWl0fSBkaXJlY3RpdmUgb24gdGhlIGZvcm0gZWxlbWVu
dAorICogLSB7QGxpbmsgbmcuZGlyZWN0aXZlOm5nQ2xpY2sgbmdDbGlja30gZGlyZWN0aXZlIG9u
IHRoZSBmaXJzdAorICAqICBidXR0b24gb3IgaW5wdXQgZmllbGQgb2YgdHlwZSBzdWJtaXQgKGlu
cHV0W3R5cGU9c3VibWl0XSkKKyAqCisgKiBUbyBwcmV2ZW50IGRvdWJsZSBleGVjdXRpb24gb2Yg
dGhlIGhhbmRsZXIsIHVzZSBvbmx5IG9uZSBvZiB0aGUge0BsaW5rIG5nLmRpcmVjdGl2ZTpuZ1N1
Ym1pdCBuZ1N1Ym1pdH0KKyAqIG9yIHtAbGluayBuZy5kaXJlY3RpdmU6bmdDbGljayBuZ0NsaWNr
fSBkaXJlY3RpdmVzLgorICogVGhpcyBpcyBiZWNhdXNlIG9mIHRoZSBmb2xsb3dpbmcgZm9ybSBz
dWJtaXNzaW9uIHJ1bGVzIGluIHRoZSBIVE1MIHNwZWNpZmljYXRpb246CisgKgorICogLSBJZiBh
IGZvcm0gaGFzIG9ubHkgb25lIGlucHV0IGZpZWxkIHRoZW4gaGl0dGluZyBlbnRlciBpbiB0aGlz
IGZpZWxkIHRyaWdnZXJzIGZvcm0gc3VibWl0CisgKiAoYG5nU3VibWl0YCkKKyAqIC0gaWYgYSBm
b3JtIGhhcyAyKyBpbnB1dCBmaWVsZHMgYW5kIG5vIGJ1dHRvbnMgb3IgaW5wdXRbdHlwZT1zdWJt
aXRdIHRoZW4gaGl0dGluZyBlbnRlcgorICogZG9lc24ndCB0cmlnZ2VyIHN1Ym1pdAorICogLSBp
ZiBhIGZvcm0gaGFzIG9uZSBvciBtb3JlIGlucHV0IGZpZWxkcyBhbmQgb25lIG9yIG1vcmUgYnV0
dG9ucyBvciBpbnB1dFt0eXBlPXN1Ym1pdF0gdGhlbgorICogaGl0dGluZyBlbnRlciBpbiBhbnkg
b2YgdGhlIGlucHV0IGZpZWxkcyB3aWxsIHRyaWdnZXIgdGhlIGNsaWNrIGhhbmRsZXIgb24gdGhl
ICpmaXJzdCogYnV0dG9uIG9yCisgKiBpbnB1dFt0eXBlPXN1Ym1pdF0gKGBuZ0NsaWNrYCkgKmFu
ZCogYSBzdWJtaXQgaGFuZGxlciBvbiB0aGUgZW5jbG9zaW5nIGZvcm0gKGBuZ1N1Ym1pdGApCisg
KgorICogQW55IHBlbmRpbmcgYG5nTW9kZWxPcHRpb25zYCBjaGFuZ2VzIHdpbGwgdGFrZSBwbGFj
ZSBpbW1lZGlhdGVseSB3aGVuIGFuIGVuY2xvc2luZyBmb3JtIGlzCisgKiBzdWJtaXR0ZWQuIE5v
dGUgdGhhdCBgbmdDbGlja2AgZXZlbnRzIHdpbGwgb2NjdXIgYmVmb3JlIHRoZSBtb2RlbCBpcyB1
cGRhdGVkLiBVc2UgYG5nU3VibWl0YAorICogdG8gaGF2ZSBhY2Nlc3MgdG8gdGhlIHVwZGF0ZWQg
bW9kZWwuCisgKgorICogIyMgQW5pbWF0aW9uIEhvb2tzCisgKgorICogQW5pbWF0aW9ucyBpbiBu
Z0Zvcm0gYXJlIHRyaWdnZXJlZCB3aGVuIGFueSBvZiB0aGUgYXNzb2NpYXRlZCBDU1MgY2xhc3Nl
cyBhcmUgYWRkZWQgYW5kIHJlbW92ZWQuCisgKiBUaGVzZSBjbGFzc2VzIGFyZTogYC5uZy1wcmlz
dGluZWAsIGAubmctZGlydHlgLCBgLm5nLWludmFsaWRgIGFuZCBgLm5nLXZhbGlkYCBhcyB3ZWxs
IGFzIGFueQorICogb3RoZXIgdmFsaWRhdGlvbnMgdGhhdCBhcmUgcGVyZm9ybWVkIHdpdGhpbiB0
aGUgZm9ybS4gQW5pbWF0aW9ucyBpbiBuZ0Zvcm0gYXJlIHNpbWlsYXIgdG8gaG93CisgKiB0aGV5
IHdvcmsgaW4gbmdDbGFzcyBhbmQgYW5pbWF0aW9ucyBjYW4gYmUgaG9va2VkIGludG8gdXNpbmcg
Q1NTIHRyYW5zaXRpb25zLCBrZXlmcmFtZXMgYXMgd2VsbAorICogYXMgSlMgYW5pbWF0aW9ucy4K
KyAqCisgKiBUaGUgZm9sbG93aW5nIGV4YW1wbGUgc2hvd3MgYSBzaW1wbGUgd2F5IHRvIHV0aWxp
emUgQ1NTIHRyYW5zaXRpb25zIHRvIHN0eWxlIGEgZm9ybSBlbGVtZW50CisgKiB0aGF0IGhhcyBi
ZWVuIHJlbmRlcmVkIGFzIGludmFsaWQgYWZ0ZXIgaXQgaGFzIGJlZW4gdmFsaWRhdGVkOgorICoK
KyAqIDxwcmU+CisgKiAvL2JlIHN1cmUgdG8gaW5jbHVkZSBuZ0FuaW1hdGUgYXMgYSBtb2R1bGUg
dG8gaG9vayBpbnRvIG1vcmUKKyAqIC8vYWR2YW5jZWQgYW5pbWF0aW9ucworICogLm15LWZvcm0g
eworICogICB0cmFuc2l0aW9uOjAuNXMgbGluZWFyIGFsbDsKKyAqICAgYmFja2dyb3VuZDogd2hp
dGU7CisgKiB9CisgKiAubXktZm9ybS5uZy1pbnZhbGlkIHsKKyAqICAgYmFja2dyb3VuZDogcmVk
OworICogICBjb2xvcjp3aGl0ZTsKKyAqIH0KKyAqIDwvcHJlPgorICoKKyAqIEBleGFtcGxlCisg
ICAgPGV4YW1wbGUgZGVwcz0iYW5ndWxhci1hbmltYXRlLmpzIiBhbmltYXRpb25zPSJ0cnVlIiBm
aXhCYXNlPSJ0cnVlIiBtb2R1bGU9ImZvcm1FeGFtcGxlIj4KKyAgICAgIDxmaWxlIG5hbWU9Imlu
ZGV4Lmh0bWwiPgorICAgICAgIDxzY3JpcHQ+CisgICAgICAgICBhbmd1bGFyLm1vZHVsZSgnZm9y
bUV4YW1wbGUnLCBbXSkKKyAgICAgICAgICAgLmNvbnRyb2xsZXIoJ0Zvcm1Db250cm9sbGVyJywg
Wyckc2NvcGUnLCBmdW5jdGlvbigkc2NvcGUpIHsKKyAgICAgICAgICAgICAkc2NvcGUudXNlclR5
cGUgPSAnZ3Vlc3QnOworICAgICAgICAgICB9XSk7CisgICAgICAgPC9zY3JpcHQ+CisgICAgICAg
PHN0eWxlPgorICAgICAgICAubXktZm9ybSB7CisgICAgICAgICAgLXdlYmtpdC10cmFuc2l0aW9u
OmFsbCBsaW5lYXIgMC41czsKKyAgICAgICAgICB0cmFuc2l0aW9uOmFsbCBsaW5lYXIgMC41czsK
KyAgICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKKyAgICAgICAgfQorICAgICAgICAu
bXktZm9ybS5uZy1pbnZhbGlkIHsKKyAgICAgICAgICBiYWNrZ3JvdW5kOiByZWQ7CisgICAgICAg
IH0KKyAgICAgICA8L3N0eWxlPgorICAgICAgIDxmb3JtIG5hbWU9Im15Rm9ybSIgbmctY29udHJv
bGxlcj0iRm9ybUNvbnRyb2xsZXIiIGNsYXNzPSJteS1mb3JtIj4KKyAgICAgICAgIHVzZXJUeXBl
OiA8aW5wdXQgbmFtZT0iaW5wdXQiIG5nLW1vZGVsPSJ1c2VyVHlwZSIgcmVxdWlyZWQ+CisgICAg
ICAgICA8c3BhbiBjbGFzcz0iZXJyb3IiIG5nLXNob3c9Im15Rm9ybS5pbnB1dC4kZXJyb3IucmVx
dWlyZWQiPlJlcXVpcmVkITwvc3Bhbj48YnI+CisgICAgICAgICA8Y29kZT51c2VyVHlwZSA9IHt7
dXNlclR5cGV9fTwvY29kZT48YnI+CisgICAgICAgICA8Y29kZT5teUZvcm0uaW5wdXQuJHZhbGlk
ID0ge3tteUZvcm0uaW5wdXQuJHZhbGlkfX08L2NvZGU+PGJyPgorICAgICAgICAgPGNvZGU+bXlG
b3JtLmlucHV0LiRlcnJvciA9IHt7bXlGb3JtLmlucHV0LiRlcnJvcn19PC9jb2RlPjxicj4KKyAg
ICAgICAgIDxjb2RlPm15Rm9ybS4kdmFsaWQgPSB7e215Rm9ybS4kdmFsaWR9fTwvY29kZT48YnI+
CisgICAgICAgICA8Y29kZT5teUZvcm0uJGVycm9yLnJlcXVpcmVkID0ge3shIW15Rm9ybS4kZXJy
b3IucmVxdWlyZWR9fTwvY29kZT48YnI+CisgICAgICAgIDwvZm9ybT4KKyAgICAgIDwvZmlsZT4K
KyAgICAgIDxmaWxlIG5hbWU9InByb3RyYWN0b3IuanMiIHR5cGU9InByb3RyYWN0b3IiPgorICAg
ICAgICBpdCgnc2hvdWxkIGluaXRpYWxpemUgdG8gbW9kZWwnLCBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICB2YXIgdXNlclR5cGUgPSBlbGVtZW50KGJ5LmJpbmRpbmcoJ3VzZXJUeXBlJykpOworICAg
ICAgICAgIHZhciB2YWxpZCA9IGVsZW1lbnQoYnkuYmluZGluZygnbXlGb3JtLmlucHV0LiR2YWxp
ZCcpKTsKKworICAgICAgICAgIGV4cGVjdCh1c2VyVHlwZS5nZXRUZXh0KCkpLnRvQ29udGFpbign
Z3Vlc3QnKTsKKyAgICAgICAgICBleHBlY3QodmFsaWQuZ2V0VGV4dCgpKS50b0NvbnRhaW4oJ3Ry
dWUnKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCBiZSBpbnZhbGlkIGlmIGVt
cHR5JywgZnVuY3Rpb24oKSB7CisgICAgICAgICAgdmFyIHVzZXJUeXBlID0gZWxlbWVudChieS5i
aW5kaW5nKCd1c2VyVHlwZScpKTsKKyAgICAgICAgICB2YXIgdmFsaWQgPSBlbGVtZW50KGJ5LmJp
bmRpbmcoJ215Rm9ybS5pbnB1dC4kdmFsaWQnKSk7CisgICAgICAgICAgdmFyIHVzZXJJbnB1dCA9
IGVsZW1lbnQoYnkubW9kZWwoJ3VzZXJUeXBlJykpOworCisgICAgICAgICAgdXNlcklucHV0LmNs
ZWFyKCk7CisgICAgICAgICAgdXNlcklucHV0LnNlbmRLZXlzKCcnKTsKKworICAgICAgICAgIGV4
cGVjdCh1c2VyVHlwZS5nZXRUZXh0KCkpLnRvRXF1YWwoJ3VzZXJUeXBlID0nKTsKKyAgICAgICAg
ICBleHBlY3QodmFsaWQuZ2V0VGV4dCgpKS50b0NvbnRhaW4oJ2ZhbHNlJyk7CisgICAgICAgIH0p
OworICAgICAgPC9maWxlPgorICAgIDwvZXhhbXBsZT4KKyAqCisgKiBAcGFyYW0ge3N0cmluZz19
IG5hbWUgTmFtZSBvZiB0aGUgZm9ybS4gSWYgc3BlY2lmaWVkLCB0aGUgZm9ybSBjb250cm9sbGVy
IHdpbGwgYmUgcHVibGlzaGVkIGludG8KKyAqICAgICAgICAgICAgICAgICAgICAgICByZWxhdGVk
IHNjb3BlLCB1bmRlciB0aGlzIG5hbWUuCisgKi8KK3ZhciBmb3JtRGlyZWN0aXZlRmFjdG9yeSA9
IGZ1bmN0aW9uKGlzTmdGb3JtKSB7CisgIHJldHVybiBbJyR0aW1lb3V0JywgZnVuY3Rpb24oJHRp
bWVvdXQpIHsKKyAgICB2YXIgZm9ybURpcmVjdGl2ZSA9IHsKKyAgICAgIG5hbWU6ICdmb3JtJywK
KyAgICAgIHJlc3RyaWN0OiBpc05nRm9ybSA/ICdFQUMnIDogJ0UnLAorICAgICAgY29udHJvbGxl
cjogRm9ybUNvbnRyb2xsZXIsCisgICAgICBjb21waWxlOiBmdW5jdGlvbiBuZ0Zvcm1Db21waWxl
KGZvcm1FbGVtZW50LCBhdHRyKSB7CisgICAgICAgIC8vIFNldHVwIGluaXRpYWwgc3RhdGUgb2Yg
dGhlIGNvbnRyb2wKKyAgICAgICAgZm9ybUVsZW1lbnQuYWRkQ2xhc3MoUFJJU1RJTkVfQ0xBU1Mp
LmFkZENsYXNzKFZBTElEX0NMQVNTKTsKKworICAgICAgICB2YXIgbmFtZUF0dHIgPSBhdHRyLm5h
bWUgPyAnbmFtZScgOiAoaXNOZ0Zvcm0gJiYgYXR0ci5uZ0Zvcm0gPyAnbmdGb3JtJyA6IGZhbHNl
KTsKKworICAgICAgICByZXR1cm4geworICAgICAgICAgIHByZTogZnVuY3Rpb24gbmdGb3JtUHJl
TGluayhzY29wZSwgZm9ybUVsZW1lbnQsIGF0dHIsIGNvbnRyb2xsZXIpIHsKKyAgICAgICAgICAg
IC8vIGlmIGBhY3Rpb25gIGF0dHIgaXMgbm90IHByZXNlbnQgb24gdGhlIGZvcm0sIHByZXZlbnQg
dGhlIGRlZmF1bHQgYWN0aW9uIChzdWJtaXNzaW9uKQorICAgICAgICAgICAgaWYgKCEoJ2FjdGlv
bicgaW4gYXR0cikpIHsKKyAgICAgICAgICAgICAgLy8gd2UgY2FuJ3QgdXNlIGpxIGV2ZW50cyBi
ZWNhdXNlIGlmIGEgZm9ybSBpcyBkZXN0cm95ZWQgZHVyaW5nIHN1Ym1pc3Npb24gdGhlIGRlZmF1
bHQKKyAgICAgICAgICAgICAgLy8gYWN0aW9uIGlzIG5vdCBwcmV2ZW50ZWQuIHNlZSAjMTIzOAor
ICAgICAgICAgICAgICAvLworICAgICAgICAgICAgICAvLyBJRSA5IGlzIG5vdCBhZmZlY3RlZCBi
ZWNhdXNlIGl0IGRvZXNuJ3QgZmlyZSBhIHN1Ym1pdCBldmVudCBhbmQgdHJ5IHRvIGRvIGEgZnVs
bAorICAgICAgICAgICAgICAvLyBwYWdlIHJlbG9hZCBpZiB0aGUgZm9ybSB3YXMgZGVzdHJveWVk
IGJ5IHN1Ym1pc3Npb24gb2YgdGhlIGZvcm0gdmlhIGEgY2xpY2sgaGFuZGxlcgorICAgICAgICAg
ICAgICAvLyBvbiBhIGJ1dHRvbiBpbiB0aGUgZm9ybS4gTG9va3MgbGlrZSBhbiBJRTkgc3BlY2lm
aWMgYnVnLgorICAgICAgICAgICAgICB2YXIgaGFuZGxlRm9ybVN1Ym1pc3Npb24gPSBmdW5jdGlv
bihldmVudCkgeworICAgICAgICAgICAgICAgIHNjb3BlLiRhcHBseShmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgICAgICAgIGNvbnRyb2xsZXIuJGNvbW1pdFZpZXdWYWx1ZSgpOworICAgICAgICAg
ICAgICAgICAgY29udHJvbGxlci4kc2V0U3VibWl0dGVkKCk7CisgICAgICAgICAgICAgICAgfSk7
CisKKyAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICAgICAg
ICB9OworCisgICAgICAgICAgICAgIGFkZEV2ZW50TGlzdGVuZXJGbihmb3JtRWxlbWVudFswXSwg
J3N1Ym1pdCcsIGhhbmRsZUZvcm1TdWJtaXNzaW9uKTsKKworICAgICAgICAgICAgICAvLyB1bnJl
Z2lzdGVyIHRoZSBwcmV2ZW50RGVmYXVsdCBsaXN0ZW5lciBzbyB0aGF0IHdlIGRvbid0IG5vdCBs
ZWFrIG1lbW9yeSBidXQgaW4gYQorICAgICAgICAgICAgICAvLyB3YXkgdGhhdCB3aWxsIGFjaGll
dmUgdGhlIHByZXZlbnRpb24gb2YgdGhlIGRlZmF1bHQgYWN0aW9uLgorICAgICAgICAgICAgICBm
b3JtRWxlbWVudC5vbignJGRlc3Ryb3knLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAk
dGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgIHJlbW92ZUV2ZW50TGlzdGVu
ZXJGbihmb3JtRWxlbWVudFswXSwgJ3N1Ym1pdCcsIGhhbmRsZUZvcm1TdWJtaXNzaW9uKTsKKyAg
ICAgICAgICAgICAgICB9LCAwLCBmYWxzZSk7CisgICAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICB2YXIgcGFyZW50Rm9ybUN0cmwgPSBjb250cm9sbGVyLiQkcGFy
ZW50Rm9ybTsKKworICAgICAgICAgICAgaWYgKG5hbWVBdHRyKSB7CisgICAgICAgICAgICAgIHNl
dHRlcihzY29wZSwgY29udHJvbGxlci4kbmFtZSwgY29udHJvbGxlciwgY29udHJvbGxlci4kbmFt
ZSk7CisgICAgICAgICAgICAgIGF0dHIuJG9ic2VydmUobmFtZUF0dHIsIGZ1bmN0aW9uKG5ld1Zh
bHVlKSB7CisgICAgICAgICAgICAgICAgaWYgKGNvbnRyb2xsZXIuJG5hbWUgPT09IG5ld1ZhbHVl
KSByZXR1cm47CisgICAgICAgICAgICAgICAgc2V0dGVyKHNjb3BlLCBjb250cm9sbGVyLiRuYW1l
LCB1bmRlZmluZWQsIGNvbnRyb2xsZXIuJG5hbWUpOworICAgICAgICAgICAgICAgIHBhcmVudEZv
cm1DdHJsLiQkcmVuYW1lQ29udHJvbChjb250cm9sbGVyLCBuZXdWYWx1ZSk7CisgICAgICAgICAg
ICAgICAgc2V0dGVyKHNjb3BlLCBjb250cm9sbGVyLiRuYW1lLCBjb250cm9sbGVyLCBjb250cm9s
bGVyLiRuYW1lKTsKKyAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBmb3JtRWxlbWVudC5vbignJGRlc3Ryb3knLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAg
cGFyZW50Rm9ybUN0cmwuJHJlbW92ZUNvbnRyb2woY29udHJvbGxlcik7CisgICAgICAgICAgICAg
IGlmIChuYW1lQXR0cikgeworICAgICAgICAgICAgICAgIHNldHRlcihzY29wZSwgYXR0cltuYW1l
QXR0cl0sIHVuZGVmaW5lZCwgY29udHJvbGxlci4kbmFtZSk7CisgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgZXh0ZW5kKGNvbnRyb2xsZXIsIG51bGxGb3JtQ3RybCk7IC8vc3RvcCBwcm9w
YWdhdGluZyBjaGlsZCBkZXN0cnVjdGlvbiBoYW5kbGVycyB1cHdhcmRzCisgICAgICAgICAgICB9
KTsKKyAgICAgICAgICB9CisgICAgICAgIH07CisgICAgICB9CisgICAgfTsKKworICAgIHJldHVy
biBmb3JtRGlyZWN0aXZlOworICB9XTsKK307CisKK3ZhciBmb3JtRGlyZWN0aXZlID0gZm9ybURp
cmVjdGl2ZUZhY3RvcnkoKTsKK3ZhciBuZ0Zvcm1EaXJlY3RpdmUgPSBmb3JtRGlyZWN0aXZlRmFj
dG9yeSh0cnVlKTsKKworLyogZ2xvYmFsIFZBTElEX0NMQVNTOiBmYWxzZSwKKyAgSU5WQUxJRF9D
TEFTUzogZmFsc2UsCisgIFBSSVNUSU5FX0NMQVNTOiBmYWxzZSwKKyAgRElSVFlfQ0xBU1M6IGZh
bHNlLAorICBVTlRPVUNIRURfQ0xBU1M6IGZhbHNlLAorICBUT1VDSEVEX0NMQVNTOiBmYWxzZSwK
KyAgJG5nTW9kZWxNaW5FcnI6IGZhbHNlLAorKi8KKworLy8gUmVnZXggY29kZSBpcyBvYnRhaW5l
ZCBmcm9tIFNPOiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zMTQzMDcwL2ph
dmFzY3JpcHQtcmVnZXgtaXNvLWRhdGV0aW1lI2Fuc3dlci0zMTQzMjMxCit2YXIgSVNPX0RBVEVf
UkVHRVhQID0gL1xkezR9LVswMV1cZC1bMC0zXVxkVFswLTJdXGQ6WzAtNV1cZDpbMC01XVxkXC5c
ZCsoWystXVswLTJdXGQ6WzAtNV1cZHxaKS87Cit2YXIgVVJMX1JFR0VYUCA9IC9eKGZ0cHxodHRw
fGh0dHBzKTpcL1wvKFx3Kzp7MCwxfVx3KkApPyhcUyspKDpbMC05XSspPyhcL3xcLyhbXHcjITou
Pys9JiVAIVwtXC9dKSk/JC87Cit2YXIgRU1BSUxfUkVHRVhQID0gL15bYS16MC05ISMkJSYnKitc
Lz0/Xl9ge3x9fi4tXStAW2EtejAtOV0oW2EtejAtOS1dKlthLXowLTldKT8oXC5bYS16MC05XShb
YS16MC05LV0qW2EtejAtOV0pPykqJC9pOwordmFyIE5VTUJFUl9SRUdFWFAgPSAvXlxzKihcLXxc
Kyk/KFxkK3woXGQqKFwuXGQqKSkpKFtlRV1bKy1dP1xkKyk/XHMqJC87Cit2YXIgREFURV9SRUdF
WFAgPSAvXihcZHs0fSktKFxkezJ9KS0oXGR7Mn0pJC87Cit2YXIgREFURVRJTUVMT0NBTF9SRUdF
WFAgPSAvXihcZHs0fSktKFxkXGQpLShcZFxkKVQoXGRcZCk6KFxkXGQpKD86OihcZFxkKShcLlxk
ezEsM30pPyk/JC87Cit2YXIgV0VFS19SRUdFWFAgPSAvXihcZHs0fSktVyhcZFxkKSQvOwordmFy
IE1PTlRIX1JFR0VYUCA9IC9eKFxkezR9KS0oXGRcZCkkLzsKK3ZhciBUSU1FX1JFR0VYUCA9IC9e
KFxkXGQpOihcZFxkKSg/OjooXGRcZCkoXC5cZHsxLDN9KT8pPyQvOworCit2YXIgaW5wdXRUeXBl
ID0geworCisgIC8qKgorICAgKiBAbmdkb2MgaW5wdXQKKyAgICogQG5hbWUgaW5wdXRbdGV4dF0K
KyAgICoKKyAgICogQGRlc2NyaXB0aW9uCisgICAqIFN0YW5kYXJkIEhUTUwgdGV4dCBpbnB1dCB3
aXRoIGFuZ3VsYXIgZGF0YSBiaW5kaW5nLCBpbmhlcml0ZWQgYnkgbW9zdCBvZiB0aGUgYGlucHV0
YCBlbGVtZW50cy4KKyAgICoKKyAgICoKKyAgICogQHBhcmFtIHtzdHJpbmd9IG5nTW9kZWwgQXNz
aWduYWJsZSBhbmd1bGFyIGV4cHJlc3Npb24gdG8gZGF0YS1iaW5kIHRvLgorICAgKiBAcGFyYW0g
e3N0cmluZz19IG5hbWUgUHJvcGVydHkgbmFtZSBvZiB0aGUgZm9ybSB1bmRlciB3aGljaCB0aGUg
Y29udHJvbCBpcyBwdWJsaXNoZWQuCisgICAqIEBwYXJhbSB7c3RyaW5nPX0gcmVxdWlyZWQgQWRk
cyBgcmVxdWlyZWRgIHZhbGlkYXRpb24gZXJyb3Iga2V5IGlmIHRoZSB2YWx1ZSBpcyBub3QgZW50
ZXJlZC4KKyAgICogQHBhcmFtIHtzdHJpbmc9fSBuZ1JlcXVpcmVkIEFkZHMgYHJlcXVpcmVkYCBh
dHRyaWJ1dGUgYW5kIGByZXF1aXJlZGAgdmFsaWRhdGlvbiBjb25zdHJhaW50IHRvCisgICAqICAg
IHRoZSBlbGVtZW50IHdoZW4gdGhlIG5nUmVxdWlyZWQgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8g
dHJ1ZS4gVXNlIGBuZ1JlcXVpcmVkYCBpbnN0ZWFkIG9mCisgICAqICAgIGByZXF1aXJlZGAgd2hl
biB5b3Ugd2FudCB0byBkYXRhLWJpbmQgdG8gdGhlIGByZXF1aXJlZGAgYXR0cmlidXRlLgorICAg
KiBAcGFyYW0ge251bWJlcj19IG5nTWlubGVuZ3RoIFNldHMgYG1pbmxlbmd0aGAgdmFsaWRhdGlv
biBlcnJvciBrZXkgaWYgdGhlIHZhbHVlIGlzIHNob3J0ZXIgdGhhbgorICAgKiAgICBtaW5sZW5n
dGguCisgICAqIEBwYXJhbSB7bnVtYmVyPX0gbmdNYXhsZW5ndGggU2V0cyBgbWF4bGVuZ3RoYCB2
YWxpZGF0aW9uIGVycm9yIGtleSBpZiB0aGUgdmFsdWUgaXMgbG9uZ2VyIHRoYW4KKyAgICogICAg
bWF4bGVuZ3RoLiBTZXR0aW5nIHRoZSBhdHRyaWJ1dGUgdG8gYSBuZWdhdGl2ZSBvciBub24tbnVt
ZXJpYyB2YWx1ZSwgYWxsb3dzIHZpZXcgdmFsdWVzIG9mCisgICAqICAgIGFueSBsZW5ndGguCisg
ICAqIEBwYXJhbSB7c3RyaW5nPX0gcGF0dGVybiBTaW1pbGFyIHRvIGBuZ1BhdHRlcm5gIGV4Y2Vw
dCB0aGF0IHRoZSBhdHRyaWJ1dGUgdmFsdWUgaXMgdGhlIGFjdHVhbCBzdHJpbmcKKyAgICogICAg
dGhhdCBjb250YWlucyB0aGUgcmVndWxhciBleHByZXNzaW9uIGJvZHkgdGhhdCB3aWxsIGJlIGNv
bnZlcnRlZCB0byBhIHJlZ3VsYXIgZXhwcmVzc2lvbgorICAgKiAgICBhcyBpbiB0aGUgbmdQYXR0
ZXJuIGRpcmVjdGl2ZS4KKyAgICogQHBhcmFtIHtzdHJpbmc9fSBuZ1BhdHRlcm4gU2V0cyBgcGF0
dGVybmAgdmFsaWRhdGlvbiBlcnJvciBrZXkgaWYgdGhlIG5nTW9kZWwgdmFsdWUgZG9lcyBub3Qg
bWF0Y2gKKyAgICogICAgYSBSZWdFeHAgZm91bmQgYnkgZXZhbHVhdGluZyB0aGUgQW5ndWxhciBl
eHByZXNzaW9uIGdpdmVuIGluIHRoZSBhdHRyaWJ1dGUgdmFsdWUuCisgICAqICAgIElmIHRoZSBl
eHByZXNzaW9uIGV2YWx1YXRlcyB0byBhIFJlZ0V4cCBvYmplY3QsIHRoZW4gdGhpcyBpcyB1c2Vk
IGRpcmVjdGx5LgorICAgKiAgICBJZiB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gYSBzdHJp
bmcsIHRoZW4gaXQgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gYSBSZWdFeHAKKyAgICogICAgYWZ0ZXIg
d3JhcHBpbmcgaXQgaW4gYF5gIGFuZCBgJGAgY2hhcmFjdGVycy4gRm9yIGluc3RhbmNlLCBgImFi
YyJgIHdpbGwgYmUgY29udmVydGVkIHRvCisgICAqICAgIGBuZXcgUmVnRXhwKCdeYWJjJCcpYC48
YnIgLz4KKyAgICogICAgKipOb3RlOioqIEF2b2lkIHVzaW5nIHRoZSBgZ2AgZmxhZyBvbiB0aGUg
UmVnRXhwLCBhcyBpdCB3aWxsIGNhdXNlIGVhY2ggc3VjY2Vzc2l2ZSBzZWFyY2ggdG8KKyAgICog
ICAgc3RhcnQgYXQgdGhlIGluZGV4IG9mIHRoZSBsYXN0IHNlYXJjaCdzIG1hdGNoLCB0aHVzIG5v
dCB0YWtpbmcgdGhlIHdob2xlIGlucHV0IHZhbHVlIGludG8KKyAgICogICAgYWNjb3VudC4KKyAg
ICogQHBhcmFtIHtzdHJpbmc9fSBuZ0NoYW5nZSBBbmd1bGFyIGV4cHJlc3Npb24gdG8gYmUgZXhl
Y3V0ZWQgd2hlbiBpbnB1dCBjaGFuZ2VzIGR1ZSB0byB1c2VyCisgICAqICAgIGludGVyYWN0aW9u
IHdpdGggdGhlIGlucHV0IGVsZW1lbnQuCisgICAqIEBwYXJhbSB7Ym9vbGVhbj19IFtuZ1RyaW09
dHJ1ZV0gSWYgc2V0IHRvIGZhbHNlIEFuZ3VsYXIgd2lsbCBub3QgYXV0b21hdGljYWxseSB0cmlt
IHRoZSBpbnB1dC4KKyAgICogICAgVGhpcyBwYXJhbWV0ZXIgaXMgaWdub3JlZCBmb3IgaW5wdXRb
dHlwZT1wYXNzd29yZF0gY29udHJvbHMsIHdoaWNoIHdpbGwgbmV2ZXIgdHJpbSB0aGUKKyAgICog
ICAgaW5wdXQuCisgICAqCisgICAqIEBleGFtcGxlCisgICAgICA8ZXhhbXBsZSBuYW1lPSJ0ZXh0
LWlucHV0LWRpcmVjdGl2ZSIgbW9kdWxlPSJ0ZXh0SW5wdXRFeGFtcGxlIj4KKyAgICAgICAgPGZp
bGUgbmFtZT0iaW5kZXguaHRtbCI+CisgICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICBhbmd1
bGFyLm1vZHVsZSgndGV4dElucHV0RXhhbXBsZScsIFtdKQorICAgICAgICAgICAgIC5jb250cm9s
bGVyKCdFeGFtcGxlQ29udHJvbGxlcicsIFsnJHNjb3BlJywgZnVuY3Rpb24oJHNjb3BlKSB7Cisg
ICAgICAgICAgICAgICAkc2NvcGUuZXhhbXBsZSA9IHsKKyAgICAgICAgICAgICAgICAgdGV4dDog
J2d1ZXN0JywKKyAgICAgICAgICAgICAgICAgd29yZDogL15ccypcdypccyokLworICAgICAgICAg
ICAgICAgfTsKKyAgICAgICAgICAgICB9XSk7CisgICAgICAgICA8L3NjcmlwdD4KKyAgICAgICAg
IDxmb3JtIG5hbWU9Im15Rm9ybSIgbmctY29udHJvbGxlcj0iRXhhbXBsZUNvbnRyb2xsZXIiPgor
ICAgICAgICAgICA8bGFiZWw+U2luZ2xlIHdvcmQ6CisgICAgICAgICAgICAgPGlucHV0IHR5cGU9
InRleHQiIG5hbWU9ImlucHV0IiBuZy1tb2RlbD0iZXhhbXBsZS50ZXh0IgorICAgICAgICAgICAg
ICAgICAgICBuZy1wYXR0ZXJuPSJleGFtcGxlLndvcmQiIHJlcXVpcmVkIG5nLXRyaW09ImZhbHNl
Ij4KKyAgICAgICAgICAgPC9sYWJlbD4KKyAgICAgICAgICAgPGRpdiByb2xlPSJhbGVydCI+Cisg
ICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImVycm9yIiBuZy1zaG93PSJteUZvcm0uaW5wdXQuJGVy
cm9yLnJlcXVpcmVkIj4KKyAgICAgICAgICAgICAgIFJlcXVpcmVkITwvc3Bhbj4KKyAgICAgICAg
ICAgICA8c3BhbiBjbGFzcz0iZXJyb3IiIG5nLXNob3c9Im15Rm9ybS5pbnB1dC4kZXJyb3IucGF0
dGVybiI+CisgICAgICAgICAgICAgICBTaW5nbGUgd29yZCBvbmx5ITwvc3Bhbj4KKyAgICAgICAg
ICAgPC9kaXY+CisgICAgICAgICAgIDx0dD50ZXh0ID0ge3tleGFtcGxlLnRleHR9fTwvdHQ+PGJy
Lz4KKyAgICAgICAgICAgPHR0Pm15Rm9ybS5pbnB1dC4kdmFsaWQgPSB7e215Rm9ybS5pbnB1dC4k
dmFsaWR9fTwvdHQ+PGJyLz4KKyAgICAgICAgICAgPHR0Pm15Rm9ybS5pbnB1dC4kZXJyb3IgPSB7
e215Rm9ybS5pbnB1dC4kZXJyb3J9fTwvdHQ+PGJyLz4KKyAgICAgICAgICAgPHR0Pm15Rm9ybS4k
dmFsaWQgPSB7e215Rm9ybS4kdmFsaWR9fTwvdHQ+PGJyLz4KKyAgICAgICAgICAgPHR0Pm15Rm9y
bS4kZXJyb3IucmVxdWlyZWQgPSB7eyEhbXlGb3JtLiRlcnJvci5yZXF1aXJlZH19PC90dD48YnIv
PgorICAgICAgICAgIDwvZm9ybT4KKyAgICAgICAgPC9maWxlPgorICAgICAgICA8ZmlsZSBuYW1l
PSJwcm90cmFjdG9yLmpzIiB0eXBlPSJwcm90cmFjdG9yIj4KKyAgICAgICAgICB2YXIgdGV4dCA9
IGVsZW1lbnQoYnkuYmluZGluZygnZXhhbXBsZS50ZXh0JykpOworICAgICAgICAgIHZhciB2YWxp
ZCA9IGVsZW1lbnQoYnkuYmluZGluZygnbXlGb3JtLmlucHV0LiR2YWxpZCcpKTsKKyAgICAgICAg
ICB2YXIgaW5wdXQgPSBlbGVtZW50KGJ5Lm1vZGVsKCdleGFtcGxlLnRleHQnKSk7CisKKyAgICAg
ICAgICBpdCgnc2hvdWxkIGluaXRpYWxpemUgdG8gbW9kZWwnLCBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgIGV4cGVjdCh0ZXh0LmdldFRleHQoKSkudG9Db250YWluKCdndWVzdCcpOworICAgICAg
ICAgICAgZXhwZWN0KHZhbGlkLmdldFRleHQoKSkudG9Db250YWluKCd0cnVlJyk7CisgICAgICAg
ICAgfSk7CisKKyAgICAgICAgICBpdCgnc2hvdWxkIGJlIGludmFsaWQgaWYgZW1wdHknLCBmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgIGlucHV0LmNsZWFyKCk7CisgICAgICAgICAgICBpbnB1dC5z
ZW5kS2V5cygnJyk7CisKKyAgICAgICAgICAgIGV4cGVjdCh0ZXh0LmdldFRleHQoKSkudG9FcXVh
bCgndGV4dCA9Jyk7CisgICAgICAgICAgICBleHBlY3QodmFsaWQuZ2V0VGV4dCgpKS50b0NvbnRh
aW4oJ2ZhbHNlJyk7CisgICAgICAgICAgfSk7CisKKyAgICAgICAgICBpdCgnc2hvdWxkIGJlIGlu
dmFsaWQgaWYgbXVsdGkgd29yZCcsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgaW5wdXQuY2xl
YXIoKTsKKyAgICAgICAgICAgIGlucHV0LnNlbmRLZXlzKCdoZWxsbyB3b3JsZCcpOworCisgICAg
ICAgICAgICBleHBlY3QodmFsaWQuZ2V0VGV4dCgpKS50b0NvbnRhaW4oJ2ZhbHNlJyk7CisgICAg
ICAgICAgfSk7CisgICAgICAgIDwvZmlsZT4KKyAgICAgIDwvZXhhbXBsZT4KKyAgICovCisgICd0
ZXh0JzogdGV4dElucHV0VHlwZSwKKworICAgIC8qKgorICAgICAqIEBuZ2RvYyBpbnB1dAorICAg
ICAqIEBuYW1lIGlucHV0W2RhdGVdCisgICAgICoKKyAgICAgKiBAZGVzY3JpcHRpb24KKyAgICAg
KiBJbnB1dCB3aXRoIGRhdGUgdmFsaWRhdGlvbiBhbmQgdHJhbnNmb3JtYXRpb24uIEluIGJyb3dz
ZXJzIHRoYXQgZG8gbm90IHlldCBzdXBwb3J0CisgICAgICogdGhlIEhUTUw1IGRhdGUgaW5wdXQs
IGEgdGV4dCBlbGVtZW50IHdpbGwgYmUgdXNlZC4gSW4gdGhhdCBjYXNlLCB0ZXh0IG11c3QgYmUg
ZW50ZXJlZCBpbiBhIHZhbGlkIElTTy04NjAxCisgICAgICogZGF0ZSBmb3JtYXQgKHl5eXktTU0t
ZGQpLCBmb3IgZXhhbXBsZTogYDIwMDktMDEtMDZgLiBTaW5jZSBtYW55CisgICAgICogbW9kZXJu
IGJyb3dzZXJzIGRvIG5vdCB5ZXQgc3VwcG9ydCB0aGlzIGlucHV0IHR5cGUsIGl0IGlzIGltcG9y
dGFudCB0byBwcm92aWRlIGN1ZXMgdG8gdXNlcnMgb24gdGhlCisgICAgICogZXhwZWN0ZWQgaW5w
dXQgZm9ybWF0IHZpYSBhIHBsYWNlaG9sZGVyIG9yIGxhYmVsLgorICAgICAqCisgICAgICogVGhl
IG1vZGVsIG11c3QgYWx3YXlzIGJlIGEgRGF0ZSBvYmplY3QsIG90aGVyd2lzZSBBbmd1bGFyIHdp
bGwgdGhyb3cgYW4gZXJyb3IuCisgICAgICogSW52YWxpZCBgRGF0ZWAgb2JqZWN0cyAoZGF0ZXMg
d2hvc2UgYGdldFRpbWUoKWAgaXMgYE5hTmApIHdpbGwgYmUgcmVuZGVyZWQgYXMgYW4gZW1wdHkg
c3RyaW5nLgorICAgICAqCisgICAgICogVGhlIHRpbWV6b25lIHRvIGJlIHVzZWQgdG8gcmVhZC93
cml0ZSB0aGUgYERhdGVgIGluc3RhbmNlIGluIHRoZSBtb2RlbCBjYW4gYmUgZGVmaW5lZCB1c2lu
ZworICAgICAqIHtAbGluayBuZy5kaXJlY3RpdmU6bmdNb2RlbE9wdGlvbnMgbmdNb2RlbE9wdGlv
bnN9LiBCeSBkZWZhdWx0LCB0aGlzIGlzIHRoZSB0aW1lem9uZSBvZiB0aGUgYnJvd3Nlci4KKyAg
ICAgKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuZ01vZGVsIEFzc2lnbmFibGUgYW5ndWxhciBl
eHByZXNzaW9uIHRvIGRhdGEtYmluZCB0by4KKyAgICAgKiBAcGFyYW0ge3N0cmluZz19IG5hbWUg
UHJvcGVydHkgbmFtZSBvZiB0aGUgZm9ybSB1bmRlciB3aGljaCB0aGUgY29udHJvbCBpcyBwdWJs
aXNoZWQuCisgICAgICogQHBhcmFtIHtzdHJpbmc9fSBtaW4gU2V0cyB0aGUgYG1pbmAgdmFsaWRh
dGlvbiBlcnJvciBrZXkgaWYgdGhlIHZhbHVlIGVudGVyZWQgaXMgbGVzcyB0aGFuIGBtaW5gLiBU
aGlzIG11c3QgYmUgYQorICAgICAqIHZhbGlkIElTTyBkYXRlIHN0cmluZyAoeXl5eS1NTS1kZCku
CisgICAgICogQHBhcmFtIHtzdHJpbmc9fSBtYXggU2V0cyB0aGUgYG1heGAgdmFsaWRhdGlvbiBl
cnJvciBrZXkgaWYgdGhlIHZhbHVlIGVudGVyZWQgaXMgZ3JlYXRlciB0aGFuIGBtYXhgLiBUaGlz
IG11c3QgYmUKKyAgICAgKiBhIHZhbGlkIElTTyBkYXRlIHN0cmluZyAoeXl5eS1NTS1kZCkuCisg
ICAgICogQHBhcmFtIHtzdHJpbmc9fSByZXF1aXJlZCBTZXRzIGByZXF1aXJlZGAgdmFsaWRhdGlv
biBlcnJvciBrZXkgaWYgdGhlIHZhbHVlIGlzIG5vdCBlbnRlcmVkLgorICAgICAqIEBwYXJhbSB7
c3RyaW5nPX0gbmdSZXF1aXJlZCBBZGRzIGByZXF1aXJlZGAgYXR0cmlidXRlIGFuZCBgcmVxdWly
ZWRgIHZhbGlkYXRpb24gY29uc3RyYWludCB0bworICAgICAqICAgIHRoZSBlbGVtZW50IHdoZW4g
dGhlIG5nUmVxdWlyZWQgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gdHJ1ZS4gVXNlIGBuZ1JlcXVp
cmVkYCBpbnN0ZWFkIG9mCisgICAgICogICAgYHJlcXVpcmVkYCB3aGVuIHlvdSB3YW50IHRvIGRh
dGEtYmluZCB0byB0aGUgYHJlcXVpcmVkYCBhdHRyaWJ1dGUuCisgICAgICogQHBhcmFtIHtzdHJp
bmc9fSBuZ0NoYW5nZSBBbmd1bGFyIGV4cHJlc3Npb24gdG8gYmUgZXhlY3V0ZWQgd2hlbiBpbnB1
dCBjaGFuZ2VzIGR1ZSB0byB1c2VyCisgICAgICogICAgaW50ZXJhY3Rpb24gd2l0aCB0aGUgaW5w
dXQgZWxlbWVudC4KKyAgICAgKgorICAgICAqIEBleGFtcGxlCisgICAgIDxleGFtcGxlIG5hbWU9
ImRhdGUtaW5wdXQtZGlyZWN0aXZlIiBtb2R1bGU9ImRhdGVJbnB1dEV4YW1wbGUiPgorICAgICA8
ZmlsZSBuYW1lPSJpbmRleC5odG1sIj4KKyAgICAgICA8c2NyaXB0PgorICAgICAgICAgIGFuZ3Vs
YXIubW9kdWxlKCdkYXRlSW5wdXRFeGFtcGxlJywgW10pCisgICAgICAgICAgICAuY29udHJvbGxl
cignRGF0ZUNvbnRyb2xsZXInLCBbJyRzY29wZScsIGZ1bmN0aW9uKCRzY29wZSkgeworICAgICAg
ICAgICAgICAkc2NvcGUuZXhhbXBsZSA9IHsKKyAgICAgICAgICAgICAgICB2YWx1ZTogbmV3IERh
dGUoMjAxMywgOSwgMjIpCisgICAgICAgICAgICAgIH07CisgICAgICAgICAgICB9XSk7CisgICAg
ICAgPC9zY3JpcHQ+CisgICAgICAgPGZvcm0gbmFtZT0ibXlGb3JtIiBuZy1jb250cm9sbGVyPSJE
YXRlQ29udHJvbGxlciBhcyBkYXRlQ3RybCI+CisgICAgICAgICAgPGxhYmVsIGZvcj0iZXhhbXBs
ZUlucHV0Ij5QaWNrIGEgZGF0ZSBpbiAyMDEzOjwvbGFiZWw+CisgICAgICAgICAgPGlucHV0IHR5
cGU9ImRhdGUiIGlkPSJleGFtcGxlSW5wdXQiIG5hbWU9ImlucHV0IiBuZy1tb2RlbD0iZXhhbXBs
ZS52YWx1ZSIKKyAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9Inl5eXktTU0tZGQiIG1pbj0iMjAx
My0wMS0wMSIgbWF4PSIyMDEzLTEyLTMxIiByZXF1aXJlZCAvPgorICAgICAgICAgIDxkaXYgcm9s
ZT0iYWxlcnQiPgorICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImVycm9yIiBuZy1zaG93PSJteUZv
cm0uaW5wdXQuJGVycm9yLnJlcXVpcmVkIj4KKyAgICAgICAgICAgICAgICBSZXF1aXJlZCE8L3Nw
YW4+CisgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZXJyb3IiIG5nLXNob3c9Im15Rm9ybS5pbnB1
dC4kZXJyb3IuZGF0ZSI+CisgICAgICAgICAgICAgICAgTm90IGEgdmFsaWQgZGF0ZSE8L3NwYW4+
CisgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICA8dHQ+dmFsdWUgPSB7e2V4YW1wbGUudmFs
dWUgfCBkYXRlOiAieXl5eS1NTS1kZCJ9fTwvdHQ+PGJyLz4KKyAgICAgICAgICAgPHR0Pm15Rm9y
bS5pbnB1dC4kdmFsaWQgPSB7e215Rm9ybS5pbnB1dC4kdmFsaWR9fTwvdHQ+PGJyLz4KKyAgICAg
ICAgICAgPHR0Pm15Rm9ybS5pbnB1dC4kZXJyb3IgPSB7e215Rm9ybS5pbnB1dC4kZXJyb3J9fTwv
dHQ+PGJyLz4KKyAgICAgICAgICAgPHR0Pm15Rm9ybS4kdmFsaWQgPSB7e215Rm9ybS4kdmFsaWR9
fTwvdHQ+PGJyLz4KKyAgICAgICAgICAgPHR0Pm15Rm9ybS4kZXJyb3IucmVxdWlyZWQgPSB7eyEh
bXlGb3JtLiRlcnJvci5yZXF1aXJlZH19PC90dD48YnIvPgorICAgICAgIDwvZm9ybT4KKyAgICAg
PC9maWxlPgorICAgICA8ZmlsZSBuYW1lPSJwcm90cmFjdG9yLmpzIiB0eXBlPSJwcm90cmFjdG9y
Ij4KKyAgICAgICAgdmFyIHZhbHVlID0gZWxlbWVudChieS5iaW5kaW5nKCdleGFtcGxlLnZhbHVl
IHwgZGF0ZTogInl5eXktTU0tZGQiJykpOworICAgICAgICB2YXIgdmFsaWQgPSBlbGVtZW50KGJ5
LmJpbmRpbmcoJ215Rm9ybS5pbnB1dC4kdmFsaWQnKSk7CisgICAgICAgIHZhciBpbnB1dCA9IGVs
ZW1lbnQoYnkubW9kZWwoJ2V4YW1wbGUudmFsdWUnKSk7CisKKyAgICAgICAgLy8gY3VycmVudGx5
IHByb3RyYWN0b3Ivd2ViZHJpdmVyIGRvZXMgbm90IHN1cHBvcnQKKyAgICAgICAgLy8gc2VuZGlu
ZyBrZXlzIHRvIGFsbCBrbm93biBIVE1MNSBpbnB1dCBjb250cm9scworICAgICAgICAvLyBmb3Ig
dmFyaW91cyBicm93c2VycyAoc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL3Byb3RyYWN0
b3IvaXNzdWVzLzU2MikuCisgICAgICAgIGZ1bmN0aW9uIHNldElucHV0KHZhbCkgeworICAgICAg
ICAgIC8vIHNldCB0aGUgdmFsdWUgb2YgdGhlIGVsZW1lbnQgYW5kIGZvcmNlIHZhbGlkYXRpb24u
CisgICAgICAgICAgdmFyIHNjciA9ICJ2YXIgaXB0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2V4YW1wbGVJbnB1dCcpOyAiICsKKyAgICAgICAgICAiaXB0LnZhbHVlID0gJyIgKyB2YWwgKyAi
JzsiICsKKyAgICAgICAgICAiYW5ndWxhci5lbGVtZW50KGlwdCkuc2NvcGUoKS4kYXBwbHkoZnVu
Y3Rpb24ocykgeyBzLm15Rm9ybVtpcHQubmFtZV0uJHNldFZpZXdWYWx1ZSgnIiArIHZhbCArICIn
KTsgfSk7IjsKKyAgICAgICAgICBicm93c2VyLmV4ZWN1dGVTY3JpcHQoc2NyKTsKKyAgICAgICAg
fQorCisgICAgICAgIGl0KCdzaG91bGQgaW5pdGlhbGl6ZSB0byBtb2RlbCcsIGZ1bmN0aW9uKCkg
eworICAgICAgICAgIGV4cGVjdCh2YWx1ZS5nZXRUZXh0KCkpLnRvQ29udGFpbignMjAxMy0xMC0y
MicpOworICAgICAgICAgIGV4cGVjdCh2YWxpZC5nZXRUZXh0KCkpLnRvQ29udGFpbignbXlGb3Jt
LmlucHV0LiR2YWxpZCA9IHRydWUnKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3Nob3Vs
ZCBiZSBpbnZhbGlkIGlmIGVtcHR5JywgZnVuY3Rpb24oKSB7CisgICAgICAgICAgc2V0SW5wdXQo
JycpOworICAgICAgICAgIGV4cGVjdCh2YWx1ZS5nZXRUZXh0KCkpLnRvRXF1YWwoJ3ZhbHVlID0n
KTsKKyAgICAgICAgICBleHBlY3QodmFsaWQuZ2V0VGV4dCgpKS50b0NvbnRhaW4oJ215Rm9ybS5p
bnB1dC4kdmFsaWQgPSBmYWxzZScpOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxk
IGJlIGludmFsaWQgaWYgb3ZlciBtYXgnLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICBzZXRJbnB1
dCgnMjAxNS0wMS0wMScpOworICAgICAgICAgIGV4cGVjdCh2YWx1ZS5nZXRUZXh0KCkpLnRvQ29u
dGFpbignJyk7CisgICAgICAgICAgZXhwZWN0KHZhbGlkLmdldFRleHQoKSkudG9Db250YWluKCdt
eUZvcm0uaW5wdXQuJHZhbGlkID0gZmFsc2UnKTsKKyAgICAgICAgfSk7CisgICAgIDwvZmlsZT4K
KyAgICAgPC9leGFtcGxlPgorICAgICAqLworICAnZGF0ZSc6IGNyZWF0ZURhdGVJbnB1dFR5cGUo
J2RhdGUnLCBEQVRFX1JFR0VYUCwKKyAgICAgICAgIGNyZWF0ZURhdGVQYXJzZXIoREFURV9SRUdF
WFAsIFsneXl5eScsICdNTScsICdkZCddKSwKKyAgICAgICAgICd5eXl5LU1NLWRkJyksCisKKyAg
IC8qKgorICAgICogQG5nZG9jIGlucHV0CisgICAgKiBAbmFtZSBpbnB1dFtkYXRldGltZS1sb2Nh
bF0KKyAgICAqCisgICAgKiBAZGVzY3JpcHRpb24KKyAgICAqIElucHV0IHdpdGggZGF0ZXRpbWUg
dmFsaWRhdGlvbiBhbmQgdHJhbnNmb3JtYXRpb24uIEluIGJyb3dzZXJzIHRoYXQgZG8gbm90IHll
dCBzdXBwb3J0CisgICAgKiB0aGUgSFRNTDUgZGF0ZSBpbnB1dCwgYSB0ZXh0IGVsZW1lbnQgd2ls
bCBiZSB1c2VkLiBJbiB0aGF0IGNhc2UsIHRoZSB0ZXh0IG11c3QgYmUgZW50ZXJlZCBpbiBhIHZh
bGlkIElTTy04NjAxCisgICAgKiBsb2NhbCBkYXRldGltZSBmb3JtYXQgKHl5eXktTU0tZGRUSEg6
bW06c3MpLCBmb3IgZXhhbXBsZTogYDIwMTAtMTItMjhUMTQ6NTc6MDBgLgorICAgICoKKyAgICAq
IFRoZSBtb2RlbCBtdXN0IGFsd2F5cyBiZSBhIERhdGUgb2JqZWN0LCBvdGhlcndpc2UgQW5ndWxh
ciB3aWxsIHRocm93IGFuIGVycm9yLgorICAgICogSW52YWxpZCBgRGF0ZWAgb2JqZWN0cyAoZGF0
ZXMgd2hvc2UgYGdldFRpbWUoKWAgaXMgYE5hTmApIHdpbGwgYmUgcmVuZGVyZWQgYXMgYW4gZW1w
dHkgc3RyaW5nLgorICAgICoKKyAgICAqIFRoZSB0aW1lem9uZSB0byBiZSB1c2VkIHRvIHJlYWQv
d3JpdGUgdGhlIGBEYXRlYCBpbnN0YW5jZSBpbiB0aGUgbW9kZWwgY2FuIGJlIGRlZmluZWQgdXNp
bmcKKyAgICAqIHtAbGluayBuZy5kaXJlY3RpdmU6bmdNb2RlbE9wdGlvbnMgbmdNb2RlbE9wdGlv
bnN9LiBCeSBkZWZhdWx0LCB0aGlzIGlzIHRoZSB0aW1lem9uZSBvZiB0aGUgYnJvd3Nlci4KKyAg
ICAqCisgICAgKiBAcGFyYW0ge3N0cmluZ30gbmdNb2RlbCBBc3NpZ25hYmxlIGFuZ3VsYXIgZXhw
cmVzc2lvbiB0byBkYXRhLWJpbmQgdG8uCisgICAgKiBAcGFyYW0ge3N0cmluZz19IG5hbWUgUHJv
cGVydHkgbmFtZSBvZiB0aGUgZm9ybSB1bmRlciB3aGljaCB0aGUgY29udHJvbCBpcyBwdWJsaXNo
ZWQuCisgICAgKiBAcGFyYW0ge3N0cmluZz19IG1pbiBTZXRzIHRoZSBgbWluYCB2YWxpZGF0aW9u
IGVycm9yIGtleSBpZiB0aGUgdmFsdWUgZW50ZXJlZCBpcyBsZXNzIHRoYW4gYG1pbmAuIFRoaXMg
bXVzdCBiZSBhCisgICAgKiB2YWxpZCBJU08gZGF0ZXRpbWUgZm9ybWF0ICh5eXl5LU1NLWRkVEhI
Om1tOnNzKS4KKyAgICAqIEBwYXJhbSB7c3RyaW5nPX0gbWF4IFNldHMgdGhlIGBtYXhgIHZhbGlk
YXRpb24gZXJyb3Iga2V5IGlmIHRoZSB2YWx1ZSBlbnRlcmVkIGlzIGdyZWF0ZXIgdGhhbiBgbWF4
YC4gVGhpcyBtdXN0IGJlCisgICAgKiBhIHZhbGlkIElTTyBkYXRldGltZSBmb3JtYXQgKHl5eXkt
TU0tZGRUSEg6bW06c3MpLgorICAgICogQHBhcmFtIHtzdHJpbmc9fSByZXF1aXJlZCBTZXRzIGBy
ZXF1aXJlZGAgdmFsaWRhdGlvbiBlcnJvciBrZXkgaWYgdGhlIHZhbHVlIGlzIG5vdCBlbnRlcmVk
LgorICAgICogQHBhcmFtIHtzdHJpbmc9fSBuZ1JlcXVpcmVkIEFkZHMgYHJlcXVpcmVkYCBhdHRy
aWJ1dGUgYW5kIGByZXF1aXJlZGAgdmFsaWRhdGlvbiBjb25zdHJhaW50IHRvCisgICAgKiAgICB0
aGUgZWxlbWVudCB3aGVuIHRoZSBuZ1JlcXVpcmVkIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIHRy
dWUuIFVzZSBgbmdSZXF1aXJlZGAgaW5zdGVhZCBvZgorICAgICogICAgYHJlcXVpcmVkYCB3aGVu
IHlvdSB3YW50IHRvIGRhdGEtYmluZCB0byB0aGUgYHJlcXVpcmVkYCBhdHRyaWJ1dGUuCisgICAg
KiBAcGFyYW0ge3N0cmluZz19IG5nQ2hhbmdlIEFuZ3VsYXIgZXhwcmVzc2lvbiB0byBiZSBleGVj
dXRlZCB3aGVuIGlucHV0IGNoYW5nZXMgZHVlIHRvIHVzZXIKKyAgICAqICAgIGludGVyYWN0aW9u
IHdpdGggdGhlIGlucHV0IGVsZW1lbnQuCisgICAgKgorICAgICogQGV4YW1wbGUKKyAgICA8ZXhh
bXBsZSBuYW1lPSJkYXRldGltZWxvY2FsLWlucHV0LWRpcmVjdGl2ZSIgbW9kdWxlPSJkYXRlRXhh
bXBsZSI+CisgICAgPGZpbGUgbmFtZT0iaW5kZXguaHRtbCI+CisgICAgICA8c2NyaXB0PgorICAg
ICAgICBhbmd1bGFyLm1vZHVsZSgnZGF0ZUV4YW1wbGUnLCBbXSkKKyAgICAgICAgICAuY29udHJv
bGxlcignRGF0ZUNvbnRyb2xsZXInLCBbJyRzY29wZScsIGZ1bmN0aW9uKCRzY29wZSkgeworICAg
ICAgICAgICAgJHNjb3BlLmV4YW1wbGUgPSB7CisgICAgICAgICAgICAgIHZhbHVlOiBuZXcgRGF0
ZSgyMDEwLCAxMSwgMjgsIDE0LCA1NykKKyAgICAgICAgICAgIH07CisgICAgICAgICAgfV0pOwor
ICAgICAgPC9zY3JpcHQ+CisgICAgICA8Zm9ybSBuYW1lPSJteUZvcm0iIG5nLWNvbnRyb2xsZXI9
IkRhdGVDb250cm9sbGVyIGFzIGRhdGVDdHJsIj4KKyAgICAgICAgPGxhYmVsIGZvcj0iZXhhbXBs
ZUlucHV0Ij5QaWNrIGEgZGF0ZSBiZXR3ZWVuIGluIDIwMTM6PC9sYWJlbD4KKyAgICAgICAgPGlu
cHV0IHR5cGU9ImRhdGV0aW1lLWxvY2FsIiBpZD0iZXhhbXBsZUlucHV0IiBuYW1lPSJpbnB1dCIg
bmctbW9kZWw9ImV4YW1wbGUudmFsdWUiCisgICAgICAgICAgICBwbGFjZWhvbGRlcj0ieXl5eS1N
TS1kZFRISDptbTpzcyIgbWluPSIyMDAxLTAxLTAxVDAwOjAwOjAwIiBtYXg9IjIwMTMtMTItMzFU
MDA6MDA6MDAiIHJlcXVpcmVkIC8+CisgICAgICAgIDxkaXYgcm9sZT0iYWxlcnQiPgorICAgICAg
ICAgIDxzcGFuIGNsYXNzPSJlcnJvciIgbmctc2hvdz0ibXlGb3JtLmlucHV0LiRlcnJvci5yZXF1
aXJlZCI+CisgICAgICAgICAgICAgIFJlcXVpcmVkITwvc3Bhbj4KKyAgICAgICAgICA8c3BhbiBj
bGFzcz0iZXJyb3IiIG5nLXNob3c9Im15Rm9ybS5pbnB1dC4kZXJyb3IuZGF0ZXRpbWVsb2NhbCI+
CisgICAgICAgICAgICAgIE5vdCBhIHZhbGlkIGRhdGUhPC9zcGFuPgorICAgICAgICA8L2Rpdj4K
KyAgICAgICAgPHR0PnZhbHVlID0ge3tleGFtcGxlLnZhbHVlIHwgZGF0ZTogInl5eXktTU0tZGRU
SEg6bW06c3MifX08L3R0Pjxici8+CisgICAgICAgIDx0dD5teUZvcm0uaW5wdXQuJHZhbGlkID0g
e3tteUZvcm0uaW5wdXQuJHZhbGlkfX08L3R0Pjxici8+CisgICAgICAgIDx0dD5teUZvcm0uaW5w
dXQuJGVycm9yID0ge3tteUZvcm0uaW5wdXQuJGVycm9yfX08L3R0Pjxici8+CisgICAgICAgIDx0
dD5teUZvcm0uJHZhbGlkID0ge3tteUZvcm0uJHZhbGlkfX08L3R0Pjxici8+CisgICAgICAgIDx0
dD5teUZvcm0uJGVycm9yLnJlcXVpcmVkID0ge3shIW15Rm9ybS4kZXJyb3IucmVxdWlyZWR9fTwv
dHQ+PGJyLz4KKyAgICAgIDwvZm9ybT4KKyAgICA8L2ZpbGU+CisgICAgPGZpbGUgbmFtZT0icHJv
dHJhY3Rvci5qcyIgdHlwZT0icHJvdHJhY3RvciI+CisgICAgICB2YXIgdmFsdWUgPSBlbGVtZW50
KGJ5LmJpbmRpbmcoJ2V4YW1wbGUudmFsdWUgfCBkYXRlOiAieXl5eS1NTS1kZFRISDptbTpzcyIn
KSk7CisgICAgICB2YXIgdmFsaWQgPSBlbGVtZW50KGJ5LmJpbmRpbmcoJ215Rm9ybS5pbnB1dC4k
dmFsaWQnKSk7CisgICAgICB2YXIgaW5wdXQgPSBlbGVtZW50KGJ5Lm1vZGVsKCdleGFtcGxlLnZh
bHVlJykpOworCisgICAgICAvLyBjdXJyZW50bHkgcHJvdHJhY3Rvci93ZWJkcml2ZXIgZG9lcyBu
b3Qgc3VwcG9ydAorICAgICAgLy8gc2VuZGluZyBrZXlzIHRvIGFsbCBrbm93biBIVE1MNSBpbnB1
dCBjb250cm9scworICAgICAgLy8gZm9yIHZhcmlvdXMgYnJvd3NlcnMgKGh0dHBzOi8vZ2l0aHVi
LmNvbS9hbmd1bGFyL3Byb3RyYWN0b3IvaXNzdWVzLzU2MikuCisgICAgICBmdW5jdGlvbiBzZXRJ
bnB1dCh2YWwpIHsKKyAgICAgICAgLy8gc2V0IHRoZSB2YWx1ZSBvZiB0aGUgZWxlbWVudCBhbmQg
Zm9yY2UgdmFsaWRhdGlvbi4KKyAgICAgICAgdmFyIHNjciA9ICJ2YXIgaXB0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2V4YW1wbGVJbnB1dCcpOyAiICsKKyAgICAgICAgImlwdC52YWx1ZSA9
ICciICsgdmFsICsgIic7IiArCisgICAgICAgICJhbmd1bGFyLmVsZW1lbnQoaXB0KS5zY29wZSgp
LiRhcHBseShmdW5jdGlvbihzKSB7IHMubXlGb3JtW2lwdC5uYW1lXS4kc2V0Vmlld1ZhbHVlKCci
ICsgdmFsICsgIicpOyB9KTsiOworICAgICAgICBicm93c2VyLmV4ZWN1dGVTY3JpcHQoc2NyKTsK
KyAgICAgIH0KKworICAgICAgaXQoJ3Nob3VsZCBpbml0aWFsaXplIHRvIG1vZGVsJywgZnVuY3Rp
b24oKSB7CisgICAgICAgIGV4cGVjdCh2YWx1ZS5nZXRUZXh0KCkpLnRvQ29udGFpbignMjAxMC0x
Mi0yOFQxNDo1NzowMCcpOworICAgICAgICBleHBlY3QodmFsaWQuZ2V0VGV4dCgpKS50b0NvbnRh
aW4oJ215Rm9ybS5pbnB1dC4kdmFsaWQgPSB0cnVlJyk7CisgICAgICB9KTsKKworICAgICAgaXQo
J3Nob3VsZCBiZSBpbnZhbGlkIGlmIGVtcHR5JywgZnVuY3Rpb24oKSB7CisgICAgICAgIHNldElu
cHV0KCcnKTsKKyAgICAgICAgZXhwZWN0KHZhbHVlLmdldFRleHQoKSkudG9FcXVhbCgndmFsdWUg
PScpOworICAgICAgICBleHBlY3QodmFsaWQuZ2V0VGV4dCgpKS50b0NvbnRhaW4oJ215Rm9ybS5p
bnB1dC4kdmFsaWQgPSBmYWxzZScpOworICAgICAgfSk7CisKKyAgICAgIGl0KCdzaG91bGQgYmUg
aW52YWxpZCBpZiBvdmVyIG1heCcsIGZ1bmN0aW9uKCkgeworICAgICAgICBzZXRJbnB1dCgnMjAx
NS0wMS0wMVQyMzo1OTowMCcpOworICAgICAgICBleHBlY3QodmFsdWUuZ2V0VGV4dCgpKS50b0Nv
bnRhaW4oJycpOworICAgICAgICBleHBlY3QodmFsaWQuZ2V0VGV4dCgpKS50b0NvbnRhaW4oJ215
Rm9ybS5pbnB1dC4kdmFsaWQgPSBmYWxzZScpOworICAgICAgfSk7CisgICAgPC9maWxlPgorICAg
IDwvZXhhbXBsZT4KKyAgICAqLworICAnZGF0ZXRpbWUtbG9jYWwnOiBjcmVhdGVEYXRlSW5wdXRU
eXBlKCdkYXRldGltZWxvY2FsJywgREFURVRJTUVMT0NBTF9SRUdFWFAsCisgICAgICBjcmVhdGVE
YXRlUGFyc2VyKERBVEVUSU1FTE9DQUxfUkVHRVhQLCBbJ3l5eXknLCAnTU0nLCAnZGQnLCAnSEgn
LCAnbW0nLCAnc3MnLCAnc3NzJ10pLAorICAgICAgJ3l5eXktTU0tZGRUSEg6bW06c3Muc3NzJyks
CisKKyAgLyoqCisgICAqIEBuZ2RvYyBpbnB1dAorICAgKiBAbmFtZSBpbnB1dFt0aW1lXQorICAg
KgorICAgKiBAZGVzY3JpcHRpb24KKyAgICogSW5wdXQgd2l0aCB0aW1lIHZhbGlkYXRpb24gYW5k
IHRyYW5zZm9ybWF0aW9uLiBJbiBicm93c2VycyB0aGF0IGRvIG5vdCB5ZXQgc3VwcG9ydAorICAg
KiB0aGUgSFRNTDUgZGF0ZSBpbnB1dCwgYSB0ZXh0IGVsZW1lbnQgd2lsbCBiZSB1c2VkLiBJbiB0
aGF0IGNhc2UsIHRoZSB0ZXh0IG11c3QgYmUgZW50ZXJlZCBpbiBhIHZhbGlkIElTTy04NjAxCisg
ICAqIGxvY2FsIHRpbWUgZm9ybWF0IChISDptbTpzcyksIGZvciBleGFtcGxlOiBgMTQ6NTc6MDBg
LiBNb2RlbCBtdXN0IGJlIGEgRGF0ZSBvYmplY3QuIFRoaXMgYmluZGluZyB3aWxsIGFsd2F5cyBv
dXRwdXQgYQorICAgKiBEYXRlIG9iamVjdCB0byB0aGUgbW9kZWwgb2YgSmFudWFyeSAxLCAxOTcw
LCBvciBsb2NhbCBkYXRlIGBuZXcgRGF0ZSgxOTcwLCAwLCAxLCBISCwgbW0sIHNzKWAuCisgICAq
CisgICAqIFRoZSBtb2RlbCBtdXN0IGFsd2F5cyBiZSBhIERhdGUgb2JqZWN0LCBvdGhlcndpc2Ug
QW5ndWxhciB3aWxsIHRocm93IGFuIGVycm9yLgorICAgKiBJbnZhbGlkIGBEYXRlYCBvYmplY3Rz
IChkYXRlcyB3aG9zZSBgZ2V0VGltZSgpYCBpcyBgTmFOYCkgd2lsbCBiZSByZW5kZXJlZCBhcyBh
biBlbXB0eSBzdHJpbmcuCisgICAqCisgICAqIFRoZSB0aW1lem9uZSB0byBiZSB1c2VkIHRvIHJl
YWQvd3JpdGUgdGhlIGBEYXRlYCBpbnN0YW5jZSBpbiB0aGUgbW9kZWwgY2FuIGJlIGRlZmluZWQg
dXNpbmcKKyAgICoge0BsaW5rIG5nLmRpcmVjdGl2ZTpuZ01vZGVsT3B0aW9ucyBuZ01vZGVsT3B0
aW9uc30uIEJ5IGRlZmF1bHQsIHRoaXMgaXMgdGhlIHRpbWV6b25lIG9mIHRoZSBicm93c2VyLgor
ICAgKgorICAgKiBAcGFyYW0ge3N0cmluZ30gbmdNb2RlbCBBc3NpZ25hYmxlIGFuZ3VsYXIgZXhw
cmVzc2lvbiB0byBkYXRhLWJpbmQgdG8uCisgICAqIEBwYXJhbSB7c3RyaW5nPX0gbmFtZSBQcm9w
ZXJ0eSBuYW1lIG9mIHRoZSBmb3JtIHVuZGVyIHdoaWNoIHRoZSBjb250cm9sIGlzIHB1Ymxpc2hl
ZC4KKyAgICogQHBhcmFtIHtzdHJpbmc9fSBtaW4gU2V0cyB0aGUgYG1pbmAgdmFsaWRhdGlvbiBl
cnJvciBrZXkgaWYgdGhlIHZhbHVlIGVudGVyZWQgaXMgbGVzcyB0aGFuIGBtaW5gLiBUaGlzIG11
c3QgYmUgYQorICAgKiB2YWxpZCBJU08gdGltZSBmb3JtYXQgKEhIOm1tOnNzKS4KKyAgICogQHBh
cmFtIHtzdHJpbmc9fSBtYXggU2V0cyB0aGUgYG1heGAgdmFsaWRhdGlvbiBlcnJvciBrZXkgaWYg
dGhlIHZhbHVlIGVudGVyZWQgaXMgZ3JlYXRlciB0aGFuIGBtYXhgLiBUaGlzIG11c3QgYmUgYQor
ICAgKiB2YWxpZCBJU08gdGltZSBmb3JtYXQgKEhIOm1tOnNzKS4KKyAgICogQHBhcmFtIHtzdHJp
bmc9fSByZXF1aXJlZCBTZXRzIGByZXF1aXJlZGAgdmFsaWRhdGlvbiBlcnJvciBrZXkgaWYgdGhl
IHZhbHVlIGlzIG5vdCBlbnRlcmVkLgorICAgKiBAcGFyYW0ge3N0cmluZz19IG5nUmVxdWlyZWQg
QWRkcyBgcmVxdWlyZWRgIGF0dHJpYnV0ZSBhbmQgYHJlcXVpcmVkYCB2YWxpZGF0aW9uIGNvbnN0
cmFpbnQgdG8KKyAgICogICAgdGhlIGVsZW1lbnQgd2hlbiB0aGUgbmdSZXF1aXJlZCBleHByZXNz
aW9uIGV2YWx1YXRlcyB0byB0cnVlLiBVc2UgYG5nUmVxdWlyZWRgIGluc3RlYWQgb2YKKyAgICog
ICAgYHJlcXVpcmVkYCB3aGVuIHlvdSB3YW50IHRvIGRhdGEtYmluZCB0byB0aGUgYHJlcXVpcmVk
YCBhdHRyaWJ1dGUuCisgICAqIEBwYXJhbSB7c3RyaW5nPX0gbmdDaGFuZ2UgQW5ndWxhciBleHBy
ZXNzaW9uIHRvIGJlIGV4ZWN1dGVkIHdoZW4gaW5wdXQgY2hhbmdlcyBkdWUgdG8gdXNlcgorICAg
KiAgICBpbnRlcmFjdGlvbiB3aXRoIHRoZSBpbnB1dCBlbGVtZW50LgorICAgKgorICAgKiBAZXhh
bXBsZQorICAgPGV4YW1wbGUgbmFtZT0idGltZS1pbnB1dC1kaXJlY3RpdmUiIG1vZHVsZT0idGlt
ZUV4YW1wbGUiPgorICAgPGZpbGUgbmFtZT0iaW5kZXguaHRtbCI+CisgICAgIDxzY3JpcHQ+Cisg
ICAgICBhbmd1bGFyLm1vZHVsZSgndGltZUV4YW1wbGUnLCBbXSkKKyAgICAgICAgLmNvbnRyb2xs
ZXIoJ0RhdGVDb250cm9sbGVyJywgWyckc2NvcGUnLCBmdW5jdGlvbigkc2NvcGUpIHsKKyAgICAg
ICAgICAkc2NvcGUuZXhhbXBsZSA9IHsKKyAgICAgICAgICAgIHZhbHVlOiBuZXcgRGF0ZSgxOTcw
LCAwLCAxLCAxNCwgNTcsIDApCisgICAgICAgICAgfTsKKyAgICAgICAgfV0pOworICAgICA8L3Nj
cmlwdD4KKyAgICAgPGZvcm0gbmFtZT0ibXlGb3JtIiBuZy1jb250cm9sbGVyPSJEYXRlQ29udHJv
bGxlciBhcyBkYXRlQ3RybCI+CisgICAgICAgIDxsYWJlbCBmb3I9ImV4YW1wbGVJbnB1dCI+UGlj
ayBhIGJldHdlZW4gOGFtIGFuZCA1cG06PC9sYWJlbD4KKyAgICAgICAgPGlucHV0IHR5cGU9InRp
bWUiIGlkPSJleGFtcGxlSW5wdXQiIG5hbWU9ImlucHV0IiBuZy1tb2RlbD0iZXhhbXBsZS52YWx1
ZSIKKyAgICAgICAgICAgIHBsYWNlaG9sZGVyPSJISDptbTpzcyIgbWluPSIwODowMDowMCIgbWF4
PSIxNzowMDowMCIgcmVxdWlyZWQgLz4KKyAgICAgICAgPGRpdiByb2xlPSJhbGVydCI+CisgICAg
ICAgICAgPHNwYW4gY2xhc3M9ImVycm9yIiBuZy1zaG93PSJteUZvcm0uaW5wdXQuJGVycm9yLnJl
cXVpcmVkIj4KKyAgICAgICAgICAgICAgUmVxdWlyZWQhPC9zcGFuPgorICAgICAgICAgIDxzcGFu
IGNsYXNzPSJlcnJvciIgbmctc2hvdz0ibXlGb3JtLmlucHV0LiRlcnJvci50aW1lIj4KKyAgICAg
ICAgICAgICAgTm90IGEgdmFsaWQgZGF0ZSE8L3NwYW4+CisgICAgICAgIDwvZGl2PgorICAgICAg
ICA8dHQ+dmFsdWUgPSB7e2V4YW1wbGUudmFsdWUgfCBkYXRlOiAiSEg6bW06c3MifX08L3R0Pjxi
ci8+CisgICAgICAgIDx0dD5teUZvcm0uaW5wdXQuJHZhbGlkID0ge3tteUZvcm0uaW5wdXQuJHZh
bGlkfX08L3R0Pjxici8+CisgICAgICAgIDx0dD5teUZvcm0uaW5wdXQuJGVycm9yID0ge3tteUZv
cm0uaW5wdXQuJGVycm9yfX08L3R0Pjxici8+CisgICAgICAgIDx0dD5teUZvcm0uJHZhbGlkID0g
e3tteUZvcm0uJHZhbGlkfX08L3R0Pjxici8+CisgICAgICAgIDx0dD5teUZvcm0uJGVycm9yLnJl
cXVpcmVkID0ge3shIW15Rm9ybS4kZXJyb3IucmVxdWlyZWR9fTwvdHQ+PGJyLz4KKyAgICAgPC9m
b3JtPgorICAgPC9maWxlPgorICAgPGZpbGUgbmFtZT0icHJvdHJhY3Rvci5qcyIgdHlwZT0icHJv
dHJhY3RvciI+CisgICAgICB2YXIgdmFsdWUgPSBlbGVtZW50KGJ5LmJpbmRpbmcoJ2V4YW1wbGUu
dmFsdWUgfCBkYXRlOiAiSEg6bW06c3MiJykpOworICAgICAgdmFyIHZhbGlkID0gZWxlbWVudChi
eS5iaW5kaW5nKCdteUZvcm0uaW5wdXQuJHZhbGlkJykpOworICAgICAgdmFyIGlucHV0ID0gZWxl
bWVudChieS5tb2RlbCgnZXhhbXBsZS52YWx1ZScpKTsKKworICAgICAgLy8gY3VycmVudGx5IHBy
b3RyYWN0b3Ivd2ViZHJpdmVyIGRvZXMgbm90IHN1cHBvcnQKKyAgICAgIC8vIHNlbmRpbmcga2V5
cyB0byBhbGwga25vd24gSFRNTDUgaW5wdXQgY29udHJvbHMKKyAgICAgIC8vIGZvciB2YXJpb3Vz
IGJyb3dzZXJzIChodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9wcm90cmFjdG9yL2lzc3Vlcy81
NjIpLgorICAgICAgZnVuY3Rpb24gc2V0SW5wdXQodmFsKSB7CisgICAgICAgIC8vIHNldCB0aGUg
dmFsdWUgb2YgdGhlIGVsZW1lbnQgYW5kIGZvcmNlIHZhbGlkYXRpb24uCisgICAgICAgIHZhciBz
Y3IgPSAidmFyIGlwdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleGFtcGxlSW5wdXQnKTsg
IiArCisgICAgICAgICJpcHQudmFsdWUgPSAnIiArIHZhbCArICInOyIgKworICAgICAgICAiYW5n
dWxhci5lbGVtZW50KGlwdCkuc2NvcGUoKS4kYXBwbHkoZnVuY3Rpb24ocykgeyBzLm15Rm9ybVtp
cHQubmFtZV0uJHNldFZpZXdWYWx1ZSgnIiArIHZhbCArICInKTsgfSk7IjsKKyAgICAgICAgYnJv
d3Nlci5leGVjdXRlU2NyaXB0KHNjcik7CisgICAgICB9CisKKyAgICAgIGl0KCdzaG91bGQgaW5p
dGlhbGl6ZSB0byBtb2RlbCcsIGZ1bmN0aW9uKCkgeworICAgICAgICBleHBlY3QodmFsdWUuZ2V0
VGV4dCgpKS50b0NvbnRhaW4oJzE0OjU3OjAwJyk7CisgICAgICAgIGV4cGVjdCh2YWxpZC5nZXRU
ZXh0KCkpLnRvQ29udGFpbignbXlGb3JtLmlucHV0LiR2YWxpZCA9IHRydWUnKTsKKyAgICAgIH0p
OworCisgICAgICBpdCgnc2hvdWxkIGJlIGludmFsaWQgaWYgZW1wdHknLCBmdW5jdGlvbigpIHsK
KyAgICAgICAgc2V0SW5wdXQoJycpOworICAgICAgICBleHBlY3QodmFsdWUuZ2V0VGV4dCgpKS50
b0VxdWFsKCd2YWx1ZSA9Jyk7CisgICAgICAgIGV4cGVjdCh2YWxpZC5nZXRUZXh0KCkpLnRvQ29u
dGFpbignbXlGb3JtLmlucHV0LiR2YWxpZCA9IGZhbHNlJyk7CisgICAgICB9KTsKKworICAgICAg
aXQoJ3Nob3VsZCBiZSBpbnZhbGlkIGlmIG92ZXIgbWF4JywgZnVuY3Rpb24oKSB7CisgICAgICAg
IHNldElucHV0KCcyMzo1OTowMCcpOworICAgICAgICBleHBlY3QodmFsdWUuZ2V0VGV4dCgpKS50
b0NvbnRhaW4oJycpOworICAgICAgICBleHBlY3QodmFsaWQuZ2V0VGV4dCgpKS50b0NvbnRhaW4o
J215Rm9ybS5pbnB1dC4kdmFsaWQgPSBmYWxzZScpOworICAgICAgfSk7CisgICA8L2ZpbGU+Cisg
ICA8L2V4YW1wbGU+CisgICAqLworICAndGltZSc6IGNyZWF0ZURhdGVJbnB1dFR5cGUoJ3RpbWUn
LCBUSU1FX1JFR0VYUCwKKyAgICAgIGNyZWF0ZURhdGVQYXJzZXIoVElNRV9SRUdFWFAsIFsnSEgn
LCAnbW0nLCAnc3MnLCAnc3NzJ10pLAorICAgICAnSEg6bW06c3Muc3NzJyksCisKKyAgIC8qKgor
ICAgICogQG5nZG9jIGlucHV0CisgICAgKiBAbmFtZSBpbnB1dFt3ZWVrXQorICAgICoKKyAgICAq
IEBkZXNjcmlwdGlvbgorICAgICogSW5wdXQgd2l0aCB3ZWVrLW9mLXRoZS15ZWFyIHZhbGlkYXRp
b24gYW5kIHRyYW5zZm9ybWF0aW9uIHRvIERhdGUuIEluIGJyb3dzZXJzIHRoYXQgZG8gbm90IHll
dCBzdXBwb3J0CisgICAgKiB0aGUgSFRNTDUgd2VlayBpbnB1dCwgYSB0ZXh0IGVsZW1lbnQgd2ls
bCBiZSB1c2VkLiBJbiB0aGF0IGNhc2UsIHRoZSB0ZXh0IG11c3QgYmUgZW50ZXJlZCBpbiBhIHZh
bGlkIElTTy04NjAxCisgICAgKiB3ZWVrIGZvcm1hdCAoeXl5eS1XIyMpLCBmb3IgZXhhbXBsZTog
YDIwMTMtVzAyYC4KKyAgICAqCisgICAgKiBUaGUgbW9kZWwgbXVzdCBhbHdheXMgYmUgYSBEYXRl
IG9iamVjdCwgb3RoZXJ3aXNlIEFuZ3VsYXIgd2lsbCB0aHJvdyBhbiBlcnJvci4KKyAgICAqIElu
dmFsaWQgYERhdGVgIG9iamVjdHMgKGRhdGVzIHdob3NlIGBnZXRUaW1lKClgIGlzIGBOYU5gKSB3
aWxsIGJlIHJlbmRlcmVkIGFzIGFuIGVtcHR5IHN0cmluZy4KKyAgICAqCisgICAgKiBUaGUgdGlt
ZXpvbmUgdG8gYmUgdXNlZCB0byByZWFkL3dyaXRlIHRoZSBgRGF0ZWAgaW5zdGFuY2UgaW4gdGhl
IG1vZGVsIGNhbiBiZSBkZWZpbmVkIHVzaW5nCisgICAgKiB7QGxpbmsgbmcuZGlyZWN0aXZlOm5n
TW9kZWxPcHRpb25zIG5nTW9kZWxPcHRpb25zfS4gQnkgZGVmYXVsdCwgdGhpcyBpcyB0aGUgdGlt
ZXpvbmUgb2YgdGhlIGJyb3dzZXIuCisgICAgKgorICAgICogQHBhcmFtIHtzdHJpbmd9IG5nTW9k
ZWwgQXNzaWduYWJsZSBhbmd1bGFyIGV4cHJlc3Npb24gdG8gZGF0YS1iaW5kIHRvLgorICAgICog
QHBhcmFtIHtzdHJpbmc9fSBuYW1lIFByb3BlcnR5IG5hbWUgb2YgdGhlIGZvcm0gdW5kZXIgd2hp
Y2ggdGhlIGNvbnRyb2wgaXMgcHVibGlzaGVkLgorICAgICogQHBhcmFtIHtzdHJpbmc9fSBtaW4g
U2V0cyB0aGUgYG1pbmAgdmFsaWRhdGlvbiBlcnJvciBrZXkgaWYgdGhlIHZhbHVlIGVudGVyZWQg
aXMgbGVzcyB0aGFuIGBtaW5gLiBUaGlzIG11c3QgYmUgYQorICAgICogdmFsaWQgSVNPIHdlZWsg
Zm9ybWF0ICh5eXl5LVcjIykuCisgICAgKiBAcGFyYW0ge3N0cmluZz19IG1heCBTZXRzIHRoZSBg
bWF4YCB2YWxpZGF0aW9uIGVycm9yIGtleSBpZiB0aGUgdmFsdWUgZW50ZXJlZCBpcyBncmVhdGVy
IHRoYW4gYG1heGAuIFRoaXMgbXVzdCBiZQorICAgICogYSB2YWxpZCBJU08gd2VlayBmb3JtYXQg
KHl5eXktVyMjKS4KKyAgICAqIEBwYXJhbSB7c3RyaW5nPX0gcmVxdWlyZWQgU2V0cyBgcmVxdWly
ZWRgIHZhbGlkYXRpb24gZXJyb3Iga2V5IGlmIHRoZSB2YWx1ZSBpcyBub3QgZW50ZXJlZC4KKyAg
ICAqIEBwYXJhbSB7c3RyaW5nPX0gbmdSZXF1aXJlZCBBZGRzIGByZXF1aXJlZGAgYXR0cmlidXRl
IGFuZCBgcmVxdWlyZWRgIHZhbGlkYXRpb24gY29uc3RyYWludCB0bworICAgICogICAgdGhlIGVs
ZW1lbnQgd2hlbiB0aGUgbmdSZXF1aXJlZCBleHByZXNzaW9uIGV2YWx1YXRlcyB0byB0cnVlLiBV
c2UgYG5nUmVxdWlyZWRgIGluc3RlYWQgb2YKKyAgICAqICAgIGByZXF1aXJlZGAgd2hlbiB5b3Ug
d2FudCB0byBkYXRhLWJpbmQgdG8gdGhlIGByZXF1aXJlZGAgYXR0cmlidXRlLgorICAgICogQHBh
cmFtIHtzdHJpbmc9fSBuZ0NoYW5nZSBBbmd1bGFyIGV4cHJlc3Npb24gdG8gYmUgZXhlY3V0ZWQg
d2hlbiBpbnB1dCBjaGFuZ2VzIGR1ZSB0byB1c2VyCisgICAgKiAgICBpbnRlcmFjdGlvbiB3aXRo
IHRoZSBpbnB1dCBlbGVtZW50LgorICAgICoKKyAgICAqIEBleGFtcGxlCisgICAgPGV4YW1wbGUg
bmFtZT0id2Vlay1pbnB1dC1kaXJlY3RpdmUiIG1vZHVsZT0id2Vla0V4YW1wbGUiPgorICAgIDxm
aWxlIG5hbWU9ImluZGV4Lmh0bWwiPgorICAgICAgPHNjcmlwdD4KKyAgICAgIGFuZ3VsYXIubW9k
dWxlKCd3ZWVrRXhhbXBsZScsIFtdKQorICAgICAgICAuY29udHJvbGxlcignRGF0ZUNvbnRyb2xs
ZXInLCBbJyRzY29wZScsIGZ1bmN0aW9uKCRzY29wZSkgeworICAgICAgICAgICRzY29wZS5leGFt
cGxlID0geworICAgICAgICAgICAgdmFsdWU6IG5ldyBEYXRlKDIwMTMsIDAsIDMpCisgICAgICAg
ICAgfTsKKyAgICAgICAgfV0pOworICAgICAgPC9zY3JpcHQ+CisgICAgICA8Zm9ybSBuYW1lPSJt
eUZvcm0iIG5nLWNvbnRyb2xsZXI9IkRhdGVDb250cm9sbGVyIGFzIGRhdGVDdHJsIj4KKyAgICAg
ICAgPGxhYmVsPlBpY2sgYSBkYXRlIGJldHdlZW4gaW4gMjAxMzoKKyAgICAgICAgICA8aW5wdXQg
aWQ9ImV4YW1wbGVJbnB1dCIgdHlwZT0id2VlayIgbmFtZT0iaW5wdXQiIG5nLW1vZGVsPSJleGFt
cGxlLnZhbHVlIgorICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj0iWVlZWS1XIyMiIG1pbj0i
MjAxMi1XMzIiCisgICAgICAgICAgICAgICAgIG1heD0iMjAxMy1XNTIiIHJlcXVpcmVkIC8+Cisg
ICAgICAgIDwvbGFiZWw+CisgICAgICAgIDxkaXYgcm9sZT0iYWxlcnQiPgorICAgICAgICAgIDxz
cGFuIGNsYXNzPSJlcnJvciIgbmctc2hvdz0ibXlGb3JtLmlucHV0LiRlcnJvci5yZXF1aXJlZCI+
CisgICAgICAgICAgICAgIFJlcXVpcmVkITwvc3Bhbj4KKyAgICAgICAgICA8c3BhbiBjbGFzcz0i
ZXJyb3IiIG5nLXNob3c9Im15Rm9ybS5pbnB1dC4kZXJyb3Iud2VlayI+CisgICAgICAgICAgICAg
IE5vdCBhIHZhbGlkIGRhdGUhPC9zcGFuPgorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPHR0PnZh
bHVlID0ge3tleGFtcGxlLnZhbHVlIHwgZGF0ZTogInl5eXktV3d3In19PC90dD48YnIvPgorICAg
ICAgICA8dHQ+bXlGb3JtLmlucHV0LiR2YWxpZCA9IHt7bXlGb3JtLmlucHV0LiR2YWxpZH19PC90
dD48YnIvPgorICAgICAgICA8dHQ+bXlGb3JtLmlucHV0LiRlcnJvciA9IHt7bXlGb3JtLmlucHV0
LiRlcnJvcn19PC90dD48YnIvPgorICAgICAgICA8dHQ+bXlGb3JtLiR2YWxpZCA9IHt7bXlGb3Jt
LiR2YWxpZH19PC90dD48YnIvPgorICAgICAgICA8dHQ+bXlGb3JtLiRlcnJvci5yZXF1aXJlZCA9
IHt7ISFteUZvcm0uJGVycm9yLnJlcXVpcmVkfX08L3R0Pjxici8+CisgICAgICA8L2Zvcm0+Cisg
ICAgPC9maWxlPgorICAgIDxmaWxlIG5hbWU9InByb3RyYWN0b3IuanMiIHR5cGU9InByb3RyYWN0
b3IiPgorICAgICAgdmFyIHZhbHVlID0gZWxlbWVudChieS5iaW5kaW5nKCdleGFtcGxlLnZhbHVl
IHwgZGF0ZTogInl5eXktV3d3IicpKTsKKyAgICAgIHZhciB2YWxpZCA9IGVsZW1lbnQoYnkuYmlu
ZGluZygnbXlGb3JtLmlucHV0LiR2YWxpZCcpKTsKKyAgICAgIHZhciBpbnB1dCA9IGVsZW1lbnQo
YnkubW9kZWwoJ2V4YW1wbGUudmFsdWUnKSk7CisKKyAgICAgIC8vIGN1cnJlbnRseSBwcm90cmFj
dG9yL3dlYmRyaXZlciBkb2VzIG5vdCBzdXBwb3J0CisgICAgICAvLyBzZW5kaW5nIGtleXMgdG8g
YWxsIGtub3duIEhUTUw1IGlucHV0IGNvbnRyb2xzCisgICAgICAvLyBmb3IgdmFyaW91cyBicm93
c2VycyAoaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvcHJvdHJhY3Rvci9pc3N1ZXMvNTYyKS4K
KyAgICAgIGZ1bmN0aW9uIHNldElucHV0KHZhbCkgeworICAgICAgICAvLyBzZXQgdGhlIHZhbHVl
IG9mIHRoZSBlbGVtZW50IGFuZCBmb3JjZSB2YWxpZGF0aW9uLgorICAgICAgICB2YXIgc2NyID0g
InZhciBpcHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhhbXBsZUlucHV0Jyk7ICIgKwor
ICAgICAgICAiaXB0LnZhbHVlID0gJyIgKyB2YWwgKyAiJzsiICsKKyAgICAgICAgImFuZ3VsYXIu
ZWxlbWVudChpcHQpLnNjb3BlKCkuJGFwcGx5KGZ1bmN0aW9uKHMpIHsgcy5teUZvcm1baXB0Lm5h
bWVdLiRzZXRWaWV3VmFsdWUoJyIgKyB2YWwgKyAiJyk7IH0pOyI7CisgICAgICAgIGJyb3dzZXIu
ZXhlY3V0ZVNjcmlwdChzY3IpOworICAgICAgfQorCisgICAgICBpdCgnc2hvdWxkIGluaXRpYWxp
emUgdG8gbW9kZWwnLCBmdW5jdGlvbigpIHsKKyAgICAgICAgZXhwZWN0KHZhbHVlLmdldFRleHQo
KSkudG9Db250YWluKCcyMDEzLVcwMScpOworICAgICAgICBleHBlY3QodmFsaWQuZ2V0VGV4dCgp
KS50b0NvbnRhaW4oJ215Rm9ybS5pbnB1dC4kdmFsaWQgPSB0cnVlJyk7CisgICAgICB9KTsKKwor
ICAgICAgaXQoJ3Nob3VsZCBiZSBpbnZhbGlkIGlmIGVtcHR5JywgZnVuY3Rpb24oKSB7CisgICAg
ICAgIHNldElucHV0KCcnKTsKKyAgICAgICAgZXhwZWN0KHZhbHVlLmdldFRleHQoKSkudG9FcXVh
bCgndmFsdWUgPScpOworICAgICAgICBleHBlY3QodmFsaWQuZ2V0VGV4dCgpKS50b0NvbnRhaW4o
J215Rm9ybS5pbnB1dC4kdmFsaWQgPSBmYWxzZScpOworICAgICAgfSk7CisKKyAgICAgIGl0KCdz
aG91bGQgYmUgaW52YWxpZCBpZiBvdmVyIG1heCcsIGZ1bmN0aW9uKCkgeworICAgICAgICBzZXRJ
bnB1dCgnMjAxNS1XMDEnKTsKKyAgICAgICAgZXhwZWN0KHZhbHVlLmdldFRleHQoKSkudG9Db250
YWluKCcnKTsKKyAgICAgICAgZXhwZWN0KHZhbGlkLmdldFRleHQoKSkudG9Db250YWluKCdteUZv
cm0uaW5wdXQuJHZhbGlkID0gZmFsc2UnKTsKKyAgICAgIH0pOworICAgIDwvZmlsZT4KKyAgICA8
L2V4YW1wbGU+CisgICAgKi8KKyAgJ3dlZWsnOiBjcmVhdGVEYXRlSW5wdXRUeXBlKCd3ZWVrJywg
V0VFS19SRUdFWFAsIHdlZWtQYXJzZXIsICd5eXl5LVd3dycpLAorCisgIC8qKgorICAgKiBAbmdk
b2MgaW5wdXQKKyAgICogQG5hbWUgaW5wdXRbbW9udGhdCisgICAqCisgICAqIEBkZXNjcmlwdGlv
bgorICAgKiBJbnB1dCB3aXRoIG1vbnRoIHZhbGlkYXRpb24gYW5kIHRyYW5zZm9ybWF0aW9uLiBJ
biBicm93c2VycyB0aGF0IGRvIG5vdCB5ZXQgc3VwcG9ydAorICAgKiB0aGUgSFRNTDUgbW9udGgg
aW5wdXQsIGEgdGV4dCBlbGVtZW50IHdpbGwgYmUgdXNlZC4gSW4gdGhhdCBjYXNlLCB0aGUgdGV4
dCBtdXN0IGJlIGVudGVyZWQgaW4gYSB2YWxpZCBJU08tODYwMQorICAgKiBtb250aCBmb3JtYXQg
KHl5eXktTU0pLCBmb3IgZXhhbXBsZTogYDIwMDktMDFgLgorICAgKgorICAgKiBUaGUgbW9kZWwg
bXVzdCBhbHdheXMgYmUgYSBEYXRlIG9iamVjdCwgb3RoZXJ3aXNlIEFuZ3VsYXIgd2lsbCB0aHJv
dyBhbiBlcnJvci4KKyAgICogSW52YWxpZCBgRGF0ZWAgb2JqZWN0cyAoZGF0ZXMgd2hvc2UgYGdl
dFRpbWUoKWAgaXMgYE5hTmApIHdpbGwgYmUgcmVuZGVyZWQgYXMgYW4gZW1wdHkgc3RyaW5nLgor
ICAgKiBJZiB0aGUgbW9kZWwgaXMgbm90IHNldCB0byB0aGUgZmlyc3Qgb2YgdGhlIG1vbnRoLCB0
aGUgbmV4dCB2aWV3IHRvIG1vZGVsIHVwZGF0ZSB3aWxsIHNldCBpdAorICAgKiB0byB0aGUgZmly
c3Qgb2YgdGhlIG1vbnRoLgorICAgKgorICAgKiBUaGUgdGltZXpvbmUgdG8gYmUgdXNlZCB0byBy
ZWFkL3dyaXRlIHRoZSBgRGF0ZWAgaW5zdGFuY2UgaW4gdGhlIG1vZGVsIGNhbiBiZSBkZWZpbmVk
IHVzaW5nCisgICAqIHtAbGluayBuZy5kaXJlY3RpdmU6bmdNb2RlbE9wdGlvbnMgbmdNb2RlbE9w
dGlvbnN9LiBCeSBkZWZhdWx0LCB0aGlzIGlzIHRoZSB0aW1lem9uZSBvZiB0aGUgYnJvd3Nlci4K
KyAgICoKKyAgICogQHBhcmFtIHtzdHJpbmd9IG5nTW9kZWwgQXNzaWduYWJsZSBhbmd1bGFyIGV4
cHJlc3Npb24gdG8gZGF0YS1iaW5kIHRvLgorICAgKiBAcGFyYW0ge3N0cmluZz19IG5hbWUgUHJv
cGVydHkgbmFtZSBvZiB0aGUgZm9ybSB1bmRlciB3aGljaCB0aGUgY29udHJvbCBpcyBwdWJsaXNo
ZWQuCisgICAqIEBwYXJhbSB7c3RyaW5nPX0gbWluIFNldHMgdGhlIGBtaW5gIHZhbGlkYXRpb24g
ZXJyb3Iga2V5IGlmIHRoZSB2YWx1ZSBlbnRlcmVkIGlzIGxlc3MgdGhhbiBgbWluYC4gVGhpcyBt
dXN0IGJlCisgICAqIGEgdmFsaWQgSVNPIG1vbnRoIGZvcm1hdCAoeXl5eS1NTSkuCisgICAqIEBw
YXJhbSB7c3RyaW5nPX0gbWF4IFNldHMgdGhlIGBtYXhgIHZhbGlkYXRpb24gZXJyb3Iga2V5IGlm
IHRoZSB2YWx1ZSBlbnRlcmVkIGlzIGdyZWF0ZXIgdGhhbiBgbWF4YC4gVGhpcyBtdXN0CisgICAq
IGJlIGEgdmFsaWQgSVNPIG1vbnRoIGZvcm1hdCAoeXl5eS1NTSkuCisgICAqIEBwYXJhbSB7c3Ry
aW5nPX0gcmVxdWlyZWQgU2V0cyBgcmVxdWlyZWRgIHZhbGlkYXRpb24gZXJyb3Iga2V5IGlmIHRo
ZSB2YWx1ZSBpcyBub3QgZW50ZXJlZC4KKyAgICogQHBhcmFtIHtzdHJpbmc9fSBuZ1JlcXVpcmVk
IEFkZHMgYHJlcXVpcmVkYCBhdHRyaWJ1dGUgYW5kIGByZXF1aXJlZGAgdmFsaWRhdGlvbiBjb25z
dHJhaW50IHRvCisgICAqICAgIHRoZSBlbGVtZW50IHdoZW4gdGhlIG5nUmVxdWlyZWQgZXhwcmVz
c2lvbiBldmFsdWF0ZXMgdG8gdHJ1ZS4gVXNlIGBuZ1JlcXVpcmVkYCBpbnN0ZWFkIG9mCisgICAq
ICAgIGByZXF1aXJlZGAgd2hlbiB5b3Ugd2FudCB0byBkYXRhLWJpbmQgdG8gdGhlIGByZXF1aXJl
ZGAgYXR0cmlidXRlLgorICAgKiBAcGFyYW0ge3N0cmluZz19IG5nQ2hhbmdlIEFuZ3VsYXIgZXhw
cmVzc2lvbiB0byBiZSBleGVjdXRlZCB3aGVuIGlucHV0IGNoYW5nZXMgZHVlIHRvIHVzZXIKKyAg
ICogICAgaW50ZXJhY3Rpb24gd2l0aCB0aGUgaW5wdXQgZWxlbWVudC4KKyAgICoKKyAgICogQGV4
YW1wbGUKKyAgIDxleGFtcGxlIG5hbWU9Im1vbnRoLWlucHV0LWRpcmVjdGl2ZSIgbW9kdWxlPSJt
b250aEV4YW1wbGUiPgorICAgPGZpbGUgbmFtZT0iaW5kZXguaHRtbCI+CisgICAgIDxzY3JpcHQ+
CisgICAgICBhbmd1bGFyLm1vZHVsZSgnbW9udGhFeGFtcGxlJywgW10pCisgICAgICAgIC5jb250
cm9sbGVyKCdEYXRlQ29udHJvbGxlcicsIFsnJHNjb3BlJywgZnVuY3Rpb24oJHNjb3BlKSB7Cisg
ICAgICAgICAgJHNjb3BlLmV4YW1wbGUgPSB7CisgICAgICAgICAgICB2YWx1ZTogbmV3IERhdGUo
MjAxMywgOSwgMSkKKyAgICAgICAgICB9OworICAgICAgICB9XSk7CisgICAgIDwvc2NyaXB0Pgor
ICAgICA8Zm9ybSBuYW1lPSJteUZvcm0iIG5nLWNvbnRyb2xsZXI9IkRhdGVDb250cm9sbGVyIGFz
IGRhdGVDdHJsIj4KKyAgICAgICA8bGFiZWwgZm9yPSJleGFtcGxlSW5wdXQiPlBpY2sgYSBtb250
aCBpbiAyMDEzOjwvbGFiZWw+CisgICAgICAgPGlucHV0IGlkPSJleGFtcGxlSW5wdXQiIHR5cGU9
Im1vbnRoIiBuYW1lPSJpbnB1dCIgbmctbW9kZWw9ImV4YW1wbGUudmFsdWUiCisgICAgICAgICAg
cGxhY2Vob2xkZXI9Inl5eXktTU0iIG1pbj0iMjAxMy0wMSIgbWF4PSIyMDEzLTEyIiByZXF1aXJl
ZCAvPgorICAgICAgIDxkaXYgcm9sZT0iYWxlcnQiPgorICAgICAgICAgPHNwYW4gY2xhc3M9ImVy
cm9yIiBuZy1zaG93PSJteUZvcm0uaW5wdXQuJGVycm9yLnJlcXVpcmVkIj4KKyAgICAgICAgICAg
IFJlcXVpcmVkITwvc3Bhbj4KKyAgICAgICAgIDxzcGFuIGNsYXNzPSJlcnJvciIgbmctc2hvdz0i
bXlGb3JtLmlucHV0LiRlcnJvci5tb250aCI+CisgICAgICAgICAgICBOb3QgYSB2YWxpZCBtb250
aCE8L3NwYW4+CisgICAgICAgPC9kaXY+CisgICAgICAgPHR0PnZhbHVlID0ge3tleGFtcGxlLnZh
bHVlIHwgZGF0ZTogInl5eXktTU0ifX08L3R0Pjxici8+CisgICAgICAgPHR0Pm15Rm9ybS5pbnB1
dC4kdmFsaWQgPSB7e215Rm9ybS5pbnB1dC4kdmFsaWR9fTwvdHQ+PGJyLz4KKyAgICAgICA8dHQ+
bXlGb3JtLmlucHV0LiRlcnJvciA9IHt7bXlGb3JtLmlucHV0LiRlcnJvcn19PC90dD48YnIvPgor
ICAgICAgIDx0dD5teUZvcm0uJHZhbGlkID0ge3tteUZvcm0uJHZhbGlkfX08L3R0Pjxici8+Cisg
ICAgICAgPHR0Pm15Rm9ybS4kZXJyb3IucmVxdWlyZWQgPSB7eyEhbXlGb3JtLiRlcnJvci5yZXF1
aXJlZH19PC90dD48YnIvPgorICAgICA8L2Zvcm0+CisgICA8L2ZpbGU+CisgICA8ZmlsZSBuYW1l
PSJwcm90cmFjdG9yLmpzIiB0eXBlPSJwcm90cmFjdG9yIj4KKyAgICAgIHZhciB2YWx1ZSA9IGVs
ZW1lbnQoYnkuYmluZGluZygnZXhhbXBsZS52YWx1ZSB8IGRhdGU6ICJ5eXl5LU1NIicpKTsKKyAg
ICAgIHZhciB2YWxpZCA9IGVsZW1lbnQoYnkuYmluZGluZygnbXlGb3JtLmlucHV0LiR2YWxpZCcp
KTsKKyAgICAgIHZhciBpbnB1dCA9IGVsZW1lbnQoYnkubW9kZWwoJ2V4YW1wbGUudmFsdWUnKSk7
CisKKyAgICAgIC8vIGN1cnJlbnRseSBwcm90cmFjdG9yL3dlYmRyaXZlciBkb2VzIG5vdCBzdXBw
b3J0CisgICAgICAvLyBzZW5kaW5nIGtleXMgdG8gYWxsIGtub3duIEhUTUw1IGlucHV0IGNvbnRy
b2xzCisgICAgICAvLyBmb3IgdmFyaW91cyBicm93c2VycyAoaHR0cHM6Ly9naXRodWIuY29tL2Fu
Z3VsYXIvcHJvdHJhY3Rvci9pc3N1ZXMvNTYyKS4KKyAgICAgIGZ1bmN0aW9uIHNldElucHV0KHZh
bCkgeworICAgICAgICAvLyBzZXQgdGhlIHZhbHVlIG9mIHRoZSBlbGVtZW50IGFuZCBmb3JjZSB2
YWxpZGF0aW9uLgorICAgICAgICB2YXIgc2NyID0gInZhciBpcHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnZXhhbXBsZUlucHV0Jyk7ICIgKworICAgICAgICAiaXB0LnZhbHVlID0gJyIgKyB2
YWwgKyAiJzsiICsKKyAgICAgICAgImFuZ3VsYXIuZWxlbWVudChpcHQpLnNjb3BlKCkuJGFwcGx5
KGZ1bmN0aW9uKHMpIHsgcy5teUZvcm1baXB0Lm5hbWVdLiRzZXRWaWV3VmFsdWUoJyIgKyB2YWwg
KyAiJyk7IH0pOyI7CisgICAgICAgIGJyb3dzZXIuZXhlY3V0ZVNjcmlwdChzY3IpOworICAgICAg
fQorCisgICAgICBpdCgnc2hvdWxkIGluaXRpYWxpemUgdG8gbW9kZWwnLCBmdW5jdGlvbigpIHsK
KyAgICAgICAgZXhwZWN0KHZhbHVlLmdldFRleHQoKSkudG9Db250YWluKCcyMDEzLTEwJyk7Cisg
ICAgICAgIGV4cGVjdCh2YWxpZC5nZXRUZXh0KCkpLnRvQ29udGFpbignbXlGb3JtLmlucHV0LiR2
YWxpZCA9IHRydWUnKTsKKyAgICAgIH0pOworCisgICAgICBpdCgnc2hvdWxkIGJlIGludmFsaWQg
aWYgZW1wdHknLCBmdW5jdGlvbigpIHsKKyAgICAgICAgc2V0SW5wdXQoJycpOworICAgICAgICBl
eHBlY3QodmFsdWUuZ2V0VGV4dCgpKS50b0VxdWFsKCd2YWx1ZSA9Jyk7CisgICAgICAgIGV4cGVj
dCh2YWxpZC5nZXRUZXh0KCkpLnRvQ29udGFpbignbXlGb3JtLmlucHV0LiR2YWxpZCA9IGZhbHNl
Jyk7CisgICAgICB9KTsKKworICAgICAgaXQoJ3Nob3VsZCBiZSBpbnZhbGlkIGlmIG92ZXIgbWF4
JywgZnVuY3Rpb24oKSB7CisgICAgICAgIHNldElucHV0KCcyMDE1LTAxJyk7CisgICAgICAgIGV4
cGVjdCh2YWx1ZS5nZXRUZXh0KCkpLnRvQ29udGFpbignJyk7CisgICAgICAgIGV4cGVjdCh2YWxp
ZC5nZXRUZXh0KCkpLnRvQ29udGFpbignbXlGb3JtLmlucHV0LiR2YWxpZCA9IGZhbHNlJyk7Cisg
ICAgICB9KTsKKyAgIDwvZmlsZT4KKyAgIDwvZXhhbXBsZT4KKyAgICovCisgICdtb250aCc6IGNy
ZWF0ZURhdGVJbnB1dFR5cGUoJ21vbnRoJywgTU9OVEhfUkVHRVhQLAorICAgICBjcmVhdGVEYXRl
UGFyc2VyKE1PTlRIX1JFR0VYUCwgWyd5eXl5JywgJ01NJ10pLAorICAgICAneXl5eS1NTScpLAor
CisgIC8qKgorICAgKiBAbmdkb2MgaW5wdXQKKyAgICogQG5hbWUgaW5wdXRbbnVtYmVyXQorICAg
KgorICAgKiBAZGVzY3JpcHRpb24KKyAgICogVGV4dCBpbnB1dCB3aXRoIG51bWJlciB2YWxpZGF0
aW9uIGFuZCB0cmFuc2Zvcm1hdGlvbi4gU2V0cyB0aGUgYG51bWJlcmAgdmFsaWRhdGlvbgorICAg
KiBlcnJvciBpZiBub3QgYSB2YWxpZCBudW1iZXIuCisgICAqCisgICAqIDxkaXYgY2xhc3M9ImFs
ZXJ0IGFsZXJ0LXdhcm5pbmciPgorICAgKiBUaGUgbW9kZWwgbXVzdCBhbHdheXMgYmUgb2YgdHlw
ZSBgbnVtYmVyYCBvdGhlcndpc2UgQW5ndWxhciB3aWxsIHRocm93IGFuIGVycm9yLgorICAgKiBC
ZSBhd2FyZSB0aGF0IGEgc3RyaW5nIGNvbnRhaW5pbmcgYSBudW1iZXIgaXMgbm90IGVub3VnaC4g
U2VlIHRoZSB7QGxpbmsgbmdNb2RlbDpudW1mbXR9CisgICAqIGVycm9yIGRvY3MgZm9yIG1vcmUg
aW5mb3JtYXRpb24gYW5kIGFuIGV4YW1wbGUgb2YgaG93IHRvIGNvbnZlcnQgeW91ciBtb2RlbCBp
ZiBuZWNlc3NhcnkuCisgICAqIDwvZGl2PgorICAgKgorICAgKiAjIyBJc3N1ZXMgd2l0aCBIVE1M
NSBjb25zdHJhaW50IHZhbGlkYXRpb24KKyAgICoKKyAgICogSW4gYnJvd3NlcnMgdGhhdCBmb2xs
b3cgdGhlCisgICAqIFtIVE1MNSBzcGVjaWZpY2F0aW9uXShodHRwczovL2h0bWwuc3BlYy53aGF0
d2cub3JnL211bHRpcGFnZS9mb3Jtcy5odG1sI251bWJlci1zdGF0ZS0lMjh0eXBlPW51bWJlciUy
OSksCisgICAqIGBpbnB1dFtudW1iZXJdYCBkb2VzIG5vdCB3b3JrIGFzIGV4cGVjdGVkIHdpdGgg
e0BsaW5rIG5nTW9kZWxPcHRpb25zIGBuZ01vZGVsT3B0aW9ucy5hbGxvd0ludmFsaWRgfS4KKyAg
ICogSWYgYSBub24tbnVtYmVyIGlzIGVudGVyZWQgaW4gdGhlIGlucHV0LCB0aGUgYnJvd3NlciB3
aWxsIHJlcG9ydCB0aGUgdmFsdWUgYXMgYW4gZW1wdHkgc3RyaW5nLAorICAgKiB3aGljaCBtZWFu
cyB0aGUgdmlldyAvIG1vZGVsIHZhbHVlcyBpbiBgbmdNb2RlbGAgYW5kIHN1YnNlcXVlbnRseSB0
aGUgc2NvcGUgdmFsdWUKKyAgICogd2lsbCBhbHNvIGJlIGFuIGVtcHR5IHN0cmluZy4KKyAgICoK
KyAgICoKKyAgICogQHBhcmFtIHtzdHJpbmd9IG5nTW9kZWwgQXNzaWduYWJsZSBhbmd1bGFyIGV4
cHJlc3Npb24gdG8gZGF0YS1iaW5kIHRvLgorICAgKiBAcGFyYW0ge3N0cmluZz19IG5hbWUgUHJv
cGVydHkgbmFtZSBvZiB0aGUgZm9ybSB1bmRlciB3aGljaCB0aGUgY29udHJvbCBpcyBwdWJsaXNo
ZWQuCisgICAqIEBwYXJhbSB7c3RyaW5nPX0gbWluIFNldHMgdGhlIGBtaW5gIHZhbGlkYXRpb24g
ZXJyb3Iga2V5IGlmIHRoZSB2YWx1ZSBlbnRlcmVkIGlzIGxlc3MgdGhhbiBgbWluYC4KKyAgICog
QHBhcmFtIHtzdHJpbmc9fSBtYXggU2V0cyB0aGUgYG1heGAgdmFsaWRhdGlvbiBlcnJvciBrZXkg
aWYgdGhlIHZhbHVlIGVudGVyZWQgaXMgZ3JlYXRlciB0aGFuIGBtYXhgLgorICAgKiBAcGFyYW0g
e3N0cmluZz19IHJlcXVpcmVkIFNldHMgYHJlcXVpcmVkYCB2YWxpZGF0aW9uIGVycm9yIGtleSBp
ZiB0aGUgdmFsdWUgaXMgbm90IGVudGVyZWQuCisgICAqIEBwYXJhbSB7c3RyaW5nPX0gbmdSZXF1
aXJlZCBBZGRzIGByZXF1aXJlZGAgYXR0cmlidXRlIGFuZCBgcmVxdWlyZWRgIHZhbGlkYXRpb24g
Y29uc3RyYWludCB0bworICAgKiAgICB0aGUgZWxlbWVudCB3aGVuIHRoZSBuZ1JlcXVpcmVkIGV4
cHJlc3Npb24gZXZhbHVhdGVzIHRvIHRydWUuIFVzZSBgbmdSZXF1aXJlZGAgaW5zdGVhZCBvZgor
ICAgKiAgICBgcmVxdWlyZWRgIHdoZW4geW91IHdhbnQgdG8gZGF0YS1iaW5kIHRvIHRoZSBgcmVx
dWlyZWRgIGF0dHJpYnV0ZS4KKyAgICogQHBhcmFtIHtudW1iZXI9fSBuZ01pbmxlbmd0aCBTZXRz
IGBtaW5sZW5ndGhgIHZhbGlkYXRpb24gZXJyb3Iga2V5IGlmIHRoZSB2YWx1ZSBpcyBzaG9ydGVy
IHRoYW4KKyAgICogICAgbWlubGVuZ3RoLgorICAgKiBAcGFyYW0ge251bWJlcj19IG5nTWF4bGVu
Z3RoIFNldHMgYG1heGxlbmd0aGAgdmFsaWRhdGlvbiBlcnJvciBrZXkgaWYgdGhlIHZhbHVlIGlz
IGxvbmdlciB0aGFuCisgICAqICAgIG1heGxlbmd0aC4gU2V0dGluZyB0aGUgYXR0cmlidXRlIHRv
IGEgbmVnYXRpdmUgb3Igbm9uLW51bWVyaWMgdmFsdWUsIGFsbG93cyB2aWV3IHZhbHVlcyBvZgor
ICAgKiAgICBhbnkgbGVuZ3RoLgorICAgKiBAcGFyYW0ge3N0cmluZz19IHBhdHRlcm4gU2ltaWxh
ciB0byBgbmdQYXR0ZXJuYCBleGNlcHQgdGhhdCB0aGUgYXR0cmlidXRlIHZhbHVlIGlzIHRoZSBh
Y3R1YWwgc3RyaW5nCisgICAqICAgIHRoYXQgY29udGFpbnMgdGhlIHJlZ3VsYXIgZXhwcmVzc2lv
biBib2R5IHRoYXQgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gYSByZWd1bGFyIGV4cHJlc3Npb24KKyAg
ICogICAgYXMgaW4gdGhlIG5nUGF0dGVybiBkaXJlY3RpdmUuCisgICAqIEBwYXJhbSB7c3RyaW5n
PX0gbmdQYXR0ZXJuIFNldHMgYHBhdHRlcm5gIHZhbGlkYXRpb24gZXJyb3Iga2V5IGlmIHRoZSBu
Z01vZGVsIHZhbHVlIGRvZXMgbm90IG1hdGNoCisgICAqICAgIGEgUmVnRXhwIGZvdW5kIGJ5IGV2
YWx1YXRpbmcgdGhlIEFuZ3VsYXIgZXhwcmVzc2lvbiBnaXZlbiBpbiB0aGUgYXR0cmlidXRlIHZh
bHVlLgorICAgKiAgICBJZiB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gYSBSZWdFeHAgb2Jq
ZWN0LCB0aGVuIHRoaXMgaXMgdXNlZCBkaXJlY3RseS4KKyAgICogICAgSWYgdGhlIGV4cHJlc3Np
b24gZXZhbHVhdGVzIHRvIGEgc3RyaW5nLCB0aGVuIGl0IHdpbGwgYmUgY29udmVydGVkIHRvIGEg
UmVnRXhwCisgICAqICAgIGFmdGVyIHdyYXBwaW5nIGl0IGluIGBeYCBhbmQgYCRgIGNoYXJhY3Rl
cnMuIEZvciBpbnN0YW5jZSwgYCJhYmMiYCB3aWxsIGJlIGNvbnZlcnRlZCB0bworICAgKiAgICBg
bmV3IFJlZ0V4cCgnXmFiYyQnKWAuPGJyIC8+CisgICAqICAgICoqTm90ZToqKiBBdm9pZCB1c2lu
ZyB0aGUgYGdgIGZsYWcgb24gdGhlIFJlZ0V4cCwgYXMgaXQgd2lsbCBjYXVzZSBlYWNoIHN1Y2Nl
c3NpdmUgc2VhcmNoIHRvCisgICAqICAgIHN0YXJ0IGF0IHRoZSBpbmRleCBvZiB0aGUgbGFzdCBz
ZWFyY2gncyBtYXRjaCwgdGh1cyBub3QgdGFraW5nIHRoZSB3aG9sZSBpbnB1dCB2YWx1ZSBpbnRv
CisgICAqICAgIGFjY291bnQuCisgICAqIEBwYXJhbSB7c3RyaW5nPX0gbmdDaGFuZ2UgQW5ndWxh
ciBleHByZXNzaW9uIHRvIGJlIGV4ZWN1dGVkIHdoZW4gaW5wdXQgY2hhbmdlcyBkdWUgdG8gdXNl
cgorICAgKiAgICBpbnRlcmFjdGlvbiB3aXRoIHRoZSBpbnB1dCBlbGVtZW50LgorICAgKgorICAg
KiBAZXhhbXBsZQorICAgICAgPGV4YW1wbGUgbmFtZT0ibnVtYmVyLWlucHV0LWRpcmVjdGl2ZSIg
bW9kdWxlPSJudW1iZXJFeGFtcGxlIj4KKyAgICAgICAgPGZpbGUgbmFtZT0iaW5kZXguaHRtbCI+
CisgICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICBhbmd1bGFyLm1vZHVsZSgnbnVtYmVyRXhh
bXBsZScsIFtdKQorICAgICAgICAgICAgIC5jb250cm9sbGVyKCdFeGFtcGxlQ29udHJvbGxlcics
IFsnJHNjb3BlJywgZnVuY3Rpb24oJHNjb3BlKSB7CisgICAgICAgICAgICAgICAkc2NvcGUuZXhh
bXBsZSA9IHsKKyAgICAgICAgICAgICAgICAgdmFsdWU6IDEyCisgICAgICAgICAgICAgICB9Owor
ICAgICAgICAgICAgIH1dKTsKKyAgICAgICAgIDwvc2NyaXB0PgorICAgICAgICAgPGZvcm0gbmFt
ZT0ibXlGb3JtIiBuZy1jb250cm9sbGVyPSJFeGFtcGxlQ29udHJvbGxlciI+CisgICAgICAgICAg
IDxsYWJlbD5OdW1iZXI6CisgICAgICAgICAgICAgPGlucHV0IHR5cGU9Im51bWJlciIgbmFtZT0i
aW5wdXQiIG5nLW1vZGVsPSJleGFtcGxlLnZhbHVlIgorICAgICAgICAgICAgICAgICAgICBtaW49
IjAiIG1heD0iOTkiIHJlcXVpcmVkPgorICAgICAgICAgIDwvbGFiZWw+CisgICAgICAgICAgIDxk
aXYgcm9sZT0iYWxlcnQiPgorICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJlcnJvciIgbmctc2hv
dz0ibXlGb3JtLmlucHV0LiRlcnJvci5yZXF1aXJlZCI+CisgICAgICAgICAgICAgICBSZXF1aXJl
ZCE8L3NwYW4+CisgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImVycm9yIiBuZy1zaG93PSJteUZv
cm0uaW5wdXQuJGVycm9yLm51bWJlciI+CisgICAgICAgICAgICAgICBOb3QgdmFsaWQgbnVtYmVy
ITwvc3Bhbj4KKyAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgIDx0dD52YWx1ZSA9IHt7ZXhh
bXBsZS52YWx1ZX19PC90dD48YnIvPgorICAgICAgICAgICA8dHQ+bXlGb3JtLmlucHV0LiR2YWxp
ZCA9IHt7bXlGb3JtLmlucHV0LiR2YWxpZH19PC90dD48YnIvPgorICAgICAgICAgICA8dHQ+bXlG
b3JtLmlucHV0LiRlcnJvciA9IHt7bXlGb3JtLmlucHV0LiRlcnJvcn19PC90dD48YnIvPgorICAg
ICAgICAgICA8dHQ+bXlGb3JtLiR2YWxpZCA9IHt7bXlGb3JtLiR2YWxpZH19PC90dD48YnIvPgor
ICAgICAgICAgICA8dHQ+bXlGb3JtLiRlcnJvci5yZXF1aXJlZCA9IHt7ISFteUZvcm0uJGVycm9y
LnJlcXVpcmVkfX08L3R0Pjxici8+CisgICAgICAgICAgPC9mb3JtPgorICAgICAgICA8L2ZpbGU+
CisgICAgICAgIDxmaWxlIG5hbWU9InByb3RyYWN0b3IuanMiIHR5cGU9InByb3RyYWN0b3IiPgor
ICAgICAgICAgIHZhciB2YWx1ZSA9IGVsZW1lbnQoYnkuYmluZGluZygnZXhhbXBsZS52YWx1ZScp
KTsKKyAgICAgICAgICB2YXIgdmFsaWQgPSBlbGVtZW50KGJ5LmJpbmRpbmcoJ215Rm9ybS5pbnB1
dC4kdmFsaWQnKSk7CisgICAgICAgICAgdmFyIGlucHV0ID0gZWxlbWVudChieS5tb2RlbCgnZXhh
bXBsZS52YWx1ZScpKTsKKworICAgICAgICAgIGl0KCdzaG91bGQgaW5pdGlhbGl6ZSB0byBtb2Rl
bCcsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZXhwZWN0KHZhbHVlLmdldFRleHQoKSkudG9D
b250YWluKCcxMicpOworICAgICAgICAgICAgZXhwZWN0KHZhbGlkLmdldFRleHQoKSkudG9Db250
YWluKCd0cnVlJyk7CisgICAgICAgICAgfSk7CisKKyAgICAgICAgICBpdCgnc2hvdWxkIGJlIGlu
dmFsaWQgaWYgZW1wdHknLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGlucHV0LmNsZWFyKCk7
CisgICAgICAgICAgICBpbnB1dC5zZW5kS2V5cygnJyk7CisgICAgICAgICAgICBleHBlY3QodmFs
dWUuZ2V0VGV4dCgpKS50b0VxdWFsKCd2YWx1ZSA9Jyk7CisgICAgICAgICAgICBleHBlY3QodmFs
aWQuZ2V0VGV4dCgpKS50b0NvbnRhaW4oJ2ZhbHNlJyk7CisgICAgICAgICAgfSk7CisKKyAgICAg
ICAgICBpdCgnc2hvdWxkIGJlIGludmFsaWQgaWYgb3ZlciBtYXgnLCBmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgIGlucHV0LmNsZWFyKCk7CisgICAgICAgICAgICBpbnB1dC5zZW5kS2V5cygnMTIz
Jyk7CisgICAgICAgICAgICBleHBlY3QodmFsdWUuZ2V0VGV4dCgpKS50b0VxdWFsKCd2YWx1ZSA9
Jyk7CisgICAgICAgICAgICBleHBlY3QodmFsaWQuZ2V0VGV4dCgpKS50b0NvbnRhaW4oJ2ZhbHNl
Jyk7CisgICAgICAgICAgfSk7CisgICAgICAgIDwvZmlsZT4KKyAgICAgIDwvZXhhbXBsZT4KKyAg
ICovCisgICdudW1iZXInOiBudW1iZXJJbnB1dFR5cGUsCisKKworICAvKioKKyAgICogQG5nZG9j
IGlucHV0CisgICAqIEBuYW1lIGlucHV0W3VybF0KKyAgICoKKyAgICogQGRlc2NyaXB0aW9uCisg
ICAqIFRleHQgaW5wdXQgd2l0aCBVUkwgdmFsaWRhdGlvbi4gU2V0cyB0aGUgYHVybGAgdmFsaWRh
dGlvbiBlcnJvciBrZXkgaWYgdGhlIGNvbnRlbnQgaXMgbm90IGEKKyAgICogdmFsaWQgVVJMLgor
ICAgKgorICAgKiA8ZGl2IGNsYXNzPSJhbGVydCBhbGVydC13YXJuaW5nIj4KKyAgICogKipOb3Rl
OioqIGBpbnB1dFt1cmxdYCB1c2VzIGEgcmVnZXggdG8gdmFsaWRhdGUgdXJscyB0aGF0IGlzIGRl
cml2ZWQgZnJvbSB0aGUgcmVnZXgKKyAgICogdXNlZCBpbiBDaHJvbWl1bS4gSWYgeW91IG5lZWQg
c3RyaWN0ZXIgdmFsaWRhdGlvbiwgeW91IGNhbiB1c2UgYG5nLXBhdHRlcm5gIG9yIG1vZGlmeQor
ICAgKiB0aGUgYnVpbHQtaW4gdmFsaWRhdG9ycyAoc2VlIHRoZSB7QGxpbmsgZ3VpZGUvZm9ybXMg
Rm9ybXMgZ3VpZGV9KQorICAgKiA8L2Rpdj4KKyAgICoKKyAgICogQHBhcmFtIHtzdHJpbmd9IG5n
TW9kZWwgQXNzaWduYWJsZSBhbmd1bGFyIGV4cHJlc3Npb24gdG8gZGF0YS1iaW5kIHRvLgorICAg
KiBAcGFyYW0ge3N0cmluZz19IG5hbWUgUHJvcGVydHkgbmFtZSBvZiB0aGUgZm9ybSB1bmRlciB3
aGljaCB0aGUgY29udHJvbCBpcyBwdWJsaXNoZWQuCisgICAqIEBwYXJhbSB7c3RyaW5nPX0gcmVx
dWlyZWQgU2V0cyBgcmVxdWlyZWRgIHZhbGlkYXRpb24gZXJyb3Iga2V5IGlmIHRoZSB2YWx1ZSBp
cyBub3QgZW50ZXJlZC4KKyAgICogQHBhcmFtIHtzdHJpbmc9fSBuZ1JlcXVpcmVkIEFkZHMgYHJl
cXVpcmVkYCBhdHRyaWJ1dGUgYW5kIGByZXF1aXJlZGAgdmFsaWRhdGlvbiBjb25zdHJhaW50IHRv
CisgICAqICAgIHRoZSBlbGVtZW50IHdoZW4gdGhlIG5nUmVxdWlyZWQgZXhwcmVzc2lvbiBldmFs
dWF0ZXMgdG8gdHJ1ZS4gVXNlIGBuZ1JlcXVpcmVkYCBpbnN0ZWFkIG9mCisgICAqICAgIGByZXF1
aXJlZGAgd2hlbiB5b3Ugd2FudCB0byBkYXRhLWJpbmQgdG8gdGhlIGByZXF1aXJlZGAgYXR0cmli
dXRlLgorICAgKiBAcGFyYW0ge251bWJlcj19IG5nTWlubGVuZ3RoIFNldHMgYG1pbmxlbmd0aGAg
dmFsaWRhdGlvbiBlcnJvciBrZXkgaWYgdGhlIHZhbHVlIGlzIHNob3J0ZXIgdGhhbgorICAgKiAg
ICBtaW5sZW5ndGguCisgICAqIEBwYXJhbSB7bnVtYmVyPX0gbmdNYXhsZW5ndGggU2V0cyBgbWF4
bGVuZ3RoYCB2YWxpZGF0aW9uIGVycm9yIGtleSBpZiB0aGUgdmFsdWUgaXMgbG9uZ2VyIHRoYW4K
KyAgICogICAgbWF4bGVuZ3RoLiBTZXR0aW5nIHRoZSBhdHRyaWJ1dGUgdG8gYSBuZWdhdGl2ZSBv
ciBub24tbnVtZXJpYyB2YWx1ZSwgYWxsb3dzIHZpZXcgdmFsdWVzIG9mCisgICAqICAgIGFueSBs
ZW5ndGguCisgICAqIEBwYXJhbSB7c3RyaW5nPX0gcGF0dGVybiBTaW1pbGFyIHRvIGBuZ1BhdHRl
cm5gIGV4Y2VwdCB0aGF0IHRoZSBhdHRyaWJ1dGUgdmFsdWUgaXMgdGhlIGFjdHVhbCBzdHJpbmcK
KyAgICogICAgdGhhdCBjb250YWlucyB0aGUgcmVndWxhciBleHByZXNzaW9uIGJvZHkgdGhhdCB3
aWxsIGJlIGNvbnZlcnRlZCB0byBhIHJlZ3VsYXIgZXhwcmVzc2lvbgorICAgKiAgICBhcyBpbiB0
aGUgbmdQYXR0ZXJuIGRpcmVjdGl2ZS4KKyAgICogQHBhcmFtIHtzdHJpbmc9fSBuZ1BhdHRlcm4g
U2V0cyBgcGF0dGVybmAgdmFsaWRhdGlvbiBlcnJvciBrZXkgaWYgdGhlIG5nTW9kZWwgdmFsdWUg
ZG9lcyBub3QgbWF0Y2gKKyAgICogICAgYSBSZWdFeHAgZm91bmQgYnkgZXZhbHVhdGluZyB0aGUg
QW5ndWxhciBleHByZXNzaW9uIGdpdmVuIGluIHRoZSBhdHRyaWJ1dGUgdmFsdWUuCisgICAqICAg
IElmIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byBhIFJlZ0V4cCBvYmplY3QsIHRoZW4gdGhp
cyBpcyB1c2VkIGRpcmVjdGx5LgorICAgKiAgICBJZiB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMg
dG8gYSBzdHJpbmcsIHRoZW4gaXQgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gYSBSZWdFeHAKKyAgICog
ICAgYWZ0ZXIgd3JhcHBpbmcgaXQgaW4gYF5gIGFuZCBgJGAgY2hhcmFjdGVycy4gRm9yIGluc3Rh
bmNlLCBgImFiYyJgIHdpbGwgYmUgY29udmVydGVkIHRvCisgICAqICAgIGBuZXcgUmVnRXhwKCde
YWJjJCcpYC48YnIgLz4KKyAgICogICAgKipOb3RlOioqIEF2b2lkIHVzaW5nIHRoZSBgZ2AgZmxh
ZyBvbiB0aGUgUmVnRXhwLCBhcyBpdCB3aWxsIGNhdXNlIGVhY2ggc3VjY2Vzc2l2ZSBzZWFyY2gg
dG8KKyAgICogICAgc3RhcnQgYXQgdGhlIGluZGV4IG9mIHRoZSBsYXN0IHNlYXJjaCdzIG1hdGNo
LCB0aHVzIG5vdCB0YWtpbmcgdGhlIHdob2xlIGlucHV0IHZhbHVlIGludG8KKyAgICogICAgYWNj
b3VudC4KKyAgICogQHBhcmFtIHtzdHJpbmc9fSBuZ0NoYW5nZSBBbmd1bGFyIGV4cHJlc3Npb24g
dG8gYmUgZXhlY3V0ZWQgd2hlbiBpbnB1dCBjaGFuZ2VzIGR1ZSB0byB1c2VyCisgICAqICAgIGlu
dGVyYWN0aW9uIHdpdGggdGhlIGlucHV0IGVsZW1lbnQuCisgICAqCisgICAqIEBleGFtcGxlCisg
ICAgICA8ZXhhbXBsZSBuYW1lPSJ1cmwtaW5wdXQtZGlyZWN0aXZlIiBtb2R1bGU9InVybEV4YW1w
bGUiPgorICAgICAgICA8ZmlsZSBuYW1lPSJpbmRleC5odG1sIj4KKyAgICAgICAgIDxzY3JpcHQ+
CisgICAgICAgICAgIGFuZ3VsYXIubW9kdWxlKCd1cmxFeGFtcGxlJywgW10pCisgICAgICAgICAg
ICAgLmNvbnRyb2xsZXIoJ0V4YW1wbGVDb250cm9sbGVyJywgWyckc2NvcGUnLCBmdW5jdGlvbigk
c2NvcGUpIHsKKyAgICAgICAgICAgICAgICRzY29wZS51cmwgPSB7CisgICAgICAgICAgICAgICAg
IHRleHQ6ICdodHRwOi8vZ29vZ2xlLmNvbScKKyAgICAgICAgICAgICAgIH07CisgICAgICAgICAg
ICAgfV0pOworICAgICAgICAgPC9zY3JpcHQ+CisgICAgICAgICA8Zm9ybSBuYW1lPSJteUZvcm0i
IG5nLWNvbnRyb2xsZXI9IkV4YW1wbGVDb250cm9sbGVyIj4KKyAgICAgICAgICAgPGxhYmVsPlVS
TDoKKyAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idXJsIiBuYW1lPSJpbnB1dCIgbmctbW9kZWw9
InVybC50ZXh0IiByZXF1aXJlZD4KKyAgICAgICAgICAgPGxhYmVsPgorICAgICAgICAgICA8ZGl2
IHJvbGU9ImFsZXJ0Ij4KKyAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZXJyb3IiIG5nLXNob3c9
Im15Rm9ybS5pbnB1dC4kZXJyb3IucmVxdWlyZWQiPgorICAgICAgICAgICAgICAgUmVxdWlyZWQh
PC9zcGFuPgorICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJlcnJvciIgbmctc2hvdz0ibXlGb3Jt
LmlucHV0LiRlcnJvci51cmwiPgorICAgICAgICAgICAgICAgTm90IHZhbGlkIHVybCE8L3NwYW4+
CisgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICA8dHQ+dGV4dCA9IHt7dXJsLnRleHR9fTwv
dHQ+PGJyLz4KKyAgICAgICAgICAgPHR0Pm15Rm9ybS5pbnB1dC4kdmFsaWQgPSB7e215Rm9ybS5p
bnB1dC4kdmFsaWR9fTwvdHQ+PGJyLz4KKyAgICAgICAgICAgPHR0Pm15Rm9ybS5pbnB1dC4kZXJy
b3IgPSB7e215Rm9ybS5pbnB1dC4kZXJyb3J9fTwvdHQ+PGJyLz4KKyAgICAgICAgICAgPHR0Pm15
Rm9ybS4kdmFsaWQgPSB7e215Rm9ybS4kdmFsaWR9fTwvdHQ+PGJyLz4KKyAgICAgICAgICAgPHR0
Pm15Rm9ybS4kZXJyb3IucmVxdWlyZWQgPSB7eyEhbXlGb3JtLiRlcnJvci5yZXF1aXJlZH19PC90
dD48YnIvPgorICAgICAgICAgICA8dHQ+bXlGb3JtLiRlcnJvci51cmwgPSB7eyEhbXlGb3JtLiRl
cnJvci51cmx9fTwvdHQ+PGJyLz4KKyAgICAgICAgICA8L2Zvcm0+CisgICAgICAgIDwvZmlsZT4K
KyAgICAgICAgPGZpbGUgbmFtZT0icHJvdHJhY3Rvci5qcyIgdHlwZT0icHJvdHJhY3RvciI+Cisg
ICAgICAgICAgdmFyIHRleHQgPSBlbGVtZW50KGJ5LmJpbmRpbmcoJ3VybC50ZXh0JykpOworICAg
ICAgICAgIHZhciB2YWxpZCA9IGVsZW1lbnQoYnkuYmluZGluZygnbXlGb3JtLmlucHV0LiR2YWxp
ZCcpKTsKKyAgICAgICAgICB2YXIgaW5wdXQgPSBlbGVtZW50KGJ5Lm1vZGVsKCd1cmwudGV4dCcp
KTsKKworICAgICAgICAgIGl0KCdzaG91bGQgaW5pdGlhbGl6ZSB0byBtb2RlbCcsIGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgZXhwZWN0KHRleHQuZ2V0VGV4dCgpKS50b0NvbnRhaW4oJ2h0dHA6
Ly9nb29nbGUuY29tJyk7CisgICAgICAgICAgICBleHBlY3QodmFsaWQuZ2V0VGV4dCgpKS50b0Nv
bnRhaW4oJ3RydWUnKTsKKyAgICAgICAgICB9KTsKKworICAgICAgICAgIGl0KCdzaG91bGQgYmUg
aW52YWxpZCBpZiBlbXB0eScsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgaW5wdXQuY2xlYXIo
KTsKKyAgICAgICAgICAgIGlucHV0LnNlbmRLZXlzKCcnKTsKKworICAgICAgICAgICAgZXhwZWN0
KHRleHQuZ2V0VGV4dCgpKS50b0VxdWFsKCd0ZXh0ID0nKTsKKyAgICAgICAgICAgIGV4cGVjdCh2
YWxpZC5nZXRUZXh0KCkpLnRvQ29udGFpbignZmFsc2UnKTsKKyAgICAgICAgICB9KTsKKworICAg
ICAgICAgIGl0KCdzaG91bGQgYmUgaW52YWxpZCBpZiBub3QgdXJsJywgZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICBpbnB1dC5jbGVhcigpOworICAgICAgICAgICAgaW5wdXQuc2VuZEtleXMoJ2Jv
eCcpOworCisgICAgICAgICAgICBleHBlY3QodmFsaWQuZ2V0VGV4dCgpKS50b0NvbnRhaW4oJ2Zh
bHNlJyk7CisgICAgICAgICAgfSk7CisgICAgICAgIDwvZmlsZT4KKyAgICAgIDwvZXhhbXBsZT4K
KyAgICovCisgICd1cmwnOiB1cmxJbnB1dFR5cGUsCisKKworICAvKioKKyAgICogQG5nZG9jIGlu
cHV0CisgICAqIEBuYW1lIGlucHV0W2VtYWlsXQorICAgKgorICAgKiBAZGVzY3JpcHRpb24KKyAg
ICogVGV4dCBpbnB1dCB3aXRoIGVtYWlsIHZhbGlkYXRpb24uIFNldHMgdGhlIGBlbWFpbGAgdmFs
aWRhdGlvbiBlcnJvciBrZXkgaWYgbm90IGEgdmFsaWQgZW1haWwKKyAgICogYWRkcmVzcy4KKyAg
ICoKKyAgICogPGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtd2FybmluZyI+CisgICAqICoqTm90ZToq
KiBgaW5wdXRbZW1haWxdYCB1c2VzIGEgcmVnZXggdG8gdmFsaWRhdGUgZW1haWwgYWRkcmVzc2Vz
IHRoYXQgaXMgZGVyaXZlZCBmcm9tIHRoZSByZWdleAorICAgKiB1c2VkIGluIENocm9taXVtLiBJ
ZiB5b3UgbmVlZCBzdHJpY3RlciB2YWxpZGF0aW9uIChlLmcuIHJlcXVpcmluZyBhIHRvcC1sZXZl
bCBkb21haW4pLCB5b3UgY2FuCisgICAqIHVzZSBgbmctcGF0dGVybmAgb3IgbW9kaWZ5IHRoZSBi
dWlsdC1pbiB2YWxpZGF0b3JzIChzZWUgdGhlIHtAbGluayBndWlkZS9mb3JtcyBGb3JtcyBndWlk
ZX0pCisgICAqIDwvZGl2PgorICAgKgorICAgKiBAcGFyYW0ge3N0cmluZ30gbmdNb2RlbCBBc3Np
Z25hYmxlIGFuZ3VsYXIgZXhwcmVzc2lvbiB0byBkYXRhLWJpbmQgdG8uCisgICAqIEBwYXJhbSB7
c3RyaW5nPX0gbmFtZSBQcm9wZXJ0eSBuYW1lIG9mIHRoZSBmb3JtIHVuZGVyIHdoaWNoIHRoZSBj
b250cm9sIGlzIHB1Ymxpc2hlZC4KKyAgICogQHBhcmFtIHtzdHJpbmc9fSByZXF1aXJlZCBTZXRz
IGByZXF1aXJlZGAgdmFsaWRhdGlvbiBlcnJvciBrZXkgaWYgdGhlIHZhbHVlIGlzIG5vdCBlbnRl
cmVkLgorICAgKiBAcGFyYW0ge3N0cmluZz19IG5nUmVxdWlyZWQgQWRkcyBgcmVxdWlyZWRgIGF0
dHJpYnV0ZSBhbmQgYHJlcXVpcmVkYCB2YWxpZGF0aW9uIGNvbnN0cmFpbnQgdG8KKyAgICogICAg
dGhlIGVsZW1lbnQgd2hlbiB0aGUgbmdSZXF1aXJlZCBleHByZXNzaW9uIGV2YWx1YXRlcyB0byB0
cnVlLiBVc2UgYG5nUmVxdWlyZWRgIGluc3RlYWQgb2YKKyAgICogICAgYHJlcXVpcmVkYCB3aGVu
IHlvdSB3YW50IHRvIGRhdGEtYmluZCB0byB0aGUgYHJlcXVpcmVkYCBhdHRyaWJ1dGUuCisgICAq
IEBwYXJhbSB7bnVtYmVyPX0gbmdNaW5sZW5ndGggU2V0cyBgbWlubGVuZ3RoYCB2YWxpZGF0aW9u
IGVycm9yIGtleSBpZiB0aGUgdmFsdWUgaXMgc2hvcnRlciB0aGFuCisgICAqICAgIG1pbmxlbmd0
aC4KKyAgICogQHBhcmFtIHtudW1iZXI9fSBuZ01heGxlbmd0aCBTZXRzIGBtYXhsZW5ndGhgIHZh
bGlkYXRpb24gZXJyb3Iga2V5IGlmIHRoZSB2YWx1ZSBpcyBsb25nZXIgdGhhbgorICAgKiAgICBt
YXhsZW5ndGguIFNldHRpbmcgdGhlIGF0dHJpYnV0ZSB0byBhIG5lZ2F0aXZlIG9yIG5vbi1udW1l
cmljIHZhbHVlLCBhbGxvd3MgdmlldyB2YWx1ZXMgb2YKKyAgICogICAgYW55IGxlbmd0aC4KKyAg
ICogQHBhcmFtIHtzdHJpbmc9fSBwYXR0ZXJuIFNpbWlsYXIgdG8gYG5nUGF0dGVybmAgZXhjZXB0
IHRoYXQgdGhlIGF0dHJpYnV0ZSB2YWx1ZSBpcyB0aGUgYWN0dWFsIHN0cmluZworICAgKiAgICB0
aGF0IGNvbnRhaW5zIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gYm9keSB0aGF0IHdpbGwgYmUgY29u
dmVydGVkIHRvIGEgcmVndWxhciBleHByZXNzaW9uCisgICAqICAgIGFzIGluIHRoZSBuZ1BhdHRl
cm4gZGlyZWN0aXZlLgorICAgKiBAcGFyYW0ge3N0cmluZz19IG5nUGF0dGVybiBTZXRzIGBwYXR0
ZXJuYCB2YWxpZGF0aW9uIGVycm9yIGtleSBpZiB0aGUgbmdNb2RlbCB2YWx1ZSBkb2VzIG5vdCBt
YXRjaAorICAgKiAgICBhIFJlZ0V4cCBmb3VuZCBieSBldmFsdWF0aW5nIHRoZSBBbmd1bGFyIGV4
cHJlc3Npb24gZ2l2ZW4gaW4gdGhlIGF0dHJpYnV0ZSB2YWx1ZS4KKyAgICogICAgSWYgdGhlIGV4
cHJlc3Npb24gZXZhbHVhdGVzIHRvIGEgUmVnRXhwIG9iamVjdCwgdGhlbiB0aGlzIGlzIHVzZWQg
ZGlyZWN0bHkuCisgICAqICAgIElmIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byBhIHN0cmlu
ZywgdGhlbiBpdCB3aWxsIGJlIGNvbnZlcnRlZCB0byBhIFJlZ0V4cAorICAgKiAgICBhZnRlciB3
cmFwcGluZyBpdCBpbiBgXmAgYW5kIGAkYCBjaGFyYWN0ZXJzLiBGb3IgaW5zdGFuY2UsIGAiYWJj
ImAgd2lsbCBiZSBjb252ZXJ0ZWQgdG8KKyAgICogICAgYG5ldyBSZWdFeHAoJ15hYmMkJylgLjxi
ciAvPgorICAgKiAgICAqKk5vdGU6KiogQXZvaWQgdXNpbmcgdGhlIGBnYCBmbGFnIG9uIHRoZSBS
ZWdFeHAsIGFzIGl0IHdpbGwgY2F1c2UgZWFjaCBzdWNjZXNzaXZlIHNlYXJjaCB0bworICAgKiAg
ICBzdGFydCBhdCB0aGUgaW5kZXggb2YgdGhlIGxhc3Qgc2VhcmNoJ3MgbWF0Y2gsIHRodXMgbm90
IHRha2luZyB0aGUgd2hvbGUgaW5wdXQgdmFsdWUgaW50bworICAgKiAgICBhY2NvdW50LgorICAg
KiBAcGFyYW0ge3N0cmluZz19IG5nQ2hhbmdlIEFuZ3VsYXIgZXhwcmVzc2lvbiB0byBiZSBleGVj
dXRlZCB3aGVuIGlucHV0IGNoYW5nZXMgZHVlIHRvIHVzZXIKKyAgICogICAgaW50ZXJhY3Rpb24g
d2l0aCB0aGUgaW5wdXQgZWxlbWVudC4KKyAgICoKKyAgICogQGV4YW1wbGUKKyAgICAgIDxleGFt
cGxlIG5hbWU9ImVtYWlsLWlucHV0LWRpcmVjdGl2ZSIgbW9kdWxlPSJlbWFpbEV4YW1wbGUiPgor
ICAgICAgICA8ZmlsZSBuYW1lPSJpbmRleC5odG1sIj4KKyAgICAgICAgIDxzY3JpcHQ+CisgICAg
ICAgICAgIGFuZ3VsYXIubW9kdWxlKCdlbWFpbEV4YW1wbGUnLCBbXSkKKyAgICAgICAgICAgICAu
Y29udHJvbGxlcignRXhhbXBsZUNvbnRyb2xsZXInLCBbJyRzY29wZScsIGZ1bmN0aW9uKCRzY29w
ZSkgeworICAgICAgICAgICAgICAgJHNjb3BlLmVtYWlsID0geworICAgICAgICAgICAgICAgICB0
ZXh0OiAnbWVAZXhhbXBsZS5jb20nCisgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgIH1d
KTsKKyAgICAgICAgIDwvc2NyaXB0PgorICAgICAgICAgICA8Zm9ybSBuYW1lPSJteUZvcm0iIG5n
LWNvbnRyb2xsZXI9IkV4YW1wbGVDb250cm9sbGVyIj4KKyAgICAgICAgICAgICA8bGFiZWw+RW1h
aWw6CisgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iZW1haWwiIG5hbWU9ImlucHV0IiBuZy1t
b2RlbD0iZW1haWwudGV4dCIgcmVxdWlyZWQ+CisgICAgICAgICAgICAgPC9sYWJlbD4KKyAgICAg
ICAgICAgICA8ZGl2IHJvbGU9ImFsZXJ0Ij4KKyAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJl
cnJvciIgbmctc2hvdz0ibXlGb3JtLmlucHV0LiRlcnJvci5yZXF1aXJlZCI+CisgICAgICAgICAg
ICAgICAgIFJlcXVpcmVkITwvc3Bhbj4KKyAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJlcnJv
ciIgbmctc2hvdz0ibXlGb3JtLmlucHV0LiRlcnJvci5lbWFpbCI+CisgICAgICAgICAgICAgICAg
IE5vdCB2YWxpZCBlbWFpbCE8L3NwYW4+CisgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAg
ICAgPHR0PnRleHQgPSB7e2VtYWlsLnRleHR9fTwvdHQ+PGJyLz4KKyAgICAgICAgICAgICA8dHQ+
bXlGb3JtLmlucHV0LiR2YWxpZCA9IHt7bXlGb3JtLmlucHV0LiR2YWxpZH19PC90dD48YnIvPgor
ICAgICAgICAgICAgIDx0dD5teUZvcm0uaW5wdXQuJGVycm9yID0ge3tteUZvcm0uaW5wdXQuJGVy
cm9yfX08L3R0Pjxici8+CisgICAgICAgICAgICAgPHR0Pm15Rm9ybS4kdmFsaWQgPSB7e215Rm9y
bS4kdmFsaWR9fTwvdHQ+PGJyLz4KKyAgICAgICAgICAgICA8dHQ+bXlGb3JtLiRlcnJvci5yZXF1
aXJlZCA9IHt7ISFteUZvcm0uJGVycm9yLnJlcXVpcmVkfX08L3R0Pjxici8+CisgICAgICAgICAg
ICAgPHR0Pm15Rm9ybS4kZXJyb3IuZW1haWwgPSB7eyEhbXlGb3JtLiRlcnJvci5lbWFpbH19PC90
dD48YnIvPgorICAgICAgICAgICA8L2Zvcm0+CisgICAgICAgICA8L2ZpbGU+CisgICAgICAgIDxm
aWxlIG5hbWU9InByb3RyYWN0b3IuanMiIHR5cGU9InByb3RyYWN0b3IiPgorICAgICAgICAgIHZh
ciB0ZXh0ID0gZWxlbWVudChieS5iaW5kaW5nKCdlbWFpbC50ZXh0JykpOworICAgICAgICAgIHZh
ciB2YWxpZCA9IGVsZW1lbnQoYnkuYmluZGluZygnbXlGb3JtLmlucHV0LiR2YWxpZCcpKTsKKyAg
ICAgICAgICB2YXIgaW5wdXQgPSBlbGVtZW50KGJ5Lm1vZGVsKCdlbWFpbC50ZXh0JykpOworCisg
ICAgICAgICAgaXQoJ3Nob3VsZCBpbml0aWFsaXplIHRvIG1vZGVsJywgZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICBleHBlY3QodGV4dC5nZXRUZXh0KCkpLnRvQ29udGFpbignbWVAZXhhbXBsZS5j
b20nKTsKKyAgICAgICAgICAgIGV4cGVjdCh2YWxpZC5nZXRUZXh0KCkpLnRvQ29udGFpbigndHJ1
ZScpOworICAgICAgICAgIH0pOworCisgICAgICAgICAgaXQoJ3Nob3VsZCBiZSBpbnZhbGlkIGlm
IGVtcHR5JywgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBpbnB1dC5jbGVhcigpOworICAgICAg
ICAgICAgaW5wdXQuc2VuZEtleXMoJycpOworICAgICAgICAgICAgZXhwZWN0KHRleHQuZ2V0VGV4
dCgpKS50b0VxdWFsKCd0ZXh0ID0nKTsKKyAgICAgICAgICAgIGV4cGVjdCh2YWxpZC5nZXRUZXh0
KCkpLnRvQ29udGFpbignZmFsc2UnKTsKKyAgICAgICAgICB9KTsKKworICAgICAgICAgIGl0KCdz
aG91bGQgYmUgaW52YWxpZCBpZiBub3QgZW1haWwnLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
IGlucHV0LmNsZWFyKCk7CisgICAgICAgICAgICBpbnB1dC5zZW5kS2V5cygneHh4Jyk7CisKKyAg
ICAgICAgICAgIGV4cGVjdCh2YWxpZC5nZXRUZXh0KCkpLnRvQ29udGFpbignZmFsc2UnKTsKKyAg
ICAgICAgICB9KTsKKyAgICAgICAgPC9maWxlPgorICAgICAgPC9leGFtcGxlPgorICAgKi8KKyAg
J2VtYWlsJzogZW1haWxJbnB1dFR5cGUsCisKKworICAvKioKKyAgICogQG5nZG9jIGlucHV0Cisg
ICAqIEBuYW1lIGlucHV0W3JhZGlvXQorICAgKgorICAgKiBAZGVzY3JpcHRpb24KKyAgICogSFRN
TCByYWRpbyBidXR0b24uCisgICAqCisgICAqIEBwYXJhbSB7c3RyaW5nfSBuZ01vZGVsIEFzc2ln
bmFibGUgYW5ndWxhciBleHByZXNzaW9uIHRvIGRhdGEtYmluZCB0by4KKyAgICogQHBhcmFtIHtz
dHJpbmd9IHZhbHVlIFRoZSB2YWx1ZSB0byB3aGljaCB0aGUgYG5nTW9kZWxgIGV4cHJlc3Npb24g
c2hvdWxkIGJlIHNldCB3aGVuIHNlbGVjdGVkLgorICAgKiAgICBOb3RlIHRoYXQgYHZhbHVlYCBv
bmx5IHN1cHBvcnRzIGBzdHJpbmdgIHZhbHVlcywgaS5lLiB0aGUgc2NvcGUgbW9kZWwgbmVlZHMg
dG8gYmUgYSBzdHJpbmcsCisgICAqICAgIHRvby4gVXNlIGBuZ1ZhbHVlYCBpZiB5b3UgbmVlZCBj
b21wbGV4IG1vZGVscyAoYG51bWJlcmAsIGBvYmplY3RgLCAuLi4pLgorICAgKiBAcGFyYW0ge3N0
cmluZz19IG5hbWUgUHJvcGVydHkgbmFtZSBvZiB0aGUgZm9ybSB1bmRlciB3aGljaCB0aGUgY29u
dHJvbCBpcyBwdWJsaXNoZWQuCisgICAqIEBwYXJhbSB7c3RyaW5nPX0gbmdDaGFuZ2UgQW5ndWxh
ciBleHByZXNzaW9uIHRvIGJlIGV4ZWN1dGVkIHdoZW4gaW5wdXQgY2hhbmdlcyBkdWUgdG8gdXNl
cgorICAgKiAgICBpbnRlcmFjdGlvbiB3aXRoIHRoZSBpbnB1dCBlbGVtZW50LgorICAgKiBAcGFy
YW0ge3N0cmluZ30gbmdWYWx1ZSBBbmd1bGFyIGV4cHJlc3Npb24gdG8gd2hpY2ggYG5nTW9kZWxg
IHdpbGwgYmUgYmUgc2V0IHdoZW4gdGhlIHJhZGlvCisgICAqICAgIGlzIHNlbGVjdGVkLiBTaG91
bGQgYmUgdXNlZCBpbnN0ZWFkIG9mIHRoZSBgdmFsdWVgIGF0dHJpYnV0ZSBpZiB5b3UgbmVlZAor
ICAgKiAgICBhIG5vbi1zdHJpbmcgYG5nTW9kZWxgIChgYm9vbGVhbmAsIGBhcnJheWAsIC4uLiku
CisgICAqCisgICAqIEBleGFtcGxlCisgICAgICA8ZXhhbXBsZSBuYW1lPSJyYWRpby1pbnB1dC1k
aXJlY3RpdmUiIG1vZHVsZT0icmFkaW9FeGFtcGxlIj4KKyAgICAgICAgPGZpbGUgbmFtZT0iaW5k
ZXguaHRtbCI+CisgICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICBhbmd1bGFyLm1vZHVsZSgn
cmFkaW9FeGFtcGxlJywgW10pCisgICAgICAgICAgICAgLmNvbnRyb2xsZXIoJ0V4YW1wbGVDb250
cm9sbGVyJywgWyckc2NvcGUnLCBmdW5jdGlvbigkc2NvcGUpIHsKKyAgICAgICAgICAgICAgICRz
Y29wZS5jb2xvciA9IHsKKyAgICAgICAgICAgICAgICAgbmFtZTogJ2JsdWUnCisgICAgICAgICAg
ICAgICB9OworICAgICAgICAgICAgICAgJHNjb3BlLnNwZWNpYWxWYWx1ZSA9IHsKKyAgICAgICAg
ICAgICAgICAgImlkIjogIjEyMzQ1IiwKKyAgICAgICAgICAgICAgICAgInZhbHVlIjogImdyZWVu
IgorICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICB9XSk7CisgICAgICAgICA8L3Njcmlw
dD4KKyAgICAgICAgIDxmb3JtIG5hbWU9Im15Rm9ybSIgbmctY29udHJvbGxlcj0iRXhhbXBsZUNv
bnRyb2xsZXIiPgorICAgICAgICAgICA8bGFiZWw+CisgICAgICAgICAgICAgPGlucHV0IHR5cGU9
InJhZGlvIiBuZy1tb2RlbD0iY29sb3IubmFtZSIgdmFsdWU9InJlZCI+CisgICAgICAgICAgICAg
UmVkCisgICAgICAgICAgIDwvbGFiZWw+PGJyLz4KKyAgICAgICAgICAgPGxhYmVsPgorICAgICAg
ICAgICAgIDxpbnB1dCB0eXBlPSJyYWRpbyIgbmctbW9kZWw9ImNvbG9yLm5hbWUiIG5nLXZhbHVl
PSJzcGVjaWFsVmFsdWUiPgorICAgICAgICAgICAgIEdyZWVuCisgICAgICAgICAgIDwvbGFiZWw+
PGJyLz4KKyAgICAgICAgICAgPGxhYmVsPgorICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJyYWRp
byIgbmctbW9kZWw9ImNvbG9yLm5hbWUiIHZhbHVlPSJibHVlIj4KKyAgICAgICAgICAgICBCbHVl
CisgICAgICAgICAgIDwvbGFiZWw+PGJyLz4KKyAgICAgICAgICAgPHR0PmNvbG9yID0ge3tjb2xv
ci5uYW1lIHwganNvbn19PC90dD48YnIvPgorICAgICAgICAgIDwvZm9ybT4KKyAgICAgICAgICBO
b3RlIHRoYXQgYG5nLXZhbHVlPSJzcGVjaWFsVmFsdWUiYCBzZXRzIHJhZGlvIGl0ZW0ncyB2YWx1
ZSB0byBiZSB0aGUgdmFsdWUgb2YgYCRzY29wZS5zcGVjaWFsVmFsdWVgLgorICAgICAgICA8L2Zp
bGU+CisgICAgICAgIDxmaWxlIG5hbWU9InByb3RyYWN0b3IuanMiIHR5cGU9InByb3RyYWN0b3Ii
PgorICAgICAgICAgIGl0KCdzaG91bGQgY2hhbmdlIHN0YXRlJywgZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICB2YXIgY29sb3IgPSBlbGVtZW50KGJ5LmJpbmRpbmcoJ2NvbG9yLm5hbWUnKSk7CisK
KyAgICAgICAgICAgIGV4cGVjdChjb2xvci5nZXRUZXh0KCkpLnRvQ29udGFpbignYmx1ZScpOwor
CisgICAgICAgICAgICBlbGVtZW50LmFsbChieS5tb2RlbCgnY29sb3IubmFtZScpKS5nZXQoMCku
Y2xpY2soKTsKKworICAgICAgICAgICAgZXhwZWN0KGNvbG9yLmdldFRleHQoKSkudG9Db250YWlu
KCdyZWQnKTsKKyAgICAgICAgICB9KTsKKyAgICAgICAgPC9maWxlPgorICAgICAgPC9leGFtcGxl
PgorICAgKi8KKyAgJ3JhZGlvJzogcmFkaW9JbnB1dFR5cGUsCisKKworICAvKioKKyAgICogQG5n
ZG9jIGlucHV0CisgICAqIEBuYW1lIGlucHV0W2NoZWNrYm94XQorICAgKgorICAgKiBAZGVzY3Jp
cHRpb24KKyAgICogSFRNTCBjaGVja2JveC4KKyAgICoKKyAgICogQHBhcmFtIHtzdHJpbmd9IG5n
TW9kZWwgQXNzaWduYWJsZSBhbmd1bGFyIGV4cHJlc3Npb24gdG8gZGF0YS1iaW5kIHRvLgorICAg
KiBAcGFyYW0ge3N0cmluZz19IG5hbWUgUHJvcGVydHkgbmFtZSBvZiB0aGUgZm9ybSB1bmRlciB3
aGljaCB0aGUgY29udHJvbCBpcyBwdWJsaXNoZWQuCisgICAqIEBwYXJhbSB7ZXhwcmVzc2lvbj19
IG5nVHJ1ZVZhbHVlIFRoZSB2YWx1ZSB0byB3aGljaCB0aGUgZXhwcmVzc2lvbiBzaG91bGQgYmUg
c2V0IHdoZW4gc2VsZWN0ZWQuCisgICAqIEBwYXJhbSB7ZXhwcmVzc2lvbj19IG5nRmFsc2VWYWx1
ZSBUaGUgdmFsdWUgdG8gd2hpY2ggdGhlIGV4cHJlc3Npb24gc2hvdWxkIGJlIHNldCB3aGVuIG5v
dCBzZWxlY3RlZC4KKyAgICogQHBhcmFtIHtzdHJpbmc9fSBuZ0NoYW5nZSBBbmd1bGFyIGV4cHJl
c3Npb24gdG8gYmUgZXhlY3V0ZWQgd2hlbiBpbnB1dCBjaGFuZ2VzIGR1ZSB0byB1c2VyCisgICAq
ICAgIGludGVyYWN0aW9uIHdpdGggdGhlIGlucHV0IGVsZW1lbnQuCisgICAqCisgICAqIEBleGFt
cGxlCisgICAgICA8ZXhhbXBsZSBuYW1lPSJjaGVja2JveC1pbnB1dC1kaXJlY3RpdmUiIG1vZHVs
ZT0iY2hlY2tib3hFeGFtcGxlIj4KKyAgICAgICAgPGZpbGUgbmFtZT0iaW5kZXguaHRtbCI+Cisg
ICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICBhbmd1bGFyLm1vZHVsZSgnY2hlY2tib3hFeGFt
cGxlJywgW10pCisgICAgICAgICAgICAgLmNvbnRyb2xsZXIoJ0V4YW1wbGVDb250cm9sbGVyJywg
Wyckc2NvcGUnLCBmdW5jdGlvbigkc2NvcGUpIHsKKyAgICAgICAgICAgICAgICRzY29wZS5jaGVj
a2JveE1vZGVsID0geworICAgICAgICAgICAgICAgIHZhbHVlMSA6IHRydWUsCisgICAgICAgICAg
ICAgICAgdmFsdWUyIDogJ1lFUycKKyAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICB9XSk7
CisgICAgICAgICA8L3NjcmlwdD4KKyAgICAgICAgIDxmb3JtIG5hbWU9Im15Rm9ybSIgbmctY29u
dHJvbGxlcj0iRXhhbXBsZUNvbnRyb2xsZXIiPgorICAgICAgICAgICA8bGFiZWw+VmFsdWUxOgor
ICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmctbW9kZWw9ImNoZWNrYm94TW9k
ZWwudmFsdWUxIj4KKyAgICAgICAgICAgPC9sYWJlbD48YnIvPgorICAgICAgICAgICA8bGFiZWw+
VmFsdWUyOgorICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmctbW9kZWw9ImNo
ZWNrYm94TW9kZWwudmFsdWUyIgorICAgICAgICAgICAgICAgICAgICBuZy10cnVlLXZhbHVlPSIn
WUVTJyIgbmctZmFsc2UtdmFsdWU9IidOTyciPgorICAgICAgICAgICAgPC9sYWJlbD48YnIvPgor
ICAgICAgICAgICA8dHQ+dmFsdWUxID0ge3tjaGVja2JveE1vZGVsLnZhbHVlMX19PC90dD48YnIv
PgorICAgICAgICAgICA8dHQ+dmFsdWUyID0ge3tjaGVja2JveE1vZGVsLnZhbHVlMn19PC90dD48
YnIvPgorICAgICAgICAgIDwvZm9ybT4KKyAgICAgICAgPC9maWxlPgorICAgICAgICA8ZmlsZSBu
YW1lPSJwcm90cmFjdG9yLmpzIiB0eXBlPSJwcm90cmFjdG9yIj4KKyAgICAgICAgICBpdCgnc2hv
dWxkIGNoYW5nZSBzdGF0ZScsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdmFyIHZhbHVlMSA9
IGVsZW1lbnQoYnkuYmluZGluZygnY2hlY2tib3hNb2RlbC52YWx1ZTEnKSk7CisgICAgICAgICAg
ICB2YXIgdmFsdWUyID0gZWxlbWVudChieS5iaW5kaW5nKCdjaGVja2JveE1vZGVsLnZhbHVlMicp
KTsKKworICAgICAgICAgICAgZXhwZWN0KHZhbHVlMS5nZXRUZXh0KCkpLnRvQ29udGFpbigndHJ1
ZScpOworICAgICAgICAgICAgZXhwZWN0KHZhbHVlMi5nZXRUZXh0KCkpLnRvQ29udGFpbignWUVT
Jyk7CisKKyAgICAgICAgICAgIGVsZW1lbnQoYnkubW9kZWwoJ2NoZWNrYm94TW9kZWwudmFsdWUx
JykpLmNsaWNrKCk7CisgICAgICAgICAgICBlbGVtZW50KGJ5Lm1vZGVsKCdjaGVja2JveE1vZGVs
LnZhbHVlMicpKS5jbGljaygpOworCisgICAgICAgICAgICBleHBlY3QodmFsdWUxLmdldFRleHQo
KSkudG9Db250YWluKCdmYWxzZScpOworICAgICAgICAgICAgZXhwZWN0KHZhbHVlMi5nZXRUZXh0
KCkpLnRvQ29udGFpbignTk8nKTsKKyAgICAgICAgICB9KTsKKyAgICAgICAgPC9maWxlPgorICAg
ICAgPC9leGFtcGxlPgorICAgKi8KKyAgJ2NoZWNrYm94JzogY2hlY2tib3hJbnB1dFR5cGUsCisK
KyAgJ2hpZGRlbic6IG5vb3AsCisgICdidXR0b24nOiBub29wLAorICAnc3VibWl0Jzogbm9vcCwK
KyAgJ3Jlc2V0Jzogbm9vcCwKKyAgJ2ZpbGUnOiBub29wCit9OworCitmdW5jdGlvbiBzdHJpbmdC
YXNlZElucHV0VHlwZShjdHJsKSB7CisgIGN0cmwuJGZvcm1hdHRlcnMucHVzaChmdW5jdGlvbih2
YWx1ZSkgeworICAgIHJldHVybiBjdHJsLiRpc0VtcHR5KHZhbHVlKSA/IHZhbHVlIDogdmFsdWUu
dG9TdHJpbmcoKTsKKyAgfSk7Cit9CisKK2Z1bmN0aW9uIHRleHRJbnB1dFR5cGUoc2NvcGUsIGVs
ZW1lbnQsIGF0dHIsIGN0cmwsICRzbmlmZmVyLCAkYnJvd3NlcikgeworICBiYXNlSW5wdXRUeXBl
KHNjb3BlLCBlbGVtZW50LCBhdHRyLCBjdHJsLCAkc25pZmZlciwgJGJyb3dzZXIpOworICBzdHJp
bmdCYXNlZElucHV0VHlwZShjdHJsKTsKK30KKworZnVuY3Rpb24gYmFzZUlucHV0VHlwZShzY29w
ZSwgZWxlbWVudCwgYXR0ciwgY3RybCwgJHNuaWZmZXIsICRicm93c2VyKSB7CisgIHZhciB0eXBl
ID0gbG93ZXJjYXNlKGVsZW1lbnRbMF0udHlwZSk7CisKKyAgLy8gSW4gY29tcG9zaXRpb24gbW9k
ZSwgdXNlcnMgYXJlIHN0aWxsIGlucHV0aW5nIGludGVybWVkaWF0ZSB0ZXh0IGJ1ZmZlciwKKyAg
Ly8gaG9sZCB0aGUgbGlzdGVuZXIgdW50aWwgY29tcG9zaXRpb24gaXMgZG9uZS4KKyAgLy8gTW9y
ZSBhYm91dCBjb21wb3NpdGlvbiBldmVudHM6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3Jn
L2VuLVVTL2RvY3MvV2ViL0FQSS9Db21wb3NpdGlvbkV2ZW50CisgIGlmICghJHNuaWZmZXIuYW5k
cm9pZCkgeworICAgIHZhciBjb21wb3NpbmcgPSBmYWxzZTsKKworICAgIGVsZW1lbnQub24oJ2Nv
bXBvc2l0aW9uc3RhcnQnLCBmdW5jdGlvbihkYXRhKSB7CisgICAgICBjb21wb3NpbmcgPSB0cnVl
OworICAgIH0pOworCisgICAgZWxlbWVudC5vbignY29tcG9zaXRpb25lbmQnLCBmdW5jdGlvbigp
IHsKKyAgICAgIGNvbXBvc2luZyA9IGZhbHNlOworICAgICAgbGlzdGVuZXIoKTsKKyAgICB9KTsK
KyAgfQorCisgIHZhciBsaXN0ZW5lciA9IGZ1bmN0aW9uKGV2KSB7CisgICAgaWYgKHRpbWVvdXQp
IHsKKyAgICAgICRicm93c2VyLmRlZmVyLmNhbmNlbCh0aW1lb3V0KTsKKyAgICAgIHRpbWVvdXQg
PSBudWxsOworICAgIH0KKyAgICBpZiAoY29tcG9zaW5nKSByZXR1cm47CisgICAgdmFyIHZhbHVl
ID0gZWxlbWVudC52YWwoKSwKKyAgICAgICAgZXZlbnQgPSBldiAmJiBldi50eXBlOworCisgICAg
Ly8gQnkgZGVmYXVsdCB3ZSB3aWxsIHRyaW0gdGhlIHZhbHVlCisgICAgLy8gSWYgdGhlIGF0dHJp
YnV0ZSBuZy10cmltIGV4aXN0cyB3ZSB3aWxsIGF2b2lkIHRyaW1taW5nCisgICAgLy8gSWYgaW5w
dXQgdHlwZSBpcyAncGFzc3dvcmQnLCB0aGUgdmFsdWUgaXMgbmV2ZXIgdHJpbW1lZAorICAgIGlm
ICh0eXBlICE9PSAncGFzc3dvcmQnICYmICghYXR0ci5uZ1RyaW0gfHwgYXR0ci5uZ1RyaW0gIT09
ICdmYWxzZScpKSB7CisgICAgICB2YWx1ZSA9IHRyaW0odmFsdWUpOworICAgIH0KKworICAgIC8v
IElmIGEgY29udHJvbCBpcyBzdWZmZXJpbmcgZnJvbSBiYWQgaW5wdXQgKGR1ZSB0byBuYXRpdmUg
dmFsaWRhdG9ycyksIGJyb3dzZXJzIGRpc2NhcmQgaXRzCisgICAgLy8gdmFsdWUsIHNvIGl0IG1h
eSBiZSBuZWNlc3NhcnkgdG8gcmV2YWxpZGF0ZSAoYnkgY2FsbGluZyAkc2V0Vmlld1ZhbHVlIGFn
YWluKSBldmVuIGlmIHRoZQorICAgIC8vIGNvbnRyb2wncyB2YWx1ZSBpcyB0aGUgc2FtZSBlbXB0
eSB2YWx1ZSB0d2ljZSBpbiBhIHJvdy4KKyAgICBpZiAoY3RybC4kdmlld1ZhbHVlICE9PSB2YWx1
ZSB8fCAodmFsdWUgPT09ICcnICYmIGN0cmwuJCRoYXNOYXRpdmVWYWxpZGF0b3JzKSkgeworICAg
ICAgY3RybC4kc2V0Vmlld1ZhbHVlKHZhbHVlLCBldmVudCk7CisgICAgfQorICB9OworCisgIC8v
IGlmIHRoZSBicm93c2VyIGRvZXMgc3VwcG9ydCAiaW5wdXQiIGV2ZW50LCB3ZSBhcmUgZmluZSAt
IGV4Y2VwdCBvbiBJRTkgd2hpY2ggZG9lc24ndCBmaXJlIHRoZQorICAvLyBpbnB1dCBldmVudCBv
biBiYWNrc3BhY2UsIGRlbGV0ZSBvciBjdXQKKyAgaWYgKCRzbmlmZmVyLmhhc0V2ZW50KCdpbnB1
dCcpKSB7CisgICAgZWxlbWVudC5vbignaW5wdXQnLCBsaXN0ZW5lcik7CisgIH0gZWxzZSB7Cisg
ICAgdmFyIHRpbWVvdXQ7CisKKyAgICB2YXIgZGVmZXJMaXN0ZW5lciA9IGZ1bmN0aW9uKGV2LCBp
bnB1dCwgb3JpZ1ZhbHVlKSB7CisgICAgICBpZiAoIXRpbWVvdXQpIHsKKyAgICAgICAgdGltZW91
dCA9ICRicm93c2VyLmRlZmVyKGZ1bmN0aW9uKCkgeworICAgICAgICAgIHRpbWVvdXQgPSBudWxs
OworICAgICAgICAgIGlmICghaW5wdXQgfHwgaW5wdXQudmFsdWUgIT09IG9yaWdWYWx1ZSkgewor
ICAgICAgICAgICAgbGlzdGVuZXIoZXYpOworICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAg
ICB9CisgICAgfTsKKworICAgIGVsZW1lbnQub24oJ2tleWRvd24nLCBmdW5jdGlvbihldmVudCkg
eworICAgICAgdmFyIGtleSA9IGV2ZW50LmtleUNvZGU7CisKKyAgICAgIC8vIGlnbm9yZQorICAg
ICAgLy8gICAgY29tbWFuZCAgICAgICAgICAgIG1vZGlmaWVycyAgICAgICAgICAgICAgICAgICBh
cnJvd3MKKyAgICAgIGlmIChrZXkgPT09IDkxIHx8ICgxNSA8IGtleSAmJiBrZXkgPCAxOSkgfHwg
KDM3IDw9IGtleSAmJiBrZXkgPD0gNDApKSByZXR1cm47CisKKyAgICAgIGRlZmVyTGlzdGVuZXIo
ZXZlbnQsIHRoaXMsIHRoaXMudmFsdWUpOworICAgIH0pOworCisgICAgLy8gaWYgdXNlciBtb2Rp
ZmllcyBpbnB1dCB2YWx1ZSB1c2luZyBjb250ZXh0IG1lbnUgaW4gSUUsIHdlIG5lZWQgInBhc3Rl
IiBhbmQgImN1dCIgZXZlbnRzIHRvIGNhdGNoIGl0CisgICAgaWYgKCRzbmlmZmVyLmhhc0V2ZW50
KCdwYXN0ZScpKSB7CisgICAgICBlbGVtZW50Lm9uKCdwYXN0ZSBjdXQnLCBkZWZlckxpc3RlbmVy
KTsKKyAgICB9CisgIH0KKworICAvLyBpZiB1c2VyIHBhc3RlIGludG8gaW5wdXQgdXNpbmcgbW91
c2Ugb24gb2xkZXIgYnJvd3NlcgorICAvLyBvciBmb3JtIGF1dG9jb21wbGV0ZSBvbiBuZXdlciBi
cm93c2VyLCB3ZSBuZWVkICJjaGFuZ2UiIGV2ZW50IHRvIGNhdGNoIGl0CisgIGVsZW1lbnQub24o
J2NoYW5nZScsIGxpc3RlbmVyKTsKKworICBjdHJsLiRyZW5kZXIgPSBmdW5jdGlvbigpIHsKKyAg
ICBlbGVtZW50LnZhbChjdHJsLiRpc0VtcHR5KGN0cmwuJHZpZXdWYWx1ZSkgPyAnJyA6IGN0cmwu
JHZpZXdWYWx1ZSk7CisgIH07Cit9CisKK2Z1bmN0aW9uIHdlZWtQYXJzZXIoaXNvV2VlaywgZXhp
c3RpbmdEYXRlKSB7CisgIGlmIChpc0RhdGUoaXNvV2VlaykpIHsKKyAgICByZXR1cm4gaXNvV2Vl
azsKKyAgfQorCisgIGlmIChpc1N0cmluZyhpc29XZWVrKSkgeworICAgIFdFRUtfUkVHRVhQLmxh
c3RJbmRleCA9IDA7CisgICAgdmFyIHBhcnRzID0gV0VFS19SRUdFWFAuZXhlYyhpc29XZWVrKTsK
KyAgICBpZiAocGFydHMpIHsKKyAgICAgIHZhciB5ZWFyID0gK3BhcnRzWzFdLAorICAgICAgICAg
IHdlZWsgPSArcGFydHNbMl0sCisgICAgICAgICAgaG91cnMgPSAwLAorICAgICAgICAgIG1pbnV0
ZXMgPSAwLAorICAgICAgICAgIHNlY29uZHMgPSAwLAorICAgICAgICAgIG1pbGxpc2Vjb25kcyA9
IDAsCisgICAgICAgICAgZmlyc3RUaHVycyA9IGdldEZpcnN0VGh1cnNkYXlPZlllYXIoeWVhciks
CisgICAgICAgICAgYWRkRGF5cyA9ICh3ZWVrIC0gMSkgKiA3OworCisgICAgICBpZiAoZXhpc3Rp
bmdEYXRlKSB7CisgICAgICAgIGhvdXJzID0gZXhpc3RpbmdEYXRlLmdldEhvdXJzKCk7CisgICAg
ICAgIG1pbnV0ZXMgPSBleGlzdGluZ0RhdGUuZ2V0TWludXRlcygpOworICAgICAgICBzZWNvbmRz
ID0gZXhpc3RpbmdEYXRlLmdldFNlY29uZHMoKTsKKyAgICAgICAgbWlsbGlzZWNvbmRzID0gZXhp
c3RpbmdEYXRlLmdldE1pbGxpc2Vjb25kcygpOworICAgICAgfQorCisgICAgICByZXR1cm4gbmV3
IERhdGUoeWVhciwgMCwgZmlyc3RUaHVycy5nZXREYXRlKCkgKyBhZGREYXlzLCBob3VycywgbWlu
dXRlcywgc2Vjb25kcywgbWlsbGlzZWNvbmRzKTsKKyAgICB9CisgIH0KKworICByZXR1cm4gTmFO
OworfQorCitmdW5jdGlvbiBjcmVhdGVEYXRlUGFyc2VyKHJlZ2V4cCwgbWFwcGluZykgeworICBy
ZXR1cm4gZnVuY3Rpb24oaXNvLCBkYXRlKSB7CisgICAgdmFyIHBhcnRzLCBtYXA7CisKKyAgICBp
ZiAoaXNEYXRlKGlzbykpIHsKKyAgICAgIHJldHVybiBpc287CisgICAgfQorCisgICAgaWYgKGlz
U3RyaW5nKGlzbykpIHsKKyAgICAgIC8vIFdoZW4gYSBkYXRlIGlzIEpTT04naWZpZWQgdG8gd3Jh
cHMgaXRzZWxmIGluc2lkZSBvZiBhbiBleHRyYQorICAgICAgLy8gc2V0IG9mIGRvdWJsZSBxdW90
ZXMuIFRoaXMgbWFrZXMgdGhlIGRhdGUgcGFyc2luZyBjb2RlIHVuYWJsZQorICAgICAgLy8gdG8g
bWF0Y2ggdGhlIGRhdGUgc3RyaW5nIGFuZCBwYXJzZSBpdCBhcyBhIGRhdGUuCisgICAgICBpZiAo
aXNvLmNoYXJBdCgwKSA9PSAnIicgJiYgaXNvLmNoYXJBdChpc28ubGVuZ3RoIC0gMSkgPT0gJyIn
KSB7CisgICAgICAgIGlzbyA9IGlzby5zdWJzdHJpbmcoMSwgaXNvLmxlbmd0aCAtIDEpOworICAg
ICAgfQorICAgICAgaWYgKElTT19EQVRFX1JFR0VYUC50ZXN0KGlzbykpIHsKKyAgICAgICAgcmV0
dXJuIG5ldyBEYXRlKGlzbyk7CisgICAgICB9CisgICAgICByZWdleHAubGFzdEluZGV4ID0gMDsK
KyAgICAgIHBhcnRzID0gcmVnZXhwLmV4ZWMoaXNvKTsKKworICAgICAgaWYgKHBhcnRzKSB7Cisg
ICAgICAgIHBhcnRzLnNoaWZ0KCk7CisgICAgICAgIGlmIChkYXRlKSB7CisgICAgICAgICAgbWFw
ID0geworICAgICAgICAgICAgeXl5eTogZGF0ZS5nZXRGdWxsWWVhcigpLAorICAgICAgICAgICAg
TU06IGRhdGUuZ2V0TW9udGgoKSArIDEsCisgICAgICAgICAgICBkZDogZGF0ZS5nZXREYXRlKCks
CisgICAgICAgICAgICBISDogZGF0ZS5nZXRIb3VycygpLAorICAgICAgICAgICAgbW06IGRhdGUu
Z2V0TWludXRlcygpLAorICAgICAgICAgICAgc3M6IGRhdGUuZ2V0U2Vjb25kcygpLAorICAgICAg
ICAgICAgc3NzOiBkYXRlLmdldE1pbGxpc2Vjb25kcygpIC8gMTAwMAorICAgICAgICAgIH07Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgbWFwID0geyB5eXl5OiAxOTcwLCBNTTogMSwgZGQ6
IDEsIEhIOiAwLCBtbTogMCwgc3M6IDAsIHNzczogMCB9OworICAgICAgICB9CisKKyAgICAgICAg
Zm9yRWFjaChwYXJ0cywgZnVuY3Rpb24ocGFydCwgaW5kZXgpIHsKKyAgICAgICAgICBpZiAoaW5k
ZXggPCBtYXBwaW5nLmxlbmd0aCkgeworICAgICAgICAgICAgbWFwW21hcHBpbmdbaW5kZXhdXSA9
ICtwYXJ0OworICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybiBuZXcgRGF0
ZShtYXAueXl5eSwgbWFwLk1NIC0gMSwgbWFwLmRkLCBtYXAuSEgsIG1hcC5tbSwgbWFwLnNzIHx8
IDAsIG1hcC5zc3MgKiAxMDAwIHx8IDApOworICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBO
YU47CisgIH07Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZURhdGVJbnB1dFR5cGUodHlwZSwgcmVnZXhw
LCBwYXJzZURhdGUsIGZvcm1hdCkgeworICByZXR1cm4gZnVuY3Rpb24gZHluYW1pY0RhdGVJbnB1
dFR5cGUoc2NvcGUsIGVsZW1lbnQsIGF0dHIsIGN0cmwsICRzbmlmZmVyLCAkYnJvd3NlciwgJGZp
bHRlcikgeworICAgIGJhZElucHV0Q2hlY2tlcihzY29wZSwgZWxlbWVudCwgYXR0ciwgY3RybCk7
CisgICAgYmFzZUlucHV0VHlwZShzY29wZSwgZWxlbWVudCwgYXR0ciwgY3RybCwgJHNuaWZmZXIs
ICRicm93c2VyKTsKKyAgICB2YXIgdGltZXpvbmUgPSBjdHJsICYmIGN0cmwuJG9wdGlvbnMgJiYg
Y3RybC4kb3B0aW9ucy50aW1lem9uZTsKKyAgICB2YXIgcHJldmlvdXNEYXRlOworCisgICAgY3Ry
bC4kJHBhcnNlck5hbWUgPSB0eXBlOworICAgIGN0cmwuJHBhcnNlcnMucHVzaChmdW5jdGlvbih2
YWx1ZSkgeworICAgICAgaWYgKGN0cmwuJGlzRW1wdHkodmFsdWUpKSByZXR1cm4gbnVsbDsKKyAg
ICAgIGlmIChyZWdleHAudGVzdCh2YWx1ZSkpIHsKKyAgICAgICAgLy8gTm90ZTogV2UgY2Fubm90
IHJlYWQgY3RybC4kbW9kZWxWYWx1ZSwgYXMgdGhlcmUgbWlnaHQgYmUgYSBkaWZmZXJlbnQKKyAg
ICAgICAgLy8gcGFyc2VyL2Zvcm1hdHRlciBpbiB0aGUgcHJvY2Vzc2luZyBjaGFpbiBzbyB0aGF0
IHRoZSBtb2RlbAorICAgICAgICAvLyBjb250YWlucyBzb21lIGRpZmZlcmVudCBkYXRhIGZvcm1h
dCEKKyAgICAgICAgdmFyIHBhcnNlZERhdGUgPSBwYXJzZURhdGUodmFsdWUsIHByZXZpb3VzRGF0
ZSk7CisgICAgICAgIGlmICh0aW1lem9uZSkgeworICAgICAgICAgIHBhcnNlZERhdGUgPSBjb252
ZXJ0VGltZXpvbmVUb0xvY2FsKHBhcnNlZERhdGUsIHRpbWV6b25lKTsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm4gcGFyc2VkRGF0ZTsKKyAgICAgIH0KKyAgICAgIHJldHVybiB1bmRlZmluZWQ7
CisgICAgfSk7CisKKyAgICBjdHJsLiRmb3JtYXR0ZXJzLnB1c2goZnVuY3Rpb24odmFsdWUpIHsK
KyAgICAgIGlmICh2YWx1ZSAmJiAhaXNEYXRlKHZhbHVlKSkgeworICAgICAgICB0aHJvdyAkbmdN
b2RlbE1pbkVycignZGF0ZWZtdCcsICdFeHBlY3RlZCBgezB9YCB0byBiZSBhIGRhdGUnLCB2YWx1
ZSk7CisgICAgICB9CisgICAgICBpZiAoaXNWYWxpZERhdGUodmFsdWUpKSB7CisgICAgICAgIHBy
ZXZpb3VzRGF0ZSA9IHZhbHVlOworICAgICAgICBpZiAocHJldmlvdXNEYXRlICYmIHRpbWV6b25l
KSB7CisgICAgICAgICAgcHJldmlvdXNEYXRlID0gY29udmVydFRpbWV6b25lVG9Mb2NhbChwcmV2
aW91c0RhdGUsIHRpbWV6b25lLCB0cnVlKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gJGZp
bHRlcignZGF0ZScpKHZhbHVlLCBmb3JtYXQsIHRpbWV6b25lKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHByZXZpb3VzRGF0ZSA9IG51bGw7CisgICAgICAgIHJldHVybiAnJzsKKyAgICAgIH0K
KyAgICB9KTsKKworICAgIGlmIChpc0RlZmluZWQoYXR0ci5taW4pIHx8IGF0dHIubmdNaW4pIHsK
KyAgICAgIHZhciBtaW5WYWw7CisgICAgICBjdHJsLiR2YWxpZGF0b3JzLm1pbiA9IGZ1bmN0aW9u
KHZhbHVlKSB7CisgICAgICAgIHJldHVybiAhaXNWYWxpZERhdGUodmFsdWUpIHx8IGlzVW5kZWZp
bmVkKG1pblZhbCkgfHwgcGFyc2VEYXRlKHZhbHVlKSA+PSBtaW5WYWw7CisgICAgICB9OworICAg
ICAgYXR0ci4kb2JzZXJ2ZSgnbWluJywgZnVuY3Rpb24odmFsKSB7CisgICAgICAgIG1pblZhbCA9
IHBhcnNlT2JzZXJ2ZWREYXRlVmFsdWUodmFsKTsKKyAgICAgICAgY3RybC4kdmFsaWRhdGUoKTsK
KyAgICAgIH0pOworICAgIH0KKworICAgIGlmIChpc0RlZmluZWQoYXR0ci5tYXgpIHx8IGF0dHIu
bmdNYXgpIHsKKyAgICAgIHZhciBtYXhWYWw7CisgICAgICBjdHJsLiR2YWxpZGF0b3JzLm1heCA9
IGZ1bmN0aW9uKHZhbHVlKSB7CisgICAgICAgIHJldHVybiAhaXNWYWxpZERhdGUodmFsdWUpIHx8
IGlzVW5kZWZpbmVkKG1heFZhbCkgfHwgcGFyc2VEYXRlKHZhbHVlKSA8PSBtYXhWYWw7CisgICAg
ICB9OworICAgICAgYXR0ci4kb2JzZXJ2ZSgnbWF4JywgZnVuY3Rpb24odmFsKSB7CisgICAgICAg
IG1heFZhbCA9IHBhcnNlT2JzZXJ2ZWREYXRlVmFsdWUodmFsKTsKKyAgICAgICAgY3RybC4kdmFs
aWRhdGUoKTsKKyAgICAgIH0pOworICAgIH0KKworICAgIGZ1bmN0aW9uIGlzVmFsaWREYXRlKHZh
bHVlKSB7CisgICAgICAvLyBJbnZhbGlkIERhdGU6IGdldFRpbWUoKSByZXR1cm5zIE5hTgorICAg
ICAgcmV0dXJuIHZhbHVlICYmICEodmFsdWUuZ2V0VGltZSAmJiB2YWx1ZS5nZXRUaW1lKCkgIT09
IHZhbHVlLmdldFRpbWUoKSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcGFyc2VPYnNlcnZlZERh
dGVWYWx1ZSh2YWwpIHsKKyAgICAgIHJldHVybiBpc0RlZmluZWQodmFsKSA/IChpc0RhdGUodmFs
KSA/IHZhbCA6IHBhcnNlRGF0ZSh2YWwpKSA6IHVuZGVmaW5lZDsKKyAgICB9CisgIH07Cit9CisK
K2Z1bmN0aW9uIGJhZElucHV0Q2hlY2tlcihzY29wZSwgZWxlbWVudCwgYXR0ciwgY3RybCkgewor
ICB2YXIgbm9kZSA9IGVsZW1lbnRbMF07CisgIHZhciBuYXRpdmVWYWxpZGF0aW9uID0gY3RybC4k
JGhhc05hdGl2ZVZhbGlkYXRvcnMgPSBpc09iamVjdChub2RlLnZhbGlkaXR5KTsKKyAgaWYgKG5h
dGl2ZVZhbGlkYXRpb24pIHsKKyAgICBjdHJsLiRwYXJzZXJzLnB1c2goZnVuY3Rpb24odmFsdWUp
IHsKKyAgICAgIHZhciB2YWxpZGl0eSA9IGVsZW1lbnQucHJvcChWQUxJRElUWV9TVEFURV9QUk9Q
RVJUWSkgfHwge307CisgICAgICAvLyBEZXRlY3QgYnVnIGluIEZGMzUgZm9yIGlucHV0W2VtYWls
XSAoaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2NDQzMCk6
CisgICAgICAvLyAtIGFsc28gc2V0cyB2YWxpZGl0eS5iYWRJbnB1dCAoc2hvdWxkIG9ubHkgYmUg
dmFsaWRpdHkudHlwZU1pc21hdGNoKS4KKyAgICAgIC8vIC0gc2VlIGh0dHA6Ly93d3cud2hhdHdn
Lm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL2Zvcm1zLmh0bWwjZS1t
YWlsLXN0YXRlLSh0eXBlPWVtYWlsKQorICAgICAgLy8gLSBjYW4gaWdub3JlIHRoaXMgY2FzZSBh
cyB3ZSBjYW4gc3RpbGwgcmVhZCBvdXQgdGhlIGVycm9uZW91cyBlbWFpbC4uLgorICAgICAgcmV0
dXJuIHZhbGlkaXR5LmJhZElucHV0ICYmICF2YWxpZGl0eS50eXBlTWlzbWF0Y2ggPyB1bmRlZmlu
ZWQgOiB2YWx1ZTsKKyAgICB9KTsKKyAgfQorfQorCitmdW5jdGlvbiBudW1iZXJJbnB1dFR5cGUo
c2NvcGUsIGVsZW1lbnQsIGF0dHIsIGN0cmwsICRzbmlmZmVyLCAkYnJvd3NlcikgeworICBiYWRJ
bnB1dENoZWNrZXIoc2NvcGUsIGVsZW1lbnQsIGF0dHIsIGN0cmwpOworICBiYXNlSW5wdXRUeXBl
KHNjb3BlLCBlbGVtZW50LCBhdHRyLCBjdHJsLCAkc25pZmZlciwgJGJyb3dzZXIpOworCisgIGN0
cmwuJCRwYXJzZXJOYW1lID0gJ251bWJlcic7CisgIGN0cmwuJHBhcnNlcnMucHVzaChmdW5jdGlv
bih2YWx1ZSkgeworICAgIGlmIChjdHJsLiRpc0VtcHR5KHZhbHVlKSkgICAgICByZXR1cm4gbnVs
bDsKKyAgICBpZiAoTlVNQkVSX1JFR0VYUC50ZXN0KHZhbHVlKSkgcmV0dXJuIHBhcnNlRmxvYXQo
dmFsdWUpOworICAgIHJldHVybiB1bmRlZmluZWQ7CisgIH0pOworCisgIGN0cmwuJGZvcm1hdHRl
cnMucHVzaChmdW5jdGlvbih2YWx1ZSkgeworICAgIGlmICghY3RybC4kaXNFbXB0eSh2YWx1ZSkp
IHsKKyAgICAgIGlmICghaXNOdW1iZXIodmFsdWUpKSB7CisgICAgICAgIHRocm93ICRuZ01vZGVs
TWluRXJyKCdudW1mbXQnLCAnRXhwZWN0ZWQgYHswfWAgdG8gYmUgYSBudW1iZXInLCB2YWx1ZSk7
CisgICAgICB9CisgICAgICB2YWx1ZSA9IHZhbHVlLnRvU3RyaW5nKCk7CisgICAgfQorICAgIHJl
dHVybiB2YWx1ZTsKKyAgfSk7CisKKyAgaWYgKGlzRGVmaW5lZChhdHRyLm1pbikgfHwgYXR0ci5u
Z01pbikgeworICAgIHZhciBtaW5WYWw7CisgICAgY3RybC4kdmFsaWRhdG9ycy5taW4gPSBmdW5j
dGlvbih2YWx1ZSkgeworICAgICAgcmV0dXJuIGN0cmwuJGlzRW1wdHkodmFsdWUpIHx8IGlzVW5k
ZWZpbmVkKG1pblZhbCkgfHwgdmFsdWUgPj0gbWluVmFsOworICAgIH07CisKKyAgICBhdHRyLiRv
YnNlcnZlKCdtaW4nLCBmdW5jdGlvbih2YWwpIHsKKyAgICAgIGlmIChpc0RlZmluZWQodmFsKSAm
JiAhaXNOdW1iZXIodmFsKSkgeworICAgICAgICB2YWwgPSBwYXJzZUZsb2F0KHZhbCwgMTApOwor
ICAgICAgfQorICAgICAgbWluVmFsID0gaXNOdW1iZXIodmFsKSAmJiAhaXNOYU4odmFsKSA/IHZh
bCA6IHVuZGVmaW5lZDsKKyAgICAgIC8vIFRPRE8obWF0c2tvKTogaW1wbGVtZW50IHZhbGlkYXRl
TGF0ZXIgdG8gcmVkdWNlIG51bWJlciBvZiB2YWxpZGF0aW9ucworICAgICAgY3RybC4kdmFsaWRh
dGUoKTsKKyAgICB9KTsKKyAgfQorCisgIGlmIChpc0RlZmluZWQoYXR0ci5tYXgpIHx8IGF0dHIu
bmdNYXgpIHsKKyAgICB2YXIgbWF4VmFsOworICAgIGN0cmwuJHZhbGlkYXRvcnMubWF4ID0gZnVu
Y3Rpb24odmFsdWUpIHsKKyAgICAgIHJldHVybiBjdHJsLiRpc0VtcHR5KHZhbHVlKSB8fCBpc1Vu
ZGVmaW5lZChtYXhWYWwpIHx8IHZhbHVlIDw9IG1heFZhbDsKKyAgICB9OworCisgICAgYXR0ci4k
b2JzZXJ2ZSgnbWF4JywgZnVuY3Rpb24odmFsKSB7CisgICAgICBpZiAoaXNEZWZpbmVkKHZhbCkg
JiYgIWlzTnVtYmVyKHZhbCkpIHsKKyAgICAgICAgdmFsID0gcGFyc2VGbG9hdCh2YWwsIDEwKTsK
KyAgICAgIH0KKyAgICAgIG1heFZhbCA9IGlzTnVtYmVyKHZhbCkgJiYgIWlzTmFOKHZhbCkgPyB2
YWwgOiB1bmRlZmluZWQ7CisgICAgICAvLyBUT0RPKG1hdHNrbyk6IGltcGxlbWVudCB2YWxpZGF0
ZUxhdGVyIHRvIHJlZHVjZSBudW1iZXIgb2YgdmFsaWRhdGlvbnMKKyAgICAgIGN0cmwuJHZhbGlk
YXRlKCk7CisgICAgfSk7CisgIH0KK30KKworZnVuY3Rpb24gdXJsSW5wdXRUeXBlKHNjb3BlLCBl
bGVtZW50LCBhdHRyLCBjdHJsLCAkc25pZmZlciwgJGJyb3dzZXIpIHsKKyAgLy8gTm90ZTogbm8g
YmFkSW5wdXRDaGVja2VyIGhlcmUgYnkgcHVycG9zZSBhcyBgdXJsYCBpcyBvbmx5IGEgdmFsaWRh
dGlvbgorICAvLyBpbiBicm93c2VycywgaS5lLiB3ZSBjYW4gYWx3YXlzIHJlYWQgb3V0IGlucHV0
LnZhbHVlIGV2ZW4gaWYgaXQgaXMgbm90IHZhbGlkIQorICBiYXNlSW5wdXRUeXBlKHNjb3BlLCBl
bGVtZW50LCBhdHRyLCBjdHJsLCAkc25pZmZlciwgJGJyb3dzZXIpOworICBzdHJpbmdCYXNlZElu
cHV0VHlwZShjdHJsKTsKKworICBjdHJsLiQkcGFyc2VyTmFtZSA9ICd1cmwnOworICBjdHJsLiR2
YWxpZGF0b3JzLnVybCA9IGZ1bmN0aW9uKG1vZGVsVmFsdWUsIHZpZXdWYWx1ZSkgeworICAgIHZh
ciB2YWx1ZSA9IG1vZGVsVmFsdWUgfHwgdmlld1ZhbHVlOworICAgIHJldHVybiBjdHJsLiRpc0Vt
cHR5KHZhbHVlKSB8fCBVUkxfUkVHRVhQLnRlc3QodmFsdWUpOworICB9OworfQorCitmdW5jdGlv
biBlbWFpbElucHV0VHlwZShzY29wZSwgZWxlbWVudCwgYXR0ciwgY3RybCwgJHNuaWZmZXIsICRi
cm93c2VyKSB7CisgIC8vIE5vdGU6IG5vIGJhZElucHV0Q2hlY2tlciBoZXJlIGJ5IHB1cnBvc2Ug
YXMgYHVybGAgaXMgb25seSBhIHZhbGlkYXRpb24KKyAgLy8gaW4gYnJvd3NlcnMsIGkuZS4gd2Ug
Y2FuIGFsd2F5cyByZWFkIG91dCBpbnB1dC52YWx1ZSBldmVuIGlmIGl0IGlzIG5vdCB2YWxpZCEK
KyAgYmFzZUlucHV0VHlwZShzY29wZSwgZWxlbWVudCwgYXR0ciwgY3RybCwgJHNuaWZmZXIsICRi
cm93c2VyKTsKKyAgc3RyaW5nQmFzZWRJbnB1dFR5cGUoY3RybCk7CisKKyAgY3RybC4kJHBhcnNl
ck5hbWUgPSAnZW1haWwnOworICBjdHJsLiR2YWxpZGF0b3JzLmVtYWlsID0gZnVuY3Rpb24obW9k
ZWxWYWx1ZSwgdmlld1ZhbHVlKSB7CisgICAgdmFyIHZhbHVlID0gbW9kZWxWYWx1ZSB8fCB2aWV3
VmFsdWU7CisgICAgcmV0dXJuIGN0cmwuJGlzRW1wdHkodmFsdWUpIHx8IEVNQUlMX1JFR0VYUC50
ZXN0KHZhbHVlKTsKKyAgfTsKK30KKworZnVuY3Rpb24gcmFkaW9JbnB1dFR5cGUoc2NvcGUsIGVs
ZW1lbnQsIGF0dHIsIGN0cmwpIHsKKyAgLy8gbWFrZSB0aGUgbmFtZSB1bmlxdWUsIGlmIG5vdCBk
ZWZpbmVkCisgIGlmIChpc1VuZGVmaW5lZChhdHRyLm5hbWUpKSB7CisgICAgZWxlbWVudC5hdHRy
KCduYW1lJywgbmV4dFVpZCgpKTsKKyAgfQorCisgIHZhciBsaXN0ZW5lciA9IGZ1bmN0aW9uKGV2
KSB7CisgICAgaWYgKGVsZW1lbnRbMF0uY2hlY2tlZCkgeworICAgICAgY3RybC4kc2V0Vmlld1Zh
bHVlKGF0dHIudmFsdWUsIGV2ICYmIGV2LnR5cGUpOworICAgIH0KKyAgfTsKKworICBlbGVtZW50
Lm9uKCdjbGljaycsIGxpc3RlbmVyKTsKKworICBjdHJsLiRyZW5kZXIgPSBmdW5jdGlvbigpIHsK
KyAgICB2YXIgdmFsdWUgPSBhdHRyLnZhbHVlOworICAgIGVsZW1lbnRbMF0uY2hlY2tlZCA9ICh2
YWx1ZSA9PSBjdHJsLiR2aWV3VmFsdWUpOworICB9OworCisgIGF0dHIuJG9ic2VydmUoJ3ZhbHVl
JywgY3RybC4kcmVuZGVyKTsKK30KKworZnVuY3Rpb24gcGFyc2VDb25zdGFudEV4cHIoJHBhcnNl
LCBjb250ZXh0LCBuYW1lLCBleHByZXNzaW9uLCBmYWxsYmFjaykgeworICB2YXIgcGFyc2VGbjsK
KyAgaWYgKGlzRGVmaW5lZChleHByZXNzaW9uKSkgeworICAgIHBhcnNlRm4gPSAkcGFyc2UoZXhw
cmVzc2lvbik7CisgICAgaWYgKCFwYXJzZUZuLmNvbnN0YW50KSB7CisgICAgICB0aHJvdyBtaW5F
cnIoJ25nTW9kZWwnKSgnY29uc3RleHByJywgJ0V4cGVjdGVkIGNvbnN0YW50IGV4cHJlc3Npb24g
Zm9yIGB7MH1gLCBidXQgc2F3ICcgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnYHsxfWAuJywgbmFtZSwgZXhwcmVzc2lvbik7CisgICAgfQorICAgIHJldHVybiBwYXJzZUZu
KGNvbnRleHQpOworICB9CisgIHJldHVybiBmYWxsYmFjazsKK30KKworZnVuY3Rpb24gY2hlY2ti
b3hJbnB1dFR5cGUoc2NvcGUsIGVsZW1lbnQsIGF0dHIsIGN0cmwsICRzbmlmZmVyLCAkYnJvd3Nl
ciwgJGZpbHRlciwgJHBhcnNlKSB7CisgIHZhciB0cnVlVmFsdWUgPSBwYXJzZUNvbnN0YW50RXhw
cigkcGFyc2UsIHNjb3BlLCAnbmdUcnVlVmFsdWUnLCBhdHRyLm5nVHJ1ZVZhbHVlLCB0cnVlKTsK
KyAgdmFyIGZhbHNlVmFsdWUgPSBwYXJzZUNvbnN0YW50RXhwcigkcGFyc2UsIHNjb3BlLCAnbmdG
YWxzZVZhbHVlJywgYXR0ci5uZ0ZhbHNlVmFsdWUsIGZhbHNlKTsKKworICB2YXIgbGlzdGVuZXIg
PSBmdW5jdGlvbihldikgeworICAgIGN0cmwuJHNldFZpZXdWYWx1ZShlbGVtZW50WzBdLmNoZWNr
ZWQsIGV2ICYmIGV2LnR5cGUpOworICB9OworCisgIGVsZW1lbnQub24oJ2NsaWNrJywgbGlzdGVu
ZXIpOworCisgIGN0cmwuJHJlbmRlciA9IGZ1bmN0aW9uKCkgeworICAgIGVsZW1lbnRbMF0uY2hl
Y2tlZCA9IGN0cmwuJHZpZXdWYWx1ZTsKKyAgfTsKKworICAvLyBPdmVycmlkZSB0aGUgc3RhbmRh
cmQgYCRpc0VtcHR5YCBiZWNhdXNlIHRoZSAkdmlld1ZhbHVlIG9mIGFuIGVtcHR5IGNoZWNrYm94
IGlzIGFsd2F5cyBzZXQgdG8gYGZhbHNlYAorICAvLyBUaGlzIGlzIGJlY2F1c2Ugb2YgdGhlIHBh
cnNlciBiZWxvdywgd2hpY2ggY29tcGFyZXMgdGhlIGAkbW9kZWxWYWx1ZWAgd2l0aCBgdHJ1ZVZh
bHVlYCB0byBjb252ZXJ0CisgIC8vIGl0IHRvIGEgYm9vbGVhbi4KKyAgY3RybC4kaXNFbXB0eSA9
IGZ1bmN0aW9uKHZhbHVlKSB7CisgICAgcmV0dXJuIHZhbHVlID09PSBmYWxzZTsKKyAgfTsKKwor
ICBjdHJsLiRmb3JtYXR0ZXJzLnB1c2goZnVuY3Rpb24odmFsdWUpIHsKKyAgICByZXR1cm4gZXF1
YWxzKHZhbHVlLCB0cnVlVmFsdWUpOworICB9KTsKKworICBjdHJsLiRwYXJzZXJzLnB1c2goZnVu
Y3Rpb24odmFsdWUpIHsKKyAgICByZXR1cm4gdmFsdWUgPyB0cnVlVmFsdWUgOiBmYWxzZVZhbHVl
OworICB9KTsKK30KKworCisvKioKKyAqIEBuZ2RvYyBkaXJlY3RpdmUKKyAqIEBuYW1lIHRleHRh
cmVhCisgKiBAcmVzdHJpY3QgRQorICoKKyAqIEBkZXNjcmlwdGlvbgorICogSFRNTCB0ZXh0YXJl
YSBlbGVtZW50IGNvbnRyb2wgd2l0aCBhbmd1bGFyIGRhdGEtYmluZGluZy4gVGhlIGRhdGEtYmlu
ZGluZyBhbmQgdmFsaWRhdGlvbgorICogcHJvcGVydGllcyBvZiB0aGlzIGVsZW1lbnQgYXJlIGV4
YWN0bHkgdGhlIHNhbWUgYXMgdGhvc2Ugb2YgdGhlCisgKiB7QGxpbmsgbmcuZGlyZWN0aXZlOmlu
cHV0IGlucHV0IGVsZW1lbnR9LgorICoKKyAqIEBwYXJhbSB7c3RyaW5nfSBuZ01vZGVsIEFzc2ln
bmFibGUgYW5ndWxhciBleHByZXNzaW9uIHRvIGRhdGEtYmluZCB0by4KKyAqIEBwYXJhbSB7c3Ry
aW5nPX0gbmFtZSBQcm9wZXJ0eSBuYW1lIG9mIHRoZSBmb3JtIHVuZGVyIHdoaWNoIHRoZSBjb250
cm9sIGlzIHB1Ymxpc2hlZC4KKyAqIEBwYXJhbSB7c3RyaW5nPX0gcmVxdWlyZWQgU2V0cyBgcmVx
dWlyZWRgIHZhbGlkYXRpb24gZXJyb3Iga2V5IGlmIHRoZSB2YWx1ZSBpcyBub3QgZW50ZXJlZC4K
KyAqIEBwYXJhbSB7c3RyaW5nPX0gbmdSZXF1aXJlZCBBZGRzIGByZXF1aXJlZGAgYXR0cmlidXRl
IGFuZCBgcmVxdWlyZWRgIHZhbGlkYXRpb24gY29uc3RyYWludCB0bworICogICAgdGhlIGVsZW1l
bnQgd2hlbiB0aGUgbmdSZXF1aXJlZCBleHByZXNzaW9uIGV2YWx1YXRlcyB0byB0cnVlLiBVc2Ug
YG5nUmVxdWlyZWRgIGluc3RlYWQgb2YKKyAqICAgIGByZXF1aXJlZGAgd2hlbiB5b3Ugd2FudCB0
byBkYXRhLWJpbmQgdG8gdGhlIGByZXF1aXJlZGAgYXR0cmlidXRlLgorICogQHBhcmFtIHtudW1i
ZXI9fSBuZ01pbmxlbmd0aCBTZXRzIGBtaW5sZW5ndGhgIHZhbGlkYXRpb24gZXJyb3Iga2V5IGlm
IHRoZSB2YWx1ZSBpcyBzaG9ydGVyIHRoYW4KKyAqICAgIG1pbmxlbmd0aC4KKyAqIEBwYXJhbSB7
bnVtYmVyPX0gbmdNYXhsZW5ndGggU2V0cyBgbWF4bGVuZ3RoYCB2YWxpZGF0aW9uIGVycm9yIGtl
eSBpZiB0aGUgdmFsdWUgaXMgbG9uZ2VyIHRoYW4KKyAqICAgIG1heGxlbmd0aC4gU2V0dGluZyB0
aGUgYXR0cmlidXRlIHRvIGEgbmVnYXRpdmUgb3Igbm9uLW51bWVyaWMgdmFsdWUsIGFsbG93cyB2
aWV3IHZhbHVlcyBvZiBhbnkKKyAqICAgIGxlbmd0aC4KKyAqIEBwYXJhbSB7c3RyaW5nPX0gbmdQ
YXR0ZXJuIFNldHMgYHBhdHRlcm5gIHZhbGlkYXRpb24gZXJyb3Iga2V5IGlmIHRoZSBuZ01vZGVs
IHZhbHVlIGRvZXMgbm90IG1hdGNoCisgKiAgICBhIFJlZ0V4cCBmb3VuZCBieSBldmFsdWF0aW5n
IHRoZSBBbmd1bGFyIGV4cHJlc3Npb24gZ2l2ZW4gaW4gdGhlIGF0dHJpYnV0ZSB2YWx1ZS4KKyAq
ICAgIElmIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byBhIFJlZ0V4cCBvYmplY3QsIHRoZW4g
dGhpcyBpcyB1c2VkIGRpcmVjdGx5LgorICogICAgSWYgdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVz
IHRvIGEgc3RyaW5nLCB0aGVuIGl0IHdpbGwgYmUgY29udmVydGVkIHRvIGEgUmVnRXhwCisgKiAg
ICBhZnRlciB3cmFwcGluZyBpdCBpbiBgXmAgYW5kIGAkYCBjaGFyYWN0ZXJzLiBGb3IgaW5zdGFu
Y2UsIGAiYWJjImAgd2lsbCBiZSBjb252ZXJ0ZWQgdG8KKyAqICAgIGBuZXcgUmVnRXhwKCdeYWJj
JCcpYC48YnIgLz4KKyAqICAgICoqTm90ZToqKiBBdm9pZCB1c2luZyB0aGUgYGdgIGZsYWcgb24g
dGhlIFJlZ0V4cCwgYXMgaXQgd2lsbCBjYXVzZSBlYWNoIHN1Y2Nlc3NpdmUgc2VhcmNoIHRvCisg
KiAgICBzdGFydCBhdCB0aGUgaW5kZXggb2YgdGhlIGxhc3Qgc2VhcmNoJ3MgbWF0Y2gsIHRodXMg
bm90IHRha2luZyB0aGUgd2hvbGUgaW5wdXQgdmFsdWUgaW50bworICogICAgYWNjb3VudC4KKyAq
IEBwYXJhbSB7c3RyaW5nPX0gbmdDaGFuZ2UgQW5ndWxhciBleHByZXNzaW9uIHRvIGJlIGV4ZWN1
dGVkIHdoZW4gaW5wdXQgY2hhbmdlcyBkdWUgdG8gdXNlcgorICogICAgaW50ZXJhY3Rpb24gd2l0
aCB0aGUgaW5wdXQgZWxlbWVudC4KKyAqIEBwYXJhbSB7Ym9vbGVhbj19IFtuZ1RyaW09dHJ1ZV0g
SWYgc2V0IHRvIGZhbHNlIEFuZ3VsYXIgd2lsbCBub3QgYXV0b21hdGljYWxseSB0cmltIHRoZSBp
bnB1dC4KKyAqLworCisKKy8qKgorICogQG5nZG9jIGRpcmVjdGl2ZQorICogQG5hbWUgaW5wdXQK
KyAqIEByZXN0cmljdCBFCisgKgorICogQGRlc2NyaXB0aW9uCisgKiBIVE1MIGlucHV0IGVsZW1l
bnQgY29udHJvbC4gV2hlbiB1c2VkIHRvZ2V0aGVyIHdpdGgge0BsaW5rIG5nTW9kZWwgYG5nTW9k
ZWxgfSwgaXQgcHJvdmlkZXMgZGF0YS1iaW5kaW5nLAorICogaW5wdXQgc3RhdGUgY29udHJvbCwg
YW5kIHZhbGlkYXRpb24uCisgKiBJbnB1dCBjb250cm9sIGZvbGxvd3MgSFRNTDUgaW5wdXQgdHlw
ZXMgYW5kIHBvbHlmaWxscyB0aGUgSFRNTDUgdmFsaWRhdGlvbiBiZWhhdmlvciBmb3Igb2xkZXIg
YnJvd3NlcnMuCisgKgorICogPGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtd2FybmluZyI+CisgKiAq
Kk5vdGU6KiogTm90IGV2ZXJ5IGZlYXR1cmUgb2ZmZXJlZCBpcyBhdmFpbGFibGUgZm9yIGFsbCBp
bnB1dCB0eXBlcy4KKyAqIFNwZWNpZmljYWxseSwgZGF0YSBiaW5kaW5nIGFuZCBldmVudCBoYW5k
bGluZyB2aWEgYG5nLW1vZGVsYCBpcyB1bnN1cHBvcnRlZCBmb3IgYGlucHV0W2ZpbGVdYC4KKyAq
IDwvZGl2PgorICoKKyAqIEBwYXJhbSB7c3RyaW5nfSBuZ01vZGVsIEFzc2lnbmFibGUgYW5ndWxh
ciBleHByZXNzaW9uIHRvIGRhdGEtYmluZCB0by4KKyAqIEBwYXJhbSB7c3RyaW5nPX0gbmFtZSBQ
cm9wZXJ0eSBuYW1lIG9mIHRoZSBmb3JtIHVuZGVyIHdoaWNoIHRoZSBjb250cm9sIGlzIHB1Ymxp
c2hlZC4KKyAqIEBwYXJhbSB7c3RyaW5nPX0gcmVxdWlyZWQgU2V0cyBgcmVxdWlyZWRgIHZhbGlk
YXRpb24gZXJyb3Iga2V5IGlmIHRoZSB2YWx1ZSBpcyBub3QgZW50ZXJlZC4KKyAqIEBwYXJhbSB7
Ym9vbGVhbj19IG5nUmVxdWlyZWQgU2V0cyBgcmVxdWlyZWRgIGF0dHJpYnV0ZSBpZiBzZXQgdG8g
dHJ1ZQorICogQHBhcmFtIHtudW1iZXI9fSBuZ01pbmxlbmd0aCBTZXRzIGBtaW5sZW5ndGhgIHZh
bGlkYXRpb24gZXJyb3Iga2V5IGlmIHRoZSB2YWx1ZSBpcyBzaG9ydGVyIHRoYW4KKyAqICAgIG1p
bmxlbmd0aC4KKyAqIEBwYXJhbSB7bnVtYmVyPX0gbmdNYXhsZW5ndGggU2V0cyBgbWF4bGVuZ3Ro
YCB2YWxpZGF0aW9uIGVycm9yIGtleSBpZiB0aGUgdmFsdWUgaXMgbG9uZ2VyIHRoYW4KKyAqICAg
IG1heGxlbmd0aC4gU2V0dGluZyB0aGUgYXR0cmlidXRlIHRvIGEgbmVnYXRpdmUgb3Igbm9uLW51
bWVyaWMgdmFsdWUsIGFsbG93cyB2aWV3IHZhbHVlcyBvZiBhbnkKKyAqICAgIGxlbmd0aC4KKyAq
IEBwYXJhbSB7c3RyaW5nPX0gbmdQYXR0ZXJuIFNldHMgYHBhdHRlcm5gIHZhbGlkYXRpb24gZXJy
b3Iga2V5IGlmIHRoZSBuZ01vZGVsIHZhbHVlIGRvZXMgbm90IG1hdGNoCisgKiAgICBhIFJlZ0V4
cCBmb3VuZCBieSBldmFsdWF0aW5nIHRoZSBBbmd1bGFyIGV4cHJlc3Npb24gZ2l2ZW4gaW4gdGhl
IGF0dHJpYnV0ZSB2YWx1ZS4KKyAqICAgIElmIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byBh
IFJlZ0V4cCBvYmplY3QsIHRoZW4gdGhpcyBpcyB1c2VkIGRpcmVjdGx5LgorICogICAgSWYgdGhl
IGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIGEgc3RyaW5nLCB0aGVuIGl0IHdpbGwgYmUgY29udmVy
dGVkIHRvIGEgUmVnRXhwCisgKiAgICBhZnRlciB3cmFwcGluZyBpdCBpbiBgXmAgYW5kIGAkYCBj
aGFyYWN0ZXJzLiBGb3IgaW5zdGFuY2UsIGAiYWJjImAgd2lsbCBiZSBjb252ZXJ0ZWQgdG8KKyAq
ICAgIGBuZXcgUmVnRXhwKCdeYWJjJCcpYC48YnIgLz4KKyAqICAgICoqTm90ZToqKiBBdm9pZCB1
c2luZyB0aGUgYGdgIGZsYWcgb24gdGhlIFJlZ0V4cCwgYXMgaXQgd2lsbCBjYXVzZSBlYWNoIHN1
Y2Nlc3NpdmUgc2VhcmNoIHRvCisgKiAgICBzdGFydCBhdCB0aGUgaW5kZXggb2YgdGhlIGxhc3Qg
c2VhcmNoJ3MgbWF0Y2gsIHRodXMgbm90IHRha2luZyB0aGUgd2hvbGUgaW5wdXQgdmFsdWUgaW50
bworICogICAgYWNjb3VudC4KKyAqIEBwYXJhbSB7c3RyaW5nPX0gbmdDaGFuZ2UgQW5ndWxhciBl
eHByZXNzaW9uIHRvIGJlIGV4ZWN1dGVkIHdoZW4gaW5wdXQgY2hhbmdlcyBkdWUgdG8gdXNlcgor
ICogICAgaW50ZXJhY3Rpb24gd2l0aCB0aGUgaW5wdXQgZWxlbWVudC4KKyAqIEBwYXJhbSB7Ym9v
bGVhbj19IFtuZ1RyaW09dHJ1ZV0gSWYgc2V0IHRvIGZhbHNlIEFuZ3VsYXIgd2lsbCBub3QgYXV0
b21hdGljYWxseSB0cmltIHRoZSBpbnB1dC4KKyAqICAgIFRoaXMgcGFyYW1ldGVyIGlzIGlnbm9y
ZWQgZm9yIGlucHV0W3R5cGU9cGFzc3dvcmRdIGNvbnRyb2xzLCB3aGljaCB3aWxsIG5ldmVyIHRy
aW0gdGhlCisgKiAgICBpbnB1dC4KKyAqCisgKiBAZXhhbXBsZQorICAgIDxleGFtcGxlIG5hbWU9
ImlucHV0LWRpcmVjdGl2ZSIgbW9kdWxlPSJpbnB1dEV4YW1wbGUiPgorICAgICAgPGZpbGUgbmFt
ZT0iaW5kZXguaHRtbCI+CisgICAgICAgPHNjcmlwdD4KKyAgICAgICAgICBhbmd1bGFyLm1vZHVs
ZSgnaW5wdXRFeGFtcGxlJywgW10pCisgICAgICAgICAgICAuY29udHJvbGxlcignRXhhbXBsZUNv
bnRyb2xsZXInLCBbJyRzY29wZScsIGZ1bmN0aW9uKCRzY29wZSkgeworICAgICAgICAgICAgICAk
c2NvcGUudXNlciA9IHtuYW1lOiAnZ3Vlc3QnLCBsYXN0OiAndmlzaXRvcid9OworICAgICAgICAg
ICAgfV0pOworICAgICAgIDwvc2NyaXB0PgorICAgICAgIDxkaXYgbmctY29udHJvbGxlcj0iRXhh
bXBsZUNvbnRyb2xsZXIiPgorICAgICAgICAgPGZvcm0gbmFtZT0ibXlGb3JtIj4KKyAgICAgICAg
ICAgPGxhYmVsPgorICAgICAgICAgICAgICBVc2VyIG5hbWU6CisgICAgICAgICAgICAgIDxpbnB1
dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ1c2VyTmFtZSIgbmctbW9kZWw9InVzZXIubmFtZSIgcmVxdWly
ZWQ+CisgICAgICAgICAgIDwvbGFiZWw+CisgICAgICAgICAgIDxkaXYgcm9sZT0iYWxlcnQiPgor
ICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJlcnJvciIgbmctc2hvdz0ibXlGb3JtLnVzZXJOYW1l
LiRlcnJvci5yZXF1aXJlZCI+CisgICAgICAgICAgICAgIFJlcXVpcmVkITwvc3Bhbj4KKyAgICAg
ICAgICAgPC9kaXY+CisgICAgICAgICAgIDxsYWJlbD4KKyAgICAgICAgICAgICAgTGFzdCBuYW1l
OgorICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ibGFzdE5hbWUiIG5nLW1v
ZGVsPSJ1c2VyLmxhc3QiCisgICAgICAgICAgICAgIG5nLW1pbmxlbmd0aD0iMyIgbmctbWF4bGVu
Z3RoPSIxMCI+CisgICAgICAgICAgIDwvbGFiZWw+CisgICAgICAgICAgIDxkaXYgcm9sZT0iYWxl
cnQiPgorICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJlcnJvciIgbmctc2hvdz0ibXlGb3JtLmxh
c3ROYW1lLiRlcnJvci5taW5sZW5ndGgiPgorICAgICAgICAgICAgICAgVG9vIHNob3J0ITwvc3Bh
bj4KKyAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZXJyb3IiIG5nLXNob3c9Im15Rm9ybS5sYXN0
TmFtZS4kZXJyb3IubWF4bGVuZ3RoIj4KKyAgICAgICAgICAgICAgIFRvbyBsb25nITwvc3Bhbj4K
KyAgICAgICAgICAgPC9kaXY+CisgICAgICAgICA8L2Zvcm0+CisgICAgICAgICA8aHI+CisgICAg
ICAgICA8dHQ+dXNlciA9IHt7dXNlcn19PC90dD48YnIvPgorICAgICAgICAgPHR0Pm15Rm9ybS51
c2VyTmFtZS4kdmFsaWQgPSB7e215Rm9ybS51c2VyTmFtZS4kdmFsaWR9fTwvdHQ+PGJyLz4KKyAg
ICAgICAgIDx0dD5teUZvcm0udXNlck5hbWUuJGVycm9yID0ge3tteUZvcm0udXNlck5hbWUuJGVy
cm9yfX08L3R0Pjxici8+CisgICAgICAgICA8dHQ+bXlGb3JtLmxhc3ROYW1lLiR2YWxpZCA9IHt7
bXlGb3JtLmxhc3ROYW1lLiR2YWxpZH19PC90dD48YnIvPgorICAgICAgICAgPHR0Pm15Rm9ybS5s
YXN0TmFtZS4kZXJyb3IgPSB7e215Rm9ybS5sYXN0TmFtZS4kZXJyb3J9fTwvdHQ+PGJyLz4KKyAg
ICAgICAgIDx0dD5teUZvcm0uJHZhbGlkID0ge3tteUZvcm0uJHZhbGlkfX08L3R0Pjxici8+Cisg
ICAgICAgICA8dHQ+bXlGb3JtLiRlcnJvci5yZXF1aXJlZCA9IHt7ISFteUZvcm0uJGVycm9yLnJl
cXVpcmVkfX08L3R0Pjxici8+CisgICAgICAgICA8dHQ+bXlGb3JtLiRlcnJvci5taW5sZW5ndGgg
PSB7eyEhbXlGb3JtLiRlcnJvci5taW5sZW5ndGh9fTwvdHQ+PGJyLz4KKyAgICAgICAgIDx0dD5t
eUZvcm0uJGVycm9yLm1heGxlbmd0aCA9IHt7ISFteUZvcm0uJGVycm9yLm1heGxlbmd0aH19PC90
dD48YnIvPgorICAgICAgIDwvZGl2PgorICAgICAgPC9maWxlPgorICAgICAgPGZpbGUgbmFtZT0i
cHJvdHJhY3Rvci5qcyIgdHlwZT0icHJvdHJhY3RvciI+CisgICAgICAgIHZhciB1c2VyID0gZWxl
bWVudChieS5leGFjdEJpbmRpbmcoJ3VzZXInKSk7CisgICAgICAgIHZhciB1c2VyTmFtZVZhbGlk
ID0gZWxlbWVudChieS5iaW5kaW5nKCdteUZvcm0udXNlck5hbWUuJHZhbGlkJykpOworICAgICAg
ICB2YXIgbGFzdE5hbWVWYWxpZCA9IGVsZW1lbnQoYnkuYmluZGluZygnbXlGb3JtLmxhc3ROYW1l
LiR2YWxpZCcpKTsKKyAgICAgICAgdmFyIGxhc3ROYW1lRXJyb3IgPSBlbGVtZW50KGJ5LmJpbmRp
bmcoJ215Rm9ybS5sYXN0TmFtZS4kZXJyb3InKSk7CisgICAgICAgIHZhciBmb3JtVmFsaWQgPSBl
bGVtZW50KGJ5LmJpbmRpbmcoJ215Rm9ybS4kdmFsaWQnKSk7CisgICAgICAgIHZhciB1c2VyTmFt
ZUlucHV0ID0gZWxlbWVudChieS5tb2RlbCgndXNlci5uYW1lJykpOworICAgICAgICB2YXIgdXNl
ckxhc3RJbnB1dCA9IGVsZW1lbnQoYnkubW9kZWwoJ3VzZXIubGFzdCcpKTsKKworICAgICAgICBp
dCgnc2hvdWxkIGluaXRpYWxpemUgdG8gbW9kZWwnLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICBl
eHBlY3QodXNlci5nZXRUZXh0KCkpLnRvQ29udGFpbigneyJuYW1lIjoiZ3Vlc3QiLCJsYXN0Ijoi
dmlzaXRvciJ9Jyk7CisgICAgICAgICAgZXhwZWN0KHVzZXJOYW1lVmFsaWQuZ2V0VGV4dCgpKS50
b0NvbnRhaW4oJ3RydWUnKTsKKyAgICAgICAgICBleHBlY3QoZm9ybVZhbGlkLmdldFRleHQoKSku
dG9Db250YWluKCd0cnVlJyk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQgYmUg
aW52YWxpZCBpZiBlbXB0eSB3aGVuIHJlcXVpcmVkJywgZnVuY3Rpb24oKSB7CisgICAgICAgICAg
dXNlck5hbWVJbnB1dC5jbGVhcigpOworICAgICAgICAgIHVzZXJOYW1lSW5wdXQuc2VuZEtleXMo
JycpOworCisgICAgICAgICAgZXhwZWN0KHVzZXIuZ2V0VGV4dCgpKS50b0NvbnRhaW4oJ3sibGFz
dCI6InZpc2l0b3IifScpOworICAgICAgICAgIGV4cGVjdCh1c2VyTmFtZVZhbGlkLmdldFRleHQo
KSkudG9Db250YWluKCdmYWxzZScpOworICAgICAgICAgIGV4cGVjdChmb3JtVmFsaWQuZ2V0VGV4
dCgpKS50b0NvbnRhaW4oJ2ZhbHNlJyk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzaG91
bGQgYmUgdmFsaWQgaWYgZW1wdHkgd2hlbiBtaW4gbGVuZ3RoIGlzIHNldCcsIGZ1bmN0aW9uKCkg
eworICAgICAgICAgIHVzZXJMYXN0SW5wdXQuY2xlYXIoKTsKKyAgICAgICAgICB1c2VyTGFzdElu
cHV0LnNlbmRLZXlzKCcnKTsKKworICAgICAgICAgIGV4cGVjdCh1c2VyLmdldFRleHQoKSkudG9D
b250YWluKCd7Im5hbWUiOiJndWVzdCIsImxhc3QiOiIifScpOworICAgICAgICAgIGV4cGVjdChs
YXN0TmFtZVZhbGlkLmdldFRleHQoKSkudG9Db250YWluKCd0cnVlJyk7CisgICAgICAgICAgZXhw
ZWN0KGZvcm1WYWxpZC5nZXRUZXh0KCkpLnRvQ29udGFpbigndHJ1ZScpOworICAgICAgICB9KTsK
KworICAgICAgICBpdCgnc2hvdWxkIGJlIGludmFsaWQgaWYgbGVzcyB0aGFuIHJlcXVpcmVkIG1p
biBsZW5ndGgnLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICB1c2VyTGFzdElucHV0LmNsZWFyKCk7
CisgICAgICAgICAgdXNlckxhc3RJbnB1dC5zZW5kS2V5cygneHgnKTsKKworICAgICAgICAgIGV4
cGVjdCh1c2VyLmdldFRleHQoKSkudG9Db250YWluKCd7Im5hbWUiOiJndWVzdCJ9Jyk7CisgICAg
ICAgICAgZXhwZWN0KGxhc3ROYW1lVmFsaWQuZ2V0VGV4dCgpKS50b0NvbnRhaW4oJ2ZhbHNlJyk7
CisgICAgICAgICAgZXhwZWN0KGxhc3ROYW1lRXJyb3IuZ2V0VGV4dCgpKS50b0NvbnRhaW4oJ21p
bmxlbmd0aCcpOworICAgICAgICAgIGV4cGVjdChmb3JtVmFsaWQuZ2V0VGV4dCgpKS50b0NvbnRh
aW4oJ2ZhbHNlJyk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQgYmUgaW52YWxp
ZCBpZiBsb25nZXIgdGhhbiBtYXggbGVuZ3RoJywgZnVuY3Rpb24oKSB7CisgICAgICAgICAgdXNl
ckxhc3RJbnB1dC5jbGVhcigpOworICAgICAgICAgIHVzZXJMYXN0SW5wdXQuc2VuZEtleXMoJ3Nv
bWUgcmlkaWN1bG91c2x5IGxvbmcgbmFtZScpOworCisgICAgICAgICAgZXhwZWN0KHVzZXIuZ2V0
VGV4dCgpKS50b0NvbnRhaW4oJ3sibmFtZSI6Imd1ZXN0In0nKTsKKyAgICAgICAgICBleHBlY3Qo
bGFzdE5hbWVWYWxpZC5nZXRUZXh0KCkpLnRvQ29udGFpbignZmFsc2UnKTsKKyAgICAgICAgICBl
eHBlY3QobGFzdE5hbWVFcnJvci5nZXRUZXh0KCkpLnRvQ29udGFpbignbWF4bGVuZ3RoJyk7Cisg
ICAgICAgICAgZXhwZWN0KGZvcm1WYWxpZC5nZXRUZXh0KCkpLnRvQ29udGFpbignZmFsc2UnKTsK
KyAgICAgICAgfSk7CisgICAgICA8L2ZpbGU+CisgICAgPC9leGFtcGxlPgorICovCit2YXIgaW5w
dXREaXJlY3RpdmUgPSBbJyRicm93c2VyJywgJyRzbmlmZmVyJywgJyRmaWx0ZXInLCAnJHBhcnNl
JywKKyAgICBmdW5jdGlvbigkYnJvd3NlciwgJHNuaWZmZXIsICRmaWx0ZXIsICRwYXJzZSkgewor
ICByZXR1cm4geworICAgIHJlc3RyaWN0OiAnRScsCisgICAgcmVxdWlyZTogWyc/bmdNb2RlbCdd
LAorICAgIGxpbms6IHsKKyAgICAgIHByZTogZnVuY3Rpb24oc2NvcGUsIGVsZW1lbnQsIGF0dHIs
IGN0cmxzKSB7CisgICAgICAgIGlmIChjdHJsc1swXSkgeworICAgICAgICAgIChpbnB1dFR5cGVb
bG93ZXJjYXNlKGF0dHIudHlwZSldIHx8IGlucHV0VHlwZS50ZXh0KShzY29wZSwgZWxlbWVudCwg
YXR0ciwgY3RybHNbMF0sICRzbmlmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYnJvd3NlciwgJGZpbHRlciwgJHBhcnNl
KTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfTsKK31dOworCisKKwordmFyIENPTlNU
QU5UX1ZBTFVFX1JFR0VYUCA9IC9eKHRydWV8ZmFsc2V8XGQrKSQvOworLyoqCisgKiBAbmdkb2Mg
ZGlyZWN0aXZlCisgKiBAbmFtZSBuZ1ZhbHVlCisgKgorICogQGRlc2NyaXB0aW9uCisgKiBCaW5k
cyB0aGUgZ2l2ZW4gZXhwcmVzc2lvbiB0byB0aGUgdmFsdWUgb2YgYDxvcHRpb24+YCBvciB7QGxp
bmsgaW5wdXRbcmFkaW9dIGBpbnB1dFtyYWRpb11gfSwKKyAqIHNvIHRoYXQgd2hlbiB0aGUgZWxl
bWVudCBpcyBzZWxlY3RlZCwgdGhlIHtAbGluayBuZ01vZGVsIGBuZ01vZGVsYH0gb2YgdGhhdCBl
bGVtZW50IGlzIHNldCB0bworICogdGhlIGJvdW5kIHZhbHVlLgorICoKKyAqIGBuZ1ZhbHVlYCBp
cyB1c2VmdWwgd2hlbiBkeW5hbWljYWxseSBnZW5lcmF0aW5nIGxpc3RzIG9mIHJhZGlvIGJ1dHRv
bnMgdXNpbmcKKyAqIHtAbGluayBuZ1JlcGVhdCBgbmdSZXBlYXRgfSwgYXMgc2hvd24gYmVsb3cu
CisgKgorICogTGlrZXdpc2UsIGBuZ1ZhbHVlYCBjYW4gYmUgdXNlZCB0byBnZW5lcmF0ZSBgPG9w
dGlvbj5gIGVsZW1lbnRzIGZvcgorICogdGhlIHtAbGluayBzZWxlY3QgYHNlbGVjdGB9IGVsZW1l
bnQuIEluIHRoYXQgY2FzZSBob3dldmVyLCBvbmx5IHN0cmluZ3MgYXJlIHN1cHBvcnRlZAorICog
Zm9yIHRoZSBgdmFsdWUgYGF0dHJpYnV0ZSwgc28gdGhlIHJlc3VsdGluZyBgbmdNb2RlbGAgd2ls
bCBhbHdheXMgYmUgYSBzdHJpbmcuCisgKiBTdXBwb3J0IGZvciBgc2VsZWN0YCBtb2RlbHMgd2l0
aCBub24tc3RyaW5nIHZhbHVlcyBpcyBhdmFpbGFibGUgdmlhIGBuZ09wdGlvbnNgLgorICoKKyAq
IEBlbGVtZW50IGlucHV0CisgKiBAcGFyYW0ge3N0cmluZz19IG5nVmFsdWUgYW5ndWxhciBleHBy
ZXNzaW9uLCB3aG9zZSB2YWx1ZSB3aWxsIGJlIGJvdW5kIHRvIHRoZSBgdmFsdWVgIGF0dHJpYnV0
ZQorICogICBvZiB0aGUgYGlucHV0YCBlbGVtZW50CisgKgorICogQGV4YW1wbGUKKyAgICA8ZXhh
bXBsZSBuYW1lPSJuZ1ZhbHVlLWRpcmVjdGl2ZSIgbW9kdWxlPSJ2YWx1ZUV4YW1wbGUiPgorICAg
ICAgPGZpbGUgbmFtZT0iaW5kZXguaHRtbCI+CisgICAgICAgPHNjcmlwdD4KKyAgICAgICAgICBh
bmd1bGFyLm1vZHVsZSgndmFsdWVFeGFtcGxlJywgW10pCisgICAgICAgICAgICAuY29udHJvbGxl
cignRXhhbXBsZUNvbnRyb2xsZXInLCBbJyRzY29wZScsIGZ1bmN0aW9uKCRzY29wZSkgeworICAg
ICAgICAgICAgICAkc2NvcGUubmFtZXMgPSBbJ3BpenphJywgJ3VuaWNvcm5zJywgJ3JvYm90cydd
OworICAgICAgICAgICAgICAkc2NvcGUubXkgPSB7IGZhdm9yaXRlOiAndW5pY29ybnMnIH07Cisg
ICAgICAgICAgICB9XSk7CisgICAgICAgPC9zY3JpcHQ+CisgICAgICAgIDxmb3JtIG5nLWNvbnRy
b2xsZXI9IkV4YW1wbGVDb250cm9sbGVyIj4KKyAgICAgICAgICA8aDI+V2hpY2ggaXMgeW91ciBm
YXZvcml0ZT88L2gyPgorICAgICAgICAgICAgPGxhYmVsIG5nLXJlcGVhdD0ibmFtZSBpbiBuYW1l
cyIgZm9yPSJ7e25hbWV9fSI+CisgICAgICAgICAgICAgIHt7bmFtZX19CisgICAgICAgICAgICAg
IDxpbnB1dCB0eXBlPSJyYWRpbyIKKyAgICAgICAgICAgICAgICAgICAgIG5nLW1vZGVsPSJteS5m
YXZvcml0ZSIKKyAgICAgICAgICAgICAgICAgICAgIG5nLXZhbHVlPSJuYW1lIgorICAgICAgICAg
ICAgICAgICAgICAgaWQ9Int7bmFtZX19IgorICAgICAgICAgICAgICAgICAgICAgbmFtZT0iZmF2
b3JpdGUiPgorICAgICAgICAgICAgPC9sYWJlbD4KKyAgICAgICAgICA8ZGl2PllvdSBjaG9zZSB7
e215LmZhdm9yaXRlfX08L2Rpdj4KKyAgICAgICAgPC9mb3JtPgorICAgICAgPC9maWxlPgorICAg
ICAgPGZpbGUgbmFtZT0icHJvdHJhY3Rvci5qcyIgdHlwZT0icHJvdHJhY3RvciI+CisgICAgICAg
IHZhciBmYXZvcml0ZSA9IGVsZW1lbnQoYnkuYmluZGluZygnbXkuZmF2b3JpdGUnKSk7CisKKyAg
ICAgICAgaXQoJ3Nob3VsZCBpbml0aWFsaXplIHRvIG1vZGVsJywgZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgZXhwZWN0KGZhdm9yaXRlLmdldFRleHQoKSkudG9Db250YWluKCd1bmljb3JucycpOwor
ICAgICAgICB9KTsKKyAgICAgICAgaXQoJ3Nob3VsZCBiaW5kIHRoZSB2YWx1ZXMgdG8gdGhlIGlu
cHV0cycsIGZ1bmN0aW9uKCkgeworICAgICAgICAgIGVsZW1lbnQuYWxsKGJ5Lm1vZGVsKCdteS5m
YXZvcml0ZScpKS5nZXQoMCkuY2xpY2soKTsKKyAgICAgICAgICBleHBlY3QoZmF2b3JpdGUuZ2V0
VGV4dCgpKS50b0NvbnRhaW4oJ3BpenphJyk7CisgICAgICAgIH0pOworICAgICAgPC9maWxlPgor
ICAgIDwvZXhhbXBsZT4KKyAqLwordmFyIG5nVmFsdWVEaXJlY3RpdmUgPSBmdW5jdGlvbigpIHsK
KyAgcmV0dXJuIHsKKyAgICByZXN0cmljdDogJ0EnLAorICAgIHByaW9yaXR5OiAxMDAsCisgICAg
Y29tcGlsZTogZnVuY3Rpb24odHBsLCB0cGxBdHRyKSB7CisgICAgICBpZiAoQ09OU1RBTlRfVkFM
VUVfUkVHRVhQLnRlc3QodHBsQXR0ci5uZ1ZhbHVlKSkgeworICAgICAgICByZXR1cm4gZnVuY3Rp
b24gbmdWYWx1ZUNvbnN0YW50TGluayhzY29wZSwgZWxtLCBhdHRyKSB7CisgICAgICAgICAgYXR0
ci4kc2V0KCd2YWx1ZScsIHNjb3BlLiRldmFsKGF0dHIubmdWYWx1ZSkpOworICAgICAgICB9Owor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIG5nVmFsdWVMaW5rKHNjb3Bl
LCBlbG0sIGF0dHIpIHsKKyAgICAgICAgICBzY29wZS4kd2F0Y2goYXR0ci5uZ1ZhbHVlLCBmdW5j
dGlvbiB2YWx1ZVdhdGNoQWN0aW9uKHZhbHVlKSB7CisgICAgICAgICAgICBhdHRyLiRzZXQoJ3Zh
bHVlJywgdmFsdWUpOworICAgICAgICAgIH0pOworICAgICAgICB9OworICAgICAgfQorICAgIH0K
KyAgfTsKK307CisKKy8qKgorICogQG5nZG9jIGRpcmVjdGl2ZQorICogQG5hbWUgbmdCaW5kCisg
KiBAcmVzdHJpY3QgQUMKKyAqCisgKiBAZGVzY3JpcHRpb24KKyAqIFRoZSBgbmdCaW5kYCBhdHRy
aWJ1dGUgdGVsbHMgQW5ndWxhciB0byByZXBsYWNlIHRoZSB0ZXh0IGNvbnRlbnQgb2YgdGhlIHNw
ZWNpZmllZCBIVE1MIGVsZW1lbnQKKyAqIHdpdGggdGhlIHZhbHVlIG9mIGEgZ2l2ZW4gZXhwcmVz
c2lvbiwgYW5kIHRvIHVwZGF0ZSB0aGUgdGV4dCBjb250ZW50IHdoZW4gdGhlIHZhbHVlIG9mIHRo
YXQKKyAqIGV4cHJlc3Npb24gY2hhbmdlcy4KKyAqCisgKiBUeXBpY2FsbHksIHlvdSBkb24ndCB1
c2UgYG5nQmluZGAgZGlyZWN0bHksIGJ1dCBpbnN0ZWFkIHlvdSB1c2UgdGhlIGRvdWJsZSBjdXJs
eSBtYXJrdXAgbGlrZQorICogYHt7IGV4cHJlc3Npb24gfX1gIHdoaWNoIGlzIHNpbWlsYXIgYnV0
IGxlc3MgdmVyYm9zZS4KKyAqCisgKiBJdCBpcyBwcmVmZXJhYmxlIHRvIHVzZSBgbmdCaW5kYCBp
bnN0ZWFkIG9mIGB7eyBleHByZXNzaW9uIH19YCBpZiBhIHRlbXBsYXRlIGlzIG1vbWVudGFyaWx5
CisgKiBkaXNwbGF5ZWQgYnkgdGhlIGJyb3dzZXIgaW4gaXRzIHJhdyBzdGF0ZSBiZWZvcmUgQW5n
dWxhciBjb21waWxlcyBpdC4gU2luY2UgYG5nQmluZGAgaXMgYW4KKyAqIGVsZW1lbnQgYXR0cmli
dXRlLCBpdCBtYWtlcyB0aGUgYmluZGluZ3MgaW52aXNpYmxlIHRvIHRoZSB1c2VyIHdoaWxlIHRo
ZSBwYWdlIGlzIGxvYWRpbmcuCisgKgorICogQW4gYWx0ZXJuYXRpdmUgc29sdXRpb24gdG8gdGhp
cyBwcm9ibGVtIHdvdWxkIGJlIHVzaW5nIHRoZQorICoge0BsaW5rIG5nLmRpcmVjdGl2ZTpuZ0Ns
b2FrIG5nQ2xvYWt9IGRpcmVjdGl2ZS4KKyAqCisgKgorICogQGVsZW1lbnQgQU5ZCisgKiBAcGFy
YW0ge2V4cHJlc3Npb259IG5nQmluZCB7QGxpbmsgZ3VpZGUvZXhwcmVzc2lvbiBFeHByZXNzaW9u
fSB0byBldmFsdWF0ZS4KKyAqCisgKiBAZXhhbXBsZQorICogRW50ZXIgYSBuYW1lIGluIHRoZSBM
aXZlIFByZXZpZXcgdGV4dCBib3g7IHRoZSBncmVldGluZyBiZWxvdyB0aGUgdGV4dCBib3ggY2hh
bmdlcyBpbnN0YW50bHkuCisgICA8ZXhhbXBsZSBtb2R1bGU9ImJpbmRFeGFtcGxlIj4KKyAgICAg
PGZpbGUgbmFtZT0iaW5kZXguaHRtbCI+CisgICAgICAgPHNjcmlwdD4KKyAgICAgICAgIGFuZ3Vs
YXIubW9kdWxlKCdiaW5kRXhhbXBsZScsIFtdKQorICAgICAgICAgICAuY29udHJvbGxlcignRXhh
bXBsZUNvbnRyb2xsZXInLCBbJyRzY29wZScsIGZ1bmN0aW9uKCRzY29wZSkgeworICAgICAgICAg
ICAgICRzY29wZS5uYW1lID0gJ1doaXJsZWQnOworICAgICAgICAgICB9XSk7CisgICAgICAgPC9z
Y3JpcHQ+CisgICAgICAgPGRpdiBuZy1jb250cm9sbGVyPSJFeGFtcGxlQ29udHJvbGxlciI+Cisg
ICAgICAgICA8bGFiZWw+RW50ZXIgbmFtZTogPGlucHV0IHR5cGU9InRleHQiIG5nLW1vZGVsPSJu
YW1lIj48L2xhYmVsPjxicj4KKyAgICAgICAgIEhlbGxvIDxzcGFuIG5nLWJpbmQ9Im5hbWUiPjwv
c3Bhbj4hCisgICAgICAgPC9kaXY+CisgICAgIDwvZmlsZT4KKyAgICAgPGZpbGUgbmFtZT0icHJv
dHJhY3Rvci5qcyIgdHlwZT0icHJvdHJhY3RvciI+CisgICAgICAgaXQoJ3Nob3VsZCBjaGVjayBu
Zy1iaW5kJywgZnVuY3Rpb24oKSB7CisgICAgICAgICB2YXIgbmFtZUlucHV0ID0gZWxlbWVudChi
eS5tb2RlbCgnbmFtZScpKTsKKworICAgICAgICAgZXhwZWN0KGVsZW1lbnQoYnkuYmluZGluZygn
bmFtZScpKS5nZXRUZXh0KCkpLnRvQmUoJ1doaXJsZWQnKTsKKyAgICAgICAgIG5hbWVJbnB1dC5j
bGVhcigpOworICAgICAgICAgbmFtZUlucHV0LnNlbmRLZXlzKCd3b3JsZCcpOworICAgICAgICAg
ZXhwZWN0KGVsZW1lbnQoYnkuYmluZGluZygnbmFtZScpKS5nZXRUZXh0KCkpLnRvQmUoJ3dvcmxk
Jyk7CisgICAgICAgfSk7CisgICAgIDwvZmlsZT4KKyAgIDwvZXhhbXBsZT4KKyAqLwordmFyIG5n
QmluZERpcmVjdGl2ZSA9IFsnJGNvbXBpbGUnLCBmdW5jdGlvbigkY29tcGlsZSkgeworICByZXR1
cm4geworICAgIHJlc3RyaWN0OiAnQUMnLAorICAgIGNvbXBpbGU6IGZ1bmN0aW9uIG5nQmluZENv
bXBpbGUodGVtcGxhdGVFbGVtZW50KSB7CisgICAgICAkY29tcGlsZS4kJGFkZEJpbmRpbmdDbGFz
cyh0ZW1wbGF0ZUVsZW1lbnQpOworICAgICAgcmV0dXJuIGZ1bmN0aW9uIG5nQmluZExpbmsoc2Nv
cGUsIGVsZW1lbnQsIGF0dHIpIHsKKyAgICAgICAgJGNvbXBpbGUuJCRhZGRCaW5kaW5nSW5mbyhl
bGVtZW50LCBhdHRyLm5nQmluZCk7CisgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50WzBdOworICAg
ICAgICBzY29wZS4kd2F0Y2goYXR0ci5uZ0JpbmQsIGZ1bmN0aW9uIG5nQmluZFdhdGNoQWN0aW9u
KHZhbHVlKSB7CisgICAgICAgICAgZWxlbWVudC50ZXh0Q29udGVudCA9IHZhbHVlID09PSB1bmRl
ZmluZWQgPyAnJyA6IHZhbHVlOworICAgICAgICB9KTsKKyAgICAgIH07CisgICAgfQorICB9Owor
fV07CisKKworLyoqCisgKiBAbmdkb2MgZGlyZWN0aXZlCisgKiBAbmFtZSBuZ0JpbmRUZW1wbGF0
ZQorICoKKyAqIEBkZXNjcmlwdGlvbgorICogVGhlIGBuZ0JpbmRUZW1wbGF0ZWAgZGlyZWN0aXZl
IHNwZWNpZmllcyB0aGF0IHRoZSBlbGVtZW50CisgKiB0ZXh0IGNvbnRlbnQgc2hvdWxkIGJlIHJl
cGxhY2VkIHdpdGggdGhlIGludGVycG9sYXRpb24gb2YgdGhlIHRlbXBsYXRlCisgKiBpbiB0aGUg
YG5nQmluZFRlbXBsYXRlYCBhdHRyaWJ1dGUuCisgKiBVbmxpa2UgYG5nQmluZGAsIHRoZSBgbmdC
aW5kVGVtcGxhdGVgIGNhbiBjb250YWluIG11bHRpcGxlIGB7e2AgYH19YAorICogZXhwcmVzc2lv
bnMuIFRoaXMgZGlyZWN0aXZlIGlzIG5lZWRlZCBzaW5jZSBzb21lIEhUTUwgZWxlbWVudHMKKyAq
IChzdWNoIGFzIFRJVExFIGFuZCBPUFRJT04pIGNhbm5vdCBjb250YWluIFNQQU4gZWxlbWVudHMu
CisgKgorICogQGVsZW1lbnQgQU5ZCisgKiBAcGFyYW0ge3N0cmluZ30gbmdCaW5kVGVtcGxhdGUg
dGVtcGxhdGUgb2YgZm9ybQorICogICA8dHQ+e3s8L3R0PiA8dHQ+ZXhwcmVzc2lvbjwvdHQ+IDx0
dD59fTwvdHQ+IHRvIGV2YWwuCisgKgorICogQGV4YW1wbGUKKyAqIFRyeSBpdCBoZXJlOiBlbnRl
ciB0ZXh0IGluIHRleHQgYm94IGFuZCB3YXRjaCB0aGUgZ3JlZXRpbmcgY2hhbmdlLgorICAgPGV4
YW1wbGUgbW9kdWxlPSJiaW5kRXhhbXBsZSI+CisgICAgIDxmaWxlIG5hbWU9ImluZGV4Lmh0bWwi
PgorICAgICAgIDxzY3JpcHQ+CisgICAgICAgICBhbmd1bGFyLm1vZHVsZSgnYmluZEV4YW1wbGUn
LCBbXSkKKyAgICAgICAgICAgLmNvbnRyb2xsZXIoJ0V4YW1wbGVDb250cm9sbGVyJywgWyckc2Nv
cGUnLCBmdW5jdGlvbigkc2NvcGUpIHsKKyAgICAgICAgICAgICAkc2NvcGUuc2FsdXRhdGlvbiA9
ICdIZWxsbyc7CisgICAgICAgICAgICAgJHNjb3BlLm5hbWUgPSAnV29ybGQnOworICAgICAgICAg
ICB9XSk7CisgICAgICAgPC9zY3JpcHQ+CisgICAgICAgPGRpdiBuZy1jb250cm9sbGVyPSJFeGFt
cGxlQ29udHJvbGxlciI+CisgICAgICAgIDxsYWJlbD5TYWx1dGF0aW9uOiA8aW5wdXQgdHlwZT0i
dGV4dCIgbmctbW9kZWw9InNhbHV0YXRpb24iPjwvbGFiZWw+PGJyPgorICAgICAgICA8bGFiZWw+
TmFtZTogPGlucHV0IHR5cGU9InRleHQiIG5nLW1vZGVsPSJuYW1lIj48L2xhYmVsPjxicj4KKyAg
ICAgICAgPHByZSBuZy1iaW5kLXRlbXBsYXRlPSJ7e3NhbHV0YXRpb259fSB7e25hbWV9fSEiPjwv
cHJlPgorICAgICAgIDwvZGl2PgorICAgICA8L2ZpbGU+CisgICAgIDxmaWxlIG5hbWU9InByb3Ry
YWN0b3IuanMiIHR5cGU9InByb3RyYWN0b3IiPgorICAgICAgIGl0KCdzaG91bGQgY2hlY2sgbmct
YmluZCcsIGZ1bmN0aW9uKCkgeworICAgICAgICAgdmFyIHNhbHV0YXRpb25FbGVtID0gZWxlbWVu
dChieS5iaW5kaW5nKCdzYWx1dGF0aW9uJykpOworICAgICAgICAgdmFyIHNhbHV0YXRpb25JbnB1
dCA9IGVsZW1lbnQoYnkubW9kZWwoJ3NhbHV0YXRpb24nKSk7CisgICAgICAgICB2YXIgbmFtZUlu
cHV0ID0gZWxlbWVudChieS5tb2RlbCgnbmFtZScpKTsKKworICAgICAgICAgZXhwZWN0KHNhbHV0
YXRpb25FbGVtLmdldFRleHQoKSkudG9CZSgnSGVsbG8gV29ybGQhJyk7CisKKyAgICAgICAgIHNh
bHV0YXRpb25JbnB1dC5jbGVhcigpOworICAgICAgICAgc2FsdXRhdGlvbklucHV0LnNlbmRLZXlz
KCdHcmVldGluZ3MnKTsKKyAgICAgICAgIG5hbWVJbnB1dC5jbGVhcigpOworICAgICAgICAgbmFt
ZUlucHV0LnNlbmRLZXlzKCd1c2VyJyk7CisKKyAgICAgICAgIGV4cGVjdChzYWx1dGF0aW9uRWxl
bS5nZXRUZXh0KCkpLnRvQmUoJ0dyZWV0aW5ncyB1c2VyIScpOworICAgICAgIH0pOworICAgICA8
L2ZpbGU+CisgICA8L2V4YW1wbGU+CisgKi8KK3ZhciBuZ0JpbmRUZW1wbGF0ZURpcmVjdGl2ZSA9
IFsnJGludGVycG9sYXRlJywgJyRjb21waWxlJywgZnVuY3Rpb24oJGludGVycG9sYXRlLCAkY29t
cGlsZSkgeworICByZXR1cm4geworICAgIGNvbXBpbGU6IGZ1bmN0aW9uIG5nQmluZFRlbXBsYXRl
Q29tcGlsZSh0ZW1wbGF0ZUVsZW1lbnQpIHsKKyAgICAgICRjb21waWxlLiQkYWRkQmluZGluZ0Ns
YXNzKHRlbXBsYXRlRWxlbWVudCk7CisgICAgICByZXR1cm4gZnVuY3Rpb24gbmdCaW5kVGVtcGxh
dGVMaW5rKHNjb3BlLCBlbGVtZW50LCBhdHRyKSB7CisgICAgICAgIHZhciBpbnRlcnBvbGF0ZUZu
ID0gJGludGVycG9sYXRlKGVsZW1lbnQuYXR0cihhdHRyLiRhdHRyLm5nQmluZFRlbXBsYXRlKSk7
CisgICAgICAgICRjb21waWxlLiQkYWRkQmluZGluZ0luZm8oZWxlbWVudCwgaW50ZXJwb2xhdGVG
bi5leHByZXNzaW9ucyk7CisgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50WzBdOworICAgICAgICBh
dHRyLiRvYnNlcnZlKCduZ0JpbmRUZW1wbGF0ZScsIGZ1bmN0aW9uKHZhbHVlKSB7CisgICAgICAg
ICAgZWxlbWVudC50ZXh0Q29udGVudCA9IHZhbHVlID09PSB1bmRlZmluZWQgPyAnJyA6IHZhbHVl
OworICAgICAgICB9KTsKKyAgICAgIH07CisgICAgfQorICB9OworfV07CisKKworLyoqCisgKiBA
bmdkb2MgZGlyZWN0aXZlCisgKiBAbmFtZSBuZ0JpbmRIdG1sCisgKgorICogQGRlc2NyaXB0aW9u
CisgKiBFdmFsdWF0ZXMgdGhlIGV4cHJlc3Npb24gYW5kIGluc2VydHMgdGhlIHJlc3VsdGluZyBI
VE1MIGludG8gdGhlIGVsZW1lbnQgaW4gYSBzZWN1cmUgd2F5LiBCeSBkZWZhdWx0LAorICogdGhl
IHJlc3VsdGluZyBIVE1MIGNvbnRlbnQgd2lsbCBiZSBzYW5pdGl6ZWQgdXNpbmcgdGhlIHtAbGlu
ayBuZ1Nhbml0aXplLiRzYW5pdGl6ZSAkc2FuaXRpemV9IHNlcnZpY2UuCisgKiBUbyB1dGlsaXpl
IHRoaXMgZnVuY3Rpb25hbGl0eSwgZW5zdXJlIHRoYXQgYCRzYW5pdGl6ZWAgaXMgYXZhaWxhYmxl
LCBmb3IgZXhhbXBsZSwgYnkgaW5jbHVkaW5nIHtAbGluaworICogbmdTYW5pdGl6ZX0gaW4geW91
ciBtb2R1bGUncyBkZXBlbmRlbmNpZXMgKG5vdCBpbiBjb3JlIEFuZ3VsYXIpLiBJbiBvcmRlciB0
byB1c2Uge0BsaW5rIG5nU2FuaXRpemV9CisgKiBpbiB5b3VyIG1vZHVsZSdzIGRlcGVuZGVuY2ll
cywgeW91IG5lZWQgdG8gaW5jbHVkZSAiYW5ndWxhci1zYW5pdGl6ZS5qcyIgaW4geW91ciBhcHBs
aWNhdGlvbi4KKyAqCisgKiBZb3UgbWF5IGFsc28gYnlwYXNzIHNhbml0aXphdGlvbiBmb3IgdmFs
dWVzIHlvdSBrbm93IGFyZSBzYWZlLiBUbyBkbyBzbywgYmluZCB0bworICogYW4gZXhwbGljaXRs
eSB0cnVzdGVkIHZhbHVlIHZpYSB7QGxpbmsgbmcuJHNjZSN0cnVzdEFzSHRtbCAkc2NlLnRydXN0
QXNIdG1sfS4gIFNlZSB0aGUgZXhhbXBsZQorICogdW5kZXIge0BsaW5rIG5nLiRzY2Ujc2hvdy1t
ZS1hbi1leGFtcGxlLXVzaW5nLXNjZS0gU3RyaWN0IENvbnRleHR1YWwgRXNjYXBpbmcgKFNDRSl9
LgorICoKKyAqIE5vdGU6IElmIGEgYCRzYW5pdGl6ZWAgc2VydmljZSBpcyB1bmF2YWlsYWJsZSBh
bmQgdGhlIGJvdW5kIHZhbHVlIGlzbid0IGV4cGxpY2l0bHkgdHJ1c3RlZCwgeW91CisgKiB3aWxs
IGhhdmUgYW4gZXhjZXB0aW9uIChpbnN0ZWFkIG9mIGFuIGV4cGxvaXQuKQorICoKKyAqIEBlbGVt
ZW50IEFOWQorICogQHBhcmFtIHtleHByZXNzaW9ufSBuZ0JpbmRIdG1sIHtAbGluayBndWlkZS9l
eHByZXNzaW9uIEV4cHJlc3Npb259IHRvIGV2YWx1YXRlLgorICoKKyAqIEBleGFtcGxlCisKKyAg
IDxleGFtcGxlIG1vZHVsZT0iYmluZEh0bWxFeGFtcGxlIiBkZXBzPSJhbmd1bGFyLXNhbml0aXpl
LmpzIj4KKyAgICAgPGZpbGUgbmFtZT0iaW5kZXguaHRtbCI+CisgICAgICAgPGRpdiBuZy1jb250
cm9sbGVyPSJFeGFtcGxlQ29udHJvbGxlciI+CisgICAgICAgIDxwIG5nLWJpbmQtaHRtbD0ibXlI
VE1MIj48L3A+CisgICAgICAgPC9kaXY+CisgICAgIDwvZmlsZT4KKworICAgICA8ZmlsZSBuYW1l
PSJzY3JpcHQuanMiPgorICAgICAgIGFuZ3VsYXIubW9kdWxlKCdiaW5kSHRtbEV4YW1wbGUnLCBb
J25nU2FuaXRpemUnXSkKKyAgICAgICAgIC5jb250cm9sbGVyKCdFeGFtcGxlQ29udHJvbGxlcics
IFsnJHNjb3BlJywgZnVuY3Rpb24oJHNjb3BlKSB7CisgICAgICAgICAgICRzY29wZS5teUhUTUwg
PQorICAgICAgICAgICAgICAnSSBhbSBhbiA8Y29kZT5IVE1MPC9jb2RlPnN0cmluZyB3aXRoICcg
KworICAgICAgICAgICAgICAnPGEgaHJlZj0iIyI+bGlua3MhPC9hPiBhbmQgb3RoZXIgPGVtPnN0
dWZmPC9lbT4nOworICAgICAgICAgfV0pOworICAgICA8L2ZpbGU+CisKKyAgICAgPGZpbGUgbmFt
ZT0icHJvdHJhY3Rvci5qcyIgdHlwZT0icHJvdHJhY3RvciI+CisgICAgICAgaXQoJ3Nob3VsZCBj
aGVjayBuZy1iaW5kLWh0bWwnLCBmdW5jdGlvbigpIHsKKyAgICAgICAgIGV4cGVjdChlbGVtZW50
KGJ5LmJpbmRpbmcoJ215SFRNTCcpKS5nZXRUZXh0KCkpLnRvQmUoCisgICAgICAgICAgICAgJ0kg
YW0gYW4gSFRNTHN0cmluZyB3aXRoIGxpbmtzISBhbmQgb3RoZXIgc3R1ZmYnKTsKKyAgICAgICB9
KTsKKyAgICAgPC9maWxlPgorICAgPC9leGFtcGxlPgorICovCit2YXIgbmdCaW5kSHRtbERpcmVj
dGl2ZSA9IFsnJHNjZScsICckcGFyc2UnLCAnJGNvbXBpbGUnLCBmdW5jdGlvbigkc2NlLCAkcGFy
c2UsICRjb21waWxlKSB7CisgIHJldHVybiB7CisgICAgcmVzdHJpY3Q6ICdBJywKKyAgICBjb21w
aWxlOiBmdW5jdGlvbiBuZ0JpbmRIdG1sQ29tcGlsZSh0RWxlbWVudCwgdEF0dHJzKSB7CisgICAg
ICB2YXIgbmdCaW5kSHRtbEdldHRlciA9ICRwYXJzZSh0QXR0cnMubmdCaW5kSHRtbCk7CisgICAg
ICB2YXIgbmdCaW5kSHRtbFdhdGNoID0gJHBhcnNlKHRBdHRycy5uZ0JpbmRIdG1sLCBmdW5jdGlv
biBnZXRTdHJpbmdWYWx1ZSh2YWx1ZSkgeworICAgICAgICByZXR1cm4gKHZhbHVlIHx8ICcnKS50
b1N0cmluZygpOworICAgICAgfSk7CisgICAgICAkY29tcGlsZS4kJGFkZEJpbmRpbmdDbGFzcyh0
RWxlbWVudCk7CisKKyAgICAgIHJldHVybiBmdW5jdGlvbiBuZ0JpbmRIdG1sTGluayhzY29wZSwg
ZWxlbWVudCwgYXR0cikgeworICAgICAgICAkY29tcGlsZS4kJGFkZEJpbmRpbmdJbmZvKGVsZW1l
bnQsIGF0dHIubmdCaW5kSHRtbCk7CisKKyAgICAgICAgc2NvcGUuJHdhdGNoKG5nQmluZEh0bWxX
YXRjaCwgZnVuY3Rpb24gbmdCaW5kSHRtbFdhdGNoQWN0aW9uKCkgeworICAgICAgICAgIC8vIHdl
IHJlLWV2YWx1YXRlIHRoZSBleHByIGJlY2F1c2Ugd2Ugd2FudCBhIFRydXN0ZWRWYWx1ZUhvbGRl
clR5cGUKKyAgICAgICAgICAvLyBmb3IgJHNjZSwgbm90IGEgc3RyaW5nCisgICAgICAgICAgZWxl
bWVudC5odG1sKCRzY2UuZ2V0VHJ1c3RlZEh0bWwobmdCaW5kSHRtbEdldHRlcihzY29wZSkpIHx8
ICcnKTsKKyAgICAgICAgfSk7CisgICAgICB9OworICAgIH0KKyAgfTsKK31dOworCisvKioKKyAq
IEBuZ2RvYyBkaXJlY3RpdmUKKyAqIEBuYW1lIG5nQ2hhbmdlCisgKgorICogQGRlc2NyaXB0aW9u
CisgKiBFdmFsdWF0ZSB0aGUgZ2l2ZW4gZXhwcmVzc2lvbiB3aGVuIHRoZSB1c2VyIGNoYW5nZXMg
dGhlIGlucHV0LgorICogVGhlIGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkIGltbWVkaWF0ZWx5LCB1
bmxpa2UgdGhlIEphdmFTY3JpcHQgb25jaGFuZ2UgZXZlbnQKKyAqIHdoaWNoIG9ubHkgdHJpZ2dl
cnMgYXQgdGhlIGVuZCBvZiBhIGNoYW5nZSAodXN1YWxseSwgd2hlbiB0aGUgdXNlciBsZWF2ZXMg
dGhlCisgKiBmb3JtIGVsZW1lbnQgb3IgcHJlc3NlcyB0aGUgcmV0dXJuIGtleSkuCisgKgorICog
VGhlIGBuZ0NoYW5nZWAgZXhwcmVzc2lvbiBpcyBvbmx5IGV2YWx1YXRlZCB3aGVuIGEgY2hhbmdl
IGluIHRoZSBpbnB1dCB2YWx1ZSBjYXVzZXMKKyAqIGEgbmV3IHZhbHVlIHRvIGJlIGNvbW1pdHRl
ZCB0byB0aGUgbW9kZWwuCisgKgorICogSXQgd2lsbCBub3QgYmUgZXZhbHVhdGVkOgorICogKiBp
ZiB0aGUgdmFsdWUgcmV0dXJuZWQgZnJvbSB0aGUgYCRwYXJzZXJzYCB0cmFuc2Zvcm1hdGlvbiBw
aXBlbGluZSBoYXMgbm90IGNoYW5nZWQKKyAqICogaWYgdGhlIGlucHV0IGhhcyBjb250aW51ZWQg
dG8gYmUgaW52YWxpZCBzaW5jZSB0aGUgbW9kZWwgd2lsbCBzdGF5IGBudWxsYAorICogKiBpZiB0
aGUgbW9kZWwgaXMgY2hhbmdlZCBwcm9ncmFtbWF0aWNhbGx5IGFuZCBub3QgYnkgYSBjaGFuZ2Ug
dG8gdGhlIGlucHV0IHZhbHVlCisgKgorICoKKyAqIE5vdGUsIHRoaXMgZGlyZWN0aXZlIHJlcXVp
cmVzIGBuZ01vZGVsYCB0byBiZSBwcmVzZW50LgorICoKKyAqIEBlbGVtZW50IGlucHV0CisgKiBA
cGFyYW0ge2V4cHJlc3Npb259IG5nQ2hhbmdlIHtAbGluayBndWlkZS9leHByZXNzaW9uIEV4cHJl
c3Npb259IHRvIGV2YWx1YXRlIHVwb24gY2hhbmdlCisgKiBpbiBpbnB1dCB2YWx1ZS4KKyAqCisg
KiBAZXhhbXBsZQorICogPGV4YW1wbGUgbmFtZT0ibmdDaGFuZ2UtZGlyZWN0aXZlIiBtb2R1bGU9
ImNoYW5nZUV4YW1wbGUiPgorICogICA8ZmlsZSBuYW1lPSJpbmRleC5odG1sIj4KKyAqICAgICA8
c2NyaXB0PgorICogICAgICAgYW5ndWxhci5tb2R1bGUoJ2NoYW5nZUV4YW1wbGUnLCBbXSkKKyAq
ICAgICAgICAgLmNvbnRyb2xsZXIoJ0V4YW1wbGVDb250cm9sbGVyJywgWyckc2NvcGUnLCBmdW5j
dGlvbigkc2NvcGUpIHsKKyAqICAgICAgICAgICAkc2NvcGUuY291bnRlciA9IDA7CisgKiAgICAg
ICAgICAgJHNjb3BlLmNoYW5nZSA9IGZ1bmN0aW9uKCkgeworICogICAgICAgICAgICAgJHNjb3Bl
LmNvdW50ZXIrKzsKKyAqICAgICAgICAgICB9OworICogICAgICAgICB9XSk7CisgKiAgICAgPC9z
Y3JpcHQ+CisgKiAgICAgPGRpdiBuZy1jb250cm9sbGVyPSJFeGFtcGxlQ29udHJvbGxlciI+Cisg
KiAgICAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5nLW1vZGVsPSJjb25maXJtZWQiIG5nLWNo
YW5nZT0iY2hhbmdlKCkiIGlkPSJuZy1jaGFuZ2UtZXhhbXBsZTEiIC8+CisgKiAgICAgICA8aW5w
dXQgdHlwZT0iY2hlY2tib3giIG5nLW1vZGVsPSJjb25maXJtZWQiIGlkPSJuZy1jaGFuZ2UtZXhh
bXBsZTIiIC8+CisgKiAgICAgICA8bGFiZWwgZm9yPSJuZy1jaGFuZ2UtZXhhbXBsZTIiPkNvbmZp
cm1lZDwvbGFiZWw+PGJyIC8+CisgKiAgICAgICA8dHQ+ZGVidWcgPSB7e2NvbmZpcm1lZH19PC90
dD48YnIvPgorICogICAgICAgPHR0PmNvdW50ZXIgPSB7e2NvdW50ZXJ9fTwvdHQ+PGJyLz4KKyAq
ICAgICA8L2Rpdj4KKyAqICAgPC9maWxlPgorICogICA8ZmlsZSBuYW1lPSJwcm90cmFjdG9yLmpz
IiB0eXBlPSJwcm90cmFjdG9yIj4KKyAqICAgICB2YXIgY291bnRlciA9IGVsZW1lbnQoYnkuYmlu
ZGluZygnY291bnRlcicpKTsKKyAqICAgICB2YXIgZGVidWcgPSBlbGVtZW50KGJ5LmJpbmRpbmco
J2NvbmZpcm1lZCcpKTsKKyAqCisgKiAgICAgaXQoJ3Nob3VsZCBldmFsdWF0ZSB0aGUgZXhwcmVz
c2lvbiBpZiBjaGFuZ2luZyBmcm9tIHZpZXcnLCBmdW5jdGlvbigpIHsKKyAqICAgICAgIGV4cGVj
dChjb3VudGVyLmdldFRleHQoKSkudG9Db250YWluKCcwJyk7CisgKgorICogICAgICAgZWxlbWVu
dChieS5pZCgnbmctY2hhbmdlLWV4YW1wbGUxJykpLmNsaWNrKCk7CisgKgorICogICAgICAgZXhw
ZWN0KGNvdW50ZXIuZ2V0VGV4dCgpKS50b0NvbnRhaW4oJzEnKTsKKyAqICAgICAgIGV4cGVjdChk
ZWJ1Zy5nZXRUZXh0KCkpLnRvQ29udGFpbigndHJ1ZScpOworICogICAgIH0pOworICoKKyAqICAg
ICBpdCgnc2hvdWxkIG5vdCBldmFsdWF0ZSB0aGUgZXhwcmVzc2lvbiBpZiBjaGFuZ2luZyBmcm9t
IG1vZGVsJywgZnVuY3Rpb24oKSB7CisgKiAgICAgICBlbGVtZW50KGJ5LmlkKCduZy1jaGFuZ2Ut
ZXhhbXBsZTInKSkuY2xpY2soKTsKKworICogICAgICAgZXhwZWN0KGNvdW50ZXIuZ2V0VGV4dCgp
KS50b0NvbnRhaW4oJzAnKTsKKyAqICAgICAgIGV4cGVjdChkZWJ1Zy5nZXRUZXh0KCkpLnRvQ29u
dGFpbigndHJ1ZScpOworICogICAgIH0pOworICogICA8L2ZpbGU+CisgKiA8L2V4YW1wbGU+Cisg
Ki8KK3ZhciBuZ0NoYW5nZURpcmVjdGl2ZSA9IHZhbHVlRm4oeworICByZXN0cmljdDogJ0EnLAor
ICByZXF1aXJlOiAnbmdNb2RlbCcsCisgIGxpbms6IGZ1bmN0aW9uKHNjb3BlLCBlbGVtZW50LCBh
dHRyLCBjdHJsKSB7CisgICAgY3RybC4kdmlld0NoYW5nZUxpc3RlbmVycy5wdXNoKGZ1bmN0aW9u
KCkgeworICAgICAgc2NvcGUuJGV2YWwoYXR0ci5uZ0NoYW5nZSk7CisgICAgfSk7CisgIH0KK30p
OworCitmdW5jdGlvbiBjbGFzc0RpcmVjdGl2ZShuYW1lLCBzZWxlY3RvcikgeworICBuYW1lID0g
J25nQ2xhc3MnICsgbmFtZTsKKyAgcmV0dXJuIFsnJGFuaW1hdGUnLCBmdW5jdGlvbigkYW5pbWF0
ZSkgeworICAgIHJldHVybiB7CisgICAgICByZXN0cmljdDogJ0FDJywKKyAgICAgIGxpbms6IGZ1
bmN0aW9uKHNjb3BlLCBlbGVtZW50LCBhdHRyKSB7CisgICAgICAgIHZhciBvbGRWYWw7CisKKyAg
ICAgICAgc2NvcGUuJHdhdGNoKGF0dHJbbmFtZV0sIG5nQ2xhc3NXYXRjaEFjdGlvbiwgdHJ1ZSk7
CisKKyAgICAgICAgYXR0ci4kb2JzZXJ2ZSgnY2xhc3MnLCBmdW5jdGlvbih2YWx1ZSkgeworICAg
ICAgICAgIG5nQ2xhc3NXYXRjaEFjdGlvbihzY29wZS4kZXZhbChhdHRyW25hbWVdKSk7CisgICAg
ICAgIH0pOworCisKKyAgICAgICAgaWYgKG5hbWUgIT09ICduZ0NsYXNzJykgeworICAgICAgICAg
IHNjb3BlLiR3YXRjaCgnJGluZGV4JywgZnVuY3Rpb24oJGluZGV4LCBvbGQkaW5kZXgpIHsKKyAg
ICAgICAgICAgIC8vIGpzaGludCBiaXR3aXNlOiBmYWxzZQorICAgICAgICAgICAgdmFyIG1vZCA9
ICRpbmRleCAmIDE7CisgICAgICAgICAgICBpZiAobW9kICE9PSAob2xkJGluZGV4ICYgMSkpIHsK
KyAgICAgICAgICAgICAgdmFyIGNsYXNzZXMgPSBhcnJheUNsYXNzZXMoc2NvcGUuJGV2YWwoYXR0
cltuYW1lXSkpOworICAgICAgICAgICAgICBtb2QgPT09IHNlbGVjdG9yID8KKyAgICAgICAgICAg
ICAgICBhZGRDbGFzc2VzKGNsYXNzZXMpIDoKKyAgICAgICAgICAgICAgICByZW1vdmVDbGFzc2Vz
KGNsYXNzZXMpOworICAgICAgICAgICAgfQorICAgICAgICAgIH0pOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gYWRkQ2xhc3NlcyhjbGFzc2VzKSB7CisgICAgICAgICAgdmFyIG5ld0Ns
YXNzZXMgPSBkaWdlc3RDbGFzc0NvdW50cyhjbGFzc2VzLCAxKTsKKyAgICAgICAgICBhdHRyLiRh
ZGRDbGFzcyhuZXdDbGFzc2VzKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHJlbW92
ZUNsYXNzZXMoY2xhc3NlcykgeworICAgICAgICAgIHZhciBuZXdDbGFzc2VzID0gZGlnZXN0Q2xh
c3NDb3VudHMoY2xhc3NlcywgLTEpOworICAgICAgICAgIGF0dHIuJHJlbW92ZUNsYXNzKG5ld0Ns
YXNzZXMpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gZGlnZXN0Q2xhc3NDb3VudHMo
Y2xhc3NlcywgY291bnQpIHsKKyAgICAgICAgICAvLyBVc2UgY3JlYXRlTWFwKCkgdG8gcHJldmVu
dCBjbGFzcyBhc3N1bXB0aW9ucyBpbnZvbHZpbmcgcHJvcGVydHkKKyAgICAgICAgICAvLyBuYW1l
cyBpbiBPYmplY3QucHJvdG90eXBlCisgICAgICAgICAgdmFyIGNsYXNzQ291bnRzID0gZWxlbWVu
dC5kYXRhKCckY2xhc3NDb3VudHMnKSB8fCBjcmVhdGVNYXAoKTsKKyAgICAgICAgICB2YXIgY2xh
c3Nlc1RvVXBkYXRlID0gW107CisgICAgICAgICAgZm9yRWFjaChjbGFzc2VzLCBmdW5jdGlvbihj
bGFzc05hbWUpIHsKKyAgICAgICAgICAgIGlmIChjb3VudCA+IDAgfHwgY2xhc3NDb3VudHNbY2xh
c3NOYW1lXSkgeworICAgICAgICAgICAgICBjbGFzc0NvdW50c1tjbGFzc05hbWVdID0gKGNsYXNz
Q291bnRzW2NsYXNzTmFtZV0gfHwgMCkgKyBjb3VudDsKKyAgICAgICAgICAgICAgaWYgKGNsYXNz
Q291bnRzW2NsYXNzTmFtZV0gPT09ICsoY291bnQgPiAwKSkgeworICAgICAgICAgICAgICAgIGNs
YXNzZXNUb1VwZGF0ZS5wdXNoKGNsYXNzTmFtZSk7CisgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICB9KTsKKyAgICAgICAgICBlbGVtZW50LmRhdGEoJyRjbGFzc0NvdW50
cycsIGNsYXNzQ291bnRzKTsKKyAgICAgICAgICByZXR1cm4gY2xhc3Nlc1RvVXBkYXRlLmpvaW4o
JyAnKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHVwZGF0ZUNsYXNzZXMob2xkQ2xh
c3NlcywgbmV3Q2xhc3NlcykgeworICAgICAgICAgIHZhciB0b0FkZCA9IGFycmF5RGlmZmVyZW5j
ZShuZXdDbGFzc2VzLCBvbGRDbGFzc2VzKTsKKyAgICAgICAgICB2YXIgdG9SZW1vdmUgPSBhcnJh
eURpZmZlcmVuY2Uob2xkQ2xhc3NlcywgbmV3Q2xhc3Nlcyk7CisgICAgICAgICAgdG9BZGQgPSBk
aWdlc3RDbGFzc0NvdW50cyh0b0FkZCwgMSk7CisgICAgICAgICAgdG9SZW1vdmUgPSBkaWdlc3RD
bGFzc0NvdW50cyh0b1JlbW92ZSwgLTEpOworICAgICAgICAgIGlmICh0b0FkZCAmJiB0b0FkZC5s
ZW5ndGgpIHsKKyAgICAgICAgICAgICRhbmltYXRlLmFkZENsYXNzKGVsZW1lbnQsIHRvQWRkKTsK
KyAgICAgICAgICB9CisgICAgICAgICAgaWYgKHRvUmVtb3ZlICYmIHRvUmVtb3ZlLmxlbmd0aCkg
eworICAgICAgICAgICAgJGFuaW1hdGUucmVtb3ZlQ2xhc3MoZWxlbWVudCwgdG9SZW1vdmUpOwor
ICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG5nQ2xhc3NXYXRjaEFj
dGlvbihuZXdWYWwpIHsKKyAgICAgICAgICBpZiAoc2VsZWN0b3IgPT09IHRydWUgfHwgc2NvcGUu
JGluZGV4ICUgMiA9PT0gc2VsZWN0b3IpIHsKKyAgICAgICAgICAgIHZhciBuZXdDbGFzc2VzID0g
YXJyYXlDbGFzc2VzKG5ld1ZhbCB8fCBbXSk7CisgICAgICAgICAgICBpZiAoIW9sZFZhbCkgewor
ICAgICAgICAgICAgICBhZGRDbGFzc2VzKG5ld0NsYXNzZXMpOworICAgICAgICAgICAgfSBlbHNl
IGlmICghZXF1YWxzKG5ld1ZhbCxvbGRWYWwpKSB7CisgICAgICAgICAgICAgIHZhciBvbGRDbGFz
c2VzID0gYXJyYXlDbGFzc2VzKG9sZFZhbCk7CisgICAgICAgICAgICAgIHVwZGF0ZUNsYXNzZXMo
b2xkQ2xhc3NlcywgbmV3Q2xhc3Nlcyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAg
ICAgICAgIG9sZFZhbCA9IHNoYWxsb3dDb3B5KG5ld1ZhbCk7CisgICAgICAgIH0KKyAgICAgIH0K
KyAgICB9OworCisgICAgZnVuY3Rpb24gYXJyYXlEaWZmZXJlbmNlKHRva2VuczEsIHRva2VuczIp
IHsKKyAgICAgIHZhciB2YWx1ZXMgPSBbXTsKKworICAgICAgb3V0ZXI6CisgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IHRva2VuczEubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgdmFyIHRva2VuID0g
dG9rZW5zMVtpXTsKKyAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCB0b2tlbnMyLmxlbmd0aDsg
aisrKSB7CisgICAgICAgICAgaWYgKHRva2VuID09IHRva2VuczJbal0pIGNvbnRpbnVlIG91dGVy
OworICAgICAgICB9CisgICAgICAgIHZhbHVlcy5wdXNoKHRva2VuKTsKKyAgICAgIH0KKyAgICAg
IHJldHVybiB2YWx1ZXM7CisgICAgfQorCisgICAgZnVuY3Rpb24gYXJyYXlDbGFzc2VzKGNsYXNz
VmFsKSB7CisgICAgICB2YXIgY2xhc3NlcyA9IFtdOworICAgICAgaWYgKGlzQXJyYXkoY2xhc3NW
YWwpKSB7CisgICAgICAgIGZvckVhY2goY2xhc3NWYWwsIGZ1bmN0aW9uKHYpIHsKKyAgICAgICAg
ICBjbGFzc2VzID0gY2xhc3Nlcy5jb25jYXQoYXJyYXlDbGFzc2VzKHYpKTsKKyAgICAgICAgfSk7
CisgICAgICAgIHJldHVybiBjbGFzc2VzOworICAgICAgfSBlbHNlIGlmIChpc1N0cmluZyhjbGFz
c1ZhbCkpIHsKKyAgICAgICAgcmV0dXJuIGNsYXNzVmFsLnNwbGl0KCcgJyk7CisgICAgICB9IGVs
c2UgaWYgKGlzT2JqZWN0KGNsYXNzVmFsKSkgeworICAgICAgICBmb3JFYWNoKGNsYXNzVmFsLCBm
dW5jdGlvbih2LCBrKSB7CisgICAgICAgICAgaWYgKHYpIHsKKyAgICAgICAgICAgIGNsYXNzZXMg
PSBjbGFzc2VzLmNvbmNhdChrLnNwbGl0KCcgJykpOworICAgICAgICAgIH0KKyAgICAgICAgfSk7
CisgICAgICAgIHJldHVybiBjbGFzc2VzOworICAgICAgfQorICAgICAgcmV0dXJuIGNsYXNzVmFs
OworICAgIH0KKyAgfV07Cit9CisKKy8qKgorICogQG5nZG9jIGRpcmVjdGl2ZQorICogQG5hbWUg
bmdDbGFzcworICogQHJlc3RyaWN0IEFDCisgKgorICogQGRlc2NyaXB0aW9uCisgKiBUaGUgYG5n
Q2xhc3NgIGRpcmVjdGl2ZSBhbGxvd3MgeW91IHRvIGR5bmFtaWNhbGx5IHNldCBDU1MgY2xhc3Nl
cyBvbiBhbiBIVE1MIGVsZW1lbnQgYnkgZGF0YWJpbmRpbmcKKyAqIGFuIGV4cHJlc3Npb24gdGhh
dCByZXByZXNlbnRzIGFsbCBjbGFzc2VzIHRvIGJlIGFkZGVkLgorICoKKyAqIFRoZSBkaXJlY3Rp
dmUgb3BlcmF0ZXMgaW4gdGhyZWUgZGlmZmVyZW50IHdheXMsIGRlcGVuZGluZyBvbiB3aGljaCBv
ZiB0aHJlZSB0eXBlcyB0aGUgZXhwcmVzc2lvbgorICogZXZhbHVhdGVzIHRvOgorICoKKyAqIDEu
IElmIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byBhIHN0cmluZywgdGhlIHN0cmluZyBzaG91
bGQgYmUgb25lIG9yIG1vcmUgc3BhY2UtZGVsaW1pdGVkIGNsYXNzCisgKiBuYW1lcy4KKyAqCisg
KiAyLiBJZiB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gYW4gb2JqZWN0LCB0aGVuIGZvciBl
YWNoIGtleS12YWx1ZSBwYWlyIG9mIHRoZQorICogb2JqZWN0IHdpdGggYSB0cnV0aHkgdmFsdWUg
dGhlIGNvcnJlc3BvbmRpbmcga2V5IGlzIHVzZWQgYXMgYSBjbGFzcyBuYW1lLgorICoKKyAqIDMu
IElmIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byBhbiBhcnJheSwgZWFjaCBlbGVtZW50IG9m
IHRoZSBhcnJheSBzaG91bGQgZWl0aGVyIGJlIGEgc3RyaW5nIGFzIGluCisgKiB0eXBlIDEgb3Ig
YW4gb2JqZWN0IGFzIGluIHR5cGUgMi4gVGhpcyBtZWFucyB0aGF0IHlvdSBjYW4gbWl4IHN0cmlu
Z3MgYW5kIG9iamVjdHMgdG9nZXRoZXIgaW4gYW4gYXJyYXkKKyAqIHRvIGdpdmUgeW91IG1vcmUg
Y29udHJvbCBvdmVyIHdoYXQgQ1NTIGNsYXNzZXMgYXBwZWFyLiBTZWUgdGhlIGNvZGUgYmVsb3cg
Zm9yIGFuIGV4YW1wbGUgb2YgdGhpcy4KKyAqCisgKgorICogVGhlIGRpcmVjdGl2ZSB3b24ndCBh
ZGQgZHVwbGljYXRlIGNsYXNzZXMgaWYgYSBwYXJ0aWN1bGFyIGNsYXNzIHdhcyBhbHJlYWR5IHNl
dC4KKyAqCisgKiBXaGVuIHRoZSBleHByZXNzaW9uIGNoYW5nZXMsIHRoZSBwcmV2aW91c2x5IGFk
ZGVkIGNsYXNzZXMgYXJlIHJlbW92ZWQgYW5kIG9ubHkgdGhlbiBhcmUgdGhlCisgKiBuZXcgY2xh
c3NlcyBhZGRlZC4KKyAqCisgKiBAYW5pbWF0aW9ucworICogKiphZGQqKiAtIGhhcHBlbnMganVz
dCBiZWZvcmUgdGhlIGNsYXNzIGlzIGFwcGxpZWQgdG8gdGhlIGVsZW1lbnRzCisgKgorICogKipy
ZW1vdmUqKiAtIGhhcHBlbnMganVzdCBiZWZvcmUgdGhlIGNsYXNzIGlzIHJlbW92ZWQgZnJvbSB0
aGUgZWxlbWVudAorICoKKyAqIEBlbGVtZW50IEFOWQorICogQHBhcmFtIHtleHByZXNzaW9ufSBu
Z0NsYXNzIHtAbGluayBndWlkZS9leHByZXNzaW9uIEV4cHJlc3Npb259IHRvIGV2YWwuIFRoZSBy
ZXN1bHQKKyAqICAgb2YgdGhlIGV2YWx1YXRpb24gY2FuIGJlIGEgc3RyaW5nIHJlcHJlc2VudGlu
ZyBzcGFjZSBkZWxpbWl0ZWQgY2xhc3MKKyAqICAgbmFtZXMsIGFuIGFycmF5LCBvciBhIG1hcCBv
ZiBjbGFzcyBuYW1lcyB0byBib29sZWFuIHZhbHVlcy4gSW4gdGhlIGNhc2Ugb2YgYSBtYXAsIHRo
ZQorICogICBuYW1lcyBvZiB0aGUgcHJvcGVydGllcyB3aG9zZSB2YWx1ZXMgYXJlIHRydXRoeSB3
aWxsIGJlIGFkZGVkIGFzIGNzcyBjbGFzc2VzIHRvIHRoZQorICogICBlbGVtZW50LgorICoKKyAq
IEBleGFtcGxlIEV4YW1wbGUgdGhhdCBkZW1vbnN0cmF0ZXMgYmFzaWMgYmluZGluZ3MgdmlhIG5n
Q2xhc3MgZGlyZWN0aXZlLgorICAgPGV4YW1wbGU+CisgICAgIDxmaWxlIG5hbWU9ImluZGV4Lmh0
bWwiPgorICAgICAgIDxwIG5nLWNsYXNzPSJ7c3RyaWtlOiBkZWxldGVkLCBib2xkOiBpbXBvcnRh
bnQsICdoYXMtZXJyb3InOiBlcnJvcn0iPk1hcCBTeW50YXggRXhhbXBsZTwvcD4KKyAgICAgICA8
bGFiZWw+CisgICAgICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBuZy1tb2RlbD0iZGVsZXRl
ZCI+CisgICAgICAgICAgZGVsZXRlZCAoYXBwbHkgInN0cmlrZSIgY2xhc3MpCisgICAgICAgPC9s
YWJlbD48YnI+CisgICAgICAgPGxhYmVsPgorICAgICAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2Jv
eCIgbmctbW9kZWw9ImltcG9ydGFudCI+CisgICAgICAgICAgaW1wb3J0YW50IChhcHBseSAiYm9s
ZCIgY2xhc3MpCisgICAgICAgPC9sYWJlbD48YnI+CisgICAgICAgPGxhYmVsPgorICAgICAgICAg
IDxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmctbW9kZWw9ImVycm9yIj4KKyAgICAgICAgICBlcnJv
ciAoYXBwbHkgImhhcy1lcnJvciIgY2xhc3MpCisgICAgICAgPC9sYWJlbD4KKyAgICAgICA8aHI+
CisgICAgICAgPHAgbmctY2xhc3M9InN0eWxlIj5Vc2luZyBTdHJpbmcgU3ludGF4PC9wPgorICAg
ICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuZy1tb2RlbD0ic3R5bGUiCisgICAgICAgICAgICAgIHBs
YWNlaG9sZGVyPSJUeXBlOiBib2xkIHN0cmlrZSByZWQiIGFyaWEtbGFiZWw9IlR5cGU6IGJvbGQg
c3RyaWtlIHJlZCI+CisgICAgICAgPGhyPgorICAgICAgIDxwIG5nLWNsYXNzPSJbc3R5bGUxLCBz
dHlsZTIsIHN0eWxlM10iPlVzaW5nIEFycmF5IFN5bnRheDwvcD4KKyAgICAgICA8aW5wdXQgbmct
bW9kZWw9InN0eWxlMSIKKyAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9IlR5cGU6IGJvbGQsIHN0
cmlrZSBvciByZWQiIGFyaWEtbGFiZWw9IlR5cGU6IGJvbGQsIHN0cmlrZSBvciByZWQiPjxicj4K
KyAgICAgICA8aW5wdXQgbmctbW9kZWw9InN0eWxlMiIKKyAgICAgICAgICAgICAgcGxhY2Vob2xk
ZXI9IlR5cGU6IGJvbGQsIHN0cmlrZSBvciByZWQiIGFyaWEtbGFiZWw9IlR5cGU6IGJvbGQsIHN0
cmlrZSBvciByZWQgMiI+PGJyPgorICAgICAgIDxpbnB1dCBuZy1tb2RlbD0ic3R5bGUzIgorICAg
ICAgICAgICAgICBwbGFjZWhvbGRlcj0iVHlwZTogYm9sZCwgc3RyaWtlIG9yIHJlZCIgYXJpYS1s
YWJlbD0iVHlwZTogYm9sZCwgc3RyaWtlIG9yIHJlZCAzIj48YnI+CisgICAgICAgPGhyPgorICAg
ICAgIDxwIG5nLWNsYXNzPSJbc3R5bGU0LCB7b3JhbmdlOiB3YXJuaW5nfV0iPlVzaW5nIEFycmF5
IGFuZCBNYXAgU3ludGF4PC9wPgorICAgICAgIDxpbnB1dCBuZy1tb2RlbD0ic3R5bGU0IiBwbGFj
ZWhvbGRlcj0iVHlwZTogYm9sZCwgc3RyaWtlIiBhcmlhLWxhYmVsPSJUeXBlOiBib2xkLCBzdHJp
a2UiPjxicj4KKyAgICAgICA8bGFiZWw+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuZy1tb2RlbD0i
d2FybmluZyI+IHdhcm5pbmcgKGFwcGx5ICJvcmFuZ2UiIGNsYXNzKTwvbGFiZWw+CisgICAgIDwv
ZmlsZT4KKyAgICAgPGZpbGUgbmFtZT0ic3R5bGUuY3NzIj4KKyAgICAgICAuc3RyaWtlIHsKKyAg
ICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2g7CisgICAgICAgfQorICAgICAg
IC5ib2xkIHsKKyAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CisgICAgICAgfQorICAgICAg
IC5yZWQgeworICAgICAgICAgICBjb2xvcjogcmVkOworICAgICAgIH0KKyAgICAgICAuaGFzLWVy
cm9yIHsKKyAgICAgICAgICAgY29sb3I6IHJlZDsKKyAgICAgICAgICAgYmFja2dyb3VuZC1jb2xv
cjogeWVsbG93OworICAgICAgIH0KKyAgICAgICAub3JhbmdlIHsKKyAgICAgICAgICAgY29sb3I6
IG9yYW5nZTsKKyAgICAgICB9CisgICAgIDwvZmlsZT4KKyAgICAgPGZpbGUgbmFtZT0icHJvdHJh
Y3Rvci5qcyIgdHlwZT0icHJvdHJhY3RvciI+CisgICAgICAgdmFyIHBzID0gZWxlbWVudC5hbGwo
YnkuY3NzKCdwJykpOworCisgICAgICAgaXQoJ3Nob3VsZCBsZXQgeW91IHRvZ2dsZSB0aGUgY2xh
c3MnLCBmdW5jdGlvbigpIHsKKworICAgICAgICAgZXhwZWN0KHBzLmZpcnN0KCkuZ2V0QXR0cmli
dXRlKCdjbGFzcycpKS5ub3QudG9NYXRjaCgvYm9sZC8pOworICAgICAgICAgZXhwZWN0KHBzLmZp
cnN0KCkuZ2V0QXR0cmlidXRlKCdjbGFzcycpKS5ub3QudG9NYXRjaCgvaGFzLWVycm9yLyk7CisK
KyAgICAgICAgIGVsZW1lbnQoYnkubW9kZWwoJ2ltcG9ydGFudCcpKS5jbGljaygpOworICAgICAg
ICAgZXhwZWN0KHBzLmZpcnN0KCkuZ2V0QXR0cmlidXRlKCdjbGFzcycpKS50b01hdGNoKC9ib2xk
Lyk7CisKKyAgICAgICAgIGVsZW1lbnQoYnkubW9kZWwoJ2Vycm9yJykpLmNsaWNrKCk7CisgICAg
ICAgICBleHBlY3QocHMuZmlyc3QoKS5nZXRBdHRyaWJ1dGUoJ2NsYXNzJykpLnRvTWF0Y2goL2hh
cy1lcnJvci8pOworICAgICAgIH0pOworCisgICAgICAgaXQoJ3Nob3VsZCBsZXQgeW91IHRvZ2ds
ZSBzdHJpbmcgZXhhbXBsZScsIGZ1bmN0aW9uKCkgeworICAgICAgICAgZXhwZWN0KHBzLmdldCgx
KS5nZXRBdHRyaWJ1dGUoJ2NsYXNzJykpLnRvQmUoJycpOworICAgICAgICAgZWxlbWVudChieS5t
b2RlbCgnc3R5bGUnKSkuY2xlYXIoKTsKKyAgICAgICAgIGVsZW1lbnQoYnkubW9kZWwoJ3N0eWxl
JykpLnNlbmRLZXlzKCdyZWQnKTsKKyAgICAgICAgIGV4cGVjdChwcy5nZXQoMSkuZ2V0QXR0cmli
dXRlKCdjbGFzcycpKS50b0JlKCdyZWQnKTsKKyAgICAgICB9KTsKKworICAgICAgIGl0KCdhcnJh
eSBleGFtcGxlIHNob3VsZCBoYXZlIDMgY2xhc3NlcycsIGZ1bmN0aW9uKCkgeworICAgICAgICAg
ZXhwZWN0KHBzLmdldCgyKS5nZXRBdHRyaWJ1dGUoJ2NsYXNzJykpLnRvQmUoJycpOworICAgICAg
ICAgZWxlbWVudChieS5tb2RlbCgnc3R5bGUxJykpLnNlbmRLZXlzKCdib2xkJyk7CisgICAgICAg
ICBlbGVtZW50KGJ5Lm1vZGVsKCdzdHlsZTInKSkuc2VuZEtleXMoJ3N0cmlrZScpOworICAgICAg
ICAgZWxlbWVudChieS5tb2RlbCgnc3R5bGUzJykpLnNlbmRLZXlzKCdyZWQnKTsKKyAgICAgICAg
IGV4cGVjdChwcy5nZXQoMikuZ2V0QXR0cmlidXRlKCdjbGFzcycpKS50b0JlKCdib2xkIHN0cmlr
ZSByZWQnKTsKKyAgICAgICB9KTsKKworICAgICAgIGl0KCdhcnJheSB3aXRoIG1hcCBleGFtcGxl
IHNob3VsZCBoYXZlIDIgY2xhc3NlcycsIGZ1bmN0aW9uKCkgeworICAgICAgICAgZXhwZWN0KHBz
Lmxhc3QoKS5nZXRBdHRyaWJ1dGUoJ2NsYXNzJykpLnRvQmUoJycpOworICAgICAgICAgZWxlbWVu
dChieS5tb2RlbCgnc3R5bGU0JykpLnNlbmRLZXlzKCdib2xkJyk7CisgICAgICAgICBlbGVtZW50
KGJ5Lm1vZGVsKCd3YXJuaW5nJykpLmNsaWNrKCk7CisgICAgICAgICBleHBlY3QocHMubGFzdCgp
LmdldEF0dHJpYnV0ZSgnY2xhc3MnKSkudG9CZSgnYm9sZCBvcmFuZ2UnKTsKKyAgICAgICB9KTsK
KyAgICAgPC9maWxlPgorICAgPC9leGFtcGxlPgorCisgICAjIyBBbmltYXRpb25zCisKKyAgIFRo
ZSBleGFtcGxlIGJlbG93IGRlbW9uc3RyYXRlcyBob3cgdG8gcGVyZm9ybSBhbmltYXRpb25zIHVz
aW5nIG5nQ2xhc3MuCisKKyAgIDxleGFtcGxlIG1vZHVsZT0ibmdBbmltYXRlIiBkZXBzPSJhbmd1
bGFyLWFuaW1hdGUuanMiIGFuaW1hdGlvbnM9InRydWUiPgorICAgICA8ZmlsZSBuYW1lPSJpbmRl
eC5odG1sIj4KKyAgICAgIDxpbnB1dCBpZD0ic2V0YnRuIiB0eXBlPSJidXR0b24iIHZhbHVlPSJz
ZXQiIG5nLWNsaWNrPSJteVZhcj0nbXktY2xhc3MnIj4KKyAgICAgIDxpbnB1dCBpZD0iY2xlYXJi
dG4iIHR5cGU9ImJ1dHRvbiIgdmFsdWU9ImNsZWFyIiBuZy1jbGljaz0ibXlWYXI9JyciPgorICAg
ICAgPGJyPgorICAgICAgPHNwYW4gY2xhc3M9ImJhc2UtY2xhc3MiIG5nLWNsYXNzPSJteVZhciI+
U2FtcGxlIFRleHQ8L3NwYW4+CisgICAgIDwvZmlsZT4KKyAgICAgPGZpbGUgbmFtZT0ic3R5bGUu
Y3NzIj4KKyAgICAgICAuYmFzZS1jbGFzcyB7CisgICAgICAgICAtd2Via2l0LXRyYW5zaXRpb246
YWxsIGN1YmljLWJlemllcigwLjI1MCwgMC40NjAsIDAuNDUwLCAwLjk0MCkgMC41czsKKyAgICAg
ICAgIHRyYW5zaXRpb246YWxsIGN1YmljLWJlemllcigwLjI1MCwgMC40NjAsIDAuNDUwLCAwLjk0
MCkgMC41czsKKyAgICAgICB9CisKKyAgICAgICAuYmFzZS1jbGFzcy5teS1jbGFzcyB7CisgICAg
ICAgICBjb2xvcjogcmVkOworICAgICAgICAgZm9udC1zaXplOjNlbTsKKyAgICAgICB9CisgICAg
IDwvZmlsZT4KKyAgICAgPGZpbGUgbmFtZT0icHJvdHJhY3Rvci5qcyIgdHlwZT0icHJvdHJhY3Rv
ciI+CisgICAgICAgaXQoJ3Nob3VsZCBjaGVjayBuZy1jbGFzcycsIGZ1bmN0aW9uKCkgeworICAg
ICAgICAgZXhwZWN0KGVsZW1lbnQoYnkuY3NzKCcuYmFzZS1jbGFzcycpKS5nZXRBdHRyaWJ1dGUo
J2NsYXNzJykpLm5vdC4KKyAgICAgICAgICAgdG9NYXRjaCgvbXktY2xhc3MvKTsKKworICAgICAg
ICAgZWxlbWVudChieS5pZCgnc2V0YnRuJykpLmNsaWNrKCk7CisKKyAgICAgICAgIGV4cGVjdChl
bGVtZW50KGJ5LmNzcygnLmJhc2UtY2xhc3MnKSkuZ2V0QXR0cmlidXRlKCdjbGFzcycpKS4KKyAg
ICAgICAgICAgdG9NYXRjaCgvbXktY2xhc3MvKTsKKworICAgICAgICAgZWxlbWVudChieS5pZCgn
Y2xlYXJidG4nKSkuY2xpY2soKTsKKworICAgICAgICAgZXhwZWN0KGVsZW1lbnQoYnkuY3NzKCcu
YmFzZS1jbGFzcycpKS5nZXRBdHRyaWJ1dGUoJ2NsYXNzJykpLm5vdC4KKyAgICAgICAgICAgdG9N
YXRjaCgvbXktY2xhc3MvKTsKKyAgICAgICB9KTsKKyAgICAgPC9maWxlPgorICAgPC9leGFtcGxl
PgorCisKKyAgICMjIG5nQ2xhc3MgYW5kIHByZS1leGlzdGluZyBDU1MzIFRyYW5zaXRpb25zL0Fu
aW1hdGlvbnMKKyAgIFRoZSBuZ0NsYXNzIGRpcmVjdGl2ZSBzdGlsbCBzdXBwb3J0cyBDU1MzIFRy
YW5zaXRpb25zL0FuaW1hdGlvbnMgZXZlbiBpZiB0aGV5IGRvIG5vdCBmb2xsb3cgdGhlIG5nQW5p
bWF0ZSBDU1MgbmFtaW5nIHN0cnVjdHVyZS4KKyAgIFVwb24gYW5pbWF0aW9uIG5nQW5pbWF0ZSB3
aWxsIGFwcGx5IHN1cHBsZW1lbnRhcnkgQ1NTIGNsYXNzZXMgdG8gdHJhY2sgdGhlIHN0YXJ0IGFu
ZCBlbmQgb2YgYW4gYW5pbWF0aW9uLCBidXQgdGhpcyB3aWxsIG5vdCBoaW5kZXIKKyAgIGFueSBw
cmUtZXhpc3RpbmcgQ1NTIHRyYW5zaXRpb25zIGFscmVhZHkgb24gdGhlIGVsZW1lbnQuIFRvIGdl
dCBhbiBpZGVhIG9mIHdoYXQgaGFwcGVucyBkdXJpbmcgYSBjbGFzcy1iYXNlZCBhbmltYXRpb24s
IGJlIHN1cmUKKyAgIHRvIHZpZXcgdGhlIHN0ZXAgYnkgc3RlcCBkZXRhaWxzIG9mIHtAbGluayAk
YW5pbWF0ZSNhZGRDbGFzcyAkYW5pbWF0ZS5hZGRDbGFzc30gYW5kCisgICB7QGxpbmsgJGFuaW1h
dGUjcmVtb3ZlQ2xhc3MgJGFuaW1hdGUucmVtb3ZlQ2xhc3N9LgorICovCit2YXIgbmdDbGFzc0Rp
cmVjdGl2ZSA9IGNsYXNzRGlyZWN0aXZlKCcnLCB0cnVlKTsKKworLyoqCisgKiBAbmdkb2MgZGly
ZWN0aXZlCisgKiBAbmFtZSBuZ0NsYXNzT2RkCisgKiBAcmVzdHJpY3QgQUMKKyAqCisgKiBAZGVz
Y3JpcHRpb24KKyAqIFRoZSBgbmdDbGFzc09kZGAgYW5kIGBuZ0NsYXNzRXZlbmAgZGlyZWN0aXZl
cyB3b3JrIGV4YWN0bHkgYXMKKyAqIHtAbGluayBuZy5kaXJlY3RpdmU6bmdDbGFzcyBuZ0NsYXNz
fSwgZXhjZXB0IHRoZXkgd29yayBpbgorICogY29uanVuY3Rpb24gd2l0aCBgbmdSZXBlYXRgIGFu
ZCB0YWtlIGVmZmVjdCBvbmx5IG9uIG9kZCAoZXZlbikgcm93cy4KKyAqCisgKiBUaGlzIGRpcmVj
dGl2ZSBjYW4gYmUgYXBwbGllZCBvbmx5IHdpdGhpbiB0aGUgc2NvcGUgb2YgYW4KKyAqIHtAbGlu
ayBuZy5kaXJlY3RpdmU6bmdSZXBlYXQgbmdSZXBlYXR9LgorICoKKyAqIEBlbGVtZW50IEFOWQor
ICogQHBhcmFtIHtleHByZXNzaW9ufSBuZ0NsYXNzT2RkIHtAbGluayBndWlkZS9leHByZXNzaW9u
IEV4cHJlc3Npb259IHRvIGV2YWwuIFRoZSByZXN1bHQKKyAqICAgb2YgdGhlIGV2YWx1YXRpb24g
Y2FuIGJlIGEgc3RyaW5nIHJlcHJlc2VudGluZyBzcGFjZSBkZWxpbWl0ZWQgY2xhc3MgbmFtZXMg
b3IgYW4gYXJyYXkuCisgKgorICogQGV4YW1wbGUKKyAgIDxleGFtcGxlPgorICAgICA8ZmlsZSBu
YW1lPSJpbmRleC5odG1sIj4KKyAgICAgICAgPG9sIG5nLWluaXQ9Im5hbWVzPVsnSm9obicsICdN
YXJ5JywgJ0NhdGUnLCAnU3V6J10iPgorICAgICAgICAgIDxsaSBuZy1yZXBlYXQ9Im5hbWUgaW4g
bmFtZXMiPgorICAgICAgICAgICA8c3BhbiBuZy1jbGFzcy1vZGQ9IidvZGQnIiBuZy1jbGFzcy1l
dmVuPSInZXZlbiciPgorICAgICAgICAgICAgIHt7bmFtZX19CisgICAgICAgICAgIDwvc3Bhbj4K
KyAgICAgICAgICA8L2xpPgorICAgICAgICA8L29sPgorICAgICA8L2ZpbGU+CisgICAgIDxmaWxl
IG5hbWU9InN0eWxlLmNzcyI+CisgICAgICAgLm9kZCB7CisgICAgICAgICBjb2xvcjogcmVkOwor
ICAgICAgIH0KKyAgICAgICAuZXZlbiB7CisgICAgICAgICBjb2xvcjogYmx1ZTsKKyAgICAgICB9
CisgICAgIDwvZmlsZT4KKyAgICAgPGZpbGUgbmFtZT0icHJvdHJhY3Rvci5qcyIgdHlwZT0icHJv
dHJhY3RvciI+CisgICAgICAgaXQoJ3Nob3VsZCBjaGVjayBuZy1jbGFzcy1vZGQgYW5kIG5nLWNs
YXNzLWV2ZW4nLCBmdW5jdGlvbigpIHsKKyAgICAgICAgIGV4cGVjdChlbGVtZW50KGJ5LnJlcGVh
dGVyKCduYW1lIGluIG5hbWVzJykucm93KDApLmNvbHVtbignbmFtZScpKS5nZXRBdHRyaWJ1dGUo
J2NsYXNzJykpLgorICAgICAgICAgICB0b01hdGNoKC9vZGQvKTsKKyAgICAgICAgIGV4cGVjdChl
bGVtZW50KGJ5LnJlcGVhdGVyKCduYW1lIGluIG5hbWVzJykucm93KDEpLmNvbHVtbignbmFtZScp
KS5nZXRBdHRyaWJ1dGUoJ2NsYXNzJykpLgorICAgICAgICAgICB0b01hdGNoKC9ldmVuLyk7Cisg
ICAgICAgfSk7CisgICAgIDwvZmlsZT4KKyAgIDwvZXhhbXBsZT4KKyAqLwordmFyIG5nQ2xhc3NP
ZGREaXJlY3RpdmUgPSBjbGFzc0RpcmVjdGl2ZSgnT2RkJywgMCk7CisKKy8qKgorICogQG5nZG9j
IGRpcmVjdGl2ZQorICogQG5hbWUgbmdDbGFzc0V2ZW4KKyAqIEByZXN0cmljdCBBQworICoKKyAq
IEBkZXNjcmlwdGlvbgorICogVGhlIGBuZ0NsYXNzT2RkYCBhbmQgYG5nQ2xhc3NFdmVuYCBkaXJl
Y3RpdmVzIHdvcmsgZXhhY3RseSBhcworICoge0BsaW5rIG5nLmRpcmVjdGl2ZTpuZ0NsYXNzIG5n
Q2xhc3N9LCBleGNlcHQgdGhleSB3b3JrIGluCisgKiBjb25qdW5jdGlvbiB3aXRoIGBuZ1JlcGVh
dGAgYW5kIHRha2UgZWZmZWN0IG9ubHkgb24gb2RkIChldmVuKSByb3dzLgorICoKKyAqIFRoaXMg
ZGlyZWN0aXZlIGNhbiBiZSBhcHBsaWVkIG9ubHkgd2l0aGluIHRoZSBzY29wZSBvZiBhbgorICog
e0BsaW5rIG5nLmRpcmVjdGl2ZTpuZ1JlcGVhdCBuZ1JlcGVhdH0uCisgKgorICogQGVsZW1lbnQg
QU5ZCisgKiBAcGFyYW0ge2V4cHJlc3Npb259IG5nQ2xhc3NFdmVuIHtAbGluayBndWlkZS9leHBy
ZXNzaW9uIEV4cHJlc3Npb259IHRvIGV2YWwuIFRoZQorICogICByZXN1bHQgb2YgdGhlIGV2YWx1
YXRpb24gY2FuIGJlIGEgc3RyaW5nIHJlcHJlc2VudGluZyBzcGFjZSBkZWxpbWl0ZWQgY2xhc3Mg
bmFtZXMgb3IgYW4gYXJyYXkuCisgKgorICogQGV4YW1wbGUKKyAgIDxleGFtcGxlPgorICAgICA8
ZmlsZSBuYW1lPSJpbmRleC5odG1sIj4KKyAgICAgICAgPG9sIG5nLWluaXQ9Im5hbWVzPVsnSm9o
bicsICdNYXJ5JywgJ0NhdGUnLCAnU3V6J10iPgorICAgICAgICAgIDxsaSBuZy1yZXBlYXQ9Im5h
bWUgaW4gbmFtZXMiPgorICAgICAgICAgICA8c3BhbiBuZy1jbGFzcy1vZGQ9IidvZGQnIiBuZy1j
bGFzcy1ldmVuPSInZXZlbiciPgorICAgICAgICAgICAgIHt7bmFtZX19ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7CisgICAgICAgICAgIDwvc3Bhbj4KKyAgICAgICAgICA8L2xpPgorICAgICAgICA8L29s
PgorICAgICA8L2ZpbGU+CisgICAgIDxmaWxlIG5hbWU9InN0eWxlLmNzcyI+CisgICAgICAgLm9k
ZCB7CisgICAgICAgICBjb2xvcjogcmVkOworICAgICAgIH0KKyAgICAgICAuZXZlbiB7CisgICAg
ICAgICBjb2xvcjogYmx1ZTsKKyAgICAgICB9CisgICAgIDwvZmlsZT4KKyAgICAgPGZpbGUgbmFt
ZT0icHJvdHJhY3Rvci5qcyIgdHlwZT0icHJvdHJhY3RvciI+CisgICAgICAgaXQoJ3Nob3VsZCBj
aGVjayBuZy1jbGFzcy1vZGQgYW5kIG5nLWNsYXNzLWV2ZW4nLCBmdW5jdGlvbigpIHsKKyAgICAg
ICAgIGV4cGVjdChlbGVtZW50KGJ5LnJlcGVhdGVyKCduYW1lIGluIG5hbWVzJykucm93KDApLmNv
bHVtbignbmFtZScpKS5nZXRBdHRyaWJ1dGUoJ2NsYXNzJykpLgorICAgICAgICAgICB0b01hdGNo
KC9vZGQvKTsKKyAgICAgICAgIGV4cGVjdChlbGVtZW50KGJ5LnJlcGVhdGVyKCduYW1lIGluIG5h
bWVzJykucm93KDEpLmNvbHVtbignbmFtZScpKS5nZXRBdHRyaWJ1dGUoJ2NsYXNzJykpLgorICAg
ICAgICAgICB0b01hdGNoKC9ldmVuLyk7CisgICAgICAgfSk7CisgICAgIDwvZmlsZT4KKyAgIDwv
ZXhhbXBsZT4KKyAqLwordmFyIG5nQ2xhc3NFdmVuRGlyZWN0aXZlID0gY2xhc3NEaXJlY3RpdmUo
J0V2ZW4nLCAxKTsKKworLyoqCisgKiBAbmdkb2MgZGlyZWN0aXZlCisgKiBAbmFtZSBuZ0Nsb2Fr
CisgKiBAcmVzdHJpY3QgQUMKKyAqCisgKiBAZGVzY3JpcHRpb24KKyAqIFRoZSBgbmdDbG9ha2Ag
ZGlyZWN0aXZlIGlzIHVzZWQgdG8gcHJldmVudCB0aGUgQW5ndWxhciBodG1sIHRlbXBsYXRlIGZy
b20gYmVpbmcgYnJpZWZseQorICogZGlzcGxheWVkIGJ5IHRoZSBicm93c2VyIGluIGl0cyByYXcg
KHVuY29tcGlsZWQpIGZvcm0gd2hpbGUgeW91ciBhcHBsaWNhdGlvbiBpcyBsb2FkaW5nLiBVc2Ug
dGhpcworICogZGlyZWN0aXZlIHRvIGF2b2lkIHRoZSB1bmRlc2lyYWJsZSBmbGlja2VyIGVmZmVj
dCBjYXVzZWQgYnkgdGhlIGh0bWwgdGVtcGxhdGUgZGlzcGxheS4KKyAqCisgKiBUaGUgZGlyZWN0
aXZlIGNhbiBiZSBhcHBsaWVkIHRvIHRoZSBgPGJvZHk+YCBlbGVtZW50LCBidXQgdGhlIHByZWZl
cnJlZCB1c2FnZSBpcyB0byBhcHBseQorICogbXVsdGlwbGUgYG5nQ2xvYWtgIGRpcmVjdGl2ZXMg
dG8gc21hbGwgcG9ydGlvbnMgb2YgdGhlIHBhZ2UgdG8gcGVybWl0IHByb2dyZXNzaXZlIHJlbmRl
cmluZworICogb2YgdGhlIGJyb3dzZXIgdmlldy4KKyAqCisgKiBgbmdDbG9ha2Agd29ya3MgaW4g
Y29vcGVyYXRpb24gd2l0aCB0aGUgZm9sbG93aW5nIGNzcyBydWxlIGVtYmVkZGVkIHdpdGhpbiBg
YW5ndWxhci5qc2AgYW5kCisgKiBgYW5ndWxhci5taW4uanNgLgorICogRm9yIENTUCBtb2RlIHBs
ZWFzZSBhZGQgYGFuZ3VsYXItY3NwLmNzc2AgdG8geW91ciBodG1sIGZpbGUgKHNlZSB7QGxpbmsg
bmcuZGlyZWN0aXZlOm5nQ3NwIG5nQ3NwfSkuCisgKgorICogYGBgY3NzCisgKiBbbmdcOmNsb2Fr
XSwgW25nLWNsb2FrXSwgW2RhdGEtbmctY2xvYWtdLCBbeC1uZy1jbG9ha10sIC5uZy1jbG9haywg
LngtbmctY2xvYWsgeworICogICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CisgKiB9CisgKiBg
YGAKKyAqCisgKiBXaGVuIHRoaXMgY3NzIHJ1bGUgaXMgbG9hZGVkIGJ5IHRoZSBicm93c2VyLCBh
bGwgaHRtbCBlbGVtZW50cyAoaW5jbHVkaW5nIHRoZWlyIGNoaWxkcmVuKSB0aGF0CisgKiBhcmUg
dGFnZ2VkIHdpdGggdGhlIGBuZ0Nsb2FrYCBkaXJlY3RpdmUgYXJlIGhpZGRlbi4gV2hlbiBBbmd1
bGFyIGVuY291bnRlcnMgdGhpcyBkaXJlY3RpdmUKKyAqIGR1cmluZyB0aGUgY29tcGlsYXRpb24g
b2YgdGhlIHRlbXBsYXRlIGl0IGRlbGV0ZXMgdGhlIGBuZ0Nsb2FrYCBlbGVtZW50IGF0dHJpYnV0
ZSwgbWFraW5nCisgKiB0aGUgY29tcGlsZWQgZWxlbWVudCB2aXNpYmxlLgorICoKKyAqIEZvciB0
aGUgYmVzdCByZXN1bHQsIHRoZSBgYW5ndWxhci5qc2Agc2NyaXB0IG11c3QgYmUgbG9hZGVkIGlu
IHRoZSBoZWFkIHNlY3Rpb24gb2YgdGhlIGh0bWwKKyAqIGRvY3VtZW50OyBhbHRlcm5hdGl2ZWx5
LCB0aGUgY3NzIHJ1bGUgYWJvdmUgbXVzdCBiZSBpbmNsdWRlZCBpbiB0aGUgZXh0ZXJuYWwgc3R5
bGVzaGVldCBvZiB0aGUKKyAqIGFwcGxpY2F0aW9uLgorICoKKyAqIEBlbGVtZW50IEFOWQorICoK
KyAqIEBleGFtcGxlCisgICA8ZXhhbXBsZT4KKyAgICAgPGZpbGUgbmFtZT0iaW5kZXguaHRtbCI+
CisgICAgICAgIDxkaXYgaWQ9InRlbXBsYXRlMSIgbmctY2xvYWs+e3sgJ2hlbGxvJyB9fTwvZGl2
PgorICAgICAgICA8ZGl2IGlkPSJ0ZW1wbGF0ZTIiIGNsYXNzPSJuZy1jbG9hayI+e3sgJ3dvcmxk
JyB9fTwvZGl2PgorICAgICA8L2ZpbGU+CisgICAgIDxmaWxlIG5hbWU9InByb3RyYWN0b3IuanMi
IHR5cGU9InByb3RyYWN0b3IiPgorICAgICAgIGl0KCdzaG91bGQgcmVtb3ZlIHRoZSB0ZW1wbGF0
ZSBkaXJlY3RpdmUgYW5kIGNzcyBjbGFzcycsIGZ1bmN0aW9uKCkgeworICAgICAgICAgZXhwZWN0
KCQoJyN0ZW1wbGF0ZTEnKS5nZXRBdHRyaWJ1dGUoJ25nLWNsb2FrJykpLgorICAgICAgICAgICB0
b0JlTnVsbCgpOworICAgICAgICAgZXhwZWN0KCQoJyN0ZW1wbGF0ZTInKS5nZXRBdHRyaWJ1dGUo
J25nLWNsb2FrJykpLgorICAgICAgICAgICB0b0JlTnVsbCgpOworICAgICAgIH0pOworICAgICA8
L2ZpbGU+CisgICA8L2V4YW1wbGU+CisgKgorICovCit2YXIgbmdDbG9ha0RpcmVjdGl2ZSA9IG5n
RGlyZWN0aXZlKHsKKyAgY29tcGlsZTogZnVuY3Rpb24oZWxlbWVudCwgYXR0cikgeworICAgIGF0
dHIuJHNldCgnbmdDbG9haycsIHVuZGVmaW5lZCk7CisgICAgZWxlbWVudC5yZW1vdmVDbGFzcygn
bmctY2xvYWsnKTsKKyAgfQorfSk7CisKKy8qKgorICogQG5nZG9jIGRpcmVjdGl2ZQorICogQG5h
bWUgbmdDb250cm9sbGVyCisgKgorICogQGRlc2NyaXB0aW9uCisgKiBUaGUgYG5nQ29udHJvbGxl
cmAgZGlyZWN0aXZlIGF0dGFjaGVzIGEgY29udHJvbGxlciBjbGFzcyB0byB0aGUgdmlldy4gVGhp
cyBpcyBhIGtleSBhc3BlY3Qgb2YgaG93IGFuZ3VsYXIKKyAqIHN1cHBvcnRzIHRoZSBwcmluY2lw
bGVzIGJlaGluZCB0aGUgTW9kZWwtVmlldy1Db250cm9sbGVyIGRlc2lnbiBwYXR0ZXJuLgorICoK
KyAqIE1WQyBjb21wb25lbnRzIGluIGFuZ3VsYXI6CisgKgorICogKiBNb2RlbCDigJQgTW9kZWxz
IGFyZSB0aGUgcHJvcGVydGllcyBvZiBhIHNjb3BlOyBzY29wZXMgYXJlIGF0dGFjaGVkIHRvIHRo
ZSBET00gd2hlcmUgc2NvcGUgcHJvcGVydGllcworICogICBhcmUgYWNjZXNzZWQgdGhyb3VnaCBi
aW5kaW5ncy4KKyAqICogVmlldyDigJQgVGhlIHRlbXBsYXRlIChIVE1MIHdpdGggZGF0YSBiaW5k
aW5ncykgdGhhdCBpcyByZW5kZXJlZCBpbnRvIHRoZSBWaWV3LgorICogKiBDb250cm9sbGVyIOKA
lCBUaGUgYG5nQ29udHJvbGxlcmAgZGlyZWN0aXZlIHNwZWNpZmllcyBhIENvbnRyb2xsZXIgY2xh
c3M7IHRoZSBjbGFzcyBjb250YWlucyBidXNpbmVzcworICogICBsb2dpYyBiZWhpbmQgdGhlIGFw
cGxpY2F0aW9uIHRvIGRlY29yYXRlIHRoZSBzY29wZSB3aXRoIGZ1bmN0aW9ucyBhbmQgdmFsdWVz
CisgKgorICogTm90ZSB0aGF0IHlvdSBjYW4gYWxzbyBhdHRhY2ggY29udHJvbGxlcnMgdG8gdGhl
IERPTSBieSBkZWNsYXJpbmcgaXQgaW4gYSByb3V0ZSBkZWZpbml0aW9uCisgKiB2aWEgdGhlIHtA
bGluayBuZ1JvdXRlLiRyb3V0ZSAkcm91dGV9IHNlcnZpY2UuIEEgY29tbW9uIG1pc3Rha2UgaXMg
dG8gZGVjbGFyZSB0aGUgY29udHJvbGxlcgorICogYWdhaW4gdXNpbmcgYG5nLWNvbnRyb2xsZXJg
IGluIHRoZSB0ZW1wbGF0ZSBpdHNlbGYuICBUaGlzIHdpbGwgY2F1c2UgdGhlIGNvbnRyb2xsZXIg
dG8gYmUgYXR0YWNoZWQKKyAqIGFuZCBleGVjdXRlZCB0d2ljZS4KKyAqCisgKiBAZWxlbWVudCBB
TlkKKyAqIEBzY29wZQorICogQHByaW9yaXR5IDUwMAorICogQHBhcmFtIHtleHByZXNzaW9ufSBu
Z0NvbnRyb2xsZXIgTmFtZSBvZiBhIGNvbnN0cnVjdG9yIGZ1bmN0aW9uIHJlZ2lzdGVyZWQgd2l0
aCB0aGUgY3VycmVudAorICoge0BsaW5rIG5nLiRjb250cm9sbGVyUHJvdmlkZXIgJGNvbnRyb2xs
ZXJQcm92aWRlcn0gb3IgYW4ge0BsaW5rIGd1aWRlL2V4cHJlc3Npb24gZXhwcmVzc2lvbn0KKyAq
IHRoYXQgb24gdGhlIGN1cnJlbnQgc2NvcGUgZXZhbHVhdGVzIHRvIGEgY29uc3RydWN0b3IgZnVu
Y3Rpb24uCisgKgorICogVGhlIGNvbnRyb2xsZXIgaW5zdGFuY2UgY2FuIGJlIHB1Ymxpc2hlZCBp
bnRvIGEgc2NvcGUgcHJvcGVydHkgYnkgc3BlY2lmeWluZworICogYG5nLWNvbnRyb2xsZXI9ImFz
IHByb3BlcnR5TmFtZSJgLgorICoKKyAqIElmIHRoZSBjdXJyZW50IGAkY29udHJvbGxlclByb3Zp
ZGVyYCBpcyBjb25maWd1cmVkIHRvIHVzZSBnbG9iYWxzICh2aWEKKyAqIHtAbGluayBuZy4kY29u
dHJvbGxlclByb3ZpZGVyI2FsbG93R2xvYmFscyBgJGNvbnRyb2xsZXJQcm92aWRlci5hbGxvd0ds
b2JhbHMoKWAgfSksIHRoaXMgbWF5CisgKiBhbHNvIGJlIHRoZSBuYW1lIG9mIGEgZ2xvYmFsbHkg
YWNjZXNzaWJsZSBjb25zdHJ1Y3RvciBmdW5jdGlvbiAobm90IHJlY29tbWVuZGVkKS4KKyAqCisg
KiBAZXhhbXBsZQorICogSGVyZSBpcyBhIHNpbXBsZSBmb3JtIGZvciBlZGl0aW5nIHVzZXIgY29u
dGFjdCBpbmZvcm1hdGlvbi4gQWRkaW5nLCByZW1vdmluZywgY2xlYXJpbmcsIGFuZAorICogZ3Jl
ZXRpbmcgYXJlIG1ldGhvZHMgZGVjbGFyZWQgb24gdGhlIGNvbnRyb2xsZXIgKHNlZSBzb3VyY2Ug
dGFiKS4gVGhlc2UgbWV0aG9kcyBjYW4KKyAqIGVhc2lseSBiZSBjYWxsZWQgZnJvbSB0aGUgYW5n
dWxhciBtYXJrdXAuIEFueSBjaGFuZ2VzIHRvIHRoZSBkYXRhIGFyZSBhdXRvbWF0aWNhbGx5IHJl
ZmxlY3RlZAorICogaW4gdGhlIFZpZXcgd2l0aG91dCB0aGUgbmVlZCBmb3IgYSBtYW51YWwgdXBk
YXRlLgorICoKKyAqIFR3byBkaWZmZXJlbnQgZGVjbGFyYXRpb24gc3R5bGVzIGFyZSBpbmNsdWRl
ZCBiZWxvdzoKKyAqCisgKiAqIG9uZSBiaW5kcyBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzIGRpcmVj
dGx5IG9udG8gdGhlIGNvbnRyb2xsZXIgdXNpbmcgYHRoaXNgOgorICogYG5nLWNvbnRyb2xsZXI9
IlNldHRpbmdzQ29udHJvbGxlcjEgYXMgc2V0dGluZ3MiYAorICogKiBvbmUgaW5qZWN0cyBgJHNj
b3BlYCBpbnRvIHRoZSBjb250cm9sbGVyOgorICogYG5nLWNvbnRyb2xsZXI9IlNldHRpbmdzQ29u
dHJvbGxlcjIiYAorICoKKyAqIFRoZSBzZWNvbmQgb3B0aW9uIGlzIG1vcmUgY29tbW9uIGluIHRo
ZSBBbmd1bGFyIGNvbW11bml0eSwgYW5kIGlzIGdlbmVyYWxseSB1c2VkIGluIGJvaWxlcnBsYXRl
cworICogYW5kIGluIHRoaXMgZ3VpZGUuIEhvd2V2ZXIsIHRoZXJlIGFyZSBhZHZhbnRhZ2VzIHRv
IGJpbmRpbmcgcHJvcGVydGllcyBkaXJlY3RseSB0byB0aGUgY29udHJvbGxlcgorICogYW5kIGF2
b2lkaW5nIHNjb3BlLgorICoKKyAqICogVXNpbmcgYGNvbnRyb2xsZXIgYXNgIG1ha2VzIGl0IG9i
dmlvdXMgd2hpY2ggY29udHJvbGxlciB5b3UgYXJlIGFjY2Vzc2luZyBpbiB0aGUgdGVtcGxhdGUg
d2hlbgorICogbXVsdGlwbGUgY29udHJvbGxlcnMgYXBwbHkgdG8gYW4gZWxlbWVudC4KKyAqICog
SWYgeW91IGFyZSB3cml0aW5nIHlvdXIgY29udHJvbGxlcnMgYXMgY2xhc3NlcyB5b3UgaGF2ZSBl
YXNpZXIgYWNjZXNzIHRvIHRoZSBwcm9wZXJ0aWVzIGFuZAorICogbWV0aG9kcywgd2hpY2ggd2ls
bCBhcHBlYXIgb24gdGhlIHNjb3BlLCBmcm9tIGluc2lkZSB0aGUgY29udHJvbGxlciBjb2RlLgor
ICogKiBTaW5jZSB0aGVyZSBpcyBhbHdheXMgYSBgLmAgaW4gdGhlIGJpbmRpbmdzLCB5b3UgZG9u
J3QgaGF2ZSB0byB3b3JyeSBhYm91dCBwcm90b3R5cGFsCisgKiBpbmhlcml0YW5jZSBtYXNraW5n
IHByaW1pdGl2ZXMuCisgKgorICogVGhpcyBleGFtcGxlIGRlbW9uc3RyYXRlcyB0aGUgYGNvbnRy
b2xsZXIgYXNgIHN5bnRheC4KKyAqCisgKiA8ZXhhbXBsZSBuYW1lPSJuZ0NvbnRyb2xsZXJBcyIg
bW9kdWxlPSJjb250cm9sbGVyQXNFeGFtcGxlIj4KKyAqICAgPGZpbGUgbmFtZT0iaW5kZXguaHRt
bCI+CisgKiAgICA8ZGl2IGlkPSJjdHJsLWFzLWV4bXBsIiBuZy1jb250cm9sbGVyPSJTZXR0aW5n
c0NvbnRyb2xsZXIxIGFzIHNldHRpbmdzIj4KKyAqICAgICAgPGxhYmVsPk5hbWU6IDxpbnB1dCB0
eXBlPSJ0ZXh0IiBuZy1tb2RlbD0ic2V0dGluZ3MubmFtZSIvPjwvbGFiZWw+CisgKiAgICAgIDxi
dXR0b24gbmctY2xpY2s9InNldHRpbmdzLmdyZWV0KCkiPmdyZWV0PC9idXR0b24+PGJyLz4KKyAq
ICAgICAgQ29udGFjdDoKKyAqICAgICAgPHVsPgorICogICAgICAgIDxsaSBuZy1yZXBlYXQ9ImNv
bnRhY3QgaW4gc2V0dGluZ3MuY29udGFjdHMiPgorICogICAgICAgICAgPHNlbGVjdCBuZy1tb2Rl
bD0iY29udGFjdC50eXBlIiBhcmlhLWxhYmVsPSJDb250YWN0IG1ldGhvZCIgaWQ9InNlbGVjdF97
eyRpbmRleH19Ij4KKyAqICAgICAgICAgICAgIDxvcHRpb24+cGhvbmU8L29wdGlvbj4KKyAqICAg
ICAgICAgICAgIDxvcHRpb24+ZW1haWw8L29wdGlvbj4KKyAqICAgICAgICAgIDwvc2VsZWN0Pgor
ICogICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5nLW1vZGVsPSJjb250YWN0LnZhbHVlIiBh
cmlhLWxhYmVsbGVkYnk9InNlbGVjdF97eyRpbmRleH19IiAvPgorICogICAgICAgICAgPGJ1dHRv
biBuZy1jbGljaz0ic2V0dGluZ3MuY2xlYXJDb250YWN0KGNvbnRhY3QpIj5jbGVhcjwvYnV0dG9u
PgorICogICAgICAgICAgPGJ1dHRvbiBuZy1jbGljaz0ic2V0dGluZ3MucmVtb3ZlQ29udGFjdChj
b250YWN0KSIgYXJpYS1sYWJlbD0iUmVtb3ZlIj5YPC9idXR0b24+CisgKiAgICAgICAgPC9saT4K
KyAqICAgICAgICA8bGk+PGJ1dHRvbiBuZy1jbGljaz0ic2V0dGluZ3MuYWRkQ29udGFjdCgpIj5h
ZGQ8L2J1dHRvbj48L2xpPgorICogICAgIDwvdWw+CisgKiAgICA8L2Rpdj4KKyAqICAgPC9maWxl
PgorICogICA8ZmlsZSBuYW1lPSJhcHAuanMiPgorICogICAgYW5ndWxhci5tb2R1bGUoJ2NvbnRy
b2xsZXJBc0V4YW1wbGUnLCBbXSkKKyAqICAgICAgLmNvbnRyb2xsZXIoJ1NldHRpbmdzQ29udHJv
bGxlcjEnLCBTZXR0aW5nc0NvbnRyb2xsZXIxKTsKKyAqCisgKiAgICBmdW5jdGlvbiBTZXR0aW5n
c0NvbnRyb2xsZXIxKCkgeworICogICAgICB0aGlzLm5hbWUgPSAiSm9obiBTbWl0aCI7CisgKiAg
ICAgIHRoaXMuY29udGFjdHMgPSBbCisgKiAgICAgICAge3R5cGU6ICdwaG9uZScsIHZhbHVlOiAn
NDA4IDU1NSAxMjEyJ30sCisgKiAgICAgICAge3R5cGU6ICdlbWFpbCcsIHZhbHVlOiAnam9obi5z
bWl0aEBleGFtcGxlLm9yZyd9IF07CisgKiAgICB9CisgKgorICogICAgU2V0dGluZ3NDb250cm9s
bGVyMS5wcm90b3R5cGUuZ3JlZXQgPSBmdW5jdGlvbigpIHsKKyAqICAgICAgYWxlcnQodGhpcy5u
YW1lKTsKKyAqICAgIH07CisgKgorICogICAgU2V0dGluZ3NDb250cm9sbGVyMS5wcm90b3R5cGUu
YWRkQ29udGFjdCA9IGZ1bmN0aW9uKCkgeworICogICAgICB0aGlzLmNvbnRhY3RzLnB1c2goe3R5
cGU6ICdlbWFpbCcsIHZhbHVlOiAneW91cm5hbWVAZXhhbXBsZS5vcmcnfSk7CisgKiAgICB9Owor
ICoKKyAqICAgIFNldHRpbmdzQ29udHJvbGxlcjEucHJvdG90eXBlLnJlbW92ZUNvbnRhY3QgPSBm
dW5jdGlvbihjb250YWN0VG9SZW1vdmUpIHsKKyAqICAgICB2YXIgaW5kZXggPSB0aGlzLmNvbnRh
Y3RzLmluZGV4T2YoY29udGFjdFRvUmVtb3ZlKTsKKyAqICAgICAgdGhpcy5jb250YWN0cy5zcGxp
Y2UoaW5kZXgsIDEpOworICogICAgfTsKKyAqCisgKiAgICBTZXR0aW5nc0NvbnRyb2xsZXIxLnBy
b3RvdHlwZS5jbGVhckNvbnRhY3QgPSBmdW5jdGlvbihjb250YWN0KSB7CisgKiAgICAgIGNvbnRh
Y3QudHlwZSA9ICdwaG9uZSc7CisgKiAgICAgIGNvbnRhY3QudmFsdWUgPSAnJzsKKyAqICAgIH07
CisgKiAgIDwvZmlsZT4KKyAqICAgPGZpbGUgbmFtZT0icHJvdHJhY3Rvci5qcyIgdHlwZT0icHJv
dHJhY3RvciI+CisgKiAgICAgaXQoJ3Nob3VsZCBjaGVjayBjb250cm9sbGVyIGFzJywgZnVuY3Rp
b24oKSB7CisgKiAgICAgICB2YXIgY29udGFpbmVyID0gZWxlbWVudChieS5pZCgnY3RybC1hcy1l
eG1wbCcpKTsKKyAqICAgICAgICAgZXhwZWN0KGNvbnRhaW5lci5lbGVtZW50KGJ5Lm1vZGVsKCdz
ZXR0aW5ncy5uYW1lJykpCisgKiAgICAgICAgICAgLmdldEF0dHJpYnV0ZSgndmFsdWUnKSkudG9C
ZSgnSm9obiBTbWl0aCcpOworICoKKyAqICAgICAgIHZhciBmaXJzdFJlcGVhdCA9CisgKiAgICAg
ICAgICAgY29udGFpbmVyLmVsZW1lbnQoYnkucmVwZWF0ZXIoJ2NvbnRhY3QgaW4gc2V0dGluZ3Mu
Y29udGFjdHMnKS5yb3coMCkpOworICogICAgICAgdmFyIHNlY29uZFJlcGVhdCA9CisgKiAgICAg
ICAgICAgY29udGFpbmVyLmVsZW1lbnQoYnkucmVwZWF0ZXIoJ2NvbnRhY3QgaW4gc2V0dGluZ3Mu
Y29udGFjdHMnKS5yb3coMSkpOworICoKKyAqICAgICAgIGV4cGVjdChmaXJzdFJlcGVhdC5lbGVt
ZW50KGJ5Lm1vZGVsKCdjb250YWN0LnZhbHVlJykpLmdldEF0dHJpYnV0ZSgndmFsdWUnKSkKKyAq
ICAgICAgICAgICAudG9CZSgnNDA4IDU1NSAxMjEyJyk7CisgKgorICogICAgICAgZXhwZWN0KHNl
Y29uZFJlcGVhdC5lbGVtZW50KGJ5Lm1vZGVsKCdjb250YWN0LnZhbHVlJykpLmdldEF0dHJpYnV0
ZSgndmFsdWUnKSkKKyAqICAgICAgICAgICAudG9CZSgnam9obi5zbWl0aEBleGFtcGxlLm9yZycp
OworICoKKyAqICAgICAgIGZpcnN0UmVwZWF0LmVsZW1lbnQoYnkuYnV0dG9uVGV4dCgnY2xlYXIn
KSkuY2xpY2soKTsKKyAqCisgKiAgICAgICBleHBlY3QoZmlyc3RSZXBlYXQuZWxlbWVudChieS5t
b2RlbCgnY29udGFjdC52YWx1ZScpKS5nZXRBdHRyaWJ1dGUoJ3ZhbHVlJykpCisgKiAgICAgICAg
ICAgLnRvQmUoJycpOworICoKKyAqICAgICAgIGNvbnRhaW5lci5lbGVtZW50KGJ5LmJ1dHRvblRl
eHQoJ2FkZCcpKS5jbGljaygpOworICoKKyAqICAgICAgIGV4cGVjdChjb250YWluZXIuZWxlbWVu
dChieS5yZXBlYXRlcignY29udGFjdCBpbiBzZXR0aW5ncy5jb250YWN0cycpLnJvdygyKSkKKyAq
ICAgICAgICAgICAuZWxlbWVudChieS5tb2RlbCgnY29udGFjdC52YWx1ZScpKQorICogICAgICAg
ICAgIC5nZXRBdHRyaWJ1dGUoJ3ZhbHVlJykpCisgKiAgICAgICAgICAgLnRvQmUoJ3lvdXJuYW1l
QGV4YW1wbGUub3JnJyk7CisgKiAgICAgfSk7CisgKiAgIDwvZmlsZT4KKyAqIDwvZXhhbXBsZT4K
KyAqCisgKiBUaGlzIGV4YW1wbGUgZGVtb25zdHJhdGVzIHRoZSAiYXR0YWNoIHRvIGAkc2NvcGVg
IiBzdHlsZSBvZiBjb250cm9sbGVyLgorICoKKyAqIDxleGFtcGxlIG5hbWU9Im5nQ29udHJvbGxl
ciIgbW9kdWxlPSJjb250cm9sbGVyRXhhbXBsZSI+CisgKiAgPGZpbGUgbmFtZT0iaW5kZXguaHRt
bCI+CisgKiAgIDxkaXYgaWQ9ImN0cmwtZXhtcGwiIG5nLWNvbnRyb2xsZXI9IlNldHRpbmdzQ29u
dHJvbGxlcjIiPgorICogICAgIDxsYWJlbD5OYW1lOiA8aW5wdXQgdHlwZT0idGV4dCIgbmctbW9k
ZWw9Im5hbWUiLz48L2xhYmVsPgorICogICAgIDxidXR0b24gbmctY2xpY2s9ImdyZWV0KCkiPmdy
ZWV0PC9idXR0b24+PGJyLz4KKyAqICAgICBDb250YWN0OgorICogICAgIDx1bD4KKyAqICAgICAg
IDxsaSBuZy1yZXBlYXQ9ImNvbnRhY3QgaW4gY29udGFjdHMiPgorICogICAgICAgICA8c2VsZWN0
IG5nLW1vZGVsPSJjb250YWN0LnR5cGUiIGlkPSJzZWxlY3Rfe3skaW5kZXh9fSI+CisgKiAgICAg
ICAgICAgIDxvcHRpb24+cGhvbmU8L29wdGlvbj4KKyAqICAgICAgICAgICAgPG9wdGlvbj5lbWFp
bDwvb3B0aW9uPgorICogICAgICAgICA8L3NlbGVjdD4KKyAqICAgICAgICAgPGlucHV0IHR5cGU9
InRleHQiIG5nLW1vZGVsPSJjb250YWN0LnZhbHVlIiBhcmlhLWxhYmVsbGVkYnk9InNlbGVjdF97
eyRpbmRleH19IiAvPgorICogICAgICAgICA8YnV0dG9uIG5nLWNsaWNrPSJjbGVhckNvbnRhY3Qo
Y29udGFjdCkiPmNsZWFyPC9idXR0b24+CisgKiAgICAgICAgIDxidXR0b24gbmctY2xpY2s9InJl
bW92ZUNvbnRhY3QoY29udGFjdCkiPlg8L2J1dHRvbj4KKyAqICAgICAgIDwvbGk+CisgKiAgICAg
ICA8bGk+WyA8YnV0dG9uIG5nLWNsaWNrPSJhZGRDb250YWN0KCkiPmFkZDwvYnV0dG9uPiBdPC9s
aT4KKyAqICAgIDwvdWw+CisgKiAgIDwvZGl2PgorICogIDwvZmlsZT4KKyAqICA8ZmlsZSBuYW1l
PSJhcHAuanMiPgorICogICBhbmd1bGFyLm1vZHVsZSgnY29udHJvbGxlckV4YW1wbGUnLCBbXSkK
KyAqICAgICAuY29udHJvbGxlcignU2V0dGluZ3NDb250cm9sbGVyMicsIFsnJHNjb3BlJywgU2V0
dGluZ3NDb250cm9sbGVyMl0pOworICoKKyAqICAgZnVuY3Rpb24gU2V0dGluZ3NDb250cm9sbGVy
Migkc2NvcGUpIHsKKyAqICAgICAkc2NvcGUubmFtZSA9ICJKb2huIFNtaXRoIjsKKyAqICAgICAk
c2NvcGUuY29udGFjdHMgPSBbCisgKiAgICAgICB7dHlwZToncGhvbmUnLCB2YWx1ZTonNDA4IDU1
NSAxMjEyJ30sCisgKiAgICAgICB7dHlwZTonZW1haWwnLCB2YWx1ZTonam9obi5zbWl0aEBleGFt
cGxlLm9yZyd9IF07CisgKgorICogICAgICRzY29wZS5ncmVldCA9IGZ1bmN0aW9uKCkgeworICog
ICAgICAgYWxlcnQoJHNjb3BlLm5hbWUpOworICogICAgIH07CisgKgorICogICAgICRzY29wZS5h
ZGRDb250YWN0ID0gZnVuY3Rpb24oKSB7CisgKiAgICAgICAkc2NvcGUuY29udGFjdHMucHVzaCh7
dHlwZTonZW1haWwnLCB2YWx1ZToneW91cm5hbWVAZXhhbXBsZS5vcmcnfSk7CisgKiAgICAgfTsK
KyAqCisgKiAgICAgJHNjb3BlLnJlbW92ZUNvbnRhY3QgPSBmdW5jdGlvbihjb250YWN0VG9SZW1v
dmUpIHsKKyAqICAgICAgIHZhciBpbmRleCA9ICRzY29wZS5jb250YWN0cy5pbmRleE9mKGNvbnRh
Y3RUb1JlbW92ZSk7CisgKiAgICAgICAkc2NvcGUuY29udGFjdHMuc3BsaWNlKGluZGV4LCAxKTsK
KyAqICAgICB9OworICoKKyAqICAgICAkc2NvcGUuY2xlYXJDb250YWN0ID0gZnVuY3Rpb24oY29u
dGFjdCkgeworICogICAgICAgY29udGFjdC50eXBlID0gJ3Bob25lJzsKKyAqICAgICAgIGNvbnRh
Y3QudmFsdWUgPSAnJzsKKyAqICAgICB9OworICogICB9CisgKiAgPC9maWxlPgorICogIDxmaWxl
IG5hbWU9InByb3RyYWN0b3IuanMiIHR5cGU9InByb3RyYWN0b3IiPgorICogICAgaXQoJ3Nob3Vs
ZCBjaGVjayBjb250cm9sbGVyJywgZnVuY3Rpb24oKSB7CisgKiAgICAgIHZhciBjb250YWluZXIg
PSBlbGVtZW50KGJ5LmlkKCdjdHJsLWV4bXBsJykpOworICoKKyAqICAgICAgZXhwZWN0KGNvbnRh
aW5lci5lbGVtZW50KGJ5Lm1vZGVsKCduYW1lJykpCisgKiAgICAgICAgICAuZ2V0QXR0cmlidXRl
KCd2YWx1ZScpKS50b0JlKCdKb2huIFNtaXRoJyk7CisgKgorICogICAgICB2YXIgZmlyc3RSZXBl
YXQgPQorICogICAgICAgICAgY29udGFpbmVyLmVsZW1lbnQoYnkucmVwZWF0ZXIoJ2NvbnRhY3Qg
aW4gY29udGFjdHMnKS5yb3coMCkpOworICogICAgICB2YXIgc2Vjb25kUmVwZWF0ID0KKyAqICAg
ICAgICAgIGNvbnRhaW5lci5lbGVtZW50KGJ5LnJlcGVhdGVyKCdjb250YWN0IGluIGNvbnRhY3Rz
Jykucm93KDEpKTsKKyAqCisgKiAgICAgIGV4cGVjdChmaXJzdFJlcGVhdC5lbGVtZW50KGJ5Lm1v
ZGVsKCdjb250YWN0LnZhbHVlJykpLmdldEF0dHJpYnV0ZSgndmFsdWUnKSkKKyAqICAgICAgICAg
IC50b0JlKCc0MDggNTU1IDEyMTInKTsKKyAqICAgICAgZXhwZWN0KHNlY29uZFJlcGVhdC5lbGVt
ZW50KGJ5Lm1vZGVsKCdjb250YWN0LnZhbHVlJykpLmdldEF0dHJpYnV0ZSgndmFsdWUnKSkKKyAq
ICAgICAgICAgIC50b0JlKCdqb2huLnNtaXRoQGV4YW1wbGUub3JnJyk7CisgKgorICogICAgICBm
aXJzdFJlcGVhdC5lbGVtZW50KGJ5LmJ1dHRvblRleHQoJ2NsZWFyJykpLmNsaWNrKCk7CisgKgor
ICogICAgICBleHBlY3QoZmlyc3RSZXBlYXQuZWxlbWVudChieS5tb2RlbCgnY29udGFjdC52YWx1
ZScpKS5nZXRBdHRyaWJ1dGUoJ3ZhbHVlJykpCisgKiAgICAgICAgICAudG9CZSgnJyk7CisgKgor
ICogICAgICBjb250YWluZXIuZWxlbWVudChieS5idXR0b25UZXh0KCdhZGQnKSkuY2xpY2soKTsK
KyAqCisgKiAgICAgIGV4cGVjdChjb250YWluZXIuZWxlbWVudChieS5yZXBlYXRlcignY29udGFj
dCBpbiBjb250YWN0cycpLnJvdygyKSkKKyAqICAgICAgICAgIC5lbGVtZW50KGJ5Lm1vZGVsKCdj
b250YWN0LnZhbHVlJykpCisgKiAgICAgICAgICAuZ2V0QXR0cmlidXRlKCd2YWx1ZScpKQorICog
ICAgICAgICAgLnRvQmUoJ3lvdXJuYW1lQGV4YW1wbGUub3JnJyk7CisgKiAgICB9KTsKKyAqICA8
L2ZpbGU+CisgKjwvZXhhbXBsZT4KKworICovCit2YXIgbmdDb250cm9sbGVyRGlyZWN0aXZlID0g
W2Z1bmN0aW9uKCkgeworICByZXR1cm4geworICAgIHJlc3RyaWN0OiAnQScsCisgICAgc2NvcGU6
IHRydWUsCisgICAgY29udHJvbGxlcjogJ0AnLAorICAgIHByaW9yaXR5OiA1MDAKKyAgfTsKK31d
OworCisvKioKKyAqIEBuZ2RvYyBkaXJlY3RpdmUKKyAqIEBuYW1lIG5nQ3NwCisgKgorICogQGVs
ZW1lbnQgaHRtbAorICogQGRlc2NyaXB0aW9uCisgKiBFbmFibGVzIFtDU1AgKENvbnRlbnQgU2Vj
dXJpdHkgUG9saWN5KV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4vU2VjdXJpdHkv
Q1NQKSBzdXBwb3J0LgorICoKKyAqIFRoaXMgaXMgbmVjZXNzYXJ5IHdoZW4gZGV2ZWxvcGluZyB0
aGluZ3MgbGlrZSBHb29nbGUgQ2hyb21lIEV4dGVuc2lvbnMgb3IgVW5pdmVyc2FsIFdpbmRvd3Mg
QXBwcy4KKyAqCisgKiBDU1AgZm9yYmlkcyBhcHBzIHRvIHVzZSBgZXZhbGAgb3IgYEZ1bmN0aW9u
KHN0cmluZylgIGdlbmVyYXRlZCBmdW5jdGlvbnMgKGFtb25nIG90aGVyIHRoaW5ncykuCisgKiBG
b3IgQW5ndWxhciB0byBiZSBDU1AgY29tcGF0aWJsZSB0aGVyZSBhcmUgb25seSB0d28gdGhpbmdz
IHRoYXQgd2UgbmVlZCB0byBkbyBkaWZmZXJlbnRseToKKyAqCisgKiAtIGRvbid0IHVzZSBgRnVu
Y3Rpb25gIGNvbnN0cnVjdG9yIHRvIGdlbmVyYXRlIG9wdGltaXplZCB2YWx1ZSBnZXR0ZXJzCisg
KiAtIGRvbid0IGluamVjdCBjdXN0b20gc3R5bGVzaGVldCBpbnRvIHRoZSBkb2N1bWVudAorICoK
KyAqIEFuZ3VsYXJKUyB1c2VzIGBGdW5jdGlvbihzdHJpbmcpYCBnZW5lcmF0ZWQgZnVuY3Rpb25z
IGFzIGEgc3BlZWQgb3B0aW1pemF0aW9uLiBBcHBseWluZyB0aGUgYG5nQ3NwYAorICogZGlyZWN0
aXZlIHdpbGwgY2F1c2UgQW5ndWxhciB0byB1c2UgQ1NQIGNvbXBhdGliaWxpdHkgbW9kZS4gV2hl
biB0aGlzIG1vZGUgaXMgb24gQW5ndWxhckpTIHdpbGwKKyAqIGV2YWx1YXRlIGFsbCBleHByZXNz
aW9ucyB1cCB0byAzMCUgc2xvd2VyIHRoYW4gaW4gbm9uLUNTUCBtb2RlLCBidXQgbm8gc2VjdXJp
dHkgdmlvbGF0aW9ucyB3aWxsCisgKiBiZSByYWlzZWQuCisgKgorICogQ1NQIGZvcmJpZHMgSmF2
YVNjcmlwdCB0byBpbmxpbmUgc3R5bGVzaGVldCBydWxlcy4gSW4gbm9uIENTUCBtb2RlIEFuZ3Vs
YXIgYXV0b21hdGljYWxseQorICogaW5jbHVkZXMgc29tZSBDU1MgcnVsZXMgKGUuZy4ge0BsaW5r
IG5nLmRpcmVjdGl2ZTpuZ0Nsb2FrIG5nQ2xvYWt9KS4KKyAqIFRvIG1ha2UgdGhvc2UgZGlyZWN0
aXZlcyB3b3JrIGluIENTUCBtb2RlLCBpbmNsdWRlIHRoZSBgYW5ndWxhci1jc3AuY3NzYCBtYW51
YWxseS4KKyAqCisgKiBBbmd1bGFyIHRyaWVzIHRvIGF1dG9kZXRlY3QgaWYgQ1NQIGlzIGFjdGl2
ZSBhbmQgYXV0b21hdGljYWxseSB0dXJuIG9uIHRoZSBDU1Atc2FmZSBtb2RlLiBUaGlzCisgKiBh
dXRvZGV0ZWN0aW9uIGhvd2V2ZXIgdHJpZ2dlcnMgYSBDU1AgZXJyb3IgdG8gYmUgbG9nZ2VkIGlu
IHRoZSBjb25zb2xlOgorICoKKyAqIGBgYAorICogUmVmdXNlZCB0byBldmFsdWF0ZSBhIHN0cmlu
ZyBhcyBKYXZhU2NyaXB0IGJlY2F1c2UgJ3Vuc2FmZS1ldmFsJyBpcyBub3QgYW4gYWxsb3dlZCBz
b3VyY2Ugb2YKKyAqIHNjcmlwdCBpbiB0aGUgZm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9s
aWN5IGRpcmVjdGl2ZTogImRlZmF1bHQtc3JjICdzZWxmJyIuIE5vdGUgdGhhdAorICogJ3Njcmlw
dC1zcmMnIHdhcyBub3QgZXhwbGljaXRseSBzZXQsIHNvICdkZWZhdWx0LXNyYycgaXMgdXNlZCBh
cyBhIGZhbGxiYWNrLgorICogYGBgCisgKgorICogVGhpcyBlcnJvciBpcyBoYXJtbGVzcyBidXQg
YW5ub3lpbmcuIFRvIHByZXZlbnQgdGhlIGVycm9yIGZyb20gc2hvd2luZyB1cCwgcHV0IHRoZSBg
bmdDc3BgCisgKiBkaXJlY3RpdmUgb24gdGhlIHJvb3QgZWxlbWVudCBvZiB0aGUgYXBwbGljYXRp
b24gb3Igb24gdGhlIGBhbmd1bGFyLmpzYCBzY3JpcHQgdGFnLCB3aGljaGV2ZXIKKyAqIGFwcGVh
cnMgZmlyc3QgaW4gdGhlIGh0bWwgZG9jdW1lbnQuCisgKgorICogKk5vdGU6IFRoaXMgZGlyZWN0
aXZlIGlzIG9ubHkgYXZhaWxhYmxlIGluIHRoZSBgbmctY3NwYCBhbmQgYGRhdGEtbmctY3NwYCBh
dHRyaWJ1dGUgZm9ybS4qCisgKgorICogQGV4YW1wbGUKKyAqIFRoaXMgZXhhbXBsZSBzaG93cyBo
b3cgdG8gYXBwbHkgdGhlIGBuZ0NzcGAgZGlyZWN0aXZlIHRvIHRoZSBgaHRtbGAgdGFnLgorICAg
YGBgaHRtbAorICAgICA8IWRvY3R5cGUgaHRtbD4KKyAgICAgPGh0bWwgbmctYXBwIG5nLWNzcD4K
KyAgICAgLi4uCisgICAgIC4uLgorICAgICA8L2h0bWw+CisgICBgYGAKKyAgKiBAZXhhbXBsZQor
ICAgICAgLy8gTm90ZTogdGhlIHN1ZmZpeCBgLmNzcGAgaW4gdGhlIGV4YW1wbGUgbmFtZSB0cmln
Z2VycworICAgICAgLy8gY3NwIG1vZGUgaW4gb3VyIGh0dHAgc2VydmVyIQorICAgICAgPGV4YW1w
bGUgbmFtZT0iZXhhbXBsZS5jc3AiIG1vZHVsZT0iY3NwRXhhbXBsZSIgbmctY3NwPSJ0cnVlIj4K
KyAgICAgICAgPGZpbGUgbmFtZT0iaW5kZXguaHRtbCI+CisgICAgICAgICAgPGRpdiBuZy1jb250
cm9sbGVyPSJNYWluQ29udHJvbGxlciBhcyBjdHJsIj4KKyAgICAgICAgICAgIDxkaXY+CisgICAg
ICAgICAgICAgIDxidXR0b24gbmctY2xpY2s9ImN0cmwuaW5jKCkiIGlkPSJpbmMiPkluY3JlbWVu
dDwvYnV0dG9uPgorICAgICAgICAgICAgICA8c3BhbiBpZD0iY291bnRlciI+CisgICAgICAgICAg
ICAgICAge3tjdHJsLmNvdW50ZXJ9fQorICAgICAgICAgICAgICA8L3NwYW4+CisgICAgICAgICAg
ICA8L2Rpdj4KKworICAgICAgICAgICAgPGRpdj4KKyAgICAgICAgICAgICAgPGJ1dHRvbiBuZy1j
bGljaz0iY3RybC5ldmlsKCkiIGlkPSJldmlsIj5FdmlsPC9idXR0b24+CisgICAgICAgICAgICAg
IDxzcGFuIGlkPSJldmlsRXJyb3IiPgorICAgICAgICAgICAgICAgIHt7Y3RybC5ldmlsRXJyb3J9
fQorICAgICAgICAgICAgICA8L3NwYW4+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICA8
L2Rpdj4KKyAgICAgICAgPC9maWxlPgorICAgICAgICA8ZmlsZSBuYW1lPSJzY3JpcHQuanMiPgor
ICAgICAgICAgICBhbmd1bGFyLm1vZHVsZSgnY3NwRXhhbXBsZScsIFtdKQorICAgICAgICAgICAg
IC5jb250cm9sbGVyKCdNYWluQ29udHJvbGxlcicsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
ICAgIHRoaXMuY291bnRlciA9IDA7CisgICAgICAgICAgICAgICAgdGhpcy5pbmMgPSBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgICAgICAgIHRoaXMuY291bnRlcisrOworICAgICAgICAgICAgICAg
IH07CisgICAgICAgICAgICAgICAgdGhpcy5ldmlsID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICAgICAgICAvLyBqc2hpbnQgZXZpbDp0cnVlCisgICAgICAgICAgICAgICAgICB0cnkgeworICAg
ICAgICAgICAgICAgICAgICBldmFsKCcxKzInKTsKKyAgICAgICAgICAgICAgICAgIH0gY2F0Y2gg
KGUpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5ldmlsRXJyb3IgPSBlLm1lc3NhZ2U7Cisg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgfSk7
CisgICAgICAgIDwvZmlsZT4KKyAgICAgICAgPGZpbGUgbmFtZT0icHJvdHJhY3Rvci5qcyIgdHlw
ZT0icHJvdHJhY3RvciI+CisgICAgICAgICAgdmFyIHV0aWwsIHdlYmRyaXZlcjsKKworICAgICAg
ICAgIHZhciBpbmNCdG4gPSBlbGVtZW50KGJ5LmlkKCdpbmMnKSk7CisgICAgICAgICAgdmFyIGNv
dW50ZXIgPSBlbGVtZW50KGJ5LmlkKCdjb3VudGVyJykpOworICAgICAgICAgIHZhciBldmlsQnRu
ID0gZWxlbWVudChieS5pZCgnZXZpbCcpKTsKKyAgICAgICAgICB2YXIgZXZpbEVycm9yID0gZWxl
bWVudChieS5pZCgnZXZpbEVycm9yJykpOworCisgICAgICAgICAgZnVuY3Rpb24gZ2V0QW5kQ2xl
YXJTZXZlcmVFcnJvcnMoKSB7CisgICAgICAgICAgICByZXR1cm4gYnJvd3Nlci5tYW5hZ2UoKS5s
b2dzKCkuZ2V0KCdicm93c2VyJykudGhlbihmdW5jdGlvbihicm93c2VyTG9nKSB7CisgICAgICAg
ICAgICAgIHJldHVybiBicm93c2VyTG9nLmZpbHRlcihmdW5jdGlvbihsb2dFbnRyeSkgeworICAg
ICAgICAgICAgICAgIHJldHVybiBsb2dFbnRyeS5sZXZlbC52YWx1ZSA+IHdlYmRyaXZlci5sb2dn
aW5nLkxldmVsLldBUk5JTkcudmFsdWU7CisgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
fSk7CisgICAgICAgICAgfQorCisgICAgICAgICAgZnVuY3Rpb24gY2xlYXJFcnJvcnMoKSB7Cisg
ICAgICAgICAgICBnZXRBbmRDbGVhclNldmVyZUVycm9ycygpOworICAgICAgICAgIH0KKworICAg
ICAgICAgIGZ1bmN0aW9uIGV4cGVjdE5vRXJyb3JzKCkgeworICAgICAgICAgICAgZ2V0QW5kQ2xl
YXJTZXZlcmVFcnJvcnMoKS50aGVuKGZ1bmN0aW9uKGZpbHRlcmVkTG9nKSB7CisgICAgICAgICAg
ICAgIGV4cGVjdChmaWx0ZXJlZExvZy5sZW5ndGgpLnRvRXF1YWwoMCk7CisgICAgICAgICAgICAg
IGlmIChmaWx0ZXJlZExvZy5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygn
YnJvd3NlciBjb25zb2xlIGVycm9yczogJyArIHV0aWwuaW5zcGVjdChmaWx0ZXJlZExvZykpOwor
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICB9CisKKyAgICAgICAg
ICBmdW5jdGlvbiBleHBlY3RFcnJvcihyZWdleCkgeworICAgICAgICAgICAgZ2V0QW5kQ2xlYXJT
ZXZlcmVFcnJvcnMoKS50aGVuKGZ1bmN0aW9uKGZpbHRlcmVkTG9nKSB7CisgICAgICAgICAgICAg
IHZhciBmb3VuZCA9IGZhbHNlOworICAgICAgICAgICAgICBmaWx0ZXJlZExvZy5mb3JFYWNoKGZ1
bmN0aW9uKGxvZykgeworICAgICAgICAgICAgICAgIGlmIChsb2cubWVzc2FnZS5tYXRjaChyZWdl
eCkpIHsKKyAgICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICBpZiAoIWZvdW5kKSB7CisgICAgICAg
ICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdleHBlY3RlZCBhbiBlcnJvciB0aGF0IG1hdGNoZXMg
JyArIHJlZ2V4KTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSk7CisgICAgICAgICAg
fQorCisgICAgICAgICAgYmVmb3JlRWFjaChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHV0aWwg
PSByZXF1aXJlKCd1dGlsJyk7CisgICAgICAgICAgICB3ZWJkcml2ZXIgPSByZXF1aXJlKCdwcm90
cmFjdG9yL25vZGVfbW9kdWxlcy9zZWxlbml1bS13ZWJkcml2ZXInKTsKKyAgICAgICAgICB9KTsK
KworICAgICAgICAgIC8vIEZvciBub3csIHdlIG9ubHkgdGVzdCBvbiBDaHJvbWUsCisgICAgICAg
ICAgLy8gYXMgU2FmYXJpIGRvZXMgbm90IGxvYWQgdGhlIHBhZ2Ugd2l0aCBQcm90cmFjdG9yJ3Mg
aW5qZWN0ZWQgc2NyaXB0cywKKyAgICAgICAgICAvLyBhbmQgRmlyZWZveCB3ZWJkcml2ZXIgYWx3
YXlzIGRpc2FibGVzIGNvbnRlbnQgc2VjdXJpdHkgcG9saWN5ICgjNjM1OCkKKyAgICAgICAgICBp
ZiAoYnJvd3Nlci5wYXJhbXMuYnJvd3NlciAhPT0gJ2Nocm9tZScpIHsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICB9CisKKyAgICAgICAgICBpdCgnc2hvdWxkIG5vdCByZXBvcnQgZXJy
b3JzIHdoZW4gdGhlIHBhZ2UgaXMgbG9hZGVkJywgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAv
LyBjbGVhciBlcnJvcnMgc28gd2UgYXJlIG5vdCBkZXBlbmRlbnQgb24gcHJldmlvdXMgdGVzdHMK
KyAgICAgICAgICAgIGNsZWFyRXJyb3JzKCk7CisgICAgICAgICAgICAvLyBOZWVkIHRvIHJlbG9h
ZCB0aGUgcGFnZSBhcyB0aGUgcGFnZSBpcyBhbHJlYWR5IGxvYWRlZCB3aGVuCisgICAgICAgICAg
ICAvLyB3ZSBjb21lIGhlcmUKKyAgICAgICAgICAgIGJyb3dzZXIuZHJpdmVyLmdldEN1cnJlbnRV
cmwoKS50aGVuKGZ1bmN0aW9uKHVybCkgeworICAgICAgICAgICAgICBicm93c2VyLmdldCh1cmwp
OworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBleHBlY3ROb0Vycm9ycygpOworICAgICAg
ICAgIH0pOworCisgICAgICAgICAgaXQoJ3Nob3VsZCBldmFsdWF0ZSBleHByZXNzaW9ucycsIGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgZXhwZWN0KGNvdW50ZXIuZ2V0VGV4dCgpKS50b0VxdWFs
KCcwJyk7CisgICAgICAgICAgICBpbmNCdG4uY2xpY2soKTsKKyAgICAgICAgICAgIGV4cGVjdChj
b3VudGVyLmdldFRleHQoKSkudG9FcXVhbCgnMScpOworICAgICAgICAgICAgZXhwZWN0Tm9FcnJv
cnMoKTsKKyAgICAgICAgICB9KTsKKworICAgICAgICAgIGl0KCdzaG91bGQgdGhyb3cgYW5kIHJl
cG9ydCBhbiBlcnJvciB3aGVuIHVzaW5nICJldmFsIicsIGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgZXZpbEJ0bi5jbGljaygpOworICAgICAgICAgICAgZXhwZWN0KGV2aWxFcnJvci5nZXRUZXh0
KCkpLnRvTWF0Y2goL0NvbnRlbnQgU2VjdXJpdHkgUG9saWN5Lyk7CisgICAgICAgICAgICBleHBl
Y3RFcnJvcigvQ29udGVudCBTZWN1cml0eSBQb2xpY3kvKTsKKyAgICAgICAgICB9KTsKKyAgICAg
ICAgPC9maWxlPgorICAgICAgPC9leGFtcGxlPgorICAqLworCisvLyBuZ0NzcCBpcyBub3QgaW1w
bGVtZW50ZWQgYXMgYSBwcm9wZXIgZGlyZWN0aXZlIGFueSBtb3JlLCBiZWNhdXNlIHdlIG5lZWQg
aXQgYmUgcHJvY2Vzc2VkIHdoaWxlIHdlCisvLyBib290c3RyYXAgdGhlIHN5c3RlbSAoYmVmb3Jl
ICRwYXJzZSBpcyBpbnN0YW50aWF0ZWQpLCBmb3IgdGhpcyByZWFzb24gd2UganVzdCBoYXZlCisv
LyB0aGUgY3NwLmlzQWN0aXZlKCkgZm4gdGhhdCBsb29rcyBmb3IgbmctY3NwIGF0dHJpYnV0ZSBh
bnl3aGVyZSBpbiB0aGUgY3VycmVudCBkb2MKKworLyoqCisgKiBAbmdkb2MgZGlyZWN0aXZlCisg
KiBAbmFtZSBuZ0NsaWNrCisgKgorICogQGRlc2NyaXB0aW9uCisgKiBUaGUgbmdDbGljayBkaXJl
Y3RpdmUgYWxsb3dzIHlvdSB0byBzcGVjaWZ5IGN1c3RvbSBiZWhhdmlvciB3aGVuCisgKiBhbiBl
bGVtZW50IGlzIGNsaWNrZWQuCisgKgorICogQGVsZW1lbnQgQU5ZCisgKiBAcHJpb3JpdHkgMAor
ICogQHBhcmFtIHtleHByZXNzaW9ufSBuZ0NsaWNrIHtAbGluayBndWlkZS9leHByZXNzaW9uIEV4
cHJlc3Npb259IHRvIGV2YWx1YXRlIHVwb24KKyAqIGNsaWNrLiAoe0BsaW5rIGd1aWRlL2V4cHJl
c3Npb24jLWV2ZW50LSBFdmVudCBvYmplY3QgaXMgYXZhaWxhYmxlIGFzIGAkZXZlbnRgfSkKKyAq
CisgKiBAZXhhbXBsZQorICAgPGV4YW1wbGU+CisgICAgIDxmaWxlIG5hbWU9ImluZGV4Lmh0bWwi
PgorICAgICAgPGJ1dHRvbiBuZy1jbGljaz0iY291bnQgPSBjb3VudCArIDEiIG5nLWluaXQ9ImNv
dW50PTAiPgorICAgICAgICBJbmNyZW1lbnQKKyAgICAgIDwvYnV0dG9uPgorICAgICAgPHNwYW4+
CisgICAgICAgIGNvdW50OiB7e2NvdW50fX0KKyAgICAgIDwvc3Bhbj4KKyAgICAgPC9maWxlPgor
ICAgICA8ZmlsZSBuYW1lPSJwcm90cmFjdG9yLmpzIiB0eXBlPSJwcm90cmFjdG9yIj4KKyAgICAg
ICBpdCgnc2hvdWxkIGNoZWNrIG5nLWNsaWNrJywgZnVuY3Rpb24oKSB7CisgICAgICAgICBleHBl
Y3QoZWxlbWVudChieS5iaW5kaW5nKCdjb3VudCcpKS5nZXRUZXh0KCkpLnRvTWF0Y2goJzAnKTsK
KyAgICAgICAgIGVsZW1lbnQoYnkuY3NzKCdidXR0b24nKSkuY2xpY2soKTsKKyAgICAgICAgIGV4
cGVjdChlbGVtZW50KGJ5LmJpbmRpbmcoJ2NvdW50JykpLmdldFRleHQoKSkudG9NYXRjaCgnMScp
OworICAgICAgIH0pOworICAgICA8L2ZpbGU+CisgICA8L2V4YW1wbGU+CisgKi8KKy8qCisgKiBB
IGNvbGxlY3Rpb24gb2YgZGlyZWN0aXZlcyB0aGF0IGFsbG93cyBjcmVhdGlvbiBvZiBjdXN0b20g
ZXZlbnQgaGFuZGxlcnMgdGhhdCBhcmUgZGVmaW5lZCBhcworICogYW5ndWxhciBleHByZXNzaW9u
cyBhbmQgYXJlIGNvbXBpbGVkIGFuZCBleGVjdXRlZCB3aXRoaW4gdGhlIGN1cnJlbnQgc2NvcGUu
CisgKi8KK3ZhciBuZ0V2ZW50RGlyZWN0aXZlcyA9IHt9OworCisvLyBGb3IgZXZlbnRzIHRoYXQg
bWlnaHQgZmlyZSBzeW5jaHJvbm91c2x5IGR1cmluZyBET00gbWFuaXB1bGF0aW9uCisvLyB3ZSBu
ZWVkIHRvIGV4ZWN1dGUgdGhlaXIgZXZlbnQgaGFuZGxlcnMgYXN5bmNocm9ub3VzbHkgdXNpbmcg
JGV2YWxBc3luYywKKy8vIHNvIHRoYXQgdGhleSBhcmUgbm90IGV4ZWN1dGVkIGluIGFuIGluY29u
c2lzdGVudCBzdGF0ZS4KK3ZhciBmb3JjZUFzeW5jRXZlbnRzID0geworICAnYmx1cic6IHRydWUs
CisgICdmb2N1cyc6IHRydWUKK307Citmb3JFYWNoKAorICAnY2xpY2sgZGJsY2xpY2sgbW91c2Vk
b3duIG1vdXNldXAgbW91c2VvdmVyIG1vdXNlb3V0IG1vdXNlbW92ZSBtb3VzZWVudGVyIG1vdXNl
bGVhdmUga2V5ZG93biBrZXl1cCBrZXlwcmVzcyBzdWJtaXQgZm9jdXMgYmx1ciBjb3B5IGN1dCBw
YXN0ZScuc3BsaXQoJyAnKSwKKyAgZnVuY3Rpb24oZXZlbnROYW1lKSB7CisgICAgdmFyIGRpcmVj
dGl2ZU5hbWUgPSBkaXJlY3RpdmVOb3JtYWxpemUoJ25nLScgKyBldmVudE5hbWUpOworICAgIG5n
RXZlbnREaXJlY3RpdmVzW2RpcmVjdGl2ZU5hbWVdID0gWyckcGFyc2UnLCAnJHJvb3RTY29wZScs
IGZ1bmN0aW9uKCRwYXJzZSwgJHJvb3RTY29wZSkgeworICAgICAgcmV0dXJuIHsKKyAgICAgICAg
cmVzdHJpY3Q6ICdBJywKKyAgICAgICAgY29tcGlsZTogZnVuY3Rpb24oJGVsZW1lbnQsIGF0dHIp
IHsKKyAgICAgICAgICAvLyBXZSBleHBvc2UgdGhlIHBvd2VyZnVsICRldmVudCBvYmplY3Qgb24g
dGhlIHNjb3BlIHRoYXQgcHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBXaW5kb3csCisgICAgICAgICAg
Ly8gZXRjLiB0aGF0IGlzbid0IHByb3RlY3RlZCBieSB0aGUgZmFzdCBwYXRocyBpbiAkcGFyc2Uu
ICBXZSBleHBsaWNpdGx5IHJlcXVlc3QgYmV0dGVyCisgICAgICAgICAgLy8gY2hlY2tzIGF0IHRo
ZSBjb3N0IG9mIHNwZWVkIHNpbmNlIGV2ZW50IGhhbmRsZXIgZXhwcmVzc2lvbnMgYXJlIG5vdCBl
eGVjdXRlZCBhcworICAgICAgICAgIC8vIGZyZXF1ZW50bHkgYXMgcmVndWxhciBjaGFuZ2UgZGV0
ZWN0aW9uLgorICAgICAgICAgIHZhciBmbiA9ICRwYXJzZShhdHRyW2RpcmVjdGl2ZU5hbWVdLCAv
KiBpbnRlcmNlcHRvckZuICovIG51bGwsIC8qIGV4cGVuc2l2ZUNoZWNrcyAqLyB0cnVlKTsKKyAg
ICAgICAgICByZXR1cm4gZnVuY3Rpb24gbmdFdmVudEhhbmRsZXIoc2NvcGUsIGVsZW1lbnQpIHsK
KyAgICAgICAgICAgIGVsZW1lbnQub24oZXZlbnROYW1lLCBmdW5jdGlvbihldmVudCkgeworICAg
ICAgICAgICAgICB2YXIgY2FsbGJhY2sgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBm
bihzY29wZSwgeyRldmVudDpldmVudH0pOworICAgICAgICAgICAgICB9OworICAgICAgICAgICAg
ICBpZiAoZm9yY2VBc3luY0V2ZW50c1tldmVudE5hbWVdICYmICRyb290U2NvcGUuJCRwaGFzZSkg
eworICAgICAgICAgICAgICAgIHNjb3BlLiRldmFsQXN5bmMoY2FsbGJhY2spOworICAgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHNjb3BlLiRhcHBseShjYWxsYmFjayk7Cisg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0pOworICAgICAgICAgIH07CisgICAgICAgIH0K
KyAgICAgIH07CisgICAgfV07CisgIH0KKyk7CisKKy8qKgorICogQG5nZG9jIGRpcmVjdGl2ZQor
ICogQG5hbWUgbmdEYmxjbGljaworICoKKyAqIEBkZXNjcmlwdGlvbgorICogVGhlIGBuZ0RibGNs
aWNrYCBkaXJlY3RpdmUgYWxsb3dzIHlvdSB0byBzcGVjaWZ5IGN1c3RvbSBiZWhhdmlvciBvbiBh
IGRibGNsaWNrIGV2ZW50LgorICoKKyAqIEBlbGVtZW50IEFOWQorICogQHByaW9yaXR5IDAKKyAq
IEBwYXJhbSB7ZXhwcmVzc2lvbn0gbmdEYmxjbGljayB7QGxpbmsgZ3VpZGUvZXhwcmVzc2lvbiBF
eHByZXNzaW9ufSB0byBldmFsdWF0ZSB1cG9uCisgKiBhIGRibGNsaWNrLiAoVGhlIEV2ZW50IG9i
amVjdCBpcyBhdmFpbGFibGUgYXMgYCRldmVudGApCisgKgorICogQGV4YW1wbGUKKyAgIDxleGFt
cGxlPgorICAgICA8ZmlsZSBuYW1lPSJpbmRleC5odG1sIj4KKyAgICAgIDxidXR0b24gbmctZGJs
Y2xpY2s9ImNvdW50ID0gY291bnQgKyAxIiBuZy1pbml0PSJjb3VudD0wIj4KKyAgICAgICAgSW5j
cmVtZW50IChvbiBkb3VibGUgY2xpY2spCisgICAgICA8L2J1dHRvbj4KKyAgICAgIGNvdW50OiB7
e2NvdW50fX0KKyAgICAgPC9maWxlPgorICAgPC9leGFtcGxlPgorICovCisKKworLyoqCisgKiBA
bmdkb2MgZGlyZWN0aXZlCisgKiBAbmFtZSBuZ01vdXNlZG93bgorICoKKyAqIEBkZXNjcmlwdGlv
bgorICogVGhlIG5nTW91c2Vkb3duIGRpcmVjdGl2ZSBhbGxvd3MgeW91IHRvIHNwZWNpZnkgY3Vz
dG9tIGJlaGF2aW9yIG9uIG1vdXNlZG93biBldmVudC4KKyAqCisgKiBAZWxlbWVudCBBTlkKKyAq
IEBwcmlvcml0eSAwCisgKiBAcGFyYW0ge2V4cHJlc3Npb259IG5nTW91c2Vkb3duIHtAbGluayBn
dWlkZS9leHByZXNzaW9uIEV4cHJlc3Npb259IHRvIGV2YWx1YXRlIHVwb24KKyAqIG1vdXNlZG93
bi4gKHtAbGluayBndWlkZS9leHByZXNzaW9uIy1ldmVudC0gRXZlbnQgb2JqZWN0IGlzIGF2YWls
YWJsZSBhcyBgJGV2ZW50YH0pCisgKgorICogQGV4YW1wbGUKKyAgIDxleGFtcGxlPgorICAgICA8
ZmlsZSBuYW1lPSJpbmRleC5odG1sIj4KKyAgICAgIDxidXR0b24gbmctbW91c2Vkb3duPSJjb3Vu
dCA9IGNvdW50ICsgMSIgbmctaW5pdD0iY291bnQ9MCI+CisgICAgICAgIEluY3JlbWVudCAob24g
bW91c2UgZG93bikKKyAgICAgIDwvYnV0dG9uPgorICAgICAgY291bnQ6IHt7Y291bnR9fQorICAg
ICA8L2ZpbGU+CisgICA8L2V4YW1wbGU+CisgKi8KKworCisvKioKKyAqIEBuZ2RvYyBkaXJlY3Rp
dmUKKyAqIEBuYW1lIG5nTW91c2V1cAorICoKKyAqIEBkZXNjcmlwdGlvbgorICogU3BlY2lmeSBj
dXN0b20gYmVoYXZpb3Igb24gbW91c2V1cCBldmVudC4KKyAqCisgKiBAZWxlbWVudCBBTlkKKyAq
IEBwcmlvcml0eSAwCisgKiBAcGFyYW0ge2V4cHJlc3Npb259IG5nTW91c2V1cCB7QGxpbmsgZ3Vp
ZGUvZXhwcmVzc2lvbiBFeHByZXNzaW9ufSB0byBldmFsdWF0ZSB1cG9uCisgKiBtb3VzZXVwLiAo
e0BsaW5rIGd1aWRlL2V4cHJlc3Npb24jLWV2ZW50LSBFdmVudCBvYmplY3QgaXMgYXZhaWxhYmxl
IGFzIGAkZXZlbnRgfSkKKyAqCisgKiBAZXhhbXBsZQorICAgPGV4YW1wbGU+CisgICAgIDxmaWxl
IG5hbWU9ImluZGV4Lmh0bWwiPgorICAgICAgPGJ1dHRvbiBuZy1tb3VzZXVwPSJjb3VudCA9IGNv
dW50ICsgMSIgbmctaW5pdD0iY291bnQ9MCI+CisgICAgICAgIEluY3JlbWVudCAob24gbW91c2Ug
dXApCisgICAgICA8L2J1dHRvbj4KKyAgICAgIGNvdW50OiB7e2NvdW50fX0KKyAgICAgPC9maWxl
PgorICAgPC9leGFtcGxlPgorICovCisKKy8qKgorICogQG5nZG9jIGRpcmVjdGl2ZQorICogQG5h
bWUgbmdNb3VzZW92ZXIKKyAqCisgKiBAZGVzY3JpcHRpb24KKyAqIFNwZWNpZnkgY3VzdG9tIGJl
aGF2aW9yIG9uIG1vdXNlb3ZlciBldmVudC4KKyAqCisgKiBAZWxlbWVudCBBTlkKKyAqIEBwcmlv
cml0eSAwCisgKiBAcGFyYW0ge2V4cHJlc3Npb259IG5nTW91c2VvdmVyIHtAbGluayBndWlkZS9l
eHByZXNzaW9uIEV4cHJlc3Npb259IHRvIGV2YWx1YXRlIHVwb24KKyAqIG1vdXNlb3Zlci4gKHtA
bGluayBndWlkZS9leHByZXNzaW9uIy1ldmVudC0gRXZlbnQgb2JqZWN0IGlzIGF2YWlsYWJsZSBh
cyBgJGV2ZW50YH0pCisgKgorICogQGV4YW1wbGUKKyAgIDxleGFtcGxlPgorICAgICA8ZmlsZSBu
YW1lPSJpbmRleC5odG1sIj4KKyAgICAgIDxidXR0b24gbmctbW91c2VvdmVyPSJjb3VudCA9IGNv
dW50ICsgMSIgbmctaW5pdD0iY291bnQ9MCI+CisgICAgICAgIEluY3JlbWVudCAod2hlbiBtb3Vz
ZSBpcyBvdmVyKQorICAgICAgPC9idXR0b24+CisgICAgICBjb3VudDoge3tjb3VudH19CisgICAg
IDwvZmlsZT4KKyAgIDwvZXhhbXBsZT4KKyAqLworCisKKy8qKgorICogQG5nZG9jIGRpcmVjdGl2
ZQorICogQG5hbWUgbmdNb3VzZWVudGVyCisgKgorICogQGRlc2NyaXB0aW9uCisgKiBTcGVjaWZ5
IGN1c3RvbSBiZWhhdmlvciBvbiBtb3VzZWVudGVyIGV2ZW50LgorICoKKyAqIEBlbGVtZW50IEFO
WQorICogQHByaW9yaXR5IDAKKyAqIEBwYXJhbSB7ZXhwcmVzc2lvbn0gbmdNb3VzZWVudGVyIHtA
bGluayBndWlkZS9leHByZXNzaW9uIEV4cHJlc3Npb259IHRvIGV2YWx1YXRlIHVwb24KKyAqIG1v
dXNlZW50ZXIuICh7QGxpbmsgZ3VpZGUvZXhwcmVzc2lvbiMtZXZlbnQtIEV2ZW50IG9iamVjdCBp
cyBhdmFpbGFibGUgYXMgYCRldmVudGB9KQorICoKKyAqIEBleGFtcGxlCisgICA8ZXhhbXBsZT4K
KyAgICAgPGZpbGUgbmFtZT0iaW5kZXguaHRtbCI+CisgICAgICA8YnV0dG9uIG5nLW1vdXNlZW50
ZXI9ImNvdW50ID0gY291bnQgKyAxIiBuZy1pbml0PSJjb3VudD0wIj4KKyAgICAgICAgSW5jcmVt
ZW50ICh3aGVuIG1vdXNlIGVudGVycykKKyAgICAgIDwvYnV0dG9uPgorICAgICAgY291bnQ6IHt7
Y291bnR9fQorICAgICA8L2ZpbGU+CisgICA8L2V4YW1wbGU+CisgKi8KKworCisvKioKKyAqIEBu
Z2RvYyBkaXJlY3RpdmUKKyAqIEBuYW1lIG5nTW91c2VsZWF2ZQorICoKKyAqIEBkZXNjcmlwdGlv
bgorICogU3BlY2lmeSBjdXN0b20gYmVoYXZpb3Igb24gbW91c2VsZWF2ZSBldmVudC4KKyAqCisg
KiBAZWxlbWVudCBBTlkKKyAqIEBwcmlvcml0eSAwCisgKiBAcGFyYW0ge2V4cHJlc3Npb259IG5n
TW91c2VsZWF2ZSB7QGxpbmsgZ3VpZGUvZXhwcmVzc2lvbiBFeHByZXNzaW9ufSB0byBldmFsdWF0
ZSB1cG9uCisgKiBtb3VzZWxlYXZlLiAoe0BsaW5rIGd1aWRlL2V4cHJlc3Npb24jLWV2ZW50LSBF
dmVudCBvYmplY3QgaXMgYXZhaWxhYmxlIGFzIGAkZXZlbnRgfSkKKyAqCisgKiBAZXhhbXBsZQor
ICAgPGV4YW1wbGU+CisgICAgIDxmaWxlIG5hbWU9ImluZGV4Lmh0bWwiPgorICAgICAgPGJ1dHRv
biBuZy1tb3VzZWxlYXZlPSJjb3VudCA9IGNvdW50ICsgMSIgbmctaW5pdD0iY291bnQ9MCI+Cisg
ICAgICAgIEluY3JlbWVudCAod2hlbiBtb3VzZSBsZWF2ZXMpCisgICAgICA8L2J1dHRvbj4KKyAg
ICAgIGNvdW50OiB7e2NvdW50fX0KKyAgICAgPC9maWxlPgorICAgPC9leGFtcGxlPgorICovCisK
KworLyoqCisgKiBAbmdkb2MgZGlyZWN0aXZlCisgKiBAbmFtZSBuZ01vdXNlbW92ZQorICoKKyAq
IEBkZXNjcmlwdGlvbgorICogU3BlY2lmeSBjdXN0b20gYmVoYXZpb3Igb24gbW91c2Vtb3ZlIGV2
ZW50LgorICoKKyAqIEBlbGVtZW50IEFOWQorICogQHByaW9yaXR5IDAKKyAqIEBwYXJhbSB7ZXhw
cmVzc2lvbn0gbmdNb3VzZW1vdmUge0BsaW5rIGd1aWRlL2V4cHJlc3Npb24gRXhwcmVzc2lvbn0g
dG8gZXZhbHVhdGUgdXBvbgorICogbW91c2Vtb3ZlLiAoe0BsaW5rIGd1aWRlL2V4cHJlc3Npb24j
LWV2ZW50LSBFdmVudCBvYmplY3QgaXMgYXZhaWxhYmxlIGFzIGAkZXZlbnRgfSkKKyAqCisgKiBA
ZXhhbXBsZQorICAgPGV4YW1wbGU+CisgICAgIDxmaWxlIG5hbWU9ImluZGV4Lmh0bWwiPgorICAg
ICAgPGJ1dHRvbiBuZy1tb3VzZW1vdmU9ImNvdW50ID0gY291bnQgKyAxIiBuZy1pbml0PSJjb3Vu
dD0wIj4KKyAgICAgICAgSW5jcmVtZW50ICh3aGVuIG1vdXNlIG1vdmVzKQorICAgICAgPC9idXR0
b24+CisgICAgICBjb3VudDoge3tjb3VudH19CisgICAgIDwvZmlsZT4KKyAgIDwvZXhhbXBsZT4K
KyAqLworCisKKy8qKgorICogQG5nZG9jIGRpcmVjdGl2ZQorICogQG5hbWUgbmdLZXlkb3duCisg
KgorICogQGRlc2NyaXB0aW9uCisgKiBTcGVjaWZ5IGN1c3RvbSBiZWhhdmlvciBvbiBrZXlkb3du
IGV2ZW50LgorICoKKyAqIEBlbGVtZW50IEFOWQorICogQHByaW9yaXR5IDAKKyAqIEBwYXJhbSB7
ZXhwcmVzc2lvbn0gbmdLZXlkb3duIHtAbGluayBndWlkZS9leHByZXNzaW9uIEV4cHJlc3Npb259
IHRvIGV2YWx1YXRlIHVwb24KKyAqIGtleWRvd24uIChFdmVudCBvYmplY3QgaXMgYXZhaWxhYmxl
IGFzIGAkZXZlbnRgIGFuZCBjYW4gYmUgaW50ZXJyb2dhdGVkIGZvciBrZXlDb2RlLCBhbHRLZXks
IGV0Yy4pCisgKgorICogQGV4YW1wbGUKKyAgIDxleGFtcGxlPgorICAgICA8ZmlsZSBuYW1lPSJp
bmRleC5odG1sIj4KKyAgICAgIDxpbnB1dCBuZy1rZXlkb3duPSJjb3VudCA9IGNvdW50ICsgMSIg
bmctaW5pdD0iY291bnQ9MCI+CisgICAgICBrZXkgZG93biBjb3VudDoge3tjb3VudH19CisgICAg
IDwvZmlsZT4KKyAgIDwvZXhhbXBsZT4KKyAqLworCisKKy8qKgorICogQG5nZG9jIGRpcmVjdGl2
ZQorICogQG5hbWUgbmdLZXl1cAorICoKKyAqIEBkZXNjcmlwdGlvbgorICogU3BlY2lmeSBjdXN0
b20gYmVoYXZpb3Igb24ga2V5dXAgZXZlbnQuCisgKgorICogQGVsZW1lbnQgQU5ZCisgKiBAcHJp
b3JpdHkgMAorICogQHBhcmFtIHtleHByZXNzaW9ufSBuZ0tleXVwIHtAbGluayBndWlkZS9leHBy
ZXNzaW9uIEV4cHJlc3Npb259IHRvIGV2YWx1YXRlIHVwb24KKyAqIGtleXVwLiAoRXZlbnQgb2Jq
ZWN0IGlzIGF2YWlsYWJsZSBhcyBgJGV2ZW50YCBhbmQgY2FuIGJlIGludGVycm9nYXRlZCBmb3Ig
a2V5Q29kZSwgYWx0S2V5LCBldGMuKQorICoKKyAqIEBleGFtcGxlCisgICA8ZXhhbXBsZT4KKyAg
ICAgPGZpbGUgbmFtZT0iaW5kZXguaHRtbCI+CisgICAgICAgPHA+VHlwaW5nIGluIHRoZSBpbnB1
dCBib3ggYmVsb3cgdXBkYXRlcyB0aGUga2V5IGNvdW50PC9wPgorICAgICAgIDxpbnB1dCBuZy1r
ZXl1cD0iY291bnQgPSBjb3VudCArIDEiIG5nLWluaXQ9ImNvdW50PTAiPiBrZXkgdXAgY291bnQ6
IHt7Y291bnR9fQorCisgICAgICAgPHA+VHlwaW5nIGluIHRoZSBpbnB1dCBib3ggYmVsb3cgdXBk
YXRlcyB0aGUga2V5Y29kZTwvcD4KKyAgICAgICA8aW5wdXQgbmcta2V5dXA9ImV2ZW50PSRldmVu
dCI+CisgICAgICAgPHA+ZXZlbnQga2V5Q29kZToge3sgZXZlbnQua2V5Q29kZSB9fTwvcD4KKyAg
ICAgICA8cD5ldmVudCBhbHRLZXk6IHt7IGV2ZW50LmFsdEtleSB9fTwvcD4KKyAgICAgPC9maWxl
PgorICAgPC9leGFtcGxlPgorICovCisKKworLyoqCisgKiBAbmdkb2MgZGlyZWN0aXZlCisgKiBA
bmFtZSBuZ0tleXByZXNzCisgKgorICogQGRlc2NyaXB0aW9uCisgKiBTcGVjaWZ5IGN1c3RvbSBi
ZWhhdmlvciBvbiBrZXlwcmVzcyBldmVudC4KKyAqCisgKiBAZWxlbWVudCBBTlkKKyAqIEBwYXJh
bSB7ZXhwcmVzc2lvbn0gbmdLZXlwcmVzcyB7QGxpbmsgZ3VpZGUvZXhwcmVzc2lvbiBFeHByZXNz
aW9ufSB0byBldmFsdWF0ZSB1cG9uCisgKiBrZXlwcmVzcy4gKHtAbGluayBndWlkZS9leHByZXNz
aW9uIy1ldmVudC0gRXZlbnQgb2JqZWN0IGlzIGF2YWlsYWJsZSBhcyBgJGV2ZW50YH0KKyAqIGFu
ZCBjYW4gYmUgaW50ZXJyb2dhdGVkIGZvciBrZXlDb2RlLCBhbHRLZXksIGV0Yy4pCisgKgorICog
QGV4YW1wbGUKKyAgIDxleGFtcGxlPgorICAgICA8ZmlsZSBuYW1lPSJpbmRleC5odG1sIj4KKyAg
ICAgIDxpbnB1dCBuZy1rZXlwcmVzcz0iY291bnQgPSBjb3VudCArIDEiIG5nLWluaXQ9ImNvdW50
PTAiPgorICAgICAga2V5IHByZXNzIGNvdW50OiB7e2NvdW50fX0KKyAgICAgPC9maWxlPgorICAg
PC9leGFtcGxlPgorICovCisKKworLyoqCisgKiBAbmdkb2MgZGlyZWN0aXZlCisgKiBAbmFtZSBu
Z1N1Ym1pdAorICoKKyAqIEBkZXNjcmlwdGlvbgorICogRW5hYmxlcyBiaW5kaW5nIGFuZ3VsYXIg
ZXhwcmVzc2lvbnMgdG8gb25zdWJtaXQgZXZlbnRzLgorICoKKyAqIEFkZGl0aW9uYWxseSBpdCBw
cmV2ZW50cyB0aGUgZGVmYXVsdCBhY3Rpb24gKHdoaWNoIGZvciBmb3JtIG1lYW5zIHNlbmRpbmcg
dGhlIHJlcXVlc3QgdG8gdGhlCisgKiBzZXJ2ZXIgYW5kIHJlbG9hZGluZyB0aGUgY3VycmVudCBw
YWdlKSwgYnV0IG9ubHkgaWYgdGhlIGZvcm0gZG9lcyBub3QgY29udGFpbiBgYWN0aW9uYCwKKyAq
IGBkYXRhLWFjdGlvbmAsIG9yIGB4LWFjdGlvbmAgYXR0cmlidXRlcy4KKyAqCisgKiA8ZGl2IGNs
YXNzPSJhbGVydCBhbGVydC13YXJuaW5nIj4KKyAqICoqV2FybmluZzoqKiBCZSBjYXJlZnVsIG5v
dCB0byBjYXVzZSAiZG91YmxlLXN1Ym1pc3Npb24iIGJ5IHVzaW5nIGJvdGggdGhlIGBuZ0NsaWNr
YCBhbmQKKyAqIGBuZ1N1Ym1pdGAgaGFuZGxlcnMgdG9nZXRoZXIuIFNlZSB0aGUKKyAqIHtAbGlu
ayBmb3JtI3N1Ym1pdHRpbmctYS1mb3JtLWFuZC1wcmV2ZW50aW5nLXRoZS1kZWZhdWx0LWFjdGlv
biBgZm9ybWAgZGlyZWN0aXZlIGRvY3VtZW50YXRpb259CisgKiBmb3IgYSBkZXRhaWxlZCBkaXNj
dXNzaW9uIG9mIHdoZW4gYG5nU3VibWl0YCBtYXkgYmUgdHJpZ2dlcmVkLgorICogPC9kaXY+Cisg
KgorICogQGVsZW1lbnQgZm9ybQorICogQHByaW9yaXR5IDAKKyAqIEBwYXJhbSB7ZXhwcmVzc2lv
bn0gbmdTdWJtaXQge0BsaW5rIGd1aWRlL2V4cHJlc3Npb24gRXhwcmVzc2lvbn0gdG8gZXZhbC4K
KyAqICh7QGxpbmsgZ3VpZGUvZXhwcmVzc2lvbiMtZXZlbnQtIEV2ZW50IG9iamVjdCBpcyBhdmFp
bGFibGUgYXMgYCRldmVudGB9KQorICoKKyAqIEBleGFtcGxlCisgICA8ZXhhbXBsZSBtb2R1bGU9
InN1Ym1pdEV4YW1wbGUiPgorICAgICA8ZmlsZSBuYW1lPSJpbmRleC5odG1sIj4KKyAgICAgIDxz
Y3JpcHQ+CisgICAgICAgIGFuZ3VsYXIubW9kdWxlKCdzdWJtaXRFeGFtcGxlJywgW10pCisgICAg
ICAgICAgLmNvbnRyb2xsZXIoJ0V4YW1wbGVDb250cm9sbGVyJywgWyckc2NvcGUnLCBmdW5jdGlv
bigkc2NvcGUpIHsKKyAgICAgICAgICAgICRzY29wZS5saXN0ID0gW107CisgICAgICAgICAgICAk
c2NvcGUudGV4dCA9ICdoZWxsbyc7CisgICAgICAgICAgICAkc2NvcGUuc3VibWl0ID0gZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICAgIGlmICgkc2NvcGUudGV4dCkgeworICAgICAgICAgICAgICAg
ICRzY29wZS5saXN0LnB1c2godGhpcy50ZXh0KTsKKyAgICAgICAgICAgICAgICAkc2NvcGUudGV4
dCA9ICcnOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9OworICAgICAgICAgIH1dKTsK
KyAgICAgIDwvc2NyaXB0PgorICAgICAgPGZvcm0gbmctc3VibWl0PSJzdWJtaXQoKSIgbmctY29u
dHJvbGxlcj0iRXhhbXBsZUNvbnRyb2xsZXIiPgorICAgICAgICBFbnRlciB0ZXh0IGFuZCBoaXQg
ZW50ZXI6CisgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuZy1tb2RlbD0idGV4dCIgbmFtZT0i
dGV4dCIgLz4KKyAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgaWQ9InN1Ym1pdCIgdmFsdWU9
IlN1Ym1pdCIgLz4KKyAgICAgICAgPHByZT5saXN0PXt7bGlzdH19PC9wcmU+CisgICAgICA8L2Zv
cm0+CisgICAgIDwvZmlsZT4KKyAgICAgPGZpbGUgbmFtZT0icHJvdHJhY3Rvci5qcyIgdHlwZT0i
cHJvdHJhY3RvciI+CisgICAgICAgaXQoJ3Nob3VsZCBjaGVjayBuZy1zdWJtaXQnLCBmdW5jdGlv
bigpIHsKKyAgICAgICAgIGV4cGVjdChlbGVtZW50KGJ5LmJpbmRpbmcoJ2xpc3QnKSkuZ2V0VGV4
dCgpKS50b0JlKCdsaXN0PVtdJyk7CisgICAgICAgICBlbGVtZW50KGJ5LmNzcygnI3N1Ym1pdCcp
KS5jbGljaygpOworICAgICAgICAgZXhwZWN0KGVsZW1lbnQoYnkuYmluZGluZygnbGlzdCcpKS5n
ZXRUZXh0KCkpLnRvQ29udGFpbignaGVsbG8nKTsKKyAgICAgICAgIGV4cGVjdChlbGVtZW50KGJ5
Lm1vZGVsKCd0ZXh0JykpLmdldEF0dHJpYnV0ZSgndmFsdWUnKSkudG9CZSgnJyk7CisgICAgICAg
fSk7CisgICAgICAgaXQoJ3Nob3VsZCBpZ25vcmUgZW1wdHkgc3RyaW5ncycsIGZ1bmN0aW9uKCkg
eworICAgICAgICAgZXhwZWN0KGVsZW1lbnQoYnkuYmluZGluZygnbGlzdCcpKS5nZXRUZXh0KCkp
LnRvQmUoJ2xpc3Q9W10nKTsKKyAgICAgICAgIGVsZW1lbnQoYnkuY3NzKCcjc3VibWl0JykpLmNs
aWNrKCk7CisgICAgICAgICBlbGVtZW50KGJ5LmNzcygnI3N1Ym1pdCcpKS5jbGljaygpOworICAg
ICAgICAgZXhwZWN0KGVsZW1lbnQoYnkuYmluZGluZygnbGlzdCcpKS5nZXRUZXh0KCkpLnRvQ29u
dGFpbignaGVsbG8nKTsKKyAgICAgICAgfSk7CisgICAgIDwvZmlsZT4KKyAgIDwvZXhhbXBsZT4K
KyAqLworCisvKioKKyAqIEBuZ2RvYyBkaXJlY3RpdmUKKyAqIEBuYW1lIG5nRm9jdXMKKyAqCisg
KiBAZGVzY3JpcHRpb24KKyAqIFNwZWNpZnkgY3VzdG9tIGJlaGF2aW9yIG9uIGZvY3VzIGV2ZW50
LgorICoKKyAqIE5vdGU6IEFzIHRoZSBgZm9jdXNgIGV2ZW50IGlzIGV4ZWN1dGVkIHN5bmNocm9u
b3VzbHkgd2hlbiBjYWxsaW5nIGBpbnB1dC5mb2N1cygpYAorICogQW5ndWxhckpTIGV4ZWN1dGVz
IHRoZSBleHByZXNzaW9uIHVzaW5nIGBzY29wZS4kZXZhbEFzeW5jYCBpZiB0aGUgZXZlbnQgaXMg
ZmlyZWQKKyAqIGR1cmluZyBhbiBgJGFwcGx5YCB0byBlbnN1cmUgYSBjb25zaXN0ZW50IHN0YXRl
LgorICoKKyAqIEBlbGVtZW50IHdpbmRvdywgaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEsIGEKKyAq
IEBwcmlvcml0eSAwCisgKiBAcGFyYW0ge2V4cHJlc3Npb259IG5nRm9jdXMge0BsaW5rIGd1aWRl
L2V4cHJlc3Npb24gRXhwcmVzc2lvbn0gdG8gZXZhbHVhdGUgdXBvbgorICogZm9jdXMuICh7QGxp
bmsgZ3VpZGUvZXhwcmVzc2lvbiMtZXZlbnQtIEV2ZW50IG9iamVjdCBpcyBhdmFpbGFibGUgYXMg
YCRldmVudGB9KQorICoKKyAqIEBleGFtcGxlCisgKiBTZWUge0BsaW5rIG5nLmRpcmVjdGl2ZTpu
Z0NsaWNrIG5nQ2xpY2t9CisgKi8KKworLyoqCisgKiBAbmdkb2MgZGlyZWN0aXZlCisgKiBAbmFt
ZSBuZ0JsdXIKKyAqCisgKiBAZGVzY3JpcHRpb24KKyAqIFNwZWNpZnkgY3VzdG9tIGJlaGF2aW9y
IG9uIGJsdXIgZXZlbnQuCisgKgorICogQSBbYmx1ciBldmVudF0oaHR0cHM6Ly9kZXZlbG9wZXIu
bW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvRXZlbnRzL2JsdXIpIGZpcmVzIHdoZW4KKyAqIGFu
IGVsZW1lbnQgaGFzIGxvc3QgZm9jdXMuCisgKgorICogTm90ZTogQXMgdGhlIGBibHVyYCBldmVu
dCBpcyBleGVjdXRlZCBzeW5jaHJvbm91c2x5IGFsc28gZHVyaW5nIERPTSBtYW5pcHVsYXRpb25z
CisgKiAoZS5nLiByZW1vdmluZyBhIGZvY3Vzc2VkIGlucHV0KSwKKyAqIEFuZ3VsYXJKUyBleGVj
dXRlcyB0aGUgZXhwcmVzc2lvbiB1c2luZyBgc2NvcGUuJGV2YWxBc3luY2AgaWYgdGhlIGV2ZW50
IGlzIGZpcmVkCisgKiBkdXJpbmcgYW4gYCRhcHBseWAgdG8gZW5zdXJlIGEgY29uc2lzdGVudCBz
dGF0ZS4KKyAqCisgKiBAZWxlbWVudCB3aW5kb3csIGlucHV0LCBzZWxlY3QsIHRleHRhcmVhLCBh
CisgKiBAcHJpb3JpdHkgMAorICogQHBhcmFtIHtleHByZXNzaW9ufSBuZ0JsdXIge0BsaW5rIGd1
aWRlL2V4cHJlc3Npb24gRXhwcmVzc2lvbn0gdG8gZXZhbHVhdGUgdXBvbgorICogYmx1ci4gKHtA
bGluayBndWlkZS9leHByZXNzaW9uIy1ldmVudC0gRXZlbnQgb2JqZWN0IGlzIGF2YWlsYWJsZSBh
cyBgJGV2ZW50YH0pCisgKgorICogQGV4YW1wbGUKKyAqIFNlZSB7QGxpbmsgbmcuZGlyZWN0aXZl
Om5nQ2xpY2sgbmdDbGlja30KKyAqLworCisvKioKKyAqIEBuZ2RvYyBkaXJlY3RpdmUKKyAqIEBu
YW1lIG5nQ29weQorICoKKyAqIEBkZXNjcmlwdGlvbgorICogU3BlY2lmeSBjdXN0b20gYmVoYXZp
b3Igb24gY29weSBldmVudC4KKyAqCisgKiBAZWxlbWVudCB3aW5kb3csIGlucHV0LCBzZWxlY3Qs
IHRleHRhcmVhLCBhCisgKiBAcHJpb3JpdHkgMAorICogQHBhcmFtIHtleHByZXNzaW9ufSBuZ0Nv
cHkge0BsaW5rIGd1aWRlL2V4cHJlc3Npb24gRXhwcmVzc2lvbn0gdG8gZXZhbHVhdGUgdXBvbgor
ICogY29weS4gKHtAbGluayBndWlkZS9leHByZXNzaW9uIy1ldmVudC0gRXZlbnQgb2JqZWN0IGlz
IGF2YWlsYWJsZSBhcyBgJGV2ZW50YH0pCisgKgorICogQGV4YW1wbGUKKyAgIDxleGFtcGxlPgor
ICAgICA8ZmlsZSBuYW1lPSJpbmRleC5odG1sIj4KKyAgICAgIDxpbnB1dCBuZy1jb3B5PSJjb3Bp
ZWQ9dHJ1ZSIgbmctaW5pdD0iY29waWVkPWZhbHNlOyB2YWx1ZT0nY29weSBtZSciIG5nLW1vZGVs
PSJ2YWx1ZSI+CisgICAgICBjb3BpZWQ6IHt7Y29waWVkfX0KKyAgICAgPC9maWxlPgorICAgPC9l
eGFtcGxlPgorICovCisKKy8qKgorICogQG5nZG9jIGRpcmVjdGl2ZQorICogQG5hbWUgbmdDdXQK
KyAqCisgKiBAZGVzY3JpcHRpb24KKyAqIFNwZWNpZnkgY3VzdG9tIGJlaGF2aW9yIG9uIGN1dCBl
dmVudC4KKyAqCisgKiBAZWxlbWVudCB3aW5kb3csIGlucHV0LCBzZWxlY3QsIHRleHRhcmVhLCBh
CisgKiBAcHJpb3JpdHkgMAorICogQHBhcmFtIHtleHByZXNzaW9ufSBuZ0N1dCB7QGxpbmsgZ3Vp
ZGUvZXhwcmVzc2lvbiBFeHByZXNzaW9ufSB0byBldmFsdWF0ZSB1cG9uCisgKiBjdXQuICh7QGxp
bmsgZ3VpZGUvZXhwcmVzc2lvbiMtZXZlbnQtIEV2ZW50IG9iamVjdCBpcyBhdmFpbGFibGUgYXMg
YCRldmVudGB9KQorICoKKyAqIEBleGFtcGxlCisgICA8ZXhhbXBsZT4KKyAgICAgPGZpbGUgbmFt
ZT0iaW5kZXguaHRtbCI+CisgICAgICA8aW5wdXQgbmctY3V0PSJjdXQ9dHJ1ZSIgbmctaW5pdD0i
Y3V0PWZhbHNlOyB2YWx1ZT0nY3V0IG1lJyIgbmctbW9kZWw9InZhbHVlIj4KKyAgICAgIGN1dDog
e3tjdXR9fQorICAgICA8L2ZpbGU+CisgICA8L2V4YW1wbGU+CisgKi8KKworLyoqCisgKiBAbmdk
b2MgZGlyZWN0aXZlCisgKiBAbmFtZSBuZ1Bhc3RlCisgKgorICogQGRlc2NyaXB0aW9uCisgKiBT
cGVjaWZ5IGN1c3RvbSBiZWhhdmlvciBvbiBwYXN0ZSBldmVudC4KKyAqCisgKiBAZWxlbWVudCB3
aW5kb3csIGlucHV0LCBzZWxlY3QsIHRleHRhcmVhLCBhCisgKiBAcHJpb3JpdHkgMAorICogQHBh
cmFtIHtleHByZXNzaW9ufSBuZ1Bhc3RlIHtAbGluayBndWlkZS9leHByZXNzaW9uIEV4cHJlc3Np
b259IHRvIGV2YWx1YXRlIHVwb24KKyAqIHBhc3RlLiAoe0BsaW5rIGd1aWRlL2V4cHJlc3Npb24j
LWV2ZW50LSBFdmVudCBvYmplY3QgaXMgYXZhaWxhYmxlIGFzIGAkZXZlbnRgfSkKKyAqCisgKiBA
ZXhhbXBsZQorICAgPGV4YW1wbGU+CisgICAgIDxmaWxlIG5hbWU9ImluZGV4Lmh0bWwiPgorICAg
ICAgPGlucHV0IG5nLXBhc3RlPSJwYXN0ZT10cnVlIiBuZy1pbml0PSJwYXN0ZT1mYWxzZSIgcGxh
Y2Vob2xkZXI9J3Bhc3RlIGhlcmUnPgorICAgICAgcGFzdGVkOiB7e3Bhc3RlfX0KKyAgICAgPC9m
aWxlPgorICAgPC9leGFtcGxlPgorICovCisKKy8qKgorICogQG5nZG9jIGRpcmVjdGl2ZQorICog
QG5hbWUgbmdJZgorICogQHJlc3RyaWN0IEEKKyAqIEBtdWx0aUVsZW1lbnQKKyAqCisgKiBAZGVz
Y3JpcHRpb24KKyAqIFRoZSBgbmdJZmAgZGlyZWN0aXZlIHJlbW92ZXMgb3IgcmVjcmVhdGVzIGEg
cG9ydGlvbiBvZiB0aGUgRE9NIHRyZWUgYmFzZWQgb24gYW4KKyAqIHtleHByZXNzaW9ufS4gSWYg
dGhlIGV4cHJlc3Npb24gYXNzaWduZWQgdG8gYG5nSWZgIGV2YWx1YXRlcyB0byBhIGZhbHNlCisg
KiB2YWx1ZSB0aGVuIHRoZSBlbGVtZW50IGlzIHJlbW92ZWQgZnJvbSB0aGUgRE9NLCBvdGhlcndp
c2UgYSBjbG9uZSBvZiB0aGUKKyAqIGVsZW1lbnQgaXMgcmVpbnNlcnRlZCBpbnRvIHRoZSBET00u
CisgKgorICogYG5nSWZgIGRpZmZlcnMgZnJvbSBgbmdTaG93YCBhbmQgYG5nSGlkZWAgaW4gdGhh
dCBgbmdJZmAgY29tcGxldGVseSByZW1vdmVzIGFuZCByZWNyZWF0ZXMgdGhlCisgKiBlbGVtZW50
IGluIHRoZSBET00gcmF0aGVyIHRoYW4gY2hhbmdpbmcgaXRzIHZpc2liaWxpdHkgdmlhIHRoZSBg
ZGlzcGxheWAgY3NzIHByb3BlcnR5LiAgQSBjb21tb24KKyAqIGNhc2Ugd2hlbiB0aGlzIGRpZmZl
cmVuY2UgaXMgc2lnbmlmaWNhbnQgaXMgd2hlbiB1c2luZyBjc3Mgc2VsZWN0b3JzIHRoYXQgcmVs
eSBvbiBhbiBlbGVtZW50J3MKKyAqIHBvc2l0aW9uIHdpdGhpbiB0aGUgRE9NLCBzdWNoIGFzIHRo
ZSBgOmZpcnN0LWNoaWxkYCBvciBgOmxhc3QtY2hpbGRgIHBzZXVkby1jbGFzc2VzLgorICoKKyAq
IE5vdGUgdGhhdCB3aGVuIGFuIGVsZW1lbnQgaXMgcmVtb3ZlZCB1c2luZyBgbmdJZmAgaXRzIHNj
b3BlIGlzIGRlc3Ryb3llZCBhbmQgYSBuZXcgc2NvcGUKKyAqIGlzIGNyZWF0ZWQgd2hlbiB0aGUg
ZWxlbWVudCBpcyByZXN0b3JlZC4gIFRoZSBzY29wZSBjcmVhdGVkIHdpdGhpbiBgbmdJZmAgaW5o
ZXJpdHMgZnJvbQorICogaXRzIHBhcmVudCBzY29wZSB1c2luZworICogW3Byb3RvdHlwYWwgaW5o
ZXJpdGFuY2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIuanMvd2lraS9VbmRl
cnN0YW5kaW5nLVNjb3BlcyNqYXZhc2NyaXB0LXByb3RvdHlwYWwtaW5oZXJpdGFuY2UpLgorICog
QW4gaW1wb3J0YW50IGltcGxpY2F0aW9uIG9mIHRoaXMgaXMgaWYgYG5nTW9kZWxgIGlzIHVzZWQg
d2l0aGluIGBuZ0lmYCB0byBiaW5kIHRvCisgKiBhIGphdmFzY3JpcHQgcHJpbWl0aXZlIGRlZmlu
ZWQgaW4gdGhlIHBhcmVudCBzY29wZS4gSW4gdGhpcyBjYXNlIGFueSBtb2RpZmljYXRpb25zIG1h
ZGUgdG8gdGhlCisgKiB2YXJpYWJsZSB3aXRoaW4gdGhlIGNoaWxkIHNjb3BlIHdpbGwgb3ZlcnJp
ZGUgKGhpZGUpIHRoZSB2YWx1ZSBpbiB0aGUgcGFyZW50IHNjb3BlLgorICoKKyAqIEFsc28sIGBu
Z0lmYCByZWNyZWF0ZXMgZWxlbWVudHMgdXNpbmcgdGhlaXIgY29tcGlsZWQgc3RhdGUuIEFuIGV4
YW1wbGUgb2YgdGhpcyBiZWhhdmlvcgorICogaXMgaWYgYW4gZWxlbWVudCdzIGNsYXNzIGF0dHJp
YnV0ZSBpcyBkaXJlY3RseSBtb2RpZmllZCBhZnRlciBpdCdzIGNvbXBpbGVkLCB1c2luZyBzb21l
dGhpbmcgbGlrZQorICogalF1ZXJ5J3MgYC5hZGRDbGFzcygpYCBtZXRob2QsIGFuZCB0aGUgZWxl
bWVudCBpcyBsYXRlciByZW1vdmVkLiBXaGVuIGBuZ0lmYCByZWNyZWF0ZXMgdGhlIGVsZW1lbnQK
KyAqIHRoZSBhZGRlZCBjbGFzcyB3aWxsIGJlIGxvc3QgYmVjYXVzZSB0aGUgb3JpZ2luYWwgY29t
cGlsZWQgc3RhdGUgaXMgdXNlZCB0byByZWdlbmVyYXRlIHRoZSBlbGVtZW50LgorICoKKyAqIEFk
ZGl0aW9uYWxseSwgeW91IGNhbiBwcm92aWRlIGFuaW1hdGlvbnMgdmlhIHRoZSBgbmdBbmltYXRl
YCBtb2R1bGUgdG8gYW5pbWF0ZSB0aGUgYGVudGVyYAorICogYW5kIGBsZWF2ZWAgZWZmZWN0cy4K
KyAqCisgKiBAYW5pbWF0aW9ucworICogZW50ZXIgLSBoYXBwZW5zIGp1c3QgYWZ0ZXIgdGhlIGBu
Z0lmYCBjb250ZW50cyBjaGFuZ2UgYW5kIGEgbmV3IERPTSBlbGVtZW50IGlzIGNyZWF0ZWQgYW5k
IGluamVjdGVkIGludG8gdGhlIGBuZ0lmYCBjb250YWluZXIKKyAqIGxlYXZlIC0gaGFwcGVucyBq
dXN0IGJlZm9yZSB0aGUgYG5nSWZgIGNvbnRlbnRzIGFyZSByZW1vdmVkIGZyb20gdGhlIERPTQor
ICoKKyAqIEBlbGVtZW50IEFOWQorICogQHNjb3BlCisgKiBAcHJpb3JpdHkgNjAwCisgKiBAcGFy
YW0ge2V4cHJlc3Npb259IG5nSWYgSWYgdGhlIHtAbGluayBndWlkZS9leHByZXNzaW9uIGV4cHJl
c3Npb259IGlzIGZhbHN5IHRoZW4KKyAqICAgICB0aGUgZWxlbWVudCBpcyByZW1vdmVkIGZyb20g
dGhlIERPTSB0cmVlLiBJZiBpdCBpcyB0cnV0aHkgYSBjb3B5IG9mIHRoZSBjb21waWxlZAorICog
ICAgIGVsZW1lbnQgaXMgYWRkZWQgdG8gdGhlIERPTSB0cmVlLgorICoKKyAqIEBleGFtcGxlCisg
IDxleGFtcGxlIG1vZHVsZT0ibmdBbmltYXRlIiBkZXBzPSJhbmd1bGFyLWFuaW1hdGUuanMiIGFu
aW1hdGlvbnM9InRydWUiPgorICAgIDxmaWxlIG5hbWU9ImluZGV4Lmh0bWwiPgorICAgICAgPGxh
YmVsPkNsaWNrIG1lOiA8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5nLW1vZGVsPSJjaGVja2VkIiBu
Zy1pbml0PSJjaGVja2VkPXRydWUiIC8+PC9sYWJlbD48YnIvPgorICAgICAgU2hvdyB3aGVuIGNo
ZWNrZWQ6CisgICAgICA8c3BhbiBuZy1pZj0iY2hlY2tlZCIgY2xhc3M9ImFuaW1hdGUtaWYiPgor
ICAgICAgICBUaGlzIGlzIHJlbW92ZWQgd2hlbiB0aGUgY2hlY2tib3ggaXMgdW5jaGVja2VkLgor
ICAgICAgPC9zcGFuPgorICAgIDwvZmlsZT4KKyAgICA8ZmlsZSBuYW1lPSJhbmltYXRpb25zLmNz
cyI+CisgICAgICAuYW5pbWF0ZS1pZiB7CisgICAgICAgIGJhY2tncm91bmQ6d2hpdGU7CisgICAg
ICAgIGJvcmRlcjoxcHggc29saWQgYmxhY2s7CisgICAgICAgIHBhZGRpbmc6MTBweDsKKyAgICAg
IH0KKworICAgICAgLmFuaW1hdGUtaWYubmctZW50ZXIsIC5hbmltYXRlLWlmLm5nLWxlYXZlIHsK
KyAgICAgICAgLXdlYmtpdC10cmFuc2l0aW9uOmFsbCBjdWJpYy1iZXppZXIoMC4yNTAsIDAuNDYw
LCAwLjQ1MCwgMC45NDApIDAuNXM7CisgICAgICAgIHRyYW5zaXRpb246YWxsIGN1YmljLWJlemll
cigwLjI1MCwgMC40NjAsIDAuNDUwLCAwLjk0MCkgMC41czsKKyAgICAgIH0KKworICAgICAgLmFu
aW1hdGUtaWYubmctZW50ZXIsCisgICAgICAuYW5pbWF0ZS1pZi5uZy1sZWF2ZS5uZy1sZWF2ZS1h
Y3RpdmUgeworICAgICAgICBvcGFjaXR5OjA7CisgICAgICB9CisKKyAgICAgIC5hbmltYXRlLWlm
Lm5nLWxlYXZlLAorICAgICAgLmFuaW1hdGUtaWYubmctZW50ZXIubmctZW50ZXItYWN0aXZlIHsK
KyAgICAgICAgb3BhY2l0eToxOworICAgICAgfQorICAgIDwvZmlsZT4KKyAgPC9leGFtcGxlPgor
ICovCit2YXIgbmdJZkRpcmVjdGl2ZSA9IFsnJGFuaW1hdGUnLCBmdW5jdGlvbigkYW5pbWF0ZSkg
eworICByZXR1cm4geworICAgIG11bHRpRWxlbWVudDogdHJ1ZSwKKyAgICB0cmFuc2NsdWRlOiAn
ZWxlbWVudCcsCisgICAgcHJpb3JpdHk6IDYwMCwKKyAgICB0ZXJtaW5hbDogdHJ1ZSwKKyAgICBy
ZXN0cmljdDogJ0EnLAorICAgICQkdGxiOiB0cnVlLAorICAgIGxpbms6IGZ1bmN0aW9uKCRzY29w
ZSwgJGVsZW1lbnQsICRhdHRyLCBjdHJsLCAkdHJhbnNjbHVkZSkgeworICAgICAgICB2YXIgYmxv
Y2ssIGNoaWxkU2NvcGUsIHByZXZpb3VzRWxlbWVudHM7CisgICAgICAgICRzY29wZS4kd2F0Y2go
JGF0dHIubmdJZiwgZnVuY3Rpb24gbmdJZldhdGNoQWN0aW9uKHZhbHVlKSB7CisKKyAgICAgICAg
ICBpZiAodmFsdWUpIHsKKyAgICAgICAgICAgIGlmICghY2hpbGRTY29wZSkgeworICAgICAgICAg
ICAgICAkdHJhbnNjbHVkZShmdW5jdGlvbihjbG9uZSwgbmV3U2NvcGUpIHsKKyAgICAgICAgICAg
ICAgICBjaGlsZFNjb3BlID0gbmV3U2NvcGU7CisgICAgICAgICAgICAgICAgY2xvbmVbY2xvbmUu
bGVuZ3RoKytdID0gZG9jdW1lbnQuY3JlYXRlQ29tbWVudCgnIGVuZCBuZ0lmOiAnICsgJGF0dHIu
bmdJZiArICcgJyk7CisgICAgICAgICAgICAgICAgLy8gTm90ZTogV2Ugb25seSBuZWVkIHRoZSBm
aXJzdC9sYXN0IG5vZGUgb2YgdGhlIGNsb25lZCBub2Rlcy4KKyAgICAgICAgICAgICAgICAvLyBI
b3dldmVyLCB3ZSBuZWVkIHRvIGtlZXAgdGhlIHJlZmVyZW5jZSB0byB0aGUganFsaXRlIHdyYXBw
ZXIgYXMgaXQgbWlnaHQgYmUgY2hhbmdlZCBsYXRlcgorICAgICAgICAgICAgICAgIC8vIGJ5IGEg
ZGlyZWN0aXZlIHdpdGggdGVtcGxhdGVVcmwgd2hlbiBpdHMgdGVtcGxhdGUgYXJyaXZlcy4KKyAg
ICAgICAgICAgICAgICBibG9jayA9IHsKKyAgICAgICAgICAgICAgICAgIGNsb25lOiBjbG9uZQor
ICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgJGFuaW1hdGUuZW50ZXIoY2xvbmUs
ICRlbGVtZW50LnBhcmVudCgpLCAkZWxlbWVudCk7CisgICAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgfQorICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAocHJldmlvdXNFbGVt
ZW50cykgeworICAgICAgICAgICAgICBwcmV2aW91c0VsZW1lbnRzLnJlbW92ZSgpOworICAgICAg
ICAgICAgICBwcmV2aW91c0VsZW1lbnRzID0gbnVsbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGlmIChjaGlsZFNjb3BlKSB7CisgICAgICAgICAgICAgIGNoaWxkU2NvcGUuJGRlc3Ryb3ko
KTsKKyAgICAgICAgICAgICAgY2hpbGRTY29wZSA9IG51bGw7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBpZiAoYmxvY2spIHsKKyAgICAgICAgICAgICAgcHJldmlvdXNFbGVtZW50cyA9IGdl
dEJsb2NrTm9kZXMoYmxvY2suY2xvbmUpOworICAgICAgICAgICAgICAkYW5pbWF0ZS5sZWF2ZShw
cmV2aW91c0VsZW1lbnRzKS50aGVuKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHByZXZp
b3VzRWxlbWVudHMgPSBudWxsOworICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgYmxv
Y2sgPSBudWxsOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAg
fQorICB9OworfV07CisKKy8qKgorICogQG5nZG9jIGRpcmVjdGl2ZQorICogQG5hbWUgbmdJbmNs
dWRlCisgKiBAcmVzdHJpY3QgRUNBCisgKgorICogQGRlc2NyaXB0aW9uCisgKiBGZXRjaGVzLCBj
b21waWxlcyBhbmQgaW5jbHVkZXMgYW4gZXh0ZXJuYWwgSFRNTCBmcmFnbWVudC4KKyAqCisgKiBC
eSBkZWZhdWx0LCB0aGUgdGVtcGxhdGUgVVJMIGlzIHJlc3RyaWN0ZWQgdG8gdGhlIHNhbWUgZG9t
YWluIGFuZCBwcm90b2NvbCBhcyB0aGUKKyAqIGFwcGxpY2F0aW9uIGRvY3VtZW50LiBUaGlzIGlz
IGRvbmUgYnkgY2FsbGluZyB7QGxpbmsgJHNjZSNnZXRUcnVzdGVkUmVzb3VyY2VVcmwKKyAqICRz
Y2UuZ2V0VHJ1c3RlZFJlc291cmNlVXJsfSBvbiBpdC4gVG8gbG9hZCB0ZW1wbGF0ZXMgZnJvbSBv
dGhlciBkb21haW5zIG9yIHByb3RvY29scworICogeW91IG1heSBlaXRoZXIge0BsaW5rIG5nLiRz
Y2VEZWxlZ2F0ZVByb3ZpZGVyI3Jlc291cmNlVXJsV2hpdGVsaXN0IHdoaXRlbGlzdCB0aGVtfSBv
cgorICoge0BsaW5rICRzY2UjdHJ1c3RBc1Jlc291cmNlVXJsIHdyYXAgdGhlbX0gYXMgdHJ1c3Rl
ZCB2YWx1ZXMuIFJlZmVyIHRvIEFuZ3VsYXIncyB7QGxpbmsKKyAqIG5nLiRzY2UgU3RyaWN0IENv
bnRleHR1YWwgRXNjYXBpbmd9LgorICoKKyAqIEluIGFkZGl0aW9uLCB0aGUgYnJvd3NlcidzCisg
KiBbU2FtZSBPcmlnaW4gUG9saWN5XShodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Jyb3dzZXJz
ZWMvd2lraS9QYXJ0MiNTYW1lLW9yaWdpbl9wb2xpY3lfZm9yX1hNTEh0dHBSZXF1ZXN0KQorICog
YW5kIFtDcm9zcy1PcmlnaW4gUmVzb3VyY2UgU2hhcmluZyAoQ09SUyldKGh0dHA6Ly93d3cudzMu
b3JnL1RSL2NvcnMvKQorICogcG9saWN5IG1heSBmdXJ0aGVyIHJlc3RyaWN0IHdoZXRoZXIgdGhl
IHRlbXBsYXRlIGlzIHN1Y2Nlc3NmdWxseSBsb2FkZWQuCisgKiBGb3IgZXhhbXBsZSwgYG5nSW5j
bHVkZWAgd29uJ3Qgd29yayBmb3IgY3Jvc3MtZG9tYWluIHJlcXVlc3RzIG9uIGFsbCBicm93c2Vy
cyBhbmQgZm9yIGBmaWxlOi8vYAorICogYWNjZXNzIG9uIHNvbWUgYnJvd3NlcnMuCisgKgorICog
QGFuaW1hdGlvbnMKKyAqIGVudGVyIC0gYW5pbWF0aW9uIGlzIHVzZWQgdG8gYnJpbmcgbmV3IGNv
bnRlbnQgaW50byB0aGUgYnJvd3Nlci4KKyAqIGxlYXZlIC0gYW5pbWF0aW9uIGlzIHVzZWQgdG8g
YW5pbWF0ZSBleGlzdGluZyBjb250ZW50IGF3YXkuCisgKgorICogVGhlIGVudGVyIGFuZCBsZWF2
ZSBhbmltYXRpb24gb2NjdXIgY29uY3VycmVudGx5LgorICoKKyAqIEBzY29wZQorICogQHByaW9y
aXR5IDQwMAorICoKKyAqIEBwYXJhbSB7c3RyaW5nfSBuZ0luY2x1ZGV8c3JjIGFuZ3VsYXIgZXhw
cmVzc2lvbiBldmFsdWF0aW5nIHRvIFVSTC4gSWYgdGhlIHNvdXJjZSBpcyBhIHN0cmluZyBjb25z
dGFudCwKKyAqICAgICAgICAgICAgICAgICBtYWtlIHN1cmUgeW91IHdyYXAgaXQgaW4gKipzaW5n
bGUqKiBxdW90ZXMsIGUuZy4gYHNyYz0iJ215UGFydGlhbFRlbXBsYXRlLmh0bWwnImAuCisgKiBA
cGFyYW0ge3N0cmluZz19IG9ubG9hZCBFeHByZXNzaW9uIHRvIGV2YWx1YXRlIHdoZW4gYSBuZXcg
cGFydGlhbCBpcyBsb2FkZWQuCisgKgorICogQHBhcmFtIHtzdHJpbmc9fSBhdXRvc2Nyb2xsIFdo
ZXRoZXIgYG5nSW5jbHVkZWAgc2hvdWxkIGNhbGwge0BsaW5rIG5nLiRhbmNob3JTY3JvbGwKKyAq
ICAgICAgICAgICAgICAgICAgJGFuY2hvclNjcm9sbH0gdG8gc2Nyb2xsIHRoZSB2aWV3cG9ydCBh
ZnRlciB0aGUgY29udGVudCBpcyBsb2FkZWQuCisgKgorICogICAgICAgICAgICAgICAgICAtIElm
IHRoZSBhdHRyaWJ1dGUgaXMgbm90IHNldCwgZGlzYWJsZSBzY3JvbGxpbmcuCisgKiAgICAgICAg
ICAgICAgICAgIC0gSWYgdGhlIGF0dHJpYnV0ZSBpcyBzZXQgd2l0aG91dCB2YWx1ZSwgZW5hYmxl
IHNjcm9sbGluZy4KKyAqICAgICAgICAgICAgICAgICAgLSBPdGhlcndpc2UgZW5hYmxlIHNjcm9s
bGluZyBvbmx5IGlmIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byB0cnV0aHkgdmFsdWUuCisg
KgorICogQGV4YW1wbGUKKyAgPGV4YW1wbGUgbW9kdWxlPSJpbmNsdWRlRXhhbXBsZSIgZGVwcz0i
YW5ndWxhci1hbmltYXRlLmpzIiBhbmltYXRpb25zPSJ0cnVlIj4KKyAgICA8ZmlsZSBuYW1lPSJp
bmRleC5odG1sIj4KKyAgICAgPGRpdiBuZy1jb250cm9sbGVyPSJFeGFtcGxlQ29udHJvbGxlciI+
CisgICAgICAgPHNlbGVjdCBuZy1tb2RlbD0idGVtcGxhdGUiIG5nLW9wdGlvbnM9InQubmFtZSBm
b3IgdCBpbiB0ZW1wbGF0ZXMiPgorICAgICAgICA8b3B0aW9uIHZhbHVlPSIiPihibGFuayk8L29w
dGlvbj4KKyAgICAgICA8L3NlbGVjdD4KKyAgICAgICB1cmwgb2YgdGhlIHRlbXBsYXRlOiA8Y29k
ZT57e3RlbXBsYXRlLnVybH19PC9jb2RlPgorICAgICAgIDxoci8+CisgICAgICAgPGRpdiBjbGFz
cz0ic2xpZGUtYW5pbWF0ZS1jb250YWluZXIiPgorICAgICAgICAgPGRpdiBjbGFzcz0ic2xpZGUt
YW5pbWF0ZSIgbmctaW5jbHVkZT0idGVtcGxhdGUudXJsIj48L2Rpdj4KKyAgICAgICA8L2Rpdj4K
KyAgICAgPC9kaXY+CisgICAgPC9maWxlPgorICAgIDxmaWxlIG5hbWU9InNjcmlwdC5qcyI+Cisg
ICAgICBhbmd1bGFyLm1vZHVsZSgnaW5jbHVkZUV4YW1wbGUnLCBbJ25nQW5pbWF0ZSddKQorICAg
ICAgICAuY29udHJvbGxlcignRXhhbXBsZUNvbnRyb2xsZXInLCBbJyRzY29wZScsIGZ1bmN0aW9u
KCRzY29wZSkgeworICAgICAgICAgICRzY29wZS50ZW1wbGF0ZXMgPQorICAgICAgICAgICAgWyB7
IG5hbWU6ICd0ZW1wbGF0ZTEuaHRtbCcsIHVybDogJ3RlbXBsYXRlMS5odG1sJ30sCisgICAgICAg
ICAgICAgIHsgbmFtZTogJ3RlbXBsYXRlMi5odG1sJywgdXJsOiAndGVtcGxhdGUyLmh0bWwnfSBd
OworICAgICAgICAgICRzY29wZS50ZW1wbGF0ZSA9ICRzY29wZS50ZW1wbGF0ZXNbMF07CisgICAg
ICAgIH1dKTsKKyAgICAgPC9maWxlPgorICAgIDxmaWxlIG5hbWU9InRlbXBsYXRlMS5odG1sIj4K
KyAgICAgIENvbnRlbnQgb2YgdGVtcGxhdGUxLmh0bWwKKyAgICA8L2ZpbGU+CisgICAgPGZpbGUg
bmFtZT0idGVtcGxhdGUyLmh0bWwiPgorICAgICAgQ29udGVudCBvZiB0ZW1wbGF0ZTIuaHRtbAor
ICAgIDwvZmlsZT4KKyAgICA8ZmlsZSBuYW1lPSJhbmltYXRpb25zLmNzcyI+CisgICAgICAuc2xp
ZGUtYW5pbWF0ZS1jb250YWluZXIgeworICAgICAgICBwb3NpdGlvbjpyZWxhdGl2ZTsKKyAgICAg
ICAgYmFja2dyb3VuZDp3aGl0ZTsKKyAgICAgICAgYm9yZGVyOjFweCBzb2xpZCBibGFjazsKKyAg
ICAgICAgaGVpZ2h0OjQwcHg7CisgICAgICAgIG92ZXJmbG93OmhpZGRlbjsKKyAgICAgIH0KKwor
ICAgICAgLnNsaWRlLWFuaW1hdGUgeworICAgICAgICBwYWRkaW5nOjEwcHg7CisgICAgICB9CisK
KyAgICAgIC5zbGlkZS1hbmltYXRlLm5nLWVudGVyLCAuc2xpZGUtYW5pbWF0ZS5uZy1sZWF2ZSB7
CisgICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbjphbGwgY3ViaWMtYmV6aWVyKDAuMjUwLCAwLjQ2
MCwgMC40NTAsIDAuOTQwKSAwLjVzOworICAgICAgICB0cmFuc2l0aW9uOmFsbCBjdWJpYy1iZXpp
ZXIoMC4yNTAsIDAuNDYwLCAwLjQ1MCwgMC45NDApIDAuNXM7CisKKyAgICAgICAgcG9zaXRpb246
YWJzb2x1dGU7CisgICAgICAgIHRvcDowOworICAgICAgICBsZWZ0OjA7CisgICAgICAgIHJpZ2h0
OjA7CisgICAgICAgIGJvdHRvbTowOworICAgICAgICBkaXNwbGF5OmJsb2NrOworICAgICAgICBw
YWRkaW5nOjEwcHg7CisgICAgICB9CisKKyAgICAgIC5zbGlkZS1hbmltYXRlLm5nLWVudGVyIHsK
KyAgICAgICAgdG9wOi01MHB4OworICAgICAgfQorICAgICAgLnNsaWRlLWFuaW1hdGUubmctZW50
ZXIubmctZW50ZXItYWN0aXZlIHsKKyAgICAgICAgdG9wOjA7CisgICAgICB9CisKKyAgICAgIC5z
bGlkZS1hbmltYXRlLm5nLWxlYXZlIHsKKyAgICAgICAgdG9wOjA7CisgICAgICB9CisgICAgICAu
c2xpZGUtYW5pbWF0ZS5uZy1sZWF2ZS5uZy1sZWF2ZS1hY3RpdmUgeworICAgICAgICB0b3A6NTBw
eDsKKyAgICAgIH0KKyAgICA8L2ZpbGU+CisgICAgPGZpbGUgbmFtZT0icHJvdHJhY3Rvci5qcyIg
dHlwZT0icHJvdHJhY3RvciI+CisgICAgICB2YXIgdGVtcGxhdGVTZWxlY3QgPSBlbGVtZW50KGJ5
Lm1vZGVsKCd0ZW1wbGF0ZScpKTsKKyAgICAgIHZhciBpbmNsdWRlRWxlbSA9IGVsZW1lbnQoYnku
Y3NzKCdbbmctaW5jbHVkZV0nKSk7CisKKyAgICAgIGl0KCdzaG91bGQgbG9hZCB0ZW1wbGF0ZTEu
aHRtbCcsIGZ1bmN0aW9uKCkgeworICAgICAgICBleHBlY3QoaW5jbHVkZUVsZW0uZ2V0VGV4dCgp
KS50b01hdGNoKC9Db250ZW50IG9mIHRlbXBsYXRlMS5odG1sLyk7CisgICAgICB9KTsKKworICAg
ICAgaXQoJ3Nob3VsZCBsb2FkIHRlbXBsYXRlMi5odG1sJywgZnVuY3Rpb24oKSB7CisgICAgICAg
IGlmIChicm93c2VyLnBhcmFtcy5icm93c2VyID09ICdmaXJlZm94JykgeworICAgICAgICAgIC8v
IEZpcmVmb3ggY2FuJ3QgaGFuZGxlIHVzaW5nIHNlbGVjdHMKKyAgICAgICAgICAvLyBTZWUgaHR0
cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvcHJvdHJhY3Rvci9pc3N1ZXMvNDgwCisgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgICAgIHRlbXBsYXRlU2VsZWN0LmNsaWNrKCk7CisgICAg
ICAgIHRlbXBsYXRlU2VsZWN0LmFsbChieS5jc3MoJ29wdGlvbicpKS5nZXQoMikuY2xpY2soKTsK
KyAgICAgICAgZXhwZWN0KGluY2x1ZGVFbGVtLmdldFRleHQoKSkudG9NYXRjaCgvQ29udGVudCBv
ZiB0ZW1wbGF0ZTIuaHRtbC8pOworICAgICAgfSk7CisKKyAgICAgIGl0KCdzaG91bGQgY2hhbmdl
IHRvIGJsYW5rJywgZnVuY3Rpb24oKSB7CisgICAgICAgIGlmIChicm93c2VyLnBhcmFtcy5icm93
c2VyID09ICdmaXJlZm94JykgeworICAgICAgICAgIC8vIEZpcmVmb3ggY2FuJ3QgaGFuZGxlIHVz
aW5nIHNlbGVjdHMKKyAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgdGVtcGxh
dGVTZWxlY3QuY2xpY2soKTsKKyAgICAgICAgdGVtcGxhdGVTZWxlY3QuYWxsKGJ5LmNzcygnb3B0
aW9uJykpLmdldCgwKS5jbGljaygpOworICAgICAgICBleHBlY3QoaW5jbHVkZUVsZW0uaXNQcmVz
ZW50KCkpLnRvQmUoZmFsc2UpOworICAgICAgfSk7CisgICAgPC9maWxlPgorICA8L2V4YW1wbGU+
CisgKi8KKworCisvKioKKyAqIEBuZ2RvYyBldmVudAorICogQG5hbWUgbmdJbmNsdWRlIyRpbmNs
dWRlQ29udGVudFJlcXVlc3RlZAorICogQGV2ZW50VHlwZSBlbWl0IG9uIHRoZSBzY29wZSBuZ0lu
Y2x1ZGUgd2FzIGRlY2xhcmVkIGluCisgKiBAZGVzY3JpcHRpb24KKyAqIEVtaXR0ZWQgZXZlcnkg
dGltZSB0aGUgbmdJbmNsdWRlIGNvbnRlbnQgaXMgcmVxdWVzdGVkLgorICoKKyAqIEBwYXJhbSB7
T2JqZWN0fSBhbmd1bGFyRXZlbnQgU3ludGhldGljIGV2ZW50IG9iamVjdC4KKyAqIEBwYXJhbSB7
U3RyaW5nfSBzcmMgVVJMIG9mIGNvbnRlbnQgdG8gbG9hZC4KKyAqLworCisKKy8qKgorICogQG5n
ZG9jIGV2ZW50CisgKiBAbmFtZSBuZ0luY2x1ZGUjJGluY2x1ZGVDb250ZW50TG9hZGVkCisgKiBA
ZXZlbnRUeXBlIGVtaXQgb24gdGhlIGN1cnJlbnQgbmdJbmNsdWRlIHNjb3BlCisgKiBAZGVzY3Jp
cHRpb24KKyAqIEVtaXR0ZWQgZXZlcnkgdGltZSB0aGUgbmdJbmNsdWRlIGNvbnRlbnQgaXMgcmVs
b2FkZWQuCisgKgorICogQHBhcmFtIHtPYmplY3R9IGFuZ3VsYXJFdmVudCBTeW50aGV0aWMgZXZl
bnQgb2JqZWN0LgorICogQHBhcmFtIHtTdHJpbmd9IHNyYyBVUkwgb2YgY29udGVudCB0byBsb2Fk
LgorICovCisKKworLyoqCisgKiBAbmdkb2MgZXZlbnQKKyAqIEBuYW1lIG5nSW5jbHVkZSMkaW5j
bHVkZUNvbnRlbnRFcnJvcgorICogQGV2ZW50VHlwZSBlbWl0IG9uIHRoZSBzY29wZSBuZ0luY2x1
ZGUgd2FzIGRlY2xhcmVkIGluCisgKiBAZGVzY3JpcHRpb24KKyAqIEVtaXR0ZWQgd2hlbiBhIHRl
bXBsYXRlIEhUVFAgcmVxdWVzdCB5aWVsZHMgYW4gZXJyb25lb3VzIHJlc3BvbnNlIChzdGF0dXMg
PCAyMDAgfHwgc3RhdHVzID4gMjk5KQorICoKKyAqIEBwYXJhbSB7T2JqZWN0fSBhbmd1bGFyRXZl
bnQgU3ludGhldGljIGV2ZW50IG9iamVjdC4KKyAqIEBwYXJhbSB7U3RyaW5nfSBzcmMgVVJMIG9m
IGNvbnRlbnQgdG8gbG9hZC4KKyAqLwordmFyIG5nSW5jbHVkZURpcmVjdGl2ZSA9IFsnJHRlbXBs
YXRlUmVxdWVzdCcsICckYW5jaG9yU2Nyb2xsJywgJyRhbmltYXRlJywKKyAgICAgICAgICAgICAg
ICAgIGZ1bmN0aW9uKCR0ZW1wbGF0ZVJlcXVlc3QsICAgJGFuY2hvclNjcm9sbCwgICAkYW5pbWF0
ZSkgeworICByZXR1cm4geworICAgIHJlc3RyaWN0OiAnRUNBJywKKyAgICBwcmlvcml0eTogNDAw
LAorICAgIHRlcm1pbmFsOiB0cnVlLAorICAgIHRyYW5zY2x1ZGU6ICdlbGVtZW50JywKKyAgICBj
b250cm9sbGVyOiBhbmd1bGFyLm5vb3AsCisgICAgY29tcGlsZTogZnVuY3Rpb24oZWxlbWVudCwg
YXR0cikgeworICAgICAgdmFyIHNyY0V4cCA9IGF0dHIubmdJbmNsdWRlIHx8IGF0dHIuc3JjLAor
ICAgICAgICAgIG9ubG9hZEV4cCA9IGF0dHIub25sb2FkIHx8ICcnLAorICAgICAgICAgIGF1dG9T
Y3JvbGxFeHAgPSBhdHRyLmF1dG9zY3JvbGw7CisKKyAgICAgIHJldHVybiBmdW5jdGlvbihzY29w
ZSwgJGVsZW1lbnQsICRhdHRyLCBjdHJsLCAkdHJhbnNjbHVkZSkgeworICAgICAgICB2YXIgY2hh
bmdlQ291bnRlciA9IDAsCisgICAgICAgICAgICBjdXJyZW50U2NvcGUsCisgICAgICAgICAgICBw
cmV2aW91c0VsZW1lbnQsCisgICAgICAgICAgICBjdXJyZW50RWxlbWVudDsKKworICAgICAgICB2
YXIgY2xlYW51cExhc3RJbmNsdWRlQ29udGVudCA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgIGlm
IChwcmV2aW91c0VsZW1lbnQpIHsKKyAgICAgICAgICAgIHByZXZpb3VzRWxlbWVudC5yZW1vdmUo
KTsKKyAgICAgICAgICAgIHByZXZpb3VzRWxlbWVudCA9IG51bGw7CisgICAgICAgICAgfQorICAg
ICAgICAgIGlmIChjdXJyZW50U2NvcGUpIHsKKyAgICAgICAgICAgIGN1cnJlbnRTY29wZS4kZGVz
dHJveSgpOworICAgICAgICAgICAgY3VycmVudFNjb3BlID0gbnVsbDsKKyAgICAgICAgICB9Cisg
ICAgICAgICAgaWYgKGN1cnJlbnRFbGVtZW50KSB7CisgICAgICAgICAgICAkYW5pbWF0ZS5sZWF2
ZShjdXJyZW50RWxlbWVudCkudGhlbihmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgcHJldmlv
dXNFbGVtZW50ID0gbnVsbDsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgcHJldmlvdXNF
bGVtZW50ID0gY3VycmVudEVsZW1lbnQ7CisgICAgICAgICAgICBjdXJyZW50RWxlbWVudCA9IG51
bGw7CisgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIHNjb3BlLiR3YXRjaChzcmNF
eHAsIGZ1bmN0aW9uIG5nSW5jbHVkZVdhdGNoQWN0aW9uKHNyYykgeworICAgICAgICAgIHZhciBh
ZnRlckFuaW1hdGlvbiA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgaWYgKGlzRGVmaW5lZChh
dXRvU2Nyb2xsRXhwKSAmJiAoIWF1dG9TY3JvbGxFeHAgfHwgc2NvcGUuJGV2YWwoYXV0b1Njcm9s
bEV4cCkpKSB7CisgICAgICAgICAgICAgICRhbmNob3JTY3JvbGwoKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICB9OworICAgICAgICAgIHZhciB0aGlzQ2hhbmdlSWQgPSArK2NoYW5nZUNvdW50
ZXI7CisKKyAgICAgICAgICBpZiAoc3JjKSB7CisgICAgICAgICAgICAvL3NldCB0aGUgMm5kIHBh
cmFtIHRvIHRydWUgdG8gaWdub3JlIHRoZSB0ZW1wbGF0ZSByZXF1ZXN0IGVycm9yIHNvIHRoYXQg
dGhlIGlubmVyCisgICAgICAgICAgICAvL2NvbnRlbnRzIGFuZCBzY29wZSBjYW4gYmUgY2xlYW5l
ZCB1cC4KKyAgICAgICAgICAgICR0ZW1wbGF0ZVJlcXVlc3Qoc3JjLCB0cnVlKS50aGVuKGZ1bmN0
aW9uKHJlc3BvbnNlKSB7CisgICAgICAgICAgICAgIGlmICh0aGlzQ2hhbmdlSWQgIT09IGNoYW5n
ZUNvdW50ZXIpIHJldHVybjsKKyAgICAgICAgICAgICAgdmFyIG5ld1Njb3BlID0gc2NvcGUuJG5l
dygpOworICAgICAgICAgICAgICBjdHJsLnRlbXBsYXRlID0gcmVzcG9uc2U7CisKKyAgICAgICAg
ICAgICAgLy8gTm90ZTogVGhpcyB3aWxsIGFsc28gbGluayBhbGwgY2hpbGRyZW4gb2YgbmctaW5j
bHVkZSB0aGF0IHdlcmUgY29udGFpbmVkIGluIHRoZSBvcmlnaW5hbAorICAgICAgICAgICAgICAv
LyBodG1sLiBJZiB0aGF0IGNvbnRlbnQgY29udGFpbnMgY29udHJvbGxlcnMsIC4uLiB0aGV5IGNv
dWxkIHBvbGx1dGUvY2hhbmdlIHRoZSBzY29wZS4KKyAgICAgICAgICAgICAgLy8gSG93ZXZlciwg
dXNpbmcgbmctaW5jbHVkZSBvbiBhbiBlbGVtZW50IHdpdGggYWRkaXRpb25hbCBjb250ZW50IGRv
ZXMgbm90IG1ha2Ugc2Vuc2UuLi4KKyAgICAgICAgICAgICAgLy8gTm90ZTogV2UgY2FuJ3QgcmVt
b3ZlIHRoZW0gaW4gdGhlIGNsb25lQXR0Y2hGbiBvZiAkdHJhbnNjbHVkZSBhcyB0aGF0CisgICAg
ICAgICAgICAgIC8vIGZ1bmN0aW9uIGlzIGNhbGxlZCBiZWZvcmUgbGlua2luZyB0aGUgY29udGVu
dCwgd2hpY2ggd291bGQgYXBwbHkgY2hpbGQKKyAgICAgICAgICAgICAgLy8gZGlyZWN0aXZlcyB0
byBub24gZXhpc3RpbmcgZWxlbWVudHMuCisgICAgICAgICAgICAgIHZhciBjbG9uZSA9ICR0cmFu
c2NsdWRlKG5ld1Njb3BlLCBmdW5jdGlvbihjbG9uZSkgeworICAgICAgICAgICAgICAgIGNsZWFu
dXBMYXN0SW5jbHVkZUNvbnRlbnQoKTsKKyAgICAgICAgICAgICAgICAkYW5pbWF0ZS5lbnRlcihj
bG9uZSwgbnVsbCwgJGVsZW1lbnQpLnRoZW4oYWZ0ZXJBbmltYXRpb24pOworICAgICAgICAgICAg
ICB9KTsKKworICAgICAgICAgICAgICBjdXJyZW50U2NvcGUgPSBuZXdTY29wZTsKKyAgICAgICAg
ICAgICAgY3VycmVudEVsZW1lbnQgPSBjbG9uZTsKKworICAgICAgICAgICAgICBjdXJyZW50U2Nv
cGUuJGVtaXQoJyRpbmNsdWRlQ29udGVudExvYWRlZCcsIHNyYyk7CisgICAgICAgICAgICAgIHNj
b3BlLiRldmFsKG9ubG9hZEV4cCk7CisgICAgICAgICAgICB9LCBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgICAgaWYgKHRoaXNDaGFuZ2VJZCA9PT0gY2hhbmdlQ291bnRlcikgeworICAgICAgICAg
ICAgICAgIGNsZWFudXBMYXN0SW5jbHVkZUNvbnRlbnQoKTsKKyAgICAgICAgICAgICAgICBzY29w
ZS4kZW1pdCgnJGluY2x1ZGVDb250ZW50RXJyb3InLCBzcmMpOworICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHNjb3BlLiRlbWl0KCckaW5jbHVkZUNvbnRlbnRS
ZXF1ZXN0ZWQnLCBzcmMpOworICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjbGVhbnVw
TGFzdEluY2x1ZGVDb250ZW50KCk7CisgICAgICAgICAgICBjdHJsLnRlbXBsYXRlID0gbnVsbDsK
KyAgICAgICAgICB9CisgICAgICAgIH0pOworICAgICAgfTsKKyAgICB9CisgIH07Cit9XTsKKwor
Ly8gVGhpcyBkaXJlY3RpdmUgaXMgY2FsbGVkIGR1cmluZyB0aGUgJHRyYW5zY2x1ZGUgY2FsbCBv
ZiB0aGUgZmlyc3QgYG5nSW5jbHVkZWAgZGlyZWN0aXZlLgorLy8gSXQgd2lsbCByZXBsYWNlIGFu
ZCBjb21waWxlIHRoZSBjb250ZW50IG9mIHRoZSBlbGVtZW50IHdpdGggdGhlIGxvYWRlZCB0ZW1w
bGF0ZS4KKy8vIFdlIG5lZWQgdGhpcyBkaXJlY3RpdmUgc28gdGhhdCB0aGUgZWxlbWVudCBjb250
ZW50IGlzIGFscmVhZHkgZmlsbGVkIHdoZW4KKy8vIHRoZSBsaW5rIGZ1bmN0aW9uIG9mIGFub3Ro
ZXIgZGlyZWN0aXZlIG9uIHRoZSBzYW1lIGVsZW1lbnQgYXMgbmdJbmNsdWRlCisvLyBpcyBjYWxs
ZWQuCit2YXIgbmdJbmNsdWRlRmlsbENvbnRlbnREaXJlY3RpdmUgPSBbJyRjb21waWxlJywKKyAg
ZnVuY3Rpb24oJGNvbXBpbGUpIHsKKyAgICByZXR1cm4geworICAgICAgcmVzdHJpY3Q6ICdFQ0En
LAorICAgICAgcHJpb3JpdHk6IC00MDAsCisgICAgICByZXF1aXJlOiAnbmdJbmNsdWRlJywKKyAg
ICAgIGxpbms6IGZ1bmN0aW9uKHNjb3BlLCAkZWxlbWVudCwgJGF0dHIsIGN0cmwpIHsKKyAgICAg
ICAgaWYgKC9TVkcvLnRlc3QoJGVsZW1lbnRbMF0udG9TdHJpbmcoKSkpIHsKKyAgICAgICAgICAv
LyBXZWJLaXQ6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzU2OTgg
LS0tIFNWRyBlbGVtZW50cyBkbyBub3QKKyAgICAgICAgICAvLyBzdXBwb3J0IGlubmVySFRNTCwg
c28gZGV0ZWN0IHRoaXMgaGVyZSBhbmQgdHJ5IHRvIGdlbmVyYXRlIHRoZSBjb250ZW50cworICAg
ICAgICAgIC8vIHNwZWNpYWxseS4KKyAgICAgICAgICAkZWxlbWVudC5lbXB0eSgpOworICAgICAg
ICAgICRjb21waWxlKGpxTGl0ZUJ1aWxkRnJhZ21lbnQoY3RybC50ZW1wbGF0ZSwgZG9jdW1lbnQp
LmNoaWxkTm9kZXMpKHNjb3BlLAorICAgICAgICAgICAgICBmdW5jdGlvbiBuYW1lc3BhY2VBZGFw
dGVkQ2xvbmUoY2xvbmUpIHsKKyAgICAgICAgICAgICRlbGVtZW50LmFwcGVuZChjbG9uZSk7Cisg
ICAgICAgICAgfSwge2Z1dHVyZVBhcmVudEVsZW1lbnQ6ICRlbGVtZW50fSk7CisgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgJGVsZW1lbnQuaHRtbChjdHJsLnRlbXBsYXRl
KTsKKyAgICAgICAgJGNvbXBpbGUoJGVsZW1lbnQuY29udGVudHMoKSkoc2NvcGUpOworICAgICAg
fQorICAgIH07CisgIH1dOworCisvKioKKyAqIEBuZ2RvYyBkaXJlY3RpdmUKKyAqIEBuYW1lIG5n
SW5pdAorICogQHJlc3RyaWN0IEFDCisgKgorICogQGRlc2NyaXB0aW9uCisgKiBUaGUgYG5nSW5p
dGAgZGlyZWN0aXZlIGFsbG93cyB5b3UgdG8gZXZhbHVhdGUgYW4gZXhwcmVzc2lvbiBpbiB0aGUK
KyAqIGN1cnJlbnQgc2NvcGUuCisgKgorICogPGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtZGFuZ2Vy
Ij4KKyAqIFRoZSBvbmx5IGFwcHJvcHJpYXRlIHVzZSBvZiBgbmdJbml0YCBpcyBmb3IgYWxpYXNp
bmcgc3BlY2lhbCBwcm9wZXJ0aWVzIG9mCisgKiB7QGxpbmsgbmcuZGlyZWN0aXZlOm5nUmVwZWF0
IGBuZ1JlcGVhdGB9LCBhcyBzZWVuIGluIHRoZSBkZW1vIGJlbG93LiBCZXNpZGVzIHRoaXMgY2Fz
ZSwgeW91CisgKiBzaG91bGQgdXNlIHtAbGluayBndWlkZS9jb250cm9sbGVyIGNvbnRyb2xsZXJz
fSByYXRoZXIgdGhhbiBgbmdJbml0YAorICogdG8gaW5pdGlhbGl6ZSB2YWx1ZXMgb24gYSBzY29w
ZS4KKyAqIDwvZGl2PgorICogPGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtd2FybmluZyI+CisgKiAq
Kk5vdGUqKjogSWYgeW91IGhhdmUgYXNzaWdubWVudCBpbiBgbmdJbml0YCBhbG9uZyB3aXRoIHtA
bGluayBuZy4kZmlsdGVyIGAkZmlsdGVyYH0sIG1ha2UKKyAqIHN1cmUgeW91IGhhdmUgcGFyZW50
aGVzaXMgZm9yIGNvcnJlY3QgcHJlY2VkZW5jZToKKyAqIDxwcmUgY2xhc3M9InByZXR0eXByaW50
Ij4KKyAqIGA8ZGl2IG5nLWluaXQ9InRlc3QxID0gKGRhdGEgfCBvcmRlckJ5OiduYW1lJykiPjwv
ZGl2PmAKKyAqIDwvcHJlPgorICogPC9kaXY+CisgKgorICogQHByaW9yaXR5IDQ1MAorICoKKyAq
IEBlbGVtZW50IEFOWQorICogQHBhcmFtIHtleHByZXNzaW9ufSBuZ0luaXQge0BsaW5rIGd1aWRl
L2V4cHJlc3Npb24gRXhwcmVzc2lvbn0gdG8gZXZhbC4KKyAqCisgKiBAZXhhbXBsZQorICAgPGV4
YW1wbGUgbW9kdWxlPSJpbml0RXhhbXBsZSI+CisgICAgIDxmaWxlIG5hbWU9ImluZGV4Lmh0bWwi
PgorICAgPHNjcmlwdD4KKyAgICAgYW5ndWxhci5tb2R1bGUoJ2luaXRFeGFtcGxlJywgW10pCisg
ICAgICAgLmNvbnRyb2xsZXIoJ0V4YW1wbGVDb250cm9sbGVyJywgWyckc2NvcGUnLCBmdW5jdGlv
bigkc2NvcGUpIHsKKyAgICAgICAgICRzY29wZS5saXN0ID0gW1snYScsICdiJ10sIFsnYycsICdk
J11dOworICAgICAgIH1dKTsKKyAgIDwvc2NyaXB0PgorICAgPGRpdiBuZy1jb250cm9sbGVyPSJF
eGFtcGxlQ29udHJvbGxlciI+CisgICAgIDxkaXYgbmctcmVwZWF0PSJpbm5lckxpc3QgaW4gbGlz
dCIgbmctaW5pdD0ib3V0ZXJJbmRleCA9ICRpbmRleCI+CisgICAgICAgPGRpdiBuZy1yZXBlYXQ9
InZhbHVlIGluIGlubmVyTGlzdCIgbmctaW5pdD0iaW5uZXJJbmRleCA9ICRpbmRleCI+CisgICAg
ICAgICAgPHNwYW4gY2xhc3M9ImV4YW1wbGUtaW5pdCI+bGlzdFsge3tvdXRlckluZGV4fX0gXVsg
e3tpbm5lckluZGV4fX0gXSA9IHt7dmFsdWV9fTs8L3NwYW4+CisgICAgICAgPC9kaXY+CisgICAg
IDwvZGl2PgorICAgPC9kaXY+CisgICAgIDwvZmlsZT4KKyAgICAgPGZpbGUgbmFtZT0icHJvdHJh
Y3Rvci5qcyIgdHlwZT0icHJvdHJhY3RvciI+CisgICAgICAgaXQoJ3Nob3VsZCBhbGlhcyBpbmRl
eCBwb3NpdGlvbnMnLCBmdW5jdGlvbigpIHsKKyAgICAgICAgIHZhciBlbGVtZW50cyA9IGVsZW1l
bnQuYWxsKGJ5LmNzcygnLmV4YW1wbGUtaW5pdCcpKTsKKyAgICAgICAgIGV4cGVjdChlbGVtZW50
cy5nZXQoMCkuZ2V0VGV4dCgpKS50b0JlKCdsaXN0WyAwIF1bIDAgXSA9IGE7Jyk7CisgICAgICAg
ICBleHBlY3QoZWxlbWVudHMuZ2V0KDEpLmdldFRleHQoKSkudG9CZSgnbGlzdFsgMCBdWyAxIF0g
PSBiOycpOworICAgICAgICAgZXhwZWN0KGVsZW1lbnRzLmdldCgyKS5nZXRUZXh0KCkpLnRvQmUo
J2xpc3RbIDEgXVsgMCBdID0gYzsnKTsKKyAgICAgICAgIGV4cGVjdChlbGVtZW50cy5nZXQoMyku
Z2V0VGV4dCgpKS50b0JlKCdsaXN0WyAxIF1bIDEgXSA9IGQ7Jyk7CisgICAgICAgfSk7CisgICAg
IDwvZmlsZT4KKyAgIDwvZXhhbXBsZT4KKyAqLwordmFyIG5nSW5pdERpcmVjdGl2ZSA9IG5nRGly
ZWN0aXZlKHsKKyAgcHJpb3JpdHk6IDQ1MCwKKyAgY29tcGlsZTogZnVuY3Rpb24oKSB7CisgICAg
cmV0dXJuIHsKKyAgICAgIHByZTogZnVuY3Rpb24oc2NvcGUsIGVsZW1lbnQsIGF0dHJzKSB7Cisg
ICAgICAgIHNjb3BlLiRldmFsKGF0dHJzLm5nSW5pdCk7CisgICAgICB9CisgICAgfTsKKyAgfQor
fSk7CisKKy8qKgorICogQG5nZG9jIGRpcmVjdGl2ZQorICogQG5hbWUgbmdMaXN0CisgKgorICog
QGRlc2NyaXB0aW9uCisgKiBUZXh0IGlucHV0IHRoYXQgY29udmVydHMgYmV0d2VlbiBhIGRlbGlt
aXRlZCBzdHJpbmcgYW5kIGFuIGFycmF5IG9mIHN0cmluZ3MuIFRoZSBkZWZhdWx0CisgKiBkZWxp
bWl0ZXIgaXMgYSBjb21tYSBmb2xsb3dlZCBieSBhIHNwYWNlIC0gZXF1aXZhbGVudCB0byBgbmct
bGlzdD0iLCAiYC4gWW91IGNhbiBzcGVjaWZ5IGEgY3VzdG9tCisgKiBkZWxpbWl0ZXIgYXMgdGhl
IHZhbHVlIG9mIHRoZSBgbmdMaXN0YCBhdHRyaWJ1dGUgLSBmb3IgZXhhbXBsZSwgYG5nLWxpc3Q9
IiB8ICJgLgorICoKKyAqIFRoZSBiZWhhdmlvdXIgb2YgdGhlIGRpcmVjdGl2ZSBpcyBhZmZlY3Rl
ZCBieSB0aGUgdXNlIG9mIHRoZSBgbmdUcmltYCBhdHRyaWJ1dGUuCisgKiAqIElmIGBuZ1RyaW1g
IGlzIHNldCB0byBgImZhbHNlImAgdGhlbiB3aGl0ZXNwYWNlIGFyb3VuZCBib3RoIHRoZSBzZXBh
cmF0b3IgYW5kIGVhY2gKKyAqICAgbGlzdCBpdGVtIGlzIHJlc3BlY3RlZC4gVGhpcyBpbXBsaWVz
IHRoYXQgdGhlIHVzZXIgb2YgdGhlIGRpcmVjdGl2ZSBpcyByZXNwb25zaWJsZSBmb3IKKyAqICAg
ZGVhbGluZyB3aXRoIHdoaXRlc3BhY2UgYnV0IGFsc28gYWxsb3dzIHlvdSB0byB1c2Ugd2hpdGVz
cGFjZSBhcyBhIGRlbGltaXRlciwgc3VjaCBhcyBhCisgKiAgIHRhYiBvciBuZXdsaW5lIGNoYXJh
Y3Rlci4KKyAqICogT3RoZXJ3aXNlIHdoaXRlc3BhY2UgYXJvdW5kIHRoZSBkZWxpbWl0ZXIgaXMg
aWdub3JlZCB3aGVuIHNwbGl0dGluZyAoYWx0aG91Z2ggaXQgaXMgcmVzcGVjdGVkCisgKiAgIHdo
ZW4gam9pbmluZyB0aGUgbGlzdCBpdGVtcyBiYWNrIHRvZ2V0aGVyKSBhbmQgd2hpdGVzcGFjZSBh
cm91bmQgZWFjaCBsaXN0IGl0ZW0gaXMgc3RyaXBwZWQKKyAqICAgYmVmb3JlIGl0IGlzIGFkZGVk
IHRvIHRoZSBtb2RlbC4KKyAqCisgKiAjIyMgRXhhbXBsZSB3aXRoIFZhbGlkYXRpb24KKyAqCisg
KiA8ZXhhbXBsZSBuYW1lPSJuZ0xpc3QtZGlyZWN0aXZlIiBtb2R1bGU9Imxpc3RFeGFtcGxlIj4K
KyAqICAgPGZpbGUgbmFtZT0iYXBwLmpzIj4KKyAqICAgICAgYW5ndWxhci5tb2R1bGUoJ2xpc3RF
eGFtcGxlJywgW10pCisgKiAgICAgICAgLmNvbnRyb2xsZXIoJ0V4YW1wbGVDb250cm9sbGVyJywg
Wyckc2NvcGUnLCBmdW5jdGlvbigkc2NvcGUpIHsKKyAqICAgICAgICAgICRzY29wZS5uYW1lcyA9
IFsnbW9ycGhldXMnLCAnbmVvJywgJ3RyaW5pdHknXTsKKyAqICAgICAgICB9XSk7CisgKiAgIDwv
ZmlsZT4KKyAqICAgPGZpbGUgbmFtZT0iaW5kZXguaHRtbCI+CisgKiAgICA8Zm9ybSBuYW1lPSJt
eUZvcm0iIG5nLWNvbnRyb2xsZXI9IkV4YW1wbGVDb250cm9sbGVyIj4KKyAqICAgICAgPGxhYmVs
Pkxpc3Q6IDxpbnB1dCBuYW1lPSJuYW1lc0lucHV0IiBuZy1tb2RlbD0ibmFtZXMiIG5nLWxpc3Qg
cmVxdWlyZWQ+PC9sYWJlbD4KKyAqICAgICAgPHNwYW4gcm9sZT0iYWxlcnQiPgorICogICAgICAg
IDxzcGFuIGNsYXNzPSJlcnJvciIgbmctc2hvdz0ibXlGb3JtLm5hbWVzSW5wdXQuJGVycm9yLnJl
cXVpcmVkIj4KKyAqICAgICAgICBSZXF1aXJlZCE8L3NwYW4+CisgKiAgICAgIDwvc3Bhbj4KKyAq
ICAgICAgPGJyPgorICogICAgICA8dHQ+bmFtZXMgPSB7e25hbWVzfX08L3R0Pjxici8+CisgKiAg
ICAgIDx0dD5teUZvcm0ubmFtZXNJbnB1dC4kdmFsaWQgPSB7e215Rm9ybS5uYW1lc0lucHV0LiR2
YWxpZH19PC90dD48YnIvPgorICogICAgICA8dHQ+bXlGb3JtLm5hbWVzSW5wdXQuJGVycm9yID0g
e3tteUZvcm0ubmFtZXNJbnB1dC4kZXJyb3J9fTwvdHQ+PGJyLz4KKyAqICAgICAgPHR0Pm15Rm9y
bS4kdmFsaWQgPSB7e215Rm9ybS4kdmFsaWR9fTwvdHQ+PGJyLz4KKyAqICAgICAgPHR0Pm15Rm9y
bS4kZXJyb3IucmVxdWlyZWQgPSB7eyEhbXlGb3JtLiRlcnJvci5yZXF1aXJlZH19PC90dD48YnIv
PgorICogICAgIDwvZm9ybT4KKyAqICAgPC9maWxlPgorICogICA8ZmlsZSBuYW1lPSJwcm90cmFj
dG9yLmpzIiB0eXBlPSJwcm90cmFjdG9yIj4KKyAqICAgICB2YXIgbGlzdElucHV0ID0gZWxlbWVu
dChieS5tb2RlbCgnbmFtZXMnKSk7CisgKiAgICAgdmFyIG5hbWVzID0gZWxlbWVudChieS5leGFj
dEJpbmRpbmcoJ25hbWVzJykpOworICogICAgIHZhciB2YWxpZCA9IGVsZW1lbnQoYnkuYmluZGlu
ZygnbXlGb3JtLm5hbWVzSW5wdXQuJHZhbGlkJykpOworICogICAgIHZhciBlcnJvciA9IGVsZW1l
bnQoYnkuY3NzKCdzcGFuLmVycm9yJykpOworICoKKyAqICAgICBpdCgnc2hvdWxkIGluaXRpYWxp
emUgdG8gbW9kZWwnLCBmdW5jdGlvbigpIHsKKyAqICAgICAgIGV4cGVjdChuYW1lcy5nZXRUZXh0
KCkpLnRvQ29udGFpbignWyJtb3JwaGV1cyIsIm5lbyIsInRyaW5pdHkiXScpOworICogICAgICAg
ZXhwZWN0KHZhbGlkLmdldFRleHQoKSkudG9Db250YWluKCd0cnVlJyk7CisgKiAgICAgICBleHBl
Y3QoZXJyb3IuZ2V0Q3NzVmFsdWUoJ2Rpc3BsYXknKSkudG9CZSgnbm9uZScpOworICogICAgIH0p
OworICoKKyAqICAgICBpdCgnc2hvdWxkIGJlIGludmFsaWQgaWYgZW1wdHknLCBmdW5jdGlvbigp
IHsKKyAqICAgICAgIGxpc3RJbnB1dC5jbGVhcigpOworICogICAgICAgbGlzdElucHV0LnNlbmRL
ZXlzKCcnKTsKKyAqCisgKiAgICAgICBleHBlY3QobmFtZXMuZ2V0VGV4dCgpKS50b0NvbnRhaW4o
JycpOworICogICAgICAgZXhwZWN0KHZhbGlkLmdldFRleHQoKSkudG9Db250YWluKCdmYWxzZScp
OworICogICAgICAgZXhwZWN0KGVycm9yLmdldENzc1ZhbHVlKCdkaXNwbGF5JykpLm5vdC50b0Jl
KCdub25lJyk7CisgKiAgICAgfSk7CisgKiAgIDwvZmlsZT4KKyAqIDwvZXhhbXBsZT4KKyAqCisg
KiAjIyMgRXhhbXBsZSAtIHNwbGl0dGluZyBvbiB3aGl0ZXNwYWNlCisgKiA8ZXhhbXBsZSBuYW1l
PSJuZ0xpc3QtZGlyZWN0aXZlLW5ld2xpbmVzIj4KKyAqICAgPGZpbGUgbmFtZT0iaW5kZXguaHRt
bCI+CisgKiAgICA8dGV4dGFyZWEgbmctbW9kZWw9Imxpc3QiIG5nLWxpc3Q9IiYjMTA7IiBuZy10
cmltPSJmYWxzZSI+PC90ZXh0YXJlYT4KKyAqICAgIDxwcmU+e3sgbGlzdCB8IGpzb24gfX08L3By
ZT4KKyAqICAgPC9maWxlPgorICogICA8ZmlsZSBuYW1lPSJwcm90cmFjdG9yLmpzIiB0eXBlPSJw
cm90cmFjdG9yIj4KKyAqICAgICBpdCgic2hvdWxkIHNwbGl0IHRoZSB0ZXh0IGJ5IG5ld2xpbmVz
IiwgZnVuY3Rpb24oKSB7CisgKiAgICAgICB2YXIgbGlzdElucHV0ID0gZWxlbWVudChieS5tb2Rl
bCgnbGlzdCcpKTsKKyAqICAgICAgIHZhciBvdXRwdXQgPSBlbGVtZW50KGJ5LmJpbmRpbmcoJ2xp
c3QgfCBqc29uJykpOworICogICAgICAgbGlzdElucHV0LnNlbmRLZXlzKCdhYmNcbmRlZlxuZ2hp
Jyk7CisgKiAgICAgICBleHBlY3Qob3V0cHV0LmdldFRleHQoKSkudG9Db250YWluKCdbXG4gICJh
YmMiLFxuICAiZGVmIixcbiAgImdoaSJcbl0nKTsKKyAqICAgICB9KTsKKyAqICAgPC9maWxlPgor
ICogPC9leGFtcGxlPgorICoKKyAqIEBlbGVtZW50IGlucHV0CisgKiBAcGFyYW0ge3N0cmluZz19
IG5nTGlzdCBvcHRpb25hbCBkZWxpbWl0ZXIgdGhhdCBzaG91bGQgYmUgdXNlZCB0byBzcGxpdCB0
aGUgdmFsdWUuCisgKi8KK3ZhciBuZ0xpc3REaXJlY3RpdmUgPSBmdW5jdGlvbigpIHsKKyAgcmV0
dXJuIHsKKyAgICByZXN0cmljdDogJ0EnLAorICAgIHByaW9yaXR5OiAxMDAsCisgICAgcmVxdWly
ZTogJ25nTW9kZWwnLAorICAgIGxpbms6IGZ1bmN0aW9uKHNjb3BlLCBlbGVtZW50LCBhdHRyLCBj
dHJsKSB7CisgICAgICAvLyBXZSB3YW50IHRvIGNvbnRyb2wgd2hpdGVzcGFjZSB0cmltbWluZyBz
byB3ZSB1c2UgdGhpcyBjb252b2x1dGVkIGFwcHJvYWNoCisgICAgICAvLyB0byBhY2Nlc3MgdGhl
IG5nTGlzdCBhdHRyaWJ1dGUsIHdoaWNoIGRvZXNuJ3QgcHJlLXRyaW0gdGhlIGF0dHJpYnV0ZQor
ICAgICAgdmFyIG5nTGlzdCA9IGVsZW1lbnQuYXR0cihhdHRyLiRhdHRyLm5nTGlzdCkgfHwgJywg
JzsKKyAgICAgIHZhciB0cmltVmFsdWVzID0gYXR0ci5uZ1RyaW0gIT09ICdmYWxzZSc7CisgICAg
ICB2YXIgc2VwYXJhdG9yID0gdHJpbVZhbHVlcyA/IHRyaW0obmdMaXN0KSA6IG5nTGlzdDsKKwor
ICAgICAgdmFyIHBhcnNlID0gZnVuY3Rpb24odmlld1ZhbHVlKSB7CisgICAgICAgIC8vIElmIHRo
ZSB2aWV3VmFsdWUgaXMgaW52YWxpZCAoc2F5IHJlcXVpcmVkIGJ1dCBlbXB0eSkgaXQgd2lsbCBi
ZSBgdW5kZWZpbmVkYAorICAgICAgICBpZiAoaXNVbmRlZmluZWQodmlld1ZhbHVlKSkgcmV0dXJu
OworCisgICAgICAgIHZhciBsaXN0ID0gW107CisKKyAgICAgICAgaWYgKHZpZXdWYWx1ZSkgewor
ICAgICAgICAgIGZvckVhY2godmlld1ZhbHVlLnNwbGl0KHNlcGFyYXRvciksIGZ1bmN0aW9uKHZh
bHVlKSB7CisgICAgICAgICAgICBpZiAodmFsdWUpIGxpc3QucHVzaCh0cmltVmFsdWVzID8gdHJp
bSh2YWx1ZSkgOiB2YWx1ZSk7CisgICAgICAgICAgfSk7CisgICAgICAgIH0KKworICAgICAgICBy
ZXR1cm4gbGlzdDsKKyAgICAgIH07CisKKyAgICAgIGN0cmwuJHBhcnNlcnMucHVzaChwYXJzZSk7
CisgICAgICBjdHJsLiRmb3JtYXR0ZXJzLnB1c2goZnVuY3Rpb24odmFsdWUpIHsKKyAgICAgICAg
aWYgKGlzQXJyYXkodmFsdWUpKSB7CisgICAgICAgICAgcmV0dXJuIHZhbHVlLmpvaW4obmdMaXN0
KTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB1bmRlZmluZWQ7CisgICAgICB9KTsKKwor
ICAgICAgLy8gT3ZlcnJpZGUgdGhlIHN0YW5kYXJkICRpc0VtcHR5IGJlY2F1c2UgYW4gZW1wdHkg
YXJyYXkgbWVhbnMgdGhlIGlucHV0IGlzIGVtcHR5LgorICAgICAgY3RybC4kaXNFbXB0eSA9IGZ1
bmN0aW9uKHZhbHVlKSB7CisgICAgICAgIHJldHVybiAhdmFsdWUgfHwgIXZhbHVlLmxlbmd0aDsK
KyAgICAgIH07CisgICAgfQorICB9OworfTsKKworLyogZ2xvYmFsIFZBTElEX0NMQVNTOiB0cnVl
LAorICBJTlZBTElEX0NMQVNTOiB0cnVlLAorICBQUklTVElORV9DTEFTUzogdHJ1ZSwKKyAgRElS
VFlfQ0xBU1M6IHRydWUsCisgIFVOVE9VQ0hFRF9DTEFTUzogdHJ1ZSwKKyAgVE9VQ0hFRF9DTEFT
UzogdHJ1ZSwKKyovCisKK3ZhciBWQUxJRF9DTEFTUyA9ICduZy12YWxpZCcsCisgICAgSU5WQUxJ
RF9DTEFTUyA9ICduZy1pbnZhbGlkJywKKyAgICBQUklTVElORV9DTEFTUyA9ICduZy1wcmlzdGlu
ZScsCisgICAgRElSVFlfQ0xBU1MgPSAnbmctZGlydHknLAorICAgIFVOVE9VQ0hFRF9DTEFTUyA9
ICduZy11bnRvdWNoZWQnLAorICAgIFRPVUNIRURfQ0xBU1MgPSAnbmctdG91Y2hlZCcsCisgICAg
UEVORElOR19DTEFTUyA9ICduZy1wZW5kaW5nJzsKKworCit2YXIgJG5nTW9kZWxNaW5FcnIgPSBu
ZXcgbWluRXJyKCduZ01vZGVsJyk7CisKKy8qKgorICogQG5nZG9jIHR5cGUKKyAqIEBuYW1lIG5n
TW9kZWwuTmdNb2RlbENvbnRyb2xsZXIKKyAqCisgKiBAcHJvcGVydHkge3N0cmluZ30gJHZpZXdW
YWx1ZSBBY3R1YWwgc3RyaW5nIHZhbHVlIGluIHRoZSB2aWV3LgorICogQHByb3BlcnR5IHsqfSAk
bW9kZWxWYWx1ZSBUaGUgdmFsdWUgaW4gdGhlIG1vZGVsIHRoYXQgdGhlIGNvbnRyb2wgaXMgYm91
bmQgdG8uCisgKiBAcHJvcGVydHkge0FycmF5LjxGdW5jdGlvbj59ICRwYXJzZXJzIEFycmF5IG9m
IGZ1bmN0aW9ucyB0byBleGVjdXRlLCBhcyBhIHBpcGVsaW5lLCB3aGVuZXZlcgorICAgICAgIHRo
ZSBjb250cm9sIHJlYWRzIHZhbHVlIGZyb20gdGhlIERPTS4gVGhlIGZ1bmN0aW9ucyBhcmUgY2Fs
bGVkIGluIGFycmF5IG9yZGVyLCBlYWNoIHBhc3NpbmcKKyAgICAgICBpdHMgcmV0dXJuIHZhbHVl
IHRocm91Z2ggdG8gdGhlIG5leHQuIFRoZSBsYXN0IHJldHVybiB2YWx1ZSBpcyBmb3J3YXJkZWQg
dG8gdGhlCisgICAgICAge0BsaW5rIG5nTW9kZWwuTmdNb2RlbENvbnRyb2xsZXIjJHZhbGlkYXRv
cnMgYCR2YWxpZGF0b3JzYH0gY29sbGVjdGlvbi4KKworUGFyc2VycyBhcmUgdXNlZCB0byBzYW5p
dGl6ZSAvIGNvbnZlcnQgdGhlIHtAbGluayBuZ01vZGVsLk5nTW9kZWxDb250cm9sbGVyIyR2aWV3
VmFsdWUKK2Akdmlld1ZhbHVlYH0uCisKK1JldHVybmluZyBgdW5kZWZpbmVkYCBmcm9tIGEgcGFy
c2VyIG1lYW5zIGEgcGFyc2UgZXJyb3Igb2NjdXJyZWQuIEluIHRoYXQgY2FzZSwKK25vIHtAbGlu
ayBuZ01vZGVsLk5nTW9kZWxDb250cm9sbGVyIyR2YWxpZGF0b3JzIGAkdmFsaWRhdG9yc2B9IHdp
bGwgcnVuIGFuZCB0aGUgYG5nTW9kZWxgCit3aWxsIGJlIHNldCB0byBgdW5kZWZpbmVkYCB1bmxl
c3Mge0BsaW5rIG5nTW9kZWxPcHRpb25zIGBuZ01vZGVsT3B0aW9ucy5hbGxvd0ludmFsaWRgfQor
aXMgc2V0IHRvIGB0cnVlYC4gVGhlIHBhcnNlIGVycm9yIGlzIHN0b3JlZCBpbiBgbmdNb2RlbC4k
ZXJyb3IucGFyc2VgLgorCisgKgorICogQHByb3BlcnR5IHtBcnJheS48RnVuY3Rpb24+fSAkZm9y
bWF0dGVycyBBcnJheSBvZiBmdW5jdGlvbnMgdG8gZXhlY3V0ZSwgYXMgYSBwaXBlbGluZSwgd2hl
bmV2ZXIKKyAgICAgICB0aGUgbW9kZWwgdmFsdWUgY2hhbmdlcy4gVGhlIGZ1bmN0aW9ucyBhcmUg
Y2FsbGVkIGluIHJldmVyc2UgYXJyYXkgb3JkZXIsIGVhY2ggcGFzc2luZyB0aGUgdmFsdWUgdGhy
b3VnaCB0byB0aGUKKyAgICAgICBuZXh0LiBUaGUgbGFzdCByZXR1cm4gdmFsdWUgaXMgdXNlZCBh
cyB0aGUgYWN0dWFsIERPTSB2YWx1ZS4KKyAgICAgICBVc2VkIHRvIGZvcm1hdCAvIGNvbnZlcnQg
dmFsdWVzIGZvciBkaXNwbGF5IGluIHRoZSBjb250cm9sLgorICogYGBganMKKyAqIGZ1bmN0aW9u
IGZvcm1hdHRlcih2YWx1ZSkgeworICogICBpZiAodmFsdWUpIHsKKyAqICAgICByZXR1cm4gdmFs
dWUudG9VcHBlckNhc2UoKTsKKyAqICAgfQorICogfQorICogbmdNb2RlbC4kZm9ybWF0dGVycy5w
dXNoKGZvcm1hdHRlcik7CisgKiBgYGAKKyAqCisgKiBAcHJvcGVydHkge09iamVjdC48c3RyaW5n
LCBmdW5jdGlvbj59ICR2YWxpZGF0b3JzIEEgY29sbGVjdGlvbiBvZiB2YWxpZGF0b3JzIHRoYXQg
YXJlIGFwcGxpZWQKKyAqICAgICAgd2hlbmV2ZXIgdGhlIG1vZGVsIHZhbHVlIGNoYW5nZXMuIFRo
ZSBrZXkgdmFsdWUgd2l0aGluIHRoZSBvYmplY3QgcmVmZXJzIHRvIHRoZSBuYW1lIG9mIHRoZQor
ICogICAgICB2YWxpZGF0b3Igd2hpbGUgdGhlIGZ1bmN0aW9uIHJlZmVycyB0byB0aGUgdmFsaWRh
dGlvbiBvcGVyYXRpb24uIFRoZSB2YWxpZGF0aW9uIG9wZXJhdGlvbiBpcworICogICAgICBwcm92
aWRlZCB3aXRoIHRoZSBtb2RlbCB2YWx1ZSBhcyBhbiBhcmd1bWVudCBhbmQgbXVzdCByZXR1cm4g
YSB0cnVlIG9yIGZhbHNlIHZhbHVlIGRlcGVuZGluZworICogICAgICBvbiB0aGUgcmVzcG9uc2Ug
b2YgdGhhdCB2YWxpZGF0aW9uLgorICoKKyAqIGBgYGpzCisgKiBuZ01vZGVsLiR2YWxpZGF0b3Jz
LnZhbGlkQ2hhcmFjdGVycyA9IGZ1bmN0aW9uKG1vZGVsVmFsdWUsIHZpZXdWYWx1ZSkgeworICog
ICB2YXIgdmFsdWUgPSBtb2RlbFZhbHVlIHx8IHZpZXdWYWx1ZTsKKyAqICAgcmV0dXJuIC9bMC05
XSsvLnRlc3QodmFsdWUpICYmCisgKiAgICAgICAgICAvW2Etel0rLy50ZXN0KHZhbHVlKSAmJgor
ICogICAgICAgICAgL1tBLVpdKy8udGVzdCh2YWx1ZSkgJiYKKyAqICAgICAgICAgIC9cVysvLnRl
c3QodmFsdWUpOworICogfTsKKyAqIGBgYAorICoKKyAqIEBwcm9wZXJ0eSB7T2JqZWN0LjxzdHJp
bmcsIGZ1bmN0aW9uPn0gJGFzeW5jVmFsaWRhdG9ycyBBIGNvbGxlY3Rpb24gb2YgdmFsaWRhdGlv
bnMgdGhhdCBhcmUgZXhwZWN0ZWQgdG8KKyAqICAgICAgcGVyZm9ybSBhbiBhc3luY2hyb25vdXMg
dmFsaWRhdGlvbiAoZS5nLiBhIEhUVFAgcmVxdWVzdCkuIFRoZSB2YWxpZGF0aW9uIGZ1bmN0aW9u
IHRoYXQgaXMgcHJvdmlkZWQKKyAqICAgICAgaXMgZXhwZWN0ZWQgdG8gcmV0dXJuIGEgcHJvbWlz
ZSB3aGVuIGl0IGlzIHJ1biBkdXJpbmcgdGhlIG1vZGVsIHZhbGlkYXRpb24gcHJvY2Vzcy4gT25j
ZSB0aGUgcHJvbWlzZQorICogICAgICBpcyBkZWxpdmVyZWQgdGhlbiB0aGUgdmFsaWRhdGlvbiBz
dGF0dXMgd2lsbCBiZSBzZXQgdG8gdHJ1ZSB3aGVuIGZ1bGZpbGxlZCBhbmQgZmFsc2Ugd2hlbiBy
ZWplY3RlZC4KKyAqICAgICAgV2hlbiB0aGUgYXN5bmNocm9ub3VzIHZhbGlkYXRvcnMgYXJlIHRy
aWdnZXJlZCwgZWFjaCBvZiB0aGUgdmFsaWRhdG9ycyB3aWxsIHJ1biBpbiBwYXJhbGxlbCBhbmQg
dGhlIG1vZGVsCisgKiAgICAgIHZhbHVlIHdpbGwgb25seSBiZSB1cGRhdGVkIG9uY2UgYWxsIHZh
bGlkYXRvcnMgaGF2ZSBiZWVuIGZ1bGZpbGxlZC4gQXMgbG9uZyBhcyBhbiBhc3luY2hyb25vdXMg
dmFsaWRhdG9yCisgKiAgICAgIGlzIHVuZnVsZmlsbGVkLCBpdHMga2V5IHdpbGwgYmUgYWRkZWQg
dG8gdGhlIGNvbnRyb2xsZXJzIGAkcGVuZGluZ2AgcHJvcGVydHkuIEFsc28sIGFsbCBhc3luY2hy
b25vdXMgdmFsaWRhdG9ycworICogICAgICB3aWxsIG9ubHkgcnVuIG9uY2UgYWxsIHN5bmNocm9u
b3VzIHZhbGlkYXRvcnMgaGF2ZSBwYXNzZWQuCisgKgorICogUGxlYXNlIG5vdGUgdGhhdCBpZiAk
aHR0cCBpcyB1c2VkIHRoZW4gaXQgaXMgaW1wb3J0YW50IHRoYXQgdGhlIHNlcnZlciByZXR1cm5z
IGEgc3VjY2VzcyBIVFRQIHJlc3BvbnNlIGNvZGUKKyAqIGluIG9yZGVyIHRvIGZ1bGZpbGwgdGhl
IHZhbGlkYXRpb24gYW5kIGEgc3RhdHVzIGxldmVsIG9mIGA0eHhgIGluIG9yZGVyIHRvIHJlamVj
dCB0aGUgdmFsaWRhdGlvbi4KKyAqCisgKiBgYGBqcworICogbmdNb2RlbC4kYXN5bmNWYWxpZGF0
b3JzLnVuaXF1ZVVzZXJuYW1lID0gZnVuY3Rpb24obW9kZWxWYWx1ZSwgdmlld1ZhbHVlKSB7Cisg
KiAgIHZhciB2YWx1ZSA9IG1vZGVsVmFsdWUgfHwgdmlld1ZhbHVlOworICoKKyAqICAgLy8gTG9v
a3VwIHVzZXIgYnkgdXNlcm5hbWUKKyAqICAgcmV0dXJuICRodHRwLmdldCgnL2FwaS91c2Vycy8n
ICsgdmFsdWUpLgorICogICAgICB0aGVuKGZ1bmN0aW9uIHJlc29sdmVkKCkgeworICogICAgICAg
IC8vdXNlcm5hbWUgZXhpc3RzLCB0aGlzIG1lYW5zIHZhbGlkYXRpb24gZmFpbHMKKyAqICAgICAg
ICByZXR1cm4gJHEucmVqZWN0KCdleGlzdHMnKTsKKyAqICAgICAgfSwgZnVuY3Rpb24gcmVqZWN0
ZWQoKSB7CisgKiAgICAgICAgLy91c2VybmFtZSBkb2VzIG5vdCBleGlzdCwgdGhlcmVmb3JlIHRo
aXMgdmFsaWRhdGlvbiBwYXNzZXMKKyAqICAgICAgICByZXR1cm4gdHJ1ZTsKKyAqICAgICAgfSk7
CisgKiB9OworICogYGBgCisgKgorICogQHByb3BlcnR5IHtBcnJheS48RnVuY3Rpb24+fSAkdmll
d0NoYW5nZUxpc3RlbmVycyBBcnJheSBvZiBmdW5jdGlvbnMgdG8gZXhlY3V0ZSB3aGVuZXZlciB0
aGUKKyAqICAgICB2aWV3IHZhbHVlIGhhcyBjaGFuZ2VkLiBJdCBpcyBjYWxsZWQgd2l0aCBubyBh
cmd1bWVudHMsIGFuZCBpdHMgcmV0dXJuIHZhbHVlIGlzIGlnbm9yZWQuCisgKiAgICAgVGhpcyBj
YW4gYmUgdXNlZCBpbiBwbGFjZSBvZiBhZGRpdGlvbmFsICR3YXRjaGVzIGFnYWluc3QgdGhlIG1v
ZGVsIHZhbHVlLgorICoKKyAqIEBwcm9wZXJ0eSB7T2JqZWN0fSAkZXJyb3IgQW4gb2JqZWN0IGhh
c2ggd2l0aCBhbGwgZmFpbGluZyB2YWxpZGF0b3IgaWRzIGFzIGtleXMuCisgKiBAcHJvcGVydHkg
e09iamVjdH0gJHBlbmRpbmcgQW4gb2JqZWN0IGhhc2ggd2l0aCBhbGwgcGVuZGluZyB2YWxpZGF0
b3IgaWRzIGFzIGtleXMuCisgKgorICogQHByb3BlcnR5IHtib29sZWFufSAkdW50b3VjaGVkIFRy
dWUgaWYgY29udHJvbCBoYXMgbm90IGxvc3QgZm9jdXMgeWV0LgorICogQHByb3BlcnR5IHtib29s
ZWFufSAkdG91Y2hlZCBUcnVlIGlmIGNvbnRyb2wgaGFzIGxvc3QgZm9jdXMuCisgKiBAcHJvcGVy
dHkge2Jvb2xlYW59ICRwcmlzdGluZSBUcnVlIGlmIHVzZXIgaGFzIG5vdCBpbnRlcmFjdGVkIHdp
dGggdGhlIGNvbnRyb2wgeWV0LgorICogQHByb3BlcnR5IHtib29sZWFufSAkZGlydHkgVHJ1ZSBp
ZiB1c2VyIGhhcyBhbHJlYWR5IGludGVyYWN0ZWQgd2l0aCB0aGUgY29udHJvbC4KKyAqIEBwcm9w
ZXJ0eSB7Ym9vbGVhbn0gJHZhbGlkIFRydWUgaWYgdGhlcmUgaXMgbm8gZXJyb3IuCisgKiBAcHJv
cGVydHkge2Jvb2xlYW59ICRpbnZhbGlkIFRydWUgaWYgYXQgbGVhc3Qgb25lIGVycm9yIG9uIHRo
ZSBjb250cm9sLgorICogQHByb3BlcnR5IHtzdHJpbmd9ICRuYW1lIFRoZSBuYW1lIGF0dHJpYnV0
ZSBvZiB0aGUgY29udHJvbC4KKyAqCisgKiBAZGVzY3JpcHRpb24KKyAqCisgKiBgTmdNb2RlbENv
bnRyb2xsZXJgIHByb3ZpZGVzIEFQSSBmb3IgdGhlIHtAbGluayBuZ01vZGVsIGBuZ01vZGVsYH0g
ZGlyZWN0aXZlLgorICogVGhlIGNvbnRyb2xsZXIgY29udGFpbnMgc2VydmljZXMgZm9yIGRhdGEt
YmluZGluZywgdmFsaWRhdGlvbiwgQ1NTIHVwZGF0ZXMsIGFuZCB2YWx1ZSBmb3JtYXR0aW5nCisg
KiBhbmQgcGFyc2luZy4gSXQgcHVycG9zZWZ1bGx5IGRvZXMgbm90IGNvbnRhaW4gYW55IGxvZ2lj
IHdoaWNoIGRlYWxzIHdpdGggRE9NIHJlbmRlcmluZyBvcgorICogbGlzdGVuaW5nIHRvIERPTSBl
dmVudHMuCisgKiBTdWNoIERPTSByZWxhdGVkIGxvZ2ljIHNob3VsZCBiZSBwcm92aWRlZCBieSBv
dGhlciBkaXJlY3RpdmVzIHdoaWNoIG1ha2UgdXNlIG9mCisgKiBgTmdNb2RlbENvbnRyb2xsZXJg
IGZvciBkYXRhLWJpbmRpbmcgdG8gY29udHJvbCBlbGVtZW50cy4KKyAqIEFuZ3VsYXIgcHJvdmlk
ZXMgdGhpcyBET00gbG9naWMgZm9yIG1vc3Qge0BsaW5rIGlucHV0IGBpbnB1dGB9IGVsZW1lbnRz
LgorICogQXQgdGhlIGVuZCBvZiB0aGlzIHBhZ2UgeW91IGNhbiBmaW5kIGEge0BsaW5rIG5nTW9k
ZWwuTmdNb2RlbENvbnRyb2xsZXIjY3VzdG9tLWNvbnRyb2wtZXhhbXBsZQorICogY3VzdG9tIGNv
bnRyb2wgZXhhbXBsZX0gdGhhdCB1c2VzIGBuZ01vZGVsQ29udHJvbGxlcmAgdG8gYmluZCB0byBg
Y29udGVudGVkaXRhYmxlYCBlbGVtZW50cy4KKyAqCisgKiBAZXhhbXBsZQorICogIyMjIEN1c3Rv
bSBDb250cm9sIEV4YW1wbGUKKyAqIFRoaXMgZXhhbXBsZSBzaG93cyBob3cgdG8gdXNlIGBOZ01v
ZGVsQ29udHJvbGxlcmAgd2l0aCBhIGN1c3RvbSBjb250cm9sIHRvIGFjaGlldmUKKyAqIGRhdGEt
YmluZGluZy4gTm90aWNlIGhvdyBkaWZmZXJlbnQgZGlyZWN0aXZlcyAoYGNvbnRlbnRlZGl0YWJs
ZWAsIGBuZy1tb2RlbGAsIGFuZCBgcmVxdWlyZWRgKQorICogY29sbGFib3JhdGUgdG9nZXRoZXIg
dG8gYWNoaWV2ZSB0aGUgZGVzaXJlZCByZXN1bHQuCisgKgorICogYGNvbnRlbnRlZGl0YWJsZWAg
aXMgYW4gSFRNTDUgYXR0cmlidXRlLCB3aGljaCB0ZWxscyB0aGUgYnJvd3NlciB0byBsZXQgdGhl
IGVsZW1lbnQKKyAqIGNvbnRlbnRzIGJlIGVkaXRlZCBpbiBwbGFjZSBieSB0aGUgdXNlci4KKyAq
CisgKiBXZSBhcmUgdXNpbmcgdGhlIHtAbGluayBuZy5zZXJ2aWNlOiRzY2UgJHNjZX0gc2Vydmlj
ZSBoZXJlIGFuZCBpbmNsdWRlIHRoZSB7QGxpbmsgbmdTYW5pdGl6ZSAkc2FuaXRpemV9CisgKiBt
b2R1bGUgdG8gYXV0b21hdGljYWxseSByZW1vdmUgImJhZCIgY29udGVudCBsaWtlIGlubGluZSBl
dmVudCBsaXN0ZW5lciAoZS5nLiBgPHNwYW4gb25jbGljaz0iLi4uIj5gKS4KKyAqIEhvd2V2ZXIs
IGFzIHdlIGFyZSB1c2luZyBgJHNjZWAgdGhlIG1vZGVsIGNhbiBzdGlsbCBkZWNpZGUgdG8gcHJv
dmlkZSB1bnNhZmUgY29udGVudCBpZiBpdCBtYXJrcworICogdGhhdCBjb250ZW50IHVzaW5nIHRo
ZSBgJHNjZWAgc2VydmljZS4KKyAqCisgKiA8ZXhhbXBsZSBuYW1lPSJOZ01vZGVsQ29udHJvbGxl
ciIgbW9kdWxlPSJjdXN0b21Db250cm9sIiBkZXBzPSJhbmd1bGFyLXNhbml0aXplLmpzIj4KKyAg
ICA8ZmlsZSBuYW1lPSJzdHlsZS5jc3MiPgorICAgICAgW2NvbnRlbnRlZGl0YWJsZV0geworICAg
ICAgICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjog
d2hpdGU7CisgICAgICAgIG1pbi1oZWlnaHQ6IDIwcHg7CisgICAgICB9CisKKyAgICAgIC5uZy1p
bnZhbGlkIHsKKyAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmVkOworICAgICAgfQorCisgICAg
PC9maWxlPgorICAgIDxmaWxlIG5hbWU9InNjcmlwdC5qcyI+CisgICAgICBhbmd1bGFyLm1vZHVs
ZSgnY3VzdG9tQ29udHJvbCcsIFsnbmdTYW5pdGl6ZSddKS4KKyAgICAgICAgZGlyZWN0aXZlKCdj
b250ZW50ZWRpdGFibGUnLCBbJyRzY2UnLCBmdW5jdGlvbigkc2NlKSB7CisgICAgICAgICAgcmV0
dXJuIHsKKyAgICAgICAgICAgIHJlc3RyaWN0OiAnQScsIC8vIG9ubHkgYWN0aXZhdGUgb24gZWxl
bWVudCBhdHRyaWJ1dGUKKyAgICAgICAgICAgIHJlcXVpcmU6ICc/bmdNb2RlbCcsIC8vIGdldCBh
IGhvbGQgb2YgTmdNb2RlbENvbnRyb2xsZXIKKyAgICAgICAgICAgIGxpbms6IGZ1bmN0aW9uKHNj
b3BlLCBlbGVtZW50LCBhdHRycywgbmdNb2RlbCkgeworICAgICAgICAgICAgICBpZiAoIW5nTW9k
ZWwpIHJldHVybjsgLy8gZG8gbm90aGluZyBpZiBubyBuZy1tb2RlbAorCisgICAgICAgICAgICAg
IC8vIFNwZWNpZnkgaG93IFVJIHNob3VsZCBiZSB1cGRhdGVkCisgICAgICAgICAgICAgIG5nTW9k
ZWwuJHJlbmRlciA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGVsZW1lbnQuaHRtbCgk
c2NlLmdldFRydXN0ZWRIdG1sKG5nTW9kZWwuJHZpZXdWYWx1ZSB8fCAnJykpOworICAgICAgICAg
ICAgICB9OworCisgICAgICAgICAgICAgIC8vIExpc3RlbiBmb3IgY2hhbmdlIGV2ZW50cyB0byBl
bmFibGUgYmluZGluZworICAgICAgICAgICAgICBlbGVtZW50Lm9uKCdibHVyIGtleXVwIGNoYW5n
ZScsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHNjb3BlLiRldmFsQXN5bmMocmVhZCk7
CisgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICByZWFkKCk7IC8vIGluaXRpYWxpemUK
KworICAgICAgICAgICAgICAvLyBXcml0ZSBkYXRhIHRvIHRoZSBtb2RlbAorICAgICAgICAgICAg
ICBmdW5jdGlvbiByZWFkKCkgeworICAgICAgICAgICAgICAgIHZhciBodG1sID0gZWxlbWVudC5o
dG1sKCk7CisgICAgICAgICAgICAgICAgLy8gV2hlbiB3ZSBjbGVhciB0aGUgY29udGVudCBlZGl0
YWJsZSB0aGUgYnJvd3NlciBsZWF2ZXMgYSA8YnI+IGJlaGluZAorICAgICAgICAgICAgICAgIC8v
IElmIHN0cmlwLWJyIGF0dHJpYnV0ZSBpcyBwcm92aWRlZCB0aGVuIHdlIHN0cmlwIHRoaXMgb3V0
CisgICAgICAgICAgICAgICAgaWYgKCBhdHRycy5zdHJpcEJyICYmIGh0bWwgPT0gJzxicj4nICkg
eworICAgICAgICAgICAgICAgICAgaHRtbCA9ICcnOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBuZ01vZGVsLiRzZXRWaWV3VmFsdWUoaHRtbCk7CisgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgICB9OworICAgICAgICB9XSk7CisgICAgPC9maWxlPgor
ICAgIDxmaWxlIG5hbWU9ImluZGV4Lmh0bWwiPgorICAgICAgPGZvcm0gbmFtZT0ibXlGb3JtIj4K
KyAgICAgICA8ZGl2IGNvbnRlbnRlZGl0YWJsZQorICAgICAgICAgICAgbmFtZT0ibXlXaWRnZXQi
IG5nLW1vZGVsPSJ1c2VyQ29udGVudCIKKyAgICAgICAgICAgIHN0cmlwLWJyPSJ0cnVlIgorICAg
ICAgICAgICAgcmVxdWlyZWQ+Q2hhbmdlIG1lITwvZGl2PgorICAgICAgICA8c3BhbiBuZy1zaG93
PSJteUZvcm0ubXlXaWRnZXQuJGVycm9yLnJlcXVpcmVkIj5SZXF1aXJlZCE8L3NwYW4+CisgICAg
ICAgPGhyPgorICAgICAgIDx0ZXh0YXJlYSBuZy1tb2RlbD0idXNlckNvbnRlbnQiIGFyaWEtbGFi
ZWw9IkR5bmFtaWMgdGV4dGFyZWEiPjwvdGV4dGFyZWE+CisgICAgICA8L2Zvcm0+CisgICAgPC9m
aWxlPgorICAgIDxmaWxlIG5hbWU9InByb3RyYWN0b3IuanMiIHR5cGU9InByb3RyYWN0b3IiPgor
ICAgIGl0KCdzaG91bGQgZGF0YS1iaW5kIGFuZCBiZWNvbWUgaW52YWxpZCcsIGZ1bmN0aW9uKCkg
eworICAgICAgaWYgKGJyb3dzZXIucGFyYW1zLmJyb3dzZXIgPT0gJ3NhZmFyaScgfHwgYnJvd3Nl
ci5wYXJhbXMuYnJvd3NlciA9PSAnZmlyZWZveCcpIHsKKyAgICAgICAgLy8gU2FmYXJpRHJpdmVy
IGNhbid0IGhhbmRsZSBjb250ZW50ZWRpdGFibGUKKyAgICAgICAgLy8gYW5kIEZpcmVmb3ggZHJp
dmVyIGNhbid0IGNsZWFyIGNvbnRlbnRlZGl0YWJsZXMgdmVyeSB3ZWxsCisgICAgICAgIHJldHVy
bjsKKyAgICAgIH0KKyAgICAgIHZhciBjb250ZW50RWRpdGFibGUgPSBlbGVtZW50KGJ5LmNzcygn
W2NvbnRlbnRlZGl0YWJsZV0nKSk7CisgICAgICB2YXIgY29udGVudCA9ICdDaGFuZ2UgbWUhJzsK
KworICAgICAgZXhwZWN0KGNvbnRlbnRFZGl0YWJsZS5nZXRUZXh0KCkpLnRvRXF1YWwoY29udGVu
dCk7CisKKyAgICAgIGNvbnRlbnRFZGl0YWJsZS5jbGVhcigpOworICAgICAgY29udGVudEVkaXRh
YmxlLnNlbmRLZXlzKHByb3RyYWN0b3IuS2V5LkJBQ0tfU1BBQ0UpOworICAgICAgZXhwZWN0KGNv
bnRlbnRFZGl0YWJsZS5nZXRUZXh0KCkpLnRvRXF1YWwoJycpOworICAgICAgZXhwZWN0KGNvbnRl
bnRFZGl0YWJsZS5nZXRBdHRyaWJ1dGUoJ2NsYXNzJykpLnRvTWF0Y2goL25nLWludmFsaWQtcmVx
dWlyZWQvKTsKKyAgICB9KTsKKyAgICA8L2ZpbGU+CisgKiA8L2V4YW1wbGU+CisgKgorICoKKyAq
LwordmFyIE5nTW9kZWxDb250cm9sbGVyID0gWyckc2NvcGUnLCAnJGV4Y2VwdGlvbkhhbmRsZXIn
LCAnJGF0dHJzJywgJyRlbGVtZW50JywgJyRwYXJzZScsICckYW5pbWF0ZScsICckdGltZW91dCcs
ICckcm9vdFNjb3BlJywgJyRxJywgJyRpbnRlcnBvbGF0ZScsCisgICAgZnVuY3Rpb24oJHNjb3Bl
LCAkZXhjZXB0aW9uSGFuZGxlciwgJGF0dHIsICRlbGVtZW50LCAkcGFyc2UsICRhbmltYXRlLCAk
dGltZW91dCwgJHJvb3RTY29wZSwgJHEsICRpbnRlcnBvbGF0ZSkgeworICB0aGlzLiR2aWV3VmFs
dWUgPSBOdW1iZXIuTmFOOworICB0aGlzLiRtb2RlbFZhbHVlID0gTnVtYmVyLk5hTjsKKyAgdGhp
cy4kJHJhd01vZGVsVmFsdWUgPSB1bmRlZmluZWQ7IC8vIHN0b3JlcyB0aGUgcGFyc2VkIG1vZGVs
VmFsdWUgLyBtb2RlbCBzZXQgZnJvbSBzY29wZSByZWdhcmRsZXNzIG9mIHZhbGlkaXR5LgorICB0
aGlzLiR2YWxpZGF0b3JzID0ge307CisgIHRoaXMuJGFzeW5jVmFsaWRhdG9ycyA9IHt9OworICB0
aGlzLiRwYXJzZXJzID0gW107CisgIHRoaXMuJGZvcm1hdHRlcnMgPSBbXTsKKyAgdGhpcy4kdmll
d0NoYW5nZUxpc3RlbmVycyA9IFtdOworICB0aGlzLiR1bnRvdWNoZWQgPSB0cnVlOworICB0aGlz
LiR0b3VjaGVkID0gZmFsc2U7CisgIHRoaXMuJHByaXN0aW5lID0gdHJ1ZTsKKyAgdGhpcy4kZGly
dHkgPSBmYWxzZTsKKyAgdGhpcy4kdmFsaWQgPSB0cnVlOworICB0aGlzLiRpbnZhbGlkID0gZmFs
c2U7CisgIHRoaXMuJGVycm9yID0ge307IC8vIGtlZXAgaW52YWxpZCBrZXlzIGhlcmUKKyAgdGhp
cy4kJHN1Y2Nlc3MgPSB7fTsgLy8ga2VlcCB2YWxpZCBrZXlzIGhlcmUKKyAgdGhpcy4kcGVuZGlu
ZyA9IHVuZGVmaW5lZDsgLy8ga2VlcCBwZW5kaW5nIGtleXMgaGVyZQorICB0aGlzLiRuYW1lID0g
JGludGVycG9sYXRlKCRhdHRyLm5hbWUgfHwgJycsIGZhbHNlKSgkc2NvcGUpOworCisKKyAgdmFy
IHBhcnNlZE5nTW9kZWwgPSAkcGFyc2UoJGF0dHIubmdNb2RlbCksCisgICAgICBwYXJzZWROZ01v
ZGVsQXNzaWduID0gcGFyc2VkTmdNb2RlbC5hc3NpZ24sCisgICAgICBuZ01vZGVsR2V0ID0gcGFy
c2VkTmdNb2RlbCwKKyAgICAgIG5nTW9kZWxTZXQgPSBwYXJzZWROZ01vZGVsQXNzaWduLAorICAg
ICAgcGVuZGluZ0RlYm91bmNlID0gbnVsbCwKKyAgICAgIHBhcnNlclZhbGlkLAorICAgICAgY3Ry
bCA9IHRoaXM7CisKKyAgdGhpcy4kJHNldE9wdGlvbnMgPSBmdW5jdGlvbihvcHRpb25zKSB7Cisg
ICAgY3RybC4kb3B0aW9ucyA9IG9wdGlvbnM7CisgICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5n
ZXR0ZXJTZXR0ZXIpIHsKKyAgICAgIHZhciBpbnZva2VNb2RlbEdldHRlciA9ICRwYXJzZSgkYXR0
ci5uZ01vZGVsICsgJygpJyksCisgICAgICAgICAgaW52b2tlTW9kZWxTZXR0ZXIgPSAkcGFyc2Uo
JGF0dHIubmdNb2RlbCArICcoJCQkcCknKTsKKworICAgICAgbmdNb2RlbEdldCA9IGZ1bmN0aW9u
KCRzY29wZSkgeworICAgICAgICB2YXIgbW9kZWxWYWx1ZSA9IHBhcnNlZE5nTW9kZWwoJHNjb3Bl
KTsKKyAgICAgICAgaWYgKGlzRnVuY3Rpb24obW9kZWxWYWx1ZSkpIHsKKyAgICAgICAgICBtb2Rl
bFZhbHVlID0gaW52b2tlTW9kZWxHZXR0ZXIoJHNjb3BlKTsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm4gbW9kZWxWYWx1ZTsKKyAgICAgIH07CisgICAgICBuZ01vZGVsU2V0ID0gZnVuY3Rpb24o
JHNjb3BlLCBuZXdWYWx1ZSkgeworICAgICAgICBpZiAoaXNGdW5jdGlvbihwYXJzZWROZ01vZGVs
KCRzY29wZSkpKSB7CisgICAgICAgICAgaW52b2tlTW9kZWxTZXR0ZXIoJHNjb3BlLCB7JCQkcDog
Y3RybC4kbW9kZWxWYWx1ZX0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIHBhcnNlZE5n
TW9kZWxBc3NpZ24oJHNjb3BlLCBjdHJsLiRtb2RlbFZhbHVlKTsKKyAgICAgICAgfQorICAgICAg
fTsKKyAgICB9IGVsc2UgaWYgKCFwYXJzZWROZ01vZGVsLmFzc2lnbikgeworICAgICAgdGhyb3cg
JG5nTW9kZWxNaW5FcnIoJ25vbmFzc2lnbicsICJFeHByZXNzaW9uICd7MH0nIGlzIG5vbi1hc3Np
Z25hYmxlLiBFbGVtZW50OiB7MX0iLAorICAgICAgICAgICRhdHRyLm5nTW9kZWwsIHN0YXJ0aW5n
VGFnKCRlbGVtZW50KSk7CisgICAgfQorICB9OworCisgIC8qKgorICAgKiBAbmdkb2MgbWV0aG9k
CisgICAqIEBuYW1lIG5nTW9kZWwuTmdNb2RlbENvbnRyb2xsZXIjJHJlbmRlcgorICAgKgorICAg
KiBAZGVzY3JpcHRpb24KKyAgICogQ2FsbGVkIHdoZW4gdGhlIHZpZXcgbmVlZHMgdG8gYmUgdXBk
YXRlZC4gSXQgaXMgZXhwZWN0ZWQgdGhhdCB0aGUgdXNlciBvZiB0aGUgbmctbW9kZWwKKyAgICog
ZGlyZWN0aXZlIHdpbGwgaW1wbGVtZW50IHRoaXMgbWV0aG9kLgorICAgKgorICAgKiBUaGUgYCRy
ZW5kZXIoKWAgbWV0aG9kIGlzIGludm9rZWQgaW4gdGhlIGZvbGxvd2luZyBzaXR1YXRpb25zOgor
ICAgKgorICAgKiAqIGAkcm9sbGJhY2tWaWV3VmFsdWUoKWAgaXMgY2FsbGVkLiAgSWYgd2UgYXJl
IHJvbGxpbmcgYmFjayB0aGUgdmlldyB2YWx1ZSB0byB0aGUgbGFzdAorICAgKiAgIGNvbW1pdHRl
ZCB2YWx1ZSB0aGVuIGAkcmVuZGVyKClgIGlzIGNhbGxlZCB0byB1cGRhdGUgdGhlIGlucHV0IGNv
bnRyb2wuCisgICAqICogVGhlIHZhbHVlIHJlZmVyZW5jZWQgYnkgYG5nLW1vZGVsYCBpcyBjaGFu
Z2VkIHByb2dyYW1tYXRpY2FsbHkgYW5kIGJvdGggdGhlIGAkbW9kZWxWYWx1ZWAgYW5kCisgICAq
ICAgdGhlIGAkdmlld1ZhbHVlYCBhcmUgZGlmZmVyZW50IGZyb20gbGFzdCB0aW1lLgorICAgKgor
ICAgKiBTaW5jZSBgbmctbW9kZWxgIGRvZXMgbm90IGRvIGEgZGVlcCB3YXRjaCwgYCRyZW5kZXIo
KWAgaXMgb25seSBpbnZva2VkIGlmIHRoZSB2YWx1ZXMgb2YKKyAgICogYCRtb2RlbFZhbHVlYCBh
bmQgYCR2aWV3VmFsdWVgIGFyZSBhY3R1YWxseSBkaWZmZXJlbnQgZnJvbSB0aGVpciBwcmV2aW91
cyB2YWx1ZS4gSWYgYCRtb2RlbFZhbHVlYAorICAgKiBvciBgJHZpZXdWYWx1ZWAgYXJlIG9iamVj
dHMgKHJhdGhlciB0aGFuIGEgc3RyaW5nIG9yIG51bWJlcikgdGhlbiBgJHJlbmRlcigpYCB3aWxs
IG5vdCBiZQorICAgKiBpbnZva2VkIGlmIHlvdSBvbmx5IGNoYW5nZSBhIHByb3BlcnR5IG9uIHRo
ZSBvYmplY3RzLgorICAgKi8KKyAgdGhpcy4kcmVuZGVyID0gbm9vcDsKKworICAvKioKKyAgICog
QG5nZG9jIG1ldGhvZAorICAgKiBAbmFtZSBuZ01vZGVsLk5nTW9kZWxDb250cm9sbGVyIyRpc0Vt
cHR5CisgICAqCisgICAqIEBkZXNjcmlwdGlvbgorICAgKiBUaGlzIGlzIGNhbGxlZCB3aGVuIHdl
IG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZSB2YWx1ZSBvZiBhbiBpbnB1dCBpcyBlbXB0eS4KKyAg
ICoKKyAgICogRm9yIGluc3RhbmNlLCB0aGUgcmVxdWlyZWQgZGlyZWN0aXZlIGRvZXMgdGhpcyB0
byB3b3JrIG91dCBpZiB0aGUgaW5wdXQgaGFzIGRhdGEgb3Igbm90LgorICAgKgorICAgKiBUaGUg
ZGVmYXVsdCBgJGlzRW1wdHlgIGZ1bmN0aW9uIGNoZWNrcyB3aGV0aGVyIHRoZSB2YWx1ZSBpcyBg
dW5kZWZpbmVkYCwgYCcnYCwgYG51bGxgIG9yIGBOYU5gLgorICAgKgorICAgKiBZb3UgY2FuIG92
ZXJyaWRlIHRoaXMgZm9yIGlucHV0IGRpcmVjdGl2ZXMgd2hvc2UgY29uY2VwdCBvZiBiZWluZyBl
bXB0eSBpcyBkaWZmZXJlbnQgZnJvbSB0aGUKKyAgICogZGVmYXVsdC4gVGhlIGBjaGVja2JveElu
cHV0VHlwZWAgZGlyZWN0aXZlIGRvZXMgdGhpcyBiZWNhdXNlIGluIGl0cyBjYXNlIGEgdmFsdWUg
b2YgYGZhbHNlYAorICAgKiBpbXBsaWVzIGVtcHR5LgorICAgKgorICAgKiBAcGFyYW0geyp9IHZh
bHVlIFRoZSB2YWx1ZSBvZiB0aGUgaW5wdXQgdG8gY2hlY2sgZm9yIGVtcHRpbmVzcy4KKyAgICog
QHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgYHZhbHVlYCBpcyAiZW1wdHkiLgorICAgKi8KKyAg
dGhpcy4kaXNFbXB0eSA9IGZ1bmN0aW9uKHZhbHVlKSB7CisgICAgcmV0dXJuIGlzVW5kZWZpbmVk
KHZhbHVlKSB8fCB2YWx1ZSA9PT0gJycgfHwgdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgIT09IHZh
bHVlOworICB9OworCisgIHZhciBwYXJlbnRGb3JtID0gJGVsZW1lbnQuaW5oZXJpdGVkRGF0YSgn
JGZvcm1Db250cm9sbGVyJykgfHwgbnVsbEZvcm1DdHJsLAorICAgICAgY3VycmVudFZhbGlkYXRp
b25SdW5JZCA9IDA7CisKKyAgLyoqCisgICAqIEBuZ2RvYyBtZXRob2QKKyAgICogQG5hbWUgbmdN
b2RlbC5OZ01vZGVsQ29udHJvbGxlciMkc2V0VmFsaWRpdHkKKyAgICoKKyAgICogQGRlc2NyaXB0
aW9uCisgICAqIENoYW5nZSB0aGUgdmFsaWRpdHkgc3RhdGUsIGFuZCBub3RpZnkgdGhlIGZvcm0u
CisgICAqCisgICAqIFRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQgd2l0aGluICRwYXJzZXJzLyRm
b3JtYXR0ZXJzIG9yIGEgY3VzdG9tIHZhbGlkYXRpb24gaW1wbGVtZW50YXRpb24uCisgICAqIEhv
d2V2ZXIsIGluIG1vc3QgY2FzZXMgaXQgc2hvdWxkIGJlIHN1ZmZpY2llbnQgdG8gdXNlIHRoZSBg
bmdNb2RlbC4kdmFsaWRhdG9yc2AgYW5kCisgICAqIGBuZ01vZGVsLiRhc3luY1ZhbGlkYXRvcnNg
IGNvbGxlY3Rpb25zIHdoaWNoIHdpbGwgY2FsbCBgJHNldFZhbGlkaXR5YCBhdXRvbWF0aWNhbGx5
LgorICAgKgorICAgKiBAcGFyYW0ge3N0cmluZ30gdmFsaWRhdGlvbkVycm9yS2V5IE5hbWUgb2Yg
dGhlIHZhbGlkYXRvci4gVGhlIGB2YWxpZGF0aW9uRXJyb3JLZXlgIHdpbGwgYmUgYXNzaWduZWQK
KyAgICogICAgICAgIHRvIGVpdGhlciBgJGVycm9yW3ZhbGlkYXRpb25FcnJvcktleV1gIG9yIGAk
cGVuZGluZ1t2YWxpZGF0aW9uRXJyb3JLZXldYAorICAgKiAgICAgICAgKGZvciB1bmZ1bGZpbGxl
ZCBgJGFzeW5jVmFsaWRhdG9yc2ApLCBzbyB0aGF0IGl0IGlzIGF2YWlsYWJsZSBmb3IgZGF0YS1i
aW5kaW5nLgorICAgKiAgICAgICAgVGhlIGB2YWxpZGF0aW9uRXJyb3JLZXlgIHNob3VsZCBiZSBp
biBjYW1lbENhc2UgYW5kIHdpbGwgZ2V0IGNvbnZlcnRlZCBpbnRvIGRhc2gtY2FzZQorICAgKiAg
ICAgICAgZm9yIGNsYXNzIG5hbWUuIEV4YW1wbGU6IGBteUVycm9yYCB3aWxsIHJlc3VsdCBpbiBg
bmctdmFsaWQtbXktZXJyb3JgIGFuZCBgbmctaW52YWxpZC1teS1lcnJvcmAKKyAgICogICAgICAg
IGNsYXNzIGFuZCBjYW4gYmUgYm91bmQgdG8gYXMgIGB7e3NvbWVGb3JtLnNvbWVDb250cm9sLiRl
cnJvci5teUVycm9yfX1gIC4KKyAgICogQHBhcmFtIHtib29sZWFufSBpc1ZhbGlkIFdoZXRoZXIg
dGhlIGN1cnJlbnQgc3RhdGUgaXMgdmFsaWQgKHRydWUpLCBpbnZhbGlkIChmYWxzZSksIHBlbmRp
bmcgKHVuZGVmaW5lZCksCisgICAqICAgICAgICAgICAgICAgICAgICAgICAgICBvciBza2lwcGVk
IChudWxsKS4gUGVuZGluZyBpcyB1c2VkIGZvciB1bmZ1bGZpbGxlZCBgJGFzeW5jVmFsaWRhdG9y
c2AuCisgICAqICAgICAgICAgICAgICAgICAgICAgICAgICBTa2lwcGVkIGlzIHVzZWQgYnkgQW5n
dWxhciB3aGVuIHZhbGlkYXRvcnMgZG8gbm90IHJ1biBiZWNhdXNlIG9mIHBhcnNlIGVycm9ycyBh
bmQKKyAgICogICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gYCRhc3luY1ZhbGlkYXRvcnNg
IGRvIG5vdCBydW4gYmVjYXVzZSBhbnkgb2YgdGhlIGAkdmFsaWRhdG9yc2AgZmFpbGVkLgorICAg
Ki8KKyAgYWRkU2V0VmFsaWRpdHlNZXRob2QoeworICAgIGN0cmw6IHRoaXMsCisgICAgJGVsZW1l
bnQ6ICRlbGVtZW50LAorICAgIHNldDogZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeworICAg
ICAgb2JqZWN0W3Byb3BlcnR5XSA9IHRydWU7CisgICAgfSwKKyAgICB1bnNldDogZnVuY3Rpb24o
b2JqZWN0LCBwcm9wZXJ0eSkgeworICAgICAgZGVsZXRlIG9iamVjdFtwcm9wZXJ0eV07CisgICAg
fSwKKyAgICBwYXJlbnRGb3JtOiBwYXJlbnRGb3JtLAorICAgICRhbmltYXRlOiAkYW5pbWF0ZQor
ICB9KTsKKworICAvKioKKyAgICogQG5nZG9jIG1ldGhvZAorICAgKiBAbmFtZSBuZ01vZGVsLk5n
TW9kZWxDb250cm9sbGVyIyRzZXRQcmlzdGluZQorICAgKgorICAgKiBAZGVzY3JpcHRpb24KKyAg
ICogU2V0cyB0aGUgY29udHJvbCB0byBpdHMgcHJpc3RpbmUgc3RhdGUuCisgICAqCisgICAqIFRo
aXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQgdG8gcmVtb3ZlIHRoZSBgbmctZGlydHlgIGNsYXNzIGFu
ZCBzZXQgdGhlIGNvbnRyb2wgdG8gaXRzIHByaXN0aW5lCisgICAqIHN0YXRlIChgbmctcHJpc3Rp
bmVgIGNsYXNzKS4gQSBtb2RlbCBpcyBjb25zaWRlcmVkIHRvIGJlIHByaXN0aW5lIHdoZW4gdGhl
IGNvbnRyb2wKKyAgICogaGFzIG5vdCBiZWVuIGNoYW5nZWQgZnJvbSB3aGVuIGZpcnN0IGNvbXBp
bGVkLgorICAgKi8KKyAgdGhpcy4kc2V0UHJpc3RpbmUgPSBmdW5jdGlvbigpIHsKKyAgICBjdHJs
LiRkaXJ0eSA9IGZhbHNlOworICAgIGN0cmwuJHByaXN0aW5lID0gdHJ1ZTsKKyAgICAkYW5pbWF0
ZS5yZW1vdmVDbGFzcygkZWxlbWVudCwgRElSVFlfQ0xBU1MpOworICAgICRhbmltYXRlLmFkZENs
YXNzKCRlbGVtZW50LCBQUklTVElORV9DTEFTUyk7CisgIH07CisKKyAgLyoqCisgICAqIEBuZ2Rv
YyBtZXRob2QKKyAgICogQG5hbWUgbmdNb2RlbC5OZ01vZGVsQ29udHJvbGxlciMkc2V0RGlydHkK
KyAgICoKKyAgICogQGRlc2NyaXB0aW9uCisgICAqIFNldHMgdGhlIGNvbnRyb2wgdG8gaXRzIGRp
cnR5IHN0YXRlLgorICAgKgorICAgKiBUaGlzIG1ldGhvZCBjYW4gYmUgY2FsbGVkIHRvIHJlbW92
ZSB0aGUgYG5nLXByaXN0aW5lYCBjbGFzcyBhbmQgc2V0IHRoZSBjb250cm9sIHRvIGl0cyBkaXJ0
eQorICAgKiBzdGF0ZSAoYG5nLWRpcnR5YCBjbGFzcykuIEEgbW9kZWwgaXMgY29uc2lkZXJlZCB0
byBiZSBkaXJ0eSB3aGVuIHRoZSBjb250cm9sIGhhcyBiZWVuIGNoYW5nZWQKKyAgICogZnJvbSB3
aGVuIGZpcnN0IGNvbXBpbGVkLgorICAgKi8KKyAgdGhpcy4kc2V0RGlydHkgPSBmdW5jdGlvbigp
IHsKKyAgICBjdHJsLiRkaXJ0eSA9IHRydWU7CisgICAgY3RybC4kcHJpc3RpbmUgPSBmYWxzZTsK
KyAgICAkYW5pbWF0ZS5yZW1vdmVDbGFzcygkZWxlbWVudCwgUFJJU1RJTkVfQ0xBU1MpOworICAg
ICRhbmltYXRlLmFkZENsYXNzKCRlbGVtZW50LCBESVJUWV9DTEFTUyk7CisgICAgcGFyZW50Rm9y
bS4kc2V0RGlydHkoKTsKKyAgfTsKKworICAvKioKKyAgICogQG5nZG9jIG1ldGhvZAorICAgKiBA
bmFtZSBuZ01vZGVsLk5nTW9kZWxDb250cm9sbGVyIyRzZXRVbnRvdWNoZWQKKyAgICoKKyAgICog
QGRlc2NyaXB0aW9uCisgICAqIFNldHMgdGhlIGNvbnRyb2wgdG8gaXRzIHVudG91Y2hlZCBzdGF0
ZS4KKyAgICoKKyAgICogVGhpcyBtZXRob2QgY2FuIGJlIGNhbGxlZCB0byByZW1vdmUgdGhlIGBu
Zy10b3VjaGVkYCBjbGFzcyBhbmQgc2V0IHRoZSBjb250cm9sIHRvIGl0cworICAgKiB1bnRvdWNo
ZWQgc3RhdGUgKGBuZy11bnRvdWNoZWRgIGNsYXNzKS4gVXBvbiBjb21waWxhdGlvbiwgYSBtb2Rl
bCBpcyBzZXQgYXMgdW50b3VjaGVkCisgICAqIGJ5IGRlZmF1bHQsIGhvd2V2ZXIgdGhpcyBmdW5j
dGlvbiBjYW4gYmUgdXNlZCB0byByZXN0b3JlIHRoYXQgc3RhdGUgaWYgdGhlIG1vZGVsIGhhcwor
ICAgKiBhbHJlYWR5IGJlZW4gdG91Y2hlZCBieSB0aGUgdXNlci4KKyAgICovCisgIHRoaXMuJHNl
dFVudG91Y2hlZCA9IGZ1bmN0aW9uKCkgeworICAgIGN0cmwuJHRvdWNoZWQgPSBmYWxzZTsKKyAg
ICBjdHJsLiR1bnRvdWNoZWQgPSB0cnVlOworICAgICRhbmltYXRlLnNldENsYXNzKCRlbGVtZW50
LCBVTlRPVUNIRURfQ0xBU1MsIFRPVUNIRURfQ0xBU1MpOworICB9OworCisgIC8qKgorICAgKiBA
bmdkb2MgbWV0aG9kCisgICAqIEBuYW1lIG5nTW9kZWwuTmdNb2RlbENvbnRyb2xsZXIjJHNldFRv
dWNoZWQKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uCisgICAqIFNldHMgdGhlIGNvbnRyb2wgdG8g
aXRzIHRvdWNoZWQgc3RhdGUuCisgICAqCisgICAqIFRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQg
dG8gcmVtb3ZlIHRoZSBgbmctdW50b3VjaGVkYCBjbGFzcyBhbmQgc2V0IHRoZSBjb250cm9sIHRv
IGl0cworICAgKiB0b3VjaGVkIHN0YXRlIChgbmctdG91Y2hlZGAgY2xhc3MpLiBBIG1vZGVsIGlz
IGNvbnNpZGVyZWQgdG8gYmUgdG91Y2hlZCB3aGVuIHRoZSB1c2VyIGhhcworICAgKiBmaXJzdCBm
b2N1c2VkIHRoZSBjb250cm9sIGVsZW1lbnQgYW5kIHRoZW4gc2hpZnRlZCBmb2N1cyBhd2F5IGZy
b20gdGhlIGNvbnRyb2wgKGJsdXIgZXZlbnQpLgorICAgKi8KKyAgdGhpcy4kc2V0VG91Y2hlZCA9
IGZ1bmN0aW9uKCkgeworICAgIGN0cmwuJHRvdWNoZWQgPSB0cnVlOworICAgIGN0cmwuJHVudG91
Y2hlZCA9IGZhbHNlOworICAgICRhbmltYXRlLnNldENsYXNzKCRlbGVtZW50LCBUT1VDSEVEX0NM
QVNTLCBVTlRPVUNIRURfQ0xBU1MpOworICB9OworCisgIC8qKgorICAgKiBAbmdkb2MgbWV0aG9k
CisgICAqIEBuYW1lIG5nTW9kZWwuTmdNb2RlbENvbnRyb2xsZXIjJHJvbGxiYWNrVmlld1ZhbHVl
CisgICAqCisgICAqIEBkZXNjcmlwdGlvbgorICAgKiBDYW5jZWwgYW4gdXBkYXRlIGFuZCByZXNl
dCB0aGUgaW5wdXQgZWxlbWVudCdzIHZhbHVlIHRvIHByZXZlbnQgYW4gdXBkYXRlIHRvIHRoZSBg
JG1vZGVsVmFsdWVgLAorICAgKiB3aGljaCBtYXkgYmUgY2F1c2VkIGJ5IGEgcGVuZGluZyBkZWJv
dW5jZWQgZXZlbnQgb3IgYmVjYXVzZSB0aGUgaW5wdXQgaXMgd2FpdGluZyBmb3IgYSBzb21lCisg
ICAqIGZ1dHVyZSBldmVudC4KKyAgICoKKyAgICogSWYgeW91IGhhdmUgYW4gaW5wdXQgdGhhdCB1
c2VzIGBuZy1tb2RlbC1vcHRpb25zYCB0byBzZXQgdXAgZGVib3VuY2VkIGV2ZW50cyBvciBldmVu
dHMgc3VjaAorICAgKiBhcyBibHVyIHlvdSBjYW4gaGF2ZSBhIHNpdHVhdGlvbiB3aGVyZSB0aGVy
ZSBpcyBhIHBlcmlvZCB3aGVuIHRoZSBgJHZpZXdWYWx1ZWAKKyAgICogaXMgb3V0IG9mIHN5bmNo
IHdpdGggdGhlIG5nTW9kZWwncyBgJG1vZGVsVmFsdWVgLgorICAgKgorICAgKiBJbiB0aGlzIGNh
c2UsIHlvdSBjYW4gcnVuIGludG8gZGlmZmljdWx0aWVzIGlmIHlvdSB0cnkgdG8gdXBkYXRlIHRo
ZSBuZ01vZGVsJ3MgYCRtb2RlbFZhbHVlYAorICAgKiBwcm9ncmFtbWF0aWNhbGx5IGJlZm9yZSB0
aGVzZSBkZWJvdW5jZWQvZnV0dXJlIGV2ZW50cyBoYXZlIHJlc29sdmVkL29jY3VycmVkLCBiZWNh
dXNlIEFuZ3VsYXIncworICAgKiBkaXJ0eSBjaGVja2luZyBtZWNoYW5pc20gaXMgbm90IGFibGUg
dG8gdGVsbCB3aGV0aGVyIHRoZSBtb2RlbCBoYXMgYWN0dWFsbHkgY2hhbmdlZCBvciBub3QuCisg
ICAqCisgICAqIFRoZSBgJHJvbGxiYWNrVmlld1ZhbHVlKClgIG1ldGhvZCBzaG91bGQgYmUgY2Fs
bGVkIGJlZm9yZSBwcm9ncmFtbWF0aWNhbGx5IGNoYW5naW5nIHRoZSBtb2RlbCBvZiBhbgorICAg
KiBpbnB1dCB3aGljaCBtYXkgaGF2ZSBzdWNoIGV2ZW50cyBwZW5kaW5nLiBUaGlzIGlzIGltcG9y
dGFudCBpbiBvcmRlciB0byBtYWtlIHN1cmUgdGhhdCB0aGUKKyAgICogaW5wdXQgZmllbGQgd2ls
bCBiZSB1cGRhdGVkIHdpdGggdGhlIG5ldyBtb2RlbCB2YWx1ZSBhbmQgYW55IHBlbmRpbmcgb3Bl
cmF0aW9ucyBhcmUgY2FuY2VsbGVkLgorICAgKgorICAgKiA8ZXhhbXBsZSBuYW1lPSJuZy1tb2Rl
bC1jYW5jZWwtdXBkYXRlIiBtb2R1bGU9ImNhbmNlbC11cGRhdGUtZXhhbXBsZSI+CisgICAqICAg
PGZpbGUgbmFtZT0iYXBwLmpzIj4KKyAgICogICAgIGFuZ3VsYXIubW9kdWxlKCdjYW5jZWwtdXBk
YXRlLWV4YW1wbGUnLCBbXSkKKyAgICoKKyAgICogICAgIC5jb250cm9sbGVyKCdDYW5jZWxVcGRh
dGVDb250cm9sbGVyJywgWyckc2NvcGUnLCBmdW5jdGlvbigkc2NvcGUpIHsKKyAgICogICAgICAg
JHNjb3BlLnJlc2V0V2l0aENhbmNlbCA9IGZ1bmN0aW9uKGUpIHsKKyAgICogICAgICAgICBpZiAo
ZS5rZXlDb2RlID09IDI3KSB7CisgICAqICAgICAgICAgICAkc2NvcGUubXlGb3JtLm15SW5wdXQx
LiRyb2xsYmFja1ZpZXdWYWx1ZSgpOworICAgKiAgICAgICAgICAgJHNjb3BlLm15VmFsdWUgPSAn
JzsKKyAgICogICAgICAgICB9CisgICAqICAgICAgIH07CisgICAqICAgICAgICRzY29wZS5yZXNl
dFdpdGhvdXRDYW5jZWwgPSBmdW5jdGlvbihlKSB7CisgICAqICAgICAgICAgaWYgKGUua2V5Q29k
ZSA9PSAyNykgeworICAgKiAgICAgICAgICAgJHNjb3BlLm15VmFsdWUgPSAnJzsKKyAgICogICAg
ICAgICB9CisgICAqICAgICAgIH07CisgICAqICAgICB9XSk7CisgICAqICAgPC9maWxlPgorICAg
KiAgIDxmaWxlIG5hbWU9ImluZGV4Lmh0bWwiPgorICAgKiAgICAgPGRpdiBuZy1jb250cm9sbGVy
PSJDYW5jZWxVcGRhdGVDb250cm9sbGVyIj4KKyAgICogICAgICAgPHA+VHJ5IHR5cGluZyBzb21l
dGhpbmcgaW4gZWFjaCBpbnB1dC4gIFNlZSB0aGF0IHRoZSBtb2RlbCBvbmx5IHVwZGF0ZXMgd2hl
biB5b3UKKyAgICogICAgICAgICAgYmx1ciBvZmYgdGhlIGlucHV0LgorICAgKiAgICAgICAgPC9w
PgorICAgKiAgICAgICAgPHA+Tm93IHNlZSB3aGF0IGhhcHBlbnMgaWYgeW91IHN0YXJ0IHR5cGlu
ZyB0aGVuIHByZXNzIHRoZSBFc2NhcGUga2V5PC9wPgorICAgKgorICAgKiAgICAgICA8Zm9ybSBu
YW1lPSJteUZvcm0iIG5nLW1vZGVsLW9wdGlvbnM9InsgdXBkYXRlT246ICdibHVyJyB9Ij4KKyAg
ICogICAgICAgICA8cCBpZD0iaW5wdXREZXNjcmlwdGlvbjEiPldpdGggJHJvbGxiYWNrVmlld1Zh
bHVlKCk8L3A+CisgICAqICAgICAgICAgPGlucHV0IG5hbWU9Im15SW5wdXQxIiBhcmlhLWRlc2Ny
aWJlZGJ5PSJpbnB1dERlc2NyaXB0aW9uMSIgbmctbW9kZWw9Im15VmFsdWUiCisgICAqICAgICAg
ICAgICAgICAgIG5nLWtleWRvd249InJlc2V0V2l0aENhbmNlbCgkZXZlbnQpIj48YnIvPgorICAg
KiAgICAgICAgIG15VmFsdWU6ICJ7eyBteVZhbHVlIH19IgorICAgKgorICAgKiAgICAgICAgIDxw
IGlkPSJpbnB1dERlc2NyaXB0aW9uMiI+V2l0aG91dCAkcm9sbGJhY2tWaWV3VmFsdWUoKTwvcD4K
KyAgICogICAgICAgICA8aW5wdXQgbmFtZT0ibXlJbnB1dDIiIGFyaWEtZGVzY3JpYmVkYnk9Imlu
cHV0RGVzY3JpcHRpb24yIiBuZy1tb2RlbD0ibXlWYWx1ZSIKKyAgICogICAgICAgICAgICAgICAg
bmcta2V5ZG93bj0icmVzZXRXaXRob3V0Q2FuY2VsKCRldmVudCkiPjxici8+CisgICAqICAgICAg
ICAgbXlWYWx1ZTogInt7IG15VmFsdWUgfX0iCisgICAqICAgICAgIDwvZm9ybT4KKyAgICogICAg
IDwvZGl2PgorICAgKiAgIDwvZmlsZT4KKyAgICogPC9leGFtcGxlPgorICAgKi8KKyAgdGhpcy4k
cm9sbGJhY2tWaWV3VmFsdWUgPSBmdW5jdGlvbigpIHsKKyAgICAkdGltZW91dC5jYW5jZWwocGVu
ZGluZ0RlYm91bmNlKTsKKyAgICBjdHJsLiR2aWV3VmFsdWUgPSBjdHJsLiQkbGFzdENvbW1pdHRl
ZFZpZXdWYWx1ZTsKKyAgICBjdHJsLiRyZW5kZXIoKTsKKyAgfTsKKworICAvKioKKyAgICogQG5n
ZG9jIG1ldGhvZAorICAgKiBAbmFtZSBuZ01vZGVsLk5nTW9kZWxDb250cm9sbGVyIyR2YWxpZGF0
ZQorICAgKgorICAgKiBAZGVzY3JpcHRpb24KKyAgICogUnVucyBlYWNoIG9mIHRoZSByZWdpc3Rl
cmVkIHZhbGlkYXRvcnMgKGZpcnN0IHN5bmNocm9ub3VzIHZhbGlkYXRvcnMgYW5kIHRoZW4KKyAg
ICogYXN5bmNocm9ub3VzIHZhbGlkYXRvcnMpLgorICAgKiBJZiB0aGUgdmFsaWRpdHkgY2hhbmdl
cyB0byBpbnZhbGlkLCB0aGUgbW9kZWwgd2lsbCBiZSBzZXQgdG8gYHVuZGVmaW5lZGAsCisgICAq
IHVubGVzcyB7QGxpbmsgbmdNb2RlbE9wdGlvbnMgYG5nTW9kZWxPcHRpb25zLmFsbG93SW52YWxp
ZGB9IGlzIGB0cnVlYC4KKyAgICogSWYgdGhlIHZhbGlkaXR5IGNoYW5nZXMgdG8gdmFsaWQsIGl0
IHdpbGwgc2V0IHRoZSBtb2RlbCB0byB0aGUgbGFzdCBhdmFpbGFibGUgdmFsaWQKKyAgICogYCRt
b2RlbFZhbHVlYCwgaS5lLiBlaXRoZXIgdGhlIGxhc3QgcGFyc2VkIHZhbHVlIG9yIHRoZSBsYXN0
IHZhbHVlIHNldCBmcm9tIHRoZSBzY29wZS4KKyAgICovCisgIHRoaXMuJHZhbGlkYXRlID0gZnVu
Y3Rpb24oKSB7CisgICAgLy8gaWdub3JlICR2YWxpZGF0ZSBiZWZvcmUgbW9kZWwgaXMgaW5pdGlh
bGl6ZWQKKyAgICBpZiAoaXNOdW1iZXIoY3RybC4kbW9kZWxWYWx1ZSkgJiYgaXNOYU4oY3RybC4k
bW9kZWxWYWx1ZSkpIHsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2YXIgdmlld1ZhbHVl
ID0gY3RybC4kJGxhc3RDb21taXR0ZWRWaWV3VmFsdWU7CisgICAgLy8gTm90ZTogd2UgdXNlIHRo
ZSAkJHJhd01vZGVsVmFsdWUgYXMgJG1vZGVsVmFsdWUgbWlnaHQgaGF2ZSBiZWVuCisgICAgLy8g
c2V0IHRvIHVuZGVmaW5lZCBkdXJpbmcgYSB2aWV3IC0+IG1vZGVsIHVwZGF0ZSB0aGF0IGZvdW5k
IHZhbGlkYXRpb24KKyAgICAvLyBlcnJvcnMuIFdlIGNhbid0IHBhcnNlIHRoZSB2aWV3IGhlcmUs
IHNpbmNlIHRoYXQgY291bGQgY2hhbmdlCisgICAgLy8gdGhlIG1vZGVsIGFsdGhvdWdoIG5laXRo
ZXIgdmlld1ZhbHVlIG5vciB0aGUgbW9kZWwgb24gdGhlIHNjb3BlIGNoYW5nZWQKKyAgICB2YXIg
bW9kZWxWYWx1ZSA9IGN0cmwuJCRyYXdNb2RlbFZhbHVlOworCisgICAgdmFyIHByZXZWYWxpZCA9
IGN0cmwuJHZhbGlkOworICAgIHZhciBwcmV2TW9kZWxWYWx1ZSA9IGN0cmwuJG1vZGVsVmFsdWU7
CisKKyAgICB2YXIgYWxsb3dJbnZhbGlkID0gY3RybC4kb3B0aW9ucyAmJiBjdHJsLiRvcHRpb25z
LmFsbG93SW52YWxpZDsKKworICAgIGN0cmwuJCRydW5WYWxpZGF0b3JzKG1vZGVsVmFsdWUsIHZp
ZXdWYWx1ZSwgZnVuY3Rpb24oYWxsVmFsaWQpIHsKKyAgICAgIC8vIElmIHRoZXJlIHdhcyBubyBj
aGFuZ2UgaW4gdmFsaWRpdHksIGRvbid0IHVwZGF0ZSB0aGUgbW9kZWwKKyAgICAgIC8vIFRoaXMg
cHJldmVudHMgY2hhbmdpbmcgYW4gaW52YWxpZCBtb2RlbFZhbHVlIHRvIHVuZGVmaW5lZAorICAg
ICAgaWYgKCFhbGxvd0ludmFsaWQgJiYgcHJldlZhbGlkICE9PSBhbGxWYWxpZCkgeworICAgICAg
ICAvLyBOb3RlOiBEb24ndCBjaGVjayBjdHJsLiR2YWxpZCBoZXJlLCBhcyB3ZSBjb3VsZCBoYXZl
CisgICAgICAgIC8vIGV4dGVybmFsIHZhbGlkYXRvcnMgKGUuZy4gY2FsY3VsYXRlZCBvbiB0aGUg
c2VydmVyKSwKKyAgICAgICAgLy8gdGhhdCBqdXN0IGNhbGwgJHNldFZhbGlkaXR5IGFuZCBuZWVk
IHRoZSBtb2RlbCB2YWx1ZQorICAgICAgICAvLyB0byBjYWxjdWxhdGUgdGhlaXIgdmFsaWRpdHku
CisgICAgICAgIGN0cmwuJG1vZGVsVmFsdWUgPSBhbGxWYWxpZCA/IG1vZGVsVmFsdWUgOiB1bmRl
ZmluZWQ7CisKKyAgICAgICAgaWYgKGN0cmwuJG1vZGVsVmFsdWUgIT09IHByZXZNb2RlbFZhbHVl
KSB7CisgICAgICAgICAgY3RybC4kJHdyaXRlTW9kZWxUb1Njb3BlKCk7CisgICAgICAgIH0KKyAg
ICAgIH0KKyAgICB9KTsKKworICB9OworCisgIHRoaXMuJCRydW5WYWxpZGF0b3JzID0gZnVuY3Rp
b24obW9kZWxWYWx1ZSwgdmlld1ZhbHVlLCBkb25lQ2FsbGJhY2spIHsKKyAgICBjdXJyZW50VmFs
aWRhdGlvblJ1bklkKys7CisgICAgdmFyIGxvY2FsVmFsaWRhdGlvblJ1bklkID0gY3VycmVudFZh
bGlkYXRpb25SdW5JZDsKKworICAgIC8vIGNoZWNrIHBhcnNlciBlcnJvcgorICAgIGlmICghcHJv
Y2Vzc1BhcnNlRXJyb3JzKCkpIHsKKyAgICAgIHZhbGlkYXRpb25Eb25lKGZhbHNlKTsKKyAgICAg
IHJldHVybjsKKyAgICB9CisgICAgaWYgKCFwcm9jZXNzU3luY1ZhbGlkYXRvcnMoKSkgeworICAg
ICAgdmFsaWRhdGlvbkRvbmUoZmFsc2UpOworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBwcm9j
ZXNzQXN5bmNWYWxpZGF0b3JzKCk7CisKKyAgICBmdW5jdGlvbiBwcm9jZXNzUGFyc2VFcnJvcnMo
KSB7CisgICAgICB2YXIgZXJyb3JLZXkgPSBjdHJsLiQkcGFyc2VyTmFtZSB8fCAncGFyc2UnOwor
ICAgICAgaWYgKHBhcnNlclZhbGlkID09PSB1bmRlZmluZWQpIHsKKyAgICAgICAgc2V0VmFsaWRp
dHkoZXJyb3JLZXksIG51bGwpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKCFwYXJzZXJW
YWxpZCkgeworICAgICAgICAgIGZvckVhY2goY3RybC4kdmFsaWRhdG9ycywgZnVuY3Rpb24odiwg
bmFtZSkgeworICAgICAgICAgICAgc2V0VmFsaWRpdHkobmFtZSwgbnVsbCk7CisgICAgICAgICAg
fSk7CisgICAgICAgICAgZm9yRWFjaChjdHJsLiRhc3luY1ZhbGlkYXRvcnMsIGZ1bmN0aW9uKHYs
IG5hbWUpIHsKKyAgICAgICAgICAgIHNldFZhbGlkaXR5KG5hbWUsIG51bGwpOworICAgICAgICAg
IH0pOworICAgICAgICB9CisgICAgICAgIC8vIFNldCB0aGUgcGFyc2UgZXJyb3IgbGFzdCwgdG8g
cHJldmVudCB1bnNldHRpbmcgaXQsIHNob3VsZCBhICR2YWxpZGF0b3JzIGtleSA9PSBwYXJzZXJO
YW1lCisgICAgICAgIHNldFZhbGlkaXR5KGVycm9yS2V5LCBwYXJzZXJWYWxpZCk7CisgICAgICAg
IHJldHVybiBwYXJzZXJWYWxpZDsKKyAgICAgIH0KKyAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KworICAgIGZ1bmN0aW9uIHByb2Nlc3NTeW5jVmFsaWRhdG9ycygpIHsKKyAgICAgIHZhciBzeW5j
VmFsaWRhdG9yc1ZhbGlkID0gdHJ1ZTsKKyAgICAgIGZvckVhY2goY3RybC4kdmFsaWRhdG9ycywg
ZnVuY3Rpb24odmFsaWRhdG9yLCBuYW1lKSB7CisgICAgICAgIHZhciByZXN1bHQgPSB2YWxpZGF0
b3IobW9kZWxWYWx1ZSwgdmlld1ZhbHVlKTsKKyAgICAgICAgc3luY1ZhbGlkYXRvcnNWYWxpZCA9
IHN5bmNWYWxpZGF0b3JzVmFsaWQgJiYgcmVzdWx0OworICAgICAgICBzZXRWYWxpZGl0eShuYW1l
LCByZXN1bHQpOworICAgICAgfSk7CisgICAgICBpZiAoIXN5bmNWYWxpZGF0b3JzVmFsaWQpIHsK
KyAgICAgICAgZm9yRWFjaChjdHJsLiRhc3luY1ZhbGlkYXRvcnMsIGZ1bmN0aW9uKHYsIG5hbWUp
IHsKKyAgICAgICAgICBzZXRWYWxpZGl0eShuYW1lLCBudWxsKTsKKyAgICAgICAgfSk7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgIH0KKyAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwor
ICAgIGZ1bmN0aW9uIHByb2Nlc3NBc3luY1ZhbGlkYXRvcnMoKSB7CisgICAgICB2YXIgdmFsaWRh
dG9yUHJvbWlzZXMgPSBbXTsKKyAgICAgIHZhciBhbGxWYWxpZCA9IHRydWU7CisgICAgICBmb3JF
YWNoKGN0cmwuJGFzeW5jVmFsaWRhdG9ycywgZnVuY3Rpb24odmFsaWRhdG9yLCBuYW1lKSB7Cisg
ICAgICAgIHZhciBwcm9taXNlID0gdmFsaWRhdG9yKG1vZGVsVmFsdWUsIHZpZXdWYWx1ZSk7Cisg
ICAgICAgIGlmICghaXNQcm9taXNlTGlrZShwcm9taXNlKSkgeworICAgICAgICAgIHRocm93ICRu
Z01vZGVsTWluRXJyKCIkYXN5bmNWYWxpZGF0b3JzIiwKKyAgICAgICAgICAgICJFeHBlY3RlZCBh
c3luY2hyb25vdXMgdmFsaWRhdG9yIHRvIHJldHVybiBhIHByb21pc2UgYnV0IGdvdCAnezB9JyBp
bnN0ZWFkLiIsIHByb21pc2UpOworICAgICAgICB9CisgICAgICAgIHNldFZhbGlkaXR5KG5hbWUs
IHVuZGVmaW5lZCk7CisgICAgICAgIHZhbGlkYXRvclByb21pc2VzLnB1c2gocHJvbWlzZS50aGVu
KGZ1bmN0aW9uKCkgeworICAgICAgICAgIHNldFZhbGlkaXR5KG5hbWUsIHRydWUpOworICAgICAg
ICB9LCBmdW5jdGlvbihlcnJvcikgeworICAgICAgICAgIGFsbFZhbGlkID0gZmFsc2U7CisgICAg
ICAgICAgc2V0VmFsaWRpdHkobmFtZSwgZmFsc2UpOworICAgICAgICB9KSk7CisgICAgICB9KTsK
KyAgICAgIGlmICghdmFsaWRhdG9yUHJvbWlzZXMubGVuZ3RoKSB7CisgICAgICAgIHZhbGlkYXRp
b25Eb25lKHRydWUpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgJHEuYWxsKHZhbGlkYXRvclBy
b21pc2VzKS50aGVuKGZ1bmN0aW9uKCkgeworICAgICAgICAgIHZhbGlkYXRpb25Eb25lKGFsbFZh
bGlkKTsKKyAgICAgICAgfSwgbm9vcCk7CisgICAgICB9CisgICAgfQorCisgICAgZnVuY3Rpb24g
c2V0VmFsaWRpdHkobmFtZSwgaXNWYWxpZCkgeworICAgICAgaWYgKGxvY2FsVmFsaWRhdGlvblJ1
bklkID09PSBjdXJyZW50VmFsaWRhdGlvblJ1bklkKSB7CisgICAgICAgIGN0cmwuJHNldFZhbGlk
aXR5KG5hbWUsIGlzVmFsaWQpOworICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIHZhbGlk
YXRpb25Eb25lKGFsbFZhbGlkKSB7CisgICAgICBpZiAobG9jYWxWYWxpZGF0aW9uUnVuSWQgPT09
IGN1cnJlbnRWYWxpZGF0aW9uUnVuSWQpIHsKKworICAgICAgICBkb25lQ2FsbGJhY2soYWxsVmFs
aWQpOworICAgICAgfQorICAgIH0KKyAgfTsKKworICAvKioKKyAgICogQG5nZG9jIG1ldGhvZAor
ICAgKiBAbmFtZSBuZ01vZGVsLk5nTW9kZWxDb250cm9sbGVyIyRjb21taXRWaWV3VmFsdWUKKyAg
ICoKKyAgICogQGRlc2NyaXB0aW9uCisgICAqIENvbW1pdCBhIHBlbmRpbmcgdXBkYXRlIHRvIHRo
ZSBgJG1vZGVsVmFsdWVgLgorICAgKgorICAgKiBVcGRhdGVzIG1heSBiZSBwZW5kaW5nIGJ5IGEg
ZGVib3VuY2VkIGV2ZW50IG9yIGJlY2F1c2UgdGhlIGlucHV0IGlzIHdhaXRpbmcgZm9yIGEgc29t
ZSBmdXR1cmUKKyAgICogZXZlbnQgZGVmaW5lZCBpbiBgbmctbW9kZWwtb3B0aW9uc2AuIHRoaXMg
bWV0aG9kIGlzIHJhcmVseSBuZWVkZWQgYXMgYE5nTW9kZWxDb250cm9sbGVyYAorICAgKiB1c3Vh
bGx5IGhhbmRsZXMgY2FsbGluZyB0aGlzIGluIHJlc3BvbnNlIHRvIGlucHV0IGV2ZW50cy4KKyAg
ICovCisgIHRoaXMuJGNvbW1pdFZpZXdWYWx1ZSA9IGZ1bmN0aW9uKCkgeworICAgIHZhciB2aWV3
VmFsdWUgPSBjdHJsLiR2aWV3VmFsdWU7CisKKyAgICAkdGltZW91dC5jYW5jZWwocGVuZGluZ0Rl
Ym91bmNlKTsKKworICAgIC8vIElmIHRoZSB2aWV3IHZhbHVlIGhhcyBub3QgY2hhbmdlZCB0aGVu
IHdlIHNob3VsZCBqdXN0IGV4aXQsIGV4Y2VwdCBpbiB0aGUgY2FzZSB3aGVyZSB0aGVyZSBpcwor
ICAgIC8vIGEgbmF0aXZlIHZhbGlkYXRvciBvbiB0aGUgZWxlbWVudC4gSW4gdGhpcyBjYXNlIHRo
ZSB2YWxpZGF0aW9uIHN0YXRlIG1heSBoYXZlIGNoYW5nZWQgZXZlbiB0aG91Z2gKKyAgICAvLyB0
aGUgdmlld1ZhbHVlIGhhcyBzdGF5ZWQgZW1wdHkuCisgICAgaWYgKGN0cmwuJCRsYXN0Q29tbWl0
dGVkVmlld1ZhbHVlID09PSB2aWV3VmFsdWUgJiYgKHZpZXdWYWx1ZSAhPT0gJycgfHwgIWN0cmwu
JCRoYXNOYXRpdmVWYWxpZGF0b3JzKSkgeworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjdHJs
LiQkbGFzdENvbW1pdHRlZFZpZXdWYWx1ZSA9IHZpZXdWYWx1ZTsKKworICAgIC8vIGNoYW5nZSB0
byBkaXJ0eQorICAgIGlmIChjdHJsLiRwcmlzdGluZSkgeworICAgICAgdGhpcy4kc2V0RGlydHko
KTsKKyAgICB9CisgICAgdGhpcy4kJHBhcnNlQW5kVmFsaWRhdGUoKTsKKyAgfTsKKworICB0aGlz
LiQkcGFyc2VBbmRWYWxpZGF0ZSA9IGZ1bmN0aW9uKCkgeworICAgIHZhciB2aWV3VmFsdWUgPSBj
dHJsLiQkbGFzdENvbW1pdHRlZFZpZXdWYWx1ZTsKKyAgICB2YXIgbW9kZWxWYWx1ZSA9IHZpZXdW
YWx1ZTsKKyAgICBwYXJzZXJWYWxpZCA9IGlzVW5kZWZpbmVkKG1vZGVsVmFsdWUpID8gdW5kZWZp
bmVkIDogdHJ1ZTsKKworICAgIGlmIChwYXJzZXJWYWxpZCkgeworICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBjdHJsLiRwYXJzZXJzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIG1vZGVsVmFsdWUg
PSBjdHJsLiRwYXJzZXJzW2ldKG1vZGVsVmFsdWUpOworICAgICAgICBpZiAoaXNVbmRlZmluZWQo
bW9kZWxWYWx1ZSkpIHsKKyAgICAgICAgICBwYXJzZXJWYWxpZCA9IGZhbHNlOworICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisgICAgICB9CisgICAgfQorICAgIGlmIChpc051bWJlcihjdHJs
LiRtb2RlbFZhbHVlKSAmJiBpc05hTihjdHJsLiRtb2RlbFZhbHVlKSkgeworICAgICAgLy8gY3Ry
bC4kbW9kZWxWYWx1ZSBoYXMgbm90IGJlZW4gdG91Y2hlZCB5ZXQuLi4KKyAgICAgIGN0cmwuJG1v
ZGVsVmFsdWUgPSBuZ01vZGVsR2V0KCRzY29wZSk7CisgICAgfQorICAgIHZhciBwcmV2TW9kZWxW
YWx1ZSA9IGN0cmwuJG1vZGVsVmFsdWU7CisgICAgdmFyIGFsbG93SW52YWxpZCA9IGN0cmwuJG9w
dGlvbnMgJiYgY3RybC4kb3B0aW9ucy5hbGxvd0ludmFsaWQ7CisgICAgY3RybC4kJHJhd01vZGVs
VmFsdWUgPSBtb2RlbFZhbHVlOworCisgICAgaWYgKGFsbG93SW52YWxpZCkgeworICAgICAgY3Ry
bC4kbW9kZWxWYWx1ZSA9IG1vZGVsVmFsdWU7CisgICAgICB3cml0ZVRvTW9kZWxJZk5lZWRlZCgp
OworICAgIH0KKworICAgIC8vIFBhc3MgdGhlICQkbGFzdENvbW1pdHRlZFZpZXdWYWx1ZSBoZXJl
LCBiZWNhdXNlIHRoZSBjYWNoZWQgdmlld1ZhbHVlIG1pZ2h0IGJlIG91dCBvZiBkYXRlLgorICAg
IC8vIFRoaXMgY2FuIGhhcHBlbiBpZiBlLmcuICRzZXRWaWV3VmFsdWUgaXMgY2FsbGVkIGZyb20g
aW5zaWRlIGEgcGFyc2VyCisgICAgY3RybC4kJHJ1blZhbGlkYXRvcnMobW9kZWxWYWx1ZSwgY3Ry
bC4kJGxhc3RDb21taXR0ZWRWaWV3VmFsdWUsIGZ1bmN0aW9uKGFsbFZhbGlkKSB7CisgICAgICBp
ZiAoIWFsbG93SW52YWxpZCkgeworICAgICAgICAvLyBOb3RlOiBEb24ndCBjaGVjayBjdHJsLiR2
YWxpZCBoZXJlLCBhcyB3ZSBjb3VsZCBoYXZlCisgICAgICAgIC8vIGV4dGVybmFsIHZhbGlkYXRv
cnMgKGUuZy4gY2FsY3VsYXRlZCBvbiB0aGUgc2VydmVyKSwKKyAgICAgICAgLy8gdGhhdCBqdXN0
IGNhbGwgJHNldFZhbGlkaXR5IGFuZCBuZWVkIHRoZSBtb2RlbCB2YWx1ZQorICAgICAgICAvLyB0
byBjYWxjdWxhdGUgdGhlaXIgdmFsaWRpdHkuCisgICAgICAgIGN0cmwuJG1vZGVsVmFsdWUgPSBh
bGxWYWxpZCA/IG1vZGVsVmFsdWUgOiB1bmRlZmluZWQ7CisgICAgICAgIHdyaXRlVG9Nb2RlbElm
TmVlZGVkKCk7CisgICAgICB9CisgICAgfSk7CisKKyAgICBmdW5jdGlvbiB3cml0ZVRvTW9kZWxJ
Zk5lZWRlZCgpIHsKKyAgICAgIGlmIChjdHJsLiRtb2RlbFZhbHVlICE9PSBwcmV2TW9kZWxWYWx1
ZSkgeworICAgICAgICBjdHJsLiQkd3JpdGVNb2RlbFRvU2NvcGUoKTsKKyAgICAgIH0KKyAgICB9
CisgIH07CisKKyAgdGhpcy4kJHdyaXRlTW9kZWxUb1Njb3BlID0gZnVuY3Rpb24oKSB7CisgICAg
bmdNb2RlbFNldCgkc2NvcGUsIGN0cmwuJG1vZGVsVmFsdWUpOworICAgIGZvckVhY2goY3RybC4k
dmlld0NoYW5nZUxpc3RlbmVycywgZnVuY3Rpb24obGlzdGVuZXIpIHsKKyAgICAgIHRyeSB7Cisg
ICAgICAgIGxpc3RlbmVyKCk7CisgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICRleGNlcHRp
b25IYW5kbGVyKGUpOworICAgICAgfQorICAgIH0pOworICB9OworCisgIC8qKgorICAgKiBAbmdk
b2MgbWV0aG9kCisgICAqIEBuYW1lIG5nTW9kZWwuTmdNb2RlbENvbnRyb2xsZXIjJHNldFZpZXdW
YWx1ZQorICAgKgorICAgKiBAZGVzY3JpcHRpb24KKyAgICogVXBkYXRlIHRoZSB2aWV3IHZhbHVl
LgorICAgKgorICAgKiBUaGlzIG1ldGhvZCBzaG91bGQgYmUgY2FsbGVkIHdoZW4gYW4gaW5wdXQg
ZGlyZWN0aXZlIHdhbnQgdG8gY2hhbmdlIHRoZSB2aWV3IHZhbHVlOyB0eXBpY2FsbHksCisgICAq
IHRoaXMgaXMgZG9uZSBmcm9tIHdpdGhpbiBhIERPTSBldmVudCBoYW5kbGVyLgorICAgKgorICAg
KiBGb3IgZXhhbXBsZSB7QGxpbmsgbmcuZGlyZWN0aXZlOmlucHV0IGlucHV0fSBjYWxscyBpdCB3
aGVuIHRoZSB2YWx1ZSBvZiB0aGUgaW5wdXQgY2hhbmdlcyBhbmQKKyAgICoge0BsaW5rIG5nLmRp
cmVjdGl2ZTpzZWxlY3Qgc2VsZWN0fSBjYWxscyBpdCB3aGVuIGFuIG9wdGlvbiBpcyBzZWxlY3Rl
ZC4KKyAgICoKKyAgICogSWYgdGhlIG5ldyBgdmFsdWVgIGlzIGFuIG9iamVjdCAocmF0aGVyIHRo
YW4gYSBzdHJpbmcgb3IgYSBudW1iZXIpLCB3ZSBzaG91bGQgbWFrZSBhIGNvcHkgb2YgdGhlCisg
ICAqIG9iamVjdCBiZWZvcmUgcGFzc2luZyBpdCB0byBgJHNldFZpZXdWYWx1ZWAuICBUaGlzIGlz
IGJlY2F1c2UgYG5nTW9kZWxgIGRvZXMgbm90IHBlcmZvcm0gYSBkZWVwCisgICAqIHdhdGNoIG9m
IG9iamVjdHMsIGl0IG9ubHkgbG9va3MgZm9yIGEgY2hhbmdlIG9mIGlkZW50aXR5LiBJZiB5b3Ug
b25seSBjaGFuZ2UgdGhlIHByb3BlcnR5IG9mCisgICAqIHRoZSBvYmplY3QgdGhlbiBuZ01vZGVs
IHdpbGwgbm90IHJlYWxpc2UgdGhhdCB0aGUgb2JqZWN0IGhhcyBjaGFuZ2VkIGFuZCB3aWxsIG5v
dCBpbnZva2UgdGhlCisgICAqIGAkcGFyc2Vyc2AgYW5kIGAkdmFsaWRhdG9yc2AgcGlwZWxpbmVz
LgorICAgKgorICAgKiBGb3IgdGhpcyByZWFzb24sIHlvdSBzaG91bGQgbm90IGNoYW5nZSBwcm9w
ZXJ0aWVzIG9mIHRoZSBjb3B5IG9uY2UgaXQgaGFzIGJlZW4gcGFzc2VkIHRvCisgICAqIGAkc2V0
Vmlld1ZhbHVlYC4gT3RoZXJ3aXNlIHlvdSBtYXkgY2F1c2UgdGhlIG1vZGVsIHZhbHVlIG9uIHRo
ZSBzY29wZSB0byBjaGFuZ2UgaW5jb3JyZWN0bHkuCisgICAqCisgICAqIFdoZW4gdGhpcyBtZXRo
b2QgaXMgY2FsbGVkLCB0aGUgbmV3IGB2YWx1ZWAgd2lsbCBiZSBzdGFnZWQgZm9yIGNvbW1pdHRp
bmcgdGhyb3VnaCB0aGUgYCRwYXJzZXJzYAorICAgKiBhbmQgYCR2YWxpZGF0b3JzYCBwaXBlbGlu
ZXMuIElmIHRoZXJlIGFyZSBubyBzcGVjaWFsIHtAbGluayBuZ01vZGVsT3B0aW9uc30gc3BlY2lm
aWVkIHRoZW4gdGhlIHN0YWdlZAorICAgKiB2YWx1ZSBzZW50IGRpcmVjdGx5IGZvciBwcm9jZXNz
aW5nLCBmaW5hbGx5IHRvIGJlIGFwcGxpZWQgdG8gYCRtb2RlbFZhbHVlYCBhbmQgdGhlbiB0aGUK
KyAgICogKipleHByZXNzaW9uKiogc3BlY2lmaWVkIGluIHRoZSBgbmctbW9kZWxgIGF0dHJpYnV0
ZS4KKyAgICoKKyAgICogTGFzdGx5LCBhbGwgdGhlIHJlZ2lzdGVyZWQgY2hhbmdlIGxpc3RlbmVy
cywgaW4gdGhlIGAkdmlld0NoYW5nZUxpc3RlbmVyc2AgbGlzdCwgYXJlIGNhbGxlZC4KKyAgICoK
KyAgICogSW4gY2FzZSB0aGUge0BsaW5rIG5nLmRpcmVjdGl2ZTpuZ01vZGVsT3B0aW9ucyBuZ01v
ZGVsT3B0aW9uc30gZGlyZWN0aXZlIGlzIHVzZWQgd2l0aCBgdXBkYXRlT25gCisgICAqIGFuZCB0
aGUgYGRlZmF1bHRgIHRyaWdnZXIgaXMgbm90IGxpc3RlZCwgYWxsIHRob3NlIGFjdGlvbnMgd2ls
bCByZW1haW4gcGVuZGluZyB1bnRpbCBvbmUgb2YgdGhlCisgICAqIGB1cGRhdGVPbmAgZXZlbnRz
IGlzIHRyaWdnZXJlZCBvbiB0aGUgRE9NIGVsZW1lbnQuCisgICAqIEFsbCB0aGVzZSBhY3Rpb25z
IHdpbGwgYmUgZGVib3VuY2VkIGlmIHRoZSB7QGxpbmsgbmcuZGlyZWN0aXZlOm5nTW9kZWxPcHRp
b25zIG5nTW9kZWxPcHRpb25zfQorICAgKiBkaXJlY3RpdmUgaXMgdXNlZCB3aXRoIGEgY3VzdG9t
IGRlYm91bmNlIGZvciB0aGlzIHBhcnRpY3VsYXIgZXZlbnQuCisgICAqCisgICAqIE5vdGUgdGhh
dCBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gZG9lcyBub3QgdHJpZ2dlciBhIGAkZGlnZXN0YC4KKyAg
ICoKKyAgICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlIFZhbHVlIGZyb20gdGhlIHZpZXcuCisgICAq
IEBwYXJhbSB7c3RyaW5nfSB0cmlnZ2VyIEV2ZW50IHRoYXQgdHJpZ2dlcmVkIHRoZSB1cGRhdGUu
CisgICAqLworICB0aGlzLiRzZXRWaWV3VmFsdWUgPSBmdW5jdGlvbih2YWx1ZSwgdHJpZ2dlcikg
eworICAgIGN0cmwuJHZpZXdWYWx1ZSA9IHZhbHVlOworICAgIGlmICghY3RybC4kb3B0aW9ucyB8
fCBjdHJsLiRvcHRpb25zLnVwZGF0ZU9uRGVmYXVsdCkgeworICAgICAgY3RybC4kJGRlYm91bmNl
Vmlld1ZhbHVlQ29tbWl0KHRyaWdnZXIpOworICAgIH0KKyAgfTsKKworICB0aGlzLiQkZGVib3Vu
Y2VWaWV3VmFsdWVDb21taXQgPSBmdW5jdGlvbih0cmlnZ2VyKSB7CisgICAgdmFyIGRlYm91bmNl
RGVsYXkgPSAwLAorICAgICAgICBvcHRpb25zID0gY3RybC4kb3B0aW9ucywKKyAgICAgICAgZGVi
b3VuY2U7CisKKyAgICBpZiAob3B0aW9ucyAmJiBpc0RlZmluZWQob3B0aW9ucy5kZWJvdW5jZSkp
IHsKKyAgICAgIGRlYm91bmNlID0gb3B0aW9ucy5kZWJvdW5jZTsKKyAgICAgIGlmIChpc051bWJl
cihkZWJvdW5jZSkpIHsKKyAgICAgICAgZGVib3VuY2VEZWxheSA9IGRlYm91bmNlOworICAgICAg
fSBlbHNlIGlmIChpc051bWJlcihkZWJvdW5jZVt0cmlnZ2VyXSkpIHsKKyAgICAgICAgZGVib3Vu
Y2VEZWxheSA9IGRlYm91bmNlW3RyaWdnZXJdOworICAgICAgfSBlbHNlIGlmIChpc051bWJlcihk
ZWJvdW5jZVsnZGVmYXVsdCddKSkgeworICAgICAgICBkZWJvdW5jZURlbGF5ID0gZGVib3VuY2Vb
J2RlZmF1bHQnXTsKKyAgICAgIH0KKyAgICB9CisKKyAgICAkdGltZW91dC5jYW5jZWwocGVuZGlu
Z0RlYm91bmNlKTsKKyAgICBpZiAoZGVib3VuY2VEZWxheSkgeworICAgICAgcGVuZGluZ0RlYm91
bmNlID0gJHRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgIGN0cmwuJGNvbW1pdFZpZXdWYWx1
ZSgpOworICAgICAgfSwgZGVib3VuY2VEZWxheSk7CisgICAgfSBlbHNlIGlmICgkcm9vdFNjb3Bl
LiQkcGhhc2UpIHsKKyAgICAgIGN0cmwuJGNvbW1pdFZpZXdWYWx1ZSgpOworICAgIH0gZWxzZSB7
CisgICAgICAkc2NvcGUuJGFwcGx5KGZ1bmN0aW9uKCkgeworICAgICAgICBjdHJsLiRjb21taXRW
aWV3VmFsdWUoKTsKKyAgICAgIH0pOworICAgIH0KKyAgfTsKKworICAvLyBtb2RlbCAtPiB2YWx1
ZQorICAvLyBOb3RlOiB3ZSBjYW5ub3QgdXNlIGEgbm9ybWFsIHNjb3BlLiR3YXRjaCBhcyB3ZSB3
YW50IHRvIGRldGVjdCB0aGUgZm9sbG93aW5nOgorICAvLyAxLiBzY29wZSB2YWx1ZSBpcyAnYScK
KyAgLy8gMi4gdXNlciBlbnRlcnMgJ2InCisgIC8vIDMuIG5nLWNoYW5nZSBraWNrcyBpbiBhbmQg
cmV2ZXJ0cyBzY29wZSB2YWx1ZSB0byAnYScKKyAgLy8gICAgLT4gc2NvcGUgdmFsdWUgZGlkIG5v
dCBjaGFuZ2Ugc2luY2UgdGhlIGxhc3QgZGlnZXN0IGFzCisgIC8vICAgICAgIG5nLWNoYW5nZSBl
eGVjdXRlcyBpbiBhcHBseSBwaGFzZQorICAvLyA0LiB2aWV3IHNob3VsZCBiZSBjaGFuZ2VkIGJh
Y2sgdG8gJ2EnCisgICRzY29wZS4kd2F0Y2goZnVuY3Rpb24gbmdNb2RlbFdhdGNoKCkgeworICAg
IHZhciBtb2RlbFZhbHVlID0gbmdNb2RlbEdldCgkc2NvcGUpOworCisgICAgLy8gaWYgc2NvcGUg
bW9kZWwgdmFsdWUgYW5kIG5nTW9kZWwgdmFsdWUgYXJlIG91dCBvZiBzeW5jCisgICAgLy8gVE9E
TyhwZXJmKTogd2h5IG5vdCBtb3ZlIHRoaXMgdG8gdGhlIGFjdGlvbiBmbj8KKyAgICBpZiAobW9k
ZWxWYWx1ZSAhPT0gY3RybC4kbW9kZWxWYWx1ZSAmJgorICAgICAgIC8vIGNoZWNrcyBmb3IgTmFO
IGlzIG5lZWRlZCB0byBhbGxvdyBzZXR0aW5nIHRoZSBtb2RlbCB0byBOYU4gd2hlbiB0aGVyZSdz
IGFuIGFzeW5jVmFsaWRhdG9yCisgICAgICAgKGN0cmwuJG1vZGVsVmFsdWUgPT09IGN0cmwuJG1v
ZGVsVmFsdWUgfHwgbW9kZWxWYWx1ZSA9PT0gbW9kZWxWYWx1ZSkKKyAgICApIHsKKyAgICAgIGN0
cmwuJG1vZGVsVmFsdWUgPSBjdHJsLiQkcmF3TW9kZWxWYWx1ZSA9IG1vZGVsVmFsdWU7CisgICAg
ICBwYXJzZXJWYWxpZCA9IHVuZGVmaW5lZDsKKworICAgICAgdmFyIGZvcm1hdHRlcnMgPSBjdHJs
LiRmb3JtYXR0ZXJzLAorICAgICAgICAgIGlkeCA9IGZvcm1hdHRlcnMubGVuZ3RoOworCisgICAg
ICB2YXIgdmlld1ZhbHVlID0gbW9kZWxWYWx1ZTsKKyAgICAgIHdoaWxlIChpZHgtLSkgeworICAg
ICAgICB2aWV3VmFsdWUgPSBmb3JtYXR0ZXJzW2lkeF0odmlld1ZhbHVlKTsKKyAgICAgIH0KKyAg
ICAgIGlmIChjdHJsLiR2aWV3VmFsdWUgIT09IHZpZXdWYWx1ZSkgeworICAgICAgICBjdHJsLiR2
aWV3VmFsdWUgPSBjdHJsLiQkbGFzdENvbW1pdHRlZFZpZXdWYWx1ZSA9IHZpZXdWYWx1ZTsKKyAg
ICAgICAgY3RybC4kcmVuZGVyKCk7CisKKyAgICAgICAgY3RybC4kJHJ1blZhbGlkYXRvcnMobW9k
ZWxWYWx1ZSwgdmlld1ZhbHVlLCBub29wKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4g
bW9kZWxWYWx1ZTsKKyAgfSk7Cit9XTsKKworCisvKioKKyAqIEBuZ2RvYyBkaXJlY3RpdmUKKyAq
IEBuYW1lIG5nTW9kZWwKKyAqCisgKiBAZWxlbWVudCBpbnB1dAorICogQHByaW9yaXR5IDEKKyAq
CisgKiBAZGVzY3JpcHRpb24KKyAqIFRoZSBgbmdNb2RlbGAgZGlyZWN0aXZlIGJpbmRzIGFuIGBp
bnB1dGAsYHNlbGVjdGAsIGB0ZXh0YXJlYWAgKG9yIGN1c3RvbSBmb3JtIGNvbnRyb2wpIHRvIGEK
KyAqIHByb3BlcnR5IG9uIHRoZSBzY29wZSB1c2luZyB7QGxpbmsgbmdNb2RlbC5OZ01vZGVsQ29u
dHJvbGxlciBOZ01vZGVsQ29udHJvbGxlcn0sCisgKiB3aGljaCBpcyBjcmVhdGVkIGFuZCBleHBv
c2VkIGJ5IHRoaXMgZGlyZWN0aXZlLgorICoKKyAqIGBuZ01vZGVsYCBpcyByZXNwb25zaWJsZSBm
b3I6CisgKgorICogLSBCaW5kaW5nIHRoZSB2aWV3IGludG8gdGhlIG1vZGVsLCB3aGljaCBvdGhl
ciBkaXJlY3RpdmVzIHN1Y2ggYXMgYGlucHV0YCwgYHRleHRhcmVhYCBvciBgc2VsZWN0YAorICog
ICByZXF1aXJlLgorICogLSBQcm92aWRpbmcgdmFsaWRhdGlvbiBiZWhhdmlvciAoaS5lLiByZXF1
aXJlZCwgbnVtYmVyLCBlbWFpbCwgdXJsKS4KKyAqIC0gS2VlcGluZyB0aGUgc3RhdGUgb2YgdGhl
IGNvbnRyb2wgKHZhbGlkL2ludmFsaWQsIGRpcnR5L3ByaXN0aW5lLCB0b3VjaGVkL3VudG91Y2hl
ZCwgdmFsaWRhdGlvbiBlcnJvcnMpLgorICogLSBTZXR0aW5nIHJlbGF0ZWQgY3NzIGNsYXNzZXMg
b24gdGhlIGVsZW1lbnQgKGBuZy12YWxpZGAsIGBuZy1pbnZhbGlkYCwgYG5nLWRpcnR5YCwgYG5n
LXByaXN0aW5lYCwgYG5nLXRvdWNoZWRgLCBgbmctdW50b3VjaGVkYCkgaW5jbHVkaW5nIGFuaW1h
dGlvbnMuCisgKiAtIFJlZ2lzdGVyaW5nIHRoZSBjb250cm9sIHdpdGggaXRzIHBhcmVudCB7QGxp
bmsgbmcuZGlyZWN0aXZlOmZvcm0gZm9ybX0uCisgKgorICogTm90ZTogYG5nTW9kZWxgIHdpbGwg
dHJ5IHRvIGJpbmQgdG8gdGhlIHByb3BlcnR5IGdpdmVuIGJ5IGV2YWx1YXRpbmcgdGhlIGV4cHJl
c3Npb24gb24gdGhlCisgKiBjdXJyZW50IHNjb3BlLiBJZiB0aGUgcHJvcGVydHkgZG9lc24ndCBh
bHJlYWR5IGV4aXN0IG9uIHRoaXMgc2NvcGUsIGl0IHdpbGwgYmUgY3JlYXRlZAorICogaW1wbGlj
aXRseSBhbmQgYWRkZWQgdG8gdGhlIHNjb3BlLgorICoKKyAqIEZvciBiZXN0IHByYWN0aWNlcyBv
biB1c2luZyBgbmdNb2RlbGAsIHNlZToKKyAqCisgKiAgLSBbVW5kZXJzdGFuZGluZyBTY29wZXNd
KGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIuanMvd2lraS9VbmRlcnN0YW5kaW5n
LVNjb3BlcykKKyAqCisgKiBGb3IgYmFzaWMgZXhhbXBsZXMsIGhvdyB0byB1c2UgYG5nTW9kZWxg
LCBzZWU6CisgKgorICogIC0ge0BsaW5rIG5nLmRpcmVjdGl2ZTppbnB1dCBpbnB1dH0KKyAqICAg
IC0ge0BsaW5rIGlucHV0W3RleHRdIHRleHR9CisgKiAgICAtIHtAbGluayBpbnB1dFtjaGVja2Jv
eF0gY2hlY2tib3h9CisgKiAgICAtIHtAbGluayBpbnB1dFtyYWRpb10gcmFkaW99CisgKiAgICAt
IHtAbGluayBpbnB1dFtudW1iZXJdIG51bWJlcn0KKyAqICAgIC0ge0BsaW5rIGlucHV0W2VtYWls
XSBlbWFpbH0KKyAqICAgIC0ge0BsaW5rIGlucHV0W3VybF0gdXJsfQorICogICAgLSB7QGxpbmsg
aW5wdXRbZGF0ZV0gZGF0ZX0KKyAqICAgIC0ge0BsaW5rIGlucHV0W2RhdGV0aW1lLWxvY2FsXSBk
YXRldGltZS1sb2NhbH0KKyAqICAgIC0ge0BsaW5rIGlucHV0W3RpbWVdIHRpbWV9CisgKiAgICAt
IHtAbGluayBpbnB1dFttb250aF0gbW9udGh9CisgKiAgICAtIHtAbGluayBpbnB1dFt3ZWVrXSB3
ZWVrfQorICogIC0ge0BsaW5rIG5nLmRpcmVjdGl2ZTpzZWxlY3Qgc2VsZWN0fQorICogIC0ge0Bs
aW5rIG5nLmRpcmVjdGl2ZTp0ZXh0YXJlYSB0ZXh0YXJlYX0KKyAqCisgKiAjIENTUyBjbGFzc2Vz
CisgKiBUaGUgZm9sbG93aW5nIENTUyBjbGFzc2VzIGFyZSBhZGRlZCBhbmQgcmVtb3ZlZCBvbiB0
aGUgYXNzb2NpYXRlZCBpbnB1dC9zZWxlY3QvdGV4dGFyZWEgZWxlbWVudAorICogZGVwZW5kaW5n
IG9uIHRoZSB2YWxpZGl0eSBvZiB0aGUgbW9kZWwuCisgKgorICogIC0gYG5nLXZhbGlkYDogdGhl
IG1vZGVsIGlzIHZhbGlkCisgKiAgLSBgbmctaW52YWxpZGA6IHRoZSBtb2RlbCBpcyBpbnZhbGlk
CisgKiAgLSBgbmctdmFsaWQtW2tleV1gOiBmb3IgZWFjaCB2YWxpZCBrZXkgYWRkZWQgYnkgYCRz
ZXRWYWxpZGl0eWAKKyAqICAtIGBuZy1pbnZhbGlkLVtrZXldYDogZm9yIGVhY2ggaW52YWxpZCBr
ZXkgYWRkZWQgYnkgYCRzZXRWYWxpZGl0eWAKKyAqICAtIGBuZy1wcmlzdGluZWA6IHRoZSBjb250
cm9sIGhhc24ndCBiZWVuIGludGVyYWN0ZWQgd2l0aCB5ZXQKKyAqICAtIGBuZy1kaXJ0eWA6IHRo
ZSBjb250cm9sIGhhcyBiZWVuIGludGVyYWN0ZWQgd2l0aAorICogIC0gYG5nLXRvdWNoZWRgOiB0
aGUgY29udHJvbCBoYXMgYmVlbiBibHVycmVkCisgKiAgLSBgbmctdW50b3VjaGVkYDogdGhlIGNv
bnRyb2wgaGFzbid0IGJlZW4gYmx1cnJlZAorICogIC0gYG5nLXBlbmRpbmdgOiBhbnkgYCRhc3lu
Y1ZhbGlkYXRvcnNgIGFyZSB1bmZ1bGZpbGxlZAorICoKKyAqIEtlZXAgaW4gbWluZCB0aGF0IG5n
QW5pbWF0ZSBjYW4gZGV0ZWN0IGVhY2ggb2YgdGhlc2UgY2xhc3NlcyB3aGVuIGFkZGVkIGFuZCBy
ZW1vdmVkLgorICoKKyAqICMjIEFuaW1hdGlvbiBIb29rcworICoKKyAqIEFuaW1hdGlvbnMgd2l0
aGluIG1vZGVscyBhcmUgdHJpZ2dlcmVkIHdoZW4gYW55IG9mIHRoZSBhc3NvY2lhdGVkIENTUyBj
bGFzc2VzIGFyZSBhZGRlZCBhbmQgcmVtb3ZlZAorICogb24gdGhlIGlucHV0IGVsZW1lbnQgd2hp
Y2ggaXMgYXR0YWNoZWQgdG8gdGhlIG1vZGVsLiBUaGVzZSBjbGFzc2VzIGFyZTogYC5uZy1wcmlz
dGluZWAsIGAubmctZGlydHlgLAorICogYC5uZy1pbnZhbGlkYCBhbmQgYC5uZy12YWxpZGAgYXMg
d2VsbCBhcyBhbnkgb3RoZXIgdmFsaWRhdGlvbnMgdGhhdCBhcmUgcGVyZm9ybWVkIG9uIHRoZSBt
b2RlbCBpdHNlbGYuCisgKiBUaGUgYW5pbWF0aW9ucyB0aGF0IGFyZSB0cmlnZ2VyZWQgd2l0aGlu
IG5nTW9kZWwgYXJlIHNpbWlsYXIgdG8gaG93IHRoZXkgd29yayBpbiBuZ0NsYXNzIGFuZAorICog
YW5pbWF0aW9ucyBjYW4gYmUgaG9va2VkIGludG8gdXNpbmcgQ1NTIHRyYW5zaXRpb25zLCBrZXlm
cmFtZXMgYXMgd2VsbCBhcyBKUyBhbmltYXRpb25zLgorICoKKyAqIFRoZSBmb2xsb3dpbmcgZXhh
bXBsZSBzaG93cyBhIHNpbXBsZSB3YXkgdG8gdXRpbGl6ZSBDU1MgdHJhbnNpdGlvbnMgdG8gc3R5
bGUgYW4gaW5wdXQgZWxlbWVudAorICogdGhhdCBoYXMgYmVlbiByZW5kZXJlZCBhcyBpbnZhbGlk
IGFmdGVyIGl0IGhhcyBiZWVuIHZhbGlkYXRlZDoKKyAqCisgKiA8cHJlPgorICogLy9iZSBzdXJl
IHRvIGluY2x1ZGUgbmdBbmltYXRlIGFzIGEgbW9kdWxlIHRvIGhvb2sgaW50byBtb3JlCisgKiAv
L2FkdmFuY2VkIGFuaW1hdGlvbnMKKyAqIC5teS1pbnB1dCB7CisgKiAgIHRyYW5zaXRpb246MC41
cyBsaW5lYXIgYWxsOworICogICBiYWNrZ3JvdW5kOiB3aGl0ZTsKKyAqIH0KKyAqIC5teS1pbnB1
dC5uZy1pbnZhbGlkIHsKKyAqICAgYmFja2dyb3VuZDogcmVkOworICogICBjb2xvcjp3aGl0ZTsK
KyAqIH0KKyAqIDwvcHJlPgorICoKKyAqIEBleGFtcGxlCisgKiA8ZXhhbXBsZSBkZXBzPSJhbmd1
bGFyLWFuaW1hdGUuanMiIGFuaW1hdGlvbnM9InRydWUiIGZpeEJhc2U9InRydWUiIG1vZHVsZT0i
aW5wdXRFeGFtcGxlIj4KKyAgICAgPGZpbGUgbmFtZT0iaW5kZXguaHRtbCI+CisgICAgICAgPHNj
cmlwdD4KKyAgICAgICAgYW5ndWxhci5tb2R1bGUoJ2lucHV0RXhhbXBsZScsIFtdKQorICAgICAg
ICAgIC5jb250cm9sbGVyKCdFeGFtcGxlQ29udHJvbGxlcicsIFsnJHNjb3BlJywgZnVuY3Rpb24o
JHNjb3BlKSB7CisgICAgICAgICAgICAkc2NvcGUudmFsID0gJzEnOworICAgICAgICAgIH1dKTsK
KyAgICAgICA8L3NjcmlwdD4KKyAgICAgICA8c3R5bGU+CisgICAgICAgICAubXktaW5wdXQgewor
ICAgICAgICAgICAtd2Via2l0LXRyYW5zaXRpb246YWxsIGxpbmVhciAwLjVzOworICAgICAgICAg
ICB0cmFuc2l0aW9uOmFsbCBsaW5lYXIgMC41czsKKyAgICAgICAgICAgYmFja2dyb3VuZDogdHJh
bnNwYXJlbnQ7CisgICAgICAgICB9CisgICAgICAgICAubXktaW5wdXQubmctaW52YWxpZCB7Cisg
ICAgICAgICAgIGNvbG9yOndoaXRlOworICAgICAgICAgICBiYWNrZ3JvdW5kOiByZWQ7CisgICAg
ICAgICB9CisgICAgICAgPC9zdHlsZT4KKyAgICAgICA8cCBpZD0iaW5wdXREZXNjcmlwdGlvbiI+
CisgICAgICAgIFVwZGF0ZSBpbnB1dCB0byBzZWUgdHJhbnNpdGlvbnMgd2hlbiB2YWxpZC9pbnZh
bGlkLgorICAgICAgICBJbnRlZ2VyIGlzIGEgdmFsaWQgdmFsdWUuCisgICAgICAgPC9wPgorICAg
ICAgIDxmb3JtIG5hbWU9InRlc3RGb3JtIiBuZy1jb250cm9sbGVyPSJFeGFtcGxlQ29udHJvbGxl
ciI+CisgICAgICAgICA8aW5wdXQgbmctbW9kZWw9InZhbCIgbmctcGF0dGVybj0iL15cZCskLyIg
bmFtZT0iYW5pbSIgY2xhc3M9Im15LWlucHV0IgorICAgICAgICAgICAgICAgIGFyaWEtZGVzY3Jp
YmVkYnk9ImlucHV0RGVzY3JpcHRpb24iIC8+CisgICAgICAgPC9mb3JtPgorICAgICA8L2ZpbGU+
CisgKiA8L2V4YW1wbGU+CisgKgorICogIyMgQmluZGluZyB0byBhIGdldHRlci9zZXR0ZXIKKyAq
CisgKiBTb21ldGltZXMgaXQncyBoZWxwZnVsIHRvIGJpbmQgYG5nTW9kZWxgIHRvIGEgZ2V0dGVy
L3NldHRlciBmdW5jdGlvbi4gIEEgZ2V0dGVyL3NldHRlciBpcyBhCisgKiBmdW5jdGlvbiB0aGF0
IHJldHVybnMgYSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgd2hlbiBjYWxsZWQgd2l0aCB6
ZXJvIGFyZ3VtZW50cywgYW5kIHNldHMKKyAqIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiBhIG1vZGVs
IHdoZW4gY2FsbGVkIHdpdGggYW4gYXJndW1lbnQuIEl0J3Mgc29tZXRpbWVzIHVzZWZ1bCB0byB1
c2UgdGhpcworICogZm9yIG1vZGVscyB0aGF0IGhhdmUgYW4gaW50ZXJuYWwgcmVwcmVzZW50YXRp
b24gdGhhdCdzIGRpZmZlcmVudCBmcm9tIHdoYXQgdGhlIG1vZGVsIGV4cG9zZXMKKyAqIHRvIHRo
ZSB2aWV3LgorICoKKyAqIDxkaXYgY2xhc3M9ImFsZXJ0IGFsZXJ0LXN1Y2Nlc3MiPgorICogKipC
ZXN0IFByYWN0aWNlOioqIEl0J3MgYmVzdCB0byBrZWVwIGdldHRlcnMgZmFzdCBiZWNhdXNlIEFu
Z3VsYXIgaXMgbGlrZWx5IHRvIGNhbGwgdGhlbSBtb3JlCisgKiBmcmVxdWVudGx5IHRoYW4gb3Ro
ZXIgcGFydHMgb2YgeW91ciBjb2RlLgorICogPC9kaXY+CisgKgorICogWW91IHVzZSB0aGlzIGJl
aGF2aW9yIGJ5IGFkZGluZyBgbmctbW9kZWwtb3B0aW9ucz0ieyBnZXR0ZXJTZXR0ZXI6IHRydWUg
fSJgIHRvIGFuIGVsZW1lbnQgdGhhdAorICogaGFzIGBuZy1tb2RlbGAgYXR0YWNoZWQgdG8gaXQu
IFlvdSBjYW4gYWxzbyBhZGQgYG5nLW1vZGVsLW9wdGlvbnM9InsgZ2V0dGVyU2V0dGVyOiB0cnVl
IH0iYCB0bworICogYSBgPGZvcm0+YCwgd2hpY2ggd2lsbCBlbmFibGUgdGhpcyBiZWhhdmlvciBm
b3IgYWxsIGA8aW5wdXQ+YHMgd2l0aGluIGl0LiBTZWUKKyAqIHtAbGluayBuZy5kaXJlY3RpdmU6
bmdNb2RlbE9wdGlvbnMgYG5nTW9kZWxPcHRpb25zYH0gZm9yIG1vcmUuCisgKgorICogVGhlIGZv
bGxvd2luZyBleGFtcGxlIHNob3dzIGhvdyB0byB1c2UgYG5nTW9kZWxgIHdpdGggYSBnZXR0ZXIv
c2V0dGVyOgorICoKKyAqIEBleGFtcGxlCisgKiA8ZXhhbXBsZSBuYW1lPSJuZ01vZGVsLWdldHRl
ci1zZXR0ZXIiIG1vZHVsZT0iZ2V0dGVyU2V0dGVyRXhhbXBsZSI+CisgICAgIDxmaWxlIG5hbWU9
ImluZGV4Lmh0bWwiPgorICAgICAgIDxkaXYgbmctY29udHJvbGxlcj0iRXhhbXBsZUNvbnRyb2xs
ZXIiPgorICAgICAgICAgPGZvcm0gbmFtZT0idXNlckZvcm0iPgorICAgICAgICAgICA8bGFiZWw+
TmFtZToKKyAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0idXNlck5hbWUiCisg
ICAgICAgICAgICAgICAgICAgIG5nLW1vZGVsPSJ1c2VyLm5hbWUiCisgICAgICAgICAgICAgICAg
ICAgIG5nLW1vZGVsLW9wdGlvbnM9InsgZ2V0dGVyU2V0dGVyOiB0cnVlIH0iIC8+CisgICAgICAg
ICAgIDwvbGFiZWw+CisgICAgICAgICA8L2Zvcm0+CisgICAgICAgICA8cHJlPnVzZXIubmFtZSA9
IDxzcGFuIG5nLWJpbmQ9InVzZXIubmFtZSgpIj48L3NwYW4+PC9wcmU+CisgICAgICAgPC9kaXY+
CisgICAgIDwvZmlsZT4KKyAgICAgPGZpbGUgbmFtZT0iYXBwLmpzIj4KKyAgICAgICBhbmd1bGFy
Lm1vZHVsZSgnZ2V0dGVyU2V0dGVyRXhhbXBsZScsIFtdKQorICAgICAgICAgLmNvbnRyb2xsZXIo
J0V4YW1wbGVDb250cm9sbGVyJywgWyckc2NvcGUnLCBmdW5jdGlvbigkc2NvcGUpIHsKKyAgICAg
ICAgICAgdmFyIF9uYW1lID0gJ0JyaWFuJzsKKyAgICAgICAgICAgJHNjb3BlLnVzZXIgPSB7Cisg
ICAgICAgICAgICAgbmFtZTogZnVuY3Rpb24obmV3TmFtZSkgeworICAgICAgICAgICAgICAvLyBO
b3RlIHRoYXQgbmV3TmFtZSBjYW4gYmUgdW5kZWZpbmVkIGZvciB0d28gcmVhc29uczoKKyAgICAg
ICAgICAgICAgLy8gMS4gQmVjYXVzZSBpdCBpcyBjYWxsZWQgYXMgYSBnZXR0ZXIgYW5kIHRodXMg
Y2FsbGVkIHdpdGggbm8gYXJndW1lbnRzCisgICAgICAgICAgICAgIC8vIDIuIEJlY2F1c2UgdGhl
IHByb3BlcnR5IHNob3VsZCBhY3R1YWxseSBiZSBzZXQgdG8gdW5kZWZpbmVkLiBUaGlzIGhhcHBl
bnMgZS5nLiBpZiB0aGUKKyAgICAgICAgICAgICAgLy8gICAgaW5wdXQgaXMgaW52YWxpZAorICAg
ICAgICAgICAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChfbmFtZSA9IG5ld05hbWUpIDog
X25hbWU7CisgICAgICAgICAgICAgfQorICAgICAgICAgICB9OworICAgICAgICAgfV0pOworICAg
ICA8L2ZpbGU+CisgKiA8L2V4YW1wbGU+CisgKi8KK3ZhciBuZ01vZGVsRGlyZWN0aXZlID0gWyck
cm9vdFNjb3BlJywgZnVuY3Rpb24oJHJvb3RTY29wZSkgeworICByZXR1cm4geworICAgIHJlc3Ry
aWN0OiAnQScsCisgICAgcmVxdWlyZTogWyduZ01vZGVsJywgJ14/Zm9ybScsICdeP25nTW9kZWxP
cHRpb25zJ10sCisgICAgY29udHJvbGxlcjogTmdNb2RlbENvbnRyb2xsZXIsCisgICAgLy8gUHJl
bGluayBuZWVkcyB0byBydW4gYmVmb3JlIGFueSBpbnB1dCBkaXJlY3RpdmUKKyAgICAvLyBzbyB0
aGF0IHdlIGNhbiBzZXQgdGhlIE5nTW9kZWxPcHRpb25zIGluIE5nTW9kZWxDb250cm9sbGVyCisg
ICAgLy8gYmVmb3JlIGFueW9uZSBlbHNlIHVzZXMgaXQuCisgICAgcHJpb3JpdHk6IDEsCisgICAg
Y29tcGlsZTogZnVuY3Rpb24gbmdNb2RlbENvbXBpbGUoZWxlbWVudCkgeworICAgICAgLy8gU2V0
dXAgaW5pdGlhbCBzdGF0ZSBvZiB0aGUgY29udHJvbAorICAgICAgZWxlbWVudC5hZGRDbGFzcyhQ
UklTVElORV9DTEFTUykuYWRkQ2xhc3MoVU5UT1VDSEVEX0NMQVNTKS5hZGRDbGFzcyhWQUxJRF9D
TEFTUyk7CisKKyAgICAgIHJldHVybiB7CisgICAgICAgIHByZTogZnVuY3Rpb24gbmdNb2RlbFBy
ZUxpbmsoc2NvcGUsIGVsZW1lbnQsIGF0dHIsIGN0cmxzKSB7CisgICAgICAgICAgdmFyIG1vZGVs
Q3RybCA9IGN0cmxzWzBdLAorICAgICAgICAgICAgICBmb3JtQ3RybCA9IGN0cmxzWzFdIHx8IG51
bGxGb3JtQ3RybDsKKworICAgICAgICAgIG1vZGVsQ3RybC4kJHNldE9wdGlvbnMoY3RybHNbMl0g
JiYgY3RybHNbMl0uJG9wdGlvbnMpOworCisgICAgICAgICAgLy8gbm90aWZ5IG90aGVycywgZXNw
ZWNpYWxseSBwYXJlbnQgZm9ybXMKKyAgICAgICAgICBmb3JtQ3RybC4kYWRkQ29udHJvbChtb2Rl
bEN0cmwpOworCisgICAgICAgICAgYXR0ci4kb2JzZXJ2ZSgnbmFtZScsIGZ1bmN0aW9uKG5ld1Zh
bHVlKSB7CisgICAgICAgICAgICBpZiAobW9kZWxDdHJsLiRuYW1lICE9PSBuZXdWYWx1ZSkgewor
ICAgICAgICAgICAgICBmb3JtQ3RybC4kJHJlbmFtZUNvbnRyb2wobW9kZWxDdHJsLCBuZXdWYWx1
ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgfSk7CisKKyAgICAgICAgICBzY29wZS4kb24o
JyRkZXN0cm95JywgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBmb3JtQ3RybC4kcmVtb3ZlQ29u
dHJvbChtb2RlbEN0cmwpOworICAgICAgICAgIH0pOworICAgICAgICB9LAorICAgICAgICBwb3N0
OiBmdW5jdGlvbiBuZ01vZGVsUG9zdExpbmsoc2NvcGUsIGVsZW1lbnQsIGF0dHIsIGN0cmxzKSB7
CisgICAgICAgICAgdmFyIG1vZGVsQ3RybCA9IGN0cmxzWzBdOworICAgICAgICAgIGlmIChtb2Rl
bEN0cmwuJG9wdGlvbnMgJiYgbW9kZWxDdHJsLiRvcHRpb25zLnVwZGF0ZU9uKSB7CisgICAgICAg
ICAgICBlbGVtZW50Lm9uKG1vZGVsQ3RybC4kb3B0aW9ucy51cGRhdGVPbiwgZnVuY3Rpb24oZXYp
IHsKKyAgICAgICAgICAgICAgbW9kZWxDdHJsLiQkZGVib3VuY2VWaWV3VmFsdWVDb21taXQoZXYg
JiYgZXYudHlwZSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICB9CisKKyAgICAgICAgICBl
bGVtZW50Lm9uKCdibHVyJywgZnVuY3Rpb24oZXYpIHsKKyAgICAgICAgICAgIGlmIChtb2RlbEN0
cmwuJHRvdWNoZWQpIHJldHVybjsKKworICAgICAgICAgICAgaWYgKCRyb290U2NvcGUuJCRwaGFz
ZSkgeworICAgICAgICAgICAgICBzY29wZS4kZXZhbEFzeW5jKG1vZGVsQ3RybC4kc2V0VG91Y2hl
ZCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICBzY29wZS4kYXBwbHkobW9k
ZWxDdHJsLiRzZXRUb3VjaGVkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9KTsKKyAgICAg
ICAgfQorICAgICAgfTsKKyAgICB9CisgIH07Cit9XTsKKwordmFyIERFRkFVTFRfUkVHRVhQID0g
Lyhccyt8XilkZWZhdWx0KFxzK3wkKS87CisKKy8qKgorICogQG5nZG9jIGRpcmVjdGl2ZQorICog
QG5hbWUgbmdNb2RlbE9wdGlvbnMKKyAqCisgKiBAZGVzY3JpcHRpb24KKyAqIEFsbG93cyB0dW5p
bmcgaG93IG1vZGVsIHVwZGF0ZXMgYXJlIGRvbmUuIFVzaW5nIGBuZ01vZGVsT3B0aW9uc2AgeW91
IGNhbiBzcGVjaWZ5IGEgY3VzdG9tIGxpc3Qgb2YKKyAqIGV2ZW50cyB0aGF0IHdpbGwgdHJpZ2dl
ciBhIG1vZGVsIHVwZGF0ZSBhbmQvb3IgYSBkZWJvdW5jaW5nIGRlbGF5IHNvIHRoYXQgdGhlIGFj
dHVhbCB1cGRhdGUgb25seQorICogdGFrZXMgcGxhY2Ugd2hlbiBhIHRpbWVyIGV4cGlyZXM7IHRo
aXMgdGltZXIgd2lsbCBiZSByZXNldCBhZnRlciBhbm90aGVyIGNoYW5nZSB0YWtlcyBwbGFjZS4K
KyAqCisgKiBHaXZlbiB0aGUgbmF0dXJlIG9mIGBuZ01vZGVsT3B0aW9uc2AsIHRoZSB2YWx1ZSBk
aXNwbGF5ZWQgaW5zaWRlIGlucHV0IGZpZWxkcyBpbiB0aGUgdmlldyBtaWdodAorICogYmUgZGlm
ZmVyZW50IGZyb20gdGhlIHZhbHVlIGluIHRoZSBhY3R1YWwgbW9kZWwuIFRoaXMgbWVhbnMgdGhh
dCBpZiB5b3UgdXBkYXRlIHRoZSBtb2RlbCB5b3UKKyAqIHNob3VsZCBhbHNvIGludm9rZSB7QGxp
bmsgbmdNb2RlbC5OZ01vZGVsQ29udHJvbGxlciBgJHJvbGxiYWNrVmlld1ZhbHVlYH0gb24gdGhl
IHJlbGV2YW50IGlucHV0IGZpZWxkIGluCisgKiBvcmRlciB0byBtYWtlIHN1cmUgaXQgaXMgc3lu
Y2hyb25pemVkIHdpdGggdGhlIG1vZGVsIGFuZCB0aGF0IGFueSBkZWJvdW5jZWQgYWN0aW9uIGlz
IGNhbmNlbGVkLgorICoKKyAqIFRoZSBlYXNpZXN0IHdheSB0byByZWZlcmVuY2UgdGhlIGNvbnRy
b2wncyB7QGxpbmsgbmdNb2RlbC5OZ01vZGVsQ29udHJvbGxlciBgJHJvbGxiYWNrVmlld1ZhbHVl
YH0KKyAqIG1ldGhvZCBpcyBieSBtYWtpbmcgc3VyZSB0aGUgaW5wdXQgaXMgcGxhY2VkIGluc2lk
ZSBhIGZvcm0gdGhhdCBoYXMgYSBgbmFtZWAgYXR0cmlidXRlLiBUaGlzIGlzCisgKiBpbXBvcnRh
bnQgYmVjYXVzZSBgZm9ybWAgY29udHJvbGxlcnMgYXJlIHB1Ymxpc2hlZCB0byB0aGUgcmVsYXRl
ZCBzY29wZSB1bmRlciB0aGUgbmFtZSBpbiB0aGVpcgorICogYG5hbWVgIGF0dHJpYnV0ZS4KKyAq
CisgKiBBbnkgcGVuZGluZyBjaGFuZ2VzIHdpbGwgdGFrZSBwbGFjZSBpbW1lZGlhdGVseSB3aGVu
IGFuIGVuY2xvc2luZyBmb3JtIGlzIHN1Ym1pdHRlZCB2aWEgdGhlCisgKiBgc3VibWl0YCBldmVu
dC4gTm90ZSB0aGF0IGBuZ0NsaWNrYCBldmVudHMgd2lsbCBvY2N1ciBiZWZvcmUgdGhlIG1vZGVs
IGlzIHVwZGF0ZWQuIFVzZSBgbmdTdWJtaXRgCisgKiB0byBoYXZlIGFjY2VzcyB0byB0aGUgdXBk
YXRlZCBtb2RlbC4KKyAqCisgKiBgbmdNb2RlbE9wdGlvbnNgIGhhcyBhbiBlZmZlY3Qgb24gdGhl
IGVsZW1lbnQgaXQncyBkZWNsYXJlZCBvbiBhbmQgaXRzIGRlc2NlbmRhbnRzLgorICoKKyAqIEBw
YXJhbSB7T2JqZWN0fSBuZ01vZGVsT3B0aW9ucyBvcHRpb25zIHRvIGFwcGx5IHRvIHRoZSBjdXJy
ZW50IG1vZGVsLiBWYWxpZCBrZXlzIGFyZToKKyAqICAgLSBgdXBkYXRlT25gOiBzdHJpbmcgc3Bl
Y2lmeWluZyB3aGljaCBldmVudCBzaG91bGQgdGhlIGlucHV0IGJlIGJvdW5kIHRvLiBZb3UgY2Fu
IHNldCBzZXZlcmFsCisgKiAgICAgZXZlbnRzIHVzaW5nIGFuIHNwYWNlIGRlbGltaXRlZCBsaXN0
LiBUaGVyZSBpcyBhIHNwZWNpYWwgZXZlbnQgY2FsbGVkIGBkZWZhdWx0YCB0aGF0CisgKiAgICAg
bWF0Y2hlcyB0aGUgZGVmYXVsdCBldmVudHMgYmVsb25naW5nIG9mIHRoZSBjb250cm9sLgorICog
ICAtIGBkZWJvdW5jZWA6IGludGVnZXIgdmFsdWUgd2hpY2ggY29udGFpbnMgdGhlIGRlYm91bmNl
IG1vZGVsIHVwZGF0ZSB2YWx1ZSBpbiBtaWxsaXNlY29uZHMuIEEKKyAqICAgICB2YWx1ZSBvZiAw
IHRyaWdnZXJzIGFuIGltbWVkaWF0ZSB1cGRhdGUuIElmIGFuIG9iamVjdCBpcyBzdXBwbGllZCBp
bnN0ZWFkLCB5b3UgY2FuIHNwZWNpZnkgYQorICogICAgIGN1c3RvbSB2YWx1ZSBmb3IgZWFjaCBl
dmVudC4gRm9yIGV4YW1wbGU6CisgKiAgICAgYG5nLW1vZGVsLW9wdGlvbnM9InsgdXBkYXRlT246
ICdkZWZhdWx0IGJsdXInLCBkZWJvdW5jZTogeyAnZGVmYXVsdCc6IDUwMCwgJ2JsdXInOiAwIH0g
fSJgCisgKiAgIC0gYGFsbG93SW52YWxpZGA6IGJvb2xlYW4gdmFsdWUgd2hpY2ggaW5kaWNhdGVz
IHRoYXQgdGhlIG1vZGVsIGNhbiBiZSBzZXQgd2l0aCB2YWx1ZXMgdGhhdCBkaWQKKyAqICAgICBu
b3QgdmFsaWRhdGUgY29ycmVjdGx5IGluc3RlYWQgb2YgdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2Yg
c2V0dGluZyB0aGUgbW9kZWwgdG8gdW5kZWZpbmVkLgorICogICAtIGBnZXR0ZXJTZXR0ZXJgOiBi
b29sZWFuIHZhbHVlIHdoaWNoIGRldGVybWluZXMgd2hldGhlciBvciBub3QgdG8gdHJlYXQgZnVu
Y3Rpb25zIGJvdW5kIHRvCisgICAgICAgYG5nTW9kZWxgIGFzIGdldHRlcnMvc2V0dGVycy4KKyAq
ICAgLSBgdGltZXpvbmVgOiBEZWZpbmVzIHRoZSB0aW1lem9uZSB0byBiZSB1c2VkIHRvIHJlYWQv
d3JpdGUgdGhlIGBEYXRlYCBpbnN0YW5jZSBpbiB0aGUgbW9kZWwgZm9yCisgKiAgICAgYDxpbnB1
dCB0eXBlPSJkYXRlIj5gLCBgPGlucHV0IHR5cGU9InRpbWUiPmAsIC4uLiAuIEl0IHVuZGVyc3Rh
bmRzIFVUQy9HTVQgYW5kIHRoZQorICogICAgIGNvbnRpbmVudGFsIFVTIHRpbWUgem9uZSBhYmJy
ZXZpYXRpb25zLCBidXQgZm9yIGdlbmVyYWwgdXNlLCB1c2UgYSB0aW1lIHpvbmUgb2Zmc2V0LCBm
b3IKKyAqICAgICBleGFtcGxlLCBgJyswNDMwJ2AgKDQgaG91cnMsIDMwIG1pbnV0ZXMgZWFzdCBv
ZiB0aGUgR3JlZW53aWNoIG1lcmlkaWFuKQorICogICAgIElmIG5vdCBzcGVjaWZpZWQsIHRoZSB0
aW1lem9uZSBvZiB0aGUgYnJvd3NlciB3aWxsIGJlIHVzZWQuCisgKgorICogQGV4YW1wbGUKKwor
ICBUaGUgZm9sbG93aW5nIGV4YW1wbGUgc2hvd3MgaG93IHRvIG92ZXJyaWRlIGltbWVkaWF0ZSB1
cGRhdGVzLiBDaGFuZ2VzIG9uIHRoZSBpbnB1dHMgd2l0aGluIHRoZQorICBmb3JtIHdpbGwgdXBk
YXRlIHRoZSBtb2RlbCBvbmx5IHdoZW4gdGhlIGNvbnRyb2wgbG9zZXMgZm9jdXMgKGJsdXIgZXZl
bnQpLiBJZiBgZXNjYXBlYCBrZXkgaXMKKyAgcHJlc3NlZCB3aGlsZSB0aGUgaW5wdXQgZmllbGQg
aXMgZm9jdXNlZCwgdGhlIHZhbHVlIGlzIHJlc2V0IHRvIHRoZSB2YWx1ZSBpbiB0aGUgY3VycmVu
dCBtb2RlbC4KKworICA8ZXhhbXBsZSBuYW1lPSJuZ01vZGVsT3B0aW9ucy1kaXJlY3RpdmUtYmx1
ciIgbW9kdWxlPSJvcHRpb25zRXhhbXBsZSI+CisgICAgPGZpbGUgbmFtZT0iaW5kZXguaHRtbCI+
CisgICAgICA8ZGl2IG5nLWNvbnRyb2xsZXI9IkV4YW1wbGVDb250cm9sbGVyIj4KKyAgICAgICAg
PGZvcm0gbmFtZT0idXNlckZvcm0iPgorICAgICAgICAgIDxsYWJlbD5OYW1lOgorICAgICAgICAg
ICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InVzZXJOYW1lIgorICAgICAgICAgICAgICAgICAg
IG5nLW1vZGVsPSJ1c2VyLm5hbWUiCisgICAgICAgICAgICAgICAgICAgbmctbW9kZWwtb3B0aW9u
cz0ieyB1cGRhdGVPbjogJ2JsdXInIH0iCisgICAgICAgICAgICAgICAgICAgbmcta2V5dXA9ImNh
bmNlbCgkZXZlbnQpIiAvPgorICAgICAgICAgIDwvbGFiZWw+PGJyIC8+CisgICAgICAgICAgPGxh
YmVsPk90aGVyIGRhdGE6CisgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmctbW9kZWw9
InVzZXIuZGF0YSIgLz4KKyAgICAgICAgICA8L2xhYmVsPjxiciAvPgorICAgICAgICA8L2Zvcm0+
CisgICAgICAgIDxwcmU+dXNlci5uYW1lID0gPHNwYW4gbmctYmluZD0idXNlci5uYW1lIj48L3Nw
YW4+PC9wcmU+CisgICAgICA8L2Rpdj4KKyAgICA8L2ZpbGU+CisgICAgPGZpbGUgbmFtZT0iYXBw
LmpzIj4KKyAgICAgIGFuZ3VsYXIubW9kdWxlKCdvcHRpb25zRXhhbXBsZScsIFtdKQorICAgICAg
ICAuY29udHJvbGxlcignRXhhbXBsZUNvbnRyb2xsZXInLCBbJyRzY29wZScsIGZ1bmN0aW9uKCRz
Y29wZSkgeworICAgICAgICAgICRzY29wZS51c2VyID0geyBuYW1lOiAnc2F5JywgZGF0YTogJycg
fTsKKworICAgICAgICAgICRzY29wZS5jYW5jZWwgPSBmdW5jdGlvbihlKSB7CisgICAgICAgICAg
ICBpZiAoZS5rZXlDb2RlID09IDI3KSB7CisgICAgICAgICAgICAgICRzY29wZS51c2VyRm9ybS51
c2VyTmFtZS4kcm9sbGJhY2tWaWV3VmFsdWUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9
OworICAgICAgICB9XSk7CisgICAgPC9maWxlPgorICAgIDxmaWxlIG5hbWU9InByb3RyYWN0b3Iu
anMiIHR5cGU9InByb3RyYWN0b3IiPgorICAgICAgdmFyIG1vZGVsID0gZWxlbWVudChieS5iaW5k
aW5nKCd1c2VyLm5hbWUnKSk7CisgICAgICB2YXIgaW5wdXQgPSBlbGVtZW50KGJ5Lm1vZGVsKCd1
c2VyLm5hbWUnKSk7CisgICAgICB2YXIgb3RoZXIgPSBlbGVtZW50KGJ5Lm1vZGVsKCd1c2VyLmRh
dGEnKSk7CisKKyAgICAgIGl0KCdzaG91bGQgYWxsb3cgY3VzdG9tIGV2ZW50cycsIGZ1bmN0aW9u
KCkgeworICAgICAgICBpbnB1dC5zZW5kS2V5cygnIGhlbGxvJyk7CisgICAgICAgIGlucHV0LmNs
aWNrKCk7CisgICAgICAgIGV4cGVjdChtb2RlbC5nZXRUZXh0KCkpLnRvRXF1YWwoJ3NheScpOwor
ICAgICAgICBvdGhlci5jbGljaygpOworICAgICAgICBleHBlY3QobW9kZWwuZ2V0VGV4dCgpKS50
b0VxdWFsKCdzYXkgaGVsbG8nKTsKKyAgICAgIH0pOworCisgICAgICBpdCgnc2hvdWxkICRyb2xs
YmFja1ZpZXdWYWx1ZSB3aGVuIG1vZGVsIGNoYW5nZXMnLCBmdW5jdGlvbigpIHsKKyAgICAgICAg
aW5wdXQuc2VuZEtleXMoJyBoZWxsbycpOworICAgICAgICBleHBlY3QoaW5wdXQuZ2V0QXR0cmli
dXRlKCd2YWx1ZScpKS50b0VxdWFsKCdzYXkgaGVsbG8nKTsKKyAgICAgICAgaW5wdXQuc2VuZEtl
eXMocHJvdHJhY3Rvci5LZXkuRVNDQVBFKTsKKyAgICAgICAgZXhwZWN0KGlucHV0LmdldEF0dHJp
YnV0ZSgndmFsdWUnKSkudG9FcXVhbCgnc2F5Jyk7CisgICAgICAgIG90aGVyLmNsaWNrKCk7Cisg
ICAgICAgIGV4cGVjdChtb2RlbC5nZXRUZXh0KCkpLnRvRXF1YWwoJ3NheScpOworICAgICAgfSk7
CisgICAgPC9maWxlPgorICA8L2V4YW1wbGU+CisKKyAgVGhpcyBvbmUgc2hvd3MgaG93IHRvIGRl
Ym91bmNlIG1vZGVsIGNoYW5nZXMuIE1vZGVsIHdpbGwgYmUgdXBkYXRlZCBvbmx5IDEgc2VjIGFm
dGVyIGxhc3QgY2hhbmdlLgorICBJZiB0aGUgYENsZWFyYCBidXR0b24gaXMgcHJlc3NlZCwgYW55
IGRlYm91bmNlZCBhY3Rpb24gaXMgY2FuY2VsZWQgYW5kIHRoZSB2YWx1ZSBiZWNvbWVzIGVtcHR5
LgorCisgIDxleGFtcGxlIG5hbWU9Im5nTW9kZWxPcHRpb25zLWRpcmVjdGl2ZS1kZWJvdW5jZSIg
bW9kdWxlPSJvcHRpb25zRXhhbXBsZSI+CisgICAgPGZpbGUgbmFtZT0iaW5kZXguaHRtbCI+Cisg
ICAgICA8ZGl2IG5nLWNvbnRyb2xsZXI9IkV4YW1wbGVDb250cm9sbGVyIj4KKyAgICAgICAgPGZv
cm0gbmFtZT0idXNlckZvcm0iPgorICAgICAgICAgIDxsYWJlbD5OYW1lOgorICAgICAgICAgICAg
PGlucHV0IHR5cGU9InRleHQiIG5hbWU9InVzZXJOYW1lIgorICAgICAgICAgICAgICAgICAgIG5n
LW1vZGVsPSJ1c2VyLm5hbWUiCisgICAgICAgICAgICAgICAgICAgbmctbW9kZWwtb3B0aW9ucz0i
eyBkZWJvdW5jZTogMTAwMCB9IiAvPgorICAgICAgICAgIDwvbGFiZWw+CisgICAgICAgICAgPGJ1
dHRvbiBuZy1jbGljaz0idXNlckZvcm0udXNlck5hbWUuJHJvbGxiYWNrVmlld1ZhbHVlKCk7IHVz
ZXIubmFtZT0nJyI+Q2xlYXI8L2J1dHRvbj4KKyAgICAgICAgICA8YnIgLz4KKyAgICAgICAgPC9m
b3JtPgorICAgICAgICA8cHJlPnVzZXIubmFtZSA9IDxzcGFuIG5nLWJpbmQ9InVzZXIubmFtZSI+
PC9zcGFuPjwvcHJlPgorICAgICAgPC9kaXY+CisgICAgPC9maWxlPgorICAgIDxmaWxlIG5hbWU9
ImFwcC5qcyI+CisgICAgICBhbmd1bGFyLm1vZHVsZSgnb3B0aW9uc0V4YW1wbGUnLCBbXSkKKyAg
ICAgICAgLmNvbnRyb2xsZXIoJ0V4YW1wbGVDb250cm9sbGVyJywgWyckc2NvcGUnLCBmdW5jdGlv
bigkc2NvcGUpIHsKKyAgICAgICAgICAkc2NvcGUudXNlciA9IHsgbmFtZTogJ3NheScgfTsKKyAg
ICAgICAgfV0pOworICAgIDwvZmlsZT4KKyAgPC9leGFtcGxlPgorCisgIFRoaXMgb25lIHNob3dz
IGhvdyB0byBiaW5kIHRvIGdldHRlci9zZXR0ZXJzOgorCisgIDxleGFtcGxlIG5hbWU9Im5nTW9k
ZWxPcHRpb25zLWRpcmVjdGl2ZS1nZXR0ZXItc2V0dGVyIiBtb2R1bGU9ImdldHRlclNldHRlckV4
YW1wbGUiPgorICAgIDxmaWxlIG5hbWU9ImluZGV4Lmh0bWwiPgorICAgICAgPGRpdiBuZy1jb250
cm9sbGVyPSJFeGFtcGxlQ29udHJvbGxlciI+CisgICAgICAgIDxmb3JtIG5hbWU9InVzZXJGb3Jt
Ij4KKyAgICAgICAgICA8bGFiZWw+TmFtZToKKyAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0
IiBuYW1lPSJ1c2VyTmFtZSIKKyAgICAgICAgICAgICAgICAgICBuZy1tb2RlbD0idXNlci5uYW1l
IgorICAgICAgICAgICAgICAgICAgIG5nLW1vZGVsLW9wdGlvbnM9InsgZ2V0dGVyU2V0dGVyOiB0
cnVlIH0iIC8+CisgICAgICAgICAgPC9sYWJlbD4KKyAgICAgICAgPC9mb3JtPgorICAgICAgICA8
cHJlPnVzZXIubmFtZSA9IDxzcGFuIG5nLWJpbmQ9InVzZXIubmFtZSgpIj48L3NwYW4+PC9wcmU+
CisgICAgICA8L2Rpdj4KKyAgICA8L2ZpbGU+CisgICAgPGZpbGUgbmFtZT0iYXBwLmpzIj4KKyAg
ICAgIGFuZ3VsYXIubW9kdWxlKCdnZXR0ZXJTZXR0ZXJFeGFtcGxlJywgW10pCisgICAgICAgIC5j
b250cm9sbGVyKCdFeGFtcGxlQ29udHJvbGxlcicsIFsnJHNjb3BlJywgZnVuY3Rpb24oJHNjb3Bl
KSB7CisgICAgICAgICAgdmFyIF9uYW1lID0gJ0JyaWFuJzsKKyAgICAgICAgICAkc2NvcGUudXNl
ciA9IHsKKyAgICAgICAgICAgIG5hbWU6IGZ1bmN0aW9uKG5ld05hbWUpIHsKKyAgICAgICAgICAg
ICAgLy8gTm90ZSB0aGF0IG5ld05hbWUgY2FuIGJlIHVuZGVmaW5lZCBmb3IgdHdvIHJlYXNvbnM6
CisgICAgICAgICAgICAgIC8vIDEuIEJlY2F1c2UgaXQgaXMgY2FsbGVkIGFzIGEgZ2V0dGVyIGFu
ZCB0aHVzIGNhbGxlZCB3aXRoIG5vIGFyZ3VtZW50cworICAgICAgICAgICAgICAvLyAyLiBCZWNh
dXNlIHRoZSBwcm9wZXJ0eSBzaG91bGQgYWN0dWFsbHkgYmUgc2V0IHRvIHVuZGVmaW5lZC4gVGhp
cyBoYXBwZW5zIGUuZy4gaWYgdGhlCisgICAgICAgICAgICAgIC8vICAgIGlucHV0IGlzIGludmFs
aWQKKyAgICAgICAgICAgICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoX25hbWUgPSBuZXdO
YW1lKSA6IF9uYW1lOworICAgICAgICAgICAgfQorICAgICAgICAgIH07CisgICAgICAgIH1dKTsK
KyAgICA8L2ZpbGU+CisgIDwvZXhhbXBsZT4KKyAqLwordmFyIG5nTW9kZWxPcHRpb25zRGlyZWN0
aXZlID0gZnVuY3Rpb24oKSB7CisgIHJldHVybiB7CisgICAgcmVzdHJpY3Q6ICdBJywKKyAgICBj
b250cm9sbGVyOiBbJyRzY29wZScsICckYXR0cnMnLCBmdW5jdGlvbigkc2NvcGUsICRhdHRycykg
eworICAgICAgdmFyIHRoYXQgPSB0aGlzOworICAgICAgdGhpcy4kb3B0aW9ucyA9IGNvcHkoJHNj
b3BlLiRldmFsKCRhdHRycy5uZ01vZGVsT3B0aW9ucykpOworICAgICAgLy8gQWxsb3cgYWRkaW5n
L292ZXJyaWRpbmcgYm91bmQgZXZlbnRzCisgICAgICBpZiAodGhpcy4kb3B0aW9ucy51cGRhdGVP
biAhPT0gdW5kZWZpbmVkKSB7CisgICAgICAgIHRoaXMuJG9wdGlvbnMudXBkYXRlT25EZWZhdWx0
ID0gZmFsc2U7CisgICAgICAgIC8vIGV4dHJhY3QgImRlZmF1bHQiIHBzZXVkby1ldmVudCBmcm9t
IGxpc3Qgb2YgZXZlbnRzIHRoYXQgY2FuIHRyaWdnZXIgYSBtb2RlbCB1cGRhdGUKKyAgICAgICAg
dGhpcy4kb3B0aW9ucy51cGRhdGVPbiA9IHRyaW0odGhpcy4kb3B0aW9ucy51cGRhdGVPbi5yZXBs
YWNlKERFRkFVTFRfUkVHRVhQLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICB0aGF0LiRvcHRpb25z
LnVwZGF0ZU9uRGVmYXVsdCA9IHRydWU7CisgICAgICAgICAgcmV0dXJuICcgJzsKKyAgICAgICAg
fSkpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgdGhpcy4kb3B0aW9ucy51cGRhdGVPbkRlZmF1
bHQgPSB0cnVlOworICAgICAgfQorICAgIH1dCisgIH07Cit9OworCisKKworLy8gaGVscGVyIG1l
dGhvZHMKK2Z1bmN0aW9uIGFkZFNldFZhbGlkaXR5TWV0aG9kKGNvbnRleHQpIHsKKyAgdmFyIGN0
cmwgPSBjb250ZXh0LmN0cmwsCisgICAgICAkZWxlbWVudCA9IGNvbnRleHQuJGVsZW1lbnQsCisg
ICAgICBjbGFzc0NhY2hlID0ge30sCisgICAgICBzZXQgPSBjb250ZXh0LnNldCwKKyAgICAgIHVu
c2V0ID0gY29udGV4dC51bnNldCwKKyAgICAgIHBhcmVudEZvcm0gPSBjb250ZXh0LnBhcmVudEZv
cm0sCisgICAgICAkYW5pbWF0ZSA9IGNvbnRleHQuJGFuaW1hdGU7CisKKyAgY2xhc3NDYWNoZVtJ
TlZBTElEX0NMQVNTXSA9ICEoY2xhc3NDYWNoZVtWQUxJRF9DTEFTU10gPSAkZWxlbWVudC5oYXND
bGFzcyhWQUxJRF9DTEFTUykpOworCisgIGN0cmwuJHNldFZhbGlkaXR5ID0gc2V0VmFsaWRpdHk7
CisKKyAgZnVuY3Rpb24gc2V0VmFsaWRpdHkodmFsaWRhdGlvbkVycm9yS2V5LCBzdGF0ZSwgY29u
dHJvbGxlcikgeworICAgIGlmIChzdGF0ZSA9PT0gdW5kZWZpbmVkKSB7CisgICAgICBjcmVhdGVB
bmRTZXQoJyRwZW5kaW5nJywgdmFsaWRhdGlvbkVycm9yS2V5LCBjb250cm9sbGVyKTsKKyAgICB9
IGVsc2UgeworICAgICAgdW5zZXRBbmRDbGVhbnVwKCckcGVuZGluZycsIHZhbGlkYXRpb25FcnJv
cktleSwgY29udHJvbGxlcik7CisgICAgfQorICAgIGlmICghaXNCb29sZWFuKHN0YXRlKSkgewor
ICAgICAgdW5zZXQoY3RybC4kZXJyb3IsIHZhbGlkYXRpb25FcnJvcktleSwgY29udHJvbGxlcik7
CisgICAgICB1bnNldChjdHJsLiQkc3VjY2VzcywgdmFsaWRhdGlvbkVycm9yS2V5LCBjb250cm9s
bGVyKTsKKyAgICB9IGVsc2UgeworICAgICAgaWYgKHN0YXRlKSB7CisgICAgICAgIHVuc2V0KGN0
cmwuJGVycm9yLCB2YWxpZGF0aW9uRXJyb3JLZXksIGNvbnRyb2xsZXIpOworICAgICAgICBzZXQo
Y3RybC4kJHN1Y2Nlc3MsIHZhbGlkYXRpb25FcnJvcktleSwgY29udHJvbGxlcik7CisgICAgICB9
IGVsc2UgeworICAgICAgICBzZXQoY3RybC4kZXJyb3IsIHZhbGlkYXRpb25FcnJvcktleSwgY29u
dHJvbGxlcik7CisgICAgICAgIHVuc2V0KGN0cmwuJCRzdWNjZXNzLCB2YWxpZGF0aW9uRXJyb3JL
ZXksIGNvbnRyb2xsZXIpOworICAgICAgfQorICAgIH0KKyAgICBpZiAoY3RybC4kcGVuZGluZykg
eworICAgICAgY2FjaGVkVG9nZ2xlQ2xhc3MoUEVORElOR19DTEFTUywgdHJ1ZSk7CisgICAgICBj
dHJsLiR2YWxpZCA9IGN0cmwuJGludmFsaWQgPSB1bmRlZmluZWQ7CisgICAgICB0b2dnbGVWYWxp
ZGF0aW9uQ3NzKCcnLCBudWxsKTsKKyAgICB9IGVsc2UgeworICAgICAgY2FjaGVkVG9nZ2xlQ2xh
c3MoUEVORElOR19DTEFTUywgZmFsc2UpOworICAgICAgY3RybC4kdmFsaWQgPSBpc09iamVjdEVt
cHR5KGN0cmwuJGVycm9yKTsKKyAgICAgIGN0cmwuJGludmFsaWQgPSAhY3RybC4kdmFsaWQ7Cisg
ICAgICB0b2dnbGVWYWxpZGF0aW9uQ3NzKCcnLCBjdHJsLiR2YWxpZCk7CisgICAgfQorCisgICAg
Ly8gcmUtcmVhZCB0aGUgc3RhdGUgYXMgdGhlIHNldC91bnNldCBtZXRob2RzIGNvdWxkIGhhdmUK
KyAgICAvLyBjb21iaW5lZCBzdGF0ZSBpbiBjdHJsLiRlcnJvclt2YWxpZGF0aW9uRXJyb3JdICh1
c2VkIGZvciBmb3JtcyksCisgICAgLy8gd2hlcmUgc2V0dGluZy91bnNldHRpbmcgb25seSBpbmNy
ZW1lbnRzL2RlY3JlbWVudHMgdGhlIHZhbHVlLAorICAgIC8vIGFuZCBkb2VzIG5vdCByZXBsYWNl
IGl0LgorICAgIHZhciBjb21iaW5lZFN0YXRlOworICAgIGlmIChjdHJsLiRwZW5kaW5nICYmIGN0
cmwuJHBlbmRpbmdbdmFsaWRhdGlvbkVycm9yS2V5XSkgeworICAgICAgY29tYmluZWRTdGF0ZSA9
IHVuZGVmaW5lZDsKKyAgICB9IGVsc2UgaWYgKGN0cmwuJGVycm9yW3ZhbGlkYXRpb25FcnJvcktl
eV0pIHsKKyAgICAgIGNvbWJpbmVkU3RhdGUgPSBmYWxzZTsKKyAgICB9IGVsc2UgaWYgKGN0cmwu
JCRzdWNjZXNzW3ZhbGlkYXRpb25FcnJvcktleV0pIHsKKyAgICAgIGNvbWJpbmVkU3RhdGUgPSB0
cnVlOworICAgIH0gZWxzZSB7CisgICAgICBjb21iaW5lZFN0YXRlID0gbnVsbDsKKyAgICB9CisK
KyAgICB0b2dnbGVWYWxpZGF0aW9uQ3NzKHZhbGlkYXRpb25FcnJvcktleSwgY29tYmluZWRTdGF0
ZSk7CisgICAgcGFyZW50Rm9ybS4kc2V0VmFsaWRpdHkodmFsaWRhdGlvbkVycm9yS2V5LCBjb21i
aW5lZFN0YXRlLCBjdHJsKTsKKyAgfQorCisgIGZ1bmN0aW9uIGNyZWF0ZUFuZFNldChuYW1lLCB2
YWx1ZSwgY29udHJvbGxlcikgeworICAgIGlmICghY3RybFtuYW1lXSkgeworICAgICAgY3RybFtu
YW1lXSA9IHt9OworICAgIH0KKyAgICBzZXQoY3RybFtuYW1lXSwgdmFsdWUsIGNvbnRyb2xsZXIp
OworICB9CisKKyAgZnVuY3Rpb24gdW5zZXRBbmRDbGVhbnVwKG5hbWUsIHZhbHVlLCBjb250cm9s
bGVyKSB7CisgICAgaWYgKGN0cmxbbmFtZV0pIHsKKyAgICAgIHVuc2V0KGN0cmxbbmFtZV0sIHZh
bHVlLCBjb250cm9sbGVyKTsKKyAgICB9CisgICAgaWYgKGlzT2JqZWN0RW1wdHkoY3RybFtuYW1l
XSkpIHsKKyAgICAgIGN0cmxbbmFtZV0gPSB1bmRlZmluZWQ7CisgICAgfQorICB9CisKKyAgZnVu
Y3Rpb24gY2FjaGVkVG9nZ2xlQ2xhc3MoY2xhc3NOYW1lLCBzd2l0Y2hWYWx1ZSkgeworICAgIGlm
IChzd2l0Y2hWYWx1ZSAmJiAhY2xhc3NDYWNoZVtjbGFzc05hbWVdKSB7CisgICAgICAkYW5pbWF0
ZS5hZGRDbGFzcygkZWxlbWVudCwgY2xhc3NOYW1lKTsKKyAgICAgIGNsYXNzQ2FjaGVbY2xhc3NO
YW1lXSA9IHRydWU7CisgICAgfSBlbHNlIGlmICghc3dpdGNoVmFsdWUgJiYgY2xhc3NDYWNoZVtj
bGFzc05hbWVdKSB7CisgICAgICAkYW5pbWF0ZS5yZW1vdmVDbGFzcygkZWxlbWVudCwgY2xhc3NO
YW1lKTsKKyAgICAgIGNsYXNzQ2FjaGVbY2xhc3NOYW1lXSA9IGZhbHNlOworICAgIH0KKyAgfQor
CisgIGZ1bmN0aW9uIHRvZ2dsZVZhbGlkYXRpb25Dc3ModmFsaWRhdGlvbkVycm9yS2V5LCBpc1Zh
bGlkKSB7CisgICAgdmFsaWRhdGlvbkVycm9yS2V5ID0gdmFsaWRhdGlvbkVycm9yS2V5ID8gJy0n
ICsgc25ha2VfY2FzZSh2YWxpZGF0aW9uRXJyb3JLZXksICctJykgOiAnJzsKKworICAgIGNhY2hl
ZFRvZ2dsZUNsYXNzKFZBTElEX0NMQVNTICsgdmFsaWRhdGlvbkVycm9yS2V5LCBpc1ZhbGlkID09
PSB0cnVlKTsKKyAgICBjYWNoZWRUb2dnbGVDbGFzcyhJTlZBTElEX0NMQVNTICsgdmFsaWRhdGlv
bkVycm9yS2V5LCBpc1ZhbGlkID09PSBmYWxzZSk7CisgIH0KK30KKworZnVuY3Rpb24gaXNPYmpl
Y3RFbXB0eShvYmopIHsKKyAgaWYgKG9iaikgeworICAgIGZvciAodmFyIHByb3AgaW4gb2JqKSB7
CisgICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KHByb3ApKSB7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgIH0KKyAgICB9CisgIH0KKyAgcmV0dXJuIHRydWU7Cit9CisKKy8qKgorICog
QG5nZG9jIGRpcmVjdGl2ZQorICogQG5hbWUgbmdOb25CaW5kYWJsZQorICogQHJlc3RyaWN0IEFD
CisgKiBAcHJpb3JpdHkgMTAwMAorICoKKyAqIEBkZXNjcmlwdGlvbgorICogVGhlIGBuZ05vbkJp
bmRhYmxlYCBkaXJlY3RpdmUgdGVsbHMgQW5ndWxhciBub3QgdG8gY29tcGlsZSBvciBiaW5kIHRo
ZSBjb250ZW50cyBvZiB0aGUgY3VycmVudAorICogRE9NIGVsZW1lbnQuIFRoaXMgaXMgdXNlZnVs
IGlmIHRoZSBlbGVtZW50IGNvbnRhaW5zIHdoYXQgYXBwZWFycyB0byBiZSBBbmd1bGFyIGRpcmVj
dGl2ZXMgYW5kCisgKiBiaW5kaW5ncyBidXQgd2hpY2ggc2hvdWxkIGJlIGlnbm9yZWQgYnkgQW5n
dWxhci4gVGhpcyBjb3VsZCBiZSB0aGUgY2FzZSBpZiB5b3UgaGF2ZSBhIHNpdGUgdGhhdAorICog
ZGlzcGxheXMgc25pcHBldHMgb2YgY29kZSwgZm9yIGluc3RhbmNlLgorICoKKyAqIEBlbGVtZW50
IEFOWQorICoKKyAqIEBleGFtcGxlCisgKiBJbiB0aGlzIGV4YW1wbGUgdGhlcmUgYXJlIHR3byBs
b2NhdGlvbnMgd2hlcmUgYSBzaW1wbGUgaW50ZXJwb2xhdGlvbiBiaW5kaW5nIChge3t9fWApIGlz
IHByZXNlbnQsCisgKiBidXQgdGhlIG9uZSB3cmFwcGVkIGluIGBuZ05vbkJpbmRhYmxlYCBpcyBs
ZWZ0IGFsb25lLgorICoKKyAqIEBleGFtcGxlCisgICAgPGV4YW1wbGU+CisgICAgICA8ZmlsZSBu
YW1lPSJpbmRleC5odG1sIj4KKyAgICAgICAgPGRpdj5Ob3JtYWw6IHt7MSArIDJ9fTwvZGl2Pgor
ICAgICAgICA8ZGl2IG5nLW5vbi1iaW5kYWJsZT5JZ25vcmVkOiB7ezEgKyAyfX08L2Rpdj4KKyAg
ICAgIDwvZmlsZT4KKyAgICAgIDxmaWxlIG5hbWU9InByb3RyYWN0b3IuanMiIHR5cGU9InByb3Ry
YWN0b3IiPgorICAgICAgIGl0KCdzaG91bGQgY2hlY2sgbmctbm9uLWJpbmRhYmxlJywgZnVuY3Rp
b24oKSB7CisgICAgICAgICBleHBlY3QoZWxlbWVudChieS5iaW5kaW5nKCcxICsgMicpKS5nZXRU
ZXh0KCkpLnRvQ29udGFpbignMycpOworICAgICAgICAgZXhwZWN0KGVsZW1lbnQuYWxsKGJ5LmNz
cygnZGl2JykpLmxhc3QoKS5nZXRUZXh0KCkpLnRvTWF0Y2goLzEgXCsgMi8pOworICAgICAgIH0p
OworICAgICAgPC9maWxlPgorICAgIDwvZXhhbXBsZT4KKyAqLwordmFyIG5nTm9uQmluZGFibGVE
aXJlY3RpdmUgPSBuZ0RpcmVjdGl2ZSh7IHRlcm1pbmFsOiB0cnVlLCBwcmlvcml0eTogMTAwMCB9
KTsKKworLyogZ2xvYmFsIGpxTGl0ZVJlbW92ZSAqLworCit2YXIgbmdPcHRpb25zTWluRXJyID0g
bWluRXJyKCduZ09wdGlvbnMnKTsKKworLyoqCisgKiBAbmdkb2MgZGlyZWN0aXZlCisgKiBAbmFt
ZSBuZ09wdGlvbnMKKyAqIEByZXN0cmljdCBBCisgKgorICogQGRlc2NyaXB0aW9uCisgKgorICog
VGhlIGBuZ09wdGlvbnNgIGF0dHJpYnV0ZSBjYW4gYmUgdXNlZCB0byBkeW5hbWljYWxseSBnZW5l
cmF0ZSBhIGxpc3Qgb2YgYDxvcHRpb24+YAorICogZWxlbWVudHMgZm9yIHRoZSBgPHNlbGVjdD5g
IGVsZW1lbnQgdXNpbmcgdGhlIGFycmF5IG9yIG9iamVjdCBvYnRhaW5lZCBieSBldmFsdWF0aW5n
IHRoZQorICogYG5nT3B0aW9uc2AgY29tcHJlaGVuc2lvbiBleHByZXNzaW9uLgorICoKKyAqIElu
IG1hbnkgY2FzZXMsIGBuZ1JlcGVhdGAgY2FuIGJlIHVzZWQgb24gYDxvcHRpb24+YCBlbGVtZW50
cyBpbnN0ZWFkIG9mIGBuZ09wdGlvbnNgIHRvIGFjaGlldmUgYQorICogc2ltaWxhciByZXN1bHQu
IEhvd2V2ZXIsIGBuZ09wdGlvbnNgIHByb3ZpZGVzIHNvbWUgYmVuZWZpdHMgc3VjaCBhcyByZWR1
Y2luZyBtZW1vcnkgYW5kCisgKiBpbmNyZWFzaW5nIHNwZWVkIGJ5IG5vdCBjcmVhdGluZyBhIG5l
dyBzY29wZSBmb3IgZWFjaCByZXBlYXRlZCBpbnN0YW5jZSwgYXMgd2VsbCBhcyBwcm92aWRpbmcK
KyAqIG1vcmUgZmxleGliaWxpdHkgaW4gaG93IHRoZSBgPHNlbGVjdD5gJ3MgbW9kZWwgaXMgYXNz
aWduZWQgdmlhIHRoZSBgc2VsZWN0YCAqKmBhc2AqKiBwYXJ0IG9mIHRoZQorICogY29tcHJlaGVu
c2lvbiBleHByZXNzaW9uLiBgbmdPcHRpb25zYCBzaG91bGQgYmUgdXNlZCB3aGVuIHRoZSBgPHNl
bGVjdD5gIG1vZGVsIG5lZWRzIHRvIGJlIGJvdW5kCisgKiAgdG8gYSBub24tc3RyaW5nIHZhbHVl
LiBUaGlzIGlzIGJlY2F1c2UgYW4gb3B0aW9uIGVsZW1lbnQgY2FuIG9ubHkgYmUgYm91bmQgdG8g
c3RyaW5nIHZhbHVlcyBhdAorICogcHJlc2VudC4KKyAqCisgKiBXaGVuIGFuIGl0ZW0gaW4gdGhl
IGA8c2VsZWN0PmAgbWVudSBpcyBzZWxlY3RlZCwgdGhlIGFycmF5IGVsZW1lbnQgb3Igb2JqZWN0
IHByb3BlcnR5CisgKiByZXByZXNlbnRlZCBieSB0aGUgc2VsZWN0ZWQgb3B0aW9uIHdpbGwgYmUg
Ym91bmQgdG8gdGhlIG1vZGVsIGlkZW50aWZpZWQgYnkgdGhlIGBuZ01vZGVsYAorICogZGlyZWN0
aXZlLgorICoKKyAqIE9wdGlvbmFsbHksIGEgc2luZ2xlIGhhcmQtY29kZWQgYDxvcHRpb24+YCBl
bGVtZW50LCB3aXRoIHRoZSB2YWx1ZSBzZXQgdG8gYW4gZW1wdHkgc3RyaW5nLCBjYW4KKyAqIGJl
IG5lc3RlZCBpbnRvIHRoZSBgPHNlbGVjdD5gIGVsZW1lbnQuIFRoaXMgZWxlbWVudCB3aWxsIHRo
ZW4gcmVwcmVzZW50IHRoZSBgbnVsbGAgb3IgIm5vdCBzZWxlY3RlZCIKKyAqIG9wdGlvbi4gU2Vl
IGV4YW1wbGUgYmVsb3cgZm9yIGRlbW9uc3RyYXRpb24uCisgKgorICogIyMgQ29tcGxleCBNb2Rl
bHMgKG9iamVjdHMgb3IgY29sbGVjdGlvbnMpCisgKgorICogKipOb3RlOioqIEJ5IGRlZmF1bHQs
IGBuZ01vZGVsYCB3YXRjaGVzIHRoZSBtb2RlbCBieSByZWZlcmVuY2UsIG5vdCB2YWx1ZS4gVGhp
cyBpcyBpbXBvcnRhbnQgd2hlbgorICogYmluZGluZyBhbnkgaW5wdXQgZGlyZWN0aXZlIHRvIGEg
bW9kZWwgdGhhdCBpcyBhbiBvYmplY3Qgb3IgYSBjb2xsZWN0aW9uLgorICoKKyAqIFNpbmNlIHRo
aXMgaXMgYSBjb21tb24gc2l0dWF0aW9uIGZvciBgbmdPcHRpb25zYCB0aGUgZGlyZWN0aXZlIGFk
ZGl0aW9uYWxseSB3YXRjaGVzIHRoZSBtb2RlbCB1c2luZworICogYCR3YXRjaENvbGxlY3Rpb25g
IHdoZW4gdGhlIHNlbGVjdCBoYXMgdGhlIGBtdWx0aXBsZWAgYXR0cmlidXRlIG9yIHdoZW4gdGhl
cmUgaXMgYSBgdHJhY2sgYnlgIGNsYXVzZSBpbgorICogdGhlIG9wdGlvbnMgZXhwcmVzc2lvbi4g
VGhpcyBhbGxvd3MgbmdPcHRpb25zIHRvIHRyaWdnZXIgYSByZS1yZW5kZXJpbmcgb2YgdGhlIG9w
dGlvbnMgZXZlbiBpZiB0aGUgYWN0dWFsCisgKiBvYmplY3QvY29sbGVjdGlvbiBoYXMgbm90IGNo
YW5nZWQgaWRlbnRpdHkgYnV0IG9ubHkgYSBwcm9wZXJ0eSBvbiB0aGUgb2JqZWN0IG9yIGFuIGl0
ZW0gaW4gdGhlIGNvbGxlY3Rpb24KKyAqIGNoYW5nZXMuCisgKgorICogTm90ZSB0aGF0IGAkd2F0
Y2hDb2xsZWN0aW9uYCBkb2VzIGEgc2hhbGxvdyBjb21wYXJpc29uIG9mIHRoZSBwcm9wZXJ0aWVz
IG9mIHRoZSBvYmplY3QgKG9yIHRoZSBpdGVtcyBpbiB0aGUgY29sbGVjdGlvbgorICogaWYgdGhl
IG1vZGVsIGlzIGFuIGFycmF5KS4gVGhpcyBtZWFucyB0aGF0IGNoYW5naW5nIGEgcHJvcGVydHkg
ZGVlcGVyIGluc2lkZSB0aGUgb2JqZWN0L2NvbGxlY3Rpb24gdGhhdCB0aGUKKyAqIGZpcnN0IGxl
dmVsIHdpbGwgbm90IHRyaWdnZXIgYSByZS1yZW5kZXJpbmcuCisgKgorICoKKyAqICMjIGBzZWxl
Y3RgICoqYGFzYCoqCisgKgorICogVXNpbmcgYHNlbGVjdGAgKipgYXNgKiogd2lsbCBiaW5kIHRo
ZSByZXN1bHQgb2YgdGhlIGBzZWxlY3RgIGV4cHJlc3Npb24gdG8gdGhlIG1vZGVsLCBidXQKKyAq
IHRoZSB2YWx1ZSBvZiB0aGUgYDxzZWxlY3Q+YCBhbmQgYDxvcHRpb24+YCBodG1sIGVsZW1lbnRz
IHdpbGwgYmUgZWl0aGVyIHRoZSBpbmRleCAoZm9yIGFycmF5IGRhdGEgc291cmNlcykKKyAqIG9y
IHByb3BlcnR5IG5hbWUgKGZvciBvYmplY3QgZGF0YSBzb3VyY2VzKSBvZiB0aGUgdmFsdWUgd2l0
aGluIHRoZSBjb2xsZWN0aW9uLiBJZiBhICoqYHRyYWNrIGJ5YCoqIGV4cHJlc3Npb24KKyAqIGlz
IHVzZWQsIHRoZSByZXN1bHQgb2YgdGhhdCBleHByZXNzaW9uIHdpbGwgYmUgc2V0IGFzIHRoZSB2
YWx1ZSBvZiB0aGUgYG9wdGlvbmAgYW5kIGBzZWxlY3RgIGVsZW1lbnRzLgorICoKKyAqCisgKiAj
IyMgYHNlbGVjdGAgKipgYXNgKiogYW5kICoqYHRyYWNrIGJ5YCoqCisgKgorICogPGRpdiBjbGFz
cz0iYWxlcnQgYWxlcnQtd2FybmluZyI+CisgKiBEbyBub3QgdXNlIGBzZWxlY3RgICoqYGFzYCoq
IGFuZCAqKmB0cmFjayBieWAqKiBpbiB0aGUgc2FtZSBleHByZXNzaW9uLiBUaGV5IGFyZSBub3Qg
ZGVzaWduZWQgdG8gd29yayB0b2dldGhlci4KKyAqIDwvZGl2PgorICoKKyAqIENvbnNpZGVyIHRo
ZSBmb2xsb3dpbmcgZXhhbXBsZToKKyAqCisgKiBgYGBodG1sCisgKiA8c2VsZWN0IG5nLW9wdGlv
bnM9Iml0ZW0uc3ViSXRlbSBhcyBpdGVtLmxhYmVsIGZvciBpdGVtIGluIHZhbHVlcyB0cmFjayBi
eSBpdGVtLmlkIiBuZy1tb2RlbD0ic2VsZWN0ZWQiPgorICogYGBgCisgKgorICogYGBganMKKyAq
ICRzY29wZS52YWx1ZXMgPSBbeworICogICBpZDogMSwKKyAqICAgbGFiZWw6ICdhTGFiZWwnLAor
ICogICBzdWJJdGVtOiB7IG5hbWU6ICdhU3ViSXRlbScgfQorICogfSwgeworICogICBpZDogMiwK
KyAqICAgbGFiZWw6ICdiTGFiZWwnLAorICogICBzdWJJdGVtOiB7IG5hbWU6ICdiU3ViSXRlbScg
fQorICogfV07CisgKgorICogJHNjb3BlLnNlbGVjdGVkID0geyBuYW1lOiAnYVN1Ykl0ZW0nIH07
CisgKiBgYGAKKyAqCisgKiBXaXRoIHRoZSBwdXJwb3NlIG9mIHByZXNlcnZpbmcgdGhlIHNlbGVj
dGlvbiwgdGhlICoqYHRyYWNrIGJ5YCoqIGV4cHJlc3Npb24gaXMgYWx3YXlzIGFwcGxpZWQgdG8g
dGhlIGVsZW1lbnQKKyAqIG9mIHRoZSBkYXRhIHNvdXJjZSAodG8gYGl0ZW1gIGluIHRoaXMgZXhh
bXBsZSkuIFRvIGNhbGN1bGF0ZSB3aGV0aGVyIGFuIGVsZW1lbnQgaXMgc2VsZWN0ZWQsIHdlIGRv
IHRoZQorICogZm9sbG93aW5nOgorICoKKyAqIDEuIEFwcGx5ICoqYHRyYWNrIGJ5YCoqIHRvIHRo
ZSBlbGVtZW50cyBpbiB0aGUgYXJyYXkuIEluIHRoZSBleGFtcGxlOiBgWzEsIDJdYAorICogMi4g
QXBwbHkgKipgdHJhY2sgYnlgKiogdG8gdGhlIGFscmVhZHkgc2VsZWN0ZWQgdmFsdWUgaW4gYG5n
TW9kZWxgLgorICogICAgSW4gdGhlIGV4YW1wbGU6IHRoaXMgaXMgbm90IHBvc3NpYmxlIGFzICoq
YHRyYWNrIGJ5YCoqIHJlZmVycyB0byBgaXRlbS5pZGAsIGJ1dCB0aGUgc2VsZWN0ZWQKKyAqICAg
IHZhbHVlIGZyb20gYG5nTW9kZWxgIGlzIGB7bmFtZTogJ2FTdWJJdGVtJ31gLCBzbyB0aGUgKipg
dHJhY2sgYnlgKiogZXhwcmVzc2lvbiBpcyBhcHBsaWVkIHRvCisgKiAgICBhIHdyb25nIG9iamVj
dCwgdGhlIHNlbGVjdGVkIGVsZW1lbnQgY2FuJ3QgYmUgZm91bmQsIGA8c2VsZWN0PmAgaXMgYWx3
YXlzIHJlc2V0IHRvIHRoZSAibm90CisgKiAgICBzZWxlY3RlZCIgb3B0aW9uLgorICoKKyAqCisg
KiBAcGFyYW0ge3N0cmluZ30gbmdNb2RlbCBBc3NpZ25hYmxlIGFuZ3VsYXIgZXhwcmVzc2lvbiB0
byBkYXRhLWJpbmQgdG8uCisgKiBAcGFyYW0ge3N0cmluZz19IG5hbWUgUHJvcGVydHkgbmFtZSBv
ZiB0aGUgZm9ybSB1bmRlciB3aGljaCB0aGUgY29udHJvbCBpcyBwdWJsaXNoZWQuCisgKiBAcGFy
YW0ge3N0cmluZz19IHJlcXVpcmVkIFRoZSBjb250cm9sIGlzIGNvbnNpZGVyZWQgdmFsaWQgb25s
eSBpZiB2YWx1ZSBpcyBlbnRlcmVkLgorICogQHBhcmFtIHtzdHJpbmc9fSBuZ1JlcXVpcmVkIEFk
ZHMgYHJlcXVpcmVkYCBhdHRyaWJ1dGUgYW5kIGByZXF1aXJlZGAgdmFsaWRhdGlvbiBjb25zdHJh
aW50IHRvCisgKiAgICB0aGUgZWxlbWVudCB3aGVuIHRoZSBuZ1JlcXVpcmVkIGV4cHJlc3Npb24g
ZXZhbHVhdGVzIHRvIHRydWUuIFVzZSBgbmdSZXF1aXJlZGAgaW5zdGVhZCBvZgorICogICAgYHJl
cXVpcmVkYCB3aGVuIHlvdSB3YW50IHRvIGRhdGEtYmluZCB0byB0aGUgYHJlcXVpcmVkYCBhdHRy
aWJ1dGUuCisgKiBAcGFyYW0ge2NvbXByZWhlbnNpb25fZXhwcmVzc2lvbj19IG5nT3B0aW9ucyBp
biBvbmUgb2YgdGhlIGZvbGxvd2luZyBmb3JtczoKKyAqCisgKiAgICogZm9yIGFycmF5IGRhdGEg
c291cmNlczoKKyAqICAgICAqIGBsYWJlbGAgKipgZm9yYCoqIGB2YWx1ZWAgKipgaW5gKiogYGFy
cmF5YAorICogICAgICogYHNlbGVjdGAgKipgYXNgKiogYGxhYmVsYCAqKmBmb3JgKiogYHZhbHVl
YCAqKmBpbmAqKiBgYXJyYXlgCisgKiAgICAgKiBgbGFiZWxgICoqYGdyb3VwIGJ5YCoqIGBncm91
cGAgKipgZm9yYCoqIGB2YWx1ZWAgKipgaW5gKiogYGFycmF5YAorICogICAgICogYGxhYmVsYCAq
KmBkaXNhYmxlIHdoZW5gKiogYGRpc2FibGVgICoqYGZvcmAqKiBgdmFsdWVgICoqYGluYCoqIGBh
cnJheWAKKyAqICAgICAqIGBsYWJlbGAgKipgZ3JvdXAgYnlgKiogYGdyb3VwYCAqKmBmb3JgKiog
YHZhbHVlYCAqKmBpbmAqKiBgYXJyYXlgICoqYHRyYWNrIGJ5YCoqIGB0cmFja2V4cHJgCisgKiAg
ICAgKiBgbGFiZWxgICoqYGRpc2FibGUgd2hlbmAqKiBgZGlzYWJsZWAgKipgZm9yYCoqIGB2YWx1
ZWAgKipgaW5gKiogYGFycmF5YCAqKmB0cmFjayBieWAqKiBgdHJhY2tleHByYAorICogICAgICog
YGxhYmVsYCAqKmBmb3JgKiogYHZhbHVlYCAqKmBpbmAqKiBgYXJyYXlgIHwgb3JkZXJCeTpgb3Jk
ZXJleHByYCAqKmB0cmFjayBieWAqKiBgdHJhY2tleHByYAorICogICAgICAgIChmb3IgaW5jbHVk
aW5nIGEgZmlsdGVyIHdpdGggYHRyYWNrIGJ5YCkKKyAqICAgKiBmb3Igb2JqZWN0IGRhdGEgc291
cmNlczoKKyAqICAgICAqIGBsYWJlbGAgKipgZm9yIChgKipga2V5YCAqKmAsYCoqIGB2YWx1ZWAq
KmApIGluYCoqIGBvYmplY3RgCisgKiAgICAgKiBgc2VsZWN0YCAqKmBhc2AqKiBgbGFiZWxgICoq
YGZvciAoYCoqYGtleWAgKipgLGAqKiBgdmFsdWVgKipgKSBpbmAqKiBgb2JqZWN0YAorICogICAg
ICogYGxhYmVsYCAqKmBncm91cCBieWAqKiBgZ3JvdXBgICoqYGZvciAoYCoqYGtleWAqKmAsYCoq
IGB2YWx1ZWAqKmApIGluYCoqIGBvYmplY3RgCisgKiAgICAgKiBgbGFiZWxgICoqYGRpc2FibGUg
d2hlbmAqKiBgZGlzYWJsZWAgKipgZm9yIChgKipga2V5YCoqYCxgKiogYHZhbHVlYCoqYCkgaW5g
KiogYG9iamVjdGAKKyAqICAgICAqIGBzZWxlY3RgICoqYGFzYCoqIGBsYWJlbGAgKipgZ3JvdXAg
YnlgKiogYGdyb3VwYAorICogICAgICAgICAqKmBmb3JgIGAoYCoqYGtleWAqKmAsYCoqIGB2YWx1
ZWAqKmApIGluYCoqIGBvYmplY3RgCisgKiAgICAgKiBgc2VsZWN0YCAqKmBhc2AqKiBgbGFiZWxg
ICoqYGRpc2FibGUgd2hlbmAqKiBgZGlzYWJsZWAKKyAqICAgICAgICAgKipgZm9yYCBgKGAqKmBr
ZXlgKipgLGAqKiBgdmFsdWVgKipgKSBpbmAqKiBgb2JqZWN0YAorICoKKyAqIFdoZXJlOgorICoK
KyAqICAgKiBgYXJyYXlgIC8gYG9iamVjdGA6IGFuIGV4cHJlc3Npb24gd2hpY2ggZXZhbHVhdGVz
IHRvIGFuIGFycmF5IC8gb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci4KKyAqICAgKiBgdmFsdWVgOiBs
b2NhbCB2YXJpYWJsZSB3aGljaCB3aWxsIHJlZmVyIHRvIGVhY2ggaXRlbSBpbiB0aGUgYGFycmF5
YCBvciBlYWNoIHByb3BlcnR5IHZhbHVlCisgKiAgICAgIG9mIGBvYmplY3RgIGR1cmluZyBpdGVy
YXRpb24uCisgKiAgICogYGtleWA6IGxvY2FsIHZhcmlhYmxlIHdoaWNoIHdpbGwgcmVmZXIgdG8g
YSBwcm9wZXJ0eSBuYW1lIGluIGBvYmplY3RgIGR1cmluZyBpdGVyYXRpb24uCisgKiAgICogYGxh
YmVsYDogVGhlIHJlc3VsdCBvZiB0aGlzIGV4cHJlc3Npb24gd2lsbCBiZSB0aGUgbGFiZWwgZm9y
IGA8b3B0aW9uPmAgZWxlbWVudC4gVGhlCisgKiAgICAgYGV4cHJlc3Npb25gIHdpbGwgbW9zdCBs
aWtlbHkgcmVmZXIgdG8gdGhlIGB2YWx1ZWAgdmFyaWFibGUgKGUuZy4gYHZhbHVlLnByb3BlcnR5
TmFtZWApLgorICogICAqIGBzZWxlY3RgOiBUaGUgcmVzdWx0IG9mIHRoaXMgZXhwcmVzc2lvbiB3
aWxsIGJlIGJvdW5kIHRvIHRoZSBtb2RlbCBvZiB0aGUgcGFyZW50IGA8c2VsZWN0PmAKKyAqICAg
ICAgZWxlbWVudC4gSWYgbm90IHNwZWNpZmllZCwgYHNlbGVjdGAgZXhwcmVzc2lvbiB3aWxsIGRl
ZmF1bHQgdG8gYHZhbHVlYC4KKyAqICAgKiBgZ3JvdXBgOiBUaGUgcmVzdWx0IG9mIHRoaXMgZXhw
cmVzc2lvbiB3aWxsIGJlIHVzZWQgdG8gZ3JvdXAgb3B0aW9ucyB1c2luZyB0aGUgYDxvcHRncm91
cD5gCisgKiAgICAgIERPTSBlbGVtZW50LgorICogICAqIGBkaXNhYmxlYDogVGhlIHJlc3VsdCBv
ZiB0aGlzIGV4cHJlc3Npb24gd2lsbCBiZSB1c2VkIHRvIGRpc2FibGUgdGhlIHJlbmRlcmVkIGA8
b3B0aW9uPmAKKyAqICAgICAgZWxlbWVudC4gUmV0dXJuIGB0cnVlYCB0byBkaXNhYmxlLgorICog
ICAqIGB0cmFja2V4cHJgOiBVc2VkIHdoZW4gd29ya2luZyB3aXRoIGFuIGFycmF5IG9mIG9iamVj
dHMuIFRoZSByZXN1bHQgb2YgdGhpcyBleHByZXNzaW9uIHdpbGwgYmUKKyAqICAgICAgdXNlZCB0
byBpZGVudGlmeSB0aGUgb2JqZWN0cyBpbiB0aGUgYXJyYXkuIFRoZSBgdHJhY2tleHByYCB3aWxs
IG1vc3QgbGlrZWx5IHJlZmVyIHRvIHRoZQorICogICAgIGB2YWx1ZWAgdmFyaWFibGUgKGUuZy4g
YHZhbHVlLnByb3BlcnR5TmFtZWApLiBXaXRoIHRoaXMgdGhlIHNlbGVjdGlvbiBpcyBwcmVzZXJ2
ZWQKKyAqICAgICAgZXZlbiB3aGVuIHRoZSBvcHRpb25zIGFyZSByZWNyZWF0ZWQgKGUuZy4gcmVs
b2FkZWQgZnJvbSB0aGUgc2VydmVyKS4KKyAqCisgKiBAZXhhbXBsZQorICAgIDxleGFtcGxlIG1v
ZHVsZT0ic2VsZWN0RXhhbXBsZSI+CisgICAgICA8ZmlsZSBuYW1lPSJpbmRleC5odG1sIj4KKyAg
ICAgICAgPHNjcmlwdD4KKyAgICAgICAgYW5ndWxhci5tb2R1bGUoJ3NlbGVjdEV4YW1wbGUnLCBb
XSkKKyAgICAgICAgICAuY29udHJvbGxlcignRXhhbXBsZUNvbnRyb2xsZXInLCBbJyRzY29wZScs
IGZ1bmN0aW9uKCRzY29wZSkgeworICAgICAgICAgICAgJHNjb3BlLmNvbG9ycyA9IFsKKyAgICAg
ICAgICAgICAge25hbWU6J2JsYWNrJywgc2hhZGU6J2RhcmsnfSwKKyAgICAgICAgICAgICAge25h
bWU6J3doaXRlJywgc2hhZGU6J2xpZ2h0Jywgbm90QW5PcHRpb246IHRydWV9LAorICAgICAgICAg
ICAgICB7bmFtZToncmVkJywgc2hhZGU6J2RhcmsnfSwKKyAgICAgICAgICAgICAge25hbWU6J2Js
dWUnLCBzaGFkZTonZGFyaycsIG5vdEFuT3B0aW9uOiB0cnVlfSwKKyAgICAgICAgICAgICAge25h
bWU6J3llbGxvdycsIHNoYWRlOidsaWdodCcsIG5vdEFuT3B0aW9uOiBmYWxzZX0KKyAgICAgICAg
ICAgIF07CisgICAgICAgICAgICAkc2NvcGUubXlDb2xvciA9ICRzY29wZS5jb2xvcnNbMl07IC8v
IHJlZAorICAgICAgICAgIH1dKTsKKyAgICAgICAgPC9zY3JpcHQ+CisgICAgICAgIDxkaXYgbmct
Y29udHJvbGxlcj0iRXhhbXBsZUNvbnRyb2xsZXIiPgorICAgICAgICAgIDx1bD4KKyAgICAgICAg
ICAgIDxsaSBuZy1yZXBlYXQ9ImNvbG9yIGluIGNvbG9ycyI+CisgICAgICAgICAgICAgIDxsYWJl
bD5OYW1lOiA8aW5wdXQgbmctbW9kZWw9ImNvbG9yLm5hbWUiPjwvbGFiZWw+CisgICAgICAgICAg
ICAgIDxsYWJlbD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5nLW1vZGVsPSJjb2xvci5ub3RBbk9w
dGlvbiI+IERpc2FibGVkPzwvbGFiZWw+CisgICAgICAgICAgICAgIDxidXR0b24gbmctY2xpY2s9
ImNvbG9ycy5zcGxpY2UoJGluZGV4LCAxKSIgYXJpYS1sYWJlbD0iUmVtb3ZlIj5YPC9idXR0b24+
CisgICAgICAgICAgICA8L2xpPgorICAgICAgICAgICAgPGxpPgorICAgICAgICAgICAgICA8YnV0
dG9uIG5nLWNsaWNrPSJjb2xvcnMucHVzaCh7fSkiPmFkZDwvYnV0dG9uPgorICAgICAgICAgICAg
PC9saT4KKyAgICAgICAgICA8L3VsPgorICAgICAgICAgIDxoci8+CisgICAgICAgICAgPGxhYmVs
PkNvbG9yIChudWxsIG5vdCBhbGxvd2VkKToKKyAgICAgICAgICAgIDxzZWxlY3QgbmctbW9kZWw9
Im15Q29sb3IiIG5nLW9wdGlvbnM9ImNvbG9yLm5hbWUgZm9yIGNvbG9yIGluIGNvbG9ycyI+PC9z
ZWxlY3Q+CisgICAgICAgICAgPC9sYWJlbD48YnIvPgorICAgICAgICAgIDxsYWJlbD5Db2xvciAo
bnVsbCBhbGxvd2VkKToKKyAgICAgICAgICA8c3BhbiAgY2xhc3M9Im51bGxhYmxlIj4KKyAgICAg
ICAgICAgIDxzZWxlY3QgbmctbW9kZWw9Im15Q29sb3IiIG5nLW9wdGlvbnM9ImNvbG9yLm5hbWUg
Zm9yIGNvbG9yIGluIGNvbG9ycyI+CisgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IiI+LS0g
Y2hvb3NlIGNvbG9yIC0tPC9vcHRpb24+CisgICAgICAgICAgICA8L3NlbGVjdD4KKyAgICAgICAg
ICA8L3NwYW4+PC9sYWJlbD48YnIvPgorCisgICAgICAgICAgPGxhYmVsPkNvbG9yIGdyb3VwZWQg
Ynkgc2hhZGU6CisgICAgICAgICAgICA8c2VsZWN0IG5nLW1vZGVsPSJteUNvbG9yIiBuZy1vcHRp
b25zPSJjb2xvci5uYW1lIGdyb3VwIGJ5IGNvbG9yLnNoYWRlIGZvciBjb2xvciBpbiBjb2xvcnMi
PgorICAgICAgICAgICAgPC9zZWxlY3Q+CisgICAgICAgICAgPC9sYWJlbD48YnIvPgorCisgICAg
ICAgICAgPGxhYmVsPkNvbG9yIGdyb3VwZWQgYnkgc2hhZGUsIHdpdGggc29tZSBkaXNhYmxlZDoK
KyAgICAgICAgICAgIDxzZWxlY3QgbmctbW9kZWw9Im15Q29sb3IiCisgICAgICAgICAgICAgICAg
ICBuZy1vcHRpb25zPSJjb2xvci5uYW1lIGdyb3VwIGJ5IGNvbG9yLnNoYWRlIGRpc2FibGUgd2hl
biBjb2xvci5ub3RBbk9wdGlvbiBmb3IgY29sb3IgaW4gY29sb3JzIj4KKyAgICAgICAgICAgIDwv
c2VsZWN0PgorICAgICAgICAgIDwvbGFiZWw+PGJyLz4KKworCisKKyAgICAgICAgICBTZWxlY3Qg
PGJ1dHRvbiBuZy1jbGljaz0ibXlDb2xvciA9IHsgbmFtZTonbm90IGluIGxpc3QnLCBzaGFkZTog
J290aGVyJyB9Ij5ib2d1czwvYnV0dG9uPi4KKyAgICAgICAgICA8YnIvPgorICAgICAgICAgIDxo
ci8+CisgICAgICAgICAgQ3VycmVudGx5IHNlbGVjdGVkOiB7eyB7c2VsZWN0ZWRfY29sb3I6bXlD
b2xvcn0gfX0KKyAgICAgICAgICA8ZGl2IHN0eWxlPSJib3JkZXI6c29saWQgMXB4IGJsYWNrOyBo
ZWlnaHQ6MjBweCIKKyAgICAgICAgICAgICAgIG5nLXN0eWxlPSJ7J2JhY2tncm91bmQtY29sb3In
Om15Q29sb3IubmFtZX0iPgorICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICAg
IDwvZmlsZT4KKyAgICAgIDxmaWxlIG5hbWU9InByb3RyYWN0b3IuanMiIHR5cGU9InByb3RyYWN0
b3IiPgorICAgICAgICAgaXQoJ3Nob3VsZCBjaGVjayBuZy1vcHRpb25zJywgZnVuY3Rpb24oKSB7
CisgICAgICAgICAgIGV4cGVjdChlbGVtZW50KGJ5LmJpbmRpbmcoJ3tzZWxlY3RlZF9jb2xvcjpt
eUNvbG9yfScpKS5nZXRUZXh0KCkpLnRvTWF0Y2goJ3JlZCcpOworICAgICAgICAgICBlbGVtZW50
LmFsbChieS5tb2RlbCgnbXlDb2xvcicpKS5maXJzdCgpLmNsaWNrKCk7CisgICAgICAgICAgIGVs
ZW1lbnQuYWxsKGJ5LmNzcygnc2VsZWN0W25nLW1vZGVsPSJteUNvbG9yIl0gb3B0aW9uJykpLmZp
cnN0KCkuY2xpY2soKTsKKyAgICAgICAgICAgZXhwZWN0KGVsZW1lbnQoYnkuYmluZGluZygne3Nl
bGVjdGVkX2NvbG9yOm15Q29sb3J9JykpLmdldFRleHQoKSkudG9NYXRjaCgnYmxhY2snKTsKKyAg
ICAgICAgICAgZWxlbWVudChieS5jc3MoJy5udWxsYWJsZSBzZWxlY3RbbmctbW9kZWw9Im15Q29s
b3IiXScpKS5jbGljaygpOworICAgICAgICAgICBlbGVtZW50LmFsbChieS5jc3MoJy5udWxsYWJs
ZSBzZWxlY3RbbmctbW9kZWw9Im15Q29sb3IiXSBvcHRpb24nKSkuZmlyc3QoKS5jbGljaygpOwor
ICAgICAgICAgICBleHBlY3QoZWxlbWVudChieS5iaW5kaW5nKCd7c2VsZWN0ZWRfY29sb3I6bXlD
b2xvcn0nKSkuZ2V0VGV4dCgpKS50b01hdGNoKCdudWxsJyk7CisgICAgICAgICB9KTsKKyAgICAg
IDwvZmlsZT4KKyAgICA8L2V4YW1wbGU+CisgKi8KKworLy8ganNoaW50IG1heGxlbjogZmFsc2UK
Ky8vICAgICAgICAgICAgICAgICAgICAgLy8wMDAwMTExMTExMTExMTAwMDAwMDAwMDAwMjIyMjIy
MjIyMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDMzMzMzMzMzMzMwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwNDQ0NDQ0NDQ0NDQwMDAwMDAwMDAwMDAwNTU1NTU1NTU1NTU1NTU1MDAwMDAwMDAwNjY2NjY2
NjY2NjY2NjY2MDAwMDAwMDc3Nzc3Nzc3Nzc3Nzc3NzAwMDAwMDAwMDAwMDAwMDg4ODg4ODg4ODgw
MDAwMDAwMDAwMDAwMDAwMDAwOTk5OTk5OTk5OQordmFyIE5HX09QVElPTlNfUkVHRVhQID0gL15c
cyooW1xzXFNdKz8pKD86XHMrYXNccysoW1xzXFNdKz8pKT8oPzpccytncm91cFxzK2J5XHMrKFtc
c1xTXSs/KSk/KD86XHMrZGlzYWJsZVxzK3doZW5ccysoW1xzXFNdKz8pKT9ccytmb3JccysoPzoo
W1wkXHddW1wkXHddKil8KD86XChccyooW1wkXHddW1wkXHddKilccyosXHMqKFtcJFx3XVtcJFx3
XSopXHMqXCkpKVxzK2luXHMrKFtcc1xTXSs/KSg/OlxzK3RyYWNrXHMrYnlccysoW1xzXFNdKz8p
KT8kLzsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIDE6IHZhbHVlIGV4cHJlc3Npb24gKHZh
bHVlRm4pCisgICAgICAgICAgICAgICAgICAgICAgICAvLyAyOiBsYWJlbCBleHByZXNzaW9uIChk
aXNwbGF5Rm4pCisgICAgICAgICAgICAgICAgICAgICAgICAvLyAzOiBncm91cCBieSBleHByZXNz
aW9uIChncm91cEJ5Rm4pCisgICAgICAgICAgICAgICAgICAgICAgICAvLyA0OiBkaXNhYmxlIHdo
ZW4gZXhwcmVzc2lvbiAoZGlzYWJsZVdoZW5GbikKKyAgICAgICAgICAgICAgICAgICAgICAgIC8v
IDU6IGFycmF5IGl0ZW0gdmFyaWFibGUgbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgLy8g
Njogb2JqZWN0IGl0ZW0ga2V5IHZhcmlhYmxlIG5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAg
IC8vIDc6IG9iamVjdCBpdGVtIHZhbHVlIHZhcmlhYmxlIG5hbWUKKyAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIDg6IGNvbGxlY3Rpb24gZXhwcmVzc2lvbgorICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gOTogdHJhY2sgYnkgZXhwcmVzc2lvbgorLy8ganNoaW50IG1heGxlbjogMTAwCisKKwor
dmFyIG5nT3B0aW9uc0RpcmVjdGl2ZSA9IFsnJGNvbXBpbGUnLCAnJHBhcnNlJywgZnVuY3Rpb24o
JGNvbXBpbGUsICRwYXJzZSkgeworCisgIGZ1bmN0aW9uIHBhcnNlT3B0aW9uc0V4cHJlc3Npb24o
b3B0aW9uc0V4cCwgc2VsZWN0RWxlbWVudCwgc2NvcGUpIHsKKworICAgIHZhciBtYXRjaCA9IG9w
dGlvbnNFeHAubWF0Y2goTkdfT1BUSU9OU19SRUdFWFApOworICAgIGlmICghKG1hdGNoKSkgewor
ICAgICAgdGhyb3cgbmdPcHRpb25zTWluRXJyKCdpZXhwJywKKyAgICAgICAgIkV4cGVjdGVkIGV4
cHJlc3Npb24gaW4gZm9ybSBvZiAiICsKKyAgICAgICAgIidfc2VsZWN0XyAoYXMgX2xhYmVsXyk/
IGZvciAoX2tleV8sKT9fdmFsdWVfIGluIF9jb2xsZWN0aW9uXyciICsKKyAgICAgICAgIiBidXQg
Z290ICd7MH0nLiBFbGVtZW50OiB7MX0iLAorICAgICAgICBvcHRpb25zRXhwLCBzdGFydGluZ1Rh
ZyhzZWxlY3RFbGVtZW50KSk7CisgICAgfQorCisgICAgLy8gRXh0cmFjdCB0aGUgcGFydHMgZnJv
bSB0aGUgbmdPcHRpb25zIGV4cHJlc3Npb24KKworICAgIC8vIFRoZSB2YXJpYWJsZSBuYW1lIGZv
ciB0aGUgdmFsdWUgb2YgdGhlIGl0ZW0gaW4gdGhlIGNvbGxlY3Rpb24KKyAgICB2YXIgdmFsdWVO
YW1lID0gbWF0Y2hbNV0gfHwgbWF0Y2hbN107CisgICAgLy8gVGhlIHZhcmlhYmxlIG5hbWUgZm9y
IHRoZSBrZXkgb2YgdGhlIGl0ZW0gaW4gdGhlIGNvbGxlY3Rpb24KKyAgICB2YXIga2V5TmFtZSA9
IG1hdGNoWzZdOworCisgICAgLy8gQW4gZXhwcmVzc2lvbiB0aGF0IGdlbmVyYXRlcyB0aGUgdmll
d1ZhbHVlIGZvciBhbiBvcHRpb24gaWYgdGhlcmUgaXMgYSBsYWJlbCBleHByZXNzaW9uCisgICAg
dmFyIHNlbGVjdEFzID0gLyBhcyAvLnRlc3QobWF0Y2hbMF0pICYmIG1hdGNoWzFdOworICAgIC8v
IEFuIGV4cHJlc3Npb24gdGhhdCBpcyB1c2VkIHRvIHRyYWNrIHRoZSBpZCBvZiBlYWNoIG9iamVj
dCBpbiB0aGUgb3B0aW9ucyBjb2xsZWN0aW9uCisgICAgdmFyIHRyYWNrQnkgPSBtYXRjaFs5XTsK
KyAgICAvLyBBbiBleHByZXNzaW9uIHRoYXQgZ2VuZXJhdGVzIHRoZSB2aWV3VmFsdWUgZm9yIGFu
IG9wdGlvbiBpZiB0aGVyZSBpcyBubyBsYWJlbCBleHByZXNzaW9uCisgICAgdmFyIHZhbHVlRm4g
PSAkcGFyc2UobWF0Y2hbMl0gPyBtYXRjaFsxXSA6IHZhbHVlTmFtZSk7CisgICAgdmFyIHNlbGVj
dEFzRm4gPSBzZWxlY3RBcyAmJiAkcGFyc2Uoc2VsZWN0QXMpOworICAgIHZhciB2aWV3VmFsdWVG
biA9IHNlbGVjdEFzRm4gfHwgdmFsdWVGbjsKKyAgICB2YXIgdHJhY2tCeUZuID0gdHJhY2tCeSAm
JiAkcGFyc2UodHJhY2tCeSk7CisKKyAgICAvLyBHZXQgdGhlIHZhbHVlIGJ5IHdoaWNoIHdlIGFy
ZSBnb2luZyB0byB0cmFjayB0aGUgb3B0aW9uCisgICAgLy8gaWYgd2UgaGF2ZSBhIHRyYWNrRm4g
dGhlbiB1c2UgdGhhdCAocGFzc2luZyBzY29wZSBhbmQgbG9jYWxzKQorICAgIC8vIG90aGVyd2lz
ZSBqdXN0IGhhc2ggdGhlIGdpdmVuIHZpZXdWYWx1ZQorICAgIHZhciBnZXRUcmFja0J5VmFsdWVG
biA9IHRyYWNrQnkgPworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24odmFs
dWUsIGxvY2FscykgeyByZXR1cm4gdHJhY2tCeUZuKHNjb3BlLCBsb2NhbHMpOyB9IDoKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGdldEhhc2hPZlZhbHVlKHZhbHVlKSB7
IHJldHVybiBoYXNoS2V5KHZhbHVlKTsgfTsKKyAgICB2YXIgZ2V0VHJhY2tCeVZhbHVlID0gZnVu
Y3Rpb24odmFsdWUsIGtleSkgeworICAgICAgcmV0dXJuIGdldFRyYWNrQnlWYWx1ZUZuKHZhbHVl
LCBnZXRMb2NhbHModmFsdWUsIGtleSkpOworICAgIH07CisKKyAgICB2YXIgZGlzcGxheUZuID0g
JHBhcnNlKG1hdGNoWzJdIHx8IG1hdGNoWzFdKTsKKyAgICB2YXIgZ3JvdXBCeUZuID0gJHBhcnNl
KG1hdGNoWzNdIHx8ICcnKTsKKyAgICB2YXIgZGlzYWJsZVdoZW5GbiA9ICRwYXJzZShtYXRjaFs0
XSB8fCAnJyk7CisgICAgdmFyIHZhbHVlc0ZuID0gJHBhcnNlKG1hdGNoWzhdKTsKKworICAgIHZh
ciBsb2NhbHMgPSB7fTsKKyAgICB2YXIgZ2V0TG9jYWxzID0ga2V5TmFtZSA/IGZ1bmN0aW9uKHZh
bHVlLCBrZXkpIHsKKyAgICAgIGxvY2Fsc1trZXlOYW1lXSA9IGtleTsKKyAgICAgIGxvY2Fsc1t2
YWx1ZU5hbWVdID0gdmFsdWU7CisgICAgICByZXR1cm4gbG9jYWxzOworICAgIH0gOiBmdW5jdGlv
bih2YWx1ZSkgeworICAgICAgbG9jYWxzW3ZhbHVlTmFtZV0gPSB2YWx1ZTsKKyAgICAgIHJldHVy
biBsb2NhbHM7CisgICAgfTsKKworCisgICAgZnVuY3Rpb24gT3B0aW9uKHNlbGVjdFZhbHVlLCB2
aWV3VmFsdWUsIGxhYmVsLCBncm91cCwgZGlzYWJsZWQpIHsKKyAgICAgIHRoaXMuc2VsZWN0VmFs
dWUgPSBzZWxlY3RWYWx1ZTsKKyAgICAgIHRoaXMudmlld1ZhbHVlID0gdmlld1ZhbHVlOworICAg
ICAgdGhpcy5sYWJlbCA9IGxhYmVsOworICAgICAgdGhpcy5ncm91cCA9IGdyb3VwOworICAgICAg
dGhpcy5kaXNhYmxlZCA9IGRpc2FibGVkOworICAgIH0KKworICAgIGZ1bmN0aW9uIGdldE9wdGlv
blZhbHVlc0tleXMob3B0aW9uVmFsdWVzKSB7CisgICAgICB2YXIgb3B0aW9uVmFsdWVzS2V5czsK
KworICAgICAgaWYgKCFrZXlOYW1lICYmIGlzQXJyYXlMaWtlKG9wdGlvblZhbHVlcykpIHsKKyAg
ICAgICAgb3B0aW9uVmFsdWVzS2V5cyA9IG9wdGlvblZhbHVlczsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIC8vIGlmIG9iamVjdCwgZXh0cmFjdCBrZXlzLCBpbiBlbnVtZXJhdGlvbiBvcmRlciwg
dW5zb3J0ZWQKKyAgICAgICAgb3B0aW9uVmFsdWVzS2V5cyA9IFtdOworICAgICAgICBmb3IgKHZh
ciBpdGVtS2V5IGluIG9wdGlvblZhbHVlcykgeworICAgICAgICAgIGlmIChvcHRpb25WYWx1ZXMu
aGFzT3duUHJvcGVydHkoaXRlbUtleSkgJiYgaXRlbUtleS5jaGFyQXQoMCkgIT09ICckJykgewor
ICAgICAgICAgICAgb3B0aW9uVmFsdWVzS2V5cy5wdXNoKGl0ZW1LZXkpOworICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgfQorICAgICAgcmV0dXJuIG9wdGlvblZhbHVlc0tleXM7CisgICAg
fQorCisgICAgcmV0dXJuIHsKKyAgICAgIHRyYWNrQnk6IHRyYWNrQnksCisgICAgICBnZXRUcmFj
a0J5VmFsdWU6IGdldFRyYWNrQnlWYWx1ZSwKKyAgICAgIGdldFdhdGNoYWJsZXM6ICRwYXJzZSh2
YWx1ZXNGbiwgZnVuY3Rpb24ob3B0aW9uVmFsdWVzKSB7CisgICAgICAgIC8vIENyZWF0ZSBhIGNv
bGxlY3Rpb24gb2YgdGhpbmdzIHRoYXQgd2Ugd291bGQgbGlrZSB0byB3YXRjaCAod2F0Y2hlZEFy
cmF5KQorICAgICAgICAvLyBzbyB0aGF0IHRoZXkgY2FuIGFsbCBiZSB3YXRjaGVkIHVzaW5nIGEg
c2luZ2xlICR3YXRjaENvbGxlY3Rpb24KKyAgICAgICAgLy8gdGhhdCBvbmx5IHJ1bnMgdGhlIGhh
bmRsZXIgb25jZSBpZiBhbnl0aGluZyBjaGFuZ2VzCisgICAgICAgIHZhciB3YXRjaGVkQXJyYXkg
PSBbXTsKKyAgICAgICAgb3B0aW9uVmFsdWVzID0gb3B0aW9uVmFsdWVzIHx8IFtdOworCisgICAg
ICAgIHZhciBvcHRpb25WYWx1ZXNLZXlzID0gZ2V0T3B0aW9uVmFsdWVzS2V5cyhvcHRpb25WYWx1
ZXMpOworICAgICAgICB2YXIgb3B0aW9uVmFsdWVzTGVuZ3RoID0gb3B0aW9uVmFsdWVzS2V5cy5s
ZW5ndGg7CisgICAgICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBvcHRpb25WYWx1ZXNM
ZW5ndGg7IGluZGV4KyspIHsKKyAgICAgICAgICB2YXIga2V5ID0gKG9wdGlvblZhbHVlcyA9PT0g
b3B0aW9uVmFsdWVzS2V5cykgPyBpbmRleCA6IG9wdGlvblZhbHVlc0tleXNbaW5kZXhdOworICAg
ICAgICAgIHZhciB2YWx1ZSA9IG9wdGlvblZhbHVlc1trZXldOworCisgICAgICAgICAgdmFyIGxv
Y2FscyA9IGdldExvY2FscyhvcHRpb25WYWx1ZXNba2V5XSwga2V5KTsKKyAgICAgICAgICB2YXIg
c2VsZWN0VmFsdWUgPSBnZXRUcmFja0J5VmFsdWVGbihvcHRpb25WYWx1ZXNba2V5XSwgbG9jYWxz
KTsKKyAgICAgICAgICB3YXRjaGVkQXJyYXkucHVzaChzZWxlY3RWYWx1ZSk7CisKKyAgICAgICAg
ICAvLyBPbmx5IG5lZWQgdG8gd2F0Y2ggdGhlIGRpc3BsYXlGbiBpZiB0aGVyZSBpcyBhIHNwZWNp
ZmljIGxhYmVsIGV4cHJlc3Npb24KKyAgICAgICAgICBpZiAobWF0Y2hbMl0gfHwgbWF0Y2hbMV0p
IHsKKyAgICAgICAgICAgIHZhciBsYWJlbCA9IGRpc3BsYXlGbihzY29wZSwgbG9jYWxzKTsKKyAg
ICAgICAgICAgIHdhdGNoZWRBcnJheS5wdXNoKGxhYmVsKTsKKyAgICAgICAgICB9CisKKyAgICAg
ICAgICAvLyBPbmx5IG5lZWQgdG8gd2F0Y2ggdGhlIGRpc2FibGVXaGVuRm4gaWYgdGhlcmUgaXMg
YSBzcGVjaWZpYyBkaXNhYmxlIGV4cHJlc3Npb24KKyAgICAgICAgICBpZiAobWF0Y2hbNF0pIHsK
KyAgICAgICAgICAgIHZhciBkaXNhYmxlV2hlbiA9IGRpc2FibGVXaGVuRm4oc2NvcGUsIGxvY2Fs
cyk7CisgICAgICAgICAgICB3YXRjaGVkQXJyYXkucHVzaChkaXNhYmxlV2hlbik7CisgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiB3YXRjaGVkQXJyYXk7CisgICAgICB9KSwK
KworICAgICAgZ2V0T3B0aW9uczogZnVuY3Rpb24oKSB7CisKKyAgICAgICAgdmFyIG9wdGlvbkl0
ZW1zID0gW107CisgICAgICAgIHZhciBzZWxlY3RWYWx1ZU1hcCA9IHt9OworCisgICAgICAgIC8v
IFRoZSBvcHRpb24gdmFsdWVzIHdlcmUgYWxyZWFkeSBjb21wdXRlZCBpbiB0aGUgYGdldFdhdGNo
YWJsZXNgIGZuLAorICAgICAgICAvLyB3aGljaCBtdXN0IGhhdmUgYmVlbiBjYWxsZWQgdG8gdHJp
Z2dlciBgZ2V0T3B0aW9uc2AKKyAgICAgICAgdmFyIG9wdGlvblZhbHVlcyA9IHZhbHVlc0ZuKHNj
b3BlKSB8fCBbXTsKKyAgICAgICAgdmFyIG9wdGlvblZhbHVlc0tleXMgPSBnZXRPcHRpb25WYWx1
ZXNLZXlzKG9wdGlvblZhbHVlcyk7CisgICAgICAgIHZhciBvcHRpb25WYWx1ZXNMZW5ndGggPSBv
cHRpb25WYWx1ZXNLZXlzLmxlbmd0aDsKKworICAgICAgICBmb3IgKHZhciBpbmRleCA9IDA7IGlu
ZGV4IDwgb3B0aW9uVmFsdWVzTGVuZ3RoOyBpbmRleCsrKSB7CisgICAgICAgICAgdmFyIGtleSA9
IChvcHRpb25WYWx1ZXMgPT09IG9wdGlvblZhbHVlc0tleXMpID8gaW5kZXggOiBvcHRpb25WYWx1
ZXNLZXlzW2luZGV4XTsKKyAgICAgICAgICB2YXIgdmFsdWUgPSBvcHRpb25WYWx1ZXNba2V5XTsK
KyAgICAgICAgICB2YXIgbG9jYWxzID0gZ2V0TG9jYWxzKHZhbHVlLCBrZXkpOworICAgICAgICAg
IHZhciB2aWV3VmFsdWUgPSB2aWV3VmFsdWVGbihzY29wZSwgbG9jYWxzKTsKKyAgICAgICAgICB2
YXIgc2VsZWN0VmFsdWUgPSBnZXRUcmFja0J5VmFsdWVGbih2aWV3VmFsdWUsIGxvY2Fscyk7Cisg
ICAgICAgICAgdmFyIGxhYmVsID0gZGlzcGxheUZuKHNjb3BlLCBsb2NhbHMpOworICAgICAgICAg
IHZhciBncm91cCA9IGdyb3VwQnlGbihzY29wZSwgbG9jYWxzKTsKKyAgICAgICAgICB2YXIgZGlz
YWJsZWQgPSBkaXNhYmxlV2hlbkZuKHNjb3BlLCBsb2NhbHMpOworICAgICAgICAgIHZhciBvcHRp
b25JdGVtID0gbmV3IE9wdGlvbihzZWxlY3RWYWx1ZSwgdmlld1ZhbHVlLCBsYWJlbCwgZ3JvdXAs
IGRpc2FibGVkKTsKKworICAgICAgICAgIG9wdGlvbkl0ZW1zLnB1c2gob3B0aW9uSXRlbSk7Cisg
ICAgICAgICAgc2VsZWN0VmFsdWVNYXBbc2VsZWN0VmFsdWVdID0gb3B0aW9uSXRlbTsKKyAgICAg
ICAgfQorCisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgaXRlbXM6IG9wdGlvbkl0ZW1zLAor
ICAgICAgICAgIHNlbGVjdFZhbHVlTWFwOiBzZWxlY3RWYWx1ZU1hcCwKKyAgICAgICAgICBnZXRP
cHRpb25Gcm9tVmlld1ZhbHVlOiBmdW5jdGlvbih2YWx1ZSkgeworICAgICAgICAgICAgcmV0dXJu
IHNlbGVjdFZhbHVlTWFwW2dldFRyYWNrQnlWYWx1ZSh2YWx1ZSldOworICAgICAgICAgIH0sCisg
ICAgICAgICAgZ2V0Vmlld1ZhbHVlRnJvbU9wdGlvbjogZnVuY3Rpb24ob3B0aW9uKSB7CisgICAg
ICAgICAgICAvLyBJZiB0aGUgdmlld1ZhbHVlIGNvdWxkIGJlIGFuIG9iamVjdCB0aGF0IG1heSBi
ZSBtdXRhdGVkIGJ5IHRoZSBhcHBsaWNhdGlvbiwKKyAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8g
bWFrZSBhIGNvcHkgYW5kIG5vdCByZXR1cm4gdGhlIHJlZmVyZW5jZSB0byB0aGUgdmFsdWUgb24g
dGhlIG9wdGlvbi4KKyAgICAgICAgICAgIHJldHVybiB0cmFja0J5ID8gYW5ndWxhci5jb3B5KG9w
dGlvbi52aWV3VmFsdWUpIDogb3B0aW9uLnZpZXdWYWx1ZTsKKyAgICAgICAgICB9CisgICAgICAg
IH07CisgICAgICB9CisgICAgfTsKKyAgfQorCisKKyAgLy8gd2UgY2FuJ3QganVzdCBqcUxpdGUo
JzxvcHRpb24+Jykgc2luY2UganFMaXRlIGlzIG5vdCBzbWFydCBlbm91Z2gKKyAgLy8gdG8gY3Jl
YXRlIGl0IGluIDxzZWxlY3Q+IGFuZCBJRSBiYXJmcyBvdGhlcndpc2UuCisgIHZhciBvcHRpb25U
ZW1wbGF0ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ29wdGlvbicpLAorICAgICAgb3B0R3Jv
dXBUZW1wbGF0ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ29wdGdyb3VwJyk7CisKKyAgcmV0
dXJuIHsKKyAgICByZXN0cmljdDogJ0EnLAorICAgIHRlcm1pbmFsOiB0cnVlLAorICAgIHJlcXVp
cmU6IFsnc2VsZWN0JywgJz9uZ01vZGVsJ10sCisgICAgbGluazogZnVuY3Rpb24oc2NvcGUsIHNl
bGVjdEVsZW1lbnQsIGF0dHIsIGN0cmxzKSB7CisKKyAgICAgIC8vIGlmIG5nTW9kZWwgaXMgbm90
IGRlZmluZWQsIHdlIGRvbid0IG5lZWQgdG8gZG8gYW55dGhpbmcKKyAgICAgIHZhciBuZ01vZGVs
Q3RybCA9IGN0cmxzWzFdOworICAgICAgaWYgKCFuZ01vZGVsQ3RybCkgcmV0dXJuOworCisgICAg
ICB2YXIgc2VsZWN0Q3RybCA9IGN0cmxzWzBdOworICAgICAgdmFyIG11bHRpcGxlID0gYXR0ci5t
dWx0aXBsZTsKKworICAgICAgLy8gVGhlIGVtcHR5T3B0aW9uIGFsbG93cyB0aGUgYXBwbGljYXRp
b24gZGV2ZWxvcGVyIHRvIHByb3ZpZGUgdGhlaXIgb3duIGN1c3RvbSAiZW1wdHkiCisgICAgICAv
LyBvcHRpb24gd2hlbiB0aGUgdmlld1ZhbHVlIGRvZXMgbm90IG1hdGNoIGFueSBvZiB0aGUgb3B0
aW9uIHZhbHVlcy4KKyAgICAgIHZhciBlbXB0eU9wdGlvbjsKKyAgICAgIGZvciAodmFyIGkgPSAw
LCBjaGlsZHJlbiA9IHNlbGVjdEVsZW1lbnQuY2hpbGRyZW4oKSwgaWkgPSBjaGlsZHJlbi5sZW5n
dGg7IGkgPCBpaTsgaSsrKSB7CisgICAgICAgIGlmIChjaGlsZHJlbltpXS52YWx1ZSA9PT0gJycp
IHsKKyAgICAgICAgICBlbXB0eU9wdGlvbiA9IGNoaWxkcmVuLmVxKGkpOworICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIHZhciBwcm92aWRlZEVtcHR5T3B0aW9u
ID0gISFlbXB0eU9wdGlvbjsKKworICAgICAgdmFyIHVua25vd25PcHRpb24gPSBqcUxpdGUob3B0
aW9uVGVtcGxhdGUuY2xvbmVOb2RlKGZhbHNlKSk7CisgICAgICB1bmtub3duT3B0aW9uLnZhbCgn
PycpOworCisgICAgICB2YXIgb3B0aW9uczsKKyAgICAgIHZhciBuZ09wdGlvbnMgPSBwYXJzZU9w
dGlvbnNFeHByZXNzaW9uKGF0dHIubmdPcHRpb25zLCBzZWxlY3RFbGVtZW50LCBzY29wZSk7CisK
KworICAgICAgdmFyIHJlbmRlckVtcHR5T3B0aW9uID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGlm
ICghcHJvdmlkZWRFbXB0eU9wdGlvbikgeworICAgICAgICAgIHNlbGVjdEVsZW1lbnQucHJlcGVu
ZChlbXB0eU9wdGlvbik7CisgICAgICAgIH0KKyAgICAgICAgc2VsZWN0RWxlbWVudC52YWwoJycp
OworICAgICAgICBlbXB0eU9wdGlvbi5wcm9wKCdzZWxlY3RlZCcsIHRydWUpOyAvLyBuZWVkZWQg
Zm9yIElFCisgICAgICAgIGVtcHR5T3B0aW9uLmF0dHIoJ3NlbGVjdGVkJywgdHJ1ZSk7CisgICAg
ICB9OworCisgICAgICB2YXIgcmVtb3ZlRW1wdHlPcHRpb24gPSBmdW5jdGlvbigpIHsKKyAgICAg
ICAgaWYgKCFwcm92aWRlZEVtcHR5T3B0aW9uKSB7CisgICAgICAgICAgZW1wdHlPcHRpb24ucmVt
b3ZlKCk7CisgICAgICAgIH0KKyAgICAgIH07CisKKworICAgICAgdmFyIHJlbmRlclVua25vd25P
cHRpb24gPSBmdW5jdGlvbigpIHsKKyAgICAgICAgc2VsZWN0RWxlbWVudC5wcmVwZW5kKHVua25v
d25PcHRpb24pOworICAgICAgICBzZWxlY3RFbGVtZW50LnZhbCgnPycpOworICAgICAgICB1bmtu
b3duT3B0aW9uLnByb3AoJ3NlbGVjdGVkJywgdHJ1ZSk7IC8vIG5lZWRlZCBmb3IgSUUKKyAgICAg
ICAgdW5rbm93bk9wdGlvbi5hdHRyKCdzZWxlY3RlZCcsIHRydWUpOworICAgICAgfTsKKworICAg
ICAgdmFyIHJlbW92ZVVua25vd25PcHRpb24gPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdW5rbm93
bk9wdGlvbi5yZW1vdmUoKTsKKyAgICAgIH07CisKKworICAgICAgLy8gVXBkYXRlIHRoZSBjb250
cm9sbGVyIG1ldGhvZHMgZm9yIG11bHRpcGxlIHNlbGVjdGFibGUgb3B0aW9ucworICAgICAgaWYg
KCFtdWx0aXBsZSkgeworCisgICAgICAgIHNlbGVjdEN0cmwud3JpdGVWYWx1ZSA9IGZ1bmN0aW9u
IHdyaXRlTmdPcHRpb25zVmFsdWUodmFsdWUpIHsKKyAgICAgICAgICB2YXIgb3B0aW9uID0gb3B0
aW9ucy5nZXRPcHRpb25Gcm9tVmlld1ZhbHVlKHZhbHVlKTsKKworICAgICAgICAgIGlmIChvcHRp
b24gJiYgIW9wdGlvbi5kaXNhYmxlZCkgeworICAgICAgICAgICAgaWYgKHNlbGVjdEVsZW1lbnRb
MF0udmFsdWUgIT09IG9wdGlvbi5zZWxlY3RWYWx1ZSkgeworICAgICAgICAgICAgICByZW1vdmVV
bmtub3duT3B0aW9uKCk7CisgICAgICAgICAgICAgIHJlbW92ZUVtcHR5T3B0aW9uKCk7CisKKyAg
ICAgICAgICAgICAgc2VsZWN0RWxlbWVudFswXS52YWx1ZSA9IG9wdGlvbi5zZWxlY3RWYWx1ZTsK
KyAgICAgICAgICAgICAgb3B0aW9uLmVsZW1lbnQuc2VsZWN0ZWQgPSB0cnVlOworICAgICAgICAg
ICAgICBvcHRpb24uZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3NlbGVjdGVkJywgJ3NlbGVjdGVkJyk7
CisgICAgICAgICAgICB9CisgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmICh2YWx1
ZSA9PT0gbnVsbCB8fCBwcm92aWRlZEVtcHR5T3B0aW9uKSB7CisgICAgICAgICAgICAgIHJlbW92
ZVVua25vd25PcHRpb24oKTsKKyAgICAgICAgICAgICAgcmVuZGVyRW1wdHlPcHRpb24oKTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgIHJlbW92ZUVtcHR5T3B0aW9uKCk7Cisg
ICAgICAgICAgICAgIHJlbmRlclVua25vd25PcHRpb24oKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgc2VsZWN0Q3RybC5yZWFkVmFsdWUgPSBmdW5j
dGlvbiByZWFkTmdPcHRpb25zVmFsdWUoKSB7CisKKyAgICAgICAgICB2YXIgc2VsZWN0ZWRPcHRp
b24gPSBvcHRpb25zLnNlbGVjdFZhbHVlTWFwW3NlbGVjdEVsZW1lbnQudmFsKCldOworCisgICAg
ICAgICAgaWYgKHNlbGVjdGVkT3B0aW9uICYmICFzZWxlY3RlZE9wdGlvbi5kaXNhYmxlZCkgewor
ICAgICAgICAgICAgcmVtb3ZlRW1wdHlPcHRpb24oKTsKKyAgICAgICAgICAgIHJlbW92ZVVua25v
d25PcHRpb24oKTsKKyAgICAgICAgICAgIHJldHVybiBvcHRpb25zLmdldFZpZXdWYWx1ZUZyb21P
cHRpb24oc2VsZWN0ZWRPcHRpb24pOworICAgICAgICAgIH0KKyAgICAgICAgICByZXR1cm4gbnVs
bDsKKyAgICAgICAgfTsKKworICAgICAgICAvLyBJZiB3ZSBhcmUgdXNpbmcgYHRyYWNrIGJ5YCB0
aGVuIHdlIG11c3Qgd2F0Y2ggdGhlIHRyYWNrZWQgdmFsdWUgb24gdGhlIG1vZGVsCisgICAgICAg
IC8vIHNpbmNlIG5nTW9kZWwgb25seSB3YXRjaGVzIGZvciBvYmplY3QgaWRlbnRpdHkgY2hhbmdl
CisgICAgICAgIGlmIChuZ09wdGlvbnMudHJhY2tCeSkgeworICAgICAgICAgIHNjb3BlLiR3YXRj
aCgKKyAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyByZXR1cm4gbmdPcHRpb25zLmdldFRyYWNrQnlW
YWx1ZShuZ01vZGVsQ3RybC4kdmlld1ZhbHVlKTsgfSwKKyAgICAgICAgICAgIGZ1bmN0aW9uKCkg
eyBuZ01vZGVsQ3RybC4kcmVuZGVyKCk7IH0KKyAgICAgICAgICApOworICAgICAgICB9CisKKyAg
ICAgIH0gZWxzZSB7CisKKyAgICAgICAgbmdNb2RlbEN0cmwuJGlzRW1wdHkgPSBmdW5jdGlvbih2
YWx1ZSkgeworICAgICAgICAgIHJldHVybiAhdmFsdWUgfHwgdmFsdWUubGVuZ3RoID09PSAwOwor
ICAgICAgICB9OworCisKKyAgICAgICAgc2VsZWN0Q3RybC53cml0ZVZhbHVlID0gZnVuY3Rpb24g
d3JpdGVOZ09wdGlvbnNNdWx0aXBsZSh2YWx1ZSkgeworICAgICAgICAgIG9wdGlvbnMuaXRlbXMu
Zm9yRWFjaChmdW5jdGlvbihvcHRpb24pIHsKKyAgICAgICAgICAgIG9wdGlvbi5lbGVtZW50LnNl
bGVjdGVkID0gZmFsc2U7CisgICAgICAgICAgfSk7CisKKyAgICAgICAgICBpZiAodmFsdWUpIHsK
KyAgICAgICAgICAgIHZhbHVlLmZvckVhY2goZnVuY3Rpb24oaXRlbSkgeworICAgICAgICAgICAg
ICB2YXIgb3B0aW9uID0gb3B0aW9ucy5nZXRPcHRpb25Gcm9tVmlld1ZhbHVlKGl0ZW0pOworICAg
ICAgICAgICAgICBpZiAob3B0aW9uICYmICFvcHRpb24uZGlzYWJsZWQpIG9wdGlvbi5lbGVtZW50
LnNlbGVjdGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgIH0KKyAgICAgICAg
fTsKKworCisgICAgICAgIHNlbGVjdEN0cmwucmVhZFZhbHVlID0gZnVuY3Rpb24gcmVhZE5nT3B0
aW9uc011bHRpcGxlKCkgeworICAgICAgICAgIHZhciBzZWxlY3RlZFZhbHVlcyA9IHNlbGVjdEVs
ZW1lbnQudmFsKCkgfHwgW10sCisgICAgICAgICAgICAgIHNlbGVjdGlvbnMgPSBbXTsKKworICAg
ICAgICAgIGZvckVhY2goc2VsZWN0ZWRWYWx1ZXMsIGZ1bmN0aW9uKHZhbHVlKSB7CisgICAgICAg
ICAgICB2YXIgb3B0aW9uID0gb3B0aW9ucy5zZWxlY3RWYWx1ZU1hcFt2YWx1ZV07CisgICAgICAg
ICAgICBpZiAoIW9wdGlvbi5kaXNhYmxlZCkgc2VsZWN0aW9ucy5wdXNoKG9wdGlvbnMuZ2V0Vmll
d1ZhbHVlRnJvbU9wdGlvbihvcHRpb24pKTsKKyAgICAgICAgICB9KTsKKworICAgICAgICAgIHJl
dHVybiBzZWxlY3Rpb25zOworICAgICAgICB9OworCisgICAgICAgIC8vIElmIHdlIGFyZSB1c2lu
ZyBgdHJhY2sgYnlgIHRoZW4gd2UgbXVzdCB3YXRjaCB0aGVzZSB0cmFja2VkIHZhbHVlcyBvbiB0
aGUgbW9kZWwKKyAgICAgICAgLy8gc2luY2UgbmdNb2RlbCBvbmx5IHdhdGNoZXMgZm9yIG9iamVj
dCBpZGVudGl0eSBjaGFuZ2UKKyAgICAgICAgaWYgKG5nT3B0aW9ucy50cmFja0J5KSB7CisKKyAg
ICAgICAgICBzY29wZS4kd2F0Y2hDb2xsZWN0aW9uKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
aWYgKGlzQXJyYXkobmdNb2RlbEN0cmwuJHZpZXdWYWx1ZSkpIHsKKyAgICAgICAgICAgICAgcmV0
dXJuIG5nTW9kZWxDdHJsLiR2aWV3VmFsdWUubWFwKGZ1bmN0aW9uKHZhbHVlKSB7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIG5nT3B0aW9ucy5nZXRUcmFja0J5VmFsdWUodmFsdWUpOworICAgICAg
ICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCBmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgIG5nTW9kZWxDdHJsLiRyZW5kZXIoKTsKKyAgICAgICAgICB9KTsKKworICAgICAg
ICB9CisgICAgICB9CisKKworICAgICAgaWYgKHByb3ZpZGVkRW1wdHlPcHRpb24pIHsKKworICAg
ICAgICAvLyB3ZSBuZWVkIHRvIHJlbW92ZSBpdCBiZWZvcmUgY2FsbGluZyBzZWxlY3RFbGVtZW50
LmVtcHR5KCkgYmVjYXVzZSBvdGhlcndpc2UgSUUgd2lsbAorICAgICAgICAvLyByZW1vdmUgdGhl
IGxhYmVsIGZyb20gdGhlIGVsZW1lbnQuIHd0Zj8KKyAgICAgICAgZW1wdHlPcHRpb24ucmVtb3Zl
KCk7CisKKyAgICAgICAgLy8gY29tcGlsZSB0aGUgZWxlbWVudCBzaW5jZSB0aGVyZSBtaWdodCBi
ZSBiaW5kaW5ncyBpbiBpdAorICAgICAgICAkY29tcGlsZShlbXB0eU9wdGlvbikoc2NvcGUpOwor
CisgICAgICAgIC8vIHJlbW92ZSB0aGUgY2xhc3MsIHdoaWNoIGlzIGFkZGVkIGF1dG9tYXRpY2Fs
bHkgYmVjYXVzZSB3ZSByZWNvbXBpbGUgdGhlIGVsZW1lbnQgYW5kIGl0CisgICAgICAgIC8vIGJl
Y29tZXMgdGhlIGNvbXBpbGF0aW9uIHJvb3QKKyAgICAgICAgZW1wdHlPcHRpb24ucmVtb3ZlQ2xh
c3MoJ25nLXNjb3BlJyk7CisgICAgICB9IGVsc2UgeworICAgICAgICBlbXB0eU9wdGlvbiA9IGpx
TGl0ZShvcHRpb25UZW1wbGF0ZS5jbG9uZU5vZGUoZmFsc2UpKTsKKyAgICAgIH0KKworICAgICAg
Ly8gV2UgbmVlZCB0byBkbyB0aGlzIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIG9wdGlvbnMgb2Jq
ZWN0IGlzIGRlZmluZWQKKyAgICAgIC8vIHdoZW4gd2UgZmlyc3QgaGl0IGl0IGluIHdyaXRlTmdP
cHRpb25zVmFsdWUKKyAgICAgIHVwZGF0ZU9wdGlvbnMoKTsKKworICAgICAgLy8gV2Ugd2lsbCBy
ZS1yZW5kZXIgdGhlIG9wdGlvbiBlbGVtZW50cyBpZiB0aGUgb3B0aW9uIHZhbHVlcyBvciBsYWJl
bHMgY2hhbmdlCisgICAgICBzY29wZS4kd2F0Y2hDb2xsZWN0aW9uKG5nT3B0aW9ucy5nZXRXYXRj
aGFibGVzLCB1cGRhdGVPcHRpb25zKTsKKworICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC8vCisKKworICAg
ICAgZnVuY3Rpb24gdXBkYXRlT3B0aW9uRWxlbWVudChvcHRpb24sIGVsZW1lbnQpIHsKKyAgICAg
ICAgb3B0aW9uLmVsZW1lbnQgPSBlbGVtZW50OworICAgICAgICBlbGVtZW50LmRpc2FibGVkID0g
b3B0aW9uLmRpc2FibGVkOworICAgICAgICBpZiAob3B0aW9uLnZhbHVlICE9PSBlbGVtZW50LnZh
bHVlKSBlbGVtZW50LnZhbHVlID0gb3B0aW9uLnNlbGVjdFZhbHVlOworICAgICAgICBpZiAob3B0
aW9uLmxhYmVsICE9PSBlbGVtZW50LmxhYmVsKSB7CisgICAgICAgICAgZWxlbWVudC5sYWJlbCA9
IG9wdGlvbi5sYWJlbDsKKyAgICAgICAgICBlbGVtZW50LnRleHRDb250ZW50ID0gb3B0aW9uLmxh
YmVsOworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIGZ1bmN0aW9uIGFkZE9yUmV1c2VFbGVt
ZW50KHBhcmVudCwgY3VycmVudCwgdHlwZSwgdGVtcGxhdGVFbGVtZW50KSB7CisgICAgICAgIHZh
ciBlbGVtZW50OworICAgICAgICAvLyBDaGVjayB3aGV0aGVyIHdlIGNhbiByZXVzZSB0aGUgbmV4
dCBlbGVtZW50CisgICAgICAgIGlmIChjdXJyZW50ICYmIGxvd2VyY2FzZShjdXJyZW50Lm5vZGVO
YW1lKSA9PT0gdHlwZSkgeworICAgICAgICAgIC8vIFRoZSBuZXh0IGVsZW1lbnQgaXMgdGhlIHJp
Z2h0IHR5cGUgc28gcmV1c2UgaXQKKyAgICAgICAgICBlbGVtZW50ID0gY3VycmVudDsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAvLyBUaGUgbmV4dCBlbGVtZW50IGlzIG5vdCB0aGUgcmln
aHQgdHlwZSBzbyBjcmVhdGUgYSBuZXcgb25lCisgICAgICAgICAgZWxlbWVudCA9IHRlbXBsYXRl
RWxlbWVudC5jbG9uZU5vZGUoZmFsc2UpOworICAgICAgICAgIGlmICghY3VycmVudCkgeworICAg
ICAgICAgICAgLy8gVGhlcmUgYXJlIG5vIG1vcmUgZWxlbWVudHMgc28ganVzdCBhcHBlbmQgaXQg
dG8gdGhlIHNlbGVjdAorICAgICAgICAgICAgcGFyZW50LmFwcGVuZENoaWxkKGVsZW1lbnQpOwor
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBUaGUgbmV4dCBlbGVtZW50IGlzIG5v
dCBhIGdyb3VwIHNvIGluc2VydCB0aGUgbmV3IG9uZQorICAgICAgICAgICAgcGFyZW50Lmluc2Vy
dEJlZm9yZShlbGVtZW50LCBjdXJyZW50KTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgICB9CisKKworICAgICAgZnVuY3Rpb24gcmVtb3ZlRXhj
ZXNzRWxlbWVudHMoY3VycmVudCkgeworICAgICAgICB2YXIgbmV4dDsKKyAgICAgICAgd2hpbGUg
KGN1cnJlbnQpIHsKKyAgICAgICAgICBuZXh0ID0gY3VycmVudC5uZXh0U2libGluZzsKKyAgICAg
ICAgICBqcUxpdGVSZW1vdmUoY3VycmVudCk7CisgICAgICAgICAgY3VycmVudCA9IG5leHQ7Cisg
ICAgICAgIH0KKyAgICAgIH0KKworCisgICAgICBmdW5jdGlvbiBza2lwRW1wdHlBbmRVbmtub3du
T3B0aW9ucyhjdXJyZW50KSB7CisgICAgICAgIHZhciBlbXB0eU9wdGlvbl8gPSBlbXB0eU9wdGlv
biAmJiBlbXB0eU9wdGlvblswXTsKKyAgICAgICAgdmFyIHVua25vd25PcHRpb25fID0gdW5rbm93
bk9wdGlvbiAmJiB1bmtub3duT3B0aW9uWzBdOworCisgICAgICAgIGlmIChlbXB0eU9wdGlvbl8g
fHwgdW5rbm93bk9wdGlvbl8pIHsKKyAgICAgICAgICB3aGlsZSAoY3VycmVudCAmJgorICAgICAg
ICAgICAgICAgIChjdXJyZW50ID09PSBlbXB0eU9wdGlvbl8gfHwKKyAgICAgICAgICAgICAgICBj
dXJyZW50ID09PSB1bmtub3duT3B0aW9uXykpIHsKKyAgICAgICAgICAgIGN1cnJlbnQgPSBjdXJy
ZW50Lm5leHRTaWJsaW5nOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
Y3VycmVudDsKKyAgICAgIH0KKworCisgICAgICBmdW5jdGlvbiB1cGRhdGVPcHRpb25zKCkgewor
CisgICAgICAgIHZhciBwcmV2aW91c1ZhbHVlID0gb3B0aW9ucyAmJiBzZWxlY3RDdHJsLnJlYWRW
YWx1ZSgpOworCisgICAgICAgIG9wdGlvbnMgPSBuZ09wdGlvbnMuZ2V0T3B0aW9ucygpOworCisg
ICAgICAgIHZhciBncm91cE1hcCA9IHt9OworICAgICAgICB2YXIgY3VycmVudEVsZW1lbnQgPSBz
ZWxlY3RFbGVtZW50WzBdLmZpcnN0Q2hpbGQ7CisKKyAgICAgICAgLy8gRW5zdXJlIHRoYXQgdGhl
IGVtcHR5IG9wdGlvbiBpcyBhbHdheXMgdGhlcmUgaWYgaXQgd2FzIGV4cGxpY2l0bHkgcHJvdmlk
ZWQKKyAgICAgICAgaWYgKHByb3ZpZGVkRW1wdHlPcHRpb24pIHsKKyAgICAgICAgICBzZWxlY3RF
bGVtZW50LnByZXBlbmQoZW1wdHlPcHRpb24pOworICAgICAgICB9CisKKyAgICAgICAgY3VycmVu
dEVsZW1lbnQgPSBza2lwRW1wdHlBbmRVbmtub3duT3B0aW9ucyhjdXJyZW50RWxlbWVudCk7CisK
KyAgICAgICAgb3B0aW9ucy5pdGVtcy5mb3JFYWNoKGZ1bmN0aW9uIHVwZGF0ZU9wdGlvbihvcHRp
b24pIHsKKyAgICAgICAgICB2YXIgZ3JvdXA7CisgICAgICAgICAgdmFyIGdyb3VwRWxlbWVudDsK
KyAgICAgICAgICB2YXIgb3B0aW9uRWxlbWVudDsKKworICAgICAgICAgIGlmIChvcHRpb24uZ3Jv
dXApIHsKKworICAgICAgICAgICAgLy8gVGhpcyBvcHRpb24gaXMgdG8gbGl2ZSBpbiBhIGdyb3Vw
CisgICAgICAgICAgICAvLyBTZWUgaWYgd2UgaGF2ZSBhbHJlYWR5IGNyZWF0ZWQgdGhpcyBncm91
cAorICAgICAgICAgICAgZ3JvdXAgPSBncm91cE1hcFtvcHRpb24uZ3JvdXBdOworCisgICAgICAg
ICAgICBpZiAoIWdyb3VwKSB7CisKKyAgICAgICAgICAgICAgLy8gV2UgaGF2ZSBub3QgYWxyZWFk
eSBjcmVhdGVkIHRoaXMgZ3JvdXAKKyAgICAgICAgICAgICAgZ3JvdXBFbGVtZW50ID0gYWRkT3JS
ZXVzZUVsZW1lbnQoc2VsZWN0RWxlbWVudFswXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY3VycmVudEVsZW1lbnQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvcHRncm91cCcsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdEdyb3VwVGVtcGxhdGUpOworICAgICAg
ICAgICAgICAvLyBNb3ZlIHRvIHRoZSBuZXh0IGVsZW1lbnQKKyAgICAgICAgICAgICAgY3VycmVu
dEVsZW1lbnQgPSBncm91cEVsZW1lbnQubmV4dFNpYmxpbmc7CisKKyAgICAgICAgICAgICAgLy8g
VXBkYXRlIHRoZSBsYWJlbCBvbiB0aGUgZ3JvdXAgZWxlbWVudAorICAgICAgICAgICAgICBncm91
cEVsZW1lbnQubGFiZWwgPSBvcHRpb24uZ3JvdXA7CisKKyAgICAgICAgICAgICAgLy8gU3RvcmUg
aXQgZm9yIHVzZSBsYXRlcgorICAgICAgICAgICAgICBncm91cCA9IGdyb3VwTWFwW29wdGlvbi5n
cm91cF0gPSB7CisgICAgICAgICAgICAgICAgZ3JvdXBFbGVtZW50OiBncm91cEVsZW1lbnQsCisg
ICAgICAgICAgICAgICAgY3VycmVudE9wdGlvbkVsZW1lbnQ6IGdyb3VwRWxlbWVudC5maXJzdENo
aWxkCisgICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8g
U28gbm93IHdlIGhhdmUgYSBncm91cCBmb3IgdGhpcyBvcHRpb24gd2UgYWRkIHRoZSBvcHRpb24g
dG8gdGhlIGdyb3VwCisgICAgICAgICAgICBvcHRpb25FbGVtZW50ID0gYWRkT3JSZXVzZUVsZW1l
bnQoZ3JvdXAuZ3JvdXBFbGVtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdyb3VwLmN1cnJlbnRPcHRpb25FbGVtZW50LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvcHRpb24nLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvblRlbXBsYXRlKTsKKyAgICAgICAg
ICAgIHVwZGF0ZU9wdGlvbkVsZW1lbnQob3B0aW9uLCBvcHRpb25FbGVtZW50KTsKKyAgICAgICAg
ICAgIC8vIE1vdmUgdG8gdGhlIG5leHQgZWxlbWVudAorICAgICAgICAgICAgZ3JvdXAuY3VycmVu
dE9wdGlvbkVsZW1lbnQgPSBvcHRpb25FbGVtZW50Lm5leHRTaWJsaW5nOworCisgICAgICAgICAg
fSBlbHNlIHsKKworICAgICAgICAgICAgLy8gVGhpcyBvcHRpb24gaXMgbm90IGluIGEgZ3JvdXAK
KyAgICAgICAgICAgIG9wdGlvbkVsZW1lbnQgPSBhZGRPclJldXNlRWxlbWVudChzZWxlY3RFbGVt
ZW50WzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1
cnJlbnRFbGVtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdvcHRpb24nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG9wdGlvblRlbXBsYXRlKTsKKyAgICAgICAgICAgIHVwZGF0ZU9wdGlvbkVsZW1lbnQob3B0
aW9uLCBvcHRpb25FbGVtZW50KTsKKyAgICAgICAgICAgIC8vIE1vdmUgdG8gdGhlIG5leHQgZWxl
bWVudAorICAgICAgICAgICAgY3VycmVudEVsZW1lbnQgPSBvcHRpb25FbGVtZW50Lm5leHRTaWJs
aW5nOworICAgICAgICAgIH0KKyAgICAgICAgfSk7CisKKworICAgICAgICAvLyBOb3cgcmVtb3Zl
IGFsbCBleGNlc3Mgb3B0aW9ucyBhbmQgZ3JvdXAKKyAgICAgICAgT2JqZWN0LmtleXMoZ3JvdXBN
YXApLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7CisgICAgICAgICAgcmVtb3ZlRXhjZXNzRWxlbWVu
dHMoZ3JvdXBNYXBba2V5XS5jdXJyZW50T3B0aW9uRWxlbWVudCk7CisgICAgICAgIH0pOworICAg
ICAgICByZW1vdmVFeGNlc3NFbGVtZW50cyhjdXJyZW50RWxlbWVudCk7CisKKyAgICAgICAgbmdN
b2RlbEN0cmwuJHJlbmRlcigpOworCisgICAgICAgIC8vIENoZWNrIHRvIHNlZSBpZiB0aGUgdmFs
dWUgaGFzIGNoYW5nZWQgZHVlIHRvIHRoZSB1cGRhdGUgdG8gdGhlIG9wdGlvbnMKKyAgICAgICAg
aWYgKCFuZ01vZGVsQ3RybC4kaXNFbXB0eShwcmV2aW91c1ZhbHVlKSkgeworICAgICAgICAgIHZh
ciBuZXh0VmFsdWUgPSBzZWxlY3RDdHJsLnJlYWRWYWx1ZSgpOworICAgICAgICAgIGlmIChuZ09w
dGlvbnMudHJhY2tCeSA/ICFlcXVhbHMocHJldmlvdXNWYWx1ZSwgbmV4dFZhbHVlKSA6IHByZXZp
b3VzVmFsdWUgIT09IG5leHRWYWx1ZSkgeworICAgICAgICAgICAgbmdNb2RlbEN0cmwuJHNldFZp
ZXdWYWx1ZShuZXh0VmFsdWUpOworICAgICAgICAgICAgbmdNb2RlbEN0cmwuJHJlbmRlcigpOwor
ICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICB9CisKKyAgICB9CisgIH07Cit9XTsKKwor
LyoqCisgKiBAbmdkb2MgZGlyZWN0aXZlCisgKiBAbmFtZSBuZ1BsdXJhbGl6ZQorICogQHJlc3Ry
aWN0IEVBCisgKgorICogQGRlc2NyaXB0aW9uCisgKiBgbmdQbHVyYWxpemVgIGlzIGEgZGlyZWN0
aXZlIHRoYXQgZGlzcGxheXMgbWVzc2FnZXMgYWNjb3JkaW5nIHRvIGVuLVVTIGxvY2FsaXphdGlv
biBydWxlcy4KKyAqIFRoZXNlIHJ1bGVzIGFyZSBidW5kbGVkIHdpdGggYW5ndWxhci5qcywgYnV0
IGNhbiBiZSBvdmVycmlkZGVuCisgKiAoc2VlIHtAbGluayBndWlkZS9pMThuIEFuZ3VsYXIgaTE4
bn0gZGV2IGd1aWRlKS4gWW91IGNvbmZpZ3VyZSBuZ1BsdXJhbGl6ZSBkaXJlY3RpdmUKKyAqIGJ5
IHNwZWNpZnlpbmcgdGhlIG1hcHBpbmdzIGJldHdlZW4KKyAqIFtwbHVyYWwgY2F0ZWdvcmllc10o
aHR0cDovL3VuaWNvZGUub3JnL3JlcG9zL2NsZHItdG1wL3RydW5rL2RpZmYvc3VwcGxlbWVudGFs
L2xhbmd1YWdlX3BsdXJhbF9ydWxlcy5odG1sKQorICogYW5kIHRoZSBzdHJpbmdzIHRvIGJlIGRp
c3BsYXllZC4KKyAqCisgKiAjIFBsdXJhbCBjYXRlZ29yaWVzIGFuZCBleHBsaWNpdCBudW1iZXIg
cnVsZXMKKyAqIFRoZXJlIGFyZSB0d28KKyAqIFtwbHVyYWwgY2F0ZWdvcmllc10oaHR0cDovL3Vu
aWNvZGUub3JnL3JlcG9zL2NsZHItdG1wL3RydW5rL2RpZmYvc3VwcGxlbWVudGFsL2xhbmd1YWdl
X3BsdXJhbF9ydWxlcy5odG1sKQorICogaW4gQW5ndWxhcidzIGRlZmF1bHQgZW4tVVMgbG9jYWxl
OiAib25lIiBhbmQgIm90aGVyIi4KKyAqCisgKiBXaGlsZSBhIHBsdXJhbCBjYXRlZ29yeSBtYXkg
bWF0Y2ggbWFueSBudW1iZXJzIChmb3IgZXhhbXBsZSwgaW4gZW4tVVMgbG9jYWxlLCAib3RoZXIi
IGNhbiBtYXRjaAorICogYW55IG51bWJlciB0aGF0IGlzIG5vdCAxKSwgYW4gZXhwbGljaXQgbnVt
YmVyIHJ1bGUgY2FuIG9ubHkgbWF0Y2ggb25lIG51bWJlci4gRm9yIGV4YW1wbGUsIHRoZQorICog
ZXhwbGljaXQgbnVtYmVyIHJ1bGUgZm9yICIzIiBtYXRjaGVzIHRoZSBudW1iZXIgMy4gVGhlcmUg
YXJlIGV4YW1wbGVzIG9mIHBsdXJhbCBjYXRlZ29yaWVzCisgKiBhbmQgZXhwbGljaXQgbnVtYmVy
IHJ1bGVzIHRocm91Z2hvdXQgdGhlIHJlc3Qgb2YgdGhpcyBkb2N1bWVudGF0aW9uLgorICoKKyAq
ICMgQ29uZmlndXJpbmcgbmdQbHVyYWxpemUKKyAqIFlvdSBjb25maWd1cmUgbmdQbHVyYWxpemUg
YnkgcHJvdmlkaW5nIDIgYXR0cmlidXRlczogYGNvdW50YCBhbmQgYHdoZW5gLgorICogWW91IGNh
biBhbHNvIHByb3ZpZGUgYW4gb3B0aW9uYWwgYXR0cmlidXRlLCBgb2Zmc2V0YC4KKyAqCisgKiBU
aGUgdmFsdWUgb2YgdGhlIGBjb3VudGAgYXR0cmlidXRlIGNhbiBiZSBlaXRoZXIgYSBzdHJpbmcg
b3IgYW4ge0BsaW5rIGd1aWRlL2V4cHJlc3Npb24KKyAqIEFuZ3VsYXIgZXhwcmVzc2lvbn07IHRo
ZXNlIGFyZSBldmFsdWF0ZWQgb24gdGhlIGN1cnJlbnQgc2NvcGUgZm9yIGl0cyBib3VuZCB2YWx1
ZS4KKyAqCisgKiBUaGUgYHdoZW5gIGF0dHJpYnV0ZSBzcGVjaWZpZXMgdGhlIG1hcHBpbmdzIGJl
dHdlZW4gcGx1cmFsIGNhdGVnb3JpZXMgYW5kIHRoZSBhY3R1YWwKKyAqIHN0cmluZyB0byBiZSBk
aXNwbGF5ZWQuIFRoZSB2YWx1ZSBvZiB0aGUgYXR0cmlidXRlIHNob3VsZCBiZSBhIEpTT04gb2Jq
ZWN0LgorICoKKyAqIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBzaG93cyBob3cgdG8gY29uZmlndXJl
IG5nUGx1cmFsaXplOgorICoKKyAqIGBgYGh0bWwKKyAqIDxuZy1wbHVyYWxpemUgY291bnQ9InBl
cnNvbkNvdW50IgorICAgICAgICAgICAgICAgICB3aGVuPSJ7JzAnOiAnTm9ib2R5IGlzIHZpZXdp
bmcuJywKKyAqICAgICAgICAgICAgICAgICAgICAgICdvbmUnOiAnMSBwZXJzb24gaXMgdmlld2lu
Zy4nLAorICogICAgICAgICAgICAgICAgICAgICAgJ290aGVyJzogJ3t9IHBlb3BsZSBhcmUgdmll
d2luZy4nfSI+CisgKiA8L25nLXBsdXJhbGl6ZT4KKyAqYGBgCisgKgorICogSW4gdGhlIGV4YW1w
bGUsIGAiMDogTm9ib2R5IGlzIHZpZXdpbmcuImAgaXMgYW4gZXhwbGljaXQgbnVtYmVyIHJ1bGUu
IElmIHlvdSBkaWQgbm90CisgKiBzcGVjaWZ5IHRoaXMgcnVsZSwgMCB3b3VsZCBiZSBtYXRjaGVk
IHRvIHRoZSAib3RoZXIiIGNhdGVnb3J5IGFuZCAiMCBwZW9wbGUgYXJlIHZpZXdpbmciCisgKiB3
b3VsZCBiZSBzaG93biBpbnN0ZWFkIG9mICJOb2JvZHkgaXMgdmlld2luZyIuIFlvdSBjYW4gc3Bl
Y2lmeSBhbiBleHBsaWNpdCBudW1iZXIgcnVsZSBmb3IKKyAqIG90aGVyIG51bWJlcnMsIGZvciBl
eGFtcGxlIDEyLCBzbyB0aGF0IGluc3RlYWQgb2Ygc2hvd2luZyAiMTIgcGVvcGxlIGFyZSB2aWV3
aW5nIiwgeW91IGNhbgorICogc2hvdyAiYSBkb3plbiBwZW9wbGUgYXJlIHZpZXdpbmciLgorICoK
KyAqIFlvdSBjYW4gdXNlIGEgc2V0IG9mIGNsb3NlZCBicmFjZXMgKGB7fWApIGFzIGEgcGxhY2Vo
b2xkZXIgZm9yIHRoZSBudW1iZXIgdGhhdCB5b3Ugd2FudCBzdWJzdGl0dXRlZAorICogaW50byBw
bHVyYWxpemVkIHN0cmluZ3MuIEluIHRoZSBwcmV2aW91cyBleGFtcGxlLCBBbmd1bGFyIHdpbGwg
cmVwbGFjZSBge31gIHdpdGgKKyAqIDxzcGFuIG5nLW5vbi1iaW5kYWJsZT5ge3twZXJzb25Db3Vu
dH19YDwvc3Bhbj4uIFRoZSBjbG9zZWQgYnJhY2VzIGB7fWAgaXMgYSBwbGFjZWhvbGRlcgorICog
Zm9yIDxzcGFuIG5nLW5vbi1iaW5kYWJsZT57e251bWJlckV4cHJlc3Npb259fTwvc3Bhbj4uCisg
KgorICogSWYgbm8gcnVsZSBpcyBkZWZpbmVkIGZvciBhIGNhdGVnb3J5LCB0aGVuIGFuIGVtcHR5
IHN0cmluZyBpcyBkaXNwbGF5ZWQgYW5kIGEgd2FybmluZyBpcyBnZW5lcmF0ZWQuCisgKiBOb3Rl
IHRoYXQgc29tZSBsb2NhbGVzIGRlZmluZSBtb3JlIGNhdGVnb3JpZXMgdGhhbiBgb25lYCBhbmQg
YG90aGVyYC4gRm9yIGV4YW1wbGUsIGZyLWZyIGRlZmluZXMgYGZld2AgYW5kIGBtYW55YC4KKyAq
CisgKiAjIENvbmZpZ3VyaW5nIG5nUGx1cmFsaXplIHdpdGggb2Zmc2V0CisgKiBUaGUgYG9mZnNl
dGAgYXR0cmlidXRlIGFsbG93cyBmdXJ0aGVyIGN1c3RvbWl6YXRpb24gb2YgcGx1cmFsaXplZCB0
ZXh0LCB3aGljaCBjYW4gcmVzdWx0IGluCisgKiBhIGJldHRlciB1c2VyIGV4cGVyaWVuY2UuIEZv
ciBleGFtcGxlLCBpbnN0ZWFkIG9mIHRoZSBtZXNzYWdlICI0IHBlb3BsZSBhcmUgdmlld2luZyB0
aGlzIGRvY3VtZW50IiwKKyAqIHlvdSBtaWdodCBkaXNwbGF5ICJKb2huLCBLYXRlIGFuZCAyIG90
aGVycyBhcmUgdmlld2luZyB0aGlzIGRvY3VtZW50Ii4KKyAqIFRoZSBvZmZzZXQgYXR0cmlidXRl
IGFsbG93cyB5b3UgdG8gb2Zmc2V0IGEgbnVtYmVyIGJ5IGFueSBkZXNpcmVkIHZhbHVlLgorICog
TGV0J3MgdGFrZSBhIGxvb2sgYXQgYW4gZXhhbXBsZToKKyAqCisgKiBgYGBodG1sCisgKiA8bmct
cGx1cmFsaXplIGNvdW50PSJwZXJzb25Db3VudCIgb2Zmc2V0PTIKKyAqICAgICAgICAgICAgICAg
d2hlbj0ieycwJzogJ05vYm9keSBpcyB2aWV3aW5nLicsCisgKiAgICAgICAgICAgICAgICAgICAg
ICAnMSc6ICd7e3BlcnNvbjF9fSBpcyB2aWV3aW5nLicsCisgKiAgICAgICAgICAgICAgICAgICAg
ICAnMic6ICd7e3BlcnNvbjF9fSBhbmQge3twZXJzb24yfX0gYXJlIHZpZXdpbmcuJywKKyAqICAg
ICAgICAgICAgICAgICAgICAgICdvbmUnOiAne3twZXJzb24xfX0sIHt7cGVyc29uMn19IGFuZCBv
bmUgb3RoZXIgcGVyc29uIGFyZSB2aWV3aW5nLicsCisgKiAgICAgICAgICAgICAgICAgICAgICAn
b3RoZXInOiAne3twZXJzb24xfX0sIHt7cGVyc29uMn19IGFuZCB7fSBvdGhlciBwZW9wbGUgYXJl
IHZpZXdpbmcuJ30iPgorICogPC9uZy1wbHVyYWxpemU+CisgKiBgYGAKKyAqCisgKiBOb3RpY2Ug
dGhhdCB3ZSBhcmUgc3RpbGwgdXNpbmcgdHdvIHBsdXJhbCBjYXRlZ29yaWVzKG9uZSwgb3RoZXIp
LCBidXQgd2UgYWRkZWQKKyAqIHRocmVlIGV4cGxpY2l0IG51bWJlciBydWxlcyAwLCAxIGFuZCAy
LgorICogV2hlbiBvbmUgcGVyc29uLCBwZXJoYXBzIEpvaG4sIHZpZXdzIHRoZSBkb2N1bWVudCwg
IkpvaG4gaXMgdmlld2luZyIgd2lsbCBiZSBzaG93bi4KKyAqIFdoZW4gdGhyZWUgcGVvcGxlIHZp
ZXcgdGhlIGRvY3VtZW50LCBubyBleHBsaWNpdCBudW1iZXIgcnVsZSBpcyBmb3VuZCwgc28KKyAq
IGFuIG9mZnNldCBvZiAyIGlzIHRha2VuIG9mZiAzLCBhbmQgQW5ndWxhciB1c2VzIDEgdG8gZGVj
aWRlIHRoZSBwbHVyYWwgY2F0ZWdvcnkuCisgKiBJbiB0aGlzIGNhc2UsIHBsdXJhbCBjYXRlZ29y
eSAnb25lJyBpcyBtYXRjaGVkIGFuZCAiSm9obiwgTWFyeSBhbmQgb25lIG90aGVyIHBlcnNvbiBh
cmUgdmlld2luZyIKKyAqIGlzIHNob3duLgorICoKKyAqIE5vdGUgdGhhdCB3aGVuIHlvdSBzcGVj
aWZ5IG9mZnNldHMsIHlvdSBtdXN0IHByb3ZpZGUgZXhwbGljaXQgbnVtYmVyIHJ1bGVzIGZvcgor
ICogbnVtYmVycyBmcm9tIDAgdXAgdG8gYW5kIGluY2x1ZGluZyB0aGUgb2Zmc2V0LiBJZiB5b3Ug
dXNlIGFuIG9mZnNldCBvZiAzLCBmb3IgZXhhbXBsZSwKKyAqIHlvdSBtdXN0IHByb3ZpZGUgZXhw
bGljaXQgbnVtYmVyIHJ1bGVzIGZvciAwLCAxLCAyIGFuZCAzLiBZb3UgbXVzdCBhbHNvIHByb3Zp
ZGUgcGx1cmFsIHN0cmluZ3MgZm9yCisgKiBwbHVyYWwgY2F0ZWdvcmllcyAib25lIiBhbmQgIm90
aGVyIi4KKyAqCisgKiBAcGFyYW0ge3N0cmluZ3xleHByZXNzaW9ufSBjb3VudCBUaGUgdmFyaWFi
bGUgdG8gYmUgYm91bmQgdG8uCisgKiBAcGFyYW0ge3N0cmluZ30gd2hlbiBUaGUgbWFwcGluZyBi
ZXR3ZWVuIHBsdXJhbCBjYXRlZ29yeSB0byBpdHMgY29ycmVzcG9uZGluZyBzdHJpbmdzLgorICog
QHBhcmFtIHtudW1iZXI9fSBvZmZzZXQgT2Zmc2V0IHRvIGRlZHVjdCBmcm9tIHRoZSB0b3RhbCBu
dW1iZXIuCisgKgorICogQGV4YW1wbGUKKyAgICA8ZXhhbXBsZSBtb2R1bGU9InBsdXJhbGl6ZUV4
YW1wbGUiPgorICAgICAgPGZpbGUgbmFtZT0iaW5kZXguaHRtbCI+CisgICAgICAgIDxzY3JpcHQ+
CisgICAgICAgICAgYW5ndWxhci5tb2R1bGUoJ3BsdXJhbGl6ZUV4YW1wbGUnLCBbXSkKKyAgICAg
ICAgICAgIC5jb250cm9sbGVyKCdFeGFtcGxlQ29udHJvbGxlcicsIFsnJHNjb3BlJywgZnVuY3Rp
b24oJHNjb3BlKSB7CisgICAgICAgICAgICAgICRzY29wZS5wZXJzb24xID0gJ0lnb3InOworICAg
ICAgICAgICAgICAkc2NvcGUucGVyc29uMiA9ICdNaXNrbyc7CisgICAgICAgICAgICAgICRzY29w
ZS5wZXJzb25Db3VudCA9IDE7CisgICAgICAgICAgICB9XSk7CisgICAgICAgIDwvc2NyaXB0Pgor
ICAgICAgICA8ZGl2IG5nLWNvbnRyb2xsZXI9IkV4YW1wbGVDb250cm9sbGVyIj4KKyAgICAgICAg
ICA8bGFiZWw+UGVyc29uIDE6PGlucHV0IHR5cGU9InRleHQiIG5nLW1vZGVsPSJwZXJzb24xIiB2
YWx1ZT0iSWdvciIgLz48L2xhYmVsPjxici8+CisgICAgICAgICAgPGxhYmVsPlBlcnNvbiAyOjxp
bnB1dCB0eXBlPSJ0ZXh0IiBuZy1tb2RlbD0icGVyc29uMiIgdmFsdWU9Ik1pc2tvIiAvPjwvbGFi
ZWw+PGJyLz4KKyAgICAgICAgICA8bGFiZWw+TnVtYmVyIG9mIFBlb3BsZTo8aW5wdXQgdHlwZT0i
dGV4dCIgbmctbW9kZWw9InBlcnNvbkNvdW50IiB2YWx1ZT0iMSIgLz48L2xhYmVsPjxici8+CisK
KyAgICAgICAgICA8IS0tLSBFeGFtcGxlIHdpdGggc2ltcGxlIHBsdXJhbGl6YXRpb24gcnVsZXMg
Zm9yIGVuIGxvY2FsZSAtLS0+CisgICAgICAgICAgV2l0aG91dCBPZmZzZXQ6CisgICAgICAgICAg
PG5nLXBsdXJhbGl6ZSBjb3VudD0icGVyc29uQ291bnQiCisgICAgICAgICAgICAgICAgICAgICAg
ICB3aGVuPSJ7JzAnOiAnTm9ib2R5IGlzIHZpZXdpbmcuJywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnb25lJzogJzEgcGVyc29uIGlzIHZpZXdpbmcuJywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnb3RoZXInOiAne30gcGVvcGxlIGFyZSB2aWV3aW5nLid9Ij4KKyAg
ICAgICAgICA8L25nLXBsdXJhbGl6ZT48YnI+CisKKyAgICAgICAgICA8IS0tLSBFeGFtcGxlIHdp
dGggb2Zmc2V0IC0tLT4KKyAgICAgICAgICBXaXRoIE9mZnNldCgyKToKKyAgICAgICAgICA8bmct
cGx1cmFsaXplIGNvdW50PSJwZXJzb25Db3VudCIgb2Zmc2V0PTIKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHdoZW49InsnMCc6ICdOb2JvZHkgaXMgdmlld2luZy4nLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICcxJzogJ3t7cGVyc29uMX19IGlzIHZpZXdpbmcuJywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnMic6ICd7e3BlcnNvbjF9fSBhbmQge3twZXJzb24yfX0g
YXJlIHZpZXdpbmcuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb25lJzogJ3t7
cGVyc29uMX19LCB7e3BlcnNvbjJ9fSBhbmQgb25lIG90aGVyIHBlcnNvbiBhcmUgdmlld2luZy4n
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvdGhlcic6ICd7e3BlcnNvbjF9fSwg
e3twZXJzb24yfX0gYW5kIHt9IG90aGVyIHBlb3BsZSBhcmUgdmlld2luZy4nfSI+CisgICAgICAg
ICAgPC9uZy1wbHVyYWxpemU+CisgICAgICAgIDwvZGl2PgorICAgICAgPC9maWxlPgorICAgICAg
PGZpbGUgbmFtZT0icHJvdHJhY3Rvci5qcyIgdHlwZT0icHJvdHJhY3RvciI+CisgICAgICAgIGl0
KCdzaG91bGQgc2hvdyBjb3JyZWN0IHBsdXJhbGl6ZWQgc3RyaW5nJywgZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgdmFyIHdpdGhvdXRPZmZzZXQgPSBlbGVtZW50LmFsbChieS5jc3MoJ25nLXBsdXJh
bGl6ZScpKS5nZXQoMCk7CisgICAgICAgICAgdmFyIHdpdGhPZmZzZXQgPSBlbGVtZW50LmFsbChi
eS5jc3MoJ25nLXBsdXJhbGl6ZScpKS5nZXQoMSk7CisgICAgICAgICAgdmFyIGNvdW50SW5wdXQg
PSBlbGVtZW50KGJ5Lm1vZGVsKCdwZXJzb25Db3VudCcpKTsKKworICAgICAgICAgIGV4cGVjdCh3
aXRob3V0T2Zmc2V0LmdldFRleHQoKSkudG9FcXVhbCgnMSBwZXJzb24gaXMgdmlld2luZy4nKTsK
KyAgICAgICAgICBleHBlY3Qod2l0aE9mZnNldC5nZXRUZXh0KCkpLnRvRXF1YWwoJ0lnb3IgaXMg
dmlld2luZy4nKTsKKworICAgICAgICAgIGNvdW50SW5wdXQuY2xlYXIoKTsKKyAgICAgICAgICBj
b3VudElucHV0LnNlbmRLZXlzKCcwJyk7CisKKyAgICAgICAgICBleHBlY3Qod2l0aG91dE9mZnNl
dC5nZXRUZXh0KCkpLnRvRXF1YWwoJ05vYm9keSBpcyB2aWV3aW5nLicpOworICAgICAgICAgIGV4
cGVjdCh3aXRoT2Zmc2V0LmdldFRleHQoKSkudG9FcXVhbCgnTm9ib2R5IGlzIHZpZXdpbmcuJyk7
CisKKyAgICAgICAgICBjb3VudElucHV0LmNsZWFyKCk7CisgICAgICAgICAgY291bnRJbnB1dC5z
ZW5kS2V5cygnMicpOworCisgICAgICAgICAgZXhwZWN0KHdpdGhvdXRPZmZzZXQuZ2V0VGV4dCgp
KS50b0VxdWFsKCcyIHBlb3BsZSBhcmUgdmlld2luZy4nKTsKKyAgICAgICAgICBleHBlY3Qod2l0
aE9mZnNldC5nZXRUZXh0KCkpLnRvRXF1YWwoJ0lnb3IgYW5kIE1pc2tvIGFyZSB2aWV3aW5nLicp
OworCisgICAgICAgICAgY291bnRJbnB1dC5jbGVhcigpOworICAgICAgICAgIGNvdW50SW5wdXQu
c2VuZEtleXMoJzMnKTsKKworICAgICAgICAgIGV4cGVjdCh3aXRob3V0T2Zmc2V0LmdldFRleHQo
KSkudG9FcXVhbCgnMyBwZW9wbGUgYXJlIHZpZXdpbmcuJyk7CisgICAgICAgICAgZXhwZWN0KHdp
dGhPZmZzZXQuZ2V0VGV4dCgpKS50b0VxdWFsKCdJZ29yLCBNaXNrbyBhbmQgb25lIG90aGVyIHBl
cnNvbiBhcmUgdmlld2luZy4nKTsKKworICAgICAgICAgIGNvdW50SW5wdXQuY2xlYXIoKTsKKyAg
ICAgICAgICBjb3VudElucHV0LnNlbmRLZXlzKCc0Jyk7CisKKyAgICAgICAgICBleHBlY3Qod2l0
aG91dE9mZnNldC5nZXRUZXh0KCkpLnRvRXF1YWwoJzQgcGVvcGxlIGFyZSB2aWV3aW5nLicpOwor
ICAgICAgICAgIGV4cGVjdCh3aXRoT2Zmc2V0LmdldFRleHQoKSkudG9FcXVhbCgnSWdvciwgTWlz
a28gYW5kIDIgb3RoZXIgcGVvcGxlIGFyZSB2aWV3aW5nLicpOworICAgICAgICB9KTsKKyAgICAg
ICAgaXQoJ3Nob3VsZCBzaG93IGRhdGEtYm91bmQgbmFtZXMnLCBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICB2YXIgd2l0aE9mZnNldCA9IGVsZW1lbnQuYWxsKGJ5LmNzcygnbmctcGx1cmFsaXplJykp
LmdldCgxKTsKKyAgICAgICAgICB2YXIgcGVyc29uQ291bnQgPSBlbGVtZW50KGJ5Lm1vZGVsKCdw
ZXJzb25Db3VudCcpKTsKKyAgICAgICAgICB2YXIgcGVyc29uMSA9IGVsZW1lbnQoYnkubW9kZWwo
J3BlcnNvbjEnKSk7CisgICAgICAgICAgdmFyIHBlcnNvbjIgPSBlbGVtZW50KGJ5Lm1vZGVsKCdw
ZXJzb24yJykpOworICAgICAgICAgIHBlcnNvbkNvdW50LmNsZWFyKCk7CisgICAgICAgICAgcGVy
c29uQ291bnQuc2VuZEtleXMoJzQnKTsKKyAgICAgICAgICBwZXJzb24xLmNsZWFyKCk7CisgICAg
ICAgICAgcGVyc29uMS5zZW5kS2V5cygnRGknKTsKKyAgICAgICAgICBwZXJzb24yLmNsZWFyKCk7
CisgICAgICAgICAgcGVyc29uMi5zZW5kS2V5cygnVm9qdGEnKTsKKyAgICAgICAgICBleHBlY3Qo
d2l0aE9mZnNldC5nZXRUZXh0KCkpLnRvRXF1YWwoJ0RpLCBWb2p0YSBhbmQgMiBvdGhlciBwZW9w
bGUgYXJlIHZpZXdpbmcuJyk7CisgICAgICAgIH0pOworICAgICAgPC9maWxlPgorICAgIDwvZXhh
bXBsZT4KKyAqLwordmFyIG5nUGx1cmFsaXplRGlyZWN0aXZlID0gWyckbG9jYWxlJywgJyRpbnRl
cnBvbGF0ZScsICckbG9nJywgZnVuY3Rpb24oJGxvY2FsZSwgJGludGVycG9sYXRlLCAkbG9nKSB7
CisgIHZhciBCUkFDRSA9IC97fS9nLAorICAgICAgSVNfV0hFTiA9IC9ed2hlbihNaW51cyk/KC4r
KSQvOworCisgIHJldHVybiB7CisgICAgbGluazogZnVuY3Rpb24oc2NvcGUsIGVsZW1lbnQsIGF0
dHIpIHsKKyAgICAgIHZhciBudW1iZXJFeHAgPSBhdHRyLmNvdW50LAorICAgICAgICAgIHdoZW5F
eHAgPSBhdHRyLiRhdHRyLndoZW4gJiYgZWxlbWVudC5hdHRyKGF0dHIuJGF0dHIud2hlbiksIC8v
IHdlIGhhdmUge3t9fSBpbiBhdHRycworICAgICAgICAgIG9mZnNldCA9IGF0dHIub2Zmc2V0IHx8
IDAsCisgICAgICAgICAgd2hlbnMgPSBzY29wZS4kZXZhbCh3aGVuRXhwKSB8fCB7fSwKKyAgICAg
ICAgICB3aGVuc0V4cEZucyA9IHt9LAorICAgICAgICAgIHN0YXJ0U3ltYm9sID0gJGludGVycG9s
YXRlLnN0YXJ0U3ltYm9sKCksCisgICAgICAgICAgZW5kU3ltYm9sID0gJGludGVycG9sYXRlLmVu
ZFN5bWJvbCgpLAorICAgICAgICAgIGJyYWNlUmVwbGFjZW1lbnQgPSBzdGFydFN5bWJvbCArIG51
bWJlckV4cCArICctJyArIG9mZnNldCArIGVuZFN5bWJvbCwKKyAgICAgICAgICB3YXRjaFJlbW92
ZXIgPSBhbmd1bGFyLm5vb3AsCisgICAgICAgICAgbGFzdENvdW50OworCisgICAgICBmb3JFYWNo
KGF0dHIsIGZ1bmN0aW9uKGV4cHJlc3Npb24sIGF0dHJpYnV0ZU5hbWUpIHsKKyAgICAgICAgdmFy
IHRtcE1hdGNoID0gSVNfV0hFTi5leGVjKGF0dHJpYnV0ZU5hbWUpOworICAgICAgICBpZiAodG1w
TWF0Y2gpIHsKKyAgICAgICAgICB2YXIgd2hlbktleSA9ICh0bXBNYXRjaFsxXSA/ICctJyA6ICcn
KSArIGxvd2VyY2FzZSh0bXBNYXRjaFsyXSk7CisgICAgICAgICAgd2hlbnNbd2hlbktleV0gPSBl
bGVtZW50LmF0dHIoYXR0ci4kYXR0clthdHRyaWJ1dGVOYW1lXSk7CisgICAgICAgIH0KKyAgICAg
IH0pOworICAgICAgZm9yRWFjaCh3aGVucywgZnVuY3Rpb24oZXhwcmVzc2lvbiwga2V5KSB7Cisg
ICAgICAgIHdoZW5zRXhwRm5zW2tleV0gPSAkaW50ZXJwb2xhdGUoZXhwcmVzc2lvbi5yZXBsYWNl
KEJSQUNFLCBicmFjZVJlcGxhY2VtZW50KSk7CisKKyAgICAgIH0pOworCisgICAgICBzY29wZS4k
d2F0Y2gobnVtYmVyRXhwLCBmdW5jdGlvbiBuZ1BsdXJhbGl6ZVdhdGNoQWN0aW9uKG5ld1ZhbCkg
eworICAgICAgICB2YXIgY291bnQgPSBwYXJzZUZsb2F0KG5ld1ZhbCk7CisgICAgICAgIHZhciBj
b3VudElzTmFOID0gaXNOYU4oY291bnQpOworCisgICAgICAgIGlmICghY291bnRJc05hTiAmJiAh
KGNvdW50IGluIHdoZW5zKSkgeworICAgICAgICAgIC8vIElmIGFuIGV4cGxpY2l0IG51bWJlciBy
dWxlIHN1Y2ggYXMgMSwgMiwgMy4uLiBpcyBkZWZpbmVkLCBqdXN0IHVzZSBpdC4KKyAgICAgICAg
ICAvLyBPdGhlcndpc2UsIGNoZWNrIGl0IGFnYWluc3QgcGx1cmFsaXphdGlvbiBydWxlcyBpbiAk
bG9jYWxlIHNlcnZpY2UuCisgICAgICAgICAgY291bnQgPSAkbG9jYWxlLnBsdXJhbENhdChjb3Vu
dCAtIG9mZnNldCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBJZiBib3RoIGBjb3VudGAgYW5k
IGBsYXN0Q291bnRgIGFyZSBOYU4sIHdlIGRvbid0IG5lZWQgdG8gcmUtcmVnaXN0ZXIgYSB3YXRj
aC4KKyAgICAgICAgLy8gSW4gSlMgYE5hTiAhPT0gTmFOYCwgc28gd2UgaGF2ZSB0byBleGxpY2l0
bHkgY2hlY2suCisgICAgICAgIGlmICgoY291bnQgIT09IGxhc3RDb3VudCkgJiYgIShjb3VudElz
TmFOICYmIGlzTnVtYmVyKGxhc3RDb3VudCkgJiYgaXNOYU4obGFzdENvdW50KSkpIHsKKyAgICAg
ICAgICB3YXRjaFJlbW92ZXIoKTsKKyAgICAgICAgICB2YXIgd2hlbkV4cEZuID0gd2hlbnNFeHBG
bnNbY291bnRdOworICAgICAgICAgIGlmIChpc1VuZGVmaW5lZCh3aGVuRXhwRm4pKSB7CisgICAg
ICAgICAgICBpZiAobmV3VmFsICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgJGxvZy5kZWJ1Zygi
bmdQbHVyYWxpemU6IG5vIHJ1bGUgZGVmaW5lZCBmb3IgJyIgKyBjb3VudCArICInIGluICIgKyB3
aGVuRXhwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHdhdGNoUmVtb3ZlciA9IG5vb3A7
CisgICAgICAgICAgICB1cGRhdGVFbGVtZW50VGV4dCgpOworICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICB3YXRjaFJlbW92ZXIgPSBzY29wZS4kd2F0Y2god2hlbkV4cEZuLCB1cGRhdGVF
bGVtZW50VGV4dCk7CisgICAgICAgICAgfQorICAgICAgICAgIGxhc3RDb3VudCA9IGNvdW50Owor
ICAgICAgICB9CisgICAgICB9KTsKKworICAgICAgZnVuY3Rpb24gdXBkYXRlRWxlbWVudFRleHQo
bmV3VGV4dCkgeworICAgICAgICBlbGVtZW50LnRleHQobmV3VGV4dCB8fCAnJyk7CisgICAgICB9
CisgICAgfQorICB9OworfV07CisKKy8qKgorICogQG5nZG9jIGRpcmVjdGl2ZQorICogQG5hbWUg
bmdSZXBlYXQKKyAqIEBtdWx0aUVsZW1lbnQKKyAqCisgKiBAZGVzY3JpcHRpb24KKyAqIFRoZSBg
bmdSZXBlYXRgIGRpcmVjdGl2ZSBpbnN0YW50aWF0ZXMgYSB0ZW1wbGF0ZSBvbmNlIHBlciBpdGVt
IGZyb20gYSBjb2xsZWN0aW9uLiBFYWNoIHRlbXBsYXRlCisgKiBpbnN0YW5jZSBnZXRzIGl0cyBv
d24gc2NvcGUsIHdoZXJlIHRoZSBnaXZlbiBsb29wIHZhcmlhYmxlIGlzIHNldCB0byB0aGUgY3Vy
cmVudCBjb2xsZWN0aW9uIGl0ZW0sCisgKiBhbmQgYCRpbmRleGAgaXMgc2V0IHRvIHRoZSBpdGVt
IGluZGV4IG9yIGtleS4KKyAqCisgKiBTcGVjaWFsIHByb3BlcnRpZXMgYXJlIGV4cG9zZWQgb24g
dGhlIGxvY2FsIHNjb3BlIG9mIGVhY2ggdGVtcGxhdGUgaW5zdGFuY2UsIGluY2x1ZGluZzoKKyAq
CisgKiB8IFZhcmlhYmxlICB8IFR5cGUgICAgICAgICAgICB8IERldGFpbHMgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
CisgKiB8LS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18
CisgKiB8IGAkaW5kZXhgICB8IHtAdHlwZSBudW1iZXJ9ICB8IGl0ZXJhdG9yIG9mZnNldCBvZiB0
aGUgcmVwZWF0ZWQgZWxlbWVudCAoMC4ubGVuZ3RoLTEpICAgICAgICAgICAgICAgICAgICAgICB8
CisgKiB8IGAkZmlyc3RgICB8IHtAdHlwZSBib29sZWFufSB8IHRydWUgaWYgdGhlIHJlcGVhdGVk
IGVsZW1lbnQgaXMgZmlyc3QgaW4gdGhlIGl0ZXJhdG9yLiAgICAgICAgICAgICAgICAgICAgICB8
CisgKiB8IGAkbWlkZGxlYCB8IHtAdHlwZSBib29sZWFufSB8IHRydWUgaWYgdGhlIHJlcGVhdGVk
IGVsZW1lbnQgaXMgYmV0d2VlbiB0aGUgZmlyc3QgYW5kIGxhc3QgaW4gdGhlIGl0ZXJhdG9yLiB8
CisgKiB8IGAkbGFzdGAgICB8IHtAdHlwZSBib29sZWFufSB8IHRydWUgaWYgdGhlIHJlcGVhdGVk
IGVsZW1lbnQgaXMgbGFzdCBpbiB0aGUgaXRlcmF0b3IuICAgICAgICAgICAgICAgICAgICAgICB8
CisgKiB8IGAkZXZlbmAgICB8IHtAdHlwZSBib29sZWFufSB8IHRydWUgaWYgdGhlIGl0ZXJhdG9y
IHBvc2l0aW9uIGAkaW5kZXhgIGlzIGV2ZW4gKG90aGVyd2lzZSBmYWxzZSkuICAgICAgICAgICB8
CisgKiB8IGAkb2RkYCAgICB8IHtAdHlwZSBib29sZWFufSB8IHRydWUgaWYgdGhlIGl0ZXJhdG9y
IHBvc2l0aW9uIGAkaW5kZXhgIGlzIG9kZCAob3RoZXJ3aXNlIGZhbHNlKS4gICAgICAgICAgICB8
CisgKgorICogQ3JlYXRpbmcgYWxpYXNlcyBmb3IgdGhlc2UgcHJvcGVydGllcyBpcyBwb3NzaWJs
ZSB3aXRoIHtAbGluayBuZy5kaXJlY3RpdmU6bmdJbml0IGBuZ0luaXRgfS4KKyAqIFRoaXMgbWF5
IGJlIHVzZWZ1bCB3aGVuLCBmb3IgaW5zdGFuY2UsIG5lc3RpbmcgbmdSZXBlYXRzLgorICoKKyAq
CisgKiAjIEl0ZXJhdGluZyBvdmVyIG9iamVjdCBwcm9wZXJ0aWVzCisgKgorICogSXQgaXMgcG9z
c2libGUgdG8gZ2V0IGBuZ1JlcGVhdGAgdG8gaXRlcmF0ZSBvdmVyIHRoZSBwcm9wZXJ0aWVzIG9m
IGFuIG9iamVjdCB1c2luZyB0aGUgZm9sbG93aW5nCisgKiBzeW50YXg6CisgKgorICogYGBganMK
KyAqIDxkaXYgbmctcmVwZWF0PSIoa2V5LCB2YWx1ZSkgaW4gbXlPYmoiPiAuLi4gPC9kaXY+Cisg
KiBgYGAKKyAqCisgKiBZb3UgbmVlZCB0byBiZSBhd2FyZSB0aGF0IHRoZSBKYXZhU2NyaXB0IHNw
ZWNpZmljYXRpb24gZG9lcyBub3QgZGVmaW5lIHRoZSBvcmRlciBvZiBrZXlzCisgKiByZXR1cm5l
ZCBmb3IgYW4gb2JqZWN0LiAoVG8gbWl0aWdhdGUgdGhpcyBpbiBBbmd1bGFyIDEuMyB0aGUgYG5n
UmVwZWF0YCBkaXJlY3RpdmUKKyAqIHVzZWQgdG8gc29ydCB0aGUga2V5cyBhbHBoYWJldGljYWxs
eS4pCisgKgorICogVmVyc2lvbiAxLjQgcmVtb3ZlZCB0aGUgYWxwaGFiZXRpYyBzb3J0aW5nLiBX
ZSBub3cgcmVseSBvbiB0aGUgb3JkZXIgcmV0dXJuZWQgYnkgdGhlIGJyb3dzZXIKKyAqIHdoZW4g
cnVubmluZyBgZm9yIGtleSBpbiBteU9iamAuIEl0IHNlZW1zIHRoYXQgYnJvd3NlcnMgZ2VuZXJh
bGx5IGZvbGxvdyB0aGUgc3RyYXRlZ3kgb2YgcHJvdmlkaW5nCisgKiBrZXlzIGluIHRoZSBvcmRl
ciBpbiB3aGljaCB0aGV5IHdlcmUgZGVmaW5lZCwgYWx0aG91Z2ggdGhlcmUgYXJlIGV4Y2VwdGlv
bnMgd2hlbiBrZXlzIGFyZSBkZWxldGVkCisgKiBhbmQgcmVpbnN0YXRlZC4gU2VlIGh0dHBzOi8v
ZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNl
L09wZXJhdG9ycy9kZWxldGUjQ3Jvc3MtYnJvd3Nlcl9pc3N1ZXMKKyAqCisgKiBJZiB0aGlzIGlz
IG5vdCBkZXNpcmVkLCB0aGUgcmVjb21tZW5kZWQgd29ya2Fyb3VuZCBpcyB0byBjb252ZXJ0IHlv
dXIgb2JqZWN0IGludG8gYW4gYXJyYXkKKyAqIHRoYXQgaXMgc29ydGVkIGludG8gdGhlIG9yZGVy
IHRoYXQgeW91IHByZWZlciBiZWZvcmUgcHJvdmlkaW5nIGl0IHRvIGBuZ1JlcGVhdGAuICBZb3Ug
Y291bGQKKyAqIGRvIHRoaXMgd2l0aCBhIGZpbHRlciBzdWNoIGFzIFt0b0FycmF5RmlsdGVyXSho
dHRwOi8vbmdtb2R1bGVzLm9yZy9tb2R1bGVzL2FuZ3VsYXItdG9BcnJheUZpbHRlcikKKyAqIG9y
IGltcGxlbWVudCBhIGAkd2F0Y2hgIG9uIHRoZSBvYmplY3QgeW91cnNlbGYuCisgKgorICoKKyAq
ICMgVHJhY2tpbmcgYW5kIER1cGxpY2F0ZXMKKyAqCisgKiBXaGVuIHRoZSBjb250ZW50cyBvZiB0
aGUgY29sbGVjdGlvbiBjaGFuZ2UsIGBuZ1JlcGVhdGAgbWFrZXMgdGhlIGNvcnJlc3BvbmRpbmcg
Y2hhbmdlcyB0byB0aGUgRE9NOgorICoKKyAqICogV2hlbiBhbiBpdGVtIGlzIGFkZGVkLCBhIG5l
dyBpbnN0YW5jZSBvZiB0aGUgdGVtcGxhdGUgaXMgYWRkZWQgdG8gdGhlIERPTS4KKyAqICogV2hl
biBhbiBpdGVtIGlzIHJlbW92ZWQsIGl0cyB0ZW1wbGF0ZSBpbnN0YW5jZSBpcyByZW1vdmVkIGZy
b20gdGhlIERPTS4KKyAqICogV2hlbiBpdGVtcyBhcmUgcmVvcmRlcmVkLCB0aGVpciByZXNwZWN0
aXZlIHRlbXBsYXRlcyBhcmUgcmVvcmRlcmVkIGluIHRoZSBET00uCisgKgorICogQnkgZGVmYXVs
dCwgYG5nUmVwZWF0YCBkb2VzIG5vdCBhbGxvdyBkdXBsaWNhdGUgaXRlbXMgaW4gYXJyYXlzLiBU
aGlzIGlzIGJlY2F1c2Ugd2hlbgorICogdGhlcmUgYXJlIGR1cGxpY2F0ZXMsIGl0IGlzIG5vdCBw
b3NzaWJsZSB0byBtYWludGFpbiBhIG9uZS10by1vbmUgbWFwcGluZyBiZXR3ZWVuIGNvbGxlY3Rp
b24KKyAqIGl0ZW1zIGFuZCBET00gZWxlbWVudHMuCisgKgorICogSWYgeW91IGRvIG5lZWQgdG8g
cmVwZWF0IGR1cGxpY2F0ZSBpdGVtcywgeW91IGNhbiBzdWJzdGl0dXRlIHRoZSBkZWZhdWx0IHRy
YWNraW5nIGJlaGF2aW9yCisgKiB3aXRoIHlvdXIgb3duIHVzaW5nIHRoZSBgdHJhY2sgYnlgIGV4
cHJlc3Npb24uCisgKgorICogRm9yIGV4YW1wbGUsIHlvdSBtYXkgdHJhY2sgaXRlbXMgYnkgdGhl
IGluZGV4IG9mIGVhY2ggaXRlbSBpbiB0aGUgY29sbGVjdGlvbiwgdXNpbmcgdGhlCisgKiBzcGVj
aWFsIHNjb3BlIHByb3BlcnR5IGAkaW5kZXhgOgorICogYGBgaHRtbAorICogICAgPGRpdiBuZy1y
ZXBlYXQ9Im4gaW4gWzQyLCA0MiwgNDMsIDQzXSB0cmFjayBieSAkaW5kZXgiPgorICogICAgICB7
e259fQorICogICAgPC9kaXY+CisgKiBgYGAKKyAqCisgKiBZb3UgbWF5IHVzZSBhcmJpdHJhcnkg
ZXhwcmVzc2lvbnMgaW4gYHRyYWNrIGJ5YCwgaW5jbHVkaW5nIHJlZmVyZW5jZXMgdG8gY3VzdG9t
IGZ1bmN0aW9ucworICogb24gdGhlIHNjb3BlOgorICogYGBgaHRtbAorICogICAgPGRpdiBuZy1y
ZXBlYXQ9Im4gaW4gWzQyLCA0MiwgNDMsIDQzXSB0cmFjayBieSBteVRyYWNraW5nRnVuY3Rpb24o
bikiPgorICogICAgICB7e259fQorICogICAgPC9kaXY+CisgKiBgYGAKKyAqCisgKiBJZiB5b3Ug
YXJlIHdvcmtpbmcgd2l0aCBvYmplY3RzIHRoYXQgaGF2ZSBhbiBpZGVudGlmaWVyIHByb3BlcnR5
LCB5b3UgY2FuIHRyYWNrCisgKiBieSB0aGUgaWRlbnRpZmllciBpbnN0ZWFkIG9mIHRoZSB3aG9s
ZSBvYmplY3QuIFNob3VsZCB5b3UgcmVsb2FkIHlvdXIgZGF0YSBsYXRlciwgYG5nUmVwZWF0YAor
ICogd2lsbCBub3QgaGF2ZSB0byByZWJ1aWxkIHRoZSBET00gZWxlbWVudHMgZm9yIGl0ZW1zIGl0
IGhhcyBhbHJlYWR5IHJlbmRlcmVkLCBldmVuIGlmIHRoZQorICogSmF2YVNjcmlwdCBvYmplY3Rz
IGluIHRoZSBjb2xsZWN0aW9uIGhhdmUgYmVlbiBzdWJzdGl0dXRlZCBmb3IgbmV3IG9uZXM6Cisg
KiBgYGBodG1sCisgKiAgICA8ZGl2IG5nLXJlcGVhdD0ibW9kZWwgaW4gY29sbGVjdGlvbiB0cmFj
ayBieSBtb2RlbC5pZCI+CisgKiAgICAgIHt7bW9kZWwubmFtZX19CisgKiAgICA8L2Rpdj4KKyAq
IGBgYAorICoKKyAqIFdoZW4gbm8gYHRyYWNrIGJ5YCBleHByZXNzaW9uIGlzIHByb3ZpZGVkLCBp
dCBpcyBlcXVpdmFsZW50IHRvIHRyYWNraW5nIGJ5IHRoZSBidWlsdC1pbgorICogYCRpZGAgZnVu
Y3Rpb24sIHdoaWNoIHRyYWNrcyBpdGVtcyBieSB0aGVpciBpZGVudGl0eToKKyAqIGBgYGh0bWwK
KyAqICAgIDxkaXYgbmctcmVwZWF0PSJvYmogaW4gY29sbGVjdGlvbiB0cmFjayBieSAkaWQob2Jq
KSI+CisgKiAgICAgIHt7b2JqLnByb3B9fQorICogICAgPC9kaXY+CisgKiBgYGAKKyAqCisgKiA8
ZGl2IGNsYXNzPSJhbGVydCBhbGVydC13YXJuaW5nIj4KKyAqICoqTm90ZToqKiBgdHJhY2sgYnlg
IG11c3QgYWx3YXlzIGJlIHRoZSBsYXN0IGV4cHJlc3Npb246CisgKiA8L2Rpdj4KKyAqIGBgYAor
ICogPGRpdiBuZy1yZXBlYXQ9Im1vZGVsIGluIGNvbGxlY3Rpb24gfCBvcmRlckJ5OiAnaWQnIGFz
IGZpbHRlcmVkX3Jlc3VsdCB0cmFjayBieSBtb2RlbC5pZCI+CisgKiAgICAge3ttb2RlbC5uYW1l
fX0KKyAqIDwvZGl2PgorICogYGBgCisgKgorICogIyBTcGVjaWFsIHJlcGVhdCBzdGFydCBhbmQg
ZW5kIHBvaW50cworICogVG8gcmVwZWF0IGEgc2VyaWVzIG9mIGVsZW1lbnRzIGluc3RlYWQgb2Yg
anVzdCBvbmUgcGFyZW50IGVsZW1lbnQsIG5nUmVwZWF0IChhcyB3ZWxsIGFzIG90aGVyIG5nIGRp
cmVjdGl2ZXMpIHN1cHBvcnRzIGV4dGVuZGluZworICogdGhlIHJhbmdlIG9mIHRoZSByZXBlYXRl
ciBieSBkZWZpbmluZyBleHBsaWNpdCBzdGFydCBhbmQgZW5kIHBvaW50cyBieSB1c2luZyAqKm5n
LXJlcGVhdC1zdGFydCoqIGFuZCAqKm5nLXJlcGVhdC1lbmQqKiByZXNwZWN0aXZlbHkuCisgKiBU
aGUgKipuZy1yZXBlYXQtc3RhcnQqKiBkaXJlY3RpdmUgd29ya3MgdGhlIHNhbWUgYXMgKipuZy1y
ZXBlYXQqKiwgYnV0IHdpbGwgcmVwZWF0IGFsbCB0aGUgSFRNTCBjb2RlIChpbmNsdWRpbmcgdGhl
IHRhZyBpdCdzIGRlZmluZWQgb24pCisgKiB1cCB0byBhbmQgaW5jbHVkaW5nIHRoZSBlbmRpbmcg
SFRNTCB0YWcgd2hlcmUgKipuZy1yZXBlYXQtZW5kKiogaXMgcGxhY2VkLgorICoKKyAqIFRoZSBl
eGFtcGxlIGJlbG93IG1ha2VzIHVzZSBvZiB0aGlzIGZlYXR1cmU6CisgKiBgYGBodG1sCisgKiAg
IDxoZWFkZXIgbmctcmVwZWF0LXN0YXJ0PSJpdGVtIGluIGl0ZW1zIj4KKyAqICAgICBIZWFkZXIg
e3sgaXRlbSB9fQorICogICA8L2hlYWRlcj4KKyAqICAgPGRpdiBjbGFzcz0iYm9keSI+CisgKiAg
ICAgQm9keSB7eyBpdGVtIH19CisgKiAgIDwvZGl2PgorICogICA8Zm9vdGVyIG5nLXJlcGVhdC1l
bmQ+CisgKiAgICAgRm9vdGVyIHt7IGl0ZW0gfX0KKyAqICAgPC9mb290ZXI+CisgKiBgYGAKKyAq
CisgKiBBbmQgd2l0aCBhbiBpbnB1dCBvZiB7QHR5cGUgWydBJywnQiddfSBmb3IgdGhlIGl0ZW1z
IHZhcmlhYmxlIGluIHRoZSBleGFtcGxlIGFib3ZlLCB0aGUgb3V0cHV0IHdpbGwgZXZhbHVhdGUg
dG86CisgKiBgYGBodG1sCisgKiAgIDxoZWFkZXI+CisgKiAgICAgSGVhZGVyIEEKKyAqICAgPC9o
ZWFkZXI+CisgKiAgIDxkaXYgY2xhc3M9ImJvZHkiPgorICogICAgIEJvZHkgQQorICogICA8L2Rp
dj4KKyAqICAgPGZvb3Rlcj4KKyAqICAgICBGb290ZXIgQQorICogICA8L2Zvb3Rlcj4KKyAqICAg
PGhlYWRlcj4KKyAqICAgICBIZWFkZXIgQgorICogICA8L2hlYWRlcj4KKyAqICAgPGRpdiBjbGFz
cz0iYm9keSI+CisgKiAgICAgQm9keSBCCisgKiAgIDwvZGl2PgorICogICA8Zm9vdGVyPgorICog
ICAgIEZvb3RlciBCCisgKiAgIDwvZm9vdGVyPgorICogYGBgCisgKgorICogVGhlIGN1c3RvbSBz
dGFydCBhbmQgZW5kIHBvaW50cyBmb3IgbmdSZXBlYXQgYWxzbyBzdXBwb3J0IGFsbCBvdGhlciBI
VE1MIGRpcmVjdGl2ZSBzeW50YXggZmxhdm9ycyBwcm92aWRlZCBpbiBBbmd1bGFySlMgKHN1Y2gK
KyAqIGFzICoqZGF0YS1uZy1yZXBlYXQtc3RhcnQqKiwgKip4LW5nLXJlcGVhdC1zdGFydCoqIGFu
ZCAqKm5nOnJlcGVhdC1zdGFydCoqKS4KKyAqCisgKiBAYW5pbWF0aW9ucworICogKiouZW50ZXIq
KiAtIHdoZW4gYSBuZXcgaXRlbSBpcyBhZGRlZCB0byB0aGUgbGlzdCBvciB3aGVuIGFuIGl0ZW0g
aXMgcmV2ZWFsZWQgYWZ0ZXIgYSBmaWx0ZXIKKyAqCisgKiAqKi5sZWF2ZSoqIC0gd2hlbiBhbiBp
dGVtIGlzIHJlbW92ZWQgZnJvbSB0aGUgbGlzdCBvciB3aGVuIGFuIGl0ZW0gaXMgZmlsdGVyZWQg
b3V0CisgKgorICogKioubW92ZSoqIC0gd2hlbiBhbiBhZGphY2VudCBpdGVtIGlzIGZpbHRlcmVk
IG91dCBjYXVzaW5nIGEgcmVvcmRlciBvciB3aGVuIHRoZSBpdGVtIGNvbnRlbnRzIGFyZSByZW9y
ZGVyZWQKKyAqCisgKiBAZWxlbWVudCBBTlkKKyAqIEBzY29wZQorICogQHByaW9yaXR5IDEwMDAK
KyAqIEBwYXJhbSB7cmVwZWF0X2V4cHJlc3Npb259IG5nUmVwZWF0IFRoZSBleHByZXNzaW9uIGlu
ZGljYXRpbmcgaG93IHRvIGVudW1lcmF0ZSBhIGNvbGxlY3Rpb24uIFRoZXNlCisgKiAgIGZvcm1h
dHMgYXJlIGN1cnJlbnRseSBzdXBwb3J0ZWQ6CisgKgorICogICAqIGB2YXJpYWJsZSBpbiBleHBy
ZXNzaW9uYCDigJMgd2hlcmUgdmFyaWFibGUgaXMgdGhlIHVzZXIgZGVmaW5lZCBsb29wIHZhcmlh
YmxlIGFuZCBgZXhwcmVzc2lvbmAKKyAqICAgICBpcyBhIHNjb3BlIGV4cHJlc3Npb24gZ2l2aW5n
IHRoZSBjb2xsZWN0aW9uIHRvIGVudW1lcmF0ZS4KKyAqCisgKiAgICAgRm9yIGV4YW1wbGU6IGBh
bGJ1bSBpbiBhcnRpc3QuYWxidW1zYC4KKyAqCisgKiAgICogYChrZXksIHZhbHVlKSBpbiBleHBy
ZXNzaW9uYCDigJMgd2hlcmUgYGtleWAgYW5kIGB2YWx1ZWAgY2FuIGJlIGFueSB1c2VyIGRlZmlu
ZWQgaWRlbnRpZmllcnMsCisgKiAgICAgYW5kIGBleHByZXNzaW9uYCBpcyB0aGUgc2NvcGUgZXhw
cmVzc2lvbiBnaXZpbmcgdGhlIGNvbGxlY3Rpb24gdG8gZW51bWVyYXRlLgorICoKKyAqICAgICBG
b3IgZXhhbXBsZTogYChuYW1lLCBhZ2UpIGluIHsnYWRhbSc6MTAsICdhbWFsaWUnOjEyfWAuCisg
KgorICogICAqIGB2YXJpYWJsZSBpbiBleHByZXNzaW9uIHRyYWNrIGJ5IHRyYWNraW5nX2V4cHJl
c3Npb25gIOKAkyBZb3UgY2FuIGFsc28gcHJvdmlkZSBhbiBvcHRpb25hbCB0cmFja2luZyBleHBy
ZXNzaW9uCisgKiAgICAgd2hpY2ggY2FuIGJlIHVzZWQgdG8gYXNzb2NpYXRlIHRoZSBvYmplY3Rz
IGluIHRoZSBjb2xsZWN0aW9uIHdpdGggdGhlIERPTSBlbGVtZW50cy4gSWYgbm8gdHJhY2tpbmcg
ZXhwcmVzc2lvbgorICogICAgIGlzIHNwZWNpZmllZCwgbmctcmVwZWF0IGFzc29jaWF0ZXMgZWxl
bWVudHMgYnkgaWRlbnRpdHkuIEl0IGlzIGFuIGVycm9yIHRvIGhhdmUKKyAqICAgICBtb3JlIHRo
YW4gb25lIHRyYWNraW5nIGV4cHJlc3Npb24gdmFsdWUgcmVzb2x2ZSB0byB0aGUgc2FtZSBrZXku
IChUaGlzIHdvdWxkIG1lYW4gdGhhdCB0d28gZGlzdGluY3Qgb2JqZWN0cyBhcmUKKyAqICAgICBt
YXBwZWQgdG8gdGhlIHNhbWUgRE9NIGVsZW1lbnQsIHdoaWNoIGlzIG5vdCBwb3NzaWJsZS4pCisg
KgorICogICAgIE5vdGUgdGhhdCB0aGUgdHJhY2tpbmcgZXhwcmVzc2lvbiBtdXN0IGNvbWUgbGFz
dCwgYWZ0ZXIgYW55IGZpbHRlcnMsIGFuZCB0aGUgYWxpYXMgZXhwcmVzc2lvbi4KKyAqCisgKiAg
ICAgRm9yIGV4YW1wbGU6IGBpdGVtIGluIGl0ZW1zYCBpcyBlcXVpdmFsZW50IHRvIGBpdGVtIGlu
IGl0ZW1zIHRyYWNrIGJ5ICRpZChpdGVtKWAuIFRoaXMgaW1wbGllcyB0aGF0IHRoZSBET00gZWxl
bWVudHMKKyAqICAgICB3aWxsIGJlIGFzc29jaWF0ZWQgYnkgaXRlbSBpZGVudGl0eSBpbiB0aGUg
YXJyYXkuCisgKgorICogICAgIEZvciBleGFtcGxlOiBgaXRlbSBpbiBpdGVtcyB0cmFjayBieSAk
aWQoaXRlbSlgLiBBIGJ1aWx0IGluIGAkaWQoKWAgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gYXNz
aWduIGEgdW5pcXVlCisgKiAgICAgYCQkaGFzaEtleWAgcHJvcGVydHkgdG8gZWFjaCBpdGVtIGlu
IHRoZSBhcnJheS4gVGhpcyBwcm9wZXJ0eSBpcyB0aGVuIHVzZWQgYXMgYSBrZXkgdG8gYXNzb2Np
YXRlZCBET00gZWxlbWVudHMKKyAqICAgICB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIGl0ZW0gaW4g
dGhlIGFycmF5IGJ5IGlkZW50aXR5LiBNb3ZpbmcgdGhlIHNhbWUgb2JqZWN0IGluIGFycmF5IHdv
dWxkIG1vdmUgdGhlIERPTQorICogICAgIGVsZW1lbnQgaW4gdGhlIHNhbWUgd2F5IGluIHRoZSBE
T00uCisgKgorICogICAgIEZvciBleGFtcGxlOiBgaXRlbSBpbiBpdGVtcyB0cmFjayBieSBpdGVt
LmlkYCBpcyBhIHR5cGljYWwgcGF0dGVybiB3aGVuIHRoZSBpdGVtcyBjb21lIGZyb20gdGhlIGRh
dGFiYXNlLiBJbiB0aGlzCisgKiAgICAgY2FzZSB0aGUgb2JqZWN0IGlkZW50aXR5IGRvZXMgbm90
IG1hdHRlci4gVHdvIG9iamVjdHMgYXJlIGNvbnNpZGVyZWQgZXF1aXZhbGVudCBhcyBsb25nIGFz
IHRoZWlyIGBpZGAKKyAqICAgICBwcm9wZXJ0eSBpcyBzYW1lLgorICoKKyAqICAgICBGb3IgZXhh
bXBsZTogYGl0ZW0gaW4gaXRlbXMgfCBmaWx0ZXI6c2VhcmNoVGV4dCB0cmFjayBieSBpdGVtLmlk
YCBpcyBhIHBhdHRlcm4gdGhhdCBtaWdodCBiZSB1c2VkIHRvIGFwcGx5IGEgZmlsdGVyCisgKiAg
ICAgdG8gaXRlbXMgaW4gY29uanVuY3Rpb24gd2l0aCBhIHRyYWNraW5nIGV4cHJlc3Npb24uCisg
KgorICogICAqIGB2YXJpYWJsZSBpbiBleHByZXNzaW9uIGFzIGFsaWFzX2V4cHJlc3Npb25gIOKA
kyBZb3UgY2FuIGFsc28gcHJvdmlkZSBhbiBvcHRpb25hbCBhbGlhcyBleHByZXNzaW9uIHdoaWNo
IHdpbGwgdGhlbiBzdG9yZSB0aGUKKyAqICAgICBpbnRlcm1lZGlhdGUgcmVzdWx0cyBvZiB0aGUg
cmVwZWF0ZXIgYWZ0ZXIgdGhlIGZpbHRlcnMgaGF2ZSBiZWVuIGFwcGxpZWQuIFR5cGljYWxseSB0
aGlzIGlzIHVzZWQgdG8gcmVuZGVyIGEgc3BlY2lhbCBtZXNzYWdlCisgKiAgICAgd2hlbiBhIGZp
bHRlciBpcyBhY3RpdmUgb24gdGhlIHJlcGVhdGVyLCBidXQgdGhlIGZpbHRlcmVkIHJlc3VsdCBz
ZXQgaXMgZW1wdHkuCisgKgorICogICAgIEZvciBleGFtcGxlOiBgaXRlbSBpbiBpdGVtcyB8IGZp
bHRlcjp4IGFzIHJlc3VsdHNgIHdpbGwgc3RvcmUgdGhlIGZyYWdtZW50IG9mIHRoZSByZXBlYXRl
ZCBpdGVtcyBhcyBgcmVzdWx0c2AsIGJ1dCBvbmx5IGFmdGVyCisgKiAgICAgdGhlIGl0ZW1zIGhh
dmUgYmVlbiBwcm9jZXNzZWQgdGhyb3VnaCB0aGUgZmlsdGVyLgorICoKKyAqICAgICBQbGVhc2Ug
bm90ZSB0aGF0IGBhcyBbdmFyaWFibGUgbmFtZV0gaXMgbm90IGFuIG9wZXJhdG9yIGJ1dCByYXRo
ZXIgYSBwYXJ0IG9mIG5nUmVwZWF0IG1pY3JvLXN5bnRheCBzbyBpdCBjYW4gYmUgdXNlZCBvbmx5
IGF0IHRoZSBlbmQKKyAqICAgICAoYW5kIG5vdCBhcyBvcGVyYXRvciwgaW5zaWRlIGFuIGV4cHJl
c3Npb24pLgorICoKKyAqICAgICBGb3IgZXhhbXBsZTogYGl0ZW0gaW4gaXRlbXMgfCBmaWx0ZXIg
OiB4IHwgb3JkZXJCeSA6IG9yZGVyIHwgbGltaXRUbyA6IGxpbWl0IGFzIHJlc3VsdHNgIC4KKyAq
CisgKiBAZXhhbXBsZQorICogVGhpcyBleGFtcGxlIGluaXRpYWxpemVzIHRoZSBzY29wZSB0byBh
IGxpc3Qgb2YgbmFtZXMgYW5kCisgKiB0aGVuIHVzZXMgYG5nUmVwZWF0YCB0byBkaXNwbGF5IGV2
ZXJ5IHBlcnNvbjoKKyAgPGV4YW1wbGUgbW9kdWxlPSJuZ0FuaW1hdGUiIGRlcHM9ImFuZ3VsYXIt
YW5pbWF0ZS5qcyIgYW5pbWF0aW9ucz0idHJ1ZSI+CisgICAgPGZpbGUgbmFtZT0iaW5kZXguaHRt
bCI+CisgICAgICA8ZGl2IG5nLWluaXQ9ImZyaWVuZHMgPSBbCisgICAgICAgIHtuYW1lOidKb2hu
JywgYWdlOjI1LCBnZW5kZXI6J2JveSd9LAorICAgICAgICB7bmFtZTonSmVzc2llJywgYWdlOjMw
LCBnZW5kZXI6J2dpcmwnfSwKKyAgICAgICAge25hbWU6J0pvaGFubmEnLCBhZ2U6MjgsIGdlbmRl
cjonZ2lybCd9LAorICAgICAgICB7bmFtZTonSm95JywgYWdlOjE1LCBnZW5kZXI6J2dpcmwnfSwK
KyAgICAgICAge25hbWU6J01hcnknLCBhZ2U6MjgsIGdlbmRlcjonZ2lybCd9LAorICAgICAgICB7
bmFtZTonUGV0ZXInLCBhZ2U6OTUsIGdlbmRlcjonYm95J30sCisgICAgICAgIHtuYW1lOidTZWJh
c3RpYW4nLCBhZ2U6NTAsIGdlbmRlcjonYm95J30sCisgICAgICAgIHtuYW1lOidFcmlrYScsIGFn
ZToyNywgZ2VuZGVyOidnaXJsJ30sCisgICAgICAgIHtuYW1lOidQYXRyaWNrJywgYWdlOjQwLCBn
ZW5kZXI6J2JveSd9LAorICAgICAgICB7bmFtZTonU2FtYW50aGEnLCBhZ2U6NjAsIGdlbmRlcjon
Z2lybCd9CisgICAgICBdIj4KKyAgICAgICAgSSBoYXZlIHt7ZnJpZW5kcy5sZW5ndGh9fSBmcmll
bmRzLiBUaGV5IGFyZToKKyAgICAgICAgPGlucHV0IHR5cGU9InNlYXJjaCIgbmctbW9kZWw9InEi
IHBsYWNlaG9sZGVyPSJmaWx0ZXIgZnJpZW5kcy4uLiIgYXJpYS1sYWJlbD0iZmlsdGVyIGZyaWVu
ZHMiIC8+CisgICAgICAgIDx1bCBjbGFzcz0iZXhhbXBsZS1hbmltYXRlLWNvbnRhaW5lciI+Cisg
ICAgICAgICAgPGxpIGNsYXNzPSJhbmltYXRlLXJlcGVhdCIgbmctcmVwZWF0PSJmcmllbmQgaW4g
ZnJpZW5kcyB8IGZpbHRlcjpxIGFzIHJlc3VsdHMiPgorICAgICAgICAgICAgW3t7JGluZGV4ICsg
MX19XSB7e2ZyaWVuZC5uYW1lfX0gd2hvIGlzIHt7ZnJpZW5kLmFnZX19IHllYXJzIG9sZC4KKyAg
ICAgICAgICA8L2xpPgorICAgICAgICAgIDxsaSBjbGFzcz0iYW5pbWF0ZS1yZXBlYXQiIG5nLWlm
PSJyZXN1bHRzLmxlbmd0aCA9PSAwIj4KKyAgICAgICAgICAgIDxzdHJvbmc+Tm8gcmVzdWx0cyBm
b3VuZC4uLjwvc3Ryb25nPgorICAgICAgICAgIDwvbGk+CisgICAgICAgIDwvdWw+CisgICAgICA8
L2Rpdj4KKyAgICA8L2ZpbGU+CisgICAgPGZpbGUgbmFtZT0iYW5pbWF0aW9ucy5jc3MiPgorICAg
ICAgLmV4YW1wbGUtYW5pbWF0ZS1jb250YWluZXIgeworICAgICAgICBiYWNrZ3JvdW5kOndoaXRl
OworICAgICAgICBib3JkZXI6MXB4IHNvbGlkIGJsYWNrOworICAgICAgICBsaXN0LXN0eWxlOm5v
bmU7CisgICAgICAgIG1hcmdpbjowOworICAgICAgICBwYWRkaW5nOjAgMTBweDsKKyAgICAgIH0K
KworICAgICAgLmFuaW1hdGUtcmVwZWF0IHsKKyAgICAgICAgbGluZS1oZWlnaHQ6NDBweDsKKyAg
ICAgICAgbGlzdC1zdHlsZTpub25lOworICAgICAgICBib3gtc2l6aW5nOmJvcmRlci1ib3g7Cisg
ICAgICB9CisKKyAgICAgIC5hbmltYXRlLXJlcGVhdC5uZy1tb3ZlLAorICAgICAgLmFuaW1hdGUt
cmVwZWF0Lm5nLWVudGVyLAorICAgICAgLmFuaW1hdGUtcmVwZWF0Lm5nLWxlYXZlIHsKKyAgICAg
ICAgLXdlYmtpdC10cmFuc2l0aW9uOmFsbCBsaW5lYXIgMC41czsKKyAgICAgICAgdHJhbnNpdGlv
bjphbGwgbGluZWFyIDAuNXM7CisgICAgICB9CisKKyAgICAgIC5hbmltYXRlLXJlcGVhdC5uZy1s
ZWF2ZS5uZy1sZWF2ZS1hY3RpdmUsCisgICAgICAuYW5pbWF0ZS1yZXBlYXQubmctbW92ZSwKKyAg
ICAgIC5hbmltYXRlLXJlcGVhdC5uZy1lbnRlciB7CisgICAgICAgIG9wYWNpdHk6MDsKKyAgICAg
ICAgbWF4LWhlaWdodDowOworICAgICAgfQorCisgICAgICAuYW5pbWF0ZS1yZXBlYXQubmctbGVh
dmUsCisgICAgICAuYW5pbWF0ZS1yZXBlYXQubmctbW92ZS5uZy1tb3ZlLWFjdGl2ZSwKKyAgICAg
IC5hbmltYXRlLXJlcGVhdC5uZy1lbnRlci5uZy1lbnRlci1hY3RpdmUgeworICAgICAgICBvcGFj
aXR5OjE7CisgICAgICAgIG1heC1oZWlnaHQ6NDBweDsKKyAgICAgIH0KKyAgICA8L2ZpbGU+Cisg
ICAgPGZpbGUgbmFtZT0icHJvdHJhY3Rvci5qcyIgdHlwZT0icHJvdHJhY3RvciI+CisgICAgICB2
YXIgZnJpZW5kcyA9IGVsZW1lbnQuYWxsKGJ5LnJlcGVhdGVyKCdmcmllbmQgaW4gZnJpZW5kcycp
KTsKKworICAgICAgaXQoJ3Nob3VsZCByZW5kZXIgaW5pdGlhbCBkYXRhIHNldCcsIGZ1bmN0aW9u
KCkgeworICAgICAgICBleHBlY3QoZnJpZW5kcy5jb3VudCgpKS50b0JlKDEwKTsKKyAgICAgICAg
ZXhwZWN0KGZyaWVuZHMuZ2V0KDApLmdldFRleHQoKSkudG9FcXVhbCgnWzFdIEpvaG4gd2hvIGlz
IDI1IHllYXJzIG9sZC4nKTsKKyAgICAgICAgZXhwZWN0KGZyaWVuZHMuZ2V0KDEpLmdldFRleHQo
KSkudG9FcXVhbCgnWzJdIEplc3NpZSB3aG8gaXMgMzAgeWVhcnMgb2xkLicpOworICAgICAgICBl
eHBlY3QoZnJpZW5kcy5sYXN0KCkuZ2V0VGV4dCgpKS50b0VxdWFsKCdbMTBdIFNhbWFudGhhIHdo
byBpcyA2MCB5ZWFycyBvbGQuJyk7CisgICAgICAgIGV4cGVjdChlbGVtZW50KGJ5LmJpbmRpbmco
J2ZyaWVuZHMubGVuZ3RoJykpLmdldFRleHQoKSkKKyAgICAgICAgICAgIC50b01hdGNoKCJJIGhh
dmUgMTAgZnJpZW5kcy4gVGhleSBhcmU6Iik7CisgICAgICB9KTsKKworICAgICAgIGl0KCdzaG91
bGQgdXBkYXRlIHJlcGVhdGVyIHdoZW4gZmlsdGVyIHByZWRpY2F0ZSBjaGFuZ2VzJywgZnVuY3Rp
b24oKSB7CisgICAgICAgICBleHBlY3QoZnJpZW5kcy5jb3VudCgpKS50b0JlKDEwKTsKKworICAg
ICAgICAgZWxlbWVudChieS5tb2RlbCgncScpKS5zZW5kS2V5cygnbWEnKTsKKworICAgICAgICAg
ZXhwZWN0KGZyaWVuZHMuY291bnQoKSkudG9CZSgyKTsKKyAgICAgICAgIGV4cGVjdChmcmllbmRz
LmdldCgwKS5nZXRUZXh0KCkpLnRvRXF1YWwoJ1sxXSBNYXJ5IHdobyBpcyAyOCB5ZWFycyBvbGQu
Jyk7CisgICAgICAgICBleHBlY3QoZnJpZW5kcy5sYXN0KCkuZ2V0VGV4dCgpKS50b0VxdWFsKCdb
Ml0gU2FtYW50aGEgd2hvIGlzIDYwIHllYXJzIG9sZC4nKTsKKyAgICAgICB9KTsKKyAgICAgIDwv
ZmlsZT4KKyAgICA8L2V4YW1wbGU+CisgKi8KK3ZhciBuZ1JlcGVhdERpcmVjdGl2ZSA9IFsnJHBh
cnNlJywgJyRhbmltYXRlJywgZnVuY3Rpb24oJHBhcnNlLCAkYW5pbWF0ZSkgeworICB2YXIgTkdf
UkVNT1ZFRCA9ICckJE5HX1JFTU9WRUQnOworICB2YXIgbmdSZXBlYXRNaW5FcnIgPSBtaW5FcnIo
J25nUmVwZWF0Jyk7CisKKyAgdmFyIHVwZGF0ZVNjb3BlID0gZnVuY3Rpb24oc2NvcGUsIGluZGV4
LCB2YWx1ZUlkZW50aWZpZXIsIHZhbHVlLCBrZXlJZGVudGlmaWVyLCBrZXksIGFycmF5TGVuZ3Ro
KSB7CisgICAgLy8gVE9ETyhwZXJmKTogZ2VuZXJhdGUgc2V0dGVycyB0byBzaGF2ZSBvZmYgfjQw
bXMgb3IgMS0xLjUlCisgICAgc2NvcGVbdmFsdWVJZGVudGlmaWVyXSA9IHZhbHVlOworICAgIGlm
IChrZXlJZGVudGlmaWVyKSBzY29wZVtrZXlJZGVudGlmaWVyXSA9IGtleTsKKyAgICBzY29wZS4k
aW5kZXggPSBpbmRleDsKKyAgICBzY29wZS4kZmlyc3QgPSAoaW5kZXggPT09IDApOworICAgIHNj
b3BlLiRsYXN0ID0gKGluZGV4ID09PSAoYXJyYXlMZW5ndGggLSAxKSk7CisgICAgc2NvcGUuJG1p
ZGRsZSA9ICEoc2NvcGUuJGZpcnN0IHx8IHNjb3BlLiRsYXN0KTsKKyAgICAvLyBqc2hpbnQgYml0
d2lzZTogZmFsc2UKKyAgICBzY29wZS4kb2RkID0gIShzY29wZS4kZXZlbiA9IChpbmRleCYxKSA9
PT0gMCk7CisgICAgLy8ganNoaW50IGJpdHdpc2U6IHRydWUKKyAgfTsKKworICB2YXIgZ2V0Qmxv
Y2tTdGFydCA9IGZ1bmN0aW9uKGJsb2NrKSB7CisgICAgcmV0dXJuIGJsb2NrLmNsb25lWzBdOwor
ICB9OworCisgIHZhciBnZXRCbG9ja0VuZCA9IGZ1bmN0aW9uKGJsb2NrKSB7CisgICAgcmV0dXJu
IGJsb2NrLmNsb25lW2Jsb2NrLmNsb25lLmxlbmd0aCAtIDFdOworICB9OworCisKKyAgcmV0dXJu
IHsKKyAgICByZXN0cmljdDogJ0EnLAorICAgIG11bHRpRWxlbWVudDogdHJ1ZSwKKyAgICB0cmFu
c2NsdWRlOiAnZWxlbWVudCcsCisgICAgcHJpb3JpdHk6IDEwMDAsCisgICAgdGVybWluYWw6IHRy
dWUsCisgICAgJCR0bGI6IHRydWUsCisgICAgY29tcGlsZTogZnVuY3Rpb24gbmdSZXBlYXRDb21w
aWxlKCRlbGVtZW50LCAkYXR0cikgeworICAgICAgdmFyIGV4cHJlc3Npb24gPSAkYXR0ci5uZ1Jl
cGVhdDsKKyAgICAgIHZhciBuZ1JlcGVhdEVuZENvbW1lbnQgPSBkb2N1bWVudC5jcmVhdGVDb21t
ZW50KCcgZW5kIG5nUmVwZWF0OiAnICsgZXhwcmVzc2lvbiArICcgJyk7CisKKyAgICAgIHZhciBt
YXRjaCA9IGV4cHJlc3Npb24ubWF0Y2goL15ccyooW1xzXFNdKz8pXHMraW5ccysoW1xzXFNdKz8p
KD86XHMrYXNccysoW1xzXFNdKz8pKT8oPzpccyt0cmFja1xzK2J5XHMrKFtcc1xTXSs/KSk/XHMq
JC8pOworCisgICAgICBpZiAoIW1hdGNoKSB7CisgICAgICAgIHRocm93IG5nUmVwZWF0TWluRXJy
KCdpZXhwJywgIkV4cGVjdGVkIGV4cHJlc3Npb24gaW4gZm9ybSBvZiAnX2l0ZW1fIGluIF9jb2xs
ZWN0aW9uX1sgdHJhY2sgYnkgX2lkX10nIGJ1dCBnb3QgJ3swfScuIiwKKyAgICAgICAgICAgIGV4
cHJlc3Npb24pOworICAgICAgfQorCisgICAgICB2YXIgbGhzID0gbWF0Y2hbMV07CisgICAgICB2
YXIgcmhzID0gbWF0Y2hbMl07CisgICAgICB2YXIgYWxpYXNBcyA9IG1hdGNoWzNdOworICAgICAg
dmFyIHRyYWNrQnlFeHAgPSBtYXRjaFs0XTsKKworICAgICAgbWF0Y2ggPSBsaHMubWF0Y2goL14o
PzooXHMqW1wkXHddKyl8XChccyooW1wkXHddKylccyosXHMqKFtcJFx3XSspXHMqXCkpJC8pOwor
CisgICAgICBpZiAoIW1hdGNoKSB7CisgICAgICAgIHRocm93IG5nUmVwZWF0TWluRXJyKCdpaWRl
eHAnLCAiJ19pdGVtXycgaW4gJ19pdGVtXyBpbiBfY29sbGVjdGlvbl8nIHNob3VsZCBiZSBhbiBp
ZGVudGlmaWVyIG9yICcoX2tleV8sIF92YWx1ZV8pJyBleHByZXNzaW9uLCBidXQgZ290ICd7MH0n
LiIsCisgICAgICAgICAgICBsaHMpOworICAgICAgfQorICAgICAgdmFyIHZhbHVlSWRlbnRpZmll
ciA9IG1hdGNoWzNdIHx8IG1hdGNoWzFdOworICAgICAgdmFyIGtleUlkZW50aWZpZXIgPSBtYXRj
aFsyXTsKKworICAgICAgaWYgKGFsaWFzQXMgJiYgKCEvXlskYS16QS1aX11bJGEtekEtWjAtOV9d
KiQvLnRlc3QoYWxpYXNBcykgfHwKKyAgICAgICAgICAvXihudWxsfHVuZGVmaW5lZHx0aGlzfFwk
aW5kZXh8XCRmaXJzdHxcJG1pZGRsZXxcJGxhc3R8XCRldmVufFwkb2RkfFwkcGFyZW50fFwkcm9v
dHxcJGlkKSQvLnRlc3QoYWxpYXNBcykpKSB7CisgICAgICAgIHRocm93IG5nUmVwZWF0TWluRXJy
KCdiYWRpZGVudCcsICJhbGlhcyAnezB9JyBpcyBpbnZhbGlkIC0tLSBtdXN0IGJlIGEgdmFsaWQg
SlMgaWRlbnRpZmllciB3aGljaCBpcyBub3QgYSByZXNlcnZlZCBuYW1lLiIsCisgICAgICAgICAg
YWxpYXNBcyk7CisgICAgICB9CisKKyAgICAgIHZhciB0cmFja0J5RXhwR2V0dGVyLCB0cmFja0J5
SWRFeHBGbiwgdHJhY2tCeUlkQXJyYXlGbiwgdHJhY2tCeUlkT2JqRm47CisgICAgICB2YXIgaGFz
aEZuTG9jYWxzID0geyRpZDogaGFzaEtleX07CisKKyAgICAgIGlmICh0cmFja0J5RXhwKSB7Cisg
ICAgICAgIHRyYWNrQnlFeHBHZXR0ZXIgPSAkcGFyc2UodHJhY2tCeUV4cCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICB0cmFja0J5SWRBcnJheUZuID0gZnVuY3Rpb24oa2V5LCB2YWx1ZSkgewor
ICAgICAgICAgIHJldHVybiBoYXNoS2V5KHZhbHVlKTsKKyAgICAgICAgfTsKKyAgICAgICAgdHJh
Y2tCeUlkT2JqRm4gPSBmdW5jdGlvbihrZXkpIHsKKyAgICAgICAgICByZXR1cm4ga2V5OworICAg
ICAgICB9OworICAgICAgfQorCisgICAgICByZXR1cm4gZnVuY3Rpb24gbmdSZXBlYXRMaW5rKCRz
Y29wZSwgJGVsZW1lbnQsICRhdHRyLCBjdHJsLCAkdHJhbnNjbHVkZSkgeworCisgICAgICAgIGlm
ICh0cmFja0J5RXhwR2V0dGVyKSB7CisgICAgICAgICAgdHJhY2tCeUlkRXhwRm4gPSBmdW5jdGlv
bihrZXksIHZhbHVlLCBpbmRleCkgeworICAgICAgICAgICAgLy8gYXNzaWduIGtleSwgdmFsdWUs
IGFuZCAkaW5kZXggdG8gdGhlIGxvY2FscyBzbyB0aGF0IHRoZXkgY2FuIGJlIHVzZWQgaW4gaGFz
aCBmdW5jdGlvbnMKKyAgICAgICAgICAgIGlmIChrZXlJZGVudGlmaWVyKSBoYXNoRm5Mb2NhbHNb
a2V5SWRlbnRpZmllcl0gPSBrZXk7CisgICAgICAgICAgICBoYXNoRm5Mb2NhbHNbdmFsdWVJZGVu
dGlmaWVyXSA9IHZhbHVlOworICAgICAgICAgICAgaGFzaEZuTG9jYWxzLiRpbmRleCA9IGluZGV4
OworICAgICAgICAgICAgcmV0dXJuIHRyYWNrQnlFeHBHZXR0ZXIoJHNjb3BlLCBoYXNoRm5Mb2Nh
bHMpOworICAgICAgICAgIH07CisgICAgICAgIH0KKworICAgICAgICAvLyBTdG9yZSBhIGxpc3Qg
b2YgZWxlbWVudHMgZnJvbSBwcmV2aW91cyBydW4uIFRoaXMgaXMgYSBoYXNoIHdoZXJlIGtleSBp
cyB0aGUgaXRlbSBmcm9tIHRoZQorICAgICAgICAvLyBpdGVyYXRvciwgYW5kIHRoZSB2YWx1ZSBp
cyBvYmplY3RzIHdpdGggZm9sbG93aW5nIHByb3BlcnRpZXMuCisgICAgICAgIC8vICAgLSBzY29w
ZTogYm91bmQgc2NvcGUKKyAgICAgICAgLy8gICAtIGVsZW1lbnQ6IHByZXZpb3VzIGVsZW1lbnQu
CisgICAgICAgIC8vICAgLSBpbmRleDogcG9zaXRpb24KKyAgICAgICAgLy8KKyAgICAgICAgLy8g
V2UgYXJlIHVzaW5nIG5vLXByb3RvIG9iamVjdCBzbyB0aGF0IHdlIGRvbid0IG5lZWQgdG8gZ3Vh
cmQgYWdhaW5zdCBpbmhlcml0ZWQgcHJvcHMgdmlhCisgICAgICAgIC8vIGhhc093blByb3BlcnR5
LgorICAgICAgICB2YXIgbGFzdEJsb2NrTWFwID0gY3JlYXRlTWFwKCk7CisKKyAgICAgICAgLy93
YXRjaCBwcm9wcworICAgICAgICAkc2NvcGUuJHdhdGNoQ29sbGVjdGlvbihyaHMsIGZ1bmN0aW9u
IG5nUmVwZWF0QWN0aW9uKGNvbGxlY3Rpb24pIHsKKyAgICAgICAgICB2YXIgaW5kZXgsIGxlbmd0
aCwKKyAgICAgICAgICAgICAgcHJldmlvdXNOb2RlID0gJGVsZW1lbnRbMF0sICAgICAvLyBub2Rl
IHRoYXQgY2xvbmVkIG5vZGVzIHNob3VsZCBiZSBpbnNlcnRlZCBhZnRlcgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluaXRpYWxpemVkIHRvIHRoZSBj
b21tZW50IG5vZGUgYW5jaG9yCisgICAgICAgICAgICAgIG5leHROb2RlLAorICAgICAgICAgICAg
ICAvLyBTYW1lIGFzIGxhc3RCbG9ja01hcCBidXQgaXQgaGFzIHRoZSBjdXJyZW50IHN0YXRlLiBJ
dCB3aWxsIGJlY29tZSB0aGUKKyAgICAgICAgICAgICAgLy8gbGFzdEJsb2NrTWFwIG9uIHRoZSBu
ZXh0IGl0ZXJhdGlvbi4KKyAgICAgICAgICAgICAgbmV4dEJsb2NrTWFwID0gY3JlYXRlTWFwKCks
CisgICAgICAgICAgICAgIGNvbGxlY3Rpb25MZW5ndGgsCisgICAgICAgICAgICAgIGtleSwgdmFs
dWUsIC8vIGtleS92YWx1ZSBvZiBpdGVyYXRpb24KKyAgICAgICAgICAgICAgdHJhY2tCeUlkLAor
ICAgICAgICAgICAgICB0cmFja0J5SWRGbiwKKyAgICAgICAgICAgICAgY29sbGVjdGlvbktleXMs
CisgICAgICAgICAgICAgIGJsb2NrLCAgICAgICAvLyBsYXN0IG9iamVjdCBpbmZvcm1hdGlvbiB7
c2NvcGUsIGVsZW1lbnQsIGlkfQorICAgICAgICAgICAgICBuZXh0QmxvY2tPcmRlciwKKyAgICAg
ICAgICAgICAgZWxlbWVudHNUb1JlbW92ZTsKKworICAgICAgICAgIGlmIChhbGlhc0FzKSB7Cisg
ICAgICAgICAgICAkc2NvcGVbYWxpYXNBc10gPSBjb2xsZWN0aW9uOworICAgICAgICAgIH0KKwor
ICAgICAgICAgIGlmIChpc0FycmF5TGlrZShjb2xsZWN0aW9uKSkgeworICAgICAgICAgICAgY29s
bGVjdGlvbktleXMgPSBjb2xsZWN0aW9uOworICAgICAgICAgICAgdHJhY2tCeUlkRm4gPSB0cmFj
a0J5SWRFeHBGbiB8fCB0cmFja0J5SWRBcnJheUZuOworICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICB0cmFja0J5SWRGbiA9IHRyYWNrQnlJZEV4cEZuIHx8IHRyYWNrQnlJZE9iakZuOwor
ICAgICAgICAgICAgLy8gaWYgb2JqZWN0LCBleHRyYWN0IGtleXMsIGluIGVudW1lcmF0aW9uIG9y
ZGVyLCB1bnNvcnRlZAorICAgICAgICAgICAgY29sbGVjdGlvbktleXMgPSBbXTsKKyAgICAgICAg
ICAgIGZvciAodmFyIGl0ZW1LZXkgaW4gY29sbGVjdGlvbikgeworICAgICAgICAgICAgICBpZiAo
Y29sbGVjdGlvbi5oYXNPd25Qcm9wZXJ0eShpdGVtS2V5KSAmJiBpdGVtS2V5LmNoYXJBdCgwKSAh
PT0gJyQnKSB7CisgICAgICAgICAgICAgICAgY29sbGVjdGlvbktleXMucHVzaChpdGVtS2V5KTsK
KyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKworICAgICAgICAg
IGNvbGxlY3Rpb25MZW5ndGggPSBjb2xsZWN0aW9uS2V5cy5sZW5ndGg7CisgICAgICAgICAgbmV4
dEJsb2NrT3JkZXIgPSBuZXcgQXJyYXkoY29sbGVjdGlvbkxlbmd0aCk7CisKKyAgICAgICAgICAv
LyBsb2NhdGUgZXhpc3RpbmcgaXRlbXMKKyAgICAgICAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXgg
PCBjb2xsZWN0aW9uTGVuZ3RoOyBpbmRleCsrKSB7CisgICAgICAgICAgICBrZXkgPSAoY29sbGVj
dGlvbiA9PT0gY29sbGVjdGlvbktleXMpID8gaW5kZXggOiBjb2xsZWN0aW9uS2V5c1tpbmRleF07
CisgICAgICAgICAgICB2YWx1ZSA9IGNvbGxlY3Rpb25ba2V5XTsKKyAgICAgICAgICAgIHRyYWNr
QnlJZCA9IHRyYWNrQnlJZEZuKGtleSwgdmFsdWUsIGluZGV4KTsKKyAgICAgICAgICAgIGlmIChs
YXN0QmxvY2tNYXBbdHJhY2tCeUlkXSkgeworICAgICAgICAgICAgICAvLyBmb3VuZCBwcmV2aW91
c2x5IHNlZW4gYmxvY2sKKyAgICAgICAgICAgICAgYmxvY2sgPSBsYXN0QmxvY2tNYXBbdHJhY2tC
eUlkXTsKKyAgICAgICAgICAgICAgZGVsZXRlIGxhc3RCbG9ja01hcFt0cmFja0J5SWRdOworICAg
ICAgICAgICAgICBuZXh0QmxvY2tNYXBbdHJhY2tCeUlkXSA9IGJsb2NrOworICAgICAgICAgICAg
ICBuZXh0QmxvY2tPcmRlcltpbmRleF0gPSBibG9jazsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAo
bmV4dEJsb2NrTWFwW3RyYWNrQnlJZF0pIHsKKyAgICAgICAgICAgICAgLy8gaWYgY29sbGlzaW9u
IGRldGVjdGVkLiByZXN0b3JlIGxhc3RCbG9ja01hcCBhbmQgdGhyb3cgYW4gZXJyb3IKKyAgICAg
ICAgICAgICAgZm9yRWFjaChuZXh0QmxvY2tPcmRlciwgZnVuY3Rpb24oYmxvY2spIHsKKyAgICAg
ICAgICAgICAgICBpZiAoYmxvY2sgJiYgYmxvY2suc2NvcGUpIGxhc3RCbG9ja01hcFtibG9jay5p
ZF0gPSBibG9jazsKKyAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgIHRocm93IG5nUmVw
ZWF0TWluRXJyKCdkdXBlcycsCisgICAgICAgICAgICAgICAgICAiRHVwbGljYXRlcyBpbiBhIHJl
cGVhdGVyIGFyZSBub3QgYWxsb3dlZC4gVXNlICd0cmFjayBieScgZXhwcmVzc2lvbiB0byBzcGVj
aWZ5IHVuaXF1ZSBrZXlzLiBSZXBlYXRlcjogezB9LCBEdXBsaWNhdGUga2V5OiB7MX0sIER1cGxp
Y2F0ZSB2YWx1ZTogezJ9IiwKKyAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb24sIHRyYWNrQnlJ
ZCwgdmFsdWUpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgLy8gbmV3IG5l
dmVyIGJlZm9yZSBzZWVuIGJsb2NrCisgICAgICAgICAgICAgIG5leHRCbG9ja09yZGVyW2luZGV4
XSA9IHtpZDogdHJhY2tCeUlkLCBzY29wZTogdW5kZWZpbmVkLCBjbG9uZTogdW5kZWZpbmVkfTsK
KyAgICAgICAgICAgICAgbmV4dEJsb2NrTWFwW3RyYWNrQnlJZF0gPSB0cnVlOworICAgICAgICAg
ICAgfQorICAgICAgICAgIH0KKworICAgICAgICAgIC8vIHJlbW92ZSBsZWZ0b3ZlciBpdGVtcwor
ICAgICAgICAgIGZvciAodmFyIGJsb2NrS2V5IGluIGxhc3RCbG9ja01hcCkgeworICAgICAgICAg
ICAgYmxvY2sgPSBsYXN0QmxvY2tNYXBbYmxvY2tLZXldOworICAgICAgICAgICAgZWxlbWVudHNU
b1JlbW92ZSA9IGdldEJsb2NrTm9kZXMoYmxvY2suY2xvbmUpOworICAgICAgICAgICAgJGFuaW1h
dGUubGVhdmUoZWxlbWVudHNUb1JlbW92ZSk7CisgICAgICAgICAgICBpZiAoZWxlbWVudHNUb1Jl
bW92ZVswXS5wYXJlbnROb2RlKSB7CisgICAgICAgICAgICAgIC8vIGlmIHRoZSBlbGVtZW50IHdh
cyBub3QgcmVtb3ZlZCB5ZXQgYmVjYXVzZSBvZiBwZW5kaW5nIGFuaW1hdGlvbiwgbWFyayBpdCBh
cyBkZWxldGVkCisgICAgICAgICAgICAgIC8vIHNvIHRoYXQgd2UgY2FuIGlnbm9yZSBpdCBsYXRl
cgorICAgICAgICAgICAgICBmb3IgKGluZGV4ID0gMCwgbGVuZ3RoID0gZWxlbWVudHNUb1JlbW92
ZS5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrKSB7CisgICAgICAgICAgICAgICAgZWxl
bWVudHNUb1JlbW92ZVtpbmRleF1bTkdfUkVNT1ZFRF0gPSB0cnVlOworICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBibG9jay5zY29wZS4kZGVzdHJveSgpOworICAg
ICAgICAgIH0KKworICAgICAgICAgIC8vIHdlIGFyZSBub3QgdXNpbmcgZm9yRWFjaCBmb3IgcGVy
ZiByZWFzb25zICh0cnlpbmcgdG8gYXZvaWQgI2NhbGwpCisgICAgICAgICAgZm9yIChpbmRleCA9
IDA7IGluZGV4IDwgY29sbGVjdGlvbkxlbmd0aDsgaW5kZXgrKykgeworICAgICAgICAgICAga2V5
ID0gKGNvbGxlY3Rpb24gPT09IGNvbGxlY3Rpb25LZXlzKSA/IGluZGV4IDogY29sbGVjdGlvbktl
eXNbaW5kZXhdOworICAgICAgICAgICAgdmFsdWUgPSBjb2xsZWN0aW9uW2tleV07CisgICAgICAg
ICAgICBibG9jayA9IG5leHRCbG9ja09yZGVyW2luZGV4XTsKKworICAgICAgICAgICAgaWYgKGJs
b2NrLnNjb3BlKSB7CisgICAgICAgICAgICAgIC8vIGlmIHdlIGhhdmUgYWxyZWFkeSBzZWVuIHRo
aXMgb2JqZWN0LCB0aGVuIHdlIG5lZWQgdG8gcmV1c2UgdGhlCisgICAgICAgICAgICAgIC8vIGFz
c29jaWF0ZWQgc2NvcGUvZWxlbWVudAorCisgICAgICAgICAgICAgIG5leHROb2RlID0gcHJldmlv
dXNOb2RlOworCisgICAgICAgICAgICAgIC8vIHNraXAgbm9kZXMgdGhhdCBhcmUgYWxyZWFkeSBw
ZW5kaW5nIHJlbW92YWwgdmlhIGxlYXZlIGFuaW1hdGlvbgorICAgICAgICAgICAgICBkbyB7Cisg
ICAgICAgICAgICAgICAgbmV4dE5vZGUgPSBuZXh0Tm9kZS5uZXh0U2libGluZzsKKyAgICAgICAg
ICAgICAgfSB3aGlsZSAobmV4dE5vZGUgJiYgbmV4dE5vZGVbTkdfUkVNT1ZFRF0pOworCisgICAg
ICAgICAgICAgIGlmIChnZXRCbG9ja1N0YXJ0KGJsb2NrKSAhPSBuZXh0Tm9kZSkgeworICAgICAg
ICAgICAgICAgIC8vIGV4aXN0aW5nIGl0ZW0gd2hpY2ggZ290IG1vdmVkCisgICAgICAgICAgICAg
ICAgJGFuaW1hdGUubW92ZShnZXRCbG9ja05vZGVzKGJsb2NrLmNsb25lKSwgbnVsbCwganFMaXRl
KHByZXZpb3VzTm9kZSkpOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIHByZXZpb3Vz
Tm9kZSA9IGdldEJsb2NrRW5kKGJsb2NrKTsKKyAgICAgICAgICAgICAgdXBkYXRlU2NvcGUoYmxv
Y2suc2NvcGUsIGluZGV4LCB2YWx1ZUlkZW50aWZpZXIsIHZhbHVlLCBrZXlJZGVudGlmaWVyLCBr
ZXksIGNvbGxlY3Rpb25MZW5ndGgpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgLy8gbmV3IGl0ZW0gd2hpY2ggd2UgZG9uJ3Qga25vdyBhYm91dAorICAgICAgICAgICAgICAk
dHJhbnNjbHVkZShmdW5jdGlvbiBuZ1JlcGVhdFRyYW5zY2x1ZGUoY2xvbmUsIHNjb3BlKSB7Cisg
ICAgICAgICAgICAgICAgYmxvY2suc2NvcGUgPSBzY29wZTsKKyAgICAgICAgICAgICAgICAvLyBo
dHRwOi8vanNwZXJmLmNvbS9jbG9uZS12cy1jcmVhdGVjb21tZW50CisgICAgICAgICAgICAgICAg
dmFyIGVuZE5vZGUgPSBuZ1JlcGVhdEVuZENvbW1lbnQuY2xvbmVOb2RlKGZhbHNlKTsKKyAgICAg
ICAgICAgICAgICBjbG9uZVtjbG9uZS5sZW5ndGgrK10gPSBlbmROb2RlOworCisgICAgICAgICAg
ICAgICAgLy8gVE9ETyhwZXJmKTogc3VwcG9ydCBuYWtlZCBwcmV2aW91c05vZGUgaW4gYGVudGVy
YCB0byBhdm9pZCBjcmVhdGlvbiBvZiBqcUxpdGUgd3JhcHBlcj8KKyAgICAgICAgICAgICAgICAk
YW5pbWF0ZS5lbnRlcihjbG9uZSwgbnVsbCwganFMaXRlKHByZXZpb3VzTm9kZSkpOworICAgICAg
ICAgICAgICAgIHByZXZpb3VzTm9kZSA9IGVuZE5vZGU7CisgICAgICAgICAgICAgICAgLy8gTm90
ZTogV2Ugb25seSBuZWVkIHRoZSBmaXJzdC9sYXN0IG5vZGUgb2YgdGhlIGNsb25lZCBub2Rlcy4K
KyAgICAgICAgICAgICAgICAvLyBIb3dldmVyLCB3ZSBuZWVkIHRvIGtlZXAgdGhlIHJlZmVyZW5j
ZSB0byB0aGUganFsaXRlIHdyYXBwZXIgYXMgaXQgbWlnaHQgYmUgY2hhbmdlZCBsYXRlcgorICAg
ICAgICAgICAgICAgIC8vIGJ5IGEgZGlyZWN0aXZlIHdpdGggdGVtcGxhdGVVcmwgd2hlbiBpdHMg
dGVtcGxhdGUgYXJyaXZlcy4KKyAgICAgICAgICAgICAgICBibG9jay5jbG9uZSA9IGNsb25lOwor
ICAgICAgICAgICAgICAgIG5leHRCbG9ja01hcFtibG9jay5pZF0gPSBibG9jazsKKyAgICAgICAg
ICAgICAgICB1cGRhdGVTY29wZShibG9jay5zY29wZSwgaW5kZXgsIHZhbHVlSWRlbnRpZmllciwg
dmFsdWUsIGtleUlkZW50aWZpZXIsIGtleSwgY29sbGVjdGlvbkxlbmd0aCk7CisgICAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBsYXN0QmxvY2tN
YXAgPSBuZXh0QmxvY2tNYXA7CisgICAgICAgIH0pOworICAgICAgfTsKKyAgICB9CisgIH07Cit9
XTsKKwordmFyIE5HX0hJREVfQ0xBU1MgPSAnbmctaGlkZSc7Cit2YXIgTkdfSElERV9JTl9QUk9H
UkVTU19DTEFTUyA9ICduZy1oaWRlLWFuaW1hdGUnOworLyoqCisgKiBAbmdkb2MgZGlyZWN0aXZl
CisgKiBAbmFtZSBuZ1Nob3cKKyAqIEBtdWx0aUVsZW1lbnQKKyAqCisgKiBAZGVzY3JpcHRpb24K
KyAqIFRoZSBgbmdTaG93YCBkaXJlY3RpdmUgc2hvd3Mgb3IgaGlkZXMgdGhlIGdpdmVuIEhUTUwg
ZWxlbWVudCBiYXNlZCBvbiB0aGUgZXhwcmVzc2lvbgorICogcHJvdmlkZWQgdG8gdGhlIGBuZ1No
b3dgIGF0dHJpYnV0ZS4gVGhlIGVsZW1lbnQgaXMgc2hvd24gb3IgaGlkZGVuIGJ5IHJlbW92aW5n
IG9yIGFkZGluZworICogdGhlIGAubmctaGlkZWAgQ1NTIGNsYXNzIG9udG8gdGhlIGVsZW1lbnQu
IFRoZSBgLm5nLWhpZGVgIENTUyBjbGFzcyBpcyBwcmVkZWZpbmVkCisgKiBpbiBBbmd1bGFySlMg
YW5kIHNldHMgdGhlIGRpc3BsYXkgc3R5bGUgdG8gbm9uZSAodXNpbmcgYW4gIWltcG9ydGFudCBm
bGFnKS4KKyAqIEZvciBDU1AgbW9kZSBwbGVhc2UgYWRkIGBhbmd1bGFyLWNzcC5jc3NgIHRvIHlv
dXIgaHRtbCBmaWxlIChzZWUge0BsaW5rIG5nLmRpcmVjdGl2ZTpuZ0NzcCBuZ0NzcH0pLgorICoK
KyAqIGBgYGh0bWwKKyAqIDwhLS0gd2hlbiAkc2NvcGUubXlWYWx1ZSBpcyB0cnV0aHkgKGVsZW1l
bnQgaXMgdmlzaWJsZSkgLS0+CisgKiA8ZGl2IG5nLXNob3c9Im15VmFsdWUiPjwvZGl2PgorICoK
KyAqIDwhLS0gd2hlbiAkc2NvcGUubXlWYWx1ZSBpcyBmYWxzeSAoZWxlbWVudCBpcyBoaWRkZW4p
IC0tPgorICogPGRpdiBuZy1zaG93PSJteVZhbHVlIiBjbGFzcz0ibmctaGlkZSI+PC9kaXY+Cisg
KiBgYGAKKyAqCisgKiBXaGVuIHRoZSBgbmdTaG93YCBleHByZXNzaW9uIGV2YWx1YXRlcyB0byBh
IGZhbHN5IHZhbHVlIHRoZW4gdGhlIGAubmctaGlkZWAgQ1NTIGNsYXNzIGlzIGFkZGVkIHRvIHRo
ZSBjbGFzcworICogYXR0cmlidXRlIG9uIHRoZSBlbGVtZW50IGNhdXNpbmcgaXQgdG8gYmVjb21l
IGhpZGRlbi4gV2hlbiB0cnV0aHksIHRoZSBgLm5nLWhpZGVgIENTUyBjbGFzcyBpcyByZW1vdmVk
CisgKiBmcm9tIHRoZSBlbGVtZW50IGNhdXNpbmcgdGhlIGVsZW1lbnQgbm90IHRvIGFwcGVhciBo
aWRkZW4uCisgKgorICogIyMgV2h5IGlzICFpbXBvcnRhbnQgdXNlZD8KKyAqCisgKiBZb3UgbWF5
IGJlIHdvbmRlcmluZyB3aHkgIWltcG9ydGFudCBpcyB1c2VkIGZvciB0aGUgYC5uZy1oaWRlYCBD
U1MgY2xhc3MuIFRoaXMgaXMgYmVjYXVzZSB0aGUgYC5uZy1oaWRlYCBzZWxlY3RvcgorICogY2Fu
IGJlIGVhc2lseSBvdmVycmlkZGVuIGJ5IGhlYXZpZXIgc2VsZWN0b3JzLiBGb3IgZXhhbXBsZSwg
c29tZXRoaW5nIGFzIHNpbXBsZQorICogYXMgY2hhbmdpbmcgdGhlIGRpc3BsYXkgc3R5bGUgb24g
YSBIVE1MIGxpc3QgaXRlbSB3b3VsZCBtYWtlIGhpZGRlbiBlbGVtZW50cyBhcHBlYXIgdmlzaWJs
ZS4KKyAqIFRoaXMgYWxzbyBiZWNvbWVzIGEgYmlnZ2VyIGlzc3VlIHdoZW4gZGVhbGluZyB3aXRo
IENTUyBmcmFtZXdvcmtzLgorICoKKyAqIEJ5IHVzaW5nICFpbXBvcnRhbnQsIHRoZSBzaG93IGFu
ZCBoaWRlIGJlaGF2aW9yIHdpbGwgd29yayBhcyBleHBlY3RlZCBkZXNwaXRlIGFueSBjbGFzaCBi
ZXR3ZWVuIENTUyBzZWxlY3RvcgorICogc3BlY2lmaWNpdHkgKHdoZW4gIWltcG9ydGFudCBpc24n
dCB1c2VkIHdpdGggYW55IGNvbmZsaWN0aW5nIHN0eWxlcykuIElmIGEgZGV2ZWxvcGVyIGNob29z
ZXMgdG8gb3ZlcnJpZGUgdGhlCisgKiBzdHlsaW5nIHRvIGNoYW5nZSBob3cgdG8gaGlkZSBhbiBl
bGVtZW50IHRoZW4gaXQgaXMganVzdCBhIG1hdHRlciBvZiB1c2luZyAhaW1wb3J0YW50IGluIHRo
ZWlyIG93biBDU1MgY29kZS4KKyAqCisgKiAjIyMgT3ZlcnJpZGluZyBgLm5nLWhpZGVgCisgKgor
ICogQnkgZGVmYXVsdCwgdGhlIGAubmctaGlkZWAgY2xhc3Mgd2lsbCBzdHlsZSB0aGUgZWxlbWVu
dCB3aXRoIGBkaXNwbGF5OiBub25lIWltcG9ydGFudGAuIElmIHlvdSB3aXNoIHRvIGNoYW5nZQor
ICogdGhlIGhpZGUgYmVoYXZpb3Igd2l0aCBuZ1Nob3cvbmdIaWRlIHRoZW4gdGhpcyBjYW4gYmUg
YWNoaWV2ZWQgYnkgcmVzdGF0aW5nIHRoZSBzdHlsZXMgZm9yIHRoZSBgLm5nLWhpZGVgCisgKiBj
bGFzcyBDU1MuIE5vdGUgdGhhdCB0aGUgc2VsZWN0b3IgdGhhdCBuZWVkcyB0byBiZSB1c2VkIGlz
IGFjdHVhbGx5IGAubmctaGlkZTpub3QoLm5nLWhpZGUtYW5pbWF0ZSlgIHRvIGNvcGUKKyAqIHdp
dGggZXh0cmEgYW5pbWF0aW9uIGNsYXNzZXMgdGhhdCBjYW4gYmUgYWRkZWQuCisgKgorICogYGBg
Y3NzCisgKiAubmctaGlkZTpub3QoLm5nLWhpZGUtYW5pbWF0ZSkgeworICogICAvJiM0MjsgdGhp
cyBpcyBqdXN0IGFub3RoZXIgZm9ybSBvZiBoaWRpbmcgYW4gZWxlbWVudCAmIzQyOy8KKyAqICAg
ZGlzcGxheTogYmxvY2shaW1wb3J0YW50OworICogICBwb3NpdGlvbjogYWJzb2x1dGU7CisgKiAg
IHRvcDogLTk5OTlweDsKKyAqICAgbGVmdDogLTk5OTlweDsKKyAqIH0KKyAqIGBgYAorICoKKyAq
IEJ5IGRlZmF1bHQgeW91IGRvbid0IG5lZWQgdG8gb3ZlcnJpZGUgaW4gQ1NTIGFueXRoaW5nIGFu
ZCB0aGUgYW5pbWF0aW9ucyB3aWxsIHdvcmsgYXJvdW5kIHRoZSBkaXNwbGF5IHN0eWxlLgorICoK
KyAqICMjIEEgbm90ZSBhYm91dCBhbmltYXRpb25zIHdpdGggYG5nU2hvd2AKKyAqCisgKiBBbmlt
YXRpb25zIGluIG5nU2hvdy9uZ0hpZGUgd29yayB3aXRoIHRoZSBzaG93IGFuZCBoaWRlIGV2ZW50
cyB0aGF0IGFyZSB0cmlnZ2VyZWQgd2hlbiB0aGUgZGlyZWN0aXZlIGV4cHJlc3Npb24KKyAqIGlz
IHRydWUgYW5kIGZhbHNlLiBUaGlzIHN5c3RlbSB3b3JrcyBsaWtlIHRoZSBhbmltYXRpb24gc3lz
dGVtIHByZXNlbnQgd2l0aCBuZ0NsYXNzIGV4Y2VwdCB0aGF0CisgKiB5b3UgbXVzdCBhbHNvIGlu
Y2x1ZGUgdGhlICFpbXBvcnRhbnQgZmxhZyB0byBvdmVycmlkZSB0aGUgZGlzcGxheSBwcm9wZXJ0
eQorICogc28gdGhhdCB5b3UgY2FuIHBlcmZvcm0gYW4gYW5pbWF0aW9uIHdoZW4gdGhlIGVsZW1l
bnQgaXMgaGlkZGVuIGR1cmluZyB0aGUgdGltZSBvZiB0aGUgYW5pbWF0aW9uLgorICoKKyAqIGBg
YGNzcworICogLy8KKyAqIC8vYSB3b3JraW5nIGV4YW1wbGUgY2FuIGJlIGZvdW5kIGF0IHRoZSBi
b3R0b20gb2YgdGhpcyBwYWdlCisgKiAvLworICogLm15LWVsZW1lbnQubmctaGlkZS1hZGQsIC5t
eS1lbGVtZW50Lm5nLWhpZGUtcmVtb3ZlIHsKKyAqICAgLyYjNDI7IHRoaXMgaXMgcmVxdWlyZWQg
YXMgb2YgMS4zeCB0byBwcm9wZXJseQorICogICAgICBhcHBseSBhbGwgc3R5bGluZyBpbiBhIHNo
b3cvaGlkZSBhbmltYXRpb24gJiM0MjsvCisgKiAgIHRyYW5zaXRpb246IDBzIGxpbmVhciBhbGw7
CisgKiB9CisgKgorICogLm15LWVsZW1lbnQubmctaGlkZS1hZGQtYWN0aXZlLAorICogLm15LWVs
ZW1lbnQubmctaGlkZS1yZW1vdmUtYWN0aXZlIHsKKyAqICAgLyYjNDI7IHRoZSB0cmFuc2l0aW9u
IGlzIGRlZmluZWQgaW4gdGhlIGFjdGl2ZSBjbGFzcyAmIzQyOy8KKyAqICAgdHJhbnNpdGlvbjog
MXMgbGluZWFyIGFsbDsKKyAqIH0KKyAqCisgKiAubXktZWxlbWVudC5uZy1oaWRlLWFkZCB7IC4u
LiB9CisgKiAubXktZWxlbWVudC5uZy1oaWRlLWFkZC5uZy1oaWRlLWFkZC1hY3RpdmUgeyAuLi4g
fQorICogLm15LWVsZW1lbnQubmctaGlkZS1yZW1vdmUgeyAuLi4gfQorICogLm15LWVsZW1lbnQu
bmctaGlkZS1yZW1vdmUubmctaGlkZS1yZW1vdmUtYWN0aXZlIHsgLi4uIH0KKyAqIGBgYAorICoK
KyAqIEtlZXAgaW4gbWluZCB0aGF0LCBhcyBvZiBBbmd1bGFySlMgdmVyc2lvbiAxLjMuMC1iZXRh
LjExLCB0aGVyZSBpcyBubyBuZWVkIHRvIGNoYW5nZSB0aGUgZGlzcGxheQorICogcHJvcGVydHkg
dG8gYmxvY2sgZHVyaW5nIGFuaW1hdGlvbiBzdGF0ZXMtLW5nQW5pbWF0ZSB3aWxsIGhhbmRsZSB0
aGUgc3R5bGUgdG9nZ2xpbmcgYXV0b21hdGljYWxseSBmb3IgeW91LgorICoKKyAqIEBhbmltYXRp
b25zCisgKiBhZGRDbGFzczogYC5uZy1oaWRlYCAtIGhhcHBlbnMgYWZ0ZXIgdGhlIGBuZ1Nob3dg
IGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIGEgdHJ1dGh5IHZhbHVlIGFuZCB0aGUganVzdCBiZWZv
cmUgY29udGVudHMgYXJlIHNldCB0byB2aXNpYmxlCisgKiByZW1vdmVDbGFzczogYC5uZy1oaWRl
YCAtIGhhcHBlbnMgYWZ0ZXIgdGhlIGBuZ1Nob3dgIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIGEg
bm9uIHRydXRoeSB2YWx1ZSBhbmQganVzdCBiZWZvcmUgdGhlIGNvbnRlbnRzIGFyZSBzZXQgdG8g
aGlkZGVuCisgKgorICogQGVsZW1lbnQgQU5ZCisgKiBAcGFyYW0ge2V4cHJlc3Npb259IG5nU2hv
dyBJZiB0aGUge0BsaW5rIGd1aWRlL2V4cHJlc3Npb24gZXhwcmVzc2lvbn0gaXMgdHJ1dGh5Cisg
KiAgICAgdGhlbiB0aGUgZWxlbWVudCBpcyBzaG93biBvciBoaWRkZW4gcmVzcGVjdGl2ZWx5Lgor
ICoKKyAqIEBleGFtcGxlCisgIDxleGFtcGxlIG1vZHVsZT0ibmdBbmltYXRlIiBkZXBzPSJhbmd1
bGFyLWFuaW1hdGUuanMiIGFuaW1hdGlvbnM9InRydWUiPgorICAgIDxmaWxlIG5hbWU9ImluZGV4
Lmh0bWwiPgorICAgICAgQ2xpY2sgbWU6IDxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmctbW9kZWw9
ImNoZWNrZWQiIGFyaWEtbGFiZWw9IlRvZ2dsZSBuZ0hpZGUiPjxici8+CisgICAgICA8ZGl2Pgor
ICAgICAgICBTaG93OgorICAgICAgICA8ZGl2IGNsYXNzPSJjaGVjay1lbGVtZW50IGFuaW1hdGUt
c2hvdyIgbmctc2hvdz0iY2hlY2tlZCI+CisgICAgICAgICAgPHNwYW4gY2xhc3M9ImdseXBoaWNv
biBnbHlwaGljb24tdGh1bWJzLXVwIj48L3NwYW4+IEkgc2hvdyB1cCB3aGVuIHlvdXIgY2hlY2ti
b3ggaXMgY2hlY2tlZC4KKyAgICAgICAgPC9kaXY+CisgICAgICA8L2Rpdj4KKyAgICAgIDxkaXY+
CisgICAgICAgIEhpZGU6CisgICAgICAgIDxkaXYgY2xhc3M9ImNoZWNrLWVsZW1lbnQgYW5pbWF0
ZS1zaG93IiBuZy1oaWRlPSJjaGVja2VkIj4KKyAgICAgICAgICA8c3BhbiBjbGFzcz0iZ2x5cGhp
Y29uIGdseXBoaWNvbi10aHVtYnMtZG93biI+PC9zcGFuPiBJIGhpZGUgd2hlbiB5b3VyIGNoZWNr
Ym94IGlzIGNoZWNrZWQuCisgICAgICAgIDwvZGl2PgorICAgICAgPC9kaXY+CisgICAgPC9maWxl
PgorICAgIDxmaWxlIG5hbWU9ImdseXBoaWNvbnMuY3NzIj4KKyAgICAgIEBpbXBvcnQgdXJsKC4u
Ly4uL2NvbXBvbmVudHMvYm9vdHN0cmFwLTMuMS4xL2Nzcy9ib290c3RyYXAuY3NzKTsKKyAgICA8
L2ZpbGU+CisgICAgPGZpbGUgbmFtZT0iYW5pbWF0aW9ucy5jc3MiPgorICAgICAgLmFuaW1hdGUt
c2hvdyB7CisgICAgICAgIGxpbmUtaGVpZ2h0OiAyMHB4OworICAgICAgICBvcGFjaXR5OiAxOwor
ICAgICAgICBwYWRkaW5nOiAxMHB4OworICAgICAgICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsK
KyAgICAgICAgYmFja2dyb3VuZDogd2hpdGU7CisgICAgICB9CisKKyAgICAgIC5hbmltYXRlLXNo
b3cubmctaGlkZS1hZGQubmctaGlkZS1hZGQtYWN0aXZlLAorICAgICAgLmFuaW1hdGUtc2hvdy5u
Zy1oaWRlLXJlbW92ZS5uZy1oaWRlLXJlbW92ZS1hY3RpdmUgeworICAgICAgICAtd2Via2l0LXRy
YW5zaXRpb246IGFsbCBsaW5lYXIgMC41czsKKyAgICAgICAgdHJhbnNpdGlvbjogYWxsIGxpbmVh
ciAwLjVzOworICAgICAgfQorCisgICAgICAuYW5pbWF0ZS1zaG93Lm5nLWhpZGUgeworICAgICAg
ICBsaW5lLWhlaWdodDogMDsKKyAgICAgICAgb3BhY2l0eTogMDsKKyAgICAgICAgcGFkZGluZzog
MCAxMHB4OworICAgICAgfQorCisgICAgICAuY2hlY2stZWxlbWVudCB7CisgICAgICAgIHBhZGRp
bmc6IDEwcHg7CisgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOworICAgICAgICBiYWNr
Z3JvdW5kOiB3aGl0ZTsKKyAgICAgIH0KKyAgICA8L2ZpbGU+CisgICAgPGZpbGUgbmFtZT0icHJv
dHJhY3Rvci5qcyIgdHlwZT0icHJvdHJhY3RvciI+CisgICAgICB2YXIgdGh1bWJzVXAgPSBlbGVt
ZW50KGJ5LmNzcygnc3Bhbi5nbHlwaGljb24tdGh1bWJzLXVwJykpOworICAgICAgdmFyIHRodW1i
c0Rvd24gPSBlbGVtZW50KGJ5LmNzcygnc3Bhbi5nbHlwaGljb24tdGh1bWJzLWRvd24nKSk7CisK
KyAgICAgIGl0KCdzaG91bGQgY2hlY2sgbmctc2hvdyAvIG5nLWhpZGUnLCBmdW5jdGlvbigpIHsK
KyAgICAgICAgZXhwZWN0KHRodW1ic1VwLmlzRGlzcGxheWVkKCkpLnRvQmVGYWxzeSgpOworICAg
ICAgICBleHBlY3QodGh1bWJzRG93bi5pc0Rpc3BsYXllZCgpKS50b0JlVHJ1dGh5KCk7CisKKyAg
ICAgICAgZWxlbWVudChieS5tb2RlbCgnY2hlY2tlZCcpKS5jbGljaygpOworCisgICAgICAgIGV4
cGVjdCh0aHVtYnNVcC5pc0Rpc3BsYXllZCgpKS50b0JlVHJ1dGh5KCk7CisgICAgICAgIGV4cGVj
dCh0aHVtYnNEb3duLmlzRGlzcGxheWVkKCkpLnRvQmVGYWxzeSgpOworICAgICAgfSk7CisgICAg
PC9maWxlPgorICA8L2V4YW1wbGU+CisgKi8KK3ZhciBuZ1Nob3dEaXJlY3RpdmUgPSBbJyRhbmlt
YXRlJywgZnVuY3Rpb24oJGFuaW1hdGUpIHsKKyAgcmV0dXJuIHsKKyAgICByZXN0cmljdDogJ0En
LAorICAgIG11bHRpRWxlbWVudDogdHJ1ZSwKKyAgICBsaW5rOiBmdW5jdGlvbihzY29wZSwgZWxl
bWVudCwgYXR0cikgeworICAgICAgc2NvcGUuJHdhdGNoKGF0dHIubmdTaG93LCBmdW5jdGlvbiBu
Z1Nob3dXYXRjaEFjdGlvbih2YWx1ZSkgeworICAgICAgICAvLyB3ZSdyZSBhZGRpbmcgYSB0ZW1w
b3JhcnksIGFuaW1hdGlvbi1zcGVjaWZpYyBjbGFzcyBmb3IgbmctaGlkZSBzaW5jZSB0aGlzIHdh
eQorICAgICAgICAvLyB3ZSBjYW4gY29udHJvbCB3aGVuIHRoZSBlbGVtZW50IGlzIGFjdHVhbGx5
IGRpc3BsYXllZCBvbiBzY3JlZW4gd2l0aG91dCBoYXZpbmcKKyAgICAgICAgLy8gdG8gaGF2ZSBh
IGdsb2JhbC9ncmVlZHkgQ1NTIHNlbGVjdG9yIHRoYXQgYnJlYWtzIHdoZW4gb3RoZXIgYW5pbWF0
aW9ucyBhcmUgcnVuLgorICAgICAgICAvLyBSZWFkOiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxh
ci9hbmd1bGFyLmpzL2lzc3Vlcy85MTAzI2lzc3VlY29tbWVudC01ODMzNTg0NQorICAgICAgICAk
YW5pbWF0ZVt2YWx1ZSA/ICdyZW1vdmVDbGFzcycgOiAnYWRkQ2xhc3MnXShlbGVtZW50LCBOR19I
SURFX0NMQVNTLCB7CisgICAgICAgICAgdGVtcENsYXNzZXM6IE5HX0hJREVfSU5fUFJPR1JFU1Nf
Q0xBU1MKKyAgICAgICAgfSk7CisgICAgICB9KTsKKyAgICB9CisgIH07Cit9XTsKKworCisvKioK
KyAqIEBuZ2RvYyBkaXJlY3RpdmUKKyAqIEBuYW1lIG5nSGlkZQorICogQG11bHRpRWxlbWVudAor
ICoKKyAqIEBkZXNjcmlwdGlvbgorICogVGhlIGBuZ0hpZGVgIGRpcmVjdGl2ZSBzaG93cyBvciBo
aWRlcyB0aGUgZ2l2ZW4gSFRNTCBlbGVtZW50IGJhc2VkIG9uIHRoZSBleHByZXNzaW9uCisgKiBw
cm92aWRlZCB0byB0aGUgYG5nSGlkZWAgYXR0cmlidXRlLiBUaGUgZWxlbWVudCBpcyBzaG93biBv
ciBoaWRkZW4gYnkgcmVtb3Zpbmcgb3IgYWRkaW5nCisgKiB0aGUgYG5nLWhpZGVgIENTUyBjbGFz
cyBvbnRvIHRoZSBlbGVtZW50LiBUaGUgYC5uZy1oaWRlYCBDU1MgY2xhc3MgaXMgcHJlZGVmaW5l
ZAorICogaW4gQW5ndWxhckpTIGFuZCBzZXRzIHRoZSBkaXNwbGF5IHN0eWxlIHRvIG5vbmUgKHVz
aW5nIGFuICFpbXBvcnRhbnQgZmxhZykuCisgKiBGb3IgQ1NQIG1vZGUgcGxlYXNlIGFkZCBgYW5n
dWxhci1jc3AuY3NzYCB0byB5b3VyIGh0bWwgZmlsZSAoc2VlIHtAbGluayBuZy5kaXJlY3RpdmU6
bmdDc3AgbmdDc3B9KS4KKyAqCisgKiBgYGBodG1sCisgKiA8IS0tIHdoZW4gJHNjb3BlLm15VmFs
dWUgaXMgdHJ1dGh5IChlbGVtZW50IGlzIGhpZGRlbikgLS0+CisgKiA8ZGl2IG5nLWhpZGU9Im15
VmFsdWUiIGNsYXNzPSJuZy1oaWRlIj48L2Rpdj4KKyAqCisgKiA8IS0tIHdoZW4gJHNjb3BlLm15
VmFsdWUgaXMgZmFsc3kgKGVsZW1lbnQgaXMgdmlzaWJsZSkgLS0+CisgKiA8ZGl2IG5nLWhpZGU9
Im15VmFsdWUiPjwvZGl2PgorICogYGBgCisgKgorICogV2hlbiB0aGUgYG5nSGlkZWAgZXhwcmVz
c2lvbiBldmFsdWF0ZXMgdG8gYSB0cnV0aHkgdmFsdWUgdGhlbiB0aGUgYC5uZy1oaWRlYCBDU1Mg
Y2xhc3MgaXMgYWRkZWQgdG8gdGhlIGNsYXNzCisgKiBhdHRyaWJ1dGUgb24gdGhlIGVsZW1lbnQg
Y2F1c2luZyBpdCB0byBiZWNvbWUgaGlkZGVuLiBXaGVuIGZhbHN5LCB0aGUgYC5uZy1oaWRlYCBD
U1MgY2xhc3MgaXMgcmVtb3ZlZAorICogZnJvbSB0aGUgZWxlbWVudCBjYXVzaW5nIHRoZSBlbGVt
ZW50IG5vdCB0byBhcHBlYXIgaGlkZGVuLgorICoKKyAqICMjIFdoeSBpcyAhaW1wb3J0YW50IHVz
ZWQ/CisgKgorICogWW91IG1heSBiZSB3b25kZXJpbmcgd2h5ICFpbXBvcnRhbnQgaXMgdXNlZCBm
b3IgdGhlIGAubmctaGlkZWAgQ1NTIGNsYXNzLiBUaGlzIGlzIGJlY2F1c2UgdGhlIGAubmctaGlk
ZWAgc2VsZWN0b3IKKyAqIGNhbiBiZSBlYXNpbHkgb3ZlcnJpZGRlbiBieSBoZWF2aWVyIHNlbGVj
dG9ycy4gRm9yIGV4YW1wbGUsIHNvbWV0aGluZyBhcyBzaW1wbGUKKyAqIGFzIGNoYW5naW5nIHRo
ZSBkaXNwbGF5IHN0eWxlIG9uIGEgSFRNTCBsaXN0IGl0ZW0gd291bGQgbWFrZSBoaWRkZW4gZWxl
bWVudHMgYXBwZWFyIHZpc2libGUuCisgKiBUaGlzIGFsc28gYmVjb21lcyBhIGJpZ2dlciBpc3N1
ZSB3aGVuIGRlYWxpbmcgd2l0aCBDU1MgZnJhbWV3b3Jrcy4KKyAqCisgKiBCeSB1c2luZyAhaW1w
b3J0YW50LCB0aGUgc2hvdyBhbmQgaGlkZSBiZWhhdmlvciB3aWxsIHdvcmsgYXMgZXhwZWN0ZWQg
ZGVzcGl0ZSBhbnkgY2xhc2ggYmV0d2VlbiBDU1Mgc2VsZWN0b3IKKyAqIHNwZWNpZmljaXR5ICh3
aGVuICFpbXBvcnRhbnQgaXNuJ3QgdXNlZCB3aXRoIGFueSBjb25mbGljdGluZyBzdHlsZXMpLiBJ
ZiBhIGRldmVsb3BlciBjaG9vc2VzIHRvIG92ZXJyaWRlIHRoZQorICogc3R5bGluZyB0byBjaGFu
Z2UgaG93IHRvIGhpZGUgYW4gZWxlbWVudCB0aGVuIGl0IGlzIGp1c3QgYSBtYXR0ZXIgb2YgdXNp
bmcgIWltcG9ydGFudCBpbiB0aGVpciBvd24gQ1NTIGNvZGUuCisgKgorICogIyMjIE92ZXJyaWRp
bmcgYC5uZy1oaWRlYAorICoKKyAqIEJ5IGRlZmF1bHQsIHRoZSBgLm5nLWhpZGVgIGNsYXNzIHdp
bGwgc3R5bGUgdGhlIGVsZW1lbnQgd2l0aCBgZGlzcGxheTogbm9uZSFpbXBvcnRhbnRgLiBJZiB5
b3Ugd2lzaCB0byBjaGFuZ2UKKyAqIHRoZSBoaWRlIGJlaGF2aW9yIHdpdGggbmdTaG93L25nSGlk
ZSB0aGVuIHRoaXMgY2FuIGJlIGFjaGlldmVkIGJ5IHJlc3RhdGluZyB0aGUgc3R5bGVzIGZvciB0
aGUgYC5uZy1oaWRlYAorICogY2xhc3MgaW4gQ1NTOgorICoKKyAqIGBgYGNzcworICogLm5nLWhp
ZGUgeworICogICAvJiM0MjsgdGhpcyBpcyBqdXN0IGFub3RoZXIgZm9ybSBvZiBoaWRpbmcgYW4g
ZWxlbWVudCAmIzQyOy8KKyAqICAgZGlzcGxheTogYmxvY2shaW1wb3J0YW50OworICogICBwb3Np
dGlvbjogYWJzb2x1dGU7CisgKiAgIHRvcDogLTk5OTlweDsKKyAqICAgbGVmdDogLTk5OTlweDsK
KyAqIH0KKyAqIGBgYAorICoKKyAqIEJ5IGRlZmF1bHQgeW91IGRvbid0IG5lZWQgdG8gb3ZlcnJp
ZGUgaW4gQ1NTIGFueXRoaW5nIGFuZCB0aGUgYW5pbWF0aW9ucyB3aWxsIHdvcmsgYXJvdW5kIHRo
ZSBkaXNwbGF5IHN0eWxlLgorICoKKyAqICMjIEEgbm90ZSBhYm91dCBhbmltYXRpb25zIHdpdGgg
YG5nSGlkZWAKKyAqCisgKiBBbmltYXRpb25zIGluIG5nU2hvdy9uZ0hpZGUgd29yayB3aXRoIHRo
ZSBzaG93IGFuZCBoaWRlIGV2ZW50cyB0aGF0IGFyZSB0cmlnZ2VyZWQgd2hlbiB0aGUgZGlyZWN0
aXZlIGV4cHJlc3Npb24KKyAqIGlzIHRydWUgYW5kIGZhbHNlLiBUaGlzIHN5c3RlbSB3b3JrcyBs
aWtlIHRoZSBhbmltYXRpb24gc3lzdGVtIHByZXNlbnQgd2l0aCBuZ0NsYXNzLCBleGNlcHQgdGhh
dCB0aGUgYC5uZy1oaWRlYAorICogQ1NTIGNsYXNzIGlzIGFkZGVkIGFuZCByZW1vdmVkIGZvciB5
b3UgaW5zdGVhZCBvZiB5b3VyIG93biBDU1MgY2xhc3MuCisgKgorICogYGBgY3NzCisgKiAvLwor
ICogLy9hIHdvcmtpbmcgZXhhbXBsZSBjYW4gYmUgZm91bmQgYXQgdGhlIGJvdHRvbSBvZiB0aGlz
IHBhZ2UKKyAqIC8vCisgKiAubXktZWxlbWVudC5uZy1oaWRlLWFkZCwgLm15LWVsZW1lbnQubmct
aGlkZS1yZW1vdmUgeworICogICB0cmFuc2l0aW9uOiAwLjVzIGxpbmVhciBhbGw7CisgKiB9Cisg
KgorICogLm15LWVsZW1lbnQubmctaGlkZS1hZGQgeyAuLi4gfQorICogLm15LWVsZW1lbnQubmct
aGlkZS1hZGQubmctaGlkZS1hZGQtYWN0aXZlIHsgLi4uIH0KKyAqIC5teS1lbGVtZW50Lm5nLWhp
ZGUtcmVtb3ZlIHsgLi4uIH0KKyAqIC5teS1lbGVtZW50Lm5nLWhpZGUtcmVtb3ZlLm5nLWhpZGUt
cmVtb3ZlLWFjdGl2ZSB7IC4uLiB9CisgKiBgYGAKKyAqCisgKiBLZWVwIGluIG1pbmQgdGhhdCwg
YXMgb2YgQW5ndWxhckpTIHZlcnNpb24gMS4zLjAtYmV0YS4xMSwgdGhlcmUgaXMgbm8gbmVlZCB0
byBjaGFuZ2UgdGhlIGRpc3BsYXkKKyAqIHByb3BlcnR5IHRvIGJsb2NrIGR1cmluZyBhbmltYXRp
b24gc3RhdGVzLS1uZ0FuaW1hdGUgd2lsbCBoYW5kbGUgdGhlIHN0eWxlIHRvZ2dsaW5nIGF1dG9t
YXRpY2FsbHkgZm9yIHlvdS4KKyAqCisgKiBAYW5pbWF0aW9ucworICogcmVtb3ZlQ2xhc3M6IGAu
bmctaGlkZWAgLSBoYXBwZW5zIGFmdGVyIHRoZSBgbmdIaWRlYCBleHByZXNzaW9uIGV2YWx1YXRl
cyB0byBhIHRydXRoeSB2YWx1ZSBhbmQganVzdCBiZWZvcmUgdGhlIGNvbnRlbnRzIGFyZSBzZXQg
dG8gaGlkZGVuCisgKiBhZGRDbGFzczogYC5uZy1oaWRlYCAtIGhhcHBlbnMgYWZ0ZXIgdGhlIGBu
Z0hpZGVgIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIGEgbm9uIHRydXRoeSB2YWx1ZSBhbmQganVz
dCBiZWZvcmUgdGhlIGNvbnRlbnRzIGFyZSBzZXQgdG8gdmlzaWJsZQorICoKKyAqIEBlbGVtZW50
IEFOWQorICogQHBhcmFtIHtleHByZXNzaW9ufSBuZ0hpZGUgSWYgdGhlIHtAbGluayBndWlkZS9l
eHByZXNzaW9uIGV4cHJlc3Npb259IGlzIHRydXRoeSB0aGVuCisgKiAgICAgdGhlIGVsZW1lbnQg
aXMgc2hvd24gb3IgaGlkZGVuIHJlc3BlY3RpdmVseS4KKyAqCisgKiBAZXhhbXBsZQorICA8ZXhh
bXBsZSBtb2R1bGU9Im5nQW5pbWF0ZSIgZGVwcz0iYW5ndWxhci1hbmltYXRlLmpzIiBhbmltYXRp
b25zPSJ0cnVlIj4KKyAgICA8ZmlsZSBuYW1lPSJpbmRleC5odG1sIj4KKyAgICAgIENsaWNrIG1l
OiA8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5nLW1vZGVsPSJjaGVja2VkIiBhcmlhLWxhYmVsPSJU
b2dnbGUgbmdTaG93Ij48YnIvPgorICAgICAgPGRpdj4KKyAgICAgICAgU2hvdzoKKyAgICAgICAg
PGRpdiBjbGFzcz0iY2hlY2stZWxlbWVudCBhbmltYXRlLWhpZGUiIG5nLXNob3c9ImNoZWNrZWQi
PgorICAgICAgICAgIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLXRodW1icy11cCI+
PC9zcGFuPiBJIHNob3cgdXAgd2hlbiB5b3VyIGNoZWNrYm94IGlzIGNoZWNrZWQuCisgICAgICAg
IDwvZGl2PgorICAgICAgPC9kaXY+CisgICAgICA8ZGl2PgorICAgICAgICBIaWRlOgorICAgICAg
ICA8ZGl2IGNsYXNzPSJjaGVjay1lbGVtZW50IGFuaW1hdGUtaGlkZSIgbmctaGlkZT0iY2hlY2tl
ZCI+CisgICAgICAgICAgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tdGh1bWJzLWRv
d24iPjwvc3Bhbj4gSSBoaWRlIHdoZW4geW91ciBjaGVja2JveCBpcyBjaGVja2VkLgorICAgICAg
ICA8L2Rpdj4KKyAgICAgIDwvZGl2PgorICAgIDwvZmlsZT4KKyAgICA8ZmlsZSBuYW1lPSJnbHlw
aGljb25zLmNzcyI+CisgICAgICBAaW1wb3J0IHVybCguLi8uLi9jb21wb25lbnRzL2Jvb3RzdHJh
cC0zLjEuMS9jc3MvYm9vdHN0cmFwLmNzcyk7CisgICAgPC9maWxlPgorICAgIDxmaWxlIG5hbWU9
ImFuaW1hdGlvbnMuY3NzIj4KKyAgICAgIC5hbmltYXRlLWhpZGUgeworICAgICAgICAtd2Via2l0
LXRyYW5zaXRpb246IGFsbCBsaW5lYXIgMC41czsKKyAgICAgICAgdHJhbnNpdGlvbjogYWxsIGxp
bmVhciAwLjVzOworICAgICAgICBsaW5lLWhlaWdodDogMjBweDsKKyAgICAgICAgb3BhY2l0eTog
MTsKKyAgICAgICAgcGFkZGluZzogMTBweDsKKyAgICAgICAgYm9yZGVyOiAxcHggc29saWQgYmxh
Y2s7CisgICAgICAgIGJhY2tncm91bmQ6IHdoaXRlOworICAgICAgfQorCisgICAgICAuYW5pbWF0
ZS1oaWRlLm5nLWhpZGUgeworICAgICAgICBsaW5lLWhlaWdodDogMDsKKyAgICAgICAgb3BhY2l0
eTogMDsKKyAgICAgICAgcGFkZGluZzogMCAxMHB4OworICAgICAgfQorCisgICAgICAuY2hlY2st
ZWxlbWVudCB7CisgICAgICAgIHBhZGRpbmc6IDEwcHg7CisgICAgICAgIGJvcmRlcjogMXB4IHNv
bGlkIGJsYWNrOworICAgICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTsKKyAgICAgIH0KKyAgICA8L2Zp
bGU+CisgICAgPGZpbGUgbmFtZT0icHJvdHJhY3Rvci5qcyIgdHlwZT0icHJvdHJhY3RvciI+Cisg
ICAgICB2YXIgdGh1bWJzVXAgPSBlbGVtZW50KGJ5LmNzcygnc3Bhbi5nbHlwaGljb24tdGh1bWJz
LXVwJykpOworICAgICAgdmFyIHRodW1ic0Rvd24gPSBlbGVtZW50KGJ5LmNzcygnc3Bhbi5nbHlw
aGljb24tdGh1bWJzLWRvd24nKSk7CisKKyAgICAgIGl0KCdzaG91bGQgY2hlY2sgbmctc2hvdyAv
IG5nLWhpZGUnLCBmdW5jdGlvbigpIHsKKyAgICAgICAgZXhwZWN0KHRodW1ic1VwLmlzRGlzcGxh
eWVkKCkpLnRvQmVGYWxzeSgpOworICAgICAgICBleHBlY3QodGh1bWJzRG93bi5pc0Rpc3BsYXll
ZCgpKS50b0JlVHJ1dGh5KCk7CisKKyAgICAgICAgZWxlbWVudChieS5tb2RlbCgnY2hlY2tlZCcp
KS5jbGljaygpOworCisgICAgICAgIGV4cGVjdCh0aHVtYnNVcC5pc0Rpc3BsYXllZCgpKS50b0Jl
VHJ1dGh5KCk7CisgICAgICAgIGV4cGVjdCh0aHVtYnNEb3duLmlzRGlzcGxheWVkKCkpLnRvQmVG
YWxzeSgpOworICAgICAgfSk7CisgICAgPC9maWxlPgorICA8L2V4YW1wbGU+CisgKi8KK3ZhciBu
Z0hpZGVEaXJlY3RpdmUgPSBbJyRhbmltYXRlJywgZnVuY3Rpb24oJGFuaW1hdGUpIHsKKyAgcmV0
dXJuIHsKKyAgICByZXN0cmljdDogJ0EnLAorICAgIG11bHRpRWxlbWVudDogdHJ1ZSwKKyAgICBs
aW5rOiBmdW5jdGlvbihzY29wZSwgZWxlbWVudCwgYXR0cikgeworICAgICAgc2NvcGUuJHdhdGNo
KGF0dHIubmdIaWRlLCBmdW5jdGlvbiBuZ0hpZGVXYXRjaEFjdGlvbih2YWx1ZSkgeworICAgICAg
ICAvLyBUaGUgY29tbWVudCBpbnNpZGUgb2YgdGhlIG5nU2hvd0RpcmVjdGl2ZSBleHBsYWlucyB3
aHkgd2UgYWRkIGFuZAorICAgICAgICAvLyByZW1vdmUgYSB0ZW1wb3JhcnkgY2xhc3MgZm9yIHRo
ZSBzaG93L2hpZGUgYW5pbWF0aW9uCisgICAgICAgICRhbmltYXRlW3ZhbHVlID8gJ2FkZENsYXNz
JyA6ICdyZW1vdmVDbGFzcyddKGVsZW1lbnQsTkdfSElERV9DTEFTUywgeworICAgICAgICAgIHRl
bXBDbGFzc2VzOiBOR19ISURFX0lOX1BST0dSRVNTX0NMQVNTCisgICAgICAgIH0pOworICAgICAg
fSk7CisgICAgfQorICB9OworfV07CisKKy8qKgorICogQG5nZG9jIGRpcmVjdGl2ZQorICogQG5h
bWUgbmdTdHlsZQorICogQHJlc3RyaWN0IEFDCisgKgorICogQGRlc2NyaXB0aW9uCisgKiBUaGUg
YG5nU3R5bGVgIGRpcmVjdGl2ZSBhbGxvd3MgeW91IHRvIHNldCBDU1Mgc3R5bGUgb24gYW4gSFRN
TCBlbGVtZW50IGNvbmRpdGlvbmFsbHkuCisgKgorICogQGVsZW1lbnQgQU5ZCisgKiBAcGFyYW0g
e2V4cHJlc3Npb259IG5nU3R5bGUKKyAqCisgKiB7QGxpbmsgZ3VpZGUvZXhwcmVzc2lvbiBFeHBy
ZXNzaW9ufSB3aGljaCBldmFscyB0byBhbgorICogb2JqZWN0IHdob3NlIGtleXMgYXJlIENTUyBz
dHlsZSBuYW1lcyBhbmQgdmFsdWVzIGFyZSBjb3JyZXNwb25kaW5nIHZhbHVlcyBmb3IgdGhvc2Ug
Q1NTCisgKiBrZXlzLgorICoKKyAqIFNpbmNlIHNvbWUgQ1NTIHN0eWxlIG5hbWVzIGFyZSBub3Qg
dmFsaWQga2V5cyBmb3IgYW4gb2JqZWN0LCB0aGV5IG11c3QgYmUgcXVvdGVkLgorICogU2VlIHRo
ZSAnYmFja2dyb3VuZC1jb2xvcicgc3R5bGUgaW4gdGhlIGV4YW1wbGUgYmVsb3cuCisgKgorICog
QGV4YW1wbGUKKyAgIDxleGFtcGxlPgorICAgICA8ZmlsZSBuYW1lPSJpbmRleC5odG1sIj4KKyAg
ICAgICAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9InNldCBjb2xvciIgbmctY2xpY2s9Im15
U3R5bGU9e2NvbG9yOidyZWQnfSI+CisgICAgICAgIDxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVl
PSJzZXQgYmFja2dyb3VuZCIgbmctY2xpY2s9Im15U3R5bGU9eydiYWNrZ3JvdW5kLWNvbG9yJzon
Ymx1ZSd9Ij4KKyAgICAgICAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9ImNsZWFyIiBuZy1j
bGljaz0ibXlTdHlsZT17fSI+CisgICAgICAgIDxici8+CisgICAgICAgIDxzcGFuIG5nLXN0eWxl
PSJteVN0eWxlIj5TYW1wbGUgVGV4dDwvc3Bhbj4KKyAgICAgICAgPHByZT5teVN0eWxlPXt7bXlT
dHlsZX19PC9wcmU+CisgICAgIDwvZmlsZT4KKyAgICAgPGZpbGUgbmFtZT0ic3R5bGUuY3NzIj4K
KyAgICAgICBzcGFuIHsKKyAgICAgICAgIGNvbG9yOiBibGFjazsKKyAgICAgICB9CisgICAgIDwv
ZmlsZT4KKyAgICAgPGZpbGUgbmFtZT0icHJvdHJhY3Rvci5qcyIgdHlwZT0icHJvdHJhY3RvciI+
CisgICAgICAgdmFyIGNvbG9yU3BhbiA9IGVsZW1lbnQoYnkuY3NzKCdzcGFuJykpOworCisgICAg
ICAgaXQoJ3Nob3VsZCBjaGVjayBuZy1zdHlsZScsIGZ1bmN0aW9uKCkgeworICAgICAgICAgZXhw
ZWN0KGNvbG9yU3Bhbi5nZXRDc3NWYWx1ZSgnY29sb3InKSkudG9CZSgncmdiYSgwLCAwLCAwLCAx
KScpOworICAgICAgICAgZWxlbWVudChieS5jc3MoJ2lucHV0W3ZhbHVlPVwnc2V0IGNvbG9yXCdd
JykpLmNsaWNrKCk7CisgICAgICAgICBleHBlY3QoY29sb3JTcGFuLmdldENzc1ZhbHVlKCdjb2xv
cicpKS50b0JlKCdyZ2JhKDI1NSwgMCwgMCwgMSknKTsKKyAgICAgICAgIGVsZW1lbnQoYnkuY3Nz
KCdpbnB1dFt2YWx1ZT1jbGVhcl0nKSkuY2xpY2soKTsKKyAgICAgICAgIGV4cGVjdChjb2xvclNw
YW4uZ2V0Q3NzVmFsdWUoJ2NvbG9yJykpLnRvQmUoJ3JnYmEoMCwgMCwgMCwgMSknKTsKKyAgICAg
ICB9KTsKKyAgICAgPC9maWxlPgorICAgPC9leGFtcGxlPgorICovCit2YXIgbmdTdHlsZURpcmVj
dGl2ZSA9IG5nRGlyZWN0aXZlKGZ1bmN0aW9uKHNjb3BlLCBlbGVtZW50LCBhdHRyKSB7CisgIHNj
b3BlLiR3YXRjaChhdHRyLm5nU3R5bGUsIGZ1bmN0aW9uIG5nU3R5bGVXYXRjaEFjdGlvbihuZXdT
dHlsZXMsIG9sZFN0eWxlcykgeworICAgIGlmIChvbGRTdHlsZXMgJiYgKG5ld1N0eWxlcyAhPT0g
b2xkU3R5bGVzKSkgeworICAgICAgZm9yRWFjaChvbGRTdHlsZXMsIGZ1bmN0aW9uKHZhbCwgc3R5
bGUpIHsgZWxlbWVudC5jc3Moc3R5bGUsICcnKTt9KTsKKyAgICB9CisgICAgaWYgKG5ld1N0eWxl
cykgZWxlbWVudC5jc3MobmV3U3R5bGVzKTsKKyAgfSwgdHJ1ZSk7Cit9KTsKKworLyoqCisgKiBA
bmdkb2MgZGlyZWN0aXZlCisgKiBAbmFtZSBuZ1N3aXRjaAorICogQHJlc3RyaWN0IEVBCisgKgor
ICogQGRlc2NyaXB0aW9uCisgKiBUaGUgYG5nU3dpdGNoYCBkaXJlY3RpdmUgaXMgdXNlZCB0byBj
b25kaXRpb25hbGx5IHN3YXAgRE9NIHN0cnVjdHVyZSBvbiB5b3VyIHRlbXBsYXRlIGJhc2VkIG9u
IGEgc2NvcGUgZXhwcmVzc2lvbi4KKyAqIEVsZW1lbnRzIHdpdGhpbiBgbmdTd2l0Y2hgIGJ1dCB3
aXRob3V0IGBuZ1N3aXRjaFdoZW5gIG9yIGBuZ1N3aXRjaERlZmF1bHRgIGRpcmVjdGl2ZXMgd2ls
bCBiZSBwcmVzZXJ2ZWQgYXQgdGhlIGxvY2F0aW9uCisgKiBhcyBzcGVjaWZpZWQgaW4gdGhlIHRl
bXBsYXRlLgorICoKKyAqIFRoZSBkaXJlY3RpdmUgaXRzZWxmIHdvcmtzIHNpbWlsYXIgdG8gbmdJ
bmNsdWRlLCBob3dldmVyLCBpbnN0ZWFkIG9mIGRvd25sb2FkaW5nIHRlbXBsYXRlIGNvZGUgKG9y
IGxvYWRpbmcgaXQKKyAqIGZyb20gdGhlIHRlbXBsYXRlIGNhY2hlKSwgYG5nU3dpdGNoYCBzaW1w
bHkgY2hvb3NlcyBvbmUgb2YgdGhlIG5lc3RlZCBlbGVtZW50cyBhbmQgbWFrZXMgaXQgdmlzaWJs
ZSBiYXNlZCBvbiB3aGljaCBlbGVtZW50CisgKiBtYXRjaGVzIHRoZSB2YWx1ZSBvYnRhaW5lZCBm
cm9tIHRoZSBldmFsdWF0ZWQgZXhwcmVzc2lvbi4gSW4gb3RoZXIgd29yZHMsIHlvdSBkZWZpbmUg
YSBjb250YWluZXIgZWxlbWVudAorICogKHdoZXJlIHlvdSBwbGFjZSB0aGUgZGlyZWN0aXZlKSwg
cGxhY2UgYW4gZXhwcmVzc2lvbiBvbiB0aGUgKipgb249Ii4uLiJgIGF0dHJpYnV0ZSoqCisgKiAo
b3IgdGhlICoqYG5nLXN3aXRjaD0iLi4uImAgYXR0cmlidXRlKiopLCBkZWZpbmUgYW55IGlubmVy
IGVsZW1lbnRzIGluc2lkZSBvZiB0aGUgZGlyZWN0aXZlIGFuZCBwbGFjZQorICogYSB3aGVuIGF0
dHJpYnV0ZSBwZXIgZWxlbWVudC4gVGhlIHdoZW4gYXR0cmlidXRlIGlzIHVzZWQgdG8gaW5mb3Jt
IG5nU3dpdGNoIHdoaWNoIGVsZW1lbnQgdG8gZGlzcGxheSB3aGVuIHRoZSBvbgorICogZXhwcmVz
c2lvbiBpcyBldmFsdWF0ZWQuIElmIGEgbWF0Y2hpbmcgZXhwcmVzc2lvbiBpcyBub3QgZm91bmQg
dmlhIGEgd2hlbiBhdHRyaWJ1dGUgdGhlbiBhbiBlbGVtZW50IHdpdGggdGhlIGRlZmF1bHQKKyAq
IGF0dHJpYnV0ZSBpcyBkaXNwbGF5ZWQuCisgKgorICogPGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQt
aW5mbyI+CisgKiBCZSBhd2FyZSB0aGF0IHRoZSBhdHRyaWJ1dGUgdmFsdWVzIHRvIG1hdGNoIGFn
YWluc3QgY2Fubm90IGJlIGV4cHJlc3Npb25zLiBUaGV5IGFyZSBpbnRlcnByZXRlZAorICogYXMg
bGl0ZXJhbCBzdHJpbmcgdmFsdWVzIHRvIG1hdGNoIGFnYWluc3QuCisgKiBGb3IgZXhhbXBsZSwg
Kipgbmctc3dpdGNoLXdoZW49InNvbWVWYWwiYCoqIHdpbGwgbWF0Y2ggYWdhaW5zdCB0aGUgc3Ry
aW5nIGAic29tZVZhbCJgIG5vdCBhZ2FpbnN0IHRoZQorICogdmFsdWUgb2YgdGhlIGV4cHJlc3Np
b24gYCRzY29wZS5zb21lVmFsYC4KKyAqIDwvZGl2PgorCisgKiBAYW5pbWF0aW9ucworICogZW50
ZXIgLSBoYXBwZW5zIGFmdGVyIHRoZSBuZ1N3aXRjaCBjb250ZW50cyBjaGFuZ2UgYW5kIHRoZSBt
YXRjaGVkIGNoaWxkIGVsZW1lbnQgaXMgcGxhY2VkIGluc2lkZSB0aGUgY29udGFpbmVyCisgKiBs
ZWF2ZSAtIGhhcHBlbnMganVzdCBhZnRlciB0aGUgbmdTd2l0Y2ggY29udGVudHMgY2hhbmdlIGFu
ZCBqdXN0IGJlZm9yZSB0aGUgZm9ybWVyIGNvbnRlbnRzIGFyZSByZW1vdmVkIGZyb20gdGhlIERP
TQorICoKKyAqIEB1c2FnZQorICoKKyAqIGBgYAorICogPEFOWSBuZy1zd2l0Y2g9ImV4cHJlc3Np
b24iPgorICogICA8QU5ZIG5nLXN3aXRjaC13aGVuPSJtYXRjaFZhbHVlMSI+Li4uPC9BTlk+Cisg
KiAgIDxBTlkgbmctc3dpdGNoLXdoZW49Im1hdGNoVmFsdWUyIj4uLi48L0FOWT4KKyAqICAgPEFO
WSBuZy1zd2l0Y2gtZGVmYXVsdD4uLi48L0FOWT4KKyAqIDwvQU5ZPgorICogYGBgCisgKgorICoK
KyAqIEBzY29wZQorICogQHByaW9yaXR5IDEyMDAKKyAqIEBwYXJhbSB7Kn0gbmdTd2l0Y2h8b24g
ZXhwcmVzc2lvbiB0byBtYXRjaCBhZ2FpbnN0IDxjb2RlPm5nLXN3aXRjaC13aGVuPC9jb2RlPi4K
KyAqIE9uIGNoaWxkIGVsZW1lbnRzIGFkZDoKKyAqCisgKiAqIGBuZ1N3aXRjaFdoZW5gOiB0aGUg
Y2FzZSBzdGF0ZW1lbnQgdG8gbWF0Y2ggYWdhaW5zdC4gSWYgbWF0Y2ggdGhlbiB0aGlzCisgKiAg
IGNhc2Ugd2lsbCBiZSBkaXNwbGF5ZWQuIElmIHRoZSBzYW1lIG1hdGNoIGFwcGVhcnMgbXVsdGlw
bGUgdGltZXMsIGFsbCB0aGUKKyAqICAgZWxlbWVudHMgd2lsbCBiZSBkaXNwbGF5ZWQuCisgKiAq
IGBuZ1N3aXRjaERlZmF1bHRgOiB0aGUgZGVmYXVsdCBjYXNlIHdoZW4gbm8gb3RoZXIgY2FzZSBt
YXRjaC4gSWYgdGhlcmUKKyAqICAgYXJlIG11bHRpcGxlIGRlZmF1bHQgY2FzZXMsIGFsbCBvZiB0
aGVtIHdpbGwgYmUgZGlzcGxheWVkIHdoZW4gbm8gb3RoZXIKKyAqICAgY2FzZSBtYXRjaC4KKyAq
CisgKgorICogQGV4YW1wbGUKKyAgPGV4YW1wbGUgbW9kdWxlPSJzd2l0Y2hFeGFtcGxlIiBkZXBz
PSJhbmd1bGFyLWFuaW1hdGUuanMiIGFuaW1hdGlvbnM9InRydWUiPgorICAgIDxmaWxlIG5hbWU9
ImluZGV4Lmh0bWwiPgorICAgICAgPGRpdiBuZy1jb250cm9sbGVyPSJFeGFtcGxlQ29udHJvbGxl
ciI+CisgICAgICAgIDxzZWxlY3QgbmctbW9kZWw9InNlbGVjdGlvbiIgbmctb3B0aW9ucz0iaXRl
bSBmb3IgaXRlbSBpbiBpdGVtcyI+CisgICAgICAgIDwvc2VsZWN0PgorICAgICAgICA8Y29kZT5z
ZWxlY3Rpb249e3tzZWxlY3Rpb259fTwvY29kZT4KKyAgICAgICAgPGhyLz4KKyAgICAgICAgPGRp
diBjbGFzcz0iYW5pbWF0ZS1zd2l0Y2gtY29udGFpbmVyIgorICAgICAgICAgIG5nLXN3aXRjaCBv
bj0ic2VsZWN0aW9uIj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFuaW1hdGUtc3dpdGNoIiBu
Zy1zd2l0Y2gtd2hlbj0ic2V0dGluZ3MiPlNldHRpbmdzIERpdjwvZGl2PgorICAgICAgICAgICAg
PGRpdiBjbGFzcz0iYW5pbWF0ZS1zd2l0Y2giIG5nLXN3aXRjaC13aGVuPSJob21lIj5Ib21lIFNw
YW48L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFuaW1hdGUtc3dpdGNoIiBuZy1zd2l0
Y2gtZGVmYXVsdD5kZWZhdWx0PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgICAgPC9kaXY+Cisg
ICAgPC9maWxlPgorICAgIDxmaWxlIG5hbWU9InNjcmlwdC5qcyI+CisgICAgICBhbmd1bGFyLm1v
ZHVsZSgnc3dpdGNoRXhhbXBsZScsIFsnbmdBbmltYXRlJ10pCisgICAgICAgIC5jb250cm9sbGVy
KCdFeGFtcGxlQ29udHJvbGxlcicsIFsnJHNjb3BlJywgZnVuY3Rpb24oJHNjb3BlKSB7CisgICAg
ICAgICAgJHNjb3BlLml0ZW1zID0gWydzZXR0aW5ncycsICdob21lJywgJ290aGVyJ107CisgICAg
ICAgICAgJHNjb3BlLnNlbGVjdGlvbiA9ICRzY29wZS5pdGVtc1swXTsKKyAgICAgICAgfV0pOwor
ICAgIDwvZmlsZT4KKyAgICA8ZmlsZSBuYW1lPSJhbmltYXRpb25zLmNzcyI+CisgICAgICAuYW5p
bWF0ZS1zd2l0Y2gtY29udGFpbmVyIHsKKyAgICAgICAgcG9zaXRpb246cmVsYXRpdmU7CisgICAg
ICAgIGJhY2tncm91bmQ6d2hpdGU7CisgICAgICAgIGJvcmRlcjoxcHggc29saWQgYmxhY2s7Cisg
ICAgICAgIGhlaWdodDo0MHB4OworICAgICAgICBvdmVyZmxvdzpoaWRkZW47CisgICAgICB9CisK
KyAgICAgIC5hbmltYXRlLXN3aXRjaCB7CisgICAgICAgIHBhZGRpbmc6MTBweDsKKyAgICAgIH0K
KworICAgICAgLmFuaW1hdGUtc3dpdGNoLm5nLWFuaW1hdGUgeworICAgICAgICAtd2Via2l0LXRy
YW5zaXRpb246YWxsIGN1YmljLWJlemllcigwLjI1MCwgMC40NjAsIDAuNDUwLCAwLjk0MCkgMC41
czsKKyAgICAgICAgdHJhbnNpdGlvbjphbGwgY3ViaWMtYmV6aWVyKDAuMjUwLCAwLjQ2MCwgMC40
NTAsIDAuOTQwKSAwLjVzOworCisgICAgICAgIHBvc2l0aW9uOmFic29sdXRlOworICAgICAgICB0
b3A6MDsKKyAgICAgICAgbGVmdDowOworICAgICAgICByaWdodDowOworICAgICAgICBib3R0b206
MDsKKyAgICAgIH0KKworICAgICAgLmFuaW1hdGUtc3dpdGNoLm5nLWxlYXZlLm5nLWxlYXZlLWFj
dGl2ZSwKKyAgICAgIC5hbmltYXRlLXN3aXRjaC5uZy1lbnRlciB7CisgICAgICAgIHRvcDotNTBw
eDsKKyAgICAgIH0KKyAgICAgIC5hbmltYXRlLXN3aXRjaC5uZy1sZWF2ZSwKKyAgICAgIC5hbmlt
YXRlLXN3aXRjaC5uZy1lbnRlci5uZy1lbnRlci1hY3RpdmUgeworICAgICAgICB0b3A6MDsKKyAg
ICAgIH0KKyAgICA8L2ZpbGU+CisgICAgPGZpbGUgbmFtZT0icHJvdHJhY3Rvci5qcyIgdHlwZT0i
cHJvdHJhY3RvciI+CisgICAgICB2YXIgc3dpdGNoRWxlbSA9IGVsZW1lbnQoYnkuY3NzKCdbbmct
c3dpdGNoXScpKTsKKyAgICAgIHZhciBzZWxlY3QgPSBlbGVtZW50KGJ5Lm1vZGVsKCdzZWxlY3Rp
b24nKSk7CisKKyAgICAgIGl0KCdzaG91bGQgc3RhcnQgaW4gc2V0dGluZ3MnLCBmdW5jdGlvbigp
IHsKKyAgICAgICAgZXhwZWN0KHN3aXRjaEVsZW0uZ2V0VGV4dCgpKS50b01hdGNoKC9TZXR0aW5n
cyBEaXYvKTsKKyAgICAgIH0pOworICAgICAgaXQoJ3Nob3VsZCBjaGFuZ2UgdG8gaG9tZScsIGZ1
bmN0aW9uKCkgeworICAgICAgICBzZWxlY3QuYWxsKGJ5LmNzcygnb3B0aW9uJykpLmdldCgxKS5j
bGljaygpOworICAgICAgICBleHBlY3Qoc3dpdGNoRWxlbS5nZXRUZXh0KCkpLnRvTWF0Y2goL0hv
bWUgU3Bhbi8pOworICAgICAgfSk7CisgICAgICBpdCgnc2hvdWxkIHNlbGVjdCBkZWZhdWx0Jywg
ZnVuY3Rpb24oKSB7CisgICAgICAgIHNlbGVjdC5hbGwoYnkuY3NzKCdvcHRpb24nKSkuZ2V0KDIp
LmNsaWNrKCk7CisgICAgICAgIGV4cGVjdChzd2l0Y2hFbGVtLmdldFRleHQoKSkudG9NYXRjaCgv
ZGVmYXVsdC8pOworICAgICAgfSk7CisgICAgPC9maWxlPgorICA8L2V4YW1wbGU+CisgKi8KK3Zh
ciBuZ1N3aXRjaERpcmVjdGl2ZSA9IFsnJGFuaW1hdGUnLCBmdW5jdGlvbigkYW5pbWF0ZSkgewor
ICByZXR1cm4geworICAgIHJlcXVpcmU6ICduZ1N3aXRjaCcsCisKKyAgICAvLyBhc2tzIGZvciAk
c2NvcGUgdG8gZm9vbCB0aGUgQkMgY29udHJvbGxlciBtb2R1bGUKKyAgICBjb250cm9sbGVyOiBb
JyRzY29wZScsIGZ1bmN0aW9uIG5nU3dpdGNoQ29udHJvbGxlcigpIHsKKyAgICAgdGhpcy5jYXNl
cyA9IHt9OworICAgIH1dLAorICAgIGxpbms6IGZ1bmN0aW9uKHNjb3BlLCBlbGVtZW50LCBhdHRy
LCBuZ1N3aXRjaENvbnRyb2xsZXIpIHsKKyAgICAgIHZhciB3YXRjaEV4cHIgPSBhdHRyLm5nU3dp
dGNoIHx8IGF0dHIub24sCisgICAgICAgICAgc2VsZWN0ZWRUcmFuc2NsdWRlcyA9IFtdLAorICAg
ICAgICAgIHNlbGVjdGVkRWxlbWVudHMgPSBbXSwKKyAgICAgICAgICBwcmV2aW91c0xlYXZlQW5p
bWF0aW9ucyA9IFtdLAorICAgICAgICAgIHNlbGVjdGVkU2NvcGVzID0gW107CisKKyAgICAgIHZh
ciBzcGxpY2VGYWN0b3J5ID0gZnVuY3Rpb24oYXJyYXksIGluZGV4KSB7CisgICAgICAgICAgcmV0
dXJuIGZ1bmN0aW9uKCkgeyBhcnJheS5zcGxpY2UoaW5kZXgsIDEpOyB9OworICAgICAgfTsKKwor
ICAgICAgc2NvcGUuJHdhdGNoKHdhdGNoRXhwciwgZnVuY3Rpb24gbmdTd2l0Y2hXYXRjaEFjdGlv
bih2YWx1ZSkgeworICAgICAgICB2YXIgaSwgaWk7CisgICAgICAgIGZvciAoaSA9IDAsIGlpID0g
cHJldmlvdXNMZWF2ZUFuaW1hdGlvbnMubGVuZ3RoOyBpIDwgaWk7ICsraSkgeworICAgICAgICAg
ICRhbmltYXRlLmNhbmNlbChwcmV2aW91c0xlYXZlQW5pbWF0aW9uc1tpXSk7CisgICAgICAgIH0K
KyAgICAgICAgcHJldmlvdXNMZWF2ZUFuaW1hdGlvbnMubGVuZ3RoID0gMDsKKworICAgICAgICBm
b3IgKGkgPSAwLCBpaSA9IHNlbGVjdGVkU2NvcGVzLmxlbmd0aDsgaSA8IGlpOyArK2kpIHsKKyAg
ICAgICAgICB2YXIgc2VsZWN0ZWQgPSBnZXRCbG9ja05vZGVzKHNlbGVjdGVkRWxlbWVudHNbaV0u
Y2xvbmUpOworICAgICAgICAgIHNlbGVjdGVkU2NvcGVzW2ldLiRkZXN0cm95KCk7CisgICAgICAg
ICAgdmFyIHByb21pc2UgPSBwcmV2aW91c0xlYXZlQW5pbWF0aW9uc1tpXSA9ICRhbmltYXRlLmxl
YXZlKHNlbGVjdGVkKTsKKyAgICAgICAgICBwcm9taXNlLnRoZW4oc3BsaWNlRmFjdG9yeShwcmV2
aW91c0xlYXZlQW5pbWF0aW9ucywgaSkpOworICAgICAgICB9CisKKyAgICAgICAgc2VsZWN0ZWRF
bGVtZW50cy5sZW5ndGggPSAwOworICAgICAgICBzZWxlY3RlZFNjb3Blcy5sZW5ndGggPSAwOwor
CisgICAgICAgIGlmICgoc2VsZWN0ZWRUcmFuc2NsdWRlcyA9IG5nU3dpdGNoQ29udHJvbGxlci5j
YXNlc1snIScgKyB2YWx1ZV0gfHwgbmdTd2l0Y2hDb250cm9sbGVyLmNhc2VzWyc/J10pKSB7Cisg
ICAgICAgICAgZm9yRWFjaChzZWxlY3RlZFRyYW5zY2x1ZGVzLCBmdW5jdGlvbihzZWxlY3RlZFRy
YW5zY2x1ZGUpIHsKKyAgICAgICAgICAgIHNlbGVjdGVkVHJhbnNjbHVkZS50cmFuc2NsdWRlKGZ1
bmN0aW9uKGNhc2VFbGVtZW50LCBzZWxlY3RlZFNjb3BlKSB7CisgICAgICAgICAgICAgIHNlbGVj
dGVkU2NvcGVzLnB1c2goc2VsZWN0ZWRTY29wZSk7CisgICAgICAgICAgICAgIHZhciBhbmNob3Ig
PSBzZWxlY3RlZFRyYW5zY2x1ZGUuZWxlbWVudDsKKyAgICAgICAgICAgICAgY2FzZUVsZW1lbnRb
Y2FzZUVsZW1lbnQubGVuZ3RoKytdID0gZG9jdW1lbnQuY3JlYXRlQ29tbWVudCgnIGVuZCBuZ1N3
aXRjaFdoZW46ICcpOworICAgICAgICAgICAgICB2YXIgYmxvY2sgPSB7IGNsb25lOiBjYXNlRWxl
bWVudCB9OworCisgICAgICAgICAgICAgIHNlbGVjdGVkRWxlbWVudHMucHVzaChibG9jayk7Cisg
ICAgICAgICAgICAgICRhbmltYXRlLmVudGVyKGNhc2VFbGVtZW50LCBhbmNob3IucGFyZW50KCks
IGFuY2hvcik7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAg
ICAgfSk7CisgICAgfQorICB9OworfV07CisKK3ZhciBuZ1N3aXRjaFdoZW5EaXJlY3RpdmUgPSBu
Z0RpcmVjdGl2ZSh7CisgIHRyYW5zY2x1ZGU6ICdlbGVtZW50JywKKyAgcHJpb3JpdHk6IDEyMDAs
CisgIHJlcXVpcmU6ICdebmdTd2l0Y2gnLAorICBtdWx0aUVsZW1lbnQ6IHRydWUsCisgIGxpbms6
IGZ1bmN0aW9uKHNjb3BlLCBlbGVtZW50LCBhdHRycywgY3RybCwgJHRyYW5zY2x1ZGUpIHsKKyAg
ICBjdHJsLmNhc2VzWychJyArIGF0dHJzLm5nU3dpdGNoV2hlbl0gPSAoY3RybC5jYXNlc1snIScg
KyBhdHRycy5uZ1N3aXRjaFdoZW5dIHx8IFtdKTsKKyAgICBjdHJsLmNhc2VzWychJyArIGF0dHJz
Lm5nU3dpdGNoV2hlbl0ucHVzaCh7IHRyYW5zY2x1ZGU6ICR0cmFuc2NsdWRlLCBlbGVtZW50OiBl
bGVtZW50IH0pOworICB9Cit9KTsKKwordmFyIG5nU3dpdGNoRGVmYXVsdERpcmVjdGl2ZSA9IG5n
RGlyZWN0aXZlKHsKKyAgdHJhbnNjbHVkZTogJ2VsZW1lbnQnLAorICBwcmlvcml0eTogMTIwMCwK
KyAgcmVxdWlyZTogJ15uZ1N3aXRjaCcsCisgIG11bHRpRWxlbWVudDogdHJ1ZSwKKyAgbGluazog
ZnVuY3Rpb24oc2NvcGUsIGVsZW1lbnQsIGF0dHIsIGN0cmwsICR0cmFuc2NsdWRlKSB7CisgICAg
Y3RybC5jYXNlc1snPyddID0gKGN0cmwuY2FzZXNbJz8nXSB8fCBbXSk7CisgICAgY3RybC5jYXNl
c1snPyddLnB1c2goeyB0cmFuc2NsdWRlOiAkdHJhbnNjbHVkZSwgZWxlbWVudDogZWxlbWVudCB9
KTsKKyAgIH0KK30pOworCisvKioKKyAqIEBuZ2RvYyBkaXJlY3RpdmUKKyAqIEBuYW1lIG5nVHJh
bnNjbHVkZQorICogQHJlc3RyaWN0IEVBQworICoKKyAqIEBkZXNjcmlwdGlvbgorICogRGlyZWN0
aXZlIHRoYXQgbWFya3MgdGhlIGluc2VydGlvbiBwb2ludCBmb3IgdGhlIHRyYW5zY2x1ZGVkIERP
TSBvZiB0aGUgbmVhcmVzdCBwYXJlbnQgZGlyZWN0aXZlIHRoYXQgdXNlcyB0cmFuc2NsdXNpb24u
CisgKgorICogQW55IGV4aXN0aW5nIGNvbnRlbnQgb2YgdGhlIGVsZW1lbnQgdGhhdCB0aGlzIGRp
cmVjdGl2ZSBpcyBwbGFjZWQgb24gd2lsbCBiZSByZW1vdmVkIGJlZm9yZSB0aGUgdHJhbnNjbHVk
ZWQgY29udGVudCBpcyBpbnNlcnRlZC4KKyAqCisgKiBAZWxlbWVudCBBTlkKKyAqCisgKiBAZXhh
bXBsZQorICAgPGV4YW1wbGUgbW9kdWxlPSJ0cmFuc2NsdWRlRXhhbXBsZSI+CisgICAgIDxmaWxl
IG5hbWU9ImluZGV4Lmh0bWwiPgorICAgICAgIDxzY3JpcHQ+CisgICAgICAgICBhbmd1bGFyLm1v
ZHVsZSgndHJhbnNjbHVkZUV4YW1wbGUnLCBbXSkKKyAgICAgICAgICAuZGlyZWN0aXZlKCdwYW5l
JywgZnVuY3Rpb24oKXsKKyAgICAgICAgICAgICByZXR1cm4geworICAgICAgICAgICAgICAgcmVz
dHJpY3Q6ICdFJywKKyAgICAgICAgICAgICAgIHRyYW5zY2x1ZGU6IHRydWUsCisgICAgICAgICAg
ICAgICBzY29wZTogeyB0aXRsZTonQCcgfSwKKyAgICAgICAgICAgICAgIHRlbXBsYXRlOiAnPGRp
diBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgYmxhY2s7Ij4nICsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICc8ZGl2IHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiBncmF5Ij57e3RpdGxlfX08
L2Rpdj4nICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICc8bmctdHJhbnNjbHVkZT48L25n
LXRyYW5zY2x1ZGU+JyArCisgICAgICAgICAgICAgICAgICAgICAgICAgJzwvZGl2PicKKyAgICAg
ICAgICAgICB9OworICAgICAgICAgfSkKKyAgICAgICAgIC5jb250cm9sbGVyKCdFeGFtcGxlQ29u
dHJvbGxlcicsIFsnJHNjb3BlJywgZnVuY3Rpb24oJHNjb3BlKSB7CisgICAgICAgICAgICRzY29w
ZS50aXRsZSA9ICdMb3JlbSBJcHN1bSc7CisgICAgICAgICAgICRzY29wZS50ZXh0ID0gJ05lcXVl
IHBvcnJvIHF1aXNxdWFtIGVzdCBxdWkgZG9sb3JlbSBpcHN1bSBxdWlhIGRvbG9yLi4uJzsKKyAg
ICAgICAgIH1dKTsKKyAgICAgICA8L3NjcmlwdD4KKyAgICAgICA8ZGl2IG5nLWNvbnRyb2xsZXI9
IkV4YW1wbGVDb250cm9sbGVyIj4KKyAgICAgICAgIDxpbnB1dCBuZy1tb2RlbD0idGl0bGUiIGFy
aWEtbGFiZWw9InRpdGxlIj4gPGJyLz4KKyAgICAgICAgIDx0ZXh0YXJlYSBuZy1tb2RlbD0idGV4
dCIgYXJpYS1sYWJlbD0idGV4dCI+PC90ZXh0YXJlYT4gPGJyLz4KKyAgICAgICAgIDxwYW5lIHRp
dGxlPSJ7e3RpdGxlfX0iPnt7dGV4dH19PC9wYW5lPgorICAgICAgIDwvZGl2PgorICAgICA8L2Zp
bGU+CisgICAgIDxmaWxlIG5hbWU9InByb3RyYWN0b3IuanMiIHR5cGU9InByb3RyYWN0b3IiPgor
ICAgICAgICBpdCgnc2hvdWxkIGhhdmUgdHJhbnNjbHVkZWQnLCBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICB2YXIgdGl0bGVFbGVtZW50ID0gZWxlbWVudChieS5tb2RlbCgndGl0bGUnKSk7CisgICAg
ICAgICAgdGl0bGVFbGVtZW50LmNsZWFyKCk7CisgICAgICAgICAgdGl0bGVFbGVtZW50LnNlbmRL
ZXlzKCdUSVRMRScpOworICAgICAgICAgIHZhciB0ZXh0RWxlbWVudCA9IGVsZW1lbnQoYnkubW9k
ZWwoJ3RleHQnKSk7CisgICAgICAgICAgdGV4dEVsZW1lbnQuY2xlYXIoKTsKKyAgICAgICAgICB0
ZXh0RWxlbWVudC5zZW5kS2V5cygnVEVYVCcpOworICAgICAgICAgIGV4cGVjdChlbGVtZW50KGJ5
LmJpbmRpbmcoJ3RpdGxlJykpLmdldFRleHQoKSkudG9FcXVhbCgnVElUTEUnKTsKKyAgICAgICAg
ICBleHBlY3QoZWxlbWVudChieS5iaW5kaW5nKCd0ZXh0JykpLmdldFRleHQoKSkudG9FcXVhbCgn
VEVYVCcpOworICAgICAgICB9KTsKKyAgICAgPC9maWxlPgorICAgPC9leGFtcGxlPgorICoKKyAq
LwordmFyIG5nVHJhbnNjbHVkZURpcmVjdGl2ZSA9IG5nRGlyZWN0aXZlKHsKKyAgcmVzdHJpY3Q6
ICdFQUMnLAorICBsaW5rOiBmdW5jdGlvbigkc2NvcGUsICRlbGVtZW50LCAkYXR0cnMsIGNvbnRy
b2xsZXIsICR0cmFuc2NsdWRlKSB7CisgICAgaWYgKCEkdHJhbnNjbHVkZSkgeworICAgICAgdGhy
b3cgbWluRXJyKCduZ1RyYW5zY2x1ZGUnKSgnb3JwaGFuJywKKyAgICAgICAnSWxsZWdhbCB1c2Ug
b2YgbmdUcmFuc2NsdWRlIGRpcmVjdGl2ZSBpbiB0aGUgdGVtcGxhdGUhICcgKworICAgICAgICdO
byBwYXJlbnQgZGlyZWN0aXZlIHRoYXQgcmVxdWlyZXMgYSB0cmFuc2NsdXNpb24gZm91bmQuICcg
KworICAgICAgICdFbGVtZW50OiB7MH0nLAorICAgICAgIHN0YXJ0aW5nVGFnKCRlbGVtZW50KSk7
CisgICAgfQorCisgICAgJHRyYW5zY2x1ZGUoZnVuY3Rpb24oY2xvbmUpIHsKKyAgICAgICRlbGVt
ZW50LmVtcHR5KCk7CisgICAgICAkZWxlbWVudC5hcHBlbmQoY2xvbmUpOworICAgIH0pOworICB9
Cit9KTsKKworLyoqCisgKiBAbmdkb2MgZGlyZWN0aXZlCisgKiBAbmFtZSBzY3JpcHQKKyAqIEBy
ZXN0cmljdCBFCisgKgorICogQGRlc2NyaXB0aW9uCisgKiBMb2FkIHRoZSBjb250ZW50IG9mIGEg
YDxzY3JpcHQ+YCBlbGVtZW50IGludG8ge0BsaW5rIG5nLiR0ZW1wbGF0ZUNhY2hlIGAkdGVtcGxh
dGVDYWNoZWB9LCBzbyB0aGF0IHRoZQorICogdGVtcGxhdGUgY2FuIGJlIHVzZWQgYnkge0BsaW5r
IG5nLmRpcmVjdGl2ZTpuZ0luY2x1ZGUgYG5nSW5jbHVkZWB9LAorICoge0BsaW5rIG5nUm91dGUu
ZGlyZWN0aXZlOm5nVmlldyBgbmdWaWV3YH0sIG9yIHtAbGluayBndWlkZS9kaXJlY3RpdmUgZGly
ZWN0aXZlc30uIFRoZSB0eXBlIG9mIHRoZQorICogYDxzY3JpcHQ+YCBlbGVtZW50IG11c3QgYmUg
c3BlY2lmaWVkIGFzIGB0ZXh0L25nLXRlbXBsYXRlYCwgYW5kIGEgY2FjaGUgbmFtZSBmb3IgdGhl
IHRlbXBsYXRlIG11c3QgYmUKKyAqIGFzc2lnbmVkIHRocm91Z2ggdGhlIGVsZW1lbnQncyBgaWRg
LCB3aGljaCBjYW4gdGhlbiBiZSB1c2VkIGFzIGEgZGlyZWN0aXZlJ3MgYHRlbXBsYXRlVXJsYC4K
KyAqCisgKiBAcGFyYW0ge3N0cmluZ30gdHlwZSBNdXN0IGJlIHNldCB0byBgJ3RleHQvbmctdGVt
cGxhdGUnYC4KKyAqIEBwYXJhbSB7c3RyaW5nfSBpZCBDYWNoZSBuYW1lIG9mIHRoZSB0ZW1wbGF0
ZS4KKyAqCisgKiBAZXhhbXBsZQorICA8ZXhhbXBsZT4KKyAgICA8ZmlsZSBuYW1lPSJpbmRleC5o
dG1sIj4KKyAgICAgIDxzY3JpcHQgdHlwZT0idGV4dC9uZy10ZW1wbGF0ZSIgaWQ9Ii90cGwuaHRt
bCI+CisgICAgICAgIENvbnRlbnQgb2YgdGhlIHRlbXBsYXRlLgorICAgICAgPC9zY3JpcHQ+CisK
KyAgICAgIDxhIG5nLWNsaWNrPSJjdXJyZW50VHBsPScvdHBsLmh0bWwnIiBpZD0idHBsLWxpbmsi
PkxvYWQgaW5saW5lZCB0ZW1wbGF0ZTwvYT4KKyAgICAgIDxkaXYgaWQ9InRwbC1jb250ZW50IiBu
Zy1pbmNsdWRlIHNyYz0iY3VycmVudFRwbCI+PC9kaXY+CisgICAgPC9maWxlPgorICAgIDxmaWxl
IG5hbWU9InByb3RyYWN0b3IuanMiIHR5cGU9InByb3RyYWN0b3IiPgorICAgICAgaXQoJ3Nob3Vs
ZCBsb2FkIHRlbXBsYXRlIGRlZmluZWQgaW5zaWRlIHNjcmlwdCB0YWcnLCBmdW5jdGlvbigpIHsK
KyAgICAgICAgZWxlbWVudChieS5jc3MoJyN0cGwtbGluaycpKS5jbGljaygpOworICAgICAgICBl
eHBlY3QoZWxlbWVudChieS5jc3MoJyN0cGwtY29udGVudCcpKS5nZXRUZXh0KCkpLnRvTWF0Y2go
L0NvbnRlbnQgb2YgdGhlIHRlbXBsYXRlLyk7CisgICAgICB9KTsKKyAgICA8L2ZpbGU+CisgIDwv
ZXhhbXBsZT4KKyAqLwordmFyIHNjcmlwdERpcmVjdGl2ZSA9IFsnJHRlbXBsYXRlQ2FjaGUnLCBm
dW5jdGlvbigkdGVtcGxhdGVDYWNoZSkgeworICByZXR1cm4geworICAgIHJlc3RyaWN0OiAnRScs
CisgICAgdGVybWluYWw6IHRydWUsCisgICAgY29tcGlsZTogZnVuY3Rpb24oZWxlbWVudCwgYXR0
cikgeworICAgICAgaWYgKGF0dHIudHlwZSA9PSAndGV4dC9uZy10ZW1wbGF0ZScpIHsKKyAgICAg
ICAgdmFyIHRlbXBsYXRlVXJsID0gYXR0ci5pZCwKKyAgICAgICAgICAgIHRleHQgPSBlbGVtZW50
WzBdLnRleHQ7CisKKyAgICAgICAgJHRlbXBsYXRlQ2FjaGUucHV0KHRlbXBsYXRlVXJsLCB0ZXh0
KTsKKyAgICAgIH0KKyAgICB9CisgIH07Cit9XTsKKwordmFyIG5vb3BOZ01vZGVsQ29udHJvbGxl
ciA9IHsgJHNldFZpZXdWYWx1ZTogbm9vcCwgJHJlbmRlcjogbm9vcCB9OworCisvKioKKyAqIEBu
Z2RvYyB0eXBlCisgKiBAbmFtZSAgc2VsZWN0LlNlbGVjdENvbnRyb2xsZXIKKyAqIEBkZXNjcmlw
dGlvbgorICogVGhlIGNvbnRyb2xsZXIgZm9yIHRoZSBgPHNlbGVjdD5gIGRpcmVjdGl2ZS4gVGhp
cyBwcm92aWRlcyBzdXBwb3J0IGZvciByZWFkaW5nCisgKiBhbmQgd3JpdGluZyB0aGUgc2VsZWN0
ZWQgdmFsdWUocykgb2YgdGhlIGNvbnRyb2wgYW5kIGFsc28gY29vcmRpbmF0ZXMgZHluYW1pY2Fs
bHkKKyAqIGFkZGVkIGA8b3B0aW9uPmAgZWxlbWVudHMsIHBlcmhhcHMgYnkgYW4gYG5nUmVwZWF0
YCBkaXJlY3RpdmUuCisgKi8KK3ZhciBTZWxlY3RDb250cm9sbGVyID0KKyAgICAgICAgWyckZWxl
bWVudCcsICckc2NvcGUnLCAnJGF0dHJzJywgZnVuY3Rpb24oJGVsZW1lbnQsICRzY29wZSwgJGF0
dHJzKSB7CisKKyAgdmFyIHNlbGYgPSB0aGlzLAorICAgICAgb3B0aW9uc01hcCA9IG5ldyBIYXNo
TWFwKCk7CisKKyAgLy8gSWYgdGhlIG5nTW9kZWwgZG9lc24ndCBnZXQgcHJvdmlkZWQgdGhlbiBw
cm92aWRlIGEgZHVtbXkgbm9vcCB2ZXJzaW9uIHRvIHByZXZlbnQgZXJyb3JzCisgIHNlbGYubmdN
b2RlbEN0cmwgPSBub29wTmdNb2RlbENvbnRyb2xsZXI7CisKKyAgLy8gVGhlICJ1bmtub3duIiBv
cHRpb24gaXMgb25lIHRoYXQgaXMgcHJlcGVuZGVkIHRvIHRoZSBsaXN0IGlmIHRoZSB2aWV3VmFs
dWUKKyAgLy8gZG9lcyBub3QgbWF0Y2ggYW55IG9mIHRoZSBvcHRpb25zLiBXaGVuIGl0IGlzIHJl
bmRlcmVkIHRoZSB2YWx1ZSBvZiB0aGUgdW5rbm93bgorICAvLyBvcHRpb24gaXMgJz8gWFhYID8n
IHdoZXJlIFhYWCBpcyB0aGUgaGFzaEtleSBvZiB0aGUgdmFsdWUgdGhhdCBpcyBub3Qga25vd24u
CisgIC8vCisgIC8vIFdlIGNhbid0IGp1c3QganFMaXRlKCc8b3B0aW9uPicpIHNpbmNlIGpxTGl0
ZSBpcyBub3Qgc21hcnQgZW5vdWdoCisgIC8vIHRvIGNyZWF0ZSBpdCBpbiA8c2VsZWN0PiBhbmQg
SUUgYmFyZnMgb3RoZXJ3aXNlLgorICBzZWxmLnVua25vd25PcHRpb24gPSBqcUxpdGUoZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnb3B0aW9uJykpOworICBzZWxmLnJlbmRlclVua25vd25PcHRpb24g
PSBmdW5jdGlvbih2YWwpIHsKKyAgICB2YXIgdW5rbm93blZhbCA9ICc/ICcgKyBoYXNoS2V5KHZh
bCkgKyAnID8nOworICAgIHNlbGYudW5rbm93bk9wdGlvbi52YWwodW5rbm93blZhbCk7CisgICAg
JGVsZW1lbnQucHJlcGVuZChzZWxmLnVua25vd25PcHRpb24pOworICAgICRlbGVtZW50LnZhbCh1
bmtub3duVmFsKTsKKyAgfTsKKworICAkc2NvcGUuJG9uKCckZGVzdHJveScsIGZ1bmN0aW9uKCkg
eworICAgIC8vIGRpc2FibGUgdW5rbm93biBvcHRpb24gc28gdGhhdCB3ZSBkb24ndCBkbyB3b3Jr
IHdoZW4gdGhlIHdob2xlIHNlbGVjdCBpcyBiZWluZyBkZXN0cm95ZWQKKyAgICBzZWxmLnJlbmRl
clVua25vd25PcHRpb24gPSBub29wOworICB9KTsKKworICBzZWxmLnJlbW92ZVVua25vd25PcHRp
b24gPSBmdW5jdGlvbigpIHsKKyAgICBpZiAoc2VsZi51bmtub3duT3B0aW9uLnBhcmVudCgpKSBz
ZWxmLnVua25vd25PcHRpb24ucmVtb3ZlKCk7CisgIH07CisKKworICAvLyBSZWFkIHRoZSB2YWx1
ZSBvZiB0aGUgc2VsZWN0IGNvbnRyb2wsIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGNoYW5n
ZXMgZGVwZW5kaW5nCisgIC8vIHVwb24gd2hldGhlciB0aGUgc2VsZWN0IGNhbiBoYXZlIG11bHRp
cGxlIHZhbHVlcyBhbmQgd2hldGhlciBuZ09wdGlvbnMgaXMgYXQgd29yay4KKyAgc2VsZi5yZWFk
VmFsdWUgPSBmdW5jdGlvbiByZWFkU2luZ2xlVmFsdWUoKSB7CisgICAgc2VsZi5yZW1vdmVVbmtu
b3duT3B0aW9uKCk7CisgICAgcmV0dXJuICRlbGVtZW50LnZhbCgpOworICB9OworCisKKyAgLy8g
V3JpdGUgdGhlIHZhbHVlIHRvIHRoZSBzZWxlY3QgY29udHJvbCwgdGhlIGltcGxlbWVudGF0aW9u
IG9mIHRoaXMgY2hhbmdlcyBkZXBlbmRpbmcKKyAgLy8gdXBvbiB3aGV0aGVyIHRoZSBzZWxlY3Qg
Y2FuIGhhdmUgbXVsdGlwbGUgdmFsdWVzIGFuZCB3aGV0aGVyIG5nT3B0aW9ucyBpcyBhdCB3b3Jr
LgorICBzZWxmLndyaXRlVmFsdWUgPSBmdW5jdGlvbiB3cml0ZVNpbmdsZVZhbHVlKHZhbHVlKSB7
CisgICAgaWYgKHNlbGYuaGFzT3B0aW9uKHZhbHVlKSkgeworICAgICAgc2VsZi5yZW1vdmVVbmtu
b3duT3B0aW9uKCk7CisgICAgICAkZWxlbWVudC52YWwodmFsdWUpOworICAgICAgaWYgKHZhbHVl
ID09PSAnJykgc2VsZi5lbXB0eU9wdGlvbi5wcm9wKCdzZWxlY3RlZCcsIHRydWUpOyAvLyB0byBt
YWtlIElFOSBoYXBweQorICAgIH0gZWxzZSB7CisgICAgICBpZiAodmFsdWUgPT0gbnVsbCAmJiBz
ZWxmLmVtcHR5T3B0aW9uKSB7CisgICAgICAgIHNlbGYucmVtb3ZlVW5rbm93bk9wdGlvbigpOwor
ICAgICAgICAkZWxlbWVudC52YWwoJycpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgc2VsZi5y
ZW5kZXJVbmtub3duT3B0aW9uKHZhbHVlKTsKKyAgICAgIH0KKyAgICB9CisgIH07CisKKworICAv
LyBUZWxsIHRoZSBzZWxlY3QgY29udHJvbCB0aGF0IGFuIG9wdGlvbiwgd2l0aCB0aGUgZ2l2ZW4g
dmFsdWUsIGhhcyBiZWVuIGFkZGVkCisgIHNlbGYuYWRkT3B0aW9uID0gZnVuY3Rpb24odmFsdWUs
IGVsZW1lbnQpIHsKKyAgICBhc3NlcnROb3RIYXNPd25Qcm9wZXJ0eSh2YWx1ZSwgJyJvcHRpb24g
dmFsdWUiJyk7CisgICAgaWYgKHZhbHVlID09PSAnJykgeworICAgICAgc2VsZi5lbXB0eU9wdGlv
biA9IGVsZW1lbnQ7CisgICAgfQorICAgIHZhciBjb3VudCA9IG9wdGlvbnNNYXAuZ2V0KHZhbHVl
KSB8fCAwOworICAgIG9wdGlvbnNNYXAucHV0KHZhbHVlLCBjb3VudCArIDEpOworICB9OworCisg
IC8vIFRlbGwgdGhlIHNlbGVjdCBjb250cm9sIHRoYXQgYW4gb3B0aW9uLCB3aXRoIHRoZSBnaXZl
biB2YWx1ZSwgaGFzIGJlZW4gcmVtb3ZlZAorICBzZWxmLnJlbW92ZU9wdGlvbiA9IGZ1bmN0aW9u
KHZhbHVlKSB7CisgICAgdmFyIGNvdW50ID0gb3B0aW9uc01hcC5nZXQodmFsdWUpOworICAgIGlm
IChjb3VudCkgeworICAgICAgaWYgKGNvdW50ID09PSAxKSB7CisgICAgICAgIG9wdGlvbnNNYXAu
cmVtb3ZlKHZhbHVlKTsKKyAgICAgICAgaWYgKHZhbHVlID09PSAnJykgeworICAgICAgICAgIHNl
bGYuZW1wdHlPcHRpb24gPSB1bmRlZmluZWQ7CisgICAgICAgIH0KKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIG9wdGlvbnNNYXAucHV0KHZhbHVlLCBjb3VudCAtIDEpOworICAgICAgfQorICAgIH0K
KyAgfTsKKworICAvLyBDaGVjayB3aGV0aGVyIHRoZSBzZWxlY3QgY29udHJvbCBoYXMgYW4gb3B0
aW9uIG1hdGNoaW5nIHRoZSBnaXZlbiB2YWx1ZQorICBzZWxmLmhhc09wdGlvbiA9IGZ1bmN0aW9u
KHZhbHVlKSB7CisgICAgcmV0dXJuICEhb3B0aW9uc01hcC5nZXQodmFsdWUpOworICB9OworfV07
CisKKy8qKgorICogQG5nZG9jIGRpcmVjdGl2ZQorICogQG5hbWUgc2VsZWN0CisgKiBAcmVzdHJp
Y3QgRQorICoKKyAqIEBkZXNjcmlwdGlvbgorICogSFRNTCBgU0VMRUNUYCBlbGVtZW50IHdpdGgg
YW5ndWxhciBkYXRhLWJpbmRpbmcuCisgKgorICogSW4gbWFueSBjYXNlcywgYG5nUmVwZWF0YCBj
YW4gYmUgdXNlZCBvbiBgPG9wdGlvbj5gIGVsZW1lbnRzIGluc3RlYWQgb2Yge0BsaW5rIG5nLmRp
cmVjdGl2ZTpuZ09wdGlvbnMKKyAqIG5nT3B0aW9uc30gdG8gYWNoaWV2ZSBhIHNpbWlsYXIgcmVz
dWx0LiBIb3dldmVyLCBgbmdPcHRpb25zYCBwcm92aWRlcyBzb21lIGJlbmVmaXRzIHN1Y2ggYXMg
cmVkdWNpbmcKKyAqIG1lbW9yeSBhbmQgaW5jcmVhc2luZyBzcGVlZCBieSBub3QgY3JlYXRpbmcg
YSBuZXcgc2NvcGUgZm9yIGVhY2ggcmVwZWF0ZWQgaW5zdGFuY2UsIGFzIHdlbGwgYXMgcHJvdmlk
aW5nCisgKiBtb3JlIGZsZXhpYmlsaXR5IGluIGhvdyB0aGUgYDxzZWxlY3Q+YCdzIG1vZGVsIGlz
IGFzc2lnbmVkIHZpYSB0aGUgYHNlbGVjdGAgKipgYXNgKiogcGFydCBvZiB0aGUKKyAqIGNvbXBy
ZWhlbnNpb24gZXhwcmVzc2lvbi4KKyAqCisgKiBXaGVuIGFuIGl0ZW0gaW4gdGhlIGA8c2VsZWN0
PmAgbWVudSBpcyBzZWxlY3RlZCwgdGhlIGFycmF5IGVsZW1lbnQgb3Igb2JqZWN0IHByb3BlcnR5
CisgKiByZXByZXNlbnRlZCBieSB0aGUgc2VsZWN0ZWQgb3B0aW9uIHdpbGwgYmUgYm91bmQgdG8g
dGhlIG1vZGVsIGlkZW50aWZpZWQgYnkgdGhlIGBuZ01vZGVsYAorICogZGlyZWN0aXZlLgorICoK
KyAqIElmIHRoZSB2aWV3VmFsdWUgY29udGFpbnMgYSB2YWx1ZSB0aGF0IGRvZXNuJ3QgbWF0Y2gg
YW55IG9mIHRoZSBvcHRpb25zIHRoZW4gdGhlIGNvbnRyb2wKKyAqIHdpbGwgYXV0b21hdGljYWxs
eSBhZGQgYW4gInVua25vd24iIG9wdGlvbiwgd2hpY2ggaXQgdGhlbiByZW1vdmVzIHdoZW4gdGhp
cyBpcyByZXNvbHZlZC4KKyAqCisgKiBPcHRpb25hbGx5LCBhIHNpbmdsZSBoYXJkLWNvZGVkIGA8
b3B0aW9uPmAgZWxlbWVudCwgd2l0aCB0aGUgdmFsdWUgc2V0IHRvIGFuIGVtcHR5IHN0cmluZywg
Y2FuCisgKiBiZSBuZXN0ZWQgaW50byB0aGUgYDxzZWxlY3Q+YCBlbGVtZW50LiBUaGlzIGVsZW1l
bnQgd2lsbCB0aGVuIHJlcHJlc2VudCB0aGUgYG51bGxgIG9yICJub3Qgc2VsZWN0ZWQiCisgKiBv
cHRpb24uIFNlZSBleGFtcGxlIGJlbG93IGZvciBkZW1vbnN0cmF0aW9uLgorICoKKyAqIDxkaXYg
Y2xhc3M9ImFsZXJ0IGFsZXJ0LWluZm8iPgorICogVGhlIHZhbHVlIG9mIGEgYHNlbGVjdGAgZGly
ZWN0aXZlIHVzZWQgd2l0aG91dCBgbmdPcHRpb25zYCBpcyBhbHdheXMgYSBzdHJpbmcuCisgKiBX
aGVuIHRoZSBtb2RlbCBuZWVkcyB0byBiZSBib3VuZCB0byBhIG5vbi1zdHJpbmcgdmFsdWUsIHlv
dSBtdXN0IGVpdGhlciBleHBsaWN0bHkgY29udmVydCBpdAorICogdXNpbmcgYSBkaXJlY3RpdmUg
KHNlZSBleGFtcGxlIGJlbG93KSBvciB1c2UgYG5nT3B0aW9uc2AgdG8gc3BlY2lmeSB0aGUgc2V0
IG9mIG9wdGlvbnMuCisgKiBUaGlzIGlzIGJlY2F1c2UgYW4gb3B0aW9uIGVsZW1lbnQgY2FuIG9u
bHkgYmUgYm91bmQgdG8gc3RyaW5nIHZhbHVlcyBhdCBwcmVzZW50LgorICogPC9kaXY+CisgKgor
ICogIyMjIEV4YW1wbGUgKGJpbmRpbmcgYHNlbGVjdGAgdG8gYSBub24tc3RyaW5nIHZhbHVlKQor
ICoKKyAqIDxleGFtcGxlIG5hbWU9InNlbGVjdC13aXRoLW5vbi1zdHJpbmctb3B0aW9ucyIgbW9k
dWxlPSJub25TdHJpbmdTZWxlY3QiPgorICogICA8ZmlsZSBuYW1lPSJpbmRleC5odG1sIj4KKyAq
ICAgICA8c2VsZWN0IG5nLW1vZGVsPSJtb2RlbC5pZCIgY29udmVydC10by1udW1iZXI+CisgKiAg
ICAgICA8b3B0aW9uIHZhbHVlPSIwIj5aZXJvPC9vcHRpb24+CisgKiAgICAgICA8b3B0aW9uIHZh
bHVlPSIxIj5PbmU8L29wdGlvbj4KKyAqICAgICAgIDxvcHRpb24gdmFsdWU9IjIiPlR3bzwvb3B0
aW9uPgorICogICAgIDwvc2VsZWN0PgorICogICAgIHt7IG1vZGVsIH19CisgKiAgIDwvZmlsZT4K
KyAqICAgPGZpbGUgbmFtZT0iYXBwLmpzIj4KKyAqICAgICBhbmd1bGFyLm1vZHVsZSgnbm9uU3Ry
aW5nU2VsZWN0JywgW10pCisgKiAgICAgICAucnVuKGZ1bmN0aW9uKCRyb290U2NvcGUpIHsKKyAq
ICAgICAgICAgJHJvb3RTY29wZS5tb2RlbCA9IHsgaWQ6IDIgfTsKKyAqICAgICAgIH0pCisgKiAg
ICAgICAuZGlyZWN0aXZlKCdjb252ZXJ0VG9OdW1iZXInLCBmdW5jdGlvbigpIHsKKyAqICAgICAg
ICAgcmV0dXJuIHsKKyAqICAgICAgICAgICByZXF1aXJlOiAnbmdNb2RlbCcsCisgKiAgICAgICAg
ICAgbGluazogZnVuY3Rpb24oc2NvcGUsIGVsZW1lbnQsIGF0dHJzLCBuZ01vZGVsKSB7CisgKiAg
ICAgICAgICAgICBuZ01vZGVsLiRwYXJzZXJzLnB1c2goZnVuY3Rpb24odmFsKSB7CisgKiAgICAg
ICAgICAgICAgIHJldHVybiBwYXJzZUludCh2YWwsIDEwKTsKKyAqICAgICAgICAgICAgIH0pOwor
ICogICAgICAgICAgICAgbmdNb2RlbC4kZm9ybWF0dGVycy5wdXNoKGZ1bmN0aW9uKHZhbCkgewor
ICogICAgICAgICAgICAgICByZXR1cm4gJycgKyB2YWw7CisgKiAgICAgICAgICAgICB9KTsKKyAq
ICAgICAgICAgICB9CisgKiAgICAgICAgIH07CisgKiAgICAgICB9KTsKKyAqICAgPC9maWxlPgor
ICogICA8ZmlsZSBuYW1lPSJwcm90cmFjdG9yLmpzIiB0eXBlPSJwcm90cmFjdG9yIj4KKyAqICAg
ICBpdCgnc2hvdWxkIGluaXRpYWxpemUgdG8gbW9kZWwnLCBmdW5jdGlvbigpIHsKKyAqICAgICAg
IHZhciBzZWxlY3QgPSBlbGVtZW50KGJ5LmNzcygnc2VsZWN0JykpOworICogICAgICAgZXhwZWN0
KGVsZW1lbnQoYnkubW9kZWwoJ21vZGVsLmlkJykpLiQoJ29wdGlvbjpjaGVja2VkJykuZ2V0VGV4
dCgpKS50b0VxdWFsKCdUd28nKTsKKyAqICAgICB9KTsKKyAqICAgPC9maWxlPgorICogPC9leGFt
cGxlPgorICoKKyAqLwordmFyIHNlbGVjdERpcmVjdGl2ZSA9IGZ1bmN0aW9uKCkgeworCisgIHJl
dHVybiB7CisgICAgcmVzdHJpY3Q6ICdFJywKKyAgICByZXF1aXJlOiBbJ3NlbGVjdCcsICc/bmdN
b2RlbCddLAorICAgIGNvbnRyb2xsZXI6IFNlbGVjdENvbnRyb2xsZXIsCisgICAgbGluazogZnVu
Y3Rpb24oc2NvcGUsIGVsZW1lbnQsIGF0dHIsIGN0cmxzKSB7CisKKyAgICAgIC8vIGlmIG5nTW9k
ZWwgaXMgbm90IGRlZmluZWQsIHdlIGRvbid0IG5lZWQgdG8gZG8gYW55dGhpbmcKKyAgICAgIHZh
ciBuZ01vZGVsQ3RybCA9IGN0cmxzWzFdOworICAgICAgaWYgKCFuZ01vZGVsQ3RybCkgcmV0dXJu
OworCisgICAgICB2YXIgc2VsZWN0Q3RybCA9IGN0cmxzWzBdOworCisgICAgICBzZWxlY3RDdHJs
Lm5nTW9kZWxDdHJsID0gbmdNb2RlbEN0cmw7CisKKyAgICAgIC8vIFdlIGRlbGVnYXRlIHJlbmRl
cmluZyB0byB0aGUgYHdyaXRlVmFsdWVgIG1ldGhvZCwgd2hpY2ggY2FuIGJlIGNoYW5nZWQKKyAg
ICAgIC8vIGlmIHRoZSBzZWxlY3QgY2FuIGhhdmUgbXVsdGlwbGUgc2VsZWN0ZWQgdmFsdWVzIG9y
IGlmIHRoZSBvcHRpb25zIGFyZSBiZWluZworICAgICAgLy8gZ2VuZXJhdGVkIGJ5IGBuZ09wdGlv
bnNgCisgICAgICBuZ01vZGVsQ3RybC4kcmVuZGVyID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHNl
bGVjdEN0cmwud3JpdGVWYWx1ZShuZ01vZGVsQ3RybC4kdmlld1ZhbHVlKTsKKyAgICAgIH07CisK
KyAgICAgIC8vIFdoZW4gdGhlIHNlbGVjdGVkIGl0ZW0ocykgY2hhbmdlcyB3ZSBkZWxlZ2F0ZSBn
ZXR0aW5nIHRoZSB2YWx1ZSBvZiB0aGUgc2VsZWN0IGNvbnRyb2wKKyAgICAgIC8vIHRvIHRoZSBg
cmVhZFZhbHVlYCBtZXRob2QsIHdoaWNoIGNhbiBiZSBjaGFuZ2VkIGlmIHRoZSBzZWxlY3QgY2Fu
IGhhdmUgbXVsdGlwbGUKKyAgICAgIC8vIHNlbGVjdGVkIHZhbHVlcyBvciBpZiB0aGUgb3B0aW9u
cyBhcmUgYmVpbmcgZ2VuZXJhdGVkIGJ5IGBuZ09wdGlvbnNgCisgICAgICBlbGVtZW50Lm9uKCdj
aGFuZ2UnLCBmdW5jdGlvbigpIHsKKyAgICAgICAgc2NvcGUuJGFwcGx5KGZ1bmN0aW9uKCkgewor
ICAgICAgICAgIG5nTW9kZWxDdHJsLiRzZXRWaWV3VmFsdWUoc2VsZWN0Q3RybC5yZWFkVmFsdWUo
KSk7CisgICAgICAgIH0pOworICAgICAgfSk7CisKKyAgICAgIC8vIElmIHRoZSBzZWxlY3QgYWxs
b3dzIG11bHRpcGxlIHZhbHVlcyB0aGVuIHdlIG5lZWQgdG8gbW9kaWZ5IGhvdyB3ZSByZWFkIGFu
ZCB3cml0ZQorICAgICAgLy8gdmFsdWVzIGZyb20gYW5kIHRvIHRoZSBjb250cm9sOyBhbHNvIHdo
YXQgaXQgbWVhbnMgZm9yIHRoZSB2YWx1ZSB0byBiZSBlbXB0eSBhbmQKKyAgICAgIC8vIHdlIGhh
dmUgdG8gYWRkIGFuIGV4dHJhIHdhdGNoIHNpbmNlIG5nTW9kZWwgZG9lc24ndCB3b3JrIHdlbGwg
d2l0aCBhcnJheXMgLSBpdAorICAgICAgLy8gZG9lc24ndCB0cmlnZ2VyIHJlbmRlcmluZyBpZiBv
bmx5IGFuIGl0ZW0gaW4gdGhlIGFycmF5IGNoYW5nZXMuCisgICAgICBpZiAoYXR0ci5tdWx0aXBs
ZSkgeworCisgICAgICAgIC8vIFJlYWQgdmFsdWUgbm93IG5lZWRzIHRvIGNoZWNrIGVhY2ggb3B0
aW9uIHRvIHNlZSBpZiBpdCBpcyBzZWxlY3RlZAorICAgICAgICBzZWxlY3RDdHJsLnJlYWRWYWx1
ZSA9IGZ1bmN0aW9uIHJlYWRNdWx0aXBsZVZhbHVlKCkgeworICAgICAgICAgIHZhciBhcnJheSA9
IFtdOworICAgICAgICAgIGZvckVhY2goZWxlbWVudC5maW5kKCdvcHRpb24nKSwgZnVuY3Rpb24o
b3B0aW9uKSB7CisgICAgICAgICAgICBpZiAob3B0aW9uLnNlbGVjdGVkKSB7CisgICAgICAgICAg
ICAgIGFycmF5LnB1c2gob3B0aW9uLnZhbHVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9
KTsKKyAgICAgICAgICByZXR1cm4gYXJyYXk7CisgICAgICAgIH07CisKKyAgICAgICAgLy8gV3Jp
dGUgdmFsdWUgbm93IG5lZWRzIHRvIHNldCB0aGUgc2VsZWN0ZWQgcHJvcGVydHkgb2YgZWFjaCBt
YXRjaGluZyBvcHRpb24KKyAgICAgICAgc2VsZWN0Q3RybC53cml0ZVZhbHVlID0gZnVuY3Rpb24g
d3JpdGVNdWx0aXBsZVZhbHVlKHZhbHVlKSB7CisgICAgICAgICAgdmFyIGl0ZW1zID0gbmV3IEhh
c2hNYXAodmFsdWUpOworICAgICAgICAgIGZvckVhY2goZWxlbWVudC5maW5kKCdvcHRpb24nKSwg
ZnVuY3Rpb24ob3B0aW9uKSB7CisgICAgICAgICAgICBvcHRpb24uc2VsZWN0ZWQgPSBpc0RlZmlu
ZWQoaXRlbXMuZ2V0KG9wdGlvbi52YWx1ZSkpOworICAgICAgICAgIH0pOworICAgICAgICB9Owor
CisgICAgICAgIC8vIHdlIGhhdmUgdG8gZG8gaXQgb24gZWFjaCB3YXRjaCBzaW5jZSBuZ01vZGVs
IHdhdGNoZXMgcmVmZXJlbmNlLCBidXQKKyAgICAgICAgLy8gd2UgbmVlZCB0byB3b3JrIG9mIGFu
IGFycmF5LCBzbyB3ZSBuZWVkIHRvIHNlZSBpZiBhbnl0aGluZyB3YXMgaW5zZXJ0ZWQvcmVtb3Zl
ZAorICAgICAgICB2YXIgbGFzdFZpZXcsIGxhc3RWaWV3UmVmID0gTmFOOworICAgICAgICBzY29w
ZS4kd2F0Y2goZnVuY3Rpb24gc2VsZWN0TXVsdGlwbGVXYXRjaCgpIHsKKyAgICAgICAgICBpZiAo
bGFzdFZpZXdSZWYgPT09IG5nTW9kZWxDdHJsLiR2aWV3VmFsdWUgJiYgIWVxdWFscyhsYXN0Vmll
dywgbmdNb2RlbEN0cmwuJHZpZXdWYWx1ZSkpIHsKKyAgICAgICAgICAgIGxhc3RWaWV3ID0gc2hh
bGxvd0NvcHkobmdNb2RlbEN0cmwuJHZpZXdWYWx1ZSk7CisgICAgICAgICAgICBuZ01vZGVsQ3Ry
bC4kcmVuZGVyKCk7CisgICAgICAgICAgfQorICAgICAgICAgIGxhc3RWaWV3UmVmID0gbmdNb2Rl
bEN0cmwuJHZpZXdWYWx1ZTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgLy8gSWYgd2UgYXJlIGEg
bXVsdGlwbGUgc2VsZWN0IHRoZW4gdmFsdWUgaXMgbm93IGEgY29sbGVjdGlvbgorICAgICAgICAv
LyBzbyB0aGUgbWVhbmluZyBvZiAkaXNFbXB0eSBjaGFuZ2VzCisgICAgICAgIG5nTW9kZWxDdHJs
LiRpc0VtcHR5ID0gZnVuY3Rpb24odmFsdWUpIHsKKyAgICAgICAgICByZXR1cm4gIXZhbHVlIHx8
IHZhbHVlLmxlbmd0aCA9PT0gMDsKKyAgICAgICAgfTsKKworICAgICAgfQorICAgIH0KKyAgfTsK
K307CisKKworLy8gVGhlIG9wdGlvbiBkaXJlY3RpdmUgaXMgcHVyZWx5IGRlc2lnbmVkIHRvIGNv
bW11bmljYXRlIHRoZSBleGlzdGVuY2UgKG9yIGxhY2sgb2YpCisvLyBvZiBkeW5hbWljYWxseSBj
cmVhdGVkIChhbmQgZGVzdHJveWVkKSBvcHRpb24gZWxlbWVudHMgdG8gdGhlaXIgY29udGFpbmlu
ZyBzZWxlY3QKKy8vIGRpcmVjdGl2ZSB2aWEgaXRzIGNvbnRyb2xsZXIuCit2YXIgb3B0aW9uRGly
ZWN0aXZlID0gWyckaW50ZXJwb2xhdGUnLCBmdW5jdGlvbigkaW50ZXJwb2xhdGUpIHsKKworICBm
dW5jdGlvbiBjaHJvbWVIYWNrKG9wdGlvbkVsZW1lbnQpIHsKKyAgICAvLyBXb3JrYXJvdW5kIGZv
ciBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9Mzgx
NDU5CisgICAgLy8gQWRkaW5nIGFuIDxvcHRpb24gc2VsZWN0ZWQ9InNlbGVjdGVkIj4gZWxlbWVu
dCB0byBhIDxzZWxlY3QgcmVxdWlyZWQ9InJlcXVpcmVkIj4gc2hvdWxkCisgICAgLy8gYXV0b21h
dGljYWxseSBzZWxlY3QgdGhlIG5ldyBlbGVtZW50CisgICAgaWYgKG9wdGlvbkVsZW1lbnRbMF0u
aGFzQXR0cmlidXRlKCdzZWxlY3RlZCcpKSB7CisgICAgICBvcHRpb25FbGVtZW50WzBdLnNlbGVj
dGVkID0gdHJ1ZTsKKyAgICB9CisgIH0KKworICByZXR1cm4geworICAgIHJlc3RyaWN0OiAnRScs
CisgICAgcHJpb3JpdHk6IDEwMCwKKyAgICBjb21waWxlOiBmdW5jdGlvbihlbGVtZW50LCBhdHRy
KSB7CisKKyAgICAgIC8vIElmIHRoZSB2YWx1ZSBhdHRyaWJ1dGUgaXMgbm90IGRlZmluZWQgdGhl
biB3ZSBmYWxsIGJhY2sgdG8gdGhlCisgICAgICAvLyB0ZXh0IGNvbnRlbnQgb2YgdGhlIG9wdGlv
biBlbGVtZW50LCB3aGljaCBtYXkgYmUgaW50ZXJwb2xhdGVkCisgICAgICBpZiAoaXNVbmRlZmlu
ZWQoYXR0ci52YWx1ZSkpIHsKKyAgICAgICAgdmFyIGludGVycG9sYXRlRm4gPSAkaW50ZXJwb2xh
dGUoZWxlbWVudC50ZXh0KCksIHRydWUpOworICAgICAgICBpZiAoIWludGVycG9sYXRlRm4pIHsK
KyAgICAgICAgICBhdHRyLiRzZXQoJ3ZhbHVlJywgZWxlbWVudC50ZXh0KCkpOworICAgICAgICB9
CisgICAgICB9CisKKyAgICAgIHJldHVybiBmdW5jdGlvbihzY29wZSwgZWxlbWVudCwgYXR0cikg
eworCisgICAgICAgIC8vIFRoaXMgaXMgYW4gb3B0aW1pemF0aW9uIG92ZXIgdXNpbmcgXl4gc2lu
Y2Ugd2UgZG9uJ3Qgd2FudCB0byBoYXZlIHRvIHNlYXJjaAorICAgICAgICAvLyBhbGwgdGhlIHdh
eSB0byB0aGUgcm9vdCBvZiB0aGUgRE9NIGZvciBldmVyeSBzaW5nbGUgb3B0aW9uIGVsZW1lbnQK
KyAgICAgICAgdmFyIHNlbGVjdEN0cmxOYW1lID0gJyRzZWxlY3RDb250cm9sbGVyJywKKyAgICAg
ICAgICAgIHBhcmVudCA9IGVsZW1lbnQucGFyZW50KCksCisgICAgICAgICAgICBzZWxlY3RDdHJs
ID0gcGFyZW50LmRhdGEoc2VsZWN0Q3RybE5hbWUpIHx8CisgICAgICAgICAgICAgIHBhcmVudC5w
YXJlbnQoKS5kYXRhKHNlbGVjdEN0cmxOYW1lKTsgLy8gaW4gY2FzZSB3ZSBhcmUgaW4gb3B0Z3Jv
dXAKKworICAgICAgICAvLyBPbmx5IHVwZGF0ZSB0cmlnZ2VyIG9wdGlvbiB1cGRhdGVzIGlmIHRo
aXMgaXMgYW4gb3B0aW9uIHdpdGhpbiBhIGBzZWxlY3RgCisgICAgICAgIC8vIHRoYXQgYWxzbyBo
YXMgYG5nTW9kZWxgIGF0dGFjaGVkCisgICAgICAgIGlmIChzZWxlY3RDdHJsICYmIHNlbGVjdEN0
cmwubmdNb2RlbEN0cmwpIHsKKworICAgICAgICAgIGlmIChpbnRlcnBvbGF0ZUZuKSB7CisgICAg
ICAgICAgICBzY29wZS4kd2F0Y2goaW50ZXJwb2xhdGVGbiwgZnVuY3Rpb24gaW50ZXJwb2xhdGVX
YXRjaEFjdGlvbihuZXdWYWwsIG9sZFZhbCkgeworICAgICAgICAgICAgICBhdHRyLiRzZXQoJ3Zh
bHVlJywgbmV3VmFsKTsKKyAgICAgICAgICAgICAgaWYgKG9sZFZhbCAhPT0gbmV3VmFsKSB7Cisg
ICAgICAgICAgICAgICAgc2VsZWN0Q3RybC5yZW1vdmVPcHRpb24ob2xkVmFsKTsKKyAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICBzZWxlY3RDdHJsLmFkZE9wdGlvbihuZXdWYWwsIGVsZW1l
bnQpOworICAgICAgICAgICAgICBzZWxlY3RDdHJsLm5nTW9kZWxDdHJsLiRyZW5kZXIoKTsKKyAg
ICAgICAgICAgICAgY2hyb21lSGFjayhlbGVtZW50KTsKKyAgICAgICAgICAgIH0pOworICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzZWxlY3RDdHJsLmFkZE9wdGlvbihhdHRyLnZhbHVl
LCBlbGVtZW50KTsKKyAgICAgICAgICAgIHNlbGVjdEN0cmwubmdNb2RlbEN0cmwuJHJlbmRlcigp
OworICAgICAgICAgICAgY2hyb21lSGFjayhlbGVtZW50KTsKKyAgICAgICAgICB9CisKKyAgICAg
ICAgICBlbGVtZW50Lm9uKCckZGVzdHJveScsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgc2Vs
ZWN0Q3RybC5yZW1vdmVPcHRpb24oYXR0ci52YWx1ZSk7CisgICAgICAgICAgICBzZWxlY3RDdHJs
Lm5nTW9kZWxDdHJsLiRyZW5kZXIoKTsKKyAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgICAg
fTsKKyAgICB9CisgIH07Cit9XTsKKwordmFyIHN0eWxlRGlyZWN0aXZlID0gdmFsdWVGbih7Cisg
IHJlc3RyaWN0OiAnRScsCisgIHRlcm1pbmFsOiBmYWxzZQorfSk7CisKK3ZhciByZXF1aXJlZERp
cmVjdGl2ZSA9IGZ1bmN0aW9uKCkgeworICByZXR1cm4geworICAgIHJlc3RyaWN0OiAnQScsCisg
ICAgcmVxdWlyZTogJz9uZ01vZGVsJywKKyAgICBsaW5rOiBmdW5jdGlvbihzY29wZSwgZWxtLCBh
dHRyLCBjdHJsKSB7CisgICAgICBpZiAoIWN0cmwpIHJldHVybjsKKyAgICAgIGF0dHIucmVxdWly
ZWQgPSB0cnVlOyAvLyBmb3JjZSB0cnV0aHkgaW4gY2FzZSB3ZSBhcmUgb24gbm9uIGlucHV0IGVs
ZW1lbnQKKworICAgICAgY3RybC4kdmFsaWRhdG9ycy5yZXF1aXJlZCA9IGZ1bmN0aW9uKG1vZGVs
VmFsdWUsIHZpZXdWYWx1ZSkgeworICAgICAgICByZXR1cm4gIWF0dHIucmVxdWlyZWQgfHwgIWN0
cmwuJGlzRW1wdHkodmlld1ZhbHVlKTsKKyAgICAgIH07CisKKyAgICAgIGF0dHIuJG9ic2VydmUo
J3JlcXVpcmVkJywgZnVuY3Rpb24oKSB7CisgICAgICAgIGN0cmwuJHZhbGlkYXRlKCk7CisgICAg
ICB9KTsKKyAgICB9CisgIH07Cit9OworCisKK3ZhciBwYXR0ZXJuRGlyZWN0aXZlID0gZnVuY3Rp
b24oKSB7CisgIHJldHVybiB7CisgICAgcmVzdHJpY3Q6ICdBJywKKyAgICByZXF1aXJlOiAnP25n
TW9kZWwnLAorICAgIGxpbms6IGZ1bmN0aW9uKHNjb3BlLCBlbG0sIGF0dHIsIGN0cmwpIHsKKyAg
ICAgIGlmICghY3RybCkgcmV0dXJuOworCisgICAgICB2YXIgcmVnZXhwLCBwYXR0ZXJuRXhwID0g
YXR0ci5uZ1BhdHRlcm4gfHwgYXR0ci5wYXR0ZXJuOworICAgICAgYXR0ci4kb2JzZXJ2ZSgncGF0
dGVybicsIGZ1bmN0aW9uKHJlZ2V4KSB7CisgICAgICAgIGlmIChpc1N0cmluZyhyZWdleCkgJiYg
cmVnZXgubGVuZ3RoID4gMCkgeworICAgICAgICAgIHJlZ2V4ID0gbmV3IFJlZ0V4cCgnXicgKyBy
ZWdleCArICckJyk7CisgICAgICAgIH0KKworICAgICAgICBpZiAocmVnZXggJiYgIXJlZ2V4LnRl
c3QpIHsKKyAgICAgICAgICB0aHJvdyBtaW5FcnIoJ25nUGF0dGVybicpKCdub3JlZ2V4cCcsCisg
ICAgICAgICAgICAnRXhwZWN0ZWQgezB9IHRvIGJlIGEgUmVnRXhwIGJ1dCB3YXMgezF9LiBFbGVt
ZW50OiB7Mn0nLCBwYXR0ZXJuRXhwLAorICAgICAgICAgICAgcmVnZXgsIHN0YXJ0aW5nVGFnKGVs
bSkpOworICAgICAgICB9CisKKyAgICAgICAgcmVnZXhwID0gcmVnZXggfHwgdW5kZWZpbmVkOwor
ICAgICAgICBjdHJsLiR2YWxpZGF0ZSgpOworICAgICAgfSk7CisKKyAgICAgIGN0cmwuJHZhbGlk
YXRvcnMucGF0dGVybiA9IGZ1bmN0aW9uKHZhbHVlKSB7CisgICAgICAgIHJldHVybiBjdHJsLiRp
c0VtcHR5KHZhbHVlKSB8fCBpc1VuZGVmaW5lZChyZWdleHApIHx8IHJlZ2V4cC50ZXN0KHZhbHVl
KTsKKyAgICAgIH07CisgICAgfQorICB9OworfTsKKworCit2YXIgbWF4bGVuZ3RoRGlyZWN0aXZl
ID0gZnVuY3Rpb24oKSB7CisgIHJldHVybiB7CisgICAgcmVzdHJpY3Q6ICdBJywKKyAgICByZXF1
aXJlOiAnP25nTW9kZWwnLAorICAgIGxpbms6IGZ1bmN0aW9uKHNjb3BlLCBlbG0sIGF0dHIsIGN0
cmwpIHsKKyAgICAgIGlmICghY3RybCkgcmV0dXJuOworCisgICAgICB2YXIgbWF4bGVuZ3RoID0g
LTE7CisgICAgICBhdHRyLiRvYnNlcnZlKCdtYXhsZW5ndGgnLCBmdW5jdGlvbih2YWx1ZSkgewor
ICAgICAgICB2YXIgaW50VmFsID0gdG9JbnQodmFsdWUpOworICAgICAgICBtYXhsZW5ndGggPSBp
c05hTihpbnRWYWwpID8gLTEgOiBpbnRWYWw7CisgICAgICAgIGN0cmwuJHZhbGlkYXRlKCk7Cisg
ICAgICB9KTsKKyAgICAgIGN0cmwuJHZhbGlkYXRvcnMubWF4bGVuZ3RoID0gZnVuY3Rpb24obW9k
ZWxWYWx1ZSwgdmlld1ZhbHVlKSB7CisgICAgICAgIHJldHVybiAobWF4bGVuZ3RoIDwgMCkgfHwg
Y3RybC4kaXNFbXB0eSh2aWV3VmFsdWUpIHx8ICh2aWV3VmFsdWUubGVuZ3RoIDw9IG1heGxlbmd0
aCk7CisgICAgICB9OworICAgIH0KKyAgfTsKK307CisKK3ZhciBtaW5sZW5ndGhEaXJlY3RpdmUg
PSBmdW5jdGlvbigpIHsKKyAgcmV0dXJuIHsKKyAgICByZXN0cmljdDogJ0EnLAorICAgIHJlcXVp
cmU6ICc/bmdNb2RlbCcsCisgICAgbGluazogZnVuY3Rpb24oc2NvcGUsIGVsbSwgYXR0ciwgY3Ry
bCkgeworICAgICAgaWYgKCFjdHJsKSByZXR1cm47CisKKyAgICAgIHZhciBtaW5sZW5ndGggPSAw
OworICAgICAgYXR0ci4kb2JzZXJ2ZSgnbWlubGVuZ3RoJywgZnVuY3Rpb24odmFsdWUpIHsKKyAg
ICAgICAgbWlubGVuZ3RoID0gdG9JbnQodmFsdWUpIHx8IDA7CisgICAgICAgIGN0cmwuJHZhbGlk
YXRlKCk7CisgICAgICB9KTsKKyAgICAgIGN0cmwuJHZhbGlkYXRvcnMubWlubGVuZ3RoID0gZnVu
Y3Rpb24obW9kZWxWYWx1ZSwgdmlld1ZhbHVlKSB7CisgICAgICAgIHJldHVybiBjdHJsLiRpc0Vt
cHR5KHZpZXdWYWx1ZSkgfHwgdmlld1ZhbHVlLmxlbmd0aCA+PSBtaW5sZW5ndGg7CisgICAgICB9
OworICAgIH0KKyAgfTsKK307CisKKyAgaWYgKHdpbmRvdy5hbmd1bGFyLmJvb3RzdHJhcCkgewor
ICAgIC8vQW5ndWxhckpTIGlzIGFscmVhZHkgbG9hZGVkLCBzbyB3ZSBjYW4gcmV0dXJuIGhlcmUu
Li4KKyAgICBjb25zb2xlLmxvZygnV0FSTklORzogVHJpZWQgdG8gbG9hZCBhbmd1bGFyIG1vcmUg
dGhhbiBvbmNlLicpOworICAgIHJldHVybjsKKyAgfQorCisgIC8vdHJ5IHRvIGJpbmQgdG8ganF1
ZXJ5IG5vdyBzbyB0aGF0IG9uZSBjYW4gd3JpdGUganFMaXRlKGRvY3VtZW50KS5yZWFkeSgpCisg
IC8vYnV0IHdlIHdpbGwgcmViaW5kIG9uIGJvb3RzdHJhcCBhZ2Fpbi4KKyAgYmluZEpRdWVyeSgp
OworCisgIHB1Ymxpc2hFeHRlcm5hbEFQSShhbmd1bGFyKTsKKworICBqcUxpdGUoZG9jdW1lbnQp
LnJlYWR5KGZ1bmN0aW9uKCkgeworICAgIGFuZ3VsYXJJbml0KGRvY3VtZW50LCBib290c3RyYXAp
OworICB9KTsKKworfSkod2luZG93LCBkb2N1bWVudCk7CisKKyF3aW5kb3cuYW5ndWxhci4kJGNz
cCgpICYmIHdpbmRvdy5hbmd1bGFyLmVsZW1lbnQoZG9jdW1lbnQuaGVhZCkucHJlcGVuZCgnPHN0
eWxlIHR5cGU9InRleHQvY3NzIj5AY2hhcnNldCAiVVRGLTgiO1tuZ1xcOmNsb2FrXSxbbmctY2xv
YWtdLFtkYXRhLW5nLWNsb2FrXSxbeC1uZy1jbG9ha10sLm5nLWNsb2FrLC54LW5nLWNsb2FrLC5u
Zy1oaWRlOm5vdCgubmctaGlkZS1hbmltYXRlKXtkaXNwbGF5Om5vbmUgIWltcG9ydGFudDt9bmdc
XDpmb3Jte2Rpc3BsYXk6YmxvY2s7fS5uZy1hbmltYXRlLXNoaW17dmlzaWJpbGl0eTpoaWRkZW47
fS5uZy1hbmNob3J7cG9zaXRpb246YWJzb2x1dGU7fTwvc3R5bGU+Jyk7ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL25vZGVfbW9k
dWxlcy9hbmd1bGFyL2FuZ3VsYXIubWluLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL25vZGVf
bW9kdWxlcy9hbmd1bGFyL2FuZ3VsYXIubWluLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJjMjhlZjk2ZjI2MTM5
MmUxMTI2Y2E5ZjMxNmE5ZTc1ZTZmM2Q2ZmYKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9hbmd1bGFyanMvbm9kZV9tb2R1bGVzL2FuZ3VsYXIvYW5ndWxhci5taW4uanMKQEAgLTAsMCAr
MSwyOTAgQEAKKy8qCisgQW5ndWxhckpTIHYxLjQuMworIChjKSAyMDEwLTIwMTUgR29vZ2xlLCBJ
bmMuIGh0dHA6Ly9hbmd1bGFyanMub3JnCisgTGljZW5zZTogTUlUCisqLworKGZ1bmN0aW9uKE8s
VSx0KXsndXNlIHN0cmljdCc7ZnVuY3Rpb24gSihiKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYT1h
cmd1bWVudHNbMF0sYztjPSJbIisoYj9iKyI6IjoiIikrYSsiXSBodHRwOi8vZXJyb3JzLmFuZ3Vs
YXJqcy5vcmcvMS40LjMvIisoYj9iKyIvIjoiIikrYTtmb3IoYT0xO2E8YXJndW1lbnRzLmxlbmd0
aDthKyspe2M9YysoMT09YT8iPyI6IiYiKSsicCIrKGEtMSkrIj0iO3ZhciBkPWVuY29kZVVSSUNv
bXBvbmVudCxlO2U9YXJndW1lbnRzW2FdO2U9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZS50b1N0cmlu
ZygpLnJlcGxhY2UoLyBce1tcc1xTXSokLywiIik6InVuZGVmaW5lZCI9PXR5cGVvZiBlPyJ1bmRl
ZmluZWQiOiJzdHJpbmciIT10eXBlb2YgZT9KU09OLnN0cmluZ2lmeShlKTplO2MrPWQoZSl9cmV0
dXJuIEVycm9yKGMpfX1mdW5jdGlvbiBFYShiKXtpZihudWxsPT1ifHxXYShiKSlyZXR1cm4hMTt2
YXIgYT0ibGVuZ3RoImluIE9iamVjdChiKSYmYi5sZW5ndGg7CityZXR1cm4gYi5ub2RlVHlwZT09
PXFhJiZhPyEwOkwoYil8fEcoYil8fDA9PT1hfHwibnVtYmVyIj09PXR5cGVvZiBhJiYwPGEmJmEt
MSBpbiBifWZ1bmN0aW9uIG0oYixhLGMpe3ZhciBkLGU7aWYoYilpZih6KGIpKWZvcihkIGluIGIp
InByb3RvdHlwZSI9PWR8fCJsZW5ndGgiPT1kfHwibmFtZSI9PWR8fGIuaGFzT3duUHJvcGVydHkm
JiFiLmhhc093blByb3BlcnR5KGQpfHxhLmNhbGwoYyxiW2RdLGQsYik7ZWxzZSBpZihHKGIpfHxF
YShiKSl7dmFyIGY9Im9iamVjdCIhPT10eXBlb2YgYjtkPTA7Zm9yKGU9Yi5sZW5ndGg7ZDxlO2Qr
KykoZnx8ZCBpbiBiKSYmYS5jYWxsKGMsYltkXSxkLGIpfWVsc2UgaWYoYi5mb3JFYWNoJiZiLmZv
ckVhY2ghPT1tKWIuZm9yRWFjaChhLGMsYik7ZWxzZSBpZihuYyhiKSlmb3IoZCBpbiBiKWEuY2Fs
bChjLGJbZF0sZCxiKTtlbHNlIGlmKCJmdW5jdGlvbiI9PT10eXBlb2YgYi5oYXNPd25Qcm9wZXJ0
eSlmb3IoZCBpbiBiKWIuaGFzT3duUHJvcGVydHkoZCkmJgorYS5jYWxsKGMsYltkXSxkLGIpO2Vs
c2UgZm9yKGQgaW4gYilYYS5jYWxsKGIsZCkmJmEuY2FsbChjLGJbZF0sZCxiKTtyZXR1cm4gYn1m
dW5jdGlvbiBvYyhiLGEsYyl7Zm9yKHZhciBkPU9iamVjdC5rZXlzKGIpLnNvcnQoKSxlPTA7ZTxk
Lmxlbmd0aDtlKyspYS5jYWxsKGMsYltkW2VdXSxkW2VdKTtyZXR1cm4gZH1mdW5jdGlvbiBwYyhi
KXtyZXR1cm4gZnVuY3Rpb24oYSxjKXtiKGMsYSl9fWZ1bmN0aW9uIFVkKCl7cmV0dXJuKytuYn1m
dW5jdGlvbiBxYyhiLGEpe2E/Yi4kJGhhc2hLZXk9YTpkZWxldGUgYi4kJGhhc2hLZXl9ZnVuY3Rp
b24gTmIoYixhLGMpe2Zvcih2YXIgZD1iLiQkaGFzaEtleSxlPTAsZj1hLmxlbmd0aDtlPGY7Kytl
KXt2YXIgZz1hW2VdO2lmKEgoZyl8fHooZykpZm9yKHZhciBoPU9iamVjdC5rZXlzKGcpLGw9MCxr
PWgubGVuZ3RoO2w8aztsKyspe3ZhciBuPWhbbF0scj1nW25dO2MmJkgocik/YWEocik/YltuXT1u
ZXcgRGF0ZShyLnZhbHVlT2YoKSk6KEgoYltuXSl8fAorKGJbbl09RyhyKT9bXTp7fSksTmIoYltu
XSxbcl0sITApKTpiW25dPXJ9fXFjKGIsZCk7cmV0dXJuIGJ9ZnVuY3Rpb24gUChiKXtyZXR1cm4g
TmIoYix6YS5jYWxsKGFyZ3VtZW50cywxKSwhMSl9ZnVuY3Rpb24gVmQoYil7cmV0dXJuIE5iKGIs
emEuY2FsbChhcmd1bWVudHMsMSksITApfWZ1bmN0aW9uIFcoYil7cmV0dXJuIHBhcnNlSW50KGIs
MTApfWZ1bmN0aW9uIE9iKGIsYSl7cmV0dXJuIFAoT2JqZWN0LmNyZWF0ZShiKSxhKX1mdW5jdGlv
biB2KCl7fWZ1bmN0aW9uIFlhKGIpe3JldHVybiBifWZ1bmN0aW9uIHJhKGIpe3JldHVybiBmdW5j
dGlvbigpe3JldHVybiBifX1mdW5jdGlvbiByYyhiKXtyZXR1cm4geihiLnRvU3RyaW5nKSYmYi50
b1N0cmluZyE9PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmd9ZnVuY3Rpb24gQShiKXtyZXR1cm4i
dW5kZWZpbmVkIj09PXR5cGVvZiBifWZ1bmN0aW9uIHcoYil7cmV0dXJuInVuZGVmaW5lZCIhPT10
eXBlb2YgYn1mdW5jdGlvbiBIKGIpe3JldHVybiBudWxsIT09CitiJiYib2JqZWN0Ij09PXR5cGVv
ZiBifWZ1bmN0aW9uIG5jKGIpe3JldHVybiBudWxsIT09YiYmIm9iamVjdCI9PT10eXBlb2YgYiYm
IXNjKGIpfWZ1bmN0aW9uIEwoYil7cmV0dXJuInN0cmluZyI9PT10eXBlb2YgYn1mdW5jdGlvbiBW
KGIpe3JldHVybiJudW1iZXIiPT09dHlwZW9mIGJ9ZnVuY3Rpb24gYWEoYil7cmV0dXJuIltvYmpl
Y3QgRGF0ZV0iPT09c2EuY2FsbChiKX1mdW5jdGlvbiB6KGIpe3JldHVybiJmdW5jdGlvbiI9PT10
eXBlb2YgYn1mdW5jdGlvbiBaYShiKXtyZXR1cm4iW29iamVjdCBSZWdFeHBdIj09PXNhLmNhbGwo
Yil9ZnVuY3Rpb24gV2EoYil7cmV0dXJuIGImJmIud2luZG93PT09Yn1mdW5jdGlvbiAkYShiKXty
ZXR1cm4gYiYmYi4kZXZhbEFzeW5jJiZiLiR3YXRjaH1mdW5jdGlvbiBhYihiKXtyZXR1cm4iYm9v
bGVhbiI9PT10eXBlb2YgYn1mdW5jdGlvbiB0YyhiKXtyZXR1cm4hKCFifHwhKGIubm9kZU5hbWV8
fGIucHJvcCYmYi5hdHRyJiZiLmZpbmQpKX0KK2Z1bmN0aW9uIFdkKGIpe3ZhciBhPXt9O2I9Yi5z
cGxpdCgiLCIpO3ZhciBjO2ZvcihjPTA7YzxiLmxlbmd0aDtjKyspYVtiW2NdXT0hMDtyZXR1cm4g
YX1mdW5jdGlvbiB0YShiKXtyZXR1cm4gTShiLm5vZGVOYW1lfHxiWzBdJiZiWzBdLm5vZGVOYW1l
KX1mdW5jdGlvbiBiYihiLGEpe3ZhciBjPWIuaW5kZXhPZihhKTswPD1jJiZiLnNwbGljZShjLDEp
O3JldHVybiBjfWZ1bmN0aW9uIGZhKGIsYSxjLGQpe2lmKFdhKGIpfHwkYShiKSl0aHJvdyBGYSgi
Y3B3cyIpO2lmKHVjLnRlc3Qoc2EuY2FsbChhKSkpdGhyb3cgRmEoImNwdGEiKTtpZihhKXtpZihi
PT09YSl0aHJvdyBGYSgiY3BpIik7Yz1jfHxbXTtkPWR8fFtdO0goYikmJihjLnB1c2goYiksZC5w
dXNoKGEpKTt2YXIgZTtpZihHKGIpKWZvcihlPWEubGVuZ3RoPTA7ZTxiLmxlbmd0aDtlKyspYS5w
dXNoKGZhKGJbZV0sbnVsbCxjLGQpKTtlbHNle3ZhciBmPWEuJCRoYXNoS2V5O0coYSk/YS5sZW5n
dGg9MDptKGEsZnVuY3Rpb24oYiwKK2Mpe2RlbGV0ZSBhW2NdfSk7aWYobmMoYikpZm9yKGUgaW4g
YilhW2VdPWZhKGJbZV0sbnVsbCxjLGQpO2Vsc2UgaWYoYiYmImZ1bmN0aW9uIj09PXR5cGVvZiBi
Lmhhc093blByb3BlcnR5KWZvcihlIGluIGIpYi5oYXNPd25Qcm9wZXJ0eShlKSYmKGFbZV09ZmEo
YltlXSxudWxsLGMsZCkpO2Vsc2UgZm9yKGUgaW4gYilYYS5jYWxsKGIsZSkmJihhW2VdPWZhKGJb
ZV0sbnVsbCxjLGQpKTtxYyhhLGYpfX1lbHNlIGlmKGE9YixIKGIpKXtpZihjJiYtMSE9PShmPWMu
aW5kZXhPZihiKSkpcmV0dXJuIGRbZl07aWYoRyhiKSlyZXR1cm4gZmEoYixbXSxjLGQpO2lmKHVj
LnRlc3Qoc2EuY2FsbChiKSkpYT1uZXcgYi5jb25zdHJ1Y3RvcihiKTtlbHNlIGlmKGFhKGIpKWE9
bmV3IERhdGUoYi5nZXRUaW1lKCkpO2Vsc2UgaWYoWmEoYikpYT1uZXcgUmVnRXhwKGIuc291cmNl
LGIudG9TdHJpbmcoKS5tYXRjaCgvW15cL10qJC8pWzBdKSxhLmxhc3RJbmRleD1iLmxhc3RJbmRl
eDtlbHNlIHJldHVybiBlPQorT2JqZWN0LmNyZWF0ZShzYyhiKSksZmEoYixlLGMsZCk7ZCYmKGMu
cHVzaChiKSxkLnB1c2goYSkpfXJldHVybiBhfWZ1bmN0aW9uIGlhKGIsYSl7aWYoRyhiKSl7YT1h
fHxbXTtmb3IodmFyIGM9MCxkPWIubGVuZ3RoO2M8ZDtjKyspYVtjXT1iW2NdfWVsc2UgaWYoSChi
KSlmb3IoYyBpbiBhPWF8fHt9LGIpaWYoIiQiIT09Yy5jaGFyQXQoMCl8fCIkIiE9PWMuY2hhckF0
KDEpKWFbY109YltjXTtyZXR1cm4gYXx8Yn1mdW5jdGlvbiBrYShiLGEpe2lmKGI9PT1hKXJldHVy
biEwO2lmKG51bGw9PT1ifHxudWxsPT09YSlyZXR1cm4hMTtpZihiIT09YiYmYSE9PWEpcmV0dXJu
ITA7dmFyIGM9dHlwZW9mIGIsZDtpZihjPT10eXBlb2YgYSYmIm9iamVjdCI9PWMpaWYoRyhiKSl7
aWYoIUcoYSkpcmV0dXJuITE7aWYoKGM9Yi5sZW5ndGgpPT1hLmxlbmd0aCl7Zm9yKGQ9MDtkPGM7
ZCsrKWlmKCFrYShiW2RdLGFbZF0pKXJldHVybiExO3JldHVybiEwfX1lbHNle2lmKGFhKGIpKXJl
dHVybiBhYShhKT8KK2thKGIuZ2V0VGltZSgpLGEuZ2V0VGltZSgpKTohMTtpZihaYShiKSlyZXR1
cm4gWmEoYSk/Yi50b1N0cmluZygpPT1hLnRvU3RyaW5nKCk6ITE7aWYoJGEoYil8fCRhKGEpfHxX
YShiKXx8V2EoYSl8fEcoYSl8fGFhKGEpfHxaYShhKSlyZXR1cm4hMTtjPWdhKCk7Zm9yKGQgaW4g
YilpZigiJCIhPT1kLmNoYXJBdCgwKSYmIXooYltkXSkpe2lmKCFrYShiW2RdLGFbZF0pKXJldHVy
biExO2NbZF09ITB9Zm9yKGQgaW4gYSlpZighKGQgaW4gY3x8IiQiPT09ZC5jaGFyQXQoMCl8fGFb
ZF09PT10fHx6KGFbZF0pKSlyZXR1cm4hMTtyZXR1cm4hMH1yZXR1cm4hMX1mdW5jdGlvbiBjYihi
LGEsYyl7cmV0dXJuIGIuY29uY2F0KHphLmNhbGwoYSxjKSl9ZnVuY3Rpb24gdmMoYixhKXt2YXIg
Yz0yPGFyZ3VtZW50cy5sZW5ndGg/emEuY2FsbChhcmd1bWVudHMsMik6W107cmV0dXJuIXooYSl8
fGEgaW5zdGFuY2VvZiBSZWdFeHA/YTpjLmxlbmd0aD9mdW5jdGlvbigpe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPworYS5hcHBseShiLGNiKGMsYXJndW1lbnRzLDApKTphLmFwcGx5KGIsYyl9OmZ1
bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/YS5hcHBseShiLGFyZ3VtZW50cyk6YS5j
YWxsKGIpfX1mdW5jdGlvbiBYZChiLGEpe3ZhciBjPWE7InN0cmluZyI9PT10eXBlb2YgYiYmIiQi
PT09Yi5jaGFyQXQoMCkmJiIkIj09PWIuY2hhckF0KDEpP2M9dDpXYShhKT9jPSIkV0lORE9XIjph
JiZVPT09YT9jPSIkRE9DVU1FTlQiOiRhKGEpJiYoYz0iJFNDT1BFIik7cmV0dXJuIGN9ZnVuY3Rp
b24gZGIoYixhKXtpZigidW5kZWZpbmVkIj09PXR5cGVvZiBiKXJldHVybiB0O1YoYSl8fChhPWE/
MjpudWxsKTtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoYixYZCxhKX1mdW5jdGlvbiB3YyhiKXtyZXR1
cm4gTChiKT9KU09OLnBhcnNlKGIpOmJ9ZnVuY3Rpb24geGMoYixhKXt2YXIgYz1EYXRlLnBhcnNl
KCJKYW4gMDEsIDE5NzAgMDA6MDA6MDAgIitiKS82RTQ7cmV0dXJuIGlzTmFOKGMpP2E6Y31mdW5j
dGlvbiBQYihiLAorYSxjKXtjPWM/LTE6MTt2YXIgZD14YyhhLGIuZ2V0VGltZXpvbmVPZmZzZXQo
KSk7YT1iO2I9YyooZC1iLmdldFRpbWV6b25lT2Zmc2V0KCkpO2E9bmV3IERhdGUoYS5nZXRUaW1l
KCkpO2Euc2V0TWludXRlcyhhLmdldE1pbnV0ZXMoKStiKTtyZXR1cm4gYX1mdW5jdGlvbiB1YShi
KXtiPXkoYikuY2xvbmUoKTt0cnl7Yi5lbXB0eSgpfWNhdGNoKGEpe312YXIgYz15KCI8ZGl2PiIp
LmFwcGVuZChiKS5odG1sKCk7dHJ5e3JldHVybiBiWzBdLm5vZGVUeXBlPT09TmE/TShjKTpjLm1h
dGNoKC9eKDxbXj5dKz4pLylbMV0ucmVwbGFjZSgvXjwoW1x3XC1dKykvLGZ1bmN0aW9uKGEsYil7
cmV0dXJuIjwiK00oYil9KX1jYXRjaChkKXtyZXR1cm4gTShjKX19ZnVuY3Rpb24geWMoYil7dHJ5
e3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoYil9Y2F0Y2goYSl7fX1mdW5jdGlvbiB6YyhiKXt2
YXIgYT17fSxjLGQ7bSgoYnx8IiIpLnNwbGl0KCImIiksZnVuY3Rpb24oYil7YiYmKGM9Yi5yZXBs
YWNlKC9cKy9nLAorIiUyMCIpLnNwbGl0KCI9IiksZD15YyhjWzBdKSx3KGQpJiYoYj13KGNbMV0p
P3ljKGNbMV0pOiEwLFhhLmNhbGwoYSxkKT9HKGFbZF0pP2FbZF0ucHVzaChiKTphW2RdPVthW2Rd
LGJdOmFbZF09YikpfSk7cmV0dXJuIGF9ZnVuY3Rpb24gUWIoYil7dmFyIGE9W107bShiLGZ1bmN0
aW9uKGIsZCl7RyhiKT9tKGIsZnVuY3Rpb24oYil7YS5wdXNoKG1hKGQsITApKyghMD09PWI/IiI6
Ij0iK21hKGIsITApKSl9KTphLnB1c2gobWEoZCwhMCkrKCEwPT09Yj8iIjoiPSIrbWEoYiwhMCkp
KX0pO3JldHVybiBhLmxlbmd0aD9hLmpvaW4oIiYiKToiIn1mdW5jdGlvbiBvYihiKXtyZXR1cm4g
bWEoYiwhMCkucmVwbGFjZSgvJTI2L2dpLCImIikucmVwbGFjZSgvJTNEL2dpLCI9IikucmVwbGFj
ZSgvJTJCL2dpLCIrIil9ZnVuY3Rpb24gbWEoYixhKXtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50
KGIpLnJlcGxhY2UoLyU0MC9naSwiQCIpLnJlcGxhY2UoLyUzQS9naSwiOiIpLnJlcGxhY2UoLyUy
NC9nLAorIiQiKS5yZXBsYWNlKC8lMkMvZ2ksIiwiKS5yZXBsYWNlKC8lM0IvZ2ksIjsiKS5yZXBs
YWNlKC8lMjAvZyxhPyIlMjAiOiIrIil9ZnVuY3Rpb24gWWQoYixhKXt2YXIgYyxkLGU9T2EubGVu
Z3RoO2ZvcihkPTA7ZDxlOysrZClpZihjPU9hW2RdK2EsTChjPWIuZ2V0QXR0cmlidXRlKGMpKSly
ZXR1cm4gYztyZXR1cm4gbnVsbH1mdW5jdGlvbiBaZChiLGEpe3ZhciBjLGQsZT17fTttKE9hLGZ1
bmN0aW9uKGEpe2ErPSJhcHAiOyFjJiZiLmhhc0F0dHJpYnV0ZSYmYi5oYXNBdHRyaWJ1dGUoYSkm
JihjPWIsZD1iLmdldEF0dHJpYnV0ZShhKSl9KTttKE9hLGZ1bmN0aW9uKGEpe2ErPSJhcHAiO3Zh
ciBlOyFjJiYoZT1iLnF1ZXJ5U2VsZWN0b3IoIlsiK2EucmVwbGFjZSgiOiIsIlxcOiIpKyJdIikp
JiYoYz1lLGQ9ZS5nZXRBdHRyaWJ1dGUoYSkpfSk7YyYmKGUuc3RyaWN0RGk9bnVsbCE9PVlkKGMs
InN0cmljdC1kaSIpLGEoYyxkP1tkXTpbXSxlKSl9ZnVuY3Rpb24gQWMoYixhLGMpe0goYyl8fAor
KGM9e30pO2M9UCh7c3RyaWN0RGk6ITF9LGMpO3ZhciBkPWZ1bmN0aW9uKCl7Yj15KGIpO2lmKGIu
aW5qZWN0b3IoKSl7dmFyIGQ9YlswXT09PVU/ImRvY3VtZW50Ijp1YShiKTt0aHJvdyBGYSgiYnRz
dHJwZCIsZC5yZXBsYWNlKC88LywiJmx0OyIpLnJlcGxhY2UoLz4vLCImZ3Q7IikpO31hPWF8fFtd
O2EudW5zaGlmdChbIiRwcm92aWRlIixmdW5jdGlvbihhKXthLnZhbHVlKCIkcm9vdEVsZW1lbnQi
LGIpfV0pO2MuZGVidWdJbmZvRW5hYmxlZCYmYS5wdXNoKFsiJGNvbXBpbGVQcm92aWRlciIsZnVu
Y3Rpb24oYSl7YS5kZWJ1Z0luZm9FbmFibGVkKCEwKX1dKTthLnVuc2hpZnQoIm5nIik7ZD1lYihh
LGMuc3RyaWN0RGkpO2QuaW52b2tlKFsiJHJvb3RTY29wZSIsIiRyb290RWxlbWVudCIsIiRjb21w
aWxlIiwiJGluamVjdG9yIixmdW5jdGlvbihhLGIsYyxkKXthLiRhcHBseShmdW5jdGlvbigpe2Iu
ZGF0YSgiJGluamVjdG9yIixkKTtjKGIpKGEpfSl9XSk7cmV0dXJuIGR9LGU9CisvXk5HX0VOQUJM
RV9ERUJVR19JTkZPIS8sZj0vXk5HX0RFRkVSX0JPT1RTVFJBUCEvO08mJmUudGVzdChPLm5hbWUp
JiYoYy5kZWJ1Z0luZm9FbmFibGVkPSEwLE8ubmFtZT1PLm5hbWUucmVwbGFjZShlLCIiKSk7aWYo
TyYmIWYudGVzdChPLm5hbWUpKXJldHVybiBkKCk7Ty5uYW1lPU8ubmFtZS5yZXBsYWNlKGYsIiIp
O2NhLnJlc3VtZUJvb3RzdHJhcD1mdW5jdGlvbihiKXttKGIsZnVuY3Rpb24oYil7YS5wdXNoKGIp
fSk7cmV0dXJuIGQoKX07eihjYS5yZXN1bWVEZWZlcnJlZEJvb3RzdHJhcCkmJmNhLnJlc3VtZURl
ZmVycmVkQm9vdHN0cmFwKCl9ZnVuY3Rpb24gJGQoKXtPLm5hbWU9Ik5HX0VOQUJMRV9ERUJVR19J
TkZPISIrTy5uYW1lO08ubG9jYXRpb24ucmVsb2FkKCl9ZnVuY3Rpb24gYWUoYil7Yj1jYS5lbGVt
ZW50KGIpLmluamVjdG9yKCk7aWYoIWIpdGhyb3cgRmEoInRlc3QiKTtyZXR1cm4gYi5nZXQoIiQk
dGVzdGFiaWxpdHkiKX1mdW5jdGlvbiBCYyhiLGEpe2E9YXx8CisiXyI7cmV0dXJuIGIucmVwbGFj
ZShiZSxmdW5jdGlvbihiLGQpe3JldHVybihkP2E6IiIpK2IudG9Mb3dlckNhc2UoKX0pfWZ1bmN0
aW9uIGNlKCl7dmFyIGI7aWYoIUNjKXt2YXIgYT1wYigpO2xhPU8ualF1ZXJ5O3coYSkmJihsYT1u
dWxsPT09YT90Ok9bYV0pO2xhJiZsYS5mbi5vbj8oeT1sYSxQKGxhLmZuLHtzY29wZTpQYS5zY29w
ZSxpc29sYXRlU2NvcGU6UGEuaXNvbGF0ZVNjb3BlLGNvbnRyb2xsZXI6UGEuY29udHJvbGxlcixp
bmplY3RvcjpQYS5pbmplY3Rvcixpbmhlcml0ZWREYXRhOlBhLmluaGVyaXRlZERhdGF9KSxiPWxh
LmNsZWFuRGF0YSxsYS5jbGVhbkRhdGE9ZnVuY3Rpb24oYSl7dmFyIGQ7aWYoUmIpUmI9ITE7ZWxz
ZSBmb3IodmFyIGU9MCxmO251bGwhPShmPWFbZV0pO2UrKykoZD1sYS5fZGF0YShmLCJldmVudHMi
KSkmJmQuJGRlc3Ryb3kmJmxhKGYpLnRyaWdnZXJIYW5kbGVyKCIkZGVzdHJveSIpO2IoYSl9KTp5
PVE7Y2EuZWxlbWVudD15O0NjPSEwfX1mdW5jdGlvbiBTYihiLAorYSxjKXtpZighYil0aHJvdyBG
YSgiYXJlcSIsYXx8Ij8iLGN8fCJyZXF1aXJlZCIpO3JldHVybiBifWZ1bmN0aW9uIFFhKGIsYSxj
KXtjJiZHKGIpJiYoYj1iW2IubGVuZ3RoLTFdKTtTYih6KGIpLGEsIm5vdCBhIGZ1bmN0aW9uLCBn
b3QgIisoYiYmIm9iamVjdCI9PT10eXBlb2YgYj9iLmNvbnN0cnVjdG9yLm5hbWV8fCJPYmplY3Qi
OnR5cGVvZiBiKSk7cmV0dXJuIGJ9ZnVuY3Rpb24gUmEoYixhKXtpZigiaGFzT3duUHJvcGVydHki
PT09Yil0aHJvdyBGYSgiYmFkbmFtZSIsYSk7fWZ1bmN0aW9uIERjKGIsYSxjKXtpZighYSlyZXR1
cm4gYjthPWEuc3BsaXQoIi4iKTtmb3IodmFyIGQsZT1iLGY9YS5sZW5ndGgsZz0wO2c8ZjtnKysp
ZD1hW2ddLGImJihiPShlPWIpW2RdKTtyZXR1cm4hYyYmeihiKT92YyhlLGIpOmJ9ZnVuY3Rpb24g
cWIoYil7dmFyIGE9YlswXTtiPWJbYi5sZW5ndGgtMV07dmFyIGM9W2FdO2Rve2E9YS5uZXh0U2li
bGluZztpZighYSlicmVhaztjLnB1c2goYSl9d2hpbGUoYSE9PQorYik7cmV0dXJuIHkoYyl9ZnVu
Y3Rpb24gZ2EoKXtyZXR1cm4gT2JqZWN0LmNyZWF0ZShudWxsKX1mdW5jdGlvbiBkZShiKXtmdW5j
dGlvbiBhKGEsYixjKXtyZXR1cm4gYVtiXXx8KGFbYl09YygpKX12YXIgYz1KKCIkaW5qZWN0b3Ii
KSxkPUooIm5nIik7Yj1hKGIsImFuZ3VsYXIiLE9iamVjdCk7Yi4kJG1pbkVycj1iLiQkbWluRXJy
fHxKO3JldHVybiBhKGIsIm1vZHVsZSIsZnVuY3Rpb24oKXt2YXIgYj17fTtyZXR1cm4gZnVuY3Rp
b24oZixnLGgpe2lmKCJoYXNPd25Qcm9wZXJ0eSI9PT1mKXRocm93IGQoImJhZG5hbWUiLCJtb2R1
bGUiKTtnJiZiLmhhc093blByb3BlcnR5KGYpJiYoYltmXT1udWxsKTtyZXR1cm4gYShiLGYsZnVu
Y3Rpb24oKXtmdW5jdGlvbiBhKGIsYyxlLGYpe2Z8fChmPWQpO3JldHVybiBmdW5jdGlvbigpe2Zb
ZXx8InB1c2giXShbYixjLGFyZ3VtZW50c10pO3JldHVybiBDfX1mdW5jdGlvbiBiKGEsYyl7cmV0
dXJuIGZ1bmN0aW9uKGIsZSl7ZSYmeihlKSYmCisoZS4kJG1vZHVsZU5hbWU9Zik7ZC5wdXNoKFth
LGMsYXJndW1lbnRzXSk7cmV0dXJuIEN9fWlmKCFnKXRocm93IGMoIm5vbW9kIixmKTt2YXIgZD1b
XSxlPVtdLHM9W10seD1hKCIkaW5qZWN0b3IiLCJpbnZva2UiLCJwdXNoIixlKSxDPXtfaW52b2tl
UXVldWU6ZCxfY29uZmlnQmxvY2tzOmUsX3J1bkJsb2NrczpzLHJlcXVpcmVzOmcsbmFtZTpmLHBy
b3ZpZGVyOmIoIiRwcm92aWRlIiwicHJvdmlkZXIiKSxmYWN0b3J5OmIoIiRwcm92aWRlIiwiZmFj
dG9yeSIpLHNlcnZpY2U6YigiJHByb3ZpZGUiLCJzZXJ2aWNlIiksdmFsdWU6YSgiJHByb3ZpZGUi
LCJ2YWx1ZSIpLGNvbnN0YW50OmEoIiRwcm92aWRlIiwiY29uc3RhbnQiLCJ1bnNoaWZ0IiksZGVj
b3JhdG9yOmIoIiRwcm92aWRlIiwiZGVjb3JhdG9yIiksYW5pbWF0aW9uOmIoIiRhbmltYXRlUHJv
dmlkZXIiLCJyZWdpc3RlciIpLGZpbHRlcjpiKCIkZmlsdGVyUHJvdmlkZXIiLCJyZWdpc3RlciIp
LGNvbnRyb2xsZXI6YigiJGNvbnRyb2xsZXJQcm92aWRlciIsCisicmVnaXN0ZXIiKSxkaXJlY3Rp
dmU6YigiJGNvbXBpbGVQcm92aWRlciIsImRpcmVjdGl2ZSIpLGNvbmZpZzp4LHJ1bjpmdW5jdGlv
bihhKXtzLnB1c2goYSk7cmV0dXJuIHRoaXN9fTtoJiZ4KGgpO3JldHVybiBDfSl9fSl9ZnVuY3Rp
b24gZWUoYil7UChiLHtib290c3RyYXA6QWMsY29weTpmYSxleHRlbmQ6UCxtZXJnZTpWZCxlcXVh
bHM6a2EsZWxlbWVudDp5LGZvckVhY2g6bSxpbmplY3RvcjplYixub29wOnYsYmluZDp2Yyx0b0pz
b246ZGIsZnJvbUpzb246d2MsaWRlbnRpdHk6WWEsaXNVbmRlZmluZWQ6QSxpc0RlZmluZWQ6dyxp
c1N0cmluZzpMLGlzRnVuY3Rpb246eixpc09iamVjdDpILGlzTnVtYmVyOlYsaXNFbGVtZW50OnRj
LGlzQXJyYXk6Ryx2ZXJzaW9uOmZlLGlzRGF0ZTphYSxsb3dlcmNhc2U6TSx1cHBlcmNhc2U6cmIs
Y2FsbGJhY2tzOntjb3VudGVyOjB9LGdldFRlc3RhYmlsaXR5OmFlLCQkbWluRXJyOkosJCRjc3A6
ZmIscmVsb2FkV2l0aERlYnVnSW5mbzokZH0pOworZ2I9ZGUoTyk7dHJ5e2diKCJuZ0xvY2FsZSIp
fWNhdGNoKGEpe2diKCJuZ0xvY2FsZSIsW10pLnByb3ZpZGVyKCIkbG9jYWxlIixnZSl9Z2IoIm5n
IixbIm5nTG9jYWxlIl0sWyIkcHJvdmlkZSIsZnVuY3Rpb24oYSl7YS5wcm92aWRlcih7JCRzYW5p
dGl6ZVVyaTpoZX0pO2EucHJvdmlkZXIoIiRjb21waWxlIixFYykuZGlyZWN0aXZlKHthOmllLGlu
cHV0OkZjLHRleHRhcmVhOkZjLGZvcm06amUsc2NyaXB0OmtlLHNlbGVjdDpsZSxzdHlsZTptZSxv
cHRpb246bmUsbmdCaW5kOm9lLG5nQmluZEh0bWw6cGUsbmdCaW5kVGVtcGxhdGU6cWUsbmdDbGFz
czpyZSxuZ0NsYXNzRXZlbjpzZSxuZ0NsYXNzT2RkOnRlLG5nQ2xvYWs6dWUsbmdDb250cm9sbGVy
OnZlLG5nRm9ybTp3ZSxuZ0hpZGU6eGUsbmdJZjp5ZSxuZ0luY2x1ZGU6emUsbmdJbml0OkFlLG5n
Tm9uQmluZGFibGU6QmUsbmdQbHVyYWxpemU6Q2UsbmdSZXBlYXQ6RGUsbmdTaG93OkVlLG5nU3R5
bGU6RmUsbmdTd2l0Y2g6R2UsCituZ1N3aXRjaFdoZW46SGUsbmdTd2l0Y2hEZWZhdWx0OkllLG5n
T3B0aW9uczpKZSxuZ1RyYW5zY2x1ZGU6S2UsbmdNb2RlbDpMZSxuZ0xpc3Q6TWUsbmdDaGFuZ2U6
TmUscGF0dGVybjpHYyxuZ1BhdHRlcm46R2MscmVxdWlyZWQ6SGMsbmdSZXF1aXJlZDpIYyxtaW5s
ZW5ndGg6SWMsbmdNaW5sZW5ndGg6SWMsbWF4bGVuZ3RoOkpjLG5nTWF4bGVuZ3RoOkpjLG5nVmFs
dWU6T2UsbmdNb2RlbE9wdGlvbnM6UGV9KS5kaXJlY3RpdmUoe25nSW5jbHVkZTpRZX0pLmRpcmVj
dGl2ZShzYikuZGlyZWN0aXZlKEtjKTthLnByb3ZpZGVyKHskYW5jaG9yU2Nyb2xsOlJlLCRhbmlt
YXRlOlNlLCQkYW5pbWF0ZVF1ZXVlOlRlLCQkQW5pbWF0ZVJ1bm5lcjpVZSwkYnJvd3NlcjpWZSwk
Y2FjaGVGYWN0b3J5OldlLCRjb250cm9sbGVyOlhlLCRkb2N1bWVudDpZZSwkZXhjZXB0aW9uSGFu
ZGxlcjpaZSwkZmlsdGVyOkxjLCRpbnRlcnBvbGF0ZTokZSwkaW50ZXJ2YWw6YWYsJGh0dHA6YmYs
JGh0dHBQYXJhbVNlcmlhbGl6ZXI6Y2YsCiskaHR0cFBhcmFtU2VyaWFsaXplckpRTGlrZTpkZiwk
aHR0cEJhY2tlbmQ6ZWYsJGxvY2F0aW9uOmZmLCRsb2c6Z2YsJHBhcnNlOmhmLCRyb290U2NvcGU6
amYsJHE6a2YsJCRxOmxmLCRzY2U6bWYsJHNjZURlbGVnYXRlOm5mLCRzbmlmZmVyOm9mLCR0ZW1w
bGF0ZUNhY2hlOnBmLCR0ZW1wbGF0ZVJlcXVlc3Q6cWYsJCR0ZXN0YWJpbGl0eTpyZiwkdGltZW91
dDpzZiwkd2luZG93OnRmLCQkckFGOnVmLCQkanFMaXRlOnZmLCQkSGFzaE1hcDp3ZiwkJGNvb2tp
ZVJlYWRlcjp4Zn0pfV0pfWZ1bmN0aW9uIGhiKGIpe3JldHVybiBiLnJlcGxhY2UoeWYsZnVuY3Rp
b24oYSxiLGQsZSl7cmV0dXJuIGU/ZC50b1VwcGVyQ2FzZSgpOmR9KS5yZXBsYWNlKHpmLCJNb3ok
MSIpfWZ1bmN0aW9uIE1jKGIpe2I9Yi5ub2RlVHlwZTtyZXR1cm4gYj09PXFhfHwhYnx8OT09PWJ9
ZnVuY3Rpb24gTmMoYixhKXt2YXIgYyxkLGU9YS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksZj1b
XTtpZihUYi50ZXN0KGIpKXtjPQorY3x8ZS5hcHBlbmRDaGlsZChhLmNyZWF0ZUVsZW1lbnQoImRp
diIpKTtkPShBZi5leGVjKGIpfHxbIiIsIiJdKVsxXS50b0xvd2VyQ2FzZSgpO2Q9bmFbZF18fG5h
Ll9kZWZhdWx0O2MuaW5uZXJIVE1MPWRbMV0rYi5yZXBsYWNlKEJmLCI8JDE+PC8kMj4iKStkWzJd
O2ZvcihkPWRbMF07ZC0tOyljPWMubGFzdENoaWxkO2Y9Y2IoZixjLmNoaWxkTm9kZXMpO2M9ZS5m
aXJzdENoaWxkO2MudGV4dENvbnRlbnQ9IiJ9ZWxzZSBmLnB1c2goYS5jcmVhdGVUZXh0Tm9kZShi
KSk7ZS50ZXh0Q29udGVudD0iIjtlLmlubmVySFRNTD0iIjttKGYsZnVuY3Rpb24oYSl7ZS5hcHBl
bmRDaGlsZChhKX0pO3JldHVybiBlfWZ1bmN0aW9uIFEoYil7aWYoYiBpbnN0YW5jZW9mIFEpcmV0
dXJuIGI7dmFyIGE7TChiKSYmKGI9UihiKSxhPSEwKTtpZighKHRoaXMgaW5zdGFuY2VvZiBRKSl7
aWYoYSYmIjwiIT1iLmNoYXJBdCgwKSl0aHJvdyBVYigibm9zZWwiKTtyZXR1cm4gbmV3IFEoYil9
aWYoYSl7YT1VOwordmFyIGM7Yj0oYz1DZi5leGVjKGIpKT9bYS5jcmVhdGVFbGVtZW50KGNbMV0p
XTooYz1OYyhiLGEpKT9jLmNoaWxkTm9kZXM6W119T2ModGhpcyxiKX1mdW5jdGlvbiBWYihiKXty
ZXR1cm4gYi5jbG9uZU5vZGUoITApfWZ1bmN0aW9uIHRiKGIsYSl7YXx8dWIoYik7aWYoYi5xdWVy
eVNlbGVjdG9yQWxsKWZvcih2YXIgYz1iLnF1ZXJ5U2VsZWN0b3JBbGwoIioiKSxkPTAsZT1jLmxl
bmd0aDtkPGU7ZCsrKXViKGNbZF0pfWZ1bmN0aW9uIFBjKGIsYSxjLGQpe2lmKHcoZCkpdGhyb3cg
VWIoIm9mZmFyZ3MiKTt2YXIgZT0oZD12YihiKSkmJmQuZXZlbnRzLGY9ZCYmZC5oYW5kbGU7aWYo
ZilpZihhKW0oYS5zcGxpdCgiICIpLGZ1bmN0aW9uKGEpe2lmKHcoYykpe3ZhciBkPWVbYV07YmIo
ZHx8W10sYyk7aWYoZCYmMDxkLmxlbmd0aClyZXR1cm59Yi5yZW1vdmVFdmVudExpc3RlbmVyKGEs
ZiwhMSk7ZGVsZXRlIGVbYV19KTtlbHNlIGZvcihhIGluIGUpIiRkZXN0cm95IiE9PWEmJmIucmVt
b3ZlRXZlbnRMaXN0ZW5lcihhLAorZiwhMSksZGVsZXRlIGVbYV19ZnVuY3Rpb24gdWIoYixhKXt2
YXIgYz1iLm5nMzM5LGQ9YyYmaWJbY107ZCYmKGE/ZGVsZXRlIGQuZGF0YVthXTooZC5oYW5kbGUm
JihkLmV2ZW50cy4kZGVzdHJveSYmZC5oYW5kbGUoe30sIiRkZXN0cm95IiksUGMoYikpLGRlbGV0
ZSBpYltjXSxiLm5nMzM5PXQpKX1mdW5jdGlvbiB2YihiLGEpe3ZhciBjPWIubmczMzksYz1jJiZp
YltjXTthJiYhYyYmKGIubmczMzk9Yz0rK0RmLGM9aWJbY109e2V2ZW50czp7fSxkYXRhOnt9LGhh
bmRsZTp0fSk7cmV0dXJuIGN9ZnVuY3Rpb24gV2IoYixhLGMpe2lmKE1jKGIpKXt2YXIgZD13KGMp
LGU9IWQmJmEmJiFIKGEpLGY9IWE7Yj0oYj12YihiLCFlKSkmJmIuZGF0YTtpZihkKWJbYV09Yztl
bHNle2lmKGYpcmV0dXJuIGI7aWYoZSlyZXR1cm4gYiYmYlthXTtQKGIsYSl9fX1mdW5jdGlvbiB3
YihiLGEpe3JldHVybiBiLmdldEF0dHJpYnV0ZT8tMTwoIiAiKyhiLmdldEF0dHJpYnV0ZSgiY2xh
c3MiKXx8IiIpKworIiAiKS5yZXBsYWNlKC9bXG5cdF0vZywiICIpLmluZGV4T2YoIiAiK2ErIiAi
KTohMX1mdW5jdGlvbiB4YihiLGEpe2EmJmIuc2V0QXR0cmlidXRlJiZtKGEuc3BsaXQoIiAiKSxm
dW5jdGlvbihhKXtiLnNldEF0dHJpYnV0ZSgiY2xhc3MiLFIoKCIgIisoYi5nZXRBdHRyaWJ1dGUo
ImNsYXNzIil8fCIiKSsiICIpLnJlcGxhY2UoL1tcblx0XS9nLCIgIikucmVwbGFjZSgiICIrUihh
KSsiICIsIiAiKSkpfSl9ZnVuY3Rpb24geWIoYixhKXtpZihhJiZiLnNldEF0dHJpYnV0ZSl7dmFy
IGM9KCIgIisoYi5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIiKSsiICIpLnJlcGxhY2UoL1tcblx0
XS9nLCIgIik7bShhLnNwbGl0KCIgIiksZnVuY3Rpb24oYSl7YT1SKGEpOy0xPT09Yy5pbmRleE9m
KCIgIithKyIgIikmJihjKz1hKyIgIil9KTtiLnNldEF0dHJpYnV0ZSgiY2xhc3MiLFIoYykpfX1m
dW5jdGlvbiBPYyhiLGEpe2lmKGEpaWYoYS5ub2RlVHlwZSliW2IubGVuZ3RoKytdPWE7ZWxzZXt2
YXIgYz0KK2EubGVuZ3RoO2lmKCJudW1iZXIiPT09dHlwZW9mIGMmJmEud2luZG93IT09YSl7aWYo
Yylmb3IodmFyIGQ9MDtkPGM7ZCsrKWJbYi5sZW5ndGgrK109YVtkXX1lbHNlIGJbYi5sZW5ndGgr
K109YX19ZnVuY3Rpb24gUWMoYixhKXtyZXR1cm4gemIoYiwiJCIrKGF8fCJuZ0NvbnRyb2xsZXIi
KSsiQ29udHJvbGxlciIpfWZ1bmN0aW9uIHpiKGIsYSxjKXs5PT1iLm5vZGVUeXBlJiYoYj1iLmRv
Y3VtZW50RWxlbWVudCk7Zm9yKGE9RyhhKT9hOlthXTtiOyl7Zm9yKHZhciBkPTAsZT1hLmxlbmd0
aDtkPGU7ZCsrKWlmKChjPXkuZGF0YShiLGFbZF0pKSE9PXQpcmV0dXJuIGM7Yj1iLnBhcmVudE5v
ZGV8fDExPT09Yi5ub2RlVHlwZSYmYi5ob3N0fX1mdW5jdGlvbiBSYyhiKXtmb3IodGIoYiwhMCk7
Yi5maXJzdENoaWxkOyliLnJlbW92ZUNoaWxkKGIuZmlyc3RDaGlsZCl9ZnVuY3Rpb24gWGIoYixh
KXthfHx0YihiKTt2YXIgYz1iLnBhcmVudE5vZGU7YyYmYy5yZW1vdmVDaGlsZChiKX1mdW5jdGlv
biBFZihiLAorYSl7YT1hfHxPO2lmKCJjb21wbGV0ZSI9PT1hLmRvY3VtZW50LnJlYWR5U3RhdGUp
YS5zZXRUaW1lb3V0KGIpO2Vsc2UgeShhKS5vbigibG9hZCIsYil9ZnVuY3Rpb24gU2MoYixhKXt2
YXIgYz1BYlthLnRvTG93ZXJDYXNlKCldO3JldHVybiBjJiZUY1t0YShiKV0mJmN9ZnVuY3Rpb24g
RmYoYixhKXt2YXIgYz1iLm5vZGVOYW1lO3JldHVybigiSU5QVVQiPT09Y3x8IlRFWFRBUkVBIj09
PWMpJiZVY1thXX1mdW5jdGlvbiBHZihiLGEpe3ZhciBjPWZ1bmN0aW9uKGMsZSl7Yy5pc0RlZmF1
bHRQcmV2ZW50ZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gYy5kZWZhdWx0UHJldmVudGVkfTt2YXIgZj1h
W2V8fGMudHlwZV0sZz1mP2YubGVuZ3RoOjA7aWYoZyl7aWYoQShjLmltbWVkaWF0ZVByb3BhZ2F0
aW9uU3RvcHBlZCkpe3ZhciBoPWMuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uO2Muc3RvcEltbWVk
aWF0ZVByb3BhZ2F0aW9uPWZ1bmN0aW9uKCl7Yy5pbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ9
CishMDtjLnN0b3BQcm9wYWdhdGlvbiYmYy5zdG9wUHJvcGFnYXRpb24oKTtoJiZoLmNhbGwoYyl9
fWMuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ9ZnVuY3Rpb24oKXtyZXR1cm4hMD09PWMu
aW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkfTsxPGcmJihmPWlhKGYpKTtmb3IodmFyIGw9MDts
PGc7bCsrKWMuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQoKXx8ZltsXS5jYWxsKGIsYyl9
fTtjLmVsZW09YjtyZXR1cm4gY31mdW5jdGlvbiB2Zigpe3RoaXMuJGdldD1mdW5jdGlvbigpe3Jl
dHVybiBQKFEse2hhc0NsYXNzOmZ1bmN0aW9uKGIsYSl7Yi5hdHRyJiYoYj1iWzBdKTtyZXR1cm4g
d2IoYixhKX0sYWRkQ2xhc3M6ZnVuY3Rpb24oYixhKXtiLmF0dHImJihiPWJbMF0pO3JldHVybiB5
YihiLGEpfSxyZW1vdmVDbGFzczpmdW5jdGlvbihiLGEpe2IuYXR0ciYmKGI9YlswXSk7cmV0dXJu
IHhiKGIsYSl9fSl9fWZ1bmN0aW9uIEdhKGIsYSl7dmFyIGM9YiYmYi4kJGhhc2hLZXk7CitpZihj
KXJldHVybiJmdW5jdGlvbiI9PT10eXBlb2YgYyYmKGM9Yi4kJGhhc2hLZXkoKSksYztjPXR5cGVv
ZiBiO3JldHVybiBjPSJmdW5jdGlvbiI9PWN8fCJvYmplY3QiPT1jJiZudWxsIT09Yj9iLiQkaGFz
aEtleT1jKyI6IisoYXx8VWQpKCk6YysiOiIrYn1mdW5jdGlvbiBTYShiLGEpe2lmKGEpe3ZhciBj
PTA7dGhpcy5uZXh0VWlkPWZ1bmN0aW9uKCl7cmV0dXJuKytjfX1tKGIsdGhpcy5wdXQsdGhpcyl9
ZnVuY3Rpb24gSGYoYil7cmV0dXJuKGI9Yi50b1N0cmluZygpLnJlcGxhY2UoVmMsIiIpLm1hdGNo
KFdjKSk/ImZ1bmN0aW9uKCIrKGJbMV18fCIiKS5yZXBsYWNlKC9bXHNcclxuXSsvLCIgIikrIiki
OiJmbiJ9ZnVuY3Rpb24gZWIoYixhKXtmdW5jdGlvbiBjKGEpe3JldHVybiBmdW5jdGlvbihiLGMp
e2lmKEgoYikpbShiLHBjKGEpKTtlbHNlIHJldHVybiBhKGIsYyl9fWZ1bmN0aW9uIGQoYSxiKXtS
YShhLCJzZXJ2aWNlIik7aWYoeihiKXx8RyhiKSliPXMuaW5zdGFudGlhdGUoYik7CitpZighYi4k
Z2V0KXRocm93IEhhKCJwZ2V0IixhKTtyZXR1cm4gclthKyJQcm92aWRlciJdPWJ9ZnVuY3Rpb24g
ZShhLGIpe3JldHVybiBmdW5jdGlvbigpe3ZhciBjPUMuaW52b2tlKGIsdGhpcyk7aWYoQShjKSl0
aHJvdyBIYSgidW5kZWYiLGEpO3JldHVybiBjfX1mdW5jdGlvbiBmKGEsYixjKXtyZXR1cm4gZChh
LHskZ2V0OiExIT09Yz9lKGEsYik6Yn0pfWZ1bmN0aW9uIGcoYSl7dmFyIGI9W10sYzttKGEsZnVu
Y3Rpb24oYSl7ZnVuY3Rpb24gZChhKXt2YXIgYixjO2I9MDtmb3IoYz1hLmxlbmd0aDtiPGM7Yisr
KXt2YXIgZT1hW2JdLGY9cy5nZXQoZVswXSk7ZltlWzFdXS5hcHBseShmLGVbMl0pfX1pZighbi5n
ZXQoYSkpe24ucHV0KGEsITApO3RyeXtMKGEpPyhjPWdiKGEpLGI9Yi5jb25jYXQoZyhjLnJlcXVp
cmVzKSkuY29uY2F0KGMuX3J1bkJsb2NrcyksZChjLl9pbnZva2VRdWV1ZSksZChjLl9jb25maWdC
bG9ja3MpKTp6KGEpP2IucHVzaChzLmludm9rZShhKSk6RyhhKT8KK2IucHVzaChzLmludm9rZShh
KSk6UWEoYSwibW9kdWxlIil9Y2F0Y2goZSl7dGhyb3cgRyhhKSYmKGE9YVthLmxlbmd0aC0xXSks
ZS5tZXNzYWdlJiZlLnN0YWNrJiYtMT09ZS5zdGFjay5pbmRleE9mKGUubWVzc2FnZSkmJihlPWUu
bWVzc2FnZSsiXG4iK2Uuc3RhY2spLEhhKCJtb2R1bGVyciIsYSxlLnN0YWNrfHxlLm1lc3NhZ2V8
fGUpO319fSk7cmV0dXJuIGJ9ZnVuY3Rpb24gaChiLGMpe2Z1bmN0aW9uIGQoYSxlKXtpZihiLmhh
c093blByb3BlcnR5KGEpKXtpZihiW2FdPT09bCl0aHJvdyBIYSgiY2RlcCIsYSsiIDwtICIray5q
b2luKCIgPC0gIikpO3JldHVybiBiW2FdfXRyeXtyZXR1cm4gay51bnNoaWZ0KGEpLGJbYV09bCxi
W2FdPWMoYSxlKX1jYXRjaChmKXt0aHJvdyBiW2FdPT09bCYmZGVsZXRlIGJbYV0sZjt9ZmluYWxs
eXtrLnNoaWZ0KCl9fWZ1bmN0aW9uIGUoYixjLGYsZyl7InN0cmluZyI9PT10eXBlb2YgZiYmKGc9
ZixmPW51bGwpO3ZhciBoPVtdLGs9ZWIuJCRhbm5vdGF0ZShiLAorYSxnKSxsLHMsbjtzPTA7Zm9y
KGw9ay5sZW5ndGg7czxsO3MrKyl7bj1rW3NdO2lmKCJzdHJpbmciIT09dHlwZW9mIG4pdGhyb3cg
SGEoIml0a24iLG4pO2gucHVzaChmJiZmLmhhc093blByb3BlcnR5KG4pP2Zbbl06ZChuLGcpKX1H
KGIpJiYoYj1iW2xdKTtyZXR1cm4gYi5hcHBseShjLGgpfXJldHVybntpbnZva2U6ZSxpbnN0YW50
aWF0ZTpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9T2JqZWN0LmNyZWF0ZSgoRyhhKT9hW2EubGVuZ3Ro
LTFdOmEpLnByb3RvdHlwZXx8bnVsbCk7YT1lKGEsZCxiLGMpO3JldHVybiBIKGEpfHx6KGEpP2E6
ZH0sZ2V0OmQsYW5ub3RhdGU6ZWIuJCRhbm5vdGF0ZSxoYXM6ZnVuY3Rpb24oYSl7cmV0dXJuIHIu
aGFzT3duUHJvcGVydHkoYSsiUHJvdmlkZXIiKXx8Yi5oYXNPd25Qcm9wZXJ0eShhKX19fWE9ITA9
PT1hO3ZhciBsPXt9LGs9W10sbj1uZXcgU2EoW10sITApLHI9eyRwcm92aWRlOntwcm92aWRlcjpj
KGQpLGZhY3Rvcnk6YyhmKSxzZXJ2aWNlOmMoZnVuY3Rpb24oYSwKK2Ipe3JldHVybiBmKGEsWyIk
aW5qZWN0b3IiLGZ1bmN0aW9uKGEpe3JldHVybiBhLmluc3RhbnRpYXRlKGIpfV0pfSksdmFsdWU6
YyhmdW5jdGlvbihhLGIpe3JldHVybiBmKGEscmEoYiksITEpfSksY29uc3RhbnQ6YyhmdW5jdGlv
bihhLGIpe1JhKGEsImNvbnN0YW50Iik7clthXT1iO3hbYV09Yn0pLGRlY29yYXRvcjpmdW5jdGlv
bihhLGIpe3ZhciBjPXMuZ2V0KGErIlByb3ZpZGVyIiksZD1jLiRnZXQ7Yy4kZ2V0PWZ1bmN0aW9u
KCl7dmFyIGE9Qy5pbnZva2UoZCxjKTtyZXR1cm4gQy5pbnZva2UoYixudWxsLHskZGVsZWdhdGU6
YX0pfX19fSxzPXIuJGluamVjdG9yPWgocixmdW5jdGlvbihhLGIpe2NhLmlzU3RyaW5nKGIpJiZr
LnB1c2goYik7dGhyb3cgSGEoInVucHIiLGsuam9pbigiIDwtICIpKTt9KSx4PXt9LEM9eC4kaW5q
ZWN0b3I9aCh4LGZ1bmN0aW9uKGEsYil7dmFyIGM9cy5nZXQoYSsiUHJvdmlkZXIiLGIpO3JldHVy
biBDLmludm9rZShjLiRnZXQsYyx0LGEpfSk7bShnKGIpLAorZnVuY3Rpb24oYSl7YSYmQy5pbnZv
a2UoYSl9KTtyZXR1cm4gQ31mdW5jdGlvbiBSZSgpe3ZhciBiPSEwO3RoaXMuZGlzYWJsZUF1dG9T
Y3JvbGxpbmc9ZnVuY3Rpb24oKXtiPSExfTt0aGlzLiRnZXQ9WyIkd2luZG93IiwiJGxvY2F0aW9u
IiwiJHJvb3RTY29wZSIsZnVuY3Rpb24oYSxjLGQpe2Z1bmN0aW9uIGUoYSl7dmFyIGI9bnVsbDtB
cnJheS5wcm90b3R5cGUuc29tZS5jYWxsKGEsZnVuY3Rpb24oYSl7aWYoImEiPT09dGEoYSkpcmV0
dXJuIGI9YSwhMH0pO3JldHVybiBifWZ1bmN0aW9uIGYoYil7aWYoYil7Yi5zY3JvbGxJbnRvVmll
dygpO3ZhciBjO2M9Zy55T2Zmc2V0O3ooYyk/Yz1jKCk6dGMoYyk/KGM9Y1swXSxjPSJmaXhlZCIh
PT1hLmdldENvbXB1dGVkU3R5bGUoYykucG9zaXRpb24/MDpjLmdldEJvdW5kaW5nQ2xpZW50UmVj
dCgpLmJvdHRvbSk6VihjKXx8KGM9MCk7YyYmKGI9Yi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50
b3AsYS5zY3JvbGxCeSgwLGItYykpfWVsc2UgYS5zY3JvbGxUbygwLAorMCl9ZnVuY3Rpb24gZyhh
KXthPUwoYSk/YTpjLmhhc2goKTt2YXIgYjthPyhiPWguZ2V0RWxlbWVudEJ5SWQoYSkpP2YoYik6
KGI9ZShoLmdldEVsZW1lbnRzQnlOYW1lKGEpKSk/ZihiKToidG9wIj09PWEmJmYobnVsbCk6Zihu
dWxsKX12YXIgaD1hLmRvY3VtZW50O2ImJmQuJHdhdGNoKGZ1bmN0aW9uKCl7cmV0dXJuIGMuaGFz
aCgpfSxmdW5jdGlvbihhLGIpe2E9PT1iJiYiIj09PWF8fEVmKGZ1bmN0aW9uKCl7ZC4kZXZhbEFz
eW5jKGcpfSl9KTtyZXR1cm4gZ31dfWZ1bmN0aW9uIGpiKGIsYSl7aWYoIWImJiFhKXJldHVybiIi
O2lmKCFiKXJldHVybiBhO2lmKCFhKXJldHVybiBiO0coYikmJihiPWIuam9pbigiICIpKTtHKGEp
JiYoYT1hLmpvaW4oIiAiKSk7cmV0dXJuIGIrIiAiK2F9ZnVuY3Rpb24gSWYoYil7TChiKSYmKGI9
Yi5zcGxpdCgiICIpKTt2YXIgYT1nYSgpO20oYixmdW5jdGlvbihiKXtiLmxlbmd0aCYmKGFbYl09
ITApfSk7cmV0dXJuIGF9ZnVuY3Rpb24gSWEoYil7cmV0dXJuIEgoYik/CitiOnt9fWZ1bmN0aW9u
IEpmKGIsYSxjLGQpe2Z1bmN0aW9uIGUoYSl7dHJ5e2EuYXBwbHkobnVsbCx6YS5jYWxsKGFyZ3Vt
ZW50cywxKSl9ZmluYWxseXtpZihDLS0sMD09PUMpZm9yKDtGLmxlbmd0aDspdHJ5e0YucG9wKCko
KX1jYXRjaChiKXtjLmVycm9yKGIpfX19ZnVuY3Rpb24gZigpe2coKTtoKCl9ZnVuY3Rpb24gZygp
e2E6e3RyeXt1PW4uc3RhdGU7YnJlYWsgYX1jYXRjaChhKXt9dT12b2lkIDB9dT1BKHUpP251bGw6
dTtrYSh1LEQpJiYodT1EKTtEPXV9ZnVuY3Rpb24gaCgpe2lmKEshPT1sLnVybCgpfHxwIT09dSlL
PWwudXJsKCkscD11LG0oQixmdW5jdGlvbihhKXthKGwudXJsKCksdSl9KX12YXIgbD10aGlzLGs9
Yi5sb2NhdGlvbixuPWIuaGlzdG9yeSxyPWIuc2V0VGltZW91dCxzPWIuY2xlYXJUaW1lb3V0LHg9
e307bC5pc01vY2s9ITE7dmFyIEM9MCxGPVtdO2wuJCRjb21wbGV0ZU91dHN0YW5kaW5nUmVxdWVz
dD1lO2wuJCRpbmNPdXRzdGFuZGluZ1JlcXVlc3RDb3VudD0KK2Z1bmN0aW9uKCl7QysrfTtsLm5v
dGlmeVdoZW5Ob091dHN0YW5kaW5nUmVxdWVzdHM9ZnVuY3Rpb24oYSl7MD09PUM/YSgpOkYucHVz
aChhKX07dmFyIHUscCxLPWsuaHJlZixxPWEuZmluZCgiYmFzZSIpLEk9bnVsbDtnKCk7cD11O2wu
dXJsPWZ1bmN0aW9uKGEsYyxlKXtBKGUpJiYoZT1udWxsKTtrIT09Yi5sb2NhdGlvbiYmKGs9Yi5s
b2NhdGlvbik7biE9PWIuaGlzdG9yeSYmKG49Yi5oaXN0b3J5KTtpZihhKXt2YXIgZj1wPT09ZTtp
ZihLPT09YSYmKCFkLmhpc3Rvcnl8fGYpKXJldHVybiBsO3ZhciBoPUsmJkphKEspPT09SmEoYSk7
Sz1hO3A9ZTtpZighZC5oaXN0b3J5fHxoJiZmKXtpZighaHx8SSlJPWE7Yz9rLnJlcGxhY2UoYSk6
aD8oYz1rLGU9YS5pbmRleE9mKCIjIiksYT0tMT09PWU/IiI6YS5zdWJzdHIoZSksYy5oYXNoPWEp
OmsuaHJlZj1hfWVsc2UgbltjPyJyZXBsYWNlU3RhdGUiOiJwdXNoU3RhdGUiXShlLCIiLGEpLGco
KSxwPXU7cmV0dXJuIGx9cmV0dXJuIEl8fAoray5ocmVmLnJlcGxhY2UoLyUyNy9nLCInIil9O2wu
c3RhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gdX07dmFyIEI9W10sTj0hMSxEPW51bGw7bC5vblVybENo
YW5nZT1mdW5jdGlvbihhKXtpZighTil7aWYoZC5oaXN0b3J5KXkoYikub24oInBvcHN0YXRlIixm
KTt5KGIpLm9uKCJoYXNoY2hhbmdlIixmKTtOPSEwfUIucHVzaChhKTtyZXR1cm4gYX07bC4kJGFw
cGxpY2F0aW9uRGVzdHJveWVkPWZ1bmN0aW9uKCl7eShiKS5vZmYoImhhc2hjaGFuZ2UgcG9wc3Rh
dGUiLGYpfTtsLiQkY2hlY2tVcmxDaGFuZ2U9aDtsLmJhc2VIcmVmPWZ1bmN0aW9uKCl7dmFyIGE9
cS5hdHRyKCJocmVmIik7cmV0dXJuIGE/YS5yZXBsYWNlKC9eKGh0dHBzP1w6KT9cL1wvW15cL10q
LywiIik6IiJ9O2wuZGVmZXI9ZnVuY3Rpb24oYSxiKXt2YXIgYztDKys7Yz1yKGZ1bmN0aW9uKCl7
ZGVsZXRlIHhbY107ZShhKX0sYnx8MCk7eFtjXT0hMDtyZXR1cm4gY307bC5kZWZlci5jYW5jZWw9
ZnVuY3Rpb24oYSl7cmV0dXJuIHhbYV0/CisoZGVsZXRlIHhbYV0scyhhKSxlKHYpLCEwKTohMX19
ZnVuY3Rpb24gVmUoKXt0aGlzLiRnZXQ9WyIkd2luZG93IiwiJGxvZyIsIiRzbmlmZmVyIiwiJGRv
Y3VtZW50IixmdW5jdGlvbihiLGEsYyxkKXtyZXR1cm4gbmV3IEpmKGIsZCxhLGMpfV19ZnVuY3Rp
b24gV2UoKXt0aGlzLiRnZXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBiKGIsZCl7ZnVuY3Rpb24gZShh
KXthIT1yJiYocz9zPT1hJiYocz1hLm4pOnM9YSxmKGEubixhLnApLGYoYSxyKSxyPWEsci5uPW51
bGwpfWZ1bmN0aW9uIGYoYSxiKXthIT1iJiYoYSYmKGEucD1iKSxiJiYoYi5uPWEpKX1pZihiIGlu
IGEpdGhyb3cgSigiJGNhY2hlRmFjdG9yeSIpKCJpaWQiLGIpO3ZhciBnPTAsaD1QKHt9LGQse2lk
OmJ9KSxsPXt9LGs9ZCYmZC5jYXBhY2l0eXx8TnVtYmVyLk1BWF9WQUxVRSxuPXt9LHI9bnVsbCxz
PW51bGw7cmV0dXJuIGFbYl09e3B1dDpmdW5jdGlvbihhLGIpe2lmKCFBKGIpKXtpZihrPE51bWJl
ci5NQVhfVkFMVUUpe3ZhciBjPQorblthXXx8KG5bYV09e2tleTphfSk7ZShjKX1hIGluIGx8fGcr
KztsW2FdPWI7Zz5rJiZ0aGlzLnJlbW92ZShzLmtleSk7cmV0dXJuIGJ9fSxnZXQ6ZnVuY3Rpb24o
YSl7aWYoazxOdW1iZXIuTUFYX1ZBTFVFKXt2YXIgYj1uW2FdO2lmKCFiKXJldHVybjtlKGIpfXJl
dHVybiBsW2FdfSxyZW1vdmU6ZnVuY3Rpb24oYSl7aWYoazxOdW1iZXIuTUFYX1ZBTFVFKXt2YXIg
Yj1uW2FdO2lmKCFiKXJldHVybjtiPT1yJiYocj1iLnApO2I9PXMmJihzPWIubik7ZihiLm4sYi5w
KTtkZWxldGUgblthXX1kZWxldGUgbFthXTtnLS19LHJlbW92ZUFsbDpmdW5jdGlvbigpe2w9e307
Zz0wO249e307cj1zPW51bGx9LGRlc3Ryb3k6ZnVuY3Rpb24oKXtuPWg9bD1udWxsO2RlbGV0ZSBh
W2JdfSxpbmZvOmZ1bmN0aW9uKCl7cmV0dXJuIFAoe30saCx7c2l6ZTpnfSl9fX12YXIgYT17fTti
LmluZm89ZnVuY3Rpb24oKXt2YXIgYj17fTttKGEsZnVuY3Rpb24oYSxlKXtiW2VdPWEuaW5mbygp
fSk7cmV0dXJuIGJ9OworYi5nZXQ9ZnVuY3Rpb24oYil7cmV0dXJuIGFbYl19O3JldHVybiBifX1m
dW5jdGlvbiBwZigpe3RoaXMuJGdldD1bIiRjYWNoZUZhY3RvcnkiLGZ1bmN0aW9uKGIpe3JldHVy
biBiKCJ0ZW1wbGF0ZXMiKX1dfWZ1bmN0aW9uIEVjKGIsYSl7ZnVuY3Rpb24gYyhhLGIsYyl7dmFy
IGQ9L15ccyooW0AmXXw9KFwqPykpKFw/PylccyooXHcqKVxzKiQvLGU9e307bShhLGZ1bmN0aW9u
KGEsZil7dmFyIGc9YS5tYXRjaChkKTtpZighZyl0aHJvdyBlYSgiaXNjcCIsYixmLGEsYz8iY29u
dHJvbGxlciBiaW5kaW5ncyBkZWZpbml0aW9uIjoiaXNvbGF0ZSBzY29wZSBkZWZpbml0aW9uIik7
ZVtmXT17bW9kZTpnWzFdWzBdLGNvbGxlY3Rpb246IioiPT09Z1syXSxvcHRpb25hbDoiPyI9PT1n
WzNdLGF0dHJOYW1lOmdbNF18fGZ9fSk7cmV0dXJuIGV9ZnVuY3Rpb24gZChhKXt2YXIgYj1hLmNo
YXJBdCgwKTtpZighYnx8YiE9PU0oYikpdGhyb3cgZWEoImJhZGRpciIsYSk7aWYoYSE9PWEudHJp
bSgpKXRocm93IGVhKCJiYWRkaXIiLAorYSk7fXZhciBlPXt9LGY9L15ccypkaXJlY3RpdmVcOlxz
KihbXHdcLV0rKVxzKyguKikkLyxnPS8oKFtcd1wtXSspKD86XDooW147XSspKT87PykvLGg9V2Qo
Im5nU3JjLG5nU3Jjc2V0LHNyYyxzcmNzZXQiKSxsPS9eKD86KFxeXF4/KT8oXD8pPyhcXlxePyk/
KT8vLGs9L14ob25bYS16XSt8Zm9ybWFjdGlvbikkLzt0aGlzLmRpcmVjdGl2ZT1mdW5jdGlvbiBz
KGEsZil7UmEoYSwiZGlyZWN0aXZlIik7TChhKT8oZChhKSxTYihmLCJkaXJlY3RpdmVGYWN0b3J5
IiksZS5oYXNPd25Qcm9wZXJ0eShhKXx8KGVbYV09W10sYi5mYWN0b3J5KGErIkRpcmVjdGl2ZSIs
WyIkaW5qZWN0b3IiLCIkZXhjZXB0aW9uSGFuZGxlciIsZnVuY3Rpb24oYixkKXt2YXIgZj1bXTtt
KGVbYV0sZnVuY3Rpb24oZSxnKXt0cnl7dmFyIGg9Yi5pbnZva2UoZSk7eihoKT9oPXtjb21waWxl
OnJhKGgpfTohaC5jb21waWxlJiZoLmxpbmsmJihoLmNvbXBpbGU9cmEoaC5saW5rKSk7aC5wcmlv
cml0eT1oLnByaW9yaXR5fHwKKzA7aC5pbmRleD1nO2gubmFtZT1oLm5hbWV8fGE7aC5yZXF1aXJl
PWgucmVxdWlyZXx8aC5jb250cm9sbGVyJiZoLm5hbWU7aC5yZXN0cmljdD1oLnJlc3RyaWN0fHwi
RUEiO3ZhciBrPWgsbD1oLHM9aC5uYW1lLG49e2lzb2xhdGVTY29wZTpudWxsLGJpbmRUb0NvbnRy
b2xsZXI6bnVsbH07SChsLnNjb3BlKSYmKCEwPT09bC5iaW5kVG9Db250cm9sbGVyPyhuLmJpbmRU
b0NvbnRyb2xsZXI9YyhsLnNjb3BlLHMsITApLG4uaXNvbGF0ZVNjb3BlPXt9KTpuLmlzb2xhdGVT
Y29wZT1jKGwuc2NvcGUscywhMSkpO0gobC5iaW5kVG9Db250cm9sbGVyKSYmKG4uYmluZFRvQ29u
dHJvbGxlcj1jKGwuYmluZFRvQ29udHJvbGxlcixzLCEwKSk7aWYoSChuLmJpbmRUb0NvbnRyb2xs
ZXIpKXt2YXIgQz1sLmNvbnRyb2xsZXIsJD1sLmNvbnRyb2xsZXJBcztpZighQyl0aHJvdyBlYSgi
bm9jdHJsIixzKTt2YXIgaGE7YTppZigkJiZMKCQpKWhhPSQ7ZWxzZXtpZihMKEMpKXt2YXIgbT1Y
Yy5leGVjKEMpOworaWYobSl7aGE9bVszXTticmVhayBhfX1oYT12b2lkIDB9aWYoIWhhKXRocm93
IGVhKCJub2lkZW50IixzKTt9dmFyIHE9ay4kJGJpbmRpbmdzPW47SChxLmlzb2xhdGVTY29wZSkm
JihoLiQkaXNvbGF0ZUJpbmRpbmdzPXEuaXNvbGF0ZVNjb3BlKTtoLiQkbW9kdWxlTmFtZT1lLiQk
bW9kdWxlTmFtZTtmLnB1c2goaCl9Y2F0Y2godCl7ZCh0KX19KTtyZXR1cm4gZn1dKSksZVthXS5w
dXNoKGYpKTptKGEscGMocykpO3JldHVybiB0aGlzfTt0aGlzLmFIcmVmU2FuaXRpemF0aW9uV2hp
dGVsaXN0PWZ1bmN0aW9uKGIpe3JldHVybiB3KGIpPyhhLmFIcmVmU2FuaXRpemF0aW9uV2hpdGVs
aXN0KGIpLHRoaXMpOmEuYUhyZWZTYW5pdGl6YXRpb25XaGl0ZWxpc3QoKX07dGhpcy5pbWdTcmNT
YW5pdGl6YXRpb25XaGl0ZWxpc3Q9ZnVuY3Rpb24oYil7cmV0dXJuIHcoYik/KGEuaW1nU3JjU2Fu
aXRpemF0aW9uV2hpdGVsaXN0KGIpLHRoaXMpOmEuaW1nU3JjU2FuaXRpemF0aW9uV2hpdGVsaXN0
KCl9OwordmFyIG49ITA7dGhpcy5kZWJ1Z0luZm9FbmFibGVkPWZ1bmN0aW9uKGEpe3JldHVybiB3
KGEpPyhuPWEsdGhpcyk6bn07dGhpcy4kZ2V0PVsiJGluamVjdG9yIiwiJGludGVycG9sYXRlIiwi
JGV4Y2VwdGlvbkhhbmRsZXIiLCIkdGVtcGxhdGVSZXF1ZXN0IiwiJHBhcnNlIiwiJGNvbnRyb2xs
ZXIiLCIkcm9vdFNjb3BlIiwiJGRvY3VtZW50IiwiJHNjZSIsIiRhbmltYXRlIiwiJCRzYW5pdGl6
ZVVyaSIsZnVuY3Rpb24oYSxiLGMsZCx1LHAsSyxxLEksQixOKXtmdW5jdGlvbiBEKGEsYil7dHJ5
e2EuYWRkQ2xhc3MoYil9Y2F0Y2goYyl7fX1mdW5jdGlvbiBaKGEsYixjLGQsZSl7YSBpbnN0YW5j
ZW9mIHl8fChhPXkoYSkpO20oYSxmdW5jdGlvbihiLGMpe2Iubm9kZVR5cGU9PU5hJiZiLm5vZGVW
YWx1ZS5tYXRjaCgvXFMrLykmJihhW2NdPXkoYikud3JhcCgiPHNwYW4+PC9zcGFuPiIpLnBhcmVu
dCgpWzBdKX0pO3ZhciBmPVMoYSxiLGEsYyxkLGUpO1ouJCRhZGRTY29wZUNsYXNzKGEpOwordmFy
IGc9bnVsbDtyZXR1cm4gZnVuY3Rpb24oYixjLGQpe1NiKGIsInNjb3BlIik7ZD1kfHx7fTt2YXIg
ZT1kLnBhcmVudEJvdW5kVHJhbnNjbHVkZUZuLGg9ZC50cmFuc2NsdWRlQ29udHJvbGxlcnM7ZD1k
LmZ1dHVyZVBhcmVudEVsZW1lbnQ7ZSYmZS4kJGJvdW5kVHJhbnNjbHVkZSYmKGU9ZS4kJGJvdW5k
VHJhbnNjbHVkZSk7Z3x8KGc9KGQ9ZCYmZFswXSk/ImZvcmVpZ25vYmplY3QiIT09dGEoZCkmJmQu
dG9TdHJpbmcoKS5tYXRjaCgvU1ZHLyk/InN2ZyI6Imh0bWwiOiJodG1sIik7ZD0iaHRtbCIhPT1n
P3koWWIoZyx5KCI8ZGl2PiIpLmFwcGVuZChhKS5odG1sKCkpKTpjP1BhLmNsb25lLmNhbGwoYSk6
YTtpZihoKWZvcih2YXIgayBpbiBoKWQuZGF0YSgiJCIraysiQ29udHJvbGxlciIsaFtrXS5pbnN0
YW5jZSk7Wi4kJGFkZFNjb3BlSW5mbyhkLGIpO2MmJmMoZCxiKTtmJiZmKGIsZCxkLGUpO3JldHVy
biBkfX1mdW5jdGlvbiBTKGEsYixjLGQsZSxmKXtmdW5jdGlvbiBnKGEsCitjLGQsZSl7dmFyIGYs
ayxsLHMsbixCLEM7aWYocClmb3IoQz1BcnJheShjLmxlbmd0aCkscz0wO3M8aC5sZW5ndGg7cys9
MylmPWhbc10sQ1tmXT1jW2ZdO2Vsc2UgQz1jO3M9MDtmb3Iobj1oLmxlbmd0aDtzPG47KWlmKGs9
Q1toW3MrK11dLGM9aFtzKytdLGY9aFtzKytdLGMpe2lmKGMuc2NvcGUpe2lmKGw9YS4kbmV3KCks
Wi4kJGFkZFNjb3BlSW5mbyh5KGspLGwpLEI9Yy4kJGRlc3Ryb3lCaW5kaW5ncyljLiQkZGVzdHJv
eUJpbmRpbmdzPW51bGwsbC4kb24oIiRkZXN0cm95ZWQiLEIpfWVsc2UgbD1hO0I9Yy50cmFuc2Ns
dWRlT25UaGlzRWxlbWVudD8kKGEsYy50cmFuc2NsdWRlLGUpOiFjLnRlbXBsYXRlT25UaGlzRWxl
bWVudCYmZT9lOiFlJiZiPyQoYSxiKTpudWxsO2MoZixsLGssZCxCLGMpfWVsc2UgZiYmZihhLGsu
Y2hpbGROb2Rlcyx0LGUpfWZvcih2YXIgaD1bXSxrLGwscyxuLHAsQj0wO0I8YS5sZW5ndGg7Qisr
KXtrPW5ldyBhYTtsPWhhKGFbQl0sW10saywwPT09Qj8KK2Q6dCxlKTsoZj1sLmxlbmd0aD9FKGws
YVtCXSxrLGIsYyxudWxsLFtdLFtdLGYpOm51bGwpJiZmLnNjb3BlJiZaLiQkYWRkU2NvcGVDbGFz
cyhrLiQkZWxlbWVudCk7az1mJiZmLnRlcm1pbmFsfHwhKHM9YVtCXS5jaGlsZE5vZGVzKXx8IXMu
bGVuZ3RoP251bGw6UyhzLGY/KGYudHJhbnNjbHVkZU9uVGhpc0VsZW1lbnR8fCFmLnRlbXBsYXRl
T25UaGlzRWxlbWVudCkmJmYudHJhbnNjbHVkZTpiKTtpZihmfHxrKWgucHVzaChCLGYsayksbj0h
MCxwPXB8fGY7Zj1udWxsfXJldHVybiBuP2c6bnVsbH1mdW5jdGlvbiAkKGEsYixjKXtyZXR1cm4g
ZnVuY3Rpb24oZCxlLGYsZyxoKXtkfHwoZD1hLiRuZXcoITEsaCksZC4kJHRyYW5zY2x1ZGVkPSEw
KTtyZXR1cm4gYihkLGUse3BhcmVudEJvdW5kVHJhbnNjbHVkZUZuOmMsdHJhbnNjbHVkZUNvbnRy
b2xsZXJzOmYsZnV0dXJlUGFyZW50RWxlbWVudDpnfSl9fWZ1bmN0aW9uIGhhKGEsYixjLGQsZSl7
dmFyIGg9Yy4kYXR0cixrO3N3aXRjaChhLm5vZGVUeXBlKXtjYXNlIHFhOncoYiwKK3dhKHRhKGEp
KSwiRSIsZCxlKTtmb3IodmFyIGwscyxuLHA9YS5hdHRyaWJ1dGVzLEI9MCxDPXAmJnAubGVuZ3Ro
O0I8QztCKyspe3ZhciB4PSExLFM9ITE7bD1wW0JdO2s9bC5uYW1lO3M9UihsLnZhbHVlKTtsPXdh
KGspO2lmKG49aWEudGVzdChsKSlrPWsucmVwbGFjZShaYywiIikuc3Vic3RyKDgpLnJlcGxhY2Uo
L18oLikvZyxmdW5jdGlvbihhLGIpe3JldHVybiBiLnRvVXBwZXJDYXNlKCl9KTt2YXIgRj1sLnJl
cGxhY2UoLyhTdGFydHxFbmQpJC8sIiIpO0EoRikmJmw9PT1GKyJTdGFydCImJih4PWssUz1rLnN1
YnN0cigwLGsubGVuZ3RoLTUpKyJlbmQiLGs9ay5zdWJzdHIoMCxrLmxlbmd0aC02KSk7bD13YShr
LnRvTG93ZXJDYXNlKCkpO2hbbF09aztpZihufHwhYy5oYXNPd25Qcm9wZXJ0eShsKSljW2xdPXMs
U2MoYSxsKSYmKGNbbF09ITApO1YoYSxiLHMsbCxuKTt3KGIsbCwiQSIsZCxlLHgsUyl9YT1hLmNs
YXNzTmFtZTtIKGEpJiYoYT1hLmFuaW1WYWwpO2lmKEwoYSkmJgorIiIhPT1hKWZvcig7az1nLmV4
ZWMoYSk7KWw9d2Eoa1syXSksdyhiLGwsIkMiLGQsZSkmJihjW2xdPVIoa1szXSkpLGE9YS5zdWJz
dHIoay5pbmRleCtrWzBdLmxlbmd0aCk7YnJlYWs7Y2FzZSBOYTppZigxMT09PVVhKWZvcig7YS5w
YXJlbnROb2RlJiZhLm5leHRTaWJsaW5nJiZhLm5leHRTaWJsaW5nLm5vZGVUeXBlPT09TmE7KWEu
bm9kZVZhbHVlKz1hLm5leHRTaWJsaW5nLm5vZGVWYWx1ZSxhLnBhcmVudE5vZGUucmVtb3ZlQ2hp
bGQoYS5uZXh0U2libGluZyk7eGEoYixhLm5vZGVWYWx1ZSk7YnJlYWs7Y2FzZSA4OnRyeXtpZihr
PWYuZXhlYyhhLm5vZGVWYWx1ZSkpbD13YShrWzFdKSx3KGIsbCwiTSIsZCxlKSYmKGNbbF09Uihr
WzJdKSl9Y2F0Y2goJCl7fX1iLnNvcnQoQWEpO3JldHVybiBifWZ1bmN0aW9uIHZhKGEsYixjKXt2
YXIgZD1bXSxlPTA7aWYoYiYmYS5oYXNBdHRyaWJ1dGUmJmEuaGFzQXR0cmlidXRlKGIpKXtkb3tp
ZighYSl0aHJvdyBlYSgidXRlcmRpciIsYixjKTsKK2Eubm9kZVR5cGU9PXFhJiYoYS5oYXNBdHRy
aWJ1dGUoYikmJmUrKyxhLmhhc0F0dHJpYnV0ZShjKSYmZS0tKTtkLnB1c2goYSk7YT1hLm5leHRT
aWJsaW5nfXdoaWxlKDA8ZSl9ZWxzZSBkLnB1c2goYSk7cmV0dXJuIHkoZCl9ZnVuY3Rpb24gWWMo
YSxiLGMpe3JldHVybiBmdW5jdGlvbihkLGUsZixnLGgpe2U9dmEoZVswXSxiLGMpO3JldHVybiBh
KGQsZSxmLGcsaCl9fWZ1bmN0aW9uIEUoYSxiLGQsZSxmLGcsaCxrLHMpe2Z1bmN0aW9uIG4oYSxi
LGMsZCl7aWYoYSl7YyYmKGE9WWMoYSxjLGQpKTthLnJlcXVpcmU9RS5yZXF1aXJlO2EuZGlyZWN0
aXZlTmFtZT13O2lmKHU9PT1FfHxFLiQkaXNvbGF0ZVNjb3BlKWE9WChhLHtpc29sYXRlU2NvcGU6
ITB9KTtoLnB1c2goYSl9aWYoYil7YyYmKGI9WWMoYixjLGQpKTtiLnJlcXVpcmU9RS5yZXF1aXJl
O2IuZGlyZWN0aXZlTmFtZT13O2lmKHU9PT1FfHxFLiQkaXNvbGF0ZVNjb3BlKWI9WChiLHtpc29s
YXRlU2NvcGU6ITB9KTtrLnB1c2goYil9fQorZnVuY3Rpb24gQihhLGIsYyxkKXt2YXIgZTtpZihM
KGIpKXt2YXIgZj1iLm1hdGNoKGwpO2I9Yi5zdWJzdHJpbmcoZlswXS5sZW5ndGgpO3ZhciBnPWZb
MV18fGZbM10sZj0iPyI9PT1mWzJdOyJeXiI9PT1nP2M9Yy5wYXJlbnQoKTplPShlPWQmJmRbYl0p
JiZlLmluc3RhbmNlO2V8fChkPSIkIitiKyJDb250cm9sbGVyIixlPWc/Yy5pbmhlcml0ZWREYXRh
KGQpOmMuZGF0YShkKSk7aWYoIWUmJiFmKXRocm93IGVhKCJjdHJlcSIsYixhKTt9ZWxzZSBpZihH
KGIpKWZvcihlPVtdLGc9MCxmPWIubGVuZ3RoO2c8ZjtnKyspZVtnXT1CKGEsYltnXSxjLGQpO3Jl
dHVybiBlfHxudWxsfWZ1bmN0aW9uIHgoYSxiLGMsZCxlLGYpe3ZhciBnPWdhKCksaDtmb3IoaCBp
biBkKXt2YXIgaz1kW2hdLGw9eyRzY29wZTprPT09dXx8ay4kJGlzb2xhdGVTY29wZT9lOmYsJGVs
ZW1lbnQ6YSwkYXR0cnM6YiwkdHJhbnNjbHVkZTpjfSxzPWsuY29udHJvbGxlcjsiQCI9PXMmJihz
PWJbay5uYW1lXSk7bD1wKHMsCitsLCEwLGsuY29udHJvbGxlckFzKTtnW2submFtZV09bDtxfHxh
LmRhdGEoIiQiK2submFtZSsiQ29udHJvbGxlciIsbC5pbnN0YW5jZSl9cmV0dXJuIGd9ZnVuY3Rp
b24gUyhhLGMsZSxmLGcsbCl7ZnVuY3Rpb24gcyhhLGIsYyl7dmFyIGQ7JGEoYSl8fChjPWIsYj1h
LGE9dCk7cSYmKGQ9bSk7Y3x8KGM9cT9qYS5wYXJlbnQoKTpqYSk7cmV0dXJuIGcoYSxiLGQsYyx2
YSl9dmFyIG4scCxDLEYsbSxoYSxqYTtiPT09ZT8oZj1kLGphPWQuJCRlbGVtZW50KTooamE9eShl
KSxmPW5ldyBhYShqYSxkKSk7dSYmKEY9Yy4kbmV3KCEwKSk7ZyYmKGhhPXMsaGEuJCRib3VuZFRy
YW5zY2x1ZGU9Zyk7TiYmKG09eChqYSxmLGhhLE4sRixjKSk7dSYmKFouJCRhZGRTY29wZUluZm8o
amEsRiwhMCwhKEQmJihEPT09dXx8RD09PXUuJCRvcmlnaW5hbERpcmVjdGl2ZSkpKSxaLiQkYWRk
U2NvcGVDbGFzcyhqYSwhMCksRi4kJGlzb2xhdGVCaW5kaW5ncz11LiQkaXNvbGF0ZUJpbmRpbmdz
LFcoYyxmLEYsCitGLiQkaXNvbGF0ZUJpbmRpbmdzLHUsRikpO2lmKG0pe3ZhciBLPXV8fCQsSTtL
JiZtW0submFtZV0mJihwPUsuJCRiaW5kaW5ncy5iaW5kVG9Db250cm9sbGVyLChDPW1bSy5uYW1l
XSkmJkMuaWRlbnRpZmllciYmcCYmKEk9QyxsLiQkZGVzdHJveUJpbmRpbmdzPVcoYyxmLEMuaW5z
dGFuY2UscCxLKSkpO2ZvcihuIGluIG0pe0M9bVtuXTt2YXIgRT1DKCk7RSE9PUMuaW5zdGFuY2Um
JihDLmluc3RhbmNlPUUsamEuZGF0YSgiJCIrbisiQ29udHJvbGxlciIsRSksQz09PUkmJihsLiQk
ZGVzdHJveUJpbmRpbmdzKCksbC4kJGRlc3Ryb3lCaW5kaW5ncz1XKGMsZixFLHAsSykpKX19bj0w
O2ZvcihsPWgubGVuZ3RoO248bDtuKyspcD1oW25dLFkocCxwLmlzb2xhdGVTY29wZT9GOmMsamEs
ZixwLnJlcXVpcmUmJkIocC5kaXJlY3RpdmVOYW1lLHAucmVxdWlyZSxqYSxtKSxoYSk7dmFyIHZh
PWM7dSYmKHUudGVtcGxhdGV8fG51bGw9PT11LnRlbXBsYXRlVXJsKSYmKHZhPUYpO2EmJmEodmEs
CitlLmNoaWxkTm9kZXMsdCxnKTtmb3Iobj1rLmxlbmd0aC0xOzA8PW47bi0tKXA9a1tuXSxZKHAs
cC5pc29sYXRlU2NvcGU/RjpjLGphLGYscC5yZXF1aXJlJiZCKHAuZGlyZWN0aXZlTmFtZSxwLnJl
cXVpcmUsamEsbSksaGEpfXM9c3x8e307Zm9yKHZhciBGPS1OdW1iZXIuTUFYX1ZBTFVFLCQ9cy5u
ZXdTY29wZURpcmVjdGl2ZSxOPXMuY29udHJvbGxlckRpcmVjdGl2ZXMsdT1zLm5ld0lzb2xhdGVT
Y29wZURpcmVjdGl2ZSxEPXMudGVtcGxhdGVEaXJlY3RpdmUsbT1zLm5vblRsYlRyYW5zY2x1ZGVE
aXJlY3RpdmUsSz0hMSxJPSExLHE9cy5oYXNFbGVtZW50VHJhbnNjbHVkZURpcmVjdGl2ZSxiYT1k
LiQkZWxlbWVudD15KGIpLEUsdyx2LEE9ZSxBYSx4YT0wLFRhPWEubGVuZ3RoO3hhPFRhO3hhKysp
e0U9YVt4YV07dmFyIE09RS4kJHN0YXJ0LFA9RS4kJGVuZDtNJiYoYmE9dmEoYixNLFApKTt2PXQ7
aWYoRj5FLnByaW9yaXR5KWJyZWFrO2lmKHY9RS5zY29wZSlFLnRlbXBsYXRlVXJsfHwKKyhIKHYp
PyhPKCJuZXcvaXNvbGF0ZWQgc2NvcGUiLHV8fCQsRSxiYSksdT1FKTpPKCJuZXcvaXNvbGF0ZWQg
c2NvcGUiLHUsRSxiYSkpLCQ9JHx8RTt3PUUubmFtZTshRS50ZW1wbGF0ZVVybCYmRS5jb250cm9s
bGVyJiYodj1FLmNvbnRyb2xsZXIsTj1OfHxnYSgpLE8oIiciK3crIicgY29udHJvbGxlciIsTlt3
XSxFLGJhKSxOW3ddPUUpO2lmKHY9RS50cmFuc2NsdWRlKUs9ITAsRS4kJHRsYnx8KE8oInRyYW5z
Y2x1c2lvbiIsbSxFLGJhKSxtPUUpLCJlbGVtZW50Ij09dj8ocT0hMCxGPUUucHJpb3JpdHksdj1i
YSxiYT1kLiQkZWxlbWVudD15KFUuY3JlYXRlQ29tbWVudCgiICIrdysiOiAiK2Rbd10rIiAiKSks
Yj1iYVswXSxUKGYsemEuY2FsbCh2LDApLGIpLEE9Wih2LGUsRixnJiZnLm5hbWUse25vblRsYlRy
YW5zY2x1ZGVEaXJlY3RpdmU6bX0pKToodj15KFZiKGIpKS5jb250ZW50cygpLGJhLmVtcHR5KCks
QT1aKHYsZSkpO2lmKEUudGVtcGxhdGUpaWYoST0hMCxPKCJ0ZW1wbGF0ZSIsCitELEUsYmEpLEQ9
RSx2PXooRS50ZW1wbGF0ZSk/RS50ZW1wbGF0ZShiYSxkKTpFLnRlbXBsYXRlLHY9ZmEodiksRS5y
ZXBsYWNlKXtnPUU7dj1UYi50ZXN0KHYpPyRjKFliKEUudGVtcGxhdGVOYW1lc3BhY2UsUih2KSkp
OltdO2I9dlswXTtpZigxIT12Lmxlbmd0aHx8Yi5ub2RlVHlwZSE9PXFhKXRocm93IGVhKCJ0cGxy
dCIsdywiIik7VChmLGJhLGIpO1RhPXskYXR0cjp7fX07dj1oYShiLFtdLFRhKTt2YXIgUT1hLnNw
bGljZSh4YSsxLGEubGVuZ3RoLSh4YSsxKSk7dSYmYWQodik7YT1hLmNvbmNhdCh2KS5jb25jYXQo
USk7SihkLFRhKTtUYT1hLmxlbmd0aH1lbHNlIGJhLmh0bWwodik7aWYoRS50ZW1wbGF0ZVVybClJ
PSEwLE8oInRlbXBsYXRlIixELEUsYmEpLEQ9RSxFLnJlcGxhY2UmJihnPUUpLFM9TGYoYS5zcGxp
Y2UoeGEsYS5sZW5ndGgteGEpLGJhLGQsZixLJiZBLGgsayx7Y29udHJvbGxlckRpcmVjdGl2ZXM6
TixuZXdTY29wZURpcmVjdGl2ZTokIT09RSYmJCxuZXdJc29sYXRlU2NvcGVEaXJlY3RpdmU6dSwK
K3RlbXBsYXRlRGlyZWN0aXZlOkQsbm9uVGxiVHJhbnNjbHVkZURpcmVjdGl2ZTptfSksVGE9YS5s
ZW5ndGg7ZWxzZSBpZihFLmNvbXBpbGUpdHJ5e0FhPUUuY29tcGlsZShiYSxkLEEpLHooQWEpP24o
bnVsbCxBYSxNLFApOkFhJiZuKEFhLnByZSxBYS5wb3N0LE0sUCl9Y2F0Y2goS2Ype2MoS2YsdWEo
YmEpKX1FLnRlcm1pbmFsJiYoUy50ZXJtaW5hbD0hMCxGPU1hdGgubWF4KEYsRS5wcmlvcml0eSkp
fVMuc2NvcGU9JCYmITA9PT0kLnNjb3BlO1MudHJhbnNjbHVkZU9uVGhpc0VsZW1lbnQ9SztTLnRl
bXBsYXRlT25UaGlzRWxlbWVudD1JO1MudHJhbnNjbHVkZT1BO3MuaGFzRWxlbWVudFRyYW5zY2x1
ZGVEaXJlY3RpdmU9cTtyZXR1cm4gU31mdW5jdGlvbiBhZChhKXtmb3IodmFyIGI9MCxjPWEubGVu
Z3RoO2I8YztiKyspYVtiXT1PYihhW2JdLHskJGlzb2xhdGVTY29wZTohMH0pfWZ1bmN0aW9uIHco
YixkLGYsZyxoLGssbCl7aWYoZD09PWgpcmV0dXJuIG51bGw7aD1udWxsO2lmKGUuaGFzT3duUHJv
cGVydHkoZCkpe3ZhciBuOworZD1hLmdldChkKyJEaXJlY3RpdmUiKTtmb3IodmFyIHA9MCxCPWQu
bGVuZ3RoO3A8QjtwKyspdHJ5e249ZFtwXSwoZz09PXR8fGc+bi5wcmlvcml0eSkmJi0xIT1uLnJl
c3RyaWN0LmluZGV4T2YoZikmJihrJiYobj1PYihuLHskJHN0YXJ0OmssJCRlbmQ6bH0pKSxiLnB1
c2gobiksaD1uKX1jYXRjaCh4KXtjKHgpfX1yZXR1cm4gaH1mdW5jdGlvbiBBKGIpe2lmKGUuaGFz
T3duUHJvcGVydHkoYikpZm9yKHZhciBjPWEuZ2V0KGIrIkRpcmVjdGl2ZSIpLGQ9MCxmPWMubGVu
Z3RoO2Q8ZjtkKyspaWYoYj1jW2RdLGIubXVsdGlFbGVtZW50KXJldHVybiEwO3JldHVybiExfWZ1
bmN0aW9uIEooYSxiKXt2YXIgYz1iLiRhdHRyLGQ9YS4kYXR0cixlPWEuJCRlbGVtZW50O20oYSxm
dW5jdGlvbihkLGUpeyIkIiE9ZS5jaGFyQXQoMCkmJihiW2VdJiZiW2VdIT09ZCYmKGQrPSgic3R5
bGUiPT09ZT8iOyI6IiAiKStiW2VdKSxhLiRzZXQoZSxkLCEwLGNbZV0pKX0pO20oYixmdW5jdGlv
bihiLGYpeyJjbGFzcyI9PQorZj8oRChlLGIpLGFbImNsYXNzIl09KGFbImNsYXNzIl0/YVsiY2xh
c3MiXSsiICI6IiIpK2IpOiJzdHlsZSI9PWY/KGUuYXR0cigic3R5bGUiLGUuYXR0cigic3R5bGUi
KSsiOyIrYiksYS5zdHlsZT0oYS5zdHlsZT9hLnN0eWxlKyI7IjoiIikrYik6IiQiPT1mLmNoYXJB
dCgwKXx8YS5oYXNPd25Qcm9wZXJ0eShmKXx8KGFbZl09YixkW2ZdPWNbZl0pfSl9ZnVuY3Rpb24g
TGYoYSxiLGMsZSxmLGcsaCxrKXt2YXIgbD1bXSxzLG4scD1iWzBdLEI9YS5zaGlmdCgpLEM9T2Io
Qix7dGVtcGxhdGVVcmw6bnVsbCx0cmFuc2NsdWRlOm51bGwscmVwbGFjZTpudWxsLCQkb3JpZ2lu
YWxEaXJlY3RpdmU6Qn0pLHg9eihCLnRlbXBsYXRlVXJsKT9CLnRlbXBsYXRlVXJsKGIsYyk6Qi50
ZW1wbGF0ZVVybCxOPUIudGVtcGxhdGVOYW1lc3BhY2U7Yi5lbXB0eSgpO2QoeCkudGhlbihmdW5j
dGlvbihkKXt2YXIgRix1O2Q9ZmEoZCk7aWYoQi5yZXBsYWNlKXtkPVRiLnRlc3QoZCk/JGMoWWIo
TixSKGQpKSk6CitbXTtGPWRbMF07aWYoMSE9ZC5sZW5ndGh8fEYubm9kZVR5cGUhPT1xYSl0aHJv
dyBlYSgidHBscnQiLEIubmFtZSx4KTtkPXskYXR0cjp7fX07VChlLGIsRik7dmFyIEs9aGEoRixb
XSxkKTtIKEIuc2NvcGUpJiZhZChLKTthPUsuY29uY2F0KGEpO0ooYyxkKX1lbHNlIEY9cCxiLmh0
bWwoZCk7YS51bnNoaWZ0KEMpO3M9RShhLEYsYyxmLGIsQixnLGgsayk7bShlLGZ1bmN0aW9uKGEs
Yyl7YT09RiYmKGVbY109YlswXSl9KTtmb3Iobj1TKGJbMF0uY2hpbGROb2RlcyxmKTtsLmxlbmd0
aDspe2Q9bC5zaGlmdCgpO3U9bC5zaGlmdCgpO3ZhciBJPWwuc2hpZnQoKSx2YT1sLnNoaWZ0KCks
Sz1iWzBdO2lmKCFkLiQkZGVzdHJveWVkKXtpZih1IT09cCl7dmFyIFo9dS5jbGFzc05hbWU7ay5o
YXNFbGVtZW50VHJhbnNjbHVkZURpcmVjdGl2ZSYmQi5yZXBsYWNlfHwoSz1WYihGKSk7VChJLHko
dSksSyk7RCh5KEspLFopfXU9cy50cmFuc2NsdWRlT25UaGlzRWxlbWVudD8kKGQscy50cmFuc2Ns
dWRlLAordmEpOnZhO3MobixkLEssZSx1LHMpfX1sPW51bGx9KTtyZXR1cm4gZnVuY3Rpb24oYSxi
LGMsZCxlKXthPWU7Yi4kJGRlc3Ryb3llZHx8KGw/bC5wdXNoKGIsYyxkLGEpOihzLnRyYW5zY2x1
ZGVPblRoaXNFbGVtZW50JiYoYT0kKGIscy50cmFuc2NsdWRlLGUpKSxzKG4sYixjLGQsYSxzKSkp
fX1mdW5jdGlvbiBBYShhLGIpe3ZhciBjPWIucHJpb3JpdHktYS5wcmlvcml0eTtyZXR1cm4gMCE9
PWM/YzphLm5hbWUhPT1iLm5hbWU/YS5uYW1lPGIubmFtZT8tMToxOmEuaW5kZXgtYi5pbmRleH1m
dW5jdGlvbiBPKGEsYixjLGQpe2Z1bmN0aW9uIGUoYSl7cmV0dXJuIGE/IiAobW9kdWxlOiAiK2Er
IikiOiIifWlmKGIpdGhyb3cgZWEoIm11bHRpZGlyIixiLm5hbWUsZShiLiQkbW9kdWxlTmFtZSks
Yy5uYW1lLGUoYy4kJG1vZHVsZU5hbWUpLGEsdWEoZCkpO31mdW5jdGlvbiB4YShhLGMpe3ZhciBk
PWIoYywhMCk7ZCYmYS5wdXNoKHtwcmlvcml0eTowLGNvbXBpbGU6ZnVuY3Rpb24oYSl7YT0KK2Eu
cGFyZW50KCk7dmFyIGI9ISFhLmxlbmd0aDtiJiZaLiQkYWRkQmluZGluZ0NsYXNzKGEpO3JldHVy
biBmdW5jdGlvbihhLGMpe3ZhciBlPWMucGFyZW50KCk7Ynx8Wi4kJGFkZEJpbmRpbmdDbGFzcyhl
KTtaLiQkYWRkQmluZGluZ0luZm8oZSxkLmV4cHJlc3Npb25zKTthLiR3YXRjaChkLGZ1bmN0aW9u
KGEpe2NbMF0ubm9kZVZhbHVlPWF9KX19fSl9ZnVuY3Rpb24gWWIoYSxiKXthPU0oYXx8Imh0bWwi
KTtzd2l0Y2goYSl7Y2FzZSAic3ZnIjpjYXNlICJtYXRoIjp2YXIgYz1VLmNyZWF0ZUVsZW1lbnQo
ImRpdiIpO2MuaW5uZXJIVE1MPSI8IithKyI+IitiKyI8LyIrYSsiPiI7cmV0dXJuIGMuY2hpbGRO
b2Rlc1swXS5jaGlsZE5vZGVzO2RlZmF1bHQ6cmV0dXJuIGJ9fWZ1bmN0aW9uIFEoYSxiKXtpZigi
c3JjZG9jIj09YilyZXR1cm4gSS5IVE1MO3ZhciBjPXRhKGEpO2lmKCJ4bGlua0hyZWYiPT1ifHwi
Zm9ybSI9PWMmJiJhY3Rpb24iPT1ifHwiaW1nIiE9YyYmKCJzcmMiPT1ifHwKKyJuZ1NyYyI9PWIp
KXJldHVybiBJLlJFU09VUkNFX1VSTH1mdW5jdGlvbiBWKGEsYyxkLGUsZil7dmFyIGc9UShhLGUp
O2Y9aFtlXXx8Zjt2YXIgbD1iKGQsITAsZyxmKTtpZihsKXtpZigibXVsdGlwbGUiPT09ZSYmInNl
bGVjdCI9PT10YShhKSl0aHJvdyBlYSgic2VsbXVsdGkiLHVhKGEpKTtjLnB1c2goe3ByaW9yaXR5
OjEwMCxjb21waWxlOmZ1bmN0aW9uKCl7cmV0dXJue3ByZTpmdW5jdGlvbihhLGMsaCl7Yz1oLiQk
b2JzZXJ2ZXJzfHwoaC4kJG9ic2VydmVycz17fSk7aWYoay50ZXN0KGUpKXRocm93IGVhKCJub2Rv
bWV2ZW50cyIpO3ZhciBzPWhbZV07cyE9PWQmJihsPXMmJmIocywhMCxnLGYpLGQ9cyk7bCYmKGhb
ZV09bChhKSwoY1tlXXx8KGNbZV09W10pKS4kJGludGVyPSEwLChoLiQkb2JzZXJ2ZXJzJiZoLiQk
b2JzZXJ2ZXJzW2VdLiQkc2NvcGV8fGEpLiR3YXRjaChsLGZ1bmN0aW9uKGEsYil7ImNsYXNzIj09
PWUmJmEhPWI/aC4kdXBkYXRlQ2xhc3MoYSxiKTpoLiRzZXQoZSwKK2EpfSkpfX19fSl9fWZ1bmN0
aW9uIFQoYSxiLGMpe3ZhciBkPWJbMF0sZT1iLmxlbmd0aCxmPWQucGFyZW50Tm9kZSxnLGg7aWYo
YSlmb3IoZz0wLGg9YS5sZW5ndGg7ZzxoO2crKylpZihhW2ddPT1kKXthW2crK109YztoPWcrZS0x
O2Zvcih2YXIgaz1hLmxlbmd0aDtnPGs7ZysrLGgrKyloPGs/YVtnXT1hW2hdOmRlbGV0ZSBhW2dd
O2EubGVuZ3RoLT1lLTE7YS5jb250ZXh0PT09ZCYmKGEuY29udGV4dD1jKTticmVha31mJiZmLnJl
cGxhY2VDaGlsZChjLGQpO2E9VS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7YS5hcHBlbmRDaGls
ZChkKTt5Lmhhc0RhdGEoZCkmJih5KGMpLmRhdGEoeShkKS5kYXRhKCkpLGxhPyhSYj0hMCxsYS5j
bGVhbkRhdGEoW2RdKSk6ZGVsZXRlIHkuY2FjaGVbZFt5LmV4cGFuZG9dXSk7ZD0xO2ZvcihlPWIu
bGVuZ3RoO2Q8ZTtkKyspZj1iW2RdLHkoZikucmVtb3ZlKCksYS5hcHBlbmRDaGlsZChmKSxkZWxl
dGUgYltkXTtiWzBdPWM7Yi5sZW5ndGg9MX1mdW5jdGlvbiBYKGEsCitiKXtyZXR1cm4gUChmdW5j
dGlvbigpe3JldHVybiBhLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sYSxiKX1mdW5jdGlvbiBZKGEs
YixkLGUsZixnKXt0cnl7YShiLGQsZSxmLGcpfWNhdGNoKGgpe2MoaCx1YShkKSl9fWZ1bmN0aW9u
IFcoYSxjLGQsZSxmLGcpe3ZhciBoO20oZSxmdW5jdGlvbihlLGcpe3ZhciBrPWUuYXR0ck5hbWUs
bD1lLm9wdGlvbmFsLHM9ZS5tb2RlLG4scCxCLEM7WGEuY2FsbChjLGspfHwoY1trXT10KTtzd2l0
Y2gocyl7Y2FzZSAiQCI6Y1trXXx8bHx8KGRbZ109dCk7Yy4kb2JzZXJ2ZShrLGZ1bmN0aW9uKGEp
e2RbZ109YX0pO2MuJCRvYnNlcnZlcnNba10uJCRzY29wZT1hO2Nba10mJihkW2ddPWIoY1trXSko
YSkpO2JyZWFrO2Nhc2UgIj0iOmlmKGwmJiFjW2tdKWJyZWFrO3A9dShjW2tdKTtDPXAubGl0ZXJh
bD9rYTpmdW5jdGlvbihhLGIpe3JldHVybiBhPT09Ynx8YSE9PWEmJmIhPT1ifTtCPXAuYXNzaWdu
fHxmdW5jdGlvbigpe249ZFtnXT1wKGEpO3Rocm93IGVhKCJub25hc3NpZ24iLAorY1trXSxmLm5h
bWUpO307bj1kW2ddPXAoYSk7bD1mdW5jdGlvbihiKXtDKGIsZFtnXSl8fChDKGIsbik/QihhLGI9
ZFtnXSk6ZFtnXT1iKTtyZXR1cm4gbj1ifTtsLiRzdGF0ZWZ1bD0hMDtsPWUuY29sbGVjdGlvbj9h
LiR3YXRjaENvbGxlY3Rpb24oY1trXSxsKTphLiR3YXRjaCh1KGNba10sbCksbnVsbCxwLmxpdGVy
YWwpO2g9aHx8W107aC5wdXNoKGwpO2JyZWFrO2Nhc2UgIiYiOnA9dShjW2tdKTtpZihwPT09diYm
bClicmVhaztkW2ddPWZ1bmN0aW9uKGIpe3JldHVybiBwKGEsYil9fX0pO2U9aD9mdW5jdGlvbigp
e2Zvcih2YXIgYT0wLGI9aC5sZW5ndGg7YTxiOysrYSloW2FdKCl9OnY7cmV0dXJuIGcmJmUhPT12
PyhnLiRvbigiJGRlc3Ryb3kiLGUpLHYpOmV9dmFyIGFhPWZ1bmN0aW9uKGEsYil7aWYoYil7dmFy
IGM9T2JqZWN0LmtleXMoYiksZCxlLGY7ZD0wO2ZvcihlPWMubGVuZ3RoO2Q8ZTtkKyspZj1jW2Rd
LHRoaXNbZl09YltmXX1lbHNlIHRoaXMuJGF0dHI9e307dGhpcy4kJGVsZW1lbnQ9CithfTthYS5w
cm90b3R5cGU9eyRub3JtYWxpemU6d2EsJGFkZENsYXNzOmZ1bmN0aW9uKGEpe2EmJjA8YS5sZW5n
dGgmJkIuYWRkQ2xhc3ModGhpcy4kJGVsZW1lbnQsYSl9LCRyZW1vdmVDbGFzczpmdW5jdGlvbihh
KXthJiYwPGEubGVuZ3RoJiZCLnJlbW92ZUNsYXNzKHRoaXMuJCRlbGVtZW50LGEpfSwkdXBkYXRl
Q2xhc3M6ZnVuY3Rpb24oYSxiKXt2YXIgYz1iZChhLGIpO2MmJmMubGVuZ3RoJiZCLmFkZENsYXNz
KHRoaXMuJCRlbGVtZW50LGMpOyhjPWJkKGIsYSkpJiZjLmxlbmd0aCYmQi5yZW1vdmVDbGFzcyh0
aGlzLiQkZWxlbWVudCxjKX0sJHNldDpmdW5jdGlvbihhLGIsZCxlKXt2YXIgZj10aGlzLiQkZWxl
bWVudFswXSxnPVNjKGYsYSksaD1GZihmLGEpLGY9YTtnPyh0aGlzLiQkZWxlbWVudC5wcm9wKGEs
YiksZT1nKTpoJiYodGhpc1toXT1iLGY9aCk7dGhpc1thXT1iO2U/dGhpcy4kYXR0clthXT1lOihl
PXRoaXMuJGF0dHJbYV0pfHwodGhpcy4kYXR0clthXT1lPUJjKGEsCisiLSIpKTtnPXRhKHRoaXMu
JCRlbGVtZW50KTtpZigiYSI9PT1nJiYiaHJlZiI9PT1hfHwiaW1nIj09PWcmJiJzcmMiPT09YSl0
aGlzW2FdPWI9TihiLCJzcmMiPT09YSk7ZWxzZSBpZigiaW1nIj09PWcmJiJzcmNzZXQiPT09YSl7
Zm9yKHZhciBnPSIiLGg9UihiKSxrPS8oXHMrXGQreFxzKix8XHMrXGQrd1xzKix8XHMrLHwsXHMr
KS8saz0vXHMvLnRlc3QoaCk/azovKCwpLyxoPWguc3BsaXQoayksaz1NYXRoLmZsb29yKGgubGVu
Z3RoLzIpLGw9MDtsPGs7bCsrKXZhciBzPTIqbCxnPWcrTihSKGhbc10pLCEwKSxnPWcrKCIgIitS
KGhbcysxXSkpO2g9UihoWzIqbF0pLnNwbGl0KC9ccy8pO2crPU4oUihoWzBdKSwhMCk7Mj09PWgu
bGVuZ3RoJiYoZys9IiAiK1IoaFsxXSkpO3RoaXNbYV09Yj1nfSExIT09ZCYmKG51bGw9PT1ifHxi
PT09dD90aGlzLiQkZWxlbWVudC5yZW1vdmVBdHRyKGUpOnRoaXMuJCRlbGVtZW50LmF0dHIoZSxi
KSk7KGE9dGhpcy4kJG9ic2VydmVycykmJm0oYVtmXSwKK2Z1bmN0aW9uKGEpe3RyeXthKGIpfWNh
dGNoKGQpe2MoZCl9fSl9LCRvYnNlcnZlOmZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcyxkPWMuJCRv
YnNlcnZlcnN8fChjLiQkb2JzZXJ2ZXJzPWdhKCkpLGU9ZFthXXx8KGRbYV09W10pO2UucHVzaChi
KTtLLiRldmFsQXN5bmMoZnVuY3Rpb24oKXshZS4kJGludGVyJiZjLmhhc093blByb3BlcnR5KGEp
JiZiKGNbYV0pfSk7cmV0dXJuIGZ1bmN0aW9uKCl7YmIoZSxiKX19fTt2YXIgY2E9Yi5zdGFydFN5
bWJvbCgpLGRhPWIuZW5kU3ltYm9sKCksZmE9Int7Ij09Y2F8fCJ9fSI9PWRhP1lhOmZ1bmN0aW9u
KGEpe3JldHVybiBhLnJlcGxhY2UoL1x7XHsvZyxjYSkucmVwbGFjZSgvfX0vZyxkYSl9LGlhPS9e
bmdBdHRyW0EtWl0vO1ouJCRhZGRCaW5kaW5nSW5mbz1uP2Z1bmN0aW9uKGEsYil7dmFyIGM9YS5k
YXRhKCIkYmluZGluZyIpfHxbXTtHKGIpP2M9Yy5jb25jYXQoYik6Yy5wdXNoKGIpO2EuZGF0YSgi
JGJpbmRpbmciLGMpfTp2O1ouJCRhZGRCaW5kaW5nQ2xhc3M9CituP2Z1bmN0aW9uKGEpe0QoYSwi
bmctYmluZGluZyIpfTp2O1ouJCRhZGRTY29wZUluZm89bj9mdW5jdGlvbihhLGIsYyxkKXthLmRh
dGEoYz9kPyIkaXNvbGF0ZVNjb3BlTm9UZW1wbGF0ZSI6IiRpc29sYXRlU2NvcGUiOiIkc2NvcGUi
LGIpfTp2O1ouJCRhZGRTY29wZUNsYXNzPW4/ZnVuY3Rpb24oYSxiKXtEKGEsYj8ibmctaXNvbGF0
ZS1zY29wZSI6Im5nLXNjb3BlIil9OnY7cmV0dXJuIFp9XX1mdW5jdGlvbiB3YShiKXtyZXR1cm4g
aGIoYi5yZXBsYWNlKFpjLCIiKSl9ZnVuY3Rpb24gYmQoYixhKXt2YXIgYz0iIixkPWIuc3BsaXQo
L1xzKy8pLGU9YS5zcGxpdCgvXHMrLyksZj0wO2E6Zm9yKDtmPGQubGVuZ3RoO2YrKyl7Zm9yKHZh
ciBnPWRbZl0saD0wO2g8ZS5sZW5ndGg7aCsrKWlmKGc9PWVbaF0pY29udGludWUgYTtjKz0oMDxj
Lmxlbmd0aD8iICI6IiIpK2d9cmV0dXJuIGN9ZnVuY3Rpb24gJGMoYil7Yj15KGIpO3ZhciBhPWIu
bGVuZ3RoO2lmKDE+PWEpcmV0dXJuIGI7Zm9yKDthLS07KTg9PT0KK2JbYV0ubm9kZVR5cGUmJk1m
LmNhbGwoYixhLDEpO3JldHVybiBifWZ1bmN0aW9uIFhlKCl7dmFyIGI9e30sYT0hMTt0aGlzLnJl
Z2lzdGVyPWZ1bmN0aW9uKGEsZCl7UmEoYSwiY29udHJvbGxlciIpO0goYSk/UChiLGEpOmJbYV09
ZH07dGhpcy5hbGxvd0dsb2JhbHM9ZnVuY3Rpb24oKXthPSEwfTt0aGlzLiRnZXQ9WyIkaW5qZWN0
b3IiLCIkd2luZG93IixmdW5jdGlvbihjLGQpe2Z1bmN0aW9uIGUoYSxiLGMsZCl7aWYoIWF8fCFI
KGEuJHNjb3BlKSl0aHJvdyBKKCIkY29udHJvbGxlciIpKCJub3NjcCIsZCxiKTthLiRzY29wZVti
XT1jfXJldHVybiBmdW5jdGlvbihmLGcsaCxsKXt2YXIgayxuLHI7aD0hMD09PWg7bCYmTChsKSYm
KHI9bCk7aWYoTChmKSl7bD1mLm1hdGNoKFhjKTtpZighbCl0aHJvdyBOZigiY3RybGZtdCIsZik7
bj1sWzFdO3I9cnx8bFszXTtmPWIuaGFzT3duUHJvcGVydHkobik/YltuXTpEYyhnLiRzY29wZSxu
LCEwKXx8KGE/RGMoZCxuLCEwKTp0KTtRYShmLAorbiwhMCl9aWYoaClyZXR1cm4gaD0oRyhmKT9m
W2YubGVuZ3RoLTFdOmYpLnByb3RvdHlwZSxrPU9iamVjdC5jcmVhdGUoaHx8bnVsbCksciYmZShn
LHIsayxufHxmLm5hbWUpLFAoZnVuY3Rpb24oKXt2YXIgYT1jLmludm9rZShmLGssZyxuKTthIT09
ayYmKEgoYSl8fHooYSkpJiYoaz1hLHImJmUoZyxyLGssbnx8Zi5uYW1lKSk7cmV0dXJuIGt9LHtp
bnN0YW5jZTprLGlkZW50aWZpZXI6cn0pO2s9Yy5pbnN0YW50aWF0ZShmLGcsbik7ciYmZShnLHIs
ayxufHxmLm5hbWUpO3JldHVybiBrfX1dfWZ1bmN0aW9uIFllKCl7dGhpcy4kZ2V0PVsiJHdpbmRv
dyIsZnVuY3Rpb24oYil7cmV0dXJuIHkoYi5kb2N1bWVudCl9XX1mdW5jdGlvbiBaZSgpe3RoaXMu
JGdldD1bIiRsb2ciLGZ1bmN0aW9uKGIpe3JldHVybiBmdW5jdGlvbihhLGMpe2IuZXJyb3IuYXBw
bHkoYixhcmd1bWVudHMpfX1dfWZ1bmN0aW9uIFpiKGIpe3JldHVybiBIKGIpP2FhKGIpP2IudG9J
U09TdHJpbmcoKTpkYihiKTpifQorZnVuY3Rpb24gY2YoKXt0aGlzLiRnZXQ9ZnVuY3Rpb24oKXty
ZXR1cm4gZnVuY3Rpb24oYil7aWYoIWIpcmV0dXJuIiI7dmFyIGE9W107b2MoYixmdW5jdGlvbihi
LGQpe251bGw9PT1ifHxBKGIpfHwoRyhiKT9tKGIsZnVuY3Rpb24oYixjKXthLnB1c2gobWEoZCkr
Ij0iK21hKFpiKGIpKSl9KTphLnB1c2gobWEoZCkrIj0iK21hKFpiKGIpKSkpfSk7cmV0dXJuIGEu
am9pbigiJiIpfX19ZnVuY3Rpb24gZGYoKXt0aGlzLiRnZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gZnVu
Y3Rpb24oYil7ZnVuY3Rpb24gYShiLGUsZil7bnVsbD09PWJ8fEEoYil8fChHKGIpP20oYixmdW5j
dGlvbihiKXthKGIsZSsiW10iKX0pOkgoYikmJiFhYShiKT9vYyhiLGZ1bmN0aW9uKGIsYyl7YShi
LGUrKGY/IiI6IlsiKStjKyhmPyIiOiJdIikpfSk6Yy5wdXNoKG1hKGUpKyI9IittYShaYihiKSkp
KX1pZighYilyZXR1cm4iIjt2YXIgYz1bXTthKGIsIiIsITApO3JldHVybiBjLmpvaW4oIiYiKX19
fWZ1bmN0aW9uICRiKGIsCithKXtpZihMKGIpKXt2YXIgYz1iLnJlcGxhY2UoT2YsIiIpLnRyaW0o
KTtpZihjKXt2YXIgZD1hKCJDb250ZW50LVR5cGUiKTsoZD1kJiYwPT09ZC5pbmRleE9mKGNkKSl8
fChkPShkPWMubWF0Y2goUGYpKSYmUWZbZFswXV0udGVzdChjKSk7ZCYmKGI9d2MoYykpfX1yZXR1
cm4gYn1mdW5jdGlvbiBkZChiKXt2YXIgYT1nYSgpLGM7TChiKT9tKGIuc3BsaXQoIlxuIiksZnVu
Y3Rpb24oYil7Yz1iLmluZGV4T2YoIjoiKTt2YXIgZT1NKFIoYi5zdWJzdHIoMCxjKSkpO2I9Uihi
LnN1YnN0cihjKzEpKTtlJiYoYVtlXT1hW2VdP2FbZV0rIiwgIitiOmIpfSk6SChiKSYmbShiLGZ1
bmN0aW9uKGIsYyl7dmFyIGY9TShjKSxnPVIoYik7ZiYmKGFbZl09YVtmXT9hW2ZdKyIsICIrZzpn
KX0pO3JldHVybiBhfWZ1bmN0aW9uIGVkKGIpe3ZhciBhO3JldHVybiBmdW5jdGlvbihjKXthfHwo
YT1kZChiKSk7cmV0dXJuIGM/KGM9YVtNKGMpXSx2b2lkIDA9PT1jJiYoYz1udWxsKSxjKTphfX1m
dW5jdGlvbiBmZChiLAorYSxjLGQpe2lmKHooZCkpcmV0dXJuIGQoYixhLGMpO20oZCxmdW5jdGlv
bihkKXtiPWQoYixhLGMpfSk7cmV0dXJuIGJ9ZnVuY3Rpb24gYmYoKXt2YXIgYj10aGlzLmRlZmF1
bHRzPXt0cmFuc2Zvcm1SZXNwb25zZTpbJGJdLHRyYW5zZm9ybVJlcXVlc3Q6W2Z1bmN0aW9uKGEp
e3JldHVybiBIKGEpJiYiW29iamVjdCBGaWxlXSIhPT1zYS5jYWxsKGEpJiYiW29iamVjdCBCbG9i
XSIhPT1zYS5jYWxsKGEpJiYiW29iamVjdCBGb3JtRGF0YV0iIT09c2EuY2FsbChhKT9kYihhKTph
fV0saGVhZGVyczp7Y29tbW9uOntBY2NlcHQ6ImFwcGxpY2F0aW9uL2pzb24sIHRleHQvcGxhaW4s
ICovKiJ9LHBvc3Q6aWEoYWMpLHB1dDppYShhYykscGF0Y2g6aWEoYWMpfSx4c3JmQ29va2llTmFt
ZToiWFNSRi1UT0tFTiIseHNyZkhlYWRlck5hbWU6IlgtWFNSRi1UT0tFTiIscGFyYW1TZXJpYWxp
emVyOiIkaHR0cFBhcmFtU2VyaWFsaXplciJ9LGE9ITE7dGhpcy51c2VBcHBseUFzeW5jPWZ1bmN0
aW9uKGIpe3JldHVybiB3KGIpPworKGE9ISFiLHRoaXMpOmF9O3ZhciBjPXRoaXMuaW50ZXJjZXB0
b3JzPVtdO3RoaXMuJGdldD1bIiRodHRwQmFja2VuZCIsIiQkY29va2llUmVhZGVyIiwiJGNhY2hl
RmFjdG9yeSIsIiRyb290U2NvcGUiLCIkcSIsIiRpbmplY3RvciIsZnVuY3Rpb24oZCxlLGYsZyxo
LGwpe2Z1bmN0aW9uIGsoYSl7ZnVuY3Rpb24gYyhhKXt2YXIgYj1QKHt9LGEpO2IuZGF0YT1hLmRh
dGE/ZmQoYS5kYXRhLGEuaGVhZGVycyxhLnN0YXR1cyxlLnRyYW5zZm9ybVJlc3BvbnNlKTphLmRh
dGE7YT1hLnN0YXR1cztyZXR1cm4gMjAwPD1hJiYzMDA+YT9iOmgucmVqZWN0KGIpfWZ1bmN0aW9u
IGQoYSxiKXt2YXIgYyxlPXt9O20oYSxmdW5jdGlvbihhLGQpe3ooYSk/KGM9YShiKSxudWxsIT1j
JiYoZVtkXT1jKSk6ZVtkXT1hfSk7cmV0dXJuIGV9aWYoIWNhLmlzT2JqZWN0KGEpKXRocm93IEoo
IiRodHRwIikoImJhZHJlcSIsYSk7dmFyIGU9UCh7bWV0aG9kOiJnZXQiLHRyYW5zZm9ybVJlcXVl
c3Q6Yi50cmFuc2Zvcm1SZXF1ZXN0LAordHJhbnNmb3JtUmVzcG9uc2U6Yi50cmFuc2Zvcm1SZXNw
b25zZSxwYXJhbVNlcmlhbGl6ZXI6Yi5wYXJhbVNlcmlhbGl6ZXJ9LGEpO2UuaGVhZGVycz1mdW5j
dGlvbihhKXt2YXIgYz1iLmhlYWRlcnMsZT1QKHt9LGEuaGVhZGVycyksZixnLGgsYz1QKHt9LGMu
Y29tbW9uLGNbTShhLm1ldGhvZCldKTthOmZvcihmIGluIGMpe2c9TShmKTtmb3IoaCBpbiBlKWlm
KE0oaCk9PT1nKWNvbnRpbnVlIGE7ZVtmXT1jW2ZdfXJldHVybiBkKGUsaWEoYSkpfShhKTtlLm1l
dGhvZD1yYihlLm1ldGhvZCk7ZS5wYXJhbVNlcmlhbGl6ZXI9TChlLnBhcmFtU2VyaWFsaXplcik/
bC5nZXQoZS5wYXJhbVNlcmlhbGl6ZXIpOmUucGFyYW1TZXJpYWxpemVyO3ZhciBmPVtmdW5jdGlv
bihhKXt2YXIgZD1hLmhlYWRlcnMsZT1mZChhLmRhdGEsZWQoZCksdCxhLnRyYW5zZm9ybVJlcXVl
c3QpO0EoZSkmJm0oZCxmdW5jdGlvbihhLGIpeyJjb250ZW50LXR5cGUiPT09TShiKSYmZGVsZXRl
IGRbYl19KTtBKGEud2l0aENyZWRlbnRpYWxzKSYmCishQShiLndpdGhDcmVkZW50aWFscykmJihh
LndpdGhDcmVkZW50aWFscz1iLndpdGhDcmVkZW50aWFscyk7cmV0dXJuIG4oYSxlKS50aGVuKGMs
Yyl9LHRdLGc9aC53aGVuKGUpO2ZvcihtKHgsZnVuY3Rpb24oYSl7KGEucmVxdWVzdHx8YS5yZXF1
ZXN0RXJyb3IpJiZmLnVuc2hpZnQoYS5yZXF1ZXN0LGEucmVxdWVzdEVycm9yKTsoYS5yZXNwb25z
ZXx8YS5yZXNwb25zZUVycm9yKSYmZi5wdXNoKGEucmVzcG9uc2UsYS5yZXNwb25zZUVycm9yKX0p
O2YubGVuZ3RoOyl7YT1mLnNoaWZ0KCk7dmFyIGs9Zi5zaGlmdCgpLGc9Zy50aGVuKGEsayl9Zy5z
dWNjZXNzPWZ1bmN0aW9uKGEpe1FhKGEsImZuIik7Zy50aGVuKGZ1bmN0aW9uKGIpe2EoYi5kYXRh
LGIuc3RhdHVzLGIuaGVhZGVycyxlKX0pO3JldHVybiBnfTtnLmVycm9yPWZ1bmN0aW9uKGEpe1Fh
KGEsImZuIik7Zy50aGVuKG51bGwsZnVuY3Rpb24oYil7YShiLmRhdGEsYi5zdGF0dXMsYi5oZWFk
ZXJzLGUpfSk7cmV0dXJuIGd9O3JldHVybiBnfQorZnVuY3Rpb24gbihjLGYpe2Z1bmN0aW9uIGwo
YixjLGQsZSl7ZnVuY3Rpb24gZigpe24oYyxiLGQsZSl9TiYmKDIwMDw9YiYmMzAwPmI/Ti5wdXQo
UyxbYixjLGRkKGQpLGVdKTpOLnJlbW92ZShTKSk7YT9nLiRhcHBseUFzeW5jKGYpOihmKCksZy4k
JHBoYXNlfHxnLiRhcHBseSgpKX1mdW5jdGlvbiBuKGEsYixkLGUpe2I9TWF0aC5tYXgoYiwwKTso
MjAwPD1iJiYzMDA+Yj9JLnJlc29sdmU6SS5yZWplY3QpKHtkYXRhOmEsc3RhdHVzOmIsaGVhZGVy
czplZChkKSxjb25maWc6YyxzdGF0dXNUZXh0OmV9KX1mdW5jdGlvbiB4KGEpe24oYS5kYXRhLGEu
c3RhdHVzLGlhKGEuaGVhZGVycygpKSxhLnN0YXR1c1RleHQpfWZ1bmN0aW9uIG0oKXt2YXIgYT1r
LnBlbmRpbmdSZXF1ZXN0cy5pbmRleE9mKGMpOy0xIT09YSYmay5wZW5kaW5nUmVxdWVzdHMuc3Bs
aWNlKGEsMSl9dmFyIEk9aC5kZWZlcigpLEI9SS5wcm9taXNlLE4sRCxxPWMuaGVhZGVycyxTPXIo
Yy51cmwsYy5wYXJhbVNlcmlhbGl6ZXIoYy5wYXJhbXMpKTsKK2sucGVuZGluZ1JlcXVlc3RzLnB1
c2goYyk7Qi50aGVuKG0sbSk7IWMuY2FjaGUmJiFiLmNhY2hlfHwhMT09PWMuY2FjaGV8fCJHRVQi
IT09Yy5tZXRob2QmJiJKU09OUCIhPT1jLm1ldGhvZHx8KE49SChjLmNhY2hlKT9jLmNhY2hlOkgo
Yi5jYWNoZSk/Yi5jYWNoZTpzKTtOJiYoRD1OLmdldChTKSx3KEQpP0QmJnooRC50aGVuKT9ELnRo
ZW4oeCx4KTpHKEQpP24oRFsxXSxEWzBdLGlhKERbMl0pLERbM10pOm4oRCwyMDAse30sIk9LIik6
Ti5wdXQoUyxCKSk7QShEKSYmKChEPWdkKGMudXJsKT9lKClbYy54c3JmQ29va2llTmFtZXx8Yi54
c3JmQ29va2llTmFtZV06dCkmJihxW2MueHNyZkhlYWRlck5hbWV8fGIueHNyZkhlYWRlck5hbWVd
PUQpLGQoYy5tZXRob2QsUyxmLGwscSxjLnRpbWVvdXQsYy53aXRoQ3JlZGVudGlhbHMsYy5yZXNw
b25zZVR5cGUpKTtyZXR1cm4gQn1mdW5jdGlvbiByKGEsYil7MDxiLmxlbmd0aCYmKGErPSgtMT09
YS5pbmRleE9mKCI/Iik/Ij8iOiImIikrYik7CityZXR1cm4gYX12YXIgcz1mKCIkaHR0cCIpO2Iu
cGFyYW1TZXJpYWxpemVyPUwoYi5wYXJhbVNlcmlhbGl6ZXIpP2wuZ2V0KGIucGFyYW1TZXJpYWxp
emVyKTpiLnBhcmFtU2VyaWFsaXplcjt2YXIgeD1bXTttKGMsZnVuY3Rpb24oYSl7eC51bnNoaWZ0
KEwoYSk/bC5nZXQoYSk6bC5pbnZva2UoYSkpfSk7ay5wZW5kaW5nUmVxdWVzdHM9W107KGZ1bmN0
aW9uKGEpe20oYXJndW1lbnRzLGZ1bmN0aW9uKGEpe2tbYV09ZnVuY3Rpb24oYixjKXtyZXR1cm4g
ayhQKHt9LGN8fHt9LHttZXRob2Q6YSx1cmw6Yn0pKX19KX0pKCJnZXQiLCJkZWxldGUiLCJoZWFk
IiwianNvbnAiKTsoZnVuY3Rpb24oYSl7bShhcmd1bWVudHMsZnVuY3Rpb24oYSl7a1thXT1mdW5j
dGlvbihiLGMsZCl7cmV0dXJuIGsoUCh7fSxkfHx7fSx7bWV0aG9kOmEsdXJsOmIsZGF0YTpjfSkp
fX0pfSkoInBvc3QiLCJwdXQiLCJwYXRjaCIpO2suZGVmYXVsdHM9YjtyZXR1cm4ga31dfWZ1bmN0
aW9uIFJmKCl7cmV0dXJuIG5ldyBPLlhNTEh0dHBSZXF1ZXN0fQorZnVuY3Rpb24gZWYoKXt0aGlz
LiRnZXQ9WyIkYnJvd3NlciIsIiR3aW5kb3ciLCIkZG9jdW1lbnQiLGZ1bmN0aW9uKGIsYSxjKXty
ZXR1cm4gU2YoYixSZixiLmRlZmVyLGEuYW5ndWxhci5jYWxsYmFja3MsY1swXSl9XX1mdW5jdGlv
biBTZihiLGEsYyxkLGUpe2Z1bmN0aW9uIGYoYSxiLGMpe3ZhciBmPWUuY3JlYXRlRWxlbWVudCgi
c2NyaXB0Iiksbj1udWxsO2YudHlwZT0idGV4dC9qYXZhc2NyaXB0IjtmLnNyYz1hO2YuYXN5bmM9
ITA7bj1mdW5jdGlvbihhKXtmLnJlbW92ZUV2ZW50TGlzdGVuZXIoImxvYWQiLG4sITEpO2YucmVt
b3ZlRXZlbnRMaXN0ZW5lcigiZXJyb3IiLG4sITEpO2UuYm9keS5yZW1vdmVDaGlsZChmKTtmPW51
bGw7dmFyIGc9LTEseD0idW5rbm93biI7YSYmKCJsb2FkIiE9PWEudHlwZXx8ZFtiXS5jYWxsZWR8
fChhPXt0eXBlOiJlcnJvciJ9KSx4PWEudHlwZSxnPSJlcnJvciI9PT1hLnR5cGU/NDA0OjIwMCk7
YyYmYyhnLHgpfTtmLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLAorbiwhMSk7Zi5hZGRFdmVudExp
c3RlbmVyKCJlcnJvciIsbiwhMSk7ZS5ib2R5LmFwcGVuZENoaWxkKGYpO3JldHVybiBufXJldHVy
biBmdW5jdGlvbihlLGgsbCxrLG4scixzLHgpe2Z1bmN0aW9uIEMoKXtwJiZwKCk7SyYmSy5hYm9y
dCgpfWZ1bmN0aW9uIEYoYSxkLGUsZixnKXtJIT09dCYmYy5jYW5jZWwoSSk7cD1LPW51bGw7YShk
LGUsZixnKTtiLiQkY29tcGxldGVPdXRzdGFuZGluZ1JlcXVlc3Qodil9Yi4kJGluY091dHN0YW5k
aW5nUmVxdWVzdENvdW50KCk7aD1ofHxiLnVybCgpO2lmKCJqc29ucCI9PU0oZSkpe3ZhciB1PSJf
IisoZC5jb3VudGVyKyspLnRvU3RyaW5nKDM2KTtkW3VdPWZ1bmN0aW9uKGEpe2RbdV0uZGF0YT1h
O2RbdV0uY2FsbGVkPSEwfTt2YXIgcD1mKGgucmVwbGFjZSgiSlNPTl9DQUxMQkFDSyIsImFuZ3Vs
YXIuY2FsbGJhY2tzLiIrdSksdSxmdW5jdGlvbihhLGIpe0YoayxhLGRbdV0uZGF0YSwiIixiKTtk
W3VdPXZ9KX1lbHNle3ZhciBLPWEoKTtLLm9wZW4oZSwKK2gsITApO20obixmdW5jdGlvbihhLGIp
e3coYSkmJksuc2V0UmVxdWVzdEhlYWRlcihiLGEpfSk7Sy5vbmxvYWQ9ZnVuY3Rpb24oKXt2YXIg
YT1LLnN0YXR1c1RleHR8fCIiLGI9InJlc3BvbnNlImluIEs/Sy5yZXNwb25zZTpLLnJlc3BvbnNl
VGV4dCxjPTEyMjM9PT1LLnN0YXR1cz8yMDQ6Sy5zdGF0dXM7MD09PWMmJihjPWI/MjAwOiJmaWxl
Ij09QmEoaCkucHJvdG9jb2w/NDA0OjApO0YoayxjLGIsSy5nZXRBbGxSZXNwb25zZUhlYWRlcnMo
KSxhKX07ZT1mdW5jdGlvbigpe0YoaywtMSxudWxsLG51bGwsIiIpfTtLLm9uZXJyb3I9ZTtLLm9u
YWJvcnQ9ZTtzJiYoSy53aXRoQ3JlZGVudGlhbHM9ITApO2lmKHgpdHJ5e0sucmVzcG9uc2VUeXBl
PXh9Y2F0Y2gocSl7aWYoImpzb24iIT09eCl0aHJvdyBxO31LLnNlbmQobCl9aWYoMDxyKXZhciBJ
PWMoQyxyKTtlbHNlIHImJnooci50aGVuKSYmci50aGVuKEMpfX1mdW5jdGlvbiAkZSgpe3ZhciBi
PSJ7eyIsYT0ifX0iO3RoaXMuc3RhcnRTeW1ib2w9CitmdW5jdGlvbihhKXtyZXR1cm4gYT8oYj1h
LHRoaXMpOmJ9O3RoaXMuZW5kU3ltYm9sPWZ1bmN0aW9uKGIpe3JldHVybiBiPyhhPWIsdGhpcyk6
YX07dGhpcy4kZ2V0PVsiJHBhcnNlIiwiJGV4Y2VwdGlvbkhhbmRsZXIiLCIkc2NlIixmdW5jdGlv
bihjLGQsZSl7ZnVuY3Rpb24gZihhKXtyZXR1cm4iXFxcXFxcIithfWZ1bmN0aW9uIGcoYyl7cmV0
dXJuIGMucmVwbGFjZShuLGIpLnJlcGxhY2UocixhKX1mdW5jdGlvbiBoKGYsaCxuLHIpe2Z1bmN0
aW9uIHUoYSl7dHJ5e3ZhciBiPWE7YT1uP2UuZ2V0VHJ1c3RlZChuLGIpOmUudmFsdWVPZihiKTt2
YXIgYztpZihyJiYhdyhhKSljPWE7ZWxzZSBpZihudWxsPT1hKWM9IiI7ZWxzZXtzd2l0Y2godHlw
ZW9mIGEpe2Nhc2UgInN0cmluZyI6YnJlYWs7Y2FzZSAibnVtYmVyIjphPSIiK2E7YnJlYWs7ZGVm
YXVsdDphPWRiKGEpfWM9YX1yZXR1cm4gY31jYXRjaChnKXtkKEthLmludGVycihmLGcpKX19cj0h
IXI7Zm9yKHZhciBwLG0scT0wLEk9CitbXSxCPVtdLE49Zi5sZW5ndGgsRD1bXSx0PVtdO3E8Tjsp
aWYoLTEhPShwPWYuaW5kZXhPZihiLHEpKSYmLTEhPShtPWYuaW5kZXhPZihhLHArbCkpKXEhPT1w
JiZELnB1c2goZyhmLnN1YnN0cmluZyhxLHApKSkscT1mLnN1YnN0cmluZyhwK2wsbSksSS5wdXNo
KHEpLEIucHVzaChjKHEsdSkpLHE9bStrLHQucHVzaChELmxlbmd0aCksRC5wdXNoKCIiKTtlbHNl
e3EhPT1OJiZELnB1c2goZyhmLnN1YnN0cmluZyhxKSkpO2JyZWFrfW4mJjE8RC5sZW5ndGgmJkth
LnRocm93Tm9jb25jYXQoZik7aWYoIWh8fEkubGVuZ3RoKXt2YXIgUz1mdW5jdGlvbihhKXtmb3Io
dmFyIGI9MCxjPUkubGVuZ3RoO2I8YztiKyspe2lmKHImJkEoYVtiXSkpcmV0dXJuO0RbdFtiXV09
YVtiXX1yZXR1cm4gRC5qb2luKCIiKX07cmV0dXJuIFAoZnVuY3Rpb24oYSl7dmFyIGI9MCxjPUku
bGVuZ3RoLGU9QXJyYXkoYyk7dHJ5e2Zvcig7YjxjO2IrKyllW2JdPUJbYl0oYSk7cmV0dXJuIFMo
ZSl9Y2F0Y2goZyl7ZChLYS5pbnRlcnIoZiwKK2cpKX19LHtleHA6ZixleHByZXNzaW9uczpJLCQk
d2F0Y2hEZWxlZ2F0ZTpmdW5jdGlvbihhLGIpe3ZhciBjO3JldHVybiBhLiR3YXRjaEdyb3VwKEIs
ZnVuY3Rpb24oZCxlKXt2YXIgZj1TKGQpO3ooYikmJmIuY2FsbCh0aGlzLGYsZCE9PWU/YzpmLGEp
O2M9Zn0pfX0pfX12YXIgbD1iLmxlbmd0aCxrPWEubGVuZ3RoLG49bmV3IFJlZ0V4cChiLnJlcGxh
Y2UoLy4vZyxmKSwiZyIpLHI9bmV3IFJlZ0V4cChhLnJlcGxhY2UoLy4vZyxmKSwiZyIpO2guc3Rh
cnRTeW1ib2w9ZnVuY3Rpb24oKXtyZXR1cm4gYn07aC5lbmRTeW1ib2w9ZnVuY3Rpb24oKXtyZXR1
cm4gYX07cmV0dXJuIGh9XX1mdW5jdGlvbiBhZigpe3RoaXMuJGdldD1bIiRyb290U2NvcGUiLCIk
d2luZG93IiwiJHEiLCIkJHEiLGZ1bmN0aW9uKGIsYSxjLGQpe2Z1bmN0aW9uIGUoZSxoLGwsayl7
dmFyIG49NDxhcmd1bWVudHMubGVuZ3RoLHI9bj96YS5jYWxsKGFyZ3VtZW50cyw0KTpbXSxzPWEu
c2V0SW50ZXJ2YWwseD1hLmNsZWFySW50ZXJ2YWwsCitDPTAsRj13KGspJiYhayx1PShGP2Q6Yyku
ZGVmZXIoKSxwPXUucHJvbWlzZTtsPXcobCk/bDowO3AudGhlbihudWxsLG51bGwsbj9mdW5jdGlv
bigpe2UuYXBwbHkobnVsbCxyKX06ZSk7cC4kJGludGVydmFsSWQ9cyhmdW5jdGlvbigpe3Uubm90
aWZ5KEMrKyk7MDxsJiZDPj1sJiYodS5yZXNvbHZlKEMpLHgocC4kJGludGVydmFsSWQpLGRlbGV0
ZSBmW3AuJCRpbnRlcnZhbElkXSk7Rnx8Yi4kYXBwbHkoKX0saCk7ZltwLiQkaW50ZXJ2YWxJZF09
dTtyZXR1cm4gcH12YXIgZj17fTtlLmNhbmNlbD1mdW5jdGlvbihiKXtyZXR1cm4gYiYmYi4kJGlu
dGVydmFsSWQgaW4gZj8oZltiLiQkaW50ZXJ2YWxJZF0ucmVqZWN0KCJjYW5jZWxlZCIpLGEuY2xl
YXJJbnRlcnZhbChiLiQkaW50ZXJ2YWxJZCksZGVsZXRlIGZbYi4kJGludGVydmFsSWRdLCEwKToh
MX07cmV0dXJuIGV9XX1mdW5jdGlvbiBnZSgpe3RoaXMuJGdldD1mdW5jdGlvbigpe3JldHVybntp
ZDoiZW4tdXMiLE5VTUJFUl9GT1JNQVRTOntERUNJTUFMX1NFUDoiLiIsCitHUk9VUF9TRVA6Iiwi
LFBBVFRFUk5TOlt7bWluSW50OjEsbWluRnJhYzowLG1heEZyYWM6Myxwb3NQcmU6IiIscG9zU3Vm
OiIiLG5lZ1ByZToiLSIsbmVnU3VmOiIiLGdTaXplOjMsbGdTaXplOjN9LHttaW5JbnQ6MSxtaW5G
cmFjOjIsbWF4RnJhYzoyLHBvc1ByZToiXHUwMGE0Iixwb3NTdWY6IiIsbmVnUHJlOiIoXHUwMGE0
IixuZWdTdWY6IikiLGdTaXplOjMsbGdTaXplOjN9XSxDVVJSRU5DWV9TWU06IiQifSxEQVRFVElN
RV9GT1JNQVRTOntNT05USDoiSmFudWFyeSBGZWJydWFyeSBNYXJjaCBBcHJpbCBNYXkgSnVuZSBK
dWx5IEF1Z3VzdCBTZXB0ZW1iZXIgT2N0b2JlciBOb3ZlbWJlciBEZWNlbWJlciIuc3BsaXQoIiAi
KSxTSE9SVE1PTlRIOiJKYW4gRmViIE1hciBBcHIgTWF5IEp1biBKdWwgQXVnIFNlcCBPY3QgTm92
IERlYyIuc3BsaXQoIiAiKSxEQVk6IlN1bmRheSBNb25kYXkgVHVlc2RheSBXZWRuZXNkYXkgVGh1
cnNkYXkgRnJpZGF5IFNhdHVyZGF5Ii5zcGxpdCgiICIpLAorU0hPUlREQVk6IlN1biBNb24gVHVl
IFdlZCBUaHUgRnJpIFNhdCIuc3BsaXQoIiAiKSxBTVBNUzpbIkFNIiwiUE0iXSxtZWRpdW06Ik1N
TSBkLCB5IGg6bW06c3MgYSIsInNob3J0IjoiTS9kL3l5IGg6bW0gYSIsZnVsbERhdGU6IkVFRUUs
IE1NTU0gZCwgeSIsbG9uZ0RhdGU6Ik1NTU0gZCwgeSIsbWVkaXVtRGF0ZToiTU1NIGQsIHkiLHNo
b3J0RGF0ZToiTS9kL3l5IixtZWRpdW1UaW1lOiJoOm1tOnNzIGEiLHNob3J0VGltZToiaDptbSBh
IixFUkFOQU1FUzpbIkJlZm9yZSBDaHJpc3QiLCJBbm5vIERvbWluaSJdLEVSQVM6WyJCQyIsIkFE
Il19LHBsdXJhbENhdDpmdW5jdGlvbihiKXtyZXR1cm4gMT09PWI/Im9uZSI6Im90aGVyIn19fX1m
dW5jdGlvbiBiYyhiKXtiPWIuc3BsaXQoIi8iKTtmb3IodmFyIGE9Yi5sZW5ndGg7YS0tOyliW2Fd
PW9iKGJbYV0pO3JldHVybiBiLmpvaW4oIi8iKX1mdW5jdGlvbiBoZChiLGEpe3ZhciBjPUJhKGIp
O2EuJCRwcm90b2NvbD1jLnByb3RvY29sOworYS4kJGhvc3Q9Yy5ob3N0bmFtZTthLiQkcG9ydD1X
KGMucG9ydCl8fFRmW2MucHJvdG9jb2xdfHxudWxsfWZ1bmN0aW9uIGlkKGIsYSl7dmFyIGM9Ii8i
IT09Yi5jaGFyQXQoMCk7YyYmKGI9Ii8iK2IpO3ZhciBkPUJhKGIpO2EuJCRwYXRoPWRlY29kZVVS
SUNvbXBvbmVudChjJiYiLyI9PT1kLnBhdGhuYW1lLmNoYXJBdCgwKT9kLnBhdGhuYW1lLnN1YnN0
cmluZygxKTpkLnBhdGhuYW1lKTthLiQkc2VhcmNoPXpjKGQuc2VhcmNoKTthLiQkaGFzaD1kZWNv
ZGVVUklDb21wb25lbnQoZC5oYXNoKTthLiQkcGF0aCYmIi8iIT1hLiQkcGF0aC5jaGFyQXQoMCkm
JihhLiQkcGF0aD0iLyIrYS4kJHBhdGgpfWZ1bmN0aW9uIHlhKGIsYSl7aWYoMD09PWEuaW5kZXhP
ZihiKSlyZXR1cm4gYS5zdWJzdHIoYi5sZW5ndGgpfWZ1bmN0aW9uIEphKGIpe3ZhciBhPWIuaW5k
ZXhPZigiIyIpO3JldHVybi0xPT1hP2I6Yi5zdWJzdHIoMCxhKX1mdW5jdGlvbiBCYihiKXtyZXR1
cm4gYi5yZXBsYWNlKC8oIy4rKXwjJC8sCisiJDEiKX1mdW5jdGlvbiBjYyhiKXtyZXR1cm4gYi5z
dWJzdHIoMCxKYShiKS5sYXN0SW5kZXhPZigiLyIpKzEpfWZ1bmN0aW9uIGRjKGIsYSl7dGhpcy4k
JGh0bWw1PSEwO2E9YXx8IiI7dmFyIGM9Y2MoYik7aGQoYix0aGlzKTt0aGlzLiQkcGFyc2U9ZnVu
Y3Rpb24oYSl7dmFyIGI9eWEoYyxhKTtpZighTChiKSl0aHJvdyBDYigiaXB0aHByZngiLGEsYyk7
aWQoYix0aGlzKTt0aGlzLiQkcGF0aHx8KHRoaXMuJCRwYXRoPSIvIik7dGhpcy4kJGNvbXBvc2Uo
KX07dGhpcy4kJGNvbXBvc2U9ZnVuY3Rpb24oKXt2YXIgYT1RYih0aGlzLiQkc2VhcmNoKSxiPXRo
aXMuJCRoYXNoPyIjIitvYih0aGlzLiQkaGFzaCk6IiI7dGhpcy4kJHVybD1iYyh0aGlzLiQkcGF0
aCkrKGE/Ij8iK2E6IiIpK2I7dGhpcy4kJGFic1VybD1jK3RoaXMuJCR1cmwuc3Vic3RyKDEpfTt0
aGlzLiQkcGFyc2VMaW5rVXJsPWZ1bmN0aW9uKGQsZSl7aWYoZSYmIiMiPT09ZVswXSlyZXR1cm4g
dGhpcy5oYXNoKGUuc2xpY2UoMSkpLAorITA7dmFyIGYsZzsoZj15YShiLGQpKSE9PXQ/KGc9Zixn
PShmPXlhKGEsZikpIT09dD9jKyh5YSgiLyIsZil8fGYpOmIrZyk6KGY9eWEoYyxkKSkhPT10P2c9
YytmOmM9PWQrIi8iJiYoZz1jKTtnJiZ0aGlzLiQkcGFyc2UoZyk7cmV0dXJuISFnfX1mdW5jdGlv
biBlYyhiLGEpe3ZhciBjPWNjKGIpO2hkKGIsdGhpcyk7dGhpcy4kJHBhcnNlPWZ1bmN0aW9uKGQp
e3ZhciBlPXlhKGIsZCl8fHlhKGMsZCksZjtBKGUpfHwiIyIhPT1lLmNoYXJBdCgwKT90aGlzLiQk
aHRtbDU/Zj1lOihmPSIiLEEoZSkmJihiPWQsdGhpcy5yZXBsYWNlKCkpKTooZj15YShhLGUpLEEo
ZikmJihmPWUpKTtpZChmLHRoaXMpO2Q9dGhpcy4kJHBhdGg7dmFyIGU9YixnPS9eXC9bQS1aXToo
XC8uKikvOzA9PT1mLmluZGV4T2YoZSkmJihmPWYucmVwbGFjZShlLCIiKSk7Zy5leGVjKGYpfHwo
ZD0oZj1nLmV4ZWMoZCkpP2ZbMV06ZCk7dGhpcy4kJHBhdGg9ZDt0aGlzLiQkY29tcG9zZSgpfTt0
aGlzLiQkY29tcG9zZT0KK2Z1bmN0aW9uKCl7dmFyIGM9UWIodGhpcy4kJHNlYXJjaCksZT10aGlz
LiQkaGFzaD8iIyIrb2IodGhpcy4kJGhhc2gpOiIiO3RoaXMuJCR1cmw9YmModGhpcy4kJHBhdGgp
KyhjPyI/IitjOiIiKStlO3RoaXMuJCRhYnNVcmw9YisodGhpcy4kJHVybD9hK3RoaXMuJCR1cmw6
IiIpfTt0aGlzLiQkcGFyc2VMaW5rVXJsPWZ1bmN0aW9uKGEsYyl7cmV0dXJuIEphKGIpPT1KYShh
KT8odGhpcy4kJHBhcnNlKGEpLCEwKTohMX19ZnVuY3Rpb24gamQoYixhKXt0aGlzLiQkaHRtbDU9
ITA7ZWMuYXBwbHkodGhpcyxhcmd1bWVudHMpO3ZhciBjPWNjKGIpO3RoaXMuJCRwYXJzZUxpbmtV
cmw9ZnVuY3Rpb24oZCxlKXtpZihlJiYiIyI9PT1lWzBdKXJldHVybiB0aGlzLmhhc2goZS5zbGlj
ZSgxKSksITA7dmFyIGYsZztiPT1KYShkKT9mPWQ6KGc9eWEoYyxkKSk/Zj1iK2ErZzpjPT09ZCsi
LyImJihmPWMpO2YmJnRoaXMuJCRwYXJzZShmKTtyZXR1cm4hIWZ9O3RoaXMuJCRjb21wb3NlPWZ1
bmN0aW9uKCl7dmFyIGM9CitRYih0aGlzLiQkc2VhcmNoKSxlPXRoaXMuJCRoYXNoPyIjIitvYih0
aGlzLiQkaGFzaCk6IiI7dGhpcy4kJHVybD1iYyh0aGlzLiQkcGF0aCkrKGM/Ij8iK2M6IiIpK2U7
dGhpcy4kJGFic1VybD1iK2ErdGhpcy4kJHVybH19ZnVuY3Rpb24gRGIoYil7cmV0dXJuIGZ1bmN0
aW9uKCl7cmV0dXJuIHRoaXNbYl19fWZ1bmN0aW9uIGtkKGIsYSl7cmV0dXJuIGZ1bmN0aW9uKGMp
e2lmKEEoYykpcmV0dXJuIHRoaXNbYl07dGhpc1tiXT1hKGMpO3RoaXMuJCRjb21wb3NlKCk7cmV0
dXJuIHRoaXN9fWZ1bmN0aW9uIGZmKCl7dmFyIGI9IiIsYT17ZW5hYmxlZDohMSxyZXF1aXJlQmFz
ZTohMCxyZXdyaXRlTGlua3M6ITB9O3RoaXMuaGFzaFByZWZpeD1mdW5jdGlvbihhKXtyZXR1cm4g
dyhhKT8oYj1hLHRoaXMpOmJ9O3RoaXMuaHRtbDVNb2RlPWZ1bmN0aW9uKGIpe3JldHVybiBhYihi
KT8oYS5lbmFibGVkPWIsdGhpcyk6SChiKT8oYWIoYi5lbmFibGVkKSYmKGEuZW5hYmxlZD1iLmVu
YWJsZWQpLAorYWIoYi5yZXF1aXJlQmFzZSkmJihhLnJlcXVpcmVCYXNlPWIucmVxdWlyZUJhc2Up
LGFiKGIucmV3cml0ZUxpbmtzKSYmKGEucmV3cml0ZUxpbmtzPWIucmV3cml0ZUxpbmtzKSx0aGlz
KTphfTt0aGlzLiRnZXQ9WyIkcm9vdFNjb3BlIiwiJGJyb3dzZXIiLCIkc25pZmZlciIsIiRyb290
RWxlbWVudCIsIiR3aW5kb3ciLGZ1bmN0aW9uKGMsZCxlLGYsZyl7ZnVuY3Rpb24gaChhLGIsYyl7
dmFyIGU9ay51cmwoKSxmPWsuJCRzdGF0ZTt0cnl7ZC51cmwoYSxiLGMpLGsuJCRzdGF0ZT1kLnN0
YXRlKCl9Y2F0Y2goZyl7dGhyb3cgay51cmwoZSksay4kJHN0YXRlPWYsZzt9fWZ1bmN0aW9uIGwo
YSxiKXtjLiRicm9hZGNhc3QoIiRsb2NhdGlvbkNoYW5nZVN1Y2Nlc3MiLGsuYWJzVXJsKCksYSxr
LiQkc3RhdGUsYil9dmFyIGssbjtuPWQuYmFzZUhyZWYoKTt2YXIgcj1kLnVybCgpLHM7aWYoYS5l
bmFibGVkKXtpZighbiYmYS5yZXF1aXJlQmFzZSl0aHJvdyBDYigibm9iYXNlIik7cz1yLnN1YnN0
cmluZygwLAorci5pbmRleE9mKCIvIixyLmluZGV4T2YoIi8vIikrMikpKyhufHwiLyIpO249ZS5o
aXN0b3J5P2RjOmpkfWVsc2Ugcz1KYShyKSxuPWVjO2s9bmV3IG4ocywiIyIrYik7ay4kJHBhcnNl
TGlua1VybChyLHIpO2suJCRzdGF0ZT1kLnN0YXRlKCk7dmFyIHg9L15ccyooamF2YXNjcmlwdHxt
YWlsdG8pOi9pO2Yub24oImNsaWNrIixmdW5jdGlvbihiKXtpZihhLnJld3JpdGVMaW5rcyYmIWIu
Y3RybEtleSYmIWIubWV0YUtleSYmIWIuc2hpZnRLZXkmJjIhPWIud2hpY2gmJjIhPWIuYnV0dG9u
KXtmb3IodmFyIGU9eShiLnRhcmdldCk7ImEiIT09dGEoZVswXSk7KWlmKGVbMF09PT1mWzBdfHwh
KGU9ZS5wYXJlbnQoKSlbMF0pcmV0dXJuO3ZhciBoPWUucHJvcCgiaHJlZiIpLGw9ZS5hdHRyKCJo
cmVmIil8fGUuYXR0cigieGxpbms6aHJlZiIpO0goaCkmJiJbb2JqZWN0IFNWR0FuaW1hdGVkU3Ry
aW5nXSI9PT1oLnRvU3RyaW5nKCkmJihoPUJhKGguYW5pbVZhbCkuaHJlZik7eC50ZXN0KGgpfHwK
KyFofHxlLmF0dHIoInRhcmdldCIpfHxiLmlzRGVmYXVsdFByZXZlbnRlZCgpfHwhay4kJHBhcnNl
TGlua1VybChoLGwpfHwoYi5wcmV2ZW50RGVmYXVsdCgpLGsuYWJzVXJsKCkhPWQudXJsKCkmJihj
LiRhcHBseSgpLGcuYW5ndWxhclsiZmYtNjg0MjA4LXByZXZlbnREZWZhdWx0Il09ITApKX19KTtC
YihrLmFic1VybCgpKSE9QmIocikmJmQudXJsKGsuYWJzVXJsKCksITApO3ZhciBDPSEwO2Qub25V
cmxDaGFuZ2UoZnVuY3Rpb24oYSxiKXtjLiRldmFsQXN5bmMoZnVuY3Rpb24oKXt2YXIgZD1rLmFi
c1VybCgpLGU9ay4kJHN0YXRlLGY7ay4kJHBhcnNlKGEpO2suJCRzdGF0ZT1iO2Y9Yy4kYnJvYWRj
YXN0KCIkbG9jYXRpb25DaGFuZ2VTdGFydCIsYSxkLGIsZSkuZGVmYXVsdFByZXZlbnRlZDtrLmFi
c1VybCgpPT09YSYmKGY/KGsuJCRwYXJzZShkKSxrLiQkc3RhdGU9ZSxoKGQsITEsZSkpOihDPSEx
LGwoZCxlKSkpfSk7Yy4kJHBoYXNlfHxjLiRkaWdlc3QoKX0pO2MuJHdhdGNoKGZ1bmN0aW9uKCl7
dmFyIGE9CitCYihkLnVybCgpKSxiPUJiKGsuYWJzVXJsKCkpLGY9ZC5zdGF0ZSgpLGc9ay4kJHJl
cGxhY2Usbj1hIT09Ynx8ay4kJGh0bWw1JiZlLmhpc3RvcnkmJmYhPT1rLiQkc3RhdGU7aWYoQ3x8
bilDPSExLGMuJGV2YWxBc3luYyhmdW5jdGlvbigpe3ZhciBiPWsuYWJzVXJsKCksZD1jLiRicm9h
ZGNhc3QoIiRsb2NhdGlvbkNoYW5nZVN0YXJ0IixiLGEsay4kJHN0YXRlLGYpLmRlZmF1bHRQcmV2
ZW50ZWQ7ay5hYnNVcmwoKT09PWImJihkPyhrLiQkcGFyc2UoYSksay4kJHN0YXRlPWYpOihuJiZo
KGIsZyxmPT09ay4kJHN0YXRlP251bGw6ay4kJHN0YXRlKSxsKGEsZikpKX0pO2suJCRyZXBsYWNl
PSExfSk7cmV0dXJuIGt9XX1mdW5jdGlvbiBnZigpe3ZhciBiPSEwLGE9dGhpczt0aGlzLmRlYnVn
RW5hYmxlZD1mdW5jdGlvbihhKXtyZXR1cm4gdyhhKT8oYj1hLHRoaXMpOmJ9O3RoaXMuJGdldD1b
IiR3aW5kb3ciLGZ1bmN0aW9uKGMpe2Z1bmN0aW9uIGQoYSl7YSBpbnN0YW5jZW9mIEVycm9yJiYK
KyhhLnN0YWNrP2E9YS5tZXNzYWdlJiYtMT09PWEuc3RhY2suaW5kZXhPZihhLm1lc3NhZ2UpPyJF
cnJvcjogIithLm1lc3NhZ2UrIlxuIithLnN0YWNrOmEuc3RhY2s6YS5zb3VyY2VVUkwmJihhPWEu
bWVzc2FnZSsiXG4iK2Euc291cmNlVVJMKyI6IithLmxpbmUpKTtyZXR1cm4gYX1mdW5jdGlvbiBl
KGEpe3ZhciBiPWMuY29uc29sZXx8e30sZT1iW2FdfHxiLmxvZ3x8djthPSExO3RyeXthPSEhZS5h
cHBseX1jYXRjaChsKXt9cmV0dXJuIGE/ZnVuY3Rpb24oKXt2YXIgYT1bXTttKGFyZ3VtZW50cyxm
dW5jdGlvbihiKXthLnB1c2goZChiKSl9KTtyZXR1cm4gZS5hcHBseShiLGEpfTpmdW5jdGlvbihh
LGIpe2UoYSxudWxsPT1iPyIiOmIpfX1yZXR1cm57bG9nOmUoImxvZyIpLGluZm86ZSgiaW5mbyIp
LHdhcm46ZSgid2FybiIpLGVycm9yOmUoImVycm9yIiksZGVidWc6ZnVuY3Rpb24oKXt2YXIgYz1l
KCJkZWJ1ZyIpO3JldHVybiBmdW5jdGlvbigpe2ImJmMuYXBwbHkoYSxhcmd1bWVudHMpfX0oKX19
XX0KK2Z1bmN0aW9uIENhKGIsYSl7aWYoIl9fZGVmaW5lR2V0dGVyX18iPT09Ynx8Il9fZGVmaW5l
U2V0dGVyX18iPT09Ynx8Il9fbG9va3VwR2V0dGVyX18iPT09Ynx8Il9fbG9va3VwU2V0dGVyX18i
PT09Ynx8Il9fcHJvdG9fXyI9PT1iKXRocm93IGRhKCJpc2VjZmxkIixhKTtyZXR1cm4gYn1mdW5j
dGlvbiBvYShiLGEpe2lmKGIpe2lmKGIuY29uc3RydWN0b3I9PT1iKXRocm93IGRhKCJpc2VjZm4i
LGEpO2lmKGIud2luZG93PT09Yil0aHJvdyBkYSgiaXNlY3dpbmRvdyIsYSk7aWYoYi5jaGlsZHJl
biYmKGIubm9kZU5hbWV8fGIucHJvcCYmYi5hdHRyJiZiLmZpbmQpKXRocm93IGRhKCJpc2VjZG9t
IixhKTtpZihiPT09T2JqZWN0KXRocm93IGRhKCJpc2Vjb2JqIixhKTt9cmV0dXJuIGJ9ZnVuY3Rp
b24gbGQoYixhKXtpZihiKXtpZihiLmNvbnN0cnVjdG9yPT09Yil0aHJvdyBkYSgiaXNlY2ZuIixh
KTtpZihiPT09VWZ8fGI9PT1WZnx8Yj09PVdmKXRocm93IGRhKCJpc2VjZmYiLGEpOworfX1mdW5j
dGlvbiBYZihiLGEpe3JldHVybiJ1bmRlZmluZWQiIT09dHlwZW9mIGI/YjphfWZ1bmN0aW9uIG1k
KGIsYSl7cmV0dXJuInVuZGVmaW5lZCI9PT10eXBlb2YgYj9hOiJ1bmRlZmluZWQiPT09dHlwZW9m
IGE/YjpiK2F9ZnVuY3Rpb24gVChiLGEpe3ZhciBjLGQ7c3dpdGNoKGIudHlwZSl7Y2FzZSBxLlBy
b2dyYW06Yz0hMDttKGIuYm9keSxmdW5jdGlvbihiKXtUKGIuZXhwcmVzc2lvbixhKTtjPWMmJmIu
ZXhwcmVzc2lvbi5jb25zdGFudH0pO2IuY29uc3RhbnQ9YzticmVhaztjYXNlIHEuTGl0ZXJhbDpi
LmNvbnN0YW50PSEwO2IudG9XYXRjaD1bXTticmVhaztjYXNlIHEuVW5hcnlFeHByZXNzaW9uOlQo
Yi5hcmd1bWVudCxhKTtiLmNvbnN0YW50PWIuYXJndW1lbnQuY29uc3RhbnQ7Yi50b1dhdGNoPWIu
YXJndW1lbnQudG9XYXRjaDticmVhaztjYXNlIHEuQmluYXJ5RXhwcmVzc2lvbjpUKGIubGVmdCxh
KTtUKGIucmlnaHQsYSk7Yi5jb25zdGFudD1iLmxlZnQuY29uc3RhbnQmJgorYi5yaWdodC5jb25z
dGFudDtiLnRvV2F0Y2g9Yi5sZWZ0LnRvV2F0Y2guY29uY2F0KGIucmlnaHQudG9XYXRjaCk7YnJl
YWs7Y2FzZSBxLkxvZ2ljYWxFeHByZXNzaW9uOlQoYi5sZWZ0LGEpO1QoYi5yaWdodCxhKTtiLmNv
bnN0YW50PWIubGVmdC5jb25zdGFudCYmYi5yaWdodC5jb25zdGFudDtiLnRvV2F0Y2g9Yi5jb25z
dGFudD9bXTpbYl07YnJlYWs7Y2FzZSBxLkNvbmRpdGlvbmFsRXhwcmVzc2lvbjpUKGIudGVzdCxh
KTtUKGIuYWx0ZXJuYXRlLGEpO1QoYi5jb25zZXF1ZW50LGEpO2IuY29uc3RhbnQ9Yi50ZXN0LmNv
bnN0YW50JiZiLmFsdGVybmF0ZS5jb25zdGFudCYmYi5jb25zZXF1ZW50LmNvbnN0YW50O2IudG9X
YXRjaD1iLmNvbnN0YW50P1tdOltiXTticmVhaztjYXNlIHEuSWRlbnRpZmllcjpiLmNvbnN0YW50
PSExO2IudG9XYXRjaD1bYl07YnJlYWs7Y2FzZSBxLk1lbWJlckV4cHJlc3Npb246VChiLm9iamVj
dCxhKTtiLmNvbXB1dGVkJiZUKGIucHJvcGVydHksYSk7CitiLmNvbnN0YW50PWIub2JqZWN0LmNv
bnN0YW50JiYoIWIuY29tcHV0ZWR8fGIucHJvcGVydHkuY29uc3RhbnQpO2IudG9XYXRjaD1bYl07
YnJlYWs7Y2FzZSBxLkNhbGxFeHByZXNzaW9uOmM9Yi5maWx0ZXI/IWEoYi5jYWxsZWUubmFtZSku
JHN0YXRlZnVsOiExO2Q9W107bShiLmFyZ3VtZW50cyxmdW5jdGlvbihiKXtUKGIsYSk7Yz1jJiZi
LmNvbnN0YW50O2IuY29uc3RhbnR8fGQucHVzaC5hcHBseShkLGIudG9XYXRjaCl9KTtiLmNvbnN0
YW50PWM7Yi50b1dhdGNoPWIuZmlsdGVyJiYhYShiLmNhbGxlZS5uYW1lKS4kc3RhdGVmdWw/ZDpb
Yl07YnJlYWs7Y2FzZSBxLkFzc2lnbm1lbnRFeHByZXNzaW9uOlQoYi5sZWZ0LGEpO1QoYi5yaWdo
dCxhKTtiLmNvbnN0YW50PWIubGVmdC5jb25zdGFudCYmYi5yaWdodC5jb25zdGFudDtiLnRvV2F0
Y2g9W2JdO2JyZWFrO2Nhc2UgcS5BcnJheUV4cHJlc3Npb246Yz0hMDtkPVtdO20oYi5lbGVtZW50
cyxmdW5jdGlvbihiKXtUKGIsYSk7Yz0KK2MmJmIuY29uc3RhbnQ7Yi5jb25zdGFudHx8ZC5wdXNo
LmFwcGx5KGQsYi50b1dhdGNoKX0pO2IuY29uc3RhbnQ9YztiLnRvV2F0Y2g9ZDticmVhaztjYXNl
IHEuT2JqZWN0RXhwcmVzc2lvbjpjPSEwO2Q9W107bShiLnByb3BlcnRpZXMsZnVuY3Rpb24oYil7
VChiLnZhbHVlLGEpO2M9YyYmYi52YWx1ZS5jb25zdGFudDtiLnZhbHVlLmNvbnN0YW50fHxkLnB1
c2guYXBwbHkoZCxiLnZhbHVlLnRvV2F0Y2gpfSk7Yi5jb25zdGFudD1jO2IudG9XYXRjaD1kO2Jy
ZWFrO2Nhc2UgcS5UaGlzRXhwcmVzc2lvbjpiLmNvbnN0YW50PSExLGIudG9XYXRjaD1bXX19ZnVu
Y3Rpb24gbmQoYil7aWYoMT09Yi5sZW5ndGgpe2I9YlswXS5leHByZXNzaW9uO3ZhciBhPWIudG9X
YXRjaDtyZXR1cm4gMSE9PWEubGVuZ3RoP2E6YVswXSE9PWI/YTp0fX1mdW5jdGlvbiBvZChiKXty
ZXR1cm4gYi50eXBlPT09cS5JZGVudGlmaWVyfHxiLnR5cGU9PT1xLk1lbWJlckV4cHJlc3Npb259
ZnVuY3Rpb24gcGQoYil7aWYoMT09PQorYi5ib2R5Lmxlbmd0aCYmb2QoYi5ib2R5WzBdLmV4cHJl
c3Npb24pKXJldHVybnt0eXBlOnEuQXNzaWdubWVudEV4cHJlc3Npb24sbGVmdDpiLmJvZHlbMF0u
ZXhwcmVzc2lvbixyaWdodDp7dHlwZTpxLk5HVmFsdWVQYXJhbWV0ZXJ9LG9wZXJhdG9yOiI9In19
ZnVuY3Rpb24gcWQoYil7cmV0dXJuIDA9PT1iLmJvZHkubGVuZ3RofHwxPT09Yi5ib2R5Lmxlbmd0
aCYmKGIuYm9keVswXS5leHByZXNzaW9uLnR5cGU9PT1xLkxpdGVyYWx8fGIuYm9keVswXS5leHBy
ZXNzaW9uLnR5cGU9PT1xLkFycmF5RXhwcmVzc2lvbnx8Yi5ib2R5WzBdLmV4cHJlc3Npb24udHlw
ZT09PXEuT2JqZWN0RXhwcmVzc2lvbil9ZnVuY3Rpb24gcmQoYixhKXt0aGlzLmFzdEJ1aWxkZXI9
Yjt0aGlzLiRmaWx0ZXI9YX1mdW5jdGlvbiBzZChiLGEpe3RoaXMuYXN0QnVpbGRlcj1iO3RoaXMu
JGZpbHRlcj1hfWZ1bmN0aW9uIEViKGIsYSxjLGQpe29hKGIsZCk7YT1hLnNwbGl0KCIuIik7Zm9y
KHZhciBlLGY9MDsxPAorYS5sZW5ndGg7ZisrKXtlPUNhKGEuc2hpZnQoKSxkKTt2YXIgZz1vYShi
W2VdLGQpO2d8fChnPXt9LGJbZV09Zyk7Yj1nfWU9Q2EoYS5zaGlmdCgpLGQpO29hKGJbZV0sZCk7
cmV0dXJuIGJbZV09Y31mdW5jdGlvbiBGYihiKXtyZXR1cm4iY29uc3RydWN0b3IiPT1ifWZ1bmN0
aW9uIGZjKGIpe3JldHVybiB6KGIudmFsdWVPZik/Yi52YWx1ZU9mKCk6WWYuY2FsbChiKX1mdW5j
dGlvbiBoZigpe3ZhciBiPWdhKCksYT1nYSgpO3RoaXMuJGdldD1bIiRmaWx0ZXIiLCIkc25pZmZl
ciIsZnVuY3Rpb24oYyxkKXtmdW5jdGlvbiBlKGEsYil7cmV0dXJuIG51bGw9PWF8fG51bGw9PWI/
YT09PWI6Im9iamVjdCI9PT10eXBlb2YgYSYmKGE9ZmMoYSksIm9iamVjdCI9PT10eXBlb2YgYSk/
ITE6YT09PWJ8fGEhPT1hJiZiIT09Yn1mdW5jdGlvbiBmKGEsYixjLGQsZil7dmFyIGc9ZC5pbnB1
dHMsaDtpZigxPT09Zy5sZW5ndGgpe3ZhciBrPWUsZz1nWzBdO3JldHVybiBhLiR3YXRjaChmdW5j
dGlvbihhKXt2YXIgYj0KK2coYSk7ZShiLGspfHwoaD1kKGEsdCx0LFtiXSksaz1iJiZmYyhiKSk7
cmV0dXJuIGh9LGIsYyxmKX1mb3IodmFyIGw9W10sbj1bXSxyPTAsbT1nLmxlbmd0aDtyPG07cisr
KWxbcl09ZSxuW3JdPW51bGw7cmV0dXJuIGEuJHdhdGNoKGZ1bmN0aW9uKGEpe2Zvcih2YXIgYj0h
MSxjPTAsZj1nLmxlbmd0aDtjPGY7YysrKXt2YXIgaz1nW2NdKGEpO2lmKGJ8fChiPSFlKGssbFtj
XSkpKW5bY109ayxsW2NdPWsmJmZjKGspfWImJihoPWQoYSx0LHQsbikpO3JldHVybiBofSxiLGMs
Zil9ZnVuY3Rpb24gZyhhLGIsYyxkKXt2YXIgZSxmO3JldHVybiBlPWEuJHdhdGNoKGZ1bmN0aW9u
KGEpe3JldHVybiBkKGEpfSxmdW5jdGlvbihhLGMsZCl7Zj1hO3ooYikmJmIuYXBwbHkodGhpcyxh
cmd1bWVudHMpO3coYSkmJmQuJCRwb3N0RGlnZXN0KGZ1bmN0aW9uKCl7dyhmKSYmZSgpfSl9LGMp
fWZ1bmN0aW9uIGgoYSxiLGMsZCl7ZnVuY3Rpb24gZShhKXt2YXIgYj0hMDttKGEsZnVuY3Rpb24o
YSl7dyhhKXx8CisoYj0hMSl9KTtyZXR1cm4gYn12YXIgZixnO3JldHVybiBmPWEuJHdhdGNoKGZ1
bmN0aW9uKGEpe3JldHVybiBkKGEpfSxmdW5jdGlvbihhLGMsZCl7Zz1hO3ooYikmJmIuY2FsbCh0
aGlzLGEsYyxkKTtlKGEpJiZkLiQkcG9zdERpZ2VzdChmdW5jdGlvbigpe2UoZykmJmYoKX0pfSxj
KX1mdW5jdGlvbiBsKGEsYixjLGQpe3ZhciBlO3JldHVybiBlPWEuJHdhdGNoKGZ1bmN0aW9uKGEp
e3JldHVybiBkKGEpfSxmdW5jdGlvbihhLGMsZCl7eihiKSYmYi5hcHBseSh0aGlzLGFyZ3VtZW50
cyk7ZSgpfSxjKX1mdW5jdGlvbiBrKGEsYil7aWYoIWIpcmV0dXJuIGE7dmFyIGM9YS4kJHdhdGNo
RGVsZWdhdGUsYz1jIT09aCYmYyE9PWc/ZnVuY3Rpb24oYyxkLGUsZil7ZT1hKGMsZCxlLGYpO3Jl
dHVybiBiKGUsYyxkKX06ZnVuY3Rpb24oYyxkLGUsZil7ZT1hKGMsZCxlLGYpO2M9YihlLGMsZCk7
cmV0dXJuIHcoZSk/YzplfTthLiQkd2F0Y2hEZWxlZ2F0ZSYmYS4kJHdhdGNoRGVsZWdhdGUhPT0K
K2Y/Yy4kJHdhdGNoRGVsZWdhdGU9YS4kJHdhdGNoRGVsZWdhdGU6Yi4kc3RhdGVmdWx8fChjLiQk
d2F0Y2hEZWxlZ2F0ZT1mLGMuaW5wdXRzPWEuaW5wdXRzP2EuaW5wdXRzOlthXSk7cmV0dXJuIGN9
dmFyIG49e2NzcDpkLmNzcCxleHBlbnNpdmVDaGVja3M6ITF9LHI9e2NzcDpkLmNzcCxleHBlbnNp
dmVDaGVja3M6ITB9O3JldHVybiBmdW5jdGlvbihkLGUsQyl7dmFyIG0sdSxwO3N3aXRjaCh0eXBl
b2YgZCl7Y2FzZSAic3RyaW5nIjpwPWQ9ZC50cmltKCk7dmFyIHE9Qz9hOmI7bT1xW3BdO218fCgi
OiI9PT1kLmNoYXJBdCgwKSYmIjoiPT09ZC5jaGFyQXQoMSkmJih1PSEwLGQ9ZC5zdWJzdHJpbmco
MikpLEM9Qz9yOm4sbT1uZXcgZ2MoQyksbT0obmV3IGhjKG0sYyxDKSkucGFyc2UoZCksbS5jb25z
dGFudD9tLiQkd2F0Y2hEZWxlZ2F0ZT1sOnU/bS4kJHdhdGNoRGVsZWdhdGU9bS5saXRlcmFsP2g6
ZzptLmlucHV0cyYmKG0uJCR3YXRjaERlbGVnYXRlPWYpLHFbcF09bSk7cmV0dXJuIGsobSwKK2Up
O2Nhc2UgImZ1bmN0aW9uIjpyZXR1cm4gayhkLGUpO2RlZmF1bHQ6cmV0dXJuIHZ9fX1dfWZ1bmN0
aW9uIGtmKCl7dGhpcy4kZ2V0PVsiJHJvb3RTY29wZSIsIiRleGNlcHRpb25IYW5kbGVyIixmdW5j
dGlvbihiLGEpe3JldHVybiB0ZChmdW5jdGlvbihhKXtiLiRldmFsQXN5bmMoYSl9LGEpfV19ZnVu
Y3Rpb24gbGYoKXt0aGlzLiRnZXQ9WyIkYnJvd3NlciIsIiRleGNlcHRpb25IYW5kbGVyIixmdW5j
dGlvbihiLGEpe3JldHVybiB0ZChmdW5jdGlvbihhKXtiLmRlZmVyKGEpfSxhKX1dfWZ1bmN0aW9u
IHRkKGIsYSl7ZnVuY3Rpb24gYyhhLGIsYyl7ZnVuY3Rpb24gZChiKXtyZXR1cm4gZnVuY3Rpb24o
Yyl7ZXx8KGU9ITAsYi5jYWxsKGEsYykpfX12YXIgZT0hMTtyZXR1cm5bZChiKSxkKGMpXX1mdW5j
dGlvbiBkKCl7dGhpcy4kJHN0YXRlPXtzdGF0dXM6MH19ZnVuY3Rpb24gZShhLGIpe3JldHVybiBm
dW5jdGlvbihjKXtiLmNhbGwoYSxjKX19ZnVuY3Rpb24gZihjKXshYy5wcm9jZXNzU2NoZWR1bGVk
JiYKK2MucGVuZGluZyYmKGMucHJvY2Vzc1NjaGVkdWxlZD0hMCxiKGZ1bmN0aW9uKCl7dmFyIGIs
ZCxlO2U9Yy5wZW5kaW5nO2MucHJvY2Vzc1NjaGVkdWxlZD0hMTtjLnBlbmRpbmc9dDtmb3IodmFy
IGY9MCxnPWUubGVuZ3RoO2Y8ZzsrK2Ype2Q9ZVtmXVswXTtiPWVbZl1bYy5zdGF0dXNdO3RyeXt6
KGIpP2QucmVzb2x2ZShiKGMudmFsdWUpKToxPT09Yy5zdGF0dXM/ZC5yZXNvbHZlKGMudmFsdWUp
OmQucmVqZWN0KGMudmFsdWUpfWNhdGNoKGgpe2QucmVqZWN0KGgpLGEoaCl9fX0pKX1mdW5jdGlv
biBnKCl7dGhpcy5wcm9taXNlPW5ldyBkO3RoaXMucmVzb2x2ZT1lKHRoaXMsdGhpcy5yZXNvbHZl
KTt0aGlzLnJlamVjdD1lKHRoaXMsdGhpcy5yZWplY3QpO3RoaXMubm90aWZ5PWUodGhpcyx0aGlz
Lm5vdGlmeSl9dmFyIGg9SigiJHEiLFR5cGVFcnJvcik7ZC5wcm90b3R5cGU9e3RoZW46ZnVuY3Rp
b24oYSxiLGMpe3ZhciBkPW5ldyBnO3RoaXMuJCRzdGF0ZS5wZW5kaW5nPXRoaXMuJCRzdGF0ZS5w
ZW5kaW5nfHwKK1tdO3RoaXMuJCRzdGF0ZS5wZW5kaW5nLnB1c2goW2QsYSxiLGNdKTswPHRoaXMu
JCRzdGF0ZS5zdGF0dXMmJmYodGhpcy4kJHN0YXRlKTtyZXR1cm4gZC5wcm9taXNlfSwiY2F0Y2gi
OmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnRoZW4obnVsbCxhKX0sImZpbmFsbHkiOmZ1bmN0aW9u
KGEsYil7cmV0dXJuIHRoaXMudGhlbihmdW5jdGlvbihiKXtyZXR1cm4gayhiLCEwLGEpfSxmdW5j
dGlvbihiKXtyZXR1cm4gayhiLCExLGEpfSxiKX19O2cucHJvdG90eXBlPXtyZXNvbHZlOmZ1bmN0
aW9uKGEpe3RoaXMucHJvbWlzZS4kJHN0YXRlLnN0YXR1c3x8KGE9PT10aGlzLnByb21pc2U/dGhp
cy4kJHJlamVjdChoKCJxY3ljbGUiLGEpKTp0aGlzLiQkcmVzb2x2ZShhKSl9LCQkcmVzb2x2ZTpm
dW5jdGlvbihiKXt2YXIgZCxlO2U9Yyh0aGlzLHRoaXMuJCRyZXNvbHZlLHRoaXMuJCRyZWplY3Qp
O3RyeXtpZihIKGIpfHx6KGIpKWQ9YiYmYi50aGVuO3ooZCk/KHRoaXMucHJvbWlzZS4kJHN0YXRl
LnN0YXR1cz0KKy0xLGQuY2FsbChiLGVbMF0sZVsxXSx0aGlzLm5vdGlmeSkpOih0aGlzLnByb21p
c2UuJCRzdGF0ZS52YWx1ZT1iLHRoaXMucHJvbWlzZS4kJHN0YXRlLnN0YXR1cz0xLGYodGhpcy5w
cm9taXNlLiQkc3RhdGUpKX1jYXRjaChnKXtlWzFdKGcpLGEoZyl9fSxyZWplY3Q6ZnVuY3Rpb24o
YSl7dGhpcy5wcm9taXNlLiQkc3RhdGUuc3RhdHVzfHx0aGlzLiQkcmVqZWN0KGEpfSwkJHJlamVj
dDpmdW5jdGlvbihhKXt0aGlzLnByb21pc2UuJCRzdGF0ZS52YWx1ZT1hO3RoaXMucHJvbWlzZS4k
JHN0YXRlLnN0YXR1cz0yO2YodGhpcy5wcm9taXNlLiQkc3RhdGUpfSxub3RpZnk6ZnVuY3Rpb24o
Yyl7dmFyIGQ9dGhpcy5wcm9taXNlLiQkc3RhdGUucGVuZGluZzswPj10aGlzLnByb21pc2UuJCRz
dGF0ZS5zdGF0dXMmJmQmJmQubGVuZ3RoJiZiKGZ1bmN0aW9uKCl7Zm9yKHZhciBiLGUsZj0wLGc9
ZC5sZW5ndGg7ZjxnO2YrKyl7ZT1kW2ZdWzBdO2I9ZFtmXVszXTt0cnl7ZS5ub3RpZnkoeihiKT8K
K2IoYyk6Yyl9Y2F0Y2goaCl7YShoKX19fSl9fTt2YXIgbD1mdW5jdGlvbihhLGIpe3ZhciBjPW5l
dyBnO2I/Yy5yZXNvbHZlKGEpOmMucmVqZWN0KGEpO3JldHVybiBjLnByb21pc2V9LGs9ZnVuY3Rp
b24oYSxiLGMpe3ZhciBkPW51bGw7dHJ5e3ooYykmJihkPWMoKSl9Y2F0Y2goZSl7cmV0dXJuIGwo
ZSwhMSl9cmV0dXJuIGQmJnooZC50aGVuKT9kLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gbChhLGIp
fSxmdW5jdGlvbihhKXtyZXR1cm4gbChhLCExKX0pOmwoYSxiKX0sbj1mdW5jdGlvbihhLGIsYyxk
KXt2YXIgZT1uZXcgZztlLnJlc29sdmUoYSk7cmV0dXJuIGUucHJvbWlzZS50aGVuKGIsYyxkKX0s
cj1mdW5jdGlvbiB4KGEpe2lmKCF6KGEpKXRocm93IGgoIm5vcnNsdnIiLGEpO2lmKCEodGhpcyBp
bnN0YW5jZW9mIHgpKXJldHVybiBuZXcgeChhKTt2YXIgYj1uZXcgZzthKGZ1bmN0aW9uKGEpe2Iu
cmVzb2x2ZShhKX0sZnVuY3Rpb24oYSl7Yi5yZWplY3QoYSl9KTtyZXR1cm4gYi5wcm9taXNlfTsK
K3IuZGVmZXI9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGd9O3IucmVqZWN0PWZ1bmN0aW9uKGEpe3Zh
ciBiPW5ldyBnO2IucmVqZWN0KGEpO3JldHVybiBiLnByb21pc2V9O3Iud2hlbj1uO3IucmVzb2x2
ZT1uO3IuYWxsPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBnLGM9MCxkPUcoYSk/W106e307bShhLGZ1
bmN0aW9uKGEsZSl7YysrO24oYSkudGhlbihmdW5jdGlvbihhKXtkLmhhc093blByb3BlcnR5KGUp
fHwoZFtlXT1hLC0tY3x8Yi5yZXNvbHZlKGQpKX0sZnVuY3Rpb24oYSl7ZC5oYXNPd25Qcm9wZXJ0
eShlKXx8Yi5yZWplY3QoYSl9KX0pOzA9PT1jJiZiLnJlc29sdmUoZCk7cmV0dXJuIGIucHJvbWlz
ZX07cmV0dXJuIHJ9ZnVuY3Rpb24gdWYoKXt0aGlzLiRnZXQ9WyIkd2luZG93IiwiJHRpbWVvdXQi
LGZ1bmN0aW9uKGIsYSl7ZnVuY3Rpb24gYygpe2Zvcih2YXIgYT0wO2E8bi5sZW5ndGg7YSsrKXt2
YXIgYj1uW2FdO2ImJihuW2FdPW51bGwsYigpKX1rPW4ubGVuZ3RoPTB9ZnVuY3Rpb24gZChhKXt2
YXIgYj0KK24ubGVuZ3RoO2srKztuLnB1c2goYSk7MD09PWImJihsPWgoYykpO3JldHVybiBmdW5j
dGlvbigpezA8PWImJihiPW5bYl09bnVsbCwwPT09LS1rJiZsJiYobCgpLGw9bnVsbCxuLmxlbmd0
aD0wKSl9fXZhciBlPWIucmVxdWVzdEFuaW1hdGlvbkZyYW1lfHxiLndlYmtpdFJlcXVlc3RBbmlt
YXRpb25GcmFtZSxmPWIuY2FuY2VsQW5pbWF0aW9uRnJhbWV8fGIud2Via2l0Q2FuY2VsQW5pbWF0
aW9uRnJhbWV8fGIud2Via2l0Q2FuY2VsUmVxdWVzdEFuaW1hdGlvbkZyYW1lLGc9ISFlLGg9Zz9m
dW5jdGlvbihhKXt2YXIgYj1lKGEpO3JldHVybiBmdW5jdGlvbigpe2YoYil9fTpmdW5jdGlvbihi
KXt2YXIgYz1hKGIsMTYuNjYsITEpO3JldHVybiBmdW5jdGlvbigpe2EuY2FuY2VsKGMpfX07ZC5z
dXBwb3J0ZWQ9Zzt2YXIgbCxrPTAsbj1bXTtyZXR1cm4gZH1dfWZ1bmN0aW9uIGpmKCl7ZnVuY3Rp
b24gYihhKXtmdW5jdGlvbiBiKCl7dGhpcy4kJHdhdGNoZXJzPXRoaXMuJCRuZXh0U2libGluZz0K
K3RoaXMuJCRjaGlsZEhlYWQ9dGhpcy4kJGNoaWxkVGFpbD1udWxsO3RoaXMuJCRsaXN0ZW5lcnM9
e307dGhpcy4kJGxpc3RlbmVyQ291bnQ9e307dGhpcy4kJHdhdGNoZXJzQ291bnQ9MDt0aGlzLiRp
ZD0rK25iO3RoaXMuJCRDaGlsZFNjb3BlPW51bGx9Yi5wcm90b3R5cGU9YTtyZXR1cm4gYn12YXIg
YT0xMCxjPUooIiRyb290U2NvcGUiKSxkPW51bGwsZT1udWxsO3RoaXMuZGlnZXN0VHRsPWZ1bmN0
aW9uKGIpe2FyZ3VtZW50cy5sZW5ndGgmJihhPWIpO3JldHVybiBhfTt0aGlzLiRnZXQ9WyIkaW5q
ZWN0b3IiLCIkZXhjZXB0aW9uSGFuZGxlciIsIiRwYXJzZSIsIiRicm93c2VyIixmdW5jdGlvbihm
LGcsaCxsKXtmdW5jdGlvbiBrKGEpe2EuY3VycmVudFNjb3BlLiQkZGVzdHJveWVkPSEwfWZ1bmN0
aW9uIG4oKXt0aGlzLiRpZD0rK25iO3RoaXMuJCRwaGFzZT10aGlzLiRwYXJlbnQ9dGhpcy4kJHdh
dGNoZXJzPXRoaXMuJCRuZXh0U2libGluZz10aGlzLiQkcHJldlNpYmxpbmc9dGhpcy4kJGNoaWxk
SGVhZD0KK3RoaXMuJCRjaGlsZFRhaWw9bnVsbDt0aGlzLiRyb290PXRoaXM7dGhpcy4kJGRlc3Ry
b3llZD0hMTt0aGlzLiQkbGlzdGVuZXJzPXt9O3RoaXMuJCRsaXN0ZW5lckNvdW50PXt9O3RoaXMu
JCR3YXRjaGVyc0NvdW50PTA7dGhpcy4kJGlzb2xhdGVCaW5kaW5ncz1udWxsfWZ1bmN0aW9uIHIo
YSl7aWYocC4kJHBoYXNlKXRocm93IGMoImlucHJvZyIscC4kJHBoYXNlKTtwLiQkcGhhc2U9YX1m
dW5jdGlvbiBzKGEsYil7ZG8gYS4kJHdhdGNoZXJzQ291bnQrPWI7d2hpbGUoYT1hLiRwYXJlbnQp
fWZ1bmN0aW9uIHgoYSxiLGMpe2RvIGEuJCRsaXN0ZW5lckNvdW50W2NdLT1iLDA9PT1hLiQkbGlz
dGVuZXJDb3VudFtjXSYmZGVsZXRlIGEuJCRsaXN0ZW5lckNvdW50W2NdO3doaWxlKGE9YS4kcGFy
ZW50KX1mdW5jdGlvbiBxKCl7fWZ1bmN0aW9uIEYoKXtmb3IoO0kubGVuZ3RoOyl0cnl7SS5zaGlm
dCgpKCl9Y2F0Y2goYSl7ZyhhKX1lPW51bGx9ZnVuY3Rpb24gdSgpe251bGw9PT1lJiYoZT0KK2wu
ZGVmZXIoZnVuY3Rpb24oKXtwLiRhcHBseShGKX0pKX1uLnByb3RvdHlwZT17Y29uc3RydWN0b3I6
biwkbmV3OmZ1bmN0aW9uKGEsYyl7dmFyIGQ7Yz1jfHx0aGlzO2E/KGQ9bmV3IG4sZC4kcm9vdD10
aGlzLiRyb290KToodGhpcy4kJENoaWxkU2NvcGV8fCh0aGlzLiQkQ2hpbGRTY29wZT1iKHRoaXMp
KSxkPW5ldyB0aGlzLiQkQ2hpbGRTY29wZSk7ZC4kcGFyZW50PWM7ZC4kJHByZXZTaWJsaW5nPWMu
JCRjaGlsZFRhaWw7Yy4kJGNoaWxkSGVhZD8oYy4kJGNoaWxkVGFpbC4kJG5leHRTaWJsaW5nPWQs
Yy4kJGNoaWxkVGFpbD1kKTpjLiQkY2hpbGRIZWFkPWMuJCRjaGlsZFRhaWw9ZDsoYXx8YyE9dGhp
cykmJmQuJG9uKCIkZGVzdHJveSIsayk7cmV0dXJuIGR9LCR3YXRjaDpmdW5jdGlvbihhLGIsYyxl
KXt2YXIgZj1oKGEpO2lmKGYuJCR3YXRjaERlbGVnYXRlKXJldHVybiBmLiQkd2F0Y2hEZWxlZ2F0
ZSh0aGlzLGIsYyxmLGEpO3ZhciBnPXRoaXMsaz1nLiQkd2F0Y2hlcnMsbD0KK3tmbjpiLGxhc3Q6
cSxnZXQ6ZixleHA6ZXx8YSxlcTohIWN9O2Q9bnVsbDt6KGIpfHwobC5mbj12KTtrfHwoaz1nLiQk
d2F0Y2hlcnM9W10pO2sudW5zaGlmdChsKTtzKHRoaXMsMSk7cmV0dXJuIGZ1bmN0aW9uKCl7MDw9
YmIoayxsKSYmcyhnLC0xKTtkPW51bGx9fSwkd2F0Y2hHcm91cDpmdW5jdGlvbihhLGIpe2Z1bmN0
aW9uIGMoKXtoPSExO2s/KGs9ITEsYihlLGUsZykpOmIoZSxkLGcpfXZhciBkPUFycmF5KGEubGVu
Z3RoKSxlPUFycmF5KGEubGVuZ3RoKSxmPVtdLGc9dGhpcyxoPSExLGs9ITA7aWYoIWEubGVuZ3Ro
KXt2YXIgbD0hMDtnLiRldmFsQXN5bmMoZnVuY3Rpb24oKXtsJiZiKGUsZSxnKX0pO3JldHVybiBm
dW5jdGlvbigpe2w9ITF9fWlmKDE9PT1hLmxlbmd0aClyZXR1cm4gdGhpcy4kd2F0Y2goYVswXSxm
dW5jdGlvbihhLGMsZil7ZVswXT1hO2RbMF09YztiKGUsYT09PWM/ZTpkLGYpfSk7bShhLGZ1bmN0
aW9uKGEsYil7dmFyIGs9Zy4kd2F0Y2goYSxmdW5jdGlvbihhLAorZil7ZVtiXT1hO2RbYl09Zjto
fHwoaD0hMCxnLiRldmFsQXN5bmMoYykpfSk7Zi5wdXNoKGspfSk7cmV0dXJuIGZ1bmN0aW9uKCl7
Zm9yKDtmLmxlbmd0aDspZi5zaGlmdCgpKCl9fSwkd2F0Y2hDb2xsZWN0aW9uOmZ1bmN0aW9uKGEs
Yil7ZnVuY3Rpb24gYyhhKXtlPWE7dmFyIGIsZCxnLGg7aWYoIUEoZSkpe2lmKEgoZSkpaWYoRWEo
ZSkpZm9yKGYhPT1yJiYoZj1yLG09Zi5sZW5ndGg9MCxsKyspLGE9ZS5sZW5ndGgsbSE9PWEmJihs
KyssZi5sZW5ndGg9bT1hKSxiPTA7YjxhO2IrKyloPWZbYl0sZz1lW2JdLGQ9aCE9PWgmJmchPT1n
LGR8fGg9PT1nfHwobCsrLGZbYl09Zyk7ZWxzZXtmIT09cyYmKGY9cz17fSxtPTAsbCsrKTthPTA7
Zm9yKGIgaW4gZSllLmhhc093blByb3BlcnR5KGIpJiYoYSsrLGc9ZVtiXSxoPWZbYl0sYiBpbiBm
PyhkPWghPT1oJiZnIT09ZyxkfHxoPT09Z3x8KGwrKyxmW2JdPWcpKToobSsrLGZbYl09ZyxsKysp
KTtpZihtPmEpZm9yKGIgaW4gbCsrLGYpZS5oYXNPd25Qcm9wZXJ0eShiKXx8CisobS0tLGRlbGV0
ZSBmW2JdKX1lbHNlIGYhPT1lJiYoZj1lLGwrKyk7cmV0dXJuIGx9fWMuJHN0YXRlZnVsPSEwO3Zh
ciBkPXRoaXMsZSxmLGcsaz0xPGIubGVuZ3RoLGw9MCxuPWgoYSxjKSxyPVtdLHM9e30scD0hMCxt
PTA7cmV0dXJuIHRoaXMuJHdhdGNoKG4sZnVuY3Rpb24oKXtwPyhwPSExLGIoZSxlLGQpKTpiKGUs
ZyxkKTtpZihrKWlmKEgoZSkpaWYoRWEoZSkpe2c9QXJyYXkoZS5sZW5ndGgpO2Zvcih2YXIgYT0w
O2E8ZS5sZW5ndGg7YSsrKWdbYV09ZVthXX1lbHNlIGZvcihhIGluIGc9e30sZSlYYS5jYWxsKGUs
YSkmJihnW2FdPWVbYV0pO2Vsc2UgZz1lfSl9LCRkaWdlc3Q6ZnVuY3Rpb24oKXt2YXIgYixmLGgs
ayxuLHMsbT1hLHgsdT1bXSxFLEk7cigiJGRpZ2VzdCIpO2wuJCRjaGVja1VybENoYW5nZSgpO3Ro
aXM9PT1wJiZudWxsIT09ZSYmKGwuZGVmZXIuY2FuY2VsKGUpLEYoKSk7ZD1udWxsO2Rve3M9ITE7
Zm9yKHg9dGhpczt0Lmxlbmd0aDspe3RyeXtJPXQuc2hpZnQoKSwKK0kuc2NvcGUuJGV2YWwoSS5l
eHByZXNzaW9uLEkubG9jYWxzKX1jYXRjaCh2KXtnKHYpfWQ9bnVsbH1hOmRve2lmKGs9eC4kJHdh
dGNoZXJzKWZvcihuPWsubGVuZ3RoO24tLTspdHJ5e2lmKGI9a1tuXSlpZigoZj1iLmdldCh4KSkh
PT0oaD1iLmxhc3QpJiYhKGIuZXE/a2EoZixoKToibnVtYmVyIj09PXR5cGVvZiBmJiYibnVtYmVy
Ij09PXR5cGVvZiBoJiZpc05hTihmKSYmaXNOYU4oaCkpKXM9ITAsZD1iLGIubGFzdD1iLmVxP2Zh
KGYsbnVsbCk6ZixiLmZuKGYsaD09PXE/ZjpoLHgpLDU+bSYmKEU9NC1tLHVbRV18fCh1W0VdPVtd
KSx1W0VdLnB1c2goe21zZzp6KGIuZXhwKT8iZm46ICIrKGIuZXhwLm5hbWV8fGIuZXhwLnRvU3Ry
aW5nKCkpOmIuZXhwLG5ld1ZhbDpmLG9sZFZhbDpofSkpO2Vsc2UgaWYoYj09PWQpe3M9ITE7YnJl
YWsgYX19Y2F0Y2goQSl7ZyhBKX1pZighKGs9eC4kJHdhdGNoZXJzQ291bnQmJnguJCRjaGlsZEhl
YWR8fHghPT10aGlzJiZ4LiQkbmV4dFNpYmxpbmcpKWZvcig7eCE9PQordGhpcyYmIShrPXguJCRu
ZXh0U2libGluZyk7KXg9eC4kcGFyZW50fXdoaWxlKHg9ayk7aWYoKHN8fHQubGVuZ3RoKSYmIW0t
LSl0aHJvdyBwLiQkcGhhc2U9bnVsbCxjKCJpbmZkaWciLGEsdSk7fXdoaWxlKHN8fHQubGVuZ3Ro
KTtmb3IocC4kJHBoYXNlPW51bGw7dy5sZW5ndGg7KXRyeXt3LnNoaWZ0KCkoKX1jYXRjaCh5KXtn
KHkpfX0sJGRlc3Ryb3k6ZnVuY3Rpb24oKXtpZighdGhpcy4kJGRlc3Ryb3llZCl7dmFyIGE9dGhp
cy4kcGFyZW50O3RoaXMuJGJyb2FkY2FzdCgiJGRlc3Ryb3kiKTt0aGlzLiQkZGVzdHJveWVkPSEw
O3RoaXM9PT1wJiZsLiQkYXBwbGljYXRpb25EZXN0cm95ZWQoKTtzKHRoaXMsLXRoaXMuJCR3YXRj
aGVyc0NvdW50KTtmb3IodmFyIGIgaW4gdGhpcy4kJGxpc3RlbmVyQ291bnQpeCh0aGlzLHRoaXMu
JCRsaXN0ZW5lckNvdW50W2JdLGIpO2EmJmEuJCRjaGlsZEhlYWQ9PXRoaXMmJihhLiQkY2hpbGRI
ZWFkPXRoaXMuJCRuZXh0U2libGluZyk7YSYmYS4kJGNoaWxkVGFpbD09Cit0aGlzJiYoYS4kJGNo
aWxkVGFpbD10aGlzLiQkcHJldlNpYmxpbmcpO3RoaXMuJCRwcmV2U2libGluZyYmKHRoaXMuJCRw
cmV2U2libGluZy4kJG5leHRTaWJsaW5nPXRoaXMuJCRuZXh0U2libGluZyk7dGhpcy4kJG5leHRT
aWJsaW5nJiYodGhpcy4kJG5leHRTaWJsaW5nLiQkcHJldlNpYmxpbmc9dGhpcy4kJHByZXZTaWJs
aW5nKTt0aGlzLiRkZXN0cm95PXRoaXMuJGRpZ2VzdD10aGlzLiRhcHBseT10aGlzLiRldmFsQXN5
bmM9dGhpcy4kYXBwbHlBc3luYz12O3RoaXMuJG9uPXRoaXMuJHdhdGNoPXRoaXMuJHdhdGNoR3Jv
dXA9ZnVuY3Rpb24oKXtyZXR1cm4gdn07dGhpcy4kJGxpc3RlbmVycz17fTt0aGlzLiRwYXJlbnQ9
dGhpcy4kJG5leHRTaWJsaW5nPXRoaXMuJCRwcmV2U2libGluZz10aGlzLiQkY2hpbGRIZWFkPXRo
aXMuJCRjaGlsZFRhaWw9dGhpcy4kcm9vdD10aGlzLiQkd2F0Y2hlcnM9bnVsbH19LCRldmFsOmZ1
bmN0aW9uKGEsYil7cmV0dXJuIGgoYSkodGhpcyxiKX0sCiskZXZhbEFzeW5jOmZ1bmN0aW9uKGEs
Yil7cC4kJHBoYXNlfHx0Lmxlbmd0aHx8bC5kZWZlcihmdW5jdGlvbigpe3QubGVuZ3RoJiZwLiRk
aWdlc3QoKX0pO3QucHVzaCh7c2NvcGU6dGhpcyxleHByZXNzaW9uOmEsbG9jYWxzOmJ9KX0sJCRw
b3N0RGlnZXN0OmZ1bmN0aW9uKGEpe3cucHVzaChhKX0sJGFwcGx5OmZ1bmN0aW9uKGEpe3RyeXty
ZXR1cm4gcigiJGFwcGx5IiksdGhpcy4kZXZhbChhKX1jYXRjaChiKXtnKGIpfWZpbmFsbHl7cC4k
JHBoYXNlPW51bGw7dHJ5e3AuJGRpZ2VzdCgpfWNhdGNoKGMpe3Rocm93IGcoYyksYzt9fX0sJGFw
cGx5QXN5bmM6ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYigpe2MuJGV2YWwoYSl9dmFyIGM9dGhpczth
JiZJLnB1c2goYik7dSgpfSwkb246ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLiQkbGlzdGVuZXJz
W2FdO2N8fCh0aGlzLiQkbGlzdGVuZXJzW2FdPWM9W10pO2MucHVzaChiKTt2YXIgZD10aGlzO2Rv
IGQuJCRsaXN0ZW5lckNvdW50W2FdfHwKKyhkLiQkbGlzdGVuZXJDb3VudFthXT0wKSxkLiQkbGlz
dGVuZXJDb3VudFthXSsrO3doaWxlKGQ9ZC4kcGFyZW50KTt2YXIgZT10aGlzO3JldHVybiBmdW5j
dGlvbigpe3ZhciBkPWMuaW5kZXhPZihiKTstMSE9PWQmJihjW2RdPW51bGwseChlLDEsYSkpfX0s
JGVtaXQ6ZnVuY3Rpb24oYSxiKXt2YXIgYz1bXSxkLGU9dGhpcyxmPSExLGg9e25hbWU6YSx0YXJn
ZXRTY29wZTplLHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigpe2Y9ITB9LHByZXZlbnREZWZhdWx0
OmZ1bmN0aW9uKCl7aC5kZWZhdWx0UHJldmVudGVkPSEwfSxkZWZhdWx0UHJldmVudGVkOiExfSxr
PWNiKFtoXSxhcmd1bWVudHMsMSksbCxuO2Rve2Q9ZS4kJGxpc3RlbmVyc1thXXx8YztoLmN1cnJl
bnRTY29wZT1lO2w9MDtmb3Iobj1kLmxlbmd0aDtsPG47bCsrKWlmKGRbbF0pdHJ5e2RbbF0uYXBw
bHkobnVsbCxrKX1jYXRjaChyKXtnKHIpfWVsc2UgZC5zcGxpY2UobCwxKSxsLS0sbi0tO2lmKGYp
cmV0dXJuIGguY3VycmVudFNjb3BlPQorbnVsbCxoO2U9ZS4kcGFyZW50fXdoaWxlKGUpO2guY3Vy
cmVudFNjb3BlPW51bGw7cmV0dXJuIGh9LCRicm9hZGNhc3Q6ZnVuY3Rpb24oYSxiKXt2YXIgYz10
aGlzLGQ9dGhpcyxlPXtuYW1lOmEsdGFyZ2V0U2NvcGU6dGhpcyxwcmV2ZW50RGVmYXVsdDpmdW5j
dGlvbigpe2UuZGVmYXVsdFByZXZlbnRlZD0hMH0sZGVmYXVsdFByZXZlbnRlZDohMX07aWYoIXRo
aXMuJCRsaXN0ZW5lckNvdW50W2FdKXJldHVybiBlO2Zvcih2YXIgZj1jYihbZV0sYXJndW1lbnRz
LDEpLGgsaztjPWQ7KXtlLmN1cnJlbnRTY29wZT1jO2Q9Yy4kJGxpc3RlbmVyc1thXXx8W107aD0w
O2ZvcihrPWQubGVuZ3RoO2g8aztoKyspaWYoZFtoXSl0cnl7ZFtoXS5hcHBseShudWxsLGYpfWNh
dGNoKGwpe2cobCl9ZWxzZSBkLnNwbGljZShoLDEpLGgtLSxrLS07aWYoIShkPWMuJCRsaXN0ZW5l
ckNvdW50W2FdJiZjLiQkY2hpbGRIZWFkfHxjIT09dGhpcyYmYy4kJG5leHRTaWJsaW5nKSlmb3Io
O2MhPT10aGlzJiYhKGQ9CitjLiQkbmV4dFNpYmxpbmcpOyljPWMuJHBhcmVudH1lLmN1cnJlbnRT
Y29wZT1udWxsO3JldHVybiBlfX07dmFyIHA9bmV3IG4sdD1wLiQkYXN5bmNRdWV1ZT1bXSx3PXAu
JCRwb3N0RGlnZXN0UXVldWU9W10sST1wLiQkYXBwbHlBc3luY1F1ZXVlPVtdO3JldHVybiBwfV19
ZnVuY3Rpb24gaGUoKXt2YXIgYj0vXlxzKihodHRwcz98ZnRwfG1haWx0b3x0ZWx8ZmlsZSk6Lyxh
PS9eXHMqKChodHRwcz98ZnRwfGZpbGV8YmxvYik6fGRhdGE6aW1hZ2VcLykvO3RoaXMuYUhyZWZT
YW5pdGl6YXRpb25XaGl0ZWxpc3Q9ZnVuY3Rpb24oYSl7cmV0dXJuIHcoYSk/KGI9YSx0aGlzKTpi
fTt0aGlzLmltZ1NyY1Nhbml0aXphdGlvbldoaXRlbGlzdD1mdW5jdGlvbihiKXtyZXR1cm4gdyhi
KT8oYT1iLHRoaXMpOmF9O3RoaXMuJGdldD1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihjLGQp
e3ZhciBlPWQ/YTpiLGY7Zj1CYShjKS5ocmVmO3JldHVybiIiPT09Znx8Zi5tYXRjaChlKT9jOiJ1
bnNhZmU6IisKK2Z9fX1mdW5jdGlvbiBaZihiKXtpZigic2VsZiI9PT1iKXJldHVybiBiO2lmKEwo
Yikpe2lmKC0xPGIuaW5kZXhPZigiKioqIikpdGhyb3cgRGEoIml3Y2FyZCIsYik7Yj11ZChiKS5y
ZXBsYWNlKCJcXCpcXCoiLCIuKiIpLnJlcGxhY2UoIlxcKiIsIlteOi8uPyY7XSoiKTtyZXR1cm4g
bmV3IFJlZ0V4cCgiXiIrYisiJCIpfWlmKFphKGIpKXJldHVybiBuZXcgUmVnRXhwKCJeIitiLnNv
dXJjZSsiJCIpO3Rocm93IERhKCJpbWF0Y2hlciIpO31mdW5jdGlvbiB2ZChiKXt2YXIgYT1bXTt3
KGIpJiZtKGIsZnVuY3Rpb24oYil7YS5wdXNoKFpmKGIpKX0pO3JldHVybiBhfWZ1bmN0aW9uIG5m
KCl7dGhpcy5TQ0VfQ09OVEVYVFM9cGE7dmFyIGI9WyJzZWxmIl0sYT1bXTt0aGlzLnJlc291cmNl
VXJsV2hpdGVsaXN0PWZ1bmN0aW9uKGEpe2FyZ3VtZW50cy5sZW5ndGgmJihiPXZkKGEpKTtyZXR1
cm4gYn07dGhpcy5yZXNvdXJjZVVybEJsYWNrbGlzdD1mdW5jdGlvbihiKXthcmd1bWVudHMubGVu
Z3RoJiYKKyhhPXZkKGIpKTtyZXR1cm4gYX07dGhpcy4kZ2V0PVsiJGluamVjdG9yIixmdW5jdGlv
bihjKXtmdW5jdGlvbiBkKGEsYil7cmV0dXJuInNlbGYiPT09YT9nZChiKTohIWEuZXhlYyhiLmhy
ZWYpfWZ1bmN0aW9uIGUoYSl7dmFyIGI9ZnVuY3Rpb24oYSl7dGhpcy4kJHVud3JhcFRydXN0ZWRW
YWx1ZT1mdW5jdGlvbigpe3JldHVybiBhfX07YSYmKGIucHJvdG90eXBlPW5ldyBhKTtiLnByb3Rv
dHlwZS52YWx1ZU9mPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJCR1bndyYXBUcnVzdGVkVmFsdWUo
KX07Yi5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kJHVud3JhcFRy
dXN0ZWRWYWx1ZSgpLnRvU3RyaW5nKCl9O3JldHVybiBifXZhciBmPWZ1bmN0aW9uKGEpe3Rocm93
IERhKCJ1bnNhZmUiKTt9O2MuaGFzKCIkc2FuaXRpemUiKSYmKGY9Yy5nZXQoIiRzYW5pdGl6ZSIp
KTt2YXIgZz1lKCksaD17fTtoW3BhLkhUTUxdPWUoZyk7aFtwYS5DU1NdPWUoZyk7aFtwYS5VUkxd
PQorZShnKTtoW3BhLkpTXT1lKGcpO2hbcGEuUkVTT1VSQ0VfVVJMXT1lKGhbcGEuVVJMXSk7cmV0
dXJue3RydXN0QXM6ZnVuY3Rpb24oYSxiKXt2YXIgYz1oLmhhc093blByb3BlcnR5KGEpP2hbYV06
bnVsbDtpZighYyl0aHJvdyBEYSgiaWNvbnRleHQiLGEsYik7aWYobnVsbD09PWJ8fGI9PT10fHwi
Ij09PWIpcmV0dXJuIGI7aWYoInN0cmluZyIhPT10eXBlb2YgYil0aHJvdyBEYSgiaXR5cGUiLGEp
O3JldHVybiBuZXcgYyhiKX0sZ2V0VHJ1c3RlZDpmdW5jdGlvbihjLGUpe2lmKG51bGw9PT1lfHxl
PT09dHx8IiI9PT1lKXJldHVybiBlO3ZhciBnPWguaGFzT3duUHJvcGVydHkoYyk/aFtjXTpudWxs
O2lmKGcmJmUgaW5zdGFuY2VvZiBnKXJldHVybiBlLiQkdW53cmFwVHJ1c3RlZFZhbHVlKCk7aWYo
Yz09PXBhLlJFU09VUkNFX1VSTCl7dmFyIGc9QmEoZS50b1N0cmluZygpKSxyLHMsbT0hMTtyPTA7
Zm9yKHM9Yi5sZW5ndGg7cjxzO3IrKylpZihkKGJbcl0sZykpe209ITA7YnJlYWt9aWYobSlmb3Io
cj0KKzAscz1hLmxlbmd0aDtyPHM7cisrKWlmKGQoYVtyXSxnKSl7bT0hMTticmVha31pZihtKXJl
dHVybiBlO3Rocm93IERhKCJpbnNlY3VybCIsZS50b1N0cmluZygpKTt9aWYoYz09PXBhLkhUTUwp
cmV0dXJuIGYoZSk7dGhyb3cgRGEoInVuc2FmZSIpO30sdmFsdWVPZjpmdW5jdGlvbihhKXtyZXR1
cm4gYSBpbnN0YW5jZW9mIGc/YS4kJHVud3JhcFRydXN0ZWRWYWx1ZSgpOmF9fX1dfWZ1bmN0aW9u
IG1mKCl7dmFyIGI9ITA7dGhpcy5lbmFibGVkPWZ1bmN0aW9uKGEpe2FyZ3VtZW50cy5sZW5ndGgm
JihiPSEhYSk7cmV0dXJuIGJ9O3RoaXMuJGdldD1bIiRwYXJzZSIsIiRzY2VEZWxlZ2F0ZSIsZnVu
Y3Rpb24oYSxjKXtpZihiJiY4PlVhKXRocm93IERhKCJpZXF1aXJrcyIpO3ZhciBkPWlhKHBhKTtk
LmlzRW5hYmxlZD1mdW5jdGlvbigpe3JldHVybiBifTtkLnRydXN0QXM9Yy50cnVzdEFzO2QuZ2V0
VHJ1c3RlZD1jLmdldFRydXN0ZWQ7ZC52YWx1ZU9mPWMudmFsdWVPZjtifHwoZC50cnVzdEFzPQor
ZC5nZXRUcnVzdGVkPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGJ9LGQudmFsdWVPZj1ZYSk7ZC5wYXJz
ZUFzPWZ1bmN0aW9uKGIsYyl7dmFyIGU9YShjKTtyZXR1cm4gZS5saXRlcmFsJiZlLmNvbnN0YW50
P2U6YShjLGZ1bmN0aW9uKGEpe3JldHVybiBkLmdldFRydXN0ZWQoYixhKX0pfTt2YXIgZT1kLnBh
cnNlQXMsZj1kLmdldFRydXN0ZWQsZz1kLnRydXN0QXM7bShwYSxmdW5jdGlvbihhLGIpe3ZhciBj
PU0oYik7ZFtoYigicGFyc2VfYXNfIitjKV09ZnVuY3Rpb24oYil7cmV0dXJuIGUoYSxiKX07ZFto
YigiZ2V0X3RydXN0ZWRfIitjKV09ZnVuY3Rpb24oYil7cmV0dXJuIGYoYSxiKX07ZFtoYigidHJ1
c3RfYXNfIitjKV09ZnVuY3Rpb24oYil7cmV0dXJuIGcoYSxiKX19KTtyZXR1cm4gZH1dfWZ1bmN0
aW9uIG9mKCl7dGhpcy4kZ2V0PVsiJHdpbmRvdyIsIiRkb2N1bWVudCIsZnVuY3Rpb24oYixhKXt2
YXIgYz17fSxkPVcoKC9hbmRyb2lkIChcZCspLy5leGVjKE0oKGIubmF2aWdhdG9yfHwKK3t9KS51
c2VyQWdlbnQpKXx8W10pWzFdKSxlPS9Cb3hlZS9pLnRlc3QoKGIubmF2aWdhdG9yfHx7fSkudXNl
ckFnZW50KSxmPWFbMF18fHt9LGcsaD0vXihNb3p8d2Via2l0fG1zKSg/PVtBLVpdKS8sbD1mLmJv
ZHkmJmYuYm9keS5zdHlsZSxrPSExLG49ITE7aWYobCl7Zm9yKHZhciByIGluIGwpaWYoaz1oLmV4
ZWMocikpe2c9a1swXTtnPWcuc3Vic3RyKDAsMSkudG9VcHBlckNhc2UoKStnLnN1YnN0cigxKTti
cmVha31nfHwoZz0iV2Via2l0T3BhY2l0eSJpbiBsJiYid2Via2l0Iik7az0hISgidHJhbnNpdGlv
biJpbiBsfHxnKyJUcmFuc2l0aW9uImluIGwpO249ISEoImFuaW1hdGlvbiJpbiBsfHxnKyJBbmlt
YXRpb24iaW4gbCk7IWR8fGsmJm58fChrPUwobC53ZWJraXRUcmFuc2l0aW9uKSxuPUwobC53ZWJr
aXRBbmltYXRpb24pKX1yZXR1cm57aGlzdG9yeTohKCFiLmhpc3Rvcnl8fCFiLmhpc3RvcnkucHVz
aFN0YXRlfHw0PmR8fGUpLGhhc0V2ZW50OmZ1bmN0aW9uKGEpe2lmKCJpbnB1dCI9PT0KK2EmJjEx
Pj1VYSlyZXR1cm4hMTtpZihBKGNbYV0pKXt2YXIgYj1mLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2Nb
YV09Im9uIithIGluIGJ9cmV0dXJuIGNbYV19LGNzcDpmYigpLHZlbmRvclByZWZpeDpnLHRyYW5z
aXRpb25zOmssYW5pbWF0aW9uczpuLGFuZHJvaWQ6ZH19XX1mdW5jdGlvbiBxZigpe3RoaXMuJGdl
dD1bIiR0ZW1wbGF0ZUNhY2hlIiwiJGh0dHAiLCIkcSIsIiRzY2UiLGZ1bmN0aW9uKGIsYSxjLGQp
e2Z1bmN0aW9uIGUoZixnKXtlLnRvdGFsUGVuZGluZ1JlcXVlc3RzKys7TChmKSYmYi5nZXQoZil8
fChmPWQuZ2V0VHJ1c3RlZFJlc291cmNlVXJsKGYpKTt2YXIgaD1hLmRlZmF1bHRzJiZhLmRlZmF1
bHRzLnRyYW5zZm9ybVJlc3BvbnNlO0coaCk/aD1oLmZpbHRlcihmdW5jdGlvbihhKXtyZXR1cm4g
YSE9PSRifSk6aD09PSRiJiYoaD1udWxsKTtyZXR1cm4gYS5nZXQoZix7Y2FjaGU6Yix0cmFuc2Zv
cm1SZXNwb25zZTpofSlbImZpbmFsbHkiXShmdW5jdGlvbigpe2UudG90YWxQZW5kaW5nUmVxdWVz
dHMtLX0pLnRoZW4oZnVuY3Rpb24oYSl7Yi5wdXQoZiwKK2EuZGF0YSk7cmV0dXJuIGEuZGF0YX0s
ZnVuY3Rpb24oYSl7aWYoIWcpdGhyb3cgZWEoInRwbG9hZCIsZixhLnN0YXR1cyxhLnN0YXR1c1Rl
eHQpO3JldHVybiBjLnJlamVjdChhKX0pfWUudG90YWxQZW5kaW5nUmVxdWVzdHM9MDtyZXR1cm4g
ZX1dfWZ1bmN0aW9uIHJmKCl7dGhpcy4kZ2V0PVsiJHJvb3RTY29wZSIsIiRicm93c2VyIiwiJGxv
Y2F0aW9uIixmdW5jdGlvbihiLGEsYyl7cmV0dXJue2ZpbmRCaW5kaW5nczpmdW5jdGlvbihhLGIs
Yyl7YT1hLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoIm5nLWJpbmRpbmciKTt2YXIgZz1bXTttKGEs
ZnVuY3Rpb24oYSl7dmFyIGQ9Y2EuZWxlbWVudChhKS5kYXRhKCIkYmluZGluZyIpO2QmJm0oZCxm
dW5jdGlvbihkKXtjPyhuZXcgUmVnRXhwKCIoXnxcXHMpIit1ZChiKSsiKFxcc3xcXHx8JCkiKSku
dGVzdChkKSYmZy5wdXNoKGEpOi0xIT1kLmluZGV4T2YoYikmJmcucHVzaChhKX0pfSk7cmV0dXJu
IGd9LGZpbmRNb2RlbHM6ZnVuY3Rpb24oYSwKK2IsYyl7Zm9yKHZhciBnPVsibmctIiwiZGF0YS1u
Zy0iLCJuZ1xcOiJdLGg9MDtoPGcubGVuZ3RoOysraCl7dmFyIGw9YS5xdWVyeVNlbGVjdG9yQWxs
KCJbIitnW2hdKyJtb2RlbCIrKGM/Ij0iOiIqPSIpKyciJytiKyciXScpO2lmKGwubGVuZ3RoKXJl
dHVybiBsfX0sZ2V0TG9jYXRpb246ZnVuY3Rpb24oKXtyZXR1cm4gYy51cmwoKX0sc2V0TG9jYXRp
b246ZnVuY3Rpb24oYSl7YSE9PWMudXJsKCkmJihjLnVybChhKSxiLiRkaWdlc3QoKSl9LHdoZW5T
dGFibGU6ZnVuY3Rpb24oYil7YS5ub3RpZnlXaGVuTm9PdXRzdGFuZGluZ1JlcXVlc3RzKGIpfX19
XX1mdW5jdGlvbiBzZigpe3RoaXMuJGdldD1bIiRyb290U2NvcGUiLCIkYnJvd3NlciIsIiRxIiwi
JCRxIiwiJGV4Y2VwdGlvbkhhbmRsZXIiLGZ1bmN0aW9uKGIsYSxjLGQsZSl7ZnVuY3Rpb24gZihm
LGwsayl7eihmKXx8KGs9bCxsPWYsZj12KTt2YXIgbj16YS5jYWxsKGFyZ3VtZW50cywzKSxyPXco
aykmJiFrLHM9KHI/ZDpjKS5kZWZlcigpLAorbT1zLnByb21pc2UscTtxPWEuZGVmZXIoZnVuY3Rp
b24oKXt0cnl7cy5yZXNvbHZlKGYuYXBwbHkobnVsbCxuKSl9Y2F0Y2goYSl7cy5yZWplY3QoYSks
ZShhKX1maW5hbGx5e2RlbGV0ZSBnW20uJCR0aW1lb3V0SWRdfXJ8fGIuJGFwcGx5KCl9LGwpO20u
JCR0aW1lb3V0SWQ9cTtnW3FdPXM7cmV0dXJuIG19dmFyIGc9e307Zi5jYW5jZWw9ZnVuY3Rpb24o
Yil7cmV0dXJuIGImJmIuJCR0aW1lb3V0SWQgaW4gZz8oZ1tiLiQkdGltZW91dElkXS5yZWplY3Qo
ImNhbmNlbGVkIiksZGVsZXRlIGdbYi4kJHRpbWVvdXRJZF0sYS5kZWZlci5jYW5jZWwoYi4kJHRp
bWVvdXRJZCkpOiExfTtyZXR1cm4gZn1dfWZ1bmN0aW9uIEJhKGIpe1VhJiYoWC5zZXRBdHRyaWJ1
dGUoImhyZWYiLGIpLGI9WC5ocmVmKTtYLnNldEF0dHJpYnV0ZSgiaHJlZiIsYik7cmV0dXJue2hy
ZWY6WC5ocmVmLHByb3RvY29sOlgucHJvdG9jb2w/WC5wcm90b2NvbC5yZXBsYWNlKC86JC8sIiIp
OiIiLGhvc3Q6WC5ob3N0LAorc2VhcmNoOlguc2VhcmNoP1guc2VhcmNoLnJlcGxhY2UoL15cPy8s
IiIpOiIiLGhhc2g6WC5oYXNoP1guaGFzaC5yZXBsYWNlKC9eIy8sIiIpOiIiLGhvc3RuYW1lOlgu
aG9zdG5hbWUscG9ydDpYLnBvcnQscGF0aG5hbWU6Ii8iPT09WC5wYXRobmFtZS5jaGFyQXQoMCk/
WC5wYXRobmFtZToiLyIrWC5wYXRobmFtZX19ZnVuY3Rpb24gZ2QoYil7Yj1MKGIpP0JhKGIpOmI7
cmV0dXJuIGIucHJvdG9jb2w9PT13ZC5wcm90b2NvbCYmYi5ob3N0PT09d2QuaG9zdH1mdW5jdGlv
biB0Zigpe3RoaXMuJGdldD1yYShPKX1mdW5jdGlvbiB4ZChiKXtmdW5jdGlvbiBhKGEpe3RyeXty
ZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGEpfWNhdGNoKGIpe3JldHVybiBhfX12YXIgYz1iWzBd
fHx7fSxkPXt9LGU9IiI7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGIsZyxoLGwsaztiPWMuY29va2ll
fHwiIjtpZihiIT09ZSlmb3IoZT1iLGI9ZS5zcGxpdCgiOyAiKSxkPXt9LGg9MDtoPGIubGVuZ3Ro
O2grKylnPQorYltoXSxsPWcuaW5kZXhPZigiPSIpLDA8bCYmKGs9YShnLnN1YnN0cmluZygwLGwp
KSxkW2tdPT09dCYmKGRba109YShnLnN1YnN0cmluZyhsKzEpKSkpO3JldHVybiBkfX1mdW5jdGlv
biB4Zigpe3RoaXMuJGdldD14ZH1mdW5jdGlvbiBMYyhiKXtmdW5jdGlvbiBhKGMsZCl7aWYoSChj
KSl7dmFyIGU9e307bShjLGZ1bmN0aW9uKGIsYyl7ZVtjXT1hKGMsYil9KTtyZXR1cm4gZX1yZXR1
cm4gYi5mYWN0b3J5KGMrIkZpbHRlciIsZCl9dGhpcy5yZWdpc3Rlcj1hO3RoaXMuJGdldD1bIiRp
bmplY3RvciIsZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe3JldHVybiBhLmdldChiKyJG
aWx0ZXIiKX19XTthKCJjdXJyZW5jeSIseWQpO2EoImRhdGUiLHpkKTthKCJmaWx0ZXIiLCRmKTth
KCJqc29uIixhZyk7YSgibGltaXRUbyIsYmcpO2EoImxvd2VyY2FzZSIsY2cpO2EoIm51bWJlciIs
QWQpO2EoIm9yZGVyQnkiLEJkKTthKCJ1cHBlcmNhc2UiLGRnKX1mdW5jdGlvbiAkZigpe3JldHVy
biBmdW5jdGlvbihiLAorYSxjKXtpZighRWEoYikpe2lmKG51bGw9PWIpcmV0dXJuIGI7dGhyb3cg
SigiZmlsdGVyIikoIm5vdGFycmF5IixiKTt9dmFyIGQ7c3dpdGNoKGljKGEpKXtjYXNlICJmdW5j
dGlvbiI6YnJlYWs7Y2FzZSAiYm9vbGVhbiI6Y2FzZSAibnVsbCI6Y2FzZSAibnVtYmVyIjpjYXNl
ICJzdHJpbmciOmQ9ITA7Y2FzZSAib2JqZWN0IjphPWVnKGEsYyxkKTticmVhaztkZWZhdWx0OnJl
dHVybiBifXJldHVybiBBcnJheS5wcm90b3R5cGUuZmlsdGVyLmNhbGwoYixhKX19ZnVuY3Rpb24g
ZWcoYixhLGMpe3ZhciBkPUgoYikmJiIkImluIGI7ITA9PT1hP2E9a2E6eihhKXx8KGE9ZnVuY3Rp
b24oYSxiKXtpZihBKGEpKXJldHVybiExO2lmKG51bGw9PT1hfHxudWxsPT09YilyZXR1cm4gYT09
PWI7aWYoSChiKXx8SChhKSYmIXJjKGEpKXJldHVybiExO2E9TSgiIithKTtiPU0oIiIrYik7cmV0
dXJuLTEhPT1hLmluZGV4T2YoYil9KTtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGQmJiFIKGUp
P0xhKGUsCitiLiQsYSwhMSk6TGEoZSxiLGEsYyl9fWZ1bmN0aW9uIExhKGIsYSxjLGQsZSl7dmFy
IGY9aWMoYiksZz1pYyhhKTtpZigic3RyaW5nIj09PWcmJiIhIj09PWEuY2hhckF0KDApKXJldHVy
biFMYShiLGEuc3Vic3RyaW5nKDEpLGMsZCk7aWYoRyhiKSlyZXR1cm4gYi5zb21lKGZ1bmN0aW9u
KGIpe3JldHVybiBMYShiLGEsYyxkKX0pO3N3aXRjaChmKXtjYXNlICJvYmplY3QiOnZhciBoO2lm
KGQpe2ZvcihoIGluIGIpaWYoIiQiIT09aC5jaGFyQXQoMCkmJkxhKGJbaF0sYSxjLCEwKSlyZXR1
cm4hMDtyZXR1cm4gZT8hMTpMYShiLGEsYywhMSl9aWYoIm9iamVjdCI9PT1nKXtmb3IoaCBpbiBh
KWlmKGU9YVtoXSwheihlKSYmIUEoZSkmJihmPSIkIj09PWgsIUxhKGY/YjpiW2hdLGUsYyxmLGYp
KSlyZXR1cm4hMTtyZXR1cm4hMH1yZXR1cm4gYyhiLGEpO2Nhc2UgImZ1bmN0aW9uIjpyZXR1cm4h
MTtkZWZhdWx0OnJldHVybiBjKGIsYSl9fWZ1bmN0aW9uIGljKGIpe3JldHVybiBudWxsPT09Citi
PyJudWxsIjp0eXBlb2YgYn1mdW5jdGlvbiB5ZChiKXt2YXIgYT1iLk5VTUJFUl9GT1JNQVRTO3Jl
dHVybiBmdW5jdGlvbihiLGQsZSl7QShkKSYmKGQ9YS5DVVJSRU5DWV9TWU0pO0EoZSkmJihlPWEu
UEFUVEVSTlNbMV0ubWF4RnJhYyk7cmV0dXJuIG51bGw9PWI/YjpDZChiLGEuUEFUVEVSTlNbMV0s
YS5HUk9VUF9TRVAsYS5ERUNJTUFMX1NFUCxlKS5yZXBsYWNlKC9cdTAwQTQvZyxkKX19ZnVuY3Rp
b24gQWQoYil7dmFyIGE9Yi5OVU1CRVJfRk9STUFUUztyZXR1cm4gZnVuY3Rpb24oYixkKXtyZXR1
cm4gbnVsbD09Yj9iOkNkKGIsYS5QQVRURVJOU1swXSxhLkdST1VQX1NFUCxhLkRFQ0lNQUxfU0VQ
LGQpfX1mdW5jdGlvbiBDZChiLGEsYyxkLGUpe2lmKEgoYikpcmV0dXJuIiI7dmFyIGY9MD5iO2I9
TWF0aC5hYnMoYik7dmFyIGc9SW5maW5pdHk9PT1iO2lmKCFnJiYhaXNGaW5pdGUoYikpcmV0dXJu
IiI7dmFyIGg9YisiIixsPSIiLGs9ITEsbj1bXTtnJiYobD0iXHUyMjFlIik7CitpZighZyYmLTEh
PT1oLmluZGV4T2YoImUiKSl7dmFyIHI9aC5tYXRjaCgvKFtcZFwuXSspZSgtPykoXGQrKS8pO3Im
JiItIj09clsyXSYmclszXT5lKzE/Yj0wOihsPWgsaz0hMCl9aWYoZ3x8aykwPGUmJjE+YiYmKGw9
Yi50b0ZpeGVkKGUpLGI9cGFyc2VGbG9hdChsKSk7ZWxzZXtnPShoLnNwbGl0KERkKVsxXXx8IiIp
Lmxlbmd0aDtBKGUpJiYoZT1NYXRoLm1pbihNYXRoLm1heChhLm1pbkZyYWMsZyksYS5tYXhGcmFj
KSk7Yj0rKE1hdGgucm91bmQoKyhiLnRvU3RyaW5nKCkrImUiK2UpKS50b1N0cmluZygpKyJlIist
ZSk7dmFyIGc9KCIiK2IpLnNwbGl0KERkKSxoPWdbMF0sZz1nWzFdfHwiIixyPTAscz1hLmxnU2l6
ZSxtPWEuZ1NpemU7aWYoaC5sZW5ndGg+PXMrbSlmb3Iocj1oLmxlbmd0aC1zLGs9MDtrPHI7aysr
KTA9PT0oci1rKSVtJiYwIT09ayYmKGwrPWMpLGwrPWguY2hhckF0KGspO2ZvcihrPXI7azxoLmxl
bmd0aDtrKyspMD09PShoLmxlbmd0aC1rKSVzJiYwIT09ayYmCisobCs9YyksbCs9aC5jaGFyQXQo
ayk7Zm9yKDtnLmxlbmd0aDxlOylnKz0iMCI7ZSYmIjAiIT09ZSYmKGwrPWQrZy5zdWJzdHIoMCxl
KSl9MD09PWImJihmPSExKTtuLnB1c2goZj9hLm5lZ1ByZTphLnBvc1ByZSxsLGY/YS5uZWdTdWY6
YS5wb3NTdWYpO3JldHVybiBuLmpvaW4oIiIpfWZ1bmN0aW9uIEdiKGIsYSxjKXt2YXIgZD0iIjsw
PmImJihkPSItIixiPS1iKTtmb3IoYj0iIitiO2IubGVuZ3RoPGE7KWI9IjAiK2I7YyYmKGI9Yi5z
dWJzdHIoYi5sZW5ndGgtYSkpO3JldHVybiBkK2J9ZnVuY3Rpb24gWShiLGEsYyxkKXtjPWN8fDA7
cmV0dXJuIGZ1bmN0aW9uKGUpe2U9ZVsiZ2V0IitiXSgpO2lmKDA8Y3x8ZT4tYyllKz1jOzA9PT1l
JiYtMTI9PWMmJihlPTEyKTtyZXR1cm4gR2IoZSxhLGQpfX1mdW5jdGlvbiBIYihiLGEpe3JldHVy
biBmdW5jdGlvbihjLGQpe3ZhciBlPWNbImdldCIrYl0oKSxmPXJiKGE/IlNIT1JUIitiOmIpO3Jl
dHVybiBkW2ZdW2VdfX1mdW5jdGlvbiBFZChiKXt2YXIgYT0KKyhuZXcgRGF0ZShiLDAsMSkpLmdl
dERheSgpO3JldHVybiBuZXcgRGF0ZShiLDAsKDQ+PWE/NToxMiktYSl9ZnVuY3Rpb24gRmQoYil7
cmV0dXJuIGZ1bmN0aW9uKGEpe3ZhciBjPUVkKGEuZ2V0RnVsbFllYXIoKSk7YT0rbmV3IERhdGUo
YS5nZXRGdWxsWWVhcigpLGEuZ2V0TW9udGgoKSxhLmdldERhdGUoKSsoNC1hLmdldERheSgpKSkt
K2M7YT0xK01hdGgucm91bmQoYS82MDQ4RTUpO3JldHVybiBHYihhLGIpfX1mdW5jdGlvbiBqYyhi
LGEpe3JldHVybiAwPj1iLmdldEZ1bGxZZWFyKCk/YS5FUkFTWzBdOmEuRVJBU1sxXX1mdW5jdGlv
biB6ZChiKXtmdW5jdGlvbiBhKGEpe3ZhciBiO2lmKGI9YS5tYXRjaChjKSl7YT1uZXcgRGF0ZSgw
KTt2YXIgZj0wLGc9MCxoPWJbOF0/YS5zZXRVVENGdWxsWWVhcjphLnNldEZ1bGxZZWFyLGw9Yls4
XT9hLnNldFVUQ0hvdXJzOmEuc2V0SG91cnM7Yls5XSYmKGY9VyhiWzldK2JbMTBdKSxnPVcoYls5
XStiWzExXSkpO2guY2FsbChhLFcoYlsxXSksCitXKGJbMl0pLTEsVyhiWzNdKSk7Zj1XKGJbNF18
fDApLWY7Zz1XKGJbNV18fDApLWc7aD1XKGJbNl18fDApO2I9TWF0aC5yb3VuZCgxRTMqcGFyc2VG
bG9hdCgiMC4iKyhiWzddfHwwKSkpO2wuY2FsbChhLGYsZyxoLGIpfXJldHVybiBhfXZhciBjPS9e
KFxkezR9KS0/KFxkXGQpLT8oXGRcZCkoPzpUKFxkXGQpKD86Oj8oXGRcZCkoPzo6PyhcZFxkKSg/
OlwuKFxkKykpPyk/KT8oWnwoWystXSkoXGRcZCk6PyhcZFxkKSk/KT8kLztyZXR1cm4gZnVuY3Rp
b24oYyxlLGYpe3ZhciBnPSIiLGg9W10sbCxrO2U9ZXx8Im1lZGl1bURhdGUiO2U9Yi5EQVRFVElN
RV9GT1JNQVRTW2VdfHxlO0woYykmJihjPWZnLnRlc3QoYyk/VyhjKTphKGMpKTtWKGMpJiYoYz1u
ZXcgRGF0ZShjKSk7aWYoIWFhKGMpfHwhaXNGaW5pdGUoYy5nZXRUaW1lKCkpKXJldHVybiBjO2Zv
cig7ZTspKGs9Z2cuZXhlYyhlKSk/KGg9Y2IoaCxrLDEpLGU9aC5wb3AoKSk6KGgucHVzaChlKSxl
PW51bGwpO3ZhciBuPWMuZ2V0VGltZXpvbmVPZmZzZXQoKTsKK2YmJihuPXhjKGYsYy5nZXRUaW1l
em9uZU9mZnNldCgpKSxjPVBiKGMsZiwhMCkpO20oaCxmdW5jdGlvbihhKXtsPWhnW2FdO2crPWw/
bChjLGIuREFURVRJTUVfRk9STUFUUyxuKTphLnJlcGxhY2UoLyheJ3wnJCkvZywiIikucmVwbGFj
ZSgvJycvZywiJyIpfSk7cmV0dXJuIGd9fWZ1bmN0aW9uIGFnKCl7cmV0dXJuIGZ1bmN0aW9uKGIs
YSl7QShhKSYmKGE9Mik7cmV0dXJuIGRiKGIsYSl9fWZ1bmN0aW9uIGJnKCl7cmV0dXJuIGZ1bmN0
aW9uKGIsYSxjKXthPUluZmluaXR5PT09TWF0aC5hYnMoTnVtYmVyKGEpKT9OdW1iZXIoYSk6Vyhh
KTtpZihpc05hTihhKSlyZXR1cm4gYjtWKGIpJiYoYj1iLnRvU3RyaW5nKCkpO2lmKCFHKGIpJiYh
TChiKSlyZXR1cm4gYjtjPSFjfHxpc05hTihjKT8wOlcoYyk7Yz0wPmMmJmM+PS1iLmxlbmd0aD9i
Lmxlbmd0aCtjOmM7cmV0dXJuIDA8PWE/Yi5zbGljZShjLGMrYSk6MD09PWM/Yi5zbGljZShhLGIu
bGVuZ3RoKTpiLnNsaWNlKE1hdGgubWF4KDAsCitjK2EpLGMpfX1mdW5jdGlvbiBCZChiKXtmdW5j
dGlvbiBhKGEsYyl7Yz1jPy0xOjE7cmV0dXJuIGEubWFwKGZ1bmN0aW9uKGEpe3ZhciBkPTEsaD1Z
YTtpZih6KGEpKWg9YTtlbHNlIGlmKEwoYSkpe2lmKCIrIj09YS5jaGFyQXQoMCl8fCItIj09YS5j
aGFyQXQoMCkpZD0iLSI9PWEuY2hhckF0KDApPy0xOjEsYT1hLnN1YnN0cmluZygxKTtpZigiIiE9
PWEmJihoPWIoYSksaC5jb25zdGFudCkpdmFyIGw9aCgpLGg9ZnVuY3Rpb24oYSl7cmV0dXJuIGFb
bF19fXJldHVybntnZXQ6aCxkZXNjZW5kaW5nOmQqY319KX1mdW5jdGlvbiBjKGEpe3N3aXRjaCh0
eXBlb2YgYSl7Y2FzZSAibnVtYmVyIjpjYXNlICJib29sZWFuIjpjYXNlICJzdHJpbmciOnJldHVy
biEwO2RlZmF1bHQ6cmV0dXJuITF9fXJldHVybiBmdW5jdGlvbihiLGUsZil7aWYoIUVhKGIpKXJl
dHVybiBiO0coZSl8fChlPVtlXSk7MD09PWUubGVuZ3RoJiYoZT1bIisiXSk7dmFyIGc9YShlLGYp
O2I9QXJyYXkucHJvdG90eXBlLm1hcC5jYWxsKGIsCitmdW5jdGlvbihhLGIpe3JldHVybnt2YWx1
ZTphLHByZWRpY2F0ZVZhbHVlczpnLm1hcChmdW5jdGlvbihkKXt2YXIgZT1kLmdldChhKTtkPXR5
cGVvZiBlO2lmKG51bGw9PT1lKWQ9InN0cmluZyIsZT0ibnVsbCI7ZWxzZSBpZigic3RyaW5nIj09
PWQpZT1lLnRvTG93ZXJDYXNlKCk7ZWxzZSBpZigib2JqZWN0Ij09PWQpYTp7aWYoImZ1bmN0aW9u
Ij09PXR5cGVvZiBlLnZhbHVlT2YmJihlPWUudmFsdWVPZigpLGMoZSkpKWJyZWFrIGE7aWYocmMo
ZSkmJihlPWUudG9TdHJpbmcoKSxjKGUpKSlicmVhayBhO2U9Yn1yZXR1cm57dmFsdWU6ZSx0eXBl
OmR9fSl9fSk7Yi5zb3J0KGZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPTAsZD0wLGU9Zy5sZW5ndGg7
ZDxlOysrZCl7dmFyIGM9YS5wcmVkaWNhdGVWYWx1ZXNbZF0sZj1iLnByZWRpY2F0ZVZhbHVlc1tk
XSxtPTA7Yy50eXBlPT09Zi50eXBlP2MudmFsdWUhPT1mLnZhbHVlJiYobT1jLnZhbHVlPGYudmFs
dWU/LTE6MSk6bT1jLnR5cGU8Zi50eXBlPworLTE6MTtpZihjPW0qZ1tkXS5kZXNjZW5kaW5nKWJy
ZWFrfXJldHVybiBjfSk7cmV0dXJuIGI9Yi5tYXAoZnVuY3Rpb24oYSl7cmV0dXJuIGEudmFsdWV9
KX19ZnVuY3Rpb24gTWEoYil7eihiKSYmKGI9e2xpbms6Yn0pO2IucmVzdHJpY3Q9Yi5yZXN0cmlj
dHx8IkFDIjtyZXR1cm4gcmEoYil9ZnVuY3Rpb24gR2QoYixhLGMsZCxlKXt2YXIgZj10aGlzLGc9
W10saD1mLiQkcGFyZW50Rm9ybT1iLnBhcmVudCgpLmNvbnRyb2xsZXIoImZvcm0iKXx8SWI7Zi4k
ZXJyb3I9e307Zi4kJHN1Y2Nlc3M9e307Zi4kcGVuZGluZz10O2YuJG5hbWU9ZShhLm5hbWV8fGEu
bmdGb3JtfHwiIikoYyk7Zi4kZGlydHk9ITE7Zi4kcHJpc3RpbmU9ITA7Zi4kdmFsaWQ9ITA7Zi4k
aW52YWxpZD0hMTtmLiRzdWJtaXR0ZWQ9ITE7aC4kYWRkQ29udHJvbChmKTtmLiRyb2xsYmFja1Zp
ZXdWYWx1ZT1mdW5jdGlvbigpe20oZyxmdW5jdGlvbihhKXthLiRyb2xsYmFja1ZpZXdWYWx1ZSgp
fSl9O2YuJGNvbW1pdFZpZXdWYWx1ZT0KK2Z1bmN0aW9uKCl7bShnLGZ1bmN0aW9uKGEpe2EuJGNv
bW1pdFZpZXdWYWx1ZSgpfSl9O2YuJGFkZENvbnRyb2w9ZnVuY3Rpb24oYSl7UmEoYS4kbmFtZSwi
aW5wdXQiKTtnLnB1c2goYSk7YS4kbmFtZSYmKGZbYS4kbmFtZV09YSl9O2YuJCRyZW5hbWVDb250
cm9sPWZ1bmN0aW9uKGEsYil7dmFyIGM9YS4kbmFtZTtmW2NdPT09YSYmZGVsZXRlIGZbY107Zlti
XT1hO2EuJG5hbWU9Yn07Zi4kcmVtb3ZlQ29udHJvbD1mdW5jdGlvbihhKXthLiRuYW1lJiZmW2Eu
JG5hbWVdPT09YSYmZGVsZXRlIGZbYS4kbmFtZV07bShmLiRwZW5kaW5nLGZ1bmN0aW9uKGIsYyl7
Zi4kc2V0VmFsaWRpdHkoYyxudWxsLGEpfSk7bShmLiRlcnJvcixmdW5jdGlvbihiLGMpe2YuJHNl
dFZhbGlkaXR5KGMsbnVsbCxhKX0pO20oZi4kJHN1Y2Nlc3MsZnVuY3Rpb24oYixjKXtmLiRzZXRW
YWxpZGl0eShjLG51bGwsYSl9KTtiYihnLGEpfTtIZCh7Y3RybDp0aGlzLCRlbGVtZW50OmIsc2V0
OmZ1bmN0aW9uKGEsYiwKK2Mpe3ZhciBkPWFbYl07ZD8tMT09PWQuaW5kZXhPZihjKSYmZC5wdXNo
KGMpOmFbYl09W2NdfSx1bnNldDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YVtiXTtkJiYoYmIoZCxj
KSwwPT09ZC5sZW5ndGgmJmRlbGV0ZSBhW2JdKX0scGFyZW50Rm9ybTpoLCRhbmltYXRlOmR9KTtm
LiRzZXREaXJ0eT1mdW5jdGlvbigpe2QucmVtb3ZlQ2xhc3MoYixWYSk7ZC5hZGRDbGFzcyhiLEpi
KTtmLiRkaXJ0eT0hMDtmLiRwcmlzdGluZT0hMTtoLiRzZXREaXJ0eSgpfTtmLiRzZXRQcmlzdGlu
ZT1mdW5jdGlvbigpe2Quc2V0Q2xhc3MoYixWYSxKYisiIG5nLXN1Ym1pdHRlZCIpO2YuJGRpcnR5
PSExO2YuJHByaXN0aW5lPSEwO2YuJHN1Ym1pdHRlZD0hMTttKGcsZnVuY3Rpb24oYSl7YS4kc2V0
UHJpc3RpbmUoKX0pfTtmLiRzZXRVbnRvdWNoZWQ9ZnVuY3Rpb24oKXttKGcsZnVuY3Rpb24oYSl7
YS4kc2V0VW50b3VjaGVkKCl9KX07Zi4kc2V0U3VibWl0dGVkPWZ1bmN0aW9uKCl7ZC5hZGRDbGFz
cyhiLAorIm5nLXN1Ym1pdHRlZCIpO2YuJHN1Ym1pdHRlZD0hMDtoLiRzZXRTdWJtaXR0ZWQoKX19
ZnVuY3Rpb24ga2MoYil7Yi4kZm9ybWF0dGVycy5wdXNoKGZ1bmN0aW9uKGEpe3JldHVybiBiLiRp
c0VtcHR5KGEpP2E6YS50b1N0cmluZygpfSl9ZnVuY3Rpb24ga2IoYixhLGMsZCxlLGYpe3ZhciBn
PU0oYVswXS50eXBlKTtpZighZS5hbmRyb2lkKXt2YXIgaD0hMTthLm9uKCJjb21wb3NpdGlvbnN0
YXJ0IixmdW5jdGlvbihhKXtoPSEwfSk7YS5vbigiY29tcG9zaXRpb25lbmQiLGZ1bmN0aW9uKCl7
aD0hMTtsKCl9KX12YXIgbD1mdW5jdGlvbihiKXtrJiYoZi5kZWZlci5jYW5jZWwoayksaz1udWxs
KTtpZighaCl7dmFyIGU9YS52YWwoKTtiPWImJmIudHlwZTsicGFzc3dvcmQiPT09Z3x8Yy5uZ1Ry
aW0mJiJmYWxzZSI9PT1jLm5nVHJpbXx8KGU9UihlKSk7KGQuJHZpZXdWYWx1ZSE9PWV8fCIiPT09
ZSYmZC4kJGhhc05hdGl2ZVZhbGlkYXRvcnMpJiZkLiRzZXRWaWV3VmFsdWUoZSxiKX19OworaWYo
ZS5oYXNFdmVudCgiaW5wdXQiKSlhLm9uKCJpbnB1dCIsbCk7ZWxzZXt2YXIgayxuPWZ1bmN0aW9u
KGEsYixjKXtrfHwoaz1mLmRlZmVyKGZ1bmN0aW9uKCl7az1udWxsO2ImJmIudmFsdWU9PT1jfHxs
KGEpfSkpfTthLm9uKCJrZXlkb3duIixmdW5jdGlvbihhKXt2YXIgYj1hLmtleUNvZGU7OTE9PT1i
fHwxNTxiJiYxOT5ifHwzNzw9YiYmNDA+PWJ8fG4oYSx0aGlzLHRoaXMudmFsdWUpfSk7aWYoZS5o
YXNFdmVudCgicGFzdGUiKSlhLm9uKCJwYXN0ZSBjdXQiLG4pfWEub24oImNoYW5nZSIsbCk7ZC4k
cmVuZGVyPWZ1bmN0aW9uKCl7YS52YWwoZC4kaXNFbXB0eShkLiR2aWV3VmFsdWUpPyIiOmQuJHZp
ZXdWYWx1ZSl9fWZ1bmN0aW9uIEtiKGIsYSl7cmV0dXJuIGZ1bmN0aW9uKGMsZCl7dmFyIGUsZjtp
ZihhYShjKSlyZXR1cm4gYztpZihMKGMpKXsnIic9PWMuY2hhckF0KDApJiYnIic9PWMuY2hhckF0
KGMubGVuZ3RoLTEpJiYoYz1jLnN1YnN0cmluZygxLGMubGVuZ3RoLTEpKTsKK2lmKGlnLnRlc3Qo
YykpcmV0dXJuIG5ldyBEYXRlKGMpO2IubGFzdEluZGV4PTA7aWYoZT1iLmV4ZWMoYykpcmV0dXJu
IGUuc2hpZnQoKSxmPWQ/e3l5eXk6ZC5nZXRGdWxsWWVhcigpLE1NOmQuZ2V0TW9udGgoKSsxLGRk
OmQuZ2V0RGF0ZSgpLEhIOmQuZ2V0SG91cnMoKSxtbTpkLmdldE1pbnV0ZXMoKSxzczpkLmdldFNl
Y29uZHMoKSxzc3M6ZC5nZXRNaWxsaXNlY29uZHMoKS8xRTN9Ont5eXl5OjE5NzAsTU06MSxkZDox
LEhIOjAsbW06MCxzczowLHNzczowfSxtKGUsZnVuY3Rpb24oYixjKXtjPGEubGVuZ3RoJiYoZlth
W2NdXT0rYil9KSxuZXcgRGF0ZShmLnl5eXksZi5NTS0xLGYuZGQsZi5ISCxmLm1tLGYuc3N8fDAs
MUUzKmYuc3NzfHwwKX1yZXR1cm4gTmFOfX1mdW5jdGlvbiBsYihiLGEsYyxkKXtyZXR1cm4gZnVu
Y3Rpb24oZSxmLGcsaCxsLGssbil7ZnVuY3Rpb24gcihhKXtyZXR1cm4gYSYmIShhLmdldFRpbWUm
JmEuZ2V0VGltZSgpIT09YS5nZXRUaW1lKCkpfWZ1bmN0aW9uIHMoYSl7cmV0dXJuIHcoYSk/Cith
YShhKT9hOmMoYSk6dH1JZChlLGYsZyxoKTtrYihlLGYsZyxoLGwsayk7dmFyIG09aCYmaC4kb3B0
aW9ucyYmaC4kb3B0aW9ucy50aW1lem9uZSxxO2guJCRwYXJzZXJOYW1lPWI7aC4kcGFyc2Vycy5w
dXNoKGZ1bmN0aW9uKGIpe3JldHVybiBoLiRpc0VtcHR5KGIpP251bGw6YS50ZXN0KGIpPyhiPWMo
YixxKSxtJiYoYj1QYihiLG0pKSxiKTp0fSk7aC4kZm9ybWF0dGVycy5wdXNoKGZ1bmN0aW9uKGEp
e2lmKGEmJiFhYShhKSl0aHJvdyBMYigiZGF0ZWZtdCIsYSk7aWYocihhKSlyZXR1cm4ocT1hKSYm
bSYmKHE9UGIocSxtLCEwKSksbigiZGF0ZSIpKGEsZCxtKTtxPW51bGw7cmV0dXJuIiJ9KTtpZih3
KGcubWluKXx8Zy5uZ01pbil7dmFyIEY7aC4kdmFsaWRhdG9ycy5taW49ZnVuY3Rpb24oYSl7cmV0
dXJuIXIoYSl8fEEoRil8fGMoYSk+PUZ9O2cuJG9ic2VydmUoIm1pbiIsZnVuY3Rpb24oYSl7Rj1z
KGEpO2guJHZhbGlkYXRlKCl9KX1pZih3KGcubWF4KXx8Zy5uZ01heCl7dmFyIHU7CitoLiR2YWxp
ZGF0b3JzLm1heD1mdW5jdGlvbihhKXtyZXR1cm4hcihhKXx8QSh1KXx8YyhhKTw9dX07Zy4kb2Jz
ZXJ2ZSgibWF4IixmdW5jdGlvbihhKXt1PXMoYSk7aC4kdmFsaWRhdGUoKX0pfX19ZnVuY3Rpb24g
SWQoYixhLGMsZCl7KGQuJCRoYXNOYXRpdmVWYWxpZGF0b3JzPUgoYVswXS52YWxpZGl0eSkpJiZk
LiRwYXJzZXJzLnB1c2goZnVuY3Rpb24oYil7dmFyIGM9YS5wcm9wKCJ2YWxpZGl0eSIpfHx7fTty
ZXR1cm4gYy5iYWRJbnB1dCYmIWMudHlwZU1pc21hdGNoP3Q6Yn0pfWZ1bmN0aW9uIEpkKGIsYSxj
LGQsZSl7aWYodyhkKSl7Yj1iKGQpO2lmKCFiLmNvbnN0YW50KXRocm93IEooIm5nTW9kZWwiKSgi
Y29uc3RleHByIixjLGQpO3JldHVybiBiKGEpfXJldHVybiBlfWZ1bmN0aW9uIGxjKGIsYSl7Yj0i
bmdDbGFzcyIrYjtyZXR1cm5bIiRhbmltYXRlIixmdW5jdGlvbihjKXtmdW5jdGlvbiBkKGEsYil7
dmFyIGM9W10sZD0wO2E6Zm9yKDtkPGEubGVuZ3RoO2QrKyl7Zm9yKHZhciBlPQorYVtkXSxuPTA7
bjxiLmxlbmd0aDtuKyspaWYoZT09YltuXSljb250aW51ZSBhO2MucHVzaChlKX1yZXR1cm4gY31m
dW5jdGlvbiBlKGEpe3ZhciBiPVtdO3JldHVybiBHKGEpPyhtKGEsZnVuY3Rpb24oYSl7Yj1iLmNv
bmNhdChlKGEpKX0pLGIpOkwoYSk/YS5zcGxpdCgiICIpOkgoYSk/KG0oYSxmdW5jdGlvbihhLGMp
e2EmJihiPWIuY29uY2F0KGMuc3BsaXQoIiAiKSkpfSksYik6YX1yZXR1cm57cmVzdHJpY3Q6IkFD
IixsaW5rOmZ1bmN0aW9uKGYsZyxoKXtmdW5jdGlvbiBsKGEsYil7dmFyIGM9Zy5kYXRhKCIkY2xh
c3NDb3VudHMiKXx8Z2EoKSxkPVtdO20oYSxmdW5jdGlvbihhKXtpZigwPGJ8fGNbYV0pY1thXT0o
Y1thXXx8MCkrYixjW2FdPT09KygwPGIpJiZkLnB1c2goYSl9KTtnLmRhdGEoIiRjbGFzc0NvdW50
cyIsYyk7cmV0dXJuIGQuam9pbigiICIpfWZ1bmN0aW9uIGsoYil7aWYoITA9PT1hfHxmLiRpbmRl
eCUyPT09YSl7dmFyIGs9ZShifHxbXSk7aWYoIW4pe3ZhciBtPQorbChrLDEpO2guJGFkZENsYXNz
KG0pfWVsc2UgaWYoIWthKGIsbikpe3ZhciBxPWUobiksbT1kKGsscSksaz1kKHEsayksbT1sKG0s
MSksaz1sKGssLTEpO20mJm0ubGVuZ3RoJiZjLmFkZENsYXNzKGcsbSk7ayYmay5sZW5ndGgmJmMu
cmVtb3ZlQ2xhc3MoZyxrKX19bj1pYShiKX12YXIgbjtmLiR3YXRjaChoW2JdLGssITApO2guJG9i
c2VydmUoImNsYXNzIixmdW5jdGlvbihhKXtrKGYuJGV2YWwoaFtiXSkpfSk7Im5nQ2xhc3MiIT09
YiYmZi4kd2F0Y2goIiRpbmRleCIsZnVuY3Rpb24oYyxkKXt2YXIgZz1jJjE7aWYoZyE9PShkJjEp
KXt2YXIgaz1lKGYuJGV2YWwoaFtiXSkpO2c9PT1hPyhnPWwoaywxKSxoLiRhZGRDbGFzcyhnKSk6
KGc9bChrLC0xKSxoLiRyZW1vdmVDbGFzcyhnKSl9fSl9fX1dfWZ1bmN0aW9uIEhkKGIpe2Z1bmN0
aW9uIGEoYSxiKXtiJiYhZlthXT8oay5hZGRDbGFzcyhlLGEpLGZbYV09ITApOiFiJiZmW2FdJiYo
ay5yZW1vdmVDbGFzcyhlLGEpLGZbYV09ITEpfQorZnVuY3Rpb24gYyhiLGMpe2I9Yj8iLSIrQmMo
YiwiLSIpOiIiO2EobWIrYiwhMD09PWMpO2EoS2QrYiwhMT09PWMpfXZhciBkPWIuY3RybCxlPWIu
JGVsZW1lbnQsZj17fSxnPWIuc2V0LGg9Yi51bnNldCxsPWIucGFyZW50Rm9ybSxrPWIuJGFuaW1h
dGU7ZltLZF09IShmW21iXT1lLmhhc0NsYXNzKG1iKSk7ZC4kc2V0VmFsaWRpdHk9ZnVuY3Rpb24o
YixlLGYpe2U9PT10PyhkLiRwZW5kaW5nfHwoZC4kcGVuZGluZz17fSksZyhkLiRwZW5kaW5nLGIs
ZikpOihkLiRwZW5kaW5nJiZoKGQuJHBlbmRpbmcsYixmKSxMZChkLiRwZW5kaW5nKSYmKGQuJHBl
bmRpbmc9dCkpO2FiKGUpP2U/KGgoZC4kZXJyb3IsYixmKSxnKGQuJCRzdWNjZXNzLGIsZikpOihn
KGQuJGVycm9yLGIsZiksaChkLiQkc3VjY2VzcyxiLGYpKTooaChkLiRlcnJvcixiLGYpLGgoZC4k
JHN1Y2Nlc3MsYixmKSk7ZC4kcGVuZGluZz8oYShNZCwhMCksZC4kdmFsaWQ9ZC4kaW52YWxpZD10
LGMoIiIsbnVsbCkpOihhKE1kLAorITEpLGQuJHZhbGlkPUxkKGQuJGVycm9yKSxkLiRpbnZhbGlk
PSFkLiR2YWxpZCxjKCIiLGQuJHZhbGlkKSk7ZT1kLiRwZW5kaW5nJiZkLiRwZW5kaW5nW2JdP3Q6
ZC4kZXJyb3JbYl0/ITE6ZC4kJHN1Y2Nlc3NbYl0/ITA6bnVsbDtjKGIsZSk7bC4kc2V0VmFsaWRp
dHkoYixlLGQpfX1mdW5jdGlvbiBMZChiKXtpZihiKWZvcih2YXIgYSBpbiBiKWlmKGIuaGFzT3du
UHJvcGVydHkoYSkpcmV0dXJuITE7cmV0dXJuITB9dmFyIGpnPS9eXC8oLispXC8oW2Etel0qKSQv
LE09ZnVuY3Rpb24oYil7cmV0dXJuIEwoYik/Yi50b0xvd2VyQ2FzZSgpOmJ9LFhhPU9iamVjdC5w
cm90b3R5cGUuaGFzT3duUHJvcGVydHkscmI9ZnVuY3Rpb24oYil7cmV0dXJuIEwoYik/Yi50b1Vw
cGVyQ2FzZSgpOmJ9LFVhLHksbGEsemE9W10uc2xpY2UsTWY9W10uc3BsaWNlLGtnPVtdLnB1c2gs
c2E9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyxzYz1PYmplY3QuZ2V0UHJvdG90eXBlT2YsRmE9
SigibmciKSxjYT0KK08uYW5ndWxhcnx8KE8uYW5ndWxhcj17fSksZ2IsbmI9MDtVYT1VLmRvY3Vt
ZW50TW9kZTt2LiRpbmplY3Q9W107WWEuJGluamVjdD1bXTt2YXIgRz1BcnJheS5pc0FycmF5LHVj
PS9eXFtvYmplY3QgKFVpbnQ4KENsYW1wZWQpPyl8KFVpbnQxNil8KFVpbnQzMil8KEludDgpfChJ
bnQxNil8KEludDMyKXwoRmxvYXQoMzIpfCg2NCkpQXJyYXlcXSQvLFI9ZnVuY3Rpb24oYil7cmV0
dXJuIEwoYik/Yi50cmltKCk6Yn0sdWQ9ZnVuY3Rpb24oYil7cmV0dXJuIGIucmVwbGFjZSgvKFst
KClcW1xde30rPyouJFxefCw6IzwhXFxdKS9nLCJcXCQxIikucmVwbGFjZSgvXHgwOC9nLCJcXHgw
OCIpfSxmYj1mdW5jdGlvbigpe2lmKHcoZmIuaXNBY3RpdmVfKSlyZXR1cm4gZmIuaXNBY3RpdmVf
O3ZhciBiPSEoIVUucXVlcnlTZWxlY3RvcigiW25nLWNzcF0iKSYmIVUucXVlcnlTZWxlY3Rvcigi
W2RhdGEtbmctY3NwXSIpKTtpZighYil0cnl7bmV3IEZ1bmN0aW9uKCIiKX1jYXRjaChhKXtiPSEw
fXJldHVybiBmYi5pc0FjdGl2ZV89CitifSxwYj1mdW5jdGlvbigpe2lmKHcocGIubmFtZV8pKXJl
dHVybiBwYi5uYW1lXzt2YXIgYixhLGM9T2EubGVuZ3RoLGQsZTtmb3IoYT0wO2E8YzsrK2EpaWYo
ZD1PYVthXSxiPVUucXVlcnlTZWxlY3RvcigiWyIrZC5yZXBsYWNlKCI6IiwiXFw6IikrImpxXSIp
KXtlPWIuZ2V0QXR0cmlidXRlKGQrImpxIik7YnJlYWt9cmV0dXJuIHBiLm5hbWVfPWV9LE9hPVsi
bmctIiwiZGF0YS1uZy0iLCJuZzoiLCJ4LW5nLSJdLGJlPS9bQS1aXS9nLENjPSExLFJiLHFhPTEs
TmE9MyxmZT17ZnVsbDoiMS40LjMiLG1ham9yOjEsbWlub3I6NCxkb3Q6Myxjb2RlTmFtZToiZm9h
bS1hY2NlbGVyYXRpb24ifTtRLmV4cGFuZG89Im5nMzM5Ijt2YXIgaWI9US5jYWNoZT17fSxEZj0x
O1EuX2RhdGE9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuY2FjaGVbYlt0aGlzLmV4cGFuZG9dXXx8
e319O3ZhciB5Zj0vKFtcOlwtXF9dKyguKSkvZyx6Zj0vXm1veihbQS1aXSkvLGxnPXttb3VzZWxl
YXZlOiJtb3VzZW91dCIsCittb3VzZWVudGVyOiJtb3VzZW92ZXIifSxVYj1KKCJqcUxpdGUiKSxD
Zj0vXjwoXHcrKVxzKlwvPz4oPzo8XC9cMT58KSQvLFRiPS88fCYjP1x3KzsvLEFmPS88KFtcdzpd
KykvLEJmPS88KD8hYXJlYXxicnxjb2x8ZW1iZWR8aHJ8aW1nfGlucHV0fGxpbmt8bWV0YXxwYXJh
bSkoKFtcdzpdKylbXj5dKilcLz4vZ2ksbmE9e29wdGlvbjpbMSwnPHNlbGVjdCBtdWx0aXBsZT0i
bXVsdGlwbGUiPicsIjwvc2VsZWN0PiJdLHRoZWFkOlsxLCI8dGFibGU+IiwiPC90YWJsZT4iXSxj
b2w6WzIsIjx0YWJsZT48Y29sZ3JvdXA+IiwiPC9jb2xncm91cD48L3RhYmxlPiJdLHRyOlsyLCI8
dGFibGU+PHRib2R5PiIsIjwvdGJvZHk+PC90YWJsZT4iXSx0ZDpbMywiPHRhYmxlPjx0Ym9keT48
dHI+IiwiPC90cj48L3Rib2R5PjwvdGFibGU+Il0sX2RlZmF1bHQ6WzAsIiIsIiJdfTtuYS5vcHRn
cm91cD1uYS5vcHRpb247bmEudGJvZHk9bmEudGZvb3Q9bmEuY29sZ3JvdXA9bmEuY2FwdGlvbj1u
YS50aGVhZDsKK25hLnRoPW5hLnRkO3ZhciBQYT1RLnByb3RvdHlwZT17cmVhZHk6ZnVuY3Rpb24o
Yil7ZnVuY3Rpb24gYSgpe2N8fChjPSEwLGIoKSl9dmFyIGM9ITE7ImNvbXBsZXRlIj09PVUucmVh
ZHlTdGF0ZT9zZXRUaW1lb3V0KGEpOih0aGlzLm9uKCJET01Db250ZW50TG9hZGVkIixhKSxRKE8p
Lm9uKCJsb2FkIixhKSl9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7dmFyIGI9W107bSh0aGlzLGZ1bmN0
aW9uKGEpe2IucHVzaCgiIithKX0pO3JldHVybiJbIitiLmpvaW4oIiwgIikrIl0ifSxlcTpmdW5j
dGlvbihiKXtyZXR1cm4gMDw9Yj95KHRoaXNbYl0pOnkodGhpc1t0aGlzLmxlbmd0aCtiXSl9LGxl
bmd0aDowLHB1c2g6a2csc29ydDpbXS5zb3J0LHNwbGljZTpbXS5zcGxpY2V9LEFiPXt9O20oIm11
bHRpcGxlIHNlbGVjdGVkIGNoZWNrZWQgZGlzYWJsZWQgcmVhZE9ubHkgcmVxdWlyZWQgb3BlbiIu
c3BsaXQoIiAiKSxmdW5jdGlvbihiKXtBYltNKGIpXT1ifSk7dmFyIFRjPXt9O20oImlucHV0IHNl
bGVjdCBvcHRpb24gdGV4dGFyZWEgYnV0dG9uIGZvcm0gZGV0YWlscyIuc3BsaXQoIiAiKSwKK2Z1
bmN0aW9uKGIpe1RjW2JdPSEwfSk7dmFyIFVjPXtuZ01pbmxlbmd0aDoibWlubGVuZ3RoIixuZ01h
eGxlbmd0aDoibWF4bGVuZ3RoIixuZ01pbjoibWluIixuZ01heDoibWF4IixuZ1BhdHRlcm46InBh
dHRlcm4ifTttKHtkYXRhOldiLHJlbW92ZURhdGE6dWIsaGFzRGF0YTpmdW5jdGlvbihiKXtmb3Io
dmFyIGEgaW4gaWJbYi5uZzMzOV0pcmV0dXJuITA7cmV0dXJuITF9fSxmdW5jdGlvbihiLGEpe1Fb
YV09Yn0pO20oe2RhdGE6V2IsaW5oZXJpdGVkRGF0YTp6YixzY29wZTpmdW5jdGlvbihiKXtyZXR1
cm4geS5kYXRhKGIsIiRzY29wZSIpfHx6YihiLnBhcmVudE5vZGV8fGIsWyIkaXNvbGF0ZVNjb3Bl
IiwiJHNjb3BlIl0pfSxpc29sYXRlU2NvcGU6ZnVuY3Rpb24oYil7cmV0dXJuIHkuZGF0YShiLCIk
aXNvbGF0ZVNjb3BlIil8fHkuZGF0YShiLCIkaXNvbGF0ZVNjb3BlTm9UZW1wbGF0ZSIpfSxjb250
cm9sbGVyOlFjLGluamVjdG9yOmZ1bmN0aW9uKGIpe3JldHVybiB6YihiLAorIiRpbmplY3RvciIp
fSxyZW1vdmVBdHRyOmZ1bmN0aW9uKGIsYSl7Yi5yZW1vdmVBdHRyaWJ1dGUoYSl9LGhhc0NsYXNz
OndiLGNzczpmdW5jdGlvbihiLGEsYyl7YT1oYihhKTtpZih3KGMpKWIuc3R5bGVbYV09YztlbHNl
IHJldHVybiBiLnN0eWxlW2FdfSxhdHRyOmZ1bmN0aW9uKGIsYSxjKXt2YXIgZD1iLm5vZGVUeXBl
O2lmKGQhPT1OYSYmMiE9PWQmJjghPT1kKWlmKGQ9TShhKSxBYltkXSlpZih3KGMpKWM/KGJbYV09
ITAsYi5zZXRBdHRyaWJ1dGUoYSxkKSk6KGJbYV09ITEsYi5yZW1vdmVBdHRyaWJ1dGUoZCkpO2Vs
c2UgcmV0dXJuIGJbYV18fChiLmF0dHJpYnV0ZXMuZ2V0TmFtZWRJdGVtKGEpfHx2KS5zcGVjaWZp
ZWQ/ZDp0O2Vsc2UgaWYodyhjKSliLnNldEF0dHJpYnV0ZShhLGMpO2Vsc2UgaWYoYi5nZXRBdHRy
aWJ1dGUpcmV0dXJuIGI9Yi5nZXRBdHRyaWJ1dGUoYSwyKSxudWxsPT09Yj90OmJ9LHByb3A6ZnVu
Y3Rpb24oYixhLGMpe2lmKHcoYykpYlthXT1jO2Vsc2UgcmV0dXJuIGJbYV19LAordGV4dDpmdW5j
dGlvbigpe2Z1bmN0aW9uIGIoYSxiKXtpZihBKGIpKXt2YXIgZD1hLm5vZGVUeXBlO3JldHVybiBk
PT09cWF8fGQ9PT1OYT9hLnRleHRDb250ZW50OiIifWEudGV4dENvbnRlbnQ9Yn1iLiRkdj0iIjty
ZXR1cm4gYn0oKSx2YWw6ZnVuY3Rpb24oYixhKXtpZihBKGEpKXtpZihiLm11bHRpcGxlJiYic2Vs
ZWN0Ij09PXRhKGIpKXt2YXIgYz1bXTttKGIub3B0aW9ucyxmdW5jdGlvbihhKXthLnNlbGVjdGVk
JiZjLnB1c2goYS52YWx1ZXx8YS50ZXh0KX0pO3JldHVybiAwPT09Yy5sZW5ndGg/bnVsbDpjfXJl
dHVybiBiLnZhbHVlfWIudmFsdWU9YX0saHRtbDpmdW5jdGlvbihiLGEpe2lmKEEoYSkpcmV0dXJu
IGIuaW5uZXJIVE1MO3RiKGIsITApO2IuaW5uZXJIVE1MPWF9LGVtcHR5OlJjfSxmdW5jdGlvbihi
LGEpe1EucHJvdG90eXBlW2FdPWZ1bmN0aW9uKGEsZCl7dmFyIGUsZixnPXRoaXMubGVuZ3RoO2lm
KGIhPT1SYyYmKDI9PWIubGVuZ3RoJiZiIT09d2ImJmIhPT1RYz8KK2E6ZCk9PT10KXtpZihIKGEp
KXtmb3IoZT0wO2U8ZztlKyspaWYoYj09PVdiKWIodGhpc1tlXSxhKTtlbHNlIGZvcihmIGluIGEp
Yih0aGlzW2VdLGYsYVtmXSk7cmV0dXJuIHRoaXN9ZT1iLiRkdjtnPWU9PT10P01hdGgubWluKGcs
MSk6Zztmb3IoZj0wO2Y8ZztmKyspe3ZhciBoPWIodGhpc1tmXSxhLGQpO2U9ZT9lK2g6aH1yZXR1
cm4gZX1mb3IoZT0wO2U8ZztlKyspYih0aGlzW2VdLGEsZCk7cmV0dXJuIHRoaXN9fSk7bSh7cmVt
b3ZlRGF0YTp1YixvbjpmdW5jdGlvbiBhKGMsZCxlLGYpe2lmKHcoZikpdGhyb3cgVWIoIm9uYXJn
cyIpO2lmKE1jKGMpKXt2YXIgZz12YihjLCEwKTtmPWcuZXZlbnRzO3ZhciBoPWcuaGFuZGxlO2h8
fChoPWcuaGFuZGxlPUdmKGMsZikpO2Zvcih2YXIgZz0wPD1kLmluZGV4T2YoIiAiKT9kLnNwbGl0
KCIgIik6W2RdLGw9Zy5sZW5ndGg7bC0tOyl7ZD1nW2xdO3ZhciBrPWZbZF07a3x8KGZbZF09W10s
Im1vdXNlZW50ZXIiPT09ZHx8Im1vdXNlbGVhdmUiPT09CitkP2EoYyxsZ1tkXSxmdW5jdGlvbihh
KXt2YXIgYz1hLnJlbGF0ZWRUYXJnZXQ7YyYmKGM9PT10aGlzfHx0aGlzLmNvbnRhaW5zKGMpKXx8
aChhLGQpfSk6IiRkZXN0cm95IiE9PWQmJmMuYWRkRXZlbnRMaXN0ZW5lcihkLGgsITEpLGs9Zltk
XSk7ay5wdXNoKGUpfX19LG9mZjpQYyxvbmU6ZnVuY3Rpb24oYSxjLGQpe2E9eShhKTthLm9uKGMs
ZnVuY3Rpb24gZigpe2Eub2ZmKGMsZCk7YS5vZmYoYyxmKX0pO2Eub24oYyxkKX0scmVwbGFjZVdp
dGg6ZnVuY3Rpb24oYSxjKXt2YXIgZCxlPWEucGFyZW50Tm9kZTt0YihhKTttKG5ldyBRKGMpLGZ1
bmN0aW9uKGMpe2Q/ZS5pbnNlcnRCZWZvcmUoYyxkLm5leHRTaWJsaW5nKTplLnJlcGxhY2VDaGls
ZChjLGEpO2Q9Y30pfSxjaGlsZHJlbjpmdW5jdGlvbihhKXt2YXIgYz1bXTttKGEuY2hpbGROb2Rl
cyxmdW5jdGlvbihhKXthLm5vZGVUeXBlPT09cWEmJmMucHVzaChhKX0pO3JldHVybiBjfSxjb250
ZW50czpmdW5jdGlvbihhKXtyZXR1cm4gYS5jb250ZW50RG9jdW1lbnR8fAorYS5jaGlsZE5vZGVz
fHxbXX0sYXBwZW5kOmZ1bmN0aW9uKGEsYyl7dmFyIGQ9YS5ub2RlVHlwZTtpZihkPT09cWF8fDEx
PT09ZCl7Yz1uZXcgUShjKTtmb3IodmFyIGQ9MCxlPWMubGVuZ3RoO2Q8ZTtkKyspYS5hcHBlbmRD
aGlsZChjW2RdKX19LHByZXBlbmQ6ZnVuY3Rpb24oYSxjKXtpZihhLm5vZGVUeXBlPT09cWEpe3Zh
ciBkPWEuZmlyc3RDaGlsZDttKG5ldyBRKGMpLGZ1bmN0aW9uKGMpe2EuaW5zZXJ0QmVmb3JlKGMs
ZCl9KX19LHdyYXA6ZnVuY3Rpb24oYSxjKXtjPXkoYykuZXEoMCkuY2xvbmUoKVswXTt2YXIgZD1h
LnBhcmVudE5vZGU7ZCYmZC5yZXBsYWNlQ2hpbGQoYyxhKTtjLmFwcGVuZENoaWxkKGEpfSxyZW1v
dmU6WGIsZGV0YWNoOmZ1bmN0aW9uKGEpe1hiKGEsITApfSxhZnRlcjpmdW5jdGlvbihhLGMpe3Zh
ciBkPWEsZT1hLnBhcmVudE5vZGU7Yz1uZXcgUShjKTtmb3IodmFyIGY9MCxnPWMubGVuZ3RoO2Y8
ZztmKyspe3ZhciBoPWNbZl07ZS5pbnNlcnRCZWZvcmUoaCwKK2QubmV4dFNpYmxpbmcpO2Q9aH19
LGFkZENsYXNzOnliLHJlbW92ZUNsYXNzOnhiLHRvZ2dsZUNsYXNzOmZ1bmN0aW9uKGEsYyxkKXtj
JiZtKGMuc3BsaXQoIiAiKSxmdW5jdGlvbihjKXt2YXIgZj1kO0EoZikmJihmPSF3YihhLGMpKTso
Zj95Yjp4YikoYSxjKX0pfSxwYXJlbnQ6ZnVuY3Rpb24oYSl7cmV0dXJuKGE9YS5wYXJlbnROb2Rl
KSYmMTEhPT1hLm5vZGVUeXBlP2E6bnVsbH0sbmV4dDpmdW5jdGlvbihhKXtyZXR1cm4gYS5uZXh0
RWxlbWVudFNpYmxpbmd9LGZpbmQ6ZnVuY3Rpb24oYSxjKXtyZXR1cm4gYS5nZXRFbGVtZW50c0J5
VGFnTmFtZT9hLmdldEVsZW1lbnRzQnlUYWdOYW1lKGMpOltdfSxjbG9uZTpWYix0cmlnZ2VySGFu
ZGxlcjpmdW5jdGlvbihhLGMsZCl7dmFyIGUsZixnPWMudHlwZXx8YyxoPXZiKGEpO2lmKGg9KGg9
aCYmaC5ldmVudHMpJiZoW2ddKWU9e3ByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7dGhpcy5kZWZh
dWx0UHJldmVudGVkPSEwfSxpc0RlZmF1bHRQcmV2ZW50ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hMD09
PQordGhpcy5kZWZhdWx0UHJldmVudGVkfSxzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246ZnVuY3Rp
b24oKXt0aGlzLmltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZD0hMH0saXNJbW1lZGlhdGVQcm9w
YWdhdGlvblN0b3BwZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hMD09PXRoaXMuaW1tZWRpYXRlUHJvcGFn
YXRpb25TdG9wcGVkfSxzdG9wUHJvcGFnYXRpb246dix0eXBlOmcsdGFyZ2V0OmF9LGMudHlwZSYm
KGU9UChlLGMpKSxjPWlhKGgpLGY9ZD9bZV0uY29uY2F0KGQpOltlXSxtKGMsZnVuY3Rpb24oYyl7
ZS5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCgpfHxjLmFwcGx5KGEsZil9KX19LGZ1bmN0
aW9uKGEsYyl7US5wcm90b3R5cGVbY109ZnVuY3Rpb24oYyxlLGYpe2Zvcih2YXIgZyxoPTAsbD10
aGlzLmxlbmd0aDtoPGw7aCsrKUEoZyk/KGc9YSh0aGlzW2hdLGMsZSxmKSx3KGcpJiYoZz15KGcp
KSk6T2MoZyxhKHRoaXNbaF0sYyxlLGYpKTtyZXR1cm4gdyhnKT9nOnRoaXN9O1EucHJvdG90eXBl
LmJpbmQ9CitRLnByb3RvdHlwZS5vbjtRLnByb3RvdHlwZS51bmJpbmQ9US5wcm90b3R5cGUub2Zm
fSk7U2EucHJvdG90eXBlPXtwdXQ6ZnVuY3Rpb24oYSxjKXt0aGlzW0dhKGEsdGhpcy5uZXh0VWlk
KV09Y30sZ2V0OmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzW0dhKGEsdGhpcy5uZXh0VWlkKV19LHJl
bW92ZTpmdW5jdGlvbihhKXt2YXIgYz10aGlzW2E9R2EoYSx0aGlzLm5leHRVaWQpXTtkZWxldGUg
dGhpc1thXTtyZXR1cm4gY319O3ZhciB3Zj1bZnVuY3Rpb24oKXt0aGlzLiRnZXQ9W2Z1bmN0aW9u
KCl7cmV0dXJuIFNhfV19XSxXYz0vXmZ1bmN0aW9uXHMqW15cKF0qXChccyooW15cKV0qKVwpL20s
bWc9LywvLG5nPS9eXHMqKF8/KShcUys/KVwxXHMqJC8sVmM9LygoXC9cLy4qJCl8KFwvXCpbXHNc
U10qP1wqXC8pKS9tZyxIYT1KKCIkaW5qZWN0b3IiKTtlYi4kJGFubm90YXRlPWZ1bmN0aW9uKGEs
YyxkKXt2YXIgZTtpZigiZnVuY3Rpb24iPT09dHlwZW9mIGEpe2lmKCEoZT1hLiRpbmplY3QpKXtl
PQorW107aWYoYS5sZW5ndGgpe2lmKGMpdGhyb3cgTChkKSYmZHx8KGQ9YS5uYW1lfHxIZihhKSks
SGEoInN0cmljdGRpIixkKTtjPWEudG9TdHJpbmcoKS5yZXBsYWNlKFZjLCIiKTtjPWMubWF0Y2go
V2MpO20oY1sxXS5zcGxpdChtZyksZnVuY3Rpb24oYSl7YS5yZXBsYWNlKG5nLGZ1bmN0aW9uKGEs
YyxkKXtlLnB1c2goZCl9KX0pfWEuJGluamVjdD1lfX1lbHNlIEcoYSk/KGM9YS5sZW5ndGgtMSxR
YShhW2NdLCJmbiIpLGU9YS5zbGljZSgwLGMpKTpRYShhLCJmbiIsITApO3JldHVybiBlfTt2YXIg
TmQ9SigiJGFuaW1hdGUiKSxVZT1mdW5jdGlvbigpe3RoaXMuJGdldD1bIiRxIiwiJCRyQUYiLGZ1
bmN0aW9uKGEsYyl7ZnVuY3Rpb24gZCgpe31kLmFsbD12O2QuY2hhaW49djtkLnByb3RvdHlwZT17
ZW5kOnYsY2FuY2VsOnYscmVzdW1lOnYscGF1c2U6dixjb21wbGV0ZTp2LHRoZW46ZnVuY3Rpb24o
ZCxmKXtyZXR1cm4gYShmdW5jdGlvbihhKXtjKGZ1bmN0aW9uKCl7YSgpfSl9KS50aGVuKGQsCitm
KX19O3JldHVybiBkfV19LFRlPWZ1bmN0aW9uKCl7dmFyIGE9bmV3IFNhLGM9W107dGhpcy4kZ2V0
PVsiJCRBbmltYXRlUnVubmVyIiwiJHJvb3RTY29wZSIsZnVuY3Rpb24oZCxlKXtmdW5jdGlvbiBm
KGQsZixsKXt2YXIgaz1hLmdldChkKTtrfHwoYS5wdXQoZCxrPXt9KSxjLnB1c2goZCkpO2YmJm0o
Zi5zcGxpdCgiICIpLGZ1bmN0aW9uKGEpe2EmJihrW2FdPSEwKX0pO2wmJm0obC5zcGxpdCgiICIp
LGZ1bmN0aW9uKGEpe2EmJihrW2FdPSExKX0pOzE8Yy5sZW5ndGh8fGUuJCRwb3N0RGlnZXN0KGZ1
bmN0aW9uKCl7bShjLGZ1bmN0aW9uKGMpe3ZhciBkPWEuZ2V0KGMpO2lmKGQpe3ZhciBlPUlmKGMu
YXR0cigiY2xhc3MiKSksZj0iIixnPSIiO20oZCxmdW5jdGlvbihhLGMpe2EhPT0hIWVbY10mJihh
P2YrPShmLmxlbmd0aD8iICI6IiIpK2M6Zys9KGcubGVuZ3RoPyIgIjoiIikrYyl9KTttKGMsZnVu
Y3Rpb24oYSl7ZiYmeWIoYSxmKTtnJiZ4YihhLGcpfSk7YS5yZW1vdmUoYyl9fSk7CitjLmxlbmd0
aD0wfSl9cmV0dXJue2VuYWJsZWQ6dixvbjp2LG9mZjp2LHBpbjp2LHB1c2g6ZnVuY3Rpb24oYSxj
LGUsayl7ayYmaygpO2U9ZXx8e307ZS5mcm9tJiZhLmNzcyhlLmZyb20pO2UudG8mJmEuY3NzKGUu
dG8pOyhlLmFkZENsYXNzfHxlLnJlbW92ZUNsYXNzKSYmZihhLGUuYWRkQ2xhc3MsZS5yZW1vdmVD
bGFzcyk7cmV0dXJuIG5ldyBkfX19XX0sU2U9WyIkcHJvdmlkZSIsZnVuY3Rpb24oYSl7dmFyIGM9
dGhpczt0aGlzLiQkcmVnaXN0ZXJlZEFuaW1hdGlvbnM9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlz
LnJlZ2lzdGVyPWZ1bmN0aW9uKGQsZSl7aWYoZCYmIi4iIT09ZC5jaGFyQXQoMCkpdGhyb3cgTmQo
Im5vdGNzZWwiLGQpO3ZhciBmPWQrIi1hbmltYXRpb24iO2MuJCRyZWdpc3RlcmVkQW5pbWF0aW9u
c1tkLnN1YnN0cigxKV09ZjthLmZhY3RvcnkoZixlKX07dGhpcy5jbGFzc05hbWVGaWx0ZXI9ZnVu
Y3Rpb24oYSl7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgmJih0aGlzLiQkY2xhc3NOYW1lRmlsdGVy
PQorYSBpbnN0YW5jZW9mIFJlZ0V4cD9hOm51bGwpJiYvKFxzK3xcLyluZy1hbmltYXRlKFxzK3xc
LykvLnRlc3QodGhpcy4kJGNsYXNzTmFtZUZpbHRlci50b1N0cmluZygpKSl0aHJvdyBOZCgibm9u
Z2NscyIsIm5nLWFuaW1hdGUiKTtyZXR1cm4gdGhpcy4kJGNsYXNzTmFtZUZpbHRlcn07dGhpcy4k
Z2V0PVsiJCRhbmltYXRlUXVldWUiLGZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGMoYSxkLGUpe2lmKGUp
e3ZhciBsO2E6e2ZvcihsPTA7bDxlLmxlbmd0aDtsKyspe3ZhciBrPWVbbF07aWYoMT09PWsubm9k
ZVR5cGUpe2w9azticmVhayBhfX1sPXZvaWQgMH0hbHx8bC5wYXJlbnROb2RlfHxsLnByZXZpb3Vz
RWxlbWVudFNpYmxpbmd8fChlPW51bGwpfWU/ZS5hZnRlcihhKTpkLnByZXBlbmQoYSl9cmV0dXJu
e29uOmEub24sb2ZmOmEub2ZmLHBpbjphLnBpbixlbmFibGVkOmEuZW5hYmxlZCxjYW5jZWw6ZnVu
Y3Rpb24oYSl7YS5lbmQmJmEuZW5kKCl9LGVudGVyOmZ1bmN0aW9uKGYsZyxoLGwpe2c9CitnJiZ5
KGcpO2g9aCYmeShoKTtnPWd8fGgucGFyZW50KCk7YyhmLGcsaCk7cmV0dXJuIGEucHVzaChmLCJl
bnRlciIsSWEobCkpfSxtb3ZlOmZ1bmN0aW9uKGYsZyxoLGwpe2c9ZyYmeShnKTtoPWgmJnkoaCk7
Zz1nfHxoLnBhcmVudCgpO2MoZixnLGgpO3JldHVybiBhLnB1c2goZiwibW92ZSIsSWEobCkpfSxs
ZWF2ZTpmdW5jdGlvbihjLGUpe3JldHVybiBhLnB1c2goYywibGVhdmUiLElhKGUpLGZ1bmN0aW9u
KCl7Yy5yZW1vdmUoKX0pfSxhZGRDbGFzczpmdW5jdGlvbihjLGUsaCl7aD1JYShoKTtoLmFkZENs
YXNzPWpiKGguYWRkY2xhc3MsZSk7cmV0dXJuIGEucHVzaChjLCJhZGRDbGFzcyIsaCl9LHJlbW92
ZUNsYXNzOmZ1bmN0aW9uKGMsZSxoKXtoPUlhKGgpO2gucmVtb3ZlQ2xhc3M9amIoaC5yZW1vdmVD
bGFzcyxlKTtyZXR1cm4gYS5wdXNoKGMsInJlbW92ZUNsYXNzIixoKX0sc2V0Q2xhc3M6ZnVuY3Rp
b24oYyxlLGgsbCl7bD1JYShsKTtsLmFkZENsYXNzPWpiKGwuYWRkQ2xhc3MsCitlKTtsLnJlbW92
ZUNsYXNzPWpiKGwucmVtb3ZlQ2xhc3MsaCk7cmV0dXJuIGEucHVzaChjLCJzZXRDbGFzcyIsbCl9
LGFuaW1hdGU6ZnVuY3Rpb24oYyxlLGgsbCxrKXtrPUlhKGspO2suZnJvbT1rLmZyb20/UChrLmZy
b20sZSk6ZTtrLnRvPWsudG8/UChrLnRvLGgpOmg7ay50ZW1wQ2xhc3Nlcz1qYihrLnRlbXBDbGFz
c2VzLGx8fCJuZy1pbmxpbmUtYW5pbWF0ZSIpO3JldHVybiBhLnB1c2goYywiYW5pbWF0ZSIsayl9
fX1dfV0sZWE9SigiJGNvbXBpbGUiKTtFYy4kaW5qZWN0PVsiJHByb3ZpZGUiLCIkJHNhbml0aXpl
VXJpUHJvdmlkZXIiXTt2YXIgWmM9L14oKD86eHxkYXRhKVtcOlwtX10pL2ksTmY9SigiJGNvbnRy
b2xsZXIiKSxYYz0vXihcUyspKFxzK2FzXHMrKFx3KykpPyQvLGNkPSJhcHBsaWNhdGlvbi9qc29u
IixhYz17IkNvbnRlbnQtVHlwZSI6Y2QrIjtjaGFyc2V0PXV0Zi04In0sUGY9L15cW3xeXHsoPyFc
eykvLFFmPXsiWyI6L10kLywieyI6L30kL30sT2Y9L15cKVxdXH0nLD9cbi8sCitLYT1jYS4kaW50
ZXJwb2xhdGVNaW5FcnI9SigiJGludGVycG9sYXRlIik7S2EudGhyb3dOb2NvbmNhdD1mdW5jdGlv
bihhKXt0aHJvdyBLYSgibm9jb25jYXQiLGEpO307S2EuaW50ZXJyPWZ1bmN0aW9uKGEsYyl7cmV0
dXJuIEthKCJpbnRlcnIiLGEsYy50b1N0cmluZygpKX07dmFyIG9nPS9eKFteXD8jXSopKFw/KFte
I10qKSk/KCMoLiopKT8kLyxUZj17aHR0cDo4MCxodHRwczo0NDMsZnRwOjIxfSxDYj1KKCIkbG9j
YXRpb24iKSxwZz17JCRodG1sNTohMSwkJHJlcGxhY2U6ITEsYWJzVXJsOkRiKCIkJGFic1VybCIp
LHVybDpmdW5jdGlvbihhKXtpZihBKGEpKXJldHVybiB0aGlzLiQkdXJsO3ZhciBjPW9nLmV4ZWMo
YSk7KGNbMV18fCIiPT09YSkmJnRoaXMucGF0aChkZWNvZGVVUklDb21wb25lbnQoY1sxXSkpOyhj
WzJdfHxjWzFdfHwiIj09PWEpJiZ0aGlzLnNlYXJjaChjWzNdfHwiIik7dGhpcy5oYXNoKGNbNV18
fCIiKTtyZXR1cm4gdGhpc30scHJvdG9jb2w6RGIoIiQkcHJvdG9jb2wiKSwKK2hvc3Q6RGIoIiQk
aG9zdCIpLHBvcnQ6RGIoIiQkcG9ydCIpLHBhdGg6a2QoIiQkcGF0aCIsZnVuY3Rpb24oYSl7YT1u
dWxsIT09YT9hLnRvU3RyaW5nKCk6IiI7cmV0dXJuIi8iPT1hLmNoYXJBdCgwKT9hOiIvIithfSks
c2VhcmNoOmZ1bmN0aW9uKGEsYyl7c3dpdGNoKGFyZ3VtZW50cy5sZW5ndGgpe2Nhc2UgMDpyZXR1
cm4gdGhpcy4kJHNlYXJjaDtjYXNlIDE6aWYoTChhKXx8VihhKSlhPWEudG9TdHJpbmcoKSx0aGlz
LiQkc2VhcmNoPXpjKGEpO2Vsc2UgaWYoSChhKSlhPWZhKGEse30pLG0oYSxmdW5jdGlvbihjLGUp
e251bGw9PWMmJmRlbGV0ZSBhW2VdfSksdGhpcy4kJHNlYXJjaD1hO2Vsc2UgdGhyb3cgQ2IoImlz
cmNoYXJnIik7YnJlYWs7ZGVmYXVsdDpBKGMpfHxudWxsPT09Yz9kZWxldGUgdGhpcy4kJHNlYXJj
aFthXTp0aGlzLiQkc2VhcmNoW2FdPWN9dGhpcy4kJGNvbXBvc2UoKTtyZXR1cm4gdGhpc30saGFz
aDprZCgiJCRoYXNoIixmdW5jdGlvbihhKXtyZXR1cm4gbnVsbCE9PQorYT9hLnRvU3RyaW5nKCk6
IiJ9KSxyZXBsYWNlOmZ1bmN0aW9uKCl7dGhpcy4kJHJlcGxhY2U9ITA7cmV0dXJuIHRoaXN9fTtt
KFtqZCxlYyxkY10sZnVuY3Rpb24oYSl7YS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShwZyk7YS5w
cm90b3R5cGUuc3RhdGU9ZnVuY3Rpb24oYyl7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHRo
aXMuJCRzdGF0ZTtpZihhIT09ZGN8fCF0aGlzLiQkaHRtbDUpdGhyb3cgQ2IoIm5vc3RhdGUiKTt0
aGlzLiQkc3RhdGU9QShjKT9udWxsOmM7cmV0dXJuIHRoaXN9fSk7dmFyIGRhPUooIiRwYXJzZSIp
LFVmPUZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLFZmPUZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseSxX
Zj1GdW5jdGlvbi5wcm90b3R5cGUuYmluZCxNYj1nYSgpO20oIisgLSAqIC8gJSA9PT0gIT09ID09
ICE9IDwgPiA8PSA+PSAmJiB8fCAhID0gfCIuc3BsaXQoIiAiKSxmdW5jdGlvbihhKXtNYlthXT0h
MH0pO3ZhciBxZz17bjoiXG4iLGY6IlxmIixyOiJcciIsCit0OiJcdCIsdjoiXHYiLCInIjoiJyIs
JyInOiciJ30sZ2M9ZnVuY3Rpb24oYSl7dGhpcy5vcHRpb25zPWF9O2djLnByb3RvdHlwZT17Y29u
c3RydWN0b3I6Z2MsbGV4OmZ1bmN0aW9uKGEpe3RoaXMudGV4dD1hO3RoaXMuaW5kZXg9MDtmb3Io
dGhpcy50b2tlbnM9W107dGhpcy5pbmRleDx0aGlzLnRleHQubGVuZ3RoOylpZihhPXRoaXMudGV4
dC5jaGFyQXQodGhpcy5pbmRleCksJyInPT09YXx8IiciPT09YSl0aGlzLnJlYWRTdHJpbmcoYSk7
ZWxzZSBpZih0aGlzLmlzTnVtYmVyKGEpfHwiLiI9PT1hJiZ0aGlzLmlzTnVtYmVyKHRoaXMucGVl
aygpKSl0aGlzLnJlYWROdW1iZXIoKTtlbHNlIGlmKHRoaXMuaXNJZGVudChhKSl0aGlzLnJlYWRJ
ZGVudCgpO2Vsc2UgaWYodGhpcy5pcyhhLCIoKXt9W10uLDs6PyIpKXRoaXMudG9rZW5zLnB1c2go
e2luZGV4OnRoaXMuaW5kZXgsdGV4dDphfSksdGhpcy5pbmRleCsrO2Vsc2UgaWYodGhpcy5pc1do
aXRlc3BhY2UoYSkpdGhpcy5pbmRleCsrOworZWxzZXt2YXIgYz1hK3RoaXMucGVlaygpLGQ9Yyt0
aGlzLnBlZWsoMiksZT1NYltjXSxmPU1iW2RdO01iW2FdfHxlfHxmPyhhPWY/ZDplP2M6YSx0aGlz
LnRva2Vucy5wdXNoKHtpbmRleDp0aGlzLmluZGV4LHRleHQ6YSxvcGVyYXRvcjohMH0pLHRoaXMu
aW5kZXgrPWEubGVuZ3RoKTp0aGlzLnRocm93RXJyb3IoIlVuZXhwZWN0ZWQgbmV4dCBjaGFyYWN0
ZXIgIix0aGlzLmluZGV4LHRoaXMuaW5kZXgrMSl9cmV0dXJuIHRoaXMudG9rZW5zfSxpczpmdW5j
dGlvbihhLGMpe3JldHVybi0xIT09Yy5pbmRleE9mKGEpfSxwZWVrOmZ1bmN0aW9uKGEpe2E9YXx8
MTtyZXR1cm4gdGhpcy5pbmRleCthPHRoaXMudGV4dC5sZW5ndGg/dGhpcy50ZXh0LmNoYXJBdCh0
aGlzLmluZGV4K2EpOiExfSxpc051bWJlcjpmdW5jdGlvbihhKXtyZXR1cm4iMCI8PWEmJiI5Ij49
YSYmInN0cmluZyI9PT10eXBlb2YgYX0saXNXaGl0ZXNwYWNlOmZ1bmN0aW9uKGEpe3JldHVybiIg
Ij09PWF8fCJcciI9PT1hfHwKKyJcdCI9PT1hfHwiXG4iPT09YXx8Ilx2Ij09PWF8fCJcdTAwYTAi
PT09YX0saXNJZGVudDpmdW5jdGlvbihhKXtyZXR1cm4iYSI8PWEmJiJ6Ij49YXx8IkEiPD1hJiYi
WiI+PWF8fCJfIj09PWF8fCIkIj09PWF9LGlzRXhwT3BlcmF0b3I6ZnVuY3Rpb24oYSl7cmV0dXJu
Ii0iPT09YXx8IisiPT09YXx8dGhpcy5pc051bWJlcihhKX0sdGhyb3dFcnJvcjpmdW5jdGlvbihh
LGMsZCl7ZD1kfHx0aGlzLmluZGV4O2M9dyhjKT8icyAiK2MrIi0iK3RoaXMuaW5kZXgrIiBbIit0
aGlzLnRleHQuc3Vic3RyaW5nKGMsZCkrIl0iOiIgIitkO3Rocm93IGRhKCJsZXhlcnIiLGEsYyx0
aGlzLnRleHQpO30scmVhZE51bWJlcjpmdW5jdGlvbigpe2Zvcih2YXIgYT0iIixjPXRoaXMuaW5k
ZXg7dGhpcy5pbmRleDx0aGlzLnRleHQubGVuZ3RoOyl7dmFyIGQ9TSh0aGlzLnRleHQuY2hhckF0
KHRoaXMuaW5kZXgpKTtpZigiLiI9PWR8fHRoaXMuaXNOdW1iZXIoZCkpYSs9ZDtlbHNle3ZhciBl
PXRoaXMucGVlaygpOworaWYoImUiPT1kJiZ0aGlzLmlzRXhwT3BlcmF0b3IoZSkpYSs9ZDtlbHNl
IGlmKHRoaXMuaXNFeHBPcGVyYXRvcihkKSYmZSYmdGhpcy5pc051bWJlcihlKSYmImUiPT1hLmNo
YXJBdChhLmxlbmd0aC0xKSlhKz1kO2Vsc2UgaWYoIXRoaXMuaXNFeHBPcGVyYXRvcihkKXx8ZSYm
dGhpcy5pc051bWJlcihlKXx8ImUiIT1hLmNoYXJBdChhLmxlbmd0aC0xKSlicmVhaztlbHNlIHRo
aXMudGhyb3dFcnJvcigiSW52YWxpZCBleHBvbmVudCIpfXRoaXMuaW5kZXgrK310aGlzLnRva2Vu
cy5wdXNoKHtpbmRleDpjLHRleHQ6YSxjb25zdGFudDohMCx2YWx1ZTpOdW1iZXIoYSl9KX0scmVh
ZElkZW50OmZ1bmN0aW9uKCl7Zm9yKHZhciBhPXRoaXMuaW5kZXg7dGhpcy5pbmRleDx0aGlzLnRl
eHQubGVuZ3RoOyl7dmFyIGM9dGhpcy50ZXh0LmNoYXJBdCh0aGlzLmluZGV4KTtpZighdGhpcy5p
c0lkZW50KGMpJiYhdGhpcy5pc051bWJlcihjKSlicmVhazt0aGlzLmluZGV4Kyt9dGhpcy50b2tl
bnMucHVzaCh7aW5kZXg6YSwKK3RleHQ6dGhpcy50ZXh0LnNsaWNlKGEsdGhpcy5pbmRleCksaWRl
bnRpZmllcjohMH0pfSxyZWFkU3RyaW5nOmZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuaW5kZXg7dGhp
cy5pbmRleCsrO2Zvcih2YXIgZD0iIixlPWEsZj0hMTt0aGlzLmluZGV4PHRoaXMudGV4dC5sZW5n
dGg7KXt2YXIgZz10aGlzLnRleHQuY2hhckF0KHRoaXMuaW5kZXgpLGU9ZStnO2lmKGYpInUiPT09
Zz8oZj10aGlzLnRleHQuc3Vic3RyaW5nKHRoaXMuaW5kZXgrMSx0aGlzLmluZGV4KzUpLGYubWF0
Y2goL1tcZGEtZl17NH0vaSl8fHRoaXMudGhyb3dFcnJvcigiSW52YWxpZCB1bmljb2RlIGVzY2Fw
ZSBbXFx1IitmKyJdIiksdGhpcy5pbmRleCs9NCxkKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHBhcnNl
SW50KGYsMTYpKSk6ZCs9cWdbZ118fGcsZj0hMTtlbHNlIGlmKCJcXCI9PT1nKWY9ITA7ZWxzZXtp
ZihnPT09YSl7dGhpcy5pbmRleCsrO3RoaXMudG9rZW5zLnB1c2goe2luZGV4OmMsdGV4dDplLGNv
bnN0YW50OiEwLAordmFsdWU6ZH0pO3JldHVybn1kKz1nfXRoaXMuaW5kZXgrK310aGlzLnRocm93
RXJyb3IoIlVudGVybWluYXRlZCBxdW90ZSIsYyl9fTt2YXIgcT1mdW5jdGlvbihhLGMpe3RoaXMu
bGV4ZXI9YTt0aGlzLm9wdGlvbnM9Y307cS5Qcm9ncmFtPSJQcm9ncmFtIjtxLkV4cHJlc3Npb25T
dGF0ZW1lbnQ9IkV4cHJlc3Npb25TdGF0ZW1lbnQiO3EuQXNzaWdubWVudEV4cHJlc3Npb249IkFz
c2lnbm1lbnRFeHByZXNzaW9uIjtxLkNvbmRpdGlvbmFsRXhwcmVzc2lvbj0iQ29uZGl0aW9uYWxF
eHByZXNzaW9uIjtxLkxvZ2ljYWxFeHByZXNzaW9uPSJMb2dpY2FsRXhwcmVzc2lvbiI7cS5CaW5h
cnlFeHByZXNzaW9uPSJCaW5hcnlFeHByZXNzaW9uIjtxLlVuYXJ5RXhwcmVzc2lvbj0iVW5hcnlF
eHByZXNzaW9uIjtxLkNhbGxFeHByZXNzaW9uPSJDYWxsRXhwcmVzc2lvbiI7cS5NZW1iZXJFeHBy
ZXNzaW9uPSJNZW1iZXJFeHByZXNzaW9uIjtxLklkZW50aWZpZXI9IklkZW50aWZpZXIiO3EuTGl0
ZXJhbD0KKyJMaXRlcmFsIjtxLkFycmF5RXhwcmVzc2lvbj0iQXJyYXlFeHByZXNzaW9uIjtxLlBy
b3BlcnR5PSJQcm9wZXJ0eSI7cS5PYmplY3RFeHByZXNzaW9uPSJPYmplY3RFeHByZXNzaW9uIjtx
LlRoaXNFeHByZXNzaW9uPSJUaGlzRXhwcmVzc2lvbiI7cS5OR1ZhbHVlUGFyYW1ldGVyPSJOR1Zh
bHVlUGFyYW1ldGVyIjtxLnByb3RvdHlwZT17YXN0OmZ1bmN0aW9uKGEpe3RoaXMudGV4dD1hO3Ro
aXMudG9rZW5zPXRoaXMubGV4ZXIubGV4KGEpO2E9dGhpcy5wcm9ncmFtKCk7MCE9PXRoaXMudG9r
ZW5zLmxlbmd0aCYmdGhpcy50aHJvd0Vycm9yKCJpcyBhbiB1bmV4cGVjdGVkIHRva2VuIix0aGlz
LnRva2Vuc1swXSk7cmV0dXJuIGF9LHByb2dyYW06ZnVuY3Rpb24oKXtmb3IodmFyIGE9W107Oylp
ZigwPHRoaXMudG9rZW5zLmxlbmd0aCYmIXRoaXMucGVlaygifSIsIikiLCI7IiwiXSIpJiZhLnB1
c2godGhpcy5leHByZXNzaW9uU3RhdGVtZW50KCkpLCF0aGlzLmV4cGVjdCgiOyIpKXJldHVybnt0
eXBlOnEuUHJvZ3JhbSwKK2JvZHk6YX19LGV4cHJlc3Npb25TdGF0ZW1lbnQ6ZnVuY3Rpb24oKXty
ZXR1cm57dHlwZTpxLkV4cHJlc3Npb25TdGF0ZW1lbnQsZXhwcmVzc2lvbjp0aGlzLmZpbHRlckNo
YWluKCl9fSxmaWx0ZXJDaGFpbjpmdW5jdGlvbigpe2Zvcih2YXIgYT10aGlzLmV4cHJlc3Npb24o
KTt0aGlzLmV4cGVjdCgifCIpOylhPXRoaXMuZmlsdGVyKGEpO3JldHVybiBhfSxleHByZXNzaW9u
OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXNzaWdubWVudCgpfSxhc3NpZ25tZW50OmZ1bmN0aW9u
KCl7dmFyIGE9dGhpcy50ZXJuYXJ5KCk7dGhpcy5leHBlY3QoIj0iKSYmKGE9e3R5cGU6cS5Bc3Np
Z25tZW50RXhwcmVzc2lvbixsZWZ0OmEscmlnaHQ6dGhpcy5hc3NpZ25tZW50KCksb3BlcmF0b3I6
Ij0ifSk7cmV0dXJuIGF9LHRlcm5hcnk6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmxvZ2ljYWxPUigp
LGMsZDtyZXR1cm4gdGhpcy5leHBlY3QoIj8iKSYmKGM9dGhpcy5leHByZXNzaW9uKCksdGhpcy5j
b25zdW1lKCI6IikpPworKGQ9dGhpcy5leHByZXNzaW9uKCkse3R5cGU6cS5Db25kaXRpb25hbEV4
cHJlc3Npb24sdGVzdDphLGFsdGVybmF0ZTpjLGNvbnNlcXVlbnQ6ZH0pOmF9LGxvZ2ljYWxPUjpm
dW5jdGlvbigpe2Zvcih2YXIgYT10aGlzLmxvZ2ljYWxBTkQoKTt0aGlzLmV4cGVjdCgifHwiKTsp
YT17dHlwZTpxLkxvZ2ljYWxFeHByZXNzaW9uLG9wZXJhdG9yOiJ8fCIsbGVmdDphLHJpZ2h0OnRo
aXMubG9naWNhbEFORCgpfTtyZXR1cm4gYX0sbG9naWNhbEFORDpmdW5jdGlvbigpe2Zvcih2YXIg
YT10aGlzLmVxdWFsaXR5KCk7dGhpcy5leHBlY3QoIiYmIik7KWE9e3R5cGU6cS5Mb2dpY2FsRXhw
cmVzc2lvbixvcGVyYXRvcjoiJiYiLGxlZnQ6YSxyaWdodDp0aGlzLmVxdWFsaXR5KCl9O3JldHVy
biBhfSxlcXVhbGl0eTpmdW5jdGlvbigpe2Zvcih2YXIgYT10aGlzLnJlbGF0aW9uYWwoKSxjO2M9
dGhpcy5leHBlY3QoIj09IiwiIT0iLCI9PT0iLCIhPT0iKTspYT17dHlwZTpxLkJpbmFyeUV4cHJl
c3Npb24sCitvcGVyYXRvcjpjLnRleHQsbGVmdDphLHJpZ2h0OnRoaXMucmVsYXRpb25hbCgpfTty
ZXR1cm4gYX0scmVsYXRpb25hbDpmdW5jdGlvbigpe2Zvcih2YXIgYT10aGlzLmFkZGl0aXZlKCks
YztjPXRoaXMuZXhwZWN0KCI8IiwiPiIsIjw9IiwiPj0iKTspYT17dHlwZTpxLkJpbmFyeUV4cHJl
c3Npb24sb3BlcmF0b3I6Yy50ZXh0LGxlZnQ6YSxyaWdodDp0aGlzLmFkZGl0aXZlKCl9O3JldHVy
biBhfSxhZGRpdGl2ZTpmdW5jdGlvbigpe2Zvcih2YXIgYT10aGlzLm11bHRpcGxpY2F0aXZlKCks
YztjPXRoaXMuZXhwZWN0KCIrIiwiLSIpOylhPXt0eXBlOnEuQmluYXJ5RXhwcmVzc2lvbixvcGVy
YXRvcjpjLnRleHQsbGVmdDphLHJpZ2h0OnRoaXMubXVsdGlwbGljYXRpdmUoKX07cmV0dXJuIGF9
LG11bHRpcGxpY2F0aXZlOmZ1bmN0aW9uKCl7Zm9yKHZhciBhPXRoaXMudW5hcnkoKSxjO2M9dGhp
cy5leHBlY3QoIioiLCIvIiwiJSIpOylhPXt0eXBlOnEuQmluYXJ5RXhwcmVzc2lvbixvcGVyYXRv
cjpjLnRleHQsCitsZWZ0OmEscmlnaHQ6dGhpcy51bmFyeSgpfTtyZXR1cm4gYX0sdW5hcnk6ZnVu
Y3Rpb24oKXt2YXIgYTtyZXR1cm4oYT10aGlzLmV4cGVjdCgiKyIsIi0iLCIhIikpP3t0eXBlOnEu
VW5hcnlFeHByZXNzaW9uLG9wZXJhdG9yOmEudGV4dCxwcmVmaXg6ITAsYXJndW1lbnQ6dGhpcy51
bmFyeSgpfTp0aGlzLnByaW1hcnkoKX0scHJpbWFyeTpmdW5jdGlvbigpe3ZhciBhO3RoaXMuZXhw
ZWN0KCIoIik/KGE9dGhpcy5maWx0ZXJDaGFpbigpLHRoaXMuY29uc3VtZSgiKSIpKTp0aGlzLmV4
cGVjdCgiWyIpP2E9dGhpcy5hcnJheURlY2xhcmF0aW9uKCk6dGhpcy5leHBlY3QoInsiKT9hPXRo
aXMub2JqZWN0KCk6dGhpcy5jb25zdGFudHMuaGFzT3duUHJvcGVydHkodGhpcy5wZWVrKCkudGV4
dCk/YT1mYSh0aGlzLmNvbnN0YW50c1t0aGlzLmNvbnN1bWUoKS50ZXh0XSk6dGhpcy5wZWVrKCku
aWRlbnRpZmllcj9hPXRoaXMuaWRlbnRpZmllcigpOnRoaXMucGVlaygpLmNvbnN0YW50P2E9dGhp
cy5jb25zdGFudCgpOgordGhpcy50aHJvd0Vycm9yKCJub3QgYSBwcmltYXJ5IGV4cHJlc3Npb24i
LHRoaXMucGVlaygpKTtmb3IodmFyIGM7Yz10aGlzLmV4cGVjdCgiKCIsIlsiLCIuIik7KSIoIj09
PWMudGV4dD8oYT17dHlwZTpxLkNhbGxFeHByZXNzaW9uLGNhbGxlZTphLGFyZ3VtZW50czp0aGlz
LnBhcnNlQXJndW1lbnRzKCl9LHRoaXMuY29uc3VtZSgiKSIpKToiWyI9PT1jLnRleHQ/KGE9e3R5
cGU6cS5NZW1iZXJFeHByZXNzaW9uLG9iamVjdDphLHByb3BlcnR5OnRoaXMuZXhwcmVzc2lvbigp
LGNvbXB1dGVkOiEwfSx0aGlzLmNvbnN1bWUoIl0iKSk6Ii4iPT09Yy50ZXh0P2E9e3R5cGU6cS5N
ZW1iZXJFeHByZXNzaW9uLG9iamVjdDphLHByb3BlcnR5OnRoaXMuaWRlbnRpZmllcigpLGNvbXB1
dGVkOiExfTp0aGlzLnRocm93RXJyb3IoIklNUE9TU0lCTEUiKTtyZXR1cm4gYX0sZmlsdGVyOmZ1
bmN0aW9uKGEpe2E9W2FdO2Zvcih2YXIgYz17dHlwZTpxLkNhbGxFeHByZXNzaW9uLGNhbGxlZTp0
aGlzLmlkZW50aWZpZXIoKSwKK2FyZ3VtZW50czphLGZpbHRlcjohMH07dGhpcy5leHBlY3QoIjoi
KTspYS5wdXNoKHRoaXMuZXhwcmVzc2lvbigpKTtyZXR1cm4gY30scGFyc2VBcmd1bWVudHM6ZnVu
Y3Rpb24oKXt2YXIgYT1bXTtpZigiKSIhPT10aGlzLnBlZWtUb2tlbigpLnRleHQpe2RvIGEucHVz
aCh0aGlzLmV4cHJlc3Npb24oKSk7d2hpbGUodGhpcy5leHBlY3QoIiwiKSl9cmV0dXJuIGF9LGlk
ZW50aWZpZXI6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmNvbnN1bWUoKTthLmlkZW50aWZpZXJ8fHRo
aXMudGhyb3dFcnJvcigiaXMgbm90IGEgdmFsaWQgaWRlbnRpZmllciIsYSk7cmV0dXJue3R5cGU6
cS5JZGVudGlmaWVyLG5hbWU6YS50ZXh0fX0sY29uc3RhbnQ6ZnVuY3Rpb24oKXtyZXR1cm57dHlw
ZTpxLkxpdGVyYWwsdmFsdWU6dGhpcy5jb25zdW1lKCkudmFsdWV9fSxhcnJheURlY2xhcmF0aW9u
OmZ1bmN0aW9uKCl7dmFyIGE9W107aWYoIl0iIT09dGhpcy5wZWVrVG9rZW4oKS50ZXh0KXtkb3tp
Zih0aGlzLnBlZWsoIl0iKSlicmVhazsKK2EucHVzaCh0aGlzLmV4cHJlc3Npb24oKSl9d2hpbGUo
dGhpcy5leHBlY3QoIiwiKSl9dGhpcy5jb25zdW1lKCJdIik7cmV0dXJue3R5cGU6cS5BcnJheUV4
cHJlc3Npb24sZWxlbWVudHM6YX19LG9iamVjdDpmdW5jdGlvbigpe3ZhciBhPVtdLGM7aWYoIn0i
IT09dGhpcy5wZWVrVG9rZW4oKS50ZXh0KXtkb3tpZih0aGlzLnBlZWsoIn0iKSlicmVhaztjPXt0
eXBlOnEuUHJvcGVydHksa2luZDoiaW5pdCJ9O3RoaXMucGVlaygpLmNvbnN0YW50P2Mua2V5PXRo
aXMuY29uc3RhbnQoKTp0aGlzLnBlZWsoKS5pZGVudGlmaWVyP2Mua2V5PXRoaXMuaWRlbnRpZmll
cigpOnRoaXMudGhyb3dFcnJvcigiaW52YWxpZCBrZXkiLHRoaXMucGVlaygpKTt0aGlzLmNvbnN1
bWUoIjoiKTtjLnZhbHVlPXRoaXMuZXhwcmVzc2lvbigpO2EucHVzaChjKX13aGlsZSh0aGlzLmV4
cGVjdCgiLCIpKX10aGlzLmNvbnN1bWUoIn0iKTtyZXR1cm57dHlwZTpxLk9iamVjdEV4cHJlc3Np
b24scHJvcGVydGllczphfX0sCit0aHJvd0Vycm9yOmZ1bmN0aW9uKGEsYyl7dGhyb3cgZGEoInN5
bnRheCIsYy50ZXh0LGEsYy5pbmRleCsxLHRoaXMudGV4dCx0aGlzLnRleHQuc3Vic3RyaW5nKGMu
aW5kZXgpKTt9LGNvbnN1bWU6ZnVuY3Rpb24oYSl7aWYoMD09PXRoaXMudG9rZW5zLmxlbmd0aCl0
aHJvdyBkYSgidWVvZSIsdGhpcy50ZXh0KTt2YXIgYz10aGlzLmV4cGVjdChhKTtjfHx0aGlzLnRo
cm93RXJyb3IoImlzIHVuZXhwZWN0ZWQsIGV4cGVjdGluZyBbIithKyJdIix0aGlzLnBlZWsoKSk7
cmV0dXJuIGN9LHBlZWtUb2tlbjpmdW5jdGlvbigpe2lmKDA9PT10aGlzLnRva2Vucy5sZW5ndGgp
dGhyb3cgZGEoInVlb2UiLHRoaXMudGV4dCk7cmV0dXJuIHRoaXMudG9rZW5zWzBdfSxwZWVrOmZ1
bmN0aW9uKGEsYyxkLGUpe3JldHVybiB0aGlzLnBlZWtBaGVhZCgwLGEsYyxkLGUpfSxwZWVrQWhl
YWQ6ZnVuY3Rpb24oYSxjLGQsZSxmKXtpZih0aGlzLnRva2Vucy5sZW5ndGg+YSl7YT10aGlzLnRv
a2Vuc1thXTsKK3ZhciBnPWEudGV4dDtpZihnPT09Y3x8Zz09PWR8fGc9PT1lfHxnPT09Znx8IShj
fHxkfHxlfHxmKSlyZXR1cm4gYX1yZXR1cm4hMX0sZXhwZWN0OmZ1bmN0aW9uKGEsYyxkLGUpe3Jl
dHVybihhPXRoaXMucGVlayhhLGMsZCxlKSk/KHRoaXMudG9rZW5zLnNoaWZ0KCksYSk6ITF9LGNv
bnN0YW50czp7InRydWUiOnt0eXBlOnEuTGl0ZXJhbCx2YWx1ZTohMH0sImZhbHNlIjp7dHlwZTpx
LkxpdGVyYWwsdmFsdWU6ITF9LCJudWxsIjp7dHlwZTpxLkxpdGVyYWwsdmFsdWU6bnVsbH0sdW5k
ZWZpbmVkOnt0eXBlOnEuTGl0ZXJhbCx2YWx1ZTp0fSwidGhpcyI6e3R5cGU6cS5UaGlzRXhwcmVz
c2lvbn19fTtyZC5wcm90b3R5cGU9e2NvbXBpbGU6ZnVuY3Rpb24oYSxjKXt2YXIgZD10aGlzLGU9
dGhpcy5hc3RCdWlsZGVyLmFzdChhKTt0aGlzLnN0YXRlPXtuZXh0SWQ6MCxmaWx0ZXJzOnt9LGV4
cGVuc2l2ZUNoZWNrczpjLGZuOnt2YXJzOltdLGJvZHk6W10sb3duOnt9fSxhc3NpZ246e3ZhcnM6
W10sCitib2R5OltdLG93bjp7fX0saW5wdXRzOltdfTtUKGUsZC4kZmlsdGVyKTt2YXIgZj0iIixn
O3RoaXMuc3RhZ2U9ImFzc2lnbiI7aWYoZz1wZChlKSl0aGlzLnN0YXRlLmNvbXB1dGluZz0iYXNz
aWduIixmPXRoaXMubmV4dElkKCksdGhpcy5yZWN1cnNlKGcsZiksZj0iZm4uYXNzaWduPSIrdGhp
cy5nZW5lcmF0ZUZ1bmN0aW9uKCJhc3NpZ24iLCJzLHYsbCIpO2c9bmQoZS5ib2R5KTtkLnN0YWdl
PSJpbnB1dHMiO20oZyxmdW5jdGlvbihhLGMpe3ZhciBlPSJmbiIrYztkLnN0YXRlW2VdPXt2YXJz
OltdLGJvZHk6W10sb3duOnt9fTtkLnN0YXRlLmNvbXB1dGluZz1lO3ZhciBmPWQubmV4dElkKCk7
ZC5yZWN1cnNlKGEsZik7ZC5yZXR1cm5fKGYpO2Quc3RhdGUuaW5wdXRzLnB1c2goZSk7YS53YXRj
aElkPWN9KTt0aGlzLnN0YXRlLmNvbXB1dGluZz0iZm4iO3RoaXMuc3RhZ2U9Im1haW4iO3RoaXMu
cmVjdXJzZShlKTtmPSciJyt0aGlzLlVTRSsiICIrdGhpcy5TVFJJQ1QrJyI7XG4nK3RoaXMuZmls
dGVyUHJlZml4KCkrCisidmFyIGZuPSIrdGhpcy5nZW5lcmF0ZUZ1bmN0aW9uKCJmbiIsInMsbCxh
LGkiKStmK3RoaXMud2F0Y2hGbnMoKSsicmV0dXJuIGZuOyI7Zj0obmV3IEZ1bmN0aW9uKCIkZmls
dGVyIiwiZW5zdXJlU2FmZU1lbWJlck5hbWUiLCJlbnN1cmVTYWZlT2JqZWN0IiwiZW5zdXJlU2Fm
ZUZ1bmN0aW9uIiwiaWZEZWZpbmVkIiwicGx1cyIsInRleHQiLGYpKSh0aGlzLiRmaWx0ZXIsQ2Es
b2EsbGQsWGYsbWQsYSk7dGhpcy5zdGF0ZT10aGlzLnN0YWdlPXQ7Zi5saXRlcmFsPXFkKGUpO2Yu
Y29uc3RhbnQ9ZS5jb25zdGFudDtyZXR1cm4gZn0sVVNFOiJ1c2UiLFNUUklDVDoic3RyaWN0Iix3
YXRjaEZuczpmdW5jdGlvbigpe3ZhciBhPVtdLGM9dGhpcy5zdGF0ZS5pbnB1dHMsZD10aGlzO20o
YyxmdW5jdGlvbihjKXthLnB1c2goInZhciAiK2MrIj0iK2QuZ2VuZXJhdGVGdW5jdGlvbihjLCJz
IikpfSk7Yy5sZW5ndGgmJmEucHVzaCgiZm4uaW5wdXRzPVsiK2Muam9pbigiLCIpKyJdOyIpO3Jl
dHVybiBhLmpvaW4oIiIpfSwKK2dlbmVyYXRlRnVuY3Rpb246ZnVuY3Rpb24oYSxjKXtyZXR1cm4i
ZnVuY3Rpb24oIitjKyIpeyIrdGhpcy52YXJzUHJlZml4KGEpK3RoaXMuYm9keShhKSsifTsifSxm
aWx0ZXJQcmVmaXg6ZnVuY3Rpb24oKXt2YXIgYT1bXSxjPXRoaXM7bSh0aGlzLnN0YXRlLmZpbHRl
cnMsZnVuY3Rpb24oZCxlKXthLnB1c2goZCsiPSRmaWx0ZXIoIitjLmVzY2FwZShlKSsiKSIpfSk7
cmV0dXJuIGEubGVuZ3RoPyJ2YXIgIithLmpvaW4oIiwiKSsiOyI6IiJ9LHZhcnNQcmVmaXg6ZnVu
Y3Rpb24oYSl7cmV0dXJuIHRoaXMuc3RhdGVbYV0udmFycy5sZW5ndGg/InZhciAiK3RoaXMuc3Rh
dGVbYV0udmFycy5qb2luKCIsIikrIjsiOiIifSxib2R5OmZ1bmN0aW9uKGEpe3JldHVybiB0aGlz
LnN0YXRlW2FdLmJvZHkuam9pbigiIil9LHJlY3Vyc2U6ZnVuY3Rpb24oYSxjLGQsZSxmLGcpe3Zh
ciBoLGwsaz10aGlzLG4scjtlPWV8fHY7aWYoIWcmJncoYS53YXRjaElkKSljPWN8fHRoaXMubmV4
dElkKCksdGhpcy5pZl8oImkiLAordGhpcy5sYXp5QXNzaWduKGMsdGhpcy5jb21wdXRlZE1lbWJl
cigiaSIsYS53YXRjaElkKSksdGhpcy5sYXp5UmVjdXJzZShhLGMsZCxlLGYsITApKTtlbHNlIHN3
aXRjaChhLnR5cGUpe2Nhc2UgcS5Qcm9ncmFtOm0oYS5ib2R5LGZ1bmN0aW9uKGMsZCl7ay5yZWN1
cnNlKGMuZXhwcmVzc2lvbix0LHQsZnVuY3Rpb24oYSl7bD1hfSk7ZCE9PWEuYm9keS5sZW5ndGgt
MT9rLmN1cnJlbnQoKS5ib2R5LnB1c2gobCwiOyIpOmsucmV0dXJuXyhsKX0pO2JyZWFrO2Nhc2Ug
cS5MaXRlcmFsOnI9dGhpcy5lc2NhcGUoYS52YWx1ZSk7dGhpcy5hc3NpZ24oYyxyKTtlKHIpO2Jy
ZWFrO2Nhc2UgcS5VbmFyeUV4cHJlc3Npb246dGhpcy5yZWN1cnNlKGEuYXJndW1lbnQsdCx0LGZ1
bmN0aW9uKGEpe2w9YX0pO3I9YS5vcGVyYXRvcisiKCIrdGhpcy5pZkRlZmluZWQobCwwKSsiKSI7
dGhpcy5hc3NpZ24oYyxyKTtlKHIpO2JyZWFrO2Nhc2UgcS5CaW5hcnlFeHByZXNzaW9uOnRoaXMu
cmVjdXJzZShhLmxlZnQsCit0LHQsZnVuY3Rpb24oYSl7aD1hfSk7dGhpcy5yZWN1cnNlKGEucmln
aHQsdCx0LGZ1bmN0aW9uKGEpe2w9YX0pO3I9IisiPT09YS5vcGVyYXRvcj90aGlzLnBsdXMoaCxs
KToiLSI9PT1hLm9wZXJhdG9yP3RoaXMuaWZEZWZpbmVkKGgsMCkrYS5vcGVyYXRvcit0aGlzLmlm
RGVmaW5lZChsLDApOiIoIitoKyIpIithLm9wZXJhdG9yKyIoIitsKyIpIjt0aGlzLmFzc2lnbihj
LHIpO2Uocik7YnJlYWs7Y2FzZSBxLkxvZ2ljYWxFeHByZXNzaW9uOmM9Y3x8dGhpcy5uZXh0SWQo
KTtrLnJlY3Vyc2UoYS5sZWZ0LGMpO2suaWZfKCImJiI9PT1hLm9wZXJhdG9yP2M6ay5ub3QoYyks
ay5sYXp5UmVjdXJzZShhLnJpZ2h0LGMpKTtlKGMpO2JyZWFrO2Nhc2UgcS5Db25kaXRpb25hbEV4
cHJlc3Npb246Yz1jfHx0aGlzLm5leHRJZCgpO2sucmVjdXJzZShhLnRlc3QsYyk7ay5pZl8oYyxr
LmxhenlSZWN1cnNlKGEuYWx0ZXJuYXRlLGMpLGsubGF6eVJlY3Vyc2UoYS5jb25zZXF1ZW50LGMp
KTtlKGMpOworYnJlYWs7Y2FzZSBxLklkZW50aWZpZXI6Yz1jfHx0aGlzLm5leHRJZCgpO2QmJihk
LmNvbnRleHQ9ImlucHV0cyI9PT1rLnN0YWdlPyJzIjp0aGlzLmFzc2lnbih0aGlzLm5leHRJZCgp
LHRoaXMuZ2V0SGFzT3duUHJvcGVydHkoImwiLGEubmFtZSkrIj9sOnMiKSxkLmNvbXB1dGVkPSEx
LGQubmFtZT1hLm5hbWUpO0NhKGEubmFtZSk7ay5pZl8oImlucHV0cyI9PT1rLnN0YWdlfHxrLm5v
dChrLmdldEhhc093blByb3BlcnR5KCJsIixhLm5hbWUpKSxmdW5jdGlvbigpe2suaWZfKCJpbnB1
dHMiPT09ay5zdGFnZXx8InMiLGZ1bmN0aW9uKCl7ZiYmMSE9PWYmJmsuaWZfKGsubm90KGsubm9u
Q29tcHV0ZWRNZW1iZXIoInMiLGEubmFtZSkpLGsubGF6eUFzc2lnbihrLm5vbkNvbXB1dGVkTWVt
YmVyKCJzIixhLm5hbWUpLCJ7fSIpKTtrLmFzc2lnbihjLGsubm9uQ29tcHV0ZWRNZW1iZXIoInMi
LGEubmFtZSkpfSl9LGMmJmsubGF6eUFzc2lnbihjLGsubm9uQ29tcHV0ZWRNZW1iZXIoImwiLAor
YS5uYW1lKSkpOyhrLnN0YXRlLmV4cGVuc2l2ZUNoZWNrc3x8RmIoYS5uYW1lKSkmJmsuYWRkRW5z
dXJlU2FmZU9iamVjdChjKTtlKGMpO2JyZWFrO2Nhc2UgcS5NZW1iZXJFeHByZXNzaW9uOmg9ZCYm
KGQuY29udGV4dD10aGlzLm5leHRJZCgpKXx8dGhpcy5uZXh0SWQoKTtjPWN8fHRoaXMubmV4dElk
KCk7ay5yZWN1cnNlKGEub2JqZWN0LGgsdCxmdW5jdGlvbigpe2suaWZfKGsubm90TnVsbChoKSxm
dW5jdGlvbigpe2lmKGEuY29tcHV0ZWQpbD1rLm5leHRJZCgpLGsucmVjdXJzZShhLnByb3BlcnR5
LGwpLGsuYWRkRW5zdXJlU2FmZU1lbWJlck5hbWUobCksZiYmMSE9PWYmJmsuaWZfKGsubm90KGsu
Y29tcHV0ZWRNZW1iZXIoaCxsKSksay5sYXp5QXNzaWduKGsuY29tcHV0ZWRNZW1iZXIoaCxsKSwi
e30iKSkscj1rLmVuc3VyZVNhZmVPYmplY3Qoay5jb21wdXRlZE1lbWJlcihoLGwpKSxrLmFzc2ln
bihjLHIpLGQmJihkLmNvbXB1dGVkPSEwLGQubmFtZT1sKTtlbHNle0NhKGEucHJvcGVydHkubmFt
ZSk7CitmJiYxIT09ZiYmay5pZl8oay5ub3Qoay5ub25Db21wdXRlZE1lbWJlcihoLGEucHJvcGVy
dHkubmFtZSkpLGsubGF6eUFzc2lnbihrLm5vbkNvbXB1dGVkTWVtYmVyKGgsYS5wcm9wZXJ0eS5u
YW1lKSwie30iKSk7cj1rLm5vbkNvbXB1dGVkTWVtYmVyKGgsYS5wcm9wZXJ0eS5uYW1lKTtpZihr
LnN0YXRlLmV4cGVuc2l2ZUNoZWNrc3x8RmIoYS5wcm9wZXJ0eS5uYW1lKSlyPWsuZW5zdXJlU2Fm
ZU9iamVjdChyKTtrLmFzc2lnbihjLHIpO2QmJihkLmNvbXB1dGVkPSExLGQubmFtZT1hLnByb3Bl
cnR5Lm5hbWUpfX0sZnVuY3Rpb24oKXtrLmFzc2lnbihjLCJ1bmRlZmluZWQiKX0pO2UoYyl9LCEh
Zik7YnJlYWs7Y2FzZSBxLkNhbGxFeHByZXNzaW9uOmM9Y3x8dGhpcy5uZXh0SWQoKTthLmZpbHRl
cj8obD1rLmZpbHRlcihhLmNhbGxlZS5uYW1lKSxuPVtdLG0oYS5hcmd1bWVudHMsZnVuY3Rpb24o
YSl7dmFyIGM9ay5uZXh0SWQoKTtrLnJlY3Vyc2UoYSxjKTtuLnB1c2goYyl9KSxyPWwrCisiKCIr
bi5qb2luKCIsIikrIikiLGsuYXNzaWduKGMsciksZShjKSk6KGw9ay5uZXh0SWQoKSxoPXt9LG49
W10say5yZWN1cnNlKGEuY2FsbGVlLGwsaCxmdW5jdGlvbigpe2suaWZfKGsubm90TnVsbChsKSxm
dW5jdGlvbigpe2suYWRkRW5zdXJlU2FmZUZ1bmN0aW9uKGwpO20oYS5hcmd1bWVudHMsZnVuY3Rp
b24oYSl7ay5yZWN1cnNlKGEsay5uZXh0SWQoKSx0LGZ1bmN0aW9uKGEpe24ucHVzaChrLmVuc3Vy
ZVNhZmVPYmplY3QoYSkpfSl9KTtoLm5hbWU/KGsuc3RhdGUuZXhwZW5zaXZlQ2hlY2tzfHxrLmFk
ZEVuc3VyZVNhZmVPYmplY3QoaC5jb250ZXh0KSxyPWsubWVtYmVyKGguY29udGV4dCxoLm5hbWUs
aC5jb21wdXRlZCkrIigiK24uam9pbigiLCIpKyIpIik6cj1sKyIoIituLmpvaW4oIiwiKSsiKSI7
cj1rLmVuc3VyZVNhZmVPYmplY3Qocik7ay5hc3NpZ24oYyxyKX0sZnVuY3Rpb24oKXtrLmFzc2ln
bihjLCJ1bmRlZmluZWQiKX0pO2UoYyl9KSk7YnJlYWs7Y2FzZSBxLkFzc2lnbm1lbnRFeHByZXNz
aW9uOmw9Cit0aGlzLm5leHRJZCgpO2g9e307aWYoIW9kKGEubGVmdCkpdGhyb3cgZGEoImx2YWwi
KTt0aGlzLnJlY3Vyc2UoYS5sZWZ0LHQsaCxmdW5jdGlvbigpe2suaWZfKGsubm90TnVsbChoLmNv
bnRleHQpLGZ1bmN0aW9uKCl7ay5yZWN1cnNlKGEucmlnaHQsbCk7ay5hZGRFbnN1cmVTYWZlT2Jq
ZWN0KGsubWVtYmVyKGguY29udGV4dCxoLm5hbWUsaC5jb21wdXRlZCkpO3I9ay5tZW1iZXIoaC5j
b250ZXh0LGgubmFtZSxoLmNvbXB1dGVkKSthLm9wZXJhdG9yK2w7ay5hc3NpZ24oYyxyKTtlKGN8
fHIpfSl9LDEpO2JyZWFrO2Nhc2UgcS5BcnJheUV4cHJlc3Npb246bj1bXTttKGEuZWxlbWVudHMs
ZnVuY3Rpb24oYSl7ay5yZWN1cnNlKGEsay5uZXh0SWQoKSx0LGZ1bmN0aW9uKGEpe24ucHVzaChh
KX0pfSk7cj0iWyIrbi5qb2luKCIsIikrIl0iO3RoaXMuYXNzaWduKGMscik7ZShyKTticmVhaztj
YXNlIHEuT2JqZWN0RXhwcmVzc2lvbjpuPVtdO20oYS5wcm9wZXJ0aWVzLGZ1bmN0aW9uKGEpe2su
cmVjdXJzZShhLnZhbHVlLAoray5uZXh0SWQoKSx0LGZ1bmN0aW9uKGMpe24ucHVzaChrLmVzY2Fw
ZShhLmtleS50eXBlPT09cS5JZGVudGlmaWVyP2Eua2V5Lm5hbWU6IiIrYS5rZXkudmFsdWUpKyI6
IitjKX0pfSk7cj0ieyIrbi5qb2luKCIsIikrIn0iO3RoaXMuYXNzaWduKGMscik7ZShyKTticmVh
aztjYXNlIHEuVGhpc0V4cHJlc3Npb246dGhpcy5hc3NpZ24oYywicyIpO2UoInMiKTticmVhaztj
YXNlIHEuTkdWYWx1ZVBhcmFtZXRlcjp0aGlzLmFzc2lnbihjLCJ2IiksZSgidiIpfX0sZ2V0SGFz
T3duUHJvcGVydHk6ZnVuY3Rpb24oYSxjKXt2YXIgZD1hKyIuIitjLGU9dGhpcy5jdXJyZW50KCku
b3duO2UuaGFzT3duUHJvcGVydHkoZCl8fChlW2RdPXRoaXMubmV4dElkKCExLGErIiYmKCIrdGhp
cy5lc2NhcGUoYykrIiBpbiAiK2ErIikiKSk7cmV0dXJuIGVbZF19LGFzc2lnbjpmdW5jdGlvbihh
LGMpe2lmKGEpcmV0dXJuIHRoaXMuY3VycmVudCgpLmJvZHkucHVzaChhLCI9IixjLCI7IiksYX0s
ZmlsdGVyOmZ1bmN0aW9uKGEpe3RoaXMuc3RhdGUuZmlsdGVycy5oYXNPd25Qcm9wZXJ0eShhKXx8
CisodGhpcy5zdGF0ZS5maWx0ZXJzW2FdPXRoaXMubmV4dElkKCEwKSk7cmV0dXJuIHRoaXMuc3Rh
dGUuZmlsdGVyc1thXX0saWZEZWZpbmVkOmZ1bmN0aW9uKGEsYyl7cmV0dXJuImlmRGVmaW5lZCgi
K2ErIiwiK3RoaXMuZXNjYXBlKGMpKyIpIn0scGx1czpmdW5jdGlvbihhLGMpe3JldHVybiJwbHVz
KCIrYSsiLCIrYysiKSJ9LHJldHVybl86ZnVuY3Rpb24oYSl7dGhpcy5jdXJyZW50KCkuYm9keS5w
dXNoKCJyZXR1cm4gIixhLCI7Iil9LGlmXzpmdW5jdGlvbihhLGMsZCl7aWYoITA9PT1hKWMoKTtl
bHNle3ZhciBlPXRoaXMuY3VycmVudCgpLmJvZHk7ZS5wdXNoKCJpZigiLGEsIil7Iik7YygpO2Uu
cHVzaCgifSIpO2QmJihlLnB1c2goImVsc2V7IiksZCgpLGUucHVzaCgifSIpKX19LG5vdDpmdW5j
dGlvbihhKXtyZXR1cm4iISgiK2ErIikifSxub3ROdWxsOmZ1bmN0aW9uKGEpe3JldHVybiBhKyIh
PW51bGwifSxub25Db21wdXRlZE1lbWJlcjpmdW5jdGlvbihhLGMpe3JldHVybiBhKworIi4iK2N9
LGNvbXB1dGVkTWVtYmVyOmZ1bmN0aW9uKGEsYyl7cmV0dXJuIGErIlsiK2MrIl0ifSxtZW1iZXI6
ZnVuY3Rpb24oYSxjLGQpe3JldHVybiBkP3RoaXMuY29tcHV0ZWRNZW1iZXIoYSxjKTp0aGlzLm5v
bkNvbXB1dGVkTWVtYmVyKGEsYyl9LGFkZEVuc3VyZVNhZmVPYmplY3Q6ZnVuY3Rpb24oYSl7dGhp
cy5jdXJyZW50KCkuYm9keS5wdXNoKHRoaXMuZW5zdXJlU2FmZU9iamVjdChhKSwiOyIpfSxhZGRF
bnN1cmVTYWZlTWVtYmVyTmFtZTpmdW5jdGlvbihhKXt0aGlzLmN1cnJlbnQoKS5ib2R5LnB1c2go
dGhpcy5lbnN1cmVTYWZlTWVtYmVyTmFtZShhKSwiOyIpfSxhZGRFbnN1cmVTYWZlRnVuY3Rpb246
ZnVuY3Rpb24oYSl7dGhpcy5jdXJyZW50KCkuYm9keS5wdXNoKHRoaXMuZW5zdXJlU2FmZUZ1bmN0
aW9uKGEpLCI7Iil9LGVuc3VyZVNhZmVPYmplY3Q6ZnVuY3Rpb24oYSl7cmV0dXJuImVuc3VyZVNh
ZmVPYmplY3QoIithKyIsdGV4dCkifSxlbnN1cmVTYWZlTWVtYmVyTmFtZTpmdW5jdGlvbihhKXty
ZXR1cm4iZW5zdXJlU2FmZU1lbWJlck5hbWUoIisKK2ErIix0ZXh0KSJ9LGVuc3VyZVNhZmVGdW5j
dGlvbjpmdW5jdGlvbihhKXtyZXR1cm4iZW5zdXJlU2FmZUZ1bmN0aW9uKCIrYSsiLHRleHQpIn0s
bGF6eVJlY3Vyc2U6ZnVuY3Rpb24oYSxjLGQsZSxmLGcpe3ZhciBoPXRoaXM7cmV0dXJuIGZ1bmN0
aW9uKCl7aC5yZWN1cnNlKGEsYyxkLGUsZixnKX19LGxhenlBc3NpZ246ZnVuY3Rpb24oYSxjKXt2
YXIgZD10aGlzO3JldHVybiBmdW5jdGlvbigpe2QuYXNzaWduKGEsYyl9fSxzdHJpbmdFc2NhcGVS
ZWdleDovW14gYS16QS1aMC05XS9nLHN0cmluZ0VzY2FwZUZuOmZ1bmN0aW9uKGEpe3JldHVybiJc
XHUiKygiMDAwMCIrYS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTQpfSxlc2Nh
cGU6ZnVuY3Rpb24oYSl7aWYoTChhKSlyZXR1cm4iJyIrYS5yZXBsYWNlKHRoaXMuc3RyaW5nRXNj
YXBlUmVnZXgsdGhpcy5zdHJpbmdFc2NhcGVGbikrIiciO2lmKFYoYSkpcmV0dXJuIGEudG9TdHJp
bmcoKTtpZighMD09PWEpcmV0dXJuInRydWUiOworaWYoITE9PT1hKXJldHVybiJmYWxzZSI7aWYo
bnVsbD09PWEpcmV0dXJuIm51bGwiO2lmKCJ1bmRlZmluZWQiPT09dHlwZW9mIGEpcmV0dXJuInVu
ZGVmaW5lZCI7dGhyb3cgZGEoImVzYyIpO30sbmV4dElkOmZ1bmN0aW9uKGEsYyl7dmFyIGQ9InYi
K3RoaXMuc3RhdGUubmV4dElkKys7YXx8dGhpcy5jdXJyZW50KCkudmFycy5wdXNoKGQrKGM/Ij0i
K2M6IiIpKTtyZXR1cm4gZH0sY3VycmVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN0YXRlW3Ro
aXMuc3RhdGUuY29tcHV0aW5nXX19O3NkLnByb3RvdHlwZT17Y29tcGlsZTpmdW5jdGlvbihhLGMp
e3ZhciBkPXRoaXMsZT10aGlzLmFzdEJ1aWxkZXIuYXN0KGEpO3RoaXMuZXhwcmVzc2lvbj1hO3Ro
aXMuZXhwZW5zaXZlQ2hlY2tzPWM7VChlLGQuJGZpbHRlcik7dmFyIGYsZztpZihmPXBkKGUpKWc9
dGhpcy5yZWN1cnNlKGYpO2Y9bmQoZS5ib2R5KTt2YXIgaDtmJiYoaD1bXSxtKGYsZnVuY3Rpb24o
YSxjKXt2YXIgZT1kLnJlY3Vyc2UoYSk7CithLmlucHV0PWU7aC5wdXNoKGUpO2Eud2F0Y2hJZD1j
fSkpO3ZhciBsPVtdO20oZS5ib2R5LGZ1bmN0aW9uKGEpe2wucHVzaChkLnJlY3Vyc2UoYS5leHBy
ZXNzaW9uKSl9KTtmPTA9PT1lLmJvZHkubGVuZ3RoP2Z1bmN0aW9uKCl7fToxPT09ZS5ib2R5Lmxl
bmd0aD9sWzBdOmZ1bmN0aW9uKGEsYyl7dmFyIGQ7bShsLGZ1bmN0aW9uKGUpe2Q9ZShhLGMpfSk7
cmV0dXJuIGR9O2cmJihmLmFzc2lnbj1mdW5jdGlvbihhLGMsZCl7cmV0dXJuIGcoYSxkLGMpfSk7
aCYmKGYuaW5wdXRzPWgpO2YubGl0ZXJhbD1xZChlKTtmLmNvbnN0YW50PWUuY29uc3RhbnQ7cmV0
dXJuIGZ9LHJlY3Vyc2U6ZnVuY3Rpb24oYSxjLGQpe3ZhciBlLGYsZz10aGlzLGg7aWYoYS5pbnB1
dClyZXR1cm4gdGhpcy5pbnB1dHMoYS5pbnB1dCxhLndhdGNoSWQpO3N3aXRjaChhLnR5cGUpe2Nh
c2UgcS5MaXRlcmFsOnJldHVybiB0aGlzLnZhbHVlKGEudmFsdWUsYyk7Y2FzZSBxLlVuYXJ5RXhw
cmVzc2lvbjpyZXR1cm4gZj0KK3RoaXMucmVjdXJzZShhLmFyZ3VtZW50KSx0aGlzWyJ1bmFyeSIr
YS5vcGVyYXRvcl0oZixjKTtjYXNlIHEuQmluYXJ5RXhwcmVzc2lvbjpyZXR1cm4gZT10aGlzLnJl
Y3Vyc2UoYS5sZWZ0KSxmPXRoaXMucmVjdXJzZShhLnJpZ2h0KSx0aGlzWyJiaW5hcnkiK2Eub3Bl
cmF0b3JdKGUsZixjKTtjYXNlIHEuTG9naWNhbEV4cHJlc3Npb246cmV0dXJuIGU9dGhpcy5yZWN1
cnNlKGEubGVmdCksZj10aGlzLnJlY3Vyc2UoYS5yaWdodCksdGhpc1siYmluYXJ5IithLm9wZXJh
dG9yXShlLGYsYyk7Y2FzZSBxLkNvbmRpdGlvbmFsRXhwcmVzc2lvbjpyZXR1cm4gdGhpc1sidGVy
bmFyeT86Il0odGhpcy5yZWN1cnNlKGEudGVzdCksdGhpcy5yZWN1cnNlKGEuYWx0ZXJuYXRlKSx0
aGlzLnJlY3Vyc2UoYS5jb25zZXF1ZW50KSxjKTtjYXNlIHEuSWRlbnRpZmllcjpyZXR1cm4gQ2Eo
YS5uYW1lLGcuZXhwcmVzc2lvbiksZy5pZGVudGlmaWVyKGEubmFtZSxnLmV4cGVuc2l2ZUNoZWNr
c3x8RmIoYS5uYW1lKSwKK2MsZCxnLmV4cHJlc3Npb24pO2Nhc2UgcS5NZW1iZXJFeHByZXNzaW9u
OnJldHVybiBlPXRoaXMucmVjdXJzZShhLm9iamVjdCwhMSwhIWQpLGEuY29tcHV0ZWR8fChDYShh
LnByb3BlcnR5Lm5hbWUsZy5leHByZXNzaW9uKSxmPWEucHJvcGVydHkubmFtZSksYS5jb21wdXRl
ZCYmKGY9dGhpcy5yZWN1cnNlKGEucHJvcGVydHkpKSxhLmNvbXB1dGVkP3RoaXMuY29tcHV0ZWRN
ZW1iZXIoZSxmLGMsZCxnLmV4cHJlc3Npb24pOnRoaXMubm9uQ29tcHV0ZWRNZW1iZXIoZSxmLGcu
ZXhwZW5zaXZlQ2hlY2tzLGMsZCxnLmV4cHJlc3Npb24pO2Nhc2UgcS5DYWxsRXhwcmVzc2lvbjpy
ZXR1cm4gaD1bXSxtKGEuYXJndW1lbnRzLGZ1bmN0aW9uKGEpe2gucHVzaChnLnJlY3Vyc2UoYSkp
fSksYS5maWx0ZXImJihmPXRoaXMuJGZpbHRlcihhLmNhbGxlZS5uYW1lKSksYS5maWx0ZXJ8fChm
PXRoaXMucmVjdXJzZShhLmNhbGxlZSwhMCkpLGEuZmlsdGVyP2Z1bmN0aW9uKGEsZCxlLGcpe2Zv
cih2YXIgbT0KK1tdLHE9MDtxPGgubGVuZ3RoOysrcSltLnB1c2goaFtxXShhLGQsZSxnKSk7YT1m
LmFwcGx5KHQsbSxnKTtyZXR1cm4gYz97Y29udGV4dDp0LG5hbWU6dCx2YWx1ZTphfTphfTpmdW5j
dGlvbihhLGQsZSxyKXt2YXIgbT1mKGEsZCxlLHIpLHE7aWYobnVsbCE9bS52YWx1ZSl7b2EobS5j
b250ZXh0LGcuZXhwcmVzc2lvbik7bGQobS52YWx1ZSxnLmV4cHJlc3Npb24pO3E9W107Zm9yKHZh
ciB0PTA7dDxoLmxlbmd0aDsrK3QpcS5wdXNoKG9hKGhbdF0oYSxkLGUsciksZy5leHByZXNzaW9u
KSk7cT1vYShtLnZhbHVlLmFwcGx5KG0uY29udGV4dCxxKSxnLmV4cHJlc3Npb24pfXJldHVybiBj
P3t2YWx1ZTpxfTpxfTtjYXNlIHEuQXNzaWdubWVudEV4cHJlc3Npb246cmV0dXJuIGU9dGhpcy5y
ZWN1cnNlKGEubGVmdCwhMCwxKSxmPXRoaXMucmVjdXJzZShhLnJpZ2h0KSxmdW5jdGlvbihhLGQs
aCxyKXt2YXIgbT1lKGEsZCxoLHIpO2E9ZihhLGQsaCxyKTtvYShtLnZhbHVlLGcuZXhwcmVzc2lv
bik7CittLmNvbnRleHRbbS5uYW1lXT1hO3JldHVybiBjP3t2YWx1ZTphfTphfTtjYXNlIHEuQXJy
YXlFeHByZXNzaW9uOnJldHVybiBoPVtdLG0oYS5lbGVtZW50cyxmdW5jdGlvbihhKXtoLnB1c2go
Zy5yZWN1cnNlKGEpKX0pLGZ1bmN0aW9uKGEsZCxlLGYpe2Zvcih2YXIgZz1bXSxtPTA7bTxoLmxl
bmd0aDsrK20pZy5wdXNoKGhbbV0oYSxkLGUsZikpO3JldHVybiBjP3t2YWx1ZTpnfTpnfTtjYXNl
IHEuT2JqZWN0RXhwcmVzc2lvbjpyZXR1cm4gaD1bXSxtKGEucHJvcGVydGllcyxmdW5jdGlvbihh
KXtoLnB1c2goe2tleTphLmtleS50eXBlPT09cS5JZGVudGlmaWVyP2Eua2V5Lm5hbWU6IiIrYS5r
ZXkudmFsdWUsdmFsdWU6Zy5yZWN1cnNlKGEudmFsdWUpfSl9KSxmdW5jdGlvbihhLGQsZSxmKXtm
b3IodmFyIGc9e30sbT0wO208aC5sZW5ndGg7KyttKWdbaFttXS5rZXldPWhbbV0udmFsdWUoYSxk
LGUsZik7cmV0dXJuIGM/e3ZhbHVlOmd9Omd9O2Nhc2UgcS5UaGlzRXhwcmVzc2lvbjpyZXR1cm4g
ZnVuY3Rpb24oYSl7cmV0dXJuIGM/Cit7dmFsdWU6YX06YX07Y2FzZSBxLk5HVmFsdWVQYXJhbWV0
ZXI6cmV0dXJuIGZ1bmN0aW9uKGEsZCxlLGYpe3JldHVybiBjP3t2YWx1ZTplfTplfX19LCJ1bmFy
eSsiOmZ1bmN0aW9uKGEsYyl7cmV0dXJuIGZ1bmN0aW9uKGQsZSxmLGcpe2Q9YShkLGUsZixnKTtk
PXcoZCk/K2Q6MDtyZXR1cm4gYz97dmFsdWU6ZH06ZH19LCJ1bmFyeS0iOmZ1bmN0aW9uKGEsYyl7
cmV0dXJuIGZ1bmN0aW9uKGQsZSxmLGcpe2Q9YShkLGUsZixnKTtkPXcoZCk/LWQ6MDtyZXR1cm4g
Yz97dmFsdWU6ZH06ZH19LCJ1bmFyeSEiOmZ1bmN0aW9uKGEsYyl7cmV0dXJuIGZ1bmN0aW9uKGQs
ZSxmLGcpe2Q9IWEoZCxlLGYsZyk7cmV0dXJuIGM/e3ZhbHVlOmR9OmR9fSwiYmluYXJ5KyI6ZnVu
Y3Rpb24oYSxjLGQpe3JldHVybiBmdW5jdGlvbihlLGYsZyxoKXt2YXIgbD1hKGUsZixnLGgpO2U9
YyhlLGYsZyxoKTtsPW1kKGwsZSk7cmV0dXJuIGQ/e3ZhbHVlOmx9Omx9fSwiYmluYXJ5LSI6ZnVu
Y3Rpb24oYSxjLGQpe3JldHVybiBmdW5jdGlvbihlLAorZixnLGgpe3ZhciBsPWEoZSxmLGcsaCk7
ZT1jKGUsZixnLGgpO2w9KHcobCk/bDowKS0odyhlKT9lOjApO3JldHVybiBkP3t2YWx1ZTpsfTps
fX0sImJpbmFyeSoiOmZ1bmN0aW9uKGEsYyxkKXtyZXR1cm4gZnVuY3Rpb24oZSxmLGcsaCl7ZT1h
KGUsZixnLGgpKmMoZSxmLGcsaCk7cmV0dXJuIGQ/e3ZhbHVlOmV9OmV9fSwiYmluYXJ5LyI6ZnVu
Y3Rpb24oYSxjLGQpe3JldHVybiBmdW5jdGlvbihlLGYsZyxoKXtlPWEoZSxmLGcsaCkvYyhlLGYs
ZyxoKTtyZXR1cm4gZD97dmFsdWU6ZX06ZX19LCJiaW5hcnklIjpmdW5jdGlvbihhLGMsZCl7cmV0
dXJuIGZ1bmN0aW9uKGUsZixnLGgpe2U9YShlLGYsZyxoKSVjKGUsZixnLGgpO3JldHVybiBkP3t2
YWx1ZTplfTplfX0sImJpbmFyeT09PSI6ZnVuY3Rpb24oYSxjLGQpe3JldHVybiBmdW5jdGlvbihl
LGYsZyxoKXtlPWEoZSxmLGcsaCk9PT1jKGUsZixnLGgpO3JldHVybiBkP3t2YWx1ZTplfTplfX0s
ImJpbmFyeSE9PSI6ZnVuY3Rpb24oYSwKK2MsZCl7cmV0dXJuIGZ1bmN0aW9uKGUsZixnLGgpe2U9
YShlLGYsZyxoKSE9PWMoZSxmLGcsaCk7cmV0dXJuIGQ/e3ZhbHVlOmV9OmV9fSwiYmluYXJ5PT0i
OmZ1bmN0aW9uKGEsYyxkKXtyZXR1cm4gZnVuY3Rpb24oZSxmLGcsaCl7ZT1hKGUsZixnLGgpPT1j
KGUsZixnLGgpO3JldHVybiBkP3t2YWx1ZTplfTplfX0sImJpbmFyeSE9IjpmdW5jdGlvbihhLGMs
ZCl7cmV0dXJuIGZ1bmN0aW9uKGUsZixnLGgpe2U9YShlLGYsZyxoKSE9YyhlLGYsZyxoKTtyZXR1
cm4gZD97dmFsdWU6ZX06ZX19LCJiaW5hcnk8IjpmdW5jdGlvbihhLGMsZCl7cmV0dXJuIGZ1bmN0
aW9uKGUsZixnLGgpe2U9YShlLGYsZyxoKTxjKGUsZixnLGgpO3JldHVybiBkP3t2YWx1ZTplfTpl
fX0sImJpbmFyeT4iOmZ1bmN0aW9uKGEsYyxkKXtyZXR1cm4gZnVuY3Rpb24oZSxmLGcsaCl7ZT1h
KGUsZixnLGgpPmMoZSxmLGcsaCk7cmV0dXJuIGQ/e3ZhbHVlOmV9OmV9fSwiYmluYXJ5PD0iOmZ1
bmN0aW9uKGEsYyxkKXtyZXR1cm4gZnVuY3Rpb24oZSwKK2YsZyxoKXtlPWEoZSxmLGcsaCk8PWMo
ZSxmLGcsaCk7cmV0dXJuIGQ/e3ZhbHVlOmV9OmV9fSwiYmluYXJ5Pj0iOmZ1bmN0aW9uKGEsYyxk
KXtyZXR1cm4gZnVuY3Rpb24oZSxmLGcsaCl7ZT1hKGUsZixnLGgpPj1jKGUsZixnLGgpO3JldHVy
biBkP3t2YWx1ZTplfTplfX0sImJpbmFyeSYmIjpmdW5jdGlvbihhLGMsZCl7cmV0dXJuIGZ1bmN0
aW9uKGUsZixnLGgpe2U9YShlLGYsZyxoKSYmYyhlLGYsZyxoKTtyZXR1cm4gZD97dmFsdWU6ZX06
ZX19LCJiaW5hcnl8fCI6ZnVuY3Rpb24oYSxjLGQpe3JldHVybiBmdW5jdGlvbihlLGYsZyxoKXtl
PWEoZSxmLGcsaCl8fGMoZSxmLGcsaCk7cmV0dXJuIGQ/e3ZhbHVlOmV9OmV9fSwidGVybmFyeT86
IjpmdW5jdGlvbihhLGMsZCxlKXtyZXR1cm4gZnVuY3Rpb24oZixnLGgsbCl7Zj1hKGYsZyxoLGwp
P2MoZixnLGgsbCk6ZChmLGcsaCxsKTtyZXR1cm4gZT97dmFsdWU6Zn06Zn19LHZhbHVlOmZ1bmN0
aW9uKGEsYyl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGM/Cit7Y29udGV4dDp0LG5hbWU6dCx2
YWx1ZTphfTphfX0saWRlbnRpZmllcjpmdW5jdGlvbihhLGMsZCxlLGYpe3JldHVybiBmdW5jdGlv
bihnLGgsbCxrKXtnPWgmJmEgaW4gaD9oOmc7ZSYmMSE9PWUmJmcmJiFnW2FdJiYoZ1thXT17fSk7
aD1nP2dbYV06dDtjJiZvYShoLGYpO3JldHVybiBkP3tjb250ZXh0OmcsbmFtZTphLHZhbHVlOmh9
Omh9fSxjb21wdXRlZE1lbWJlcjpmdW5jdGlvbihhLGMsZCxlLGYpe3JldHVybiBmdW5jdGlvbihn
LGgsbCxrKXt2YXIgbj1hKGcsaCxsLGspLG0scztudWxsIT1uJiYobT1jKGcsaCxsLGspLENhKG0s
ZiksZSYmMSE9PWUmJm4mJiFuW21dJiYoblttXT17fSkscz1uW21dLG9hKHMsZikpO3JldHVybiBk
P3tjb250ZXh0Om4sbmFtZTptLHZhbHVlOnN9OnN9fSxub25Db21wdXRlZE1lbWJlcjpmdW5jdGlv
bihhLGMsZCxlLGYsZyl7cmV0dXJuIGZ1bmN0aW9uKGgsbCxrLG4pe2g9YShoLGwsayxuKTtmJiYx
IT09ZiYmaCYmIWhbY10mJihoW2NdPXt9KTsKK2w9bnVsbCE9aD9oW2NdOnQ7KGR8fEZiKGMpKSYm
b2EobCxnKTtyZXR1cm4gZT97Y29udGV4dDpoLG5hbWU6Yyx2YWx1ZTpsfTpsfX0saW5wdXRzOmZ1
bmN0aW9uKGEsYyl7cmV0dXJuIGZ1bmN0aW9uKGQsZSxmLGcpe3JldHVybiBnP2dbY106YShkLGUs
Zil9fX07dmFyIGhjPWZ1bmN0aW9uKGEsYyxkKXt0aGlzLmxleGVyPWE7dGhpcy4kZmlsdGVyPWM7
dGhpcy5vcHRpb25zPWQ7dGhpcy5hc3Q9bmV3IHEodGhpcy5sZXhlcik7dGhpcy5hc3RDb21waWxl
cj1kLmNzcD9uZXcgc2QodGhpcy5hc3QsYyk6bmV3IHJkKHRoaXMuYXN0LGMpfTtoYy5wcm90b3R5
cGU9e2NvbnN0cnVjdG9yOmhjLHBhcnNlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmFzdENvbXBp
bGVyLmNvbXBpbGUoYSx0aGlzLm9wdGlvbnMuZXhwZW5zaXZlQ2hlY2tzKX19O2dhKCk7Z2EoKTt2
YXIgWWY9T2JqZWN0LnByb3RvdHlwZS52YWx1ZU9mLERhPUooIiRzY2UiKSxwYT17SFRNTDoiaHRt
bCIsQ1NTOiJjc3MiLFVSTDoidXJsIiwKK1JFU09VUkNFX1VSTDoicmVzb3VyY2VVcmwiLEpTOiJq
cyJ9LGVhPUooIiRjb21waWxlIiksWD1VLmNyZWF0ZUVsZW1lbnQoImEiKSx3ZD1CYShPLmxvY2F0
aW9uLmhyZWYpO3hkLiRpbmplY3Q9WyIkZG9jdW1lbnQiXTtMYy4kaW5qZWN0PVsiJHByb3ZpZGUi
XTt5ZC4kaW5qZWN0PVsiJGxvY2FsZSJdO0FkLiRpbmplY3Q9WyIkbG9jYWxlIl07dmFyIERkPSIu
IixoZz17eXl5eTpZKCJGdWxsWWVhciIsNCkseXk6WSgiRnVsbFllYXIiLDIsMCwhMCkseTpZKCJG
dWxsWWVhciIsMSksTU1NTTpIYigiTW9udGgiKSxNTU06SGIoIk1vbnRoIiwhMCksTU06WSgiTW9u
dGgiLDIsMSksTTpZKCJNb250aCIsMSwxKSxkZDpZKCJEYXRlIiwyKSxkOlkoIkRhdGUiLDEpLEhI
OlkoIkhvdXJzIiwyKSxIOlkoIkhvdXJzIiwxKSxoaDpZKCJIb3VycyIsMiwtMTIpLGg6WSgiSG91
cnMiLDEsLTEyKSxtbTpZKCJNaW51dGVzIiwyKSxtOlkoIk1pbnV0ZXMiLDEpLHNzOlkoIlNlY29u
ZHMiLDIpLHM6WSgiU2Vjb25kcyIsCisxKSxzc3M6WSgiTWlsbGlzZWNvbmRzIiwzKSxFRUVFOkhi
KCJEYXkiKSxFRUU6SGIoIkRheSIsITApLGE6ZnVuY3Rpb24oYSxjKXtyZXR1cm4gMTI+YS5nZXRI
b3VycygpP2MuQU1QTVNbMF06Yy5BTVBNU1sxXX0sWjpmdW5jdGlvbihhLGMsZCl7YT0tMSpkO3Jl
dHVybiBhPSgwPD1hPyIrIjoiIikrKEdiKE1hdGhbMDxhPyJmbG9vciI6ImNlaWwiXShhLzYwKSwy
KStHYihNYXRoLmFicyhhJTYwKSwyKSl9LHd3OkZkKDIpLHc6RmQoMSksRzpqYyxHRzpqYyxHR0c6
amMsR0dHRzpmdW5jdGlvbihhLGMpe3JldHVybiAwPj1hLmdldEZ1bGxZZWFyKCk/Yy5FUkFOQU1F
U1swXTpjLkVSQU5BTUVTWzFdfX0sZ2c9LygoPzpbXnlNZEhobXNhWkV3RyddKyl8KD86Jyg/Olte
J118JycpKicpfCg/OkUrfHkrfE0rfGQrfEgrfGgrfG0rfHMrfGF8WnxHK3x3KykpKC4qKS8sZmc9
L15cLT9cZCskLzt6ZC4kaW5qZWN0PVsiJGxvY2FsZSJdO3ZhciBjZz1yYShNKSxkZz1yYShyYik7
QmQuJGluamVjdD0KK1siJHBhcnNlIl07dmFyIGllPXJhKHtyZXN0cmljdDoiRSIsY29tcGlsZTpm
dW5jdGlvbihhLGMpe2lmKCFjLmhyZWYmJiFjLnhsaW5rSHJlZilyZXR1cm4gZnVuY3Rpb24oYSxj
KXtpZigiYSI9PT1jWzBdLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpe3ZhciBmPSJbb2JqZWN0IFNW
R0FuaW1hdGVkU3RyaW5nXSI9PT1zYS5jYWxsKGMucHJvcCgiaHJlZiIpKT8ieGxpbms6aHJlZiI6
ImhyZWYiO2Mub24oImNsaWNrIixmdW5jdGlvbihhKXtjLmF0dHIoZil8fGEucHJldmVudERlZmF1
bHQoKX0pfX19fSksc2I9e307bShBYixmdW5jdGlvbihhLGMpe2Z1bmN0aW9uIGQoYSxkLGYpe2Eu
JHdhdGNoKGZbZV0sZnVuY3Rpb24oYSl7Zi4kc2V0KGMsISFhKX0pfWlmKCJtdWx0aXBsZSIhPWEp
e3ZhciBlPXdhKCJuZy0iK2MpLGY9ZDsiY2hlY2tlZCI9PT1hJiYoZj1mdW5jdGlvbihhLGMsZil7
Zi5uZ01vZGVsIT09ZltlXSYmZChhLGMsZil9KTtzYltlXT1mdW5jdGlvbigpe3JldHVybntyZXN0
cmljdDoiQSIsCitwcmlvcml0eToxMDAsbGluazpmfX19fSk7bShVYyxmdW5jdGlvbihhLGMpe3Ni
W2NdPWZ1bmN0aW9uKCl7cmV0dXJue3ByaW9yaXR5OjEwMCxsaW5rOmZ1bmN0aW9uKGEsZSxmKXtp
ZigibmdQYXR0ZXJuIj09PWMmJiIvIj09Zi5uZ1BhdHRlcm4uY2hhckF0KDApJiYoZT1mLm5nUGF0
dGVybi5tYXRjaChqZykpKXtmLiRzZXQoIm5nUGF0dGVybiIsbmV3IFJlZ0V4cChlWzFdLGVbMl0p
KTtyZXR1cm59YS4kd2F0Y2goZltjXSxmdW5jdGlvbihhKXtmLiRzZXQoYyxhKX0pfX19fSk7bShb
InNyYyIsInNyY3NldCIsImhyZWYiXSxmdW5jdGlvbihhKXt2YXIgYz13YSgibmctIithKTtzYltj
XT1mdW5jdGlvbigpe3JldHVybntwcmlvcml0eTo5OSxsaW5rOmZ1bmN0aW9uKGQsZSxmKXt2YXIg
Zz1hLGg9YTsiaHJlZiI9PT1hJiYiW29iamVjdCBTVkdBbmltYXRlZFN0cmluZ10iPT09c2EuY2Fs
bChlLnByb3AoImhyZWYiKSkmJihoPSJ4bGlua0hyZWYiLGYuJGF0dHJbaF09InhsaW5rOmhyZWYi
LAorZz1udWxsKTtmLiRvYnNlcnZlKGMsZnVuY3Rpb24oYyl7Yz8oZi4kc2V0KGgsYyksVWEmJmcm
JmUucHJvcChnLGZbaF0pKToiaHJlZiI9PT1hJiZmLiRzZXQoaCxudWxsKX0pfX19fSk7dmFyIEli
PXskYWRkQ29udHJvbDp2LCQkcmVuYW1lQ29udHJvbDpmdW5jdGlvbihhLGMpe2EuJG5hbWU9Y30s
JHJlbW92ZUNvbnRyb2w6diwkc2V0VmFsaWRpdHk6diwkc2V0RGlydHk6diwkc2V0UHJpc3RpbmU6
diwkc2V0U3VibWl0dGVkOnZ9O0dkLiRpbmplY3Q9WyIkZWxlbWVudCIsIiRhdHRycyIsIiRzY29w
ZSIsIiRhbmltYXRlIiwiJGludGVycG9sYXRlIl07dmFyIE9kPWZ1bmN0aW9uKGEpe3JldHVyblsi
JHRpbWVvdXQiLGZ1bmN0aW9uKGMpe3JldHVybntuYW1lOiJmb3JtIixyZXN0cmljdDphPyJFQUMi
OiJFIixjb250cm9sbGVyOkdkLGNvbXBpbGU6ZnVuY3Rpb24oZCxlKXtkLmFkZENsYXNzKFZhKS5h
ZGRDbGFzcyhtYik7dmFyIGY9ZS5uYW1lPyJuYW1lIjphJiZlLm5nRm9ybT8ibmdGb3JtIjoKKyEx
O3JldHVybntwcmU6ZnVuY3Rpb24oYSxkLGUsayl7aWYoISgiYWN0aW9uImluIGUpKXt2YXIgbj1m
dW5jdGlvbihjKXthLiRhcHBseShmdW5jdGlvbigpe2suJGNvbW1pdFZpZXdWYWx1ZSgpO2suJHNl
dFN1Ym1pdHRlZCgpfSk7Yy5wcmV2ZW50RGVmYXVsdCgpfTtkWzBdLmFkZEV2ZW50TGlzdGVuZXIo
InN1Ym1pdCIsbiwhMSk7ZC5vbigiJGRlc3Ryb3kiLGZ1bmN0aW9uKCl7YyhmdW5jdGlvbigpe2Rb
MF0ucmVtb3ZlRXZlbnRMaXN0ZW5lcigic3VibWl0IixuLCExKX0sMCwhMSl9KX12YXIgbT1rLiQk
cGFyZW50Rm9ybTtmJiYoRWIoYSxrLiRuYW1lLGssay4kbmFtZSksZS4kb2JzZXJ2ZShmLGZ1bmN0
aW9uKGMpe2suJG5hbWUhPT1jJiYoRWIoYSxrLiRuYW1lLHQsay4kbmFtZSksbS4kJHJlbmFtZUNv
bnRyb2woayxjKSxFYihhLGsuJG5hbWUsayxrLiRuYW1lKSl9KSk7ZC5vbigiJGRlc3Ryb3kiLGZ1
bmN0aW9uKCl7bS4kcmVtb3ZlQ29udHJvbChrKTtmJiZFYihhLGVbZl0sdCwKK2suJG5hbWUpO1Ao
ayxJYil9KX19fX19XX0samU9T2QoKSx3ZT1PZCghMCksaWc9L1xkezR9LVswMV1cZC1bMC0zXVxk
VFswLTJdXGQ6WzAtNV1cZDpbMC01XVxkXC5cZCsoWystXVswLTJdXGQ6WzAtNV1cZHxaKS8scmc9
L14oZnRwfGh0dHB8aHR0cHMpOlwvXC8oXHcrOnswLDF9XHcqQCk/KFxTKykoOlswLTldKyk/KFwv
fFwvKFtcdyMhOi4/Kz0mJUAhXC1cL10pKT8kLyxzZz0vXlthLXowLTkhIyQlJicqK1wvPT9eX2B7
fH1+Li1dK0BbYS16MC05XShbYS16MC05LV0qW2EtejAtOV0pPyhcLlthLXowLTldKFthLXowLTkt
XSpbYS16MC05XSk/KSokL2ksdGc9L15ccyooXC18XCspPyhcZCt8KFxkKihcLlxkKikpKShbZUVd
WystXT9cZCspP1xzKiQvLFBkPS9eKFxkezR9KS0oXGR7Mn0pLShcZHsyfSkkLyxRZD0vXihcZHs0
fSktKFxkXGQpLShcZFxkKVQoXGRcZCk6KFxkXGQpKD86OihcZFxkKShcLlxkezEsM30pPyk/JC8s
bWM9L14oXGR7NH0pLVcoXGRcZCkkLyxSZD0vXihcZHs0fSktKFxkXGQpJC8sCitTZD0vXihcZFxk
KTooXGRcZCkoPzo6KFxkXGQpKFwuXGR7MSwzfSk/KT8kLyxUZD17dGV4dDpmdW5jdGlvbihhLGMs
ZCxlLGYsZyl7a2IoYSxjLGQsZSxmLGcpO2tjKGUpfSxkYXRlOmxiKCJkYXRlIixQZCxLYihQZCxb
Inl5eXkiLCJNTSIsImRkIl0pLCJ5eXl5LU1NLWRkIiksImRhdGV0aW1lLWxvY2FsIjpsYigiZGF0
ZXRpbWVsb2NhbCIsUWQsS2IoUWQsInl5eXkgTU0gZGQgSEggbW0gc3Mgc3NzIi5zcGxpdCgiICIp
KSwieXl5eS1NTS1kZFRISDptbTpzcy5zc3MiKSx0aW1lOmxiKCJ0aW1lIixTZCxLYihTZCxbIkhI
IiwibW0iLCJzcyIsInNzcyJdKSwiSEg6bW06c3Muc3NzIiksd2VlazpsYigid2VlayIsbWMsZnVu
Y3Rpb24oYSxjKXtpZihhYShhKSlyZXR1cm4gYTtpZihMKGEpKXttYy5sYXN0SW5kZXg9MDt2YXIg
ZD1tYy5leGVjKGEpO2lmKGQpe3ZhciBlPStkWzFdLGY9K2RbMl0sZz1kPTAsaD0wLGw9MCxrPUVk
KGUpLGY9NyooZi0xKTtjJiYoZD1jLmdldEhvdXJzKCksZz0KK2MuZ2V0TWludXRlcygpLGg9Yy5n
ZXRTZWNvbmRzKCksbD1jLmdldE1pbGxpc2Vjb25kcygpKTtyZXR1cm4gbmV3IERhdGUoZSwwLGsu
Z2V0RGF0ZSgpK2YsZCxnLGgsbCl9fXJldHVybiBOYU59LCJ5eXl5LVd3dyIpLG1vbnRoOmxiKCJt
b250aCIsUmQsS2IoUmQsWyJ5eXl5IiwiTU0iXSksInl5eXktTU0iKSxudW1iZXI6ZnVuY3Rpb24o
YSxjLGQsZSxmLGcpe0lkKGEsYyxkLGUpO2tiKGEsYyxkLGUsZixnKTtlLiQkcGFyc2VyTmFtZT0i
bnVtYmVyIjtlLiRwYXJzZXJzLnB1c2goZnVuY3Rpb24oYSl7cmV0dXJuIGUuJGlzRW1wdHkoYSk/
bnVsbDp0Zy50ZXN0KGEpP3BhcnNlRmxvYXQoYSk6dH0pO2UuJGZvcm1hdHRlcnMucHVzaChmdW5j
dGlvbihhKXtpZighZS4kaXNFbXB0eShhKSl7aWYoIVYoYSkpdGhyb3cgTGIoIm51bWZtdCIsYSk7
YT1hLnRvU3RyaW5nKCl9cmV0dXJuIGF9KTtpZih3KGQubWluKXx8ZC5uZ01pbil7dmFyIGg7ZS4k
dmFsaWRhdG9ycy5taW49ZnVuY3Rpb24oYSl7cmV0dXJuIGUuJGlzRW1wdHkoYSl8fAorQShoKXx8
YT49aH07ZC4kb2JzZXJ2ZSgibWluIixmdW5jdGlvbihhKXt3KGEpJiYhVihhKSYmKGE9cGFyc2VG
bG9hdChhLDEwKSk7aD1WKGEpJiYhaXNOYU4oYSk/YTp0O2UuJHZhbGlkYXRlKCl9KX1pZih3KGQu
bWF4KXx8ZC5uZ01heCl7dmFyIGw7ZS4kdmFsaWRhdG9ycy5tYXg9ZnVuY3Rpb24oYSl7cmV0dXJu
IGUuJGlzRW1wdHkoYSl8fEEobCl8fGE8PWx9O2QuJG9ic2VydmUoIm1heCIsZnVuY3Rpb24oYSl7
dyhhKSYmIVYoYSkmJihhPXBhcnNlRmxvYXQoYSwxMCkpO2w9VihhKSYmIWlzTmFOKGEpP2E6dDtl
LiR2YWxpZGF0ZSgpfSl9fSx1cmw6ZnVuY3Rpb24oYSxjLGQsZSxmLGcpe2tiKGEsYyxkLGUsZixn
KTtrYyhlKTtlLiQkcGFyc2VyTmFtZT0idXJsIjtlLiR2YWxpZGF0b3JzLnVybD1mdW5jdGlvbihh
LGMpe3ZhciBkPWF8fGM7cmV0dXJuIGUuJGlzRW1wdHkoZCl8fHJnLnRlc3QoZCl9fSxlbWFpbDpm
dW5jdGlvbihhLGMsZCxlLGYsZyl7a2IoYSxjLGQsZSxmLGcpO2tjKGUpOworZS4kJHBhcnNlck5h
bWU9ImVtYWlsIjtlLiR2YWxpZGF0b3JzLmVtYWlsPWZ1bmN0aW9uKGEsYyl7dmFyIGQ9YXx8Yzty
ZXR1cm4gZS4kaXNFbXB0eShkKXx8c2cudGVzdChkKX19LHJhZGlvOmZ1bmN0aW9uKGEsYyxkLGUp
e0EoZC5uYW1lKSYmYy5hdHRyKCJuYW1lIiwrK25iKTtjLm9uKCJjbGljayIsZnVuY3Rpb24oYSl7
Y1swXS5jaGVja2VkJiZlLiRzZXRWaWV3VmFsdWUoZC52YWx1ZSxhJiZhLnR5cGUpfSk7ZS4kcmVu
ZGVyPWZ1bmN0aW9uKCl7Y1swXS5jaGVja2VkPWQudmFsdWU9PWUuJHZpZXdWYWx1ZX07ZC4kb2Jz
ZXJ2ZSgidmFsdWUiLGUuJHJlbmRlcil9LGNoZWNrYm94OmZ1bmN0aW9uKGEsYyxkLGUsZixnLGgs
bCl7dmFyIGs9SmQobCxhLCJuZ1RydWVWYWx1ZSIsZC5uZ1RydWVWYWx1ZSwhMCksbj1KZChsLGEs
Im5nRmFsc2VWYWx1ZSIsZC5uZ0ZhbHNlVmFsdWUsITEpO2Mub24oImNsaWNrIixmdW5jdGlvbihh
KXtlLiRzZXRWaWV3VmFsdWUoY1swXS5jaGVja2VkLGEmJgorYS50eXBlKX0pO2UuJHJlbmRlcj1m
dW5jdGlvbigpe2NbMF0uY2hlY2tlZD1lLiR2aWV3VmFsdWV9O2UuJGlzRW1wdHk9ZnVuY3Rpb24o
YSl7cmV0dXJuITE9PT1hfTtlLiRmb3JtYXR0ZXJzLnB1c2goZnVuY3Rpb24oYSl7cmV0dXJuIGth
KGEsayl9KTtlLiRwYXJzZXJzLnB1c2goZnVuY3Rpb24oYSl7cmV0dXJuIGE/azpufSl9LGhpZGRl
bjp2LGJ1dHRvbjp2LHN1Ym1pdDp2LHJlc2V0OnYsZmlsZTp2fSxGYz1bIiRicm93c2VyIiwiJHNu
aWZmZXIiLCIkZmlsdGVyIiwiJHBhcnNlIixmdW5jdGlvbihhLGMsZCxlKXtyZXR1cm57cmVzdHJp
Y3Q6IkUiLHJlcXVpcmU6WyI/bmdNb2RlbCJdLGxpbms6e3ByZTpmdW5jdGlvbihmLGcsaCxsKXts
WzBdJiYoVGRbTShoLnR5cGUpXXx8VGQudGV4dCkoZixnLGgsbFswXSxjLGEsZCxlKX19fX1dLHVn
PS9eKHRydWV8ZmFsc2V8XGQrKSQvLE9lPWZ1bmN0aW9uKCl7cmV0dXJue3Jlc3RyaWN0OiJBIixw
cmlvcml0eToxMDAsY29tcGlsZTpmdW5jdGlvbihhLAorYyl7cmV0dXJuIHVnLnRlc3QoYy5uZ1Zh
bHVlKT9mdW5jdGlvbihhLGMsZil7Zi4kc2V0KCJ2YWx1ZSIsYS4kZXZhbChmLm5nVmFsdWUpKX06
ZnVuY3Rpb24oYSxjLGYpe2EuJHdhdGNoKGYubmdWYWx1ZSxmdW5jdGlvbihhKXtmLiRzZXQoInZh
bHVlIixhKX0pfX19fSxvZT1bIiRjb21waWxlIixmdW5jdGlvbihhKXtyZXR1cm57cmVzdHJpY3Q6
IkFDIixjb21waWxlOmZ1bmN0aW9uKGMpe2EuJCRhZGRCaW5kaW5nQ2xhc3MoYyk7cmV0dXJuIGZ1
bmN0aW9uKGMsZSxmKXthLiQkYWRkQmluZGluZ0luZm8oZSxmLm5nQmluZCk7ZT1lWzBdO2MuJHdh
dGNoKGYubmdCaW5kLGZ1bmN0aW9uKGEpe2UudGV4dENvbnRlbnQ9YT09PXQ/IiI6YX0pfX19fV0s
cWU9WyIkaW50ZXJwb2xhdGUiLCIkY29tcGlsZSIsZnVuY3Rpb24oYSxjKXtyZXR1cm57Y29tcGls
ZTpmdW5jdGlvbihkKXtjLiQkYWRkQmluZGluZ0NsYXNzKGQpO3JldHVybiBmdW5jdGlvbihkLGYs
Zyl7ZD1hKGYuYXR0cihnLiRhdHRyLm5nQmluZFRlbXBsYXRlKSk7CitjLiQkYWRkQmluZGluZ0lu
Zm8oZixkLmV4cHJlc3Npb25zKTtmPWZbMF07Zy4kb2JzZXJ2ZSgibmdCaW5kVGVtcGxhdGUiLGZ1
bmN0aW9uKGEpe2YudGV4dENvbnRlbnQ9YT09PXQ/IiI6YX0pfX19fV0scGU9WyIkc2NlIiwiJHBh
cnNlIiwiJGNvbXBpbGUiLGZ1bmN0aW9uKGEsYyxkKXtyZXR1cm57cmVzdHJpY3Q6IkEiLGNvbXBp
bGU6ZnVuY3Rpb24oZSxmKXt2YXIgZz1jKGYubmdCaW5kSHRtbCksaD1jKGYubmdCaW5kSHRtbCxm
dW5jdGlvbihhKXtyZXR1cm4oYXx8IiIpLnRvU3RyaW5nKCl9KTtkLiQkYWRkQmluZGluZ0NsYXNz
KGUpO3JldHVybiBmdW5jdGlvbihjLGUsZil7ZC4kJGFkZEJpbmRpbmdJbmZvKGUsZi5uZ0JpbmRI
dG1sKTtjLiR3YXRjaChoLGZ1bmN0aW9uKCl7ZS5odG1sKGEuZ2V0VHJ1c3RlZEh0bWwoZyhjKSl8
fCIiKX0pfX19fV0sTmU9cmEoe3Jlc3RyaWN0OiJBIixyZXF1aXJlOiJuZ01vZGVsIixsaW5rOmZ1
bmN0aW9uKGEsYyxkLGUpe2UuJHZpZXdDaGFuZ2VMaXN0ZW5lcnMucHVzaChmdW5jdGlvbigpe2Eu
JGV2YWwoZC5uZ0NoYW5nZSl9KX19KSwKK3JlPWxjKCIiLCEwKSx0ZT1sYygiT2RkIiwwKSxzZT1s
YygiRXZlbiIsMSksdWU9TWEoe2NvbXBpbGU6ZnVuY3Rpb24oYSxjKXtjLiRzZXQoIm5nQ2xvYWsi
LHQpO2EucmVtb3ZlQ2xhc3MoIm5nLWNsb2FrIil9fSksdmU9W2Z1bmN0aW9uKCl7cmV0dXJue3Jl
c3RyaWN0OiJBIixzY29wZTohMCxjb250cm9sbGVyOiJAIixwcmlvcml0eTo1MDB9fV0sS2M9e30s
dmc9e2JsdXI6ITAsZm9jdXM6ITB9O20oImNsaWNrIGRibGNsaWNrIG1vdXNlZG93biBtb3VzZXVw
IG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZW1vdmUgbW91c2VlbnRlciBtb3VzZWxlYXZlIGtleWRv
d24ga2V5dXAga2V5cHJlc3Mgc3VibWl0IGZvY3VzIGJsdXIgY29weSBjdXQgcGFzdGUiLnNwbGl0
KCIgIiksZnVuY3Rpb24oYSl7dmFyIGM9d2EoIm5nLSIrYSk7S2NbY109WyIkcGFyc2UiLCIkcm9v
dFNjb3BlIixmdW5jdGlvbihkLGUpe3JldHVybntyZXN0cmljdDoiQSIsY29tcGlsZTpmdW5jdGlv
bihmLGcpe3ZhciBoPQorZChnW2NdLG51bGwsITApO3JldHVybiBmdW5jdGlvbihjLGQpe2Qub24o
YSxmdW5jdGlvbihkKXt2YXIgZj1mdW5jdGlvbigpe2goYyx7JGV2ZW50OmR9KX07dmdbYV0mJmUu
JCRwaGFzZT9jLiRldmFsQXN5bmMoZik6Yy4kYXBwbHkoZil9KX19fX1dfSk7dmFyIHllPVsiJGFu
aW1hdGUiLGZ1bmN0aW9uKGEpe3JldHVybnttdWx0aUVsZW1lbnQ6ITAsdHJhbnNjbHVkZToiZWxl
bWVudCIscHJpb3JpdHk6NjAwLHRlcm1pbmFsOiEwLHJlc3RyaWN0OiJBIiwkJHRsYjohMCxsaW5r
OmZ1bmN0aW9uKGMsZCxlLGYsZyl7dmFyIGgsbCxrO2MuJHdhdGNoKGUubmdJZixmdW5jdGlvbihj
KXtjP2x8fGcoZnVuY3Rpb24oYyxmKXtsPWY7Y1tjLmxlbmd0aCsrXT1VLmNyZWF0ZUNvbW1lbnQo
IiBlbmQgbmdJZjogIitlLm5nSWYrIiAiKTtoPXtjbG9uZTpjfTthLmVudGVyKGMsZC5wYXJlbnQo
KSxkKX0pOihrJiYoay5yZW1vdmUoKSxrPW51bGwpLGwmJihsLiRkZXN0cm95KCksbD1udWxsKSxo
JiYoaz0KK3FiKGguY2xvbmUpLGEubGVhdmUoaykudGhlbihmdW5jdGlvbigpe2s9bnVsbH0pLGg9
bnVsbCkpfSl9fX1dLHplPVsiJHRlbXBsYXRlUmVxdWVzdCIsIiRhbmNob3JTY3JvbGwiLCIkYW5p
bWF0ZSIsZnVuY3Rpb24oYSxjLGQpe3JldHVybntyZXN0cmljdDoiRUNBIixwcmlvcml0eTo0MDAs
dGVybWluYWw6ITAsdHJhbnNjbHVkZToiZWxlbWVudCIsY29udHJvbGxlcjpjYS5ub29wLGNvbXBp
bGU6ZnVuY3Rpb24oZSxmKXt2YXIgZz1mLm5nSW5jbHVkZXx8Zi5zcmMsaD1mLm9ubG9hZHx8IiIs
bD1mLmF1dG9zY3JvbGw7cmV0dXJuIGZ1bmN0aW9uKGUsZixtLHMscSl7dmFyIHQ9MCxGLHUscCx2
PWZ1bmN0aW9uKCl7dSYmKHUucmVtb3ZlKCksdT1udWxsKTtGJiYoRi4kZGVzdHJveSgpLEY9bnVs
bCk7cCYmKGQubGVhdmUocCkudGhlbihmdW5jdGlvbigpe3U9bnVsbH0pLHU9cCxwPW51bGwpfTtl
LiR3YXRjaChnLGZ1bmN0aW9uKGcpe3ZhciBtPWZ1bmN0aW9uKCl7IXcobCl8fGwmJiFlLiRldmFs
KGwpfHwKK2MoKX0scj0rK3Q7Zz8oYShnLCEwKS50aGVuKGZ1bmN0aW9uKGEpe2lmKHI9PT10KXt2
YXIgYz1lLiRuZXcoKTtzLnRlbXBsYXRlPWE7YT1xKGMsZnVuY3Rpb24oYSl7digpO2QuZW50ZXIo
YSxudWxsLGYpLnRoZW4obSl9KTtGPWM7cD1hO0YuJGVtaXQoIiRpbmNsdWRlQ29udGVudExvYWRl
ZCIsZyk7ZS4kZXZhbChoKX19LGZ1bmN0aW9uKCl7cj09PXQmJih2KCksZS4kZW1pdCgiJGluY2x1
ZGVDb250ZW50RXJyb3IiLGcpKX0pLGUuJGVtaXQoIiRpbmNsdWRlQ29udGVudFJlcXVlc3RlZCIs
ZykpOih2KCkscy50ZW1wbGF0ZT1udWxsKX0pfX19fV0sUWU9WyIkY29tcGlsZSIsZnVuY3Rpb24o
YSl7cmV0dXJue3Jlc3RyaWN0OiJFQ0EiLHByaW9yaXR5Oi00MDAscmVxdWlyZToibmdJbmNsdWRl
IixsaW5rOmZ1bmN0aW9uKGMsZCxlLGYpey9TVkcvLnRlc3QoZFswXS50b1N0cmluZygpKT8oZC5l
bXB0eSgpLGEoTmMoZi50ZW1wbGF0ZSxVKS5jaGlsZE5vZGVzKShjLGZ1bmN0aW9uKGEpe2QuYXBw
ZW5kKGEpfSwKK3tmdXR1cmVQYXJlbnRFbGVtZW50OmR9KSk6KGQuaHRtbChmLnRlbXBsYXRlKSxh
KGQuY29udGVudHMoKSkoYykpfX19XSxBZT1NYSh7cHJpb3JpdHk6NDUwLGNvbXBpbGU6ZnVuY3Rp
b24oKXtyZXR1cm57cHJlOmZ1bmN0aW9uKGEsYyxkKXthLiRldmFsKGQubmdJbml0KX19fX0pLE1l
PWZ1bmN0aW9uKCl7cmV0dXJue3Jlc3RyaWN0OiJBIixwcmlvcml0eToxMDAscmVxdWlyZToibmdN
b2RlbCIsbGluazpmdW5jdGlvbihhLGMsZCxlKXt2YXIgZj1jLmF0dHIoZC4kYXR0ci5uZ0xpc3Qp
fHwiLCAiLGc9ImZhbHNlIiE9PWQubmdUcmltLGg9Zz9SKGYpOmY7ZS4kcGFyc2Vycy5wdXNoKGZ1
bmN0aW9uKGEpe2lmKCFBKGEpKXt2YXIgYz1bXTthJiZtKGEuc3BsaXQoaCksZnVuY3Rpb24oYSl7
YSYmYy5wdXNoKGc/UihhKTphKX0pO3JldHVybiBjfX0pO2UuJGZvcm1hdHRlcnMucHVzaChmdW5j
dGlvbihhKXtyZXR1cm4gRyhhKT9hLmpvaW4oZik6dH0pO2UuJGlzRW1wdHk9ZnVuY3Rpb24oYSl7
cmV0dXJuIWF8fAorIWEubGVuZ3RofX19fSxtYj0ibmctdmFsaWQiLEtkPSJuZy1pbnZhbGlkIixW
YT0ibmctcHJpc3RpbmUiLEpiPSJuZy1kaXJ0eSIsTWQ9Im5nLXBlbmRpbmciLExiPW5ldyBKKCJu
Z01vZGVsIiksd2c9WyIkc2NvcGUiLCIkZXhjZXB0aW9uSGFuZGxlciIsIiRhdHRycyIsIiRlbGVt
ZW50IiwiJHBhcnNlIiwiJGFuaW1hdGUiLCIkdGltZW91dCIsIiRyb290U2NvcGUiLCIkcSIsIiRp
bnRlcnBvbGF0ZSIsZnVuY3Rpb24oYSxjLGQsZSxmLGcsaCxsLGssbil7dGhpcy4kbW9kZWxWYWx1
ZT10aGlzLiR2aWV3VmFsdWU9TnVtYmVyLk5hTjt0aGlzLiQkcmF3TW9kZWxWYWx1ZT10O3RoaXMu
JHZhbGlkYXRvcnM9e307dGhpcy4kYXN5bmNWYWxpZGF0b3JzPXt9O3RoaXMuJHBhcnNlcnM9W107
dGhpcy4kZm9ybWF0dGVycz1bXTt0aGlzLiR2aWV3Q2hhbmdlTGlzdGVuZXJzPVtdO3RoaXMuJHVu
dG91Y2hlZD0hMDt0aGlzLiR0b3VjaGVkPSExO3RoaXMuJHByaXN0aW5lPSEwO3RoaXMuJGRpcnR5
PQorITE7dGhpcy4kdmFsaWQ9ITA7dGhpcy4kaW52YWxpZD0hMTt0aGlzLiRlcnJvcj17fTt0aGlz
LiQkc3VjY2Vzcz17fTt0aGlzLiRwZW5kaW5nPXQ7dGhpcy4kbmFtZT1uKGQubmFtZXx8IiIsITEp
KGEpO3ZhciByPWYoZC5uZ01vZGVsKSxzPXIuYXNzaWduLHE9cixDPXMsRj1udWxsLHUscD10aGlz
O3RoaXMuJCRzZXRPcHRpb25zPWZ1bmN0aW9uKGEpe2lmKChwLiRvcHRpb25zPWEpJiZhLmdldHRl
clNldHRlcil7dmFyIGM9ZihkLm5nTW9kZWwrIigpIiksZz1mKGQubmdNb2RlbCsiKCQkJHApIik7
cT1mdW5jdGlvbihhKXt2YXIgZD1yKGEpO3ooZCkmJihkPWMoYSkpO3JldHVybiBkfTtDPWZ1bmN0
aW9uKGEsYyl7eihyKGEpKT9nKGEseyQkJHA6cC4kbW9kZWxWYWx1ZX0pOnMoYSxwLiRtb2RlbFZh
bHVlKX19ZWxzZSBpZighci5hc3NpZ24pdGhyb3cgTGIoIm5vbmFzc2lnbiIsZC5uZ01vZGVsLHVh
KGUpKTt9O3RoaXMuJHJlbmRlcj12O3RoaXMuJGlzRW1wdHk9ZnVuY3Rpb24oYSl7cmV0dXJuIEEo
YSl8fAorIiI9PT1hfHxudWxsPT09YXx8YSE9PWF9O3ZhciBLPWUuaW5oZXJpdGVkRGF0YSgiJGZv
cm1Db250cm9sbGVyIil8fEliLHk9MDtIZCh7Y3RybDp0aGlzLCRlbGVtZW50OmUsc2V0OmZ1bmN0
aW9uKGEsYyl7YVtjXT0hMH0sdW5zZXQ6ZnVuY3Rpb24oYSxjKXtkZWxldGUgYVtjXX0scGFyZW50
Rm9ybTpLLCRhbmltYXRlOmd9KTt0aGlzLiRzZXRQcmlzdGluZT1mdW5jdGlvbigpe3AuJGRpcnR5
PSExO3AuJHByaXN0aW5lPSEwO2cucmVtb3ZlQ2xhc3MoZSxKYik7Zy5hZGRDbGFzcyhlLFZhKX07
dGhpcy4kc2V0RGlydHk9ZnVuY3Rpb24oKXtwLiRkaXJ0eT0hMDtwLiRwcmlzdGluZT0hMTtnLnJl
bW92ZUNsYXNzKGUsVmEpO2cuYWRkQ2xhc3MoZSxKYik7Sy4kc2V0RGlydHkoKX07dGhpcy4kc2V0
VW50b3VjaGVkPWZ1bmN0aW9uKCl7cC4kdG91Y2hlZD0hMTtwLiR1bnRvdWNoZWQ9ITA7Zy5zZXRD
bGFzcyhlLCJuZy11bnRvdWNoZWQiLCJuZy10b3VjaGVkIil9O3RoaXMuJHNldFRvdWNoZWQ9Citm
dW5jdGlvbigpe3AuJHRvdWNoZWQ9ITA7cC4kdW50b3VjaGVkPSExO2cuc2V0Q2xhc3MoZSwibmct
dG91Y2hlZCIsIm5nLXVudG91Y2hlZCIpfTt0aGlzLiRyb2xsYmFja1ZpZXdWYWx1ZT1mdW5jdGlv
bigpe2guY2FuY2VsKEYpO3AuJHZpZXdWYWx1ZT1wLiQkbGFzdENvbW1pdHRlZFZpZXdWYWx1ZTtw
LiRyZW5kZXIoKX07dGhpcy4kdmFsaWRhdGU9ZnVuY3Rpb24oKXtpZighVihwLiRtb2RlbFZhbHVl
KXx8IWlzTmFOKHAuJG1vZGVsVmFsdWUpKXt2YXIgYT1wLiQkcmF3TW9kZWxWYWx1ZSxjPXAuJHZh
bGlkLGQ9cC4kbW9kZWxWYWx1ZSxlPXAuJG9wdGlvbnMmJnAuJG9wdGlvbnMuYWxsb3dJbnZhbGlk
O3AuJCRydW5WYWxpZGF0b3JzKGEscC4kJGxhc3RDb21taXR0ZWRWaWV3VmFsdWUsZnVuY3Rpb24o
Zil7ZXx8Yz09PWZ8fChwLiRtb2RlbFZhbHVlPWY/YTp0LHAuJG1vZGVsVmFsdWUhPT1kJiZwLiQk
d3JpdGVNb2RlbFRvU2NvcGUoKSl9KX19O3RoaXMuJCRydW5WYWxpZGF0b3JzPQorZnVuY3Rpb24o
YSxjLGQpe2Z1bmN0aW9uIGUoKXt2YXIgZD0hMDttKHAuJHZhbGlkYXRvcnMsZnVuY3Rpb24oZSxm
KXt2YXIgaD1lKGEsYyk7ZD1kJiZoO2coZixoKX0pO3JldHVybiBkPyEwOihtKHAuJGFzeW5jVmFs
aWRhdG9ycyxmdW5jdGlvbihhLGMpe2coYyxudWxsKX0pLCExKX1mdW5jdGlvbiBmKCl7dmFyIGQ9
W10sZT0hMDttKHAuJGFzeW5jVmFsaWRhdG9ycyxmdW5jdGlvbihmLGgpe3ZhciBrPWYoYSxjKTtp
Zigha3x8IXooay50aGVuKSl0aHJvdyBMYigiJGFzeW5jVmFsaWRhdG9ycyIsayk7ZyhoLHQpO2Qu
cHVzaChrLnRoZW4oZnVuY3Rpb24oKXtnKGgsITApfSxmdW5jdGlvbihhKXtlPSExO2coaCwhMSl9
KSl9KTtkLmxlbmd0aD9rLmFsbChkKS50aGVuKGZ1bmN0aW9uKCl7aChlKX0sdik6aCghMCl9ZnVu
Y3Rpb24gZyhhLGMpe2w9PT15JiZwLiRzZXRWYWxpZGl0eShhLGMpfWZ1bmN0aW9uIGgoYSl7bD09
PXkmJmQoYSl9eSsrO3ZhciBsPXk7KGZ1bmN0aW9uKCl7dmFyIGE9CitwLiQkcGFyc2VyTmFtZXx8
InBhcnNlIjtpZih1PT09dClnKGEsbnVsbCk7ZWxzZSByZXR1cm4gdXx8KG0ocC4kdmFsaWRhdG9y
cyxmdW5jdGlvbihhLGMpe2coYyxudWxsKX0pLG0ocC4kYXN5bmNWYWxpZGF0b3JzLGZ1bmN0aW9u
KGEsYyl7ZyhjLG51bGwpfSkpLGcoYSx1KSx1O3JldHVybiEwfSkoKT9lKCk/ZigpOmgoITEpOmgo
ITEpfTt0aGlzLiRjb21taXRWaWV3VmFsdWU9ZnVuY3Rpb24oKXt2YXIgYT1wLiR2aWV3VmFsdWU7
aC5jYW5jZWwoRik7aWYocC4kJGxhc3RDb21taXR0ZWRWaWV3VmFsdWUhPT1hfHwiIj09PWEmJnAu
JCRoYXNOYXRpdmVWYWxpZGF0b3JzKXAuJCRsYXN0Q29tbWl0dGVkVmlld1ZhbHVlPWEscC4kcHJp
c3RpbmUmJnRoaXMuJHNldERpcnR5KCksdGhpcy4kJHBhcnNlQW5kVmFsaWRhdGUoKX07dGhpcy4k
JHBhcnNlQW5kVmFsaWRhdGU9ZnVuY3Rpb24oKXt2YXIgYz1wLiQkbGFzdENvbW1pdHRlZFZpZXdW
YWx1ZTtpZih1PUEoYyk/dDohMClmb3IodmFyIGQ9CiswO2Q8cC4kcGFyc2Vycy5sZW5ndGg7ZCsr
KWlmKGM9cC4kcGFyc2Vyc1tkXShjKSxBKGMpKXt1PSExO2JyZWFrfVYocC4kbW9kZWxWYWx1ZSkm
JmlzTmFOKHAuJG1vZGVsVmFsdWUpJiYocC4kbW9kZWxWYWx1ZT1xKGEpKTt2YXIgZT1wLiRtb2Rl
bFZhbHVlLGY9cC4kb3B0aW9ucyYmcC4kb3B0aW9ucy5hbGxvd0ludmFsaWQ7cC4kJHJhd01vZGVs
VmFsdWU9YztmJiYocC4kbW9kZWxWYWx1ZT1jLHAuJG1vZGVsVmFsdWUhPT1lJiZwLiQkd3JpdGVN
b2RlbFRvU2NvcGUoKSk7cC4kJHJ1blZhbGlkYXRvcnMoYyxwLiQkbGFzdENvbW1pdHRlZFZpZXdW
YWx1ZSxmdW5jdGlvbihhKXtmfHwocC4kbW9kZWxWYWx1ZT1hP2M6dCxwLiRtb2RlbFZhbHVlIT09
ZSYmcC4kJHdyaXRlTW9kZWxUb1Njb3BlKCkpfSl9O3RoaXMuJCR3cml0ZU1vZGVsVG9TY29wZT1m
dW5jdGlvbigpe0MoYSxwLiRtb2RlbFZhbHVlKTttKHAuJHZpZXdDaGFuZ2VMaXN0ZW5lcnMsZnVu
Y3Rpb24oYSl7dHJ5e2EoKX1jYXRjaChkKXtjKGQpfX0pfTsKK3RoaXMuJHNldFZpZXdWYWx1ZT1m
dW5jdGlvbihhLGMpe3AuJHZpZXdWYWx1ZT1hO3AuJG9wdGlvbnMmJiFwLiRvcHRpb25zLnVwZGF0
ZU9uRGVmYXVsdHx8cC4kJGRlYm91bmNlVmlld1ZhbHVlQ29tbWl0KGMpfTt0aGlzLiQkZGVib3Vu
Y2VWaWV3VmFsdWVDb21taXQ9ZnVuY3Rpb24oYyl7dmFyIGQ9MCxlPXAuJG9wdGlvbnM7ZSYmdyhl
LmRlYm91bmNlKSYmKGU9ZS5kZWJvdW5jZSxWKGUpP2Q9ZTpWKGVbY10pP2Q9ZVtjXTpWKGVbImRl
ZmF1bHQiXSkmJihkPWVbImRlZmF1bHQiXSkpO2guY2FuY2VsKEYpO2Q/Rj1oKGZ1bmN0aW9uKCl7
cC4kY29tbWl0Vmlld1ZhbHVlKCl9LGQpOmwuJCRwaGFzZT9wLiRjb21taXRWaWV3VmFsdWUoKTph
LiRhcHBseShmdW5jdGlvbigpe3AuJGNvbW1pdFZpZXdWYWx1ZSgpfSl9O2EuJHdhdGNoKGZ1bmN0
aW9uKCl7dmFyIGM9cShhKTtpZihjIT09cC4kbW9kZWxWYWx1ZSYmKHAuJG1vZGVsVmFsdWU9PT1w
LiRtb2RlbFZhbHVlfHxjPT09Yykpe3AuJG1vZGVsVmFsdWU9CitwLiQkcmF3TW9kZWxWYWx1ZT1j
O3U9dDtmb3IodmFyIGQ9cC4kZm9ybWF0dGVycyxlPWQubGVuZ3RoLGY9YztlLS07KWY9ZFtlXShm
KTtwLiR2aWV3VmFsdWUhPT1mJiYocC4kdmlld1ZhbHVlPXAuJCRsYXN0Q29tbWl0dGVkVmlld1Zh
bHVlPWYscC4kcmVuZGVyKCkscC4kJHJ1blZhbGlkYXRvcnMoYyxmLHYpKX1yZXR1cm4gY30pfV0s
TGU9WyIkcm9vdFNjb3BlIixmdW5jdGlvbihhKXtyZXR1cm57cmVzdHJpY3Q6IkEiLHJlcXVpcmU6
WyJuZ01vZGVsIiwiXj9mb3JtIiwiXj9uZ01vZGVsT3B0aW9ucyJdLGNvbnRyb2xsZXI6d2cscHJp
b3JpdHk6MSxjb21waWxlOmZ1bmN0aW9uKGMpe2MuYWRkQ2xhc3MoVmEpLmFkZENsYXNzKCJuZy11
bnRvdWNoZWQiKS5hZGRDbGFzcyhtYik7cmV0dXJue3ByZTpmdW5jdGlvbihhLGMsZixnKXt2YXIg
aD1nWzBdLGw9Z1sxXXx8SWI7aC4kJHNldE9wdGlvbnMoZ1syXSYmZ1syXS4kb3B0aW9ucyk7bC4k
YWRkQ29udHJvbChoKTtmLiRvYnNlcnZlKCJuYW1lIiwKK2Z1bmN0aW9uKGEpe2guJG5hbWUhPT1h
JiZsLiQkcmVuYW1lQ29udHJvbChoLGEpfSk7YS4kb24oIiRkZXN0cm95IixmdW5jdGlvbigpe2wu
JHJlbW92ZUNvbnRyb2woaCl9KX0scG9zdDpmdW5jdGlvbihjLGUsZixnKXt2YXIgaD1nWzBdO2lm
KGguJG9wdGlvbnMmJmguJG9wdGlvbnMudXBkYXRlT24pZS5vbihoLiRvcHRpb25zLnVwZGF0ZU9u
LGZ1bmN0aW9uKGEpe2guJCRkZWJvdW5jZVZpZXdWYWx1ZUNvbW1pdChhJiZhLnR5cGUpfSk7ZS5v
bigiYmx1ciIsZnVuY3Rpb24oZSl7aC4kdG91Y2hlZHx8KGEuJCRwaGFzZT9jLiRldmFsQXN5bmMo
aC4kc2V0VG91Y2hlZCk6Yy4kYXBwbHkoaC4kc2V0VG91Y2hlZCkpfSl9fX19fV0seGc9Lyhccyt8
XilkZWZhdWx0KFxzK3wkKS8sUGU9ZnVuY3Rpb24oKXtyZXR1cm57cmVzdHJpY3Q6IkEiLGNvbnRy
b2xsZXI6WyIkc2NvcGUiLCIkYXR0cnMiLGZ1bmN0aW9uKGEsYyl7dmFyIGQ9dGhpczt0aGlzLiRv
cHRpb25zPWZhKGEuJGV2YWwoYy5uZ01vZGVsT3B0aW9ucykpOwordGhpcy4kb3B0aW9ucy51cGRh
dGVPbiE9PXQ/KHRoaXMuJG9wdGlvbnMudXBkYXRlT25EZWZhdWx0PSExLHRoaXMuJG9wdGlvbnMu
dXBkYXRlT249Uih0aGlzLiRvcHRpb25zLnVwZGF0ZU9uLnJlcGxhY2UoeGcsZnVuY3Rpb24oKXtk
LiRvcHRpb25zLnVwZGF0ZU9uRGVmYXVsdD0hMDtyZXR1cm4iICJ9KSkpOnRoaXMuJG9wdGlvbnMu
dXBkYXRlT25EZWZhdWx0PSEwfV19fSxCZT1NYSh7dGVybWluYWw6ITAscHJpb3JpdHk6MUUzfSks
eWc9SigibmdPcHRpb25zIiksemc9L15ccyooW1xzXFNdKz8pKD86XHMrYXNccysoW1xzXFNdKz8p
KT8oPzpccytncm91cFxzK2J5XHMrKFtcc1xTXSs/KSk/KD86XHMrZGlzYWJsZVxzK3doZW5ccyso
W1xzXFNdKz8pKT9ccytmb3JccysoPzooW1wkXHddW1wkXHddKil8KD86XChccyooW1wkXHddW1wk
XHddKilccyosXHMqKFtcJFx3XVtcJFx3XSopXHMqXCkpKVxzK2luXHMrKFtcc1xTXSs/KSg/Olxz
K3RyYWNrXHMrYnlccysoW1xzXFNdKz8pKT8kLywKK0plPVsiJGNvbXBpbGUiLCIkcGFyc2UiLGZ1
bmN0aW9uKGEsYyl7ZnVuY3Rpb24gZChhLGQsZSl7ZnVuY3Rpb24gZihhLGMsZCxlLGcpe3RoaXMu
c2VsZWN0VmFsdWU9YTt0aGlzLnZpZXdWYWx1ZT1jO3RoaXMubGFiZWw9ZDt0aGlzLmdyb3VwPWU7
dGhpcy5kaXNhYmxlZD1nfWZ1bmN0aW9uIG4oYSl7dmFyIGM7aWYoIXEmJkVhKGEpKWM9YTtlbHNl
e2M9W107Zm9yKHZhciBkIGluIGEpYS5oYXNPd25Qcm9wZXJ0eShkKSYmIiQiIT09ZC5jaGFyQXQo
MCkmJmMucHVzaChkKX1yZXR1cm4gY312YXIgbT1hLm1hdGNoKHpnKTtpZighbSl0aHJvdyB5Zygi
aWV4cCIsYSx1YShkKSk7dmFyIHM9bVs1XXx8bVs3XSxxPW1bNl07YT0vIGFzIC8udGVzdChtWzBd
KSYmbVsxXTt2YXIgdD1tWzldO2Q9YyhtWzJdP21bMV06cyk7dmFyIHY9YSYmYyhhKXx8ZCx1PXQm
JmModCkscD10P2Z1bmN0aW9uKGEsYyl7cmV0dXJuIHUoZSxjKX06ZnVuY3Rpb24oYSl7cmV0dXJu
IEdhKGEpfSx3PWZ1bmN0aW9uKGEsCitjKXtyZXR1cm4gcChhLHooYSxjKSl9LHk9YyhtWzJdfHxt
WzFdKSxBPWMobVszXXx8IiIpLEI9YyhtWzRdfHwiIiksTj1jKG1bOF0pLEQ9e30sej1xP2Z1bmN0
aW9uKGEsYyl7RFtxXT1jO0Rbc109YTtyZXR1cm4gRH06ZnVuY3Rpb24oYSl7RFtzXT1hO3JldHVy
biBEfTtyZXR1cm57dHJhY2tCeTp0LGdldFRyYWNrQnlWYWx1ZTp3LGdldFdhdGNoYWJsZXM6YyhO
LGZ1bmN0aW9uKGEpe3ZhciBjPVtdO2E9YXx8W107Zm9yKHZhciBkPW4oYSksZj1kLmxlbmd0aCxn
PTA7ZzxmO2crKyl7dmFyIGg9YT09PWQ/ZzpkW2ddLGs9eihhW2hdLGgpLGg9cChhW2hdLGspO2Mu
cHVzaChoKTtpZihtWzJdfHxtWzFdKWg9eShlLGspLGMucHVzaChoKTttWzRdJiYoaz1CKGUsayks
Yy5wdXNoKGspKX1yZXR1cm4gY30pLGdldE9wdGlvbnM6ZnVuY3Rpb24oKXtmb3IodmFyIGE9W10s
Yz17fSxkPU4oZSl8fFtdLGc9bihkKSxoPWcubGVuZ3RoLG09MDttPGg7bSsrKXt2YXIgcj1kPT09
Zz9tOmdbbV0scz0KK3ooZFtyXSxyKSxxPXYoZSxzKSxyPXAocSxzKSx1PXkoZSxzKSx4PUEoZSxz
KSxzPUIoZSxzKSxxPW5ldyBmKHIscSx1LHgscyk7YS5wdXNoKHEpO2Nbcl09cX1yZXR1cm57aXRl
bXM6YSxzZWxlY3RWYWx1ZU1hcDpjLGdldE9wdGlvbkZyb21WaWV3VmFsdWU6ZnVuY3Rpb24oYSl7
cmV0dXJuIGNbdyhhKV19LGdldFZpZXdWYWx1ZUZyb21PcHRpb246ZnVuY3Rpb24oYSl7cmV0dXJu
IHQ/Y2EuY29weShhLnZpZXdWYWx1ZSk6YS52aWV3VmFsdWV9fX19fXZhciBlPVUuY3JlYXRlRWxl
bWVudCgib3B0aW9uIiksZj1VLmNyZWF0ZUVsZW1lbnQoIm9wdGdyb3VwIik7cmV0dXJue3Jlc3Ry
aWN0OiJBIix0ZXJtaW5hbDohMCxyZXF1aXJlOlsic2VsZWN0IiwiP25nTW9kZWwiXSxsaW5rOmZ1
bmN0aW9uKGMsaCxsLGspe2Z1bmN0aW9uIG4oYSxjKXthLmVsZW1lbnQ9YztjLmRpc2FibGVkPWEu
ZGlzYWJsZWQ7YS52YWx1ZSE9PWMudmFsdWUmJihjLnZhbHVlPWEuc2VsZWN0VmFsdWUpO2EubGFi
ZWwhPT0KK2MubGFiZWwmJihjLmxhYmVsPWEubGFiZWwsYy50ZXh0Q29udGVudD1hLmxhYmVsKX1m
dW5jdGlvbiByKGEsYyxkLGUpe2MmJk0oYy5ub2RlTmFtZSk9PT1kP2Q9YzooZD1lLmNsb25lTm9k
ZSghMSksYz9hLmluc2VydEJlZm9yZShkLGMpOmEuYXBwZW5kQ2hpbGQoZCkpO3JldHVybiBkfWZ1
bmN0aW9uIHMoYSl7Zm9yKHZhciBjO2E7KWM9YS5uZXh0U2libGluZyxYYihhKSxhPWN9ZnVuY3Rp
b24gcShhKXt2YXIgYz1wJiZwWzBdLGQ9TiYmTlswXTtpZihjfHxkKWZvcig7YSYmKGE9PT1jfHxh
PT09ZCk7KWE9YS5uZXh0U2libGluZztyZXR1cm4gYX1mdW5jdGlvbiB0KCl7dmFyIGE9RCYmdS5y
ZWFkVmFsdWUoKTtEPXouZ2V0T3B0aW9ucygpO3ZhciBjPXt9LGQ9aFswXS5maXJzdENoaWxkO0Im
JmgucHJlcGVuZChwKTtkPXEoZCk7RC5pdGVtcy5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBnLGs7
YS5ncm91cD8oZz1jW2EuZ3JvdXBdLGd8fChnPXIoaFswXSxkLCJvcHRncm91cCIsZiksZD0KK2cu
bmV4dFNpYmxpbmcsZy5sYWJlbD1hLmdyb3VwLGc9Y1thLmdyb3VwXT17Z3JvdXBFbGVtZW50Omcs
Y3VycmVudE9wdGlvbkVsZW1lbnQ6Zy5maXJzdENoaWxkfSksaz1yKGcuZ3JvdXBFbGVtZW50LGcu
Y3VycmVudE9wdGlvbkVsZW1lbnQsIm9wdGlvbiIsZSksbihhLGspLGcuY3VycmVudE9wdGlvbkVs
ZW1lbnQ9ay5uZXh0U2libGluZyk6KGs9cihoWzBdLGQsIm9wdGlvbiIsZSksbihhLGspLGQ9ay5u
ZXh0U2libGluZyl9KTtPYmplY3Qua2V5cyhjKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3MoY1thXS5j
dXJyZW50T3B0aW9uRWxlbWVudCl9KTtzKGQpO3YuJHJlbmRlcigpO2lmKCF2LiRpc0VtcHR5KGEp
KXt2YXIgZz11LnJlYWRWYWx1ZSgpOyh6LnRyYWNrQnk/a2EoYSxnKTphPT09Zyl8fCh2LiRzZXRW
aWV3VmFsdWUoZyksdi4kcmVuZGVyKCkpfX12YXIgdj1rWzFdO2lmKHYpe3ZhciB1PWtbMF07az1s
Lm11bHRpcGxlO2Zvcih2YXIgcCx3PTAsQT1oLmNoaWxkcmVuKCksST1BLmxlbmd0aDt3PAorSTt3
KyspaWYoIiI9PT1BW3ddLnZhbHVlKXtwPUEuZXEodyk7YnJlYWt9dmFyIEI9ISFwLE49eShlLmNs
b25lTm9kZSghMSkpO04udmFsKCI/Iik7dmFyIEQsej1kKGwubmdPcHRpb25zLGgsYyk7az8odi4k
aXNFbXB0eT1mdW5jdGlvbihhKXtyZXR1cm4hYXx8MD09PWEubGVuZ3RofSx1LndyaXRlVmFsdWU9
ZnVuY3Rpb24oYSl7RC5pdGVtcy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2EuZWxlbWVudC5zZWxlY3Rl
ZD0hMX0pO2EmJmEuZm9yRWFjaChmdW5jdGlvbihhKXsoYT1ELmdldE9wdGlvbkZyb21WaWV3VmFs
dWUoYSkpJiYhYS5kaXNhYmxlZCYmKGEuZWxlbWVudC5zZWxlY3RlZD0hMCl9KX0sdS5yZWFkVmFs
dWU9ZnVuY3Rpb24oKXt2YXIgYT1oLnZhbCgpfHxbXSxjPVtdO20oYSxmdW5jdGlvbihhKXthPUQu
c2VsZWN0VmFsdWVNYXBbYV07YS5kaXNhYmxlZHx8Yy5wdXNoKEQuZ2V0Vmlld1ZhbHVlRnJvbU9w
dGlvbihhKSl9KTtyZXR1cm4gY30sei50cmFja0J5JiZjLiR3YXRjaENvbGxlY3Rpb24oZnVuY3Rp
b24oKXtpZihHKHYuJHZpZXdWYWx1ZSkpcmV0dXJuIHYuJHZpZXdWYWx1ZS5tYXAoZnVuY3Rpb24o
YSl7cmV0dXJuIHouZ2V0VHJhY2tCeVZhbHVlKGEpfSl9LAorZnVuY3Rpb24oKXt2LiRyZW5kZXIo
KX0pKToodS53cml0ZVZhbHVlPWZ1bmN0aW9uKGEpe3ZhciBjPUQuZ2V0T3B0aW9uRnJvbVZpZXdW
YWx1ZShhKTtjJiYhYy5kaXNhYmxlZD9oWzBdLnZhbHVlIT09Yy5zZWxlY3RWYWx1ZSYmKE4ucmVt
b3ZlKCksQnx8cC5yZW1vdmUoKSxoWzBdLnZhbHVlPWMuc2VsZWN0VmFsdWUsYy5lbGVtZW50LnNl
bGVjdGVkPSEwLGMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoInNlbGVjdGVkIiwic2VsZWN0ZWQiKSk6
bnVsbD09PWF8fEI/KE4ucmVtb3ZlKCksQnx8aC5wcmVwZW5kKHApLGgudmFsKCIiKSxwLnByb3Ao
InNlbGVjdGVkIiwhMCkscC5hdHRyKCJzZWxlY3RlZCIsITApKTooQnx8cC5yZW1vdmUoKSxoLnBy
ZXBlbmQoTiksaC52YWwoIj8iKSxOLnByb3AoInNlbGVjdGVkIiwhMCksTi5hdHRyKCJzZWxlY3Rl
ZCIsITApKX0sdS5yZWFkVmFsdWU9ZnVuY3Rpb24oKXt2YXIgYT1ELnNlbGVjdFZhbHVlTWFwW2gu
dmFsKCldO3JldHVybiBhJiYhYS5kaXNhYmxlZD8KKyhCfHxwLnJlbW92ZSgpLE4ucmVtb3ZlKCks
RC5nZXRWaWV3VmFsdWVGcm9tT3B0aW9uKGEpKTpudWxsfSx6LnRyYWNrQnkmJmMuJHdhdGNoKGZ1
bmN0aW9uKCl7cmV0dXJuIHouZ2V0VHJhY2tCeVZhbHVlKHYuJHZpZXdWYWx1ZSl9LGZ1bmN0aW9u
KCl7di4kcmVuZGVyKCl9KSk7Qj8ocC5yZW1vdmUoKSxhKHApKGMpLHAucmVtb3ZlQ2xhc3MoIm5n
LXNjb3BlIikpOnA9eShlLmNsb25lTm9kZSghMSkpO3QoKTtjLiR3YXRjaENvbGxlY3Rpb24oei5n
ZXRXYXRjaGFibGVzLHQpfX19fV0sQ2U9WyIkbG9jYWxlIiwiJGludGVycG9sYXRlIiwiJGxvZyIs
ZnVuY3Rpb24oYSxjLGQpe3ZhciBlPS97fS9nLGY9L153aGVuKE1pbnVzKT8oLispJC87cmV0dXJu
e2xpbms6ZnVuY3Rpb24oZyxoLGwpe2Z1bmN0aW9uIGsoYSl7aC50ZXh0KGF8fCIiKX12YXIgbj1s
LmNvdW50LHI9bC4kYXR0ci53aGVuJiZoLmF0dHIobC4kYXR0ci53aGVuKSxzPWwub2Zmc2V0fHww
LHE9Zy4kZXZhbChyKXx8e30sdD0KK3t9LHc9Yy5zdGFydFN5bWJvbCgpLHU9Yy5lbmRTeW1ib2wo
KSxwPXcrbisiLSIrcyt1LHk9Y2Eubm9vcCx6O20obCxmdW5jdGlvbihhLGMpe3ZhciBkPWYuZXhl
YyhjKTtkJiYoZD0oZFsxXT8iLSI6IiIpK00oZFsyXSkscVtkXT1oLmF0dHIobC4kYXR0cltjXSkp
fSk7bShxLGZ1bmN0aW9uKGEsZCl7dFtkXT1jKGEucmVwbGFjZShlLHApKX0pO2cuJHdhdGNoKG4s
ZnVuY3Rpb24oYyl7dmFyIGU9cGFyc2VGbG9hdChjKSxmPWlzTmFOKGUpO2Z8fGUgaW4gcXx8KGU9
YS5wbHVyYWxDYXQoZS1zKSk7ZT09PXp8fGYmJlYoeikmJmlzTmFOKHopfHwoeSgpLGY9dFtlXSxB
KGYpPyhudWxsIT1jJiZkLmRlYnVnKCJuZ1BsdXJhbGl6ZTogbm8gcnVsZSBkZWZpbmVkIGZvciAn
IitlKyInIGluICIrcikseT12LGsoKSk6eT1nLiR3YXRjaChmLGspLHo9ZSl9KX19fV0sRGU9WyIk
cGFyc2UiLCIkYW5pbWF0ZSIsZnVuY3Rpb24oYSxjKXt2YXIgZD1KKCJuZ1JlcGVhdCIpLGU9ZnVu
Y3Rpb24oYSxjLAorZCxlLGssbSxyKXthW2RdPWU7ayYmKGFba109bSk7YS4kaW5kZXg9YzthLiRm
aXJzdD0wPT09YzthLiRsYXN0PWM9PT1yLTE7YS4kbWlkZGxlPSEoYS4kZmlyc3R8fGEuJGxhc3Qp
O2EuJG9kZD0hKGEuJGV2ZW49MD09PShjJjEpKX07cmV0dXJue3Jlc3RyaWN0OiJBIixtdWx0aUVs
ZW1lbnQ6ITAsdHJhbnNjbHVkZToiZWxlbWVudCIscHJpb3JpdHk6MUUzLHRlcm1pbmFsOiEwLCQk
dGxiOiEwLGNvbXBpbGU6ZnVuY3Rpb24oZixnKXt2YXIgaD1nLm5nUmVwZWF0LGw9VS5jcmVhdGVD
b21tZW50KCIgZW5kIG5nUmVwZWF0OiAiK2grIiAiKSxrPWgubWF0Y2goL15ccyooW1xzXFNdKz8p
XHMraW5ccysoW1xzXFNdKz8pKD86XHMrYXNccysoW1xzXFNdKz8pKT8oPzpccyt0cmFja1xzK2J5
XHMrKFtcc1xTXSs/KSk/XHMqJC8pO2lmKCFrKXRocm93IGQoImlleHAiLGgpO3ZhciBuPWtbMV0s
cj1rWzJdLHM9a1szXSxxPWtbNF0saz1uLm1hdGNoKC9eKD86KFxzKltcJFx3XSspfFwoXHMqKFtc
JFx3XSspXHMqLFxzKihbXCRcd10rKVxzKlwpKSQvKTsKK2lmKCFrKXRocm93IGQoImlpZGV4cCIs
bik7dmFyIHY9a1szXXx8a1sxXSx3PWtbMl07aWYocyYmKCEvXlskYS16QS1aX11bJGEtekEtWjAt
OV9dKiQvLnRlc3Qocyl8fC9eKG51bGx8dW5kZWZpbmVkfHRoaXN8XCRpbmRleHxcJGZpcnN0fFwk
bWlkZGxlfFwkbGFzdHxcJGV2ZW58XCRvZGR8XCRwYXJlbnR8XCRyb290fFwkaWQpJC8udGVzdChz
KSkpdGhyb3cgZCgiYmFkaWRlbnQiLHMpO3ZhciB1LHAseixBLEk9eyRpZDpHYX07cT91PWEocSk6
KHo9ZnVuY3Rpb24oYSxjKXtyZXR1cm4gR2EoYyl9LEE9ZnVuY3Rpb24oYSl7cmV0dXJuIGF9KTty
ZXR1cm4gZnVuY3Rpb24oYSxmLGcsayxuKXt1JiYocD1mdW5jdGlvbihjLGQsZSl7dyYmKElbd109
Yyk7SVt2XT1kO0kuJGluZGV4PWU7cmV0dXJuIHUoYSxJKX0pO3ZhciBxPWdhKCk7YS4kd2F0Y2hD
b2xsZWN0aW9uKHIsZnVuY3Rpb24oZyl7dmFyIGsscix1PWZbMF0seCxEPWdhKCksSSxILEwsRyxN
LEosTztzJiYoYVtzXT1nKTtpZihFYShnKSlNPQorZyxyPXB8fHo7ZWxzZSBmb3IoTyBpbiByPXB8
fEEsTT1bXSxnKWcuaGFzT3duUHJvcGVydHkoTykmJiIkIiE9PU8uY2hhckF0KDApJiZNLnB1c2go
Tyk7ST1NLmxlbmd0aDtPPUFycmF5KEkpO2ZvcihrPTA7azxJO2srKylpZihIPWc9PT1NP2s6TVtr
XSxMPWdbSF0sRz1yKEgsTCxrKSxxW0ddKUo9cVtHXSxkZWxldGUgcVtHXSxEW0ddPUosT1trXT1K
O2Vsc2V7aWYoRFtHXSl0aHJvdyBtKE8sZnVuY3Rpb24oYSl7YSYmYS5zY29wZSYmKHFbYS5pZF09
YSl9KSxkKCJkdXBlcyIsaCxHLEwpO09ba109e2lkOkcsc2NvcGU6dCxjbG9uZTp0fTtEW0ddPSEw
fWZvcih4IGluIHEpe0o9cVt4XTtHPXFiKEouY2xvbmUpO2MubGVhdmUoRyk7aWYoR1swXS5wYXJl
bnROb2RlKWZvcihrPTAscj1HLmxlbmd0aDtrPHI7aysrKUdba10uJCROR19SRU1PVkVEPSEwO0ou
c2NvcGUuJGRlc3Ryb3koKX1mb3Ioaz0wO2s8STtrKyspaWYoSD1nPT09TT9rOk1ba10sTD1nW0hd
LEo9T1trXSxKLnNjb3BlKXt4PQordTtkbyB4PXgubmV4dFNpYmxpbmc7d2hpbGUoeCYmeC4kJE5H
X1JFTU9WRUQpO0ouY2xvbmVbMF0hPXgmJmMubW92ZShxYihKLmNsb25lKSxudWxsLHkodSkpO3U9
Si5jbG9uZVtKLmNsb25lLmxlbmd0aC0xXTtlKEouc2NvcGUsayx2LEwsdyxILEkpfWVsc2Ugbihm
dW5jdGlvbihhLGQpe0ouc2NvcGU9ZDt2YXIgZj1sLmNsb25lTm9kZSghMSk7YVthLmxlbmd0aCsr
XT1mO2MuZW50ZXIoYSxudWxsLHkodSkpO3U9ZjtKLmNsb25lPWE7RFtKLmlkXT1KO2UoSi5zY29w
ZSxrLHYsTCx3LEgsSSl9KTtxPUR9KX19fX1dLEVlPVsiJGFuaW1hdGUiLGZ1bmN0aW9uKGEpe3Jl
dHVybntyZXN0cmljdDoiQSIsbXVsdGlFbGVtZW50OiEwLGxpbms6ZnVuY3Rpb24oYyxkLGUpe2Mu
JHdhdGNoKGUubmdTaG93LGZ1bmN0aW9uKGMpe2FbYz8icmVtb3ZlQ2xhc3MiOiJhZGRDbGFzcyJd
KGQsIm5nLWhpZGUiLHt0ZW1wQ2xhc3NlczoibmctaGlkZS1hbmltYXRlIn0pfSl9fX1dLHhlPVsi
JGFuaW1hdGUiLAorZnVuY3Rpb24oYSl7cmV0dXJue3Jlc3RyaWN0OiJBIixtdWx0aUVsZW1lbnQ6
ITAsbGluazpmdW5jdGlvbihjLGQsZSl7Yy4kd2F0Y2goZS5uZ0hpZGUsZnVuY3Rpb24oYyl7YVtj
PyJhZGRDbGFzcyI6InJlbW92ZUNsYXNzIl0oZCwibmctaGlkZSIse3RlbXBDbGFzc2VzOiJuZy1o
aWRlLWFuaW1hdGUifSl9KX19fV0sRmU9TWEoZnVuY3Rpb24oYSxjLGQpe2EuJHdhdGNoKGQubmdT
dHlsZSxmdW5jdGlvbihhLGQpe2QmJmEhPT1kJiZtKGQsZnVuY3Rpb24oYSxkKXtjLmNzcyhkLCIi
KX0pO2EmJmMuY3NzKGEpfSwhMCl9KSxHZT1bIiRhbmltYXRlIixmdW5jdGlvbihhKXtyZXR1cm57
cmVxdWlyZToibmdTd2l0Y2giLGNvbnRyb2xsZXI6WyIkc2NvcGUiLGZ1bmN0aW9uKCl7dGhpcy5j
YXNlcz17fX1dLGxpbms6ZnVuY3Rpb24oYyxkLGUsZil7dmFyIGc9W10saD1bXSxsPVtdLGs9W10s
bj1mdW5jdGlvbihhLGMpe3JldHVybiBmdW5jdGlvbigpe2Euc3BsaWNlKGMsMSl9fTtjLiR3YXRj
aChlLm5nU3dpdGNofHwKK2Uub24sZnVuY3Rpb24oYyl7dmFyIGQsZTtkPTA7Zm9yKGU9bC5sZW5n
dGg7ZDxlOysrZClhLmNhbmNlbChsW2RdKTtkPWwubGVuZ3RoPTA7Zm9yKGU9ay5sZW5ndGg7ZDxl
OysrZCl7dmFyIHE9cWIoaFtkXS5jbG9uZSk7a1tkXS4kZGVzdHJveSgpOyhsW2RdPWEubGVhdmUo
cSkpLnRoZW4obihsLGQpKX1oLmxlbmd0aD0wO2subGVuZ3RoPTA7KGc9Zi5jYXNlc1siISIrY118
fGYuY2FzZXNbIj8iXSkmJm0oZyxmdW5jdGlvbihjKXtjLnRyYW5zY2x1ZGUoZnVuY3Rpb24oZCxl
KXtrLnB1c2goZSk7dmFyIGY9Yy5lbGVtZW50O2RbZC5sZW5ndGgrK109VS5jcmVhdGVDb21tZW50
KCIgZW5kIG5nU3dpdGNoV2hlbjogIik7aC5wdXNoKHtjbG9uZTpkfSk7YS5lbnRlcihkLGYucGFy
ZW50KCksZil9KX0pfSl9fX1dLEhlPU1hKHt0cmFuc2NsdWRlOiJlbGVtZW50Iixwcmlvcml0eTox
MjAwLHJlcXVpcmU6Il5uZ1N3aXRjaCIsbXVsdGlFbGVtZW50OiEwLGxpbms6ZnVuY3Rpb24oYSxj
LGQsZSwKK2Ype2UuY2FzZXNbIiEiK2QubmdTd2l0Y2hXaGVuXT1lLmNhc2VzWyIhIitkLm5nU3dp
dGNoV2hlbl18fFtdO2UuY2FzZXNbIiEiK2QubmdTd2l0Y2hXaGVuXS5wdXNoKHt0cmFuc2NsdWRl
OmYsZWxlbWVudDpjfSl9fSksSWU9TWEoe3RyYW5zY2x1ZGU6ImVsZW1lbnQiLHByaW9yaXR5OjEy
MDAscmVxdWlyZToiXm5nU3dpdGNoIixtdWx0aUVsZW1lbnQ6ITAsbGluazpmdW5jdGlvbihhLGMs
ZCxlLGYpe2UuY2FzZXNbIj8iXT1lLmNhc2VzWyI/Il18fFtdO2UuY2FzZXNbIj8iXS5wdXNoKHt0
cmFuc2NsdWRlOmYsZWxlbWVudDpjfSl9fSksS2U9TWEoe3Jlc3RyaWN0OiJFQUMiLGxpbms6ZnVu
Y3Rpb24oYSxjLGQsZSxmKXtpZighZil0aHJvdyBKKCJuZ1RyYW5zY2x1ZGUiKSgib3JwaGFuIix1
YShjKSk7ZihmdW5jdGlvbihhKXtjLmVtcHR5KCk7Yy5hcHBlbmQoYSl9KX19KSxrZT1bIiR0ZW1w
bGF0ZUNhY2hlIixmdW5jdGlvbihhKXtyZXR1cm57cmVzdHJpY3Q6IkUiLHRlcm1pbmFsOiEwLAor
Y29tcGlsZTpmdW5jdGlvbihjLGQpeyJ0ZXh0L25nLXRlbXBsYXRlIj09ZC50eXBlJiZhLnB1dChk
LmlkLGNbMF0udGV4dCl9fX1dLEFnPXskc2V0Vmlld1ZhbHVlOnYsJHJlbmRlcjp2fSxCZz1bIiRl
bGVtZW50IiwiJHNjb3BlIiwiJGF0dHJzIixmdW5jdGlvbihhLGMsZCl7dmFyIGU9dGhpcyxmPW5l
dyBTYTtlLm5nTW9kZWxDdHJsPUFnO2UudW5rbm93bk9wdGlvbj15KFUuY3JlYXRlRWxlbWVudCgi
b3B0aW9uIikpO2UucmVuZGVyVW5rbm93bk9wdGlvbj1mdW5jdGlvbihjKXtjPSI/ICIrR2EoYykr
IiA/IjtlLnVua25vd25PcHRpb24udmFsKGMpO2EucHJlcGVuZChlLnVua25vd25PcHRpb24pO2Eu
dmFsKGMpfTtjLiRvbigiJGRlc3Ryb3kiLGZ1bmN0aW9uKCl7ZS5yZW5kZXJVbmtub3duT3B0aW9u
PXZ9KTtlLnJlbW92ZVVua25vd25PcHRpb249ZnVuY3Rpb24oKXtlLnVua25vd25PcHRpb24ucGFy
ZW50KCkmJmUudW5rbm93bk9wdGlvbi5yZW1vdmUoKX07ZS5yZWFkVmFsdWU9CitmdW5jdGlvbigp
e2UucmVtb3ZlVW5rbm93bk9wdGlvbigpO3JldHVybiBhLnZhbCgpfTtlLndyaXRlVmFsdWU9ZnVu
Y3Rpb24oYyl7ZS5oYXNPcHRpb24oYyk/KGUucmVtb3ZlVW5rbm93bk9wdGlvbigpLGEudmFsKGMp
LCIiPT09YyYmZS5lbXB0eU9wdGlvbi5wcm9wKCJzZWxlY3RlZCIsITApKTpudWxsPT1jJiZlLmVt
cHR5T3B0aW9uPyhlLnJlbW92ZVVua25vd25PcHRpb24oKSxhLnZhbCgiIikpOmUucmVuZGVyVW5r
bm93bk9wdGlvbihjKX07ZS5hZGRPcHRpb249ZnVuY3Rpb24oYSxjKXtSYShhLCcib3B0aW9uIHZh
bHVlIicpOyIiPT09YSYmKGUuZW1wdHlPcHRpb249Yyk7dmFyIGQ9Zi5nZXQoYSl8fDA7Zi5wdXQo
YSxkKzEpfTtlLnJlbW92ZU9wdGlvbj1mdW5jdGlvbihhKXt2YXIgYz1mLmdldChhKTtjJiYoMT09
PWM/KGYucmVtb3ZlKGEpLCIiPT09YSYmKGUuZW1wdHlPcHRpb249dCkpOmYucHV0KGEsYy0xKSl9
O2UuaGFzT3B0aW9uPWZ1bmN0aW9uKGEpe3JldHVybiEhZi5nZXQoYSl9fV0sCitsZT1mdW5jdGlv
bigpe3JldHVybntyZXN0cmljdDoiRSIscmVxdWlyZTpbInNlbGVjdCIsIj9uZ01vZGVsIl0sY29u
dHJvbGxlcjpCZyxsaW5rOmZ1bmN0aW9uKGEsYyxkLGUpe3ZhciBmPWVbMV07aWYoZil7dmFyIGc9
ZVswXTtnLm5nTW9kZWxDdHJsPWY7Zi4kcmVuZGVyPWZ1bmN0aW9uKCl7Zy53cml0ZVZhbHVlKGYu
JHZpZXdWYWx1ZSl9O2Mub24oImNoYW5nZSIsZnVuY3Rpb24oKXthLiRhcHBseShmdW5jdGlvbigp
e2YuJHNldFZpZXdWYWx1ZShnLnJlYWRWYWx1ZSgpKX0pfSk7aWYoZC5tdWx0aXBsZSl7Zy5yZWFk
VmFsdWU9ZnVuY3Rpb24oKXt2YXIgYT1bXTttKGMuZmluZCgib3B0aW9uIiksZnVuY3Rpb24oYyl7
Yy5zZWxlY3RlZCYmYS5wdXNoKGMudmFsdWUpfSk7cmV0dXJuIGF9O2cud3JpdGVWYWx1ZT1mdW5j
dGlvbihhKXt2YXIgZD1uZXcgU2EoYSk7bShjLmZpbmQoIm9wdGlvbiIpLGZ1bmN0aW9uKGEpe2Eu
c2VsZWN0ZWQ9dyhkLmdldChhLnZhbHVlKSl9KX07dmFyIGgsCitsPU5hTjthLiR3YXRjaChmdW5j
dGlvbigpe2whPT1mLiR2aWV3VmFsdWV8fGthKGgsZi4kdmlld1ZhbHVlKXx8KGg9aWEoZi4kdmll
d1ZhbHVlKSxmLiRyZW5kZXIoKSk7bD1mLiR2aWV3VmFsdWV9KTtmLiRpc0VtcHR5PWZ1bmN0aW9u
KGEpe3JldHVybiFhfHwwPT09YS5sZW5ndGh9fX19fX0sbmU9WyIkaW50ZXJwb2xhdGUiLGZ1bmN0
aW9uKGEpe2Z1bmN0aW9uIGMoYSl7YVswXS5oYXNBdHRyaWJ1dGUoInNlbGVjdGVkIikmJihhWzBd
LnNlbGVjdGVkPSEwKX1yZXR1cm57cmVzdHJpY3Q6IkUiLHByaW9yaXR5OjEwMCxjb21waWxlOmZ1
bmN0aW9uKGQsZSl7aWYoQShlLnZhbHVlKSl7dmFyIGY9YShkLnRleHQoKSwhMCk7Znx8ZS4kc2V0
KCJ2YWx1ZSIsZC50ZXh0KCkpfXJldHVybiBmdW5jdGlvbihhLGQsZSl7dmFyIGs9ZC5wYXJlbnQo
KSxtPWsuZGF0YSgiJHNlbGVjdENvbnRyb2xsZXIiKXx8ay5wYXJlbnQoKS5kYXRhKCIkc2VsZWN0
Q29udHJvbGxlciIpO20mJm0ubmdNb2RlbEN0cmwmJgorKGY/YS4kd2F0Y2goZixmdW5jdGlvbihh
LGYpe2UuJHNldCgidmFsdWUiLGEpO2YhPT1hJiZtLnJlbW92ZU9wdGlvbihmKTttLmFkZE9wdGlv
bihhLGQpO20ubmdNb2RlbEN0cmwuJHJlbmRlcigpO2MoZCl9KToobS5hZGRPcHRpb24oZS52YWx1
ZSxkKSxtLm5nTW9kZWxDdHJsLiRyZW5kZXIoKSxjKGQpKSxkLm9uKCIkZGVzdHJveSIsZnVuY3Rp
b24oKXttLnJlbW92ZU9wdGlvbihlLnZhbHVlKTttLm5nTW9kZWxDdHJsLiRyZW5kZXIoKX0pKX19
fX1dLG1lPXJhKHtyZXN0cmljdDoiRSIsdGVybWluYWw6ITF9KSxIYz1mdW5jdGlvbigpe3JldHVy
bntyZXN0cmljdDoiQSIscmVxdWlyZToiP25nTW9kZWwiLGxpbms6ZnVuY3Rpb24oYSxjLGQsZSl7
ZSYmKGQucmVxdWlyZWQ9ITAsZS4kdmFsaWRhdG9ycy5yZXF1aXJlZD1mdW5jdGlvbihhLGMpe3Jl
dHVybiFkLnJlcXVpcmVkfHwhZS4kaXNFbXB0eShjKX0sZC4kb2JzZXJ2ZSgicmVxdWlyZWQiLGZ1
bmN0aW9uKCl7ZS4kdmFsaWRhdGUoKX0pKX19fSwKK0djPWZ1bmN0aW9uKCl7cmV0dXJue3Jlc3Ry
aWN0OiJBIixyZXF1aXJlOiI/bmdNb2RlbCIsbGluazpmdW5jdGlvbihhLGMsZCxlKXtpZihlKXt2
YXIgZixnPWQubmdQYXR0ZXJufHxkLnBhdHRlcm47ZC4kb2JzZXJ2ZSgicGF0dGVybiIsZnVuY3Rp
b24oYSl7TChhKSYmMDxhLmxlbmd0aCYmKGE9bmV3IFJlZ0V4cCgiXiIrYSsiJCIpKTtpZihhJiYh
YS50ZXN0KXRocm93IEooIm5nUGF0dGVybiIpKCJub3JlZ2V4cCIsZyxhLHVhKGMpKTtmPWF8fHQ7
ZS4kdmFsaWRhdGUoKX0pO2UuJHZhbGlkYXRvcnMucGF0dGVybj1mdW5jdGlvbihhKXtyZXR1cm4g
ZS4kaXNFbXB0eShhKXx8QShmKXx8Zi50ZXN0KGEpfX19fX0sSmM9ZnVuY3Rpb24oKXtyZXR1cm57
cmVzdHJpY3Q6IkEiLHJlcXVpcmU6Ij9uZ01vZGVsIixsaW5rOmZ1bmN0aW9uKGEsYyxkLGUpe2lm
KGUpe3ZhciBmPS0xO2QuJG9ic2VydmUoIm1heGxlbmd0aCIsZnVuY3Rpb24oYSl7YT1XKGEpO2Y9
aXNOYU4oYSk/LTE6YTtlLiR2YWxpZGF0ZSgpfSk7CitlLiR2YWxpZGF0b3JzLm1heGxlbmd0aD1m
dW5jdGlvbihhLGMpe3JldHVybiAwPmZ8fGUuJGlzRW1wdHkoYyl8fGMubGVuZ3RoPD1mfX19fX0s
SWM9ZnVuY3Rpb24oKXtyZXR1cm57cmVzdHJpY3Q6IkEiLHJlcXVpcmU6Ij9uZ01vZGVsIixsaW5r
OmZ1bmN0aW9uKGEsYyxkLGUpe2lmKGUpe3ZhciBmPTA7ZC4kb2JzZXJ2ZSgibWlubGVuZ3RoIixm
dW5jdGlvbihhKXtmPVcoYSl8fDA7ZS4kdmFsaWRhdGUoKX0pO2UuJHZhbGlkYXRvcnMubWlubGVu
Z3RoPWZ1bmN0aW9uKGEsYyl7cmV0dXJuIGUuJGlzRW1wdHkoYyl8fGMubGVuZ3RoPj1mfX19fX07
Ty5hbmd1bGFyLmJvb3RzdHJhcD9jb25zb2xlLmxvZygiV0FSTklORzogVHJpZWQgdG8gbG9hZCBh
bmd1bGFyIG1vcmUgdGhhbiBvbmNlLiIpOihjZSgpLGVlKGNhKSx5KFUpLnJlYWR5KGZ1bmN0aW9u
KCl7WmQoVSxBYyl9KSl9KSh3aW5kb3csZG9jdW1lbnQpOyF3aW5kb3cuYW5ndWxhci4kJGNzcCgp
JiZ3aW5kb3cuYW5ndWxhci5lbGVtZW50KGRvY3VtZW50LmhlYWQpLnByZXBlbmQoJzxzdHlsZSB0
eXBlPSJ0ZXh0L2NzcyI+QGNoYXJzZXQgIlVURi04IjtbbmdcXDpjbG9ha10sW25nLWNsb2FrXSxb
ZGF0YS1uZy1jbG9ha10sW3gtbmctY2xvYWtdLC5uZy1jbG9haywueC1uZy1jbG9haywubmctaGlk
ZTpub3QoLm5nLWhpZGUtYW5pbWF0ZSl7ZGlzcGxheTpub25lICFpbXBvcnRhbnQ7fW5nXFw6Zm9y
bXtkaXNwbGF5OmJsb2NrO30ubmctYW5pbWF0ZS1zaGlte3Zpc2liaWxpdHk6aGlkZGVuO30ubmct
YW5jaG9ye3Bvc2l0aW9uOmFic29sdXRlO308L3N0eWxlPicpOworLy8jIHNvdXJjZU1hcHBpbmdV
Ukw9YW5ndWxhci5taW4uanMubWFwCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMv
bm9kZV9tb2R1bGVzL2FuZ3VsYXIvYW5ndWxhci5taW4uanMuZ3ppcCBiL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2Fu
Z3VsYXJqcy9ub2RlX21vZHVsZXMvYW5ndWxhci9hbmd1bGFyLm1pbi5qcy5nemlwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjY0YzI0MGRhNTc5YjQ3NjcwNGYwMDJjOThlZGNiNjVlYWIxNDcwYTkKR0lUIGJpbmFyeSBw
YXRjaApsaXRlcmFsIDUxNjI5CnpjbVYobks9UXZJaXdGUD14dXNQQTFDJn5BU0tHKnZ7PzR5M0kk
VythNzZ4LT9YWk48eWNuSl4pISY/RipHdmohMgp6VENLTE5BV00hVTB8eHh4X28+IWYlYX1RTFBq
WERaUiMjVjdTM09tJj9WcnxLYF9YNj9eNXBjb2I+SHAkLTEqbSoKekh3IXwpXksqQm4rZksqNClC
Ujw0eEJFWjRZYntlKXQ9Km1PJks3P0R0OTJhNXFmcHdkNTBVNyEjI3VJSCt1Si1SCnpeKiF5eCQh
TSowNzY9KW9sQ3tvMStecWV5eT1EJClrO3NCTEdCNTMwSkZ9a3VJWklfTCY1fVQ1fDgmYUUpflZA
UAp6Jnh5PXROenwlbFNrTCE3WD5wZSlxdUU0OFM9ISRqKnVvTDYoS3AocipZbnkyISN+NG5eUl9X
NDhJbm03Q3V5Z18KeipZQEEtYT1ScTlUQFo3SWFianx9PitycDU9fXN1NFE4c3BYeUtPeFNTRzNL
cD4rK3RfITw8Yl9HTnoheXg0SX5+CnpoQ19WJnU4YyhOJWlCKk00JnVvKWp6R3Fpaj99aXAyZEVu
NWVodF5uPTJJQ0RUZTJyUlMkcXY0TUkrUGRCeXQqWgp6QTxnYTkqWFJEJV55fkhEcjtUa0p0VEpP
M2BFblJVKCRePHp0O3xSajY9U3tiS0UxeFk9O1kxOGFCZlBBTmtfQ0AKekFFaVpjMVY8IThvYyZA
Xm96TX1kQk1PRlFHeiZ4NV48R31TUD5ZcSVTbm9SZFNzQSZVajM4Uk9edTl9eFZhKD5ICnpTQmtI
bz97eStiPF5+K091S1I7O1p0fnZ4NG0tb3htelFKcHlNcXE/QD91MUBpNjt+NnVIK3dzY2xLejtS
PHsqXgp6UXFBR1NebFdhNlR4KSFZOHE5aFlleDhVPUkjWFpHdSM5T0VYRUQoT1RfMX1TSm0tfiZQ
bHxUMEd2P3sjTHYpcUkKelE8LUcqJkNUYFlDZXNKNnlkIXVSbiFAKF97PW9LYSZ2SWw0RXl2Uk5X
fFp1NXpKeyg1RTRrb0EkfU1AMEA5cnEyCnpsV3J2YGVAezktbCs3SHp5Y0IkNikyfilxbHEtMjE1
SUV2dU93dWxqU1lsI1RINTA8b2Q1Z3I3VD5mU3N4e185Rwp6RlVka0R3TChzdG5gPl9ecGlUVX03
fnxSZyVLY1V2UkcpaCslN1o2NWBQSXZIdVg4OG9ES148ajwwTGFKVFNDbG8KeiZvNHpSQXpwb2p6
OHFpP3s4cD5AXihzQGIlMCNKVUp4dTVOVUFndG1hJWo2OVh7YFFHdFhqeyE9WEV3VkFmb1lhCnph
Xyh+RyVUUSpycjhVLWJGMSoqPCgrMUx9PzRpcjZQMztZeGMzYkEhSGdZKyhMbEAhMTk2PUdFQE4x
UTEjdGtXcgp6RUlTMEhKOWtgQzNpc311a2p4em9qQClyUzlOMzlGPlBHYGRZO0s7SWlQaHRyZW15
an5rJGgrIUA9VGdaPWJuYyUKemN7d3lLaSh5XnIjbk5sNDsyelYyeyh3QyVFU3ErUUhvS247P0Ra
WHRSd0koZExXIyo9Yj1GdGZBdD1FLTYkZS11CnpSbDk1MT5zX20hXjRiNS09SW0mNXpHemRYSlcx
dDsyIV9uPT5TSGR3ezQ5JU1TN3NxaWt3X0FRWE9UYCtxd2s+Kwp6Yj9welhFdWR7TDtqOF4lSEJ1
WEA+bXd7Jjx1SGBGRWkxNDkxelZOUHROTG5NYCElVkNOMnpYbEpAakdhKERoWUEKelBjI099WDwq
UXJ4NEJ1YHptPz04QHB7dGdJV1dkNDRYKT4mWHs7NHFaey1ARndRO1o5aSNDcEhoaGcrezR3US15
CnpYbmF+NER2ZzZEWk5lJnBTJiNnNDc0MSlRYm80bFZsbHFzMigkRmJDMWQkJjxWN053azxKRzdR
aTNfPSgmTGcyfQp6ND9HaU5aSV88TGk1SkpBPFp0a3RYPWslO3ReKXpBbzRGJnVmWGdJejJfMmkj
OGEmR3E8JVluWVdpOGd+RXZVUGcKekJaY1JNPEgzLW4oPWY8UCEhfDYxQWNYUlIwKXxAYlJsWlA9
cTMoTnFGJk1iKEpFZDlSOGYqSGQmem9FVUc9ZGxXCnpSKmpsV3oyWHc5ck5JcHRtWDkhOSs7VnBJ
VHFRN0s1YTNJfE5SJXMhbiF1M2YpKjByQ3o+endtbWx0JmlSeUkhSgp6aHRfKjs4ZTttOFZ1S2hr
NlAtK15uT1BuJXgwPlRKb3shXi1vSlQwQShJMjIyQGJsJVJLTEJkKikhITNedX1zbUsKeiZlQWEl
OXpRUkV3dndxckxkVGBFbXpBJGotcTM0JExwNn4kMTsxZ18xeW96aHtkNTZmYzxwP2dWPVU2RT45
R2tzCnpWcjkySGRrdFF6QE5GRVl3QF9RRmFmZDgkMmk5XzV0eXk2WXk4cih2e0UlPEo0QG0tQXle
ZS1LPFQze04raUNEcAp6KmV2e2gkdFpVe2AkUW88Ukc+UnNVMDUlMz0hIzBNJn1XczxxQ1hyfD1U
Y2dIUWx8Yk8tfkl8XnEzSytDVENYR0cKejJ1NXh1R1ZyWWRIRCREbExDUElfb3NyQ0xmezhTKGRl
b29Wc05DdmNUcEdfM0EjRzAmSnRreDwlPGNZUFUkLWdmCnp1eUJwdypFJTZqdmskWjwhbURMRHIo
U0dEeEAlMjtzRW9CYHQxWmZXaHlFSyV5TGYlVTFEQGEwUWVlLVZxNjZyRAp6MzEobjFZYDtkJlYk
VXpFaDhWYkhJSTJUQkRWMHlxVkprQXYzdFBuciNzKWJ1KEdnPnc+fVRjPEY3aUBTKlF6TzIKelco
WVE+WDdzTFJHezN4c3oxKHJDKDF+S0ZxUXZYKWk2LVJFajt9Wjc8LTA0RC11N3Z2KDhIbkhJU1Er
aTQrYHNhCnpJVTVVQHFMUHMxUiVSZHZtSzF7Y2RxVHc9Rz9fTCtwcXR9SXFmKVkhWXlFU2phaXVV
ZzhINj5PVDxhWWFycSk1MAp6dit9MXQ+clhYSFMzS2didGAmMU9EJnh3bkJLJVo7eFFaSS1tKio4
bHVqV359QldfeGI3RytlMj9ibkE1Sz1HdXUKelR1QVE/MFNIdiNnY2NQd3VFZHA+aDArK2VLXkkp
bjZyMzMwQDB7OFNkNnE0O0R2MWpDUzVZJUF6MktReTBhJGVFCno3KnB1WloxK3wycVcycDM/cG15
MFlCSUwzV1FkS1Y4SUpfMVM4ZzE3b1FhYWdZZ0dEYjhOXypmSXR9T0dNeVN9Ugp6VDg9PXopQGQh
K2U/WUZEUDwwV041K0J3M3xKflIzJnolKTA1VnU5MGtFZnNlUWQ4SUo7bDQ0WVNTVDRBVXBgek0K
elVWYnFjPyVGTH5UR2U9WGQyb0F2YmE3KWFySF5GRigwWUF2ZDM5djAwdCZ1WThIVXZ1eVN4bVVe
STRxKCt6SWRQCnpHT2BwRXlgfEtSWGFEWHVxS3BSfUpgKjAhbFJZWWdMNSpwSz5hbjNMPFNMM2Aj
d218bEo2KmZne3I3K0d3MDNydwp6YHJrNnpwMClrVShhJDktTDMrVjJPa3Q2M1h6Pn5DYSFufk1Q
KWN2QiVlcUF9PzIpYD5XZlkjYDJvZDVpbF5NQXUKekk4STxlQHNzSXF5KlorQ1h1Ml9SY24xVHtn
Sj1kbm5mSF94dDZlN3hHKUZSMU5ZUWlXbG9rKm43Sis1UmxLSGRPCnprJmBLcWcwJkZKPVJxYCFU
c0N2bCp6PCQ/VWshXkNRQVVKZUpMN0I7N0JrRCtTd2hTcnQjIWVCPWEzST5QVEByVgp6R1dZc197
V0BzPllRY3xvMlgkS1N1UlhLPl8yS0sqcGx4bH09bjJ4UWFRVTltSnx8ci1uZSNRVStzTSsqbD4l
czcKemBFb2YyTnAkS2hZUWMtcHV7bjhZWEpWVDBSUiVVKnAhN3x7KCU+RUJzTU94OHhBTHtVSitq
d35mOSZxbWxVeipsCnpVMnJCOGRVI058QWI3X0lHO3t9NlB4WVh7KV8zZ1JFNmU2dnoybj9rX1VO
flMyfX5LJktLPEk+QWd7clpFTE5UTQp6TjNZJXl0UV9TQkhFYXFRbEI/YEJufUlDeXI2JTA7REpq
cjQqQ2BrMl4kZGV5RUEwdDZjKjw1X1A0QHA3VGslKCQKendlTjhkRFZafEUoOSY2MkstTVpMKURy
JjM/bDBTO3pAfStoPEcmNzdxdVhmUWVXeDFSaEdyb3F5cGdxZG91VmU/Cnp1MVdtN3FlJVIzYkZx
RVokZU40JnRXSktUKj82RXYrUmY9WFRUWEslN1A1SXlYJTFfJHtEKkdWWlFxdmVXdEh1IQp6ayZB
VE5aUW9NWj0jc1JlJkZ3UiNvM0lKe2goYGt0VyZ4TF8wdikwfTV3ZnNhV2QzUzMxZ2FEQlFqMlJT
ZiFCNW8Kejd6NHZ1UzF9QEBqY1NlTWRnJlpJZy07dllhSFNZOzZWSFA7VDAmKXBmNlFidXplWUh2
S3REWiNASmZPWm5yKGRqCnolSUdPI1V8OUsqNT0rV2VPRGMrO3sxeFVmYUVuOT4xVEFiTVp7Nnx7
WTEka09laDw8Rk48YzhBOW07LXtiVWxHawp6RFpNOGtEMmgkNSU7JUNZYTJwSlhSZEBpKykjdnRD
VlAzPlctfTRPPjhGRU1vYl5fUHZ3ckJYVVAhOFc8JTVGUCMKekI8eThhV2E9OVQ4ITlFKitzM3NC
dnhaeypOXkspKnZ6JGQ0SDFOKFdPMkAlNEd5QkhJRz5QdjZVbURGTCRkaX5yCnppQWZ4MU4xOz8p
UGAtVkRKJDhLUSV8OyloVlNFJkVGTyl1SXMrQT1HSiVPN1Bnel9wVW49STJeb0AhRiFhYlJnWQp6
OEd0TVpqJEcqeHpeaElQT18wQG5kPyNyWVYoVkhVeTJZX0tkOHt+flZrdW1zO2FCbz4xPipQfFNt
XzdUQHAlVUUKelk3LUh0ayFKdyszJm0pYThwcVhHK3kzan5ffWtJTns9MmlJWi0rPGtaalpseHhP
amlMNG1ha2l1RVY0RU4xd2pFCnp5UyUpKXpXS0Mmd1o4M0taZj9wdnM9ZSZjUSVqej9TZTZQOXd3
P0Y4YEpkYFVCfFVzOClkOGpUVlNgaV5UZjtOMgp6bzt7QDVqLVkjIUxiS2pNYUY4I2J5MUVCPSF5
fFpfNn5fdC09Z0YpSDltPTZoNjZzZTJ2OH1mfFAzPENXJnw1KmwKenRnJXY8TW16N3VtY2tnRzg/
ISgtakpkRFY7Vzdze1NYSmgjSyRnNnxUcUxufFBzPTVkO0EqNipFRUNSc2dQT1MpCnp6O24tYUJt
QXk+eHU3ZXdXXyZhMWlLVDJreCNWOCs1dkM3X05iamw/LTxgenxHQ0FPWW5XUm0xczNWS1ZVUWUt
awp6QVdGQUFefXU8XmFnNShUbEojPlFhJndCTkdLQjdCPzZTYFhHO0RKLTxlZyNFaUtDdTVjU0NN
cG5YMThsUFUpKCEKekU1Sm82KmcrYkh6Pj9ReHQ2c01lV014U2xoQkJlOXhATVFjUjVPWSk4cGtw
VEdVKUBIXjFNZkRTWGowUE11MFJXCnprRXBAY0UzUiVEbDxsTUtmQVh3UG97UU05JTFiRmZLK2ls
KlptRz9vZGVeYTMmSk8rJEd7MzJQMy15LXc2ZCktTgp6O0NEOEJvTXNad05pZ1FuPmNFdFlNbHcw
IWsmZ31HeFFsLTFmdX1Bd280WCZLVDd9JVhiMDg/JXQmaSV1TSk9RGIKeiNTezYldTw2eWRYVj9A
OXFkcDZ1X3tPVElvUjdUcEFuLT1WYz8jMm0/SnFNRlRZIVdQUihuIVVEWWc7Q1MmTFZYCnpCNmUk
cEk9JFNsZD4hYUQ1QGhRN2ZTKWBnV3cwdmJURSo5PUkpaF8wdnhxODYpYntJZlVwKkZNdntUUE50
VU0jaAp6ciVkRVB2dkdBd05aY3szRHN4MjshXyF7eT49RSRIWG05OUBhSlc3V2RJWTRhV0o0Z3BC
MUJ2VT48fUREci0jNV8KeitSZ0NwaGxZTDBwRV5zVEV6KE4jMzQkTmZ0P29xZkZ9bmBENVY1NmBi
TTdVUS0jTWJwJVBrKHBARzIlKD8+THBACno8YGpUYiVUbDdII0Zvd2NwTmVDKGE5RWtFK0lyPH5z
WklqKXkjYTs1X35ReTdnQ1owPSlqYm5NNnttJV9eanRiTQp6cXhrNTx1PUJPaS1yM2xnMWtxOEZ4
T01VNjwrTVdNRzswJDN2cnE+QmcpSmlGeEJNMTJ2YDY7JUUjKColJUhlQ2UKelFCdD5AUUdwRWd5
ITIzTWVTYkpgOCp4NmRIUHJkaDFWIUUobUtKUmcoOW9AKU4laTQ8UWc9RXhWX14xYU13TDNMCnpK
QHxva3QzNlhzRy0rbUJURjtXU2pRc1EoRmU3QkJfQ3hPfCpzb0okWlR0TXFIQXQ2Nmc8dTRaRCtV
M2B4PHJLcAp6RWFAa3VwR1VXZUomWVhpcHJHfndadE1nMWBDSHghaGNKYE94NCtAMDR9O009SUxF
dGBOJjh6ZWk7N0JXN2JZbFcKekJiJn5INGViSyZDQ29FNUBNbzBHNnliN09lWkRsSFhobloybGx3
cihyVChIN3tSJW9WLXNufHI9dT1qU043KygkCnoqXkZXVjE0K0ZSeUM8OStQSUlOSW9lKzh5T2NX
JGdXQWQ3WUp6O2BKTDdMXjszY3s/fGMzeGFQT21seFV3NjR+fQp6Kll4b3wjMHpiP20mTmNVXmxN
YzhJYz1PMmQkZSZ4T219ezFYPUY7cCQ7THN0U1VCVSYlfH47cnNndCRQYWY0Sj0KejxPK0tGPzNM
aCg/Riswa293RmdnVmJXeWV2bnpXZGxhWFlmVlFZV1BjJGwmfl55TXkmJkYkaio3JmZVcnkhN2xT
CnpqO0hNMl81dSpON2pfbihyalc5YWk8IWd8UmVsZ1FfODRWPU82KDV+UDtwITRfMUhkWWhlaTFU
PHZmJGsmUU4/YAp6RndkUykkP1goN0xHZU84TVlHUSs3RmVFVFNSbWFgNTxYfGdfUHRDfW5sPmMo
TFlYa2VmaEd0fjNFKE1xWnFLSUUKenFNWUV5XkR5KXstR09IaiZtdWJib3JPKUF2bGB6cUY3NDdM
dlFyZEFJJVB4OCZjV3JFQVI4Wit1JCpvOTBLYVBeCnomeFBUPiU9MkMma0JzamJBU3MhKkk7WWZW
eEJDT0RRe0ZBO01fNHFFcV94TmdWbnt1RlY4MCFhUmFCbGdIZDFKTQp6N0NnekBCdyVCP3B6dWpz
cXpadEpndz82XiZ3Uz1BZmJnUX1FTXhDK3FSPFhON0VXY1R6PVZDNWJ9RXUhbnoxe1MKelJHaUkx
bChLbSEqK2ttJFJHbktTP1AmQ2wpRkxpUkMpcCVxKTNTQ1dDc1RyeD48Nl9SZ2dpfUlRV2NLPyZ7
JGVrCnpGTVhlN2NgZkY1WV5JOSE2fStlVmQqYmVhTis7TU1kISo4YkEpQmtla3FCcEtlOTl8OSNg
ZFhuNWw2JWQxeWslRAp6SEMlPFdnb2g5ckpEfTwoSWZZd2hoZzd+RSN9RGpDbURFPD50S3ZnfF5K
S0A7VU1ua0sjXkMmPD91M0gjUyh2ZDgKeilPNHdZbGRAQikrJDIwb2JIMDl+YGchY2prZXlOUzQw
ZU5edDZoJWF0fGh5V19MT0goKDE7eGlWempRNV8+cjltCnojZDJNUCgma1d4ZVcwIyR5KmxCS01k
ZWlXSExJVk1hbFdqJEQqMypHN1V7WkRPWkg+NEMtd0ImWj0jYGwmb0lHYQp6OTRGVTsmWDBZPDF1
SllheVFhJWxSQzNwS0xvTkd4JWNvZnM7a2ErbjxpUyY+V0M+NmZ1dUpsTjtnN3loTCMtT1cKenFn
cDBOKmRNNktNPExhMjNWaEgwTH1Pdn4meDglWGlxY2Q/SSY0RTBidlAhKmh4VWcwZGUkb25TM0tk
OVlsSmFNCnpWLWhCWV9TJmtCKH5vRHQ5ZWkqeD9IdnBiKjt8UXY4TEcwT3MqS25PZjdKXkU4PjNY
XkZXN2d+ZXl9X0k7IWxWXwp6RE9+RiR8OWdsX0kzamk8c3o8PlBmaSNPeiZXYkJgSz1OVHp0JWJB
JUNYVzNlZj82PWs1KmlkdFdRXk9OcU1VeWAKeiEhakN8Pzd3Ri1EdCFOT2hSfWBPUX44OWE8OCUw
djJkYW9UejYoSHs2TE5TUXMjSGtyaHNKdSZ3dkxHQiEpRHNXCnpDcGNBUlVWQT5gO2FqclZjfDZR
dVZYSyk+aH4mPVdyO1Y7MmdQKTUkI0lMYGV0LT1AZThTVHBwZVUkVT49SiFBcwp6Vm1ZNzUzcksh
Zz0rNjZ1azVzK0A1UHxhSzBCa3Aybz4hcmxXWnx3TW1YcFFYI3twc2gtei1US2o+PzNTem8pRT4K
ekAwJEM9aihuNnR6MExMd188dilkVU9PN0dLTCRwV3E8d2piRDBJIzNoKHE1PTsxWm5Ob1MoVHE9
Q29AYHpKb21XCnpIb0N2PVpFeClVWUZLVCp6ZEk8QnpkbDdiez8/WGIzMEo3RTVmcVFrJj1ucndJ
PSRWYWRJNT4wbCVBQkdWVVV6Iwp6PT0rTXRqTGE8c3lNfmN9QmBfPyZOVV9OcTQ1OF5INE0jNGBL
dHMobXN1T2VBYTljfXEoXjUhTTN4JGhNdDNDYmMKel48eTE1c3haenVEYFZ0T0RrNFQkbytvdW8h
Yjs3VmlXKz95dXhHNjZaPUQ0VXphX15UIV43MnFJWCRsdDg7a3RnCnpCa3RaaFl4KHpCaCZ6UlFQ
QFNzUD5vMT9hZGM3R2kzQGVuKT5naUh2e2xWZj1DQHlYTmQkIU5iT1FSbStsJDt4JQp6VnJJcD1E
WVNkJFJZfkpVRHRzVDJRfmUjdD5yVGA3TmQ9MkxQPTJ4ZWVLbTtFbGZKZyV8RkwkaD9RUHIwYG4h
SGIKeiU7UUgoUkl1ITkmU2pUMFIlPChVPDBlaGhJRzQ3dnZKWGota3xMUT5MQEJYcj4lWDZRMkxL
NkROPjJPaWBDPl5SCnozNHArMHVKNFJyQntmSkY7I0pQTiY5aldgb1dqNz5RYmlRXzhTYFIpaSp+
LXlGJmc2Nm5BdEVVb0Mjam04XjgxYgp6SmFRdnhrcl5se1VFbkRVXkVtYnktfnxedFRefERaWm8k
aWpJNXMjVUh9bFVhdzJCcEVZZjhpalRvT1JBcH19NkUKend+ZDJ5TFd1dVNEa31GNjVHU3hzY2xY
dWUmWk9IfTY7RXZkPTw/QiVDeDU1NFBUSzdXcWh0V2BpRilTUUEtazhVCnpnVFN9VEx6bkhrSXFv
V1opeFkwSiQ0ZXomWCV2eV5qel5HWVBfP1JJQSRIQ3lzcGR1UiVZaGE5YmZQKylyXkdINAp6VXNt
XmVOJiRfSkRkU1ZtQ3xHVEZoNDxnYmpATzQ3d2NTYz1ELXFydmYmP18/R3VtdztraTdeOERgd2h9
ZCNQYTUKekU9Sjs9N0JRYG5OPHhkViR0cXF6enRadi1mUT57YnVsUVh6ank/YVM0bzxHZW9xN2s0
azNvU1F6WSZrfTVAQDhKCno7RnhjeDF0UDU/RGdFcEdkTm52NE5wN30/SGdwcXAmPWsxWG0wTnBp
OEEwaWMoUWJkXjVZJXRBKH4rPEpLUVA7Rwp6T3x9ZUBRN15BKUFsJUdYTTltOSpTM3h3az00fm5J
LTx3SkpqaEJ4VXJXUEpOUj8weVBSX2x2Nk5rezRMOCtmKzkKenZRfmZ1SVZrbXtkTTlRPXJTMmRx
ZV8qRkdQKkRaKEIjQj1KU21FZn0wIWIlYGNXTTJKdjEqS1c2amdkY2coUGM/CnpMNXg8NSpoYWZF
O2gmUWw8XkdPNkAlRThpaDE/ditHe1E9fHpaQGgoY14zYiE5QSEhU20lQ1BGSHF1TCZZJWgmdQp6
NFZkcVNabXp8VnRQciFNKVgtcU1Jfl5eSDRNcSRvXyRzPUx1fUkmZ0F0Mk5xOXYoa2RfMVZQVEB3
YHwkdWx9MCMKekpCLVhpNUFyPkJ3SDA5KnZ7b2tFWXRHeU1RVkdsejNyeCFidEh+aCNvN0RTcUl5
bGVSISo2MGVLUVJmd3E2VyhhCno1ayV6QFFXdyRpP3JLSDRmTTZ1Zjg/OWZMZllkdSQpR20+PzJa
d0BKbG0xc1Z7THU7VnZBVCpfO3d4I2NaPDBQRQp6eWF6UHhzKXZpTCFRdV9QK2RTeGRtb0h6dmVT
O1l6N1YrbCVtcDNQYCZya1JfOWozUVFPXiR0RT4jUkpOMntkKigKempmSnN3VW9CWktxX3Q/YW9v
SUwxeE0+cF8jNUNOb3EtKVopNTlDTj96MEE7NHpfOEV9QUR8UFQjPHtza2haRjY9CnpUU094XnBz
clNQKGpiUk1ve1NZRCF0PSVEanl1RHpVdmo3VyYwJG4pQDV1RHlUbS1vXm5uO05zeDclWnJLMUQx
Qwp6dEYmdXErd3M8ZEY7P2NBbGk3cmlrNEpRREdjYGZAcyowSitoe2Vvfk4xVUdZZX5qeEJTSSt2
Z2ZyV0hxc2BQXkoKens7N0N9QXBlfXYxZmk+VF9sZHt2KnlkT00mKz5qODcyMj1reFhNfDg+Q15g
ZldGMXYqYTNoWDRHOHp2NSV5VzE0CnpJZGZNMyNHXig2IShIbDdjfm08eG9EV2lCYENIN3p6bjtG
NTdfZTlRZ2lvM24oczljKU0hVEF8b0tfc1ozWmRMPwp6K3BMfmkzUzVGelVncSZ7aGt8VGp7bzY1
UHVPZGZ8bmZWYHV5aVcqUnlgQWhKdXVkbzBZIUotbitaTzg7ZXtwIXcKenYjaGN9U1ReaVB4X3lA
YkdHSCkjP0A3NCElOXJ6QDM2U2xoQSMjcXlGUnF1QGBKaSppR1FaO3FkWTNHQkFZUTNxCnooTitC
MGs5R3hMdl5MM3piLWN6UjtnayorVyotQGZ1SHRHTUh+MU8+d0pJYkxuay1uSVRgT1ckYmhXKj5u
JkAwTAp6LXUlNm9ZMkZ3KyZtIU1qJmAlQztuJkZteChtelZ5ez1vRyFxJUw1d25aciM2cXtYaTIt
UVhGV0t2JF4tVl5waj0KelRIP0d7KSg4O2RKP31BRlFhZ2RyQDlGVl8qajRDOG1SNGN9bXkpb1Nv
I0wrbHUpSS0xYTM3ZkBxKkNuMXF8VUBQCno2X1Y2fWVtbyFAekZeRW0lQkw+dHIkaCtAMTY5c3Mr
VyN4cmxwT3JaYDhMfFFgeTUwX2JBVilyMm1KK2Y0ak5+Swp6O0pYOT84aTRvNmhqYFlKRDxOIWEo
eWM7VVdDUCoxNkEzZGRaWkolVTtDR0Z6WE5OeyVfa2lYU3UpZnBVYj4oTksKejlVSGJaZSpGfG81
aip3MDI0SWtHKDJ0eCp5LWQzfFg7RE9ANiE7ekB0ej9QPjdeVGRRUWxUeUg2TzN2cmV8RWc8Cnot
MFBVVGcjPHo5REorKm42VmhDT0JnI0JMVXF3aFomI29CJFNSYkMrc1l0YnByNVM7Wnc2bFpfRX5S
RDtKdG82Kwp6S3xfPG1lU0FQI198KUp2YEltem5mRXdXZFpsQClWM3ROZ19YWmo9SUloZl9sPn5o
KzEkPmNSVHp8PGhLYUZiMVAKejU/RldsKTJ7QiNKPikzfGZpcD5wISMyaH1xamU9NmdYbUwtbChw
N0NeZ21UOFNaPFcoXkEoP1p6Jk1jaEQrYCYyCnpnYHhWSG5wJnphaiVRJjNzP1hLNVUkQTRhRGtv
cnYlYmdYUXRmc2pxYko3ZTw5JENBY0hQPF5BeXt3LVBmfXgrJgp6Ozl9ei1LVn0wNWotKEcjQkY4
b3o9dzZkKGZDeF4+eHx8QFFXKUhSV1p2I0U+d1FsZHlZWT5TbEJVWSM1MEF2bSgKekdVU2Z6TTRt
QWd8OTVSMTNee0BwNDVlTWVwdGhvdFViUG4wdnxNd0c8e1R5fXcoQVZ8WXxGI0oyVz5tbDNlV3c5
CnpIanM4UFhDeXB7ISMqY1glY1opdjBraHp+akJPfFd1IT5fUkx+ZG8hSWBOJClZZElYN2UpZXwq
MX1qdVhMdSRZVwp6Wm99UVJlKFQrR1J4PkFNSk1yKTR7YVJ2YGFkNnJJb1F5Y1U8JlRYVTRYOzBf
PCV7T1V3U3xRamlVbkdqWjBUfHUKejcqaChScHxqKFRxfmNgMWB+OUpmTFBTdWVIWEIpfVd3JUBA
SFRJVmMpUDRkKW5iOU9iLUJTeDczfChvcnBoYSNuCno2PylIR1oxdEpDdCZNT2l8Slh9QTYleHcj
Jn5IeCtWPGpWdkheIWBGJWlaOXAtOUQ+aXp7VXg8U0pyOFgoTClYewp6dDVtfkRmZEojbG4pRF9Q
YyttXmpWWk04aEgoe2tyNk1ib34waWRaaUt4NkB8MkY+Y2NDd3BMQjE7ZFZ5ZUYtQCgKej94ZUxC
XlBBS3I0PlVaaFVjfiYtJHFKKVJBY2w3ZWtJWmBHKiYpVTZiKHljYD88Vk9OLXpGKU8lPGtVbF5j
MjhBCnprdGRYcCtQWF5jb2d7an5yRHtrSXA0e3M2YytPMSQkYkw8QkElfEolJmhCRGZPZlk4ZUNg
ZlJfPjcxMEgzMVl6JAp6RzlYezBlMlZEQ15WTXA4Qlo3QWZ2X0B7VTI1YHEzUFFMUlF2VkNNXkNW
elY4QUliT3RlaiEjSlpUcCkhd1lRRiUKemBja0FgWGx8RSlFc2YxOSQ2P2Y/NXl1JE9jdXIzNUV9
PUlPS1N5MiRUfSp4VmEmZFlHWW4oSGpeKGBMRmlYOHxmCno3Qm42I0ZyT1BPcSQ8eHM3JkNuRml4
IXFVT2w+ezJQMipUWk58eWBwYm9IMz8lemJ2fldXdGxweT5aQlZ2fmdTawp6QTFnUUQ5P0E/QDIl
cU59NDZXc2NWRlRiLWk4NmJ0YWlsQVMkISlhe2I9YmpJNFN2YVZfb0N7bEApaW5IVnV6QyUKem47
MiM1UFVDIyM3I1dKWWI3QyZ0T25GIXFxeXErUzhxZzB9NzUlODZKdCNSZzdtcXBQdH53ZmBSOXQ5
ciZKR1NGCnpXWWAofDJFei1oU098MT1MRGF3U01WVzh+elMtc0NPYE8lfG89MCYlZzFmPTVrdCok
V3o7anh3OUxuSjs0SD5YVgp6WihGNHx0PH5yR1djY1dhek1TfUwoWmpyaGJ2VFh1d1MwO3RVYU99
ZmU1JSYyPyNOc0pvRFNgKnlJIylWS3Y+WF4KendSbW5EPFUrMEdqZWxEQS19PzZJOG5tVVFIVjNf
PyRodE0kal5zQ3FgJCstOEVDRVdheWs7YTtWI1dxOVozOUY+CnpJM3JvfEJXZCU+KUwxJUdOQWQh
MytGNXNoLX0+YyNUQ1g1QyEzUnRMVCV+LSZCdX09bG9kRlN+VEYlKXg+dlMqQAp6PWBvWSs0bWdq
T15YPG9xOGVXKzx3bnd4V1QkQmg9cDVSKDg8YTUjQCRJQ1I2cE5RO0gxX0ZyNDB1Wm9FJkFxWHEK
encyQzNHbldgfjtRcSlnO1Y7KlM1WXpsdXR4ckI3VlR+UUl7ZUF6NTJVM0hlJik+Nj1aeENLcF88
OGpZNTd4TVJwCnpfUXI+WXRkdEVpcWNjQm13fHxLST1ZbnFqMGtSYH1QVEpUKV91eEtCaGM0NlhW
KkshTURLNj0qcSZGPWMwKzkmRAp6a09APEVCJHRsO3t7VlZWdkFhSi0hV2dtVGJ4aTZ0eX1IIT1Q
MF5FajhDOWZOY2l2QldwNlFwfXUzb14lTmQwfWwKeiRxfmY1PFZlJH5KXndTQ1FHZmFIKDklNytz
YU9BbD0pXztoKVQ3PHRnUzVsendicHhrM0tqR3ZrKW5MNl9pQCZwCno9V214WWpwYjFkeHg0cTBL
Z3kqTm9PS0R1Ml8xYk5pR2lTSERfJU9gcDFBIWJrbXNqT1dNSCZtIVVpOWpYYk8wJAp6IS1JN25x
d1h9eisrSDhLIXxIQzVhaGdvNDdaXzZgMj15NWplTT97YiNKKURfayotI3VeUWMjKVZJNisoMGZa
QGYKeipNYUM9QTZ9Y3YzOHE/YGhjU285MjJuZkl4c1ZQYURIaDlgJStmflRFaDNoem5hVEwhZiNn
M0xvS2glQiopZWhDCnpKVnxHQG92PEUzKHhpSld6d0RDaSVtUE1nPlZNfClNK28zSyhmUEZJMldf
WnNCWVlTQDQhKUwmVDVieDZrcz1QbAp6ZlE4R0RWPjdQQWVWPX5LPWpzNUk8ODZyKT9KME9aaShh
OVJheyhCOzI8U3N7cT5FSWJnXitCNXopKyUoWm10P1kKel52cX11ZHIld0Bfb0R8Rml1QmBIMlp0
M2g8X3RGRGsqJm83OUomazVAJnA7YjZPTTMleTYpREk5M3ZCTUx2TVJPCno4Tnd8a2pTYWBwZkZ4
USgkeig7JEwmSEExS2M0Klp1WGlVZS1reV95cHhjJV9PX0IoRiRRKTMteCg5bChQQ1luagp6QyR7
UnRedGpvaHdIOGBBWjg8NUJfKXohTF5iWW4rMnQ5UGVmUG1TPCEteXp3cnRQbExLYz8rQT99XyQz
YHZ2TlIKeklyXzQ7ZyZRYVNZb245U2o+d3Y7S1pSXlRTYEd5LWl0JSMpSkFLQkFERlQ5WmZ2Zjtr
Rmo+JChpVik3OVQ9RTVUCnoySnJtR2U4JnZKKFpQWTgjUih9MjRrMlJtTFMkeS1vRTR6LSZkfk8x
LXM5ZXl0RmZCdGpWbyo0I1BvSSg7QW5Ubgp6Nk0hdntfWFYoLUJlcFFCMCFkdncpTVB9bFBEeXBt
OTAqTytyKHBxOyYzKWxvSGVyaG1nPDZpQUxzQT1PUHM/TW0KeiRlUEUkTSg9VipVb21wWkd6aFFv
WVVsZXIrNGd0ND93WjM3KlRyeyF8RFd4X2dZdkp4Pmp+anNfaiZAMipJJk5GCno9bC1FaCNJM3pg
UitoT2w0dGlaVHJfNDc8O2dsK3Axc3pQOGYkajlYM1BBWT8mfkRPaGlic3N2Vzwha1JzbVRSPAp6
I0Y9OTVCfDBsZSlWUk55NHs0K05qfFhoeXAofkImX1AmR0pHM3goeVYzNU1tRWJ3fXw/YTRxd2Jp
ZzJATkJAKEsKelZZYi1gMSo8JkshMEIxc21MfkZ0MlVManB1X2BUPD5MakckV1hXIUdzNSkkRnU5
bE08ZjdlWWRXR1pQTkhXNks+Cno3cnEzdVVJKUFscldDPC0oZWI8QTMwbkQpSWBxcUN6WllCd2Uq
WiZBLSRnSSVpOV9PYT99dEVnVW84USFyTjUtcAp6JTdUNnJ7TTdeTkJmOzFVe09iP2JBOWBkVVUt
S1hSTC1ZPWJFN0o4ajltaio7MmJ+OWl1X0ltJThyXnl0JXA2TjEKemVwS2xGKk0xYD4kc3A4VGJ1
NlUzMHNecVFTYU5IYlpvQXh3R1htTksxdDt6cipCTnsoUHNeX0J7eE5TMFp8Z1BrCnpBR09sU2w/
UEp4PmV7TypKaHcxaXc0TkRUJnIyJTgtfkYtWmpuJXpAdW17VkM4YUJiK3hOQk12YkRkM2NWJE9j
cQp6cmY/VXgzaWlEJkMtV3I8N2djPkZ6Mysmd3U9MSUhXm97ZFAkMGppQHE2UU9nUH58dCRZbnxq
cjQ5aUtWeFVOJUAKelJyVTRaITg8P0VgUlk/T3J0S2IrPStYfkJwNEhNVlMrTD5neV9xe1djamwo
eUdxUiFoKyhHK2lfYX5gaWpheiR1Cnp6U1g3QGA9Qmg/RTFLNipJKzIra0dANUVwa2xvNS1Ifllt
anpBez5+UTRjSjF0PENMY08hKXFjVWRZS1AtTEwmVAp6RFJsTyRiOHohe3ZSY2tPU3J8V2w2aDs5
bUErXzV0e0N5JERrPWlkb1ZsVnROR3M9em5DREN9ekdhY0V4NSUrWksKejRZOHJwTSYzfF52NW5i
c2lFNSpBVUpEUCk/Qld4ZGJObDwyVSNnckk+ci10eDEoUEcwbzRXMVAtcjJZLTlNPT1iCno+aUp9
JDBwNTxTT0pHRmBGI1R+ald3c2R6ST15dDdPb1R4UXR+c3x6ezZmQHxoY3g0ZXB2aG45WSFObVYt
ajY0JQp6YlZsfmJFXiZ6Sm1PV0FjenkxX0ZyeVJmeHpJbTUwISV1RiY1QzhQfC0rMFdPel8pSXI4
TUppYSozdyhzJSgzNUwKekJZYWByTmxMRjdCWDc4R1VIMGRzNllTPU9VSzVtJENRYnArUlNIViVt
VGM1QnNIX1BPU3BmSmppNCp3aENqVl5MCnpISVZGbmtlfXFHSmU0bVVvI1V4aW1XPno3OzRyRlVJ
N3pKLSZUbk9ScSomRHxWJT4zTkNYTzQxamNTSnwxPypHKwp6ZGRWT3t7TnxoIVRMJFIqcyZsQnoz
WCUhT1JfWWcmMW5gY0ZNVT87Sl8+ZXo1VmM9Um1tKXpTM2dDeDQqY3x+U3MKejtjcWE2aGVLWEN7
WFFoJVRVc1NARWVDZyFrVzhHIT9KQGh+UVdIWkkhODNzN3AmNk98JTJndUlNTlY+bE5VRFd4Cnpz
Q1pqfTk9aDNAaER1LVl2JklEK2F4ajx9TjQrWihffXl3MztmTk1AMVZ9WkVCKW9YZkJWezArakI9
LUZjRWttUQp6aEM5aj5VY0xNTmtSQjtNazRUUzBnKG14ZmNodWpnZ0hpOSF8MjZoVWE9V2xvV0Q3
ZUhUUzxEentzJD1DUl9ZQWMKejwyeD5haiNGNG9WPT1UZkdyWjJVMjElNlR7JmRpX3Z7VDxMb0l7
QHJTXzZ4eHphZD04X0EmMm1TIWNybSFCa1lxCnozQlpvdVViWU9lR00maCZqX1Q0OElLIU01Sm0p
alRGJSNjbjtEdG9jdz5UfjxKe0tNSkx9WTUqRjl6fXF4Xjk5Wgp6bUYjJnNRJU07aiZaYD5II2M+
YDIzXmBTMmVSezBaODZmUFR6c2J5ZyhLd2RHaDwxRlJwXjlqWmZRc0ImbHs8ZSoKejhsI1k+MjtX
KWt4ME5Wak4xTHtsWFdmMUhrbkZ7anRucEo1QHUxTnteaX5uP1B4K2cxblA9SkM9Unp5aFJhKGJq
Cno1NGo8bGQpMDB4aXRlU3M5YEt2fFRyNjAzMkB9I1pYU0Q3XlRKeXc9JU5yV1dzZ24jTFJ7I04y
Q0FibG5IKyF8OQp6SCREbmFrNHgwYURQciRhamB2MVVOSjxye3k4WTlFPFklQjlvJVVNODAzQypZ
TXcpfnZFT3FZQkI7UGs+ViZUUTwKel5IWjZndDNYKHVfb0NoMjx7KiZ0c2x+PWw3MDIrMihjaSRX
a0NNTklMZyNLKTRZaWlWYHE7c0s8cmd5UmBQdFZOCnpvRjIkX3VQI3JtZE1lUVE5QClkZ1IyV1Ji
REgoRF45fXNKRHAlIUZGZyZPSCNUP3UoXzZ4MiZQP0tpTVBCeyRAQQp6cSFhcHkwfXxVWU03ajV2
biZnbGNxTUZLKF5LRDh+N213YjVnOzU1SCt7cT5icXl9djxOcDE2MjtmS2YtSnI/cjAKejU5Pzcq
IS01a3BUQD8ye0dKWVJAaWg/ZnliYk5fPzlwO3FZeHVeTF5pSjg8eU0oLUZ8KU9aMWtsVkB0dFpa
QXJyCnpKM2lCZGhpN2kjPkFnYmFWV3QrZT5xSE1UWjNZelRIN1VVeWBXSk1PIyt+Wm96R0BRYitf
OU11USZvQXZmNzNXUgp6PEt6Q0RnT35mNC14WV9Xb3JVaW4jcX1JSEJMXj5ON1VrcHEpaGIlOTk/
dFdqKEVrLTlKbj03eGohKyF0cVR9JloKemszYE9gbiRvTEc/Rl4yaiNrbX4obSp7eEp7WElGfGRI
S0pFZVp4OUpuWTd2ZFlAbnc2K0M8VngpMjVecU5OYDZYCnp1aSleUUZAenJ0cHJtKWElPnx3UFQh
aCVXbmU8TTAlakIpUjV+eCt4V2xUUzcjP1B1Q0F+WWRWRDBzREJhQzZKIQp6Mih1MmRQMVEpTnst
ZztBSiM5ZUlxIzVFJlEteigkWXI2VWJEbTUxOyhYVmM+VEFlOGg4WDhGdm5wejtCd1U9eXkKekZy
NTlaODhtWGg8O1Y/aVlLYiZ7KSs7MjJCQn5VbWpAckpIRkcjb2g4Zj9BeGZDejZIQnc5VUtvQSUh
VnNEM1B+CnpPZnM4JHIoTFNZKWwmVnF5O1FXMlIkdHRRejhMSE9FTzhSOyFWIUZxPlJ2OWNiaXNn
YzYhfnFgakh+fTxYWU8hcgp6RCMlb1o4Q19ia0JabmJNdDtrdTtQdWd8ZT0hSytKcnowRTlmV01+
KTJXOWImTlE4fDdGczlWWShRI0BkKnt+VWYKeiFHSDh7Tzd0YXZmV0BZWVJzPzl0OG8oLVlaZ0t6
Smo3Xng7bXE/WnNqPjYrcUcxS3dBZ2J4USNMbEBfY057N2F8Cnp7WUd1MkN5MUBqRkk7MXIyPVY7
aztrK19sd1clN1pValErIXhoQHptR0FeVD84WTd+aTd7NFkpdz9AdiFfUiNVNAp6ODlKdCs8NlQz
U0lISFlIUX4kSkRpP1oxSmkhJVEjUT9iI0dYRn1LOD1SKiMpSWRqanF3aXotO0dpUHZEVz1pYG0K
ekdpMkkmQTNtQGo2RUsoM0ZiUHNyQnd8Zkg5KVA0dVJYMHBvbm5FTHY+bCQmMktJJGQxaD4oSXJ0
SSRMM0tZPzwhCnptcE5wZ3RobG1OJSFRV1JmMzBIKitWXyFGZiZZUzEqOGpIa2xoWGNacG0+RSlN
ayNVcnNmYT1TSVZvIyg8eXRRWQp6dW9oQzZuSClwZ0g7WCh+IX5TQEhofGEjUUVIPFVwUyhCRjEq
dmNMWCZSQV9LaCRNXmdCOGE3PFNPZl9HV21DcncKejZuZyprJUUoMjMkXnNZbCZENFZRc0A2PklL
eyZaP0JRbClxWkU2O04haGE7SE9jSExkQDR+RHlPMDNwMnMjX1V9CnpJZTBWWSY9b2F5N01lMkxU
LWckNnN6e04oX3pDSHA+Vn5XdXpWZk59Rns8ZTBXNXFzMz02RU9hYkVMNW4oMHxZNQp6Z31qbURO
UGF8aUI7dypJYTc0ZTwmezBZUXwwNHxXNmxzKU5IPkwoWWQyMVR8MEBATlFhcXp8PWR0QEF1MVJo
NyoKel9ORjN7QHNlKTFRTWMkSiFea2diM1dAMXolUUImeEYwbEgweyFfYUFSUFEtfCg0Rig7V0NS
XyNeY1J5NkRZdzxACnpqfH41bzdkeEN+PitMckEtVXJiNExiaTUxQWxMRmpwT19vSERiRiNWZVIm
eF5aP3x2eSZveEVST2MoMDg8RyROPQp6VTZOJjMtWXlzayRZcEpeM0gtaks5UXYyKTRFRUtRO2lZ
R0hSKzFCM0ZUJipNPFR4KWhHNCE0NWRTbUQ2JW9wSn4KekRKI19AKU8rPHFvenJHbHc0MnctXzhp
cnBsKTZPeXp3T0Q7TEgrc14mJnx2Pm80bXcxbXF1KVVKUFVKVDc3TWFoCnpeTVUtO1UmdXd4WmBy
I2JtN1hiTlZMNXVjZWQ7Z2pPdWYyQGR2QXp1TTRHUkRqPnZjaEw5SSlwcn5ENTlSbnl4Zwp6RH5O
UlNnK08rNEx8PGhxdD1vPHh2JGlFamBgfEpEUUFyLT1CK25PV2B1eyF1T2AhXyo0T3VKVkxMRj5I
dG9JZD8KemFLNytSQ0gyZGYpTEpwQXZZbl9fLSt0KiN1ektuI1U5PkF3d2NnOzdkSCFiaHpyNExe
ZClyMnEyS3RAOUxQQmQ0Cnp6PVNwQC1JRTNjXlVBVXZ5S1VLeVdvSyFMJCVCbmN4WEMwWCVORl9I
P3xJTHU0SXQjQ1hYZjU/VExjUClzelItMgp6ZU5TZHJ1WUxMd1QqP2RsYEFHU1EpS1EjT1F7SnF5
bSQzWWVDZGE0bkNPaz5YQEZXZHlRI3dpQnJgR3I1SGEmaXkKeihxSGdJUGxALXZPPVU4bEJ7O1lq
VUB5WUFkYCZ6PWQ8SlNEMSpNYVBYVz81ST9JbFlyKFB4akk4Zn1iMSl9eiFMCnpkUXFlelB1KzxD
SmwqSTFQMDtiKl8jWEF1ZmZ+KDF3MzElUD4tO0h3TytlbEdHPkdvWUNWMnVIcTglYk07IWppXgp6
dnYxcCM+VU1YWlIjWkxRRUpzYzhJKGZaWEBsaTxpZUItcjB3WV9oKVQ+MChtaSUodEU5OSZZMV52
QnRBRV9leCsKejlzUlQlWExMR0hRVHBNNiY0NEdXZ2JCU0tkVE5CfEFpVX1MQU14dDUjUChvI2xW
c2BVVjE3XzB8RUlIdztGNEB7CnpWPFktMHM5byRrJjVreEgkazZ3RyYpNntEZ3RSSHNUc1RTb1Ax
aHl1eE84OyVNVDIjQkA2P01YWVhtdkZwe2cwcAp6Zj9haWg0MShQI09Fc2p0RT4kKmIreDN1fnk8
bihZdDIrMD4pKVVuY1BpUTs1TnhyeCpibkc9dkdkbERsbj9RTWMKekRRdFAzWVVWaCY+bkJmWDAl
fHhIbm92N0FXU3ttV0VkMGU0PHFoQV88QUIzS1dYVE9NUmx3d0pDcFQmeHopZUFPCno4ezEkdjlR
dGZ8SDZ8WExSdVE7d15lVj1OdTJRMHBLPUh1OWwkdFM2O2NlY2xlZXAqSGgpRztMRXc3YHtfLUY4
fgp6OUt2WnEmMF9YTUlZSGVSY2M+cU9fK1B8NHBmcVFfRCp5NlMxaTNmMDk+KnJUKzJkfTlvNmNp
NThrJmpjJCpaMzQKekd9SmNwNzlLdXU4MG0jeztHUXMtYUBWeHdNWCRxK3tXMDMxVVZPVHt5QSQ1
RzdlPzElWWh4Pm5vYGhlV2pnX3JTCnpsZ2R4RXFMPllEUHR3RkJARldVUGc3NkVOKnY/YzhkdWJj
US1XOHFERipLekl3Q3UxcSFkIWpIUFpTVVFsSVl9fAp6eylSeTNoTW0rP0JQcGNiSjJ5QTdkZTc0
M2ZPd0h4fDVAbTRnfjlxPGNFRHRac0Q0Tl9jalBga3pmWExheXVgQzYKekBuUTAhQD5YJlp8SCps
ZmVBRT1feGRXeGxNaX4wVSVqaTY0YTBPJnp0VCEyM1RaZWE1dlkpdiUyYUpQLWBrSWQmCnppJWxl
YnMwTUxpMXAwVSY4WE1xeVl6RUklS15XcyFBKVcrJjtUazRiQT5TMT5fSGtrJlR3V2JOajwyWSg4
MV5hZwp6RUxZdS1DTitubT18N3M8TDZCSGdRPWB1fVI7cjlvSSUxbnpgcW44dmx1eHs5NiFMaSZq
bn4qdmcpZn5GJCZnSS0KejxoYUckeEZ3MjllV1ZqfT9uSFQ1WTx5QElJNnl3fnA7X2ZhOE81alBx
V0pWUTl6Jk1vOTI4PUlheT8hU3dMRHE3CnpucnB+aDJjelUpdH05S1pNNjRfVz1CdHRlb3ZFez5z
X0o5V0VDJiFPLThlRUZBcTxjI1dmITReenpWZSF4WGdWWAp6R2pLeExAblNEeHBKMyFjVCU7WXVI
emA5emp8Zys1aUd4bGhQejViQWgzPTZndHpPNH0hZUdCKWRaQUxnaUVwbnYKel83Yk9eMEI7QThY
I35BckRsMWs9M2FodDRvNyZoJEAleDtSYDBBcGdlJXQmRnMjRkJkPX5ZNDxaMzVnZmpCbEB0Cnpf
eT0wMFI2JCpOckNmV2hzN0o8UiUmNCN8dlc4PGpQM3UmPExKfUs1dis7M3c9V09kQFNLX2VNZTZS
TCR4b1AwaAp6cVF+clVefkhaJklVK2loVFVQQnhsX1ZtRzkmZXRadT9acCo3Y30rdm14RlJAdCRD
SH47OH1QYjdkV1pLUl8oRHAKenRQNjhjN3k2KW5Pfi1QOVc0VDQ9QC14OVlsWEpOKz1rbHtaSkNg
Mnw4RkxGUXNCPDh7JDI9a3FHOFdkNlBVbU1oCnpvZVAtNEpUXylIdj5DcHswc0stUXlENSVjTksp
amFlVUBDJm4mWlFeYUhBTlUySnM/KzZ6Pl9rcyVHSjFITXA+Ygp6cyg1Kl4rcy1wNmcoYjlfPSh+
bEBJcmxsTmo+N30+Zl9RQkZOVHwha2RRIXlLJk5WKmlnfW8xbnRGa3ZRMXJifVUKel87Oytya29U
bCg+Y2xHPHNlY285Vzx+SSR1Yig4dVEwYkFSOFVIZE5kSnhSe2Q7ZGxGKn10WXJnWlBSNm5mZnlQ
CnpjZCFOdmJpWHBQMjtIWSk+bjA3Tm4+MWR+eyMlNEVYYE5oJDMpKXgzIz8tTm1zYXJ6OGJSajdq
MUtXSGZ3UWJ4UAp6RD4pK1BxUWQ9cVRmPGAyOW09Xz1zei13bXR4Kkx+WWJ1eVNDdXd6Tyl5Sz9V
WUEkdH41N35EPWs1Wm5aPzhrd04KempAJSFzSkF7I25sPFVOdjNleEY3OTlhUXEpalp0VD1YK2Jl
U1EkbHZyVVhDK1BzRiEmdkdCMVchZ1gwTWhASSR+CnpDJjRYNEo7LVloUWN5c1VLc247WClWSU9O
Nk5FdjcqMmhLKXh6ayt7KGF4YG97Vk1LNjBBYlJpdnNuM0VaZCk/TQp6c0JWPnshPGNfOyZXMnAk
N0ZnTUJPZE1GI2BfQFc5Qzl+WCU0eWdVfG1XYVJ3SUpFX3F4cEtgYkRsU21ENHVRb3cKemx8PFpT
VHtTX2ItU29+RiZQbXkzWHItcG9XczNjVlR1ejgpXmRneF45fndhP0UyeG5PbHR0dEZofj5gNTJr
T1JuCnpOalVwUmJ5dFpNYSE9Rz8zSF9ybnZpQkRBeXFNKTRxNXg9em50angoVj5HZ3A1SGpBdjc4
Qk5DOSFHbkc1ejlvLQp6UGRxVmZScTRZQ1Q8TWBmSy1yU201PSZhSCNhOHB+PkdfKXY/QHBpb3te
OHYjJDRTRmE+a3tpOSolJjtBP0xgUyQKenpIJVNXSTZAVXwhOTh4RjVUUD5YdU1+QWNqVDZ2Zz5u
dittMlItNDs5JWVkaHBZci1OSzAwaWUkYSlie3d1LU1sCnp7UUI/bTFtPUxWNDZmPHJkX2h9Tjwo
fWdTTDA+MGxWaXtCezZwUHRKaHF+WlRUPHswUzNxXlUyQXdTUmpoNWwkRgp6Pn1jTUNFa1UqZjx+
KlVGYX5KVXM1Z1d3ND99JCt3Xz8yb35WRSpkZChoSEZOO0R7dWVDKHheNVR2SzhqdkpJVUoKejUw
ZWcrYSh6YG1MTHRpKTx8Nn01MS05VU0lXnYzTlp1LThlTVB5cDJHQDFAek8qLTA5b1UhOGFoVnhW
MFAqU1RECno4TCgwVyYhSERkNUNyST00K09USCpwR2dAKyZlT3kjSz9WYmchalMkeSpvR19iQD03
PFYkaDlAZT91UVpsQHdjPwp6cGNvMDlRcjwyVDg0cjcoRTNORkJFbGJwcURlN0YtJiFsRmRadnhj
RFgkNE18YSh+OUR0a2coVTRXZHpxezF7eDUKelQrdn1RUENHdGdzdks2cnVsUzdHcmEkOElLNl5N
XjZjP1lkKmA/RUIqNm82MWwwTENyWmIwQ0EyP3EhVGsqbDMjCnpLc1VRQj49fj58V1F7cXA3NGVU
Y1Y2d3hGezhFS3VjLSFGaFR5ZWcmdWB0KFJUMHZJKCltNUQ7Z0diKmNERTE4Tgp6Jm1YOUIlYjlM
Sitic29ldmpJdyNXR2krMEM9dVIpZ353eU0oUVhnbjA9Tz1paiU/S3dwMmorXlVycSFkdWVlYmMK
ej5MUnVDRlo5bTt8SW9mcWs1O1FPNm97QitPWUFneTtyWE09YWw7d2whPDFMbj1FJHJ+SUFZUSo3
JV5uY3haWiViCnpGVUsmek9GUzRmaX4kSVc9a24rKHh0OHFsWD56cWM5QDRndWp5dDJZPTZqYHdN
I0IyMDNQPUAlJXNQSGRGVlpSPgp6X05UTkR5WiVBa25reVVAP3Y2SDx5azZLc3k8dHljVEUqK3dl
UExXTjgkUUxqKGxoaWF1QlhKZ3BrNGR8JjIwV14Keml9OHlfanJWdWgxK3NTeXV9cTkldnB5Xnhl
WHlVSkI8X1Q4NDBCXyglVSRhdkYpY0hsNlZNKHE7UGA0dk1Mdz19CnpeUjVAIVBLOGstXzFWcXQ/
cFNwPUhAM2toYGllVzZmcXUlUTVgUnsyUmdsPGNSLUthYFhLfWxvMjdgO1Y+aiYlVAp6I3daPGtj
Ul55X2JvX3FSUiooYVcreXFmNm8+eSpNcnFFelAkUWlHWVdrJSlhMXFaRmhJKkFMVlEpKy0wP3Vr
P2EKek0lMnMlKDt3bFIjSDw/MjJZeVgqWEMmRkpiUkRPdTEtQnIhWjM/RnQjXyNfR0pATipRb1Bj
Ozc4dFh5dUJnVj9QCnpUMEE0bD9LREVsSEk/RklZJUl0KiY+RXB4R1FsSmgoOCloPDlHd3E3enI7
dz0pcHgkcWxwSVoybHZVcUkkMFJuWAp6PUVvYDhQdElZcm5MPSMhdFM0N0orQjVve1RIelE3blQ5
WjZwYzkqUjZkdXQqbXFSeFYwdjxxZG9HZCRiWHB2R3oKekclcVNpU2dvfUAkenp6Vnc3Zm1RSm9H
XypSYStvckNCdkF8RUVXZjMhTUk9PVFZOHh3bkxxQGZUOWRxSEx2TmpLCnpCKkx8fjtIQVlHJSRu
KmFvPTRyblB+KVRJemB0Q3lGTl5sPTw+RW9PbEl1X1VJJFZZSEgoKVFXJWYqM0VZbEVPTwp6aVZw
bWMtTk9iNyNiU2lBU1BhfTcmdE91YWhXNmtnVCpMdEJJQVRhZ3EzMGV4N31GNS0rcHFuMUsxYEM/
TnRzZz0KemtUMHhAa0dpbktPSz9OXnlFXkRCOGJUZX1QVVBpN2N7elJ2c2pFZkdweSM/SUYye0NU
ZjZjSVJwaj5Sd2M5PGtBCnpKR0g1eXloV0dueEY2TFh2U2JhP0ktMWp8b2BMNDEzSyRIVGM3IVN4
azI8aU9TaWVBWDAjTysxY05eQ2tWQCl2VAp6UUg3P2krX09Pb1decDBEej1lM2Mwb1B0YjZ1b3B8
UWs+bSh5VlQ/eyo1cm8hOUg/elRzcztATGlRcTJGeEV0MU0KekBpTkYkU1J6ND9lRXhabyU+YkhG
QWNeUUVsaDh7T0A5cXY8Nks0NShPOzwoUWA4OTFxKm00fjNGWWhrejQqRnI5CnpJdUBxdUhLaTJU
dGNHY0ZAWX1TSDtrcjI0YCotKUNmISQ0fW91PStKYl92UmswPzF1LSleUUFCbV87ZV5TTyNrKgp6
LUlwOGhhTG5fWXhQa1JmVDVoJCQ5byR1ajZXbFlrSXF3O1psdi0xRFR1LWh2Py1VKWNxTHozKSh+
KVZzc1FMdT0Kek5AYmpGUjN5IS1jTTd9SGJrSVVvKEI0OW9MYGxsQyM1c0hhP2ZMX01helNWaUpF
TFlMPj0zaEFDOGomPU5ybDEwCnpwKjd3PDJ2fDtFTiRBbHxMYkMqUnNYYz8yQU5RY1l4NFJvOyhY
PXhpIylJUWhYQmh9QClGKmIwY0o9QGElVyEmNAp6PmBrMXY2YVZtN3BGfHhrU25xNHloSnpvd2xp
TDh9M2I0bTg0dl5lRk4qdSU+RmBoOzJpdGlJZClxYEp+MSZCV0QKelkwJW08SlppRXF7aVNwfiFW
d1lUQ3tgWig1fW5KWFYrc2RpJjB1RDtVMiNYPzwwRlA1RVZTUjtjcyU+YCErNGdaCnpWK1p5SHFN
UGwqdWxSJiVqMHAzX2hGSCRBK3VUT1A1XkJNfCUpUChgUzh5ODF1YDF4aCV9ejJwSCVBNnMqTE5E
eAp6QWRENCVMaFEkITRoUG1NNCM1MXNeNFoyX29AbiN3VUk1cXJvLSZkQU1GSzVzWVpTPVdKKz9n
QF9hO2pRQiQqfi0Kekl3PDBLR0E5bE4mWGxrPyt7OERgZk4lSUQyYkMhdnJjKWR+KDFVY0l6fTFJ
dUJSYlE2TTh3VigtPiV1U05IMi1SCnp8QUNzOz4wUmBVbk5LKEJJZ297UGojZT1hMk1XWTZxfXtw
bmB7NnZLdVAzJWNuMjR+I1BSZ3Z6d2J3RGNoNUUyVQp6MmxvUDlwVCNfNj9IX1A2bmhHXkRhPG1U
YnY7fGkqM2EjOzJHPjZlRCpKTlA+ZHMxMHJrK3d2NHlaSDU5RDNTKHQKemYhM1d0NXZ6YUB7Q2xH
bWhCMFg8cUFFSmcxZThrZy1rSG1JU0JpSXxuSn08Y2llMFYpNH43QCNaP3ZtZ1IzS2xKCnpJUj9E
PnBDTH1XTz8xJk5KV3AqZmJQVWIlanArODRhNS1WPFUldyZUSiFAWlY1Y3tDNSFxKVRHKUk7M1lw
SGB5VQp6bl8lYFhiWFcxOGU0NXEyQmttKzVudCRhQjB2MndSWlNTSXN4Q3FnNnd0Qy18JmFkfU11
NTxmNktyVlJ+dzI5flgKejI0VTBKPUpja3xFSF4qNnE1RUBtS2dTWEVMZFFpWVp8OyR1T284aUh0
aEF2ZShNUkFMaiF+Xko5QWRgZ1ItISo1CnpCdmp5YEpzYzNVZVQlMGd3enRCbD9ESFpCKiE8Y0RF
aHJuPythOHdra0clXmg1VzdPNSFeKldfK3gxVm0xZFo0ewp6VjJaKjxrIUFhQG9UQ3Q3MnNBTD08
PHlPMTBla28pdm1qVElpSWEwaWdtYEFYWWpUKjBhd3NGNm1iMXhFJCkyJFEKekdOQ15te0FxaDMo
ZGIhfSswb3NjIUB9YTdBPUZCcm5IRCV4aXJ5SzJJYHxfNl5gbXw+R0cxeEZiJVRKLUloK0VLCnpA
WjJHR2l+O01GVVpDMTtEOS1jPU9aaDJUY0heOERrUEJzM3NObCkhMXBFVHduP2JhZXBjVjFOKXY2
U3JDRz98NAp6eFhQPyZoeWRtMCY4bXo9YT5wN3dzMjwqeGk+dWptUUFRVSNTdlBjJkJ+O28pMTRT
KGtOOFd8Xy1FS1Zfaj58NSoKemoyMFU2JndjdXM9IUU7OUI2PWFqdCtnRFRCNGVOMEhQSy1sUipn
ZWRQQTBReWJhI0AmbXB0K3VrZ3RQMzdLcilgCno1JUt7b2xwJFJ8SUMkVyNMbGBBUkxuM1d4PzE3
RD5GRVIxZSV7c2hZJXpMTEMhaV56VnlrRX1XSj09VCM9SD03Wgp6OXpUMXxFbHwoKSteMUt5UDxV
UWI5NlptWnpPRVBMM0M7QFVwemloWlpfI1lwLXA7Znl8Mm5veismKih6PXotWkIKelZSNVZFbUo/
YD96MlYpK2JuSTdPIVJlYGEpXylZb3tTQXk/PnVCUnp7RXomITRwSmBAaldMVC14Vm5KVlBeP2o+
CnoyWnQ8TiFRbmBUbCs4JWU8QEYqZ19jeHteNGlecjIjTGoxJlAwI08jaGxqX0lxPCh2Tl8kY2pV
NXVpclU9dGBpSAp6IWVQJUU7ZWx4SmR7R2VWM18mY1IyWFp6d0QyUkx2ZmB+NnQ3bTVkNEpPbFUm
Zm8wV1RwaTl5RHBoJlp7a1lNTH0KemQhcnRpbCpfQGFoJjt5My0ma2JYZW15QntaNyRHa3Z6SW56
QVYrZD5RK095IS1RXm9XPCpefl87VjlNNj40WlJ5CnpkTUBlVVZ6QzBsb0huJnxVJW57bDI4eTVS
IUs2UWpScH1YI3JgOVdtNE8hMktldVlISTwobz12QHZ9Q1lUcDEybwp6Znc9YSQoTmFZKyZ3UEUm
dldWJmpDYT9VQnc0Z0g8YDJDRnMoTUZPMlBxP1Z9NDItPk8mKURmKExiVXxBPGMlP2QKemI3eyNa
UF9kIXdRJTV0JWF8cU1VX144cj4mdyNVcW1rfkU8SVhJbntPZTdPPzFeLVE7dz42fTFXPT1NPDhS
MChiCnplWn1NYFhLQ21YNjMpVD9DIXtEcDs3SjhZST1KKTJPXiFZY3JkI1VyRGFjKVIjNVBGd2Bj
WVdSNiFSbVFyJjVBawp6K2FncFhNZzFWRz1ZZ2U8SFJubCo2PzA4Xk0pbj9wS2whPmU5MGx0Pmtx
dlo2RVVNRjhMS3BPYSl6ejxBVWtSWm8KejxEMlBDJHlwY2BHKz10MGlUKnorb2JAMDcheTMkJFdk
dHlBRjA4fVlIK0RSaGZgOV52QGAtNEI0ZmlHOUQ+SzxFCnp2KDlVZEY+eE1wKWMxbFhhQGhAeypJ
R2spNChHQFkwNlJkJHpwPHZOSWlxTVRNfTd9b3l1WSheTWZAeXtyT3gySAp6IVdjKVVvPl9DPUVG
YE04KWB9TXg9R3BrQmo5I2RuSk1peH5rWHstfSZxU0Z5X0dQKUwqeDxRKGo7TmJhPX58RTYKelZp
MmJHaCozUl4/TD5EbldTalp7M1VKPEA3eysoQjVCO25JWWltaG9na0tYQy1leDljMDFpPmlURmxE
XjA9ZWt9CnpzXlNIQl5VMDhBYDBNYVZfPm19WUo/YGZUKFk4Umo0ZkZjRzxme313N3F2RVA8aDRV
PmRNdllUNT5BNDZJfk8lSQp6dXtmRHJ0eWJGLUdFVXVqS1JrVThOLUowVUROJG5vSSlDJX10KCEp
KT9DYSNZdWlvS3NvZzdHKSRaTVVYRX4xNl8KeiRVUkEzXkxCZDxfdmp9PD1nSUV3N3lrKTJqQmNj
WHg4V19+aWFkY0dgSUMjSVp1a1VSNzg7KT8/MUJDU3A1X3JmCnozVGR1ezI8LVVnckg3ZCo2WlVh
e3tnRllMc2tWTTBvZmRTNlpOSkYoc3t8YUo1dm5RTzItcCQrTjByc21iMl9Vewp6PV9YR2tSKkxq
UmNwZF98PDBCQTI2eiswZi0ofHp4WStEU3ZVPjVSWUpIaDYxNGpkbDRQfjdkcjJnMHVkYGBodD8K
ejQqaU0xN2A3MzMkOGFLfF8yP05ZQmk9YVo9XldmaCk5MnZrZ0gxdnE3RUF8NXF7fU1AIUw4WnI4
OWleVExlQGxNCnpDb3FnU0FYbiFvJUpTV1VDSnF8N24/OGJZdkM2WSlTJnVLSTJpKGo7Tys9KzNq
WGg5UFM/QHN2N1pYKlVvVGhZdgp6I1lJMmgzRDhzanZuRHY7dzVrekJReklrKlhsfm1BailOK3ZY
XlgkJEdkeSZTVloxVWMjJlFIaT98T2EoMy1gX2IKekZLNGZ3KEAza25iUGpAWTFBSjQoMWIwUU9f
ay1ANVlSJjtDXnNZeVQ1Tn1rbE9ffXp1JExYQVR1I0FgcG4lUWhgCno+JExPUzBLbkd7OT4peCsy
ZGphcUcyU0FkNTNoanJDPHdjQnM8WXpTVn18WEleZD9tcT0pcSE2XmY+KmQlcGgkOAp6UWBIQChV
U2srcTYrJj56YWMlRighZV9TNVF8QFE4OyZUTnEweUx8JVBMdSQ5Tjh4U2FUfjl+VCp7NylvciVQ
M2gKenBsRVZ2NypLQjlVMkhwPjU/NCpoaypiUH4kMGFBeENuXzx+RkwlQj57NFMhc1BHTE90WD90
QWJ2eH1uZihefnI1CnpIWndHUlNrPXRQa2J4VF9AZSlqMyRnPVFvS34xbmpkUD1obCZAVik2ejEt
Yj54dTBlTHZ2QUpMWEItWWtTcHZOUAp6XzcrcnNmLXZwQjBEJHtUPX1yVVU1VXtvSntpeVcqT3xa
X3MzUU8tUkdtPWNlXmpZc00lTiEoaXNSVS0laVRBdEwKel82eT15dUU4dn4ra3dSY2B9UTl9VHdH
anRFMyptLWlkKkd9WURgKDNBKVlmbWVfJGlVOz5pNXteeUptNiQwdyZSCnpYfFppQW9QRG8tOWZh
MzRGNXNDenFQMWh7Zj1uPHxqayNIaSNrfSY9TWk3VVdgXjEpR2dqeGRAOVp2amR0LU1ieAp6Tl9t
TVcwamlWYTlGeTM3VCo0SHlYQWBVWnI5JWNHS3dYJDZvPDc0bztATXR5VVlhdjR2WHt0Qyt+Q299
aHVfalgKeilgZkgpKG9FSmp1QCFQPF54IWJeZFA2b0xlR0lIcChOV35IRzAlU2JEMEIodil0NE1J
Y1JiZDc/UT4xQztZO0VRCno8fiZ9WndhTWYpfE0zNyRrOGMmS3l5Uj0xdTU9QmNncUl0Zmw4VE9n
JWYzJTlFNX48b3Q1b1lCI1I/WUYzcnFmMQp6RzVSMGxIRnx0bl8reXMlOXY7c0ZxNDt3REdAUj1R
ZTR2MmxMSUxnVyU3dVVHbiRxbzleJkIrV1ZWWGRWRXolckUKemBKR2c+fEhmJEQma1BEPHJaakZ3
Sj5EYyQkfnY/PUlyNX4rYEMoOE9uQH0xVlYkcyN1KWktYCFoais+VVJSV2d1CnplUzY7SVg4bFpR
QHx2NERNJWNWQ0BPIWkpKFFmM19ham9xaDYhTE1MQ2V1IWQzRztxX09gQmxCMXJsUz1mS3pYSgp6
Q2FmKW5tPEQxUz5tPGxrNU12bSlpMFU4PnBmZVZQUkFwPFohakBUTWF8dmhgeHQzfXc7QmlDKU0m
R0s4KnRDZ3cKem55fXo8T3xAQ3x1Z3NAREBKZTUlQkVPcU0pNVQpLVdQNXZWSkBtb311P0w2WWk9
PWV7cnpWYzRwanFKWDNHU0RtCnpzeS1nU1dASjR1QnRDNlVoSnd0KGtBWlU3XkN3UHY4ZVgtPktA
ZmF8MUl6QzI2SmEwdmUkUm4/YDUwYVNtRXZSSwp6Q2VteTBfSjFLU2Q/YXAwYVVQV1luc1pPdXFp
YHZTUFlpYVRzc0p2KCtgcCp6Xj9tZ1ErVD9PUS1RN0pwZXF1O3UKej5NZFMkdVY+MUJMaFJFeWw3
X0J8WFReRHlNeU5QdnpOa0JBLXBSQiRWZWQ+V1ZVTTMmRWF8cSg7VCFlUEp5QntKCnpZJXJVcXc/
XlJVKSlKTilNXlUwVXZKemp7JXpFal5edjd8PElRTEU1emx8QnY7d2NpfG1BNis+Rkxhek5xOEgo
Zwp6NytnTmw7bH49UlFtcDw+XjhQVE5VMD1DQFgmZUslYkokQ05WWDBJbUxVXl9xPlY/SE5kPXY4
czI1QG5uXnd0dEoKelJ5aHZudWVKdV5EaEEhVnZqNm48JH0hJEoqZ3MlWGQjfj55Kz03IVFaT2p1
N0QlOz91Yzk4YkhMRFF5WmNTJHA3CnoxREF3Tkh8WGJ6NVpxR0dFRHAhdERnai15U3heKnxeMSk1
TUoydzE8P2h5TGUmU29eRUA4Q0B6QX05cU4tIUN4WQp6dzAkd2IkV2VZd049cmllZURYKW9UI214
KSNEQ1QpQjNRQzNgTkNDbHQ+cGBWcU44KUVHbVp9OURAUDBeZV9acH0KeihscjtLMmtXUkxpY1E7
YVFOMXNVV1p7fHhUJndVdXt3ZEFsYDAja1Z5TDxXd2t0ekxhRXpQMHhFeGglc2clfUk+CnotYk05
Nm0oRzZCYWF4ZUg0aE0qblRGWWRrKUxnQSlwNTc1UHVvMT9ASXAtdjV1YEwxO1hyTjdBUkZrX31X
I0NDIQp6V3IyVkApdm91bWAjejtzbVg0Mk4pZGJGVD4pI3VgTF47MDwzdHx8aWQpRXN1ZUVzMzxA
elp5fEtZUjE7P0J4QTwKemJvYj14PjVIP0lTSEdWPmVIKGZFIzAzMkM/Iytqe2F2T1QjK21yWTJw
VDJ2MjkkbmxgaEVyO0diUUlGWHZ3NTBGCnpodjZpPjwqUlJAMWJhSXR3IzM4TGBFP0loKTNWUUxk
d2kpOWB7eXRye3glJHwzdmojamYqK2NLQURWKE11TVpFPwp6QDB5REReJj8kTCZgP1ZeSnBKKFEt
UDZ+bnp5NXl5Pmxxd30qV3Jfc19mT3h5SUQyWTQ8THU0cl9zPThtVStNSFoKem9xeWhYUiVVYSlJ
N3tkR1ZDJj4rSns7NWE9ZEZLVFBmUGtVez05V14tNiM1Qj56cnRzNUArXy1ufHdMTD9gdlpFCnpJ
Tj9jfF5NJlVgUVZZK1l6al5vRylgcHI7Mzk4VClwbk1kTXZRYThaTH04VjNvfUJ5fGRGUipEZzVF
aXNAeX5sQQp6KCgoSXFTeG57WHtvczFlN3RpS0h7RzFhSkoqU0lHTmlBLVlFKVJ2RkIkUl5wQGhh
WXt5bUU1KF9LWVRtY1hDRUUKejw/V2YqNEd7JFdkSj1oT1hKPWJReGI9QiE1S1NpMFZ6SEd7aj5V
aztXc2U+bjZiR04+NXo+M0tKM1BWWjt5dERSCnohbVRzP3ZLTmtMKTRuYCU1flU4NHRXdnBmbUJ7
N21qMGp+R2N9X2J4ciVnckQofDBHWVB0S209VE9PQ2RkKV8pNwp6JSFlI3ZJaGpzcFRUZmA/bi0x
eXdDP2pWJiNnaXZxY083MWh1amxGYkc8RDNyP00/eClYeDh6RllvTzFiKE47K2UKenlLOVMpRE57
WFQlVyZXekRMN18oWUBvOzFha0dwQTF2X0RDZz9nWUQ5Ump5dnZpTFheTChyV2ElXjFOQVEoWGVX
CnphYzVeUlRQel9rclhMMzk7bXFKfGV1alhVRWBydFNlZWM0KSl+I2RMNFhhaj8yT2ZMVStWQ05R
UUFwYCtNS345Mwp6eVZCKCNMM0d1a3tQNkF0VnBMTCg1aEQoNyNSSEZST09PUmt2cWc1Q0xgJngj
MSg4amMoaWJIYlp9S0g0Vz9pbCYKem9kY1hUKUxMLXBHdXR3NSNDRD1ARHxpZDBfNHFQPDxCWV4t
OCNKQ249fl4xdlNYfiZAUSQ1PHc+O0Zvdl4tRVI+CnorQHs4I01aMjlXYV9tfU1QVW8+fTY2VE9l
e0A/YzchUmx7MjJWdStHSWRaMj9vPiQmNXJFKkw1JExXSHwyLU9Pagp6YV91OG04TG5kTkM/aipZ
KjhVeGB3VW5JJXc1YndUNWMzUmBGemhOal5NQE9uPDFDPmIldkVUYT9OPkpOJXhVSSgKeiE+aUBz
WVRtb2AjQTs+T1AkdGpgZUNJQ1Y2e1pwKEIkX2QoWiFLazBtaG9lek9IbmZAJShPOCpDUUZCZ3Em
K2l2CnpjPmQ0e3JIZSY/TDBhbGdKQSReS0xJfmVaMTw2OV5PdFp4WSVBQnxEbnxjaDZZJXtzOVVK
YSlSODwkaUdaRDUrdgp6ZyM4PTRkX3U3NTFmLUNWckw8YURqZFZuZVJmfnA0O00pNURAYUVaQzFP
ZW8xOVMtNSRQYjMrRVpYYEt4YCpjczsKejd5PytNN2VyYVI1OU9UPGx6ekVTcFV7aFBURGZoPyUw
TmFyVjxFYTxLKWk/c01jTUFWIU5xZlRGWnFpVE11VSYpCnprNjVpI2dUZndiJXhNYiM0ViNqP2dT
YSFiKH1TTig0K2g+VV9HNlk1cCl6S2NXZGpycC01bipKZXU3T3k/KiU7aAp6ZGE4WHo7dGFHaCZk
M25MPShvIVFIdTtiSSVZKiN+ITJ5ZjBFYzt3YVgqTXVvJChIRGBMUjBRM280VEhjUzF1Nk0Kel9U
czE7Nl9wOH02bntSeVRlUyhFSCUjI0llPj1mKnA1UXI4QFVrfCt2JGsodj9XRTNoa0Mra3U+T14t
SDQ3QEw/Cno9JElZOUdQfX0tbjFYKjQmM2phdEReYFVXUWZwdmEqfGgkelNEJi1eR1g4e3UxfmUl
bVN9Yn1vKFM2b1Yra0dyMAp6dnpCXlRPVEY0IT5lO29fYD9MS2xQZz8pS2tHREk8JlZXMnxQcEQx
eW4qRWAmdUpnaTNqYk1YO0I9IUNZPmAxSGMKeiNfQmdvU3pKPEU4a0stT2ordngyWCslOEo8Z1Mj
Nkg4aCgtMXlUN3BUPnhmX1phKURANyF6VTw4UF4yIzclP1prCno7cUNvRlpaXmZNSlJpQDlBWmQp
MG0jTnIxc3gzeTtgZHJmQyNpQVl3WD0zdTM8Z2teQnVaI0h0JD59NXspeUpXRgp6IUc1RUQhPUB5
KTRFSVFZRC1zWSNvIytKZEw+OHNieVUmK0hEfXgrcXVBPiQjbGFVSTYrfmFeejV8dFM7dlZ6a2sK
ellpSiUzV3khejNCT1ZoMUwmXz1MeWpaQnQ5MnR1Z0VaQGgrcSh4NCZrI0I+X09FfWthRiVqfnA2
aj0jU0hyT0tKCno+IWtjZDtBM3E5emJmT1NjfllwYTtrYUM4TTh5YnkzTTNiSXRTbl9Ub2teX1lj
IytIPDtgbElaJWBGdjRONFI/agp6YV8oVjM+diYyPkM4KHErb3N9d1ZabH1uaktNSFhoVVNPeDFM
KDV2YHZCVTxNYGlsQDdNZ31FeGIlWFRoUCoqaGMKengzVUN+ej44S3B5UEJsS0BwMllLMmdBNj5B
JGZEIUZHcDFgM0dOR2IlODR6P2F6MWBwZSYqeyp4bEh2blROVXVsCnohKT0oYTRUa3daVTEhKEo8
IW93JnhoMCZZX0xzRShtJitqYlFXZm9vd3tuKCs8QkIyNDU0KHMmZio/V34mP2QwXgp6eV43dmtp
cjIwUiozMCs9WnVIKk9PNVpiQk9RZDRAS0tCUSU/ZWg2Z0tiJVA5c1h+O0NVNXtOelpSe1oraW0+
TCgKejFaTHApJTBZYXE5YnMzaTdSMUBRSXs3e3tmT3Z8PDZWV1FyVyhBRkpTcz5jQF9Rbyo2RVNL
bUhLcSt4UF5fQ3d2CnpHa2FUNFM3XyNwJkBKcTFvJlNaYD4rU3ZIYHxsbmVlIW97TyNeWjwtOUE9
R0o3RiF8fU4ld09Pd3VGK01SUnJ4Qwp6eTc/NXhjajNsPmM3KjNAZUt2Wk4zS1F5LVNsUyhmWHZV
RjRNPno5MGktRzwzd0g0M05LQT9pN3QpPmpMT0BgXi0Keip3Jn4qZmNIQVN0Km1mMm9IN0t5NWdq
PXREOT07aTN5KyE1VXtqZGYrUkQqb0czPUtkYmQ0VmZQUW5IbykxdXh+CnpWKzBQUytTZCVecUU7
dTd0N3dMekx9eyhWR2I8QiNjfE4yN3dtO0RFJlU8aiVHUF5BO2xoZjV8OGdQNVIqODc+Owp6YF44
YEMpfnZGN19XckRVNWthfGR5RW09dT1oVWdSaTJ7YktQYXA0bWc5SCZXeDNxU0owfT19KSg9WVVh
PiE4dXAKenJmPXk3QWAhJiMrS0dZcHJ9NkpMTnJRVkcmdk5IMVdaMk0zdXNGN0gtUThfNWgrPitM
STxSen4oMjxuKE9RYFR6CnpEOFd5eDhjI25ESXYmNXltfU5TIzRTJD1xZE05I3pYVj4kKntQNkNU
M0tDUCN0ez1DKDI9fXooSVl3LSo2TzNqMwp6KmBzK2U4PCVWb01RZXtlIzxUdEx0aU17XyNOekom
U01fOWpUZDVrPERMeE1GdzBiUz1ZXih5ZEs1TVloJThWeCgKemBgOT1wYFBUST1TbDUoYnUqVmN0
Wnc0USgleT09flE4U3x3clpyR1RhcCt+YiEhTy1fTzZPREQ7dXBiU3h0bUxFCnpXJjxxJSY1fiQ/
WV5OT2ojQjIwJGhpUXk3R19DanVgc15vWWprYHsqUHxFeExjYUFTeXshbEtMPF4xPkdKQEl4awp6
PkV8Mmk8Sm9MPGVZS2ZpKGxfKDckV1NGSDV+Ymp2JFl0SWU3d297Vz1+NlZhTztxcUZKUXRTcFlx
KlV4NipiaVgKemgrJnxQQ0RNPmR1TnxGeztuKFEmbU5AR35jNThEQG9aQz9IO0ptfnleK1haVzNN
Kno0UXhlckJ6OGJZV2JjUz1ECnoyRkpFPkBqdzRVIzY5Vz44cEtjUF92YzxjZHlsaVg5RD88aXAz
NkZVKkhhbHtIYTFnNjMwV3RMb1coZFA/cyszfAp6LWJrYXkyUH5GIT9LSXZ5UWt9NVMkVihYO3Nf
N3ROYCl9djd7eWQjVFk/VEttS1VrVm9tZ3N4MUlZdnRAM2dhQXUKeldEfSgpKTlHPnpZY1BFUypl
aCNkQHAxb15mQ2ZjUTR5cUkwdk9pLUohOFRGSnw2IVdXS1ItMjxMfS1YIVg1eHh1CnolQ1Flam5w
M2R6UjMlal9kT1UyWFg8WVdXN0ZeR1Z7bFI5SCRZSmhqJVVBaURUZm12c3RwU2N1RlIwfDgpP0tz
eQp6RmkqJC0raCU+V1JYVllBKFQle21Sfm0zU24tJn1nZVdNWGViX3xoNXErPVNARFgwVUxmSEdt
WSktWHRUdWhLTzAKemF3WE40QElQcXYzK3MjU1BQOEw7cVNmQ3lWfGApbUJaVksoLSFRcWxDVGVH
UV9xe0s+NitIaVd5O25ZUHJhYmhgCnokTjFhIVd4ZGhpUmcpJDdURHdsdXZEQGA8PipAe0JXdTVL
UjdtSlJ2NmhDXjRAZkZkeDdJTm09aU5CflhYPWZjZgp6ZVhLODZEKyZMbGp5RUUkJV9RQWU7P0JU
RzxLVDtaWnxnZTY9OCZCKjNMMlhFfEtWaWN0UThoTG1FSHdvcWRRTEYKemBQfGNRdF5kPUdFMjw1
WGxrTUo/c1ZPdXBIYCpxKWE/WiV8ejF6JWNMUEtMRSErK2RsI3QqZyl0fU1MSi1Ra19uCnphYXlR
QF8kVj1vU0p1cX1zTVZlPTIybitDLUNFVmw3VFhHKkM1O2Y/MTF1OT1FfWNxZE1NYkB+bHJWKHVF
YGUyUAp6bEl0NlJFJEdUPVpQSm9zKHdNWk43RVktKVR9d3ZBZlZfRjBoblRAcCk3djNXPHcoRSRg
VWkmQ1dqRXc8Ml5VYUkKemdPcTVPJGIqJXNZM1dEemxjRGpiRzxMTipzd1hpdXdwcVhKNj9KZjxy
QG9mMHd4SXFqZHdyVGFuJDVZWkg2WlR2CnpAaW96bjx2aGA5SksxTHZodF5zQSQ4UzgldG1XNUNS
OU5EYkVRU0k1aiR1SF8wN0ZOfHQrV0N5UjNAaXpNQVAxaQp6ZyR9OFEoa0BEZFJoUWAyIzdyUnAh
Ti02encpdmooaE11YSg/X2RsKWJIdyhaTCQ/QW0qcFpeVSVIJUo0THdNN0oKelo8bl5DNFdlSCkk
ZEdIblZFSmM4ZUd1QDZEa20mYFNkayNSZzVvO3BrOUI8ISEoMUh6aTxUJjZWQzFPKS13cC1LCnp0
Wldabj1WOE9zcHRGNHhITmtHeUp5c0JVTHhVcCZDNCl9aWdARUtAPylOSzNybFNPWTlEU2d9Kjk8
RWdZKGlVbwp6YzQ0Tjsha0RKQzROYD9tYFg2amcheDYrRUpPcE1LMld4SW0mJkdlfDd6YjFRbkow
KGcjSXo9IUE1VVU5SEg8SWoKelUyNC01S1c7JHgjJTVXZ1NjclomUD0rWm1La21pMzQobUlqUHQz
YXR0UXhWSD1uYTZZand2Kz1mKz13TDxxbWoyCnpeYnc8QW93MS0oZjh3PDl0RV4zVUg2JiUmR3JX
QSMqbUMwPzR2YVFlKTVzR2tOc1paUnZ6ayE2Qm5tZDBTdUNIMwp6RVk5SzBLZTRXdTt8SChkOGVQ
fDNZKG1GdDtaWTR5S3BaajxvZU88aiFRO0BuTEBnUWtBQUQldmBBfT0wRC1ZeEgKelByZWNRZTFz
ZHtfe01RUEtJczJxRDg0PW49LV43I0JaSHI2S3kkWHpTaXxZbiUkc1MoPUNwdzYwSyFrZDxMKUtg
CnoyVUk0aHh2YFBCT0t6R1k3OzRUPjxnJl5kOChBTWJVISFzelo/cHh2b20kZDEyVmNxUyQoIUZu
JEc0JHg3NXJsTAp6amI1MG1aSE8oQmFNOTVoayF4TCtPSkwwOEU/LTxsI1hrTG9mcHxHeDRCXm1M
PUZvVF50IWVBe1Q4NnsqaE9pMWYKemF3QFo3NT8rVF9hbiZgVnNKbGo3Qj9heEEzWGxrSWVOMFk/
dmRaRX5eNn16fD11ckFoRkFfXkokMl9aK2JPZ28zCnpIM1lJSyY4byM3MjhpYyErTD1kRis1d0Be
PmdUWENvK0xoUTJEdnw+VkxKX2llSXVpdlNmKzJYKFlAcDd4Kj5JOQp6QWU7d0xLYm9sU00pMSRn
QGQta0Y3TlZGTUA2YnV1RGcpJm1xV2pUeyV3ckM7VVcqfWN2IyNLU2psT1BeelVpMGEKem54dEVl
ZHtKNGZuSmVHTmY9dyV+b2EzK2drXldDPjZyMSRUJTllYGd2Y195JEhTN3E7OD58ZnwxMHRyQm0+
RnV7CnpnTmNjOUshQjhBNFp9c2pofDIoNWF4cXx4SWY8d2g/aTlTaDtrcUsjNHg0THNEcz00K0BN
eFJ1RXVsWD8maiUlOQp6ZUd0Um4lQyFlSFl1Vn08XyF+QTlFIWN1JGo9bXdVIyFXOUMjcFpka0d7
aCM2bm5hS29ndiNEPUtXP3tzaDxnS1EKejcwQFl9VDs8OSt1Z2Z4ZD85LWpYU25YJWopRWZ6Tjl0
bD19YV9oNU1iY1UkVlg3Zjc1Oz5EWHMxMG82aTBiX0RrCnpQSkp+TCUyUj5ZYS1rNl54dGdTdUwm
SHJBYlBnMDwlZkxjaWNgbSpRbUZKUXFJe1pOYmMlRn01Mm5SbX1QRXhvNAp6K1ZHVTlWblo4VEhR
c1kjY05XPV5YaEB7di0oV0lUcE5SVjYwd0htel8lNTYlRCVxc2hhWjA8JVd9N0s9JiNnbWAKekpL
YngteTUoMWAtdjxfPSpGI1hOQG5eM1lvWmkwQ1ZBbkZEUmxDaTB0NCZhZHtQYypRTGJucTQtN2VK
LUE4c1N2CnoyfmhpUGNBcmlYSDsxK1gpYnE7c0tJV2Z1TD91ZkQxRSNFfUM/RSh6YjZZWF49NWRy
bz1GQVYxSD5efTZVUnkregp6SlpEZnJ0ZCpjaCpzVFBlNmEkbl44TThIaU5ZZEluM0paPFIkYFMy
THorSmVMR0tpVz47NURVZWh3ZHg+REN7LTkKejk1YGsmc0V+ZVg5cm9jckNTVWZ+TjIxI0FzcHtD
alIpJX4rOGhgQio5Pih7NCFhOUA9aXJpZ1RtU0pPZ2Rkb2F+CnopY2ptOERUSlhuNXskfGdZYENK
M0lycCR7IXl7cmxSbV4pfndvfF9QUmAkX1N5Rn5HWitNPDBsaDtuQn4pVnJYOQp6d1hScjY4c0tR
elViMFRVWiliOXBAMC01Mmg+PlJia0NKPEtEekpkRSFSRztvVEYtcW1EQHdDISQzKkZaSjw8Q0wK
ekplM1FEKWwkQFUwX1A9O3ZrKjNISWU1aEVQTlh3VVlZakJxaDVGamtgQnRtUClxfT9ea2hlZy1u
aUdUKGUhd2shCnp2OFpiVSppKzNIPEQwb3d6LXt4KWFARmomI19BQllxWkFifE9CJDJiQz5ZemM+
ZXBzPU9kUVY2ajdyPl4zLVF6Nwp6aHt6UVlyTEIqI089KkZlMSlJYX1SNGB8LXU0S3lQJGJwRyMr
R3AtN2tsRmtxYDJsN043dXskUjB1UT5xYzAweTwKendTZm1GTExJIWdXR2lRZS13Z05tYXRRNW9Y
Q1g+Vl9AXiZkeHt4fGlLP1MoUUc8fjxFJXE9Wih5K09ISnIlaT5ACnpRPlJ4UXkwYTEqQnU8Wn4j
KjtAJksmYm5PKD9TJEE5flpvXmg7cE5FOTM/dDthIyg+SEctNGw5KzZXITE1WUZVTgp6R21ibnBV
fkpWKjY5RUNwQD08ckRzPkRsc2QheVo1eExMdndNfXFvPXdoZmpMJk5UTCNTZm8qeiYqbjtGeztB
QUgKekx5WnRvZUg7UiNUMDlge2QrK293SlomeiE1OElEJDtCeER4cFdMUElacFYtYHR+WDleTXJh
ST17O35nJGU9eHwmCno9OExIWTlzI0t5Z00rKytaeHFxYWVjNjB6KkYwb2xueFVzJF9UJiVERDA3
IXBrUyNPSUxAK0F8NmgoREVFcE0wUwp6ISl5Izx1JSpxSFZZbVNKaW97S0xwQU5AcmdPPTI+Zl5T
KGswYlg8KEwhQ0ozeD5gdjtSTFIzNFh9NzF3SiV6RGUKem19OFg0a0N7Vl44TyZPZE01VzBRVC1I
R29UUShEQlVPYy0+cj00UUNfSV9GUXdYSihOdm4pMXFFUWFvZmZOdyZXCnpGel4kR3wxXzF8Z0V+
czFlTGFWMUNwVWZIaUNfdUQ3T09UZ0JVa0d5SHFCR3hCUX5QUlVsP0tpXjFRc01DRH0xPQp6ZVFu
VXUqXmFxY3JQKVhTY04wU2daJV9kdzdEPzN8YUlWaExFOFArNUVYYHA3TVJUVV9oNHhXd0UtTlkm
cDxzJkgKelIkNmFHSklVZnQwfFhDO2hEN3lsNntrO1Y3V0ghRig9UEp2OStBSnxqPEA7RDBBQEJs
e0EjVHFYKHFWSE1SRXFqCnoxeyM4S1V8d2lGaT9LTVRqKUU5fVVEbXFyK0JmanlmVFMqeSk+dWhD
b0dzfX1vN3EwJno8cERmSWRhcjgoS011NAp6X05meThQKkhUeSU/ZFJocnlYQmQoSkFwM2J8VDU4
VysmV0QhMX5yWDgtcUJGMWlhTCN0Yz91ZGl1SG9YPER4ZCUKemI5WXxIeGpYTVdlJnUwcDtTXiF6
WDtPZn5ieXJSOGFnNnclYDhJIXtoX3o+eGN3OGdQNmNjTzApMzMoN1RVPzhRCnpRZV5iJWt+fmNt
WmFmZWtrK2x7WSFCLVlLOVUqO1p5Mz1YZ3k2YTcmRVFJVDJeZkJ4c3o3JUF2NSNVYjRAPyo1VQp6
b3pyMD9UZmkzcXNVUHE2cnBaa1prTGJFdTkhSl80OEt9Sys1Szk9VnU8XmhIeHNYOUNMbWptNmB7
Q1lFcGxWdnsKeks0R3x6OHE7NSlnOWd9a01qZEpnUlBWJFZBYjRMOFdnSyg3RlFTdHwhSUB9JVc/
JXFMWSlUSjBEJUQzUWxSOWVxCnprY3NpTXFDbiVBYXtZVShqPnE4NHF6UjJkZzJ1NHVUYFI/JERj
MlFaRDE4T2dgJkhjcHIyVExYMEpmS2VTZnEqfAp6Wk9BKWkxTypfNlJablpeVDFwcFlpZ2gyaXhY
NFYzcUBQfHFVP21eb2lNcnBIMlpDWUNXWjxheiF6MzFzKkA9NDIKekV+SDEmMkhkLVVJOCM8PiM5
RjRQTFZhJFpGZSkwJEd3NmJUcENXVnQyTE9kPl8/JiYjPUhiTWszPXhAeEN8bEcmCnpUQ2Y7U00x
JCY2ZFQ2cHVrYCM5OGhqRGhDR1B1bms9fX1pZUFjPnpNOEhtMjc0fUFAPTY5LVZKVmc7WlNiWHMz
dwp6MUVDIVlaVUBkaFlLcFdWUEYzSyVPaS1sREkhbHFVeUF6ZUJzI0ZjZzZ5KFFXWTV7R1g2TFpK
YUBAX0dDQnIjSUMKekVZOTlrSnlkO0B5KiZwUHFec2hkPEM5OHBLJFVPTnl6K1hUUzNAalg+NHBN
WEEwPFp5Qm91TWFoLWUrfm5MeFpTCnoxSUFEblUxNmU4S2dBOHgtdk5vRUdwT1RWKn5NTGAjb1o0
ank4SX5FbT18fF93WXY0LXlPOzt5bVAoZ2Y+VGBISAp6YGxHJkBhPkJ4V2l8clc3SyojbGpvZX0o
dWIjOEBgTSNJS28lWT98UlRVMkt1a2lkWFV4UyZyPiFgdHYwLX5UangKejV6bGNMQEprLXp6Mm9k
Q15PMUVqNXV0RnhOTFBhRCZWIS1PWHc0fjxLfWR2di1aa1Q1Y0RLTk9oPnk1Y1JHUCh9CnpYOElz
bThjVTI4NWVxX2xWekspI1R3QCVmRHJQeSp3LXBzfTExalBzU2dZK2hqaUBVMGVzYiZWeygqJEZB
TCVObQp6ZlIjfDkkU2ZJTU91SEIpQU4oNTdTOHYmdytoPW84SSgrflExV1VBIW9lYG8yITY4KF5s
diQmUS10TypaQX14Pk0KejsmdTkoYj5NT30yIWRjQ256JF5LO3U5e3Fob1UpaE1GaUIpOT57WW5E
UzhxTyFyTEpIYD1iZVVeVjgoSnktOWR8CnpAZjBFQ0BQbVZtP15SSWYkKVg+OTVsaThxPEl4R2E8
K2JJT0VkYXE+O0BXeXEwaiFvJUxaVnJJTzI8X0JZK1RAQwp6dW51Z3tMUmVaQ2ZzNyM9b0RtPFEy
SCpxKGEzYitwWVRlRyU8TD5VUU9PQzhveDcjOSNtSW4/Z0JPN09vPVBrKmcKejN2QEhaITdiOCtr
WGoyfWRZZz1SJkgwZTg+YXw2JClCZDY4WiViKTI4Xit7I2tFU15zbWFjPFhtRSpxN2JHNzxmCnp7
SGEzSGUlY151S2NnPWBeVTxRe0RSPCRhaHc4a0VjRmwwdkNCPHBESzAlcn4zbVRaNEx1V3heeSpp
T1FwNkZiQAp6cD9DSjB4RXMzPEB0KWtvN3pNVyNAcVUjLXpgK216IzVKdUBvQCR1PVlVKEVRU0FD
VnFSNlBVeVlWc3pSWHVaPkkKem51LXh4Tz5Fe2pFM01jfXZuNHIrJjFgQnpvNzVudzlJfm5FYyUp
IW4pVX1+IystSCgtcWVffWg2WHpJbXViQj5RCno1UjJZeUBWNUBuVFY+MXRRI08ycTMkSFFZRjQ/
VlZXXyk5X2lWUXIyO3RKQHpZVDRlWFdqOU9GdUY9KTFmaXFraAp6eHllPDxJWiZZfS10b3kyMn5B
KXZXeiRmTzYjIXBEQlYjUm5EcTVMT1RJTlczYyRsZz44YD4xS0skUjlQWFloajEKemp4dksrQD1s
UnFyLTAjfnMxTlVJOHgyWnduPWRjcitEOUE2cEo1KWEqU1o8PzR5I0duYSRDS1BiJVJDcyFvPHRH
CnpfQnFJRG9kJE03PDJXLTMwXkhtKCFFU256R3BsNi1hYXRPVHNEUTB2V0FBYCNUZ3pgc1BZIzJ5
RFpTbFI7c3t1Pwp6WG1Oelg4e3Y5MyojSyFvP3d9QSF4QioxckxYPkRaNj5mPWBnMnQ2TUBOek8t
SGcqUWxOcmVLOUFtKXRkemQ+P2AKenFtfH42STJiZHhBQz0pXklsQlR1b0ElUXhjTEJxPz9MKHE4
RTU1KyleVENGSEMlO2ZuV0Z3P2VsNHQoS3BsantICnpoXlk8NztTXkw/ayg5TG9CSVo5SFI3ODlV
a1BVPyFtfDZ8cF87fF9AZiQ3dkxGMi1GeEBvP2NuODs8bk1vTVNyQQp6NkA2YWxmREwxQTIre0RN
dzsoMWtRNUxLOXg0NXVENDZwTCkhQ25VU3d6e1U2MH4jaUNOYDVVY3VkTWRRVmQ2KmsKejRAQ0xi
Mk9AVVBfeGhDOEE2YDE8Ql5iNGBIZmx0WiQ5WW8zc0pRYWtjYFNtUT5QUkJzeUJmS1g5bDYyck5D
IzljCno1S1VEXlpjckp5VVNLXiZgdjY8NmpAKkQ3TG5Ba21rPXlwRykkOHdxPVZnVnMlTUVkdEh4
aFVESWZgdTZHc09Zbwp6YFJYfVAtYXF1XlQ0UlRjKy17aioyVzQzTUFGcz5uNjA3dFJyYGVze0ph
ezNRJkJtIThTVTV+YWRvaSQzKHRfRTUKejVEfDtjczwqc1NtPF85Q0liSCNYSkJTWCNST05FQjtu
XngxJiQxdnxhWVRkUkI8K2AlMmY9fWdfekxLWV5LPzJ+Cno0IWBoTEAkK0N2V2x+QE5DeXZzP04m
a0dGfDRBe21QLXlxelImVVoxUlNSPzNZenZxb2hQfTg0Nm95PlQ3Z1FnNQp6VjFzJnlFOz47ZkA9
Z3dTJHdrXkxCZF5gK3hvQ2pAKX49eDVxOCNfY1ZPSHhAVmlUPkE1dCl4MkdgSSYzOShZPDsKentS
R35ocFluOEdGemtEbFQqRzl8ZzM0Y0JLQWBgNXB8Py0oUkZXeX07PHhCdnpxMT42QTZXbGwyU1Y1
VCYxK3xFCnpaXnZVTT1pak09Vk9QKGsrYFR6LT82aG5tXmJqVDV1ZkIwMkprczN6KURVME1fK0Bo
c0gzdl9lOGghMmc+Q0BqJgp6LUBKYlJecTJTTiQoNTI7Ql5UMUV3OSVNJmNGK2ozU05lUzFKa3VJ
PFArNCpWT3tgO2Z5OzBVPD5lSkUyYmxXVG8KekAlTF5qKEghcXJZUHEmNXUxZVN2a1k+KUxvandZ
VXd6cEhrM0NqY3lxfHdFRyFfO1BIPVgmflNvP2E9YGJOMkNSCnpnZ3N0IXVuSmNKaClLWnlhMylE
UmN7Q0pvWilIRiRiQm9YJWBoUWwyIWBRRUBkZFhoeG9BdW4zSEhuIVNiOExBYwp6VG88eTNQQDtm
dHV+NVdLKWBFS2dXKD5lcTNAKXpIe3BhdGBVVWReang4d1dNXks8dzEhI2pHfnZpSlkwSmJtfXsK
entMUDFWRz1uKUNvazAyKEp4UGVWclZsKz9HQGtRPXk4TXV+JE5gO0M1dVhfeFNKMiVrSUFHaUBx
bV5WVklJIVZ2CnpBP2VfIzRJOF9WSHArSUsjQCNZR18/K1heazY4ZzlseXp2YV5qJUFOS34yKyZ1
R09rXkRsUlIoQVJXRSZlTDIxXwp6eDhGeWNZVSRlTF5pMnUoT2NWfXAzIXk9Xj4kU1RNWlJuKmRC
O3A3cjZTZkZlMWpvWG53OWJ6Zz5Ab3ZfIV9PfH0KelUxJlApQ2hTJHQkbnl+VF43JWhjVDg5a0Yt
U2xTYXlte29sWCokRXs/JitjPTskWkJCbTFmM2tgJnBRZE1pMXFlCno/dFgwTmU1aDd4bGV1UkZQ
byY+VEA5OVp8blJOKzxpM0A/RXFlcERRbzsyPlV3MENYbnVwNUNTN0l+QEZYPGtKYQp6QlhBMTR5
V2M8aGtoKVdvcHxWQmBQY3ZofilXMXJoanZPdkYwOWpsRmN6N1EwbnhpZDFUflY1eSZheU04OCt4
TDUKenk8QV8jQE5seEZ2Pz96Kk4mXztZdHhZKzxhd0dZPlBuPjlqNChKJn0rbkpmSnswc29tVzRz
aUktbWVBUkdBNiVICnpqMD1oQnZRfHVfc2dzZGBZJkpHdilFek9RSzVTNUc8czV4N0NWRCZiSnVj
Pz1ibiZ+XyZWejBmNig7dWFZbjdqPgp6YGg2Kk4tVHo5akAoTzRGWTg4RlN6anBNeCZUTzUxI29W
aG8lOVp8MzFubytHX1dnciZURmVvRip9cDg+IUdXQjsKelhGaVpjKHdrdSlwMFVLPy0+bjBMPWJm
TVEhTDB9MlU0bzBGRTtPRDhrN3VgS2NgeXt6dUloVyQqSndPYU1qKWZRCnpgKmlYZ3tOfHN7ek8y
TXJZQmdCfGVrV24xKGNtQilDcH50MU1KUDttdlJ5MWNrSVJ0TnV+VGQ/dnt1SH1UeTQoRQp6c0RN
PW0xTm53SVlpdmZhTyteR3UwfHxWRFF9KTlaWk4jVDNwY0xERTNzdE1PRSU3KD9lJiZYfnhrX183
OXVXRzYKej1CNmpETWNndTQ/aWojeXg/cCQqJmFoaGIrdXIrWDhYKVBBSFB0M3lIcz90dERUdWQ7
Mk9JNn5QRlZyfCR7I0NCCnpHRnU/PD51a0R0Sjx1a3JjTE0+cGluYWxucGwoKHhkKDh5dEloMVV4
KXB3N214e18jc2Jpclk+RCFWOS1PIW9EYAp6aVBqPmI+RkRURExLfkFwPipON0FAcEV2O2hBT0x2
SFk8aVYpS1NRamNyKU5CVlUjaXhgfn1MZjVGU3spajNeT20Kekt7MTtQXystPSVaTzFPNlFFMipa
NWx1cmlXMjIoN2FldiVjM2Q/ZUcxIUpGNiNBQyNZO1A4TXRkUE95T1BnRDJgCnoyNWlJdXdNQHJ2
dEtzfEY/ZjRiemcrJTRWQWgqQHM9QUVVaT4yYVgyXi0+ZTs0a0J9WHkmMWJXez1wdipqWC1sKgp6
Kz1aSnc0ZEp9SWxkWGRZaWwhWkxHaTRRJl4+eVg4Zz9BRT1HN0M0dUNKKXhaZz5pIURSQEA+Unpr
Nj9RLUN6IXoKemFVe3hLKnBkKlZQNktkVHdTRU9QKkhfMHxOeXBwck5ga29jWSsldyNBWDAxTz9I
YjU3eDZXI1BEYDYoKVUtdXckCnpUKVEtUStrSnJuP3xgVkpaTzFtOFZxamxJNnt6WEljPk1Xdm9H
dW1zWFkjI2llPW4yd0pXWU5Kbz4hJUZsJU8tIQp6eEVVfSRNaSZ6S1pyPzZ5UUl6MyEqenNMbio4
Z3BGZEFTSUBIblkpZiYhOzt8Uyo+O2dxVykjMDJIMHZ9JWZsbXgKelF3dkFGPk81T2whdGFMWTBZ
SlR1RThwSnxlPkpybSkzQFArNXFGWHJ6YkJXfHteZSFsITQlO3o5dm1EMD5VUF4kCnp6QCs7JGpQ
dVh1PChTI1dsa3dSMUYxJlhDViRmfVM2ViZOM1R5TnE8LWg7I28rVFZFSjVOclI5KlpxYkc7JklM
TAp6MSohYGdrNV82P3FmSUkpN2ZgYDx4TTwxLUdMS2B3VDY5UFRWLTNSMDNpcyh7KnErbXROfGFj
fEl5WTU1NUlAdTcKeipSIyMyZUc0fHxidG1mTEZIY2t4ZjlLRUs1Z1dvJF85UTBIN3VtSCYkcnko
JW95fDhnRntqQzlLJVFANVZQVjRUCnpFRTBjUzRZU2psQip3IWV7MXxfZmVYZ2UyblNaYEJ6SDVI
WjY9ek5aJEV0OCk3a2JGOTIzcENZT2lCNnxASHx6dgp6PkBTTSRkUn5ve0w7R0pQTC1IfjFVd3JI
KU16SnRpJU4pSCFPdnloRG10KUZkPEJnOHJ6bz9gKDJGbyFtdCE1Mz0KenMrQzNNWDsyQjEoe3Ja
PE4xVjkoMEt2c0NoPV9FdUIhKCV3VVh9YHltRlVBVE9NWCVDc3JPfmtqNXpLaSRzRnBxCno3PDZ4
PDU4NnVgY3A9KDMwSGB+bipDNXlpVVo8YjFCX1EwPEZEZ0pxTV88QENmNGw3MVNKTVVaR0VsZXRJ
UWpsbwp6c2V3aVB6bkk3I0FxPntoTmNzdE5uMmJuKloyWnlgV1d5I1JTS0huP2EhWnlzLURRWGs5
Q1d5a0JOS28mR28zJisKemRAOVR4PF4pRl87WiQ1WGUhU0p5SjVUKkx1NW1CZFdeVTcoIzwzeHdo
cFRQMEArK2E8R2ZoVnFZKSp0JmVhJmpLCnpPc3ZHaVE3cGllMj5aLW9FeD5FU189ZyNMSU0hdUpz
Wm0/dkVqRD9sbDRZfHRxNXxrOGBiakg7ekdfVEZ3R3JtaAp6Wlg5eXBFODAmfHpoNDF3OT5ie2lW
Z3Z3VUt6Wj9ISFA1KHg2YTwwODtXKnReP2JPQENLNjtoY2RYKHVtSHJ2VnIKeiYwP30rUHdzQXNh
R000fDJsOGh3VEJib2UtMCE3MGU/SSRwK2syK2FUOGR6OzFnM29gUVJkbz4/PCtGVDJERW8pCnpC
cWpFPXNRXzQpRmBlX0dHUlolQztiJFB9XyY3bW5eWnowQDhhcm1FJEcwNFJHZmV3QEdhZ1FlUTwl
fEdTTkYzfAp6PHM2UnBVWUpYWXZUekRkcV9FayVEQ2R1PHJwSSFCNFczOXxERWlMSy1SVSp4NWkl
bjdsKm5USFh7c2dzM1l4fFcKei1ofEhrbXVZemJyP2gxWEdka1hyI0V3P3VDPTZrJHNYLUtVUm4t
V1MqPSNtMFElY2tVQyZ5IVpFeHsrTjd6fUo7CnpCU3tKaUNyWHBEdVlmc2ZBdTVkK0x0VWBGcENp
P2t1aDAmeHNxNllxTUppSEpoYDhyV01SX35tPzZQPjk/ZTtycQp6R0RAUV9qRCFNK297SVFeYEtk
SWhGanp7eVhoNDUjKkRgPWxZPHpLX0dzd3lJSmc9MEhDVEJoWmFZQ2NRU0xQSmgKejZXbExMQEhM
cDxURE00fElKYVI3Kj9FO0I8fVJJRUFeU0IoZEByQnZiajdSR3I5NEQ+SjtZKVNgdzApUkUwMlpV
CnpEZlFFfk0xTTlyeGMmJCFzfWQ8bTI5QXBPIUJPUXZjUVl4UXtJcVJyQFI0ZSFfNEYqJGJBczcz
Nmp9JXdKNzg4Nwp6MHRGZ0UqdmgmOTlWbjdqX0VoUyZaTDglejBJXzgxZyMjJGN1fjFCWHI7ZTJJ
Kl4/Q0laR1lpdEQlJlNJczAhNSQKeilidFNEJjt1fGphK1BkOzRfSWUyKDdGTUp3Tj9td2pqJFU0
SG11SX55Z3IkU0UmYFVDZGFiT1ptWWJISkpNcDMlCnpXbXZYZjRiYF9YdVFIaHpDKE1IUTEmejhK
O3gzNVEqOD9GJk5BYkhqPmg3ITFkUjlXT1Y2ZHwybHFHO31YMVgpcwp6ME97SV42JG9yfEx2JGJq
LV5xNmV1PSNhOXteVVJXbXw5MFF3ZG45YEV2aSY1WnxiJDkpXzAoX3ZheTE7YyQ4czkKekJkUy1M
RXdxX1ZLWTF9RlQ2d3RxdG9NZChUM09xfSNXTig5OHw0ZlZJKHxHbCRMV3Vmc31XMXVYSFFKO143
YFMhCnpCZ29pV3N2Tz1pMktLfjw5X2RiXkpxKG5WX2B0dW9FSDN4RT9WJEFjSSlNbGpYfW9COEA2
a00tVXAoeVk/Iz9nMQp6P0xJMm9OMVpHPWpOdFJoOXVkNGtgbTVDX0k2TitRY2FJKjRMbno9MXBB
QiF6MHY1P3ghVUVaNjw1Pno5NU0/M1gKelB5QihSVGI+azxOckppd0d7SXUjNV9pXlFJUThXc3kj
LSNsZ2whQ2cyNEpRYV9SNjs4biRORE1nJUE1JXREfFZzCnpocXVjaHMzK319ZEp0cnZ3TX5NVENu
ZjtrKFdHXlpTO2xHPGpgOWMtP3RRKyhtPD8zWkEwPjtuKjFHN2xKXjB4aQp6Iy1ybW9UeGJLRkRn
SnpLNiNVbUBjbFF1cl9Vd3B8PFV2UygmNWt0K2whKnp3Yip6aUIxKD9GQW9Qe1o7YiQ+eXoKej1H
fjlXSU93KyVANmR9OEtJcVdYI15taiFYZ2Q7RDs0ZiQ9VXpsNzQrV0VLRkFzJCh4VlcjXk1GcTI0
Q201UHY8CnpvSnRwVihjN3JRWDM2fUpSWm1gOy1pSkpZPXlEST8reEllUUlEK0R8WTMxblZyKlYq
Pl5eXylZezwzO1p5RkV1YAp6VWJMTUo/XmkxQFdKazJhcnFpPWIkX3BxM3NEaUdqPjwqNzlafjE2
MTRAJkE/X0l6ZUlgLWMpMnpEJGxEbiktZlYKelBuXyFSQEkxUkdpamNNSCRlaypRc2g/K3YqdjJ0
M0RKYDt8c0VwUTd4PTVsPW9xZXl4QCs4RWlxeldOMzQ/d1J6CnpOazk3KTRYTWZDZkFAJlVvNC1m
WXt5akk2LT9LKktCQk8rJER3ejt8TW15KVAjNXFDLW0/bXZnYm5SaXRfaCstfAp6YS1lVEdUaFI4
dStlPUxnZ0o3P25RI25VJVhCbnBsfDJYe2FgPUBfKmAmVHE4cm09dEltRUp2a0JufTAoZXd2dHcK
enEpRHFlUWRkVX5vQnBNTiEoJGRxenxUeylPTSo4XjZaNDVHOSo2Kko5TVdjeVUzfWx8YU9DMzs/
QHg4ejVodig3CnorT3NSVXAza281MygzTmxhZHo+fkUtJHY5ZU8kSilpPSlGWCRTLT87KUQ3ND1Q
ZihuWTRzfWlvN1oxQ14tVnJCIwp6aSVlMz1jZUhnSzI3QTMmM2ktUi1fVHZISHspMkR6cChIKGle
el8+WSZXYE9KPyElWWk7PWVnLTBQaHI0eHAqPlgKejI2aUo9T3p5I05iY0VifXcrezk/YmE3ZGpV
JXdOKkgmOz1vPkdFPSlrRHM3fXxNfngzYDR7Y0laWGwwIUhheXhuCnoqalR4X2ZaKWspNHRXSE8m
Y0gjSlExcDg/andAfEBHKCttcWN4aDQ1OGpvS0kmYDYmMmBYWEA2Z1UtKUBLfWl8cAp6OzN4Z3FP
b1V3QXRGfXtRU2dxezJFbyQxfmdkX1FCaWNOTjYrSk5DSHNVcXZxS0hLcEp1dU96PSY9SGgjMUtM
MloKejszWSFhSmE0JldwcSR2WHUrTm5LV2l+Q31ebTtVaFhwT2dlMEMtNGxiMDQ2NDRMT0prUHVe
eld0ZUZCUENWTm9mCnplQ2MzXlBnNnxpIT8tZ0J0RyZAdDtnbVlWM0dWc1pIPis9VTA7MHd8JEh3
ZDZue1NadmphUUxFSX15d0tqbSY4Wgp6YGpTMVgoIV80NU1PRyh0dndMMF9hbFMpTzhEaUAtYkQz
YlhJXzVJXlN1cilAQzZycE9ndkwxdylZOy0xSSQpckcKejs3MVoyKWExe1RaOHs+UDlHV3FRNSN8
aH45ekxRMkI3YTBAbkZlZHQ3d3RTVShkLVk4NW1yXmo+ZFY4TlNpZ3ZvCnpMYC01RDhqJEVucnh9
dnlGbF56S0RtVjlkVl9RUyMoNWN0aUpCbD54djQhMzNZNkkpRk5NSys2WWxgbj5YcXJLaQp6OG4y
e1IlPE98UllJX3lsan4zWnBINmBHcXlwcUpWaFlVNkJAUF5EO2RkZXIwX0VIRnUyTm9xaDVKa2cp
NFdGNysKelk4VF9LMzR7V2w8dzAxS2koSXIhUVNsJUxXS3E/enY8ZDs0WVFDfjZqSHBSMXZ+MHJn
amE3YU8mYipzKmt+YndRCnpaWlJ8RjJMWWNjNldWd0xPcl45b0RVP2RSK3RzdXcqITNRXj5BR05w
MjJWPmhZPi1YSXZnM304SS0oU3wpJjw7Pwp6TjthUWFNRSZaeFRqTnJlWj4xYm9SSnh7ZzFSNW08
UlBfUittJntrMWlRJExfaVUzeVMlaEBYa3ZxV0VTdnNzM14KejItMWpXbEhxbCY4PW89ZjxMKVJl
Zl4qMF9XfXFENig3Smk5KiMqfXVzZ3tyU3tCQDtNJTg7P2UzeD4wVEE+bT4rCnpVKUd7fFkwYTNS
NGlRT2cwZnF9QXF1Y0dtcHQ8YlZ5NzsyI0c4OWNpR1RkQnE0RiVyZ2k7bEExKit2M2kwamc4bQp6
XmM8QCtVT1lqQmJpOHp8LWZpKVVXKmUtQGdGZS07WilkLUp6WSNEdkk4VzVKYHIwPn0wQHQ+N3gw
NXFnV187MXgKejt2TDczJWVkZD5hSlUtZyVmdyNOUiZhN15XWlV6IWcwfXJidV88Ul9oWENrU3ZC
Mzl0bHI4JFIqP2ZYN1I1OTxjCnpBdVEpYDlHfXlhcD1Tc3hfYWNrdzEmKEFTcy1jfm9nQGkjPXcr
X2hVe3RrMnJLPFpJJG5lXkw3Q0NxJGMkTD5LeAp6SUgjaW5abk58KiFtPHlpITBOOztiPDQwJipU
YnAwPEJZVktPQF87KnpAN35EY2hhSWJtQnUxZVk3YyV8PDhoWWUKenFvMFFDQG1WITxvJXNGQURW
I1JzWFB7JTBsK1B3cWxgV19CXkAze0lPKTw4R2xeeWpSen1kTipMUzt2U2tpWilBCnpOaihDTWRa
RGhuTmgkXkkmPiskTVd9KChkT1Q3fkpBanMjPC11Umo0LU1BO3sxMWJ8T1NNSWxSR1BgTGdsKXB7
ZAp6O3h3Z05yY05kKiRJZ1NBUDYxPEFFYFAjTTRxQFJMWUxMbDUtcnxZJUFISmd9OzlxfCYlVl4t
eGtJeEpMNHZ7NnIKekx1TjxXNkdSeV8tQnJWZG1TTFB6MW90Ujk5OV8qQzFMTz1kIVVHNUQ2QDUj
Y3liaUNZOCU1UGghVUU2eTB7OzFqCnpUJTxtaEcqa19QMCklI24oczg+Wm1PamB7ZEFkXl9QazA/
VWxNYF5OSmVWLUFwZjM0fDRHbDM1Umw+aEFjTDUkJgp6N2ElVnlVOTJ4dGomOSVUNDMmIUxmdnR0
Z1pGXmhPeys/TistayZZPiU1clg0UjhHWmFMNGx7NkVAIygoeGMhc0cKej9QaGh+S1I0QUB6USph
SW1iZHZHUEdiKk1DeipuTGNNbCkyY3NTZU4hUVBvN2FAcy0oYlQtY2IkfjlhKG9tYDFrCnpjUztu
JFc4Pn5ab0BhSjV4OXJ5JEx6WU9hRWhkYEZlUCNWNklUKXJUbTRLQHA4KEEjSUI8aUJ1OHNMd3Rn
VXpoOAp6bU9VMzBmKHNtVChgdnchXnU+XmBee1A3ajVkc3puS1pXS0VqQTwqNUp8Q28oO0dAejkj
TkhNNHtpb1RTITtTUzMKensmTCFYS09hdFpjZkRScE0yKko/ITs7MW4tOCZFLUZ9eTJwXnRRWHIq
NStibkV+eGZ7bCRlRihAVFRNcTBkfClQCno3emxmVyp7d0B+cEBsUzsoS15gUlBoMG99ZiVKPnEh
R2VOQ3RCbXJwZm1saTF6LUEtOE8lbzY0aTh3UHNiTVFmewp6Nj8/NyohQ0xrSHNRZ15hSzI1ejEl
T31XND07NyhDREMyKH5pOSFGLS07YiVkcWtsZjQ+dT4qP2FSOSVBVX1tKksKemJGNUZoZj9WY05h
NmdjYGR8OD9nPGghakxBMnwpeVlCRGV8MjdmaStxaTh9QGZodUpyM3A8Vjc7UnB+c3Y2QTJ7Cnps
YjMlZ3RxWGVgQVVTb3lmOUsqZDF1NC10LVp6KktqXmU0Qmw0fmpEayUkczxtbFg8fnJ5fDg0OGJM
JSo3dmJkfgp6emtwYCgwLUp1cTA3Wn4odXZvJDdGQWNePUZEV3tBcFh0QS1zRU8jIyZMbH1tPkRv
dE9RQW1vMj5jWiNHPCg0SD8KemJVJkc+N2x6WW9ZOUZGVEZDXnU+QnMjNS1sIWVZVDkmPzAzUENx
eiRgdDNUQmJ7emZsellrRzQqTFE/azRwSDxXCnpOO344TjQlZ3VYezc+YTkmNXUqZEV6d0MmTV9W
XihMbXdLTi1zJGI1aE9vRFBjRDhwIUtTZT0qbzxGQlFsTGBHPAp6RUxOKy01WWpHTzxIa3NgaD5M
ZTRaIyVKYUhwSW5CM057OTtpXkZjdVUyKzwzbSNMUDx6PHxeVWhGRl94I1k3YzIKenh+bDc4REB8
bzEyS08yKipEbmZQY015Kjx3O2pTWFA1PWBgaHJ4Xyglb2d0VHshJDVyIWpDdkUjS21GJG5yU1gx
CnokYkoyMmFJZ2RIbiN1eCtVN059aiZEY2N9O0BGUWdMNn1pXmlfVilNe3g0YiQoZEFjOUExb19H
UClqVyE/eUYzIQp6RFNESG9NI1A8NFMmamNPZnhITm5lTURzKyF3RX5hIWx8O3MyeiYlYm8mQG5u
Kk9rQHRXWTc4Sl9ufVdCS0I3LU0KeklMJjJRO21ePns4PyFNWk9NfjJEZChJe1NDO2xffmkqYjNC
Sk9nQy0mTWMhMnllV047LW1DN0gma35IUlFAWVIoCnp4K1VxWVpWNnArT1JuUXF0dHNqNCpQMyN6
bnNTXzYqUDQ+dlItMUMmKyFTWnh6Yk5kKV93UEJnbElMPk4temMmKwp6a1ZFWD1JYl53SSM0Nldz
ZnN3bTJSJkBEKG1LSEI/c0xAbXFSYCtiVVVAPzRXJHlnRGxpVHxxV1R8V1cxN2ple2wKekYqZXc/
KGJ4aUcpazZLdFd+cVRNKFdDJUw7WjxVI0ttdyhBZ1ZOYXdsJlQ/MXMwXm1icG9ObHI3b0h9OXp3
U1YzCnpAZUZgSTZ8cTNMRnh5I04wSjdJY2g7T0JrNykmWWEpWUB9UiNkKFgpPT9vfUpWMmYhTkNk
eW5SSyRMO3lfI01sNQp6YjZ7SnFZZXJKYD5qdXI0I0Y8MnhQUWp0KV80fHI8QVo9fjc8cHQ2NmhQ
UFA7dDdOQ0RqTkV4ZzduVyppakZ1VGgKejVFK0NsUzFeVWkyNH1sKT5+PiphK2dScnEyekhLTlU/
T257dWNGQ0xuXmsjNGdSdUpwYCF9I0IxaClQKjlWPHZrCnprflo+Sz04NV5VIztRVlYpS0RuPj05
WDg5MkJjeUU5Zn5hdzNrflI7ezshOSlIdnphMWtQNkAoJGY+clVOengoYAp6NikxXkhsKSUqZ01C
eFA+O3xOd05RPkR1UE5RRiFoSyZHSVZLN3o2PlhkZklRVyRhSSZRNVlwQzR9Z2xhUUJLVXMKem5P
b01QazFkaTI8JnBFeVchTChFb21meGQjZysrO0pxN099MEJyK2M1c2szI3FRUGQlO20pZFZJd1Io
KEw3Q3dsCnpjQ0khblhgNUJlcmNoNk1zfiU9ZTc+czxFMXp5MHheTlpjMSExaVhme0o3NXNUeile
MTRoYEs3V3ZzbHU/aXhJKgp6ZEAmRzdZTD8jNUgtK2pNaHItP184bDtRUkAxfTRkI0R6JE9uTUFh
bXY3Nz9oeS19cktvb3EqZTZFITsqSXd3UCUKej8+KD5tODI1QW1PV1FkMENzYFgmRUlfQmoySm1I
cFRhSSsxQXVlZ3tFJDJXIU0jdm5JQWB0Wmw0PSQrNyVPeTBICnpgeiNCOVImdzdtXjliYSZ1WG5Q
emNrIX5JclYpdVgkK2Aocz14UT47ay1WciNHK2JYbjZefC1PbUt+Zk5DWCRHQQp6THlaWi16TFAq
KU4pSURxUTsyRypLTSE5T1A3KyVwSVUrdmpwKSoqI2xedmc3NzRaJGYkVzxCOWpIO18mJVFSQHAK
elI0PUleUSoydyZAbCplLXord1E3anRCYDBEPSVDRTJGKC1ESVZ6ajt3cksyYVg4QSZ7azVpNExR
Umsybl5jXmZ9Cno2MVVJbkg3eC07Rm0rK0wrZGhoJXdzWHAleEhEc2RtNWU+OzNhSyoyU2Fnajli
dEtSJUZlcit+PH1UWkcyeVpaVQp6ISNqV1VmIUp+MkAzI1pgZHkoI2E9e15XezQjS2wwbFlYfUom
Wl9ESkFfS3gtUVdYYz8oVEckVjVZRHImN1U9akIKenFRRFBuXyZGUz47VE5EYmg/WHJwPit2LXN3
MWd2d3NRRnc3N1kmdGI1bE9obl59e3xTTWU2eVJVaWQ2Y25FdnBCCnpGaShAI258KSRwdWdCP31S
KSlFamcrYmRwcGghUVkkJWxSSTUoPXMlelMmbislUSllRlAyRF42Pjw+eXdHK2dqKwp6Y255WDg8
JUs5K3cpX3ZuPkdGR0AqNmAlMkVQX3QzOypfSSpzRWNuTyghfnFQQjBycXxMTTRrbTBBSyMmeUND
ND0KekZTfDVvQDRuV0A5N1BTQ2R0RWVUJU4kTWUjaHhFclVSLXdYKjZxJU57aGlDLVIkPXRGPEwl
NEtFfn1SPkZMI2J5Cno3NHpsbztyRWhHN2FwUURXVWNeIWlOUmltaj50aT97JS1oVEgmTmtyWjJR
fEVzJX1pYWNRTmhuPCVfRT4wMnZ5ZAp6WTlBQGRxS0hqfntRKEYxT2c5OEpQc1R8RyZndHVoUndP
T3pwc1VVMVV1Q1NRdXVhenEzS1ctIXQ+bGQrOVhhZTQKejFDfXpaWCYkJVJZXjdSSTdDSzxVRVpP
YEJ1VSVNTm1kSGJBTXFiZU57YGlQKngrfSQkIz00fnhjO3NuXitnaFdOCnphdmk9Jm8xTXJ8X0FU
RjBMKDFmVTlmb1EyUElIKHJ6OVd0P09eKDlYWTRVQkBELSR8bWlMM09FX1BeV3pifXZJVAp6K3hf
cDM0dipUNExBcm5Sa0IxTUJ6SktWMmxrfF8tSlVSLUEkKWV4eSFlWHxKejc2NHpAdFBlLTdTckA8
Rl88bUEKemJeSWcxSHEmVl8xS3N9WnhCbkROJTMrckx4WChfT0kyZlB3a3xXQ2FKRFN9elEoMGNj
eGk3S3swVF9AbnlYP3stCnpadFMwWDNDdDtAJWV+OXJ5S1Izenp8OCRaaU44JXxVd3E+d09eNHJQ
Y0Q8bCtOTj1kNmU5YSp+VDZfc350R1EwVAp6RGQhJC1PJks8aEtSek5GRj5NfkZERHYzOXs2emNi
Oz0kIVg9YUp1dWp4UEBgan49YkNrR3t7NmdYN2lpLSNVfmQKekpfdGBKYCFUaWFRYEJ1IXtnMyYh
dnJVSjd5MnxGT2ReVFBvX0goZnMldlp4bmY1ajVUNj0/QypxK0YofUU1dXo2CnpkfGtyRFo7eG9a
ekMzdHomPngxPUdgU1BXTFVlSHllc2pGdyp8anlmOXhzUGk8MStFfG1HfGhJJl50Ym09WmAkWgp6
azFFcHdGTH1yOGhXRShCYjlMRGI7b3gtZiZeJGIqYCN4fE5DN1pjKC1kTjVuRkQmN0t0X3ROI0gh
RF5BWjlWSnAKemE7fnpeQTJxITV5Vm16IzlFTmxOZHRQQFBQdCQkK2N5Mzd8KlZHWTY8K3FXdj47
YTtZRV85M2VJXn5TfjlLOF4/CnpfPUBpZm89STwwbncqdjNWYD1mWjs7ODc1cH1gJTEwZG9uKjdp
aGRlSSZAaVA0eV9GJiZtWj09NU95USlFSlclPQp6dmtuMyEwVHNre18ya1ZOdn40czZVKE0yQEVG
ZzBVZkFycjN7OFhITklXbjAoPl40eDJoNFRgbUs5e0V5ZXVeQyUKemoyYXB7UF5PcnRhMEAkNm1u
TTdwRj18K1Z6PSFXaDZqc3Bvay1GclRFMU1jdE92IWIwN14xI3RNNWkmbCZ+Uyp1Cno0TlhxKyRl
aWl4QEZXdj1CUXNJQVdRdng+N05hb0paIXVnalYjZ0xiQFhkN21kMjd6XzkrWDBhIz8qODgrWHw0
Pgp6TnA9QlhpZiNmO0lYZFRrdUlsMHlyWWhRIVMrZk9uOTR5SCMrRz5+WmA2UDBEdER5QmEwN15p
JHpaQD9yUmtZa1gKei1zak5tdjY9KW1lNHJYd2xCSyE8R0FPd3VxNyFsQGxkZG0wZUs/SW9URSUl
SDVmQEdTWiZeQEImI3ZVY0wqd3JsCnpQVk1JYDZoYEk9P3lmV1YzRyF1U2o9RDdCRnVTMFcwe2Re
Yj90MX4tbkh0ezNrNj87Mil+VDhiaHRva2hyeWEyMQp6aW9Scl87RUZhKG1lMGJtWE4oeFkhQytS
YUZQWDE3byE0fHF0WDVlRjdjZERlViUmOGxKMF9DKjxXSzZUNmhjK3EKel5YVD5MeSNoQT95PCpL
N3E5NX42eVBgR0tncURYYiQ2WENeI0pLWnVHKUw4ciVsN1JmSWtrYkRzeVZtbDZFVCpICnpNZGNr
YW47VEB4OVBTZnoyYm47M0Z1MTdMP3BUKXtePFcqUV8xZGoybk1SdVc3fHwpJkolPD9lKlhpIT1M
eEtQTgp6OXpRfnhvV2EoTSk9OXg9OzlQYXlAaVNxWiE+c0JSbj07X0xkVV9PWWVyY2lNdnZwJXh5
aEZwRD5NUlFvRyQwVSkKejd0MzxPUXF2b2x7Zz9UJEghTz16NWlPMFdsSjFDVjZMSlRreUZ3aXE8
RX1jQGwhZ3ozUGBpUyQyb287NlJ+dFFOCnpzJSs/Vz8oWWAxaHpne3N2NTBpTShYemxPXno5Jk1O
ZnBxfCk3MSpVdWhSfCRfcVIqNjtZWGdndHxaWCVnVWtHbAp6PEVOVWZmJSlPVzNpRilQVVUxQUE/
KDI8b2NoezMwal90WnEpMzk4UWgpZi1xaTwqOTFaQC1YMWk0MEVrZ3N8NV4Kej5sflg+N0orRWZO
PilZVykqbj0/bjZ5cWFyOFRnZSt9Q2pQKHJgTDA9Um1RRm1sPWwmZ150WjZxTGRQPGtMWD4jCnp2
MD5UYzhzcTBrTTZLUlgjVDN6a1Q7PExDNHFnTmc2TkJ4d3lObEZNbmYoNWtjVW95dzFuNUtNVFpF
biMyaklpRgp6Sm5xTSgyIXNLbl9IITBVT2ROKGVSYTJFP1Z+RT9EZWJAYHJpPUtfWGpwUX1VaTtB
MUxwTlIwcl99fSF5cWFmLXQKemQoaV9IblR7bD5KZCZpKVVZOSl8VX4lMGsrazxHfWh8cGBUYj12
NU4tTUowMjx5WCVaMmo1fUsyMDIkZXA0SnE3CnokYjRAJFAzTGBwWnFjSyYrO3xsQ2xOKHEpVj5F
azdmMWQkbDdze1FnemR2OUkxe0xyYC16R293VT8mfHxuRCV9YAp6QiM1PUohQk5+UFR5WiE9Xjwh
JXlJN1l5T3lDVWdkakQ8SEpCfFhaKmZwVHlHQzRnck1lenU1JnJNbHFeN3tqT04KejtEZzZ+SFlu
VjEjZWdMPyZYZUxqIXxTcH5Pcz1CTnM8NVh4WDQydHdmekRYMTIwUzB2TDFnam1XbHZeZEZzdDhS
CnpEWkUqfjJuVFMzNDVpJSY8KWdJPWJYdzFQejM2UkRCalgwZDY9aE1IZD1fZ2w3VFRKRD4jPHMl
LWVYQl90Uz5vTwp6am1wYWJHS0MtZ2RBT3teSystMm0yckNWSGllczZrbUAoa0dlKntGZ3Q5JlVz
PHZ2akI9RjcoPTRJYHxwaSt2YVMKekhZenAkJVEyKHFJVUIjYDAzPklHLUZhRHM3SUY0M21eRCls
dzQlTys+MX4mSFRmMmBySjZBNX1LanZYMDRCb3phCnpgYjVjb1I7IWo8QTlNekV7JDRAUypWSWV5
KjNhanhaMkx6PzU+ckFQNz1DMXZNPlZefXpCUEM0VGNMfGVfb1dpbQp6Sih2ZTsyR01TKThRUjxH
cmB5KV9oViNYZTMlUEhzKHY2V35lUGpzbXpnazZrMHgtdD9AfXF3az9DMFlkJSY+cU0KenJZbSEl
Mk01YUM5T0F0NFMqZjk/cUY9SFFCekduTFImZShWJlI2KDVoR2BHSGQxSF4pWEokaHVpQCVXUjxr
fml4CnooKyhRZkNoUTw9UmM5PkMmSD9wYFJ5MEpQSDYxUnV3OzZGfXtyKl9wKXxYfXU2ciNNNVUm
KnlHWlZ7Z19ORVc+UQp6SzRsVn1LSzZUXiZsIX4tTmJxPUwwTjV+aklieG1kaFg1ZENaMFZxPE1r
aSZOXkUjWVgkUWdJYDxCMzlLUVhlaUQKek16eC1JVkhxcmQpQkNnITNhYF9nNDB9aXs5LWNTUlBy
JW4yX1dOfGMzbFBzbm0pV0NSYmtWQy05dTlEeDIoPiZ3CnolbztZZmtXKzt8Y1d9fH4yRT89OWs4
bSFiRDRSZ2VobD9rNW1+LWJuJXtDPH1SPnd2ZVlYLW83RkBkYGk5U2lwJAp6O1ZiQ3MlfW5SP0B8
OV54USF5JlhKJnBSYWc0WX1QezVOOFQtJmdxWDVmTkNAJjF9JkIpLU4mcCFXQGRuZmZ6Nm0KeihW
IUt9MSZ0KDs1RVpCcDBFTyYtd2UzRF5Cb3ZUUSVFeW4oZURiXzxYfVIyPzwmPXx8cCRJfF9FPkB4
RzJGR0l0CnpUc2lVazBUaHBeUCYkS2RDQCtWZmVBWmpfWCVGaU0jTG0zUVZmPFVtV3pHclk/KTJG
bjc7O1JqWXloJVkoc0VOfgp6KEBLV3hEUUJ0Vj09SkNYSSF8NH0oJCkye3d5M3h6S2N2Yn5rQyk8
eVZHJDVadlgrUXxuK3h7N1NJb0EkZDQlI1MKelkwfmdndFBHN01ON3RVMUI0aHAzT0ReaGpTQDJ2
bz1IJTlTeTYmI0s7bT1UbD0lPCY5Mk4lQ3hgclFZWUp9fjN5CnpJKUY0WUlHQlchZXNUflZnd3d2
bGxtOHY9QGFPR0xhQ3Q8eEl8dCFVUkZMbXE5JFgmbUtpQ09ZeE8jQUx4d3QmPAp6S0ltTE54STc0
YGx6I1l9d0xBe0Q5K3Y9KE5+WnUoUyhadVQ0aW4kdzImMklGNys2NlMkJiZkTihJOS1fPlVlfjMK
ejBNUnk2NEFNfFEtPG9KJmh2ei04NGIoUHEpWEE1ezVjb0pUWGg+X0BZcVNBQjwjNmFqeWlWbCtg
KlJLfEQraXs3CnpvRjA+WVBAe1ZFeVJNYkpgb3ZOd0FVQEp6IWx8YFo8eXdweSMxMTdsQWpOd307
ZzIqa1h6XyghWnxWaG53dTt9fAp6QSRFaWFQeCVvT15AaCpqOFM9V3x7QDNPPkxITUMhQTZgS0s1
PWdmQiQrSjREdVZjM3ArXnF8YU5gNGE7dTtMc30KemBOfjtEcG9NTmlGKXBUeWRBVDU+alZgV0lx
VUdeS2lEOXdiNFAxJjZ1XlA9T1J4eVJFZ3B5M3pIY01lUjc2e2gzCnpIcyhANW1KUSFtekVIZnVM
NEJNPE1XaTk8Xio4U2IwJWBmfjhoa0F9enlZanRucE9wJXFveUttdWBuX01najdoPgp6Jnk7fkEz
KnItP3kzRi1aNldJZjVxdHs0bnErJXNCUVdnQGxFc2M/UntPNmdFa29vOVg2SCUqR1NxVjdkYzNi
Xm0KeihEV2hObyhCcHlNaHZaOShDVDMrayt4ZTJhTjJsWTJ4c0VCZzRgKGJHTk5kPHdAWiVVPiEr
UHdKTW5jTyRxcUY+CnpxUSVxQnFkcTB+SDxIQ3VxemFIc1VHK0tSO3xOJER4NDcmSlY8YkIkaFhE
YGJtajNNSWFCYXxJNzFBfExFPFJBZgp6bmJGaTY7K2tkUG1CbTtCTUclJWdlanUqVmNXYV9LZC1L
QEBybH5uPlF1dk9aKCFPQlJtTk95KE9KbUBJWmc9UVQKeitITEBtWUBkaEskMWVPcCFBM1JWZEMz
NlZeViFYP0NeeVpAXkdhTjQ0ZDdLNDIwZUc3Yj9nRlA+eCgmbTc0RUEjCnpuSzluR3lXVCE/eXBF
ZnlZP2BrTk0hQ3Z+YFIwdkw1eU5lNyZxNHJtak5xb1dUb2V8TDd7T0NoZ0dTYiluaVomYwp6dTdP
MWJKKjtCS3NsJmktMCtqMj5VJHZLODZ7S3sqNUxKWFY0YU5iVFpTNTV1TllsUCpleUxMcSM4fGh2
U2w4WFQKeihsNjZ+SzM9ZFljaEJzcnVHblU/czJZO0ctaXxyJE9MZSMldEViZGhhd159emFoeWc+
Wnl7UkoqYXF0eVlxbntXCnpsI3M4ZXt1PiE0MUozTHQ4I2o/UVpAXl9BdUQ4ZENWQ0pkOyMmRldT
OFAyWDNSZ1F6NUlrLVI5V3J0PXFJNm8tTQp6dT02d2ZZbUckajVZM0RURmtYOHMqeD5hPzh7PT5x
PmdBYmdOUDJ4eFI4TFBUNVVVTzQ1X2NzITtIbzdndyU+bHoKenFXJDRCaGowTWZAdE1lQ0FaNCNz
MUxHKGU9Z00tQHhfT0hzWnM+YG1EU1ZMdmlmMHtHWCl+dml8NGtoeilLKCFuCnpaa0t7fipmI01g
M3EyOGM7aG9haV83T3UoP1M5TzA4bEphOGp9UEdmXjgpTmFKVFRpJkA8LTxMVGBycVp5X3I7fQp6
Jmd4TUs+azFFamZBTE4oc2xpRVR0aSpYUF49UXwkU3wjWjlhbChCVGsxSm5jQDReLXZYd30rS04h
VDBAWUo7djQKeiZOQXl6ZCtPRWU9VkpqYTcodmo3NkNqYkYmUmJ0RD1tVnBZby1Kbnl7JjR6b2hT
MDE3cT9WSF91QlBOPlJUNHM0CnpiSiNoQ1EoOU4kPF82Km5pWi1EaGlSb29HRVFPY2Axdk1Qd291
fDNBZDItR1YrRl45OGxuP1hhVFM9YUtBezY+Sgp6ITs8KSY9JDJ6YTEjRmA2ZHA5XjNoT2N8N2U2
NVRsIXM4Yn5GKiREcypmaTR4e2I1QFIwRlEpdWskNnRIJmpTVkwKem0/dzloKHdwcEl8TTgtbiZX
OyRUMz1LZVh6M2xDTUAyJGhQSit7WU17ZFJmaGNlWEZAZmBqbks5PSY/dU1GJWpaCnpeNnV6ank+
cVkqLSpDPzB2VXxEeUNoU35KNTVtXlY2ZSFkNV58WGt1U2dtK0FvSWFoOzZ9dz9sc2gze0RvYEFP
Ugp6KkU4WGo4dkBiMTFofU1uJSZyd3t5djQ9TGxQYX5OI18xJm8wbHstYmFtbjRvTE1aUFVJNDdg
Rm94YyVKPHpJSF8KejhkcFR5fElPY2pBUllMZ3o4OUc4KGY1WlQya2VUemB8akpZTStweSkqNU41
eng+IXVfQWlVfSljUk0+IS11eWs8CnpKXz5PRkdvT0sqRytUVV9rRTE3PGp9d00oPSNBQG5iI3R3
MGQyfWVCYDhYQ3pXMlReM3MxS09LUUxjTE1FYUFMPgp6cTRnV0VVWGVIOGNPRHxkVSZFVU10Vjxj
YjZAKVc2NjlKLTJYQDZIfnVKKiUlYF5xPXpUZDRnUiM4O0FXaUxRWloKemdVVSNrTlRIQGlxaz5h
WERFQkxlT3JuQkV2KnluWFVTI3hwakxxeDliKSpjJG4tVz5DSyFkQ0VMY3dVJXNUS3ZOCnphVHJ4
UVQjNjhVIT1wJUhpTDYjWFZRQTZ7OHlaJkxOV1NwVVhzenBXJD0/RzkyIV45Iz1GakpnPXZzNWZX
eDRGRwp6PnhDKnY2SWx6VilRN3t4OTNTNUk+aUQ4MzRERio3eE92QUJQbmdtV19OYm5hPFpEZUN2
RkI+KCpNXiNybTFWNE8KeiokNl9iMkNUSSlWKVErRjljPUtuZFc5dDBoZ0g9WXVea3RHNVFSbE5k
RVR2WUAwT2pkKCQhYWhwPj4ydmk+ZUdtCnpwfi1HY2YhZmdIQzYtciFfUmQhOzlraHtgYnpsYyFJ
XihRMT0oMUZZQXk1azV5MFZhJkl5b2RIU2BZRjJ5K2oqZQp6SXQ+Uj5PODhVYkJOaGdSS1F9JnU2
ZkhjPDY4TSRDYmY+K3d4QWtEX1ZDJW9PWGZ8eG89V094TSo3NFModD5hfHQKelFMP3FXeVJ9K3Za
RXEhOHQ3Zys2PmhDalU7LUVnQEJrZ2gxJGgoQlU4MiQ5VGE4NXQ4Jjk7e0dPV1g0ZXtvSHRmCnpS
RXA/ZF8+SzJYTUV9LWRLaT4/aXJxdD81eHttdn5FMmR5P3J9O0lUbmU9bGEmMkZRT20hVjxURnYm
eVpSfEApRAp6OT9uSzM2fDRtY3tRVEl3VyYoOSVvRC1YQHdpRWtHNVZBYHd5a2g4TWMpd0o5VFV3
fG8/eVBydFooKHFvPSVzeTYKenVwWCs5V1Vuc0VrdVdjK0s9cDg9eWNkUFFiPSNiaHZYSyNqQ2Ro
eTt5OEJAcWJ2KlRrXm8wcz0lJTJ0NkZBVWpJCnpCaHtNQHI/dVBsa350OUk7dERifC00MzB6V3Fp
NXdCeUJyaTc4WGhGKyZfZTlqM3lKN0drJU0xZD9yPmUjTSQlXgp6WXFIbFZxT3l9bU8zZUNLbmpP
TT85e3puMUNhQylmTW5EKEhUZkFfZSFvOSV2SzF8RW9EPjBtZEVPIWdUUEUycSkKei18fEFZM1J+
S2RAbCRofTJGKmpHbnVvRFdaOCV7bD9hJjJQSFZTajxzS1NeXlJxNGh3P1I7ZnwwKVkhKmUpWkk5
CnprYT5IRC1aN0AyX2ZQSzt8NjJHWEV4RTx9YzhIdEcqeihqV3hTWHIyN0ZONFhvU0xmfWI5SEBx
bT4lKlN0N3dYNQp6OWh7ZXspX3A8aWZYQWNtfEU9elMqOUdwRnZZeV52ejB1PnxQfng2YHFwZEZM
PnZBMzEqfDRFU0RgNEFUSjI9aTAKem1eeVg1I2deQzMrd2dJNmRmKGYrUTE/N00pO31JYSFBM05x
b0AqQmhyQFIxY0k/LT42RGg8dHgyc0xNU2ZRc0ZlCnp3bzhQQlBsZWkrYzcxaFVRdiQ+QHw3Jn1q
cHFYS1pEKFpieTVaJSZGM1g5VnE1dnxxQVdfTiFOUnYoNGcqXzwlfQp6cylUdmwqK2txZDVjYCsp
WjRudytGNGhvc3NSSkBsRFJSNTlPeGpCfSVjT309ZGZVeHEzaStoU3RKKkh7TGZvMFEKelhzPSkq
K0VXbnlZVTVrcXdAS3hDWl9Ac312XlBtMCFOfF9RS25BP0ZEJXxuQGtBXnpgPkxDXzg5VlNOeUt6
RnZRCno5aEt8ZV8pOHl8RGljM3Y/a29JMV93WEV8R01GcE17dyZ7SXg1bG9CUTgmSnJQOGUoVztR
YEdwPCskcDlwO1ApXwp6S2lTS3FaMSpNYnhPZEh2RElMRyh5a1p4I2RsMHklIXJ5flhNPShDUHhH
ZDdXVWlhPzFefSNTdSVjKkhMVH5DTUwKeiZiRz0kbz9ldyg3bmhnVVVifX5fcUkhSU43WiZZQXh7
NzVRcn1QMHBGN2NVa2RAKTVsdGZQTkdFbGNANl9BbU4kCnprb0tpIzQxbkZgckoldGhwMWRxJnhU
MTx2Wj41TC1XR2FgSHNvYXZlVG9AQ2ZITU9BTXZeRlk3RSotQ3Y7Uz81Tgp6VE9ZNHlrZW9uS0FU
KHUtaUMwP2NUTj8mTDZOPnBkezwhfmtLSV9sWk4jZHlza0o0eCNuM3N6TT4mfmVUNWNyQUwKemtj
aGt8bCs+VCUmU3Byd3JjfnJVb2xPZ2RAPTM+VF9RcXU3ZT5MazVeSj9DV0I7PFFjb2lZRkhXfi0r
bCpOMXdoCno1MVY7VGlDdzVQdCNYZVhYSzxSQ3lMc3Y8JG8wYWsqMkpeZHs3biklR2lpRDFpbnxl
aGIoSjJoQ1VgUGI/QkI+Xgp6I2FCb2J3I3xMRG9gUEtPMmZWJFRKa0AqVGM+TSFvOz1Gfl5QWUcz
blM1SEFNaHBrOCMlZGhoaGlmeW5INVAjVzMKelBAUjc9PExDJUhSSDVxaXZlODxRamhSMU9ZXjc2
TF9KLXUtN2QpNTd5KlJZaXR0a3N1UClZTiNLcFlMVEVyLVdWCnp3UXQpfitGS0o3N1NPKyN7O19Z
TTU/KnFhYSZ1X19iYXpgbjxkOVJicnpLSCRaMk14Q1VmNj11NUpLQ0E0RnpxUQp6LTAwVUU3Tms+
djkzflAyPHJLPjZ8Rl5lcXw4THR5X1dmT2RoMFMjeHZWcy02P2R+fWghKVA3SGFoJTNVUG5ASz8K
elJuJVVacSNtb01fMyVAPWZCVCo5MDNaUjlsQVl8SCtmUW5kQVJZcj9GY3sxWFc/WiYrJD0pfD9s
dnlwVkkqe3Y1CnpFYWA7cXNhemA5VlE3eEYoU0ZlXmdHK0BlV3FgZ1RkJl4lYU4+N3FndGtGQ2lm
Z3t9bz4jLT1LSCswWiNnTDlibgp6SSRnRTVudkd8dDlqZVU/X2J5Yk1ZYWtqKGB0JHlTJWZVXm9M
eCU+aDtZY1M+aDAmQ1ZpVmF7ZjxoeiVpKlFtSTAKek5rLWtYUXFtfSglY0hKXjFCUHs7KEJeX2w1
dnpgZGw2RGhWUkhjd15tfS1eaEBaSFA4Ukk5bnhmRTRKaUZAVGh9CnpXVkZxP1NIfTJlPjY+dXlh
elJgQ3lmRXtgKUlKKDQlM0FfZlI8ajl8UFRjPyErZyRUWlZDd3lCZEw+RSpMPmpqNwp6Q3MyPXA0
UVlOeTV8dEZ2aTBOaHR0WSh1WXZ8MEtGYyo3VyYxMnRMXitHaGtJLStCYjcmbVYmSFZMLUZDT2ZZ
cm8KejF8WmR+NW11e3xnSWFhaTJnYmglVjc/c19PIzltZ1U+QX1XNj1EM0lWMD1wZGZBXkplUipI
YkNIY2E+eXJSMnlACno/UVRua2l8YE0kTUZhOV85VVNzKjRKXkE2JChJO1hFenp9c3NqQ2dVSDxh
JX1Kcjtxb1V+d0k8O2FifjsrS09ePwp6NVJwI25SPj54bilNeU0mPXclV09oITJyWCo7KChpdGtV
MHMmWT0xMVM+OGN+YXIlfUxnOWhzcj5fU1pvTTQ3UnIKellGMV5sNlBYNGVPTDZWMlheP2M0UU5M
NVJOYGNFNmpwdGs4bUt4JSVZK0YhI2oqQGt6TjRXd3Z4LXxWd2BvOUtqCnpiWEA3RzY3VjtTRXpA
UmYxO3BlRG9ROV8mZUZaOzxYVis7aWkrYylGTjNFNSVrIU9zQm9GSH5oRjZTYmglNTNMQAp6K0dH
ST5YcVk0MGprVVAzbiRnKFR3YEVSfChibURMREIzKGRgfU9fI2BSUitkJEJ4TSNOS0RRTkFZcm5h
SVMkYEUKeiRWRTZSKntGeFFlKEp1eG4oOW5rTzhITExHcTBHfmI1YFZJcXp4JWVvbzJnJVE2SXRs
PklIRWhrR0l5aGJsdlJACno2NCEhX3hNTCRFaCQqV209YzNZZTwlaDtkbHBPVm08Q25gcHA3XnU4
dGg9XjM7X1JGeUlHVSY9Wm1VJng7JEYqNAp6dER+M19FIztRSnlpIVFwUyZrQnw5b2cyI2stZ1Zh
SmJBUExRY0diYFckbG8hKSh2QEtlZExCRGNaP0x1RTdYalMKejgpfTc9XmdeJl9RIyRwME1MJCsp
S1FqREpVR25zQ2leRDtING82e2lvLWpzbUN0RHpuWXNqc1V4a3ojP15paCVgCnolQVRYMTF5MDtv
ZSltaHhLLXlCfXZHY0doJXRRVzZ1OEM0Rmt5QkF3QlNoQyQ4PDJMLVpieCVtJnt3PHpPZmY3dQp6
OG1FP3QrQGUlUUV0ZGtVbHlpbT49YHt9UDRENGwlRk9xVE1tX2x8IyUmMH5KN3AlJXhhQ1RyOVRr
P3MoZzB3JGAKenRqP1luZ04kak1HY29qPVVAZllmbil8SlM5IVdjdEc7PEAlQSQpYlhgPkRyQ1Mm
Jmw7clBja15CNiFidm1vT29xCno0V3B0V2VLNDU1a3wpdl9jSTJme3szUDxIeTxCZCleZCopV3pT
TzhpSjUrPylOeztOPjRyeFk9MlU+cTR7PiszYAp6eTlgIX11I18zOS0jaGNeQjV+XkZeYiRMQGEq
TXEjMmkyd2BRa0d8c1NIbCpCcnxzVHxIc20jZ25ROCZOU3VNNjgKellYdC1PKmo5ZUMxekc5Y0o9
NyVCZEprdnc3alFZME96e1hAPTQ1R3lhMVlKcVg8WGt8ZG96dVA5UFpKSzRoJT18Cno3YyEkR2N6
YVl3JjlnY1lQP3FWP0BBI1MkUzZiNE1lWHJ5KnV4fTgyVEtPTnsxZGlUaFRpUFRVTShIVWBvZ3tF
JQp6amdDWnszOEY0fjhPU3hzKn15LVomTTFeVFVpTC12O0x7e3A1VnJ0I149JGd5OXd7a0ZwbWNF
XlRuZVRkd1QqPEUKeio1fU5gbF43c1lMQD1WfVl2PlZ0O3drdUtobiQ9emVMZWFLbnNUYTwlcyk/
Pk5oP0A0Y3NoXktzWUR4VXJgX0A2Cnp2QGRLPWs1ezFtcEtqWXJFMDhlaDMoWjg9KzNWeWZVO1h2
Vk1+fFNpaEo4b303e3xCOUYyVmlzQyhhVyZWNHUjOQp6dDU4KCglbFhGLXIkLTtGUGFPWnROUFU7
bmBZV0hmVCg0U2p4RjtMTnlEaTZoS21ANGdjLTZNZCRCQDRvJUBFVTQKekl+Tj1JNG5nQUR1RT0o
REFabXh1YnVtck8hKihLPldtcyluJCNSI25sNXs8aypsV0woaTw2IXdnOVlydUxBTS1TCnpUdkxZ
U3ZNRiZDaWc3M2d2R18rQDN9YXowQ1N4IVdvbkBmSjtnPk93VzRpZVZOJjEqWmVPbjB7K2A2K3Mq
bFJobQp6YiM8LUQ1cWRueipfcHRZVCF7b2l1NzV2JlRTVj5rSlMoaUU0Jld9V0ZlfFhJYj1afEBs
blJWPlFDZFQ/NEZxKEcKenc0KT5UYkw1LW11VzVLcFFPVmF8WTZfOEY2bXVDYz9fUXd7bVd7JXYo
MzQ0Nkwza2w8JWg0d21uUHRRSEM8amh6CnptPXZrWVRANnh3akE+bGRZeSs1QClXRmRVUiZnUlUj
SHJ+dTcmKUd5SVR9ODAjO2ltSns8PSRzaWJSQWg/ck5eZQp6a19eUSpuNCZ5Yko4fkpicVNrbEdD
TkRiYl9CSmYyPHZ1YkpRK2MhSU49TmcoYzJvTXxjXnJBUGcjUHkwZS1ldVgKemkhVDxMaEloQTht
aERGUj4/PT5HYT5hNjFxZ0lpWWBqRkItNEkrcDdXQSZ4QipPWnwtcT9LbD5leUdFeDBYbSpACnp4
IVhfNFRWeWM5ZjtofXY/Nyl5X0pMYTMtSmJjPDdwd1h7VWFUVVhmemNBdHFwaE5OTXtnZ1RuSTIy
QTZIOXA8KQp6PnI9JkRPNEwmQlU9JTN7XiZydnluN0dxaTRMTmFGLUo7ZkVPJl8rYGJZPmRCckpF
RnhSVUtFYHNBJWQoVUQjKGQKemUrKHBmMzFBKSskcDJ7V2I4dkpTaiRCcmo1dn5QVSsyXkV5T0ZK
aSFYJjJXRj5kS0hPX2RWLVc3bzlUdFVERD98CnojLWZYIVM5MWUyYzxnVyNyMWthVXk3MnE/QHJq
VmUzdVNqVipOZG8qeUZha081UGY/Y3NQVGRxMH5zXkpncmlpZQp6QCg/VWd4QDUzS2ckN2U/ajN8
TDdRX299fFJWPGg/PXx2ZUpGKmBrR19hSGEobCkyKSZQclIybFhnZX5NVHk2PWkKektfQ3hYNjZ5
PjxQOVE4SGpCWDYtdzU1cVNyOCk0bjc0dWhocFY7JHtMUlVZa0RKZWoqVCpAaXdaKklASkB3MmB6
CnpYSiY9YFk0N2dCOTxVOWM8dFU8PzhqVkxzSVo4UCpuKENYQl4/fV5OeHJabyZgal9KSkwtbilZ
NzxRdj4oKGxxegp6R3lvTXslPTZ2OCtINy0maVJKUnVnJnRAUjZ+andVaiFncHc2KWAoNjJDYTdr
OCs5emFAYllOKHohSCFXQmhmWDkKemtlKXJCaWckRjNXMHd1cWk5SmtGJHtYT2FwMmtZRVlBdk5E
VmtMNkAmQTMoQ0V5T3ckJG5CSiVkV0RIRSQpbCFRCnpPYk1fJkMlbkVeZ1VrcyV6SXhIQD5xVm51
R3g0SSl7WnAlX0BfMDx7aWhTdXVBYXQ+aSNfTVZEeGNwI2FIbHQ/Xwp6c0x+T2ZTX141SzV3YTJ6
VzdsVzg9S3prU2x7bCVDZkhfVVJCclVlTCtqJHlxJD09SW9ZTiZZSmg2fTlKXzYjKkMKenJCe1BD
MCgoMyhuMSklJm8jbFMlWVFiSkhOK3BORHVtUFIrWHVCTWw0NjVoaygyMWk8KklqRiZibTZPKkt7
MXolCnoxZTkzTj94eGleJFdkQnJYe0cweGYjPEw5clAoUDFEd2A4Z1Rgaj1AandRbGpmSDA8d147
bEktPWVuQTkkd2ZMOwp6MiYrP3R0ZD5JdUQ8VkBaOEQrMUlAaHx6e0tNSFRaMXt1OF5DWUQqSilD
YkMhUGxgRjFWP0h7Slc1eEoqaEQ+dW4KeitePHZNMzdJe2JaPVFjK19eZSFjJlRfeSNFKmJ3djRZ
e04la0Nfe1RjTzJ3c0xqbj0hbCgqQV57MjFEYmpRVTc+CnpXNzhVcVoke1dxQX02dVglXllzRDk+
dnE8TWYofE9uVCZyT2FQbXdlRCY7VW49QXpRNHBuaF96cVg/VGtWPyV5bgp6eSUpU0teUDQ7fFJw
fClLP2s4an4/e21GZUoqdDxzb1Y5TTNmR0M4QEBRK24wWiRnK2FjTGc2V0VgQzwqV3lvZTEKeiVO
PyMmb2Y+c1YlV2JuVz1KPE4jPVItbFQ4TX5Ybj9WYEVaYUR9dT1oWTVZUVEtZDRQWHV3fTQ+bUB1
VlElMGJJCnpSRF4yLTFANllXXjtVTjE0VFRkUilEKGBzcUZqU3E2dWNDfVlBbHpQNSY7Y3ZsdiRu
SV9pVCt2S0tEd2I9ZWx3Kwp6UStEaiprcjJnRUB8PX54KnxOTW1wRWBCWE5hanxAe2JIWlgjIUN3
e2FrQiRzMjhqUjZpRDhUPU9KM3g5aDEoVCYKenl9b2lxPFVwOzdURF5Oe3s3X0RQZlgpdVFpR0p0
JGEyJXBGWTIqUS01QGp2QkR6b2g+I05peUV5YF42NnM/SWlGCnokbU1KfkhmKVdmSjdPRHZeRDda
T0RtTXNPQiVQYGNpeTRpR2hIO316IylRaGBMTV5oMT47X1BqPj1LV2dTY3lrUAp6e3lAJDA4bXxB
Rj5OWEF5PEBKfHtTfDRCZ3RFYE53Skt3N14zQFArbkUpdzNIOWtZcnhlSkBtRmJrZUMtJUlobGEK
elhROEd7VXRvYmAycilLXkw4YlV1aXxJMmlxaWJAKlhfPUwqX3BwcWZXfTNOQD5TRGNoRmREK0dB
b1NiRU9xVl8rCnpvI2R3ZXdFNCRZeE9hRUJfeHR8ZCZqPllRV19lWFEyN0dENmJAdTUkPzM8Q2c4
XlNsP3YmK31HOS1eLTA/RVFyNAp6PHtJO0FedFlNNjBwfCY3KTZVVHBBPGxzLTNkeWZWTHx2Yi1R
dHp8anlUSDUhP3Ffc1F3Wnk3ZnpETEk0enx3VDcKemt3dCFXaSNgM3Feb0xENkdXT01VS0J1eH1B
QntfUSlOPT14MVdHNGJIaHJ8QTgpQTkyRjslTyt6Q01eT0ZjI008CnpqZTs5QnBscGZZRS1NU05N
P19FTlVUMEEqclQxbVp5VmgjdSY7RkN6OzdrcjQ3P3pJNDVoalJBbUE2NyhqWiN8TAp6ank1TmpF
MjluVnBgayRLMXFDTitaZGFaPytva0dMTCo0MVlhKUBQVEt8K1ZEUXRoVSFjT1k1UUJxIzhQOTlo
a1IKeiFKQjVpV2okOXIwTWFGPGwpcXQyJCpPKShfJmpMdHg1fnp2S3AxNExDJTdrP0M9YXZReXUl
fSErdCU5WEg5Sl5gCnplTWZPWTRocE9sWihaLUpSZzJ9P3AxYyF4KFV0eGV4Z0NxfmxQJjh7aEwq
LUoqVDFBezR4PGljKndiU3s8Z0hVXgp6WHNGZDB2WiZnUzY1cG83MkUzLWN6RDRNaSltdTxjWG9m
ZSkpeXYwR1o5JE1iSXFKNDlkZDA+dGE5TUxqQCZFc0IKemQqeHomKHxmNi1FXypjVVBScT9UMjY9
elpPMlFFRzdydFo/ZSROMkdrbXs+O1F4VXI4bWBqWV8ze3k1VSQyITVWCnpzOTtPQURwQE45VU5f
RTRwaTJqJD9kX1AoQ01ocFMkRUtwI0c2IStIQWhSPG5Ve0JKeSledWppJXZqMlVAO3Y1eQp6d35p
XzApdE1pdVYoflNDS3tZaHAmNE5CZlJ5empPZy1sUDI1VlBMeWwqJHBhb0NwSnU5flVMYTt9RilW
UHx+MTcKelY0T1BIWkc8Nyp6PjNSWS1Aa207KXpAXlopa3wrRWYkVE9mVFdLaj13YChpRSQ4I35I
bCs/dG9haihRUV58Pl5kCnpvaHZofGFEeyg0MEghKWpaOTdkNm16dWZRNHUocUZhNmI7K1ZKaVF6
Q3R3aH1EcUhUdUNINXVWeSpZSmtaZ3k8JAp6VUNORzgpIXBYMm05PWx4ZkAtKk5aYjVaOTFMWlE4
ZVUlTV4/RGdlfXsld0BtWks3NSpkazhoVmokflBiKzA2enMKek5mUihuKi1PQHUrKSEyMDl5TiFJ
VGRnNFVeSWhReVRxaW9xQllkZEBaNEpLWGFLaU04JkRHSj00Yjc8PWRMNTBFCnohJlh8ekQqKVZD
KFo5NzR3TEhYWTFaeFdCYCtqbTt7e30mc0xqRiEoSmphcj1qWGwzI21HLT1lUE5WKS16KXh5LQp6
U0xIWDRLfkNQNUtNUTVAZ3M0I3xvQWlSQHR4JHZSTWpuaTBNZ1FuPEMzJU9jUSFac050JUJyMUZi
PX0+I2c3QlQKeldOJWRDYGhLQ0dAcndUR2B1Rn49YHU4NUpmQlAleS0hPlhwU0Uqej1hLSg3fXEj
MEskUjIqfjNjWlg/JHA5RTMlCnpHNjtzU3VFQE1kIz02RDlpdkZjNz9tZWMoJHxJWH11aWImeTd9
V1FASiRnanM8b2Y8WTBEUyl5VH4zVSl6YypVVwp6dzspa1h4QTYyRVRYXzJEN1FYdyY3UVRDUTMl
TDlGWkVlOHZgPzBOVD1VUztlek0xVz5YeSlKTyVVNSplOHs2MV4KemQ+aFpjdjU5QW9ac0dZaXco
JEolZVIkTTNSbXl0dF88PyU8dCZ7UW1Ab250eGVxJFRFeU5fO1R4JXxkOW1kaSk5Cnprc1RTPVVt
aSg2cX40WTN1I348dXFWJXlJcjtuKyZOaktPZzkoPVZAWXt9K2Ild2gqTmFyTmJRXk5pYW9gSTxa
MAp6Tz5oVEpwKmZeeXg2IVM0ezZyZUMmYClQfmNlflJKO1MoUH1oekg8emdIRUh2e3hLMXE0Mi0r
TV4yRks2cW9jMHMKekRIeXd9ZFV2JV4mKyNDZiohKUhgKmdBcEVKVHFVT1FBUHllRm8/MkdiaV5J
djt6UU9LJUNiRW9Xe3E7PGhoclBlCnowejMtcCNMUSR+amI0bW9GTlVmWXZsYWImTldHSlooRFBr
aztLWWRTSytfakxHWj16emxDRiRGZkZCPDMlMFBLfQp6ck9CWio4Z0A1a1ZMPTF+RzZIPklhNVlI
PWN+P1JuMzJWPCttcikrY0ljWnJPTypwbHptPyhJMW1hQCNLQWlSQFMKeiVjZjV2YiFyWUcrZUp+
VlJudjJoWWpOcGpCfndHLWBIPlhyUFR9MnVIZmJRXkVPengqRDZeMD53VVNuVGNkZGBpCnpaWHxF
ZXVDKjY4K04+I3d2aTgtYjBNODJ9O0dCcylpU2kkZSUwSnVNO2NEaHtsJjljKlRmQ0hoTz1uVFV1
Nj1gaAp6MWZpQHVhR0w2ZnF4MTgrNlR6P2Ryd14zNG44S3ApIX0wbjFQYWxxc3xLdjB9Rz5qTTFE
MWxwS0BySlZoWVgqJV8KeiZaVn5hTkFPOGBkc1FDclRfPmRFPm98QjN5NjxiKzdqdnlVTz0jKWYj
SEl1OFNPdXRhVEs/Tm8mKWhCbCkrJko3CnoyMXFfRVBzVyhNajAzMFVoJU96ZFp0MWBKS1Y5Yik7
cSpVfmFPI01rSmRzY09MRl98akI2NyllM099UiY+YVE8Ywp6PVp3KDI+dWBlYyZaUXtqcEp+RG1U
Kl5vfEt0ZGNOPHQ0aSZ8QUFoIUh+UlNjSEN8dVNOWUQ3SWBBVk89VUd1WnAKekpEQENQKHQlN0c0
IVAwWjJ2S1VlOXlAXypuJDNgTW8pQ2A0R0steTE7WEVeMFkldTd9Xm9KaWthWkxZbCQ2dG9HCno0
IUA+dkpQMlg9OGJBMnFJbWIoM1NZNnQkWUtMZFBvfUVMU3VPQU91RUFlfF9ta29veGdZUSRQSUFQ
JUtLTVRUIQp6UTxYN0wrPjs5eiE5fDw8Jm5VNHk3Pn1wKUF4ZTQhcnsjdUV8MygxKTs4aihvVDZp
JlkhfCFDR3ctVlJhXjthPUcKenBZa3ZEYEsxMUBOU3ZzQGBzYnYpTDtLSFYwMnF4VyteNkZZaHds
IzBqI2FuUEh8cDYrYlVLTG4pVGxUQXhJSyRzCnpjWmFqXl92N282QyN8WnRxfF8oOzx3PE0jPGNh
dEY2SFlwPUVebipMdis2UmdFPy14ZC1SZzIhVUN5ZUBhUVhaNAp6cWBISjNkSDZ6cUQldT1wWU9u
RG51SUBiYkA3NkRlczFyOz5fbClxNEFFcDxjfDAycz5YPT1+TUdJdVhRQ2hEKWUKejVMSWBNOVp8
MENmfVN3cVJaYVV5UkokNFVNKllgVjwzJG1IJXVRcWdyeE98YGo8VyVFYjhTOTtKSEFlKU08RTxz
Cno+bGxKZ1FfN1JLJk9lezFYaFhfRlZHQXxQcUA+ZWokfiRvI2ZCLUtnNHVlcVYqU2J2Z0JhUz5E
NFNHQEVfSz5hTwp6XnxVPCUyRFc0RWFsOG9ua0N1YXE/dFhaJktFNHdLQVo9VnwrRj9iRit2ZjFO
TW9hRDUmSX09ZyNQJkFaaCshbWoKemtZbzczKVM5PyFjK35JZyFOdi1xPlU+ODlrWFBQey1MfTJ8
TDJeX1piPFN1YztvfT80PyhXOXc2WWI9KTMqM2IpCnphQ1hNYjlAM2hoT25jKWd7MXFNUz8rWUhq
SGd9eW17VkI/SWRVaiFqdnJCNiVzVXNfPXVRRUduSmF8UnxWJkNCewp6OXo5VVduY3NMMC1lLVEx
P2l+TXhmT21Re2pwX3VwV2Z7VzhPPSM3THIxP1dEV3ZeRG8jNilXKkNlI3hTNTlpS28KejhzVmJr
R0BfNjZ6PDUqXkp2V2BOa096RDcoRVIqIVplJGV1c2N2b3ljJEFrLSQ9UUQ3NT1pVk56eyp9SFU1
U004Cnp3SD1eJnYpYztIKWdkWSE4Sm90WjRDOU1nR0RWQ2klVklFVXhOM2E1eFFGczdXZDI7VypB
Wj4xNT44WU1ra2psawp6Pld2eXZibnVqeChHQ0tVJFNAaThELU9jfGhFYj4zaCg9UyFycmdtPT81
T3g4U3hJVytHa2heJVJPUmMtLVpYdncKemI9c1RGZCF0MFhvLVp6ankqV0l5VCY/XlFpJCpHT0hE
WjVZaDtSKitTUzV+UG1QTE9QYzRRMW1CSHpiQmspQCo9Cno9ZT1QdlVkJGI5OTJGdStJZE9ZRDlY
Y1hpZndYeFlBMDljMSNfQTl2Xl4+P3JhcnNhZnJfbyY4JiFMeVMzQGBOVQp6Wm1BfH1JUVorLUxy
bURIXk5MIWZCPnJ7a20yS19lOFgtcFcrTF51ejgwZHRZPmQtTVFAJF9OSD49KF9FKVFuaWgKenor
ZWskeig0bnJZbkJfY0NBJjJkdUR0NzdwdHlkRmVXNElWK0w+YGRUSTJ7Tz9aLV5jKThOeHF2Pnlg
XnUxdW9OCnpydXRVa3sxNmd1Q0FCRGgxY1Qha01IbmtLbztiYz4raDBhVkl6WHU+KnolPGRyKV5F
UiVDWEh2Jk1yUkJpVnRoSwp6Q0UpaDQlK3xFVncle0IzUFBKTDwxWXZqeGMmO3IkV2M0fDBnSm9V
KnVoaTcoZzw3RDlyU2A4UmNufFokWXlKZzAKeipDWEVJT01MJitZT2xGfShFMVk3JikkI3BgO21U
c3B4LStFez8rKlhRWD8rSlpDM1lNeGVVd1NpQnArIVQkbEVJCnp2UDhmWnt4a0ZIaD1ZbF5JUTlF
fGFqXlB3e3IlcyloSyFubiFhb3ktTTZYWW1sJlNnVWBZK3F7VEI5MjVlKXNxNwp6Rk1ENX13cXpg
cjg3Z2p1ZHZ9ejdgITc0Kz9MUFV3YHNIY1Jfflh6MmJIN351LWBaWlFgZ2lyWTwqSjloKjdySUkK
ejRiKFAlX3JCa0crN29qZihldW1SQChZN1N5Y3p3VzFuVCRxdkA1eUk8aFhfSWdCJFoyR1RpNXtG
fjxTSUZuVzlWCnp7VVE2TSY7T0pBezNYXnVBTFVQN3t0IT43cFV+WD5mJXRKbmtmSHk+JGYpOHNu
VGU3PTZsPG9gJURHQkBSTWo4agp6O0NebGdTVDtvc3tSYHtlPz8odmlFQEpxUTlNSGlhWDUjczRF
UGxDZz4ySzQpTDUhJkIqJXwkYlcyZlpfUFREJj0KeitvTS17TGtTU2pKPzM0VnY9KmV2QnBOWVBN
fU44Syo0ZiFzOUI7alR5KV8oZSYxVXAoWDIjMn44dSY8dUVJSnwwCnpXO052VTFTO2hnQFpnQVp1
Snt+cXpKNSZyNHVAYT5YOGRReXU7JDhOIXtaQ2U8SDRiTTVDdnY4M3tBVGBVbU53Xgp6NTJHNTw/
RD9xKmp2O052aEVXPHEkUDZvNGpsc15lQCV1d2RiT0o8S21vYkMpTUwjJT5Jbz9fRFUqRWchSiko
XnUKekgqcFhkPVBmRXk7ZGdabTxRcVZvcGJtWU1GYkd0Uj84SWxkJmpEK05sZDc4I3JSMUJLe05g
Mkx1IT4tRDw0UDtRCnotLVlqMVlTNGVYek5TJGM7dDAmY0c/YShvND9OQnZZPHdfS2Z5I3tYNWZl
PFRKQj9FVHNoYEtkTTNVfkFHLUN9TQp6UyZAVHVuWEsjc09OMjMkcjhoZXNQU2BrSiMpK0FDV1Nt
Mks9aENrUjt9Q0U0YEhHdnVNJFlWS052K3NGdHR3XkcKelhCbmt+QmtVcW4mMF5SZCVFKCFFXnJG
b0Q4Nig1QjhgcC10NWdrKXZhUXBObU89U1RFYD1vLXcoaE9Oam09ZTJkCnolVnApemc+WDgyOSgz
VWlDRWRYc0RzQ1QtdTNiYy1WeFpZV3R+bTxnMDlPT0xmJjk0TG82KmM7cXs4fiNmSiVubAp6KD4o
fXBiUHdvQiNiKFUpQWlRfSo0LVZZe0lgQXdRPFQ/UDRSJHRlRiFKfDVgJUViZUZrT34kczV1JndS
VW53YykKelVSXztFU3VXRUVNTWxTUWAoJnl4RzZxUD1GemtJRFA/YkRYVHR5eChQVylRUFcrcjZR
RnokXkBeY2piKXlxKmQ1CnppOzklWEpnVFR4TTtHM1BWPiVjKWJyMSRPJWp8IzNVQj00ZEI4MVp2
d3UrUj9sUV5yYDQzVFFyNlIyVl5HdV5xOwp6bUQle2o4NjEoO2dgMyRaZUtFYyU5ZTFnbWtzKEZq
S29jSiMrVWR2WEJLYSg5MGA4fTtFSGZKIThER0p+K1FeeGAKekd1eWolYz03e2NiYHpzZ2BJPSN8
TTxiaSVsNFU2ayM4KGZJTFdNQVcxWTdHWEFSZU58VldWRms7cCQkdTdzbTwwCno1TU0wamJCO3xj
ZDNQQmlKSGMtb1hRWm9AY29wRzljUntwdUNQUHhzTSFqfWhLQmpKcWwkYzh0aytVRWZJbVJMRgp6
YT96dm5RUFhLQ0EmYitKTXxrXyNsK0hiamwhPy1PakdKZH1TQmBwWHglP1BRLSpHeDBXdWpKUHBq
dXxYI2UldEcKeip4b1BNKDAmT1BrfnB5VSR3Ul4kT1lUeDRxcE1fYyVZfEJfNSNiaWt1aCsxS3Bg
OGc8NnowP1VFfT0pYW90RSVjCnpeP2FGM3d4VjtEMzBUcjkpdE4oI0llND95QWUwMklHeThjfEI3
YzxVUGx5eT1eaFBtbG9BTWtTckY9YDRRO0ojYQp6K14zYFY4MlZXUDhZdnZnbmtFTUVuWH5UVE9L
ej1VQ1JMUXFBakNhfmhUfFlpbXo+Qjs/dipKbjVUJXtXI0wyfmIKejFUaDRZI2c0X3JqPlZaWlEo
Rj8kaitGSCUmXzU9XzM0cmk4PzAyRX0jSj9IbGZIUm9vdz1vMUFnOWgzYTwpU1Y+CnpGYz1kYTQ1
KiY2Z3x9dWpHT2ZDZS1pNSgyMVpHaD5NWCU/PjBrZ0dNTihvTjZBOy0lIUlXMyYyaS1WbzQjaURv
PAp6N0JMX2gzUiFvbGxOeXc2RX5eZWA2UFYydCZoQj1nUiVOakN4Vl83Wi13IWlWPFkrPXY1Vjkm
ZHJVPnteSHlte20KekUlTH15VDMhc2l3NlczMXl4aERlRCRedHdNNk0lc0kmPUIqcDNZfXRBMGEm
WDcyKl9EQygtX1NNdiN7NDJCSzYtCnpkcWdaM1pDZGp6N2ArXjJoKXlIXiMhWClsekMxd2dTVTNt
WTspYlpxYE1XXnx8R0t9QUFeYXRSQT5+eWt4VzU9SQp6O1F2XigkSSlXT2oqeTNIN3V8fDQySiZH
elVkKW5zZF85cytpOzRVdElIJjRxRl8jYTNUfFJMZloyOEVzcntOWnMKenREcy0xZmQyQnIrTEhV
IzdCe35JVjc5MFd3XzZkX0lINUNPdk5wYkJRTmE5NTFPYW8/U1dEQ0tjeiFQQm05fmBkCnpRRVNQ
I2I2MUk3REJNfFdpLXxBNmV1UUFGQCFYbn1Oe1NxZlN3aiUhYHlDZVNBJFl7ZnptbiEwJXpKampT
PDs5awp6PkspRSpOMz53UWRYITJMXiRKaVQ8NkVYNXNUajZvaShuT3MobH0kMT1oSlhCaXcyOUI3
RF83SE8+eUlJdl8tMEQKek0rNC14TXJVVmRLRGE9dHl7Xmlmdn1GcSVsR1czOFBHJnc+RTwzSktL
XnZhNitDRUw1dmdvWj1UZEJKSVhncmthCnpALTU9YXdvcUdyJWM7dEc7cmZ3JUluV3Z6Q0d9fEtC
ZSoqKjFRMWtkOUNlelFsfjtIQiNDUD01VkNTTVFXJjJgNAp6JCVDMn04MWgrUGUhdnh7ZW8oblk0
MDVnPyo5OTFwLTk4Yj5aWmZpQHg/RX1uQkZufClPdHIpdlB0amEkNDxCJTYKeldoVFl4cW9fTmNv
PH5AdG1ONU42cygqWkJ2TmI+RD1CI3Z2NFBwPzV3YjZKeSp8PjNsVEF6LSVsSTV+cG5AdUM/CnpS
LTE1fU5LcCgqT29LJUc+MCY7Zkc1bSRhMEU4SGRuWWZmUyZWem1OTi1WQGdUJHc5aktfazQjV0BN
cVhFdzNvfgp6bHtxNz8pUTFVc3Z5b0ZVRE5leWNQcilMWGg+MHgyJShwfkUhIWM/bnk8TCUmLW9F
QlRHb2JfSTU9e0U+VVd3cF8KemU7UVApYkhDR1lWZD1FSnBLbntyR3A1K3pIQ2R1TU0jOzc3YExt
anl7Mj10aDtMXzl9ZnJ6bSlSZik4cnElTGgkCnp7U2JUYXQwM3x4UkZWY0g4RztIREA1Qj9NeFFl
JGxCWEFOYmcqeXkoSHxOY1Y7aTkzdDs+LTJyKXYpXyQpQkB9Swp6YihzfFElSTBXQXArY2ozaERO
STt7XnUqV1J+dz1DZllIV290YElUNXBRcEJJUHRRTX1KWE1FbDlNcGA2PT95fWMKemdwYzV+Y0hN
WDJlbCliPWxTZkNvLVhNTlElKS1wZSV9Ul81RWt0aVA8WXdpKnkmI0JULWo5KHwjRlIpazRNOGs8
CnptYUpZaHIyS3p6Mm5QPyQzeTtYNVdDZ04/YGA0MjVoQGxmTFVYQzxibEc5T2R1SnJGYFV2fnoy
R0B+U1VFK3ZTRgp6UUAkQjI2V0I0YU1ROU1IZChRfHQmMWQpQ1B7MTFUMU5OPTwjKi18PmVIPTFn
dChhIVpyP1dWMm9YR3ZZWXd6fFUKeldGcXBLNEFtWmJfMFlKJDhtJTZkSUk2NUNFVz9zTVM9eTxu
YT5GNFc1bzVRdFlnSW0oNEtEKCk5NHIhWSM0ajx3CnpEZCtjJl8jRT40TUNuKV5Aa1ZCa3BANFA3
bmFtRkNMTSZWSF9KWGJMLW5pKn1jO2RQdiZqbWApbiVxUFFvNFVPWQp6TkFXLSYoXkdBJXBgbEg9
OXohdmtzI2A1eSRsMUJmWWkkY0JlbDQoKCl7KVkxYTBtY0RYTzg8YlFBaSt6YW58MDIKej97cng0
WD9UNVI8WDZkPUFQclV7R0EjdEJeU1JgTUxZXzFsd2xUcTNTX3dDd2VPISNAPDMtZUVTOCp5U08q
cWk0CnpzSHdgYkBMVUN6R3pTQm5lTzdhdylzVFJFVz89OGs3RXdnSnQ8ZSFWLVJVVD49NjxCYWVZ
flM/QTkmRGdVQGM2OAp6SG1gOVdKeV5zfSl4flVhOEJFMWRGakc0c2MydyFUS3t1UHMteiNJeisp
OHNOYlkjXnIlUT5QUjlrT1RgJi10JWoKemY9MDdkJE1xY09NKG5nNTshIUV4enFBXlYob1lVZ2Nn
RiM4cDw9PChIWkdWUzxzX3plRjdrVH5UcT9ndXdlXlhLCnpVJk9IP0QhNyRLXmUmQn10QjFyPzdL
fSZRVFkzdHpTY0xFYjtPbHUlIW80ZCFrIXpSeil9aG58STRUbWVjSXZRUAp6aFRBT0VMIVc7TTtO
WkhPNU4lRTNtKkc1dzE4fkM3cW08b3BzRSpTTWFVMU9XdVZYcH4mWmgmdVNTJDNwdHRTRmYKenh9
MGVUanhxNF96WmV4aVFtPk1FdlZ9WXhlTWFmdz4lUiFTPyZ9QHgoQUc1ZUZnSjtiTXNkUjZpTTs/
aSkmVnBqCno+Zzc+ZFlESkx7ZWUrZ1g/UUIrM1VpSDNSXitCTyhzPiFZelpUKnJ9PnpXT0hOKkEp
LW42YThDeCNpeGVROGBeVgp6aDtJN1Q7YUJ9KUh1RiZ4dWRIY2hLaUE0WnVAJFMwdGpWKyRWOCVy
bF47M2JnYnZtcD9iVFVXPT9rZioxVyVRTF4KemJfVVdJVEgxKUQjZ1J8cWJ2OXNISjdaUVlePXRO
dVN9djdoJDQ9SlgkfHJkO0UrVjlIP0lJNFdMVntzYkx9cXQ0CnpkIzs2cCFUNEgqNSUjJnQjVkRp
cGErUjs/VGVkM15yJD5ZYGxIb2FRYUR6NktRWn12RjxgQ2JnXyFfSHxkKz40MAp6K24qfkJYWCFS
JjAlT2QoViFCY3ojPkNaeGoqd3ZKUFJ5OyRAVU5qeVFDO09fITtiKy0qUVhQJj0kYndeOHIlREkK
em0rUSVHZT5ve0FMYjVCP24kMiloZlo4Y1EmNlk/fnNNZ2xqKjAmWT1lRF50JCZUYWFIMChXI1Uj
KnhFUnoyQHQyCnpNNHdpeCtsNyFTKXtnUz5NPSpTKzxJJjAlM0cqdCE3Wj8jcWZ1aXpSKGckd1Bq
IX4kbiVhIyZYVWNDIWJvMjxfcgp6SVZLPip3Pi1VdXBfX0RTbDRrOG5rS0xTKzhUczM0UnJ6SlBf
MDZePHMjaGtLP3ZNNmwkeGRPQTdKUmJucn57Z0UKel5zYmMjZ3BGJmxwKWk0OEh7WjFYUXJken12
PGhud2lgP31aZ28rS0NlR0pabGBtNTE3WElkNSVgZV9tcy09c0Z3CnomLUxxWW8zfW5rODhJU1hI
emN9JjVSTz8jeSFHVitVZ1VaK1B7RD1gTE5DLX1sK25+aUAjanB0PzYzS2g/Xj84cAp6TURpcGEo
cGp0bEZfQFBIWDBQbn5Adn0qR09pQD9MPDd5U0xpbiZocHNUc0g2YDVjdSUpPDhKVC1XT01TbERm
TkYKek1wMjA7dlQ0Pk9eR0RLeiNpcGF9JEowQFohO2FWIyZ1JTN1UHttfERSVjw7KyhXN1dIUjI+
RFA5NSRqN3FQKEhgCnpSV3tkISYqbyR3NzVHOSRqKkk2MjMmaT5LX0M2JHBpZFk7M0JAJTFuc250
cX5qd0s2KzdwMWlvaHJUJk0rcnx0bgp6Q2N3PTFCVzFDPFQleGFXYXh0ZExsQyo5KWx5RnxGYEAx
SEtXbEpqWWI+R0AlYVdDLU5PPWBObHY8bERPI2I7Yk4KemtBdEw2NTV6Rj9Hd3pNeSlybHBQUERe
c15SKkdsUWhQZCU2dShUdFM1K2x8WFpJfF55RCNiMyNRWkYtekV2P0lnCnpFTFNUVV45JWhfKj8+
aWFQIT1XPkBJVXVtRzd3bjZjRDcye1lGWiM8UEQmXnk9SFhNb0M3MmA/dnxKLVUrMXZCSQp6YmBV
cHs3Rj4qKCpkbEtjeHw3SDhhelJAZCs/KiZ8a1pzeClHays+SFAlWko2Zz43WkpqIzZjQHNrY3Zz
SytZY3gKelg/UlQhRHA4IyFvdDd5LXpVfjt9cSpBNEd3OGo4QyN9Mzw7KzNVbiFoNjwod3Z3Izhw
OUpGdyNBX08mMHlsJHVZCnpMdSs+emY3OWpSYEdrJntOeGo+KE8hPHs8T35vOW5aZmNpSSt1V2RG
ZSV4akNKVFA7dW1HS35OVyF6O0slYWllSgp6WlZFNHhlOXdULVU0eUsyaSZWdStwazZCWmthTnRr
cDUpfEFmWTFxTys+OHorVCFFUy1xVW05fFI7cF9ybUpBSioKem90fk9jaXlQZVZgWkI5N3xMXyF6
O2tPO3tzcmRDbEB1aCklcmRVamd6eyg3PDQ1NWdZZGJIdFNPVWg1OW52TE1sCnp7IyUqVGZraX00
NnxgPzFqZlllSEAoalU7SDY+Rj1se1h5fGJLKHRjWHZadGdtUDJmemE/WjZPYHdHfFVVUHlfdgp6
c1U2Q2U/KHZWcmpeMV94N0NoPmU/dWsyWCNAK2xmYCpQbEBIZW1sdVF4KHFXUG5QSTRXTzhSWlVR
Rm9zOzxvZzIKeis/JDBMZ01eOzBpTlZpaHA7d3xmTk5tKDhlZG8oe09hQT95QEEhUmpCXllLcHJI
SW5oRkVsN3JRX3BUZzB4X1NgCnpWWT5gUSpuN1hSXiVTTXtQbGNPb2lJTEp5PCl0MCVTVU1SYihP
azAlKCQhIX0tX0BQI0wzb2kyXm8/c0MjMn1GYAp6WVJLWkNsTzFJO2J2R1pgRV9aajIqPkYwZGBx
XzFJV1YtWjw7V2ktaiFsSFpiLUNidSNpdDNHUFdKOzxZOCsoZFcKemopbSQ8KjxEQVQ2bz18YGMt
d0tFVVVEO21ZdilEaSMpXiVkMTtnZkZpODJxSHt7Pz8oIXsqO3dlaSVJNjNUSW5OCnpKdUBVU00t
MnslZmNzSntJQmZwaEAqeWk2NjRgRnhMd3pQfHk4OzFAU095bzExQHU+dUpORj4oWX1pd3lrNnx1
Ywp6SUdWOytuWiFTMkhPe3JrKGl2Nz82TURWbHgrdjRGZig2fDtYYzQjMT8/MU5LezZ4SXF4MVpH
OEpBVjZiJUptWXEKejZuRFg4NHohb2UlTjktZSVqVjIqOH1gek1HNT05LWdwOU49WmkkMHRZWiFp
RTQ2MHV2PHV9WD5ATUtueCs7PTVyCno1endhSyRZJGIyZmJZMDlzYWNtIXU8dilDd2Z6cEFjR09r
YEJjLV59c21JTXVPWXtSOG19YSpueTNsSis8YTN7SQp6Q2I2M18jdFVQKHkxfWlCK2ZnRlJmWjx8
QWBVfnF6LShxM1ZCU25IdFJoUn1gTWFgb3pqKVFrRGdqUCkkYG9we2UKeiR8bF8jPHJUfnk+ZlRJ
KW4wbkpgNENAYFpsJFpzVEoyITRsVGtLM1B4RlVkTmg7bEo7RlkmTm87T1hJcDR2UEZSCnpXMXdm
cTM+OGg9b3IrN2I1STI7aHFaRDcjVXtIPDByUnZRK29tKzs4RHtjXmh2djUrNnZNIz13aikmPktU
IXlidgp6NksyXmhfUipoYUxAOE9tKUtmd3Vmeyh8XkUhP1EtQkgqPyZRJnMjWVBuIWl0MWFjZEpi
eHI5dkNRbihBV292NzsKenR3bDZiRExZVHBHO2JBWkZoSShJaClMdCp0d3RwbnItYyhgIzR0PUJl
ZFE8KVNJNldOcF9oJig5aCRAIWxmLW5FCnp2UXtHYiRheTk0UlVjSl49aFIzfnJXJGdqWHtIZzRj
NlpPZkoqYSF4OTxMUTVVdi0/R3E+JXtKJCZrbTByfiY3Kwp6I0EoaTdCIXRMYDModlZVQlR9KF4x
bDJRPiZRd0VeSGFPJCt2PGAzWWhkJF4kYCpsOT1VQz1PZyM2Sz51a2kjSSMKejNTRE1QZT9tdVd1
KiRTcGM2Wis/KSlMezJTP21FTnN+Z0pEJEdxNFA9aWFWQV4oY140S1RxWEhGTCFyZ3ZrfUpuCno+
ZisxYnU5bUd8UnxsKSspIUt6WnpUS1BCUTNvQ05VeDJTQTktbnBWNlVhc3tWWWQwUSM+PUtnQEV3
UGR0K3IqMAp6NncjLS1XSVN4Um9naXdlN29xfmhxSVFDKit2Tl82M3wtLTlDSnJoY1l1cX5OKU4+
fGJSdSRheXVVN0FPdj9weFkKenVRYmB7JT9kX0R1cVpWUFFYNkZqZzxmTz1WVUYwKWRyZUxpaUFh
R0F5Q3U3T3hrfTwoZSZYd3V0Q04wbTN1RThYCnpMOFQ3fSFDQlRtLS1eZWlUeEk3Xy11fCFiK2Q5
JXgkVkxWQ3VCUF5fMjN4WmVfJn43XjsofWJ8alBOXzJGazB7PQp6YWs+aW5VPUZDY0U3YCg9NSh0
NiYhSnd3UzBpXnJjZ3RxajMrTSZEQmtifG5DNloyX3NzQVlLOSZubDw+d0dgeUIKejxucGsyLU9g
UnpDekxPX2JneHdtNj5qfVN1KVJIQFpKcVczZG9nP2RKQ3Qqc2g5bEFZQ0dHYUhKRSowY3YqPmNM
CnohaUliR2tTemZfbGhAVitWb19zSlM2PHtxZThHayNrPHYmLT9OfD9tVjx9RXxXZCYleHpwUnlT
SyR5JGotUitGTgp6Zjt5RGN6dDUqd1c0ZW95PHR+cXIrP152OG1kN15YQVNtcDg1cG1oR3JrNntf
OVdieVpUYzdsY25pK2tGNnlMemMKek5APnYlNHZJP1FWZD1oM0ZnTXhlc0JheWJpTng/dSU0fG1O
WUI/ck0jeFdBNmxGJmVBd2hVVDN2eXdiK209RH1oCnorfEtzQzF7MlkyJm9mNGw9SVVLJEtsY0xT
I2BHO0tXdFhBLXU0SHp0KWNHTnV0YX0lV0lpZGB5Smg8a21BRXxxcAp6SXtaWj0yWktyQWd+U1BQ
JU07fjxBKiZHUCgtVT5nJHg1WnMlaz9GI0A/QmJHMH5+bTFvJHBIUGQ7b2IxbjVuUzIKem0yUVVD
RHJyPTVBUjEkXjM0M3xxTzdZZ2oqMHBHN1ZYJFQ3WFFRN192dGpAaihve2ZxRikwfEFPSk5HWkg3
VFFkCnpiMnFjcUhgVyF5bTdQR3VULXAyYEM1QnNfeW09OG1iYyl1a2t8bGs1emsxcHNfVmVpPGtR
MkRMaTk3UWVaVmgqUQp6R35hMTZrbE45b1c+RVQ0XmFXTjwtQzxac2NNSnBLaXg7IzNQbEpJblZN
N3ooTGx7ZlVMfiM2citQS31PQnx3Q2wKeiojM0BeNylePCk1a29UJUQpJUBATWhKY31vdUEoaEZV
QUE1VCYza1JpcXJRPWE5dGYkb2pzPkl0MWZWK1I1ckpGCnpifVItJVZBWW1hbjxFdm5GPnJDSXhq
ezlzRTJsRlRjYm4tUGc0a0wlOzFLRzI/MzNsdkB8eGAzJnloS0R2Iz08TQp6bX5oc1AjPC1EWG0j
dEokKiRxKGt1cEBPQGkwSDZmQ0otIUtCRX1iZChHTTJXYUJ4S1ZsMDhWIUFaeCF7RjVBMWkKenBX
VkF1MzNpOUFBTnN2XkZvKDtaTCReKXlEeEsjTW5UdyZSU2FqRz80Y0ZKWk9YXiNyQHohKVBOVlpm
d2xyN3JRCnp3d15mRXIwUDc4NXlSO0die2t4WUtKZzlwK2FUPnY4d31CMWtaOVpNbXgqOzNwd3ot
elBYTFItSmBqLSE9TG5OIwp6ZGw5T3ooK0BGKEMtRCUmbil0OUw1MWFpfkZsMkZYazhpMytjd2Ay
ViEqfXAyPG9wNCY0JTU4QHlicFZFSlY9NlYKelM3KEs1Q0MoK34lNWZ+ZTtlcjZ5O3pxbCk3RlZV
bXVkZyVqS1JFdTtJPFRie3toS2E2NUNeVHNNR1YjJjw7eDUoCnolPHI7SUp+NzUhQnxYWVg2VzBt
cCoyb3REOHd1cTAqVUlrTGR4V3hKKDIqT3BTZ0k/VHY9Szl0MnhBR3kwNWtnZQp6NXJWMEheQ3c2
KU1rI3l7S1Q+czRucHBMZ3JyQCFmNkZGOXV1bn0hbkB7UlhtWmhvWENTYll7OEYlWmBiMWkrbVUK
ejslcTx0cXEhcF5DO2kjZFB5Mmc2fEprQldObTwjOTc3bEBpbTlrN0QxOTNvfjxyaiU8XmVnZV9p
XjNeLTAyPEtgCnphRUU+Zm0qfXJGNXUqcF9oZm8tZkVfNVNhMkw0NER2JHMtNUM9bmQmXzN5K1h2
REVpZXNEMld6e0w5ODcyO0VFQwp6cHptQEQob0VLZG19UTQkN0lvcE9jeHh0UERecz5HI2NoQ3px
NEFWUT9yVGF0Q0I4aSUoczxndVk2WT0+cytVe2gKenJeM0hib088ZH4ze21abjxJTldLdCFkIX5L
d25JV2M7aWw9eERoWThwZzB3OyNhblNBJmNxdz4tazxTMHBTMSFoCnoxVShMXnNDUHlPTzkrbVol
UjZaY2YrTlgkJj9aaGk2bGFpRmItWWVxMXA3Vn0hTS07fHV4RkMoZU5TQnMmaCt1Kwp6ZVphODwr
KjZORkpwRXdiPz57XkJgfD8yWklfTUI+SUJXRmxYR0RkPitvMDJZLTRaOHNSc3s1WT49aD8xP0Bm
Um8KenAtY3coYDZjfWNzQXImRVo+MDI/c3phKG1nYHhYQ1orSVFubWB8WGd4VE4hUGp8ZD82VXFN
SXtGRDd1RCpyb0EkCnpPRDlpTWRKa010X3Q1NC0tcHJZPWR+U0RwZX0lcj5ASjhhQDFIN0EtZS1k
MD94TnA9WTgkVkp2SldoRFBQciR9WAp6NmI0YDdzaUMwSktoWG8jZT5VWSZJaWMyVEozSEBBe2Bf
ISFfV3R3bk9RPW9XTllJVnpCJiRiez05PlQ9NX4+UkMKent3QW1fe0NLPXw2V216aGxJdCM8bEhU
bUAtZE4zaHpVbVdvVkxQfTF0SD1EOShPRyVuPEpNaSEyRCU3emNKLV9KCnp3P194ISM4cDdoUW57
a315KFN6YmdsRjZ7QDFiRGRTMjx+K05DVzxYJkRIcn5HYz5NUXdmKUd4ZVdIUEJZdl9aSgp6PUkj
eThga1FydHojI2FneldRPGU7SHxXY2RzeFhlNTU2anlUX2AqNmo7fTQmQzJVM3ckNiMlVll0cVZQ
cnslX00Kemh9bmdzUkI/fWM4dkclZClwaGNvaElPU21oYTA7S21IJkpuVVFAZnBLQlEzQnQ/cW5O
QTZ+S2N1akNHaTFPZ19+Cno9a3diXmw0QmMqe3x1JF48ans/Qy09YlFDZCk5KWw7YCkzZTB9MFRz
dXoqMEVKWXdxOCtiOEU3c2NWZ1QqRXJoOQp6a1ZQVCZIbj5OfSo0elYxPER6aW5rXiNyPiMtQ0M3
UEd2TThaPTZKTT9zb3ZnUCNmNzglSF5eR2IkTmtkcm5kYzwKelhiRVVhTFE3NFhrM0NFTFlCbHlr
WjlfOTR0YFh1K29nKiNNJmxrQ3VkbDtAQVFXO0dZYCpfWjFuOW1na2BhYV5OCnpyenxLKGJpOUR0
eV8rQEQmbUxYZT9CanVLSUA/WSlZVDxJOWRUKzI1KDlwYWskRUYrXk4xMzQjVns8PFplVyZqVQp6
RFRkUkpvQUQjPWFtc1Examk5ZGNCfkJHaU0oITZlOChCIVlMYGF4ajw+VlclOHBCXkp7cXw8Ml9Y
cVJOKDtwZXkKelpDPGxsc2F0e0Z1YHlfSSU+PXlfWjF+Mj93Ky1KX2p9N3FLTGY7Q0E8WCFYQXt8
YE1oSjRqZCVtQGpyMERCJSQ+Cnp7fn0+RnVKXiReI29EJlBNN0lefCFIMk1xWTJBK0pJXipmMjg7
JT8obmpfa20rTG19Tyh6cDkpJHp+ViE3PmQ0aQp6QEFmRSt4KTB0JHc2JDU0cUc9T0lwYVRpUlEm
ezxIan1LNiUhPXdnbShxdTZ3IXJGQGt5TnFGPENpM29JaGo/Z0gKenswK35XUWVGZWtFSDY0YVV6
P2szVHIjTiVVbkZVPlp0Xl96NksmT1VHQGxORiF3d31aTSpZJEZkTCtlOSFMN1NpCnpeOU4lZjND
PF8waCghd21yJEdsaT1KNHJ8KktxTzt1KXIqMCl1QHV6PHVaNnVjZ0tkMChGUE4kYSMqZmI1PXZ9
fgp6WW9KNj84emZDUWFKfUNDcUo/OEN1MmpuZkQ+Kk88amspTz1NKXJsdm1xfmdmYzQkSER8M3Rr
dSslKipuSnUxUmMKelVWanNiKlNaZnk4SylNJj1KUCgoMjc8bFRPTlc7eUM0byZ8ZW8lU1Ngflk+
JTZOTjhaKHBBazkmKHtYd3RfMjBvCnpZRmV6LU4jPDxDTEhpeEE0Jm8hSzJXcnAoWFE4JDlFfUFP
Sjl7Yj0oaUdBJj1TcXMlejZgUChAMlgjeCk5dCUjNAp6WCgtZGxaMG5ZPVAlREdZKUBZV2BxY1N6
TyFPWG5xWWAkNVdDezxVPXlDbC1MakpiXjRGank+bHIwTihiMk1AJUMKelAqfVVjVm5iK2FTKFZ3
fHcpMHYhUT1pOD5FJkV6Ym0yWVR6Z0F8PldLMmZicj1YMkFuen5VJTBCMT9LbnlHZktyCnplIztj
a2VySj5WQnZ2I0o9JmA5aSl8STdONCFHRmtuTzV6d2srSmt5UTVnaWR4TFJnJCV4PVN0NW5lOSk5
QUN2OAp6XnlTaisyRUVYcDNER3Z4b0JxSjZXV3xRNFUhZkBFfEhQPjFKanRAYipUVjNLZHlYeExG
dXpRaCFgfVl6LUJSJEMKelZmJHdIUyZZcXVBY3Q8RTJVUV9BWm8jdUstZVllbWtSSUU5dUpxXkI0
IyslZT10YV5HM155THxKUkhrUW1KKTNICnpucUAhRHhqdlVhQnAlbVhWN3QyJng4MkMqLVB+IzAr
SDspWW82QiFZKThMXit6Rl9rYCV4RVZjbVZCIW5Mem05Qwp6NCFwVys3RXEleyNsKUlvMD53UEIo
WT4oK2xBZSV0YUk4RmFUcHlPaUdSUFJBMUxDRCNNLU4lKHJyYy1hTEdNZksKeiEkYWp+Jjc8dkhH
NXUwQFh4cSs4RXw7ZUpQezxyaiRBbWdwajsqa3FSLSpmJmFgR1NTOCFaRykrfkoyZF5VVipaCnpv
KWhfS2BBP2lePWx0ZD5lI2B6Z19uK3l0JipuT1lfa1FPT3J5NXFCOWRLPU1xMDQkbjR4ZWw9KGMx
MDVoaWxRKAp6cXtEKmdqeF5ZMEp7cWRxZio7U0VxZX0oZXFhMlBSTF99TT1nTyR8ayZIdjhPMjcz
cDJyPjFoQ29TZD0yWmBkQlIKejF9cFIkZGs2S2YoQm4kTXpwNlNlbWtKSGBwRyFpUDtUPiFpV1Fr
YCVUbFZ8KGYyclU1ZDF0Z2AtRU1RWSFFYkd6CnorcThJak43d1o2eCQyfDt6RERmRFZoflBpN3Z1
NHF4KXgzdjI8dFErQig9ZX48MnRfYGV0MzhLP3hlbzthb1M3Ygp6dEAoSGh6SnM8QHNqVlIpPDxe
e2RsJiRlN05AQDwjIXc4entCeWw1Uj8menJFRmByPkVFNUZDP0N2aDBiT1FofksKelpUalBEcEBT
b057PGNnPkE9fXhCVylyYWZ4cFp+VGEmXmdDbW0yY1lMKDd3QUdsPDJ1STk4UUI/alp1eV5TP3Uy
CnpQckpkRV5YY1FPejVqT249QlZAS09QJEBid00we1VZTkpQTktZUGFlanF5XmBrRGBfKGIxSX5H
XzBmM2wpXlp7fQp6Pz5fRiQ9Jlg1NVVxe0stYzVnVHRQdl94aT95bmRFVC0hO3JUbnhyaC0oUjUp
UmVXI08/RzVqKmRiOGR8Wi1BWCMKengod0JNO0R6ZGJHTTtoaF9JaHxoUSVKbW16azJxUmh2N01L
YElWPG58RlJ7Y1QlOGRJKiZCNX1lUnZ6XztVcjl8ClN7Uj1CK1F1JStMQnxhN2pJMDY2XmVUKyow
CgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFy
anMvbm9kZV9tb2R1bGVzL2FuZ3VsYXIvYW5ndWxhci5taW4uanMubWFwIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
YW5ndWxhcmpzL25vZGVfbW9kdWxlcy9hbmd1bGFyL2FuZ3VsYXIubWluLmpzLm1hcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43MWNlOTBkY2M1MWNiNjgwMDAzZjE1ZTJlNmIzZDFjNzE4YzFjNmNmCi0tLSAvZGV2L251
bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL25vZGVfbW9kdWxlcy9hbmd1bGFyL2FuZ3Vs
YXIubWluLmpzLm1hcApAQCAtMCwwICsxLDggQEAKK3sKKyJ2ZXJzaW9uIjozLAorImZpbGUiOiJh
bmd1bGFyLm1pbi5qcyIsCisibGluZUNvdW50IjoyODksCisibWFwcGluZ3MiOiJBOzs7OzthQUtD
LFNBQVEsQ0FBQ0EsQ0FBRCxDQUFTQyxDQUFULENBQW1CQyxDQUFuQixDQUE4QixDQWdDdkNDLFFB
QUFBLEVBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLE1BQUFBLFNBQUFBLEVBQUFBLENBQUFB
LElBQUFBLEVBQUFBLFNBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLEVBQUFBLENB
QUFBLEdBQUFBLEVBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLEdBQUFBLENBQUFBLEVBQUFB
LEVBQUFBLENBQUFBLENBQUFBLHNDQUFBQSxFQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxH
QUFBQSxDQUFBQSxFQUFBQSxFQUFBQSxDQUFBQSxLQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFB
QSxDQUFBQSxDQUFBQSxTQUFBQSxPQUFBQSxDQUFBQSxDQUFBQSxFQUFBQSxDQUFBQSxDQUFBQSxD
QUFBQSxDQUFBQSxDQUFBQSxFQUFBQSxDQUFBQSxFQUFBQSxDQUFBQSxDQUFBQSxHQUFBQSxDQUFB
QSxHQUFBQSxFQUFBQSxHQUFBQSxFQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxFQUFBQSxHQUFBQSxL
QUFBQSxFQUFBQSxrQkFBQUEsQ0FBQUEsQ0FBQUEsRUFBQUEsQ0FBQUEsU0FBQUEsQ0FBQUEsQ0FB
QUEsQ0FBQUEsRUFBQUEsQ0FBQUEsVUFBQUEsRUFBQUEsTUFBQUEsRUFBQUEsQ0FBQUEsQ0FBQUEs
U0FBQUEsRUFBQUEsUUFBQUEsQ0FBQUEsYUFBQUEsQ0FBQUEsRUFBQUEsQ0FBQUEsQ0FBQUEsV0FB
QUEsRUFBQUEsTUFBQUEsRUFBQUEsQ0FBQUEsV0FBQUEsQ0FBQUEsUUFBQUEsRUFBQUEsTUFBQUEs
RUFBQUEsQ0FBQUEsSUFBQUEsVUFBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsRUFB
QUEsRUFBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsTUFBQUEsTUFBQUEsQ0FBQUEs
Q0FBQUEsQ0FBQUEsQ0FBQUEsQ0F1T0FDLFFBQVNBLEdBQVcsQ0FBQ0MsQ0FBRCxDQUFNLENBQ3hC
LEdBQVcsSUFBWCxFQUFJQSxDQUFKLEVBQW1CQyxFQUFBLENBQVNELENBQVQsQ0FBbkIsQ0FDRSxN
QUFPLENBQUEsQ0FLVCxLQUFJRSxFQUFTLFFBQVRBLEVBQXFCQyxPQUFBLENBQU9ILENBQVAsQ0FB
ckJFLEVBQW9DRixDQUFBRSxPQUV4QztNQUFJRixFQUFBSSxTQUFKLEdBQXFCQyxFQUFyQixFQUEw
Q0gsQ0FBMUMsQ0FDUyxDQUFBLENBRFQsQ0FJT0ksQ0FBQSxDQUFTTixDQUFULENBSlAsRUFJd0JP
LENBQUEsQ0FBUVAsQ0FBUixDQUp4QixFQUltRCxDQUpuRCxHQUl3Q0UsQ0FKeEMsRUFLeUIsUUFM
ekIsR0FLTyxNQUFPQSxFQUxkLEVBSzhDLENBTDlDLENBS3FDQSxDQUxyQyxFQUtvREEsQ0FMcEQs
Q0FLNkQsQ0FMN0QsR0FLbUVGLEVBZDNDLENBb0QxQlEsUUFBU0EsRUFBTyxDQUFDUixDQUFELENB
QU1TLENBQU4sQ0FBZ0JDLENBQWhCLENBQXlCLENBQUEsSUFDbkNDLENBRG1DLENBQzlCVCxDQUNU
LElBQUlGLENBQUosQ0FDRSxHQUFJWSxDQUFBLENBQVdaLENBQVgsQ0FBSixDQUNFLElBQUtXLENB
QUwsR0FBWVgsRUFBWixDQUdhLFdBQVgsRUFBSVcsQ0FBSixFQUFpQyxRQUFqQyxFQUEwQkEsQ0FB
MUIsRUFBb0QsTUFBcEQsRUFBNkNBLENBQTdDLEVBQWdFWCxDQUFBYSxlQUFoRSxFQUFzRixDQUFB
YixDQUFBYSxlQUFBLENBQW1CRixDQUFuQixDQUF0RixFQUNFRixDQUFBSyxLQUFBLENBQWNKLENB
QWQsQ0FBdUJWLENBQUEsQ0FBSVcsQ0FBSixDQUF2QixDQUFpQ0EsQ0FBakMsQ0FBc0NYLENBQXRD
LENBTE4sS0FRTyxJQUFJTyxDQUFBLENBQVFQLENBQVIsQ0FBSixFQUFvQkQsRUFBQSxDQUFZQyxD
QUFaLENBQXBCLENBQXNDLENBQzNDLElBQUllLEVBQTZCLFFBQTdCQSxHQUFjLE1BQU9mLEVBQ3BC
VyxFQUFBLENBQU0sQ0FBWCxLQUFjVCxDQUFkLENBQXVCRixDQUFBRSxPQUF2QixDQUFtQ1MsQ0FB
bkMsQ0FBeUNULENBQXpDLENBQWlEUyxDQUFBLEVBQWpELENBQ0UsQ0FBSUksQ0FBSixFQUFtQkos
Q0FBbkIsR0FBMEJYLEVBQTFCLEdBQ0VTLENBQUFLLEtBQUEsQ0FBY0osQ0FBZCxDQUF1QlYsQ0FB
QSxDQUFJVyxDQUFKLENBQXZCLENBQWlDQSxDQUFqQyxDQUFzQ1gsQ0FBdEMsQ0FKdUMsQ0FBdEMs
SUFPQSxJQUFJQSxDQUFBUSxRQUFKLEVBQW1CUixDQUFBUSxRQUFuQixHQUFtQ0EsQ0FBbkMsQ0FD
SFIsQ0FBQVEsUUFBQSxDQUFZQyxDQUFaLENBQXNCQyxDQUF0QixDQUErQlYsQ0FBL0IsQ0FERyxL
QUVBLElBQUlnQixFQUFBLENBQWNoQixDQUFkLENBQUosQ0FFTCxJQUFLVyxDQUFMLEdBQVlYLEVB
QVosQ0FDRVMsQ0FBQUssS0FBQSxDQUFjSixDQUFkLENBQXVCVixDQUFBLENBQUlXLENBQUosQ0FB
dkIsQ0FBaUNBLENBQWpDLENBQXNDWCxDQUF0QyxDQUhHLEtBS0EsSUFBa0MsVUFBbEMsR0FBSSxN
QUFPQSxFQUFBYSxlQUFYLENBRUwsSUFBS0YsQ0FBTCxHQUFZWCxFQUFaLENBQ01BLENBQUFhLGVB
QUEsQ0FBbUJGLENBQW5CLENBQUo7QUFDRUYsQ0FBQUssS0FBQSxDQUFjSixDQUFkLENBQXVCVixD
QUFBLENBQUlXLENBQUosQ0FBdkIsQ0FBaUNBLENBQWpDLENBQXNDWCxDQUF0QyxDQUpDLEtBU0ws
S0FBS1csQ0FBTCxHQUFZWCxFQUFaLENBQ01hLEVBQUFDLEtBQUEsQ0FBb0JkLENBQXBCLENBQXlC
VyxDQUF6QixDQUFKLEVBQ0VGLENBQUFLLEtBQUEsQ0FBY0osQ0FBZCxDQUF1QlYsQ0FBQSxDQUFJ
VyxDQUFKLENBQXZCLENBQWlDQSxDQUFqQyxDQUFzQ1gsQ0FBdEMsQ0FLUixPQUFPQSxFQXpDZ0Ms
Q0E0Q3pDaUIsUUFBU0EsR0FBYSxDQUFDakIsQ0FBRCxDQUFNUyxDQUFOLENBQWdCQyxDQUFoQixD
QUF5QixDQUU3QyxJQURBLElBQUlRLEVBQU9mLE1BQUFlLEtBQUEsQ0FBWWxCLENBQVosQ0FBQW1C
LEtBQUEsRUFBWCxDQUNTQyxFQUFJLENBQWIsQ0FBZ0JBLENBQWhCLENBQW9CRixDQUFBaEIsT0FB
cEIsQ0FBaUNrQixDQUFBLEVBQWpDLENBQ0VYLENBQUFLLEtBQUEsQ0FBY0osQ0FBZCxDQUF1QlYs
Q0FBQSxDQUFJa0IsQ0FBQSxDQUFLRSxDQUFMLENBQUosQ0FBdkIsQ0FBcUNGLENBQUEsQ0FBS0Us
Q0FBTCxDQUFyQyxDQUVGLE9BQU9GLEVBTHNDLENBYy9DRyxRQUFTQSxHQUFhLENBQUNDLENBQUQs
Q0FBYSxDQUNqQyxNQUFPLFNBQVEsQ0FBQ0MsQ0FBRCxDQUFRWixDQUFSLENBQWEsQ0FBRVcsQ0FB
QSxDQUFXWCxDQUFYLENBQWdCWSxDQUFoQixDQUFGLENBREssQ0FjbkNDLFFBQVNBLEdBQU8sRUFB
RyxDQUNqQixNQUFPLEVBQUVDLEVBRFEsQ0FVbkJDLFFBQVNBLEdBQVUsQ0FBQzFCLENBQUQsQ0FB
TTJCLENBQU4sQ0FBUyxDQUN0QkEsQ0FBSixDQUNFM0IsQ0FBQTRCLFVBREYsQ0FDa0JELENBRGxC
LENBR0UsT0FBTzNCLENBQUE0QixVQUppQixDQVM1QkMsUUFBU0EsR0FBVSxDQUFDQyxDQUFELENB
QU1DLENBQU4sQ0FBWUMsQ0FBWixDQUFrQixDQUduQyxJQUZBLElBQUlMLEVBQUlHLENBQUFGLFVB
QVIsQ0FFU1IsRUFBSSxDQUZiLENBRWdCYSxFQUFLRixDQUFBN0IsT0FBckIsQ0FBa0NrQixDQUFs
QyxDQUFzQ2EsQ0FBdEMsQ0FBMEMsRUFBRWIsQ0FBNUMsQ0FBK0MsQ0FDN0MsSUFBSXBCLEVBQU0r
QixDQUFBLENBQUtYLENBQUwsQ0FDVixJQUFLYyxDQUFBLENBQVNsQyxDQUFULENBQUwsRUFBdUJZ
LENBQUEsQ0FBV1osQ0FBWCxDQUF2QixDQUVBLElBREEsSUFBSWtCLEVBQU9mLE1BQUFlLEtBQUEs
Q0FBWWxCLENBQVosQ0FBWCxDQUNTbUMsRUFBSSxDQURiLENBQ2dCQyxFQUFLbEIsQ0FBQWhCLE9B
QXJCLENBQWtDaUMsQ0FBbEMsQ0FBc0NDLENBQXRDLENBQTBDRCxDQUFBLEVBQTFDLENBQStDLENB
QzdDLElBQUl4QixFQUFNTyxDQUFBLENBQUtpQixDQUFMLENBQVYsQ0FDSUUsRUFBTXJDLENBQUEs
Q0FBSVcsQ0FBSixDQUVOcUIsRUFBSixFQUFZRSxDQUFBLENBQVNHLENBQVQsQ0FBWixDQUNNQyxF
QUFBLENBQU9ELENBQVAsQ0FBSixDQUNFUCxDQUFBLENBQUluQixDQUFKLENBREYsQ0FDYSxJQUFJ
NEIsSUFBSixDQUFTRixDQUFBRyxRQUFBLEVBQVQsQ0FEYixFQUdPTixDQUFBLENBQVNKLENBQUEs
Q0FBSW5CLENBQUosQ0FBVCxDQUNMO0NBRHlCbUIsQ0FBQSxDQUFJbkIsQ0FBSixDQUN6QixDQURv
Q0osQ0FBQSxDQUFROEIsQ0FBUixDQUFBLENBQWUsRUFBZixDQUFvQixFQUN4RCxFQUFBUixFQUFB
LENBQVdDLENBQUEsQ0FBSW5CLENBQUosQ0FBWCxDQUFxQixDQUFDMEIsQ0FBRCxDQUFyQixDQUE0
QixDQUFBLENBQTVCLENBSkYsQ0FERixDQVFFUCxDQUFBLENBQUluQixDQUFKLENBUkYsQ0FRYTBC
LENBWmdDLENBSkYsQ0FxQi9DWCxFQUFBLENBQVdJLENBQVgsQ0FBZ0JILENBQWhCLENBQ0EsT0FB
T0csRUF6QjRCLENBOENyQ1csUUFBU0EsRUFBTSxDQUFDWCxDQUFELENBQU0sQ0FDbkIsTUFBT0Qs
R0FBQSxDQUFXQyxDQUFYLENBQWdCWSxFQUFBNUIsS0FBQSxDQUFXNkIsU0FBWCxDQUFzQixDQUF0
QixDQUFoQixDQUEwQyxDQUFBLENBQTFDLENBRFksQ0F1QnJCQyxRQUFTQSxHQUFLLENBQUNkLENB
QUQsQ0FBTSxDQUNsQixNQUFPRCxHQUFBLENBQVdDLENBQVgsQ0FBZ0JZLEVBQUE1QixLQUFBLENB
QVc2QixTQUFYLENBQXNCLENBQXRCLENBQWhCLENBQTBDLENBQUEsQ0FBMUMsQ0FEVyxDQU1wQkUs
UUFBU0EsRUFBSyxDQUFDQyxDQUFELENBQU0sQ0FDbEIsTUFBT0MsU0FBQSxDQUFTRCxDQUFULENB
QWMsRUFBZCxDQURXLENBS3BCRSxRQUFTQSxHQUFPLENBQUNDLENBQUQsQ0FBU0MsQ0FBVCxDQUFn
QixDQUM5QixNQUFPVCxFQUFBLENBQU90QyxNQUFBZ0QsT0FBQSxDQUFjRixDQUFkLENBQVAsQ0FB
OEJDLENBQTlCLENBRHVCLENBb0JoQ0UsUUFBU0EsRUFBSSxFQUFHLEVBc0JoQkMsUUFBU0EsR0FB
USxDQUFDQyxDQUFELENBQUksQ0FBQyxNQUFPQSxFQUFSLENBSXJCQyxRQUFTQSxHQUFPLENBQUNo
QyxDQUFELENBQVEsQ0FBQyxNQUFPLFNBQVEsRUFBRyxDQUFDLE1BQU9BLEVBQVIsQ0FBbkIsQ0FF
eEJpQyxRQUFTQSxHQUFpQixDQUFDeEQsQ0FBRCxDQUFNLENBQzlCLE1BQU9ZLEVBQUEsQ0FBV1os
Q0FBQXlELFNBQVgsQ0FBUCxFQUFtQ3pELENBQUF5RCxTQUFuQyxHQUFvRHRELE1BQUF1RCxVQUFB
RCxTQUR0QixDQWlCaENFLFFBQVNBLEVBQVcsQ0FBQ3BDLENBQUQsQ0FBUSxDQUFDLE1BQXdCLFdB
QXhCLEdBQU8sTUFBT0EsRUFBZixDQWU1QnFDLFFBQVNBLEVBQVMsQ0FBQ3JDLENBQUQsQ0FBUSxD
QUFDLE1BQXdCLFdBQXhCLEdBQU8sTUFBT0EsRUFBZixDQWdCMUJXLFFBQVNBLEVBQVEsQ0FBQ1gs
Q0FBRCxDQUFRLENBRXZCLE1BQWlCLEtBQWpCO0FBQU9BLENBQVAsRUFBMEMsUUFBMUMsR0FBeUIs
TUFBT0EsRUFGVCxDQVd6QlAsUUFBU0EsR0FBYSxDQUFDTyxDQUFELENBQVEsQ0FDNUIsTUFBaUIs
S0FBakIsR0FBT0EsQ0FBUCxFQUEwQyxRQUExQyxHQUF5QixNQUFPQSxFQUFoQyxFQUFzRCxDQUFD
c0MsRUFBQSxDQUFldEMsQ0FBZixDQUQzQixDQWlCOUJqQixRQUFTQSxFQUFRLENBQUNpQixDQUFE
LENBQVEsQ0FBQyxNQUF3QixRQUF4QixHQUFPLE1BQU9BLEVBQWYsQ0FxQnpCdUMsUUFBU0EsRUFB
USxDQUFDdkMsQ0FBRCxDQUFRLENBQUMsTUFBd0IsUUFBeEIsR0FBTyxNQUFPQSxFQUFmLENBZXpC
ZSxRQUFTQSxHQUFNLENBQUNmLENBQUQsQ0FBUSxDQUNyQixNQUFnQyxlQUFoQyxHQUFPa0MsRUFB
QTNDLEtBQUEsQ0FBY1MsQ0FBZCxDQURjLENBK0J2QlgsUUFBU0EsRUFBVSxDQUFDVyxDQUFELENB
QVEsQ0FBQyxNQUF3QixVQUF4QixHQUFPLE1BQU9BLEVBQWYsQ0FVM0J3QyxRQUFTQSxHQUFRLENB
QUN4QyxDQUFELENBQVEsQ0FDdkIsTUFBZ0MsaUJBQWhDLEdBQU9rQyxFQUFBM0MsS0FBQSxDQUFj
UyxDQUFkLENBRGdCLENBWXpCdEIsUUFBU0EsR0FBUSxDQUFDRCxDQUFELENBQU0sQ0FDckIsTUFB
T0EsRUFBUCxFQUFjQSxDQUFBTCxPQUFkLEdBQTZCSyxDQURSLENBS3ZCZ0UsUUFBU0EsR0FBTyxD
QUFDaEUsQ0FBRCxDQUFNLENBQ3BCLE1BQU9BLEVBQVAsRUFBY0EsQ0FBQWlFLFdBQWQsRUFBZ0Nq
RSxDQUFBa0UsT0FEWixDQW9CdEJDLFFBQVNBLEdBQVMsQ0FBQzVDLENBQUQsQ0FBUSxDQUN4QixN
QUF3QixTQUF4QixHQUFPLE1BQU9BLEVBRFUsQ0F5QzFCNkMsUUFBU0EsR0FBUyxDQUFDQyxDQUFE
LENBQU8sQ0FDdkIsTUFBTyxFQUFHQSxDQUFBQSxDQUFILEVBQ0osRUFBQUEsQ0FBQUMsU0FBQSxF
QUNHRCxDQUFBRSxLQURILEVBQ2dCRixDQUFBRyxLQURoQixFQUM2QkgsQ0FBQUksS0FEN0IsQ0FE
SSxDQURnQixDQTd2QmM7QUF1d0J2Q0MsUUFBU0EsR0FBTyxDQUFDNUIsQ0FBRCxDQUFNLENBQUEs
SUFDaEI5QyxFQUFNLEVBQUkyRSxFQUFBQSxDQUFRN0IsQ0FBQThCLE1BQUEsQ0FBVSxHQUFWLENB
QXRCLEtBQXNDeEQsQ0FDdEMsS0FBS0EsQ0FBTCxDQUFTLENBQVQsQ0FBWUEsQ0FBWixDQUFnQnVE
LENBQUF6RSxPQUFoQixDQUE4QmtCLENBQUEsRUFBOUIsQ0FDRXBCLENBQUEsQ0FBSTJFLENBQUEs
Q0FBTXZELENBQU4sQ0FBSixDQUFBLENBQWdCLENBQUEsQ0FFbEIsT0FBT3BCLEVBTGEsQ0FTdEI2
RSxRQUFTQSxHQUFTLENBQUNDLENBQUQsQ0FBVSxDQUMxQixNQUFPQyxFQUFBLENBQVVELENBQUFS
LFNBQVYsRUFBK0JRLENBQUEsQ0FBUSxDQUFSLENBQS9CLEVBQTZDQSxDQUFBLENBQVEsQ0FBUixD
QUFBUixTQUE3QyxDQURtQixDQVE1QlUsUUFBU0EsR0FBVyxDQUFDQyxDQUFELENBQVExRCxDQUFS
LENBQWUsQ0FDakMsSUFBSTJELEVBQVFELENBQUFFLFFBQUEsQ0FBYzVELENBQWQsQ0FDQyxFQUFi
LEVBQUkyRCxDQUFKLEVBQ0VELENBQUFHLE9BQUEsQ0FBYUYsQ0FBYixDQUFvQixDQUFwQixDQUVG
LE9BQU9BLEVBTDBCLENBa0VuQ0csUUFBU0EsR0FBSSxDQUFDQyxDQUFELENBQVNDLENBQVQsQ0FB
c0JDLENBQXRCLENBQW1DQyxDQUFuQyxDQUE4QyxDQUN6RCxHQUFJeEYsRUFBQSxDQUFTcUYsQ0FB
VCxDQUFKLEVBQXdCdEIsRUFBQSxDQUFRc0IsQ0FBUixDQUF4QixDQUNFLEtBQU1JLEdBQUEsQ0FB
UyxNQUFULENBQU4sQ0FHRixHQS9IT0MsRUFBQUMsS0FBQSxDQUF3Qm5DLEVBQUEzQyxLQUFBLENB
K0hkeUUsQ0EvSGMsQ0FBeEIsQ0ErSFAsQ0FDRSxLQUFNRyxHQUFBLENBQVMsTUFBVCxDQUFOLENB
SUYsR0FBS0gsQ0FBTCxDQStCTyxDQUNMLEdBQUlELENBQUosR0FBZUMsQ0FBZixDQUE0QixLQUFN
RyxHQUFBLENBQVMsS0FBVCxDQUFOLENBRzVCRixDQUFBLENBQWNBLENBQWQsRUFBNkIsRUFDN0JD
LEVBQUEsQ0FBWUEsQ0FBWixFQUF5QixFQUVyQnZELEVBQUEsQ0FBU29ELENBQVQsQ0FBSixHQUNF
RSxDQUFBSyxLQUFBLENBQWlCUCxDQUFqQixDQUNBLENBQUFHLENBQUFJLEtBQUEsQ0FBZU4sQ0FB
ZixDQUZGLENBS0EsS0FBWTVFLENBQ1osSUFBSUosQ0FBQSxDQUFRK0UsQ0FBUixDQUFKLENBRUUs
SUFBU2xFLENBQVQsQ0FEQW1FLENBQUFyRixPQUNBLENBRHFCLENBQ3JCLENBQWdCa0IsQ0FBaEIs
Q0FBb0JrRSxDQUFBcEYsT0FBcEIsQ0FBbUNrQixDQUFBLEVBQW5DLENBQ0VtRSxDQUFBTSxLQUFB
LENBQWlCUixFQUFBLENBQUtDLENBQUEsQ0FBT2xFLENBQVAsQ0FBTCxDQUFnQixJQUFoQixDQUFz
Qm9FLENBQXRCLENBQW1DQyxDQUFuQyxDQUFqQixDQUhKLEtBS08sQ0FDTCxJQUFJOUQsRUFBSTRE
LENBQUEzRCxVQUNKckIsRUFBQSxDQUFRZ0YsQ0FBUixDQUFKLENBQ0VBLENBQUFyRixPQURGLENB
Q3VCLENBRHZCLENBR0VNLENBQUEsQ0FBUStFLENBQVIsQ0FBcUIsUUFBUSxDQUFDaEUsQ0FBRDtB
QUFRWixDQUFSLENBQWEsQ0FDeEMsT0FBTzRFLENBQUEsQ0FBWTVFLENBQVosQ0FEaUMsQ0FBMUMs
Q0FJRixJQUFJSyxFQUFBLENBQWNzRSxDQUFkLENBQUosQ0FFRSxJQUFLM0UsQ0FBTCxHQUFZMkUs
RUFBWixDQUNFQyxDQUFBLENBQVk1RSxDQUFaLENBQUEsQ0FBbUIwRSxFQUFBLENBQUtDLENBQUEs
Q0FBTzNFLENBQVAsQ0FBTCxDQUFrQixJQUFsQixDQUF3QjZFLENBQXhCLENBQXFDQyxDQUFyQyxD
QUh2QixLQUtPLElBQUlILENBQUosRUFBK0MsVUFBL0MsR0FBYyxNQUFPQSxFQUFBekUsZUFBckIs
Q0FFTCxJQUFLRixDQUFMLEdBQVkyRSxFQUFaLENBQ01BLENBQUF6RSxlQUFBLENBQXNCRixDQUF0
QixDQUFKLEdBQ0U0RSxDQUFBLENBQVk1RSxDQUFaLENBREYsQ0FDcUIwRSxFQUFBLENBQUtDLENB
QUEsQ0FBTzNFLENBQVAsQ0FBTCxDQUFrQixJQUFsQixDQUF3QjZFLENBQXhCLENBQXFDQyxDQUFy
QyxDQURyQixDQUhHLEtBU0wsS0FBSzlFLENBQUwsR0FBWTJFLEVBQVosQ0FDTXpFLEVBQUFDLEtB
QUEsQ0FBb0J3RSxDQUFwQixDQUE0QjNFLENBQTVCLENBQUosR0FDRTRFLENBQUEsQ0FBWTVFLENB
QVosQ0FERixDQUNxQjBFLEVBQUEsQ0FBS0MsQ0FBQSxDQUFPM0UsQ0FBUCxDQUFMLENBQWtCLElB
QWxCLENBQXdCNkUsQ0FBeEIsQ0FBcUNDLENBQXJDLENBRHJCLENBS0ovRCxHQUFBLENBQVc2RCxD
QUFYLENBQXVCNUQsQ0FBdkIsQ0E3QkssQ0FsQkYsQ0EvQlAsSUFFRSxJQURBNEQsQ0FDSSxDQURV
RCxDQUNWLENBQUFwRCxDQUFBLENBQVNvRCxDQUFULENBQUosQ0FBc0IsQ0FFcEIsR0FBSUUsQ0FB
SixFQUE4RCxFQUE5RCxJQUFvQk4sQ0FBcEIsQ0FBNEJNLENBQUFMLFFBQUEsQ0FBb0JHLENBQXBC
LENBQTVCLEVBQ0UsTUFBT0csRUFBQSxDQUFVUCxDQUFWLENBT1QsSUFBSTNFLENBQUEsQ0FBUStF
LENBQVIsQ0FBSixDQUNFLE1BQU9ELEdBQUEsQ0FBS0MsQ0FBTCxDQUFhLEVBQWIsQ0FBaUJFLENB
QWpCLENBQThCQyxDQUE5QixDQUNGLElBbEpKRSxFQUFBQyxLQUFBLENBQXdCbkMsRUFBQTNDLEtB
QUEsQ0FrSkh3RSxDQWxKRyxDQUF4QixDQWtKSSxDQUNMQyxDQUFBLENBQWMsSUFBSUQsQ0FBQVEs
WUFBSixDQUF1QlIsQ0FBdkIsQ0FEVCxLQUVBLElBQUloRCxFQUFBLENBQU9nRCxDQUFQLENBQUos
Q0FDTEMsQ0FBQSxDQUFjLElBQUloRCxJQUFKLENBQVMrQyxDQUFBUyxRQUFBLEVBQVQsQ0FEVCxL
QUVBLElBQUloQyxFQUFBLENBQVN1QixDQUFULENBQUosQ0FDTEMsQ0FDQSxDQURjLElBQUlTLE1B
QUosQ0FBV1YsQ0FBQUEsT0FBWCxDQUEwQkEsQ0FBQTdCLFNBQUEsRUFBQXdDLE1BQUEsQ0FBd0Is
U0FBeEIsQ0FBQSxDQUFtQyxDQUFuQyxDQUExQixDQUNkLENBQUFWLENBQUFXLFVBQUEsQ0FBd0Ja
LENBQUFZLFVBRm5CLEtBS0wsT0FESUMsRUFDRztBQURXaEcsTUFBQWdELE9BQUEsQ0FBY1UsRUFB
QSxDQUFleUIsQ0FBZixDQUFkLENBQ1gsQ0FBQUQsRUFBQSxDQUFLQyxDQUFMLENBQWFhLENBQWIs
Q0FBMEJYLENBQTFCLENBQXVDQyxDQUF2QyxDQUdMQSxFQUFKLEdBQ0VELENBQUFLLEtBQUEsQ0FB
aUJQLENBQWpCLENBQ0EsQ0FBQUcsQ0FBQUksS0FBQSxDQUFlTixDQUFmLENBRkYsQ0F4Qm9CLENB
K0V4QixNQUFPQSxFQTNGa0QsQ0FtRzNEYSxRQUFTQSxHQUFXLENBQUMvRCxDQUFELENBQU1QLENB
QU4sQ0FBVyxDQUM3QixHQUFJdkIsQ0FBQSxDQUFROEIsQ0FBUixDQUFKLENBQWtCLENBQ2hCUCxD
QUFBLENBQU1BLENBQU4sRUFBYSxFQUViLEtBSGdCLElBR1BWLEVBQUksQ0FIRyxDQUdBYSxFQUFL
SSxDQUFBbkMsT0FBckIsQ0FBaUNrQixDQUFqQyxDQUFxQ2EsQ0FBckMsQ0FBeUNiLENBQUEsRUFB
ekMsQ0FDRVUsQ0FBQSxDQUFJVixDQUFKLENBQUEsQ0FBU2lCLENBQUEsQ0FBSWpCLENBQUosQ0FK
SyxDQUFsQixJQU1PLElBQUljLENBQUEsQ0FBU0csQ0FBVCxDQUFKLENBR0wsSUFBUzFCLENBQVQs
R0FGQW1CLEVBRWdCTyxDQUZWUCxDQUVVTyxFQUZILEVBRUdBLENBQUFBLENBQWhCLENBQ0UsR0FB
d0IsR0FBeEIsR0FBTTFCLENBQUEwRixPQUFBLENBQVcsQ0FBWCxDQUFOLEVBQWlELEdBQWpELEdB
QStCMUYsQ0FBQTBGLE9BQUEsQ0FBVyxDQUFYLENBQS9CLENBQ0V2RSxDQUFBLENBQUluQixDQUFK
LENBQUEsQ0FBVzBCLENBQUEsQ0FBSTFCLENBQUosQ0FLakIsT0FBT21CLEVBQVAsRUFBY08sQ0Fq
QmUsQ0FrRC9CaUUsUUFBU0EsR0FBTSxDQUFDQyxDQUFELENBQUtDLENBQUwsQ0FBUyxDQUN0QixH
QUFJRCxDQUFKLEdBQVdDLENBQVgsQ0FBZSxNQUFPLENBQUEsQ0FDdEIsSUFBVyxJQUFYLEdBQUlE
LENBQUosRUFBMEIsSUFBMUIsR0FBbUJDLENBQW5CLENBQWdDLE1BQU8sQ0FBQSxDQUN2QyxJQUFJ
RCxDQUFKLEdBQVdBLENBQVgsRUFBaUJDLENBQWpCLEdBQXdCQSxDQUF4QixDQUE0QixNQUFPLENB
QUEsQ0FIYixLQUlsQkMsRUFBSyxNQUFPRixFQUpNLENBSXNCNUYsQ0FDNUMsSUFBSThGLENBQUos
RUFEeUJDLE1BQU9GLEVBQ2hDLEVBQ1ksUUFEWixFQUNNQyxDQUROLENBRUksR0FBSWxHLENBQUEs
Q0FBUWdHLENBQVIsQ0FBSixDQUFpQixDQUNmLEdBQUssQ0FBQWhHLENBQUEsQ0FBUWlHLENBQVIs
Q0FBTCxDQUFrQixNQUFPLENBQUEsQ0FDekIsS0FBS3RHLENBQUwsQ0FBY3FHLENBQUFyRyxPQUFk
LEdBQTRCc0csQ0FBQXRHLE9BQTVCLENBQXVDLENBQ3JDLElBQUtTLENBQUwsQ0FBVyxDQUFYLENB
QWNBLENBQWQsQ0FBb0JULENBQXBCLENBQTRCUyxDQUFBLEVBQTVCLENBQ0UsR0FBSyxDQUFBMkYs
RUFBQSxDQUFPQyxDQUFBLENBQUc1RixDQUFILENBQVAsQ0FBZ0I2RixDQUFBLENBQUc3RixDQUFI
LENBQWhCLENBQUwsQ0FBK0IsTUFBTyxDQUFBLENBRXhDLE9BQU8sQ0FBQSxDQUo4QixDQUZ4QixD
QUFqQixJQVFPLENBQUEsR0FBSTJCLEVBQUEsQ0FBT2lFLENBQVAsQ0FBSixDQUNMLE1BQUtqRSxH
QUFBLENBQU9rRSxDQUFQLENBQUw7QUFDT0YsRUFBQSxDQUFPQyxDQUFBUixRQUFBLEVBQVAsQ0FB
cUJTLENBQUFULFFBQUEsRUFBckIsQ0FEUCxDQUF3QixDQUFBLENBRW5CLElBQUloQyxFQUFBLENB
QVN3QyxDQUFULENBQUosQ0FDTCxNQUFPeEMsR0FBQSxDQUFTeUMsQ0FBVCxDQUFBLENBQWVELENB
QUE5QyxTQUFBLEVBQWYsRUFBZ0MrQyxDQUFBL0MsU0FBQSxFQUFoQyxDQUFnRCxDQUFBLENBRXZE
LElBQUlPLEVBQUEsQ0FBUXVDLENBQVIsQ0FBSixFQUFtQnZDLEVBQUEsQ0FBUXdDLENBQVIsQ0FB
bkIsRUFBa0N2RyxFQUFBLENBQVNzRyxDQUFULENBQWxDLEVBQWtEdEcsRUFBQSxDQUFTdUcsQ0FB
VCxDQUFsRCxFQUNFakcsQ0FBQSxDQUFRaUcsQ0FBUixDQURGLEVBQ2lCbEUsRUFBQSxDQUFPa0Us
Q0FBUCxDQURqQixFQUMrQnpDLEVBQUEsQ0FBU3lDLENBQVQsQ0FEL0IsQ0FDNkMsTUFBTyxDQUFB
LENBQ3BERyxFQUFBLENBQVNDLEVBQUEsRUFDVCxLQUFLakcsQ0FBTCxHQUFZNEYsRUFBWixDQUNF
LEdBQXNCLEdBQXRCLEdBQUk1RixDQUFBMEYsT0FBQSxDQUFXLENBQVgsQ0FBSixFQUE2QixDQUFB
ekYsQ0FBQSxDQUFXMkYsQ0FBQSxDQUFHNUYsQ0FBSCxDQUFYLENBQTdCLENBQUEsQ0FDQSxHQUFL
LENBQUEyRixFQUFBLENBQU9DLENBQUEsQ0FBRzVGLENBQUgsQ0FBUCxDQUFnQjZGLENBQUEsQ0FB
RzdGLENBQUgsQ0FBaEIsQ0FBTCxDQUErQixNQUFPLENBQUEsQ0FDdENnRyxFQUFBLENBQU9oRyxD
QUFQLENBQUEsQ0FBYyxDQUFBLENBRmQsQ0FJRixJQUFLQSxDQUFMLEdBQVk2RixFQUFaLENBQ0Us
R0FBSSxFQUFFN0YsQ0FBRixHQUFTZ0csRUFBVCxFQUNrQixHQURsQixHQUNBaEcsQ0FBQTBGLE9B
QUEsQ0FBVyxDQUFYLENBREEsRUFFQUcsQ0FBQSxDQUFHN0YsQ0FBSCxDQUZBLEdBRVlkLENBRlos
RUFHQ2UsQ0FBQSxDQUFXNEYsQ0FBQSxDQUFHN0YsQ0FBSCxDQUFYLENBSEQsQ0FBSixDQUcwQixN
QUFPLENBQUEsQ0FFbkMsT0FBTyxDQUFBLENBcEJGLENBd0JYLE1BQU8sQ0FBQSxDQXZDZSxDQWtI
eEJrRyxRQUFTQSxHQUFNLENBQUNDLENBQUQsQ0FBU0MsQ0FBVCxDQUFpQjdCLENBQWpCLENBQXdC
LENBQ3JDLE1BQU80QixFQUFBRCxPQUFBLENBQWNuRSxFQUFBNUIsS0FBQSxDQUFXaUcsQ0FBWCxD
QUFtQjdCLENBQW5CLENBQWQsQ0FEOEIsQ0E0QnZDOEIsUUFBU0EsR0FBSSxDQUFDQyxDQUFELENB
QU9DLENBQVAsQ0FBVyxDQUN0QixJQUFJQyxFQUErQixDQUFuQixDQUFBeEUsU0FBQXpDLE9BQUEs
Q0F4QlR3QyxFQUFBNUIsS0FBQSxDQXdCMEM2QixTQXhCMUMsQ0F3QnFEeUUsQ0F4QnJELENBd0JT
LENBQWlELEVBQ2pFLE9BQUksQ0FBQXhHLENBQUEsQ0FBV3NHLENBQVgsQ0FBSixFQUF3QkEsQ0FB
eEIsV0FBc0NsQixPQUF0QyxDQWNTa0IsQ0FkVCxDQUNTQyxDQUFBakgsT0FBQSxDQUNILFFBQVEs
RUFBRyxDQUNULE1BQU95QyxVQUFBekMsT0FBQTtBQUNIZ0gsQ0FBQUcsTUFBQSxDQUFTSixDQUFU
LENBQWVKLEVBQUEsQ0FBT00sQ0FBUCxDQUFrQnhFLFNBQWxCLENBQTZCLENBQTdCLENBQWYsQ0FE
RyxDQUVIdUUsQ0FBQUcsTUFBQSxDQUFTSixDQUFULENBQWVFLENBQWYsQ0FISyxDQURSLENBTUgs
UUFBUSxFQUFHLENBQ1QsTUFBT3hFLFVBQUF6QyxPQUFBLENBQ0hnSCxDQUFBRyxNQUFBLENBQVNK
LENBQVQsQ0FBZXRFLFNBQWYsQ0FERyxDQUVIdUUsQ0FBQXBHLEtBQUEsQ0FBUW1HLENBQVIsQ0FI
SyxDQVRLLENBcUJ4QkssUUFBU0EsR0FBYyxDQUFDM0csQ0FBRCxDQUFNWSxDQUFOLENBQWEsQ0FD
bEMsSUFBSWdHLEVBQU1oRyxDQUVTLFNBQW5CLEdBQUksTUFBT1osRUFBWCxFQUFpRCxHQUFqRCxH
QUErQkEsQ0FBQTBGLE9BQUEsQ0FBVyxDQUFYLENBQS9CLEVBQTBFLEdBQTFFLEdBQXdEMUYsQ0FB
QTBGLE9BQUEsQ0FBVyxDQUFYLENBQXhELENBQ0VrQixDQURGLENBQ1ExSCxDQURSLENBRVdJLEVB
QUEsQ0FBU3NCLENBQVQsQ0FBSixDQUNMZ0csQ0FESyxDQUNDLFNBREQsQ0FFSWhHLENBQUosRUFB
YzNCLENBQWQsR0FBMkIyQixDQUEzQixDQUNMZ0csQ0FESyxDQUNDLFdBREQsQ0FFSXZELEVBQUEs
Q0FBUXpDLENBQVIsQ0FGSixHQUdMZ0csQ0FISyxDQUdDLFFBSEQsQ0FNUCxPQUFPQSxFQWIyQixD
QWdDcENDLFFBQVNBLEdBQU0sQ0FBQ3hILENBQUQsQ0FBTXlILENBQU4sQ0FBYyxDQUMzQixHQUFt
QixXQUFuQixHQUFJLE1BQU96SCxFQUFYLENBQWdDLE1BQU9ILEVBQ2xDaUUsRUFBQSxDQUFTMkQs
Q0FBVCxDQUFMLEdBQ0VBLENBREYsQ0FDV0EsQ0FBQSxDQUFTLENBQVQsQ0FBYSxJQUR4QixDQUdB
LE9BQU9DLEtBQUFDLFVBQUEsQ0FBZTNILENBQWYsQ0FBb0JzSCxFQUFwQixDQUFvQ0csQ0FBcEMs
Q0FMb0IsQ0FxQjdCRyxRQUFTQSxHQUFRLENBQUNDLENBQUQsQ0FBTyxDQUN0QixNQUFPdkgsRUFB
QSxDQUFTdUgsQ0FBVCxDQUFBLENBQ0RILElBQUFJLE1BQUEsQ0FBV0QsQ0FBWCxDQURDLENBRURB
LENBSGdCLENBT3hCRSxRQUFTQSxHQUFnQixDQUFDQyxDQUFELENBQVdDLENBQVgsQ0FBcUIsQ0FD
NUMsSUFBSUMsRUFBMEIzRixJQUFBdUYsTUFBQSxDQUFXLHdCQUFYLENBQXNDRSxDQUF0QyxDQUEx
QkUsQ0FBNEUsR0FDaEYsT0FBT0MsTUFBQSxDQUFNRCxDQUFOLENBQUEsQ0FBaUNELENBQWpDLENB
QTRDQyxDQUZQLENBYTlDRSxRQUFTQSxHQUFzQixDQUFDQyxDQUFEO0FBQU9MLENBQVAsQ0FBaUJN
LENBQWpCLENBQTBCLENBQ3ZEQSxDQUFBLENBQVVBLENBQUEsQ0FBVyxFQUFYLENBQWUsQ0FDekIs
S0FBSUMsRUFBaUJSLEVBQUEsQ0FBaUJDLENBQWpCLENBQTJCSyxDQUFBRyxrQkFBQSxFQUEzQixD
QUNDSCxFQUFBQSxDQUFBQSxDQUFNLEVBQUEsQ0FBQUMsQ0FBQSxFQUFXQyxDQUFYLENBQTRCRixD
QUFBRyxrQkFBQSxFQUE1QixDQVQ1QkgsRUFBQSxDQUFPLElBQUk5RixJQUFKLENBQVM4RixDQUFB
dEMsUUFBQSxFQUFULENBQ1BzQyxFQUFBSSxXQUFBLENBQWdCSixDQUFBSyxXQUFBLEVBQWhCLENB
QW9DQyxDQUFwQyxDQVFBLE9BUE9OLEVBSWdELENBVXpETyxRQUFTQSxHQUFXLENBQUM5RCxDQUFE
LENBQVUsQ0FDNUJBLENBQUEsQ0FBVStELENBQUEsQ0FBTy9ELENBQVAsQ0FBQWdFLE1BQUEsRUFD
VixJQUFJLENBR0ZoRSxDQUFBaUUsTUFBQSxFQUhFLENBSUYsTUFBT0MsQ0FBUCxDQUFVLEVBQ1os
SUFBSUMsRUFBV0osQ0FBQSxDQUFPLE9BQVAsQ0FBQUssT0FBQSxDQUF1QnBFLENBQXZCLENBQUFx
RSxLQUFBLEVBQ2YsSUFBSSxDQUNGLE1BQU9yRSxFQUFBLENBQVEsQ0FBUixDQUFBMUUsU0FBQSxH
QUF3QmdKLEVBQXhCLENBQXlDckUsQ0FBQSxDQUFVa0UsQ0FBVixDQUF6QyxDQUNIQSxDQUFBaEQs
TUFBQSxDQUNRLFlBRFIsQ0FBQSxDQUNzQixDQUR0QixDQUFBb0QsUUFBQSxDQUVVLGFBRlYsQ0FF
eUIsUUFBUSxDQUFDcEQsQ0FBRCxDQUFRM0IsQ0FBUixDQUFrQixDQUFFLE1BQU8sR0FBUCxDQUFh
UyxDQUFBLENBQVVULENBQVYsQ0FBZixDQUZuRCxDQUZGLENBS0YsTUFBTzBFLENBQVAsQ0FBVSxD
QUNWLE1BQU9qRSxFQUFBLENBQVVrRSxDQUFWLENBREcsQ0FiZ0IsQ0E4QjlCSyxRQUFTQSxHQUFx
QixDQUFDL0gsQ0FBRCxDQUFRLENBQ3BDLEdBQUksQ0FDRixNQUFPZ0ksbUJBQUEsQ0FBbUJoSSxD
QUFuQixDQURMLENBRUYsTUFBT3lILENBQVAsQ0FBVSxFQUh3QixDQWF0Q1EsUUFBU0EsR0FBYSxD
QUFZQyxDQUFaLENBQXNCLENBQUEsSUFDdEN6SixFQUFNLEVBRGdDLENBQzVCMEosQ0FENEIsQ0FD
akIvSSxDQUN6QkgsRUFBQSxDQUFRb0UsQ0FBQzZFLENBQUQ3RSxFQUFhLEVBQWJBLE9BQUEsQ0FB
dUIsR0FBdkIsQ0FBUixDQUFxQyxRQUFRLENBQUM2RSxDQUFELENBQVcsQ0FDbERBLENBQUosR0FD
RUMsQ0FFQSxDQUZZRCxDQUFBSixRQUFBLENBQWlCLEtBQWpCO0FBQXVCLEtBQXZCLENBQUF6RSxN
QUFBLENBQW9DLEdBQXBDLENBRVosQ0FEQWpFLENBQ0EsQ0FETTJJLEVBQUEsQ0FBc0JJLENBQUEs
Q0FBVSxDQUFWLENBQXRCLENBQ04sQ0FBSTlGLENBQUEsQ0FBVWpELENBQVYsQ0FBSixHQUNNNEcs
Q0FDSixDQURVM0QsQ0FBQSxDQUFVOEYsQ0FBQSxDQUFVLENBQVYsQ0FBVixDQUFBLENBQTBCSixF
QUFBLENBQXNCSSxDQUFBLENBQVUsQ0FBVixDQUF0QixDQUExQixDQUFnRSxDQUFBLENBQzFFLENB
QUs3SSxFQUFBQyxLQUFBLENBQW9CZCxDQUFwQixDQUF5QlcsQ0FBekIsQ0FBTCxDQUVXSixDQUFB
LENBQVFQLENBQUEsQ0FBSVcsQ0FBSixDQUFSLENBQUosQ0FDTFgsQ0FBQSxDQUFJVyxDQUFKLENB
QUFrRixLQUFBLENBQWMwQixDQUFkLENBREssQ0FHTHZILENBQUEsQ0FBSVcsQ0FBSixDQUhLLENB
R00sQ0FBQ1gsQ0FBQSxDQUFJVyxDQUFKLENBQUQsQ0FBVTRHLENBQVYsQ0FMYixDQUNFdkgsQ0FB
QSxDQUFJVyxDQUFKLENBREYsQ0FDYTRHLENBSGYsQ0FIRixDQURzRCxDQUF4RCxDQWdCQSxPQUFP
dkgsRUFsQm1DLENBcUI1QzJKLFFBQVNBLEdBQVUsQ0FBQzNKLENBQUQsQ0FBTSxDQUN2QixJQUFJ
NEosRUFBUSxFQUNacEosRUFBQSxDQUFRUixDQUFSLENBQWEsUUFBUSxDQUFDdUIsQ0FBRCxDQUFR
WixDQUFSLENBQWEsQ0FDNUJKLENBQUEsQ0FBUWdCLENBQVIsQ0FBSixDQUNFZixDQUFBLENBQVFl
LENBQVIsQ0FBZSxRQUFRLENBQUNzSSxDQUFELENBQWEsQ0FDbENELENBQUEvRCxLQUFBLENBQVdp
RSxFQUFBLENBQWVuSixDQUFmLENBQW9CLENBQUEsQ0FBcEIsQ0FBWCxFQUMyQixDQUFBLENBQWYs
R0FBQWtKLENBQUEsQ0FBc0IsRUFBdEIsQ0FBMkIsR0FBM0IsQ0FBaUNDLEVBQUEsQ0FBZUQsQ0FB
ZixDQUEyQixDQUFBLENBQTNCLENBRDdDLEVBRGtDLENBQXBDLENBREYsQ0FNQUQsQ0FBQS9ELEtB
QUEsQ0FBV2lFLEVBQUEsQ0FBZW5KLENBQWYsQ0FBb0IsQ0FBQSxDQUFwQixDQUFYLEVBQ3NCLENB
QUEsQ0FBVixHQUFBWSxDQUFBLENBQWlCLEVBQWpCLENBQXNCLEdBQXRCLENBQTRCdUksRUFBQSxD
QUFldkksQ0FBZixDQUFzQixDQUFBLENBQXRCLENBRHhDLEVBUGdDLENBQWxDLENBV0EsT0FBT3FJ
LEVBQUExSixPQUFBLENBQWUwSixDQUFBRyxLQUFBLENBQVcsR0FBWCxDQUFmLENBQWlDLEVBYmpC
LENBNEJ6QkMsUUFBU0EsR0FBZ0IsQ0FBQ3pDLENBQUQsQ0FBTSxDQUM3QixNQUFPdUMsR0FBQSxD
QUFldkMsQ0FBZixDQUFvQixDQUFBLENBQXBCLENBQUE4QixRQUFBLENBQ1ksT0FEWixDQUNxQixH
QURyQixDQUFBQSxRQUFBLENBRVksT0FGWixDQUVxQixHQUZyQixDQUFBQSxRQUFBLENBR1ksT0FI
WixDQUdxQixHQUhyQixDQURzQixDQW1CL0JTLFFBQVNBLEdBQWMsQ0FBQ3ZDLENBQUQsQ0FBTTBD
LENBQU4sQ0FBdUIsQ0FDNUMsTUFBT0MsbUJBQUEsQ0FBbUIzQyxDQUFuQixDQUFBOEIsUUFBQSxD
QUNZLE9BRFosQ0FDcUIsR0FEckIsQ0FBQUEsUUFBQSxDQUVZLE9BRlosQ0FFcUIsR0FGckIsQ0FB
QUEsUUFBQSxDQUdZLE1BSFo7QUFHb0IsR0FIcEIsQ0FBQUEsUUFBQSxDQUlZLE9BSlosQ0FJcUIs
R0FKckIsQ0FBQUEsUUFBQSxDQUtZLE9BTFosQ0FLcUIsR0FMckIsQ0FBQUEsUUFBQSxDQU1ZLE1B
TlosQ0FNcUJZLENBQUEsQ0FBa0IsS0FBbEIsQ0FBMEIsR0FOL0MsQ0FEcUMsQ0FZOUNFLFFBQVNB
LEdBQWMsQ0FBQ3JGLENBQUQsQ0FBVXNGLENBQVYsQ0FBa0IsQ0FBQSxJQUNuQzVGLENBRG1DLENB
QzdCcEQsQ0FENkIsQ0FDMUJhLEVBQUtvSSxFQUFBbkssT0FDbEIsS0FBS2tCLENBQUwsQ0FBUyxD
QUFULENBQVlBLENBQVosQ0FBZ0JhLENBQWhCLENBQW9CLEVBQUViLENBQXRCLENBRUUsR0FEQW9E
LENBQ0ksQ0FERzZGLEVBQUEsQ0FBZWpKLENBQWYsQ0FDSCxDQUR1QmdKLENBQ3ZCLENBQUE5SixD
QUFBLENBQVNrRSxDQUFULENBQWdCTSxDQUFBd0YsYUFBQSxDQUFxQjlGLENBQXJCLENBQWhCLENB
QUosQ0FDRSxNQUFPQSxFQUdYLE9BQU8sS0FSZ0MsQ0EwSXpDK0YsUUFBU0EsR0FBVyxDQUFDekYs
Q0FBRCxDQUFVMEYsQ0FBVixDQUFxQixDQUFBLElBQ25DQyxDQURtQyxDQUVuQ0MsQ0FGbUMsQ0FH
bkNDLEVBQVMsRUFHYm5LLEVBQUEsQ0FBUTZKLEVBQVIsQ0FBd0IsUUFBUSxDQUFDTyxDQUFELENB
QVMsQ0FDbkNDLENBQUFBLEVBQWdCLEtBRWZKLEVBQUFBLENBQUwsRUFBbUIzRixDQUFBZ0csYUFB
bkIsRUFBMkNoRyxDQUFBZ0csYUFBQSxDQUFxQkQsQ0FBckIsQ0FBM0MsR0FDRUosQ0FDQSxDQURh
M0YsQ0FDYixDQUFBNEYsQ0FBQSxDQUFTNUYsQ0FBQXdGLGFBQUEsQ0FBcUJPLENBQXJCLENBRlgs
Q0FIdUMsQ0FBekMsQ0FRQXJLLEVBQUEsQ0FBUTZKLEVBQVIsQ0FBd0IsUUFBUSxDQUFDTyxDQUFE
LENBQVMsQ0FDbkNDLENBQUFBLEVBQWdCLEtBQ3BCLEtBQUlFLENBRUNOLEVBQUFBLENBQUwsR0FB
b0JNLENBQXBCLENBQWdDakcsQ0FBQWtHLGNBQUEsQ0FBc0IsR0FBdEIsQ0FBNEJILENBQUF4QixR
QUFBLENBQWEsR0FBYixDQUFrQixLQUFsQixDQUE1QixDQUF1RCxHQUF2RCxDQUFoQyxJQUNFb0Is
Q0FDQSxDQURhTSxDQUNiLENBQUFMLENBQUEsQ0FBU0ssQ0FBQVQsYUFBQSxDQUF1Qk8sQ0FBdkIs
Q0FGWCxDQUp1QyxDQUF6QyxDQVNJSixFQUFKLEdBQ0VFLENBQUFNLFNBQ0EsQ0FEOEQsSUFDOUQs
R0FEa0JkLEVBQUEsQ0FBZU0sQ0FBZixDQUEyQixXQUEzQixDQUNsQixDQUFBRCxDQUFBLENBQVVD
LENBQVYsQ0FBc0JDLENBQUEsQ0FBUyxDQUFDQSxDQUFELENBQVQsQ0FBb0IsRUFBMUMsQ0FBOEND
LENBQTlDLENBRkYsQ0F2QnVDLENBK0V6Q0gsUUFBU0EsR0FBUyxDQUFDMUYsQ0FBRCxDQUFVb0cs
Q0FBVixDQUFtQlAsQ0FBbkIsQ0FBMkIsQ0FDdEN6SSxDQUFBLENBQVN5SSxDQUFULENBQUw7Q0FB
dUJBLENBQXZCLENBQWdDLEVBQWhDLENBSUFBLEVBQUEsQ0FBU2xJLENBQUEsQ0FIVzBJLENBQ2xC
RixTQUFVLENBQUEsQ0FEUUUsQ0FHWCxDQUFzQlIsQ0FBdEIsQ0FDVCxLQUFJUyxFQUFjQSxRQUFR
LEVBQUcsQ0FDM0J0RyxDQUFBLENBQVUrRCxDQUFBLENBQU8vRCxDQUFQLENBRVYsSUFBSUEsQ0FB
QXVHLFNBQUEsRUFBSixDQUF3QixDQUN0QixJQUFJQyxFQUFPeEcsQ0FBQSxDQUFRLENBQVIsQ0FB
RCxHQUFnQmxGLENBQWhCLENBQTRCLFVBQTVCLENBQXlDZ0osRUFBQSxDQUFZOUQsQ0FBWixDQUVu
RCxNQUFNWSxHQUFBLENBQ0YsU0FERSxDQUdGNEYsQ0FBQWpDLFFBQUEsQ0FBWSxHQUFaLENBQWdC
LE1BQWhCLENBQUFBLFFBQUEsQ0FBZ0MsR0FBaEMsQ0FBb0MsTUFBcEMsQ0FIRSxDQUFOLENBSHNC
LENBU3hCNkIsQ0FBQSxDQUFVQSxDQUFWLEVBQXFCLEVBQ3JCQSxFQUFBSyxRQUFBLENBQWdCLENB
QUMsVUFBRCxDQUFhLFFBQVEsQ0FBQ0MsQ0FBRCxDQUFXLENBQzlDQSxDQUFBakssTUFBQSxDQUFl
LGNBQWYsQ0FBK0J1RCxDQUEvQixDQUQ4QyxDQUFoQyxDQUFoQixDQUlJNkYsRUFBQWMsaUJBQUos
RUFFRVAsQ0FBQXJGLEtBQUEsQ0FBYSxDQUFDLGtCQUFELENBQXFCLFFBQVEsQ0FBQzZGLENBQUQs
Q0FBbUIsQ0FDM0RBLENBQUFELGlCQUFBLENBQWtDLENBQUEsQ0FBbEMsQ0FEMkQsQ0FBaEQsQ0FB
YixDQUtGUCxFQUFBSyxRQUFBLENBQWdCLElBQWhCLENBQ0lGLEVBQUFBLENBQVdNLEVBQUEsQ0FB
ZVQsQ0FBZixDQUF3QlAsQ0FBQU0sU0FBeEIsQ0FDZkksRUFBQU8sT0FBQSxDQUFnQixDQUFDLFlB
QUQsQ0FBZSxjQUFmLENBQStCLFVBQS9CLENBQTJDLFdBQTNDLENBQ2JDLFFBQXVCLENBQUNDLENB
QUQsQ0FBUWhILENBQVIsQ0FBaUJpSCxDQUFqQixDQUEwQlYsQ0FBMUIsQ0FBb0MsQ0FDMURTLENB
QUFFLE9BQUEsQ0FBYSxRQUFRLEVBQUcsQ0FDdEJsSCxDQUFBbUgsS0FBQSxDQUFhLFdBQWIsQ0FB
MEJaLENBQTFCLENBQ0FVLEVBQUEsQ0FBUWpILENBQVIsQ0FBQSxDQUFpQmdILENBQWpCLENBRnNC
LENBQXhCLENBRDBELENBRDlDLENBQWhCLENBUUEsT0FBT1QsRUFsQ29CLENBQTdCLENBcUNJYTtB
QUF1Qix3QkFyQzNCLENBc0NJQyxFQUFxQixzQkFFckJ4TSxFQUFKLEVBQWN1TSxDQUFBdEcsS0FB
QSxDQUEwQmpHLENBQUFrTCxLQUExQixDQUFkLEdBQ0VGLENBQUFjLGlCQUNBLENBRDBCLENBQUEs
Q0FDMUIsQ0FBQTlMLENBQUFrTCxLQUFBLENBQWNsTCxDQUFBa0wsS0FBQXhCLFFBQUEsQ0FBb0I2
QyxDQUFwQixDQUEwQyxFQUExQyxDQUZoQixDQUtBLElBQUl2TSxDQUFKLEVBQWUsQ0FBQXdNLENB
QUF2RyxLQUFBLENBQXdCakcsQ0FBQWtMLEtBQXhCLENBQWYsQ0FDRSxNQUFPTyxFQUFBLEVBR1R6
TCxFQUFBa0wsS0FBQSxDQUFjbEwsQ0FBQWtMLEtBQUF4QixRQUFBLENBQW9COEMsQ0FBcEIsQ0FB
d0MsRUFBeEMsQ0FDZEMsR0FBQUMsZ0JBQUEsQ0FBMEJDLFFBQVEsQ0FBQ0MsQ0FBRCxDQUFlLENB
Qy9DL0wsQ0FBQSxDQUFRK0wsQ0FBUixDQUFzQixRQUFRLENBQUM3QixDQUFELENBQVMsQ0FDckNR
LENBQUFyRixLQUFBLENBQWE2RSxDQUFiLENBRHFDLENBQXZDLENBR0EsT0FBT1UsRUFBQSxFQUp3
QyxDQU83Q3hLLEVBQUEsQ0FBV3dMLEVBQUFJLHdCQUFYLENBQUosRUFDRUosRUFBQUksd0JBQUEs
RUFoRXlDLENBOEU3Q0MsUUFBU0EsR0FBbUIsRUFBRyxDQUM3QjlNLENBQUFrTCxLQUFBLENBQWMs
dUJBQWQsQ0FBd0NsTCxDQUFBa0wsS0FDeENsTCxFQUFBK00sU0FBQUMsT0FBQSxFQUY2QixDQWEv
QkMsUUFBU0EsR0FBYyxDQUFDQyxDQUFELENBQWMsQ0FDL0J4QixDQUFBQSxDQUFXZSxFQUFBdEgs
UUFBQSxDQUFnQitILENBQWhCLENBQUF4QixTQUFBLEVBQ2YsSUFBS0EsQ0FBQUEsQ0FBTCxDQUNF
LEtBQU0zRixHQUFBLENBQVMsTUFBVCxDQUFOLENBR0YsTUFBTzJGLEVBQUF5QixJQUFBLENBQWEs
ZUFBYixDQU40QixDQVVyQ0MsUUFBU0EsR0FBVSxDQUFDbEMsQ0FBRCxDQUFPbUMsQ0FBUCxDQUFr
QixDQUNuQ0EsQ0FBQSxDQUFZQSxDQUFaO0FBQXlCLEdBQ3pCLE9BQU9uQyxFQUFBeEIsUUFBQSxD
QUFhNEQsRUFBYixDQUFnQyxRQUFRLENBQUNDLENBQUQsQ0FBU0MsQ0FBVCxDQUFjLENBQzNELE9B
QVFBLENBQUEsQ0FBTUgsQ0FBTixDQUFrQixFQUExQixFQUFnQ0UsQ0FBQUUsWUFBQSxFQUQyQixD
QUF0RCxDQUY0QixDQVNyQ0MsUUFBU0EsR0FBVSxFQUFHLENBQ3BCLElBQUlDLENBRUosSUFBSUMs
Q0FBQUEsRUFBSixDQUFBLENBS0EsSUFBSUMsRUFBU0MsRUFBQSxFQUNiQyxHQUFBLENBQVMvTixD
QUFBK04sT0FDTDlKLEVBQUEsQ0FBVTRKLENBQVYsQ0FBSixHQUNFRSxFQURGLENBQ3NCLElBQVgs
R0FBQUYsQ0FBQSxDQUFrQjNOLENBQWxCLENBQThCRixDQUFBLENBQU82TixDQUFQLENBRHpDLENB
UUlFLEdBQUosRUFBY0EsRUFBQXhHLEdBQUF5RyxHQUFkLEVBQ0U5RSxDQWFBLENBYlM2RSxFQWFU
LENBWkFqTCxDQUFBLENBQU9pTCxFQUFBeEcsR0FBUCxDQUFrQixDQUNoQjRFLE1BQU84QixFQUFB
OUIsTUFEUyxDQUVoQitCLGFBQWNELEVBQUFDLGFBRkUsQ0FHaEJDLFdBQVlGLEVBQUFFLFdBSEks
Q0FJaEJ6QyxTQUFVdUMsRUFBQXZDLFNBSk0sQ0FLaEIwQyxjQUFlSCxFQUFBRyxjQUxDLENBQWxC
LENBWUEsQ0FEQVQsQ0FDQSxDQURvQkksRUFBQU0sVUFDcEIsQ0FBQU4sRUFBQU0sVUFBQSxDQUFt
QkMsUUFBUSxDQUFDQyxDQUFELENBQVEsQ0FDakMsSUFBSUMsQ0FDSixJQUFLQyxFQUFMLENBUUVB
LEVBQUEsQ0FBbUMsQ0FBQSxDQVJyQyxLQUNFLEtBRHFDLElBQzVCaE4sRUFBSSxDQUR3QixDQUNy
QmlOLENBQWhCLENBQTJDLElBQTNDLEdBQXVCQSxDQUF2QixDQUE4QkgsQ0FBQSxDQUFNOU0sQ0FB
TixDQUE5QixFQUFpREEsQ0FBQSxFQUFqRCxDQUVFLENBREErTSxDQUNBLENBRFNULEVBQUFZLE1B
QUEsQ0FBYUQsQ0FBYixDQUFtQixRQUFuQixDQUNULEdBQWNGLENBQUFJLFNBQWQsRUFDRWIsRUFB
QSxDQUFPVyxDQUFQLENBQUFHLGVBQUEsQ0FBNEIsVUFBNUIsQ0FNTmxCLEVBQUEsQ0FBa0JZLENB
QWxCLENBWmlDLENBZHJDLEVBNkJFckYsQ0E3QkYsQ0E2Qlc0RixDQUdYckMsR0FBQXRILFFBQUEs
Q0FBa0IrRCxDQUdsQjBFLEdBQUEsQ0FBa0IsQ0FBQSxDQWxEbEIsQ0FIb0IsQ0EyRHRCbUIsUUFB
U0EsR0FBUyxDQUFDQyxDQUFEO0FBQU05RCxDQUFOLENBQVkrRCxDQUFaLENBQW9CLENBQ3BDLEdB
QUtELENBQUFBLENBQUwsQ0FDRSxLQUFNakosR0FBQSxDQUFTLE1BQVQsQ0FBMkNtRixDQUEzQyxF
QUFtRCxHQUFuRCxDQUEwRCtELENBQTFELEVBQW9FLFVBQXBFLENBQU4sQ0FFRixNQUFPRCxFQUo2
QixDQU90Q0UsUUFBU0EsR0FBVyxDQUFDRixDQUFELENBQU05RCxDQUFOLENBQVlpRSxDQUFaLENB
QW1DLENBQ2pEQSxDQUFKLEVBQTZCdk8sQ0FBQSxDQUFRb08sQ0FBUixDQUE3QixHQUNJQSxDQURK
LENBQ1VBLENBQUEsQ0FBSUEsQ0FBQXpPLE9BQUosQ0FBaUIsQ0FBakIsQ0FEVixDQUlBd08sR0FB
QSxDQUFVOU4sQ0FBQSxDQUFXK04sQ0FBWCxDQUFWLENBQTJCOUQsQ0FBM0IsQ0FBaUMsc0JBQWpD
LEVBQ0s4RCxDQUFBLEVBQXNCLFFBQXRCLEdBQU8sTUFBT0EsRUFBZCxDQUFpQ0EsQ0FBQTdJLFlB
QUErRSxLQUFqQyxFQUF5RCxRQUF6RCxDQUFvRSxNQUFPOEQsRUFEaEYsRUFFQSxPQUFPQSxFQVA4
QyxDQWV2REksUUFBU0EsR0FBdUIsQ0FBQ2xFLENBQUQsQ0FBT25LLENBQVAsQ0FBZ0IsQ0FDOUMs
R0FBYSxnQkFBYixHQUFJbUssQ0FBSixDQUNFLEtBQU1uRixHQUFBLENBQVMsU0FBVCxDQUE4RGhG
LENBQTlELENBQU4sQ0FGNEMsQ0FjaERzTyxRQUFTQSxHQUFNLENBQUNoUCxDQUFELENBQU1pUCxD
QUFOLENBQVlDLENBQVosQ0FBMkIsQ0FDeEMsR0FBS0QsQ0FBQUEsQ0FBTCxDQUFXLE1BQU9qUCxF
QUNka0IsRUFBQUEsQ0FBTytOLENBQUFySyxNQUFBLENBQVcsR0FBWCxDQUtYLEtBSkEsSUFBSWpF
LENBQUosQ0FDSXdPLEVBQWVuUCxDQURuQixDQUVJb1AsRUFBTWxPLENBQUFoQixPQUZWLENBSVNr
QixFQUFJLENBQWIsQ0FBZ0JBLENBQWhCLENBQW9CZ08sQ0FBcEIsQ0FBeUJoTyxDQUFBLEVBQXpC
LENBQ0VULENBQ0EsQ0FETU8sQ0FBQSxDQUFLRSxDQUFMLENBQ04sQ0FBSXBCLENBQUosR0FDRUEs
Q0FERixDQUNRLENBQUNtUCxDQUFELENBQWdCblAsQ0FBaEIsRUFBcUJXLENBQXJCLENBRFIsQ0FJ
RixPQUFLdU8sQ0FBQUEsQ0FBTCxFQUFzQnRPLENBQUEsQ0FBV1osQ0FBWCxDQUF0QixDQUNTZ0gs
RUFBQSxDQUFLbUksQ0FBTCxDQUFtQm5QLENBQW5CLENBRFQsQ0FHT0EsQ0FoQmlDLENBd0IxQ3FQ
LFFBQVNBLEdBQWEsQ0FBQ0MsQ0FBRCxDQUFRLENBRzVCLElBQUlqTCxFQUFPaUwsQ0FBQSxDQUFN
LENBQU4sQ0FDUEMsRUFBQUEsQ0FBVUQsQ0FBQSxDQUFNQSxDQUFBcFAsT0FBTixDQUFxQixDQUFy
QixDQUNkLEtBQUlzUCxFQUFhLENBQUNuTCxDQUFELENBRWpCLEdBQUcsQ0FDREEsQ0FBQSxDQUFP
QSxDQUFBb0wsWUFDUCxJQUFLcEwsQ0FBQUEsQ0FBTCxDQUFXLEtBQ1htTCxFQUFBM0osS0FBQSxD
QUFnQnhCLENBQWhCLENBSEMsQ0FBSCxNQUlTQSxDQUpUO0FBSWtCa0wsQ0FKbEIsQ0FNQSxPQUFP
MUcsRUFBQSxDQUFPMkcsQ0FBUCxDQWJxQixDQTRCOUI1SSxRQUFTQSxHQUFTLEVBQUcsQ0FDbkIs
TUFBT3pHLE9BQUFnRCxPQUFBLENBQWMsSUFBZCxDQURZLENBb0JyQnVNLFFBQVNBLEdBQWlCLENB
QUMvUCxDQUFELENBQVMsQ0FLakNnUSxRQUFTQSxFQUFNLENBQUMzUCxDQUFELENBQU02SyxDQUFO
LENBQVkrRSxDQUFaLENBQXFCLENBQ2xDLE1BQU81UCxFQUFBLENBQUk2SyxDQUFKLENBQVAsR0FB
cUI3SyxDQUFBLENBQUk2SyxDQUFKLENBQXJCLENBQWlDK0UsQ0FBQSxFQUFqQyxDQURrQyxDQUhw
QyxJQUFJQyxFQUFrQi9QLENBQUEsQ0FBTyxXQUFQLENBQXRCLENBQ0k0RixFQUFXNUYsQ0FBQSxD
QUFPLElBQVAsQ0FNWHNNLEVBQUFBLENBQVV1RCxDQUFBLENBQU9oUSxDQUFQLENBQWUsU0FBZixD
QUEwQlEsTUFBMUIsQ0FHZGlNLEVBQUEwRCxTQUFBLENBQW1CMUQsQ0FBQTBELFNBQW5CLEVBQXVD
aFEsQ0FFdkMsT0FBTzZQLEVBQUEsQ0FBT3ZELENBQVAsQ0FBZ0IsUUFBaEIsQ0FBMEIsUUFBUSxF
QUFHLENBRTFDLElBQUlsQixFQUFVLEVBcURkLE9BQU9SLFNBQWUsQ0FBQ0csQ0FBRCxDQUFPa0Ys
Q0FBUCxDQUFpQkMsQ0FBakIsQ0FBMkIsQ0FFN0MsR0FBYSxnQkFBYixHQUtzQm5GLENBTHRCLENB
Q0UsS0FBTW5GLEVBQUEsQ0FBUyxTQUFULENBSW9CaEYsUUFKcEIsQ0FBTixDQUtBcVAsQ0FBSixF
QUFnQjdFLENBQUFySyxlQUFBLENBQXVCZ0ssQ0FBdkIsQ0FBaEIsR0FDRUssQ0FBQSxDQUFRTCxD
QUFSLENBREYsQ0FDa0IsSUFEbEIsQ0FHQSxPQUFPOEUsRUFBQSxDQUFPekUsQ0FBUCxDQUFnQkws
Q0FBaEIsQ0FBc0IsUUFBUSxFQUFHLENBME90Q29GLFFBQVNBLEVBQVcsQ0FBQ0MsQ0FBRCxDQUFX
QyxDQUFYLENBQW1CQyxDQUFuQixDQUFpQ0MsQ0FBakMsQ0FBd0MsQ0FDckRBLENBQUwsR0FBWUEs
Q0FBWixDQUFvQkMsQ0FBcEIsQ0FDQSxPQUFPLFNBQVEsRUFBRyxDQUNoQkQsQ0FBQSxDQUFNRCxD
QUFOLEVBQXNCLE1BQXRCLENBQUEsQ0FBOEIsQ0FBQ0YsQ0FBRCxDQUFXQyxDQUFYLENBQW1CeE4s
U0FBbkIsQ0FBOUIsQ0FDQSxPQUFPNE4sRUFGUyxDQUZ3QyxDQWE1REMsUUFBU0EsRUFBMkIsQ0FB
Q04sQ0FBRCxDQUFXQyxDQUFYLENBQW1CLENBQ3JELE1BQU8sU0FBUSxDQUFDTSxDQUFELENBQWFD
LENBQWIsQ0FBOEIsQ0FDdkNBLENBQUosRUFBdUI5UCxDQUFBLENBQVc4UCxDQUFYLENBQXZCO0NB
QW9EQSxDQUFBQyxhQUFwRCxDQUFtRjlGLENBQW5GLENBQ0F5RixFQUFBekssS0FBQSxDQUFpQixD
QUFDcUssQ0FBRCxDQUFXQyxDQUFYLENBQW1CeE4sU0FBbkIsQ0FBakIsQ0FDQSxPQUFPNE4sRUFI
b0MsQ0FEUSxDQXRQdkQsR0FBS1IsQ0FBQUEsQ0FBTCxDQUNFLEtBQU1GLEVBQUEsQ0FBZ0IsT0FB
aEIsQ0FFaURoRixDQUZqRCxDQUFOLENBTUYsSUFBSXlGLEVBQWMsRUFBbEIsQ0FHSU0sRUFBZSxF
QUhuQixDQU1JQyxFQUFZLEVBTmhCLENBUUlsRyxFQUFTc0YsQ0FBQSxDQUFZLFdBQVosQ0FBeUIs
UUFBekIsQ0FBbUMsTUFBbkMsQ0FBMkNXLENBQTNDLENBUmIsQ0FXSUwsRUFBaUIsQ0FFbkJPLGFB
QWNSLENBRkssQ0FHbkJTLGNBQWVILENBSEksQ0FJbkJJLFdBQVlILENBSk8sQ0FlbkJkLFNBQVVB
LENBZlMsQ0F5Qm5CbEYsS0FBTUEsQ0F6QmEsQ0FzQ25CcUYsU0FBVU0sQ0FBQSxDQUE0QixVQUE1
QixDQUF3QyxVQUF4QyxDQXRDUyxDQWlEbkJaLFFBQVNZLENBQUEsQ0FBNEIsVUFBNUIsQ0FBd0Ms
U0FBeEMsQ0FqRFUsQ0E0RG5CUyxRQUFTVCxDQUFBLENBQTRCLFVBQTVCLENBQXdDLFNBQXhDLENB
NURVLENBdUVuQmpQLE1BQU8wTyxDQUFBLENBQVksVUFBWixDQUF3QixPQUF4QixDQXZFWSxDQW1G
bkJpQixTQUFVakIsQ0FBQSxDQUFZLFVBQVosQ0FBd0IsVUFBeEIsQ0FBb0MsU0FBcEMsQ0FuRlMs
Q0ErRm5Ca0IsVUFBV1gsQ0FBQSxDQUE0QixVQUE1QixDQUF3QyxXQUF4QyxDQS9GUSxDQWlJbkJZ
LFVBQVdaLENBQUEsQ0FBNEIsa0JBQTVCLENBQWdELFVBQWhELENBaklRLENBbUpuQmEsT0FBUWIs
Q0FBQSxDQUE0QixpQkFBNUIsQ0FBK0MsVUFBL0MsQ0FuSlcsQ0ErSm5CMUMsV0FBWTBDLENBQUEs
Q0FBNEIscUJBQTVCO0FBQW1ELFVBQW5ELENBL0pPLENBNEtuQmMsVUFBV2QsQ0FBQSxDQUE0Qixr
QkFBNUIsQ0FBZ0QsV0FBaEQsQ0E1S1EsQ0F5TG5CN0YsT0FBUUEsQ0F6TFcsQ0FxTW5CNEcsSUFB
S0EsUUFBUSxDQUFDQyxDQUFELENBQVEsQ0FDbkJYLENBQUFoTCxLQUFBLENBQWUyTCxDQUFmLENB
Q0EsT0FBTyxLQUZZLENBck1GLENBMk1qQnhCLEVBQUosRUFDRXJGLENBQUEsQ0FBT3FGLENBQVAs
Q0FHRixPQUFPTyxFQWxPK0IsQ0FBakMsQ0FYd0MsQ0F2RFAsQ0FBckMsQ0FkMEIsQ0FvZW5Da0Is
UUFBU0EsR0FBa0IsQ0FBQ3JGLENBQUQsQ0FBVSxDQUNuQzNKLENBQUEsQ0FBTzJKLENBQVAsQ0FB
Z0IsQ0FDZCxVQUFhNUIsRUFEQyxDQUVkLEtBQVFuRixFQUZNLENBR2QsT0FBVTVDLENBSEksQ0FJ
ZCxNQUFTRyxFQUpLLENBS2QsT0FBVTBELEVBTEksQ0FNZCxRQUFXdUMsQ0FORyxDQU9kLFFBQVdy
SSxDQVBHLENBUWQsU0FBWW1MLEVBUkUsQ0FTZCxLQUFRdkksQ0FUTSxDQVVkLEtBQVE0RCxFQVZN
LENBV2QsT0FBVVEsRUFYSSxDQVlkLFNBQVlJLEVBWkUsQ0FhZCxTQUFZdkUsRUFiRSxDQWNkLFlB
QWVNLENBZEQsQ0FlZCxVQUFhQyxDQWZDLENBZ0JkLFNBQVl0RCxDQWhCRSxDQWlCZCxXQUFjTSxD
QWpCQSxDQWtCZCxTQUFZc0IsQ0FsQkUsQ0FtQmQsU0FBWTRCLENBbkJFLENBb0JkLFVBQWFNLEVB
cEJDLENBcUJkLFFBQVc3RCxDQXJCRyxDQXNCZCxRQUFXbVIsRUF0QkcsQ0F1QmQsT0FBVXBQLEVB
dkJJLENBd0JkLFVBQWF5QyxDQXhCQyxDQXlCZCxVQUFhNE0sRUF6QkMsQ0EwQmQsVUFBYSxDQUFD
QyxRQUFTLENBQVYsQ0ExQkMsQ0EyQmQsZUFBa0JoRixFQTNCSixDQTRCZCxTQUFZOU0sQ0E1QkUs
Q0E2QmQsTUFBUytSLEVBN0JLLENBOEJkLG9CQUF1QnBGLEVBOUJULENBQWhCLENBaUNBcUY7RUFB
QSxDQUFnQnBDLEVBQUEsQ0FBa0IvUCxDQUFsQixDQUNoQixJQUFJLENBQ0ZtUyxFQUFBLENBQWMs
VUFBZCxDQURFLENBRUYsTUFBTzlJLENBQVAsQ0FBVSxDQUNWOEksRUFBQSxDQUFjLFVBQWQsQ0FB
MEIsRUFBMUIsQ0FBQTVCLFNBQUEsQ0FBdUMsU0FBdkMsQ0FBa0Q2QixFQUFsRCxDQURVLENBSVpE
LEVBQUEsQ0FBYyxJQUFkLENBQW9CLENBQUMsVUFBRCxDQUFwQixDQUFrQyxDQUFDLFVBQUQsQ0FD
aENFLFFBQWlCLENBQUN4RyxDQUFELENBQVcsQ0FFMUJBLENBQUEwRSxTQUFBLENBQWtCLENBQ2hC
K0IsY0FBZUMsRUFEQyxDQUFsQixDQUdBMUcsRUFBQTBFLFNBQUEsQ0FBa0IsVUFBbEIsQ0FBOEJp
QyxFQUE5QixDQUFBYixVQUFBLENBQ1ksQ0FDTmMsRUFBR0MsRUFERyxDQUVOQyxNQUFPQyxFQUZE
LENBR05DLFNBQVVELEVBSEosQ0FJTkUsS0FBTUMsRUFKQSxDQUtOQyxPQUFRQyxFQUxGLENBTU5D
LE9BQVFDLEVBTkYsQ0FPTkMsTUFBT0MsRUFQRCxDQVFOQyxPQUFRQyxFQVJGLENBU05DLE9BQVFD
LEVBVEYsQ0FVTkMsV0FBWUMsRUFWTixDQVdOQyxlQUFnQkMsRUFYVixDQVlOQyxRQUFTQyxFQVpI
LENBYU5DLFlBQWFDLEVBYlAsQ0FjTkMsV0FBWUMsRUFkTixDQWVOQyxRQUFTQyxFQWZILENBZ0JO
QyxhQUFjQyxFQWhCUixDQWlCTkMsT0FBUUMsRUFqQkYsQ0FrQk5DLE9BQVFDLEVBbEJGLENBbUJO
QyxLQUFNQyxFQW5CQSxDQW9CTkMsVUFBV0MsRUFwQkwsQ0FxQk5DLE9BQVFDLEVBckJGLENBc0JO
QyxjQUFlQyxFQXRCVCxDQXVCTkMsWUFBYUMsRUF2QlAsQ0F3Qk5DLFNBQVVDLEVBeEJKLENBeUJO
QyxPQUFRQyxFQXpCRixDQTBCTkMsUUFBU0MsRUExQkgsQ0EyQk5DLFNBQVVDLEVBM0JKO0FBNEJO
QyxhQUFjQyxFQTVCUixDQTZCTkMsZ0JBQWlCQyxFQTdCWCxDQThCTkMsVUFBV0MsRUE5QkwsQ0Er
Qk5DLGFBQWNDLEVBL0JSLENBZ0NOQyxRQUFTQyxFQWhDSCxDQWlDTkMsT0FBUUMsRUFqQ0YsQ0Fr
Q05DLFNBQVVDLEVBbENKLENBbUNOQyxRQUFTQyxFQW5DSCxDQW9DTkMsVUFBV0QsRUFwQ0wsQ0Fx
Q05FLFNBQVVDLEVBckNKLENBc0NOQyxXQUFZRCxFQXRDTixDQXVDTkUsVUFBV0MsRUF2Q0wsQ0F3
Q05DLFlBQWFELEVBeENQLENBeUNORSxVQUFXQyxFQXpDTCxDQTBDTkMsWUFBYUQsRUExQ1AsQ0Ey
Q05FLFFBQVNDLEVBM0NILENBNENOQyxlQUFnQkMsRUE1Q1YsQ0FEWixDQUFBaEcsVUFBQSxDQStD
WSxDQUNSbUQsVUFBVzhDLEVBREgsQ0EvQ1osQ0FBQWpHLFVBQUEsQ0FrRFlrRyxFQWxEWixDQUFB
bEcsVUFBQSxDQW1EWW1HLEVBbkRaLENBb0RBak0sRUFBQTBFLFNBQUEsQ0FBa0IsQ0FDaEJ3SCxj
QUFlQyxFQURDLENBRWhCQyxTQUFVQyxFQUZNLENBR2hCQyxlQUFnQkMsRUFIQSxDQUloQkMsZ0JB
QWlCQyxFQUpELENBS2hCQyxTQUFVQyxFQUxNLENBTWhCQyxjQUFlQyxFQU5DLENBT2hCQyxZQUFh
QyxFQVBHLENBUWhCQyxVQUFXQyxFQVJLLENBU2hCQyxrQkFBbUJDLEVBVEgsQ0FVaEJDLFFBQVND
LEVBVk8sQ0FXaEJDLGFBQWNDLEVBWEUsQ0FZaEJDLFVBQVdDLEVBWkssQ0FhaEJDLE1BQU9DLEVB
YlMsQ0FjaEJDLHFCQUFzQkMsRUFkTjtBQWVoQkMsMkJBQTRCQyxFQWZaLENBZ0JoQkMsYUFBY0Ms
RUFoQkUsQ0FpQmhCQyxVQUFXQyxFQWpCSyxDQWtCaEJDLEtBQU1DLEVBbEJVLENBbUJoQkMsT0FB
UUMsRUFuQlEsQ0FvQmhCQyxXQUFZQyxFQXBCSSxDQXFCaEJDLEdBQUlDLEVBckJZLENBc0JoQkMs
SUFBS0MsRUF0QlcsQ0F1QmhCQyxLQUFNQyxFQXZCVSxDQXdCaEJDLGFBQWNDLEVBeEJFLENBeUJo
QkMsU0FBVUMsRUF6Qk0sQ0EwQmhCQyxlQUFnQkMsRUExQkEsQ0EyQmhCQyxpQkFBa0JDLEVBM0JG
LENBNEJoQkMsY0FBZUMsRUE1QkMsQ0E2QmhCQyxTQUFVQyxFQTdCTSxDQThCaEJDLFFBQVNDLEVB
OUJPLENBK0JoQkMsTUFBT0MsRUEvQlMsQ0FnQ2hCQyxTQUFVQyxFQWhDTSxDQWlDaEJDLFVBQVdD
LEVBakNLLENBa0NoQkMsZUFBZ0JDLEVBbENBLENBQWxCLENBekQwQixDQURJLENBQWxDLENBekNt
QyxDQTBSckNDLFFBQVNBLEdBQVMsQ0FBQ2pSLENBQUQsQ0FBTyxDQUN2QixNQUFPQSxFQUFBeEIs
UUFBQSxDQUNHMFMsRUFESCxDQUN5QixRQUFRLENBQUNDLENBQUQsQ0FBSWhQLENBQUosQ0FBZUUs
Q0FBZixDQUF1QitPLENBQXZCLENBQStCLENBQ25FLE1BQU9BLEVBQUEsQ0FBUy9PLENBQUFnUCxZ
QUFBLEVBQVQsQ0FBZ0NoUCxDQUQ0QixDQURoRSxDQUFBN0QsUUFBQSxDQUlHOFMsRUFKSCxDQUlv
QixPQUpwQixDQURnQixDQWdDekJDLFFBQVNBLEdBQWlCLENBQUMvWCxDQUFELENBQU8sQ0FHM0Jq
RSxDQUFBQSxDQUFXaUUsQ0FBQWpFLFNBQ2YsT0FBT0EsRUFBUCxHQUFvQkMsRUFBcEIsRUFBeUMs
Q0FBQ0QsQ0FBMUMsRUE5eUJ1QmljLENBOHlCdkIsR0FBc0RqYyxDQUp2QixDQWNqQ2tjLFFBQVNB
LEdBQW1CLENBQUNuVCxDQUFELENBQU96SSxDQUFQLENBQWdCLENBQUEsSUFDdEM2YixDQURzQyxD
QUNqQ2pSLENBRGlDLENBRXRDa1IsRUFBVzliLENBQUErYix1QkFBQSxFQUYyQixDQUd0Q25OLEVB
QVEsRUFFWixJQXRCUW9OLEVBQUE5VyxLQUFBLENBc0JhdUQsQ0F0QmIsQ0FzQlIsQ0FHTyxDQUVM
b1QsQ0FBQTtBQUFNQSxDQUFOLEVBQWFDLENBQUFHLFlBQUEsQ0FBcUJqYyxDQUFBa2MsY0FBQSxD
QUFzQixLQUF0QixDQUFyQixDQUNidFIsRUFBQSxDQUFNLENBQUN1UixFQUFBQyxLQUFBLENBQXFC
M1QsQ0FBckIsQ0FBRCxFQUErQixDQUFDLEVBQUQsQ0FBSyxFQUFMLENBQS9CLEVBQXlDLENBQXpD
LENBQUFpRSxZQUFBLEVBQ04yUCxFQUFBLENBQU9DLEVBQUEsQ0FBUTFSLENBQVIsQ0FBUCxFQUF1
QjBSLEVBQUFDLFNBQ3ZCVixFQUFBVyxVQUFBLENBQWdCSCxDQUFBLENBQUssQ0FBTCxDQUFoQixD
QUEwQjVULENBQUFFLFFBQUEsQ0FBYThULEVBQWIsQ0FBK0IsV0FBL0IsQ0FBMUIsQ0FBd0VKLENB
QUEsQ0FBSyxDQUFMLENBSXhFLEtBREEzYixDQUNBLENBREkyYixDQUFBLENBQUssQ0FBTCxDQUNK
LENBQU8zYixDQUFBLEVBQVAsQ0FBQSxDQUNFbWIsQ0FBQSxDQUFNQSxDQUFBYSxVQUdSOU4sRUFB
QSxDQUFRekksRUFBQSxDQUFPeUksQ0FBUCxDQUFjaU4sQ0FBQWMsV0FBZCxDQUVSZCxFQUFBLENB
QU1DLENBQUFjLFdBQ05mLEVBQUFnQixZQUFBLENBQWtCLEVBaEJiLENBSFAsSUFFRWpPLEVBQUF6
SixLQUFBLENBQVduRixDQUFBOGMsZUFBQSxDQUF1QnJVLENBQXZCLENBQVgsQ0FxQkZxVCxFQUFB
ZSxZQUFBLENBQXVCLEVBQ3ZCZixFQUFBVSxVQUFBLENBQXFCLEVBQ3JCMWMsRUFBQSxDQUFROE8s
Q0FBUixDQUFlLFFBQVEsQ0FBQ2pMLENBQUQsQ0FBTyxDQUM1Qm1ZLENBQUFHLFlBQUEsQ0FBcUJ0
WSxDQUFyQixDQUQ0QixDQUE5QixDQUlBLE9BQU9tWSxFQWxDbUMsQ0FxRDVDL04sUUFBU0EsRUFB
TSxDQUFDM0osQ0FBRCxDQUFVLENBQ3ZCLEdBQUlBLENBQUosV0FBdUIySixFQUF2QixDQUNFLE1B
QU8zSixFQUdULEtBQUkyWSxDQUVBbmQsRUFBQSxDQUFTd0UsQ0FBVCxDQUFKLEdBQ0VBLENBQ0Es
Q0FEVTRZLENBQUEsQ0FBSzVZLENBQUwsQ0FDVixDQUFBMlksQ0FBQSxDQUFjLENBQUEsQ0FGaEIs
Q0FJQSxJQUFNLEVBQUEsSUFBQSxXQUFnQmhQLEVBQWhCLENBQU4sQ0FBK0IsQ0FDN0IsR0FBSWdQ
LENBQUosRUFBd0MsR0FBeEMsRUFBbUIzWSxDQUFBdUIsT0FBQSxDQUFlLENBQWYsQ0FBbkIsQ0FD
RSxLQUFNc1gsR0FBQSxDQUFhLE9BQWIsQ0FBTixDQUVGLE1BQU8sS0FBSWxQLENBQUosQ0FBVzNK
LENBQVgsQ0FKc0IsQ0FPL0IsR0FBSTJZLENBQUosQ0FBaUIsQ0FqQ2pCL2MsQ0FBQSxDQUFxQmQs
Q0FDckI7SUFBSWdlLENBR0YsRUFBQSxDQURGLENBQUtBLENBQUwsQ0FBY0MsRUFBQWYsS0FBQSxD
QUF1QjNULENBQXZCLENBQWQsRUFDUyxDQUFDekksQ0FBQWtjLGNBQUEsQ0FBc0JnQixDQUFBLENB
QU8sQ0FBUCxDQUF0QixDQUFELENBRFQsQ0FJQSxDQUFLQSxDQUFMLENBQWN0QixFQUFBLENBQW9C
blQsQ0FBcEIsQ0FBMEJ6SSxDQUExQixDQUFkLEVBQ1NrZCxDQUFBUCxXQURULENBSU8sRUFzQlUs
Q0FDZlMsRUFBQSxDQUFlLElBQWYsQ0FBcUIsQ0FBckIsQ0FuQnFCLENBeUJ6QkMsUUFBU0EsR0FB
VyxDQUFDalosQ0FBRCxDQUFVLENBQzVCLE1BQU9BLEVBQUFrWixVQUFBLENBQWtCLENBQUEsQ0FB
bEIsQ0FEcUIsQ0FJOUJDLFFBQVNBLEdBQVksQ0FBQ25aLENBQUQsQ0FBVW9aLENBQVYsQ0FBMkIs
Q0FDekNBLENBQUwsRUFBc0JDLEVBQUEsQ0FBaUJyWixDQUFqQixDQUV0QixJQUFJQSxDQUFBc1os
aUJBQUosQ0FFRSxJQURBLElBQUlDLEVBQWN2WixDQUFBc1osaUJBQUEsQ0FBeUIsR0FBekIsQ0FB
bEIsQ0FDU2hkLEVBQUksQ0FEYixDQUNnQmtkLEVBQUlELENBQUFuZSxPQUFwQixDQUF3Q2tCLENB
QXhDLENBQTRDa2QsQ0FBNUMsQ0FBK0NsZCxDQUFBLEVBQS9DLENBQ0UrYyxFQUFBLENBQWlCRSxD
QUFBLENBQVlqZCxDQUFaLENBQWpCLENBTjBDLENBV2hEbWQsUUFBU0EsR0FBUyxDQUFDelosQ0FB
RCxDQUFVMFosQ0FBVixDQUFnQnRYLENBQWhCLENBQW9CdVgsQ0FBcEIsQ0FBaUMsQ0FDakQsR0FB
STdhLENBQUEsQ0FBVTZhLENBQVYsQ0FBSixDQUE0QixLQUFNZCxHQUFBLENBQWEsU0FBYixDQUFO
LENBRzVCLElBQUl4UCxHQURBdVEsQ0FDQXZRLENBRGV3USxFQUFBLENBQW1CN1osQ0FBbkIsQ0FD
ZnFKLEdBQXlCdVEsQ0FBQXZRLE9BQTdCLENBQ0l5USxFQUFTRixDQUFURSxFQUF5QkYsQ0FBQUUs
T0FFN0IsSUFBS0EsQ0FBTCxDQUVBLEdBQUtKLENBQUwsQ0FRRWhlLENBQUEsQ0FBUWdlLENBQUE1
WixNQUFBLENBQVcsR0FBWCxDQUFSLENBQXlCLFFBQVEsQ0FBQzRaLENBQUQsQ0FBTyxDQUN0QyxH
QUFJNWEsQ0FBQSxDQUFVc0QsQ0FBVixDQUFKLENBQW1CLENBQ2pCLElBQUkyWCxFQUFjMVEsQ0FB
QSxDQUFPcVEsQ0FBUCxDQUNsQnhaLEdBQUEsQ0FBWTZaLENBQVosRUFBMkIsRUFBM0IsQ0FBK0Iz
WCxDQUEvQixDQUNBLElBQUkyWCxDQUFKLEVBQXdDLENBQXhDLENBQW1CQSxDQUFBM2UsT0FBbkIs
Q0FDRSxNQUplLENBUUc0RSxDQTdMdEJnYSxvQkFBQSxDQTZMK0JOLENBN0wvQixDQTZMcUNJLENB
N0xyQyxDQUFzQyxDQUFBLENBQXRDLENBOExBLFFBQU96USxDQUFBLENBQU9xUSxDQUFQLENBVitC
LENBQXhDLENBUkYsS0FDRSxLQUFLQSxDQUFMLEdBQWFyUSxFQUFiLENBQ2UsVUFHYixHQUhJcVEs
Q0FHSixFQUZ3QjFaLENBL0t4QmdhLG9CQUFBLENBK0tpQ04sQ0EvS2pDO0FBK0t1Q0ksQ0EvS3ZD
LENBQXNDLENBQUEsQ0FBdEMsQ0FpTEEsQ0FBQSxPQUFPelEsQ0FBQSxDQUFPcVEsQ0FBUCxDQWRz
QyxDQWdDbkRMLFFBQVNBLEdBQWdCLENBQUNyWixDQUFELENBQVUrRixDQUFWLENBQWdCLENBQ3ZD
LElBQUlrVSxFQUFZamEsQ0FBQWthLE1BQWhCLENBQ0lOLEVBQWVLLENBQWZMLEVBQTRCTyxFQUFB
LENBQVFGLENBQVIsQ0FFNUJMLEVBQUosR0FDTTdULENBQUosQ0FDRSxPQUFPNlQsQ0FBQXpTLEtB
QUEsQ0FBa0JwQixDQUFsQixDQURULEVBS0k2VCxDQUFBRSxPQU9KLEdBTk1GLENBQUF2USxPQUFB
SSxTQUdKLEVBRkVtUSxDQUFBRSxPQUFBLENBQW9CLEVBQXBCLENBQXdCLFVBQXhCLENBRUYsQ0FB
QUwsRUFBQSxDQUFVelosQ0FBVixDQUdGLEVBREEsT0FBT21hLEVBQUEsQ0FBUUYsQ0FBUixDQUNQ
LENBQUFqYSxDQUFBa2EsTUFBQSxDQUFnQm5mLENBWmhCLENBREYsQ0FKdUMsQ0FzQnpDOGUsUUFB
U0EsR0FBa0IsQ0FBQzdaLENBQUQsQ0FBVW9hLENBQVYsQ0FBNkIsQ0FBQSxJQUNsREgsRUFBWWph
LENBQUFrYSxNQURzQyxDQUVsRE4sRUFBZUssQ0FBZkwsRUFBNEJPLEVBQUEsQ0FBUUYsQ0FBUixD
QUU1QkcsRUFBSixFQUEwQlIsQ0FBQUEsQ0FBMUIsR0FDRTVaLENBQUFrYSxNQUNBLENBRGdCRCxD
QUNoQixDQXBOeUIsRUFBRUksRUFvTjNCLENBQUFULENBQUEsQ0FBZU8sRUFBQSxDQUFRRixDQUFS
LENBQWYsQ0FBb0MsQ0FBQzVRLE9BQVEsRUFBVCxDQUFhbEMsS0FBTSxFQUFuQixDQUF1QjJTLE9B
QVEvZSxDQUEvQixDQUZ0QyxDQUtBLE9BQU82ZSxFQVQrQyxDQWF4RFUsUUFBU0EsR0FBVSxDQUFD
dGEsQ0FBRCxDQUFVbkUsQ0FBVixDQUFlWSxDQUFmLENBQXNCLENBQ3ZDLEdBQUk2YSxFQUFBLENB
QWtCdFgsQ0FBbEIsQ0FBSixDQUFnQyxDQUU5QixJQUFJdWEsRUFBaUJ6YixDQUFBLENBQVVyQyxD
QUFWLENBQXJCLENBQ0krZCxFQUFpQixDQUFDRCxDQUFsQkMsRUFBb0MzZSxDQUFwQzJlLEVBQTJD
LENBQUNwZCxDQUFBLENBQVN2QixDQUFULENBRGhELENBRUk0ZSxFQUFhLENBQUM1ZSxDQUVkc0ws
RUFBQUEsRUFEQXlTLENBQ0F6UyxDQURlMFMsRUFBQSxDQUFtQjdaLENBQW5CLENBQTRCLENBQUN3
YSxDQUE3QixDQUNmclQsR0FBdUJ5UyxDQUFBelMsS0FFM0IsSUFBSW9ULENBQUosQ0FDRXBULENB
QUEsQ0FBS3RMLENBQUwsQ0FBQSxDQUFZWSxDQURkLEtBRU8sQ0FDTCxHQUFJZ2UsQ0FBSixDQUNF
LE1BQU90VCxFQUVQLElBQUlxVCxDQUFKLENBRUUsTUFBT3JULEVBQVAsRUFBZUEsQ0FBQSxDQUFL
dEwsQ0FBTCxDQUVmOEIsRUFBQSxDQUFPd0osQ0FBUCxDQUFhdEwsQ0FBYixDQVJDLENBVnVCLENB
RE8sQ0EwQnpDNmUsUUFBU0EsR0FBYyxDQUFDMWEsQ0FBRCxDQUFVMmEsQ0FBVixDQUFvQixDQUN6
QyxNQUFLM2EsRUFBQXdGLGFBQUwsQ0FFcUMsRUFGckMsQ0FDUWpCLENBQUMsR0FBREEsRUFBUXZF
LENBQUF3RixhQUFBLENBQXFCLE9BQXJCLENBQVJqQixFQUF5QyxFQUF6Q0E7QUFBK0MsR0FBL0NB
LFNBQUEsQ0FBNEQsU0FBNUQsQ0FBdUUsR0FBdkUsQ0FBQWxFLFFBQUEsQ0FDSSxHQURKLENBQ1Vz
YSxDQURWLENBQ3FCLEdBRHJCLENBRFIsQ0FBa0MsQ0FBQSxDQURPLENBTTNDQyxRQUFTQSxHQUFp
QixDQUFDNWEsQ0FBRCxDQUFVNmEsQ0FBVixDQUFzQixDQUMxQ0EsQ0FBSixFQUFrQjdhLENBQUE4
YSxhQUFsQixFQUNFcGYsQ0FBQSxDQUFRbWYsQ0FBQS9hLE1BQUEsQ0FBaUIsR0FBakIsQ0FBUixD
QUErQixRQUFRLENBQUNpYixDQUFELENBQVcsQ0FDaEQvYSxDQUFBOGEsYUFBQSxDQUFxQixPQUFy
QixDQUE4QmxDLENBQUEsQ0FDMUJyVSxDQUFDLEdBQURBLEVBQVF2RSxDQUFBd0YsYUFBQSxDQUFx
QixPQUFyQixDQUFSakIsRUFBeUMsRUFBekNBLEVBQStDLEdBQS9DQSxTQUFBLENBQ1MsU0FEVCxD
QUNvQixHQURwQixDQUFBQSxRQUFBLENBRVMsR0FGVCxDQUVlcVUsQ0FBQSxDQUFLbUMsQ0FBTCxD
QUZmLENBRWdDLEdBRmhDLENBRXFDLEdBRnJDLENBRDBCLENBQTlCLENBRGdELENBQWxELENBRjRD
LENBWWhEQyxRQUFTQSxHQUFjLENBQUNoYixDQUFELENBQVU2YSxDQUFWLENBQXNCLENBQzNDLEdB
QUlBLENBQUosRUFBa0I3YSxDQUFBOGEsYUFBbEIsQ0FBd0MsQ0FDdEMsSUFBSUcsRUFBa0IxVyxD
QUFDLEdBQURBLEVBQVF2RSxDQUFBd0YsYUFBQSxDQUFxQixPQUFyQixDQUFSakIsRUFBeUMsRUFB
ekNBLEVBQStDLEdBQS9DQSxTQUFBLENBQ1csU0FEWCxDQUNzQixHQUR0QixDQUd0QjdJLEVBQUEs
Q0FBUW1mLENBQUEvYSxNQUFBLENBQWlCLEdBQWpCLENBQVIsQ0FBK0IsUUFBUSxDQUFDaWIsQ0FB
RCxDQUFXLENBQ2hEQSxDQUFBLENBQVduQyxDQUFBLENBQUttQyxDQUFMLENBQzRDLEdBQXZELEdB
QUlFLENBQUE1YSxRQUFBLENBQXdCLEdBQXhCLENBQThCMGEsQ0FBOUIsQ0FBeUMsR0FBekMsQ0FB
SixHQUNFRSxDQURGLEVBQ3FCRixDQURyQixDQUNnQyxHQURoQyxDQUZnRCxDQUFsRCxDQU9BL2Es
RUFBQThhLGFBQUEsQ0FBcUIsT0FBckIsQ0FBOEJsQyxDQUFBLENBQUtxQyxDQUFMLENBQTlCLENB
WHNDLENBREcsQ0FpQjdDakMsUUFBU0EsR0FBYyxDQUFDa0MsQ0FBRCxDQUFPQyxDQUFQLENBQWlC
LENBR3RDLEdBQUlBLENBQUosQ0FHRSxHQUFJQSxDQUFBN2YsU0FBSixDQUNFNGYsQ0FBQSxDQUFL
QSxDQUFBOWYsT0FBQSxFQUFMLENBQUEsQ0FBc0IrZixDQUR4QixLQUVPLENBQ0wsSUFBSS9mO0FB
QVMrZixDQUFBL2YsT0FHYixJQUFzQixRQUF0QixHQUFJLE1BQU9BLEVBQVgsRUFBa0MrZixDQUFB
dGdCLE9BQWxDLEdBQXNEc2dCLENBQXRELENBQ0UsSUFBSS9mLENBQUosQ0FDRSxJQUFTLElBQUFr
QixFQUFJLENBQWIsQ0FBZ0JBLENBQWhCLENBQW9CbEIsQ0FBcEIsQ0FBNEJrQixDQUFBLEVBQTVC
LENBQ0U0ZSxDQUFBLENBQUtBLENBQUE5ZixPQUFBLEVBQUwsQ0FBQSxDQUFzQitmLENBQUEsQ0FB
UzdlLENBQVQsQ0FGMUIsQ0FERixJQU9FNGUsRUFBQSxDQUFLQSxDQUFBOWYsT0FBQSxFQUFMLENB
QUEsQ0FBc0IrZixDQVhuQixDQVI2QixDQTBCeENDLFFBQVNBLEdBQWdCLENBQUNwYixDQUFELENB
QVUrRixDQUFWLENBQWdCLENBQ3ZDLE1BQU9zVixHQUFBLENBQW9CcmIsQ0FBcEIsQ0FBNkIsR0FB
N0IsRUFBb0MrRixDQUFwQyxFQUE0QyxjQUE1QyxFQUE4RCxZQUE5RCxDQURnQyxDQUl6Q3NWLFFB
QVNBLEdBQW1CLENBQUNyYixDQUFELENBQVUrRixDQUFWLENBQWdCdEosQ0FBaEIsQ0FBdUIsQ0Fu
akMxQjhhLENBc2pDdkIsRUFBSXZYLENBQUExRSxTQUFKLEdBQ0UwRSxDQURGLENBQ1lBLENBQUFz
YixnQkFEWixDQUtBLEtBRklDLENBRUosQ0FGWTlmLENBQUEsQ0FBUXNLLENBQVIsQ0FBQSxDQUFn
QkEsQ0FBaEIsQ0FBdUIsQ0FBQ0EsQ0FBRCxDQUVuQyxDQUFPL0YsQ0FBUCxDQUFBLENBQWdCLENB
Q2QsSUFEYyxJQUNMMUQsRUFBSSxDQURDLENBQ0VhLEVBQUtvZSxDQUFBbmdCLE9BQXJCLENBQW1D
a0IsQ0FBbkMsQ0FBdUNhLENBQXZDLENBQTJDYixDQUFBLEVBQTNDLENBQ0UsSUFBS0csQ0FBTCxD
QUFhc0gsQ0FBQW9ELEtBQUEsQ0FBWW5ILENBQVosQ0FBcUJ1YixDQUFBLENBQU1qZixDQUFOLENB
QXJCLENBQWIsSUFBaUR2QixDQUFqRCxDQUE0RCxNQUFPMEIsRUFNckV1RCxFQUFBLENBQVVBLENB
QUF3YixXQUFWLEVBbGtDOEJDLEVBa2tDOUIsR0FBaUN6YixDQUFBMUUsU0FBakMsRUFBcUYwRSxD
QUFBMGIsS0FSdkUsQ0FSaUMsQ0FvQm5EQyxRQUFTQSxHQUFXLENBQUMzYixDQUFELENBQVUsQ0FF
NUIsSUFEQW1aLEVBQUEsQ0FBYW5aLENBQWIsQ0FBc0IsQ0FBQSxDQUF0QixDQUNBLENBQU9BLENB
QUF3WSxXQUFQLENBQUEsQ0FDRXhZLENBQUE0YixZQUFBLENBQW9CNWIsQ0FBQXdZLFdBQXBCLENB
SDBCLENBTzlCcUQsUUFBU0EsR0FBWSxDQUFDN2IsQ0FBRCxDQUFVOGIsQ0FBVixDQUFvQixDQUNs
Q0EsQ0FBTCxFQUFlM0MsRUFBQSxDQUFhblosQ0FBYixDQUNmLEtBQUk3QixFQUFTNkIsQ0FBQXdi
LFdBQ1RyZCxFQUFKLEVBQVlBLENBQUF5ZCxZQUFBLENBQW1CNWIsQ0FBbkIsQ0FIMkIsQ0FPekMr
YixRQUFTQSxHQUFvQixDQUFDQyxDQUFEO0FBQVNDLENBQVQsQ0FBYyxDQUN6Q0EsQ0FBQSxDQUFN
QSxDQUFOLEVBQWFwaEIsQ0FDYixJQUFnQyxVQUFoQyxHQUFJb2hCLENBQUFuaEIsU0FBQW9oQixX
QUFKLENBSUVELENBQUFFLFdBQUEsQ0FBZUgsQ0FBZixDQUpGLEtBT0VqWSxFQUFBLENBQU9rWSxD
QUFQLENBQUFwVCxHQUFBLENBQWUsTUFBZixDQUF1Qm1ULENBQXZCLENBVHVDLENBMEUzQ0ksUUFB
U0EsR0FBa0IsQ0FBQ3BjLENBQUQsQ0FBVStGLENBQVYsQ0FBZ0IsQ0FFekMsSUFBSXNXLEVBQWND
LEVBQUEsQ0FBYXZXLENBQUF1QyxZQUFBLEVBQWIsQ0FHbEIsT0FBTytULEVBQVAsRUFBc0JFLEVB
QUEsQ0FBaUJ4YyxFQUFBLENBQVVDLENBQVYsQ0FBakIsQ0FBdEIsRUFBOERxYyxDQUxyQixDQVEz
Q0csUUFBU0EsR0FBa0IsQ0FBQ3hjLENBQUQsQ0FBVStGLENBQVYsQ0FBZ0IsQ0FDekMsSUFBSXZH
LEVBQVdRLENBQUFSLFNBQ2YsUUFBcUIsT0FBckIsR0FBUUEsQ0FBUixFQUE2QyxVQUE3QyxHQUFn
Q0EsQ0FBaEMsR0FBNERpZCxFQUFBLENBQWExVyxDQUFiLENBRm5CLENBa0wzQzJXLFFBQVNBLEdB
QWtCLENBQUMxYyxDQUFELENBQVVxSixDQUFWLENBQWtCLENBQzNDLElBQUlzVCxFQUFlQSxRQUFR
LENBQUNDLENBQUQsQ0FBUWxELENBQVIsQ0FBYyxDQUV2Q2tELENBQUFDLG1CQUFBLENBQTJCQyxR
QUFRLEVBQUcsQ0FDcEMsTUFBT0YsRUFBQUcsaUJBRDZCLENBSXRDLEtBQUlDLEVBQVczVCxDQUFB
LENBQU9xUSxDQUFQLEVBQWVrRCxDQUFBbEQsS0FBZixDQUFmLENBQ0l1RCxFQUFpQkQsQ0FBQSxD
QUFXQSxDQUFBNWhCLE9BQVgsQ0FBNkIsQ0FFbEQsSUFBSzZoQixDQUFMLENBQUEsQ0FFQSxHQUFJ
cGUsQ0FBQSxDQUFZK2QsQ0FBQU0sNEJBQVosQ0FBSixDQUFvRCxDQUNsRCxJQUFJQyxFQUFtQ1As
Q0FBQVEseUJBQ3ZDUixFQUFBUSx5QkFBQSxDQUFpQ0MsUUFBUSxFQUFHLENBQzFDVCxDQUFBTSw0
QkFBQTtBQUFvQyxDQUFBLENBRWhDTixFQUFBVSxnQkFBSixFQUNFVixDQUFBVSxnQkFBQSxFQUdF
SCxFQUFKLEVBQ0VBLENBQUFuaEIsS0FBQSxDQUFzQzRnQixDQUF0QyxDQVJ3QyxDQUZNLENBZXBE
QSxDQUFBVyw4QkFBQSxDQUFzQ0MsUUFBUSxFQUFHLENBQy9DLE1BQTZDLENBQUEsQ0FBN0MsR0FB
T1osQ0FBQU0sNEJBRHdDLENBSzNCLEVBQXRCLENBQUtELENBQUwsR0FDRUQsQ0FERixDQUNhMWIs
RUFBQSxDQUFZMGIsQ0FBWixDQURiLENBSUEsS0FBUyxJQUFBMWdCLEVBQUksQ0FBYixDQUFnQkEs
Q0FBaEIsQ0FBb0IyZ0IsQ0FBcEIsQ0FBb0MzZ0IsQ0FBQSxFQUFwQyxDQUNPc2dCLENBQUFXLDhC
QUFBLEVBQUwsRUFDRVAsQ0FBQSxDQUFTMWdCLENBQVQsQ0FBQU4sS0FBQSxDQUFpQmdFLENBQWpC
LENBQTBCNGMsQ0FBMUIsQ0E1QkosQ0FUdUMsQ0E0Q3pDRCxFQUFBcFQsS0FBQSxDQUFvQnZKLENB
Q3BCLE9BQU8yYyxFQTlDb0MsQ0F3UzdDaEcsUUFBU0EsR0FBZ0IsRUFBRyxDQUMxQixJQUFBOEcs
S0FBQSxDQUFZQyxRQUFpQixFQUFHLENBQzlCLE1BQU8vZixFQUFBLENBQU9nTSxDQUFQLENBQWUs
Q0FDcEJnVSxTQUFVQSxRQUFRLENBQUNwZSxDQUFELENBQU9xZSxDQUFQLENBQWdCLENBQzVCcmUs
Q0FBQUcsS0FBSixHQUFlSCxDQUFmLENBQXNCQSxDQUFBLENBQUssQ0FBTCxDQUF0QixDQUNBLE9B
QU9tYixHQUFBLENBQWVuYixDQUFmLENBQXFCcWUsQ0FBckIsQ0FGeUIsQ0FEZCxDQUtwQkMsU0FB
VUEsUUFBUSxDQUFDdGUsQ0FBRCxDQUFPcWUsQ0FBUCxDQUFnQixDQUM1QnJlLENBQUFHLEtBQUos
R0FBZUgsQ0FBZixDQUFzQkEsQ0FBQSxDQUFLLENBQUwsQ0FBdEIsQ0FDQSxPQUFPeWIsR0FBQSxD
QUFlemIsQ0FBZixDQUFxQnFlLENBQXJCLENBRnlCLENBTGQsQ0FTcEJFLFlBQWFBLFFBQVEsQ0FB
Q3ZlLENBQUQsQ0FBT3FlLENBQVAsQ0FBZ0IsQ0FDL0JyZSxDQUFBRyxLQUFKLEdBQWVILENBQWYs
Q0FBc0JBLENBQUEsQ0FBSyxDQUFMLENBQXRCLENBQ0EsT0FBT3FiLEdBQUEsQ0FBa0JyYixDQUFs
QixDQUF3QnFlLENBQXhCLENBRjRCLENBVGpCLENBQWYsQ0FEdUIsQ0FETixDQStCNUJHLFFBQVNB
LEdBQU8sQ0FBQzdpQixDQUFELENBQU04aUIsQ0FBTixDQUFpQixDQUMvQixJQUFJbmlCLEVBQU1Y
LENBQU5XLEVBQWFYLENBQUE0QixVQUVqQjtHQUFJakIsQ0FBSixDQUlFLE1BSG1CLFVBR1pBLEdB
SEgsTUFBT0EsRUFHSkEsR0FGTEEsQ0FFS0EsQ0FGQ1gsQ0FBQTRCLFVBQUEsRUFFRGpCLEVBQUFB
LENBR0xvaUIsRUFBQUEsQ0FBVSxNQUFPL2lCLEVBT3JCLE9BTEVXLEVBS0YsQ0FOZSxVQUFmLEVB
QUlvaUIsQ0FBSixFQUF5QyxRQUF6QyxFQUE4QkEsQ0FBOUIsRUFBNkQsSUFBN0QsR0FBcUQvaUIs
Q0FBckQsQ0FDUUEsQ0FBQTRCLFVBRFIsQ0FDd0JtaEIsQ0FEeEIsQ0FDa0MsR0FEbEMsQ0FDd0Ms
Q0FBQ0QsQ0FBRCxFQUFjdGhCLEVBQWQsR0FEeEMsQ0FHUXVoQixDQUhSLENBR2tCLEdBSGxCLENB
R3dCL2lCLENBZE8sQ0F1QmpDZ2pCLFFBQVNBLEdBQU8sQ0FBQy9kLENBQUQsQ0FBUWdlLENBQVIs
Q0FBcUIsQ0FDbkMsR0FBSUEsQ0FBSixDQUFpQixDQUNmLElBQUl4aEIsRUFBTSxDQUNWLEtBQUFE
LFFBQUEsQ0FBZTBoQixRQUFRLEVBQUcsQ0FDeEIsTUFBTyxFQUFFemhCLENBRGUsQ0FGWCxDQU1q
QmpCLENBQUEsQ0FBUXlFLENBQVIsQ0FBZSxJQUFBa2UsSUFBZixDQUF5QixJQUF6QixDQVBtQyxD
QWdIckNDLFFBQVNBLEdBQU0sQ0FBQ2xjLENBQUQsQ0FBSyxDQUtsQixNQUFBLENBREltYyxDQUNK
LENBRmFuYyxDQUFBekQsU0FBQSxFQUFBNEYsUUFBQWlhLENBQXNCQyxFQUF0QkQsQ0FBc0MsRUFB
dENBLENBQ0ZyZCxNQUFBLENBQWF1ZCxFQUFiLENBQ1gsRUFDUyxXQURULENBQ3VCbmEsQ0FBQ2dh
LENBQUEsQ0FBSyxDQUFMLENBQURoYSxFQUFZLEVBQVpBLFNBQUEsQ0FBd0IsV0FBeEIsQ0FBcUMs
R0FBckMsQ0FEdkIsQ0FDbUUsR0FEbkUsQ0FHTyxJQVJXLENBa2lCcEJzQyxRQUFTQSxHQUFjLENB
QUM4WCxDQUFELENBQWdCeFksQ0FBaEIsQ0FBMEIsQ0F1Qy9DeVksUUFBU0EsRUFBYSxDQUFDQyxD
QUFELENBQVcsQ0FDL0IsTUFBTyxTQUFRLENBQUNoakIsQ0FBRCxDQUFNWSxDQUFOLENBQWEsQ0FD
MUIsR0FBSVcsQ0FBQSxDQUFTdkIsQ0FBVCxDQUFKLENBQ0VILENBQUEsQ0FBUUcsQ0FBUixDQUFh
VSxFQUFBLENBQWNzaUIsQ0FBZCxDQUFiLENBREYsS0FHRSxPQUFPQSxFQUFBLENBQVNoakIsQ0FB
VCxDQUFjWSxDQUFkLENBSmlCLENBREcsQ0FVakMyTyxRQUFTQSxFQUFRLENBQUNyRixDQUFELENB
QU8rWSxDQUFQLENBQWtCLENBQ2pDN1UsRUFBQSxDQUF3QmxFLENBQXhCLENBQThCLFNBQTlCLENB
Q0EsSUFBSWpLLENBQUEsQ0FBV2dqQixDQUFYLENBQUosRUFBNkJyakIsQ0FBQSxDQUFRcWpCLENB
QVIsQ0FBN0IsQ0FDRUEsQ0FBQSxDQUFZQyxDQUFBQyxZQUFBLENBQTZCRixDQUE3QixDQUVkO0dB
QUtyQixDQUFBcUIsQ0FBQXJCLEtBQUwsQ0FDRSxLQUFNMVMsR0FBQSxDQUFnQixNQUFoQixDQUEy
RWhGLENBQTNFLENBQU4sQ0FFRixNQUFPa1osRUFBQSxDQUFjbFosQ0FBZCxDQXREWW1aLFVBc0Ra
LENBQVAsQ0FBOENKLENBUmIsQ0FXbkNLLFFBQVNBLEVBQWtCLENBQUNwWixDQUFELENBQU8rRSxD
QUFQLENBQWdCLENBQ3pDLE1BQU9zVSxTQUE0QixFQUFHLENBQ3BDLElBQUlDLEVBQVNDLENBQUF4
WSxPQUFBLENBQXdCZ0UsQ0FBeEIsQ0FBaUMsSUFBakMsQ0FDYixJQUFJak0sQ0FBQSxDQUFZd2dC
LENBQVosQ0FBSixDQUNFLEtBQU10VSxHQUFBLENBQWdCLE9BQWhCLENBQXlGaEYsQ0FBekYsQ0FB
TixDQUVGLE1BQU9zWixFQUw2QixDQURHLENBVTNDdlUsUUFBU0EsRUFBTyxDQUFDL0UsQ0FBRCxD
QUFPd1osQ0FBUCxDQUFrQkMsQ0FBbEIsQ0FBMkIsQ0FDekMsTUFBT3BVLEVBQUEsQ0FBU3JGLENB
QVQsQ0FBZSxDQUNwQjBYLEtBQWtCLENBQUEsQ0FBWixHQUFBK0IsQ0FBQSxDQUFvQkwsQ0FBQSxD
QUFtQnBaLENBQW5CLENBQXlCd1osQ0FBekIsQ0FBcEIsQ0FBMERBLENBRDVDLENBQWYsQ0FEa0Ms
Q0FpQzNDRSxRQUFTQSxFQUFXLENBQUNkLENBQUQsQ0FBZ0IsQ0FBQSxJQUM5QjVTLEVBQVksRUFE
a0IsQ0FDZDJULENBQ3BCaGtCLEVBQUEsQ0FBUWlqQixDQUFSLENBQXVCLFFBQVEsQ0FBQy9ZLENB
QUQsQ0FBUyxDQUl0QytaLFFBQVNBLEVBQWMsQ0FBQ3BVLENBQUQsQ0FBUSxDQUFBLElBQ3pCalAs
Q0FEeUIsQ0FDdEJhLENBQ0ZiLEVBQUEsQ0FBSSxDQUFULEtBQVlhLENBQVosQ0FBaUJvTyxDQUFB
blEsT0FBakIsQ0FBK0JrQixDQUEvQixDQUFtQ2EsQ0FBbkMsQ0FBdUNiLENBQUEsRUFBdkMsQ0FB
NEMsQ0FBQSxJQUN0Q3NqQixFQUFhclUsQ0FBQSxDQUFNalAsQ0FBTixDQUR5QixDQUV0QzhPLEVB
QVcyVCxDQUFBL1csSUFBQSxDQUFxQjRYLENBQUEsQ0FBVyxDQUFYLENBQXJCLENBRWZ4VSxFQUFB
LENBQVN3VSxDQUFBLENBQVcsQ0FBWCxDQUFULENBQUFyZCxNQUFBLENBQThCNkksQ0FBOUIsQ0FB
d0N3VSxDQUFBLENBQVcsQ0FBWCxDQUF4QyxDQUowQyxDQUZmLENBSC9CLEdBQUksQ0FBQUMsQ0FB
QTdYLElBQUEsQ0FBa0JwQyxDQUFsQixDQUFKLENBQUEsQ0FDQWlhLENBQUF4QixJQUFBLENBQWtC
elksQ0FBbEIsQ0FBMEIsQ0FBQSxDQUExQixDQVlBLElBQUksQ0FDRXBLLENBQUEsQ0FBU29LLENB
QVQsQ0FBSixFQUNFOFosQ0FHQSxDQUhXMVMsRUFBQSxDQUFjcEgsQ0FBZCxDQUdYLENBRkFtRyxD
QUVBLENBRllBLENBQUFoSyxPQUFBLENBQWlCMGQsQ0FBQSxDQUFZQyxDQUFBelUsU0FBWixDQUFq
QixDQUFBbEosT0FBQSxDQUF3RDJkLENBQUF4VCxXQUF4RCxDQUVaLENBREF5VCxDQUFBLENBQWVE
LENBQUExVCxhQUFmLENBQ0EsQ0FBQTJULENBQUEsQ0FBZUQsQ0FBQXpULGNBQWYsQ0FKRixFQUtX
blEsQ0FBQSxDQUFXOEosQ0FBWCxDQUFKLENBQ0htRyxDQUFBaEwsS0FBQSxDQUFlZ2UsQ0FBQWpZ
LE9BQUEsQ0FBd0JsQixDQUF4QixDQUFmLENBREcsQ0FFSW5LLENBQUEsQ0FBUW1LLENBQVIsQ0FB
SjtBQUNIbUcsQ0FBQWhMLEtBQUEsQ0FBZWdlLENBQUFqWSxPQUFBLENBQXdCbEIsQ0FBeEIsQ0FB
ZixDQURHLENBR0xtRSxFQUFBLENBQVluRSxDQUFaLENBQW9CLFFBQXBCLENBWEEsQ0FhRixNQUFP
MUIsQ0FBUCxDQUFVLENBWVYsS0FYSXpJLEVBQUEsQ0FBUW1LLENBQVIsQ0FXRSxHQVZKQSxDQVVJ
LENBVktBLENBQUEsQ0FBT0EsQ0FBQXhLLE9BQVAsQ0FBdUIsQ0FBdkIsQ0FVTCxFQVJGOEksQ0FB
QTRiLFFBUUUsRUFSVzViLENBQUE2YixNQVFYLEVBUnFELEVBUXJELEVBUnNCN2IsQ0FBQTZiLE1B
QUExZixRQUFBLENBQWdCNkQsQ0FBQTRiLFFBQWhCLENBUXRCLEdBRko1YixDQUVJLENBRkFBLENB
QUE0YixRQUVBLENBRlksSUFFWixDQUZtQjViLENBQUE2YixNQUVuQixFQUFBaFYsRUFBQSxDQUFn
QixVQUFoQixDQUNJbkYsQ0FESixDQUNZMUIsQ0FBQTZiLE1BRFosRUFDdUI3YixDQUFBNGIsUUFE
dkIsRUFDb0M1YixDQURwQyxDQUFOLENBWlUsQ0ExQlosQ0FEc0MsQ0FBeEMsQ0EyQ0EsT0FBTzZI
LEVBN0MyQixDQW9EcENpVSxRQUFTQSxFQUFzQixDQUFDQyxDQUFELENBQVFuVixDQUFSLENBQWlC
LENBRTlDb1YsUUFBU0EsRUFBVSxDQUFDQyxDQUFELENBQWNDLENBQWQsQ0FBc0IsQ0FDdkMsR0FB
SUgsQ0FBQWxrQixlQUFBLENBQXFCb2tCLENBQXJCLENBQUosQ0FBdUMsQ0FDckMsR0FBSUYsQ0FB
QSxDQUFNRSxDQUFOLENBQUosR0FBMkJFLENBQTNCLENBQ0UsS0FBTXRWLEdBQUEsQ0FBZ0IsTUFB
aEIsQ0FDSW9WLENBREosQ0FDa0IsTUFEbEIsQ0FDMkJoVyxDQUFBbEYsS0FBQSxDQUFVLE1BQVYs
Q0FEM0IsQ0FBTixDQUdGLE1BQU9nYixFQUFBLENBQU1FLENBQU4sQ0FMOEIsQ0FPckMsR0FBSSxD
QUdGLE1BRkFoVyxFQUFBMUQsUUFBQSxDQUFhMFosQ0FBYixDQUVPLENBRFBGLENBQUEsQ0FBTUUs
Q0FBTixDQUNPLENBRGNFLENBQ2QsQ0FBQUosQ0FBQSxDQUFNRSxDQUFOLENBQUEsQ0FBcUJyVixD
QUFBLENBQVFxVixDQUFSLENBQXFCQyxDQUFyQixDQUgxQixDQUlGLE1BQU9FLENBQVAsQ0FBWSxD
QUlaLEtBSElMLEVBQUEsQ0FBTUUsQ0FBTixDQUdFRyxHQUhxQkQsQ0FHckJDLEVBRkosT0FBT0ws
Q0FBQSxDQUFNRSxDQUFOLENBRUhHLENBQUFBLENBQU4sQ0FKWSxDQUpkLE9BU1UsQ0FDUm5XLENB
QUFvVyxNQUFBLEVBRFEsQ0FqQjJCLENBdUJ6Q3paLFFBQVNBLEVBQU0sQ0FBQzFFLENBQUQsQ0FB
S0QsQ0FBTCxDQUFXcWUsQ0FBWCxDQUFtQkwsQ0FBbkIsQ0FBZ0MsQ0FDdkIsUUFBdEIsR0FBSSxN
QUFPSyxFQUFYLEdBQ0VMLENBQ0EsQ0FEY0ssQ0FDZCxDQUFBQSxDQUFBLENBQVMsSUFGWCxDQUQ2
QyxLQU16Q2pDLEVBQU8sRUFOa0MsQ0FPekNrQyxFQUFVNVosRUFBQTZaLFdBQUEsQ0FBMEJ0ZSxD
QUExQjtBQUE4QitELENBQTlCLENBQXdDZ2EsQ0FBeEMsQ0FQK0IsQ0FRekMva0IsQ0FSeUMsQ0FR
akNrQixDQVJpQyxDQVN6Q1QsQ0FFQ1MsRUFBQSxDQUFJLENBQVQsS0FBWWxCLENBQVosQ0FBcUJx
bEIsQ0FBQXJsQixPQUFyQixDQUFxQ2tCLENBQXJDLENBQXlDbEIsQ0FBekMsQ0FBaURrQixDQUFB
LEVBQWpELENBQXNELENBQ3BEVCxDQUFBLENBQU00a0IsQ0FBQSxDQUFRbmtCLENBQVIsQ0FDTixJ
QUFtQixRQUFuQixHQUFJLE1BQU9ULEVBQVgsQ0FDRSxLQUFNa1AsR0FBQSxDQUFnQixNQUFoQixD
QUN5RWxQLENBRHpFLENBQU4sQ0FHRjBpQixDQUFBeGQsS0FBQSxDQUNFeWYsQ0FBQSxFQUFVQSxD
QUFBemtCLGVBQUEsQ0FBc0JGLENBQXRCLENBQVYsQ0FDRTJrQixDQUFBLENBQU8za0IsQ0FBUCxD
QURGLENBRUVxa0IsQ0FBQSxDQUFXcmtCLENBQVgsQ0FBZ0Jza0IsQ0FBaEIsQ0FISixDQU5vRCxD
QVlsRDFrQixDQUFBLENBQVEyRyxDQUFSLENBQUosR0FDRUEsQ0FERixDQUNPQSxDQUFBLENBQUdo
SCxDQUFILENBRFAsQ0FNQSxPQUFPZ0gsRUFBQUcsTUFBQSxDQUFTSixDQUFULENBQWVvYyxDQUFm
LENBN0JzQyxDQTBDL0MsTUFBTyxDQUNMelgsT0FBUUEsQ0FESCxDQUVMa1ksWUFaRkEsUUFBb0Is
Q0FBQzJCLENBQUQsQ0FBT0gsQ0FBUCxDQUFlTCxDQUFmLENBQTRCLENBSTlDLElBQUlTLEVBQVd2
bEIsTUFBQWdELE9BQUEsQ0FBY08sQ0FBQ25ELENBQUEsQ0FBUWtsQixDQUFSLENBQUEsQ0FBZ0JB
LENBQUEsQ0FBS0EsQ0FBQXZsQixPQUFMLENBQW1CLENBQW5CLENBQWhCLENBQXdDdWxCLENBQXpD
L2hCLFdBQWQsRUFBMEUsSUFBMUUsQ0FDWGlpQixFQUFBQSxDQUFnQi9aLENBQUEsQ0FBTzZaLENB
QVAsQ0FBYUMsQ0FBYixDQUF1QkosQ0FBdkIsQ0FBK0JMLENBQS9CLENBRXBCLE9BQU8vaUIsRUFB
QSxDQUFTeWpCLENBQVQsQ0FBQSxFQUEyQi9rQixDQUFBLENBQVcra0IsQ0FBWCxDQUEzQixDQUF1
REEsQ0FBdkQsQ0FBdUVELENBUGhDLENBVXpDLENBR0w1WSxJQUFLa1ksQ0FIQSxDQUlMWSxTQUFV
amEsRUFBQTZaLFdBSkwsQ0FLTEssSUFBS0EsUUFBUSxDQUFDaGIsQ0FBRCxDQUFPLENBQ2xCLE1B
QU9rWixFQUFBbGpCLGVBQUEsQ0FBNkJnSyxDQUE3QixDQWpPUW1aLFVBaU9SLENBQVAsRUFBOERl
LENBQUFsa0IsZUFBQSxDQUFxQmdLLENBQXJCLENBRDVDLENBTGYsQ0FuRXVDLENBMUpoREksQ0FB
QSxDQUF5QixDQUFBLENBQXpCLEdBQVlBLENBRG1DLEtBRTNDa2EsRUFBZ0IsRUFGMkIsQ0FJM0Ns
VyxFQUFPLEVBSm9DLENBSzNDMFYsRUFBZ0IsSUFBSTNCLEVBQUosQ0FBWSxFQUFaLENBQWdCLENB
QUEsQ0FBaEIsQ0FMMkIsQ0FNM0NlLEVBQWdCLENBQ2R2WSxTQUFVLENBQ04wRSxTQUFVd1QsQ0FB
QSxDQUFjeFQsQ0FBZCxDQURKLENBRU5OLFFBQVM4VCxDQUFBLENBQWM5VCxDQUFkLENBRkgsQ0FH
TnFCLFFBQVN5UyxDQUFBLENBa0VuQnpTLFFBQWdCLENBQUNwRyxDQUFEO0FBQU8vRSxDQUFQLENB
QW9CLENBQ2xDLE1BQU84SixFQUFBLENBQVEvRSxDQUFSLENBQWMsQ0FBQyxXQUFELENBQWMsUUFB
USxDQUFDaWIsQ0FBRCxDQUFZLENBQ3JELE1BQU9BLEVBQUFoQyxZQUFBLENBQXNCaGUsQ0FBdEIs
Q0FEOEMsQ0FBbEMsQ0FBZCxDQUQyQixDQWxFakIsQ0FISCxDQUlOdkUsTUFBT21pQixDQUFBLENB
dUVqQm5pQixRQUFjLENBQUNzSixDQUFELENBQU90RCxDQUFQLENBQVksQ0FBRSxNQUFPcUksRUFB
QSxDQUFRL0UsQ0FBUixDQUFjdEgsRUFBQSxDQUFRZ0UsQ0FBUixDQUFkLENBQTRCLENBQUEsQ0FB
NUIsQ0FBVCxDQXZFVCxDQUpELENBS04ySixTQUFVd1MsQ0FBQSxDQXdFcEJ4UyxRQUFpQixDQUFD
ckcsQ0FBRCxDQUFPdEosQ0FBUCxDQUFjLENBQzdCd04sRUFBQSxDQUF3QmxFLENBQXhCLENBQThC
LFVBQTlCLENBQ0FrWixFQUFBLENBQWNsWixDQUFkLENBQUEsQ0FBc0J0SixDQUN0QndrQixFQUFB
LENBQWNsYixDQUFkLENBQUEsQ0FBc0J0SixDQUhPLENBeEVYLENBTEosQ0FNTjRQLFVBNkVWQSxR
QUFrQixDQUFDOFQsQ0FBRCxDQUFjZSxDQUFkLENBQXVCLENBQUEsSUFDbkNDLEVBQWVwQyxDQUFB
L1csSUFBQSxDQUFxQm1ZLENBQXJCLENBeEZBakIsVUF3RkEsQ0FEb0IsQ0FFbkNrQyxFQUFXRCxD
QUFBMUQsS0FFZjBELEVBQUExRCxLQUFBLENBQW9CNEQsUUFBUSxFQUFHLENBQzdCLElBQUlDLEVB
QWVoQyxDQUFBeFksT0FBQSxDQUF3QnNhLENBQXhCLENBQWtDRCxDQUFsQyxDQUNuQixPQUFPN0Is
RUFBQXhZLE9BQUEsQ0FBd0JvYSxDQUF4QixDQUFpQyxJQUFqQyxDQUF1QyxDQUFDSyxVQUFXRCxD
QUFaLENBQXZDLENBRnNCLENBSlEsQ0FuRnpCLENBREksQ0FOMkIsQ0FnQjNDdkMsRUFBb0JFLENB
QUErQixVQUFwQmpDLENBQ0lpQixDQUFBLENBQXVCZixDQUF2QixDQUFzQyxRQUFRLENBQUNrQixD
QUFELENBQWNDLENBQWQsQ0FBc0IsQ0FDOUQ5WSxFQUFBOUwsU0FBQSxDQUFpQjRrQixDQUFqQixD
QUFKLEVBQ0VqVyxDQUFBcEosS0FBQSxDQUFVcWYsQ0FBVixDQUVGLE1BQU1yVixHQUFBLENBQWdC
LE1BQWhCLENBQWlEWixDQUFBbEYsS0FBQSxDQUFVLE1BQVYsQ0FBakQsQ0FBTixDQUprRSxDQUFw
RSxDQWpCdUMsQ0F1QjNDZ2MsRUFBZ0IsRUF2QjJCLENBd0IzQzNCLEVBQW9CMkIsQ0FBQUQsVUFB
cEIxQixDQUNJVSxDQUFBLENBQXVCaUIsQ0FBdkIsQ0FBc0MsUUFBUSxDQUFDZCxDQUFELENBQWND
LENBQWQsQ0FBc0IsQ0FDbEUsSUFBSWhWLEVBQVcyVCxDQUFBL1csSUFBQSxDQUFxQm1ZLENBQXJC
LENBdkJKakIsVUF1QkksQ0FBbURrQixDQUFuRCxDQUNmLE9BQU9kLEVBQUF4WSxPQUFBLENBQXdC
c0UsQ0FBQXFTLEtBQXhCLENBQXVDclMsQ0FBdkMsQ0FBaURyUSxDQUFqRCxDQUE0RG9sQixDQUE1
RCxDQUYyRCxDQUFwRSxDQU1SemtCLEVBQUEsQ0FBUStqQixDQUFBLENBQVlkLENBQVosQ0FBUjtB
QUFvQyxRQUFRLENBQUN2YyxDQUFELENBQUssQ0FBTUEsQ0FBSixFQUFRa2QsQ0FBQXhZLE9BQUEs
Q0FBd0IxRSxDQUF4QixDQUFWLENBQWpELENBRUEsT0FBT2tkLEVBakN3QyxDQW9QakR6TSxRQUFT
QSxHQUFxQixFQUFHLENBRS9CLElBQUkyTyxFQUF1QixDQUFBLENBZTNCLEtBQUFDLHFCQUFBLENB
QTRCQyxRQUFRLEVBQUcsQ0FDckNGLENBQUEsQ0FBdUIsQ0FBQSxDQURjLENBaUp2QyxLQUFBL0Qs
S0FBQSxDQUFZLENBQUMsU0FBRCxDQUFZLFdBQVosQ0FBeUIsWUFBekIsQ0FBdUMsUUFBUSxDQUFD
bkgsQ0FBRCxDQUFVMUIsQ0FBVixDQUFxQk0sQ0FBckIsQ0FBaUMsQ0FNMUZ5TSxRQUFTQSxFQUFj
LENBQUNDLENBQUQsQ0FBTyxDQUM1QixJQUFJdkMsRUFBUyxJQUNid0MsTUFBQWpqQixVQUFBa2pC
LEtBQUE5bEIsS0FBQSxDQUEwQjRsQixDQUExQixDQUFnQyxRQUFRLENBQUM1aEIsQ0FBRCxDQUFV
LENBQ2hELEdBQTJCLEdBQTNCLEdBQUlELEVBQUEsQ0FBVUMsQ0FBVixDQUFKLENBRUUsTUFEQXFm
LEVBQ08sQ0FERXJmLENBQ0YsQ0FBQSxDQUFBLENBSHVDLENBQWxELENBTUEsT0FBT3FmLEVBUnFC
LENBZ0M5QjBDLFFBQVNBLEVBQVEsQ0FBQ3hZLENBQUQsQ0FBTyxDQUN0QixHQUFJQSxDQUFKLENB
QVUsQ0FDUkEsQ0FBQXlZLGVBQUEsRUFFQSxLQUFJN0ssQ0F2QkZBLEVBQUFBLENBQVM4SyxDQUFB
QyxRQUVUcG1CLEVBQUEsQ0FBV3FiLENBQVgsQ0FBSixDQUNFQSxDQURGLENBQ1dBLENBQUEsRUFE
WCxDQUVXN1gsRUFBQSxDQUFVNlgsQ0FBVixDQUFKLEVBQ0Q1TixDQUdGLENBSFM0TixDQUFBLENB
QU8sQ0FBUCxDQUdULENBQUFBLENBQUEsQ0FEcUIsT0FBdkIsR0FEWWIsQ0FBQTZMLGlCQUFBbFUs
Q0FBeUIxRSxDQUF6QjBFLENBQ1JtVSxTQUFKLENBQ1csQ0FEWCxDQUdXN1ksQ0FBQThZLHNCQUFB
LEVBQUFDLE9BTk4sRUFRS3RqQixDQUFBLENBQVNtWSxDQUFULENBUkwsR0FTTEEsQ0FUSyxDQVNJ
LENBVEosQ0FxQkRBLEVBQUosR0FjTW9MLENBQ0osQ0FEY2haLENBQUE4WSxzQkFBQSxFQUFBRyxJ
QUNkLENBQUFsTSxDQUFBbU0sU0FBQSxDQUFpQixDQUFqQixDQUFvQkYsQ0FBcEIsQ0FBOEJwTCxD
QUE5QixDQWZGLENBTFEsQ0FBVixJQXVCRWIsRUFBQXlMLFNBQUEsQ0FBaUIsQ0FBakI7QUFBb0Is
Q0FBcEIsQ0F4Qm9CLENBNEJ4QkUsUUFBU0EsRUFBTSxDQUFDUyxDQUFELENBQU8sQ0FDcEJBLENB
QUEsQ0FBT2xuQixDQUFBLENBQVNrbkIsQ0FBVCxDQUFBLENBQWlCQSxDQUFqQixDQUF3QjlOLENB
QUE4TixLQUFBLEVBQy9CLEtBQUlDLENBR0NELEVBQUwsQ0FHSyxDQUFLQyxDQUFMLENBQVc3bkIs
Q0FBQThuQixlQUFBLENBQXdCRixDQUF4QixDQUFYLEVBQTJDWCxDQUFBLENBQVNZLENBQVQsQ0FB
M0MsQ0FHQSxDQUFLQSxDQUFMLENBQVdoQixDQUFBLENBQWU3bUIsQ0FBQStuQixrQkFBQSxDQUEy
QkgsQ0FBM0IsQ0FBZixDQUFYLEVBQThEWCxDQUFBLENBQVNZLENBQVQsQ0FBOUQsQ0FHYSxLQUhi
LEdBR0lELENBSEosRUFHb0JYLENBQUEsQ0FBUyxJQUFULENBVHpCLENBQVdBLENBQUEsQ0FBUyxJ
QUFULENBTFMsQ0FqRXRCLElBQUlqbkIsRUFBV3diLENBQUF4YixTQW9GWDBtQixFQUFKLEVBQ0V0
TSxDQUFBOVYsT0FBQSxDQUFrQjBqQixRQUF3QixFQUFHLENBQUMsTUFBT2xPLEVBQUE4TixLQUFB
LEVBQVIsQ0FBN0MsQ0FDRUssUUFBOEIsQ0FBQ0MsQ0FBRCxDQUFTQyxDQUFULENBQWlCLENBRXpD
RCxDQUFKLEdBQWVDLENBQWYsRUFBb0MsRUFBcEMsR0FBeUJELENBQXpCLEVBRUFqSCxFQUFBLENB
QXFCLFFBQVEsRUFBRyxDQUM5QjdHLENBQUEvVixXQUFBLENBQXNCOGlCLENBQXRCLENBRDhCLENB
QWhDLENBSjZDLENBRGpELENBV0YsT0FBT0EsRUFqR21GLENBQWhGLENBbEttQixDQTJRakNpQixR
QUFTQSxHQUFZLENBQUM1VixDQUFELENBQUc2VixDQUFILENBQU0sQ0FDekIsR0FBSzdWLENBQUFB
LENBQUwsRUFBVzZWLENBQUFBLENBQVgsQ0FBYyxNQUFPLEVBQ3JCLElBQUs3VixDQUFBQSxDQUFM
LENBQVEsTUFBTzZWLEVBQ2YsSUFBS0EsQ0FBQUEsQ0FBTCxDQUFRLE1BQU83VixFQUNYN1IsRUFB
QSxDQUFRNlIsQ0FBUixDQUFKLEdBQWdCQSxDQUFoQixDQUFvQkEsQ0FBQXJJLEtBQUEsQ0FBTyxH
QUFQLENBQXBCLENBQ0l4SixFQUFBLENBQVEwbkIsQ0FBUixDQUFKLEdBQWdCQSxDQUFoQixDQUFv
QkEsQ0FBQWxlLEtBQUEsQ0FBTyxHQUFQLENBQXBCLENBQ0EsT0FBT3FJLEVBQVAsQ0FBVyxHQUFY
LENBQWlCNlYsQ0FOUSxDQWtCM0JDLFFBQVNBLEdBQVksQ0FBQ3hGLENBQUQsQ0FBVSxDQUN6QnBp
QixDQUFBLENBQVNvaUIsQ0FBVCxDQUFKLEdBQ0VBLENBREYsQ0FDWUEsQ0FBQTlkLE1BQUEsQ0FB
YyxHQUFkLENBRFosQ0FNQSxLQUFJNUUsRUFBTTRHLEVBQUEsRUFDVnBHLEVBQUEsQ0FBUWtpQixD
QUFSLENBQWlCLFFBQVEsQ0FBQ3lGLENBQUQsQ0FBUSxDQUczQkEsQ0FBQWpvQixPQUFKLEdBQ0VG
LENBQUEsQ0FBSW1vQixDQUFKLENBREYsQ0FDZSxDQUFBLENBRGYsQ0FIK0IsQ0FBakMsQ0FPQSxP
QUFPbm9CLEVBZnNCLENBeUIvQm9vQixRQUFTQSxHQUFxQixDQUFDQyxDQUFELENBQVUsQ0FDdEMs
TUFBT25tQixFQUFBLENBQVNtbUIsQ0FBVCxDQUFBO0FBQ0RBLENBREMsQ0FFRCxFQUhnQyxDQStq
QnhDQyxRQUFTQSxHQUFPLENBQUMzb0IsQ0FBRCxDQUFTQyxDQUFULENBQW1CZ2EsQ0FBbkIsQ0FB
eUJjLENBQXpCLENBQW1DLENBc0JqRDZOLFFBQVNBLEVBQTBCLENBQUNyaEIsQ0FBRCxDQUFLLENB
Q3RDLEdBQUksQ0FDRkEsQ0FBQUcsTUFBQSxDQUFTLElBQVQsQ0F0cUlHM0UsRUFBQTVCLEtBQUEs
Q0FzcUlzQjZCLFNBdHFJdEIsQ0FzcUlpQ3lFLENBdHFJakMsQ0FzcUlILENBREUsQ0FBSixPQUVV
LENBRVIsR0FEQW9oQixDQUFBLEVBQ0ksQ0FBNEIsQ0FBNUIsR0FBQUEsQ0FBSixDQUNFLElBQUEs
Q0FBT0MsQ0FBQXZvQixPQUFQLENBQUEsQ0FDRSxHQUFJLENBQ0Z1b0IsQ0FBQUMsSUFBQSxFQUFB
LEVBREUsQ0FFRixNQUFPMWYsQ0FBUCxDQUFVLENBQ1Y0USxDQUFBK08sTUFBQSxDQUFXM2YsQ0FB
WCxDQURVLENBTlIsQ0FINEIsQ0E2SXhDNGYsUUFBU0EsRUFBMEIsRUFBRyxDQUNwQ0MsQ0FBQSxF
QUNBQyxFQUFBLEVBRm9DLENBZXRDRCxRQUFTQSxFQUFVLEVBQUcsQ0FWSyxDQUFBLENBQUEsQ0FD
ekIsR0FBSSxDQUNGLENBQUEsQ0FBT0UsQ0FBQUMsTUFBUCxPQUFBLENBREUsQ0FFRixNQUFPaGdC
LENBQVAsQ0FBVSxFQUhhLENBQUEsQ0FBQSxJQUFBLEVBQUEsQ0FhekJpZ0IsQ0FBQSxDQUFjdGxC
LENBQUEsQ0FBWXNsQixDQUFaLENBQUEsQ0FBMkIsSUFBM0IsQ0FBa0NBLENBRzVDM2lCLEdBQUEs
Q0FBTzJpQixDQUFQLENBQW9CQyxDQUFwQixDQUFKLEdBQ0VELENBREYsQ0FDZ0JDLENBRGhCLENB
R0FBLEVBQUEsQ0FBa0JELENBVEUsQ0FZdEJILFFBQVNBLEVBQWEsRUFBRyxDQUN2QixHQUFJSyxD
QUFKLEdBQXVCbGlCLENBQUFtaUIsSUFBQSxFQUF2QixFQUFxQ0MsQ0FBckMsR0FBMERKLENBQTFE
LENBSUFFLENBRUEsQ0FGaUJsaUIsQ0FBQW1pQixJQUFBLEVBRWpCLENBREFDLENBQ0EsQ0FEbUJK
LENBQ25CLENBQUF6b0IsQ0FBQSxDQUFROG9CLENBQVIsQ0FBNEIsUUFBUSxDQUFDQyxDQUFELENB
QVcsQ0FDN0NBLENBQUEsQ0FBU3RpQixDQUFBbWlCLElBQUEsRUFBVCxDQUFxQkgsQ0FBckIsQ0FE
NkMsQ0FBL0MsQ0FQdUIsQ0E5THdCLElBQzdDaGlCLEVBQU8sSUFEc0MsQ0FHN0N5RixFQUFXL00s
Q0FBQStNLFNBSGtDLENBSTdDcWMsRUFBVXBwQixDQUFBb3BCLFFBSm1DLENBSzdDOUgsRUFBYXRo
QixDQUFBc2hCLFdBTGdDLENBTTdDdUksRUFBZTdwQixDQUFBNnBCLGFBTjhCLENBTzdDQyxFQUFr
QixFQUV0QnhpQixFQUFBeWlCLE9BQUEsQ0FBYyxDQUFBLENBRWQsS0FBSWxCLEVBQTBCLENBQTlC
LENBQ0lDLEVBQThCLEVBR2xDeGhCLEVBQUEwaUIsNkJBQUEsQ0FBb0NwQixDQUNwQ3RoQixFQUFB
MmlCLDZCQUFBO0FBQW9DQyxRQUFRLEVBQUcsQ0FBRXJCLENBQUEsRUFBRixDQWtDL0N2aEIsRUFB
QTZpQixnQ0FBQSxDQUF1Q0MsUUFBUSxDQUFDQyxDQUFELENBQVcsQ0FDeEIsQ0FBaEMsR0FBSXhC
LENBQUosQ0FDRXdCLENBQUEsRUFERixDQUdFdkIsQ0FBQTVpQixLQUFBLENBQWlDbWtCLENBQWpD
LENBSnNELENBbERULEtBOEQ3Q2YsQ0E5RDZDLENBOERoQ0ksQ0E5RGdDLENBK0Q3Q0YsRUFBaUJ6
YyxDQUFBdWQsS0EvRDRCLENBZ0U3Q0MsRUFBY3RxQixDQUFBNkUsS0FBQSxDQUFjLE1BQWQsQ0Fo
RStCLENBaUU3QzBsQixFQUFpQixJQUVyQnRCLEVBQUEsRUFDQVEsRUFBQSxDQUFtQkosQ0FzQm5C
aGlCLEVBQUFtaUIsSUFBQSxDQUFXZ0IsUUFBUSxDQUFDaEIsQ0FBRCxDQUFNL2YsQ0FBTixDQUFl
MmYsQ0FBZixDQUFzQixDQUluQ3JsQixDQUFBLENBQVlxbEIsQ0FBWixDQUFKLEdBQ0VBLENBREYs
Q0FDVSxJQURWLENBS0l0YyxFQUFKLEdBQWlCL00sQ0FBQStNLFNBQWpCLEdBQWtDQSxDQUFsQyxD
QUE2Qy9NLENBQUErTSxTQUE3QyxDQUNJcWMsRUFBSixHQUFnQnBwQixDQUFBb3BCLFFBQWhCLEdB
QWdDQSxDQUFoQyxDQUEwQ3BwQixDQUFBb3BCLFFBQTFDLENBR0EsSUFBSUssQ0FBSixDQUFTLENB
Q1AsSUFBSWlCLEVBQVloQixDQUFaZ0IsR0FBaUNyQixDQUtyQyxJQUFJRyxDQUFKLEdBQXVCQyxD
QUF2QixHQUFnQ0wsQ0FBQXJPLENBQUFxTyxRQUFoQyxFQUFvRHNCLENBQXBELEVBQ0UsTUFBT3Bq
QixFQUVULEtBQUlxakIsRUFBV25CLENBQVhtQixFQUE2QkMsRUFBQSxDQUFVcEIsQ0FBVixDQUE3
Qm1CLEdBQTJEQyxFQUFBLENBQVVuQixDQUFWLENBQy9ERCxFQUFBLENBQWlCQyxDQUNqQkMsRUFB
QSxDQUFtQkwsQ0FLbkIsSUFBSUQsQ0FBQXJPLENBQUFxTyxRQUFKLEVBQTBCdUIsQ0FBMUIsRUFB
dUNELENBQXZDLENBS08sQ0FDTCxHQUFLQyxDQUFBQSxDQUFMLEVBQWlCSCxDQUFqQixDQUNFQSxD
QUFBLENBQWlCZixDQUVmL2YsRUFBSixDQUNFcUQsQ0FBQXJELFFBQUEsQ0FBaUIrZixDQUFqQixD
QURGLENBRVlrQixDQUFMLEVBR0w1ZCxDQUFBLENBQUFBLENBQUEsQ0E3RkZ4SCxDQTZGRSxDQUF3
QmtrQixDQTdGbEJqa0IsUUFBQSxDQUFZLEdBQVosQ0E2Rk4sQ0E1Rk4sQ0E0Rk0sQ0E1RlksRUFB
WCxHQUFBRCxDQUFBLENBQWUsRUFBZixDQTRGdUJra0IsQ0E1RkhvQixPQUFBLENBQVd0bEIsQ0FB
WCxDQTRGckIsQ0FBQXdILENBQUE4YSxLQUFBLENBQWdCLENBSFgsRUFDTDlhLENBQUF1ZCxLQURL
LENBQ1diLENBUGIsQ0FMUCxJQUNFTCxFQUFBLENBQVExZixDQUFBLENBQVUsY0FBVixDQUEyQixX
QUFuQyxDQUFBLENBQWdEMmYsQ0FBaEQsQ0FBdUQsRUFBdkQsQ0FBMkRJLENBQTNELENBR0EsQ0FG
QVAsQ0FBQSxFQUVBLENBQUFRLENBQUEsQ0FBbUJKLENBYXJCLE9BQU9oaUIsRUFqQ0EsQ0F1Q1As
TUFBT2tqQixFQUFQO0FBQXlCemQsQ0FBQXVkLEtBQUE1Z0IsUUFBQSxDQUFzQixNQUF0QixDQUE2
QixHQUE3QixDQXBEWSxDQWtFekNwQyxFQUFBK2hCLE1BQUEsQ0FBYXlCLFFBQVEsRUFBRyxDQUN0
QixNQUFPeEIsRUFEZSxDQTVKeUIsS0FnSzdDSyxFQUFxQixFQWhLd0IsQ0FpSzdDb0IsRUFBZ0Is
Q0FBQSxDQWpLNkIsQ0FpTDdDeEIsRUFBa0IsSUE4Q3RCamlCLEVBQUEwakIsWUFBQSxDQUFtQkMs
UUFBUSxDQUFDWixDQUFELENBQVcsQ0FFcEMsR0FBS1UsQ0FBQUEsQ0FBTCxDQUFvQixDQU1sQixH
QUFJaFEsQ0FBQXFPLFFBQUosQ0FBc0JsZ0IsQ0FBQSxDQUFPbEosQ0FBUCxDQUFBZ08sR0FBQSxD
QUFrQixVQUFsQixDQUE4QmliLENBQTlCLENBRXRCL2YsRUFBQSxDQUFPbEosQ0FBUCxDQUFBZ08s
R0FBQSxDQUFrQixZQUFsQixDQUFnQ2liLENBQWhDLENBRUE4QixFQUFBLENBQWdCLENBQUEsQ0FW
RSxDQWFwQnBCLENBQUF6akIsS0FBQSxDQUF3Qm1rQixDQUF4QixDQUNBLE9BQU9BLEVBaEI2QixD
QXlCdEMvaUIsRUFBQTRqQix1QkFBQSxDQUE4QkMsUUFBUSxFQUFHLENBQ3ZDamlCLENBQUEsQ0FB
T2xKLENBQVAsQ0FBQW9yQixJQUFBLENBQW1CLHFCQUFuQixDQUEwQ25DLENBQTFDLENBRHVDLENB
U3pDM2hCLEVBQUErakIsaUJBQUEsQ0FBd0JsQyxDQWV4QjdoQixFQUFBZ2tCLFNBQUEsQ0FBZ0JD
LFFBQVEsRUFBRyxDQUN6QixJQUFJakIsRUFBT0MsQ0FBQTFsQixLQUFBLENBQWlCLE1BQWpCLENB
Q1gsT0FBT3lsQixFQUFBLENBQU9BLENBQUE1Z0IsUUFBQSxDQUFhLHdCQUFiLENBQXVDLEVBQXZD
LENBQVAsQ0FBb0QsRUFGbEMsQ0FtQjNCcEMsRUFBQWtrQixNQUFBLENBQWFDLFFBQVEsQ0FBQ2xr
QixDQUFELENBQUtta0IsQ0FBTCxDQUFZLENBQy9CLElBQUlDLENBQ0o5QyxFQUFBLEVBQ0E4QyxF
QUFBLENBQVlySyxDQUFBLENBQVcsUUFBUSxFQUFHLENBQ2hDLE9BQU93SSxDQUFBLENBQWdCNkIs
Q0FBaEIsQ0FDUC9DLEVBQUEsQ0FBMkJyaEIsQ0FBM0IsQ0FGZ0MsQ0FBdEIsQ0FHVG1rQixDQUhT
LEVBR0EsQ0FIQSxDQUlaNUIsRUFBQSxDQUFnQjZCLENBQWhCLENBQUEsQ0FBNkIsQ0FBQSxDQUM3
QixPQUFPQSxFQVJ3QixDQXNCakNya0IsRUFBQWtrQixNQUFBSSxPQUFBLENBQW9CQyxRQUFRLENB
QUNDLENBQUQsQ0FBVSxDQUNwQyxNQUFJaEMsRUFBQSxDQUFnQmdDLENBQWhCLENBQUo7Q0FDRSxP
QUFPaEMsQ0FBQSxDQUFnQmdDLENBQWhCLENBR0EsQ0FGUGpDLENBQUEsQ0FBYWlDLENBQWIsQ0FF
TyxDQURQbEQsQ0FBQSxDQUEyQm5sQixDQUEzQixDQUNPLENBQUEsQ0FBQSxDQUpULEVBTU8sQ0FB
QSxDQVA2QixDQXpUVyxDQXFVbkQrVSxRQUFTQSxHQUFnQixFQUFHLENBQzFCLElBQUFvSyxLQUFB
LENBQVksQ0FBQyxTQUFELENBQVksTUFBWixDQUFvQixVQUFwQixDQUFnQyxXQUFoQyxDQUNSLFFB
QVEsQ0FBQ25ILENBQUQsQ0FBVXhCLENBQVYsQ0FBZ0JjLENBQWhCLENBQTBCbEMsQ0FBMUIsQ0FB
cUMsQ0FDM0MsTUFBTyxLQUFJOFAsRUFBSixDQUFZbE4sQ0FBWixDQUFxQjVDLENBQXJCLENBQWdD
b0IsQ0FBaEMsQ0FBc0NjLENBQXRDLENBRG9DLENBRHJDLENBRGMsQ0F3RjVCckMsUUFBU0EsR0FB
cUIsRUFBRyxDQUUvQixJQUFBa0ssS0FBQSxDQUFZQyxRQUFRLEVBQUcsQ0FHckJrSixRQUFTQSxF
QUFZLENBQUNDLENBQUQsQ0FBVXRELENBQVYsQ0FBbUIsQ0F3TXRDdUQsUUFBU0EsRUFBTyxDQUFD
QyxDQUFELENBQVEsQ0FDbEJBLENBQUosRUFBYUMsQ0FBYixHQUNPQyxDQUFMLENBRVdBLENBRlgs
RUFFdUJGLENBRnZCLEdBR0VFLENBSEYsQ0FHYUYsQ0FBQUcsRUFIYixFQUNFRCxDQURGLENBQ2FG
LENBUWIsQ0FIQUksQ0FBQSxDQUFLSixDQUFBRyxFQUFMLENBQWNILENBQUFLLEVBQWQsQ0FHQSxD
QUZBRCxDQUFBLENBQUtKLENBQUwsQ0FBWUMsQ0FBWixDQUVBLENBREFBLENBQ0EsQ0FEV0QsQ0FD
WCxDQUFBQyxDQUFBRSxFQUFBLENBQWEsSUFWZixDQURzQixDQW1CeEJDLFFBQVNBLEVBQUksQ0FB
Q0UsQ0FBRCxDQUFZQyxDQUFaLENBQXVCLENBQzlCRCxDQUFKLEVBQWlCQyxDQUFqQixHQUNNRCxD
QUNKLEdBRGVBLENBQUFELEVBQ2YsQ0FENkJFLENBQzdCLEVBQUlBLENBQUosR0FBZUEsQ0FBQUos
RUFBZixDQUE2QkcsQ0FBN0IsQ0FGRixDQURrQyxDQTFOcEMsR0FBSVIsQ0FBSixHQUFlVSxFQUFm
LENBQ0UsS0FBTXZzQixFQUFBLENBQU8sZUFBUCxDQUFBLENBQXdCLEtBQXhCLENBQWtFNnJCLENB
QWxFLENBQU4sQ0FGb0MsSUFLbENXLEVBQU8sQ0FMMkIsQ0FNbENDLEVBQVE5cEIsQ0FBQSxDQUFP
LEVBQVAsQ0FBVzRsQixDQUFYLENBQW9CLENBQUNtRSxHQUFJYixDQUFMLENBQXBCLENBTjBCLENB
T2xDMWYsRUFBTyxFQVAyQixDQVFsQ3dnQixFQUFZcEUsQ0FBWm9FLEVBQXVCcEUsQ0FBQW9FLFNB
QXZCQSxFQUE0Q0MsTUFBQUMsVUFSVixDQVNsQ0MsRUFBVSxFQVR3QixDQVVsQ2QsRUFBVyxJQVZ1
QixDQVdsQ0MsRUFBVyxJQXlDZixPQUFPTSxFQUFBLENBQU9WLENBQVAsQ0FBUCxDQUF5QixDQW9C
dkJ4SSxJQUFLQSxRQUFRLENBQUN4aUIsQ0FBRCxDQUFNWSxDQUFOLENBQWEsQ0FDeEIsR0FBSSxD
QUFBb0MsQ0FBQSxDQUFZcEMsQ0FBWixDQUFKLENBQUEsQ0FDQSxHQUFJa3JCLENBQUosQ0FBZUMs
TUFBQUMsVUFBZixDQUFpQyxDQUMvQixJQUFJRTtBQUFXRCxDQUFBLENBQVFqc0IsQ0FBUixDQUFY
a3NCLEdBQTRCRCxDQUFBLENBQVFqc0IsQ0FBUixDQUE1QmtzQixDQUEyQyxDQUFDbHNCLElBQUtB
LENBQU4sQ0FBM0Nrc0IsQ0FFSmpCLEVBQUEsQ0FBUWlCLENBQVIsQ0FIK0IsQ0FNM0Jsc0IsQ0FB
TixHQUFhc0wsRUFBYixFQUFvQnFnQixDQUFBLEVBQ3BCcmdCLEVBQUEsQ0FBS3RMLENBQUwsQ0FB
QSxDQUFZWSxDQUVSK3FCLEVBQUosQ0FBV0csQ0FBWCxFQUNFLElBQUFLLE9BQUEsQ0FBWWYsQ0FB
QXByQixJQUFaLENBR0YsT0FBT1ksRUFkUCxDQUR3QixDQXBCSCxDQWlEdkJ1TCxJQUFLQSxRQUFR
LENBQUNuTSxDQUFELENBQU0sQ0FDakIsR0FBSThyQixDQUFKLENBQWVDLE1BQUFDLFVBQWYsQ0FB
aUMsQ0FDL0IsSUFBSUUsRUFBV0QsQ0FBQSxDQUFRanNCLENBQVIsQ0FFZixJQUFLa3NCLENBQUFB
LENBQUwsQ0FBZSxNQUVmakIsRUFBQSxDQUFRaUIsQ0FBUixDQUwrQixDQVFqQyxNQUFPNWdCLEVB
QUEsQ0FBS3RMLENBQUwsQ0FUVSxDQWpESSxDQXdFdkJtc0IsT0FBUUEsUUFBUSxDQUFDbnNCLENB
QUQsQ0FBTSxDQUNwQixHQUFJOHJCLENBQUosQ0FBZUMsTUFBQUMsVUFBZixDQUFpQyxDQUMvQixJ
QUFJRSxFQUFXRCxDQUFBLENBQVFqc0IsQ0FBUixDQUVmLElBQUtrc0IsQ0FBQUEsQ0FBTCxDQUFl
LE1BRVhBLEVBQUosRUFBZ0JmLENBQWhCLEdBQTBCQSxDQUExQixDQUFxQ2UsQ0FBQVgsRUFBckMs
Q0FDSVcsRUFBSixFQUFnQmQsQ0FBaEIsR0FBMEJBLENBQTFCLENBQXFDYyxDQUFBYixFQUFyQyxD
QUNBQyxFQUFBLENBQUtZLENBQUFiLEVBQUwsQ0FBZ0JhLENBQUFYLEVBQWhCLENBRUEsUUFBT1Us
Q0FBQSxDQUFRanNCLENBQVIsQ0FUd0IsQ0FZakMsT0FBT3NMLENBQUEsQ0FBS3RMLENBQUwsQ0FD
UDJyQixFQUFBLEVBZG9CLENBeEVDLENBa0d2QlMsVUFBV0EsUUFBUSxFQUFHLENBQ3BCOWdCLENB
QUEsQ0FBTyxFQUNQcWdCLEVBQUEsQ0FBTyxDQUNQTSxFQUFBLENBQVUsRUFDVmQsRUFBQSxDQUFX
QyxDQUFYLENBQXNCLElBSkYsQ0FsR0MsQ0FtSHZCaUIsUUFBU0EsUUFBUSxFQUFHLENBR2xCSixD
QUFBLENBREFMLENBQ0EsQ0FGQXRnQixDQUVBLENBRk8sSUFHUCxRQUFPb2dCLENBQUEsQ0FBT1Ys
Q0FBUCxDQUpXLENBbkhHLENBMkl2QnNCLEtBQU1BLFFBQVEsRUFBRyxDQUNmLE1BQU94cUIsRUFB
QSxDQUFPLEVBQVAsQ0FBVzhwQixDQUFYLENBQWtCLENBQUNELEtBQU1BLENBQVAsQ0FBbEIsQ0FE
USxDQTNJTSxDQXBEYSxDQUZ4QyxJQUFJRCxFQUFTLEVBK09iWCxFQUFBdUIsS0FBQSxDQUFvQkMs
UUFBUSxFQUFHLENBQzdCLElBQUlELEVBQU8sRUFDWHpzQixFQUFBLENBQVE2ckIsQ0FBUixDQUFn
QixRQUFRLENBQUN0SCxDQUFELENBQVE0RyxDQUFSLENBQWlCLENBQ3ZDc0IsQ0FBQSxDQUFLdEIs
Q0FBTCxDQUFBLENBQWdCNUcsQ0FBQWtJLEtBQUEsRUFEdUIsQ0FBekMsQ0FHQSxPQUFPQSxFQUxz
QixDQW1CL0J2QjtDQUFBNWUsSUFBQSxDQUFtQnFnQixRQUFRLENBQUN4QixDQUFELENBQVUsQ0FD
bkMsTUFBT1UsRUFBQSxDQUFPVixDQUFQLENBRDRCLENBS3JDLE9BQU9ELEVBeFFjLENBRlEsQ0F5
VGpDN1EsUUFBU0EsR0FBc0IsRUFBRyxDQUNoQyxJQUFBMEgsS0FBQSxDQUFZLENBQUMsZUFBRCxD
QUFrQixRQUFRLENBQUNuSyxDQUFELENBQWdCLENBQ3BELE1BQU9BLEVBQUEsQ0FBYyxXQUFkLENB
RDZDLENBQTFDLENBRG9CLENBd3RCbENqRyxRQUFTQSxHQUFnQixDQUFDM0csQ0FBRCxDQUFXNGhC
LENBQVgsQ0FBa0MsQ0FhekRDLFFBQVNBLEVBQW9CLENBQUN2aEIsQ0FBRCxDQUFRd2hCLENBQVIs
Q0FBdUJDLENBQXZCLENBQXFDLENBQ2hFLElBQUlDLEVBQWUsb0NBQW5CLENBRUlDLEVBQVcsRUFF
Zmp0QixFQUFBLENBQVFzTCxDQUFSLENBQWUsUUFBUSxDQUFDNGhCLENBQUQsQ0FBYUMsQ0FBYixD
QUF3QixDQUM3QyxJQUFJMW5CLEVBQVF5bkIsQ0FBQXpuQixNQUFBLENBQWlCdW5CLENBQWpCLENB
RVosSUFBS3ZuQixDQUFBQSxDQUFMLENBQ0UsS0FBTTJuQixHQUFBLENBQWUsTUFBZixDQUdGTixD
QUhFLENBR2FLLENBSGIsQ0FHd0JELENBSHhCLENBSURILENBQUEsQ0FBZSxnQ0FBZixDQUNELDBC
QUxFLENBQU4sQ0FRRkUsQ0FBQSxDQUFTRSxDQUFULENBQUEsQ0FBc0IsQ0FDcEJFLEtBQU01bkIs
Q0FBQSxDQUFNLENBQU4sQ0FBQSxDQUFTLENBQVQsQ0FEYyxDQUVwQjZuQixXQUF5QixHQUF6QkEs
R0FBWTduQixDQUFBLENBQU0sQ0FBTixDQUZRLENBR3BCOG5CLFNBQXVCLEdBQXZCQSxHQUFVOW5C
LENBQUEsQ0FBTSxDQUFOLENBSFUsQ0FJcEIrbkIsU0FBVS9uQixDQUFBLENBQU0sQ0FBTixDQUFW
K25CLEVBQXNCTCxDQUpGLENBWnVCLENBQS9DLENBb0JBLE9BQU9GLEVBekJ5RCxDQWlFbEVRLFFB
QVNBLEVBQXdCLENBQUNwakIsQ0FBRCxDQUFPLENBQ3RDLElBQUlxQyxFQUFTckMsQ0FBQXhFLE9B
QUEsQ0FBWSxDQUFaLENBQ2IsSUFBSzZHLENBQUFBLENBQUwsRUFBZUEsQ0FBZixHQUEwQm5JLENB
QUEsQ0FBVW1JLENBQVYsQ0FBMUIsQ0FDRSxLQUFNMGdCLEdBQUEsQ0FBZSxRQUFmLENBQTRHL2lC
LENBQTVHLENBQU4sQ0FFRixHQUFJQSxDQUFKLEdBQWFBLENBQUE2UyxLQUFBLEVBQWIsQ0FDRSxL
QUFNa1EsR0FBQSxDQUFlLFFBQWY7QUFFQS9pQixDQUZBLENBQU4sQ0FOb0MsQ0E5RWlCLElBQ3JE
cWpCLEVBQWdCLEVBRHFDLENBR3JEQyxFQUEyQixxQ0FIMEIsQ0FJckRDLEVBQXlCLDZCQUo0QixD
QUtyREMsRUFBdUIzcEIsRUFBQSxDQUFRLDJCQUFSLENBTDhCLENBTXJENHBCLEVBQXdCLDZCQU42
QixDQVdyREMsRUFBNEIseUJBOEYvQixLQUFBamQsVUFBQSxDQUFpQmtkLFFBQVNDLEVBQWlCLENB
QUM1akIsQ0FBRCxDQUFPNmpCLENBQVAsQ0FBeUIsQ0FDbkUzZixFQUFBLENBQXdCbEUsQ0FBeEIs
Q0FBOEIsV0FBOUIsQ0FDSXZLLEVBQUEsQ0FBU3VLLENBQVQsQ0FBSixFQUNFb2pCLENBQUEsQ0FB
eUJwakIsQ0FBekIsQ0FrQ0EsQ0FqQ0E2RCxFQUFBLENBQVVnZ0IsQ0FBVixDQUE0QixrQkFBNUIs
Q0FpQ0EsQ0FoQ0tSLENBQUFydEIsZUFBQSxDQUE2QmdLLENBQTdCLENBZ0NMLEdBL0JFcWpCLENB
QUEsQ0FBY3JqQixDQUFkLENBQ0EsQ0FEc0IsRUFDdEIsQ0FBQVcsQ0FBQW9FLFFBQUEsQ0FBaUIv
RSxDQUFqQixDQTlHTzhqQixXQThHUCxDQUFnQyxDQUFDLFdBQUQsQ0FBYyxtQkFBZCxDQUM5QixR
QUFRLENBQUM3SSxDQUFELENBQVlwTixDQUFaLENBQStCLENBQ3JDLElBQUlrVyxFQUFhLEVBQ2pC
cHVCLEVBQUEsQ0FBUTB0QixDQUFBLENBQWNyakIsQ0FBZCxDQUFSLENBQTZCLFFBQVEsQ0FBQzZq
QixDQUFELENBQW1CeHBCLENBQW5CLENBQTBCLENBQzdELEdBQUksQ0FDRixJQUFJb00sRUFBWXdV
LENBQUFsYSxPQUFBLENBQWlCOGlCLENBQWpCLENBQ1o5dEIsRUFBQSxDQUFXMFEsQ0FBWCxDQUFK
LENBQ0VBLENBREYsQ0FDYyxDQUFFdkYsUUFBU3hJLEVBQUEsQ0FBUStOLENBQVIsQ0FBWCxDQURk
LENBRVl2RixDQUFBdUYsQ0FBQXZGLFFBRlosRUFFaUN1RixDQUFBMmEsS0FGakMsR0FHRTNhLENB
QUF2RixRQUhGLENBR3NCeEksRUFBQSxDQUFRK04sQ0FBQTJhLEtBQVIsQ0FIdEIsQ0FLQTNhLEVB
QUF1ZCxTQUFBLENBQXFCdmQsQ0FBQXVkLFNBQXJCO0FBQTJDLENBQzNDdmQsRUFBQXBNLE1BQUEs
Q0FBa0JBLENBQ2xCb00sRUFBQXpHLEtBQUEsQ0FBaUJ5RyxDQUFBekcsS0FBakIsRUFBbUNBLENB
Q25DeUcsRUFBQXdkLFFBQUEsQ0FBb0J4ZCxDQUFBd2QsUUFBcEIsRUFBMEN4ZCxDQUFBeEQsV0FB
MUMsRUFBa0V3RCxDQUFBekcsS0FDbEV5RyxFQUFBeWQsU0FBQSxDQUFxQnpkLENBQUF5ZCxTQUFy
QixFQUEyQyxJQUM1QnpkLEtBQUFBLEVBQUFBLENBQUFBLENBQ1lBLEVBQUFBLENBRFpBLENBQ3VC
ekcsRUFBQXlHLENBQUF6RyxLQUR2QnlHLENBdEZ2Qm1jLEVBQVcsQ0FDYjVmLGFBQWMsSUFERCxD
QUVibWhCLGlCQUFrQixJQUZMLENBSVg5c0IsRUFBQSxDQUFTb1AsQ0FBQXhGLE1BQVQsQ0FBSixH
QUNxQyxDQUFBLENBQW5DLEdBQUl3RixDQUFBMGQsaUJBQUosRUFDRXZCLENBQUF1QixpQkFFQSxD
QUY0QjNCLENBQUEsQ0FBcUIvYixDQUFBeEYsTUFBckIsQ0FDcUJ3aEIsQ0FEckIsQ0FDb0MsQ0FB
QSxDQURwQyxDQUU1QixDQUFBRyxDQUFBNWYsYUFBQSxDQUF3QixFQUgxQixFQUtFNGYsQ0FBQTVm
LGFBTEYsQ0FLMEJ3ZixDQUFBLENBQXFCL2IsQ0FBQXhGLE1BQXJCLENBQ3FCd2hCLENBRHJCLENB
Q29DLENBQUEsQ0FEcEMsQ0FONUIsQ0FVSXByQixFQUFBLENBQVNvUCxDQUFBMGQsaUJBQVQsQ0FB
SixHQUNFdkIsQ0FBQXVCLGlCQURGLENBRU0zQixDQUFBLENBQXFCL2IsQ0FBQTBkLGlCQUFyQixD
QUFpRDFCLENBQWpELENBQWdFLENBQUEsQ0FBaEUsQ0FGTixDQUlBLElBQUlwckIsQ0FBQSxDQUFT
dXJCLENBQUF1QixpQkFBVCxDQUFKLENBQXlDLENBQ3ZDLElBQUlsaEIsRUFBYXdELENBQUF4RCxX
QUFqQixDQUNJbWhCLEVBQWUzZCxDQUFBMmQsYUFDbkIsSUFBS25oQixDQUFBQSxDQUFMLENBRUUs
S0FBTThmLEdBQUEsQ0FBZSxRQUFmLENBRUFOLENBRkEsQ0FBTixDQUdVLElBQUEsRUF3N0RrQyxF
QUFBLENBQ2xELEdBejdEb0QyQixDQXk3RHBELEVBQWEzdUIsQ0FBQSxDQXo3RHVDMnVCLENBeTdE
dkMsQ0FBYixDQUE4QixFQUFBLENBejdEc0JBLENBeTdEcEQsS0FBQSxDQUNBLEdBQUkzdUIsQ0FB
QSxDQTE3RG9Dd04sQ0EwN0RwQyxDQUFKLENBQTBCLENBQ3hCLElBQUk3SCxFQUFRaXBCLEVBQUFw
UyxLQUFBLENBMzdEMEJoUCxDQTI3RDFCLENBQ1o7R0FBSTdILENBQUosQ0FBVyxDQUFBLEVBQUEs
Q0FBT0EsQ0FBQSxDQUFNLENBQU4sQ0FBUCxPQUFBLENBQUEsQ0FGYSxDQUZ3QixFQUFBLENBQUEs
SUFBQSxFQUNsRCxDQXo3RFcsR0FBSyxDQUFBLEVBQUwsQ0FFTCxLQUFNMm5CLEdBQUEsQ0FBZSxT
QUFmLENBRUFOLENBRkEsQ0FBTixDQVZxQyxDQW9FN0IsSUFBSUcsRUFBV25jLENBQUE2ZCxXQUFY
MUIsQ0FyRFRBLENBdURTdnJCLEVBQUEsQ0FBU3VyQixDQUFBNWYsYUFBVCxDQUFKLEdBQ0V5RCxD
QUFBOGQsa0JBREYsQ0FDZ0MzQixDQUFBNWYsYUFEaEMsQ0FHQXlELEVBQUFYLGFBQUEsQ0FBeUIr
ZCxDQUFBL2QsYUFDekJpZSxFQUFBL29CLEtBQUEsQ0FBZ0J5TCxDQUFoQixDQWxCRSxDQW1CRixN
QUFPdEksQ0FBUCxDQUFVLENBQ1YwUCxDQUFBLENBQWtCMVAsQ0FBbEIsQ0FEVSxDQXBCaUQsQ0FB
L0QsQ0F3QkEsT0FBTzRsQixFQTFCOEIsQ0FEVCxDQUFoQyxDQThCRixFQUFBVixDQUFBLENBQWNy
akIsQ0FBZCxDQUFBaEYsS0FBQSxDQUF5QjZvQixDQUF6QixDQW5DRixFQXFDRWx1QixDQUFBLENB
QVFxSyxDQUFSLENBQWN4SixFQUFBLENBQWNvdEIsQ0FBZCxDQUFkLENBRUYsT0FBTyxLQXpDNEQs
Q0FpRXJFLEtBQUFZLDJCQUFBLENBQWtDQyxRQUFRLENBQUNDLENBQUQsQ0FBUyxDQUNqRCxNQUFJ
M3JCLEVBQUEsQ0FBVTJyQixDQUFWLENBQUosRUFDRW5DLENBQUFpQywyQkFBQSxDQUFpREUsQ0FB
akQsQ0FDTyxDQUFBLElBRlQsRUFJU25DLENBQUFpQywyQkFBQSxFQUx3QyxDQThCbkQsS0FBQUcs
NEJBQUEsQ0FBbUNDLFFBQVEsQ0FBQ0YsQ0FBRCxDQUFTLENBQ2xELE1BQUkzckIsRUFBQSxDQUFV
MnJCLENBQVYsQ0FBSixFQUNFbkMsQ0FBQW9DLDRCQUFBLENBQWtERCxDQUFsRCxDQUNPLENBQUEs
SUFGVCxFQUlTbkMsQ0FBQW9DLDRCQUFBLEVBTHlDLENBK0JwRDtJQUFJL2pCLEVBQW1CLENBQUEs
Q0FDdkIsS0FBQUEsaUJBQUEsQ0FBd0Jpa0IsUUFBUSxDQUFDQyxDQUFELENBQVUsQ0FDeEMsTUFB
SS9yQixFQUFBLENBQVUrckIsQ0FBVixDQUFKLEVBQ0Vsa0IsQ0FDTyxDQURZa2tCLENBQ1osQ0FB
QSxJQUZULEVBSU9sa0IsQ0FMaUMsQ0FRMUMsS0FBQThXLEtBQUEsQ0FBWSxDQUNGLFdBREUsQ0FD
VyxjQURYLENBQzJCLG1CQUQzQixDQUNnRCxrQkFEaEQsQ0FDb0UsUUFEcEUsQ0FFRixhQUZFLENB
RWEsWUFGYixDQUUyQixXQUYzQixDQUV3QyxNQUZ4QyxDQUVnRCxVQUZoRCxDQUU0RCxlQUY1RCxD
QUdWLFFBQVEsQ0FBQ3VELENBQUQsQ0FBY2hOLENBQWQsQ0FBOEJKLENBQTlCLENBQW1Eb0MsQ0FB
bkQsQ0FBdUVoQixDQUF2RSxDQUNDeEIsQ0FERCxDQUNnQjBCLENBRGhCLENBQzhCeEIsQ0FEOUIs
Q0FDMkM4QixDQUQzQyxDQUNtRDFDLENBRG5ELENBQytEM0YsQ0FEL0QsQ0FDOEUsQ0EyT3RGMmQs
UUFBU0EsRUFBWSxDQUFDQyxDQUFELENBQVdDLENBQVgsQ0FBc0IsQ0FDekMsR0FBSSxDQUNGRCxD
QUFBbE4sU0FBQSxDQUFrQm1OLENBQWxCLENBREUsQ0FFRixNQUFPOW1CLENBQVAsQ0FBVSxFQUg2
QixDQWdEM0MrQyxRQUFTQSxFQUFPLENBQUNna0IsQ0FBRCxDQUFnQkMsQ0FBaEIsQ0FBOEJDLENB
QTlCLENBQTJDQyxDQUEzQyxDQUNJQyxDQURKLENBQzRCLENBQ3BDSixDQUFOLFdBQStCbG5CLEVB
QS9CLEdBR0VrbkIsQ0FIRixDQUdrQmxuQixDQUFBLENBQU9rbkIsQ0FBUCxDQUhsQixDQU9BdnZC
LEVBQUEsQ0FBUXV2QixDQUFSLENBQXVCLFFBQVEsQ0FBQzFyQixDQUFELENBQU9hLENBQVAsQ0FB
YyxDQUN2Q2IsQ0FBQWpFLFNBQUosRUFBcUJnSixFQUFyQixFQUF1Qy9FLENBQUErckIsVUFBQW5x
QixNQUFBLENBQXFCLEtBQXJCLENBQXZDLEdBQ0U4cEIsQ0FBQSxDQUFjN3FCLENBQWQsQ0FERixD
QUN5QjJELENBQUEsQ0FBT3hFLENBQVAsQ0FBQTBZLEtBQUEsQ0FBa0IsZUFBbEIsQ0FBQTlaLE9B
QUEsRUFBQSxDQUE0QyxDQUE1QyxDQUR6QixDQUQyQyxDQUE3QyxDQUtBLEtBQUlvdEIsRUFDSUMs
Q0FBQSxDQUFhUCxDQUFiLENBQTRCQyxDQUE1QixDQUEwQ0QsQ0FBMUMsQ0FDYUUsQ0FEYixDQUMw
QkMsQ0FEMUIsQ0FDMkNDLENBRDNDLENBRVJwa0IsRUFBQXdrQixnQkFBQSxDQUF3QlIsQ0FBeEIs
Q0FDQTtJQUFJUyxFQUFZLElBQ2hCLE9BQU9DLFNBQXFCLENBQUMza0IsQ0FBRCxDQUFRNGtCLENB
QVIsQ0FBd0JySSxDQUF4QixDQUFpQyxDQUMzRDNaLEVBQUEsQ0FBVTVDLENBQVYsQ0FBaUIsT0FB
akIsQ0FFQXVjLEVBQUEsQ0FBVUEsQ0FBVixFQUFxQixFQUhzQyxLQUl2RHNJLEVBQTBCdEksQ0FB
QXNJLHdCQUo2QixDQUt6REMsRUFBd0J2SSxDQUFBdUksc0JBQ3hCQyxFQUFBQSxDQUFzQnhJLENB
QUF3SSxvQkFNcEJGLEVBQUosRUFBK0JBLENBQUFHLGtCQUEvQixHQUNFSCxDQURGLENBQzRCQSxD
QUFBRyxrQkFENUIsQ0FJS04sRUFBTCxHQXlDQSxDQXpDQSxDQXNDRixDQURJbnNCLENBQ0osQ0Fy
Q2dEd3NCLENBcUNoRCxFQXJDZ0RBLENBb0NwQixDQUFjLENBQWQsQ0FDNUIsRUFHNkIsZUFBcEIs
R0FBQWhzQixFQUFBLENBQVVSLENBQVYsQ0FBQSxFQUF1Q0EsQ0FBQVosU0FBQSxFQUFBd0MsTUFB
QSxDQUFzQixLQUF0QixDQUF2QyxDQUFzRSxLQUF0RSxDQUE4RSxNQUh2RixDQUNTLE1BdkNQLENB
VUU4cUIsRUFBQSxDQU5nQixNQUFsQixHQUFJUCxDQUFKLENBTWMzbkIsQ0FBQSxDQUNWbW9CLEVB
QUEsQ0FBYVIsQ0FBYixDQUF3QjNuQixDQUFBLENBQU8sT0FBUCxDQUFBSyxPQUFBLENBQXVCNm1C
LENBQXZCLENBQUE1bUIsS0FBQSxFQUF4QixDQURVLENBTmQsQ0FTV3VuQixDQUFKLENBR085aUIs
RUFBQTlFLE1BQUFoSSxLQUFBLENBQTJCaXZCLENBQTNCLENBSFAsQ0FLT0EsQ0FHZCxJQUFJYSxD
QUFKLENBQ0UsSUFBU0ssSUFBQUEsQ0FBVCxHQUEyQkwsRUFBM0IsQ0FDRUcsQ0FBQTlrQixLQUFB
LENBQWUsR0FBZixDQUFxQmdsQixDQUFyQixDQUFzQyxZQUF0QyxDQUFvREwsQ0FBQSxDQUFzQkss
Q0FBdEIsQ0FBQXZMLFNBQXBELENBSUozWixFQUFBbWxCLGVBQUEsQ0FBdUJILENBQXZCLENBQWtD
amxCLENBQWxDLENBRUk0a0IsRUFBSixFQUFvQkEsQ0FBQSxDQUFlSyxDQUFmLENBQTBCamxCLENB
QTFCLENBQ2hCdWtCLEVBQUosRUFBcUJBLENBQUEsQ0FBZ0J2a0IsQ0FBaEIsQ0FBdUJpbEIsQ0FB
dkIsQ0FBa0NBLENBQWxDLENBQTZDSixDQUE3QyxDQUNyQixPQUFPSSxFQS9Db0QsQ0FsQm5CLENB
OEY1Q1QsUUFBU0EsRUFBWSxDQUFDYSxDQUFELENBQVduQixDQUFYLENBQXlCb0IsQ0FBekIsQ0FB
dUNuQixDQUF2QyxDQUFvREMsQ0FBcEQsQ0FDR0MsQ0FESCxDQUMyQixDQTBDOUNFLFFBQVNBLEVB
QWUsQ0FBQ3ZrQixDQUFEO0FBQVFxbEIsQ0FBUixDQUFrQkMsQ0FBbEIsQ0FBZ0NULENBQWhDLENB
QXlELENBQUEsSUFDL0RVLENBRCtELENBQ2xEaHRCLENBRGtELENBQzVDaXRCLENBRDRDLENBQ2hD
bHdCLENBRGdDLENBQzdCYSxDQUQ2QixDQUNwQnN2QixDQURvQixDQUUzRUMsQ0FHSixJQUFJQyxD
QUFKLENBT0UsSUFIQUQsQ0FHSyxDQUhnQjdLLEtBQUosQ0FESXdLLENBQUFqeEIsT0FDSixDQUda
LENBQUFrQixDQUFBLENBQUksQ0FBVCxDQUFZQSxDQUFaLENBQWdCc3dCLENBQUF4eEIsT0FBaEIs
Q0FBZ0NrQixDQUFoQyxFQUFtQyxDQUFuQyxDQUNFdXdCLENBQ0EsQ0FETUQsQ0FBQSxDQUFRdHdC
LENBQVIsQ0FDTixDQUFBb3dCLENBQUEsQ0FBZUcsQ0FBZixDQUFBLENBQXNCUixDQUFBLENBQVNR
LENBQVQsQ0FUMUIsS0FZRUgsRUFBQSxDQUFpQkwsQ0FHZC92QixFQUFBLENBQUksQ0FBVCxLQUFZ
YSxDQUFaLENBQWlCeXZCLENBQUF4eEIsT0FBakIsQ0FBaUNrQixDQUFqQyxDQUFxQ2EsQ0FBckMs
Q0FBQSxDQUtFLEdBSkFvQyxDQUlJdXRCLENBSkdKLENBQUEsQ0FBZUUsQ0FBQSxDQUFRdHdCLENB
QUEsRUFBUixDQUFmLENBSUh3d0IsQ0FISkEsQ0FHSUEsQ0FIU0YsQ0FBQSxDQUFRdHdCLENBQUEs
RUFBUixDQUdUd3dCLENBRkpQLENBRUlPLENBRlVGLENBQUEsQ0FBUXR3QixDQUFBLEVBQVIsQ0FF
Vnd3QixDQUFBQSxDQUFKLENBQWdCLENBQ2QsR0FBSUEsQ0FBQTlsQixNQUFKLENBSUUsSUFIQXds
QixDQUVJTyxDQUZTL2xCLENBQUFnbUIsS0FBQSxFQUVURCxDQURKOWxCLENBQUFtbEIsZUFBQSxD
QUF1QnJvQixDQUFBLENBQU94RSxDQUFQLENBQXZCLENBQXFDaXRCLENBQXJDLENBQ0lPLENBQUFB
LENBQUFBLENBQWtCRCxDQUFBRyxrQkFDdEIsQ0FDRUgsQ0FBQUcsa0JBQ0EsQ0FEK0IsSUFDL0Is
Q0FBQVQsQ0FBQVUsSUFBQSxDQUFlLFlBQWYsQ0FBNkJILENBQTdCLENBRkYsQ0FKRixJQVNFUCxF
QUFBLENBQWF4bEIsQ0FJYnlsQixFQUFBLENBREVLLENBQUFLLHdCQUFKLENBQzJCQyxDQUFBLENB
Q3JCcG1CLENBRHFCLENBQ2Q4bEIsQ0FBQU8sV0FEYyxDQUNTeEIsQ0FEVCxDQUQzQixDQUlZeUIs
Q0FBQVIsQ0FBQVEsc0JBQUwsRUFBeUN6QixDQUF6QyxDQUNvQkEsQ0FEcEIsQ0FHS0EsQ0FBQUEs
Q0FBTCxFQUFnQ1gsQ0FBaEMsQ0FDb0JrQyxDQUFBLENBQXdCcG1CLENBQXhCLENBQStCa2tCLENB
QS9CLENBRHBCLENBSW9CLElBRzNCNEIsRUFBQSxDQUFXUCxDQUFYLENBQXdCQyxDQUF4QixDQUFv
Q2p0QixDQUFwQyxDQUEwQytzQixDQUExQyxDQUF3REcsQ0FBeEQsQ0FDV0ssQ0FEWCxDQTNCYyxD
QUFoQixJQThCV1AsRUFBSixFQUNMQSxDQUFBLENBQVl2bEIsQ0FBWixDQUFtQnpILENBQUFnWixX
QUFuQixDQUFvQ3hkLENBQXBDLENBQStDOHdCLENBQS9DLENBeEQyRSxDQXRDakYsSUFKOEMsSUFD
MUNlLEVBQVUsRUFEZ0MsQ0FFMUNXLENBRjBDLENBRW5DekQsQ0FGbUMsQ0FFWHZSLENBRlcsQ0FF
Y2lWLENBRmQsQ0FFMkJiLENBRjNCLENBSXJDcndCLEVBQUksQ0FBYixDQUFnQkEsQ0FBaEIsQ0FB
b0IrdkIsQ0FBQWp4QixPQUFwQixDQUFxQ2tCLENBQUEsRUFBckMsQ0FBMEMsQ0FDeENpeEIsQ0FB
QSxDQUFRLElBQUlFLEVBR1ozRCxFQUFBLENBQWE0RCxFQUFBLENBQWtCckIsQ0FBQSxDQUFTL3ZC
LENBQVQsQ0FBbEIsQ0FBK0IsRUFBL0IsQ0FBbUNpeEIsQ0FBbkMsQ0FBZ0QsQ0FBTixHQUFBanhC
LENBQUE7QUFBVTZ1QixDQUFWLENBQXdCcHdCLENBQWxFLENBQ21CcXdCLENBRG5CLENBUWIsRUFM
QTBCLENBS0EsQ0FMY2hELENBQUExdUIsT0FBRCxDQUNQdXlCLENBQUEsQ0FBc0I3RCxDQUF0QixD
QUFrQ3VDLENBQUEsQ0FBUy92QixDQUFULENBQWxDLENBQStDaXhCLENBQS9DLENBQXNEckMsQ0FB
dEQsQ0FBb0VvQixDQUFwRSxDQUN3QixJQUR4QixDQUM4QixFQUQ5QixDQUNrQyxFQURsQyxDQUNz
Q2pCLENBRHRDLENBRE8sQ0FHUCxJQUVOLEdBQWtCeUIsQ0FBQTlsQixNQUFsQixFQUNFQyxDQUFB
d2tCLGdCQUFBLENBQXdCOEIsQ0FBQUssVUFBeEIsQ0FHRnJCLEVBQUEsQ0FBZU8sQ0FBRCxFQUFl
QSxDQUFBZSxTQUFmLEVBQ0UsRUFBQXRWLENBQUEsQ0FBYThULENBQUEsQ0FBUy92QixDQUFULENB
QUFpYyxXQUFiLENBREYsRUFFQ25kLENBQUFtZCxDQUFBbmQsT0FGRCxDQUdSLElBSFEsQ0FJUm93
QixDQUFBLENBQWFqVCxDQUFiLENBQ0d1VSxDQUFBLEVBQ0VBLENBQUFLLHdCQURGLEVBQ3dDLENB
QUNMLENBQUFRLHNCQUR6QyxHQUVPUixDQUFBTyxXQUZQLENBRWdDbkMsQ0FIbkMsQ0FLTixJQUFJ
NEIsQ0FBSixFQUFrQlAsQ0FBbEIsQ0FDRUssQ0FBQTdyQixLQUFBLENBQWF6RSxDQUFiLENBQWdC
d3dCLENBQWhCLENBQTRCUCxDQUE1QixDQUVBLENBREFpQixDQUNBLENBRGMsQ0FBQSxDQUNkLENB
QUFiLENBQUEsQ0FBa0JBLENBQWxCLEVBQXFDRyxDQUl2Q3pCLEVBQUEsQ0FBeUIsSUFoQ2UsQ0Fv
QzFDLE1BQU9tQyxFQUFBLENBQWNqQyxDQUFkLENBQWdDLElBeENPLENBd0doRDZCLFFBQVNBLEVB
QXVCLENBQUNwbUIsQ0FBRCxDQUFRa2tCLENBQVIsQ0FBc0I0QyxDQUF0QixDQUFpRCxDQWdCL0Us
TUFkd0JDLFNBQVEsQ0FBQ0MsQ0FBRCxDQUFtQkMsQ0FBbkIsQ0FBNEJDLENBQTVCLENBQXlDbkMs
Q0FBekMsQ0FBOERvQyxDQUE5RCxDQUErRSxDQUV4R0gsQ0FBTCxHQUNFQSxDQUNBLENBRG1CaG5C
LENBQUFnbUIsS0FBQSxDQUFXLENBQUEsQ0FBWCxDQUFrQm1CLENBQWxCLENBQ25CLENBQUFILENB
QUFJLGNBQUEsQ0FBaUMsQ0FBQSxDQUZuQyxDQUtBLE9BQU9sRCxFQUFBLENBQWE4QyxDQUFiLENB
QStCQyxDQUEvQixDQUF3QyxDQUM3Q3BDLHdCQUF5QmlDLENBRG9CLENBRTdDaEMsc0JBQXVCb0Ms
Q0FGc0IsQ0FHN0NuQyxvQkFBcUJBLENBSHdCLENBQXhDLENBUHNHLENBRmhDLENBNkJqRjJCLFFB
QVNBLEdBQWlCLENBQUNudUIsQ0FBRCxDQUFPdXFCLENBQVAsQ0FBbUJ5RCxDQUFuQixDQUEwQnBD
LENBQTFCLENBQXVDQyxDQUF2QyxDQUF3RCxDQUFBLElBRTVFaUQsRUFBV2QsQ0FBQWUsTUFGaUUs
Q0FHNUVudEIsQ0FHSixRQUxlNUIsQ0FBQWpFLFNBS2YsRUFDRSxLQUFLQyxFQUFMLENBRUVnekIs
Q0FBQSxDQUFhekUsQ0FBYjtBQUNJMEUsRUFBQSxDQUFtQnp1QixFQUFBLENBQVVSLENBQVYsQ0FB
bkIsQ0FESixDQUN5QyxHQUR6QyxDQUM4QzRyQixDQUQ5QyxDQUMyREMsQ0FEM0QsQ0FJQSxLQU5G
LElBTVcxckIsQ0FOWCxDQU0wQ2pELENBTjFDLENBTWlEZ3lCLENBTmpELENBTTJEQyxFQUFTbnZC
LENBQUFvdkIsV0FOcEUsQ0FPV3R4QixFQUFJLENBUGYsQ0FPa0JDLEVBQUtveEIsQ0FBTHB4QixF
QUFlb3hCLENBQUF0ekIsT0FEL0IsQ0FDOENpQyxDQUQ5QyxDQUNrREMsQ0FEbEQsQ0FDc0RELENB
QUEsRUFEdEQsQ0FDMkQsQ0FDekQsSUFBSXV4QixFQUFnQixDQUFBLENBQXBCLENBQ0lDLEVBQWMs
Q0FBQSxDQUVsQm52QixFQUFBLENBQU9ndkIsQ0FBQSxDQUFPcnhCLENBQVAsQ0FDUDBJLEVBQUEs
Q0FBT3JHLENBQUFxRyxLQUNQdEosRUFBQSxDQUFRbWMsQ0FBQSxDQUFLbFosQ0FBQWpELE1BQUws
Q0FHUnF5QixFQUFBLENBQWFOLEVBQUEsQ0FBbUJ6b0IsQ0FBbkIsQ0FDYixJQUFJMG9CLENBQUos
Q0FBZU0sRUFBQWp1QixLQUFBLENBQXFCZ3VCLENBQXJCLENBQWYsQ0FDRS9vQixDQUFBLENBQU9B
LENBQUF4QixRQUFBLENBQWF5cUIsRUFBYixDQUE0QixFQUE1QixDQUFBdEosT0FBQSxDQUNHLENB
REgsQ0FBQW5oQixRQUFBLENBQ2MsT0FEZCxDQUN1QixRQUFRLENBQUNwRCxDQUFELENBQVFpSCxD
QUFSLENBQWdCLENBQ2xELE1BQU9BLEVBQUFnUCxZQUFBLEVBRDJDLENBRC9DLENBTVQsS0FBSTZY
LEVBQWlCSCxDQUFBdnFCLFFBQUEsQ0FBbUIsY0FBbkIsQ0FBbUMsRUFBbkMsQ0FDakIycUIsRUFB
QSxDQUF3QkQsQ0FBeEIsQ0FBSixFQUNNSCxDQUROLEdBQ3FCRyxDQURyQixDQUNzQyxPQUR0QyxH
QUVJTCxDQUVBLENBRmdCN29CLENBRWhCLENBREE4b0IsQ0FDQSxDQURjOW9CLENBQUEyZixPQUFB
LENBQVksQ0FBWixDQUFlM2YsQ0FBQTNLLE9BQWYsQ0FBNkIsQ0FBN0IsQ0FDZCxDQURnRCxLQUNo
RCxDQUFBMkssQ0FBQSxDQUFPQSxDQUFBMmYsT0FBQSxDQUFZLENBQVosQ0FBZTNmLENBQUEzSyxP
QUFmLENBQTZCLENBQTdCLENBSlgsQ0FRQSt6QixFQUFBLENBQVFYLEVBQUEsQ0FBbUJ6b0IsQ0FB
QXVDLFlBQUEsRUFBbkIsQ0FDUitsQixFQUFBLENBQVNjLENBQVQsQ0FBQSxDQUFrQnBwQixDQUNs
QixJQUFJMG9CLENBQUosRUFBaUIsQ0FBQWxCLENBQUF4eEIsZUFBQSxDQUFxQm96QixDQUFyQixD
QUFqQixDQUNJNUIsQ0FBQSxDQUFNNEIsQ0FBTixDQUNBLENBRGUxeUIsQ0FDZixDQUFJMmYsRUFB
QSxDQUFtQjdjLENBQW5CLENBQXlCNHZCLENBQXpCLENBQUosR0FDRTVCLENBQUEsQ0FBTTRCLENB
QU4sQ0FERixDQUNpQixDQUFBLENBRGpCLENBSUpDLEVBQUEsQ0FBNEI3dkIsQ0FBNUIsQ0FBa0N1
cUIsQ0FBbEMsQ0FBOENydEIsQ0FBOUMsQ0FBcUQweUIsQ0FBckQsQ0FBNERWLENBQTVELENBQ0FG
LEVBQUEsQ0FBYXpFLENBQWIsQ0FBeUJxRixDQUF6QixDQUFnQyxHQUFoQyxDQUFxQ2hFLENBQXJD
LENBQWtEQyxDQUFsRCxDQUFtRXdELENBQW5FLENBQ2NDLENBRGQsQ0FuQ3lELENBd0MzRDdELENB
QUEsQ0FBWXpyQixDQUFBeXJCLFVBQ1I1dEIsRUFBQSxDQUFTNHRCLENBQVQsQ0FBSixHQUVJQSxD
QUZKLENBRWdCQSxDQUFBcUUsUUFGaEIsQ0FJQSxJQUFJN3pCLENBQUEsQ0FBU3d2QixDQUFULENB
QUo7QUFBeUMsRUFBekMsR0FBMkJBLENBQTNCLENBQ0UsSUFBQSxDQUFPN3BCLENBQVAsQ0FBZW1v
QixDQUFBdFIsS0FBQSxDQUE0QmdULENBQTVCLENBQWYsQ0FBQSxDQUNFbUUsQ0FJQSxDQUpRWCxF
QUFBLENBQW1CcnRCLENBQUEsQ0FBTSxDQUFOLENBQW5CLENBSVIsQ0FISW90QixDQUFBLENBQWF6
RSxDQUFiLENBQXlCcUYsQ0FBekIsQ0FBZ0MsR0FBaEMsQ0FBcUNoRSxDQUFyQyxDQUFrREMsQ0FB
bEQsQ0FHSixHQUZFbUMsQ0FBQSxDQUFNNEIsQ0FBTixDQUVGLENBRmlCdlcsQ0FBQSxDQUFLelgs
Q0FBQSxDQUFNLENBQU4sQ0FBTCxDQUVqQixFQUFBNnBCLENBQUEsQ0FBWUEsQ0FBQXRGLE9BQUEs
Q0FBaUJ2a0IsQ0FBQWYsTUFBakIsQ0FBK0JlLENBQUEsQ0FBTSxDQUFOLENBQUEvRixPQUEvQixD
QUdoQixNQUNGLE1BQUtrSixFQUFMLENBQ0UsR0FBYSxFQUFiLEdBQUlnckIsRUFBSixDQUVFLElB
QUEsQ0FBTy92QixDQUFBaWMsV0FBUCxFQUEwQmpjLENBQUFvTCxZQUExQixFQUE4Q3BMLENBQUFv
TCxZQUFBclAsU0FBOUMsR0FBNEVnSixFQUE1RSxDQUFBLENBQ0UvRSxDQUFBK3JCLFVBQ0EsRUFE
a0MvckIsQ0FBQW9MLFlBQUEyZ0IsVUFDbEMsQ0FBQS9yQixDQUFBaWMsV0FBQUksWUFBQSxDQUE0
QnJjLENBQUFvTCxZQUE1QixDQUdKNGtCLEdBQUEsQ0FBNEJ6RixDQUE1QixDQUF3Q3ZxQixDQUFB
K3JCLFVBQXhDLENBQ0EsTUFDRixNQXBxTGdCa0UsQ0FvcUxoQixDQUNFLEdBQUksQ0FFRixHQURB
cnVCLENBQ0EsQ0FEUWtvQixDQUFBclIsS0FBQSxDQUE4QnpZLENBQUErckIsVUFBOUIsQ0FDUixD
QUNFNkQsQ0FDQSxDQURRWCxFQUFBLENBQW1CcnRCLENBQUEsQ0FBTSxDQUFOLENBQW5CLENBQ1Is
Q0FBSW90QixDQUFBLENBQWF6RSxDQUFiLENBQXlCcUYsQ0FBekIsQ0FBZ0MsR0FBaEMsQ0FBcUNo
RSxDQUFyQyxDQUFrREMsQ0FBbEQsQ0FBSixHQUNFbUMsQ0FBQSxDQUFNNEIsQ0FBTixDQURGLENB
Q2lCdlcsQ0FBQSxDQUFLelgsQ0FBQSxDQUFNLENBQU4sQ0FBTCxDQURqQixDQUpBLENBUUYsTUFB
TytDLENBQVAsQ0FBVSxFQWxGaEIsQ0EwRkE0bEIsQ0FBQXp0QixLQUFBLENBQWdCb3pCLEVBQWhC
LENBQ0EsT0FBTzNGLEVBakd5RSxDQTRHbEY0RixRQUFTQSxHQUFTLENBQUNud0IsQ0FBRCxDQUFP
b3dCLENBQVAsQ0FBa0JDLENBQWxCLENBQTJCLENBQzNDLElBQUlwbEIsRUFBUSxFQUFaLENBQ0lx
bEIsRUFBUSxDQUNaLElBQUlGLENBQUosRUFBaUJwd0IsQ0FBQXlHLGFBQWpCLEVBQXNDekcsQ0FB
QXlHLGFBQUEsQ0FBa0IycEIsQ0FBbEIsQ0FBdEMsRUFDRSxFQUFHLENBQ0QsR0FBS3B3QixDQUFB
QSxDQUFMLENBQ0UsS0FBTXVwQixHQUFBLENBQWUsU0FBZixDQUVJNkcsQ0FGSixDQUVlQyxDQUZm
LENBQU47QUFJRXJ3QixDQUFBakUsU0FBSixFQUFxQkMsRUFBckIsR0FDTWdFLENBQUF5RyxhQUFB
LENBQWtCMnBCLENBQWxCLENBQ0osRUFEa0NFLENBQUEsRUFDbEMsQ0FBSXR3QixDQUFBeUcsYUFB
QSxDQUFrQjRwQixDQUFsQixDQUFKLEVBQWdDQyxDQUFBLEVBRmxDLENBSUFybEIsRUFBQXpKLEtB
QUEsQ0FBV3hCLENBQVgsQ0FDQUEsRUFBQSxDQUFPQSxDQUFBb0wsWUFYTixDQUFILE1BWWlCLENB
WmpCLENBWVNrbEIsQ0FaVCxDQURGLEtBZUVybEIsRUFBQXpKLEtBQUEsQ0FBV3hCLENBQVgsQ0FH
RixPQUFPd0UsRUFBQSxDQUFPeUcsQ0FBUCxDQXJCb0MsQ0FnQzdDc2xCLFFBQVNBLEdBQTBCLENB
QUNDLENBQUQsQ0FBU0osQ0FBVCxDQUFvQkMsQ0FBcEIsQ0FBNkIsQ0FDOUQsTUFBTyxTQUFRLENB
QUM1b0IsQ0FBRCxDQUFRaEgsQ0FBUixDQUFpQnV0QixDQUFqQixDQUF3QlcsQ0FBeEIsQ0FBcUNo
RCxDQUFyQyxDQUFtRCxDQUNoRWxyQixDQUFBLENBQVUwdkIsRUFBQSxDQUFVMXZCLENBQUEsQ0FB
USxDQUFSLENBQVYsQ0FBc0IydkIsQ0FBdEIsQ0FBaUNDLENBQWpDLENBQ1YsT0FBT0csRUFBQSxD
QUFPL29CLENBQVAsQ0FBY2hILENBQWQsQ0FBdUJ1dEIsQ0FBdkIsQ0FBOEJXLENBQTlCLENBQTJD
aEQsQ0FBM0MsQ0FGeUQsQ0FESixDQThCaEV5QyxRQUFTQSxFQUFxQixDQUFDN0QsQ0FBRCxDQUFh
a0csQ0FBYixDQUEwQkMsQ0FBMUIsQ0FBeUMvRSxDQUF6QyxDQUNDZ0YsQ0FERCxDQUNlQyxDQURm
LENBQ3lDQyxDQUR6QyxDQUNxREMsQ0FEckQsQ0FFQ2hGLENBRkQsQ0FFeUIsQ0FnTnJEaUYsUUFB
U0EsRUFBVSxDQUFDQyxDQUFELENBQU1DLENBQU4sQ0FBWWIsQ0FBWixDQUF1QkMsQ0FBdkIsQ0FB
Z0MsQ0FDakQsR0FBSVcsQ0FBSixDQUFTLENBQ0haLENBQUosR0FBZVksQ0FBZixDQUFxQlQsRUFB
QSxDQUEyQlMsQ0FBM0IsQ0FBZ0NaLENBQWhDLENBQTJDQyxDQUEzQyxDQUFyQixDQUNBVyxFQUFB
dkcsUUFBQSxDQUFjeGQsQ0FBQXdkLFFBQ2R1RyxFQUFBL0gsY0FBQSxDQUFvQkEsQ0FDcEIsSUFB
SWlJLENBQUosR0FBaUNqa0IsQ0FBakMsRUFBOENBLENBQUFra0IsZUFBOUMsQ0FDRUgsQ0FBQSxD
QUFNSSxDQUFBLENBQW1CSixDQUFuQixDQUF3QixDQUFDeG5CLGFBQWMsQ0FBQSxDQUFmLENBQXhC
LENBRVJxbkIsRUFBQXJ2QixLQUFBLENBQWdCd3ZCLENBQWhCLENBUE8sQ0FTVCxHQUFJQyxDQUFK
LENBQVUsQ0FDSmIsQ0FBSixHQUFlYSxDQUFmLENBQXNCVixFQUFBLENBQTJCVSxDQUEzQixDQUFp
Q2IsQ0FBakMsQ0FBNENDLENBQTVDLENBQXRCLENBQ0FZLEVBQUF4RyxRQUFBLENBQWV4ZCxDQUFB
d2QsUUFDZndHLEVBQUFoSSxjQUFBLENBQXFCQSxDQUNyQixJQUFJaUksQ0FBSixHQUFpQ2prQixD
QUFqQyxFQUE4Q0EsQ0FBQWtrQixlQUE5QyxDQUNFRixDQUFBLENBQU9HLENBQUEsQ0FBbUJILENB
QW5CLENBQXlCLENBQUN6bkIsYUFBYyxDQUFBLENBQWYsQ0FBekIsQ0FFVHNuQixFQUFBdHZCLEtB
QUEsQ0FBaUJ5dkIsQ0FBakIsQ0FQUSxDQVZ1QyxDQWhORTtBQXNPckRJLFFBQVNBLEVBQWMsQ0FB
Q3BJLENBQUQsQ0FBZ0J3QixDQUFoQixDQUF5QmUsQ0FBekIsQ0FBbUM4RixDQUFuQyxDQUF1RCxD
QUM1RSxJQUFJcDBCLENBRUosSUFBSWpCLENBQUEsQ0FBU3d1QixDQUFULENBQUosQ0FBdUIsQ0FD
ckIsSUFBSTdvQixFQUFRNm9CLENBQUE3b0IsTUFBQSxDQUFjcW9CLENBQWQsQ0FDUnpqQixFQUFB
QSxDQUFPaWtCLENBQUE4RyxVQUFBLENBQWtCM3ZCLENBQUEsQ0FBTSxDQUFOLENBQUEvRixPQUFs
QixDQUNYLEtBQUkyMUIsRUFBYzV2QixDQUFBLENBQU0sQ0FBTixDQUFkNHZCLEVBQTBCNXZCLENB
QUEsQ0FBTSxDQUFOLENBQTlCLENBQ0k4bkIsRUFBd0IsR0FBeEJBLEdBQVc5bkIsQ0FBQSxDQUFN
LENBQU4sQ0FHSyxLQUFwQixHQUFJNHZCLENBQUosQ0FDRWhHLENBREYsQ0FDYUEsQ0FBQTVzQixP
QUFBLEVBRGIsQ0FNRTFCLENBTkYsRUFLRUEsQ0FMRixDQUtVbzBCLENBTFYsRUFLZ0NBLENBQUEs
Q0FBbUI5cUIsQ0FBbkIsQ0FMaEMsR0FNbUJ0SixDQUFBbWtCLFNBR2Rua0IsRUFBTCxHQUNNdTBC
LENBQ0osQ0FEZSxHQUNmLENBRHFCanJCLENBQ3JCLENBRDRCLFlBQzVCLENBQUF0SixDQUFBLENB
QVFzMEIsQ0FBQSxDQUFjaEcsQ0FBQTloQixjQUFBLENBQXVCK25CLENBQXZCLENBQWQsQ0FBaURq
RyxDQUFBNWpCLEtBQUEsQ0FBYzZwQixDQUFkLENBRjNELENBS0EsSUFBS3YwQixDQUFBQSxDQUFM
LEVBQWV3c0IsQ0FBQUEsQ0FBZixDQUNFLEtBQU1ILEdBQUEsQ0FBZSxPQUFmLENBRUYvaUIsQ0FG
RSxDQUVJeWlCLENBRkosQ0FBTixDQXRCbUIsQ0FBdkIsSUEwQk8sSUFBSS9zQixDQUFBLENBQVF1
dUIsQ0FBUixDQUFKLENBRUwsSUFEQXZ0QixDQUNnQlUsQ0FEUixFQUNRQSxDQUFQYixDQUFPYSxD
QUFILENBQUdBLENBQUFBLENBQUFBLENBQUs2c0IsQ0FBQTV1QixPQUFyQixDQUFxQ2tCLENBQXJD
LENBQXlDYSxDQUF6QyxDQUE2Q2IsQ0FBQSxFQUE3QyxDQUNFRyxDQUFBLENBQU1ILENBQU4sQ0FB
QSxDQUFXczBCLENBQUEsQ0FBZXBJLENBQWYsQ0FBOEJ3QixDQUFBLENBQVExdEIsQ0FBUixDQUE5
QixDQUEwQ3l1QixDQUExQyxDQUFvRDhGLENBQXBELENBSWYsT0FBT3AwQixFQUFQLEVBQWdCLElB
cEM0RCxDQXVDOUV3MEIsUUFBU0EsRUFBZ0IsQ0FBQ2xHLENBQUQsQ0FBV3dDLENBQVgsQ0FBa0Jy
QyxDQUFsQixDQUFnQ2dHLENBQWhDLENBQXNEbm9CLENBQXRELENBQW9FL0IsQ0FBcEUsQ0FBMkUs
Q0FDbEcsSUFBSTZwQixFQUFxQi91QixFQUFBLEVBQXpCLENBQ1NxdkIsQ0FBVCxLQUFTQSxDQUFU
LEdBQTBCRCxFQUExQixDQUFnRCxDQUM5QyxJQUFJMWtCLEVBQVkwa0IsQ0FBQSxDQUFxQkMsQ0FB
ckIsQ0FBaEIsQ0FDSTNRLEVBQVMsQ0FDWDRRLE9BQVE1a0IsQ0FBQSxHQUFjaWtCLENBQWQsRUFB
MENqa0IsQ0FBQWtrQixlQUExQyxDQUFxRTNuQixDQUFyRSxDQUFvRi9CLENBRGpGLENBRVgrakIs
U0FBVUEsQ0FGQyxDQUdYc0csT0FBUTlELENBSEcsQ0FJWCtELFlBQWFwRyxDQUpGLENBRGIsQ0FR
SWxpQixFQUFhd0QsQ0FBQXhELFdBQ0MsSUFBbEIsRUFBSUEsQ0FBSixHQUNFQSxDQURGLENBQ2V1
a0IsQ0FBQSxDQUFNL2dCLENBQUF6RyxLQUFOLENBRGYsQ0FJSXdyQixFQUFBQSxDQUFxQi9kLENB
QUEsQ0FBWXhLLENBQVo7QUFBd0J3WCxDQUF4QixDQUFnQyxDQUFBLENBQWhDLENBQXNDaFUsQ0FB
QTJkLGFBQXRDLENBT3pCMEcsRUFBQSxDQUFtQnJrQixDQUFBekcsS0FBbkIsQ0FBQSxDQUFxQ3dy
QixDQUNoQ0MsRUFBTCxFQUNFekcsQ0FBQTVqQixLQUFBLENBQWMsR0FBZCxDQUFvQnFGLENBQUF6
RyxLQUFwQixDQUFxQyxZQUFyQyxDQUFtRHdyQixDQUFBM1EsU0FBbkQsQ0F2QjRDLENBMEJoRCxN
QUFPaVEsRUE1QjJGLENBK0JwRy9ELFFBQVNBLEVBQVUsQ0FBQ1AsQ0FBRCxDQUFjdmxCLENBQWQs
Q0FBcUJ5cUIsQ0FBckIsQ0FBK0JuRixDQUEvQixDQUE2Q3lCLENBQTdDLENBQ0MyRCxDQURELENB
Q2EsQ0E0RzlCQyxRQUFTQSxFQUEwQixDQUFDM3FCLENBQUQsQ0FBUTRxQixDQUFSLENBQXVCN0Ys
Q0FBdkIsQ0FBNEMsQ0FDN0UsSUFBSUQsQ0FHQzVzQixHQUFBLENBQVE4SCxDQUFSLENBQUwsR0FD
RStrQixDQUVBLENBRnNCNkYsQ0FFdEIsQ0FEQUEsQ0FDQSxDQURnQjVxQixDQUNoQixDQUFBQSxD
QUFBLENBQVFqTSxDQUhWLENBTUl5MkIsRUFBSixHQUNFMUYsQ0FERixDQUMwQitFLENBRDFCLENB
R0s5RSxFQUFMLEdBQ0VBLENBREYsQ0FDd0J5RixDQUFBLENBQWdDekcsRUFBQTVzQixPQUFBLEVB
QWhDLENBQW9ENHNCLEVBRDVFLENBR0EsT0FBT2dELEVBQUEsQ0FBa0IvbUIsQ0FBbEIsQ0FBeUI0
cUIsQ0FBekIsQ0FBd0M5RixDQUF4QyxDQUErREMsQ0FBL0QsQ0FBb0Y4RixFQUFwRixDQWhCc0Us
Q0E1R2pELElBQzFCdjFCLENBRDBCLENBQ25CeXpCLENBRG1CLENBQ1gvbUIsQ0FEVyxDQUNDRCxD
QURELENBQ2U4bkIsQ0FEZixDQUNtQzNGLEVBRG5DLENBQ2lESCxFQUczRWlGLEVBQUosR0FBb0J5
QixDQUFwQixFQUNFbEUsQ0FDQSxDQURRMEMsQ0FDUixDQUFBbEYsRUFBQSxDQUFXa0YsQ0FBQXJD
LFVBRmIsR0FJRTdDLEVBQ0EsQ0FEV2huQixDQUFBLENBQU8wdEIsQ0FBUCxDQUNYLENBQUFsRSxD
QUFBLENBQVEsSUFBSUUsRUFBSixDQUFlMUMsRUFBZixDQUF5QmtGLENBQXpCLENBTFYsQ0FRSVEs
RUFBSixHQUNFMW5CLENBREYsQ0FDaUIvQixDQUFBZ21CLEtBQUEsQ0FBVyxDQUFBLENBQVgsQ0FE
akIsQ0FJSWUsRUFBSixHQUdFN0MsRUFDQSxDQURleUcsQ0FDZixDQUFBekcsRUFBQWMsa0JBQUEs
Q0FBaUMrQixDQUpuQyxDQU9JbUQsRUFBSixHQUNFTCxDQURGLENBQ3VCSSxDQUFBLENBQWlCbEcs
RUFBakIsQ0FBMkJ3QyxDQUEzQixDQUFrQ3JDLEVBQWxDLENBQWdEZ0csQ0FBaEQsQ0FBc0Vub0Is
Q0FBdEUsQ0FBb0YvQixDQUFwRixDQUR2QixDQUlJeXBCLEVBQUosR0FFRXhwQixDQUFBbWxCLGVB
QUEsQ0FBdUJyQixFQUF2QixDQUFpQ2hpQixDQUFqQyxDQUErQyxDQUFBLENBQS9DLENBQXFELEVB
QUUrb0IsQ0FBRixHQUF3QkEsQ0FBeEIsR0FBOENyQixDQUE5QyxFQUNqRHFCLENBRGlELEdBQzNC
ckIsQ0FBQXNCLG9CQUQyQixFQUFyRCxDQUtBLENBSEE5cUIsQ0FBQXdrQixnQkFBQSxDQUF3QlYs
RUFBeEIsQ0FBa0MsQ0FBQSxDQUFsQyxDQUdBLENBRkFoaUIsQ0FBQXVoQixrQkFFQSxDQURJbUcs
Q0FBQW5HLGtCQUNKLENBQUEwSCxDQUFBLENBQTRCaHJCLENBQTVCLENBQW1DdW1CLENBQW5DLENB
QTBDeGtCLENBQTFDO0FBQzRCQSxDQUFBdWhCLGtCQUQ1QixDQUU0Qm1HLENBRjVCLENBRXNEMW5C
LENBRnRELENBUEYsQ0FXQSxJQUFJOG5CLENBQUosQ0FBd0IsQ0FFdEIsSUFBSW9CLEVBQWlCeEIs
Q0FBakJ3QixFQUE2Q0MsQ0FBakQsQ0FFSUMsQ0FDQUYsRUFBSixFQUFzQnBCLENBQUEsQ0FBbUJv
QixDQUFBbHNCLEtBQW5CLENBQXRCLEdBQ0U0aUIsQ0FHQSxDQUhXc0osQ0FBQTVILFdBQUFILGlC
QUdYLEVBRkFsaEIsQ0FFQSxDQUZhNm5CLENBQUEsQ0FBbUJvQixDQUFBbHNCLEtBQW5CLENBRWIs
R0FBa0JpRCxDQUFBb3BCLFdBQWxCLEVBQTJDekosQ0FBM0MsR0FDRXdKLENBQ0EsQ0FEd0JucEIs
Q0FDeEIsQ0FBQTBvQixDQUFBekUsa0JBQUEsQ0FDSStFLENBQUEsQ0FBNEJockIsQ0FBNUIsQ0FB
bUN1bUIsQ0FBbkMsQ0FBMEN2a0IsQ0FBQTRYLFNBQTFDLENBQzRCK0gsQ0FENUIsQ0FDc0NzSixD
QUR0QyxDQUhOLENBSkYsQ0FXQSxLQUFLMzFCLENBQUwsR0FBVXUwQixFQUFWLENBQThCLENBQzVC
N25CLENBQUEsQ0FBYTZuQixDQUFBLENBQW1CdjBCLENBQW5CLENBQ2IsS0FBSSsxQixFQUFtQnJw
QixDQUFBLEVBRW5CcXBCLEVBQUosR0FBeUJycEIsQ0FBQTRYLFNBQXpCLEdBR0U1WCxDQUFBNFgs
U0FFQSxDQUZzQnlSLENBRXRCLENBREF0SCxFQUFBNWpCLEtBQUEsQ0FBYyxHQUFkLENBQW9CN0ss
Q0FBcEIsQ0FBd0IsWUFBeEIsQ0FBc0MrMUIsQ0FBdEMsQ0FDQSxDQUFJcnBCLENBQUosR0FBbUJt
cEIsQ0FBbkIsR0FFRVQsQ0FBQXpFLGtCQUFBLEVBQ0EsQ0FBQXlFLENBQUF6RSxrQkFBQSxDQUNF
K0UsQ0FBQSxDQUE0QmhyQixDQUE1QixDQUFtQ3VtQixDQUFuQyxDQUEwQzhFLENBQTFDLENBQTRE
MUosQ0FBNUQsQ0FBc0VzSixDQUF0RSxDQUpKLENBTEYsQ0FKNEIsQ0FoQlIsQ0FvQ25CMzFCLENB
QUEsQ0FBSSxDQUFULEtBQVlhLENBQVosQ0FBaUJpekIsQ0FBQWgxQixPQUFqQixDQUFvQ2tCLENB
QXBDLENBQXdDYSxDQUF4QyxDQUE0Q2IsQ0FBQSxFQUE1QyxDQUNFeXpCLENBQ0EsQ0FEU0ssQ0FB
QSxDQUFXOXpCLENBQVgsQ0FDVCxDQUFBZzJCLENBQUEsQ0FBYXZDLENBQWIsQ0FDSUEsQ0FBQWhu
QixhQUFBLENBQXNCQSxDQUF0QixDQUFxQy9CLENBRHpDLENBRUkrakIsRUFGSixDQUdJd0MsQ0FI
SixDQUlJd0MsQ0FBQS9GLFFBSkosRUFJc0I0RyxDQUFBLENBQWViLENBQUF2SCxjQUFmLENBQXFD
dUgsQ0FBQS9GLFFBQXJDLENBQXFEZSxFQUFyRCxDQUErRDhGLENBQS9ELENBSnRCLENBS0kzRixF
QUxKLENBWUYsS0FBSTJHLEdBQWU3cUIsQ0FDZnlwQixFQUFKLEdBQWlDQSxDQUFBOEIsU0FBakMs
RUFBK0csSUFBL0csR0FBc0U5QixDQUFBK0IsWUFBdEUsSUFDRVgsRUFERixDQUNpQjlvQixDQURq
QixDQUdBd2pCLEVBQUEsRUFBZUEsQ0FBQSxDQUFZc0YsRUFBWjtBQUEwQkosQ0FBQWxaLFdBQTFC
LENBQStDeGQsQ0FBL0MsQ0FBMERnekIsQ0FBMUQsQ0FHZixLQUFLenhCLENBQUwsQ0FBUyt6QixD
QUFBajFCLE9BQVQsQ0FBOEIsQ0FBOUIsQ0FBc0MsQ0FBdEMsRUFBaUNrQixDQUFqQyxDQUF5Q0Es
Q0FBQSxFQUF6QyxDQUNFeXpCLENBQ0EsQ0FEU00sQ0FBQSxDQUFZL3pCLENBQVosQ0FDVCxDQUFB
ZzJCLENBQUEsQ0FBYXZDLENBQWIsQ0FDSUEsQ0FBQWhuQixhQUFBLENBQXNCQSxDQUF0QixDQUFx
Qy9CLENBRHpDLENBRUkrakIsRUFGSixDQUdJd0MsQ0FISixDQUlJd0MsQ0FBQS9GLFFBSkosRUFJ
c0I0RyxDQUFBLENBQWViLENBQUF2SCxjQUFmLENBQXFDdUgsQ0FBQS9GLFFBQXJDLENBQXFEZSxF
QUFyRCxDQUErRDhGLENBQS9ELENBSnRCLENBS0kzRixFQUxKLENBakc0QixDQTVTaENHLENBQUEs
Q0FBeUJBLENBQXpCLEVBQW1ELEVBcUJuRCxLQXRCcUQsSUFHakRvSCxFQUFtQixDQUFDN0ssTUFB
QUMsVUFINkIsQ0FJakRxSyxFQUFvQjdHLENBQUE2RyxrQkFKNkIsQ0FLakRoQixFQUF1QjdGLENB
QUE2RixxQkFMMEIsQ0FNakRULEVBQTJCcEYsQ0FBQW9GLHlCQU5zQixDQU9qRHFCLEVBQW9Cekcs
Q0FBQXlHLGtCQVA2QixDQVFqRFksRUFBNEJySCxDQUFBcUgsMEJBUnFCLENBU2pEQyxFQUF5QixD
QUFBLENBVHdCLENBVWpEQyxFQUFjLENBQUEsQ0FWbUMsQ0FXakRwQixFQUFnQ25HLENBQUFtRyw4
QkFYaUIsQ0FZakRxQixHQUFlNUMsQ0FBQXJDLFVBQWZpRixDQUF5Qzl1QixDQUFBLENBQU9pc0Is
Q0FBUCxDQVpRLENBYWpEeGpCLENBYmlELENBY2pEZ2MsQ0FkaUQsQ0FlakRzSyxDQWZpRCxDQWlC
akRDLEVBQW9CN0gsQ0FqQjZCLENBa0JqRDZFLEVBbEJpRCxDQXNCNUN6ekIsR0FBSSxDQXRCd0Ms
Q0FzQnJDYSxHQUFLMnNCLENBQUExdUIsT0FBckIsQ0FBd0NrQixFQUF4QyxDQUE0Q2EsRUFBNUMs
Q0FBZ0RiLEVBQUEsRUFBaEQsQ0FBcUQsQ0FDbkRrUSxDQUFBLENBQVlzZCxDQUFBLENBQVd4dEIs
RUFBWCxDQUNaLEtBQUlxekIsRUFBWW5qQixDQUFBd21CLFFBQWhCLENBQ0lwRCxFQUFVcGpCLENB
QUF5bUIsTUFHVnRELEVBQUosR0FDRWtELEVBREYsQ0FDaUJuRCxFQUFBLENBQVVNLENBQVYsQ0FB
dUJMLENBQXZCLENBQWtDQyxDQUFsQyxDQURqQixDQUdBa0QsRUFBQSxDQUFZLzNCLENBRVosSUFB
STAzQixDQUFKLENBQXVCam1CLENBQUF1ZCxTQUF2QixDQUNFLEtBR0YsSUFBSW1KLENBQUosQ0FB
cUIxbUIsQ0FBQXhGLE1BQXJCLENBSU93RixDQUFBZ21CLFlBZUw7Q0FkTXAxQixDQUFBLENBQVM4
MUIsQ0FBVCxDQUFKLEVBR0VDLENBQUEsQ0FBa0Isb0JBQWxCLENBQXdDMUMsQ0FBeEMsRUFBb0V5
QixDQUFwRSxDQUNrQjFsQixDQURsQixDQUM2QnFtQixFQUQ3QixDQUVBLENBQUFwQyxDQUFBLENB
QTJCamtCLENBTDdCLEVBU0UybUIsQ0FBQSxDQUFrQixvQkFBbEIsQ0FBd0MxQyxDQUF4QyxDQUFr
RWprQixDQUFsRSxDQUNrQnFtQixFQURsQixDQUtKLEVBQUFYLENBQUEsQ0FBb0JBLENBQXBCLEVB
QXlDMWxCLENBRzNDZ2MsRUFBQSxDQUFnQmhjLENBQUF6RyxLQUVYeXNCLEVBQUFobUIsQ0FBQWdt
QixZQUFMLEVBQThCaG1CLENBQUF4RCxXQUE5QixHQUNFa3FCLENBSUEsQ0FKaUIxbUIsQ0FBQXhE
LFdBSWpCLENBSEFrb0IsQ0FHQSxDQUh1QkEsQ0FHdkIsRUFIK0NwdkIsRUFBQSxFQUcvQyxDQUZB
cXhCLENBQUEsQ0FBa0IsR0FBbEIsQ0FBd0IzSyxDQUF4QixDQUF3QyxjQUF4QyxDQUNJMEksQ0FB
QSxDQUFxQjFJLENBQXJCLENBREosQ0FDeUNoYyxDQUR6QyxDQUNvRHFtQixFQURwRCxDQUVBLENB
QUEzQixDQUFBLENBQXFCMUksQ0FBckIsQ0FBQSxDQUFzQ2hjLENBTHhDLENBUUEsSUFBSTBtQixD
QUFKLENBQXFCMW1CLENBQUE2Z0IsV0FBckIsQ0FDRXNGLENBVUEsQ0FWeUIsQ0FBQSxDQVV6QixD
QUxLbm1CLENBQUE0bUIsTUFLTCxHQUpFRCxDQUFBLENBQWtCLGNBQWxCLENBQWtDVCxDQUFsQyxD
QUE2RGxtQixDQUE3RCxDQUF3RXFtQixFQUF4RSxDQUNBLENBQUFILENBQUEsQ0FBNEJsbUIsQ0FH
OUIsRUFBc0IsU0FBdEIsRUFBSTBtQixDQUFKLEVBQ0UxQixDQVNBLENBVGdDLENBQUEsQ0FTaEMs
Q0FSQWlCLENBUUEsQ0FSbUJqbUIsQ0FBQXVkLFNBUW5CLENBUEErSSxDQU9BLENBUFlELEVBT1os
Q0FOQUEsRUFNQSxDQU5lNUMsQ0FBQXJDLFVBTWYsQ0FMSTdwQixDQUFBLENBQU9qSixDQUFBdTRC
LGNBQUEsQ0FBdUIsR0FBdkIsQ0FBNkI3SyxDQUE3QixDQUE2QyxJQUE3QyxDQUN1QnlILENBQUEs
Q0FBY3pILENBQWQsQ0FEdkIsQ0FDc0QsR0FEdEQsQ0FBUCxDQUtKLENBSEF3SCxDQUdBLENBSGM2
QyxFQUFBLENBQWEsQ0FBYixDQUdkLENBRkFTLENBQUEsQ0FBWXBELENBQVosQ0Fwak5IdHlCLEVB
QUE1QixLQUFBLENBb2pOdUM4MkIsQ0Fwak52QyxDQUErQixDQUEvQixDQW9qTkcsQ0FBZ0Q5QyxD
QUFoRCxDQUVBLENBQUErQyxDQUFBLENBQW9COXJCLENBQUEsQ0FBUTZyQixDQUFSLENBQW1CNUgs
Q0FBbkIsQ0FBaUN1SCxDQUFqQyxDQUNRYyxDQURSLEVBQzRCQSxDQUFBeHRCLEtBRDVCLENBQ21E
LENBUXpDMnNCLDBCQUEyQkEsQ0FSYyxDQURuRCxDQVZ0QixHQXNCRUksQ0FFQSxDQUZZL3VCLENB
QUEsQ0FBT2tWLEVBQUEsQ0FBWStXLENBQVosQ0FBUCxDQUFBd0QsU0FBQSxFQUVaLENBREFYLEVB
QUE1dUIsTUFBQSxFQUNBLENBQUE4dUIsQ0FBQSxDQUFvQjlyQixDQUFBLENBQVE2ckIsQ0FBUixD
QUFtQjVILENBQW5CLENBeEJ0QixDQTRCRixJQUFJMWUsQ0FBQStsQixTQUFKLENBV0UsR0FWQUss
Q0FVSXJ1QixDQVZVLENBQUEsQ0FVVkEsQ0FUSjR1QixDQUFBLENBQWtCLFVBQWxCO0FBQThCckIs
Q0FBOUIsQ0FBaUR0bEIsQ0FBakQsQ0FBNERxbUIsRUFBNUQsQ0FTSXR1QixDQVJKdXRCLENBUUl2
dEIsQ0FSZ0JpSSxDQVFoQmpJLENBTkoydUIsQ0FNSTN1QixDQU5jekksQ0FBQSxDQUFXMFEsQ0FB
QStsQixTQUFYLENBQUQsQ0FDWC9sQixDQUFBK2xCLFNBQUEsQ0FBbUJNLEVBQW5CLENBQWlDNUMs
Q0FBakMsQ0FEVyxDQUVYempCLENBQUErbEIsU0FJRmh1QixDQUZKMnVCLENBRUkzdUIsQ0FGYWt2
QixFQUFBLENBQW9CUCxDQUFwQixDQUViM3VCLENBQUFpSSxDQUFBakksUUFBSixDQUF1QixDQUNy
Qmd2QixDQUFBLENBQW1CL21CLENBSWpCc21CLEVBQUEsQ0FybEtKbGIsRUFBQTlXLEtBQUEsQ0Fr
bEt1Qm95QixDQWxsS3ZCLENBa2xLRSxDQUdjUSxFQUFBLENBQWV4SCxFQUFBLENBQWExZixDQUFB
bW5CLGtCQUFiLENBQTBDL2EsQ0FBQSxDQUFLc2EsQ0FBTCxDQUExQyxDQUFmLENBSGQsQ0FDYyxF
QUlkbEQsRUFBQSxDQUFjOEMsQ0FBQSxDQUFVLENBQVYsQ0FFZCxJQUF3QixDQUF4QixFQUFJQSxD
QUFBMTNCLE9BQUosRUFBNkI0MEIsQ0FBQTEwQixTQUE3QixHQUFzREMsRUFBdEQsQ0FDRSxLQUFN
dXRCLEdBQUEsQ0FBZSxPQUFmLENBRUZOLENBRkUsQ0FFYSxFQUZiLENBQU4sQ0FLRjhLLENBQUEs
Q0FBWXBELENBQVosQ0FBMEIyQyxFQUExQixDQUF3QzdDLENBQXhDLENBRUk0RCxHQUFBQSxDQUFt
QixDQUFDdEYsTUFBTyxFQUFSLENBT25CdUYsRUFBQUEsQ0FBcUJuRyxFQUFBLENBQWtCc0MsQ0FB
bEIsQ0FBK0IsRUFBL0IsQ0FBbUM0RCxFQUFuQyxDQUN6QixLQUFJRSxFQUF3QmhLLENBQUF4cEIs
T0FBQSxDQUFrQmhFLEVBQWxCLENBQXNCLENBQXRCLENBQXlCd3RCLENBQUExdUIsT0FBekIsRUFB
OENrQixFQUE5QyxDQUFrRCxDQUFsRCxFQUV4Qm0wQixFQUFKLEVBQ0VzRCxFQUFBLENBQXdCRixD
QUF4QixDQUVGL0osRUFBQSxDQUFhQSxDQUFBL25CLE9BQUEsQ0FBa0I4eEIsQ0FBbEIsQ0FBQTl4
QixPQUFBLENBQTZDK3hCLENBQTdDLENBQ2JFLEVBQUEsQ0FBd0IvRCxDQUF4QixDQUF1QzJELEVB
QXZDLENBRUF6MkIsR0FBQSxDQUFLMnNCLENBQUExdUIsT0FqQ2dCLENBQXZCLElBbUNFeTNCLEdB
QUF4dUIsS0FBQSxDQUFrQjZ1QixDQUFsQixDQUlKLElBQUkxbUIsQ0FBQWdtQixZQUFKLENBQ0VJ
LENBZ0JBLENBaEJjLENBQUEsQ0FnQmQsQ0FmQU8sQ0FBQSxDQUFrQixVQUFsQixDQUE4QnJCLENB
QTlCLENBQWlEdGxCLENBQWpELENBQTREcW1CLEVBQTVELENBZUEsQ0FkQWYsQ0FjQSxDQWRvQnRs
QixDQWNwQixDQVpJQSxDQUFBakksUUFZSixHQVhFZ3ZCLENBV0YsQ0FYcUIvbUIsQ0FXckIsRUFS
QXNnQixDQVFBLENBUmFtSCxFQUFBLENBQW1CbkssQ0FBQXhwQixPQUFBLENBQWtCaEUsRUFBbEIs
Q0FBcUJ3dEIsQ0FBQTF1QixPQUFyQixDQUF5Q2tCLEVBQXpDLENBQW5CLENBQWdFdTJCLEVBQWhF
LENBQ1Q1QyxDQURTLENBQ01DLENBRE4sQ0FDb0J5QyxDQURwQixFQUM4Q0ksQ0FEOUMsQ0FDaUUz
QyxDQURqRSxDQUM2RUMsQ0FEN0UsQ0FDMEYsQ0FDakdhLHFCQUFzQkEsQ0FEMkUsQ0FFakdnQixr
QkFBb0JBLENBQXBCQSxHQUEwQzFsQixDQUExQzBsQixFQUF3REEsQ0FGeUMsQ0FHakd6Qix5QkFB
MEJBLENBSHVFO0FBSWpHcUIsa0JBQW1CQSxDQUo4RSxDQUtqR1ksMEJBQTJCQSxDQUxzRSxDQUQx
RixDQVFiLENBQUF2MUIsRUFBQSxDQUFLMnNCLENBQUExdUIsT0FqQlAsS0FrQk8sSUFBSW9SLENB
QUF2RixRQUFKLENBQ0wsR0FBSSxDQUNGOG9CLEVBQ0EsQ0FEU3ZqQixDQUFBdkYsUUFBQSxDQUFr
QjRyQixFQUFsQixDQUFnQzVDLENBQWhDLENBQStDOEMsQ0FBL0MsQ0FDVCxDQUFJajNCLENBQUEs
Q0FBV2kwQixFQUFYLENBQUosQ0FDRU8sQ0FBQSxDQUFXLElBQVgsQ0FBaUJQLEVBQWpCLENBQXlC
SixDQUF6QixDQUFvQ0MsQ0FBcEMsQ0FERixDQUVXRyxFQUZYLEVBR0VPLENBQUEsQ0FBV1AsRUFB
QVEsSUFBWCxDQUF1QlIsRUFBQVMsS0FBdkIsQ0FBb0NiLENBQXBDLENBQStDQyxDQUEvQyxDQUxB
LENBT0YsTUFBTzFyQixFQUFQLENBQVUsQ0FDVjBQLENBQUEsQ0FBa0IxUCxFQUFsQixDQUFxQkos
RUFBQSxDQUFZK3VCLEVBQVosQ0FBckIsQ0FEVSxDQUtWcm1CLENBQUFxaEIsU0FBSixHQUNFZixD
QUFBZSxTQUNBLENBRHNCLENBQUEsQ0FDdEIsQ0FBQTRFLENBQUEsQ0FBbUJ5QixJQUFBQyxJQUFB
LENBQVMxQixDQUFULENBQTJCam1CLENBQUF1ZCxTQUEzQixDQUZyQixDQXZLbUQsQ0E4S3JEK0Ms
Q0FBQTlsQixNQUFBLENBQW1Ca3JCLENBQW5CLEVBQW9FLENBQUEsQ0FBcEUsR0FBd0NBLENBQUFs
ckIsTUFDeEM4bEIsRUFBQUssd0JBQUEsQ0FBcUN3RixDQUNyQzdGLEVBQUFRLHNCQUFBLENBQW1D
c0YsQ0FDbkM5RixFQUFBTyxXQUFBLENBQXdCMEYsQ0FFeEIxSCxFQUFBbUcsOEJBQUEsQ0FBdURB
LENBR3ZELE9BQU8xRSxFQTVNOEMsQ0E4YXZEaUgsUUFBU0EsR0FBdUIsQ0FBQ2pLLENBQUQsQ0FB
YSxDQUUzQyxJQUYyQyxJQUVsQ3pzQixFQUFJLENBRjhCLENBRTNCQyxFQUFLd3NCLENBQUExdUIs
T0FBckIsQ0FBd0NpQyxDQUF4QyxDQUE0Q0MsQ0FBNUMsQ0FBZ0RELENBQUEsRUFBaEQsQ0FDRXlz
QixDQUFBLENBQVd6c0IsQ0FBWCxDQUFBLENBQWdCYSxFQUFBLENBQVE0ckIsQ0FBQSxDQUFXenNC
LENBQVgsQ0FBUixDQUF1QixDQUFDcXpCLGVBQWdCLENBQUEsQ0FBakIsQ0FBdkIsQ0FIeUIsQ0Fx
QjdDbkMsUUFBU0EsRUFBWSxDQUFDNkYsQ0FBRCxDQUFjcnVCLENBQWQsQ0FBb0I2QixDQUFwQixD
QUE4QnVqQixDQUE5QixDQUEyQ0MsQ0FBM0MsQ0FBNERpSixDQUE1RCxDQUNDQyxDQURELENBQ2Ms
Q0FDakMsR0FBSXZ1QixDQUFKLEdBQWFxbEIsQ0FBYixDQUE4QixNQUFPLEtBQ2pDanFCLEVBQUFB
LENBQVEsSUFDWixJQUFJaW9CLENBQUFydEIsZUFBQSxDQUE2QmdLLENBQTdCLENBQUosQ0FBd0Ms
Q0FBQSxJQUM3QnlHLENBQVdzZDtDQUFBQSxDQUFhOUksQ0FBQWhaLElBQUEsQ0FBY2pDLENBQWQs
Q0F0MkMxQjhqQixXQXMyQzBCLENBQWpDLEtBRHNDLElBRWxDdnRCLEVBQUksQ0FGOEIsQ0FFM0Jh
LEVBQUsyc0IsQ0FBQTF1QixPQURoQixDQUNtQ2tCLENBRG5DLENBQ3VDYSxDQUR2QyxDQUMyQ2Is
Q0FBQSxFQUQzQyxDQUVFLEdBQUksQ0FDRmtRLENBQ0EsQ0FEWXNkLENBQUEsQ0FBV3h0QixDQUFY
LENBQ1osRUFBSzZ1QixDQUFMLEdBQXFCcHdCLENBQXJCLEVBQWtDb3dCLENBQWxDLENBQWdEM2Us
Q0FBQXVkLFNBQWhELEdBQzhDLEVBRDlDLEVBQ0t2ZCxDQUFBeWQsU0FBQTVwQixRQUFBLENBQTJC
dUgsQ0FBM0IsQ0FETCxHQUVNeXNCLENBSUosR0FIRTduQixDQUdGLENBSGN0TyxFQUFBLENBQVFz
TyxDQUFSLENBQW1CLENBQUN3bUIsUUFBU3FCLENBQVYsQ0FBeUJwQixNQUFPcUIsQ0FBaEMsQ0FB
bkIsQ0FHZCxFQURBRixDQUFBcnpCLEtBQUEsQ0FBaUJ5TCxDQUFqQixDQUNBLENBQUFyTCxDQUFB
LENBQVFxTCxDQU5WLENBRkUsQ0FVRixNQUFPdEksQ0FBUCxDQUFVLENBQUUwUCxDQUFBLENBQWtC
MVAsQ0FBbEIsQ0FBRixDQWJ3QixDQWdCeEMsTUFBTy9DLEVBbkIwQixDQStCbkMrdEIsUUFBU0Es
RUFBdUIsQ0FBQ25wQixDQUFELENBQU8sQ0FDckMsR0FBSXFqQixDQUFBcnRCLGVBQUEsQ0FBNkJn
SyxDQUE3QixDQUFKLENBQ0UsSUFEc0MsSUFDbEIrakIsRUFBYTlJLENBQUFoWixJQUFBLENBQWNq
QyxDQUFkLENBbjRDMUI4akIsV0FtNEMwQixDQURLLENBRWxDdnRCLEVBQUksQ0FGOEIsQ0FFM0Jh
LEVBQUsyc0IsQ0FBQTF1QixPQURoQixDQUNtQ2tCLENBRG5DLENBQ3VDYSxDQUR2QyxDQUMyQ2Is
Q0FBQSxFQUQzQyxDQUdFLEdBREFrUSxDQUNJK25CLENBRFF6SyxDQUFBLENBQVd4dEIsQ0FBWCxD
QUNSaTRCLENBQUEvbkIsQ0FBQStuQixhQUFKLENBQ0UsTUFBTyxDQUFBLENBSWIsT0FBTyxDQUFB
LENBVjhCLENBcUJ2Q1AsUUFBU0EsRUFBdUIsQ0FBQ2gzQixDQUFELENBQU1PLENBQU4sQ0FBVyxD
QUFBLElBQ3JDaTNCLEVBQVVqM0IsQ0FBQSt3QixNQUQyQixDQUVyQ21HLEVBQVV6M0IsQ0FBQXN4
QixNQUYyQixDQUdyQ3ZELEVBQVcvdEIsQ0FBQTR3QixVQUdmbHlCLEVBQUEsQ0FBUXNCLENBQVIs
Q0FBYSxRQUFRLENBQUNQLENBQUQsQ0FBUVosQ0FBUixDQUFhLENBQ1gsR0FBckIsRUFBSUEsQ0FB
QTBGLE9BQUEsQ0FBVyxDQUFYLENBQUosR0FDTWhFLENBQUEsQ0FBSTFCLENBQUosQ0FHSixFQUhn
QjBCLENBQUEsQ0FBSTFCLENBQUosQ0FHaEIsR0FINkJZLENBRzdCLEdBRkVBLENBRUYsR0FGb0Is
T0FBUixHQUFBWixDQUFBLENBQWtCLEdBQWxCLENBQXdCLEdBRXBDLEVBRjJDMEIsQ0FBQSxDQUFJ
MUIsQ0FBSixDQUUzQyxFQUFBbUIsQ0FBQTAzQixLQUFBLENBQVM3NEIsQ0FBVCxDQUFjWSxDQUFk
LENBQXFCLENBQUEsQ0FBckIsQ0FBMkIrM0IsQ0FBQSxDQUFRMzRCLENBQVIsQ0FBM0IsQ0FKRixD
QURnQyxDQUFsQyxDQVVBSCxFQUFBLENBQVE2QixDQUFSLENBQWEsUUFBUSxDQUFDZCxDQUFELENB
QVFaLENBQVIsQ0FBYSxDQUNyQixPQUFYO0FBQUlBLENBQUosRUFDRWl2QixDQUFBLENBQWFDLENB
QWIsQ0FBdUJ0dUIsQ0FBdkIsQ0FDQSxDQUFBTyxDQUFBLENBQUksT0FBSixDQUFBLEVBQWdCQSxD
QUFBLENBQUksT0FBSixDQUFBLENBQWVBLENBQUEsQ0FBSSxPQUFKLENBQWYsQ0FBOEIsR0FBOUIs
Q0FBb0MsRUFBcEQsRUFBMERQLENBRjVELEVBR2tCLE9BQVgsRUFBSVosQ0FBSixFQUNMa3ZCLENB
QUFyckIsS0FBQSxDQUFjLE9BQWQsQ0FBdUJxckIsQ0FBQXJyQixLQUFBLENBQWMsT0FBZCxDQUF2
QixDQUFnRCxHQUFoRCxDQUFzRGpELENBQXRELENBQ0EsQ0FBQU8sQ0FBQSxNQUFBLEVBQWdCQSxD
QUFBLE1BQUEsQ0FBZUEsQ0FBQSxNQUFmLENBQThCLEdBQTlCLENBQW9DLEVBQXBELEVBQTBEUCxD
QUZyRCxFQU1xQixHQU5yQixFQU1JWixDQUFBMEYsT0FBQSxDQUFXLENBQVgsQ0FOSixFQU02QnZF
LENBQUFqQixlQUFBLENBQW1CRixDQUFuQixDQU43QixHQU9MbUIsQ0FBQSxDQUFJbkIsQ0FBSixD
QUNBLENBRFdZLENBQ1gsQ0FBQWc0QixDQUFBLENBQVE1NEIsQ0FBUixDQUFBLENBQWUyNEIsQ0FB
QSxDQUFRMzRCLENBQVIsQ0FSVixDQUp5QixDQUFsQyxDQWhCeUMsQ0FrQzNDbzRCLFFBQVNBLEdB
QWtCLENBQUNuSyxDQUFELENBQWErSSxDQUFiLENBQTJCOEIsQ0FBM0IsQ0FDdkJySSxDQUR1QixD
QUNUeUcsQ0FEUyxDQUNVM0MsQ0FEVixDQUNzQkMsQ0FEdEIsQ0FDbUNoRixDQURuQyxDQUMyRCxD
QUFBLElBQ2hGdUosRUFBWSxFQURvRSxDQUVoRkMsQ0FGZ0YsQ0FHaEZDLENBSGdGLENBSWhGQyxF
QUE0QmxDLENBQUEsQ0FBYSxDQUFiLENBSm9ELENBS2hGbUMsRUFBcUJsTCxDQUFBdkosTUFBQSxF
QUwyRCxDQU1oRjBVLEVBQXVCLzJCLEVBQUEsQ0FBUTgyQixDQUFSLENBQTRCLENBQ2pEeEMsWUFB
YSxJQURvQyxDQUM5Qm5GLFdBQVksSUFEa0IsQ0FDWjlvQixRQUFTLElBREcsQ0FDR3d0QixvQkFB
cUJpRCxDQUR4QixDQUE1QixDQU55RCxDQVNoRnhDLEVBQWUxMkIsQ0FBQSxDQUFXazVCLENBQUF4
QyxZQUFYLENBQUQsQ0FDUndDLENBQUF4QyxZQUFBLENBQStCSyxDQUEvQixDQUE2QzhCLENBQTdD
LENBRFEsQ0FFUkssQ0FBQXhDLFlBWDBFLENBWWhGbUIsRUFBb0JxQixDQUFBckIsa0JBRXhCZCxF
QUFBNXVCLE1BQUEsRUFFQStSLEVBQUEsQ0FBaUJ3YyxDQUFqQixDQUFBMEMsS0FBQSxDQUNRLFFB
QVEsQ0FBQ0MsQ0FBRCxDQUFVLENBQUEsSUFDbEJuRixDQURrQixDQUN5QnZELENBRS9DMEksRUFB
QSxDQUFVMUIsRUFBQSxDQUFvQjBCLENBQXBCLENBRVYsSUFBSUgsQ0FBQXp3QixRQUFKLENBQWdD
LENBSTVCdXVCLENBQUEsQ0E5Z0xKbGIsRUFBQTlXLEtBQUEsQ0EyZ0x1QnEwQixDQTNnTHZCLENB
MmdMRSxDQUdjekIsRUFBQSxDQUFleEgsRUFBQSxDQUFheUgsQ0FBYixDQUFnQy9hLENBQUEsQ0FB
S3VjLENBQUwsQ0FBaEMsQ0FBZixDQUhkO0FBQ2MsRUFJZG5GLEVBQUEsQ0FBYzhDLENBQUEsQ0FB
VSxDQUFWLENBRWQsSUFBd0IsQ0FBeEIsRUFBSUEsQ0FBQTEzQixPQUFKLEVBQTZCNDBCLENBQUEx
MEIsU0FBN0IsR0FBc0RDLEVBQXRELENBQ0UsS0FBTXV0QixHQUFBLENBQWUsT0FBZixDQUVGa00s
Q0FBQWp2QixLQUZFLENBRXVCeXNCLENBRnZCLENBQU4sQ0FLRjRDLENBQUEsQ0FBb0IsQ0FBQzlH
LE1BQU8sRUFBUixDQUNwQmdGLEVBQUEsQ0FBWWhILENBQVosQ0FBMEJ1RyxDQUExQixDQUF3QzdD
LENBQXhDLENBQ0EsS0FBSTZELEVBQXFCbkcsRUFBQSxDQUFrQnNDLENBQWxCLENBQStCLEVBQS9C
LENBQW1Db0YsQ0FBbkMsQ0FFckJoNEIsRUFBQSxDQUFTNDNCLENBQUFodUIsTUFBVCxDQUFKLEVB
Q0Urc0IsRUFBQSxDQUF3QkYsQ0FBeEIsQ0FFRi9KLEVBQUEsQ0FBYStKLENBQUE5eEIsT0FBQSxD
QUEwQituQixDQUExQixDQUNia0ssRUFBQSxDQUF3QlcsQ0FBeEIsQ0FBZ0NTLENBQWhDLENBdEI4
QixDQUFoQyxJQXdCRXBGLEVBQ0EsQ0FEYytFLENBQ2QsQ0FBQWxDLENBQUF4dUIsS0FBQSxDQUFr
Qjh3QixDQUFsQixDQUdGckwsRUFBQXJqQixRQUFBLENBQW1Cd3VCLENBQW5CLENBRUFKLEVBQUEs
Q0FBMEJsSCxDQUFBLENBQXNCN0QsQ0FBdEIsQ0FBa0NrRyxDQUFsQyxDQUErQzJFLENBQS9DLENB
Q3RCNUIsQ0FEc0IsQ0FDSEYsQ0FERyxDQUNXbUMsQ0FEWCxDQUMrQjVFLENBRC9CLENBQzJDQyxD
QUQzQyxDQUV0QmhGLENBRnNCLENBRzFCM3ZCLEVBQUEsQ0FBUTR3QixDQUFSLENBQXNCLFFBQVEs
Q0FBQy9zQixDQUFELENBQU9qRCxDQUFQLENBQVUsQ0FDbENpRCxDQUFKLEVBQVl5d0IsQ0FBWixH
QUNFMUQsQ0FBQSxDQUFhaHdCLENBQWIsQ0FERixDQUNvQnUyQixDQUFBLENBQWEsQ0FBYixDQURw
QixDQURzQyxDQUF4QyxDQU9BLEtBRkFpQyxDQUVBLENBRjJCdEosQ0FBQSxDQUFhcUgsQ0FBQSxD
QUFhLENBQWIsQ0FBQXRhLFdBQWIsQ0FBeUN3YSxDQUF6QyxDQUUzQixDQUFPNkIsQ0FBQXg1QixP
QUFQLENBQUEsQ0FBeUIsQ0FDbkI0TCxDQUFBQSxDQUFRNHRCLENBQUFyVSxNQUFBLEVBQ1I4VSxF
QUFBQSxDQUF5QlQsQ0FBQXJVLE1BQUEsRUFGTixLQUduQitVLEVBQWtCVixDQUFBclUsTUFBQSxF
QUhDLENBSW5Cd04sR0FBb0I2RyxDQUFBclUsTUFBQSxFQUpELENBS25Ca1IsRUFBV29CLENBQUEs
Q0FBYSxDQUFiLENBRWYsSUFBSTBDLENBQUF2dUIsQ0FBQXV1QixZQUFKLENBQUEsQ0FFQSxHQUFJ
RixDQUFKLEdBQStCTixDQUEvQixDQUEwRCxDQUN4RCxJQUFJUyxFQUFhSCxDQUFBckssVUFFWEss
RUFBQW1HLDhCQUFOLEVBQ0l3RCxDQUFBendCLFFBREosR0FHRWt0QixDQUhGLENBR2F4WSxFQUFB
LENBQVkrVyxDQUFaLENBSGIsQ0FLQXNELEVBQUEsQ0FBWWdDLENBQVosQ0FBNkJ2eEIsQ0FBQSxD
QUFPc3hCLENBQVAsQ0FBN0IsQ0FBNkQ1RCxDQUE3RCxDQUdBM0csRUFBQSxDQUFhL21CLENBQUEs
Q0FBTzB0QixDQUFQLENBQWIsQ0FBK0IrRCxDQUEvQixDQVh3RCxDQWN4RC9JLENBQUEsQ0FERW9J
LENBQUExSCx3QkFBSixDQUMyQkMsQ0FBQSxDQUF3QnBtQixDQUF4QixDQUErQjZ0QixDQUFBeEgs
V0FBL0I7QUFBbUVVLEVBQW5FLENBRDNCLENBRzJCQSxFQUUzQjhHLEVBQUEsQ0FBd0JDLENBQXhC
LENBQWtEOXRCLENBQWxELENBQXlEeXFCLENBQXpELENBQW1FbkYsQ0FBbkUsQ0FDRUcsQ0FERixD
QUMwQm9JLENBRDFCLENBcEJBLENBUHVCLENBOEJ6QkQsQ0FBQSxDQUFZLElBM0VVLENBRDFCLENB
K0VBLE9BQU9hLFNBQTBCLENBQUNDLENBQUQsQ0FBb0IxdUIsQ0FBcEIsQ0FBMkJ6SCxDQUEzQixD
QUFpQ3dJLENBQWpDLENBQThDZ21CLENBQTlDLENBQWlFLENBQzVGdEIsQ0FBQUEsQ0FBeUJzQixD
QUN6Qi9tQixFQUFBdXVCLFlBQUosR0FDSVgsQ0FBSixDQUNFQSxDQUFBN3pCLEtBQUEsQ0FBZWlH
LENBQWYsQ0FDZXpILENBRGYsQ0FFZXdJLENBRmYsQ0FHZTBrQixDQUhmLENBREYsRUFNTW9JLENB
QUExSCx3QkFHSixHQUZFVixDQUVGLENBRjJCVyxDQUFBLENBQXdCcG1CLENBQXhCLENBQStCNnRC
LENBQUF4SCxXQUEvQixDQUFtRVUsQ0FBbkUsQ0FFM0IsRUFBQThHLENBQUEsQ0FBd0JDLENBQXhC
LENBQWtEOXRCLENBQWxELENBQXlEekgsQ0FBekQsQ0FBK0R3SSxDQUEvRCxDQUE0RTBrQixDQUE1
RSxDQUN3Qm9JLENBRHhCLENBVEYsQ0FEQSxDQUZnRyxDQS9GZCxDQXFIdEZwRixRQUFTQSxHQUFV
LENBQUNuaUIsQ0FBRCxDQUFJNlYsQ0FBSixDQUFPLENBQ3hCLElBQUl3UyxFQUFPeFMsQ0FBQTRH
LFNBQVA0TCxDQUFvQnJvQixDQUFBeWMsU0FDeEIsT0FBYSxFQUFiLEdBQUk0TCxDQUFKLENBQXVC
QSxDQUF2QixDQUNJcm9CLENBQUF2SCxLQUFKLEdBQWVvZCxDQUFBcGQsS0FBZixDQUErQnVILENB
QUF2SCxLQUFELENBQVVvZCxDQUFBcGQsS0FBVixDQUFxQixFQUFyQixDQUF5QixDQUF2RCxDQUNP
dUgsQ0FBQWxOLE1BRFAsQ0FDaUIraUIsQ0FBQS9pQixNQUpPLENBTzFCK3lCLFFBQVNBLEVBQWlC
LENBQUN5QyxDQUFELENBQU9DLENBQVAsQ0FBMEJycEIsQ0FBMUIsQ0FBcUN4TSxDQUFyQyxDQUE4
QyxDQUV0RTgxQixRQUFTQSxFQUF1QixDQUFDQyxDQUFELENBQWEsQ0FDM0MsTUFBT0EsRUFBQSxD
QUNKLFlBREksQ0FDV0EsQ0FEWCxDQUN3QixHQUR4QixDQUVMLEVBSHlDLENBTTdDLEdBQUlGLENB
QUosQ0FDRSxLQUFNL00sR0FBQSxDQUFlLFVBQWYsQ0FDRitNLENBQUE5dkIsS0FERSxDQUNzQit2
QixDQUFBLENBQXdCRCxDQUFBaHFCLGFBQXhCLENBRHRCLENBRUZXLENBQUF6RyxLQUZFLENBRWMr
dkIsQ0FBQSxDQUF3QnRwQixDQUFBWCxhQUF4QixDQUZkLENBRStEK3BCLENBRi9ELENBRXFFOXhC
LEVBQUEsQ0FBWTlELENBQVosQ0FGckUsQ0FBTixDQVRvRSxDQWdCeEV1dkIsUUFBU0EsR0FBMkIs
Q0FBQ3pGLENBQUQsQ0FBYWtNLENBQWIsQ0FBbUIsQ0FDckQsSUFBSUMsRUFBZ0JqaUIsQ0FBQSxD
QUFhZ2lCLENBQWIsQ0FBbUIsQ0FBQSxDQUFuQixDQUNoQkMsRUFBSixFQUNFbk0sQ0FBQS9vQixL
QUFBLENBQWdCLENBQ2RncEIsU0FBVSxDQURJLENBRWQ5aUIsUUFBU2l2QixRQUFpQyxDQUFDQyxD
QUFELENBQWUsQ0FDbkRDLENBQUFBO0FBQXFCRCxDQUFBaDRCLE9BQUEsRUFBekIsS0FDSWs0QixF
QUFtQixDQUFFajdCLENBQUFnN0IsQ0FBQWg3QixPQUlyQmk3QixFQUFKLEVBQXNCcHZCLENBQUFx
dkIsa0JBQUEsQ0FBMEJGLENBQTFCLENBRXRCLE9BQU9HLFNBQThCLENBQUN2dkIsQ0FBRCxDQUFR
ekgsQ0FBUixDQUFjLENBQ2pELElBQUlwQixFQUFTb0IsQ0FBQXBCLE9BQUEsRUFDUms0QixFQUFM
LEVBQXVCcHZCLENBQUFxdkIsa0JBQUEsQ0FBMEJuNEIsQ0FBMUIsQ0FDdkI4SSxFQUFBdXZCLGlC
QUFBLENBQXlCcjRCLENBQXpCLENBQWlDODNCLENBQUFRLFlBQWpDLENBQ0F6dkIsRUFBQTVILE9B
QUEsQ0FBYTYyQixDQUFiLENBQTRCUyxRQUFpQyxDQUFDajZCLENBQUQsQ0FBUSxDQUNuRThDLENB
QUEsQ0FBSyxDQUFMLENBQUErckIsVUFBQSxDQUFvQjd1QixDQUQrQyxDQUFyRSxDQUppRCxDQVJJ
LENBRjNDLENBQWhCLENBSG1ELENBMkJ2RHl2QixRQUFTQSxHQUFZLENBQUN4UyxDQUFELENBQU82
WSxDQUFQLENBQWlCLENBQ3BDN1ksQ0FBQSxDQUFPelosQ0FBQSxDQUFVeVosQ0FBVixFQUFrQixN
QUFsQixDQUNQLFFBQVFBLENBQVIsRUFDQSxLQUFLLEtBQUwsQ0FDQSxLQUFLLE1BQUwsQ0FDRSxJ
QUFJaWQsRUFBVTc3QixDQUFBZ2QsY0FBQSxDQUF1QixLQUF2QixDQUNkNmUsRUFBQXZlLFVBQUEs
Q0FBb0IsR0FBcEIsQ0FBMEJzQixDQUExQixDQUFpQyxHQUFqQyxDQUF1QzZZLENBQXZDLENBQWtE
LElBQWxELENBQXlEN1ksQ0FBekQsQ0FBZ0UsR0FDaEUsT0FBT2lkLEVBQUFwZSxXQUFBLENBQW1C
LENBQW5CLENBQUFBLFdBQ1QsU0FDRSxNQUFPZ2EsRUFQVCxDQUZvQyxDQWN0Q3FFLFFBQVNBLEVB
QWlCLENBQUNyM0IsQ0FBRCxDQUFPczNCLENBQVAsQ0FBMkIsQ0FDbkQsR0FBMEIsUUFBMUIsRUFB
SUEsQ0FBSixDQUNFLE1BQU9yaEIsRUFBQXNoQixLQUVULEtBQUl0d0IsRUFBTXpHLEVBQUEsQ0FB
VVIsQ0FBVixDQUVWLElBQTBCLFdBQTFCLEVBQUlzM0IsQ0FBSixFQUNZLE1BRFosRUFDS3J3QixD
QURMLEVBQzRDLFFBRDVDLEVBQ3NCcXdCLENBRHRCLEVBRVksS0FGWixFQUVLcndCLENBRkwsR0FF
NEMsS0FGNUMsRUFFc0Jxd0IsQ0FGdEI7QUFHNEMsT0FINUMsRUFHc0JBLENBSHRCLEVBSUUsTUFB
T3JoQixFQUFBdWhCLGFBVjBDLENBZXJEM0gsUUFBU0EsRUFBMkIsQ0FBQzd2QixDQUFELENBQU91
cUIsQ0FBUCxDQUFtQnJ0QixDQUFuQixDQUEwQnNKLENBQTFCLENBQWdDaXhCLENBQWhDLENBQThD
LENBQ2hGLElBQUlDLEVBQWlCTCxDQUFBLENBQWtCcjNCLENBQWxCLENBQXdCd0csQ0FBeEIsQ0FD
ckJpeEIsRUFBQSxDQUFlek4sQ0FBQSxDQUFxQnhqQixDQUFyQixDQUFmLEVBQTZDaXhCLENBRTdD
LEtBQUlmLEVBQWdCamlCLENBQUEsQ0FBYXZYLENBQWIsQ0FBb0IsQ0FBQSxDQUFwQixDQUEwQnc2
QixDQUExQixDQUEwQ0QsQ0FBMUMsQ0FHcEIsSUFBS2YsQ0FBTCxDQUFBLENBR0EsR0FBYSxVQUFi
LEdBQUlsd0IsQ0FBSixFQUErQyxRQUEvQyxHQUEyQmhHLEVBQUEsQ0FBVVIsQ0FBVixDQUEzQixD
QUNFLEtBQU11cEIsR0FBQSxDQUFlLFVBQWYsQ0FFRmhsQixFQUFBLENBQVl2RSxDQUFaLENBRkUs
Q0FBTixDQUtGdXFCLENBQUEvb0IsS0FBQSxDQUFnQixDQUNkZ3BCLFNBQVUsR0FESSxDQUVkOWlC
LFFBQVNBLFFBQVEsRUFBRyxDQUNoQixNQUFPLENBQ0xzcEIsSUFBSzJHLFFBQWlDLENBQUNsd0Is
Q0FBRCxDQUFRaEgsQ0FBUixDQUFpQk4sQ0FBakIsQ0FBdUIsQ0FDdkR5M0IsQ0FBQUEsQ0FBZXoz
QixDQUFBeTNCLFlBQWZBLEdBQW9DejNCLENBQUF5M0IsWUFBcENBLENBQXVELEVBQXZEQSxDQUVK
LElBQUkxTixDQUFBM29CLEtBQUEsQ0FBK0JpRixDQUEvQixDQUFKLENBQ0UsS0FBTStpQixHQUFB
LENBQWUsYUFBZixDQUFOLENBTUYsSUFBSXNPLEVBQVcxM0IsQ0FBQSxDQUFLcUcsQ0FBTCxDQUNY
cXhCLEVBQUosR0FBaUIzNkIsQ0FBakIsR0FJRXc1QixDQUNBLENBRGdCbUIsQ0FDaEIsRUFENEJw
akIsQ0FBQSxDQUFhb2pCLENBQWIsQ0FBdUIsQ0FBQSxDQUF2QixDQUE2QkgsQ0FBN0IsQ0FBNkNE
LENBQTdDLENBQzVCLENBQUF2NkIsQ0FBQSxDQUFRMjZCLENBTFYsQ0FVS25CLEVBQUwsR0FLQXYy
QixDQUFBLENBQUtxRyxDQUFMLENBR0EsQ0FIYWt3QixDQUFBLENBQWNqdkIsQ0FBZCxDQUdiLENB
REFxd0IsQ0FBQ0YsQ0FBQSxDQUFZcHhCLENBQVosQ0FBRHN4QixHQUF1QkYsQ0FBQSxDQUFZcHhC
LENBQVosQ0FBdkJzeEIsQ0FBMkMsRUFBM0NBLFVBQ0EsQ0FEMEQsQ0FBQSxDQUMxRCxDQUFBajRC
LENBQUNNLENBQUF5M0IsWUFBRC8zQixFQUFxQk0sQ0FBQXkzQixZQUFBLENBQWlCcHhCLENBQWpC
LENBQUF1eEIsUUFBckJsNEIsRUFBdUQ0SCxDQUF2RDVILFFBQUEsQ0FDUzYyQixDQURULENBQ3dC
UyxRQUFpQyxDQUFDVSxDQUFELENBQVdHLENBQVgsQ0FBcUIsQ0FPN0QsT0FBYixHQUFJeHhCLENB
QUosRUFBd0JxeEIsQ0FBeEIsRUFBb0NHLENBQXBDLENBQ0U3M0IsQ0FBQTgzQixhQUFBLENBQWtC
SixDQUFsQixDQUE0QkcsQ0FBNUIsQ0FERixDQUdFNzNCLENBQUFnMUIsS0FBQSxDQUFVM3VCLENB
QVY7QUFBZ0JxeEIsQ0FBaEIsQ0FWd0UsQ0FEOUUsQ0FSQSxDQXJCMkQsQ0FEeEQsQ0FEUyxDQUZO
LENBQWhCLENBVEEsQ0FQZ0YsQ0FnRmxGOUQsUUFBU0EsRUFBVyxDQUFDaEgsQ0FBRCxDQUFlbUws
Q0FBZixDQUFpQ0MsQ0FBakMsQ0FBMEMsQ0FBQSxJQUN4REMsRUFBdUJGLENBQUEsQ0FBaUIsQ0FB
akIsQ0FEaUMsQ0FFeERHLEVBQWNILENBQUFyOEIsT0FGMEMsQ0FHeEQrQyxFQUFTdzVCLENBQUFu
YyxXQUgrQyxDQUl4RGxmLENBSndELENBSXJEYSxDQUVQLElBQUltdkIsQ0FBSixDQUNFLElBQUto
d0IsQ0FBTyxDQUFILENBQUcsQ0FBQWEsQ0FBQSxDQUFLbXZCLENBQUFseEIsT0FBakIsQ0FBc0Nr
QixDQUF0QyxDQUEwQ2EsQ0FBMUMsQ0FBOENiLENBQUEsRUFBOUMsQ0FDRSxHQUFJZ3dCLENBQUEs
Q0FBYWh3QixDQUFiLENBQUosRUFBdUJxN0IsQ0FBdkIsQ0FBNkMsQ0FDM0NyTCxDQUFBLENBQWFo
d0IsQ0FBQSxFQUFiLENBQUEsQ0FBb0JvN0IsQ0FDSkcsRUFBQUEsQ0FBS3g2QixDQUFMdzZCLENB
QVNELENBQVRDLENBQXVCLENBQXZDLEtBQVMsSUFDQXY2QixFQUFLZ3ZCLENBQUFseEIsT0FEZCxD
QUVLaUMsQ0FGTCxDQUVTQyxDQUZULENBRWFELENBQUEsRUFBQSxDQUFLdzZCLENBQUEsRUFGbEIs
Q0FHTUEsQ0FBSixDQUFTdjZCLENBQVQsQ0FDRWd2QixDQUFBLENBQWFqdkIsQ0FBYixDQURGLENB
Q29CaXZCLENBQUEsQ0FBYXVMLENBQWIsQ0FEcEIsQ0FHRSxPQUFPdkwsQ0FBQSxDQUFhanZCLENB
QWIsQ0FHWGl2QixFQUFBbHhCLE9BQUEsRUFBdUJ3OEIsQ0FBdkIsQ0FBcUMsQ0FLakN0TCxFQUFB
MXdCLFFBQUosR0FBNkIrN0IsQ0FBN0IsR0FDRXJMLENBQUExd0IsUUFERixDQUN5Qjg3QixDQUR6
QixDQUdBLE1BbkIyQyxDQXdCN0N2NUIsQ0FBSixFQUNFQSxDQUFBMjVCLGFBQUEsQ0FBb0JKLENB
QXBCLENBQTZCQyxDQUE3QixDQUlFamdCLEVBQUFBLENBQVc1YyxDQUFBNmMsdUJBQUEsRUFDZkQs
RUFBQUcsWUFBQSxDQUFxQjhmLENBQXJCLENBRUk1ekIsRUFBQWcwQixRQUFBLENBQWVKLENBQWYs
Q0FBSixHQUlFNXpCLENBQUEsQ0FBTzJ6QixDQUFQLENBQUF2d0IsS0FBQSxDQUFxQnBELENBQUEs
Q0FBTzR6QixDQUFQLENBQUF4d0IsS0FBQSxFQUFyQixDQUtBLENBQUt5QixFQUFMLEVBVUVVLEVB
Q0EsQ0FEbUMsQ0FBQSxDQUNuQyxDQUFBVixFQUFBTSxVQUFBLENBQWlCLENBQUN5dUIsQ0FBRCxD
QUFqQixDQVhGLEVBQ0UsT0FBTzV6QixDQUFBa2MsTUFBQSxDQUFhMFgsQ0FBQSxDQUFxQjV6QixD
QUFBaTBCLFFBQXJCLENBQWIsQ0FWWCxDQXdCU0MsRUFBQUEsQ0FBSSxDQUFiLEtBQWdCQyxDQUFo
QixDQUFxQlQsQ0FBQXI4QixPQUFyQixDQUE4QzY4QixDQUE5QyxDQUFrREMsQ0FBbEQsQ0FBc0RE
LENBQUEsRUFBdEQsQ0FDTWo0QixDQUdKLENBSGN5M0IsQ0FBQSxDQUFpQlEsQ0FBakIsQ0FHZCxD
QUZBbDBCLENBQUEsQ0FBTy9ELENBQVAsQ0FBQWdvQixPQUFBLEVBRUEsQ0FEQXRRLENBQUFHLFlB
QUEsQ0FBcUI3WCxDQUFyQixDQUNBLENBQUEsT0FBT3kzQixDQUFBLENBQWlCUSxDQUFqQixDQUdU
UixFQUFBLENBQWlCLENBQWpCLENBQUEsQ0FBc0JDLENBQ3RCRCxFQUFBcjhCLE9BQUEsQ0FBMEIs
Q0F4RWtDLENBNEU5RHUxQixRQUFTQSxFQUFrQixDQUFDdnVCLENBQUQ7QUFBSysxQixDQUFMLENB
QWlCLENBQzFDLE1BQU94NkIsRUFBQSxDQUFPLFFBQVEsRUFBRyxDQUFFLE1BQU95RSxFQUFBRyxN
QUFBLENBQVMsSUFBVCxDQUFlMUUsU0FBZixDQUFULENBQWxCLENBQXlEdUUsQ0FBekQsQ0FBNkQr
MUIsQ0FBN0QsQ0FEbUMsQ0FLNUM3RixRQUFTQSxFQUFZLENBQUN2QyxDQUFELENBQVMvb0IsQ0FB
VCxDQUFnQitqQixDQUFoQixDQUEwQndDLENBQTFCLENBQWlDVyxDQUFqQyxDQUE4Q2hELENBQTlD
LENBQTRELENBQy9FLEdBQUksQ0FDRjZFLENBQUEsQ0FBTy9vQixDQUFQLENBQWMrakIsQ0FBZCxD
QUF3QndDLENBQXhCLENBQStCVyxDQUEvQixDQUE0Q2hELENBQTVDLENBREUsQ0FFRixNQUFPaG5C
LENBQVAsQ0FBVSxDQUNWMFAsQ0FBQSxDQUFrQjFQLENBQWxCLENBQXFCSixFQUFBLENBQVlpbkIs
Q0FBWixDQUFyQixDQURVLENBSG1FLENBV2pGaUgsUUFBU0EsRUFBMkIsQ0FBQ2hyQixDQUFELENB
QVF1bUIsQ0FBUixDQUFlOXNCLENBQWYsQ0FBNEJrb0IsQ0FBNUIsQ0FDQ25jLENBREQsQ0FDWTRy
QixDQURaLENBQ3NCLENBQ3hELElBQUlDLENBQ0ozOEIsRUFBQSxDQUFRaXRCLENBQVIsQ0FBa0Is
UUFBUSxDQUFDQyxDQUFELENBQWFDLENBQWIsQ0FBd0IsQ0FBQSxJQUM1Q0ssRUFBV04sQ0FBQU0s
U0FEaUMsQ0FFaERELEVBQVdMLENBQUFLLFNBRnFDLENBR2hERixFQUFPSCxDQUFBRyxLQUh5QyxD
QUloRHVQLENBSmdELENBS2hEQyxDQUxnRCxDQUtyQ0MsQ0FMcUMsQ0FLMUJDLENBRWpCMThCLEdB
QUFDLEtBQUEsQ0FBb0J1eEIsQ0FBcEIsQ0FBMkJyRSxDQUEzQixDQUFMLEdBR0VxRSxDQUFBLENB
QU1yRSxDQUFOLENBSEYsQ0FHb0JudUIsQ0FIcEIsQ0FNQSxRQUFRZ3VCLENBQVIsRUFFRSxLQUFL
LEdBQUwsQ0FDT3dFLENBQUEsQ0FBTXJFLENBQU4sQ0FBTCxFQUF5QkQsQ0FBekIsR0FDRXhvQixD
QUFBLENBQVlvb0IsQ0FBWixDQURGLENBQzJCOXRCLENBRDNCLENBSUF3eUIsRUFBQW1MLFNBQUEs
Q0FBZXhQLENBQWYsQ0FBeUIsUUFBUSxDQUFDenNCLENBQUQsQ0FBUSxDQUN2Q2dFLENBQUEsQ0FB
WW9vQixDQUFaLENBQUEsQ0FBeUJwc0IsQ0FEYyxDQUF6QyxDQUdBOHdCLEVBQUE0SixZQUFBLENB
QWtCak8sQ0FBbEIsQ0FBQW9PLFFBQUEsQ0FBc0N0d0IsQ0FDbEN1bUIsRUFBQSxDQUFNckUsQ0FB
TixDQUFKLEdBR0V6b0IsQ0FBQSxDQUFZb29CLENBQVosQ0FIRixDQUcyQjdVLENBQUEsQ0FBYXVa
LENBQUEsQ0FBTXJFLENBQU4sQ0FBYixDQUFBLENBQThCbGlCLENBQTlCLENBSDNCLENBS0EsTUFF
RixNQUFLLEdBQUwsQ0FDRSxHQUFJaWlCLENBQUosRUFBaUIsQ0FBQXNFLENBQUEsQ0FBTXJFLENB
QU4sQ0FBakIsQ0FDRSxLQUVGcVAsRUFBQSxDQUFZdmpCLENBQUEsQ0FBT3VZLENBQUEsQ0FBTXJF
LENBQU4sQ0FBUCxDQUdWdVAsRUFBQSxDQURFRixDQUFBSSxRQUFKLENBQ1luM0IsRUFEWixDQUdZ
aTNCLFFBQVEsQ0FBQ25yQixDQUFELENBQUk2VixDQUFKLENBQU8sQ0FBRSxNQUFPN1YsRUFBUCxH
QUFhNlYsQ0FBYixFQUFtQjdWLENBQW5CLEdBQXlCQSxDQUF6QixFQUE4QjZWLENBQTlCLEdBQW9D
QSxDQUF0QyxDQUUzQnFWLEVBQUEsQ0FBWUQsQ0FBQUssT0FBWixFQUFnQyxRQUFRLEVBQUcsQ0FF
ekNOLENBQUEsQ0FBWTczQixDQUFBLENBQVlvb0IsQ0FBWixDQUFaLENBQXFDMFAsQ0FBQSxDQUFV
dnhCLENBQVYsQ0FDckMsTUFBTThoQixHQUFBLENBQWUsV0FBZjtBQUVGeUUsQ0FBQSxDQUFNckUs
Q0FBTixDQUZFLENBRWUxYyxDQUFBekcsS0FGZixDQUFOLENBSHlDLENBTzNDdXlCLEVBQUEsQ0FB
WTczQixDQUFBLENBQVlvb0IsQ0FBWixDQUFaLENBQXFDMFAsQ0FBQSxDQUFVdnhCLENBQVYsQ0FD
akM2eEIsRUFBQUEsQ0FBbUJBLFFBQXlCLENBQUNDLENBQUQsQ0FBYyxDQUN2REwsQ0FBQSxDQUFR
SyxDQUFSLENBQXFCcjRCLENBQUEsQ0FBWW9vQixDQUFaLENBQXJCLENBQUwsR0FFTzRQLENBQUEs
Q0FBUUssQ0FBUixDQUFxQlIsQ0FBckIsQ0FBTCxDQUtFRSxDQUFBLENBQVV4eEIsQ0FBVixDQUFp
Qjh4QixDQUFqQixDQUErQnI0QixDQUFBLENBQVlvb0IsQ0FBWixDQUEvQixDQUxGLENBRUVwb0Is
Q0FBQSxDQUFZb29CLENBQVosQ0FGRixDQUUyQmlRLENBSjdCLENBVUEsT0FBT1IsRUFBUCxDQUFt
QlEsQ0FYeUMsQ0FhOURELEVBQUFFLFVBQUEsQ0FBNkIsQ0FBQSxDQUczQkMsRUFBQSxDQURFcFEs
Q0FBQUksV0FBSixDQUNZaGlCLENBQUFpeUIsaUJBQUEsQ0FBdUIxTCxDQUFBLENBQU1yRSxDQUFO
LENBQXZCLENBQXdDMlAsQ0FBeEMsQ0FEWixDQUdZN3hCLENBQUE1SCxPQUFBLENBQWE0VixDQUFB
LENBQU91WSxDQUFBLENBQU1yRSxDQUFOLENBQVAsQ0FBd0IyUCxDQUF4QixDQUFiLENBQXdELElB
QXhELENBQThETixDQUFBSSxRQUE5RCxDQUVaTixFQUFBLENBQXVCQSxDQUF2QixFQUE4QyxFQUM5
Q0EsRUFBQXQzQixLQUFBLENBQXlCaTRCLENBQXpCLENBQ0EsTUFFRixNQUFLLEdBQUwsQ0FDRVQs
Q0FBQSxDQUFZdmpCLENBQUEsQ0FBT3VZLENBQUEsQ0FBTXJFLENBQU4sQ0FBUCxDQUdaLElBQUlx
UCxDQUFKLEdBQWtCajZCLENBQWxCLEVBQTBCMnFCLENBQTFCLENBQW9DLEtBRXBDeG9CLEVBQUEs
Q0FBWW9vQixDQUFaLENBQUEsQ0FBeUIsUUFBUSxDQUFDckksQ0FBRCxDQUFTLENBQ3hDLE1BQU8r
WCxFQUFBLENBQVV2eEIsQ0FBVixDQUFpQndaLENBQWpCLENBRGlDLENBbkU5QyxDQWJnRCxDQUFs
RCxDQXNGSXVNLEVBQUFBLENBQWtCc0wsQ0FBQSxDQUFzQnRMLFFBQXdCLEVBQUcsQ0FDckUsSUFE
cUUsSUFDNUR6d0IsRUFBSSxDQUR3RCxDQUNyRGEsRUFBS2s3QixDQUFBajlCLE9BQXJCLENBQWlE
a0IsQ0FBakQsQ0FBcURhLENBQXJELENBQXlELEVBQUViLENBQTNELENBQ0UrN0IsQ0FBQSxDQUFv
Qi83QixDQUFwQixDQUFBLEVBRm1FLENBQWpELENBSWxCZ0MsQ0FDSixPQUFJODVCLEVBQUosRUFB
Z0JyTCxDQUFoQixHQUFvQ3p1QixDQUFwQyxFQUNFODVCLENBQUFsTCxJQUFBLENBQWEsVUFBYixD
QUF5QkgsQ0FBekIsQ0FDT3p1QixDQUFBQSxDQUZULEVBSU95dUIsQ0FqR2lELENBdGpEMUQsSUFB
SVUsR0FBYUEsUUFBUSxDQUFDenRCLENBQUQsQ0FBVWs1QixDQUFWLENBQTRCLENBQ25ELEdBQUlB
LENBQUosQ0FBc0IsQ0FDcEIsSUFBSTk4QixFQUFPZixNQUFBZSxLQUFBLENBQVk4OEIsQ0FBWixD
QUFYLENBQ0k1OEIsQ0FESixDQUNPa2QsQ0FEUCxDQUNVM2QsQ0FFTFMsRUFBQSxDQUFJLENBQVQs
S0FBWWtkLENBQVosQ0FBZ0JwZCxDQUFBaEIsT0FBaEIsQ0FBNkJrQixDQUE3QixDQUFpQ2tkLENB
QWpDLENBQW9DbGQsQ0FBQSxFQUFwQyxDQUNFVCxDQUNBLENBRE1PLENBQUEsQ0FBS0UsQ0FBTCxD
QUNOLENBQUEsSUFBQSxDQUFLVCxDQUFMLENBQUEsQ0FBWXE5QixDQUFBLENBQWlCcjlCLENBQWpC
LENBTk0sQ0FBdEIsSUFTRSxLQUFBeXlCLE1BQUEsQ0FBYSxFQUdmLEtBQUFWLFVBQUE7QUFBaUI1
dEIsQ0Fia0MsQ0FnQnJEeXRCLEdBQUE3dUIsVUFBQSxDQUF1QixDQWdCckJ1NkIsV0FBWTNLLEVB
aEJTLENBOEJyQjRLLFVBQVdBLFFBQVEsQ0FBQ0MsQ0FBRCxDQUFXLENBQ3hCQSxDQUFKLEVBQWtD
LENBQWxDLENBQWdCQSxDQUFBaitCLE9BQWhCLEVBQ0UwWCxDQUFBK0ssU0FBQSxDQUFrQixJQUFB
K1AsVUFBbEIsQ0FBa0N5TCxDQUFsQyxDQUYwQixDQTlCVCxDQStDckJDLGFBQWNBLFFBQVEsQ0FB
Q0QsQ0FBRCxDQUFXLENBQzNCQSxDQUFKLEVBQWtDLENBQWxDLENBQWdCQSxDQUFBaitCLE9BQWhC
LEVBQ0UwWCxDQUFBZ0wsWUFBQSxDQUFxQixJQUFBOFAsVUFBckIsQ0FBcUN5TCxDQUFyQyxDQUY2
QixDQS9DWixDQWlFckI3QixhQUFjQSxRQUFRLENBQUMrQixDQUFELENBQWEvRCxDQUFiLENBQXlC
LENBQzdDLElBQUlnRSxFQUFRQyxFQUFBLENBQWdCRixDQUFoQixDQUE0Qi9ELENBQTVCLENBQ1Jn
RSxFQUFKLEVBQWFBLENBQUFwK0IsT0FBYixFQUNFMFgsQ0FBQStLLFNBQUEsQ0FBa0IsSUFBQStQ
LFVBQWxCLENBQWtDNEwsQ0FBbEMsQ0FJRixFQURJRSxDQUNKLENBRGVELEVBQUEsQ0FBZ0JqRSxD
QUFoQixDQUE0QitELENBQTVCLENBQ2YsR0FBZ0JHLENBQUF0K0IsT0FBaEIsRUFDRTBYLENBQUFn
TCxZQUFBLENBQXFCLElBQUE4UCxVQUFyQixDQUFxQzhMLENBQXJDLENBUjJDLENBakUxQixDQXNG
ckJoRixLQUFNQSxRQUFRLENBQUM3NEIsQ0FBRCxDQUFNWSxDQUFOLENBQWFrOUIsQ0FBYixDQUF3
QnpRLENBQXhCLENBQWtDLENBQUEsSUFLMUMzcEIsRUFBTyxJQUFBcXVCLFVBQUEsQ0FBZSxDQUFm
LENBTG1DLENBTTFDZ00sRUFBYXhkLEVBQUEsQ0FBbUI3YyxDQUFuQixDQUF5QjFELENBQXpCLENB
TjZCLENBTzFDZytCLEVBQWFyZCxFQUFBLENBQW1CamQsQ0FBbkIsQ0FBeUIxRCxDQUF6QixDQVA2
QixDQVExQ2krQixFQUFXaitCLENBR1grOUIsRUFBSixFQUNFLElBQUFoTSxVQUFBbnVCLEtBQUEs
Q0FBb0I1RCxDQUFwQixDQUF5QlksQ0FBekIsQ0FDQSxDQUFBeXNCLENBQUEsQ0FBVzBRLENBRmIs
RUFHV0MsQ0FIWCxHQUlFLElBQUEsQ0FBS0EsQ0FBTCxDQUNBLENBRG1CcDlCLENBQ25CLENBQUFx
OUIsQ0FBQSxDQUFXRCxDQUxiLENBUUEsS0FBQSxDQUFLaCtCLENBQUwsQ0FBQSxDQUFZWSxDQUdS
eXNCLEVBQUosQ0FDRSxJQUFBb0YsTUFBQSxDQUFXenlCLENBQVgsQ0FERixDQUNvQnF0QixDQURw
QixFQUdFQSxDQUhGLENBR2EsSUFBQW9GLE1BQUEsQ0FBV3p5QixDQUFYLENBSGIsSUFLSSxJQUFB
eXlCLE1BQUEsQ0FBV3p5QixDQUFYLENBTEosQ0FLc0JxdEIsQ0FMdEIsQ0FLaUNqaEIsRUFBQSxD
QUFXcE0sQ0FBWDtBQUFnQixHQUFoQixDQUxqQyxDQVNBMkQsRUFBQSxDQUFXTyxFQUFBLENBQVUs
SUFBQTZ0QixVQUFWLENBRVgsSUFBa0IsR0FBbEIsR0FBS3B1QixDQUFMLEVBQWlDLE1BQWpDLEdB
QXlCM0QsQ0FBekIsRUFDa0IsS0FEbEIsR0FDSzJELENBREwsRUFDbUMsS0FEbkMsR0FDMkIzRCxD
QUQzQixDQUdFLElBQUEsQ0FBS0EsQ0FBTCxDQUFBLENBQVlZLENBQVosQ0FBb0IwUSxDQUFBLENB
QWMxUSxDQUFkLENBQTZCLEtBQTdCLEdBQXFCWixDQUFyQixDQUh0QixLQUlPLElBQWlCLEtBQWpC
LEdBQUkyRCxDQUFKLEVBQWtDLFFBQWxDLEdBQTBCM0QsQ0FBMUIsQ0FBNEMsQ0FlakQsSUFiSXdq
QixJQUFBQSxFQUFTLEVBQVRBLENBR0EwYSxFQUFnQm5oQixDQUFBLENBQUtuYyxDQUFMLENBSGhC
NGlCLENBS0EyYSxFQUFhLHFDQUxiM2EsQ0FNQTVOLEVBQVUsSUFBQTNRLEtBQUEsQ0FBVWk1QixD
QUFWLENBQUEsQ0FBMkJDLENBQTNCLENBQXdDLEtBTmxEM2EsQ0FTQTRhLEVBQVVGLENBQUFqNkIs
TUFBQSxDQUFvQjJSLENBQXBCLENBVFY0TixDQVlBNmEsRUFBb0JoRyxJQUFBaUcsTUFBQSxDQUFX
RixDQUFBNytCLE9BQVgsQ0FBNEIsQ0FBNUIsQ0FacEJpa0IsQ0FhSy9pQixFQUFJLENBQWIsQ0FB
Z0JBLENBQWhCLENBQW9CNDlCLENBQXBCLENBQXVDNTlCLENBQUEsRUFBdkMsQ0FDRSxJQUFJODlC
LEVBQWUsQ0FBZkEsQ0FBVzk5QixDQUFmLENBRUEraUIsRUFBQUEsQ0FBQUEsQ0FBVWxTLENBQUEs
Q0FBY3lMLENBQUEsQ0FBS3FoQixDQUFBLENBQVFHLENBQVIsQ0FBTCxDQUFkLENBQXVDLENBQUEs
Q0FBdkMsQ0FGVixDQUlBL2EsRUFBQUEsQ0FBQUEsRUFBVyxHQUFYQSxDQUFpQnpHLENBQUEsQ0FB
S3FoQixDQUFBLENBQVFHLENBQVIsQ0FBbUIsQ0FBbkIsQ0FBTCxDQUFqQi9hLENBSUVnYixFQUFB
QSxDQUFZemhCLENBQUEsQ0FBS3FoQixDQUFBLENBQVksQ0FBWixDQUFRMzlCLENBQVIsQ0FBTCxD
QUFBd0QsTUFBQSxDQUEyQixJQUEzQixDQUdoQnVmLEVBQUEsRUFBVWxTLENBQUEsQ0FBY3lMLENB
QUEsQ0FBS3loQixDQUFBLENBQVUsQ0FBVixDQUFMLENBQWQsQ0FBa0MsQ0FBQSxDQUFsQyxDQUdl
LEVBQXpCLEdBQUlBLENBQUFqL0IsT0FBSixHQUNFaWtCLENBREYsRUFDYSxHQURiLENBQ21Cekcs
Q0FBQSxDQUFLeWhCLENBQUEsQ0FBVSxDQUFWLENBQUwsQ0FEbkIsQ0FHQSxLQUFBLENBQUt4K0Is
Q0FBTCxDQUFBLENBQVlZLENBQVosQ0FBb0I0aUIsQ0FqQzZCLENBb0NqQyxDQUFBLENBQWxCLEdB
QUlzYSxDQUFKLEdBQ2dCLElBQWQsR0FBSWw5QixDQUFKLEVBQXNCQSxDQUF0QixHQUFnQzFCLENB
QWhDLENBQ0UsSUFBQTZ5QixVQUFBME0sV0FBQSxDQUEwQnBSLENBQTFCLENBREYsQ0FHRSxJQUFB
MEUsVUFBQWx1QixLQUFBLENBQW9Cd3BCLENBQXBCLENBQThCenNCLENBQTlCLENBSkosQ0FVQSxF
QURJMDZCLENBQ0osQ0FEa0IsSUFBQUEsWUFDbEIsR0FBZXo3QixDQUFBLENBQVF5N0IsQ0FBQSxD
QUFZMkMsQ0FBWixDQUFSO0FBQStCLFFBQVEsQ0FBQzEzQixDQUFELENBQUssQ0FDekQsR0FBSSxD
QUNGQSxDQUFBLENBQUczRixDQUFILENBREUsQ0FFRixNQUFPeUgsQ0FBUCxDQUFVLENBQ1YwUCxD
QUFBLENBQWtCMVAsQ0FBbEIsQ0FEVSxDQUg2QyxDQUE1QyxDQW5GK0IsQ0F0RjNCLENBcU1yQncw
QixTQUFVQSxRQUFRLENBQUM3OEIsQ0FBRCxDQUFNdUcsQ0FBTixDQUFVLENBQUEsSUFDdEJtckIs
RUFBUSxJQURjLENBRXRCNEosRUFBZTVKLENBQUE0SixZQUFmQSxHQUFxQzVKLENBQUE0SixZQUFy
Q0EsQ0FBeURyMUIsRUFBQSxFQUF6RHExQixDQUZzQixDQUd0Qm9ELEVBQWFwRCxDQUFBLENBQVl0
N0IsQ0FBWixDQUFiMCtCLEdBQWtDcEQsQ0FBQSxDQUFZdDdCLENBQVosQ0FBbEMwK0IsQ0FBcUQs
RUFBckRBLENBRUpBLEVBQUF4NUIsS0FBQSxDQUFlcUIsQ0FBZixDQUNBOFMsRUFBQS9WLFdBQUEs
Q0FBc0IsUUFBUSxFQUFHLENBQzFCazRCLENBQUFrRCxDQUFBbEQsUUFBTCxFQUEwQjlKLENBQUF4
eEIsZUFBQSxDQUFxQkYsQ0FBckIsQ0FBMUIsRUFFRXVHLENBQUEsQ0FBR21yQixDQUFBLENBQU0x
eEIsQ0FBTixDQUFILENBSDZCLENBQWpDLENBT0EsT0FBTyxTQUFRLEVBQUcsQ0FDaEJxRSxFQUFB
LENBQVlxNkIsQ0FBWixDQUF1Qm40QixDQUF2QixDQURnQixDQWJRLENBck1QLENBbEIrRCxLQXFQ
bEZvNEIsR0FBY3htQixDQUFBd21CLFlBQUEsRUFyUG9FLENBc1BsRkMsR0FBWXptQixDQUFBeW1C
LFVBQUEsRUF0UHNFLENBdVBsRmhILEdBQXNDLElBQWhCLEVBQUMrRyxFQUFELEVBQXNDLElBQXRD
LEVBQXdCQyxFQUF4QixDQUNoQmw4QixFQURnQixDQUVoQmsxQixRQUE0QixDQUFDbEIsQ0FBRCxD
QUFXLENBQ3ZDLE1BQU9BLEVBQUFodUIsUUFBQSxDQUFpQixPQUFqQixDQUEwQmkyQixFQUExQixD
QUFBajJCLFFBQUEsQ0FBK0MsS0FBL0MsQ0FBc0RrMkIsRUFBdEQsQ0FEZ0MsQ0F6UHFDLENBNFBs
RjFMLEdBQWtCLGNBRXRCOW5CLEVBQUF1dkIsaUJBQUEsQ0FBMkI3dkIsQ0FBQSxDQUFtQjZ2QixR
QUF5QixDQUFDekwsQ0FBRCxDQUFXMlAsQ0FBWCxDQUFvQixDQUN6RixJQUFJL1IsRUFBV29DLENB
QUE1akIsS0FBQSxDQUFjLFVBQWQsQ0FBWHdoQixFQUF3QyxFQUV4Q2x0QixFQUFBLENBQVFpL0Is
Q0FBUixDQUFKLENBQ0UvUixDQURGLENBQ2FBLENBQUE1bUIsT0FBQSxDQUFnQjI0QixDQUFoQixD
QURiLENBR0UvUixDQUFBNW5CLEtBQUEsQ0FBYzI1QixDQUFkLENBR0YzUCxFQUFBNWpCLEtBQUEs
Q0FBYyxVQUFkLENBQTBCd2hCLENBQTFCLENBVHlGLENBQWhFLENBVXZCcnFCLENBRUoySSxFQUFB
cXZCLGtCQUFBO0FBQTRCM3ZCLENBQUEsQ0FBbUIydkIsUUFBMEIsQ0FBQ3ZMLENBQUQsQ0FBVyxD
QUNsRkQsQ0FBQSxDQUFhQyxDQUFiLENBQXVCLFlBQXZCLENBRGtGLENBQXhELENBRXhCenNCLENB
RUoySSxFQUFBbWxCLGVBQUEsQ0FBeUJ6bEIsQ0FBQSxDQUFtQnlsQixRQUF1QixDQUFDckIsQ0FB
RCxDQUFXL2pCLENBQVgsQ0FBa0IyekIsQ0FBbEIsQ0FBNEJDLENBQTVCLENBQXdDLENBRXpHN1As
Q0FBQTVqQixLQUFBLENBRGV3ekIsQ0FBQTNKLENBQVk0SixDQUFBLENBQWEseUJBQWIsQ0FBeUMs
ZUFBckQ1SixDQUF3RSxRQUN2RixDQUF3QmhxQixDQUF4QixDQUZ5RyxDQUFsRixDQUdyQjFJLENB
RUoySSxFQUFBd2tCLGdCQUFBLENBQTBCOWtCLENBQUEsQ0FBbUI4a0IsUUFBd0IsQ0FBQ1YsQ0FB
RCxDQUFXNFAsQ0FBWCxDQUFxQixDQUN4RjdQLENBQUEsQ0FBYUMsQ0FBYixDQUF1QjRQLENBQUEs
Q0FBVyxrQkFBWCxDQUFnQyxVQUF2RCxDQUR3RixDQUFoRSxDQUV0QnI4QixDQUVKLE9BQU8ySSxF
QXZSK0UsQ0FKNUUsQ0FoUDZDLENBdTVEM0R1bkIsUUFBU0EsR0FBa0IsQ0FBQ3pvQixDQUFELENB
QU8sQ0FDaEMsTUFBT2lSLEdBQUEsQ0FBVWpSLENBQUF4QixRQUFBLENBQWF5cUIsRUFBYixDQUE0
QixFQUE1QixDQUFWLENBRHlCLENBZ0VsQ3lLLFFBQVNBLEdBQWUsQ0FBQ29CLENBQUQsQ0FBT0Ms
Q0FBUCxDQUFhLENBQUEsSUFDL0JDLEVBQVMsRUFEc0IsQ0FFL0JDLEVBQVVILENBQUEvNkIsTUFB
QSxDQUFXLEtBQVgsQ0FGcUIsQ0FHL0JtN0IsRUFBVUgsQ0FBQWg3QixNQUFBLENBQVcsS0FBWCxD
QUhxQixDQU0xQnhELEVBQUksQ0FEYixFQUFBLENBQ0EsSUFBQSxDQUFnQkEsQ0FBaEIsQ0FBb0Iw
K0IsQ0FBQTUvQixPQUFwQixDQUFvQ2tCLENBQUEsRUFBcEMsQ0FBeUMsQ0FFdkMsSUFEQSxJQUFJ
NCtCLEVBQVFGLENBQUEsQ0FBUTErQixDQUFSLENBQVosQ0FDU2UsRUFBSSxDQUFiLENBQWdCQSxD
QUFoQixDQUFvQjQ5QixDQUFBNy9CLE9BQXBCLENBQW9DaUMsQ0FBQSxFQUFwQyxDQUNFLEdBQUk2
OUIsQ0FBSixFQUFhRCxDQUFBLENBQVE1OUIsQ0FBUixDQUFiLENBQXlCLFNBQVMsQ0FFcEMwOUIs
RUFBQSxHQUEyQixDQUFoQixDQUFBQSxDQUFBMy9CLE9BQUEsQ0FBb0IsR0FBcEIsQ0FBMEIsRUFB
ckMsRUFBMkM4L0IsQ0FMSixDQU96QyxNQUFPSCxFQWI0QixDQWdCckNySCxRQUFTQSxHQUFjLENB
QUN5SCxDQUFELENBQVUsQ0FDL0JBLENBQUEsQ0FBVXAzQixDQUFBLENBQU9vM0IsQ0FBUCxDQUNW
LEtBQUk3K0IsRUFBSTYrQixDQUFBLy9CLE9BRVIsSUFBUyxDQUFULEVBQUlrQixDQUFKLENBQ0Us
TUFBTzYrQixFQUdULEtBQUEsQ0FBTzcrQixDQUFBLEVBQVAsQ0FBQSxDQWgxTnNCa3pCLENBazFO
cEI7QUFEVzJMLENBQUE1N0IsQ0FBUWpELENBQVJpRCxDQUNQakUsU0FBSixFQUNFZ0YsRUFBQXRF
LEtBQUEsQ0FBWW0vQixDQUFaLENBQXFCNytCLENBQXJCLENBQXdCLENBQXhCLENBR0osT0FBTzYr
QixFQWR3QixDQXdDakMxbkIsUUFBU0EsR0FBbUIsRUFBRyxDQUFBLElBQ3pCeWEsRUFBYyxFQURX
LENBRXpCa04sRUFBVSxDQUFBLENBVWQsS0FBQUMsU0FBQSxDQUFnQkMsUUFBUSxDQUFDdjFCLENB
QUQsQ0FBTy9FLENBQVAsQ0FBb0IsQ0FDMUNpSixFQUFBLENBQXdCbEUsQ0FBeEIsQ0FBOEIsWUFB
OUIsQ0FDSTNJLEVBQUEsQ0FBUzJJLENBQVQsQ0FBSixDQUNFcEksQ0FBQSxDQUFPdXdCLENBQVAs
Q0FBb0Jub0IsQ0FBcEIsQ0FERixDQUdFbW9CLENBQUEsQ0FBWW5vQixDQUFaLENBSEYsQ0FHc0Iv
RSxDQUxvQixDQWM1QyxLQUFBdTZCLGFBQUEsQ0FBb0JDLFFBQVEsRUFBRyxDQUM3QkosQ0FBQSxD
QUFVLENBQUEsQ0FEbUIsQ0FLL0IsS0FBQTNkLEtBQUEsQ0FBWSxDQUFDLFdBQUQsQ0FBYyxTQUFk
LENBQXlCLFFBQVEsQ0FBQ3VELENBQUQsQ0FBWTFLLENBQVosQ0FBcUIsQ0F5R2hFbWxCLFFBQVNB
LEVBQWEsQ0FBQ2piLENBQUQsQ0FBUzRSLENBQVQsQ0FBcUJ4UixDQUFyQixDQUErQjdhLENBQS9C
LENBQXFDLENBQ3pELEdBQU15YSxDQUFBQSxDQUFOLEVBQWdCLENBQUFwakIsQ0FBQSxDQUFTb2pC
LENBQUE0USxPQUFULENBQWhCLENBQ0UsS0FBTXAyQixFQUFBLENBQU8sYUFBUCxDQUFBLENBQXNC
LE9BQXRCLENBRUorSyxDQUZJLENBRUVxc0IsQ0FGRixDQUFOLENBS0Y1UixDQUFBNFEsT0FBQSxD
QUFjZ0IsQ0FBZCxDQUFBLENBQTRCeFIsQ0FQNkIsQ0E1RTNELE1BQU8sU0FBUSxDQUFDOGEsQ0FB
RCxDQUFhbGIsQ0FBYixDQUFxQm1iLENBQXJCLENBQTRCQyxDQUE1QixDQUFtQyxDQUFBLElBUTVD
aGIsQ0FSNEMsQ0FRM0I1ZixDQVIyQixDQVFkb3hCLENBQ2xDdUosRUFBQSxDQUFrQixDQUFBLENB
QWxCLEdBQVFBLENBQ0pDLEVBQUosRUFBYXBnQyxDQUFBLENBQVNvZ0MsQ0FBVCxDQUFiLEdBQ0V4
SixDQURGLENBQ2V3SixDQURmLENBSUEsSUFBSXBnQyxDQUFBLENBQVNrZ0MsQ0FBVCxDQUFKLENB
QTBCLENBQ3hCdjZCLENBQUEsQ0FBUXU2QixDQUFBdjZCLE1BQUEsQ0FBaUJpcEIsRUFBakIsQ0FD
UixJQUFLanBCLENBQUFBLENBQUwsQ0FDRSxLQUFNMDZCLEdBQUEsQ0FBa0IsU0FBbEIsQ0FFOENI
LENBRjlDLENBQU4sQ0FJRjE2QixDQUFBLENBQWNHLENBQUEsQ0FBTSxDQUFOLENBQ2RpeEIsRUFE
QSxDQUNhQSxDQURiLEVBQzJCanhCLENBQUEsQ0FBTSxDQUFOLENBQzNCdTZCLEVBQUEsQ0FBYXhO
LENBQUFueUIsZUFBQSxDQUEyQmlGLENBQTNCLENBQUEsQ0FDUGt0QixDQUFBLENBQVlsdEIsQ0FB
WixDQURPLENBRVBrSixFQUFBLENBQU9zVyxDQUFBNFEsT0FBUCxDQUFzQnB3QixDQUF0QixDQUFt
QyxDQUFBLENBQW5DLENBRk8sR0FHSm82QixDQUFBLENBQVVseEIsRUFBQSxDQUFPb00sQ0FBUCxD
QUFnQnRWLENBQWhCLENBQTZCLENBQUEsQ0FBN0IsQ0FBVixDQUErQ2pHLENBSDNDLENBS2JnUCxH
QUFBLENBQVkyeEIsQ0FBWjtBQUF3QjE2QixDQUF4QixDQUFxQyxDQUFBLENBQXJDLENBZHdCLENB
aUIxQixHQUFJMjZCLENBQUosQ0FvQkUsTUFUSUcsRUFTaUIsQ0FUS2w5QixDQUFDbkQsQ0FBQSxD
QUFRaWdDLENBQVIsQ0FBQSxDQUN6QkEsQ0FBQSxDQUFXQSxDQUFBdGdDLE9BQVgsQ0FBK0IsQ0FB
L0IsQ0FEeUIsQ0FDV3NnQyxDQURaOThCLFdBU0wsQ0FQckJnaUIsQ0FPcUIsQ0FQVnZsQixNQUFB
Z0QsT0FBQSxDQUFjeTlCLENBQWQsRUFBcUMsSUFBckMsQ0FPVSxDQUxqQjFKLENBS2lCLEVBSm5C
cUosQ0FBQSxDQUFjamIsQ0FBZCxDQUFzQjRSLENBQXRCLENBQWtDeFIsQ0FBbEMsQ0FBNEM1ZixD
QUE1QyxFQUEyRDA2QixDQUFBMzFCLEtBQTNELENBSW1CLENBQUFwSSxDQUFBLENBQU8sUUFBUSxF
QUFHLENBQ3JDLElBQUkwaEIsRUFBUzJCLENBQUFsYSxPQUFBLENBQWlCNDBCLENBQWpCLENBQTZC
OWEsQ0FBN0IsQ0FBdUNKLENBQXZDLENBQStDeGYsQ0FBL0MsQ0FDVHFlLEVBQUosR0FBZXVCLENB
QWYsR0FBNEJ4akIsQ0FBQSxDQUFTaWlCLENBQVQsQ0FBNUIsRUFBZ0R2akIsQ0FBQSxDQUFXdWpC
LENBQVgsQ0FBaEQsSUFDRXVCLENBQ0EsQ0FEV3ZCLENBQ1gsQ0FBSStTLENBQUosRUFFRXFKLENB
QUEsQ0FBY2piLENBQWQsQ0FBc0I0UixDQUF0QixDQUFrQ3hSLENBQWxDLENBQTRDNWYsQ0FBNUMs
RUFBMkQwNkIsQ0FBQTMxQixLQUEzRCxDQUpKLENBT0EsT0FBTzZhLEVBVDhCLENBQWxCLENBVWxC
LENBQ0RBLFNBQVVBLENBRFQsQ0FFRHdSLFdBQVlBLENBRlgsQ0FWa0IsQ0FnQnZCeFIsRUFBQSxD
QUFXSSxDQUFBaEMsWUFBQSxDQUFzQjBjLENBQXRCLENBQWtDbGIsQ0FBbEMsQ0FBMEN4ZixDQUEx
QyxDQUVQb3hCLEVBQUosRUFDRXFKLENBQUEsQ0FBY2piLENBQWQsQ0FBc0I0UixDQUF0QixDQUFr
Q3hSLENBQWxDLENBQTRDNWYsQ0FBNUMsRUFBMkQwNkIsQ0FBQTMxQixLQUEzRCxDQUdGLE9BQU82
YSxFQXpFeUMsQ0E3QmMsQ0FBdEQsQ0EvQmlCLENBNksvQmpOLFFBQVNBLEdBQWlCLEVBQUcsQ0FD
M0IsSUFBQThKLEtBQUEsQ0FBWSxDQUFDLFNBQUQsQ0FBWSxRQUFRLENBQUM1aUIsQ0FBRCxDQUFT
LENBQ3ZDLE1BQU9rSixFQUFBLENBQU9sSixDQUFBQyxTQUFQLENBRGdDLENBQTdCLENBRGUsQ0E4
QzdCK1ksUUFBU0EsR0FBeUIsRUFBRyxDQUNuQyxJQUFBNEosS0FBQSxDQUFZLENBQUMsTUFBRCxD
QUFTLFFBQVEsQ0FBQzNJLENBQUQsQ0FBTyxDQUNsQyxNQUFPLFNBQVEsQ0FBQ2luQixDQUFELENB
QVlDLENBQVosQ0FBbUIsQ0FDaENsbkIsQ0FBQStPLE1BQUF0aEIsTUFBQSxDQUFpQnVTLENBQWpC
LENBQXVCalgsU0FBdkIsQ0FEZ0MsQ0FEQSxDQUF4QixDQUR1QixDQWlCckNvK0IsUUFBU0EsR0FB
YyxDQUFDQyxDQUFELENBQUksQ0FDekIsTUFBSTkrQixFQUFBLENBQVM4K0IsQ0FBVCxDQUFKLENB
Q1MxK0IsRUFBQSxDQUFPMCtCLENBQVAsQ0FBQSxDQUFZQSxDQUFBQyxZQUFBLEVBQVosQ0FBOEJ6
NUIsRUFBQSxDQUFPdzVCLENBQVAsQ0FEdkMsQ0FHT0EsQ0FKa0IsQ0E3NVJZO0FBcTZSdkMzbkIs
UUFBU0EsR0FBNEIsRUFBRyxDQWlCdEMsSUFBQWtKLEtBQUEsQ0FBWUMsUUFBUSxFQUFHLENBQ3JC
LE1BQU8wZSxTQUEwQixDQUFDQyxDQUFELENBQVMsQ0FDeEMsR0FBS0EsQ0FBQUEsQ0FBTCxDQUFh
LE1BQU8sRUFDcEIsS0FBSXYzQixFQUFRLEVBQ1ozSSxHQUFBLENBQWNrZ0MsQ0FBZCxDQUFzQixR
QUFRLENBQUM1L0IsQ0FBRCxDQUFRWixDQUFSLENBQWEsQ0FDM0IsSUFBZCxHQUFJWSxDQUFKLEVB
QXNCb0MsQ0FBQSxDQUFZcEMsQ0FBWixDQUF0QixHQUNJaEIsQ0FBQSxDQUFRZ0IsQ0FBUixDQUFK
LENBQ0VmLENBQUEsQ0FBUWUsQ0FBUixDQUFlLFFBQVEsQ0FBQ3kvQixDQUFELENBQUlqRSxDQUFK
LENBQU8sQ0FDNUJuekIsQ0FBQS9ELEtBQUEsQ0FBV2lFLEVBQUEsQ0FBZW5KLENBQWYsQ0FBWCxD
QUFrQyxHQUFsQyxDQUF3Q21KLEVBQUEsQ0FBZWkzQixFQUFBLENBQWVDLENBQWYsQ0FBZixDQUF4
QyxDQUQ0QixDQUE5QixDQURGLENBS0VwM0IsQ0FBQS9ELEtBQUEsQ0FBV2lFLEVBQUEsQ0FBZW5K
LENBQWYsQ0FBWCxDQUFpQyxHQUFqQyxDQUF1Q21KLEVBQUEsQ0FBZWkzQixFQUFBLENBQWV4L0Is
Q0FBZixDQUFmLENBQXZDLENBTkYsQ0FEeUMsQ0FBM0MsQ0FXQSxPQUFPcUksRUFBQUcsS0FBQSxD
QUFXLEdBQVgsQ0FkaUMsQ0FEckIsQ0FqQmUsQ0FxQ3hDd1AsUUFBU0EsR0FBa0MsRUFBRyxDQTRD
NUMsSUFBQWdKLEtBQUEsQ0FBWUMsUUFBUSxFQUFHLENBQ3JCLE1BQU80ZSxTQUFrQyxDQUFDRCxD
QUFELENBQVMsQ0FNaERFLFFBQVNBLEVBQVMsQ0FBQ0MsQ0FBRCxDQUFjMTJCLENBQWQsQ0FBc0Iy
MkIsQ0FBdEIsQ0FBZ0MsQ0FDNUIsSUFBcEIsR0FBSUQsQ0FBSixFQUE0QjM5QixDQUFBLENBQVky
OUIsQ0FBWixDQUE1QixHQUNJL2dDLENBQUEsQ0FBUStnQyxDQUFSLENBQUosQ0FDRTlnQyxDQUFB
LENBQVE4Z0MsQ0FBUixDQUFxQixRQUFRLENBQUMvL0IsQ0FBRCxDQUFRLENBQ25DOC9CLENBQUEs
Q0FBVTkvQixDQUFWLENBQWlCcUosQ0FBakIsQ0FBMEIsSUFBMUIsQ0FEbUMsQ0FBckMsQ0FERixD
QUlXMUksQ0FBQSxDQUFTby9CLENBQVQsQ0FBSixFQUE4QixDQUFBaC9CLEVBQUEsQ0FBT2cvQixD
QUFQLENBQTlCLENBQ0xyZ0MsRUFBQSxDQUFjcWdDLENBQWQsQ0FBMkIsUUFBUSxDQUFDLy9CLENB
QUQsQ0FBUVosQ0FBUixDQUFhLENBQzlDMGdDLENBQUEsQ0FBVTkvQixDQUFWLENBQWlCcUosQ0FB
akIsRUFDSzIyQixDQUFBLENBQVcsRUFBWCxDQUFnQixHQURyQixFQUVJNWdDLENBRkosRUFHSzRn
QyxDQUFBLENBQVcsRUFBWCxDQUFnQixHQUhyQixFQUQ4QyxDQUFoRCxDQURLLENBUUwzM0IsQ0FB
QS9ELEtBQUEsQ0FBV2lFLEVBQUEsQ0FBZWMsQ0FBZixDQUFYLENBQW9DLEdBQXBDLENBQTBDZCxF
QUFBLENBQWVpM0IsRUFBQSxDQUFlTyxDQUFmLENBQWYsQ0FBMUMsQ0FiRixDQURnRCxDQUxsRCxH
QUFLSCxDQUFBQSxDQUFMLENBQWEsTUFBTyxFQUNwQixLQUFJdjNCLEVBQVEsRUFDWnkzQixFQUFB
LENBQVVGLENBQVYsQ0FBa0IsRUFBbEIsQ0FBc0IsQ0FBQSxDQUF0QixDQUNBLE9BQU92M0IsRUFB
QUcsS0FBQSxDQUFXLEdBQVgsQ0FKeUMsQ0FEN0IsQ0E1Q3FCLENBd0U5Q3kzQixRQUFTQSxHQUE0
QixDQUFDdjFCLENBQUQ7QUFBT3cxQixDQUFQLENBQWdCLENBQ25ELEdBQUluaEMsQ0FBQSxDQUFT
MkwsQ0FBVCxDQUFKLENBQW9CLENBRWxCLElBQUl5MUIsRUFBV3oxQixDQUFBNUMsUUFBQSxDQUFh
czRCLEVBQWIsQ0FBcUMsRUFBckMsQ0FBQWprQixLQUFBLEVBRWYsSUFBSWdrQixDQUFKLENBQWMs
Q0FDWixJQUFJRSxFQUFjSCxDQUFBLENBQVEsY0FBUixDQUNkLEVBQUMsQ0FBRCxDQUFDLENBQUQs
RUFBQyxDQUFELEdBQUMsQ0FBQSxRQUFBLENBQUEsRUFBQSxDQUFELElBV04sQ0FYTSxFQVVGSSxD
QVZFLENBQWtFLytCLENBVXhEbUQsTUFBQSxDQUFVNjdCLEVBQVYsQ0FWVixHQVdjQyxFQUFBLENB
QVVGLENBQUEsQ0FBVSxDQUFWLENBQVYsQ0FBQWo4QixLQUFBLENBWG9EOUMsQ0FXcEQsQ0FYZCxD
QUFBLEVBQUosR0FDRW1KLENBREYsQ0FDU3JFLEVBQUEsQ0FBUzg1QixDQUFULENBRFQsQ0FGWSxD
QUpJLENBWXBCLE1BQU96MUIsRUFiNEMsQ0EyQnJEKzFCLFFBQVNBLEdBQVksQ0FBQ1AsQ0FBRCxD
QUFVLENBQUEsSUFDekI3akIsRUFBU2hYLEVBQUEsRUFEZ0IsQ0FDSHhGLENBUXRCZCxFQUFBLENB
QVNtaEMsQ0FBVCxDQUFKLENBQ0VqaEMsQ0FBQSxDQUFRaWhDLENBQUE3OEIsTUFBQSxDQUFjLElB
QWQsQ0FBUixDQUE2QixRQUFRLENBQUNxOUIsQ0FBRCxDQUFPLENBQzFDN2dDLENBQUEsQ0FBSTZn
QyxDQUFBOThCLFFBQUEsQ0FBYSxHQUFiLENBQ1MsS0FBQSxFQUFBSixDQUFBLENBQVUyWSxDQUFB
LENBQUt1a0IsQ0FBQXpYLE9BQUEsQ0FBWSxDQUFaLENBQWVwcEIsQ0FBZixDQUFMLENBQVYsQ0FB
b0MsRUFBQSxDQUFBc2MsQ0FBQSxDQUFLdWtCLENBQUF6WCxPQUFBLENBQVlwcEIsQ0FBWixDQUFn
QixDQUFoQixDQUFMLENBUi9DVCxFQUFKLEdBQ0VpZCxDQUFBLENBQU9qZCxDQUFQLENBREYsQ0FD
Z0JpZCxDQUFBLENBQU9qZCxDQUFQLENBQUEsQ0FBY2lkLENBQUEsQ0FBT2pkLENBQVAsQ0FBZCxD
QUE0QixJQUE1QixDQUFtQzRHLENBQW5DLENBQXlDQSxDQUR6RCxDQU00QyxDQUE1QyxDQURGLENB
S1dyRixDQUFBLENBQVN1L0IsQ0FBVCxDQUxYLEVBTUVqaEMsQ0FBQSxDQUFRaWhDLENBQVIsQ0FB
aUIsUUFBUSxDQUFDUyxDQUFELENBQVlDLENBQVosQ0FBdUIsQ0FDakMsSUFBQSxFQUFBcDlCLENB
QUEsQ0FBVW85QixDQUFWLENBQUEsQ0FBc0IsRUFBQXprQixDQUFBLENBQUt3a0IsQ0FBTCxDQVpq
Q3ZoQyxFQUFKLEdBQ0VpZCxDQUFBLENBQU9qZCxDQUFQLENBREYsQ0FDZ0JpZCxDQUFBLENBQU9q
ZCxDQUFQLENBQUEsQ0FBY2lkLENBQUEsQ0FBT2pkLENBQVAsQ0FBZCxDQUE0QixJQUE1QixDQUFt
QzRHLENBQW5DLENBQXlDQSxDQUR6RCxDQVdnRCxDQUFoRCxDQUtGLE9BQU9xVyxFQXBCc0IsQ0Fv
Qy9Cd2tCLFFBQVNBLEdBQWEsQ0FBQ1gsQ0FBRCxDQUFVLENBQzlCLElBQUlZLENBRUosT0FBTyxT
QUFRLENBQUN4M0IsQ0FBRCxDQUFPLENBQ2Z3M0IsQ0FBTCxHQUFpQkEsQ0FBakIsQ0FBK0JMLEVB
QUEsQ0FBYVAsQ0FBYixDQUEvQixDQUVBLE9BQUk1MkIsRUFBSixFQUNNdEosQ0FJR0EsQ0FKSzhn
QyxDQUFBLENBQVd0OUIsQ0FBQSxDQUFVOEYsQ0FBVixDQUFYLENBSUx0SixDQUhPLElBQUssRUFH
WkEsR0FISEEsQ0FHR0EsR0FGTEEsQ0FFS0EsQ0FGRyxJQUVIQSxFQUFBQSxDQUxULEVBUU84Z0Ms
Q0FYYSxDQUhRLENBOEJoQ0MsUUFBU0EsR0FBYSxDQUFDcjJCLENBQUQ7QUFBT3cxQixDQUFQLENB
QWdCYyxDQUFoQixDQUF3QkMsQ0FBeEIsQ0FBNkIsQ0FDakQsR0FBSTVoQyxDQUFBLENBQVc0aEMs
Q0FBWCxDQUFKLENBQ0UsTUFBT0EsRUFBQSxDQUFJdjJCLENBQUosQ0FBVXcxQixDQUFWLENBQW1C
YyxDQUFuQixDQUdUL2hDLEVBQUEsQ0FBUWdpQyxDQUFSLENBQWEsUUFBUSxDQUFDdDdCLENBQUQs
Q0FBSyxDQUN4QitFLENBQUEsQ0FBTy9FLENBQUEsQ0FBRytFLENBQUgsQ0FBU3cxQixDQUFULENB
QWtCYyxDQUFsQixDQURpQixDQUExQixDQUlBLE9BQU90MkIsRUFUMEMsQ0F3Qm5Ea04sUUFBU0Es
R0FBYSxFQUFHLENBa0N2QixJQUFJc3BCLEVBQVcsSUFBQUEsU0FBWEEsQ0FBMkIsQ0FFN0JDLGtC
QUFtQixDQUFDbEIsRUFBRCxDQUZVLENBSzdCbUIsaUJBQWtCLENBQUMsUUFBUSxDQUFDQyxDQUFE
LENBQUksQ0FDN0IsTUFBTzFnQyxFQUFBLENBQVMwZ0MsQ0FBVCxDQUFBLEVBeitRbUIsZUF5K1Fu
QixHQXorUUpuL0IsRUFBQTNDLEtBQUEsQ0F5K1EyQjhoQyxDQXorUTNCLENBeStRSSxFQS85UW1C
LGVBKzlRbkIsR0EvOVFKbi9CLEVBQUEzQyxLQUFBLENBKzlReUM4aEMsQ0EvOVF6QyxDQSs5UUks
RUFwK1FtQixtQkFvK1FuQixHQXArUUpuL0IsRUFBQTNDLEtBQUEsQ0FvK1EyRDhoQyxDQXArUTNE
LENBbytRSSxDQUE0RHA3QixFQUFBLENBQU9vN0IsQ0FBUCxDQUE1RCxDQUF3RUEsQ0FEbEQsQ0FB
YixDQUxXLENBVTdCbkIsUUFBUyxDQUNQb0IsT0FBUSxDQUNOLE9BQVUsbUNBREosQ0FERCxDQUlQ
dk4sS0FBUWx2QixFQUFBLENBQVkwOEIsRUFBWixDQUpELENBS1AzZixJQUFRL2MsRUFBQSxDQUFZ
MDhCLEVBQVosQ0FMRCxDQU1QQyxNQUFRMzhCLEVBQUEsQ0FBWTA4QixFQUFaLENBTkQsQ0FWb0Is
Q0FtQjdCRSxlQUFnQixZQW5CYSxDQW9CN0JDLGVBQWdCLGNBcEJhLENBc0I3QkMsZ0JBQWlCLHNC
QXRCWSxDQUEvQixDQXlCSUMsRUFBZ0IsQ0FBQSxDQW9CcEIsS0FBQUEsY0FBQSxDQUFxQkMsUUFB
USxDQUFDN2hDLENBQUQsQ0FBUSxDQUNuQyxNQUFJcUMsRUFBQSxDQUFVckMsQ0FBVixDQUFKO0NB
Q0U0aEMsQ0FDTyxDQURTLENBQUU1aEMsQ0FBQUEsQ0FDWCxDQUFBLElBRlQsRUFJTzRoQyxDQUw0
QixDQXFCckMsS0FBSUUsRUFBdUIsSUFBQUMsYUFBdkJELENBQTJDLEVBRS9DLEtBQUE5Z0IsS0FB
QSxDQUFZLENBQUMsY0FBRCxDQUFpQixnQkFBakIsQ0FBbUMsZUFBbkMsQ0FBb0QsWUFBcEQsQ0FB
a0UsSUFBbEUsQ0FBd0UsV0FBeEUsQ0FDUixRQUFRLENBQUMvSSxDQUFELENBQWVvQyxDQUFmLENB
QStCeEQsQ0FBL0IsQ0FBOEM0QixDQUE5QyxDQUEwREUsQ0FBMUQsQ0FBOEQ0TCxDQUE5RCxDQUF5
RSxDQXFpQm5GNU0sUUFBU0EsRUFBSyxDQUFDcXFCLENBQUQsQ0FBZ0IsQ0ErRTVCYixRQUFTQSxF
QUFpQixDQUFDYyxDQUFELENBQVcsQ0FFbkMsSUFBSUMsRUFBT2hoQyxDQUFBLENBQU8sRUFBUCxD
QUFXK2dDLENBQVgsQ0FJVEMsRUFBQXgzQixLQUFBLENBSEd1M0IsQ0FBQXYzQixLQUFMLENBR2Nx
MkIsRUFBQSxDQUFja0IsQ0FBQXYzQixLQUFkLENBQTZCdTNCLENBQUEvQixRQUE3QixDQUErQytC
LENBQUFqQixPQUEvQyxDQUFnRTUzQixDQUFBKzNCLGtCQUFoRSxDQUhkLENBQ2NjLENBQUF2M0Is
S0FJSXMyQixFQUFBQSxDQUFBaUIsQ0FBQWpCLE9BQWxCLE9BN3VCQyxJQTZ1Qk0sRUE3dUJDQSxD
QTZ1QkQsRUE3dUJvQixHQTZ1QnBCLENBN3VCV0EsQ0E2dUJYLENBQ0hrQixDQURHLENBRUh2cEIs
Q0FBQXdwQixPQUFBLENBQVVELENBQVYsQ0FWK0IsQ0FhckNFLFFBQVNBLEVBQWdCLENBQUNsQyxD
QUFELENBQVU5MkIsQ0FBVixDQUFrQixDQUFBLElBQ3JDaTVCLENBRHFDLENBQ3RCQyxFQUFtQixF
QUV0Q3JqQyxFQUFBLENBQVFpaEMsQ0FBUixDQUFpQixRQUFRLENBQUNxQyxDQUFELENBQVdDLENB
QVgsQ0FBbUIsQ0FDdENuakMsQ0FBQSxDQUFXa2pDLENBQVgsQ0FBSixFQUNFRixDQUNBLENBRGdC
RSxDQUFBLENBQVNuNUIsQ0FBVCxDQUNoQixDQUFxQixJQUFyQixFQUFJaTVCLENBQUosR0FDRUMs
Q0FBQSxDQUFpQkUsQ0FBakIsQ0FERixDQUM2QkgsQ0FEN0IsQ0FGRixFQU1FQyxDQUFBLENBQWlC
RSxDQUFqQixDQU5GLENBTTZCRCxDQVBhLENBQTVDLENBV0EsT0FBT0QsRUFka0MsQ0ExRjNDLEdB
QUssQ0FBQXozQixFQUFBbEssU0FBQSxDQUFpQnFoQyxDQUFqQixDQUFMLENBQ0UsS0FBTXpqQyxF
QUFBLENBQU8sT0FBUCxDQUFBLENBQWdCLFFBQWhCLENBQTBGeWpDLENBQTFGLENBQU4sQ0FHRixJ
QUFJNTRCLEVBQVNsSSxDQUFBLENBQU8sQ0FDbEIwTixPQUFRLEtBRFUsQ0FFbEJ3eUIsaUJBQWtC
RixDQUFBRSxpQkFGQTtBQUdsQkQsa0JBQW1CRCxDQUFBQyxrQkFIRCxDQUlsQlEsZ0JBQWlCVCxD
QUFBUyxnQkFKQyxDQUFQLENBS1ZLLENBTFUsQ0FPYjU0QixFQUFBODJCLFFBQUEsQ0FnR0F1QyxR
QUFxQixDQUFDcjVCLENBQUQsQ0FBUyxDQUFBLElBQ3hCczVCLEVBQWF4QixDQUFBaEIsUUFEVyxD
QUV4QnlDLEVBQWF6aEMsQ0FBQSxDQUFPLEVBQVAsQ0FBV2tJLENBQUE4MkIsUUFBWCxDQUZXLENB
R3hCMEMsQ0FId0IsQ0FHVEMsQ0FIUyxDQUdlQyxDQUhmLENBSzVCSixFQUFheGhDLENBQUEsQ0FB
TyxFQUFQLENBQVd3aEMsQ0FBQXBCLE9BQVgsQ0FBOEJvQixDQUFBLENBQVdsL0IsQ0FBQSxDQUFV
NEYsQ0FBQXdGLE9BQVYsQ0FBWCxDQUE5QixDQUdiLEVBQUEsQ0FDQSxJQUFLZzBCLENBQUwsR0FB
c0JGLEVBQXRCLENBQWtDLENBQ2hDRyxDQUFBLENBQXlCci9CLENBQUEsQ0FBVW8vQixDQUFWLENB
RXpCLEtBQUtFLENBQUwsR0FBc0JILEVBQXRCLENBQ0UsR0FBSW4vQixDQUFBLENBQVVzL0IsQ0FB
VixDQUFKLEdBQWlDRCxDQUFqQyxDQUNFLFNBQVMsQ0FJYkYsRUFBQSxDQUFXQyxDQUFYLENBQUEs
Q0FBNEJGLENBQUEsQ0FBV0UsQ0FBWCxDQVRJLENBYWxDLE1BQU9SLEVBQUEsQ0FBaUJPLENBQWpC
LENBQTZCOTlCLEVBQUEsQ0FBWXVFLENBQVosQ0FBN0IsQ0F0QnFCLENBaEdiLENBQWE0NEIsQ0FB
YixDQUNqQjU0QixFQUFBd0YsT0FBQSxDQUFnQndCLEVBQUEsQ0FBVWhILENBQUF3RixPQUFWLENB
Q2hCeEYsRUFBQXU0QixnQkFBQSxDQUF5QjVpQyxDQUFBLENBQVNxSyxDQUFBdTRCLGdCQUFULENB
QUEsQ0FDdkJwZCxDQUFBaFosSUFBQSxDQUFjbkMsQ0FBQXU0QixnQkFBZCxDQUR1QixDQUNpQnY0
QixDQUFBdTRCLGdCQXVCMUMsS0FBSW9CLEVBQVEsQ0FyQlFDLFFBQVEsQ0FBQzU1QixDQUFELENB
QVMsQ0FDbkMsSUFBSTgyQixFQUFVOTJCLENBQUE4MkIsUUFBZCxDQUNJK0MsRUFBVWxDLEVBQUEs
Q0FBYzMzQixDQUFBc0IsS0FBZCxDQUEyQm0yQixFQUFBLENBQWNYLENBQWQsQ0FBM0IsQ0FBbUQ1
aEMsQ0FBbkQsQ0FBOEQ4SyxDQUFBZzRCLGlCQUE5RCxDQUdWaC9CLEVBQUEsQ0FBWTZnQyxDQUFa
LENBQUosRUFDRWhrQyxDQUFBLENBQVFpaEMsQ0FBUixDQUFpQixRQUFRLENBQUNsZ0MsQ0FBRCxD
QUFRd2lDLENBQVIsQ0FBZ0IsQ0FDYixjQUExQixHQUFJaC9CLENBQUEsQ0FBVWcvQixDQUFWLENB
QUosRUFDSSxPQUFPdEMsQ0FBQSxDQUFRc0MsQ0FBUixDQUY0QixDQUF6QyxDQU9FcGdDLEVBQUEs
Q0FBWWdILENBQUE4NUIsZ0JBQVosQ0FBSjtBQUE0QyxDQUFBOWdDLENBQUEsQ0FBWTgrQixDQUFB
Z0MsZ0JBQVosQ0FBNUMsR0FDRTk1QixDQUFBODVCLGdCQURGLENBQzJCaEMsQ0FBQWdDLGdCQUQz
QixDQUtBLE9BQU9DLEVBQUEsQ0FBUS81QixDQUFSLENBQWdCNjVCLENBQWhCLENBQUF4SyxLQUFB
LENBQThCMEksQ0FBOUIsQ0FBaURBLENBQWpELENBbEI0QixDQXFCekIsQ0FBZ0I3aUMsQ0FBaEIs
Q0FBWixDQUNJOGtDLEVBQVV6cUIsQ0FBQTBxQixLQUFBLENBQVFqNkIsQ0FBUixDQVlkLEtBVEFu
SyxDQUFBLENBQVFxa0MsQ0FBUixDQUE4QixRQUFRLENBQUNDLENBQUQsQ0FBYyxDQUNsRCxDQUFJ
QSxDQUFBQyxRQUFKLEVBQTJCRCxDQUFBRSxhQUEzQixHQUNFVixDQUFBLzRCLFFBQUEsQ0FBY3U1
QixDQUFBQyxRQUFkLENBQW1DRCxDQUFBRSxhQUFuQyxDQUVGLEVBQUlGLENBQUF0QixTQUFKLEVB
QTRCc0IsQ0FBQUcsY0FBNUIsR0FDRVgsQ0FBQXorQixLQUFBLENBQVdpL0IsQ0FBQXRCLFNBQVgs
Q0FBaUNzQixDQUFBRyxjQUFqQyxDQUxnRCxDQUFwRCxDQVNBLENBQU9YLENBQUFwa0MsT0FBUCxD
QUFBLENBQXFCLENBQ2ZnbEMsQ0FBQUEsQ0FBU1osQ0FBQWpmLE1BQUEsRUFDYixLQUFJOGYsRUFB
V2IsQ0FBQWpmLE1BQUEsRUFBZixDQUVBc2YsRUFBVUEsQ0FBQTNLLEtBQUEsQ0FBYWtMLENBQWIs
Q0FBcUJDLENBQXJCLENBSlMsQ0FPckJSLENBQUFTLFFBQUEsQ0FBa0JDLFFBQVEsQ0FBQ24rQixD
QUFELENBQUssQ0FDN0IySCxFQUFBLENBQVkzSCxDQUFaLENBQWdCLElBQWhCLENBRUF5OUIsRUFB
QTNLLEtBQUEsQ0FBYSxRQUFRLENBQUN3SixDQUFELENBQVcsQ0FDOUJ0OEIsQ0FBQSxDQUFHczhC
LENBQUF2M0IsS0FBSCxDQUFrQnUzQixDQUFBakIsT0FBbEIsQ0FBbUNpQixDQUFBL0IsUUFBbkMs
Q0FBcUQ5MkIsQ0FBckQsQ0FEOEIsQ0FBaEMsQ0FHQSxPQUFPZzZCLEVBTnNCLENBUy9CQSxFQUFB
aGMsTUFBQSxDQUFnQjJjLFFBQVEsQ0FBQ3ArQixDQUFELENBQUssQ0FDM0IySCxFQUFBLENBQVkz
SCxDQUFaLENBQWdCLElBQWhCLENBRUF5OUIsRUFBQTNLLEtBQUEsQ0FBYSxJQUFiLENBQW1CLFFB
QVEsQ0FBQ3dKLENBQUQsQ0FBVyxDQUNwQ3Q4QixDQUFBLENBQUdzOEIsQ0FBQXYzQixLQUFILENB
QWtCdTNCLENBQUFqQixPQUFsQixDQUFtQ2lCLENBQUEvQixRQUFuQyxDQUFxRDkyQixDQUFyRCxD
QURvQyxDQUF0QyxDQUdBLE9BQU9nNkIsRUFOb0IsQ0FTN0IsT0FBT0EsRUE3RXFCLENBcmlCcUQ7
QUF1ekJuRkQsUUFBU0EsRUFBTyxDQUFDLzVCLENBQUQsQ0FBUzY1QixDQUFULENBQWtCLENBK0Ro
Q2UsUUFBU0EsRUFBSSxDQUFDaEQsQ0FBRCxDQUFTaUIsQ0FBVCxDQUFtQmdDLENBQW5CLENBQWtD
QyxDQUFsQyxDQUE4QyxDQVV6REMsUUFBU0EsRUFBa0IsRUFBRyxDQUM1QkMsQ0FBQSxDQUFlbkMs
Q0FBZixDQUF5QmpCLENBQXpCLENBQWlDaUQsQ0FBakMsQ0FBZ0RDLENBQWhELENBRDRCLENBVDFC
MWdCLENBQUosR0F4K0JDLEdBeStCQyxFQUFjd2QsQ0FBZCxFQXorQnlCLEdBeStCekIsQ0FBY0Es
Q0FBZCxDQUNFeGQsQ0FBQTVCLElBQUEsQ0FBVWlHLENBQVYsQ0FBZSxDQUFDbVosQ0FBRCxDQUFT
aUIsQ0FBVCxDQUFtQnhCLEVBQUEsQ0FBYXdELENBQWIsQ0FBbkIsQ0FBZ0RDLENBQWhELENBQWYs
Q0FERixDQUlFMWdCLENBQUErSCxPQUFBLENBQWExRCxDQUFiLENBTEosQ0FhSStaLEVBQUosQ0FD
RW5wQixDQUFBNHJCLFlBQUEsQ0FBdUJGLENBQXZCLENBREYsRUFHRUEsQ0FBQSxFQUNBLENBQUsx
ckIsQ0FBQTZyQixRQUFMLEVBQXlCN3JCLENBQUFoTyxPQUFBLEVBSjNCLENBZHlELENBMEIzRDI1
QixRQUFTQSxFQUFjLENBQUNuQyxDQUFELENBQVdqQixDQUFYLENBQW1CZCxDQUFuQixDQUE0QmdF
LENBQTVCLENBQXdDLENBRTdEbEQsQ0FBQSxDQUFTdkosSUFBQUMsSUFBQSxDQUFTc0osQ0FBVCxD
QUFpQixDQUFqQixDQUVULEVBcmdDQyxHQXFnQ0EsRUFBVUEsQ0FBVixFQXJnQzBCLEdBcWdDMUIs
Q0FBVUEsQ0FBVixDQUFvQnVELENBQUFDLFFBQXBCLENBQXVDRCxDQUFBcEMsT0FBeEMsRUFBeUQs
Q0FDdkR6M0IsS0FBTXUzQixDQURpRCxDQUV2RGpCLE9BQVFBLENBRitDLENBR3ZEZCxRQUFTVyxF
QUFBLENBQWNYLENBQWQsQ0FIOEMsQ0FJdkQ5MkIsT0FBUUEsQ0FKK0MsQ0FLdkQ4NkIsV0FBWUEs
Q0FMMkMsQ0FBekQsQ0FKNkQsQ0FhL0RPLFFBQVNBLEVBQXdCLENBQUM3aEIsQ0FBRCxDQUFTLENB
Q3hDd2hCLENBQUEsQ0FBZXhoQixDQUFBbFksS0FBZixDQUE0QmtZLENBQUFvZSxPQUE1QixDQUEy
Q244QixFQUFBLENBQVkrZCxDQUFBc2QsUUFBQSxFQUFaLENBQTNDLENBQTBFdGQsQ0FBQXNoQixX
QUExRSxDQUR3QyxDQUkxQ1EsUUFBU0EsRUFBZ0IsRUFBRyxDQUMxQixJQUFJdFUsRUFBTXpZLENB
QUFndEIsZ0JBQUEvZ0MsUUFBQSxDQUE4QndGLENBQTlCLENBQ0csR0FBYixHQUFJZ25CLENBQUos
RUFBZ0J6WSxDQUFBZ3RCLGdCQUFBOWdDLE9BQUEsQ0FBNkJ1c0IsQ0FBN0IsQ0FBa0MsQ0FBbEMs
Q0FGVSxDQTFHSSxJQUM1Qm1VLEVBQVc1ckIsQ0FBQWlSLE1BQUEsRUFEaUIsQ0FFNUJ3WixFQUFV
bUIsQ0FBQW5CLFFBRmtCLENBRzVCNWYsQ0FINEIsQ0FJNUJvaEIsQ0FKNEIsQ0FLNUJqQyxFQUFh
djVCLENBQUE4MkIsUUFMZSxDQU01QnJZLEVBQU1nZCxDQUFBLENBQVN6N0IsQ0FBQXllLElBQVQs
Q0FBcUJ6ZSxDQUFBdTRCLGdCQUFBLENBQXVCdjRCLENBQUF3MkIsT0FBdkIsQ0FBckIsQ0FFVmpv
QjtDQUFBZ3RCLGdCQUFBcmdDLEtBQUEsQ0FBMkI4RSxDQUEzQixDQUNBZzZCLEVBQUEzSyxLQUFB
LENBQWFpTSxDQUFiLENBQStCQSxDQUEvQixDQUdLbGhCLEVBQUFwYSxDQUFBb2EsTUFBTCxFQUFx
QkEsQ0FBQTBkLENBQUExZCxNQUFyQixFQUF5RCxDQUFBLENBQXpELEdBQXdDcGEsQ0FBQW9hLE1B
QXhDLEVBQ3VCLEtBRHZCLEdBQ0twYSxDQUFBd0YsT0FETCxFQUNrRCxPQURsRCxHQUNnQ3hGLENB
QUF3RixPQURoQyxHQUVFNFUsQ0FGRixDQUVVN2lCLENBQUEsQ0FBU3lJLENBQUFvYSxNQUFULENB
QUEsQ0FBeUJwYSxDQUFBb2EsTUFBekIsQ0FDQTdpQixDQUFBLENBQVN1Z0MsQ0FBQTFkLE1BQVQs
Q0FBQSxDQUEyQjBkLENBQUExZCxNQUEzQixDQUNBc2hCLENBSlYsQ0FPSXRoQixFQUFKLEdBQ0Vv
aEIsQ0FDQSxDQURhcGhCLENBQUFqWSxJQUFBLENBQVVzYyxDQUFWLENBQ2IsQ0FBSXhsQixDQUFB
LENBQVV1aUMsQ0FBVixDQUFKLENBQ29CQSxDQUFsQixFQWoyU012bEMsQ0FBQSxDQWkyU1l1bEMs
Q0FqMlNEbk0sS0FBWCxDQWkyU04sQ0FFRW1NLENBQUFuTSxLQUFBLENBQWdCZ00sQ0FBaEIsQ0FB
MENBLENBQTFDLENBRkYsQ0FLTXpsQyxDQUFBLENBQVE0bEMsQ0FBUixDQUFKLENBQ0VSLENBQUEs
Q0FBZVEsQ0FBQSxDQUFXLENBQVgsQ0FBZixDQUE4QkEsQ0FBQSxDQUFXLENBQVgsQ0FBOUIsQ0FB
NkMvL0IsRUFBQSxDQUFZKy9CLENBQUEsQ0FBVyxDQUFYLENBQVosQ0FBN0MsQ0FBeUVBLENBQUEs
Q0FBVyxDQUFYLENBQXpFLENBREYsQ0FHRVIsQ0FBQSxDQUFlUSxDQUFmLENBQTJCLEdBQTNCLENB
QWdDLEVBQWhDLENBQW9DLElBQXBDLENBVE4sQ0FjRXBoQixDQUFBNUIsSUFBQSxDQUFVaUcsQ0FB
VixDQUFldWIsQ0FBZixDQWhCSixDQXVCSWhoQyxFQUFBLENBQVl3aUMsQ0FBWixDQUFKLEdBUUUs
Q0FQSUcsQ0FPSixDQVBnQkMsRUFBQSxDQUFnQjU3QixDQUFBeWUsSUFBaEIsQ0FBQSxDQUNWeE4s
Q0FBQSxFQUFBLENBQWlCalIsQ0FBQXE0QixlQUFqQixFQUEwQ1AsQ0FBQU8sZUFBMUMsQ0FEVSxD
QUVWbmpDLENBS04sSUFIRXFrQyxDQUFBLENBQVl2NUIsQ0FBQXM0QixlQUFaLEVBQXFDUixDQUFB
USxlQUFyQyxDQUdGLENBSG1FcUQsQ0FHbkUsRUFBQTlzQixDQUFBLENBQWE3TyxDQUFBd0YsT0FB
YixDQUE0QmlaLENBQTVCLENBQWlDb2IsQ0FBakMsQ0FBMENlLENBQTFDLENBQWdEckIsQ0FBaEQs
Q0FBNER2NUIsQ0FBQTY3QixRQUE1RCxDQUNJNzdCLENBQUE4NUIsZ0JBREosQ0FDNEI5NUIsQ0FB
QTg3QixhQUQ1QixDQVJGLENBWUEsT0FBTzlCLEVBdER5QixDQWlIbEN5QixRQUFTQSxFQUFRLENB
QUNoZCxDQUFELENBQU1zZCxDQUFOLENBQXdCLENBQ1QsQ0FBOUIsQ0FBSUEsQ0FBQXhtQyxPQUFK
LEdBQ0VrcEIsQ0FERixHQUNnQyxFQUF0QixFQUFDQSxDQUFBamtCLFFBQUEsQ0FBWSxHQUFaLENB
QUQsQ0FBMkIsR0FBM0IsQ0FBaUMsR0FEM0MsRUFDa0R1aEMsQ0FEbEQsQ0FHQTtNQUFPdGQsRUFK
Z0MsQ0F0NkJ6QyxJQUFJaWQsRUFBZWp1QixDQUFBLENBQWMsT0FBZCxDQUtuQnFxQixFQUFBUyxn
QkFBQSxDQUEyQjVpQyxDQUFBLENBQVNtaUMsQ0FBQVMsZ0JBQVQsQ0FBQSxDQUN6QnBkLENBQUFo
WixJQUFBLENBQWMyMUIsQ0FBQVMsZ0JBQWQsQ0FEeUIsQ0FDaUJULENBQUFTLGdCQU81QyxLQUFJ
MkIsRUFBdUIsRUFFM0Jya0MsRUFBQSxDQUFRNmlDLENBQVIsQ0FBOEIsUUFBUSxDQUFDc0QsQ0FB
RCxDQUFxQixDQUN6RDlCLENBQUF0NUIsUUFBQSxDQUE2QmpMLENBQUEsQ0FBU3FtQyxDQUFULENB
QUEsQ0FDdkI3Z0IsQ0FBQWhaLElBQUEsQ0FBYzY1QixDQUFkLENBRHVCLENBQ2E3Z0IsQ0FBQWxh
LE9BQUEsQ0FBaUIrNkIsQ0FBakIsQ0FEMUMsQ0FEeUQsQ0FBM0QsQ0EycEJBenRCLEVBQUFndEIs
Z0JBQUEsQ0FBd0IsRUE0R3hCVSxVQUEyQixDQUFDdm1CLENBQUQsQ0FBUSxDQUNqQzdmLENBQUEs
Q0FBUW1DLFNBQVIsQ0FBbUIsUUFBUSxDQUFDa0ksQ0FBRCxDQUFPLENBQ2hDcU8sQ0FBQSxDQUFN
ck8sQ0FBTixDQUFBLENBQWMsUUFBUSxDQUFDdWUsQ0FBRCxDQUFNemUsQ0FBTixDQUFjLENBQ2xD
LE1BQU91TyxFQUFBLENBQU16VyxDQUFBLENBQU8sRUFBUCxDQUFXa0ksQ0FBWCxFQUFxQixFQUFy
QixDQUF5QixDQUNwQ3dGLE9BQVF0RixDQUQ0QixDQUVwQ3VlLElBQUtBLENBRitCLENBQXpCLENB
QU4sQ0FEMkIsQ0FESixDQUFsQyxDQURpQyxDQUFuQ3dkLENBMURBLENBQW1CLEtBQW5CLENBQTBC
LFFBQTFCLENBQW9DLE1BQXBDLENBQTRDLE9BQTVDLENBc0VBQyxVQUFtQyxDQUFDaDhCLENBQUQs
Q0FBTyxDQUN4Q3JLLENBQUEsQ0FBUW1DLFNBQVIsQ0FBbUIsUUFBUSxDQUFDa0ksQ0FBRCxDQUFP
LENBQ2hDcU8sQ0FBQSxDQUFNck8sQ0FBTixDQUFBLENBQWMsUUFBUSxDQUFDdWUsQ0FBRCxDQUFN
bmQsQ0FBTixDQUFZdEIsQ0FBWixDQUFvQixDQUN4QyxNQUFPdU8sRUFBQSxDQUFNelcsQ0FBQSxD
QUFPLEVBQVAsQ0FBV2tJLENBQVgsRUFBcUIsRUFBckIsQ0FBeUIsQ0FDcEN3RixPQUFRdEYsQ0FE
NEIsQ0FFcEN1ZSxJQUFLQSxDQUYrQixDQUdwQ25kLEtBQU1BLENBSDhCLENBQXpCLENBQU4sQ0FE
aUMsQ0FEVixDQUFsQyxDQUR3QyxDQUExQzQ2QixDQTlCQSxDQUEyQixNQUEzQixDQUFtQyxLQUFu
QyxDQUEwQyxPQUExQyxDQVlBM3RCLEVBQUF1cEIsU0FBQSxDQUFpQkEsQ0FHakIsT0FBT3ZwQixF
QXJ4QjRFLENBRHpFLENBdEdXLENBd2hDekI0dEIsUUFBU0EsR0FBUyxFQUFHLENBQ2pCLE1BQU8s
S0FBSW5uQyxDQUFBb25DLGVBRE0sQ0EvcFVrQjtBQW1yVXZDdHRCLFFBQVNBLEdBQW9CLEVBQUcs
Q0FDOUIsSUFBQThJLEtBQUEsQ0FBWSxDQUFDLFVBQUQsQ0FBYSxTQUFiLENBQXdCLFdBQXhCLENB
QXFDLFFBQVEsQ0FBQ3JLLENBQUQsQ0FBV2tELENBQVgsQ0FBb0I1QyxDQUFwQixDQUErQixDQUN0
RixNQUFPd3VCLEdBQUEsQ0FBa0I5dUIsQ0FBbEIsQ0FBNEI0dUIsRUFBNUIsQ0FBdUM1dUIsQ0FB
QWlULE1BQXZDLENBQXVEL1AsQ0FBQWhQLFFBQUE2NkIsVUFBdkQsQ0FBa0Z6dUIsQ0FBQSxDQUFV
LENBQVYsQ0FBbEYsQ0FEK0UsQ0FBNUUsQ0FEa0IsQ0FNaEN3dUIsUUFBU0EsR0FBaUIsQ0FBQzl1
QixDQUFELENBQVc0dUIsQ0FBWCxDQUFzQkksQ0FBdEIsQ0FBcUNELENBQXJDLENBQWdERSxDQUFo
RCxDQUE2RCxDQThHckZDLFFBQVNBLEVBQVEsQ0FBQ2hlLENBQUQsQ0FBTWllLENBQU4sQ0FBa0I5
QixDQUFsQixDQUF3QixDQUFBLElBSW5DNXlCLEVBQVN3MEIsQ0FBQXZxQixjQUFBLENBQTBCLFFB
QTFCLENBSjBCLENBSVdvTixFQUFXLElBQzdEclgsRUFBQTZMLEtBQUEsQ0FBYyxpQkFDZDdMLEVB
QUF0USxJQUFBLENBQWErbUIsQ0FDYnpXLEVBQUEyMEIsTUFBQSxDQUFlLENBQUEsQ0FFZnRkLEVB
QUEsQ0FBV0EsUUFBUSxDQUFDdEksQ0FBRCxDQUFRLENBQ0gvTyxDQTd2UHRCbU0sb0JBQUEsQ0E2
dlA4Qk4sTUE3dlA5QixDQTZ2UHNDd0wsQ0E3dlB0QyxDQUFzQyxDQUFBLENBQXRDLENBOHZQc0Jy
WCxFQTl2UHRCbU0sb0JBQUEsQ0E4dlA4Qk4sT0E5dlA5QixDQTh2UHVDd0wsQ0E5dlB2QyxDQUFz
QyxDQUFBLENBQXRDLENBK3ZQQW1kLEVBQUFJLEtBQUE3bUIsWUFBQSxDQUE2Qi9OLENBQTdCLENB
Q0FBLEVBQUEsQ0FBUyxJQUNULEtBQUk0dkIsRUFBVSxFQUFkLENBQ0l6SCxFQUFPLFNBRVBwWixF
QUFKLEdBQ3FCLE1BSW5CLEdBSklBLENBQUFsRCxLQUlKLEVBSjhCeW9CLENBQUEsQ0FBVUksQ0FB
VixDQUFBRyxPQUk5QixHQUhFOWxCLENBR0YsQ0FIVSxDQUFFbEQsS0FBTSxPQUFSLENBR1YsRUFE
QXNjLENBQ0EsQ0FET3BaLENBQUFsRCxLQUNQLENBQUErakIsQ0FBQSxDQUF3QixPQUFmLEdBQUE3
Z0IsQ0FBQWxELEtBQUEsQ0FBeUIsR0FBekIsQ0FBK0IsR0FMMUMsQ0FRSSttQixFQUFKLEVBQ0VB
LENBQUEsQ0FBS2hELENBQUwsQ0FBYXpILENBQWIsQ0FqQnVCLENBcUJSbm9CLEVBcHhQakI4MEIs
aUJBQUEsQ0FveFB5QmpwQixNQXB4UHpCO0FBb3hQaUN3TCxDQXB4UGpDLENBQW1DLENBQUEsQ0FB
bkMsQ0FxeFBpQnJYLEVBcnhQakI4MEIsaUJBQUEsQ0FxeFB5QmpwQixPQXJ4UHpCLENBcXhQa0N3
TCxDQXJ4UGxDLENBQW1DLENBQUEsQ0FBbkMsQ0FzeFBGbWQsRUFBQUksS0FBQTVxQixZQUFBLENB
QTZCaEssQ0FBN0IsQ0FDQSxPQUFPcVgsRUFqQ2dDLENBNUd6QyxNQUFPLFNBQVEsQ0FBQzdaLENB
QUQsQ0FBU2laLENBQVQsQ0FBY2tNLENBQWQsQ0FBb0J0TCxDQUFwQixDQUE4QnlYLENBQTlCLENB
QXVDK0UsQ0FBdkMsQ0FBZ0QvQixDQUFoRCxDQUFpRWdDLENBQWpFLENBQStFLENBMkY1RmlCLFFB
QVNBLEVBQWMsRUFBRyxDQUN4QkMsQ0FBQSxFQUFhQSxDQUFBLEVBQ2JDLEVBQUEsRUFBT0EsQ0FB
QUMsTUFBQSxFQUZpQixDQUsxQkMsUUFBU0EsRUFBZSxDQUFDOWQsQ0FBRCxDQUFXdVksQ0FBWCxD
QUFtQmlCLENBQW5CLENBQTZCZ0MsQ0FBN0IsQ0FBNENDLENBQTVDLENBQXdELENBRTFFbmEsQ0FB
SixHQUFrQnpyQixDQUFsQixFQUNFcW5DLENBQUEzYixPQUFBLENBQXFCRCxDQUFyQixDQUVGcWMs
RUFBQSxDQUFZQyxDQUFaLENBQWtCLElBRWxCNWQsRUFBQSxDQUFTdVksQ0FBVCxDQUFpQmlCLENB
QWpCLENBQTJCZ0MsQ0FBM0IsQ0FBMENDLENBQTFDLENBQ0F2dEIsRUFBQXlSLDZCQUFBLENBQXND
dm1CLENBQXRDLENBUjhFLENBL0ZoRjhVLENBQUEwUiw2QkFBQSxFQUNBUixFQUFBLENBQU1BLENB
QU4sRUFBYWxSLENBQUFrUixJQUFBLEVBRWIsSUFBeUIsT0FBekIsRUFBSXJrQixDQUFBLENBQVVv
TCxDQUFWLENBQUosQ0FBa0MsQ0FDaEMsSUFBSWszQixFQUFhLEdBQWJBLENBQW1CNWpDLENBQUN3
akMsQ0FBQXIxQixRQUFBLEVBQURuTyxVQUFBLENBQStCLEVBQS9CLENBQ3ZCd2pDLEVBQUEsQ0FB
VUksQ0FBVixDQUFBLENBQXdCLFFBQVEsQ0FBQ3A3QixDQUFELENBQU8sQ0FDckNnN0IsQ0FBQSxD
QUFVSSxDQUFWLENBQUFwN0IsS0FBQSxDQUE2QkEsQ0FDN0JnN0IsRUFBQSxDQUFVSSxDQUFWLENB
QUFHLE9BQUEsQ0FBK0IsQ0FBQSxDQUZNLENBS3ZDLEtBQUlHLEVBQVlQLENBQUEsQ0FBU2hlLENB
QUEvZixRQUFBLENBQVksZUFBWixDQUE2QixvQkFBN0IsQ0FBb0RnK0IsQ0FBcEQsQ0FBVCxDQUNa
QSxDQURZLENBQ0EsUUFBUSxDQUFDOUUsQ0FBRCxDQUFTekgsQ0FBVCxDQUFlLENBQ3JDZ04sQ0FB
QSxDQUFnQjlkLENBQWhCLENBQTBCdVksQ0FBMUIsQ0FBa0MwRSxDQUFBLENBQVVJLENBQVYsQ0FB
QXA3QixLQUFsQyxDQUE4RCxFQUE5RCxDQUFrRTZ1QixDQUFsRSxDQUNBbU0sRUFBQSxDQUFVSSxD
QUFWLENBQUEsQ0FBd0Jqa0MsQ0FGYSxDQUR2QixDQVBnQixDQUFsQyxJQVlPLENBRUwsSUFBSXdr
QyxFQUFNZCxDQUFBLEVBRVZjLEVBQUFHLEtBQUEsQ0FBUzUzQixDQUFUO0FBQWlCaVosQ0FBakIs
Q0FBc0IsQ0FBQSxDQUF0QixDQUNBNW9CLEVBQUEsQ0FBUWloQyxDQUFSLENBQWlCLFFBQVEsQ0FB
Q2xnQyxDQUFELENBQVFaLENBQVIsQ0FBYSxDQUNoQ2lELENBQUEsQ0FBVXJDLENBQVYsQ0FBSixF
QUNJcW1DLENBQUFJLGlCQUFBLENBQXFCcm5DLENBQXJCLENBQTBCWSxDQUExQixDQUZnQyxDQUF0
QyxDQU1BcW1DLEVBQUFLLE9BQUEsQ0FBYUMsUUFBc0IsRUFBRyxDQUNwQyxJQUFJekMsRUFBYW1D
LENBQUFuQyxXQUFiQSxFQUErQixFQUFuQyxDQUlJakMsRUFBWSxVQUFELEVBQWVvRSxFQUFmLENB
QXNCQSxDQUFBcEUsU0FBdEIsQ0FBcUNvRSxDQUFBTyxhQUpwRCxDQU9JNUYsRUFBd0IsSUFBZixH
QUFBcUYsQ0FBQXJGLE9BQUEsQ0FBc0IsR0FBdEIsQ0FBNEJxRixDQUFBckYsT0FLMUIsRUFBZixH
QUFJQSxDQUFKLEdBQ0VBLENBREYsQ0FDV2lCLENBQUEsQ0FBVyxHQUFYLENBQTZDLE1BQTVCLEVB
QUE0RSxFQUFBLENBQVdoZixDQUFYLENBQUFpZixTQUFBLENBQXFDLEdBQXJDLENBQTJDLENBRHZF
LENBSUFQLEVBQUEsQ0FBZ0I5ZCxDQUFoQixDQUNJdVksQ0FESixDQUVJaUIsQ0FGSixDQUdJb0Us
Q0FBQVUsc0JBQUEsRUFISixDQUlJN0MsQ0FKSixDQWpCb0MsQ0F3QmxDVCxFQUFBQSxDQUFlQSxR
QUFRLEVBQUcsQ0FHNUI4QyxDQUFBLENBQWdCOWQsQ0FBaEIsQ0FBMkIsRUFBM0IsQ0FBOEIsSUFB
OUIsQ0FBb0MsSUFBcEMsQ0FBMEMsRUFBMUMsQ0FINEIsQ0FNOUI0ZCxFQUFBVyxRQUFBLENBQWN2
RCxDQUNkNEMsRUFBQVksUUFBQSxDQUFjeEQsQ0FFVlAsRUFBSixHQUNFbUQsQ0FBQW5ELGdCQURG
LENBQ3dCLENBQUEsQ0FEeEIsQ0FJQSxJQUFJZ0MsQ0FBSixDQUNFLEdBQUksQ0FDRm1CLENBQUFu
QixhQUFBLENBQW1CQSxDQURqQixDQUVGLE1BQU96OUIsQ0FBUCxDQUFVLENBUVYsR0FBcUIsTUFB
ckIsR0FBSXk5QixDQUFKLENBQ0UsS0FBTXo5QixFQUFOLENBVFEsQ0FjZDQrQixDQUFBYSxLQUFB
LENBQVNuVCxDQUFULENBakVLLENBb0VQLEdBQWMsQ0FBZCxDQUFJa1IsQ0FBSixDQUNFLElBQUls
YixFQUFZNGIsQ0FBQSxDQUFjUSxDQUFkLENBQThCbEIsQ0FBOUIsQ0FEbEIsS0FFeUJBLEVBQWxC
LEVBdmpUSzVsQyxDQUFBLENBdWpUYTRsQyxDQXZqVEZ4TSxLQUFYLENBdWpUTCxFQUNMd00sQ0FB
QXhNLEtBQUEsQ0FBYTBOLENBQWIsQ0F2RjBGLENBRlQsQ0FrTXZGM3VCLFFBQVNBLEdBQW9CLEVB
QUcsQ0FDOUIsSUFBSXVtQixFQUFjLElBQWxCLENBQ0lDLEVBQVksSUFXaEIsS0FBQUQsWUFBQTtB
QUFtQm9KLFFBQVEsQ0FBQ25uQyxDQUFELENBQVEsQ0FDakMsTUFBSUEsRUFBSixFQUNFKzlCLENB
Q08sQ0FETy85QixDQUNQLENBQUEsSUFGVCxFQUlTKzlCLENBTHdCLENBa0JuQyxLQUFBQyxVQUFB
LENBQWlCb0osUUFBUSxDQUFDcG5DLENBQUQsQ0FBUSxDQUMvQixNQUFJQSxFQUFKLEVBQ0VnK0Is
Q0FDTyxDQURLaCtCLENBQ0wsQ0FBQSxJQUZULEVBSVNnK0IsQ0FMc0IsQ0FVakMsS0FBQWhkLEtB
QUEsQ0FBWSxDQUFDLFFBQUQsQ0FBVyxtQkFBWCxDQUFnQyxNQUFoQyxDQUF3QyxRQUFRLENBQUN6
SSxDQUFELENBQVNwQixDQUFULENBQTRCNEIsQ0FBNUIsQ0FBa0MsQ0FNNUZzdUIsUUFBU0EsRUFB
TSxDQUFDQyxDQUFELENBQUssQ0FDbEIsTUFBTyxRQUFQLENBQWtCQSxDQURBLENBSXBCQyxRQUFT
QSxFQUFZLENBQUNoTyxDQUFELENBQU8sQ0FDMUIsTUFBT0EsRUFBQXp4QixRQUFBLENBQWEwL0Is
Q0FBYixDQUFpQ3pKLENBQWpDLENBQUFqMkIsUUFBQSxDQUNHMi9CLENBREgsQ0FDcUJ6SixDQURy
QixDQURtQixDQW9INUJ6bUIsUUFBU0EsRUFBWSxDQUFDZ2lCLENBQUQsQ0FBT21PLENBQVAsQ0FB
MkJsTixDQUEzQixDQUEyQ0QsQ0FBM0MsQ0FBeUQsQ0EwRjVFb04sUUFBU0EsRUFBeUIsQ0FBQzNu
QyxDQUFELENBQVEsQ0FDeEMsR0FBSSxDQUNlQSxJQUFBQSxFQUFBQSxDQXZDakIsRUFBQSxDQUFP
dzZCLENBQUEsQ0FDTHpoQixDQUFBNnVCLFdBQUEsQ0FBZ0JwTixDQUFoQixDQUFnQ3g2QixDQUFo
QyxDQURLLENBRUwrWSxDQUFBOVgsUUFBQSxDQUFhakIsQ0FBYixDQXNDSyxLQUFBLENBQUEsSUFB
QXU2QixDQUFBLEVBQWlCLENBQUFsNEIsQ0FBQSxDQUFVckMsQ0FBVixDQUFqQixDQUFvQ0EsQ0FB
QUEsQ0FBQUEsQ0FBcEMsS0EzTVgsSUFBYSxJQUFiLEVBQUlBLENBQUosQ0FDRSxDQUFBLENBQU8s
RUFEVCxLQUFBLENBR0EsT0FBUSxNQUFPQSxFQUFmLEVBQ0UsS0FBSyxRQUFMLENBQ0UsS0FDRixN
QUFLLFFBQUwsQ0FDRUEsQ0FBQSxDQUFRLEVBQVIsQ0FBYUEsQ0FDYixNQUNGLFNBQ0VBLENBQUEs
Q0FBUWlHLEVBQUEsQ0FBT2pHLENBQVAsQ0FQWixDQVVBLENBQUEsQ0FBT0EsQ0FiUCxDQTJNSSxN
QUFPLEVBRkwsQ0FHRixNQUFPNmpCLENBQVAsQ0FBWSxDQUNaMU0sQ0FBQSxDQUFrQjB3QixFQUFB
QyxPQUFBLENBQTBCdk8sQ0FBMUIsQ0FBZ0MxVixDQUFoQyxDQUFsQixDQURZLENBSjBCLENBekYx
QzBXLENBQUEsQ0FBZSxDQUFFQSxDQUFBQSxDQVdqQixLQVo0RSxJQUV4RTEwQixDQUZ3RSxDQUd4
RWtpQyxDQUh3RSxDQUl4RXBrQyxFQUFRLENBSmdFLENBS3hFcTJCO0FBQWMsRUFMMEQsQ0FNeEVn
TyxFQUFXLEVBTjZELENBT3hFQyxFQUFhMU8sQ0FBQTU2QixPQVAyRCxDQVN4RTJHLEVBQVMsRUFU
K0QsQ0FVeEU0aUMsRUFBc0IsRUFFMUIsQ0FBT3ZrQyxDQUFQLENBQWVza0MsQ0FBZixDQUFBLENB
Q0UsR0FBeUQsRUFBekQsR0FBTXBpQyxDQUFOLENBQW1CMHpCLENBQUEzMUIsUUFBQSxDQUFhbTZC
LENBQWIsQ0FBMEJwNkIsQ0FBMUIsQ0FBbkIsR0FDK0UsRUFEL0UsR0FDT29rQyxDQURQLENBQ2tC
eE8sQ0FBQTMxQixRQUFBLENBQWFvNkIsQ0FBYixDQUF3Qm40QixDQUF4QixDQUFxQ3NpQyxDQUFy
QyxDQURsQixFQUVNeGtDLENBUUosR0FSY2tDLENBUWQsRUFQRVAsQ0FBQWhCLEtBQUEsQ0FBWWlq
QyxDQUFBLENBQWFoTyxDQUFBbEYsVUFBQSxDQUFlMXdCLENBQWYsQ0FBc0JrQyxDQUF0QixDQUFi
LENBQVosQ0FPRixDQUxBdWlDLENBS0EsQ0FMTTdPLENBQUFsRixVQUFBLENBQWV4dUIsQ0FBZixD
QUE0QnNpQyxDQUE1QixDQUErQ0osQ0FBL0MsQ0FLTixDQUpBL04sQ0FBQTExQixLQUFBLENBQWlC
OGpDLENBQWpCLENBSUEsQ0FIQUosQ0FBQTFqQyxLQUFBLENBQWNpVSxDQUFBLENBQU82dkIsQ0FB
UCxDQUFZVCxDQUFaLENBQWQsQ0FHQSxDQUZBaGtDLENBRUEsQ0FGUW9rQyxDQUVSLENBRm1CTSxD
QUVuQixDQURBSCxDQUFBNWpDLEtBQUEsQ0FBeUJnQixDQUFBM0csT0FBekIsQ0FDQSxDQUFBMkcs
Q0FBQWhCLEtBQUEsQ0FBWSxFQUFaLENBVkYsS0FXTyxDQUVEWCxDQUFKLEdBQWNza0MsQ0FBZCxF
QUNFM2lDLENBQUFoQixLQUFBLENBQVlpakMsQ0FBQSxDQUFhaE8sQ0FBQWxGLFVBQUEsQ0FBZTF3
QixDQUFmLENBQWIsQ0FBWixDQUVGLE1BTEssQ0FlTDYyQixDQUFKLEVBQXNDLENBQXRDLENBQXNC
bDFCLENBQUEzRyxPQUF0QixFQUNJa3BDLEVBQUFTLGNBQUEsQ0FBaUMvTyxDQUFqQyxDQUdKLElB
QUttTyxDQUFBQSxDQUFMLEVBQTJCMU4sQ0FBQXI3QixPQUEzQixDQUErQyxDQUM3QyxJQUFJNHBD
LEVBQVVBLFFBQVEsQ0FBQ2pLLENBQUQsQ0FBUyxDQUM3QixJQUQ2QixJQUNwQnorQixFQUFJLENB
RGdCLENBQ2JhLEVBQUtzNUIsQ0FBQXI3QixPQUFyQixDQUF5Q2tCLENBQXpDLENBQTZDYSxDQUE3
QyxDQUFpRGIsQ0FBQSxFQUFqRCxDQUFzRCxDQUNwRCxHQUFJMDZCLENBQUosRUFBb0JuNEIsQ0FB
QSxDQUFZazhCLENBQUEsQ0FBT3orQixDQUFQLENBQVosQ0FBcEIsQ0FBNEMsTUFDNUN5RixFQUFB
LENBQU80aUMsQ0FBQSxDQUFvQnJvQyxDQUFwQixDQUFQLENBQUEsQ0FBaUN5K0IsQ0FBQSxDQUFP
eitCLENBQVAsQ0FGbUIsQ0FJdEQsTUFBT3lGLEVBQUFrRCxLQUFBLENBQVksRUFBWixDQUxzQixD
QWMvQixPQUFPdEgsRUFBQSxDQUFPc25DLFFBQXdCLENBQUNycEMsQ0FBRCxDQUFVLENBQzVDLElB
QUlVLEVBQUksQ0FBUixDQUNJYSxFQUFLczVCLENBQUFyN0IsT0FEVCxDQUVJMi9CLEVBQWFsWixL
QUFKLENBQVUxa0IsQ0FBVixDQUViLElBQUksQ0FDRixJQUFBLENBQU9iLENBQVAsQ0FBV2EsQ0FB
WCxDQUFlYixDQUFBLEVBQWYsQ0FDRXkrQixDQUFBLENBQU96K0IsQ0FBUCxDQUFBLENBQVltb0Ms
Q0FBQSxDQUFTbm9DLENBQVQsQ0FBQSxDQUFZVixDQUFaLENBR2QsT0FBT29wQyxFQUFBLENBQVFq
SyxDQUFSLENBTEwsQ0FNRixNQUFPemEsQ0FBUCxDQUFZLENBQ1oxTSxDQUFBLENBQWtCMHdCLEVB
QUFDLE9BQUEsQ0FBMEJ2TyxDQUExQjtBQUFnQzFWLENBQWhDLENBQWxCLENBRFksQ0FYOEIsQ0FB
ekMsQ0FlRixDQUVIdWtCLElBQUs3TyxDQUZGLENBR0hTLFlBQWFBLENBSFYsQ0FJSHlPLGdCQUFp
QkEsUUFBUSxDQUFDbCtCLENBQUQsQ0FBUXlkLENBQVIsQ0FBa0IsQ0FDekMsSUFBSTZULENBQ0os
T0FBT3R4QixFQUFBbStCLFlBQUEsQ0FBa0JWLENBQWxCLENBQTRCVyxRQUE2QixDQUFDckssQ0FB
RCxDQUFTc0ssQ0FBVCxDQUFvQixDQUNsRixJQUFJQyxFQUFZTixDQUFBLENBQVFqSyxDQUFSLENB
Q1pqL0IsRUFBQSxDQUFXMm9CLENBQVgsQ0FBSixFQUNFQSxDQUFBem9CLEtBQUEsQ0FBYyxJQUFk
LENBQW9Cc3BDLENBQXBCLENBQStCdkssQ0FBQSxHQUFXc0ssQ0FBWCxDQUF1Qi9NLENBQXZCLENB
QW1DZ04sQ0FBbEUsQ0FBNkV0K0IsQ0FBN0UsQ0FFRnN4QixFQUFBLENBQVlnTixDQUxzRSxDQUE3
RSxDQUZrQyxDQUp4QyxDQWZFLENBZnNDLENBM0M2QixDQTlIYyxJQUN4RlYsRUFBb0JwSyxDQUFB
cC9CLE9BRG9FLENBRXhGMHBDLEVBQWtCckssQ0FBQXIvQixPQUZzRSxDQUd4RjZvQyxFQUFxQixJ
QUFJL2lDLE1BQUosQ0FBV3M1QixDQUFBajJCLFFBQUEsQ0FBb0IsSUFBcEIsQ0FBMEJ1L0IsQ0FB
MUIsQ0FBWCxDQUE4QyxHQUE5QyxDQUhtRSxDQUl4RkksRUFBbUIsSUFBSWhqQyxNQUFKLENBQVd1
NUIsQ0FBQWwyQixRQUFBLENBQWtCLElBQWxCLENBQXdCdS9CLENBQXhCLENBQVgsQ0FBNEMsR0FB
NUMsQ0EwT3ZCOXZCLEVBQUF3bUIsWUFBQSxDQUEyQitLLFFBQVEsRUFBRyxDQUNwQyxNQUFPL0ss
RUFENkIsQ0FnQnRDeG1CLEVBQUF5bUIsVUFBQSxDQUF5QitLLFFBQVEsRUFBRyxDQUNsQyxNQUFP
L0ssRUFEMkIsQ0FJcEMsT0FBT3ptQixFQWxRcUYsQ0FBbEYsQ0F6Q2tCLENBK1NoQ0csUUFBU0Es
R0FBaUIsRUFBRyxDQUMzQixJQUFBc0osS0FBQSxDQUFZLENBQUMsWUFBRCxDQUFlLFNBQWYsQ0FB
MEIsSUFBMUIsQ0FBZ0MsS0FBaEMsQ0FDUCxRQUFRLENBQUN2SSxDQUFELENBQWVvQixDQUFmLENB
QTBCbEIsQ0FBMUIsQ0FBZ0NFLENBQWhDLENBQXFDLENBaUloRG13QixRQUFTQSxFQUFRLENBQUNy
akMsQ0FBRCxDQUFLbWtCLENBQUwsQ0FBWW1mLENBQVosQ0FBbUJDLENBQW5CLENBQWdDLENBQUEs
SUFDM0NDLEVBQStCLENBQS9CQSxDQUFZL25DLFNBQUF6QyxPQUQrQixDQUUzQ21qQixFQUFPcW5C
LENBQUEsQ0F6c1RSaG9DLEVBQUE1QixLQUFBLENBeXNUOEI2QixTQXpzVDlCLENBeXNUeUN5RSxD
QXpzVHpDLENBeXNUUSxDQUFzQyxFQUZGLENBRzNDdWpDLEVBQWN2dkIsQ0FBQXV2QixZQUg2QixD
QUkzQ0MsRUFBZ0J4dkIsQ0FBQXd2QixjQUoyQjtBQUszQ0MsRUFBWSxDQUwrQixDQU0zQ0MsRUFB
YWxuQyxDQUFBLENBQVU2bUMsQ0FBVixDQUFiSyxFQUF1QyxDQUFDTCxDQU5HLENBTzNDM0UsRUFB
VzNhLENBQUMyZixDQUFBLENBQVkxd0IsQ0FBWixDQUFrQkYsQ0FBbkJpUixPQUFBLEVBUGdDLENB
UTNDd1osRUFBVW1CLENBQUFuQixRQUVkNkYsRUFBQSxDQUFRNW1DLENBQUEsQ0FBVTRtQyxDQUFW
LENBQUEsQ0FBbUJBLENBQW5CLENBQTJCLENBRW5DN0YsRUFBQTNLLEtBQUEsQ0FBYSxJQUFiLENB
QW1CLElBQW5CLENBQTJCMFEsQ0FBRixDQUFvQixRQUFRLEVBQUcsQ0FDdER4akMsQ0FBQUcsTUFB
QSxDQUFTLElBQVQsQ0FBZWdjLENBQWYsQ0FEc0QsQ0FBL0IsQ0FBZW5jLENBQXhDLENBSUF5OUIs
RUFBQW9HLGFBQUEsQ0FBdUJKLENBQUEsQ0FBWUssUUFBYSxFQUFHLENBQ2pEbEYsQ0FBQW1GLE9B
QUEsQ0FBZ0JKLENBQUEsRUFBaEIsQ0FFWSxFQUFaLENBQUlMLENBQUosRUFBaUJLLENBQWpCLEVB
QThCTCxDQUE5QixHQUNFMUUsQ0FBQUMsUUFBQSxDQUFpQjhFLENBQWpCLENBRUEsQ0FEQUQsQ0FB
QSxDQUFjakcsQ0FBQW9HLGFBQWQsQ0FDQSxDQUFBLE9BQU9HLENBQUEsQ0FBVXZHLENBQUFvRyxh
QUFWLENBSFQsQ0FNS0QsRUFBTCxFQUFnQjl3QixDQUFBaE8sT0FBQSxFQVRpQyxDQUE1QixDQVdw
QnFmLENBWG9CLENBYXZCNmYsRUFBQSxDQUFVdkcsQ0FBQW9HLGFBQVYsQ0FBQSxDQUFrQ2pGLENB
RWxDLE9BQU9uQixFQS9Cd0MsQ0FoSWpELElBQUl1RyxFQUFZLEVBNktoQlgsRUFBQWhmLE9BQUEs
Q0FBa0I0ZixRQUFRLENBQUN4RyxDQUFELENBQVUsQ0FDbEMsTUFBSUEsRUFBSixFQUFlQSxDQUFB
b0csYUFBZixHQUF1Q0csRUFBdkMsRUFDRUEsQ0FBQSxDQUFVdkcsQ0FBQW9HLGFBQVYsQ0FBQXJI
LE9BQUEsQ0FBdUMsVUFBdkMsQ0FHTyxDQUZQdG9CLENBQUF3dkIsY0FBQSxDQUFzQmpHLENBQUFv
RyxhQUF0QixDQUVPLENBRFAsT0FBT0csQ0FBQSxDQUFVdkcsQ0FBQW9HLGFBQVYsQ0FDQSxDQUFB
LENBQUEsQ0FKVCxFQU1PLENBQUEsQ0FQMkIsQ0FVcEMsT0FBT1IsRUF4THlDLENBRHRDLENBRGUs
Q0F3TTdCeDRCLFFBQVNBLEdBQWUsRUFBRyxDQUN6QixJQUFBd1EsS0FBQSxDQUFZQyxRQUFRLEVB
QUcsQ0FDckIsTUFBTyxDQUNMZ0ssR0FBSSxPQURDLENBR0w0ZSxlQUFnQixDQUNkQyxZQUFhLEdB
REM7QUFFZEMsVUFBVyxHQUZHLENBR2RDLFNBQVUsQ0FDUixDQUNFQyxPQUFRLENBRFYsQ0FFRUMs
UUFBUyxDQUZYLENBR0VDLFFBQVMsQ0FIWCxDQUlFQyxPQUFRLEVBSlYsQ0FLRUMsT0FBUSxFQUxW
LENBTUVDLE9BQVEsR0FOVixDQU9FQyxPQUFRLEVBUFYsQ0FRRUMsTUFBTyxDQVJULENBU0VDLE9B
QVEsQ0FUVixDQURRLENBV04sQ0FDQVIsT0FBUSxDQURSLENBRUFDLFFBQVMsQ0FGVCxDQUdBQyxR
QUFTLENBSFQsQ0FJQUMsT0FBUSxRQUpSLENBS0FDLE9BQVEsRUFMUixDQU1BQyxPQUFRLFNBTlIs
Q0FPQUMsT0FBUSxHQVBSLENBUUFDLE1BQU8sQ0FSUCxDQVNBQyxPQUFRLENBVFIsQ0FYTSxDQUhJ
LENBMEJkQyxhQUFjLEdBMUJBLENBSFgsQ0FnQ0xDLGlCQUFrQixDQUNoQkMsTUFDSSx1RkFBQSxN
QUFBLENBQUEsR0FBQSxDQUZZLENBSWhCQyxXQUFhLGlEQUFBLE1BQUEsQ0FBQSxHQUFBLENBSkcs
Q0FLaEJDLElBQUssMERBQUEsTUFBQSxDQUFBLEdBQUEsQ0FMVztBQU1oQkMsU0FBVSw2QkFBQSxN
QUFBLENBQUEsR0FBQSxDQU5NLENBT2hCQyxNQUFPLENBQUMsSUFBRCxDQUFNLElBQU4sQ0FQUyxD
QVFoQkMsT0FBUSxvQkFSUSxDQVNoQixRQUFTLGVBVE8sQ0FVaEJDLFNBQVUsaUJBVk0sQ0FXaEJD
LFNBQVUsV0FYTSxDQVloQkMsV0FBWSxVQVpJLENBYWhCQyxVQUFXLFFBYkssQ0FjaEJDLFdBQVks
V0FkSSxDQWVoQkMsVUFBVyxRQWZLLENBZ0JoQkMsU0FBVSxDQUNSLGVBRFEsQ0FFUixhQUZRLENB
aEJNLENBb0JoQkMsS0FBTSxDQUNKLElBREksQ0FFSixJQUZJLENBcEJVLENBaENiLENBMERMQyxV
QUFXQSxRQUFRLENBQUNDLENBQUQsQ0FBTSxDQUN2QixNQUFZLEVBQVosR0FBSUEsQ0FBSixDQUNT
LEtBRFQsQ0FHTyxPQUpnQixDQTFEcEIsQ0FEYyxDQURFLENBaUYzQkMsUUFBU0EsR0FBVSxDQUFD
bCtCLENBQUQsQ0FBTyxDQUNwQm0rQixDQUFBQSxDQUFXbitCLENBQUFySyxNQUFBLENBQVcsR0FB
WCxDQUdmLEtBSEEsSUFDSXhELEVBQUlnc0MsQ0FBQWx0QyxPQUVSLENBQU9rQixDQUFBLEVBQVAs
Q0FBQSxDQUNFZ3NDLENBQUEsQ0FBU2hzQyxDQUFULENBQUEsQ0FBYzRJLEVBQUEsQ0FBaUJvakMs
Q0FBQSxDQUFTaHNDLENBQVQsQ0FBakIsQ0FHaEIsT0FBT2dzQyxFQUFBcmpDLEtBQUEsQ0FBYyxH
QUFkLENBUmlCLENBVzFCc2pDLFFBQVNBLEdBQWdCLENBQUNDLENBQUQsQ0FBY0MsQ0FBZCxDQUEy
QixDQUNsRCxJQUFJQyxFQUFZcEYsRUFBQSxDQUFXa0YsQ0FBWCxDQUVoQkMsRUFBQUUsV0FBQSxD
QUF5QkQsQ0FBQW5GLFNBQ3pCa0Y7Q0FBQUcsT0FBQSxDQUFxQkYsQ0FBQUcsU0FDckJKLEVBQUFL
LE9BQUEsQ0FBcUIvcUMsQ0FBQSxDQUFNMnFDLENBQUFLLEtBQU4sQ0FBckIsRUFBOENDLEVBQUEs
Q0FBY04sQ0FBQW5GLFNBQWQsQ0FBOUMsRUFBbUYsSUFMakMsQ0FTcEQwRixRQUFTQSxHQUFXLENB
QUNDLENBQUQsQ0FBY1QsQ0FBZCxDQUEyQixDQUM3QyxJQUFJVSxFQUFzQyxHQUF0Q0EsR0FBWUQs
Q0FBQTNuQyxPQUFBLENBQW1CLENBQW5CLENBQ1o0bkMsRUFBSixHQUNFRCxDQURGLENBQ2dCLEdB
RGhCLENBQ3NCQSxDQUR0QixDQUdBLEtBQUkvbkMsRUFBUW1pQyxFQUFBLENBQVc0RixDQUFYLENB
Q1pULEVBQUFXLE9BQUEsQ0FBcUIza0Msa0JBQUEsQ0FBbUIwa0MsQ0FBQSxFQUF5QyxHQUF6QyxH
QUFZaG9DLENBQUFrb0MsU0FBQTluQyxPQUFBLENBQXNCLENBQXRCLENBQVosQ0FDcENKLENBQUFr
b0MsU0FBQXZZLFVBQUEsQ0FBeUIsQ0FBekIsQ0FEb0MsQ0FDTjN2QixDQUFBa29DLFNBRGIsQ0FF
ckJaLEVBQUFhLFNBQUEsQ0FBdUI1a0MsRUFBQSxDQUFjdkQsQ0FBQW9vQyxPQUFkLENBQ3ZCZCxF
QUFBZSxPQUFBLENBQXFCL2tDLGtCQUFBLENBQW1CdEQsQ0FBQXVoQixLQUFuQixDQUdqQitsQixF
QUFBVyxPQUFKLEVBQTBELEdBQTFELEVBQTBCWCxDQUFBVyxPQUFBN25DLE9BQUEsQ0FBMEIsQ0FB
MUIsQ0FBMUIsR0FDRWtuQyxDQUFBVyxPQURGLENBQ3VCLEdBRHZCLENBQzZCWCxDQUFBVyxPQUQ3
QixDQVo2QyxDQXlCL0NLLFFBQVNBLEdBQVUsQ0FBQ0MsQ0FBRCxDQUFRQyxDQUFSLENBQWUsQ0FD
aEMsR0FBNkIsQ0FBN0IsR0FBSUEsQ0FBQXRwQyxRQUFBLENBQWNxcEMsQ0FBZCxDQUFKLENBQ0Us
TUFBT0MsRUFBQWprQixPQUFBLENBQWFna0IsQ0FBQXR1QyxPQUFiLENBRnVCLENBT2xDcXFCLFFB
QVNBLEdBQVMsQ0FBQ25CLENBQUQsQ0FBTSxDQUN0QixJQUFJbGtCLEVBQVFra0IsQ0FBQWprQixR
QUFBLENBQVksR0FBWixDQUNaLE9BQWlCLEVBQVYsRUFBQUQsQ0FBQSxDQUFja2tCLENBQWQsQ0FB
b0JBLENBQUFvQixPQUFBLENBQVcsQ0FBWCxDQUFjdGxCLENBQWQsQ0FGTCxDQUt4QndwQyxRQUFT
QSxHQUFhLENBQUN0bEIsQ0FBRCxDQUFNLENBQzFCLE1BQU9BLEVBQUEvZixRQUFBLENBQVksVUFB
WjtBQUF3QixJQUF4QixDQURtQixDQUs1QnNsQyxRQUFTQSxHQUFTLENBQUN2bEIsQ0FBRCxDQUFN
LENBQ3RCLE1BQU9BLEVBQUFvQixPQUFBLENBQVcsQ0FBWCxDQUFjRCxFQUFBLENBQVVuQixDQUFW
LENBQUF3bEIsWUFBQSxDQUEyQixHQUEzQixDQUFkLENBQWdELENBQWhELENBRGUsQ0FrQnhCQyxR
QUFTQSxHQUFnQixDQUFDQyxDQUFELENBQVVDLENBQVYsQ0FBc0IsQ0FDN0MsSUFBQUMsUUFBQSxD
QUFlLENBQUEsQ0FDZkQsRUFBQSxDQUFhQSxDQUFiLEVBQTJCLEVBQzNCLEtBQUlFLEVBQWdCTixF
QUFBLENBQVVHLENBQVYsQ0FDcEJ6QixHQUFBLENBQWlCeUIsQ0FBakIsQ0FBMEIsSUFBMUIsQ0FR
QSxLQUFBSSxRQUFBLENBQWVDLFFBQVEsQ0FBQy9sQixDQUFELENBQU0sQ0FDM0IsSUFBSWdtQixF
QUFVYixFQUFBLENBQVdVLENBQVgsQ0FBMEI3bEIsQ0FBMUIsQ0FDZCxJQUFLLENBQUE5b0IsQ0FB
QSxDQUFTOHVDLENBQVQsQ0FBTCxDQUNFLEtBQU1DLEdBQUEsQ0FBZ0IsVUFBaEIsQ0FBNkVqbUIs
Q0FBN0UsQ0FDRjZsQixDQURFLENBQU4sQ0FJRmxCLEVBQUEsQ0FBWXFCLENBQVosQ0FBcUIsSUFB
ckIsQ0FFSyxLQUFBbEIsT0FBTCxHQUNFLElBQUFBLE9BREYsQ0FDZ0IsR0FEaEIsQ0FJQSxLQUFB
b0IsVUFBQSxFQWIyQixDQW9CN0IsS0FBQUEsVUFBQSxDQUFpQkMsUUFBUSxFQUFHLENBQUEsSUFD
dEJsQixFQUFTMWtDLEVBQUEsQ0FBVyxJQUFBeWtDLFNBQVgsQ0FEYSxDQUV0QjVtQixFQUFPLElB
QUE4bUIsT0FBQSxDQUFjLEdBQWQsQ0FBb0J0a0MsRUFBQSxDQUFpQixJQUFBc2tDLE9BQWpCLENB
QXBCLENBQW9ELEVBRS9ELEtBQUFrQixNQUFBLENBQWFyQyxFQUFBLENBQVcsSUFBQWUsT0FBWCxD
QUFiLEVBQXdDRyxDQUFBLENBQVMsR0FBVCxDQUFlQSxDQUFmLENBQXdCLEVBQWhFLEVBQXNFN21C
LENBQ3RFLEtBQUFpb0IsU0FBQSxDQUFnQlIsQ0FBaEIsQ0FBZ0MsSUFBQU8sTUFBQWhsQixPQUFB
LENBQWtCLENBQWxCLENBTE4sQ0FRNUIsS0FBQWtsQixlQUFBLENBQXNCQyxRQUFRLENBQUN2bUIs
Q0FBRCxDQUFNd21CLENBQU4sQ0FBZSxDQUMzQyxHQUFJQSxDQUFKLEVBQThCLEdBQTlCLEdBQWVB
LENBQUEsQ0FBUSxDQUFSLENBQWYsQ0FJRSxNQURBLEtBQUFwb0IsS0FBQSxDQUFVb29CLENBQUFs
dEMsTUFBQSxDQUFjLENBQWQsQ0FBVixDQUNPO0FBQUEsQ0FBQSxDQUxrQyxLQU92Q210QyxDQVB1
QyxDQU8vQkMsQ0FHWixFQUFLRCxDQUFMLENBQWN0QixFQUFBLENBQVdPLENBQVgsQ0FBb0IxbEIs
Q0FBcEIsQ0FBZCxJQUE0Q3ZwQixDQUE1QyxFQUNFaXdDLENBRUUsQ0FGV0QsQ0FFWCxDQUFBRSxD
QUFBLENBREYsQ0FBS0YsQ0FBTCxDQUFjdEIsRUFBQSxDQUFXUSxDQUFYLENBQXVCYyxDQUF2QixD
QUFkLElBQWtEaHdDLENBQWxELENBQ2lCb3ZDLENBRGpCLEVBQ2tDVixFQUFBLENBQVcsR0FBWCxD
QUFnQnNCLENBQWhCLENBRGxDLEVBQzZEQSxDQUQ3RCxFQUdpQmYsQ0FIakIsQ0FHMkJnQixDQUw3
QixFQU9PLENBQUtELENBQUwsQ0FBY3RCLEVBQUEsQ0FBV1UsQ0FBWCxDQUEwQjdsQixDQUExQixD
QUFkLElBQWtEdnBCLENBQWxELENBQ0xrd0MsQ0FESyxDQUNVZCxDQURWLENBQzBCWSxDQUQxQixD
QUVJWixDQUZKLEVBRXFCN2xCLENBRnJCLENBRTJCLEdBRjNCLEdBR0wybUIsQ0FISyxDQUdVZCxD
QUhWLENBS0hjLEVBQUosRUFDRSxJQUFBYixRQUFBLENBQWFhLENBQWIsQ0FFRixPQUFPLENBQUVB
LENBQUFBLENBekJrQyxDQXhDQSxDQStFL0NDLFFBQVNBLEdBQW1CLENBQUNsQixDQUFELENBQVVt
QixDQUFWLENBQXNCLENBQ2hELElBQUloQixFQUFnQk4sRUFBQSxDQUFVRyxDQUFWLENBRXBCekIs
R0FBQSxDQUFpQnlCLENBQWpCLENBQTBCLElBQTFCLENBUUEsS0FBQUksUUFBQSxDQUFlQyxRQUFR
LENBQUMvbEIsQ0FBRCxDQUFNLENBQzNCLElBQUk4bUIsRUFBaUIzQixFQUFBLENBQVdPLENBQVgs
Q0FBb0IxbEIsQ0FBcEIsQ0FBakI4bUIsRUFBNkMzQixFQUFBLENBQVdVLENBQVgsQ0FBMEI3bEIs
Q0FBMUIsQ0FBakQsQ0FDSSttQixDQUVDeHNDLEVBQUEsQ0FBWXVzQyxDQUFaLENBQUwsRUFBaUUs
R0FBakUsR0FBb0NBLENBQUE3cEMsT0FBQSxDQUFzQixDQUF0QixDQUFwQyxDQWNNLElBQUEyb0Ms
UUFBSixDQUNFbUIsQ0FERixDQUNtQkQsQ0FEbkIsRUFHRUMsQ0FDQSxDQURpQixFQUNqQixDQUFJ
eHNDLENBQUEsQ0FBWXVzQyxDQUFaLENBQUosR0FDRXBCLENBQ0EsQ0FEVTFsQixDQUNWLENBQUEs
SUFBQS9mLFFBQUEsRUFGRixDQUpGLENBZEYsRUFJRThtQyxDQUNBLENBRGlCNUIsRUFBQSxDQUFX
MEIsQ0FBWCxDQUF1QkMsQ0FBdkIsQ0FDakIsQ0FBSXZzQyxDQUFBLENBQVl3c0MsQ0FBWixDQUFK
LEdBRUVBLENBRkYsQ0FFbUJELENBRm5CLENBTEYsQ0F5QkFuQyxHQUFBLENBQVlvQyxDQUFaLENB
QTRCLElBQTVCLENBRXFDakMsRUFBQUEsQ0FBQUEsSUFBQUEsT0FBNkJZLEtBQUFBLEVBQUFBLENB
QUFBLENBb0I1RHNCLEVBQXFCLGlCQUtDLEVBQTFCLEdBQUlobkIsQ0FBQWprQixRQUFBLENBQVlr
ckMsQ0FBWixDQUFKLEdBQ0VqbkIsQ0FERixDQUNRQSxDQUFBL2YsUUFBQSxDQUFZZ25DLENBQVos
Q0FBa0IsRUFBbEIsQ0FEUixDQUtJRCxFQUFBdHpCLEtBQUEsQ0FBd0JzTSxDQUF4QixDQUFKLEdB
S0EsQ0FMQSxDQUtPLENBRFBrbkIsQ0FDTyxDQURpQkYsQ0FBQXR6QixLQUFBLENBQXdCN04sQ0FB
eEIsQ0FDakIsRUFBd0JxaEMsQ0FBQSxDQUFzQixDQUF0QixDQUF4QixDQUFtRHJoQyxDQUwxRCxD
QTlCRixLQUFBaS9CLE9BQUEsQ0FBYyxDQUVkLEtBQUFvQixVQUFBLEVBakMyQixDQTBFN0IsS0FB
QUEsVUFBQTtBQUFpQkMsUUFBUSxFQUFHLENBQUEsSUFDdEJsQixFQUFTMWtDLEVBQUEsQ0FBVyxJ
QUFBeWtDLFNBQVgsQ0FEYSxDQUV0QjVtQixFQUFPLElBQUE4bUIsT0FBQSxDQUFjLEdBQWQsQ0FB
b0J0a0MsRUFBQSxDQUFpQixJQUFBc2tDLE9BQWpCLENBQXBCLENBQW9ELEVBRS9ELEtBQUFrQixN
QUFBLENBQWFyQyxFQUFBLENBQVcsSUFBQWUsT0FBWCxDQUFiLEVBQXdDRyxDQUFBLENBQVMsR0FB
VCxDQUFlQSxDQUFmLENBQXdCLEVBQWhFLEVBQXNFN21CLENBQ3RFLEtBQUFpb0IsU0FBQSxDQUFn
QlgsQ0FBaEIsRUFBMkIsSUFBQVUsTUFBQSxDQUFhUyxDQUFiLENBQTBCLElBQUFULE1BQTFCLENB
QXVDLEVBQWxFLENBTDBCLENBUTVCLEtBQUFFLGVBQUEsQ0FBc0JDLFFBQVEsQ0FBQ3ZtQixDQUFE
LENBQU13bUIsQ0FBTixDQUFlLENBQzNDLE1BQUlybEIsR0FBQSxDQUFVdWtCLENBQVYsQ0FBSixF
QUEwQnZrQixFQUFBLENBQVVuQixDQUFWLENBQTFCLEVBQ0UsSUFBQThsQixRQUFBLENBQWE5bEIs
Q0FBYixDQUNPLENBQUEsQ0FBQSxDQUZULEVBSU8sQ0FBQSxDQUxvQyxDQTdGRyxDQWdIbERtbkIs
UUFBU0EsR0FBMEIsQ0FBQ3pCLENBQUQsQ0FBVW1CLENBQVYsQ0FBc0IsQ0FDdkQsSUFBQWpCLFFB
QUEsQ0FBZSxDQUFBLENBQ2ZnQixHQUFBM29DLE1BQUEsQ0FBMEIsSUFBMUIsQ0FBZ0MxRSxTQUFo
QyxDQUVBLEtBQUlzc0MsRUFBZ0JOLEVBQUEsQ0FBVUcsQ0FBVixDQUVwQixLQUFBWSxlQUFBLENB
QXNCQyxRQUFRLENBQUN2bUIsQ0FBRCxDQUFNd21CLENBQU4sQ0FBZSxDQUMzQyxHQUFJQSxDQUFK
LEVBQThCLEdBQTlCLEdBQWVBLENBQUEsQ0FBUSxDQUFSLENBQWYsQ0FJRSxNQURBLEtBQUFwb0Is
S0FBQSxDQUFVb29CLENBQUFsdEMsTUFBQSxDQUFjLENBQWQsQ0FBVixDQUNPLENBQUEsQ0FBQSxD
QUdULEtBQUlxdEMsQ0FBSixDQUNJRixDQUVBZixFQUFKLEVBQWV2a0IsRUFBQSxDQUFVbkIsQ0FB
VixDQUFmLENBQ0UybUIsQ0FERixDQUNpQjNtQixDQURqQixDQUVPLENBQUt5bUIsQ0FBTCxDQUFj
dEIsRUFBQSxDQUFXVSxDQUFYLENBQTBCN2xCLENBQTFCLENBQWQsRUFDTDJtQixDQURLLENBQ1Vq
QixDQURWLENBQ29CbUIsQ0FEcEIsQ0FDaUNKLENBRGpDLENBRUlaLENBRkosR0FFc0I3bEIsQ0FG
dEIsQ0FFNEIsR0FGNUIsR0FHTDJtQixDQUhLLENBR1VkLENBSFYsQ0FLSGMsRUFBSixFQUNFLElB
QUFiLFFBQUEsQ0FBYWEsQ0FBYixDQUVGLE9BQU8sQ0FBRUEsQ0FBQUEsQ0FyQmtDLENBd0I3QyxL
QUFBVCxVQUFBLENBQWlCQyxRQUFRLEVBQUcsQ0FBQSxJQUN0QmxCO0FBQVMxa0MsRUFBQSxDQUFX
LElBQUF5a0MsU0FBWCxDQURhLENBRXRCNW1CLEVBQU8sSUFBQThtQixPQUFBLENBQWMsR0FBZCxD
QUFvQnRrQyxFQUFBLENBQWlCLElBQUFza0MsT0FBakIsQ0FBcEIsQ0FBb0QsRUFFL0QsS0FBQWtC
LE1BQUEsQ0FBYXJDLEVBQUEsQ0FBVyxJQUFBZSxPQUFYLENBQWIsRUFBd0NHLENBQUEsQ0FBUyxH
QUFULENBQWVBLENBQWYsQ0FBd0IsRUFBaEUsRUFBc0U3bUIsQ0FFdEUsS0FBQWlvQixTQUFBLENB
QWdCWCxDQUFoQixDQUEwQm1CLENBQTFCLENBQXVDLElBQUFULE1BTmIsQ0E5QjJCLENBOFd6RGdC
LFFBQVNBLEdBQWMsQ0FBQ0MsQ0FBRCxDQUFXLENBQ2hDLE1BQU8sU0FBUSxFQUFHLENBQ2hCLE1B
QU8sS0FBQSxDQUFLQSxDQUFMLENBRFMsQ0FEYyxDQU9sQ0MsUUFBU0EsR0FBb0IsQ0FBQ0QsQ0FB
RCxDQUFXRSxDQUFYLENBQXVCLENBQ2xELE1BQU8sU0FBUSxDQUFDcHZDLENBQUQsQ0FBUSxDQUNy
QixHQUFJb0MsQ0FBQSxDQUFZcEMsQ0FBWixDQUFKLENBQ0UsTUFBTyxLQUFBLENBQUtrdkMsQ0FB
TCxDQUdULEtBQUEsQ0FBS0EsQ0FBTCxDQUFBLENBQWlCRSxDQUFBLENBQVdwdkMsQ0FBWCxDQUNq
QixLQUFBK3RDLFVBQUEsRUFFQSxPQUFPLEtBUmMsQ0FEMkIsQ0E4Q3BEMzFCLFFBQVNBLEdBQWlC
LEVBQUcsQ0FBQSxJQUN2QnMyQixFQUFhLEVBRFUsQ0FFdkJXLEVBQVksQ0FDVmpoQixRQUFTLENB
QUEsQ0FEQyxDQUVWa2hCLFlBQWEsQ0FBQSxDQUZILENBR1ZDLGFBQWMsQ0FBQSxDQUhKLENBYWhC
LEtBQUFiLFdBQUEsQ0FBa0JjLFFBQVEsQ0FBQ25tQyxDQUFELENBQVMsQ0FDakMsTUFBSWhILEVB
QUEsQ0FBVWdILENBQVYsQ0FBSixFQUNFcWxDLENBQ08sQ0FETXJsQyxDQUNOLENBQUEsSUFGVCxF
QUlTcWxDLENBTHdCLENBNEJuQyxLQUFBVyxVQUFBLENBQWlCSSxRQUFRLENBQUNuakIsQ0FBRCxD
QUFPLENBQzlCLE1BQUkxcEIsR0FBQSxDQUFVMHBCLENBQVYsQ0FBSixFQUNFK2lCLENBQUFqaEIs
UUFDTyxDQURhOUIsQ0FDYixDQUFBLElBRlQsRUFHVzNyQixDQUFBLENBQVMyckIsQ0FBVCxDQUFK
LEVBRUQxcEIsRUFBQSxDQUFVMHBCLENBQUE4QixRQUFWLENBWUcsR0FYTGloQixDQUFBamhCLFFB
V0ssQ0FYZTlCLENBQUE4QixRQVdmO0FBUkh4ckIsRUFBQSxDQUFVMHBCLENBQUFnakIsWUFBVixD
QVFHLEdBUExELENBQUFDLFlBT0ssQ0FQbUJoakIsQ0FBQWdqQixZQU9uQixFQUpIMXNDLEVBQUEs
Q0FBVTBwQixDQUFBaWpCLGFBQVYsQ0FJRyxHQUhMRixDQUFBRSxhQUdLLENBSG9CampCLENBQUFp
akIsYUFHcEIsRUFBQSxJQWRGLEVBZ0JFRixDQXBCcUIsQ0ErRGhDLEtBQUFydUIsS0FBQSxDQUFZ
LENBQUMsWUFBRCxDQUFlLFVBQWYsQ0FBMkIsVUFBM0IsQ0FBdUMsY0FBdkMsQ0FBdUQsU0FBdkQs
Q0FDUixRQUFRLENBQUN2SSxDQUFELENBQWE5QixDQUFiLENBQXVCd0MsQ0FBdkIsQ0FBaUMwVyxD
QUFqQyxDQUErQ2hXLENBQS9DLENBQXdELENBeUJsRTYxQixRQUFTQSxFQUF5QixDQUFDN25CLENB
QUQsQ0FBTS9mLENBQU4sQ0FBZTJmLENBQWYsQ0FBc0IsQ0FDdEQsSUFBSWtvQixFQUFTeDNCLENB
QUEwUCxJQUFBLEVBQWIsQ0FDSStuQixFQUFXejNCLENBQUEwM0IsUUFDZixJQUFJLENBQ0ZsNUIs
Q0FBQWtSLElBQUEsQ0FBYUEsQ0FBYixDQUFrQi9mLENBQWxCLENBQTJCMmYsQ0FBM0IsQ0FLQSxD
QUFBdFAsQ0FBQTAzQixRQUFBLENBQW9CbDVCLENBQUE4USxNQUFBLEVBTmxCLENBT0YsTUFBT2hn
QixDQUFQLENBQVUsQ0FLVixLQUhBMFEsRUFBQTBQLElBQUEsQ0FBYzhuQixDQUFkLENBR01sb0Ms
Q0FGTjBRLENBQUEwM0IsUUFFTXBvQyxDQUZjbW9DLENBRWRub0MsQ0FBQUEsQ0FBTixDQUxVLENB
VjBDLENBOEl4RHFvQyxRQUFTQSxFQUFtQixDQUFDSCxDQUFELENBQVNDLENBQVQsQ0FBbUIsQ0FD
N0NuM0IsQ0FBQXMzQixXQUFBLENBQXNCLHdCQUF0QixDQUFnRDUzQixDQUFBNjNCLE9BQUEsRUFB
aEQsQ0FBb0VMLENBQXBFLENBQ0V4M0IsQ0FBQTAzQixRQURGLENBQ3FCRCxDQURyQixDQUQ2QyxD
QXZLbUIsSUFDOUR6M0IsQ0FEOEQsQ0FFOUQ4M0IsQ0FDQXZtQixFQUFBQSxDQUFXL1MsQ0FBQStT
LFNBQUEsRUFIbUQsS0FJOUR3bUIsRUFBYXY1QixDQUFBa1IsSUFBQSxFQUppRCxDQUs5RDBsQixD
QUVKLElBQUk4QixDQUFBamhCLFFBQUosQ0FBdUIsQ0FDckIsR0FBSzFFLENBQUFBLENBQUwsRUFB
aUIybEIsQ0FBQUMsWUFBakIsQ0FDRSxLQUFNeEIsR0FBQSxDQUFnQixRQUFoQixDQUFOLENBR0ZQ
LENBQUEsQ0FBcUIyQyxDQXJ1QmxCN2IsVUFBQSxDQUFjLENBQWQ7QUFxdUJrQjZiLENBcnVCRHRz
QyxRQUFBLENBQVksR0FBWixDQXF1QkNzc0MsQ0FydUJnQnRzQyxRQUFBLENBQVksSUFBWixDQUFq
QixDQUFxQyxDQUFyQyxDQUFqQixDQXF1QkgsRUFBb0M4bEIsQ0FBcEMsRUFBZ0QsR0FBaEQsQ0FD
QXVtQixFQUFBLENBQWU5MkIsQ0FBQXFPLFFBQUEsQ0FBbUI4bEIsRUFBbkIsQ0FBc0MwQixFQU5o
QyxDQUF2QixJQVFFekIsRUFDQSxDQURVdmtCLEVBQUEsQ0FBVWtuQixDQUFWLENBQ1YsQ0FBQUQs
Q0FBQSxDQUFleEIsRUFFakJ0MkIsRUFBQSxDQUFZLElBQUk4M0IsQ0FBSixDQUFpQjFDLENBQWpC
LENBQTBCLEdBQTFCLENBQWdDbUIsQ0FBaEMsQ0FDWnYyQixFQUFBZzJCLGVBQUEsQ0FBeUIrQixD
QUF6QixDQUFxQ0EsQ0FBckMsQ0FFQS8zQixFQUFBMDNCLFFBQUEsQ0FBb0JsNUIsQ0FBQThRLE1B
QUEsRUFFcEIsS0FBSTBvQixFQUFvQiwyQkFxQnhCdGdCLEVBQUF6akIsR0FBQSxDQUFnQixPQUFo
QixDQUF5QixRQUFRLENBQUMrVCxDQUFELENBQVEsQ0FJdkMsR0FBS2t2QixDQUFBRSxhQUFMLEVB
QStCYSxDQUFBandCLENBQUFpd0IsUUFBL0IsRUFBZ0RDLENBQUFsd0IsQ0FBQWt3QixRQUFoRCxF
QUFpRUMsQ0FBQW53QixDQUFBbXdCLFNBQWpFLEVBQWtHLENBQWxHLEVBQW1GbndCLENBQUFvd0Is
TUFBbkYsRUFBdUgsQ0FBdkgsRUFBdUdwd0IsQ0FBQXF3QixPQUF2RyxDQUFBLENBS0EsSUFIQSxJ
QUFJdHFCLEVBQU01ZSxDQUFBLENBQU82WSxDQUFBc3dCLE9BQVAsQ0FHVixDQUE2QixHQUE3QixH
QUFPbnRDLEVBQUEsQ0FBVTRpQixDQUFBLENBQUksQ0FBSixDQUFWLENBQVAsQ0FBQSxDQUVFLEdB
QUlBLENBQUEsQ0FBSSxDQUFKLENBQUosR0FBZTJKLENBQUEsQ0FBYSxDQUFiLENBQWYsRUFBbUMs
Q0FBQSxDQUFDM0osQ0FBRCxDQUFPQSxDQUFBeGtCLE9BQUEsRUFBUCxFQUFxQixDQUFyQixDQUFu
QyxDQUE0RCxNQUc5RCxLQUFJZ3ZDLEVBQVV4cUIsQ0FBQWxqQixLQUFBLENBQVMsTUFBVCxDQUFk
LENBR0lxckMsRUFBVW5vQixDQUFBampCLEtBQUEsQ0FBUyxNQUFULENBQVZvckMsRUFBOEJub0Is
Q0FBQWpqQixLQUFBLENBQVMsWUFBVCxDQUU5QnRDLEVBQUEsQ0FBUyt2QyxDQUFULENBQUosRUFB
Z0QsNEJBQWhELEdBQXlCQSxDQUFBeHVDLFNBQUEsRUFBekIsR0FHRXd1QyxDQUhGLENBR1k3SixF
QUFBLENBQVc2SixDQUFBOWQsUUFBWCxDQUFBbEssS0FIWixDQU9JeW5CLEVBQUE5ckMsS0FBQSxD
QUF1QnFzQyxDQUF2QixDQUFKO0FBRUlBLENBQUFBLENBRkosRUFFZ0J4cUIsQ0FBQWpqQixLQUFB
LENBQVMsUUFBVCxDQUZoQixFQUV1Q2tkLENBQUFDLG1CQUFBLEVBRnZDLEVBR00sQ0FBQWpJLENB
QUFnMkIsZUFBQSxDQUF5QnVDLENBQXpCLENBQWtDckMsQ0FBbEMsQ0FITixHQU9JbHVCLENBQUF3
d0IsZUFBQSxFQUVBLENBQUl4NEIsQ0FBQTYzQixPQUFBLEVBQUosRUFBMEJyNUIsQ0FBQWtSLElB
QUEsRUFBMUIsR0FDRXBQLENBQUFoTyxPQUFBLEVBRUEsQ0FBQW9QLENBQUFoUCxRQUFBLENBQWdC
LDBCQUFoQixDQUFBLENBQThDLENBQUEsQ0FIaEQsQ0FUSixDQXRCQSxDQUp1QyxDQUF6QyxDQThD
SXNpQyxHQUFBLENBQWNoMUIsQ0FBQTYzQixPQUFBLEVBQWQsQ0FBSixFQUF5QzdDLEVBQUEsQ0FB
YytDLENBQWQsQ0FBekMsRUFDRXY1QixDQUFBa1IsSUFBQSxDQUFhMVAsQ0FBQTYzQixPQUFBLEVB
QWIsQ0FBaUMsQ0FBQSxDQUFqQyxDQUdGLEtBQUlZLEVBQWUsQ0FBQSxDQUduQmo2QixFQUFBeVMs
WUFBQSxDQUFxQixRQUFRLENBQUN5bkIsQ0FBRCxDQUFTQyxDQUFULENBQW1CLENBQzlDcjRCLENB
QUEvVixXQUFBLENBQXNCLFFBQVEsRUFBRyxDQUMvQixJQUFJaXRDLEVBQVN4M0IsQ0FBQTYzQixP
QUFBLEVBQWIsQ0FDSUosRUFBV3ozQixDQUFBMDNCLFFBRGYsQ0FFSXZ2QixDQUVKbkksRUFBQXcx
QixRQUFBLENBQWtCa0QsQ0FBbEIsQ0FDQTE0QixFQUFBMDNCLFFBQUEsQ0FBb0JpQixDQUVwQnh3
QixFQUFBLENBQW1CN0gsQ0FBQXMzQixXQUFBLENBQXNCLHNCQUF0QixDQUE4Q2MsQ0FBOUMsQ0FB
c0RsQixDQUF0RCxDQUNmbUIsQ0FEZSxDQUNMbEIsQ0FESyxDQUFBdHZCLGlCQUtmbkksRUFBQTYz
QixPQUFBLEVBQUosR0FBMkJhLENBQTNCLEdBRUl2d0IsQ0FBSixFQUNFbkksQ0FBQXcxQixRQUFB
LENBQWtCZ0MsQ0FBbEIsQ0FFQSxDQURBeDNCLENBQUEwM0IsUUFDQSxDQURvQkQsQ0FDcEIsQ0FB
QUYsQ0FBQSxDQUEwQkMsQ0FBMUIsQ0FBa0MsQ0FBQSxDQUFsQyxDQUF5Q0MsQ0FBekMsQ0FIRixH
QUtFZ0IsQ0FDQSxDQURlLENBQUEsQ0FDZixDQUFBZCxDQUFBLENBQW9CSCxDQUFwQixDQUE0QkMs
Q0FBNUIsQ0FORixDQUZBLENBYitCLENBQWpDLENBd0JLbjNCLEVBQUE2ckIsUUFBTCxFQUF5Qjdy
QixDQUFBczRCLFFBQUEsRUF6QnFCLENBQWhELENBNkJBdDRCLEVBQUE5VixPQUFBLENBQWtCcXVD
LFFBQXVCLEVBQUcsQ0FDMUMsSUFBSXJCO0FBQVN4QyxFQUFBLENBQWN4MkIsQ0FBQWtSLElBQUEs
RUFBZCxDQUFiLENBQ0lncEIsRUFBUzFELEVBQUEsQ0FBY2gxQixDQUFBNjNCLE9BQUEsRUFBZCxD
QURiLENBRUlKLEVBQVdqNUIsQ0FBQThRLE1BQUEsRUFGZixDQUdJd3BCLEVBQWlCOTRCLENBQUEr
NEIsVUFIckIsQ0FJSUMsRUFBb0J4QixDQUFwQndCLEdBQStCTixDQUEvQk0sRUFDRGg1QixDQUFB
czFCLFFBREMwRCxFQUNvQmg0QixDQUFBcU8sUUFEcEIycEIsRUFDd0N2QixDQUR4Q3VCLEdBQ3FE
aDVCLENBQUEwM0IsUUFFekQsSUFBSWUsQ0FBSixFQUFvQk8sQ0FBcEIsQ0FDRVAsQ0FFQSxDQUZl
LENBQUEsQ0FFZixDQUFBbjRCLENBQUEvVixXQUFBLENBQXNCLFFBQVEsRUFBRyxDQUMvQixJQUFJ
bXVDLEVBQVMxNEIsQ0FBQTYzQixPQUFBLEVBQWIsQ0FDSTF2QixFQUFtQjdILENBQUFzM0IsV0FB
QSxDQUFzQixzQkFBdEIsQ0FBOENjLENBQTlDLENBQXNEbEIsQ0FBdEQsQ0FDbkJ4M0IsQ0FBQTAz
QixRQURtQixDQUNBRCxDQURBLENBQUF0dkIsaUJBS25CbkksRUFBQTYzQixPQUFBLEVBQUosR0FB
MkJhLENBQTNCLEdBRUl2d0IsQ0FBSixFQUNFbkksQ0FBQXcxQixRQUFBLENBQWtCZ0MsQ0FBbEIs
Q0FDQSxDQUFBeDNCLENBQUEwM0IsUUFBQSxDQUFvQkQsQ0FGdEIsR0FJTXVCLENBSUosRUFIRXpC
LENBQUEsQ0FBMEJtQixDQUExQixDQUFrQ0ksQ0FBbEMsQ0FDMEJyQixDQUFBLEdBQWF6M0IsQ0FB
QTAzQixRQUFiLENBQWlDLElBQWpDLENBQXdDMTNCLENBQUEwM0IsUUFEbEUsQ0FHRixDQUFBQyxD
QUFBLENBQW9CSCxDQUFwQixDQUE0QkMsQ0FBNUIsQ0FSRixDQUZBLENBUCtCLENBQWpDLENBc0JG
ejNCLEVBQUErNEIsVUFBQSxDQUFzQixDQUFBLENBakNvQixDQUE1QyxDQXVDQSxPQUFPLzRCLEVB
cksyRCxDQUR4RCxDQTFHZSxDQXFVN0JHLFFBQVNBLEdBQVksRUFBRyxDQUFBLElBQ2xCODRCLEVB
QVEsQ0FBQSxDQURVLENBRWxCMXJDLEVBQU8sSUFTWCxLQUFBMnJDLGFBQUEsQ0FBb0JDLFFBQVEs
Q0FBQ0MsQ0FBRCxDQUFPLENBQ2pDLE1BQUlsdkMsRUFBQSxDQUFVa3ZDLENBQVYsQ0FBSixFQUNF
SCxDQUNLLENBREdHLENBQ0gsQ0FBQSxJQUZQLEVBSVNILENBTHdCLENBU25DLEtBQUFwd0IsS0FB
QSxDQUFZLENBQUMsU0FBRCxDQUFZLFFBQVEsQ0FBQ25ILENBQUQsQ0FBVSxDQXdEeEMyM0IsUUFB
U0EsRUFBVyxDQUFDcGtDLENBQUQsQ0FBTSxDQUNwQkEsQ0FBSixXQUFtQnFrQyxNQUFuQjtDQUNN
cmtDLENBQUFrVyxNQUFKLENBQ0VsVyxDQURGLENBQ1NBLENBQUFpVyxRQUFELEVBQW9ELEVBQXBE
LEdBQWdCalcsQ0FBQWtXLE1BQUExZixRQUFBLENBQWtCd0osQ0FBQWlXLFFBQWxCLENBQWhCLENB
Q0EsU0FEQSxDQUNZalcsQ0FBQWlXLFFBRFosQ0FDMEIsSUFEMUIsQ0FDaUNqVyxDQUFBa1csTUFE
akMsQ0FFQWxXLENBQUFrVyxNQUhSLENBSVdsVyxDQUFBc2tDLFVBSlgsR0FLRXRrQyxDQUxGLENB
S1FBLENBQUFpVyxRQUxSLENBS3NCLElBTHRCLENBSzZCalcsQ0FBQXNrQyxVQUw3QixDQUs2QyxH
QUw3QyxDQUttRHRrQyxDQUFBc3pCLEtBTG5ELENBREYsQ0FTQSxPQUFPdHpCLEVBVmlCLENBYTFC
dWtDLFFBQVNBLEVBQVUsQ0FBQzEwQixDQUFELENBQU8sQ0FBQSxJQUNwQjIwQixFQUFVLzNCLENB
QUErM0IsUUFBVkEsRUFBNkIsRUFEVCxDQUVwQkMsRUFBUUQsQ0FBQSxDQUFRMzBCLENBQVIsQ0FB
UjQwQixFQUF5QkQsQ0FBQUUsSUFBekJELEVBQXdDaHdDLENBQ3hDa3dDLEVBQUFBLENBQVcsQ0FB
QSxDQUlmLElBQUksQ0FDRkEsQ0FBQSxDQUFXLENBQUVqc0MsQ0FBQStyQyxDQUFBL3JDLE1BRFgs
Q0FFRixNQUFPMkIsQ0FBUCxDQUFVLEVBRVosTUFBSXNxQyxFQUFKLENBQ1MsUUFBUSxFQUFHLENB
Q2hCLElBQUlqd0IsRUFBTyxFQUNYN2lCLEVBQUEsQ0FBUW1DLFNBQVIsQ0FBbUIsUUFBUSxDQUFD
Z00sQ0FBRCxDQUFNLENBQy9CMFUsQ0FBQXhkLEtBQUEsQ0FBVWt0QyxDQUFBLENBQVlwa0MsQ0FB
WixDQUFWLENBRCtCLENBQWpDLENBR0EsT0FBT3lrQyxFQUFBL3JDLE1BQUEsQ0FBWThyQyxDQUFa
LENBQXFCOXZCLENBQXJCLENBTFMsQ0FEcEIsQ0FZTyxRQUFRLENBQUNrd0IsQ0FBRCxDQUFPQyxD
QUFQLENBQWEsQ0FDMUJKLENBQUEsQ0FBTUcsQ0FBTixDQUFvQixJQUFSLEVBQUFDLENBQUEsQ0FB
ZSxFQUFmLENBQW9CQSxDQUFoQyxDQUQwQixDQXZCSixDQXBFMUIsTUFBTyxDQVFMSCxJQUFLSCxD
QUFBLENBQVcsS0FBWCxDQVJBLENBaUJMam1CLEtBQU1pbUIsQ0FBQSxDQUFXLE1BQVgsQ0FqQkQs
Q0EwQkxPLEtBQU1QLENBQUEsQ0FBVyxNQUFYLENBMUJELENBbUNMdnFCLE1BQU91cUIsQ0FBQSxD
QUFXLE9BQVgsQ0FuQ0YsQ0E0Q0xQLE1BQVEsUUFBUSxFQUFHLENBQ2pCLElBQUl6ckMsRUFBS2dz
QyxDQUFBLENBQVcsT0FBWCxDQUVULE9BQU8sU0FBUSxFQUFHLENBQ1pQLENBQUosRUFDRXpyQyxD
QUFBRyxNQUFBLENBQVNKLENBQVQsQ0FBZXRFLFNBQWYsQ0FGYyxDQUhELENBQVgsRUE1Q0gsQ0FE
aUMsQ0FBOUIsQ0FwQlUsQ0ExN1hlO0FBc2xZdkMrd0MsUUFBU0EsR0FBb0IsQ0FBQzdvQyxDQUFE
LENBQU84b0MsQ0FBUCxDQUF1QixDQUNsRCxHQUFhLGtCQUFiLEdBQUk5b0MsQ0FBSixFQUE0Qyxr
QkFBNUMsR0FBbUNBLENBQW5DLEVBQ2dCLGtCQURoQixHQUNPQSxDQURQLEVBQytDLGtCQUQvQyxH
QUNzQ0EsQ0FEdEMsRUFFZ0IsV0FGaEIsR0FFT0EsQ0FGUCxDQUdFLEtBQU0rb0MsR0FBQSxDQUFh
LFNBQWIsQ0FFbUJELENBRm5CLENBQU4sQ0FJRixNQUFPOW9DLEVBUjJDLENBV3BEZ3BDLFFBQVNB
LEdBQWdCLENBQUM3ekMsQ0FBRCxDQUFNMnpDLENBQU4sQ0FBc0IsQ0FFN0MsR0FBSTN6QyxDQUFK
LENBQVMsQ0FDUCxHQUFJQSxDQUFBOEYsWUFBSixHQUF3QjlGLENBQXhCLENBQ0UsS0FBTTR6QyxH
QUFBLENBQWEsUUFBYixDQUVGRCxDQUZFLENBQU4sQ0FHSyxHQUNIM3pDLENBQUFMLE9BREcsR0FD
WUssQ0FEWixDQUVMLEtBQU00ekMsR0FBQSxDQUFhLFlBQWIsQ0FFRkQsQ0FGRSxDQUFOLENBR0ss
R0FDSDN6QyxDQUFBOHpDLFNBREcsR0FDYzl6QyxDQUFBc0UsU0FEZCxFQUMrQnRFLENBQUF1RSxL
QUQvQixFQUMyQ3ZFLENBQUF3RSxLQUQzQyxFQUN1RHhFLENBQUF5RSxLQUR2RCxFQUVMLEtBQU1t
dkMsR0FBQSxDQUFhLFNBQWIsQ0FFRkQsQ0FGRSxDQUFOLENBR0ssR0FDSDN6QyxDQURHLEdBQ0tH
LE1BREwsQ0FFTCxLQUFNeXpDLEdBQUEsQ0FBYSxTQUFiLENBRUZELENBRkUsQ0FBTixDQWpCSyxD
QXNCVCxNQUFPM3pDLEVBeEJzQyxDQStCL0MrekMsUUFBU0EsR0FBa0IsQ0FBQy96QyxDQUFELENB
QU0yekMsQ0FBTixDQUFzQixDQUMvQyxHQUFJM3pDLENBQUosQ0FBUyxDQUNQLEdBQUlBLENBQUE4
RixZQUFKLEdBQXdCOUYsQ0FBeEIsQ0FDRSxLQUFNNHpDLEdBQUEsQ0FBYSxRQUFiLENBRUpELENB
RkksQ0FBTixDQUdLLEdBQUkzekMsQ0FBSixHQUFZZzBDLEVBQVosRUFBb0JoMEMsQ0FBcEIsR0FB
NEJpMEMsRUFBNUIsRUFBcUNqMEMsQ0FBckMsR0FBNkNrMEMsRUFBN0MsQ0FDTCxLQUFNTixHQUFB
LENBQWEsUUFBYixDQUVKRCxDQUZJLENBQU47QUFOSyxDQURzQyxDQXlnQmpEUSxRQUFTQSxHQUFT
LENBQUNuVCxDQUFELENBQUk0QixDQUFKLENBQU8sQ0FDdkIsTUFBb0IsV0FBYixHQUFBLE1BQU81
QixFQUFQLENBQTJCQSxDQUEzQixDQUErQjRCLENBRGYsQ0FJekJ3UixRQUFTQSxHQUFNLENBQUM5
MUIsQ0FBRCxDQUFJKzFCLENBQUosQ0FBTyxDQUNwQixNQUFpQixXQUFqQixHQUFJLE1BQU8vMUIs
RUFBWCxDQUFxQysxQixDQUFyQyxDQUNpQixXQUFqQixHQUFJLE1BQU9BLEVBQVgsQ0FBcUMvMUIs
Q0FBckMsQ0FDT0EsQ0FEUCxDQUNXKzFCLENBSFMsQ0FXdEJDLFFBQVNBLEVBQStCLENBQUNDLENB
QUQsQ0FBTTM3QixDQUFOLENBQWUsQ0FDckQsSUFBSTQ3QixDQUFKLENBQ0lDLENBQ0osUUFBUUYs
Q0FBQS8xQixLQUFSLEVBQ0EsS0FBS2syQixDQUFBQyxRQUFMLENBQ0VILENBQUEsQ0FBZSxDQUFB
LENBQ2ZoMEMsRUFBQSxDQUFRK3pDLENBQUFoTixLQUFSLENBQWtCLFFBQVEsQ0FBQ3FOLENBQUQs
Q0FBTyxDQUMvQk4sQ0FBQSxDQUFnQ00sQ0FBQXBVLFdBQWhDLENBQWlENW5CLENBQWpELENBQ0E0
N0IsRUFBQSxDQUFlQSxDQUFmLEVBQStCSSxDQUFBcFUsV0FBQXR2QixTQUZBLENBQWpDLENBSUFx
akMsRUFBQXJqQyxTQUFBLENBQWVzakMsQ0FDZixNQUNGLE1BQUtFLENBQUFHLFFBQUwsQ0FDRU4s
Q0FBQXJqQyxTQUFBLENBQWUsQ0FBQSxDQUNmcWpDLEVBQUFPLFFBQUEsQ0FBYyxFQUNkLE1BQ0Ys
TUFBS0osQ0FBQUssZ0JBQUwsQ0FDRVQsQ0FBQSxDQUFnQ0MsQ0FBQVMsU0FBaEMsQ0FBOENwOEIs
Q0FBOUMsQ0FDQTI3QixFQUFBcmpDLFNBQUEsQ0FBZXFqQyxDQUFBUyxTQUFBOWpDLFNBQ2ZxakMs
RUFBQU8sUUFBQSxDQUFjUCxDQUFBUyxTQUFBRixRQUNkLE1BQ0YsTUFBS0osQ0FBQU8saUJBQUws
Q0FDRVgsQ0FBQSxDQUFnQ0MsQ0FBQVcsS0FBaEMsQ0FBMEN0OEIsQ0FBMUMsQ0FDQTA3QixFQUFB
LENBQWdDQyxDQUFBWSxNQUFoQyxDQUEyQ3Y4QixDQUEzQyxDQUNBMjdCLEVBQUFyakMsU0FBQSxD
QUFlcWpDLENBQUFXLEtBQUFoa0MsU0FBZjtBQUFvQ3FqQyxDQUFBWSxNQUFBamtDLFNBQ3BDcWpD
LEVBQUFPLFFBQUEsQ0FBY1AsQ0FBQVcsS0FBQUosUUFBQWp1QyxPQUFBLENBQXdCMHRDLENBQUFZ
LE1BQUFMLFFBQXhCLENBQ2QsTUFDRixNQUFLSixDQUFBVSxrQkFBTCxDQUNFZCxDQUFBLENBQWdD
QyxDQUFBVyxLQUFoQyxDQUEwQ3Q4QixDQUExQyxDQUNBMDdCLEVBQUEsQ0FBZ0NDLENBQUFZLE1B
QWhDLENBQTJDdjhCLENBQTNDLENBQ0EyN0IsRUFBQXJqQyxTQUFBLENBQWVxakMsQ0FBQVcsS0FB
QWhrQyxTQUFmLEVBQW9DcWpDLENBQUFZLE1BQUFqa0MsU0FDcENxakMsRUFBQU8sUUFBQSxDQUFj
UCxDQUFBcmpDLFNBQUEsQ0FBZSxFQUFmLENBQW9CLENBQUNxakMsQ0FBRCxDQUNsQyxNQUNGLE1B
QUtHLENBQUFXLHNCQUFMLENBQ0VmLENBQUEsQ0FBZ0NDLENBQUEzdUMsS0FBaEMsQ0FBMENnVCxD
QUExQyxDQUNBMDdCLEVBQUEsQ0FBZ0NDLENBQUFlLFVBQWhDLENBQStDMThCLENBQS9DLENBQ0Ew
N0IsRUFBQSxDQUFnQ0MsQ0FBQWdCLFdBQWhDLENBQWdEMzhCLENBQWhELENBQ0EyN0IsRUFBQXJq
QyxTQUFBLENBQWVxakMsQ0FBQTN1QyxLQUFBc0wsU0FBZixFQUFvQ3FqQyxDQUFBZSxVQUFBcGtD
LFNBQXBDLEVBQThEcWpDLENBQUFnQixXQUFBcmtDLFNBQzlEcWpDLEVBQUFPLFFBQUEsQ0FBY1As
Q0FBQXJqQyxTQUFBLENBQWUsRUFBZixDQUFvQixDQUFDcWpDLENBQUQsQ0FDbEMsTUFDRixNQUFL
RyxDQUFBYyxXQUFMLENBQ0VqQixDQUFBcmpDLFNBQUEsQ0FBZSxDQUFBLENBQ2ZxakMsRUFBQU8s
UUFBQSxDQUFjLENBQUNQLENBQUQsQ0FDZCxNQUNGLE1BQUtHLENBQUFlLGlCQUFMLENBQ0VuQixD
QUFBLENBQWdDQyxDQUFBbUIsT0FBaEMsQ0FBNEM5OEIsQ0FBNUMsQ0FDSTI3QixFQUFBb0IsU0FB
SixFQUNFckIsQ0FBQSxDQUFnQ0MsQ0FBQTlELFNBQWhDLENBQThDNzNCLENBQTlDLENBRUYyN0I7
Q0FBQXJqQyxTQUFBLENBQWVxakMsQ0FBQW1CLE9BQUF4a0MsU0FBZixHQUF1QyxDQUFDcWpDLENB
QUFvQixTQUF4QyxFQUF3RHBCLENBQUE5RCxTQUFBdi9CLFNBQXhELENBQ0FxakMsRUFBQU8sUUFB
QSxDQUFjLENBQUNQLENBQUQsQ0FDZCxNQUNGLE1BQUtHLENBQUFrQixlQUFMLENBQ0VwQixDQUFB
LENBQWVELENBQUFsakMsT0FBQSxDQXhEVixDQXdEbUN1SCxDQXpEakMxUixDQXlEMENxdEMsQ0FB
QXNCLE9BQUFockMsS0F6RDFDM0QsQ0FDRDIyQixVQXdEUyxDQUFxRCxDQUFBLENBQ3BFNFcsRUFB
QSxDQUFjLEVBQ2RqMEMsRUFBQSxDQUFRK3pDLENBQUE1eEMsVUFBUixDQUF1QixRQUFRLENBQUNp
eUMsQ0FBRCxDQUFPLENBQ3BDTixDQUFBLENBQWdDTSxDQUFoQyxDQUFzQ2g4QixDQUF0QyxDQUNB
NDdCLEVBQUEsQ0FBZUEsQ0FBZixFQUErQkksQ0FBQTFqQyxTQUMxQjBqQyxFQUFBMWpDLFNBQUws
RUFDRXVqQyxDQUFBNXVDLEtBQUF3QixNQUFBLENBQXVCb3RDLENBQXZCLENBQW9DRyxDQUFBRSxR
QUFwQyxDQUprQyxDQUF0QyxDQU9BUCxFQUFBcmpDLFNBQUEsQ0FBZXNqQyxDQUNmRCxFQUFBTyxR
QUFBLENBQWNQLENBQUFsakMsT0FBQSxFQWxFUndzQixDQWtFa0NqbEIsQ0FuRWpDMVIsQ0FtRTBD
cXRDLENBQUFzQixPQUFBaHJDLEtBbkUxQzNELENBQ0QyMkIsVUFrRVEsQ0FBc0Q0VyxDQUF0RCxD
QUFvRSxDQUFDRixDQUFELENBQ2xGLE1BQ0YsTUFBS0csQ0FBQW9CLHFCQUFMLENBQ0V4QixDQUFB
LENBQWdDQyxDQUFBVyxLQUFoQyxDQUEwQ3Q4QixDQUExQyxDQUNBMDdCLEVBQUEsQ0FBZ0NDLENB
QUFZLE1BQWhDLENBQTJDdjhCLENBQTNDLENBQ0EyN0IsRUFBQXJqQyxTQUFBLENBQWVxakMsQ0FB
QVcsS0FBQWhrQyxTQUFmLEVBQW9DcWpDLENBQUFZLE1BQUFqa0MsU0FDcENxakMsRUFBQU8sUUFB
QSxDQUFjLENBQUNQLENBQUQsQ0FDZCxNQUNGLE1BQUtHLENBQUFxQixnQkFBTCxDQUNFdkIsQ0FB
QSxDQUFlLENBQUEsQ0FDZkMsRUFBQSxDQUFjLEVBQ2RqMEMsRUFBQSxDQUFRK3pDLENBQUF0MEIs
U0FBUixDQUFzQixRQUFRLENBQUMyMEIsQ0FBRCxDQUFPLENBQ25DTixDQUFBLENBQWdDTSxDQUFo
QyxDQUFzQ2g4QixDQUF0QyxDQUNBNDdCLEVBQUE7QUFBZUEsQ0FBZixFQUErQkksQ0FBQTFqQyxT
QUMxQjBqQyxFQUFBMWpDLFNBQUwsRUFDRXVqQyxDQUFBNXVDLEtBQUF3QixNQUFBLENBQXVCb3RD
LENBQXZCLENBQW9DRyxDQUFBRSxRQUFwQyxDQUppQyxDQUFyQyxDQU9BUCxFQUFBcmpDLFNBQUEs
Q0FBZXNqQyxDQUNmRCxFQUFBTyxRQUFBLENBQWNMLENBQ2QsTUFDRixNQUFLQyxDQUFBc0IsaUJB
QUwsQ0FDRXhCLENBQUEsQ0FBZSxDQUFBLENBQ2ZDLEVBQUEsQ0FBYyxFQUNkajBDLEVBQUEsQ0FB
USt6QyxDQUFBMEIsV0FBUixDQUF3QixRQUFRLENBQUN4RixDQUFELENBQVcsQ0FDekM2RCxDQUFB
LENBQWdDN0QsQ0FBQWx2QyxNQUFoQyxDQUFnRHFYLENBQWhELENBQ0E0N0IsRUFBQSxDQUFlQSxD
QUFmLEVBQStCL0QsQ0FBQWx2QyxNQUFBMlAsU0FDMUJ1L0IsRUFBQWx2QyxNQUFBMlAsU0FBTCxF
QUNFdWpDLENBQUE1dUMsS0FBQXdCLE1BQUEsQ0FBdUJvdEMsQ0FBdkIsQ0FBb0NoRSxDQUFBbHZD
LE1BQUF1ekMsUUFBcEMsQ0FKdUMsQ0FBM0MsQ0FPQVAsRUFBQXJqQyxTQUFBLENBQWVzakMsQ0FD
ZkQsRUFBQU8sUUFBQSxDQUFjTCxDQUNkLE1BQ0YsTUFBS0MsQ0FBQXdCLGVBQUwsQ0FDRTNCLENB
QUFyakMsU0FDQSxDQURlLENBQUEsQ0FDZixDQUFBcWpDLENBQUFPLFFBQUEsQ0FBYyxFQWhHaEIs
Q0FIcUQsQ0F3R3ZEcUIsUUFBU0EsR0FBUyxDQUFDNU8sQ0FBRCxDQUFPLENBQ3ZCLEdBQW1CLENB
QW5CLEVBQUlBLENBQUFybkMsT0FBSixDQUFBLENBQ0lrMkMsQ0FBQUEsQ0FBaUI3TyxDQUFBLENB
QUssQ0FBTCxDQUFBL0csV0FDckIsS0FBSXoxQixFQUFZcXJDLENBQUF0QixRQUNoQixPQUF5QixF
QUF6QixHQUFJL3BDLENBQUE3SyxPQUFKLENBQW1DNkssQ0FBbkMsQ0FDT0EsQ0FBQSxDQUFVLENB
QVYsQ0FBQSxHQUFpQnFyQyxDQUFqQixDQUFrQ3JyQyxDQUFsQyxDQUE4Q2xMLENBSnJELENBRHVC
LENBUXpCdzJDLFFBQVNBLEdBQVksQ0FBQzlCLENBQUQsQ0FBTSxDQUN6QixNQUFPQSxFQUFBLzFC
LEtBQVAsR0FBb0JrMkIsQ0FBQWMsV0FBcEIsRUFBc0NqQixDQUFBLzFCLEtBQXRDLEdBQW1EazJC
LENBQUFlLGlCQUQxQixDQUkzQmEsUUFBU0EsR0FBYSxDQUFDL0IsQ0FBRCxDQUFNLENBQzFCLEdB
QXdCLENBQXhCO0FBQUlBLENBQUFoTixLQUFBcm5DLE9BQUosRUFBNkJtMkMsRUFBQSxDQUFhOUIs
Q0FBQWhOLEtBQUEsQ0FBUyxDQUFULENBQUEvRyxXQUFiLENBQTdCLENBQ0UsTUFBTyxDQUFDaGlC
LEtBQU1rMkIsQ0FBQW9CLHFCQUFQLENBQWlDWixLQUFNWCxDQUFBaE4sS0FBQSxDQUFTLENBQVQs
Q0FBQS9HLFdBQXZDLENBQStEMlUsTUFBTyxDQUFDMzJCLEtBQU1rMkIsQ0FBQTZCLGlCQUFQLENB
QXRFLENBQW9HQyxTQUFVLEdBQTlHLENBRmlCLENBTTVCQyxRQUFTQSxHQUFTLENBQUNsQyxDQUFE
LENBQU0sQ0FDdEIsTUFBMkIsRUFBM0IsR0FBT0EsQ0FBQWhOLEtBQUFybkMsT0FBUCxFQUN3QixD
QUR4QixHQUNJcTBDLENBQUFoTixLQUFBcm5DLE9BREosR0FFSXEwQyxDQUFBaE4sS0FBQSxDQUFT
LENBQVQsQ0FBQS9HLFdBQUFoaUIsS0FGSixHQUVvQ2syQixDQUFBRyxRQUZwQyxFQUdJTixDQUFB
aE4sS0FBQSxDQUFTLENBQVQsQ0FBQS9HLFdBQUFoaUIsS0FISixHQUdvQ2syQixDQUFBcUIsZ0JB
SHBDLEVBSUl4QixDQUFBaE4sS0FBQSxDQUFTLENBQVQsQ0FBQS9HLFdBQUFoaUIsS0FKSixHQUlv
Q2syQixDQUFBc0IsaUJBSnBDLENBRHNCLENBWXhCVSxRQUFTQSxHQUFXLENBQUNDLENBQUQsQ0FB
YS85QixDQUFiLENBQXNCLENBQ3hDLElBQUErOUIsV0FBQSxDQUFrQkEsQ0FDbEIsS0FBQS85QixR
QUFBLENBQWVBLENBRnlCLENBeWQxQ2crQixRQUFTQSxHQUFjLENBQUNELENBQUQsQ0FBYS85QixD
QUFiLENBQXNCLENBQzNDLElBQUErOUIsV0FBQSxDQUFrQkEsQ0FDbEIsS0FBQS85QixRQUFBLENB
QWVBLENBRjRCLENBd1k3Q2krQixRQUFTQSxHQUFNLENBQUM3MkMsQ0FBRCxDQUFNaVAsQ0FBTixD
QUFZNm5DLENBQVosQ0FBc0JDLENBQXRCLENBQStCLENBQzVDbEQsRUFBQSxDQUFpQjd6QyxDQUFq
QixDQUFzQisyQyxDQUF0QixDQUVJanlDLEVBQUFBLENBQVVtSyxDQUFBckssTUFBQSxDQUFXLEdB
QVgsQ0FDZCxLQURBLElBQStCakUsQ0FBL0IsQ0FDU1MsRUFBSSxDQUFiLENBQWlDLENBQWpDO0FB
QWdCMEQsQ0FBQTVFLE9BQWhCLENBQW9Da0IsQ0FBQSxFQUFwQyxDQUF5QyxDQUN2Q1QsQ0FBQSxD
QUFNK3lDLEVBQUEsQ0FBcUI1dUMsQ0FBQXVnQixNQUFBLEVBQXJCLENBQXNDMHhCLENBQXRDLENB
Q04sS0FBSUMsRUFBY25ELEVBQUEsQ0FBaUI3ekMsQ0FBQSxDQUFJVyxDQUFKLENBQWpCLENBQTJC
bzJDLENBQTNCLENBQ2JDLEVBQUwsR0FDRUEsQ0FDQSxDQURjLEVBQ2QsQ0FBQWgzQyxDQUFBLENB
QUlXLENBQUosQ0FBQSxDQUFXcTJDLENBRmIsQ0FJQWgzQyxFQUFBLENBQU1nM0MsQ0FQaUMsQ0FT
ekNyMkMsQ0FBQSxDQUFNK3lDLEVBQUEsQ0FBcUI1dUMsQ0FBQXVnQixNQUFBLEVBQXJCLENBQXND
MHhCLENBQXRDLENBQ05sRCxHQUFBLENBQWlCN3pDLENBQUEsQ0FBSVcsQ0FBSixDQUFqQixDQUEy
Qm8yQyxDQUEzQixDQUVBLE9BREEvMkMsRUFBQSxDQUFJVyxDQUFKLENBQ0EsQ0FEV20yQyxDQWZp
QyxDQXNCOUNHLFFBQVNBLEdBQTZCLENBQUNwc0MsQ0FBRCxDQUFPLENBQzNDLE1BQWUsYUFBZixF
QUFPQSxDQURvQyxDQU03Q3FzQyxRQUFTQSxHQUFVLENBQUMzMUMsQ0FBRCxDQUFRLENBQ3pCLE1B
QU9YLEVBQUEsQ0FBV1csQ0FBQWlCLFFBQVgsQ0FBQSxDQUE0QmpCLENBQUFpQixRQUFBLEVBQTVC
LENBQThDMjBDLEVBQUFyMkMsS0FBQSxDQUFtQlMsQ0FBbkIsQ0FENUIsQ0F1RDNCd1ksUUFBU0Es
R0FBYyxFQUFHLENBQ3hCLElBQUlxOUIsRUFBZXh3QyxFQUFBLEVBQW5CLENBQ0l5d0MsRUFBaUJ6
d0MsRUFBQSxFQUVyQixLQUFBMmIsS0FBQSxDQUFZLENBQUMsU0FBRCxDQUFZLFVBQVosQ0FBd0Is
UUFBUSxDQUFDM0osQ0FBRCxDQUFVOEIsQ0FBVixDQUFvQixDQWtEOUQ0OEIsUUFBU0EsRUFBeUIs
Q0FBQ3BiLENBQUQsQ0FBV3FiLENBQVgsQ0FBNEIsQ0FFNUQsTUFBZ0IsS0FBaEIsRUFBSXJiLENB
QUosRUFBMkMsSUFBM0MsRUFBd0JxYixDQUF4QixDQUNTcmIsQ0FEVCxHQUNzQnFiLENBRHRCLENB
SXdCLFFBQXhCLEdBQUksTUFBT3JiLEVBQVgsR0FLRUEsQ0FFSSxDQUZPZ2IsRUFBQSxDQUFXaGIs
Q0FBWCxDQUVQLENBQW9CLFFBQXBCLEdBQUEsTUFBT0EsRUFQYixFQVNXLENBQUEsQ0FUWCxDQWdC
T0EsQ0FoQlAsR0FnQm9CcWIsQ0FoQnBCLEVBZ0J3Q3JiLENBaEJ4QyxHQWdCcURBLENBaEJyRCxF
QWdCaUVxYixDQWhCakUsR0FnQnFGQSxDQXRCekIsQ0F5QjlEQyxRQUFTQSxFQUFtQixDQUFDMXJD
LENBQUQsQ0FBUXlkLENBQVIsQ0FBa0JrdUIsQ0FBbEIsQ0FBa0NDLENBQWxDLENBQW9EQyxDQUFw
RCxDQUEyRSxDQUNyRyxJQUFJQyxFQUFtQkYsQ0FBQUcsT0FBdkIsQ0FDSUMsQ0FFSixJQUFnQyxD
QUFoQyxHQUFJRixDQUFBMTNDLE9BQUosQ0FBbUMsQ0FDakMsSUFBSTYzQyxFQUFrQlQsQ0FBdEIs
Q0FDQU0sRUFBbUJBLENBQUEsQ0FBaUIsQ0FBakIsQ0FDbkIsT0FBTzlyQyxFQUFBNUgsT0FBQSxD
QUFhOHpDLFFBQTZCLENBQUNsc0MsQ0FBRCxDQUFRLENBQ3ZELElBQUltc0M7QUFBZ0JMLENBQUEs
Q0FBaUI5ckMsQ0FBakIsQ0FDZndyQyxFQUFBLENBQTBCVyxDQUExQixDQUF5Q0YsQ0FBekMsQ0FB
TCxHQUNFRCxDQUNBLENBRGFKLENBQUEsQ0FBaUI1ckMsQ0FBakIsQ0FBd0JqTSxDQUF4QixDQUFt
Q0EsQ0FBbkMsQ0FBOEMsQ0FBQ280QyxDQUFELENBQTlDLENBQ2IsQ0FBQUYsQ0FBQSxDQUFrQkUs
Q0FBbEIsRUFBbUNmLEVBQUEsQ0FBV2UsQ0FBWCxDQUZyQyxDQUlBLE9BQU9ILEVBTmdELENBQWxE
LENBT0p2dUIsQ0FQSSxDQU9Na3VCLENBUE4sQ0FPc0JFLENBUHRCLENBSDBCLENBZW5DLElBRkEs
SUFBSU8sRUFBd0IsRUFBNUIsQ0FDSUMsRUFBaUIsRUFEckIsQ0FFUy8yQyxFQUFJLENBRmIsQ0FF
Z0JhLEVBQUsyMUMsQ0FBQTEzQyxPQUFyQixDQUE4Q2tCLENBQTlDLENBQWtEYSxDQUFsRCxDQUFz
RGIsQ0FBQSxFQUF0RCxDQUNFODJDLENBQUEsQ0FBc0I5MkMsQ0FBdEIsQ0FDQSxDQUQyQmsyQyxD
QUMzQixDQUFBYSxDQUFBLENBQWUvMkMsQ0FBZixDQUFBLENBQW9CLElBR3RCLE9BQU8wSyxFQUFB
NUgsT0FBQSxDQUFhazBDLFFBQThCLENBQUN0c0MsQ0FBRCxDQUFRLENBR3hELElBRkEsSUFBSXVz
QyxFQUFVLENBQUEsQ0FBZCxDQUVTajNDLEVBQUksQ0FGYixDQUVnQmEsRUFBSzIxQyxDQUFBMTND
LE9BQXJCLENBQThDa0IsQ0FBOUMsQ0FBa0RhLENBQWxELENBQXNEYixDQUFBLEVBQXRELENBQTJE
LENBQ3pELElBQUk2MkMsRUFBZ0JMLENBQUEsQ0FBaUJ4MkMsQ0FBakIsQ0FBQSxDQUFvQjBLLENB
QXBCLENBQ3BCLElBQUl1c0MsQ0FBSixHQUFnQkEsQ0FBaEIsQ0FBMEIsQ0FBQ2YsQ0FBQSxDQUEw
QlcsQ0FBMUIsQ0FBeUNDLENBQUEsQ0FBc0I5MkMsQ0FBdEIsQ0FBekMsQ0FBM0IsRUFDRSsyQyxD
QUFBLENBQWUvMkMsQ0FBZixDQUNBLENBRG9CNjJDLENBQ3BCLENBQUFDLENBQUEsQ0FBc0I5MkMs
Q0FBdEIsQ0FBQSxDQUEyQjYyQyxDQUEzQixFQUE0Q2YsRUFBQSxDQUFXZSxDQUFYLENBSlcsQ0FR
dkRJLENBQUosR0FDRVAsQ0FERixDQUNlSixDQUFBLENBQWlCNXJDLENBQWpCLENBQXdCak0sQ0FB
eEIsQ0FBbUNBLENBQW5DLENBQThDczRDLENBQTlDLENBRGYsQ0FJQSxPQUFPTCxFQWZpRCxDQUFu
RCxDQWdCSnZ1QixDQWhCSSxDQWdCTWt1QixDQWhCTixDQWdCc0JFLENBaEJ0QixDQXhCOEYsQ0Ey
Q3ZHVyxRQUFTQSxFQUFvQixDQUFDeHNDLENBQUQsQ0FBUXlkLENBQVIsQ0FBa0JrdUIsQ0FBbEIs
Q0FBa0NDLENBQWxDLENBQW9ELENBQUEsSUFDM0U1WixDQUQyRSxDQUNsRVYsQ0FDYixPQUFPVSxF
QUFQLENBQWlCaHlCLENBQUE1SCxPQUFBLENBQWFxMEMsUUFBcUIsQ0FBQ3pzQyxDQUFELENBQVEs
Q0FDekQsTUFBTzRyQyxFQUFBLENBQWlCNXJDLENBQWpCLENBRGtELENBQTFDLENBRWQwc0MsUUFB
d0IsQ0FBQ2ozQyxDQUFELENBQVFrM0MsQ0FBUixDQUFhM3NDLENBQWIsQ0FBb0IsQ0FDN0NzeEIs
Q0FBQSxDQUFZNzdCLENBQ1JYLEVBQUEsQ0FBVzJvQixDQUFYLENBQUosRUFDRUEsQ0FBQWxpQixN
QUFBLENBQWUsSUFBZixDQUFxQjFFLFNBQXJCLENBRUVpQixFQUFBLENBQVVyQyxDQUFWLENBQUos
RUFDRXVLLENBQUE0c0MsYUFBQSxDQUFtQixRQUFRLEVBQUcsQ0FDeEI5MEMsQ0FBQSxDQUFVdzVC
LENBQVYsQ0FBSixFQUNFVSxDQUFBLEVBRjBCLENBQTlCLENBTjJDLENBRjlCLENBY2QyWixDQWRj
LENBRjhELENBbUJqRmtCLFFBQVNBLEVBQTJCLENBQUM3c0MsQ0FBRCxDQUFReWQsQ0FBUixDQUFr
Qmt1QixDQUFsQixDQUFrQ0MsQ0FBbEMsQ0FBb0QsQ0FnQnRGa0IsUUFBU0EsRUFBWSxDQUFDcjND
LENBQUQsQ0FBUSxDQUMzQixJQUFJczNDLEVBQWEsQ0FBQSxDQUNqQnI0QyxFQUFBLENBQVFlLENB
QVIsQ0FBZSxRQUFRLENBQUNnRyxDQUFELENBQU0sQ0FDdEIzRCxDQUFBLENBQVUyRCxDQUFWLENB
QUw7Q0FBcUJzeEMsQ0FBckIsQ0FBa0MsQ0FBQSxDQUFsQyxDQUQyQixDQUE3QixDQUdBLE9BQU9B
LEVBTG9CLENBaEJ5RCxJQUNsRi9hLENBRGtGLENBQ3pFVixDQUNiLE9BQU9VLEVBQVAsQ0FBaUJo
eUIsQ0FBQTVILE9BQUEsQ0FBYXEwQyxRQUFxQixDQUFDenNDLENBQUQsQ0FBUSxDQUN6RCxNQUFP
NHJDLEVBQUEsQ0FBaUI1ckMsQ0FBakIsQ0FEa0QsQ0FBMUMsQ0FFZDBzQyxRQUF3QixDQUFDajND
LENBQUQsQ0FBUWszQyxDQUFSLENBQWEzc0MsQ0FBYixDQUFvQixDQUM3Q3N4QixDQUFBLENBQVk3
N0IsQ0FDUlgsRUFBQSxDQUFXMm9CLENBQVgsQ0FBSixFQUNFQSxDQUFBem9CLEtBQUEsQ0FBYyxJ
QUFkLENBQW9CUyxDQUFwQixDQUEyQmszQyxDQUEzQixDQUFnQzNzQyxDQUFoQyxDQUVFOHNDLEVB
QUEsQ0FBYXIzQyxDQUFiLENBQUosRUFDRXVLLENBQUE0c0MsYUFBQSxDQUFtQixRQUFRLEVBQUcs
Q0FDeEJFLENBQUEsQ0FBYXhiLENBQWIsQ0FBSixFQUE2QlUsQ0FBQSxFQURELENBQTlCLENBTjJD
LENBRjlCLENBWWQyWixDQVpjLENBRnFFLENBeUJ4RnFCLFFBQVNBLEVBQXFCLENBQUNodEMsQ0FB
RCxDQUFReWQsQ0FBUixDQUFrQmt1QixDQUFsQixDQUFrQ0MsQ0FBbEMsQ0FBb0QsQ0FDaEYsSUFB
STVaLENBQ0osT0FBT0EsRUFBUCxDQUFpQmh5QixDQUFBNUgsT0FBQSxDQUFhNjBDLFFBQXNCLENB
QUNqdEMsQ0FBRCxDQUFRLENBQzFELE1BQU80ckMsRUFBQSxDQUFpQjVyQyxDQUFqQixDQURtRCxD
QUEzQyxDQUVka3RDLFFBQXlCLENBQUN6M0MsQ0FBRCxDQUFRazNDLENBQVIsQ0FBYTNzQyxDQUFi
LENBQW9CLENBQzFDbEwsQ0FBQSxDQUFXMm9CLENBQVgsQ0FBSixFQUNFQSxDQUFBbGlCLE1BQUEs
Q0FBZSxJQUFmLENBQXFCMUUsU0FBckIsQ0FFRm03QixFQUFBLEVBSjhDLENBRi9CLENBT2QyWixD
QVBjLENBRitELENBWWxGd0IsUUFBU0EsRUFBYyxDQUFDdkIsQ0FBRCxDQUFtQndCLENBQW5CLENB
QWtDLENBQ3ZELEdBQUtBLENBQUFBLENBQUwsQ0FBb0IsTUFBT3hCLEVBQzNCLEtBQUl5QixFQUFn
QnpCLENBQUExTixnQkFBcEIsQ0FNSTlpQyxFQUhBaXlDLENBR0ssR0FIYVIsQ0FHYixFQUZMUSxD
QUVLLEdBRmFiLENBRWIsQ0FBZWMsUUFBcUMsQ0FBQ3R0QyxDQUFELENBQVF3WixDQUFSLENBQWdC
b1ksQ0FBaEIsQ0FBd0JtYSxDQUF4QixDQUFnQyxDQUN2RnQyQyxDQUFBQSxDQUFRbTJDLENBQUEs
Q0FBaUI1ckMsQ0FBakIsQ0FBd0J3WixDQUF4QixDQUFnQ29ZLENBQWhDLENBQXdDbWEsQ0FBeEMs
Q0FDWixPQUFPcUIsRUFBQSxDQUFjMzNDLENBQWQsQ0FBcUJ1SyxDQUFyQixDQUE0QndaLENBQTVC
LENBRm9GLENBQXBGLENBR0wrekIsUUFBcUMsQ0FBQ3Z0QyxDQUFELENBQVF3WixDQUFSLENBQWdC
b1ksQ0FBaEIsQ0FBd0JtYSxDQUF4QixDQUFnQyxDQUNuRXQyQyxDQUFBQSxDQUFRbTJDLENBQUEs
Q0FBaUI1ckMsQ0FBakIsQ0FBd0J3WixDQUF4QixDQUFnQ29ZLENBQWhDLENBQXdDbWEsQ0FBeEMs
Q0FDUjF6QixFQUFBQSxDQUFTKzBCLENBQUEsQ0FBYzMzQyxDQUFkLENBQXFCdUssQ0FBckIsQ0FB
NEJ3WixDQUE1QixDQUdiLE9BQU8xaEIsRUFBQSxDQUFVckMsQ0FBVixDQUFBLENBQW1CNGlCLENB
QW5CLENBQTRCNWlCLENBTG9DLENBU3JFbTJDLEVBQUExTixnQkFBSixFQUNJME4sQ0FBQTFOLGdC
QURKO0FBQ3lDd04sQ0FEekMsQ0FFRXR3QyxDQUFBOGlDLGdCQUZGLENBRXVCME4sQ0FBQTFOLGdC
QUZ2QixDQUdZa1AsQ0FBQXJiLFVBSFosR0FNRTMyQixDQUFBOGlDLGdCQUNBLENBRHFCd04sQ0FD
ckIsQ0FBQXR3QyxDQUFBMndDLE9BQUEsQ0FBWUgsQ0FBQUcsT0FBQSxDQUEwQkgsQ0FBQUcsT0FB
MUIsQ0FBb0QsQ0FBQ0gsQ0FBRCxDQVBsRSxDQVVBLE9BQU94d0MsRUE5QmdELENBOUtLLElBQzFE
b3lDLEVBQWdCLENBQ2R6bkMsSUFBSzZJLENBQUE3SSxJQURTLENBRWQwbkMsZ0JBQWlCLENBQUEs
Q0FGSCxDQUQwQyxDQUsxREMsRUFBeUIsQ0FDdkIzbkMsSUFBSzZJLENBQUE3SSxJQURrQixDQUV2
QjBuQyxnQkFBaUIsQ0FBQSxDQUZNLENBSzdCLE9BQU96L0IsU0FBZSxDQUFDNnZCLENBQUQsQ0FB
TXVQLENBQU4sQ0FBcUJLLENBQXJCLENBQXNDLENBQUEsSUFDdEQ3QixDQURzRCxDQUNwQytCLENB
RG9DLENBQzNCQyxDQUUvQixRQUFRLE1BQU8vUCxFQUFmLEVBQ0UsS0FBSyxRQUFMLENBRUUrUCxD
QUFBLENBREEvUCxDQUNBLENBRE1BLENBQUFqc0IsS0FBQSxFQUdOLEtBQUlxSCxFQUFTdzBCLENB
QUEsQ0FBa0JsQyxDQUFsQixDQUFtQ0QsQ0FDaERNLEVBQUEsQ0FBbUIzeUIsQ0FBQSxDQUFNMjBC
LENBQU4sQ0FFZGhDLEVBQUwsR0FDd0IsR0FnQnRCLEdBaEJJL04sQ0FBQXRqQyxPQUFBLENBQVcs
Q0FBWCxDQWdCSixFQWhCK0MsR0FnQi9DLEdBaEI2QnNqQyxDQUFBdGpDLE9BQUEsQ0FBVyxDQUFY
LENBZ0I3QixHQWZFb3pDLENBQ0EsQ0FEVSxDQUFBLENBQ1YsQ0FBQTlQLENBQUEsQ0FBTUEsQ0FB
QS9ULFVBQUEsQ0FBYyxDQUFkLENBY1IsRUFaSStqQixDQVlKLENBWm1CSixDQUFBLENBQWtCQyxD
QUFsQixDQUEyQ0YsQ0FZOUQsQ0FYSU0sQ0FXSixDQVhZLElBQUlDLEVBQUosQ0FBVUYsQ0FBVixD
QVdaLENBVEFqQyxDQVNBLENBVG1CNXZDLENBRE5neUMsSUFBSUMsRUFBSkQsQ0FBV0YsQ0FBWEUs
Q0FBa0JsaEMsQ0FBbEJraEMsQ0FBMkJILENBQTNCRyxDQUNNaHlDLE9BQUEsQ0FBYTZoQyxDQUFi
LENBU25CLENBUkkrTixDQUFBeG1DLFNBQUosQ0FDRXdtQyxDQUFBMU4sZ0JBREYsQ0FDcUM4TyxD
QURyQyxDQUVXVyxDQUFKLENBQ0wvQixDQUFBMU4sZ0JBREssQ0FDOEIwTixDQUFBamEsUUFBQSxD
QUMvQmtiLENBRCtCLENBQ0RMLENBRjdCLENBR0laLENBQUFHLE9BSEosR0FJTEgsQ0FBQTFOLGdC
QUpLLENBSThCd04sQ0FKOUIsQ0FNUCxDQUFBenlCLENBQUEsQ0FBTTIwQixDQUFOLENBQUEsQ0FB
a0JoQyxDQWpCcEIsQ0FtQkEsT0FBT3VCLEVBQUEsQ0FBZXZCLENBQWY7QUFBaUN3QixDQUFqQyxD
QUVULE1BQUssVUFBTCxDQUNFLE1BQU9ELEVBQUEsQ0FBZXRQLENBQWYsQ0FBb0J1UCxDQUFwQixD
QUVULFNBQ0UsTUFBTzkxQyxFQWpDWCxDQUgwRCxDQVZFLENBQXBELENBSlksQ0EyYTFCK1csUUFB
U0EsR0FBVSxFQUFHLENBRXBCLElBQUFvSSxLQUFBLENBQVksQ0FBQyxZQUFELENBQWUsbUJBQWYs
Q0FBb0MsUUFBUSxDQUFDdkksQ0FBRCxDQUFhdEIsQ0FBYixDQUFnQyxDQUN0RixNQUFPc2hDLEdB
QUEsQ0FBUyxRQUFRLENBQUNod0IsQ0FBRCxDQUFXLENBQ2pDaFEsQ0FBQS9WLFdBQUEsQ0FBc0Ir
bEIsQ0FBdEIsQ0FEaUMsQ0FBNUIsQ0FFSnRSLENBRkksQ0FEK0UsQ0FBNUUsQ0FGUSxDQVN0QjJC
LFFBQVNBLEdBQVcsRUFBRyxDQUNyQixJQUFBa0ksS0FBQSxDQUFZLENBQUMsVUFBRCxDQUFhLG1C
QUFiLENBQWtDLFFBQVEsQ0FBQ3JLLENBQUQsQ0FBV1EsQ0FBWCxDQUE4QixDQUNsRixNQUFPc2hD
LEdBQUEsQ0FBUyxRQUFRLENBQUNod0IsQ0FBRCxDQUFXLENBQ2pDOVIsQ0FBQWlULE1BQUEsQ0FB
ZW5CLENBQWYsQ0FEaUMsQ0FBNUIsQ0FFSnRSLENBRkksQ0FEMkUsQ0FBeEUsQ0FEUyxDQWdCdkJz
aEMsUUFBU0EsR0FBUSxDQUFDQyxDQUFELENBQVdDLENBQVgsQ0FBNkIsQ0FFNUNDLFFBQVNBLEVB
QVEsQ0FBQ2x6QyxDQUFELENBQU9tekMsQ0FBUCxDQUFrQmpWLENBQWxCLENBQTRCLENBRTNDcG9C
LFFBQVNBLEVBQUksQ0FBQzdWLENBQUQsQ0FBSyxDQUNoQixNQUFPLFNBQVEsQ0FBQzNGLENBQUQs
Q0FBUSxDQUNqQmltQyxDQUFKLEdBQ0FBLENBQ0EsQ0FEUyxDQUFBLENBQ1QsQ0FBQXRnQyxDQUFB
cEcsS0FBQSxDQUFRbUcsQ0FBUixDQUFjMUYsQ0FBZCxDQUZBLENBRHFCLENBRFAsQ0FEbEIsSUFB
SWltQyxFQUFTLENBQUEsQ0FTYixPQUFPLENBQUN6cUIsQ0FBQSxDQUFLcTlCLENBQUwsQ0FBRCxD
QUFrQnI5QixDQUFBLENBQUtvb0IsQ0FBTCxDQUFsQixDQVZvQyxDQTJCN0NrVixRQUFTQSxFQUFP
LEVBQUcsQ0FDakIsSUFBQWpKLFFBQUEsQ0FBZSxDQUFFN08sT0FBUSxDQUFWLENBREUsQ0E2Qm5C
K1gsUUFBU0EsRUFBVSxDQUFDNTVDLENBQUQsQ0FBVXdHLENBQVYsQ0FBYyxDQUMvQixNQUFPLFNB
QVEsQ0FBQzNGLENBQUQsQ0FBUSxDQUNyQjJGLENBQUFwRyxLQUFBLENBQVFKLENBQVIsQ0FBaUJh
LENBQWpCLENBRHFCLENBRFEsQ0E4QmpDZzVDLFFBQVNBLEVBQW9CLENBQUN2eEIsQ0FBRCxDQUFR
LENBQy9Cd3hCLENBQUF4eEIsQ0FBQXd4QixpQkFBSjtBQUErQnh4QixDQUFBeXhCLFFBQS9CLEdB
Q0F6eEIsQ0FBQXd4QixpQkFDQSxDQUR5QixDQUFBLENBQ3pCLENBQUFQLENBQUEsQ0FBUyxRQUFR
LEVBQUcsQ0EzQk8sSUFDdkIveUMsQ0FEdUIsQ0FDbkI0K0IsQ0FEbUIsQ0FDVDJVLENBRWxCQSxF
QUFBLENBd0JtQ3p4QixDQXhCekJ5eEIsUUF3QnlCenhCLEVBdkJuQ3d4QixpQkFBQSxDQUF5QixD
QUFBLENBdUJVeHhCLEVBdEJuQ3l4QixRQUFBLENBQWdCNTZDLENBQ2hCLEtBTjJCLElBTWxCdUIs
RUFBSSxDQU5jLENBTVhhLEVBQUt3NEMsQ0FBQXY2QyxPQUFyQixDQUFxQ2tCLENBQXJDLENBQXlD
YSxDQUF6QyxDQUE2QyxFQUFFYixDQUEvQyxDQUFrRCxDQUNoRDBrQyxDQUFBLENBQVcyVSxDQUFB
LENBQVFyNUMsQ0FBUixDQUFBLENBQVcsQ0FBWCxDQUNYOEYsRUFBQSxDQUFLdXpDLENBQUEsQ0FB
UXI1QyxDQUFSLENBQUEsQ0FtQjRCNG5CLENBbkJqQnVaLE9BQVgsQ0FDTCxJQUFJLENBQ0UzaEMs
Q0FBQSxDQUFXc0csQ0FBWCxDQUFKLENBQ0U0K0IsQ0FBQUMsUUFBQSxDQUFpQjcrQixDQUFBLENB
Z0JZOGhCLENBaEJUem5CLE1BQUgsQ0FBakIsQ0FERixDQUU0QixDQUFyQixHQWV3QnluQixDQWZw
QnVaLE9BQUosQ0FDTHVELENBQUFDLFFBQUEsQ0FjNkIvYyxDQWRaem5CLE1BQWpCLENBREssQ0FH
THVrQyxDQUFBcEMsT0FBQSxDQVk2QjFhLENBWmJ6bkIsTUFBaEIsQ0FOQSxDQVFGLE1BQU95SCxD
QUFQLENBQVUsQ0FDVjg4QixDQUFBcEMsT0FBQSxDQUFnQjE2QixDQUFoQixDQUNBLENBQUFreEMs
Q0FBQSxDQUFpQmx4QyxDQUFqQixDQUZVLENBWG9DLENBcUI5QixDQUFwQixDQUZBLENBRG1DLENB
TXJDMHhDLFFBQVNBLEVBQVEsRUFBRyxDQUNsQixJQUFBL1YsUUFBQSxDQUFlLElBQUkwVixDQUVu
QixLQUFBdFUsUUFBQSxDQUFldVUsQ0FBQSxDQUFXLElBQVgsQ0FBaUIsSUFBQXZVLFFBQWpCLENB
Q2YsS0FBQXJDLE9BQUEsQ0FBYzRXLENBQUEsQ0FBVyxJQUFYLENBQWlCLElBQUE1VyxPQUFqQixD
QUNkLEtBQUF1SCxPQUFBLENBQWNxUCxDQUFBLENBQVcsSUFBWCxDQUFpQixJQUFBclAsT0FBakIs
Q0FMSSxDQTdGcEIsSUFBSTBQLEVBQVc3NkMsQ0FBQSxDQUFPLElBQVAsQ0FBYTg2QyxTQUFiLENB
Z0NmUCxFQUFBMzJDLFVBQUEsQ0FBb0IsQ0FDbEJzMkIsS0FBTUEsUUFBUSxDQUFDNmdCLENBQUQs
Q0FBY0MsQ0FBZCxDQUEwQkMsQ0FBMUIsQ0FBd0MsQ0FDcEQsSUFBSTUyQixFQUFTLElBQUl1MkIs
Q0FFakIsS0FBQXRKLFFBQUFxSixRQUFBLENBQXVCLElBQUFySixRQUFBcUosUUFBdkI7QUFBK0Ms
RUFDL0MsS0FBQXJKLFFBQUFxSixRQUFBNTBDLEtBQUEsQ0FBMEIsQ0FBQ3NlLENBQUQsQ0FBUzAy
QixDQUFULENBQXNCQyxDQUF0QixDQUFrQ0MsQ0FBbEMsQ0FBMUIsQ0FDMEIsRUFBMUIsQ0FBSSxJ
QUFBM0osUUFBQTdPLE9BQUosRUFBNkJnWSxDQUFBLENBQXFCLElBQUFuSixRQUFyQixDQUU3QixP
QUFPanRCLEVBQUF3Z0IsUUFQNkMsQ0FEcEMsQ0FXbEIsUUFBU3FXLFFBQVEsQ0FBQ2h4QixDQUFE
LENBQVcsQ0FDMUIsTUFBTyxLQUFBZ1EsS0FBQSxDQUFVLElBQVYsQ0FBZ0JoUSxDQUFoQixDQURt
QixDQVhWLENBZWxCLFVBQVdpeEIsUUFBUSxDQUFDanhCLENBQUQsQ0FBVyt3QixDQUFYLENBQXlC
LENBQzFDLE1BQU8sS0FBQS9nQixLQUFBLENBQVUsUUFBUSxDQUFDejRCLENBQUQsQ0FBUSxDQUMv
QixNQUFPMjVDLEVBQUEsQ0FBZTM1QyxDQUFmLENBQXNCLENBQUEsQ0FBdEIsQ0FBNEJ5b0IsQ0FB
NUIsQ0FEd0IsQ0FBMUIsQ0FFSixRQUFRLENBQUNyQixDQUFELENBQVEsQ0FDakIsTUFBT3V5QixF
QUFBLENBQWV2eUIsQ0FBZixDQUFzQixDQUFBLENBQXRCLENBQTZCcUIsQ0FBN0IsQ0FEVSxDQUZa
LENBSUord0IsQ0FKSSxDQURtQyxDQWYxQixDQXFFcEJMLEVBQUFoM0MsVUFBQSxDQUFxQixDQUNu
QnFpQyxRQUFTQSxRQUFRLENBQUN4K0IsQ0FBRCxDQUFNLENBQ2pCLElBQUFvOUIsUUFBQXlNLFFB
QUE3TyxPQUFKLEdBQ0loN0IsQ0FBSixHQUFZLElBQUFvOUIsUUFBWixDQUNFLElBQUF3VyxTQUFB
LENBQWNSLENBQUEsQ0FDWixRQURZLENBR1pwekMsQ0FIWSxDQUFkLENBREYsQ0FNRSxJQUFBNnpD
LFVBQUEsQ0FBZTd6QyxDQUFmLENBUEYsQ0FEcUIsQ0FESixDQWNuQjZ6QyxVQUFXQSxRQUFRLENB
QUM3ekMsQ0FBRCxDQUFNLENBQUEsSUFDbkJ5eUIsQ0FEbUIsQ0FDYndJLENBRVZBLEVBQUEsQ0FB
TTJYLENBQUEsQ0FBUyxJQUFULENBQWUsSUFBQWlCLFVBQWYsQ0FBK0IsSUFBQUQsU0FBL0IsQ0FD
TixJQUFJLENBQ0YsR0FBS2o1QyxDQUFBLENBQVNxRixDQUFULENBQUwsRUFBc0IzRyxDQUFBLENB
QVcyRyxDQUFYLENBQXRCLENBQXdDeXlCLENBQUEsQ0FBT3p5QixDQUFQLEVBQWNBLENBQUF5eUIs
S0FDbERwNUIsRUFBQSxDQUFXbzVCLENBQVgsQ0FBSixFQUNFLElBQUEySyxRQUFBeU0sUUFBQTdP
LE9BQ0E7QUFEK0IsRUFDL0IsQ0FBQXZJLENBQUFsNUIsS0FBQSxDQUFVeUcsQ0FBVixDQUFlaTdC
LENBQUEsQ0FBSSxDQUFKLENBQWYsQ0FBdUJBLENBQUEsQ0FBSSxDQUFKLENBQXZCLENBQStCLElB
QUF5SSxPQUEvQixDQUZGLEdBSUUsSUFBQXRHLFFBQUF5TSxRQUFBN3ZDLE1BRUEsQ0FGNkJnRyxD
QUU3QixDQURBLElBQUFvOUIsUUFBQXlNLFFBQUE3TyxPQUNBLENBRDhCLENBQzlCLENBQUFnWSxD
QUFBLENBQXFCLElBQUE1VixRQUFBeU0sUUFBckIsQ0FORixDQUZFLENBVUYsTUFBT3BvQyxDQUFQ
LENBQVUsQ0FDVnc1QixDQUFBLENBQUksQ0FBSixDQUFBLENBQU94NUIsQ0FBUCxDQUNBLENBQUFr
eEMsQ0FBQSxDQUFpQmx4QyxDQUFqQixDQUZVLENBZFcsQ0FkTixDQWtDbkIwNkIsT0FBUUEsUUFB
USxDQUFDOTBCLENBQUQsQ0FBUyxDQUNuQixJQUFBKzFCLFFBQUF5TSxRQUFBN08sT0FBSixFQUNB
LElBQUE0WSxTQUFBLENBQWN2c0MsQ0FBZCxDQUZ1QixDQWxDTixDQXVDbkJ1c0MsU0FBVUEsUUFB
USxDQUFDdnNDLENBQUQsQ0FBUyxDQUN6QixJQUFBKzFCLFFBQUF5TSxRQUFBN3ZDLE1BQUEsQ0FB
NkJxTixDQUM3QixLQUFBKzFCLFFBQUF5TSxRQUFBN08sT0FBQSxDQUE4QixDQUM5QmdZLEVBQUEs
Q0FBcUIsSUFBQTVWLFFBQUF5TSxRQUFyQixDQUh5QixDQXZDUixDQTZDbkJuRyxPQUFRQSxRQUFR
LENBQUNvUSxDQUFELENBQVcsQ0FDekIsSUFBSXBVLEVBQVksSUFBQXRDLFFBQUF5TSxRQUFBcUos
UUFFb0IsRUFBcEMsRUFBSyxJQUFBOVYsUUFBQXlNLFFBQUE3TyxPQUFMLEVBQTBDMEUsQ0FBMUMs
RUFBdURBLENBQUEvbUMsT0FBdkQsRUFDRSs1QyxDQUFBLENBQVMsUUFBUSxFQUFHLENBRWxCLElB
RmtCLElBQ2Rqd0IsQ0FEYyxDQUNKN0YsQ0FESSxDQUVUL2lCLEVBQUksQ0FGSyxDQUVGYSxFQUFL
Z2xDLENBQUEvbUMsT0FBckIsQ0FBdUNrQixDQUF2QyxDQUEyQ2EsQ0FBM0MsQ0FBK0NiLENBQUEs
RUFBL0MsQ0FBb0QsQ0FDbEQraUIsQ0FBQSxDQUFTOGlCLENBQUEsQ0FBVTdsQyxDQUFWLENBQUEs
Q0FBYSxDQUFiLENBQ1Q0b0IsRUFBQSxDQUFXaWQsQ0FBQSxDQUFVN2xDLENBQVYsQ0FBQSxDQUFh
LENBQWIsQ0FDWCxJQUFJLENBQ0YraUIsQ0FBQThtQixPQUFBLENBQWNycUMsQ0FBQSxDQUFXb3BC
LENBQVgsQ0FBQTtBQUF1QkEsQ0FBQSxDQUFTcXhCLENBQVQsQ0FBdkIsQ0FBNENBLENBQTFELENB
REUsQ0FFRixNQUFPcnlDLENBQVAsQ0FBVSxDQUNWa3hDLENBQUEsQ0FBaUJseEMsQ0FBakIsQ0FE
VSxDQUxzQyxDQUZsQyxDQUFwQixDQUp1QixDQTdDUixDQTJHckIsS0FBSXN5QyxFQUFjQSxRQUFv
QixDQUFDLzVDLENBQUQsQ0FBUWc2QyxDQUFSLENBQWtCLENBQ3RELElBQUlwM0IsRUFBUyxJQUFJ
dTJCLENBQ2JhLEVBQUosQ0FDRXAzQixDQUFBNGhCLFFBQUEsQ0FBZXhrQyxDQUFmLENBREYsQ0FH
RTRpQixDQUFBdWYsT0FBQSxDQUFjbmlDLENBQWQsQ0FFRixPQUFPNGlCLEVBQUF3Z0IsUUFQK0Ms
Q0FBeEQsQ0FVSXVXLEVBQWlCQSxRQUF1QixDQUFDMzVDLENBQUQsQ0FBUWk2QyxDQUFSLENBQW9C
eHhCLENBQXBCLENBQThCLENBQ3hFLElBQUl5eEIsRUFBaUIsSUFDckIsSUFBSSxDQUNFNzZDLENB
QUEsQ0FBV29wQixDQUFYLENBQUosR0FBMEJ5eEIsQ0FBMUIsQ0FBMkN6eEIsQ0FBQSxFQUEzQyxD
QURFLENBRUYsTUFBT2hoQixDQUFQLENBQVUsQ0FDVixNQUFPc3lDLEVBQUEsQ0FBWXR5QyxDQUFa
LENBQWUsQ0FBQSxDQUFmLENBREcsQ0FHWixNQUFrQnl5QyxFQUFsQixFQTlwYlk3NkMsQ0FBQSxD
QThwYk02NkMsQ0E5cGJLemhCLEtBQVgsQ0E4cGJaLENBQ1N5aEIsQ0FBQXpoQixLQUFBLENBQW9C
LFFBQVEsRUFBRyxDQUNwQyxNQUFPc2hCLEVBQUEsQ0FBWS81QyxDQUFaLENBQW1CaTZDLENBQW5C
LENBRDZCLENBQS9CLENBRUosUUFBUSxDQUFDN3lCLENBQUQsQ0FBUSxDQUNqQixNQUFPMnlCLEVB
QUEsQ0FBWTN5QixDQUFaLENBQW1CLENBQUEsQ0FBbkIsQ0FEVSxDQUZaLENBRFQsQ0FPUzJ5QixD
QUFBLENBQVkvNUMsQ0FBWixDQUFtQmk2QyxDQUFuQixDQWQrRCxDQVYxRSxDQTJDSTVXLEVBQU9B
LFFBQVEsQ0FBQ3JqQyxDQUFELENBQVF5b0IsQ0FBUixDQUFrQjB4QixDQUFsQixDQUEyQlgsQ0FB
M0IsQ0FBeUMsQ0FDMUQsSUFBSTUyQixFQUFTLElBQUl1MkIsQ0FDakJ2MkIsRUFBQTRoQixRQUFB
LENBQWV4a0MsQ0FBZixDQUNBLE9BQU80aUIsRUFBQXdnQixRQUFBM0ssS0FBQSxDQUFvQmhRLENB
QXBCLENBQThCMHhCLENBQTlCLENBQXVDWCxDQUF2QyxDQUhtRCxDQTNDNUQsQ0FzR0lZLEVBQUtB
LFFBQVNDLEVBQUMsQ0FBQ0MsQ0FBRCxDQUFXLENBQzVCLEdBQUssQ0FBQWo3QyxDQUFBLENBQVdp
N0MsQ0FBWCxDQUFMLENBQ0UsS0FBTWxCLEVBQUEsQ0FBUyxTQUFULENBQXNEa0IsQ0FBdEQsQ0FB
TixDQUdGLEdBQU0sRUFBQSxJQUFBLFdBQWdCRCxFQUFoQixDQUFOLENBRUUsTUFBTyxLQUFJQSxD
QUFKLENBQU1DLENBQU4sQ0FHVCxLQUFJL1YsRUFBVyxJQUFJNFUsQ0FVbkJtQixFQUFBLENBUkF6
QixRQUFrQixDQUFDNzRDLENBQUQsQ0FBUSxDQUN4QnVrQyxDQUFBQyxRQUFBLENBQWlCeGtDLENB
QWpCLENBRHdCLENBUTFCLENBSkE0akMsUUFBaUIsQ0FBQ3YyQixDQUFELENBQVMsQ0FDeEJrM0Is
Q0FBQXBDLE9BQUEsQ0FBZ0I5MEIsQ0FBaEIsQ0FEd0IsQ0FJMUIsQ0FFQSxPQUFPazNCLEVBQUFu
QixRQXRCcUIsQ0F5QjlCZ1g7Q0FBQXh3QixNQUFBLENBdlRZQSxRQUFRLEVBQUcsQ0FDckIsTUFB
TyxLQUFJdXZCLENBRFUsQ0F3VHZCaUIsRUFBQWpZLE9BQUEsQ0F0SWFBLFFBQVEsQ0FBQzkwQixD
QUFELENBQVMsQ0FDNUIsSUFBSXVWLEVBQVMsSUFBSXUyQixDQUNqQnYyQixFQUFBdWYsT0FBQSxD
QUFjOTBCLENBQWQsQ0FDQSxPQUFPdVYsRUFBQXdnQixRQUhxQixDQXVJOUJnWCxFQUFBL1csS0FB
QSxDQUFVQSxDQUNWK1csRUFBQTVWLFFBQUEsQ0F0RWNuQixDQXVFZCtXLEVBQUFHLElBQUEsQ0Fy
REFBLFFBQVksQ0FBQ0MsQ0FBRCxDQUFXLENBQUEsSUFDakJqVyxFQUFXLElBQUk0VSxDQURFLENB
RWpCOW9DLEVBQVUsQ0FGTyxDQUdqQm9xQyxFQUFVejdDLENBQUEsQ0FBUXc3QyxDQUFSLENBQUEs
Q0FBb0IsRUFBcEIsQ0FBeUIsRUFFdkN2N0MsRUFBQSxDQUFRdTdDLENBQVIsQ0FBa0IsUUFBUSxD
QUFDcFgsQ0FBRCxDQUFVaGtDLENBQVYsQ0FBZSxDQUN2Q2lSLENBQUEsRUFDQWd6QixFQUFBLENB
QUtELENBQUwsQ0FBQTNLLEtBQUEsQ0FBbUIsUUFBUSxDQUFDejRCLENBQUQsQ0FBUSxDQUM3Qnk2
QyxDQUFBbjdDLGVBQUEsQ0FBdUJGLENBQXZCLENBQUosR0FDQXE3QyxDQUFBLENBQVFyN0MsQ0FB
UixDQUNBLENBRGVZLENBQ2YsQ0FBTSxFQUFFcVEsQ0FBUixFQUFrQmswQixDQUFBQyxRQUFBLENB
QWlCaVcsQ0FBakIsQ0FGbEIsQ0FEaUMsQ0FBbkMsQ0FJRyxRQUFRLENBQUNwdEMsQ0FBRCxDQUFT
LENBQ2RvdEMsQ0FBQW43QyxlQUFBLENBQXVCRixDQUF2QixDQUFKLEVBQ0FtbEMsQ0FBQXBDLE9B
QUEsQ0FBZ0I5MEIsQ0FBaEIsQ0FGa0IsQ0FKcEIsQ0FGdUMsQ0FBekMsQ0FZZ0IsRUFBaEIsR0FB
SWdELENBQUosRUFDRWswQixDQUFBQyxRQUFBLENBQWlCaVcsQ0FBakIsQ0FHRixPQUFPbFcsRUFB
QW5CLFFBckJjLENBdUR2QixPQUFPZ1gsRUF0VnFDLENBeVY5Q3BnQyxRQUFTQSxHQUFhLEVBQUcs
Q0FDdkIsSUFBQWdILEtBQUEsQ0FBWSxDQUFDLFNBQUQsQ0FBWSxVQUFaLENBQXdCLFFBQVEsQ0FB
Q25ILENBQUQsQ0FBVUYsQ0FBVixDQUFvQixDQThCOUQrZ0MsUUFBU0EsRUFBSyxFQUFHLENBQ2Ys
SUFBUyxJQUFBNzZDLEVBQUksQ0FBYixDQUFnQkEsQ0FBaEIsQ0FBb0I4NkMsQ0FBQWg4QyxPQUFw
QixDQUFzQ2tCLENBQUEsRUFBdEMsQ0FBMkMsQ0FDekMsSUFBSSs2QyxFQUFPRCxDQUFBLENBQVU5
NkMsQ0FBVixDQUNQKzZDLEVBQUosR0FDRUQsQ0FBQSxDQUFVOTZDLENBQVYsQ0FDQSxDQURlLElB
Q2YsQ0FBQSs2QyxDQUFBLEVBRkYsQ0FGeUMsQ0FPM0NDLENBQUEsQ0FBWUYsQ0FBQWg4QyxPQUFa
LENBQStCLENBUmhCLENBV2pCbThDLFFBQVNBLEVBQU8sQ0FBQ0MsQ0FBRCxDQUFVLENBQ3hCLElB
QUlwM0M7QUFBUWczQyxDQUFBaDhDLE9BRVprOEMsRUFBQSxFQUNBRixFQUFBcjJDLEtBQUEsQ0FB
ZXkyQyxDQUFmLENBRWMsRUFBZCxHQUFJcDNDLENBQUosR0FDRXEzQyxDQURGLENBQ2tCQyxDQUFB
LENBQU1QLENBQU4sQ0FEbEIsQ0FJQSxPQUFPUSxTQUFzQixFQUFHLENBQ2pCLENBQWIsRUFBSXYz
QyxDQUFKLEdBRUVBLENBRUEsQ0FIQWczQyxDQUFBLENBQVVoM0MsQ0FBVixDQUdBLENBSG1CLElB
R25CLENBQW9CLENBQXBCLEdBQUksRUFBRWszQyxDQUFOLEVBQXlCRyxDQUF6QixHQUNFQSxDQUFB
LEVBRUEsQ0FEQUEsQ0FDQSxDQURnQixJQUNoQixDQUFBTCxDQUFBaDhDLE9BQUEsQ0FBbUIsQ0FI
ckIsQ0FKRixDQUQ4QixDQVZSLENBeEMxQixJQUFJdzhDLEVBQXdCdGhDLENBQUFzaEMsc0JBQXhC
QSxFQUN3QnRoQyxDQUFBdWhDLDRCQUQ1QixDQUdJQyxFQUF1QnhoQyxDQUFBd2hDLHFCQUF2QkEs
RUFDdUJ4aEMsQ0FBQXloQywyQkFEdkJELEVBRXVCeGhDLENBQUEwaEMsa0NBTDNCLENBT0lDLEVB
QWUsQ0FBRUwsQ0FBQUEsQ0FQckIsQ0FRSUYsRUFBUU8sQ0FBQSxDQUNSLFFBQVEsQ0FBQzcxQyxD
QUFELENBQUssQ0FDWCxJQUFJc2xCLEVBQUtrd0IsQ0FBQSxDQUFzQngxQyxDQUF0QixDQUNULE9B
QU8sU0FBUSxFQUFHLENBQ2hCMDFDLENBQUEsQ0FBcUJwd0IsQ0FBckIsQ0FEZ0IsQ0FGUCxDQURM
LENBT1IsUUFBUSxDQUFDdGxCLENBQUQsQ0FBSyxDQUNYLElBQUk4MUMsRUFBUTloQyxDQUFBLENB
QVNoVSxDQUFULENBQWEsS0FBYixDQUFvQixDQUFBLENBQXBCLENBQ1osT0FBTyxTQUFRLEVBQUcs
Q0FDaEJnVSxDQUFBcVEsT0FBQSxDQUFnQnl4QixDQUFoQixDQURnQixDQUZQLENBT2pCWCxFQUFB
WSxVQUFBLENBQW9CRixDQUVwQixLQUFJUixDQUFKLENBQ0lILEVBQVksQ0FEaEIsQ0FFSUYsRUFB
WSxFQUNoQixPQUFPRyxFQTVCdUQsQ0FBcEQsQ0FEVyxDQXVJekJwaUMsUUFBU0EsR0FBa0IsRUFB
RyxDQWE1QmlqQyxRQUFTQSxFQUFxQixDQUFDajZDLENBQUQsQ0FBUyxDQUNyQ2s2QyxRQUFTQSxF
QUFVLEVBQUcsQ0FDcEIsSUFBQUMsV0FBQSxDQUFrQixJQUFBQyxjQUFsQjtBQUNJLElBQUFDLFlB
REosQ0FDdUIsSUFBQUMsWUFEdkIsQ0FDMEMsSUFDMUMsS0FBQUMsWUFBQSxDQUFtQixFQUNuQixL
QUFBQyxnQkFBQSxDQUF1QixFQUN2QixLQUFBQyxnQkFBQSxDQUF1QixDQUN2QixLQUFBQyxJQUFB
LENBdHdjRyxFQUFFbDhDLEVBdXdjTCxLQUFBbThDLGFBQUEsQ0FBb0IsSUFQQSxDQVN0QlQsQ0FB
QXo1QyxVQUFBLENBQXVCVCxDQUN2QixPQUFPazZDLEVBWDhCLENBWnZDLElBQUlVLEVBQU0sRUFB
VixDQUNJQyxFQUFtQmgrQyxDQUFBLENBQU8sWUFBUCxDQUR2QixDQUVJaStDLEVBQWlCLElBRnJC
LENBR0lDLEVBQWUsSUFFbkIsS0FBQUMsVUFBQSxDQUFpQkMsUUFBUSxDQUFDMzhDLENBQUQsQ0FB
USxDQUMzQm9CLFNBQUF6QyxPQUFKLEdBQ0UyOUMsQ0FERixDQUNRdDhDLENBRFIsQ0FHQSxPQUFP
czhDLEVBSndCLENBcUJqQyxLQUFBdDdCLEtBQUEsQ0FBWSxDQUFDLFdBQUQsQ0FBYyxtQkFBZCxD
QUFtQyxRQUFuQyxDQUE2QyxVQUE3QyxDQUNSLFFBQVEsQ0FBQ3VELENBQUQsQ0FBWXBOLENBQVos
Q0FBK0JvQixDQUEvQixDQUF1QzVCLENBQXZDLENBQWlELENBRTNEaW1DLFFBQVNBLEVBQWlCLENB
QUNDLENBQUQsQ0FBUyxDQUMvQkEsQ0FBQUMsYUFBQWhrQixZQUFBLENBQWtDLENBQUEsQ0FESCxD
QStDbkNpa0IsUUFBU0EsRUFBSyxFQUFHLENBQ2YsSUFBQVgsSUFBQSxDQWgwY0csRUFBRWw4QyxF
QWkwY0wsS0FBQW9rQyxRQUFBLENBQWUsSUFBQTBZLFFBQWYsQ0FBOEIsSUFBQW5CLFdBQTlCLENB
Q2UsSUFBQUMsY0FEZixDQUNvQyxJQUFBbUIsY0FEcEMsQ0FFZSxJQUFBbEIsWUFGZjtBQUVrQyxJ
QUFBQyxZQUZsQyxDQUVxRCxJQUNyRCxLQUFBa0IsTUFBQSxDQUFhLElBQ2IsS0FBQXBrQixZQUFB
LENBQW1CLENBQUEsQ0FDbkIsS0FBQW1qQixZQUFBLENBQW1CLEVBQ25CLEtBQUFDLGdCQUFBLENB
QXVCLEVBQ3ZCLEtBQUFDLGdCQUFBLENBQXVCLENBQ3ZCLEtBQUF0dUIsa0JBQUEsQ0FBeUIsSUFW
VixDQTZuQ2pCc3ZCLFFBQVNBLEVBQVUsQ0FBQ0MsQ0FBRCxDQUFRLENBQ3pCLEdBQUkza0MsQ0FB
QTZyQixRQUFKLENBQ0UsS0FBTWlZLEVBQUEsQ0FBaUIsUUFBakIsQ0FBc0Q5akMsQ0FBQTZyQixR
QUF0RCxDQUFOLENBR0Y3ckIsQ0FBQTZyQixRQUFBLENBQXFCOFksQ0FMSSxDQVkzQkMsUUFBU0Es
RUFBc0IsQ0FBQ0MsQ0FBRCxDQUFVclUsQ0FBVixDQUFpQixDQUM5QyxFQUNFcVUsRUFBQW5CLGdC
QUFBLEVBQTJCbFQsQ0FEN0IsT0FFVXFVLENBRlYsQ0FFb0JBLENBQUFOLFFBRnBCLENBRDhDLENB
TWhETyxRQUFTQSxFQUFzQixDQUFDRCxDQUFELENBQVVyVSxDQUFWLENBQWlCMy9CLENBQWpCLENB
QXVCLENBQ3BELEVBQ0VnMEMsRUFBQXBCLGdCQUFBLENBQXdCNXlDLENBQXhCLENBRUEsRUFGaUMy
L0IsQ0FFakMsQ0FBc0MsQ0FBdEMsR0FBSXFVLENBQUFwQixnQkFBQSxDQUF3QjV5QyxDQUF4QixD
QUFKLEVBQ0UsT0FBT2cwQyxDQUFBcEIsZ0JBQUEsQ0FBd0I1eUMsQ0FBeEIsQ0FKWCxPQU1VZzBD
LENBTlYsQ0FNb0JBLENBQUFOLFFBTnBCLENBRG9ELENBY3REUSxRQUFTQSxFQUFZLEVBQUcsRUFF
eEJDLFFBQVNBLEVBQWUsRUFBRyxDQUN6QixJQUFBLENBQU9DLENBQUEvK0MsT0FBUCxDQUFBLENB
Q0UsR0FBSSxDQUNGKytDLENBQUE1NUIsTUFBQSxFQUFBLEVBREUsQ0FFRixNQUFPcmMsQ0FBUCxD
QUFVLENBQ1YwUCxDQUFBLENBQWtCMVAsQ0FBbEIsQ0FEVSxDQUlkZzFDLENBQUEsQ0FBZSxJQVJV
LENBVzNCa0IsUUFBU0EsRUFBa0IsRUFBRyxDQUNQLElBQXJCLEdBQUlsQixDQUFKLEdBQ0VBLENB
REY7QUFDaUI5bEMsQ0FBQWlULE1BQUEsQ0FBZSxRQUFRLEVBQUcsQ0FDdkNuUixDQUFBaE8sT0FB
QSxDQUFrQmd6QyxDQUFsQixDQUR1QyxDQUExQixDQURqQixDQUQ0QixDQXJvQzlCVixDQUFBNTZD
LFVBQUEsQ0FBa0IsQ0FDaEJvQyxZQUFhdzRDLENBREcsQ0ErQmhCeHNCLEtBQU1BLFFBQVEsQ0FB
Q3F0QixDQUFELENBQVVsOEMsQ0FBVixDQUFrQixDQUM5QixJQUFJbThDLENBRUpuOEMsRUFBQSxD
QUFTQSxDQUFULEVBQW1CLElBRWZrOEMsRUFBSixFQUNFQyxDQUNBLENBRFEsSUFBSWQsQ0FDWixD
QUFBYyxDQUFBWCxNQUFBLENBQWMsSUFBQUEsTUFGaEIsR0FNTyxJQUFBYixhQUdMLEdBRkUsSUFB
QUEsYUFFRixDQUZzQlYsQ0FBQSxDQUFzQixJQUF0QixDQUV0QixFQUFBa0MsQ0FBQSxDQUFRLElB
QUksSUFBQXhCLGFBVGQsQ0FXQXdCLEVBQUFiLFFBQUEsQ0FBZ0J0N0MsQ0FDaEJtOEMsRUFBQVos
Y0FBQSxDQUFzQnY3QyxDQUFBczZDLFlBQ2xCdDZDLEVBQUFxNkMsWUFBSixFQUNFcjZDLENBQUFz
NkMsWUFBQUYsY0FDQSxDQURtQytCLENBQ25DLENBQUFuOEMsQ0FBQXM2QyxZQUFBLENBQXFCNkIs
Q0FGdkIsRUFJRW44QyxDQUFBcTZDLFlBSkYsQ0FJdUJyNkMsQ0FBQXM2QyxZQUp2QixDQUk0QzZC
LENBUTVDLEVBQUlELENBQUosRUFBZWw4QyxDQUFmLEVBQXlCLElBQXpCLEdBQStCbThDLENBQUFw
dEIsSUFBQSxDQUFVLFVBQVYsQ0FBc0Jtc0IsQ0FBdEIsQ0FFL0IsT0FBT2lCLEVBaEN1QixDQS9C
aEIsQ0FzTGhCbDdDLE9BQVFBLFFBQVEsQ0FBQ203QyxDQUFELENBQVc5MUIsQ0FBWCxDQUFxQmt1
QixDQUFyQixDQUFxQ0UsQ0FBckMsQ0FBNEQsQ0FDMUUsSUFBSTdxQyxFQUFNZ04sQ0FBQSxDQUFP
dWxDLENBQVAsQ0FFVixJQUFJdnlDLENBQUFrOUIsZ0JBQUosQ0FDRSxNQUFPbDlCLEVBQUFrOUIs
Z0JBQUEsQ0FBb0IsSUFBcEIsQ0FBMEJ6Z0IsQ0FBMUIsQ0FBb0NrdUIsQ0FBcEMsQ0FBb0QzcUMs
Q0FBcEQsQ0FBeUR1eUMsQ0FBekQsQ0FKaUUsS0FNdEV2ekMsRUFBUSxJQU44RCxDQU90RTdHLEVB
QVE2RyxDQUFBc3hDLFdBUDhELENBUXRFa0M7QUFBVSxDQUNScDRDLEdBQUlxaUIsQ0FESSxDQUVS
ZzJCLEtBQU1SLENBRkUsQ0FHUmp5QyxJQUFLQSxDQUhHLENBSVI2OEIsSUFBS2dPLENBQUxoTyxF
QUE4QjBWLENBSnRCLENBS1JHLEdBQUksQ0FBRS9ILENBQUFBLENBTEUsQ0FRZHNHLEVBQUEsQ0FB
aUIsSUFFWm45QyxFQUFBLENBQVcyb0IsQ0FBWCxDQUFMLEdBQ0UrMUIsQ0FBQXA0QyxHQURGLENB
Q2U5RCxDQURmLENBSUs2QixFQUFMLEdBQ0VBLENBREYsQ0FDVTZHLENBQUFzeEMsV0FEVixDQUM2
QixFQUQ3QixDQUtBbjRDLEVBQUFzRyxRQUFBLENBQWMrekMsQ0FBZCxDQUNBVixFQUFBLENBQXVC
LElBQXZCLENBQTZCLENBQTdCLENBRUEsT0FBT2EsU0FBd0IsRUFBRyxDQUNHLENBQW5DLEVBQUl6
NkMsRUFBQSxDQUFZQyxDQUFaLENBQW1CcTZDLENBQW5CLENBQUosRUFDRVYsQ0FBQSxDQUF1Qjl5
QyxDQUF2QixDQUErQixFQUEvQixDQUVGaXlDLEVBQUEsQ0FBaUIsSUFKZSxDQTlCd0MsQ0F0TDVE
LENBcVBoQjlULFlBQWFBLFFBQVEsQ0FBQ3lWLENBQUQsQ0FBbUJuMkIsQ0FBbkIsQ0FBNkIsQ0F3
Q2hEbzJCLFFBQVNBLEVBQWdCLEVBQUcsQ0FDMUJDLENBQUEsQ0FBMEIsQ0FBQSxDQUV0QkMsRUFB
SixFQUNFQSxDQUNBLENBRFcsQ0FBQSxDQUNYLENBQUF0MkIsQ0FBQSxDQUFTdTJCLENBQVQsQ0FB
b0JBLENBQXBCLENBQStCNzRDLENBQS9CLENBRkYsRUFJRXNpQixDQUFBLENBQVN1MkIsQ0FBVCxD
QUFvQjNWLENBQXBCLENBQStCbGpDLENBQS9CLENBUHdCLENBdkM1QixJQUFJa2pDLEVBQWdCeGpC
LEtBQUosQ0FBVSs0QixDQUFBeC9DLE9BQVYsQ0FBaEIsQ0FDSTQvQyxFQUFnQm41QixLQUFKLENB
QVUrNEIsQ0FBQXgvQyxPQUFWLENBRGhCLENBRUk2L0MsRUFBZ0IsRUFGcEIsQ0FHSTk0QyxFQUFP
LElBSFgsQ0FJSTI0QyxFQUEwQixDQUFBLENBSjlCLENBS0lDLEVBQVcsQ0FBQSxDQUVmLElBQUsz
L0MsQ0FBQXcvQyxDQUFBeC9DLE9BQUwsQ0FBOEIsQ0FFNUIsSUFBSTgvQyxFQUFhLENBQUEsQ0FD
akIvNEMsRUFBQWhELFdBQUEsQ0FBZ0IsUUFBUSxFQUFHLENBQ3JCKzdDLENBQUosRUFBZ0J6MkIs
Q0FBQSxDQUFTdTJCLENBQVQsQ0FBb0JBLENBQXBCLENBQStCNzRDLENBQS9CLENBRFMsQ0FBM0Is
Q0FHQSxPQUFPZzVDLFNBQTZCLEVBQUcsQ0FDckNELENBQUEsQ0FBYSxDQUFBLENBRHdCLENBTlgs
Q0FXOUIsR0FBZ0MsQ0FBaEMsR0FBSU4sQ0FBQXgvQyxPQUFKLENBRUUsTUFBTyxLQUFBZ0UsT0FB
QSxDQUFZdzdDLENBQUEsQ0FBaUIsQ0FBakIsQ0FBWixDQUFpQ0MsUUFBeUIsQ0FBQ3ArQyxDQUFE
LENBQVE4NkIsQ0FBUixDQUFrQnZ3QixDQUFsQixDQUF5QixDQUN4RmcwQyxDQUFBLENBQVUsQ0FB
VixDQUFBLENBQWV2K0MsQ0FDZjRvQyxFQUFBLENBQVUsQ0FBVixDQUFBLENBQWU5TixDQUNmOVMs
RUFBQSxDQUFTdTJCLENBQVQsQ0FBcUJ2K0MsQ0FBRCxHQUFXODZCLENBQVgsQ0FBdUJ5akIsQ0FB
dkIsQ0FBbUMzVixDQUF2RCxDQUFrRXIrQixDQUFsRSxDQUh3RixDQUFuRixDQU9UdEwsRUFBQSxD
QUFRay9DLENBQVIsQ0FBMEIsUUFBUSxDQUFDOUssQ0FBRCxDQUFPeHpDLENBQVAsQ0FBVSxDQUMx
QyxJQUFJOCtDLEVBQVlqNUMsQ0FBQS9DLE9BQUEsQ0FBWTB3QyxDQUFaLENBQWtCdUwsUUFBNEIs
Q0FBQzUrQyxDQUFEO0FBQVE4NkIsQ0FBUixDQUFrQixDQUM5RXlqQixDQUFBLENBQVUxK0MsQ0FB
VixDQUFBLENBQWVHLENBQ2Y0b0MsRUFBQSxDQUFVL29DLENBQVYsQ0FBQSxDQUFlaTdCLENBQ1Z1
akIsRUFBTCxHQUNFQSxDQUNBLENBRDBCLENBQUEsQ0FDMUIsQ0FBQTM0QyxDQUFBaEQsV0FBQSxD
QUFnQjA3QyxDQUFoQixDQUZGLENBSDhFLENBQWhFLENBUWhCSSxFQUFBbDZDLEtBQUEsQ0FBbUJx
NkMsQ0FBbkIsQ0FUMEMsQ0FBNUMsQ0F1QkEsT0FBT0QsU0FBNkIsRUFBRyxDQUNyQyxJQUFBLENB
QU9GLENBQUE3L0MsT0FBUCxDQUFBLENBQ0U2L0MsQ0FBQTE2QixNQUFBLEVBQUEsRUFGbUMsQ0Fu
RFMsQ0FyUGxDLENBdVdoQjBZLGlCQUFrQkEsUUFBUSxDQUFDLzlCLENBQUQsQ0FBTXVwQixDQUFO
LENBQWdCLENBb0J4QzYyQixRQUFTQSxFQUEyQixDQUFDQyxDQUFELENBQVMsQ0FDM0Nua0IsQ0FB
QSxDQUFXbWtCLENBRGdDLEtBRTVCMS9DLENBRjRCLENBRXZCMi9DLENBRnVCLENBRWRDLENBRmMs
Q0FFTEMsQ0FHdEMsSUFBSSxDQUFBNzhDLENBQUEsQ0FBWXU0QixDQUFaLENBQUosQ0FBQSxDQUVB
LEdBQUtoNkIsQ0FBQSxDQUFTZzZCLENBQVQsQ0FBTCxDQUtPLEdBQUluOEIsRUFBQSxDQUFZbThC
LENBQVosQ0FBSixDQWdCTCxJQWZJRyxDQWVLajdCLEdBZlFxL0MsQ0FlUnIvQyxHQWJQaTdCLENB
RUEsQ0FGV29rQixDQUVYLENBREFDLENBQ0EsQ0FEWXJrQixDQUFBbjhCLE9BQ1osQ0FEOEIsQ0FD
OUIsQ0FBQXlnRCxDQUFBLEVBV092L0MsRUFSVHcvQyxDQVFTeC9DLENBUkc4NkIsQ0FBQWg4QixP
QVFIa0IsQ0FOTHMvQyxDQU1LdC9DLEdBTlN3L0MsQ0FNVHgvQyxHQUpQdS9DLENBQUEsRUFDQSxD
QUFBdGtCLENBQUFuOEIsT0FBQSxDQUFrQndnRCxDQUFsQixDQUE4QkUsQ0FHdkJ4L0MsRUFBQUEs
Q0FBQUEsQ0FBSSxDQUFiLENBQWdCQSxDQUFoQixDQUFvQncvQyxDQUFwQixDQUErQngvQyxDQUFB
LEVBQS9CLENBQ0VvL0MsQ0FJQSxDQUpVbmtCLENBQUEsQ0FBU2o3QixDQUFULENBSVYsQ0FIQW0v
QyxDQUdBLENBSFVya0IsQ0FBQSxDQUFTOTZCLENBQVQsQ0FHVixDQURBay9DLENBQ0EsQ0FEV0Us
Q0FDWCxHQUR1QkEsQ0FDdkIsRUFEb0NELENBQ3BDLEdBRGdEQSxDQUNoRCxDQUFLRCxDQUFMLEVB
QWlCRSxDQUFqQixHQUE2QkQsQ0FBN0IsR0FDRUksQ0FBQSxFQUNBLENBQUF0a0IsQ0FBQSxDQUFT
ajdCLENBQVQsQ0FBQSxDQUFjbS9DLENBRmhCLENBckJHLEtBMEJBLENBQ0Rsa0IsQ0FBSixHQUFp
QndrQixDQUFqQixHQUVFeGtCLENBRUEsQ0FGV3drQixDQUVYLENBRjRCLEVBRTVCLENBREFILENB
Q0EsQ0FEWSxDQUNaLENBQUFDLENBQUEsRUFKRixDQU9BQyxFQUFBLENBQVksQ0FDWixLQUFLamdE
LENBQUwsR0FBWXU3QixFQUFaLENBQ01BLENBQUFyN0IsZUFBQSxDQUF3QkYsQ0FBeEIsQ0FBSixH
QUNFaWdELENBQUEsRUFJQSxDQUhBTCxDQUdBLENBSFVya0IsQ0FBQSxDQUFTdjdCLENBQVQsQ0FH
VixDQUZBNi9DLENBRUEsQ0FGVW5rQixDQUFBLENBQVMxN0IsQ0FBVCxDQUVWLENBQUlBLENBQUos
R0FBVzA3QixFQUFYLEVBQ0Vpa0IsQ0FDQSxDQURXRSxDQUNYLEdBRHVCQSxDQUN2QixFQURvQ0Qs
Q0FDcEMsR0FEZ0RBLENBQ2hELENBQUtELENBQUwsRUFBaUJFLENBQWpCLEdBQTZCRCxDQUE3QixH
QUNFSSxDQUFBLEVBQ0EsQ0FBQXRrQixDQUFBLENBQVMxN0IsQ0FBVCxDQUFBLENBQWdCNC9DLENB
RmxCLENBRkYsR0FPRUcsQ0FBQSxFQUVBLENBREFya0IsQ0FBQSxDQUFTMTdCLENBQVQsQ0FDQSxD
QURnQjQvQyxDQUNoQixDQUFBSSxDQUFBLEVBVEYsQ0FMRixDQWtCRixJQUFJRCxDQUFKLENBQWdC
RSxDQUFoQixDQUdFLElBQUtqZ0QsQ0FBTCxHQURBZ2dELEVBQUEsRUFDWXRrQixDQUFBQSxDQUFa
LENBQ09ILENBQUFyN0IsZUFBQSxDQUF3QkYsQ0FBeEIsQ0FBTDtDQUNFKy9DLENBQUEsRUFDQSxD
QUFBLE9BQU9ya0IsQ0FBQSxDQUFTMTdCLENBQVQsQ0FGVCxDQWhDQyxDQS9CUCxJQUNNMDdCLEVB
QUosR0FBaUJILENBQWpCLEdBQ0VHLENBQ0EsQ0FEV0gsQ0FDWCxDQUFBeWtCLENBQUEsRUFGRixD
QXFFRixPQUFPQSxFQXhFUCxDQUwyQyxDQW5CN0NQLENBQUF2aUIsVUFBQSxDQUF3QyxDQUFBLENB
RXhDLEtBQUk1MkIsRUFBTyxJQUFYLENBRUlpMUIsQ0FGSixDQUtJRyxDQUxKLENBT0l5a0IsQ0FQ
SixDQVNJQyxFQUF1QyxDQUF2Q0EsQ0FBcUJ4M0IsQ0FBQXJwQixPQVR6QixDQVVJeWdELEVBQWlC
LENBVnJCLENBV0lLLEVBQWlCbG5DLENBQUEsQ0FBTzlaLENBQVAsQ0FBWW9nRCxDQUFaLENBWHJC
LENBWUlLLEVBQWdCLEVBWnBCLENBYUlJLEVBQWlCLEVBYnJCLENBY0lJLEVBQVUsQ0FBQSxDQWRk
LENBZUlQLEVBQVksQ0ErR2hCLE9BQU8sS0FBQXg4QyxPQUFBLENBQVk4OEMsQ0FBWixDQTdCUEUs
UUFBK0IsRUFBRyxDQUM1QkQsQ0FBSixFQUNFQSxDQUNBLENBRFUsQ0FBQSxDQUNWLENBQUExM0Is
Q0FBQSxDQUFTMlMsQ0FBVCxDQUFtQkEsQ0FBbkIsQ0FBNkJqMUIsQ0FBN0IsQ0FGRixFQUlFc2lC
LENBQUEsQ0FBUzJTLENBQVQsQ0FBbUI0a0IsQ0FBbkIsQ0FBaUM3NUMsQ0FBakMsQ0FJRixJQUFJ
ODVDLENBQUosQ0FDRSxHQUFLNytDLENBQUEsQ0FBU2c2QixDQUFULENBQUwsQ0FHTyxHQUFJbjhC
LEVBQUEsQ0FBWW04QixDQUFaLENBQUosQ0FBMkIsQ0FDaEM0a0IsQ0FBQSxDQUFtQm42QixLQUFK
LENBQVV1VixDQUFBaDhCLE9BQVYsQ0FDZixLQUFTLElBQUFrQixFQUFJLENBQWIsQ0FBZ0JBLENB
QWhCLENBQW9CODZCLENBQUFoOEIsT0FBcEIsQ0FBcUNrQixDQUFBLEVBQXJDLENBQ0UwL0MsQ0FB
QSxDQUFhMS9DLENBQWIsQ0FBQSxDQUFrQjg2QixDQUFBLENBQVM5NkIsQ0FBVCxDQUhZLENBQTNC
LElBT0wsS0FBU1QsQ0FBVCxHQURBbWdELEVBQ2dCNWtCLENBREQsRUFDQ0EsQ0FBQUEsQ0FBaEIs
Q0FDTXI3QixFQUFBQyxLQUFBLENBQW9CbzdCLENBQXBCLENBQThCdjdCLENBQTlCLENBQUosR0FD
RW1nRCxDQUFBLENBQWFuZ0QsQ0FBYixDQURGLENBQ3NCdTdCLENBQUEsQ0FBU3Y3QixDQUFULENB
RHRCLENBWEosS0FFRW1nRCxFQUFBLENBQWU1a0IsQ0FaYSxDQTZCM0IsQ0FqSWlDLENBdlcxQixD
QThoQmhCb1csUUFBU0EsUUFBUSxFQUFHLENBQUEsSUFDZDZPLENBRGMsQ0FDUDUvQyxDQURPLENB
Q0FnK0MsQ0FEQSxDQUVkNkIsQ0FGYyxDQUdkbGhELENBSGMsQ0FJZG1oRCxDQUpjLENBSVBDLEVB
QU16RCxDQUpDLENBS1JnQixDQUxRLENBTWQwQyxFQUFXLEVBTkcsQ0FPZEMsQ0FQYyxDQU9FQyxD
QUVwQi9DLEVBQUEsQ0FBVyxTQUFYLENBRUF4bUMsRUFBQThTLGlCQUFBLEVBRUksS0FBSixHQUFh
aFIsQ0FBYixFQUE0QyxJQUE1QyxHQUEyQmdrQyxDQUEzQixHQUdFOWxDLENBQUFpVCxNQUFBSSxP
QUFBLENBQXNCeXlCLENBQXRCLENBQ0EsQ0FBQWdCLENBQUEsRUFKRixDQU9BakIsRUFBQSxDQUFp
QixJQUVqQixHQUFHLENBQ0RzRCxDQUFBLENBQVEsQ0FBQSxDQUdSLEtBRkF4QyxDQUVBLENBckIw
QjdNLElBcUIxQixDQUFPMFAsQ0FBQXhoRCxPQUFQLENBQUEsQ0FBMEIsQ0FDeEIsR0FBSSxDQUNG
dWhELENBQ0EsQ0FEWUMsQ0FBQXI4QixNQUFBLEVBQ1o7QUFBQW84QixDQUFBMzFDLE1BQUE2MUMs
TUFBQSxDQUFzQkYsQ0FBQWpoQixXQUF0QixDQUE0Q2loQixDQUFBbjhCLE9BQTVDLENBRkUsQ0FH
RixNQUFPdGMsQ0FBUCxDQUFVLENBQ1YwUCxDQUFBLENBQWtCMVAsQ0FBbEIsQ0FEVSxDQUdaKzBD
LENBQUEsQ0FBaUIsSUFQTyxDQVUxQixDQUFBLENBQ0EsRUFBRyxDQUNELEdBQUtxRCxDQUFMLENB
QWdCdkMsQ0FBQXpCLFdBQWhCLENBR0UsSUFEQWw5QyxDQUNBLENBRFNraEQsQ0FBQWxoRCxPQUNU
LENBQU9BLENBQUEsRUFBUCxDQUFBLENBQ0UsR0FBSSxDQUlGLEdBSEFpaEQsQ0FHQSxDQUhRQyxD
QUFBLENBQVNsaEQsQ0FBVCxDQUdSLENBQ0UsSUFBS3FCLENBQUwsQ0FBYTQvQyxDQUFBcjBDLElB
QUEsQ0FBVSt4QyxDQUFWLENBQWIsS0FBc0NVLENBQXRDLENBQTZDNEIsQ0FBQTVCLEtBQTdDLEdB
Q00sRUFBQTRCLENBQUEzQixHQUFBLENBQ0lsNUMsRUFBQSxDQUFPL0UsQ0FBUCxDQUFjZytDLENB
QWQsQ0FESixDQUVzQixRQUZ0QixHQUVLLE1BQU9oK0MsRUFGWixFQUVrRCxRQUZsRCxHQUVrQyxN
QUFPZytDLEVBRnpDLEVBR1FwM0MsS0FBQSxDQUFNNUcsQ0FBTixDQUhSLEVBR3dCNEcsS0FBQSxD
QUFNbzNDLENBQU4sQ0FIeEIsQ0FETixDQUtFOEIsQ0FJQSxDQUpRLENBQUEsQ0FJUixDQUhBdEQs
Q0FHQSxDQUhpQm9ELENBR2pCLENBRkFBLENBQUE1QixLQUVBLENBRmE0QixDQUFBM0IsR0FBQSxD
QUFXbjZDLEVBQUEsQ0FBSzlELENBQUwsQ0FBWSxJQUFaLENBQVgsQ0FBK0JBLENBRTVDLENBREE0
L0MsQ0FBQWo2QyxHQUFBLENBQVMzRixDQUFULENBQWtCZytDLENBQUQsR0FBVVIsQ0FBVixDQUEw
Qng5QyxDQUExQixDQUFrQ2crQyxDQUFuRCxDQUEwRFYsQ0FBMUQsQ0FDQSxDQUFVLENBQVYsQ0FB
SXlDLENBQUosR0FDRUUsQ0FFQSxDQUZTLENBRVQsQ0FGYUYsQ0FFYixDQURLQyxDQUFBLENBQVND
LENBQVQsQ0FDTCxHQUR1QkQsQ0FBQSxDQUFTQyxDQUFULENBQ3ZCLENBRDBDLEVBQzFDLEVBQUFE
LENBQUEsQ0FBU0MsQ0FBVCxDQUFBMzdDLEtBQUEsQ0FBc0IsQ0FDcEIrN0MsSUFBS2hoRCxDQUFB
LENBQVd1Z0QsQ0FBQXhYLElBQVgsQ0FBQSxDQUF3QixNQUF4QixFQUFrQ3dYLENBQUF4WCxJQUFB
OStCLEtBQWxDLEVBQW9EczJDLENBQUF4WCxJQUFBbG1DLFNBQUEsRUFBcEQsRUFBNEUwOUMsQ0FB
QXhYLElBRDdELENBRXBCN2hCLE9BQVF2bUIsQ0FGWSxDQUdwQndtQixPQUFRdzNCLENBSFksQ0FB
dEIsQ0FIRixDQVRGLEtBa0JPLElBQUk0QixDQUFKLEdBQWNwRCxDQUFkLENBQThCLENBR25Dc0Qs
Q0FBQSxDQUFRLENBQUEsQ0FDUixPQUFNLENBSjZCLENBdkJyQyxDQThCRixNQUFPcjRDLENBQVAs
Q0FBVSxDQUNWMFAsQ0FBQSxDQUFrQjFQLENBQWxCLENBRFUsQ0FTaEIsR0FBTSxFQUFBNjRDLENB
QUEsQ0FBU2hELENBQUFuQixnQkFBVCxFQUFvQ21CLENBQUF2QixZQUFwQyxFQUNEdUIsQ0FEQyxH
QTVFa0I3TSxJQTRFbEIsRUFDcUI2TSxDQUFBeEIsY0FEckIsQ0FBTixDQUVFLElBQUEsQ0FBT3dC
LENBQVA7QUE5RXNCN00sSUE4RXRCLEVBQStCLEVBQUE2UCxDQUFBLENBQU9oRCxDQUFBeEIsY0FB
UCxDQUEvQixDQUFBLENBQ0V3QixDQUFBLENBQVVBLENBQUFOLFFBL0NiLENBQUgsTUFrRFVNLENB
bERWLENBa0RvQmdELENBbERwQixDQXNEQSxLQUFLUixDQUFMLEVBQWNLLENBQUF4aEQsT0FBZCxH
QUFzQyxDQUFBb2hELENBQUEsRUFBdEMsQ0FFRSxLQXNlTnRuQyxFQUFBNnJCLFFBdGVZLENBc2VT
LElBdGVULENBQUFpWSxDQUFBLENBQWlCLFFBQWpCLENBR0ZELENBSEUsQ0FHRzBELENBSEgsQ0FB
TixDQXZFRCxDQUFILE1BNkVTRixDQTdFVCxFQTZFa0JLLENBQUF4aEQsT0E3RWxCLENBaUZBLEtB
NGRGOFosQ0FBQTZyQixRQTVkRSxDQTRkbUIsSUE1ZG5CLENBQU9pYyxDQUFBNWhELE9BQVAsQ0FB
QSxDQUNFLEdBQUksQ0FDRjRoRCxDQUFBejhCLE1BQUEsRUFBQSxFQURFLENBRUYsTUFBT3JjLENB
QVAsQ0FBVSxDQUNWMFAsQ0FBQSxDQUFrQjFQLENBQWxCLENBRFUsQ0ExR0ksQ0E5aEJKLENBaXJC
aEJ1RixTQUFVQSxRQUFRLEVBQUcsQ0FFbkIsR0FBSThyQixDQUFBLElBQUFBLFlBQUosQ0FBQSxD
QUNBLElBQUlwM0IsRUFBUyxJQUFBczdDLFFBRWIsS0FBQWpOLFdBQUEsQ0FBZ0IsVUFBaEIsQ0FD
QSxLQUFBalgsWUFBQSxDQUFtQixDQUFBLENBRWYsS0FBSixHQUFhcmdCLENBQWIsRUFFRTlCLENB
QUEyUyx1QkFBQSxFQUdGK3pCLEVBQUEsQ0FBdUIsSUFBdkIsQ0FBNkIsQ0FBQyxJQUFBbEIsZ0JB
QTlCLENBQ0EsS0FBU3FFLElBQUFBLENBQVQsR0FBc0IsS0FBQXRFLGdCQUF0QixDQUNFcUIsQ0FB
QSxDQUF1QixJQUF2QixDQUE2QixJQUFBckIsZ0JBQUEsQ0FBcUJzRSxDQUFyQixDQUE3QixDQUE4
REEsQ0FBOUQsQ0FLRTkrQyxFQUFKLEVBQWNBLENBQUFxNkMsWUFBZCxFQUFvQyxJQUFwQyxHQUEw
Q3I2QyxDQUFBcTZDLFlBQTFDLENBQStELElBQUFELGNBQS9ELENBQ0lwNkMsRUFBSixFQUFjQSxD
QUFBczZDLFlBQWQ7QUFBb0MsSUFBcEMsR0FBMEN0NkMsQ0FBQXM2QyxZQUExQyxDQUErRCxJQUFB
aUIsY0FBL0QsQ0FDSSxLQUFBQSxjQUFKLEdBQXdCLElBQUFBLGNBQUFuQixjQUF4QixDQUEyRCxJ
QUFBQSxjQUEzRCxDQUNJLEtBQUFBLGNBQUosR0FBd0IsSUFBQUEsY0FBQW1CLGNBQXhCLENBQTJE
LElBQUFBLGNBQTNELENBR0EsS0FBQWp3QyxTQUFBLENBQWdCLElBQUErakMsUUFBaEIsQ0FBK0Is
SUFBQXRtQyxPQUEvQixDQUE2QyxJQUFBL0gsV0FBN0MsQ0FBK0QsSUFBQTJoQyxZQUEvRCxDQUFr
RnhpQyxDQUNsRixLQUFBNHVCLElBQUEsQ0FBVyxJQUFBOXRCLE9BQVgsQ0FBeUIsSUFBQStsQyxZ
QUF6QixDQUE0QytYLFFBQVEsRUFBRyxDQUFFLE1BQU81K0MsRUFBVCxDQUN2RCxLQUFBbzZDLFlB
QUEsQ0FBbUIsRUFVbkIsS0FBQWUsUUFBQSxDQUFlLElBQUFsQixjQUFmLENBQW9DLElBQUFtQixj
QUFwQyxDQUF5RCxJQUFBbEIsWUFBekQsQ0FDSSxJQUFBQyxZQURKLENBQ3VCLElBQUFrQixNQUR2
QixDQUNvQyxJQUFBckIsV0FEcEMsQ0FDc0QsSUFyQ3RELENBRm1CLENBanJCTCxDQXV2QmhCdUUs
TUFBT0EsUUFBUSxDQUFDL00sQ0FBRCxDQUFPdHZCLENBQVAsQ0FBZSxDQUM1QixNQUFPeEwsRUFB
QSxDQUFPODZCLENBQVAsQ0FBQSxDQUFhLElBQWIsQ0FBbUJ0dkIsQ0FBbkIsQ0FEcUIsQ0F2dkJk
O0FBeXhCaEJyaEIsV0FBWUEsUUFBUSxDQUFDMndDLENBQUQsQ0FBT3R2QixDQUFQLENBQWUsQ0FH
NUJ0TCxDQUFBNnJCLFFBQUwsRUFBNEI2YixDQUFBeGhELE9BQTVCLEVBQ0VnWSxDQUFBaVQsTUFB
QSxDQUFlLFFBQVEsRUFBRyxDQUNwQnUyQixDQUFBeGhELE9BQUosRUFDRThaLENBQUFzNEIsUUFB
QSxFQUZzQixDQUExQixDQU9Gb1AsRUFBQTc3QyxLQUFBLENBQWdCLENBQUNpRyxNQUFPLElBQVIs
Q0FBYzAwQixXQUFZb1UsQ0FBMUIsQ0FBZ0N0dkIsT0FBUUEsQ0FBeEMsQ0FBaEIsQ0FYaUMsQ0F6
eEJuQixDQXV5QmhCb3pCLGFBQWNBLFFBQVEsQ0FBQ3h4QyxDQUFELENBQUssQ0FDekI0NkMsQ0FB
QWo4QyxLQUFBLENBQXFCcUIsQ0FBckIsQ0FEeUIsQ0F2eUJYLENBdzFCaEI4RSxPQUFRQSxRQUFR
LENBQUM0b0MsQ0FBRCxDQUFPLENBQ3JCLEdBQUksQ0FFRixNQURBOEosRUFBQSxDQUFXLFFBQVgs
Q0FDTyxDQUFBLElBQUFpRCxNQUFBLENBQVcvTSxDQUFYLENBRkwsQ0FHRixNQUFPNXJDLENBQVAs
Q0FBVSxDQUNWMFAsQ0FBQSxDQUFrQjFQLENBQWxCLENBRFUsQ0FIWixPQUtVLENBbVFaZ1IsQ0FB
QTZyQixRQUFBLENBQXFCLElBalFqQixJQUFJLENBQ0Y3ckIsQ0FBQXM0QixRQUFBLEVBREUsQ0FF
RixNQUFPdHBDLENBQVAsQ0FBVSxDQUVWLEtBREEwUCxFQUFBLENBQWtCMVAsQ0FBbEIsQ0FDTUEs
Q0FBQUEsQ0FBTixDQUZVLENBSkosQ0FOVyxDQXgxQlAsQ0EwM0JoQjQ4QixZQUFhQSxRQUFRLENB
QUNnUCxDQUFELENBQU8sQ0FLMUJxTixRQUFTQSxFQUFxQixFQUFHLENBQy9CbjJDLENBQUE2MUMs
TUFBQSxDQUFZL00sQ0FBWixDQUQrQixDQUpqQyxJQUFJOW9DLEVBQVEsSUFDWjhvQyxFQUFBLEVB
QVFxSyxDQUFBcDVDLEtBQUEsQ0FBcUJvOEMsQ0FBckIsQ0FDUi9DLEVBQUEsRUFIMEIsQ0ExM0Ja
LENBKzVCaEJsdEIsSUFBS0EsUUFBUSxDQUFDbm5CLENBQUQsQ0FBTzBlLENBQVAsQ0FBaUIsQ0FD
NUIsSUFBSTI0QixFQUFpQixJQUFBMUUsWUFBQSxDQUFpQjN5QyxDQUFqQixDQUNoQnEzQyxFQUFM
LEdBQ0UsSUFBQTFFLFlBQUEsQ0FBaUIzeUMsQ0FBakIsQ0FERixDQUMyQnEzQyxDQUQzQixDQUM0
QyxFQUQ1QyxDQUdBQSxFQUFBcjhDLEtBQUEsQ0FBb0IwakIsQ0FBcEIsQ0FFQSxLQUFJczFCLEVB
QVUsSUFDZCxHQUNPQSxFQUFBcEIsZ0JBQUEsQ0FBd0I1eUMsQ0FBeEIsQ0FHTDtDQUZFZzBDLENB
QUFwQixnQkFBQSxDQUF3QjV5QyxDQUF4QixDQUVGLENBRmtDLENBRWxDLEVBQUFnMEMsQ0FBQXBC
LGdCQUFBLENBQXdCNXlDLENBQXhCLENBQUEsRUFKRixPQUtVZzBDLENBTFYsQ0FLb0JBLENBQUFO
LFFBTHBCLENBT0EsS0FBSXQzQyxFQUFPLElBQ1gsT0FBTyxTQUFRLEVBQUcsQ0FDaEIsSUFBSWs3
QyxFQUFrQkQsQ0FBQS84QyxRQUFBLENBQXVCb2tCLENBQXZCLENBQ0csR0FBekIsR0FBSTQ0QixD
QUFKLEdBQ0VELENBQUEsQ0FBZUMsQ0FBZixDQUNBLENBRGtDLElBQ2xDLENBQUFyRCxDQUFBLENB
QXVCNzNDLENBQXZCLENBQTZCLENBQTdCLENBQWdDNEQsQ0FBaEMsQ0FGRixDQUZnQixDQWhCVSxD
QS81QmQsQ0ErOEJoQnUzQyxNQUFPQSxRQUFRLENBQUN2M0MsQ0FBRCxDQUFPd1ksQ0FBUCxDQUFh
LENBQUEsSUFDdEJ0YSxFQUFRLEVBRGMsQ0FFdEJtNUMsQ0FGc0IsQ0FHdEJwMkMsRUFBUSxJQUhj
LENBSXRCc1csRUFBa0IsQ0FBQSxDQUpJLENBS3RCVixFQUFRLENBQ043VyxLQUFNQSxDQURBLENB
RU53M0MsWUFBYXYyQyxDQUZQLENBR05zVyxnQkFBaUJBLFFBQVEsRUFBRyxDQUFDQSxDQUFBLENB
QWtCLENBQUEsQ0FBbkIsQ0FIdEIsQ0FJTjh2QixlQUFnQkEsUUFBUSxFQUFHLENBQ3pCeHdCLENB
QUFHLGlCQUFBLENBQXlCLENBQUEsQ0FEQSxDQUpyQixDQU9OQSxpQkFBa0IsQ0FBQSxDQVBaLENB
TGMsQ0FjdEJ5Z0MsRUFBZXo3QyxFQUFBLENBQU8sQ0FBQzZhLENBQUQsQ0FBUCxDQUFnQi9lLFNB
QWhCLENBQTJCLENBQTNCLENBZE8sQ0FldEJ2QixDQWZzQixDQWVuQmxCLENBRVAsR0FBRyxDQUNE
Z2lELENBQUEsQ0FBaUJwMkMsQ0FBQTB4QyxZQUFBLENBQWtCM3lDLENBQWxCLENBQWpCLEVBQTRD
OUIsQ0FDNUMyWSxFQUFBMjhCLGFBQUEsQ0FBcUJ2eUMsQ0FDaEIxSyxFQUFBLENBQUksQ0FBVCxL
QUFZbEIsQ0FBWixDQUFxQmdpRCxDQUFBaGlELE9BQXJCLENBQTRDa0IsQ0FBNUMsQ0FBZ0RsQixD
QUFoRCxDQUF3RGtCLENBQUEsRUFBeEQsQ0FHRSxHQUFLOGdELENBQUEsQ0FBZTlnRCxDQUFmLENB
QUwsQ0FNQSxHQUFJLENBRUY4Z0QsQ0FBQSxDQUFlOWdELENBQWYsQ0FBQWlHLE1BQUEsQ0FBd0Is
SUFBeEIsQ0FBOEJpN0MsQ0FBOUIsQ0FGRSxDQUdGLE1BQU90NUMsQ0FBUCxDQUFVLENBQ1YwUCxD
QUFBLENBQWtCMVAsQ0FBbEIsQ0FEVSxDQVRaLElBQ0VrNUMsRUFBQTk4QyxPQUFBLENBQXNCaEUs
Q0FBdEIsQ0FBeUIsQ0FBekIsQ0FFQSxDQURBQSxDQUFBLEVBQ0EsQ0FBQWxCLENBQUEsRUFXSixJ
QUFJa2lCLENBQUosQ0FFRSxNQURBVixFQUFBMjhCLGFBQ08zOEI7QUFEYyxJQUNkQSxDQUFBQSxD
QUdUNVYsRUFBQSxDQUFRQSxDQUFBeXlDLFFBekJQLENBQUgsTUEwQlN6eUMsQ0ExQlQsQ0E0QkE0
VixFQUFBMjhCLGFBQUEsQ0FBcUIsSUFFckIsT0FBTzM4QixFQS9DbUIsQ0EvOEJaLENBdWhDaEI0
dkIsV0FBWUEsUUFBUSxDQUFDem1DLENBQUQsQ0FBT3dZLENBQVAsQ0FBYSxDQUFBLElBRTNCdzdC
LEVBRFM3TSxJQURrQixDQUczQjZQLEVBRlM3UCxJQURrQixDQUkzQnR3QixFQUFRLENBQ043VyxL
QUFNQSxDQURBLENBRU53M0MsWUFMT3JRLElBR0QsQ0FHTkUsZUFBZ0JBLFFBQVEsRUFBRyxDQUN6
Qnh3QixDQUFBRyxpQkFBQSxDQUF5QixDQUFBLENBREEsQ0FIckIsQ0FNTkEsaUJBQWtCLENBQUEs
Q0FOWixDQVNaLElBQUssQ0FaUW13QixJQVlSeUwsZ0JBQUEsQ0FBdUI1eUMsQ0FBdkIsQ0FBTCxD
QUFtQyxNQUFPNlcsRUFNMUMsS0FuQitCLElBZTNCNGdDLEVBQWV6N0MsRUFBQSxDQUFPLENBQUM2
YSxDQUFELENBQVAsQ0FBZ0IvZSxTQUFoQixDQUEyQixDQUEzQixDQWZZLENBZ0JoQnZCLENBaEJn
QixDQWdCYmxCLENBR2xCLENBQVEyK0MsQ0FBUixDQUFrQmdELENBQWxCLENBQUEsQ0FBeUIsQ0FD
dkJuZ0MsQ0FBQTI4QixhQUFBLENBQXFCUSxDQUNyQnhmLEVBQUEsQ0FBWXdmLENBQUFyQixZQUFB
LENBQW9CM3lDLENBQXBCLENBQVosRUFBeUMsRUFDcEN6SixFQUFBLENBQUksQ0FBVCxLQUFZbEIs
Q0FBWixDQUFxQm0vQixDQUFBbi9CLE9BQXJCLENBQXVDa0IsQ0FBdkMsQ0FBMkNsQixDQUEzQyxD
QUFtRGtCLENBQUEsRUFBbkQsQ0FFRSxHQUFLaStCLENBQUEsQ0FBVWorQixDQUFWLENBQUwsQ0FP
QSxHQUFJLENBQ0ZpK0IsQ0FBQSxDQUFVaitCLENBQVYsQ0FBQWlHLE1BQUEsQ0FBbUIsSUFBbkIs
Q0FBeUJpN0MsQ0FBekIsQ0FERSxDQUVGLE1BQU90NUMsQ0FBUCxDQUFVLENBQ1YwUCxDQUFBLENB
QWtCMVAsQ0FBbEIsQ0FEVSxDQVRaLElBQ0VxMkIsRUFBQWo2QixPQUFBLENBQWlCaEUsQ0FBakIs
Q0FBb0IsQ0FBcEIsQ0FFQSxDQURBQSxDQUFBLEVBQ0EsQ0FBQWxCLENBQUEsRUFlSixJQUFNLEVB
QUEyaEQsQ0FBQSxDQUFTaEQsQ0FBQXBCLGdCQUFBLENBQXdCNXlDLENBQXhCLENBQVQsRUFBMENn
MEMsQ0FBQXZCLFlBQTFDLEVBQ0R1QixDQURDLEdBekNLN00sSUF5Q0wsRUFDcUI2TSxDQUFBeEIs
Y0FEckIsQ0FBTixDQUVFLElBQUEsQ0FBT3dCLENBQVAsR0EzQ1M3TSxJQTJDVCxFQUErQixFQUFB
NlAsQ0FBQTtBQUFPaEQsQ0FBQXhCLGNBQVAsQ0FBL0IsQ0FBQSxDQUNFd0IsQ0FBQSxDQUFVQSxD
QUFBTixRQTFCUyxDQStCekI3OEIsQ0FBQTI4QixhQUFBLENBQXFCLElBQ3JCLE9BQU8zOEIsRUFu
RHdCLENBdmhDakIsQ0E4a0NsQixLQUFJMUgsRUFBYSxJQUFJc2tDLENBQXJCLENBR0lvRCxFQUFh
MW5DLENBQUF1b0MsYUFBYmIsQ0FBdUMsRUFIM0MsQ0FJSUksRUFBa0I5bkMsQ0FBQXdvQyxrQkFB
bEJWLENBQWlELEVBSnJELENBS0k3QyxFQUFrQmpsQyxDQUFBeW9DLGtCQUFsQnhELENBQWlELEVB
RXJELE9BQU9qbEMsRUEzcUNvRCxDQURqRCxDQTNCZ0IsQ0Fxd0M5QjlILFFBQVNBLEdBQXFCLEVB
QUcsQ0FBQSxJQUMzQm1kLEVBQTZCLG1DQURGLENBRTdCRyxFQUE4Qiw0Q0FrQmhDLEtBQUFILDJC
QUFBLENBQWtDQyxRQUFRLENBQUNDLENBQUQsQ0FBUyxDQUNqRCxNQUFJM3JCLEVBQUEsQ0FBVTJy
QixDQUFWLENBQUosRUFDRUYsQ0FDTyxDQURzQkUsQ0FDdEIsQ0FBQSxJQUZULEVBSU9GLENBTDBD
LENBeUJuRCxLQUFBRyw0QkFBQSxDQUFtQ0MsUUFBUSxDQUFDRixDQUFELENBQVMsQ0FDbEQsTUFB
STNyQixFQUFBLENBQVUyckIsQ0FBVixDQUFKLEVBQ0VDLENBQ08sQ0FEdUJELENBQ3ZCLENBQUEs
SUFGVCxFQUlPQyxDQUwyQyxDQVFwRCxLQUFBak4sS0FBQSxDQUFZQyxRQUFRLEVBQUcsQ0FDckIs
TUFBT2tnQyxTQUFvQixDQUFDQyxDQUFELENBQU1DLENBQU4sQ0FBZSxDQUN4QyxJQUFJQyxFQUFR
RCxDQUFBLENBQVVwekIsQ0FBVixDQUF3Q0gsQ0FBcEQsQ0FDSXl6QixDQUNKQSxFQUFBLENBQWdC
MWEsRUFBQSxDQUFXdWEsQ0FBWCxDQUFBMTRCLEtBQ2hCLE9BQXNCLEVBQXRCLEdBQUk2NEIsQ0FB
SixFQUE2QkEsQ0FBQTc4QyxNQUFBLENBQW9CNDhDLENBQXBCLENBQTdCLENBR09GLENBSFAsQ0FD
UyxTQURUO0FBQ3FCRyxDQUxtQixDQURyQixDQXJEUSxDQTJGakNDLFFBQVNBLEdBQWEsQ0FBQ0Ms
Q0FBRCxDQUFVLENBQzlCLEdBQWdCLE1BQWhCLEdBQUlBLENBQUosQ0FDRSxNQUFPQSxFQUNGLElB
QUkxaUQsQ0FBQSxDQUFTMGlELENBQVQsQ0FBSixDQUF1QixDQUs1QixHQUE4QixFQUE5QixDQUFJ
QSxDQUFBNzlDLFFBQUEsQ0FBZ0IsS0FBaEIsQ0FBSixDQUNFLEtBQU04OUMsR0FBQSxDQUFXLFFB
QVgsQ0FDc0RELENBRHRELENBQU4sQ0FHRkEsQ0FBQSxDQUFVRSxFQUFBLENBQWdCRixDQUFoQixD
QUFBMzVDLFFBQUEsQ0FDWSxRQURaLENBQ3NCLElBRHRCLENBQUFBLFFBQUEsQ0FFWSxLQUZaLENB
RW1CLFlBRm5CLENBR1YsT0FBTyxLQUFJckQsTUFBSixDQUFXLEdBQVgsQ0FBaUJnOUMsQ0FBakIs
Q0FBMkIsR0FBM0IsQ0FacUIsQ0FhdkIsR0FBSWovQyxFQUFBLENBQVNpL0MsQ0FBVCxDQUFKLENB
SUwsTUFBTyxLQUFJaDlDLE1BQUosQ0FBVyxHQUFYLENBQWlCZzlDLENBQUExOUMsT0FBakIsQ0FB
a0MsR0FBbEMsQ0FFUCxNQUFNMjlDLEdBQUEsQ0FBVyxVQUFYLENBQU4sQ0F0QjRCLENBNEJoQ0Us
UUFBU0EsR0FBYyxDQUFDQyxDQUFELENBQVcsQ0FDaEMsSUFBSUMsRUFBbUIsRUFDbkJ6L0MsRUFB
QSxDQUFVdy9DLENBQVYsQ0FBSixFQUNFNWlELENBQUEsQ0FBUTRpRCxDQUFSLENBQWtCLFFBQVEs
Q0FBQ0osQ0FBRCxDQUFVLENBQ2xDSyxDQUFBeDlDLEtBQUEsQ0FBc0JrOUMsRUFBQSxDQUFjQyxD
QUFkLENBQXRCLENBRGtDLENBQXBDLENBSUYsT0FBT0ssRUFQeUIsQ0E4RWxDNW9DLFFBQVNBLEdB
QW9CLEVBQUcsQ0FDOUIsSUFBQTZvQyxhQUFBLENBQW9CQSxFQURVLEtBSTFCQyxFQUF1QixDQUFD
LE1BQUQsQ0FKRyxDQUsxQkMsRUFBdUIsRUF3QjNCLEtBQUFELHFCQUFBLENBQTRCRSxRQUFRLENB
QUNsaUQsQ0FBRCxDQUFRLENBQ3RDb0IsU0FBQXpDLE9BQUosR0FDRXFqRCxDQURGLENBQ3lCSixF
QUFBLENBQWU1aEQsQ0FBZixDQUR6QixDQUdBLE9BQU9naUQsRUFKbUMsQ0FrQzVDLEtBQUFDLHFC
QUFBLENBQTRCRSxRQUFRLENBQUNuaUQsQ0FBRCxDQUFRLENBQ3RDb0IsU0FBQXpDLE9BQUo7Q0FD
RXNqRCxDQURGLENBQ3lCTCxFQUFBLENBQWU1aEQsQ0FBZixDQUR6QixDQUdBLE9BQU9paUQsRUFK
bUMsQ0FPNUMsS0FBQWpoQyxLQUFBLENBQVksQ0FBQyxXQUFELENBQWMsUUFBUSxDQUFDdUQsQ0FB
RCxDQUFZLENBVzVDNjlCLFFBQVNBLEVBQVEsQ0FBQ1gsQ0FBRCxDQUFVeFYsQ0FBVixDQUFxQixD
QUNwQyxNQUFnQixNQUFoQixHQUFJd1YsQ0FBSixDQUNTemMsRUFBQSxDQUFnQmlILENBQWhCLENB
RFQsQ0FJUyxDQUFFLENBQUF3VixDQUFBbG1DLEtBQUEsQ0FBYTB3QixDQUFBdmpCLEtBQWIsQ0FM
eUIsQ0ErQnRDMjVCLFFBQVNBLEVBQWtCLENBQUNDLENBQUQsQ0FBTyxDQUNoQyxJQUFJQyxFQUFh
QSxRQUErQixDQUFDQyxDQUFELENBQWUsQ0FDN0QsSUFBQUMscUJBQUEsQ0FBNEJDLFFBQVEsRUFB
RyxDQUNyQyxNQUFPRixFQUQ4QixDQURzQixDQUszREYsRUFBSixHQUNFQyxDQUFBcGdELFVBREYs
Q0FDeUIsSUFBSW1nRCxDQUQ3QixDQUdBQyxFQUFBcGdELFVBQUFsQixRQUFBLENBQStCMGhELFFB
QW1CLEVBQUcsQ0FDbkQsTUFBTyxLQUFBRixxQkFBQSxFQUQ0QyxDQUdyREYsRUFBQXBnRCxVQUFB
RCxTQUFBLENBQWdDMGdELFFBQW9CLEVBQUcsQ0FDckQsTUFBTyxLQUFBSCxxQkFBQSxFQUFBdmdE
LFNBQUEsRUFEOEMsQ0FHdkQsT0FBT3FnRCxFQWZ5QixDQXhDbEMsSUFBSU0sRUFBZ0JBLFFBQXNC
LENBQUNqN0MsQ0FBRCxDQUFPLENBQy9DLEtBQU04NUMsR0FBQSxDQUFXLFFBQVgsQ0FBTixDQUQr
QyxDQUk3Q245QixFQUFBRCxJQUFBLENBQWMsV0FBZCxDQUFKLEdBQ0V1K0IsQ0FERixDQUNrQnQr
QixDQUFBaFosSUFBQSxDQUFjLFdBQWQsQ0FEbEIsQ0FONEMsS0E0RHhDdTNDLEVBQXlCVCxDQUFB
LEVBNURlLENBNkR4Q1UsRUFBUyxFQUViQSxFQUFBLENBQU9oQixFQUFBMW5CLEtBQVAsQ0FBQSxD
QUE0QmdvQixDQUFBLENBQW1CUyxDQUFuQixDQUM1QkMsRUFBQSxDQUFPaEIsRUFBQWlCLElBQVAs
Q0FBQSxDQUEyQlgsQ0FBQSxDQUFtQlMsQ0FBbkIsQ0FDM0JDLEVBQUEsQ0FBT2hCLEVBQUFrQixJ
QUFQLENBQUE7QUFBMkJaLENBQUEsQ0FBbUJTLENBQW5CLENBQzNCQyxFQUFBLENBQU9oQixFQUFB
bUIsR0FBUCxDQUFBLENBQTBCYixDQUFBLENBQW1CUyxDQUFuQixDQUMxQkMsRUFBQSxDQUFPaEIs
RUFBQXpuQixhQUFQLENBQUEsQ0FBb0MrbkIsQ0FBQSxDQUFtQlUsQ0FBQSxDQUFPaEIsRUFBQWtC
LElBQVAsQ0FBbkIsQ0F5R3BDLE9BQU8sQ0FBRUUsUUF0RlRBLFFBQWdCLENBQUNsbUMsQ0FBRCxD
QUFPdWxDLENBQVAsQ0FBcUIsQ0FDbkMsSUFBSVksRUFBZUwsQ0FBQXpqRCxlQUFBLENBQXNCMmQs
Q0FBdEIsQ0FBQSxDQUE4QjhsQyxDQUFBLENBQU85bEMsQ0FBUCxDQUE5QixDQUE2QyxJQUNoRSxJ
QUFLbW1DLENBQUFBLENBQUwsQ0FDRSxLQUFNMUIsR0FBQSxDQUFXLFVBQVgsQ0FFRnprQyxDQUZF
LENBRUl1bEMsQ0FGSixDQUFOLENBSUYsR0FBcUIsSUFBckIsR0FBSUEsQ0FBSixFQUE2QkEsQ0FB
N0IsR0FBOENsa0QsQ0FBOUMsRUFBNEUsRUFBNUUsR0FBMkRra0QsQ0FBM0QsQ0FDRSxNQUFPQSxF
QUlULElBQTRCLFFBQTVCLEdBQUksTUFBT0EsRUFBWCxDQUNFLEtBQU1kLEdBQUEsQ0FBVyxPQUFY
LENBRUZ6a0MsQ0FGRSxDQUFOLENBSUYsTUFBTyxLQUFJbW1DLENBQUosQ0FBZ0JaLENBQWhCLENB
akI0QixDQXNGOUIsQ0FDRTVhLFdBMUJUQSxRQUFtQixDQUFDM3FCLENBQUQsQ0FBT29tQyxDQUFQ
LENBQXFCLENBQ3RDLEdBQXFCLElBQXJCLEdBQUlBLENBQUosRUFBNkJBLENBQTdCLEdBQThDL2tE
LENBQTlDLEVBQTRFLEVBQTVFLEdBQTJEK2tELENBQTNELENBQ0UsTUFBT0EsRUFFVCxLQUFJOStD
LEVBQWV3K0MsQ0FBQXpqRCxlQUFBLENBQXNCMmQsQ0FBdEIsQ0FBQSxDQUE4QjhsQyxDQUFBLENB
QU85bEMsQ0FBUCxDQUE5QixDQUE2QyxJQUNoRSxJQUFJMVksQ0FBSixFQUFtQjgrQyxDQUFuQixX
QUEyQzkrQyxFQUEzQyxDQUNFLE1BQU84K0MsRUFBQVoscUJBQUEsRUFLVCxJQUFJeGxDLENBQUos
R0FBYThrQyxFQUFBem5CLGFBQWIsQ0FBd0MsQ0F6SXBDMlIsSUFBQUEsRUFBWXBGLEVBQUEsQ0Ew
SW1Cd2MsQ0ExSVJuaEQsU0FBQSxFQUFYLENBQVorcEMsQ0FDQXBzQyxDQURBb3NDLENBQ0d4aEIs
Q0FESHdoQixDQUNNcVgsRUFBVSxDQUFBLENBRWZ6akQsRUFBQSxDQUFJLENBQVQsS0FBWTRxQixD
QUFaLENBQWdCdTNCLENBQUFyakQsT0FBaEIsQ0FBNkNrQixDQUE3QyxDQUFpRDRxQixDQUFqRCxD
QUFvRDVxQixDQUFBLEVBQXBELENBQ0UsR0FBSXVpRCxDQUFBLENBQVNKLENBQUEsQ0FBcUJuaUQs
Q0FBckIsQ0FBVCxDQUFrQ29zQyxDQUFsQyxDQUFKLENBQWtELENBQ2hEcVgsQ0FBQSxDQUFVLENB
QUEsQ0FDVixNQUZnRCxDQUtwRCxHQUFJQSxDQUFKLENBRUUsSUFBS3pqRCxDQUFPO0FBQUgsQ0FB
RyxDQUFBNHFCLENBQUEsQ0FBSXczQixDQUFBdGpELE9BQWhCLENBQTZDa0IsQ0FBN0MsQ0FBaUQ0
cUIsQ0FBakQsQ0FBb0Q1cUIsQ0FBQSxFQUFwRCxDQUNFLEdBQUl1aUQsQ0FBQSxDQUFTSCxDQUFB
LENBQXFCcGlELENBQXJCLENBQVQsQ0FBa0Nvc0MsQ0FBbEMsQ0FBSixDQUFrRCxDQUNoRHFYLENB
QUEsQ0FBVSxDQUFBLENBQ1YsTUFGZ0QsQ0E4SHBELEdBeEhLQSxDQXdITCxDQUNFLE1BQU9ELEVB
RVAsTUFBTTNCLEdBQUEsQ0FBVyxVQUFYLENBRUYyQixDQUFBbmhELFNBQUEsRUFGRSxDQUFOLENB
Sm9DLENBUWpDLEdBQUkrYSxDQUFKLEdBQWE4a0MsRUFBQTFuQixLQUFiLENBQ0wsTUFBT3dvQixF
QUFBLENBQWNRLENBQWQsQ0FFVCxNQUFNM0IsR0FBQSxDQUFXLFFBQVgsQ0FBTixDQXRCc0MsQ0F5
QmpDLENBRUV6Z0QsUUFsRFRBLFFBQWdCLENBQUNvaUQsQ0FBRCxDQUFlLENBQzdCLE1BQUlBLEVB
QUosV0FBNEJQLEVBQTVCLENBQ1NPLENBQUFaLHFCQUFBLEVBRFQsQ0FHU1ksQ0FKb0IsQ0FnRHhC
LENBNUtxQyxDQUFsQyxDQXRFa0IsQ0FraEJoQ3JxQyxRQUFTQSxHQUFZLEVBQUcsQ0FDdEIsSUFB
SW9WLEVBQVUsQ0FBQSxDQWFkLEtBQUFBLFFBQUEsQ0FBZW0xQixRQUFRLENBQUN2akQsQ0FBRCxD
QUFRLENBQ3pCb0IsU0FBQXpDLE9BQUosR0FDRXl2QixDQURGLENBQ1ksQ0FBRXB1QixDQUFBQSxD
QURkLENBR0EsT0FBT291QixFQUpzQixDQXNEL0IsS0FBQXBOLEtBQUEsQ0FBWSxDQUFDLFFBQUQs
Q0FBVyxjQUFYLENBQTJCLFFBQVEsQ0FDakN6SSxDQURpQyxDQUN2QlUsQ0FEdUIsQ0FDVCxDQUdw
QyxHQUFJbVYsQ0FBSixFQUFzQixDQUF0QixDQUFleUUsRUFBZixDQUNFLEtBQU02dUIsR0FBQSxD
QUFXLFVBQVgsQ0FBTixDQU1GLElBQUk4QixFQUFNMytDLEVBQUEsQ0FBWWs5QyxFQUFaLENBYVZ5
QixFQUFBQyxVQUFBLENBQWdCQyxRQUFRLEVBQUcsQ0FDekIsTUFBT3QxQixFQURrQixDQUczQm8x
QixFQUFBTCxRQUFBLENBQWNscUMsQ0FBQWtxQyxRQUNkSyxFQUFBNWIsV0FBQSxDQUFpQjN1QixD
QUFBMnVCLFdBQ2pCNGIsRUFBQXZpRCxRQUFBLENBQWNnWSxDQUFBaFksUUFFVG10QixFQUFMLEdB
Q0VvMUIsQ0FBQUwsUUFDQTtBQURjSyxDQUFBNWIsV0FDZCxDQUQrQitiLFFBQVEsQ0FBQzFtQyxD
QUFELENBQU9qZCxDQUFQLENBQWMsQ0FBRSxNQUFPQSxFQUFULENBQ3JELENBQUF3akQsQ0FBQXZp
RCxRQUFBLENBQWNhLEVBRmhCLENBd0JBMGhELEVBQUFJLFFBQUEsQ0FBY0MsUUFBbUIsQ0FBQzVt
QyxDQUFELENBQU9vMkIsQ0FBUCxDQUFhLENBQzVDLElBQUloM0IsRUFBUzlELENBQUEsQ0FBTzg2
QixDQUFQLENBQ2IsT0FBSWgzQixFQUFBNmYsUUFBSixFQUFzQjdmLENBQUExTSxTQUF0QixDQUNT
ME0sQ0FEVCxDQUdTOUQsQ0FBQSxDQUFPODZCLENBQVAsQ0FBYSxRQUFRLENBQUNyekMsQ0FBRCxD
QUFRLENBQ2xDLE1BQU93akQsRUFBQTViLFdBQUEsQ0FBZTNxQixDQUFmLENBQXFCamQsQ0FBckIs
Q0FEMkIsQ0FBN0IsQ0FMbUMsQ0F0RFYsS0FvVGhDdUcsRUFBUWk5QyxDQUFBSSxRQXBUd0IsQ0Fx
VGhDaGMsRUFBYTRiLENBQUE1YixXQXJUbUIsQ0FzVGhDdWIsRUFBVUssQ0FBQUwsUUFFZGxrRCxF
QUFBLENBQVE4aUQsRUFBUixDQUFzQixRQUFRLENBQUMrQixDQUFELENBQVl4NkMsQ0FBWixDQUFr
QixDQUM5QyxJQUFJeTZDLEVBQVF2Z0QsQ0FBQSxDQUFVOEYsQ0FBVixDQUNaazZDLEVBQUEsQ0FB
SWpwQyxFQUFBLENBQVUsV0FBVixDQUF3QndwQyxDQUF4QixDQUFKLENBQUEsQ0FBc0MsUUFBUSxD
QUFDMVEsQ0FBRCxDQUFPLENBQ25ELE1BQU85c0MsRUFBQSxDQUFNdTlDLENBQU4sQ0FBaUJ6USxD
QUFqQixDQUQ0QyxDQUdyRG1RLEVBQUEsQ0FBSWpwQyxFQUFBLENBQVUsY0FBVixDQUEyQndwQyxD
QUEzQixDQUFKLENBQUEsQ0FBeUMsUUFBUSxDQUFDL2pELENBQUQsQ0FBUSxDQUN2RCxNQUFPNG5D
LEVBQUEsQ0FBV2tjLENBQVgsQ0FBc0I5akQsQ0FBdEIsQ0FEZ0QsQ0FHekR3akQsRUFBQSxDQUFJ
anBDLEVBQUEsQ0FBVSxXQUFWLENBQXdCd3BDLENBQXhCLENBQUosQ0FBQSxDQUFzQyxRQUFRLENB
QUMvakQsQ0FBRCxDQUFRLENBQ3BELE1BQU9takQsRUFBQSxDQUFRVyxDQUFSLENBQW1COWpELENB
QW5CLENBRDZDLENBUlIsQ0FBaEQsQ0FhQSxPQUFPd2pELEVBclU2QixDQUQxQixDQXBFVSxDQTRa
eEJwcUMsUUFBU0EsR0FBZ0IsRUFBRyxDQUMxQixJQUFBNEgsS0FBQSxDQUFZLENBQUMsU0FBRCxD
QUFZLFdBQVosQ0FBeUIsUUFBUSxDQUFDbkgsQ0FBRCxDQUFVNUMsQ0FBVixDQUFxQixDQUFBLElB
QzVEK3NDLEVBQWUsRUFENkMsQ0FFNURDLEVBQ0UzaUQsQ0FBQSxDQUFNLENBQUMsZUFBQWlhLEtB
QUEsQ0FBcUIvWCxDQUFBLENBQVUwZ0QsQ0FBQ3JxQyxDQUFBc3FDLFVBQUREO0FBQXNCLEVBQXRC
QSxXQUFWLENBQXJCLENBQUQsRUFBeUUsRUFBekUsRUFBNkUsQ0FBN0UsQ0FBTixDQUgwRCxDQUk1
REUsRUFBUSxRQUFBLy9DLEtBQUEsQ0FBYzYvQyxDQUFDcnFDLENBQUFzcUMsVUFBREQsRUFBc0Is
RUFBdEJBLFdBQWQsQ0FKb0QsQ0FLNUQ3bEQsRUFBVzRZLENBQUEsQ0FBVSxDQUFWLENBQVg1WSxF
QUEyQixFQUxpQyxDQU01RGdtRCxDQU40RCxDQU81REMsRUFBYywyQkFQOEMsQ0FRNURDLEVBQVls
bUQsQ0FBQTJuQyxLQUFadWUsRUFBNkJsbUQsQ0FBQTJuQyxLQUFBeDBCLE1BUitCLENBUzVEZ3pD
LEVBQWMsQ0FBQSxDQVQ4QyxDQVU1REMsRUFBYSxDQUFBLENBR2pCLElBQUlGLENBQUosQ0FBZSxD
QUNiLElBQVN2aEQsSUFBQUEsQ0FBVCxHQUFpQnVoRCxFQUFqQixDQUNFLEdBQUk3L0MsQ0FBSixD
QUFZNC9DLENBQUEvb0MsS0FBQSxDQUFpQnZZLENBQWpCLENBQVosQ0FBb0MsQ0FDbENxaEQsQ0FB
QSxDQUFlMy9DLENBQUEsQ0FBTSxDQUFOLENBQ2YyL0MsRUFBQSxDQUFlQSxDQUFBcDdCLE9BQUEs
Q0FBb0IsQ0FBcEIsQ0FBdUIsQ0FBdkIsQ0FBQXRPLFlBQUEsRUFBZixDQUF5RDBwQyxDQUFBcDdC
LE9BQUEsQ0FBb0IsQ0FBcEIsQ0FDekQsTUFIa0MsQ0FPakNvN0IsQ0FBTCxHQUNFQSxDQURGLENB
Q2tCLGVBRGxCLEVBQ3FDRSxFQURyQyxFQUNtRCxRQURuRCxDQUlBQyxFQUFBLENBQWMsQ0FBRyxF
QUFDLFlBQUQsRUFBaUJELEVBQWpCLEVBQWdDRixDQUFoQyxDQUErQyxZQUEvQyxFQUErREUsRUFB
L0QsQ0FDakJFLEVBQUEsQ0FBYyxDQUFHLEVBQUMsV0FBRCxFQUFnQkYsRUFBaEIsRUFBK0JGLENB
QS9CLENBQThDLFdBQTlDLEVBQTZERSxFQUE3RCxDQUViTixFQUFBQSxDQUFKLEVBQWlCTyxDQUFq
QixFQUFrQ0MsQ0FBbEMsR0FDRUQsQ0FDQSxDQURjemxELENBQUEsQ0FBU3dsRCxDQUFBRyxpQkFB
VCxDQUNkLENBQUFELENBQUEsQ0FBYTFsRCxDQUFBLENBQVN3bEQsQ0FBQUksZ0JBQVQsQ0FGZixD
QWhCYSxDQXVCZixNQUFPLENBVUxuOUIsUUFBUyxFQUFHQSxDQUFBM04sQ0FBQTJOLFFBQUgsRUFB
c0JvOUIsQ0FBQS9xQyxDQUFBMk4sUUFBQW85QixVQUF0QixFQUErRCxDQUEvRCxDQUFxRFgsQ0FB
ckQsRUFBc0VHLENBQXRFLENBVkosQ0FZTFMsU0FBVUEsUUFBUSxDQUFDMWtDLENBQUQsQ0FBUSxD
QU14QixHQUFjLE9BQWQ7QUFBSUEsQ0FBSixFQUFpQyxFQUFqQyxFQUF5QjBTLEVBQXpCLENBQXFD
LE1BQU8sQ0FBQSxDQUU1QyxJQUFJendCLENBQUEsQ0FBWTRoRCxDQUFBLENBQWE3akMsQ0FBYixD
QUFaLENBQUosQ0FBc0MsQ0FDcEMsSUFBSTJrQyxFQUFTem1ELENBQUFnZCxjQUFBLENBQXVCLEtB
QXZCLENBQ2Iyb0MsRUFBQSxDQUFhN2pDLENBQWIsQ0FBQSxDQUFzQixJQUF0QixDQUE2QkEsQ0FB
N0IsR0FBc0Mya0MsRUFGRixDQUt0QyxNQUFPZCxFQUFBLENBQWE3akMsQ0FBYixDQWJpQixDQVpy
QixDQTJCTDdQLElBQUtBLEVBQUEsRUEzQkEsQ0E0QkwrekMsYUFBY0EsQ0E1QlQsQ0E2QkxHLFlB
QWFBLENBN0JSLENBOEJMQyxXQUFZQSxDQTlCUCxDQStCTFIsUUFBU0EsQ0EvQkosQ0FwQ3lELENB
QXRELENBRGMsQ0E4RjVCenFDLFFBQVNBLEdBQXdCLEVBQUcsQ0FDbEMsSUFBQXdILEtBQUEsQ0FB
WSxDQUFDLGdCQUFELENBQW1CLE9BQW5CLENBQTRCLElBQTVCLENBQWtDLE1BQWxDLENBQTBDLFFB
QVEsQ0FBQzNILENBQUQsQ0FBaUIxQixDQUFqQixDQUF3QmdCLENBQXhCLENBQTRCSSxDQUE1QixD
QUFrQyxDQUM5RmdzQyxRQUFTQSxFQUFlLENBQUNDLENBQUQsQ0FBTUMsQ0FBTixDQUEwQixDQUNo
REYsQ0FBQUcscUJBQUEsRUFPS25tRCxFQUFBLENBQVNpbUQsQ0FBVCxDQUFMLEVBQXVCM3JDLENB
QUE5TixJQUFBLENBQW1CeTVDLENBQW5CLENBQXZCLEdBQ0VBLENBREYsQ0FDUWpzQyxDQUFBb3ND
LHNCQUFBLENBQTJCSCxDQUEzQixDQURSLENBSUEsS0FBSTdqQixFQUFvQnhwQixDQUFBdXBCLFNB
QXBCQyxFQUFzQ3hwQixDQUFBdXBCLFNBQUFDLGtCQUV0Q25pQyxFQUFBLENBQVFtaUMsQ0FBUixD
QUFKLENBQ0VBLENBREYsQ0FDc0JBLENBQUFyeEIsT0FBQSxDQUF5QixRQUFRLENBQUNzMUMsQ0FB
RCxDQUFjLENBQ2pFLE1BQU9BLEVBQVAsR0FBdUJubEIsRUFEMEMsQ0FBL0MsQ0FEdEIsQ0FJV2tC
LENBSlgsR0FJaUNsQixFQUpqQyxHQUtFa0IsQ0FMRixDQUtzQixJQUx0QixDQWFBLE9BQU94cEIs
RUFBQXBNLElBQUEsQ0FBVXk1QyxDQUFWLENBTFdLLENBQ2hCN2hDLE1BQU9uSyxDQURTZ3NDLENB
RWhCbGtCLGtCQUFtQkEsQ0FGSGtrQixDQUtYLENBQUEsQ0FDSixTQURJLENBQUEsQ0FDTyxRQUFR
LEVBQUcsQ0FDckJOLENBQUFHLHFCQUFBLEVBRHFCLENBRGxCLENBQUF6c0IsS0FBQSxDQUlDLFFB
QVEsQ0FBQ3dKLENBQUQsQ0FBVyxDQUN2QjVvQixDQUFBdUksSUFBQSxDQUFtQm9qQyxDQUFuQjtB
QUF3Qi9pQixDQUFBdjNCLEtBQXhCLENBQ0EsT0FBT3UzQixFQUFBdjNCLEtBRmdCLENBSnBCLENB
U1A0NkMsUUFBb0IsQ0FBQ3BqQixDQUFELENBQU8sQ0FDekIsR0FBSytpQixDQUFBQSxDQUFMLENB
Q0UsS0FBTTU0QixHQUFBLENBQWUsUUFBZixDQUNKMjRCLENBREksQ0FDQzlpQixDQUFBbEIsT0FE
RCxDQUNja0IsQ0FBQWdDLFdBRGQsQ0FBTixDQUdGLE1BQU92ckIsRUFBQXdwQixPQUFBLENBQVVE
LENBQVYsQ0FMa0IsQ0FUcEIsQ0EzQnlDLENBNkNsRDZpQixDQUFBRyxxQkFBQSxDQUF1QyxDQUV2
QyxPQUFPSCxFQWhEdUYsQ0FBcEYsQ0FEc0IsQ0FxRHBDcnJDLFFBQVNBLEdBQXFCLEVBQUcsQ0FD
L0IsSUFBQXNILEtBQUEsQ0FBWSxDQUFDLFlBQUQsQ0FBZSxVQUFmLENBQTJCLFdBQTNCLENBQ1As
UUFBUSxDQUFDdkksQ0FBRCxDQUFlOUIsQ0FBZixDQUEyQndCLENBQTNCLENBQXNDLENBNkdqRCxN
QXBHa0JvdEMsQ0FjTixhQUFlQyxRQUFRLENBQUNqaUQsQ0FBRCxDQUFVMDdCLENBQVYsQ0FBc0J3
bUIsQ0FBdEIsQ0FBc0MsQ0FDbkV2NUIsQ0FBQUEsQ0FBVzNvQixDQUFBbWlELHVCQUFBLENBQStC
LFlBQS9CLENBQ2YsS0FBSUMsRUFBVSxFQUNkMW1ELEVBQUEsQ0FBUWl0QixDQUFSLENBQWtCLFFB
QVEsQ0FBQytSLENBQUQsQ0FBVSxDQUNsQyxJQUFJMm5CLEVBQWMvNkMsRUFBQXRILFFBQUEsQ0FB
Z0IwNkIsQ0FBaEIsQ0FBQXZ6QixLQUFBLENBQThCLFVBQTlCLENBQ2RrN0MsRUFBSixFQUNFM21E
LENBQUEsQ0FBUTJtRCxDQUFSLENBQXFCLFFBQVEsQ0FBQ0MsQ0FBRCxDQUFjLENBQ3JDSixDQUFK
LENBRU1waEQsQ0FEVW85QyxJQUFJaDlDLE1BQUpnOUMsQ0FBVyxTQUFYQSxDQUF1QkUsRUFBQSxD
QUFnQjFpQixDQUFoQixDQUF2QndpQixDQUFxRCxhQUFyREEsQ0FDVnA5QyxNQUFBLENBQWF3aEQs
Q0FBYixDQUZOLEVBR0lGLENBQUFyaEQsS0FBQSxDQUFhMjVCLENBQWIsQ0FISixDQU0wQyxFQU4x
QyxFQU1NNG5CLENBQUFqaUQsUUFBQSxDQUFvQnE3QixDQUFwQixDQU5OLEVBT0kwbUIsQ0FBQXJo
RCxLQUFBLENBQWEyNUIsQ0FBYixDQVJxQyxDQUEzQyxDQUhnQyxDQUFwQyxDQWlCQSxPQUFPMG5C
LEVBcEJnRSxDQWR2REosQ0FpRE4sV0FBYU8sUUFBUSxDQUFDdmlELENBQUQ7QUFBVTA3QixDQUFW
LENBQXNCd21CLENBQXRCLENBQXNDLENBRXJFLElBREEsSUFBSU0sRUFBVyxDQUFDLEtBQUQsQ0FB
USxVQUFSLENBQW9CLE9BQXBCLENBQWYsQ0FDU3A3QixFQUFJLENBQWIsQ0FBZ0JBLENBQWhCLENB
QW9CbzdCLENBQUFwbkQsT0FBcEIsQ0FBcUMsRUFBRWdzQixDQUF2QyxDQUEwQyxDQUd4QyxJQUFJ
ak0sRUFBV25iLENBQUFzWixpQkFBQSxDQURBLEdBQ0EsQ0FETWtwQyxDQUFBLENBQVNwN0IsQ0FB
VCxDQUNOLENBRG9CLE9BQ3BCLEVBRk84NkIsQ0FBQU8sQ0FBaUIsR0FBakJBLENBQXVCLElBRTlC
LEVBRGdELEdBQ2hELENBRHNEL21CLENBQ3RELENBRG1FLElBQ25FLENBQ2YsSUFBSXZnQixDQUFB
L2YsT0FBSixDQUNFLE1BQU8rZixFQUwrQixDQUYyQixDQWpEckQ2bUMsQ0FvRU4sWUFBY1UsUUFB
USxFQUFHLENBQ25DLE1BQU85dEMsRUFBQTBQLElBQUEsRUFENEIsQ0FwRW5CMDlCLENBaUZOLFlB
QWNXLFFBQVEsQ0FBQ3IrQixDQUFELENBQU0sQ0FDbENBLENBQUosR0FBWTFQLENBQUEwUCxJQUFB
LEVBQVosR0FDRTFQLENBQUEwUCxJQUFBLENBQWNBLENBQWQsQ0FDQSxDQUFBcFAsQ0FBQXM0QixR
QUFBLEVBRkYsQ0FEc0MsQ0FqRnRCd1UsQ0FnR04sV0FBYVksUUFBUSxDQUFDMTlCLENBQUQsQ0FB
VyxDQUMxQzlSLENBQUE0UixnQ0FBQSxDQUF5Q0UsQ0FBekMsQ0FEMEMsQ0FoRzFCODhCLENBVCtC
LENBRHZDLENBRG1CLENBbUhqQzNyQyxRQUFTQSxHQUFnQixFQUFHLENBQzFCLElBQUFvSCxLQUFB
LENBQVksQ0FBQyxZQUFELENBQWUsVUFBZixDQUEyQixJQUEzQixDQUFpQyxLQUFqQyxDQUF3Qyxt
QkFBeEMsQ0FDUCxRQUFRLENBQUN2SSxDQUFELENBQWU5QixDQUFmLENBQTJCZ0MsQ0FBM0IsQ0FB
aUNFLENBQWpDLENBQXdDMUIsQ0FBeEMsQ0FBMkQsQ0FrQ3RFOHRCLFFBQVNBLEVBQU8sQ0FBQ3Qv
QixDQUFELENBQUtta0IsQ0FBTCxDQUFZb2YsQ0FBWixDQUF5QixDQUNsQzdwQyxDQUFBLENBQVdz
RyxDQUFYLENBQUwsR0FDRXVqQyxDQUVBLENBRmNwZixDQUVkLENBREFBLENBQ0EsQ0FEUW5rQixD
QUNSLENBQUFBLENBQUEsQ0FBSzlELENBSFAsQ0FEdUMsS0FPbkNpZ0IsRUF6cmdCRDNnQixFQUFB
NUIsS0FBQSxDQXlyZ0JrQjZCLFNBenJnQmxCLENBeXJnQjZCeUUsQ0F6cmdCN0IsQ0FrcmdCb0Ms
Q0FRbkMwakMsRUFBYWxuQyxDQUFBLENBQVU2bUMsQ0FBVixDQUFiSyxFQUF1QyxDQUFDTCxDQVJM
LENBU25DM0UsRUFBVzNhLENBQUMyZixDQUFBLENBQVkxd0IsQ0FBWixDQUFrQkYsQ0FBbkJpUixP
QUFBLEVBVHdCO0FBVW5Dd1osRUFBVW1CLENBQUFuQixRQVZ5QixDQVduQ3JaLENBRUpBLEVBQUEs
Q0FBWXBULENBQUFpVCxNQUFBLENBQWUsUUFBUSxFQUFHLENBQ3BDLEdBQUksQ0FDRjJhLENBQUFD
LFFBQUEsQ0FBaUI3K0IsQ0FBQUcsTUFBQSxDQUFTLElBQVQsQ0FBZWdjLENBQWYsQ0FBakIsQ0FE
RSxDQUVGLE1BQU9yYSxDQUFQLENBQVUsQ0FDVjg4QixDQUFBcEMsT0FBQSxDQUFnQjE2QixDQUFo
QixDQUNBLENBQUEwUCxDQUFBLENBQWtCMVAsQ0FBbEIsQ0FGVSxDQUZaLE9BTVEsQ0FDTixPQUFP
MitDLENBQUEsQ0FBVWhqQixDQUFBaWpCLFlBQVYsQ0FERCxDQUlIOWMsQ0FBTCxFQUFnQjl3QixD
QUFBaE8sT0FBQSxFQVhvQixDQUExQixDQVlUcWYsQ0FaUyxDQWNac1osRUFBQWlqQixZQUFBLENB
QXNCdDhCLENBQ3RCcThCLEVBQUEsQ0FBVXI4QixDQUFWLENBQUEsQ0FBdUJ3YSxDQUV2QixPQUFP
bkIsRUE5QmdDLENBaEN6QyxJQUFJZ2pCLEVBQVksRUE4RWhCbmhCLEVBQUFqYixPQUFBLENBQWlC
czhCLFFBQVEsQ0FBQ2xqQixDQUFELENBQVUsQ0FDakMsTUFBSUEsRUFBSixFQUFlQSxDQUFBaWpC
LFlBQWYsR0FBc0NELEVBQXRDLEVBQ0VBLENBQUEsQ0FBVWhqQixDQUFBaWpCLFlBQVYsQ0FBQWxr
QixPQUFBLENBQXNDLFVBQXRDLENBRU8sQ0FEUCxPQUFPaWtCLENBQUEsQ0FBVWhqQixDQUFBaWpC
LFlBQVYsQ0FDQSxDQUFBMXZDLENBQUFpVCxNQUFBSSxPQUFBLENBQXNCb1osQ0FBQWlqQixZQUF0
QixDQUhULEVBS08sQ0FBQSxDQU4wQixDQVNuQyxPQUFPcGhCLEVBekYrRCxDQUQ1RCxDQURjLENB
OEo1QjRCLFFBQVNBLEdBQVUsQ0FBQ2hmLENBQUQsQ0FBTSxDQUduQmdMLEVBQUosR0FHRTB6QixD
QUFBbG9DLGFBQUEsQ0FBNEIsTUFBNUIsQ0FBb0NxSyxDQUFwQyxDQUNBLENBQUFBLENBQUEsQ0FB
TzY5QixDQUFBNzlCLEtBSlQsQ0FPQTY5QixFQUFBbG9DLGFBQUEsQ0FBNEIsTUFBNUIsQ0FBb0Nx
SyxDQUFwQyxDQUdBLE9BQU8sQ0FDTEEsS0FBTTY5QixDQUFBNzlCLEtBREQsQ0FFTG9lLFNBQVV5
ZixDQUFBemYsU0FBQSxDQUEwQnlmLENBQUF6ZixTQUFBaC9CLFFBQUEsQ0FBZ0MsSUFBaEMsQ0FB
c0MsRUFBdEMsQ0FBMUIsQ0FBc0UsRUFGM0UsQ0FHTG1YLEtBQU1zbkMsQ0FBQXRuQyxLQUhEO0FB
SUw2dEIsT0FBUXlaLENBQUF6WixPQUFBLENBQXdCeVosQ0FBQXpaLE9BQUFobEMsUUFBQSxDQUE4
QixLQUE5QixDQUFxQyxFQUFyQyxDQUF4QixDQUFtRSxFQUp0RSxDQUtMbWUsS0FBTXNnQyxDQUFB
dGdDLEtBQUEsQ0FBc0JzZ0MsQ0FBQXRnQyxLQUFBbmUsUUFBQSxDQUE0QixJQUE1QixDQUFrQyxF
QUFsQyxDQUF0QixDQUE4RCxFQUwvRCxDQU1Mc2tDLFNBQVVtYSxDQUFBbmEsU0FOTCxDQU9MRSxL
QUFNaWEsQ0FBQWphLEtBUEQsQ0FRTE0sU0FBaUQsR0FBdkMsR0FBQzJaLENBQUEzWixTQUFBOW5D
LE9BQUEsQ0FBK0IsQ0FBL0IsQ0FBRCxDQUNOeWhELENBQUEzWixTQURNLENBRU4sR0FGTSxDQUVB
MlosQ0FBQTNaLFNBVkwsQ0FiZ0IsQ0FrQ3pCNUgsUUFBU0EsR0FBZSxDQUFDd2hCLENBQUQsQ0FB
YSxDQUMvQm5xQyxDQUFBQSxDQUFVdGQsQ0FBQSxDQUFTeW5ELENBQVQsQ0FBRCxDQUF5QjNmLEVB
QUEsQ0FBVzJmLENBQVgsQ0FBekIsQ0FBa0RBLENBQy9ELE9BQVFucUMsRUFBQXlxQixTQUFSLEdB
QTRCMmYsRUFBQTNmLFNBQTVCLEVBQ1F6cUIsQ0FBQTRDLEtBRFIsR0FDd0J3bkMsRUFBQXhuQyxL
QUhXLENBK0NyQ25GLFFBQVNBLEdBQWUsRUFBRyxDQUN6QixJQUFBa0gsS0FBQSxDQUFZaGYsRUFB
QSxDQUFRNUQsQ0FBUixDQURhLENBYTNCc29ELFFBQVNBLEdBQWMsQ0FBQ3p2QyxDQUFELENBQVks
Q0FLakMwdkMsUUFBU0EsRUFBc0IsQ0FBQ3BsRCxDQUFELENBQU0sQ0FDbkMsR0FBSSxDQUNGLE1B
QU95RyxtQkFBQSxDQUFtQnpHLENBQW5CLENBREwsQ0FFRixNQUFPa0csQ0FBUCxDQUFVLENBQ1Ys
TUFBT2xHLEVBREcsQ0FIdUIsQ0FKckMsSUFBSXFrQyxFQUFjM3VCLENBQUEsQ0FBVSxDQUFWLENB
QWQydUIsRUFBOEIsRUFBbEMsQ0FDSWdoQixFQUFjLEVBRGxCLENBRUlDLEVBQW1CLEVBVXZCLE9B
QU8sU0FBUSxFQUFHLENBQUEsSUFDWkMsQ0FEWSxDQUNDQyxDQURELENBQ1NsbkQsQ0FEVCxDQUNZ
OEQsQ0FEWixDQUNtQjJGLENBQy9CMDlDLEVBQUFBLENBQXNCcGhCLENBQUFtaEIsT0FBdEJDLEVB
QTRDLEVBRWhELElBQUlBLENBQUosR0FBNEJILENBQTVCLENBS0UsSUFKQUEsQ0FJSyxDQUpjRyxD
QUlkLENBSExGLENBR0ssQ0FIU0QsQ0FBQXhqRCxNQUFBLENBQXVCLElBQXZCLENBR1QsQ0FGTHVq
RCxDQUVLLENBRlMsRUFFVCxDQUFBL21ELENBQUEsQ0FBSSxDQUFULENBQVlBLENBQVosQ0FBZ0Jp
bkQsQ0FBQW5vRCxPQUFoQixDQUFvQ2tCLENBQUEsRUFBcEMsQ0FDRWtuRCxDQUVBO0FBRlNELENB
QUEsQ0FBWWpuRCxDQUFaLENBRVQsQ0FEQThELENBQ0EsQ0FEUW9qRCxDQUFBbmpELFFBQUEsQ0FB
ZSxHQUFmLENBQ1IsQ0FBWSxDQUFaLENBQUlELENBQUosR0FDRTJGLENBSUEsQ0FKT3E5QyxDQUFB
LENBQXVCSSxDQUFBMXlCLFVBQUEsQ0FBaUIsQ0FBakIsQ0FBb0Ixd0IsQ0FBcEIsQ0FBdkIsQ0FJ
UCxDQUFJaWpELENBQUEsQ0FBWXQ5QyxDQUFaLENBQUosR0FBMEJoTCxDQUExQixHQUNFc29ELENB
QUEsQ0FBWXQ5QyxDQUFaLENBREYsQ0FDc0JxOUMsQ0FBQSxDQUF1QkksQ0FBQTF5QixVQUFBLENB
QWlCMXdCLENBQWpCLENBQXlCLENBQXpCLENBQXZCLENBRHRCLENBTEYsQ0FXSixPQUFPaWpELEVB
dkJTLENBYmUsQ0EwQ25DdHNDLFFBQVNBLEdBQXNCLEVBQUcsQ0FDaEMsSUFBQTBHLEtBQUEsQ0FB
WTBsQyxFQURvQixDQXdHbENwdkMsUUFBU0EsR0FBZSxDQUFDck4sQ0FBRCxDQUFXLENBa0JqQzIw
QixRQUFTQSxFQUFRLENBQUN0MUIsQ0FBRCxDQUFPK0UsQ0FBUCxDQUFnQixDQUMvQixHQUFJMU4s
Q0FBQSxDQUFTMkksQ0FBVCxDQUFKLENBQW9CLENBQ2xCLElBQUkyOUMsRUFBVSxFQUNkaG9ELEVB
QUEsQ0FBUXFLLENBQVIsQ0FBYyxRQUFRLENBQUN3RyxDQUFELENBQVMxUSxDQUFULENBQWMsQ0FD
bEM2bkQsQ0FBQSxDQUFRN25ELENBQVIsQ0FBQSxDQUFldy9CLENBQUEsQ0FBU3gvQixDQUFULENB
QWMwUSxDQUFkLENBRG1CLENBQXBDLENBR0EsT0FBT20zQyxFQUxXLENBT2xCLE1BQU9oOUMsRUFB
QW9FLFFBQUEsQ0FBaUIvRSxDQUFqQixDQXpCRTQ5QyxRQXlCRixDQUFnQzc0QyxDQUFoQyxDQVJz
QixDQVdqQyxJQUFBdXdCLFNBQUEsQ0FBZ0JBLENBRWhCLEtBQUE1ZCxLQUFBLENBQVksQ0FBQyxX
QUFELENBQWMsUUFBUSxDQUFDdUQsQ0FBRCxDQUFZLENBQzVDLE1BQU8sU0FBUSxDQUFDamIsQ0FB
RCxDQUFPLENBQ3BCLE1BQU9pYixFQUFBaFosSUFBQSxDQUFjakMsQ0FBZCxDQWhDRTQ5QyxRQWdD
RixDQURhLENBRHNCLENBQWxDLENBb0JadG9CLEVBQUEsQ0FBUyxVQUFULENBQXFCdW9CLEVBQXJC
LENBQ0F2b0IsRUFBQSxDQUFTLE1BQVQsQ0FBaUJ3b0IsRUFBakIsQ0FDQXhvQixFQUFBLENBQVMs
UUFBVCxDQUFtQnlvQixFQUFuQixDQUNBem9CLEVBQUEsQ0FBUyxNQUFULENBQWlCMG9CLEVBQWpC
LENBQ0Exb0IsRUFBQSxDQUFTLFNBQVQsQ0FBb0Iyb0IsRUFBcEIsQ0FDQTNvQixFQUFBLENBQVMs
V0FBVCxDQUFzQjRvQixFQUF0QixDQUNBNW9CLEVBQUEsQ0FBUyxRQUFULENBQW1CNm9CLEVBQW5C
LENBQ0E3b0IsRUFBQSxDQUFTLFNBQVQsQ0FBb0I4b0IsRUFBcEIsQ0FDQTlvQixFQUFBLENBQVMs
V0FBVCxDQUFzQitvQixFQUF0QixDQTNEaUMsQ0E2TG5DTixRQUFTQSxHQUFZLEVBQUcsQ0FDdEIs
TUFBTyxTQUFRLENBQUMzakQsQ0FBRDtBQUFRdTdCLENBQVIsQ0FBb0Iyb0IsQ0FBcEIsQ0FBZ0Ms
Q0FDN0MsR0FBSyxDQUFBcHBELEVBQUEsQ0FBWWtGLENBQVosQ0FBTCxDQUF5QixDQUN2QixHQUFh
LElBQWIsRUFBSUEsQ0FBSixDQUNFLE1BQU9BLEVBRVAsTUFBTW5GLEVBQUEsQ0FBTyxRQUFQLENB
QUEsQ0FBaUIsVUFBakIsQ0FBaUVtRixDQUFqRSxDQUFOLENBSnFCLENBVXpCLElBQUlta0QsQ0FF
SixRQUpxQkMsRUFBQUMsQ0FBaUI5b0IsQ0FBakI4b0IsQ0FJckIsRUFDRSxLQUFLLFVBQUwsQ0FF
RSxLQUNGLE1BQUssU0FBTCxDQUNBLEtBQUssTUFBTCxDQUNBLEtBQUssUUFBTCxDQUNBLEtBQUss
UUFBTCxDQUNFRixDQUFBLENBQXNCLENBQUEsQ0FFeEIsTUFBSyxRQUFMLENBRUVHLENBQUEsQ0FB
Y0MsRUFBQSxDQUFrQmhwQixDQUFsQixDQUE4QjJvQixDQUE5QixDQUEwQ0MsQ0FBMUMsQ0FDZCxN
QUNGLFNBQ0UsTUFBT25rRCxFQWZYLENBa0JBLE1BQU8waEIsTUFBQWpqQixVQUFBMk4sT0FBQXZR
LEtBQUEsQ0FBNEJtRSxDQUE1QixDQUFtQ3NrRCxDQUFuQyxDQS9Cc0MsQ0FEekIsQ0FxQ3hCQyxR
QUFTQSxHQUFpQixDQUFDaHBCLENBQUQsQ0FBYTJvQixDQUFiLENBQXlCQyxDQUF6QixDQUE4QyxD
QUN0RSxJQUFJSyxFQUF3QnZuRCxDQUFBLENBQVNzK0IsQ0FBVCxDQUF4QmlwQixFQUFpRCxHQUFq
REEsRUFBd0RqcEIsRUFHekMsRUFBQSxDQUFuQixHQUFJMm9CLENBQUosQ0FDRUEsQ0FERixDQUNl
N2lELEVBRGYsQ0FFWTFGLENBQUEsQ0FBV3VvRCxDQUFYLENBRlosR0FHRUEsQ0FIRixDQUdlQSxR
QUFRLENBQUNPLENBQUQsQ0FBU0MsQ0FBVCxDQUFtQixDQUN0QyxHQUFJaG1ELENBQUEsQ0FBWSts
RCxDQUFaLENBQUosQ0FFRSxNQUFPLENBQUEsQ0FFVCxJQUFnQixJQUFoQixHQUFLQSxDQUFMLEVB
QXVDLElBQXZDLEdBQTBCQyxDQUExQixDQUVFLE1BQU9ELEVBQVAsR0FBa0JDLENBRXBCLElBQUl6
bkQsQ0FBQSxDQUFTeW5ELENBQVQsQ0FBSixFQUEyQnpuRCxDQUFBLENBQVN3bkQsQ0FBVCxDQUEz
QixFQUFnRCxDQUFBbG1ELEVBQUEsQ0FBa0JrbUQsQ0FBbEIsQ0FBaEQsQ0FFRSxNQUFPLENBQUEs
Q0FHVEEsRUFBQSxDQUFTM2tELENBQUEsQ0FBVSxFQUFWLENBQWUya0QsQ0FBZixDQUNUQyxFQUFB
LENBQVc1a0QsQ0FBQSxDQUFVLEVBQVYsQ0FBZTRrRCxDQUFmLENBQ1gsT0FBcUMsRUFBckMsR0FB
T0QsQ0FBQXZrRCxRQUFBLENBQWV3a0QsQ0FBZixDQWhCK0IsQ0FIMUMsQ0E4QkEsT0FQY0osU0FB
USxDQUFDSyxDQUFELENBQU8sQ0FDM0IsTUFBSUgsRUFBSixFQUE4QixDQUFBdm5ELENBQUEsQ0FB
UzBuRCxDQUFULENBQTlCLENBQ1NDLEVBQUEsQ0FBWUQsQ0FBWjtBQUFrQnBwQixDQUFBbDlCLEVB
QWxCLENBQWdDNmxELENBQWhDLENBQTRDLENBQUEsQ0FBNUMsQ0FEVCxDQUdPVSxFQUFBLENBQVlE
LENBQVosQ0FBa0JwcEIsQ0FBbEIsQ0FBOEIyb0IsQ0FBOUIsQ0FBMENDLENBQTFDLENBSm9CLENB
M0J5QyxDQXFDeEVTLFFBQVNBLEdBQVcsQ0FBQ0gsQ0FBRCxDQUFTQyxDQUFULENBQW1CUixDQUFu
QixDQUErQkMsQ0FBL0IsQ0FBb0RVLENBQXBELENBQTBFLENBQzVGLElBQUlDLEVBQWFWLEVBQUEs
Q0FBaUJLLENBQWpCLENBQWpCLENBQ0lNLEVBQWVYLEVBQUEsQ0FBaUJNLENBQWpCLENBRW5CLElB
QXNCLFFBQXRCLEdBQUtLLENBQUwsRUFBMkQsR0FBM0QsR0FBb0NMLENBQUF0akQsT0FBQSxDQUFn
QixDQUFoQixDQUFwQyxDQUNFLE1BQU8sQ0FBQ3dqRCxFQUFBLENBQVlILENBQVosQ0FBb0JDLENB
QUEvekIsVUFBQSxDQUFtQixDQUFuQixDQUFwQixDQUEyQ3V6QixDQUEzQyxDQUF1REMsQ0FBdkQs
Q0FDSCxJQUFJN29ELENBQUEsQ0FBUW1wRCxDQUFSLENBQUosQ0FHTCxNQUFPQSxFQUFBOWlDLEtB
QUEsQ0FBWSxRQUFRLENBQUNnakMsQ0FBRCxDQUFPLENBQ2hDLE1BQU9DLEdBQUEsQ0FBWUQsQ0FB
WixDQUFrQkQsQ0FBbEIsQ0FBNEJSLENBQTVCLENBQXdDQyxDQUF4QyxDQUR5QixDQUEzQixDQUtU
LFFBQVFXLENBQVIsRUFDRSxLQUFLLFFBQUwsQ0FDRSxJQUFJcHBELENBQ0osSUFBSXlvRCxDQUFK
LENBQXlCLENBQ3ZCLElBQUt6b0QsQ0FBTCxHQUFZK29ELEVBQVosQ0FDRSxHQUF1QixHQUF2QixH
QUFLL29ELENBQUEwRixPQUFBLENBQVcsQ0FBWCxDQUFMLEVBQStCd2pELEVBQUEsQ0FBWUgsQ0FB
QSxDQUFPL29ELENBQVAsQ0FBWixDQUF5QmdwRCxDQUF6QixDQUFtQ1IsQ0FBbkMsQ0FBK0MsQ0FB
QSxDQUEvQyxDQUEvQixDQUNFLE1BQU8sQ0FBQSxDQUdYLE9BQU9XLEVBQUEsQ0FBdUIsQ0FBQSxD
QUF2QixDQUErQkQsRUFBQSxDQUFZSCxDQUFaLENBQW9CQyxDQUFwQixDQUE4QlIsQ0FBOUIsQ0FB
MEMsQ0FBQSxDQUExQyxDQU5mLENBT2xCLEdBQXFCLFFBQXJCLEdBQUlhLENBQUosQ0FBK0IsQ0FD
cEMsSUFBS3JwRCxDQUFMLEdBQVlncEQsRUFBWixDQUVFLEdBRElNLENBQ0EsQ0FEY04sQ0FBQSxD
QUFTaHBELENBQVQsQ0FDZCxDQUFBLENBQUFDLENBQUEsQ0FBV3FwRCxDQUFYLENBQUEsRUFBMkIs
Q0FBQXRtRCxDQUFBLENBQVlzbUQsQ0FBWixDQUEzQixHQUlBQyxDQUVDLENBRjBCLEdBRTFCLEdB
RmtCdnBELENBRWxCLENBQUEsQ0FBQWtwRCxFQUFBLENBRFdLLENBQUFDLENBQW1CVCxDQUFuQlMs
Q0FBNEJULENBQUEsQ0FBTy9vRCxDQUFQLENBQ3ZDLENBQXVCc3BELENBQXZCLENBQW9DZCxDQUFw
QyxDQUFnRGUsQ0FBaEQsQ0FBa0VBLENBQWxFLENBTkQsQ0FBSixDQU9FLE1BQU8sQ0FBQSxDQUdY
LE9BQU8sQ0FBQSxDQWI2QixDQWVwQyxNQUFPZixFQUFBLENBQVdPLENBQVgsQ0FBbUJDLENBQW5C
LENBR1gsTUFBSyxVQUFMLENBQ0UsTUFBTyxDQUFBLENBQ1QsU0FDRSxNQUFPUixFQUFBLENBQVdP
LENBQVgsQ0FBbUJDLENBQW5CLENBL0JYLENBZDRGLENBa0Q5Rk4sUUFBU0EsR0FBZ0IsQ0FBQzlo
RCxDQUFELENBQU0sQ0FDN0IsTUFBZ0IsS0FBVDtBQUFDQSxDQUFELENBQWlCLE1BQWpCLENBQTBC
LE1BQU9BLEVBRFgsQ0F5RC9CbWhELFFBQVNBLEdBQWMsQ0FBQzBCLENBQUQsQ0FBVSxDQUMvQixJ
QUFJQyxFQUFVRCxDQUFBaGYsZUFDZCxPQUFPLFNBQVEsQ0FBQ2tmLENBQUQsQ0FBU0MsQ0FBVCxD
QUF5QkMsQ0FBekIsQ0FBdUMsQ0FDaEQ3bUQsQ0FBQSxDQUFZNG1ELENBQVosQ0FBSixHQUNFQSxD
QURGLENBQ21CRixDQUFBcGUsYUFEbkIsQ0FJSXRvQyxFQUFBLENBQVk2bUQsQ0FBWixDQUFKLEdB
Q0VBLENBREYsQ0FDaUJILENBQUE5ZSxTQUFBLENBQWlCLENBQWpCLENBQUFHLFFBRGpCLENBS0Es
T0FBa0IsS0FBWCxFQUFDNGUsQ0FBRCxDQUNEQSxDQURDLENBRURHLEVBQUEsQ0FBYUgsQ0FBYixD
QUFxQkQsQ0FBQTllLFNBQUEsQ0FBaUIsQ0FBakIsQ0FBckIsQ0FBMEM4ZSxDQUFBL2UsVUFBMUMs
Q0FBNkQrZSxDQUFBaGYsWUFBN0QsQ0FBa0ZtZixDQUFsRixDQUFBbmhELFFBQUEsQ0FDVSxTQURW
LENBQ3FCa2hELENBRHJCLENBWjhDLENBRnZCLENBMEVqQ3ZCLFFBQVNBLEdBQVksQ0FBQ29CLENB
QUQsQ0FBVSxDQUM3QixJQUFJQyxFQUFVRCxDQUFBaGYsZUFDZCxPQUFPLFNBQVEsQ0FBQ3NmLENB
QUQsQ0FBU0YsQ0FBVCxDQUF1QixDQUdwQyxNQUFrQixLQUFYLEVBQUNFLENBQUQsQ0FDREEsQ0FE
QyxDQUVERCxFQUFBLENBQWFDLENBQWIsQ0FBcUJMLENBQUE5ZSxTQUFBLENBQWlCLENBQWpCLENB
QXJCLENBQTBDOGUsQ0FBQS9lLFVBQTFDLENBQTZEK2UsQ0FBQWhmLFlBQTdELENBQ2FtZixDQURi
LENBTDhCLENBRlQsQ0FhL0JDLFFBQVNBLEdBQVksQ0FBQ0MsQ0FBRCxDQUFTbjBDLENBQVQsQ0FB
a0JvMEMsQ0FBbEIsQ0FBNEJDLENBQTVCLENBQXdDSixDQUF4QyxDQUFzRCxDQUN6RSxHQUFJdG9E
LENBQUEsQ0FBU3dvRCxDQUFULENBQUosQ0FBc0IsTUFBTyxFQUU3QixLQUFJRyxFQUFzQixDQUF0
QkEsQ0FBYUgsQ0FDakJBLEVBQUEsQ0FBUzF4QixJQUFBOHhCLElBQUEsQ0FBU0osQ0FBVCxDQUVU
LEtBQUlLLEVBQXdCQyxRQUF4QkQsR0FBYUwsQ0FDakIsSUFBS0ssQ0FBQUEsQ0FBTCxFQUFvQixD
QUFBRSxRQUFBLENBQVNQLENBQVQsQ0FBcEIsQ0FBc0MsTUFBTyxFQVA0QixLQVNyRVEsRUFBU1Is
Q0FBVFEsQ0FBa0IsRUFUbUQsQ0FVckVDLEVBQWUsRUFWc0QsQ0FXckVDLEVBQWMsQ0FBQSxDQVh1
RCxDQVlyRXhoRCxFQUFRLEVBRVJtaEQsRUFBSixHQUFnQkksQ0FBaEIsQ0FBK0IsUUFBL0IsQ0FF
QTtHQUFLSixDQUFBQSxDQUFMLEVBQTRDLEVBQTVDLEdBQW1CRyxDQUFBL2xELFFBQUEsQ0FBZSxH
QUFmLENBQW5CLENBQStDLENBQzdDLElBQUljLEVBQVFpbEQsQ0FBQWpsRCxNQUFBLENBQWEscUJB
QWIsQ0FDUkEsRUFBSixFQUF5QixHQUF6QixFQUFhQSxDQUFBLENBQU0sQ0FBTixDQUFiLEVBQWdD
QSxDQUFBLENBQU0sQ0FBTixDQUFoQyxDQUEyQ3VrRCxDQUEzQyxDQUEwRCxDQUExRCxDQUNFRSxD
QURGLENBQ1csQ0FEWCxFQUdFUyxDQUNBLENBRGVELENBQ2YsQ0FBQUUsQ0FBQSxDQUFjLENBQUEs
Q0FKaEIsQ0FGNkMsQ0FVL0MsR0FBS0wsQ0FBTCxFQUFvQkssQ0FBcEIsQ0E2Q3FCLENBQW5CLENB
QUlaLENBQUosRUFBaUMsQ0FBakMsQ0FBd0JFLENBQXhCLEdBQ0VTLENBQ0EsQ0FEZVQsQ0FBQVcs
UUFBQSxDQUFlYixDQUFmLENBQ2YsQ0FBQUUsQ0FBQSxDQUFTWSxVQUFBLENBQVdILENBQVgsQ0FG
WCxDQTdDRixLQUFpQyxDQUMzQkksQ0FBQUEsQ0FBY3JyRCxDQUFDZ3JELENBQUF0bUQsTUFBQSxD
QUFheW1DLEVBQWIsQ0FBQSxDQUEwQixDQUExQixDQUFEbnJDLEVBQWlDLEVBQWpDQSxRQUdkeUQs
RUFBQSxDQUFZNm1ELENBQVosQ0FBSixHQUNFQSxDQURGLENBQ2lCeHhCLElBQUF3eUIsSUFBQSxD
QUFTeHlCLElBQUFDLElBQUEsQ0FBUzFpQixDQUFBazFCLFFBQVQsQ0FBMEI4ZixDQUExQixDQUFU
LENBQWlEaDFDLENBQUFtMUIsUUFBakQsQ0FEakIsQ0FPQWdmLEVBQUEsQ0FBUyxFQUFFMXhCLElB
QUF5eUIsTUFBQSxDQUFXLEVBQUVmLENBQUFqbkQsU0FBQSxFQUFGLENBQXNCLEdBQXRCLENBQTRC
K21ELENBQTVCLENBQVgsQ0FBQS9tRCxTQUFBLEVBQUYsQ0FBcUUsR0FBckUsQ0FBMkUsQ0FBQytt
RCxDQUE1RSxDQUVMa0IsS0FBQUEsRUFBVzltRCxDQUFDLEVBQURBLENBQU04bEQsQ0FBTjlsRCxP
QUFBLENBQW9CeW1DLEVBQXBCLENBQVhxZ0IsQ0FDQWpkLEVBQVFpZCxDQUFBLENBQVMsQ0FBVCxD
QURSQSxDQUVKQSxFQUFXQSxDQUFBLENBQVMsQ0FBVCxDQUFYQSxFQUEwQixFQUZ0QkEsQ0FJR3Yr
QyxFQUFNLENBSlR1K0MsQ0FLQUMsRUFBU3AxQyxDQUFBeTFCLE9BTFQwZixDQU1BRSxFQUFRcjFD
LENBQUF3MUIsTUFFWixJQUFJMEMsQ0FBQXZ1QyxPQUFKLEVBQXFCeXJELENBQXJCLENBQThCQyxD
QUE5QixDQUVFLElBREF6K0MsQ0FDSyxDQURDc2hDLENBQUF2dUMsT0FDRCxDQURnQnlyRCxDQUNo
QixDQUFBdnFELENBQUEsQ0FBSSxDQUFULENBQVlBLENBQVosQ0FBZ0IrTCxDQUFoQixDQUFxQi9M
LENBQUEsRUFBckIsQ0FDNEIsQ0FHMUIsSUFISytMLENBR0wsQ0FIVy9MLENBR1gsRUFIZ0J3cUQs
Q0FHaEIsRUFIcUMsQ0FHckMsR0FIK0J4cUQsQ0FHL0IsR0FGRStwRCxDQUVGLEVBRmtCUixDQUVs
QixFQUFBUSxDQUFBLEVBQWdCMWMsQ0FBQXBvQyxPQUFBLENBQWFqRixDQUFiLENBSXBCLEtBQUtB
LENBQUwsQ0FBUytMLENBQVQsQ0FBYy9MLENBQWQsQ0FBa0JxdEMsQ0FBQXZ1QyxPQUFsQixDQUFn
Q2tCLENBQUEsRUFBaEMsQ0FDc0MsQ0FHcEMsSUFIS3F0QyxDQUFBdnVDLE9BR0wsQ0FIb0JrQixD
QUdwQixFQUh5QnVxRCxDQUd6QixFQUgrQyxDQUcvQyxHQUh5Q3ZxRCxDQUd6QztDQUZFK3BELENB
RUYsRUFGa0JSLENBRWxCLEVBQUFRLENBQUEsRUFBZ0IxYyxDQUFBcG9DLE9BQUEsQ0FBYWpGLENB
QWIsQ0FJbEIsS0FBQSxDQUFPc3FELENBQUF4ckQsT0FBUCxDQUF5QnNxRCxDQUF6QixDQUFBLENB
Q0VrQixDQUFBLEVBQVksR0FHVmxCLEVBQUosRUFBcUMsR0FBckMsR0FBb0JBLENBQXBCLEdBQTBD
VyxDQUExQyxFQUEwRFAsQ0FBMUQsQ0FBdUVjLENBQUFsaEMsT0FBQSxDQUFnQixDQUFoQixDQUFt
QmdnQyxDQUFuQixDQUF2RSxDQTNDK0IsQ0FtRGxCLENBQWYsR0FBSUUsQ0FBSixHQUNFRyxDQURG
LENBQ2UsQ0FBQSxDQURmLENBSUFqaEQsRUFBQS9ELEtBQUEsQ0FBV2dsRCxDQUFBLENBQWF0MEMs
Q0FBQXMxQixPQUFiLENBQThCdDFCLENBQUFvMUIsT0FBekMsQ0FDV3dmLENBRFgsQ0FFV04sQ0FB
QSxDQUFhdDBDLENBQUF1MUIsT0FBYixDQUE4QnYxQixDQUFBcTFCLE9BRnpDLENBR0EsT0FBT2hp
QyxFQUFBRyxLQUFBLENBQVcsRUFBWCxDQXBGa0UsQ0F1RjNFOGhELFFBQVNBLEdBQVMsQ0FBQzNl
LENBQUQsQ0FBTTRlLENBQU4sQ0FBY3B1QyxDQUFkLENBQW9CLENBQ3BDLElBQUlxdUMsRUFBTSxF
QUNBLEVBQVYsQ0FBSTdlLENBQUosR0FDRTZlLENBQ0EsQ0FETyxHQUNQLENBQUE3ZSxDQUFBLENB
QU0sQ0FBQ0EsQ0FGVCxDQUtBLEtBREFBLENBQ0EsQ0FETSxFQUNOLENBRFdBLENBQ1gsQ0FBT0Es
Q0FBQWh0QyxPQUFQLENBQW9CNHJELENBQXBCLENBQUEsQ0FBNEI1ZSxDQUFBLENBQU0sR0FBTixD
QUFZQSxDQUNwQ3h2QixFQUFKLEdBQ0V3dkIsQ0FERixDQUNRQSxDQUFBMWlCLE9BQUEsQ0FBVzBp
QixDQUFBaHRDLE9BQVgsQ0FBd0I0ckQsQ0FBeEIsQ0FEUixDQUdBLE9BQU9DLEVBQVAsQ0FBYTdl
LENBWHVCLENBZXRDOGUsUUFBU0EsRUFBVSxDQUFDbmhELENBQUQsQ0FBT3loQixDQUFQLENBQWFy
USxDQUFiLENBQXFCeUIsQ0FBckIsQ0FBMkIsQ0FDNUN6QixDQUFBLENBQVNBLENBQVQsRUFBbUIs
Q0FDbkIsT0FBTyxTQUFRLENBQUM1VCxDQUFELENBQU8sQ0FDaEI5RyxDQUFBQSxDQUFROEcsQ0FB
QSxDQUFLLEtBQUwsQ0FBYXdDLENBQWIsQ0FBQSxFQUNaLElBQWEsQ0FBYixDQUFJb1IsQ0FBSixF
QUFrQjFhLENBQWxCLENBQTBCLENBQUMwYSxDQUEzQixDQUNFMWEsQ0FBQSxFQUFTMGEsQ0FFRyxF
QUFkLEdBQUkxYSxDQUFKLEVBQThCLEdBQTlCLEVBQW1CMGEsQ0FBbkIsR0FBa0MxYSxDQUFsQyxD
QUEwQyxFQUExQyxDQUNBLE9BQU9zcUQsR0FBQSxDQUFVdHFELENBQVYsQ0FBaUIrcUIsQ0FBakIs
Q0FBdUI1TyxDQUF2QixDQU5hLENBRnNCLENBWTlDdXVDLFFBQVNBLEdBQWEsQ0FBQ3BoRCxDQUFE
LENBQU9xaEQsQ0FBUCxDQUFrQixDQUN0QyxNQUFPLFNBQVEsQ0FBQzdqRCxDQUFELENBQU9naUQs
Q0FBUCxDQUFnQixDQUM3QixJQUFJOW9ELEVBQVE4RyxDQUFBLENBQUssS0FBTCxDQUFhd0MsQ0FB
YixDQUFBLEVBQVosQ0FDSWlDLEVBQU02RSxFQUFBLENBQVV1NkMsQ0FBQSxDQUFhLE9BQWIsQ0FB
dUJyaEQsQ0FBdkIsQ0FBK0JBLENBQXpDLENBRVYsT0FBT3cvQyxFQUFBLENBQVF2OUMsQ0FBUixD
QUFBLENBQWF2TCxDQUFiLENBSnNCLENBRE8sQ0FtQnhDNHFELFFBQVNBLEdBQXNCLENBQUNDLENB
QUQsQ0FBTyxDQUVsQyxJQUFJQztBQUFtQkMsQ0FBQyxJQUFJL3BELElBQUosQ0FBUzZwRCxDQUFU
LENBQWUsQ0FBZixDQUFrQixDQUFsQixDQUFERSxRQUFBLEVBR3ZCLE9BQU8sS0FBSS9wRCxJQUFK
LENBQVM2cEQsQ0FBVCxDQUFlLENBQWYsRUFBd0MsQ0FBckIsRUFBQ0MsQ0FBRCxDQUEwQixDQUEx
QixDQUE4QixFQUFqRCxFQUF1REEsQ0FBdkQsQ0FMMkIsQ0FjdENFLFFBQVNBLEdBQVUsQ0FBQ2pn
QyxDQUFELENBQU8sQ0FDdkIsTUFBTyxTQUFRLENBQUNqa0IsQ0FBRCxDQUFPLENBQUEsSUFDZm1r
RCxFQUFhTCxFQUFBLENBQXVCOWpELENBQUFva0QsWUFBQSxFQUF2QixDQUdiaHlCLEVBQUFBLENB
QU8sQ0FWTml5QixJQUFJbnFELElBQUptcUQsQ0FROEJya0QsQ0FSckJva0QsWUFBQSxFQUFUQyxD
QVE4QnJrRCxDQVJHc2tELFNBQUEsRUFBakNELENBUThCcmtELENBTm5DdWtELFFBQUEsRUFGS0Ys
RUFFaUIsQ0FGakJBLENBUThCcmtELENBTlRpa0QsT0FBQSxFQUZyQkksRUFVRGp5QixDQUFvQixD
QUFDK3hCLENBQ3RCcm9DLEVBQUFBLENBQVMsQ0FBVEEsQ0FBYTZVLElBQUF5eUIsTUFBQSxDQUFX
aHhCLENBQVgsQ0FBa0IsTUFBbEIsQ0FFaEIsT0FBT294QixHQUFBLENBQVUxbkMsQ0FBVixDQUFr
Qm1JLENBQWxCLENBUFksQ0FEQyxDQWdCMUJ1Z0MsUUFBU0EsR0FBUyxDQUFDeGtELENBQUQsQ0FB
T2dpRCxDQUFQLENBQWdCLENBQ2hDLE1BQTZCLEVBQXRCLEVBQUFoaUQsQ0FBQW9rRCxZQUFBLEVB
QUEsQ0FBMEJwQyxDQUFBcmQsS0FBQSxDQUFhLENBQWIsQ0FBMUIsQ0FBNENxZCxDQUFBcmQsS0FB
QSxDQUFhLENBQWIsQ0FEbkIsQ0EwSWxDMmIsUUFBU0EsR0FBVSxDQUFDeUIsQ0FBRCxDQUFVLENB
SzNCMEMsUUFBU0EsRUFBZ0IsQ0FBQ0MsQ0FBRCxDQUFTLENBQ2hDLElBQUk5bUQsQ0FDSixJQUFJ
QSxDQUFKLENBQVk4bUQsQ0FBQTltRCxNQUFBLENBQWErbUQsQ0FBYixDQUFaLENBQXlDLENBQ25D
M2tELENBQUFBLENBQU8sSUFBSTlGLElBQUosQ0FBUyxDQUFULENBRDRCLEtBRW5DMHFELEVBQVMs
Q0FGMEIsQ0FHbkNDLEVBQVMsQ0FIMEIsQ0FJbkNDLEVBQWFsbkQsQ0FBQSxDQUFNLENBQU4sQ0FB
QSxDQUFXb0MsQ0FBQStrRCxlQUFYLENBQWlDL2tELENBQUFnbEQsWUFKWCxDQUtuQ0MsRUFBYXJu
RCxDQUFBLENBQU0sQ0FBTixDQUFBLENBQVdvQyxDQUFBa2xELFlBQVgsQ0FBOEJsbEQsQ0FBQW1s
RCxTQUUzQ3ZuRCxFQUFBLENBQU0sQ0FBTixDQUFKLEdBQ0VnbkQsQ0FDQSxDQURTcHFELENBQUEs
Q0FBTW9ELENBQUEsQ0FBTSxDQUFOLENBQU4sQ0FBaUJBLENBQUEsQ0FBTSxFQUFOLENBQWpCLENB
Q1QsQ0FBQWluRCxDQUFBLENBQVFycUQsQ0FBQSxDQUFNb0QsQ0FBQSxDQUFNLENBQU4sQ0FBTixD
QUFpQkEsQ0FBQSxDQUFNLEVBQU4sQ0FBakIsQ0FGVixDQUlBa25ELEVBQUFyc0QsS0FBQSxDQUFn
QnVILENBQWhCLENBQXNCeEYsQ0FBQSxDQUFNb0QsQ0FBQSxDQUFNLENBQU4sQ0FBTixDQUF0QjtB
QUF1Q3BELENBQUEsQ0FBTW9ELENBQUEsQ0FBTSxDQUFOLENBQU4sQ0FBdkMsQ0FBeUQsQ0FBekQs
Q0FBNERwRCxDQUFBLENBQU1vRCxDQUFBLENBQU0sQ0FBTixDQUFOLENBQTVELENBQ0l0RSxFQUFB
QSxDQUFJa0IsQ0FBQSxDQUFNb0QsQ0FBQSxDQUFNLENBQU4sQ0FBTixFQUFrQixDQUFsQixDQUFK
dEUsQ0FBMkJzckQsQ0FDM0JRLEVBQUFBLENBQUk1cUQsQ0FBQSxDQUFNb0QsQ0FBQSxDQUFNLENB
QU4sQ0FBTixFQUFrQixDQUFsQixDQUFKd25ELENBQTJCUCxDQUMzQlEsRUFBQUEsQ0FBSTdxRCxD
QUFBLENBQU1vRCxDQUFBLENBQU0sQ0FBTixDQUFOLEVBQWtCLENBQWxCLENBQ0owbkQsRUFBQUEs
Q0FBSzMwQixJQUFBeXlCLE1BQUEsQ0FBZ0QsR0FBaEQsQ0FBV0gsVUFBQSxDQUFXLElBQVgsRUFB
bUJybEQsQ0FBQSxDQUFNLENBQU4sQ0FBbkIsRUFBK0IsQ0FBL0IsRUFBWCxDQUNUcW5ELEVBQUF4
c0QsS0FBQSxDQUFnQnVILENBQWhCLENBQXNCMUcsQ0FBdEIsQ0FBeUI4ckQsQ0FBekIsQ0FBNEJD
LENBQTVCLENBQStCQyxDQUEvQixDQWhCdUMsQ0FtQnpDLE1BQU9aLEVBckJ5QixDQUZsQyxJQUFJ
QyxFQUFnQixzR0EyQnBCLE9BQU8sU0FBUSxDQUFDM2tELENBQUQsQ0FBT3VsRCxDQUFQLENBQWU1
bEQsQ0FBZixDQUF5QixDQUFBLElBQ2xDOHlCLEVBQU8sRUFEMkIsQ0FFbENseEIsRUFBUSxFQUYw
QixDQUdsQzFDLENBSGtDLENBRzlCakIsQ0FFUjJuRCxFQUFBLENBQVNBLENBQVQsRUFBbUIsWUFD
bkJBLEVBQUEsQ0FBU3hELENBQUFsZSxpQkFBQSxDQUF5QjBoQixDQUF6QixDQUFULEVBQTZDQSxD
QUN6Q3R0RCxFQUFBLENBQVMrSCxDQUFULENBQUosR0FDRUEsQ0FERixDQUNTd2xELEVBQUFqb0Qs
S0FBQSxDQUFtQnlDLENBQW5CLENBQUEsQ0FBMkJ4RixDQUFBLENBQU13RixDQUFOLENBQTNCLENB
QXlDeWtELENBQUEsQ0FBaUJ6a0QsQ0FBakIsQ0FEbEQsQ0FJSXZFLEVBQUEsQ0FBU3VFLENBQVQs
Q0FBSixHQUNFQSxDQURGLENBQ1MsSUFBSTlGLElBQUosQ0FBUzhGLENBQVQsQ0FEVCxDQUlBLElB
QUssQ0FBQS9GLEVBQUEsQ0FBTytGLENBQVAsQ0FBTCxFQUFzQixDQUFBNGlELFFBQUEsQ0FBUzVp
RCxDQUFBdEMsUUFBQSxFQUFULENBQXRCLENBQ0UsTUFBT3NDLEVBR1QsS0FBQSxDQUFPdWxELENB
QVAsQ0FBQSxDQUVFLENBREEzbkQsQ0FDQSxDQURRNm5ELEVBQUFoeEMsS0FBQSxDQUF3Qjh3QyxD
QUF4QixDQUNSLEdBQ0Voa0QsQ0FDQSxDQURRL0MsRUFBQSxDQUFPK0MsQ0FBUCxDQUFjM0QsQ0FB
ZCxDQUFxQixDQUFyQixDQUNSLENBQUEybkQsQ0FBQSxDQUFTaGtELENBQUE4ZSxJQUFBLEVBRlgs
R0FJRTllLENBQUEvRCxLQUFBLENBQVcrbkQsQ0FBWCxDQUNBLENBQUFBLENBQUEsQ0FBUyxJQUxY
LENBU0YsS0FBSUcsRUFBcUIxbEQsQ0FBQUcsa0JBQUEsRUFDckJSO0NBQUosR0FDRStsRCxDQUNB
LENBRHFCaG1ELEVBQUEsQ0FBaUJDLENBQWpCLENBQTJCSyxDQUFBRyxrQkFBQSxFQUEzQixDQUNy
QixDQUFBSCxDQUFBLENBQU9ELEVBQUEsQ0FBdUJDLENBQXZCLENBQTZCTCxDQUE3QixDQUF1QyxD
QUFBLENBQXZDLENBRlQsQ0FJQXhILEVBQUEsQ0FBUW9KLENBQVIsQ0FBZSxRQUFRLENBQUNySSxD
QUFELENBQVEsQ0FDN0IyRixDQUFBLENBQUs4bUQsRUFBQSxDQUFhenNELENBQWIsQ0FDTHU1QixF
QUFBLEVBQVE1ekIsQ0FBQSxDQUFLQSxDQUFBLENBQUdtQixDQUFILENBQVMraEQsQ0FBQWxlLGlC
QUFULENBQW1DNmhCLENBQW5DLENBQUwsQ0FDS3hzRCxDQUFBOEgsUUFBQSxDQUFjLFVBQWQsQ0FB
MEIsRUFBMUIsQ0FBQUEsUUFBQSxDQUFzQyxLQUF0QyxDQUE2QyxHQUE3QyxDQUhnQixDQUEvQixD
QU1BLE9BQU95eEIsRUF6QytCLENBOUJiLENBMkc3Qit0QixRQUFTQSxHQUFVLEVBQUcsQ0FDcEIs
TUFBTyxTQUFRLENBQUNuVCxDQUFELENBQVN1WSxDQUFULENBQWtCLENBQzNCdHFELENBQUEsQ0FB
WXNxRCxDQUFaLENBQUosR0FDSUEsQ0FESixDQUNjLENBRGQsQ0FHQSxPQUFPem1ELEdBQUEsQ0FB
T2t1QyxDQUFQLENBQWV1WSxDQUFmLENBSndCLENBRGIsQ0FpSXRCbkYsUUFBU0EsR0FBYSxFQUFH
LENBQ3ZCLE1BQU8sU0FBUSxDQUFDeDJDLENBQUQsQ0FBUTQ3QyxDQUFSLENBQWUxZixDQUFmLENB
QXNCLENBRWpDMGYsQ0FBQSxDQUQ4QmxELFFBQWhDLEdBQUloeUIsSUFBQTh4QixJQUFBLENBQVNw
K0IsTUFBQSxDQUFPd2hDLENBQVAsQ0FBVCxDQUFKLENBQ1V4aEMsTUFBQSxDQUFPd2hDLENBQVAs
Q0FEVixDQUdVcnJELENBQUEsQ0FBTXFyRCxDQUFOLENBRVYsSUFBSS9sRCxLQUFBLENBQU0rbEQs
Q0FBTixDQUFKLENBQWtCLE1BQU81N0MsRUFFckJ4TyxFQUFBLENBQVN3TyxDQUFULENBQUosR0FB
cUJBLENBQXJCLENBQTZCQSxDQUFBN08sU0FBQSxFQUE3QixDQUNBLElBQUssQ0FBQWxELENBQUEs
Q0FBUStSLENBQVIsQ0FBTCxFQUF3QixDQUFBaFMsQ0FBQSxDQUFTZ1MsQ0FBVCxDQUF4QixDQUF5
QyxNQUFPQSxFQUVoRGs4QixFQUFBLENBQVVBLENBQUFBLENBQUYsRUFBV3JtQyxLQUFBLENBQU1x
bUMsQ0FBTixDQUFYLENBQTJCLENBQTNCLENBQStCM3JDLENBQUEsQ0FBTTJyQyxDQUFOLENBQ3ZD
QSxFQUFBLENBQWlCLENBQVQsQ0FBQ0EsQ0FBRCxFQUFjQSxDQUFkLEVBQXVCLENBQUNsOEIsQ0FB
QXBTLE9BQXhCLENBQXdDb1MsQ0FBQXBTLE9BQXhDLENBQXVEc3VDLENBQXZELENBQStEQSxDQUV2
RSxPQUFhLEVBQWIsRUFBSTBmLENBQUosQ0FDUzU3QyxDQUFBNVAsTUFBQSxDQUFZOHJDLENBQVos
Q0FBbUJBLENBQW5CLENBQTJCMGYsQ0FBM0IsQ0FEVCxDQUdnQixDQUFkLEdBQUkxZixDQUFKLENB
Q1NsOEIsQ0FBQTVQLE1BQUEsQ0FBWXdyRCxDQUFaLENBQW1CNTdDLENBQUFwUyxPQUFuQixDQURU
LENBR1NvUyxDQUFBNVAsTUFBQSxDQUFZczJCLElBQUFDLElBQUEsQ0FBUyxDQUFUO0FBQVl1VixD
QUFaLENBQW9CMGYsQ0FBcEIsQ0FBWixDQUF3QzFmLENBQXhDLENBcEJ3QixDQURkLENBeU16Qnlh
LFFBQVNBLEdBQWEsQ0FBQ252QyxDQUFELENBQVMsQ0FzQzdCcTBDLFFBQVNBLEVBQWlCLENBQUND
LENBQUQsQ0FBZ0JDLENBQWhCLENBQThCLENBQ3REQSxDQUFBLENBQWVBLENBQUEsQ0FBZ0IsRUFB
aEIsQ0FBb0IsQ0FDbkMsT0FBT0QsRUFBQUUsSUFBQSxDQUFrQixRQUFRLENBQUNDLENBQUQsQ0FB
WSxDQUFBLElBQ3ZDQyxFQUFhLENBRDBCLENBQ3ZCMWhELEVBQU16SixFQUUxQixJQUFJekMsQ0FB
QSxDQUFXMnRELENBQVgsQ0FBSixDQUNFemhELENBQUEsQ0FBTXloRCxDQURSLEtBRU8sSUFBSWp1
RCxDQUFBLENBQVNpdUQsQ0FBVCxDQUFKLENBQXlCLENBQzlCLEdBQTRCLEdBQTVCLEVBQUtBLENB
QUFsb0QsT0FBQSxDQUFpQixDQUFqQixDQUFMLEVBQTBELEdBQTFELEVBQW1Da29ELENBQUFsb0Qs
T0FBQSxDQUFpQixDQUFqQixDQUFuQyxDQUNFbW9ELENBQ0EsQ0FEb0MsR0FBdkIsRUFBQUQsQ0FB
QWxvRCxPQUFBLENBQWlCLENBQWpCLENBQUEsQ0FBOEIsRUFBOUIsQ0FBa0MsQ0FDL0MsQ0FBQWtv
RCxDQUFBLENBQVlBLENBQUEzNEIsVUFBQSxDQUFvQixDQUFwQixDQUVkLElBQWtCLEVBQWxCLEdB
QUkyNEIsQ0FBSixHQUNFemhELENBQ0lvRSxDQURFNEksQ0FBQSxDQUFPeTBDLENBQVAsQ0FDRnI5
QyxDQUFBcEUsQ0FBQW9FLFNBRk4sRUFHSSxJQUFJdlEsRUFBTW1NLENBQUEsRUFBVixDQUNBQSxF
QUFNQSxRQUFRLENBQUN2TCxDQUFELENBQVEsQ0FBRSxNQUFPQSxFQUFBLENBQU1aLENBQU4sQ0FB
VCxDQVRJLENBYWhDLE1BQU8sQ0FBRW1NLElBQUtBLENBQVAsQ0FBWTBoRCxXQUFZQSxDQUFaQSxD
QUF5QkgsQ0FBckMsQ0FsQm9DLENBQXRDLENBRitDLENBd0J4RHR0RCxRQUFTQSxFQUFXLENBQUNR
LENBQUQsQ0FBUSxDQUMxQixPQUFRLE1BQU9BLEVBQWYsRUFDRSxLQUFLLFFBQUwsQ0FDQSxLQUFL
LFNBQUwsQ0FDQSxLQUFLLFFBQUwsQ0FDRSxNQUFPLENBQUEsQ0FDVCxTQUNFLE1BQU8sQ0FBQSxD
QU5YLENBRDBCLENBN0Q1QixNQUFPLFNBQVEsQ0FBQzBELENBQUQsQ0FBUW1wRCxDQUFSLENBQXVC
QyxDQUF2QixDQUFxQyxDQUVsRCxHQUFNLENBQUF0dUQsRUFBQSxDQUFZa0YsQ0FBWixDQUFOLENB
QTJCLE1BQU9BLEVBRTdCMUUsRUFBQSxDQUFRNnRELENBQVIsQ0FBTCxHQUErQkEsQ0FBL0IsQ0FB
K0MsQ0FBQ0EsQ0FBRCxDQUEvQyxDQUM2QixFQUE3QixHQUFJQSxDQUFBbHVELE9BQUosR0FBa0Nr
dUQsQ0FBbEMsQ0FBa0QsQ0FBQyxHQUFELENBQWxELENBRUEsS0FBSUssRUFBYU4sQ0FBQSxDQUFr
QkMsQ0FBbEIsQ0FBaUNDLENBQWpDLENBS2JLLEVBQUFBLENBQWdCL25DLEtBQUFqakIsVUFBQTRx
RCxJQUFBeHRELEtBQUEsQ0FBeUJtRSxDQUF6QjtBQU1wQjBwRCxRQUE0QixDQUFDcHRELENBQUQs
Q0FBUTJELENBQVIsQ0FBZSxDQUN6QyxNQUFPLENBQ0wzRCxNQUFPQSxDQURGLENBRUxxdEQsZ0JB
QWlCSCxDQUFBSCxJQUFBLENBQWUsUUFBUSxDQUFDQyxDQUFELENBQVksQ0FDekIsSUFBQSxFQUFB
QSxDQUFBemhELElBQUEsQ0FBY3ZMLENBQWQsQ0FrRTNCaWQsRUFBQUEsQ0FBTyxNQUFPamQsRUFD
bEIsSUFBYyxJQUFkLEdBQUlBLENBQUosQ0FDRWlkLENBQ0EsQ0FETyxRQUNQLENBQUFqZCxDQUFB
LENBQVEsTUFGVixLQUdPLElBQWEsUUFBYixHQUFJaWQsQ0FBSixDQUNMamQsQ0FBQSxDQUFRQSxD
QUFBNkwsWUFBQSxFQURILEtBRUEsSUFBYSxRQUFiLEdBQUlvUixDQUFKLENBdEIwQixDQUFBLENB
QUEsQ0FFakMsR0FBNkIsVUFBN0IsR0FBSSxNQUFPamQsRUFBQWlCLFFBQVgsR0FDRWpCLENBQ0ks
Q0FESUEsQ0FBQWlCLFFBQUEsRUFDSixDQUFBekIsQ0FBQSxDQUFZUSxDQUFaLENBRk4sRUFFMEIs
TUFBQSxDQUcxQixJQUFJaUMsRUFBQSxDQUFrQmpDLENBQWxCLENBQUosR0FDRUEsQ0FDSSxDQURJ
QSxDQUFBa0MsU0FBQSxFQUNKLENBQUExQyxDQUFBLENBQVlRLENBQVosQ0FGTixFQUUwQixNQUFB
LENBRzFCLEVBQUEsQ0E5RHFEMkQsQ0FrRHBCLENBbEQzQixNQTJFQyxDQUFFM0QsTUFBT0EsQ0FB
VCxDQUFnQmlkLEtBQU1BLENBQXRCLENBNUVpRCxDQUFuQyxDQUZaLENBRGtDLENBTnZCLENBQ3BC
a3dDLEVBQUF2dEQsS0FBQSxDQWNBMHRELFFBQXFCLENBQUNDLENBQUQsQ0FBS0MsQ0FBTCxDQUFT
LENBRTVCLElBREEsSUFBSTVxQyxFQUFTLENBQWIsQ0FDU2pmLEVBQU0sQ0FEZixDQUNrQmhGLEVB
QVN1dUQsQ0FBQXZ1RCxPQUEzQixDQUE4Q2dGLENBQTlDLENBQXNEaEYsQ0FBdEQsQ0FBOEQsRUFB
RWdGLENBQWhFLENBQXVFLENBQ3BELElBQUEsRUFBQTRwRCxDQUFBRixnQkFBQSxDQUFtQjFwRCxD
QUFuQixDQUFBLENBQTJCLEVBQUE2cEQsQ0FBQUgsZ0JBQUEsQ0FBbUIxcEQsQ0FBbkIsQ0FBM0Is
Q0F1RWpCaWYsRUFBUyxDQUNUMnFDLEVBQUF0d0MsS0FBSixHQUFnQnV3QyxDQUFBdndDLEtBQWhC
LENBQ01zd0MsQ0FBQXZ0RCxNQUROLEdBQ21Cd3RELENBQUF4dEQsTUFEbkIsR0FFSTRpQixDQUZK
LENBRWEycUMsQ0FBQXZ0RCxNQUFBLENBQVd3dEQsQ0FBQXh0RCxNQUFYLENBQXVCLEVBQXZCLENB
QTJCLENBRnhDLEVBS0U0aUIsQ0FMRixDQUtXMnFDLENBQUF0d0MsS0FBQSxDQUFVdXdDLENBQUF2
d0MsS0FBVjtBQUFxQixFQUFyQixDQUF5QixDQTVFaEMsSUFEQTJGLENBQ0EsQ0E4RUdBLENBOUVI
LENBRHlFc3FDLENBQUEsQ0FBV3ZwRCxDQUFYLENBQUFzcEQsV0FDekUsQ0FBWSxLQUZ5RCxDQUl2
RSxNQUFPcnFDLEVBTnFCLENBZDlCLENBR0EsT0FGQWxmLEVBRUEsQ0FGUXlwRCxDQUFBSixJQUFB
LENBQWtCLFFBQVEsQ0FBQzFFLENBQUQsQ0FBTyxDQUFFLE1BQU9BLEVBQUFyb0QsTUFBVCxDQUFq
QyxDQWQwQyxDQUR2QixDQWtIL0J5dEQsUUFBU0EsR0FBVyxDQUFDMTlDLENBQUQsQ0FBWSxDQUMx
QjFRLENBQUEsQ0FBVzBRLENBQVgsQ0FBSixHQUNFQSxDQURGLENBQ2MsQ0FDVjJhLEtBQU0zYSxD
QURJLENBRGQsQ0FLQUEsRUFBQXlkLFNBQUEsQ0FBcUJ6ZCxDQUFBeWQsU0FBckIsRUFBMkMsSUFD
M0MsT0FBT3hyQixHQUFBLENBQVErTixDQUFSLENBUHVCLENBdWlCaEMyOUMsUUFBU0EsR0FBYyxD
QUFDbnFELENBQUQsQ0FBVXV0QixDQUFWLENBQWlCNkQsQ0FBakIsQ0FBeUJ0ZSxDQUF6QixDQUFt
Q2tCLENBQW5DLENBQWlELENBQUEsSUFDbEVyRyxFQUFPLElBRDJELENBRWxFeThDLEVBQVcsRUFG
dUQsQ0FJbEVDLEVBQWExOEMsQ0FBQTI4QyxhQUFiRCxDQUFpQ3JxRCxDQUFBN0IsT0FBQSxFQUFB
NkssV0FBQSxDQUE0QixNQUE1QixDQUFqQ3FoRCxFQUF3RUUsRUFHNUU1OEMsRUFBQTY4QyxPQUFB
LENBQWMsRUFDZDc4QyxFQUFBODhDLFVBQUEsQ0FBaUIsRUFDakI5OEMsRUFBQSs4QyxTQUFBLENB
QWdCM3ZELENBQ2hCNFMsRUFBQWc5QyxNQUFBLENBQWEzMkMsQ0FBQSxDQUFhdVosQ0FBQXhuQixL
QUFiLEVBQTJCd25CLENBQUFsZSxPQUEzQixFQUEyQyxFQUEzQyxDQUFBLENBQStDK2hCLENBQS9D
LENBQ2J6akIsRUFBQWk5QyxPQUFBLENBQWMsQ0FBQSxDQUNkajlDLEVBQUFrOUMsVUFBQSxDQUFp
QixDQUFBLENBQ2pCbDlDLEVBQUFtOUMsT0FBQSxDQUFjLENBQUEsQ0FDZG45QyxFQUFBbzlDLFNB
QUEsQ0FBZ0IsQ0FBQSxDQUNoQnA5QyxFQUFBcTlDLFdBQUEsQ0FBa0IsQ0FBQSxDQUVsQlgsRUFB
QVksWUFBQSxDQUF1QnQ5QyxDQUF2QixDQWFBQSxFQUFBdTlDLG1CQUFBLENBQTBCQyxRQUFRLEVB
QUcsQ0FDbkN6dkQsQ0FBQSxDQUFRMHVELENBQVIsQ0FBa0IsUUFBUSxDQUFDZ0IsQ0FBRCxDQUFV
LENBQ2xDQSxDQUFBRixtQkFBQSxFQURrQyxDQUFwQyxDQURtQyxDQWlCckN2OUMsRUFBQTA5Qyxp
QkFBQTtBQUF3QkMsUUFBUSxFQUFHLENBQ2pDNXZELENBQUEsQ0FBUTB1RCxDQUFSLENBQWtCLFFB
QVEsQ0FBQ2dCLENBQUQsQ0FBVSxDQUNsQ0EsQ0FBQUMsaUJBQUEsRUFEa0MsQ0FBcEMsQ0FEaUMs
Q0FlbkMxOUMsRUFBQXM5QyxZQUFBLENBQW1CTSxRQUFRLENBQUNILENBQUQsQ0FBVSxDQUduQ25o
RCxFQUFBLENBQXdCbWhELENBQUFULE1BQXhCLENBQXVDLE9BQXZDLENBQ0FQLEVBQUFycEQsS0FB
QSxDQUFjcXFELENBQWQsQ0FFSUEsRUFBQVQsTUFBSixHQUNFaDlDLENBQUEsQ0FBS3k5QyxDQUFB
VCxNQUFMLENBREYsQ0FDd0JTLENBRHhCLENBTm1DLENBWXJDejlDLEVBQUE2OUMsZ0JBQUEsQ0FB
dUJDLFFBQVEsQ0FBQ0wsQ0FBRCxDQUFVTSxDQUFWLENBQW1CLENBQ2hELElBQUlDLEVBQVVQLENB
QUFULE1BRVZoOUMsRUFBQSxDQUFLZytDLENBQUwsQ0FBSixHQUFzQlAsQ0FBdEIsRUFDRSxPQUFP
ejlDLENBQUEsQ0FBS2crQyxDQUFMLENBRVRoK0MsRUFBQSxDQUFLKzlDLENBQUwsQ0FBQSxDQUFn
Qk4sQ0FDaEJBLEVBQUFULE1BQUEsQ0FBZ0JlLENBUGdDLENBbUJsRC85QyxFQUFBaStDLGVBQUEs
Q0FBc0JDLFFBQVEsQ0FBQ1QsQ0FBRCxDQUFVLENBQ2xDQSxDQUFBVCxNQUFKLEVBQXFCaDlDLENB
QUEsQ0FBS3k5QyxDQUFBVCxNQUFMLENBQXJCLEdBQTZDUyxDQUE3QyxFQUNFLE9BQU96OUMsQ0FB
QSxDQUFLeTlDLENBQUFULE1BQUwsQ0FFVGp2RCxFQUFBLENBQVFpUyxDQUFBKzhDLFNBQVIsQ0FB
dUIsUUFBUSxDQUFDanVELENBQUQsQ0FBUXNKLENBQVIsQ0FBYyxDQUMzQzRILENBQUFtK0MsYUFB
QSxDQUFrQi9sRCxDQUFsQixDQUF3QixJQUF4QixDQUE4QnFsRCxDQUE5QixDQUQyQyxDQUE3QyxD
QUdBMXZELEVBQUEsQ0FBUWlTLENBQUE2OEMsT0FBUixDQUFxQixRQUFRLENBQUMvdEQsQ0FBRCxD
QUFRc0osQ0FBUixDQUFjLENBQ3pDNEgsQ0FBQW0rQyxhQUFBLENBQWtCL2xELENBQWxCLENBQXdC
LElBQXhCLENBQThCcWxELENBQTlCLENBRHlDLENBQTNDLENBR0ExdkQsRUFBQSxDQUFRaVMsQ0FB
QTg4QyxVQUFSLENBQXdCLFFBQVEsQ0FBQ2h1RCxDQUFELENBQVFzSixDQUFSLENBQWMsQ0FDNUM0
SCxDQUFBbStDLGFBQUEsQ0FBa0IvbEQsQ0FBbEIsQ0FBd0IsSUFBeEIsQ0FBOEJxbEQsQ0FBOUIs
Q0FENEMsQ0FBOUMsQ0FJQWxyRCxHQUFBLENBQVlrcUQsQ0FBWixDQUFzQmdCLENBQXRCLENBZHND
LENBMkJ4Q1csR0FBQSxDQUFxQixDQUNuQkMsS0FBTSxJQURhLENBRW5CamhDLFNBQVUvcUIsQ0FG
UyxDQUduQmlzRCxJQUFLQSxRQUFRLENBQUNyYixDQUFELENBQVNqRixDQUFUO0FBQW1CM2lDLENB
QW5CLENBQStCLENBQzFDLElBQUk0WSxFQUFPZ3ZCLENBQUEsQ0FBT2pGLENBQVAsQ0FDTi9wQixF
QUFMLENBSWlCLEVBSmpCLEdBR2NBLENBQUF2aEIsUUFBQUQsQ0FBYTRJLENBQWI1SSxDQUhkLEVB
S0l3aEIsQ0FBQTdnQixLQUFBLENBQVVpSSxDQUFWLENBTEosQ0FDRTRuQyxDQUFBLENBQU9qRixD
QUFQLENBREYsQ0FDcUIsQ0FBQzNpQyxDQUFELENBSHFCLENBSHpCLENBY25Ca2pELE1BQU9BLFFB
QVEsQ0FBQ3RiLENBQUQsQ0FBU2pGLENBQVQsQ0FBbUIzaUMsQ0FBbkIsQ0FBK0IsQ0FDNUMsSUFB
STRZLEVBQU9ndkIsQ0FBQSxDQUFPakYsQ0FBUCxDQUNOL3BCLEVBQUwsR0FHQTFoQixFQUFBLENB
QVkwaEIsQ0FBWixDQUFrQjVZLENBQWxCLENBQ0EsQ0FBb0IsQ0FBcEIsR0FBSTRZLENBQUF4bUIs
T0FBSixFQUNFLE9BQU93MUMsQ0FBQSxDQUFPakYsQ0FBUCxDQUxULENBRjRDLENBZDNCLENBd0Ju
QjBlLFdBQVlBLENBeEJPLENBeUJuQnYzQyxTQUFVQSxDQXpCUyxDQUFyQixDQXNDQW5GLEVBQUF3
K0MsVUFBQSxDQUFpQkMsUUFBUSxFQUFHLENBQzFCdDVDLENBQUFnTCxZQUFBLENBQXFCOWQsQ0FB
ckIsQ0FBOEJxc0QsRUFBOUIsQ0FDQXY1QyxFQUFBK0ssU0FBQSxDQUFrQjdkLENBQWxCLENBQTJC
c3NELEVBQTNCLENBQ0EzK0MsRUFBQWk5QyxPQUFBLENBQWMsQ0FBQSxDQUNkajlDLEVBQUFrOUMs
VUFBQSxDQUFpQixDQUFBLENBQ2pCUixFQUFBOEIsVUFBQSxFQUwwQixDQXNCNUJ4K0MsRUFBQTQr
QyxhQUFBLENBQW9CQyxRQUFRLEVBQUcsQ0FDN0IxNUMsQ0FBQTI1QyxTQUFBLENBQWtCenNELENB
QWxCLENBQTJCcXNELEVBQTNCLENBQTJDQyxFQUEzQyxDQXRPY0ksZUFzT2QsQ0FDQS8rQyxFQUFB
aTlDLE9BQUEsQ0FBYyxDQUFBLENBQ2RqOUMsRUFBQWs5QyxVQUFBLENBQWlCLENBQUEsQ0FDakJs
OUMsRUFBQXE5QyxXQUFBLENBQWtCLENBQUEsQ0FDbEJ0dkQsRUFBQSxDQUFRMHVELENBQVIsQ0FB
a0IsUUFBUSxDQUFDZ0IsQ0FBRCxDQUFVLENBQ2xDQSxDQUFBbUIsYUFBQSxFQURrQyxDQUFwQyxD
QUw2QixDQXVCL0I1K0MsRUFBQWcvQyxjQUFBLENBQXFCQyxRQUFRLEVBQUcsQ0FDOUJseEQsQ0FB
QSxDQUFRMHVELENBQVIsQ0FBa0IsUUFBUSxDQUFDZ0IsQ0FBRCxDQUFVLENBQ2xDQSxDQUFBdUIs
Y0FBQSxFQURrQyxDQUFwQyxDQUQ4QixDQWFoQ2gvQyxFQUFBay9DLGNBQUEsQ0FBcUJDLFFBQVEs
RUFBRyxDQUM5Qmg2QyxDQUFBK0ssU0FBQSxDQUFrQjdkLENBQWxCO0FBMVFjMHNELGNBMFFkLENB
Q0EvK0MsRUFBQXE5QyxXQUFBLENBQWtCLENBQUEsQ0FDbEJYLEVBQUF3QyxjQUFBLEVBSDhCLENB
eE5zQyxDQXU5Q3hFRSxRQUFTQSxHQUFvQixDQUFDZixDQUFELENBQU8sQ0FDbENBLENBQUFnQixZ
QUFBanNELEtBQUEsQ0FBc0IsUUFBUSxDQUFDdEUsQ0FBRCxDQUFRLENBQ3BDLE1BQU91dkQsRUFB
QWlCLFNBQUEsQ0FBY3h3RCxDQUFkLENBQUEsQ0FBdUJBLENBQXZCLENBQStCQSxDQUFBa0MsU0FB
QSxFQURGLENBQXRDLENBRGtDLENBV3BDdXVELFFBQVNBLEdBQWEsQ0FBQ2xtRCxDQUFELENBQVFo
SCxDQUFSLENBQWlCTixDQUFqQixDQUF1QnNzRCxDQUF2QixDQUE2QnAyQyxDQUE3QixDQUF1Q3hD
LENBQXZDLENBQWlELENBQ3JFLElBQUlzRyxFQUFPelosQ0FBQSxDQUFVRCxDQUFBLENBQVEsQ0FB
UixDQUFBMFosS0FBVixDQUtYLElBQUtnbkMsQ0FBQTlxQyxDQUFBOHFDLFFBQUwsQ0FBdUIsQ0FD
ckIsSUFBSXlNLEVBQVksQ0FBQSxDQUVoQm50RCxFQUFBNkksR0FBQSxDQUFXLGtCQUFYLENBQStC
LFFBQVEsQ0FBQzFCLENBQUQsQ0FBTyxDQUM1Q2dtRCxDQUFBLENBQVksQ0FBQSxDQURnQyxDQUE5
QyxDQUlBbnRELEVBQUE2SSxHQUFBLENBQVcsZ0JBQVgsQ0FBNkIsUUFBUSxFQUFHLENBQ3RDc2tE
LENBQUEsQ0FBWSxDQUFBLENBQ1oxb0MsRUFBQSxFQUZzQyxDQUF4QyxDQVBxQixDQWF2QixJQUFJ
QSxFQUFXQSxRQUFRLENBQUMyb0MsQ0FBRCxDQUFLLENBQ3RCMXJCLENBQUosR0FDRXR1QixDQUFB
aVQsTUFBQUksT0FBQSxDQUFzQmliLENBQXRCLENBQ0EsQ0FBQUEsQ0FBQSxDQUFVLElBRlosQ0FJ
QSxJQUFJeXJCLENBQUFBLENBQUosQ0FBQSxDQUwwQixJQU10QjF3RCxFQUFRdUQsQ0FBQXlDLElB
QUEsRUFDUm1hLEVBQUFBLENBQVF3d0MsQ0FBUnh3QyxFQUFjd3dDLENBQUExekMsS0FLTCxXQUFi
LEdBQUlBLENBQUosRUFBNkJoYSxDQUFBMnRELE9BQTdCLEVBQTRELE9BQTVELEdBQTRDM3RELENB
QUEydEQsT0FBNUMsR0FDRTV3RCxDQURGLENBQ1VtYyxDQUFBLENBQUtuYyxDQUFMLENBRFYsQ0FP
QSxFQUFJdXZELENBQUFzQixXQUFKLEdBQXdCN3dELENBQXhCLEVBQTRDLEVBQTVDLEdBQWtDQSxD
QUFsQyxFQUFrRHV2RCxDQUFBdUIsc0JBQWxELEdBQ0V2QixDQUFBd0IsY0FBQSxDQUFtQi93RCxD
QUFuQixDQUEwQm1nQixDQUExQixDQWZGLENBTDBCLENBMEI1QjtHQUFJaEgsQ0FBQTByQyxTQUFB
LENBQWtCLE9BQWxCLENBQUosQ0FDRXRoRCxDQUFBNkksR0FBQSxDQUFXLE9BQVgsQ0FBb0I0YixD
QUFwQixDQURGLEtBRU8sQ0FDTCxJQUFJaWQsQ0FBSixDQUVJK3JCLEVBQWdCQSxRQUFRLENBQUNM
LENBQUQsQ0FBSzUvQyxDQUFMLENBQVlrZ0QsQ0FBWixDQUF1QixDQUM1Q2hzQixDQUFMLEdBQ0VB
LENBREYsQ0FDWXR1QixDQUFBaVQsTUFBQSxDQUFlLFFBQVEsRUFBRyxDQUNsQ3FiLENBQUEsQ0FB
VSxJQUNMbDBCLEVBQUwsRUFBY0EsQ0FBQS9RLE1BQWQsR0FBOEJpeEQsQ0FBOUIsRUFDRWpwQyxD
QUFBLENBQVMyb0MsQ0FBVCxDQUhnQyxDQUExQixDQURaLENBRGlELENBV25EcHRELEVBQUE2SSxH
QUFBLENBQVcsU0FBWCxDQUFzQixRQUFRLENBQUMrVCxDQUFELENBQVEsQ0FDcEMsSUFBSS9nQixF
QUFNK2dCLENBQUErd0MsUUFJRSxHQUFaLEdBQUk5eEQsQ0FBSixFQUFtQixFQUFuQixDQUF3QkEs
Q0FBeEIsRUFBcUMsRUFBckMsQ0FBK0JBLENBQS9CLEVBQTZDLEVBQTdDLEVBQW1EQSxDQUFuRCxF
QUFpRSxFQUFqRSxFQUEwREEsQ0FBMUQsRUFFQTR4RCxDQUFBLENBQWM3d0MsQ0FBZCxDQUFxQixJ
QUFyQixDQUEyQixJQUFBbmdCLE1BQTNCLENBUG9DLENBQXRDLENBV0EsSUFBSW1aLENBQUEwckMs
U0FBQSxDQUFrQixPQUFsQixDQUFKLENBQ0V0aEQsQ0FBQTZJLEdBQUEsQ0FBVyxXQUFYLENBQXdC
NGtELENBQXhCLENBMUJHLENBZ0NQenRELENBQUE2SSxHQUFBLENBQVcsUUFBWCxDQUFxQjRiLENB
QXJCLENBRUF1bkMsRUFBQTRCLFFBQUEsQ0FBZUMsUUFBUSxFQUFHLENBQ3hCN3RELENBQUF5QyxJ
QUFBLENBQVl1cEQsQ0FBQWlCLFNBQUEsQ0FBY2pCLENBQUFzQixXQUFkLENBQUEsQ0FBaUMsRUFB
akMsQ0FBc0N0QixDQUFBc0IsV0FBbEQsQ0FEd0IsQ0FqRjJDLENBc0h2RVEsUUFBU0EsR0FBZ0Is
Q0FBQ3JqQyxDQUFELENBQVNzakMsQ0FBVCxDQUFrQixDQUN6QyxNQUFPLFNBQVEsQ0FBQ0MsQ0FB
RCxDQUFNenFELENBQU4sQ0FBWSxDQUFBLElBQ3JCdUIsQ0FEcUIsQ0FDZDBrRCxDQUVYLElBQUlo
c0QsRUFBQSxDQUFPd3dELENBQVAsQ0FBSixDQUNFLE1BQU9BLEVBR1QsSUFBSXh5RCxDQUFBLENB
QVN3eUQsQ0FBVCxDQUFKLENBQW1CLENBSUksR0FBckIsRUFBSUEsQ0FBQXpzRCxPQUFBLENBQVcs
Q0FBWCxDQUFKLEVBQTBELEdBQTFELEVBQTRCeXNELENBQUF6c0QsT0FBQSxDQUFXeXNELENBQUE1
eUQsT0FBWCxDQUF3QixDQUF4QixDQUE1QixHQUNFNHlELENBREYsQ0FDUUEsQ0FBQWw5QixVQUFB
LENBQWMsQ0FBZCxDQUFpQms5QixDQUFBNXlELE9BQWpCLENBQThCLENBQTlCLENBRFIsQ0FHQTtH
QUFJNnlELEVBQUFudEQsS0FBQSxDQUFxQmt0RCxDQUFyQixDQUFKLENBQ0UsTUFBTyxLQUFJdndE
LElBQUosQ0FBU3V3RCxDQUFULENBRVR2akMsRUFBQXJwQixVQUFBLENBQW1CLENBR25CLElBRkEw
RCxDQUVBLENBRlEybEIsQ0FBQXpTLEtBQUEsQ0FBWWcyQyxDQUFaLENBRVIsQ0FxQkUsTUFwQkFs
cEQsRUFBQXliLE1BQUEsRUFvQk8sQ0FsQkxpcEMsQ0FrQkssQ0FuQkhqbUQsQ0FBSixDQUNRLENB
Q0oycUQsS0FBTTNxRCxDQUFBb2tELFlBQUEsRUFERixDQUVKd0csR0FBSTVxRCxDQUFBc2tELFNB
QUEsRUFBSnNHLENBQXNCLENBRmxCLENBR0pDLEdBQUk3cUQsQ0FBQXVrRCxRQUFBLEVBSEEsQ0FJ
SnVHLEdBQUk5cUQsQ0FBQStxRCxTQUFBLEVBSkEsQ0FLSkMsR0FBSWhyRCxDQUFBSyxXQUFBLEVB
TEEsQ0FNSjRxRCxHQUFJanJELENBQUFrckQsV0FBQSxFQU5BLENBT0pDLElBQUtuckQsQ0FBQW9y
RCxnQkFBQSxFQUFMRCxDQUE4QixHQVAxQixDQURSLENBV1EsQ0FBRVIsS0FBTSxJQUFSLENBQWND
LEdBQUksQ0FBbEIsQ0FBcUJDLEdBQUksQ0FBekIsQ0FBNEJDLEdBQUksQ0FBaEMsQ0FBbUNFLEdB
QUksQ0FBdkMsQ0FBMENDLEdBQUksQ0FBOUMsQ0FBaURFLElBQUssQ0FBdEQsQ0FRRCxDQUxQaHpE
LENBQUEsQ0FBUW9KLENBQVIsQ0FBZSxRQUFRLENBQUM4cEQsQ0FBRCxDQUFPeHVELENBQVAsQ0FB
YyxDQUMvQkEsQ0FBSixDQUFZMnRELENBQUEzeUQsT0FBWixHQUNFb3VELENBQUEsQ0FBSXVFLENB
QUEsQ0FBUTN0RCxDQUFSLENBQUosQ0FERixDQUN3QixDQUFDd3VELENBRHpCLENBRG1DLENBQXJD
LENBS08sQ0FBQSxJQUFJbnhELElBQUosQ0FBUytyRCxDQUFBMEUsS0FBVCxDQUFtQjFFLENBQUEy
RSxHQUFuQixDQUE0QixDQUE1QixDQUErQjNFLENBQUE0RSxHQUEvQixDQUF1QzVFLENBQUE2RSxH
QUF2QyxDQUErQzdFLENBQUErRSxHQUEvQyxDQUF1RC9FLENBQUFnRixHQUF2RCxFQUFpRSxDQUFq
RSxDQUE4RSxHQUE5RSxDQUFvRWhGLENBQUFrRixJQUFwRSxFQUFzRixDQUF0RixDQWxDUSxDQXND
bkIsTUFBT0csSUE3Q2tCLENBRGMsQ0FrRDNDQyxRQUFTQSxHQUFtQixDQUFDcDFDLENBQUQsQ0FB
TytRLENBQVAsQ0FBZXNrQyxDQUFmLENBQTBCakcsQ0FBMUIsQ0FBa0MsQ0FDNUQsTUFBT2tHLFNB
QTZCLENBQUNob0QsQ0FBRCxDQUFRaEgsQ0FBUixDQUFpQk4sQ0FBakIsQ0FBdUJzc0QsQ0FBdkIs
Q0FBNkJwMkMsQ0FBN0IsQ0FBdUN4QyxDQUF2QyxDQUFpRFUsQ0FBakQsQ0FBMEQsQ0E0RDVGbTdD
LFFBQVNBLEVBQVcsQ0FBQ3h5RCxDQUFELENBQVEsQ0FFMUIsTUFBT0EsRUFBUCxFQUFnQixFQUFF
QSxDQUFBd0UsUUFBRixFQUFtQnhFLENBQUF3RSxRQUFBLEVBQW5CLEdBQXVDeEUsQ0FBQXdFLFFB
QUEsRUFBdkMsQ0FGVSxDQUs1Qml1RCxRQUFTQSxFQUFzQixDQUFDenNELENBQUQsQ0FBTSxDQUNu
QyxNQUFPM0QsRUFBQSxDQUFVMkQsQ0FBVixDQUFBO0FBQWtCakYsRUFBQSxDQUFPaUYsQ0FBUCxD
QUFBLENBQWNBLENBQWQsQ0FBb0Jzc0QsQ0FBQSxDQUFVdHNELENBQVYsQ0FBdEMsQ0FBd0QxSCxD
QUQ1QixDQWhFckNvMEQsRUFBQSxDQUFnQm5vRCxDQUFoQixDQUF1QmhILENBQXZCLENBQWdDTixD
QUFoQyxDQUFzQ3NzRCxDQUF0QyxDQUNBa0IsR0FBQSxDQUFjbG1ELENBQWQsQ0FBcUJoSCxDQUFy
QixDQUE4Qk4sQ0FBOUIsQ0FBb0Nzc0QsQ0FBcEMsQ0FBMENwMkMsQ0FBMUMsQ0FBb0R4QyxDQUFw
RCxDQUNBLEtBQUlsUSxFQUFXOG9ELENBQVg5b0QsRUFBbUI4b0QsQ0FBQW9ELFNBQW5CbHNELEVB
QW9DOG9ELENBQUFvRCxTQUFBbHNELFNBQXhDLENBQ0ltc0QsQ0FFSnJELEVBQUFzRCxhQUFBLENB
QW9CNTFDLENBQ3BCc3lDLEVBQUF1RCxTQUFBeHVELEtBQUEsQ0FBbUIsUUFBUSxDQUFDdEUsQ0FB
RCxDQUFRLENBQ2pDLE1BQUl1dkQsRUFBQWlCLFNBQUEsQ0FBY3h3RCxDQUFkLENBQUosQ0FBaUMs
SUFBakMsQ0FDSWd1QixDQUFBM3BCLEtBQUEsQ0FBWXJFLENBQVosQ0FBSixFQUlNK3lELENBSUdB
LENBSlVULENBQUEsQ0FBVXR5RCxDQUFWLENBQWlCNHlELENBQWpCLENBSVZHLENBSEh0c0QsQ0FH
R3NzRCxHQUZMQSxDQUVLQSxDQUZRbHNELEVBQUEsQ0FBdUJrc0QsQ0FBdkIsQ0FBbUN0c0QsQ0FB
bkMsQ0FFUnNzRCxFQUFBQSxDQVJULEVBVU96MEQsQ0FaMEIsQ0FBbkMsQ0FlQWl4RCxFQUFBZ0Is
WUFBQWpzRCxLQUFBLENBQXNCLFFBQVEsQ0FBQ3RFLENBQUQsQ0FBUSxDQUNwQyxHQUFJQSxDQUFK
LEVBQWMsQ0FBQWUsRUFBQSxDQUFPZixDQUFQLENBQWQsQ0FDRSxLQUFNZ3pELEdBQUEsQ0FBZSxT
QUFmLENBQXlEaHpELENBQXpELENBQU4sQ0FFRixHQUFJd3lELENBQUEsQ0FBWXh5RCxDQUFaLENB
QUosQ0FLRSxNQUFPLENBSlA0eUQsQ0FJTyxDQUpRNXlELENBSVIsR0FIYXlHLENBR2IsR0FGTG1z
RCxDQUVLLENBRlUvckQsRUFBQSxDQUF1QityRCxDQUF2QixDQUFxQ25zRCxDQUFyQyxDQUErQyxD
QUFBLENBQS9DLENBRVYsRUFBQTRRLENBQUEsQ0FBUSxNQUFSLENBQUEsQ0FBZ0JyWCxDQUFoQixD
QUF1QnFzRCxDQUF2QixDQUErQjVsRCxDQUEvQixDQUVQbXNELEVBQUEsQ0FBZSxJQUNmLE9BQU8s
RUFaMkIsQ0FBdEMsQ0FnQkEsSUFBSXZ3RCxDQUFBLENBQVVZLENBQUFnbkQsSUFBVixDQUFKLEVB
QTJCaG5ELENBQUFnd0QsTUFBM0IsQ0FBdUMsQ0FDckMsSUFBSUMsQ0FDSjNELEVBQUE0RCxZQUFB
bEosSUFBQSxDQUF1Qm1KLFFBQVEsQ0FBQ3B6RCxDQUFELENBQVEsQ0FDckMsTUFBTyxDQUFDd3lE
LENBQUEsQ0FBWXh5RCxDQUFaLENBQVIsRUFBOEJvQyxDQUFBLENBQVk4d0QsQ0FBWixDQUE5QixF
QUFxRFosQ0FBQSxDQUFVdHlELENBQVYsQ0FBckQsRUFBeUVrekQsQ0FEcEMsQ0FHdkNqd0QsRUFB
QWc1QixTQUFBLENBQWMsS0FBZCxDQUFxQixRQUFRLENBQUNqMkIsQ0FBRCxDQUFNLENBQ2pDa3RE
LENBQUEsQ0FBU1QsQ0FBQSxDQUF1QnpzRCxDQUF2QixDQUNUdXBELEVBQUE4RCxVQUFBLEVBRmlD
LENBQW5DLENBTHFDLENBV3ZDLEdBQUloeEQsQ0FBQSxDQUFVWSxDQUFBeTBCLElBQVYsQ0FBSixF
QUEyQnowQixDQUFBcXdELE1BQTNCLENBQXVDLENBQ3JDLElBQUlDLENBQ0poRTtDQUFBNEQsWUFB
QXo3QixJQUFBLENBQXVCODdCLFFBQVEsQ0FBQ3h6RCxDQUFELENBQVEsQ0FDckMsTUFBTyxDQUFD
d3lELENBQUEsQ0FBWXh5RCxDQUFaLENBQVIsRUFBOEJvQyxDQUFBLENBQVlteEQsQ0FBWixDQUE5
QixFQUFxRGpCLENBQUEsQ0FBVXR5RCxDQUFWLENBQXJELEVBQXlFdXpELENBRHBDLENBR3ZDdHdE
LEVBQUFnNUIsU0FBQSxDQUFjLEtBQWQsQ0FBcUIsUUFBUSxDQUFDajJCLENBQUQsQ0FBTSxDQUNq
Q3V0RCxDQUFBLENBQVNkLENBQUEsQ0FBdUJ6c0QsQ0FBdkIsQ0FDVHVwRCxFQUFBOEQsVUFBQSxF
QUZpQyxDQUFuQyxDQUxxQyxDQWpEcUQsQ0FEbEMsQ0F3RTlEWCxRQUFTQSxHQUFlLENBQUNub0Qs
Q0FBRCxDQUFRaEgsQ0FBUixDQUFpQk4sQ0FBakIsQ0FBdUJzc0QsQ0FBdkIsQ0FBNkIsQ0FHbkQs
Q0FEdUJBLENBQUF1QixzQkFDdkIsQ0FEb0Rud0QsQ0FBQSxDQUR6QzRDLENBQUFULENBQVEsQ0FB
UkEsQ0FDa0Qyd0QsU0FBVCxDQUNwRCxHQUNFbEUsQ0FBQXVELFNBQUF4dUQsS0FBQSxDQUFtQixR
QUFRLENBQUN0RSxDQUFELENBQVEsQ0FDakMsSUFBSXl6RCxFQUFXbHdELENBQUFQLEtBQUEsQ0F0
K3BCUzB3RCxVQXMrcEJULENBQVhELEVBQW9ELEVBS3hELE9BQU9BLEVBQUFFLFNBQUEsRUFBc0JD
LENBQUFILENBQUFHLGFBQXRCLENBQThDdDFELENBQTlDLENBQTBEMEIsQ0FOaEMsQ0FBbkMsQ0FK
aUQsQ0FxSHJENnpELFFBQVNBLEdBQWlCLENBQUN0N0MsQ0FBRCxDQUFTcFosQ0FBVCxDQUFrQm1L
LENBQWxCLENBQXdCMjFCLENBQXhCLENBQW9DdjRCLENBQXBDLENBQThDLENBRXRFLEdBQUlyRSxD
QUFBLENBQVU0OEIsQ0FBVixDQUFKLENBQTJCLENBQ3pCNjBCLENBQUEsQ0FBVXY3QyxDQUFBLENB
QU8wbUIsQ0FBUCxDQUNWLElBQUt0dkIsQ0FBQW1rRCxDQUFBbmtELFNBQUwsQ0FDRSxLQUFNcFIs
RUFBQSxDQUFPLFNBQVAsQ0FBQSxDQUFrQixXQUFsQixDQUNpQytLLENBRGpDLENBQ3VDMjFCLENB
RHZDLENBQU4sQ0FHRixNQUFPNjBCLEVBQUEsQ0FBUTMwRCxDQUFSLENBTmtCLENBUTNCLE1BQU91
SCxFQVYrRCxDQW9sQnhFcXRELFFBQVNBLEdBQWMsQ0FBQ3pxRCxDQUFELENBQU80VSxDQUFQLENB
QWlCLENBQ3RDNVUsQ0FBQSxDQUFPLFNBQVAsQ0FBbUJBLENBQ25CLE9BQU8sQ0FBQyxVQUFELENB
QWEsUUFBUSxDQUFDK00sQ0FBRCxDQUFXLENBaUZyQzI5QyxRQUFTQSxFQUFlLENBQUN6MUIsQ0FB
RCxDQUFVQyxDQUFWLENBQW1CLENBQ3pDLElBQUlGLEVBQVMsRUFBYixDQUdTeitCLEVBQUksQ0FE
YixFQUFBLENBQ0EsSUFBQSxDQUFnQkEsQ0FBaEIsQ0FBb0IwK0IsQ0FBQTUvQixPQUFwQixDQUFv
Q2tCLENBQUEsRUFBcEMsQ0FBeUMsQ0FFdkMsSUFEQSxJQUFJNCtCO0FBQVFGLENBQUEsQ0FBUTEr
QixDQUFSLENBQVosQ0FDU2UsRUFBSSxDQUFiLENBQWdCQSxDQUFoQixDQUFvQjQ5QixDQUFBNy9C
LE9BQXBCLENBQW9DaUMsQ0FBQSxFQUFwQyxDQUNFLEdBQUk2OUIsQ0FBSixFQUFhRCxDQUFBLENB
QVE1OUIsQ0FBUixDQUFiLENBQXlCLFNBQVMsQ0FFcEMwOUIsRUFBQWg2QixLQUFBLENBQVltNkIs
Q0FBWixDQUx1QyxDQU96QyxNQUFPSCxFQVhrQyxDQWMzQzIxQixRQUFTQSxFQUFZLENBQUNyM0Is
Q0FBRCxDQUFXLENBQzlCLElBQUl6YixFQUFVLEVBQ2QsT0FBSW5pQixFQUFBLENBQVE0OUIsQ0FB
UixDQUFKLEVBQ0UzOUIsQ0FBQSxDQUFRMjlCLENBQVIsQ0FBa0IsUUFBUSxDQUFDNkMsQ0FBRCxD
QUFJLENBQzVCdGUsQ0FBQSxDQUFVQSxDQUFBN2IsT0FBQSxDQUFlMnVELENBQUEsQ0FBYXgwQixD
QUFiLENBQWYsQ0FEa0IsQ0FBOUIsQ0FHT3RlLENBQUFBLENBSlQsRUFLV3BpQixDQUFBLENBQVM2
OUIsQ0FBVCxDQUFKLENBQ0VBLENBQUF2NUIsTUFBQSxDQUFlLEdBQWYsQ0FERixDQUVJMUMsQ0FB
QSxDQUFTaThCLENBQVQsQ0FBSixFQUNMMzlCLENBQUEsQ0FBUTI5QixDQUFSLENBQWtCLFFBQVEs
Q0FBQzZDLENBQUQsQ0FBSWpFLENBQUosQ0FBTyxDQUMzQmlFLENBQUosR0FDRXRlLENBREYsQ0FD
WUEsQ0FBQTdiLE9BQUEsQ0FBZWsyQixDQUFBbjRCLE1BQUEsQ0FBUSxHQUFSLENBQWYsQ0FEWixD
QUQrQixDQUFqQyxDQUtPOGQsQ0FBQUEsQ0FORixFQVFBeWIsQ0FqQnVCLENBOUZoQyxNQUFPLENB
Q0xwUCxTQUFVLElBREwsQ0FFTDlDLEtBQU1BLFFBQVEsQ0FBQ25nQixDQUFELENBQVFoSCxDQUFS
LENBQWlCTixDQUFqQixDQUF1QixDQWlDbkNpeEQsUUFBU0EsRUFBaUIsQ0FBQy95QyxDQUFELENB
QVU4bkIsQ0FBVixDQUFpQixDQUd6QyxJQUFJa3JCLEVBQWM1d0QsQ0FBQW1ILEtBQUEsQ0FBYSxj
QUFiLENBQWR5cEQsRUFBOEM5dUQsRUFBQSxFQUFsRCxDQUNJK3VELEVBQWtCLEVBQ3RCbjFELEVB
QUEsQ0FBUWtpQixDQUFSLENBQWlCLFFBQVEsQ0FBQ29OLENBQUQsQ0FBWSxDQUNuQyxHQUFZLENB
QVosQ0FBSTBhLENBQUosRUFBaUJrckIsQ0FBQSxDQUFZNWxDLENBQVosQ0FBakIsQ0FDRTRsQyxD
QUFBLENBQVk1bEMsQ0FBWixDQUNBLEVBRDBCNGxDLENBQUEsQ0FBWTVsQyxDQUFaLENBQzFCLEVB
RG9ELENBQ3BELEVBRHlEMGEsQ0FDekQsQ0FBSWtyQixDQUFBLENBQVk1bEMsQ0FBWixDQUFKLEdB
QStCLEVBQVUsQ0FBVixDQUFFMGEsQ0FBRixDQUEvQixFQUNFbXJCLENBQUE5dkQsS0FBQSxDQUFx
QmlxQixDQUFyQixDQUorQixDQUFyQyxDQVFBaHJCLEVBQUFtSCxLQUFBLENBQWEsY0FBYixDQUE2
QnlwRCxDQUE3QixDQUNBLE9BQU9DLEVBQUE1ckQsS0FBQSxDQUFxQixHQUFyQixDQWRrQyxDQThC
M0M2ckQsUUFBU0EsRUFBa0IsQ0FBQzl0QyxDQUFELENBQVMsQ0FDbEMsR0FBaUIsQ0FBQSxDQUFq
QixHQUFJckksQ0FBSixFQUF5QjNULENBQUErcEQsT0FBekIsQ0FBd0MsQ0FBeEMsR0FBOENwMkMs
Q0FBOUMsQ0FBd0QsQ0FDdEQsSUFBSTRlLEVBQWFtM0IsQ0FBQSxDQUFhMXRDLENBQWIsRUFBdUIs
RUFBdkIsQ0FDakIsSUFBS0MsQ0FBQUEsQ0FBTCxDQUFhLENBMUNmLElBQUlzVztBQUFhbzNCLENB
QUEsQ0EyQ0ZwM0IsQ0EzQ0UsQ0FBMkIsQ0FBM0IsQ0FDakI3NUIsRUFBQTA1QixVQUFBLENBQWVH
LENBQWYsQ0F5Q2UsQ0FBYixJQUVPLElBQUssQ0FBQS8zQixFQUFBLENBQU93aEIsQ0FBUCxDQUFj
QyxDQUFkLENBQUwsQ0FBNEIsQ0FFbkJ1UyxJQUFBQSxFQURHazdCLENBQUFsN0IsQ0FBYXZTLENB
QWJ1UyxDQUNIQSxDQW5CZGdFLEVBQVFpM0IsQ0FBQSxDQW1Ca0JsM0IsQ0FuQmxCLENBQTRCL0Qs
Q0FBNUIsQ0FtQk1BLENBbEJka0UsRUFBVysyQixDQUFBLENBQWdCajdCLENBQWhCLENBa0JlK0Qs
Q0FsQmYsQ0FrQkcvRCxDQWpCbEJnRSxFQUFRbTNCLENBQUEsQ0FBa0JuM0IsQ0FBbEIsQ0FBeUIs
Q0FBekIsQ0FpQlVoRSxDQWhCbEJrRSxFQUFXaTNCLENBQUEsQ0FBa0JqM0IsQ0FBbEIsQ0FBNkIs
RUFBN0IsQ0FDUEYsRUFBSixFQUFhQSxDQUFBcCtCLE9BQWIsRUFDRTBYLENBQUErSyxTQUFBLENB
QWtCN2QsQ0FBbEIsQ0FBMkJ3NUIsQ0FBM0IsQ0FFRUUsRUFBSixFQUFnQkEsQ0FBQXQrQixPQUFo
QixFQUNFMFgsQ0FBQWdMLFlBQUEsQ0FBcUI5ZCxDQUFyQixDQUE4QjA1QixDQUE5QixDQVNtQyxD
QUptQixDQVN4RHpXLENBQUEsQ0FBUzNoQixFQUFBLENBQVkwaEIsQ0FBWixDQVZ5QixDQTlEcEMs
SUFBSUMsQ0FFSmpjLEVBQUE1SCxPQUFBLENBQWFNLENBQUEsQ0FBS3FHLENBQUwsQ0FBYixDQUF5
QitxRCxDQUF6QixDQUE2QyxDQUFBLENBQTdDLENBRUFweEQsRUFBQWc1QixTQUFBLENBQWMsT0FB
ZCxDQUF1QixRQUFRLENBQUNqOEIsQ0FBRCxDQUFRLENBQ3JDcTBELENBQUEsQ0FBbUI5cEQsQ0FB
QTYxQyxNQUFBLENBQVluOUMsQ0FBQSxDQUFLcUcsQ0FBTCxDQUFaLENBQW5CLENBRHFDLENBQXZD
LENBS2EsVUFBYixHQUFJQSxDQUFKLEVBQ0VpQixDQUFBNUgsT0FBQSxDQUFhLFFBQWIsQ0FBdUIs
UUFBUSxDQUFDMnhELENBQUQsQ0FBU0MsQ0FBVCxDQUFvQixDQUVqRCxJQUFJQyxFQUFNRixDQUFO
RSxDQUFlLENBQ25CLElBQUlBLENBQUosSUFBYUQsQ0FBYixDQUF5QixDQUF6QixFQUE2QixDQUMz
QixJQUFJcHpDLEVBQVU4eUMsQ0FBQSxDQUFhMXBELENBQUE2MUMsTUFBQSxDQUFZbjlDLENBQUEs
Q0FBS3FHLENBQUwsQ0FBWixDQUFiLENBQ2RrckQsRUFBQSxHQUFRdDJDLENBQVIsRUFRQTRlLENB
Q0osQ0FEaUJvM0IsQ0FBQSxDQVBBL3lDLENBT0EsQ0FBMkIsQ0FBM0IsQ0FDakIsQ0FBQWxlLENB
QUEwNUIsVUFBQSxDQUFlRyxDQUFmLENBVEksR0FhQUEsQ0FDSixDQURpQm8zQixDQUFBLENBWEcv
eUMsQ0FXSCxDQUE0QixFQUE1QixDQUNqQixDQUFBbGUsQ0FBQTQ1QixhQUFBLENBQWtCQyxDQUFs
QixDQWRJLENBRjJCLENBSG9CLENBQW5ELENBWGlDLENBRmhDLENBRDhCLENBQWhDLENBRitCLENB
eW9HeEN3eUIsUUFBU0EsR0FBb0IsQ0FBQ253RCxDQUFELENBQVUsQ0E2RXJDczFELFFBQVNBLEVB
QWlCLENBQUNsbUMsQ0FBRCxDQUFZbW1DLENBQVosQ0FBeUIsQ0FDN0NBLENBQUosRUFBb0IsQ0FB
QUMsQ0FBQSxDQUFXcG1DLENBQVgsQ0FBcEIsRUFDRWxZLENBQUErSyxTQUFBLENBQWtCa04sQ0FB
bEIsQ0FBNEJDLENBQTVCLENBQ0EsQ0FBQW9tQyxDQUFBLENBQVdwbUMsQ0FBWCxDQUFBLENBQXdC
LENBQUEsQ0FGMUIsRUFHWW1tQyxDQUFBQSxDQUhaLEVBRzJCQyxDQUFBLENBQVdwbUMsQ0FBWCxD
QUgzQixHQUlFbFksQ0FBQWdMLFlBQUEsQ0FBcUJpTixDQUFyQixDQUErQkMsQ0FBL0IsQ0FDQSxD
QUFBb21DLENBQUEsQ0FBV3BtQyxDQUFYLENBQUEsQ0FBd0IsQ0FBQSxDQUwxQixDQURpRCxDQTdF
ZDtBQXVGckNxbUMsUUFBU0EsRUFBbUIsQ0FBQ0MsQ0FBRCxDQUFxQkMsQ0FBckIsQ0FBOEIsQ0FD
eERELENBQUEsQ0FBcUJBLENBQUEsQ0FBcUIsR0FBckIsQ0FBMkJycEQsRUFBQSxDQUFXcXBELENB
QVgsQ0FBK0IsR0FBL0IsQ0FBM0IsQ0FBaUUsRUFFdEZKLEVBQUEsQ0FBa0JNLEVBQWxCLENBQWdD
RixDQUFoQyxDQUFnRSxDQUFBLENBQWhFLEdBQW9EQyxDQUFwRCxDQUNBTCxFQUFBLENBQWtCTyxF
QUFsQixDQUFrQ0gsQ0FBbEMsQ0FBa0UsQ0FBQSxDQUFsRSxHQUFzREMsQ0FBdEQsQ0FKd0QsQ0F2
RnJCLElBQ2pDdkYsRUFBT3B3RCxDQUFBb3dELEtBRDBCLENBRWpDamhDLEVBQVdudkIsQ0FBQW12
QixTQUZzQixDQUdqQ3FtQyxFQUFhLEVBSG9CLENBSWpDbkYsRUFBTXJ3RCxDQUFBcXdELElBSjJC
LENBS2pDQyxFQUFRdHdELENBQUFzd0QsTUFMeUIsQ0FNakM3QixFQUFhenVELENBQUF5dUQsV0FO
b0IsQ0FPakN2M0MsRUFBV2xYLENBQUFrWCxTQUVmcytDLEVBQUEsQ0FBV0ssRUFBWCxDQUFBLENB
QTRCLEVBQUVMLENBQUEsQ0FBV0ksRUFBWCxDQUFGLENBQTRCem1DLENBQUFwTixTQUFBLENBQWtC
NnpDLEVBQWxCLENBQTVCLENBRTVCeEYsRUFBQUYsYUFBQSxDQUVBNEYsUUFBb0IsQ0FBQ0osQ0FB
RCxDQUFxQnB0QyxDQUFyQixDQUE0QmxiLENBQTVCLENBQXdDLENBQ3REa2IsQ0FBSixHQUFjbnBC
LENBQWQsRUFnREtpeEQsQ0FBQSxTQUdMLEdBRkVBLENBQUEsU0FFRixDQUZlLEVBRWYsRUFBQUMs
Q0FBQSxDQUFJRCxDQUFBLFNBQUosQ0FsRDJCc0YsQ0FrRDNCLENBbEQrQ3RvRCxDQWtEL0MsQ0Fu
REEsR0F1RElnakQsQ0FBQSxTQUdKLEVBRkVFLENBQUEsQ0FBTUYsQ0FBQSxTQUFOLENBckQ0QnNG
LENBcUQ1QixDQXJEZ0R0b0QsQ0FxRGhELENBRUYsQ0FBSTJvRCxFQUFBLENBQWMzRixDQUFBLFNB
QWQsQ0FBSixHQUNFQSxDQUFBLFNBREYsQ0FDZWp4RCxDQURmLENBMURBLENBS0tzRSxHQUFBLENB
QVU2a0IsQ0FBVixDQUFMLENBSU1BLENBQUosRUFDRWdvQyxDQUFBLENBQU1GLENBQUF4QixPQUFO
LENBQW1COEcsQ0FBbkIsQ0FBdUN0b0QsQ0FBdkMsQ0FDQSxDQUFBaWpELENBQUEsQ0FBSUQsQ0FB
QXZCLFVBQUosQ0FBb0I2RyxDQUFwQixDQUF3Q3RvRCxDQUF4QyxDQUZGLEdBSUVpakQsQ0FBQSxD
QUFJRCxDQUFBeEIsT0FBSixDQUFpQjhHLENBQWpCLENBQXFDdG9ELENBQXJDLENBQ0EsQ0FBQWtq
RCxDQUFBLENBQU1GLENBQUF2QixVQUFOLENBQXNCNkcsQ0FBdEIsQ0FBMEN0b0QsQ0FBMUMsQ0FM
RixDQUpGLEVBQ0VrakQsQ0FBQSxDQUFNRixDQUFBeEIsT0FBTixDQUFtQjhHLENBQW5CLENBQXVD
dG9ELENBQXZDLENBQ0EsQ0FBQWtqRCxDQUFBLENBQU1GLENBQUF2QixVQUFOLENBQXNCNkcsQ0FB
dEIsQ0FBMEN0b0QsQ0FBMUMsQ0FGRixDQVlJZ2pELEVBQUF0QixTQUFKLEVBQ0V3RyxDQUFBLENB
QWtCVSxFQUFsQixDQUFpQyxDQUFBLENBQWpDLENBRUEsQ0FEQTVGLENBQUFsQixPQUNBLENBRGNr
QixDQUFBakIsU0FDZCxDQUQ4Qmh3RCxDQUM5QixDQUFBczJELENBQUEsQ0FBb0IsRUFBcEIsQ0FB
d0IsSUFBeEIsQ0FIRixHQUtFSCxDQUFBLENBQWtCVSxFQUFsQjtBQUFpQyxDQUFBLENBQWpDLENB
R0EsQ0FGQTVGLENBQUFsQixPQUVBLENBRmM2RyxFQUFBLENBQWMzRixDQUFBeEIsT0FBZCxDQUVk
LENBREF3QixDQUFBakIsU0FDQSxDQURnQixDQUFDaUIsQ0FBQWxCLE9BQ2pCLENBQUF1RyxDQUFB
LENBQW9CLEVBQXBCLENBQXdCckYsQ0FBQWxCLE9BQXhCLENBUkYsQ0FpQkUrRyxFQUFBLENBREU3
RixDQUFBdEIsU0FBSixFQUFxQnNCLENBQUF0QixTQUFBLENBQWM0RyxDQUFkLENBQXJCLENBQ2tC
djJELENBRGxCLENBRVdpeEQsQ0FBQXhCLE9BQUEsQ0FBWThHLENBQVosQ0FBSixDQUNXLENBQUEs
Q0FEWCxDQUVJdEYsQ0FBQXZCLFVBQUEsQ0FBZTZHLENBQWYsQ0FBSixDQUNXLENBQUEsQ0FEWCxD
QUdXLElBR2xCRCxFQUFBLENBQW9CQyxDQUFwQixDQUF3Q08sQ0FBeEMsQ0FDQXhILEVBQUF5Qixh
QUFBLENBQXdCd0YsQ0FBeEIsQ0FBNENPLENBQTVDLENBQTJEN0YsQ0FBM0QsQ0E3QzBELENBYnZC
LENBK0Z2QzJGLFFBQVNBLEdBQWEsQ0FBQ3oyRCxDQUFELENBQU0sQ0FDMUIsR0FBSUEsQ0FBSixD
QUNFLElBQVN1RSxJQUFBQSxDQUFULEdBQWlCdkUsRUFBakIsQ0FDRSxHQUFJQSxDQUFBYSxlQUFB
LENBQW1CMEQsQ0FBbkIsQ0FBSixDQUNFLE1BQU8sQ0FBQSxDQUliLE9BQU8sQ0FBQSxDQVJtQixD
QXQ1eEI1QixJQUFJcXlELEdBQXNCLG9CQUExQixDQWdCSTd4RCxFQUFZQSxRQUFRLENBQUNnb0Qs
Q0FBRCxDQUFTLENBQUMsTUFBT3pzRCxFQUFBLENBQVN5c0QsQ0FBVCxDQUFBLENBQW1CQSxDQUFB
My9DLFlBQUEsRUFBbkIsQ0FBMEMyL0MsQ0FBbEQsQ0FoQmpDLENBaUJJbHNELEdBQWlCVixNQUFB
dUQsVUFBQTdDLGVBakJyQixDQTZCSThRLEdBQVlBLFFBQVEsQ0FBQ283QyxDQUFELENBQVMsQ0FB
QyxNQUFPenNELEVBQUEsQ0FBU3lzRCxDQUFULENBQUEsQ0FBbUJBLENBQUE3d0MsWUFBQSxFQUFu
QixDQUEwQzZ3QyxDQUFsRCxDQTdCakMsQ0F3REkzNEIsRUF4REosQ0F5REl2ckIsQ0F6REosQ0Ew
REk2RSxFQTFESixDQTJESWhMLEdBQW9CLEVBQUFBLE1BM0R4QixDQTRESTBDLEdBQW9CLEVBQUFB
LE9BNUR4QixDQTZESVMsR0FBb0IsRUFBQUEsS0E3RHhCLENBOERJcEMsR0FBb0J0RCxNQUFBdUQs
VUFBQUQsU0E5RHhCLENBK0RJSSxHQUFvQjFELE1BQUEwRCxlQS9EeEIsQ0FnRUk2QixHQUFvQjVG
LENBQUEsQ0FBTyxJQUFQLENBaEV4QixDQW1FSXNNO0FBQW9Cek0sQ0FBQXlNLFFBQXBCQSxHQUF1
Q3pNLENBQUF5TSxRQUF2Q0EsQ0FBd0QsRUFBeERBLENBbkVKLENBb0VJMEYsRUFwRUosQ0FxRUly
USxHQUFvQixDQU14QjJ5QixHQUFBLENBQU94MEIsQ0FBQWkzRCxhQTZQUHp6RCxFQUFBbWlCLFFB
QUEsQ0FBZSxFQXNCZmxpQixHQUFBa2lCLFFBQUEsQ0FBbUIsRUFzSW5CLEtBQUlobEIsRUFBVW9t
QixLQUFBcG1CLFFBQWQsQ0F1RUlvRixHQUFxQiwrRkF2RXpCLENBNkVJK1gsRUFBT0EsUUFBUSxD
QUFDbmMsQ0FBRCxDQUFRLENBQ3pCLE1BQU9qQixFQUFBLENBQVNpQixDQUFULENBQUEsQ0FBa0JB
LENBQUFtYyxLQUFBLEVBQWxCLENBQWlDbmMsQ0FEZixDQTdFM0IsQ0FvRkkyaEQsR0FBa0JBLFFB
QVEsQ0FBQ3dLLENBQUQsQ0FBSSxDQUNoQyxNQUFPQSxFQUFBcmtELFFBQUEsQ0FBVSwrQkFBVixD
QUEyQyxNQUEzQyxDQUFBQSxRQUFBLENBQ1UsT0FEVixDQUNtQixPQURuQixDQUR5QixDQXBGbEMs
Q0FrWUl3SSxHQUFNQSxRQUFRLEVBQUcsQ0FDbkIsR0FBSWpPLENBQUEsQ0FBVWlPLEVBQUFpbEQs
VUFBVixDQUFKLENBQThCLE1BQU9qbEQsR0FBQWlsRCxVQUVyQyxLQUFJQyxFQUFTLEVBQUcsQ0FB
QW4zRCxDQUFBb0wsY0FBQSxDQUF1QixVQUF2QixDQUFILEVBQ0csQ0FBQXBMLENBQUFvTCxjQUFB
LENBQXVCLGVBQXZCLENBREgsQ0FHYixJQUFLK3JELENBQUFBLENBQUwsQ0FDRSxHQUFJLENBRUYs
SUFBSUMsUUFBSixDQUFhLEVBQWIsQ0FGRSxDQUlGLE1BQU9odUQsQ0FBUCxDQUFVLENBQ1YrdEQs
Q0FBQSxDQUFTLENBQUEsQ0FEQyxDQUtkLE1BQVFsbEQsR0FBQWlsRCxVQUFSO0FBQXdCQyxDQWhC
TCxDQWxZckIsQ0EyYkl0cEQsR0FBS0EsUUFBUSxFQUFHLENBQ2xCLEdBQUk3SixDQUFBLENBQVU2
SixFQUFBd3BELE1BQVYsQ0FBSixDQUF5QixNQUFPeHBELEdBQUF3cEQsTUFDaEMsS0FBSUMsQ0FB
SixDQUNJOTFELENBREosQ0FDT2EsRUFBS29JLEVBQUFuSyxPQURaLENBQ21DMEssQ0FEbkMsQ0FD
MkNDLENBQzNDLEtBQUt6SixDQUFMLENBQVMsQ0FBVCxDQUFZQSxDQUFaLENBQWdCYSxDQUFoQixD
QUFvQixFQUFFYixDQUF0QixDQUVFLEdBREF3SixDQUNJLENBREtQLEVBQUEsQ0FBZWpKLENBQWYs
Q0FDTCxDQUFBODFELENBQUEsQ0FBS3QzRCxDQUFBb0wsY0FBQSxDQUF1QixHQUF2QixDQUE2Qkos
Q0FBQXZCLFFBQUEsQ0FBZSxHQUFmLENBQW9CLEtBQXBCLENBQTdCLENBQTBELEtBQTFELENBQVQs
Q0FBMkUsQ0FDekV3QixDQUFBLENBQU9xc0QsQ0FBQTVzRCxhQUFBLENBQWdCTSxDQUFoQixDQUF5
QixJQUF6QixDQUNQLE1BRnlFLENBTTdFLE1BQVE2QyxHQUFBd3BELE1BQVIsQ0FBbUJwc0QsQ0Fa
RCxDQTNicEIsQ0F1c0JJUixHQUFpQixDQUFDLEtBQUQsQ0FBUSxVQUFSLENBQW9CLEtBQXBCLENB
QTJCLE9BQTNCLENBdnNCckIsQ0FzZ0NJNEMsR0FBb0IsUUF0Z0N4QixDQThnQ0lNLEdBQWtCLENB
QUEsQ0E5Z0N0QixDQStnQ0lhLEVBL2dDSixDQXVxQ0kvTixHQUFvQixDQXZxQ3hCLENBeXFDSStJ
LEdBQWlCLENBenFDckIsQ0FrcERJc0ksR0FBVSxDQUNaeWxELEtBQU0sT0FETSxDQUVaQyxNQUFP
LENBRkssQ0FHWkMsTUFBTyxDQUhLLENBSVpDLElBQUssQ0FKTyxDQUtaQyxTQUFVLG1CQUxFLENB
bVFkOW9ELEVBQUFxdUIsUUFBQSxDQUFpQixPQTVpRnNCLEtBOGlGbkM3ZCxHQUFVeFEsQ0FBQXNX
LE1BQVY5RixDQUF5QixFQTlpRlUsQ0EraUZuQ0UsR0FBTyxDQVdYMVEsRUFBQUgsTUFBQSxDQUFl
a3BELFFBQVEsQ0FBQ256RCxDQUFELENBQU8sQ0FFNUIsTUFBTyxLQUFBMGdCLE1BQUEsQ0FBVzFn
QixDQUFBLENBQUssSUFBQXk0QixRQUFMLENBQVgsQ0FBUCxFQUF5QyxFQUZiLENBUTlCLEtBQUkv
Z0IsR0FBdUIsaUJBQTNCLENBQ0lJLEdBQWtCLGFBRHRCLENBRUlzN0MsR0FBaUIsQ0FBRUMsV0FB
WSxVQUFkO0FBQTBCQyxXQUFZLFdBQXRDLENBRnJCLENBR0loNkMsR0FBZTdkLENBQUEsQ0FBTyxR
QUFQLENBSG5CLENBa0JJK2QsR0FBb0IsNEJBbEJ4QixDQW1CSW5CLEdBQWMsV0FuQmxCLENBb0JJ
RyxHQUFrQixXQXBCdEIsQ0FxQklNLEdBQW1CLHlFQXJCdkIsQ0F1QklILEdBQVUsQ0FDWixPQUFV
LENBQUMsQ0FBRCxDQUFJLDhCQUFKLENBQW9DLFdBQXBDLENBREUsQ0FHWixNQUFTLENBQUMsQ0FB
RCxDQUFJLFNBQUosQ0FBZSxVQUFmLENBSEcsQ0FJWixJQUFPLENBQUMsQ0FBRCxDQUFJLG1CQUFK
LENBQXlCLHFCQUF6QixDQUpLLENBS1osR0FBTSxDQUFDLENBQUQsQ0FBSSxnQkFBSixDQUFzQixr
QkFBdEIsQ0FMTSxDQU1aLEdBQU0sQ0FBQyxDQUFELENBQUksb0JBQUosQ0FBMEIsdUJBQTFCLENB
Tk0sQ0FPWixTQUFZLENBQUMsQ0FBRCxDQUFJLEVBQUosQ0FBUSxFQUFSLENBUEEsQ0FVZEEsR0FB
QTQ2QyxTQUFBLENBQW1CNTZDLEVBQUEvSixPQUNuQitKLEdBQUE2NkMsTUFBQSxDQUFnQjc2QyxF
QUFBODZDLE1BQWhCLENBQWdDOTZDLEVBQUErNkMsU0FBaEMsQ0FBbUQvNkMsRUFBQWc3QyxRQUFu
RCxDQUFxRWg3QyxFQUFBaTdDLE1BQ3JFajdDO0VBQUFrN0MsR0FBQSxDQUFhbDdDLEVBQUFtN0Ms
R0FrVWIsS0FBSXZxRCxHQUFrQmEsQ0FBQS9LLFVBQWxCa0ssQ0FBcUMsQ0FDdkN3cUQsTUFBT0Es
UUFBUSxDQUFDbHhELENBQUQsQ0FBSyxDQUdsQm14RCxRQUFTQSxFQUFPLEVBQUcsQ0FDYkMsQ0FB
SixHQUNBQSxDQUNBLENBRFEsQ0FBQSxDQUNSLENBQUFweEQsQ0FBQSxFQUZBLENBRGlCLENBRm5C
LElBQUlveEQsRUFBUSxDQUFBLENBU2dCLFdBQTVCLEdBQUkxNEQsQ0FBQW9oQixXQUFKLENBQ0VD
LFVBQUEsQ0FBV28zQyxDQUFYLENBREYsRUFHRSxJQUFBMXFELEdBQUEsQ0FBUSxrQkFBUixDQUE0
QjBxRCxDQUE1QixDQUdBLENBQUE1cEQsQ0FBQSxDQUFPOU8sQ0FBUCxDQUFBZ08sR0FBQSxDQUFr
QixNQUFsQixDQUEwQjBxRCxDQUExQixDQU5GLENBVmtCLENBRG1CLENBcUJ2QzUwRCxTQUFVQSxR
QUFRLEVBQUcsQ0FDbkIsSUFBSWxDLEVBQVEsRUFDWmYsRUFBQSxDQUFRLElBQVIsQ0FBYyxRQUFR
LENBQUN3SSxDQUFELENBQUksQ0FBRXpILENBQUFzRSxLQUFBLENBQVcsRUFBWCxDQUFnQm1ELENB
QWhCLENBQUYsQ0FBMUIsQ0FDQSxPQUFPLEdBQVAsQ0FBYXpILENBQUF3SSxLQUFBLENBQVcsSUFB
WCxDQUFiLENBQWdDLEdBSGIsQ0FyQmtCLENBMkJ2Q3kxQyxHQUFJQSxRQUFRLENBQUN0NkMsQ0FB
RCxDQUFRLENBQ2hCLE1BQWlCLEVBQVYsRUFBQ0EsQ0FBRCxDQUFlMkQsQ0FBQSxDQUFPLElBQUEs
Q0FBSzNELENBQUwsQ0FBUCxDQUFmLENBQXFDMkQsQ0FBQSxDQUFPLElBQUEsQ0FBSyxJQUFBM0ks
T0FBTCxDQUFtQmdGLENBQW5CLENBQVAsQ0FENUIsQ0EzQm1CLENBK0J2Q2hGLE9BQVEsQ0EvQitC
LENBZ0N2QzJGLEtBQU1BLEVBaENpQyxDQWlDdkMxRSxLQUFNLEVBQUFBLEtBakNpQyxDQWtDdkNp
RSxPQUFRLEVBQUFBLE9BbEMrQixDQUF6QyxDQTBDSWdjLEdBQWUsRUFDbkI1Z0IsRUFBQSxDQUFR
LDJEQUFBLE1BQUEsQ0FBQSxHQUFBLENBQVIsQ0FBZ0YsUUFBUSxDQUFDZSxDQUFELENBQVEsQ0FD
OUY2ZixFQUFBLENBQWFyYyxDQUFBLENBQVV4RCxDQUFWLENBQWIsQ0FBQSxDQUFpQ0EsQ0FENkQs
Q0FBaEcsQ0FHQSxLQUFJOGYsR0FBbUIsRUFDdkI3Z0IsRUFBQSxDQUFRLGtEQUFBLE1BQUEsQ0FB
QSxHQUFBLENBQVI7QUFBdUUsUUFBUSxDQUFDZSxDQUFELENBQVEsQ0FDckY4ZixFQUFBLENBQWlC
OWYsQ0FBakIsQ0FBQSxDQUEwQixDQUFBLENBRDJELENBQXZGLENBR0EsS0FBSWdnQixHQUFlLENB
Q2pCLFlBQWUsV0FERSxDQUVqQixZQUFlLFdBRkUsQ0FHakIsTUFBUyxLQUhRLENBSWpCLE1BQVMs
S0FKUSxDQUtqQixVQUFhLFNBTEksQ0FxQm5CL2dCLEVBQUEsQ0FBUSxDQUNOeUwsS0FBTW1ULEVB
REEsQ0FFTm01QyxXQUFZcDZDLEVBRk4sQ0FHTjBlLFFBOVhGMjdCLFFBQXNCLENBQUNuMEQsQ0FB
RCxDQUFPLENBQzNCLElBQVMxRCxJQUFBQSxDQUFULEdBQWdCc2UsR0FBQSxDQUFRNWEsQ0FBQTJh
LE1BQVIsQ0FBaEIsQ0FDRSxNQUFPLENBQUEsQ0FFVCxPQUFPLENBQUEsQ0FKb0IsQ0EyWHJCLENB
QVIsQ0FJRyxRQUFRLENBQUM5WCxDQUFELENBQUsyRCxDQUFMLENBQVcsQ0FDcEI0RCxDQUFBLENB
QU81RCxDQUFQLENBQUEsQ0FBZTNELENBREssQ0FKdEIsQ0FRQTFHLEVBQUEsQ0FBUSxDQUNOeUws
S0FBTW1ULEVBREEsQ0FFTnJSLGNBQWVvUyxFQUZULENBSU5yVSxNQUFPQSxRQUFRLENBQUNoSCxD
QUFELENBQVUsQ0FFdkIsTUFBTytELEVBQUFvRCxLQUFBLENBQVluSCxDQUFaLENBQXFCLFFBQXJC
LENBQVAsRUFBeUNxYixFQUFBLENBQW9CcmIsQ0FBQXdiLFdBQXBCLEVBQTBDeGIsQ0FBMUMsQ0FB
bUQsQ0FBQyxlQUFELENBQWtCLFFBQWxCLENBQW5ELENBRmxCLENBSm5CLENBU04rSSxhQUFjQSxR
QUFRLENBQUMvSSxDQUFELENBQVUsQ0FFOUIsTUFBTytELEVBQUFvRCxLQUFBLENBQVluSCxDQUFa
LENBQXFCLGVBQXJCLENBQVAsRUFBZ0QrRCxDQUFBb0QsS0FBQSxDQUFZbkgsQ0FBWixDQUFxQix5
QkFBckIsQ0FGbEIsQ0FUMUIsQ0FjTmdKLFdBQVlvUyxFQWROLENBZ0JON1UsU0FBVUEsUUFBUSxD
QUFDdkcsQ0FBRCxDQUFVLENBQzFCLE1BQU9xYixHQUFBLENBQW9CcmIsQ0FBcEI7QUFBNkIsV0FB
N0IsQ0FEbUIsQ0FoQnRCLENBb0JOczZCLFdBQVlBLFFBQVEsQ0FBQ3Q2QixDQUFELENBQVUrRixD
QUFWLENBQWdCLENBQ2xDL0YsQ0FBQTJ6RCxnQkFBQSxDQUF3QjV0RCxDQUF4QixDQURrQyxDQXBC
OUIsQ0F3Qk40WCxTQUFVakQsRUF4QkosQ0EwQk5rNUMsSUFBS0EsUUFBUSxDQUFDNXpELENBQUQs
Q0FBVStGLENBQVYsQ0FBZ0J0SixDQUFoQixDQUF1QixDQUNsQ3NKLENBQUEsQ0FBT2lSLEVBQUEs
Q0FBVWpSLENBQVYsQ0FFUCxJQUFJakgsQ0FBQSxDQUFVckMsQ0FBVixDQUFKLENBQ0V1RCxDQUFB
aU8sTUFBQSxDQUFjbEksQ0FBZCxDQUFBLENBQXNCdEosQ0FEeEIsS0FHRSxPQUFPdUQsRUFBQWlP
LE1BQUEsQ0FBY2xJLENBQWQsQ0FOeUIsQ0ExQjlCLENBb0NOckcsS0FBTUEsUUFBUSxDQUFDTSxD
QUFELENBQVUrRixDQUFWLENBQWdCdEosQ0FBaEIsQ0FBdUIsQ0FDbkMsSUFBSW5CLEVBQVcwRSxD
QUFBMUUsU0FDZixJQUFJQSxDQUFKLEdBQWlCZ0osRUFBakIsRUE3dENzQnV2RCxDQTZ0Q3RCLEdB
QW1DdjRELENBQW5DLEVBM3RDb0JrMEIsQ0EydENwQixHQUF1RWwwQixDQUF2RSxDQUlBLEdBREl3
NEQsQ0FDQSxDQURpQjd6RCxDQUFBLENBQVU4RixDQUFWLENBQ2pCLENBQUF1VyxFQUFBLENBQWF3
M0MsQ0FBYixDQUFKLENBQ0UsR0FBSWgxRCxDQUFBLENBQVVyQyxDQUFWLENBQUosQ0FDUUEsQ0FB
TixFQUNFdUQsQ0FBQSxDQUFRK0YsQ0FBUixDQUNBLENBRGdCLENBQUEsQ0FDaEIsQ0FBQS9GLENB
QUE4YSxhQUFBLENBQXFCL1UsQ0FBckIsQ0FBMkIrdEQsQ0FBM0IsQ0FGRixHQUlFOXpELENBQUEs
Q0FBUStGLENBQVIsQ0FDQSxDQURnQixDQUFBLENBQ2hCLENBQUEvRixDQUFBMnpELGdCQUFBLENB
QXdCRyxDQUF4QixDQUxGLENBREYsS0FTRSxPQUFROXpELEVBQUEsQ0FBUStGLENBQVIsQ0FBRCxF
QUNFZ3VELENBQUMvekQsQ0FBQTJ1QixXQUFBcWxDLGFBQUEsQ0FBZ0NqdUQsQ0FBaEMsQ0FBRGd1
RCxFQUEwQ3oxRCxDQUExQ3kxRCxXQURGLENBRUVELENBRkYsQ0FHRS80RCxDQWJiLEtBZU8sSUFB
SStELENBQUEsQ0FBVXJDLENBQVYsQ0FBSixDQUNMdUQsQ0FBQThhLGFBQUEsQ0FBcUIvVSxDQUFy
QixDQUEyQnRKLENBQTNCLENBREssS0FFQSxJQUFJdUQsQ0FBQXdGLGFBQUosQ0FLTCxNQUZJeXVE
LEVBRUcsQ0FGR2owRCxDQUFBd0YsYUFBQSxDQUFxQk8sQ0FBckIsQ0FBMkIsQ0FBM0IsQ0FFSCxD
QUFRLElBQVIsR0FBQWt1RCxDQUFBLENBQWVsNUQsQ0FBZixDQUEyQms1RCxDQTVCRCxDQXBDL0Is
Q0FvRU54MEQsS0FBTUEsUUFBUSxDQUFDTyxDQUFELENBQVUrRixDQUFWLENBQWdCdEosQ0FBaEIs
Q0FBdUIsQ0FDbkMsR0FBSXFDLENBQUEsQ0FBVXJDLENBQVYsQ0FBSixDQUNFdUQsQ0FBQSxDQUFR
K0YsQ0FBUixDQUFBLENBQWdCdEosQ0FEbEIsS0FHRSxPQUFPdUQsRUFBQSxDQUFRK0YsQ0FBUixD
QUowQixDQXBFL0I7QUE0RU5pd0IsS0FBTyxRQUFRLEVBQUcsQ0FJaEJrK0IsUUFBU0EsRUFBTyxD
QUFDbDBELENBQUQsQ0FBVXZELENBQVYsQ0FBaUIsQ0FDL0IsR0FBSW9DLENBQUEsQ0FBWXBDLENB
QVosQ0FBSixDQUF3QixDQUN0QixJQUFJbkIsRUFBVzBFLENBQUExRSxTQUNmLE9BQVFBLEVBQUQs
R0FBY0MsRUFBZCxFQUFtQ0QsQ0FBbkMsR0FBZ0RnSixFQUFoRCxDQUFrRXRFLENBQUF5WSxZQUFs
RSxDQUF3RixFQUZ6RSxDQUl4QnpZLENBQUF5WSxZQUFBLENBQXNCaGMsQ0FMUyxDQUhqQ3kzRCxD
QUFBQyxJQUFBLENBQWMsRUFDZCxPQUFPRCxFQUZTLENBQVosRUE1RUEsQ0F5Rk56eEQsSUFBS0Es
UUFBUSxDQUFDekMsQ0FBRCxDQUFVdkQsQ0FBVixDQUFpQixDQUM1QixHQUFJb0MsQ0FBQSxDQUFZ
cEMsQ0FBWixDQUFKLENBQXdCLENBQ3RCLEdBQUl1RCxDQUFBbzBELFNBQUosRUFBK0MsUUFBL0Ms
R0FBd0JyMEQsRUFBQSxDQUFVQyxDQUFWLENBQXhCLENBQXlELENBQ3ZELElBQUlxZixFQUFTLEVB
Q2IzakIsRUFBQSxDQUFRc0UsQ0FBQXVqQixRQUFSLENBQXlCLFFBQVEsQ0FBQ3BWLENBQUQsQ0FB
UyxDQUNwQ0EsQ0FBQWttRCxTQUFKLEVBQ0VoMUMsQ0FBQXRlLEtBQUEsQ0FBWW9OLENBQUExUixN
QUFaLEVBQTRCMFIsQ0FBQTZuQixLQUE1QixDQUZzQyxDQUExQyxDQUtBLE9BQXlCLEVBQWxCLEdB
QUEzVyxDQUFBamtCLE9BQUEsQ0FBc0IsSUFBdEIsQ0FBNkJpa0IsQ0FQbUIsQ0FTekQsTUFBT3Jm
LEVBQUF2RCxNQVZlLENBWXhCdUQsQ0FBQXZELE1BQUEsQ0FBZ0JBLENBYlksQ0F6RnhCLENBeUdO
NEgsS0FBTUEsUUFBUSxDQUFDckUsQ0FBRCxDQUFVdkQsQ0FBVixDQUFpQixDQUM3QixHQUFJb0Ms
Q0FBQSxDQUFZcEMsQ0FBWixDQUFKLENBQ0UsTUFBT3VELEVBQUFvWSxVQUVUZSxHQUFBLENBQWFu
WixDQUFiLENBQXNCLENBQUEsQ0FBdEIsQ0FDQUEsRUFBQW9ZLFVBQUEsQ0FBb0IzYixDQUxTLENB
ekd6QixDQWlITndILE1BQU8wWCxFQWpIRCxDQUFSLENBa0hHLFFBQVEsQ0FBQ3ZaLENBQUQsQ0FB
SzJELENBQUwsQ0FBVyxDQUlwQjRELENBQUEvSyxVQUFBLENBQWlCbUgsQ0FBakIsQ0FBQSxDQUF5
QixRQUFRLENBQUMwb0MsQ0FBRCxDQUFPQyxDQUFQLENBQWEsQ0FBQSxJQUN4Q3B5QyxDQUR3QyxD
QUNyQ1QsQ0FEcUMsQ0FFeEN5NEQsRUFBWSxJQUFBbDVELE9BS2hCLElBQUlnSCxDQUFKLEdBQVd1
WixFQUFYLEdBQ29CLENBQWQsRUFBQ3ZaLENBQUFoSCxPQUFELEVBQW9CZ0gsQ0FBcEIsR0FBMkJz
WSxFQUEzQixFQUE2Q3RZLENBQTdDLEdBQW9EZ1osRUFBcEQ7QUFBeUVxekIsQ0FBekUsQ0FBZ0ZD
LENBRHRGLElBQ2dHM3pDLENBRGhHLENBQzRHLENBQzFHLEdBQUlxQyxDQUFBLENBQVNxeEMsQ0FB
VCxDQUFKLENBQW9CLENBR2xCLElBQUtueUMsQ0FBTCxDQUFTLENBQVQsQ0FBWUEsQ0FBWixDQUFn
Qmc0RCxDQUFoQixDQUEyQmg0RCxDQUFBLEVBQTNCLENBQ0UsR0FBSThGLENBQUosR0FBV2tZLEVB
QVgsQ0FFRWxZLENBQUEsQ0FBRyxJQUFBLENBQUs5RixDQUFMLENBQUgsQ0FBWW15QyxDQUFaLENB
RkYsS0FJRSxLQUFLNXlDLENBQUwsR0FBWTR5QyxFQUFaLENBQ0Vyc0MsQ0FBQSxDQUFHLElBQUEs
Q0FBSzlGLENBQUwsQ0FBSCxDQUFZVCxDQUFaLENBQWlCNHlDLENBQUEsQ0FBSzV5QyxDQUFMLENB
QWpCLENBS04sT0FBTyxLQWRXLENBa0JkWSxDQUFBQSxDQUFRMkYsQ0FBQSt4RCxJQUVSNzJELEVB
QUFBLENBQU1iLENBQUQsR0FBVzFCLENBQVgsQ0FBd0JtNUIsSUFBQXd5QixJQUFBLENBQVM0TixD
QUFULENBQW9CLENBQXBCLENBQXhCLENBQWlEQSxDQUMxRCxLQUFTajNELENBQVQsQ0FBYSxDQUFi
LENBQWdCQSxDQUFoQixDQUFvQkMsQ0FBcEIsQ0FBd0JELENBQUEsRUFBeEIsQ0FBNkIsQ0FDM0Is
SUFBSWl1QixFQUFZbHBCLENBQUEsQ0FBRyxJQUFBLENBQUsvRSxDQUFMLENBQUgsQ0FBWW94QyxD
QUFaLENBQWtCQyxDQUFsQixDQUNoQmp5QyxFQUFBLENBQVFBLENBQUEsQ0FBUUEsQ0FBUixDQUFn
QjZ1QixDQUFoQixDQUE0QkEsQ0FGVCxDQUk3QixNQUFPN3VCLEVBMUJpRyxDQThCMUcsSUFBS0gs
Q0FBTCxDQUFTLENBQVQsQ0FBWUEsQ0FBWixDQUFnQmc0RCxDQUFoQixDQUEyQmg0RCxDQUFBLEVB
QTNCLENBQ0U4RixDQUFBLENBQUcsSUFBQSxDQUFLOUYsQ0FBTCxDQUFILENBQVlteUMsQ0FBWixD
QUFrQkMsQ0FBbEIsQ0FHRixPQUFPLEtBMUNtQyxDQUoxQixDQWxIdEIsQ0EyTkFoekMsRUFBQSxD
QUFRLENBQ04rM0QsV0FBWXA2QyxFQUROLENBR054USxHQUFJMHJELFFBQVNBLEVBQVEsQ0FBQ3Yw
RCxDQUFELENBQVUwWixDQUFWLENBQWdCdFgsQ0FBaEIsQ0FBb0J1WCxDQUFwQixDQUFpQyxDQUNw
RCxHQUFJN2EsQ0FBQSxDQUFVNmEsQ0FBVixDQUFKLENBQTRCLEtBQU1kLEdBQUEsQ0FBYSxRQUFi
LENBQU4sQ0FHNUIsR0FBS3ZCLEVBQUEsQ0FBa0J0WCxDQUFsQixDQUFMLENBQUEsQ0FJQSxJQUFJ
NFosRUFBZUMsRUFBQSxDQUFtQjdaLENBQW5CLENBQTRCLENBQUEsQ0FBNUIsQ0FDZnFKLEVBQUFB
LENBQVN1USxDQUFBdlEsT0FDYixLQUFJeVEsRUFBU0YsQ0FBQUUsT0FFUkEsRUFBTCxHQUNFQSxD
QURGLENBQ1dGLENBQUFFLE9BRFgsQ0FDaUM0QyxFQUFBLENBQW1CMWMsQ0FBbkIsQ0FBNEJxSixD
QUE1QixDQURqQyxDQVFBLEtBSEltckQsSUFBQUEsRUFBNkIsQ0FBckIsRUFBQTk2QyxDQUFBclos
UUFBQSxDQUFhLEdBQWIsQ0FBQSxDQUF5QnFaLENBQUE1WixNQUFBLENBQVcsR0FBWCxDQUF6QixD
QUEyQyxDQUFDNFosQ0FBRCxDQUFuRDg2QyxDQUNBbDRELEVBQUlrNEQsQ0FBQXA1RCxPQUVSLENB
QU9rQixDQUFBLEVBQVAsQ0FBQSxDQUFZLENBQ1ZvZCxDQUFBLENBQU84NkMsQ0FBQSxDQUFNbDRE
LENBQU4sQ0FDUCxLQUFJMGdCLEVBQVczVCxDQUFBLENBQU9xUSxDQUFQLENBRVZzRCxFQUFMLEdB
Q0UzVCxDQUFBLENBQU9xUSxDQUFQLENBcUJBLENBckJlLEVBcUJmLENBbkJhLFlBQWIsR0FBSUEs
Q0FBSixFQUFzQyxZQUF0QztBQUE2QkEsQ0FBN0IsQ0FLRTY2QyxDQUFBLENBQVN2MEQsQ0FBVCxD
QUFrQjJ5RCxFQUFBLENBQWdCajVDLENBQWhCLENBQWxCLENBQXlDLFFBQVEsQ0FBQ2tELENBQUQs
Q0FBUSxDQUN2RCxJQUFtQjYzQyxFQUFVNzNDLENBQUE4M0MsY0FHeEJELEVBQUwsR0FBaUJBLENB
QWpCLEdBSGF2bkIsSUFHYixFQUhhQSxJQUcyQnluQixTQUFBLENBQWdCRixDQUFoQixDQUF4QyxH
QUNFMzZDLENBQUEsQ0FBTzhDLENBQVAsQ0FBY2xELENBQWQsQ0FMcUQsQ0FBekQsQ0FMRixDQWVl
LFVBZmYsR0FlTUEsQ0FmTixFQWdCdUIxWixDQTlzQnpCMmlDLGlCQUFBLENBOHNCa0NqcEIsQ0E5
c0JsQyxDQThzQndDSSxDQTlzQnhDLENBQW1DLENBQUEsQ0FBbkMsQ0FpdEJFLENBQUFrRCxDQUFB
LENBQVczVCxDQUFBLENBQU9xUSxDQUFQLENBdEJiLENBd0JBc0QsRUFBQWpjLEtBQUEsQ0FBY3FC
LENBQWQsQ0E1QlUsQ0FoQlosQ0FKb0QsQ0FIaEQsQ0F1RE42akIsSUFBS3hNLEVBdkRDLENBeURO
bTdDLElBQUtBLFFBQVEsQ0FBQzUwRCxDQUFELENBQVUwWixDQUFWLENBQWdCdFgsQ0FBaEIsQ0FB
b0IsQ0FDL0JwQyxDQUFBLENBQVUrRCxDQUFBLENBQU8vRCxDQUFQLENBS1ZBLEVBQUE2SSxHQUFB
LENBQVc2USxDQUFYLENBQWlCbTdDLFFBQVNBLEVBQUksRUFBRyxDQUMvQjcwRCxDQUFBaW1CLElB
QUEsQ0FBWXZNLENBQVosQ0FBa0J0WCxDQUFsQixDQUNBcEMsRUFBQWltQixJQUFBLENBQVl2TSxD
QUFaLENBQWtCbTdDLENBQWxCLENBRitCLENBQWpDLENBSUE3MEQsRUFBQTZJLEdBQUEsQ0FBVzZR
LENBQVgsQ0FBaUJ0WCxDQUFqQixDQVYrQixDQXpEM0IsQ0FzRU5reEIsWUFBYUEsUUFBUSxDQUFD
dHpCLENBQUQsQ0FBVTgwRCxDQUFWLENBQXVCLENBQUEsSUFDdEMxMEQsQ0FEc0MsQ0FDL0JqQyxF
QUFTNkIsQ0FBQXdiLFdBQ3BCckMsR0FBQSxDQUFhblosQ0FBYixDQUNBdEUsRUFBQSxDQUFRLElB
QUlpTyxDQUFKLENBQVdtckQsQ0FBWCxDQUFSLENBQWlDLFFBQVEsQ0FBQ3YxRCxDQUFELENBQU8s
Q0FDMUNhLENBQUosQ0FDRWpDLENBQUE0MkQsYUFBQSxDQUFvQngxRCxDQUFwQixDQUEwQmEsQ0FB
QXVLLFlBQTFCLENBREYsQ0FHRXhNLENBQUEyNUIsYUFBQSxDQUFvQnY0QixDQUFwQixDQUEwQlMs
Q0FBMUIsQ0FFRkksRUFBQSxDQUFRYixDQU5zQyxDQUFoRCxDQUgwQyxDQXRFdEMsQ0FtRk55dkMs
U0FBVUEsUUFBUSxDQUFDaHZDLENBQUQsQ0FBVSxDQUMxQixJQUFJZ3ZDLEVBQVcsRUFDZnR6QyxF
QUFBLENBQVFzRSxDQUFBdVksV0FBUixDQUE0QixRQUFRLENBQUN2WSxDQUFELENBQVUsQ0FDeENB
LENBQUExRSxTQUFKLEdBQXlCQyxFQUF6QixFQUNFeXpDLENBQUFqdUMsS0FBQSxDQUFjZixDQUFk
LENBRjBDLENBQTlDLENBS0EsT0FBT2d2QyxFQVBtQixDQW5GdEIsQ0E2Rk54YixTQUFVQSxRQUFR
LENBQUN4ekIsQ0FBRCxDQUFVLENBQzFCLE1BQU9BLEVBQUFnMUQsZ0JBQVA7QUFBa0NoMUQsQ0FB
QXVZLFdBQWxDLEVBQXdELEVBRDlCLENBN0Z0QixDQWlHTm5VLE9BQVFBLFFBQVEsQ0FBQ3BFLENB
QUQsQ0FBVVQsQ0FBVixDQUFnQixDQUM5QixJQUFJakUsRUFBVzBFLENBQUExRSxTQUNmLElBQUlB
LENBQUosR0FBaUJDLEVBQWpCLEVBai9DOEJrZ0IsRUFpL0M5QixHQUFzQ25nQixDQUF0QyxDQUFB
LENBRUFpRSxDQUFBLENBQU8sSUFBSW9LLENBQUosQ0FBV3BLLENBQVgsQ0FFUCxLQUFTakQsSUFB
QUEsRUFBSSxDQUFKQSxDQUFPYSxFQUFLb0MsQ0FBQW5FLE9BQXJCLENBQWtDa0IsQ0FBbEMsQ0FB
c0NhLENBQXRDLENBQTBDYixDQUFBLEVBQTFDLENBRUUwRCxDQUFBNlgsWUFBQSxDQURZdFksQ0FB
QSs2QyxDQUFLaCtDLENBQUxnK0MsQ0FDWixDQU5GLENBRjhCLENBakcxQixDQTZHTjJhLFFBQVNB
LFFBQVEsQ0FBQ2oxRCxDQUFELENBQVVULENBQVYsQ0FBZ0IsQ0FDL0IsR0FBSVMsQ0FBQTFFLFNB
QUosR0FBeUJDLEVBQXpCLENBQTRDLENBQzFDLElBQUk2RSxFQUFRSixDQUFBd1ksV0FDWjljLEVB
QUEsQ0FBUSxJQUFJaU8sQ0FBSixDQUFXcEssQ0FBWCxDQUFSLENBQTBCLFFBQVEsQ0FBQys2QyxD
QUFELENBQVEsQ0FDeEN0NkMsQ0FBQSswRCxhQUFBLENBQXFCemEsQ0FBckIsQ0FBNEJsNkMsQ0FB
NUIsQ0FEd0MsQ0FBMUMsQ0FGMEMsQ0FEYixDQTdHM0IsQ0FzSE42WCxLQUFNQSxRQUFRLENBQUNq
WSxDQUFELENBQVVrMUQsQ0FBVixDQUFvQixDQUNoQ0EsQ0FBQSxDQUFXbnhELENBQUEsQ0FBT214
RCxDQUFQLENBQUF4YSxHQUFBLENBQW9CLENBQXBCLENBQUExMkMsTUFBQSxFQUFBLENBQStCLENB
QS9CLENBQ1gsS0FBSTdGLEVBQVM2QixDQUFBd2IsV0FDVHJkLEVBQUosRUFDRUEsQ0FBQTI1Qixh
QUFBLENBQW9CbzlCLENBQXBCLENBQThCbDFELENBQTlCLENBRUZrMUQsRUFBQXI5QyxZQUFBLENB
QXFCN1gsQ0FBckIsQ0FOZ0MsQ0F0SDVCLENBK0hOZ29CLE9BQVFuTSxFQS9IRixDQWlJTnM1QyxP
QUFRQSxRQUFRLENBQUNuMUQsQ0FBRCxDQUFVLENBQ3hCNmIsRUFBQSxDQUFhN2IsQ0FBYixDQUFz
QixDQUFBLENBQXRCLENBRHdCLENBaklwQixDQXFJTm8xRCxNQUFPQSxRQUFRLENBQUNwMUQsQ0FB
RCxDQUFVcTFELENBQVYsQ0FBc0IsQ0FBQSxJQUMvQmoxRCxFQUFRSixDQUR1QixDQUNkN0IsRUFB
UzZCLENBQUF3YixXQUM5QjY1QyxFQUFBLENBQWEsSUFBSTFyRCxDQUFKLENBQVcwckQsQ0FBWCxD
QUViLEtBSm1DLElBSTFCLzRELEVBQUksQ0FKc0IsQ0FJbkJhLEVBQUtrNEQsQ0FBQWo2RCxPQUFy
QixDQUF3Q2tCLENBQXhDLENBQTRDYSxDQUE1QyxDQUFnRGIsQ0FBQSxFQUFoRCxDQUFxRCxDQUNu
RCxJQUFJaUQsRUFBTzgxRCxDQUFBLENBQVcvNEQsQ0FBWCxDQUNYNkIsRUFBQTQyRCxhQUFBLENB
QW9CeDFELENBQXBCO0FBQTBCYSxDQUFBdUssWUFBMUIsQ0FDQXZLLEVBQUEsQ0FBUWIsQ0FIMkMs
Q0FKbEIsQ0FySS9CLENBZ0pOc2UsU0FBVTdDLEVBaEpKLENBaUpOOEMsWUFBYWxELEVBakpQLENB
bUpOMDZDLFlBQWFBLFFBQVEsQ0FBQ3QxRCxDQUFELENBQVUyYSxDQUFWLENBQW9CNDZDLENBQXBC
LENBQStCLENBQzlDNTZDLENBQUosRUFDRWpmLENBQUEsQ0FBUWlmLENBQUE3YSxNQUFBLENBQWUs
R0FBZixDQUFSLENBQTZCLFFBQVEsQ0FBQ2tyQixDQUFELENBQVksQ0FDL0MsSUFBSXdxQyxFQUFp
QkQsQ0FDakIxMkQsRUFBQSxDQUFZMjJELENBQVosQ0FBSixHQUNFQSxDQURGLENBQ21CLENBQUM5
NkMsRUFBQSxDQUFlMWEsQ0FBZixDQUF3QmdyQixDQUF4QixDQURwQixDQUdBLEVBQUN3cUMsQ0FB
QSxDQUFpQng2QyxFQUFqQixDQUFrQ0osRUFBbkMsRUFBc0Q1YSxDQUF0RCxDQUErRGdyQixDQUEv
RCxDQUwrQyxDQUFqRCxDQUZnRCxDQW5KOUMsQ0ErSk43c0IsT0FBUUEsUUFBUSxDQUFDNkIsQ0FB
RCxDQUFVLENBRXhCLE1BQU8sQ0FESDdCLENBQ0csQ0FETTZCLENBQUF3YixXQUNOLEdBL2lEdUJD
LEVBK2lEdkIsR0FBVXRkLENBQUE3QyxTQUFWLENBQTRENkMsQ0FBNUQsQ0FBcUUsSUFGcEQsQ0Ev
SnBCLENBb0tONCtDLEtBQU1BLFFBQVEsQ0FBQy84QyxDQUFELENBQVUsQ0FDdEIsTUFBT0EsRUFB
QXkxRCxtQkFEZSxDQXBLbEIsQ0F3S045MUQsS0FBTUEsUUFBUSxDQUFDSyxDQUFELENBQVUyYSxD
QUFWLENBQW9CLENBQ2hDLE1BQUkzYSxFQUFBMDFELHFCQUFKLENBQ1MxMUQsQ0FBQTAxRCxxQkFB
QSxDQUE2Qi82QyxDQUE3QixDQURULENBR1MsRUFKdUIsQ0F4SzVCLENBZ0xOM1csTUFBT2lWLEVB
aExELENBa0xOdlAsZUFBZ0JBLFFBQVEsQ0FBQzFKLENBQUQsQ0FBVTRjLENBQVYsQ0FBaUIrNEMs
Q0FBakIsQ0FBa0MsQ0FBQSxJQUVwREMsQ0FGb0QsQ0FFMUJDLENBRjBCLENBR3BENVksRUFBWXJn
QyxDQUFBbEQsS0FBWnVqQyxFQUEwQnJnQyxDQUgwQixDQUlwRGhELEVBQWVDLEVBQUEsQ0FBbUI3
WixDQUFuQixDQUluQixJQUZJZ2QsQ0FFSixFQUhJM1QsQ0FHSixDQUhhdVEsQ0FHYixFQUg2QkEs
Q0FBQXZRLE9BRzdCLEdBRnlCQSxDQUFBLENBQU80ekMsQ0FBUCxDQUV6QixDQUVFMlksQ0FtQkEs
Q0FuQmEsQ0FDWHhvQixlQUFnQkEsUUFBUSxFQUFHLENBQUUsSUFBQXJ3QixpQkFBQSxDQUF3QixD
QUFBLENBQTFCLENBRGhCLENBRVhGLG1CQUFvQkEsUUFBUSxFQUFHLENBQUUsTUFBaUMsQ0FBQSxD
QUFqQztBQUFPLElBQUFFLGlCQUFULENBRnBCLENBR1hLLHlCQUEwQkEsUUFBUSxFQUFHLENBQUUs
SUFBQUYsNEJBQUEsQ0FBbUMsQ0FBQSxDQUFyQyxDQUgxQixDQUlYSyw4QkFBK0JBLFFBQVEsRUFB
RyxDQUFFLE1BQTRDLENBQUEsQ0FBNUMsR0FBTyxJQUFBTCw0QkFBVCxDQUovQixDQUtYSSxnQkFB
aUJoZixDQUxOLENBTVhvYixLQUFNdWpDLENBTkssQ0FPWC9QLE9BQVFsdEMsQ0FQRyxDQW1CYixD
QVJJNGMsQ0FBQWxELEtBUUosR0FQRWs4QyxDQU9GLENBUGVqNEQsQ0FBQSxDQUFPaTRELENBQVAs
Q0FBbUJoNUMsQ0FBbkIsQ0FPZixFQUhBazVDLENBR0EsQ0FIZXgwRCxFQUFBLENBQVkwYixDQUFa
LENBR2YsQ0FGQTY0QyxDQUVBLENBRmNGLENBQUEsQ0FBa0IsQ0FBQ0MsQ0FBRCxDQUFBN3pELE9B
QUEsQ0FBb0I0ekQsQ0FBcEIsQ0FBbEIsQ0FBeUQsQ0FBQ0MsQ0FBRCxDQUV2RSxDQUFBbDZELENB
QUEsQ0FBUW82RCxDQUFSLENBQXNCLFFBQVEsQ0FBQzF6RCxDQUFELENBQUssQ0FDNUJ3ekQsQ0FB
QXI0Qyw4QkFBQSxFQUFMLEVBQ0VuYixDQUFBRyxNQUFBLENBQVN2QyxDQUFULENBQWtCNjFELENB
QWxCLENBRitCLENBQW5DLENBN0JzRCxDQWxMcEQsQ0FBUixDQXNORyxRQUFRLENBQUN6ekQsQ0FB
RCxDQUFLMkQsQ0FBTCxDQUFXLENBSXBCNEQsQ0FBQS9LLFVBQUEsQ0FBaUJtSCxDQUFqQixDQUFB
LENBQXlCLFFBQVEsQ0FBQzBvQyxDQUFELENBQU9DLENBQVAsQ0FBYXFuQixDQUFiLENBQW1CLENB
R2xELElBRkEsSUFBSXQ1RCxDQUFKLENBRVNILEVBQUksQ0FGYixDQUVnQmEsRUFBSyxJQUFBL0Is
T0FBckIsQ0FBa0NrQixDQUFsQyxDQUFzQ2EsQ0FBdEMsQ0FBMENiLENBQUEsRUFBMUMsQ0FDTXVD
LENBQUEsQ0FBWXBDLENBQVosQ0FBSixFQUNFQSxDQUNBLENBRFEyRixDQUFBLENBQUcsSUFBQSxD
QUFLOUYsQ0FBTCxDQUFILENBQVlteUMsQ0FBWixDQUFrQkMsQ0FBbEIsQ0FBd0JxbkIsQ0FBeEIs
Q0FDUixDQUFJajNELENBQUEsQ0FBVXJDLENBQVYsQ0FBSixHQUVFQSxDQUZGLENBRVVzSCxDQUFB
LENBQU90SCxDQUFQLENBRlYsQ0FGRixFQU9FdWMsRUFBQSxDQUFldmMsQ0FBZixDQUFzQjJGLENB
QUEsQ0FBRyxJQUFBLENBQUs5RixDQUFMLENBQUgsQ0FBWW15QyxDQUFaLENBQWtCQyxDQUFsQixD
QUF3QnFuQixDQUF4QixDQUF0QixDQUdKLE9BQU9qM0QsRUFBQSxDQUFVckMsQ0FBVixDQUFBLENB
QW1CQSxDQUFuQixDQUEyQixJQWRnQixDQWtCcERrTixFQUFBL0ssVUFBQXNELEtBQUE7QUFBd0J5
SCxDQUFBL0ssVUFBQWlLLEdBQ3hCYyxFQUFBL0ssVUFBQW8zRCxPQUFBLENBQTBCcnNELENBQUEv
SyxVQUFBcW5CLElBdkJOLENBdE50QixDQWlUQS9ILEdBQUF0ZixVQUFBLENBQW9CLENBTWxCeWYs
SUFBS0EsUUFBUSxDQUFDeGlCLENBQUQsQ0FBTVksQ0FBTixDQUFhLENBQ3hCLElBQUEsQ0FBS3No
QixFQUFBLENBQVFsaUIsQ0FBUixDQUFhLElBQUFhLFFBQWIsQ0FBTCxDQUFBLENBQW1DRCxDQURY
LENBTlIsQ0FjbEJ1TCxJQUFLQSxRQUFRLENBQUNuTSxDQUFELENBQU0sQ0FDakIsTUFBTyxLQUFB
LENBQUtraUIsRUFBQSxDQUFRbGlCLENBQVIsQ0FBYSxJQUFBYSxRQUFiLENBQUwsQ0FEVSxDQWRE
LENBc0JsQnNyQixPQUFRQSxRQUFRLENBQUNuc0IsQ0FBRCxDQUFNLENBQ3BCLElBQUlZLEVBQVEs
SUFBQSxDQUFLWixDQUFMLENBQVdraUIsRUFBQSxDQUFRbGlCLENBQVIsQ0FBYSxJQUFBYSxRQUFi
LENBQVgsQ0FDWixRQUFPLElBQUEsQ0FBS2IsQ0FBTCxDQUNQLE9BQU9ZLEVBSGEsQ0F0QkosQ0E2
QnBCLEtBQUlvYSxHQUFvQixDQUFDLFFBQVEsRUFBRyxDQUNsQyxJQUFBNEcsS0FBQSxDQUFZLENB
QUMsUUFBUSxFQUFHLENBQ3RCLE1BQU9TLEdBRGUsQ0FBWixDQURzQixDQUFaLENBQXhCLENBb0VJ
USxHQUFVLG9DQXBFZCxDQXFFSXUzQyxHQUFlLEdBckVuQixDQXNFSUMsR0FBUyxzQkF0RWIsQ0F1
RUl6M0MsR0FBaUIsa0NBdkVyQixDQXdFSTFULEdBQWtCL1AsQ0FBQSxDQUFPLFdBQVAsQ0E4d0J0
QjZMLEdBQUE2WixXQUFBLENBandCQUksUUFBaUIsQ0FBQzFlLENBQUQsQ0FBSytELENBQUwsQ0FB
ZUosQ0FBZixDQUFxQixDQUFBLElBQ2hDMGEsQ0FLSixJQUFrQixVQUFsQixHQUFJLE1BQU9yZSxF
QUFYLENBQ0UsSUFBTSxFQUFBcWUsQ0FBQSxDQUFVcmUsQ0FBQXFlLFFBQVYsQ0FBTixDQUE2QixD
QUMzQkEsQ0FBQTtBQUFVLEVBQ1YsSUFBSXJlLENBQUFoSCxPQUFKLENBQWUsQ0FDYixHQUFJK0ss
Q0FBSixDQUlFLEtBSEszSyxFQUFBLENBQVN1SyxDQUFULENBR0MsRUFIa0JBLENBR2xCLEdBRkpB
LENBRUksQ0FGRzNELENBQUEyRCxLQUVILEVBRmN1WSxFQUFBLENBQU9sYyxDQUFQLENBRWQsRUFB
QTJJLEVBQUEsQ0FBZ0IsVUFBaEIsQ0FDeUVoRixDQUR6RSxDQUFOLENBR0Z5WSxDQUFBLENBQVNw
YyxDQUFBekQsU0FBQSxFQUFBNEYsUUFBQSxDQUFzQmthLEVBQXRCLENBQXNDLEVBQXRDLENBQ1Qw
M0MsRUFBQSxDQUFVMzNDLENBQUFyZCxNQUFBLENBQWF1ZCxFQUFiLENBQ1ZoakIsRUFBQSxDQUFR
eTZELENBQUEsQ0FBUSxDQUFSLENBQUFyMkQsTUFBQSxDQUFpQm0yRCxFQUFqQixDQUFSLENBQXdD
LFFBQVEsQ0FBQ3BzRCxDQUFELENBQU0sQ0FDcERBLENBQUF0RixRQUFBLENBQVkyeEQsRUFBWixD
QUFvQixRQUFRLENBQUNsZixDQUFELENBQU1vZixDQUFOLENBQWtCcndELENBQWxCLENBQXdCLENB
Q2xEMGEsQ0FBQTFmLEtBQUEsQ0FBYWdGLENBQWIsQ0FEa0QsQ0FBcEQsQ0FEb0QsQ0FBdEQsQ0FW
YSxDQWdCZjNELENBQUFxZSxRQUFBLENBQWFBLENBbEJjLENBQTdCLENBREYsSUFxQldobEIsRUFB
QSxDQUFRMkcsQ0FBUixDQUFKLEVBQ0xxNEMsQ0FFQSxDQUZPcjRDLENBQUFoSCxPQUVQLENBRm1C
LENBRW5CLENBREEyTyxFQUFBLENBQVkzSCxDQUFBLENBQUdxNEMsQ0FBSCxDQUFaLENBQXNCLElB
QXRCLENBQ0EsQ0FBQWg2QixDQUFBLENBQVVyZSxDQUFBeEUsTUFBQSxDQUFTLENBQVQsQ0FBWTY4
QyxDQUFaLENBSEwsRUFLTDF3QyxFQUFBLENBQVkzSCxDQUFaLENBQWdCLElBQWhCLENBQXNCLENB
QUEsQ0FBdEIsQ0FFRixPQUFPcWUsRUFsQzZCLENBa2hDdEMsS0FBSTQxQyxHQUFpQnI3RCxDQUFB
LENBQU8sVUFBUCxDQUFyQixDQXFESW1ZLEdBQThCQSxRQUFRLEVBQUcsQ0FDM0MsSUFBQXNLLEtB
QUEsQ0FBWSxDQUFDLElBQUQsQ0FBTyxPQUFQLENBQWdCLFFBQVEsQ0FBQ3JJLENBQUQsQ0FBS29C
LENBQUwsQ0FBWSxDQUM5QzgvQyxRQUFTQSxFQUFhLEVBQUcsRUFDekJBLENBQUF0ZixJQUFBLENB
QW9CMTRDLENBQ3BCZzRELEVBQUE5MkIsTUFBQSxDQUFzQmxoQyxDQUN0Qmc0RCxFQUFBMTNELFVB
QUEsQ0FBMEIsQ0FDeEIyM0QsSUFBS2o0RCxDQURtQixDQUV4Qm1vQixPQUFRbm9CLENBRmdCLENB
R3hCazRELE9BQVFsNEQsQ0FIZ0IsQ0FJeEJtNEQsTUFBT240RCxDQUppQixDQUt4Qm80RCxTQUFV
cDRELENBTGMsQ0FNeEI0MkIsS0FBTUEsUUFBUSxDQUFDeWhDLENBQUQsQ0FBT0MsQ0FBUCxDQUFh
LENBQ3pCLE1BQU94aEQsRUFBQSxDQUFHLFFBQVEsQ0FBQzZyQixDQUFELENBQVUsQ0FDMUJ6cUIs
Q0FBQSxDQUFNLFFBQVEsRUFBRyxDQUNmeXFCLENBQUEsRUFEZSxDQUFqQixDQUQwQixDQUFyQixD
QUFBL0wsS0FBQSxDQUlDeWhDLENBSkQ7QUFJT0MsQ0FKUCxDQURrQixDQU5ILENBYzFCLE9BQU9O
LEVBbEJ1QyxDQUFwQyxDQUQrQixDQXJEN0MsQ0E4RUlyakQsR0FBNkJBLFFBQVEsRUFBRyxDQUMx
QyxJQUFJK3BDLEVBQWtCLElBQUk5K0IsRUFBMUIsQ0FDSTI0QyxFQUFxQixFQUV6QixLQUFBcDVD
LEtBQUEsQ0FBWSxDQUFDLGlCQUFELENBQW9CLFlBQXBCLENBQ1AsUUFBUSxDQUFDdkssQ0FBRCxD
QUFvQmdDLENBQXBCLENBQWdDLENBc0IzQzRoRCxRQUFTQSxFQUEwQixDQUFDOTJELENBQUQsQ0FB
VSsyRCxDQUFWLENBQWUvdUMsQ0FBZixDQUF1QixDQUN4RCxJQUFJN2dCLEVBQU82MUMsQ0FBQWgx
QyxJQUFBLENBQW9CaEksQ0FBcEIsQ0FHTm1ILEVBQUwsR0FDRTYxQyxDQUFBMytCLElBQUEsQ0FB
b0JyZSxDQUFwQixDQUE2Qm1ILENBQTdCLENBQW9DLEVBQXBDLENBQ0EsQ0FBQTB2RCxDQUFBOTFE
LEtBQUEsQ0FBd0JmLENBQXhCLENBRkYsQ0FLSSsyRCxFQUFKLEVBQ0VyN0QsQ0FBQSxDQUFRcTdE
LENBQUFqM0QsTUFBQSxDQUFVLEdBQVYsQ0FBUixDQUF3QixRQUFRLENBQUNrckIsQ0FBRCxDQUFZ
LENBQ3RDQSxDQUFKLEdBQ0U3akIsQ0FBQSxDQUFLNmpCLENBQUwsQ0FERixDQUNvQixDQUFBLENB
RHBCLENBRDBDLENBQTVDLENBT0VoRCxFQUFKLEVBQ0V0c0IsQ0FBQSxDQUFRc3NCLENBQUFsb0Is
TUFBQSxDQUFhLEdBQWIsQ0FBUixDQUEyQixRQUFRLENBQUNrckIsQ0FBRCxDQUFZLENBQ3pDQSxD
QUFKLEdBQ0U3akIsQ0FBQSxDQUFLNmpCLENBQUwsQ0FERixDQUNvQixDQUFBLENBRHBCLENBRDZD
LENBQS9DLENBTzhCLEVBQWhDLENBQUk2ckMsQ0FBQXo3RCxPQUFKLEVBRUE4WixDQUFBMCtCLGFB
QUEsQ0FBd0IsUUFBUSxFQUFHLENBQ2pDbDRDLENBQUEsQ0FBUW03RCxDQUFSLENBQTRCLFFBQVEs
Q0FBQzcyRCxDQUFELENBQVUsQ0FDNUMsSUFBSW1ILEVBQU82MUMsQ0FBQWgxQyxJQUFBLENBQW9C
aEksQ0FBcEIsQ0FDWCxJQUFJbUgsQ0FBSixDQUFVLENBQ1IsSUFBSTZ2RCxFQUFXNXpDLEVBQUEs
Q0FBYXBqQixDQUFBTixLQUFBLENBQWEsT0FBYixDQUFiLENBQWYsQ0FDSTg1QixFQUFRLEVBRFos
Q0FFSUUsRUFBVyxFQUNmaCtCLEVBQUEsQ0FBUXlMLENBQVIsQ0FBYyxRQUFRLENBQUNzMkIsQ0FB
RCxDQUFTelMsQ0FBVCxDQUFvQixDQUVwQ3lTLENBQUosR0FEZTlmLENBQUUsQ0FBQXE1QyxDQUFB
LENBQVNoc0MsQ0FBVCxDQUNqQixHQUNNeVMsQ0FBSixDQUNFakUsQ0FERixHQUNZQSxDQUFBcCtC
LE9BQUEsQ0FBZSxHQUFmLENBQXFCLEVBRGpDLEVBQ3VDNHZCLENBRHZDLENBR0UwTyxDQUhGLEdB
R2VBLENBQUF0K0IsT0FBQSxDQUFrQixHQUFsQixDQUF3QixFQUh2QyxFQUc2QzR2QixDQUovQyxD
QUZ3QyxDQUExQyxDQVdBdHZCLEVBQUEsQ0FBUXNFLENBQVIsQ0FBaUIsUUFBUSxDQUFDMmlCLENB
QUQsQ0FBTSxDQUM3QjZXLENBQUEsRUFBWXhlLEVBQUEsQ0FBZTJILENBQWYsQ0FBb0I2VyxDQUFw
QixDQUNaRSxFQUFBLEVBQVk5ZSxFQUFBLENBQWtCK0gsQ0FBbEIsQ0FBdUIrVyxDQUF2QixDQUZp
QixDQUEvQixDQUlBc2pCLEVBQUFoMUIsT0FBQSxDQUF1QmhvQixDQUF2QixDQW5CUSxDQUZrQyxD
QUE5QyxDQXlCQTYyRDtDQUFBejdELE9BQUEsQ0FBNEIsQ0ExQkssQ0FBbkMsQ0EzQndELENBckIx
RCxNQUFPLENBQ0x5dkIsUUFBU3ZzQixDQURKLENBRUx1SyxHQUFJdkssQ0FGQyxDQUdMMm5CLElB
QUszbkIsQ0FIQSxDQUlMMjRELElBQUszNEQsQ0FKQSxDQU1MeUMsS0FBTUEsUUFBUSxDQUFDZixD
QUFELENBQVU0YyxDQUFWLENBQWlCMkcsQ0FBakIsQ0FBMEIyekMsQ0FBMUIsQ0FBd0MsQ0FDcERB
LENBQUEsRUFBdUJBLENBQUEsRUFFdkIzekMsRUFBQSxDQUFVQSxDQUFWLEVBQXFCLEVBQ3JCQSxF
QUFBNHpDLEtBQUEsRUFBdUJuM0QsQ0FBQTR6RCxJQUFBLENBQVlyd0MsQ0FBQTR6QyxLQUFaLENB
Q3ZCNXpDLEVBQUE2ekMsR0FBQSxFQUF1QnAzRCxDQUFBNHpELElBQUEsQ0FBWXJ3QyxDQUFBNnpD
LEdBQVosQ0FFdkIsRUFBSTd6QyxDQUFBMUYsU0FBSixFQUF3QjBGLENBQUF6RixZQUF4QixHQUNF
ZzVDLENBQUEsQ0FBMkI5MkQsQ0FBM0IsQ0FBb0N1akIsQ0FBQTFGLFNBQXBDLENBQXNEMEYsQ0FB
QXpGLFlBQXRELENBR0YsT0FBTyxLQUFJNUssQ0FYeUMsQ0FOakQsQ0FEb0MsQ0FEakMsQ0FKOEIs
Q0E5RTVDLENBZ0xJSCxHQUFtQixDQUFDLFVBQUQsQ0FBYSxRQUFRLENBQUNyTSxDQUFELENBQVcs
Q0FDckQsSUFBSTBFLEVBQVcsSUFFZixLQUFBaXNELHVCQUFBLENBQThCaDhELE1BQUFnRCxPQUFB
LENBQWMsSUFBZCxDQXlDOUIsS0FBQWc5QixTQUFBLENBQWdCQyxRQUFRLENBQUN2MUIsQ0FBRCxD
QUFPK0UsQ0FBUCxDQUFnQixDQUN0QyxHQUFJL0UsQ0FBSixFQUErQixHQUEvQixHQUFZQSxDQUFB
eEUsT0FBQSxDQUFZLENBQVosQ0FBWixDQUNFLEtBQU04MEQsR0FBQSxDQUFlLFNBQWYsQ0FBbUZ0
d0QsQ0FBbkYsQ0FBTixDQUdGLElBQUlsSyxFQUFNa0ssQ0FBTmxLLENBQWEsWUFDakJ1UCxFQUFB
aXNELHVCQUFBLENBQWdDdHhELENBQUEyZixPQUFBLENBQVksQ0FBWixDQUFoQyxDQUFBLENBQWtE
N3BCLENBQ2xENkssRUFBQW9FLFFBQUEsQ0FBaUJqUCxDQUFqQixDQUFzQmlQLENBQXRCLENBUHND
LENBd0J4QyxLQUFBd3NELGdCQUFBLENBQXVCQyxRQUFRLENBQUM3N0IsQ0FBRCxDQUFhLENBQzFD
LEdBQXlCLENBQXpCLEdBQUk3OUIsU0FBQXpDLE9BQUosR0FDRSxJQUFBbzhELGtCQURGO0FBQzRC
OTdCLENBQUQsV0FBdUJ4NkIsT0FBdkIsQ0FBaUN3NkIsQ0FBakMsQ0FBOEMsSUFEekUsR0FHd0Ir
N0IsNEJBQ2hCMzJELEtBQUEsQ0FBbUIsSUFBQTAyRCxrQkFBQTc0RCxTQUFBLEVBQW5CLENBSlIs
Q0FLTSxLQUFNMDNELEdBQUEsQ0FBZSxTQUFmLENBeFBXcUIsWUF3UFgsQ0FBTixDQUtOLE1BQU8s
S0FBQUYsa0JBWG1DLENBYzVDLEtBQUEvNUMsS0FBQSxDQUFZLENBQUMsZ0JBQUQsQ0FBbUIsUUFB
USxDQUFDekssQ0FBRCxDQUFpQixDQUN0RDJrRCxRQUFTQSxFQUFTLENBQUMzM0QsQ0FBRCxDQUFV
NDNELENBQVYsQ0FBeUJDLENBQXpCLENBQXVDLENBSXZELEdBQUlBLENBQUosQ0FBa0IsQ0FDaEIs
SUFBSUMsQ0EzUHlCLEVBQUEsQ0FBQSxDQUNuQyxJQUFTeDdELENBQVQsQ0FBYSxDQUFiLENBQWdC
QSxDQUFoQixDQTBQeUN1N0QsQ0ExUHJCejhELE9BQXBCLENBQW9Da0IsQ0FBQSxFQUFwQyxDQUF5
QyxDQUN2QyxJQUFJcW1CLEVBeVBtQ2sxQyxDQXpQN0IsQ0FBUXY3RCxDQUFSLENBQ1YsSUFmZXk3
RCxDQWVmLEdBQUlwMUMsQ0FBQXJuQixTQUFKLENBQW1DLENBQ2pDLENBQUEsQ0FBT3FuQixDQUFQ
LE9BQUEsQ0FEaUMsQ0FGSSxDQUROLENBQUEsQ0FBQSxJQUFBLEVBQUEsQ0E0UHpCbTFDLENBQUFB
LENBQUosRUFBa0JBLENBQUF0OEMsV0FBbEIsRUFBMkNzOEMsQ0FBQUUsdUJBQTNDLEdBQ0VILENB
REYsQ0FDaUIsSUFEakIsQ0FGZ0IsQ0FNbEJBLENBQUEsQ0FBZUEsQ0FBQXpDLE1BQUEsQ0FBbUJw
MUQsQ0FBbkIsQ0FBZixDQUE2QzQzRCxDQUFBM0MsUUFBQSxDQUFzQmoxRCxDQUF0QixDQVZVLENB
Z0N6RCxNQUFPLENBOEJMNkksR0FBSW1LLENBQUFuSyxHQTlCQyxDQXdETG9kLElBQUtqVCxDQUFB
aVQsSUF4REEsQ0EwRUxneEMsSUFBS2prRCxDQUFBaWtELElBMUVBLENBeUdMcHNDLFFBQVM3WCxD
QUFBNlgsUUF6R0osQ0FtSExwRSxPQUFRQSxRQUFRLENBQUN3eEMsQ0FBRCxDQUFTLENBQ3ZCQSxD
QUFBMUIsSUFBQSxFQUFjMEIsQ0FBQTFCLElBQUEsRUFEUyxDQW5IcEIsQ0F5SUwyQixNQUFPQSxR
QUFRLENBQUNsNEQsQ0FBRCxDQUFVN0IsQ0FBVixDQUFrQmkzRCxDQUFsQixDQUF5Qjd4QyxDQUF6
QixDQUFrQyxDQUMvQ3BsQixDQUFBO0FBQVNBLENBQVQsRUFBbUI0RixDQUFBLENBQU81RixDQUFQ
LENBQ25CaTNELEVBQUEsQ0FBUUEsQ0FBUixFQUFpQnJ4RCxDQUFBLENBQU9xeEQsQ0FBUCxDQUNq
QmozRCxFQUFBLENBQVNBLENBQVQsRUFBbUJpM0QsQ0FBQWozRCxPQUFBLEVBQ25CdzVELEVBQUEs
Q0FBVTMzRCxDQUFWLENBQW1CN0IsQ0FBbkIsQ0FBMkJpM0QsQ0FBM0IsQ0FDQSxPQUFPcGlELEVB
QUFqUyxLQUFBLENBQW9CZixDQUFwQixDQUE2QixPQUE3QixDQUFzQ3NqQixFQUFBLENBQXNCQyxD
QUF0QixDQUF0QyxDQUx3QyxDQXpJNUMsQ0FtS0w0MEMsS0FBTUEsUUFBUSxDQUFDbjRELENBQUQs
Q0FBVTdCLENBQVYsQ0FBa0JpM0QsQ0FBbEIsQ0FBeUI3eEMsQ0FBekIsQ0FBa0MsQ0FDOUNwbEIs
Q0FBQSxDQUFTQSxDQUFULEVBQW1CNEYsQ0FBQSxDQUFPNUYsQ0FBUCxDQUNuQmkzRCxFQUFBLENB
QVFBLENBQVIsRUFBaUJyeEQsQ0FBQSxDQUFPcXhELENBQVAsQ0FDakJqM0QsRUFBQSxDQUFTQSxD
QUFULEVBQW1CaTNELENBQUFqM0QsT0FBQSxFQUNuQnc1RCxFQUFBLENBQVUzM0QsQ0FBVixDQUFt
QjdCLENBQW5CLENBQTJCaTNELENBQTNCLENBQ0EsT0FBT3BpRCxFQUFBalMsS0FBQSxDQUFvQmYs
Q0FBcEIsQ0FBNkIsTUFBN0IsQ0FBcUNzakIsRUFBQSxDQUFzQkMsQ0FBdEIsQ0FBckMsQ0FMdUMs
Q0FuSzNDLENBd0xMNjBDLE1BQU9BLFFBQVEsQ0FBQ3A0RCxDQUFELENBQVV1akIsQ0FBVixDQUFt
QixDQUNoQyxNQUFPdlEsRUFBQWpTLEtBQUEsQ0FBb0JmLENBQXBCLENBQTZCLE9BQTdCLENBQXND
c2pCLEVBQUEsQ0FBc0JDLENBQXRCLENBQXRDLENBQXNFLFFBQVEsRUFBRyxDQUN0RnZqQixDQUFB
Z29CLE9BQUEsRUFEc0YsQ0FBakYsQ0FEeUIsQ0F4TDdCLENBZ05MbkssU0FBVUEsUUFBUSxDQUFD
N2QsQ0FBRCxDQUFVZ3JCLENBQVYsQ0FBcUJ6SCxDQUFyQixDQUE4QixDQUM5Q0EsQ0FBQSxDQUFV
RCxFQUFBLENBQXNCQyxDQUF0QixDQUNWQSxFQUFBMUYsU0FBQSxDQUFtQnFGLEVBQUEsQ0FBYUss
Q0FBQTgwQyxTQUFiLENBQStCcnRDLENBQS9CLENBQ25CLE9BQU9oWSxFQUFBalMsS0FBQSxDQUFv
QmYsQ0FBcEIsQ0FBNkIsVUFBN0IsQ0FBeUN1akIsQ0FBekMsQ0FIdUMsQ0FoTjNDLENBd09MekYs
WUFBYUEsUUFBUSxDQUFDOWQsQ0FBRCxDQUFVZ3JCLENBQVYsQ0FBcUJ6SCxDQUFyQixDQUE4QixD
QUNqREEsQ0FBQSxDQUFVRCxFQUFBLENBQXNCQyxDQUF0QixDQUNWQSxFQUFBekYsWUFBQSxDQUFz
Qm9GLEVBQUEsQ0FBYUssQ0FBQXpGLFlBQWIsQ0FBa0NrTixDQUFsQyxDQUN0QixPQUFPaFksRUFB
QWpTLEtBQUEsQ0FBb0JmLENBQXBCLENBQTZCLGFBQTdCLENBQTRDdWpCLENBQTVDLENBSDBDLENB
eE85QyxDQWlRTGtwQyxTQUFVQSxRQUFRLENBQUN6c0QsQ0FBRCxDQUFVKzJELENBQVYsQ0FBZS91
QyxDQUFmLENBQXVCekUsQ0FBdkIsQ0FBZ0MsQ0FDaERBLENBQUEsQ0FBVUQsRUFBQSxDQUFzQkMs
Q0FBdEIsQ0FDVkEsRUFBQTFGLFNBQUEsQ0FBbUJxRixFQUFBLENBQWFLLENBQUExRixTQUFiO0FB
QStCazVDLENBQS9CLENBQ25CeHpDLEVBQUF6RixZQUFBLENBQXNCb0YsRUFBQSxDQUFhSyxDQUFB
ekYsWUFBYixDQUFrQ2tLLENBQWxDLENBQ3RCLE9BQU9oVixFQUFBalMsS0FBQSxDQUFvQmYsQ0FB
cEIsQ0FBNkIsVUFBN0IsQ0FBeUN1akIsQ0FBekMsQ0FKeUMsQ0FqUTdDLENBNlJMKzBDLFFBQVNB
LFFBQVEsQ0FBQ3Q0RCxDQUFELENBQVVtM0QsQ0FBVixDQUFnQkMsQ0FBaEIsQ0FBb0Jwc0MsQ0FB
cEIsQ0FBK0J6SCxDQUEvQixDQUF3QyxDQUN2REEsQ0FBQSxDQUFVRCxFQUFBLENBQXNCQyxDQUF0
QixDQUNWQSxFQUFBNHpDLEtBQUEsQ0FBZTV6QyxDQUFBNHpDLEtBQUEsQ0FBZXg1RCxDQUFBLENB
QU80bEIsQ0FBQTR6QyxLQUFQLENBQXFCQSxDQUFyQixDQUFmLENBQTRDQSxDQUMzRDV6QyxFQUFB
NnpDLEdBQUEsQ0FBZTd6QyxDQUFBNnpDLEdBQUEsQ0FBZXo1RCxDQUFBLENBQU80bEIsQ0FBQTZ6
QyxHQUFQLENBQW1CQSxDQUFuQixDQUFmLENBQTRDQSxDQUczRDd6QyxFQUFBZzFDLFlBQUEsQ0FB
c0JyMUMsRUFBQSxDQUFhSyxDQUFBZzFDLFlBQWIsQ0FEVnZ0QyxDQUNVLEVBREcsbUJBQ0gsQ0FD
dEIsT0FBT2hZLEVBQUFqUyxLQUFBLENBQW9CZixDQUFwQixDQUE2QixTQUE3QixDQUF3Q3VqQixD
QUF4QyxDQVBnRCxDQTdScEQsQ0FqQytDLENBQTVDLENBbEZ5QyxDQUFoQyxDQWhMdkIsQ0FtaEVJ
dUYsR0FBaUI5dEIsQ0FBQSxDQUFPLFVBQVAsQ0FRckJxUyxHQUFBb1QsUUFBQSxDQUEyQixDQUFD
LFVBQUQsQ0FBYSx1QkFBYixDQW01RDNCLEtBQUl1TyxHQUFnQix1QkFBcEIsQ0FzR0k2TSxHQUFv
QjdnQyxDQUFBLENBQU8sYUFBUCxDQXRHeEIsQ0F5R0lvdkIsR0FBWSx5QkF6R2hCLENBZ1dJb3VD
LEdBQW1CLGtCQWhXdkIsQ0FpV0l4NkIsR0FBZ0MsQ0FBQyxlQUFnQnc2QixFQUFoQixDQUFtQyxn
QkFBcEMsQ0FqV3BDLENBa1dJeDdCLEdBQWEsZUFsV2pCLENBbVdJQyxHQUFZLENBQ2QsSUFBSyxJ
QURTLENBRWQsSUFBSyxJQUZTLENBbldoQixDQXVXSUosR0FBeUIsY0F2VzdCO0FBd3hESXlILEdB
QXFCaDlCLEVBQUFnOUIsbUJBQXJCQSxDQUFrRHRwQyxDQUFBLENBQU8sY0FBUCxDQUN0RHNwQyxH
QUFBUyxjQUFBLENBQW1DMHpCLFFBQVEsQ0FBQ3ppQyxDQUFELENBQU8sQ0FDaEQsS0FBTXNPLEdB
QUEsQ0FBbUIsVUFBbkIsQ0FHc0R0TyxDQUh0RCxDQUFOLENBRGdELENBT2xEc08sR0FBQUMsT0FB
QSxDQUE0Qm0wQixRQUFRLENBQUMxaUMsQ0FBRCxDQUFPMVYsQ0FBUCxDQUFZLENBQzlDLE1BQU9n
a0IsR0FBQSxDQUFtQixRQUFuQixDQUE0RHRPLENBQTVELENBQWtFMVYsQ0FBQTNoQixTQUFBLEVB
QWxFLENBRHVDLENBcDFVVCxLQXc3Vm5DZzZELEdBQWEsaUNBeDdWc0IsQ0F5N1ZuQzN2QixHQUFn
QixDQUFDLEtBQVEsRUFBVCxDQUFhLE1BQVMsR0FBdEIsQ0FBMkIsSUFBTyxFQUFsQyxDQXo3Vm1C
LENBMDdWbkN1QixHQUFrQnZ2QyxDQUFBLENBQU8sV0FBUCxDQTE3VmlCLENBNHZXbkM0OUQsR0FB
b0IsQ0FNdEIxdUIsUUFBUyxDQUFBLENBTmEsQ0FZdEJ5RCxVQUFXLENBQUEsQ0FaVyxDQWlDdEJs
QixPQUFRZixFQUFBLENBQWUsVUFBZixDQWpDYyxDQXdEdEJwbkIsSUFBS0EsUUFBUSxDQUFDQSxD
QUFELENBQU0sQ0FDakIsR0FBSXpsQixDQUFBLENBQVl5bEIsQ0FBWixDQUFKLENBQ0UsTUFBTyxL
QUFBb21CLE1BR1QsS0FBSXZwQyxFQUFRdzNELEVBQUEzZ0QsS0FBQSxDQUFnQnNNLENBQWhCLENB
Q1osRUFBSW5qQixDQUFBLENBQU0sQ0FBTixDQUFKLEVBQXdCLEVBQXhCLEdBQWdCbWpCLENBQWhC
LEdBQTRCLElBQUFuYSxLQUFBLENBQVUxRixrQkFBQSxDQUFtQnRELENBQUEsQ0FBTSxDQUFOLENB
QW5CLENBQVYsQ0FDNUIsRUFBSUEsQ0FBQSxDQUFNLENBQU4sQ0FBSixFQUFnQkEsQ0FBQSxDQUFN
LENBQU4sQ0FBaEIsRUFBb0MsRUFBcEMsR0FBNEJtakIsQ0FBNUIsR0FBd0MsSUFBQWlsQixPQUFB
LENBQVlwb0MsQ0FBQSxDQUFNLENBQU4sQ0FBWixFQUF3QixFQUF4QixDQUN4QyxLQUFBdWhCLEtB
QUEsQ0FBVXZoQixDQUFBLENBQU0sQ0FBTixDQUFWLEVBQXNCLEVBQXRCLENBRUEsT0FBTyxLQVZV
LENBeERHLENBdUZ0Qm9pQyxTQUFVbUksRUFBQSxDQUFlLFlBQWYsQ0F2Rlk7QUFtSHRCaHdCLEtB
QU1nd0IsRUFBQSxDQUFlLFFBQWYsQ0FuSGdCLENBdUl0QjNDLEtBQU0yQyxFQUFBLENBQWUsUUFB
ZixDQXZJZ0IsQ0FpS3RCdmhDLEtBQU15aEMsRUFBQSxDQUFxQixRQUFyQixDQUErQixRQUFRLENB
QUN6aEMsQ0FBRCxDQUFPLENBQ2xEQSxDQUFBLENBQWdCLElBQVQsR0FBQUEsQ0FBQSxDQUFnQkEs
Q0FBQXhMLFNBQUEsRUFBaEIsQ0FBa0MsRUFDekMsT0FBeUIsR0FBbEIsRUFBQXdMLENBQUE1SSxP
QUFBLENBQVksQ0FBWixDQUFBLENBQXdCNEksQ0FBeEIsQ0FBK0IsR0FBL0IsQ0FBcUNBLENBRk0s
Q0FBOUMsQ0FqS2dCLENBbU50Qm8vQixPQUFRQSxRQUFRLENBQUNBLENBQUQsQ0FBU3N2QixDQUFU
LENBQXFCLENBQ25DLE9BQVFoN0QsU0FBQXpDLE9BQVIsRUFDRSxLQUFLLENBQUwsQ0FDRSxNQUFP
LEtBQUFrdUMsU0FDVCxNQUFLLENBQUwsQ0FDRSxHQUFJOXRDLENBQUEsQ0FBUyt0QyxDQUFULENB
QUosRUFBd0J2cUMsQ0FBQSxDQUFTdXFDLENBQVQsQ0FBeEIsQ0FDRUEsQ0FDQSxDQURTQSxDQUFB
NXFDLFNBQUEsRUFDVCxDQUFBLElBQUEycUMsU0FBQSxDQUFnQjVrQyxFQUFBLENBQWM2a0MsQ0FB
ZCxDQUZsQixLQUdPLElBQUluc0MsQ0FBQSxDQUFTbXNDLENBQVQsQ0FBSixDQUNMQSxDQU1BLENB
TlNocEMsRUFBQSxDQUFLZ3BDLENBQUwsQ0FBYSxFQUFiLENBTVQsQ0FKQTd0QyxDQUFBLENBQVE2
dEMsQ0FBUixDQUFnQixRQUFRLENBQUM5c0MsQ0FBRCxDQUFRWixDQUFSLENBQWEsQ0FDdEIsSUFB
YixFQUFJWSxDQUFKLEVBQW1CLE9BQU84c0MsQ0FBQSxDQUFPMXRDLENBQVAsQ0FEUyxDQUFyQyxD
QUlBLENBQUEsSUFBQXl0QyxTQUFBLENBQWdCQyxDQVBYLEtBU0wsTUFBTWdCLEdBQUEsQ0FBZ0Is
VUFBaEIsQ0FBTixDQUdGLEtBQ0YsU0FDTTFyQyxDQUFBLENBQVlnNkQsQ0FBWixDQUFKLEVBQThD
LElBQTlDLEdBQStCQSxDQUEvQixDQUNFLE9BQU8sSUFBQXZ2QixTQUFBLENBQWNDLENBQWQsQ0FE
VCxDQUdFLElBQUFELFNBQUEsQ0FBY0MsQ0FBZCxDQUhGLENBRzBCc3ZCLENBeEI5QixDQTRCQSxJ
QUFBcnVCLFVBQUEsRUFDQSxPQUFPLEtBOUI0QixDQW5OZixDQXlRdEI5bkIsS0FBTWtwQixFQUFB
LENBQXFCLFFBQXJCLENBQStCLFFBQVEsQ0FBQ2xwQixDQUFELENBQU8sQ0FDbEQsTUFBZ0IsS0FB
VDtBQUFBQSxDQUFBLENBQWdCQSxDQUFBL2pCLFNBQUEsRUFBaEIsQ0FBa0MsRUFEUyxDQUE5QyxD
QXpRZ0IsQ0FxUnRCNEYsUUFBU0EsUUFBUSxFQUFHLENBQ2xCLElBQUFvcEMsVUFBQSxDQUFpQixD
QUFBLENBQ2pCLE9BQU8sS0FGVyxDQXJSRSxDQTJSeEJqeUMsRUFBQSxDQUFRLENBQUMrdkMsRUFB
RCxDQUE2QlAsRUFBN0IsQ0FBa0RuQixFQUFsRCxDQUFSLENBQTZFLFFBQVEsQ0FBQyt1QixDQUFE
LENBQVcsQ0FDOUZBLENBQUFsNkQsVUFBQSxDQUFxQnZELE1BQUFnRCxPQUFBLENBQWN1NkQsRUFB
ZCxDQXFCckJFLEVBQUFsNkQsVUFBQXNsQixNQUFBLENBQTJCNjBDLFFBQVEsQ0FBQzcwQyxDQUFE
LENBQVEsQ0FDekMsR0FBSzlvQixDQUFBeUMsU0FBQXpDLE9BQUwsQ0FDRSxNQUFPLEtBQUFreEMs
UUFHVCxJQUFJd3NCLENBQUosR0FBaUIvdUIsRUFBakIsRUFBc0NHLENBQUEsSUFBQUEsUUFBdEMs
Q0FDRSxLQUFNSyxHQUFBLENBQWdCLFNBQWhCLENBQU4sQ0FNRixJQUFBK0IsUUFBQSxDQUFlenRD
LENBQUEsQ0FBWXFsQixDQUFaLENBQUEsQ0FBcUIsSUFBckIsQ0FBNEJBLENBRTNDLE9BQU8sS0Fk
a0MsQ0F0Qm1ELENBQWhHLENBcWlCQSxLQUFJNHFCLEdBQWU5ekMsQ0FBQSxDQUFPLFFBQVAsQ0FB
bkIsQ0FnRUlrMEMsR0FBT2dqQixRQUFBdHpELFVBQUE1QyxLQWhFWCxDQWlFSW16QyxHQUFRK2lC
LFFBQUF0ekQsVUFBQTJELE1BakVaLENBa0VJNnNDLEdBQU84aUIsUUFBQXR6RCxVQUFBc0QsS0Fs
RVgsQ0FrRkk4MkQsR0FBWWwzRCxFQUFBLEVBQ2hCcEcsRUFBQSxDQUFRLCtDQUFBLE1BQUEsQ0FB
QSxHQUFBLENBQVIsQ0FBb0UsUUFBUSxDQUFDZzJDLENBQUQsQ0FBVyxDQUFFc25CLEVBQUEsQ0FB
VXRuQixDQUFWLENBQUEsQ0FBc0IsQ0FBQSxDQUF4QixDQUF2RixDQUNBLEtBQUl1bkIsR0FBUyxD
QUFDLEVBQUksSUFBTCxDQUFXLEVBQUksSUFBZixDQUFxQixFQUFJLElBQXpCO0FBQStCLEVBQUks
SUFBbkMsQ0FBeUMsRUFBSSxJQUE3QyxDQUFtRCxJQUFJLEdBQXZELENBQTRELElBQUksR0FBaEUs
Q0FBYixDQVNJbGtCLEdBQVFBLFFBQVEsQ0FBQ3h4QixDQUFELENBQVUsQ0FDNUIsSUFBQUEsUUFB
QSxDQUFlQSxDQURhLENBSTlCd3hCLEdBQUFuMkMsVUFBQSxDQUFrQixDQUNoQm9DLFlBQWErekMs
RUFERyxDQUdoQm1rQixJQUFLQSxRQUFRLENBQUNsakMsQ0FBRCxDQUFPLENBQ2xCLElBQUFBLEtB
QUEsQ0FBWUEsQ0FDWixLQUFBNTFCLE1BQUEsQ0FBYSxDQUdiLEtBRkEsSUFBQSs0RCxPQUVBLENB
RmMsRUFFZCxDQUFPLElBQUEvNEQsTUFBUCxDQUFvQixJQUFBNDFCLEtBQUE1NkIsT0FBcEIsQ0FB
QSxDQUVFLEdBREkyb0MsQ0FDQSxDQURLLElBQUEvTixLQUFBejBCLE9BQUEsQ0FBaUIsSUFBQW5C
LE1BQWpCLENBQ0wsQ0FBTyxHQUFQLEdBQUEyakMsQ0FBQSxFQUFxQixHQUFyQixHQUFjQSxDQUFs
QixDQUNFLElBQUFxMUIsV0FBQSxDQUFnQnIxQixDQUFoQixDQURGLEtBRU8sSUFBSSxJQUFBL2tD
LFNBQUEsQ0FBYytrQyxDQUFkLENBQUosRUFBZ0MsR0FBaEMsR0FBeUJBLENBQXpCLEVBQXVDLElB
QUEva0MsU0FBQSxDQUFjLElBQUFxNkQsS0FBQSxFQUFkLENBQXZDLENBQ0wsSUFBQUMsV0FBQSxF
QURLLEtBRUEsSUFBSSxJQUFBQyxRQUFBLENBQWF4MUIsQ0FBYixDQUFKLENBQ0wsSUFBQXkxQixV
QUFBLEVBREssS0FFQSxJQUFJLElBQUFDLEdBQUEsQ0FBUTExQixDQUFSLENBQVksYUFBWixDQUFK
LENBQ0wsSUFBQW8xQixPQUFBcDRELEtBQUEsQ0FBaUIsQ0FBQ1gsTUFBTyxJQUFBQSxNQUFSLENB
QW9CNDFCLEtBQU0rTixDQUExQixDQUFqQixDQUNBLENBQUEsSUFBQTNqQyxNQUFBLEVBRkssS0FH
QSxJQUFJLElBQUFzNUQsYUFBQSxDQUFrQjMxQixDQUFsQixDQUFKLENBQ0wsSUFBQTNqQyxNQUFB
LEVBREs7SUFFQSxDQUNMLElBQUl1NUQsRUFBTTUxQixDQUFONDFCLENBQVcsSUFBQU4sS0FBQSxF
QUFmLENBQ0lPLEVBQU1ELENBQU5DLENBQVksSUFBQVAsS0FBQSxDQUFVLENBQVYsQ0FEaEIsQ0FH
SVEsRUFBTWIsRUFBQSxDQUFVVyxDQUFWLENBSFYsQ0FJSUcsRUFBTWQsRUFBQSxDQUFVWSxDQUFW
LENBRkFaLEdBQUFlLENBQVVoMkIsQ0FBVmcyQixDQUdWLEVBQVdGLENBQVgsRUFBa0JDLENBQWxC
LEVBQ001K0IsQ0FFSixDQUZZNCtCLENBQUEsQ0FBTUYsQ0FBTixDQUFhQyxDQUFBLENBQU1GLENB
QU4sQ0FBWTUxQixDQUVyQyxDQURBLElBQUFvMUIsT0FBQXA0RCxLQUFBLENBQWlCLENBQUNYLE1B
QU8sSUFBQUEsTUFBUixDQUFvQjQxQixLQUFNa0YsQ0FBMUIsQ0FBaUN3VyxTQUFVLENBQUEsQ0FB
M0MsQ0FBakIsQ0FDQSxDQUFBLElBQUF0eEMsTUFBQSxFQUFjODZCLENBQUE5L0IsT0FIaEIsRUFL
RSxJQUFBNCtELFdBQUEsQ0FBZ0IsNEJBQWhCLENBQThDLElBQUE1NUQsTUFBOUMsQ0FBMEQsSUFB
QUEsTUFBMUQsQ0FBdUUsQ0FBdkUsQ0FYRyxDQWVULE1BQU8sS0FBQSs0RCxPQWpDVyxDQUhKLENB
dUNoQk0sR0FBSUEsUUFBUSxDQUFDMTFCLENBQUQsQ0FBS2syQixDQUFMLENBQVksQ0FDdEIsTUFB
OEIsRUFBOUIsR0FBT0EsQ0FBQTU1RCxRQUFBLENBQWMwakMsQ0FBZCxDQURlLENBdkNSLENBMkNo
QnMxQixLQUFNQSxRQUFRLENBQUMvOEQsQ0FBRCxDQUFJLENBQ1o4ckMsQ0FBQUEsQ0FBTTlyQyxD
QUFOOHJDLEVBQVcsQ0FDZixPQUFRLEtBQUFob0MsTUFBRCxDQUFjZ29DLENBQWQsQ0FBb0IsSUFB
QXBTLEtBQUE1NkIsT0FBcEIsQ0FBd0MsSUFBQTQ2QixLQUFBejBCLE9BQUEsQ0FBaUIsSUFBQW5C
LE1BQWpCLENBQThCZ29DLENBQTlCLENBQXhDLENBQTZFLENBQUEsQ0FGcEUsQ0EzQ0YsQ0FnRGhC
cHBDLFNBQVVBLFFBQVEsQ0FBQytrQyxDQUFELENBQUssQ0FDckIsTUFBUSxHQUFSLEVBQWVBLENB
QWYsRUFBMkIsR0FBM0IsRUFBcUJBLENBQXJCLEVBQWlELFFBQWpELEdBQW1DLE1BQU9BLEVBRHJC
LENBaERQLENBb0RoQjIxQixhQUFjQSxRQUFRLENBQUMzMUIsQ0FBRCxDQUFLLENBRXpCLE1BQWUs
R0FBZixHQUFRQSxDQUFSLEVBQTZCLElBQTdCLEdBQXNCQSxDQUF0QjtBQUE0QyxJQUE1QyxHQUFx
Q0EsQ0FBckMsRUFDZSxJQURmLEdBQ1FBLENBRFIsRUFDOEIsSUFEOUIsR0FDdUJBLENBRHZCLEVB
QzZDLFFBRDdDLEdBQ3NDQSxDQUhiLENBcERYLENBMERoQncxQixRQUFTQSxRQUFRLENBQUN4MUIs
Q0FBRCxDQUFLLENBQ3BCLE1BQVEsR0FBUixFQUFlQSxDQUFmLEVBQTJCLEdBQTNCLEVBQXFCQSxD
QUFyQixFQUNRLEdBRFIsRUFDZUEsQ0FEZixFQUMyQixHQUQzQixFQUNxQkEsQ0FEckIsRUFFUSxH
QUZSLEdBRWdCQSxDQUZoQixFQUU2QixHQUY3QixHQUVzQkEsQ0FIRixDQTFETixDQWdFaEJtMkIs
Y0FBZUEsUUFBUSxDQUFDbjJCLENBQUQsQ0FBSyxDQUMxQixNQUFlLEdBQWYsR0FBUUEsQ0FBUixF
QUE2QixHQUE3QixHQUFzQkEsQ0FBdEIsRUFBb0MsSUFBQS9rQyxTQUFBLENBQWMra0MsQ0FBZCxD
QURWLENBaEVaLENBb0VoQmkyQixXQUFZQSxRQUFRLENBQUNuMkMsQ0FBRCxDQUFRczJDLENBQVIs
Q0FBZTVELENBQWYsQ0FBb0IsQ0FDdENBLENBQUEsQ0FBTUEsQ0FBTixFQUFhLElBQUFuMkQsTUFD
VGc2RCxFQUFBQSxDQUFVdDdELENBQUEsQ0FBVXE3RCxDQUFWLENBQUEsQ0FDSixJQURJLENBQ0dB
LENBREgsQ0FDWSxHQURaLENBQ2tCLElBQUEvNUQsTUFEbEIsQ0FDK0IsSUFEL0IsQ0FDc0MsSUFB
QTQxQixLQUFBbEYsVUFBQSxDQUFvQnFwQyxDQUFwQixDQUEyQjVELENBQTNCLENBRHRDLENBQ3dF
LEdBRHhFLENBRUosR0FGSSxDQUVFQSxDQUNoQixNQUFNem5CLEdBQUEsQ0FBYSxRQUFiLENBQ0Zq
ckIsQ0FERSxDQUNLdTJDLENBREwsQ0FDYSxJQUFBcGtDLEtBRGIsQ0FBTixDQUxzQyxDQXBFeEIs
Q0E2RWhCc2pDLFdBQVlBLFFBQVEsRUFBRyxDQUdyQixJQUZBLElBQUkxVCxFQUFTLEVBQWIsQ0FD
SXVVLEVBQVEsSUFBQS81RCxNQUNaLENBQU8sSUFBQUEsTUFBUCxDQUFvQixJQUFBNDFCLEtBQUE1
NkIsT0FBcEIsQ0FBQSxDQUFzQyxDQUNwQyxJQUFJMm9DLEVBQUs5akMsQ0FBQSxDQUFVLElBQUEr
MUIsS0FBQXowQixPQUFBLENBQWlCLElBQUFuQixNQUFqQixDQUFWLENBQ1QsSUFBVSxHQUFWLEVB
QUkyakMsQ0FBSixFQUFpQixJQUFBL2tDLFNBQUEsQ0FBYytrQyxDQUFkLENBQWpCLENBQ0U2aEIs
Q0FBQSxFQUFVN2hCLENBRFosS0FFTyxDQUNMLElBQUlzMkIsRUFBUyxJQUFBaEIsS0FBQSxFQUNi
O0dBQVUsR0FBVixFQUFJdDFCLENBQUosRUFBaUIsSUFBQW0yQixjQUFBLENBQW1CRyxDQUFuQixD
QUFqQixDQUNFelUsQ0FBQSxFQUFVN2hCLENBRFosS0FFTyxJQUFJLElBQUFtMkIsY0FBQSxDQUFt
Qm4yQixDQUFuQixDQUFKLEVBQ0hzMkIsQ0FERyxFQUNPLElBQUFyN0QsU0FBQSxDQUFjcTdELENB
QWQsQ0FEUCxFQUVpQyxHQUZqQyxFQUVIelUsQ0FBQXJrRCxPQUFBLENBQWNxa0QsQ0FBQXhxRCxP
QUFkLENBQThCLENBQTlCLENBRkcsQ0FHTHdxRCxDQUFBLEVBQVU3aEIsQ0FITCxLQUlBLElBQUks
Q0FBQSxJQUFBbTJCLGNBQUEsQ0FBbUJuMkIsQ0FBbkIsQ0FBSixFQUNEczJCLENBREMsRUFDVSxJ
QUFBcjdELFNBQUEsQ0FBY3E3RCxDQUFkLENBRFYsRUFFaUMsR0FGakMsRUFFSHpVLENBQUFya0Qs
T0FBQSxDQUFjcWtELENBQUF4cUQsT0FBZCxDQUE4QixDQUE5QixDQUZHLENBS0wsS0FMSyxLQUdM
LEtBQUE0K0QsV0FBQSxDQUFnQixrQkFBaEIsQ0FYRyxDQWdCUCxJQUFBNTVELE1BQUEsRUFwQm9D
LENBc0J0QyxJQUFBKzRELE9BQUFwNEQsS0FBQSxDQUFpQixDQUNmWCxNQUFPKzVELENBRFEsQ0FF
Zm5rQyxLQUFNNHZCLENBRlMsQ0FHZng1QyxTQUFVLENBQUEsQ0FISyxDQUlmM1AsTUFBT21yQixN
QUFBLENBQU9nK0IsQ0FBUCxDQUpRLENBQWpCLENBekJxQixDQTdFUCxDQThHaEI0VCxVQUFXQSxR
QUFRLEVBQUcsQ0FFcEIsSUFEQSxJQUFJVyxFQUFRLElBQUEvNUQsTUFDWixDQUFPLElBQUFBLE1B
QVAsQ0FBb0IsSUFBQTQxQixLQUFBNTZCLE9BQXBCLENBQUEsQ0FBc0MsQ0FDcEMsSUFBSTJvQyxF
QUFLLElBQUEvTixLQUFBejBCLE9BQUEsQ0FBaUIsSUFBQW5CLE1BQWpCLENBQ1QsSUFBTSxDQUFB
LElBQUFtNUQsUUFBQSxDQUFheDFCLENBQWIsQ0FBTixFQUEwQixDQUFBLElBQUEva0MsU0FBQSxD
QUFjK2tDLENBQWQsQ0FBMUIsQ0FDRSxLQUVGLEtBQUEzakMsTUFBQSxFQUxvQyxDQU90QyxJQUFB
KzRELE9BQUFwNEQsS0FBQSxDQUFpQixDQUNmWCxNQUFPKzVELENBRFE7QUFFZm5rQyxLQUFNLElB
QUFBLEtBQUFwNEIsTUFBQSxDQUFnQnU4RCxDQUFoQixDQUF1QixJQUFBLzVELE1BQXZCLENBRlMs
Q0FHZmd5QixXQUFZLENBQUEsQ0FIRyxDQUFqQixDQVRvQixDQTlHTixDQThIaEJnbkMsV0FBWUEs
UUFBUSxDQUFDa0IsQ0FBRCxDQUFRLENBQzFCLElBQUlILEVBQVEsSUFBQS81RCxNQUNaLEtBQUFB
LE1BQUEsRUFJQSxLQUhBLElBQUk2bkQsRUFBUyxFQUFiLENBQ0lzUyxFQUFZRCxDQURoQixDQUVJ
eDJCLEVBQVMsQ0FBQSxDQUNiLENBQU8sSUFBQTFqQyxNQUFQLENBQW9CLElBQUE0MUIsS0FBQTU2
QixPQUFwQixDQUFBLENBQXNDLENBQ3BDLElBQUkyb0MsRUFBSyxJQUFBL04sS0FBQXowQixPQUFB
LENBQWlCLElBQUFuQixNQUFqQixDQUFULENBQ0FtNkQsRUFBQUEsQ0FBQUEsQ0FBYXgyQixDQUNi
LElBQUlELENBQUosQ0FDYSxHQUFYLEdBQUlDLENBQUosRUFDTXkyQixDQUtKLENBTFUsSUFBQXhr
QyxLQUFBbEYsVUFBQSxDQUFvQixJQUFBMXdCLE1BQXBCLENBQWlDLENBQWpDLENBQW9DLElBQUFB
LE1BQXBDLENBQWlELENBQWpELENBS1YsQ0FKS282RCxDQUFBcjVELE1BQUEsQ0FBVSxhQUFWLENB
SUwsRUFIRSxJQUFBNjRELFdBQUEsQ0FBZ0IsNkJBQWhCLENBQWdEUSxDQUFoRCxDQUFzRCxHQUF0
RCxDQUdGLENBREEsSUFBQXA2RCxNQUNBLEVBRGMsQ0FDZCxDQUFBNm5ELENBQUEsRUFBVXdTLE1B
QUFDLGFBQUEsQ0FBb0J6OEQsUUFBQSxDQUFTdThELENBQVQsQ0FBYyxFQUFkLENBQXBCLENBTlos
RUFTRXZTLENBVEYsRUFRWWdSLEVBQUEwQixDQUFPNTJCLENBQVA0MkIsQ0FSWixFQVM0QjUyQixD
QUU1QixDQUFBRCxDQUFBLENBQVMsQ0FBQSxDQVpYLEtBYU8sSUFBVyxJQUFYLEdBQUlDLENBQUos
Q0FDTEQsQ0FBQSxDQUFTLENBQUEsQ0FESixLQUVBLENBQUEsR0FBSUMsQ0FBSixHQUFXdTJCLENB
QVgsQ0FBa0IsQ0FDdkIsSUFBQWw2RCxNQUFBLEVBQ0EsS0FBQSs0RCxPQUFBcDRELEtBQUEsQ0FB
aUIsQ0FDZlgsTUFBTys1RCxDQURRLENBRWZua0MsS0FBTXVrQyxDQUZTLENBR2ZudUQsU0FBVSxD
QUFBLENBSEs7QUFJZjNQLE1BQU93ckQsQ0FKUSxDQUFqQixDQU1BLE9BUnVCLENBVXZCQSxDQUFB
LEVBQVVsa0IsQ0FWTCxDQVlQLElBQUEzakMsTUFBQSxFQTlCb0MsQ0FnQ3RDLElBQUE0NUQsV0FB
QSxDQUFnQixvQkFBaEIsQ0FBc0NHLENBQXRDLENBdEMwQixDQTlIWixDQXdLbEIsS0FBSXZxQixF
QUFNQSxRQUFRLENBQUNrRixDQUFELENBQVF2eEIsQ0FBUixDQUFpQixDQUNqQyxJQUFBdXhCLE1B
QUEsQ0FBYUEsQ0FDYixLQUFBdnhCLFFBQUEsQ0FBZUEsQ0FGa0IsQ0FLbkNxc0IsRUFBQUMsUUFB
QSxDQUFjLFNBQ2RELEVBQUFnckIsb0JBQUEsQ0FBMEIscUJBQzFCaHJCLEVBQUFvQixxQkFBQSxD
QUEyQixzQkFDM0JwQixFQUFBVyxzQkFBQSxDQUE0Qix1QkFDNUJYLEVBQUFVLGtCQUFBLENBQXdC
LG1CQUN4QlYsRUFBQU8saUJBQUEsQ0FBdUIsa0JBQ3ZCUCxFQUFBSyxnQkFBQSxDQUFzQixpQkFD
dEJMLEVBQUFrQixlQUFBLENBQXFCLGdCQUNyQmxCLEVBQUFlLGlCQUFBLENBQXVCLGtCQUN2QmYs
RUFBQWMsV0FBQSxDQUFpQixZQUNqQmQsRUFBQUcsUUFBQTtBQUFjLFNBQ2RILEVBQUFxQixnQkFB
QSxDQUFzQixpQkFDdEJyQixFQUFBaXJCLFNBQUEsQ0FBZSxVQUNmanJCLEVBQUFzQixpQkFBQSxD
QUF1QixrQkFDdkJ0QixFQUFBd0IsZUFBQSxDQUFxQixnQkFHckJ4QixFQUFBNkIsaUJBQUEsQ0FB
dUIsa0JBRXZCN0IsRUFBQWh4QyxVQUFBLENBQWdCLENBQ2Q2d0MsSUFBS0EsUUFBUSxDQUFDelos
Q0FBRCxDQUFPLENBQ2xCLElBQUFBLEtBQUEsQ0FBWUEsQ0FDWixLQUFBbWpDLE9BQUEsQ0FBYyxJ
QUFBcmtCLE1BQUFva0IsSUFBQSxDQUFlbGpDLENBQWYsQ0FFVnY1QixFQUFBQSxDQUFRLElBQUFx
K0QsUUFBQSxFQUVlLEVBQTNCLEdBQUksSUFBQTNCLE9BQUEvOUQsT0FBSixFQUNFLElBQUE0K0Qs
V0FBQSxDQUFnQix3QkFBaEIsQ0FBMEMsSUFBQWIsT0FBQSxDQUFZLENBQVosQ0FBMUMsQ0FHRixP
QUFPMThELEVBVlcsQ0FETixDQWNkcStELFFBQVNBLFFBQVEsRUFBRyxDQUVsQixJQURBLElBQUly
NEIsRUFBTyxFQUNYLENBQUEsQ0FBQSxDQUdFLEdBRnlCLENBRXBCLENBRkQsSUFBQTAyQixPQUFB
LzlELE9BRUMsRUFGMEIsQ0FBQSxJQUFBaStELEtBQUEsQ0FBVSxHQUFWLENBQWUsR0FBZixDQUFv
QixHQUFwQixDQUF5QixHQUF6QixDQUUxQixFQURINTJCLENBQUExaEMsS0FBQSxDQUFVLElBQUFn
NkQsb0JBQUEsRUFBVixDQUNHLENBQUEsQ0FBQSxJQUFBQyxPQUFBLENBQVksR0FBWixDQUFMLENB
Q0UsTUFBTyxDQUFFdGhELEtBQU1rMkIsQ0FBQUMsUUFBUjtBQUFxQnBOLEtBQU1BLENBQTNCLENB
Tk8sQ0FkTixDQXlCZHM0QixvQkFBcUJBLFFBQVEsRUFBRyxDQUM5QixNQUFPLENBQUVyaEQsS0FB
TWsyQixDQUFBZ3JCLG9CQUFSLENBQWlDbC9CLFdBQVksSUFBQXUvQixZQUFBLEVBQTdDLENBRHVC
LENBekJsQixDQTZCZEEsWUFBYUEsUUFBUSxFQUFHLENBR3RCLElBRkEsSUFBSTdxQixFQUFPLElB
QUExVSxXQUFBLEVBRVgsQ0FBZ0IsSUFBQXMvQixPQUFBLENBQVksR0FBWixDQUFoQixDQUFBLENB
Q0U1cUIsQ0FBQSxDQUFPLElBQUE3akMsT0FBQSxDQUFZNmpDLENBQVosQ0FFVCxPQUFPQSxFQU5l
LENBN0JWLENBc0NkMVUsV0FBWUEsUUFBUSxFQUFHLENBQ3JCLE1BQU8sS0FBQXcvQixXQUFBLEVB
RGMsQ0F0Q1QsQ0EwQ2RBLFdBQVlBLFFBQVEsRUFBRyxDQUNyQixJQUFJNzdDLEVBQVMsSUFBQTg3
QyxRQUFBLEVBQ1QsS0FBQUgsT0FBQSxDQUFZLEdBQVosQ0FBSixHQUNFMzdDLENBREYsQ0FDVyxD
QUFFM0YsS0FBTWsyQixDQUFBb0IscUJBQVIsQ0FBa0NaLEtBQU0vd0IsQ0FBeEMsQ0FBZ0RneEIs
TUFBTyxJQUFBNnFCLFdBQUEsRUFBdkQsQ0FBMEV4cEIsU0FBVSxHQUFwRixDQURYLENBR0EsT0FB
T3J5QixFQUxjLENBMUNULENBa0RkODdDLFFBQVNBLFFBQVEsRUFBRyxDQUNsQixJQUFJcjZELEVB
QU8sSUFBQXM2RCxVQUFBLEVBQVgsQ0FDSTVxQixDQURKLENBRUlDLENBQ0osT0FBSSxLQUFBdXFC
LE9BQUEsQ0FBWSxHQUFaLENBQUosR0FDRXhxQixDQUNJLENBRFEsSUFBQTlVLFdBQUEsRUFDUixD
QUFBLElBQUEyL0IsUUFBQSxDQUFhLEdBQWIsQ0FGTjtDQUdJNXFCLENBQ08sQ0FETSxJQUFBL1Us
V0FBQSxFQUNOLENBQUEsQ0FBRWhpQixLQUFNazJCLENBQUFXLHNCQUFSLENBQW1DenZDLEtBQU1B
LENBQXpDLENBQStDMHZDLFVBQVdBLENBQTFELENBQXFFQyxXQUFZQSxDQUFqRixDQUpYLEVBT08z
dkMsQ0FYVyxDQWxETixDQWdFZHM2RCxVQUFXQSxRQUFRLEVBQUcsQ0FFcEIsSUFEQSxJQUFJaHJC
LEVBQU8sSUFBQWtyQixXQUFBLEVBQ1gsQ0FBTyxJQUFBTixPQUFBLENBQVksSUFBWixDQUFQLENB
QUEsQ0FDRTVxQixDQUFBLENBQU8sQ0FBRTEyQixLQUFNazJCLENBQUFVLGtCQUFSLENBQStCb0Is
U0FBVSxJQUF6QyxDQUErQ3RCLEtBQU1BLENBQXJELENBQTJEQyxNQUFPLElBQUFpckIsV0FBQSxF
QUFsRSxDQUVULE9BQU9sckIsRUFMYSxDQWhFUixDQXdFZGtyQixXQUFZQSxRQUFRLEVBQUcsQ0FF
ckIsSUFEQSxJQUFJbHJCLEVBQU8sSUFBQW1yQixTQUFBLEVBQ1gsQ0FBTyxJQUFBUCxPQUFBLENB
QVksSUFBWixDQUFQLENBQUEsQ0FDRTVxQixDQUFBLENBQU8sQ0FBRTEyQixLQUFNazJCLENBQUFV
LGtCQUFSLENBQStCb0IsU0FBVSxJQUF6QyxDQUErQ3RCLEtBQU1BLENBQXJELENBQTJEQyxNQUFP
LElBQUFrckIsU0FBQSxFQUFsRSxDQUVULE9BQU9uckIsRUFMYyxDQXhFVCxDQWdGZG1yQixTQUFV
QSxRQUFRLEVBQUcsQ0FHbkIsSUFGQSxJQUFJbnJCLEVBQU8sSUFBQW9yQixXQUFBLEVBQVgsQ0FD
SXRnQyxDQUNKLENBQVFBLENBQVIsQ0FBZ0IsSUFBQTgvQixPQUFBLENBQVksSUFBWixDQUFpQixJ
QUFqQixDQUFzQixLQUF0QixDQUE0QixLQUE1QixDQUFoQixDQUFBLENBQ0U1cUIsQ0FBQSxDQUFP
LENBQUUxMkIsS0FBTWsyQixDQUFBTyxpQkFBUjtBQUE4QnVCLFNBQVV4VyxDQUFBbEYsS0FBeEMs
Q0FBb0RvYSxLQUFNQSxDQUExRCxDQUFnRUMsTUFBTyxJQUFBbXJCLFdBQUEsRUFBdkUsQ0FFVCxP
QUFPcHJCLEVBTlksQ0FoRlAsQ0F5RmRvckIsV0FBWUEsUUFBUSxFQUFHLENBR3JCLElBRkEsSUFB
SXByQixFQUFPLElBQUFxckIsU0FBQSxFQUFYLENBQ0l2Z0MsQ0FDSixDQUFRQSxDQUFSLENBQWdC
LElBQUE4L0IsT0FBQSxDQUFZLEdBQVosQ0FBaUIsR0FBakIsQ0FBc0IsSUFBdEIsQ0FBNEIsSUFB
NUIsQ0FBaEIsQ0FBQSxDQUNFNXFCLENBQUEsQ0FBTyxDQUFFMTJCLEtBQU1rMkIsQ0FBQU8saUJB
QVIsQ0FBOEJ1QixTQUFVeFcsQ0FBQWxGLEtBQXhDLENBQW9Eb2EsS0FBTUEsQ0FBMUQsQ0FBZ0VD
LE1BQU8sSUFBQW9yQixTQUFBLEVBQXZFLENBRVQsT0FBT3JyQixFQU5jLENBekZULENBa0dkcXJC
LFNBQVVBLFFBQVEsRUFBRyxDQUduQixJQUZBLElBQUlyckIsRUFBTyxJQUFBc3JCLGVBQUEsRUFB
WCxDQUNJeGdDLENBQ0osQ0FBUUEsQ0FBUixDQUFnQixJQUFBOC9CLE9BQUEsQ0FBWSxHQUFaLENB
QWdCLEdBQWhCLENBQWhCLENBQUEsQ0FDRTVxQixDQUFBLENBQU8sQ0FBRTEyQixLQUFNazJCLENB
QUFPLGlCQUFSLENBQThCdUIsU0FBVXhXLENBQUFsRixLQUF4QyxDQUFvRG9hLEtBQU1BLENBQTFE
LENBQWdFQyxNQUFPLElBQUFxckIsZUFBQSxFQUF2RSxDQUVULE9BQU90ckIsRUFOWSxDQWxHUCxD
QTJHZHNyQixlQUFnQkEsUUFBUSxFQUFHLENBR3pCLElBRkEsSUFBSXRyQixFQUFPLElBQUF1ckIs
TUFBQSxFQUFYLENBQ0l6Z0MsQ0FDSixDQUFRQSxDQUFSLENBQWdCLElBQUE4L0IsT0FBQSxDQUFZ
LEdBQVosQ0FBZ0IsR0FBaEIsQ0FBb0IsR0FBcEIsQ0FBaEIsQ0FBQSxDQUNFNXFCLENBQUEsQ0FB
TyxDQUFFMTJCLEtBQU1rMkIsQ0FBQU8saUJBQVIsQ0FBOEJ1QixTQUFVeFcsQ0FBQWxGLEtBQXhD
O0FBQW9Eb2EsS0FBTUEsQ0FBMUQsQ0FBZ0VDLE1BQU8sSUFBQXNyQixNQUFBLEVBQXZFLENBRVQs
T0FBT3ZyQixFQU5rQixDQTNHYixDQW9IZHVyQixNQUFPQSxRQUFRLEVBQUcsQ0FDaEIsSUFBSXpn
QyxDQUNKLE9BQUEsQ0FBS0EsQ0FBTCxDQUFhLElBQUE4L0IsT0FBQSxDQUFZLEdBQVosQ0FBaUIs
R0FBakIsQ0FBc0IsR0FBdEIsQ0FBYixFQUNTLENBQUV0aEQsS0FBTWsyQixDQUFBSyxnQkFBUixD
QUE2QnlCLFNBQVV4VyxDQUFBbEYsS0FBdkMsQ0FBbURsd0IsT0FBUSxDQUFBLENBQTNELENBQWlF
b3FDLFNBQVUsSUFBQXlyQixNQUFBLEVBQTNFLENBRFQsQ0FHUyxJQUFBQyxRQUFBLEVBTE8sQ0Fw
SEosQ0E2SGRBLFFBQVNBLFFBQVEsRUFBRyxDQUNsQixJQUFJQSxDQUNBLEtBQUFaLE9BQUEsQ0FB
WSxHQUFaLENBQUosRUFDRVksQ0FDQSxDQURVLElBQUFYLFlBQUEsRUFDVixDQUFBLElBQUFJLFFB
QUEsQ0FBYSxHQUFiLENBRkYsRUFHVyxJQUFBTCxPQUFBLENBQVksR0FBWixDQUFKLENBQ0xZLENB
REssQ0FDSyxJQUFBQyxpQkFBQSxFQURMLENBRUksSUFBQWIsT0FBQSxDQUFZLEdBQVosQ0FBSixD
QUNMWSxDQURLLENBQ0ssSUFBQWhyQixPQUFBLEVBREwsQ0FFSSxJQUFBa3JCLFVBQUEvL0QsZUFB
QSxDQUE4QixJQUFBczlELEtBQUEsRUFBQXJqQyxLQUE5QixDQUFKLENBQ0w0bEMsQ0FESyxDQUNL
cjdELEVBQUEsQ0FBSyxJQUFBdTdELFVBQUEsQ0FBZSxJQUFBVCxRQUFBLEVBQUFybEMsS0FBZixD
QUFMLENBREwsQ0FFSSxJQUFBcWpDLEtBQUEsRUFBQWpuQyxXQUFKLENBQ0x3cEMsQ0FESyxDQUNL
LElBQUF4cEMsV0FBQSxFQURMLENBRUksSUFBQWluQyxLQUFBLEVBQUFqdEQsU0FBSixDQUNMd3ZE
LENBREssQ0FDSyxJQUFBeHZELFNBQUEsRUFETDtBQUdMLElBQUE0dEQsV0FBQSxDQUFnQiwwQkFB
aEIsQ0FBNEMsSUFBQVgsS0FBQSxFQUE1QyxDQUlGLEtBREEsSUFBSXRjLENBQ0osQ0FBUUEsQ0FB
UixDQUFlLElBQUFpZSxPQUFBLENBQVksR0FBWixDQUFpQixHQUFqQixDQUFzQixHQUF0QixDQUFm
LENBQUEsQ0FDb0IsR0FBbEIsR0FBSWplLENBQUEvbUIsS0FBSixFQUNFNGxDLENBQ0EsQ0FEVSxD
QUFDbGlELEtBQU1rMkIsQ0FBQWtCLGVBQVAsQ0FBMkJDLE9BQVE2cUIsQ0FBbkMsQ0FBNEMvOUQs
VUFBVyxJQUFBaytELGVBQUEsRUFBdkQsQ0FDVixDQUFBLElBQUFWLFFBQUEsQ0FBYSxHQUFiLENB
RkYsRUFHeUIsR0FBbEIsR0FBSXRlLENBQUEvbUIsS0FBSixFQUNMNGxDLENBQ0EsQ0FEVSxDQUFF
bGlELEtBQU1rMkIsQ0FBQWUsaUJBQVIsQ0FBOEJDLE9BQVFnckIsQ0FBdEMsQ0FBK0Nqd0IsU0FB
VSxJQUFBalEsV0FBQSxFQUF6RCxDQUE0RW1WLFNBQVUsQ0FBQSxDQUF0RixDQUNWLENBQUEsSUFB
QXdxQixRQUFBLENBQWEsR0FBYixDQUZLLEVBR2tCLEdBQWxCLEdBQUl0ZSxDQUFBL21CLEtBQUos
Q0FDTDRsQyxDQURLLENBQ0ssQ0FBRWxpRCxLQUFNazJCLENBQUFlLGlCQUFSLENBQThCQyxPQUFR
Z3JCLENBQXRDLENBQStDandCLFNBQVUsSUFBQXZaLFdBQUEsRUFBekQsQ0FBNEV5ZSxTQUFVLENB
QUEsQ0FBdEYsQ0FETCxDQUdMLElBQUFtcEIsV0FBQSxDQUFnQixZQUFoQixDQUdKLE9BQU80QixF
QWpDVyxDQTdITixDQWlLZHJ2RCxPQUFRQSxRQUFRLENBQUN5dkQsQ0FBRCxDQUFpQixDQUMzQno5
QyxDQUFBQSxDQUFPLENBQUN5OUMsQ0FBRCxDQUdYLEtBRkEsSUFBSTM4QyxFQUFTLENBQUMzRixL
QUFNazJCLENBQUFrQixlQUFQLENBQTJCQyxPQUFRLElBQUEzZSxXQUFBLEVBQW5DO0FBQXNEdjBC
LFVBQVcwZ0IsQ0FBakUsQ0FBdUVoUyxPQUFRLENBQUEsQ0FBL0UsQ0FFYixDQUFPLElBQUF5dUQs
T0FBQSxDQUFZLEdBQVosQ0FBUCxDQUFBLENBQ0V6OEMsQ0FBQXhkLEtBQUEsQ0FBVSxJQUFBMjZC
LFdBQUEsRUFBVixDQUdGLE9BQU9yYyxFQVJ3QixDQWpLbkIsQ0E0S2QwOEMsZUFBZ0JBLFFBQVEs
RUFBRyxDQUN6QixJQUFJeDlDLEVBQU8sRUFDWCxJQUE4QixHQUE5QixHQUFJLElBQUEwOUMsVUFB
QSxFQUFBam1DLEtBQUosRUFDRSxFQUNFelgsRUFBQXhkLEtBQUEsQ0FBVSxJQUFBMjZCLFdBQUEs
RUFBVixDQURGLE9BRVMsSUFBQXMvQixPQUFBLENBQVksR0FBWixDQUZULENBREYsQ0FLQSxNQUFP
ejhDLEVBUGtCLENBNUtiLENBc0xkNlQsV0FBWUEsUUFBUSxFQUFHLENBQ3JCLElBQUk4SSxFQUFR
LElBQUFtZ0MsUUFBQSxFQUNQbmdDLEVBQUE5SSxXQUFMLEVBQ0UsSUFBQTRuQyxXQUFBLENBQWdC
LDJCQUFoQixDQUE2QzkrQixDQUE3QyxDQUVGLE9BQU8sQ0FBRXhoQixLQUFNazJCLENBQUFjLFdB
QVIsQ0FBd0IzcUMsS0FBTW0xQixDQUFBbEYsS0FBOUIsQ0FMYyxDQXRMVCxDQThMZDVwQixTQUFV
QSxRQUFRLEVBQUcsQ0FFbkIsTUFBTyxDQUFFc04sS0FBTWsyQixDQUFBRyxRQUFSLENBQXFCdHpD
LE1BQU8sSUFBQTQrRCxRQUFBLEVBQUE1K0QsTUFBNUIsQ0FGWSxDQTlMUCxDQW1NZG8vRCxpQkFB
a0JBLFFBQVEsRUFBRyxDQUMzQixJQUFJMWdELEVBQVcsRUFDZixJQUE4QixHQUE5QixHQUFJLElB
QUE4Z0QsVUFBQSxFQUFBam1DLEtBQUosRUFDRSxFQUFHLENBQ0QsR0FBSSxJQUFBcWpDLEtBQUEs
Q0FBVSxHQUFWLENBQUosQ0FFRSxLQUVGbCtDO0NBQUFwYSxLQUFBLENBQWMsSUFBQTI2QixXQUFB
LEVBQWQsQ0FMQyxDQUFILE1BTVMsSUFBQXMvQixPQUFBLENBQVksR0FBWixDQU5ULENBREYsQ0FT
QSxJQUFBSyxRQUFBLENBQWEsR0FBYixDQUVBLE9BQU8sQ0FBRTNoRCxLQUFNazJCLENBQUFxQixn
QkFBUixDQUE2QjkxQixTQUFVQSxDQUF2QyxDQWJvQixDQW5NZixDQW1OZHkxQixPQUFRQSxRQUFR
LEVBQUcsQ0FBQSxJQUNiTyxFQUFhLEVBREEsQ0FDSXhGLENBQ3JCLElBQThCLEdBQTlCLEdBQUks
SUFBQXN3QixVQUFBLEVBQUFqbUMsS0FBSixFQUNFLEVBQUcsQ0FDRCxHQUFJLElBQUFxakMsS0FB
QSxDQUFVLEdBQVYsQ0FBSixDQUVFLEtBRUYxdEIsRUFBQSxDQUFXLENBQUNqeUIsS0FBTWsyQixD
QUFBaXJCLFNBQVAsQ0FBcUJxQixLQUFNLE1BQTNCLENBQ1AsS0FBQTdDLEtBQUEsRUFBQWp0RCxT
QUFKLENBQ0V1L0IsQ0FBQTl2QyxJQURGLENBQ2lCLElBQUF1USxTQUFBLEVBRGpCLENBRVcsSUFB
QWl0RCxLQUFBLEVBQUFqbkMsV0FBSixDQUNMdVosQ0FBQTl2QyxJQURLLENBQ1UsSUFBQXUyQixX
QUFBLEVBRFYsQ0FHTCxJQUFBNG5DLFdBQUEsQ0FBZ0IsYUFBaEIsQ0FBK0IsSUFBQVgsS0FBQSxF
QUEvQixDQUVGLEtBQUFnQyxRQUFBLENBQWEsR0FBYixDQUNBMXZCLEVBQUFsdkMsTUFBQSxDQUFp
QixJQUFBaS9CLFdBQUEsRUFDakJ5VixFQUFBcHdDLEtBQUEsQ0FBZ0I0cUMsQ0FBaEIsQ0FmQyxD
QUFILE1BZ0JTLElBQUFxdkIsT0FBQSxDQUFZLEdBQVosQ0FoQlQsQ0FERixDQW1CQSxJQUFBSyxR
QUFBLENBQWEsR0FBYixDQUVBLE9BQU8sQ0FBQzNoRCxLQUFNazJCLENBQUFzQixpQkFBUCxDQUE2
QkMsV0FBWUEsQ0FBekMsQ0F2QlUsQ0FuTkw7QUE2T2Q2b0IsV0FBWUEsUUFBUSxDQUFDbGQsQ0FB
RCxDQUFNNWhCLENBQU4sQ0FBYSxDQUMvQixLQUFNNFQsR0FBQSxDQUFhLFFBQWIsQ0FFQTVULENB
QUFsRixLQUZBLENBRVk4bUIsQ0FGWixDQUVrQjVoQixDQUFBOTZCLE1BRmxCLENBRWdDLENBRmhD
LENBRW9DLElBQUE0MUIsS0FGcEMsQ0FFK0MsSUFBQUEsS0FBQWxGLFVBQUEsQ0FBb0JvSyxDQUFB
OTZCLE1BQXBCLENBRi9DLENBQU4sQ0FEK0IsQ0E3T25CLENBbVBkaTdELFFBQVNBLFFBQVEsQ0FB
Q2MsQ0FBRCxDQUFLLENBQ3BCLEdBQTJCLENBQTNCLEdBQUksSUFBQWhELE9BQUEvOUQsT0FBSixD
QUNFLEtBQU0wekMsR0FBQSxDQUFhLE1BQWIsQ0FBMEQsSUFBQTlZLEtBQTFELENBQU4sQ0FHRixJ
QUFJa0YsRUFBUSxJQUFBOC9CLE9BQUEsQ0FBWW1CLENBQVosQ0FDUGpoQyxFQUFMLEVBQ0UsSUFB
QTgrQixXQUFBLENBQWdCLDRCQUFoQixDQUErQ21DLENBQS9DLENBQW9ELEdBQXBELENBQXlELElB
QUE5QyxLQUFBLEVBQXpELENBRUYsT0FBT24rQixFQVRhLENBblBSLENBK1BkK2dDLFVBQVdBLFFB
QVEsRUFBRyxDQUNwQixHQUEyQixDQUEzQixHQUFJLElBQUE5QyxPQUFBLzlELE9BQUosQ0FDRSxL
QUFNMHpDLEdBQUEsQ0FBYSxNQUFiLENBQTBELElBQUE5WSxLQUExRCxDQUFOLENBRUYsTUFBTyxL
QUFBbWpDLE9BQUEsQ0FBWSxDQUFaLENBSmEsQ0EvUFIsQ0FzUWRFLEtBQU1BLFFBQVEsQ0FBQzhD
LENBQUQsQ0FBS0MsQ0FBTCxDQUFTQyxDQUFULENBQWFDLENBQWIsQ0FBaUIsQ0FDN0IsTUFBTyxL
QUFBQyxVQUFBLENBQWUsQ0FBZixDQUFrQkosQ0FBbEIsQ0FBc0JDLENBQXRCLENBQTBCQyxDQUEx
QixDQUE4QkMsQ0FBOUIsQ0FEc0IsQ0F0UWpCLENBMFFkQyxVQUFXQSxRQUFRLENBQUNqZ0UsQ0FB
RCxDQUFJNi9ELENBQUosQ0FBUUMsQ0FBUixDQUFZQyxDQUFaLENBQWdCQyxDQUFoQixDQUFvQixD
QUNyQyxHQUFJLElBQUFuRCxPQUFBLzlELE9BQUosQ0FBeUJrQixDQUF6QixDQUE0QixDQUN0QjQr
QixDQUFBQSxDQUFRLElBQUFpK0IsT0FBQSxDQUFZNzhELENBQVosQ0FDWjtJQUFJa2dFLEVBQUl0
aEMsQ0FBQWxGLEtBQ1IsSUFBSXdtQyxDQUFKLEdBQVVMLENBQVYsRUFBZ0JLLENBQWhCLEdBQXNC
SixDQUF0QixFQUE0QkksQ0FBNUIsR0FBa0NILENBQWxDLEVBQXdDRyxDQUF4QyxHQUE4Q0YsQ0FB
OUMsRUFDSyxFQUFDSCxDQUFELEVBQVFDLENBQVIsRUFBZUMsQ0FBZixFQUFzQkMsQ0FBdEIsQ0FE
TCxDQUVFLE1BQU9waEMsRUFMaUIsQ0FRNUIsTUFBTyxDQUFBLENBVDhCLENBMVF6QixDQXNSZDgv
QixPQUFRQSxRQUFRLENBQUNtQixDQUFELENBQUtDLENBQUwsQ0FBU0MsQ0FBVCxDQUFhQyxDQUFi
LENBQWlCLENBRS9CLE1BQUEsQ0FESXBoQyxDQUNKLENBRFksSUFBQW0rQixLQUFBLENBQVU4QyxD
QUFWLENBQWNDLENBQWQsQ0FBa0JDLENBQWxCLENBQXNCQyxDQUF0QixDQUNaLEdBQ0UsSUFBQW5E
LE9BQUE1NEMsTUFBQSxFQUNPMmEsQ0FBQUEsQ0FGVCxFQUlPLENBQUEsQ0FOd0IsQ0F0Um5CLENB
bVNkNGdDLFVBQVcsQ0FDVCxPQUFRLENBQUVwaUQsS0FBTWsyQixDQUFBRyxRQUFSLENBQXFCdHpD
LE1BQU8sQ0FBQSxDQUE1QixDQURDLENBRVQsUUFBUyxDQUFFaWQsS0FBTWsyQixDQUFBRyxRQUFS
LENBQXFCdHpDLE1BQU8sQ0FBQSxDQUE1QixDQUZBLENBR1QsT0FBUSxDQUFFaWQsS0FBTWsyQixD
QUFBRyxRQUFSLENBQXFCdHpDLE1BQU8sSUFBNUIsQ0FIQyxDQUlULFVBQWEsQ0FBQ2lkLEtBQU1r
MkIsQ0FBQUcsUUFBUCxDQUFvQnR6QyxNQUFPMUIsQ0FBM0IsQ0FKSixDQUtULE9BQVEsQ0FBQzJl
LEtBQU1rMkIsQ0FBQXdCLGVBQVAsQ0FMQyxDQW5TRyxDQXNjaEJRLEdBQUFoekMsVUFBQSxDQUF3
QixDQUN0QnFJLFFBQVNBLFFBQVEsQ0FBQ3kwQixDQUFELENBQWErWSxDQUFiLENBQThCLENBQzdD
LElBQUl0eUMsRUFBTyxJQUFYLENBQ0lzdEMsRUFBTSxJQUFBb0MsV0FBQXBDLElBQUEsQ0FBb0Iv
VCxDQUFwQixDQUNWLEtBQUF4WCxNQUFBLENBQWEsQ0FDWHU0QyxPQUFRLENBREcsQ0FFWC9ZLFFB
QVMsRUFGRSxDQUdYalAsZ0JBQWlCQSxDQUhOLENBSVhyeUMsR0FBSSxDQUFDczZELEtBQU0sRUFB
UCxDQUFXajZCLEtBQU0sRUFBakIsQ0FBcUJrNkIsSUFBSyxFQUExQixDQUpPLENBS1gvakMsT0FB
USxDQUFDOGpDLEtBQU0sRUFBUDtBQUFXajZCLEtBQU0sRUFBakIsQ0FBcUJrNkIsSUFBSyxFQUEx
QixDQUxHLENBTVg1cEIsT0FBUSxFQU5HLENBUWJ2RCxFQUFBLENBQWdDQyxDQUFoQyxDQUFxQ3R0
QyxDQUFBMlIsUUFBckMsQ0FDQSxLQUFJMVYsRUFBUSxFQUFaLENBQ0l3K0QsQ0FDSixLQUFBQyxN
QUFBLENBQWEsUUFDYixJQUFLRCxDQUFMLENBQWtCcHJCLEVBQUEsQ0FBYy9CLENBQWQsQ0FBbEIs
Q0FDRSxJQUFBdnJCLE1BQUE0NEMsVUFHQSxDQUh1QixRQUd2QixDQUZJejlDLENBRUosQ0FGYSxJ
QUFBbzlDLE9BQUEsRUFFYixDQURBLElBQUFNLFFBQUEsQ0FBYUgsQ0FBYixDQUF5QnY5QyxDQUF6
QixDQUNBLENBQUFqaEIsQ0FBQSxDQUFRLFlBQVIsQ0FBdUIsSUFBQTQrRCxpQkFBQSxDQUFzQixR
QUF0QixDQUFnQyxPQUFoQyxDQUVyQmh0QixFQUFBQSxDQUFVcUIsRUFBQSxDQUFVNUIsQ0FBQWhO
LEtBQVYsQ0FDZHRnQyxFQUFBMDZELE1BQUEsQ0FBYSxRQUNibmhFLEVBQUEsQ0FBUXMwQyxDQUFS
LENBQWlCLFFBQVEsQ0FBQ3FNLENBQUQsQ0FBUXhnRCxDQUFSLENBQWEsQ0FDcEMsSUFBSW9oRSxF
QUFRLElBQVJBLENBQWVwaEUsQ0FDbkJzRyxFQUFBK2hCLE1BQUEsQ0FBVys0QyxDQUFYLENBQUEs
Q0FBb0IsQ0FBQ1AsS0FBTSxFQUFQLENBQVdqNkIsS0FBTSxFQUFqQixDQUFxQms2QixJQUFLLEVB
QTFCLENBQ3BCeDZELEVBQUEraEIsTUFBQTQ0QyxVQUFBLENBQXVCRyxDQUN2QixLQUFJQyxFQUFT
LzZELENBQUFzNkQsT0FBQSxFQUNidDZELEVBQUE0NkQsUUFBQSxDQUFhMWdCLENBQWIsQ0FBb0I2
Z0IsQ0FBcEIsQ0FDQS82RCxFQUFBZzdELFFBQUEsQ0FBYUQsQ0FBYixDQUNBLzZELEVBQUEraEIs
TUFBQTZ1QixPQUFBaHlDLEtBQUEsQ0FBdUJrOEQsQ0FBdkIsQ0FDQTVnQixFQUFBK2dCLFFBQUEs
Q0FBZ0J2aEUsQ0FSb0IsQ0FBdEMsQ0FVQSxLQUFBcW9CLE1BQUE0NEMsVUFBQSxDQUF1QixJQUN2
QixLQUFBRCxNQUFBLENBQWEsTUFDYixLQUFBRSxRQUFBLENBQWF0dEIsQ0FBYixDQUNJNHRCLEVB
QUFBLENBR0YsR0FIRUEsQ0FHSSxJQUFBQyxJQUhKRCxDQUdlLEdBSGZBLENBR3FCLElBQUFFLE9B
SHJCRixDQUdtQyxNQUhuQ0EsQ0FJRixJQUFBRyxhQUFBLEVBSkVIO0FBS0YsU0FMRUEsQ0FLVSxJ
QUFBTCxpQkFBQSxDQUFzQixJQUF0QixDQUE0QixTQUE1QixDQUxWSyxDQU1Gai9ELENBTkVpL0Qs
Q0FPRixJQUFBSSxTQUFBLEVBUEVKLENBUUYsWUFHRWo3RCxFQUFBQSxDQUFLLENBQUMsSUFBSTh2
RCxRQUFKLENBQWEsU0FBYixDQUNOLHNCQURNLENBRU4sa0JBRk0sQ0FHTixvQkFITSxDQUlOLFdB
Sk0sQ0FLTixNQUxNLENBTU4sTUFOTSxDQU9ObUwsQ0FQTSxDQUFELEVBUUgsSUFBQXZwRCxRQVJH
LENBU0g4NkIsRUFURyxDQVVIRyxFQVZHLENBV0hFLEVBWEcsQ0FZSEksRUFaRyxDQWFIQyxFQWJH
LENBY0g1VCxDQWRHLENBZ0JULEtBQUF4WCxNQUFBLENBQWEsSUFBQTI0QyxNQUFiLENBQTBCOWhF
LENBQzFCcUgsRUFBQXUyQixRQUFBLENBQWFnWixFQUFBLENBQVVsQyxDQUFWLENBQ2JydEMsRUFB
QWdLLFNBQUEsQ0FBeUJxakMsQ0ExRXBCcmpDLFNBMkVMLE9BQU9oSyxFQWxFc0MsQ0FEekIsQ0Fz
RXRCazdELElBQUssS0F0RWlCLENBd0V0QkMsT0FBUSxRQXhFYyxDQTBFdEJFLFNBQVVBLFFBQVEs
RUFBRyxDQUNuQixJQUFJcCtDLEVBQVMsRUFBYixDQUNJcWUsRUFBTSxJQUFBeFosTUFBQTZ1QixP
QURWLENBRUk1d0MsRUFBTyxJQUNYekcsRUFBQSxDQUFRZ2lDLENBQVIsQ0FBYSxRQUFRLENBQUMz
M0IsQ0FBRCxDQUFPLENBQzFCc1osQ0FBQXRlLEtBQUEsQ0FBWSxNQUFaLENBQXFCZ0YsQ0FBckIs
Q0FBNEIsR0FBNUIsQ0FBa0M1RCxDQUFBNjZELGlCQUFBLENBQXNCajNELENBQXRCLENBQTRCLEdB
QTVCLENBQWxDLENBRDBCLENBQTVCLENBR0kyM0IsRUFBQXRpQyxPQUFKLEVBQ0Vpa0IsQ0FBQXRl
LEtBQUEsQ0FBWSxhQUFaLENBQTRCMjhCLENBQUF6NEIsS0FBQSxDQUFTLEdBQVQsQ0FBNUIsQ0FB
NEMsSUFBNUMsQ0FFRixPQUFPb2EsRUFBQXBhLEtBQUEsQ0FBWSxFQUFaLENBVlksQ0ExRUM7QUF1
RnRCKzNELGlCQUFrQkEsUUFBUSxDQUFDajNELENBQUQsQ0FBT3MyQixDQUFQLENBQWUsQ0FDdkMs
TUFBTyxXQUFQLENBQXFCQSxDQUFyQixDQUE4QixJQUE5QixDQUNJLElBQUFxaEMsV0FBQSxDQUFn
QjMzRCxDQUFoQixDQURKLENBRUksSUFBQTA4QixLQUFBLENBQVUxOEIsQ0FBVixDQUZKLENBR0ks
SUFKbUMsQ0F2Rm5CLENBOEZ0QnkzRCxhQUFjQSxRQUFRLEVBQUcsQ0FDdkIsSUFBSTE0RCxFQUFR
LEVBQVosQ0FDSTNDLEVBQU8sSUFDWHpHLEVBQUEsQ0FBUSxJQUFBd29CLE1BQUF3L0IsUUFBUixD
QUE0QixRQUFRLENBQUNoOEIsQ0FBRCxDQUFLbmIsQ0FBTCxDQUFhLENBQy9DekgsQ0FBQS9ELEtB
QUEsQ0FBVzJtQixDQUFYLENBQWdCLFdBQWhCLENBQThCdmxCLENBQUEyaEMsT0FBQSxDQUFZdjNC
LENBQVosQ0FBOUIsQ0FBb0QsR0FBcEQsQ0FEK0MsQ0FBakQsQ0FHQSxPQUFJekgsRUFBQTFKLE9B
QUosQ0FBeUIsTUFBekIsQ0FBa0MwSixDQUFBRyxLQUFBLENBQVcsR0FBWCxDQUFsQyxDQUFvRCxH
QUFwRCxDQUNPLEVBUGdCLENBOUZILENBd0d0Qnk0RCxXQUFZQSxRQUFRLENBQUNDLENBQUQsQ0FB
VSxDQUM1QixNQUFPLEtBQUF6NUMsTUFBQSxDQUFXeTVDLENBQVgsQ0FBQWpCLEtBQUF0aEUsT0FB
QSxDQUFrQyxNQUFsQyxDQUEyQyxJQUFBOG9CLE1BQUEsQ0FBV3k1QyxDQUFYLENBQUFqQixLQUFB
ejNELEtBQUEsQ0FBOEIsR0FBOUIsQ0FBM0MsQ0FBZ0YsR0FBaEYsQ0FBc0YsRUFEakUsQ0F4R1Is
Q0E0R3RCdzlCLEtBQU1BLFFBQVEsQ0FBQ2s3QixDQUFELENBQVUsQ0FDdEIsTUFBTyxLQUFBejVD
LE1BQUEsQ0FBV3k1QyxDQUFYLENBQUFsN0IsS0FBQXg5QixLQUFBLENBQThCLEVBQTlCLENBRGUs
Q0E1R0YsQ0FnSHRCODNELFFBQVNBLFFBQVEsQ0FBQ3R0QixDQUFELENBQU15dEIsQ0FBTixDQUFj
VSxDQUFkLENBQXNCQyxDQUF0QixDQUFtQ3gvRCxDQUFuQyxDQUEyQ3kvRCxDQUEzQyxDQUE2RCxD
QUFBLElBQ3hFMXRCLENBRHdFLENBQ2xFQyxDQURrRSxDQUMzRGx1QyxFQUFPLElBRG9ELENBQzlD
b2MsQ0FEOEMsQ0FDeENtZCxDQUNwQ21pQyxFQUFBLENBQWNBLENBQWQsRUFBNkJ2L0QsQ0FDN0Is
SUFBS3cvRCxDQUFBQSxDQUFMLEVBQXlCaC9ELENBQUEsQ0FBVTJ3QyxDQUFBMnRCLFFBQVYsQ0FB
ekIsQ0FDRUYsQ0FDQSxDQURTQSxDQUNULEVBRG1CLElBQUFULE9BQUEsRUFDbkIsQ0FBQSxJQUFB
c0IsSUFBQSxDQUFTLEdBQVQ7QUFDRSxJQUFBQyxXQUFBLENBQWdCZCxDQUFoQixDQUF3QixJQUFB
ZSxlQUFBLENBQW9CLEdBQXBCLENBQXlCeHVCLENBQUEydEIsUUFBekIsQ0FBeEIsQ0FERixDQUVF
LElBQUFjLFlBQUEsQ0FBaUJ6dUIsQ0FBakIsQ0FBc0J5dEIsQ0FBdEIsQ0FBOEJVLENBQTlCLENB
QXNDQyxDQUF0QyxDQUFtRHgvRCxDQUFuRCxDQUEyRCxDQUFBLENBQTNELENBRkYsQ0FGRixLQVFB
LFFBQVFveEMsQ0FBQS8xQixLQUFSLEVBQ0EsS0FBS2syQixDQUFBQyxRQUFMLENBQ0VuMEMsQ0FB
QSxDQUFRK3pDLENBQUFoTixLQUFSLENBQWtCLFFBQVEsQ0FBQy9HLENBQUQsQ0FBYXJ6QixDQUFi
LENBQWtCLENBQzFDbEcsQ0FBQTQ2RCxRQUFBLENBQWFyaEMsQ0FBQUEsV0FBYixDQUFvQzNnQyxD
QUFwQyxDQUErQ0EsQ0FBL0MsQ0FBMEQsUUFBUSxDQUFDKzBDLENBQUQsQ0FBTyxDQUFFTyxDQUFB
LENBQVFQLENBQVYsQ0FBekUsQ0FDSXpuQyxFQUFKLEdBQVlvbkMsQ0FBQWhOLEtBQUFybkMsT0FB
WixDQUE4QixDQUE5QixDQUNFK0csQ0FBQTQzQyxRQUFBLEVBQUF0WCxLQUFBMWhDLEtBQUEsQ0FB
eUJzdkMsQ0FBekIsQ0FBZ0MsR0FBaEMsQ0FERixDQUdFbHVDLENBQUFnN0QsUUFBQSxDQUFhOXNC
LENBQWIsQ0FMd0MsQ0FBNUMsQ0FRQSxNQUNGLE1BQUtULENBQUFHLFFBQUwsQ0FDRXJVLENBQUEs
Q0FBYSxJQUFBb0ksT0FBQSxDQUFZMkwsQ0FBQWh6QyxNQUFaLENBQ2IsS0FBQW04QixPQUFBLENB
QVlza0MsQ0FBWixDQUFvQnhoQyxDQUFwQixDQUNBbWlDLEVBQUEsQ0FBWW5pQyxDQUFaLENBQ0Es
TUFDRixNQUFLa1UsQ0FBQUssZ0JBQUwsQ0FDRSxJQUFBOHNCLFFBQUEsQ0FBYXR0QixDQUFBUyxT
QUFiLENBQTJCbjFDLENBQTNCLENBQXNDQSxDQUF0QyxDQUFpRCxRQUFRLENBQUMrMEMsQ0FBRCxD
QUFPLENBQUVPLENBQUEsQ0FBUVAsQ0FBVixDQUFoRSxDQUNBcFUsRUFBQSxDQUFhK1QsQ0FBQWlD
LFNBQWIsQ0FBNEIsR0FBNUIsQ0FBa0MsSUFBQXJDLFVBQUEsQ0FBZWdCLENBQWYsQ0FBc0IsQ0FB
dEIsQ0FBbEMsQ0FBNkQsR0FDN0QsS0FBQXpYLE9BQUEsQ0FBWXNrQyxDQUFaLENBQW9CeGhDLENB
QXBCLENBQ0FtaUMsRUFBQSxDQUFZbmlDLENBQVosQ0FDQSxNQUNGLE1BQUtrVSxDQUFBTyxpQkFB
TCxDQUNFLElBQUE0c0IsUUFBQSxDQUFhdHRCLENBQUFXLEtBQWI7QUFBdUJyMUMsQ0FBdkIsQ0FB
a0NBLENBQWxDLENBQTZDLFFBQVEsQ0FBQyswQyxDQUFELENBQU8sQ0FBRU0sQ0FBQSxDQUFPTixD
QUFULENBQTVELENBQ0EsS0FBQWl0QixRQUFBLENBQWF0dEIsQ0FBQVksTUFBYixDQUF3QnQxQyxD
QUF4QixDQUFtQ0EsQ0FBbkMsQ0FBOEMsUUFBUSxDQUFDKzBDLENBQUQsQ0FBTyxDQUFFTyxDQUFB
LENBQVFQLENBQVYsQ0FBN0QsQ0FFRXBVLEVBQUEsQ0FEbUIsR0FBckIsR0FBSStULENBQUFpQyxT
QUFKLENBQ2UsSUFBQXlzQixLQUFBLENBQVUvdEIsQ0FBVixDQUFnQkMsQ0FBaEIsQ0FEZixDQUU0
QixHQUFyQixHQUFJWixDQUFBaUMsU0FBSixDQUNRLElBQUFyQyxVQUFBLENBQWVlLENBQWYsQ0FB
cUIsQ0FBckIsQ0FEUixDQUNrQ1gsQ0FBQWlDLFNBRGxDLENBQ2lELElBQUFyQyxVQUFBLENBQWVn
QixDQUFmLENBQXNCLENBQXRCLENBRGpELENBR1EsR0FIUixDQUdjRCxDQUhkLENBR3FCLEdBSHJC
LENBRzJCWCxDQUFBaUMsU0FIM0IsQ0FHMEMsR0FIMUMsQ0FHZ0RyQixDQUhoRCxDQUd3RCxHQUUv
RCxLQUFBelgsT0FBQSxDQUFZc2tDLENBQVosQ0FBb0J4aEMsQ0FBcEIsQ0FDQW1pQyxFQUFBLENB
QVluaUMsQ0FBWixDQUNBLE1BQ0YsTUFBS2tVLENBQUFVLGtCQUFMLENBQ0U0c0IsQ0FBQSxDQUFT
QSxDQUFULEVBQW1CLElBQUFULE9BQUEsRUFDbkJ0NkQsRUFBQTQ2RCxRQUFBLENBQWF0dEIsQ0FB
QVcsS0FBYixDQUF1QjhzQixDQUF2QixDQUNBLzZELEVBQUE0N0QsSUFBQSxDQUEwQixJQUFqQixH
QUFBdHVCLENBQUFpQyxTQUFBLENBQXdCd3JCLENBQXhCLENBQWlDLzZELENBQUFpOEQsSUFBQSxD
QUFTbEIsQ0FBVCxDQUExQyxDQUE0RC82RCxDQUFBKzdELFlBQUEsQ0FBaUJ6dUIsQ0FBQVksTUFB
akIsQ0FBNEI2c0IsQ0FBNUIsQ0FBNUQsQ0FDQVcsRUFBQSxDQUFZWCxDQUFaLENBQ0EsTUFDRixN
QUFLdHRCLENBQUFXLHNCQUFMLENBQ0Uyc0IsQ0FBQSxDQUFTQSxDQUFULEVBQW1CLElBQUFULE9B
QUEsRUFDbkJ0NkQsRUFBQTQ2RCxRQUFBLENBQWF0dEIsQ0FBQTN1QyxLQUFiLENBQXVCbzhELENB
QXZCLENBQ0EvNkQsRUFBQTQ3RCxJQUFBLENBQVNiLENBQVQsQ0FBaUIvNkQsQ0FBQSs3RCxZQUFB
LENBQWlCenVCLENBQUFlLFVBQWpCLENBQWdDMHNCLENBQWhDLENBQWpCLENBQTBELzZELENBQUEr
N0QsWUFBQSxDQUFpQnp1QixDQUFBZ0IsV0FBakIsQ0FBaUN5c0IsQ0FBakMsQ0FBMUQsQ0FDQVcs
RUFBQSxDQUFZWCxDQUFaLENBQ0E7S0FDRixNQUFLdHRCLENBQUFjLFdBQUwsQ0FDRXdzQixDQUFB
LENBQVNBLENBQVQsRUFBbUIsSUFBQVQsT0FBQSxFQUNmbUIsRUFBSixHQUNFQSxDQUFBaGlFLFFB
RUEsQ0FGZ0MsUUFBZixHQUFBdUcsQ0FBQTA2RCxNQUFBLENBQTBCLEdBQTFCLENBQWdDLElBQUFq
a0MsT0FBQSxDQUFZLElBQUE2akMsT0FBQSxFQUFaLENBQTJCLElBQUE0QixrQkFBQSxDQUF1QixH
QUF2QixDQUE0QjV1QixDQUFBMXBDLEtBQTVCLENBQTNCLENBQW1FLE1BQW5FLENBRWpELENBREE2
M0QsQ0FBQS9zQixTQUNBLENBRGtCLENBQUEsQ0FDbEIsQ0FBQStzQixDQUFBNzNELEtBQUEsQ0FB
YzBwQyxDQUFBMXBDLEtBSGhCLENBS0E2b0MsR0FBQSxDQUFxQmEsQ0FBQTFwQyxLQUFyQixDQUNB
NUQsRUFBQTQ3RCxJQUFBLENBQXdCLFFBQXhCLEdBQVM1N0QsQ0FBQTA2RCxNQUFULEVBQW9DMTZE
LENBQUFpOEQsSUFBQSxDQUFTajhELENBQUFrOEQsa0JBQUEsQ0FBdUIsR0FBdkIsQ0FBNEI1dUIs
Q0FBQTFwQyxLQUE1QixDQUFULENBQXBDLENBQ0UsUUFBUSxFQUFHLENBQ1Q1RCxDQUFBNDdELElB
QUEsQ0FBd0IsUUFBeEIsR0FBUzU3RCxDQUFBMDZELE1BQVQsRUFBb0MsR0FBcEMsQ0FBeUMsUUFB
USxFQUFHLENBQzlDeCtELENBQUosRUFBeUIsQ0FBekIsR0FBY0EsQ0FBZCxFQUNFOEQsQ0FBQTQ3
RCxJQUFBLENBQ0U1N0QsQ0FBQWk4RCxJQUFBLENBQVNqOEQsQ0FBQW04RCxrQkFBQSxDQUF1QixH
QUF2QixDQUE0Qjd1QixDQUFBMXBDLEtBQTVCLENBQVQsQ0FERixDQUVFNUQsQ0FBQTY3RCxXQUFB
LENBQWdCNzdELENBQUFtOEQsa0JBQUEsQ0FBdUIsR0FBdkIsQ0FBNEI3dUIsQ0FBQTFwQyxLQUE1
QixDQUFoQixDQUF1RCxJQUF2RCxDQUZGLENBSUY1RCxFQUFBeTJCLE9BQUEsQ0FBWXNrQyxDQUFa
LENBQW9CLzZELENBQUFtOEQsa0JBQUEsQ0FBdUIsR0FBdkIsQ0FBNEI3dUIsQ0FBQTFwQyxLQUE1
QixDQUFwQixDQU5rRCxDQUFwRCxDQURTLENBRGIsQ0FVS20zRCxDQVZMLEVBVWUvNkQsQ0FBQTY3
RCxXQUFBLENBQWdCZCxDQUFoQixDQUF3Qi82RCxDQUFBbThELGtCQUFBLENBQXVCLEdBQXZCO0FB
QTRCN3VCLENBQUExcEMsS0FBNUIsQ0FBeEIsQ0FWZixDQVlBLEVBQUk1RCxDQUFBK2hCLE1BQUF1
d0IsZ0JBQUosRUFBa0N0QyxFQUFBLENBQThCMUMsQ0FBQTFwQyxLQUE5QixDQUFsQyxHQUNFNUQs
Q0FBQW84RCxvQkFBQSxDQUF5QnJCLENBQXpCLENBRUZXLEVBQUEsQ0FBWVgsQ0FBWixDQUNBLE1B
Q0YsTUFBS3R0QixDQUFBZSxpQkFBTCxDQUNFUCxDQUFBLENBQU93dEIsQ0FBUCxHQUFrQkEsQ0FB
QWhpRSxRQUFsQixDQUFtQyxJQUFBNmdFLE9BQUEsRUFBbkMsR0FBcUQsSUFBQUEsT0FBQSxFQUNy
RFMsRUFBQSxDQUFTQSxDQUFULEVBQW1CLElBQUFULE9BQUEsRUFDbkJ0NkQsRUFBQTQ2RCxRQUFB
LENBQWF0dEIsQ0FBQW1CLE9BQWIsQ0FBeUJSLENBQXpCLENBQStCcjFDLENBQS9CLENBQTBDLFFB
QVEsRUFBRyxDQUNuRG9ILENBQUE0N0QsSUFBQSxDQUFTNTdELENBQUFxOEQsUUFBQSxDQUFhcHVC
LENBQWIsQ0FBVCxDQUE2QixRQUFRLEVBQUcsQ0FDdEMsR0FBSVgsQ0FBQW9CLFNBQUosQ0FDRVIs
Q0FRQSxDQVJRbHVDLENBQUFzNkQsT0FBQSxFQVFSLENBUEF0NkQsQ0FBQTQ2RCxRQUFBLENBQWF0
dEIsQ0FBQTlELFNBQWIsQ0FBMkIwRSxDQUEzQixDQU9BLENBTkFsdUMsQ0FBQXM4RCx3QkFBQSxD
QUE2QnB1QixDQUE3QixDQU1BLENBTEloeUMsQ0FLSixFQUx5QixDQUt6QixHQUxjQSxDQUtkLEVB
SkU4RCxDQUFBNDdELElBQUEsQ0FBUzU3RCxDQUFBaThELElBQUEsQ0FBU2o4RCxDQUFBODdELGVB
QUEsQ0FBb0I3dEIsQ0FBcEIsQ0FBMEJDLENBQTFCLENBQVQsQ0FBVCxDQUFxRGx1QyxDQUFBNjdE
LFdBQUEsQ0FBZ0I3N0QsQ0FBQTg3RCxlQUFBLENBQW9CN3RCLENBQXBCLENBQTBCQyxDQUExQixD
QUFoQixDQUFrRCxJQUFsRCxDQUFyRCxDQUlGLENBRkEzVSxDQUVBLENBRmF2NUIsQ0FBQTRzQyxp
QkFBQSxDQUFzQjVzQyxDQUFBODdELGVBQUEsQ0FBb0I3dEIsQ0FBcEIsQ0FBMEJDLENBQTFCLENB
QXRCLENBRWIsQ0FEQWx1QyxDQUFBeTJCLE9BQUEsQ0FBWXNrQyxDQUFaLENBQW9CeGhDLENBQXBC
LENBQ0EsQ0FBSWtpQyxDQUFKLEdBQ0VBLENBQUEvc0IsU0FDQSxDQURrQixDQUFBLENBQ2xCLENB
QUErc0IsQ0FBQTczRCxLQUFBLENBQWNzcUMsQ0FGaEIsQ0FURixLQWFPLENBQ0x6QixFQUFBLENB
QXFCYSxDQUFBOUQsU0FBQTVsQyxLQUFyQixDQUNJMUg7Q0FBSixFQUF5QixDQUF6QixHQUFjQSxD
QUFkLEVBQ0U4RCxDQUFBNDdELElBQUEsQ0FBUzU3RCxDQUFBaThELElBQUEsQ0FBU2o4RCxDQUFB
bThELGtCQUFBLENBQXVCbHVCLENBQXZCLENBQTZCWCxDQUFBOUQsU0FBQTVsQyxLQUE3QixDQUFU
LENBQVQsQ0FBb0U1RCxDQUFBNjdELFdBQUEsQ0FBZ0I3N0QsQ0FBQW04RCxrQkFBQSxDQUF1Qmx1
QixDQUF2QixDQUE2QlgsQ0FBQTlELFNBQUE1bEMsS0FBN0IsQ0FBaEIsQ0FBaUUsSUFBakUsQ0FB
cEUsQ0FFRjIxQixFQUFBLENBQWF2NUIsQ0FBQW04RCxrQkFBQSxDQUF1Qmx1QixDQUF2QixDQUE2
QlgsQ0FBQTlELFNBQUE1bEMsS0FBN0IsQ0FDYixJQUFJNUQsQ0FBQStoQixNQUFBdXdCLGdCQUFK
LEVBQWtDdEMsRUFBQSxDQUE4QjFDLENBQUE5RCxTQUFBNWxDLEtBQTlCLENBQWxDLENBQ0UyMUIs
Q0FBQSxDQUFhdjVCLENBQUE0c0MsaUJBQUEsQ0FBc0JyVCxDQUF0QixDQUVmdjVCLEVBQUF5MkIs
T0FBQSxDQUFZc2tDLENBQVosQ0FBb0J4aEMsQ0FBcEIsQ0FDSWtpQyxFQUFKLEdBQ0VBLENBQUEv
c0IsU0FDQSxDQURrQixDQUFBLENBQ2xCLENBQUErc0IsQ0FBQTczRCxLQUFBLENBQWMwcEMsQ0FB
QTlELFNBQUE1bEMsS0FGaEIsQ0FWSyxDQWQrQixDQUF4QyxDQTZCRyxRQUFRLEVBQUcsQ0FDWjVE
LENBQUF5MkIsT0FBQSxDQUFZc2tDLENBQVosQ0FBb0IsV0FBcEIsQ0FEWSxDQTdCZCxDQWdDQVcs
RUFBQSxDQUFZWCxDQUFaLENBakNtRCxDQUFyRCxDQWtDRyxDQUFFNytELENBQUFBLENBbENMLENB
bUNBLE1BQ0YsTUFBS3V4QyxDQUFBa0IsZUFBTCxDQUNFb3NCLENBQUEsQ0FBU0EsQ0FBVCxFQUFt
QixJQUFBVCxPQUFBLEVBQ2ZodEIsRUFBQWxqQyxPQUFKLEVBQ0U4akMsQ0FTQSxDQVRRbHVDLENB
QUFvSyxPQUFBLENBQVlrakMsQ0FBQXNCLE9BQUFockMsS0FBWixDQVNSLENBUkF3WSxDQVFBLENB
Uk8sRUFRUCxDQVBBN2lCLENBQUEsQ0FBUSt6QyxDQUFBNXhDLFVBQVIsQ0FBdUIsUUFBUSxDQUFD
aXlDLENBQUQsQ0FBTyxDQUNwQyxJQUFJSSxFQUFXL3RDLENBQUFzNkQsT0FBQSxFQUNmdDZELEVB
QUE0NkQsUUFBQSxDQUFhanRCLENBQWIsQ0FBbUJJLENBQW5CLENBQ0EzeEIsRUFBQXhkLEtBQUEs
Q0FBVW12QyxDQUFWLENBSG9DLENBQXRDLENBT0EsQ0FGQXhVLENBRUEsQ0FGYTJVLENBRWI7QUFG
cUIsR0FFckIsQ0FGMkI5eEIsQ0FBQXRaLEtBQUEsQ0FBVSxHQUFWLENBRTNCLENBRjRDLEdBRTVD
LENBREE5QyxDQUFBeTJCLE9BQUEsQ0FBWXNrQyxDQUFaLENBQW9CeGhDLENBQXBCLENBQ0EsQ0FB
QW1pQyxDQUFBLENBQVlYLENBQVosQ0FWRixHQVlFN3NCLENBR0EsQ0FIUWx1QyxDQUFBczZELE9B
QUEsRUFHUixDQUZBcnNCLENBRUEsQ0FGTyxFQUVQLENBREE3eEIsQ0FDQSxDQURPLEVBQ1AsQ0FB
QXBjLENBQUE0NkQsUUFBQSxDQUFhdHRCLENBQUFzQixPQUFiLENBQXlCVixDQUF6QixDQUFnQ0Qs
Q0FBaEMsQ0FBc0MsUUFBUSxFQUFHLENBQy9DanVDLENBQUE0N0QsSUFBQSxDQUFTNTdELENBQUFx
OEQsUUFBQSxDQUFhbnVCLENBQWIsQ0FBVCxDQUE4QixRQUFRLEVBQUcsQ0FDdkNsdUMsQ0FBQXU4
RCxzQkFBQSxDQUEyQnJ1QixDQUEzQixDQUNBMzBDLEVBQUEsQ0FBUSt6QyxDQUFBNXhDLFVBQVIs
Q0FBdUIsUUFBUSxDQUFDaXlDLENBQUQsQ0FBTyxDQUNwQzN0QyxDQUFBNDZELFFBQUEsQ0FBYWp0
QixDQUFiLENBQW1CM3RDLENBQUFzNkQsT0FBQSxFQUFuQixDQUFrQzFoRSxDQUFsQyxDQUE2QyxR
QUFRLENBQUNtMUMsQ0FBRCxDQUFXLENBQzlEM3hCLENBQUF4ZCxLQUFBLENBQVVvQixDQUFBNHND
LGlCQUFBLENBQXNCbUIsQ0FBdEIsQ0FBVixDQUQ4RCxDQUFoRSxDQURvQyxDQUF0QyxDQUtJRSxF
QUFBcnFDLEtBQUosRUFDTzVELENBQUEraEIsTUFBQXV3QixnQkFHTCxFQUZFdHlDLENBQUFvOEQs
b0JBQUEsQ0FBeUJudUIsQ0FBQXgwQyxRQUF6QixDQUVGLENBQUE4L0IsQ0FBQSxDQUFhdjVCLENB
QUF3OEQsT0FBQSxDQUFZdnVCLENBQUF4MEMsUUFBWixDQUEwQncwQyxDQUFBcnFDLEtBQTFCLENB
QXFDcXFDLENBQUFTLFNBQXJDLENBQWIsQ0FBbUUsR0FBbkUsQ0FBeUV0eUIsQ0FBQXRaLEtBQUEs
Q0FBVSxHQUFWLENBQXpFLENBQTBGLEdBSjVGLEVBTUV5MkIsQ0FORixDQU1lMlUsQ0FOZixDQU11
QixHQU52QixDQU02Qjl4QixDQUFBdFosS0FBQSxDQUFVLEdBQVYsQ0FON0IsQ0FNOEMsR0FFOUN5
MkIsRUFBQSxDQUFhdjVCLENBQUE0c0MsaUJBQUEsQ0FBc0JyVCxDQUF0QixDQUNidjVCLEVBQUF5
MkIsT0FBQSxDQUFZc2tDLENBQVosQ0FBb0J4aEMsQ0FBcEIsQ0FoQnVDLENBQXpDLENBaUJHLFFB
QVEsRUFBRyxDQUNadjVCLENBQUF5MkIsT0FBQSxDQUFZc2tDLENBQVosQ0FBb0IsV0FBcEIsQ0FE
WSxDQWpCZCxDQW9CQVcsRUFBQSxDQUFZWCxDQUFaLENBckIrQyxDQUFqRCxDQWZGLENBdUNBLE1B
Q0YsTUFBS3R0QixDQUFBb0IscUJBQUwsQ0FDRVgsQ0FBQTtBQUFRLElBQUFvc0IsT0FBQSxFQUNS
cnNCLEVBQUEsQ0FBTyxFQUNQLElBQUssQ0FBQW1CLEVBQUEsQ0FBYTlCLENBQUFXLEtBQWIsQ0FB
TCxDQUNFLEtBQU10QixHQUFBLENBQWEsTUFBYixDQUFOLENBRUYsSUFBQWl1QixRQUFBLENBQWF0
dEIsQ0FBQVcsS0FBYixDQUF1QnIxQyxDQUF2QixDQUFrQ3ExQyxDQUFsQyxDQUF3QyxRQUFRLEVB
QUcsQ0FDakRqdUMsQ0FBQTQ3RCxJQUFBLENBQVM1N0QsQ0FBQXE4RCxRQUFBLENBQWFwdUIsQ0FB
QXgwQyxRQUFiLENBQVQsQ0FBcUMsUUFBUSxFQUFHLENBQzlDdUcsQ0FBQTQ2RCxRQUFBLENBQWF0
dEIsQ0FBQVksTUFBYixDQUF3QkEsQ0FBeEIsQ0FDQWx1QyxFQUFBbzhELG9CQUFBLENBQXlCcDhE
LENBQUF3OEQsT0FBQSxDQUFZdnVCLENBQUF4MEMsUUFBWixDQUEwQncwQyxDQUFBcnFDLEtBQTFC
LENBQXFDcXFDLENBQUFTLFNBQXJDLENBQXpCLENBQ0FuVixFQUFBLENBQWF2NUIsQ0FBQXc4RCxP
QUFBLENBQVl2dUIsQ0FBQXgwQyxRQUFaLENBQTBCdzBDLENBQUFycUMsS0FBMUIsQ0FBcUNxcUMs
Q0FBQVMsU0FBckMsQ0FBYixDQUFtRXBCLENBQUFpQyxTQUFuRSxDQUFrRnJCLENBQ2xGbHVDLEVB
QUF5MkIsT0FBQSxDQUFZc2tDLENBQVosQ0FBb0J4aEMsQ0FBcEIsQ0FDQW1pQyxFQUFBLENBQVlY
LENBQVosRUFBc0J4aEMsQ0FBdEIsQ0FMOEMsQ0FBaEQsQ0FEaUQsQ0FBbkQsQ0FRRyxDQVJILENB
U0EsTUFDRixNQUFLa1UsQ0FBQXFCLGdCQUFMLENBQ0UxeUIsQ0FBQSxDQUFPLEVBQ1A3aUIsRUFB
QSxDQUFRK3pDLENBQUF0MEIsU0FBUixDQUFzQixRQUFRLENBQUMyMEIsQ0FBRCxDQUFPLENBQ25D
M3RDLENBQUE0NkQsUUFBQSxDQUFhanRCLENBQWIsQ0FBbUIzdEMsQ0FBQXM2RCxPQUFBLEVBQW5C
LENBQWtDMWhFLENBQWxDLENBQTZDLFFBQVEsQ0FBQ20xQyxDQUFELENBQVcsQ0FDOUQzeEIsQ0FB
QXhkLEtBQUEsQ0FBVW12QyxDQUFWLENBRDhELENBQWhFLENBRG1DLENBQXJDLENBS0F4VSxFQUFB
LENBQWEsR0FBYixDQUFtQm5kLENBQUF0WixLQUFBLENBQVUsR0FBVixDQUFuQixDQUFvQyxHQUNw
QyxLQUFBMnpCLE9BQUEsQ0FBWXNrQyxDQUFaLENBQW9CeGhDLENBQXBCLENBQ0FtaUMsRUFBQSxD
QUFZbmlDLENBQVosQ0FDQSxNQUNGLE1BQUtrVSxDQUFBc0IsaUJBQUwsQ0FDRTN5QixDQUFBLENB
QU8sRUFDUDdpQixFQUFBLENBQVErekMsQ0FBQTBCLFdBQVIsQ0FBd0IsUUFBUSxDQUFDeEYsQ0FB
RCxDQUFXLENBQ3pDeHBDLENBQUE0NkQsUUFBQSxDQUFhcHhCLENBQUFsdkMsTUFBYjtBQUE2QjBG
LENBQUFzNkQsT0FBQSxFQUE3QixDQUE0QzFoRSxDQUE1QyxDQUF1RCxRQUFRLENBQUMrMEMsQ0FB
RCxDQUFPLENBQ3BFdnhCLENBQUF4ZCxLQUFBLENBQVVvQixDQUFBMmhDLE9BQUEsQ0FDTjZILENB
QUE5dkMsSUFBQTZkLEtBQUEsR0FBc0JrMkIsQ0FBQWMsV0FBdEIsQ0FBdUMvRSxDQUFBOXZDLElB
QUFrSyxLQUF2QyxDQUNHLEVBREgsQ0FDUTRsQyxDQUFBOXZDLElBQUFZLE1BRkYsQ0FBVixDQUdJ
LEdBSEosQ0FHVXF6QyxDQUhWLENBRG9FLENBQXRFLENBRHlDLENBQTNDLENBUUFwVSxFQUFBLENB
QWEsR0FBYixDQUFtQm5kLENBQUF0WixLQUFBLENBQVUsR0FBVixDQUFuQixDQUFvQyxHQUNwQyxL
QUFBMnpCLE9BQUEsQ0FBWXNrQyxDQUFaLENBQW9CeGhDLENBQXBCLENBQ0FtaUMsRUFBQSxDQUFZ
bmlDLENBQVosQ0FDQSxNQUNGLE1BQUtrVSxDQUFBd0IsZUFBTCxDQUNFLElBQUF4WSxPQUFBLENB
QVlza0MsQ0FBWixDQUFvQixHQUFwQixDQUNBVyxFQUFBLENBQVksR0FBWixDQUNBLE1BQ0YsTUFB
S2p1QixDQUFBNkIsaUJBQUwsQ0FDRSxJQUFBN1ksT0FBQSxDQUFZc2tDLENBQVosQ0FBb0IsR0FB
cEIsQ0FDQSxDQUFBVyxDQUFBLENBQVksR0FBWixDQXhNRixDQVg0RSxDQWhIeEQsQ0F3VXRCUSxr
QkFBbUJBLFFBQVEsQ0FBQ3IrRCxDQUFELENBQVUyckMsQ0FBVixDQUFvQixDQUM3QyxJQUFJOXZD
LEVBQU1tRSxDQUFObkUsQ0FBZ0IsR0FBaEJBLENBQXNCOHZDLENBQTFCLENBQ0lneEIsRUFBTSxJ
QUFBNWlCLFFBQUEsRUFBQTRpQixJQUNMQSxFQUFBNWdFLGVBQUEsQ0FBbUJGLENBQW5CLENBQUws
R0FDRThnRSxDQUFBLENBQUk5Z0UsQ0FBSixDQURGLENBQ2EsSUFBQTRnRSxPQUFBLENBQVksQ0FB
QSxDQUFaLENBQW1CejhELENBQW5CLENBQTZCLEtBQTdCLENBQXFDLElBQUE4akMsT0FBQSxDQUFZ
NkgsQ0FBWixDQUFyQyxDQUE2RCxNQUE3RCxDQUFzRTNyQyxDQUF0RSxDQUFnRixHQUFoRixDQURi
LENBR0EsT0FBTzI4RCxFQUFBLENBQUk5Z0UsQ0FBSixDQU5zQyxDQXhVekIsQ0FpVnRCKzhCLE9B
QVFBLFFBQVEsQ0FBQ2xSLENBQUQsQ0FBS2pyQixDQUFMLENBQVksQ0FDMUIsR0FBS2lyQixDQUFM
LENBRUEsTUFEQSxLQUFBcXlCLFFBQUEsRUFBQXRYLEtBQUExaEMsS0FBQSxDQUF5QjJtQixDQUF6
QixDQUE2QixHQUE3QixDQUFrQ2pyQixDQUFsQyxDQUF5QyxHQUF6QyxDQUNPaXJCLENBQUFBLENB
SG1CLENBalZOLENBdVZ0Qm5iLE9BQVFBLFFBQVEsQ0FBQ3F5RCxDQUFELENBQWEsQ0FDdEIsSUFB
QTE2QyxNQUFBdy9CLFFBQUEzbkQsZUFBQSxDQUFrQzZpRSxDQUFsQyxDQUFMO0NBQ0UsSUFBQTE2
QyxNQUFBdy9CLFFBQUEsQ0FBbUJrYixDQUFuQixDQURGLENBQ21DLElBQUFuQyxPQUFBLENBQVks
Q0FBQSxDQUFaLENBRG5DLENBR0EsT0FBTyxLQUFBdjRDLE1BQUF3L0IsUUFBQSxDQUFtQmtiLENB
QW5CLENBSm9CLENBdlZQLENBOFZ0QnZ2QixVQUFXQSxRQUFRLENBQUMzbkIsQ0FBRCxDQUFLbTND
LENBQUwsQ0FBbUIsQ0FDcEMsTUFBTyxZQUFQLENBQXNCbjNDLENBQXRCLENBQTJCLEdBQTNCLENB
QWlDLElBQUFvYyxPQUFBLENBQVkrNkIsQ0FBWixDQUFqQyxDQUE2RCxHQUR6QixDQTlWaEIsQ0Fr
V3RCVixLQUFNQSxRQUFRLENBQUMvdEIsQ0FBRCxDQUFPQyxDQUFQLENBQWMsQ0FDMUIsTUFBTyxP
QUFQLENBQWlCRCxDQUFqQixDQUF3QixHQUF4QixDQUE4QkMsQ0FBOUIsQ0FBc0MsR0FEWixDQWxX
TixDQXNXdEI4c0IsUUFBU0EsUUFBUSxDQUFDejFDLENBQUQsQ0FBSyxDQUNwQixJQUFBcXlCLFFB
QUEsRUFBQXRYLEtBQUExaEMsS0FBQSxDQUF5QixTQUF6QixDQUFvQzJtQixDQUFwQyxDQUF3QyxH
QUF4QyxDQURvQixDQXRXQSxDQTBXdEJxMkMsSUFBS0EsUUFBUSxDQUFDajlELENBQUQsQ0FBTzB2
QyxDQUFQLENBQWtCQyxDQUFsQixDQUE4QixDQUN6QyxHQUFhLENBQUEsQ0FBYixHQUFJM3ZDLENB
QUosQ0FDRTB2QyxDQUFBLEVBREYsS0FFTyxDQUNMLElBQUkvTixFQUFPLElBQUFzWCxRQUFBLEVB
QUF0WCxLQUNYQSxFQUFBMWhDLEtBQUEsQ0FBVSxLQUFWLENBQWlCRCxDQUFqQixDQUF1QixJQUF2
QixDQUNBMHZDLEVBQUEsRUFDQS9OLEVBQUExaEMsS0FBQSxDQUFVLEdBQVYsQ0FDSTB2QyxFQUFK
LEdBQ0VoTyxDQUFBMWhDLEtBQUEsQ0FBVSxPQUFWLENBRUEsQ0FEQTB2QyxDQUFBLEVBQ0EsQ0FB
QWhPLENBQUExaEMsS0FBQSxDQUFVLEdBQVYsQ0FIRixDQUxLLENBSGtDLENBMVdyQixDQTBYdEJx
OUQsSUFBS0EsUUFBUSxDQUFDMWlDLENBQUQsQ0FBYSxDQUN4QixNQUFPLElBQVAsQ0FBY0EsQ0FB
ZCxDQUEyQixHQURILENBMVhKLENBOFh0QjhpQyxRQUFTQSxRQUFRLENBQUM5aUMsQ0FBRCxDQUFh
LENBQzVCLE1BQU9BLEVBQVAsQ0FBb0IsUUFEUSxDQTlYUixDQWtZdEI0aUMsa0JBQW1CQSxRQUFR
LENBQUNsdUIsQ0FBRCxDQUFPQyxDQUFQLENBQWMsQ0FDdkMsTUFBT0QsRUFBUDtBQUFjLEdBQWQs
Q0FBb0JDLENBRG1CLENBbFluQixDQXNZdEI0dEIsZUFBZ0JBLFFBQVEsQ0FBQzd0QixDQUFELENB
QU9DLENBQVAsQ0FBYyxDQUNwQyxNQUFPRCxFQUFQLENBQWMsR0FBZCxDQUFvQkMsQ0FBcEIsQ0FB
NEIsR0FEUSxDQXRZaEIsQ0EwWXRCc3VCLE9BQVFBLFFBQVEsQ0FBQ3Z1QixDQUFELENBQU9DLENB
QVAsQ0FBY1EsQ0FBZCxDQUF3QixDQUN0QyxNQUFJQSxFQUFKLENBQXFCLElBQUFvdEIsZUFBQSxD
QUFvQjd0QixDQUFwQixDQUEwQkMsQ0FBMUIsQ0FBckIsQ0FDTyxJQUFBaXVCLGtCQUFBLENBQXVC
bHVCLENBQXZCLENBQTZCQyxDQUE3QixDQUYrQixDQTFZbEIsQ0ErWXRCa3VCLG9CQUFxQkEsUUFB
USxDQUFDelosQ0FBRCxDQUFPLENBQ2xDLElBQUEvSyxRQUFBLEVBQUF0WCxLQUFBMWhDLEtBQUEs
Q0FBeUIsSUFBQWd1QyxpQkFBQSxDQUFzQitWLENBQXRCLENBQXpCLENBQXNELEdBQXRELENBRGtD
LENBL1lkLENBbVp0QjJaLHdCQUF5QkEsUUFBUSxDQUFDM1osQ0FBRCxDQUFPLENBQ3RDLElBQUEv
SyxRQUFBLEVBQUF0WCxLQUFBMWhDLEtBQUEsQ0FBeUIsSUFBQTZ0QyxxQkFBQSxDQUEwQmtXLENB
QTFCLENBQXpCLENBQTBELEdBQTFELENBRHNDLENBblpsQixDQXVadEI0WixzQkFBdUJBLFFBQVEs
Q0FBQzVaLENBQUQsQ0FBTyxDQUNwQyxJQUFBL0ssUUFBQSxFQUFBdFgsS0FBQTFoQyxLQUFBLENB
QXlCLElBQUFrdUMsbUJBQUEsQ0FBd0I2VixDQUF4QixDQUF6QixDQUF3RCxHQUF4RCxDQURvQyxD
QXZaaEIsQ0EyWnRCL1YsaUJBQWtCQSxRQUFRLENBQUMrVixDQUFELENBQU8sQ0FDL0IsTUFBTyxt
QkFBUCxDQUE2QkEsQ0FBN0IsQ0FBb0MsUUFETCxDQTNaWCxDQStadEJsVyxxQkFBc0JBLFFBQVEs
Q0FBQ2tXLENBQUQsQ0FBTyxDQUNuQyxNQUFPLHVCQUFQO0FBQWlDQSxDQUFqQyxDQUF3QyxRQURM
LENBL1pmLENBbWF0QjdWLG1CQUFvQkEsUUFBUSxDQUFDNlYsQ0FBRCxDQUFPLENBQ2pDLE1BQU8s
cUJBQVAsQ0FBK0JBLENBQS9CLENBQXNDLFFBREwsQ0FuYWIsQ0F1YXRCb1osWUFBYUEsUUFBUSxD
QUFDenVCLENBQUQsQ0FBTXl0QixDQUFOLENBQWNVLENBQWQsQ0FBc0JDLENBQXRCLENBQW1DeC9E
LENBQW5DLENBQTJDeS9ELENBQTNDLENBQTZELENBQ2hGLElBQUkzN0QsRUFBTyxJQUNYLE9BQU8s
U0FBUSxFQUFHLENBQ2hCQSxDQUFBNDZELFFBQUEsQ0FBYXR0QixDQUFiLENBQWtCeXRCLENBQWxC
LENBQTBCVSxDQUExQixDQUFrQ0MsQ0FBbEMsQ0FBK0N4L0QsQ0FBL0MsQ0FBdUR5L0QsQ0FBdkQs
Q0FEZ0IsQ0FGOEQsQ0F2YTVELENBOGF0QkUsV0FBWUEsUUFBUSxDQUFDdDJDLENBQUQsQ0FBS2py
QixDQUFMLENBQVksQ0FDOUIsSUFBSTBGLEVBQU8sSUFDWCxPQUFPLFNBQVEsRUFBRyxDQUNoQkEs
Q0FBQXkyQixPQUFBLENBQVlsUixDQUFaLENBQWdCanJCLENBQWhCLENBRGdCLENBRlksQ0E5YVYs
Q0FxYnRCcWlFLGtCQUFtQixnQkFyYkcsQ0F1YnRCQyxlQUFnQkEsUUFBUSxDQUFDQyxDQUFELENB
QUksQ0FDMUIsTUFBTyxLQUFQLENBQWVwaEUsQ0FBQyxNQUFEQSxDQUFVb2hFLENBQUFDLFdBQUEs
Q0FBYSxDQUFiLENBQUF0Z0UsU0FBQSxDQUF5QixFQUF6QixDQUFWZixPQUFBLENBQStDLEVBQS9D
LENBRFcsQ0F2Yk4sQ0EyYnRCa21DLE9BQVFBLFFBQVEsQ0FBQ3JuQyxDQUFELENBQVEsQ0FDdEIs
R0FBSWpCLENBQUEsQ0FBU2lCLENBQVQsQ0FBSixDQUFxQixNQUFPLEdBQVAsQ0FBYUEsQ0FBQThI
LFFBQUEsQ0FBYyxJQUFBdTZELGtCQUFkLENBQXNDLElBQUFDLGVBQXRDLENBQWIsQ0FBMEUsR0FD
L0YsSUFBSS8vRCxDQUFBLENBQVN2QyxDQUFULENBQUosQ0FBcUIsTUFBT0EsRUFBQWtDLFNBQUEs
RUFDNUIsSUFBYyxDQUFBLENBQWQsR0FBSWxDLENBQUosQ0FBb0IsTUFBTyxNQUMzQjtHQUFjLENB
QUEsQ0FBZCxHQUFJQSxDQUFKLENBQXFCLE1BQU8sT0FDNUIsSUFBYyxJQUFkLEdBQUlBLENBQUos
Q0FBb0IsTUFBTyxNQUMzQixJQUFxQixXQUFyQixHQUFJLE1BQU9BLEVBQVgsQ0FBa0MsTUFBTyxX
QUV6QyxNQUFNcXlDLEdBQUEsQ0FBYSxLQUFiLENBQU4sQ0FSc0IsQ0EzYkYsQ0FzY3RCMnRCLE9B
QVFBLFFBQVEsQ0FBQ3lDLENBQUQsQ0FBT0MsQ0FBUCxDQUFhLENBQzNCLElBQUl6M0MsRUFBSyxH
QUFMQSxDQUFZLElBQUF4RCxNQUFBdTRDLE9BQUEsRUFDWHlDLEVBQUwsRUFDRSxJQUFBbmxCLFFB
QUEsRUFBQTJpQixLQUFBMzdELEtBQUEsQ0FBeUIybUIsQ0FBekIsRUFBK0J5M0MsQ0FBQSxDQUFP
LEdBQVAsQ0FBYUEsQ0FBYixDQUFvQixFQUFuRCxFQUVGLE9BQU96M0MsRUFMb0IsQ0F0Y1AsQ0E4
Y3RCcXlCLFFBQVNBLFFBQVEsRUFBRyxDQUNsQixNQUFPLEtBQUE3MUIsTUFBQSxDQUFXLElBQUFB
LE1BQUE0NEMsVUFBWCxDQURXLENBOWNFLENBeWR4QmhyQixHQUFBbHpDLFVBQUEsQ0FBMkIsQ0FD
ekJxSSxRQUFTQSxRQUFRLENBQUN5MEIsQ0FBRCxDQUFhK1ksQ0FBYixDQUE4QixDQUM3QyxJQUFJ
dHlDLEVBQU8sSUFBWCxDQUNJc3RDLEVBQU0sSUFBQW9DLFdBQUFwQyxJQUFBLENBQW9CL1QsQ0FB
cEIsQ0FDVixLQUFBQSxXQUFBLENBQWtCQSxDQUNsQixLQUFBK1ksZ0JBQUEsQ0FBdUJBLENBQ3ZC
akYsRUFBQSxDQUFnQ0MsQ0FBaEMsQ0FBcUN0dEMsQ0FBQTJSLFFBQXJDLENBQ0EsS0FBSThvRCxD
QUFKLENBQ0loa0MsQ0FDSixJQUFLZ2tDLENBQUwsQ0FBa0JwckIsRUFBQSxDQUFjL0IsQ0FBZCxD
QUFsQixDQUNFN1csQ0FBQSxDQUFTLElBQUFta0MsUUFBQSxDQUFhSCxDQUFiLENBRVA1c0IsRUFB
QUEsQ0FBVXFCLEVBQUEsQ0FBVTVCLENBQUFoTixLQUFWLENBQ2QsS0FBSXNRLENBQ0EvQyxFQUFK
LEdBQ0UrQyxDQUNBLENBRFMsRUFDVCxDQUFBcjNDLENBQUEsQ0FBUXMwQyxDQUFSLENBQWlCLFFB
QVEsQ0FBQ3FNLENBQUQsQ0FBUXhnRCxDQUFSLENBQWEsQ0FDcEMsSUFBSTJSLEVBQVFyTCxDQUFB
NDZELFFBQUEsQ0FBYTFnQixDQUFiLENBQ1pBO0NBQUE3dUMsTUFBQSxDQUFjQSxDQUNkdWxDLEVB
QUFoeUMsS0FBQSxDQUFZeU0sQ0FBWixDQUNBNnVDLEVBQUErZ0IsUUFBQSxDQUFnQnZoRSxDQUpv
QixDQUF0QyxDQUZGLENBU0EsS0FBSTQ2QixFQUFjLEVBQ2xCLzZCLEVBQUEsQ0FBUSt6QyxDQUFB
aE4sS0FBUixDQUFrQixRQUFRLENBQUMvRyxDQUFELENBQWEsQ0FDckNqRixDQUFBMTFCLEtBQUEs
Q0FBaUJvQixDQUFBNDZELFFBQUEsQ0FBYXJoQyxDQUFBQSxXQUFiLENBQWpCLENBRHFDLENBQXZD
LENBR0l0NUIsRUFBQUEsQ0FBeUIsQ0FBcEIsR0FBQXF0QyxDQUFBaE4sS0FBQXJuQyxPQUFBLENB
QXdCLFFBQVEsRUFBRyxFQUFuQyxDQUNvQixDQUFwQixHQUFBcTBDLENBQUFoTixLQUFBcm5DLE9B
QUEsQ0FBd0JxN0IsQ0FBQSxDQUFZLENBQVosQ0FBeEIsQ0FDQSxRQUFRLENBQUN6dkIsQ0FBRCxD
QUFRd1osQ0FBUixDQUFnQixDQUN0QixJQUFJOFgsQ0FDSjU4QixFQUFBLENBQVErNkIsQ0FBUixD
QUFxQixRQUFRLENBQUNvTyxDQUFELENBQU0sQ0FDakN2TSxDQUFBLENBQVl1TSxDQUFBLENBQUk3
OUIsQ0FBSixDQUFXd1osQ0FBWCxDQURxQixDQUFuQyxDQUdBLE9BQU84WCxFQUxlLENBTzdCTSxF
QUFKLEdBQ0V4MkIsQ0FBQXcyQixPQURGLENBQ2N3bUMsUUFBUSxDQUFDcDRELENBQUQsQ0FBUXZL
LENBQVIsQ0FBZStqQixDQUFmLENBQXVCLENBQ3pDLE1BQU9vWSxFQUFBLENBQU81eEIsQ0FBUCxD
QUFjd1osQ0FBZCxDQUFzQi9qQixDQUF0QixDQURrQyxDQUQ3QyxDQUtJczJDLEVBQUosR0FDRTN3
QyxDQUFBMndDLE9BREYsQ0FDY0EsQ0FEZCxDQUdBM3dDLEVBQUF1MkIsUUFBQSxDQUFhZ1osRUFB
QSxDQUFVbEMsQ0FBVixDQUNicnRDLEVBQUFnSyxTQUFBLENBQXlCcWpDLENBOWdCcEJyakMsU0Er
Z0JMLE9BQU9oSyxFQTdDc0MsQ0FEdEIsQ0FpRHpCMjZELFFBQVNBLFFBQVEsQ0FBQ3R0QixDQUFE
LENBQU03ekMsQ0FBTixDQUFleUMsQ0FBZixDQUF1QixDQUFBLElBQ2xDK3hDLENBRGtDLENBQzVC
QyxDQUQ0QixDQUNyQmx1QyxFQUFPLElBRGMsQ0FDUm9jLENBQzlCLElBQUlreEIsQ0FBQWppQyxN
QUFKLENBQ0UsTUFBTyxLQUFBdWxDLE9BQUEsQ0FBWXRELENBQUFqaUMsTUFBWixDQUF1QmlpQyxD
QUFBMnRCLFFBQXZCLENBRVQsUUFBUTN0QixDQUFBLzFCLEtBQVIsRUFDQSxLQUFLazJCLENBQUFH
LFFBQUwsQ0FDRSxNQUFPLEtBQUF0ekMsTUFBQSxDQUFXZ3pDLENBQUFoekMsTUFBWCxDQUFzQmIs
Q0FBdEIsQ0FDVCxNQUFLZzBDLENBQUFLLGdCQUFMLENBRUUsTUFEQUksRUFDTztBQURDLElBQUEw
c0IsUUFBQSxDQUFhdHRCLENBQUFTLFNBQWIsQ0FDRCxDQUFBLElBQUEsQ0FBSyxPQUFMLENBQWVU
LENBQUFpQyxTQUFmLENBQUEsQ0FBNkJyQixDQUE3QixDQUFvQ3owQyxDQUFwQyxDQUNULE1BQUtn
MEMsQ0FBQU8saUJBQUwsQ0FHRSxNQUZBQyxFQUVPLENBRkEsSUFBQTJzQixRQUFBLENBQWF0dEIs
Q0FBQVcsS0FBYixDQUVBLENBRFBDLENBQ08sQ0FEQyxJQUFBMHNCLFFBQUEsQ0FBYXR0QixDQUFB
WSxNQUFiLENBQ0QsQ0FBQSxJQUFBLENBQUssUUFBTCxDQUFnQlosQ0FBQWlDLFNBQWhCLENBQUEs
Q0FBOEJ0QixDQUE5QixDQUFvQ0MsQ0FBcEMsQ0FBMkN6MEMsQ0FBM0MsQ0FDVCxNQUFLZzBDLENB
QUFVLGtCQUFMLENBR0UsTUFGQUYsRUFFTyxDQUZBLElBQUEyc0IsUUFBQSxDQUFhdHRCLENBQUFX
LEtBQWIsQ0FFQSxDQURQQyxDQUNPLENBREMsSUFBQTBzQixRQUFBLENBQWF0dEIsQ0FBQVksTUFB
YixDQUNELENBQUEsSUFBQSxDQUFLLFFBQUwsQ0FBZ0JaLENBQUFpQyxTQUFoQixDQUFBLENBQThC
dEIsQ0FBOUIsQ0FBb0NDLENBQXBDLENBQTJDejBDLENBQTNDLENBQ1QsTUFBS2cwQyxDQUFBVyxz
QkFBTCxDQUNFLE1BQU8sS0FBQSxDQUFLLFdBQUwsQ0FBQSxDQUNMLElBQUF3c0IsUUFBQSxDQUFh
dHRCLENBQUEzdUMsS0FBYixDQURLLENBRUwsSUFBQWk4RCxRQUFBLENBQWF0dEIsQ0FBQWUsVUFB
YixDQUZLLENBR0wsSUFBQXVzQixRQUFBLENBQWF0dEIsQ0FBQWdCLFdBQWIsQ0FISyxDQUlMNzBD
LENBSkssQ0FNVCxNQUFLZzBDLENBQUFjLFdBQUwsQ0FFRSxNQURBOUIsR0FBQSxDQUFxQmEsQ0FB
QTFwQyxLQUFyQixDQUErQjVELENBQUF1NUIsV0FBL0IsQ0FDTyxDQUFBdjVCLENBQUFpd0IsV0FB
QSxDQUFnQnFkLENBQUExcEMsS0FBaEIsQ0FDZ0I1RCxDQUFBc3lDLGdCQURoQixFQUN3Q3RDLEVB
QUEsQ0FBOEIxQyxDQUFBMXBDLEtBQTlCLENBRHhDO0FBRWdCbkssQ0FGaEIsQ0FFeUJ5QyxDQUZ6
QixDQUVpQzhELENBQUF1NUIsV0FGakMsQ0FHVCxNQUFLa1UsQ0FBQWUsaUJBQUwsQ0FPRSxNQU5B
UCxFQU1PLENBTkEsSUFBQTJzQixRQUFBLENBQWF0dEIsQ0FBQW1CLE9BQWIsQ0FBeUIsQ0FBQSxD
QUF6QixDQUFnQyxDQUFFdnlDLENBQUFBLENBQWxDLENBTUEsQ0FMRm94QyxDQUFBb0IsU0FLRSxH
QUpMakMsRUFBQSxDQUFxQmEsQ0FBQTlELFNBQUE1bEMsS0FBckIsQ0FBd0M1RCxDQUFBdTVCLFdB
QXhDLENBQ0EsQ0FBQTJVLENBQUEsQ0FBUVosQ0FBQTlELFNBQUE1bEMsS0FHSCxFQURIMHBDLENB
QUFvQixTQUNHLEdBRFdSLENBQ1gsQ0FEbUIsSUFBQTBzQixRQUFBLENBQWF0dEIsQ0FBQTlELFNB
QWIsQ0FDbkIsRUFBQThELENBQUFvQixTQUFBLENBQ0wsSUFBQW90QixlQUFBLENBQW9CN3RCLENB
QXBCLENBQTBCQyxDQUExQixDQUFpQ3owQyxDQUFqQyxDQUEwQ3lDLENBQTFDLENBQWtEOEQsQ0FB
QXU1QixXQUFsRCxDQURLLENBRUwsSUFBQTRpQyxrQkFBQSxDQUF1Qmx1QixDQUF2QixDQUE2QkMs
Q0FBN0IsQ0FBb0NsdUMsQ0FBQXN5QyxnQkFBcEMsQ0FBMEQ3NEMsQ0FBMUQsQ0FBbUV5QyxDQUFu
RSxDQUEyRThELENBQUF1NUIsV0FBM0UsQ0FDSixNQUFLa1UsQ0FBQWtCLGVBQUwsQ0FPRSxNQU5B
dnlCLEVBTU8sQ0FOQSxFQU1BLENBTFA3aUIsQ0FBQSxDQUFRK3pDLENBQUE1eEMsVUFBUixDQUF1
QixRQUFRLENBQUNpeUMsQ0FBRCxDQUFPLENBQ3BDdnhCLENBQUF4ZCxLQUFBLENBQVVvQixDQUFB
NDZELFFBQUEsQ0FBYWp0QixDQUFiLENBQVYsQ0FEb0MsQ0FBdEMsQ0FLTyxDQUZITCxDQUFBbGpD
LE9BRUcsR0FGUzhqQyxDQUVULENBRmlCLElBQUF2OEIsUUFBQSxDQUFhMjdCLENBQUFzQixPQUFB
aHJDLEtBQWIsQ0FFakIsRUFERjBwQyxDQUFBbGpDLE9BQ0UsR0FEVThqQyxDQUNWLENBRGtCLElB
QUEwc0IsUUFBQSxDQUFhdHRCLENBQUFzQixPQUFiLENBQXlCLENBQUEsQ0FBekIsQ0FDbEIsRUFB
QXRCLENBQUFsakMsT0FBQSxDQUNMLFFBQVEsQ0FBQ3ZGLENBQUQsQ0FBUXdaLENBQVIsQ0FBZ0Jv
WSxDQUFoQixDQUF3Qm1hLENBQXhCLENBQWdDLENBRXRDLElBREEsSUFBSWhZO0FBQVMsRUFBYixD
QUNTeitCLEVBQUksQ0FBYixDQUFnQkEsQ0FBaEIsQ0FBb0JpaUIsQ0FBQW5qQixPQUFwQixDQUFp
QyxFQUFFa0IsQ0FBbkMsQ0FDRXkrQixDQUFBaDZCLEtBQUEsQ0FBWXdkLENBQUEsQ0FBS2ppQixD
QUFMLENBQUEsQ0FBUTBLLENBQVIsQ0FBZXdaLENBQWYsQ0FBdUJvWSxDQUF2QixDQUErQm1hLENB
QS9CLENBQVosQ0FFRXQyQyxFQUFBQSxDQUFRNHpDLENBQUE5dEMsTUFBQSxDQUFZeEgsQ0FBWixD
QUF1QmdnQyxDQUF2QixDQUErQmdZLENBQS9CLENBQ1osT0FBT24zQyxFQUFBLENBQVUsQ0FBQ0Es
UUFBU2IsQ0FBVixDQUFxQmdMLEtBQU1oTCxDQUEzQixDQUFzQzBCLE1BQU9BLENBQTdDLENBQVYs
Q0FBZ0VBLENBTmpDLENBRG5DLENBU0wsUUFBUSxDQUFDdUssQ0FBRCxDQUFRd1osQ0FBUixDQUFn
Qm9ZLENBQWhCLENBQXdCbWEsQ0FBeEIsQ0FBZ0MsQ0FDdEMsSUFBSXNzQixFQUFNaHZCLENBQUEs
Q0FBTXJwQyxDQUFOLENBQWF3WixDQUFiLENBQXFCb1ksQ0FBckIsQ0FBNkJtYSxDQUE3QixDQUFW
LENBQ0l0MkMsQ0FDSixJQUFpQixJQUFqQixFQUFJNGlFLENBQUE1aUUsTUFBSixDQUF1QixDQUNy
QnN5QyxFQUFBLENBQWlCc3dCLENBQUF6akUsUUFBakIsQ0FBOEJ1RyxDQUFBdTVCLFdBQTlCLENB
Q0F1VCxHQUFBLENBQW1Cb3dCLENBQUE1aUUsTUFBbkIsQ0FBOEIwRixDQUFBdTVCLFdBQTlCLENB
Q0lYLEVBQUFBLENBQVMsRUFDYixLQUFTLElBQUF6K0IsRUFBSSxDQUFiLENBQWdCQSxDQUFoQixD
QUFvQmlpQixDQUFBbmpCLE9BQXBCLENBQWlDLEVBQUVrQixDQUFuQyxDQUNFeStCLENBQUFoNkIs
S0FBQSxDQUFZZ3VDLEVBQUEsQ0FBaUJ4d0IsQ0FBQSxDQUFLamlCLENBQUwsQ0FBQSxDQUFRMEss
Q0FBUixDQUFld1osQ0FBZixDQUF1Qm9ZLENBQXZCLENBQStCbWEsQ0FBL0IsQ0FBakIsQ0FBeUQ1
d0MsQ0FBQXU1QixXQUF6RCxDQUFaLENBRUZqL0IsRUFBQSxDQUFRc3lDLEVBQUEsQ0FBaUJzd0Is
Q0FBQTVpRSxNQUFBOEYsTUFBQSxDQUFnQjg4RCxDQUFBempFLFFBQWhCLENBQTZCbS9CLENBQTdC
LENBQWpCLENBQXVENTRCLENBQUF1NUIsV0FBdkQsQ0FQYSxDQVN2QixNQUFPOS9CLEVBQUEsQ0FB
VSxDQUFDYSxNQUFPQSxDQUFSLENBQVYsQ0FBMkJBLENBWkksQ0FjNUMsTUFBS216QyxDQUFBb0Is
cUJBQUwsQ0FHRSxNQUZBWixFQUVPLENBRkEsSUFBQTJzQixRQUFBLENBQWF0dEIsQ0FBQVcsS0FB
YixDQUF1QixDQUFBLENBQXZCLENBQTZCLENBQTdCLENBRUEsQ0FEUEMsQ0FDTyxDQURDLElBQUEw
c0IsUUFBQSxDQUFhdHRCLENBQUFZLE1BQWIsQ0FDRCxDQUFBLFFBQVEsQ0FBQ3JwQyxDQUFELENB
QVF3WixDQUFSLENBQWdCb1ksQ0FBaEIsQ0FBd0JtYSxDQUF4QixDQUFnQyxDQUM3QyxJQUFJdXNC
LEVBQU1sdkIsQ0FBQSxDQUFLcHBDLENBQUwsQ0FBWXdaLENBQVosQ0FBb0JvWSxDQUFwQixDQUE0
Qm1hLENBQTVCLENBQ05zc0IsRUFBQUEsQ0FBTWh2QixDQUFBLENBQU1ycEMsQ0FBTixDQUFhd1os
Q0FBYixDQUFxQm9ZLENBQXJCLENBQTZCbWEsQ0FBN0IsQ0FDVmhFLEdBQUEsQ0FBaUJ1d0IsQ0FB
QTdpRSxNQUFqQixDQUE0QjBGLENBQUF1NUIsV0FBNUIsQ0FDQTRqQztDQUFBMWpFLFFBQUEsQ0FB
WTBqRSxDQUFBdjVELEtBQVosQ0FBQSxDQUF3QnM1RCxDQUN4QixPQUFPempFLEVBQUEsQ0FBVSxD
QUFDYSxNQUFPNGlFLENBQVIsQ0FBVixDQUF5QkEsQ0FMYSxDQU9qRCxNQUFLenZCLENBQUFxQixn
QkFBTCxDQUtFLE1BSkExeUIsRUFJTyxDQUpBLEVBSUEsQ0FIUDdpQixDQUFBLENBQVErekMsQ0FB
QXQwQixTQUFSLENBQXNCLFFBQVEsQ0FBQzIwQixDQUFELENBQU8sQ0FDbkN2eEIsQ0FBQXhkLEtB
QUEsQ0FBVW9CLENBQUE0NkQsUUFBQSxDQUFhanRCLENBQWIsQ0FBVixDQURtQyxDQUFyQyxDQUdP
LENBQUEsUUFBUSxDQUFDOW9DLENBQUQsQ0FBUXdaLENBQVIsQ0FBZ0JvWSxDQUFoQixDQUF3Qm1h
LENBQXhCLENBQWdDLENBRTdDLElBREEsSUFBSXQyQyxFQUFRLEVBQVosQ0FDU0gsRUFBSSxDQUFi
LENBQWdCQSxDQUFoQixDQUFvQmlpQixDQUFBbmpCLE9BQXBCLENBQWlDLEVBQUVrQixDQUFuQyxD
QUNFRyxDQUFBc0UsS0FBQSxDQUFXd2QsQ0FBQSxDQUFLamlCLENBQUwsQ0FBQSxDQUFRMEssQ0FB
UixDQUFld1osQ0FBZixDQUF1Qm9ZLENBQXZCLENBQStCbWEsQ0FBL0IsQ0FBWCxDQUVGLE9BQU9u
M0MsRUFBQSxDQUFVLENBQUNhLE1BQU9BLENBQVIsQ0FBVixDQUEyQkEsQ0FMVyxDQU9qRCxNQUFL
bXpDLENBQUFzQixpQkFBTCxDQVNFLE1BUkEzeUIsRUFRTyxDQVJBLEVBUUEsQ0FQUDdpQixDQUFB
LENBQVErekMsQ0FBQTBCLFdBQVIsQ0FBd0IsUUFBUSxDQUFDeEYsQ0FBRCxDQUFXLENBQ3pDcHRC
LENBQUF4ZCxLQUFBLENBQVUsQ0FBQ2xGLElBQUs4dkMsQ0FBQTl2QyxJQUFBNmQsS0FBQSxHQUFz
QmsyQixDQUFBYyxXQUF0QixDQUNBL0UsQ0FBQTl2QyxJQUFBa0ssS0FEQSxDQUVDLEVBRkQsQ0FF
TTRsQyxDQUFBOXZDLElBQUFZLE1BRlosQ0FHQ0EsTUFBTzBGLENBQUE0NkQsUUFBQSxDQUFhcHhC
LENBQUFsdkMsTUFBYixDQUhSLENBQVYsQ0FEeUMsQ0FBM0MsQ0FPTyxDQUFBLFFBQVEsQ0FBQ3VL
LENBQUQsQ0FBUXdaLENBQVIsQ0FBZ0JvWSxDQUFoQixDQUF3Qm1hLENBQXhCLENBQWdDLENBRTdD
LElBREEsSUFBSXQyQyxFQUFRLEVBQVosQ0FDU0gsRUFBSSxDQUFiLENBQWdCQSxDQUFoQixDQUFv
QmlpQixDQUFBbmpCLE9BQXBCLENBQWlDLEVBQUVrQixDQUFuQyxDQUNFRyxDQUFBLENBQU04aEIs
Q0FBQSxDQUFLamlCLENBQUwsQ0FBQVQsSUFBTixDQUFBLENBQXFCMGlCLENBQUEsQ0FBS2ppQixD
QUFMLENBQUFHLE1BQUEsQ0FBY3VLLENBQWQsQ0FBcUJ3WixDQUFyQixDQUE2Qm9ZLENBQTdCLENB
QXFDbWEsQ0FBckMsQ0FFdkIsT0FBT24zQyxFQUFBLENBQVUsQ0FBQ2EsTUFBT0EsQ0FBUixDQUFW
LENBQTJCQSxDQUxXLENBT2pELE1BQUttekMsQ0FBQXdCLGVBQUwsQ0FDRSxNQUFPLFNBQVEsQ0FB
Q3BxQyxDQUFELENBQVEsQ0FDckIsTUFBT3BMLEVBQUE7QUFBVSxDQUFDYSxNQUFPdUssQ0FBUixD
QUFWLENBQTJCQSxDQURiLENBR3pCLE1BQUs0b0MsQ0FBQTZCLGlCQUFMLENBQ0UsTUFBTyxTQUFR
LENBQUN6cUMsQ0FBRCxDQUFRd1osQ0FBUixDQUFnQm9ZLENBQWhCLENBQXdCbWEsQ0FBeEIsQ0FB
Z0MsQ0FDN0MsTUFBT24zQyxFQUFBLENBQVUsQ0FBQ2EsTUFBT204QixDQUFSLENBQVYsQ0FBNEJB
LENBRFUsQ0E3R2pELENBTHNDLENBakRmLENBeUt6QixTQUFVMm1DLFFBQVEsQ0FBQ3J2QixDQUFE
LENBQVd0MEMsQ0FBWCxDQUFvQixDQUNwQyxNQUFPLFNBQVEsQ0FBQ29MLENBQUQsQ0FBUXdaLENB
QVIsQ0FBZ0JvWSxDQUFoQixDQUF3Qm1hLENBQXhCLENBQWdDLENBQ3pDbHBDLENBQUFBLENBQU1x
bUMsQ0FBQSxDQUFTbHBDLENBQVQsQ0FBZ0J3WixDQUFoQixDQUF3Qm9ZLENBQXhCLENBQWdDbWEs
Q0FBaEMsQ0FFUmxwQyxFQUFBLENBREUvSyxDQUFBLENBQVUrSyxDQUFWLENBQUosQ0FDUSxDQUFD
QSxDQURULENBR1EsQ0FFUixPQUFPak8sRUFBQSxDQUFVLENBQUNhLE1BQU9vTixDQUFSLENBQVYs
Q0FBeUJBLENBUGEsQ0FEWCxDQXpLYixDQW9MekIsU0FBVTIxRCxRQUFRLENBQUN0dkIsQ0FBRCxD
QUFXdDBDLENBQVgsQ0FBb0IsQ0FDcEMsTUFBTyxTQUFRLENBQUNvTCxDQUFELENBQVF3WixDQUFS
LENBQWdCb1ksQ0FBaEIsQ0FBd0JtYSxDQUF4QixDQUFnQyxDQUN6Q2xwQyxDQUFBQSxDQUFNcW1D
LENBQUEsQ0FBU2xwQyxDQUFULENBQWdCd1osQ0FBaEIsQ0FBd0JvWSxDQUF4QixDQUFnQ21hLENB
QWhDLENBRVJscEMsRUFBQSxDQURFL0ssQ0FBQSxDQUFVK0ssQ0FBVixDQUFKLENBQ1EsQ0FBQ0Es
Q0FEVCxDQUdRLENBRVIsT0FBT2pPLEVBQUEsQ0FBVSxDQUFDYSxNQUFPb04sQ0FBUixDQUFWLENB
QXlCQSxDQVBhLENBRFgsQ0FwTGIsQ0ErTHpCLFNBQVU0MUQsUUFBUSxDQUFDdnZCLENBQUQsQ0FB
V3QwQyxDQUFYLENBQW9CLENBQ3BDLE1BQU8sU0FBUSxDQUFDb0wsQ0FBRCxDQUFRd1osQ0FBUixD
QUFnQm9ZLENBQWhCLENBQXdCbWEsQ0FBeEIsQ0FBZ0MsQ0FDekNscEMsQ0FBQUEsQ0FBTSxDQUFD
cW1DLENBQUEsQ0FBU2xwQyxDQUFULENBQWdCd1osQ0FBaEIsQ0FBd0JvWSxDQUF4QixDQUFnQ21h
LENBQWhDLENBQ1gsT0FBT24zQyxFQUFBLENBQVUsQ0FBQ2EsTUFBT29OLENBQVIsQ0FBVixDQUF5
QkEsQ0FGYSxDQURYLENBL0xiLENBcU16QixVQUFXNjFELFFBQVEsQ0FBQ3R2QixDQUFELENBQU9D
LENBQVAsQ0FBY3owQyxDQUFkLENBQXVCLENBQ3hDLE1BQU8sU0FBUSxDQUFDb0wsQ0FBRCxDQUFR
d1osQ0FBUixDQUFnQm9ZLENBQWhCLENBQXdCbWEsQ0FBeEIsQ0FBZ0MsQ0FDN0MsSUFBSXVzQixF
QUFNbHZCLENBQUEsQ0FBS3BwQyxDQUFMLENBQVl3WixDQUFaLENBQW9Cb1ksQ0FBcEIsQ0FBNEJt
YSxDQUE1QixDQUNOc3NCLEVBQUFBLENBQU1odkIsQ0FBQSxDQUFNcnBDLENBQU4sQ0FBYXdaLENB
QWIsQ0FBcUJvWSxDQUFyQixDQUE2Qm1hLENBQTdCLENBQ05scEMsRUFBQUEsQ0FBTXlsQyxFQUFB
LENBQU9nd0IsQ0FBUCxDQUFZRCxDQUFaLENBQ1YsT0FBT3pqRSxFQUFBLENBQVUsQ0FBQ2EsTUFB
T29OLENBQVIsQ0FBVixDQUF5QkEsQ0FKYSxDQURQLENBck1qQixDQTZNekIsVUFBVzgxRCxRQUFR
LENBQUN2dkIsQ0FBRCxDQUFPQyxDQUFQLENBQWN6MEMsQ0FBZCxDQUF1QixDQUN4QyxNQUFPLFNB
QVEsQ0FBQ29MLENBQUQ7QUFBUXdaLENBQVIsQ0FBZ0JvWSxDQUFoQixDQUF3Qm1hLENBQXhCLENB
QWdDLENBQzdDLElBQUl1c0IsRUFBTWx2QixDQUFBLENBQUtwcEMsQ0FBTCxDQUFZd1osQ0FBWixD
QUFvQm9ZLENBQXBCLENBQTRCbWEsQ0FBNUIsQ0FDTnNzQixFQUFBQSxDQUFNaHZCLENBQUEsQ0FB
TXJwQyxDQUFOLENBQWF3WixDQUFiLENBQXFCb1ksQ0FBckIsQ0FBNkJtYSxDQUE3QixDQUNObHBD
LEVBQUFBLEVBQU8vSyxDQUFBLENBQVV3Z0UsQ0FBVixDQUFBLENBQWlCQSxDQUFqQixDQUF1QixD
QUE5QnoxRCxHQUFvQy9LLENBQUEsQ0FBVXVnRSxDQUFWLENBQUEsQ0FBaUJBLENBQWpCLENBQXVC
LENBQTNEeDFELENBQ0osT0FBT2pPLEVBQUEsQ0FBVSxDQUFDYSxNQUFPb04sQ0FBUixDQUFWLENB
QXlCQSxDQUphLENBRFAsQ0E3TWpCLENBcU56QixVQUFXKzFELFFBQVEsQ0FBQ3h2QixDQUFELENB
QU9DLENBQVAsQ0FBY3owQyxDQUFkLENBQXVCLENBQ3hDLE1BQU8sU0FBUSxDQUFDb0wsQ0FBRCxD
QUFRd1osQ0FBUixDQUFnQm9ZLENBQWhCLENBQXdCbWEsQ0FBeEIsQ0FBZ0MsQ0FDekNscEMsQ0FB
QUEsQ0FBTXVtQyxDQUFBLENBQUtwcEMsQ0FBTCxDQUFZd1osQ0FBWixDQUFvQm9ZLENBQXBCLENB
QTRCbWEsQ0FBNUIsQ0FBTmxwQyxDQUE0Q3dtQyxDQUFBLENBQU1ycEMsQ0FBTixDQUFhd1osQ0FB
YixDQUFxQm9ZLENBQXJCLENBQTZCbWEsQ0FBN0IsQ0FDaEQsT0FBT24zQyxFQUFBLENBQVUsQ0FB
Q2EsTUFBT29OLENBQVIsQ0FBVixDQUF5QkEsQ0FGYSxDQURQLENBck5qQixDQTJOekIsVUFBV2cy
RCxRQUFRLENBQUN6dkIsQ0FBRCxDQUFPQyxDQUFQLENBQWN6MEMsQ0FBZCxDQUF1QixDQUN4QyxN
QUFPLFNBQVEsQ0FBQ29MLENBQUQsQ0FBUXdaLENBQVIsQ0FBZ0JvWSxDQUFoQixDQUF3Qm1hLENB
QXhCLENBQWdDLENBQ3pDbHBDLENBQUFBLENBQU11bUMsQ0FBQSxDQUFLcHBDLENBQUwsQ0FBWXda
LENBQVosQ0FBb0JvWSxDQUFwQixDQUE0Qm1hLENBQTVCLENBQU5scEMsQ0FBNEN3bUMsQ0FBQSxD
QUFNcnBDLENBQU4sQ0FBYXdaLENBQWIsQ0FBcUJvWSxDQUFyQixDQUE2Qm1hLENBQTdCLENBQ2hE
LE9BQU9uM0MsRUFBQSxDQUFVLENBQUNhLE1BQU9vTixDQUFSLENBQVYsQ0FBeUJBLENBRmEsQ0FE
UCxDQTNOakIsQ0FpT3pCLFVBQVdpMkQsUUFBUSxDQUFDMXZCLENBQUQsQ0FBT0MsQ0FBUCxDQUFj
ejBDLENBQWQsQ0FBdUIsQ0FDeEMsTUFBTyxTQUFRLENBQUNvTCxDQUFELENBQVF3WixDQUFSLENB
QWdCb1ksQ0FBaEIsQ0FBd0JtYSxDQUF4QixDQUFnQyxDQUN6Q2xwQyxDQUFBQSxDQUFNdW1DLENB
QUEsQ0FBS3BwQyxDQUFMLENBQVl3WixDQUFaLENBQW9Cb1ksQ0FBcEIsQ0FBNEJtYSxDQUE1QixD
QUFObHBDLENBQTRDd21DLENBQUEsQ0FBTXJwQyxDQUFOLENBQWF3WixDQUFiLENBQXFCb1ksQ0FB
ckIsQ0FBNkJtYSxDQUE3QixDQUNoRCxPQUFPbjNDLEVBQUEsQ0FBVSxDQUFDYSxNQUFPb04sQ0FB
UixDQUFWLENBQXlCQSxDQUZhLENBRFAsQ0FqT2pCLENBdU96QixZQUFhazJELFFBQVEsQ0FBQzN2
QixDQUFELENBQU9DLENBQVAsQ0FBY3owQyxDQUFkLENBQXVCLENBQzFDLE1BQU8sU0FBUSxDQUFD
b0wsQ0FBRCxDQUFRd1osQ0FBUixDQUFnQm9ZLENBQWhCLENBQXdCbWEsQ0FBeEIsQ0FBZ0MsQ0FD
ekNscEMsQ0FBQUEsQ0FBTXVtQyxDQUFBLENBQUtwcEMsQ0FBTCxDQUFZd1osQ0FBWixDQUFvQm9Z
LENBQXBCLENBQTRCbWEsQ0FBNUIsQ0FBTmxwQyxHQUE4Q3dtQyxDQUFBLENBQU1ycEMsQ0FBTixD
QUFhd1osQ0FBYixDQUFxQm9ZLENBQXJCLENBQTZCbWEsQ0FBN0IsQ0FDbEQsT0FBT24zQyxFQUFB
LENBQVUsQ0FBQ2EsTUFBT29OLENBQVIsQ0FBVixDQUF5QkEsQ0FGYSxDQURMLENBdk9uQixDQTZP
ekIsWUFBYW0yRCxRQUFRLENBQUM1dkIsQ0FBRDtBQUFPQyxDQUFQLENBQWN6MEMsQ0FBZCxDQUF1
QixDQUMxQyxNQUFPLFNBQVEsQ0FBQ29MLENBQUQsQ0FBUXdaLENBQVIsQ0FBZ0JvWSxDQUFoQixD
QUF3Qm1hLENBQXhCLENBQWdDLENBQ3pDbHBDLENBQUFBLENBQU11bUMsQ0FBQSxDQUFLcHBDLENB
QUwsQ0FBWXdaLENBQVosQ0FBb0JvWSxDQUFwQixDQUE0Qm1hLENBQTVCLENBQU5scEMsR0FBOEN3
bUMsQ0FBQSxDQUFNcnBDLENBQU4sQ0FBYXdaLENBQWIsQ0FBcUJvWSxDQUFyQixDQUE2Qm1hLENB
QTdCLENBQ2xELE9BQU9uM0MsRUFBQSxDQUFVLENBQUNhLE1BQU9vTixDQUFSLENBQVYsQ0FBeUJB
LENBRmEsQ0FETCxDQTdPbkIsQ0FtUHpCLFdBQVlvMkQsUUFBUSxDQUFDN3ZCLENBQUQsQ0FBT0Ms
Q0FBUCxDQUFjejBDLENBQWQsQ0FBdUIsQ0FDekMsTUFBTyxTQUFRLENBQUNvTCxDQUFELENBQVF3
WixDQUFSLENBQWdCb1ksQ0FBaEIsQ0FBd0JtYSxDQUF4QixDQUFnQyxDQUN6Q2xwQyxDQUFBQSxD
QUFNdW1DLENBQUEsQ0FBS3BwQyxDQUFMLENBQVl3WixDQUFaLENBQW9Cb1ksQ0FBcEIsQ0FBNEJt
YSxDQUE1QixDQUFObHBDLEVBQTZDd21DLENBQUEsQ0FBTXJwQyxDQUFOLENBQWF3WixDQUFiLENB
QXFCb1ksQ0FBckIsQ0FBNkJtYSxDQUE3QixDQUNqRCxPQUFPbjNDLEVBQUEsQ0FBVSxDQUFDYSxN
QUFPb04sQ0FBUixDQUFWLENBQXlCQSxDQUZhLENBRE4sQ0FuUGxCLENBeVB6QixXQUFZcTJELFFB
QVEsQ0FBQzl2QixDQUFELENBQU9DLENBQVAsQ0FBY3owQyxDQUFkLENBQXVCLENBQ3pDLE1BQU8s
U0FBUSxDQUFDb0wsQ0FBRCxDQUFRd1osQ0FBUixDQUFnQm9ZLENBQWhCLENBQXdCbWEsQ0FBeEIs
Q0FBZ0MsQ0FDekNscEMsQ0FBQUEsQ0FBTXVtQyxDQUFBLENBQUtwcEMsQ0FBTCxDQUFZd1osQ0FB
WixDQUFvQm9ZLENBQXBCLENBQTRCbWEsQ0FBNUIsQ0FBTmxwQyxFQUE2Q3dtQyxDQUFBLENBQU1y
cEMsQ0FBTixDQUFhd1osQ0FBYixDQUFxQm9ZLENBQXJCLENBQTZCbWEsQ0FBN0IsQ0FDakQsT0FB
T24zQyxFQUFBLENBQVUsQ0FBQ2EsTUFBT29OLENBQVIsQ0FBVixDQUF5QkEsQ0FGYSxDQUROLENB
elBsQixDQStQekIsVUFBV3MyRCxRQUFRLENBQUMvdkIsQ0FBRCxDQUFPQyxDQUFQLENBQWN6MEMs
Q0FBZCxDQUF1QixDQUN4QyxNQUFPLFNBQVEsQ0FBQ29MLENBQUQsQ0FBUXdaLENBQVIsQ0FBZ0Jv
WSxDQUFoQixDQUF3Qm1hLENBQXhCLENBQWdDLENBQ3pDbHBDLENBQUFBLENBQU11bUMsQ0FBQSxD
QUFLcHBDLENBQUwsQ0FBWXdaLENBQVosQ0FBb0JvWSxDQUFwQixDQUE0Qm1hLENBQTVCLENBQU5s
cEMsQ0FBNEN3bUMsQ0FBQSxDQUFNcnBDLENBQU4sQ0FBYXdaLENBQWIsQ0FBcUJvWSxDQUFyQixD
QUE2Qm1hLENBQTdCLENBQ2hELE9BQU9uM0MsRUFBQSxDQUFVLENBQUNhLE1BQU9vTixDQUFSLENB
QVYsQ0FBeUJBLENBRmEsQ0FEUCxDQS9QakIsQ0FxUXpCLFVBQVd1MkQsUUFBUSxDQUFDaHdCLENB
QUQsQ0FBT0MsQ0FBUCxDQUFjejBDLENBQWQsQ0FBdUIsQ0FDeEMsTUFBTyxTQUFRLENBQUNvTCxD
QUFELENBQVF3WixDQUFSLENBQWdCb1ksQ0FBaEIsQ0FBd0JtYSxDQUF4QixDQUFnQyxDQUN6Q2xw
QyxDQUFBQSxDQUFNdW1DLENBQUEsQ0FBS3BwQyxDQUFMLENBQVl3WixDQUFaLENBQW9Cb1ksQ0FB
cEIsQ0FBNEJtYSxDQUE1QixDQUFObHBDLENBQTRDd21DLENBQUEsQ0FBTXJwQyxDQUFOLENBQWF3
WixDQUFiLENBQXFCb1ksQ0FBckIsQ0FBNkJtYSxDQUE3QixDQUNoRCxPQUFPbjNDLEVBQUEsQ0FB
VSxDQUFDYSxNQUFPb04sQ0FBUixDQUFWLENBQXlCQSxDQUZhLENBRFAsQ0FyUWpCLENBMlF6QixX
QUFZdzJELFFBQVEsQ0FBQ2p3QixDQUFELENBQU9DLENBQVAsQ0FBY3owQyxDQUFkLENBQXVCLENB
Q3pDLE1BQU8sU0FBUSxDQUFDb0wsQ0FBRDtBQUFRd1osQ0FBUixDQUFnQm9ZLENBQWhCLENBQXdC
bWEsQ0FBeEIsQ0FBZ0MsQ0FDekNscEMsQ0FBQUEsQ0FBTXVtQyxDQUFBLENBQUtwcEMsQ0FBTCxD
QUFZd1osQ0FBWixDQUFvQm9ZLENBQXBCLENBQTRCbWEsQ0FBNUIsQ0FBTmxwQyxFQUE2Q3dtQyxD
QUFBLENBQU1ycEMsQ0FBTixDQUFhd1osQ0FBYixDQUFxQm9ZLENBQXJCLENBQTZCbWEsQ0FBN0Is
Q0FDakQsT0FBT24zQyxFQUFBLENBQVUsQ0FBQ2EsTUFBT29OLENBQVIsQ0FBVixDQUF5QkEsQ0FG
YSxDQUROLENBM1FsQixDQWlSekIsV0FBWXkyRCxRQUFRLENBQUNsd0IsQ0FBRCxDQUFPQyxDQUFQ
LENBQWN6MEMsQ0FBZCxDQUF1QixDQUN6QyxNQUFPLFNBQVEsQ0FBQ29MLENBQUQsQ0FBUXdaLENB
QVIsQ0FBZ0JvWSxDQUFoQixDQUF3Qm1hLENBQXhCLENBQWdDLENBQ3pDbHBDLENBQUFBLENBQU11
bUMsQ0FBQSxDQUFLcHBDLENBQUwsQ0FBWXdaLENBQVosQ0FBb0JvWSxDQUFwQixDQUE0Qm1hLENB
QTVCLENBQU5scEMsRUFBNkN3bUMsQ0FBQSxDQUFNcnBDLENBQU4sQ0FBYXdaLENBQWIsQ0FBcUJv
WSxDQUFyQixDQUE2Qm1hLENBQTdCLENBQ2pELE9BQU9uM0MsRUFBQSxDQUFVLENBQUNhLE1BQU9v
TixDQUFSLENBQVYsQ0FBeUJBLENBRmEsQ0FETixDQWpSbEIsQ0F1UnpCLFdBQVkwMkQsUUFBUSxD
QUFDbndCLENBQUQsQ0FBT0MsQ0FBUCxDQUFjejBDLENBQWQsQ0FBdUIsQ0FDekMsTUFBTyxTQUFR
LENBQUNvTCxDQUFELENBQVF3WixDQUFSLENBQWdCb1ksQ0FBaEIsQ0FBd0JtYSxDQUF4QixDQUFn
QyxDQUN6Q2xwQyxDQUFBQSxDQUFNdW1DLENBQUEsQ0FBS3BwQyxDQUFMLENBQVl3WixDQUFaLENB
QW9Cb1ksQ0FBcEIsQ0FBNEJtYSxDQUE1QixDQUFObHBDLEVBQTZDd21DLENBQUEsQ0FBTXJwQyxD
QUFOLENBQWF3WixDQUFiLENBQXFCb1ksQ0FBckIsQ0FBNkJtYSxDQUE3QixDQUNqRCxPQUFPbjND
LEVBQUEsQ0FBVSxDQUFDYSxNQUFPb04sQ0FBUixDQUFWLENBQXlCQSxDQUZhLENBRE4sQ0F2UmxC
LENBNlJ6QixXQUFZMjJELFFBQVEsQ0FBQ3B3QixDQUFELENBQU9DLENBQVAsQ0FBY3owQyxDQUFk
LENBQXVCLENBQ3pDLE1BQU8sU0FBUSxDQUFDb0wsQ0FBRCxDQUFRd1osQ0FBUixDQUFnQm9ZLENB
QWhCLENBQXdCbWEsQ0FBeEIsQ0FBZ0MsQ0FDekNscEMsQ0FBQUEsQ0FBTXVtQyxDQUFBLENBQUtw
cEMsQ0FBTCxDQUFZd1osQ0FBWixDQUFvQm9ZLENBQXBCLENBQTRCbWEsQ0FBNUIsQ0FBTmxwQyxF
QUE2Q3dtQyxDQUFBLENBQU1ycEMsQ0FBTixDQUFhd1osQ0FBYixDQUFxQm9ZLENBQXJCLENBQTZC
bWEsQ0FBN0IsQ0FDakQsT0FBT24zQyxFQUFBLENBQVUsQ0FBQ2EsTUFBT29OLENBQVIsQ0FBVixD
QUF5QkEsQ0FGYSxDQUROLENBN1JsQixDQW1TekIsWUFBYTQyRCxRQUFRLENBQUMzL0QsQ0FBRCxD
QUFPMHZDLENBQVAsQ0FBa0JDLENBQWxCLENBQThCNzBDLENBQTlCLENBQXVDLENBQzFELE1BQU8s
U0FBUSxDQUFDb0wsQ0FBRCxDQUFRd1osQ0FBUixDQUFnQm9ZLENBQWhCLENBQXdCbWEsQ0FBeEIs
Q0FBZ0MsQ0FDekNscEMsQ0FBQUEsQ0FBTS9JLENBQUEsQ0FBS2tHLENBQUwsQ0FBWXdaLENBQVos
Q0FBb0JvWSxDQUFwQixDQUE0Qm1hLENBQTVCLENBQUEsQ0FBc0N2QyxDQUFBLENBQVV4cEMsQ0FB
VixDQUFpQndaLENBQWpCLENBQXlCb1ksQ0FBekIsQ0FBaUNtYSxDQUFqQyxDQUF0QyxDQUFpRnRD
LENBQUEsQ0FBV3pwQyxDQUFYLENBQWtCd1osQ0FBbEIsQ0FBMEJvWSxDQUExQixDQUFrQ21hLENB
QWxDLENBQzNGLE9BQU9uM0MsRUFBQSxDQUFVLENBQUNhLE1BQU9vTixDQUFSLENBQVYsQ0FBeUJB
LENBRmEsQ0FEVyxDQW5TbkMsQ0F5U3pCcE4sTUFBT0EsUUFBUSxDQUFDQSxDQUFELENBQVFiLENB
QVIsQ0FBaUIsQ0FDOUIsTUFBTyxTQUFRLEVBQUcsQ0FBRSxNQUFPQSxFQUFBO0FBQVUsQ0FBQ0Es
UUFBU2IsQ0FBVixDQUFxQmdMLEtBQU1oTCxDQUEzQixDQUFzQzBCLE1BQU9BLENBQTdDLENBQVYs
Q0FBZ0VBLENBQXpFLENBRFksQ0F6U1AsQ0E0U3pCMjFCLFdBQVlBLFFBQVEsQ0FBQ3JzQixDQUFE
LENBQU8wdUMsQ0FBUCxDQUF3Qjc0QyxDQUF4QixDQUFpQ3lDLENBQWpDLENBQXlDcTlCLENBQXpD
LENBQXFELENBQ3ZFLE1BQU8sU0FBUSxDQUFDMTBCLENBQUQsQ0FBUXdaLENBQVIsQ0FBZ0JvWSxD
QUFoQixDQUF3Qm1hLENBQXhCLENBQWdDLENBQ3pDeEgsQ0FBQUEsQ0FBTy9xQixDQUFBLEVBQVd6
YSxDQUFYLEdBQW1CeWEsRUFBbkIsQ0FBNkJBLENBQTdCLENBQXNDeFosQ0FDN0MzSSxFQUFKLEVB
QXlCLENBQXpCLEdBQWNBLENBQWQsRUFBOEJrdEMsQ0FBOUIsRUFBd0MsQ0FBQUEsQ0FBQSxDQUFL
eGxDLENBQUwsQ0FBeEMsR0FDRXdsQyxDQUFBLENBQUt4bEMsQ0FBTCxDQURGLENBQ2UsRUFEZixD
QUdJdEosRUFBQUEsQ0FBUTh1QyxDQUFBLENBQU9BLENBQUEsQ0FBS3hsQyxDQUFMLENBQVAsQ0FB
b0JoTCxDQUM1QjA1QyxFQUFKLEVBQ0UxRixFQUFBLENBQWlCdHlDLENBQWpCLENBQXdCaS9CLENB
QXhCLENBRUYsT0FBSTkvQixFQUFKLENBQ1MsQ0FBQ0EsUUFBUzJ2QyxDQUFWLENBQWdCeGxDLEtB
QU1BLENBQXRCLENBQTRCdEosTUFBT0EsQ0FBbkMsQ0FEVCxDQUdTQSxDQVpvQyxDQUR3QixDQTVT
aEQsQ0E2VHpCd2hFLGVBQWdCQSxRQUFRLENBQUM3dEIsQ0FBRCxDQUFPQyxDQUFQLENBQWN6MEMs
Q0FBZCxDQUF1QnlDLENBQXZCLENBQStCcTlCLENBQS9CLENBQTJDLENBQ2pFLE1BQU8sU0FBUSxD
QUFDMTBCLENBQUQsQ0FBUXdaLENBQVIsQ0FBZ0JvWSxDQUFoQixDQUF3Qm1hLENBQXhCLENBQWdD
LENBQzdDLElBQUl1c0IsRUFBTWx2QixDQUFBLENBQUtwcEMsQ0FBTCxDQUFZd1osQ0FBWixDQUFv
Qm9ZLENBQXBCLENBQTRCbWEsQ0FBNUIsQ0FBVixDQUNJc3NCLENBREosQ0FFSTVpRSxDQUNPLEtB
QVgsRUFBSTZpRSxDQUFKLEdBQ0VELENBTUEsQ0FOTWh2QixDQUFBLENBQU1ycEMsQ0FBTixDQUFh
d1osQ0FBYixDQUFxQm9ZLENBQXJCLENBQTZCbWEsQ0FBN0IsQ0FNTixDQUxBbkUsRUFBQSxDQUFx
Qnl3QixDQUFyQixDQUEwQjNqQyxDQUExQixDQUtBLENBSklyOUIsQ0FJSixFQUp5QixDQUl6QixH
QUpjQSxDQUlkLEVBSjhCaWhFLENBSTlCLEVBSnVDLENBQUFBLENBQUEsQ0FBSUQsQ0FBSixDQUl2
QyxHQUhFQyxDQUFBLENBQUlELENBQUosQ0FHRixDQUhhLEVBR2IsRUFEQTVpRSxDQUNBLENBRFE2
aUUsQ0FBQSxDQUFJRCxDQUFKLENBQ1IsQ0FBQXR3QixFQUFBLENBQWlCdHlDLENBQWpCLENBQXdC
aS9CLENBQXhCLENBUEYsQ0FTQSxPQUFJOS9CLEVBQUosQ0FDUyxDQUFDQSxRQUFTMGpFLENBQVYs
Q0FBZXY1RCxLQUFNczVELENBQXJCLENBQTBCNWlFLE1BQU9BLENBQWpDLENBRFQsQ0FHU0EsQ0Fo
Qm9DLENBRGtCLENBN1QxQyxDQWtWekI2aEUsa0JBQW1CQSxRQUFRLENBQUNsdUIsQ0FBRCxDQUFP
QyxDQUFQLENBQWNvRSxDQUFkLENBQStCNzRDLENBQS9CLENBQXdDeUMsQ0FBeEMsQ0FBZ0RxOUIs
Q0FBaEQsQ0FBNEQsQ0FDckYsTUFBTyxTQUFRLENBQUMxMEIsQ0FBRCxDQUFRd1osQ0FBUixDQUFn
Qm9ZLENBQWhCLENBQXdCbWEsQ0FBeEIsQ0FBZ0MsQ0FDekN1c0IsQ0FBQUEsQ0FBTWx2QixDQUFB
LENBQUtwcEMsQ0FBTCxDQUFZd1osQ0FBWixDQUFvQm9ZLENBQXBCLENBQTRCbWEsQ0FBNUIsQ0FD
TjEwQyxFQUFKLEVBQXlCLENBQXpCLEdBQWNBLENBQWQsRUFBOEJpaEUsQ0FBOUIsRUFBdUMsQ0FB
QUEsQ0FBQSxDQUFJanZCLENBQUosQ0FBdkMsR0FDRWl2QixDQUFBLENBQUlqdkIsQ0FBSixDQURG
LENBQ2UsRUFEZixDQUdJNXpDO0NBQUFBLENBQWUsSUFBUCxFQUFBNmlFLENBQUEsQ0FBY0EsQ0FB
QSxDQUFJanZCLENBQUosQ0FBZCxDQUEyQnQxQyxDQUN2QyxFQUFJMDVDLENBQUosRUFBdUJ0QyxF
QUFBLENBQThCOUIsQ0FBOUIsQ0FBdkIsR0FDRXRCLEVBQUEsQ0FBaUJ0eUMsQ0FBakIsQ0FBd0Jp
L0IsQ0FBeEIsQ0FFRixPQUFJOS9CLEVBQUosQ0FDUyxDQUFDQSxRQUFTMGpFLENBQVYsQ0FBZXY1
RCxLQUFNc3FDLENBQXJCLENBQTRCNXpDLE1BQU9BLENBQW5DLENBRFQsQ0FHU0EsQ0Fab0MsQ0FE
c0MsQ0FsVjlELENBbVd6QnMyQyxPQUFRQSxRQUFRLENBQUN2bEMsQ0FBRCxDQUFRNHZELENBQVIs
Q0FBaUIsQ0FDL0IsTUFBTyxTQUFRLENBQUNwMkQsQ0FBRCxDQUFRdkssQ0FBUixDQUFlK2pCLENB
QWYsQ0FBdUJ1eUIsQ0FBdkIsQ0FBK0IsQ0FDNUMsTUFBSUEsRUFBSixDQUFtQkEsQ0FBQSxDQUFP
cXFCLENBQVAsQ0FBbkIsQ0FDTzV2RCxDQUFBLENBQU14RyxDQUFOLENBQWF2SyxDQUFiLENBQW9C
K2pCLENBQXBCLENBRnFDLENBRGYsQ0FuV1IsQ0E4VzNCLEtBQUl5MEIsR0FBU0EsUUFBUSxDQUFD
SCxDQUFELENBQVFoaEMsQ0FBUixDQUFpQnlQLENBQWpCLENBQTBCLENBQzdDLElBQUF1eEIsTUFB
QSxDQUFhQSxDQUNiLEtBQUFoaEMsUUFBQSxDQUFlQSxDQUNmLEtBQUF5UCxRQUFBLENBQWVBLENB
Q2YsS0FBQWtzQixJQUFBLENBQVcsSUFBSUcsQ0FBSixDQUFRLElBQUFrRixNQUFSLENBQ1gsS0FB
QTRyQixZQUFBLENBQW1CbjlDLENBQUF4VyxJQUFBLENBQWMsSUFBSStrQyxFQUFKLENBQW1CLElB
QUFyQyxJQUFuQixDQUE2QjM3QixDQUE3QixDQUFkLENBQ2MsSUFBSTg5QixFQUFKLENBQWdCLElB
QUFuQyxJQUFoQixDQUEwQjM3QixDQUExQixDQU5ZLENBUy9DbWhDLEdBQUFyMkMsVUFBQSxDQUFt
QixDQUNqQm9DLFlBQWFpMEMsRUFESSxDQUdqQmp5QyxNQUFPQSxRQUFRLENBQUNnekIsQ0FBRCxD
QUFPLENBQ3BCLE1BQU8sS0FBQTBxQyxZQUFBejVELFFBQUEsQ0FBeUIrdUIsQ0FBekIsQ0FBK0Is
SUFBQXpTLFFBQUFreEIsZ0JBQS9CLENBRGEsQ0FITCxDQStCUTN5QyxHQUFBLEVBQ0VBLEdBQUEs
RUFNN0IsS0FBSXV3QyxHQUFnQmgzQyxNQUFBdUQsVUFBQWxCLFFBQXBCLENBK3lFSXlnRCxHQUFh
bmpELENBQUEsQ0FBTyxNQUFQLENBL3lFakIsQ0FpekVJd2pELEdBQWUsQ0FDakIxbkIsS0FBTSxN
QURXLENBRWpCMm9CLElBQUssS0FGWSxDQUdqQkMsSUFBSyxLQUhZO0FBTWpCM29CLGFBQWMsYUFO
RyxDQU9qQjRvQixHQUFJLElBUGEsQ0FqekVuQixDQTg1R0k3MkIsR0FBaUI5dEIsQ0FBQSxDQUFP
LFVBQVAsQ0E5NUdyQixDQWlzSElnb0QsRUFBaUJsb0QsQ0FBQWdkLGNBQUEsQ0FBdUIsR0FBdkIs
Q0Fqc0hyQixDQWtzSElvckMsR0FBWTVmLEVBQUEsQ0FBV3pvQyxDQUFBK00sU0FBQXVkLEtBQVgs
Q0E2TGhCZytCLEdBQUExaUMsUUFBQSxDQUF5QixDQUFDLFdBQUQsQ0F5R3pCMU0sR0FBQTBNLFFB
QUEsQ0FBMEIsQ0FBQyxVQUFELENBa1gxQm1qQyxHQUFBbmpDLFFBQUEsQ0FBeUIsQ0FBQyxTQUFE
LENBMEV6QnlqQyxHQUFBempDLFFBQUEsQ0FBdUIsQ0FBQyxTQUFELENBYXZCLEtBQUk4bEIsR0FB
YyxHQUFsQixDQTRLSTJpQixHQUFlLENBQ2pCZ0YsS0FBTWhILENBQUEsQ0FBVyxVQUFYLENBQXVC
LENBQXZCLENBRFcsQ0FFZnlaLEdBQUl6WixDQUFBLENBQVcsVUFBWCxDQUF1QixDQUF2QixDQUEw
QixDQUExQixDQUE2QixDQUFBLENBQTdCLENBRlcsQ0FHZDBaLEVBQUcxWixDQUFBLENBQVcsVUFB
WCxDQUF1QixDQUF2QixDQUhXLENBSWpCMlosS0FBTTFaLEVBQUEsQ0FBYyxPQUFkLENBSlcsQ0FL
aEIyWixJQUFLM1osRUFBQSxDQUFjLE9BQWQsQ0FBdUIsQ0FBQSxDQUF2QixDQUxXLENBTWZnSCxH
QUFJakgsQ0FBQSxDQUFXLE9BQVgsQ0FBb0IsQ0FBcEIsQ0FBdUIsQ0FBdkIsQ0FOVyxDQU9kNlos
RUFBRzdaLENBQUEsQ0FBVyxPQUFYLENBQW9CLENBQXBCLENBQXVCLENBQXZCLENBUFcsQ0FRZmtI
LEdBQUlsSCxDQUFBLENBQVcsTUFBWCxDQUFtQixDQUFuQixDQVJXLENBU2RwcEIsRUFBR29wQixD
QUFBLENBQVcsTUFBWCxDQUFtQixDQUFuQixDQVRXLENBVWZtSCxHQUFJbkgsQ0FBQSxDQUFXLE9B
QVgsQ0FBb0IsQ0FBcEIsQ0FWVyxDQVdkOFosRUFBRzlaLENBQUEsQ0FBVyxPQUFYLENBQW9CLENB
QXBCLENBWFcsQ0FZZitaLEdBQUkvWixDQUFBLENBQVcsT0FBWCxDQUFvQixDQUFwQixDQUF3QixH
QUF4QixDQVpXLENBYWRycUQsRUFBR3FxRCxDQUFBLENBQVcsT0FBWCxDQUFvQixDQUFwQixDQUF3
QixHQUF4QixDQWJXLENBY2ZxSCxHQUFJckgsQ0FBQSxDQUFXLFNBQVgsQ0FBc0IsQ0FBdEIsQ0Fk
VyxDQWVkeUIsRUFBR3pCLENBQUEsQ0FBVyxTQUFYLENBQXNCLENBQXRCLENBZlcsQ0FnQmZzSCxH
QUFJdEgsQ0FBQSxDQUFXLFNBQVgsQ0FBc0IsQ0FBdEIsQ0FoQlcsQ0FpQmQwQixFQUFHMUIsQ0FB
QSxDQUFXLFNBQVg7QUFBc0IsQ0FBdEIsQ0FqQlcsQ0FvQmhCd0gsSUFBS3hILENBQUEsQ0FBVyxj
QUFYLENBQTJCLENBQTNCLENBcEJXLENBcUJqQmdhLEtBQU0vWixFQUFBLENBQWMsS0FBZCxDQXJC
VyxDQXNCaEJnYSxJQUFLaGEsRUFBQSxDQUFjLEtBQWQsQ0FBcUIsQ0FBQSxDQUFyQixDQXRCVyxD
QXVCZDc1QyxFQW5DTDh6RCxRQUFtQixDQUFDNzlELENBQUQsQ0FBT2dpRCxDQUFQLENBQWdCLENB
Q2pDLE1BQXlCLEdBQWxCLENBQUFoaUQsQ0FBQStxRCxTQUFBLEVBQUEsQ0FBdUIvSSxDQUFBOWQs
TUFBQSxDQUFjLENBQWQsQ0FBdkIsQ0FBMEM4ZCxDQUFBOWQsTUFBQSxDQUFjLENBQWQsQ0FEaEIs
Q0FZaEIsQ0F3QmQ0NUIsRUF4RUxDLFFBQXVCLENBQUMvOUQsQ0FBRCxDQUFPZ2lELENBQVAsQ0FB
Z0JwdUMsQ0FBaEIsQ0FBd0IsQ0FDekNvcUQsQ0FBQUEsQ0FBUSxFQUFSQSxDQUFZcHFELENBTWhC
LE9BSEFxcUQsRUFHQSxFQUwwQixDQUFUQSxFQUFDRCxDQUFEQyxDQUFjLEdBQWRBLENBQW9CLEVB
S3JDLEdBSGN6YSxFQUFBLENBQVU3eUIsSUFBQSxDQUFZLENBQVAsQ0FBQXF0QyxDQUFBLENBQVcs
T0FBWCxDQUFxQixNQUExQixDQUFBLENBQWtDQSxDQUFsQyxDQUF5QyxFQUF6QyxDQUFWLENBQXdE
LENBQXhELENBR2QsQ0FGY3hhLEVBQUEsQ0FBVTd5QixJQUFBOHhCLElBQUEsQ0FBU3ViLENBQVQs
Q0FBZ0IsRUFBaEIsQ0FBVixDQUErQixDQUEvQixDQUVkLENBUDZDLENBZ0Q1QixDQXlCZkUsR0FB
SWhhLEVBQUEsQ0FBVyxDQUFYLENBekJXLENBMEJkaWEsRUFBR2phLEVBQUEsQ0FBVyxDQUFYLENB
MUJXLENBMkJka2EsRUFBRzVaLEVBM0JXLENBNEJkNlosR0FBSTdaLEVBNUJVLENBNkJkOFosSUFB
SzlaLEVBN0JTLENBOEJkK1osS0FsQ0xDLFFBQXNCLENBQUN4K0QsQ0FBRCxDQUFPZ2lELENBQVAs
Q0FBZ0IsQ0FDcEMsTUFBNkIsRUFBdEIsRUFBQWhpRCxDQUFBb2tELFlBQUEsRUFBQSxDQUEwQnBD
LENBQUF0ZCxTQUFBLENBQWlCLENBQWpCLENBQTFCLENBQWdEc2QsQ0FBQXRkLFNBQUEsQ0FBaUIs
Q0FBakIsQ0FEbkIsQ0FJbkIsQ0E1S25CLENBNk1JK2dCLEdBQXFCLHNGQTdNekIsQ0E4TUlELEdB
QWdCLFVBK0ZwQmxGLEdBQUFwakMsUUFBQSxDQUFxQixDQUFDLFNBQUQsQ0E4SHJCLEtBQUl3akMs
R0FBa0J4bEQsRUFBQSxDQUFRd0IsQ0FBUixDQUF0QixDQVdJbWtELEdBQWtCM2xELEVBQUEsQ0FB
UW9PLEVBQVIsQ0E0U3RCczNDLEdBQUExakMsUUFBQTtBQUF3QixDQUFDLFFBQUQsQ0EwSXhCLEtB
QUlsVCxHQUFzQjlPLEVBQUEsQ0FBUSxDQUNoQ3dyQixTQUFVLEdBRHNCLENBRWhDaGpCLFFBQVNB
LFFBQVEsQ0FBQ2pILENBQUQsQ0FBVU4sQ0FBVixDQUFnQixDQUMvQixHQUFLeWxCLENBQUF6bEIs
Q0FBQXlsQixLQUFMLEVBQW1CNjhDLENBQUF0aUUsQ0FBQXNpRSxVQUFuQixDQUNFLE1BQU8sU0FB
USxDQUFDaDdELENBQUQsQ0FBUWhILENBQVIsQ0FBaUIsQ0FFOUIsR0FBMEMsR0FBMUMsR0FBSUEs
Q0FBQSxDQUFRLENBQVIsQ0FBQVIsU0FBQThJLFlBQUEsRUFBSixDQUFBLENBR0EsSUFBSTZjLEVB
QStDLDRCQUF4QyxHQUFBeG1CLEVBQUEzQyxLQUFBLENBQWNnRSxDQUFBUCxLQUFBLENBQWEsTUFB
YixDQUFkLENBQUEsQ0FDQSxZQURBLENBQ2UsTUFDMUJPLEVBQUE2SSxHQUFBLENBQVcsT0FBWCxD
QUFvQixRQUFRLENBQUMrVCxDQUFELENBQVEsQ0FFN0I1YyxDQUFBTixLQUFBLENBQWF5bEIsQ0FB
YixDQUFMLEVBQ0V2SSxDQUFBd3dCLGVBQUEsRUFIZ0MsQ0FBcEMsQ0FMQSxDQUY4QixDQUZILENB
RkQsQ0FBUixDQUExQixDQW9YSTE2QixHQUE2QixFQUdqQ2hYLEVBQUEsQ0FBUTRnQixFQUFSLENB
QXNCLFFBQVEsQ0FBQzJsRCxDQUFELENBQVcvNEMsQ0FBWCxDQUFxQixDQUlqRGc1QyxRQUFTQSxF
QUFhLENBQUNsN0QsQ0FBRCxDQUFRaEgsQ0FBUixDQUFpQk4sQ0FBakIsQ0FBdUIsQ0FDM0NzSCxD
QUFBNUgsT0FBQSxDQUFhTSxDQUFBLENBQUt5aUUsQ0FBTCxDQUFiLENBQStCQyxRQUFpQyxDQUFD
M2xFLENBQUQsQ0FBUSxDQUN0RWlELENBQUFnMUIsS0FBQSxDQUFVeEwsQ0FBVixDQUFvQixDQUFF
enNCLENBQUFBLENBQXRCLENBRHNFLENBQXhFLENBRDJDLENBRjdDLEdBQWdCLFVBQWhCLEVBQUl3
bEUsQ0FBSixDQUFBLENBUUEsSUFBSUUsRUFBYTN6QyxFQUFBLENBQW1CLEtBQW5CLENBQTJCdEYs
Q0FBM0IsQ0FBakIsQ0FDSTZHLEVBQVNteUMsQ0FFSSxVQUFqQixHQUFJRCxDQUFKLEdBQ0VseUMs
Q0FERixDQUNXQSxRQUFRLENBQUMvb0IsQ0FBRCxDQUFRaEgsQ0FBUixDQUFpQk4sQ0FBakIsQ0FB
dUIsQ0FFbENBLENBQUF5UixRQUFKLEdBQXFCelIsQ0FBQSxDQUFLeWlFLENBQUwsQ0FBckIsRUFD
RUQsQ0FBQSxDQUFjbDdELENBQWQsQ0FBcUJoSCxDQUFyQixDQUE4Qk4sQ0FBOUIsQ0FIb0MsQ0FE
MUMsQ0FTQWdULEdBQUEsQ0FBMkJ5dkQsQ0FBM0IsQ0FBQSxDQUF5QyxRQUFRLEVBQUcsQ0FDbEQs
TUFBTyxDQUNMbDRDLFNBQVUsR0FETDtBQUVMRixTQUFVLEdBRkwsQ0FHTDVDLEtBQU00SSxDQUhE
LENBRDJDLENBcEJwRCxDQUZpRCxDQUFuRCxDQWdDQXIwQixFQUFBLENBQVErZ0IsRUFBUixDQUFz
QixRQUFRLENBQUM0bEQsQ0FBRCxDQUFXLzhELENBQVgsQ0FBbUIsQ0FDL0NvTixFQUFBLENBQTJC
cE4sQ0FBM0IsQ0FBQSxDQUFxQyxRQUFRLEVBQUcsQ0FDOUMsTUFBTyxDQUNMeWtCLFNBQVUsR0FE
TCxDQUVMNUMsS0FBTUEsUUFBUSxDQUFDbmdCLENBQUQsQ0FBUWhILENBQVIsQ0FBaUJOLENBQWpC
LENBQXVCLENBR25DLEdBQWUsV0FBZixHQUFJNEYsQ0FBSixFQUEwRCxHQUExRCxFQUE4QjVGLENB
QUFpUyxVQUFBcFEsT0FBQSxDQUFzQixDQUF0QixDQUE5QixHQUNNSixDQUROLENBQ2N6QixDQUFB
aVMsVUFBQXhRLE1BQUEsQ0FBcUIyd0QsRUFBckIsQ0FEZCxFQUVhLENBQ1RweUQsQ0FBQWcxQixL
QUFBLENBQVUsV0FBVixDQUF1QixJQUFJeHpCLE1BQUosQ0FBV0MsQ0FBQSxDQUFNLENBQU4sQ0FB
WCxDQUFxQkEsQ0FBQSxDQUFNLENBQU4sQ0FBckIsQ0FBdkIsQ0FDQSxPQUZTLENBTWI2RixDQUFB
NUgsT0FBQSxDQUFhTSxDQUFBLENBQUs0RixDQUFMLENBQWIsQ0FBMkJnOUQsUUFBK0IsQ0FBQzds
RSxDQUFELENBQVEsQ0FDaEVpRCxDQUFBZzFCLEtBQUEsQ0FBVXB2QixDQUFWLENBQWtCN0ksQ0FB
bEIsQ0FEZ0UsQ0FBbEUsQ0FYbUMsQ0FGaEMsQ0FEdUMsQ0FERCxDQUFqRCxDQXdCQWYsRUFBQSxD
QUFRLENBQUMsS0FBRCxDQUFRLFFBQVIsQ0FBa0IsTUFBbEIsQ0FBUixDQUFtQyxRQUFRLENBQUN3
dEIsQ0FBRCxDQUFXLENBQ3BELElBQUlpNUMsRUFBYTN6QyxFQUFBLENBQW1CLEtBQW5CLENBQTJC
dEYsQ0FBM0IsQ0FDakJ4VyxHQUFBLENBQTJCeXZELENBQTNCLENBQUEsQ0FBeUMsUUFBUSxFQUFH
LENBQ2xELE1BQU8sQ0FDTHA0QyxTQUFVLEVBREwsQ0FFTDVDLEtBQU1BLFFBQVEsQ0FBQ25nQixD
QUFELENBQVFoSCxDQUFSLENBQWlCTixDQUFqQixDQUF1QixDQUFBLElBQy9CdWlFLEVBQVcvNEMs
Q0FEb0IsQ0FFL0JuakIsRUFBT21qQixDQUVNLE9BQWpCLEdBQUlBLENBQUosRUFDNEMsNEJBRDVD
LEdBQ0l2cUIsRUFBQTNDLEtBQUEsQ0FBY2dFLENBQUFQLEtBQUEsQ0FBYSxNQUFiLENBQWQsQ0FE
SixHQUVFc0csQ0FFQSxDQUZPLFdBRVAsQ0FEQXJHLENBQUE0dUIsTUFBQSxDQUFXdm9CLENBQVgs
Q0FDQSxDQURtQixZQUNuQjtBQUFBazhELENBQUEsQ0FBVyxJQUpiLENBT0F2aUUsRUFBQWc1QixT
QUFBLENBQWN5cEMsQ0FBZCxDQUEwQixRQUFRLENBQUMxbEUsQ0FBRCxDQUFRLENBQ25DQSxDQUFM
LEVBT0FpRCxDQUFBZzFCLEtBQUEsQ0FBVTN1QixDQUFWLENBQWdCdEosQ0FBaEIsQ0FNQSxDQUFJ
NnlCLEVBQUosRUFBWTJ5QyxDQUFaLEVBQXNCamlFLENBQUFQLEtBQUEsQ0FBYXdpRSxDQUFiLENB
QXVCdmlFLENBQUEsQ0FBS3FHLENBQUwsQ0FBdkIsQ0FidEIsRUFDbUIsTUFEbkIsR0FDTW1qQixD
QUROLEVBRUl4cEIsQ0FBQWcxQixLQUFBLENBQVUzdUIsQ0FBVixDQUFnQixJQUFoQixDQUhvQyxD
QUExQyxDQVhtQyxDQUZoQyxDQUQyQyxDQUZBLENBQXRELENBcjJtQnVDLEtBNDRtQm5Dd2tELEdB
QWUsQ0FDakJVLFlBQWEzc0QsQ0FESSxDQUVqQmt0RCxnQkFTRitXLFFBQThCLENBQUNuWCxDQUFE
LENBQVVybEQsQ0FBVixDQUFnQixDQUM1Q3FsRCxDQUFBVCxNQUFBLENBQWdCNWtELENBRDRCLENB
WDNCLENBR2pCNmxELGVBQWdCdHRELENBSEMsQ0FJakJ3dEQsYUFBY3h0RCxDQUpHLENBS2pCNnRE
LFVBQVc3dEQsQ0FMTSxDQU1qQml1RCxhQUFjanVELENBTkcsQ0FPakJ1dUQsY0FBZXZ1RCxDQVBF
LENBeURuQjZyRCxHQUFBMXBDLFFBQUEsQ0FBeUIsQ0FBQyxVQUFELENBQWEsUUFBYixDQUF1QixR
QUF2QixDQUFpQyxVQUFqQyxDQUE2QyxjQUE3QyxDQXFZekIsS0FBSStoRCxHQUF1QkEsUUFBUSxD
QUFDQyxDQUFELENBQVcsQ0FDNUMsTUFBTyxDQUFDLFVBQUQsQ0FBYSxRQUFRLENBQUNyc0QsQ0FB
RCxDQUFXLENBZ0VyQyxNQS9Eb0J4SSxDQUNsQjdILEtBQU0sTUFEWTZILENBRWxCcWMsU0FBVXc0
QyxDQUFBLENBQVcsS0FBWCxDQUFtQixHQUZYNzBELENBR2xCNUUsV0FBWW1oRCxFQUhNdjhDLENB
SWxCM0csUUFBU3k3RCxRQUFzQixDQUFDQyxDQUFELENBQWNqakUsQ0FBZCxDQUFvQixDQUVqRGlq
RSxDQUFBOWtELFNBQUEsQ0FBcUJ3dUMsRUFBckIsQ0FBQXh1QyxTQUFBLENBQThDMnpDLEVBQTlD
LENBRUEsS0FBSW9SLEVBQVdsakUsQ0FBQXFHLEtBQUEsQ0FBWSxNQUFaLENBQXNCMDhELENBQUEs
RUFBWS9pRSxDQUFBMlAsT0FBWixDQUEwQixRQUExQjtBQUFxQyxDQUFBLENBRTFFLE9BQU8sQ0FD
TGtoQixJQUFLc3lDLFFBQXNCLENBQUM3N0QsQ0FBRCxDQUFRMjdELENBQVIsQ0FBcUJqakUsQ0FB
ckIsQ0FBMkJzSixDQUEzQixDQUF1QyxDQUVoRSxHQUFNLEVBQUEsUUFBQSxFQUFZdEosRUFBWixD
QUFOLENBQXlCLENBT3ZCLElBQUlvakUsRUFBdUJBLFFBQVEsQ0FBQ2xtRCxDQUFELENBQVEsQ0FD
ekM1VixDQUFBRSxPQUFBLENBQWEsUUFBUSxFQUFHLENBQ3RCOEIsQ0FBQXFpRCxpQkFBQSxFQUNB
cmlELEVBQUE2akQsY0FBQSxFQUZzQixDQUF4QixDQUtBandDLEVBQUF3d0IsZUFBQSxFQU55QyxD
QVN4QnUxQixFQUFBM2lFLENBQVksQ0FBWkEsQ0F4emlCM0IyaUMsaUJBQUEsQ0F3emlCMkNqcEIs
UUF4emlCM0MsQ0F3emlCcURvcEQsQ0F4emlCckQsQ0FBbUMsQ0FBQSxDQUFuQyxDQTR6aUJRSCxF
QUFBOTVELEdBQUEsQ0FBZSxVQUFmLENBQTJCLFFBQVEsRUFBRyxDQUNwQ3VOLENBQUEsQ0FBUyxR
QUFRLEVBQUcsQ0FDSXVzRCxDQUFBM2lFLENBQVksQ0FBWkEsQ0EzemlCbENnYSxvQkFBQSxDQTJ6
aUJrRE4sUUEzemlCbEQsQ0EyemlCNERvcEQsQ0EzemlCNUQsQ0FBc0MsQ0FBQSxDQUF0QyxDQTB6
aUI4QixDQUFwQixDQUVHLENBRkgsQ0FFTSxDQUFBLENBRk4sQ0FEb0MsQ0FBdEMsQ0FwQnVCLENB
MkJ6QixJQUFJQyxFQUFpQi81RCxDQUFBc2hELGFBRWpCc1ksRUFBSixHQUNFN3dCLEVBQUEsQ0FB
Ty9xQyxDQUFQLENBQWNnQyxDQUFBMmhELE1BQWQsQ0FBZ0MzaEQsQ0FBaEMsQ0FBNENBLENBQUEy
aEQsTUFBNUMsQ0FDQSxDQUFBanJELENBQUFnNUIsU0FBQSxDQUFja3FDLENBQWQsQ0FBd0IsUUFB
USxDQUFDeHJDLENBQUQsQ0FBVyxDQUNyQ3B1QixDQUFBMmhELE1BQUosR0FBeUJ2ekIsQ0FBekIs
R0FDQTJhLEVBQUEsQ0FBTy9xQyxDQUFQLENBQWNnQyxDQUFBMmhELE1BQWQsQ0FBZ0M1dkQsQ0FB
aEMsQ0FBMkNpTyxDQUFBMmhELE1BQTNDLENBRUEsQ0FEQW9ZLENBQUF2WCxnQkFBQSxDQUErQnhp
RCxDQUEvQixDQUEyQ291QixDQUEzQyxDQUNBLENBQUEyYSxFQUFBLENBQU8vcUMsQ0FBUCxDQUFj
Z0MsQ0FBQTJoRCxNQUFkLENBQWdDM2hELENBQWhDLENBQTRDQSxDQUFBMmhELE1BQTVDLENBSEEs
Q0FEeUMsQ0FBM0MsQ0FGRixDQVNBZ1ksRUFBQTk1RCxHQUFBLENBQWUsVUFBZixDQUEyQixRQUFR
LEVBQUcsQ0FDcENrNkQsQ0FBQW5YLGVBQUEsQ0FBOEI1aUQsQ0FBOUIsQ0FDSTQ1RCxFQUFKLEVB
Q0U3d0IsRUFBQSxDQUFPL3FDLENBQVAsQ0FBY3RILENBQUEsQ0FBS2tqRSxDQUFMLENBQWQsQ0FB
OEI3bkUsQ0FBOUI7QUFBeUNpTyxDQUFBMmhELE1BQXpDLENBRUZodEQsRUFBQSxDQUFPcUwsQ0FB
UCxDQUFtQnVoRCxFQUFuQixDQUxvQyxDQUF0QyxDQXhDZ0UsQ0FEN0QsQ0FOMEMsQ0FKakMzOEMs
Q0FEaUIsQ0FBaEMsQ0FEcUMsQ0FBOUMsQ0FxRUlBLEdBQWdCNDBELEVBQUEsRUFyRXBCLENBc0VJ
bHpELEdBQWtCa3pELEVBQUEsQ0FBcUIsQ0FBQSxDQUFyQixDQXRFdEIsQ0FrRkl2VSxHQUFrQiww
RUFsRnRCLENBbUZJK1UsR0FBYSxxRkFuRmpCLENBb0ZJQyxHQUFlLG1HQXBGbkIsQ0FxRklDLEdB
QWdCLG1EQXJGcEIsQ0FzRklDLEdBQWMsMkJBdEZsQixDQXVGSUMsR0FBdUIsK0RBdkYzQixDQXdG
SUMsR0FBYyxtQkF4RmxCLENBeUZJQyxHQUFlLGtCQXpGbkI7QUEwRklDLEdBQWMseUNBMUZsQixD
QTRGSUMsR0FBWSxDQWdHZCxLQTY1QkZDLFFBQXNCLENBQUN6OEQsQ0FBRCxDQUFRaEgsQ0FBUixD
QUFpQk4sQ0FBakIsQ0FBdUJzc0QsQ0FBdkIsQ0FBNkJwMkMsQ0FBN0IsQ0FBdUN4QyxDQUF2QyxD
QUFpRCxDQUNyRTg1QyxFQUFBLENBQWNsbUQsQ0FBZCxDQUFxQmhILENBQXJCLENBQThCTixDQUE5
QixDQUFvQ3NzRCxDQUFwQyxDQUEwQ3AyQyxDQUExQyxDQUFvRHhDLENBQXBELENBQ0EyNUMsR0FB
QSxDQUFxQmYsQ0FBckIsQ0FGcUUsQ0E3L0J2RCxDQStMZCxLQUFROEMsRUFBQSxDQUFvQixNQUFw
QixDQUE0QnFVLEVBQTVCLENBQ0RyVixFQUFBLENBQWlCcVYsRUFBakIsQ0FBOEIsQ0FBQyxNQUFE
LENBQVMsSUFBVCxDQUFlLElBQWYsQ0FBOUIsQ0FEQyxDQUVELFlBRkMsQ0EvTE0sQ0E4UmQsaUJB
QWtCclUsRUFBQSxDQUFvQixlQUFwQixDQUFxQ3NVLEVBQXJDLENBQ2R0VixFQUFBLENBQWlCc1Ys
RUFBakIsQ0FBdUMseUJBQUEsTUFBQSxDQUFBLEdBQUEsQ0FBdkMsQ0FEYyxDQUVkLHlCQUZjLENB
OVJKLENBOFhkLEtBQVF0VSxFQUFBLENBQW9CLE1BQXBCLENBQTRCeVUsRUFBNUIsQ0FDSnpWLEVB
QUEsQ0FBaUJ5VixFQUFqQixDQUE4QixDQUFDLElBQUQsQ0FBTyxJQUFQLENBQWEsSUFBYixDQUFt
QixLQUFuQixDQUE5QixDQURJLENBRUwsY0FGSyxDQTlYTSxDQStkZCxLQUFRelUsRUFBQSxDQUFv
QixNQUFwQixDQUE0QnVVLEVBQTVCLENBeW5CVkssUUFBbUIsQ0FBQ0MsQ0FBRCxDQUFVQyxDQUFW
LENBQXdCLENBQ3pDLEdBQUlwbUUsRUFBQSxDQUFPbW1FLENBQVAsQ0FBSixDQUNFLE1BQU9BLEVB
R1QsSUFBSW5vRSxDQUFBLENBQVNtb0UsQ0FBVCxDQUFKLENBQXVCLENBQ3JCTixFQUFBamlFLFVB
QUEsQ0FBd0IsQ0FDeEIsS0FBSTBELEVBQVF1K0QsRUFBQXJyRCxLQUFBLENBQWlCMnJELENBQWpC
LENBQ1osSUFBSTcrRCxDQUFKLENBQVcsQ0FBQSxJQUNMd2lELEVBQU8sQ0FBQ3hpRCxDQUFBLENB
QU0sQ0FBTixDQURILENBRUwrK0QsRUFBTyxDQUFDLytELENBQUEsQ0FBTSxDQUFOLENBRkgsQ0FJ
TGpCLEVBREFpZ0UsQ0FDQWpnRSxDQURRLENBSEgsQ0FLTGtnRSxFQUFVLENBTEwsQ0FNTEMsRUFB
ZSxDQU5WLENBT0x0YyxFQUFhTCxFQUFBLENBQXVCQyxDQUF2QixDQVBSLENBUUwyYyxFQUF1QixD
QUF2QkEsRUFBV0osQ0FBWEksQ0FBa0IsQ0FBbEJBLENBRUFMLEVBQUosR0FDRUUsQ0FHQSxDQUhR
RixDQUFBdFYsU0FBQSxFQUdSLENBRkF6cUQsQ0FFQTtBQUZVKy9ELENBQUFoZ0UsV0FBQSxFQUVW
LENBREFtZ0UsQ0FDQSxDQURVSCxDQUFBblYsV0FBQSxFQUNWLENBQUF1VixDQUFBLENBQWVKLENB
QUFqVixnQkFBQSxFQUpqQixDQU9BLE9BQU8sS0FBSWx4RCxJQUFKLENBQVM2cEQsQ0FBVCxDQUFl
LENBQWYsQ0FBa0JJLENBQUFJLFFBQUEsRUFBbEIsQ0FBeUNtYyxDQUF6QyxDQUFrREgsQ0FBbEQs
Q0FBeURqZ0UsQ0FBekQsQ0FBa0VrZ0UsQ0FBbEUsQ0FBMkVDLENBQTNFLENBakJFLENBSFUsQ0F3
QnZCLE1BQU9uVixJQTdCa0MsQ0F6bkJqQyxDQUFxRCxVQUFyRCxDQS9kTSxDQThqQmQsTUFBU0Ms
RUFBQSxDQUFvQixPQUFwQixDQUE2QndVLEVBQTdCLENBQ054VixFQUFBLENBQWlCd1YsRUFBakIs
Q0FBK0IsQ0FBQyxNQUFELENBQVMsSUFBVCxDQUEvQixDQURNLENBRU4sU0FGTSxDQTlqQkssQ0E2
cUJkLE9Bb2xCRlksUUFBd0IsQ0FBQ2w5RCxDQUFELENBQVFoSCxDQUFSLENBQWlCTixDQUFqQixD
QUF1QnNzRCxDQUF2QixDQUE2QnAyQyxDQUE3QixDQUF1Q3hDLENBQXZDLENBQWlELENBQ3ZFKzdD
LEVBQUEsQ0FBZ0Jub0QsQ0FBaEIsQ0FBdUJoSCxDQUF2QixDQUFnQ04sQ0FBaEMsQ0FBc0Nzc0Qs
Q0FBdEMsQ0FDQWtCLEdBQUEsQ0FBY2xtRCxDQUFkLENBQXFCaEgsQ0FBckIsQ0FBOEJOLENBQTlC
LENBQW9Dc3NELENBQXBDLENBQTBDcDJDLENBQTFDLENBQW9EeEMsQ0FBcEQsQ0FFQTQ0QyxFQUFB
c0QsYUFBQSxDQUFvQixRQUNwQnRELEVBQUF1RCxTQUFBeHVELEtBQUEsQ0FBbUIsUUFBUSxDQUFD
dEUsQ0FBRCxDQUFRLENBQ2pDLE1BQUl1dkQsRUFBQWlCLFNBQUEsQ0FBY3h3RCxDQUFkLENBQUos
Q0FBc0MsSUFBdEMsQ0FDSXltRSxFQUFBcGlFLEtBQUEsQ0FBbUJyRSxDQUFuQixDQUFKLENBQXND
K3BELFVBQUEsQ0FBVy9wRCxDQUFYLENBQXRDLENBQ08xQixDQUgwQixDQUFuQyxDQU1BaXhELEVB
QUFnQixZQUFBanNELEtBQUEsQ0FBc0IsUUFBUSxDQUFDdEUsQ0FBRCxDQUFRLENBQ3BDLEdBQUss
Q0FBQXV2RCxDQUFBaUIsU0FBQSxDQUFjeHdELENBQWQsQ0FBTCxDQUEyQixDQUN6QixHQUFLLENB
QUF1QyxDQUFBLENBQVN2QyxDQUFULENBQUwsQ0FDRSxLQUFNZ3pELEdBQUEsQ0FBZSxRQUFmLENB
QTBEaHpELENBQTFELENBQU4sQ0FFRkEsQ0FBQSxDQUFRQSxDQUFBa0MsU0FBQSxFQUppQixDQU0z
QixNQUFPbEMsRUFQNkIsQ0FBdEMsQ0FVQSxJQUFJcUMsQ0FBQSxDQUFVWSxDQUFBZ25ELElBQVYs
Q0FBSixFQUEyQmhuRCxDQUFBZ3dELE1BQTNCLENBQXVDLENBQ3JDLElBQUlDLENBQ0ozRCxFQUFB
NEQsWUFBQWxKLElBQUEsQ0FBdUJtSixRQUFRLENBQUNwekQsQ0FBRCxDQUFRLENBQ3JDLE1BQU91
dkQsRUFBQWlCLFNBQUEsQ0FBY3h3RCxDQUFkLENBQVA7QUFBK0JvQyxDQUFBLENBQVk4d0QsQ0FB
WixDQUEvQixFQUFzRGx6RCxDQUF0RCxFQUErRGt6RCxDQUQxQixDQUl2Q2p3RCxFQUFBZzVCLFNB
QUEsQ0FBYyxLQUFkLENBQXFCLFFBQVEsQ0FBQ2oyQixDQUFELENBQU0sQ0FDN0IzRCxDQUFBLENB
QVUyRCxDQUFWLENBQUosRUFBdUIsQ0FBQXpELENBQUEsQ0FBU3lELENBQVQsQ0FBdkIsR0FDRUEs
Q0FERixDQUNRK2pELFVBQUEsQ0FBVy9qRCxDQUFYLENBQWdCLEVBQWhCLENBRFIsQ0FHQWt0RCxF
QUFBLENBQVMzd0QsQ0FBQSxDQUFTeUQsQ0FBVCxDQUFBLEVBQWtCLENBQUFZLEtBQUEsQ0FBTVos
Q0FBTixDQUFsQixDQUErQkEsQ0FBL0IsQ0FBcUMxSCxDQUU5Q2l4RCxFQUFBOEQsVUFBQSxFQU5p
QyxDQUFuQyxDQU5xQyxDQWdCdkMsR0FBSWh4RCxDQUFBLENBQVVZLENBQUF5MEIsSUFBVixDQUFK
LEVBQTJCejBCLENBQUFxd0QsTUFBM0IsQ0FBdUMsQ0FDckMsSUFBSUMsQ0FDSmhFLEVBQUE0RCxZ
QUFBejdCLElBQUEsQ0FBdUI4N0IsUUFBUSxDQUFDeHpELENBQUQsQ0FBUSxDQUNyQyxNQUFPdXZE
LEVBQUFpQixTQUFBLENBQWN4d0QsQ0FBZCxDQUFQLEVBQStCb0MsQ0FBQSxDQUFZbXhELENBQVos
Q0FBL0IsRUFBc0R2ekQsQ0FBdEQsRUFBK0R1ekQsQ0FEMUIsQ0FJdkN0d0QsRUFBQWc1QixTQUFB
LENBQWMsS0FBZCxDQUFxQixRQUFRLENBQUNqMkIsQ0FBRCxDQUFNLENBQzdCM0QsQ0FBQSxDQUFV
MkQsQ0FBVixDQUFKLEVBQXVCLENBQUF6RCxDQUFBLENBQVN5RCxDQUFULENBQXZCLEdBQ0VBLENB
REYsQ0FDUStqRCxVQUFBLENBQVcvakQsQ0FBWCxDQUFnQixFQUFoQixDQURSLENBR0F1dEQsRUFB
QSxDQUFTaHhELENBQUEsQ0FBU3lELENBQVQsQ0FBQSxFQUFrQixDQUFBWSxLQUFBLENBQU1aLENB
QU4sQ0FBbEIsQ0FBK0JBLENBQS9CLENBQXFDMUgsQ0FFOUNpeEQsRUFBQThELFVBQUEsRUFOaUMs
Q0FBbkMsQ0FOcUMsQ0FyQ2dDLENBandDekQsQ0FneEJkLElBdWlCRnFVLFFBQXFCLENBQUNuOUQs
Q0FBRCxDQUFRaEgsQ0FBUixDQUFpQk4sQ0FBakIsQ0FBdUJzc0QsQ0FBdkIsQ0FBNkJwMkMsQ0FB
N0IsQ0FBdUN4QyxDQUF2QyxDQUFpRCxDQUdwRTg1QyxFQUFBLENBQWNsbUQsQ0FBZCxDQUFxQmhI
LENBQXJCLENBQThCTixDQUE5QixDQUFvQ3NzRCxDQUFwQyxDQUEwQ3AyQyxDQUExQyxDQUFvRHhD
LENBQXBELENBQ0EyNUMsR0FBQSxDQUFxQmYsQ0FBckIsQ0FFQUEsRUFBQXNELGFBQUEsQ0FBb0Is
S0FDcEJ0RCxFQUFBNEQsWUFBQXRyQyxJQUFBLENBQXVCOC9DLFFBQVEsQ0FBQ0MsQ0FBRCxDQUFh
QyxDQUFiLENBQXdCLENBQ3JELElBQUk3bkUsRUFBUTRuRSxDQUFSNW5FLEVBQXNCNm5FLENBQzFC
LE9BQU90WSxFQUFBaUIsU0FBQSxDQUFjeHdELENBQWQsQ0FBUCxFQUErQnVtRSxFQUFBbGlFLEtB
QUEsQ0FBZ0JyRSxDQUFoQixDQUZzQixDQVBhLENBdnpDdEQsQ0FrM0JkLE1Ba2RGOG5FLFFBQXVC
LENBQUN2OUQsQ0FBRCxDQUFRaEgsQ0FBUixDQUFpQk4sQ0FBakIsQ0FBdUJzc0QsQ0FBdkIsQ0FB
NkJwMkMsQ0FBN0IsQ0FBdUN4QyxDQUF2QyxDQUFpRCxDQUd0RTg1QyxFQUFBLENBQWNsbUQsQ0FB
ZCxDQUFxQmhILENBQXJCLENBQThCTixDQUE5QixDQUFvQ3NzRCxDQUFwQyxDQUEwQ3AyQyxDQUEx
QyxDQUFvRHhDLENBQXBELENBQ0EyNUMsR0FBQSxDQUFxQmYsQ0FBckIsQ0FFQUE7Q0FBQXNELGFB
QUEsQ0FBb0IsT0FDcEJ0RCxFQUFBNEQsWUFBQTRVLE1BQUEsQ0FBeUJDLFFBQVEsQ0FBQ0osQ0FB
RCxDQUFhQyxDQUFiLENBQXdCLENBQ3ZELElBQUk3bkUsRUFBUTRuRSxDQUFSNW5FLEVBQXNCNm5F
LENBQzFCLE9BQU90WSxFQUFBaUIsU0FBQSxDQUFjeHdELENBQWQsQ0FBUCxFQUErQndtRSxFQUFB
bmlFLEtBQUEsQ0FBa0JyRSxDQUFsQixDQUZ3QixDQVBhLENBcDBDeEQsQ0FvN0JkLE1BNlpGaW9F
LFFBQXVCLENBQUMxOUQsQ0FBRCxDQUFRaEgsQ0FBUixDQUFpQk4sQ0FBakIsQ0FBdUJzc0QsQ0FB
dkIsQ0FBNkIsQ0FFOUNudEQsQ0FBQSxDQUFZYSxDQUFBcUcsS0FBWixDQUFKLEVBQ0UvRixDQUFB
TixLQUFBLENBQWEsTUFBYixDQXQzcEJLLEVBQUUvQyxFQXMzcEJQLENBU0ZxRCxFQUFBNkksR0FB
QSxDQUFXLE9BQVgsQ0FOZTRiLFFBQVEsQ0FBQzJvQyxDQUFELENBQUssQ0FDdEJwdEQsQ0FBQSxD
QUFRLENBQVIsQ0FBQTJrRSxRQUFKLEVBQ0UzWSxDQUFBd0IsY0FBQSxDQUFtQjl0RCxDQUFBakQs
TUFBbkIsQ0FBK0Iyd0QsQ0FBL0IsRUFBcUNBLENBQUExekMsS0FBckMsQ0FGd0IsQ0FNNUIsQ0FF
QXN5QyxFQUFBNEIsUUFBQSxDQUFlQyxRQUFRLEVBQUcsQ0FFeEI3dEQsQ0FBQSxDQUFRLENBQVIs
Q0FBQTJrRSxRQUFBLENBRFlqbEUsQ0FBQWpELE1BQ1osRUFBK0J1dkQsQ0FBQXNCLFdBRlAsQ0FL
MUI1dEQsRUFBQWc1QixTQUFBLENBQWMsT0FBZCxDQUF1QnN6QixDQUFBNEIsUUFBdkIsQ0FuQmtE
LENBajFDcEMsQ0E4K0JkLFNBc1lGZ1gsUUFBMEIsQ0FBQzU5RCxDQUFELENBQVFoSCxDQUFSLENB
QWlCTixDQUFqQixDQUF1QnNzRCxDQUF2QixDQUE2QnAyQyxDQUE3QixDQUF1Q3hDLENBQXZDLENB
QWlEVSxDQUFqRCxDQUEwRGtCLENBQTFELENBQWtFLENBQzFGLElBQUk2dkQsRUFBWXZVLEVBQUEs
Q0FBa0J0N0MsQ0FBbEIsQ0FBMEJoTyxDQUExQixDQUFpQyxhQUFqQyxDQUFnRHRILENBQUFvbEUs
WUFBaEQsQ0FBa0UsQ0FBQSxDQUFsRSxDQUFoQixDQUNJQyxFQUFhelUsRUFBQSxDQUFrQnQ3QyxD
QUFsQixDQUEwQmhPLENBQTFCLENBQWlDLGNBQWpDLENBQWlEdEgsQ0FBQXNsRSxhQUFqRCxDQUFv
RSxDQUFBLENBQXBFLENBTWpCaGxFLEVBQUE2SSxHQUFBLENBQVcsT0FBWCxDQUplNGIsUUFBUSxD
QUFDMm9DLENBQUQsQ0FBSyxDQUMxQnBCLENBQUF3QixjQUFBLENBQW1CeHRELENBQUEsQ0FBUSxD
QUFSLENBQUEya0UsUUFBbkIsQ0FBdUN2WCxDQUF2QztBQUE2Q0EsQ0FBQTF6QyxLQUE3QyxDQUQw
QixDQUk1QixDQUVBc3lDLEVBQUE0QixRQUFBLENBQWVDLFFBQVEsRUFBRyxDQUN4Qjd0RCxDQUFB
LENBQVEsQ0FBUixDQUFBMmtFLFFBQUEsQ0FBcUIzWSxDQUFBc0IsV0FERyxDQU8xQnRCLEVBQUFp
QixTQUFBLENBQWdCZ1ksUUFBUSxDQUFDeG9FLENBQUQsQ0FBUSxDQUM5QixNQUFpQixDQUFBLENB
QWpCLEdBQU9BLENBRHVCLENBSWhDdXZELEVBQUFnQixZQUFBanNELEtBQUEsQ0FBc0IsUUFBUSxD
QUFDdEUsQ0FBRCxDQUFRLENBQ3BDLE1BQU8rRSxHQUFBLENBQU8vRSxDQUFQLENBQWNvb0UsQ0FB
ZCxDQUQ2QixDQUF0QyxDQUlBN1ksRUFBQXVELFNBQUF4dUQsS0FBQSxDQUFtQixRQUFRLENBQUN0
RSxDQUFELENBQVEsQ0FDakMsTUFBT0EsRUFBQSxDQUFRb29FLENBQVIsQ0FBb0JFLENBRE0sQ0FB
bkMsQ0F6QjBGLENBcDNDNUUsQ0FnL0JkLE9BQVV6bUUsQ0FoL0JJLENBaS9CZCxPQUFVQSxDQWov
QkksQ0FrL0JkLE9BQVVBLENBbC9CSSxDQW0vQmQsTUFBU0EsQ0FuL0JLLENBby9CZCxLQUFRQSxD
QXAvQk0sQ0E1RmhCLENBNHBESW1QLEdBQWlCLENBQUMsVUFBRCxDQUFhLFVBQWIsQ0FBeUIsU0FB
ekIsQ0FBb0MsUUFBcEMsQ0FDakIsUUFBUSxDQUFDMkYsQ0FBRCxDQUFXd0MsQ0FBWCxDQUFxQjlC
LENBQXJCLENBQThCa0IsQ0FBOUIsQ0FBc0MsQ0FDaEQsTUFBTyxDQUNMaVYsU0FBVSxHQURMLENB
RUxELFFBQVMsQ0FBQyxVQUFELENBRkosQ0FHTDdDLEtBQU0sQ0FDSm9KLElBQUtBLFFBQVEsQ0FB
Q3ZwQixDQUFELENBQVFoSCxDQUFSLENBQWlCTixDQUFqQixDQUF1QndsRSxDQUF2QixDQUE4QixD
QUNyQ0EsQ0FBQSxDQUFNLENBQU4sQ0FBSixFQUNFLENBQUMxQixFQUFBLENBQVV2akUsQ0FBQSxD
QUFVUCxDQUFBZ2EsS0FBVixDQUFWLENBQUQsRUFBb0M4cEQsRUFBQXh0QyxLQUFwQyxFQUFvRGh2
QixDQUFwRCxDQUEyRGhILENBQTNELENBQW9FTixDQUFwRSxDQUEwRXdsRSxDQUFBLENBQU0sQ0FB
TixDQUExRSxDQUFvRnR2RCxDQUFwRixDQUNvRHhDLENBRHBELENBQzhEVSxDQUQ5RCxDQUN1RWtC
LENBRHZFLENBRnVDLENBRHZDLENBSEQsQ0FEeUMsQ0FEN0IsQ0E1cERyQixDQThxREltd0QsR0FB
d0Isb0JBOXFENUIsQ0F3dURJN3lELEdBQW1CQSxRQUFRLEVBQUcsQ0FDaEMsTUFBTyxDQUNMMlgs
U0FBVSxHQURMLENBRUxGLFNBQVUsR0FGTCxDQUdMOWlCLFFBQVNBLFFBQVEsQ0FBQ3c2QyxDQUFE
O0FBQU0yakIsQ0FBTixDQUFlLENBQzlCLE1BQUlELEdBQUFya0UsS0FBQSxDQUEyQnNrRSxDQUFB
L3lELFFBQTNCLENBQUosQ0FDU2d6RCxRQUE0QixDQUFDcitELENBQUQsQ0FBUTJiLENBQVIsQ0FB
YWpqQixDQUFiLENBQW1CLENBQ3BEQSxDQUFBZzFCLEtBQUEsQ0FBVSxPQUFWLENBQW1CMXRCLENB
QUE2MUMsTUFBQSxDQUFZbjlDLENBQUEyUyxRQUFaLENBQW5CLENBRG9ELENBRHhELENBS1NpekQs
UUFBb0IsQ0FBQ3QrRCxDQUFELENBQVEyYixDQUFSLENBQWFqakIsQ0FBYixDQUFtQixDQUM1Q3NI
LENBQUE1SCxPQUFBLENBQWFNLENBQUEyUyxRQUFiLENBQTJCa3pELFFBQXlCLENBQUM5b0UsQ0FB
RCxDQUFRLENBQzFEaUQsQ0FBQWcxQixLQUFBLENBQVUsT0FBVixDQUFtQmo0QixDQUFuQixDQUQw
RCxDQUE1RCxDQUQ0QyxDQU5sQixDQUgzQixDQUR5QixDQXh1RGxDLENBK3lESTZSLEdBQWtCLENB
QUMsVUFBRCxDQUFhLFFBQVEsQ0FBQ2szRCxDQUFELENBQVcsQ0FDcEQsTUFBTyxDQUNMdjdDLFNB
QVUsSUFETCxDQUVMaGpCLFFBQVN3K0QsUUFBc0IsQ0FBQ0MsQ0FBRCxDQUFrQixDQUMvQ0YsQ0FB
QWx2QyxrQkFBQSxDQUEyQm92QyxDQUEzQixDQUNBLE9BQU9DLFNBQW1CLENBQUMzK0QsQ0FBRCxD
QUFRaEgsQ0FBUixDQUFpQk4sQ0FBakIsQ0FBdUIsQ0FDL0M4bEUsQ0FBQWh2QyxpQkFBQSxDQUEw
QngyQixDQUExQixDQUFtQ04sQ0FBQTJPLE9BQW5DLENBQ0FyTyxFQUFBLENBQVVBLENBQUEsQ0FB
USxDQUFSLENBQ1ZnSCxFQUFBNUgsT0FBQSxDQUFhTSxDQUFBMk8sT0FBYixDQUEwQnUzRCxRQUEw
QixDQUFDbnBFLENBQUQsQ0FBUSxDQUMxRHVELENBQUF5WSxZQUFBLENBQXNCaGMsQ0FBQSxHQUFV
MUIsQ0FBVixDQUFzQixFQUF0QixDQUEyQjBCLENBRFMsQ0FBNUQsQ0FIK0MsQ0FGRixDQUY1QyxD
QUQ2QyxDQUFoQyxDQS95RHRCLENBbTNESWlTLEdBQTBCLENBQUMsY0FBRCxDQUFpQixVQUFqQixD
QUE2QixRQUFRLENBQUNzRixDQUFELENBQWV3eEQsQ0FBZixDQUF5QixDQUMxRixNQUFPLENBQ0x2
K0QsUUFBUzQrRCxRQUE4QixDQUFDSCxDQUFELENBQWtCLENBQ3ZERixDQUFBbHZDLGtCQUFBLENB
QTJCb3ZDLENBQTNCLENBQ0EsT0FBT0ksU0FBMkIsQ0FBQzkrRCxDQUFELENBQVFoSCxDQUFSLENB
QWlCTixDQUFqQixDQUF1QixDQUNuRHUyQixDQUFBQSxDQUFnQmppQixDQUFBLENBQWFoVSxDQUFB
TixLQUFBLENBQWFBLENBQUE0dUIsTUFBQTdmLGVBQWIsQ0FBYixDQUNwQisyRDtDQUFBaHZDLGlC
QUFBLENBQTBCeDJCLENBQTFCLENBQW1DaTJCLENBQUFRLFlBQW5DLENBQ0F6MkIsRUFBQSxDQUFV
QSxDQUFBLENBQVEsQ0FBUixDQUNWTixFQUFBZzVCLFNBQUEsQ0FBYyxnQkFBZCxDQUFnQyxRQUFR
LENBQUNqOEIsQ0FBRCxDQUFRLENBQzlDdUQsQ0FBQXlZLFlBQUEsQ0FBc0JoYyxDQUFBLEdBQVUx
QixDQUFWLENBQXNCLEVBQXRCLENBQTJCMEIsQ0FESCxDQUFoRCxDQUp1RCxDQUZGLENBRHBELENB
RG1GLENBQTlELENBbjNEOUIsQ0FtN0RJK1IsR0FBc0IsQ0FBQyxNQUFELENBQVMsUUFBVCxDQUFt
QixVQUFuQixDQUErQixRQUFRLENBQUNnSCxDQUFELENBQU9SLENBQVAsQ0FBZXd3RCxDQUFmLENB
QXlCLENBQ3hGLE1BQU8sQ0FDTHY3QyxTQUFVLEdBREwsQ0FFTGhqQixRQUFTOCtELFFBQTBCLENB
QUNDLENBQUQsQ0FBV3J4QyxDQUFYLENBQW1CLENBQ3BELElBQUlzeEMsRUFBbUJqeEQsQ0FBQSxD
QUFPMmYsQ0FBQXBtQixXQUFQLENBQXZCLENBQ0kyM0QsRUFBa0JseEQsQ0FBQSxDQUFPMmYsQ0FB
QXBtQixXQUFQLENBQTBCNDNELFFBQXVCLENBQUMxcEUsQ0FBRCxDQUFRLENBQzdFLE1BQU9rQyxD
QUFDbEMsQ0FBRGtDLEVBQVUsRUFBVkEsVUFBQSxFQURzRSxDQUF6RCxDQUd0QjZtRSxFQUFBbHZD
LGtCQUFBLENBQTJCMHZDLENBQTNCLENBRUEsT0FBT0ksU0FBdUIsQ0FBQ3AvRCxDQUFELENBQVFo
SCxDQUFSLENBQWlCTixDQUFqQixDQUF1QixDQUNuRDhsRSxDQUFBaHZDLGlCQUFBLENBQTBCeDJC
LENBQTFCLENBQW1DTixDQUFBNk8sV0FBbkMsQ0FFQXZILEVBQUE1SCxPQUFBLENBQWE4bUUsQ0FB
YixDQUE4QkcsUUFBOEIsRUFBRyxDQUc3RHJtRSxDQUFBcUUsS0FBQSxDQUFhbVIsQ0FBQTh3RCxl
QUFBLENBQW9CTCxDQUFBLENBQWlCai9ELENBQWpCLENBQXBCLENBQWIsRUFBNkQsRUFBN0QsQ0FI
NkQsQ0FBL0QsQ0FIbUQsQ0FQRCxDQUZqRCxDQURpRixDQUFoRSxDQW43RDFCLENBNmdFSXdLLEdB
QW9CL1MsRUFBQSxDQUFRLENBQzlCd3JCLFNBQVUsR0FEb0IsQ0FFOUJELFFBQVMsU0FGcUIsQ0FH
OUI3QyxLQUFNQSxRQUFRLENBQUNuZ0IsQ0FBRCxDQUFRaEgsQ0FBUixDQUFpQk4sQ0FBakIsQ0FB
dUJzc0QsQ0FBdkIsQ0FBNkIsQ0FDekNBLENBQUF1YSxxQkFBQXhsRSxLQUFBLENBQStCLFFBQVEs
RUFBRyxDQUN4Q2lHLENBQUE2MUMsTUFBQSxDQUFZbjlDLENBQUE2UixTQUFaLENBRHdDLENBQTFD
LENBRHlDLENBSGIsQ0FBUixDQTdnRXhCO0FBZzBFSTNDLEdBQW1CNGhELEVBQUEsQ0FBZSxFQUFm
LENBQW1CLENBQUEsQ0FBbkIsQ0FoMEV2QixDQWczRUl4aEQsR0FBc0J3aEQsRUFBQSxDQUFlLEtB
QWYsQ0FBc0IsQ0FBdEIsQ0FoM0UxQixDQWc2RUkxaEQsR0FBdUIwaEQsRUFBQSxDQUFlLE1BQWYs
Q0FBdUIsQ0FBdkIsQ0FoNkUzQixDQXM5RUl0aEQsR0FBbUJnN0MsRUFBQSxDQUFZLENBQ2pDampE
LFFBQVNBLFFBQVEsQ0FBQ2pILENBQUQsQ0FBVU4sQ0FBVixDQUFnQixDQUMvQkEsQ0FBQWcxQixL
QUFBLENBQVUsU0FBVixDQUFxQjM1QixDQUFyQixDQUNBaUYsRUFBQThkLFlBQUEsQ0FBb0IsVUFB
cEIsQ0FGK0IsQ0FEQSxDQUFaLENBdDlFdkIsQ0ErckZJMU8sR0FBd0IsQ0FBQyxRQUFRLEVBQUcs
Q0FDdEMsTUFBTyxDQUNMNmEsU0FBVSxHQURMLENBRUxqakIsTUFBTyxDQUFBLENBRkYsQ0FHTGdD
LFdBQVksR0FIUCxDQUlMK2dCLFNBQVUsR0FKTCxDQUQrQixDQUFaLENBL3JGNUIsQ0F5NUZJcFgs
R0FBb0IsRUF6NUZ4QixDQTg1Rkk2ekQsR0FBbUIsQ0FDckIsS0FBUSxDQUFBLENBRGEsQ0FFckIs
TUFBUyxDQUFBLENBRlksQ0FJdkI5cUUsRUFBQSxDQUNFLDZJQUFBLE1BQUEsQ0FBQSxHQUFBLENB
REYsQ0FFRSxRQUFRLENBQUN1aEQsQ0FBRCxDQUFZLENBQ2xCLElBQUl6MEIsRUFBZ0JnRyxFQUFB
LENBQW1CLEtBQW5CLENBQTJCeXVCLENBQTNCLENBQ3BCdHFDLEdBQUEsQ0FBa0I2VixDQUFsQixD
QUFBLENBQW1DLENBQUMsUUFBRCxDQUFXLFlBQVgsQ0FBeUIsUUFBUSxDQUFDeFQsQ0FBRCxDQUFT
RSxDQUFULENBQXFCLENBQ3ZGLE1BQU8sQ0FDTCtVLFNBQVUsR0FETCxDQUVMaGpCLFFBQVNBLFFB
QVEsQ0FBQzhqQixDQUFELENBQVdyckIsQ0FBWCxDQUFpQixDQUtoQyxJQUFJMEM7QUFBSzRTLENB
QUEsQ0FBT3RWLENBQUEsQ0FBSzhvQixDQUFMLENBQVAsQ0FBZ0QsSUFBaEQsQ0FBNEUsQ0FBQSxD
QUE1RSxDQUNULE9BQU9pK0MsU0FBdUIsQ0FBQ3ovRCxDQUFELENBQVFoSCxDQUFSLENBQWlCLENB
QzdDQSxDQUFBNkksR0FBQSxDQUFXbzBDLENBQVgsQ0FBc0IsUUFBUSxDQUFDcmdDLENBQUQsQ0FB
USxDQUNwQyxJQUFJc0ksRUFBV0EsUUFBUSxFQUFHLENBQ3hCOWlCLENBQUEsQ0FBRzRFLENBQUgs
Q0FBVSxDQUFDc3lDLE9BQU8xOEIsQ0FBUixDQUFWLENBRHdCLENBR3RCNHBELEdBQUEsQ0FBaUJ2
cEIsQ0FBakIsQ0FBSixFQUFtQy9uQyxDQUFBNnJCLFFBQW5DLENBQ0UvNUIsQ0FBQTdILFdBQUEs
Q0FBaUIrbEIsQ0FBakIsQ0FERixDQUdFbGUsQ0FBQUUsT0FBQSxDQUFhZ2UsQ0FBYixDQVBrQyxD
QUF0QyxDQUQ2QyxDQU5mLENBRjdCLENBRGdGLENBQXRELENBRmpCLENBRnRCLENBb2dCQSxLQUFJ
eFYsR0FBZ0IsQ0FBQyxVQUFELENBQWEsUUFBUSxDQUFDb0QsQ0FBRCxDQUFXLENBQ2xELE1BQU8s
Q0FDTHloQixhQUFjLENBQUEsQ0FEVCxDQUVMbEgsV0FBWSxTQUZQLENBR0x0RCxTQUFVLEdBSEws
Q0FJTDhELFNBQVUsQ0FBQSxDQUpMLENBS0w1RCxTQUFVLEdBTEwsQ0FNTG1KLE1BQU8sQ0FBQSxD
QU5GLENBT0xqTSxLQUFNQSxRQUFRLENBQUNpSyxDQUFELENBQVNyRyxDQUFULENBQW1CdUQsQ0FB
bkIsQ0FBMEIwOUIsQ0FBMUIsQ0FBZ0MxNkIsQ0FBaEMsQ0FBNkMsQ0FBQSxJQUNuRDVrQixDQURt
RCxDQUM1QzhmLENBRDRDLENBQ2hDazZDLENBQ3ZCdDFDLEVBQUFoeUIsT0FBQSxDQUFja3ZCLENB
QUE3ZSxLQUFkLENBQTBCazNELFFBQXdCLENBQUNscUUsQ0FBRCxDQUFRLENBRXBEQSxDQUFKLENB
Q08rdkIsQ0FEUCxFQUVJOEUsQ0FBQSxDQUFZLFFBQVEsQ0FBQ3R0QixDQUFELENBQVFvMEIsQ0FB
UixDQUFrQixDQUNwQzVMLENBQUEsQ0FBYTRMLENBQ2JwMEIsRUFBQSxDQUFNQSxDQUFBNUksT0FB
QSxFQUFOLENBQUEsQ0FBd0JOLENBQUF1NEIsY0FBQSxDQUF1QixhQUF2QixDQUF1Qy9FLENBQUE3
ZSxLQUF2QyxDQUFvRCxHQUFwRCxDQUl4Qi9DLEVBQUEsQ0FBUSxDQUNOMUksTUFBT0EsQ0FERCxD
QUdSOE8sRUFBQW9sRCxNQUFBLENBQWVsMEQsQ0FBZixDQUFzQittQixDQUFBNXNCLE9BQUEsRUFB
dEIsQ0FBeUM0c0IsQ0FBekMsQ0FUb0MsQ0FBdEMsQ0FGSixFQWVNMjdDLENBUUosR0FQRUEsQ0FB
QTErQyxPQUFBLEVBQ0EsQ0FBQTArQyxDQUFBLENBQW1CLElBTXJCLEVBSklsNkMsQ0FJSixHQUhF
QSxDQUFBL2lCLFNBQUEsRUFDQSxDQUFBK2lCLENBQUEsQ0FBYSxJQUVmLEVBQUk5ZixDQUFKLEdB
Q0VnNkQsQ0FJQTtBQUptQm44RCxFQUFBLENBQWNtQyxDQUFBMUksTUFBZCxDQUluQixDQUhBOE8s
Q0FBQXNsRCxNQUFBLENBQWVzTyxDQUFmLENBQUF4eEMsS0FBQSxDQUFzQyxRQUFRLEVBQUcsQ0FD
L0N3eEMsQ0FBQSxDQUFtQixJQUQ0QixDQUFqRCxDQUdBLENBQUFoNkQsQ0FBQSxDQUFRLElBTFYs
Q0F2QkYsQ0FGd0QsQ0FBMUQsQ0FGdUQsQ0FQdEQsQ0FEMkMsQ0FBaEMsQ0FBcEIsQ0FrT0lrRCxH
QUFxQixDQUFDLGtCQUFELENBQXFCLGVBQXJCLENBQXNDLFVBQXRDLENBQ1AsUUFBUSxDQUFDb0cs
Q0FBRCxDQUFxQnBELENBQXJCLENBQXNDRSxDQUF0QyxDQUFnRCxDQUN4RSxNQUFPLENBQ0xtWCxT
QUFVLEtBREwsQ0FFTEYsU0FBVSxHQUZMLENBR0w4RCxTQUFVLENBQUEsQ0FITCxDQUlMUixXQUFZ
LFNBSlAsQ0FLTHJrQixXQUFZMUIsRUFBQWhKLEtBTFAsQ0FNTDJJLFFBQVNBLFFBQVEsQ0FBQ2pI
LENBQUQsQ0FBVU4sQ0FBVixDQUFnQixDQUFBLElBQzNCa25FLEVBQVNsbkUsQ0FBQWlRLFVBQVRp
M0QsRUFBMkJsbkUsQ0FBQW5DLElBREEsQ0FFM0JzcEUsRUFBWW5uRSxDQUFBeWpDLE9BQVowakMs
RUFBMkIsRUFGQSxDQUczQkMsRUFBZ0JwbkUsQ0FBQXFuRSxXQUVwQixPQUFPLFNBQVEsQ0FBQy8v
RCxDQUFELENBQVErakIsQ0FBUixDQUFrQnVELENBQWxCLENBQXlCMDlCLENBQXpCLENBQStCMTZC
LENBQS9CLENBQTRDLENBQUEsSUFDckQwMUMsRUFBZ0IsQ0FEcUMsQ0FFckR6dEIsQ0FGcUQsQ0FH
ckQwdEIsQ0FIcUQsQ0FJckRDLENBSnFELENBTXJEQyxFQUE0QkEsUUFBUSxFQUFHLENBQ3JDRixD
QUFKLEdBQ0VBLENBQUFqL0MsT0FBQSxFQUNBLENBQUFpL0MsQ0FBQSxDQUFrQixJQUZwQixDQUlJ
MXRCLEVBQUosR0FDRUEsQ0FBQTl2QyxTQUFBLEVBQ0EsQ0FBQTh2QyxDQUFBLENBQWUsSUFGakIs
Q0FJSTJ0QixFQUFKLEdBQ0VwMEQsQ0FBQXNsRCxNQUFBLENBQWU4TyxDQUFmLENBQUFoeUMsS0FB
QSxDQUFvQyxRQUFRLEVBQUcsQ0FDN0MreEMsQ0FBQSxDQUFrQixJQUQyQixDQUEvQyxDQUlBLENB
REFBLENBQ0EsQ0FEa0JDLENBQ2xCLENBQUFBLENBQUEsQ0FBaUIsSUFMbkIsQ0FUeUMsQ0FrQjND
bGdFLEVBQUE1SCxPQUFBLENBQWF3bkUsQ0FBYixDQUFxQlEsUUFBNkIsQ0FBQzdwRSxDQUFELENB
QU0sQ0FDdEQsSUFBSThwRSxFQUFpQkEsUUFBUSxFQUFHLENBQzFCLENBQUF2b0UsQ0FBQSxDQUFV
Z29FLENBQVYsQ0FBSixFQUFrQ0EsQ0FBbEMsRUFBbUQsQ0FBQTkvRCxDQUFBNjFDLE1BQUEsQ0FB
WWlxQixDQUFaLENBQW5EO0FBQ0VsMEQsQ0FBQSxFQUY0QixDQUFoQyxDQUtJMDBELEVBQWUsRUFB
RU4sQ0FFakJ6cEUsRUFBSixFQUdFeVksQ0FBQSxDQUFpQnpZLENBQWpCLENBQXNCLENBQUEsQ0FB
dEIsQ0FBQTIzQixLQUFBLENBQWlDLFFBQVEsQ0FBQ3dKLENBQUQsQ0FBVyxDQUNsRCxHQUFJNG9D
LENBQUosR0FBcUJOLENBQXJCLENBQUEsQ0FDQSxJQUFJNXVDLEVBQVdweEIsQ0FBQWdtQixLQUFB
LEVBQ2ZnL0IsRUFBQXo1QixTQUFBLENBQWdCbU0sQ0FRWjE2QixFQUFBQSxDQUFRc3RCLENBQUEs
Q0FBWThHLENBQVosQ0FBc0IsUUFBUSxDQUFDcDBCLENBQUQsQ0FBUSxDQUNoRG1qRSxDQUFBLEVB
Q0FyMEQsRUFBQW9sRCxNQUFBLENBQWVsMEQsQ0FBZixDQUFzQixJQUF0QixDQUE0QittQixDQUE1
QixDQUFBbUssS0FBQSxDQUEyQ215QyxDQUEzQyxDQUZnRCxDQUF0QyxDQUtaOXRCLEVBQUEsQ0FB
ZW5oQixDQUNmOHVDLEVBQUEsQ0FBaUJsakUsQ0FFakJ1MUMsRUFBQStELE1BQUEsQ0FBbUIsdUJB
QW5CLENBQTRDLy9DLENBQTVDLENBQ0F5SixFQUFBNjFDLE1BQUEsQ0FBWWdxQixDQUFaLENBbkJB
LENBRGtELENBQXBELENBcUJHLFFBQVEsRUFBRyxDQUNSUyxDQUFKLEdBQXFCTixDQUFyQixHQUNF
RyxDQUFBLEVBQ0EsQ0FBQW5nRSxDQUFBczJDLE1BQUEsQ0FBWSxzQkFBWixDQUFvQy8vQyxDQUFw
QyxDQUZGLENBRFksQ0FyQmQsQ0EyQkEsQ0FBQXlKLENBQUFzMkMsTUFBQSxDQUFZLDBCQUFaLENB
QXdDLy9DLENBQXhDLENBOUJGLEdBZ0NFNHBFLENBQUEsRUFDQSxDQUFBbmIsQ0FBQXo1QixTQUFB
LENBQWdCLElBakNsQixDQVJzRCxDQUF4RCxDQXhCeUQsQ0FMNUIsQ0FONUIsQ0FEaUUsQ0FEakQs
Q0FsT3pCLENBNlRJOWYsR0FBZ0MsQ0FBQyxVQUFELENBQ2xDLFFBQVEsQ0FBQyt5RCxDQUFELENB
QVcsQ0FDakIsTUFBTyxDQUNMdjdDLFNBQVUsS0FETCxDQUVMRixTQUFXLElBRk4sQ0FHTEMsUUFB
UyxXQUhKLENBSUw3QyxLQUFNQSxRQUFRLENBQUNuZ0IsQ0FBRCxDQUFRK2pCLENBQVIsQ0FBa0J1
RCxDQUFsQixDQUF5QjA5QixDQUF6QixDQUErQixDQUN2QyxLQUFBbHJELEtBQUEsQ0FBV2lxQixD
QUFBLENBQVMsQ0FBVCxDQUFBcHNCLFNBQUEsRUFBWCxDQUFKLEVBSUVvc0IsQ0FBQTltQixNQUFB
LEVBQ0EsQ0FBQXVoRSxDQUFBLENBQVNodUQsRUFBQSxDQUFvQncwQyxDQUFBejVCLFNBQXBCLENB
QW1DejNCLENBQW5DLENBQUF5ZCxXQUFULENBQUEsQ0FBa0V2UixDQUFsRSxDQUNJdWdFLFFBQThC
LENBQUN2akUsQ0FBRCxDQUFRLENBQ3hDK21CLENBQUEzbUIsT0FBQSxDQUFnQkosQ0FBaEIsQ0FE
d0MsQ0FEMUM7QUFHRyxDQUFDK25CLG9CQUFxQmhCLENBQXRCLENBSEgsQ0FMRixHQVlBQSxDQUFB
MW1CLEtBQUEsQ0FBYzJuRCxDQUFBejVCLFNBQWQsQ0FDQSxDQUFBaXpDLENBQUEsQ0FBU3o2QyxD
QUFBeUksU0FBQSxFQUFULENBQUEsQ0FBOEJ4c0IsQ0FBOUIsQ0FiQSxDQUQyQyxDQUp4QyxDQURV
LENBRGUsQ0E3VHBDLENBOFlJOEksR0FBa0JvNkMsRUFBQSxDQUFZLENBQ2hDbmdDLFNBQVUsR0FE
c0IsQ0FFaEM5aUIsUUFBU0EsUUFBUSxFQUFHLENBQ2xCLE1BQU8sQ0FDTHNwQixJQUFLQSxRQUFR
LENBQUN2cEIsQ0FBRCxDQUFRaEgsQ0FBUixDQUFpQnV0QixDQUFqQixDQUF3QixDQUNuQ3ZtQixD
QUFBNjFDLE1BQUEsQ0FBWXR2QixDQUFBMWQsT0FBWixDQURtQyxDQURoQyxDQURXLENBRlksQ0FB
WixDQTlZdEIsQ0E2ZUl5QixHQUFrQkEsUUFBUSxFQUFHLENBQy9CLE1BQU8sQ0FDTDJZLFNBQVUs
R0FETCxDQUVMRixTQUFVLEdBRkwsQ0FHTEMsUUFBUyxTQUhKLENBSUw3QyxLQUFNQSxRQUFRLENB
QUNuZ0IsQ0FBRCxDQUFRaEgsQ0FBUixDQUFpQk4sQ0FBakIsQ0FBdUJzc0QsQ0FBdkIsQ0FBNkIs
Q0FHekMsSUFBSTM2QyxFQUFTclIsQ0FBQU4sS0FBQSxDQUFhQSxDQUFBNHVCLE1BQUFqZCxPQUFi
LENBQVRBLEVBQTRDLElBQWhELENBQ0ltMkQsRUFBNkIsT0FBN0JBLEdBQWE5bkUsQ0FBQTJ0RCxP
QURqQixDQUVJbmxELEVBQVlzL0QsQ0FBQSxDQUFhNXVELENBQUEsQ0FBS3ZILENBQUwsQ0FBYixD
QUE0QkEsQ0FpQjVDMjZDLEVBQUF1RCxTQUFBeHVELEtBQUEsQ0FmWWlDLFFBQVEsQ0FBQ3NoRSxD
QUFELENBQVksQ0FFOUIsR0FBSSxDQUFBemxFLENBQUEsQ0FBWXlsRSxDQUFaLENBQUosQ0FBQSxD
QUVBLElBQUkxaUQsRUFBTyxFQUVQMGlELEVBQUosRUFDRTVvRSxDQUFBLENBQVE0b0UsQ0FBQXhr
RSxNQUFBLENBQWdCb0ksQ0FBaEIsQ0FBUixDQUFvQyxRQUFRLENBQUN6TCxDQUFELENBQVEsQ0FD
OUNBLENBQUosRUFBV21sQixDQUFBN2dCLEtBQUEsQ0FBVXltRSxDQUFBLENBQWE1dUQsQ0FBQSxD
QUFLbmMsQ0FBTCxDQUFiLENBQTJCQSxDQUFyQyxDQUR1QyxDQUFwRCxDQUtGLE9BQU9tbEIsRUFW
UCxDQUY4QixDQWVoQyxDQUNBb3FDLEVBQUFnQixZQUFBanNELEtBQUEsQ0FBc0IsUUFBUSxDQUFD
dEUsQ0FBRCxDQUFRLENBQ3BDLE1BQUloQixFQUFBLENBQVFnQixDQUFSLENBQUosQ0FDU0EsQ0FB
QXdJLEtBQUEsQ0FBV29NLENBQVgsQ0FEVCxDQUlPdFcsQ0FMNkIsQ0FBdEMsQ0FTQWl4RCxFQUFB
aUIsU0FBQSxDQUFnQmdZLFFBQVEsQ0FBQ3hvRSxDQUFELENBQVEsQ0FDOUIsTUFBTyxDQUFDQSxD
QUFSO0FBQWlCLENBQUNBLENBQUFyQixPQURZLENBaENTLENBSnRDLENBRHdCLENBN2VqQyxDQWlp
QklvMkQsR0FBYyxVQWppQmxCLENBa2lCSUMsR0FBZ0IsWUFsaUJwQixDQW1pQklwRixHQUFpQixh
QW5pQnJCLENBb2lCSUMsR0FBYyxVQXBpQmxCLENBdWlCSXNGLEdBQWdCLFlBdmlCcEIsQ0EwaUJJ
bkMsR0FBaUIsSUFBSXowRCxDQUFKLENBQVcsU0FBWCxDQTFpQnJCLENBa3ZCSXlzRSxHQUFvQixD
QUFDLFFBQUQsQ0FBVyxtQkFBWCxDQUFnQyxRQUFoQyxDQUEwQyxVQUExQyxDQUFzRCxRQUF0RCxD
QUFnRSxVQUFoRSxDQUE0RSxVQUE1RSxDQUF3RixZQUF4RixDQUFzRyxJQUF0RyxDQUE0RyxjQUE1
RyxDQUNwQixRQUFRLENBQUNyMkMsQ0FBRCxDQUFTeGQsQ0FBVCxDQUE0QjBhLENBQTVCLENBQW1D
dkQsQ0FBbkMsQ0FBNkMvVixDQUE3QyxDQUFxRGxDLENBQXJELENBQStEc0QsQ0FBL0QsQ0FBeUVs
QixDQUF6RSxDQUFxRkUsQ0FBckYsQ0FBeUZwQixDQUF6RixDQUF1RyxDQUVqSCxJQUFBMHpELFlB
QUEsQ0FEQSxJQUFBcGEsV0FDQSxDQURrQjFsQyxNQUFBaW5DLElBRWxCLEtBQUE4WSxnQkFBQSxD
QUF1QjVzRSxDQUN2QixLQUFBNjBELFlBQUEsQ0FBbUIsRUFDbkIsS0FBQWdZLGlCQUFBLENBQXdC
LEVBQ3hCLEtBQUFyWSxTQUFBLENBQWdCLEVBQ2hCLEtBQUF2QyxZQUFBLENBQW1CLEVBQ25CLEtB
QUF1WixxQkFBQSxDQUE0QixFQUM1QixLQUFBc0IsV0FBQSxDQUFrQixDQUFBLENBQ2xCLEtBQUFD
LFNBQUEsQ0FBZ0IsQ0FBQSxDQUNoQixLQUFBamQsVUFBQSxDQUFpQixDQUFBLENBQ2pCLEtBQUFE
LE9BQUE7QUFBYyxDQUFBLENBQ2QsS0FBQUUsT0FBQSxDQUFjLENBQUEsQ0FDZCxLQUFBQyxTQUFB
LENBQWdCLENBQUEsQ0FDaEIsS0FBQVAsT0FBQSxDQUFjLEVBQ2QsS0FBQUMsVUFBQSxDQUFpQixF
QUNqQixLQUFBQyxTQUFBLENBQWdCM3ZELENBQ2hCLEtBQUE0dkQsTUFBQSxDQUFhMzJDLENBQUEs
Q0FBYXNhLENBQUF2b0IsS0FBYixFQUEyQixFQUEzQixDQUErQixDQUFBLENBQS9CLENBQUEsQ0FB
c0NxckIsQ0FBdEMsQ0FsQm9HLEtBcUI3RzIyQyxFQUFnQi95RCxDQUFBLENBQU9zWixDQUFBbmQs
UUFBUCxDQXJCNkYsQ0FzQjdHNjJELEVBQXNCRCxDQUFBbnZDLE9BdEJ1RixDQXVCN0dxdkMsRUFB
YUYsQ0F2QmdHLENBd0I3R0csRUFBYUYsQ0F4QmdHLENBeUI3R0csRUFBa0IsSUF6QjJGLENBMEI3
R0MsQ0ExQjZHLENBMkI3R3BjLEVBQU8sSUFFWCxLQUFBcWMsYUFBQSxDQUFvQkMsUUFBUSxDQUFD
L2tELENBQUQsQ0FBVSxDQUVwQyxJQURBeW9DLENBQUFvRCxTQUNBLENBRGdCN3JDLENBQ2hCLEdB
QWVBLENBQUFnbEQsYUFBZixDQUFxQyxDQUFBLElBQy9CQyxFQUFvQnh6RCxDQUFBLENBQU9zWixD
QUFBbmQsUUFBUCxDQUF1QixJQUF2QixDQURXLENBRS9CczNELEVBQW9CenpELENBQUEsQ0FBT3Na
LENBQUFuZCxRQUFQLENBQXVCLFFBQXZCLENBRXhCODJELEVBQUEsQ0FBYUEsUUFBUSxDQUFDNzJD
LENBQUQsQ0FBUyxDQUM1QixJQUFJaXpDLEVBQWEwRCxDQUFBLENBQWMzMkMsQ0FBZCxDQUNidDFC
LEVBQUEsQ0FBV3VvRSxDQUFYLENBQUosR0FDRUEsQ0FERixDQUNlbUUsQ0FBQSxDQUFrQnAzQyxD
QUFsQixDQURmLENBR0EsT0FBT2l6QyxFQUxxQixDQU85QjZELEVBQUEsQ0FBYUEsUUFBUSxDQUFD
OTJDLENBQUQsQ0FBU2dHLENBQVQsQ0FBbUIsQ0FDbEN0N0IsQ0FBQSxDQUFXaXNFLENBQUEsQ0FB
YzMyQyxDQUFkLENBQVgsQ0FBSixDQUNFcTNDLENBQUEsQ0FBa0JyM0MsQ0FBbEIsQ0FBMEIsQ0FB
Q3MzQyxLQUFNMWMsQ0FBQTBiLFlBQVAsQ0FBMUIsQ0FERixDQUdFTSxDQUFBLENBQW9CNTJDLENB
QXBCLENBQTRCNDZCLENBQUEwYixZQUE1QixDQUpvQyxDQVhMLENBQXJDLElBa0JPLElBQUs5dUMs
Q0FBQW12QyxDQUFBbnZDLE9BQUwsQ0FDTCxLQUFNNjJCLEdBQUEsQ0FBZSxXQUFmLENBQ0ZuaEMs
Q0FBQW5kLFFBREUsQ0FDYXJOLEVBQUEsQ0FBWWluQixDQUFaLENBRGIsQ0FBTixDQXJCa0MsQ0E4
Q3RDLEtBQUE2aUMsUUFBQSxDQUFldHZELENBb0JmLEtBQUEydUQsU0FBQSxDQUFnQjBiLFFBQVEs
Q0FBQ2xzRSxDQUFELENBQVEsQ0FDOUIsTUFBT29DLEVBQUEsQ0FBWXBDLENBQVosQ0FBUDtBQUF1
QyxFQUF2QyxHQUE2QkEsQ0FBN0IsRUFBdUQsSUFBdkQsR0FBNkNBLENBQTdDLEVBQStEQSxDQUEv
RCxHQUF5RUEsQ0FEM0MsQ0EvRmlGLEtBbUc3RzR0RCxFQUFhdC9CLENBQUE5aEIsY0FBQSxDQUF1
QixpQkFBdkIsQ0FBYm9oRCxFQUEwREUsRUFuR21ELENBb0c3R3FlLEVBQXlCLENBd0I3QjdjLEdB
QUEsQ0FBcUIsQ0FDbkJDLEtBQU0sSUFEYSxDQUVuQmpoQyxTQUFVQSxDQUZTLENBR25Ca2hDLElB
QUtBLFFBQVEsQ0FBQ3JiLENBQUQsQ0FBU2pGLENBQVQsQ0FBbUIsQ0FDOUJpRixDQUFBLENBQU9q
RixDQUFQLENBQUEsQ0FBbUIsQ0FBQSxDQURXLENBSGIsQ0FNbkJ1Z0IsTUFBT0EsUUFBUSxDQUFD
dGIsQ0FBRCxDQUFTakYsQ0FBVCxDQUFtQixDQUNoQyxPQUFPaUYsQ0FBQSxDQUFPakYsQ0FBUCxD
QUR5QixDQU5mLENBU25CMGUsV0FBWUEsQ0FUTyxDQVVuQnYzQyxTQUFVQSxDQVZTLENBQXJCLENB
d0JBLEtBQUF5NUMsYUFBQSxDQUFvQnNjLFFBQVEsRUFBRyxDQUM3QjdjLENBQUFwQixPQUFBLENB
QWMsQ0FBQSxDQUNkb0IsRUFBQW5CLFVBQUEsQ0FBaUIsQ0FBQSxDQUNqQi8zQyxFQUFBZ0wsWUFB
QSxDQUFxQmlOLENBQXJCLENBQStCdWhDLEVBQS9CLENBQ0F4NUMsRUFBQStLLFNBQUEsQ0FBa0Jr
TixDQUFsQixDQUE0QnNoQyxFQUE1QixDQUo2QixDQWtCL0IsS0FBQUYsVUFBQSxDQUFpQjJjLFFB
QVEsRUFBRyxDQUMxQjljLENBQUFwQixPQUFBLENBQWMsQ0FBQSxDQUNkb0IsRUFBQW5CLFVBQUEs
Q0FBaUIsQ0FBQSxDQUNqQi8zQyxFQUFBZ0wsWUFBQSxDQUFxQmlOLENBQXJCLENBQStCc2hDLEVB
QS9CLENBQ0F2NUMsRUFBQStLLFNBQUEsQ0FBa0JrTixDQUFsQixDQUE0QnVoQyxFQUE1QixDQUNB
akMsRUFBQThCLFVBQUEsRUFMMEIsQ0FvQjVCLEtBQUFRLGNBQUEsQ0FBcUJvYyxRQUFRLEVBQUcs
Q0FDOUIvYyxDQUFBOGIsU0FBQSxDQUFnQixDQUFBLENBQ2hCOWIsRUFBQTZiLFdBQUEsQ0FBa0Is
Q0FBQSxDQUNsQi8wRCxFQUFBMjVDLFNBQUEsQ0FBa0IxaEMsQ0FBbEIsQ0EzWWtCaStDLGNBMlls
QixDQTFZZ0JDLFlBMFloQixDQUg4QixDQWlCaEMsS0FBQUMsWUFBQTtBQUFtQkMsUUFBUSxFQUFH
LENBQzVCbmQsQ0FBQThiLFNBQUEsQ0FBZ0IsQ0FBQSxDQUNoQjliLEVBQUE2YixXQUFBLENBQWtC
LENBQUEsQ0FDbEIvMEQsRUFBQTI1QyxTQUFBLENBQWtCMWhDLENBQWxCLENBM1pnQmsrQyxZQTJa
aEIsQ0E1WmtCRCxjQTRabEIsQ0FINEIsQ0FtRTlCLEtBQUE5ZCxtQkFBQSxDQUEwQmtlLFFBQVEs
RUFBRyxDQUNuQ2h6RCxDQUFBcVEsT0FBQSxDQUFnQjBoRCxDQUFoQixDQUNBbmMsRUFBQXNCLFdB
QUEsQ0FBa0J0QixDQUFBcWQseUJBQ2xCcmQsRUFBQTRCLFFBQUEsRUFIbUMsQ0FrQnJDLEtBQUFr
QyxVQUFBLENBQWlCd1osUUFBUSxFQUFHLENBRTFCLEdBQUksQ0FBQXRxRSxDQUFBLENBQVNndEQs
Q0FBQTBiLFlBQVQsQ0FBSixFQUFrQyxDQUFBcmtFLEtBQUEsQ0FBTTJvRCxDQUFBMGIsWUFBTixD
QUFsQyxDQUFBLENBU0EsSUFBSXJELEVBQWFyWSxDQUFBMmIsZ0JBQWpCLENBRUk0QixFQUFZdmQs
Q0FBQWxCLE9BRmhCLENBR0kwZSxFQUFpQnhkLENBQUEwYixZQUhyQixDQUtJK0IsRUFBZXpkLENB
QUFvRCxTQUFmcWEsRUFBZ0N6ZCxDQUFBb0QsU0FBQXFhLGFBRXBDemQsRUFBQTBkLGdCQUFBLENB
QXFCckYsQ0FBckIsQ0FaZ0JyWSxDQUFBcWQseUJBWWhCLENBQTRDLFFBQVEsQ0FBQ00sQ0FBRCxD
QUFXLENBR3hERixDQUFMLEVBQXFCRixDQUFyQixHQUFtQ0ksQ0FBbkMsR0FLRTNkLENBQUEwYixZ
QUVBLENBRm1CaUMsQ0FBQSxDQUFXdEYsQ0FBWCxDQUF3QnRwRSxDQUUzQyxDQUFJaXhELENBQUEw
YixZQUFKLEdBQXlCOEIsQ0FBekIsRUFDRXhkLENBQUE0ZCxvQkFBQSxFQVJKLENBSDZELENBQS9E
LENBaEJBLENBRjBCLENBb0M1QixLQUFBRixnQkFBQTtBQUF1QkcsUUFBUSxDQUFDeEYsQ0FBRCxD
QUFhQyxDQUFiLENBQXdCd0YsQ0FBeEIsQ0FBc0MsQ0FtQ25FQyxRQUFTQSxFQUFxQixFQUFHLENB
Qy9CLElBQUlDLEVBQXNCLENBQUEsQ0FDMUJ0dUUsRUFBQSxDQUFRc3dELENBQUE0RCxZQUFSLENB
QTBCLFFBQVEsQ0FBQ3FhLENBQUQsQ0FBWWxrRSxDQUFaLENBQWtCLENBQ2xELElBQUlzWixFQUFT
NHFELENBQUEsQ0FBVTVGLENBQVYsQ0FBc0JDLENBQXRCLENBQ2IwRixFQUFBLENBQXNCQSxDQUF0
QixFQUE2QzNxRCxDQUM3Q3F5QyxFQUFBLENBQVkzckQsQ0FBWixDQUFrQnNaLENBQWxCLENBSGtE
LENBQXBELENBS0EsT0FBSzJxRCxFQUFMLENBTU8sQ0FBQSxDQU5QLEVBQ0V0dUUsQ0FBQSxDQUFR
c3dELENBQUE0YixpQkFBUixDQUErQixRQUFRLENBQUMxckMsQ0FBRCxDQUFJbjJCLENBQUosQ0FB
VSxDQUMvQzJyRCxDQUFBLENBQVkzckQsQ0FBWixDQUFrQixJQUFsQixDQUQrQyxDQUFqRCxDQUdP
LENBQUEsQ0FBQSxDQUpULENBUCtCLENBZ0JqQ21rRSxRQUFTQSxFQUFzQixFQUFHLENBQ2hDLElB
QUlDLEVBQW9CLEVBQXhCLENBQ0lSLEVBQVcsQ0FBQSxDQUNmanVFLEVBQUEsQ0FBUXN3RCxDQUFB
NGIsaUJBQVIsQ0FBK0IsUUFBUSxDQUFDcUMsQ0FBRCxDQUFZbGtFLENBQVosQ0FBa0IsQ0FDdkQs
SUFBSTg1QixFQUFVb3FDLENBQUEsQ0FBVTVGLENBQVYsQ0FBc0JDLENBQXRCLENBQ2QsSUFBbUJ6
a0MsQ0FBQUEsQ0FBbkIsRUFyb3ZCUSxDQUFBL2pDLENBQUEsQ0Fxb3ZCVytqQyxDQXJvdkJBM0ss
S0FBWCxDQXFvdkJSLENBQ0UsS0FBTXU2QixHQUFBLENBQWUsa0JBQWYsQ0FDMEU1dkIsQ0FEMUUs
Q0FBTixDQUdGNnhCLENBQUEsQ0FBWTNyRCxDQUFaLENBQWtCaEwsQ0FBbEIsQ0FDQW92RSxFQUFB
cHBFLEtBQUEsQ0FBdUI4K0IsQ0FBQTNLLEtBQUEsQ0FBYSxRQUFRLEVBQUcsQ0FDN0N3OEIsQ0FB
QSxDQUFZM3JELENBQVosQ0FBa0IsQ0FBQSxDQUFsQixDQUQ2QyxDQUF4QixDQUVwQixRQUFRLENB
QUM4ZCxDQUFELENBQVEsQ0FDakI4bEQsQ0FBQSxDQUFXLENBQUEsQ0FDWGpZLEVBQUEsQ0FBWTNy
RCxDQUFaLENBQWtCLENBQUEsQ0FBbEIsQ0FGaUIsQ0FGSSxDQUF2QixDQVB1RCxDQUF6RCxDQWNL
b2tFLEVBQUEvdUUsT0FBTCxDQUdFZ2EsQ0FBQTRoQyxJQUFBLENBQU9tekIsQ0FBUCxDQUFBajFD
LEtBQUEsQ0FBK0IsUUFBUSxFQUFHLENBQ3hDazFDLENBQUEsQ0FBZVQsQ0FBZixDQUR3QyxDQUEx
QyxDQUVHcnJFLENBRkgsQ0FIRixDQUNFOHJFLENBQUEsQ0FBZSxDQUFBLENBQWYsQ0FsQjhCLENB
MEJsQzFZLFFBQVNBLEVBQVcsQ0FBQzNyRCxDQUFELENBQU93ckQsQ0FBUCxDQUFnQixDQUM5QjhZ
LENBQUosR0FBNkJ6QixDQUE3QixFQUNFNWMsQ0FBQUYsYUFBQSxDQUFrQi9sRCxDQUFsQixDQUF3
QndyRCxDQUF4QixDQUZnQyxDQU1wQzZZLFFBQVNBLEVBQWMsQ0FBQ1QsQ0FBRCxDQUFXLENBQzVC
VSxDQUFKLEdBQTZCekIsQ0FBN0IsRUFFRWtCLENBQUEsQ0FBYUgsQ0FBYixDQUg4QixDQWxGbENm
LENBQUEsRUFDQSxLQUFJeUIsRUFBdUJ6QixDQWEzQjBCLFVBQTJCLEVBQUcsQ0FDNUIsSUFBSUM7
QUFBV3ZlLENBQUFzRCxhQUFYaWIsRUFBZ0MsT0FDcEMsSUFBSW5DLENBQUosR0FBb0JydEUsQ0FB
cEIsQ0FDRTIyRCxDQUFBLENBQVk2WSxDQUFaLENBQXNCLElBQXRCLENBREYsS0FhRSxPQVZLbkMs
RUFVRUEsR0FUTDFzRSxDQUFBLENBQVFzd0QsQ0FBQTRELFlBQVIsQ0FBMEIsUUFBUSxDQUFDMXpC
LENBQUQsQ0FBSW4yQixDQUFKLENBQVUsQ0FDMUMyckQsQ0FBQSxDQUFZM3JELENBQVosQ0FBa0Is
SUFBbEIsQ0FEMEMsQ0FBNUMsQ0FHQSxDQUFBckssQ0FBQSxDQUFRc3dELENBQUE0YixpQkFBUixD
QUErQixRQUFRLENBQUMxckMsQ0FBRCxDQUFJbjJCLENBQUosQ0FBVSxDQUMvQzJyRCxDQUFBLENB
QVkzckQsQ0FBWixDQUFrQixJQUFsQixDQUQrQyxDQUFqRCxDQU1LcWlFLEVBRFAxVyxDQUFBLENB
QVk2WSxDQUFaLENBQXNCbkMsQ0FBdEIsQ0FDT0EsQ0FBQUEsQ0FFVCxPQUFPLENBQUEsQ0FqQnFC
LENBQTlCa0MsQ0FWSyxFQUFMLENBSUtQLENBQUEsRUFBTCxDQUlBRyxDQUFBLEVBSkEsQ0FDRUUs
Q0FBQSxDQUFlLENBQUEsQ0FBZixDQUxGLENBQ0VBLENBQUEsQ0FBZSxDQUFBLENBQWYsQ0FOaUUs
Q0FzR3JFLEtBQUEvZSxpQkFBQSxDQUF3Qm1mLFFBQVEsRUFBRyxDQUNqQyxJQUFJbEcsRUFBWXRZ
LENBQUFzQixXQUVoQmwzQyxFQUFBcVEsT0FBQSxDQUFnQjBoRCxDQUFoQixDQUtBLElBQUluYyxD
QUFBcWQseUJBQUosR0FBc0MvRSxDQUF0QyxFQUFrRSxFQUFsRSxHQUFvREEsQ0FBcEQsRUFBeUV0
WSxDQUFBdUIsc0JBQXpFLENBR0F2QixDQUFBcWQseUJBTUEsQ0FOZ0MvRSxDQU1oQyxDQUhJdFks
Q0FBQW5CLFVBR0osRUFGRSxJQUFBc0IsVUFBQSxFQUVGLENBQUEsSUFBQXNlLG1CQUFBLEVBakJp
QyxDQW9CbkMsS0FBQUEsbUJBQUEsQ0FBMEJDLFFBQVEsRUFBRyxDQUVuQyxJQUFJckcsRUFEWXJZ
LENBQUFxZCx5QkFJaEIsSUFGQWpCLENBRUEsQ0FGY3ZwRSxDQUFBLENBQVl3bEUsQ0FBWixDQUFB
LENBQTBCdHBFLENBQTFCLENBQXNDLENBQUEsQ0FFcEQsQ0FDRSxJQUFTLElBQUF1QjtBQUFJLENB
QWIsQ0FBZ0JBLENBQWhCLENBQW9CMHZELENBQUF1RCxTQUFBbjBELE9BQXBCLENBQTBDa0IsQ0FB
QSxFQUExQyxDQUVFLEdBREErbkUsQ0FDSSxDQURTclksQ0FBQXVELFNBQUEsQ0FBY2p6RCxDQUFk
LENBQUEsQ0FBaUIrbkUsQ0FBakIsQ0FDVCxDQUFBeGxFLENBQUEsQ0FBWXdsRSxDQUFaLENBQUos
Q0FBNkIsQ0FDM0IrRCxDQUFBLENBQWMsQ0FBQSxDQUNkLE1BRjJCLENBTTdCcHBFLENBQUEsQ0FB
U2d0RCxDQUFBMGIsWUFBVCxDQUFKLEVBQWtDcmtFLEtBQUEsQ0FBTTJvRCxDQUFBMGIsWUFBTixD
QUFsQyxHQUVFMWIsQ0FBQTBiLFlBRkYsQ0FFcUJPLENBQUEsQ0FBVzcyQyxDQUFYLENBRnJCLENB
SUEsS0FBSW80QyxFQUFpQnhkLENBQUEwYixZQUFyQixDQUNJK0IsRUFBZXpkLENBQUFvRCxTQUFm
cWEsRUFBZ0N6ZCxDQUFBb0QsU0FBQXFhLGFBQ3BDemQsRUFBQTJiLGdCQUFBLENBQXVCdEQsQ0FF
bkJvRixFQUFKLEdBQ0V6ZCxDQUFBMGIsWUFrQkEsQ0FsQm1CckQsQ0FrQm5CLENBQUlyWSxDQUFB
MGIsWUFBSixHQUF5QjhCLENBQXpCLEVBQ0V4ZCxDQUFBNGQsb0JBQUEsRUFwQkosQ0FPQTVkLEVB
QUEwZCxnQkFBQSxDQUFxQnJGLENBQXJCLENBQWlDclksQ0FBQXFkLHlCQUFqQyxDQUFnRSxRQUFR
LENBQUNNLENBQUQsQ0FBVyxDQUM1RUYsQ0FBTCxHQUtFemQsQ0FBQTBiLFlBTUYsQ0FOcUJpQyxD
QUFBLENBQVd0RixDQUFYLENBQXdCdHBFLENBTTdDLENBQUlpeEQsQ0FBQTBiLFlBQUosR0FBeUI4
QixDQUF6QixFQUNFeGQsQ0FBQTRkLG9CQUFBLEVBWkYsQ0FEaUYsQ0FBbkYsQ0E3Qm1DLENBK0Ny
QyxLQUFBQSxvQkFBQSxDQUEyQmUsUUFBUSxFQUFHLENBQ3BDekMsQ0FBQSxDQUFXOTJDLENBQVgs
Q0FBbUI0NkIsQ0FBQTBiLFlBQW5CLENBQ0Foc0UsRUFBQSxDQUFRc3dELENBQUF1YSxxQkFBUixD
QUFtQyxRQUFRLENBQUM5aEQsQ0FBRCxDQUFXLENBQ3BELEdBQUksQ0FDRkEsQ0FBQSxFQURFLENB
RUYsTUFBT3ZnQixDQUFQLENBQVUsQ0FDVjBQLENBQUEsQ0FBa0IxUCxDQUFsQixDQURVLENBSHdD
LENBQXRELENBRm9DLENBbUR0QztJQUFBc3BELGNBQUEsQ0FBcUJvZCxRQUFRLENBQUNudUUsQ0FB
RCxDQUFRODJELENBQVIsQ0FBaUIsQ0FDNUN2SCxDQUFBc0IsV0FBQSxDQUFrQjd3RCxDQUNidXZE
LEVBQUFvRCxTQUFMLEVBQXNCeWIsQ0FBQTdlLENBQUFvRCxTQUFBeWIsZ0JBQXRCLEVBQ0U3ZSxD
QUFBOGUsMEJBQUEsQ0FBK0J2WCxDQUEvQixDQUgwQyxDQU85QyxLQUFBdVgsMEJBQUEsQ0FBaUND
LFFBQVEsQ0FBQ3hYLENBQUQsQ0FBVSxDQUFBLElBQzdDeVgsRUFBZ0IsQ0FENkIsQ0FFN0N6bkQs
RUFBVXlvQyxDQUFBb0QsU0FHVjdyQyxFQUFKLEVBQWV6a0IsQ0FBQSxDQUFVeWtCLENBQUEwbkQs
U0FBVixDQUFmLEdBQ0VBLENBQ0EsQ0FEVzFuRCxDQUFBMG5ELFNBQ1gsQ0FBSWpzRSxDQUFBLENB
QVNpc0UsQ0FBVCxDQUFKLENBQ0VELENBREYsQ0FDa0JDLENBRGxCLENBRVdqc0UsQ0FBQSxDQUFT
aXNFLENBQUEsQ0FBUzFYLENBQVQsQ0FBVCxDQUFKLENBQ0x5WCxDQURLLENBQ1dDLENBQUEsQ0FB
UzFYLENBQVQsQ0FEWCxDQUVJdjBELENBQUEsQ0FBU2lzRSxDQUFBLENBQVMsU0FBVCxDQUFULENB
RkosR0FHTEQsQ0FISyxDQUdXQyxDQUFBLENBQVMsU0FBVCxDQUhYLENBSlQsQ0FXQTcwRCxFQUFB
cVEsT0FBQSxDQUFnQjBoRCxDQUFoQixDQUNJNkMsRUFBSixDQUNFN0MsQ0FERixDQUNvQi94RCxD
QUFBLENBQVMsUUFBUSxFQUFHLENBQ3BDNDFDLENBQUFYLGlCQUFBLEVBRG9DLENBQXBCLENBRWYy
ZixDQUZlLENBRHBCLENBSVc5MUQsQ0FBQTZyQixRQUFKLENBQ0xpckIsQ0FBQVgsaUJBQUEsRUFE
SyxDQUdMajZCLENBQUFscUIsT0FBQSxDQUFjLFFBQVEsRUFBRyxDQUN2QjhrRCxDQUFBWCxpQkFB
QSxFQUR1QixDQUF6QixDQXhCK0MsQ0FzQ25EajZCLEVBQUFoeUIsT0FBQSxDQUFjOHJFLFFBQXFC
LEVBQUcsQ0FDcEMsSUFBSTdHLEVBQWE0RCxDQUFBLENBQVc3MkMsQ0FBWCxDQUlqQixJQUFJaXpD
LENBQUosR0FBbUJyWSxDQUFBMGIsWUFBbkIsR0FFSTFiLENBQUEwYixZQUZKLEdBRXlCMWIsQ0FB
QTBiLFlBRnpCLEVBRTZDckQsQ0FGN0MsR0FFNERBLENBRjVELEVBR0UsQ0FDQXJZLENBQUEwYixZ
QUFBO0FBQW1CMWIsQ0FBQTJiLGdCQUFuQixDQUEwQ3RELENBQzFDK0QsRUFBQSxDQUFjcnRFLENB
TWQsS0FSQSxJQUlJb3dFLEVBQWFuZixDQUFBZ0IsWUFKakIsQ0FLSW5nQyxFQUFNcytDLENBQUEv
dkUsT0FMVixDQU9Ja3BFLEVBQVlELENBQ2hCLENBQU94M0MsQ0FBQSxFQUFQLENBQUEsQ0FDRXkz
QyxDQUFBLENBQVk2RyxDQUFBLENBQVd0K0MsQ0FBWCxDQUFBLENBQWdCeTNDLENBQWhCLENBRVZ0
WSxFQUFBc0IsV0FBSixHQUF3QmdYLENBQXhCLEdBQ0V0WSxDQUFBc0IsV0FHQSxDQUhrQnRCLENB
QUFxZCx5QkFHbEIsQ0FIa0QvRSxDQUdsRCxDQUZBdFksQ0FBQTRCLFFBQUEsRUFFQSxDQUFBNUIs
Q0FBQTBkLGdCQUFBLENBQXFCckYsQ0FBckIsQ0FBaUNDLENBQWpDLENBQTRDaG1FLENBQTVDLENB
SkYsQ0FYQSxDQW1CRixNQUFPK2xFLEVBM0I2QixDQUF0QyxDQTdrQmlILENBRDNGLENBbHZCeEIs
Q0F3Z0RJanpELEdBQW1CLENBQUMsWUFBRCxDQUFlLFFBQVEsQ0FBQzhELENBQUQsQ0FBYSxDQUN6
RCxNQUFPLENBQ0wrVSxTQUFVLEdBREwsQ0FFTEQsUUFBUyxDQUFDLFNBQUQsQ0FBWSxRQUFaLENB
QXNCLGtCQUF0QixDQUZKLENBR0xoaEIsV0FBWXkrRCxFQUhQLENBT0wxOUMsU0FBVSxDQVBMLENB
UUw5aUIsUUFBU21rRSxRQUF1QixDQUFDcHJFLENBQUQsQ0FBVSxDQUV4Q0EsQ0FBQTZkLFNBQUEs
Q0FBaUJ3dUMsRUFBakIsQ0FBQXh1QyxTQUFBLENBOStCZ0JtckQsY0E4K0JoQixDQUFBbnJELFNB
QUEsQ0FBb0UyekMsRUFBcEUsQ0FFQSxPQUFPLENBQ0xqaEMsSUFBSzg2QyxRQUF1QixDQUFDcmtF
LENBQUQsQ0FBUWhILENBQVIsQ0FBaUJOLENBQWpCLENBQXVCd2xFLENBQXZCLENBQThCLENBQUEs
SUFDcERvRyxFQUFZcEcsQ0FBQSxDQUFNLENBQU4sQ0FEd0MsQ0FFcERxRyxFQUFXckcsQ0FBQSxD
QUFNLENBQU4sQ0FBWHFHLEVBQXVCaGhCLEVBRTNCK2dCLEVBQUFqRCxhQUFBLENBQXVCbkQsQ0FB
QSxDQUFNLENBQU4sQ0FBdkIsRUFBbUNBLENBQUEsQ0FBTSxDQUFOLENBQUE5VixTQUFuQyxDQUdB
bWMsRUFBQXRnQixZQUFBLENBQXFCcWdCLENBQXJCLENBRUE1ckUsRUFBQWc1QixTQUFBLENBQWMs
TUFBZDtBQUFzQixRQUFRLENBQUN0QixDQUFELENBQVcsQ0FDbkNrMEMsQ0FBQTNnQixNQUFKLEdB
QXdCdnpCLENBQXhCLEVBQ0VtMEMsQ0FBQS9mLGdCQUFBLENBQXlCOGYsQ0FBekIsQ0FBb0NsMEMs
Q0FBcEMsQ0FGcUMsQ0FBekMsQ0FNQXB3QixFQUFBa21CLElBQUEsQ0FBVSxVQUFWLENBQXNCLFFB
QVEsRUFBRyxDQUMvQnErQyxDQUFBM2YsZUFBQSxDQUF3QjBmLENBQXhCLENBRCtCLENBQWpDLENB
ZndELENBRHJELENBb0JMOTZDLEtBQU1nN0MsUUFBd0IsQ0FBQ3hrRSxDQUFELENBQVFoSCxDQUFS
LENBQWlCTixDQUFqQixDQUF1QndsRSxDQUF2QixDQUE4QixDQUMxRCxJQUFJb0csRUFBWXBHLENB
QUEsQ0FBTSxDQUFOLENBQ2hCLElBQUlvRyxDQUFBbGMsU0FBSixFQUEwQmtjLENBQUFsYyxTQUFB
cWMsU0FBMUIsQ0FDRXpyRSxDQUFBNkksR0FBQSxDQUFXeWlFLENBQUFsYyxTQUFBcWMsU0FBWCxD
QUF3QyxRQUFRLENBQUNyZSxDQUFELENBQUssQ0FDbkRrZSxDQUFBUiwwQkFBQSxDQUFvQzFkLENB
QXBDLEVBQTBDQSxDQUFBMXpDLEtBQTFDLENBRG1ELENBQXJELENBS0YxWixFQUFBNkksR0FBQSxD
QUFXLE1BQVgsQ0FBbUIsUUFBUSxDQUFDdWtELENBQUQsQ0FBSyxDQUMxQmtlLENBQUF4RCxTQUFK
LEdBRUk1eUQsQ0FBQTZyQixRQUFKLENBQ0UvNUIsQ0FBQTdILFdBQUEsQ0FBaUJtc0UsQ0FBQXBD
LFlBQWpCLENBREYsQ0FHRWxpRSxDQUFBRSxPQUFBLENBQWFva0UsQ0FBQXBDLFlBQWIsQ0FMRixD
QUQ4QixDQUFoQyxDQVIwRCxDQXBCdkQsQ0FKaUMsQ0FSckMsQ0FEa0QsQ0FBcEMsQ0F4Z0R2QixD
QWdrREl3QyxHQUFpQix1QkFoa0RyQixDQWt1RElsNUQsR0FBMEJBLFFBQVEsRUFBRyxDQUN2QyxN
QUFPLENBQ0x5WCxTQUFVLEdBREwsQ0FFTGpoQixXQUFZLENBQUMsUUFBRCxDQUFXLFFBQVgsQ0FB
cUIsUUFBUSxDQUFDb29CLENBQUQsQ0FBU0MsQ0FBVCxDQUFpQixDQUN4RCxJQUFJczZDLEVBQU8s
SUFDWCxLQUFBdmMsU0FBQSxDQUFnQjd1RCxFQUFBLENBQUs2d0IsQ0FBQXlyQixNQUFBLENBQWF4
ckIsQ0FBQTllLGVBQWIsQ0FBTCxDQUVaO0lBQUE2OEMsU0FBQXFjLFNBQUosR0FBK0Ixd0UsQ0FB
L0IsRUFDRSxJQUFBcTBELFNBQUF5YixnQkFFQSxDQUZnQyxDQUFBLENBRWhDLENBQUEsSUFBQXpi
LFNBQUFxYyxTQUFBLENBQXlCN3lELENBQUEsQ0FBSyxJQUFBdzJDLFNBQUFxYyxTQUFBbG5FLFFB
QUEsQ0FBK0JtbkUsRUFBL0IsQ0FBK0MsUUFBUSxFQUFHLENBQ3RGQyxDQUFBdmMsU0FBQXliLGdC
QUFBLENBQWdDLENBQUEsQ0FDaEMsT0FBTyxHQUYrRSxDQUExRCxDQUFMLENBSDNCLEVBUUUsSUFB
QXpiLFNBQUF5YixnQkFSRixDQVFrQyxDQUFBLENBWnNCLENBQTlDLENBRlAsQ0FEZ0MsQ0FsdUR6
QyxDQW80REk3NkQsR0FBeUJrNkMsRUFBQSxDQUFZLENBQUVyOEIsU0FBVSxDQUFBLENBQVosQ0FB
a0I5RCxTQUFVLEdBQTVCLENBQVosQ0FwNEQ3QixDQXc0REk2aEQsR0FBa0I1d0UsQ0FBQSxDQUFP
LFdBQVAsQ0F4NER0QixDQTZsRUk2d0UsR0FBb0IsMk9BN2xFeEI7QUEwbUVJNzZELEdBQXFCLENB
QUMsVUFBRCxDQUFhLFFBQWIsQ0FBdUIsUUFBUSxDQUFDdzBELENBQUQsQ0FBV3h3RCxDQUFYLENB
QW1CLENBRXpFODJELFFBQVNBLEVBQXNCLENBQUNDLENBQUQsQ0FBYUMsQ0FBYixDQUE0QmhsRSxD
QUE1QixDQUFtQyxDQXNEaEVpbEUsUUFBU0EsRUFBTSxDQUFDQyxDQUFELENBQWM1SCxDQUFkLENB
QXlCNkgsQ0FBekIsQ0FBZ0NybEIsQ0FBaEMsQ0FBdUNzbEIsQ0FBdkMsQ0FBaUQsQ0FDOUQsSUFB
QUYsWUFBQSxDQUFtQkEsQ0FDbkIsS0FBQTVILFVBQUEsQ0FBaUJBLENBQ2pCLEtBQUE2SCxNQUFB
LENBQWFBLENBQ2IsS0FBQXJsQixNQUFBLENBQWFBLENBQ2IsS0FBQXNsQixTQUFBLENBQWdCQSxD
QUw4QyxDQVFoRUMsUUFBU0EsRUFBbUIsQ0FBQ0MsQ0FBRCxDQUFlLENBQ3pDLElBQUlDLENBRUos
SUFBS0MsQ0FBQUEsQ0FBTCxFQUFnQnZ4RSxFQUFBLENBQVlxeEUsQ0FBWixDQUFoQixDQUNFQyxD
QUFBLENBQW1CRCxDQURyQixLQUVPLENBRUxDLENBQUEsQ0FBbUIsRUFDbkIsS0FBU0UsSUFBQUEs
Q0FBVCxHQUFvQkgsRUFBcEIsQ0FDTUEsQ0FBQXZ3RSxlQUFBLENBQTRCMHdFLENBQTVCLENBQUos
RUFBa0UsR0FBbEUsR0FBNENBLENBQUFsckUsT0FBQSxDQUFlLENBQWYsQ0FBNUMsRUFDRWdyRSxD
QUFBeHJFLEtBQUEsQ0FBc0IwckUsQ0FBdEIsQ0FMQyxDQVNQLE1BQU9GLEVBZGtDLENBNUQzQyxJ
QUFJcHJFLEVBQVE0cUUsQ0FBQTVxRSxNQUFBLENBQWlCMHFFLEVBQWpCLENBQ1osSUFBTTFxRSxD
QUFBQSxDQUFOLENBQ0UsS0FBTXlxRSxHQUFBLENBQWdCLE1BQWhCLENBSUpHLENBSkksQ0FJUWpv
RSxFQUFBLENBQVlrb0UsQ0FBWixDQUpSLENBQU4sQ0FVRixJQUFJVSxFQUFZdnJFLENBQUEsQ0FB
TSxDQUFOLENBQVp1ckUsRUFBd0J2ckUsQ0FBQSxDQUFNLENBQU4sQ0FBNUIsQ0FFSXFyRSxFQUFV
cnJFLENBQUEsQ0FBTSxDQUFOLENBR1Z3ckUsRUFBQUEsQ0FBVyxNQUFBN3JFLEtBQUEsQ0FBWUss
Q0FBQSxDQUFNLENBQU4sQ0FBWixDQUFYd3JFLEVBQW9DeHJFLENBQUEsQ0FBTSxDQUFOLENBRXhD
LEtBQUl5ckUsRUFBVXpyRSxDQUFBLENBQU0sQ0FBTixDQUVWMUMsRUFBQUEsQ0FBVXVXLENBQUEs
Q0FBTzdULENBQUEsQ0FBTSxDQUFOLENBQUEsQ0FBV0EsQ0FBQSxDQUFNLENBQU4sQ0FBWCxDQUFz
QnVyRSxDQUE3QixDQUVkLEtBQUlHLEVBRGFGLENBQ2JFLEVBRHlCNzNELENBQUEsQ0FBTzIzRCxD
QUFQLENBQ3pCRSxFQUE0QnB1RSxDQUFoQyxDQUNJcXVFLEVBQVlGLENBQVpFLEVBQXVCOTNELENB
QUEsQ0FBTzQzRCxDQUFQLENBRDNCLENBTUlHLEVBQW9CSCxDQUFBLENBQ0UsUUFBUSxDQUFDbndF
LENBQUQsQ0FBUStqQixDQUFSLENBQWdCLENBQUUsTUFBT3NzRCxFQUFBLENBQVU5bEUsQ0FBVixD
QUFpQndaLENBQWpCLENBQVQsQ0FEMUIsQ0FFRXdzRCxRQUF1QixDQUFDdndFLENBQUQsQ0FBUSxD
QUFFLE1BQU9zaEIsR0FBQSxDQUFRdGhCLENBQVIsQ0FBVCxDQVJ6RCxDQVNJd3dFLEVBQWtCQSxR
QUFRLENBQUN4d0UsQ0FBRDtBQUFRWixDQUFSLENBQWEsQ0FDekMsTUFBT2t4RSxFQUFBLENBQWtC
dHdFLENBQWxCLENBQXlCeXdFLENBQUEsQ0FBVXp3RSxDQUFWLENBQWlCWixDQUFqQixDQUF6QixD
QURrQyxDQVQzQyxDQWFJc3hFLEVBQVluNEQsQ0FBQSxDQUFPN1QsQ0FBQSxDQUFNLENBQU4sQ0FB
UCxFQUFtQkEsQ0FBQSxDQUFNLENBQU4sQ0FBbkIsQ0FiaEIsQ0FjSWlzRSxFQUFZcDRELENBQUEs
Q0FBTzdULENBQUEsQ0FBTSxDQUFOLENBQVAsRUFBbUIsRUFBbkIsQ0FkaEIsQ0FlSWtzRSxFQUFn
QnI0RCxDQUFBLENBQU83VCxDQUFBLENBQU0sQ0FBTixDQUFQLEVBQW1CLEVBQW5CLENBZnBCLENB
Z0JJbXNFLEVBQVd0NEQsQ0FBQSxDQUFPN1QsQ0FBQSxDQUFNLENBQU4sQ0FBUCxDQWhCZixDQWtC
SXFmLEVBQVMsRUFsQmIsQ0FtQkkwc0QsRUFBWVYsQ0FBQSxDQUFVLFFBQVEsQ0FBQy92RSxDQUFE
LENBQVFaLENBQVIsQ0FBYSxDQUM3QzJrQixDQUFBLENBQU9nc0QsQ0FBUCxDQUFBLENBQWtCM3dF
LENBQ2xCMmtCLEVBQUEsQ0FBT2tzRCxDQUFQLENBQUEsQ0FBb0Jqd0UsQ0FDcEIsT0FBTytqQixF
QUhzQyxDQUEvQixDQUlaLFFBQVEsQ0FBQy9qQixDQUFELENBQVEsQ0FDbEIrakIsQ0FBQSxDQUFP
a3NELENBQVAsQ0FBQSxDQUFvQmp3RSxDQUNwQixPQUFPK2pCLEVBRlcsQ0ErQnBCLE9BQU8sQ0FD
TG9zRCxRQUFTQSxDQURKLENBRUxLLGdCQUFpQkEsQ0FGWixDQUdMTSxjQUFldjRELENBQUEsQ0FB
T3M0RCxDQUFQLENBQWlCLFFBQVEsQ0FBQ2hCLENBQUQsQ0FBZSxDQUlyRCxJQUFJa0IsRUFBZSxF
QUNuQmxCLEVBQUEsQ0FBZUEsQ0FBZixFQUErQixFQUkvQixLQUZBLElBQUlDLEVBQW1CRixDQUFB
LENBQW9CQyxDQUFwQixDQUF2QixDQUNJbUIsRUFBcUJsQixDQUFBbnhFLE9BRHpCLENBRVNnRixF
QUFRLENBQWpCLENBQW9CQSxDQUFwQixDQUE0QnF0RSxDQUE1QixDQUFnRHJ0RSxDQUFBLEVBQWhE
LENBQXlELENBQ3ZELElBQUl2RSxFQUFPeXdFLENBQUQsR0FBa0JDLENBQWxCLENBQXNDbnNFLENB
QXRDLENBQThDbXNFLENBQUEsQ0FBaUJuc0UsQ0FBakIsQ0FBeEQsQ0FHSW9nQixFQUFTMHNELENB
QUEsQ0FBVVosQ0FBQSxDQUFhendFLENBQWIsQ0FBVixDQUE2QkEsQ0FBN0IsQ0FIYixDQUlJcXdF
LEVBQWNhLENBQUEsQ0FBa0JULENBQUEsQ0FBYXp3RSxDQUFiLENBQWxCLENBQXFDMmtCLENBQXJD
LENBQ2xCZ3RELEVBQUF6c0UsS0FBQSxDQUFrQm1yRSxDQUFsQixDQUdBLElBQUkvcUUsQ0FBQSxD
QUFNLENBQU4sQ0FBSixFQUFnQkEsQ0FBQSxDQUFNLENBQU4sQ0FBaEIsQ0FDTWdyRSxDQUNKLENB
RFlnQixDQUFBLENBQVVubUUsQ0FBVixDQUFpQndaLENBQWpCLENBQ1osQ0FBQWd0RCxDQUFBenNF
LEtBQUEsQ0FBa0JvckUsQ0FBbEIsQ0FJRWhyRSxFQUFBLENBQU0sQ0FBTixDQUFKLEdBQ011c0Us
Q0FDSixDQURrQkwsQ0FBQSxDQUFjcm1FLENBQWQsQ0FBcUJ3WixDQUFyQixDQUNsQixDQUFBZ3RE
LENBQUF6c0UsS0FBQSxDQUFrQjJzRSxDQUFsQixDQUZGLENBZnVELENBb0J6RCxNQUFPRixFQTdC
OEMsQ0FBeEMsQ0FIVixDQW1DTEcsV0FBWUEsUUFBUSxFQUFHLENBV3JCLElBVEEsSUFBSUMsRUFB
YyxFQUFsQixDQUNJQyxFQUFpQixFQURyQixDQUtJdkIsRUFBZWdCLENBQUEsQ0FBU3RtRSxDQUFU
LENBQWZzbEUsRUFBa0MsRUFMdEMsQ0FNSUMsRUFBbUJGLENBQUEsQ0FBb0JDLENBQXBCLENBTnZC
LENBT0ltQixFQUFxQmxCLENBQUFueEUsT0FQekIsQ0FTU2dGLEVBQVEsQ0FBakIsQ0FBb0JBLENB
QXBCLENBQTRCcXRFLENBQTVCLENBQWdEcnRFLENBQUEsRUFBaEQsQ0FBeUQsQ0FDdkQsSUFBSXZF
LEVBQU95d0UsQ0FBRCxHQUFrQkMsQ0FBbEIsQ0FBc0Nuc0UsQ0FBdEMsQ0FBOENtc0UsQ0FBQSxD
QUFpQm5zRSxDQUFqQixDQUF4RCxDQUVJb2dCO0FBQVMwc0QsQ0FBQSxDQUREWixDQUFBN3ZFLENB
QWFaLENBQWJZLENBQ0MsQ0FBaUJaLENBQWpCLENBRmIsQ0FHSXlvRSxFQUFZdUksQ0FBQSxDQUFZ
N2xFLENBQVosQ0FBbUJ3WixDQUFuQixDQUhoQixDQUlJMHJELEVBQWNhLENBQUEsQ0FBa0J6SSxD
QUFsQixDQUE2QjlqRCxDQUE3QixDQUpsQixDQUtJMnJELEVBQVFnQixDQUFBLENBQVVubUUsQ0FB
VixDQUFpQndaLENBQWpCLENBTFosQ0FNSXNtQyxFQUFRc21CLENBQUEsQ0FBVXBtRSxDQUFWLENB
QWlCd1osQ0FBakIsQ0FOWixDQU9JNHJELEVBQVdpQixDQUFBLENBQWNybUUsQ0FBZCxDQUFxQnda
LENBQXJCLENBUGYsQ0FRSXN0RCxFQUFhLElBQUk3QixDQUFKLENBQVdDLENBQVgsQ0FBd0I1SCxD
QUF4QixDQUFtQzZILENBQW5DLENBQTBDcmxCLENBQTFDLENBQWlEc2xCLENBQWpELENBRWpCd0Is
RUFBQTdzRSxLQUFBLENBQWlCK3NFLENBQWpCLENBQ0FELEVBQUEsQ0FBZTNCLENBQWYsQ0FBQSxD
QUE4QjRCLENBWnlCLENBZXpELE1BQU8sQ0FDTGp1RSxNQUFPK3RFLENBREYsQ0FFTEMsZUFBZ0JB
LENBRlgsQ0FHTEUsdUJBQXdCQSxRQUFRLENBQUN0eEUsQ0FBRCxDQUFRLENBQ3RDLE1BQU9veEUs
RUFBQSxDQUFlWixDQUFBLENBQWdCeHdFLENBQWhCLENBQWYsQ0FEK0IsQ0FIbkMsQ0FNTHV4RSx1
QkFBd0JBLFFBQVEsQ0FBQzcvRCxDQUFELENBQVMsQ0FHdkMsTUFBT3krRCxFQUFBLENBQVV0bEUs
RUFBQS9HLEtBQUEsQ0FBYTROLENBQUFtMkQsVUFBYixDQUFWLENBQTJDbjJELENBQUFtMkQsVUFI
WCxDQU5wQyxDQTFCYyxDQW5DbEIsQ0EvRXlELENBRk8sSUFpS3JFMkosRUFBaUJuekUsQ0FBQWdk
LGNBQUEsQ0FBdUIsUUFBdkIsQ0FqS29ELENBa0tyRW8yRCxFQUFtQnB6RSxDQUFBZ2QsY0FBQSxD
QUF1QixVQUF2QixDQUV2QixPQUFPLENBQ0xtUyxTQUFVLEdBREwsQ0FFTDRELFNBQVUsQ0FBQSxD
QUZMLENBR0w3RCxRQUFTLENBQUMsUUFBRCxDQUFXLFVBQVgsQ0FISixDQUlMN0MsS0FBTUEsUUFB
USxDQUFDbmdCLENBQUQsQ0FBUWdsRSxDQUFSLENBQXVCdHNFLENBQXZCLENBQTZCd2xFLENBQTdC
LENBQW9DLENBb0xoRGlKLFFBQVNBLEVBQW1CLENBQUNoZ0UsQ0FBRCxDQUFTbk8sQ0FBVCxDQUFr
QixDQUM1Q21PLENBQUFuTyxRQUFBLENBQWlCQSxDQUNqQkEsRUFBQW9zRSxTQUFBLENBQW1CaitE
LENBQUFpK0QsU0FDZmorRCxFQUFBMVIsTUFBSixHQUFxQnVELENBQUF2RCxNQUFyQixHQUFvQ3VE
LENBQUF2RCxNQUFwQyxDQUFvRDBSLENBQUErOUQsWUFBcEQsQ0FDSS85RCxFQUFBZytELE1BQUo7
QUFBcUJuc0UsQ0FBQW1zRSxNQUFyQixHQUNFbnNFLENBQUFtc0UsTUFDQSxDQURnQmgrRCxDQUFB
ZytELE1BQ2hCLENBQUFuc0UsQ0FBQXlZLFlBQUEsQ0FBc0J0SyxDQUFBZytELE1BRnhCLENBSjRD
LENBVTlDaUMsUUFBU0EsRUFBaUIsQ0FBQ2p3RSxDQUFELENBQVM0N0MsQ0FBVCxDQUFrQnJnQyxD
QUFsQixDQUF3QmdzRCxDQUF4QixDQUF5QyxDQUc3RDNyQixDQUFKLEVBQWU5NUMsQ0FBQSxDQUFV
ODVDLENBQUF2NkMsU0FBVixDQUFmLEdBQStDa2EsQ0FBL0MsQ0FFRTFaLENBRkYsQ0FFWSs1QyxD
QUZaLEVBS0UvNUMsQ0FDQSxDQURVMGxFLENBQUF4c0QsVUFBQSxDQUEwQixDQUFBLENBQTFCLENB
Q1YsQ0FBSzZnQyxDQUFMLENBS0U1N0MsQ0FBQTQyRCxhQUFBLENBQW9CLzBELENBQXBCLENBQTZC
KzVDLENBQTdCLENBTEYsQ0FFRTU3QyxDQUFBMFosWUFBQSxDQUFtQjdYLENBQW5CLENBUkosQ0Fj
QSxPQUFPQSxFQWpCMEQsQ0FxQm5FcXVFLFFBQVNBLEVBQW9CLENBQUN0MEIsQ0FBRCxDQUFVLENB
RXJDLElBREEsSUFBSWdELENBQ0osQ0FBT2hELENBQVAsQ0FBQSxDQUNFZ0QsQ0FFQSxDQUZPaEQs
Q0FBQXB2QyxZQUVQLENBREFrUixFQUFBLENBQWFrK0IsQ0FBYixDQUNBLENBQUFBLENBQUEsQ0FB
VWdELENBTHlCLENBVXZDdXhCLFFBQVNBLEVBQTBCLENBQUN2MEIsQ0FBRCxDQUFVLENBQzNDLElB
QUl3MEIsRUFBZUMsQ0FBZkQsRUFBOEJDLENBQUEsQ0FBWSxDQUFaLENBQWxDLENBQ0lDLEVBQWlC
QyxDQUFqQkQsRUFBa0NDLENBQUEsQ0FBYyxDQUFkLENBRXRDLElBQUlILENBQUosRUFBb0JFLENB
QXBCLENBQ0UsSUFBQSxDQUFPMTBCLENBQVAsR0FDT0EsQ0FEUCxHQUNtQncwQixDQURuQixFQUVN
eDBCLENBRk4sR0FFa0IwMEIsQ0FGbEIsRUFBQSxDQUdFMTBCLENBQUEsQ0FBVUEsQ0FBQXB2QyxZ
QUdkLE9BQU9vdkMsRUFYb0MsQ0FlN0M0MEIsUUFBU0EsRUFBYSxFQUFHLENBRXZCLElBQUlDLEVB
QWdCcnJELENBQWhCcXJELEVBQTJCQyxDQUFBQyxVQUFBLEVBRS9CdnJELEVBQUEsQ0FBVXhTLENB
QUE0OEQsV0FBQSxFQUVWLEtBQUlvQixFQUFXLEVBQWYsQ0FDSTdILEVBQWlCOEUsQ0FBQSxDQUFj
LENBQWQsQ0FBQXh6RCxXQUdqQncyRCxFQUFKLEVBQ0VoRCxDQUFBL1csUUFBQSxDQUFzQnVaLENB
QXRCLENBR0Z0SCxFQUFBLENBQWlCb0gsQ0FBQSxDQUEyQnBILENBQTNCLENBRWpCM2pELEVBQUEx
akIsTUFBQW5FLFFBQUEsQ0FBc0J1ekUsUUFBcUIsQ0FBQzlnRSxDQUFELENBQVMsQ0FDbEQsSUFB
STI0QyxDQUFKLENBRUlvb0IsQ0FFQS9nRSxFQUFBMjRDLE1BQUosRUFJRUEsQ0E4QkEsQ0E5QlFp
b0IsQ0FBQSxDQUFTNWdFLENBQUEyNEMsTUFBVCxDQThCUixDQTVCS0EsQ0E0QkwsR0F6QkVxb0Is
Q0FXQSxDQVhlZixDQUFBLENBQWtCcEMsQ0FBQSxDQUFjLENBQWQsQ0FBbEIsQ0FDa0I5RSxDQURs
QixDQUVrQixVQUZsQixDQUdrQmdILENBSGxCLENBV2YsQ0FOQWhILENBTUE7QUFOaUJpSSxDQUFB
eGtFLFlBTWpCLENBSEF3a0UsQ0FBQWhELE1BR0EsQ0FIcUJoK0QsQ0FBQTI0QyxNQUdyQixDQUFB
QSxDQUFBLENBQVFpb0IsQ0FBQSxDQUFTNWdFLENBQUEyNEMsTUFBVCxDQUFSLENBQWlDLENBQy9C
cW9CLGFBQWNBLENBRGlCLENBRS9CQyxxQkFBc0JELENBQUEzMkQsV0FGUyxDQWNuQyxFQU5BMDJE
LENBTUEsQ0FOZ0JkLENBQUEsQ0FBa0J0bkIsQ0FBQXFvQixhQUFsQixDQUNrQnJvQixDQUFBc29C
LHFCQURsQixDQUVrQixRQUZsQixDQUdrQm5CLENBSGxCLENBTWhCLENBRkFFLENBQUEsQ0FBb0Jo
Z0UsQ0FBcEIsQ0FBNEIrZ0UsQ0FBNUIsQ0FFQSxDQUFBcG9CLENBQUFzb0IscUJBQUEsQ0FBNkJG
LENBQUF2a0UsWUFsQy9CLEdBdUNFdWtFLENBTUEsQ0FOZ0JkLENBQUEsQ0FBa0JwQyxDQUFBLENB
QWMsQ0FBZCxDQUFsQixDQUNrQjlFLENBRGxCLENBRWtCLFFBRmxCLENBR2tCK0csQ0FIbEIsQ0FN
aEIsQ0FGQUUsQ0FBQSxDQUFvQmhnRSxDQUFwQixDQUE0QitnRSxDQUE1QixDQUVBLENBQUFoSSxD
QUFBLENBQWlCZ0ksQ0FBQXZrRSxZQTdDbkIsQ0FMa0QsQ0FBcEQsQ0F3REF0UCxPQUFBZSxLQUFB
LENBQVkyeUUsQ0FBWixDQUFBcnpFLFFBQUEsQ0FBOEIsUUFBUSxDQUFDRyxDQUFELENBQU0sQ0FD
MUN3eUUsQ0FBQSxDQUFxQlUsQ0FBQSxDQUFTbHpFLENBQVQsQ0FBQXV6RSxxQkFBckIsQ0FEMEMs
Q0FBNUMsQ0FHQWYsRUFBQSxDQUFxQm5ILENBQXJCLENBRUFtSSxFQUFBemhCLFFBQUEsRUFHQSxJ
QUFLLENBQUF5aEIsQ0FBQXBpQixTQUFBLENBQXFCMmhCLENBQXJCLENBQUwsQ0FBMEMsQ0FDeEMs
SUFBSVUsRUFBWVQsQ0FBQUMsVUFBQSxFQUNoQixFQUFJLzlELENBQUE2N0QsUUFBQSxDQUFxQnBy
RSxFQUFBLENBQU9vdEUsQ0FBUCxDQUFzQlUsQ0FBdEIsQ0FBckIsQ0FBd0RWLENBQXhELEdBQTBF
VSxDQUE5RSxJQUNFRCxDQUFBN2hCLGNBQUEsQ0FBMEI4aEIsQ0FBMUIsQ0FDQSxDQUFBRCxDQUFB
emhCLFFBQUEsRUFGRixDQUZ3QyxDQWhGbkIsQ0F6T3pCLElBQUl5aEIsRUFBY25LLENBQUEsQ0FB
TSxDQUFOLENBQ2xCLElBQUttSyxDQUFMLENBQUEsQ0FFQSxJQUFJUixFQUFhM0osQ0FBQSxDQUFN
LENBQU4sQ0FDYjlRLEVBQUFBLENBQVcxMEQsQ0FBQTAwRCxTQUtmLEtBREEsSUFBSW9hLENBQUos
Q0FDU2x5RSxFQUFJLENBRGIsQ0FDZ0IweUMsRUFBV2c5QixDQUFBaDlCLFNBQUEsRUFEM0IsQ0FD
cUQ3eEMsRUFBSzZ4QyxDQUFBNXpDLE9BQTFELENBQTJFa0IsQ0FBM0U7QUFBK0VhLENBQS9FLENB
QW1GYixDQUFBLEVBQW5GLENBQ0UsR0FBMEIsRUFBMUIsR0FBSTB5QyxDQUFBLENBQVMxeUMsQ0FB
VCxDQUFBRyxNQUFKLENBQThCLENBQzVCK3hFLENBQUEsQ0FBY3gvQixDQUFBMEwsR0FBQSxDQUFZ
cCtDLENBQVosQ0FDZCxNQUY0QixDQU1oQyxJQUFJMHlFLEVBQXNCLENBQUVSLENBQUFBLENBQTVC
LENBRUlFLEVBQWdCM3FFLENBQUEsQ0FBT2txRSxDQUFBLzBELFVBQUEsQ0FBeUIsQ0FBQSxDQUF6
QixDQUFQLENBQ3BCdzFELEVBQUFqc0UsSUFBQSxDQUFrQixHQUFsQixDQUVBLEtBQUk4Z0IsQ0FB
SixDQUNJeFMsRUFBWSs2RCxDQUFBLENBQXVCcHNFLENBQUFxUixVQUF2QixDQUF1Q2k3RCxDQUF2
QyxDQUFzRGhsRSxDQUF0RCxDQWdDWG90RCxFQUFMLEVBZ0RFaWIsQ0FBQXBpQixTQWlDQSxDQWpD
dUJzaUIsUUFBUSxDQUFDOXlFLENBQUQsQ0FBUSxDQUNyQyxNQUFPLENBQUNBLENBQVIsRUFBa0Ms
Q0FBbEMsR0FBaUJBLENBQUFyQixPQURvQixDQWlDdkMsQ0E1QkF5ekUsQ0FBQVcsV0E0QkEsQ0E1
QndCQyxRQUErQixDQUFDaHpFLENBQUQsQ0FBUSxDQUM3RDhtQixDQUFBMWpCLE1BQUFuRSxRQUFB
LENBQXNCLFFBQVEsQ0FBQ3lTLENBQUQsQ0FBUyxDQUNyQ0EsQ0FBQW5PLFFBQUFxMEQsU0FBQSxD
QUEwQixDQUFBLENBRFcsQ0FBdkMsQ0FJSTUzRCxFQUFKLEVBQ0VBLENBQUFmLFFBQUEsQ0FBYyxR
QUFRLENBQUNvcEQsQ0FBRCxDQUFPLENBRTNCLENBREkzMkMsQ0FDSixDQURhb1YsQ0FBQXdxRCx1
QkFBQSxDQUErQmpwQixDQUEvQixDQUNiLEdBQWVzbkIsQ0FBQWorRCxDQUFBaStELFNBQWYsR0FB
Z0NqK0QsQ0FBQW5PLFFBQUFxMEQsU0FBaEMsQ0FBMEQsQ0FBQSxDQUExRCxDQUYyQixDQUE3QixD
QU4yRCxDQTRCL0QsQ0FkQXdhLENBQUFDLFVBY0EsQ0FkdUJZLFFBQThCLEVBQUcsQ0FBQSxJQUNs
REMsRUFBaUIzRCxDQUFBdnBFLElBQUEsRUFBakJrdEUsRUFBd0MsRUFEVSxDQUVsREMsRUFBYSxF
QUVqQmwwRSxFQUFBLENBQVFpMEUsQ0FBUixDQUF3QixRQUFRLENBQUNsekUsQ0FBRCxDQUFRLENB
Q2xDMFIsQ0FBQUEsQ0FBU29WLENBQUFzcUQsZUFBQSxDQUF1QnB4RSxDQUF2QixDQUNSMFIsRUFB
QWkrRCxTQUFMLEVBQXNCd0QsQ0FBQTd1RSxLQUFBLENBQWdCd2lCLENBQUF5cUQsdUJBQUEsQ0FB
K0I3L0QsQ0FBL0IsQ0FBaEIsQ0FGZ0IsQ0FBeEMsQ0FLQSxPQUFPeWhFLEVBVCtDLENBY3hELENB
QUk3K0QsQ0FBQTY3RCxRQUFKLEVBRUU1bEUsQ0FBQWl5QixpQkFBQSxDQUF1QixRQUFRLEVBQUcs
Q0FDaEMsR0FBSXg5QixDQUFBLENBQVE0ekUsQ0FBQS9oQixXQUFSLENBQUosQ0FDRSxNQUFPK2hC
LEVBQUEvaEIsV0FBQTlELElBQUEsQ0FBMkIsUUFBUSxDQUFDL3NELENBQUQsQ0FBUSxDQUNoRCxN
QUFPc1UsRUFBQWs4RCxnQkFBQSxDQUEwQnh3RSxDQUExQixDQUR5QyxDQUEzQyxDQUZ1QixDQUFs
QztBQU1HLFFBQVEsRUFBRyxDQUNaNHlFLENBQUF6aEIsUUFBQSxFQURZLENBTmQsQ0FuRkosR0FF
RWloQixDQUFBVyxXQXFDQSxDQXJDd0JDLFFBQTRCLENBQUNoekUsQ0FBRCxDQUFRLENBQzFELElB
QUkwUixFQUFTb1YsQ0FBQXdxRCx1QkFBQSxDQUErQnR4RSxDQUEvQixDQUVUMFIsRUFBSixFQUFl
aStELENBQUFqK0QsQ0FBQWkrRCxTQUFmLENBQ01KLENBQUEsQ0FBYyxDQUFkLENBQUF2dkUsTUFE
TixHQUNpQzBSLENBQUErOUQsWUFEakMsR0FWRndDLENBQUExbUQsT0FBQSxFQWlCTSxDQS9CRGdu
RCxDQStCQyxFQTlCSlIsQ0FBQXhtRCxPQUFBLEVBOEJJLENBRkFna0QsQ0FBQSxDQUFjLENBQWQs
Q0FBQXZ2RSxNQUVBLENBRnlCMFIsQ0FBQSs5RCxZQUV6QixDQURBLzlELENBQUFuTyxRQUFBcTBE
LFNBQ0EsQ0FEMEIsQ0FBQSxDQUMxQixDQUFBbG1ELENBQUFuTyxRQUFBOGEsYUFBQSxDQUE0QixV
QUE1QixDQUF3QyxVQUF4QyxDQVBKLEVBVWdCLElBQWQsR0FBSXJlLENBQUosRUFBc0J1eUUsQ0FB
dEIsRUFwQkpOLENBQUExbUQsT0FBQSxFQWxCQSxDQUxLZ25ELENBS0wsRUFKRWhELENBQUEvVyxR
QUFBLENBQXNCdVosQ0FBdEIsQ0FJRixDQUZBeEMsQ0FBQXZwRSxJQUFBLENBQWtCLEVBQWxCLENB
RUEsQ0FEQStyRSxDQUFBL3VFLEtBQUEsQ0FBaUIsVUFBakIsQ0FBNkIsQ0FBQSxDQUE3QixDQUNB
LENBQUErdUUsQ0FBQTl1RSxLQUFBLENBQWlCLFVBQWpCLENBQTZCLENBQUEsQ0FBN0IsQ0FzQ0ks
R0FsQ0NzdkUsQ0FVTCxFQVRFUixDQUFBeG1ELE9BQUEsRUFTRixDQUhBZ2tELENBQUEvVyxRQUFB
LENBQXNCeVosQ0FBdEIsQ0FHQSxDQUZBMUMsQ0FBQXZwRSxJQUFBLENBQWtCLEdBQWxCLENBRUEs
Q0FEQWlzRSxDQUFBanZFLEtBQUEsQ0FBbUIsVUFBbkIsQ0FBK0IsQ0FBQSxDQUEvQixDQUNBLENB
QUFpdkUsQ0FBQWh2RSxLQUFBLENBQW1CLFVBQW5CLENBQStCLENBQUEsQ0FBL0IsQ0F3QkksQ0Fi
d0QsQ0FxQzVELENBZEFtdkUsQ0FBQUMsVUFjQSxDQWR1QlksUUFBMkIsRUFBRyxDQUVuRCxJQUFJ
RyxFQUFpQnRzRCxDQUFBc3FELGVBQUEsQ0FBdUI3QixDQUFBdnBFLElBQUEsRUFBdkIsQ0FFckIs
T0FBSW90RSxFQUFKLEVBQXVCekQsQ0FBQXlELENBQUF6RCxTQUF2QjtDQWhERzRDLENBbURNLEVB
bERUUixDQUFBeG1ELE9BQUEsRUFrRFMsQ0FyQ1gwbUQsQ0FBQTFtRCxPQUFBLEVBcUNXLENBQUF6
RSxDQUFBeXFELHVCQUFBLENBQStCNkIsQ0FBL0IsQ0FIVCxFQUtPLElBVDRDLENBY3JELENBQUk5
K0QsQ0FBQTY3RCxRQUFKLEVBQ0U1bEUsQ0FBQTVILE9BQUEsQ0FDRSxRQUFRLEVBQUcsQ0FBRSxN
QUFPMlIsRUFBQWs4RCxnQkFBQSxDQUEwQm9DLENBQUEvaEIsV0FBMUIsQ0FBVCxDQURiLENBRUUs
UUFBUSxFQUFHLENBQUUraEIsQ0FBQXpoQixRQUFBLEVBQUYsQ0FGYixDQXhDSixDQWlHSW9oQixF
QUFKLEVBSUVSLENBQUF4bUQsT0FBQSxFQU9BLENBSkF3OUMsQ0FBQSxDQUFTZ0osQ0FBVCxDQUFB
LENBQXNCeG5FLENBQXRCLENBSUEsQ0FBQXduRSxDQUFBMXdELFlBQUEsQ0FBd0IsVUFBeEIsQ0FY
RixFQWFFMHdELENBYkYsQ0FhZ0J6cUUsQ0FBQSxDQUFPa3FFLENBQUEvMEQsVUFBQSxDQUF5QixD
QUFBLENBQXpCLENBQVAsQ0FLaEJ5MUQsRUFBQSxFQUdBM25FLEVBQUFpeUIsaUJBQUEsQ0FBdUJs
b0IsQ0FBQXc4RCxjQUF2QixDQUFnRG9CLENBQWhELENBM0tBLENBSmdELENBSjdDLENBcEtrRSxD
QUFsRCxDQTFtRXpCLENBMndGSXorRCxHQUF1QixDQUFDLFNBQUQsQ0FBWSxjQUFaLENBQTRCLE1B
QTVCLENBQW9DLFFBQVEsQ0FBQ28xQyxDQUFELENBQVV0eEMsQ0FBVixDQUF3QmMsQ0FBeEIsQ0FB
OEIsQ0FBQSxJQUMvRmc3RCxFQUFRLEtBRHVGLENBRS9GQyxFQUFVLG9CQUVkLE9BQU8sQ0FDTDVv
RCxLQUFNQSxRQUFRLENBQUNuZ0IsQ0FBRCxDQUFRaEgsQ0FBUixDQUFpQk4sQ0FBakIsQ0FBdUIs
Q0FvRG5Dc3dFLFFBQVNBLEVBQWlCLENBQUNDLENBQUQsQ0FBVSxDQUNsQ2p3RSxDQUFBZzJCLEtB
QUEsQ0FBYWk2QyxDQUFiLEVBQXdCLEVBQXhCLENBRGtDLENBcERELElBQy9CQyxFQUFZeHdFLENB
QUFnbUMsTUFEbUIsQ0FFL0J5cUMsRUFBVXp3RSxDQUFBNHVCLE1BQUF3UixLQUFWcXdDLEVBQTZC
bndFLENBQUFOLEtBQUEsQ0FBYUEsQ0FBQTR1QixNQUFBd1IsS0FBYixDQUZFLENBRy9CM29CLEVB
QVN6WCxDQUFBeVgsT0FBVEEsRUFBd0IsQ0FITyxDQUkvQmk1RCxFQUFRcHBFLENBQUE2MUMsTUFB
QSxDQUFZc3pCLENBQVosQ0FBUkMsRUFBZ0MsRUFKRCxDQUsvQkM7QUFBYyxFQUxpQixDQU0vQjcx
QyxFQUFjeG1CLENBQUF3bUIsWUFBQSxFQU5pQixDQU8vQkMsRUFBWXptQixDQUFBeW1CLFVBQUEs
RUFQbUIsQ0FRL0I2MUMsRUFBbUI5MUMsQ0FBbkI4MUMsQ0FBaUNKLENBQWpDSSxDQUE2QyxHQUE3
Q0EsQ0FBbURuNUQsQ0FBbkRtNUQsQ0FBNEQ3MUMsQ0FSN0IsQ0FTL0I4MUMsRUFBZWpwRSxFQUFB
aEosS0FUZ0IsQ0FVL0JreUUsQ0FFSjkwRSxFQUFBLENBQVFnRSxDQUFSLENBQWMsUUFBUSxDQUFD
ZzhCLENBQUQsQ0FBYSswQyxDQUFiLENBQTRCLENBQ2hELElBQUlDLEVBQVdYLENBQUEvM0QsS0FB
QSxDQUFheTRELENBQWIsQ0FDWEMsRUFBSixHQUNNQyxDQUNKLEVBRGVELENBQUEsQ0FBUyxDQUFU
LENBQUEsQ0FBYyxHQUFkLENBQW9CLEVBQ25DLEVBRHlDendFLENBQUEsQ0FBVXl3RSxDQUFBLENB
QVMsQ0FBVCxDQUFWLENBQ3pDLENBQUFOLENBQUEsQ0FBTU8sQ0FBTixDQUFBLENBQWlCM3dFLENB
QUFOLEtBQUEsQ0FBYUEsQ0FBQTR1QixNQUFBLENBQVdtaUQsQ0FBWCxDQUFiLENBRm5CLENBRmdE
LENBQWxELENBT0EvMEUsRUFBQSxDQUFRMDBFLENBQVIsQ0FBZSxRQUFRLENBQUMxMEMsQ0FBRCxD
QUFhNy9CLENBQWIsQ0FBa0IsQ0FDdkN3MEUsQ0FBQSxDQUFZeDBFLENBQVosQ0FBQSxDQUFtQm1Z
LENBQUEsQ0FBYTBuQixDQUFBbjNCLFFBQUEsQ0FBbUJ1ckUsQ0FBbkIsQ0FBMEJRLENBQTFCLENB
QWIsQ0FEb0IsQ0FBekMsQ0FLQXRwRSxFQUFBNUgsT0FBQSxDQUFhOHdFLENBQWIsQ0FBd0JVLFFB
QStCLENBQUM1dEQsQ0FBRCxDQUFTLENBQzlELElBQUkwaUIsRUFBUThnQixVQUFBLENBQVd4akMs
Q0FBWCxDQUFaLENBQ0k2dEQsRUFBYXh0RSxLQUFBLENBQU1xaUMsQ0FBTixDQUVabXJDLEVBQUws
RUFBcUJuckMsQ0FBckIsR0FBOEIwcUMsRUFBOUIsR0FHRTFxQyxDQUhGLENBR1U0ZixDQUFBbmQs
VUFBQSxDQUFrQnpDLENBQWxCLENBQTBCdnVCLENBQTFCLENBSFYsQ0FRS3V1QixFQUFMLEdBQWU4
cUMsQ0FBZixFQUErQkssQ0FBL0IsRUFBNkM3eEUsQ0FBQSxDQUFTd3hFLENBQVQsQ0FBN0MsRUFB
b0VudEUsS0FBQSxDQUFNbXRFLENBQU4sQ0FBcEUsR0FDRUQsQ0FBQSxFQVdBLENBVklPLENBVUos
Q0FWZ0JULENBQUEsQ0FBWTNxQyxDQUFaLENBVWhCLENBVEk3bUMsQ0FBQSxDQUFZaXlFLENBQVos
Q0FBSixFQUNnQixJQUlkLEVBSkk5dEQsQ0FJSixFQUhFbE8sQ0FBQSs0QixNQUFBLENBQVcsb0NB
QVgsQ0FBa0RuSSxDQUFsRCxDQUEwRCxPQUExRCxDQUFvRXlxQyxDQUFwRSxDQUdGLENBREFJLENB
Q0EsQ0FEZWp5RSxDQUNmLENBQUEweEUsQ0FBQSxFQUxGLEVBT0VPLENBUEYsQ0FPaUJ2cEUsQ0FB
QTVILE9BQUEsQ0FBYTB4RSxDQUFiLENBQXdCZCxDQUF4QixDQUVqQixDQUFBUSxDQUFBLENBQVk5
cUMsQ0FaZCxDQVo4RCxDQUFoRSxDQXhCbUMsQ0FEaEMsQ0FKNEYsQ0FBMUUsQ0Ezd0YzQixDQXFu
R0l0MUIsR0FBb0IsQ0FBQyxRQUFELENBQVcsVUFBWCxDQUF1QixRQUFRLENBQUM0RSxDQUFELENB
QVNsQyxDQUFULENBQW1CLENBRXhFLElBQUlpK0QsRUFBaUIvMUUsQ0FBQSxDQUFPLFVBQVAsQ0FB
ckIsQ0FFSWcyRSxFQUFjQSxRQUFRLENBQUNocUUsQ0FBRCxDQUFRNUcsQ0FBUjtBQUFlNndFLENB
QWYsQ0FBZ0N4MEUsQ0FBaEMsQ0FBdUN5MEUsQ0FBdkMsQ0FBc0RyMUUsQ0FBdEQsQ0FBMkRzMUUs
Q0FBM0QsQ0FBd0UsQ0FFaEducUUsQ0FBQSxDQUFNaXFFLENBQU4sQ0FBQSxDQUF5QngwRSxDQUNy
QnkwRSxFQUFKLEdBQW1CbHFFLENBQUEsQ0FBTWtxRSxDQUFOLENBQW5CLENBQTBDcjFFLENBQTFD
LENBQ0FtTCxFQUFBK3BELE9BQUEsQ0FBZTN3RCxDQUNmNEcsRUFBQW9xRSxPQUFBLENBQTBCLENB
QTFCLEdBQWdCaHhFLENBQ2hCNEcsRUFBQXFxRSxNQUFBLENBQWVqeEUsQ0FBZixHQUEwQit3RSxD
QUExQixDQUF3QyxDQUN4Q25xRSxFQUFBc3FFLFFBQUEsQ0FBZ0IsRUFBRXRxRSxDQUFBb3FFLE9B
QUYsRUFBa0JwcUUsQ0FBQXFxRSxNQUFsQixDQUVoQnJxRSxFQUFBdXFFLEtBQUEsQ0FBYSxFQUFF
dnFFLENBQUF3cUUsTUFBRixDQUE4QixDQUE5QixJQUFpQnB4RSxDQUFqQixDQUF1QixDQUF2QixF
QVRtRixDQXNCbEcsT0FBTyxDQUNMNnBCLFNBQVUsR0FETCxDQUVMc0ssYUFBYyxDQUFBLENBRlQs
Q0FHTGxILFdBQVksU0FIUCxDQUlMdEQsU0FBVSxHQUpMLENBS0w4RCxTQUFVLENBQUEsQ0FMTCxD
QU1MdUYsTUFBTyxDQUFBLENBTkYsQ0FPTG5zQixRQUFTd3FFLFFBQXdCLENBQUMxbUQsQ0FBRCxD
QUFXdUQsQ0FBWCxDQUFrQixDQUNqRCxJQUFJb04sRUFBYXBOLENBQUFuZSxTQUFqQixDQUNJdWhF
LEVBQXFCNTJFLENBQUF1NEIsY0FBQSxDQUF1QixpQkFBdkIsQ0FBMkNxSSxDQUEzQyxDQUF3RCxH
QUF4RCxDQUR6QixDQUdJdjZCLEVBQVF1NkIsQ0FBQXY2QixNQUFBLENBQWlCLDRGQUFqQixDQUVa
LElBQUtBLENBQUFBLENBQUwsQ0FDRSxLQUFNNHZFLEVBQUEsQ0FBZSxNQUFmLENBQ0ZyMUMsQ0FE
RSxDQUFOLENBSUYsSUFBSTRqQyxFQUFNbitELENBQUEsQ0FBTSxDQUFOLENBQVYsQ0FDSWsrRCxF
QUFNbCtELENBQUEsQ0FBTSxDQUFOLENBRFYsQ0FFSXd3RSxFQUFVeHdFLENBQUEsQ0FBTSxDQUFO
LENBRmQsQ0FHSXl3RSxFQUFhendFLENBQUEsQ0FBTSxDQUFOLENBSGpCLENBS0FBLEVBQVFtK0Qs
Q0FBQW4rRCxNQUFBLENBQVUsd0RBQVYsQ0FFUjtHQUFLQSxDQUFBQSxDQUFMLENBQ0UsS0FBTTR2
RSxFQUFBLENBQWUsUUFBZixDQUNGelIsQ0FERSxDQUFOLENBR0YsSUFBSTJSLEVBQWtCOXZFLENB
QUEsQ0FBTSxDQUFOLENBQWxCOHZFLEVBQThCOXZFLENBQUEsQ0FBTSxDQUFOLENBQWxDLENBQ0kr
dkUsRUFBZ0IvdkUsQ0FBQSxDQUFNLENBQU4sQ0FFcEIsSUFBSXd3RSxDQUFKLEdBQWlCLENBQUEs
NEJBQUE3d0UsS0FBQSxDQUFrQzZ3RSxDQUFsQyxDQUFqQixFQUNJLDJGQUFBN3dFLEtBQUEsQ0FB
aUc2d0UsQ0FBakcsQ0FESixFQUVFLEtBQU1aLEVBQUEsQ0FBZSxVQUFmLENBQ0pZLENBREksQ0FB
TixDQTNCK0MsSUErQjdDRSxDQS9CNkMsQ0ErQjNCQyxDQS9CMkIsQ0ErQlhDLENBL0JXLENBK0JP
QyxDQS9CUCxDQWdDN0NDLEVBQWUsQ0FBQ3A1QixJQUFLOTZCLEVBQU4sQ0FFZjZ6RCxFQUFKLENB
Q0VDLENBREYsQ0FDcUI3OEQsQ0FBQSxDQUFPNDhELENBQVAsQ0FEckIsRUFHRUcsQ0FHQSxDQUht
QkEsUUFBUSxDQUFDbDJFLENBQUQsQ0FBTVksQ0FBTixDQUFhLENBQ3RDLE1BQU9zaEIsR0FBQSxD
QUFRdGhCLENBQVIsQ0FEK0IsQ0FHeEMsQ0FBQXUxRSxDQUFBLENBQWlCQSxRQUFRLENBQUNuMkUs
Q0FBRCxDQUFNLENBQzdCLE1BQU9BLEVBRHNCLENBTmpDLENBV0EsT0FBT3EyRSxTQUFxQixDQUFD
OWdELENBQUQsQ0FBU3JHLENBQVQsQ0FBbUJ1RCxDQUFuQixDQUEwQjA5QixDQUExQixDQUFnQzE2
QixDQUFoQyxDQUE2QyxDQUVuRXVnRCxDQUFKLEdBQ0VDLENBREYsQ0FDbUJBLFFBQVEsQ0FBQ2oy
RSxDQUFELENBQU1ZLENBQU4sQ0FBYTJELENBQWIsQ0FBb0IsQ0FFdkM4d0UsQ0FBSixHQUFtQmUs
Q0FBQSxDQUFhZixDQUFiLENBQW5CLENBQWlEcjFFLENBQWpELENBQ0FvMkUsRUFBQSxDQUFhaEIs
Q0FBYixDQUFBLENBQWdDeDBFLENBQ2hDdzFFLEVBQUFsaEIsT0FBQSxDQUFzQjN3RCxDQUN0QixP
QUFPeXhFLEVBQUEsQ0FBaUJ6Z0QsQ0FBakIsQ0FBeUI2Z0QsQ0FBekIsQ0FMb0MsQ0FEL0MsQ0Fr
QkEsS0FBSUUsRUFBZXJ3RSxFQUFBLEVBR25Cc3ZCLEVBQUE2SCxpQkFBQSxDQUF3Qm9tQyxDQUF4
QixDQUE2QitTLFFBQXVCLENBQUNwcEQsQ0FBRCxDQUFhLENBQUEsSUFDM0Q1b0IsQ0FEMkQsQ0FD
cERoRixDQURvRCxDQUUzRGkzRSxFQUFldG5ELENBQUEsQ0FBUyxDQUFULENBRjRDLENBSTNEdW5E
LENBSjJELENBTzNEQyxFQUFlendFLEVBQUEsRUFQNEMsQ0FRM0Qwd0UsQ0FSMkQsQ0FTM0QzMkUs
Q0FUMkQsQ0FTdERZLENBVHNELENBVTNEZzJFLENBVjJELENBWTNEQyxDQVoyRCxDQWEzRGhtRSxD
QWIyRCxDQWMzRGltRSxDQUdBaEIsRUFBSixHQUNFdmdELENBQUEsQ0FBT3VnRCxDQUFQLENBREYs
Q0FDb0Izb0QsQ0FEcEIsQ0FJQSxJQUFJL3RCLEVBQUEsQ0FBWSt0QixDQUFaLENBQUosQ0FDRTBw
RCxDQUNBO0FBRGlCMXBELENBQ2pCLENBQUE0cEQsQ0FBQSxDQUFjZCxDQUFkLEVBQWdDQyxDQUZs
QyxLQU9FLEtBQVN0RixDQUFULEdBSEFtRyxFQUdvQjVwRCxDQUhOOG9ELENBR005b0QsRUFIWWdw
RCxDQUdaaHBELENBRHBCMHBELENBQ29CMXBELENBREgsRUFDR0EsQ0FBQUEsQ0FBcEIsQ0FDTUEs
Q0FBQWp0QixlQUFBLENBQTBCMHdFLENBQTFCLENBQUosRUFBZ0UsR0FBaEUsR0FBMENBLENBQUFs
ckUsT0FBQSxDQUFlLENBQWYsQ0FBMUMsRUFDRW14RSxDQUFBM3hFLEtBQUEsQ0FBb0IwckUsQ0FB
cEIsQ0FLTitGLEVBQUEsQ0FBbUJFLENBQUF0M0UsT0FDbkJ1M0UsRUFBQSxDQUFxQjl3RCxLQUFK
LENBQVUyd0QsQ0FBVixDQUdqQixLQUFLcHlFLENBQUwsQ0FBYSxDQUFiLENBQWdCQSxDQUFoQixD
QUF3Qm95RSxDQUF4QixDQUEwQ3B5RSxDQUFBLEVBQTFDLENBSUUsR0FIQXZFLENBR0ksQ0FIR210
QixDQUFELEdBQWdCMHBELENBQWhCLENBQWtDdHlFLENBQWxDLENBQTBDc3lFLENBQUEsQ0FBZXR5
RSxDQUFmLENBRzVDLENBRkozRCxDQUVJLENBRkl1c0IsQ0FBQSxDQUFXbnRCLENBQVgsQ0FFSixD
QURKNDJFLENBQ0ksQ0FEUUcsQ0FBQSxDQUFZLzJFLENBQVosQ0FBaUJZLENBQWpCLENBQXdCMkQs
Q0FBeEIsQ0FDUixDQUFBK3hFLENBQUEsQ0FBYU0sQ0FBYixDQUFKLENBRUUvbEUsQ0FHQSxDQUhR
eWxFLENBQUEsQ0FBYU0sQ0FBYixDQUdSLENBRkEsT0FBT04sQ0FBQSxDQUFhTSxDQUFiLENBRVAs
Q0FEQUYsQ0FBQSxDQUFhRSxDQUFiLENBQ0EsQ0FEMEIvbEUsQ0FDMUIsQ0FBQWltRSxDQUFBLENB
QWV2eUUsQ0FBZixDQUFBLENBQXdCc00sQ0FMMUIsS0FNTyxDQUFBLEdBQUk2bEUsQ0FBQSxDQUFh
RSxDQUFiLENBQUosQ0FLTCxLQUhBLzJFLEVBQUEsQ0FBUWkzRSxDQUFSLENBQXdCLFFBQVEsQ0FB
Q2ptRSxDQUFELENBQVEsQ0FDbENBLENBQUosRUFBYUEsQ0FBQTFGLE1BQWIsR0FBMEJtckUsQ0FB
QSxDQUFhemxFLENBQUFnYixHQUFiLENBQTFCLENBQW1EaGIsQ0FBbkQsQ0FEc0MsQ0FBeEMsQ0FH
TSxDQUFBcWtFLENBQUEsQ0FBZSxPQUFmLENBRUZyMUMsQ0FGRSxDQUVVKzJDLENBRlYsQ0FFcUJo
MkUsQ0FGckIsQ0FBTixDQUtBazJFLENBQUEsQ0FBZXZ5RSxDQUFmLENBQUEsQ0FBd0IsQ0FBQ3Nu
QixHQUFJK3FELENBQUwsQ0FBZ0J6ckUsTUFBT2pNLENBQXZCLENBQWtDaUosTUFBT2pKLENBQXpD
LENBQ3hCdzNFLEVBQUEsQ0FBYUUsQ0FBYixDQUFBLENBQTBCLENBQUEsQ0FYckIsQ0FnQlQsSUFB
U0ksQ0FBVCxHQUFxQlYsRUFBckIsQ0FBbUMsQ0FDakN6bEUsQ0FBQSxDQUFReWxFLENBQUEsQ0FB
YVUsQ0FBYixDQUNScDdDLEVBQUEsQ0FBbUJsdEIsRUFBQSxDQUFjbUMsQ0FBQTFJLE1BQWQsQ0FD
bkI4TyxFQUFBc2xELE1BQUEsQ0FBZTNnQyxDQUFmLENBQ0EsSUFBSUEsQ0FBQSxDQUFpQixDQUFq
QixDQUFBamMsV0FBSixDQUdFLElBQUtwYixDQUFXLENBQUgsQ0FBRyxDQUFBaEYsQ0FBQSxDQUFT
cThCLENBQUFyOEIsT0FBekIsQ0FBa0RnRixDQUFsRCxDQUEwRGhGLENBQTFELENBQWtFZ0YsQ0FB
QSxFQUFsRSxDQUNFcTNCLENBQUEsQ0FBaUJyM0IsQ0FBakIsQ0FBQSxhQUFBLENBQXNDLENBQUEs
Q0FHMUNzTSxFQUFBMUYsTUFBQXlDLFNBQUEsRUFYaUMsQ0FlbkMsSUFBS3JKLENBQUwsQ0FBYSxD
QUFiLENBQWdCQSxDQUFoQixDQUF3Qm95RSxDQUF4QixDQUEwQ3B5RSxDQUFBLEVBQTFDLENBS0Us
R0FKQXZFLENBSUltTCxDQUpHZ2lCLENBQUQsR0FBZ0IwcEQsQ0FBaEIsQ0FBa0N0eUUsQ0FBbEMs
Q0FBMENzeUUsQ0FBQSxDQUFldHlFLENBQWYsQ0FJNUM0RyxDQUhKdkssQ0FHSXVLLENBSElnaUIs
Q0FBQSxDQUFXbnRCLENBQVgsQ0FHSm1MLENBRkowRixDQUVJMUYsQ0FGSTJyRSxDQUFBLENBQWV2
eUUsQ0FBZixDQUVKNEcsQ0FBQTBGLENBQUExRixNQUFKLENBQWlCLENBSWZzckUsQ0FBQTtBQUFX
RCxDQUdYLEdBQ0VDLEVBQUEsQ0FBV0EsQ0FBQTNuRSxZQURiLE9BRVMybkUsQ0FGVCxFQUVxQkEs
Q0FBQSxhQUZyQixDQUlrQjVsRSxFQW5MckIxSSxNQUFBLENBQVksQ0FBWixDQW1MRyxFQUE0QnN1
RSxDQUE1QixFQUVFeC9ELENBQUFxbEQsS0FBQSxDQUFjNXRELEVBQUEsQ0FBY21DLENBQUExSSxN
QUFkLENBQWQsQ0FBMEMsSUFBMUMsQ0FBZ0RELENBQUEsQ0FBT3N1RSxDQUFQLENBQWhELENBRUZB
LEVBQUEsQ0FBMkIzbEUsQ0FuTDlCMUksTUFBQSxDQW1MOEIwSSxDQW5MbEIxSSxNQUFBNUksT0FB
WixDQUFpQyxDQUFqQyxDQW9MRzQxRSxFQUFBLENBQVl0a0UsQ0FBQTFGLE1BQVosQ0FBeUI1RyxD
QUF6QixDQUFnQzZ3RSxDQUFoQyxDQUFpRHgwRSxDQUFqRCxDQUF3RHkwRSxDQUF4RCxDQUF1RXIx
RSxDQUF2RSxDQUE0RTIyRSxDQUE1RSxDQWhCZSxDQUFqQixJQW1CRWxoRCxFQUFBLENBQVl3aEQs
UUFBMkIsQ0FBQzl1RSxDQUFELENBQVFnRCxDQUFSLENBQWUsQ0FDcEQwRixDQUFBMUYsTUFBQSxD
QUFjQSxDQUVkLEtBQUl5RCxFQUFVaW5FLENBQUF4NEQsVUFBQSxDQUE2QixDQUFBLENBQTdCLENB
Q2RsVixFQUFBLENBQU1BLENBQUE1SSxPQUFBLEVBQU4sQ0FBQSxDQUF3QnFQLENBR3hCcUksRUFB
QW9sRCxNQUFBLENBQWVsMEQsQ0FBZixDQUFzQixJQUF0QixDQUE0QkQsQ0FBQSxDQUFPc3VFLENB
QVAsQ0FBNUIsQ0FDQUEsRUFBQSxDQUFlNW5FLENBSWZpQyxFQUFBMUksTUFBQSxDQUFjQSxDQUNk
dXVFLEVBQUEsQ0FBYTdsRSxDQUFBZ2IsR0FBYixDQUFBLENBQXlCaGIsQ0FDekJza0UsRUFBQSxD
QUFZdGtFLENBQUExRixNQUFaLENBQXlCNUcsQ0FBekIsQ0FBZ0M2d0UsQ0FBaEMsQ0FBaUR4MEUs
Q0FBakQsQ0FBd0R5MEUsQ0FBeEQsQ0FBdUVyMUUsQ0FBdkUsQ0FBNEUyMkUsQ0FBNUUsQ0Fkb0Qs
Q0FBdEQsQ0FrQkpMLEVBQUEsQ0FBZUksQ0ExSGdELENBQWpFLENBdkJ1RSxDQTdDeEIsQ0FQOUMs
Q0ExQmlFLENBQWxELENBcm5HeEIsQ0EwL0dJamlFLEdBQWtCLENBQUMsVUFBRCxDQUFhLFFBQVEs
Q0FBQ3dDLENBQUQsQ0FBVyxDQUNwRCxNQUFPLENBQ0xtWCxTQUFVLEdBREwsQ0FFTHNLLGFBQWMs
Q0FBQSxDQUZULENBR0xwTixLQUFNQSxRQUFRLENBQUNuZ0IsQ0FBRCxDQUFRaEgsQ0FBUixDQUFp
Qk4sQ0FBakIsQ0FBdUIsQ0FDbkNzSCxDQUFBNUgsT0FBQSxDQUFhTSxDQUFBMlEsT0FBYixDQUEw
QjBpRSxRQUEwQixDQUFDdDJFLENBQUQsQ0FBUSxDQUsxRHFXLENBQUEsQ0FBU3JXLENBQUEsQ0FB
USxhQUFSLENBQXdCLFVBQWpDLENBQUEsQ0FBNkN1RCxDQUE3QyxDQXpLWWd6RSxTQXlLWixDQUFx
RSxDQUNuRXphLFlBektzQjBhLGlCQXdLNkMsQ0FBckUsQ0FMMEQsQ0FBNUQsQ0FEbUMsQ0FIaEMs
Q0FENkMsQ0FBaEMsQ0ExL0d0QixDQTRwSEl6akUsR0FBa0IsQ0FBQyxVQUFEO0FBQWEsUUFBUSxD
QUFDc0QsQ0FBRCxDQUFXLENBQ3BELE1BQU8sQ0FDTG1YLFNBQVUsR0FETCxDQUVMc0ssYUFBYyxD
QUFBLENBRlQsQ0FHTHBOLEtBQU1BLFFBQVEsQ0FBQ25nQixDQUFELENBQVFoSCxDQUFSLENBQWlC
TixDQUFqQixDQUF1QixDQUNuQ3NILENBQUE1SCxPQUFBLENBQWFNLENBQUE2UCxPQUFiLENBQTBC
MmpFLFFBQTBCLENBQUN6MkUsQ0FBRCxDQUFRLENBRzFEcVcsQ0FBQSxDQUFTclcsQ0FBQSxDQUFR
LFVBQVIsQ0FBcUIsYUFBOUIsQ0FBQSxDQUE2Q3VELENBQTdDLENBelVZZ3pFLFNBeVVaLENBQW9F
LENBQ2xFemEsWUF6VXNCMGEsaUJBd1U0QyxDQUFwRSxDQUgwRCxDQUE1RCxDQURtQyxDQUhoQyxD
QUQ2QyxDQUFoQyxDQTVwSHRCLENBMHRISXppRSxHQUFtQjA1QyxFQUFBLENBQVksUUFBUSxDQUFD
bGpELENBQUQsQ0FBUWhILENBQVIsQ0FBaUJOLENBQWpCLENBQXVCLENBQ2hFc0gsQ0FBQTVILE9B
QUEsQ0FBYU0sQ0FBQTZRLFFBQWIsQ0FBMkI0aUUsUUFBMkIsQ0FBQ0MsQ0FBRCxDQUFZQyxDQUFa
LENBQXVCLENBQ3ZFQSxDQUFKLEVBQWtCRCxDQUFsQixHQUFnQ0MsQ0FBaEMsRUFDRTMzRSxDQUFB
LENBQVEyM0UsQ0FBUixDQUFtQixRQUFRLENBQUM1d0UsQ0FBRCxDQUFNd0wsQ0FBTixDQUFhLENB
QUVqTyxDQUFBNHpELElBQUEsQ0FBWTNsRCxDQUFaLENBQW1CLEVBQW5CLENBQUYsQ0FBeEMsQ0FF
RW1sRSxFQUFKLEVBQWVwekUsQ0FBQTR6RCxJQUFBLENBQVl3ZixDQUFaLENBSjRELENBQTdFLENB
S0csQ0FBQSxDQUxILENBRGdFLENBQTNDLENBMXRIdkIsQ0FtMkhJMWlFLEdBQW9CLENBQUMsVUFB
RCxDQUFhLFFBQVEsQ0FBQ29DLENBQUQsQ0FBVyxDQUN0RCxNQUFPLENBQ0xrWCxRQUFTLFVBREos
Q0FJTGhoQixXQUFZLENBQUMsUUFBRCxDQUFXc3FFLFFBQTJCLEVBQUcsQ0FDcEQsSUFBQUMsTUFB
QSxDQUFhLEVBRHVDLENBQXpDLENBSlAsQ0FPTHBzRCxLQUFNQSxRQUFRLENBQUNuZ0IsQ0FBRCxD
QUFRaEgsQ0FBUixDQUFpQk4sQ0FBakIsQ0FBdUI0ekUsQ0FBdkIsQ0FBMkMsQ0FBQSxJQUVuREUs
RUFBc0IsRUFGNkIsQ0FHbkRDLEVBQW1CLEVBSGdDLENBSW5EQyxFQUEwQixFQUp5QixDQUtuREMs
RUFBaUIsRUFMa0MsQ0FPbkRDLEVBQWdCQSxRQUFRLENBQUN6ekUsQ0FBRCxDQUFRQyxDQUFSLENB
QWUsQ0FDdkMsTUFBTyxTQUFRLEVBQUcsQ0FBRUQsQ0FBQUcsT0FBQSxDQUFhRixDQUFiLENBQW9C
LENBQXBCLENBQUYsQ0FEcUIsQ0FJM0M0RyxFQUFBNUgsT0FBQSxDQVZnQk0sQ0FBQStRLFNBVWhC
O0FBVmlDL1EsQ0FBQW1KLEdBVWpDLENBQXdCZ3JFLFFBQTRCLENBQUNwM0UsQ0FBRCxDQUFRLENB
QUEsSUFDdERILENBRHNELENBQ25EYSxDQUNGYixFQUFBLENBQUksQ0FBVCxLQUFZYSxDQUFaLENB
QWlCdTJFLENBQUF0NEUsT0FBakIsQ0FBaURrQixDQUFqRCxDQUFxRGEsQ0FBckQsQ0FBeUQsRUFB
RWIsQ0FBM0QsQ0FDRXdXLENBQUEyVCxPQUFBLENBQWdCaXRELENBQUEsQ0FBd0JwM0UsQ0FBeEIs
Q0FBaEIsQ0FJR0EsRUFBQSxDQUZMbzNFLENBQUF0NEUsT0FFSyxDQUY0QixDQUVqQyxLQUFZK0Is
Q0FBWixDQUFpQncyRSxDQUFBdjRFLE9BQWpCLENBQXdDa0IsQ0FBeEMsQ0FBNENhLENBQTVDLENB
QWdELEVBQUViLENBQWxELENBQXFELENBQ25ELElBQUkrM0QsRUFBVzlwRCxFQUFBLENBQWNrcEUs
Q0FBQSxDQUFpQm4zRSxDQUFqQixDQUFBMEgsTUFBZCxDQUNmMnZFLEVBQUEsQ0FBZXIzRSxDQUFm
LENBQUFtTixTQUFBLEVBRUF5ckIsRUFEY3crQyxDQUFBLENBQXdCcDNFLENBQXhCLENBQ2Q0NEIs
Q0FEMkNwaUIsQ0FBQXNsRCxNQUFBLENBQWUvRCxDQUFmLENBQzNDbi9CLE1BQUEsQ0FBYTArQyxD
QUFBLENBQWNGLENBQWQsQ0FBdUNwM0UsQ0FBdkMsQ0FBYixDQUptRCxDQU9yRG0zRSxDQUFBcjRF
LE9BQUEsQ0FBMEIsQ0FDMUJ1NEUsRUFBQXY0RSxPQUFBLENBQXdCLENBRXhCLEVBQUtvNEUsQ0FB
TCxDQUEyQkYsQ0FBQUMsTUFBQSxDQUF5QixHQUF6QixDQUErQjkyRSxDQUEvQixDQUEzQixFQUFv
RTYyRSxDQUFBQyxNQUFBLENBQXlCLEdBQXpCLENBQXBFLEdBQ0U3M0UsQ0FBQSxDQUFRODNFLENB
QVIsQ0FBNkIsUUFBUSxDQUFDTSxDQUFELENBQXFCLENBQ3hEQSxDQUFBem1ELFdBQUEsQ0FBOEIs
UUFBUSxDQUFDMG1ELENBQUQsQ0FBY0MsQ0FBZCxDQUE2QixDQUNqRUwsQ0FBQTV5RSxLQUFBLENB
QW9CaXpFLENBQXBCLENBQ0EsS0FBSUMsRUFBU0gsQ0FBQTl6RSxRQUNiK3pFLEVBQUEsQ0FBWUEs
Q0FBQTM0RSxPQUFBLEVBQVosQ0FBQSxDQUFvQ04sQ0FBQXU0QixjQUFBLENBQXVCLHFCQUF2QixD
QUdwQ29nRCxFQUFBMXlFLEtBQUEsQ0FGWTJMLENBQUUxSSxNQUFPK3ZFLENBQVRybkUsQ0FFWixD
QUNBb0csRUFBQW9sRCxNQUFBLENBQWU2YixDQUFmLENBQTRCRSxDQUFBOTFFLE9BQUEsRUFBNUIs
Q0FBNkM4MUUsQ0FBN0MsQ0FQaUUsQ0FBbkUsQ0FEd0QsQ0FBMUQsQ0FsQndELENBQTVELENBWHVE
LENBUHBELENBRCtDLENBQWhDLENBbjJIeEIsQ0F5NUhJcmpFLEdBQXdCczVDLEVBQUEsQ0FBWSxD
QUN0Qzc4QixXQUFZLFNBRDBCLENBRXRDdEQsU0FBVSxJQUY0QixDQUd0Q0MsUUFBUyxXQUg2QixD
QUl0Q3VLLGFBQWMsQ0FBQSxDQUp3QixDQUt0Q3BOLEtBQU1BLFFBQVEsQ0FBQ25nQixDQUFELENB
QVFoSCxDQUFSLENBQWlCdXRCLENBQWpCLENBQXdCeStCLENBQXhCO0FBQThCMTZCLENBQTlCLENB
QTJDLENBQ3ZEMDZCLENBQUF1bkIsTUFBQSxDQUFXLEdBQVgsQ0FBaUJobUQsQ0FBQTVjLGFBQWpC
LENBQUEsQ0FBd0NxN0MsQ0FBQXVuQixNQUFBLENBQVcsR0FBWCxDQUFpQmhtRCxDQUFBNWMsYUFB
akIsQ0FBeEMsRUFBZ0YsRUFDaEZxN0MsRUFBQXVuQixNQUFBLENBQVcsR0FBWCxDQUFpQmhtRCxD
QUFBNWMsYUFBakIsQ0FBQTVQLEtBQUEsQ0FBMEMsQ0FBRXNzQixXQUFZaUUsQ0FBZCxDQUEyQnR4
QixRQUFTQSxDQUFwQyxDQUExQyxDQUZ1RCxDQUxuQixDQUFaLENBejVINUIsQ0FvNkhJOFEsR0FB
MkJvNUMsRUFBQSxDQUFZLENBQ3pDNzhCLFdBQVksU0FENkIsQ0FFekN0RCxTQUFVLElBRitCLENB
R3pDQyxRQUFTLFdBSGdDLENBSXpDdUssYUFBYyxDQUFBLENBSjJCLENBS3pDcE4sS0FBTUEsUUFB
USxDQUFDbmdCLENBQUQsQ0FBUWhILENBQVIsQ0FBaUJOLENBQWpCLENBQXVCc3NELENBQXZCLENB
QTZCMTZCLENBQTdCLENBQTBDLENBQ3REMDZCLENBQUF1bkIsTUFBQSxDQUFXLEdBQVgsQ0FBQSxD
QUFtQnZuQixDQUFBdW5CLE1BQUEsQ0FBVyxHQUFYLENBQW5CLEVBQXNDLEVBQ3RDdm5CLEVBQUF1
bkIsTUFBQSxDQUFXLEdBQVgsQ0FBQXh5RSxLQUFBLENBQXFCLENBQUVzc0IsV0FBWWlFLENBQWQs
Q0FBMkJ0eEIsUUFBU0EsQ0FBcEMsQ0FBckIsQ0FGc0QsQ0FMZixDQUFaLENBcDZIL0IsQ0FxK0hJ
a1IsR0FBd0JnNUMsRUFBQSxDQUFZLENBQ3RDamdDLFNBQVUsS0FENEIsQ0FFdEM5QyxLQUFNQSxR
QUFRLENBQUNpSyxDQUFELENBQVNyRyxDQUFULENBQW1Cc0csQ0FBbkIsQ0FBMkJyb0IsQ0FBM0Is
Q0FBdUNzb0IsQ0FBdkMsQ0FBb0QsQ0FDaEUsR0FBS0EsQ0FBQUEsQ0FBTCxDQUNFLEtBQU10MkIs
RUFBQSxDQUFPLGNBQVAsQ0FBQSxDQUF1QixRQUF2QixDQUlMOEksRUFBQSxDQUFZaW5CLENBQVos
Q0FKSyxDQUFOLENBT0Z1RyxDQUFBLENBQVksUUFBUSxDQUFDdHRCLENBQUQsQ0FBUSxDQUMxQitt
QixDQUFBOW1CLE1BQUEsRUFDQThtQixFQUFBM21CLE9BQUEsQ0FBZ0JKLENBQWhCLENBRjBCLENB
QTVCLENBVGdFLENBRjVCLENBQVosQ0FyK0g1QixDQXdoSUk4SixHQUFrQixDQUFDLGdCQUFELENB
QW1CLFFBQVEsQ0FBQ2dJLENBQUQsQ0FBaUIsQ0FDaEUsTUFBTyxDQUNMbVUsU0FBVSxHQURMLENB
RUw0RCxTQUFVLENBQUEsQ0FGTDtBQUdMNW1CLFFBQVNBLFFBQVEsQ0FBQ2pILENBQUQsQ0FBVU4s
Q0FBVixDQUFnQixDQUNkLGtCQUFqQixFQUFJQSxDQUFBZ2EsS0FBSixFQUlFNUQsQ0FBQXVJLElB
QUEsQ0FIa0IzZSxDQUFBZ29CLEdBR2xCLENBRlcxbkIsQ0FBQSxDQUFRLENBQVIsQ0FBQWcyQixL
QUVYLENBTDZCLENBSDVCLENBRHlELENBQTVDLENBeGhJdEIsQ0F1aUlJaytDLEdBQXdCLENBQUUx
bUIsY0FBZWx2RCxDQUFqQixDQUF1QnN2RCxRQUFTdHZELENBQWhDLENBdmlJNUIsQ0FpaklJNjFF
LEdBQ0ksQ0FBQyxVQUFELENBQWEsUUFBYixDQUF1QixRQUF2QixDQUFpQyxRQUFRLENBQUNwcEQs
Q0FBRCxDQUFXcUcsQ0FBWCxDQUFtQkMsQ0FBbkIsQ0FBMkIsQ0FBQSxJQUV0RWx2QixFQUFPLElB
RitELENBR3RFaXlFLEVBQWEsSUFBSWwyRCxFQUdyQi9iLEVBQUFrdEUsWUFBQSxDQUFtQjZFLEVB
UW5CL3hFLEVBQUF1c0UsY0FBQSxDQUFxQjNxRSxDQUFBLENBQU9qSixDQUFBZ2QsY0FBQSxDQUF1
QixRQUF2QixDQUFQLENBQ3JCM1YsRUFBQWt5RSxvQkFBQSxDQUEyQkMsUUFBUSxDQUFDN3hFLENB
QUQsQ0FBTSxDQUNuQzh4RSxDQUFBQSxDQUFhLElBQWJBLENBQW9CeDJELEVBQUEsQ0FBUXRiLENB
QVIsQ0FBcEI4eEUsQ0FBbUMsSUFDdkNweUUsRUFBQXVzRSxjQUFBanNFLElBQUEsQ0FBdUI4eEUs
Q0FBdkIsQ0FDQXhwRCxFQUFBa3FDLFFBQUEsQ0FBaUI5eUQsQ0FBQXVzRSxjQUFqQixDQUNBM2pE
LEVBQUF0b0IsSUFBQSxDQUFhOHhFLENBQWIsQ0FKdUMsQ0FPekNuakQsRUFBQWxFLElBQUEsQ0FB
VyxVQUFYLENBQXVCLFFBQVEsRUFBRyxDQUVoQy9xQixDQUFBa3lFLG9CQUFBLENBQTJCLzFFLENB
RkssQ0FBbEMsQ0FLQTZELEVBQUFxeUUsb0JBQUEsQ0FBMkJDLFFBQVEsRUFBRyxDQUNoQ3R5RSxD
QUFBdXNFLGNBQUF2d0UsT0FBQSxFQUFKLEVBQWlDZ0UsQ0FBQXVzRSxjQUFBMW1ELE9BQUEsRUFE
RyxDQU90QzdsQixFQUFBMnNFLFVBQUE7QUFBaUI0RixRQUF3QixFQUFHLENBQzFDdnlFLENBQUFx
eUUsb0JBQUEsRUFDQSxPQUFPenBELEVBQUF0b0IsSUFBQSxFQUZtQyxDQVE1Q04sRUFBQXF0RSxX
QUFBLENBQWtCbUYsUUFBeUIsQ0FBQ2w0RSxDQUFELENBQVEsQ0FDN0MwRixDQUFBeXlFLFVBQUEs
Q0FBZW40RSxDQUFmLENBQUosRUFDRTBGLENBQUFxeUUsb0JBQUEsRUFFQSxDQURBenBELENBQUF0
b0IsSUFBQSxDQUFhaEcsQ0FBYixDQUNBLENBQWMsRUFBZCxHQUFJQSxDQUFKLEVBQWtCMEYsQ0FB
QXFzRSxZQUFBL3VFLEtBQUEsQ0FBc0IsVUFBdEIsQ0FBa0MsQ0FBQSxDQUFsQyxDQUhwQixFQUtl
LElBQWIsRUFBSWhELENBQUosRUFBcUIwRixDQUFBcXNFLFlBQXJCLEVBQ0Vyc0UsQ0FBQXF5RSxv
QkFBQSxFQUNBLENBQUF6cEQsQ0FBQXRvQixJQUFBLENBQWEsRUFBYixDQUZGLEVBSUVOLENBQUFr
eUUsb0JBQUEsQ0FBeUI1M0UsQ0FBekIsQ0FWNkMsQ0FpQm5EMEYsRUFBQTB5RSxVQUFBLENBQWlC
QyxRQUFRLENBQUNyNEUsQ0FBRCxDQUFRdUQsQ0FBUixDQUFpQixDQUN4Q2lLLEVBQUEsQ0FBd0J4
TixDQUF4QixDQUErQixnQkFBL0IsQ0FDYyxHQUFkLEdBQUlBLENBQUosR0FDRTBGLENBQUFxc0Us
WUFERixDQUNxQnh1RSxDQURyQixDQUdBLEtBQUkwbEMsRUFBUTB1QyxDQUFBcHNFLElBQUEsQ0FB
ZXZMLENBQWYsQ0FBUmlwQyxFQUFpQyxDQUNyQzB1QyxFQUFBLzFELElBQUEsQ0FBZTVoQixDQUFm
LENBQXNCaXBDLENBQXRCLENBQThCLENBQTlCLENBTndDLENBVTFDdmpDLEVBQUE0eUUsYUFBQSxD
QUFvQkMsUUFBUSxDQUFDdjRFLENBQUQsQ0FBUSxDQUNsQyxJQUFJaXBDLEVBQVEwdUMsQ0FBQXBz
RSxJQUFBLENBQWV2TCxDQUFmLENBQ1JpcEMsRUFBSixHQUNnQixDQUFkLEdBQUlBLENBQUosRUFD
RTB1QyxDQUFBcHNELE9BQUEsQ0FBa0J2ckIsQ0FBbEIsQ0FDQSxDQUFjLEVBQWQsR0FBSUEsQ0FB
SixHQUNFMEYsQ0FBQXFzRSxZQURGLENBQ3FCenpFLENBRHJCLENBRkYsRUFNRXE1RSxDQUFBLzFE
LElBQUEsQ0FBZTVoQixDQUFmLENBQXNCaXBDLENBQXRCLENBQThCLENBQTlCLENBUEosQ0FGa0Ms
Q0FlcEN2akMsRUFBQXl5RSxVQUFBLENBQWlCSyxRQUFRLENBQUN4NEUsQ0FBRCxDQUFRLENBQy9C
LE1BQU8sQ0FBRSxDQUFBMjNFLENBQUFwc0UsSUFBQSxDQUFldkwsQ0FBZixDQURzQixDQXBGeUMs
Q0FBcEUsQ0FsaklSO0FBa3RJSXVSLEdBQWtCQSxRQUFRLEVBQUcsQ0FFL0IsTUFBTyxDQUNMaWMs
U0FBVSxHQURMLENBRUxELFFBQVMsQ0FBQyxRQUFELENBQVcsVUFBWCxDQUZKLENBR0xoaEIsV0FB
WW1yRSxFQUhQLENBSUxodEQsS0FBTUEsUUFBUSxDQUFDbmdCLENBQUQsQ0FBUWhILENBQVIsQ0FB
aUJOLENBQWpCLENBQXVCd2xFLENBQXZCLENBQThCLENBRzFDLElBQUltSyxFQUFjbkssQ0FBQSxD
QUFNLENBQU4sQ0FDbEIsSUFBS21LLENBQUwsQ0FBQSxDQUVBLElBQUlSLEVBQWEzSixDQUFBLENB
QU0sQ0FBTixDQUVqQjJKLEVBQUFRLFlBQUEsQ0FBeUJBLENBS3pCQSxFQUFBemhCLFFBQUEsQ0FB
c0JzbkIsUUFBUSxFQUFHLENBQy9CckcsQ0FBQVcsV0FBQSxDQUFzQkgsQ0FBQS9oQixXQUF0QixD
QUQrQixDQU9qQ3R0RCxFQUFBNkksR0FBQSxDQUFXLFFBQVgsQ0FBcUIsUUFBUSxFQUFHLENBQzlC
N0IsQ0FBQUUsT0FBQSxDQUFhLFFBQVEsRUFBRyxDQUN0Qm1vRSxDQUFBN2hCLGNBQUEsQ0FBMEJx
aEIsQ0FBQUMsVUFBQSxFQUExQixDQURzQixDQUF4QixDQUQ4QixDQUFoQyxDQVVBLElBQUlwdkUs
Q0FBQTAwRCxTQUFKLENBQW1CLENBR2pCeWEsQ0FBQUMsVUFBQSxDQUF1QlksUUFBMEIsRUFBRyxD
QUNsRCxJQUFJdnZFLEVBQVEsRUFDWnpFLEVBQUEsQ0FBUXNFLENBQUFMLEtBQUEsQ0FBYSxRQUFi
LENBQVIsQ0FBZ0MsUUFBUSxDQUFDd08sQ0FBRCxDQUFTLENBQzNDQSxDQUFBa21ELFNBQUosRUFD
RWwwRCxDQUFBWSxLQUFBLENBQVdvTixDQUFBMVIsTUFBWCxDQUY2QyxDQUFqRCxDQUtBLE9BQU8w
RCxFQVAyQyxDQVdwRDB1RSxFQUFBVyxXQUFBLENBQXdCQyxRQUEyQixDQUFDaHpFLENBQUQsQ0FB
USxDQUN6RCxJQUFJb0QsRUFBUSxJQUFJcWUsRUFBSixDQUFZemhCLENBQVosQ0FDWmYsRUFBQSxD
QUFRc0UsQ0FBQUwsS0FBQSxDQUFhLFFBQWIsQ0FBUixDQUFnQyxRQUFRLENBQUN3TyxDQUFELENB
QVMsQ0FDL0NBLENBQUFrbUQsU0FBQSxDQUFrQnYxRCxDQUFBLENBQVVlLENBQUFtSSxJQUFBLENB
QVVtRyxDQUFBMVIsTUFBVixDQUFWLENBRDZCLENBQWpELENBRnlELENBZDFDLEtBdUJiMDRFLENB
dkJhO0FBdUJIQyxFQUFjdm1CLEdBQzVCN25ELEVBQUE1SCxPQUFBLENBQWFpMkUsUUFBNEIsRUFB
RyxDQUN0Q0QsQ0FBSixHQUFvQi9GLENBQUEvaEIsV0FBcEIsRUFBK0M5ckQsRUFBQSxDQUFPMnpF
LENBQVAsQ0FBaUI5RixDQUFBL2hCLFdBQWpCLENBQS9DLEdBQ0U2bkIsQ0FDQSxDQURXN3pFLEVB
QUEsQ0FBWSt0RSxDQUFBL2hCLFdBQVosQ0FDWCxDQUFBK2hCLENBQUF6aEIsUUFBQSxFQUZGLENB
SUF3bkIsRUFBQSxDQUFjL0YsQ0FBQS9oQixXQUw0QixDQUE1QyxDQVVBK2hCLEVBQUFwaUIsU0FB
QSxDQUF1QnNpQixRQUFRLENBQUM5eUUsQ0FBRCxDQUFRLENBQ3JDLE1BQU8sQ0FBQ0EsQ0FBUixF
QUFrQyxDQUFsQyxHQUFpQkEsQ0FBQXJCLE9BRG9CLENBbEN0QixDQTFCbkIsQ0FKMEMsQ0FKdkMs
Q0FGd0IsQ0FsdElqQyxDQXF5SUlnVCxHQUFrQixDQUFDLGNBQUQsQ0FBaUIsUUFBUSxDQUFDNEYs
Q0FBRCxDQUFlLENBRTVEc2hFLFFBQVNBLEVBQVUsQ0FBQ3BHLENBQUQsQ0FBZ0IsQ0FJN0JBLENB
QUEsQ0FBYyxDQUFkLENBQUFscEUsYUFBQSxDQUE4QixVQUE5QixDQUFKLEdBQ0VrcEUsQ0FBQSxD
QUFjLENBQWQsQ0FBQTdhLFNBREYsQ0FDOEIsQ0FBQSxDQUQ5QixDQUppQyxDQVNuQyxNQUFPLENB
Q0xwcUMsU0FBVSxHQURMLENBRUxGLFNBQVUsR0FGTCxDQUdMOWlCLFFBQVNBLFFBQVEsQ0FBQ2pI
LENBQUQsQ0FBVU4sQ0FBVixDQUFnQixDQUkvQixHQUFJYixDQUFBLENBQVlhLENBQUFqRCxNQUFa
LENBQUosQ0FBNkIsQ0FDM0IsSUFBSXc1QixFQUFnQmppQixDQUFBLENBQWFoVSxDQUFBZzJCLEtB
QUEsRUFBYixDQUE2QixDQUFBLENBQTdCLENBQ2ZDLEVBQUwsRUFDRXYyQixDQUFBZzFCLEtBQUEs
Q0FBVSxPQUFWLENBQW1CMTBCLENBQUFnMkIsS0FBQSxFQUFuQixDQUh5QixDQU83QixNQUFPLFNB
QVEsQ0FBQ2h2QixDQUFELENBQVFoSCxDQUFSLENBQWlCTixDQUFqQixDQUF1QixDQUFBLElBS2hD
dkIsRUFBUzZCLENBQUE3QixPQUFBLEVBTHVCLENBTWhDMHdFLEVBQWExd0UsQ0FBQWdKLEtBQUEs
Q0FGSW91RSxtQkFFSixDQUFiMUcsRUFDRTF3RSxDQUFBQSxPQUFBLEVBQUFnSixLQUFBLENBSGVv
dUUsbUJBR2YsQ0FJRjFHLEVBQUosRUFBa0JBLENBQUFRLFlBQWxCO0NBRU1wNUMsQ0FBSixDQUNF
anZCLENBQUE1SCxPQUFBLENBQWE2MkIsQ0FBYixDQUE0QnUvQyxRQUErQixDQUFDeHlELENBQUQs
Q0FBU0MsQ0FBVCxDQUFpQixDQUMxRXZqQixDQUFBZzFCLEtBQUEsQ0FBVSxPQUFWLENBQW1CMVIs
Q0FBbkIsQ0FDSUMsRUFBSixHQUFlRCxDQUFmLEVBQ0U2ckQsQ0FBQWtHLGFBQUEsQ0FBd0I5eEQs
Q0FBeEIsQ0FFRjRyRCxFQUFBZ0csVUFBQSxDQUFxQjd4RCxDQUFyQixDQUE2QmhqQixDQUE3QixD
QUNBNnVFLEVBQUFRLFlBQUF6aEIsUUFBQSxFQUNBMG5CLEVBQUEsQ0FBV3QxRSxDQUFYLENBUDBF
LENBQTVFLENBREYsRUFXRTZ1RSxDQUFBZ0csVUFBQSxDQUFxQm4xRSxDQUFBakQsTUFBckIsQ0FB
aUN1RCxDQUFqQyxDQUVBLENBREE2dUUsQ0FBQVEsWUFBQXpoQixRQUFBLEVBQ0EsQ0FBQTBuQixD
QUFBLENBQVd0MUUsQ0FBWCxDQWJGLENBZ0JBLENBQUFBLENBQUE2SSxHQUFBLENBQVcsVUFBWCxD
QUF1QixRQUFRLEVBQUcsQ0FDaENnbUUsQ0FBQWtHLGFBQUEsQ0FBd0JyMUUsQ0FBQWpELE1BQXhC
LENBQ0FveUUsRUFBQVEsWUFBQXpoQixRQUFBLEVBRmdDLENBQWxDLENBbEJGLENBWG9DLENBWFAs
Q0FINUIsQ0FYcUQsQ0FBeEMsQ0FyeUl0QixDQXEySUkxL0MsR0FBaUJ6UCxFQUFBLENBQVEsQ0FD
M0J3ckIsU0FBVSxHQURpQixDQUUzQjRELFNBQVUsQ0FBQSxDQUZpQixDQUFSLENBcjJJckIsQ0Ew
MklJaGMsR0FBb0JBLFFBQVEsRUFBRyxDQUNqQyxNQUFPLENBQ0xvWSxTQUFVLEdBREwsQ0FFTEQs
UUFBUyxVQUZKLENBR0w3QyxLQUFNQSxRQUFRLENBQUNuZ0IsQ0FBRCxDQUFRMmIsQ0FBUixDQUFh
ampCLENBQWIsQ0FBbUJzc0QsQ0FBbkIsQ0FBeUIsQ0FDaENBLENBQUwsR0FDQXRzRCxDQUFBa1Ms
U0FNQSxDQU5nQixDQUFBLENBTWhCLENBSkFvNkMsQ0FBQTRELFlBQUFoK0MsU0FJQSxDQUo0QjZq
RSxRQUFRLENBQUNwUixDQUFELENBQWFDLENBQWIsQ0FBd0IsQ0FDMUQsTUFBTyxDQUFDNWtFLENB
QUFrUyxTQUFSLEVBQXlCLENBQUNvNkMsQ0FBQWlCLFNBQUEsQ0FBY3FYLENBQWQsQ0FEZ0MsQ0FJ
NUQsQ0FBQTVrRSxDQUFBZzVCLFNBQUEsQ0FBYyxVQUFkLENBQTBCLFFBQVEsRUFBRyxDQUNuQ3N6
QixDQUFBOEQsVUFBQSxFQURtQyxDQUFyQyxDQVBBLENBRHFDLENBSGxDLENBRDBCLENBMTJJbkM7
QUE4M0lJcCtDLEdBQW1CQSxRQUFRLEVBQUcsQ0FDaEMsTUFBTyxDQUNMdVksU0FBVSxHQURMLENB
RUxELFFBQVMsVUFGSixDQUdMN0MsS0FBTUEsUUFBUSxDQUFDbmdCLENBQUQsQ0FBUTJiLENBQVIs
Q0FBYWpqQixDQUFiLENBQW1Cc3NELENBQW5CLENBQXlCLENBQ3JDLEdBQUtBLENBQUwsQ0FBQSxD
QURxQyxJQUdqQ3ZoQyxDQUhpQyxDQUd6QmlyRCxFQUFhaDJFLENBQUFpUyxVQUFiK2pFLEVBQStC
aDJFLENBQUErUixRQUMzQy9SLEVBQUFnNUIsU0FBQSxDQUFjLFNBQWQsQ0FBeUIsUUFBUSxDQUFD
cWxCLENBQUQsQ0FBUSxDQUNuQ3ZpRCxDQUFBLENBQVN1aUQsQ0FBVCxDQUFKLEVBQXNDLENBQXRD
LENBQXVCQSxDQUFBM2lELE9BQXZCLEdBQ0UyaUQsQ0FERixDQUNVLElBQUk3OEMsTUFBSixDQUFX
LEdBQVgsQ0FBaUI2OEMsQ0FBakIsQ0FBeUIsR0FBekIsQ0FEVixDQUlBLElBQUlBLENBQUosRUFB
Y2o5QyxDQUFBaTlDLENBQUFqOUMsS0FBZCxDQUNFLEtBQU05RixFQUFBLENBQU8sV0FBUCxDQUFB
LENBQW9CLFVBQXBCLENBQ3FEMDZFLENBRHJELENBRUozM0IsQ0FGSSxDQUVHajZDLEVBQUEsQ0FB
WTZlLENBQVosQ0FGSCxDQUFOLENBS0Y4SCxDQUFBLENBQVNzekIsQ0FBVCxFQUFrQmhqRCxDQUNs
Qml4RCxFQUFBOEQsVUFBQSxFQVp1QyxDQUF6QyxDQWVBOUQsRUFBQTRELFlBQUFuK0MsUUFBQSxD
QUEyQmtrRSxRQUFRLENBQUNsNUUsQ0FBRCxDQUFRLENBQ3pDLE1BQU91dkQsRUFBQWlCLFNBQUEs
Q0FBY3h3RCxDQUFkLENBQVAsRUFBK0JvQyxDQUFBLENBQVk0ckIsQ0FBWixDQUEvQixFQUFzREEs
Q0FBQTNwQixLQUFBLENBQVlyRSxDQUFaLENBRGIsQ0FsQjNDLENBRHFDLENBSGxDLENBRHlCLENB
OTNJbEMsQ0E2NUlJMFYsR0FBcUJBLFFBQVEsRUFBRyxDQUNsQyxNQUFPLENBQ0w4WCxTQUFVLEdB
REwsQ0FFTEQsUUFBUyxVQUZKLENBR0w3QyxLQUFNQSxRQUFRLENBQUNuZ0IsQ0FBRCxDQUFRMmIs
Q0FBUixDQUFhampCLENBQWIsQ0FBbUJzc0QsQ0FBbkIsQ0FBeUIsQ0FDckMsR0FBS0EsQ0FBTCxD
QUFBLENBRUEsSUFBSTk1QyxFQUFhLEVBQ2pCeFMsRUFBQWc1QixTQUFBLENBQWMsV0FBZCxDQUEy
QixRQUFRLENBQUNqOEIsQ0FBRCxDQUFRLENBQ3JDbTVFLENBQUFBLENBQVM3M0UsQ0FBQSxDQUFN
dEIsQ0FBTixDQUNieVYsRUFBQSxDQUFZN08sS0FBQSxDQUFNdXlFLENBQU4sQ0FBQSxDQUFpQixF
QUFqQixDQUFxQkEsQ0FDakM1cEIsRUFBQThELFVBQUEsRUFIeUMsQ0FBM0MsQ0FLQTlEO0NBQUE0
RCxZQUFBMTlDLFVBQUEsQ0FBNkIyakUsUUFBUSxDQUFDeFIsQ0FBRCxDQUFhQyxDQUFiLENBQXdC
LENBQzNELE1BQW9CLEVBQXBCLENBQVFweUQsQ0FBUixFQUEwQjg1QyxDQUFBaUIsU0FBQSxDQUFj
cVgsQ0FBZCxDQUExQixFQUF1REEsQ0FBQWxwRSxPQUF2RCxFQUEyRThXLENBRGhCLENBUjdELENB
RHFDLENBSGxDLENBRDJCLENBNzVJcEMsQ0FpN0lJRixHQUFxQkEsUUFBUSxFQUFHLENBQ2xDLE1B
QU8sQ0FDTGlZLFNBQVUsR0FETCxDQUVMRCxRQUFTLFVBRkosQ0FHTDdDLEtBQU1BLFFBQVEsQ0FB
Q25nQixDQUFELENBQVEyYixDQUFSLENBQWFqakIsQ0FBYixDQUFtQnNzRCxDQUFuQixDQUF5QixD
QUNyQyxHQUFLQSxDQUFMLENBQUEsQ0FFQSxJQUFJajZDLEVBQVksQ0FDaEJyUyxFQUFBZzVCLFNB
QUEsQ0FBYyxXQUFkLENBQTJCLFFBQVEsQ0FBQ2o4QixDQUFELENBQVEsQ0FDekNzVixDQUFBLENB
QVloVSxDQUFBLENBQU10QixDQUFOLENBQVosRUFBNEIsQ0FDNUJ1dkQsRUFBQThELFVBQUEsRUFG
eUMsQ0FBM0MsQ0FJQTlELEVBQUE0RCxZQUFBNzlDLFVBQUEsQ0FBNkIrakUsUUFBUSxDQUFDelIs
Q0FBRCxDQUFhQyxDQUFiLENBQXdCLENBQzNELE1BQU90WSxFQUFBaUIsU0FBQSxDQUFjcVgsQ0FB
ZCxDQUFQLEVBQW1DQSxDQUFBbHBFLE9BQW5DLEVBQXVEMlcsQ0FESSxDQVA3RCxDQURxQyxDQUhs
QyxDQUQyQixDQW1COUJsWCxFQUFBeU0sUUFBQTVCLFVBQUosQ0FFRTJvQyxPQUFBRSxJQUFBLENB
QVksZ0RBQVosQ0FGRixFQVFBaG1DLEVBQUEsRUFJQSxDQUZBb0UsRUFBQSxDQUFtQnJGLEVBQW5C
LENBRUEsQ0FBQXZELENBQUEsQ0FBT2pKLENBQVAsQ0FBQXc0RCxNQUFBLENBQXVCLFFBQVEsRUFB
RyxDQUNoQzd0RCxFQUFBLENBQVkzSyxDQUFaLENBQXNCNEssRUFBdEIsQ0FEZ0MsQ0FBbEMsQ0Fa
QSxDQXByM0JxQyxDQUF0QyxDQUFELENBb3MzQkc3SyxNQXBzM0JILENBb3MzQldDLFFBcHMzQlgs
Q0FzczNCQyxFQUFBRCxNQUFBeU0sUUFBQXl1RSxNQUFBLEVBQUQsRUFBMkJsN0UsTUFBQXlNLFFB
QUF0SCxRQUFBLENBQXVCbEYsUUFBQWs3RSxLQUF2QixDQUFBL2dCLFFBQUEsQ0FBOEMsZ1JBQTlD
OyIsCisic291cmNlcyI6WyJhbmd1bGFyLmpzIl0sCisibmFtZXMiOlsid2luZG93IiwiZG9jdW1l
bnQiLCJ1bmRlZmluZWQiLCJtaW5FcnIiLCJpc0FycmF5TGlrZSIsIm9iaiIsImlzV2luZG93Iiwi
bGVuZ3RoIiwiT2JqZWN0Iiwibm9kZVR5cGUiLCJOT0RFX1RZUEVfRUxFTUVOVCIsImlzU3RyaW5n
IiwiaXNBcnJheSIsImZvckVhY2giLCJpdGVyYXRvciIsImNvbnRleHQiLCJrZXkiLCJpc0Z1bmN0
aW9uIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaXNQcmltaXRpdmUiLCJpc0JsYW5rT2JqZWN0
IiwiZm9yRWFjaFNvcnRlZCIsImtleXMiLCJzb3J0IiwiaSIsInJldmVyc2VQYXJhbXMiLCJpdGVy
YXRvckZuIiwidmFsdWUiLCJuZXh0VWlkIiwidWlkIiwic2V0SGFzaEtleSIsImgiLCIkJGhhc2hL
ZXkiLCJiYXNlRXh0ZW5kIiwiZHN0Iiwib2JqcyIsImRlZXAiLCJpaSIsImlzT2JqZWN0IiwiaiIs
ImpqIiwic3JjIiwiaXNEYXRlIiwiRGF0ZSIsInZhbHVlT2YiLCJleHRlbmQiLCJzbGljZSIsImFy
Z3VtZW50cyIsIm1lcmdlIiwidG9JbnQiLCJzdHIiLCJwYXJzZUludCIsImluaGVyaXQiLCJwYXJl
bnQiLCJleHRyYSIsImNyZWF0ZSIsIm5vb3AiLCJpZGVudGl0eSIsIiQiLCJ2YWx1ZUZuIiwiaGFz
Q3VzdG9tVG9TdHJpbmciLCJ0b1N0cmluZyIsInByb3RvdHlwZSIsImlzVW5kZWZpbmVkIiwiaXNE
ZWZpbmVkIiwiZ2V0UHJvdG90eXBlT2YiLCJpc051bWJlciIsImlzUmVnRXhwIiwiaXNTY29wZSIs
IiRldmFsQXN5bmMiLCIkd2F0Y2giLCJpc0Jvb2xlYW4iLCJpc0VsZW1lbnQiLCJub2RlIiwibm9k
ZU5hbWUiLCJwcm9wIiwiYXR0ciIsImZpbmQiLCJtYWtlTWFwIiwiaXRlbXMiLCJzcGxpdCIsIm5v
ZGVOYW1lXyIsImVsZW1lbnQiLCJsb3dlcmNhc2UiLCJhcnJheVJlbW92ZSIsImFycmF5IiwiaW5k
ZXgiLCJpbmRleE9mIiwic3BsaWNlIiwiY29weSIsInNvdXJjZSIsImRlc3RpbmF0aW9uIiwic3Rh
Y2tTb3VyY2UiLCJzdGFja0Rlc3QiLCJuZ01pbkVyciIsIlRZUEVEX0FSUkFZX1JFR0VYUCIsInRl
c3QiLCJwdXNoIiwiY29uc3RydWN0b3IiLCJnZXRUaW1lIiwiUmVnRXhwIiwibWF0Y2giLCJsYXN0
SW5kZXgiLCJlbXB0eU9iamVjdCIsInNoYWxsb3dDb3B5IiwiY2hhckF0IiwiZXF1YWxzIiwibzEi
LCJvMiIsInQxIiwidDIiLCJrZXlTZXQiLCJjcmVhdGVNYXAiLCJjb25jYXQiLCJhcnJheTEiLCJh
cnJheTIiLCJiaW5kIiwic2VsZiIsImZuIiwiY3VycnlBcmdzIiwic3RhcnRJbmRleCIsImFwcGx5
IiwidG9Kc29uUmVwbGFjZXIiLCJ2YWwiLCJ0b0pzb24iLCJwcmV0dHkiLCJKU09OIiwic3RyaW5n
aWZ5IiwiZnJvbUpzb24iLCJqc29uIiwicGFyc2UiLCJ0aW1lem9uZVRvT2Zmc2V0IiwidGltZXpv
bmUiLCJmYWxsYmFjayIsInJlcXVlc3RlZFRpbWV6b25lT2Zmc2V0IiwiaXNOYU4iLCJjb252ZXJ0
VGltZXpvbmVUb0xvY2FsIiwiZGF0ZSIsInJldmVyc2UiLCJ0aW1lem9uZU9mZnNldCIsImdldFRp
bWV6b25lT2Zmc2V0Iiwic2V0TWludXRlcyIsImdldE1pbnV0ZXMiLCJtaW51dGVzIiwic3RhcnRp
bmdUYWciLCJqcUxpdGUiLCJjbG9uZSIsImVtcHR5IiwiZSIsImVsZW1IdG1sIiwiYXBwZW5kIiwi
aHRtbCIsIk5PREVfVFlQRV9URVhUIiwicmVwbGFjZSIsInRyeURlY29kZVVSSUNvbXBvbmVudCIs
ImRlY29kZVVSSUNvbXBvbmVudCIsInBhcnNlS2V5VmFsdWUiLCJrZXlWYWx1ZSIsImtleV92YWx1
ZSIsInRvS2V5VmFsdWUiLCJwYXJ0cyIsImFycmF5VmFsdWUiLCJlbmNvZGVVcmlRdWVyeSIsImpv
aW4iLCJlbmNvZGVVcmlTZWdtZW50IiwicGN0RW5jb2RlU3BhY2VzIiwiZW5jb2RlVVJJQ29tcG9u
ZW50IiwiZ2V0TmdBdHRyaWJ1dGUiLCJuZ0F0dHIiLCJuZ0F0dHJQcmVmaXhlcyIsImdldEF0dHJp
YnV0ZSIsImFuZ3VsYXJJbml0IiwiYm9vdHN0cmFwIiwiYXBwRWxlbWVudCIsIm1vZHVsZSIsImNv
bmZpZyIsInByZWZpeCIsIm5hbWUiLCJoYXNBdHRyaWJ1dGUiLCJjYW5kaWRhdGUiLCJxdWVyeVNl
bGVjdG9yIiwic3RyaWN0RGkiLCJtb2R1bGVzIiwiZGVmYXVsdENvbmZpZyIsImRvQm9vdHN0cmFw
IiwiaW5qZWN0b3IiLCJ0YWciLCJ1bnNoaWZ0IiwiJHByb3ZpZGUiLCJkZWJ1Z0luZm9FbmFibGVk
IiwiJGNvbXBpbGVQcm92aWRlciIsImNyZWF0ZUluamVjdG9yIiwiaW52b2tlIiwiYm9vdHN0cmFw
QXBwbHkiLCJzY29wZSIsImNvbXBpbGUiLCIkYXBwbHkiLCJkYXRhIiwiTkdfRU5BQkxFX0RFQlVH
X0lORk8iLCJOR19ERUZFUl9CT09UU1RSQVAiLCJhbmd1bGFyIiwicmVzdW1lQm9vdHN0cmFwIiwi
YW5ndWxhci5yZXN1bWVCb290c3RyYXAiLCJleHRyYU1vZHVsZXMiLCJyZXN1bWVEZWZlcnJlZEJv
b3RzdHJhcCIsInJlbG9hZFdpdGhEZWJ1Z0luZm8iLCJsb2NhdGlvbiIsInJlbG9hZCIsImdldFRl
c3RhYmlsaXR5Iiwicm9vdEVsZW1lbnQiLCJnZXQiLCJzbmFrZV9jYXNlIiwic2VwYXJhdG9yIiwi
U05BS0VfQ0FTRV9SRUdFWFAiLCJsZXR0ZXIiLCJwb3MiLCJ0b0xvd2VyQ2FzZSIsImJpbmRKUXVl
cnkiLCJvcmlnaW5hbENsZWFuRGF0YSIsImJpbmRKUXVlcnlGaXJlZCIsImpxTmFtZSIsImpxIiwi
alF1ZXJ5Iiwib24iLCJKUUxpdGVQcm90b3R5cGUiLCJpc29sYXRlU2NvcGUiLCJjb250cm9sbGVy
IiwiaW5oZXJpdGVkRGF0YSIsImNsZWFuRGF0YSIsImpRdWVyeS5jbGVhbkRhdGEiLCJlbGVtcyIs
ImV2ZW50cyIsInNraXBEZXN0cm95T25OZXh0SlF1ZXJ5Q2xlYW5EYXRhIiwiZWxlbSIsIl9kYXRh
IiwiJGRlc3Ryb3kiLCJ0cmlnZ2VySGFuZGxlciIsIkpRTGl0ZSIsImFzc2VydEFyZyIsImFyZyIs
InJlYXNvbiIsImFzc2VydEFyZ0ZuIiwiYWNjZXB0QXJyYXlBbm5vdGF0aW9uIiwiYXNzZXJ0Tm90
SGFzT3duUHJvcGVydHkiLCJnZXR0ZXIiLCJwYXRoIiwiYmluZEZuVG9TY29wZSIsImxhc3RJbnN0
YW5jZSIsImxlbiIsImdldEJsb2NrTm9kZXMiLCJub2RlcyIsImVuZE5vZGUiLCJibG9ja05vZGVz
IiwibmV4dFNpYmxpbmciLCJzZXR1cE1vZHVsZUxvYWRlciIsImVuc3VyZSIsImZhY3RvcnkiLCIk
aW5qZWN0b3JNaW5FcnIiLCIkJG1pbkVyciIsInJlcXVpcmVzIiwiY29uZmlnRm4iLCJpbnZva2VM
YXRlciIsInByb3ZpZGVyIiwibWV0aG9kIiwiaW5zZXJ0TWV0aG9kIiwicXVldWUiLCJpbnZva2VR
dWV1ZSIsIm1vZHVsZUluc3RhbmNlIiwiaW52b2tlTGF0ZXJBbmRTZXRNb2R1bGVOYW1lIiwicmVj
aXBlTmFtZSIsImZhY3RvcnlGdW5jdGlvbiIsIiQkbW9kdWxlTmFtZSIsImNvbmZpZ0Jsb2NrcyIs
InJ1bkJsb2NrcyIsIl9pbnZva2VRdWV1ZSIsIl9jb25maWdCbG9ja3MiLCJfcnVuQmxvY2tzIiwi
c2VydmljZSIsImNvbnN0YW50IiwiZGVjb3JhdG9yIiwiYW5pbWF0aW9uIiwiZmlsdGVyIiwiZGly
ZWN0aXZlIiwicnVuIiwiYmxvY2siLCJwdWJsaXNoRXh0ZXJuYWxBUEkiLCJ2ZXJzaW9uIiwidXBw
ZXJjYXNlIiwiY291bnRlciIsImNzcCIsImFuZ3VsYXJNb2R1bGUiLCIkTG9jYWxlUHJvdmlkZXIi
LCJuZ01vZHVsZSIsIiQkc2FuaXRpemVVcmkiLCIkJFNhbml0aXplVXJpUHJvdmlkZXIiLCIkQ29t
cGlsZVByb3ZpZGVyIiwiYSIsImh0bWxBbmNob3JEaXJlY3RpdmUiLCJpbnB1dCIsImlucHV0RGly
ZWN0aXZlIiwidGV4dGFyZWEiLCJmb3JtIiwiZm9ybURpcmVjdGl2ZSIsInNjcmlwdCIsInNjcmlw
dERpcmVjdGl2ZSIsInNlbGVjdCIsInNlbGVjdERpcmVjdGl2ZSIsInN0eWxlIiwic3R5bGVEaXJl
Y3RpdmUiLCJvcHRpb24iLCJvcHRpb25EaXJlY3RpdmUiLCJuZ0JpbmQiLCJuZ0JpbmREaXJlY3Rp
dmUiLCJuZ0JpbmRIdG1sIiwibmdCaW5kSHRtbERpcmVjdGl2ZSIsIm5nQmluZFRlbXBsYXRlIiwi
bmdCaW5kVGVtcGxhdGVEaXJlY3RpdmUiLCJuZ0NsYXNzIiwibmdDbGFzc0RpcmVjdGl2ZSIsIm5n
Q2xhc3NFdmVuIiwibmdDbGFzc0V2ZW5EaXJlY3RpdmUiLCJuZ0NsYXNzT2RkIiwibmdDbGFzc09k
ZERpcmVjdGl2ZSIsIm5nQ2xvYWsiLCJuZ0Nsb2FrRGlyZWN0aXZlIiwibmdDb250cm9sbGVyIiwi
bmdDb250cm9sbGVyRGlyZWN0aXZlIiwibmdGb3JtIiwibmdGb3JtRGlyZWN0aXZlIiwibmdIaWRl
IiwibmdIaWRlRGlyZWN0aXZlIiwibmdJZiIsIm5nSWZEaXJlY3RpdmUiLCJuZ0luY2x1ZGUiLCJu
Z0luY2x1ZGVEaXJlY3RpdmUiLCJuZ0luaXQiLCJuZ0luaXREaXJlY3RpdmUiLCJuZ05vbkJpbmRh
YmxlIiwibmdOb25CaW5kYWJsZURpcmVjdGl2ZSIsIm5nUGx1cmFsaXplIiwibmdQbHVyYWxpemVE
aXJlY3RpdmUiLCJuZ1JlcGVhdCIsIm5nUmVwZWF0RGlyZWN0aXZlIiwibmdTaG93IiwibmdTaG93
RGlyZWN0aXZlIiwibmdTdHlsZSIsIm5nU3R5bGVEaXJlY3RpdmUiLCJuZ1N3aXRjaCIsIm5nU3dp
dGNoRGlyZWN0aXZlIiwibmdTd2l0Y2hXaGVuIiwibmdTd2l0Y2hXaGVuRGlyZWN0aXZlIiwibmdT
d2l0Y2hEZWZhdWx0IiwibmdTd2l0Y2hEZWZhdWx0RGlyZWN0aXZlIiwibmdPcHRpb25zIiwibmdP
cHRpb25zRGlyZWN0aXZlIiwibmdUcmFuc2NsdWRlIiwibmdUcmFuc2NsdWRlRGlyZWN0aXZlIiwi
bmdNb2RlbCIsIm5nTW9kZWxEaXJlY3RpdmUiLCJuZ0xpc3QiLCJuZ0xpc3REaXJlY3RpdmUiLCJu
Z0NoYW5nZSIsIm5nQ2hhbmdlRGlyZWN0aXZlIiwicGF0dGVybiIsInBhdHRlcm5EaXJlY3RpdmUi
LCJuZ1BhdHRlcm4iLCJyZXF1aXJlZCIsInJlcXVpcmVkRGlyZWN0aXZlIiwibmdSZXF1aXJlZCIs
Im1pbmxlbmd0aCIsIm1pbmxlbmd0aERpcmVjdGl2ZSIsIm5nTWlubGVuZ3RoIiwibWF4bGVuZ3Ro
IiwibWF4bGVuZ3RoRGlyZWN0aXZlIiwibmdNYXhsZW5ndGgiLCJuZ1ZhbHVlIiwibmdWYWx1ZURp
cmVjdGl2ZSIsIm5nTW9kZWxPcHRpb25zIiwibmdNb2RlbE9wdGlvbnNEaXJlY3RpdmUiLCJuZ0lu
Y2x1ZGVGaWxsQ29udGVudERpcmVjdGl2ZSIsIm5nQXR0cmlidXRlQWxpYXNEaXJlY3RpdmVzIiwi
bmdFdmVudERpcmVjdGl2ZXMiLCIkYW5jaG9yU2Nyb2xsIiwiJEFuY2hvclNjcm9sbFByb3ZpZGVy
IiwiJGFuaW1hdGUiLCIkQW5pbWF0ZVByb3ZpZGVyIiwiJCRhbmltYXRlUXVldWUiLCIkJENvcmVB
bmltYXRlUXVldWVQcm92aWRlciIsIiQkQW5pbWF0ZVJ1bm5lciIsIiQkQ29yZUFuaW1hdGVSdW5u
ZXJQcm92aWRlciIsIiRicm93c2VyIiwiJEJyb3dzZXJQcm92aWRlciIsIiRjYWNoZUZhY3Rvcnki
LCIkQ2FjaGVGYWN0b3J5UHJvdmlkZXIiLCIkY29udHJvbGxlciIsIiRDb250cm9sbGVyUHJvdmlk
ZXIiLCIkZG9jdW1lbnQiLCIkRG9jdW1lbnRQcm92aWRlciIsIiRleGNlcHRpb25IYW5kbGVyIiwi
JEV4Y2VwdGlvbkhhbmRsZXJQcm92aWRlciIsIiRmaWx0ZXIiLCIkRmlsdGVyUHJvdmlkZXIiLCIk
aW50ZXJwb2xhdGUiLCIkSW50ZXJwb2xhdGVQcm92aWRlciIsIiRpbnRlcnZhbCIsIiRJbnRlcnZh
bFByb3ZpZGVyIiwiJGh0dHAiLCIkSHR0cFByb3ZpZGVyIiwiJGh0dHBQYXJhbVNlcmlhbGl6ZXIi
LCIkSHR0cFBhcmFtU2VyaWFsaXplclByb3ZpZGVyIiwiJGh0dHBQYXJhbVNlcmlhbGl6ZXJKUUxp
a2UiLCIkSHR0cFBhcmFtU2VyaWFsaXplckpRTGlrZVByb3ZpZGVyIiwiJGh0dHBCYWNrZW5kIiwi
JEh0dHBCYWNrZW5kUHJvdmlkZXIiLCIkbG9jYXRpb24iLCIkTG9jYXRpb25Qcm92aWRlciIsIiRs
b2ciLCIkTG9nUHJvdmlkZXIiLCIkcGFyc2UiLCIkUGFyc2VQcm92aWRlciIsIiRyb290U2NvcGUi
LCIkUm9vdFNjb3BlUHJvdmlkZXIiLCIkcSIsIiRRUHJvdmlkZXIiLCIkJHEiLCIkJFFQcm92aWRl
ciIsIiRzY2UiLCIkU2NlUHJvdmlkZXIiLCIkc2NlRGVsZWdhdGUiLCIkU2NlRGVsZWdhdGVQcm92
aWRlciIsIiRzbmlmZmVyIiwiJFNuaWZmZXJQcm92aWRlciIsIiR0ZW1wbGF0ZUNhY2hlIiwiJFRl
bXBsYXRlQ2FjaGVQcm92aWRlciIsIiR0ZW1wbGF0ZVJlcXVlc3QiLCIkVGVtcGxhdGVSZXF1ZXN0
UHJvdmlkZXIiLCIkJHRlc3RhYmlsaXR5IiwiJCRUZXN0YWJpbGl0eVByb3ZpZGVyIiwiJHRpbWVv
dXQiLCIkVGltZW91dFByb3ZpZGVyIiwiJHdpbmRvdyIsIiRXaW5kb3dQcm92aWRlciIsIiQkckFG
IiwiJCRSQUZQcm92aWRlciIsIiQkanFMaXRlIiwiJCRqcUxpdGVQcm92aWRlciIsIiQkSGFzaE1h
cCIsIiQkSGFzaE1hcFByb3ZpZGVyIiwiJCRjb29raWVSZWFkZXIiLCIkJENvb2tpZVJlYWRlclBy
b3ZpZGVyIiwiY2FtZWxDYXNlIiwiU1BFQ0lBTF9DSEFSU19SRUdFWFAiLCJfIiwib2Zmc2V0Iiwi
dG9VcHBlckNhc2UiLCJNT1pfSEFDS19SRUdFWFAiLCJqcUxpdGVBY2NlcHRzRGF0YSIsIk5PREVf
VFlQRV9ET0NVTUVOVCIsImpxTGl0ZUJ1aWxkRnJhZ21lbnQiLCJ0bXAiLCJmcmFnbWVudCIsImNy
ZWF0ZURvY3VtZW50RnJhZ21lbnQiLCJIVE1MX1JFR0VYUCIsImFwcGVuZENoaWxkIiwiY3JlYXRl
RWxlbWVudCIsIlRBR19OQU1FX1JFR0VYUCIsImV4ZWMiLCJ3cmFwIiwid3JhcE1hcCIsIl9kZWZh
dWx0IiwiaW5uZXJIVE1MIiwiWEhUTUxfVEFHX1JFR0VYUCIsImxhc3RDaGlsZCIsImNoaWxkTm9k
ZXMiLCJmaXJzdENoaWxkIiwidGV4dENvbnRlbnQiLCJjcmVhdGVUZXh0Tm9kZSIsImFyZ0lzU3Ry
aW5nIiwidHJpbSIsImpxTGl0ZU1pbkVyciIsInBhcnNlZCIsIlNJTkdMRV9UQUdfUkVHRVhQIiwi
anFMaXRlQWRkTm9kZXMiLCJqcUxpdGVDbG9uZSIsImNsb25lTm9kZSIsImpxTGl0ZURlYWxvYyIs
Im9ubHlEZXNjZW5kYW50cyIsImpxTGl0ZVJlbW92ZURhdGEiLCJxdWVyeVNlbGVjdG9yQWxsIiwi
ZGVzY2VuZGFudHMiLCJsIiwianFMaXRlT2ZmIiwidHlwZSIsInVuc3VwcG9ydGVkIiwiZXhwYW5k
b1N0b3JlIiwianFMaXRlRXhwYW5kb1N0b3JlIiwiaGFuZGxlIiwibGlzdGVuZXJGbnMiLCJyZW1v
dmVFdmVudExpc3RlbmVyIiwiZXhwYW5kb0lkIiwibmczMzkiLCJqcUNhY2hlIiwiY3JlYXRlSWZO
ZWNlc3NhcnkiLCJqcUlkIiwianFMaXRlRGF0YSIsImlzU2ltcGxlU2V0dGVyIiwiaXNTaW1wbGVH
ZXR0ZXIiLCJtYXNzR2V0dGVyIiwianFMaXRlSGFzQ2xhc3MiLCJzZWxlY3RvciIsImpxTGl0ZVJl
bW92ZUNsYXNzIiwiY3NzQ2xhc3NlcyIsInNldEF0dHJpYnV0ZSIsImNzc0NsYXNzIiwianFMaXRl
QWRkQ2xhc3MiLCJleGlzdGluZ0NsYXNzZXMiLCJyb290IiwiZWxlbWVudHMiLCJqcUxpdGVDb250
cm9sbGVyIiwianFMaXRlSW5oZXJpdGVkRGF0YSIsImRvY3VtZW50RWxlbWVudCIsIm5hbWVzIiwi
cGFyZW50Tm9kZSIsIk5PREVfVFlQRV9ET0NVTUVOVF9GUkFHTUVOVCIsImhvc3QiLCJqcUxpdGVF
bXB0eSIsInJlbW92ZUNoaWxkIiwianFMaXRlUmVtb3ZlIiwia2VlcERhdGEiLCJqcUxpdGVEb2N1
bWVudExvYWRlZCIsImFjdGlvbiIsIndpbiIsInJlYWR5U3RhdGUiLCJzZXRUaW1lb3V0IiwiZ2V0
Qm9vbGVhbkF0dHJOYW1lIiwiYm9vbGVhbkF0dHIiLCJCT09MRUFOX0FUVFIiLCJCT09MRUFOX0VM
RU1FTlRTIiwiZ2V0QWxpYXNlZEF0dHJOYW1lIiwiQUxJQVNFRF9BVFRSIiwiY3JlYXRlRXZlbnRI
YW5kbGVyIiwiZXZlbnRIYW5kbGVyIiwiZXZlbnQiLCJpc0RlZmF1bHRQcmV2ZW50ZWQiLCJldmVu
dC5pc0RlZmF1bHRQcmV2ZW50ZWQiLCJkZWZhdWx0UHJldmVudGVkIiwiZXZlbnRGbnMiLCJldmVu
dEZuc0xlbmd0aCIsImltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCIsIm9yaWdpbmFsU3RvcElt
bWVkaWF0ZVByb3BhZ2F0aW9uIiwic3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uIiwiZXZlbnQuc3Rv
cEltbWVkaWF0ZVByb3BhZ2F0aW9uIiwic3RvcFByb3BhZ2F0aW9uIiwiaXNJbW1lZGlhdGVQcm9w
YWdhdGlvblN0b3BwZWQiLCJldmVudC5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCIsIiRn
ZXQiLCJ0aGlzLiRnZXQiLCJoYXNDbGFzcyIsImNsYXNzZXMiLCJhZGRDbGFzcyIsInJlbW92ZUNs
YXNzIiwiaGFzaEtleSIsIm5leHRVaWRGbiIsIm9ialR5cGUiLCJIYXNoTWFwIiwiaXNvbGF0ZWRV
aWQiLCJ0aGlzLm5leHRVaWQiLCJwdXQiLCJhbm9uRm4iLCJhcmdzIiwiZm5UZXh0IiwiU1RSSVBf
Q09NTUVOVFMiLCJGTl9BUkdTIiwibW9kdWxlc1RvTG9hZCIsInN1cHBvcnRPYmplY3QiLCJkZWxl
Z2F0ZSIsInByb3ZpZGVyXyIsInByb3ZpZGVySW5qZWN0b3IiLCJpbnN0YW50aWF0ZSIsInByb3Zp
ZGVyQ2FjaGUiLCJwcm92aWRlclN1ZmZpeCIsImVuZm9yY2VSZXR1cm5WYWx1ZSIsImVuZm9yY2Vk
UmV0dXJuVmFsdWUiLCJyZXN1bHQiLCJpbnN0YW5jZUluamVjdG9yIiwiZmFjdG9yeUZuIiwiZW5m
b3JjZSIsImxvYWRNb2R1bGVzIiwibW9kdWxlRm4iLCJydW5JbnZva2VRdWV1ZSIsImludm9rZUFy
Z3MiLCJsb2FkZWRNb2R1bGVzIiwibWVzc2FnZSIsInN0YWNrIiwiY3JlYXRlSW50ZXJuYWxJbmpl
Y3RvciIsImNhY2hlIiwiZ2V0U2VydmljZSIsInNlcnZpY2VOYW1lIiwiY2FsbGVyIiwiSU5TVEFO
VElBVElORyIsImVyciIsInNoaWZ0IiwibG9jYWxzIiwiJGluamVjdCIsIiQkYW5ub3RhdGUiLCJU
eXBlIiwiaW5zdGFuY2UiLCJyZXR1cm5lZFZhbHVlIiwiYW5ub3RhdGUiLCJoYXMiLCIkaW5qZWN0
b3IiLCJpbnN0YW5jZUNhY2hlIiwiZGVjb3JGbiIsIm9yaWdQcm92aWRlciIsIm9yaWckZ2V0Iiwi
b3JpZ1Byb3ZpZGVyLiRnZXQiLCJvcmlnSW5zdGFuY2UiLCIkZGVsZWdhdGUiLCJhdXRvU2Nyb2xs
aW5nRW5hYmxlZCIsImRpc2FibGVBdXRvU2Nyb2xsaW5nIiwidGhpcy5kaXNhYmxlQXV0b1Njcm9s
bGluZyIsImdldEZpcnN0QW5jaG9yIiwibGlzdCIsIkFycmF5Iiwic29tZSIsInNjcm9sbFRvIiwi
c2Nyb2xsSW50b1ZpZXciLCJzY3JvbGwiLCJ5T2Zmc2V0IiwiZ2V0Q29tcHV0ZWRTdHlsZSIsInBv
c2l0aW9uIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiYm90dG9tIiwiZWxlbVRvcCIsInRvcCIs
InNjcm9sbEJ5IiwiaGFzaCIsImVsbSIsImdldEVsZW1lbnRCeUlkIiwiZ2V0RWxlbWVudHNCeU5h
bWUiLCJhdXRvU2Nyb2xsV2F0Y2giLCJhdXRvU2Nyb2xsV2F0Y2hBY3Rpb24iLCJuZXdWYWwiLCJv
bGRWYWwiLCJtZXJnZUNsYXNzZXMiLCJiIiwic3BsaXRDbGFzc2VzIiwia2xhc3MiLCJwcmVwYXJl
QW5pbWF0ZU9wdGlvbnMiLCJvcHRpb25zIiwiQnJvd3NlciIsImNvbXBsZXRlT3V0c3RhbmRpbmdS
ZXF1ZXN0Iiwib3V0c3RhbmRpbmdSZXF1ZXN0Q291bnQiLCJvdXRzdGFuZGluZ1JlcXVlc3RDYWxs
YmFja3MiLCJwb3AiLCJlcnJvciIsImNhY2hlU3RhdGVBbmRGaXJlVXJsQ2hhbmdlIiwiY2FjaGVT
dGF0ZSIsImZpcmVVcmxDaGFuZ2UiLCJoaXN0b3J5Iiwic3RhdGUiLCJjYWNoZWRTdGF0ZSIsImxh
c3RDYWNoZWRTdGF0ZSIsImxhc3RCcm93c2VyVXJsIiwidXJsIiwibGFzdEhpc3RvcnlTdGF0ZSIs
InVybENoYW5nZUxpc3RlbmVycyIsImxpc3RlbmVyIiwiY2xlYXJUaW1lb3V0IiwicGVuZGluZ0Rl
ZmVySWRzIiwiaXNNb2NrIiwiJCRjb21wbGV0ZU91dHN0YW5kaW5nUmVxdWVzdCIsIiQkaW5jT3V0
c3RhbmRpbmdSZXF1ZXN0Q291bnQiLCJzZWxmLiQkaW5jT3V0c3RhbmRpbmdSZXF1ZXN0Q291bnQi
LCJub3RpZnlXaGVuTm9PdXRzdGFuZGluZ1JlcXVlc3RzIiwic2VsZi5ub3RpZnlXaGVuTm9PdXRz
dGFuZGluZ1JlcXVlc3RzIiwiY2FsbGJhY2siLCJocmVmIiwiYmFzZUVsZW1lbnQiLCJyZWxvYWRM
b2NhdGlvbiIsInNlbGYudXJsIiwic2FtZVN0YXRlIiwic2FtZUJhc2UiLCJzdHJpcEhhc2giLCJz
dWJzdHIiLCJzZWxmLnN0YXRlIiwidXJsQ2hhbmdlSW5pdCIsIm9uVXJsQ2hhbmdlIiwic2VsZi5v
blVybENoYW5nZSIsIiQkYXBwbGljYXRpb25EZXN0cm95ZWQiLCJzZWxmLiQkYXBwbGljYXRpb25E
ZXN0cm95ZWQiLCJvZmYiLCIkJGNoZWNrVXJsQ2hhbmdlIiwiYmFzZUhyZWYiLCJzZWxmLmJhc2VI
cmVmIiwiZGVmZXIiLCJzZWxmLmRlZmVyIiwiZGVsYXkiLCJ0aW1lb3V0SWQiLCJjYW5jZWwiLCJz
ZWxmLmRlZmVyLmNhbmNlbCIsImRlZmVySWQiLCJjYWNoZUZhY3RvcnkiLCJjYWNoZUlkIiwicmVm
cmVzaCIsImVudHJ5IiwiZnJlc2hFbmQiLCJzdGFsZUVuZCIsIm4iLCJsaW5rIiwicCIsIm5leHRF
bnRyeSIsInByZXZFbnRyeSIsImNhY2hlcyIsInNpemUiLCJzdGF0cyIsImlkIiwiY2FwYWNpdHki
LCJOdW1iZXIiLCJNQVhfVkFMVUUiLCJscnVIYXNoIiwibHJ1RW50cnkiLCJyZW1vdmUiLCJyZW1v
dmVBbGwiLCJkZXN0cm95IiwiaW5mbyIsImNhY2hlRmFjdG9yeS5pbmZvIiwiY2FjaGVGYWN0b3J5
LmdldCIsIiQkc2FuaXRpemVVcmlQcm92aWRlciIsInBhcnNlSXNvbGF0ZUJpbmRpbmdzIiwiZGly
ZWN0aXZlTmFtZSIsImlzQ29udHJvbGxlciIsIkxPQ0FMX1JFR0VYUCIsImJpbmRpbmdzIiwiZGVm
aW5pdGlvbiIsInNjb3BlTmFtZSIsIiRjb21waWxlTWluRXJyIiwibW9kZSIsImNvbGxlY3Rpb24i
LCJvcHRpb25hbCIsImF0dHJOYW1lIiwiYXNzZXJ0VmFsaWREaXJlY3RpdmVOYW1lIiwiaGFzRGly
ZWN0aXZlcyIsIkNPTU1FTlRfRElSRUNUSVZFX1JFR0VYUCIsIkNMQVNTX0RJUkVDVElWRV9SRUdF
WFAiLCJBTExfT1JfTk9USElOR19BVFRSUyIsIlJFUVVJUkVfUFJFRklYX1JFR0VYUCIsIkVWRU5U
X0hBTkRMRVJfQVRUUl9SRUdFWFAiLCJ0aGlzLmRpcmVjdGl2ZSIsInJlZ2lzdGVyRGlyZWN0aXZl
IiwiZGlyZWN0aXZlRmFjdG9yeSIsIlN1ZmZpeCIsImRpcmVjdGl2ZXMiLCJwcmlvcml0eSIsInJl
cXVpcmUiLCJyZXN0cmljdCIsImJpbmRUb0NvbnRyb2xsZXIiLCJjb250cm9sbGVyQXMiLCJDTlRS
TF9SRUciLCIkJGJpbmRpbmdzIiwiJCRpc29sYXRlQmluZGluZ3MiLCJhSHJlZlNhbml0aXphdGlv
bldoaXRlbGlzdCIsInRoaXMuYUhyZWZTYW5pdGl6YXRpb25XaGl0ZWxpc3QiLCJyZWdleHAiLCJp
bWdTcmNTYW5pdGl6YXRpb25XaGl0ZWxpc3QiLCJ0aGlzLmltZ1NyY1Nhbml0aXphdGlvbldoaXRl
bGlzdCIsInRoaXMuZGVidWdJbmZvRW5hYmxlZCIsImVuYWJsZWQiLCJzYWZlQWRkQ2xhc3MiLCIk
ZWxlbWVudCIsImNsYXNzTmFtZSIsIiRjb21waWxlTm9kZXMiLCJ0cmFuc2NsdWRlRm4iLCJtYXhQ
cmlvcml0eSIsImlnbm9yZURpcmVjdGl2ZSIsInByZXZpb3VzQ29tcGlsZUNvbnRleHQiLCJub2Rl
VmFsdWUiLCJjb21wb3NpdGVMaW5rRm4iLCJjb21waWxlTm9kZXMiLCIkJGFkZFNjb3BlQ2xhc3Mi
LCJuYW1lc3BhY2UiLCJwdWJsaWNMaW5rRm4iLCJjbG9uZUNvbm5lY3RGbiIsInBhcmVudEJvdW5k
VHJhbnNjbHVkZUZuIiwidHJhbnNjbHVkZUNvbnRyb2xsZXJzIiwiZnV0dXJlUGFyZW50RWxlbWVu
dCIsIiQkYm91bmRUcmFuc2NsdWRlIiwiJGxpbmtOb2RlIiwid3JhcFRlbXBsYXRlIiwiY29udHJv
bGxlck5hbWUiLCIkJGFkZFNjb3BlSW5mbyIsIm5vZGVMaXN0IiwiJHJvb3RFbGVtZW50IiwiY2hp
bGRMaW5rRm4iLCJjaGlsZFNjb3BlIiwiY2hpbGRCb3VuZFRyYW5zY2x1ZGVGbiIsInN0YWJsZU5v
ZGVMaXN0Iiwibm9kZUxpbmtGbkZvdW5kIiwibGlua0ZucyIsImlkeCIsIm5vZGVMaW5rRm4iLCJk
ZXN0cm95QmluZGluZ3MiLCIkbmV3IiwiJCRkZXN0cm95QmluZGluZ3MiLCIkb24iLCJ0cmFuc2Ns
dWRlT25UaGlzRWxlbWVudCIsImNyZWF0ZUJvdW5kVHJhbnNjbHVkZUZuIiwidHJhbnNjbHVkZSIs
InRlbXBsYXRlT25UaGlzRWxlbWVudCIsImF0dHJzIiwibGlua0ZuRm91bmQiLCJBdHRyaWJ1dGVz
IiwiY29sbGVjdERpcmVjdGl2ZXMiLCJhcHBseURpcmVjdGl2ZXNUb05vZGUiLCIkJGVsZW1lbnQi
LCJ0ZXJtaW5hbCIsInByZXZpb3VzQm91bmRUcmFuc2NsdWRlRm4iLCJib3VuZFRyYW5zY2x1ZGVG
biIsInRyYW5zY2x1ZGVkU2NvcGUiLCJjbG9uZUZuIiwiY29udHJvbGxlcnMiLCJjb250YWluaW5n
U2NvcGUiLCIkJHRyYW5zY2x1ZGVkIiwiYXR0cnNNYXAiLCIkYXR0ciIsImFkZERpcmVjdGl2ZSIs
ImRpcmVjdGl2ZU5vcm1hbGl6ZSIsImlzTmdBdHRyIiwibkF0dHJzIiwiYXR0cmlidXRlcyIsImF0
dHJTdGFydE5hbWUiLCJhdHRyRW5kTmFtZSIsIm5nQXR0ck5hbWUiLCJOR19BVFRSX0JJTkRJTkci
LCJQUkVGSVhfUkVHRVhQIiwiZGlyZWN0aXZlTk5hbWUiLCJkaXJlY3RpdmVJc011bHRpRWxlbWVu
dCIsIm5OYW1lIiwiYWRkQXR0ckludGVycG9sYXRlRGlyZWN0aXZlIiwiYW5pbVZhbCIsIm1zaWUi
LCJhZGRUZXh0SW50ZXJwb2xhdGVEaXJlY3RpdmUiLCJOT0RFX1RZUEVfQ09NTUVOVCIsImJ5UHJp
b3JpdHkiLCJncm91cFNjYW4iLCJhdHRyU3RhcnQiLCJhdHRyRW5kIiwiZGVwdGgiLCJncm91cEVs
ZW1lbnRzTGlua0ZuV3JhcHBlciIsImxpbmtGbiIsImNvbXBpbGVOb2RlIiwidGVtcGxhdGVBdHRy
cyIsImpxQ29sbGVjdGlvbiIsIm9yaWdpbmFsUmVwbGFjZURpcmVjdGl2ZSIsInByZUxpbmtGbnMi
LCJwb3N0TGlua0ZucyIsImFkZExpbmtGbnMiLCJwcmUiLCJwb3N0IiwibmV3SXNvbGF0ZVNjb3Bl
RGlyZWN0aXZlIiwiJCRpc29sYXRlU2NvcGUiLCJjbG9uZUFuZEFubm90YXRlRm4iLCJnZXRDb250
cm9sbGVycyIsImVsZW1lbnRDb250cm9sbGVycyIsInN1YnN0cmluZyIsImluaGVyaXRUeXBlIiwi
ZGF0YU5hbWUiLCJzZXR1cENvbnRyb2xsZXJzIiwiY29udHJvbGxlckRpcmVjdGl2ZXMiLCJjb250
cm9sbGVyS2V5IiwiJHNjb3BlIiwiJGF0dHJzIiwiJHRyYW5zY2x1ZGUiLCJjb250cm9sbGVySW5z
dGFuY2UiLCJoYXNFbGVtZW50VHJhbnNjbHVkZURpcmVjdGl2ZSIsImxpbmtOb2RlIiwidGhpc0xp
bmtGbiIsImNvbnRyb2xsZXJzQm91bmRUcmFuc2NsdWRlIiwiY2xvbmVBdHRhY2hGbiIsInNjb3Bl
VG9DaGlsZCIsInRlbXBsYXRlRGlyZWN0aXZlIiwiJCRvcmlnaW5hbERpcmVjdGl2ZSIsImluaXRp
YWxpemVEaXJlY3RpdmVCaW5kaW5ncyIsInNjb3BlRGlyZWN0aXZlIiwibmV3U2NvcGVEaXJlY3Rp
dmUiLCJjb250cm9sbGVyRm9yQmluZGluZ3MiLCJpZGVudGlmaWVyIiwiY29udHJvbGxlclJlc3Vs
dCIsImludm9rZUxpbmtGbiIsInRlbXBsYXRlIiwidGVtcGxhdGVVcmwiLCJ0ZXJtaW5hbFByaW9y
aXR5Iiwibm9uVGxiVHJhbnNjbHVkZURpcmVjdGl2ZSIsImhhc1RyYW5zY2x1ZGVEaXJlY3RpdmUi
LCJoYXNUZW1wbGF0ZSIsIiRjb21waWxlTm9kZSIsIiR0ZW1wbGF0ZSIsImNoaWxkVHJhbnNjbHVk
ZUZuIiwiJCRzdGFydCIsIiQkZW5kIiwiZGlyZWN0aXZlVmFsdWUiLCJhc3NlcnROb0R1cGxpY2F0
ZSIsIiQkdGxiIiwiY3JlYXRlQ29tbWVudCIsInJlcGxhY2VXaXRoIiwicmVwbGFjZURpcmVjdGl2
ZSIsImNvbnRlbnRzIiwiZGVub3JtYWxpemVUZW1wbGF0ZSIsInJlbW92ZUNvbW1lbnRzIiwidGVt
cGxhdGVOYW1lc3BhY2UiLCJuZXdUZW1wbGF0ZUF0dHJzIiwidGVtcGxhdGVEaXJlY3RpdmVzIiwi
dW5wcm9jZXNzZWREaXJlY3RpdmVzIiwibWFya0RpcmVjdGl2ZXNBc0lzb2xhdGUiLCJtZXJnZVRl
bXBsYXRlQXR0cmlidXRlcyIsImNvbXBpbGVUZW1wbGF0ZVVybCIsIk1hdGgiLCJtYXgiLCJ0RGly
ZWN0aXZlcyIsInN0YXJ0QXR0ck5hbWUiLCJlbmRBdHRyTmFtZSIsIm11bHRpRWxlbWVudCIsInNy
Y0F0dHIiLCJkc3RBdHRyIiwiJHNldCIsInRBdHRycyIsImxpbmtRdWV1ZSIsImFmdGVyVGVtcGxh
dGVOb2RlTGlua0ZuIiwiYWZ0ZXJUZW1wbGF0ZUNoaWxkTGlua0ZuIiwiYmVmb3JlVGVtcGxhdGVD
b21waWxlTm9kZSIsIm9yaWdBc3luY0RpcmVjdGl2ZSIsImRlcml2ZWRTeW5jRGlyZWN0aXZlIiwi
dGhlbiIsImNvbnRlbnQiLCJ0ZW1wVGVtcGxhdGVBdHRycyIsImJlZm9yZVRlbXBsYXRlTGlua05v
ZGUiLCJsaW5rUm9vdEVsZW1lbnQiLCIkJGRlc3Ryb3llZCIsIm9sZENsYXNzZXMiLCJkZWxheWVk
Tm9kZUxpbmtGbiIsImlnbm9yZUNoaWxkTGlua0ZuIiwiZGlmZiIsIndoYXQiLCJwcmV2aW91c0Rp
cmVjdGl2ZSIsIndyYXBNb2R1bGVOYW1lSWZEZWZpbmVkIiwibW9kdWxlTmFtZSIsInRleHQiLCJp
bnRlcnBvbGF0ZUZuIiwidGV4dEludGVycG9sYXRlQ29tcGlsZUZuIiwidGVtcGxhdGVOb2RlIiwi
dGVtcGxhdGVOb2RlUGFyZW50IiwiaGFzQ29tcGlsZVBhcmVudCIsIiQkYWRkQmluZGluZ0NsYXNz
IiwidGV4dEludGVycG9sYXRlTGlua0ZuIiwiJCRhZGRCaW5kaW5nSW5mbyIsImV4cHJlc3Npb25z
IiwiaW50ZXJwb2xhdGVGbldhdGNoQWN0aW9uIiwid3JhcHBlciIsImdldFRydXN0ZWRDb250ZXh0
IiwiYXR0ck5vcm1hbGl6ZWROYW1lIiwiSFRNTCIsIlJFU09VUkNFX1VSTCIsImFsbE9yTm90aGlu
ZyIsInRydXN0ZWRDb250ZXh0IiwiYXR0ckludGVycG9sYXRlUHJlTGlua0ZuIiwiJCRvYnNlcnZl
cnMiLCJuZXdWYWx1ZSIsIiQkaW50ZXIiLCIkJHNjb3BlIiwib2xkVmFsdWUiLCIkdXBkYXRlQ2xh
c3MiLCJlbGVtZW50c1RvUmVtb3ZlIiwibmV3Tm9kZSIsImZpcnN0RWxlbWVudFRvUmVtb3ZlIiwi
cmVtb3ZlQ291bnQiLCJqMiIsInJlcGxhY2VDaGlsZCIsImhhc0RhdGEiLCJleHBhbmRvIiwiayIs
ImtrIiwiYW5ub3RhdGlvbiIsIm5ld1Njb3BlIiwib25OZXdTY29wZURlc3Ryb3llZCIsImxhc3RW
YWx1ZSIsInBhcmVudEdldCIsInBhcmVudFNldCIsImNvbXBhcmUiLCIkb2JzZXJ2ZSIsImxpdGVy
YWwiLCJhc3NpZ24iLCJwYXJlbnRWYWx1ZVdhdGNoIiwicGFyZW50VmFsdWUiLCIkc3RhdGVmdWwi
LCJ1bndhdGNoIiwiJHdhdGNoQ29sbGVjdGlvbiIsImF0dHJpYnV0ZXNUb0NvcHkiLCIkbm9ybWFs
aXplIiwiJGFkZENsYXNzIiwiY2xhc3NWYWwiLCIkcmVtb3ZlQ2xhc3MiLCJuZXdDbGFzc2VzIiwi
dG9BZGQiLCJ0b2tlbkRpZmZlcmVuY2UiLCJ0b1JlbW92ZSIsIndyaXRlQXR0ciIsImJvb2xlYW5L
ZXkiLCJhbGlhc2VkS2V5Iiwib2JzZXJ2ZXIiLCJ0cmltbWVkU3Jjc2V0Iiwic3JjUGF0dGVybiIs
InJhd1VyaXMiLCJuYnJVcmlzV2l0aDJwYXJ0cyIsImZsb29yIiwiaW5uZXJJZHgiLCJsYXN0VHVw
bGUiLCJyZW1vdmVBdHRyIiwibGlzdGVuZXJzIiwic3RhcnRTeW1ib2wiLCJlbmRTeW1ib2wiLCJi
aW5kaW5nIiwiaXNvbGF0ZWQiLCJub1RlbXBsYXRlIiwic3RyMSIsInN0cjIiLCJ2YWx1ZXMiLCJ0
b2tlbnMxIiwidG9rZW5zMiIsInRva2VuIiwianFOb2RlcyIsImdsb2JhbHMiLCJyZWdpc3RlciIs
InRoaXMucmVnaXN0ZXIiLCJhbGxvd0dsb2JhbHMiLCJ0aGlzLmFsbG93R2xvYmFscyIsImFkZElk
ZW50aWZpZXIiLCJleHByZXNzaW9uIiwibGF0ZXIiLCJpZGVudCIsIiRjb250cm9sbGVyTWluRXJy
IiwiY29udHJvbGxlclByb3RvdHlwZSIsImV4Y2VwdGlvbiIsImNhdXNlIiwic2VyaWFsaXplVmFs
dWUiLCJ2IiwidG9JU09TdHJpbmciLCJuZ1BhcmFtU2VyaWFsaXplciIsInBhcmFtcyIsImpRdWVy
eUxpa2VQYXJhbVNlcmlhbGl6ZXIiLCJzZXJpYWxpemUiLCJ0b1NlcmlhbGl6ZSIsInRvcExldmVs
IiwiZGVmYXVsdEh0dHBSZXNwb25zZVRyYW5zZm9ybSIsImhlYWRlcnMiLCJ0ZW1wRGF0YSIsIkpT
T05fUFJPVEVDVElPTl9QUkVGSVgiLCJjb250ZW50VHlwZSIsImpzb25TdGFydCIsIkpTT05fU1RB
UlQiLCJKU09OX0VORFMiLCJwYXJzZUhlYWRlcnMiLCJsaW5lIiwiaGVhZGVyVmFsIiwiaGVhZGVy
S2V5IiwiaGVhZGVyc0dldHRlciIsImhlYWRlcnNPYmoiLCJ0cmFuc2Zvcm1EYXRhIiwic3RhdHVz
IiwiZm5zIiwiZGVmYXVsdHMiLCJ0cmFuc2Zvcm1SZXNwb25zZSIsInRyYW5zZm9ybVJlcXVlc3Qi
LCJkIiwiY29tbW9uIiwiQ09OVEVOVF9UWVBFX0FQUExJQ0FUSU9OX0pTT04iLCJwYXRjaCIsInhz
cmZDb29raWVOYW1lIiwieHNyZkhlYWRlck5hbWUiLCJwYXJhbVNlcmlhbGl6ZXIiLCJ1c2VBcHBs
eUFzeW5jIiwidGhpcy51c2VBcHBseUFzeW5jIiwiaW50ZXJjZXB0b3JGYWN0b3JpZXMiLCJpbnRl
cmNlcHRvcnMiLCJyZXF1ZXN0Q29uZmlnIiwicmVzcG9uc2UiLCJyZXNwIiwicmVqZWN0IiwiZXhl
Y3V0ZUhlYWRlckZucyIsImhlYWRlckNvbnRlbnQiLCJwcm9jZXNzZWRIZWFkZXJzIiwiaGVhZGVy
Rm4iLCJoZWFkZXIiLCJtZXJnZUhlYWRlcnMiLCJkZWZIZWFkZXJzIiwicmVxSGVhZGVycyIsImRl
ZkhlYWRlck5hbWUiLCJsb3dlcmNhc2VEZWZIZWFkZXJOYW1lIiwicmVxSGVhZGVyTmFtZSIsImNo
YWluIiwic2VydmVyUmVxdWVzdCIsInJlcURhdGEiLCJ3aXRoQ3JlZGVudGlhbHMiLCJzZW5kUmVx
IiwicHJvbWlzZSIsIndoZW4iLCJyZXZlcnNlZEludGVyY2VwdG9ycyIsImludGVyY2VwdG9yIiwi
cmVxdWVzdCIsInJlcXVlc3RFcnJvciIsInJlc3BvbnNlRXJyb3IiLCJ0aGVuRm4iLCJyZWplY3RG
biIsInN1Y2Nlc3MiLCJwcm9taXNlLnN1Y2Nlc3MiLCJwcm9taXNlLmVycm9yIiwiZG9uZSIsImhl
YWRlcnNTdHJpbmciLCJzdGF0dXNUZXh0IiwicmVzb2x2ZUh0dHBQcm9taXNlIiwicmVzb2x2ZVBy
b21pc2UiLCIkYXBwbHlBc3luYyIsIiQkcGhhc2UiLCJkZWZlcnJlZCIsInJlc29sdmUiLCJyZXNv
bHZlUHJvbWlzZVdpdGhSZXN1bHQiLCJyZW1vdmVQZW5kaW5nUmVxIiwicGVuZGluZ1JlcXVlc3Rz
IiwiY2FjaGVkUmVzcCIsImJ1aWxkVXJsIiwiZGVmYXVsdENhY2hlIiwieHNyZlZhbHVlIiwidXJs
SXNTYW1lT3JpZ2luIiwidGltZW91dCIsInJlc3BvbnNlVHlwZSIsInNlcmlhbGl6ZWRQYXJhbXMi
LCJpbnRlcmNlcHRvckZhY3RvcnkiLCJjcmVhdGVTaG9ydE1ldGhvZHMiLCJjcmVhdGVTaG9ydE1l
dGhvZHNXaXRoRGF0YSIsImNyZWF0ZVhociIsIlhNTEh0dHBSZXF1ZXN0IiwiY3JlYXRlSHR0cEJh
Y2tlbmQiLCJjYWxsYmFja3MiLCIkYnJvd3NlckRlZmVyIiwicmF3RG9jdW1lbnQiLCJqc29ucFJl
cSIsImNhbGxiYWNrSWQiLCJhc3luYyIsImJvZHkiLCJjYWxsZWQiLCJhZGRFdmVudExpc3RlbmVy
IiwidGltZW91dFJlcXVlc3QiLCJqc29ucERvbmUiLCJ4aHIiLCJhYm9ydCIsImNvbXBsZXRlUmVx
dWVzdCIsIm9wZW4iLCJzZXRSZXF1ZXN0SGVhZGVyIiwib25sb2FkIiwieGhyLm9ubG9hZCIsInJl
c3BvbnNlVGV4dCIsInVybFJlc29sdmUiLCJwcm90b2NvbCIsImdldEFsbFJlc3BvbnNlSGVhZGVy
cyIsIm9uZXJyb3IiLCJvbmFib3J0Iiwic2VuZCIsInRoaXMuc3RhcnRTeW1ib2wiLCJ0aGlzLmVu
ZFN5bWJvbCIsImVzY2FwZSIsImNoIiwidW5lc2NhcGVUZXh0IiwiZXNjYXBlZFN0YXJ0UmVnZXhw
IiwiZXNjYXBlZEVuZFJlZ2V4cCIsIm11c3RIYXZlRXhwcmVzc2lvbiIsInBhcnNlU3RyaW5naWZ5
SW50ZXJjZXB0b3IiLCJnZXRUcnVzdGVkIiwiJGludGVycG9sYXRlTWluRXJyIiwiaW50ZXJyIiwi
ZW5kSW5kZXgiLCJwYXJzZUZucyIsInRleHRMZW5ndGgiLCJleHByZXNzaW9uUG9zaXRpb25zIiwi
c3RhcnRTeW1ib2xMZW5ndGgiLCJleHAiLCJlbmRTeW1ib2xMZW5ndGgiLCJ0aHJvd05vY29uY2F0
IiwiY29tcHV0ZSIsImludGVycG9sYXRpb25GbiIsIiQkd2F0Y2hEZWxlZ2F0ZSIsIiR3YXRjaEdy
b3VwIiwiaW50ZXJwb2xhdGVGbldhdGNoZXIiLCJvbGRWYWx1ZXMiLCJjdXJyVmFsdWUiLCIkaW50
ZXJwb2xhdGUuc3RhcnRTeW1ib2wiLCIkaW50ZXJwb2xhdGUuZW5kU3ltYm9sIiwiaW50ZXJ2YWwi
LCJjb3VudCIsImludm9rZUFwcGx5IiwiaGFzUGFyYW1zIiwic2V0SW50ZXJ2YWwiLCJjbGVhcklu
dGVydmFsIiwiaXRlcmF0aW9uIiwic2tpcEFwcGx5IiwiJCRpbnRlcnZhbElkIiwidGljayIsIm5v
dGlmeSIsImludGVydmFscyIsImludGVydmFsLmNhbmNlbCIsIk5VTUJFUl9GT1JNQVRTIiwiREVD
SU1BTF9TRVAiLCJHUk9VUF9TRVAiLCJQQVRURVJOUyIsIm1pbkludCIsIm1pbkZyYWMiLCJtYXhG
cmFjIiwicG9zUHJlIiwicG9zU3VmIiwibmVnUHJlIiwibmVnU3VmIiwiZ1NpemUiLCJsZ1NpemUi
LCJDVVJSRU5DWV9TWU0iLCJEQVRFVElNRV9GT1JNQVRTIiwiTU9OVEgiLCJTSE9SVE1PTlRIIiwi
REFZIiwiU0hPUlREQVkiLCJBTVBNUyIsIm1lZGl1bSIsImZ1bGxEYXRlIiwibG9uZ0RhdGUiLCJt
ZWRpdW1EYXRlIiwic2hvcnREYXRlIiwibWVkaXVtVGltZSIsInNob3J0VGltZSIsIkVSQU5BTUVT
IiwiRVJBUyIsInBsdXJhbENhdCIsIm51bSIsImVuY29kZVBhdGgiLCJzZWdtZW50cyIsInBhcnNl
QWJzb2x1dGVVcmwiLCJhYnNvbHV0ZVVybCIsImxvY2F0aW9uT2JqIiwicGFyc2VkVXJsIiwiJCRw
cm90b2NvbCIsIiQkaG9zdCIsImhvc3RuYW1lIiwiJCRwb3J0IiwicG9ydCIsIkRFRkFVTFRfUE9S
VFMiLCJwYXJzZUFwcFVybCIsInJlbGF0aXZlVXJsIiwicHJlZml4ZWQiLCIkJHBhdGgiLCJwYXRo
bmFtZSIsIiQkc2VhcmNoIiwic2VhcmNoIiwiJCRoYXNoIiwiYmVnaW5zV2l0aCIsImJlZ2luIiwi
d2hvbGUiLCJ0cmltRW1wdHlIYXNoIiwic3RyaXBGaWxlIiwibGFzdEluZGV4T2YiLCJMb2NhdGlv
bkh0bWw1VXJsIiwiYXBwQmFzZSIsImJhc2VQcmVmaXgiLCIkJGh0bWw1IiwiYXBwQmFzZU5vRmls
ZSIsIiQkcGFyc2UiLCJ0aGlzLiQkcGFyc2UiLCJwYXRoVXJsIiwiJGxvY2F0aW9uTWluRXJyIiwi
JCRjb21wb3NlIiwidGhpcy4kJGNvbXBvc2UiLCIkJHVybCIsIiQkYWJzVXJsIiwiJCRwYXJzZUxp
bmtVcmwiLCJ0aGlzLiQkcGFyc2VMaW5rVXJsIiwicmVsSHJlZiIsImFwcFVybCIsInByZXZBcHBV
cmwiLCJyZXdyaXR0ZW5VcmwiLCJMb2NhdGlvbkhhc2hiYW5nVXJsIiwiaGFzaFByZWZpeCIsIndp
dGhvdXRCYXNlVXJsIiwid2l0aG91dEhhc2hVcmwiLCJ3aW5kb3dzRmlsZVBhdGhFeHAiLCJiYXNl
IiwiZmlyc3RQYXRoU2VnbWVudE1hdGNoIiwiTG9jYXRpb25IYXNoYmFuZ0luSHRtbDVVcmwiLCJs
b2NhdGlvbkdldHRlciIsInByb3BlcnR5IiwibG9jYXRpb25HZXR0ZXJTZXR0ZXIiLCJwcmVwcm9j
ZXNzIiwiaHRtbDVNb2RlIiwicmVxdWlyZUJhc2UiLCJyZXdyaXRlTGlua3MiLCJ0aGlzLmhhc2hQ
cmVmaXgiLCJ0aGlzLmh0bWw1TW9kZSIsInNldEJyb3dzZXJVcmxXaXRoRmFsbGJhY2siLCJvbGRV
cmwiLCJvbGRTdGF0ZSIsIiQkc3RhdGUiLCJhZnRlckxvY2F0aW9uQ2hhbmdlIiwiJGJyb2FkY2Fz
dCIsImFic1VybCIsIkxvY2F0aW9uTW9kZSIsImluaXRpYWxVcmwiLCJJR05PUkVfVVJJX1JFR0VY
UCIsImN0cmxLZXkiLCJtZXRhS2V5Iiwic2hpZnRLZXkiLCJ3aGljaCIsImJ1dHRvbiIsInRhcmdl
dCIsImFic0hyZWYiLCJwcmV2ZW50RGVmYXVsdCIsImluaXRpYWxpemluZyIsIm5ld1VybCIsIm5l
d1N0YXRlIiwiJGRpZ2VzdCIsIiRsb2NhdGlvbldhdGNoIiwiY3VycmVudFJlcGxhY2UiLCIkJHJl
cGxhY2UiLCJ1cmxPclN0YXRlQ2hhbmdlZCIsImRlYnVnIiwiZGVidWdFbmFibGVkIiwidGhpcy5k
ZWJ1Z0VuYWJsZWQiLCJmbGFnIiwiZm9ybWF0RXJyb3IiLCJFcnJvciIsInNvdXJjZVVSTCIsImNv
bnNvbGVMb2ciLCJjb25zb2xlIiwibG9nRm4iLCJsb2ciLCJoYXNBcHBseSIsImFyZzEiLCJhcmcy
Iiwid2FybiIsImVuc3VyZVNhZmVNZW1iZXJOYW1lIiwiZnVsbEV4cHJlc3Npb24iLCIkcGFyc2VN
aW5FcnIiLCJlbnN1cmVTYWZlT2JqZWN0IiwiY2hpbGRyZW4iLCJlbnN1cmVTYWZlRnVuY3Rpb24i
LCJDQUxMIiwiQVBQTFkiLCJCSU5EIiwiaWZEZWZpbmVkIiwicGx1c0ZuIiwiciIsImZpbmRDb25z
dGFudEFuZFdhdGNoRXhwcmVzc2lvbnMiLCJhc3QiLCJhbGxDb25zdGFudHMiLCJhcmdzVG9XYXRj
aCIsIkFTVCIsIlByb2dyYW0iLCJleHByIiwiTGl0ZXJhbCIsInRvV2F0Y2giLCJVbmFyeUV4cHJl
c3Npb24iLCJhcmd1bWVudCIsIkJpbmFyeUV4cHJlc3Npb24iLCJsZWZ0IiwicmlnaHQiLCJMb2dp
Y2FsRXhwcmVzc2lvbiIsIkNvbmRpdGlvbmFsRXhwcmVzc2lvbiIsImFsdGVybmF0ZSIsImNvbnNl
cXVlbnQiLCJJZGVudGlmaWVyIiwiTWVtYmVyRXhwcmVzc2lvbiIsIm9iamVjdCIsImNvbXB1dGVk
IiwiQ2FsbEV4cHJlc3Npb24iLCJjYWxsZWUiLCJBc3NpZ25tZW50RXhwcmVzc2lvbiIsIkFycmF5
RXhwcmVzc2lvbiIsIk9iamVjdEV4cHJlc3Npb24iLCJwcm9wZXJ0aWVzIiwiVGhpc0V4cHJlc3Np
b24iLCJnZXRJbnB1dHMiLCJsYXN0RXhwcmVzc2lvbiIsImlzQXNzaWduYWJsZSIsImFzc2lnbmFi
bGVBU1QiLCJOR1ZhbHVlUGFyYW1ldGVyIiwib3BlcmF0b3IiLCJpc0xpdGVyYWwiLCJBU1RDb21w
aWxlciIsImFzdEJ1aWxkZXIiLCJBU1RJbnRlcnByZXRlciIsInNldHRlciIsInNldFZhbHVlIiwi
ZnVsbEV4cCIsInByb3BlcnR5T2JqIiwiaXNQb3NzaWJseURhbmdlcm91c01lbWJlck5hbWUiLCJn
ZXRWYWx1ZU9mIiwib2JqZWN0VmFsdWVPZiIsImNhY2hlRGVmYXVsdCIsImNhY2hlRXhwZW5zaXZl
IiwiZXhwcmVzc2lvbklucHV0RGlydHlDaGVjayIsIm9sZFZhbHVlT2ZWYWx1ZSIsImlucHV0c1dh
dGNoRGVsZWdhdGUiLCJvYmplY3RFcXVhbGl0eSIsInBhcnNlZEV4cHJlc3Npb24iLCJwcmV0dHlQ
cmludEV4cHJlc3Npb24iLCJpbnB1dEV4cHJlc3Npb25zIiwiaW5wdXRzIiwibGFzdFJlc3VsdCIs
Im9sZElucHV0VmFsdWVPZiIsImV4cHJlc3Npb25JbnB1dFdhdGNoIiwibmV3SW5wdXRWYWx1ZSIs
Im9sZElucHV0VmFsdWVPZlZhbHVlcyIsIm9sZElucHV0VmFsdWVzIiwiZXhwcmVzc2lvbklucHV0
c1dhdGNoIiwiY2hhbmdlZCIsIm9uZVRpbWVXYXRjaERlbGVnYXRlIiwib25lVGltZVdhdGNoIiwi
b25lVGltZUxpc3RlbmVyIiwib2xkIiwiJCRwb3N0RGlnZXN0Iiwib25lVGltZUxpdGVyYWxXYXRj
aERlbGVnYXRlIiwiaXNBbGxEZWZpbmVkIiwiYWxsRGVmaW5lZCIsImNvbnN0YW50V2F0Y2hEZWxl
Z2F0ZSIsImNvbnN0YW50V2F0Y2giLCJjb25zdGFudExpc3RlbmVyIiwiYWRkSW50ZXJjZXB0b3Ii
LCJpbnRlcmNlcHRvckZuIiwid2F0Y2hEZWxlZ2F0ZSIsInJlZ3VsYXJJbnRlcmNlcHRlZEV4cHJl
c3Npb24iLCJvbmVUaW1lSW50ZXJjZXB0ZWRFeHByZXNzaW9uIiwiJHBhcnNlT3B0aW9ucyIsImV4
cGVuc2l2ZUNoZWNrcyIsIiRwYXJzZU9wdGlvbnNFeHBlbnNpdmUiLCJvbmVUaW1lIiwiY2FjaGVL
ZXkiLCJwYXJzZU9wdGlvbnMiLCJsZXhlciIsIkxleGVyIiwicGFyc2VyIiwiUGFyc2VyIiwicUZh
Y3RvcnkiLCJuZXh0VGljayIsImV4Y2VwdGlvbkhhbmRsZXIiLCJjYWxsT25jZSIsInJlc29sdmVG
biIsIlByb21pc2UiLCJzaW1wbGVCaW5kIiwic2NoZWR1bGVQcm9jZXNzUXVldWUiLCJwcm9jZXNz
U2NoZWR1bGVkIiwicGVuZGluZyIsIkRlZmVycmVkIiwiJHFNaW5FcnIiLCJUeXBlRXJyb3IiLCJv
bkZ1bGZpbGxlZCIsIm9uUmVqZWN0ZWQiLCJwcm9ncmVzc0JhY2siLCJjYXRjaCIsImZpbmFsbHki
LCJoYW5kbGVDYWxsYmFjayIsIiQkcmVqZWN0IiwiJCRyZXNvbHZlIiwicHJvZ3Jlc3MiLCJtYWtl
UHJvbWlzZSIsInJlc29sdmVkIiwiaXNSZXNvbHZlZCIsImNhbGxiYWNrT3V0cHV0IiwiZXJyYmFj
ayIsIiRRIiwiUSIsInJlc29sdmVyIiwiYWxsIiwicHJvbWlzZXMiLCJyZXN1bHRzIiwiZmx1c2gi
LCJ0YXNrUXVldWUiLCJ0YXNrIiwidGFza0NvdW50IiwicXVldWVGbiIsImFzeW5jRm4iLCJjYW5j
ZWxMYXN0UkFGIiwicmFmRm4iLCJjYW5jZWxRdWV1ZUZuIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1l
Iiwid2Via2l0UmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiY2FuY2VsQW5pbWF0aW9uRnJhbWUiLCJ3
ZWJraXRDYW5jZWxBbmltYXRpb25GcmFtZSIsIndlYmtpdENhbmNlbFJlcXVlc3RBbmltYXRpb25G
cmFtZSIsInJhZlN1cHBvcnRlZCIsInRpbWVyIiwic3VwcG9ydGVkIiwiY3JlYXRlQ2hpbGRTY29w
ZUNsYXNzIiwiQ2hpbGRTY29wZSIsIiQkd2F0Y2hlcnMiLCIkJG5leHRTaWJsaW5nIiwiJCRjaGls
ZEhlYWQiLCIkJGNoaWxkVGFpbCIsIiQkbGlzdGVuZXJzIiwiJCRsaXN0ZW5lckNvdW50IiwiJCR3
YXRjaGVyc0NvdW50IiwiJGlkIiwiJCRDaGlsZFNjb3BlIiwiVFRMIiwiJHJvb3RTY29wZU1pbkVy
ciIsImxhc3REaXJ0eVdhdGNoIiwiYXBwbHlBc3luY0lkIiwiZGlnZXN0VHRsIiwidGhpcy5kaWdl
c3RUdGwiLCJkZXN0cm95Q2hpbGRTY29wZSIsIiRldmVudCIsImN1cnJlbnRTY29wZSIsIlNjb3Bl
IiwiJHBhcmVudCIsIiQkcHJldlNpYmxpbmciLCIkcm9vdCIsImJlZ2luUGhhc2UiLCJwaGFzZSIs
ImluY3JlbWVudFdhdGNoZXJzQ291bnQiLCJjdXJyZW50IiwiZGVjcmVtZW50TGlzdGVuZXJDb3Vu
dCIsImluaXRXYXRjaFZhbCIsImZsdXNoQXBwbHlBc3luYyIsImFwcGx5QXN5bmNRdWV1ZSIsInNj
aGVkdWxlQXBwbHlBc3luYyIsImlzb2xhdGUiLCJjaGlsZCIsIndhdGNoRXhwIiwid2F0Y2hlciIs
Imxhc3QiLCJlcSIsImRlcmVnaXN0ZXJXYXRjaCIsIndhdGNoRXhwcmVzc2lvbnMiLCJ3YXRjaEdy
b3VwQWN0aW9uIiwiY2hhbmdlUmVhY3Rpb25TY2hlZHVsZWQiLCJmaXJzdFJ1biIsIm5ld1ZhbHVl
cyIsImRlcmVnaXN0ZXJGbnMiLCJzaG91bGRDYWxsIiwiZGVyZWdpc3RlcldhdGNoR3JvdXAiLCJ1
bndhdGNoRm4iLCJ3YXRjaEdyb3VwU3ViQWN0aW9uIiwiJHdhdGNoQ29sbGVjdGlvbkludGVyY2Vw
dG9yIiwiX3ZhbHVlIiwiYm90aE5hTiIsIm5ld0l0ZW0iLCJvbGRJdGVtIiwiaW50ZXJuYWxBcnJh
eSIsIm9sZExlbmd0aCIsImNoYW5nZURldGVjdGVkIiwibmV3TGVuZ3RoIiwiaW50ZXJuYWxPYmpl
Y3QiLCJ2ZXJ5T2xkVmFsdWUiLCJ0cmFja1ZlcnlPbGRWYWx1ZSIsImNoYW5nZURldGVjdG9yIiwi
aW5pdFJ1biIsIiR3YXRjaENvbGxlY3Rpb25BY3Rpb24iLCJ3YXRjaCIsIndhdGNoZXJzIiwiZGly
dHkiLCJ0dGwiLCJ3YXRjaExvZyIsImxvZ0lkeCIsImFzeW5jVGFzayIsImFzeW5jUXVldWUiLCIk
ZXZhbCIsIm1zZyIsIm5leHQiLCJwb3N0RGlnZXN0UXVldWUiLCJldmVudE5hbWUiLCJ0aGlzLiR3
YXRjaEdyb3VwIiwiJGFwcGx5QXN5bmNFeHByZXNzaW9uIiwibmFtZWRMaXN0ZW5lcnMiLCJpbmRl
eE9mTGlzdGVuZXIiLCIkZW1pdCIsInRhcmdldFNjb3BlIiwibGlzdGVuZXJBcmdzIiwiJCRhc3lu
Y1F1ZXVlIiwiJCRwb3N0RGlnZXN0UXVldWUiLCIkJGFwcGx5QXN5bmNRdWV1ZSIsInNhbml0aXpl
VXJpIiwidXJpIiwiaXNJbWFnZSIsInJlZ2V4Iiwibm9ybWFsaXplZFZhbCIsImFkanVzdE1hdGNo
ZXIiLCJtYXRjaGVyIiwiJHNjZU1pbkVyciIsImVzY2FwZUZvclJlZ2V4cCIsImFkanVzdE1hdGNo
ZXJzIiwibWF0Y2hlcnMiLCJhZGp1c3RlZE1hdGNoZXJzIiwiU0NFX0NPTlRFWFRTIiwicmVzb3Vy
Y2VVcmxXaGl0ZWxpc3QiLCJyZXNvdXJjZVVybEJsYWNrbGlzdCIsInRoaXMucmVzb3VyY2VVcmxX
aGl0ZWxpc3QiLCJ0aGlzLnJlc291cmNlVXJsQmxhY2tsaXN0IiwibWF0Y2hVcmwiLCJnZW5lcmF0
ZUhvbGRlclR5cGUiLCJCYXNlIiwiaG9sZGVyVHlwZSIsInRydXN0ZWRWYWx1ZSIsIiQkdW53cmFw
VHJ1c3RlZFZhbHVlIiwidGhpcy4kJHVud3JhcFRydXN0ZWRWYWx1ZSIsImhvbGRlclR5cGUucHJv
dG90eXBlLnZhbHVlT2YiLCJob2xkZXJUeXBlLnByb3RvdHlwZS50b1N0cmluZyIsImh0bWxTYW5p
dGl6ZXIiLCJ0cnVzdGVkVmFsdWVIb2xkZXJCYXNlIiwiYnlUeXBlIiwiQ1NTIiwiVVJMIiwiSlMi
LCJ0cnVzdEFzIiwiQ29uc3RydWN0b3IiLCJtYXliZVRydXN0ZWQiLCJhbGxvd2VkIiwidGhpcy5l
bmFibGVkIiwic2NlIiwiaXNFbmFibGVkIiwic2NlLmlzRW5hYmxlZCIsInNjZS5nZXRUcnVzdGVk
IiwicGFyc2VBcyIsInNjZS5wYXJzZUFzIiwiZW51bVZhbHVlIiwibE5hbWUiLCJldmVudFN1cHBv
cnQiLCJhbmRyb2lkIiwidXNlckFnZW50IiwibmF2aWdhdG9yIiwiYm94ZWUiLCJ2ZW5kb3JQcmVm
aXgiLCJ2ZW5kb3JSZWdleCIsImJvZHlTdHlsZSIsInRyYW5zaXRpb25zIiwiYW5pbWF0aW9ucyIs
IndlYmtpdFRyYW5zaXRpb24iLCJ3ZWJraXRBbmltYXRpb24iLCJwdXNoU3RhdGUiLCJoYXNFdmVu
dCIsImRpdkVsbSIsImhhbmRsZVJlcXVlc3RGbiIsInRwbCIsImlnbm9yZVJlcXVlc3RFcnJvciIs
InRvdGFsUGVuZGluZ1JlcXVlc3RzIiwiZ2V0VHJ1c3RlZFJlc291cmNlVXJsIiwidHJhbnNmb3Jt
ZXIiLCJodHRwT3B0aW9ucyIsImhhbmRsZUVycm9yIiwidGVzdGFiaWxpdHkiLCJ0ZXN0YWJpbGl0
eS5maW5kQmluZGluZ3MiLCJvcHRfZXhhY3RNYXRjaCIsImdldEVsZW1lbnRzQnlDbGFzc05hbWUi
LCJtYXRjaGVzIiwiZGF0YUJpbmRpbmciLCJiaW5kaW5nTmFtZSIsInRlc3RhYmlsaXR5LmZpbmRN
b2RlbHMiLCJwcmVmaXhlcyIsImF0dHJpYnV0ZUVxdWFscyIsInRlc3RhYmlsaXR5LmdldExvY2F0
aW9uIiwidGVzdGFiaWxpdHkuc2V0TG9jYXRpb24iLCJ0ZXN0YWJpbGl0eS53aGVuU3RhYmxlIiwi
ZGVmZXJyZWRzIiwiJCR0aW1lb3V0SWQiLCJ0aW1lb3V0LmNhbmNlbCIsInVybFBhcnNpbmdOb2Rl
IiwicmVxdWVzdFVybCIsIm9yaWdpblVybCIsIiQkQ29va2llUmVhZGVyIiwic2FmZURlY29kZVVS
SUNvbXBvbmVudCIsImxhc3RDb29raWVzIiwibGFzdENvb2tpZVN0cmluZyIsImNvb2tpZUFycmF5
IiwiY29va2llIiwiY3VycmVudENvb2tpZVN0cmluZyIsImZpbHRlcnMiLCJzdWZmaXgiLCJjdXJy
ZW5jeUZpbHRlciIsImRhdGVGaWx0ZXIiLCJmaWx0ZXJGaWx0ZXIiLCJqc29uRmlsdGVyIiwibGlt
aXRUb0ZpbHRlciIsImxvd2VyY2FzZUZpbHRlciIsIm51bWJlckZpbHRlciIsIm9yZGVyQnlGaWx0
ZXIiLCJ1cHBlcmNhc2VGaWx0ZXIiLCJjb21wYXJhdG9yIiwibWF0Y2hBZ2FpbnN0QW55UHJvcCIs
ImdldFR5cGVGb3JGaWx0ZXIiLCJleHByZXNzaW9uVHlwZSIsInByZWRpY2F0ZUZuIiwiY3JlYXRl
UHJlZGljYXRlRm4iLCJzaG91bGRNYXRjaFByaW1pdGl2ZXMiLCJhY3R1YWwiLCJleHBlY3RlZCIs
Iml0ZW0iLCJkZWVwQ29tcGFyZSIsImRvbnRNYXRjaFdob2xlT2JqZWN0IiwiYWN0dWFsVHlwZSIs
ImV4cGVjdGVkVHlwZSIsImV4cGVjdGVkVmFsIiwibWF0Y2hBbnlQcm9wZXJ0eSIsImFjdHVhbFZh
bCIsIiRsb2NhbGUiLCJmb3JtYXRzIiwiYW1vdW50IiwiY3VycmVuY3lTeW1ib2wiLCJmcmFjdGlv
blNpemUiLCJmb3JtYXROdW1iZXIiLCJudW1iZXIiLCJncm91cFNlcCIsImRlY2ltYWxTZXAiLCJp
c05lZ2F0aXZlIiwiYWJzIiwiaXNJbmZpbml0eSIsIkluZmluaXR5IiwiaXNGaW5pdGUiLCJudW1T
dHIiLCJmb3JtYXRlZFRleHQiLCJoYXNFeHBvbmVudCIsInRvRml4ZWQiLCJwYXJzZUZsb2F0Iiwi
ZnJhY3Rpb25MZW4iLCJtaW4iLCJyb3VuZCIsImZyYWN0aW9uIiwibGdyb3VwIiwiZ3JvdXAiLCJw
YWROdW1iZXIiLCJkaWdpdHMiLCJuZWciLCJkYXRlR2V0dGVyIiwiZGF0ZVN0ckdldHRlciIsInNo
b3J0Rm9ybSIsImdldEZpcnN0VGh1cnNkYXlPZlllYXIiLCJ5ZWFyIiwiZGF5T2ZXZWVrT25GaXJz
dCIsImdldERheSIsIndlZWtHZXR0ZXIiLCJmaXJzdFRodXJzIiwiZ2V0RnVsbFllYXIiLCJ0aGlz
VGh1cnMiLCJnZXRNb250aCIsImdldERhdGUiLCJlcmFHZXR0ZXIiLCJqc29uU3RyaW5nVG9EYXRl
Iiwic3RyaW5nIiwiUl9JU084NjAxX1NUUiIsInR6SG91ciIsInR6TWluIiwiZGF0ZVNldHRlciIs
InNldFVUQ0Z1bGxZZWFyIiwic2V0RnVsbFllYXIiLCJ0aW1lU2V0dGVyIiwic2V0VVRDSG91cnMi
LCJzZXRIb3VycyIsIm0iLCJzIiwibXMiLCJmb3JtYXQiLCJOVU1CRVJfU1RSSU5HIiwiREFURV9G
T1JNQVRTX1NQTElUIiwiZGF0ZVRpbWV6b25lT2Zmc2V0IiwiREFURV9GT1JNQVRTIiwic3BhY2lu
ZyIsImxpbWl0IiwicHJvY2Vzc1ByZWRpY2F0ZXMiLCJzb3J0UHJlZGljYXRlIiwicmV2ZXJzZU9y
ZGVyIiwibWFwIiwicHJlZGljYXRlIiwiZGVzY2VuZGluZyIsInByZWRpY2F0ZXMiLCJjb21wYXJl
VmFsdWVzIiwiZ2V0Q29tcGFyaXNvbk9iamVjdCIsInByZWRpY2F0ZVZhbHVlcyIsImRvQ29tcGFy
aXNvbiIsInYxIiwidjIiLCJuZ0RpcmVjdGl2ZSIsIkZvcm1Db250cm9sbGVyIiwiY29udHJvbHMi
LCJwYXJlbnRGb3JtIiwiJCRwYXJlbnRGb3JtIiwibnVsbEZvcm1DdHJsIiwiJGVycm9yIiwiJCRz
dWNjZXNzIiwiJHBlbmRpbmciLCIkbmFtZSIsIiRkaXJ0eSIsIiRwcmlzdGluZSIsIiR2YWxpZCIs
IiRpbnZhbGlkIiwiJHN1Ym1pdHRlZCIsIiRhZGRDb250cm9sIiwiJHJvbGxiYWNrVmlld1ZhbHVl
IiwiZm9ybS4kcm9sbGJhY2tWaWV3VmFsdWUiLCJjb250cm9sIiwiJGNvbW1pdFZpZXdWYWx1ZSIs
ImZvcm0uJGNvbW1pdFZpZXdWYWx1ZSIsImZvcm0uJGFkZENvbnRyb2wiLCIkJHJlbmFtZUNvbnRy
b2wiLCJmb3JtLiQkcmVuYW1lQ29udHJvbCIsIm5ld05hbWUiLCJvbGROYW1lIiwiJHJlbW92ZUNv
bnRyb2wiLCJmb3JtLiRyZW1vdmVDb250cm9sIiwiJHNldFZhbGlkaXR5IiwiYWRkU2V0VmFsaWRp
dHlNZXRob2QiLCJjdHJsIiwic2V0IiwidW5zZXQiLCIkc2V0RGlydHkiLCJmb3JtLiRzZXREaXJ0
eSIsIlBSSVNUSU5FX0NMQVNTIiwiRElSVFlfQ0xBU1MiLCIkc2V0UHJpc3RpbmUiLCJmb3JtLiRz
ZXRQcmlzdGluZSIsInNldENsYXNzIiwiU1VCTUlUVEVEX0NMQVNTIiwiJHNldFVudG91Y2hlZCIs
ImZvcm0uJHNldFVudG91Y2hlZCIsIiRzZXRTdWJtaXR0ZWQiLCJmb3JtLiRzZXRTdWJtaXR0ZWQi
LCJzdHJpbmdCYXNlZElucHV0VHlwZSIsIiRmb3JtYXR0ZXJzIiwiJGlzRW1wdHkiLCJiYXNlSW5w
dXRUeXBlIiwiY29tcG9zaW5nIiwiZXYiLCJuZ1RyaW0iLCIkdmlld1ZhbHVlIiwiJCRoYXNOYXRp
dmVWYWxpZGF0b3JzIiwiJHNldFZpZXdWYWx1ZSIsImRlZmVyTGlzdGVuZXIiLCJvcmlnVmFsdWUi
LCJrZXlDb2RlIiwiJHJlbmRlciIsImN0cmwuJHJlbmRlciIsImNyZWF0ZURhdGVQYXJzZXIiLCJt
YXBwaW5nIiwiaXNvIiwiSVNPX0RBVEVfUkVHRVhQIiwieXl5eSIsIk1NIiwiZGQiLCJISCIsImdl
dEhvdXJzIiwibW0iLCJzcyIsImdldFNlY29uZHMiLCJzc3MiLCJnZXRNaWxsaXNlY29uZHMiLCJw
YXJ0IiwiTmFOIiwiY3JlYXRlRGF0ZUlucHV0VHlwZSIsInBhcnNlRGF0ZSIsImR5bmFtaWNEYXRl
SW5wdXRUeXBlIiwiaXNWYWxpZERhdGUiLCJwYXJzZU9ic2VydmVkRGF0ZVZhbHVlIiwiYmFkSW5w
dXRDaGVja2VyIiwiJG9wdGlvbnMiLCJwcmV2aW91c0RhdGUiLCIkJHBhcnNlck5hbWUiLCIkcGFy
c2VycyIsInBhcnNlZERhdGUiLCIkbmdNb2RlbE1pbkVyciIsIm5nTWluIiwibWluVmFsIiwiJHZh
bGlkYXRvcnMiLCJjdHJsLiR2YWxpZGF0b3JzLm1pbiIsIiR2YWxpZGF0ZSIsIm5nTWF4IiwibWF4
VmFsIiwiY3RybC4kdmFsaWRhdG9ycy5tYXgiLCJ2YWxpZGl0eSIsIlZBTElESVRZX1NUQVRFX1BS
T1BFUlRZIiwiYmFkSW5wdXQiLCJ0eXBlTWlzbWF0Y2giLCJwYXJzZUNvbnN0YW50RXhwciIsInBh
cnNlRm4iLCJjbGFzc0RpcmVjdGl2ZSIsImFycmF5RGlmZmVyZW5jZSIsImFycmF5Q2xhc3NlcyIs
ImRpZ2VzdENsYXNzQ291bnRzIiwiY2xhc3NDb3VudHMiLCJjbGFzc2VzVG9VcGRhdGUiLCJuZ0Ns
YXNzV2F0Y2hBY3Rpb24iLCIkaW5kZXgiLCJvbGQkaW5kZXgiLCJtb2QiLCJjYWNoZWRUb2dnbGVD
bGFzcyIsInN3aXRjaFZhbHVlIiwiY2xhc3NDYWNoZSIsInRvZ2dsZVZhbGlkYXRpb25Dc3MiLCJ2
YWxpZGF0aW9uRXJyb3JLZXkiLCJpc1ZhbGlkIiwiVkFMSURfQ0xBU1MiLCJJTlZBTElEX0NMQVNT
Iiwic2V0VmFsaWRpdHkiLCJpc09iamVjdEVtcHR5IiwiUEVORElOR19DTEFTUyIsImNvbWJpbmVk
U3RhdGUiLCJSRUdFWF9TVFJJTkdfUkVHRVhQIiwiZG9jdW1lbnRNb2RlIiwiaXNBY3RpdmVfIiwi
YWN0aXZlIiwiRnVuY3Rpb24iLCJuYW1lXyIsImVsIiwiZnVsbCIsIm1ham9yIiwibWlub3IiLCJk
b3QiLCJjb2RlTmFtZSIsIkpRTGl0ZS5fZGF0YSIsIk1PVVNFX0VWRU5UX01BUCIsIm1vdXNlbGVh
dmUiLCJtb3VzZWVudGVyIiwib3B0Z3JvdXAiLCJ0Ym9keSIsInRmb290IiwiY29sZ3JvdXAiLCJj
YXB0aW9uIiwidGhlYWQiLCJ0aCIsInRkIiwicmVhZHkiLCJ0cmlnZ2VyIiwiZmlyZWQiLCJyZW1v
dmVEYXRhIiwianFMaXRlSGFzRGF0YSIsInJlbW92ZUF0dHJpYnV0ZSIsImNzcyIsIk5PREVfVFlQ
RV9BVFRSSUJVVEUiLCJsb3dlcmNhc2VkTmFtZSIsInNwZWNpZmllZCIsImdldE5hbWVkSXRlbSIs
InJldCIsImdldFRleHQiLCIkZHYiLCJtdWx0aXBsZSIsInNlbGVjdGVkIiwibm9kZUNvdW50Iiwi
anFMaXRlT24iLCJ0eXBlcyIsInJlbGF0ZWQiLCJyZWxhdGVkVGFyZ2V0IiwiY29udGFpbnMiLCJv
bmUiLCJvbkZuIiwicmVwbGFjZU5vZGUiLCJpbnNlcnRCZWZvcmUiLCJjb250ZW50RG9jdW1lbnQi
LCJwcmVwZW5kIiwid3JhcE5vZGUiLCJkZXRhY2giLCJhZnRlciIsIm5ld0VsZW1lbnQiLCJ0b2dn
bGVDbGFzcyIsImNvbmRpdGlvbiIsImNsYXNzQ29uZGl0aW9uIiwibmV4dEVsZW1lbnRTaWJsaW5n
IiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJleHRyYVBhcmFtZXRlcnMiLCJkdW1teUV2ZW50Iiwi
aGFuZGxlckFyZ3MiLCJldmVudEZuc0NvcHkiLCJhcmczIiwidW5iaW5kIiwiRk5fQVJHX1NQTElU
IiwiRk5fQVJHIiwiYXJnRGVjbCIsInVuZGVyc2NvcmUiLCIkYW5pbWF0ZU1pbkVyciIsIkFuaW1h
dGVSdW5uZXIiLCJlbmQiLCJyZXN1bWUiLCJwYXVzZSIsImNvbXBsZXRlIiwicGFzcyIsImZhaWwi
LCJwb3N0RGlnZXN0RWxlbWVudHMiLCJhZGRSZW1vdmVDbGFzc2VzUG9zdERpZ2VzdCIsImFkZCIs
ImV4aXN0aW5nIiwicGluIiwiZG9tT3BlcmF0aW9uIiwiZnJvbSIsInRvIiwiJCRyZWdpc3RlcmVk
QW5pbWF0aW9ucyIsImNsYXNzTmFtZUZpbHRlciIsInRoaXMuY2xhc3NOYW1lRmlsdGVyIiwiJCRj
bGFzc05hbWVGaWx0ZXIiLCJyZXNlcnZlZFJlZ2V4IiwiTkdfQU5JTUFURV9DTEFTU05BTUUiLCJk
b21JbnNlcnQiLCJwYXJlbnRFbGVtZW50IiwiYWZ0ZXJFbGVtZW50IiwiYWZ0ZXJOb2RlIiwiRUxF
TUVOVF9OT0RFIiwicHJldmlvdXNFbGVtZW50U2libGluZyIsInJ1bm5lciIsImVudGVyIiwibW92
ZSIsImxlYXZlIiwiYWRkY2xhc3MiLCJhbmltYXRlIiwidGVtcENsYXNzZXMiLCJBUFBMSUNBVElP
Tl9KU09OIiwiJGludGVycG9sYXRlTWluRXJyLnRocm93Tm9jb25jYXQiLCIkaW50ZXJwb2xhdGVN
aW5FcnIuaW50ZXJyIiwiUEFUSF9NQVRDSCIsImxvY2F0aW9uUHJvdG90eXBlIiwicGFyYW1WYWx1
ZSIsIkxvY2F0aW9uIiwiTG9jYXRpb24ucHJvdG90eXBlLnN0YXRlIiwiT1BFUkFUT1JTIiwiRVND
QVBFIiwibGV4IiwidG9rZW5zIiwicmVhZFN0cmluZyIsInBlZWsiLCJyZWFkTnVtYmVyIiwiaXNJ
ZGVudCIsInJlYWRJZGVudCIsImlzIiwiaXNXaGl0ZXNwYWNlIiwiY2gyIiwiY2gzIiwib3AyIiwi
b3AzIiwib3AxIiwidGhyb3dFcnJvciIsImNoYXJzIiwiaXNFeHBPcGVyYXRvciIsInN0YXJ0Iiwi
Y29sU3RyIiwicGVla0NoIiwicXVvdGUiLCJyYXdTdHJpbmciLCJoZXgiLCJTdHJpbmciLCJmcm9t
Q2hhckNvZGUiLCJyZXAiLCJFeHByZXNzaW9uU3RhdGVtZW50IiwiUHJvcGVydHkiLCJwcm9ncmFt
IiwiZXhwcmVzc2lvblN0YXRlbWVudCIsImV4cGVjdCIsImZpbHRlckNoYWluIiwiYXNzaWdubWVu
dCIsInRlcm5hcnkiLCJsb2dpY2FsT1IiLCJjb25zdW1lIiwibG9naWNhbEFORCIsImVxdWFsaXR5
IiwicmVsYXRpb25hbCIsImFkZGl0aXZlIiwibXVsdGlwbGljYXRpdmUiLCJ1bmFyeSIsInByaW1h
cnkiLCJhcnJheURlY2xhcmF0aW9uIiwiY29uc3RhbnRzIiwicGFyc2VBcmd1bWVudHMiLCJiYXNl
RXhwcmVzc2lvbiIsInBlZWtUb2tlbiIsImtpbmQiLCJlMSIsImUyIiwiZTMiLCJlNCIsInBlZWtB
aGVhZCIsInQiLCJuZXh0SWQiLCJ2YXJzIiwib3duIiwiYXNzaWduYWJsZSIsInN0YWdlIiwiY29t
cHV0aW5nIiwicmVjdXJzZSIsImdlbmVyYXRlRnVuY3Rpb24iLCJmbktleSIsImludG9JZCIsInJl
dHVybl8iLCJ3YXRjaElkIiwiZm5TdHJpbmciLCJVU0UiLCJTVFJJQ1QiLCJmaWx0ZXJQcmVmaXgi
LCJ3YXRjaEZucyIsInZhcnNQcmVmaXgiLCJzZWN0aW9uIiwibmFtZUlkIiwicmVjdXJzaW9uRm4i
LCJza2lwV2F0Y2hJZENoZWNrIiwiaWZfIiwibGF6eUFzc2lnbiIsImNvbXB1dGVkTWVtYmVyIiwi
bGF6eVJlY3Vyc2UiLCJwbHVzIiwibm90IiwiZ2V0SGFzT3duUHJvcGVydHkiLCJub25Db21wdXRl
ZE1lbWJlciIsImFkZEVuc3VyZVNhZmVPYmplY3QiLCJub3ROdWxsIiwiYWRkRW5zdXJlU2FmZU1l
bWJlck5hbWUiLCJhZGRFbnN1cmVTYWZlRnVuY3Rpb24iLCJtZW1iZXIiLCJmaWx0ZXJOYW1lIiwi
ZGVmYXVsdFZhbHVlIiwic3RyaW5nRXNjYXBlUmVnZXgiLCJzdHJpbmdFc2NhcGVGbiIsImMiLCJj
aGFyQ29kZUF0Iiwic2tpcCIsImluaXQiLCJmbi5hc3NpZ24iLCJyaHMiLCJsaHMiLCJ1bmFyeSsi
LCJ1bmFyeS0iLCJ1bmFyeSEiLCJiaW5hcnkrIiwiYmluYXJ5LSIsImJpbmFyeSoiLCJiaW5hcnkv
IiwiYmluYXJ5JSIsImJpbmFyeT09PSIsImJpbmFyeSE9PSIsImJpbmFyeT09IiwiYmluYXJ5IT0i
LCJiaW5hcnk8IiwiYmluYXJ5PiIsImJpbmFyeTw9IiwiYmluYXJ5Pj0iLCJiaW5hcnkmJiIsImJp
bmFyeXx8IiwidGVybmFyeT86IiwiYXN0Q29tcGlsZXIiLCJ5eSIsInkiLCJNTU1NIiwiTU1NIiwi
TSIsIkgiLCJoaCIsIkVFRUUiLCJFRUUiLCJhbXBtR2V0dGVyIiwiWiIsInRpbWVab25lR2V0dGVy
Iiwiem9uZSIsInBhZGRlZFpvbmUiLCJ3dyIsInciLCJHIiwiR0ciLCJHR0ciLCJHR0dHIiwibG9u
Z0VyYUdldHRlciIsInhsaW5rSHJlZiIsInByb3BOYW1lIiwiZGVmYXVsdExpbmtGbiIsIm5vcm1h
bGl6ZWQiLCJuZ0Jvb2xlYW5BdHRyV2F0Y2hBY3Rpb24iLCJodG1sQXR0ciIsIm5nQXR0ckFsaWFz
V2F0Y2hBY3Rpb24iLCJudWxsRm9ybVJlbmFtZUNvbnRyb2wiLCJmb3JtRGlyZWN0aXZlRmFjdG9y
eSIsImlzTmdGb3JtIiwibmdGb3JtQ29tcGlsZSIsImZvcm1FbGVtZW50IiwibmFtZUF0dHIiLCJu
Z0Zvcm1QcmVMaW5rIiwiaGFuZGxlRm9ybVN1Ym1pc3Npb24iLCJwYXJlbnRGb3JtQ3RybCIsIlVS
TF9SRUdFWFAiLCJFTUFJTF9SRUdFWFAiLCJOVU1CRVJfUkVHRVhQIiwiREFURV9SRUdFWFAiLCJE
QVRFVElNRUxPQ0FMX1JFR0VYUCIsIldFRUtfUkVHRVhQIiwiTU9OVEhfUkVHRVhQIiwiVElNRV9S
RUdFWFAiLCJpbnB1dFR5cGUiLCJ0ZXh0SW5wdXRUeXBlIiwid2Vla1BhcnNlciIsImlzb1dlZWsi
LCJleGlzdGluZ0RhdGUiLCJ3ZWVrIiwiaG91cnMiLCJzZWNvbmRzIiwibWlsbGlzZWNvbmRzIiwi
YWRkRGF5cyIsIm51bWJlcklucHV0VHlwZSIsInVybElucHV0VHlwZSIsImN0cmwuJHZhbGlkYXRv
cnMudXJsIiwibW9kZWxWYWx1ZSIsInZpZXdWYWx1ZSIsImVtYWlsSW5wdXRUeXBlIiwiZW1haWwi
LCJjdHJsLiR2YWxpZGF0b3JzLmVtYWlsIiwicmFkaW9JbnB1dFR5cGUiLCJjaGVja2VkIiwiY2hl
Y2tib3hJbnB1dFR5cGUiLCJ0cnVlVmFsdWUiLCJuZ1RydWVWYWx1ZSIsImZhbHNlVmFsdWUiLCJu
Z0ZhbHNlVmFsdWUiLCJjdHJsLiRpc0VtcHR5IiwiY3RybHMiLCJDT05TVEFOVF9WQUxVRV9SRUdF
WFAiLCJ0cGxBdHRyIiwibmdWYWx1ZUNvbnN0YW50TGluayIsIm5nVmFsdWVMaW5rIiwidmFsdWVX
YXRjaEFjdGlvbiIsIiRjb21waWxlIiwibmdCaW5kQ29tcGlsZSIsInRlbXBsYXRlRWxlbWVudCIs
Im5nQmluZExpbmsiLCJuZ0JpbmRXYXRjaEFjdGlvbiIsIm5nQmluZFRlbXBsYXRlQ29tcGlsZSIs
Im5nQmluZFRlbXBsYXRlTGluayIsIm5nQmluZEh0bWxDb21waWxlIiwidEVsZW1lbnQiLCJuZ0Jp
bmRIdG1sR2V0dGVyIiwibmdCaW5kSHRtbFdhdGNoIiwiZ2V0U3RyaW5nVmFsdWUiLCJuZ0JpbmRI
dG1sTGluayIsIm5nQmluZEh0bWxXYXRjaEFjdGlvbiIsImdldFRydXN0ZWRIdG1sIiwiJHZpZXdD
aGFuZ2VMaXN0ZW5lcnMiLCJmb3JjZUFzeW5jRXZlbnRzIiwibmdFdmVudEhhbmRsZXIiLCJwcmV2
aW91c0VsZW1lbnRzIiwibmdJZldhdGNoQWN0aW9uIiwic3JjRXhwIiwib25sb2FkRXhwIiwiYXV0
b1Njcm9sbEV4cCIsImF1dG9zY3JvbGwiLCJjaGFuZ2VDb3VudGVyIiwicHJldmlvdXNFbGVtZW50
IiwiY3VycmVudEVsZW1lbnQiLCJjbGVhbnVwTGFzdEluY2x1ZGVDb250ZW50IiwibmdJbmNsdWRl
V2F0Y2hBY3Rpb24iLCJhZnRlckFuaW1hdGlvbiIsInRoaXNDaGFuZ2VJZCIsIm5hbWVzcGFjZUFk
YXB0ZWRDbG9uZSIsInRyaW1WYWx1ZXMiLCJOZ01vZGVsQ29udHJvbGxlciIsIiRtb2RlbFZhbHVl
IiwiJCRyYXdNb2RlbFZhbHVlIiwiJGFzeW5jVmFsaWRhdG9ycyIsIiR1bnRvdWNoZWQiLCIkdG91
Y2hlZCIsInBhcnNlZE5nTW9kZWwiLCJwYXJzZWROZ01vZGVsQXNzaWduIiwibmdNb2RlbEdldCIs
Im5nTW9kZWxTZXQiLCJwZW5kaW5nRGVib3VuY2UiLCJwYXJzZXJWYWxpZCIsIiQkc2V0T3B0aW9u
cyIsInRoaXMuJCRzZXRPcHRpb25zIiwiZ2V0dGVyU2V0dGVyIiwiaW52b2tlTW9kZWxHZXR0ZXIi
LCJpbnZva2VNb2RlbFNldHRlciIsIiQkJHAiLCJ0aGlzLiRpc0VtcHR5IiwiY3VycmVudFZhbGlk
YXRpb25SdW5JZCIsInRoaXMuJHNldFByaXN0aW5lIiwidGhpcy4kc2V0RGlydHkiLCJ0aGlzLiRz
ZXRVbnRvdWNoZWQiLCJVTlRPVUNIRURfQ0xBU1MiLCJUT1VDSEVEX0NMQVNTIiwiJHNldFRvdWNo
ZWQiLCJ0aGlzLiRzZXRUb3VjaGVkIiwidGhpcy4kcm9sbGJhY2tWaWV3VmFsdWUiLCIkJGxhc3RD
b21taXR0ZWRWaWV3VmFsdWUiLCJ0aGlzLiR2YWxpZGF0ZSIsInByZXZWYWxpZCIsInByZXZNb2Rl
bFZhbHVlIiwiYWxsb3dJbnZhbGlkIiwiJCRydW5WYWxpZGF0b3JzIiwiYWxsVmFsaWQiLCIkJHdy
aXRlTW9kZWxUb1Njb3BlIiwidGhpcy4kJHJ1blZhbGlkYXRvcnMiLCJkb25lQ2FsbGJhY2siLCJw
cm9jZXNzU3luY1ZhbGlkYXRvcnMiLCJzeW5jVmFsaWRhdG9yc1ZhbGlkIiwidmFsaWRhdG9yIiwi
cHJvY2Vzc0FzeW5jVmFsaWRhdG9ycyIsInZhbGlkYXRvclByb21pc2VzIiwidmFsaWRhdGlvbkRv
bmUiLCJsb2NhbFZhbGlkYXRpb25SdW5JZCIsInByb2Nlc3NQYXJzZUVycm9ycyIsImVycm9yS2V5
IiwidGhpcy4kY29tbWl0Vmlld1ZhbHVlIiwiJCRwYXJzZUFuZFZhbGlkYXRlIiwidGhpcy4kJHBh
cnNlQW5kVmFsaWRhdGUiLCJ0aGlzLiQkd3JpdGVNb2RlbFRvU2NvcGUiLCJ0aGlzLiRzZXRWaWV3
VmFsdWUiLCJ1cGRhdGVPbkRlZmF1bHQiLCIkJGRlYm91bmNlVmlld1ZhbHVlQ29tbWl0IiwidGhp
cy4kJGRlYm91bmNlVmlld1ZhbHVlQ29tbWl0IiwiZGVib3VuY2VEZWxheSIsImRlYm91bmNlIiwi
bmdNb2RlbFdhdGNoIiwiZm9ybWF0dGVycyIsIm5nTW9kZWxDb21waWxlIiwibmdNb2RlbFByZUxp
bmsiLCJtb2RlbEN0cmwiLCJmb3JtQ3RybCIsIm5nTW9kZWxQb3N0TGluayIsInVwZGF0ZU9uIiwi
REVGQVVMVF9SRUdFWFAiLCJ0aGF0IiwibmdPcHRpb25zTWluRXJyIiwiTkdfT1BUSU9OU19SRUdF
WFAiLCJwYXJzZU9wdGlvbnNFeHByZXNzaW9uIiwib3B0aW9uc0V4cCIsInNlbGVjdEVsZW1lbnQi
LCJPcHRpb24iLCJzZWxlY3RWYWx1ZSIsImxhYmVsIiwiZGlzYWJsZWQiLCJnZXRPcHRpb25WYWx1
ZXNLZXlzIiwib3B0aW9uVmFsdWVzIiwib3B0aW9uVmFsdWVzS2V5cyIsImtleU5hbWUiLCJpdGVt
S2V5IiwidmFsdWVOYW1lIiwic2VsZWN0QXMiLCJ0cmFja0J5Iiwidmlld1ZhbHVlRm4iLCJ0cmFj
a0J5Rm4iLCJnZXRUcmFja0J5VmFsdWVGbiIsImdldEhhc2hPZlZhbHVlIiwiZ2V0VHJhY2tCeVZh
bHVlIiwiZ2V0TG9jYWxzIiwiZGlzcGxheUZuIiwiZ3JvdXBCeUZuIiwiZGlzYWJsZVdoZW5GbiIs
InZhbHVlc0ZuIiwiZ2V0V2F0Y2hhYmxlcyIsIndhdGNoZWRBcnJheSIsIm9wdGlvblZhbHVlc0xl
bmd0aCIsImRpc2FibGVXaGVuIiwiZ2V0T3B0aW9ucyIsIm9wdGlvbkl0ZW1zIiwic2VsZWN0VmFs
dWVNYXAiLCJvcHRpb25JdGVtIiwiZ2V0T3B0aW9uRnJvbVZpZXdWYWx1ZSIsImdldFZpZXdWYWx1
ZUZyb21PcHRpb24iLCJvcHRpb25UZW1wbGF0ZSIsIm9wdEdyb3VwVGVtcGxhdGUiLCJ1cGRhdGVP
cHRpb25FbGVtZW50IiwiYWRkT3JSZXVzZUVsZW1lbnQiLCJyZW1vdmVFeGNlc3NFbGVtZW50cyIs
InNraXBFbXB0eUFuZFVua25vd25PcHRpb25zIiwiZW1wdHlPcHRpb25fIiwiZW1wdHlPcHRpb24i
LCJ1bmtub3duT3B0aW9uXyIsInVua25vd25PcHRpb24iLCJ1cGRhdGVPcHRpb25zIiwicHJldmlv
dXNWYWx1ZSIsInNlbGVjdEN0cmwiLCJyZWFkVmFsdWUiLCJncm91cE1hcCIsInByb3ZpZGVkRW1w
dHlPcHRpb24iLCJ1cGRhdGVPcHRpb24iLCJvcHRpb25FbGVtZW50IiwiZ3JvdXBFbGVtZW50Iiwi
Y3VycmVudE9wdGlvbkVsZW1lbnQiLCJuZ01vZGVsQ3RybCIsIm5leHRWYWx1ZSIsIm5nTW9kZWxD
dHJsLiRpc0VtcHR5Iiwid3JpdGVWYWx1ZSIsInNlbGVjdEN0cmwud3JpdGVWYWx1ZSIsInNlbGVj
dEN0cmwucmVhZFZhbHVlIiwic2VsZWN0ZWRWYWx1ZXMiLCJzZWxlY3Rpb25zIiwic2VsZWN0ZWRP
cHRpb24iLCJCUkFDRSIsIklTX1dIRU4iLCJ1cGRhdGVFbGVtZW50VGV4dCIsIm5ld1RleHQiLCJu
dW1iZXJFeHAiLCJ3aGVuRXhwIiwid2hlbnMiLCJ3aGVuc0V4cEZucyIsImJyYWNlUmVwbGFjZW1l
bnQiLCJ3YXRjaFJlbW92ZXIiLCJsYXN0Q291bnQiLCJhdHRyaWJ1dGVOYW1lIiwidG1wTWF0Y2gi
LCJ3aGVuS2V5IiwibmdQbHVyYWxpemVXYXRjaEFjdGlvbiIsImNvdW50SXNOYU4iLCJ3aGVuRXhw
Rm4iLCJuZ1JlcGVhdE1pbkVyciIsInVwZGF0ZVNjb3BlIiwidmFsdWVJZGVudGlmaWVyIiwia2V5
SWRlbnRpZmllciIsImFycmF5TGVuZ3RoIiwiJGZpcnN0IiwiJGxhc3QiLCIkbWlkZGxlIiwiJG9k
ZCIsIiRldmVuIiwibmdSZXBlYXRDb21waWxlIiwibmdSZXBlYXRFbmRDb21tZW50IiwiYWxpYXNB
cyIsInRyYWNrQnlFeHAiLCJ0cmFja0J5RXhwR2V0dGVyIiwidHJhY2tCeUlkRXhwRm4iLCJ0cmFj
a0J5SWRBcnJheUZuIiwidHJhY2tCeUlkT2JqRm4iLCJoYXNoRm5Mb2NhbHMiLCJuZ1JlcGVhdExp
bmsiLCJsYXN0QmxvY2tNYXAiLCJuZ1JlcGVhdEFjdGlvbiIsInByZXZpb3VzTm9kZSIsIm5leHRO
b2RlIiwibmV4dEJsb2NrTWFwIiwiY29sbGVjdGlvbkxlbmd0aCIsInRyYWNrQnlJZCIsImNvbGxl
Y3Rpb25LZXlzIiwibmV4dEJsb2NrT3JkZXIiLCJ0cmFja0J5SWRGbiIsImJsb2NrS2V5IiwibmdS
ZXBlYXRUcmFuc2NsdWRlIiwibmdTaG93V2F0Y2hBY3Rpb24iLCJOR19ISURFX0NMQVNTIiwiTkdf
SElERV9JTl9QUk9HUkVTU19DTEFTUyIsIm5nSGlkZVdhdGNoQWN0aW9uIiwibmdTdHlsZVdhdGNo
QWN0aW9uIiwibmV3U3R5bGVzIiwib2xkU3R5bGVzIiwibmdTd2l0Y2hDb250cm9sbGVyIiwiY2Fz
ZXMiLCJzZWxlY3RlZFRyYW5zY2x1ZGVzIiwic2VsZWN0ZWRFbGVtZW50cyIsInByZXZpb3VzTGVh
dmVBbmltYXRpb25zIiwic2VsZWN0ZWRTY29wZXMiLCJzcGxpY2VGYWN0b3J5IiwibmdTd2l0Y2hX
YXRjaEFjdGlvbiIsInNlbGVjdGVkVHJhbnNjbHVkZSIsImNhc2VFbGVtZW50Iiwic2VsZWN0ZWRT
Y29wZSIsImFuY2hvciIsIm5vb3BOZ01vZGVsQ29udHJvbGxlciIsIlNlbGVjdENvbnRyb2xsZXIi
LCJvcHRpb25zTWFwIiwicmVuZGVyVW5rbm93bk9wdGlvbiIsInNlbGYucmVuZGVyVW5rbm93bk9w
dGlvbiIsInVua25vd25WYWwiLCJyZW1vdmVVbmtub3duT3B0aW9uIiwic2VsZi5yZW1vdmVVbmtu
b3duT3B0aW9uIiwic2VsZi5yZWFkVmFsdWUiLCJzZWxmLndyaXRlVmFsdWUiLCJoYXNPcHRpb24i
LCJhZGRPcHRpb24iLCJzZWxmLmFkZE9wdGlvbiIsInJlbW92ZU9wdGlvbiIsInNlbGYucmVtb3Zl
T3B0aW9uIiwic2VsZi5oYXNPcHRpb24iLCJuZ01vZGVsQ3RybC4kcmVuZGVyIiwibGFzdFZpZXci
LCJsYXN0Vmlld1JlZiIsInNlbGVjdE11bHRpcGxlV2F0Y2giLCJjaHJvbWVIYWNrIiwic2VsZWN0
Q3RybE5hbWUiLCJpbnRlcnBvbGF0ZVdhdGNoQWN0aW9uIiwiY3RybC4kdmFsaWRhdG9ycy5yZXF1
aXJlZCIsInBhdHRlcm5FeHAiLCJjdHJsLiR2YWxpZGF0b3JzLnBhdHRlcm4iLCJpbnRWYWwiLCJj
dHJsLiR2YWxpZGF0b3JzLm1heGxlbmd0aCIsImN0cmwuJHZhbGlkYXRvcnMubWlubGVuZ3RoIiwi
JCRjc3AiLCJoZWFkIl0KK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ub2Rl
X21vZHVsZXMvYW5ndWxhci9ib3dlci5qc29uIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL25vZGVf
bW9kdWxlcy9hbmd1bGFyL2Jvd2VyLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjVkYmRlOTQ4YjhiMzYyYTgz
NjUwY2FiOWViZDdmZThjNGQ4YWRkMQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2Fu
Z3VsYXJqcy9ub2RlX21vZHVsZXMvYW5ndWxhci9ib3dlci5qc29uCkBAIC0wLDAgKzEsOCBAQAor
eworICAibmFtZSI6ICJhbmd1bGFyIiwKKyAgInZlcnNpb24iOiAiMS40LjMiLAorICAibWFpbiI6
ICIuL2FuZ3VsYXIuanMiLAorICAiaWdub3JlIjogW10sCisgICJkZXBlbmRlbmNpZXMiOiB7Cisg
IH0KK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ub2RlX21vZHVsZXMvYW5n
dWxhci9pbmRleC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ub2RlX21vZHVsZXMvYW5ndWxh
ci9pbmRleC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YzFhYWZjY2EyNTE2NDI2ZGY4Y2NmZjA1OTNlOGQ2NzU0
N2UzMWU1Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL25vZGVfbW9k
dWxlcy9hbmd1bGFyL2luZGV4LmpzCkBAIC0wLDAgKzEsMiBAQAorcmVxdWlyZSgnLi9hbmd1bGFy
Jyk7Cittb2R1bGUuZXhwb3J0cyA9IGFuZ3VsYXI7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9h
bmd1bGFyanMvbm9kZV9tb2R1bGVzL2FuZ3VsYXIvcGFja2FnZS5qc29uIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
YW5ndWxhcmpzL25vZGVfbW9kdWxlcy9hbmd1bGFyL3BhY2thZ2UuanNvbgpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
NGQ3ODMzNzA2MjFlNGY1NTYzNTRlNjY4Y2UxYjgzZDk5NWQ2YTk4Ci0tLSAvZGV2L251bGwKKysr
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL25vZGVfbW9kdWxlcy9hbmd1bGFyL3BhY2thZ2UuanNv
bgpAQCAtMCwwICsxLDk1IEBACit7CisgICJfYXJncyI6IFsKKyAgICBbCisgICAgICB7CisgICAg
ICAgICJyYXciOiAiYW5ndWxhckAxLjQuMyIsCisgICAgICAgICJzY29wZSI6IG51bGwsCisgICAg
ICAgICJlc2NhcGVkTmFtZSI6ICJhbmd1bGFyIiwKKyAgICAgICAgIm5hbWUiOiAiYW5ndWxhciIs
CisgICAgICAgICJyYXdTcGVjIjogIjEuNC4zIiwKKyAgICAgICAgInNwZWMiOiAiMS40LjMiLAor
ICAgICAgICAidHlwZSI6ICJ2ZXJzaW9uIgorICAgICAgfSwKKyAgICAgICIvVXNlcnMvYWRkeW8v
cHJvamVjdHMvc3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2FuZ3VsYXJqcyIKKyAgICBdCisgIF0sCisgICJfZnJvbSI6ICJhbmd1bGFyQDEuNC4zIiwK
KyAgIl9pZCI6ICJhbmd1bGFyQDEuNC4zIiwKKyAgIl9pbkNhY2hlIjogdHJ1ZSwKKyAgIl9sb2Nh
dGlvbiI6ICIvYW5ndWxhciIsCisgICJfbm9kZVZlcnNpb24iOiAiMC4xMC4yNiIsCisgICJfbnBt
VXNlciI6IHsKKyAgICAibmFtZSI6ICJhbmd1bGFyY29yZSIsCisgICAgImVtYWlsIjogImFuZ3Vs
YXItY29yZStucG1AZ29vZ2xlLmNvbSIKKyAgfSwKKyAgIl9ucG1WZXJzaW9uIjogIjIuMC4yIiwK
KyAgIl9waGFudG9tQ2hpbGRyZW4iOiB7fSwKKyAgIl9yZXF1ZXN0ZWQiOiB7CisgICAgInJhdyI6
ICJhbmd1bGFyQDEuNC4zIiwKKyAgICAic2NvcGUiOiBudWxsLAorICAgICJlc2NhcGVkTmFtZSI6
ICJhbmd1bGFyIiwKKyAgICAibmFtZSI6ICJhbmd1bGFyIiwKKyAgICAicmF3U3BlYyI6ICIxLjQu
MyIsCisgICAgInNwZWMiOiAiMS40LjMiLAorICAgICJ0eXBlIjogInZlcnNpb24iCisgIH0sCisg
ICJfcmVxdWlyZWRCeSI6IFsKKyAgICAiI1VTRVIiLAorICAgICIvIgorICBdLAorICAiX3Jlc29s
dmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2FuZ3VsYXIvLS9hbmd1bGFyLTEuNC4z
LnRneiIsCisgICJfc2hhc3VtIjogIjNhZjcyMzQ2MTc4OWJkMGI5ZmFkOWQ5NmRhMjU3NjlmMjA3
ZGMxZTIiLAorICAiX3Nocmlua3dyYXAiOiBudWxsLAorICAiX3NwZWMiOiAiYW5ndWxhckAxLjQu
MyIsCisgICJfd2hlcmUiOiAiL1VzZXJzL2FkZHlvL3Byb2plY3RzL3NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMiLAorICAiYXV0aG9y
IjogeworICAgICJuYW1lIjogIkFuZ3VsYXIgQ29yZSBUZWFtIiwKKyAgICAiZW1haWwiOiAiYW5n
dWxhci1jb3JlK25wbUBnb29nbGUuY29tIgorICB9LAorICAiYnVncyI6IHsKKyAgICAidXJsIjog
Imh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIuanMvaXNzdWVzIgorICB9LAorICAi
ZGVwZW5kZW5jaWVzIjoge30sCisgICJkZXNjcmlwdGlvbiI6ICJIVE1MIGVuaGFuY2VkIGZvciB3
ZWIgYXBwcyIsCisgICJkZXZEZXBlbmRlbmNpZXMiOiB7fSwKKyAgImRpcmVjdG9yaWVzIjoge30s
CisgICJkaXN0IjogeworICAgICJzaGFzdW0iOiAiM2FmNzIzNDYxNzg5YmQwYjlmYWQ5ZDk2ZGEy
NTc2OWYyMDdkYzFlMiIsCisgICAgInRhcmJhbGwiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5v
cmcvYW5ndWxhci8tL2FuZ3VsYXItMS40LjMudGd6IgorICB9LAorICAiZ2l0SGVhZCI6ICJkYmQ2
ODllODEwM2E2MzY2ZTUzZTFmNjc4NjcyN2Y3YzY1Y2NmZDc1IiwKKyAgImhvbWVwYWdlIjogImh0
dHA6Ly9hbmd1bGFyanMub3JnIiwKKyAgImtleXdvcmRzIjogWworICAgICJhbmd1bGFyIiwKKyAg
ICAiZnJhbWV3b3JrIiwKKyAgICAiYnJvd3NlciIsCisgICAgImNsaWVudC1zaWRlIgorICBdLAor
ICAibGljZW5zZSI6ICJNSVQiLAorICAibWFpbiI6ICJpbmRleC5qcyIsCisgICJtYWludGFpbmVy
cyI6IFsKKyAgICB7CisgICAgICAibmFtZSI6ICJiY2xpbmtpbmJlYXJkIiwKKyAgICAgICJlbWFp
bCI6ICJiZW4uY2xpbmtpbmJlYXJkQGdtYWlsLmNvbSIKKyAgICB9LAorICAgIHsKKyAgICAgICJu
YW1lIjogImFuZ3VsYXJjb3JlIiwKKyAgICAgICJlbWFpbCI6ICJhbmd1bGFyLWNvcmUrbnBtQGdv
b2dsZS5jb20iCisgICAgfSwKKyAgICB7CisgICAgICAibmFtZSI6ICJwZXRlYmQiLAorICAgICAg
ImVtYWlsIjogInBldGVAYmFjb25kYXJ3aW4uY29tIgorICAgIH0KKyAgXSwKKyAgIm5hbWUiOiAi
YW5ndWxhciIsCisgICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHt9LAorICAicmVhZG1lIjogIkVS
Uk9SOiBObyBSRUFETUUgZGF0YSBmb3VuZCEiLAorICAicmVwb3NpdG9yeSI6IHsKKyAgICAidHlw
ZSI6ICJnaXQiLAorICAgICJ1cmwiOiAiZ2l0K2h0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2Fu
Z3VsYXIuanMuZ2l0IgorICB9LAorICAic2NyaXB0cyI6IHsKKyAgICAidGVzdCI6ICJlY2hvIFwi
RXJyb3I6IG5vIHRlc3Qgc3BlY2lmaWVkXCIgJiYgZXhpdCAxIgorICB9LAorICAidmVyc2lvbiI6
ICIxLjQuMyIKK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ub2RlX21vZHVs
ZXMvdG9kb212Yy1hcHAtY3NzL2luZGV4LmNzcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ub2Rl
X21vZHVsZXMvdG9kb212Yy1hcHAtY3NzL2luZGV4LmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xN2VhMTgwMTYx
MjEyNmYxZGI2NWNlMDU2OGYyYTAyMzczYjkzYjU1Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvYW5ndWxhcmpzL25vZGVfbW9kdWxlcy90b2RvbXZjLWFwcC1jc3MvaW5kZXguY3NzCkBA
IC0wLDAgKzEsMzc4IEBACitodG1sLAorYm9keSB7CisgICAgbWFyZ2luOiAwOworICAgIHBhZGRp
bmc6IDA7Cit9CisKK2J1dHRvbiB7CisgICAgbWFyZ2luOiAwOworICAgIHBhZGRpbmc6IDA7Cisg
ICAgYm9yZGVyOiAwOworICAgIGJhY2tncm91bmQ6IG5vbmU7CisgICAgZm9udC1zaXplOiAxMDAl
OworICAgIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsKKyAgICBmb250LWZhbWlseTogaW5oZXJp
dDsKKyAgICBmb250LXdlaWdodDogaW5oZXJpdDsKKyAgICBjb2xvcjogaW5oZXJpdDsKKyAgICAt
d2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CisgICAgYXBwZWFyYW5jZTogbm9uZTsKKyAgICAtd2Vi
a2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKKyAgICAtbW96LWZvbnQtc21vb3RoaW5n
OiBhbnRpYWxpYXNlZDsKKyAgICBmb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7Cit9CisKK2Jv
ZHkgeworICAgIGZvbnQ6IDE0cHggJ0hlbHZldGljYSBOZXVlJywgSGVsdmV0aWNhLCBBcmlhbCwg
c2Fucy1zZXJpZjsKKyAgICBsaW5lLWhlaWdodDogMS40ZW07CisgICAgYmFja2dyb3VuZDogI2Y1
ZjVmNTsKKyAgICBjb2xvcjogIzRkNGQ0ZDsKKyAgICBtaW4td2lkdGg6IDIzMHB4OworICAgIG1h
eC13aWR0aDogNTUwcHg7CisgICAgbWFyZ2luOiAwIGF1dG87CisgICAgLXdlYmtpdC1mb250LXNt
b290aGluZzogYW50aWFsaWFzZWQ7CisgICAgLW1vei1mb250LXNtb290aGluZzogYW50aWFsaWFz
ZWQ7CisgICAgZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOworICAgIGZvbnQtd2VpZ2h0OiAz
MDA7Cit9CisKK2J1dHRvbiwKK2lucHV0W3R5cGU9ImNoZWNrYm94Il0geworICAgIG91dGxpbmU6
IG5vbmU7Cit9CisKKy5oaWRkZW4geworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKKyN0b2RvYXBw
IHsKKyAgICBiYWNrZ3JvdW5kOiAjZmZmOworICAgIG1hcmdpbjogMTMwcHggMCA0MHB4IDA7Cisg
ICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgIGJveC1zaGFkb3c6IDAgMnB4IDRweCAwIHJnYmEo
MCwgMCwgMCwgMC4yKSwKKyAgICAgICAgICAgICAgICAwIDI1cHggNTBweCAwIHJnYmEoMCwgMCwg
MCwgMC4xKTsKK30KKworI3RvZG9hcHAgaW5wdXQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIg
eworICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKKyAgICBmb250LXdlaWdodDogMzAwOworICAgIGNv
bG9yOiAjZTZlNmU2OworfQorCisjdG9kb2FwcCBpbnB1dDo6LW1vei1wbGFjZWhvbGRlciB7Cisg
ICAgZm9udC1zdHlsZTogaXRhbGljOworICAgIGZvbnQtd2VpZ2h0OiAzMDA7CisgICAgY29sb3I6
ICNlNmU2ZTY7Cit9CisKKyN0b2RvYXBwIGlucHV0OjppbnB1dC1wbGFjZWhvbGRlciB7CisgICAg
Zm9udC1zdHlsZTogaXRhbGljOworICAgIGZvbnQtd2VpZ2h0OiAzMDA7CisgICAgY29sb3I6ICNl
NmU2ZTY7Cit9CisKKyN0b2RvYXBwIGgxIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAg
dG9wOiAtMTU1cHg7CisgICAgd2lkdGg6IDEwMCU7CisgICAgZm9udC1zaXplOiAxMDBweDsKKyAg
ICBmb250LXdlaWdodDogMTAwOworICAgIHRleHQtYWxpZ246IGNlbnRlcjsKKyAgICBjb2xvcjog
cmdiYSgxNzUsIDQ3LCA0NywgMC4xNSk7CisgICAgLXdlYmtpdC10ZXh0LXJlbmRlcmluZzogb3B0
aW1pemVMZWdpYmlsaXR5OworICAgIC1tb3otdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJp
bGl0eTsKKyAgICB0ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5OworfQorCisjbmV3
LXRvZG8sCisuZWRpdCB7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgIG1hcmdpbjogMDsK
KyAgICB3aWR0aDogMTAwJTsKKyAgICBmb250LXNpemU6IDI0cHg7CisgICAgZm9udC1mYW1pbHk6
IGluaGVyaXQ7CisgICAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7CisgICAgbGluZS1oZWlnaHQ6IDEu
NGVtOworICAgIGJvcmRlcjogMDsKKyAgICBvdXRsaW5lOiBub25lOworICAgIGNvbG9yOiBpbmhl
cml0OworICAgIHBhZGRpbmc6IDZweDsKKyAgICBib3JkZXI6IDFweCBzb2xpZCAjOTk5OworICAg
IGJveC1zaGFkb3c6IGluc2V0IDAgLTFweCA1cHggMCByZ2JhKDAsIDAsIDAsIDAuMik7CisgICAg
Ym94LXNpemluZzogYm9yZGVyLWJveDsKKyAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRp
YWxpYXNlZDsKKyAgICAtbW96LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKKyAgICBmb250
LXNtb290aGluZzogYW50aWFsaWFzZWQ7Cit9CisKKyNuZXctdG9kbyB7CisgICAgcGFkZGluZzog
MTZweCAxNnB4IDE2cHggNjBweDsKKyAgICBib3JkZXI6IG5vbmU7CisgICAgYmFja2dyb3VuZDog
cmdiYSgwLCAwLCAwLCAwLjAwMyk7CisgICAgYm94LXNoYWRvdzogaW5zZXQgMCAtMnB4IDFweCBy
Z2JhKDAsMCwwLDAuMDMpOworfQorCisjbWFpbiB7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOwor
ICAgIHotaW5kZXg6IDI7CisgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlNmU2ZTY7Cit9CisK
K2xhYmVsW2Zvcj0ndG9nZ2xlLWFsbCddIHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCisjdG9n
Z2xlLWFsbCB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDogLTU1cHg7CisgICAg
bGVmdDogLTEycHg7CisgICAgd2lkdGg6IDYwcHg7CisgICAgaGVpZ2h0OiAzNHB4OworICAgIHRl
eHQtYWxpZ246IGNlbnRlcjsKKyAgICBib3JkZXI6IG5vbmU7IC8qIE1vYmlsZSBTYWZhcmkgKi8K
K30KKworI3RvZ2dsZS1hbGw6YmVmb3JlIHsKKyAgICBjb250ZW50OiAn4p2vJzsKKyAgICBmb250
LXNpemU6IDIycHg7CisgICAgY29sb3I6ICNlNmU2ZTY7CisgICAgcGFkZGluZzogMTBweCAyN3B4
IDEwcHggMjdweDsKK30KKworI3RvZ2dsZS1hbGw6Y2hlY2tlZDpiZWZvcmUgeworICAgIGNvbG9y
OiAjNzM3MzczOworfQorCisjdG9kby1saXN0IHsKKyAgICBtYXJnaW46IDA7CisgICAgcGFkZGlu
ZzogMDsKKyAgICBsaXN0LXN0eWxlOiBub25lOworfQorCisjdG9kby1saXN0IGxpIHsKKyAgICBw
b3NpdGlvbjogcmVsYXRpdmU7CisgICAgZm9udC1zaXplOiAyNHB4OworICAgIGJvcmRlci1ib3R0
b206IDFweCBzb2xpZCAjZWRlZGVkOworfQorCisjdG9kby1saXN0IGxpOmxhc3QtY2hpbGQgewor
ICAgIGJvcmRlci1ib3R0b206IG5vbmU7Cit9CisKKyN0b2RvLWxpc3QgbGkuZWRpdGluZyB7Cisg
ICAgYm9yZGVyLWJvdHRvbTogbm9uZTsKKyAgICBwYWRkaW5nOiAwOworfQorCisjdG9kby1saXN0
IGxpLmVkaXRpbmcgLmVkaXQgeworICAgIGRpc3BsYXk6IGJsb2NrOworICAgIHdpZHRoOiA1MDZw
eDsKKyAgICBwYWRkaW5nOiAxM3B4IDE3cHggMTJweCAxN3B4OworICAgIG1hcmdpbjogMCAwIDAg
NDNweDsKK30KKworI3RvZG8tbGlzdCBsaS5lZGl0aW5nIC52aWV3IHsKKyAgICBkaXNwbGF5OiBu
b25lOworfQorCisjdG9kby1saXN0IGxpIC50b2dnbGUgeworICAgIHRleHQtYWxpZ246IGNlbnRl
cjsKKyAgICB3aWR0aDogNDBweDsKKyAgICAvKiBhdXRvLCBzaW5jZSBub24tV2ViS2l0IGJyb3dz
ZXJzIGRvZXNuJ3Qgc3VwcG9ydCBpbnB1dCBzdHlsaW5nICovCisgICAgaGVpZ2h0OiBhdXRvOwor
ICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IDA7CisgICAgYm90dG9tOiAwOworICAg
IG1hcmdpbjogYXV0byAwOworICAgIGJvcmRlcjogbm9uZTsgLyogTW9iaWxlIFNhZmFyaSAqLwor
ICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKKyAgICBhcHBlYXJhbmNlOiBub25lOworfQor
CisjdG9kby1saXN0IGxpIC50b2dnbGU6YWZ0ZXIgeworICAgIGNvbnRlbnQ6IHVybCgnZGF0YTpp
bWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgdmlld0JveD0iLTEwIC0xOCAxMDAgMTM1Ij48Y2lyY2xl
IGN4PSI1MCIgY3k9IjUwIiByPSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZWRlZGVkIiBzdHJv
a2Utd2lkdGg9IjMiLz48L3N2Zz4nKTsKK30KKworI3RvZG8tbGlzdCBsaSAudG9nZ2xlOmNoZWNr
ZWQ6YWZ0ZXIgeworICAgIGNvbnRlbnQ6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0MCIgaGVpZ2h0PSI0
MCIgdmlld0JveD0iLTEwIC0xOCAxMDAgMTM1Ij48Y2lyY2xlIGN4PSI1MCIgY3k9IjUwIiByPSI1
MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYmRkYWQ1IiBzdHJva2Utd2lkdGg9IjMiLz48cGF0aCBm
aWxsPSIjNWRjMmFmIiBkPSJNNzIgMjVMNDIgNzEgMjcgNTZsLTQgNCAyMCAyMCAzNC01MnoiLz48
L3N2Zz4nKTsKK30KKworI3RvZG8tbGlzdCBsaSBsYWJlbCB7CisgICAgd2hpdGUtc3BhY2U6IHBy
ZTsKKyAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkOworICAgIHBhZGRpbmc6IDE1cHggNjBweCAx
NXB4IDE1cHg7CisgICAgbWFyZ2luLWxlZnQ6IDQ1cHg7CisgICAgZGlzcGxheTogYmxvY2s7Cisg
ICAgbGluZS1oZWlnaHQ6IDEuMjsKKyAgICB0cmFuc2l0aW9uOiBjb2xvciAwLjRzOworfQorCisj
dG9kby1saXN0IGxpLmNvbXBsZXRlZCBsYWJlbCB7CisgICAgY29sb3I6ICNkOWQ5ZDk7CisgICAg
dGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2g7Cit9CisKKyN0b2RvLWxpc3QgbGkgLmRlc3Ry
b3kgeworICAgIGRpc3BsYXk6IG5vbmU7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRv
cDogMDsKKyAgICByaWdodDogMTBweDsKKyAgICBib3R0b206IDA7CisgICAgd2lkdGg6IDQwcHg7
CisgICAgaGVpZ2h0OiA0MHB4OworICAgIG1hcmdpbjogYXV0byAwOworICAgIGZvbnQtc2l6ZTog
MzBweDsKKyAgICBjb2xvcjogI2NjOWE5YTsKKyAgICBtYXJnaW4tYm90dG9tOiAxMXB4OworICAg
IHRyYW5zaXRpb246IGNvbG9yIDAuMnMgZWFzZS1vdXQ7Cit9CisKKyN0b2RvLWxpc3QgbGkgLmRl
c3Ryb3k6aG92ZXIgeworICAgIGNvbG9yOiAjYWY1YjVlOworfQorCisjdG9kby1saXN0IGxpIC5k
ZXN0cm95OmFmdGVyIHsKKyAgICBjb250ZW50OiAnw5cnOworfQorCisjdG9kby1saXN0IGxpOmhv
dmVyIC5kZXN0cm95IHsKKyAgICBkaXNwbGF5OiBibG9jazsKK30KKworI3RvZG8tbGlzdCBsaSAu
ZWRpdCB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKworI3RvZG8tbGlzdCBsaS5lZGl0aW5nOmxh
c3QtY2hpbGQgeworICAgIG1hcmdpbi1ib3R0b206IC0xcHg7Cit9CisKKyNmb290ZXIgeworICAg
IGNvbG9yOiAjNzc3OworICAgIHBhZGRpbmc6IDEwcHggMTVweDsKKyAgICBoZWlnaHQ6IDIwcHg7
CisgICAgdGV4dC1hbGlnbjogY2VudGVyOworICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZTZl
NmU2OworfQorCisjZm9vdGVyOmJlZm9yZSB7CisgICAgY29udGVudDogJyc7CisgICAgcG9zaXRp
b246IGFic29sdXRlOworICAgIHJpZ2h0OiAwOworICAgIGJvdHRvbTogMDsKKyAgICBsZWZ0OiAw
OworICAgIGhlaWdodDogNTBweDsKKyAgICBvdmVyZmxvdzogaGlkZGVuOworICAgIGJveC1zaGFk
b3c6IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMiksCisgICAgICAgICAgICAgICAgMCA4cHgg
MCAtM3B4ICNmNmY2ZjYsCisgICAgICAgICAgICAgICAgMCA5cHggMXB4IC0zcHggcmdiYSgwLCAw
LCAwLCAwLjIpLAorICAgICAgICAgICAgICAgIDAgMTZweCAwIC02cHggI2Y2ZjZmNiwKKyAgICAg
ICAgICAgICAgICAwIDE3cHggMnB4IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpOworfQorCisjdG9k
by1jb3VudCB7CisgICAgZmxvYXQ6IGxlZnQ7CisgICAgdGV4dC1hbGlnbjogbGVmdDsKK30KKwor
I3RvZG8tY291bnQgc3Ryb25nIHsKKyAgICBmb250LXdlaWdodDogMzAwOworfQorCisjZmlsdGVy
cyB7CisgICAgbWFyZ2luOiAwOworICAgIHBhZGRpbmc6IDA7CisgICAgbGlzdC1zdHlsZTogbm9u
ZTsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgcmlnaHQ6IDA7CisgICAgbGVmdDogMDsK
K30KKworI2ZpbHRlcnMgbGkgeworICAgIGRpc3BsYXk6IGlubGluZTsKK30KKworI2ZpbHRlcnMg
bGkgYSB7CisgICAgY29sb3I6IGluaGVyaXQ7CisgICAgbWFyZ2luOiAzcHg7CisgICAgcGFkZGlu
ZzogM3B4IDdweDsKKyAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CisgICAgYm9yZGVyOiAxcHgg
c29saWQgdHJhbnNwYXJlbnQ7CisgICAgYm9yZGVyLXJhZGl1czogM3B4OworfQorCisjZmlsdGVy
cyBsaSBhLnNlbGVjdGVkLAorI2ZpbHRlcnMgbGkgYTpob3ZlciB7CisgICAgYm9yZGVyLWNvbG9y
OiByZ2JhKDE3NSwgNDcsIDQ3LCAwLjEpOworfQorCisjZmlsdGVycyBsaSBhLnNlbGVjdGVkIHsK
KyAgICBib3JkZXItY29sb3I6IHJnYmEoMTc1LCA0NywgNDcsIDAuMik7Cit9CisKKyNjbGVhci1j
b21wbGV0ZWQsCitodG1sICNjbGVhci1jb21wbGV0ZWQ6YWN0aXZlIHsKKyAgICBmbG9hdDogcmln
aHQ7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgIGxpbmUtaGVpZ2h0OiAyMHB4OworICAg
IHRleHQtZGVjb3JhdGlvbjogbm9uZTsKKyAgICBjdXJzb3I6IHBvaW50ZXI7CisgICAgcG9zaXRp
b246IHJlbGF0aXZlOworfQorCisjY2xlYXItY29tcGxldGVkOmhvdmVyIHsKKyAgICB0ZXh0LWRl
Y29yYXRpb246IHVuZGVybGluZTsKK30KKworI2luZm8geworICAgIG1hcmdpbjogNjVweCBhdXRv
IDA7CisgICAgY29sb3I6ICNiZmJmYmY7CisgICAgZm9udC1zaXplOiAxMHB4OworICAgIHRleHQt
c2hhZG93OiAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTsKKyAgICB0ZXh0LWFsaWdu
OiBjZW50ZXI7Cit9CisKKyNpbmZvIHAgeworICAgIGxpbmUtaGVpZ2h0OiAxOworfQorCisjaW5m
byBhIHsKKyAgICBjb2xvcjogaW5oZXJpdDsKKyAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Cisg
ICAgZm9udC13ZWlnaHQ6IDQwMDsKK30KKworI2luZm8gYTpob3ZlciB7CisgICAgdGV4dC1kZWNv
cmF0aW9uOiB1bmRlcmxpbmU7Cit9CisKKy8qCisgICAgSGFjayB0byByZW1vdmUgYmFja2dyb3Vu
ZCBmcm9tIE1vYmlsZSBTYWZhcmkuCisgICAgQ2FuJ3QgdXNlIGl0IGdsb2JhbGx5IHNpbmNlIGl0
IGRlc3Ryb3lzIGNoZWNrYm94ZXMgaW4gRmlyZWZveAorKi8KK0BtZWRpYSBzY3JlZW4gYW5kICgt
d2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86MCkgeworICAgICN0b2dnbGUtYWxsLAorICAg
ICN0b2RvLWxpc3QgbGkgLnRvZ2dsZSB7CisgICAgICAgIGJhY2tncm91bmQ6IG5vbmU7CisgICAg
fQorCisgICAgI3RvZG8tbGlzdCBsaSAudG9nZ2xlIHsKKyAgICAgICAgaGVpZ2h0OiA0MHB4Owor
ICAgIH0KKworICAgICN0b2dnbGUtYWxsIHsKKyAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJv
dGF0ZSg5MGRlZyk7CisgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsKKyAgICAgICAg
LXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOworICAgICAgICBhcHBlYXJhbmNlOiBub25lOworICAg
IH0KK30KKworQG1lZGlhIChtYXgtd2lkdGg6IDQzMHB4KSB7CisgICAgI2Zvb3RlciB7CisgICAg
ICAgIGhlaWdodDogNTBweDsKKyAgICB9CisKKyAgICAjZmlsdGVycyB7CisgICAgICAgIGJvdHRv
bTogMTBweDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvbm9k
ZV9tb2R1bGVzL3RvZG9tdmMtYXBwLWNzcy9wYWNrYWdlLmpzb24gYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1
bGFyanMvbm9kZV9tb2R1bGVzL3RvZG9tdmMtYXBwLWNzcy9wYWNrYWdlLmpzb24KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOGRjMzVkNmUwNGJmODhmODA5ZDYxNWQwMzljNmYyZmMwMmI5YWNlZAotLS0gL2Rldi9udWxs
CisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ub2RlX21vZHVsZXMvdG9kb212Yy1hcHAtY3Nz
L3BhY2thZ2UuanNvbgpAQCAtMCwwICsxLDEwMyBAQAoreworICAiX2FyZ3MiOiBbCisgICAgWwor
ICAgICAgeworICAgICAgICAicmF3IjogInRvZG9tdmMtYXBwLWNzc0BeMS4wLjEiLAorICAgICAg
ICAic2NvcGUiOiBudWxsLAorICAgICAgICAiZXNjYXBlZE5hbWUiOiAidG9kb212Yy1hcHAtY3Nz
IiwKKyAgICAgICAgIm5hbWUiOiAidG9kb212Yy1hcHAtY3NzIiwKKyAgICAgICAgInJhd1NwZWMi
OiAiXjEuMC4xIiwKKyAgICAgICAgInNwZWMiOiAiPj0xLjAuMSA8Mi4wLjAiLAorICAgICAgICAi
dHlwZSI6ICJyYW5nZSIKKyAgICAgIH0sCisgICAgICAiL1VzZXJzL2FkZHlvL3Byb2plY3RzL3Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFy
anMiCisgICAgXQorICBdLAorICAiX2Zyb20iOiAidG9kb212Yy1hcHAtY3NzQD49MS4wLjEgPDIu
MC4wIiwKKyAgIl9pZCI6ICJ0b2RvbXZjLWFwcC1jc3NAMS4wLjQiLAorICAiX2luQ2FjaGUiOiB0
cnVlLAorICAiX2xvY2F0aW9uIjogIi90b2RvbXZjLWFwcC1jc3MiLAorICAiX25vZGVWZXJzaW9u
IjogIjAuMTIuMCIsCisgICJfbnBtVXNlciI6IHsKKyAgICAibmFtZSI6ICJzaW5kcmVzb3JodXMi
LAorICAgICJlbWFpbCI6ICJzaW5kcmVzb3JodXNAZ21haWwuY29tIgorICB9LAorICAiX25wbVZl
cnNpb24iOiAiMi41LjEiLAorICAiX3BoYW50b21DaGlsZHJlbiI6IHt9LAorICAiX3JlcXVlc3Rl
ZCI6IHsKKyAgICAicmF3IjogInRvZG9tdmMtYXBwLWNzc0BeMS4wLjEiLAorICAgICJzY29wZSI6
IG51bGwsCisgICAgImVzY2FwZWROYW1lIjogInRvZG9tdmMtYXBwLWNzcyIsCisgICAgIm5hbWUi
OiAidG9kb212Yy1hcHAtY3NzIiwKKyAgICAicmF3U3BlYyI6ICJeMS4wLjEiLAorICAgICJzcGVj
IjogIj49MS4wLjEgPDIuMC4wIiwKKyAgICAidHlwZSI6ICJyYW5nZSIKKyAgfSwKKyAgIl9yZXF1
aXJlZEJ5IjogWworICAgICIvIgorICBdLAorICAiX3Jlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL3RvZG9tdmMtYXBwLWNzcy8tL3RvZG9tdmMtYXBwLWNzcy0xLjAuNC50Z3oi
LAorICAiX3NoYXN1bSI6ICJkMjUyOTI3OWE2ZGE1YmVmYjA2YjU1YzBjMzI0YzVmY2ZkOTRkNjU2
IiwKKyAgIl9zaHJpbmt3cmFwIjogbnVsbCwKKyAgIl9zcGVjIjogInRvZG9tdmMtYXBwLWNzc0Be
MS4wLjEiLAorICAiX3doZXJlIjogIi9Vc2Vycy9hZGR5by9wcm9qZWN0cy9zcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzIiwKKyAgImF1
dGhvciI6IHsKKyAgICAibmFtZSI6ICJTaW5kcmUgU29yaHVzIiwKKyAgICAiZW1haWwiOiAic2lu
ZHJlc29yaHVzQGdtYWlsLmNvbSIsCisgICAgInVybCI6ICJzaW5kcmVzb3JodXMuY29tIgorICB9
LAorICAiYnVncyI6IHsKKyAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS90YXN0ZWpzL3Rv
ZG9tdmMtYXBwLWNzcy9pc3N1ZXMiCisgIH0sCisgICJkZXBlbmRlbmNpZXMiOiB7fSwKKyAgImRl
c2NyaXB0aW9uIjogIkNTUyBmb3IgVG9kb01WQyBhcHBzIiwKKyAgImRldkRlcGVuZGVuY2llcyI6
IHt9LAorICAiZGlyZWN0b3JpZXMiOiB7fSwKKyAgImRpc3QiOiB7CisgICAgInNoYXN1bSI6ICJk
MjUyOTI3OWE2ZGE1YmVmYjA2YjU1YzBjMzI0YzVmY2ZkOTRkNjU2IiwKKyAgICAidGFyYmFsbCI6
ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy90b2RvbXZjLWFwcC1jc3MvLS90b2RvbXZjLWFw
cC1jc3MtMS4wLjQudGd6IgorICB9LAorICAiZmlsZXMiOiBbCisgICAgImluZGV4LmNzcyIKKyAg
XSwKKyAgImdpdEhlYWQiOiAiMWU0ZTM4ODg0YTM1MTkzZWFmMTgwOGE1YmE0NDQyMTgzMjg2NzE4
NCIsCisgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vdGFzdGVqcy90b2RvbXZjLWFw
cC1jc3MiLAorICAia2V5d29yZHMiOiBbCisgICAgInRvZG9tdmMiLAorICAgICJ0YXN0ZWpzIiwK
KyAgICAiYXBwIiwKKyAgICAidG9kbyIsCisgICAgInRlbXBsYXRlIiwKKyAgICAiY3NzIiwKKyAg
ICAic3R5bGUiLAorICAgICJzdHlsZXNoZWV0IgorICBdLAorICAibGljZW5zZSI6ICJDQy1CWS00
LjAiLAorICAibWFpbnRhaW5lcnMiOiBbCisgICAgeworICAgICAgIm5hbWUiOiAic2luZHJlc29y
aHVzIiwKKyAgICAgICJlbWFpbCI6ICJzaW5kcmVzb3JodXNAZ21haWwuY29tIgorICAgIH0sCisg
ICAgeworICAgICAgIm5hbWUiOiAiYWRkeW9zbWFuaSIsCisgICAgICAiZW1haWwiOiAiYWRkeW9z
bWFuaUBnbWFpbC5jb20iCisgICAgfSwKKyAgICB7CisgICAgICAibmFtZSI6ICJwYXNzeSIsCisg
ICAgICAiZW1haWwiOiAicGhhcnRpZ0ByZHJlaS5uZXQiCisgICAgfSwKKyAgICB7CisgICAgICAi
bmFtZSI6ICJzdGVwaGVucGx1c3BsdXMiLAorICAgICAgImVtYWlsIjogInNhd2NodWtAZ21haWwu
Y29tIgorICAgIH0KKyAgXSwKKyAgIm5hbWUiOiAidG9kb212Yy1hcHAtY3NzIiwKKyAgIm9wdGlv
bmFsRGVwZW5kZW5jaWVzIjoge30sCisgICJyZWFkbWUiOiAiRVJST1I6IE5vIFJFQURNRSBkYXRh
IGZvdW5kISIsCisgICJyZXBvc2l0b3J5IjogeworICAgICJ0eXBlIjogImdpdCIsCisgICAgInVy
bCI6ICJnaXQraHR0cHM6Ly9naXRodWIuY29tL3Rhc3RlanMvdG9kb212Yy1hcHAtY3NzLmdpdCIK
KyAgfSwKKyAgInNjcmlwdHMiOiB7fSwKKyAgInZlcnNpb24iOiAiMS4wLjQiCit9CmRpZmYgLS1n
aXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvbm9kZV9tb2R1bGVzL3RvZG9tdmMtYXBwLWNzcy9y
ZWFkbWUubWQgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvbm9kZV9tb2R1bGVzL3RvZG9tdmMtYXBw
LWNzcy9yZWFkbWUubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmRkYmViZjAyNGMwNGFlYjYwMjBjYWYxMzFhMmVk
MDMxODkwODBhNQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ub2Rl
X21vZHVsZXMvdG9kb212Yy1hcHAtY3NzL3JlYWRtZS5tZApAQCAtMCwwICsxLDI4IEBACisjIHRv
ZG9tdmMtYXBwLWNzcworCis+IENTUyBmb3IgVG9kb01WQyBhcHBzCisKKyFbXShzY3JlZW5zaG90
LnBuZykKKworCisjIyBJbnN0YWxsCisKKworYGBgCiskIG5wbSBpbnN0YWxsIC0tc2F2ZSB0b2Rv
bXZjLWFwcC1jc3MKK2BgYAorCisKKyMjIEdldHRpbmcgc3RhcnRlZAorCitgYGBodG1sCis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Im5vZGVfbW9kdWxlcy90b2RvbXZjLWFwcC1jc3MvaW5k
ZXguY3NzIj4KK2BgYAorCitTZWUgdGhlIFtUb2RvTVZDIGFwcCB0ZW1wbGF0ZV0oaHR0cHM6Ly9n
aXRodWIuY29tL3Rhc3RlanMvdG9kb212Yy1hcHAtdGVtcGxhdGUpLgorCisKKworIyMgTGljZW5z
ZQorCis8YSByZWw9ImxpY2Vuc2UiIGhyZWY9Imh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xp
Y2Vuc2VzL2J5LzQuMC9kZWVkLmVuX1VTIj48aW1nIGFsdD0iQ3JlYXRpdmUgQ29tbW9ucyBMaWNl
bnNlIiBzdHlsZT0iYm9yZGVyLXdpZHRoOjAiIHNyYz0iaHR0cDovL2kuY3JlYXRpdmVjb21tb25z
Lm9yZy9sL2J5LzQuMC84MHgxNS5wbmciIC8+PC9hPjxiciAvPlRoaXMgPHNwYW4geG1sbnM6ZGN0
PSJodHRwOi8vcHVybC5vcmcvZGMvdGVybXMvIiBocmVmPSJodHRwOi8vcHVybC5vcmcvZGMvZGNt
aXR5cGUvSW50ZXJhY3RpdmVSZXNvdXJjZSIgcmVsPSJkY3Q6dHlwZSI+d29yazwvc3Bhbj4gYnkg
PGEgeG1sbnM6Y2M9Imh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL25zIyIgaHJlZj0iaHR0cDov
L3NpbmRyZXNvcmh1cy5jb20iIHByb3BlcnR5PSJjYzphdHRyaWJ1dGlvbk5hbWUiIHJlbD0iY2M6
YXR0cmlidXRpb25VUkwiPlNpbmRyZSBTb3JodXM8L2E+IGlzIGxpY2Vuc2VkIHVuZGVyIGEgPGEg
cmVsPSJsaWNlbnNlIiBocmVmPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9i
eS80LjAvZGVlZC5lbl9VUyI+Q3JlYXRpdmUgQ29tbW9ucyBBdHRyaWJ1dGlvbiA0LjAgSW50ZXJu
YXRpb25hbCBMaWNlbnNlPC9hPi4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9u
b2RlX21vZHVsZXMvdG9kb212Yy1jb21tb24vYmFzZS5jc3MgYi9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFy
anMvbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jhc2UuY3NzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMjVk
M2M4NGFjNmM2YWVmMjZiOTY4M2EyYmMxMGM2MWY5NjBjOGYKLS0tIC9kZXYvbnVsbAorKysgYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9hbmd1bGFyanMvbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jhc2UuY3Nz
CkBAIC0wLDAgKzEsMTQxIEBACitociB7CisgICAgbWFyZ2luOiAyMHB4IDA7CisgICAgYm9yZGVy
OiAwOworICAgIGJvcmRlci10b3A6IDFweCBkYXNoZWQgI2M1YzVjNTsKKyAgICBib3JkZXItYm90
dG9tOiAxcHggZGFzaGVkICNmN2Y3Zjc7Cit9CisKKy5sZWFybiBhIHsKKyAgICBmb250LXdlaWdo
dDogbm9ybWFsOworICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKKyAgICBjb2xvcjogI2I4M2Y0
NTsKK30KKworLmxlYXJuIGE6aG92ZXIgeworICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5l
OworICAgIGNvbG9yOiAjNzg3ZTdlOworfQorCisubGVhcm4gaDMsCisubGVhcm4gaDQsCisubGVh
cm4gaDUgeworICAgIG1hcmdpbjogMTBweCAwOworICAgIGZvbnQtd2VpZ2h0OiA1MDA7CisgICAg
bGluZS1oZWlnaHQ6IDEuMjsKKyAgICBjb2xvcjogIzAwMDsKK30KKworLmxlYXJuIGgzIHsKKyAg
ICBmb250LXNpemU6IDI0cHg7Cit9CisKKy5sZWFybiBoNCB7CisgICAgZm9udC1zaXplOiAxOHB4
OworfQorCisubGVhcm4gaDUgeworICAgIG1hcmdpbi1ib3R0b206IDA7CisgICAgZm9udC1zaXpl
OiAxNHB4OworfQorCisubGVhcm4gdWwgeworICAgIHBhZGRpbmc6IDA7CisgICAgbWFyZ2luOiAw
IDAgMzBweCAyNXB4OworfQorCisubGVhcm4gbGkgeworICAgIGxpbmUtaGVpZ2h0OiAyMHB4Owor
fQorCisubGVhcm4gcCB7CisgICAgZm9udC1zaXplOiAxNXB4OworICAgIGZvbnQtd2VpZ2h0OiAz
MDA7CisgICAgbGluZS1oZWlnaHQ6IDEuMzsKKyAgICBtYXJnaW4tdG9wOiAwOworICAgIG1hcmdp
bi1ib3R0b206IDA7Cit9CisKKyNpc3N1ZS1jb3VudCB7CisgICAgZGlzcGxheTogbm9uZTsKK30K
KworLnF1b3RlIHsKKyAgICBib3JkZXI6IG5vbmU7CisgICAgbWFyZ2luOiAyMHB4IDAgNjBweCAw
OworfQorCisucXVvdGUgcCB7CisgICAgZm9udC1zdHlsZTogaXRhbGljOworfQorCisucXVvdGUg
cDpiZWZvcmUgeworICAgIGNvbnRlbnQ6ICfigJwnOworICAgIGZvbnQtc2l6ZTogNTBweDsKKyAg
ICBvcGFjaXR5OiAuMTU7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDogLTIwcHg7
CisgICAgbGVmdDogM3B4OworfQorCisucXVvdGUgcDphZnRlciB7CisgICAgY29udGVudDogJ+KA
nSc7CisgICAgZm9udC1zaXplOiA1MHB4OworICAgIG9wYWNpdHk6IC4xNTsKKyAgICBwb3NpdGlv
bjogYWJzb2x1dGU7CisgICAgYm90dG9tOiAtNDJweDsKKyAgICByaWdodDogM3B4OworfQorCisu
cXVvdGUgZm9vdGVyIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgYm90dG9tOiAtNDBw
eDsKKyAgICByaWdodDogMDsKK30KKworLnF1b3RlIGZvb3RlciBpbWcgeworICAgIGJvcmRlci1y
YWRpdXM6IDNweDsKK30KKworLnF1b3RlIGZvb3RlciBhIHsKKyAgICBtYXJnaW4tbGVmdDogNXB4
OworICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cit9CisKKy5zcGVlY2gtYnViYmxlIHsKKyAg
ICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgcGFkZGluZzogMTBweDsKKyAgICBiYWNrZ3JvdW5k
OiByZ2JhKDAsIDAsIDAsIC4wNCk7CisgICAgYm9yZGVyLXJhZGl1czogNXB4OworfQorCisuc3Bl
ZWNoLWJ1YmJsZTphZnRlciB7CisgICAgY29udGVudDogJyc7CisgICAgcG9zaXRpb246IGFic29s
dXRlOworICAgIHRvcDogMTAwJTsKKyAgICByaWdodDogMzBweDsKKyAgICBib3JkZXI6IDEzcHgg
c29saWQgdHJhbnNwYXJlbnQ7CisgICAgYm9yZGVyLXRvcC1jb2xvcjogcmdiYSgwLCAwLCAwLCAu
MDQpOworfQorCisubGVhcm4tYmFyID4gLmxlYXJuIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7
CisgICAgd2lkdGg6IDI3MnB4OworICAgIHRvcDogOHB4OworICAgIGxlZnQ6IC0zMDBweDsKKyAg
ICBwYWRkaW5nOiAxMHB4OworICAgIGJvcmRlci1yYWRpdXM6IDVweDsKKyAgICBiYWNrZ3JvdW5k
LWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIC42KTsKKyAgICB0cmFuc2l0aW9uLXByb3BlcnR5
OiBsZWZ0OworICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDUwMG1zOworfQorCitAbWVkaWEgKG1p
bi13aWR0aDogODk5cHgpIHsKKyAgICAubGVhcm4tYmFyIHsKKyAgICAgICAgd2lkdGg6IGF1dG87
CisgICAgICAgIHBhZGRpbmctbGVmdDogMzAwcHg7CisgICAgfQorCisgICAgLmxlYXJuLWJhciA+
IC5sZWFybiB7CisgICAgICAgIGxlZnQ6IDhweDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9hbmd1bGFyanMvbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jhc2UuanMgYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9hbmd1bGFyanMvbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jhc2UuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uODFlMDA2YmM1MDJkZGM0Yzc0ZjQ3YmQxM2E4MzkyMjc3ZjgzMGRiOAotLS0g
L2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ub2RlX21vZHVsZXMvdG9kb212
Yy1jb21tb24vYmFzZS5qcwpAQCAtMCwwICsxLDI0OSBAQAorLyogZ2xvYmFsIF8gKi8KKyhmdW5j
dGlvbiAoKSB7CisgICAgJ3VzZSBzdHJpY3QnOworCisgICAgLyoganNoaW50IGlnbm9yZTpzdGFy
dCAqLworICAgIC8vIFVuZGVyc2NvcmUncyBUZW1wbGF0ZSBNb2R1bGUKKyAgICAvLyBDb3VydGVz
eSBvZiB1bmRlcnNjb3JlanMub3JnCisgICAgdmFyIF8gPSAoZnVuY3Rpb24gKF8pIHsKKyAgICAg
ICAgXy5kZWZhdWx0cyA9IGZ1bmN0aW9uIChvYmplY3QpIHsKKyAgICAgICAgICAgIGlmICghb2Jq
ZWN0KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG9iamVjdDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGZvciAodmFyIGFyZ3NJbmRleCA9IDEsIGFyZ3NMZW5ndGggPSBhcmd1bWVudHMu
bGVuZ3RoOyBhcmdzSW5kZXggPCBhcmdzTGVuZ3RoOyBhcmdzSW5kZXgrKykgeworICAgICAgICAg
ICAgICAgIHZhciBpdGVyYWJsZSA9IGFyZ3VtZW50c1thcmdzSW5kZXhdOworICAgICAgICAgICAg
ICAgIGlmIChpdGVyYWJsZSkgeworICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4g
aXRlcmFibGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvYmplY3Rba2V5XSA9PSBu
dWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0W2tleV0gPSBpdGVyYWJs
ZVtrZXldOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG9i
amVjdDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEJ5IGRlZmF1bHQsIFVuZGVyc2NvcmUgdXNl
cyBFUkItc3R5bGUgdGVtcGxhdGUgZGVsaW1pdGVycywgY2hhbmdlIHRoZQorICAgICAgICAvLyBm
b2xsb3dpbmcgdGVtcGxhdGUgc2V0dGluZ3MgdG8gdXNlIGFsdGVybmF0aXZlIGRlbGltaXRlcnMu
CisgICAgICAgIF8udGVtcGxhdGVTZXR0aW5ncyA9IHsKKyAgICAgICAgICAgIGV2YWx1YXRlICAg
IDogLzwlKFtcc1xTXSs/KSU+L2csCisgICAgICAgICAgICBpbnRlcnBvbGF0ZSA6IC88JT0oW1xz
XFNdKz8pJT4vZywKKyAgICAgICAgICAgIGVzY2FwZSAgICAgIDogLzwlLShbXHNcU10rPyklPi9n
CisgICAgICAgIH07CisKKyAgICAgICAgLy8gV2hlbiBjdXN0b21pemluZyBgdGVtcGxhdGVTZXR0
aW5nc2AsIGlmIHlvdSBkb24ndCB3YW50IHRvIGRlZmluZSBhbgorICAgICAgICAvLyBpbnRlcnBv
bGF0aW9uLCBldmFsdWF0aW9uIG9yIGVzY2FwaW5nIHJlZ2V4LCB3ZSBuZWVkIG9uZSB0aGF0IGlz
CisgICAgICAgIC8vIGd1YXJhbnRlZWQgbm90IHRvIG1hdGNoLgorICAgICAgICB2YXIgbm9NYXRj
aCA9IC8oLileLzsKKworICAgICAgICAvLyBDZXJ0YWluIGNoYXJhY3RlcnMgbmVlZCB0byBiZSBl
c2NhcGVkIHNvIHRoYXQgdGhleSBjYW4gYmUgcHV0IGludG8gYQorICAgICAgICAvLyBzdHJpbmcg
bGl0ZXJhbC4KKyAgICAgICAgdmFyIGVzY2FwZXMgPSB7CisgICAgICAgICAgICAiJyI6ICAgICAg
IiciLAorICAgICAgICAgICAgJ1xcJzogICAgICdcXCcsCisgICAgICAgICAgICAnXHInOiAgICAg
J3InLAorICAgICAgICAgICAgJ1xuJzogICAgICduJywKKyAgICAgICAgICAgICdcdCc6ICAgICAn
dCcsCisgICAgICAgICAgICAnXHUyMDI4JzogJ3UyMDI4JywKKyAgICAgICAgICAgICdcdTIwMjkn
OiAndTIwMjknCisgICAgICAgIH07CisKKyAgICAgICAgdmFyIGVzY2FwZXIgPSAvXFx8J3xccnxc
bnxcdHxcdTIwMjh8XHUyMDI5L2c7CisKKyAgICAgICAgLy8gSmF2YVNjcmlwdCBtaWNyby10ZW1w
bGF0aW5nLCBzaW1pbGFyIHRvIEpvaG4gUmVzaWcncyBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAg
Ly8gVW5kZXJzY29yZSB0ZW1wbGF0aW5nIGhhbmRsZXMgYXJiaXRyYXJ5IGRlbGltaXRlcnMsIHBy
ZXNlcnZlcyB3aGl0ZXNwYWNlLAorICAgICAgICAvLyBhbmQgY29ycmVjdGx5IGVzY2FwZXMgcXVv
dGVzIHdpdGhpbiBpbnRlcnBvbGF0ZWQgY29kZS4KKyAgICAgICAgXy50ZW1wbGF0ZSA9IGZ1bmN0
aW9uKHRleHQsIGRhdGEsIHNldHRpbmdzKSB7CisgICAgICAgICAgICB2YXIgcmVuZGVyOworICAg
ICAgICAgICAgc2V0dGluZ3MgPSBfLmRlZmF1bHRzKHt9LCBzZXR0aW5ncywgXy50ZW1wbGF0ZVNl
dHRpbmdzKTsKKworICAgICAgICAgICAgLy8gQ29tYmluZSBkZWxpbWl0ZXJzIGludG8gb25lIHJl
Z3VsYXIgZXhwcmVzc2lvbiB2aWEgYWx0ZXJuYXRpb24uCisgICAgICAgICAgICB2YXIgbWF0Y2hl
ciA9IG5ldyBSZWdFeHAoWworICAgICAgICAgICAgICAgIChzZXR0aW5ncy5lc2NhcGUgfHwgbm9N
YXRjaCkuc291cmNlLAorICAgICAgICAgICAgICAgIChzZXR0aW5ncy5pbnRlcnBvbGF0ZSB8fCBu
b01hdGNoKS5zb3VyY2UsCisgICAgICAgICAgICAgICAgKHNldHRpbmdzLmV2YWx1YXRlIHx8IG5v
TWF0Y2gpLnNvdXJjZQorICAgICAgICAgICAgXS5qb2luKCd8JykgKyAnfCQnLCAnZycpOworCisg
ICAgICAgICAgICAvLyBDb21waWxlIHRoZSB0ZW1wbGF0ZSBzb3VyY2UsIGVzY2FwaW5nIHN0cmlu
ZyBsaXRlcmFscyBhcHByb3ByaWF0ZWx5LgorICAgICAgICAgICAgdmFyIGluZGV4ID0gMDsKKyAg
ICAgICAgICAgIHZhciBzb3VyY2UgPSAiX19wKz0nIjsKKyAgICAgICAgICAgIHRleHQucmVwbGFj
ZShtYXRjaGVyLCBmdW5jdGlvbihtYXRjaCwgZXNjYXBlLCBpbnRlcnBvbGF0ZSwgZXZhbHVhdGUs
IG9mZnNldCkgeworICAgICAgICAgICAgICAgIHNvdXJjZSArPSB0ZXh0LnNsaWNlKGluZGV4LCBv
ZmZzZXQpCisgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKGVzY2FwZXIsIGZ1bmN0aW9uKG1h
dGNoKSB7IHJldHVybiAnXFwnICsgZXNjYXBlc1ttYXRjaF07IH0pOworCisgICAgICAgICAgICAg
ICAgaWYgKGVzY2FwZSkgeworICAgICAgICAgICAgICAgICAgICBzb3VyY2UgKz0gIicrXG4oKF9f
dD0oIiArIGVzY2FwZSArICIpKT09bnVsbD8nJzpfLmVzY2FwZShfX3QpKStcbiciOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoaW50ZXJwb2xhdGUpIHsKKyAgICAgICAg
ICAgICAgICAgICAgc291cmNlICs9ICInK1xuKChfX3Q9KCIgKyBpbnRlcnBvbGF0ZSArICIpKT09
bnVsbD8nJzpfX3QpK1xuJyI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlm
IChldmFsdWF0ZSkgeworICAgICAgICAgICAgICAgICAgICBzb3VyY2UgKz0gIic7XG4iICsgZXZh
bHVhdGUgKyAiXG5fX3ArPSciOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBp
bmRleCA9IG9mZnNldCArIG1hdGNoLmxlbmd0aDsKKyAgICAgICAgICAgICAgICByZXR1cm4gbWF0
Y2g7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHNvdXJjZSArPSAiJztcbiI7CisKKyAg
ICAgICAgICAgIC8vIElmIGEgdmFyaWFibGUgaXMgbm90IHNwZWNpZmllZCwgcGxhY2UgZGF0YSB2
YWx1ZXMgaW4gbG9jYWwgc2NvcGUuCisgICAgICAgICAgICBpZiAoIXNldHRpbmdzLnZhcmlhYmxl
KSBzb3VyY2UgPSAnd2l0aChvYmp8fHt9KXtcbicgKyBzb3VyY2UgKyAnfVxuJzsKKworICAgICAg
ICAgICAgc291cmNlID0gInZhciBfX3QsX19wPScnLF9faj1BcnJheS5wcm90b3R5cGUuam9pbiwi
ICsKKyAgICAgICAgICAgICAgICAicHJpbnQ9ZnVuY3Rpb24oKXtfX3ArPV9fai5jYWxsKGFyZ3Vt
ZW50cywnJyk7fTtcbiIgKworICAgICAgICAgICAgICAgIHNvdXJjZSArICJyZXR1cm4gX19wO1xu
IjsKKworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICByZW5kZXIgPSBuZXcgRnVu
Y3Rpb24oc2V0dGluZ3MudmFyaWFibGUgfHwgJ29iaicsICdfJywgc291cmNlKTsKKyAgICAgICAg
ICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgICAgICBlLnNvdXJjZSA9IHNvdXJjZTsKKyAg
ICAgICAgICAgICAgICB0aHJvdyBlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAo
ZGF0YSkgcmV0dXJuIHJlbmRlcihkYXRhLCBfKTsKKyAgICAgICAgICAgIHZhciB0ZW1wbGF0ZSA9
IGZ1bmN0aW9uKGRhdGEpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVuZGVyLmNhbGwodGhp
cywgZGF0YSwgXyk7CisgICAgICAgICAgICB9OworCisgICAgICAgICAgICAvLyBQcm92aWRlIHRo
ZSBjb21waWxlZCBmdW5jdGlvbiBzb3VyY2UgYXMgYSBjb252ZW5pZW5jZSBmb3IgcHJlY29tcGls
YXRpb24uCisgICAgICAgICAgICB0ZW1wbGF0ZS5zb3VyY2UgPSAnZnVuY3Rpb24oJyArIChzZXR0
aW5ncy52YXJpYWJsZSB8fCAnb2JqJykgKyAnKXtcbicgKyBzb3VyY2UgKyAnfSc7CisKKyAgICAg
ICAgICAgIHJldHVybiB0ZW1wbGF0ZTsKKyAgICAgICAgfTsKKworICAgICAgICByZXR1cm4gXzsK
KyAgICB9KSh7fSk7CisKKyAgICBpZiAobG9jYXRpb24uaG9zdG5hbWUgPT09ICd0b2RvbXZjLmNv
bScpIHsKKyAgICAgICAgKGZ1bmN0aW9uKGkscyxvLGcscixhLG0pe2lbJ0dvb2dsZUFuYWx5dGlj
c09iamVjdCddPXI7aVtyXT1pW3JdfHxmdW5jdGlvbigpeworICAgICAgICAoaVtyXS5xPWlbcl0u
cXx8W10pLnB1c2goYXJndW1lbnRzKX0saVtyXS5sPTEqbmV3IERhdGUoKTthPXMuY3JlYXRlRWxl
bWVudChvKSwKKyAgICAgICAgbT1zLmdldEVsZW1lbnRzQnlUYWdOYW1lKG8pWzBdO2EuYXN5bmM9
MTthLnNyYz1nO20ucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSxtKQorICAgICAgICB9KSh3aW5k
b3csZG9jdW1lbnQsJ3NjcmlwdCcsJ2h0dHBzOi8vd3d3Lmdvb2dsZS1hbmFseXRpY3MuY29tL2Fu
YWx5dGljcy5qcycsJ2dhJyk7CisgICAgICAgIGdhKCdjcmVhdGUnLCAnVUEtMzEwODEwNjItMScs
ICdhdXRvJyk7CisgICAgICAgIGdhKCdzZW5kJywgJ3BhZ2V2aWV3Jyk7CisgICAgfQorICAgIC8q
IGpzaGludCBpZ25vcmU6ZW5kICovCisKKyAgICBmdW5jdGlvbiByZWRpcmVjdCgpIHsKKyAgICAg
ICAgaWYgKGxvY2F0aW9uLmhvc3RuYW1lID09PSAndGFzdGVqcy5naXRodWIuaW8nKSB7CisgICAg
ICAgICAgICBsb2NhdGlvbi5ocmVmID0gbG9jYXRpb24uaHJlZi5yZXBsYWNlKCd0YXN0ZWpzLmdp
dGh1Yi5pby90b2RvbXZjJywgJ3RvZG9tdmMuY29tJyk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBmdW5jdGlvbiBmaW5kUm9vdCgpIHsKKyAgICAgICAgdmFyIGJhc2UgPSBsb2NhdGlvbi5ocmVm
LmluZGV4T2YoJ2V4YW1wbGVzLycpOworICAgICAgICByZXR1cm4gbG9jYXRpb24uaHJlZi5zdWJz
dHIoMCwgYmFzZSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gZ2V0RmlsZShmaWxlLCBjYWxsYmFj
aykgeworICAgICAgICBpZiAoIWxvY2F0aW9uLmhvc3QpIHsKKyAgICAgICAgICAgIHJldHVybiBj
b25zb2xlLmluZm8oJ01pc3MgdGhlIGluZm8gYmFyPyBSdW4gVG9kb01WQyBmcm9tIGEgc2VydmVy
IHRvIGF2b2lkIGEgY3Jvc3Mtb3JpZ2luIGVycm9yLicpOworICAgICAgICB9CisKKyAgICAgICAg
dmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworCisgICAgICAgIHhoci5vcGVuKCdHRVQn
LCBmaW5kUm9vdCgpICsgZmlsZSwgdHJ1ZSk7CisgICAgICAgIHhoci5zZW5kKCk7CisKKyAgICAg
ICAgeGhyLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGlmICh4aHIuc3RhdHVz
ID09PSAyMDAgJiYgY2FsbGJhY2spIHsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayh4aHIucmVz
cG9uc2VUZXh0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9CisKKyAgICBmdW5j
dGlvbiBMZWFybihsZWFybkpTT04sIGNvbmZpZykgeworICAgICAgICBpZiAoISh0aGlzIGluc3Rh
bmNlb2YgTGVhcm4pKSB7CisgICAgICAgICAgICByZXR1cm4gbmV3IExlYXJuKGxlYXJuSlNPTiwg
Y29uZmlnKTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciB0ZW1wbGF0ZSwgZnJhbWV3b3JrOwor
CisgICAgICAgIGlmICh0eXBlb2YgbGVhcm5KU09OICE9PSAnb2JqZWN0JykgeworICAgICAgICAg
ICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBsZWFybkpTT04gPSBKU09OLnBhcnNlKGxlYXJuSlNP
Tik7CisgICAgICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKGNvbmZpZykgeworICAgICAg
ICAgICAgdGVtcGxhdGUgPSBjb25maWcudGVtcGxhdGU7CisgICAgICAgICAgICBmcmFtZXdvcmsg
PSBjb25maWcuZnJhbWV3b3JrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0ZW1wbGF0ZSAm
JiBsZWFybkpTT04udGVtcGxhdGVzKSB7CisgICAgICAgICAgICB0ZW1wbGF0ZSA9IGxlYXJuSlNP
Ti50ZW1wbGF0ZXMudG9kb212YzsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghZnJhbWV3b3Jr
ICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLWZyYW1ld29ya10nKSkgeworICAgICAg
ICAgICAgZnJhbWV3b3JrID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW2RhdGEtZnJhbWV3b3Jr
XScpLmRhdGFzZXQuZnJhbWV3b3JrOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy50ZW1wbGF0
ZSA9IHRlbXBsYXRlOworCisgICAgICAgIGlmIChsZWFybkpTT04uYmFja2VuZCkgeworICAgICAg
ICAgICAgdGhpcy5mcmFtZXdvcmtKU09OID0gbGVhcm5KU09OLmJhY2tlbmQ7CisgICAgICAgICAg
ICB0aGlzLmZyYW1ld29ya0pTT04uaXNzdWVMYWJlbCA9IGZyYW1ld29yazsKKyAgICAgICAgICAg
IHRoaXMuYXBwZW5kKHsKKyAgICAgICAgICAgICAgICBiYWNrZW5kOiB0cnVlCisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfSBlbHNlIGlmIChsZWFybkpTT05bZnJhbWV3b3JrXSkgeworICAgICAg
ICAgICAgdGhpcy5mcmFtZXdvcmtKU09OID0gbGVhcm5KU09OW2ZyYW1ld29ya107CisgICAgICAg
ICAgICB0aGlzLmZyYW1ld29ya0pTT04uaXNzdWVMYWJlbCA9IGZyYW1ld29yazsKKyAgICAgICAg
ICAgIHRoaXMuYXBwZW5kKCk7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLmZldGNoSXNzdWVD
b3VudCgpOworICAgIH0KKworICAgIExlYXJuLnByb3RvdHlwZS5hcHBlbmQgPSBmdW5jdGlvbiAo
b3B0cykgeworICAgICAgICB2YXIgYXNpZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhc2lk
ZScpOworICAgICAgICBhc2lkZS5pbm5lckhUTUwgPSBfLnRlbXBsYXRlKHRoaXMudGVtcGxhdGUs
IHRoaXMuZnJhbWV3b3JrSlNPTik7CisgICAgICAgIGFzaWRlLmNsYXNzTmFtZSA9ICdsZWFybic7
CisKKyAgICAgICAgaWYgKG9wdHMgJiYgb3B0cy5iYWNrZW5kKSB7CisgICAgICAgICAgICAvLyBS
ZW1vdmUgZGVtbyBsaW5rCisgICAgICAgICAgICB2YXIgc291cmNlTGlua3MgPSBhc2lkZS5xdWVy
eVNlbGVjdG9yKCcuc291cmNlLWxpbmtzJyk7CisgICAgICAgICAgICB2YXIgaGVhZGluZyA9IHNv
dXJjZUxpbmtzLmZpcnN0RWxlbWVudENoaWxkOworICAgICAgICAgICAgdmFyIHNvdXJjZUxpbmsg
PSBzb3VyY2VMaW5rcy5sYXN0RWxlbWVudENoaWxkOworICAgICAgICAgICAgLy8gQ29ycmVjdCBs
aW5rIHBhdGgKKyAgICAgICAgICAgIHZhciBocmVmID0gc291cmNlTGluay5nZXRBdHRyaWJ1dGUo
J2hyZWYnKTsKKyAgICAgICAgICAgIHNvdXJjZUxpbmsuc2V0QXR0cmlidXRlKCdocmVmJywgaHJl
Zi5zdWJzdHIoaHJlZi5sYXN0SW5kZXhPZignaHR0cCcpKSk7CisgICAgICAgICAgICBzb3VyY2VM
aW5rcy5pbm5lckhUTUwgPSBoZWFkaW5nLm91dGVySFRNTCArIHNvdXJjZUxpbmsub3V0ZXJIVE1M
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gTG9jYWxpemUgZGVtbyBsaW5rcwor
ICAgICAgICAgICAgdmFyIGRlbW9MaW5rcyA9IGFzaWRlLnF1ZXJ5U2VsZWN0b3JBbGwoJy5kZW1v
LWxpbmsnKTsKKyAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoZGVtb0xp
bmtzLCBmdW5jdGlvbiAoZGVtb0xpbmspIHsKKyAgICAgICAgICAgICAgICBpZiAoZGVtb0xpbmsu
Z2V0QXR0cmlidXRlKCdocmVmJykuc3Vic3RyKDAsIDQpICE9PSAnaHR0cCcpIHsKKyAgICAgICAg
ICAgICAgICAgICAgZGVtb0xpbmsuc2V0QXR0cmlidXRlKCdocmVmJywgZmluZFJvb3QoKSArIGRl
bW9MaW5rLmdldEF0dHJpYnV0ZSgnaHJlZicpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NOYW1lID0g
KGRvY3VtZW50LmJvZHkuY2xhc3NOYW1lICsgJyBsZWFybi1iYXInKS50cmltKCk7CisgICAgICAg
IGRvY3VtZW50LmJvZHkuaW5zZXJ0QWRqYWNlbnRIVE1MKCdhZnRlckJlZ2luJywgYXNpZGUub3V0
ZXJIVE1MKTsKKyAgICB9OworCisgICAgTGVhcm4ucHJvdG90eXBlLmZldGNoSXNzdWVDb3VudCA9
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdmFyIGlzc3VlTGluayA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdpc3N1ZS1jb3VudC1saW5rJyk7CisgICAgICAgIGlmIChpc3N1ZUxpbmspIHsKKyAg
ICAgICAgICAgIHZhciB1cmwgPSBpc3N1ZUxpbmsuaHJlZi5yZXBsYWNlKCdodHRwczovL2dpdGh1
Yi5jb20nLCAnaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcycpOworICAgICAgICAgICAgdmFy
IHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworICAgICAgICAgICAgeGhyLm9wZW4oJ0dFVCcs
IHVybCwgdHJ1ZSk7CisgICAgICAgICAgICB4aHIub25sb2FkID0gZnVuY3Rpb24gKGUpIHsKKyAg
ICAgICAgICAgICAgICB2YXIgcGFyc2VkUmVzcG9uc2UgPSBKU09OLnBhcnNlKGUudGFyZ2V0LnJl
c3BvbnNlVGV4dCk7CisgICAgICAgICAgICAgICAgaWYgKHBhcnNlZFJlc3BvbnNlIGluc3RhbmNl
b2YgQXJyYXkpIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGNvdW50ID0gcGFyc2VkUmVzcG9u
c2UubGVuZ3RoOworICAgICAgICAgICAgICAgICAgICBpZiAoY291bnQgIT09IDApIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlzc3VlTGluay5pbm5lckhUTUwgPSAnVGhpcyBhcHAgaGFzICcg
KyBjb3VudCArICcgb3BlbiBpc3N1ZXMnOworICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2lzc3VlLWNvdW50Jykuc3R5bGUuZGlzcGxheSA9ICdpbmxpbmUn
OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fTsKKyAgICAgICAgICAgIHhoci5zZW5kKCk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgcmVk
aXJlY3QoKTsKKyAgICBnZXRGaWxlKCdsZWFybi5qc29uJywgTGVhcm4pOworfSkoKTsKZGlmZiAt
LWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9ub2RlX21vZHVsZXMvdG9kb212Yy1jb21tb24v
cGFja2FnZS5qc29uIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL25vZGVfbW9kdWxlcy90b2RvbXZj
LWNvbW1vbi9wYWNrYWdlLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGU2YWNjZTU0Njg0ZGIyNTZkNzA3YjQ3
ZWQ4ODQ1YjhmZjRhZDM4YgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJq
cy9ub2RlX21vZHVsZXMvdG9kb212Yy1jb21tb24vcGFja2FnZS5qc29uCkBAIC0wLDAgKzEsMTA0
IEBACit7CisgICJfYXJncyI6IFsKKyAgICBbCisgICAgICB7CisgICAgICAgICJyYXciOiAidG9k
b212Yy1jb21tb25AXjEuMC4wIiwKKyAgICAgICAgInNjb3BlIjogbnVsbCwKKyAgICAgICAgImVz
Y2FwZWROYW1lIjogInRvZG9tdmMtY29tbW9uIiwKKyAgICAgICAgIm5hbWUiOiAidG9kb212Yy1j
b21tb24iLAorICAgICAgICAicmF3U3BlYyI6ICJeMS4wLjAiLAorICAgICAgICAic3BlYyI6ICI+
PTEuMC4wIDwyLjAuMCIsCisgICAgICAgICJ0eXBlIjogInJhbmdlIgorICAgICAgfSwKKyAgICAg
ICIvVXNlcnMvYWRkeW8vcHJvamVjdHMvc3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcyIKKyAgICBdCisgIF0sCisgICJfZnJvbSI6ICJ0
b2RvbXZjLWNvbW1vbkA+PTEuMC4wIDwyLjAuMCIsCisgICJfaWQiOiAidG9kb212Yy1jb21tb25A
MS4wLjMiLAorICAiX2luQ2FjaGUiOiB0cnVlLAorICAiX2xvY2F0aW9uIjogIi90b2RvbXZjLWNv
bW1vbiIsCisgICJfbm9kZVZlcnNpb24iOiAiNy4xLjAiLAorICAiX25wbU9wZXJhdGlvbmFsSW50
ZXJuYWwiOiB7CisgICAgImhvc3QiOiAicGFja2FnZXMtMTgtZWFzdC5pbnRlcm5hbC5ucG1qcy5j
b20iLAorICAgICJ0bXAiOiAidG1wL3RvZG9tdmMtY29tbW9uLTEuMC4zLnRnel8xNDc5Mjc2MzYx
MjI3XzAuNTExMjQ4ODAxMzY5MjIiCisgIH0sCisgICJfbnBtVXNlciI6IHsKKyAgICAibmFtZSI6
ICJzaW5kcmVzb3JodXMiLAorICAgICJlbWFpbCI6ICJzaW5kcmVzb3JodXNAZ21haWwuY29tIgor
ICB9LAorICAiX25wbVZlcnNpb24iOiAiMy4xMC45IiwKKyAgIl9waGFudG9tQ2hpbGRyZW4iOiB7
fSwKKyAgIl9yZXF1ZXN0ZWQiOiB7CisgICAgInJhdyI6ICJ0b2RvbXZjLWNvbW1vbkBeMS4wLjAi
LAorICAgICJzY29wZSI6IG51bGwsCisgICAgImVzY2FwZWROYW1lIjogInRvZG9tdmMtY29tbW9u
IiwKKyAgICAibmFtZSI6ICJ0b2RvbXZjLWNvbW1vbiIsCisgICAgInJhd1NwZWMiOiAiXjEuMC4w
IiwKKyAgICAic3BlYyI6ICI+PTEuMC4wIDwyLjAuMCIsCisgICAgInR5cGUiOiAicmFuZ2UiCisg
IH0sCisgICJfcmVxdWlyZWRCeSI6IFsKKyAgICAiLyIKKyAgXSwKKyAgIl9yZXNvbHZlZCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy90b2RvbXZjLWNvbW1vbi8tL3RvZG9tdmMtY29tbW9u
LTEuMC4zLnRneiIsCisgICJfc2hhc3VtIjogImNiYTE4NjgxMDljYWE0MDFiOTA4ZWJmNzc3OTRj
YzEwMTRiNzQ4NzMiLAorICAiX3Nocmlua3dyYXAiOiBudWxsLAorICAiX3NwZWMiOiAidG9kb212
Yy1jb21tb25AXjEuMC4wIiwKKyAgIl93aGVyZSI6ICIvVXNlcnMvYWRkeW8vcHJvamVjdHMvc3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJq
cyIsCisgICJhdXRob3IiOiB7CisgICAgIm5hbWUiOiAiVGFzdGVKUyIKKyAgfSwKKyAgImJ1Z3Mi
OiB7CisgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vdGFzdGVqcy90b2RvbXZjLWNvbW1v
bi9pc3N1ZXMiCisgIH0sCisgICJkZXBlbmRlbmNpZXMiOiB7fSwKKyAgImRlc2NyaXB0aW9uIjog
IkNvbW1vbiBUb2RvTVZDIHV0aWxpdGllcyB1c2VkIGJ5IG91ciBhcHBzIiwKKyAgImRldkRlcGVu
ZGVuY2llcyI6IHt9LAorICAiZGlyZWN0b3JpZXMiOiB7fSwKKyAgImRpc3QiOiB7CisgICAgInNo
YXN1bSI6ICJjYmExODY4MTA5Y2FhNDAxYjkwOGViZjc3Nzk0Y2MxMDE0Yjc0ODczIiwKKyAgICAi
dGFyYmFsbCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy90b2RvbXZjLWNvbW1vbi8tL3Rv
ZG9tdmMtY29tbW9uLTEuMC4zLnRneiIKKyAgfSwKKyAgImZpbGVzIjogWworICAgICJiYXNlLmpz
IiwKKyAgICAiYmFzZS5jc3MiCisgIF0sCisgICJnaXRIZWFkIjogImU3NDI1YmFmYjk1NjFkNzY2
Yjc2OTg0NDgxMGUwNDk2NzM0ZmZlOGMiLAorICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIu
Y29tL3Rhc3RlanMvdG9kb212Yy1jb21tb24jcmVhZG1lIiwKKyAgImtleXdvcmRzIjogWworICAg
ICJ0b2RvbXZjIiwKKyAgICAidGFzdGVqcyIsCisgICAgInV0aWwiLAorICAgICJ1dGlsaXRpZXMi
CisgIF0sCisgICJsaWNlbnNlIjogIk1JVCIsCisgICJtYWluIjogImJhc2UuanMiLAorICAibWFp
bnRhaW5lcnMiOiBbCisgICAgeworICAgICAgIm5hbWUiOiAic2luZHJlc29yaHVzIiwKKyAgICAg
ICJlbWFpbCI6ICJzaW5kcmVzb3JodXNAZ21haWwuY29tIgorICAgIH0sCisgICAgeworICAgICAg
Im5hbWUiOiAiYWRkeW9zbWFuaSIsCisgICAgICAiZW1haWwiOiAiYWRkeW9zbWFuaUBnbWFpbC5j
b20iCisgICAgfSwKKyAgICB7CisgICAgICAibmFtZSI6ICJwYXNzeSIsCisgICAgICAiZW1haWwi
OiAicGhhcnRpZ0ByZHJlaS5uZXQiCisgICAgfSwKKyAgICB7CisgICAgICAibmFtZSI6ICJzdGVw
aGVucGx1c3BsdXMiLAorICAgICAgImVtYWlsIjogInNhd2NodWtAZ21haWwuY29tIgorICAgIH0K
KyAgXSwKKyAgIm5hbWUiOiAidG9kb212Yy1jb21tb24iLAorICAib3B0aW9uYWxEZXBlbmRlbmNp
ZXMiOiB7fSwKKyAgInJlYWRtZSI6ICJFUlJPUjogTm8gUkVBRE1FIGRhdGEgZm91bmQhIiwKKyAg
InJlcG9zaXRvcnkiOiB7CisgICAgInR5cGUiOiAiZ2l0IiwKKyAgICAidXJsIjogImdpdCtodHRw
czovL2dpdGh1Yi5jb20vdGFzdGVqcy90b2RvbXZjLWNvbW1vbi5naXQiCisgIH0sCisgICJzY3Jp
cHRzIjoge30sCisgICJzdHlsZSI6ICJiYXNlLmNzcyIsCisgICJ2ZXJzaW9uIjogIjEuMC4zIgor
fQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL25vZGVfbW9kdWxlcy90b2RvbXZj
LWNvbW1vbi9yZWFkbWUubWQgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvbm9kZV9tb2R1bGVzL3Rv
ZG9tdmMtY29tbW9uL3JlYWRtZS5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YTVkZTUxMThmM2ZjNzc1OGU4ZGRj
MGE2ODY4NzQ5Y2VlOWNhZjk1Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxh
cmpzL25vZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1vbi9yZWFkbWUubWQKQEAgLTAsMCArMSwxNSBA
QAorIyB0b2RvbXZjLWNvbW1vbgorCis+IENvbW1vbiBUb2RvTVZDIHV0aWxpdGllcyB1c2VkIGJ5
IG91ciBhcHBzCisKKworIyMgSW5zdGFsbAorCitgYGAKKyQgbnBtIGluc3RhbGwgLS1zYXZlIHRv
ZG9tdmMtY29tbW9uCitgYGAKKworCisjIyBMaWNlbnNlCisKK01JVCDCqSBbVGFzdGVKU10oaHR0
cDovL3Rhc3RlanMuY29tKQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL3BhY2th
Z2UuanNvbiBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9wYWNrYWdlLmpzb24KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OTkyOGQ4OGI0NmMxOWIzZDMwYTk4YjFmYjI4NTA5NzMzNDc3N2UyZQotLS0gL2Rldi9udWxsCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9wYWNrYWdlLmpzb24KQEAgLTAsMCArMSwxNyBAQAor
eworICAicHJpdmF0ZSI6IHRydWUsCisgICJzY3JpcHRzIjogeworICAgICJ0ZXN0IjogImthcm1h
IHN0YXJ0IHRlc3QvY29uZmlnL2thcm1hLmNvbmYuanMiCisgIH0sCisgICJkZXBlbmRlbmNpZXMi
OiB7CisgICAgImFuZ3VsYXIiOiAiXjEuNC4zIiwKKyAgICAiYW5ndWxhci1yZXNvdXJjZSI6ICJe
MS41LjkiLAorICAgICJhbmd1bGFyLXJvdXRlIjogIl4xLjUuOSIsCisgICAgInRvZG9tdmMtYXBw
LWNzcyI6ICJeMS4wLjEiLAorICAgICJ0b2RvbXZjLWNvbW1vbiI6ICJeMS4wLjAiCisgIH0sCisg
ICJkZXZEZXBlbmRlbmNpZXMiOiB7CisgICAgImFuZ3VsYXItbW9ja3MiOiAiXjEuMy4xMiIsCisg
ICAgImthcm1hIjogIl4xLjMuMCIKKyAgfQorfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5n
dWxhcmpzL3JlYWRtZS5tZCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9yZWFkbWUubWQKaW5kZXgg
ZDczMDcxMzExNWMyYThhODg2MGI4ZThkYzI3ZTgyNWZmODI5ZGZlZC4uOTZhOGNhMWI2OTAyNzJh
OTU5YzhiNzdhZTAyNjE2YWU5MjE5NWY2YSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxh
cmpzL3JlYWRtZS5tZAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvcmVhZG1lLm1kCkBAIC0x
MywxNCArMTMsMTQgQEAgSGVyZSBhcmUgc29tZSBsaW5rcyB5b3UgbWF5IGZpbmQgaGVscGZ1bDoK
ICogW1R1dG9yaWFsXShodHRwOi8vZG9jcy5hbmd1bGFyanMub3JnL3R1dG9yaWFsKQogKiBbQVBJ
IFJlZmVyZW5jZV0oaHR0cDovL2RvY3MuYW5ndWxhcmpzLm9yZy9hcGkpCiAqIFtEZXZlbG9wZXIg
R3VpZGVdKGh0dHA6Ly9kb2NzLmFuZ3VsYXJqcy5vcmcvZ3VpZGUpCi0qIFtBcHBsaWNhdGlvbnMg
YnVpbHQgd2l0aCBBbmd1bGFySlNdKGh0dHA6Ly9idWlsdHdpdGguYW5ndWxhcmpzLm9yZykKKyog
W0FwcGxpY2F0aW9ucyBidWlsdCB3aXRoIEFuZ3VsYXJKU10oaHR0cHM6Ly93d3cubWFkZXdpdGhh
bmd1bGFyLmNvbS8pCiAqIFtCbG9nXShodHRwOi8vYmxvZy5hbmd1bGFyanMub3JnKQogKiBbRkFR
XShodHRwOi8vZG9jcy5hbmd1bGFyanMub3JnL21pc2MvZmFxKQogKiBbQW5ndWxhckpTIE1lZXR1
cHNdKGh0dHA6Ly93d3cueW91dHViZS5jb20vYW5ndWxhcmpzKQogCiBBcnRpY2xlcyBhbmQgZ3Vp
ZGVzIGZyb20gdGhlIGNvbW11bml0eToKIAotKiBbQ29kZSBTY2hvb2wgQW5ndWxhckpTIGNvdXJz
ZV0oaHR0cDovL3d3dy5jb2Rlc2Nob29sLmNvbS9jb2RlX3R2L2FuZ3VsYXJqcy1wYXJ0LTEpCisq
IFtDb2RlIFNjaG9vbCBBbmd1bGFySlMgY291cnNlXShodHRwczovL3d3dy5jb2Rlc2Nob29sLmNv
bS9jb3Vyc2VzL3NoYXBpbmctdXAtd2l0aC1hbmd1bGFyLWpzKQogKiBbNSBBd2Vzb21lIEFuZ3Vs
YXJKUyBGZWF0dXJlc10oaHR0cDovL25ldC50dXRzcGx1cy5jb20vdHV0b3JpYWxzL2phdmFzY3Jp
cHQtYWpheC81LWF3ZXNvbWUtYW5ndWxhcmpzLWZlYXR1cmVzKQogKiBbVXNpbmcgWWVvbWFuIHdp
dGggQW5ndWxhckpTXShodHRwOi8vYnJpYW50Zm9yZC5jb20vYmxvZy9hbmd1bGFyLXllb21hbi5o
dG1sKQogKiBbbWUmbmd1bGFyIC0gYW4gaW50cm9kdWN0aW9uIHRvIE1WV10oaHR0cDovL3N0ZXBo
ZW5wbHVzcGx1cy5naXRodWIuaW8vbWVhbmd1bGFyKQpAQCAtMzQsMyArMzQsMTIgQEAgR2V0IGhl
bHAgZnJvbSBvdGhlciBBbmd1bGFySlMgdXNlcnM6CiAqIFtBbmd1bGFyalMgb24gR29vZ2xlICtd
KGh0dHBzOi8vcGx1cy5nb29nbGUuY29tLytBbmd1bGFySlMvcG9zdHMpCiAKIF9JZiB5b3UgaGF2
ZSBvdGhlciBoZWxwZnVsIGxpbmtzIHRvIHNoYXJlLCBvciBmaW5kIGFueSBvZiB0aGUgbGlua3Mg
YWJvdmUgbm8gbG9uZ2VyIHdvcmssIHBsZWFzZSBbbGV0IHVzIGtub3ddKGh0dHBzOi8vZ2l0aHVi
LmNvbS90YXN0ZWpzL3RvZG9tdmMvaXNzdWVzKS5fCisKKyMjIFRlc3RzdWl0ZQorCitUaGUgYXBw
IHVzZXMgW0thcm1hXShodHRwOi8va2FybWEtcnVubmVyLmdpdGh1Yi5pby8wLjEyL2luZGV4Lmh0
bWwpIHRvIHJ1biB0aGUgdGVzdHMgbG9jYXRlZCBpbiB0aGUgYHRlc3QvYCBmb2xkZXIuIFRvIHJ1
biB0aGUgdGVzdHM6CisKK2BgYAorJCBucG0gaW5zdGFsbAorJCBucG0gdGVzdAorYGBgCmRpZmYg
LS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvdGVzdC9jb25maWcva2FybWEuY29uZi5qcyBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy90ZXN0L2NvbmZpZy9rYXJtYS5jb25mLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjBlY2ZkZmFiNTNiMzUyM2ZmMzk3NTY0MTUyYmQzNWFmODcwMTQ5ZWUKLS0tIC9kZXYvbnVs
bAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvdGVzdC9jb25maWcva2FybWEuY29uZi5qcwpA
QCAtMCwwICsxLDE4IEBACittb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChjb25maWcpIHsKKyAg
ICAndXNlIHN0cmljdCc7CisKKyAgICBjb25maWcuc2V0KHsKKyAgICAgICAgYmFzZVBhdGg6ICcu
Li8uLi8nLAorICAgICAgICBmcmFtZXdvcmtzOiBbJ2phc21pbmUnXSwKKyAgICAgICAgZmlsZXM6
IFsKKyAgICAgICAgICAgICdub2RlX21vZHVsZXMvYW5ndWxhci9hbmd1bGFyLmpzJywKKyAgICAg
ICAgICAgICdub2RlX21vZHVsZXMvYW5ndWxhci1yb3V0ZS9hbmd1bGFyLXJvdXRlLmpzJywKKyAg
ICAgICAgICAgICdub2RlX21vZHVsZXMvYW5ndWxhci1tb2Nrcy9hbmd1bGFyLW1vY2tzLmpzJywK
KyAgICAgICAgICAgICdqcy8qKi8qLmpzJywKKyAgICAgICAgICAgICd0ZXN0L3VuaXQvKiovKi5q
cycKKyAgICAgICAgXSwKKyAgICAgICAgYXV0b1dhdGNoOiB0cnVlLAorICAgICAgICBzaW5nbGVS
dW46IGZhbHNlLAorICAgICAgICBicm93c2VyczogWydDaHJvbWUnLCAnRmlyZWZveCddCisgICAg
fSk7Cit9OwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL3Rlc3QvY29uZmlnL3Rl
c3RhY3VsYXIuY29uZi5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy90ZXN0L2NvbmZpZy90ZXN0
YWN1bGFyLmNvbmYuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiNDBhNzE5N2Q4
Y2E5MWNhYmNlOWMyMGIxMTFiYTRiMGUyNjUwOGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL3Rlc3QvY29uZmlnL3Rl
c3RhY3VsYXIuY29uZi5qcworKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLWJhc2VQYXRo
ID0gJy4uLy4uLyc7Ci0KLWZpbGVzID0gWwotICBKQVNNSU5FLAotICBKQVNNSU5FX0FEQVBURVIs
Ci0gICdib3dlcl9jb21wb25lbnRzL2FuZ3VsYXIvYW5ndWxhci5qcycsCi0gICdib3dlcl9jb21w
b25lbnRzL2FuZ3VsYXItbW9ja3MvYW5ndWxhci1tb2Nrcy5qcycsCi0gICdqcy8qKi8qLmpzJywK
LSAgJ3Rlc3QvdW5pdC8qKi8qLmpzJwotXTsKLQotYXV0b1dhdGNoID0gdHJ1ZTsKLQotYnJvd3Nl
cnMgPSBbJ0Nocm9tZSddOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL3Rlc3Qv
cGFja2FnZS5qc29uIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL3Rlc3QvcGFja2FnZS5qc29uCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYzViMmU5YjhmNjM2MmI3MzgwZjM1MGEyZTcw
N2EwMjVhZTE1MWUzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy90ZXN0L3BhY2thZ2UuanNvbgorKysgL2Rldi9udWxs
CkBAIC0xLDEzICswLDAgQEAKLXsKLSAgIm5hbWUiOiAidG9kb212Yy1hbmd1bGFyLXRlc3RzIiwK
LSAgImRlc2NyaXB0aW9uIjogIlVuaXQgdGVzdHMgZm9yIHRoZSBBbmd1bGFySlMgZXhhbXBsZSBv
ZiBUb2RvTVZDIiwKLSAgImF1dGhvciI6ICJQYXNjYWwgSGFydGlnIDxwaGFydGlnQHJkcmVpLm5l
dD4iLAotICAidmVyc2lvbiI6ICIxLjAuMCIsCi0gICJkZXZEZXBlbmRlbmNpZXMiOiB7Ci0gICAg
Imthcm1hIjogIn4wLjguNSIKLSAgfSwKLSAgInNjcmlwdHMiOiB7Ci0gICAgInRlc3QiOiAia2Fy
bWEgc3RhcnQgY29uZmlnL3Rlc3RhY3VsYXIuY29uZi5qcyIKLSAgfSwKLSAgImRlcGVuZGVuY2ll
cyI6IHt9Ci19CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvdGVzdC9yZWFkbWUu
bWQgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvdGVzdC9yZWFkbWUubWQKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDQwOWQ0N2NiOGUyZWU2N2Q0ZWI1NzdjYWFlNWM2NWFkZDdjMTM1Mzku
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvYW5ndWxhcmpzL3Rlc3QvcmVhZG1lLm1kCisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBA
Ci1Bbmd1bGFyIFVuaXQgVGVzdHMKLT09PT09PT09PT09PT09PT09PQotCi1UbyBydW4gdGhlIHRl
c3Qgc3VpdGUsIHJ1biB0aGVzZSBjb21tYW5kczoKLQotICAgIG5wbSBpbnN0YWxsCi0gICAgbnBt
IHRlc3QKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy90ZXN0L3VuaXQvZGlyZWN0
aXZlc1NwZWMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvdGVzdC91bml0L2RpcmVjdGl2ZXNT
cGVjLmpzCmluZGV4IGRiYjM4ZTZjNzhjMTg3OGRlMjRjOGNhYWZjYjdlZmNkMjVkNDIxOTEuLjI1
MTM2Y2M0OGYwNzhiZmVlMTdlYzVjNDQ4YzViOWUzYjIzYjFhZTggMTAwNjQ0Ci0tLSBhL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2FuZ3VsYXJqcy90ZXN0L3VuaXQvZGlyZWN0aXZlc1NwZWMuanMKKysrIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvYW5ndWxhcmpzL3Rlc3QvdW5pdC9kaXJlY3RpdmVzU3BlYy5qcwpAQCAtNCw1MyArNCwy
NyBAQAogCiAgICAgYmVmb3JlRWFjaChtb2R1bGUoJ3RvZG9tdmMnKSk7CiAKLSAgICBkZXNjcmli
ZSgndG9kb0JsdXIgZGlyZWN0aXZlJywgZnVuY3Rpb24gKCkgewotICAgIHZhciBzY29wZSwgY29t
cGlsZTsKLQotICAgIGJlZm9yZUVhY2goaW5qZWN0KGZ1bmN0aW9uICgkcm9vdFNjb3BlLCAkY29t
cGlsZSkgewotICAgIHNjb3BlID0gJHJvb3RTY29wZS4kbmV3KCk7Ci0gICAgY29tcGlsZSA9ICRj
b21waWxlOwotICAgIH0pKTsKLQotICAgIGl0KCdzaG91bGQgJGFwcGx5IG9uIGJsdXInLCBmdW5j
dGlvbiAoKSB7Ci0gICAgdmFyIGVsLAotICAgIG1vY2sgPSB7Ci0gICAgY2FsbGVkOiBmYWxzZSwK
LSAgICBjYWxsOiBmdW5jdGlvbiAoKSB7IHRoaXMuY2FsbGVkID0gdHJ1ZTsgfQotICAgIH07Ci0K
LSAgICBzY29wZS5tb2NrID0gbW9jazsKLSAgICBlbCA9IGFuZ3VsYXIuZWxlbWVudCgnPGlucHV0
IHRvZG8tYmx1cj0ibW9jay5jYWxsKCkiPicpOwotICAgIGNvbXBpbGUoZWwpKHNjb3BlKTsKLQot
ICAgIGVsLnRyaWdnZXJIYW5kbGVyKCdibHVyJyk7Ci0gICAgc2NvcGUuJGRpZ2VzdCgpOwotCi0g
ICAgZXhwZWN0KG1vY2suY2FsbGVkKS50b0JlVHJ1dGh5KCk7Ci0gICAgfSk7Ci0gICAgfSk7Ci0K
ICAgICBkZXNjcmliZSgndG9kb0ZvY3VzIGRpcmVjdGl2ZScsIGZ1bmN0aW9uICgpIHsKLSAgICB2
YXIgc2NvcGUsIGNvbXBpbGUsIGJyb3dzZXI7CisgICAgICAgIHZhciBzY29wZSwgY29tcGlsZSwg
YnJvd3NlcjsKIAotICAgIGJlZm9yZUVhY2goaW5qZWN0KGZ1bmN0aW9uICgkcm9vdFNjb3BlLCAk
Y29tcGlsZSwgJGJyb3dzZXIpIHsKLSAgICBzY29wZSA9ICRyb290U2NvcGUuJG5ldygpOwotICAg
IGNvbXBpbGUgPSAkY29tcGlsZTsKLSAgICBicm93c2VyID0gJGJyb3dzZXI7Ci0gICAgfSkpOwor
ICAgICAgICBiZWZvcmVFYWNoKGluamVjdChmdW5jdGlvbiAoJHJvb3RTY29wZSwgJGNvbXBpbGUs
ICRicm93c2VyKSB7CisgICAgICAgICAgICBzY29wZSA9ICRyb290U2NvcGUuJG5ldygpOworICAg
ICAgICAgICAgY29tcGlsZSA9ICRjb21waWxlOworICAgICAgICAgICAgYnJvd3NlciA9ICRicm93
c2VyOworICAgICAgICB9KSk7CiAKLSAgICBpdCgnc2hvdWxkIGZvY3VzIG9uIHRydXRoeSBleHBy
ZXNzaW9uJywgZnVuY3Rpb24gKCkgewotICAgIHZhciBlbCA9IGFuZ3VsYXIuZWxlbWVudCgnPGlu
cHV0IHRvZG8tZm9jdXM9ImZvY3VzIj4nKTsKLSAgICBzY29wZS5mb2N1cyA9IGZhbHNlOworICAg
ICAgICBpdCgnc2hvdWxkIGZvY3VzIG9uIHRydXRoeSBleHByZXNzaW9uJywgZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgdmFyIGVsID0gYW5ndWxhci5lbGVtZW50KCc8aW5wdXQgdG9kby1mb2N1
cz0iZm9jdXMiPicpOworICAgICAgICAgICAgc2NvcGUuZm9jdXMgPSBmYWxzZTsKIAotICAgIGNv
bXBpbGUoZWwpKHNjb3BlKTsKLSAgICBleHBlY3QoYnJvd3Nlci5kZWZlcnJlZEZucy5sZW5ndGgp
LnRvQmUoMCk7CisgICAgICAgICAgICBjb21waWxlKGVsKShzY29wZSk7CisgICAgICAgICAgICBl
eHBlY3QoYnJvd3Nlci5kZWZlcnJlZEZucy5sZW5ndGgpLnRvQmUoMCk7CiAKLSAgICBzY29wZS4k
YXBwbHkoZnVuY3Rpb24gKCkgewotICAgIHNjb3BlLmZvY3VzID0gdHJ1ZTsKLSAgICB9KTsKKyAg
ICAgICAgICAgIHNjb3BlLiRhcHBseShmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgc2Nv
cGUuZm9jdXMgPSB0cnVlOworICAgICAgICAgICAgfSk7CiAKLSAgICBleHBlY3QoYnJvd3Nlci5k
ZWZlcnJlZEZucy5sZW5ndGgpLnRvQmUoMSk7Ci0gICAgfSk7CisgICAgICAgICAgICBleHBlY3Qo
YnJvd3Nlci5kZWZlcnJlZEZucy5sZW5ndGgpLnRvQmUoMSk7CisgICAgICAgIH0pOwogICAgIH0p
OwogfSgpKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy90ZXN0L3VuaXQvdG9k
b0N0cmxTcGVjLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL3Rlc3QvdW5pdC90b2RvQ3RybFNw
ZWMuanMKaW5kZXggZjUxOTA4YmE0NWI5YmI4NzE0OTc2YjQwM2IwZDQ0NzQ0MjE4OWEwMS4uYmU3
ZWM1OTcwNmE0Zjc4YzNkZjk5OTBjM2UxZmQ0OTVlZGM0NTljMSAxMDA2NDQKLS0tIGEvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvYW5ndWxhcmpzL3Rlc3QvdW5pdC90b2RvQ3RybFNwZWMuanMKKysrIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvYW5ndWxhcmpzL3Rlc3QvdW5pdC90b2RvQ3RybFNwZWMuanMKQEAgLTMsMTg0ICszLDE4MCBA
QAogICAgICd1c2Ugc3RyaWN0JzsKIAogICAgIGRlc2NyaWJlKCdUb2RvIENvbnRyb2xsZXInLCBm
dW5jdGlvbiAoKSB7Ci0gICAgdmFyIGN0cmwsIHNjb3BlOwotICAgIHZhciB0b2RvTGlzdDsKLSAg
ICB2YXIgdG9kb1N0b3JhZ2UgPSB7Ci0gICAgc3RvcmFnZToge30sCi0gICAgZ2V0OiBmdW5jdGlv
biAoKSB7Ci0gICAgcmV0dXJuIHRoaXMuc3RvcmFnZTsKLSAgICB9LAotICAgIHB1dDogZnVuY3Rp
b24gKHZhbHVlKSB7Ci0gICAgdGhpcy5zdG9yYWdlID0gdmFsdWU7Ci0gICAgfQotICAgIH07Ci0K
LSAgICAvLyBMb2FkIHRoZSBtb2R1bGUgY29udGFpbmluZyB0aGUgYXBwLCBvbmx5ICduZycgaXMg
bG9hZGVkIGJ5IGRlZmF1bHQuCi0gICAgYmVmb3JlRWFjaChtb2R1bGUoJ3RvZG9tdmMnKSk7Ci0K
LSAgICBiZWZvcmVFYWNoKGluamVjdChmdW5jdGlvbiAoJGNvbnRyb2xsZXIsICRyb290U2NvcGUp
IHsKLSAgICBzY29wZSA9ICRyb290U2NvcGUuJG5ldygpOwotICAgIGN0cmwgPSAkY29udHJvbGxl
cignVG9kb0N0cmwnLCB7ICRzY29wZTogc2NvcGUgfSk7Ci0gICAgfSkpOwotCi0gICAgaXQoJ3No
b3VsZCBub3QgaGF2ZSBhbiBlZGl0ZWQgVG9kbyBvbiBzdGFydCcsIGZ1bmN0aW9uICgpIHsKLSAg
ICBleHBlY3Qoc2NvcGUuZWRpdGVkVG9kbykudG9CZU51bGwoKTsKLSAgICB9KTsKLQotICAgIGl0
KCdzaG91bGQgbm90IGhhdmUgYW55IFRvZG9zIG9uIHN0YXJ0JywgZnVuY3Rpb24gKCkgewotICAg
IGV4cGVjdChzY29wZS50b2Rvcy5sZW5ndGgpLnRvQmUoMCk7Ci0gICAgfSk7Ci0KLSAgICBpdCgn
c2hvdWxkIGhhdmUgYWxsIFRvZG9zIGNvbXBsZXRlZCcsIGZ1bmN0aW9uICgpIHsKLSAgICBzY29w
ZS4kZGlnZXN0KCk7Ci0gICAgZXhwZWN0KHNjb3BlLmFsbENoZWNrZWQpLnRvQmVUcnV0aHkoKTsK
LSAgICB9KTsKLQotICAgIGRlc2NyaWJlKCd0aGUgcGF0aCcsIGZ1bmN0aW9uICgpIHsKLSAgICBp
dCgnc2hvdWxkIGRlZmF1bHQgdG8gIi8iJywgZnVuY3Rpb24gKCkgewotICAgIGV4cGVjdChzY29w
ZS5sb2NhdGlvbi5wYXRoKCkpLnRvQmUoJy8nKTsKLSAgICB9KTsKLQotICAgIGRlc2NyaWJlKCdi
ZWluZyBhdCAvYWN0aXZlJywgZnVuY3Rpb24gKCkgewotICAgIGl0KCdzaG91bGQgZmlsdGVyIG5v
bi1jb21wbGV0ZWQnLCBpbmplY3QoZnVuY3Rpb24gKCRjb250cm9sbGVyKSB7Ci0gICAgY3RybCA9
ICRjb250cm9sbGVyKCdUb2RvQ3RybCcsIHsKLSAgICAkc2NvcGU6IHNjb3BlLAotICAgICRsb2Nh
dGlvbjogewotICAgIHBhdGg6IGZ1bmN0aW9uICgpIHsgcmV0dXJuICcvYWN0aXZlJzsgfQotICAg
IH0KLSAgICB9KTsKLQotICAgIHNjb3BlLiRkaWdlc3QoKTsKLSAgICBleHBlY3Qoc2NvcGUuc3Rh
dHVzRmlsdGVyLmNvbXBsZXRlZCkudG9CZUZhbHN5KCk7Ci0gICAgfSkpOwotICAgIH0pOwotCi0g
ICAgZGVzY3JpYmUoJ2JlaW5nIGF0IC9jb21wbGV0ZWQnLCBmdW5jdGlvbiAoKSB7Ci0gICAgaXQo
J3Nob3VsZCBmaWx0ZXIgY29tcGxldGVkJywgaW5qZWN0KGZ1bmN0aW9uICgkY29udHJvbGxlcikg
ewotICAgIGN0cmwgPSAkY29udHJvbGxlcignVG9kb0N0cmwnLCB7Ci0gICAgJHNjb3BlOiBzY29w
ZSwKLSAgICAkbG9jYXRpb246IHsKLSAgICBwYXRoOiBmdW5jdGlvbiAoKSB7IHJldHVybiAnL2Nv
bXBsZXRlZCc7IH0KLSAgICB9Ci0gICAgfSk7Ci0KLSAgICBzY29wZS4kZGlnZXN0KCk7Ci0gICAg
ZXhwZWN0KHNjb3BlLnN0YXR1c0ZpbHRlci5jb21wbGV0ZWQpLnRvQmVUcnV0aHkoKTsKLSAgICB9
KSk7Ci0gICAgfSk7Ci0gICAgfSk7Ci0KLSAgICBkZXNjcmliZSgnaGF2aW5nIG5vIFRvZG9zJywg
ZnVuY3Rpb24gKCkgewotICAgIHZhciBjdHJsOwotCi0gICAgYmVmb3JlRWFjaChpbmplY3QoZnVu
Y3Rpb24gKCRjb250cm9sbGVyKSB7Ci0gICAgdG9kb1N0b3JhZ2Uuc3RvcmFnZSA9IFtdOwotICAg
IGN0cmwgPSAkY29udHJvbGxlcignVG9kb0N0cmwnLCB7Ci0gICAgJHNjb3BlOiBzY29wZSwKLSAg
ICB0b2RvU3RvcmFnZTogdG9kb1N0b3JhZ2UKLSAgICB9KTsKLSAgICBzY29wZS4kZGlnZXN0KCk7
Ci0gICAgfSkpOwotCi0gICAgaXQoJ3Nob3VsZCBub3QgYWRkIGVtcHR5IFRvZG9zJywgZnVuY3Rp
b24gKCkgewotICAgIHNjb3BlLm5ld1RvZG8gPSAnJzsKLSAgICBzY29wZS5hZGRUb2RvKCk7Ci0g
ICAgc2NvcGUuJGRpZ2VzdCgpOwotICAgIGV4cGVjdChzY29wZS50b2Rvcy5sZW5ndGgpLnRvQmUo
MCk7Ci0gICAgfSk7Ci0KLSAgICBpdCgnc2hvdWxkIG5vdCBhZGQgaXRlbXMgY29uc2lzdGluZyBv
bmx5IG9mIHdoaXRlc3BhY2VzJywgZnVuY3Rpb24gKCkgewotICAgIHNjb3BlLm5ld1RvZG8gPSAn
ICAgJzsKLSAgICBzY29wZS5hZGRUb2RvKCk7Ci0gICAgc2NvcGUuJGRpZ2VzdCgpOwotICAgIGV4
cGVjdChzY29wZS50b2Rvcy5sZW5ndGgpLnRvQmUoMCk7Ci0gICAgfSk7Ci0KLQotICAgIGl0KCdz
aG91bGQgdHJpbSB3aGl0ZXNwYWNlIGZyb20gbmV3IFRvZG9zJywgZnVuY3Rpb24gKCkgewotICAg
IHNjb3BlLm5ld1RvZG8gPSAnICBidXkgc29tZSB1bmljb3JucyAgJzsKLSAgICBzY29wZS5hZGRU
b2RvKCk7Ci0gICAgc2NvcGUuJGRpZ2VzdCgpOwotICAgIGV4cGVjdChzY29wZS50b2Rvcy5sZW5n
dGgpLnRvQmUoMSk7Ci0gICAgZXhwZWN0KHNjb3BlLnRvZG9zWzBdLnRpdGxlKS50b0JlKCdidXkg
c29tZSB1bmljb3JucycpOwotICAgIH0pOwotICAgIH0pOwotCi0gICAgZGVzY3JpYmUoJ2hhdmlu
ZyBzb21lIHNhdmVkIFRvZG9zJywgZnVuY3Rpb24gKCkgewotICAgIHZhciBjdHJsOwotCi0gICAg
YmVmb3JlRWFjaChpbmplY3QoZnVuY3Rpb24gKCRjb250cm9sbGVyKSB7Ci0gICAgdG9kb0xpc3Qg
PSBbewotICAgICd0aXRsZSc6ICdVbmNvbXBsZXRlZCBJdGVtIDAnLAotICAgICdjb21wbGV0ZWQn
OiBmYWxzZQotICAgIH0sIHsKLSAgICAndGl0bGUnOiAnVW5jb21wbGV0ZWQgSXRlbSAxJywKLSAg
ICAnY29tcGxldGVkJzogZmFsc2UKLSAgICB9LCB7Ci0gICAgJ3RpdGxlJzogJ1VuY29tcGxldGVk
IEl0ZW0gMicsCi0gICAgJ2NvbXBsZXRlZCc6IGZhbHNlCi0gICAgfSwgewotICAgICd0aXRsZSc6
ICdDb21wbGV0ZWQgSXRlbSAwJywKLSAgICAnY29tcGxldGVkJzogdHJ1ZQotICAgIH0sIHsKLSAg
ICAndGl0bGUnOiAnQ29tcGxldGVkIEl0ZW0gMScsCi0gICAgJ2NvbXBsZXRlZCc6IHRydWUKLSAg
ICB9XTsKLQotICAgIHRvZG9TdG9yYWdlLnN0b3JhZ2UgPSB0b2RvTGlzdDsKLSAgICBjdHJsID0g
JGNvbnRyb2xsZXIoJ1RvZG9DdHJsJywgewotICAgICRzY29wZTogc2NvcGUsCi0gICAgdG9kb1N0
b3JhZ2U6IHRvZG9TdG9yYWdlCi0gICAgfSk7Ci0gICAgc2NvcGUuJGRpZ2VzdCgpOwotICAgIH0p
KTsKLQotICAgIGl0KCdzaG91bGQgY291bnQgVG9kb3MgY29ycmVjdGx5JywgZnVuY3Rpb24gKCkg
ewotICAgIGV4cGVjdChzY29wZS50b2Rvcy5sZW5ndGgpLnRvQmUoNSk7Ci0gICAgZXhwZWN0KHNj
b3BlLnJlbWFpbmluZ0NvdW50KS50b0JlKDMpOwotICAgIGV4cGVjdChzY29wZS5jb21wbGV0ZWRD
b3VudCkudG9CZSgyKTsKLSAgICBleHBlY3Qoc2NvcGUuYWxsQ2hlY2tlZCkudG9CZUZhbHN5KCk7
Ci0gICAgfSk7Ci0KLSAgICBpdCgnc2hvdWxkIHNhdmUgVG9kb3MgdG8gbG9jYWwgc3RvcmFnZScs
IGZ1bmN0aW9uICgpIHsKLSAgICBleHBlY3QodG9kb1N0b3JhZ2Uuc3RvcmFnZS5sZW5ndGgpLnRv
QmUoNSk7Ci0gICAgfSk7Ci0KLSAgICBpdCgnc2hvdWxkIHJlbW92ZSBUb2RvcyB3L28gdGl0bGUg
b24gc2F2aW5nJywgZnVuY3Rpb24gKCkgewotICAgIHZhciB0b2RvID0gdG9kb0xpc3RbMl07Ci0g
ICAgdG9kby50aXRsZSA9ICcnOwotCi0gICAgc2NvcGUuZG9uZUVkaXRpbmcodG9kbyk7Ci0gICAg
ZXhwZWN0KHNjb3BlLnRvZG9zLmxlbmd0aCkudG9CZSg0KTsKLSAgICB9KTsKLQotICAgIGl0KCdz
aG91bGQgdHJpbSBUb2RvcyBvbiBzYXZpbmcnLCBmdW5jdGlvbiAoKSB7Ci0gICAgdmFyIHRvZG8g
PSB0b2RvTGlzdFswXTsKLSAgICB0b2RvLnRpdGxlID0gJyBidXkgbW9hciB1bmljb3JucyAgJzsK
LQotICAgIHNjb3BlLmRvbmVFZGl0aW5nKHRvZG8pOwotICAgIGV4cGVjdChzY29wZS50b2Rvc1sw
XS50aXRsZSkudG9CZSgnYnV5IG1vYXIgdW5pY29ybnMnKTsKLSAgICB9KTsKLQotICAgIGl0KCdj
bGVhckNvbXBsZXRlZFRvZG9zKCkgc2hvdWxkIGNsZWFyIGNvbXBsZXRlZCBUb2RvcycsIGZ1bmN0
aW9uICgpIHsKLSAgICBzY29wZS5jbGVhckNvbXBsZXRlZFRvZG9zKCk7Ci0gICAgZXhwZWN0KHNj
b3BlLnRvZG9zLmxlbmd0aCkudG9CZSgzKTsKLSAgICB9KTsKLQotICAgIGl0KCdtYXJrQWxsKCkg
c2hvdWxkIG1hcmsgYWxsIFRvZG9zIGNvbXBsZXRlZCcsIGZ1bmN0aW9uICgpIHsKLSAgICBzY29w
ZS5tYXJrQWxsKCk7Ci0gICAgc2NvcGUuJGRpZ2VzdCgpOwotICAgIGV4cGVjdChzY29wZS5jb21w
bGV0ZWRDb3VudCkudG9CZSg1KTsKLSAgICB9KTsKLQotICAgIGl0KCdyZXZlcnRUb2RvKCkgZ2V0
IGEgVG9kbyB0byBpdHMgcHJldmlvdXMgc3RhdGUnLCBmdW5jdGlvbiAoKSB7Ci0gICAgdmFyIHRv
ZG8gPSB0b2RvTGlzdFswXTsKLSAgICBzY29wZS5lZGl0VG9kbyh0b2RvKTsKLSAgICB0b2RvLnRp
dGxlID0gJ1VuaWNvcm4gc3BhcmtseSBza3lwdWZmbGVzLic7Ci0gICAgc2NvcGUucmV2ZXJ0RWRp
dGluZyh0b2RvKTsKLSAgICBzY29wZS4kZGlnZXN0KCk7Ci0gICAgZXhwZWN0KHNjb3BlLnRvZG9z
WzBdLnRpdGxlKS50b0JlKCdVbmNvbXBsZXRlZCBJdGVtIDAnKTsKLSAgICB9KTsKLSAgICB9KTsK
KyAgICAgICAgdmFyIGN0cmwsIHNjb3BlLCBzdG9yZTsKKworICAgICAgICAvLyBMb2FkIHRoZSBt
b2R1bGUgY29udGFpbmluZyB0aGUgYXBwLCBvbmx5ICduZycgaXMgbG9hZGVkIGJ5IGRlZmF1bHQu
CisgICAgICAgIGJlZm9yZUVhY2gobW9kdWxlKCd0b2RvbXZjJykpOworCisgICAgICAgIGJlZm9y
ZUVhY2goaW5qZWN0KGZ1bmN0aW9uICgkY29udHJvbGxlciwgJHJvb3RTY29wZSwgbG9jYWxTdG9y
YWdlKSB7CisgICAgICAgICAgICBzY29wZSA9ICRyb290U2NvcGUuJG5ldygpOworCisgICAgICAg
ICAgICBzdG9yZSA9IGxvY2FsU3RvcmFnZTsKKworICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnRv
ZG9zID0gW107CisgICAgICAgICAgICBsb2NhbFN0b3JhZ2UuX2dldEZyb21Mb2NhbFN0b3JhZ2Ug
PSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFtdOworICAgICAgICAgICAg
fTsKKyAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5fc2F2ZVRvTG9jYWxTdG9yYWdlID0gZnVuY3Rp
b24gKHRvZG9zKSB7CisgICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnRvZG9zID0gdG9kb3M7
CisgICAgICAgICAgICB9OworCisgICAgICAgICAgICBjdHJsID0gJGNvbnRyb2xsZXIoJ1RvZG9D
dHJsJywgeworICAgICAgICAgICAgICAgICRzY29wZTogc2NvcGUsCisgICAgICAgICAgICAgICAg
c3RvcmU6IHN0b3JlCisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSkpOworCisgICAgICAgIGl0
KCdzaG91bGQgbm90IGhhdmUgYW4gZWRpdGVkIFRvZG8gb24gc3RhcnQnLCBmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICBleHBlY3Qoc2NvcGUuZWRpdGVkVG9kbykudG9CZU51bGwoKTsKKyAgICAg
ICAgfSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCBub3QgaGF2ZSBhbnkgVG9kb3Mgb24gc3RhcnQn
LCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBleHBlY3Qoc2NvcGUudG9kb3MubGVuZ3RoKS50
b0JlKDApOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIGhhdmUgYWxsIFRvZG9z
IGNvbXBsZXRlZCcsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHNjb3BlLiRkaWdlc3QoKTsK
KyAgICAgICAgICAgIGV4cGVjdChzY29wZS5hbGxDaGVja2VkKS50b0JlVHJ1dGh5KCk7CisgICAg
ICAgIH0pOworCisgICAgICAgIGRlc2NyaWJlKCd0aGUgZmlsdGVyJywgZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgaXQoJ3Nob3VsZCBkZWZhdWx0IHRvICIiJywgZnVuY3Rpb24gKCkgeworICAg
ICAgICAgICAgICAgIHNjb3BlLiRlbWl0KCckcm91dGVDaGFuZ2VTdWNjZXNzJyk7CisKKyAgICAg
ICAgICAgICAgICBleHBlY3Qoc2NvcGUuc3RhdHVzKS50b0JlKCcnKTsKKyAgICAgICAgICAgICAg
ICBleHBlY3Qoc2NvcGUuc3RhdHVzRmlsdGVyKS50b0JlTnVsbCgpOworICAgICAgICAgICAgfSk7
CisKKyAgICAgICAgICAgIGRlc2NyaWJlKCdiZWluZyBhdCAvYWN0aXZlJywgZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgICAgIGl0KCdzaG91bGQgZmlsdGVyIG5vbi1jb21wbGV0ZWQnLCBpbmpl
Y3QoZnVuY3Rpb24gKCRjb250cm9sbGVyKSB7CisgICAgICAgICAgICAgICAgICAgIGN0cmwgPSAk
Y29udHJvbGxlcignVG9kb0N0cmwnLCB7CisgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGU6
IHNjb3BlLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmU6IHN0b3JlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgJHJvdXRlUGFyYW1zOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RhdHVzOiAnYWN0aXZlJworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgICAgICBzY29wZS4kZW1pdCgnJHJvdXRl
Q2hhbmdlU3VjY2VzcycpOworICAgICAgICAgICAgICAgICAgICBleHBlY3Qoc2NvcGUuc3RhdHVz
RmlsdGVyLmNvbXBsZXRlZCkudG9CZUZhbHN5KCk7CisgICAgICAgICAgICAgICAgfSkpOworICAg
ICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGRlc2NyaWJlKCdiZWluZyBhdCAvY29tcGxldGVk
JywgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGl0KCdzaG91bGQgZmlsdGVyIGNvbXBs
ZXRlZCcsIGluamVjdChmdW5jdGlvbiAoJGNvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgICAgICAg
ICAgY3RybCA9ICRjb250cm9sbGVyKCdUb2RvQ3RybCcsIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICRzY29wZTogc2NvcGUsCisgICAgICAgICAgICAgICAgICAgICAgICAkcm91dGVQYXJhbXM6
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6ICdjb21wbGV0ZWQnCisgICAg
ICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmU6IHN0
b3JlCisgICAgICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAgICAgIHNjb3Bl
LiRlbWl0KCckcm91dGVDaGFuZ2VTdWNjZXNzJyk7CisgICAgICAgICAgICAgICAgICAgIGV4cGVj
dChzY29wZS5zdGF0dXNGaWx0ZXIuY29tcGxldGVkKS50b0JlVHJ1dGh5KCk7CisgICAgICAgICAg
ICAgICAgfSkpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGRlc2Ny
aWJlKCdoYXZpbmcgbm8gVG9kb3MnLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB2YXIgY3Ry
bDsKKworICAgICAgICAgICAgYmVmb3JlRWFjaChpbmplY3QoZnVuY3Rpb24gKCRjb250cm9sbGVy
KSB7CisgICAgICAgICAgICAgICAgY3RybCA9ICRjb250cm9sbGVyKCdUb2RvQ3RybCcsIHsKKyAg
ICAgICAgICAgICAgICAgICAgJHNjb3BlOiBzY29wZSwKKyAgICAgICAgICAgICAgICAgICAgc3Rv
cmU6IHN0b3JlCisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgc2NvcGUuJGRp
Z2VzdCgpOworICAgICAgICAgICAgfSkpOworCisgICAgICAgICAgICBpdCgnc2hvdWxkIG5vdCBh
ZGQgZW1wdHkgVG9kb3MnLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgc2NvcGUubmV3
VG9kbyA9ICcnOworICAgICAgICAgICAgICAgIHNjb3BlLmFkZFRvZG8oKTsKKyAgICAgICAgICAg
ICAgICBzY29wZS4kZGlnZXN0KCk7CisgICAgICAgICAgICAgICAgZXhwZWN0KHNjb3BlLnRvZG9z
Lmxlbmd0aCkudG9CZSgwKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBpdCgnc2hv
dWxkIG5vdCBhZGQgaXRlbXMgY29uc2lzdGluZyBvbmx5IG9mIHdoaXRlc3BhY2VzJywgZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgICAgIHNjb3BlLm5ld1RvZG8gPSAnICAgJzsKKyAgICAgICAg
ICAgICAgICBzY29wZS5hZGRUb2RvKCk7CisgICAgICAgICAgICAgICAgc2NvcGUuJGRpZ2VzdCgp
OworICAgICAgICAgICAgICAgIGV4cGVjdChzY29wZS50b2Rvcy5sZW5ndGgpLnRvQmUoMCk7Cisg
ICAgICAgICAgICB9KTsKKworCisgICAgICAgICAgICBpdCgnc2hvdWxkIHRyaW0gd2hpdGVzcGFj
ZSBmcm9tIG5ldyBUb2RvcycsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBzY29wZS5u
ZXdUb2RvID0gJyAgYnV5IHNvbWUgdW5pY29ybnMgICc7CisgICAgICAgICAgICAgICAgc2NvcGUu
YWRkVG9kbygpOworICAgICAgICAgICAgICAgIHNjb3BlLiRkaWdlc3QoKTsKKyAgICAgICAgICAg
ICAgICBleHBlY3Qoc2NvcGUudG9kb3MubGVuZ3RoKS50b0JlKDEpOworICAgICAgICAgICAgICAg
IGV4cGVjdChzY29wZS50b2Rvc1swXS50aXRsZSkudG9CZSgnYnV5IHNvbWUgdW5pY29ybnMnKTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKworICAgICAgICBkZXNjcmliZSgnaGF2aW5n
IHNvbWUgc2F2ZWQgVG9kb3MnLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB2YXIgY3RybDsK
KworICAgICAgICAgICAgYmVmb3JlRWFjaChpbmplY3QoZnVuY3Rpb24gKCRjb250cm9sbGVyKSB7
CisgICAgICAgICAgICAgICAgY3RybCA9ICRjb250cm9sbGVyKCdUb2RvQ3RybCcsIHsKKyAgICAg
ICAgICAgICAgICAgICAgJHNjb3BlOiBzY29wZSwKKyAgICAgICAgICAgICAgICAgICAgc3RvcmU6
IHN0b3JlCisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBzdG9yZS5pbnNl
cnQoeyB0aXRsZTogJ1VuY29tcGxldGVkIEl0ZW0gMCcsIGNvbXBsZXRlZDogZmFsc2UgfSk7Cisg
ICAgICAgICAgICAgICAgc3RvcmUuaW5zZXJ0KHsgdGl0bGU6ICdVbmNvbXBsZXRlZCBJdGVtIDEn
LCBjb21wbGV0ZWQ6IGZhbHNlIH0pOworICAgICAgICAgICAgICAgIHN0b3JlLmluc2VydCh7IHRp
dGxlOiAnVW5jb21wbGV0ZWQgSXRlbSAyJywgY29tcGxldGVkOiBmYWxzZSB9KTsKKyAgICAgICAg
ICAgICAgICBzdG9yZS5pbnNlcnQoeyB0aXRsZTogJ0NvbXBsZXRlZCBJdGVtIDAnLCBjb21wbGV0
ZWQ6IHRydWUgfSk7CisgICAgICAgICAgICAgICAgc3RvcmUuaW5zZXJ0KHsgdGl0bGU6ICdDb21w
bGV0ZWQgSXRlbSAxJywgY29tcGxldGVkOiB0cnVlIH0pOworICAgICAgICAgICAgICAgIHNjb3Bl
LiRkaWdlc3QoKTsKKyAgICAgICAgICAgIH0pKTsKKworICAgICAgICAgICAgaXQoJ3Nob3VsZCBj
b3VudCBUb2RvcyBjb3JyZWN0bHknLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgZXhw
ZWN0KHNjb3BlLnRvZG9zLmxlbmd0aCkudG9CZSg1KTsKKyAgICAgICAgICAgICAgICBleHBlY3Qo
c2NvcGUucmVtYWluaW5nQ291bnQpLnRvQmUoMyk7CisgICAgICAgICAgICAgICAgZXhwZWN0KHNj
b3BlLmNvbXBsZXRlZENvdW50KS50b0JlKDIpOworICAgICAgICAgICAgICAgIGV4cGVjdChzY29w
ZS5hbGxDaGVja2VkKS50b0JlRmFsc3koKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAg
ICBpdCgnc2hvdWxkIHNhdmUgVG9kb3MgdG8gbG9jYWwgc3RvcmFnZScsIGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgICAgICAgICBleHBlY3Qoc2NvcGUudG9kb3MubGVuZ3RoKS50b0JlKDUpOworICAg
ICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGl0KCdzaG91bGQgcmVtb3ZlIFRvZG9zIHcvbyB0
aXRsZSBvbiBzYXZpbmcnLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgdmFyIHRvZG8g
PSBzdG9yZS50b2Rvc1syXTsKKyAgICAgICAgICAgICAgICBzY29wZS5lZGl0VG9kbyh0b2RvKTsK
KyAgICAgICAgICAgICAgICB0b2RvLnRpdGxlID0gJyc7CisgICAgICAgICAgICAgICAgc2NvcGUu
c2F2ZUVkaXRzKHRvZG8pOworICAgICAgICAgICAgICAgIGV4cGVjdChzY29wZS50b2Rvcy5sZW5n
dGgpLnRvQmUoNCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgaXQoJ3Nob3VsZCB0
cmltIFRvZG9zIG9uIHNhdmluZycsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICB2YXIg
dG9kbyA9IHN0b3JlLnRvZG9zWzBdOworICAgICAgICAgICAgICAgIHNjb3BlLmVkaXRUb2RvKHRv
ZG8pOworICAgICAgICAgICAgICAgIHRvZG8udGl0bGUgPSAnIGJ1eSBtb2FyIHVuaWNvcm5zICAn
OworICAgICAgICAgICAgICAgIHNjb3BlLnNhdmVFZGl0cyh0b2RvKTsKKyAgICAgICAgICAgICAg
ICBleHBlY3Qoc2NvcGUudG9kb3NbMF0udGl0bGUpLnRvQmUoJ2J1eSBtb2FyIHVuaWNvcm5zJyk7
CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgaXQoJ2NsZWFyQ29tcGxldGVkVG9kb3Mo
KSBzaG91bGQgY2xlYXIgY29tcGxldGVkIFRvZG9zJywgZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgICAgIHNjb3BlLmNsZWFyQ29tcGxldGVkVG9kb3MoKTsKKyAgICAgICAgICAgICAgICBleHBl
Y3Qoc2NvcGUudG9kb3MubGVuZ3RoKS50b0JlKDMpOworICAgICAgICAgICAgfSk7CisKKyAgICAg
ICAgICAgIGl0KCdtYXJrQWxsKCkgc2hvdWxkIG1hcmsgYWxsIFRvZG9zIGNvbXBsZXRlZCcsIGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBzY29wZS5tYXJrQWxsKHRydWUpOworICAgICAg
ICAgICAgICAgIHNjb3BlLiRkaWdlc3QoKTsKKyAgICAgICAgICAgICAgICBleHBlY3Qoc2NvcGUu
Y29tcGxldGVkQ291bnQpLnRvQmUoNSk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAg
aXQoJ3JldmVydFRvZG8oKSBnZXQgYSBUb2RvIHRvIGl0cyBwcmV2aW91cyBzdGF0ZScsIGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgICAgICB2YXIgdG9kbyA9IHN0b3JlLnRvZG9zWzBdOworICAg
ICAgICAgICAgICAgIHNjb3BlLmVkaXRUb2RvKHRvZG8pOworICAgICAgICAgICAgICAgIHRvZG8u
dGl0bGUgPSAnVW5pY29ybiBzcGFya2x5IHNreXB1ZmZsZXMuJzsKKyAgICAgICAgICAgICAgICBz
Y29wZS5yZXZlcnRFZGl0cyh0b2RvKTsKKyAgICAgICAgICAgICAgICBzY29wZS4kZGlnZXN0KCk7
CisgICAgICAgICAgICAgICAgZXhwZWN0KHNjb3BlLnRvZG9zWzBdLnRpdGxlKS50b0JlKCdVbmNv
bXBsZXRlZCBJdGVtIDAnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKICAgICB9KTsK
IH0oKSk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvdG9kb212Yy1pbmRleC5o
dG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL3RvZG9tdmMtaW5kZXguaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kNmUzYjFjMmViM2ZjZDBmMTEzZDA3ZThmNzhmY2E4MjcxZThjNzJlCi0tLSAvZGV2L251bGwK
KysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzL3RvZG9tdmMtaW5kZXguaHRtbApAQCAtMCwwICsx
LDUyIEBACis8c2VjdGlvbiBpZD0idG9kb2FwcCI+CisgICAgPGhlYWRlciBpZD0iaGVhZGVyIj4K
KyAgICAgICAgPGgxPnRvZG9zPC9oMT4KKyAgICAgICAgPGZvcm0gaWQ9InRvZG8tZm9ybSIgbmct
c3VibWl0PSJhZGRUb2RvKCkiPgorICAgICAgICAgICAgPGlucHV0IGlkPSJuZXctdG9kbyIgcGxh
Y2Vob2xkZXI9IldoYXQgbmVlZHMgdG8gYmUgZG9uZT8iIG5nLW1vZGVsPSJuZXdUb2RvIiBuZy1k
aXNhYmxlZD0ic2F2aW5nIiBhdXRvZm9jdXM+CisgICAgICAgIDwvZm9ybT4KKyAgICA8L2hlYWRl
cj4KKyAgICA8c2VjdGlvbiBpZD0ibWFpbiIgbmctc2hvdz0idG9kb3MubGVuZ3RoIiBuZy1jbG9h
az4KKyAgICAgICAgPGlucHV0IGlkPSJ0b2dnbGUtYWxsIiB0eXBlPSJjaGVja2JveCIgbmctbW9k
ZWw9ImFsbENoZWNrZWQiIG5nLWNsaWNrPSJtYXJrQWxsKGFsbENoZWNrZWQpIj4KKyAgICAgICAg
PGxhYmVsIGZvcj0idG9nZ2xlLWFsbCI+TWFyayBhbGwgYXMgY29tcGxldGU8L2xhYmVsPgorICAg
ICAgICA8dWwgaWQ9InRvZG8tbGlzdCI+CisgICAgICAgICAgICA8bGkgbmctcmVwZWF0PSJ0b2Rv
IGluIHRvZG9zIHwgZmlsdGVyOnN0YXR1c0ZpbHRlciB0cmFjayBieSAkaW5kZXgiIG5nLWNsYXNz
PSJ7Y29tcGxldGVkOiB0b2RvLmNvbXBsZXRlZCwgZWRpdGluZzogdG9kbyA9PSBlZGl0ZWRUb2Rv
fSI+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idmlldyI+CisgICAgICAgICAgICAgICAg
ICAgIDxpbnB1dCBjbGFzcz0idG9nZ2xlIiB0eXBlPSJjaGVja2JveCIgbmctbW9kZWw9InRvZG8u
Y29tcGxldGVkIiBuZy1jaGFuZ2U9InRvZ2dsZUNvbXBsZXRlZCh0b2RvKSI+CisgICAgICAgICAg
ICAgICAgICAgIDxsYWJlbCBuZy1kYmxjbGljaz0iZWRpdFRvZG8odG9kbykiPnt7dG9kby50aXRs
ZX19PC9sYWJlbD4KKyAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZGVzdHJveSIg
bmctY2xpY2s9InJlbW92ZVRvZG8odG9kbykiPjwvYnV0dG9uPgorICAgICAgICAgICAgICAgIDwv
ZGl2PgorICAgICAgICAgICAgICAgIDxmb3JtIG5nLXN1Ym1pdD0ic2F2ZUVkaXRzKHRvZG8sICdz
dWJtaXQnKSI+CisgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0iZWRpdCIgbmctdHJp
bT0iZmFsc2UiIG5nLW1vZGVsPSJ0b2RvLnRpdGxlIiB0b2RvLWVzY2FwZT0icmV2ZXJ0RWRpdHMo
dG9kbykiIG5nLWJsdXI9InNhdmVFZGl0cyh0b2RvLCAnYmx1cicpIgorICAgICAgICAgICAgICAg
ICAgICAgICAgdG9kby1mb2N1cz0idG9kbyA9PSBlZGl0ZWRUb2RvIj4KKyAgICAgICAgICAgICAg
ICA8L2Zvcm0+CisgICAgICAgICAgICA8L2xpPgorICAgICAgICA8L3VsPgorICAgIDwvc2VjdGlv
bj4KKyAgICA8Zm9vdGVyIGlkPSJmb290ZXIiIG5nLXNob3c9InRvZG9zLmxlbmd0aCIgbmctY2xv
YWs+CisgICAgICAgIDxzcGFuIGlkPSJ0b2RvLWNvdW50Ij48c3Ryb25nPnt7cmVtYWluaW5nQ291
bnR9fTwvc3Ryb25nPgorICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXBsdXJhbGl6ZSBjb3Vu
dD0icmVtYWluaW5nQ291bnQiIHdoZW49Insgb25lOiAnaXRlbSBsZWZ0Jywgb3RoZXI6ICdpdGVt
cyBsZWZ0JyB9Ij48L25nLXBsdXJhbGl6ZT4KKyAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgor
ICAgICAgICA8dWwgaWQ9ImZpbHRlcnMiPgorICAgICAgICAgICAgPGxpPgorICAgICAgICAgICAg
ICAgIDxhIG5nLWNsYXNzPSJ7c2VsZWN0ZWQ6IHN0YXR1cyA9PSAnJ30gIiBocmVmPSIjLyI+QWxs
PC9hPgorICAgICAgICAgICAgPC9saT4KKyAgICAgICAgICAgIDxsaT4KKyAgICAgICAgICAgICAg
ICA8YSBuZy1jbGFzcz0ie3NlbGVjdGVkOiBzdGF0dXMgPT0gJ2FjdGl2ZSd9IiBocmVmPSIjL2Fj
dGl2ZSI+QWN0aXZlPC9hPgorICAgICAgICAgICAgPC9saT4KKyAgICAgICAgICAgIDxsaT4KKyAg
ICAgICAgICAgICAgICA8YSBuZy1jbGFzcz0ie3NlbGVjdGVkOiBzdGF0dXMgPT0gJ2NvbXBsZXRl
ZCd9IiBocmVmPSIjL2NvbXBsZXRlZCI+Q29tcGxldGVkPC9hPgorICAgICAgICAgICAgPC9saT4K
KyAgICAgICAgPC91bD4KKyAgICAgICAgPGJ1dHRvbiBpZD0iY2xlYXItY29tcGxldGVkIiBuZy1j
bGljaz0iY2xlYXJDb21wbGV0ZWRUb2RvcygpIiBuZy1zaG93PSJjb21wbGV0ZWRDb3VudCI+Q2xl
YXIgY29tcGxldGVkPC9idXR0b24+CisgICAgPC9mb290ZXI+Cis8L3NlY3Rpb24+Cis8Zm9vdGVy
IGlkPSJpbmZvIj4KKyAgICA8cD5Eb3VibGUtY2xpY2sgdG8gZWRpdCBhIHRvZG88L3A+CisgICAg
PHA+Q3JlZGl0czoKKyAgICAgICAgPGEgaHJlZj0iaHR0cDovL3R3aXR0ZXIuY29tL2NidXJnZG9y
ZiI+Q2hyaXN0b3BoIEJ1cmdkb3JmPC9hPiwKKyAgICAgICAgPGEgaHJlZj0iaHR0cDovL2VyaWNi
aWRlbG1hbi5jb20iPkVyaWMgQmlkZWxtYW48L2E+LAorICAgICAgICA8YSBocmVmPSJodHRwOi8v
amFjb2JtdW1tLmNvbSI+SmFjb2IgTXVtbTwvYT4gYW5kCisgICAgICAgIDxhIGhyZWY9Imh0dHA6
Ly9ibG9nLmlnb3JtaW5hci5jb20iPklnb3IgTWluYXI8L2E+CisgICAgPC9wPgorICAgIDxwPlBh
cnQgb2YgPGEgaHJlZj0iaHR0cDovL3RvZG9tdmMuY29tIj5Ub2RvTVZDPC9hPjwvcD4KKzwvZm9v
dGVyPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2JhY2tib25lL2Jvd2VyLmpzb24gYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ib3dlci5qc29uCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyODVhN2FkNzAwYmZmZGUwMDFjMmU5ODQ4NDEw
NzM2ZDYzNTQ2NWJhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL2Jvd2VyLmpzb24KKysrIC9kZXYvbnVsbApAQCAtMSwx
MSArMCwwIEBACi17Ci0gICJuYW1lIjogInRvZG9tdmMtYmFja2JvbmUiLAotICAidmVyc2lvbiI6
ICIwLjAuMCIsCi0gICJkZXBlbmRlbmNpZXMiOiB7Ci0gICAgImJhY2tib25lIjogIn4xLjAuMCIs
Ci0gICAgInVuZGVyc2NvcmUiOiAifjEuNC40IiwKLSAgICAianF1ZXJ5IjogIn4xLjkuMSIsCi0g
ICAgInRvZG9tdmMtY29tbW9uIjogIn4wLjEuNCIsCi0gICAgImJhY2tib25lLmxvY2FsU3RvcmFn
ZSI6ICJ+MS4xLjAiCi0gIH0KLX0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL2Jv
d2VyX2NvbXBvbmVudHMvYmFja2JvbmUubG9jYWxTdG9yYWdlL2JhY2tib25lLmxvY2FsU3RvcmFn
ZS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL2Jvd2VyX2NvbXBvbmVudHMvYmFja2JvbmUubG9j
YWxTdG9yYWdlL2JhY2tib25lLmxvY2FsU3RvcmFnZS5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNTNiYmM5NThhNDMwMWIyZTE1NzFlMzlkNDZhYmFhNWE3YWMzY2YyNy4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNr
Ym9uZS9ib3dlcl9jb21wb25lbnRzL2JhY2tib25lLmxvY2FsU3RvcmFnZS9iYWNrYm9uZS5sb2Nh
bFN0b3JhZ2UuanMKKysrIC9kZXYvbnVsbApAQCAtMSwxOTIgKzAsMCBAQAotLyoqCi0gKiBCYWNr
Ym9uZSBsb2NhbFN0b3JhZ2UgQWRhcHRlcgotICogVmVyc2lvbiAxLjEuMAotICoKLSAqIGh0dHBz
Oi8vZ2l0aHViLmNvbS9qZXJvbWVnbi9CYWNrYm9uZS5sb2NhbFN0b3JhZ2UKLSAqLwotKGZ1bmN0
aW9uIChyb290LCBmYWN0b3J5KSB7Ci0gICBpZiAodHlwZW9mIGRlZmluZSA9PT0gImZ1bmN0aW9u
IiAmJiBkZWZpbmUuYW1kKSB7Ci0gICAgICAvLyBBTUQuIFJlZ2lzdGVyIGFzIGFuIGFub255bW91
cyBtb2R1bGUuCi0gICAgICBkZWZpbmUoWyJ1bmRlcnNjb3JlIiwiYmFja2JvbmUiXSwgZnVuY3Rp
b24oXywgQmFja2JvbmUpIHsKLSAgICAgICAgLy8gVXNlIGdsb2JhbCB2YXJpYWJsZXMgaWYgdGhl
IGxvY2FscyBpcyB1bmRlZmluZWQuCi0gICAgICAgIHJldHVybiBmYWN0b3J5KF8gfHwgcm9vdC5f
LCBCYWNrYm9uZSB8fCByb290LkJhY2tib25lKTsKLSAgICAgIH0pOwotICAgfSBlbHNlIHsKLSAg
ICAgIC8vIFJlcXVpcmVKUyBpc24ndCBiZWluZyB1c2VkLiBBc3N1bWUgdW5kZXJzY29yZSBhbmQg
YmFja2JvbmUgaXMgbG9hZGVkIGluIDxzY3JpcHQ+IHRhZ3MKLSAgICAgIGZhY3RvcnkoXywgQmFj
a2JvbmUpOwotICAgfQotfSh0aGlzLCBmdW5jdGlvbihfLCBCYWNrYm9uZSkgewotLy8gQSBzaW1w
bGUgbW9kdWxlIHRvIHJlcGxhY2UgYEJhY2tib25lLnN5bmNgIHdpdGggKmxvY2FsU3RvcmFnZSot
YmFzZWQKLS8vIHBlcnNpc3RlbmNlLiBNb2RlbHMgYXJlIGdpdmVuIEdVSURTLCBhbmQgc2F2ZWQg
aW50byBhIEpTT04gb2JqZWN0LiBTaW1wbGUKLS8vIGFzIHRoYXQuCi0KLS8vIEhvbGQgcmVmZXJl
bmNlIHRvIFVuZGVyc2NvcmUuanMgYW5kIEJhY2tib25lLmpzIGluIHRoZSBjbG9zdXJlIGluIG9y
ZGVyCi0vLyB0byBtYWtlIHRoaW5ncyB3b3JrIGV2ZW4gaWYgdGhleSBhcmUgcmVtb3ZlZCBmcm9t
IHRoZSBnbG9iYWwgbmFtZXNwYWNlCi0KLS8vIEdlbmVyYXRlIGZvdXIgcmFuZG9tIGhleCBkaWdp
dHMuCi1mdW5jdGlvbiBTNCgpIHsKLSAgIHJldHVybiAoKCgxK01hdGgucmFuZG9tKCkpKjB4MTAw
MDApfDApLnRvU3RyaW5nKDE2KS5zdWJzdHJpbmcoMSk7Ci19OwotCi0vLyBHZW5lcmF0ZSBhIHBz
ZXVkby1HVUlEIGJ5IGNvbmNhdGVuYXRpbmcgcmFuZG9tIGhleGFkZWNpbWFsLgotZnVuY3Rpb24g
Z3VpZCgpIHsKLSAgIHJldHVybiAoUzQoKStTNCgpKyItIitTNCgpKyItIitTNCgpKyItIitTNCgp
KyItIitTNCgpK1M0KCkrUzQoKSk7Ci19OwotCi0vLyBPdXIgU3RvcmUgaXMgcmVwcmVzZW50ZWQg
YnkgYSBzaW5nbGUgSlMgb2JqZWN0IGluICpsb2NhbFN0b3JhZ2UqLiBDcmVhdGUgaXQKLS8vIHdp
dGggYSBtZWFuaW5nZnVsIG5hbWUsIGxpa2UgdGhlIG5hbWUgeW91J2QgZ2l2ZSBhIHRhYmxlLgot
Ly8gd2luZG93LlN0b3JlIGlzIGRlcHJlY3RhdGVkLCB1c2UgQmFja2JvbmUuTG9jYWxTdG9yYWdl
IGluc3RlYWQKLUJhY2tib25lLkxvY2FsU3RvcmFnZSA9IHdpbmRvdy5TdG9yZSA9IGZ1bmN0aW9u
KG5hbWUpIHsKLSAgdGhpcy5uYW1lID0gbmFtZTsKLSAgdmFyIHN0b3JlID0gdGhpcy5sb2NhbFN0
b3JhZ2UoKS5nZXRJdGVtKHRoaXMubmFtZSk7Ci0gIHRoaXMucmVjb3JkcyA9IChzdG9yZSAmJiBz
dG9yZS5zcGxpdCgiLCIpKSB8fCBbXTsKLX07Ci0KLV8uZXh0ZW5kKEJhY2tib25lLkxvY2FsU3Rv
cmFnZS5wcm90b3R5cGUsIHsKLQotICAvLyBTYXZlIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSAq
KlN0b3JlKiogdG8gKmxvY2FsU3RvcmFnZSouCi0gIHNhdmU6IGZ1bmN0aW9uKCkgewotICAgIHRo
aXMubG9jYWxTdG9yYWdlKCkuc2V0SXRlbSh0aGlzLm5hbWUsIHRoaXMucmVjb3Jkcy5qb2luKCIs
IikpOwotICB9LAotCi0gIC8vIEFkZCBhIG1vZGVsLCBnaXZpbmcgaXQgYSAoaG9wZWZ1bGx5KS11
bmlxdWUgR1VJRCwgaWYgaXQgZG9lc24ndCBhbHJlYWR5Ci0gIC8vIGhhdmUgYW4gaWQgb2YgaXQn
cyBvd24uCi0gIGNyZWF0ZTogZnVuY3Rpb24obW9kZWwpIHsKLSAgICBpZiAoIW1vZGVsLmlkKSB7
Ci0gICAgICBtb2RlbC5pZCA9IGd1aWQoKTsKLSAgICAgIG1vZGVsLnNldChtb2RlbC5pZEF0dHJp
YnV0ZSwgbW9kZWwuaWQpOwotICAgIH0KLSAgICB0aGlzLmxvY2FsU3RvcmFnZSgpLnNldEl0ZW0o
dGhpcy5uYW1lKyItIittb2RlbC5pZCwgSlNPTi5zdHJpbmdpZnkobW9kZWwpKTsKLSAgICB0aGlz
LnJlY29yZHMucHVzaChtb2RlbC5pZC50b1N0cmluZygpKTsKLSAgICB0aGlzLnNhdmUoKTsKLSAg
ICByZXR1cm4gdGhpcy5maW5kKG1vZGVsKTsKLSAgfSwKLQotICAvLyBVcGRhdGUgYSBtb2RlbCBi
eSByZXBsYWNpbmcgaXRzIGNvcHkgaW4gYHRoaXMuZGF0YWAuCi0gIHVwZGF0ZTogZnVuY3Rpb24o
bW9kZWwpIHsKLSAgICB0aGlzLmxvY2FsU3RvcmFnZSgpLnNldEl0ZW0odGhpcy5uYW1lKyItIitt
b2RlbC5pZCwgSlNPTi5zdHJpbmdpZnkobW9kZWwpKTsKLSAgICBpZiAoIV8uaW5jbHVkZSh0aGlz
LnJlY29yZHMsIG1vZGVsLmlkLnRvU3RyaW5nKCkpKQotICAgICAgdGhpcy5yZWNvcmRzLnB1c2go
bW9kZWwuaWQudG9TdHJpbmcoKSk7IHRoaXMuc2F2ZSgpOwotICAgIHJldHVybiB0aGlzLmZpbmQo
bW9kZWwpOwotICB9LAotCi0gIC8vIFJldHJpZXZlIGEgbW9kZWwgZnJvbSBgdGhpcy5kYXRhYCBi
eSBpZC4KLSAgZmluZDogZnVuY3Rpb24obW9kZWwpIHsKLSAgICByZXR1cm4gdGhpcy5qc29uRGF0
YSh0aGlzLmxvY2FsU3RvcmFnZSgpLmdldEl0ZW0odGhpcy5uYW1lKyItIittb2RlbC5pZCkpOwot
ICB9LAotCi0gIC8vIFJldHVybiB0aGUgYXJyYXkgb2YgYWxsIG1vZGVscyBjdXJyZW50bHkgaW4g
c3RvcmFnZS4KLSAgZmluZEFsbDogZnVuY3Rpb24oKSB7Ci0gICAgcmV0dXJuIF8odGhpcy5yZWNv
cmRzKS5jaGFpbigpCi0gICAgICAubWFwKGZ1bmN0aW9uKGlkKXsKLSAgICAgICAgcmV0dXJuIHRo
aXMuanNvbkRhdGEodGhpcy5sb2NhbFN0b3JhZ2UoKS5nZXRJdGVtKHRoaXMubmFtZSsiLSIraWQp
KTsKLSAgICAgIH0sIHRoaXMpCi0gICAgICAuY29tcGFjdCgpCi0gICAgICAudmFsdWUoKTsKLSAg
fSwKLQotICAvLyBEZWxldGUgYSBtb2RlbCBmcm9tIGB0aGlzLmRhdGFgLCByZXR1cm5pbmcgaXQu
Ci0gIGRlc3Ryb3k6IGZ1bmN0aW9uKG1vZGVsKSB7Ci0gICAgaWYgKG1vZGVsLmlzTmV3KCkpCi0g
ICAgICByZXR1cm4gZmFsc2UKLSAgICB0aGlzLmxvY2FsU3RvcmFnZSgpLnJlbW92ZUl0ZW0odGhp
cy5uYW1lKyItIittb2RlbC5pZCk7Ci0gICAgdGhpcy5yZWNvcmRzID0gXy5yZWplY3QodGhpcy5y
ZWNvcmRzLCBmdW5jdGlvbihpZCl7Ci0gICAgICByZXR1cm4gaWQgPT09IG1vZGVsLmlkLnRvU3Ry
aW5nKCk7Ci0gICAgfSk7Ci0gICAgdGhpcy5zYXZlKCk7Ci0gICAgcmV0dXJuIG1vZGVsOwotICB9
LAotCi0gIGxvY2FsU3RvcmFnZTogZnVuY3Rpb24oKSB7Ci0gICAgcmV0dXJuIGxvY2FsU3RvcmFn
ZTsKLSAgfSwKLSAgCi0gIC8vIGZpeCBmb3IgImlsbGVnYWwgYWNjZXNzIiBlcnJvciBvbiBBbmRy
b2lkIHdoZW4gSlNPTi5wYXJzZSBpcyBwYXNzZWQgbnVsbAotICBqc29uRGF0YTogZnVuY3Rpb24g
KGRhdGEpIHsKLSAgICAgIHJldHVybiBkYXRhICYmIEpTT04ucGFyc2UoZGF0YSk7Ci0gIH0KLQot
fSk7Ci0KLS8vIGxvY2FsU3luYyBkZWxlZ2F0ZSB0byB0aGUgbW9kZWwgb3IgY29sbGVjdGlvbidz
Ci0vLyAqbG9jYWxTdG9yYWdlKiBwcm9wZXJ0eSwgd2hpY2ggc2hvdWxkIGJlIGFuIGluc3RhbmNl
IG9mIGBTdG9yZWAuCi0vLyB3aW5kb3cuU3RvcmUuc3luYyBhbmQgQmFja2JvbmUubG9jYWxTeW5j
IGlzIGRlcHJlY3RhdGVkLCB1c2UgQmFja2JvbmUuTG9jYWxTdG9yYWdlLnN5bmMgaW5zdGVhZAot
QmFja2JvbmUuTG9jYWxTdG9yYWdlLnN5bmMgPSB3aW5kb3cuU3RvcmUuc3luYyA9IEJhY2tib25l
LmxvY2FsU3luYyA9IGZ1bmN0aW9uKG1ldGhvZCwgbW9kZWwsIG9wdGlvbnMpIHsKLSAgdmFyIHN0
b3JlID0gbW9kZWwubG9jYWxTdG9yYWdlIHx8IG1vZGVsLmNvbGxlY3Rpb24ubG9jYWxTdG9yYWdl
OwotCi0gIHZhciByZXNwLCBlcnJvck1lc3NhZ2UsIHN5bmNEZmQgPSAkLkRlZmVycmVkICYmICQu
RGVmZXJyZWQoKTsgLy9JZiAkIGlzIGhhdmluZyBEZWZlcnJlZCAtIHVzZSBpdC4gCi0KLSAgdHJ5
IHsKLQotICAgIHN3aXRjaCAobWV0aG9kKSB7Ci0gICAgICBjYXNlICJyZWFkIjoKLSAgICAgICAg
cmVzcCA9IG1vZGVsLmlkICE9IHVuZGVmaW5lZCA/IHN0b3JlLmZpbmQobW9kZWwpIDogc3RvcmUu
ZmluZEFsbCgpOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgImNyZWF0ZSI6Ci0gICAgICAg
IHJlc3AgPSBzdG9yZS5jcmVhdGUobW9kZWwpOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2Ug
InVwZGF0ZSI6Ci0gICAgICAgIHJlc3AgPSBzdG9yZS51cGRhdGUobW9kZWwpOwotICAgICAgICBi
cmVhazsKLSAgICAgIGNhc2UgImRlbGV0ZSI6Ci0gICAgICAgIHJlc3AgPSBzdG9yZS5kZXN0cm95
KG1vZGVsKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gIH0gY2F0Y2goZXJyb3IpIHsKLSAg
ICBpZiAoZXJyb3IuY29kZSA9PT0gRE9NRXhjZXB0aW9uLlFVT1RBX0VYQ0VFREVEX0VSUiAmJiB3
aW5kb3cubG9jYWxTdG9yYWdlLmxlbmd0aCA9PT0gMCkKLSAgICAgIGVycm9yTWVzc2FnZSA9ICJQ
cml2YXRlIGJyb3dzaW5nIGlzIHVuc3VwcG9ydGVkIjsKLSAgICBlbHNlCi0gICAgICBlcnJvck1l
c3NhZ2UgPSBlcnJvci5tZXNzYWdlOwotICB9Ci0KLSAgaWYgKHJlc3ApIHsKLSAgICBpZiAob3B0
aW9ucyAmJiBvcHRpb25zLnN1Y2Nlc3MpCi0gICAgICBpZiAoQmFja2JvbmUuVkVSU0lPTiA9PT0g
IjAuOS4xMCIpIHsKLSAgICAgICAgb3B0aW9ucy5zdWNjZXNzKG1vZGVsLCByZXNwLCBvcHRpb25z
KTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIG9wdGlvbnMuc3VjY2VzcyhyZXNwKTsKLSAgICAg
IH0KLSAgICBpZiAoc3luY0RmZCkKLSAgICAgIHN5bmNEZmQucmVzb2x2ZShyZXNwKTsKLQotICB9
IGVsc2UgewotICAgIGVycm9yTWVzc2FnZSA9IGVycm9yTWVzc2FnZSA/IGVycm9yTWVzc2FnZQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJSZWNvcmQgTm90IEZvdW5kIjsKLSAg
ICAKLSAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmVycm9yKQotICAgICAgaWYgKEJhY2tib25l
LlZFUlNJT04gPT09ICIwLjkuMTAiKSB7Ci0gICAgICAgIG9wdGlvbnMuZXJyb3IobW9kZWwsIGVy
cm9yTWVzc2FnZSwgb3B0aW9ucyk7Ci0gICAgICB9IGVsc2UgewotICAgICAgICBvcHRpb25zLmVy
cm9yKGVycm9yTWVzc2FnZSk7Ci0gICAgICB9Ci0gICAgICAKLSAgICBpZiAoc3luY0RmZCkKLSAg
ICAgIHN5bmNEZmQucmVqZWN0KGVycm9yTWVzc2FnZSk7Ci0gIH0KLSAgCi0gIC8vIGFkZCBjb21w
YXRpYmlsaXR5IHdpdGggJC5hamF4Ci0gIC8vIGFsd2F5cyBleGVjdXRlIGNhbGxiYWNrIGZvciBz
dWNjZXNzIGFuZCBlcnJvcgotICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmNvbXBsZXRlKSBvcHRp
b25zLmNvbXBsZXRlKHJlc3ApOwotCi0gIHJldHVybiBzeW5jRGZkICYmIHN5bmNEZmQucHJvbWlz
ZSgpOwotfTsKLQotQmFja2JvbmUuYWpheFN5bmMgPSBCYWNrYm9uZS5zeW5jOwotCi1CYWNrYm9u
ZS5nZXRTeW5jTWV0aG9kID0gZnVuY3Rpb24obW9kZWwpIHsKLSAgaWYobW9kZWwubG9jYWxTdG9y
YWdlIHx8IChtb2RlbC5jb2xsZWN0aW9uICYmIG1vZGVsLmNvbGxlY3Rpb24ubG9jYWxTdG9yYWdl
KSkgewotICAgIHJldHVybiBCYWNrYm9uZS5sb2NhbFN5bmM7Ci0gIH0KLQotICByZXR1cm4gQmFj
a2JvbmUuYWpheFN5bmM7Ci19OwotCi0vLyBPdmVycmlkZSAnQmFja2JvbmUuc3luYycgdG8gZGVm
YXVsdCB0byBsb2NhbFN5bmMsCi0vLyB0aGUgb3JpZ2luYWwgJ0JhY2tib25lLnN5bmMnIGlzIHN0
aWxsIGF2YWlsYWJsZSBpbiAnQmFja2JvbmUuYWpheFN5bmMnCi1CYWNrYm9uZS5zeW5jID0gZnVu
Y3Rpb24obWV0aG9kLCBtb2RlbCwgb3B0aW9ucykgewotICByZXR1cm4gQmFja2JvbmUuZ2V0U3lu
Y01ldGhvZChtb2RlbCkuYXBwbHkodGhpcywgW21ldGhvZCwgbW9kZWwsIG9wdGlvbnNdKTsKLX07
Ci0KLXJldHVybiBCYWNrYm9uZS5Mb2NhbFN0b3JhZ2U7Ci19KSk7ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvYm93ZXJfY29tcG9u
ZW50cy9iYWNrYm9uZS9iYWNrYm9uZS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL2Jvd2VyX2Nv
bXBvbmVudHMvYmFja2JvbmUvYmFja2JvbmUuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDM1MTJkNDJmYjQzYzgzZTJjZGQ4NjgwNGM4ZWYyNzZiZGEwMDZmZWYuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUv
Ym93ZXJfY29tcG9uZW50cy9iYWNrYm9uZS9iYWNrYm9uZS5qcworKysgL2Rldi9udWxsCkBAIC0x
LDE1NzEgKzAsMCBAQAotLy8gICAgIEJhY2tib25lLmpzIDEuMC4wCi0KLS8vICAgICAoYykgMjAx
MC0yMDEzIEplcmVteSBBc2hrZW5hcywgRG9jdW1lbnRDbG91ZCBJbmMuCi0vLyAgICAgQmFja2Jv
bmUgbWF5IGJlIGZyZWVseSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuCi0vLyAg
ICAgRm9yIGFsbCBkZXRhaWxzIGFuZCBkb2N1bWVudGF0aW9uOgotLy8gICAgIGh0dHA6Ly9iYWNr
Ym9uZWpzLm9yZwotCi0oZnVuY3Rpb24oKXsKLQotICAvLyBJbml0aWFsIFNldHVwCi0gIC8vIC0t
LS0tLS0tLS0tLS0KLQotICAvLyBTYXZlIGEgcmVmZXJlbmNlIHRvIHRoZSBnbG9iYWwgb2JqZWN0
IChgd2luZG93YCBpbiB0aGUgYnJvd3NlciwgYGV4cG9ydHNgCi0gIC8vIG9uIHRoZSBzZXJ2ZXIp
LgotICB2YXIgcm9vdCA9IHRoaXM7Ci0KLSAgLy8gU2F2ZSB0aGUgcHJldmlvdXMgdmFsdWUgb2Yg
dGhlIGBCYWNrYm9uZWAgdmFyaWFibGUsIHNvIHRoYXQgaXQgY2FuIGJlCi0gIC8vIHJlc3RvcmVk
IGxhdGVyIG9uLCBpZiBgbm9Db25mbGljdGAgaXMgdXNlZC4KLSAgdmFyIHByZXZpb3VzQmFja2Jv
bmUgPSByb290LkJhY2tib25lOwotCi0gIC8vIENyZWF0ZSBsb2NhbCByZWZlcmVuY2VzIHRvIGFy
cmF5IG1ldGhvZHMgd2UnbGwgd2FudCB0byB1c2UgbGF0ZXIuCi0gIHZhciBhcnJheSA9IFtdOwot
ICB2YXIgcHVzaCA9IGFycmF5LnB1c2g7Ci0gIHZhciBzbGljZSA9IGFycmF5LnNsaWNlOwotICB2
YXIgc3BsaWNlID0gYXJyYXkuc3BsaWNlOwotCi0gIC8vIFRoZSB0b3AtbGV2ZWwgbmFtZXNwYWNl
LiBBbGwgcHVibGljIEJhY2tib25lIGNsYXNzZXMgYW5kIG1vZHVsZXMgd2lsbAotICAvLyBiZSBh
dHRhY2hlZCB0byB0aGlzLiBFeHBvcnRlZCBmb3IgYm90aCB0aGUgYnJvd3NlciBhbmQgdGhlIHNl
cnZlci4KLSAgdmFyIEJhY2tib25lOwotICBpZiAodHlwZW9mIGV4cG9ydHMgIT09ICd1bmRlZmlu
ZWQnKSB7Ci0gICAgQmFja2JvbmUgPSBleHBvcnRzOwotICB9IGVsc2UgewotICAgIEJhY2tib25l
ID0gcm9vdC5CYWNrYm9uZSA9IHt9OwotICB9Ci0KLSAgLy8gQ3VycmVudCB2ZXJzaW9uIG9mIHRo
ZSBsaWJyYXJ5LiBLZWVwIGluIHN5bmMgd2l0aCBgcGFja2FnZS5qc29uYC4KLSAgQmFja2JvbmUu
VkVSU0lPTiA9ICcxLjAuMCc7Ci0KLSAgLy8gUmVxdWlyZSBVbmRlcnNjb3JlLCBpZiB3ZSdyZSBv
biB0aGUgc2VydmVyLCBhbmQgaXQncyBub3QgYWxyZWFkeSBwcmVzZW50LgotICB2YXIgXyA9IHJv
b3QuXzsKLSAgaWYgKCFfICYmICh0eXBlb2YgcmVxdWlyZSAhPT0gJ3VuZGVmaW5lZCcpKSBfID0g
cmVxdWlyZSgndW5kZXJzY29yZScpOwotCi0gIC8vIEZvciBCYWNrYm9uZSdzIHB1cnBvc2VzLCBq
UXVlcnksIFplcHRvLCBFbmRlciwgb3IgTXkgTGlicmFyeSAoa2lkZGluZykgb3ducwotICAvLyB0
aGUgYCRgIHZhcmlhYmxlLgotICBCYWNrYm9uZS4kID0gcm9vdC5qUXVlcnkgfHwgcm9vdC5aZXB0
byB8fCByb290LmVuZGVyIHx8IHJvb3QuJDsKLQotICAvLyBSdW5zIEJhY2tib25lLmpzIGluICpu
b0NvbmZsaWN0KiBtb2RlLCByZXR1cm5pbmcgdGhlIGBCYWNrYm9uZWAgdmFyaWFibGUKLSAgLy8g
dG8gaXRzIHByZXZpb3VzIG93bmVyLiBSZXR1cm5zIGEgcmVmZXJlbmNlIHRvIHRoaXMgQmFja2Jv
bmUgb2JqZWN0LgotICBCYWNrYm9uZS5ub0NvbmZsaWN0ID0gZnVuY3Rpb24oKSB7Ci0gICAgcm9v
dC5CYWNrYm9uZSA9IHByZXZpb3VzQmFja2JvbmU7Ci0gICAgcmV0dXJuIHRoaXM7Ci0gIH07Ci0K
LSAgLy8gVHVybiBvbiBgZW11bGF0ZUhUVFBgIHRvIHN1cHBvcnQgbGVnYWN5IEhUVFAgc2VydmVy
cy4gU2V0dGluZyB0aGlzIG9wdGlvbgotICAvLyB3aWxsIGZha2UgYCJQVVQiYCBhbmQgYCJERUxF
VEUiYCByZXF1ZXN0cyB2aWEgdGhlIGBfbWV0aG9kYCBwYXJhbWV0ZXIgYW5kCi0gIC8vIHNldCBh
IGBYLUh0dHAtTWV0aG9kLU92ZXJyaWRlYCBoZWFkZXIuCi0gIEJhY2tib25lLmVtdWxhdGVIVFRQ
ID0gZmFsc2U7Ci0KLSAgLy8gVHVybiBvbiBgZW11bGF0ZUpTT05gIHRvIHN1cHBvcnQgbGVnYWN5
IHNlcnZlcnMgdGhhdCBjYW4ndCBkZWFsIHdpdGggZGlyZWN0Ci0gIC8vIGBhcHBsaWNhdGlvbi9q
c29uYCByZXF1ZXN0cyAuLi4gd2lsbCBlbmNvZGUgdGhlIGJvZHkgYXMKLSAgLy8gYGFwcGxpY2F0
aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZGAgaW5zdGVhZCBhbmQgd2lsbCBzZW5kIHRoZSBtb2Rl
bCBpbiBhCi0gIC8vIGZvcm0gcGFyYW0gbmFtZWQgYG1vZGVsYC4KLSAgQmFja2JvbmUuZW11bGF0
ZUpTT04gPSBmYWxzZTsKLQotICAvLyBCYWNrYm9uZS5FdmVudHMKLSAgLy8gLS0tLS0tLS0tLS0t
LS0tCi0KLSAgLy8gQSBtb2R1bGUgdGhhdCBjYW4gYmUgbWl4ZWQgaW4gdG8gKmFueSBvYmplY3Qq
IGluIG9yZGVyIHRvIHByb3ZpZGUgaXQgd2l0aAotICAvLyBjdXN0b20gZXZlbnRzLiBZb3UgbWF5
IGJpbmQgd2l0aCBgb25gIG9yIHJlbW92ZSB3aXRoIGBvZmZgIGNhbGxiYWNrCi0gIC8vIGZ1bmN0
aW9ucyB0byBhbiBldmVudDsgYHRyaWdnZXJgLWluZyBhbiBldmVudCBmaXJlcyBhbGwgY2FsbGJh
Y2tzIGluCi0gIC8vIHN1Y2Nlc3Npb24uCi0gIC8vCi0gIC8vICAgICB2YXIgb2JqZWN0ID0ge307
Ci0gIC8vICAgICBfLmV4dGVuZChvYmplY3QsIEJhY2tib25lLkV2ZW50cyk7Ci0gIC8vICAgICBv
YmplY3Qub24oJ2V4cGFuZCcsIGZ1bmN0aW9uKCl7IGFsZXJ0KCdleHBhbmRlZCcpOyB9KTsKLSAg
Ly8gICAgIG9iamVjdC50cmlnZ2VyKCdleHBhbmQnKTsKLSAgLy8KLSAgdmFyIEV2ZW50cyA9IEJh
Y2tib25lLkV2ZW50cyA9IHsKLQotICAgIC8vIEJpbmQgYW4gZXZlbnQgdG8gYSBgY2FsbGJhY2tg
IGZ1bmN0aW9uLiBQYXNzaW5nIGAiYWxsImAgd2lsbCBiaW5kCi0gICAgLy8gdGhlIGNhbGxiYWNr
IHRvIGFsbCBldmVudHMgZmlyZWQuCi0gICAgb246IGZ1bmN0aW9uKG5hbWUsIGNhbGxiYWNrLCBj
b250ZXh0KSB7Ci0gICAgICBpZiAoIWV2ZW50c0FwaSh0aGlzLCAnb24nLCBuYW1lLCBbY2FsbGJh
Y2ssIGNvbnRleHRdKSB8fCAhY2FsbGJhY2spIHJldHVybiB0aGlzOwotICAgICAgdGhpcy5fZXZl
bnRzIHx8ICh0aGlzLl9ldmVudHMgPSB7fSk7Ci0gICAgICB2YXIgZXZlbnRzID0gdGhpcy5fZXZl
bnRzW25hbWVdIHx8ICh0aGlzLl9ldmVudHNbbmFtZV0gPSBbXSk7Ci0gICAgICBldmVudHMucHVz
aCh7Y2FsbGJhY2s6IGNhbGxiYWNrLCBjb250ZXh0OiBjb250ZXh0LCBjdHg6IGNvbnRleHQgfHwg
dGhpc30pOwotICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgfSwKLQotICAgIC8vIEJpbmQgYW4gZXZl
bnQgdG8gb25seSBiZSB0cmlnZ2VyZWQgYSBzaW5nbGUgdGltZS4gQWZ0ZXIgdGhlIGZpcnN0IHRp
bWUKLSAgICAvLyB0aGUgY2FsbGJhY2sgaXMgaW52b2tlZCwgaXQgd2lsbCBiZSByZW1vdmVkLgot
ICAgIG9uY2U6IGZ1bmN0aW9uKG5hbWUsIGNhbGxiYWNrLCBjb250ZXh0KSB7Ci0gICAgICBpZiAo
IWV2ZW50c0FwaSh0aGlzLCAnb25jZScsIG5hbWUsIFtjYWxsYmFjaywgY29udGV4dF0pIHx8ICFj
YWxsYmFjaykgcmV0dXJuIHRoaXM7Ci0gICAgICB2YXIgc2VsZiA9IHRoaXM7Ci0gICAgICB2YXIg
b25jZSA9IF8ub25jZShmdW5jdGlvbigpIHsKLSAgICAgICAgc2VsZi5vZmYobmFtZSwgb25jZSk7
Ci0gICAgICAgIGNhbGxiYWNrLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7Ci0gICAgICB9KTsKLSAg
ICAgIG9uY2UuX2NhbGxiYWNrID0gY2FsbGJhY2s7Ci0gICAgICByZXR1cm4gdGhpcy5vbihuYW1l
LCBvbmNlLCBjb250ZXh0KTsKLSAgICB9LAotCi0gICAgLy8gUmVtb3ZlIG9uZSBvciBtYW55IGNh
bGxiYWNrcy4gSWYgYGNvbnRleHRgIGlzIG51bGwsIHJlbW92ZXMgYWxsCi0gICAgLy8gY2FsbGJh
Y2tzIHdpdGggdGhhdCBmdW5jdGlvbi4gSWYgYGNhbGxiYWNrYCBpcyBudWxsLCByZW1vdmVzIGFs
bAotICAgIC8vIGNhbGxiYWNrcyBmb3IgdGhlIGV2ZW50LiBJZiBgbmFtZWAgaXMgbnVsbCwgcmVt
b3ZlcyBhbGwgYm91bmQKLSAgICAvLyBjYWxsYmFja3MgZm9yIGFsbCBldmVudHMuCi0gICAgb2Zm
OiBmdW5jdGlvbihuYW1lLCBjYWxsYmFjaywgY29udGV4dCkgewotICAgICAgdmFyIHJldGFpbiwg
ZXYsIGV2ZW50cywgbmFtZXMsIGksIGwsIGosIGs7Ci0gICAgICBpZiAoIXRoaXMuX2V2ZW50cyB8
fCAhZXZlbnRzQXBpKHRoaXMsICdvZmYnLCBuYW1lLCBbY2FsbGJhY2ssIGNvbnRleHRdKSkgcmV0
dXJuIHRoaXM7Ci0gICAgICBpZiAoIW5hbWUgJiYgIWNhbGxiYWNrICYmICFjb250ZXh0KSB7Ci0g
ICAgICAgIHRoaXMuX2V2ZW50cyA9IHt9OwotICAgICAgICByZXR1cm4gdGhpczsKLSAgICAgIH0K
LQotICAgICAgbmFtZXMgPSBuYW1lID8gW25hbWVdIDogXy5rZXlzKHRoaXMuX2V2ZW50cyk7Ci0g
ICAgICBmb3IgKGkgPSAwLCBsID0gbmFtZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7Ci0gICAgICAg
IG5hbWUgPSBuYW1lc1tpXTsKLSAgICAgICAgaWYgKGV2ZW50cyA9IHRoaXMuX2V2ZW50c1tuYW1l
XSkgewotICAgICAgICAgIHRoaXMuX2V2ZW50c1tuYW1lXSA9IHJldGFpbiA9IFtdOwotICAgICAg
ICAgIGlmIChjYWxsYmFjayB8fCBjb250ZXh0KSB7Ci0gICAgICAgICAgICBmb3IgKGogPSAwLCBr
ID0gZXZlbnRzLmxlbmd0aDsgaiA8IGs7IGorKykgewotICAgICAgICAgICAgICBldiA9IGV2ZW50
c1tqXTsKLSAgICAgICAgICAgICAgaWYgKChjYWxsYmFjayAmJiBjYWxsYmFjayAhPT0gZXYuY2Fs
bGJhY2sgJiYgY2FsbGJhY2sgIT09IGV2LmNhbGxiYWNrLl9jYWxsYmFjaykgfHwKLSAgICAgICAg
ICAgICAgICAgIChjb250ZXh0ICYmIGNvbnRleHQgIT09IGV2LmNvbnRleHQpKSB7Ci0gICAgICAg
ICAgICAgICAgcmV0YWluLnB1c2goZXYpOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgfQotICAgICAgICAgIGlmICghcmV0YWluLmxlbmd0aCkgZGVsZXRlIHRoaXMu
X2V2ZW50c1tuYW1lXTsKLSAgICAgICAgfQotICAgICAgfQotCi0gICAgICByZXR1cm4gdGhpczsK
LSAgICB9LAotCi0gICAgLy8gVHJpZ2dlciBvbmUgb3IgbWFueSBldmVudHMsIGZpcmluZyBhbGwg
Ym91bmQgY2FsbGJhY2tzLiBDYWxsYmFja3MgYXJlCi0gICAgLy8gcGFzc2VkIHRoZSBzYW1lIGFy
Z3VtZW50cyBhcyBgdHJpZ2dlcmAgaXMsIGFwYXJ0IGZyb20gdGhlIGV2ZW50IG5hbWUKLSAgICAv
LyAodW5sZXNzIHlvdSdyZSBsaXN0ZW5pbmcgb24gYCJhbGwiYCwgd2hpY2ggd2lsbCBjYXVzZSB5
b3VyIGNhbGxiYWNrIHRvCi0gICAgLy8gcmVjZWl2ZSB0aGUgdHJ1ZSBuYW1lIG9mIHRoZSBldmVu
dCBhcyB0aGUgZmlyc3QgYXJndW1lbnQpLgotICAgIHRyaWdnZXI6IGZ1bmN0aW9uKG5hbWUpIHsK
LSAgICAgIGlmICghdGhpcy5fZXZlbnRzKSByZXR1cm4gdGhpczsKLSAgICAgIHZhciBhcmdzID0g
c2xpY2UuY2FsbChhcmd1bWVudHMsIDEpOwotICAgICAgaWYgKCFldmVudHNBcGkodGhpcywgJ3Ry
aWdnZXInLCBuYW1lLCBhcmdzKSkgcmV0dXJuIHRoaXM7Ci0gICAgICB2YXIgZXZlbnRzID0gdGhp
cy5fZXZlbnRzW25hbWVdOwotICAgICAgdmFyIGFsbEV2ZW50cyA9IHRoaXMuX2V2ZW50cy5hbGw7
Ci0gICAgICBpZiAoZXZlbnRzKSB0cmlnZ2VyRXZlbnRzKGV2ZW50cywgYXJncyk7Ci0gICAgICBp
ZiAoYWxsRXZlbnRzKSB0cmlnZ2VyRXZlbnRzKGFsbEV2ZW50cywgYXJndW1lbnRzKTsKLSAgICAg
IHJldHVybiB0aGlzOwotICAgIH0sCi0KLSAgICAvLyBUZWxsIHRoaXMgb2JqZWN0IHRvIHN0b3Ag
bGlzdGVuaW5nIHRvIGVpdGhlciBzcGVjaWZpYyBldmVudHMgLi4uIG9yCi0gICAgLy8gdG8gZXZl
cnkgb2JqZWN0IGl0J3MgY3VycmVudGx5IGxpc3RlbmluZyB0by4KLSAgICBzdG9wTGlzdGVuaW5n
OiBmdW5jdGlvbihvYmosIG5hbWUsIGNhbGxiYWNrKSB7Ci0gICAgICB2YXIgbGlzdGVuZXJzID0g
dGhpcy5fbGlzdGVuZXJzOwotICAgICAgaWYgKCFsaXN0ZW5lcnMpIHJldHVybiB0aGlzOwotICAg
ICAgdmFyIGRlbGV0ZUxpc3RlbmVyID0gIW5hbWUgJiYgIWNhbGxiYWNrOwotICAgICAgaWYgKHR5
cGVvZiBuYW1lID09PSAnb2JqZWN0JykgY2FsbGJhY2sgPSB0aGlzOwotICAgICAgaWYgKG9iaikg
KGxpc3RlbmVycyA9IHt9KVtvYmouX2xpc3RlbmVySWRdID0gb2JqOwotICAgICAgZm9yICh2YXIg
aWQgaW4gbGlzdGVuZXJzKSB7Ci0gICAgICAgIGxpc3RlbmVyc1tpZF0ub2ZmKG5hbWUsIGNhbGxi
YWNrLCB0aGlzKTsKLSAgICAgICAgaWYgKGRlbGV0ZUxpc3RlbmVyKSBkZWxldGUgdGhpcy5fbGlz
dGVuZXJzW2lkXTsKLSAgICAgIH0KLSAgICAgIHJldHVybiB0aGlzOwotICAgIH0KLQotICB9Owot
Ci0gIC8vIFJlZ3VsYXIgZXhwcmVzc2lvbiB1c2VkIHRvIHNwbGl0IGV2ZW50IHN0cmluZ3MuCi0g
IHZhciBldmVudFNwbGl0dGVyID0gL1xzKy87Ci0KLSAgLy8gSW1wbGVtZW50IGZhbmN5IGZlYXR1
cmVzIG9mIHRoZSBFdmVudHMgQVBJIHN1Y2ggYXMgbXVsdGlwbGUgZXZlbnQKLSAgLy8gbmFtZXMg
YCJjaGFuZ2UgYmx1ciJgIGFuZCBqUXVlcnktc3R5bGUgZXZlbnQgbWFwcyBge2NoYW5nZTogYWN0
aW9ufWAKLSAgLy8gaW4gdGVybXMgb2YgdGhlIGV4aXN0aW5nIEFQSS4KLSAgdmFyIGV2ZW50c0Fw
aSA9IGZ1bmN0aW9uKG9iaiwgYWN0aW9uLCBuYW1lLCByZXN0KSB7Ci0gICAgaWYgKCFuYW1lKSBy
ZXR1cm4gdHJ1ZTsKLQotICAgIC8vIEhhbmRsZSBldmVudCBtYXBzLgotICAgIGlmICh0eXBlb2Yg
bmFtZSA9PT0gJ29iamVjdCcpIHsKLSAgICAgIGZvciAodmFyIGtleSBpbiBuYW1lKSB7Ci0gICAg
ICAgIG9ialthY3Rpb25dLmFwcGx5KG9iaiwgW2tleSwgbmFtZVtrZXldXS5jb25jYXQocmVzdCkp
OwotICAgICAgfQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIC8vIEhhbmRsZSBz
cGFjZSBzZXBhcmF0ZWQgZXZlbnQgbmFtZXMuCi0gICAgaWYgKGV2ZW50U3BsaXR0ZXIudGVzdChu
YW1lKSkgewotICAgICAgdmFyIG5hbWVzID0gbmFtZS5zcGxpdChldmVudFNwbGl0dGVyKTsKLSAg
ICAgIGZvciAodmFyIGkgPSAwLCBsID0gbmFtZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7Ci0gICAg
ICAgIG9ialthY3Rpb25dLmFwcGx5KG9iaiwgW25hbWVzW2ldXS5jb25jYXQocmVzdCkpOwotICAg
ICAgfQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotICB9
OwotCi0gIC8vIEEgZGlmZmljdWx0LXRvLWJlbGlldmUsIGJ1dCBvcHRpbWl6ZWQgaW50ZXJuYWwg
ZGlzcGF0Y2ggZnVuY3Rpb24gZm9yCi0gIC8vIHRyaWdnZXJpbmcgZXZlbnRzLiBUcmllcyB0byBr
ZWVwIHRoZSB1c3VhbCBjYXNlcyBzcGVlZHkgKG1vc3QgaW50ZXJuYWwKLSAgLy8gQmFja2JvbmUg
ZXZlbnRzIGhhdmUgMyBhcmd1bWVudHMpLgotICB2YXIgdHJpZ2dlckV2ZW50cyA9IGZ1bmN0aW9u
KGV2ZW50cywgYXJncykgewotICAgIHZhciBldiwgaSA9IC0xLCBsID0gZXZlbnRzLmxlbmd0aCwg
YTEgPSBhcmdzWzBdLCBhMiA9IGFyZ3NbMV0sIGEzID0gYXJnc1syXTsKLSAgICBzd2l0Y2ggKGFy
Z3MubGVuZ3RoKSB7Ci0gICAgICBjYXNlIDA6IHdoaWxlICgrK2kgPCBsKSAoZXYgPSBldmVudHNb
aV0pLmNhbGxiYWNrLmNhbGwoZXYuY3R4KTsgcmV0dXJuOwotICAgICAgY2FzZSAxOiB3aGlsZSAo
KytpIDwgbCkgKGV2ID0gZXZlbnRzW2ldKS5jYWxsYmFjay5jYWxsKGV2LmN0eCwgYTEpOyByZXR1
cm47Ci0gICAgICBjYXNlIDI6IHdoaWxlICgrK2kgPCBsKSAoZXYgPSBldmVudHNbaV0pLmNhbGxi
YWNrLmNhbGwoZXYuY3R4LCBhMSwgYTIpOyByZXR1cm47Ci0gICAgICBjYXNlIDM6IHdoaWxlICgr
K2kgPCBsKSAoZXYgPSBldmVudHNbaV0pLmNhbGxiYWNrLmNhbGwoZXYuY3R4LCBhMSwgYTIsIGEz
KTsgcmV0dXJuOwotICAgICAgZGVmYXVsdDogd2hpbGUgKCsraSA8IGwpIChldiA9IGV2ZW50c1tp
XSkuY2FsbGJhY2suYXBwbHkoZXYuY3R4LCBhcmdzKTsKLSAgICB9Ci0gIH07Ci0KLSAgdmFyIGxp
c3Rlbk1ldGhvZHMgPSB7bGlzdGVuVG86ICdvbicsIGxpc3RlblRvT25jZTogJ29uY2UnfTsKLQot
ICAvLyBJbnZlcnNpb24tb2YtY29udHJvbCB2ZXJzaW9ucyBvZiBgb25gIGFuZCBgb25jZWAuIFRl
bGwgKnRoaXMqIG9iamVjdCB0bwotICAvLyBsaXN0ZW4gdG8gYW4gZXZlbnQgaW4gYW5vdGhlciBv
YmplY3QgLi4uIGtlZXBpbmcgdHJhY2sgb2Ygd2hhdCBpdCdzCi0gIC8vIGxpc3RlbmluZyB0by4K
LSAgXy5lYWNoKGxpc3Rlbk1ldGhvZHMsIGZ1bmN0aW9uKGltcGxlbWVudGF0aW9uLCBtZXRob2Qp
IHsKLSAgICBFdmVudHNbbWV0aG9kXSA9IGZ1bmN0aW9uKG9iaiwgbmFtZSwgY2FsbGJhY2spIHsK
LSAgICAgIHZhciBsaXN0ZW5lcnMgPSB0aGlzLl9saXN0ZW5lcnMgfHwgKHRoaXMuX2xpc3RlbmVy
cyA9IHt9KTsKLSAgICAgIHZhciBpZCA9IG9iai5fbGlzdGVuZXJJZCB8fCAob2JqLl9saXN0ZW5l
cklkID0gXy51bmlxdWVJZCgnbCcpKTsKLSAgICAgIGxpc3RlbmVyc1tpZF0gPSBvYmo7Ci0gICAg
ICBpZiAodHlwZW9mIG5hbWUgPT09ICdvYmplY3QnKSBjYWxsYmFjayA9IHRoaXM7Ci0gICAgICBv
YmpbaW1wbGVtZW50YXRpb25dKG5hbWUsIGNhbGxiYWNrLCB0aGlzKTsKLSAgICAgIHJldHVybiB0
aGlzOwotICAgIH07Ci0gIH0pOwotCi0gIC8vIEFsaWFzZXMgZm9yIGJhY2t3YXJkcyBjb21wYXRp
YmlsaXR5LgotICBFdmVudHMuYmluZCAgID0gRXZlbnRzLm9uOwotICBFdmVudHMudW5iaW5kID0g
RXZlbnRzLm9mZjsKLQotICAvLyBBbGxvdyB0aGUgYEJhY2tib25lYCBvYmplY3QgdG8gc2VydmUg
YXMgYSBnbG9iYWwgZXZlbnQgYnVzLCBmb3IgZm9sa3Mgd2hvCi0gIC8vIHdhbnQgZ2xvYmFsICJw
dWJzdWIiIGluIGEgY29udmVuaWVudCBwbGFjZS4KLSAgXy5leHRlbmQoQmFja2JvbmUsIEV2ZW50
cyk7Ci0KLSAgLy8gQmFja2JvbmUuTW9kZWwKLSAgLy8gLS0tLS0tLS0tLS0tLS0KLQotICAvLyBC
YWNrYm9uZSAqKk1vZGVscyoqIGFyZSB0aGUgYmFzaWMgZGF0YSBvYmplY3QgaW4gdGhlIGZyYW1l
d29yayAtLQotICAvLyBmcmVxdWVudGx5IHJlcHJlc2VudGluZyBhIHJvdyBpbiBhIHRhYmxlIGlu
IGEgZGF0YWJhc2Ugb24geW91ciBzZXJ2ZXIuCi0gIC8vIEEgZGlzY3JldGUgY2h1bmsgb2YgZGF0
YSBhbmQgYSBidW5jaCBvZiB1c2VmdWwsIHJlbGF0ZWQgbWV0aG9kcyBmb3IKLSAgLy8gcGVyZm9y
bWluZyBjb21wdXRhdGlvbnMgYW5kIHRyYW5zZm9ybWF0aW9ucyBvbiB0aGF0IGRhdGEuCi0KLSAg
Ly8gQ3JlYXRlIGEgbmV3IG1vZGVsIHdpdGggdGhlIHNwZWNpZmllZCBhdHRyaWJ1dGVzLiBBIGNs
aWVudCBpZCAoYGNpZGApCi0gIC8vIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGFuZCBhc3Np
Z25lZCBmb3IgeW91LgotICB2YXIgTW9kZWwgPSBCYWNrYm9uZS5Nb2RlbCA9IGZ1bmN0aW9uKGF0
dHJpYnV0ZXMsIG9wdGlvbnMpIHsKLSAgICB2YXIgZGVmYXVsdHM7Ci0gICAgdmFyIGF0dHJzID0g
YXR0cmlidXRlcyB8fCB7fTsKLSAgICBvcHRpb25zIHx8IChvcHRpb25zID0ge30pOwotICAgIHRo
aXMuY2lkID0gXy51bmlxdWVJZCgnYycpOwotICAgIHRoaXMuYXR0cmlidXRlcyA9IHt9OwotICAg
IF8uZXh0ZW5kKHRoaXMsIF8ucGljayhvcHRpb25zLCBtb2RlbE9wdGlvbnMpKTsKLSAgICBpZiAo
b3B0aW9ucy5wYXJzZSkgYXR0cnMgPSB0aGlzLnBhcnNlKGF0dHJzLCBvcHRpb25zKSB8fCB7fTsK
LSAgICBpZiAoZGVmYXVsdHMgPSBfLnJlc3VsdCh0aGlzLCAnZGVmYXVsdHMnKSkgewotICAgICAg
YXR0cnMgPSBfLmRlZmF1bHRzKHt9LCBhdHRycywgZGVmYXVsdHMpOwotICAgIH0KLSAgICB0aGlz
LnNldChhdHRycywgb3B0aW9ucyk7Ci0gICAgdGhpcy5jaGFuZ2VkID0ge307Ci0gICAgdGhpcy5p
bml0aWFsaXplLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7Ci0gIH07Ci0KLSAgLy8gQSBsaXN0IG9m
IG9wdGlvbnMgdG8gYmUgYXR0YWNoZWQgZGlyZWN0bHkgdG8gdGhlIG1vZGVsLCBpZiBwcm92aWRl
ZC4KLSAgdmFyIG1vZGVsT3B0aW9ucyA9IFsndXJsJywgJ3VybFJvb3QnLCAnY29sbGVjdGlvbidd
OwotCi0gIC8vIEF0dGFjaCBhbGwgaW5oZXJpdGFibGUgbWV0aG9kcyB0byB0aGUgTW9kZWwgcHJv
dG90eXBlLgotICBfLmV4dGVuZChNb2RlbC5wcm90b3R5cGUsIEV2ZW50cywgewotCi0gICAgLy8g
QSBoYXNoIG9mIGF0dHJpYnV0ZXMgd2hvc2UgY3VycmVudCBhbmQgcHJldmlvdXMgdmFsdWUgZGlm
ZmVyLgotICAgIGNoYW5nZWQ6IG51bGwsCi0KLSAgICAvLyBUaGUgdmFsdWUgcmV0dXJuZWQgZHVy
aW5nIHRoZSBsYXN0IGZhaWxlZCB2YWxpZGF0aW9uLgotICAgIHZhbGlkYXRpb25FcnJvcjogbnVs
bCwKLQotICAgIC8vIFRoZSBkZWZhdWx0IG5hbWUgZm9yIHRoZSBKU09OIGBpZGAgYXR0cmlidXRl
IGlzIGAiaWQiYC4gTW9uZ29EQiBhbmQKLSAgICAvLyBDb3VjaERCIHVzZXJzIG1heSB3YW50IHRv
IHNldCB0aGlzIHRvIGAiX2lkImAuCi0gICAgaWRBdHRyaWJ1dGU6ICdpZCcsCi0KLSAgICAvLyBJ
bml0aWFsaXplIGlzIGFuIGVtcHR5IGZ1bmN0aW9uIGJ5IGRlZmF1bHQuIE92ZXJyaWRlIGl0IHdp
dGggeW91ciBvd24KLSAgICAvLyBpbml0aWFsaXphdGlvbiBsb2dpYy4KLSAgICBpbml0aWFsaXpl
OiBmdW5jdGlvbigpe30sCi0KLSAgICAvLyBSZXR1cm4gYSBjb3B5IG9mIHRoZSBtb2RlbCdzIGBh
dHRyaWJ1dGVzYCBvYmplY3QuCi0gICAgdG9KU09OOiBmdW5jdGlvbihvcHRpb25zKSB7Ci0gICAg
ICByZXR1cm4gXy5jbG9uZSh0aGlzLmF0dHJpYnV0ZXMpOwotICAgIH0sCi0KLSAgICAvLyBQcm94
eSBgQmFja2JvbmUuc3luY2AgYnkgZGVmYXVsdCAtLSBidXQgb3ZlcnJpZGUgdGhpcyBpZiB5b3Ug
bmVlZAotICAgIC8vIGN1c3RvbSBzeW5jaW5nIHNlbWFudGljcyBmb3IgKnRoaXMqIHBhcnRpY3Vs
YXIgbW9kZWwuCi0gICAgc3luYzogZnVuY3Rpb24oKSB7Ci0gICAgICByZXR1cm4gQmFja2JvbmUu
c3luYy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwotICAgIH0sCi0KLSAgICAvLyBHZXQgdGhlIHZh
bHVlIG9mIGFuIGF0dHJpYnV0ZS4KLSAgICBnZXQ6IGZ1bmN0aW9uKGF0dHIpIHsKLSAgICAgIHJl
dHVybiB0aGlzLmF0dHJpYnV0ZXNbYXR0cl07Ci0gICAgfSwKLQotICAgIC8vIEdldCB0aGUgSFRN
TC1lc2NhcGVkIHZhbHVlIG9mIGFuIGF0dHJpYnV0ZS4KLSAgICBlc2NhcGU6IGZ1bmN0aW9uKGF0
dHIpIHsKLSAgICAgIHJldHVybiBfLmVzY2FwZSh0aGlzLmdldChhdHRyKSk7Ci0gICAgfSwKLQot
ICAgIC8vIFJldHVybnMgYHRydWVgIGlmIHRoZSBhdHRyaWJ1dGUgY29udGFpbnMgYSB2YWx1ZSB0
aGF0IGlzIG5vdCBudWxsCi0gICAgLy8gb3IgdW5kZWZpbmVkLgotICAgIGhhczogZnVuY3Rpb24o
YXR0cikgewotICAgICAgcmV0dXJuIHRoaXMuZ2V0KGF0dHIpICE9IG51bGw7Ci0gICAgfSwKLQot
ICAgIC8vIFNldCBhIGhhc2ggb2YgbW9kZWwgYXR0cmlidXRlcyBvbiB0aGUgb2JqZWN0LCBmaXJp
bmcgYCJjaGFuZ2UiYC4gVGhpcyBpcwotICAgIC8vIHRoZSBjb3JlIHByaW1pdGl2ZSBvcGVyYXRp
b24gb2YgYSBtb2RlbCwgdXBkYXRpbmcgdGhlIGRhdGEgYW5kIG5vdGlmeWluZwotICAgIC8vIGFu
eW9uZSB3aG8gbmVlZHMgdG8ga25vdyBhYm91dCB0aGUgY2hhbmdlIGluIHN0YXRlLiBUaGUgaGVh
cnQgb2YgdGhlIGJlYXN0LgotICAgIHNldDogZnVuY3Rpb24oa2V5LCB2YWwsIG9wdGlvbnMpIHsK
LSAgICAgIHZhciBhdHRyLCBhdHRycywgdW5zZXQsIGNoYW5nZXMsIHNpbGVudCwgY2hhbmdpbmcs
IHByZXYsIGN1cnJlbnQ7Ci0gICAgICBpZiAoa2V5ID09IG51bGwpIHJldHVybiB0aGlzOwotCi0g
ICAgICAvLyBIYW5kbGUgYm90aCBgImtleSIsIHZhbHVlYCBhbmQgYHtrZXk6IHZhbHVlfWAgLXN0
eWxlIGFyZ3VtZW50cy4KLSAgICAgIGlmICh0eXBlb2Yga2V5ID09PSAnb2JqZWN0JykgewotICAg
ICAgICBhdHRycyA9IGtleTsKLSAgICAgICAgb3B0aW9ucyA9IHZhbDsKLSAgICAgIH0gZWxzZSB7
Ci0gICAgICAgIChhdHRycyA9IHt9KVtrZXldID0gdmFsOwotICAgICAgfQotCi0gICAgICBvcHRp
b25zIHx8IChvcHRpb25zID0ge30pOwotCi0gICAgICAvLyBSdW4gdmFsaWRhdGlvbi4KLSAgICAg
IGlmICghdGhpcy5fdmFsaWRhdGUoYXR0cnMsIG9wdGlvbnMpKSByZXR1cm4gZmFsc2U7Ci0KLSAg
ICAgIC8vIEV4dHJhY3QgYXR0cmlidXRlcyBhbmQgb3B0aW9ucy4KLSAgICAgIHVuc2V0ICAgICAg
ICAgICA9IG9wdGlvbnMudW5zZXQ7Ci0gICAgICBzaWxlbnQgICAgICAgICAgPSBvcHRpb25zLnNp
bGVudDsKLSAgICAgIGNoYW5nZXMgICAgICAgICA9IFtdOwotICAgICAgY2hhbmdpbmcgICAgICAg
ID0gdGhpcy5fY2hhbmdpbmc7Ci0gICAgICB0aGlzLl9jaGFuZ2luZyAgPSB0cnVlOwotCi0gICAg
ICBpZiAoIWNoYW5naW5nKSB7Ci0gICAgICAgIHRoaXMuX3ByZXZpb3VzQXR0cmlidXRlcyA9IF8u
Y2xvbmUodGhpcy5hdHRyaWJ1dGVzKTsKLSAgICAgICAgdGhpcy5jaGFuZ2VkID0ge307Ci0gICAg
ICB9Ci0gICAgICBjdXJyZW50ID0gdGhpcy5hdHRyaWJ1dGVzLCBwcmV2ID0gdGhpcy5fcHJldmlv
dXNBdHRyaWJ1dGVzOwotCi0gICAgICAvLyBDaGVjayBmb3IgY2hhbmdlcyBvZiBgaWRgLgotICAg
ICAgaWYgKHRoaXMuaWRBdHRyaWJ1dGUgaW4gYXR0cnMpIHRoaXMuaWQgPSBhdHRyc1t0aGlzLmlk
QXR0cmlidXRlXTsKLQotICAgICAgLy8gRm9yIGVhY2ggYHNldGAgYXR0cmlidXRlLCB1cGRhdGUg
b3IgZGVsZXRlIHRoZSBjdXJyZW50IHZhbHVlLgotICAgICAgZm9yIChhdHRyIGluIGF0dHJzKSB7
Ci0gICAgICAgIHZhbCA9IGF0dHJzW2F0dHJdOwotICAgICAgICBpZiAoIV8uaXNFcXVhbChjdXJy
ZW50W2F0dHJdLCB2YWwpKSBjaGFuZ2VzLnB1c2goYXR0cik7Ci0gICAgICAgIGlmICghXy5pc0Vx
dWFsKHByZXZbYXR0cl0sIHZhbCkpIHsKLSAgICAgICAgICB0aGlzLmNoYW5nZWRbYXR0cl0gPSB2
YWw7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgZGVsZXRlIHRoaXMuY2hhbmdlZFthdHRy
XTsKLSAgICAgICAgfQotICAgICAgICB1bnNldCA/IGRlbGV0ZSBjdXJyZW50W2F0dHJdIDogY3Vy
cmVudFthdHRyXSA9IHZhbDsKLSAgICAgIH0KLQotICAgICAgLy8gVHJpZ2dlciBhbGwgcmVsZXZh
bnQgYXR0cmlidXRlIGNoYW5nZXMuCi0gICAgICBpZiAoIXNpbGVudCkgewotICAgICAgICBpZiAo
Y2hhbmdlcy5sZW5ndGgpIHRoaXMuX3BlbmRpbmcgPSB0cnVlOwotICAgICAgICBmb3IgKHZhciBp
ID0gMCwgbCA9IGNoYW5nZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7Ci0gICAgICAgICAgdGhpcy50
cmlnZ2VyKCdjaGFuZ2U6JyArIGNoYW5nZXNbaV0sIHRoaXMsIGN1cnJlbnRbY2hhbmdlc1tpXV0s
IG9wdGlvbnMpOwotICAgICAgICB9Ci0gICAgICB9Ci0KLSAgICAgIC8vIFlvdSBtaWdodCBiZSB3
b25kZXJpbmcgd2h5IHRoZXJlJ3MgYSBgd2hpbGVgIGxvb3AgaGVyZS4gQ2hhbmdlcyBjYW4KLSAg
ICAgIC8vIGJlIHJlY3Vyc2l2ZWx5IG5lc3RlZCB3aXRoaW4gYCJjaGFuZ2UiYCBldmVudHMuCi0g
ICAgICBpZiAoY2hhbmdpbmcpIHJldHVybiB0aGlzOwotICAgICAgaWYgKCFzaWxlbnQpIHsKLSAg
ICAgICAgd2hpbGUgKHRoaXMuX3BlbmRpbmcpIHsKLSAgICAgICAgICB0aGlzLl9wZW5kaW5nID0g
ZmFsc2U7Ci0gICAgICAgICAgdGhpcy50cmlnZ2VyKCdjaGFuZ2UnLCB0aGlzLCBvcHRpb25zKTsK
LSAgICAgICAgfQotICAgICAgfQotICAgICAgdGhpcy5fcGVuZGluZyA9IGZhbHNlOwotICAgICAg
dGhpcy5fY2hhbmdpbmcgPSBmYWxzZTsKLSAgICAgIHJldHVybiB0aGlzOwotICAgIH0sCi0KLSAg
ICAvLyBSZW1vdmUgYW4gYXR0cmlidXRlIGZyb20gdGhlIG1vZGVsLCBmaXJpbmcgYCJjaGFuZ2Ui
YC4gYHVuc2V0YCBpcyBhIG5vb3AKLSAgICAvLyBpZiB0aGUgYXR0cmlidXRlIGRvZXNuJ3QgZXhp
c3QuCi0gICAgdW5zZXQ6IGZ1bmN0aW9uKGF0dHIsIG9wdGlvbnMpIHsKLSAgICAgIHJldHVybiB0
aGlzLnNldChhdHRyLCB2b2lkIDAsIF8uZXh0ZW5kKHt9LCBvcHRpb25zLCB7dW5zZXQ6IHRydWV9
KSk7Ci0gICAgfSwKLQotICAgIC8vIENsZWFyIGFsbCBhdHRyaWJ1dGVzIG9uIHRoZSBtb2RlbCwg
ZmlyaW5nIGAiY2hhbmdlImAuCi0gICAgY2xlYXI6IGZ1bmN0aW9uKG9wdGlvbnMpIHsKLSAgICAg
IHZhciBhdHRycyA9IHt9OwotICAgICAgZm9yICh2YXIga2V5IGluIHRoaXMuYXR0cmlidXRlcykg
YXR0cnNba2V5XSA9IHZvaWQgMDsKLSAgICAgIHJldHVybiB0aGlzLnNldChhdHRycywgXy5leHRl
bmQoe30sIG9wdGlvbnMsIHt1bnNldDogdHJ1ZX0pKTsKLSAgICB9LAotCi0gICAgLy8gRGV0ZXJt
aW5lIGlmIHRoZSBtb2RlbCBoYXMgY2hhbmdlZCBzaW5jZSB0aGUgbGFzdCBgImNoYW5nZSJgIGV2
ZW50LgotICAgIC8vIElmIHlvdSBzcGVjaWZ5IGFuIGF0dHJpYnV0ZSBuYW1lLCBkZXRlcm1pbmUg
aWYgdGhhdCBhdHRyaWJ1dGUgaGFzIGNoYW5nZWQuCi0gICAgaGFzQ2hhbmdlZDogZnVuY3Rpb24o
YXR0cikgewotICAgICAgaWYgKGF0dHIgPT0gbnVsbCkgcmV0dXJuICFfLmlzRW1wdHkodGhpcy5j
aGFuZ2VkKTsKLSAgICAgIHJldHVybiBfLmhhcyh0aGlzLmNoYW5nZWQsIGF0dHIpOwotICAgIH0s
Ci0KLSAgICAvLyBSZXR1cm4gYW4gb2JqZWN0IGNvbnRhaW5pbmcgYWxsIHRoZSBhdHRyaWJ1dGVz
IHRoYXQgaGF2ZSBjaGFuZ2VkLCBvcgotICAgIC8vIGZhbHNlIGlmIHRoZXJlIGFyZSBubyBjaGFu
Z2VkIGF0dHJpYnV0ZXMuIFVzZWZ1bCBmb3IgZGV0ZXJtaW5pbmcgd2hhdAotICAgIC8vIHBhcnRz
IG9mIGEgdmlldyBuZWVkIHRvIGJlIHVwZGF0ZWQgYW5kL29yIHdoYXQgYXR0cmlidXRlcyBuZWVk
IHRvIGJlCi0gICAgLy8gcGVyc2lzdGVkIHRvIHRoZSBzZXJ2ZXIuIFVuc2V0IGF0dHJpYnV0ZXMg
d2lsbCBiZSBzZXQgdG8gdW5kZWZpbmVkLgotICAgIC8vIFlvdSBjYW4gYWxzbyBwYXNzIGFuIGF0
dHJpYnV0ZXMgb2JqZWN0IHRvIGRpZmYgYWdhaW5zdCB0aGUgbW9kZWwsCi0gICAgLy8gZGV0ZXJt
aW5pbmcgaWYgdGhlcmUgKndvdWxkIGJlKiBhIGNoYW5nZS4KLSAgICBjaGFuZ2VkQXR0cmlidXRl
czogZnVuY3Rpb24oZGlmZikgewotICAgICAgaWYgKCFkaWZmKSByZXR1cm4gdGhpcy5oYXNDaGFu
Z2VkKCkgPyBfLmNsb25lKHRoaXMuY2hhbmdlZCkgOiBmYWxzZTsKLSAgICAgIHZhciB2YWwsIGNo
YW5nZWQgPSBmYWxzZTsKLSAgICAgIHZhciBvbGQgPSB0aGlzLl9jaGFuZ2luZyA/IHRoaXMuX3By
ZXZpb3VzQXR0cmlidXRlcyA6IHRoaXMuYXR0cmlidXRlczsKLSAgICAgIGZvciAodmFyIGF0dHIg
aW4gZGlmZikgewotICAgICAgICBpZiAoXy5pc0VxdWFsKG9sZFthdHRyXSwgKHZhbCA9IGRpZmZb
YXR0cl0pKSkgY29udGludWU7Ci0gICAgICAgIChjaGFuZ2VkIHx8IChjaGFuZ2VkID0ge30pKVth
dHRyXSA9IHZhbDsKLSAgICAgIH0KLSAgICAgIHJldHVybiBjaGFuZ2VkOwotICAgIH0sCi0KLSAg
ICAvLyBHZXQgdGhlIHByZXZpb3VzIHZhbHVlIG9mIGFuIGF0dHJpYnV0ZSwgcmVjb3JkZWQgYXQg
dGhlIHRpbWUgdGhlIGxhc3QKLSAgICAvLyBgImNoYW5nZSJgIGV2ZW50IHdhcyBmaXJlZC4KLSAg
ICBwcmV2aW91czogZnVuY3Rpb24oYXR0cikgewotICAgICAgaWYgKGF0dHIgPT0gbnVsbCB8fCAh
dGhpcy5fcHJldmlvdXNBdHRyaWJ1dGVzKSByZXR1cm4gbnVsbDsKLSAgICAgIHJldHVybiB0aGlz
Ll9wcmV2aW91c0F0dHJpYnV0ZXNbYXR0cl07Ci0gICAgfSwKLQotICAgIC8vIEdldCBhbGwgb2Yg
dGhlIGF0dHJpYnV0ZXMgb2YgdGhlIG1vZGVsIGF0IHRoZSB0aW1lIG9mIHRoZSBwcmV2aW91cwot
ICAgIC8vIGAiY2hhbmdlImAgZXZlbnQuCi0gICAgcHJldmlvdXNBdHRyaWJ1dGVzOiBmdW5jdGlv
bigpIHsKLSAgICAgIHJldHVybiBfLmNsb25lKHRoaXMuX3ByZXZpb3VzQXR0cmlidXRlcyk7Ci0g
ICAgfSwKLQotICAgIC8vIEZldGNoIHRoZSBtb2RlbCBmcm9tIHRoZSBzZXJ2ZXIuIElmIHRoZSBz
ZXJ2ZXIncyByZXByZXNlbnRhdGlvbiBvZiB0aGUKLSAgICAvLyBtb2RlbCBkaWZmZXJzIGZyb20g
aXRzIGN1cnJlbnQgYXR0cmlidXRlcywgdGhleSB3aWxsIGJlIG92ZXJyaWRkZW4sCi0gICAgLy8g
dHJpZ2dlcmluZyBhIGAiY2hhbmdlImAgZXZlbnQuCi0gICAgZmV0Y2g6IGZ1bmN0aW9uKG9wdGlv
bnMpIHsKLSAgICAgIG9wdGlvbnMgPSBvcHRpb25zID8gXy5jbG9uZShvcHRpb25zKSA6IHt9Owot
ICAgICAgaWYgKG9wdGlvbnMucGFyc2UgPT09IHZvaWQgMCkgb3B0aW9ucy5wYXJzZSA9IHRydWU7
Ci0gICAgICB2YXIgbW9kZWwgPSB0aGlzOwotICAgICAgdmFyIHN1Y2Nlc3MgPSBvcHRpb25zLnN1
Y2Nlc3M7Ci0gICAgICBvcHRpb25zLnN1Y2Nlc3MgPSBmdW5jdGlvbihyZXNwKSB7Ci0gICAgICAg
IGlmICghbW9kZWwuc2V0KG1vZGVsLnBhcnNlKHJlc3AsIG9wdGlvbnMpLCBvcHRpb25zKSkgcmV0
dXJuIGZhbHNlOwotICAgICAgICBpZiAoc3VjY2Vzcykgc3VjY2Vzcyhtb2RlbCwgcmVzcCwgb3B0
aW9ucyk7Ci0gICAgICAgIG1vZGVsLnRyaWdnZXIoJ3N5bmMnLCBtb2RlbCwgcmVzcCwgb3B0aW9u
cyk7Ci0gICAgICB9OwotICAgICAgd3JhcEVycm9yKHRoaXMsIG9wdGlvbnMpOwotICAgICAgcmV0
dXJuIHRoaXMuc3luYygncmVhZCcsIHRoaXMsIG9wdGlvbnMpOwotICAgIH0sCi0KLSAgICAvLyBT
ZXQgYSBoYXNoIG9mIG1vZGVsIGF0dHJpYnV0ZXMsIGFuZCBzeW5jIHRoZSBtb2RlbCB0byB0aGUg
c2VydmVyLgotICAgIC8vIElmIHRoZSBzZXJ2ZXIgcmV0dXJucyBhbiBhdHRyaWJ1dGVzIGhhc2gg
dGhhdCBkaWZmZXJzLCB0aGUgbW9kZWwncwotICAgIC8vIHN0YXRlIHdpbGwgYmUgYHNldGAgYWdh
aW4uCi0gICAgc2F2ZTogZnVuY3Rpb24oa2V5LCB2YWwsIG9wdGlvbnMpIHsKLSAgICAgIHZhciBh
dHRycywgbWV0aG9kLCB4aHIsIGF0dHJpYnV0ZXMgPSB0aGlzLmF0dHJpYnV0ZXM7Ci0KLSAgICAg
IC8vIEhhbmRsZSBib3RoIGAia2V5IiwgdmFsdWVgIGFuZCBge2tleTogdmFsdWV9YCAtc3R5bGUg
YXJndW1lbnRzLgotICAgICAgaWYgKGtleSA9PSBudWxsIHx8IHR5cGVvZiBrZXkgPT09ICdvYmpl
Y3QnKSB7Ci0gICAgICAgIGF0dHJzID0ga2V5OwotICAgICAgICBvcHRpb25zID0gdmFsOwotICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgKGF0dHJzID0ge30pW2tleV0gPSB2YWw7Ci0gICAgICB9Ci0K
LSAgICAgIC8vIElmIHdlJ3JlIG5vdCB3YWl0aW5nIGFuZCBhdHRyaWJ1dGVzIGV4aXN0LCBzYXZl
IGFjdHMgYXMgYHNldChhdHRyKS5zYXZlKG51bGwsIG9wdHMpYC4KLSAgICAgIGlmIChhdHRycyAm
JiAoIW9wdGlvbnMgfHwgIW9wdGlvbnMud2FpdCkgJiYgIXRoaXMuc2V0KGF0dHJzLCBvcHRpb25z
KSkgcmV0dXJuIGZhbHNlOwotCi0gICAgICBvcHRpb25zID0gXy5leHRlbmQoe3ZhbGlkYXRlOiB0
cnVlfSwgb3B0aW9ucyk7Ci0KLSAgICAgIC8vIERvIG5vdCBwZXJzaXN0IGludmFsaWQgbW9kZWxz
LgotICAgICAgaWYgKCF0aGlzLl92YWxpZGF0ZShhdHRycywgb3B0aW9ucykpIHJldHVybiBmYWxz
ZTsKLQotICAgICAgLy8gU2V0IHRlbXBvcmFyeSBhdHRyaWJ1dGVzIGlmIGB7d2FpdDogdHJ1ZX1g
LgotICAgICAgaWYgKGF0dHJzICYmIG9wdGlvbnMud2FpdCkgewotICAgICAgICB0aGlzLmF0dHJp
YnV0ZXMgPSBfLmV4dGVuZCh7fSwgYXR0cmlidXRlcywgYXR0cnMpOwotICAgICAgfQotCi0gICAg
ICAvLyBBZnRlciBhIHN1Y2Nlc3NmdWwgc2VydmVyLXNpZGUgc2F2ZSwgdGhlIGNsaWVudCBpcyAo
b3B0aW9uYWxseSkKLSAgICAgIC8vIHVwZGF0ZWQgd2l0aCB0aGUgc2VydmVyLXNpZGUgc3RhdGUu
Ci0gICAgICBpZiAob3B0aW9ucy5wYXJzZSA9PT0gdm9pZCAwKSBvcHRpb25zLnBhcnNlID0gdHJ1
ZTsKLSAgICAgIHZhciBtb2RlbCA9IHRoaXM7Ci0gICAgICB2YXIgc3VjY2VzcyA9IG9wdGlvbnMu
c3VjY2VzczsKLSAgICAgIG9wdGlvbnMuc3VjY2VzcyA9IGZ1bmN0aW9uKHJlc3ApIHsKLSAgICAg
ICAgLy8gRW5zdXJlIGF0dHJpYnV0ZXMgYXJlIHJlc3RvcmVkIGR1cmluZyBzeW5jaHJvbm91cyBz
YXZlcy4KLSAgICAgICAgbW9kZWwuYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXM7Ci0gICAgICAgIHZh
ciBzZXJ2ZXJBdHRycyA9IG1vZGVsLnBhcnNlKHJlc3AsIG9wdGlvbnMpOwotICAgICAgICBpZiAo
b3B0aW9ucy53YWl0KSBzZXJ2ZXJBdHRycyA9IF8uZXh0ZW5kKGF0dHJzIHx8IHt9LCBzZXJ2ZXJB
dHRycyk7Ci0gICAgICAgIGlmIChfLmlzT2JqZWN0KHNlcnZlckF0dHJzKSAmJiAhbW9kZWwuc2V0
KHNlcnZlckF0dHJzLCBvcHRpb25zKSkgewotICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgfQotICAgICAgICBpZiAoc3VjY2Vzcykgc3VjY2Vzcyhtb2RlbCwgcmVzcCwgb3B0aW9ucyk7
Ci0gICAgICAgIG1vZGVsLnRyaWdnZXIoJ3N5bmMnLCBtb2RlbCwgcmVzcCwgb3B0aW9ucyk7Ci0g
ICAgICB9OwotICAgICAgd3JhcEVycm9yKHRoaXMsIG9wdGlvbnMpOwotCi0gICAgICBtZXRob2Qg
PSB0aGlzLmlzTmV3KCkgPyAnY3JlYXRlJyA6IChvcHRpb25zLnBhdGNoID8gJ3BhdGNoJyA6ICd1
cGRhdGUnKTsKLSAgICAgIGlmIChtZXRob2QgPT09ICdwYXRjaCcpIG9wdGlvbnMuYXR0cnMgPSBh
dHRyczsKLSAgICAgIHhociA9IHRoaXMuc3luYyhtZXRob2QsIHRoaXMsIG9wdGlvbnMpOwotCi0g
ICAgICAvLyBSZXN0b3JlIGF0dHJpYnV0ZXMuCi0gICAgICBpZiAoYXR0cnMgJiYgb3B0aW9ucy53
YWl0KSB0aGlzLmF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzOwotCi0gICAgICByZXR1cm4geGhyOwot
ICAgIH0sCi0KLSAgICAvLyBEZXN0cm95IHRoaXMgbW9kZWwgb24gdGhlIHNlcnZlciBpZiBpdCB3
YXMgYWxyZWFkeSBwZXJzaXN0ZWQuCi0gICAgLy8gT3B0aW1pc3RpY2FsbHkgcmVtb3ZlcyB0aGUg
bW9kZWwgZnJvbSBpdHMgY29sbGVjdGlvbiwgaWYgaXQgaGFzIG9uZS4KLSAgICAvLyBJZiBgd2Fp
dDogdHJ1ZWAgaXMgcGFzc2VkLCB3YWl0cyBmb3IgdGhlIHNlcnZlciB0byByZXNwb25kIGJlZm9y
ZSByZW1vdmFsLgotICAgIGRlc3Ryb3k6IGZ1bmN0aW9uKG9wdGlvbnMpIHsKLSAgICAgIG9wdGlv
bnMgPSBvcHRpb25zID8gXy5jbG9uZShvcHRpb25zKSA6IHt9OwotICAgICAgdmFyIG1vZGVsID0g
dGhpczsKLSAgICAgIHZhciBzdWNjZXNzID0gb3B0aW9ucy5zdWNjZXNzOwotCi0gICAgICB2YXIg
ZGVzdHJveSA9IGZ1bmN0aW9uKCkgewotICAgICAgICBtb2RlbC50cmlnZ2VyKCdkZXN0cm95Jywg
bW9kZWwsIG1vZGVsLmNvbGxlY3Rpb24sIG9wdGlvbnMpOwotICAgICAgfTsKLQotICAgICAgb3B0
aW9ucy5zdWNjZXNzID0gZnVuY3Rpb24ocmVzcCkgewotICAgICAgICBpZiAob3B0aW9ucy53YWl0
IHx8IG1vZGVsLmlzTmV3KCkpIGRlc3Ryb3koKTsKLSAgICAgICAgaWYgKHN1Y2Nlc3MpIHN1Y2Nl
c3MobW9kZWwsIHJlc3AsIG9wdGlvbnMpOwotICAgICAgICBpZiAoIW1vZGVsLmlzTmV3KCkpIG1v
ZGVsLnRyaWdnZXIoJ3N5bmMnLCBtb2RlbCwgcmVzcCwgb3B0aW9ucyk7Ci0gICAgICB9OwotCi0g
ICAgICBpZiAodGhpcy5pc05ldygpKSB7Ci0gICAgICAgIG9wdGlvbnMuc3VjY2VzcygpOwotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgICB3cmFwRXJyb3IodGhpcywgb3B0aW9u
cyk7Ci0KLSAgICAgIHZhciB4aHIgPSB0aGlzLnN5bmMoJ2RlbGV0ZScsIHRoaXMsIG9wdGlvbnMp
OwotICAgICAgaWYgKCFvcHRpb25zLndhaXQpIGRlc3Ryb3koKTsKLSAgICAgIHJldHVybiB4aHI7
Ci0gICAgfSwKLQotICAgIC8vIERlZmF1bHQgVVJMIGZvciB0aGUgbW9kZWwncyByZXByZXNlbnRh
dGlvbiBvbiB0aGUgc2VydmVyIC0tIGlmIHlvdSdyZQotICAgIC8vIHVzaW5nIEJhY2tib25lJ3Mg
cmVzdGZ1bCBtZXRob2RzLCBvdmVycmlkZSB0aGlzIHRvIGNoYW5nZSB0aGUgZW5kcG9pbnQKLSAg
ICAvLyB0aGF0IHdpbGwgYmUgY2FsbGVkLgotICAgIHVybDogZnVuY3Rpb24oKSB7Ci0gICAgICB2
YXIgYmFzZSA9IF8ucmVzdWx0KHRoaXMsICd1cmxSb290JykgfHwgXy5yZXN1bHQodGhpcy5jb2xs
ZWN0aW9uLCAndXJsJykgfHwgdXJsRXJyb3IoKTsKLSAgICAgIGlmICh0aGlzLmlzTmV3KCkpIHJl
dHVybiBiYXNlOwotICAgICAgcmV0dXJuIGJhc2UgKyAoYmFzZS5jaGFyQXQoYmFzZS5sZW5ndGgg
LSAxKSA9PT0gJy8nID8gJycgOiAnLycpICsgZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMuaWQpOwot
ICAgIH0sCi0KLSAgICAvLyAqKnBhcnNlKiogY29udmVydHMgYSByZXNwb25zZSBpbnRvIHRoZSBo
YXNoIG9mIGF0dHJpYnV0ZXMgdG8gYmUgYHNldGAgb24KLSAgICAvLyB0aGUgbW9kZWwuIFRoZSBk
ZWZhdWx0IGltcGxlbWVudGF0aW9uIGlzIGp1c3QgdG8gcGFzcyB0aGUgcmVzcG9uc2UgYWxvbmcu
Ci0gICAgcGFyc2U6IGZ1bmN0aW9uKHJlc3AsIG9wdGlvbnMpIHsKLSAgICAgIHJldHVybiByZXNw
OwotICAgIH0sCi0KLSAgICAvLyBDcmVhdGUgYSBuZXcgbW9kZWwgd2l0aCBpZGVudGljYWwgYXR0
cmlidXRlcyB0byB0aGlzIG9uZS4KLSAgICBjbG9uZTogZnVuY3Rpb24oKSB7Ci0gICAgICByZXR1
cm4gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy5hdHRyaWJ1dGVzKTsKLSAgICB9LAotCi0gICAg
Ly8gQSBtb2RlbCBpcyBuZXcgaWYgaXQgaGFzIG5ldmVyIGJlZW4gc2F2ZWQgdG8gdGhlIHNlcnZl
ciwgYW5kIGxhY2tzIGFuIGlkLgotICAgIGlzTmV3OiBmdW5jdGlvbigpIHsKLSAgICAgIHJldHVy
biB0aGlzLmlkID09IG51bGw7Ci0gICAgfSwKLQotICAgIC8vIENoZWNrIGlmIHRoZSBtb2RlbCBp
cyBjdXJyZW50bHkgaW4gYSB2YWxpZCBzdGF0ZS4KLSAgICBpc1ZhbGlkOiBmdW5jdGlvbihvcHRp
b25zKSB7Ci0gICAgICByZXR1cm4gdGhpcy5fdmFsaWRhdGUoe30sIF8uZXh0ZW5kKG9wdGlvbnMg
fHwge30sIHsgdmFsaWRhdGU6IHRydWUgfSkpOwotICAgIH0sCi0KLSAgICAvLyBSdW4gdmFsaWRh
dGlvbiBhZ2FpbnN0IHRoZSBuZXh0IGNvbXBsZXRlIHNldCBvZiBtb2RlbCBhdHRyaWJ1dGVzLAot
ICAgIC8vIHJldHVybmluZyBgdHJ1ZWAgaWYgYWxsIGlzIHdlbGwuIE90aGVyd2lzZSwgZmlyZSBh
biBgImludmFsaWQiYCBldmVudC4KLSAgICBfdmFsaWRhdGU6IGZ1bmN0aW9uKGF0dHJzLCBvcHRp
b25zKSB7Ci0gICAgICBpZiAoIW9wdGlvbnMudmFsaWRhdGUgfHwgIXRoaXMudmFsaWRhdGUpIHJl
dHVybiB0cnVlOwotICAgICAgYXR0cnMgPSBfLmV4dGVuZCh7fSwgdGhpcy5hdHRyaWJ1dGVzLCBh
dHRycyk7Ci0gICAgICB2YXIgZXJyb3IgPSB0aGlzLnZhbGlkYXRpb25FcnJvciA9IHRoaXMudmFs
aWRhdGUoYXR0cnMsIG9wdGlvbnMpIHx8IG51bGw7Ci0gICAgICBpZiAoIWVycm9yKSByZXR1cm4g
dHJ1ZTsKLSAgICAgIHRoaXMudHJpZ2dlcignaW52YWxpZCcsIHRoaXMsIGVycm9yLCBfLmV4dGVu
ZChvcHRpb25zIHx8IHt9LCB7dmFsaWRhdGlvbkVycm9yOiBlcnJvcn0pKTsKLSAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9Ci0KLSAgfSk7Ci0KLSAgLy8gVW5kZXJzY29yZSBtZXRob2RzIHRoYXQg
d2Ugd2FudCB0byBpbXBsZW1lbnQgb24gdGhlIE1vZGVsLgotICB2YXIgbW9kZWxNZXRob2RzID0g
WydrZXlzJywgJ3ZhbHVlcycsICdwYWlycycsICdpbnZlcnQnLCAncGljaycsICdvbWl0J107Ci0K
LSAgLy8gTWl4IGluIGVhY2ggVW5kZXJzY29yZSBtZXRob2QgYXMgYSBwcm94eSB0byBgTW9kZWwj
YXR0cmlidXRlc2AuCi0gIF8uZWFjaChtb2RlbE1ldGhvZHMsIGZ1bmN0aW9uKG1ldGhvZCkgewot
ICAgIE1vZGVsLnByb3RvdHlwZVttZXRob2RdID0gZnVuY3Rpb24oKSB7Ci0gICAgICB2YXIgYXJn
cyA9IHNsaWNlLmNhbGwoYXJndW1lbnRzKTsKLSAgICAgIGFyZ3MudW5zaGlmdCh0aGlzLmF0dHJp
YnV0ZXMpOwotICAgICAgcmV0dXJuIF9bbWV0aG9kXS5hcHBseShfLCBhcmdzKTsKLSAgICB9Owot
ICB9KTsKLQotICAvLyBCYWNrYm9uZS5Db2xsZWN0aW9uCi0gIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0KLQotICAvLyBJZiBtb2RlbHMgdGVuZCB0byByZXByZXNlbnQgYSBzaW5nbGUgcm93IG9mIGRh
dGEsIGEgQmFja2JvbmUgQ29sbGVjdGlvbiBpcwotICAvLyBtb3JlIGFuYWxhZ291cyB0byBhIHRh
YmxlIGZ1bGwgb2YgZGF0YSAuLi4gb3IgYSBzbWFsbCBzbGljZSBvciBwYWdlIG9mIHRoYXQKLSAg
Ly8gdGFibGUsIG9yIGEgY29sbGVjdGlvbiBvZiByb3dzIHRoYXQgYmVsb25nIHRvZ2V0aGVyIGZv
ciBhIHBhcnRpY3VsYXIgcmVhc29uCi0gIC8vIC0tIGFsbCBvZiB0aGUgbWVzc2FnZXMgaW4gdGhp
cyBwYXJ0aWN1bGFyIGZvbGRlciwgYWxsIG9mIHRoZSBkb2N1bWVudHMKLSAgLy8gYmVsb25naW5n
IHRvIHRoaXMgcGFydGljdWxhciBhdXRob3IsIGFuZCBzbyBvbi4gQ29sbGVjdGlvbnMgbWFpbnRh
aW4KLSAgLy8gaW5kZXhlcyBvZiB0aGVpciBtb2RlbHMsIGJvdGggaW4gb3JkZXIsIGFuZCBmb3Ig
bG9va3VwIGJ5IGBpZGAuCi0KLSAgLy8gQ3JlYXRlIGEgbmV3ICoqQ29sbGVjdGlvbioqLCBwZXJo
YXBzIHRvIGNvbnRhaW4gYSBzcGVjaWZpYyB0eXBlIG9mIGBtb2RlbGAuCi0gIC8vIElmIGEgYGNv
bXBhcmF0b3JgIGlzIHNwZWNpZmllZCwgdGhlIENvbGxlY3Rpb24gd2lsbCBtYWludGFpbgotICAv
LyBpdHMgbW9kZWxzIGluIHNvcnQgb3JkZXIsIGFzIHRoZXkncmUgYWRkZWQgYW5kIHJlbW92ZWQu
Ci0gIHZhciBDb2xsZWN0aW9uID0gQmFja2JvbmUuQ29sbGVjdGlvbiA9IGZ1bmN0aW9uKG1vZGVs
cywgb3B0aW9ucykgewotICAgIG9wdGlvbnMgfHwgKG9wdGlvbnMgPSB7fSk7Ci0gICAgaWYgKG9w
dGlvbnMudXJsKSB0aGlzLnVybCA9IG9wdGlvbnMudXJsOwotICAgIGlmIChvcHRpb25zLm1vZGVs
KSB0aGlzLm1vZGVsID0gb3B0aW9ucy5tb2RlbDsKLSAgICBpZiAob3B0aW9ucy5jb21wYXJhdG9y
ICE9PSB2b2lkIDApIHRoaXMuY29tcGFyYXRvciA9IG9wdGlvbnMuY29tcGFyYXRvcjsKLSAgICB0
aGlzLl9yZXNldCgpOwotICAgIHRoaXMuaW5pdGlhbGl6ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMp
OwotICAgIGlmIChtb2RlbHMpIHRoaXMucmVzZXQobW9kZWxzLCBfLmV4dGVuZCh7c2lsZW50OiB0
cnVlfSwgb3B0aW9ucykpOwotICB9OwotCi0gIC8vIERlZmF1bHQgb3B0aW9ucyBmb3IgYENvbGxl
Y3Rpb24jc2V0YC4KLSAgdmFyIHNldE9wdGlvbnMgPSB7YWRkOiB0cnVlLCByZW1vdmU6IHRydWUs
IG1lcmdlOiB0cnVlfTsKLSAgdmFyIGFkZE9wdGlvbnMgPSB7YWRkOiB0cnVlLCBtZXJnZTogZmFs
c2UsIHJlbW92ZTogZmFsc2V9OwotCi0gIC8vIERlZmluZSB0aGUgQ29sbGVjdGlvbidzIGluaGVy
aXRhYmxlIG1ldGhvZHMuCi0gIF8uZXh0ZW5kKENvbGxlY3Rpb24ucHJvdG90eXBlLCBFdmVudHMs
IHsKLQotICAgIC8vIFRoZSBkZWZhdWx0IG1vZGVsIGZvciBhIGNvbGxlY3Rpb24gaXMganVzdCBh
ICoqQmFja2JvbmUuTW9kZWwqKi4KLSAgICAvLyBUaGlzIHNob3VsZCBiZSBvdmVycmlkZGVuIGlu
IG1vc3QgY2FzZXMuCi0gICAgbW9kZWw6IE1vZGVsLAotCi0gICAgLy8gSW5pdGlhbGl6ZSBpcyBh
biBlbXB0eSBmdW5jdGlvbiBieSBkZWZhdWx0LiBPdmVycmlkZSBpdCB3aXRoIHlvdXIgb3duCi0g
ICAgLy8gaW5pdGlhbGl6YXRpb24gbG9naWMuCi0gICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oKXt9
LAotCi0gICAgLy8gVGhlIEpTT04gcmVwcmVzZW50YXRpb24gb2YgYSBDb2xsZWN0aW9uIGlzIGFu
IGFycmF5IG9mIHRoZQotICAgIC8vIG1vZGVscycgYXR0cmlidXRlcy4KLSAgICB0b0pTT046IGZ1
bmN0aW9uKG9wdGlvbnMpIHsKLSAgICAgIHJldHVybiB0aGlzLm1hcChmdW5jdGlvbihtb2RlbCl7
IHJldHVybiBtb2RlbC50b0pTT04ob3B0aW9ucyk7IH0pOwotICAgIH0sCi0KLSAgICAvLyBQcm94
eSBgQmFja2JvbmUuc3luY2AgYnkgZGVmYXVsdC4KLSAgICBzeW5jOiBmdW5jdGlvbigpIHsKLSAg
ICAgIHJldHVybiBCYWNrYm9uZS5zeW5jLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7Ci0gICAgfSwK
LQotICAgIC8vIEFkZCBhIG1vZGVsLCBvciBsaXN0IG9mIG1vZGVscyB0byB0aGUgc2V0LgotICAg
IGFkZDogZnVuY3Rpb24obW9kZWxzLCBvcHRpb25zKSB7Ci0gICAgICByZXR1cm4gdGhpcy5zZXQo
bW9kZWxzLCBfLmRlZmF1bHRzKG9wdGlvbnMgfHwge30sIGFkZE9wdGlvbnMpKTsKLSAgICB9LAot
Ci0gICAgLy8gUmVtb3ZlIGEgbW9kZWwsIG9yIGEgbGlzdCBvZiBtb2RlbHMgZnJvbSB0aGUgc2V0
LgotICAgIHJlbW92ZTogZnVuY3Rpb24obW9kZWxzLCBvcHRpb25zKSB7Ci0gICAgICBtb2RlbHMg
PSBfLmlzQXJyYXkobW9kZWxzKSA/IG1vZGVscy5zbGljZSgpIDogW21vZGVsc107Ci0gICAgICBv
cHRpb25zIHx8IChvcHRpb25zID0ge30pOwotICAgICAgdmFyIGksIGwsIGluZGV4LCBtb2RlbDsK
LSAgICAgIGZvciAoaSA9IDAsIGwgPSBtb2RlbHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7Ci0gICAg
ICAgIG1vZGVsID0gdGhpcy5nZXQobW9kZWxzW2ldKTsKLSAgICAgICAgaWYgKCFtb2RlbCkgY29u
dGludWU7Ci0gICAgICAgIGRlbGV0ZSB0aGlzLl9ieUlkW21vZGVsLmlkXTsKLSAgICAgICAgZGVs
ZXRlIHRoaXMuX2J5SWRbbW9kZWwuY2lkXTsKLSAgICAgICAgaW5kZXggPSB0aGlzLmluZGV4T2Yo
bW9kZWwpOwotICAgICAgICB0aGlzLm1vZGVscy5zcGxpY2UoaW5kZXgsIDEpOwotICAgICAgICB0
aGlzLmxlbmd0aC0tOwotICAgICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7Ci0gICAgICAgICAg
b3B0aW9ucy5pbmRleCA9IGluZGV4OwotICAgICAgICAgIG1vZGVsLnRyaWdnZXIoJ3JlbW92ZScs
IG1vZGVsLCB0aGlzLCBvcHRpb25zKTsKLSAgICAgICAgfQotICAgICAgICB0aGlzLl9yZW1vdmVS
ZWZlcmVuY2UobW9kZWwpOwotICAgICAgfQotICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgfSwKLQot
ICAgIC8vIFVwZGF0ZSBhIGNvbGxlY3Rpb24gYnkgYHNldGAtaW5nIGEgbmV3IGxpc3Qgb2YgbW9k
ZWxzLCBhZGRpbmcgbmV3IG9uZXMsCi0gICAgLy8gcmVtb3ZpbmcgbW9kZWxzIHRoYXQgYXJlIG5v
IGxvbmdlciBwcmVzZW50LCBhbmQgbWVyZ2luZyBtb2RlbHMgdGhhdAotICAgIC8vIGFscmVhZHkg
ZXhpc3QgaW4gdGhlIGNvbGxlY3Rpb24sIGFzIG5lY2Vzc2FyeS4gU2ltaWxhciB0byAqKk1vZGVs
I3NldCoqLAotICAgIC8vIHRoZSBjb3JlIG9wZXJhdGlvbiBmb3IgdXBkYXRpbmcgdGhlIGRhdGEg
Y29udGFpbmVkIGJ5IHRoZSBjb2xsZWN0aW9uLgotICAgIHNldDogZnVuY3Rpb24obW9kZWxzLCBv
cHRpb25zKSB7Ci0gICAgICBvcHRpb25zID0gXy5kZWZhdWx0cyhvcHRpb25zIHx8IHt9LCBzZXRP
cHRpb25zKTsKLSAgICAgIGlmIChvcHRpb25zLnBhcnNlKSBtb2RlbHMgPSB0aGlzLnBhcnNlKG1v
ZGVscywgb3B0aW9ucyk7Ci0gICAgICBpZiAoIV8uaXNBcnJheShtb2RlbHMpKSBtb2RlbHMgPSBt
b2RlbHMgPyBbbW9kZWxzXSA6IFtdOwotICAgICAgdmFyIGksIGwsIG1vZGVsLCBhdHRycywgZXhp
c3RpbmcsIHNvcnQ7Ci0gICAgICB2YXIgYXQgPSBvcHRpb25zLmF0OwotICAgICAgdmFyIHNvcnRh
YmxlID0gdGhpcy5jb21wYXJhdG9yICYmIChhdCA9PSBudWxsKSAmJiBvcHRpb25zLnNvcnQgIT09
IGZhbHNlOwotICAgICAgdmFyIHNvcnRBdHRyID0gXy5pc1N0cmluZyh0aGlzLmNvbXBhcmF0b3Ip
ID8gdGhpcy5jb21wYXJhdG9yIDogbnVsbDsKLSAgICAgIHZhciB0b0FkZCA9IFtdLCB0b1JlbW92
ZSA9IFtdLCBtb2RlbE1hcCA9IHt9OwotCi0gICAgICAvLyBUdXJuIGJhcmUgb2JqZWN0cyBpbnRv
IG1vZGVsIHJlZmVyZW5jZXMsIGFuZCBwcmV2ZW50IGludmFsaWQgbW9kZWxzCi0gICAgICAvLyBm
cm9tIGJlaW5nIGFkZGVkLgotICAgICAgZm9yIChpID0gMCwgbCA9IG1vZGVscy5sZW5ndGg7IGkg
PCBsOyBpKyspIHsKLSAgICAgICAgaWYgKCEobW9kZWwgPSB0aGlzLl9wcmVwYXJlTW9kZWwobW9k
ZWxzW2ldLCBvcHRpb25zKSkpIGNvbnRpbnVlOwotCi0gICAgICAgIC8vIElmIGEgZHVwbGljYXRl
IGlzIGZvdW5kLCBwcmV2ZW50IGl0IGZyb20gYmVpbmcgYWRkZWQgYW5kCi0gICAgICAgIC8vIG9w
dGlvbmFsbHkgbWVyZ2UgaXQgaW50byB0aGUgZXhpc3RpbmcgbW9kZWwuCi0gICAgICAgIGlmIChl
eGlzdGluZyA9IHRoaXMuZ2V0KG1vZGVsKSkgewotICAgICAgICAgIGlmIChvcHRpb25zLnJlbW92
ZSkgbW9kZWxNYXBbZXhpc3RpbmcuY2lkXSA9IHRydWU7Ci0gICAgICAgICAgaWYgKG9wdGlvbnMu
bWVyZ2UpIHsKLSAgICAgICAgICAgIGV4aXN0aW5nLnNldChtb2RlbC5hdHRyaWJ1dGVzLCBvcHRp
b25zKTsKLSAgICAgICAgICAgIGlmIChzb3J0YWJsZSAmJiAhc29ydCAmJiBleGlzdGluZy5oYXND
aGFuZ2VkKHNvcnRBdHRyKSkgc29ydCA9IHRydWU7Ci0gICAgICAgICAgfQotCi0gICAgICAgIC8v
IFRoaXMgaXMgYSBuZXcgbW9kZWwsIHB1c2ggaXQgdG8gdGhlIGB0b0FkZGAgbGlzdC4KLSAgICAg
ICAgfSBlbHNlIGlmIChvcHRpb25zLmFkZCkgewotICAgICAgICAgIHRvQWRkLnB1c2gobW9kZWwp
OwotCi0gICAgICAgICAgLy8gTGlzdGVuIHRvIGFkZGVkIG1vZGVscycgZXZlbnRzLCBhbmQgaW5k
ZXggbW9kZWxzIGZvciBsb29rdXAgYnkKLSAgICAgICAgICAvLyBgaWRgIGFuZCBieSBgY2lkYC4K
LSAgICAgICAgICBtb2RlbC5vbignYWxsJywgdGhpcy5fb25Nb2RlbEV2ZW50LCB0aGlzKTsKLSAg
ICAgICAgICB0aGlzLl9ieUlkW21vZGVsLmNpZF0gPSBtb2RlbDsKLSAgICAgICAgICBpZiAobW9k
ZWwuaWQgIT0gbnVsbCkgdGhpcy5fYnlJZFttb2RlbC5pZF0gPSBtb2RlbDsKLSAgICAgICAgfQot
ICAgICAgfQotCi0gICAgICAvLyBSZW1vdmUgbm9uZXhpc3RlbnQgbW9kZWxzIGlmIGFwcHJvcHJp
YXRlLgotICAgICAgaWYgKG9wdGlvbnMucmVtb3ZlKSB7Ci0gICAgICAgIGZvciAoaSA9IDAsIGwg
PSB0aGlzLmxlbmd0aDsgaSA8IGw7ICsraSkgewotICAgICAgICAgIGlmICghbW9kZWxNYXBbKG1v
ZGVsID0gdGhpcy5tb2RlbHNbaV0pLmNpZF0pIHRvUmVtb3ZlLnB1c2gobW9kZWwpOwotICAgICAg
ICB9Ci0gICAgICAgIGlmICh0b1JlbW92ZS5sZW5ndGgpIHRoaXMucmVtb3ZlKHRvUmVtb3ZlLCBv
cHRpb25zKTsKLSAgICAgIH0KLQotICAgICAgLy8gU2VlIGlmIHNvcnRpbmcgaXMgbmVlZGVkLCB1
cGRhdGUgYGxlbmd0aGAgYW5kIHNwbGljZSBpbiBuZXcgbW9kZWxzLgotICAgICAgaWYgKHRvQWRk
Lmxlbmd0aCkgewotICAgICAgICBpZiAoc29ydGFibGUpIHNvcnQgPSB0cnVlOwotICAgICAgICB0
aGlzLmxlbmd0aCArPSB0b0FkZC5sZW5ndGg7Ci0gICAgICAgIGlmIChhdCAhPSBudWxsKSB7Ci0g
ICAgICAgICAgc3BsaWNlLmFwcGx5KHRoaXMubW9kZWxzLCBbYXQsIDBdLmNvbmNhdCh0b0FkZCkp
OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIHB1c2guYXBwbHkodGhpcy5tb2RlbHMsIHRv
QWRkKTsKLSAgICAgICAgfQotICAgICAgfQotCi0gICAgICAvLyBTaWxlbnRseSBzb3J0IHRoZSBj
b2xsZWN0aW9uIGlmIGFwcHJvcHJpYXRlLgotICAgICAgaWYgKHNvcnQpIHRoaXMuc29ydCh7c2ls
ZW50OiB0cnVlfSk7Ci0KLSAgICAgIGlmIChvcHRpb25zLnNpbGVudCkgcmV0dXJuIHRoaXM7Ci0K
LSAgICAgIC8vIFRyaWdnZXIgYGFkZGAgZXZlbnRzLgotICAgICAgZm9yIChpID0gMCwgbCA9IHRv
QWRkLmxlbmd0aDsgaSA8IGw7IGkrKykgewotICAgICAgICAobW9kZWwgPSB0b0FkZFtpXSkudHJp
Z2dlcignYWRkJywgbW9kZWwsIHRoaXMsIG9wdGlvbnMpOwotICAgICAgfQotCi0gICAgICAvLyBU
cmlnZ2VyIGBzb3J0YCBpZiB0aGUgY29sbGVjdGlvbiB3YXMgc29ydGVkLgotICAgICAgaWYgKHNv
cnQpIHRoaXMudHJpZ2dlcignc29ydCcsIHRoaXMsIG9wdGlvbnMpOwotICAgICAgcmV0dXJuIHRo
aXM7Ci0gICAgfSwKLQotICAgIC8vIFdoZW4geW91IGhhdmUgbW9yZSBpdGVtcyB0aGFuIHlvdSB3
YW50IHRvIGFkZCBvciByZW1vdmUgaW5kaXZpZHVhbGx5LAotICAgIC8vIHlvdSBjYW4gcmVzZXQg
dGhlIGVudGlyZSBzZXQgd2l0aCBhIG5ldyBsaXN0IG9mIG1vZGVscywgd2l0aG91dCBmaXJpbmcK
LSAgICAvLyBhbnkgZ3JhbnVsYXIgYGFkZGAgb3IgYHJlbW92ZWAgZXZlbnRzLiBGaXJlcyBgcmVz
ZXRgIHdoZW4gZmluaXNoZWQuCi0gICAgLy8gVXNlZnVsIGZvciBidWxrIG9wZXJhdGlvbnMgYW5k
IG9wdGltaXphdGlvbnMuCi0gICAgcmVzZXQ6IGZ1bmN0aW9uKG1vZGVscywgb3B0aW9ucykgewot
ICAgICAgb3B0aW9ucyB8fCAob3B0aW9ucyA9IHt9KTsKLSAgICAgIGZvciAodmFyIGkgPSAwLCBs
ID0gdGhpcy5tb2RlbHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7Ci0gICAgICAgIHRoaXMuX3JlbW92
ZVJlZmVyZW5jZSh0aGlzLm1vZGVsc1tpXSk7Ci0gICAgICB9Ci0gICAgICBvcHRpb25zLnByZXZp
b3VzTW9kZWxzID0gdGhpcy5tb2RlbHM7Ci0gICAgICB0aGlzLl9yZXNldCgpOwotICAgICAgdGhp
cy5hZGQobW9kZWxzLCBfLmV4dGVuZCh7c2lsZW50OiB0cnVlfSwgb3B0aW9ucykpOwotICAgICAg
aWYgKCFvcHRpb25zLnNpbGVudCkgdGhpcy50cmlnZ2VyKCdyZXNldCcsIHRoaXMsIG9wdGlvbnMp
OwotICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgfSwKLQotICAgIC8vIEFkZCBhIG1vZGVsIHRvIHRo
ZSBlbmQgb2YgdGhlIGNvbGxlY3Rpb24uCi0gICAgcHVzaDogZnVuY3Rpb24obW9kZWwsIG9wdGlv
bnMpIHsKLSAgICAgIG1vZGVsID0gdGhpcy5fcHJlcGFyZU1vZGVsKG1vZGVsLCBvcHRpb25zKTsK
LSAgICAgIHRoaXMuYWRkKG1vZGVsLCBfLmV4dGVuZCh7YXQ6IHRoaXMubGVuZ3RofSwgb3B0aW9u
cykpOwotICAgICAgcmV0dXJuIG1vZGVsOwotICAgIH0sCi0KLSAgICAvLyBSZW1vdmUgYSBtb2Rl
bCBmcm9tIHRoZSBlbmQgb2YgdGhlIGNvbGxlY3Rpb24uCi0gICAgcG9wOiBmdW5jdGlvbihvcHRp
b25zKSB7Ci0gICAgICB2YXIgbW9kZWwgPSB0aGlzLmF0KHRoaXMubGVuZ3RoIC0gMSk7Ci0gICAg
ICB0aGlzLnJlbW92ZShtb2RlbCwgb3B0aW9ucyk7Ci0gICAgICByZXR1cm4gbW9kZWw7Ci0gICAg
fSwKLQotICAgIC8vIEFkZCBhIG1vZGVsIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGNvbGxlY3Rp
b24uCi0gICAgdW5zaGlmdDogZnVuY3Rpb24obW9kZWwsIG9wdGlvbnMpIHsKLSAgICAgIG1vZGVs
ID0gdGhpcy5fcHJlcGFyZU1vZGVsKG1vZGVsLCBvcHRpb25zKTsKLSAgICAgIHRoaXMuYWRkKG1v
ZGVsLCBfLmV4dGVuZCh7YXQ6IDB9LCBvcHRpb25zKSk7Ci0gICAgICByZXR1cm4gbW9kZWw7Ci0g
ICAgfSwKLQotICAgIC8vIFJlbW92ZSBhIG1vZGVsIGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUg
Y29sbGVjdGlvbi4KLSAgICBzaGlmdDogZnVuY3Rpb24ob3B0aW9ucykgewotICAgICAgdmFyIG1v
ZGVsID0gdGhpcy5hdCgwKTsKLSAgICAgIHRoaXMucmVtb3ZlKG1vZGVsLCBvcHRpb25zKTsKLSAg
ICAgIHJldHVybiBtb2RlbDsKLSAgICB9LAotCi0gICAgLy8gU2xpY2Ugb3V0IGEgc3ViLWFycmF5
IG9mIG1vZGVscyBmcm9tIHRoZSBjb2xsZWN0aW9uLgotICAgIHNsaWNlOiBmdW5jdGlvbihiZWdp
biwgZW5kKSB7Ci0gICAgICByZXR1cm4gdGhpcy5tb2RlbHMuc2xpY2UoYmVnaW4sIGVuZCk7Ci0g
ICAgfSwKLQotICAgIC8vIEdldCBhIG1vZGVsIGZyb20gdGhlIHNldCBieSBpZC4KLSAgICBnZXQ6
IGZ1bmN0aW9uKG9iaikgewotICAgICAgaWYgKG9iaiA9PSBudWxsKSByZXR1cm4gdm9pZCAwOwot
ICAgICAgcmV0dXJuIHRoaXMuX2J5SWRbb2JqLmlkICE9IG51bGwgPyBvYmouaWQgOiBvYmouY2lk
IHx8IG9ial07Ci0gICAgfSwKLQotICAgIC8vIEdldCB0aGUgbW9kZWwgYXQgdGhlIGdpdmVuIGlu
ZGV4LgotICAgIGF0OiBmdW5jdGlvbihpbmRleCkgewotICAgICAgcmV0dXJuIHRoaXMubW9kZWxz
W2luZGV4XTsKLSAgICB9LAotCi0gICAgLy8gUmV0dXJuIG1vZGVscyB3aXRoIG1hdGNoaW5nIGF0
dHJpYnV0ZXMuIFVzZWZ1bCBmb3Igc2ltcGxlIGNhc2VzIG9mCi0gICAgLy8gYGZpbHRlcmAuCi0g
ICAgd2hlcmU6IGZ1bmN0aW9uKGF0dHJzLCBmaXJzdCkgewotICAgICAgaWYgKF8uaXNFbXB0eShh
dHRycykpIHJldHVybiBmaXJzdCA/IHZvaWQgMCA6IFtdOwotICAgICAgcmV0dXJuIHRoaXNbZmly
c3QgPyAnZmluZCcgOiAnZmlsdGVyJ10oZnVuY3Rpb24obW9kZWwpIHsKLSAgICAgICAgZm9yICh2
YXIga2V5IGluIGF0dHJzKSB7Ci0gICAgICAgICAgaWYgKGF0dHJzW2tleV0gIT09IG1vZGVsLmdl
dChrZXkpKSByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICB9KTsKLSAgICB9LAotCi0gICAgLy8gUmV0dXJuIHRoZSBmaXJzdCBtb2RlbCB3aXRoIG1h
dGNoaW5nIGF0dHJpYnV0ZXMuIFVzZWZ1bCBmb3Igc2ltcGxlIGNhc2VzCi0gICAgLy8gb2YgYGZp
bmRgLgotICAgIGZpbmRXaGVyZTogZnVuY3Rpb24oYXR0cnMpIHsKLSAgICAgIHJldHVybiB0aGlz
LndoZXJlKGF0dHJzLCB0cnVlKTsKLSAgICB9LAotCi0gICAgLy8gRm9yY2UgdGhlIGNvbGxlY3Rp
b24gdG8gcmUtc29ydCBpdHNlbGYuIFlvdSBkb24ndCBuZWVkIHRvIGNhbGwgdGhpcyB1bmRlcgot
ICAgIC8vIG5vcm1hbCBjaXJjdW1zdGFuY2VzLCBhcyB0aGUgc2V0IHdpbGwgbWFpbnRhaW4gc29y
dCBvcmRlciBhcyBlYWNoIGl0ZW0KLSAgICAvLyBpcyBhZGRlZC4KLSAgICBzb3J0OiBmdW5jdGlv
bihvcHRpb25zKSB7Ci0gICAgICBpZiAoIXRoaXMuY29tcGFyYXRvcikgdGhyb3cgbmV3IEVycm9y
KCdDYW5ub3Qgc29ydCBhIHNldCB3aXRob3V0IGEgY29tcGFyYXRvcicpOwotICAgICAgb3B0aW9u
cyB8fCAob3B0aW9ucyA9IHt9KTsKLQotICAgICAgLy8gUnVuIHNvcnQgYmFzZWQgb24gdHlwZSBv
ZiBgY29tcGFyYXRvcmAuCi0gICAgICBpZiAoXy5pc1N0cmluZyh0aGlzLmNvbXBhcmF0b3IpIHx8
IHRoaXMuY29tcGFyYXRvci5sZW5ndGggPT09IDEpIHsKLSAgICAgICAgdGhpcy5tb2RlbHMgPSB0
aGlzLnNvcnRCeSh0aGlzLmNvbXBhcmF0b3IsIHRoaXMpOwotICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgdGhpcy5tb2RlbHMuc29ydChfLmJpbmQodGhpcy5jb21wYXJhdG9yLCB0aGlzKSk7Ci0gICAg
ICB9Ci0KLSAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHRoaXMudHJpZ2dlcignc29ydCcsIHRo
aXMsIG9wdGlvbnMpOwotICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgfSwKLQotICAgIC8vIEZpZ3Vy
ZSBvdXQgdGhlIHNtYWxsZXN0IGluZGV4IGF0IHdoaWNoIGEgbW9kZWwgc2hvdWxkIGJlIGluc2Vy
dGVkIHNvIGFzCi0gICAgLy8gdG8gbWFpbnRhaW4gb3JkZXIuCi0gICAgc29ydGVkSW5kZXg6IGZ1
bmN0aW9uKG1vZGVsLCB2YWx1ZSwgY29udGV4dCkgewotICAgICAgdmFsdWUgfHwgKHZhbHVlID0g
dGhpcy5jb21wYXJhdG9yKTsKLSAgICAgIHZhciBpdGVyYXRvciA9IF8uaXNGdW5jdGlvbih2YWx1
ZSkgPyB2YWx1ZSA6IGZ1bmN0aW9uKG1vZGVsKSB7Ci0gICAgICAgIHJldHVybiBtb2RlbC5nZXQo
dmFsdWUpOwotICAgICAgfTsKLSAgICAgIHJldHVybiBfLnNvcnRlZEluZGV4KHRoaXMubW9kZWxz
LCBtb2RlbCwgaXRlcmF0b3IsIGNvbnRleHQpOwotICAgIH0sCi0KLSAgICAvLyBQbHVjayBhbiBh
dHRyaWJ1dGUgZnJvbSBlYWNoIG1vZGVsIGluIHRoZSBjb2xsZWN0aW9uLgotICAgIHBsdWNrOiBm
dW5jdGlvbihhdHRyKSB7Ci0gICAgICByZXR1cm4gXy5pbnZva2UodGhpcy5tb2RlbHMsICdnZXQn
LCBhdHRyKTsKLSAgICB9LAotCi0gICAgLy8gRmV0Y2ggdGhlIGRlZmF1bHQgc2V0IG9mIG1vZGVs
cyBmb3IgdGhpcyBjb2xsZWN0aW9uLCByZXNldHRpbmcgdGhlCi0gICAgLy8gY29sbGVjdGlvbiB3
aGVuIHRoZXkgYXJyaXZlLiBJZiBgcmVzZXQ6IHRydWVgIGlzIHBhc3NlZCwgdGhlIHJlc3BvbnNl
Ci0gICAgLy8gZGF0YSB3aWxsIGJlIHBhc3NlZCB0aHJvdWdoIHRoZSBgcmVzZXRgIG1ldGhvZCBp
bnN0ZWFkIG9mIGBzZXRgLgotICAgIGZldGNoOiBmdW5jdGlvbihvcHRpb25zKSB7Ci0gICAgICBv
cHRpb25zID0gb3B0aW9ucyA/IF8uY2xvbmUob3B0aW9ucykgOiB7fTsKLSAgICAgIGlmIChvcHRp
b25zLnBhcnNlID09PSB2b2lkIDApIG9wdGlvbnMucGFyc2UgPSB0cnVlOwotICAgICAgdmFyIHN1
Y2Nlc3MgPSBvcHRpb25zLnN1Y2Nlc3M7Ci0gICAgICB2YXIgY29sbGVjdGlvbiA9IHRoaXM7Ci0g
ICAgICBvcHRpb25zLnN1Y2Nlc3MgPSBmdW5jdGlvbihyZXNwKSB7Ci0gICAgICAgIHZhciBtZXRo
b2QgPSBvcHRpb25zLnJlc2V0ID8gJ3Jlc2V0JyA6ICdzZXQnOwotICAgICAgICBjb2xsZWN0aW9u
W21ldGhvZF0ocmVzcCwgb3B0aW9ucyk7Ci0gICAgICAgIGlmIChzdWNjZXNzKSBzdWNjZXNzKGNv
bGxlY3Rpb24sIHJlc3AsIG9wdGlvbnMpOwotICAgICAgICBjb2xsZWN0aW9uLnRyaWdnZXIoJ3N5
bmMnLCBjb2xsZWN0aW9uLCByZXNwLCBvcHRpb25zKTsKLSAgICAgIH07Ci0gICAgICB3cmFwRXJy
b3IodGhpcywgb3B0aW9ucyk7Ci0gICAgICByZXR1cm4gdGhpcy5zeW5jKCdyZWFkJywgdGhpcywg
b3B0aW9ucyk7Ci0gICAgfSwKLQotICAgIC8vIENyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiBhIG1v
ZGVsIGluIHRoaXMgY29sbGVjdGlvbi4gQWRkIHRoZSBtb2RlbCB0byB0aGUKLSAgICAvLyBjb2xs
ZWN0aW9uIGltbWVkaWF0ZWx5LCB1bmxlc3MgYHdhaXQ6IHRydWVgIGlzIHBhc3NlZCwgaW4gd2hp
Y2ggY2FzZSB3ZQotICAgIC8vIHdhaXQgZm9yIHRoZSBzZXJ2ZXIgdG8gYWdyZWUuCi0gICAgY3Jl
YXRlOiBmdW5jdGlvbihtb2RlbCwgb3B0aW9ucykgewotICAgICAgb3B0aW9ucyA9IG9wdGlvbnMg
PyBfLmNsb25lKG9wdGlvbnMpIDoge307Ci0gICAgICBpZiAoIShtb2RlbCA9IHRoaXMuX3ByZXBh
cmVNb2RlbChtb2RlbCwgb3B0aW9ucykpKSByZXR1cm4gZmFsc2U7Ci0gICAgICBpZiAoIW9wdGlv
bnMud2FpdCkgdGhpcy5hZGQobW9kZWwsIG9wdGlvbnMpOwotICAgICAgdmFyIGNvbGxlY3Rpb24g
PSB0aGlzOwotICAgICAgdmFyIHN1Y2Nlc3MgPSBvcHRpb25zLnN1Y2Nlc3M7Ci0gICAgICBvcHRp
b25zLnN1Y2Nlc3MgPSBmdW5jdGlvbihyZXNwKSB7Ci0gICAgICAgIGlmIChvcHRpb25zLndhaXQp
IGNvbGxlY3Rpb24uYWRkKG1vZGVsLCBvcHRpb25zKTsKLSAgICAgICAgaWYgKHN1Y2Nlc3MpIHN1
Y2Nlc3MobW9kZWwsIHJlc3AsIG9wdGlvbnMpOwotICAgICAgfTsKLSAgICAgIG1vZGVsLnNhdmUo
bnVsbCwgb3B0aW9ucyk7Ci0gICAgICByZXR1cm4gbW9kZWw7Ci0gICAgfSwKLQotICAgIC8vICoq
cGFyc2UqKiBjb252ZXJ0cyBhIHJlc3BvbnNlIGludG8gYSBsaXN0IG9mIG1vZGVscyB0byBiZSBh
ZGRlZCB0byB0aGUKLSAgICAvLyBjb2xsZWN0aW9uLiBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlv
biBpcyBqdXN0IHRvIHBhc3MgaXQgdGhyb3VnaC4KLSAgICBwYXJzZTogZnVuY3Rpb24ocmVzcCwg
b3B0aW9ucykgewotICAgICAgcmV0dXJuIHJlc3A7Ci0gICAgfSwKLQotICAgIC8vIENyZWF0ZSBh
IG5ldyBjb2xsZWN0aW9uIHdpdGggYW4gaWRlbnRpY2FsIGxpc3Qgb2YgbW9kZWxzIGFzIHRoaXMg
b25lLgotICAgIGNsb25lOiBmdW5jdGlvbigpIHsKLSAgICAgIHJldHVybiBuZXcgdGhpcy5jb25z
dHJ1Y3Rvcih0aGlzLm1vZGVscyk7Ci0gICAgfSwKLQotICAgIC8vIFByaXZhdGUgbWV0aG9kIHRv
IHJlc2V0IGFsbCBpbnRlcm5hbCBzdGF0ZS4gQ2FsbGVkIHdoZW4gdGhlIGNvbGxlY3Rpb24KLSAg
ICAvLyBpcyBmaXJzdCBpbml0aWFsaXplZCBvciByZXNldC4KLSAgICBfcmVzZXQ6IGZ1bmN0aW9u
KCkgewotICAgICAgdGhpcy5sZW5ndGggPSAwOwotICAgICAgdGhpcy5tb2RlbHMgPSBbXTsKLSAg
ICAgIHRoaXMuX2J5SWQgID0ge307Ci0gICAgfSwKLQotICAgIC8vIFByZXBhcmUgYSBoYXNoIG9m
IGF0dHJpYnV0ZXMgKG9yIG90aGVyIG1vZGVsKSB0byBiZSBhZGRlZCB0byB0aGlzCi0gICAgLy8g
Y29sbGVjdGlvbi4KLSAgICBfcHJlcGFyZU1vZGVsOiBmdW5jdGlvbihhdHRycywgb3B0aW9ucykg
ewotICAgICAgaWYgKGF0dHJzIGluc3RhbmNlb2YgTW9kZWwpIHsKLSAgICAgICAgaWYgKCFhdHRy
cy5jb2xsZWN0aW9uKSBhdHRycy5jb2xsZWN0aW9uID0gdGhpczsKLSAgICAgICAgcmV0dXJuIGF0
dHJzOwotICAgICAgfQotICAgICAgb3B0aW9ucyB8fCAob3B0aW9ucyA9IHt9KTsKLSAgICAgIG9w
dGlvbnMuY29sbGVjdGlvbiA9IHRoaXM7Ci0gICAgICB2YXIgbW9kZWwgPSBuZXcgdGhpcy5tb2Rl
bChhdHRycywgb3B0aW9ucyk7Ci0gICAgICBpZiAoIW1vZGVsLl92YWxpZGF0ZShhdHRycywgb3B0
aW9ucykpIHsKLSAgICAgICAgdGhpcy50cmlnZ2VyKCdpbnZhbGlkJywgdGhpcywgYXR0cnMsIG9w
dGlvbnMpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gbW9k
ZWw7Ci0gICAgfSwKLQotICAgIC8vIEludGVybmFsIG1ldGhvZCB0byBzZXZlciBhIG1vZGVsJ3Mg
dGllcyB0byBhIGNvbGxlY3Rpb24uCi0gICAgX3JlbW92ZVJlZmVyZW5jZTogZnVuY3Rpb24obW9k
ZWwpIHsKLSAgICAgIGlmICh0aGlzID09PSBtb2RlbC5jb2xsZWN0aW9uKSBkZWxldGUgbW9kZWwu
Y29sbGVjdGlvbjsKLSAgICAgIG1vZGVsLm9mZignYWxsJywgdGhpcy5fb25Nb2RlbEV2ZW50LCB0
aGlzKTsKLSAgICB9LAotCi0gICAgLy8gSW50ZXJuYWwgbWV0aG9kIGNhbGxlZCBldmVyeSB0aW1l
IGEgbW9kZWwgaW4gdGhlIHNldCBmaXJlcyBhbiBldmVudC4KLSAgICAvLyBTZXRzIG5lZWQgdG8g
dXBkYXRlIHRoZWlyIGluZGV4ZXMgd2hlbiBtb2RlbHMgY2hhbmdlIGlkcy4gQWxsIG90aGVyCi0g
ICAgLy8gZXZlbnRzIHNpbXBseSBwcm94eSB0aHJvdWdoLiAiYWRkIiBhbmQgInJlbW92ZSIgZXZl
bnRzIHRoYXQgb3JpZ2luYXRlCi0gICAgLy8gaW4gb3RoZXIgY29sbGVjdGlvbnMgYXJlIGlnbm9y
ZWQuCi0gICAgX29uTW9kZWxFdmVudDogZnVuY3Rpb24oZXZlbnQsIG1vZGVsLCBjb2xsZWN0aW9u
LCBvcHRpb25zKSB7Ci0gICAgICBpZiAoKGV2ZW50ID09PSAnYWRkJyB8fCBldmVudCA9PT0gJ3Jl
bW92ZScpICYmIGNvbGxlY3Rpb24gIT09IHRoaXMpIHJldHVybjsKLSAgICAgIGlmIChldmVudCA9
PT0gJ2Rlc3Ryb3knKSB0aGlzLnJlbW92ZShtb2RlbCwgb3B0aW9ucyk7Ci0gICAgICBpZiAobW9k
ZWwgJiYgZXZlbnQgPT09ICdjaGFuZ2U6JyArIG1vZGVsLmlkQXR0cmlidXRlKSB7Ci0gICAgICAg
IGRlbGV0ZSB0aGlzLl9ieUlkW21vZGVsLnByZXZpb3VzKG1vZGVsLmlkQXR0cmlidXRlKV07Ci0g
ICAgICAgIGlmIChtb2RlbC5pZCAhPSBudWxsKSB0aGlzLl9ieUlkW21vZGVsLmlkXSA9IG1vZGVs
OwotICAgICAgfQotICAgICAgdGhpcy50cmlnZ2VyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7Ci0g
ICAgfQotCi0gIH0pOwotCi0gIC8vIFVuZGVyc2NvcmUgbWV0aG9kcyB0aGF0IHdlIHdhbnQgdG8g
aW1wbGVtZW50IG9uIHRoZSBDb2xsZWN0aW9uLgotICAvLyA5MCUgb2YgdGhlIGNvcmUgdXNlZnVs
bmVzcyBvZiBCYWNrYm9uZSBDb2xsZWN0aW9ucyBpcyBhY3R1YWxseSBpbXBsZW1lbnRlZAotICAv
LyByaWdodCBoZXJlOgotICB2YXIgbWV0aG9kcyA9IFsnZm9yRWFjaCcsICdlYWNoJywgJ21hcCcs
ICdjb2xsZWN0JywgJ3JlZHVjZScsICdmb2xkbCcsCi0gICAgJ2luamVjdCcsICdyZWR1Y2VSaWdo
dCcsICdmb2xkcicsICdmaW5kJywgJ2RldGVjdCcsICdmaWx0ZXInLCAnc2VsZWN0JywKLSAgICAn
cmVqZWN0JywgJ2V2ZXJ5JywgJ2FsbCcsICdzb21lJywgJ2FueScsICdpbmNsdWRlJywgJ2NvbnRh
aW5zJywgJ2ludm9rZScsCi0gICAgJ21heCcsICdtaW4nLCAndG9BcnJheScsICdzaXplJywgJ2Zp
cnN0JywgJ2hlYWQnLCAndGFrZScsICdpbml0aWFsJywgJ3Jlc3QnLAotICAgICd0YWlsJywgJ2Ry
b3AnLCAnbGFzdCcsICd3aXRob3V0JywgJ2luZGV4T2YnLCAnc2h1ZmZsZScsICdsYXN0SW5kZXhP
ZicsCi0gICAgJ2lzRW1wdHknLCAnY2hhaW4nXTsKLQotICAvLyBNaXggaW4gZWFjaCBVbmRlcnNj
b3JlIG1ldGhvZCBhcyBhIHByb3h5IHRvIGBDb2xsZWN0aW9uI21vZGVsc2AuCi0gIF8uZWFjaCht
ZXRob2RzLCBmdW5jdGlvbihtZXRob2QpIHsKLSAgICBDb2xsZWN0aW9uLnByb3RvdHlwZVttZXRo
b2RdID0gZnVuY3Rpb24oKSB7Ci0gICAgICB2YXIgYXJncyA9IHNsaWNlLmNhbGwoYXJndW1lbnRz
KTsKLSAgICAgIGFyZ3MudW5zaGlmdCh0aGlzLm1vZGVscyk7Ci0gICAgICByZXR1cm4gX1ttZXRo
b2RdLmFwcGx5KF8sIGFyZ3MpOwotICAgIH07Ci0gIH0pOwotCi0gIC8vIFVuZGVyc2NvcmUgbWV0
aG9kcyB0aGF0IHRha2UgYSBwcm9wZXJ0eSBuYW1lIGFzIGFuIGFyZ3VtZW50LgotICB2YXIgYXR0
cmlidXRlTWV0aG9kcyA9IFsnZ3JvdXBCeScsICdjb3VudEJ5JywgJ3NvcnRCeSddOwotCi0gIC8v
IFVzZSBhdHRyaWJ1dGVzIGluc3RlYWQgb2YgcHJvcGVydGllcy4KLSAgXy5lYWNoKGF0dHJpYnV0
ZU1ldGhvZHMsIGZ1bmN0aW9uKG1ldGhvZCkgewotICAgIENvbGxlY3Rpb24ucHJvdG90eXBlW21l
dGhvZF0gPSBmdW5jdGlvbih2YWx1ZSwgY29udGV4dCkgewotICAgICAgdmFyIGl0ZXJhdG9yID0g
Xy5pc0Z1bmN0aW9uKHZhbHVlKSA/IHZhbHVlIDogZnVuY3Rpb24obW9kZWwpIHsKLSAgICAgICAg
cmV0dXJuIG1vZGVsLmdldCh2YWx1ZSk7Ci0gICAgICB9OwotICAgICAgcmV0dXJuIF9bbWV0aG9k
XSh0aGlzLm1vZGVscywgaXRlcmF0b3IsIGNvbnRleHQpOwotICAgIH07Ci0gIH0pOwotCi0gIC8v
IEJhY2tib25lLlZpZXcKLSAgLy8gLS0tLS0tLS0tLS0tLQotCi0gIC8vIEJhY2tib25lIFZpZXdz
IGFyZSBhbG1vc3QgbW9yZSBjb252ZW50aW9uIHRoYW4gdGhleSBhcmUgYWN0dWFsIGNvZGUuIEEg
VmlldwotICAvLyBpcyBzaW1wbHkgYSBKYXZhU2NyaXB0IG9iamVjdCB0aGF0IHJlcHJlc2VudHMg
YSBsb2dpY2FsIGNodW5rIG9mIFVJIGluIHRoZQotICAvLyBET00uIFRoaXMgbWlnaHQgYmUgYSBz
aW5nbGUgaXRlbSwgYW4gZW50aXJlIGxpc3QsIGEgc2lkZWJhciBvciBwYW5lbCwgb3IKLSAgLy8g
ZXZlbiB0aGUgc3Vycm91bmRpbmcgZnJhbWUgd2hpY2ggd3JhcHMgeW91ciB3aG9sZSBhcHAuIERl
ZmluaW5nIGEgY2h1bmsgb2YKLSAgLy8gVUkgYXMgYSAqKlZpZXcqKiBhbGxvd3MgeW91IHRvIGRl
ZmluZSB5b3VyIERPTSBldmVudHMgZGVjbGFyYXRpdmVseSwgd2l0aG91dAotICAvLyBoYXZpbmcg
dG8gd29ycnkgYWJvdXQgcmVuZGVyIG9yZGVyIC4uLiBhbmQgbWFrZXMgaXQgZWFzeSBmb3IgdGhl
IHZpZXcgdG8KLSAgLy8gcmVhY3QgdG8gc3BlY2lmaWMgY2hhbmdlcyBpbiB0aGUgc3RhdGUgb2Yg
eW91ciBtb2RlbHMuCi0KLSAgLy8gQ3JlYXRpbmcgYSBCYWNrYm9uZS5WaWV3IGNyZWF0ZXMgaXRz
IGluaXRpYWwgZWxlbWVudCBvdXRzaWRlIG9mIHRoZSBET00sCi0gIC8vIGlmIGFuIGV4aXN0aW5n
IGVsZW1lbnQgaXMgbm90IHByb3ZpZGVkLi4uCi0gIHZhciBWaWV3ID0gQmFja2JvbmUuVmlldyA9
IGZ1bmN0aW9uKG9wdGlvbnMpIHsKLSAgICB0aGlzLmNpZCA9IF8udW5pcXVlSWQoJ3ZpZXcnKTsK
LSAgICB0aGlzLl9jb25maWd1cmUob3B0aW9ucyB8fCB7fSk7Ci0gICAgdGhpcy5fZW5zdXJlRWxl
bWVudCgpOwotICAgIHRoaXMuaW5pdGlhbGl6ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwotICAg
IHRoaXMuZGVsZWdhdGVFdmVudHMoKTsKLSAgfTsKLQotICAvLyBDYWNoZWQgcmVnZXggdG8gc3Bs
aXQga2V5cyBmb3IgYGRlbGVnYXRlYC4KLSAgdmFyIGRlbGVnYXRlRXZlbnRTcGxpdHRlciA9IC9e
KFxTKylccyooLiopJC87Ci0KLSAgLy8gTGlzdCBvZiB2aWV3IG9wdGlvbnMgdG8gYmUgbWVyZ2Vk
IGFzIHByb3BlcnRpZXMuCi0gIHZhciB2aWV3T3B0aW9ucyA9IFsnbW9kZWwnLCAnY29sbGVjdGlv
bicsICdlbCcsICdpZCcsICdhdHRyaWJ1dGVzJywgJ2NsYXNzTmFtZScsICd0YWdOYW1lJywgJ2V2
ZW50cyddOwotCi0gIC8vIFNldCB1cCBhbGwgaW5oZXJpdGFibGUgKipCYWNrYm9uZS5WaWV3Kiog
cHJvcGVydGllcyBhbmQgbWV0aG9kcy4KLSAgXy5leHRlbmQoVmlldy5wcm90b3R5cGUsIEV2ZW50
cywgewotCi0gICAgLy8gVGhlIGRlZmF1bHQgYHRhZ05hbWVgIG9mIGEgVmlldydzIGVsZW1lbnQg
aXMgYCJkaXYiYC4KLSAgICB0YWdOYW1lOiAnZGl2JywKLQotICAgIC8vIGpRdWVyeSBkZWxlZ2F0
ZSBmb3IgZWxlbWVudCBsb29rdXAsIHNjb3BlZCB0byBET00gZWxlbWVudHMgd2l0aGluIHRoZQot
ICAgIC8vIGN1cnJlbnQgdmlldy4gVGhpcyBzaG91bGQgYmUgcHJlZmVyZWQgdG8gZ2xvYmFsIGxv
b2t1cHMgd2hlcmUgcG9zc2libGUuCi0gICAgJDogZnVuY3Rpb24oc2VsZWN0b3IpIHsKLSAgICAg
IHJldHVybiB0aGlzLiRlbC5maW5kKHNlbGVjdG9yKTsKLSAgICB9LAotCi0gICAgLy8gSW5pdGlh
bGl6ZSBpcyBhbiBlbXB0eSBmdW5jdGlvbiBieSBkZWZhdWx0LiBPdmVycmlkZSBpdCB3aXRoIHlv
dXIgb3duCi0gICAgLy8gaW5pdGlhbGl6YXRpb24gbG9naWMuCi0gICAgaW5pdGlhbGl6ZTogZnVu
Y3Rpb24oKXt9LAotCi0gICAgLy8gKipyZW5kZXIqKiBpcyB0aGUgY29yZSBmdW5jdGlvbiB0aGF0
IHlvdXIgdmlldyBzaG91bGQgb3ZlcnJpZGUsIGluIG9yZGVyCi0gICAgLy8gdG8gcG9wdWxhdGUg
aXRzIGVsZW1lbnQgKGB0aGlzLmVsYCksIHdpdGggdGhlIGFwcHJvcHJpYXRlIEhUTUwuIFRoZQot
ICAgIC8vIGNvbnZlbnRpb24gaXMgZm9yICoqcmVuZGVyKiogdG8gYWx3YXlzIHJldHVybiBgdGhp
c2AuCi0gICAgcmVuZGVyOiBmdW5jdGlvbigpIHsKLSAgICAgIHJldHVybiB0aGlzOwotICAgIH0s
Ci0KLSAgICAvLyBSZW1vdmUgdGhpcyB2aWV3IGJ5IHRha2luZyB0aGUgZWxlbWVudCBvdXQgb2Yg
dGhlIERPTSwgYW5kIHJlbW92aW5nIGFueQotICAgIC8vIGFwcGxpY2FibGUgQmFja2JvbmUuRXZl
bnRzIGxpc3RlbmVycy4KLSAgICByZW1vdmU6IGZ1bmN0aW9uKCkgewotICAgICAgdGhpcy4kZWwu
cmVtb3ZlKCk7Ci0gICAgICB0aGlzLnN0b3BMaXN0ZW5pbmcoKTsKLSAgICAgIHJldHVybiB0aGlz
OwotICAgIH0sCi0KLSAgICAvLyBDaGFuZ2UgdGhlIHZpZXcncyBlbGVtZW50IChgdGhpcy5lbGAg
cHJvcGVydHkpLCBpbmNsdWRpbmcgZXZlbnQKLSAgICAvLyByZS1kZWxlZ2F0aW9uLgotICAgIHNl
dEVsZW1lbnQ6IGZ1bmN0aW9uKGVsZW1lbnQsIGRlbGVnYXRlKSB7Ci0gICAgICBpZiAodGhpcy4k
ZWwpIHRoaXMudW5kZWxlZ2F0ZUV2ZW50cygpOwotICAgICAgdGhpcy4kZWwgPSBlbGVtZW50IGlu
c3RhbmNlb2YgQmFja2JvbmUuJCA/IGVsZW1lbnQgOiBCYWNrYm9uZS4kKGVsZW1lbnQpOwotICAg
ICAgdGhpcy5lbCA9IHRoaXMuJGVsWzBdOwotICAgICAgaWYgKGRlbGVnYXRlICE9PSBmYWxzZSkg
dGhpcy5kZWxlZ2F0ZUV2ZW50cygpOwotICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgfSwKLQotICAg
IC8vIFNldCBjYWxsYmFja3MsIHdoZXJlIGB0aGlzLmV2ZW50c2AgaXMgYSBoYXNoIG9mCi0gICAg
Ly8KLSAgICAvLyAqeyJldmVudCBzZWxlY3RvciI6ICJjYWxsYmFjayJ9KgotICAgIC8vCi0gICAg
Ly8gICAgIHsKLSAgICAvLyAgICAgICAnbW91c2Vkb3duIC50aXRsZSc6ICAnZWRpdCcsCi0gICAg
Ly8gICAgICAgJ2NsaWNrIC5idXR0b24nOiAgICAgJ3NhdmUnCi0gICAgLy8gICAgICAgJ2NsaWNr
IC5vcGVuJzogICAgICAgZnVuY3Rpb24oZSkgeyAuLi4gfQotICAgIC8vICAgICB9Ci0gICAgLy8K
LSAgICAvLyBwYWlycy4gQ2FsbGJhY2tzIHdpbGwgYmUgYm91bmQgdG8gdGhlIHZpZXcsIHdpdGgg
YHRoaXNgIHNldCBwcm9wZXJseS4KLSAgICAvLyBVc2VzIGV2ZW50IGRlbGVnYXRpb24gZm9yIGVm
ZmljaWVuY3kuCi0gICAgLy8gT21pdHRpbmcgdGhlIHNlbGVjdG9yIGJpbmRzIHRoZSBldmVudCB0
byBgdGhpcy5lbGAuCi0gICAgLy8gVGhpcyBvbmx5IHdvcmtzIGZvciBkZWxlZ2F0ZS1hYmxlIGV2
ZW50czogbm90IGBmb2N1c2AsIGBibHVyYCwgYW5kCi0gICAgLy8gbm90IGBjaGFuZ2VgLCBgc3Vi
bWl0YCwgYW5kIGByZXNldGAgaW4gSW50ZXJuZXQgRXhwbG9yZXIuCi0gICAgZGVsZWdhdGVFdmVu
dHM6IGZ1bmN0aW9uKGV2ZW50cykgewotICAgICAgaWYgKCEoZXZlbnRzIHx8IChldmVudHMgPSBf
LnJlc3VsdCh0aGlzLCAnZXZlbnRzJykpKSkgcmV0dXJuIHRoaXM7Ci0gICAgICB0aGlzLnVuZGVs
ZWdhdGVFdmVudHMoKTsKLSAgICAgIGZvciAodmFyIGtleSBpbiBldmVudHMpIHsKLSAgICAgICAg
dmFyIG1ldGhvZCA9IGV2ZW50c1trZXldOwotICAgICAgICBpZiAoIV8uaXNGdW5jdGlvbihtZXRo
b2QpKSBtZXRob2QgPSB0aGlzW2V2ZW50c1trZXldXTsKLSAgICAgICAgaWYgKCFtZXRob2QpIGNv
bnRpbnVlOwotCi0gICAgICAgIHZhciBtYXRjaCA9IGtleS5tYXRjaChkZWxlZ2F0ZUV2ZW50U3Bs
aXR0ZXIpOwotICAgICAgICB2YXIgZXZlbnROYW1lID0gbWF0Y2hbMV0sIHNlbGVjdG9yID0gbWF0
Y2hbMl07Ci0gICAgICAgIG1ldGhvZCA9IF8uYmluZChtZXRob2QsIHRoaXMpOwotICAgICAgICBl
dmVudE5hbWUgKz0gJy5kZWxlZ2F0ZUV2ZW50cycgKyB0aGlzLmNpZDsKLSAgICAgICAgaWYgKHNl
bGVjdG9yID09PSAnJykgewotICAgICAgICAgIHRoaXMuJGVsLm9uKGV2ZW50TmFtZSwgbWV0aG9k
KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICB0aGlzLiRlbC5vbihldmVudE5hbWUsIHNl
bGVjdG9yLCBtZXRob2QpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICByZXR1cm4gdGhpczsK
LSAgICB9LAotCi0gICAgLy8gQ2xlYXJzIGFsbCBjYWxsYmFja3MgcHJldmlvdXNseSBib3VuZCB0
byB0aGUgdmlldyB3aXRoIGBkZWxlZ2F0ZUV2ZW50c2AuCi0gICAgLy8gWW91IHVzdWFsbHkgZG9u
J3QgbmVlZCB0byB1c2UgdGhpcywgYnV0IG1heSB3aXNoIHRvIGlmIHlvdSBoYXZlIG11bHRpcGxl
Ci0gICAgLy8gQmFja2JvbmUgdmlld3MgYXR0YWNoZWQgdG8gdGhlIHNhbWUgRE9NIGVsZW1lbnQu
Ci0gICAgdW5kZWxlZ2F0ZUV2ZW50czogZnVuY3Rpb24oKSB7Ci0gICAgICB0aGlzLiRlbC5vZmYo
Jy5kZWxlZ2F0ZUV2ZW50cycgKyB0aGlzLmNpZCk7Ci0gICAgICByZXR1cm4gdGhpczsKLSAgICB9
LAotCi0gICAgLy8gUGVyZm9ybXMgdGhlIGluaXRpYWwgY29uZmlndXJhdGlvbiBvZiBhIFZpZXcg
d2l0aCBhIHNldCBvZiBvcHRpb25zLgotICAgIC8vIEtleXMgd2l0aCBzcGVjaWFsIG1lYW5pbmcg
KihlLmcuIG1vZGVsLCBjb2xsZWN0aW9uLCBpZCwgY2xhc3NOYW1lKSogYXJlCi0gICAgLy8gYXR0
YWNoZWQgZGlyZWN0bHkgdG8gdGhlIHZpZXcuICBTZWUgYHZpZXdPcHRpb25zYCBmb3IgYW4gZXho
YXVzdGl2ZQotICAgIC8vIGxpc3QuCi0gICAgX2NvbmZpZ3VyZTogZnVuY3Rpb24ob3B0aW9ucykg
ewotICAgICAgaWYgKHRoaXMub3B0aW9ucykgb3B0aW9ucyA9IF8uZXh0ZW5kKHt9LCBfLnJlc3Vs
dCh0aGlzLCAnb3B0aW9ucycpLCBvcHRpb25zKTsKLSAgICAgIF8uZXh0ZW5kKHRoaXMsIF8ucGlj
ayhvcHRpb25zLCB2aWV3T3B0aW9ucykpOwotICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9uczsK
LSAgICB9LAotCi0gICAgLy8gRW5zdXJlIHRoYXQgdGhlIFZpZXcgaGFzIGEgRE9NIGVsZW1lbnQg
dG8gcmVuZGVyIGludG8uCi0gICAgLy8gSWYgYHRoaXMuZWxgIGlzIGEgc3RyaW5nLCBwYXNzIGl0
IHRocm91Z2ggYCQoKWAsIHRha2UgdGhlIGZpcnN0Ci0gICAgLy8gbWF0Y2hpbmcgZWxlbWVudCwg
YW5kIHJlLWFzc2lnbiBpdCB0byBgZWxgLiBPdGhlcndpc2UsIGNyZWF0ZQotICAgIC8vIGFuIGVs
ZW1lbnQgZnJvbSB0aGUgYGlkYCwgYGNsYXNzTmFtZWAgYW5kIGB0YWdOYW1lYCBwcm9wZXJ0aWVz
LgotICAgIF9lbnN1cmVFbGVtZW50OiBmdW5jdGlvbigpIHsKLSAgICAgIGlmICghdGhpcy5lbCkg
ewotICAgICAgICB2YXIgYXR0cnMgPSBfLmV4dGVuZCh7fSwgXy5yZXN1bHQodGhpcywgJ2F0dHJp
YnV0ZXMnKSk7Ci0gICAgICAgIGlmICh0aGlzLmlkKSBhdHRycy5pZCA9IF8ucmVzdWx0KHRoaXMs
ICdpZCcpOwotICAgICAgICBpZiAodGhpcy5jbGFzc05hbWUpIGF0dHJzWydjbGFzcyddID0gXy5y
ZXN1bHQodGhpcywgJ2NsYXNzTmFtZScpOwotICAgICAgICB2YXIgJGVsID0gQmFja2JvbmUuJCgn
PCcgKyBfLnJlc3VsdCh0aGlzLCAndGFnTmFtZScpICsgJz4nKS5hdHRyKGF0dHJzKTsKLSAgICAg
ICAgdGhpcy5zZXRFbGVtZW50KCRlbCwgZmFsc2UpOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAg
dGhpcy5zZXRFbGVtZW50KF8ucmVzdWx0KHRoaXMsICdlbCcpLCBmYWxzZSk7Ci0gICAgICB9Ci0g
ICAgfQotCi0gIH0pOwotCi0gIC8vIEJhY2tib25lLnN5bmMKLSAgLy8gLS0tLS0tLS0tLS0tLQot
Ci0gIC8vIE92ZXJyaWRlIHRoaXMgZnVuY3Rpb24gdG8gY2hhbmdlIHRoZSBtYW5uZXIgaW4gd2hp
Y2ggQmFja2JvbmUgcGVyc2lzdHMKLSAgLy8gbW9kZWxzIHRvIHRoZSBzZXJ2ZXIuIFlvdSB3aWxs
IGJlIHBhc3NlZCB0aGUgdHlwZSBvZiByZXF1ZXN0LCBhbmQgdGhlCi0gIC8vIG1vZGVsIGluIHF1
ZXN0aW9uLiBCeSBkZWZhdWx0LCBtYWtlcyBhIFJFU1RmdWwgQWpheCByZXF1ZXN0Ci0gIC8vIHRv
IHRoZSBtb2RlbCdzIGB1cmwoKWAuIFNvbWUgcG9zc2libGUgY3VzdG9taXphdGlvbnMgY291bGQg
YmU6Ci0gIC8vCi0gIC8vICogVXNlIGBzZXRUaW1lb3V0YCB0byBiYXRjaCByYXBpZC1maXJlIHVw
ZGF0ZXMgaW50byBhIHNpbmdsZSByZXF1ZXN0LgotICAvLyAqIFNlbmQgdXAgdGhlIG1vZGVscyBh
cyBYTUwgaW5zdGVhZCBvZiBKU09OLgotICAvLyAqIFBlcnNpc3QgbW9kZWxzIHZpYSBXZWJTb2Nr
ZXRzIGluc3RlYWQgb2YgQWpheC4KLSAgLy8KLSAgLy8gVHVybiBvbiBgQmFja2JvbmUuZW11bGF0
ZUhUVFBgIGluIG9yZGVyIHRvIHNlbmQgYFBVVGAgYW5kIGBERUxFVEVgIHJlcXVlc3RzCi0gIC8v
IGFzIGBQT1NUYCwgd2l0aCBhIGBfbWV0aG9kYCBwYXJhbWV0ZXIgY29udGFpbmluZyB0aGUgdHJ1
ZSBIVFRQIG1ldGhvZCwKLSAgLy8gYXMgd2VsbCBhcyBhbGwgcmVxdWVzdHMgd2l0aCB0aGUgYm9k
eSBhcyBgYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkYAotICAvLyBpbnN0ZWFkIG9m
IGBhcHBsaWNhdGlvbi9qc29uYCB3aXRoIHRoZSBtb2RlbCBpbiBhIHBhcmFtIG5hbWVkIGBtb2Rl
bGAuCi0gIC8vIFVzZWZ1bCB3aGVuIGludGVyZmFjaW5nIHdpdGggc2VydmVyLXNpZGUgbGFuZ3Vh
Z2VzIGxpa2UgKipQSFAqKiB0aGF0IG1ha2UKLSAgLy8gaXQgZGlmZmljdWx0IHRvIHJlYWQgdGhl
IGJvZHkgb2YgYFBVVGAgcmVxdWVzdHMuCi0gIEJhY2tib25lLnN5bmMgPSBmdW5jdGlvbihtZXRo
b2QsIG1vZGVsLCBvcHRpb25zKSB7Ci0gICAgdmFyIHR5cGUgPSBtZXRob2RNYXBbbWV0aG9kXTsK
LQotICAgIC8vIERlZmF1bHQgb3B0aW9ucywgdW5sZXNzIHNwZWNpZmllZC4KLSAgICBfLmRlZmF1
bHRzKG9wdGlvbnMgfHwgKG9wdGlvbnMgPSB7fSksIHsKLSAgICAgIGVtdWxhdGVIVFRQOiBCYWNr
Ym9uZS5lbXVsYXRlSFRUUCwKLSAgICAgIGVtdWxhdGVKU09OOiBCYWNrYm9uZS5lbXVsYXRlSlNP
TgotICAgIH0pOwotCi0gICAgLy8gRGVmYXVsdCBKU09OLXJlcXVlc3Qgb3B0aW9ucy4KLSAgICB2
YXIgcGFyYW1zID0ge3R5cGU6IHR5cGUsIGRhdGFUeXBlOiAnanNvbid9OwotCi0gICAgLy8gRW5z
dXJlIHRoYXQgd2UgaGF2ZSBhIFVSTC4KLSAgICBpZiAoIW9wdGlvbnMudXJsKSB7Ci0gICAgICBw
YXJhbXMudXJsID0gXy5yZXN1bHQobW9kZWwsICd1cmwnKSB8fCB1cmxFcnJvcigpOwotICAgIH0K
LQotICAgIC8vIEVuc3VyZSB0aGF0IHdlIGhhdmUgdGhlIGFwcHJvcHJpYXRlIHJlcXVlc3QgZGF0
YS4KLSAgICBpZiAob3B0aW9ucy5kYXRhID09IG51bGwgJiYgbW9kZWwgJiYgKG1ldGhvZCA9PT0g
J2NyZWF0ZScgfHwgbWV0aG9kID09PSAndXBkYXRlJyB8fCBtZXRob2QgPT09ICdwYXRjaCcpKSB7
Ci0gICAgICBwYXJhbXMuY29udGVudFR5cGUgPSAnYXBwbGljYXRpb24vanNvbic7Ci0gICAgICBw
YXJhbXMuZGF0YSA9IEpTT04uc3RyaW5naWZ5KG9wdGlvbnMuYXR0cnMgfHwgbW9kZWwudG9KU09O
KG9wdGlvbnMpKTsKLSAgICB9Ci0KLSAgICAvLyBGb3Igb2xkZXIgc2VydmVycywgZW11bGF0ZSBK
U09OIGJ5IGVuY29kaW5nIHRoZSByZXF1ZXN0IGludG8gYW4gSFRNTC1mb3JtLgotICAgIGlmIChv
cHRpb25zLmVtdWxhdGVKU09OKSB7Ci0gICAgICBwYXJhbXMuY29udGVudFR5cGUgPSAnYXBwbGlj
YXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJzsKLSAgICAgIHBhcmFtcy5kYXRhID0gcGFyYW1z
LmRhdGEgPyB7bW9kZWw6IHBhcmFtcy5kYXRhfSA6IHt9OwotICAgIH0KLQotICAgIC8vIEZvciBv
bGRlciBzZXJ2ZXJzLCBlbXVsYXRlIEhUVFAgYnkgbWltaWNraW5nIHRoZSBIVFRQIG1ldGhvZCB3
aXRoIGBfbWV0aG9kYAotICAgIC8vIEFuZCBhbiBgWC1IVFRQLU1ldGhvZC1PdmVycmlkZWAgaGVh
ZGVyLgotICAgIGlmIChvcHRpb25zLmVtdWxhdGVIVFRQICYmICh0eXBlID09PSAnUFVUJyB8fCB0
eXBlID09PSAnREVMRVRFJyB8fCB0eXBlID09PSAnUEFUQ0gnKSkgewotICAgICAgcGFyYW1zLnR5
cGUgPSAnUE9TVCc7Ci0gICAgICBpZiAob3B0aW9ucy5lbXVsYXRlSlNPTikgcGFyYW1zLmRhdGEu
X21ldGhvZCA9IHR5cGU7Ci0gICAgICB2YXIgYmVmb3JlU2VuZCA9IG9wdGlvbnMuYmVmb3JlU2Vu
ZDsKLSAgICAgIG9wdGlvbnMuYmVmb3JlU2VuZCA9IGZ1bmN0aW9uKHhocikgewotICAgICAgICB4
aHIuc2V0UmVxdWVzdEhlYWRlcignWC1IVFRQLU1ldGhvZC1PdmVycmlkZScsIHR5cGUpOwotICAg
ICAgICBpZiAoYmVmb3JlU2VuZCkgcmV0dXJuIGJlZm9yZVNlbmQuYXBwbHkodGhpcywgYXJndW1l
bnRzKTsKLSAgICAgIH07Ci0gICAgfQotCi0gICAgLy8gRG9uJ3QgcHJvY2VzcyBkYXRhIG9uIGEg
bm9uLUdFVCByZXF1ZXN0LgotICAgIGlmIChwYXJhbXMudHlwZSAhPT0gJ0dFVCcgJiYgIW9wdGlv
bnMuZW11bGF0ZUpTT04pIHsKLSAgICAgIHBhcmFtcy5wcm9jZXNzRGF0YSA9IGZhbHNlOwotICAg
IH0KLQotICAgIC8vIElmIHdlJ3JlIHNlbmRpbmcgYSBgUEFUQ0hgIHJlcXVlc3QsIGFuZCB3ZSdy
ZSBpbiBhbiBvbGQgSW50ZXJuZXQgRXhwbG9yZXIKLSAgICAvLyB0aGF0IHN0aWxsIGhhcyBBY3Rp
dmVYIGVuYWJsZWQgYnkgZGVmYXVsdCwgb3ZlcnJpZGUgalF1ZXJ5IHRvIHVzZSB0aGF0Ci0gICAg
Ly8gZm9yIFhIUiBpbnN0ZWFkLiBSZW1vdmUgdGhpcyBsaW5lIHdoZW4galF1ZXJ5IHN1cHBvcnRz
IGBQQVRDSGAgb24gSUU4LgotICAgIGlmIChwYXJhbXMudHlwZSA9PT0gJ1BBVENIJyAmJiB3aW5k
b3cuQWN0aXZlWE9iamVjdCAmJgotICAgICAgICAgICEod2luZG93LmV4dGVybmFsICYmIHdpbmRv
dy5leHRlcm5hbC5tc0FjdGl2ZVhGaWx0ZXJpbmdFbmFibGVkKSkgewotICAgICAgcGFyYW1zLnho
ciA9IGZ1bmN0aW9uKCkgewotICAgICAgICByZXR1cm4gbmV3IEFjdGl2ZVhPYmplY3QoIk1pY3Jv
c29mdC5YTUxIVFRQIik7Ci0gICAgICB9OwotICAgIH0KLQotICAgIC8vIE1ha2UgdGhlIHJlcXVl
c3QsIGFsbG93aW5nIHRoZSB1c2VyIHRvIG92ZXJyaWRlIGFueSBBamF4IG9wdGlvbnMuCi0gICAg
dmFyIHhociA9IG9wdGlvbnMueGhyID0gQmFja2JvbmUuYWpheChfLmV4dGVuZChwYXJhbXMsIG9w
dGlvbnMpKTsKLSAgICBtb2RlbC50cmlnZ2VyKCdyZXF1ZXN0JywgbW9kZWwsIHhociwgb3B0aW9u
cyk7Ci0gICAgcmV0dXJuIHhocjsKLSAgfTsKLQotICAvLyBNYXAgZnJvbSBDUlVEIHRvIEhUVFAg
Zm9yIG91ciBkZWZhdWx0IGBCYWNrYm9uZS5zeW5jYCBpbXBsZW1lbnRhdGlvbi4KLSAgdmFyIG1l
dGhvZE1hcCA9IHsKLSAgICAnY3JlYXRlJzogJ1BPU1QnLAotICAgICd1cGRhdGUnOiAnUFVUJywK
LSAgICAncGF0Y2gnOiAgJ1BBVENIJywKLSAgICAnZGVsZXRlJzogJ0RFTEVURScsCi0gICAgJ3Jl
YWQnOiAgICdHRVQnCi0gIH07Ci0KLSAgLy8gU2V0IHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9u
IG9mIGBCYWNrYm9uZS5hamF4YCB0byBwcm94eSB0aHJvdWdoIHRvIGAkYC4KLSAgLy8gT3ZlcnJp
ZGUgdGhpcyBpZiB5b3UnZCBsaWtlIHRvIHVzZSBhIGRpZmZlcmVudCBsaWJyYXJ5LgotICBCYWNr
Ym9uZS5hamF4ID0gZnVuY3Rpb24oKSB7Ci0gICAgcmV0dXJuIEJhY2tib25lLiQuYWpheC5hcHBs
eShCYWNrYm9uZS4kLCBhcmd1bWVudHMpOwotICB9OwotCi0gIC8vIEJhY2tib25lLlJvdXRlcgot
ICAvLyAtLS0tLS0tLS0tLS0tLS0KLQotICAvLyBSb3V0ZXJzIG1hcCBmYXV4LVVSTHMgdG8gYWN0
aW9ucywgYW5kIGZpcmUgZXZlbnRzIHdoZW4gcm91dGVzIGFyZQotICAvLyBtYXRjaGVkLiBDcmVh
dGluZyBhIG5ldyBvbmUgc2V0cyBpdHMgYHJvdXRlc2AgaGFzaCwgaWYgbm90IHNldCBzdGF0aWNh
bGx5LgotICB2YXIgUm91dGVyID0gQmFja2JvbmUuUm91dGVyID0gZnVuY3Rpb24ob3B0aW9ucykg
ewotICAgIG9wdGlvbnMgfHwgKG9wdGlvbnMgPSB7fSk7Ci0gICAgaWYgKG9wdGlvbnMucm91dGVz
KSB0aGlzLnJvdXRlcyA9IG9wdGlvbnMucm91dGVzOwotICAgIHRoaXMuX2JpbmRSb3V0ZXMoKTsK
LSAgICB0aGlzLmluaXRpYWxpemUuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKLSAgfTsKLQotICAv
LyBDYWNoZWQgcmVndWxhciBleHByZXNzaW9ucyBmb3IgbWF0Y2hpbmcgbmFtZWQgcGFyYW0gcGFy
dHMgYW5kIHNwbGF0dGVkCi0gIC8vIHBhcnRzIG9mIHJvdXRlIHN0cmluZ3MuCi0gIHZhciBvcHRp
b25hbFBhcmFtID0gL1woKC4qPylcKS9nOwotICB2YXIgbmFtZWRQYXJhbSAgICA9IC8oXChcPyk/
Olx3Ky9nOwotICB2YXIgc3BsYXRQYXJhbSAgICA9IC9cKlx3Ky9nOwotICB2YXIgZXNjYXBlUmVn
RXhwICA9IC9bXC17fVxbXF0rPy4sXFxcXiR8I1xzXS9nOwotCi0gIC8vIFNldCB1cCBhbGwgaW5o
ZXJpdGFibGUgKipCYWNrYm9uZS5Sb3V0ZXIqKiBwcm9wZXJ0aWVzIGFuZCBtZXRob2RzLgotICBf
LmV4dGVuZChSb3V0ZXIucHJvdG90eXBlLCBFdmVudHMsIHsKLQotICAgIC8vIEluaXRpYWxpemUg
aXMgYW4gZW1wdHkgZnVuY3Rpb24gYnkgZGVmYXVsdC4gT3ZlcnJpZGUgaXQgd2l0aCB5b3VyIG93
bgotICAgIC8vIGluaXRpYWxpemF0aW9uIGxvZ2ljLgotICAgIGluaXRpYWxpemU6IGZ1bmN0aW9u
KCl7fSwKLQotICAgIC8vIE1hbnVhbGx5IGJpbmQgYSBzaW5nbGUgbmFtZWQgcm91dGUgdG8gYSBj
YWxsYmFjay4gRm9yIGV4YW1wbGU6Ci0gICAgLy8KLSAgICAvLyAgICAgdGhpcy5yb3V0ZSgnc2Vh
cmNoLzpxdWVyeS9wOm51bScsICdzZWFyY2gnLCBmdW5jdGlvbihxdWVyeSwgbnVtKSB7Ci0gICAg
Ly8gICAgICAgLi4uCi0gICAgLy8gICAgIH0pOwotICAgIC8vCi0gICAgcm91dGU6IGZ1bmN0aW9u
KHJvdXRlLCBuYW1lLCBjYWxsYmFjaykgewotICAgICAgaWYgKCFfLmlzUmVnRXhwKHJvdXRlKSkg
cm91dGUgPSB0aGlzLl9yb3V0ZVRvUmVnRXhwKHJvdXRlKTsKLSAgICAgIGlmIChfLmlzRnVuY3Rp
b24obmFtZSkpIHsKLSAgICAgICAgY2FsbGJhY2sgPSBuYW1lOwotICAgICAgICBuYW1lID0gJyc7
Ci0gICAgICB9Ci0gICAgICBpZiAoIWNhbGxiYWNrKSBjYWxsYmFjayA9IHRoaXNbbmFtZV07Ci0g
ICAgICB2YXIgcm91dGVyID0gdGhpczsKLSAgICAgIEJhY2tib25lLmhpc3Rvcnkucm91dGUocm91
dGUsIGZ1bmN0aW9uKGZyYWdtZW50KSB7Ci0gICAgICAgIHZhciBhcmdzID0gcm91dGVyLl9leHRy
YWN0UGFyYW1ldGVycyhyb3V0ZSwgZnJhZ21lbnQpOwotICAgICAgICBjYWxsYmFjayAmJiBjYWxs
YmFjay5hcHBseShyb3V0ZXIsIGFyZ3MpOwotICAgICAgICByb3V0ZXIudHJpZ2dlci5hcHBseShy
b3V0ZXIsIFsncm91dGU6JyArIG5hbWVdLmNvbmNhdChhcmdzKSk7Ci0gICAgICAgIHJvdXRlci50
cmlnZ2VyKCdyb3V0ZScsIG5hbWUsIGFyZ3MpOwotICAgICAgICBCYWNrYm9uZS5oaXN0b3J5LnRy
aWdnZXIoJ3JvdXRlJywgcm91dGVyLCBuYW1lLCBhcmdzKTsKLSAgICAgIH0pOwotICAgICAgcmV0
dXJuIHRoaXM7Ci0gICAgfSwKLQotICAgIC8vIFNpbXBsZSBwcm94eSB0byBgQmFja2JvbmUuaGlz
dG9yeWAgdG8gc2F2ZSBhIGZyYWdtZW50IGludG8gdGhlIGhpc3RvcnkuCi0gICAgbmF2aWdhdGU6
IGZ1bmN0aW9uKGZyYWdtZW50LCBvcHRpb25zKSB7Ci0gICAgICBCYWNrYm9uZS5oaXN0b3J5Lm5h
dmlnYXRlKGZyYWdtZW50LCBvcHRpb25zKTsKLSAgICAgIHJldHVybiB0aGlzOwotICAgIH0sCi0K
LSAgICAvLyBCaW5kIGFsbCBkZWZpbmVkIHJvdXRlcyB0byBgQmFja2JvbmUuaGlzdG9yeWAuIFdl
IGhhdmUgdG8gcmV2ZXJzZSB0aGUKLSAgICAvLyBvcmRlciBvZiB0aGUgcm91dGVzIGhlcmUgdG8g
c3VwcG9ydCBiZWhhdmlvciB3aGVyZSB0aGUgbW9zdCBnZW5lcmFsCi0gICAgLy8gcm91dGVzIGNh
biBiZSBkZWZpbmVkIGF0IHRoZSBib3R0b20gb2YgdGhlIHJvdXRlIG1hcC4KLSAgICBfYmluZFJv
dXRlczogZnVuY3Rpb24oKSB7Ci0gICAgICBpZiAoIXRoaXMucm91dGVzKSByZXR1cm47Ci0gICAg
ICB0aGlzLnJvdXRlcyA9IF8ucmVzdWx0KHRoaXMsICdyb3V0ZXMnKTsKLSAgICAgIHZhciByb3V0
ZSwgcm91dGVzID0gXy5rZXlzKHRoaXMucm91dGVzKTsKLSAgICAgIHdoaWxlICgocm91dGUgPSBy
b3V0ZXMucG9wKCkpICE9IG51bGwpIHsKLSAgICAgICAgdGhpcy5yb3V0ZShyb3V0ZSwgdGhpcy5y
b3V0ZXNbcm91dGVdKTsKLSAgICAgIH0KLSAgICB9LAotCi0gICAgLy8gQ29udmVydCBhIHJvdXRl
IHN0cmluZyBpbnRvIGEgcmVndWxhciBleHByZXNzaW9uLCBzdWl0YWJsZSBmb3IgbWF0Y2hpbmcK
LSAgICAvLyBhZ2FpbnN0IHRoZSBjdXJyZW50IGxvY2F0aW9uIGhhc2guCi0gICAgX3JvdXRlVG9S
ZWdFeHA6IGZ1bmN0aW9uKHJvdXRlKSB7Ci0gICAgICByb3V0ZSA9IHJvdXRlLnJlcGxhY2UoZXNj
YXBlUmVnRXhwLCAnXFwkJicpCi0gICAgICAgICAgICAgICAgICAgLnJlcGxhY2Uob3B0aW9uYWxQ
YXJhbSwgJyg/OiQxKT8nKQotICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKG5hbWVkUGFyYW0s
IGZ1bmN0aW9uKG1hdGNoLCBvcHRpb25hbCl7Ci0gICAgICAgICAgICAgICAgICAgICByZXR1cm4g
b3B0aW9uYWwgPyBtYXRjaCA6ICcoW15cL10rKSc7Ci0gICAgICAgICAgICAgICAgICAgfSkKLSAg
ICAgICAgICAgICAgICAgICAucmVwbGFjZShzcGxhdFBhcmFtLCAnKC4qPyknKTsKLSAgICAgIHJl
dHVybiBuZXcgUmVnRXhwKCdeJyArIHJvdXRlICsgJyQnKTsKLSAgICB9LAotCi0gICAgLy8gR2l2
ZW4gYSByb3V0ZSwgYW5kIGEgVVJMIGZyYWdtZW50IHRoYXQgaXQgbWF0Y2hlcywgcmV0dXJuIHRo
ZSBhcnJheSBvZgotICAgIC8vIGV4dHJhY3RlZCBkZWNvZGVkIHBhcmFtZXRlcnMuIEVtcHR5IG9y
IHVubWF0Y2hlZCBwYXJhbWV0ZXJzIHdpbGwgYmUKLSAgICAvLyB0cmVhdGVkIGFzIGBudWxsYCB0
byBub3JtYWxpemUgY3Jvc3MtYnJvd3NlciBiZWhhdmlvci4KLSAgICBfZXh0cmFjdFBhcmFtZXRl
cnM6IGZ1bmN0aW9uKHJvdXRlLCBmcmFnbWVudCkgewotICAgICAgdmFyIHBhcmFtcyA9IHJvdXRl
LmV4ZWMoZnJhZ21lbnQpLnNsaWNlKDEpOwotICAgICAgcmV0dXJuIF8ubWFwKHBhcmFtcywgZnVu
Y3Rpb24ocGFyYW0pIHsKLSAgICAgICAgcmV0dXJuIHBhcmFtID8gZGVjb2RlVVJJQ29tcG9uZW50
KHBhcmFtKSA6IG51bGw7Ci0gICAgICB9KTsKLSAgICB9Ci0KLSAgfSk7Ci0KLSAgLy8gQmFja2Jv
bmUuSGlzdG9yeQotICAvLyAtLS0tLS0tLS0tLS0tLS0tCi0KLSAgLy8gSGFuZGxlcyBjcm9zcy1i
cm93c2VyIGhpc3RvcnkgbWFuYWdlbWVudCwgYmFzZWQgb24gZWl0aGVyCi0gIC8vIFtwdXNoU3Rh
dGVdKGh0dHA6Ly9kaXZlaW50b2h0bWw1LmluZm8vaGlzdG9yeS5odG1sKSBhbmQgcmVhbCBVUkxz
LCBvcgotICAvLyBbb25oYXNoY2hhbmdlXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9l
bi1VUy9kb2NzL0RPTS93aW5kb3cub25oYXNoY2hhbmdlKQotICAvLyBhbmQgVVJMIGZyYWdtZW50
cy4gSWYgdGhlIGJyb3dzZXIgc3VwcG9ydHMgbmVpdGhlciAob2xkIElFLCBuYXRjaCksCi0gIC8v
IGZhbGxzIGJhY2sgdG8gcG9sbGluZy4KLSAgdmFyIEhpc3RvcnkgPSBCYWNrYm9uZS5IaXN0b3J5
ID0gZnVuY3Rpb24oKSB7Ci0gICAgdGhpcy5oYW5kbGVycyA9IFtdOwotICAgIF8uYmluZEFsbCh0
aGlzLCAnY2hlY2tVcmwnKTsKLQotICAgIC8vIEVuc3VyZSB0aGF0IGBIaXN0b3J5YCBjYW4gYmUg
dXNlZCBvdXRzaWRlIG9mIHRoZSBicm93c2VyLgotICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAn
dW5kZWZpbmVkJykgewotICAgICAgdGhpcy5sb2NhdGlvbiA9IHdpbmRvdy5sb2NhdGlvbjsKLSAg
ICAgIHRoaXMuaGlzdG9yeSA9IHdpbmRvdy5oaXN0b3J5OwotICAgIH0KLSAgfTsKLQotICAvLyBD
YWNoZWQgcmVnZXggZm9yIHN0cmlwcGluZyBhIGxlYWRpbmcgaGFzaC9zbGFzaCBhbmQgdHJhaWxp
bmcgc3BhY2UuCi0gIHZhciByb3V0ZVN0cmlwcGVyID0gL15bI1wvXXxccyskL2c7Ci0KLSAgLy8g
Q2FjaGVkIHJlZ2V4IGZvciBzdHJpcHBpbmcgbGVhZGluZyBhbmQgdHJhaWxpbmcgc2xhc2hlcy4K
LSAgdmFyIHJvb3RTdHJpcHBlciA9IC9eXC8rfFwvKyQvZzsKLQotICAvLyBDYWNoZWQgcmVnZXgg
Zm9yIGRldGVjdGluZyBNU0lFLgotICB2YXIgaXNFeHBsb3JlciA9IC9tc2llIFtcdy5dKy87Ci0K
LSAgLy8gQ2FjaGVkIHJlZ2V4IGZvciByZW1vdmluZyBhIHRyYWlsaW5nIHNsYXNoLgotICB2YXIg
dHJhaWxpbmdTbGFzaCA9IC9cLyQvOwotCi0gIC8vIEhhcyB0aGUgaGlzdG9yeSBoYW5kbGluZyBh
bHJlYWR5IGJlZW4gc3RhcnRlZD8KLSAgSGlzdG9yeS5zdGFydGVkID0gZmFsc2U7Ci0KLSAgLy8g
U2V0IHVwIGFsbCBpbmhlcml0YWJsZSAqKkJhY2tib25lLkhpc3RvcnkqKiBwcm9wZXJ0aWVzIGFu
ZCBtZXRob2RzLgotICBfLmV4dGVuZChIaXN0b3J5LnByb3RvdHlwZSwgRXZlbnRzLCB7Ci0KLSAg
ICAvLyBUaGUgZGVmYXVsdCBpbnRlcnZhbCB0byBwb2xsIGZvciBoYXNoIGNoYW5nZXMsIGlmIG5l
Y2Vzc2FyeSwgaXMKLSAgICAvLyB0d2VudHkgdGltZXMgYSBzZWNvbmQuCi0gICAgaW50ZXJ2YWw6
IDUwLAotCi0gICAgLy8gR2V0cyB0aGUgdHJ1ZSBoYXNoIHZhbHVlLiBDYW5ub3QgdXNlIGxvY2F0
aW9uLmhhc2ggZGlyZWN0bHkgZHVlIHRvIGJ1ZwotICAgIC8vIGluIEZpcmVmb3ggd2hlcmUgbG9j
YXRpb24uaGFzaCB3aWxsIGFsd2F5cyBiZSBkZWNvZGVkLgotICAgIGdldEhhc2g6IGZ1bmN0aW9u
KHdpbmRvdykgewotICAgICAgdmFyIG1hdGNoID0gKHdpbmRvdyB8fCB0aGlzKS5sb2NhdGlvbi5o
cmVmLm1hdGNoKC8jKC4qKSQvKTsKLSAgICAgIHJldHVybiBtYXRjaCA/IG1hdGNoWzFdIDogJyc7
Ci0gICAgfSwKLQotICAgIC8vIEdldCB0aGUgY3Jvc3MtYnJvd3NlciBub3JtYWxpemVkIFVSTCBm
cmFnbWVudCwgZWl0aGVyIGZyb20gdGhlIFVSTCwKLSAgICAvLyB0aGUgaGFzaCwgb3IgdGhlIG92
ZXJyaWRlLgotICAgIGdldEZyYWdtZW50OiBmdW5jdGlvbihmcmFnbWVudCwgZm9yY2VQdXNoU3Rh
dGUpIHsKLSAgICAgIGlmIChmcmFnbWVudCA9PSBudWxsKSB7Ci0gICAgICAgIGlmICh0aGlzLl9o
YXNQdXNoU3RhdGUgfHwgIXRoaXMuX3dhbnRzSGFzaENoYW5nZSB8fCBmb3JjZVB1c2hTdGF0ZSkg
ewotICAgICAgICAgIGZyYWdtZW50ID0gdGhpcy5sb2NhdGlvbi5wYXRobmFtZTsKLSAgICAgICAg
ICB2YXIgcm9vdCA9IHRoaXMucm9vdC5yZXBsYWNlKHRyYWlsaW5nU2xhc2gsICcnKTsKLSAgICAg
ICAgICBpZiAoIWZyYWdtZW50LmluZGV4T2Yocm9vdCkpIGZyYWdtZW50ID0gZnJhZ21lbnQuc3Vi
c3RyKHJvb3QubGVuZ3RoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICBmcmFnbWVudCA9
IHRoaXMuZ2V0SGFzaCgpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICByZXR1cm4gZnJhZ21l
bnQucmVwbGFjZShyb3V0ZVN0cmlwcGVyLCAnJyk7Ci0gICAgfSwKLQotICAgIC8vIFN0YXJ0IHRo
ZSBoYXNoIGNoYW5nZSBoYW5kbGluZywgcmV0dXJuaW5nIGB0cnVlYCBpZiB0aGUgY3VycmVudCBV
UkwgbWF0Y2hlcwotICAgIC8vIGFuIGV4aXN0aW5nIHJvdXRlLCBhbmQgYGZhbHNlYCBvdGhlcndp
c2UuCi0gICAgc3RhcnQ6IGZ1bmN0aW9uKG9wdGlvbnMpIHsKLSAgICAgIGlmIChIaXN0b3J5LnN0
YXJ0ZWQpIHRocm93IG5ldyBFcnJvcigiQmFja2JvbmUuaGlzdG9yeSBoYXMgYWxyZWFkeSBiZWVu
IHN0YXJ0ZWQiKTsKLSAgICAgIEhpc3Rvcnkuc3RhcnRlZCA9IHRydWU7Ci0KLSAgICAgIC8vIEZp
Z3VyZSBvdXQgdGhlIGluaXRpYWwgY29uZmlndXJhdGlvbi4gRG8gd2UgbmVlZCBhbiBpZnJhbWU/
Ci0gICAgICAvLyBJcyBwdXNoU3RhdGUgZGVzaXJlZCAuLi4gaXMgaXQgYXZhaWxhYmxlPwotICAg
ICAgdGhpcy5vcHRpb25zICAgICAgICAgID0gXy5leHRlbmQoe30sIHtyb290OiAnLyd9LCB0aGlz
Lm9wdGlvbnMsIG9wdGlvbnMpOwotICAgICAgdGhpcy5yb290ICAgICAgICAgICAgID0gdGhpcy5v
cHRpb25zLnJvb3Q7Ci0gICAgICB0aGlzLl93YW50c0hhc2hDaGFuZ2UgPSB0aGlzLm9wdGlvbnMu
aGFzaENoYW5nZSAhPT0gZmFsc2U7Ci0gICAgICB0aGlzLl93YW50c1B1c2hTdGF0ZSAgPSAhIXRo
aXMub3B0aW9ucy5wdXNoU3RhdGU7Ci0gICAgICB0aGlzLl9oYXNQdXNoU3RhdGUgICAgPSAhISh0
aGlzLm9wdGlvbnMucHVzaFN0YXRlICYmIHRoaXMuaGlzdG9yeSAmJiB0aGlzLmhpc3RvcnkucHVz
aFN0YXRlKTsKLSAgICAgIHZhciBmcmFnbWVudCAgICAgICAgICA9IHRoaXMuZ2V0RnJhZ21lbnQo
KTsKLSAgICAgIHZhciBkb2NNb2RlICAgICAgICAgICA9IGRvY3VtZW50LmRvY3VtZW50TW9kZTsK
LSAgICAgIHZhciBvbGRJRSAgICAgICAgICAgICA9IChpc0V4cGxvcmVyLmV4ZWMobmF2aWdhdG9y
LnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpKSAmJiAoIWRvY01vZGUgfHwgZG9jTW9kZSA8PSA3KSk7
Ci0KLSAgICAgIC8vIE5vcm1hbGl6ZSByb290IHRvIGFsd2F5cyBpbmNsdWRlIGEgbGVhZGluZyBh
bmQgdHJhaWxpbmcgc2xhc2guCi0gICAgICB0aGlzLnJvb3QgPSAoJy8nICsgdGhpcy5yb290ICsg
Jy8nKS5yZXBsYWNlKHJvb3RTdHJpcHBlciwgJy8nKTsKLQotICAgICAgaWYgKG9sZElFICYmIHRo
aXMuX3dhbnRzSGFzaENoYW5nZSkgewotICAgICAgICB0aGlzLmlmcmFtZSA9IEJhY2tib25lLiQo
JzxpZnJhbWUgc3JjPSJqYXZhc2NyaXB0OjAiIHRhYmluZGV4PSItMSIgLz4nKS5oaWRlKCkuYXBw
ZW5kVG8oJ2JvZHknKVswXS5jb250ZW50V2luZG93OwotICAgICAgICB0aGlzLm5hdmlnYXRlKGZy
YWdtZW50KTsKLSAgICAgIH0KLQotICAgICAgLy8gRGVwZW5kaW5nIG9uIHdoZXRoZXIgd2UncmUg
dXNpbmcgcHVzaFN0YXRlIG9yIGhhc2hlcywgYW5kIHdoZXRoZXIKLSAgICAgIC8vICdvbmhhc2hj
aGFuZ2UnIGlzIHN1cHBvcnRlZCwgZGV0ZXJtaW5lIGhvdyB3ZSBjaGVjayB0aGUgVVJMIHN0YXRl
LgotICAgICAgaWYgKHRoaXMuX2hhc1B1c2hTdGF0ZSkgewotICAgICAgICBCYWNrYm9uZS4kKHdp
bmRvdykub24oJ3BvcHN0YXRlJywgdGhpcy5jaGVja1VybCk7Ci0gICAgICB9IGVsc2UgaWYgKHRo
aXMuX3dhbnRzSGFzaENoYW5nZSAmJiAoJ29uaGFzaGNoYW5nZScgaW4gd2luZG93KSAmJiAhb2xk
SUUpIHsKLSAgICAgICAgQmFja2JvbmUuJCh3aW5kb3cpLm9uKCdoYXNoY2hhbmdlJywgdGhpcy5j
aGVja1VybCk7Ci0gICAgICB9IGVsc2UgaWYgKHRoaXMuX3dhbnRzSGFzaENoYW5nZSkgewotICAg
ICAgICB0aGlzLl9jaGVja1VybEludGVydmFsID0gc2V0SW50ZXJ2YWwodGhpcy5jaGVja1VybCwg
dGhpcy5pbnRlcnZhbCk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIERldGVybWluZSBpZiB3ZSBuZWVk
IHRvIGNoYW5nZSB0aGUgYmFzZSB1cmwsIGZvciBhIHB1c2hTdGF0ZSBsaW5rCi0gICAgICAvLyBv
cGVuZWQgYnkgYSBub24tcHVzaFN0YXRlIGJyb3dzZXIuCi0gICAgICB0aGlzLmZyYWdtZW50ID0g
ZnJhZ21lbnQ7Ci0gICAgICB2YXIgbG9jID0gdGhpcy5sb2NhdGlvbjsKLSAgICAgIHZhciBhdFJv
b3QgPSBsb2MucGF0aG5hbWUucmVwbGFjZSgvW15cL10kLywgJyQmLycpID09PSB0aGlzLnJvb3Q7
Ci0KLSAgICAgIC8vIElmIHdlJ3ZlIHN0YXJ0ZWQgb2ZmIHdpdGggYSByb3V0ZSBmcm9tIGEgYHB1
c2hTdGF0ZWAtZW5hYmxlZCBicm93c2VyLAotICAgICAgLy8gYnV0IHdlJ3JlIGN1cnJlbnRseSBp
biBhIGJyb3dzZXIgdGhhdCBkb2Vzbid0IHN1cHBvcnQgaXQuLi4KLSAgICAgIGlmICh0aGlzLl93
YW50c0hhc2hDaGFuZ2UgJiYgdGhpcy5fd2FudHNQdXNoU3RhdGUgJiYgIXRoaXMuX2hhc1B1c2hT
dGF0ZSAmJiAhYXRSb290KSB7Ci0gICAgICAgIHRoaXMuZnJhZ21lbnQgPSB0aGlzLmdldEZyYWdt
ZW50KG51bGwsIHRydWUpOwotICAgICAgICB0aGlzLmxvY2F0aW9uLnJlcGxhY2UodGhpcy5yb290
ICsgdGhpcy5sb2NhdGlvbi5zZWFyY2ggKyAnIycgKyB0aGlzLmZyYWdtZW50KTsKLSAgICAgICAg
Ly8gUmV0dXJuIGltbWVkaWF0ZWx5IGFzIGJyb3dzZXIgd2lsbCBkbyByZWRpcmVjdCB0byBuZXcg
dXJsCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAvLyBPciBpZiB3ZSd2ZSBzdGFydGVk
IG91dCB3aXRoIGEgaGFzaC1iYXNlZCByb3V0ZSwgYnV0IHdlJ3JlIGN1cnJlbnRseQotICAgICAg
Ly8gaW4gYSBicm93c2VyIHdoZXJlIGl0IGNvdWxkIGJlIGBwdXNoU3RhdGVgLWJhc2VkIGluc3Rl
YWQuLi4KLSAgICAgIH0gZWxzZSBpZiAodGhpcy5fd2FudHNQdXNoU3RhdGUgJiYgdGhpcy5faGFz
UHVzaFN0YXRlICYmIGF0Um9vdCAmJiBsb2MuaGFzaCkgewotICAgICAgICB0aGlzLmZyYWdtZW50
ID0gdGhpcy5nZXRIYXNoKCkucmVwbGFjZShyb3V0ZVN0cmlwcGVyLCAnJyk7Ci0gICAgICAgIHRo
aXMuaGlzdG9yeS5yZXBsYWNlU3RhdGUoe30sIGRvY3VtZW50LnRpdGxlLCB0aGlzLnJvb3QgKyB0
aGlzLmZyYWdtZW50ICsgbG9jLnNlYXJjaCk7Ci0gICAgICB9Ci0KLSAgICAgIGlmICghdGhpcy5v
cHRpb25zLnNpbGVudCkgcmV0dXJuIHRoaXMubG9hZFVybCgpOwotICAgIH0sCi0KLSAgICAvLyBE
aXNhYmxlIEJhY2tib25lLmhpc3RvcnksIHBlcmhhcHMgdGVtcG9yYXJpbHkuIE5vdCB1c2VmdWwg
aW4gYSByZWFsIGFwcCwKLSAgICAvLyBidXQgcG9zc2libHkgdXNlZnVsIGZvciB1bml0IHRlc3Rp
bmcgUm91dGVycy4KLSAgICBzdG9wOiBmdW5jdGlvbigpIHsKLSAgICAgIEJhY2tib25lLiQod2lu
ZG93KS5vZmYoJ3BvcHN0YXRlJywgdGhpcy5jaGVja1VybCkub2ZmKCdoYXNoY2hhbmdlJywgdGhp
cy5jaGVja1VybCk7Ci0gICAgICBjbGVhckludGVydmFsKHRoaXMuX2NoZWNrVXJsSW50ZXJ2YWwp
OwotICAgICAgSGlzdG9yeS5zdGFydGVkID0gZmFsc2U7Ci0gICAgfSwKLQotICAgIC8vIEFkZCBh
IHJvdXRlIHRvIGJlIHRlc3RlZCB3aGVuIHRoZSBmcmFnbWVudCBjaGFuZ2VzLiBSb3V0ZXMgYWRk
ZWQgbGF0ZXIKLSAgICAvLyBtYXkgb3ZlcnJpZGUgcHJldmlvdXMgcm91dGVzLgotICAgIHJvdXRl
OiBmdW5jdGlvbihyb3V0ZSwgY2FsbGJhY2spIHsKLSAgICAgIHRoaXMuaGFuZGxlcnMudW5zaGlm
dCh7cm91dGU6IHJvdXRlLCBjYWxsYmFjazogY2FsbGJhY2t9KTsKLSAgICB9LAotCi0gICAgLy8g
Q2hlY2tzIHRoZSBjdXJyZW50IFVSTCB0byBzZWUgaWYgaXQgaGFzIGNoYW5nZWQsIGFuZCBpZiBp
dCBoYXMsCi0gICAgLy8gY2FsbHMgYGxvYWRVcmxgLCBub3JtYWxpemluZyBhY3Jvc3MgdGhlIGhp
ZGRlbiBpZnJhbWUuCi0gICAgY2hlY2tVcmw6IGZ1bmN0aW9uKGUpIHsKLSAgICAgIHZhciBjdXJy
ZW50ID0gdGhpcy5nZXRGcmFnbWVudCgpOwotICAgICAgaWYgKGN1cnJlbnQgPT09IHRoaXMuZnJh
Z21lbnQgJiYgdGhpcy5pZnJhbWUpIHsKLSAgICAgICAgY3VycmVudCA9IHRoaXMuZ2V0RnJhZ21l
bnQodGhpcy5nZXRIYXNoKHRoaXMuaWZyYW1lKSk7Ci0gICAgICB9Ci0gICAgICBpZiAoY3VycmVu
dCA9PT0gdGhpcy5mcmFnbWVudCkgcmV0dXJuIGZhbHNlOwotICAgICAgaWYgKHRoaXMuaWZyYW1l
KSB0aGlzLm5hdmlnYXRlKGN1cnJlbnQpOwotICAgICAgdGhpcy5sb2FkVXJsKCkgfHwgdGhpcy5s
b2FkVXJsKHRoaXMuZ2V0SGFzaCgpKTsKLSAgICB9LAotCi0gICAgLy8gQXR0ZW1wdCB0byBsb2Fk
IHRoZSBjdXJyZW50IFVSTCBmcmFnbWVudC4gSWYgYSByb3V0ZSBzdWNjZWVkcyB3aXRoIGEKLSAg
ICAvLyBtYXRjaCwgcmV0dXJucyBgdHJ1ZWAuIElmIG5vIGRlZmluZWQgcm91dGVzIG1hdGNoZXMg
dGhlIGZyYWdtZW50LAotICAgIC8vIHJldHVybnMgYGZhbHNlYC4KLSAgICBsb2FkVXJsOiBmdW5j
dGlvbihmcmFnbWVudE92ZXJyaWRlKSB7Ci0gICAgICB2YXIgZnJhZ21lbnQgPSB0aGlzLmZyYWdt
ZW50ID0gdGhpcy5nZXRGcmFnbWVudChmcmFnbWVudE92ZXJyaWRlKTsKLSAgICAgIHZhciBtYXRj
aGVkID0gXy5hbnkodGhpcy5oYW5kbGVycywgZnVuY3Rpb24oaGFuZGxlcikgewotICAgICAgICBp
ZiAoaGFuZGxlci5yb3V0ZS50ZXN0KGZyYWdtZW50KSkgewotICAgICAgICAgIGhhbmRsZXIuY2Fs
bGJhY2soZnJhZ21lbnQpOwotICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAg
ICB9KTsKLSAgICAgIHJldHVybiBtYXRjaGVkOwotICAgIH0sCi0KLSAgICAvLyBTYXZlIGEgZnJh
Z21lbnQgaW50byB0aGUgaGFzaCBoaXN0b3J5LCBvciByZXBsYWNlIHRoZSBVUkwgc3RhdGUgaWYg
dGhlCi0gICAgLy8gJ3JlcGxhY2UnIG9wdGlvbiBpcyBwYXNzZWQuIFlvdSBhcmUgcmVzcG9uc2li
bGUgZm9yIHByb3Blcmx5IFVSTC1lbmNvZGluZwotICAgIC8vIHRoZSBmcmFnbWVudCBpbiBhZHZh
bmNlLgotICAgIC8vCi0gICAgLy8gVGhlIG9wdGlvbnMgb2JqZWN0IGNhbiBjb250YWluIGB0cmln
Z2VyOiB0cnVlYCBpZiB5b3Ugd2lzaCB0byBoYXZlIHRoZQotICAgIC8vIHJvdXRlIGNhbGxiYWNr
IGJlIGZpcmVkIChub3QgdXN1YWxseSBkZXNpcmFibGUpLCBvciBgcmVwbGFjZTogdHJ1ZWAsIGlm
Ci0gICAgLy8geW91IHdpc2ggdG8gbW9kaWZ5IHRoZSBjdXJyZW50IFVSTCB3aXRob3V0IGFkZGlu
ZyBhbiBlbnRyeSB0byB0aGUgaGlzdG9yeS4KLSAgICBuYXZpZ2F0ZTogZnVuY3Rpb24oZnJhZ21l
bnQsIG9wdGlvbnMpIHsKLSAgICAgIGlmICghSGlzdG9yeS5zdGFydGVkKSByZXR1cm4gZmFsc2U7
Ci0gICAgICBpZiAoIW9wdGlvbnMgfHwgb3B0aW9ucyA9PT0gdHJ1ZSkgb3B0aW9ucyA9IHt0cmln
Z2VyOiBvcHRpb25zfTsKLSAgICAgIGZyYWdtZW50ID0gdGhpcy5nZXRGcmFnbWVudChmcmFnbWVu
dCB8fCAnJyk7Ci0gICAgICBpZiAodGhpcy5mcmFnbWVudCA9PT0gZnJhZ21lbnQpIHJldHVybjsK
LSAgICAgIHRoaXMuZnJhZ21lbnQgPSBmcmFnbWVudDsKLSAgICAgIHZhciB1cmwgPSB0aGlzLnJv
b3QgKyBmcmFnbWVudDsKLQotICAgICAgLy8gSWYgcHVzaFN0YXRlIGlzIGF2YWlsYWJsZSwgd2Ug
dXNlIGl0IHRvIHNldCB0aGUgZnJhZ21lbnQgYXMgYSByZWFsIFVSTC4KLSAgICAgIGlmICh0aGlz
Ll9oYXNQdXNoU3RhdGUpIHsKLSAgICAgICAgdGhpcy5oaXN0b3J5W29wdGlvbnMucmVwbGFjZSA/
ICdyZXBsYWNlU3RhdGUnIDogJ3B1c2hTdGF0ZSddKHt9LCBkb2N1bWVudC50aXRsZSwgdXJsKTsK
LQotICAgICAgLy8gSWYgaGFzaCBjaGFuZ2VzIGhhdmVuJ3QgYmVlbiBleHBsaWNpdGx5IGRpc2Fi
bGVkLCB1cGRhdGUgdGhlIGhhc2gKLSAgICAgIC8vIGZyYWdtZW50IHRvIHN0b3JlIGhpc3Rvcnku
Ci0gICAgICB9IGVsc2UgaWYgKHRoaXMuX3dhbnRzSGFzaENoYW5nZSkgewotICAgICAgICB0aGlz
Ll91cGRhdGVIYXNoKHRoaXMubG9jYXRpb24sIGZyYWdtZW50LCBvcHRpb25zLnJlcGxhY2UpOwot
ICAgICAgICBpZiAodGhpcy5pZnJhbWUgJiYgKGZyYWdtZW50ICE9PSB0aGlzLmdldEZyYWdtZW50
KHRoaXMuZ2V0SGFzaCh0aGlzLmlmcmFtZSkpKSkgewotICAgICAgICAgIC8vIE9wZW5pbmcgYW5k
IGNsb3NpbmcgdGhlIGlmcmFtZSB0cmlja3MgSUU3IGFuZCBlYXJsaWVyIHRvIHB1c2ggYQotICAg
ICAgICAgIC8vIGhpc3RvcnkgZW50cnkgb24gaGFzaC10YWcgY2hhbmdlLiAgV2hlbiByZXBsYWNl
IGlzIHRydWUsIHdlIGRvbid0Ci0gICAgICAgICAgLy8gd2FudCB0aGlzLgotICAgICAgICAgIGlm
KCFvcHRpb25zLnJlcGxhY2UpIHRoaXMuaWZyYW1lLmRvY3VtZW50Lm9wZW4oKS5jbG9zZSgpOwot
ICAgICAgICAgIHRoaXMuX3VwZGF0ZUhhc2godGhpcy5pZnJhbWUubG9jYXRpb24sIGZyYWdtZW50
LCBvcHRpb25zLnJlcGxhY2UpOwotICAgICAgICB9Ci0KLSAgICAgIC8vIElmIHlvdSd2ZSB0b2xk
IHVzIHRoYXQgeW91IGV4cGxpY2l0bHkgZG9uJ3Qgd2FudCBmYWxsYmFjayBoYXNoY2hhbmdlLQot
ICAgICAgLy8gYmFzZWQgaGlzdG9yeSwgdGhlbiBgbmF2aWdhdGVgIGJlY29tZXMgYSBwYWdlIHJl
ZnJlc2guCi0gICAgICB9IGVsc2UgewotICAgICAgICByZXR1cm4gdGhpcy5sb2NhdGlvbi5hc3Np
Z24odXJsKTsKLSAgICAgIH0KLSAgICAgIGlmIChvcHRpb25zLnRyaWdnZXIpIHRoaXMubG9hZFVy
bChmcmFnbWVudCk7Ci0gICAgfSwKLQotICAgIC8vIFVwZGF0ZSB0aGUgaGFzaCBsb2NhdGlvbiwg
ZWl0aGVyIHJlcGxhY2luZyB0aGUgY3VycmVudCBlbnRyeSwgb3IgYWRkaW5nCi0gICAgLy8gYSBu
ZXcgb25lIHRvIHRoZSBicm93c2VyIGhpc3RvcnkuCi0gICAgX3VwZGF0ZUhhc2g6IGZ1bmN0aW9u
KGxvY2F0aW9uLCBmcmFnbWVudCwgcmVwbGFjZSkgewotICAgICAgaWYgKHJlcGxhY2UpIHsKLSAg
ICAgICAgdmFyIGhyZWYgPSBsb2NhdGlvbi5ocmVmLnJlcGxhY2UoLyhqYXZhc2NyaXB0OnwjKS4q
JC8sICcnKTsKLSAgICAgICAgbG9jYXRpb24ucmVwbGFjZShocmVmICsgJyMnICsgZnJhZ21lbnQp
OwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgLy8gU29tZSBicm93c2VycyByZXF1aXJlIHRoYXQg
YGhhc2hgIGNvbnRhaW5zIGEgbGVhZGluZyAjLgotICAgICAgICBsb2NhdGlvbi5oYXNoID0gJyMn
ICsgZnJhZ21lbnQ7Ci0gICAgICB9Ci0gICAgfQotCi0gIH0pOwotCi0gIC8vIENyZWF0ZSB0aGUg
ZGVmYXVsdCBCYWNrYm9uZS5oaXN0b3J5LgotICBCYWNrYm9uZS5oaXN0b3J5ID0gbmV3IEhpc3Rv
cnk7Ci0KLSAgLy8gSGVscGVycwotICAvLyAtLS0tLS0tCi0KLSAgLy8gSGVscGVyIGZ1bmN0aW9u
IHRvIGNvcnJlY3RseSBzZXQgdXAgdGhlIHByb3RvdHlwZSBjaGFpbiwgZm9yIHN1YmNsYXNzZXMu
Ci0gIC8vIFNpbWlsYXIgdG8gYGdvb2cuaW5oZXJpdHNgLCBidXQgdXNlcyBhIGhhc2ggb2YgcHJv
dG90eXBlIHByb3BlcnRpZXMgYW5kCi0gIC8vIGNsYXNzIHByb3BlcnRpZXMgdG8gYmUgZXh0ZW5k
ZWQuCi0gIHZhciBleHRlbmQgPSBmdW5jdGlvbihwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgewot
ICAgIHZhciBwYXJlbnQgPSB0aGlzOwotICAgIHZhciBjaGlsZDsKLQotICAgIC8vIFRoZSBjb25z
dHJ1Y3RvciBmdW5jdGlvbiBmb3IgdGhlIG5ldyBzdWJjbGFzcyBpcyBlaXRoZXIgZGVmaW5lZCBi
eSB5b3UKLSAgICAvLyAodGhlICJjb25zdHJ1Y3RvciIgcHJvcGVydHkgaW4geW91ciBgZXh0ZW5k
YCBkZWZpbml0aW9uKSwgb3IgZGVmYXVsdGVkCi0gICAgLy8gYnkgdXMgdG8gc2ltcGx5IGNhbGwg
dGhlIHBhcmVudCdzIGNvbnN0cnVjdG9yLgotICAgIGlmIChwcm90b1Byb3BzICYmIF8uaGFzKHBy
b3RvUHJvcHMsICdjb25zdHJ1Y3RvcicpKSB7Ci0gICAgICBjaGlsZCA9IHByb3RvUHJvcHMuY29u
c3RydWN0b3I7Ci0gICAgfSBlbHNlIHsKLSAgICAgIGNoaWxkID0gZnVuY3Rpb24oKXsgcmV0dXJu
IHBhcmVudC5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9OwotICAgIH0KLQotICAgIC8vIEFkZCBz
dGF0aWMgcHJvcGVydGllcyB0byB0aGUgY29uc3RydWN0b3IgZnVuY3Rpb24sIGlmIHN1cHBsaWVk
LgotICAgIF8uZXh0ZW5kKGNoaWxkLCBwYXJlbnQsIHN0YXRpY1Byb3BzKTsKLQotICAgIC8vIFNl
dCB0aGUgcHJvdG90eXBlIGNoYWluIHRvIGluaGVyaXQgZnJvbSBgcGFyZW50YCwgd2l0aG91dCBj
YWxsaW5nCi0gICAgLy8gYHBhcmVudGAncyBjb25zdHJ1Y3RvciBmdW5jdGlvbi4KLSAgICB2YXIg
U3Vycm9nYXRlID0gZnVuY3Rpb24oKXsgdGhpcy5jb25zdHJ1Y3RvciA9IGNoaWxkOyB9OwotICAg
IFN1cnJvZ2F0ZS5wcm90b3R5cGUgPSBwYXJlbnQucHJvdG90eXBlOwotICAgIGNoaWxkLnByb3Rv
dHlwZSA9IG5ldyBTdXJyb2dhdGU7Ci0KLSAgICAvLyBBZGQgcHJvdG90eXBlIHByb3BlcnRpZXMg
KGluc3RhbmNlIHByb3BlcnRpZXMpIHRvIHRoZSBzdWJjbGFzcywKLSAgICAvLyBpZiBzdXBwbGll
ZC4KLSAgICBpZiAocHJvdG9Qcm9wcykgXy5leHRlbmQoY2hpbGQucHJvdG90eXBlLCBwcm90b1By
b3BzKTsKLQotICAgIC8vIFNldCBhIGNvbnZlbmllbmNlIHByb3BlcnR5IGluIGNhc2UgdGhlIHBh
cmVudCdzIHByb3RvdHlwZSBpcyBuZWVkZWQKLSAgICAvLyBsYXRlci4KLSAgICBjaGlsZC5fX3N1
cGVyX18gPSBwYXJlbnQucHJvdG90eXBlOwotCi0gICAgcmV0dXJuIGNoaWxkOwotICB9OwotCi0g
IC8vIFNldCB1cCBpbmhlcml0YW5jZSBmb3IgdGhlIG1vZGVsLCBjb2xsZWN0aW9uLCByb3V0ZXIs
IHZpZXcgYW5kIGhpc3RvcnkuCi0gIE1vZGVsLmV4dGVuZCA9IENvbGxlY3Rpb24uZXh0ZW5kID0g
Um91dGVyLmV4dGVuZCA9IFZpZXcuZXh0ZW5kID0gSGlzdG9yeS5leHRlbmQgPSBleHRlbmQ7Ci0K
LSAgLy8gVGhyb3cgYW4gZXJyb3Igd2hlbiBhIFVSTCBpcyBuZWVkZWQsIGFuZCBub25lIGlzIHN1
cHBsaWVkLgotICB2YXIgdXJsRXJyb3IgPSBmdW5jdGlvbigpIHsKLSAgICB0aHJvdyBuZXcgRXJy
b3IoJ0EgInVybCIgcHJvcGVydHkgb3IgZnVuY3Rpb24gbXVzdCBiZSBzcGVjaWZpZWQnKTsKLSAg
fTsKLQotICAvLyBXcmFwIGFuIG9wdGlvbmFsIGVycm9yIGNhbGxiYWNrIHdpdGggYSBmYWxsYmFj
ayBlcnJvciBldmVudC4KLSAgdmFyIHdyYXBFcnJvciA9IGZ1bmN0aW9uIChtb2RlbCwgb3B0aW9u
cykgewotICAgIHZhciBlcnJvciA9IG9wdGlvbnMuZXJyb3I7Ci0gICAgb3B0aW9ucy5lcnJvciA9
IGZ1bmN0aW9uKHJlc3ApIHsKLSAgICAgIGlmIChlcnJvcikgZXJyb3IobW9kZWwsIHJlc3AsIG9w
dGlvbnMpOwotICAgICAgbW9kZWwudHJpZ2dlcignZXJyb3InLCBtb2RlbCwgcmVzcCwgb3B0aW9u
cyk7Ci0gICAgfTsKLSAgfTsKLQotfSkuY2FsbCh0aGlzKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2JhY2tib25lL2Jvd2VyX2NvbXBvbmVudHMvanF1ZXJ5L2pxdWVyeS5qcyBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2JhY2tib25lL2Jvd2VyX2NvbXBvbmVudHMvanF1ZXJ5L2pxdWVyeS5qcwpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDNmZWVmMmQ5OWFlMjNiZDY5YjEwM2RmY2Q2ZjY0NmQwZjhm
ZmUxYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9iYWNrYm9uZS9ib3dlcl9jb21wb25lbnRzL2pxdWVyeS9qcXVlcnkuanMKKysrIC9k
ZXYvbnVsbApAQCAtMSw5NTk3ICswLDAgQEAKLS8qIQotICogalF1ZXJ5IEphdmFTY3JpcHQgTGli
cmFyeSB2MS45LjEKLSAqIGh0dHA6Ly9qcXVlcnkuY29tLwotICoKLSAqIEluY2x1ZGVzIFNpenps
ZS5qcwotICogaHR0cDovL3NpenpsZWpzLmNvbS8KLSAqCi0gKiBDb3B5cmlnaHQgMjAwNSwgMjAx
MiBqUXVlcnkgRm91bmRhdGlvbiwgSW5jLiBhbmQgb3RoZXIgY29udHJpYnV0b3JzCi0gKiBSZWxl
YXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UKLSAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2UK
LSAqCi0gKiBEYXRlOiAyMDEzLTItNAotICovCi0oZnVuY3Rpb24oIHdpbmRvdywgdW5kZWZpbmVk
ICkgewotCi0vLyBDYW4ndCBkbyB0aGlzIGJlY2F1c2Ugc2V2ZXJhbCBhcHBzIGluY2x1ZGluZyBB
U1AuTkVUIHRyYWNlCi0vLyB0aGUgc3RhY2sgdmlhIGFyZ3VtZW50cy5jYWxsZXIuY2FsbGVlIGFu
ZCBGaXJlZm94IGRpZXMgaWYKLS8vIHlvdSB0cnkgdG8gdHJhY2UgdGhyb3VnaCAidXNlIHN0cmlj
dCIgY2FsbCBjaGFpbnMuICgjMTMzMzUpCi0vLyBTdXBwb3J0OiBGaXJlZm94IDE4KwotLy8idXNl
IHN0cmljdCI7Ci12YXIKLSAgICAvLyBUaGUgZGVmZXJyZWQgdXNlZCBvbiBET00gcmVhZHkKLSAg
ICByZWFkeUxpc3QsCi0KLSAgICAvLyBBIGNlbnRyYWwgcmVmZXJlbmNlIHRvIHRoZSByb290IGpR
dWVyeShkb2N1bWVudCkKLSAgICByb290alF1ZXJ5LAotCi0gICAgLy8gU3VwcG9ydDogSUU8OQot
ICAgIC8vIEZvciBgdHlwZW9mIG5vZGUubWV0aG9kYCBpbnN0ZWFkIG9mIGBub2RlLm1ldGhvZCAh
PT0gdW5kZWZpbmVkYAotICAgIGNvcmVfc3RydW5kZWZpbmVkID0gdHlwZW9mIHVuZGVmaW5lZCwK
LQotICAgIC8vIFVzZSB0aGUgY29ycmVjdCBkb2N1bWVudCBhY2NvcmRpbmdseSB3aXRoIHdpbmRv
dyBhcmd1bWVudCAoc2FuZGJveCkKLSAgICBkb2N1bWVudCA9IHdpbmRvdy5kb2N1bWVudCwKLSAg
ICBsb2NhdGlvbiA9IHdpbmRvdy5sb2NhdGlvbiwKLQotICAgIC8vIE1hcCBvdmVyIGpRdWVyeSBp
biBjYXNlIG9mIG92ZXJ3cml0ZQotICAgIF9qUXVlcnkgPSB3aW5kb3cualF1ZXJ5LAotCi0gICAg
Ly8gTWFwIG92ZXIgdGhlICQgaW4gY2FzZSBvZiBvdmVyd3JpdGUKLSAgICBfJCA9IHdpbmRvdy4k
LAotCi0gICAgLy8gW1tDbGFzc11dIC0+IHR5cGUgcGFpcnMKLSAgICBjbGFzczJ0eXBlID0ge30s
Ci0KLSAgICAvLyBMaXN0IG9mIGRlbGV0ZWQgZGF0YSBjYWNoZSBpZHMsIHNvIHdlIGNhbiByZXVz
ZSB0aGVtCi0gICAgY29yZV9kZWxldGVkSWRzID0gW10sCi0KLSAgICBjb3JlX3ZlcnNpb24gPSAi
MS45LjEiLAotCi0gICAgLy8gU2F2ZSBhIHJlZmVyZW5jZSB0byBzb21lIGNvcmUgbWV0aG9kcwot
ICAgIGNvcmVfY29uY2F0ID0gY29yZV9kZWxldGVkSWRzLmNvbmNhdCwKLSAgICBjb3JlX3B1c2gg
PSBjb3JlX2RlbGV0ZWRJZHMucHVzaCwKLSAgICBjb3JlX3NsaWNlID0gY29yZV9kZWxldGVkSWRz
LnNsaWNlLAotICAgIGNvcmVfaW5kZXhPZiA9IGNvcmVfZGVsZXRlZElkcy5pbmRleE9mLAotICAg
IGNvcmVfdG9TdHJpbmcgPSBjbGFzczJ0eXBlLnRvU3RyaW5nLAotICAgIGNvcmVfaGFzT3duID0g
Y2xhc3MydHlwZS5oYXNPd25Qcm9wZXJ0eSwKLSAgICBjb3JlX3RyaW0gPSBjb3JlX3ZlcnNpb24u
dHJpbSwKLQotICAgIC8vIERlZmluZSBhIGxvY2FsIGNvcHkgb2YgalF1ZXJ5Ci0gICAgalF1ZXJ5
ID0gZnVuY3Rpb24oIHNlbGVjdG9yLCBjb250ZXh0ICkgewotICAgIC8vIFRoZSBqUXVlcnkgb2Jq
ZWN0IGlzIGFjdHVhbGx5IGp1c3QgdGhlIGluaXQgY29uc3RydWN0b3IgJ2VuaGFuY2VkJwotICAg
IHJldHVybiBuZXcgalF1ZXJ5LmZuLmluaXQoIHNlbGVjdG9yLCBjb250ZXh0LCByb290alF1ZXJ5
ICk7Ci0gICAgfSwKLQotICAgIC8vIFVzZWQgZm9yIG1hdGNoaW5nIG51bWJlcnMKLSAgICBjb3Jl
X3BudW0gPSAvWystXT8oPzpcZCpcLnwpXGQrKD86W2VFXVsrLV0/XGQrfCkvLnNvdXJjZSwKLQot
ICAgIC8vIFVzZWQgZm9yIHNwbGl0dGluZyBvbiB3aGl0ZXNwYWNlCi0gICAgY29yZV9ybm90d2hp
dGUgPSAvXFMrL2csCi0KLSAgICAvLyBNYWtlIHN1cmUgd2UgdHJpbSBCT00gYW5kIE5CU1AgKGhl
cmUncyBsb29raW5nIGF0IHlvdSwgU2FmYXJpIDUuMCBhbmQgSUUpCi0gICAgcnRyaW0gPSAvXltc
c1x1RkVGRlx4QTBdK3xbXHNcdUZFRkZceEEwXSskL2csCi0KLSAgICAvLyBBIHNpbXBsZSB3YXkg
dG8gY2hlY2sgZm9yIEhUTUwgc3RyaW5ncwotICAgIC8vIFByaW9yaXRpemUgI2lkIG92ZXIgPHRh
Zz4gdG8gYXZvaWQgWFNTIHZpYSBsb2NhdGlvbi5oYXNoICgjOTUyMSkKLSAgICAvLyBTdHJpY3Qg
SFRNTCByZWNvZ25pdGlvbiAoIzExMjkwOiBtdXN0IHN0YXJ0IHdpdGggPCkKLSAgICBycXVpY2tF
eHByID0gL14oPzooPFtcd1xXXSs+KVtePl0qfCMoW1x3LV0qKSkkLywKLQotICAgIC8vIE1hdGNo
IGEgc3RhbmRhbG9uZSB0YWcKLSAgICByc2luZ2xlVGFnID0gL148KFx3KylccypcLz8+KD86PFwv
XDE+fCkkLywKLQotICAgIC8vIEpTT04gUmVnRXhwCi0gICAgcnZhbGlkY2hhcnMgPSAvXltcXSw6
e31cc10qJC8sCi0gICAgcnZhbGlkYnJhY2VzID0gLyg/Ol58OnwsKSg/OlxzKlxbKSsvZywKLSAg
ICBydmFsaWRlc2NhcGUgPSAvXFwoPzpbIlxcXC9iZm5ydF18dVtcZGEtZkEtRl17NH0pL2csCi0g
ICAgcnZhbGlkdG9rZW5zID0gLyJbXiJcXFxyXG5dKiJ8dHJ1ZXxmYWxzZXxudWxsfC0/KD86XGQr
XC58KVxkKyg/OltlRV1bKy1dP1xkK3wpL2csCi0KLSAgICAvLyBNYXRjaGVzIGRhc2hlZCBzdHJp
bmcgZm9yIGNhbWVsaXppbmcKLSAgICBybXNQcmVmaXggPSAvXi1tcy0vLAotICAgIHJkYXNoQWxw
aGEgPSAvLShbXGRhLXpdKS9naSwKLQotICAgIC8vIFVzZWQgYnkgalF1ZXJ5LmNhbWVsQ2FzZSBh
cyBjYWxsYmFjayB0byByZXBsYWNlKCkKLSAgICBmY2FtZWxDYXNlID0gZnVuY3Rpb24oIGFsbCwg
bGV0dGVyICkgewotICAgIHJldHVybiBsZXR0ZXIudG9VcHBlckNhc2UoKTsKLSAgICB9LAotCi0g
ICAgLy8gVGhlIHJlYWR5IGV2ZW50IGhhbmRsZXIKLSAgICBjb21wbGV0ZWQgPSBmdW5jdGlvbigg
ZXZlbnQgKSB7Ci0KLSAgICAvLyByZWFkeVN0YXRlID09PSAiY29tcGxldGUiIGlzIGdvb2QgZW5v
dWdoIGZvciB1cyB0byBjYWxsIHRoZSBkb20gcmVhZHkgaW4gb2xkSUUKLSAgICBpZiAoIGRvY3Vt
ZW50LmFkZEV2ZW50TGlzdGVuZXIgfHwgZXZlbnQudHlwZSA9PT0gImxvYWQiIHx8IGRvY3VtZW50
LnJlYWR5U3RhdGUgPT09ICJjb21wbGV0ZSIgKSB7Ci0gICAgZGV0YWNoKCk7Ci0gICAgalF1ZXJ5
LnJlYWR5KCk7Ci0gICAgfQotICAgIH0sCi0gICAgLy8gQ2xlYW4tdXAgbWV0aG9kIGZvciBkb20g
cmVhZHkgZXZlbnRzCi0gICAgZGV0YWNoID0gZnVuY3Rpb24oKSB7Ci0gICAgaWYgKCBkb2N1bWVu
dC5hZGRFdmVudExpc3RlbmVyICkgewotICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIo
ICJET01Db250ZW50TG9hZGVkIiwgY29tcGxldGVkLCBmYWxzZSApOwotICAgIHdpbmRvdy5yZW1v
dmVFdmVudExpc3RlbmVyKCAibG9hZCIsIGNvbXBsZXRlZCwgZmFsc2UgKTsKLQotICAgIH0gZWxz
ZSB7Ci0gICAgZG9jdW1lbnQuZGV0YWNoRXZlbnQoICJvbnJlYWR5c3RhdGVjaGFuZ2UiLCBjb21w
bGV0ZWQgKTsKLSAgICB3aW5kb3cuZGV0YWNoRXZlbnQoICJvbmxvYWQiLCBjb21wbGV0ZWQgKTsK
LSAgICB9Ci0gICAgfTsKLQotalF1ZXJ5LmZuID0galF1ZXJ5LnByb3RvdHlwZSA9IHsKLSAgICAv
LyBUaGUgY3VycmVudCB2ZXJzaW9uIG9mIGpRdWVyeSBiZWluZyB1c2VkCi0gICAganF1ZXJ5OiBj
b3JlX3ZlcnNpb24sCi0KLSAgICBjb25zdHJ1Y3RvcjogalF1ZXJ5LAotICAgIGluaXQ6IGZ1bmN0
aW9uKCBzZWxlY3RvciwgY29udGV4dCwgcm9vdGpRdWVyeSApIHsKLSAgICB2YXIgbWF0Y2gsIGVs
ZW07Ci0KLSAgICAvLyBIQU5ETEU6ICQoIiIpLCAkKG51bGwpLCAkKHVuZGVmaW5lZCksICQoZmFs
c2UpCi0gICAgaWYgKCAhc2VsZWN0b3IgKSB7Ci0gICAgcmV0dXJuIHRoaXM7Ci0gICAgfQotCi0g
ICAgLy8gSGFuZGxlIEhUTUwgc3RyaW5ncwotICAgIGlmICggdHlwZW9mIHNlbGVjdG9yID09PSAi
c3RyaW5nIiApIHsKLSAgICBpZiAoIHNlbGVjdG9yLmNoYXJBdCgwKSA9PT0gIjwiICYmIHNlbGVj
dG9yLmNoYXJBdCggc2VsZWN0b3IubGVuZ3RoIC0gMSApID09PSAiPiIgJiYgc2VsZWN0b3IubGVu
Z3RoID49IDMgKSB7Ci0gICAgLy8gQXNzdW1lIHRoYXQgc3RyaW5ncyB0aGF0IHN0YXJ0IGFuZCBl
bmQgd2l0aCA8PiBhcmUgSFRNTCBhbmQgc2tpcCB0aGUgcmVnZXggY2hlY2sKLSAgICBtYXRjaCA9
IFsgbnVsbCwgc2VsZWN0b3IsIG51bGwgXTsKLQotICAgIH0gZWxzZSB7Ci0gICAgbWF0Y2ggPSBy
cXVpY2tFeHByLmV4ZWMoIHNlbGVjdG9yICk7Ci0gICAgfQotCi0gICAgLy8gTWF0Y2ggaHRtbCBv
ciBtYWtlIHN1cmUgbm8gY29udGV4dCBpcyBzcGVjaWZpZWQgZm9yICNpZAotICAgIGlmICggbWF0
Y2ggJiYgKG1hdGNoWzFdIHx8ICFjb250ZXh0KSApIHsKLQotICAgIC8vIEhBTkRMRTogJChodG1s
KSAtPiAkKGFycmF5KQotICAgIGlmICggbWF0Y2hbMV0gKSB7Ci0gICAgY29udGV4dCA9IGNvbnRl
eHQgaW5zdGFuY2VvZiBqUXVlcnkgPyBjb250ZXh0WzBdIDogY29udGV4dDsKLQotICAgIC8vIHNj
cmlwdHMgaXMgdHJ1ZSBmb3IgYmFjay1jb21wYXQKLSAgICBqUXVlcnkubWVyZ2UoIHRoaXMsIGpR
dWVyeS5wYXJzZUhUTUwoCi0gICAgbWF0Y2hbMV0sCi0gICAgY29udGV4dCAmJiBjb250ZXh0Lm5v
ZGVUeXBlID8gY29udGV4dC5vd25lckRvY3VtZW50IHx8IGNvbnRleHQgOiBkb2N1bWVudCwKLSAg
ICB0cnVlCi0gICAgKSApOwotCi0gICAgLy8gSEFORExFOiAkKGh0bWwsIHByb3BzKQotICAgIGlm
ICggcnNpbmdsZVRhZy50ZXN0KCBtYXRjaFsxXSApICYmIGpRdWVyeS5pc1BsYWluT2JqZWN0KCBj
b250ZXh0ICkgKSB7Ci0gICAgZm9yICggbWF0Y2ggaW4gY29udGV4dCApIHsKLSAgICAvLyBQcm9w
ZXJ0aWVzIG9mIGNvbnRleHQgYXJlIGNhbGxlZCBhcyBtZXRob2RzIGlmIHBvc3NpYmxlCi0gICAg
aWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggdGhpc1sgbWF0Y2ggXSApICkgewotICAgIHRoaXNbIG1h
dGNoIF0oIGNvbnRleHRbIG1hdGNoIF0gKTsKLQotICAgIC8vIC4uLmFuZCBvdGhlcndpc2Ugc2V0
IGFzIGF0dHJpYnV0ZXMKLSAgICB9IGVsc2UgewotICAgIHRoaXMuYXR0ciggbWF0Y2gsIGNvbnRl
eHRbIG1hdGNoIF0gKTsKLSAgICB9Ci0gICAgfQotICAgIH0KLQotICAgIHJldHVybiB0aGlzOwot
Ci0gICAgLy8gSEFORExFOiAkKCNpZCkKLSAgICB9IGVsc2UgewotICAgIGVsZW0gPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCggbWF0Y2hbMl0gKTsKLQotICAgIC8vIENoZWNrIHBhcmVudE5vZGUg
dG8gY2F0Y2ggd2hlbiBCbGFja2JlcnJ5IDQuNiByZXR1cm5zCi0gICAgLy8gbm9kZXMgdGhhdCBh
cmUgbm8gbG9uZ2VyIGluIHRoZSBkb2N1bWVudCAjNjk2MwotICAgIGlmICggZWxlbSAmJiBlbGVt
LnBhcmVudE5vZGUgKSB7Ci0gICAgLy8gSGFuZGxlIHRoZSBjYXNlIHdoZXJlIElFIGFuZCBPcGVy
YSByZXR1cm4gaXRlbXMKLSAgICAvLyBieSBuYW1lIGluc3RlYWQgb2YgSUQKLSAgICBpZiAoIGVs
ZW0uaWQgIT09IG1hdGNoWzJdICkgewotICAgIHJldHVybiByb290alF1ZXJ5LmZpbmQoIHNlbGVj
dG9yICk7Ci0gICAgfQotCi0gICAgLy8gT3RoZXJ3aXNlLCB3ZSBpbmplY3QgdGhlIGVsZW1lbnQg
ZGlyZWN0bHkgaW50byB0aGUgalF1ZXJ5IG9iamVjdAotICAgIHRoaXMubGVuZ3RoID0gMTsKLSAg
ICB0aGlzWzBdID0gZWxlbTsKLSAgICB9Ci0KLSAgICB0aGlzLmNvbnRleHQgPSBkb2N1bWVudDsK
LSAgICB0aGlzLnNlbGVjdG9yID0gc2VsZWN0b3I7Ci0gICAgcmV0dXJuIHRoaXM7Ci0gICAgfQot
Ci0gICAgLy8gSEFORExFOiAkKGV4cHIsICQoLi4uKSkKLSAgICB9IGVsc2UgaWYgKCAhY29udGV4
dCB8fCBjb250ZXh0LmpxdWVyeSApIHsKLSAgICByZXR1cm4gKCBjb250ZXh0IHx8IHJvb3RqUXVl
cnkgKS5maW5kKCBzZWxlY3RvciApOwotCi0gICAgLy8gSEFORExFOiAkKGV4cHIsIGNvbnRleHQp
Ci0gICAgLy8gKHdoaWNoIGlzIGp1c3QgZXF1aXZhbGVudCB0bzogJChjb250ZXh0KS5maW5kKGV4
cHIpCi0gICAgfSBlbHNlIHsKLSAgICByZXR1cm4gdGhpcy5jb25zdHJ1Y3RvciggY29udGV4dCAp
LmZpbmQoIHNlbGVjdG9yICk7Ci0gICAgfQotCi0gICAgLy8gSEFORExFOiAkKERPTUVsZW1lbnQp
Ci0gICAgfSBlbHNlIGlmICggc2VsZWN0b3Iubm9kZVR5cGUgKSB7Ci0gICAgdGhpcy5jb250ZXh0
ID0gdGhpc1swXSA9IHNlbGVjdG9yOwotICAgIHRoaXMubGVuZ3RoID0gMTsKLSAgICByZXR1cm4g
dGhpczsKLQotICAgIC8vIEhBTkRMRTogJChmdW5jdGlvbikKLSAgICAvLyBTaG9ydGN1dCBmb3Ig
ZG9jdW1lbnQgcmVhZHkKLSAgICB9IGVsc2UgaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggc2VsZWN0
b3IgKSApIHsKLSAgICByZXR1cm4gcm9vdGpRdWVyeS5yZWFkeSggc2VsZWN0b3IgKTsKLSAgICB9
Ci0KLSAgICBpZiAoIHNlbGVjdG9yLnNlbGVjdG9yICE9PSB1bmRlZmluZWQgKSB7Ci0gICAgdGhp
cy5zZWxlY3RvciA9IHNlbGVjdG9yLnNlbGVjdG9yOwotICAgIHRoaXMuY29udGV4dCA9IHNlbGVj
dG9yLmNvbnRleHQ7Ci0gICAgfQotCi0gICAgcmV0dXJuIGpRdWVyeS5tYWtlQXJyYXkoIHNlbGVj
dG9yLCB0aGlzICk7Ci0gICAgfSwKLQotICAgIC8vIFN0YXJ0IHdpdGggYW4gZW1wdHkgc2VsZWN0
b3IKLSAgICBzZWxlY3RvcjogIiIsCi0KLSAgICAvLyBUaGUgZGVmYXVsdCBsZW5ndGggb2YgYSBq
UXVlcnkgb2JqZWN0IGlzIDAKLSAgICBsZW5ndGg6IDAsCi0KLSAgICAvLyBUaGUgbnVtYmVyIG9m
IGVsZW1lbnRzIGNvbnRhaW5lZCBpbiB0aGUgbWF0Y2hlZCBlbGVtZW50IHNldAotICAgIHNpemU6
IGZ1bmN0aW9uKCkgewotICAgIHJldHVybiB0aGlzLmxlbmd0aDsKLSAgICB9LAotCi0gICAgdG9B
cnJheTogZnVuY3Rpb24oKSB7Ci0gICAgcmV0dXJuIGNvcmVfc2xpY2UuY2FsbCggdGhpcyApOwot
ICAgIH0sCi0KLSAgICAvLyBHZXQgdGhlIE50aCBlbGVtZW50IGluIHRoZSBtYXRjaGVkIGVsZW1l
bnQgc2V0IE9SCi0gICAgLy8gR2V0IHRoZSB3aG9sZSBtYXRjaGVkIGVsZW1lbnQgc2V0IGFzIGEg
Y2xlYW4gYXJyYXkKLSAgICBnZXQ6IGZ1bmN0aW9uKCBudW0gKSB7Ci0gICAgcmV0dXJuIG51bSA9
PSBudWxsID8KLQotICAgIC8vIFJldHVybiBhICdjbGVhbicgYXJyYXkKLSAgICB0aGlzLnRvQXJy
YXkoKSA6Ci0KLSAgICAvLyBSZXR1cm4ganVzdCB0aGUgb2JqZWN0Ci0gICAgKCBudW0gPCAwID8g
dGhpc1sgdGhpcy5sZW5ndGggKyBudW0gXSA6IHRoaXNbIG51bSBdICk7Ci0gICAgfSwKLQotICAg
IC8vIFRha2UgYW4gYXJyYXkgb2YgZWxlbWVudHMgYW5kIHB1c2ggaXQgb250byB0aGUgc3RhY2sK
LSAgICAvLyAocmV0dXJuaW5nIHRoZSBuZXcgbWF0Y2hlZCBlbGVtZW50IHNldCkKLSAgICBwdXNo
U3RhY2s6IGZ1bmN0aW9uKCBlbGVtcyApIHsKLQotICAgIC8vIEJ1aWxkIGEgbmV3IGpRdWVyeSBt
YXRjaGVkIGVsZW1lbnQgc2V0Ci0gICAgdmFyIHJldCA9IGpRdWVyeS5tZXJnZSggdGhpcy5jb25z
dHJ1Y3RvcigpLCBlbGVtcyApOwotCi0gICAgLy8gQWRkIHRoZSBvbGQgb2JqZWN0IG9udG8gdGhl
IHN0YWNrIChhcyBhIHJlZmVyZW5jZSkKLSAgICByZXQucHJldk9iamVjdCA9IHRoaXM7Ci0gICAg
cmV0LmNvbnRleHQgPSB0aGlzLmNvbnRleHQ7Ci0KLSAgICAvLyBSZXR1cm4gdGhlIG5ld2x5LWZv
cm1lZCBlbGVtZW50IHNldAotICAgIHJldHVybiByZXQ7Ci0gICAgfSwKLQotICAgIC8vIEV4ZWN1
dGUgYSBjYWxsYmFjayBmb3IgZXZlcnkgZWxlbWVudCBpbiB0aGUgbWF0Y2hlZCBzZXQuCi0gICAg
Ly8gKFlvdSBjYW4gc2VlZCB0aGUgYXJndW1lbnRzIHdpdGggYW4gYXJyYXkgb2YgYXJncywgYnV0
IHRoaXMgaXMKLSAgICAvLyBvbmx5IHVzZWQgaW50ZXJuYWxseS4pCi0gICAgZWFjaDogZnVuY3Rp
b24oIGNhbGxiYWNrLCBhcmdzICkgewotICAgIHJldHVybiBqUXVlcnkuZWFjaCggdGhpcywgY2Fs
bGJhY2ssIGFyZ3MgKTsKLSAgICB9LAotCi0gICAgcmVhZHk6IGZ1bmN0aW9uKCBmbiApIHsKLSAg
ICAvLyBBZGQgdGhlIGNhbGxiYWNrCi0gICAgalF1ZXJ5LnJlYWR5LnByb21pc2UoKS5kb25lKCBm
biApOwotCi0gICAgcmV0dXJuIHRoaXM7Ci0gICAgfSwKLQotICAgIHNsaWNlOiBmdW5jdGlvbigp
IHsKLSAgICByZXR1cm4gdGhpcy5wdXNoU3RhY2soIGNvcmVfc2xpY2UuYXBwbHkoIHRoaXMsIGFy
Z3VtZW50cyApICk7Ci0gICAgfSwKLQotICAgIGZpcnN0OiBmdW5jdGlvbigpIHsKLSAgICByZXR1
cm4gdGhpcy5lcSggMCApOwotICAgIH0sCi0KLSAgICBsYXN0OiBmdW5jdGlvbigpIHsKLSAgICBy
ZXR1cm4gdGhpcy5lcSggLTEgKTsKLSAgICB9LAotCi0gICAgZXE6IGZ1bmN0aW9uKCBpICkgewot
ICAgIHZhciBsZW4gPSB0aGlzLmxlbmd0aCwKLSAgICBqID0gK2kgKyAoIGkgPCAwID8gbGVuIDog
MCApOwotICAgIHJldHVybiB0aGlzLnB1c2hTdGFjayggaiA+PSAwICYmIGogPCBsZW4gPyBbIHRo
aXNbal0gXSA6IFtdICk7Ci0gICAgfSwKLQotICAgIG1hcDogZnVuY3Rpb24oIGNhbGxiYWNrICkg
ewotICAgIHJldHVybiB0aGlzLnB1c2hTdGFjayggalF1ZXJ5Lm1hcCh0aGlzLCBmdW5jdGlvbigg
ZWxlbSwgaSApIHsKLSAgICByZXR1cm4gY2FsbGJhY2suY2FsbCggZWxlbSwgaSwgZWxlbSApOwot
ICAgIH0pKTsKLSAgICB9LAotCi0gICAgZW5kOiBmdW5jdGlvbigpIHsKLSAgICByZXR1cm4gdGhp
cy5wcmV2T2JqZWN0IHx8IHRoaXMuY29uc3RydWN0b3IobnVsbCk7Ci0gICAgfSwKLQotICAgIC8v
IEZvciBpbnRlcm5hbCB1c2Ugb25seS4KLSAgICAvLyBCZWhhdmVzIGxpa2UgYW4gQXJyYXkncyBt
ZXRob2QsIG5vdCBsaWtlIGEgalF1ZXJ5IG1ldGhvZC4KLSAgICBwdXNoOiBjb3JlX3B1c2gsCi0g
ICAgc29ydDogW10uc29ydCwKLSAgICBzcGxpY2U6IFtdLnNwbGljZQotfTsKLQotLy8gR2l2ZSB0
aGUgaW5pdCBmdW5jdGlvbiB0aGUgalF1ZXJ5IHByb3RvdHlwZSBmb3IgbGF0ZXIgaW5zdGFudGlh
dGlvbgotalF1ZXJ5LmZuLmluaXQucHJvdG90eXBlID0galF1ZXJ5LmZuOwotCi1qUXVlcnkuZXh0
ZW5kID0galF1ZXJ5LmZuLmV4dGVuZCA9IGZ1bmN0aW9uKCkgewotICAgIHZhciBzcmMsIGNvcHlJ
c0FycmF5LCBjb3B5LCBuYW1lLCBvcHRpb25zLCBjbG9uZSwKLSAgICB0YXJnZXQgPSBhcmd1bWVu
dHNbMF0gfHwge30sCi0gICAgaSA9IDEsCi0gICAgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aCwK
LSAgICBkZWVwID0gZmFsc2U7Ci0KLSAgICAvLyBIYW5kbGUgYSBkZWVwIGNvcHkgc2l0dWF0aW9u
Ci0gICAgaWYgKCB0eXBlb2YgdGFyZ2V0ID09PSAiYm9vbGVhbiIgKSB7Ci0gICAgZGVlcCA9IHRh
cmdldDsKLSAgICB0YXJnZXQgPSBhcmd1bWVudHNbMV0gfHwge307Ci0gICAgLy8gc2tpcCB0aGUg
Ym9vbGVhbiBhbmQgdGhlIHRhcmdldAotICAgIGkgPSAyOwotICAgIH0KLQotICAgIC8vIEhhbmRs
ZSBjYXNlIHdoZW4gdGFyZ2V0IGlzIGEgc3RyaW5nIG9yIHNvbWV0aGluZyAocG9zc2libGUgaW4g
ZGVlcCBjb3B5KQotICAgIGlmICggdHlwZW9mIHRhcmdldCAhPT0gIm9iamVjdCIgJiYgIWpRdWVy
eS5pc0Z1bmN0aW9uKHRhcmdldCkgKSB7Ci0gICAgdGFyZ2V0ID0ge307Ci0gICAgfQotCi0gICAg
Ly8gZXh0ZW5kIGpRdWVyeSBpdHNlbGYgaWYgb25seSBvbmUgYXJndW1lbnQgaXMgcGFzc2VkCi0g
ICAgaWYgKCBsZW5ndGggPT09IGkgKSB7Ci0gICAgdGFyZ2V0ID0gdGhpczsKLSAgICAtLWk7Ci0g
ICAgfQotCi0gICAgZm9yICggOyBpIDwgbGVuZ3RoOyBpKysgKSB7Ci0gICAgLy8gT25seSBkZWFs
IHdpdGggbm9uLW51bGwvdW5kZWZpbmVkIHZhbHVlcwotICAgIGlmICggKG9wdGlvbnMgPSBhcmd1
bWVudHNbIGkgXSkgIT0gbnVsbCApIHsKLSAgICAvLyBFeHRlbmQgdGhlIGJhc2Ugb2JqZWN0Ci0g
ICAgZm9yICggbmFtZSBpbiBvcHRpb25zICkgewotICAgIHNyYyA9IHRhcmdldFsgbmFtZSBdOwot
ICAgIGNvcHkgPSBvcHRpb25zWyBuYW1lIF07Ci0KLSAgICAvLyBQcmV2ZW50IG5ldmVyLWVuZGlu
ZyBsb29wCi0gICAgaWYgKCB0YXJnZXQgPT09IGNvcHkgKSB7Ci0gICAgY29udGludWU7Ci0gICAg
fQotCi0gICAgLy8gUmVjdXJzZSBpZiB3ZSdyZSBtZXJnaW5nIHBsYWluIG9iamVjdHMgb3IgYXJy
YXlzCi0gICAgaWYgKCBkZWVwICYmIGNvcHkgJiYgKCBqUXVlcnkuaXNQbGFpbk9iamVjdChjb3B5
KSB8fCAoY29weUlzQXJyYXkgPSBqUXVlcnkuaXNBcnJheShjb3B5KSkgKSApIHsKLSAgICBpZiAo
IGNvcHlJc0FycmF5ICkgewotICAgIGNvcHlJc0FycmF5ID0gZmFsc2U7Ci0gICAgY2xvbmUgPSBz
cmMgJiYgalF1ZXJ5LmlzQXJyYXkoc3JjKSA/IHNyYyA6IFtdOwotCi0gICAgfSBlbHNlIHsKLSAg
ICBjbG9uZSA9IHNyYyAmJiBqUXVlcnkuaXNQbGFpbk9iamVjdChzcmMpID8gc3JjIDoge307Ci0g
ICAgfQotCi0gICAgLy8gTmV2ZXIgbW92ZSBvcmlnaW5hbCBvYmplY3RzLCBjbG9uZSB0aGVtCi0g
ICAgdGFyZ2V0WyBuYW1lIF0gPSBqUXVlcnkuZXh0ZW5kKCBkZWVwLCBjbG9uZSwgY29weSApOwot
Ci0gICAgLy8gRG9uJ3QgYnJpbmcgaW4gdW5kZWZpbmVkIHZhbHVlcwotICAgIH0gZWxzZSBpZiAo
IGNvcHkgIT09IHVuZGVmaW5lZCApIHsKLSAgICB0YXJnZXRbIG5hbWUgXSA9IGNvcHk7Ci0gICAg
fQotICAgIH0KLSAgICB9Ci0gICAgfQotCi0gICAgLy8gUmV0dXJuIHRoZSBtb2RpZmllZCBvYmpl
Y3QKLSAgICByZXR1cm4gdGFyZ2V0OwotfTsKLQotalF1ZXJ5LmV4dGVuZCh7Ci0gICAgbm9Db25m
bGljdDogZnVuY3Rpb24oIGRlZXAgKSB7Ci0gICAgaWYgKCB3aW5kb3cuJCA9PT0galF1ZXJ5ICkg
ewotICAgIHdpbmRvdy4kID0gXyQ7Ci0gICAgfQotCi0gICAgaWYgKCBkZWVwICYmIHdpbmRvdy5q
UXVlcnkgPT09IGpRdWVyeSApIHsKLSAgICB3aW5kb3cualF1ZXJ5ID0gX2pRdWVyeTsKLSAgICB9
Ci0KLSAgICByZXR1cm4galF1ZXJ5OwotICAgIH0sCi0KLSAgICAvLyBJcyB0aGUgRE9NIHJlYWR5
IHRvIGJlIHVzZWQ/IFNldCB0byB0cnVlIG9uY2UgaXQgb2NjdXJzLgotICAgIGlzUmVhZHk6IGZh
bHNlLAotCi0gICAgLy8gQSBjb3VudGVyIHRvIHRyYWNrIGhvdyBtYW55IGl0ZW1zIHRvIHdhaXQg
Zm9yIGJlZm9yZQotICAgIC8vIHRoZSByZWFkeSBldmVudCBmaXJlcy4gU2VlICM2NzgxCi0gICAg
cmVhZHlXYWl0OiAxLAotCi0gICAgLy8gSG9sZCAob3IgcmVsZWFzZSkgdGhlIHJlYWR5IGV2ZW50
Ci0gICAgaG9sZFJlYWR5OiBmdW5jdGlvbiggaG9sZCApIHsKLSAgICBpZiAoIGhvbGQgKSB7Ci0g
ICAgalF1ZXJ5LnJlYWR5V2FpdCsrOwotICAgIH0gZWxzZSB7Ci0gICAgalF1ZXJ5LnJlYWR5KCB0
cnVlICk7Ci0gICAgfQotICAgIH0sCi0KLSAgICAvLyBIYW5kbGUgd2hlbiB0aGUgRE9NIGlzIHJl
YWR5Ci0gICAgcmVhZHk6IGZ1bmN0aW9uKCB3YWl0ICkgewotCi0gICAgLy8gQWJvcnQgaWYgdGhl
cmUgYXJlIHBlbmRpbmcgaG9sZHMgb3Igd2UncmUgYWxyZWFkeSByZWFkeQotICAgIGlmICggd2Fp
dCA9PT0gdHJ1ZSA/IC0talF1ZXJ5LnJlYWR5V2FpdCA6IGpRdWVyeS5pc1JlYWR5ICkgewotICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBNYWtlIHN1cmUgYm9keSBleGlzdHMsIGF0IGxlYXN0
LCBpbiBjYXNlIElFIGdldHMgYSBsaXR0bGUgb3ZlcnplYWxvdXMgKHRpY2tldCAjNTQ0MykuCi0g
ICAgaWYgKCAhZG9jdW1lbnQuYm9keSApIHsKLSAgICByZXR1cm4gc2V0VGltZW91dCggalF1ZXJ5
LnJlYWR5ICk7Ci0gICAgfQotCi0gICAgLy8gUmVtZW1iZXIgdGhhdCB0aGUgRE9NIGlzIHJlYWR5
Ci0gICAgalF1ZXJ5LmlzUmVhZHkgPSB0cnVlOwotCi0gICAgLy8gSWYgYSBub3JtYWwgRE9NIFJl
YWR5IGV2ZW50IGZpcmVkLCBkZWNyZW1lbnQsIGFuZCB3YWl0IGlmIG5lZWQgYmUKLSAgICBpZiAo
IHdhaXQgIT09IHRydWUgJiYgLS1qUXVlcnkucmVhZHlXYWl0ID4gMCApIHsKLSAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgLy8gSWYgdGhlcmUgYXJlIGZ1bmN0aW9ucyBib3VuZCwgdG8gZXhlY3V0
ZQotICAgIHJlYWR5TGlzdC5yZXNvbHZlV2l0aCggZG9jdW1lbnQsIFsgalF1ZXJ5IF0gKTsKLQot
ICAgIC8vIFRyaWdnZXIgYW55IGJvdW5kIHJlYWR5IGV2ZW50cwotICAgIGlmICggalF1ZXJ5LmZu
LnRyaWdnZXIgKSB7Ci0gICAgalF1ZXJ5KCBkb2N1bWVudCApLnRyaWdnZXIoInJlYWR5Iikub2Zm
KCJyZWFkeSIpOwotICAgIH0KLSAgICB9LAotCi0gICAgLy8gU2VlIHRlc3QvdW5pdC9jb3JlLmpz
IGZvciBkZXRhaWxzIGNvbmNlcm5pbmcgaXNGdW5jdGlvbi4KLSAgICAvLyBTaW5jZSB2ZXJzaW9u
IDEuMywgRE9NIG1ldGhvZHMgYW5kIGZ1bmN0aW9ucyBsaWtlIGFsZXJ0Ci0gICAgLy8gYXJlbid0
IHN1cHBvcnRlZC4gVGhleSByZXR1cm4gZmFsc2Ugb24gSUUgKCMyOTY4KS4KLSAgICBpc0Z1bmN0
aW9uOiBmdW5jdGlvbiggb2JqICkgewotICAgIHJldHVybiBqUXVlcnkudHlwZShvYmopID09PSAi
ZnVuY3Rpb24iOwotICAgIH0sCi0KLSAgICBpc0FycmF5OiBBcnJheS5pc0FycmF5IHx8IGZ1bmN0
aW9uKCBvYmogKSB7Ci0gICAgcmV0dXJuIGpRdWVyeS50eXBlKG9iaikgPT09ICJhcnJheSI7Ci0g
ICAgfSwKLQotICAgIGlzV2luZG93OiBmdW5jdGlvbiggb2JqICkgewotICAgIHJldHVybiBvYmog
IT0gbnVsbCAmJiBvYmogPT0gb2JqLndpbmRvdzsKLSAgICB9LAotCi0gICAgaXNOdW1lcmljOiBm
dW5jdGlvbiggb2JqICkgewotICAgIHJldHVybiAhaXNOYU4oIHBhcnNlRmxvYXQob2JqKSApICYm
IGlzRmluaXRlKCBvYmogKTsKLSAgICB9LAotCi0gICAgdHlwZTogZnVuY3Rpb24oIG9iaiApIHsK
LSAgICBpZiAoIG9iaiA9PSBudWxsICkgewotICAgIHJldHVybiBTdHJpbmcoIG9iaiApOwotICAg
IH0KLSAgICByZXR1cm4gdHlwZW9mIG9iaiA9PT0gIm9iamVjdCIgfHwgdHlwZW9mIG9iaiA9PT0g
ImZ1bmN0aW9uIiA/Ci0gICAgY2xhc3MydHlwZVsgY29yZV90b1N0cmluZy5jYWxsKG9iaikgXSB8
fCAib2JqZWN0IiA6Ci0gICAgdHlwZW9mIG9iajsKLSAgICB9LAotCi0gICAgaXNQbGFpbk9iamVj
dDogZnVuY3Rpb24oIG9iaiApIHsKLSAgICAvLyBNdXN0IGJlIGFuIE9iamVjdC4KLSAgICAvLyBC
ZWNhdXNlIG9mIElFLCB3ZSBhbHNvIGhhdmUgdG8gY2hlY2sgdGhlIHByZXNlbmNlIG9mIHRoZSBj
b25zdHJ1Y3RvciBwcm9wZXJ0eS4KLSAgICAvLyBNYWtlIHN1cmUgdGhhdCBET00gbm9kZXMgYW5k
IHdpbmRvdyBvYmplY3RzIGRvbid0IHBhc3MgdGhyb3VnaCwgYXMgd2VsbAotICAgIGlmICggIW9i
aiB8fCBqUXVlcnkudHlwZShvYmopICE9PSAib2JqZWN0IiB8fCBvYmoubm9kZVR5cGUgfHwgalF1
ZXJ5LmlzV2luZG93KCBvYmogKSApIHsKLSAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAg
dHJ5IHsKLSAgICAvLyBOb3Qgb3duIGNvbnN0cnVjdG9yIHByb3BlcnR5IG11c3QgYmUgT2JqZWN0
Ci0gICAgaWYgKCBvYmouY29uc3RydWN0b3IgJiYKLSAgICAhY29yZV9oYXNPd24uY2FsbChvYmos
ICJjb25zdHJ1Y3RvciIpICYmCi0gICAgIWNvcmVfaGFzT3duLmNhbGwob2JqLmNvbnN0cnVjdG9y
LnByb3RvdHlwZSwgImlzUHJvdG90eXBlT2YiKSApIHsKLSAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQotICAgIH0gY2F0Y2ggKCBlICkgewotICAgIC8vIElFOCw5IFdpbGwgdGhyb3cgZXhjZXB0aW9u
cyBvbiBjZXJ0YWluIGhvc3Qgb2JqZWN0cyAjOTg5NwotICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0KLSAgICAvLyBPd24gcHJvcGVydGllcyBhcmUgZW51bWVyYXRlZCBmaXJzdGx5LCBzbyB0byBz
cGVlZCB1cCwKLSAgICAvLyBpZiBsYXN0IG9uZSBpcyBvd24sIHRoZW4gYWxsIHByb3BlcnRpZXMg
YXJlIG93bi4KLQotICAgIHZhciBrZXk7Ci0gICAgZm9yICgga2V5IGluIG9iaiApIHt9Ci0KLSAg
ICByZXR1cm4ga2V5ID09PSB1bmRlZmluZWQgfHwgY29yZV9oYXNPd24uY2FsbCggb2JqLCBrZXkg
KTsKLSAgICB9LAotCi0gICAgaXNFbXB0eU9iamVjdDogZnVuY3Rpb24oIG9iaiApIHsKLSAgICB2
YXIgbmFtZTsKLSAgICBmb3IgKCBuYW1lIGluIG9iaiApIHsKLSAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotICAgIHJldHVybiB0cnVlOwotICAgIH0sCi0KLSAgICBlcnJvcjogZnVuY3Rpb24oIG1z
ZyApIHsKLSAgICB0aHJvdyBuZXcgRXJyb3IoIG1zZyApOwotICAgIH0sCi0KLSAgICAvLyBkYXRh
OiBzdHJpbmcgb2YgaHRtbAotICAgIC8vIGNvbnRleHQgKG9wdGlvbmFsKTogSWYgc3BlY2lmaWVk
LCB0aGUgZnJhZ21lbnQgd2lsbCBiZSBjcmVhdGVkIGluIHRoaXMgY29udGV4dCwgZGVmYXVsdHMg
dG8gZG9jdW1lbnQKLSAgICAvLyBrZWVwU2NyaXB0cyAob3B0aW9uYWwpOiBJZiB0cnVlLCB3aWxs
IGluY2x1ZGUgc2NyaXB0cyBwYXNzZWQgaW4gdGhlIGh0bWwgc3RyaW5nCi0gICAgcGFyc2VIVE1M
OiBmdW5jdGlvbiggZGF0YSwgY29udGV4dCwga2VlcFNjcmlwdHMgKSB7Ci0gICAgaWYgKCAhZGF0
YSB8fCB0eXBlb2YgZGF0YSAhPT0gInN0cmluZyIgKSB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gICAg
fQotICAgIGlmICggdHlwZW9mIGNvbnRleHQgPT09ICJib29sZWFuIiApIHsKLSAgICBrZWVwU2Ny
aXB0cyA9IGNvbnRleHQ7Ci0gICAgY29udGV4dCA9IGZhbHNlOwotICAgIH0KLSAgICBjb250ZXh0
ID0gY29udGV4dCB8fCBkb2N1bWVudDsKLQotICAgIHZhciBwYXJzZWQgPSByc2luZ2xlVGFnLmV4
ZWMoIGRhdGEgKSwKLSAgICBzY3JpcHRzID0gIWtlZXBTY3JpcHRzICYmIFtdOwotCi0gICAgLy8g
U2luZ2xlIHRhZwotICAgIGlmICggcGFyc2VkICkgewotICAgIHJldHVybiBbIGNvbnRleHQuY3Jl
YXRlRWxlbWVudCggcGFyc2VkWzFdICkgXTsKLSAgICB9Ci0KLSAgICBwYXJzZWQgPSBqUXVlcnku
YnVpbGRGcmFnbWVudCggWyBkYXRhIF0sIGNvbnRleHQsIHNjcmlwdHMgKTsKLSAgICBpZiAoIHNj
cmlwdHMgKSB7Ci0gICAgalF1ZXJ5KCBzY3JpcHRzICkucmVtb3ZlKCk7Ci0gICAgfQotICAgIHJl
dHVybiBqUXVlcnkubWVyZ2UoIFtdLCBwYXJzZWQuY2hpbGROb2RlcyApOwotICAgIH0sCi0KLSAg
ICBwYXJzZUpTT046IGZ1bmN0aW9uKCBkYXRhICkgewotICAgIC8vIEF0dGVtcHQgdG8gcGFyc2Ug
dXNpbmcgdGhlIG5hdGl2ZSBKU09OIHBhcnNlciBmaXJzdAotICAgIGlmICggd2luZG93LkpTT04g
JiYgd2luZG93LkpTT04ucGFyc2UgKSB7Ci0gICAgcmV0dXJuIHdpbmRvdy5KU09OLnBhcnNlKCBk
YXRhICk7Ci0gICAgfQotCi0gICAgaWYgKCBkYXRhID09PSBudWxsICkgewotICAgIHJldHVybiBk
YXRhOwotICAgIH0KLQotICAgIGlmICggdHlwZW9mIGRhdGEgPT09ICJzdHJpbmciICkgewotCi0g
ICAgLy8gTWFrZSBzdXJlIGxlYWRpbmcvdHJhaWxpbmcgd2hpdGVzcGFjZSBpcyByZW1vdmVkIChJ
RSBjYW4ndCBoYW5kbGUgaXQpCi0gICAgZGF0YSA9IGpRdWVyeS50cmltKCBkYXRhICk7Ci0KLSAg
ICBpZiAoIGRhdGEgKSB7Ci0gICAgLy8gTWFrZSBzdXJlIHRoZSBpbmNvbWluZyBkYXRhIGlzIGFj
dHVhbCBKU09OCi0gICAgLy8gTG9naWMgYm9ycm93ZWQgZnJvbSBodHRwOi8vanNvbi5vcmcvanNv
bjIuanMKLSAgICBpZiAoIHJ2YWxpZGNoYXJzLnRlc3QoIGRhdGEucmVwbGFjZSggcnZhbGlkZXNj
YXBlLCAiQCIgKQotICAgIC5yZXBsYWNlKCBydmFsaWR0b2tlbnMsICJdIiApCi0gICAgLnJlcGxh
Y2UoIHJ2YWxpZGJyYWNlcywgIiIpKSApIHsKLQotICAgIHJldHVybiAoIG5ldyBGdW5jdGlvbigg
InJldHVybiAiICsgZGF0YSApICkoKTsKLSAgICB9Ci0gICAgfQotICAgIH0KLQotICAgIGpRdWVy
eS5lcnJvciggIkludmFsaWQgSlNPTjogIiArIGRhdGEgKTsKLSAgICB9LAotCi0gICAgLy8gQ3Jv
c3MtYnJvd3NlciB4bWwgcGFyc2luZwotICAgIHBhcnNlWE1MOiBmdW5jdGlvbiggZGF0YSApIHsK
LSAgICB2YXIgeG1sLCB0bXA7Ci0gICAgaWYgKCAhZGF0YSB8fCB0eXBlb2YgZGF0YSAhPT0gInN0
cmluZyIgKSB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gICAgfQotICAgIHRyeSB7Ci0gICAgaWYgKCB3
aW5kb3cuRE9NUGFyc2VyICkgeyAvLyBTdGFuZGFyZAotICAgIHRtcCA9IG5ldyBET01QYXJzZXIo
KTsKLSAgICB4bWwgPSB0bXAucGFyc2VGcm9tU3RyaW5nKCBkYXRhICwgInRleHQveG1sIiApOwot
ICAgIH0gZWxzZSB7IC8vIElFCi0gICAgeG1sID0gbmV3IEFjdGl2ZVhPYmplY3QoICJNaWNyb3Nv
ZnQuWE1MRE9NIiApOwotICAgIHhtbC5hc3luYyA9ICJmYWxzZSI7Ci0gICAgeG1sLmxvYWRYTUwo
IGRhdGEgKTsKLSAgICB9Ci0gICAgfSBjYXRjaCggZSApIHsKLSAgICB4bWwgPSB1bmRlZmluZWQ7
Ci0gICAgfQotICAgIGlmICggIXhtbCB8fCAheG1sLmRvY3VtZW50RWxlbWVudCB8fCB4bWwuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoICJwYXJzZXJlcnJvciIgKS5sZW5ndGggKSB7Ci0gICAgalF1ZXJ5
LmVycm9yKCAiSW52YWxpZCBYTUw6ICIgKyBkYXRhICk7Ci0gICAgfQotICAgIHJldHVybiB4bWw7
Ci0gICAgfSwKLQotICAgIG5vb3A6IGZ1bmN0aW9uKCkge30sCi0KLSAgICAvLyBFdmFsdWF0ZXMg
YSBzY3JpcHQgaW4gYSBnbG9iYWwgY29udGV4dAotICAgIC8vIFdvcmthcm91bmRzIGJhc2VkIG9u
IGZpbmRpbmdzIGJ5IEppbSBEcmlzY29sbAotICAgIC8vIGh0dHA6Ly93ZWJsb2dzLmphdmEubmV0
L2Jsb2cvZHJpc2NvbGwvYXJjaGl2ZS8yMDA5LzA5LzA4L2V2YWwtamF2YXNjcmlwdC1nbG9iYWwt
Y29udGV4dAotICAgIGdsb2JhbEV2YWw6IGZ1bmN0aW9uKCBkYXRhICkgewotICAgIGlmICggZGF0
YSAmJiBqUXVlcnkudHJpbSggZGF0YSApICkgewotICAgIC8vIFdlIHVzZSBleGVjU2NyaXB0IG9u
IEludGVybmV0IEV4cGxvcmVyCi0gICAgLy8gV2UgdXNlIGFuIGFub255bW91cyBmdW5jdGlvbiBz
byB0aGF0IGNvbnRleHQgaXMgd2luZG93Ci0gICAgLy8gcmF0aGVyIHRoYW4galF1ZXJ5IGluIEZp
cmVmb3gKLSAgICAoIHdpbmRvdy5leGVjU2NyaXB0IHx8IGZ1bmN0aW9uKCBkYXRhICkgewotICAg
IHdpbmRvd1sgImV2YWwiIF0uY2FsbCggd2luZG93LCBkYXRhICk7Ci0gICAgfSApKCBkYXRhICk7
Ci0gICAgfQotICAgIH0sCi0KLSAgICAvLyBDb252ZXJ0IGRhc2hlZCB0byBjYW1lbENhc2U7IHVz
ZWQgYnkgdGhlIGNzcyBhbmQgZGF0YSBtb2R1bGVzCi0gICAgLy8gTWljcm9zb2Z0IGZvcmdvdCB0
byBodW1wIHRoZWlyIHZlbmRvciBwcmVmaXggKCM5NTcyKQotICAgIGNhbWVsQ2FzZTogZnVuY3Rp
b24oIHN0cmluZyApIHsKLSAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoIHJtc1ByZWZpeCwgIm1z
LSIgKS5yZXBsYWNlKCByZGFzaEFscGhhLCBmY2FtZWxDYXNlICk7Ci0gICAgfSwKLQotICAgIG5v
ZGVOYW1lOiBmdW5jdGlvbiggZWxlbSwgbmFtZSApIHsKLSAgICByZXR1cm4gZWxlbS5ub2RlTmFt
ZSAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IG5hbWUudG9Mb3dlckNhc2UoKTsK
LSAgICB9LAotCi0gICAgLy8gYXJncyBpcyBmb3IgaW50ZXJuYWwgdXNhZ2Ugb25seQotICAgIGVh
Y2g6IGZ1bmN0aW9uKCBvYmosIGNhbGxiYWNrLCBhcmdzICkgewotICAgIHZhciB2YWx1ZSwKLSAg
ICBpID0gMCwKLSAgICBsZW5ndGggPSBvYmoubGVuZ3RoLAotICAgIGlzQXJyYXkgPSBpc0FycmF5
bGlrZSggb2JqICk7Ci0KLSAgICBpZiAoIGFyZ3MgKSB7Ci0gICAgaWYgKCBpc0FycmF5ICkgewot
ICAgIGZvciAoIDsgaSA8IGxlbmd0aDsgaSsrICkgewotICAgIHZhbHVlID0gY2FsbGJhY2suYXBw
bHkoIG9ialsgaSBdLCBhcmdzICk7Ci0KLSAgICBpZiAoIHZhbHVlID09PSBmYWxzZSApIHsKLSAg
ICBicmVhazsKLSAgICB9Ci0gICAgfQotICAgIH0gZWxzZSB7Ci0gICAgZm9yICggaSBpbiBvYmog
KSB7Ci0gICAgdmFsdWUgPSBjYWxsYmFjay5hcHBseSggb2JqWyBpIF0sIGFyZ3MgKTsKLQotICAg
IGlmICggdmFsdWUgPT09IGZhbHNlICkgewotICAgIGJyZWFrOwotICAgIH0KLSAgICB9Ci0gICAg
fQotCi0gICAgLy8gQSBzcGVjaWFsLCBmYXN0LCBjYXNlIGZvciB0aGUgbW9zdCBjb21tb24gdXNl
IG9mIGVhY2gKLSAgICB9IGVsc2UgewotICAgIGlmICggaXNBcnJheSApIHsKLSAgICBmb3IgKCA7
IGkgPCBsZW5ndGg7IGkrKyApIHsKLSAgICB2YWx1ZSA9IGNhbGxiYWNrLmNhbGwoIG9ialsgaSBd
LCBpLCBvYmpbIGkgXSApOwotCi0gICAgaWYgKCB2YWx1ZSA9PT0gZmFsc2UgKSB7Ci0gICAgYnJl
YWs7Ci0gICAgfQotICAgIH0KLSAgICB9IGVsc2UgewotICAgIGZvciAoIGkgaW4gb2JqICkgewot
ICAgIHZhbHVlID0gY2FsbGJhY2suY2FsbCggb2JqWyBpIF0sIGksIG9ialsgaSBdICk7Ci0KLSAg
ICBpZiAoIHZhbHVlID09PSBmYWxzZSApIHsKLSAgICBicmVhazsKLSAgICB9Ci0gICAgfQotICAg
IH0KLSAgICB9Ci0KLSAgICByZXR1cm4gb2JqOwotICAgIH0sCi0KLSAgICAvLyBVc2UgbmF0aXZl
IFN0cmluZy50cmltIGZ1bmN0aW9uIHdoZXJldmVyIHBvc3NpYmxlCi0gICAgdHJpbTogY29yZV90
cmltICYmICFjb3JlX3RyaW0uY2FsbCgiXHVGRUZGXHhBMCIpID8KLSAgICBmdW5jdGlvbiggdGV4
dCApIHsKLSAgICByZXR1cm4gdGV4dCA9PSBudWxsID8KLSAgICAiIiA6Ci0gICAgY29yZV90cmlt
LmNhbGwoIHRleHQgKTsKLSAgICB9IDoKLQotICAgIC8vIE90aGVyd2lzZSB1c2Ugb3VyIG93biB0
cmltbWluZyBmdW5jdGlvbmFsaXR5Ci0gICAgZnVuY3Rpb24oIHRleHQgKSB7Ci0gICAgcmV0dXJu
IHRleHQgPT0gbnVsbCA/Ci0gICAgIiIgOgotICAgICggdGV4dCArICIiICkucmVwbGFjZSggcnRy
aW0sICIiICk7Ci0gICAgfSwKLQotICAgIC8vIHJlc3VsdHMgaXMgZm9yIGludGVybmFsIHVzYWdl
IG9ubHkKLSAgICBtYWtlQXJyYXk6IGZ1bmN0aW9uKCBhcnIsIHJlc3VsdHMgKSB7Ci0gICAgdmFy
IHJldCA9IHJlc3VsdHMgfHwgW107Ci0KLSAgICBpZiAoIGFyciAhPSBudWxsICkgewotICAgIGlm
ICggaXNBcnJheWxpa2UoIE9iamVjdChhcnIpICkgKSB7Ci0gICAgalF1ZXJ5Lm1lcmdlKCByZXQs
Ci0gICAgdHlwZW9mIGFyciA9PT0gInN0cmluZyIgPwotICAgIFsgYXJyIF0gOiBhcnIKLSAgICAp
OwotICAgIH0gZWxzZSB7Ci0gICAgY29yZV9wdXNoLmNhbGwoIHJldCwgYXJyICk7Ci0gICAgfQot
ICAgIH0KLQotICAgIHJldHVybiByZXQ7Ci0gICAgfSwKLQotICAgIGluQXJyYXk6IGZ1bmN0aW9u
KCBlbGVtLCBhcnIsIGkgKSB7Ci0gICAgdmFyIGxlbjsKLQotICAgIGlmICggYXJyICkgewotICAg
IGlmICggY29yZV9pbmRleE9mICkgewotICAgIHJldHVybiBjb3JlX2luZGV4T2YuY2FsbCggYXJy
LCBlbGVtLCBpICk7Ci0gICAgfQotCi0gICAgbGVuID0gYXJyLmxlbmd0aDsKLSAgICBpID0gaSA/
IGkgPCAwID8gTWF0aC5tYXgoIDAsIGxlbiArIGkgKSA6IGkgOiAwOwotCi0gICAgZm9yICggOyBp
IDwgbGVuOyBpKysgKSB7Ci0gICAgLy8gU2tpcCBhY2Nlc3NpbmcgaW4gc3BhcnNlIGFycmF5cwot
ICAgIGlmICggaSBpbiBhcnIgJiYgYXJyWyBpIF0gPT09IGVsZW0gKSB7Ci0gICAgcmV0dXJuIGk7
Ci0gICAgfQotICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gLTE7Ci0gICAgfSwKLQotICAgIG1l
cmdlOiBmdW5jdGlvbiggZmlyc3QsIHNlY29uZCApIHsKLSAgICB2YXIgbCA9IHNlY29uZC5sZW5n
dGgsCi0gICAgaSA9IGZpcnN0Lmxlbmd0aCwKLSAgICBqID0gMDsKLQotICAgIGlmICggdHlwZW9m
IGwgPT09ICJudW1iZXIiICkgewotICAgIGZvciAoIDsgaiA8IGw7IGorKyApIHsKLSAgICBmaXJz
dFsgaSsrIF0gPSBzZWNvbmRbIGogXTsKLSAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICB3aGlsZSAo
IHNlY29uZFtqXSAhPT0gdW5kZWZpbmVkICkgewotICAgIGZpcnN0WyBpKysgXSA9IHNlY29uZFsg
aisrIF07Ci0gICAgfQotICAgIH0KLQotICAgIGZpcnN0Lmxlbmd0aCA9IGk7Ci0KLSAgICByZXR1
cm4gZmlyc3Q7Ci0gICAgfSwKLQotICAgIGdyZXA6IGZ1bmN0aW9uKCBlbGVtcywgY2FsbGJhY2ss
IGludiApIHsKLSAgICB2YXIgcmV0VmFsLAotICAgIHJldCA9IFtdLAotICAgIGkgPSAwLAotICAg
IGxlbmd0aCA9IGVsZW1zLmxlbmd0aDsKLSAgICBpbnYgPSAhIWludjsKLQotICAgIC8vIEdvIHRo
cm91Z2ggdGhlIGFycmF5LCBvbmx5IHNhdmluZyB0aGUgaXRlbXMKLSAgICAvLyB0aGF0IHBhc3Mg
dGhlIHZhbGlkYXRvciBmdW5jdGlvbgotICAgIGZvciAoIDsgaSA8IGxlbmd0aDsgaSsrICkgewot
ICAgIHJldFZhbCA9ICEhY2FsbGJhY2soIGVsZW1zWyBpIF0sIGkgKTsKLSAgICBpZiAoIGludiAh
PT0gcmV0VmFsICkgewotICAgIHJldC5wdXNoKCBlbGVtc1sgaSBdICk7Ci0gICAgfQotICAgIH0K
LQotICAgIHJldHVybiByZXQ7Ci0gICAgfSwKLQotICAgIC8vIGFyZyBpcyBmb3IgaW50ZXJuYWwg
dXNhZ2Ugb25seQotICAgIG1hcDogZnVuY3Rpb24oIGVsZW1zLCBjYWxsYmFjaywgYXJnICkgewot
ICAgIHZhciB2YWx1ZSwKLSAgICBpID0gMCwKLSAgICBsZW5ndGggPSBlbGVtcy5sZW5ndGgsCi0g
ICAgaXNBcnJheSA9IGlzQXJyYXlsaWtlKCBlbGVtcyApLAotICAgIHJldCA9IFtdOwotCi0gICAg
Ly8gR28gdGhyb3VnaCB0aGUgYXJyYXksIHRyYW5zbGF0aW5nIGVhY2ggb2YgdGhlIGl0ZW1zIHRv
IHRoZWlyCi0gICAgaWYgKCBpc0FycmF5ICkgewotICAgIGZvciAoIDsgaSA8IGxlbmd0aDsgaSsr
ICkgewotICAgIHZhbHVlID0gY2FsbGJhY2soIGVsZW1zWyBpIF0sIGksIGFyZyApOwotCi0gICAg
aWYgKCB2YWx1ZSAhPSBudWxsICkgewotICAgIHJldFsgcmV0Lmxlbmd0aCBdID0gdmFsdWU7Ci0g
ICAgfQotICAgIH0KLQotICAgIC8vIEdvIHRocm91Z2ggZXZlcnkga2V5IG9uIHRoZSBvYmplY3Qs
Ci0gICAgfSBlbHNlIHsKLSAgICBmb3IgKCBpIGluIGVsZW1zICkgewotICAgIHZhbHVlID0gY2Fs
bGJhY2soIGVsZW1zWyBpIF0sIGksIGFyZyApOwotCi0gICAgaWYgKCB2YWx1ZSAhPSBudWxsICkg
ewotICAgIHJldFsgcmV0Lmxlbmd0aCBdID0gdmFsdWU7Ci0gICAgfQotICAgIH0KLSAgICB9Ci0K
LSAgICAvLyBGbGF0dGVuIGFueSBuZXN0ZWQgYXJyYXlzCi0gICAgcmV0dXJuIGNvcmVfY29uY2F0
LmFwcGx5KCBbXSwgcmV0ICk7Ci0gICAgfSwKLQotICAgIC8vIEEgZ2xvYmFsIEdVSUQgY291bnRl
ciBmb3Igb2JqZWN0cwotICAgIGd1aWQ6IDEsCi0KLSAgICAvLyBCaW5kIGEgZnVuY3Rpb24gdG8g
YSBjb250ZXh0LCBvcHRpb25hbGx5IHBhcnRpYWxseSBhcHBseWluZyBhbnkKLSAgICAvLyBhcmd1
bWVudHMuCi0gICAgcHJveHk6IGZ1bmN0aW9uKCBmbiwgY29udGV4dCApIHsKLSAgICB2YXIgYXJn
cywgcHJveHksIHRtcDsKLQotICAgIGlmICggdHlwZW9mIGNvbnRleHQgPT09ICJzdHJpbmciICkg
ewotICAgIHRtcCA9IGZuWyBjb250ZXh0IF07Ci0gICAgY29udGV4dCA9IGZuOwotICAgIGZuID0g
dG1wOwotICAgIH0KLQotICAgIC8vIFF1aWNrIGNoZWNrIHRvIGRldGVybWluZSBpZiB0YXJnZXQg
aXMgY2FsbGFibGUsIGluIHRoZSBzcGVjCi0gICAgLy8gdGhpcyB0aHJvd3MgYSBUeXBlRXJyb3Is
IGJ1dCB3ZSB3aWxsIGp1c3QgcmV0dXJuIHVuZGVmaW5lZC4KLSAgICBpZiAoICFqUXVlcnkuaXNG
dW5jdGlvbiggZm4gKSApIHsKLSAgICByZXR1cm4gdW5kZWZpbmVkOwotICAgIH0KLQotICAgIC8v
IFNpbXVsYXRlZCBiaW5kCi0gICAgYXJncyA9IGNvcmVfc2xpY2UuY2FsbCggYXJndW1lbnRzLCAy
ICk7Ci0gICAgcHJveHkgPSBmdW5jdGlvbigpIHsKLSAgICByZXR1cm4gZm4uYXBwbHkoIGNvbnRl
eHQgfHwgdGhpcywgYXJncy5jb25jYXQoIGNvcmVfc2xpY2UuY2FsbCggYXJndW1lbnRzICkgKSAp
OwotICAgIH07Ci0KLSAgICAvLyBTZXQgdGhlIGd1aWQgb2YgdW5pcXVlIGhhbmRsZXIgdG8gdGhl
IHNhbWUgb2Ygb3JpZ2luYWwgaGFuZGxlciwgc28gaXQgY2FuIGJlIHJlbW92ZWQKLSAgICBwcm94
eS5ndWlkID0gZm4uZ3VpZCA9IGZuLmd1aWQgfHwgalF1ZXJ5Lmd1aWQrKzsKLQotICAgIHJldHVy
biBwcm94eTsKLSAgICB9LAotCi0gICAgLy8gTXVsdGlmdW5jdGlvbmFsIG1ldGhvZCB0byBnZXQg
YW5kIHNldCB2YWx1ZXMgb2YgYSBjb2xsZWN0aW9uCi0gICAgLy8gVGhlIHZhbHVlL3MgY2FuIG9w
dGlvbmFsbHkgYmUgZXhlY3V0ZWQgaWYgaXQncyBhIGZ1bmN0aW9uCi0gICAgYWNjZXNzOiBmdW5j
dGlvbiggZWxlbXMsIGZuLCBrZXksIHZhbHVlLCBjaGFpbmFibGUsIGVtcHR5R2V0LCByYXcgKSB7
Ci0gICAgdmFyIGkgPSAwLAotICAgIGxlbmd0aCA9IGVsZW1zLmxlbmd0aCwKLSAgICBidWxrID0g
a2V5ID09IG51bGw7Ci0KLSAgICAvLyBTZXRzIG1hbnkgdmFsdWVzCi0gICAgaWYgKCBqUXVlcnku
dHlwZSgga2V5ICkgPT09ICJvYmplY3QiICkgewotICAgIGNoYWluYWJsZSA9IHRydWU7Ci0gICAg
Zm9yICggaSBpbiBrZXkgKSB7Ci0gICAgalF1ZXJ5LmFjY2VzcyggZWxlbXMsIGZuLCBpLCBrZXlb
aV0sIHRydWUsIGVtcHR5R2V0LCByYXcgKTsKLSAgICB9Ci0KLSAgICAvLyBTZXRzIG9uZSB2YWx1
ZQotICAgIH0gZWxzZSBpZiAoIHZhbHVlICE9PSB1bmRlZmluZWQgKSB7Ci0gICAgY2hhaW5hYmxl
ID0gdHJ1ZTsKLQotICAgIGlmICggIWpRdWVyeS5pc0Z1bmN0aW9uKCB2YWx1ZSApICkgewotICAg
IHJhdyA9IHRydWU7Ci0gICAgfQotCi0gICAgaWYgKCBidWxrICkgewotICAgIC8vIEJ1bGsgb3Bl
cmF0aW9ucyBydW4gYWdhaW5zdCB0aGUgZW50aXJlIHNldAotICAgIGlmICggcmF3ICkgewotICAg
IGZuLmNhbGwoIGVsZW1zLCB2YWx1ZSApOwotICAgIGZuID0gbnVsbDsKLQotICAgIC8vIC4uLmV4
Y2VwdCB3aGVuIGV4ZWN1dGluZyBmdW5jdGlvbiB2YWx1ZXMKLSAgICB9IGVsc2UgewotICAgIGJ1
bGsgPSBmbjsKLSAgICBmbiA9IGZ1bmN0aW9uKCBlbGVtLCBrZXksIHZhbHVlICkgewotICAgIHJl
dHVybiBidWxrLmNhbGwoIGpRdWVyeSggZWxlbSApLCB2YWx1ZSApOwotICAgIH07Ci0gICAgfQot
ICAgIH0KLQotICAgIGlmICggZm4gKSB7Ci0gICAgZm9yICggOyBpIDwgbGVuZ3RoOyBpKysgKSB7
Ci0gICAgZm4oIGVsZW1zW2ldLCBrZXksIHJhdyA/IHZhbHVlIDogdmFsdWUuY2FsbCggZWxlbXNb
aV0sIGksIGZuKCBlbGVtc1tpXSwga2V5ICkgKSApOwotICAgIH0KLSAgICB9Ci0gICAgfQotCi0g
ICAgcmV0dXJuIGNoYWluYWJsZSA/Ci0gICAgZWxlbXMgOgotCi0gICAgLy8gR2V0cwotICAgIGJ1
bGsgPwotICAgIGZuLmNhbGwoIGVsZW1zICkgOgotICAgIGxlbmd0aCA/IGZuKCBlbGVtc1swXSwg
a2V5ICkgOiBlbXB0eUdldDsKLSAgICB9LAotCi0gICAgbm93OiBmdW5jdGlvbigpIHsKLSAgICBy
ZXR1cm4gKCBuZXcgRGF0ZSgpICkuZ2V0VGltZSgpOwotICAgIH0KLX0pOwotCi1qUXVlcnkucmVh
ZHkucHJvbWlzZSA9IGZ1bmN0aW9uKCBvYmogKSB7Ci0gICAgaWYgKCAhcmVhZHlMaXN0ICkgewot
Ci0gICAgcmVhZHlMaXN0ID0galF1ZXJ5LkRlZmVycmVkKCk7Ci0KLSAgICAvLyBDYXRjaCBjYXNl
cyB3aGVyZSAkKGRvY3VtZW50KS5yZWFkeSgpIGlzIGNhbGxlZCBhZnRlciB0aGUgYnJvd3NlciBl
dmVudCBoYXMgYWxyZWFkeSBvY2N1cnJlZC4KLSAgICAvLyB3ZSBvbmNlIHRyaWVkIHRvIHVzZSBy
ZWFkeVN0YXRlICJpbnRlcmFjdGl2ZSIgaGVyZSwgYnV0IGl0IGNhdXNlZCBpc3N1ZXMgbGlrZSB0
aGUgb25lCi0gICAgLy8gZGlzY292ZXJlZCBieSBDaHJpc1MgaGVyZTogaHR0cDovL2J1Z3MuanF1
ZXJ5LmNvbS90aWNrZXQvMTIyODIjY29tbWVudDoxNQotICAgIGlmICggZG9jdW1lbnQucmVhZHlT
dGF0ZSA9PT0gImNvbXBsZXRlIiApIHsKLSAgICAvLyBIYW5kbGUgaXQgYXN5bmNocm9ub3VzbHkg
dG8gYWxsb3cgc2NyaXB0cyB0aGUgb3Bwb3J0dW5pdHkgdG8gZGVsYXkgcmVhZHkKLSAgICBzZXRU
aW1lb3V0KCBqUXVlcnkucmVhZHkgKTsKLQotICAgIC8vIFN0YW5kYXJkcy1iYXNlZCBicm93c2Vy
cyBzdXBwb3J0IERPTUNvbnRlbnRMb2FkZWQKLSAgICB9IGVsc2UgaWYgKCBkb2N1bWVudC5hZGRF
dmVudExpc3RlbmVyICkgewotICAgIC8vIFVzZSB0aGUgaGFuZHkgZXZlbnQgY2FsbGJhY2sKLSAg
ICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCAiRE9NQ29udGVudExvYWRlZCIsIGNvbXBsZXRl
ZCwgZmFsc2UgKTsKLQotICAgIC8vIEEgZmFsbGJhY2sgdG8gd2luZG93Lm9ubG9hZCwgdGhhdCB3
aWxsIGFsd2F5cyB3b3JrCi0gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoICJsb2FkIiwgY29t
cGxldGVkLCBmYWxzZSApOwotCi0gICAgLy8gSWYgSUUgZXZlbnQgbW9kZWwgaXMgdXNlZAotICAg
IH0gZWxzZSB7Ci0gICAgLy8gRW5zdXJlIGZpcmluZyBiZWZvcmUgb25sb2FkLCBtYXliZSBsYXRl
IGJ1dCBzYWZlIGFsc28gZm9yIGlmcmFtZXMKLSAgICBkb2N1bWVudC5hdHRhY2hFdmVudCggIm9u
cmVhZHlzdGF0ZWNoYW5nZSIsIGNvbXBsZXRlZCApOwotCi0gICAgLy8gQSBmYWxsYmFjayB0byB3
aW5kb3cub25sb2FkLCB0aGF0IHdpbGwgYWx3YXlzIHdvcmsKLSAgICB3aW5kb3cuYXR0YWNoRXZl
bnQoICJvbmxvYWQiLCBjb21wbGV0ZWQgKTsKLQotICAgIC8vIElmIElFIGFuZCBub3QgYSBmcmFt
ZQotICAgIC8vIGNvbnRpbnVhbGx5IGNoZWNrIHRvIHNlZSBpZiB0aGUgZG9jdW1lbnQgaXMgcmVh
ZHkKLSAgICB2YXIgdG9wID0gZmFsc2U7Ci0KLSAgICB0cnkgewotICAgIHRvcCA9IHdpbmRvdy5m
cmFtZUVsZW1lbnQgPT0gbnVsbCAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7Ci0gICAgfSBj
YXRjaChlKSB7fQotCi0gICAgaWYgKCB0b3AgJiYgdG9wLmRvU2Nyb2xsICkgewotICAgIChmdW5j
dGlvbiBkb1Njcm9sbENoZWNrKCkgewotICAgIGlmICggIWpRdWVyeS5pc1JlYWR5ICkgewotCi0g
ICAgdHJ5IHsKLSAgICAvLyBVc2UgdGhlIHRyaWNrIGJ5IERpZWdvIFBlcmluaQotICAgIC8vIGh0
dHA6Ly9qYXZhc2NyaXB0Lm53Ym94LmNvbS9JRUNvbnRlbnRMb2FkZWQvCi0gICAgdG9wLmRvU2Ny
b2xsKCJsZWZ0Iik7Ci0gICAgfSBjYXRjaChlKSB7Ci0gICAgcmV0dXJuIHNldFRpbWVvdXQoIGRv
U2Nyb2xsQ2hlY2ssIDUwICk7Ci0gICAgfQotCi0gICAgLy8gZGV0YWNoIGFsbCBkb20gcmVhZHkg
ZXZlbnRzCi0gICAgZGV0YWNoKCk7Ci0KLSAgICAvLyBhbmQgZXhlY3V0ZSBhbnkgd2FpdGluZyBm
dW5jdGlvbnMKLSAgICBqUXVlcnkucmVhZHkoKTsKLSAgICB9Ci0gICAgfSkoKTsKLSAgICB9Ci0g
ICAgfQotICAgIH0KLSAgICByZXR1cm4gcmVhZHlMaXN0LnByb21pc2UoIG9iaiApOwotfTsKLQot
Ly8gUG9wdWxhdGUgdGhlIGNsYXNzMnR5cGUgbWFwCi1qUXVlcnkuZWFjaCgiQm9vbGVhbiBOdW1i
ZXIgU3RyaW5nIEZ1bmN0aW9uIEFycmF5IERhdGUgUmVnRXhwIE9iamVjdCBFcnJvciIuc3BsaXQo
IiAiKSwgZnVuY3Rpb24oaSwgbmFtZSkgewotICAgIGNsYXNzMnR5cGVbICJbb2JqZWN0ICIgKyBu
YW1lICsgIl0iIF0gPSBuYW1lLnRvTG93ZXJDYXNlKCk7Ci19KTsKLQotZnVuY3Rpb24gaXNBcnJh
eWxpa2UoIG9iaiApIHsKLSAgICB2YXIgbGVuZ3RoID0gb2JqLmxlbmd0aCwKLSAgICB0eXBlID0g
alF1ZXJ5LnR5cGUoIG9iaiApOwotCi0gICAgaWYgKCBqUXVlcnkuaXNXaW5kb3coIG9iaiApICkg
ewotICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAoIG9iai5ub2RlVHlwZSA9PT0g
MSAmJiBsZW5ndGggKSB7Ci0gICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIHR5
cGUgPT09ICJhcnJheSIgfHwgdHlwZSAhPT0gImZ1bmN0aW9uIiAmJgotICAgICggbGVuZ3RoID09
PSAwIHx8Ci0gICAgdHlwZW9mIGxlbmd0aCA9PT0gIm51bWJlciIgJiYgbGVuZ3RoID4gMCAmJiAo
IGxlbmd0aCAtIDEgKSBpbiBvYmogKTsKLX0KLQotLy8gQWxsIGpRdWVyeSBvYmplY3RzIHNob3Vs
ZCBwb2ludCBiYWNrIHRvIHRoZXNlCi1yb290alF1ZXJ5ID0galF1ZXJ5KGRvY3VtZW50KTsKLS8v
IFN0cmluZyB0byBPYmplY3Qgb3B0aW9ucyBmb3JtYXQgY2FjaGUKLXZhciBvcHRpb25zQ2FjaGUg
PSB7fTsKLQotLy8gQ29udmVydCBTdHJpbmctZm9ybWF0dGVkIG9wdGlvbnMgaW50byBPYmplY3Qt
Zm9ybWF0dGVkIG9uZXMgYW5kIHN0b3JlIGluIGNhY2hlCi1mdW5jdGlvbiBjcmVhdGVPcHRpb25z
KCBvcHRpb25zICkgewotICAgIHZhciBvYmplY3QgPSBvcHRpb25zQ2FjaGVbIG9wdGlvbnMgXSA9
IHt9OwotICAgIGpRdWVyeS5lYWNoKCBvcHRpb25zLm1hdGNoKCBjb3JlX3Jub3R3aGl0ZSApIHx8
IFtdLCBmdW5jdGlvbiggXywgZmxhZyApIHsKLSAgICBvYmplY3RbIGZsYWcgXSA9IHRydWU7Ci0g
ICAgfSk7Ci0gICAgcmV0dXJuIG9iamVjdDsKLX0KLQotLyoKLSAqIENyZWF0ZSBhIGNhbGxiYWNr
IGxpc3QgdXNpbmcgdGhlIGZvbGxvd2luZyBwYXJhbWV0ZXJzOgotICoKLSAqICAgIG9wdGlvbnM6
IGFuIG9wdGlvbmFsIGxpc3Qgb2Ygc3BhY2Utc2VwYXJhdGVkIG9wdGlvbnMgdGhhdCB3aWxsIGNo
YW5nZSBob3cKLSAqICAgICAgICAgICAgdGhlIGNhbGxiYWNrIGxpc3QgYmVoYXZlcyBvciBhIG1v
cmUgdHJhZGl0aW9uYWwgb3B0aW9uIG9iamVjdAotICoKLSAqIEJ5IGRlZmF1bHQgYSBjYWxsYmFj
ayBsaXN0IHdpbGwgYWN0IGxpa2UgYW4gZXZlbnQgY2FsbGJhY2sgbGlzdCBhbmQgY2FuIGJlCi0g
KiAiZmlyZWQiIG11bHRpcGxlIHRpbWVzLgotICoKLSAqIFBvc3NpYmxlIG9wdGlvbnM6Ci0gKgot
ICogICAgb25jZTogICAgICAgICAgICB3aWxsIGVuc3VyZSB0aGUgY2FsbGJhY2sgbGlzdCBjYW4g
b25seSBiZSBmaXJlZCBvbmNlIChsaWtlIGEgRGVmZXJyZWQpCi0gKgotICogICAgbWVtb3J5OiAg
ICAgICAgICAgIHdpbGwga2VlcCB0cmFjayBvZiBwcmV2aW91cyB2YWx1ZXMgYW5kIHdpbGwgY2Fs
bCBhbnkgY2FsbGJhY2sgYWRkZWQKLSAqICAgICAgICAgICAgICAgICAgICBhZnRlciB0aGUgbGlz
dCBoYXMgYmVlbiBmaXJlZCByaWdodCBhd2F5IHdpdGggdGhlIGxhdGVzdCAibWVtb3JpemVkIgot
ICogICAgICAgICAgICAgICAgICAgIHZhbHVlcyAobGlrZSBhIERlZmVycmVkKQotICoKLSAqICAg
IHVuaXF1ZTogICAgICAgICAgICB3aWxsIGVuc3VyZSBhIGNhbGxiYWNrIGNhbiBvbmx5IGJlIGFk
ZGVkIG9uY2UgKG5vIGR1cGxpY2F0ZSBpbiB0aGUgbGlzdCkKLSAqCi0gKiAgICBzdG9wT25GYWxz
ZTogICAgaW50ZXJydXB0IGNhbGxpbmdzIHdoZW4gYSBjYWxsYmFjayByZXR1cm5zIGZhbHNlCi0g
KgotICovCi1qUXVlcnkuQ2FsbGJhY2tzID0gZnVuY3Rpb24oIG9wdGlvbnMgKSB7Ci0KLSAgICAv
LyBDb252ZXJ0IG9wdGlvbnMgZnJvbSBTdHJpbmctZm9ybWF0dGVkIHRvIE9iamVjdC1mb3JtYXR0
ZWQgaWYgbmVlZGVkCi0gICAgLy8gKHdlIGNoZWNrIGluIGNhY2hlIGZpcnN0KQotICAgIG9wdGlv
bnMgPSB0eXBlb2Ygb3B0aW9ucyA9PT0gInN0cmluZyIgPwotICAgICggb3B0aW9uc0NhY2hlWyBv
cHRpb25zIF0gfHwgY3JlYXRlT3B0aW9ucyggb3B0aW9ucyApICkgOgotICAgIGpRdWVyeS5leHRl
bmQoIHt9LCBvcHRpb25zICk7Ci0KLSAgICB2YXIgLy8gRmxhZyB0byBrbm93IGlmIGxpc3QgaXMg
Y3VycmVudGx5IGZpcmluZwotICAgIGZpcmluZywKLSAgICAvLyBMYXN0IGZpcmUgdmFsdWUgKGZv
ciBub24tZm9yZ2V0dGFibGUgbGlzdHMpCi0gICAgbWVtb3J5LAotICAgIC8vIEZsYWcgdG8ga25v
dyBpZiBsaXN0IHdhcyBhbHJlYWR5IGZpcmVkCi0gICAgZmlyZWQsCi0gICAgLy8gRW5kIG9mIHRo
ZSBsb29wIHdoZW4gZmlyaW5nCi0gICAgZmlyaW5nTGVuZ3RoLAotICAgIC8vIEluZGV4IG9mIGN1
cnJlbnRseSBmaXJpbmcgY2FsbGJhY2sgKG1vZGlmaWVkIGJ5IHJlbW92ZSBpZiBuZWVkZWQpCi0g
ICAgZmlyaW5nSW5kZXgsCi0gICAgLy8gRmlyc3QgY2FsbGJhY2sgdG8gZmlyZSAodXNlZCBpbnRl
cm5hbGx5IGJ5IGFkZCBhbmQgZmlyZVdpdGgpCi0gICAgZmlyaW5nU3RhcnQsCi0gICAgLy8gQWN0
dWFsIGNhbGxiYWNrIGxpc3QKLSAgICBsaXN0ID0gW10sCi0gICAgLy8gU3RhY2sgb2YgZmlyZSBj
YWxscyBmb3IgcmVwZWF0YWJsZSBsaXN0cwotICAgIHN0YWNrID0gIW9wdGlvbnMub25jZSAmJiBb
XSwKLSAgICAvLyBGaXJlIGNhbGxiYWNrcwotICAgIGZpcmUgPSBmdW5jdGlvbiggZGF0YSApIHsK
LSAgICBtZW1vcnkgPSBvcHRpb25zLm1lbW9yeSAmJiBkYXRhOwotICAgIGZpcmVkID0gdHJ1ZTsK
LSAgICBmaXJpbmdJbmRleCA9IGZpcmluZ1N0YXJ0IHx8IDA7Ci0gICAgZmlyaW5nU3RhcnQgPSAw
OwotICAgIGZpcmluZ0xlbmd0aCA9IGxpc3QubGVuZ3RoOwotICAgIGZpcmluZyA9IHRydWU7Ci0g
ICAgZm9yICggOyBsaXN0ICYmIGZpcmluZ0luZGV4IDwgZmlyaW5nTGVuZ3RoOyBmaXJpbmdJbmRl
eCsrICkgewotICAgIGlmICggbGlzdFsgZmlyaW5nSW5kZXggXS5hcHBseSggZGF0YVsgMCBdLCBk
YXRhWyAxIF0gKSA9PT0gZmFsc2UgJiYgb3B0aW9ucy5zdG9wT25GYWxzZSApIHsKLSAgICBtZW1v
cnkgPSBmYWxzZTsgLy8gVG8gcHJldmVudCBmdXJ0aGVyIGNhbGxzIHVzaW5nIGFkZAotICAgIGJy
ZWFrOwotICAgIH0KLSAgICB9Ci0gICAgZmlyaW5nID0gZmFsc2U7Ci0gICAgaWYgKCBsaXN0ICkg
ewotICAgIGlmICggc3RhY2sgKSB7Ci0gICAgaWYgKCBzdGFjay5sZW5ndGggKSB7Ci0gICAgZmly
ZSggc3RhY2suc2hpZnQoKSApOwotICAgIH0KLSAgICB9IGVsc2UgaWYgKCBtZW1vcnkgKSB7Ci0g
ICAgbGlzdCA9IFtdOwotICAgIH0gZWxzZSB7Ci0gICAgc2VsZi5kaXNhYmxlKCk7Ci0gICAgfQot
ICAgIH0KLSAgICB9LAotICAgIC8vIEFjdHVhbCBDYWxsYmFja3Mgb2JqZWN0Ci0gICAgc2VsZiA9
IHsKLSAgICAvLyBBZGQgYSBjYWxsYmFjayBvciBhIGNvbGxlY3Rpb24gb2YgY2FsbGJhY2tzIHRv
IHRoZSBsaXN0Ci0gICAgYWRkOiBmdW5jdGlvbigpIHsKLSAgICBpZiAoIGxpc3QgKSB7Ci0gICAg
Ly8gRmlyc3QsIHdlIHNhdmUgdGhlIGN1cnJlbnQgbGVuZ3RoCi0gICAgdmFyIHN0YXJ0ID0gbGlz
dC5sZW5ndGg7Ci0gICAgKGZ1bmN0aW9uIGFkZCggYXJncyApIHsKLSAgICBqUXVlcnkuZWFjaCgg
YXJncywgZnVuY3Rpb24oIF8sIGFyZyApIHsKLSAgICB2YXIgdHlwZSA9IGpRdWVyeS50eXBlKCBh
cmcgKTsKLSAgICBpZiAoIHR5cGUgPT09ICJmdW5jdGlvbiIgKSB7Ci0gICAgaWYgKCAhb3B0aW9u
cy51bmlxdWUgfHwgIXNlbGYuaGFzKCBhcmcgKSApIHsKLSAgICBsaXN0LnB1c2goIGFyZyApOwot
ICAgIH0KLSAgICB9IGVsc2UgaWYgKCBhcmcgJiYgYXJnLmxlbmd0aCAmJiB0eXBlICE9PSAic3Ry
aW5nIiApIHsKLSAgICAvLyBJbnNwZWN0IHJlY3Vyc2l2ZWx5Ci0gICAgYWRkKCBhcmcgKTsKLSAg
ICB9Ci0gICAgfSk7Ci0gICAgfSkoIGFyZ3VtZW50cyApOwotICAgIC8vIERvIHdlIG5lZWQgdG8g
YWRkIHRoZSBjYWxsYmFja3MgdG8gdGhlCi0gICAgLy8gY3VycmVudCBmaXJpbmcgYmF0Y2g/Ci0g
ICAgaWYgKCBmaXJpbmcgKSB7Ci0gICAgZmlyaW5nTGVuZ3RoID0gbGlzdC5sZW5ndGg7Ci0gICAg
Ly8gV2l0aCBtZW1vcnksIGlmIHdlJ3JlIG5vdCBmaXJpbmcgdGhlbgotICAgIC8vIHdlIHNob3Vs
ZCBjYWxsIHJpZ2h0IGF3YXkKLSAgICB9IGVsc2UgaWYgKCBtZW1vcnkgKSB7Ci0gICAgZmlyaW5n
U3RhcnQgPSBzdGFydDsKLSAgICBmaXJlKCBtZW1vcnkgKTsKLSAgICB9Ci0gICAgfQotICAgIHJl
dHVybiB0aGlzOwotICAgIH0sCi0gICAgLy8gUmVtb3ZlIGEgY2FsbGJhY2sgZnJvbSB0aGUgbGlz
dAotICAgIHJlbW92ZTogZnVuY3Rpb24oKSB7Ci0gICAgaWYgKCBsaXN0ICkgewotICAgIGpRdWVy
eS5lYWNoKCBhcmd1bWVudHMsIGZ1bmN0aW9uKCBfLCBhcmcgKSB7Ci0gICAgdmFyIGluZGV4Owot
ICAgIHdoaWxlKCAoIGluZGV4ID0galF1ZXJ5LmluQXJyYXkoIGFyZywgbGlzdCwgaW5kZXggKSAp
ID4gLTEgKSB7Ci0gICAgbGlzdC5zcGxpY2UoIGluZGV4LCAxICk7Ci0gICAgLy8gSGFuZGxlIGZp
cmluZyBpbmRleGVzCi0gICAgaWYgKCBmaXJpbmcgKSB7Ci0gICAgaWYgKCBpbmRleCA8PSBmaXJp
bmdMZW5ndGggKSB7Ci0gICAgZmlyaW5nTGVuZ3RoLS07Ci0gICAgfQotICAgIGlmICggaW5kZXgg
PD0gZmlyaW5nSW5kZXggKSB7Ci0gICAgZmlyaW5nSW5kZXgtLTsKLSAgICB9Ci0gICAgfQotICAg
IH0KLSAgICB9KTsKLSAgICB9Ci0gICAgcmV0dXJuIHRoaXM7Ci0gICAgfSwKLSAgICAvLyBDaGVj
ayBpZiBhIGdpdmVuIGNhbGxiYWNrIGlzIGluIHRoZSBsaXN0LgotICAgIC8vIElmIG5vIGFyZ3Vt
ZW50IGlzIGdpdmVuLCByZXR1cm4gd2hldGhlciBvciBub3QgbGlzdCBoYXMgY2FsbGJhY2tzIGF0
dGFjaGVkLgotICAgIGhhczogZnVuY3Rpb24oIGZuICkgewotICAgIHJldHVybiBmbiA/IGpRdWVy
eS5pbkFycmF5KCBmbiwgbGlzdCApID4gLTEgOiAhISggbGlzdCAmJiBsaXN0Lmxlbmd0aCApOwot
ICAgIH0sCi0gICAgLy8gUmVtb3ZlIGFsbCBjYWxsYmFja3MgZnJvbSB0aGUgbGlzdAotICAgIGVt
cHR5OiBmdW5jdGlvbigpIHsKLSAgICBsaXN0ID0gW107Ci0gICAgcmV0dXJuIHRoaXM7Ci0gICAg
fSwKLSAgICAvLyBIYXZlIHRoZSBsaXN0IGRvIG5vdGhpbmcgYW55bW9yZQotICAgIGRpc2FibGU6
IGZ1bmN0aW9uKCkgewotICAgIGxpc3QgPSBzdGFjayA9IG1lbW9yeSA9IHVuZGVmaW5lZDsKLSAg
ICByZXR1cm4gdGhpczsKLSAgICB9LAotICAgIC8vIElzIGl0IGRpc2FibGVkPwotICAgIGRpc2Fi
bGVkOiBmdW5jdGlvbigpIHsKLSAgICByZXR1cm4gIWxpc3Q7Ci0gICAgfSwKLSAgICAvLyBMb2Nr
IHRoZSBsaXN0IGluIGl0cyBjdXJyZW50IHN0YXRlCi0gICAgbG9jazogZnVuY3Rpb24oKSB7Ci0g
ICAgc3RhY2sgPSB1bmRlZmluZWQ7Ci0gICAgaWYgKCAhbWVtb3J5ICkgewotICAgIHNlbGYuZGlz
YWJsZSgpOwotICAgIH0KLSAgICByZXR1cm4gdGhpczsKLSAgICB9LAotICAgIC8vIElzIGl0IGxv
Y2tlZD8KLSAgICBsb2NrZWQ6IGZ1bmN0aW9uKCkgewotICAgIHJldHVybiAhc3RhY2s7Ci0gICAg
fSwKLSAgICAvLyBDYWxsIGFsbCBjYWxsYmFja3Mgd2l0aCB0aGUgZ2l2ZW4gY29udGV4dCBhbmQg
YXJndW1lbnRzCi0gICAgZmlyZVdpdGg6IGZ1bmN0aW9uKCBjb250ZXh0LCBhcmdzICkgewotICAg
IGFyZ3MgPSBhcmdzIHx8IFtdOwotICAgIGFyZ3MgPSBbIGNvbnRleHQsIGFyZ3Muc2xpY2UgPyBh
cmdzLnNsaWNlKCkgOiBhcmdzIF07Ci0gICAgaWYgKCBsaXN0ICYmICggIWZpcmVkIHx8IHN0YWNr
ICkgKSB7Ci0gICAgaWYgKCBmaXJpbmcgKSB7Ci0gICAgc3RhY2sucHVzaCggYXJncyApOwotICAg
IH0gZWxzZSB7Ci0gICAgZmlyZSggYXJncyApOwotICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHRo
aXM7Ci0gICAgfSwKLSAgICAvLyBDYWxsIGFsbCB0aGUgY2FsbGJhY2tzIHdpdGggdGhlIGdpdmVu
IGFyZ3VtZW50cwotICAgIGZpcmU6IGZ1bmN0aW9uKCkgewotICAgIHNlbGYuZmlyZVdpdGgoIHRo
aXMsIGFyZ3VtZW50cyApOwotICAgIHJldHVybiB0aGlzOwotICAgIH0sCi0gICAgLy8gVG8ga25v
dyBpZiB0aGUgY2FsbGJhY2tzIGhhdmUgYWxyZWFkeSBiZWVuIGNhbGxlZCBhdCBsZWFzdCBvbmNl
Ci0gICAgZmlyZWQ6IGZ1bmN0aW9uKCkgewotICAgIHJldHVybiAhIWZpcmVkOwotICAgIH0KLSAg
ICB9OwotCi0gICAgcmV0dXJuIHNlbGY7Ci19OwotalF1ZXJ5LmV4dGVuZCh7Ci0KLSAgICBEZWZl
cnJlZDogZnVuY3Rpb24oIGZ1bmMgKSB7Ci0gICAgdmFyIHR1cGxlcyA9IFsKLSAgICAvLyBhY3Rp
b24sIGFkZCBsaXN0ZW5lciwgbGlzdGVuZXIgbGlzdCwgZmluYWwgc3RhdGUKLSAgICBbICJyZXNv
bHZlIiwgImRvbmUiLCBqUXVlcnkuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLCAicmVzb2x2ZWQi
IF0sCi0gICAgWyAicmVqZWN0IiwgImZhaWwiLCBqUXVlcnkuQ2FsbGJhY2tzKCJvbmNlIG1lbW9y
eSIpLCAicmVqZWN0ZWQiIF0sCi0gICAgWyAibm90aWZ5IiwgInByb2dyZXNzIiwgalF1ZXJ5LkNh
bGxiYWNrcygibWVtb3J5IikgXQotICAgIF0sCi0gICAgc3RhdGUgPSAicGVuZGluZyIsCi0gICAg
cHJvbWlzZSA9IHsKLSAgICBzdGF0ZTogZnVuY3Rpb24oKSB7Ci0gICAgcmV0dXJuIHN0YXRlOwot
ICAgIH0sCi0gICAgYWx3YXlzOiBmdW5jdGlvbigpIHsKLSAgICBkZWZlcnJlZC5kb25lKCBhcmd1
bWVudHMgKS5mYWlsKCBhcmd1bWVudHMgKTsKLSAgICByZXR1cm4gdGhpczsKLSAgICB9LAotICAg
IHRoZW46IGZ1bmN0aW9uKCAvKiBmbkRvbmUsIGZuRmFpbCwgZm5Qcm9ncmVzcyAqLyApIHsKLSAg
ICB2YXIgZm5zID0gYXJndW1lbnRzOwotICAgIHJldHVybiBqUXVlcnkuRGVmZXJyZWQoZnVuY3Rp
b24oIG5ld0RlZmVyICkgewotICAgIGpRdWVyeS5lYWNoKCB0dXBsZXMsIGZ1bmN0aW9uKCBpLCB0
dXBsZSApIHsKLSAgICB2YXIgYWN0aW9uID0gdHVwbGVbIDAgXSwKLSAgICBmbiA9IGpRdWVyeS5p
c0Z1bmN0aW9uKCBmbnNbIGkgXSApICYmIGZuc1sgaSBdOwotICAgIC8vIGRlZmVycmVkWyBkb25l
IHwgZmFpbCB8IHByb2dyZXNzIF0gZm9yIGZvcndhcmRpbmcgYWN0aW9ucyB0byBuZXdEZWZlcgot
ICAgIGRlZmVycmVkWyB0dXBsZVsxXSBdKGZ1bmN0aW9uKCkgewotICAgIHZhciByZXR1cm5lZCA9
IGZuICYmIGZuLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKTsKLSAgICBpZiAoIHJldHVybmVkICYm
IGpRdWVyeS5pc0Z1bmN0aW9uKCByZXR1cm5lZC5wcm9taXNlICkgKSB7Ci0gICAgcmV0dXJuZWQu
cHJvbWlzZSgpCi0gICAgLmRvbmUoIG5ld0RlZmVyLnJlc29sdmUgKQotICAgIC5mYWlsKCBuZXdE
ZWZlci5yZWplY3QgKQotICAgIC5wcm9ncmVzcyggbmV3RGVmZXIubm90aWZ5ICk7Ci0gICAgfSBl
bHNlIHsKLSAgICBuZXdEZWZlclsgYWN0aW9uICsgIldpdGgiIF0oIHRoaXMgPT09IHByb21pc2Ug
PyBuZXdEZWZlci5wcm9taXNlKCkgOiB0aGlzLCBmbiA/IFsgcmV0dXJuZWQgXSA6IGFyZ3VtZW50
cyApOwotICAgIH0KLSAgICB9KTsKLSAgICB9KTsKLSAgICBmbnMgPSBudWxsOwotICAgIH0pLnBy
b21pc2UoKTsKLSAgICB9LAotICAgIC8vIEdldCBhIHByb21pc2UgZm9yIHRoaXMgZGVmZXJyZWQK
LSAgICAvLyBJZiBvYmogaXMgcHJvdmlkZWQsIHRoZSBwcm9taXNlIGFzcGVjdCBpcyBhZGRlZCB0
byB0aGUgb2JqZWN0Ci0gICAgcHJvbWlzZTogZnVuY3Rpb24oIG9iaiApIHsKLSAgICByZXR1cm4g
b2JqICE9IG51bGwgPyBqUXVlcnkuZXh0ZW5kKCBvYmosIHByb21pc2UgKSA6IHByb21pc2U7Ci0g
ICAgfQotICAgIH0sCi0gICAgZGVmZXJyZWQgPSB7fTsKLQotICAgIC8vIEtlZXAgcGlwZSBmb3Ig
YmFjay1jb21wYXQKLSAgICBwcm9taXNlLnBpcGUgPSBwcm9taXNlLnRoZW47Ci0KLSAgICAvLyBB
ZGQgbGlzdC1zcGVjaWZpYyBtZXRob2RzCi0gICAgalF1ZXJ5LmVhY2goIHR1cGxlcywgZnVuY3Rp
b24oIGksIHR1cGxlICkgewotICAgIHZhciBsaXN0ID0gdHVwbGVbIDIgXSwKLSAgICBzdGF0ZVN0
cmluZyA9IHR1cGxlWyAzIF07Ci0KLSAgICAvLyBwcm9taXNlWyBkb25lIHwgZmFpbCB8IHByb2dy
ZXNzIF0gPSBsaXN0LmFkZAotICAgIHByb21pc2VbIHR1cGxlWzFdIF0gPSBsaXN0LmFkZDsKLQot
ICAgIC8vIEhhbmRsZSBzdGF0ZQotICAgIGlmICggc3RhdGVTdHJpbmcgKSB7Ci0gICAgbGlzdC5h
ZGQoZnVuY3Rpb24oKSB7Ci0gICAgLy8gc3RhdGUgPSBbIHJlc29sdmVkIHwgcmVqZWN0ZWQgXQot
ICAgIHN0YXRlID0gc3RhdGVTdHJpbmc7Ci0KLSAgICAvLyBbIHJlamVjdF9saXN0IHwgcmVzb2x2
ZV9saXN0IF0uZGlzYWJsZTsgcHJvZ3Jlc3NfbGlzdC5sb2NrCi0gICAgfSwgdHVwbGVzWyBpIF4g
MSBdWyAyIF0uZGlzYWJsZSwgdHVwbGVzWyAyIF1bIDIgXS5sb2NrICk7Ci0gICAgfQotCi0gICAg
Ly8gZGVmZXJyZWRbIHJlc29sdmUgfCByZWplY3QgfCBub3RpZnkgXQotICAgIGRlZmVycmVkWyB0
dXBsZVswXSBdID0gZnVuY3Rpb24oKSB7Ci0gICAgZGVmZXJyZWRbIHR1cGxlWzBdICsgIldpdGgi
IF0oIHRoaXMgPT09IGRlZmVycmVkID8gcHJvbWlzZSA6IHRoaXMsIGFyZ3VtZW50cyApOwotICAg
IHJldHVybiB0aGlzOwotICAgIH07Ci0gICAgZGVmZXJyZWRbIHR1cGxlWzBdICsgIldpdGgiIF0g
PSBsaXN0LmZpcmVXaXRoOwotICAgIH0pOwotCi0gICAgLy8gTWFrZSB0aGUgZGVmZXJyZWQgYSBw
cm9taXNlCi0gICAgcHJvbWlzZS5wcm9taXNlKCBkZWZlcnJlZCApOwotCi0gICAgLy8gQ2FsbCBn
aXZlbiBmdW5jIGlmIGFueQotICAgIGlmICggZnVuYyApIHsKLSAgICBmdW5jLmNhbGwoIGRlZmVy
cmVkLCBkZWZlcnJlZCApOwotICAgIH0KLQotICAgIC8vIEFsbCBkb25lIQotICAgIHJldHVybiBk
ZWZlcnJlZDsKLSAgICB9LAotCi0gICAgLy8gRGVmZXJyZWQgaGVscGVyCi0gICAgd2hlbjogZnVu
Y3Rpb24oIHN1Ym9yZGluYXRlIC8qICwgLi4uLCBzdWJvcmRpbmF0ZU4gKi8gKSB7Ci0gICAgdmFy
IGkgPSAwLAotICAgIHJlc29sdmVWYWx1ZXMgPSBjb3JlX3NsaWNlLmNhbGwoIGFyZ3VtZW50cyAp
LAotICAgIGxlbmd0aCA9IHJlc29sdmVWYWx1ZXMubGVuZ3RoLAotCi0gICAgLy8gdGhlIGNvdW50
IG9mIHVuY29tcGxldGVkIHN1Ym9yZGluYXRlcwotICAgIHJlbWFpbmluZyA9IGxlbmd0aCAhPT0g
MSB8fCAoIHN1Ym9yZGluYXRlICYmIGpRdWVyeS5pc0Z1bmN0aW9uKCBzdWJvcmRpbmF0ZS5wcm9t
aXNlICkgKSA/IGxlbmd0aCA6IDAsCi0KLSAgICAvLyB0aGUgbWFzdGVyIERlZmVycmVkLiBJZiBy
ZXNvbHZlVmFsdWVzIGNvbnNpc3Qgb2Ygb25seSBhIHNpbmdsZSBEZWZlcnJlZCwganVzdCB1c2Ug
dGhhdC4KLSAgICBkZWZlcnJlZCA9IHJlbWFpbmluZyA9PT0gMSA/IHN1Ym9yZGluYXRlIDogalF1
ZXJ5LkRlZmVycmVkKCksCi0KLSAgICAvLyBVcGRhdGUgZnVuY3Rpb24gZm9yIGJvdGggcmVzb2x2
ZSBhbmQgcHJvZ3Jlc3MgdmFsdWVzCi0gICAgdXBkYXRlRnVuYyA9IGZ1bmN0aW9uKCBpLCBjb250
ZXh0cywgdmFsdWVzICkgewotICAgIHJldHVybiBmdW5jdGlvbiggdmFsdWUgKSB7Ci0gICAgY29u
dGV4dHNbIGkgXSA9IHRoaXM7Ci0gICAgdmFsdWVzWyBpIF0gPSBhcmd1bWVudHMubGVuZ3RoID4g
MSA/IGNvcmVfc2xpY2UuY2FsbCggYXJndW1lbnRzICkgOiB2YWx1ZTsKLSAgICBpZiggdmFsdWVz
ID09PSBwcm9ncmVzc1ZhbHVlcyApIHsKLSAgICBkZWZlcnJlZC5ub3RpZnlXaXRoKCBjb250ZXh0
cywgdmFsdWVzICk7Ci0gICAgfSBlbHNlIGlmICggISggLS1yZW1haW5pbmcgKSApIHsKLSAgICBk
ZWZlcnJlZC5yZXNvbHZlV2l0aCggY29udGV4dHMsIHZhbHVlcyApOwotICAgIH0KLSAgICB9Owot
ICAgIH0sCi0KLSAgICBwcm9ncmVzc1ZhbHVlcywgcHJvZ3Jlc3NDb250ZXh0cywgcmVzb2x2ZUNv
bnRleHRzOwotCi0gICAgLy8gYWRkIGxpc3RlbmVycyB0byBEZWZlcnJlZCBzdWJvcmRpbmF0ZXM7
IHRyZWF0IG90aGVycyBhcyByZXNvbHZlZAotICAgIGlmICggbGVuZ3RoID4gMSApIHsKLSAgICBw
cm9ncmVzc1ZhbHVlcyA9IG5ldyBBcnJheSggbGVuZ3RoICk7Ci0gICAgcHJvZ3Jlc3NDb250ZXh0
cyA9IG5ldyBBcnJheSggbGVuZ3RoICk7Ci0gICAgcmVzb2x2ZUNvbnRleHRzID0gbmV3IEFycmF5
KCBsZW5ndGggKTsKLSAgICBmb3IgKCA7IGkgPCBsZW5ndGg7IGkrKyApIHsKLSAgICBpZiAoIHJl
c29sdmVWYWx1ZXNbIGkgXSAmJiBqUXVlcnkuaXNGdW5jdGlvbiggcmVzb2x2ZVZhbHVlc1sgaSBd
LnByb21pc2UgKSApIHsKLSAgICByZXNvbHZlVmFsdWVzWyBpIF0ucHJvbWlzZSgpCi0gICAgLmRv
bmUoIHVwZGF0ZUZ1bmMoIGksIHJlc29sdmVDb250ZXh0cywgcmVzb2x2ZVZhbHVlcyApICkKLSAg
ICAuZmFpbCggZGVmZXJyZWQucmVqZWN0ICkKLSAgICAucHJvZ3Jlc3MoIHVwZGF0ZUZ1bmMoIGks
IHByb2dyZXNzQ29udGV4dHMsIHByb2dyZXNzVmFsdWVzICkgKTsKLSAgICB9IGVsc2UgewotICAg
IC0tcmVtYWluaW5nOwotICAgIH0KLSAgICB9Ci0gICAgfQotCi0gICAgLy8gaWYgd2UncmUgbm90
IHdhaXRpbmcgb24gYW55dGhpbmcsIHJlc29sdmUgdGhlIG1hc3RlcgotICAgIGlmICggIXJlbWFp
bmluZyApIHsKLSAgICBkZWZlcnJlZC5yZXNvbHZlV2l0aCggcmVzb2x2ZUNvbnRleHRzLCByZXNv
bHZlVmFsdWVzICk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2UoKTsKLSAg
ICB9Ci19KTsKLWpRdWVyeS5zdXBwb3J0ID0gKGZ1bmN0aW9uKCkgewotCi0gICAgdmFyIHN1cHBv
cnQsIGFsbCwgYSwKLSAgICBpbnB1dCwgc2VsZWN0LCBmcmFnbWVudCwKLSAgICBvcHQsIGV2ZW50
TmFtZSwgaXNTdXBwb3J0ZWQsIGksCi0gICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7Ci0KLSAgICAvLyBTZXR1cAotICAgIGRpdi5zZXRBdHRyaWJ1dGUoICJjbGFzc05hbWUi
LCAidCIgKTsKLSAgICBkaXYuaW5uZXJIVE1MID0gIiAgPGxpbmsvPjx0YWJsZT48L3RhYmxlPjxh
IGhyZWY9Jy9hJz5hPC9hPjxpbnB1dCB0eXBlPSdjaGVja2JveCcvPiI7Ci0KLSAgICAvLyBTdXBw
b3J0IHRlc3RzIHdvbid0IHJ1biBpbiBzb21lIGxpbWl0ZWQgb3Igbm9uLWJyb3dzZXIgZW52aXJv
bm1lbnRzCi0gICAgYWxsID0gZGl2LmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIik7Ci0gICAgYSA9
IGRpdi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYSIpWyAwIF07Ci0gICAgaWYgKCAhYWxsIHx8ICFh
IHx8ICFhbGwubGVuZ3RoICkgewotICAgIHJldHVybiB7fTsKLSAgICB9Ci0KLSAgICAvLyBGaXJz
dCBiYXRjaCBvZiB0ZXN0cwotICAgIHNlbGVjdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNl
bGVjdCIpOwotICAgIG9wdCA9IHNlbGVjdC5hcHBlbmRDaGlsZCggZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgib3B0aW9uIikgKTsKLSAgICBpbnB1dCA9IGRpdi5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
aW5wdXQiKVsgMCBdOwotCi0gICAgYS5zdHlsZS5jc3NUZXh0ID0gInRvcDoxcHg7ZmxvYXQ6bGVm
dDtvcGFjaXR5Oi41IjsKLSAgICBzdXBwb3J0ID0gewotICAgIC8vIFRlc3Qgc2V0QXR0cmlidXRl
IG9uIGNhbWVsQ2FzZSBjbGFzcy4gSWYgaXQgd29ya3MsIHdlIG5lZWQgYXR0ckZpeGVzIHdoZW4g
ZG9pbmcgZ2V0L3NldEF0dHJpYnV0ZSAoaWU2LzcpCi0gICAgZ2V0U2V0QXR0cmlidXRlOiBkaXYu
Y2xhc3NOYW1lICE9PSAidCIsCi0KLSAgICAvLyBJRSBzdHJpcHMgbGVhZGluZyB3aGl0ZXNwYWNl
IHdoZW4gLmlubmVySFRNTCBpcyB1c2VkCi0gICAgbGVhZGluZ1doaXRlc3BhY2U6IGRpdi5maXJz
dENoaWxkLm5vZGVUeXBlID09PSAzLAotCi0gICAgLy8gTWFrZSBzdXJlIHRoYXQgdGJvZHkgZWxl
bWVudHMgYXJlbid0IGF1dG9tYXRpY2FsbHkgaW5zZXJ0ZWQKLSAgICAvLyBJRSB3aWxsIGluc2Vy
dCB0aGVtIGludG8gZW1wdHkgdGFibGVzCi0gICAgdGJvZHk6ICFkaXYuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInRib2R5IikubGVuZ3RoLAotCi0gICAgLy8gTWFrZSBzdXJlIHRoYXQgbGluayBlbGVt
ZW50cyBnZXQgc2VyaWFsaXplZCBjb3JyZWN0bHkgYnkgaW5uZXJIVE1MCi0gICAgLy8gVGhpcyBy
ZXF1aXJlcyBhIHdyYXBwZXIgZWxlbWVudCBpbiBJRQotICAgIGh0bWxTZXJpYWxpemU6ICEhZGl2
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIikubGVuZ3RoLAotCi0gICAgLy8gR2V0IHRoZSBz
dHlsZSBpbmZvcm1hdGlvbiBmcm9tIGdldEF0dHJpYnV0ZQotICAgIC8vIChJRSB1c2VzIC5jc3NU
ZXh0IGluc3RlYWQpCi0gICAgc3R5bGU6IC90b3AvLnRlc3QoIGEuZ2V0QXR0cmlidXRlKCJzdHls
ZSIpICksCi0KLSAgICAvLyBNYWtlIHN1cmUgdGhhdCBVUkxzIGFyZW4ndCBtYW5pcHVsYXRlZAot
ICAgIC8vIChJRSBub3JtYWxpemVzIGl0IGJ5IGRlZmF1bHQpCi0gICAgaHJlZk5vcm1hbGl6ZWQ6
IGEuZ2V0QXR0cmlidXRlKCJocmVmIikgPT09ICIvYSIsCi0KLSAgICAvLyBNYWtlIHN1cmUgdGhh
dCBlbGVtZW50IG9wYWNpdHkgZXhpc3RzCi0gICAgLy8gKElFIHVzZXMgZmlsdGVyIGluc3RlYWQp
Ci0gICAgLy8gVXNlIGEgcmVnZXggdG8gd29yayBhcm91bmQgYSBXZWJLaXQgaXNzdWUuIFNlZSAj
NTE0NQotICAgIG9wYWNpdHk6IC9eMC41Ly50ZXN0KCBhLnN0eWxlLm9wYWNpdHkgKSwKLQotICAg
IC8vIFZlcmlmeSBzdHlsZSBmbG9hdCBleGlzdGVuY2UKLSAgICAvLyAoSUUgdXNlcyBzdHlsZUZs
b2F0IGluc3RlYWQgb2YgY3NzRmxvYXQpCi0gICAgY3NzRmxvYXQ6ICEhYS5zdHlsZS5jc3NGbG9h
dCwKLQotICAgIC8vIENoZWNrIHRoZSBkZWZhdWx0IGNoZWNrYm94L3JhZGlvIHZhbHVlICgiIiBv
biBXZWJLaXQ7ICJvbiIgZWxzZXdoZXJlKQotICAgIGNoZWNrT246ICEhaW5wdXQudmFsdWUsCi0K
LSAgICAvLyBNYWtlIHN1cmUgdGhhdCBhIHNlbGVjdGVkLWJ5LWRlZmF1bHQgb3B0aW9uIGhhcyBh
IHdvcmtpbmcgc2VsZWN0ZWQgcHJvcGVydHkuCi0gICAgLy8gKFdlYktpdCBkZWZhdWx0cyB0byBm
YWxzZSBpbnN0ZWFkIG9mIHRydWUsIElFIHRvbywgaWYgaXQncyBpbiBhbiBvcHRncm91cCkKLSAg
ICBvcHRTZWxlY3RlZDogb3B0LnNlbGVjdGVkLAotCi0gICAgLy8gVGVzdHMgZm9yIGVuY3R5cGUg
c3VwcG9ydCBvbiBhIGZvcm0gKCM2NzQzKQotICAgIGVuY3R5cGU6ICEhZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiZm9ybSIpLmVuY3R5cGUsCi0KLSAgICAvLyBNYWtlcyBzdXJlIGNsb25pbmcgYW4g
aHRtbDUgZWxlbWVudCBkb2VzIG5vdCBjYXVzZSBwcm9ibGVtcwotICAgIC8vIFdoZXJlIG91dGVy
SFRNTCBpcyB1bmRlZmluZWQsIHRoaXMgc3RpbGwgd29ya3MKLSAgICBodG1sNUNsb25lOiBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJuYXYiKS5jbG9uZU5vZGUoIHRydWUgKS5vdXRlckhUTUwgIT09
ICI8Om5hdj48LzpuYXY+IiwKLQotICAgIC8vIGpRdWVyeS5zdXBwb3J0LmJveE1vZGVsIERFUFJF
Q0FURUQgaW4gMS44IHNpbmNlIHdlIGRvbid0IHN1cHBvcnQgUXVpcmtzIE1vZGUKLSAgICBib3hN
b2RlbDogZG9jdW1lbnQuY29tcGF0TW9kZSA9PT0gIkNTUzFDb21wYXQiLAotCi0gICAgLy8gV2ls
bCBiZSBkZWZpbmVkIGxhdGVyCi0gICAgZGVsZXRlRXhwYW5kbzogdHJ1ZSwKLSAgICBub0Nsb25l
RXZlbnQ6IHRydWUsCi0gICAgaW5saW5lQmxvY2tOZWVkc0xheW91dDogZmFsc2UsCi0gICAgc2hy
aW5rV3JhcEJsb2NrczogZmFsc2UsCi0gICAgcmVsaWFibGVNYXJnaW5SaWdodDogdHJ1ZSwKLSAg
ICBib3hTaXppbmdSZWxpYWJsZTogdHJ1ZSwKLSAgICBwaXhlbFBvc2l0aW9uOiBmYWxzZQotICAg
IH07Ci0KLSAgICAvLyBNYWtlIHN1cmUgY2hlY2tlZCBzdGF0dXMgaXMgcHJvcGVybHkgY2xvbmVk
Ci0gICAgaW5wdXQuY2hlY2tlZCA9IHRydWU7Ci0gICAgc3VwcG9ydC5ub0Nsb25lQ2hlY2tlZCA9
IGlucHV0LmNsb25lTm9kZSggdHJ1ZSApLmNoZWNrZWQ7Ci0KLSAgICAvLyBNYWtlIHN1cmUgdGhh
dCB0aGUgb3B0aW9ucyBpbnNpZGUgZGlzYWJsZWQgc2VsZWN0cyBhcmVuJ3QgbWFya2VkIGFzIGRp
c2FibGVkCi0gICAgLy8gKFdlYktpdCBtYXJrcyB0aGVtIGFzIGRpc2FibGVkKQotICAgIHNlbGVj
dC5kaXNhYmxlZCA9IHRydWU7Ci0gICAgc3VwcG9ydC5vcHREaXNhYmxlZCA9ICFvcHQuZGlzYWJs
ZWQ7Ci0KLSAgICAvLyBTdXBwb3J0OiBJRTw5Ci0gICAgdHJ5IHsKLSAgICBkZWxldGUgZGl2LnRl
c3Q7Ci0gICAgfSBjYXRjaCggZSApIHsKLSAgICBzdXBwb3J0LmRlbGV0ZUV4cGFuZG8gPSBmYWxz
ZTsKLSAgICB9Ci0KLSAgICAvLyBDaGVjayBpZiB3ZSBjYW4gdHJ1c3QgZ2V0QXR0cmlidXRlKCJ2
YWx1ZSIpCi0gICAgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOwotICAg
IGlucHV0LnNldEF0dHJpYnV0ZSggInZhbHVlIiwgIiIgKTsKLSAgICBzdXBwb3J0LmlucHV0ID0g
aW5wdXQuZ2V0QXR0cmlidXRlKCAidmFsdWUiICkgPT09ICIiOwotCi0gICAgLy8gQ2hlY2sgaWYg
YW4gaW5wdXQgbWFpbnRhaW5zIGl0cyB2YWx1ZSBhZnRlciBiZWNvbWluZyBhIHJhZGlvCi0gICAg
aW5wdXQudmFsdWUgPSAidCI7Ci0gICAgaW5wdXQuc2V0QXR0cmlidXRlKCAidHlwZSIsICJyYWRp
byIgKTsKLSAgICBzdXBwb3J0LnJhZGlvVmFsdWUgPSBpbnB1dC52YWx1ZSA9PT0gInQiOwotCi0g
ICAgLy8gIzExMjE3IC0gV2ViS2l0IGxvc2VzIGNoZWNrIHdoZW4gdGhlIG5hbWUgaXMgYWZ0ZXIg
dGhlIGNoZWNrZWQgYXR0cmlidXRlCi0gICAgaW5wdXQuc2V0QXR0cmlidXRlKCAiY2hlY2tlZCIs
ICJ0IiApOwotICAgIGlucHV0LnNldEF0dHJpYnV0ZSggIm5hbWUiLCAidCIgKTsKLQotICAgIGZy
YWdtZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwotICAgIGZyYWdtZW50
LmFwcGVuZENoaWxkKCBpbnB1dCApOwotCi0gICAgLy8gQ2hlY2sgaWYgYSBkaXNjb25uZWN0ZWQg
Y2hlY2tib3ggd2lsbCByZXRhaW4gaXRzIGNoZWNrZWQKLSAgICAvLyB2YWx1ZSBvZiB0cnVlIGFm
dGVyIGFwcGVuZGVkIHRvIHRoZSBET00gKElFNi83KQotICAgIHN1cHBvcnQuYXBwZW5kQ2hlY2tl
ZCA9IGlucHV0LmNoZWNrZWQ7Ci0KLSAgICAvLyBXZWJLaXQgZG9lc24ndCBjbG9uZSBjaGVja2Vk
IHN0YXRlIGNvcnJlY3RseSBpbiBmcmFnbWVudHMKLSAgICBzdXBwb3J0LmNoZWNrQ2xvbmUgPSBm
cmFnbWVudC5jbG9uZU5vZGUoIHRydWUgKS5jbG9uZU5vZGUoIHRydWUgKS5sYXN0Q2hpbGQuY2hl
Y2tlZDsKLQotICAgIC8vIFN1cHBvcnQ6IElFPDkKLSAgICAvLyBPcGVyYSBkb2VzIG5vdCBjbG9u
ZSBldmVudHMgKGFuZCB0eXBlb2YgZGl2LmF0dGFjaEV2ZW50ID09PSB1bmRlZmluZWQpLgotICAg
IC8vIElFOS0xMCBjbG9uZXMgZXZlbnRzIGJvdW5kIHZpYSBhdHRhY2hFdmVudCwgYnV0IHRoZXkg
ZG9uJ3QgdHJpZ2dlciB3aXRoIC5jbGljaygpCi0gICAgaWYgKCBkaXYuYXR0YWNoRXZlbnQgKSB7
Ci0gICAgZGl2LmF0dGFjaEV2ZW50KCAib25jbGljayIsIGZ1bmN0aW9uKCkgewotICAgIHN1cHBv
cnQubm9DbG9uZUV2ZW50ID0gZmFsc2U7Ci0gICAgfSk7Ci0KLSAgICBkaXYuY2xvbmVOb2RlKCB0
cnVlICkuY2xpY2soKTsKLSAgICB9Ci0KLSAgICAvLyBTdXBwb3J0OiBJRTw5IChsYWNrIHN1Ym1p
dC9jaGFuZ2UgYnViYmxlKSwgRmlyZWZveCAxNysgKGxhY2sgZm9jdXNpbiBldmVudCkKLSAgICAv
LyBCZXdhcmUgb2YgQ1NQIHJlc3RyaWN0aW9ucyAoaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5v
cmcvZW4vU2VjdXJpdHkvQ1NQKSwgdGVzdC9jc3AucGhwCi0gICAgZm9yICggaSBpbiB7IHN1Ym1p
dDogdHJ1ZSwgY2hhbmdlOiB0cnVlLCBmb2N1c2luOiB0cnVlIH0pIHsKLSAgICBkaXYuc2V0QXR0
cmlidXRlKCBldmVudE5hbWUgPSAib24iICsgaSwgInQiICk7Ci0KLSAgICBzdXBwb3J0WyBpICsg
IkJ1YmJsZXMiIF0gPSBldmVudE5hbWUgaW4gd2luZG93IHx8IGRpdi5hdHRyaWJ1dGVzWyBldmVu
dE5hbWUgXS5leHBhbmRvID09PSBmYWxzZTsKLSAgICB9Ci0KLSAgICBkaXYuc3R5bGUuYmFja2dy
b3VuZENsaXAgPSAiY29udGVudC1ib3giOwotICAgIGRpdi5jbG9uZU5vZGUoIHRydWUgKS5zdHls
ZS5iYWNrZ3JvdW5kQ2xpcCA9ICIiOwotICAgIHN1cHBvcnQuY2xlYXJDbG9uZVN0eWxlID0gZGl2
LnN0eWxlLmJhY2tncm91bmRDbGlwID09PSAiY29udGVudC1ib3giOwotCi0gICAgLy8gUnVuIHRl
c3RzIHRoYXQgbmVlZCBhIGJvZHkgYXQgZG9jIHJlYWR5Ci0gICAgalF1ZXJ5KGZ1bmN0aW9uKCkg
ewotICAgIHZhciBjb250YWluZXIsIG1hcmdpbkRpdiwgdGRzLAotICAgIGRpdlJlc2V0ID0gInBh
ZGRpbmc6MDttYXJnaW46MDtib3JkZXI6MDtkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Y29udGVu
dC1ib3g7LW1vei1ib3gtc2l6aW5nOmNvbnRlbnQtYm94Oy13ZWJraXQtYm94LXNpemluZzpjb250
ZW50LWJveDsiLAotICAgIGJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9k
eSIpWzBdOwotCi0gICAgaWYgKCAhYm9keSApIHsKLSAgICAvLyBSZXR1cm4gZm9yIGZyYW1lc2V0
IGRvY3MgdGhhdCBkb24ndCBoYXZlIGEgYm9keQotICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBj
b250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICBjb250YWluZXIu
c3R5bGUuY3NzVGV4dCA9ICJib3JkZXI6MDt3aWR0aDowO2hlaWdodDowO3Bvc2l0aW9uOmFic29s
dXRlO3RvcDowO2xlZnQ6LTk5OTlweDttYXJnaW4tdG9wOjFweCI7Ci0KLSAgICBib2R5LmFwcGVu
ZENoaWxkKCBjb250YWluZXIgKS5hcHBlbmRDaGlsZCggZGl2ICk7Ci0KLSAgICAvLyBTdXBwb3J0
OiBJRTgKLSAgICAvLyBDaGVjayBpZiB0YWJsZSBjZWxscyBzdGlsbCBoYXZlIG9mZnNldFdpZHRo
L0hlaWdodCB3aGVuIHRoZXkgYXJlIHNldAotICAgIC8vIHRvIGRpc3BsYXk6bm9uZSBhbmQgdGhl
cmUgYXJlIHN0aWxsIG90aGVyIHZpc2libGUgdGFibGUgY2VsbHMgaW4gYQotICAgIC8vIHRhYmxl
IHJvdzsgaWYgc28sIG9mZnNldFdpZHRoL0hlaWdodCBhcmUgbm90IHJlbGlhYmxlIGZvciB1c2Ug
d2hlbgotICAgIC8vIGRldGVybWluaW5nIGlmIGFuIGVsZW1lbnQgaGFzIGJlZW4gaGlkZGVuIGRp
cmVjdGx5IHVzaW5nCi0gICAgLy8gZGlzcGxheTpub25lIChpdCBpcyBzdGlsbCBzYWZlIHRvIHVz
ZSBvZmZzZXRzIGlmIGEgcGFyZW50IGVsZW1lbnQgaXMKLSAgICAvLyBoaWRkZW47IGRvbiBzYWZl
dHkgZ29nZ2xlcyBhbmQgc2VlIGJ1ZyAjNDUxMiBmb3IgbW9yZSBpbmZvcm1hdGlvbikuCi0gICAg
ZGl2LmlubmVySFRNTCA9ICI8dGFibGU+PHRyPjx0ZD48L3RkPjx0ZD50PC90ZD48L3RyPjwvdGFi
bGU+IjsKLSAgICB0ZHMgPSBkaXYuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRkIik7Ci0gICAgdGRz
WyAwIF0uc3R5bGUuY3NzVGV4dCA9ICJwYWRkaW5nOjA7bWFyZ2luOjA7Ym9yZGVyOjA7ZGlzcGxh
eTpub25lIjsKLSAgICBpc1N1cHBvcnRlZCA9ICggdGRzWyAwIF0ub2Zmc2V0SGVpZ2h0ID09PSAw
ICk7Ci0KLSAgICB0ZHNbIDAgXS5zdHlsZS5kaXNwbGF5ID0gIiI7Ci0gICAgdGRzWyAxIF0uc3R5
bGUuZGlzcGxheSA9ICJub25lIjsKLQotICAgIC8vIFN1cHBvcnQ6IElFOAotICAgIC8vIENoZWNr
IGlmIGVtcHR5IHRhYmxlIGNlbGxzIHN0aWxsIGhhdmUgb2Zmc2V0V2lkdGgvSGVpZ2h0Ci0gICAg
c3VwcG9ydC5yZWxpYWJsZUhpZGRlbk9mZnNldHMgPSBpc1N1cHBvcnRlZCAmJiAoIHRkc1sgMCBd
Lm9mZnNldEhlaWdodCA9PT0gMCApOwotCi0gICAgLy8gQ2hlY2sgYm94LXNpemluZyBhbmQgbWFy
Z2luIGJlaGF2aW9yCi0gICAgZGl2LmlubmVySFRNTCA9ICIiOwotICAgIGRpdi5zdHlsZS5jc3NU
ZXh0ID0gImJveC1zaXppbmc6Ym9yZGVyLWJveDstbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDst
d2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDtwYWRkaW5nOjFweDtib3JkZXI6MXB4O2Rpc3Bs
YXk6YmxvY2s7d2lkdGg6NHB4O21hcmdpbi10b3A6MSU7cG9zaXRpb246YWJzb2x1dGU7dG9wOjEl
OyI7Ci0gICAgc3VwcG9ydC5ib3hTaXppbmcgPSAoIGRpdi5vZmZzZXRXaWR0aCA9PT0gNCApOwot
ICAgIHN1cHBvcnQuZG9lc05vdEluY2x1ZGVNYXJnaW5JbkJvZHlPZmZzZXQgPSAoIGJvZHkub2Zm
c2V0VG9wICE9PSAxICk7Ci0KLSAgICAvLyBVc2Ugd2luZG93LmdldENvbXB1dGVkU3R5bGUgYmVj
YXVzZSBqc2RvbSBvbiBub2RlLmpzIHdpbGwgYnJlYWsgd2l0aG91dCBpdC4KLSAgICBpZiAoIHdp
bmRvdy5nZXRDb21wdXRlZFN0eWxlICkgewotICAgIHN1cHBvcnQucGl4ZWxQb3NpdGlvbiA9ICgg
d2luZG93LmdldENvbXB1dGVkU3R5bGUoIGRpdiwgbnVsbCApIHx8IHt9ICkudG9wICE9PSAiMSUi
OwotICAgIHN1cHBvcnQuYm94U2l6aW5nUmVsaWFibGUgPSAoIHdpbmRvdy5nZXRDb21wdXRlZFN0
eWxlKCBkaXYsIG51bGwgKSB8fCB7IHdpZHRoOiAiNHB4IiB9ICkud2lkdGggPT09ICI0cHgiOwot
Ci0gICAgLy8gQ2hlY2sgaWYgZGl2IHdpdGggZXhwbGljaXQgd2lkdGggYW5kIG5vIG1hcmdpbi1y
aWdodCBpbmNvcnJlY3RseQotICAgIC8vIGdldHMgY29tcHV0ZWQgbWFyZ2luLXJpZ2h0IGJhc2Vk
IG9uIHdpZHRoIG9mIGNvbnRhaW5lci4gKCMzMzMzKQotICAgIC8vIEZhaWxzIGluIFdlYktpdCBi
ZWZvcmUgRmViIDIwMTEgbmlnaHRsaWVzCi0gICAgLy8gV2ViS2l0IEJ1ZyAxMzM0MyAtIGdldENv
bXB1dGVkU3R5bGUgcmV0dXJucyB3cm9uZyB2YWx1ZSBmb3IgbWFyZ2luLXJpZ2h0Ci0gICAgbWFy
Z2luRGl2ID0gZGl2LmFwcGVuZENoaWxkKCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSAp
OwotICAgIG1hcmdpbkRpdi5zdHlsZS5jc3NUZXh0ID0gZGl2LnN0eWxlLmNzc1RleHQgPSBkaXZS
ZXNldDsKLSAgICBtYXJnaW5EaXYuc3R5bGUubWFyZ2luUmlnaHQgPSBtYXJnaW5EaXYuc3R5bGUu
d2lkdGggPSAiMCI7Ci0gICAgZGl2LnN0eWxlLndpZHRoID0gIjFweCI7Ci0KLSAgICBzdXBwb3J0
LnJlbGlhYmxlTWFyZ2luUmlnaHQgPQotICAgICFwYXJzZUZsb2F0KCAoIHdpbmRvdy5nZXRDb21w
dXRlZFN0eWxlKCBtYXJnaW5EaXYsIG51bGwgKSB8fCB7fSApLm1hcmdpblJpZ2h0ICk7Ci0gICAg
fQotCi0gICAgaWYgKCB0eXBlb2YgZGl2LnN0eWxlLnpvb20gIT09IGNvcmVfc3RydW5kZWZpbmVk
ICkgewotICAgIC8vIFN1cHBvcnQ6IElFPDgKLSAgICAvLyBDaGVjayBpZiBuYXRpdmVseSBibG9j
ay1sZXZlbCBlbGVtZW50cyBhY3QgbGlrZSBpbmxpbmUtYmxvY2sKLSAgICAvLyBlbGVtZW50cyB3
aGVuIHNldHRpbmcgdGhlaXIgZGlzcGxheSB0byAnaW5saW5lJyBhbmQgZ2l2aW5nCi0gICAgLy8g
dGhlbSBsYXlvdXQKLSAgICBkaXYuaW5uZXJIVE1MID0gIiI7Ci0gICAgZGl2LnN0eWxlLmNzc1Rl
eHQgPSBkaXZSZXNldCArICJ3aWR0aDoxcHg7cGFkZGluZzoxcHg7ZGlzcGxheTppbmxpbmU7em9v
bToxIjsKLSAgICBzdXBwb3J0LmlubGluZUJsb2NrTmVlZHNMYXlvdXQgPSAoIGRpdi5vZmZzZXRX
aWR0aCA9PT0gMyApOwotCi0gICAgLy8gU3VwcG9ydDogSUU2Ci0gICAgLy8gQ2hlY2sgaWYgZWxl
bWVudHMgd2l0aCBsYXlvdXQgc2hyaW5rLXdyYXAgdGhlaXIgY2hpbGRyZW4KLSAgICBkaXYuc3R5
bGUuZGlzcGxheSA9ICJibG9jayI7Ci0gICAgZGl2LmlubmVySFRNTCA9ICI8ZGl2PjwvZGl2PiI7
Ci0gICAgZGl2LmZpcnN0Q2hpbGQuc3R5bGUud2lkdGggPSAiNXB4IjsKLSAgICBzdXBwb3J0LnNo
cmlua1dyYXBCbG9ja3MgPSAoIGRpdi5vZmZzZXRXaWR0aCAhPT0gMyApOwotCi0gICAgaWYgKCBz
dXBwb3J0LmlubGluZUJsb2NrTmVlZHNMYXlvdXQgKSB7Ci0gICAgLy8gUHJldmVudCBJRSA2IGZy
b20gYWZmZWN0aW5nIGxheW91dCBmb3IgcG9zaXRpb25lZCBlbGVtZW50cyAjMTEwNDgKLSAgICAv
LyBQcmV2ZW50IElFIGZyb20gc2hyaW5raW5nIHRoZSBib2R5IGluIElFIDcgbW9kZSAjMTI4NjkK
LSAgICAvLyBTdXBwb3J0OiBJRTw4Ci0gICAgYm9keS5zdHlsZS56b29tID0gMTsKLSAgICB9Ci0g
ICAgfQotCi0gICAgYm9keS5yZW1vdmVDaGlsZCggY29udGFpbmVyICk7Ci0KLSAgICAvLyBOdWxs
IGVsZW1lbnRzIHRvIGF2b2lkIGxlYWtzIGluIElFCi0gICAgY29udGFpbmVyID0gZGl2ID0gdGRz
ID0gbWFyZ2luRGl2ID0gbnVsbDsKLSAgICB9KTsKLQotICAgIC8vIE51bGwgZWxlbWVudHMgdG8g
YXZvaWQgbGVha3MgaW4gSUUKLSAgICBhbGwgPSBzZWxlY3QgPSBmcmFnbWVudCA9IG9wdCA9IGEg
PSBpbnB1dCA9IG51bGw7Ci0KLSAgICByZXR1cm4gc3VwcG9ydDsKLX0pKCk7Ci0KLXZhciByYnJh
Y2UgPSAvKD86XHtbXHNcU10qXH18XFtbXHNcU10qXF0pJC8sCi0gICAgcm11bHRpRGFzaCA9IC8o
W0EtWl0pL2c7Ci0KLWZ1bmN0aW9uIGludGVybmFsRGF0YSggZWxlbSwgbmFtZSwgZGF0YSwgcHZ0
IC8qIEludGVybmFsIFVzZSBPbmx5ICovICl7Ci0gICAgaWYgKCAhalF1ZXJ5LmFjY2VwdERhdGEo
IGVsZW0gKSApIHsKLSAgICByZXR1cm47Ci0gICAgfQotCi0gICAgdmFyIHRoaXNDYWNoZSwgcmV0
LAotICAgIGludGVybmFsS2V5ID0galF1ZXJ5LmV4cGFuZG8sCi0gICAgZ2V0QnlOYW1lID0gdHlw
ZW9mIG5hbWUgPT09ICJzdHJpbmciLAotCi0gICAgLy8gV2UgaGF2ZSB0byBoYW5kbGUgRE9NIG5v
ZGVzIGFuZCBKUyBvYmplY3RzIGRpZmZlcmVudGx5IGJlY2F1c2UgSUU2LTcKLSAgICAvLyBjYW4n
dCBHQyBvYmplY3QgcmVmZXJlbmNlcyBwcm9wZXJseSBhY3Jvc3MgdGhlIERPTS1KUyBib3VuZGFy
eQotICAgIGlzTm9kZSA9IGVsZW0ubm9kZVR5cGUsCi0KLSAgICAvLyBPbmx5IERPTSBub2RlcyBu
ZWVkIHRoZSBnbG9iYWwgalF1ZXJ5IGNhY2hlOyBKUyBvYmplY3QgZGF0YSBpcwotICAgIC8vIGF0
dGFjaGVkIGRpcmVjdGx5IHRvIHRoZSBvYmplY3Qgc28gR0MgY2FuIG9jY3VyIGF1dG9tYXRpY2Fs
bHkKLSAgICBjYWNoZSA9IGlzTm9kZSA/IGpRdWVyeS5jYWNoZSA6IGVsZW0sCi0KLSAgICAvLyBP
bmx5IGRlZmluaW5nIGFuIElEIGZvciBKUyBvYmplY3RzIGlmIGl0cyBjYWNoZSBhbHJlYWR5IGV4
aXN0cyBhbGxvd3MKLSAgICAvLyB0aGUgY29kZSB0byBzaG9ydGN1dCBvbiB0aGUgc2FtZSBwYXRo
IGFzIGEgRE9NIG5vZGUgd2l0aCBubyBjYWNoZQotICAgIGlkID0gaXNOb2RlID8gZWxlbVsgaW50
ZXJuYWxLZXkgXSA6IGVsZW1bIGludGVybmFsS2V5IF0gJiYgaW50ZXJuYWxLZXk7Ci0KLSAgICAv
LyBBdm9pZCBkb2luZyBhbnkgbW9yZSB3b3JrIHRoYW4gd2UgbmVlZCB0byB3aGVuIHRyeWluZyB0
byBnZXQgZGF0YSBvbiBhbgotICAgIC8vIG9iamVjdCB0aGF0IGhhcyBubyBkYXRhIGF0IGFsbAot
ICAgIGlmICggKCFpZCB8fCAhY2FjaGVbaWRdIHx8ICghcHZ0ICYmICFjYWNoZVtpZF0uZGF0YSkp
ICYmIGdldEJ5TmFtZSAmJiBkYXRhID09PSB1bmRlZmluZWQgKSB7Ci0gICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGlmICggIWlkICkgewotICAgIC8vIE9ubHkgRE9NIG5vZGVzIG5lZWQgYSBuZXcg
dW5pcXVlIElEIGZvciBlYWNoIGVsZW1lbnQgc2luY2UgdGhlaXIgZGF0YQotICAgIC8vIGVuZHMg
dXAgaW4gdGhlIGdsb2JhbCBjYWNoZQotICAgIGlmICggaXNOb2RlICkgewotICAgIGVsZW1bIGlu
dGVybmFsS2V5IF0gPSBpZCA9IGNvcmVfZGVsZXRlZElkcy5wb3AoKSB8fCBqUXVlcnkuZ3VpZCsr
OwotICAgIH0gZWxzZSB7Ci0gICAgaWQgPSBpbnRlcm5hbEtleTsKLSAgICB9Ci0gICAgfQotCi0g
ICAgaWYgKCAhY2FjaGVbIGlkIF0gKSB7Ci0gICAgY2FjaGVbIGlkIF0gPSB7fTsKLQotICAgIC8v
IEF2b2lkcyBleHBvc2luZyBqUXVlcnkgbWV0YWRhdGEgb24gcGxhaW4gSlMgb2JqZWN0cyB3aGVu
IHRoZSBvYmplY3QKLSAgICAvLyBpcyBzZXJpYWxpemVkIHVzaW5nIEpTT04uc3RyaW5naWZ5Ci0g
ICAgaWYgKCAhaXNOb2RlICkgewotICAgIGNhY2hlWyBpZCBdLnRvSlNPTiA9IGpRdWVyeS5ub29w
OwotICAgIH0KLSAgICB9Ci0KLSAgICAvLyBBbiBvYmplY3QgY2FuIGJlIHBhc3NlZCB0byBqUXVl
cnkuZGF0YSBpbnN0ZWFkIG9mIGEga2V5L3ZhbHVlIHBhaXI7IHRoaXMgZ2V0cwotICAgIC8vIHNo
YWxsb3cgY29waWVkIG92ZXIgb250byB0aGUgZXhpc3RpbmcgY2FjaGUKLSAgICBpZiAoIHR5cGVv
ZiBuYW1lID09PSAib2JqZWN0IiB8fCB0eXBlb2YgbmFtZSA9PT0gImZ1bmN0aW9uIiApIHsKLSAg
ICBpZiAoIHB2dCApIHsKLSAgICBjYWNoZVsgaWQgXSA9IGpRdWVyeS5leHRlbmQoIGNhY2hlWyBp
ZCBdLCBuYW1lICk7Ci0gICAgfSBlbHNlIHsKLSAgICBjYWNoZVsgaWQgXS5kYXRhID0galF1ZXJ5
LmV4dGVuZCggY2FjaGVbIGlkIF0uZGF0YSwgbmFtZSApOwotICAgIH0KLSAgICB9Ci0KLSAgICB0
aGlzQ2FjaGUgPSBjYWNoZVsgaWQgXTsKLQotICAgIC8vIGpRdWVyeSBkYXRhKCkgaXMgc3RvcmVk
IGluIGEgc2VwYXJhdGUgb2JqZWN0IGluc2lkZSB0aGUgb2JqZWN0J3MgaW50ZXJuYWwgZGF0YQot
ICAgIC8vIGNhY2hlIGluIG9yZGVyIHRvIGF2b2lkIGtleSBjb2xsaXNpb25zIGJldHdlZW4gaW50
ZXJuYWwgZGF0YSBhbmQgdXNlci1kZWZpbmVkCi0gICAgLy8gZGF0YS4KLSAgICBpZiAoICFwdnQg
KSB7Ci0gICAgaWYgKCAhdGhpc0NhY2hlLmRhdGEgKSB7Ci0gICAgdGhpc0NhY2hlLmRhdGEgPSB7
fTsKLSAgICB9Ci0KLSAgICB0aGlzQ2FjaGUgPSB0aGlzQ2FjaGUuZGF0YTsKLSAgICB9Ci0KLSAg
ICBpZiAoIGRhdGEgIT09IHVuZGVmaW5lZCApIHsKLSAgICB0aGlzQ2FjaGVbIGpRdWVyeS5jYW1l
bENhc2UoIG5hbWUgKSBdID0gZGF0YTsKLSAgICB9Ci0KLSAgICAvLyBDaGVjayBmb3IgYm90aCBj
b252ZXJ0ZWQtdG8tY2FtZWwgYW5kIG5vbi1jb252ZXJ0ZWQgZGF0YSBwcm9wZXJ0eSBuYW1lcwot
ICAgIC8vIElmIGEgZGF0YSBwcm9wZXJ0eSB3YXMgc3BlY2lmaWVkCi0gICAgaWYgKCBnZXRCeU5h
bWUgKSB7Ci0KLSAgICAvLyBGaXJzdCBUcnkgdG8gZmluZCBhcy1pcyBwcm9wZXJ0eSBkYXRhCi0g
ICAgcmV0ID0gdGhpc0NhY2hlWyBuYW1lIF07Ci0KLSAgICAvLyBUZXN0IGZvciBudWxsfHVuZGVm
aW5lZCBwcm9wZXJ0eSBkYXRhCi0gICAgaWYgKCByZXQgPT0gbnVsbCApIHsKLQotICAgIC8vIFRy
eSB0byBmaW5kIHRoZSBjYW1lbENhc2VkIHByb3BlcnR5Ci0gICAgcmV0ID0gdGhpc0NhY2hlWyBq
UXVlcnkuY2FtZWxDYXNlKCBuYW1lICkgXTsKLSAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICByZXQg
PSB0aGlzQ2FjaGU7Ci0gICAgfQotCi0gICAgcmV0dXJuIHJldDsKLX0KLQotZnVuY3Rpb24gaW50
ZXJuYWxSZW1vdmVEYXRhKCBlbGVtLCBuYW1lLCBwdnQgKSB7Ci0gICAgaWYgKCAhalF1ZXJ5LmFj
Y2VwdERhdGEoIGVsZW0gKSApIHsKLSAgICByZXR1cm47Ci0gICAgfQotCi0gICAgdmFyIGksIGws
IHRoaXNDYWNoZSwKLSAgICBpc05vZGUgPSBlbGVtLm5vZGVUeXBlLAotCi0gICAgLy8gU2VlIGpR
dWVyeS5kYXRhIGZvciBtb3JlIGluZm9ybWF0aW9uCi0gICAgY2FjaGUgPSBpc05vZGUgPyBqUXVl
cnkuY2FjaGUgOiBlbGVtLAotICAgIGlkID0gaXNOb2RlID8gZWxlbVsgalF1ZXJ5LmV4cGFuZG8g
XSA6IGpRdWVyeS5leHBhbmRvOwotCi0gICAgLy8gSWYgdGhlcmUgaXMgYWxyZWFkeSBubyBjYWNo
ZSBlbnRyeSBmb3IgdGhpcyBvYmplY3QsIHRoZXJlIGlzIG5vCi0gICAgLy8gcHVycG9zZSBpbiBj
b250aW51aW5nCi0gICAgaWYgKCAhY2FjaGVbIGlkIF0gKSB7Ci0gICAgcmV0dXJuOwotICAgIH0K
LQotICAgIGlmICggbmFtZSApIHsKLQotICAgIHRoaXNDYWNoZSA9IHB2dCA/IGNhY2hlWyBpZCBd
IDogY2FjaGVbIGlkIF0uZGF0YTsKLQotICAgIGlmICggdGhpc0NhY2hlICkgewotCi0gICAgLy8g
U3VwcG9ydCBhcnJheSBvciBzcGFjZSBzZXBhcmF0ZWQgc3RyaW5nIG5hbWVzIGZvciBkYXRhIGtl
eXMKLSAgICBpZiAoICFqUXVlcnkuaXNBcnJheSggbmFtZSApICkgewotCi0gICAgLy8gdHJ5IHRo
ZSBzdHJpbmcgYXMgYSBrZXkgYmVmb3JlIGFueSBtYW5pcHVsYXRpb24KLSAgICBpZiAoIG5hbWUg
aW4gdGhpc0NhY2hlICkgewotICAgIG5hbWUgPSBbIG5hbWUgXTsKLSAgICB9IGVsc2UgewotCi0g
ICAgLy8gc3BsaXQgdGhlIGNhbWVsIGNhc2VkIHZlcnNpb24gYnkgc3BhY2VzIHVubGVzcyBhIGtl
eSB3aXRoIHRoZSBzcGFjZXMgZXhpc3RzCi0gICAgbmFtZSA9IGpRdWVyeS5jYW1lbENhc2UoIG5h
bWUgKTsKLSAgICBpZiAoIG5hbWUgaW4gdGhpc0NhY2hlICkgewotICAgIG5hbWUgPSBbIG5hbWUg
XTsKLSAgICB9IGVsc2UgewotICAgIG5hbWUgPSBuYW1lLnNwbGl0KCIgIik7Ci0gICAgfQotICAg
IH0KLSAgICB9IGVsc2UgewotICAgIC8vIElmICJuYW1lIiBpcyBhbiBhcnJheSBvZiBrZXlzLi4u
Ci0gICAgLy8gV2hlbiBkYXRhIGlzIGluaXRpYWxseSBjcmVhdGVkLCB2aWEgKCJrZXkiLCAidmFs
Iikgc2lnbmF0dXJlLAotICAgIC8vIGtleXMgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gY2FtZWxDYXNl
LgotICAgIC8vIFNpbmNlIHRoZXJlIGlzIG5vIHdheSB0byB0ZWxsIF9ob3dfIGEga2V5IHdhcyBh
ZGRlZCwgcmVtb3ZlCi0gICAgLy8gYm90aCBwbGFpbiBrZXkgYW5kIGNhbWVsQ2FzZSBrZXkuICMx
Mjc4NgotICAgIC8vIFRoaXMgd2lsbCBvbmx5IHBlbmFsaXplIHRoZSBhcnJheSBhcmd1bWVudCBw
YXRoLgotICAgIG5hbWUgPSBuYW1lLmNvbmNhdCggalF1ZXJ5Lm1hcCggbmFtZSwgalF1ZXJ5LmNh
bWVsQ2FzZSApICk7Ci0gICAgfQotCi0gICAgZm9yICggaSA9IDAsIGwgPSBuYW1lLmxlbmd0aDsg
aSA8IGw7IGkrKyApIHsKLSAgICBkZWxldGUgdGhpc0NhY2hlWyBuYW1lW2ldIF07Ci0gICAgfQot
Ci0gICAgLy8gSWYgdGhlcmUgaXMgbm8gZGF0YSBsZWZ0IGluIHRoZSBjYWNoZSwgd2Ugd2FudCB0
byBjb250aW51ZQotICAgIC8vIGFuZCBsZXQgdGhlIGNhY2hlIG9iamVjdCBpdHNlbGYgZ2V0IGRl
c3Ryb3llZAotICAgIGlmICggISggcHZ0ID8gaXNFbXB0eURhdGFPYmplY3QgOiBqUXVlcnkuaXNF
bXB0eU9iamVjdCApKCB0aGlzQ2FjaGUgKSApIHsKLSAgICByZXR1cm47Ci0gICAgfQotICAgIH0K
LSAgICB9Ci0KLSAgICAvLyBTZWUgalF1ZXJ5LmRhdGEgZm9yIG1vcmUgaW5mb3JtYXRpb24KLSAg
ICBpZiAoICFwdnQgKSB7Ci0gICAgZGVsZXRlIGNhY2hlWyBpZCBdLmRhdGE7Ci0KLSAgICAvLyBE
b24ndCBkZXN0cm95IHRoZSBwYXJlbnQgY2FjaGUgdW5sZXNzIHRoZSBpbnRlcm5hbCBkYXRhIG9i
amVjdAotICAgIC8vIGhhZCBiZWVuIHRoZSBvbmx5IHRoaW5nIGxlZnQgaW4gaXQKLSAgICBpZiAo
ICFpc0VtcHR5RGF0YU9iamVjdCggY2FjaGVbIGlkIF0gKSApIHsKLSAgICByZXR1cm47Ci0gICAg
fQotICAgIH0KLQotICAgIC8vIERlc3Ryb3kgdGhlIGNhY2hlCi0gICAgaWYgKCBpc05vZGUgKSB7
Ci0gICAgalF1ZXJ5LmNsZWFuRGF0YSggWyBlbGVtIF0sIHRydWUgKTsKLQotICAgIC8vIFVzZSBk
ZWxldGUgd2hlbiBzdXBwb3J0ZWQgZm9yIGV4cGFuZG9zIG9yIGBjYWNoZWAgaXMgbm90IGEgd2lu
ZG93IHBlciBpc1dpbmRvdyAoIzEwMDgwKQotICAgIH0gZWxzZSBpZiAoIGpRdWVyeS5zdXBwb3J0
LmRlbGV0ZUV4cGFuZG8gfHwgY2FjaGUgIT0gY2FjaGUud2luZG93ICkgewotICAgIGRlbGV0ZSBj
YWNoZVsgaWQgXTsKLQotICAgIC8vIFdoZW4gYWxsIGVsc2UgZmFpbHMsIG51bGwKLSAgICB9IGVs
c2UgewotICAgIGNhY2hlWyBpZCBdID0gbnVsbDsKLSAgICB9Ci19Ci0KLWpRdWVyeS5leHRlbmQo
ewotICAgIGNhY2hlOiB7fSwKLQotICAgIC8vIFVuaXF1ZSBmb3IgZWFjaCBjb3B5IG9mIGpRdWVy
eSBvbiB0aGUgcGFnZQotICAgIC8vIE5vbi1kaWdpdHMgcmVtb3ZlZCB0byBtYXRjaCByaW5saW5l
alF1ZXJ5Ci0gICAgZXhwYW5kbzogImpRdWVyeSIgKyAoIGNvcmVfdmVyc2lvbiArIE1hdGgucmFu
ZG9tKCkgKS5yZXBsYWNlKCAvXEQvZywgIiIgKSwKLQotICAgIC8vIFRoZSBmb2xsb3dpbmcgZWxl
bWVudHMgdGhyb3cgdW5jYXRjaGFibGUgZXhjZXB0aW9ucyBpZiB5b3UKLSAgICAvLyBhdHRlbXB0
IHRvIGFkZCBleHBhbmRvIHByb3BlcnRpZXMgdG8gdGhlbS4KLSAgICBub0RhdGE6IHsKLSAgICAi
ZW1iZWQiOiB0cnVlLAotICAgIC8vIEJhbiBhbGwgb2JqZWN0cyBleGNlcHQgZm9yIEZsYXNoICh3
aGljaCBoYW5kbGUgZXhwYW5kb3MpCi0gICAgIm9iamVjdCI6ICJjbHNpZDpEMjdDREI2RS1BRTZE
LTExY2YtOTZCOC00NDQ1NTM1NDAwMDAiLAotICAgICJhcHBsZXQiOiB0cnVlCi0gICAgfSwKLQot
ICAgIGhhc0RhdGE6IGZ1bmN0aW9uKCBlbGVtICkgewotICAgIGVsZW0gPSBlbGVtLm5vZGVUeXBl
ID8galF1ZXJ5LmNhY2hlWyBlbGVtW2pRdWVyeS5leHBhbmRvXSBdIDogZWxlbVsgalF1ZXJ5LmV4
cGFuZG8gXTsKLSAgICByZXR1cm4gISFlbGVtICYmICFpc0VtcHR5RGF0YU9iamVjdCggZWxlbSAp
OwotICAgIH0sCi0KLSAgICBkYXRhOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgZGF0YSApIHsKLSAg
ICByZXR1cm4gaW50ZXJuYWxEYXRhKCBlbGVtLCBuYW1lLCBkYXRhICk7Ci0gICAgfSwKLQotICAg
IHJlbW92ZURhdGE6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lICkgewotICAgIHJldHVybiBpbnRlcm5h
bFJlbW92ZURhdGEoIGVsZW0sIG5hbWUgKTsKLSAgICB9LAotCi0gICAgLy8gRm9yIGludGVybmFs
IHVzZSBvbmx5LgotICAgIF9kYXRhOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgZGF0YSApIHsKLSAg
ICByZXR1cm4gaW50ZXJuYWxEYXRhKCBlbGVtLCBuYW1lLCBkYXRhLCB0cnVlICk7Ci0gICAgfSwK
LQotICAgIF9yZW1vdmVEYXRhOiBmdW5jdGlvbiggZWxlbSwgbmFtZSApIHsKLSAgICByZXR1cm4g
aW50ZXJuYWxSZW1vdmVEYXRhKCBlbGVtLCBuYW1lLCB0cnVlICk7Ci0gICAgfSwKLQotICAgIC8v
IEEgbWV0aG9kIGZvciBkZXRlcm1pbmluZyBpZiBhIERPTSBub2RlIGNhbiBoYW5kbGUgdGhlIGRh
dGEgZXhwYW5kbwotICAgIGFjY2VwdERhdGE6IGZ1bmN0aW9uKCBlbGVtICkgewotICAgIC8vIERv
IG5vdCBzZXQgZGF0YSBvbiBub24tZWxlbWVudCBiZWNhdXNlIGl0IHdpbGwgbm90IGJlIGNsZWFy
ZWQgKCM4MzM1KS4KLSAgICBpZiAoIGVsZW0ubm9kZVR5cGUgJiYgZWxlbS5ub2RlVHlwZSAhPT0g
MSAmJiBlbGVtLm5vZGVUeXBlICE9PSA5ICkgewotICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0K
LSAgICB2YXIgbm9EYXRhID0gZWxlbS5ub2RlTmFtZSAmJiBqUXVlcnkubm9EYXRhWyBlbGVtLm5v
ZGVOYW1lLnRvTG93ZXJDYXNlKCkgXTsKLQotICAgIC8vIG5vZGVzIGFjY2VwdCBkYXRhIHVubGVz
cyBvdGhlcndpc2Ugc3BlY2lmaWVkOyByZWplY3Rpb24gY2FuIGJlIGNvbmRpdGlvbmFsCi0gICAg
cmV0dXJuICFub0RhdGEgfHwgbm9EYXRhICE9PSB0cnVlICYmIGVsZW0uZ2V0QXR0cmlidXRlKCJj
bGFzc2lkIikgPT09IG5vRGF0YTsKLSAgICB9Ci19KTsKLQotalF1ZXJ5LmZuLmV4dGVuZCh7Ci0g
ICAgZGF0YTogZnVuY3Rpb24oIGtleSwgdmFsdWUgKSB7Ci0gICAgdmFyIGF0dHJzLCBuYW1lLAot
ICAgIGVsZW0gPSB0aGlzWzBdLAotICAgIGkgPSAwLAotICAgIGRhdGEgPSBudWxsOwotCi0gICAg
Ly8gR2V0cyBhbGwgdmFsdWVzCi0gICAgaWYgKCBrZXkgPT09IHVuZGVmaW5lZCApIHsKLSAgICBp
ZiAoIHRoaXMubGVuZ3RoICkgewotICAgIGRhdGEgPSBqUXVlcnkuZGF0YSggZWxlbSApOwotCi0g
ICAgaWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICYmICFqUXVlcnkuX2RhdGEoIGVsZW0sICJwYXJz
ZWRBdHRycyIgKSApIHsKLSAgICBhdHRycyA9IGVsZW0uYXR0cmlidXRlczsKLSAgICBmb3IgKCA7
IGkgPCBhdHRycy5sZW5ndGg7IGkrKyApIHsKLSAgICBuYW1lID0gYXR0cnNbaV0ubmFtZTsKLQot
ICAgIGlmICggIW5hbWUuaW5kZXhPZiggImRhdGEtIiApICkgewotICAgIG5hbWUgPSBqUXVlcnku
Y2FtZWxDYXNlKCBuYW1lLnNsaWNlKDUpICk7Ci0KLSAgICBkYXRhQXR0ciggZWxlbSwgbmFtZSwg
ZGF0YVsgbmFtZSBdICk7Ci0gICAgfQotICAgIH0KLSAgICBqUXVlcnkuX2RhdGEoIGVsZW0sICJw
YXJzZWRBdHRycyIsIHRydWUgKTsKLSAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIGRhdGE7Ci0g
ICAgfQotCi0gICAgLy8gU2V0cyBtdWx0aXBsZSB2YWx1ZXMKLSAgICBpZiAoIHR5cGVvZiBrZXkg
PT09ICJvYmplY3QiICkgewotICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7Ci0gICAg
alF1ZXJ5LmRhdGEoIHRoaXMsIGtleSApOwotICAgIH0pOwotICAgIH0KLQotICAgIHJldHVybiBq
UXVlcnkuYWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggdmFsdWUgKSB7Ci0KLSAgICBpZiAoIHZhbHVl
ID09PSB1bmRlZmluZWQgKSB7Ci0gICAgLy8gVHJ5IHRvIGZldGNoIGFueSBpbnRlcm5hbGx5IHN0
b3JlZCBkYXRhIGZpcnN0Ci0gICAgcmV0dXJuIGVsZW0gPyBkYXRhQXR0ciggZWxlbSwga2V5LCBq
UXVlcnkuZGF0YSggZWxlbSwga2V5ICkgKSA6IG51bGw7Ci0gICAgfQotCi0gICAgdGhpcy5lYWNo
KGZ1bmN0aW9uKCkgewotICAgIGpRdWVyeS5kYXRhKCB0aGlzLCBrZXksIHZhbHVlICk7Ci0gICAg
fSk7Ci0gICAgfSwgbnVsbCwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggPiAxLCBudWxsLCB0cnVl
ICk7Ci0gICAgfSwKLQotICAgIHJlbW92ZURhdGE6IGZ1bmN0aW9uKCBrZXkgKSB7Ci0gICAgcmV0
dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKLSAgICBqUXVlcnkucmVtb3ZlRGF0YSggdGhpcywg
a2V5ICk7Ci0gICAgfSk7Ci0gICAgfQotfSk7Ci0KLWZ1bmN0aW9uIGRhdGFBdHRyKCBlbGVtLCBr
ZXksIGRhdGEgKSB7Ci0gICAgLy8gSWYgbm90aGluZyB3YXMgZm91bmQgaW50ZXJuYWxseSwgdHJ5
IHRvIGZldGNoIGFueQotICAgIC8vIGRhdGEgZnJvbSB0aGUgSFRNTDUgZGF0YS0qIGF0dHJpYnV0
ZQotICAgIGlmICggZGF0YSA9PT0gdW5kZWZpbmVkICYmIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7
Ci0KLSAgICB2YXIgbmFtZSA9ICJkYXRhLSIgKyBrZXkucmVwbGFjZSggcm11bHRpRGFzaCwgIi0k
MSIgKS50b0xvd2VyQ2FzZSgpOwotCi0gICAgZGF0YSA9IGVsZW0uZ2V0QXR0cmlidXRlKCBuYW1l
ICk7Ci0KLSAgICBpZiAoIHR5cGVvZiBkYXRhID09PSAic3RyaW5nIiApIHsKLSAgICB0cnkgewot
ICAgIGRhdGEgPSBkYXRhID09PSAidHJ1ZSIgPyB0cnVlIDoKLSAgICBkYXRhID09PSAiZmFsc2Ui
ID8gZmFsc2UgOgotICAgIGRhdGEgPT09ICJudWxsIiA/IG51bGwgOgotICAgIC8vIE9ubHkgY29u
dmVydCB0byBhIG51bWJlciBpZiBpdCBkb2Vzbid0IGNoYW5nZSB0aGUgc3RyaW5nCi0gICAgK2Rh
dGEgKyAiIiA9PT0gZGF0YSA/ICtkYXRhIDoKLSAgICByYnJhY2UudGVzdCggZGF0YSApID8galF1
ZXJ5LnBhcnNlSlNPTiggZGF0YSApIDoKLSAgICBkYXRhOwotICAgIH0gY2F0Y2goIGUgKSB7fQot
Ci0gICAgLy8gTWFrZSBzdXJlIHdlIHNldCB0aGUgZGF0YSBzbyBpdCBpc24ndCBjaGFuZ2VkIGxh
dGVyCi0gICAgalF1ZXJ5LmRhdGEoIGVsZW0sIGtleSwgZGF0YSApOwotCi0gICAgfSBlbHNlIHsK
LSAgICBkYXRhID0gdW5kZWZpbmVkOwotICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gZGF0YTsK
LX0KLQotLy8gY2hlY2tzIGEgY2FjaGUgb2JqZWN0IGZvciBlbXB0aW5lc3MKLWZ1bmN0aW9uIGlz
RW1wdHlEYXRhT2JqZWN0KCBvYmogKSB7Ci0gICAgdmFyIG5hbWU7Ci0gICAgZm9yICggbmFtZSBp
biBvYmogKSB7Ci0KLSAgICAvLyBpZiB0aGUgcHVibGljIGRhdGEgb2JqZWN0IGlzIGVtcHR5LCB0
aGUgcHJpdmF0ZSBpcyBzdGlsbCBlbXB0eQotICAgIGlmICggbmFtZSA9PT0gImRhdGEiICYmIGpR
dWVyeS5pc0VtcHR5T2JqZWN0KCBvYmpbbmFtZV0gKSApIHsKLSAgICBjb250aW51ZTsKLSAgICB9
Ci0gICAgaWYgKCBuYW1lICE9PSAidG9KU09OIiApIHsKLSAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotalF1ZXJ5LmV4dGVuZCh7Ci0gICAgcXVl
dWU6IGZ1bmN0aW9uKCBlbGVtLCB0eXBlLCBkYXRhICkgewotICAgIHZhciBxdWV1ZTsKLQotICAg
IGlmICggZWxlbSApIHsKLSAgICB0eXBlID0gKCB0eXBlIHx8ICJmeCIgKSArICJxdWV1ZSI7Ci0g
ICAgcXVldWUgPSBqUXVlcnkuX2RhdGEoIGVsZW0sIHR5cGUgKTsKLQotICAgIC8vIFNwZWVkIHVw
IGRlcXVldWUgYnkgZ2V0dGluZyBvdXQgcXVpY2tseSBpZiB0aGlzIGlzIGp1c3QgYSBsb29rdXAK
LSAgICBpZiAoIGRhdGEgKSB7Ci0gICAgaWYgKCAhcXVldWUgfHwgalF1ZXJ5LmlzQXJyYXkoZGF0
YSkgKSB7Ci0gICAgcXVldWUgPSBqUXVlcnkuX2RhdGEoIGVsZW0sIHR5cGUsIGpRdWVyeS5tYWtl
QXJyYXkoZGF0YSkgKTsKLSAgICB9IGVsc2UgewotICAgIHF1ZXVlLnB1c2goIGRhdGEgKTsKLSAg
ICB9Ci0gICAgfQotICAgIHJldHVybiBxdWV1ZSB8fCBbXTsKLSAgICB9Ci0gICAgfSwKLQotICAg
IGRlcXVldWU6IGZ1bmN0aW9uKCBlbGVtLCB0eXBlICkgewotICAgIHR5cGUgPSB0eXBlIHx8ICJm
eCI7Ci0KLSAgICB2YXIgcXVldWUgPSBqUXVlcnkucXVldWUoIGVsZW0sIHR5cGUgKSwKLSAgICBz
dGFydExlbmd0aCA9IHF1ZXVlLmxlbmd0aCwKLSAgICBmbiA9IHF1ZXVlLnNoaWZ0KCksCi0gICAg
aG9va3MgPSBqUXVlcnkuX3F1ZXVlSG9va3MoIGVsZW0sIHR5cGUgKSwKLSAgICBuZXh0ID0gZnVu
Y3Rpb24oKSB7Ci0gICAgalF1ZXJ5LmRlcXVldWUoIGVsZW0sIHR5cGUgKTsKLSAgICB9OwotCi0g
ICAgLy8gSWYgdGhlIGZ4IHF1ZXVlIGlzIGRlcXVldWVkLCBhbHdheXMgcmVtb3ZlIHRoZSBwcm9n
cmVzcyBzZW50aW5lbAotICAgIGlmICggZm4gPT09ICJpbnByb2dyZXNzIiApIHsKLSAgICBmbiA9
IHF1ZXVlLnNoaWZ0KCk7Ci0gICAgc3RhcnRMZW5ndGgtLTsKLSAgICB9Ci0KLSAgICBob29rcy5j
dXIgPSBmbjsKLSAgICBpZiAoIGZuICkgewotCi0gICAgLy8gQWRkIGEgcHJvZ3Jlc3Mgc2VudGlu
ZWwgdG8gcHJldmVudCB0aGUgZnggcXVldWUgZnJvbSBiZWluZwotICAgIC8vIGF1dG9tYXRpY2Fs
bHkgZGVxdWV1ZWQKLSAgICBpZiAoIHR5cGUgPT09ICJmeCIgKSB7Ci0gICAgcXVldWUudW5zaGlm
dCggImlucHJvZ3Jlc3MiICk7Ci0gICAgfQotCi0gICAgLy8gY2xlYXIgdXAgdGhlIGxhc3QgcXVl
dWUgc3RvcCBmdW5jdGlvbgotICAgIGRlbGV0ZSBob29rcy5zdG9wOwotICAgIGZuLmNhbGwoIGVs
ZW0sIG5leHQsIGhvb2tzICk7Ci0gICAgfQotCi0gICAgaWYgKCAhc3RhcnRMZW5ndGggJiYgaG9v
a3MgKSB7Ci0gICAgaG9va3MuZW1wdHkuZmlyZSgpOwotICAgIH0KLSAgICB9LAotCi0gICAgLy8g
bm90IGludGVuZGVkIGZvciBwdWJsaWMgY29uc3VtcHRpb24gLSBnZW5lcmF0ZXMgYSBxdWV1ZUhv
b2tzIG9iamVjdCwgb3IgcmV0dXJucyB0aGUgY3VycmVudCBvbmUKLSAgICBfcXVldWVIb29rczog
ZnVuY3Rpb24oIGVsZW0sIHR5cGUgKSB7Ci0gICAgdmFyIGtleSA9IHR5cGUgKyAicXVldWVIb29r
cyI7Ci0gICAgcmV0dXJuIGpRdWVyeS5fZGF0YSggZWxlbSwga2V5ICkgfHwgalF1ZXJ5Ll9kYXRh
KCBlbGVtLCBrZXksIHsKLSAgICBlbXB0eTogalF1ZXJ5LkNhbGxiYWNrcygib25jZSBtZW1vcnki
KS5hZGQoZnVuY3Rpb24oKSB7Ci0gICAgalF1ZXJ5Ll9yZW1vdmVEYXRhKCBlbGVtLCB0eXBlICsg
InF1ZXVlIiApOwotICAgIGpRdWVyeS5fcmVtb3ZlRGF0YSggZWxlbSwga2V5ICk7Ci0gICAgfSkK
LSAgICB9KTsKLSAgICB9Ci19KTsKLQotalF1ZXJ5LmZuLmV4dGVuZCh7Ci0gICAgcXVldWU6IGZ1
bmN0aW9uKCB0eXBlLCBkYXRhICkgewotICAgIHZhciBzZXR0ZXIgPSAyOwotCi0gICAgaWYgKCB0
eXBlb2YgdHlwZSAhPT0gInN0cmluZyIgKSB7Ci0gICAgZGF0YSA9IHR5cGU7Ci0gICAgdHlwZSA9
ICJmeCI7Ci0gICAgc2V0dGVyLS07Ci0gICAgfQotCi0gICAgaWYgKCBhcmd1bWVudHMubGVuZ3Ro
IDwgc2V0dGVyICkgewotICAgIHJldHVybiBqUXVlcnkucXVldWUoIHRoaXNbMF0sIHR5cGUgKTsK
LSAgICB9Ci0KLSAgICByZXR1cm4gZGF0YSA9PT0gdW5kZWZpbmVkID8KLSAgICB0aGlzIDoKLSAg
ICB0aGlzLmVhY2goZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHF1ZXVlID0galF1ZXJ5LnF1ZXVlKCB0
aGlzLCB0eXBlLCBkYXRhICk7Ci0KLSAgICAvLyBlbnN1cmUgYSBob29rcyBmb3IgdGhpcyBxdWV1
ZQotICAgIGpRdWVyeS5fcXVldWVIb29rcyggdGhpcywgdHlwZSApOwotCi0gICAgaWYgKCB0eXBl
ID09PSAiZngiICYmIHF1ZXVlWzBdICE9PSAiaW5wcm9ncmVzcyIgKSB7Ci0gICAgalF1ZXJ5LmRl
cXVldWUoIHRoaXMsIHR5cGUgKTsKLSAgICB9Ci0gICAgfSk7Ci0gICAgfSwKLSAgICBkZXF1ZXVl
OiBmdW5jdGlvbiggdHlwZSApIHsKLSAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewot
ICAgIGpRdWVyeS5kZXF1ZXVlKCB0aGlzLCB0eXBlICk7Ci0gICAgfSk7Ci0gICAgfSwKLSAgICAv
LyBCYXNlZCBvZmYgb2YgdGhlIHBsdWdpbiBieSBDbGludCBIZWxmZXJzLCB3aXRoIHBlcm1pc3Np
b24uCi0gICAgLy8gaHR0cDovL2JsaW5kc2lnbmFscy5jb20vaW5kZXgucGhwLzIwMDkvMDcvanF1
ZXJ5LWRlbGF5LwotICAgIGRlbGF5OiBmdW5jdGlvbiggdGltZSwgdHlwZSApIHsKLSAgICB0aW1l
ID0galF1ZXJ5LmZ4ID8galF1ZXJ5LmZ4LnNwZWVkc1sgdGltZSBdIHx8IHRpbWUgOiB0aW1lOwot
ICAgIHR5cGUgPSB0eXBlIHx8ICJmeCI7Ci0KLSAgICByZXR1cm4gdGhpcy5xdWV1ZSggdHlwZSwg
ZnVuY3Rpb24oIG5leHQsIGhvb2tzICkgewotICAgIHZhciB0aW1lb3V0ID0gc2V0VGltZW91dCgg
bmV4dCwgdGltZSApOwotICAgIGhvb2tzLnN0b3AgPSBmdW5jdGlvbigpIHsKLSAgICBjbGVhclRp
bWVvdXQoIHRpbWVvdXQgKTsKLSAgICB9OwotICAgIH0pOwotICAgIH0sCi0gICAgY2xlYXJRdWV1
ZTogZnVuY3Rpb24oIHR5cGUgKSB7Ci0gICAgcmV0dXJuIHRoaXMucXVldWUoIHR5cGUgfHwgImZ4
IiwgW10gKTsKLSAgICB9LAotICAgIC8vIEdldCBhIHByb21pc2UgcmVzb2x2ZWQgd2hlbiBxdWV1
ZXMgb2YgYSBjZXJ0YWluIHR5cGUKLSAgICAvLyBhcmUgZW1wdGllZCAoZnggaXMgdGhlIHR5cGUg
YnkgZGVmYXVsdCkKLSAgICBwcm9taXNlOiBmdW5jdGlvbiggdHlwZSwgb2JqICkgewotICAgIHZh
ciB0bXAsCi0gICAgY291bnQgPSAxLAotICAgIGRlZmVyID0galF1ZXJ5LkRlZmVycmVkKCksCi0g
ICAgZWxlbWVudHMgPSB0aGlzLAotICAgIGkgPSB0aGlzLmxlbmd0aCwKLSAgICByZXNvbHZlID0g
ZnVuY3Rpb24oKSB7Ci0gICAgaWYgKCAhKCAtLWNvdW50ICkgKSB7Ci0gICAgZGVmZXIucmVzb2x2
ZVdpdGgoIGVsZW1lbnRzLCBbIGVsZW1lbnRzIF0gKTsKLSAgICB9Ci0gICAgfTsKLQotICAgIGlm
ICggdHlwZW9mIHR5cGUgIT09ICJzdHJpbmciICkgewotICAgIG9iaiA9IHR5cGU7Ci0gICAgdHlw
ZSA9IHVuZGVmaW5lZDsKLSAgICB9Ci0gICAgdHlwZSA9IHR5cGUgfHwgImZ4IjsKLQotICAgIHdo
aWxlKCBpLS0gKSB7Ci0gICAgdG1wID0galF1ZXJ5Ll9kYXRhKCBlbGVtZW50c1sgaSBdLCB0eXBl
ICsgInF1ZXVlSG9va3MiICk7Ci0gICAgaWYgKCB0bXAgJiYgdG1wLmVtcHR5ICkgewotICAgIGNv
dW50Kys7Ci0gICAgdG1wLmVtcHR5LmFkZCggcmVzb2x2ZSApOwotICAgIH0KLSAgICB9Ci0gICAg
cmVzb2x2ZSgpOwotICAgIHJldHVybiBkZWZlci5wcm9taXNlKCBvYmogKTsKLSAgICB9Ci19KTsK
LXZhciBub2RlSG9vaywgYm9vbEhvb2ssCi0gICAgcmNsYXNzID0gL1tcdFxyXG5dL2csCi0gICAg
cnJldHVybiA9IC9cci9nLAotICAgIHJmb2N1c2FibGUgPSAvXig/OmlucHV0fHNlbGVjdHx0ZXh0
YXJlYXxidXR0b258b2JqZWN0KSQvaSwKLSAgICByY2xpY2thYmxlID0gL14oPzphfGFyZWEpJC9p
LAotICAgIHJib29sZWFuID0gL14oPzpjaGVja2VkfHNlbGVjdGVkfGF1dG9mb2N1c3xhdXRvcGxh
eXxhc3luY3xjb250cm9sc3xkZWZlcnxkaXNhYmxlZHxoaWRkZW58bG9vcHxtdWx0aXBsZXxvcGVu
fHJlYWRvbmx5fHJlcXVpcmVkfHNjb3BlZCkkL2ksCi0gICAgcnVzZURlZmF1bHQgPSAvXig/OmNo
ZWNrZWR8c2VsZWN0ZWQpJC9pLAotICAgIGdldFNldEF0dHJpYnV0ZSA9IGpRdWVyeS5zdXBwb3J0
LmdldFNldEF0dHJpYnV0ZSwKLSAgICBnZXRTZXRJbnB1dCA9IGpRdWVyeS5zdXBwb3J0LmlucHV0
OwotCi1qUXVlcnkuZm4uZXh0ZW5kKHsKLSAgICBhdHRyOiBmdW5jdGlvbiggbmFtZSwgdmFsdWUg
KSB7Ci0gICAgcmV0dXJuIGpRdWVyeS5hY2Nlc3MoIHRoaXMsIGpRdWVyeS5hdHRyLCBuYW1lLCB2
YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDEgKTsKLSAgICB9LAotCi0gICAgcmVtb3ZlQXR0cjog
ZnVuY3Rpb24oIG5hbWUgKSB7Ci0gICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKLSAg
ICBqUXVlcnkucmVtb3ZlQXR0ciggdGhpcywgbmFtZSApOwotICAgIH0pOwotICAgIH0sCi0KLSAg
ICBwcm9wOiBmdW5jdGlvbiggbmFtZSwgdmFsdWUgKSB7Ci0gICAgcmV0dXJuIGpRdWVyeS5hY2Nl
c3MoIHRoaXMsIGpRdWVyeS5wcm9wLCBuYW1lLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDEg
KTsKLSAgICB9LAotCi0gICAgcmVtb3ZlUHJvcDogZnVuY3Rpb24oIG5hbWUgKSB7Ci0gICAgbmFt
ZSA9IGpRdWVyeS5wcm9wRml4WyBuYW1lIF0gfHwgbmFtZTsKLSAgICByZXR1cm4gdGhpcy5lYWNo
KGZ1bmN0aW9uKCkgewotICAgIC8vIHRyeS9jYXRjaCBoYW5kbGVzIGNhc2VzIHdoZXJlIElFIGJh
bGtzIChzdWNoIGFzIHJlbW92aW5nIGEgcHJvcGVydHkgb24gd2luZG93KQotICAgIHRyeSB7Ci0g
ICAgdGhpc1sgbmFtZSBdID0gdW5kZWZpbmVkOwotICAgIGRlbGV0ZSB0aGlzWyBuYW1lIF07Ci0g
ICAgfSBjYXRjaCggZSApIHt9Ci0gICAgfSk7Ci0gICAgfSwKLQotICAgIGFkZENsYXNzOiBmdW5j
dGlvbiggdmFsdWUgKSB7Ci0gICAgdmFyIGNsYXNzZXMsIGVsZW0sIGN1ciwgY2xhenosIGosCi0g
ICAgaSA9IDAsCi0gICAgbGVuID0gdGhpcy5sZW5ndGgsCi0gICAgcHJvY2VlZCA9IHR5cGVvZiB2
YWx1ZSA9PT0gInN0cmluZyIgJiYgdmFsdWU7Ci0KLSAgICBpZiAoIGpRdWVyeS5pc0Z1bmN0aW9u
KCB2YWx1ZSApICkgewotICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oIGogKSB7Ci0gICAg
alF1ZXJ5KCB0aGlzICkuYWRkQ2xhc3MoIHZhbHVlLmNhbGwoIHRoaXMsIGosIHRoaXMuY2xhc3NO
YW1lICkgKTsKLSAgICB9KTsKLSAgICB9Ci0KLSAgICBpZiAoIHByb2NlZWQgKSB7Ci0gICAgLy8g
VGhlIGRpc2p1bmN0aW9uIGhlcmUgaXMgZm9yIGJldHRlciBjb21wcmVzc2liaWxpdHkgKHNlZSBy
ZW1vdmVDbGFzcykKLSAgICBjbGFzc2VzID0gKCB2YWx1ZSB8fCAiIiApLm1hdGNoKCBjb3JlX3Ju
b3R3aGl0ZSApIHx8IFtdOwotCi0gICAgZm9yICggOyBpIDwgbGVuOyBpKysgKSB7Ci0gICAgZWxl
bSA9IHRoaXNbIGkgXTsKLSAgICBjdXIgPSBlbGVtLm5vZGVUeXBlID09PSAxICYmICggZWxlbS5j
bGFzc05hbWUgPwotICAgICggIiAiICsgZWxlbS5jbGFzc05hbWUgKyAiICIgKS5yZXBsYWNlKCBy
Y2xhc3MsICIgIiApIDoKLSAgICAiICIKLSAgICApOwotCi0gICAgaWYgKCBjdXIgKSB7Ci0gICAg
aiA9IDA7Ci0gICAgd2hpbGUgKCAoY2xhenogPSBjbGFzc2VzW2orK10pICkgewotICAgIGlmICgg
Y3VyLmluZGV4T2YoICIgIiArIGNsYXp6ICsgIiAiICkgPCAwICkgewotICAgIGN1ciArPSBjbGF6
eiArICIgIjsKLSAgICB9Ci0gICAgfQotICAgIGVsZW0uY2xhc3NOYW1lID0galF1ZXJ5LnRyaW0o
IGN1ciApOwotCi0gICAgfQotICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gdGhpczsKLSAgICB9
LAotCi0gICAgcmVtb3ZlQ2xhc3M6IGZ1bmN0aW9uKCB2YWx1ZSApIHsKLSAgICB2YXIgY2xhc3Nl
cywgZWxlbSwgY3VyLCBjbGF6eiwgaiwKLSAgICBpID0gMCwKLSAgICBsZW4gPSB0aGlzLmxlbmd0
aCwKLSAgICBwcm9jZWVkID0gYXJndW1lbnRzLmxlbmd0aCA9PT0gMCB8fCB0eXBlb2YgdmFsdWUg
PT09ICJzdHJpbmciICYmIHZhbHVlOwotCi0gICAgaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggdmFs
dWUgKSApIHsKLSAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCBqICkgewotICAgIGpRdWVy
eSggdGhpcyApLnJlbW92ZUNsYXNzKCB2YWx1ZS5jYWxsKCB0aGlzLCBqLCB0aGlzLmNsYXNzTmFt
ZSApICk7Ci0gICAgfSk7Ci0gICAgfQotICAgIGlmICggcHJvY2VlZCApIHsKLSAgICBjbGFzc2Vz
ID0gKCB2YWx1ZSB8fCAiIiApLm1hdGNoKCBjb3JlX3Jub3R3aGl0ZSApIHx8IFtdOwotCi0gICAg
Zm9yICggOyBpIDwgbGVuOyBpKysgKSB7Ci0gICAgZWxlbSA9IHRoaXNbIGkgXTsKLSAgICAvLyBU
aGlzIGV4cHJlc3Npb24gaXMgaGVyZSBmb3IgYmV0dGVyIGNvbXByZXNzaWJpbGl0eSAoc2VlIGFk
ZENsYXNzKQotICAgIGN1ciA9IGVsZW0ubm9kZVR5cGUgPT09IDEgJiYgKCBlbGVtLmNsYXNzTmFt
ZSA/Ci0gICAgKCAiICIgKyBlbGVtLmNsYXNzTmFtZSArICIgIiApLnJlcGxhY2UoIHJjbGFzcywg
IiAiICkgOgotICAgICIiCi0gICAgKTsKLQotICAgIGlmICggY3VyICkgewotICAgIGogPSAwOwot
ICAgIHdoaWxlICggKGNsYXp6ID0gY2xhc3Nlc1tqKytdKSApIHsKLSAgICAvLyBSZW1vdmUgKmFs
bCogaW5zdGFuY2VzCi0gICAgd2hpbGUgKCBjdXIuaW5kZXhPZiggIiAiICsgY2xhenogKyAiICIg
KSA+PSAwICkgewotICAgIGN1ciA9IGN1ci5yZXBsYWNlKCAiICIgKyBjbGF6eiArICIgIiwgIiAi
ICk7Ci0gICAgfQotICAgIH0KLSAgICBlbGVtLmNsYXNzTmFtZSA9IHZhbHVlID8galF1ZXJ5LnRy
aW0oIGN1ciApIDogIiI7Ci0gICAgfQotICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gdGhpczsK
LSAgICB9LAotCi0gICAgdG9nZ2xlQ2xhc3M6IGZ1bmN0aW9uKCB2YWx1ZSwgc3RhdGVWYWwgKSB7
Ci0gICAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWUsCi0gICAgaXNCb29sID0gdHlwZW9mIHN0YXRl
VmFsID09PSAiYm9vbGVhbiI7Ci0KLSAgICBpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCB2YWx1ZSAp
ICkgewotICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oIGkgKSB7Ci0gICAgalF1ZXJ5KCB0
aGlzICkudG9nZ2xlQ2xhc3MoIHZhbHVlLmNhbGwodGhpcywgaSwgdGhpcy5jbGFzc05hbWUsIHN0
YXRlVmFsKSwgc3RhdGVWYWwgKTsKLSAgICB9KTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdGhpcy5l
YWNoKGZ1bmN0aW9uKCkgewotICAgIGlmICggdHlwZSA9PT0gInN0cmluZyIgKSB7Ci0gICAgLy8g
dG9nZ2xlIGluZGl2aWR1YWwgY2xhc3MgbmFtZXMKLSAgICB2YXIgY2xhc3NOYW1lLAotICAgIGkg
PSAwLAotICAgIHNlbGYgPSBqUXVlcnkoIHRoaXMgKSwKLSAgICBzdGF0ZSA9IHN0YXRlVmFsLAot
ICAgIGNsYXNzTmFtZXMgPSB2YWx1ZS5tYXRjaCggY29yZV9ybm90d2hpdGUgKSB8fCBbXTsKLQot
ICAgIHdoaWxlICggKGNsYXNzTmFtZSA9IGNsYXNzTmFtZXNbIGkrKyBdKSApIHsKLSAgICAvLyBj
aGVjayBlYWNoIGNsYXNzTmFtZSBnaXZlbiwgc3BhY2Ugc2VwYXJhdGVkIGxpc3QKLSAgICBzdGF0
ZSA9IGlzQm9vbCA/IHN0YXRlIDogIXNlbGYuaGFzQ2xhc3MoIGNsYXNzTmFtZSApOwotICAgIHNl
bGZbIHN0YXRlID8gImFkZENsYXNzIiA6ICJyZW1vdmVDbGFzcyIgXSggY2xhc3NOYW1lICk7Ci0g
ICAgfQotCi0gICAgLy8gVG9nZ2xlIHdob2xlIGNsYXNzIG5hbWUKLSAgICB9IGVsc2UgaWYgKCB0
eXBlID09PSBjb3JlX3N0cnVuZGVmaW5lZCB8fCB0eXBlID09PSAiYm9vbGVhbiIgKSB7Ci0gICAg
aWYgKCB0aGlzLmNsYXNzTmFtZSApIHsKLSAgICAvLyBzdG9yZSBjbGFzc05hbWUgaWYgc2V0Ci0g
ICAgalF1ZXJ5Ll9kYXRhKCB0aGlzLCAiX19jbGFzc05hbWVfXyIsIHRoaXMuY2xhc3NOYW1lICk7
Ci0gICAgfQotCi0gICAgLy8gSWYgdGhlIGVsZW1lbnQgaGFzIGEgY2xhc3MgbmFtZSBvciBpZiB3
ZSdyZSBwYXNzZWQgImZhbHNlIiwKLSAgICAvLyB0aGVuIHJlbW92ZSB0aGUgd2hvbGUgY2xhc3Nu
YW1lIChpZiB0aGVyZSB3YXMgb25lLCB0aGUgYWJvdmUgc2F2ZWQgaXQpLgotICAgIC8vIE90aGVy
d2lzZSBicmluZyBiYWNrIHdoYXRldmVyIHdhcyBwcmV2aW91c2x5IHNhdmVkIChpZiBhbnl0aGlu
ZyksCi0gICAgLy8gZmFsbGluZyBiYWNrIHRvIHRoZSBlbXB0eSBzdHJpbmcgaWYgbm90aGluZyB3
YXMgc3RvcmVkLgotICAgIHRoaXMuY2xhc3NOYW1lID0gdGhpcy5jbGFzc05hbWUgfHwgdmFsdWUg
PT09IGZhbHNlID8gIiIgOiBqUXVlcnkuX2RhdGEoIHRoaXMsICJfX2NsYXNzTmFtZV9fIiApIHx8
ICIiOwotICAgIH0KLSAgICB9KTsKLSAgICB9LAotCi0gICAgaGFzQ2xhc3M6IGZ1bmN0aW9uKCBz
ZWxlY3RvciApIHsKLSAgICB2YXIgY2xhc3NOYW1lID0gIiAiICsgc2VsZWN0b3IgKyAiICIsCi0g
ICAgaSA9IDAsCi0gICAgbCA9IHRoaXMubGVuZ3RoOwotICAgIGZvciAoIDsgaSA8IGw7IGkrKyAp
IHsKLSAgICBpZiAoIHRoaXNbaV0ubm9kZVR5cGUgPT09IDEgJiYgKCIgIiArIHRoaXNbaV0uY2xh
c3NOYW1lICsgIiAiKS5yZXBsYWNlKHJjbGFzcywgIiAiKS5pbmRleE9mKCBjbGFzc05hbWUgKSA+
PSAwICkgewotICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfSwKLQotICAgIHZhbDogZnVuY3Rpb24oIHZhbHVlICkgewotICAgIHZhciByZXQs
IGhvb2tzLCBpc0Z1bmN0aW9uLAotICAgIGVsZW0gPSB0aGlzWzBdOwotCi0gICAgaWYgKCAhYXJn
dW1lbnRzLmxlbmd0aCApIHsKLSAgICBpZiAoIGVsZW0gKSB7Ci0gICAgaG9va3MgPSBqUXVlcnku
dmFsSG9va3NbIGVsZW0udHlwZSBdIHx8IGpRdWVyeS52YWxIb29rc1sgZWxlbS5ub2RlTmFtZS50
b0xvd2VyQ2FzZSgpIF07Ci0KLSAgICBpZiAoIGhvb2tzICYmICJnZXQiIGluIGhvb2tzICYmIChy
ZXQgPSBob29rcy5nZXQoIGVsZW0sICJ2YWx1ZSIgKSkgIT09IHVuZGVmaW5lZCApIHsKLSAgICBy
ZXR1cm4gcmV0OwotICAgIH0KLQotICAgIHJldCA9IGVsZW0udmFsdWU7Ci0KLSAgICByZXR1cm4g
dHlwZW9mIHJldCA9PT0gInN0cmluZyIgPwotICAgIC8vIGhhbmRsZSBtb3N0IGNvbW1vbiBzdHJp
bmcgY2FzZXMKLSAgICByZXQucmVwbGFjZShycmV0dXJuLCAiIikgOgotICAgIC8vIGhhbmRsZSBj
YXNlcyB3aGVyZSB2YWx1ZSBpcyBudWxsL3VuZGVmIG9yIG51bWJlcgotICAgIHJldCA9PSBudWxs
ID8gIiIgOiByZXQ7Ci0gICAgfQotCi0gICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlzRnVuY3Rp
b24gPSBqUXVlcnkuaXNGdW5jdGlvbiggdmFsdWUgKTsKLQotICAgIHJldHVybiB0aGlzLmVhY2go
ZnVuY3Rpb24oIGkgKSB7Ci0gICAgdmFyIHZhbCwKLSAgICBzZWxmID0galF1ZXJ5KHRoaXMpOwot
Ci0gICAgaWYgKCB0aGlzLm5vZGVUeXBlICE9PSAxICkgewotICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBpZiAoIGlzRnVuY3Rpb24gKSB7Ci0gICAgdmFsID0gdmFsdWUuY2FsbCggdGhpcywgaSwg
c2VsZi52YWwoKSApOwotICAgIH0gZWxzZSB7Ci0gICAgdmFsID0gdmFsdWU7Ci0gICAgfQotCi0g
ICAgLy8gVHJlYXQgbnVsbC91bmRlZmluZWQgYXMgIiI7IGNvbnZlcnQgbnVtYmVycyB0byBzdHJp
bmcKLSAgICBpZiAoIHZhbCA9PSBudWxsICkgewotICAgIHZhbCA9ICIiOwotICAgIH0gZWxzZSBp
ZiAoIHR5cGVvZiB2YWwgPT09ICJudW1iZXIiICkgewotICAgIHZhbCArPSAiIjsKLSAgICB9IGVs
c2UgaWYgKCBqUXVlcnkuaXNBcnJheSggdmFsICkgKSB7Ci0gICAgdmFsID0galF1ZXJ5Lm1hcCh2
YWwsIGZ1bmN0aW9uICggdmFsdWUgKSB7Ci0gICAgcmV0dXJuIHZhbHVlID09IG51bGwgPyAiIiA6
IHZhbHVlICsgIiI7Ci0gICAgfSk7Ci0gICAgfQotCi0gICAgaG9va3MgPSBqUXVlcnkudmFsSG9v
a3NbIHRoaXMudHlwZSBdIHx8IGpRdWVyeS52YWxIb29rc1sgdGhpcy5ub2RlTmFtZS50b0xvd2Vy
Q2FzZSgpIF07Ci0KLSAgICAvLyBJZiBzZXQgcmV0dXJucyB1bmRlZmluZWQsIGZhbGwgYmFjayB0
byBub3JtYWwgc2V0dGluZwotICAgIGlmICggIWhvb2tzIHx8ICEoInNldCIgaW4gaG9va3MpIHx8
IGhvb2tzLnNldCggdGhpcywgdmFsLCAidmFsdWUiICkgPT09IHVuZGVmaW5lZCApIHsKLSAgICB0
aGlzLnZhbHVlID0gdmFsOwotICAgIH0KLSAgICB9KTsKLSAgICB9Ci19KTsKLQotalF1ZXJ5LmV4
dGVuZCh7Ci0gICAgdmFsSG9va3M6IHsKLSAgICBvcHRpb246IHsKLSAgICBnZXQ6IGZ1bmN0aW9u
KCBlbGVtICkgewotICAgIC8vIGF0dHJpYnV0ZXMudmFsdWUgaXMgdW5kZWZpbmVkIGluIEJsYWNr
YmVycnkgNC43IGJ1dAotICAgIC8vIHVzZXMgLnZhbHVlLiBTZWUgIzY5MzIKLSAgICB2YXIgdmFs
ID0gZWxlbS5hdHRyaWJ1dGVzLnZhbHVlOwotICAgIHJldHVybiAhdmFsIHx8IHZhbC5zcGVjaWZp
ZWQgPyBlbGVtLnZhbHVlIDogZWxlbS50ZXh0OwotICAgIH0KLSAgICB9LAotICAgIHNlbGVjdDog
ewotICAgIGdldDogZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgdmFyIHZhbHVlLCBvcHRpb24sCi0g
ICAgb3B0aW9ucyA9IGVsZW0ub3B0aW9ucywKLSAgICBpbmRleCA9IGVsZW0uc2VsZWN0ZWRJbmRl
eCwKLSAgICBvbmUgPSBlbGVtLnR5cGUgPT09ICJzZWxlY3Qtb25lIiB8fCBpbmRleCA8IDAsCi0g
ICAgdmFsdWVzID0gb25lID8gbnVsbCA6IFtdLAotICAgIG1heCA9IG9uZSA/IGluZGV4ICsgMSA6
IG9wdGlvbnMubGVuZ3RoLAotICAgIGkgPSBpbmRleCA8IDAgPwotICAgIG1heCA6Ci0gICAgb25l
ID8gaW5kZXggOiAwOwotCi0gICAgLy8gTG9vcCB0aHJvdWdoIGFsbCB0aGUgc2VsZWN0ZWQgb3B0
aW9ucwotICAgIGZvciAoIDsgaSA8IG1heDsgaSsrICkgewotICAgIG9wdGlvbiA9IG9wdGlvbnNb
IGkgXTsKLQotICAgIC8vIG9sZElFIGRvZXNuJ3QgdXBkYXRlIHNlbGVjdGVkIGFmdGVyIGZvcm0g
cmVzZXQgKCMyNTUxKQotICAgIGlmICggKCBvcHRpb24uc2VsZWN0ZWQgfHwgaSA9PT0gaW5kZXgg
KSAmJgotICAgIC8vIERvbid0IHJldHVybiBvcHRpb25zIHRoYXQgYXJlIGRpc2FibGVkIG9yIGlu
IGEgZGlzYWJsZWQgb3B0Z3JvdXAKLSAgICAoIGpRdWVyeS5zdXBwb3J0Lm9wdERpc2FibGVkID8g
IW9wdGlvbi5kaXNhYmxlZCA6IG9wdGlvbi5nZXRBdHRyaWJ1dGUoImRpc2FibGVkIikgPT09IG51
bGwgKSAmJgotICAgICggIW9wdGlvbi5wYXJlbnROb2RlLmRpc2FibGVkIHx8ICFqUXVlcnkubm9k
ZU5hbWUoIG9wdGlvbi5wYXJlbnROb2RlLCAib3B0Z3JvdXAiICkgKSApIHsKLQotICAgIC8vIEdl
dCB0aGUgc3BlY2lmaWMgdmFsdWUgZm9yIHRoZSBvcHRpb24KLSAgICB2YWx1ZSA9IGpRdWVyeSgg
b3B0aW9uICkudmFsKCk7Ci0KLSAgICAvLyBXZSBkb24ndCBuZWVkIGFuIGFycmF5IGZvciBvbmUg
c2VsZWN0cwotICAgIGlmICggb25lICkgewotICAgIHJldHVybiB2YWx1ZTsKLSAgICB9Ci0KLSAg
ICAvLyBNdWx0aS1TZWxlY3RzIHJldHVybiBhbiBhcnJheQotICAgIHZhbHVlcy5wdXNoKCB2YWx1
ZSApOwotICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gdmFsdWVzOwotICAgIH0sCi0KLSAgICBz
ZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSApIHsKLSAgICB2YXIgdmFsdWVzID0galF1ZXJ5Lm1h
a2VBcnJheSggdmFsdWUgKTsKLQotICAgIGpRdWVyeShlbGVtKS5maW5kKCJvcHRpb24iKS5lYWNo
KGZ1bmN0aW9uKCkgewotICAgIHRoaXMuc2VsZWN0ZWQgPSBqUXVlcnkuaW5BcnJheSggalF1ZXJ5
KHRoaXMpLnZhbCgpLCB2YWx1ZXMgKSA+PSAwOwotICAgIH0pOwotCi0gICAgaWYgKCAhdmFsdWVz
Lmxlbmd0aCApIHsKLSAgICBlbGVtLnNlbGVjdGVkSW5kZXggPSAtMTsKLSAgICB9Ci0gICAgcmV0
dXJuIHZhbHVlczsKLSAgICB9Ci0gICAgfQotICAgIH0sCi0KLSAgICBhdHRyOiBmdW5jdGlvbigg
ZWxlbSwgbmFtZSwgdmFsdWUgKSB7Ci0gICAgdmFyIGhvb2tzLCBub3R4bWwsIHJldCwKLSAgICBu
VHlwZSA9IGVsZW0ubm9kZVR5cGU7Ci0KLSAgICAvLyBkb24ndCBnZXQvc2V0IGF0dHJpYnV0ZXMg
b24gdGV4dCwgY29tbWVudCBhbmQgYXR0cmlidXRlIG5vZGVzCi0gICAgaWYgKCAhZWxlbSB8fCBu
VHlwZSA9PT0gMyB8fCBuVHlwZSA9PT0gOCB8fCBuVHlwZSA9PT0gMiApIHsKLSAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgLy8gRmFsbGJhY2sgdG8gcHJvcCB3aGVuIGF0dHJpYnV0ZXMgYXJlIG5v
dCBzdXBwb3J0ZWQKLSAgICBpZiAoIHR5cGVvZiBlbGVtLmdldEF0dHJpYnV0ZSA9PT0gY29yZV9z
dHJ1bmRlZmluZWQgKSB7Ci0gICAgcmV0dXJuIGpRdWVyeS5wcm9wKCBlbGVtLCBuYW1lLCB2YWx1
ZSApOwotICAgIH0KLQotICAgIG5vdHhtbCA9IG5UeXBlICE9PSAxIHx8ICFqUXVlcnkuaXNYTUxE
b2MoIGVsZW0gKTsKLQotICAgIC8vIEFsbCBhdHRyaWJ1dGVzIGFyZSBsb3dlcmNhc2UKLSAgICAv
LyBHcmFiIG5lY2Vzc2FyeSBob29rIGlmIG9uZSBpcyBkZWZpbmVkCi0gICAgaWYgKCBub3R4bWwg
KSB7Ci0gICAgbmFtZSA9IG5hbWUudG9Mb3dlckNhc2UoKTsKLSAgICBob29rcyA9IGpRdWVyeS5h
dHRySG9va3NbIG5hbWUgXSB8fCAoIHJib29sZWFuLnRlc3QoIG5hbWUgKSA/IGJvb2xIb29rIDog
bm9kZUhvb2sgKTsKLSAgICB9Ci0KLSAgICBpZiAoIHZhbHVlICE9PSB1bmRlZmluZWQgKSB7Ci0K
LSAgICBpZiAoIHZhbHVlID09PSBudWxsICkgewotICAgIGpRdWVyeS5yZW1vdmVBdHRyKCBlbGVt
LCBuYW1lICk7Ci0KLSAgICB9IGVsc2UgaWYgKCBob29rcyAmJiBub3R4bWwgJiYgInNldCIgaW4g
aG9va3MgJiYgKHJldCA9IGhvb2tzLnNldCggZWxlbSwgdmFsdWUsIG5hbWUgKSkgIT09IHVuZGVm
aW5lZCApIHsKLSAgICByZXR1cm4gcmV0OwotCi0gICAgfSBlbHNlIHsKLSAgICBlbGVtLnNldEF0
dHJpYnV0ZSggbmFtZSwgdmFsdWUgKyAiIiApOwotICAgIHJldHVybiB2YWx1ZTsKLSAgICB9Ci0K
LSAgICB9IGVsc2UgaWYgKCBob29rcyAmJiBub3R4bWwgJiYgImdldCIgaW4gaG9va3MgJiYgKHJl
dCA9IGhvb2tzLmdldCggZWxlbSwgbmFtZSApKSAhPT0gbnVsbCApIHsKLSAgICByZXR1cm4gcmV0
OwotCi0gICAgfSBlbHNlIHsKLQotICAgIC8vIEluIElFOSssIEZsYXNoIG9iamVjdHMgZG9uJ3Qg
aGF2ZSAuZ2V0QXR0cmlidXRlICgjMTI5NDUpCi0gICAgLy8gU3VwcG9ydDogSUU5KwotICAgIGlm
ICggdHlwZW9mIGVsZW0uZ2V0QXR0cmlidXRlICE9PSBjb3JlX3N0cnVuZGVmaW5lZCApIHsKLSAg
ICByZXQgPSAgZWxlbS5nZXRBdHRyaWJ1dGUoIG5hbWUgKTsKLSAgICB9Ci0KLSAgICAvLyBOb24t
ZXhpc3RlbnQgYXR0cmlidXRlcyByZXR1cm4gbnVsbCwgd2Ugbm9ybWFsaXplIHRvIHVuZGVmaW5l
ZAotICAgIHJldHVybiByZXQgPT0gbnVsbCA/Ci0gICAgdW5kZWZpbmVkIDoKLSAgICByZXQ7Ci0g
ICAgfQotICAgIH0sCi0KLSAgICByZW1vdmVBdHRyOiBmdW5jdGlvbiggZWxlbSwgdmFsdWUgKSB7
Ci0gICAgdmFyIG5hbWUsIHByb3BOYW1lLAotICAgIGkgPSAwLAotICAgIGF0dHJOYW1lcyA9IHZh
bHVlICYmIHZhbHVlLm1hdGNoKCBjb3JlX3Jub3R3aGl0ZSApOwotCi0gICAgaWYgKCBhdHRyTmFt
ZXMgJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSApIHsKLSAgICB3aGlsZSAoIChuYW1lID0gYXR0ck5h
bWVzW2krK10pICkgewotICAgIHByb3BOYW1lID0galF1ZXJ5LnByb3BGaXhbIG5hbWUgXSB8fCBu
YW1lOwotCi0gICAgLy8gQm9vbGVhbiBhdHRyaWJ1dGVzIGdldCBzcGVjaWFsIHRyZWF0bWVudCAo
IzEwODcwKQotICAgIGlmICggcmJvb2xlYW4udGVzdCggbmFtZSApICkgewotICAgIC8vIFNldCBj
b3JyZXNwb25kaW5nIHByb3BlcnR5IHRvIGZhbHNlIGZvciBib29sZWFuIGF0dHJpYnV0ZXMKLSAg
ICAvLyBBbHNvIGNsZWFyIGRlZmF1bHRDaGVja2VkL2RlZmF1bHRTZWxlY3RlZCAoaWYgYXBwcm9w
cmlhdGUpIGZvciBJRTw4Ci0gICAgaWYgKCAhZ2V0U2V0QXR0cmlidXRlICYmIHJ1c2VEZWZhdWx0
LnRlc3QoIG5hbWUgKSApIHsKLSAgICBlbGVtWyBqUXVlcnkuY2FtZWxDYXNlKCAiZGVmYXVsdC0i
ICsgbmFtZSApIF0gPQotICAgIGVsZW1bIHByb3BOYW1lIF0gPSBmYWxzZTsKLSAgICB9IGVsc2Ug
ewotICAgIGVsZW1bIHByb3BOYW1lIF0gPSBmYWxzZTsKLSAgICB9Ci0KLSAgICAvLyBTZWUgIzk2
OTkgZm9yIGV4cGxhbmF0aW9uIG9mIHRoaXMgYXBwcm9hY2ggKHNldHRpbmcgZmlyc3QsIHRoZW4g
cmVtb3ZhbCkKLSAgICB9IGVsc2UgewotICAgIGpRdWVyeS5hdHRyKCBlbGVtLCBuYW1lLCAiIiAp
OwotICAgIH0KLQotICAgIGVsZW0ucmVtb3ZlQXR0cmlidXRlKCBnZXRTZXRBdHRyaWJ1dGUgPyBu
YW1lIDogcHJvcE5hbWUgKTsKLSAgICB9Ci0gICAgfQotICAgIH0sCi0KLSAgICBhdHRySG9va3M6
IHsKLSAgICB0eXBlOiB7Ci0gICAgc2V0OiBmdW5jdGlvbiggZWxlbSwgdmFsdWUgKSB7Ci0gICAg
aWYgKCAhalF1ZXJ5LnN1cHBvcnQucmFkaW9WYWx1ZSAmJiB2YWx1ZSA9PT0gInJhZGlvIiAmJiBq
UXVlcnkubm9kZU5hbWUoZWxlbSwgImlucHV0IikgKSB7Ci0gICAgLy8gU2V0dGluZyB0aGUgdHlw
ZSBvbiBhIHJhZGlvIGJ1dHRvbiBhZnRlciB0aGUgdmFsdWUgcmVzZXRzIHRoZSB2YWx1ZSBpbiBJ
RTYtOQotICAgIC8vIFJlc2V0IHZhbHVlIHRvIGRlZmF1bHQgaW4gY2FzZSB0eXBlIGlzIHNldCBh
ZnRlciB2YWx1ZSBkdXJpbmcgY3JlYXRpb24KLSAgICB2YXIgdmFsID0gZWxlbS52YWx1ZTsKLSAg
ICBlbGVtLnNldEF0dHJpYnV0ZSggInR5cGUiLCB2YWx1ZSApOwotICAgIGlmICggdmFsICkgewot
ICAgIGVsZW0udmFsdWUgPSB2YWw7Ci0gICAgfQotICAgIHJldHVybiB2YWx1ZTsKLSAgICB9Ci0g
ICAgfQotICAgIH0KLSAgICB9LAotCi0gICAgcHJvcEZpeDogewotICAgIHRhYmluZGV4OiAidGFi
SW5kZXgiLAotICAgIHJlYWRvbmx5OiAicmVhZE9ubHkiLAotICAgICJmb3IiOiAiaHRtbEZvciIs
Ci0gICAgImNsYXNzIjogImNsYXNzTmFtZSIsCi0gICAgbWF4bGVuZ3RoOiAibWF4TGVuZ3RoIiwK
LSAgICBjZWxsc3BhY2luZzogImNlbGxTcGFjaW5nIiwKLSAgICBjZWxscGFkZGluZzogImNlbGxQ
YWRkaW5nIiwKLSAgICByb3dzcGFuOiAicm93U3BhbiIsCi0gICAgY29sc3BhbjogImNvbFNwYW4i
LAotICAgIHVzZW1hcDogInVzZU1hcCIsCi0gICAgZnJhbWVib3JkZXI6ICJmcmFtZUJvcmRlciIs
Ci0gICAgY29udGVudGVkaXRhYmxlOiAiY29udGVudEVkaXRhYmxlIgotICAgIH0sCi0KLSAgICBw
cm9wOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgdmFsdWUgKSB7Ci0gICAgdmFyIHJldCwgaG9va3Ms
IG5vdHhtbCwKLSAgICBuVHlwZSA9IGVsZW0ubm9kZVR5cGU7Ci0KLSAgICAvLyBkb24ndCBnZXQv
c2V0IHByb3BlcnRpZXMgb24gdGV4dCwgY29tbWVudCBhbmQgYXR0cmlidXRlIG5vZGVzCi0gICAg
aWYgKCAhZWxlbSB8fCBuVHlwZSA9PT0gMyB8fCBuVHlwZSA9PT0gOCB8fCBuVHlwZSA9PT0gMiAp
IHsKLSAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbm90eG1sID0gblR5cGUgIT09IDEgfHwgIWpR
dWVyeS5pc1hNTERvYyggZWxlbSApOwotCi0gICAgaWYgKCBub3R4bWwgKSB7Ci0gICAgLy8gRml4
IG5hbWUgYW5kIGF0dGFjaCBob29rcwotICAgIG5hbWUgPSBqUXVlcnkucHJvcEZpeFsgbmFtZSBd
IHx8IG5hbWU7Ci0gICAgaG9va3MgPSBqUXVlcnkucHJvcEhvb2tzWyBuYW1lIF07Ci0gICAgfQot
Ci0gICAgaWYgKCB2YWx1ZSAhPT0gdW5kZWZpbmVkICkgewotICAgIGlmICggaG9va3MgJiYgInNl
dCIgaW4gaG9va3MgJiYgKHJldCA9IGhvb2tzLnNldCggZWxlbSwgdmFsdWUsIG5hbWUgKSkgIT09
IHVuZGVmaW5lZCApIHsKLSAgICByZXR1cm4gcmV0OwotCi0gICAgfSBlbHNlIHsKLSAgICByZXR1
cm4gKCBlbGVtWyBuYW1lIF0gPSB2YWx1ZSApOwotICAgIH0KLQotICAgIH0gZWxzZSB7Ci0gICAg
aWYgKCBob29rcyAmJiAiZ2V0IiBpbiBob29rcyAmJiAocmV0ID0gaG9va3MuZ2V0KCBlbGVtLCBu
YW1lICkpICE9PSBudWxsICkgewotICAgIHJldHVybiByZXQ7Ci0KLSAgICB9IGVsc2UgewotICAg
IHJldHVybiBlbGVtWyBuYW1lIF07Ci0gICAgfQotICAgIH0KLSAgICB9LAotCi0gICAgcHJvcEhv
b2tzOiB7Ci0gICAgdGFiSW5kZXg6IHsKLSAgICBnZXQ6IGZ1bmN0aW9uKCBlbGVtICkgewotICAg
IC8vIGVsZW0udGFiSW5kZXggZG9lc24ndCBhbHdheXMgcmV0dXJuIHRoZSBjb3JyZWN0IHZhbHVl
IHdoZW4gaXQgaGFzbid0IGJlZW4gZXhwbGljaXRseSBzZXQKLSAgICAvLyBodHRwOi8vZmx1aWRw
cm9qZWN0Lm9yZy9ibG9nLzIwMDgvMDEvMDkvZ2V0dGluZy1zZXR0aW5nLWFuZC1yZW1vdmluZy10
YWJpbmRleC12YWx1ZXMtd2l0aC1qYXZhc2NyaXB0LwotICAgIHZhciBhdHRyaWJ1dGVOb2RlID0g
ZWxlbS5nZXRBdHRyaWJ1dGVOb2RlKCJ0YWJpbmRleCIpOwotCi0gICAgcmV0dXJuIGF0dHJpYnV0
ZU5vZGUgJiYgYXR0cmlidXRlTm9kZS5zcGVjaWZpZWQgPwotICAgIHBhcnNlSW50KCBhdHRyaWJ1
dGVOb2RlLnZhbHVlLCAxMCApIDoKLSAgICByZm9jdXNhYmxlLnRlc3QoIGVsZW0ubm9kZU5hbWUg
KSB8fCByY2xpY2thYmxlLnRlc3QoIGVsZW0ubm9kZU5hbWUgKSAmJiBlbGVtLmhyZWYgPwotICAg
IDAgOgotICAgIHVuZGVmaW5lZDsKLSAgICB9Ci0gICAgfQotICAgIH0KLX0pOwotCi0vLyBIb29r
IGZvciBib29sZWFuIGF0dHJpYnV0ZXMKLWJvb2xIb29rID0gewotICAgIGdldDogZnVuY3Rpb24o
IGVsZW0sIG5hbWUgKSB7Ci0gICAgdmFyCi0gICAgLy8gVXNlIC5wcm9wIHRvIGRldGVybWluZSBp
ZiB0aGlzIGF0dHJpYnV0ZSBpcyB1bmRlcnN0b29kIGFzIGJvb2xlYW4KLSAgICBwcm9wID0galF1
ZXJ5LnByb3AoIGVsZW0sIG5hbWUgKSwKLQotICAgIC8vIEZldGNoIGl0IGFjY29yZGluZ2x5Ci0g
ICAgYXR0ciA9IHR5cGVvZiBwcm9wID09PSAiYm9vbGVhbiIgJiYgZWxlbS5nZXRBdHRyaWJ1dGUo
IG5hbWUgKSwKLSAgICBkZXRhaWwgPSB0eXBlb2YgcHJvcCA9PT0gImJvb2xlYW4iID8KLQotICAg
IGdldFNldElucHV0ICYmIGdldFNldEF0dHJpYnV0ZSA/Ci0gICAgYXR0ciAhPSBudWxsIDoKLSAg
ICAvLyBvbGRJRSBmYWJyaWNhdGVzIGFuIGVtcHR5IHN0cmluZyBmb3IgbWlzc2luZyBib29sZWFu
IGF0dHJpYnV0ZXMKLSAgICAvLyBhbmQgY29uZmxhdGVzIGNoZWNrZWQvc2VsZWN0ZWQgaW50byBh
dHRyb3BlcnRpZXMKLSAgICBydXNlRGVmYXVsdC50ZXN0KCBuYW1lICkgPwotICAgIGVsZW1bIGpR
dWVyeS5jYW1lbENhc2UoICJkZWZhdWx0LSIgKyBuYW1lICkgXSA6Ci0gICAgISFhdHRyIDoKLQot
ICAgIC8vIGZldGNoIGFuIGF0dHJpYnV0ZSBub2RlIGZvciBwcm9wZXJ0aWVzIG5vdCByZWNvZ25p
emVkIGFzIGJvb2xlYW4KLSAgICBlbGVtLmdldEF0dHJpYnV0ZU5vZGUoIG5hbWUgKTsKLQotICAg
IHJldHVybiBkZXRhaWwgJiYgZGV0YWlsLnZhbHVlICE9PSBmYWxzZSA/Ci0gICAgbmFtZS50b0xv
d2VyQ2FzZSgpIDoKLSAgICB1bmRlZmluZWQ7Ci0gICAgfSwKLSAgICBzZXQ6IGZ1bmN0aW9uKCBl
bGVtLCB2YWx1ZSwgbmFtZSApIHsKLSAgICBpZiAoIHZhbHVlID09PSBmYWxzZSApIHsKLSAgICAv
LyBSZW1vdmUgYm9vbGVhbiBhdHRyaWJ1dGVzIHdoZW4gc2V0IHRvIGZhbHNlCi0gICAgalF1ZXJ5
LnJlbW92ZUF0dHIoIGVsZW0sIG5hbWUgKTsKLSAgICB9IGVsc2UgaWYgKCBnZXRTZXRJbnB1dCAm
JiBnZXRTZXRBdHRyaWJ1dGUgfHwgIXJ1c2VEZWZhdWx0LnRlc3QoIG5hbWUgKSApIHsKLSAgICAv
LyBJRTw4IG5lZWRzIHRoZSAqcHJvcGVydHkqIG5hbWUKLSAgICBlbGVtLnNldEF0dHJpYnV0ZSgg
IWdldFNldEF0dHJpYnV0ZSAmJiBqUXVlcnkucHJvcEZpeFsgbmFtZSBdIHx8IG5hbWUsIG5hbWUg
KTsKLQotICAgIC8vIFVzZSBkZWZhdWx0Q2hlY2tlZCBhbmQgZGVmYXVsdFNlbGVjdGVkIGZvciBv
bGRJRQotICAgIH0gZWxzZSB7Ci0gICAgZWxlbVsgalF1ZXJ5LmNhbWVsQ2FzZSggImRlZmF1bHQt
IiArIG5hbWUgKSBdID0gZWxlbVsgbmFtZSBdID0gdHJ1ZTsKLSAgICB9Ci0KLSAgICByZXR1cm4g
bmFtZTsKLSAgICB9Ci19OwotCi0vLyBmaXggb2xkSUUgdmFsdWUgYXR0cm9wZXJ0eQotaWYgKCAh
Z2V0U2V0SW5wdXQgfHwgIWdldFNldEF0dHJpYnV0ZSApIHsKLSAgICBqUXVlcnkuYXR0ckhvb2tz
LnZhbHVlID0gewotICAgIGdldDogZnVuY3Rpb24oIGVsZW0sIG5hbWUgKSB7Ci0gICAgdmFyIHJl
dCA9IGVsZW0uZ2V0QXR0cmlidXRlTm9kZSggbmFtZSApOwotICAgIHJldHVybiBqUXVlcnkubm9k
ZU5hbWUoIGVsZW0sICJpbnB1dCIgKSA/Ci0KLSAgICAvLyBJZ25vcmUgdGhlIHZhbHVlICpwcm9w
ZXJ0eSogYnkgdXNpbmcgZGVmYXVsdFZhbHVlCi0gICAgZWxlbS5kZWZhdWx0VmFsdWUgOgotCi0g
ICAgcmV0ICYmIHJldC5zcGVjaWZpZWQgPyByZXQudmFsdWUgOiB1bmRlZmluZWQ7Ci0gICAgfSwK
LSAgICBzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSwgbmFtZSApIHsKLSAgICBpZiAoIGpRdWVy
eS5ub2RlTmFtZSggZWxlbSwgImlucHV0IiApICkgewotICAgIC8vIERvZXMgbm90IHJldHVybiBz
byB0aGF0IHNldEF0dHJpYnV0ZSBpcyBhbHNvIHVzZWQKLSAgICBlbGVtLmRlZmF1bHRWYWx1ZSA9
IHZhbHVlOwotICAgIH0gZWxzZSB7Ci0gICAgLy8gVXNlIG5vZGVIb29rIGlmIGRlZmluZWQgKCMx
OTU0KTsgb3RoZXJ3aXNlIHNldEF0dHJpYnV0ZSBpcyBmaW5lCi0gICAgcmV0dXJuIG5vZGVIb29r
ICYmIG5vZGVIb29rLnNldCggZWxlbSwgdmFsdWUsIG5hbWUgKTsKLSAgICB9Ci0gICAgfQotICAg
IH07Ci19Ci0KLS8vIElFNi83IGRvIG5vdCBzdXBwb3J0IGdldHRpbmcvc2V0dGluZyBzb21lIGF0
dHJpYnV0ZXMgd2l0aCBnZXQvc2V0QXR0cmlidXRlCi1pZiAoICFnZXRTZXRBdHRyaWJ1dGUgKSB7
Ci0KLSAgICAvLyBVc2UgdGhpcyBmb3IgYW55IGF0dHJpYnV0ZSBpbiBJRTYvNwotICAgIC8vIFRo
aXMgZml4ZXMgYWxtb3N0IGV2ZXJ5IElFNi83IGlzc3VlCi0gICAgbm9kZUhvb2sgPSBqUXVlcnku
dmFsSG9va3MuYnV0dG9uID0gewotICAgIGdldDogZnVuY3Rpb24oIGVsZW0sIG5hbWUgKSB7Ci0g
ICAgdmFyIHJldCA9IGVsZW0uZ2V0QXR0cmlidXRlTm9kZSggbmFtZSApOwotICAgIHJldHVybiBy
ZXQgJiYgKCBuYW1lID09PSAiaWQiIHx8IG5hbWUgPT09ICJuYW1lIiB8fCBuYW1lID09PSAiY29v
cmRzIiA/IHJldC52YWx1ZSAhPT0gIiIgOiByZXQuc3BlY2lmaWVkICkgPwotICAgIHJldC52YWx1
ZSA6Ci0gICAgdW5kZWZpbmVkOwotICAgIH0sCi0gICAgc2V0OiBmdW5jdGlvbiggZWxlbSwgdmFs
dWUsIG5hbWUgKSB7Ci0gICAgLy8gU2V0IHRoZSBleGlzdGluZyBvciBjcmVhdGUgYSBuZXcgYXR0
cmlidXRlIG5vZGUKLSAgICB2YXIgcmV0ID0gZWxlbS5nZXRBdHRyaWJ1dGVOb2RlKCBuYW1lICk7
Ci0gICAgaWYgKCAhcmV0ICkgewotICAgIGVsZW0uc2V0QXR0cmlidXRlTm9kZSgKLSAgICAocmV0
ID0gZWxlbS5vd25lckRvY3VtZW50LmNyZWF0ZUF0dHJpYnV0ZSggbmFtZSApKQotICAgICk7Ci0g
ICAgfQotCi0gICAgcmV0LnZhbHVlID0gdmFsdWUgKz0gIiI7Ci0KLSAgICAvLyBCcmVhayBhc3Nv
Y2lhdGlvbiB3aXRoIGNsb25lZCBlbGVtZW50cyBieSBhbHNvIHVzaW5nIHNldEF0dHJpYnV0ZSAo
Izk2NDYpCi0gICAgcmV0dXJuIG5hbWUgPT09ICJ2YWx1ZSIgfHwgdmFsdWUgPT09IGVsZW0uZ2V0
QXR0cmlidXRlKCBuYW1lICkgPwotICAgIHZhbHVlIDoKLSAgICB1bmRlZmluZWQ7Ci0gICAgfQot
ICAgIH07Ci0KLSAgICAvLyBTZXQgY29udGVudGVkaXRhYmxlIHRvIGZhbHNlIG9uIHJlbW92YWxz
KCMxMDQyOSkKLSAgICAvLyBTZXR0aW5nIHRvIGVtcHR5IHN0cmluZyB0aHJvd3MgYW4gZXJyb3Ig
YXMgYW4gaW52YWxpZCB2YWx1ZQotICAgIGpRdWVyeS5hdHRySG9va3MuY29udGVudGVkaXRhYmxl
ID0gewotICAgIGdldDogbm9kZUhvb2suZ2V0LAotICAgIHNldDogZnVuY3Rpb24oIGVsZW0sIHZh
bHVlLCBuYW1lICkgewotICAgIG5vZGVIb29rLnNldCggZWxlbSwgdmFsdWUgPT09ICIiID8gZmFs
c2UgOiB2YWx1ZSwgbmFtZSApOwotICAgIH0KLSAgICB9OwotCi0gICAgLy8gU2V0IHdpZHRoIGFu
ZCBoZWlnaHQgdG8gYXV0byBpbnN0ZWFkIG9mIDAgb24gZW1wdHkgc3RyaW5nKCBCdWcgIzgxNTAg
KQotICAgIC8vIFRoaXMgaXMgZm9yIHJlbW92YWxzCi0gICAgalF1ZXJ5LmVhY2goWyAid2lkdGgi
LCAiaGVpZ2h0IiBdLCBmdW5jdGlvbiggaSwgbmFtZSApIHsKLSAgICBqUXVlcnkuYXR0ckhvb2tz
WyBuYW1lIF0gPSBqUXVlcnkuZXh0ZW5kKCBqUXVlcnkuYXR0ckhvb2tzWyBuYW1lIF0sIHsKLSAg
ICBzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSApIHsKLSAgICBpZiAoIHZhbHVlID09PSAiIiAp
IHsKLSAgICBlbGVtLnNldEF0dHJpYnV0ZSggbmFtZSwgImF1dG8iICk7Ci0gICAgcmV0dXJuIHZh
bHVlOwotICAgIH0KLSAgICB9Ci0gICAgfSk7Ci0gICAgfSk7Ci19Ci0KLQotLy8gU29tZSBhdHRy
aWJ1dGVzIHJlcXVpcmUgYSBzcGVjaWFsIGNhbGwgb24gSUUKLS8vIGh0dHA6Ly9tc2RuLm1pY3Jv
c29mdC5jb20vZW4tdXMvbGlicmFyeS9tczUzNjQyOSUyOFZTLjg1JTI5LmFzcHgKLWlmICggIWpR
dWVyeS5zdXBwb3J0LmhyZWZOb3JtYWxpemVkICkgewotICAgIGpRdWVyeS5lYWNoKFsgImhyZWYi
LCAic3JjIiwgIndpZHRoIiwgImhlaWdodCIgXSwgZnVuY3Rpb24oIGksIG5hbWUgKSB7Ci0gICAg
alF1ZXJ5LmF0dHJIb29rc1sgbmFtZSBdID0galF1ZXJ5LmV4dGVuZCggalF1ZXJ5LmF0dHJIb29r
c1sgbmFtZSBdLCB7Ci0gICAgZ2V0OiBmdW5jdGlvbiggZWxlbSApIHsKLSAgICB2YXIgcmV0ID0g
ZWxlbS5nZXRBdHRyaWJ1dGUoIG5hbWUsIDIgKTsKLSAgICByZXR1cm4gcmV0ID09IG51bGwgPyB1
bmRlZmluZWQgOiByZXQ7Ci0gICAgfQotICAgIH0pOwotICAgIH0pOwotCi0gICAgLy8gaHJlZi9z
cmMgcHJvcGVydHkgc2hvdWxkIGdldCB0aGUgZnVsbCBub3JtYWxpemVkIFVSTCAoIzEwMjk5LyMx
MjkxNSkKLSAgICBqUXVlcnkuZWFjaChbICJocmVmIiwgInNyYyIgXSwgZnVuY3Rpb24oIGksIG5h
bWUgKSB7Ci0gICAgalF1ZXJ5LnByb3BIb29rc1sgbmFtZSBdID0gewotICAgIGdldDogZnVuY3Rp
b24oIGVsZW0gKSB7Ci0gICAgcmV0dXJuIGVsZW0uZ2V0QXR0cmlidXRlKCBuYW1lLCA0ICk7Ci0g
ICAgfQotICAgIH07Ci0gICAgfSk7Ci19Ci0KLWlmICggIWpRdWVyeS5zdXBwb3J0LnN0eWxlICkg
ewotICAgIGpRdWVyeS5hdHRySG9va3Muc3R5bGUgPSB7Ci0gICAgZ2V0OiBmdW5jdGlvbiggZWxl
bSApIHsKLSAgICAvLyBSZXR1cm4gdW5kZWZpbmVkIGluIHRoZSBjYXNlIG9mIGVtcHR5IHN0cmlu
ZwotICAgIC8vIE5vdGU6IElFIHVwcGVyY2FzZXMgY3NzIHByb3BlcnR5IG5hbWVzLCBidXQgaWYg
d2Ugd2VyZSB0byAudG9Mb3dlckNhc2UoKQotICAgIC8vIC5jc3NUZXh0LCB0aGF0IHdvdWxkIGRl
c3Ryb3kgY2FzZSBzZW5zdGl0aXZpdHkgaW4gVVJMJ3MsIGxpa2UgaW4gImJhY2tncm91bmQiCi0g
ICAgcmV0dXJuIGVsZW0uc3R5bGUuY3NzVGV4dCB8fCB1bmRlZmluZWQ7Ci0gICAgfSwKLSAgICBz
ZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSApIHsKLSAgICByZXR1cm4gKCBlbGVtLnN0eWxlLmNz
c1RleHQgPSB2YWx1ZSArICIiICk7Ci0gICAgfQotICAgIH07Ci19Ci0KLS8vIFNhZmFyaSBtaXMt
cmVwb3J0cyB0aGUgZGVmYXVsdCBzZWxlY3RlZCBwcm9wZXJ0eSBvZiBhbiBvcHRpb24KLS8vIEFj
Y2Vzc2luZyB0aGUgcGFyZW50J3Mgc2VsZWN0ZWRJbmRleCBwcm9wZXJ0eSBmaXhlcyBpdAotaWYg
KCAhalF1ZXJ5LnN1cHBvcnQub3B0U2VsZWN0ZWQgKSB7Ci0gICAgalF1ZXJ5LnByb3BIb29rcy5z
ZWxlY3RlZCA9IGpRdWVyeS5leHRlbmQoIGpRdWVyeS5wcm9wSG9va3Muc2VsZWN0ZWQsIHsKLSAg
ICBnZXQ6IGZ1bmN0aW9uKCBlbGVtICkgewotICAgIHZhciBwYXJlbnQgPSBlbGVtLnBhcmVudE5v
ZGU7Ci0KLSAgICBpZiAoIHBhcmVudCApIHsKLSAgICBwYXJlbnQuc2VsZWN0ZWRJbmRleDsKLQot
ICAgIC8vIE1ha2Ugc3VyZSB0aGF0IGl0IGFsc28gd29ya3Mgd2l0aCBvcHRncm91cHMsIHNlZSAj
NTcwMQotICAgIGlmICggcGFyZW50LnBhcmVudE5vZGUgKSB7Ci0gICAgcGFyZW50LnBhcmVudE5v
ZGUuc2VsZWN0ZWRJbmRleDsKLSAgICB9Ci0gICAgfQotICAgIHJldHVybiBudWxsOwotICAgIH0K
LSAgICB9KTsKLX0KLQotLy8gSUU2LzcgY2FsbCBlbmN0eXBlIGVuY29kaW5nCi1pZiAoICFqUXVl
cnkuc3VwcG9ydC5lbmN0eXBlICkgewotICAgIGpRdWVyeS5wcm9wRml4LmVuY3R5cGUgPSAiZW5j
b2RpbmciOwotfQotCi0vLyBSYWRpb3MgYW5kIGNoZWNrYm94ZXMgZ2V0dGVyL3NldHRlcgotaWYg
KCAhalF1ZXJ5LnN1cHBvcnQuY2hlY2tPbiApIHsKLSAgICBqUXVlcnkuZWFjaChbICJyYWRpbyIs
ICJjaGVja2JveCIgXSwgZnVuY3Rpb24oKSB7Ci0gICAgalF1ZXJ5LnZhbEhvb2tzWyB0aGlzIF0g
PSB7Ci0gICAgZ2V0OiBmdW5jdGlvbiggZWxlbSApIHsKLSAgICAvLyBIYW5kbGUgdGhlIGNhc2Ug
d2hlcmUgaW4gV2Via2l0ICIiIGlzIHJldHVybmVkIGluc3RlYWQgb2YgIm9uIiBpZiBhIHZhbHVl
IGlzbid0IHNwZWNpZmllZAotICAgIHJldHVybiBlbGVtLmdldEF0dHJpYnV0ZSgidmFsdWUiKSA9
PT0gbnVsbCA/ICJvbiIgOiBlbGVtLnZhbHVlOwotICAgIH0KLSAgICB9OwotICAgIH0pOwotfQot
alF1ZXJ5LmVhY2goWyAicmFkaW8iLCAiY2hlY2tib3giIF0sIGZ1bmN0aW9uKCkgewotICAgIGpR
dWVyeS52YWxIb29rc1sgdGhpcyBdID0galF1ZXJ5LmV4dGVuZCggalF1ZXJ5LnZhbEhvb2tzWyB0
aGlzIF0sIHsKLSAgICBzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSApIHsKLSAgICBpZiAoIGpR
dWVyeS5pc0FycmF5KCB2YWx1ZSApICkgewotICAgIHJldHVybiAoIGVsZW0uY2hlY2tlZCA9IGpR
dWVyeS5pbkFycmF5KCBqUXVlcnkoZWxlbSkudmFsKCksIHZhbHVlICkgPj0gMCApOwotICAgIH0K
LSAgICB9Ci0gICAgfSk7Ci19KTsKLXZhciByZm9ybUVsZW1zID0gL14oPzppbnB1dHxzZWxlY3R8
dGV4dGFyZWEpJC9pLAotICAgIHJrZXlFdmVudCA9IC9ea2V5LywKLSAgICBybW91c2VFdmVudCA9
IC9eKD86bW91c2V8Y29udGV4dG1lbnUpfGNsaWNrLywKLSAgICByZm9jdXNNb3JwaCA9IC9eKD86
Zm9jdXNpbmZvY3VzfGZvY3Vzb3V0Ymx1cikkLywKLSAgICBydHlwZW5hbWVzcGFjZSA9IC9eKFte
Ll0qKSg/OlwuKC4rKXwpJC87Ci0KLWZ1bmN0aW9uIHJldHVyblRydWUoKSB7Ci0gICAgcmV0dXJu
IHRydWU7Ci19Ci0KLWZ1bmN0aW9uIHJldHVybkZhbHNlKCkgewotICAgIHJldHVybiBmYWxzZTsK
LX0KLQotLyoKLSAqIEhlbHBlciBmdW5jdGlvbnMgZm9yIG1hbmFnaW5nIGV2ZW50cyAtLSBub3Qg
cGFydCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4KLSAqIFByb3BzIHRvIERlYW4gRWR3YXJkcycg
YWRkRXZlbnQgbGlicmFyeSBmb3IgbWFueSBvZiB0aGUgaWRlYXMuCi0gKi8KLWpRdWVyeS5ldmVu
dCA9IHsKLQotICAgIGdsb2JhbDoge30sCi0KLSAgICBhZGQ6IGZ1bmN0aW9uKCBlbGVtLCB0eXBl
cywgaGFuZGxlciwgZGF0YSwgc2VsZWN0b3IgKSB7Ci0gICAgdmFyIHRtcCwgZXZlbnRzLCB0LCBo
YW5kbGVPYmpJbiwKLSAgICBzcGVjaWFsLCBldmVudEhhbmRsZSwgaGFuZGxlT2JqLAotICAgIGhh
bmRsZXJzLCB0eXBlLCBuYW1lc3BhY2VzLCBvcmlnVHlwZSwKLSAgICBlbGVtRGF0YSA9IGpRdWVy
eS5fZGF0YSggZWxlbSApOwotCi0gICAgLy8gRG9uJ3QgYXR0YWNoIGV2ZW50cyB0byBub0RhdGEg
b3IgdGV4dC9jb21tZW50IG5vZGVzIChidXQgYWxsb3cgcGxhaW4gb2JqZWN0cykKLSAgICBpZiAo
ICFlbGVtRGF0YSApIHsKLSAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gQ2FsbGVyIGNhbiBw
YXNzIGluIGFuIG9iamVjdCBvZiBjdXN0b20gZGF0YSBpbiBsaWV1IG9mIHRoZSBoYW5kbGVyCi0g
ICAgaWYgKCBoYW5kbGVyLmhhbmRsZXIgKSB7Ci0gICAgaGFuZGxlT2JqSW4gPSBoYW5kbGVyOwot
ICAgIGhhbmRsZXIgPSBoYW5kbGVPYmpJbi5oYW5kbGVyOwotICAgIHNlbGVjdG9yID0gaGFuZGxl
T2JqSW4uc2VsZWN0b3I7Ci0gICAgfQotCi0gICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIGhhbmRs
ZXIgaGFzIGEgdW5pcXVlIElELCB1c2VkIHRvIGZpbmQvcmVtb3ZlIGl0IGxhdGVyCi0gICAgaWYg
KCAhaGFuZGxlci5ndWlkICkgewotICAgIGhhbmRsZXIuZ3VpZCA9IGpRdWVyeS5ndWlkKys7Ci0g
ICAgfQotCi0gICAgLy8gSW5pdCB0aGUgZWxlbWVudCdzIGV2ZW50IHN0cnVjdHVyZSBhbmQgbWFp
biBoYW5kbGVyLCBpZiB0aGlzIGlzIHRoZSBmaXJzdAotICAgIGlmICggIShldmVudHMgPSBlbGVt
RGF0YS5ldmVudHMpICkgewotICAgIGV2ZW50cyA9IGVsZW1EYXRhLmV2ZW50cyA9IHt9OwotICAg
IH0KLSAgICBpZiAoICEoZXZlbnRIYW5kbGUgPSBlbGVtRGF0YS5oYW5kbGUpICkgewotICAgIGV2
ZW50SGFuZGxlID0gZWxlbURhdGEuaGFuZGxlID0gZnVuY3Rpb24oIGUgKSB7Ci0gICAgLy8gRGlz
Y2FyZCB0aGUgc2Vjb25kIGV2ZW50IG9mIGEgalF1ZXJ5LmV2ZW50LnRyaWdnZXIoKSBhbmQKLSAg
ICAvLyB3aGVuIGFuIGV2ZW50IGlzIGNhbGxlZCBhZnRlciBhIHBhZ2UgaGFzIHVubG9hZGVkCi0g
ICAgcmV0dXJuIHR5cGVvZiBqUXVlcnkgIT09IGNvcmVfc3RydW5kZWZpbmVkICYmICghZSB8fCBq
UXVlcnkuZXZlbnQudHJpZ2dlcmVkICE9PSBlLnR5cGUpID8KLSAgICBqUXVlcnkuZXZlbnQuZGlz
cGF0Y2guYXBwbHkoIGV2ZW50SGFuZGxlLmVsZW0sIGFyZ3VtZW50cyApIDoKLSAgICB1bmRlZmlu
ZWQ7Ci0gICAgfTsKLSAgICAvLyBBZGQgZWxlbSBhcyBhIHByb3BlcnR5IG9mIHRoZSBoYW5kbGUg
Zm4gdG8gcHJldmVudCBhIG1lbW9yeSBsZWFrIHdpdGggSUUgbm9uLW5hdGl2ZSBldmVudHMKLSAg
ICBldmVudEhhbmRsZS5lbGVtID0gZWxlbTsKLSAgICB9Ci0KLSAgICAvLyBIYW5kbGUgbXVsdGlw
bGUgZXZlbnRzIHNlcGFyYXRlZCBieSBhIHNwYWNlCi0gICAgLy8galF1ZXJ5KC4uLikuYmluZCgi
bW91c2VvdmVyIG1vdXNlb3V0IiwgZm4pOwotICAgIHR5cGVzID0gKCB0eXBlcyB8fCAiIiApLm1h
dGNoKCBjb3JlX3Jub3R3aGl0ZSApIHx8IFsiIl07Ci0gICAgdCA9IHR5cGVzLmxlbmd0aDsKLSAg
ICB3aGlsZSAoIHQtLSApIHsKLSAgICB0bXAgPSBydHlwZW5hbWVzcGFjZS5leGVjKCB0eXBlc1t0
XSApIHx8IFtdOwotICAgIHR5cGUgPSBvcmlnVHlwZSA9IHRtcFsxXTsKLSAgICBuYW1lc3BhY2Vz
ID0gKCB0bXBbMl0gfHwgIiIgKS5zcGxpdCggIi4iICkuc29ydCgpOwotCi0gICAgLy8gSWYgZXZl
bnQgY2hhbmdlcyBpdHMgdHlwZSwgdXNlIHRoZSBzcGVjaWFsIGV2ZW50IGhhbmRsZXJzIGZvciB0
aGUgY2hhbmdlZCB0eXBlCi0gICAgc3BlY2lhbCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsWyB0eXBl
IF0gfHwge307Ci0KLSAgICAvLyBJZiBzZWxlY3RvciBkZWZpbmVkLCBkZXRlcm1pbmUgc3BlY2lh
bCBldmVudCBhcGkgdHlwZSwgb3RoZXJ3aXNlIGdpdmVuIHR5cGUKLSAgICB0eXBlID0gKCBzZWxl
Y3RvciA/IHNwZWNpYWwuZGVsZWdhdGVUeXBlIDogc3BlY2lhbC5iaW5kVHlwZSApIHx8IHR5cGU7
Ci0KLSAgICAvLyBVcGRhdGUgc3BlY2lhbCBiYXNlZCBvbiBuZXdseSByZXNldCB0eXBlCi0gICAg
c3BlY2lhbCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsWyB0eXBlIF0gfHwge307Ci0KLSAgICAvLyBo
YW5kbGVPYmogaXMgcGFzc2VkIHRvIGFsbCBldmVudCBoYW5kbGVycwotICAgIGhhbmRsZU9iaiA9
IGpRdWVyeS5leHRlbmQoewotICAgIHR5cGU6IHR5cGUsCi0gICAgb3JpZ1R5cGU6IG9yaWdUeXBl
LAotICAgIGRhdGE6IGRhdGEsCi0gICAgaGFuZGxlcjogaGFuZGxlciwKLSAgICBndWlkOiBoYW5k
bGVyLmd1aWQsCi0gICAgc2VsZWN0b3I6IHNlbGVjdG9yLAotICAgIG5lZWRzQ29udGV4dDogc2Vs
ZWN0b3IgJiYgalF1ZXJ5LmV4cHIubWF0Y2gubmVlZHNDb250ZXh0LnRlc3QoIHNlbGVjdG9yICks
Ci0gICAgbmFtZXNwYWNlOiBuYW1lc3BhY2VzLmpvaW4oIi4iKQotICAgIH0sIGhhbmRsZU9iaklu
ICk7Ci0KLSAgICAvLyBJbml0IHRoZSBldmVudCBoYW5kbGVyIHF1ZXVlIGlmIHdlJ3JlIHRoZSBm
aXJzdAotICAgIGlmICggIShoYW5kbGVycyA9IGV2ZW50c1sgdHlwZSBdKSApIHsKLSAgICBoYW5k
bGVycyA9IGV2ZW50c1sgdHlwZSBdID0gW107Ci0gICAgaGFuZGxlcnMuZGVsZWdhdGVDb3VudCA9
IDA7Ci0KLSAgICAvLyBPbmx5IHVzZSBhZGRFdmVudExpc3RlbmVyL2F0dGFjaEV2ZW50IGlmIHRo
ZSBzcGVjaWFsIGV2ZW50cyBoYW5kbGVyIHJldHVybnMgZmFsc2UKLSAgICBpZiAoICFzcGVjaWFs
LnNldHVwIHx8IHNwZWNpYWwuc2V0dXAuY2FsbCggZWxlbSwgZGF0YSwgbmFtZXNwYWNlcywgZXZl
bnRIYW5kbGUgKSA9PT0gZmFsc2UgKSB7Ci0gICAgLy8gQmluZCB0aGUgZ2xvYmFsIGV2ZW50IGhh
bmRsZXIgdG8gdGhlIGVsZW1lbnQKLSAgICBpZiAoIGVsZW0uYWRkRXZlbnRMaXN0ZW5lciApIHsK
LSAgICBlbGVtLmFkZEV2ZW50TGlzdGVuZXIoIHR5cGUsIGV2ZW50SGFuZGxlLCBmYWxzZSApOwot
Ci0gICAgfSBlbHNlIGlmICggZWxlbS5hdHRhY2hFdmVudCApIHsKLSAgICBlbGVtLmF0dGFjaEV2
ZW50KCAib24iICsgdHlwZSwgZXZlbnRIYW5kbGUgKTsKLSAgICB9Ci0gICAgfQotICAgIH0KLQot
ICAgIGlmICggc3BlY2lhbC5hZGQgKSB7Ci0gICAgc3BlY2lhbC5hZGQuY2FsbCggZWxlbSwgaGFu
ZGxlT2JqICk7Ci0KLSAgICBpZiAoICFoYW5kbGVPYmouaGFuZGxlci5ndWlkICkgewotICAgIGhh
bmRsZU9iai5oYW5kbGVyLmd1aWQgPSBoYW5kbGVyLmd1aWQ7Ci0gICAgfQotICAgIH0KLQotICAg
IC8vIEFkZCB0byB0aGUgZWxlbWVudCdzIGhhbmRsZXIgbGlzdCwgZGVsZWdhdGVzIGluIGZyb250
Ci0gICAgaWYgKCBzZWxlY3RvciApIHsKLSAgICBoYW5kbGVycy5zcGxpY2UoIGhhbmRsZXJzLmRl
bGVnYXRlQ291bnQrKywgMCwgaGFuZGxlT2JqICk7Ci0gICAgfSBlbHNlIHsKLSAgICBoYW5kbGVy
cy5wdXNoKCBoYW5kbGVPYmogKTsKLSAgICB9Ci0KLSAgICAvLyBLZWVwIHRyYWNrIG9mIHdoaWNo
IGV2ZW50cyBoYXZlIGV2ZXIgYmVlbiB1c2VkLCBmb3IgZXZlbnQgb3B0aW1pemF0aW9uCi0gICAg
alF1ZXJ5LmV2ZW50Lmdsb2JhbFsgdHlwZSBdID0gdHJ1ZTsKLSAgICB9Ci0KLSAgICAvLyBOdWxs
aWZ5IGVsZW0gdG8gcHJldmVudCBtZW1vcnkgbGVha3MgaW4gSUUKLSAgICBlbGVtID0gbnVsbDsK
LSAgICB9LAotCi0gICAgLy8gRGV0YWNoIGFuIGV2ZW50IG9yIHNldCBvZiBldmVudHMgZnJvbSBh
biBlbGVtZW50Ci0gICAgcmVtb3ZlOiBmdW5jdGlvbiggZWxlbSwgdHlwZXMsIGhhbmRsZXIsIHNl
bGVjdG9yLCBtYXBwZWRUeXBlcyApIHsKLSAgICB2YXIgaiwgaGFuZGxlT2JqLCB0bXAsCi0gICAg
b3JpZ0NvdW50LCB0LCBldmVudHMsCi0gICAgc3BlY2lhbCwgaGFuZGxlcnMsIHR5cGUsCi0gICAg
bmFtZXNwYWNlcywgb3JpZ1R5cGUsCi0gICAgZWxlbURhdGEgPSBqUXVlcnkuaGFzRGF0YSggZWxl
bSApICYmIGpRdWVyeS5fZGF0YSggZWxlbSApOwotCi0gICAgaWYgKCAhZWxlbURhdGEgfHwgIShl
dmVudHMgPSBlbGVtRGF0YS5ldmVudHMpICkgewotICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAv
LyBPbmNlIGZvciBlYWNoIHR5cGUubmFtZXNwYWNlIGluIHR5cGVzOyB0eXBlIG1heSBiZSBvbWl0
dGVkCi0gICAgdHlwZXMgPSAoIHR5cGVzIHx8ICIiICkubWF0Y2goIGNvcmVfcm5vdHdoaXRlICkg
fHwgWyIiXTsKLSAgICB0ID0gdHlwZXMubGVuZ3RoOwotICAgIHdoaWxlICggdC0tICkgewotICAg
IHRtcCA9IHJ0eXBlbmFtZXNwYWNlLmV4ZWMoIHR5cGVzW3RdICkgfHwgW107Ci0gICAgdHlwZSA9
IG9yaWdUeXBlID0gdG1wWzFdOwotICAgIG5hbWVzcGFjZXMgPSAoIHRtcFsyXSB8fCAiIiApLnNw
bGl0KCAiLiIgKS5zb3J0KCk7Ci0KLSAgICAvLyBVbmJpbmQgYWxsIGV2ZW50cyAob24gdGhpcyBu
YW1lc3BhY2UsIGlmIHByb3ZpZGVkKSBmb3IgdGhlIGVsZW1lbnQKLSAgICBpZiAoICF0eXBlICkg
ewotICAgIGZvciAoIHR5cGUgaW4gZXZlbnRzICkgewotICAgIGpRdWVyeS5ldmVudC5yZW1vdmUo
IGVsZW0sIHR5cGUgKyB0eXBlc1sgdCBdLCBoYW5kbGVyLCBzZWxlY3RvciwgdHJ1ZSApOwotICAg
IH0KLSAgICBjb250aW51ZTsKLSAgICB9Ci0KLSAgICBzcGVjaWFsID0galF1ZXJ5LmV2ZW50LnNw
ZWNpYWxbIHR5cGUgXSB8fCB7fTsKLSAgICB0eXBlID0gKCBzZWxlY3RvciA/IHNwZWNpYWwuZGVs
ZWdhdGVUeXBlIDogc3BlY2lhbC5iaW5kVHlwZSApIHx8IHR5cGU7Ci0gICAgaGFuZGxlcnMgPSBl
dmVudHNbIHR5cGUgXSB8fCBbXTsKLSAgICB0bXAgPSB0bXBbMl0gJiYgbmV3IFJlZ0V4cCggIihe
fFxcLikiICsgbmFtZXNwYWNlcy5qb2luKCJcXC4oPzouKlxcLnwpIikgKyAiKFxcLnwkKSIgKTsK
LQotICAgIC8vIFJlbW92ZSBtYXRjaGluZyBldmVudHMKLSAgICBvcmlnQ291bnQgPSBqID0gaGFu
ZGxlcnMubGVuZ3RoOwotICAgIHdoaWxlICggai0tICkgewotICAgIGhhbmRsZU9iaiA9IGhhbmRs
ZXJzWyBqIF07Ci0KLSAgICBpZiAoICggbWFwcGVkVHlwZXMgfHwgb3JpZ1R5cGUgPT09IGhhbmRs
ZU9iai5vcmlnVHlwZSApICYmCi0gICAgKCAhaGFuZGxlciB8fCBoYW5kbGVyLmd1aWQgPT09IGhh
bmRsZU9iai5ndWlkICkgJiYKLSAgICAoICF0bXAgfHwgdG1wLnRlc3QoIGhhbmRsZU9iai5uYW1l
c3BhY2UgKSApICYmCi0gICAgKCAhc2VsZWN0b3IgfHwgc2VsZWN0b3IgPT09IGhhbmRsZU9iai5z
ZWxlY3RvciB8fCBzZWxlY3RvciA9PT0gIioqIiAmJiBoYW5kbGVPYmouc2VsZWN0b3IgKSApIHsK
LSAgICBoYW5kbGVycy5zcGxpY2UoIGosIDEgKTsKLQotICAgIGlmICggaGFuZGxlT2JqLnNlbGVj
dG9yICkgewotICAgIGhhbmRsZXJzLmRlbGVnYXRlQ291bnQtLTsKLSAgICB9Ci0gICAgaWYgKCBz
cGVjaWFsLnJlbW92ZSApIHsKLSAgICBzcGVjaWFsLnJlbW92ZS5jYWxsKCBlbGVtLCBoYW5kbGVP
YmogKTsKLSAgICB9Ci0gICAgfQotICAgIH0KLQotICAgIC8vIFJlbW92ZSBnZW5lcmljIGV2ZW50
IGhhbmRsZXIgaWYgd2UgcmVtb3ZlZCBzb21ldGhpbmcgYW5kIG5vIG1vcmUgaGFuZGxlcnMgZXhp
c3QKLSAgICAvLyAoYXZvaWRzIHBvdGVudGlhbCBmb3IgZW5kbGVzcyByZWN1cnNpb24gZHVyaW5n
IHJlbW92YWwgb2Ygc3BlY2lhbCBldmVudCBoYW5kbGVycykKLSAgICBpZiAoIG9yaWdDb3VudCAm
JiAhaGFuZGxlcnMubGVuZ3RoICkgewotICAgIGlmICggIXNwZWNpYWwudGVhcmRvd24gfHwgc3Bl
Y2lhbC50ZWFyZG93bi5jYWxsKCBlbGVtLCBuYW1lc3BhY2VzLCBlbGVtRGF0YS5oYW5kbGUgKSA9
PT0gZmFsc2UgKSB7Ci0gICAgalF1ZXJ5LnJlbW92ZUV2ZW50KCBlbGVtLCB0eXBlLCBlbGVtRGF0
YS5oYW5kbGUgKTsKLSAgICB9Ci0KLSAgICBkZWxldGUgZXZlbnRzWyB0eXBlIF07Ci0gICAgfQot
ICAgIH0KLQotICAgIC8vIFJlbW92ZSB0aGUgZXhwYW5kbyBpZiBpdCdzIG5vIGxvbmdlciB1c2Vk
Ci0gICAgaWYgKCBqUXVlcnkuaXNFbXB0eU9iamVjdCggZXZlbnRzICkgKSB7Ci0gICAgZGVsZXRl
IGVsZW1EYXRhLmhhbmRsZTsKLQotICAgIC8vIHJlbW92ZURhdGEgYWxzbyBjaGVja3MgZm9yIGVt
cHRpbmVzcyBhbmQgY2xlYXJzIHRoZSBleHBhbmRvIGlmIGVtcHR5Ci0gICAgLy8gc28gdXNlIGl0
IGluc3RlYWQgb2YgZGVsZXRlCi0gICAgalF1ZXJ5Ll9yZW1vdmVEYXRhKCBlbGVtLCAiZXZlbnRz
IiApOwotICAgIH0KLSAgICB9LAotCi0gICAgdHJpZ2dlcjogZnVuY3Rpb24oIGV2ZW50LCBkYXRh
LCBlbGVtLCBvbmx5SGFuZGxlcnMgKSB7Ci0gICAgdmFyIGhhbmRsZSwgb250eXBlLCBjdXIsCi0g
ICAgYnViYmxlVHlwZSwgc3BlY2lhbCwgdG1wLCBpLAotICAgIGV2ZW50UGF0aCA9IFsgZWxlbSB8
fCBkb2N1bWVudCBdLAotICAgIHR5cGUgPSBjb3JlX2hhc093bi5jYWxsKCBldmVudCwgInR5cGUi
ICkgPyBldmVudC50eXBlIDogZXZlbnQsCi0gICAgbmFtZXNwYWNlcyA9IGNvcmVfaGFzT3duLmNh
bGwoIGV2ZW50LCAibmFtZXNwYWNlIiApID8gZXZlbnQubmFtZXNwYWNlLnNwbGl0KCIuIikgOiBb
XTsKLQotICAgIGN1ciA9IHRtcCA9IGVsZW0gPSBlbGVtIHx8IGRvY3VtZW50OwotCi0gICAgLy8g
RG9uJ3QgZG8gZXZlbnRzIG9uIHRleHQgYW5kIGNvbW1lbnQgbm9kZXMKLSAgICBpZiAoIGVsZW0u
bm9kZVR5cGUgPT09IDMgfHwgZWxlbS5ub2RlVHlwZSA9PT0gOCApIHsKLSAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgLy8gZm9jdXMvYmx1ciBtb3JwaHMgdG8gZm9jdXNpbi9vdXQ7IGVuc3VyZSB3
ZSdyZSBub3QgZmlyaW5nIHRoZW0gcmlnaHQgbm93Ci0gICAgaWYgKCByZm9jdXNNb3JwaC50ZXN0
KCB0eXBlICsgalF1ZXJ5LmV2ZW50LnRyaWdnZXJlZCApICkgewotICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBpZiAoIHR5cGUuaW5kZXhPZigiLiIpID49IDAgKSB7Ci0gICAgLy8gTmFtZXNwYWNl
ZCB0cmlnZ2VyOyBjcmVhdGUgYSByZWdleHAgdG8gbWF0Y2ggZXZlbnQgdHlwZSBpbiBoYW5kbGUo
KQotICAgIG5hbWVzcGFjZXMgPSB0eXBlLnNwbGl0KCIuIik7Ci0gICAgdHlwZSA9IG5hbWVzcGFj
ZXMuc2hpZnQoKTsKLSAgICBuYW1lc3BhY2VzLnNvcnQoKTsKLSAgICB9Ci0gICAgb250eXBlID0g
dHlwZS5pbmRleE9mKCI6IikgPCAwICYmICJvbiIgKyB0eXBlOwotCi0gICAgLy8gQ2FsbGVyIGNh
biBwYXNzIGluIGEgalF1ZXJ5LkV2ZW50IG9iamVjdCwgT2JqZWN0LCBvciBqdXN0IGFuIGV2ZW50
IHR5cGUgc3RyaW5nCi0gICAgZXZlbnQgPSBldmVudFsgalF1ZXJ5LmV4cGFuZG8gXSA/Ci0gICAg
ZXZlbnQgOgotICAgIG5ldyBqUXVlcnkuRXZlbnQoIHR5cGUsIHR5cGVvZiBldmVudCA9PT0gIm9i
amVjdCIgJiYgZXZlbnQgKTsKLQotICAgIGV2ZW50LmlzVHJpZ2dlciA9IHRydWU7Ci0gICAgZXZl
bnQubmFtZXNwYWNlID0gbmFtZXNwYWNlcy5qb2luKCIuIik7Ci0gICAgZXZlbnQubmFtZXNwYWNl
X3JlID0gZXZlbnQubmFtZXNwYWNlID8KLSAgICBuZXcgUmVnRXhwKCAiKF58XFwuKSIgKyBuYW1l
c3BhY2VzLmpvaW4oIlxcLig/Oi4qXFwufCkiKSArICIoXFwufCQpIiApIDoKLSAgICBudWxsOwot
Ci0gICAgLy8gQ2xlYW4gdXAgdGhlIGV2ZW50IGluIGNhc2UgaXQgaXMgYmVpbmcgcmV1c2VkCi0g
ICAgZXZlbnQucmVzdWx0ID0gdW5kZWZpbmVkOwotICAgIGlmICggIWV2ZW50LnRhcmdldCApIHsK
LSAgICBldmVudC50YXJnZXQgPSBlbGVtOwotICAgIH0KLQotICAgIC8vIENsb25lIGFueSBpbmNv
bWluZyBkYXRhIGFuZCBwcmVwZW5kIHRoZSBldmVudCwgY3JlYXRpbmcgdGhlIGhhbmRsZXIgYXJn
IGxpc3QKLSAgICBkYXRhID0gZGF0YSA9PSBudWxsID8KLSAgICBbIGV2ZW50IF0gOgotICAgIGpR
dWVyeS5tYWtlQXJyYXkoIGRhdGEsIFsgZXZlbnQgXSApOwotCi0gICAgLy8gQWxsb3cgc3BlY2lh
bCBldmVudHMgdG8gZHJhdyBvdXRzaWRlIHRoZSBsaW5lcwotICAgIHNwZWNpYWwgPSBqUXVlcnku
ZXZlbnQuc3BlY2lhbFsgdHlwZSBdIHx8IHt9OwotICAgIGlmICggIW9ubHlIYW5kbGVycyAmJiBz
cGVjaWFsLnRyaWdnZXIgJiYgc3BlY2lhbC50cmlnZ2VyLmFwcGx5KCBlbGVtLCBkYXRhICkgPT09
IGZhbHNlICkgewotICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBEZXRlcm1pbmUgZXZlbnQg
cHJvcGFnYXRpb24gcGF0aCBpbiBhZHZhbmNlLCBwZXIgVzNDIGV2ZW50cyBzcGVjICgjOTk1MSkK
LSAgICAvLyBCdWJibGUgdXAgdG8gZG9jdW1lbnQsIHRoZW4gdG8gd2luZG93OyB3YXRjaCBmb3Ig
YSBnbG9iYWwgb3duZXJEb2N1bWVudCB2YXIgKCM5NzI0KQotICAgIGlmICggIW9ubHlIYW5kbGVy
cyAmJiAhc3BlY2lhbC5ub0J1YmJsZSAmJiAhalF1ZXJ5LmlzV2luZG93KCBlbGVtICkgKSB7Ci0K
LSAgICBidWJibGVUeXBlID0gc3BlY2lhbC5kZWxlZ2F0ZVR5cGUgfHwgdHlwZTsKLSAgICBpZiAo
ICFyZm9jdXNNb3JwaC50ZXN0KCBidWJibGVUeXBlICsgdHlwZSApICkgewotICAgIGN1ciA9IGN1
ci5wYXJlbnROb2RlOwotICAgIH0KLSAgICBmb3IgKCA7IGN1cjsgY3VyID0gY3VyLnBhcmVudE5v
ZGUgKSB7Ci0gICAgZXZlbnRQYXRoLnB1c2goIGN1ciApOwotICAgIHRtcCA9IGN1cjsKLSAgICB9
Ci0KLSAgICAvLyBPbmx5IGFkZCB3aW5kb3cgaWYgd2UgZ290IHRvIGRvY3VtZW50IChlLmcuLCBu
b3QgcGxhaW4gb2JqIG9yIGRldGFjaGVkIERPTSkKLSAgICBpZiAoIHRtcCA9PT0gKGVsZW0ub3du
ZXJEb2N1bWVudCB8fCBkb2N1bWVudCkgKSB7Ci0gICAgZXZlbnRQYXRoLnB1c2goIHRtcC5kZWZh
dWx0VmlldyB8fCB0bXAucGFyZW50V2luZG93IHx8IHdpbmRvdyApOwotICAgIH0KLSAgICB9Ci0K
LSAgICAvLyBGaXJlIGhhbmRsZXJzIG9uIHRoZSBldmVudCBwYXRoCi0gICAgaSA9IDA7Ci0gICAg
d2hpbGUgKCAoY3VyID0gZXZlbnRQYXRoW2krK10pICYmICFldmVudC5pc1Byb3BhZ2F0aW9uU3Rv
cHBlZCgpICkgewotCi0gICAgZXZlbnQudHlwZSA9IGkgPiAxID8KLSAgICBidWJibGVUeXBlIDoK
LSAgICBzcGVjaWFsLmJpbmRUeXBlIHx8IHR5cGU7Ci0KLSAgICAvLyBqUXVlcnkgaGFuZGxlcgot
ICAgIGhhbmRsZSA9ICggalF1ZXJ5Ll9kYXRhKCBjdXIsICJldmVudHMiICkgfHwge30gKVsgZXZl
bnQudHlwZSBdICYmIGpRdWVyeS5fZGF0YSggY3VyLCAiaGFuZGxlIiApOwotICAgIGlmICggaGFu
ZGxlICkgewotICAgIGhhbmRsZS5hcHBseSggY3VyLCBkYXRhICk7Ci0gICAgfQotCi0gICAgLy8g
TmF0aXZlIGhhbmRsZXIKLSAgICBoYW5kbGUgPSBvbnR5cGUgJiYgY3VyWyBvbnR5cGUgXTsKLSAg
ICBpZiAoIGhhbmRsZSAmJiBqUXVlcnkuYWNjZXB0RGF0YSggY3VyICkgJiYgaGFuZGxlLmFwcGx5
ICYmIGhhbmRsZS5hcHBseSggY3VyLCBkYXRhICkgPT09IGZhbHNlICkgewotICAgIGV2ZW50LnBy
ZXZlbnREZWZhdWx0KCk7Ci0gICAgfQotICAgIH0KLSAgICBldmVudC50eXBlID0gdHlwZTsKLQot
ICAgIC8vIElmIG5vYm9keSBwcmV2ZW50ZWQgdGhlIGRlZmF1bHQgYWN0aW9uLCBkbyBpdCBub3cK
LSAgICBpZiAoICFvbmx5SGFuZGxlcnMgJiYgIWV2ZW50LmlzRGVmYXVsdFByZXZlbnRlZCgpICkg
ewotCi0gICAgaWYgKCAoIXNwZWNpYWwuX2RlZmF1bHQgfHwgc3BlY2lhbC5fZGVmYXVsdC5hcHBs
eSggZWxlbS5vd25lckRvY3VtZW50LCBkYXRhICkgPT09IGZhbHNlKSAmJgotICAgICEodHlwZSA9
PT0gImNsaWNrIiAmJiBqUXVlcnkubm9kZU5hbWUoIGVsZW0sICJhIiApKSAmJiBqUXVlcnkuYWNj
ZXB0RGF0YSggZWxlbSApICkgewotCi0gICAgLy8gQ2FsbCBhIG5hdGl2ZSBET00gbWV0aG9kIG9u
IHRoZSB0YXJnZXQgd2l0aCB0aGUgc2FtZSBuYW1lIG5hbWUgYXMgdGhlIGV2ZW50LgotICAgIC8v
IENhbid0IHVzZSBhbiAuaXNGdW5jdGlvbigpIGNoZWNrIGhlcmUgYmVjYXVzZSBJRTYvNyBmYWls
cyB0aGF0IHRlc3QuCi0gICAgLy8gRG9uJ3QgZG8gZGVmYXVsdCBhY3Rpb25zIG9uIHdpbmRvdywg
dGhhdCdzIHdoZXJlIGdsb2JhbCB2YXJpYWJsZXMgYmUgKCM2MTcwKQotICAgIGlmICggb250eXBl
ICYmIGVsZW1bIHR5cGUgXSAmJiAhalF1ZXJ5LmlzV2luZG93KCBlbGVtICkgKSB7Ci0KLSAgICAv
LyBEb24ndCByZS10cmlnZ2VyIGFuIG9uRk9PIGV2ZW50IHdoZW4gd2UgY2FsbCBpdHMgRk9PKCkg
bWV0aG9kCi0gICAgdG1wID0gZWxlbVsgb250eXBlIF07Ci0KLSAgICBpZiAoIHRtcCApIHsKLSAg
ICBlbGVtWyBvbnR5cGUgXSA9IG51bGw7Ci0gICAgfQotCi0gICAgLy8gUHJldmVudCByZS10cmln
Z2VyaW5nIG9mIHRoZSBzYW1lIGV2ZW50LCBzaW5jZSB3ZSBhbHJlYWR5IGJ1YmJsZWQgaXQgYWJv
dmUKLSAgICBqUXVlcnkuZXZlbnQudHJpZ2dlcmVkID0gdHlwZTsKLSAgICB0cnkgewotICAgIGVs
ZW1bIHR5cGUgXSgpOwotICAgIH0gY2F0Y2ggKCBlICkgewotICAgIC8vIElFPDkgZGllcyBvbiBm
b2N1cy9ibHVyIHRvIGhpZGRlbiBlbGVtZW50ICgjMTQ4NiwjMTI1MTgpCi0gICAgLy8gb25seSBy
ZXByb2R1Y2libGUgb24gd2luWFAgSUU4IG5hdGl2ZSwgbm90IElFOSBpbiBJRTggbW9kZQotICAg
IH0KLSAgICBqUXVlcnkuZXZlbnQudHJpZ2dlcmVkID0gdW5kZWZpbmVkOwotCi0gICAgaWYgKCB0
bXAgKSB7Ci0gICAgZWxlbVsgb250eXBlIF0gPSB0bXA7Ci0gICAgfQotICAgIH0KLSAgICB9Ci0g
ICAgfQotCi0gICAgcmV0dXJuIGV2ZW50LnJlc3VsdDsKLSAgICB9LAotCi0gICAgZGlzcGF0Y2g6
IGZ1bmN0aW9uKCBldmVudCApIHsKLQotICAgIC8vIE1ha2UgYSB3cml0YWJsZSBqUXVlcnkuRXZl
bnQgZnJvbSB0aGUgbmF0aXZlIGV2ZW50IG9iamVjdAotICAgIGV2ZW50ID0galF1ZXJ5LmV2ZW50
LmZpeCggZXZlbnQgKTsKLQotICAgIHZhciBpLCByZXQsIGhhbmRsZU9iaiwgbWF0Y2hlZCwgaiwK
LSAgICBoYW5kbGVyUXVldWUgPSBbXSwKLSAgICBhcmdzID0gY29yZV9zbGljZS5jYWxsKCBhcmd1
bWVudHMgKSwKLSAgICBoYW5kbGVycyA9ICggalF1ZXJ5Ll9kYXRhKCB0aGlzLCAiZXZlbnRzIiAp
IHx8IHt9IClbIGV2ZW50LnR5cGUgXSB8fCBbXSwKLSAgICBzcGVjaWFsID0galF1ZXJ5LmV2ZW50
LnNwZWNpYWxbIGV2ZW50LnR5cGUgXSB8fCB7fTsKLQotICAgIC8vIFVzZSB0aGUgZml4LWVkIGpR
dWVyeS5FdmVudCByYXRoZXIgdGhhbiB0aGUgKHJlYWQtb25seSkgbmF0aXZlIGV2ZW50Ci0gICAg
YXJnc1swXSA9IGV2ZW50OwotICAgIGV2ZW50LmRlbGVnYXRlVGFyZ2V0ID0gdGhpczsKLQotICAg
IC8vIENhbGwgdGhlIHByZURpc3BhdGNoIGhvb2sgZm9yIHRoZSBtYXBwZWQgdHlwZSwgYW5kIGxl
dCBpdCBiYWlsIGlmIGRlc2lyZWQKLSAgICBpZiAoIHNwZWNpYWwucHJlRGlzcGF0Y2ggJiYgc3Bl
Y2lhbC5wcmVEaXNwYXRjaC5jYWxsKCB0aGlzLCBldmVudCApID09PSBmYWxzZSApIHsKLSAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgLy8gRGV0ZXJtaW5lIGhhbmRsZXJzCi0gICAgaGFuZGxlclF1
ZXVlID0galF1ZXJ5LmV2ZW50LmhhbmRsZXJzLmNhbGwoIHRoaXMsIGV2ZW50LCBoYW5kbGVycyAp
OwotCi0gICAgLy8gUnVuIGRlbGVnYXRlcyBmaXJzdDsgdGhleSBtYXkgd2FudCB0byBzdG9wIHBy
b3BhZ2F0aW9uIGJlbmVhdGggdXMKLSAgICBpID0gMDsKLSAgICB3aGlsZSAoIChtYXRjaGVkID0g
aGFuZGxlclF1ZXVlWyBpKysgXSkgJiYgIWV2ZW50LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkgKSB7
Ci0gICAgZXZlbnQuY3VycmVudFRhcmdldCA9IG1hdGNoZWQuZWxlbTsKLQotICAgIGogPSAwOwot
ICAgIHdoaWxlICggKGhhbmRsZU9iaiA9IG1hdGNoZWQuaGFuZGxlcnNbIGorKyBdKSAmJiAhZXZl
bnQuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQoKSApIHsKLQotICAgIC8vIFRyaWdnZXJl
ZCBldmVudCBtdXN0IGVpdGhlciAxKSBoYXZlIG5vIG5hbWVzcGFjZSwgb3IKLSAgICAvLyAyKSBo
YXZlIG5hbWVzcGFjZShzKSBhIHN1YnNldCBvciBlcXVhbCB0byB0aG9zZSBpbiB0aGUgYm91bmQg
ZXZlbnQgKGJvdGggY2FuIGhhdmUgbm8gbmFtZXNwYWNlKS4KLSAgICBpZiAoICFldmVudC5uYW1l
c3BhY2VfcmUgfHwgZXZlbnQubmFtZXNwYWNlX3JlLnRlc3QoIGhhbmRsZU9iai5uYW1lc3BhY2Ug
KSApIHsKLQotICAgIGV2ZW50LmhhbmRsZU9iaiA9IGhhbmRsZU9iajsKLSAgICBldmVudC5kYXRh
ID0gaGFuZGxlT2JqLmRhdGE7Ci0KLSAgICByZXQgPSAoIChqUXVlcnkuZXZlbnQuc3BlY2lhbFsg
aGFuZGxlT2JqLm9yaWdUeXBlIF0gfHwge30pLmhhbmRsZSB8fCBoYW5kbGVPYmouaGFuZGxlciAp
Ci0gICAgLmFwcGx5KCBtYXRjaGVkLmVsZW0sIGFyZ3MgKTsKLQotICAgIGlmICggcmV0ICE9PSB1
bmRlZmluZWQgKSB7Ci0gICAgaWYgKCAoZXZlbnQucmVzdWx0ID0gcmV0KSA9PT0gZmFsc2UgKSB7
Ci0gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKLSAgICBldmVudC5zdG9wUHJvcGFnYXRpb24o
KTsKLSAgICB9Ci0gICAgfQotICAgIH0KLSAgICB9Ci0gICAgfQotCi0gICAgLy8gQ2FsbCB0aGUg
cG9zdERpc3BhdGNoIGhvb2sgZm9yIHRoZSBtYXBwZWQgdHlwZQotICAgIGlmICggc3BlY2lhbC5w
b3N0RGlzcGF0Y2ggKSB7Ci0gICAgc3BlY2lhbC5wb3N0RGlzcGF0Y2guY2FsbCggdGhpcywgZXZl
bnQgKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZXZlbnQucmVzdWx0OwotICAgIH0sCi0KLSAgICBo
YW5kbGVyczogZnVuY3Rpb24oIGV2ZW50LCBoYW5kbGVycyApIHsKLSAgICB2YXIgc2VsLCBoYW5k
bGVPYmosIG1hdGNoZXMsIGksCi0gICAgaGFuZGxlclF1ZXVlID0gW10sCi0gICAgZGVsZWdhdGVD
b3VudCA9IGhhbmRsZXJzLmRlbGVnYXRlQ291bnQsCi0gICAgY3VyID0gZXZlbnQudGFyZ2V0Owot
Ci0gICAgLy8gRmluZCBkZWxlZ2F0ZSBoYW5kbGVycwotICAgIC8vIEJsYWNrLWhvbGUgU1ZHIDx1
c2U+IGluc3RhbmNlIHRyZWVzICgjMTMxODApCi0gICAgLy8gQXZvaWQgbm9uLWxlZnQtY2xpY2sg
YnViYmxpbmcgaW4gRmlyZWZveCAoIzM4NjEpCi0gICAgaWYgKCBkZWxlZ2F0ZUNvdW50ICYmIGN1
ci5ub2RlVHlwZSAmJiAoIWV2ZW50LmJ1dHRvbiB8fCBldmVudC50eXBlICE9PSAiY2xpY2siKSAp
IHsKLQotICAgIGZvciAoIDsgY3VyICE9IHRoaXM7IGN1ciA9IGN1ci5wYXJlbnROb2RlIHx8IHRo
aXMgKSB7Ci0KLSAgICAvLyBEb24ndCBjaGVjayBub24tZWxlbWVudHMgKCMxMzIwOCkKLSAgICAv
LyBEb24ndCBwcm9jZXNzIGNsaWNrcyBvbiBkaXNhYmxlZCBlbGVtZW50cyAoIzY5MTEsICM4MTY1
LCAjMTEzODIsICMxMTc2NCkKLSAgICBpZiAoIGN1ci5ub2RlVHlwZSA9PT0gMSAmJiAoY3VyLmRp
c2FibGVkICE9PSB0cnVlIHx8IGV2ZW50LnR5cGUgIT09ICJjbGljayIpICkgewotICAgIG1hdGNo
ZXMgPSBbXTsKLSAgICBmb3IgKCBpID0gMDsgaSA8IGRlbGVnYXRlQ291bnQ7IGkrKyApIHsKLSAg
ICBoYW5kbGVPYmogPSBoYW5kbGVyc1sgaSBdOwotCi0gICAgLy8gRG9uJ3QgY29uZmxpY3Qgd2l0
aCBPYmplY3QucHJvdG90eXBlIHByb3BlcnRpZXMgKCMxMzIwMykKLSAgICBzZWwgPSBoYW5kbGVP
Ymouc2VsZWN0b3IgKyAiICI7Ci0KLSAgICBpZiAoIG1hdGNoZXNbIHNlbCBdID09PSB1bmRlZmlu
ZWQgKSB7Ci0gICAgbWF0Y2hlc1sgc2VsIF0gPSBoYW5kbGVPYmoubmVlZHNDb250ZXh0ID8KLSAg
ICBqUXVlcnkoIHNlbCwgdGhpcyApLmluZGV4KCBjdXIgKSA+PSAwIDoKLSAgICBqUXVlcnkuZmlu
ZCggc2VsLCB0aGlzLCBudWxsLCBbIGN1ciBdICkubGVuZ3RoOwotICAgIH0KLSAgICBpZiAoIG1h
dGNoZXNbIHNlbCBdICkgewotICAgIG1hdGNoZXMucHVzaCggaGFuZGxlT2JqICk7Ci0gICAgfQot
ICAgIH0KLSAgICBpZiAoIG1hdGNoZXMubGVuZ3RoICkgewotICAgIGhhbmRsZXJRdWV1ZS5wdXNo
KHsgZWxlbTogY3VyLCBoYW5kbGVyczogbWF0Y2hlcyB9KTsKLSAgICB9Ci0gICAgfQotICAgIH0K
LSAgICB9Ci0KLSAgICAvLyBBZGQgdGhlIHJlbWFpbmluZyAoZGlyZWN0bHktYm91bmQpIGhhbmRs
ZXJzCi0gICAgaWYgKCBkZWxlZ2F0ZUNvdW50IDwgaGFuZGxlcnMubGVuZ3RoICkgewotICAgIGhh
bmRsZXJRdWV1ZS5wdXNoKHsgZWxlbTogdGhpcywgaGFuZGxlcnM6IGhhbmRsZXJzLnNsaWNlKCBk
ZWxlZ2F0ZUNvdW50ICkgfSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGhhbmRsZXJRdWV1ZTsKLSAg
ICB9LAotCi0gICAgZml4OiBmdW5jdGlvbiggZXZlbnQgKSB7Ci0gICAgaWYgKCBldmVudFsgalF1
ZXJ5LmV4cGFuZG8gXSApIHsKLSAgICByZXR1cm4gZXZlbnQ7Ci0gICAgfQotCi0gICAgLy8gQ3Jl
YXRlIGEgd3JpdGFibGUgY29weSBvZiB0aGUgZXZlbnQgb2JqZWN0IGFuZCBub3JtYWxpemUgc29t
ZSBwcm9wZXJ0aWVzCi0gICAgdmFyIGksIHByb3AsIGNvcHksCi0gICAgdHlwZSA9IGV2ZW50LnR5
cGUsCi0gICAgb3JpZ2luYWxFdmVudCA9IGV2ZW50LAotICAgIGZpeEhvb2sgPSB0aGlzLmZpeEhv
b2tzWyB0eXBlIF07Ci0KLSAgICBpZiAoICFmaXhIb29rICkgewotICAgIHRoaXMuZml4SG9va3Nb
IHR5cGUgXSA9IGZpeEhvb2sgPQotICAgIHJtb3VzZUV2ZW50LnRlc3QoIHR5cGUgKSA/IHRoaXMu
bW91c2VIb29rcyA6Ci0gICAgcmtleUV2ZW50LnRlc3QoIHR5cGUgKSA/IHRoaXMua2V5SG9va3Mg
OgotICAgIHt9OwotICAgIH0KLSAgICBjb3B5ID0gZml4SG9vay5wcm9wcyA/IHRoaXMucHJvcHMu
Y29uY2F0KCBmaXhIb29rLnByb3BzICkgOiB0aGlzLnByb3BzOwotCi0gICAgZXZlbnQgPSBuZXcg
alF1ZXJ5LkV2ZW50KCBvcmlnaW5hbEV2ZW50ICk7Ci0KLSAgICBpID0gY29weS5sZW5ndGg7Ci0g
ICAgd2hpbGUgKCBpLS0gKSB7Ci0gICAgcHJvcCA9IGNvcHlbIGkgXTsKLSAgICBldmVudFsgcHJv
cCBdID0gb3JpZ2luYWxFdmVudFsgcHJvcCBdOwotICAgIH0KLQotICAgIC8vIFN1cHBvcnQ6IElF
PDkKLSAgICAvLyBGaXggdGFyZ2V0IHByb3BlcnR5ICgjMTkyNSkKLSAgICBpZiAoICFldmVudC50
YXJnZXQgKSB7Ci0gICAgZXZlbnQudGFyZ2V0ID0gb3JpZ2luYWxFdmVudC5zcmNFbGVtZW50IHx8
IGRvY3VtZW50OwotICAgIH0KLQotICAgIC8vIFN1cHBvcnQ6IENocm9tZSAyMyssIFNhZmFyaT8K
LSAgICAvLyBUYXJnZXQgc2hvdWxkIG5vdCBiZSBhIHRleHQgbm9kZSAoIzUwNCwgIzEzMTQzKQot
ICAgIGlmICggZXZlbnQudGFyZ2V0Lm5vZGVUeXBlID09PSAzICkgewotICAgIGV2ZW50LnRhcmdl
dCA9IGV2ZW50LnRhcmdldC5wYXJlbnROb2RlOwotICAgIH0KLQotICAgIC8vIFN1cHBvcnQ6IElF
PDkKLSAgICAvLyBGb3IgbW91c2Uva2V5IGV2ZW50cywgbWV0YUtleT09ZmFsc2UgaWYgaXQncyB1
bmRlZmluZWQgKCMzMzY4LCAjMTEzMjgpCi0gICAgZXZlbnQubWV0YUtleSA9ICEhZXZlbnQubWV0
YUtleTsKLQotICAgIHJldHVybiBmaXhIb29rLmZpbHRlciA/IGZpeEhvb2suZmlsdGVyKCBldmVu
dCwgb3JpZ2luYWxFdmVudCApIDogZXZlbnQ7Ci0gICAgfSwKLQotICAgIC8vIEluY2x1ZGVzIHNv
bWUgZXZlbnQgcHJvcHMgc2hhcmVkIGJ5IEtleUV2ZW50IGFuZCBNb3VzZUV2ZW50Ci0gICAgcHJv
cHM6ICJhbHRLZXkgYnViYmxlcyBjYW5jZWxhYmxlIGN0cmxLZXkgY3VycmVudFRhcmdldCBldmVu
dFBoYXNlIG1ldGFLZXkgcmVsYXRlZFRhcmdldCBzaGlmdEtleSB0YXJnZXQgdGltZVN0YW1wIHZp
ZXcgd2hpY2giLnNwbGl0KCIgIiksCi0KLSAgICBmaXhIb29rczoge30sCi0KLSAgICBrZXlIb29r
czogewotICAgIHByb3BzOiAiY2hhciBjaGFyQ29kZSBrZXkga2V5Q29kZSIuc3BsaXQoIiAiKSwK
LSAgICBmaWx0ZXI6IGZ1bmN0aW9uKCBldmVudCwgb3JpZ2luYWwgKSB7Ci0KLSAgICAvLyBBZGQg
d2hpY2ggZm9yIGtleSBldmVudHMKLSAgICBpZiAoIGV2ZW50LndoaWNoID09IG51bGwgKSB7Ci0g
ICAgZXZlbnQud2hpY2ggPSBvcmlnaW5hbC5jaGFyQ29kZSAhPSBudWxsID8gb3JpZ2luYWwuY2hh
ckNvZGUgOiBvcmlnaW5hbC5rZXlDb2RlOwotICAgIH0KLQotICAgIHJldHVybiBldmVudDsKLSAg
ICB9Ci0gICAgfSwKLQotICAgIG1vdXNlSG9va3M6IHsKLSAgICBwcm9wczogImJ1dHRvbiBidXR0
b25zIGNsaWVudFggY2xpZW50WSBmcm9tRWxlbWVudCBvZmZzZXRYIG9mZnNldFkgcGFnZVggcGFn
ZVkgc2NyZWVuWCBzY3JlZW5ZIHRvRWxlbWVudCIuc3BsaXQoIiAiKSwKLSAgICBmaWx0ZXI6IGZ1
bmN0aW9uKCBldmVudCwgb3JpZ2luYWwgKSB7Ci0gICAgdmFyIGJvZHksIGV2ZW50RG9jLCBkb2Ms
Ci0gICAgYnV0dG9uID0gb3JpZ2luYWwuYnV0dG9uLAotICAgIGZyb21FbGVtZW50ID0gb3JpZ2lu
YWwuZnJvbUVsZW1lbnQ7Ci0KLSAgICAvLyBDYWxjdWxhdGUgcGFnZVgvWSBpZiBtaXNzaW5nIGFu
ZCBjbGllbnRYL1kgYXZhaWxhYmxlCi0gICAgaWYgKCBldmVudC5wYWdlWCA9PSBudWxsICYmIG9y
aWdpbmFsLmNsaWVudFggIT0gbnVsbCApIHsKLSAgICBldmVudERvYyA9IGV2ZW50LnRhcmdldC5v
d25lckRvY3VtZW50IHx8IGRvY3VtZW50OwotICAgIGRvYyA9IGV2ZW50RG9jLmRvY3VtZW50RWxl
bWVudDsKLSAgICBib2R5ID0gZXZlbnREb2MuYm9keTsKLQotICAgIGV2ZW50LnBhZ2VYID0gb3Jp
Z2luYWwuY2xpZW50WCArICggZG9jICYmIGRvYy5zY3JvbGxMZWZ0IHx8IGJvZHkgJiYgYm9keS5z
Y3JvbGxMZWZ0IHx8IDAgKSAtICggZG9jICYmIGRvYy5jbGllbnRMZWZ0IHx8IGJvZHkgJiYgYm9k
eS5jbGllbnRMZWZ0IHx8IDAgKTsKLSAgICBldmVudC5wYWdlWSA9IG9yaWdpbmFsLmNsaWVudFkg
KyAoIGRvYyAmJiBkb2Muc2Nyb2xsVG9wICB8fCBib2R5ICYmIGJvZHkuc2Nyb2xsVG9wICB8fCAw
ICkgLSAoIGRvYyAmJiBkb2MuY2xpZW50VG9wICB8fCBib2R5ICYmIGJvZHkuY2xpZW50VG9wICB8
fCAwICk7Ci0gICAgfQotCi0gICAgLy8gQWRkIHJlbGF0ZWRUYXJnZXQsIGlmIG5lY2Vzc2FyeQot
ICAgIGlmICggIWV2ZW50LnJlbGF0ZWRUYXJnZXQgJiYgZnJvbUVsZW1lbnQgKSB7Ci0gICAgZXZl
bnQucmVsYXRlZFRhcmdldCA9IGZyb21FbGVtZW50ID09PSBldmVudC50YXJnZXQgPyBvcmlnaW5h
bC50b0VsZW1lbnQgOiBmcm9tRWxlbWVudDsKLSAgICB9Ci0KLSAgICAvLyBBZGQgd2hpY2ggZm9y
IGNsaWNrOiAxID09PSBsZWZ0OyAyID09PSBtaWRkbGU7IDMgPT09IHJpZ2h0Ci0gICAgLy8gTm90
ZTogYnV0dG9uIGlzIG5vdCBub3JtYWxpemVkLCBzbyBkb24ndCB1c2UgaXQKLSAgICBpZiAoICFl
dmVudC53aGljaCAmJiBidXR0b24gIT09IHVuZGVmaW5lZCApIHsKLSAgICBldmVudC53aGljaCA9
ICggYnV0dG9uICYgMSA/IDEgOiAoIGJ1dHRvbiAmIDIgPyAzIDogKCBidXR0b24gJiA0ID8gMiA6
IDAgKSApICk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGV2ZW50OwotICAgIH0KLSAgICB9LAotCi0g
ICAgc3BlY2lhbDogewotICAgIGxvYWQ6IHsKLSAgICAvLyBQcmV2ZW50IHRyaWdnZXJlZCBpbWFn
ZS5sb2FkIGV2ZW50cyBmcm9tIGJ1YmJsaW5nIHRvIHdpbmRvdy5sb2FkCi0gICAgbm9CdWJibGU6
IHRydWUKLSAgICB9LAotICAgIGNsaWNrOiB7Ci0gICAgLy8gRm9yIGNoZWNrYm94LCBmaXJlIG5h
dGl2ZSBldmVudCBzbyBjaGVja2VkIHN0YXRlIHdpbGwgYmUgcmlnaHQKLSAgICB0cmlnZ2VyOiBm
dW5jdGlvbigpIHsKLSAgICBpZiAoIGpRdWVyeS5ub2RlTmFtZSggdGhpcywgImlucHV0IiApICYm
IHRoaXMudHlwZSA9PT0gImNoZWNrYm94IiAmJiB0aGlzLmNsaWNrICkgewotICAgIHRoaXMuY2xp
Y2soKTsKLSAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIH0KLSAgICB9LAotICAgIGZvY3Vz
OiB7Ci0gICAgLy8gRmlyZSBuYXRpdmUgZXZlbnQgaWYgcG9zc2libGUgc28gYmx1ci9mb2N1cyBz
ZXF1ZW5jZSBpcyBjb3JyZWN0Ci0gICAgdHJpZ2dlcjogZnVuY3Rpb24oKSB7Ci0gICAgaWYgKCB0
aGlzICE9PSBkb2N1bWVudC5hY3RpdmVFbGVtZW50ICYmIHRoaXMuZm9jdXMgKSB7Ci0gICAgdHJ5
IHsKLSAgICB0aGlzLmZvY3VzKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotICAgIH0gY2F0Y2ggKCBl
ICkgewotICAgIC8vIFN1cHBvcnQ6IElFPDkKLSAgICAvLyBJZiB3ZSBlcnJvciBvbiBmb2N1cyB0
byBoaWRkZW4gZWxlbWVudCAoIzE0ODYsICMxMjUxOCksCi0gICAgLy8gbGV0IC50cmlnZ2VyKCkg
cnVuIHRoZSBoYW5kbGVycwotICAgIH0KLSAgICB9Ci0gICAgfSwKLSAgICBkZWxlZ2F0ZVR5cGU6
ICJmb2N1c2luIgotICAgIH0sCi0gICAgYmx1cjogewotICAgIHRyaWdnZXI6IGZ1bmN0aW9uKCkg
ewotICAgIGlmICggdGhpcyA9PT0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAmJiB0aGlzLmJsdXIg
KSB7Ci0gICAgdGhpcy5ibHVyKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICB9LAot
ICAgIGRlbGVnYXRlVHlwZTogImZvY3Vzb3V0IgotICAgIH0sCi0KLSAgICBiZWZvcmV1bmxvYWQ6
IHsKLSAgICBwb3N0RGlzcGF0Y2g6IGZ1bmN0aW9uKCBldmVudCApIHsKLQotICAgIC8vIEV2ZW4g
d2hlbiByZXR1cm5WYWx1ZSBlcXVhbHMgdG8gdW5kZWZpbmVkIEZpcmVmb3ggd2lsbCBzdGlsbCBz
aG93IGFsZXJ0Ci0gICAgaWYgKCBldmVudC5yZXN1bHQgIT09IHVuZGVmaW5lZCApIHsKLSAgICBl
dmVudC5vcmlnaW5hbEV2ZW50LnJldHVyblZhbHVlID0gZXZlbnQucmVzdWx0OwotICAgIH0KLSAg
ICB9Ci0gICAgfQotICAgIH0sCi0KLSAgICBzaW11bGF0ZTogZnVuY3Rpb24oIHR5cGUsIGVsZW0s
IGV2ZW50LCBidWJibGUgKSB7Ci0gICAgLy8gUGlnZ3liYWNrIG9uIGEgZG9ub3IgZXZlbnQgdG8g
c2ltdWxhdGUgYSBkaWZmZXJlbnQgb25lLgotICAgIC8vIEZha2Ugb3JpZ2luYWxFdmVudCB0byBh
dm9pZCBkb25vcidzIHN0b3BQcm9wYWdhdGlvbiwgYnV0IGlmIHRoZQotICAgIC8vIHNpbXVsYXRl
ZCBldmVudCBwcmV2ZW50cyBkZWZhdWx0IHRoZW4gd2UgZG8gdGhlIHNhbWUgb24gdGhlIGRvbm9y
LgotICAgIHZhciBlID0galF1ZXJ5LmV4dGVuZCgKLSAgICBuZXcgalF1ZXJ5LkV2ZW50KCksCi0g
ICAgZXZlbnQsCi0gICAgeyB0eXBlOiB0eXBlLAotICAgIGlzU2ltdWxhdGVkOiB0cnVlLAotICAg
IG9yaWdpbmFsRXZlbnQ6IHt9Ci0gICAgfQotICAgICk7Ci0gICAgaWYgKCBidWJibGUgKSB7Ci0g
ICAgalF1ZXJ5LmV2ZW50LnRyaWdnZXIoIGUsIG51bGwsIGVsZW0gKTsKLSAgICB9IGVsc2Ugewot
ICAgIGpRdWVyeS5ldmVudC5kaXNwYXRjaC5jYWxsKCBlbGVtLCBlICk7Ci0gICAgfQotICAgIGlm
ICggZS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSApIHsKLSAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgp
OwotICAgIH0KLSAgICB9Ci19OwotCi1qUXVlcnkucmVtb3ZlRXZlbnQgPSBkb2N1bWVudC5yZW1v
dmVFdmVudExpc3RlbmVyID8KLSAgICBmdW5jdGlvbiggZWxlbSwgdHlwZSwgaGFuZGxlICkgewot
ICAgIGlmICggZWxlbS5yZW1vdmVFdmVudExpc3RlbmVyICkgewotICAgIGVsZW0ucmVtb3ZlRXZl
bnRMaXN0ZW5lciggdHlwZSwgaGFuZGxlLCBmYWxzZSApOwotICAgIH0KLSAgICB9IDoKLSAgICBm
dW5jdGlvbiggZWxlbSwgdHlwZSwgaGFuZGxlICkgewotICAgIHZhciBuYW1lID0gIm9uIiArIHR5
cGU7Ci0KLSAgICBpZiAoIGVsZW0uZGV0YWNoRXZlbnQgKSB7Ci0KLSAgICAvLyAjODU0NSwgIzcw
NTQsIHByZXZlbnRpbmcgbWVtb3J5IGxlYWtzIGZvciBjdXN0b20gZXZlbnRzIGluIElFNi04Ci0g
ICAgLy8gZGV0YWNoRXZlbnQgbmVlZGVkIHByb3BlcnR5IG9uIGVsZW1lbnQsIGJ5IG5hbWUgb2Yg
dGhhdCBldmVudCwgdG8gcHJvcGVybHkgZXhwb3NlIGl0IHRvIEdDCi0gICAgaWYgKCB0eXBlb2Yg
ZWxlbVsgbmFtZSBdID09PSBjb3JlX3N0cnVuZGVmaW5lZCApIHsKLSAgICBlbGVtWyBuYW1lIF0g
PSBudWxsOwotICAgIH0KLQotICAgIGVsZW0uZGV0YWNoRXZlbnQoIG5hbWUsIGhhbmRsZSApOwot
ICAgIH0KLSAgICB9OwotCi1qUXVlcnkuRXZlbnQgPSBmdW5jdGlvbiggc3JjLCBwcm9wcyApIHsK
LSAgICAvLyBBbGxvdyBpbnN0YW50aWF0aW9uIHdpdGhvdXQgdGhlICduZXcnIGtleXdvcmQKLSAg
ICBpZiAoICEodGhpcyBpbnN0YW5jZW9mIGpRdWVyeS5FdmVudCkgKSB7Ci0gICAgcmV0dXJuIG5l
dyBqUXVlcnkuRXZlbnQoIHNyYywgcHJvcHMgKTsKLSAgICB9Ci0KLSAgICAvLyBFdmVudCBvYmpl
Y3QKLSAgICBpZiAoIHNyYyAmJiBzcmMudHlwZSApIHsKLSAgICB0aGlzLm9yaWdpbmFsRXZlbnQg
PSBzcmM7Ci0gICAgdGhpcy50eXBlID0gc3JjLnR5cGU7Ci0KLSAgICAvLyBFdmVudHMgYnViYmxp
bmcgdXAgdGhlIGRvY3VtZW50IG1heSBoYXZlIGJlZW4gbWFya2VkIGFzIHByZXZlbnRlZAotICAg
IC8vIGJ5IGEgaGFuZGxlciBsb3dlciBkb3duIHRoZSB0cmVlOyByZWZsZWN0IHRoZSBjb3JyZWN0
IHZhbHVlLgotICAgIHRoaXMuaXNEZWZhdWx0UHJldmVudGVkID0gKCBzcmMuZGVmYXVsdFByZXZl
bnRlZCB8fCBzcmMucmV0dXJuVmFsdWUgPT09IGZhbHNlIHx8Ci0gICAgc3JjLmdldFByZXZlbnRE
ZWZhdWx0ICYmIHNyYy5nZXRQcmV2ZW50RGVmYXVsdCgpICkgPyByZXR1cm5UcnVlIDogcmV0dXJu
RmFsc2U7Ci0KLSAgICAvLyBFdmVudCB0eXBlCi0gICAgfSBlbHNlIHsKLSAgICB0aGlzLnR5cGUg
PSBzcmM7Ci0gICAgfQotCi0gICAgLy8gUHV0IGV4cGxpY2l0bHkgcHJvdmlkZWQgcHJvcGVydGll
cyBvbnRvIHRoZSBldmVudCBvYmplY3QKLSAgICBpZiAoIHByb3BzICkgewotICAgIGpRdWVyeS5l
eHRlbmQoIHRoaXMsIHByb3BzICk7Ci0gICAgfQotCi0gICAgLy8gQ3JlYXRlIGEgdGltZXN0YW1w
IGlmIGluY29taW5nIGV2ZW50IGRvZXNuJ3QgaGF2ZSBvbmUKLSAgICB0aGlzLnRpbWVTdGFtcCA9
IHNyYyAmJiBzcmMudGltZVN0YW1wIHx8IGpRdWVyeS5ub3coKTsKLQotICAgIC8vIE1hcmsgaXQg
YXMgZml4ZWQKLSAgICB0aGlzWyBqUXVlcnkuZXhwYW5kbyBdID0gdHJ1ZTsKLX07Ci0KLS8vIGpR
dWVyeS5FdmVudCBpcyBiYXNlZCBvbiBET00zIEV2ZW50cyBhcyBzcGVjaWZpZWQgYnkgdGhlIEVD
TUFTY3JpcHQgTGFuZ3VhZ2UgQmluZGluZwotLy8gaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMy9X
RC1ET00tTGV2ZWwtMy1FdmVudHMtMjAwMzAzMzEvZWNtYS1zY3JpcHQtYmluZGluZy5odG1sCi1q
UXVlcnkuRXZlbnQucHJvdG90eXBlID0gewotICAgIGlzRGVmYXVsdFByZXZlbnRlZDogcmV0dXJu
RmFsc2UsCi0gICAgaXNQcm9wYWdhdGlvblN0b3BwZWQ6IHJldHVybkZhbHNlLAotICAgIGlzSW1t
ZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkOiByZXR1cm5GYWxzZSwKLQotICAgIHByZXZlbnREZWZh
dWx0OiBmdW5jdGlvbigpIHsKLSAgICB2YXIgZSA9IHRoaXMub3JpZ2luYWxFdmVudDsKLQotICAg
IHRoaXMuaXNEZWZhdWx0UHJldmVudGVkID0gcmV0dXJuVHJ1ZTsKLSAgICBpZiAoICFlICkgewot
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBJZiBwcmV2ZW50RGVmYXVsdCBleGlzdHMsIHJ1
biBpdCBvbiB0aGUgb3JpZ2luYWwgZXZlbnQKLSAgICBpZiAoIGUucHJldmVudERlZmF1bHQgKSB7
Ci0gICAgZS5wcmV2ZW50RGVmYXVsdCgpOwotCi0gICAgLy8gU3VwcG9ydDogSUUKLSAgICAvLyBP
dGhlcndpc2Ugc2V0IHRoZSByZXR1cm5WYWx1ZSBwcm9wZXJ0eSBvZiB0aGUgb3JpZ2luYWwgZXZl
bnQgdG8gZmFsc2UKLSAgICB9IGVsc2UgewotICAgIGUucmV0dXJuVmFsdWUgPSBmYWxzZTsKLSAg
ICB9Ci0gICAgfSwKLSAgICBzdG9wUHJvcGFnYXRpb246IGZ1bmN0aW9uKCkgewotICAgIHZhciBl
ID0gdGhpcy5vcmlnaW5hbEV2ZW50OwotCi0gICAgdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZCA9
IHJldHVyblRydWU7Ci0gICAgaWYgKCAhZSApIHsKLSAgICByZXR1cm47Ci0gICAgfQotICAgIC8v
IElmIHN0b3BQcm9wYWdhdGlvbiBleGlzdHMsIHJ1biBpdCBvbiB0aGUgb3JpZ2luYWwgZXZlbnQK
LSAgICBpZiAoIGUuc3RvcFByb3BhZ2F0aW9uICkgewotICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7
Ci0gICAgfQotCi0gICAgLy8gU3VwcG9ydDogSUUKLSAgICAvLyBTZXQgdGhlIGNhbmNlbEJ1YmJs
ZSBwcm9wZXJ0eSBvZiB0aGUgb3JpZ2luYWwgZXZlbnQgdG8gdHJ1ZQotICAgIGUuY2FuY2VsQnVi
YmxlID0gdHJ1ZTsKLSAgICB9LAotICAgIHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbjogZnVuY3Rp
b24oKSB7Ci0gICAgdGhpcy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCA9IHJldHVyblRy
dWU7Ci0gICAgdGhpcy5zdG9wUHJvcGFnYXRpb24oKTsKLSAgICB9Ci19OwotCi0vLyBDcmVhdGUg
bW91c2VlbnRlci9sZWF2ZSBldmVudHMgdXNpbmcgbW91c2VvdmVyL291dCBhbmQgZXZlbnQtdGlt
ZSBjaGVja3MKLWpRdWVyeS5lYWNoKHsKLSAgICBtb3VzZWVudGVyOiAibW91c2VvdmVyIiwKLSAg
ICBtb3VzZWxlYXZlOiAibW91c2VvdXQiCi19LCBmdW5jdGlvbiggb3JpZywgZml4ICkgewotICAg
IGpRdWVyeS5ldmVudC5zcGVjaWFsWyBvcmlnIF0gPSB7Ci0gICAgZGVsZWdhdGVUeXBlOiBmaXgs
Ci0gICAgYmluZFR5cGU6IGZpeCwKLQotICAgIGhhbmRsZTogZnVuY3Rpb24oIGV2ZW50ICkgewot
ICAgIHZhciByZXQsCi0gICAgdGFyZ2V0ID0gdGhpcywKLSAgICByZWxhdGVkID0gZXZlbnQucmVs
YXRlZFRhcmdldCwKLSAgICBoYW5kbGVPYmogPSBldmVudC5oYW5kbGVPYmo7Ci0KLSAgICAvLyBG
b3IgbW91c2VudGVyL2xlYXZlIGNhbGwgdGhlIGhhbmRsZXIgaWYgcmVsYXRlZCBpcyBvdXRzaWRl
IHRoZSB0YXJnZXQuCi0gICAgLy8gTkI6IE5vIHJlbGF0ZWRUYXJnZXQgaWYgdGhlIG1vdXNlIGxl
ZnQvZW50ZXJlZCB0aGUgYnJvd3NlciB3aW5kb3cKLSAgICBpZiAoICFyZWxhdGVkIHx8IChyZWxh
dGVkICE9PSB0YXJnZXQgJiYgIWpRdWVyeS5jb250YWlucyggdGFyZ2V0LCByZWxhdGVkICkpICkg
ewotICAgIGV2ZW50LnR5cGUgPSBoYW5kbGVPYmoub3JpZ1R5cGU7Ci0gICAgcmV0ID0gaGFuZGxl
T2JqLmhhbmRsZXIuYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApOwotICAgIGV2ZW50LnR5cGUgPSBm
aXg7Ci0gICAgfQotICAgIHJldHVybiByZXQ7Ci0gICAgfQotICAgIH07Ci19KTsKLQotLy8gSUUg
c3VibWl0IGRlbGVnYXRpb24KLWlmICggIWpRdWVyeS5zdXBwb3J0LnN1Ym1pdEJ1YmJsZXMgKSB7
Ci0KLSAgICBqUXVlcnkuZXZlbnQuc3BlY2lhbC5zdWJtaXQgPSB7Ci0gICAgc2V0dXA6IGZ1bmN0
aW9uKCkgewotICAgIC8vIE9ubHkgbmVlZCB0aGlzIGZvciBkZWxlZ2F0ZWQgZm9ybSBzdWJtaXQg
ZXZlbnRzCi0gICAgaWYgKCBqUXVlcnkubm9kZU5hbWUoIHRoaXMsICJmb3JtIiApICkgewotICAg
IHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICAvLyBMYXp5LWFkZCBhIHN1Ym1pdCBoYW5kbGVy
IHdoZW4gYSBkZXNjZW5kYW50IGZvcm0gbWF5IHBvdGVudGlhbGx5IGJlIHN1Ym1pdHRlZAotICAg
IGpRdWVyeS5ldmVudC5hZGQoIHRoaXMsICJjbGljay5fc3VibWl0IGtleXByZXNzLl9zdWJtaXQi
LCBmdW5jdGlvbiggZSApIHsKLSAgICAvLyBOb2RlIG5hbWUgY2hlY2sgYXZvaWRzIGEgVk1MLXJl
bGF0ZWQgY3Jhc2ggaW4gSUUgKCM5ODA3KQotICAgIHZhciBlbGVtID0gZS50YXJnZXQsCi0gICAg
Zm9ybSA9IGpRdWVyeS5ub2RlTmFtZSggZWxlbSwgImlucHV0IiApIHx8IGpRdWVyeS5ub2RlTmFt
ZSggZWxlbSwgImJ1dHRvbiIgKSA/IGVsZW0uZm9ybSA6IHVuZGVmaW5lZDsKLSAgICBpZiAoIGZv
cm0gJiYgIWpRdWVyeS5fZGF0YSggZm9ybSwgInN1Ym1pdEJ1YmJsZXMiICkgKSB7Ci0gICAgalF1
ZXJ5LmV2ZW50LmFkZCggZm9ybSwgInN1Ym1pdC5fc3VibWl0IiwgZnVuY3Rpb24oIGV2ZW50ICkg
ewotICAgIGV2ZW50Ll9zdWJtaXRfYnViYmxlID0gdHJ1ZTsKLSAgICB9KTsKLSAgICBqUXVlcnku
X2RhdGEoIGZvcm0sICJzdWJtaXRCdWJibGVzIiwgdHJ1ZSApOwotICAgIH0KLSAgICB9KTsKLSAg
ICAvLyByZXR1cm4gdW5kZWZpbmVkIHNpbmNlIHdlIGRvbid0IG5lZWQgYW4gZXZlbnQgbGlzdGVu
ZXIKLSAgICB9LAotCi0gICAgcG9zdERpc3BhdGNoOiBmdW5jdGlvbiggZXZlbnQgKSB7Ci0gICAg
Ly8gSWYgZm9ybSB3YXMgc3VibWl0dGVkIGJ5IHRoZSB1c2VyLCBidWJibGUgdGhlIGV2ZW50IHVw
IHRoZSB0cmVlCi0gICAgaWYgKCBldmVudC5fc3VibWl0X2J1YmJsZSApIHsKLSAgICBkZWxldGUg
ZXZlbnQuX3N1Ym1pdF9idWJibGU7Ci0gICAgaWYgKCB0aGlzLnBhcmVudE5vZGUgJiYgIWV2ZW50
LmlzVHJpZ2dlciApIHsKLSAgICBqUXVlcnkuZXZlbnQuc2ltdWxhdGUoICJzdWJtaXQiLCB0aGlz
LnBhcmVudE5vZGUsIGV2ZW50LCB0cnVlICk7Ci0gICAgfQotICAgIH0KLSAgICB9LAotCi0gICAg
dGVhcmRvd246IGZ1bmN0aW9uKCkgewotICAgIC8vIE9ubHkgbmVlZCB0aGlzIGZvciBkZWxlZ2F0
ZWQgZm9ybSBzdWJtaXQgZXZlbnRzCi0gICAgaWYgKCBqUXVlcnkubm9kZU5hbWUoIHRoaXMsICJm
b3JtIiApICkgewotICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICAvLyBSZW1vdmUgZGVs
ZWdhdGVkIGhhbmRsZXJzOyBjbGVhbkRhdGEgZXZlbnR1YWxseSByZWFwcyBzdWJtaXQgaGFuZGxl
cnMgYXR0YWNoZWQgYWJvdmUKLSAgICBqUXVlcnkuZXZlbnQucmVtb3ZlKCB0aGlzLCAiLl9zdWJt
aXQiICk7Ci0gICAgfQotICAgIH07Ci19Ci0KLS8vIElFIGNoYW5nZSBkZWxlZ2F0aW9uIGFuZCBj
aGVja2JveC9yYWRpbyBmaXgKLWlmICggIWpRdWVyeS5zdXBwb3J0LmNoYW5nZUJ1YmJsZXMgKSB7
Ci0KLSAgICBqUXVlcnkuZXZlbnQuc3BlY2lhbC5jaGFuZ2UgPSB7Ci0KLSAgICBzZXR1cDogZnVu
Y3Rpb24oKSB7Ci0KLSAgICBpZiAoIHJmb3JtRWxlbXMudGVzdCggdGhpcy5ub2RlTmFtZSApICkg
ewotICAgIC8vIElFIGRvZXNuJ3QgZmlyZSBjaGFuZ2Ugb24gYSBjaGVjay9yYWRpbyB1bnRpbCBi
bHVyOyB0cmlnZ2VyIGl0IG9uIGNsaWNrCi0gICAgLy8gYWZ0ZXIgYSBwcm9wZXJ0eWNoYW5nZS4g
RWF0IHRoZSBibHVyLWNoYW5nZSBpbiBzcGVjaWFsLmNoYW5nZS5oYW5kbGUuCi0gICAgLy8gVGhp
cyBzdGlsbCBmaXJlcyBvbmNoYW5nZSBhIHNlY29uZCB0aW1lIGZvciBjaGVjay9yYWRpbyBhZnRl
ciBibHVyLgotICAgIGlmICggdGhpcy50eXBlID09PSAiY2hlY2tib3giIHx8IHRoaXMudHlwZSA9
PT0gInJhZGlvIiApIHsKLSAgICBqUXVlcnkuZXZlbnQuYWRkKCB0aGlzLCAicHJvcGVydHljaGFu
Z2UuX2NoYW5nZSIsIGZ1bmN0aW9uKCBldmVudCApIHsKLSAgICBpZiAoIGV2ZW50Lm9yaWdpbmFs
RXZlbnQucHJvcGVydHlOYW1lID09PSAiY2hlY2tlZCIgKSB7Ci0gICAgdGhpcy5fanVzdF9jaGFu
Z2VkID0gdHJ1ZTsKLSAgICB9Ci0gICAgfSk7Ci0gICAgalF1ZXJ5LmV2ZW50LmFkZCggdGhpcywg
ImNsaWNrLl9jaGFuZ2UiLCBmdW5jdGlvbiggZXZlbnQgKSB7Ci0gICAgaWYgKCB0aGlzLl9qdXN0
X2NoYW5nZWQgJiYgIWV2ZW50LmlzVHJpZ2dlciApIHsKLSAgICB0aGlzLl9qdXN0X2NoYW5nZWQg
PSBmYWxzZTsKLSAgICB9Ci0gICAgLy8gQWxsb3cgdHJpZ2dlcmVkLCBzaW11bGF0ZWQgY2hhbmdl
IGV2ZW50cyAoIzExNTAwKQotICAgIGpRdWVyeS5ldmVudC5zaW11bGF0ZSggImNoYW5nZSIsIHRo
aXMsIGV2ZW50LCB0cnVlICk7Ci0gICAgfSk7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9Ci0gICAgLy8gRGVsZWdhdGVkIGV2ZW50OyBsYXp5LWFkZCBhIGNoYW5nZSBoYW5kbGVyIG9u
IGRlc2NlbmRhbnQgaW5wdXRzCi0gICAgalF1ZXJ5LmV2ZW50LmFkZCggdGhpcywgImJlZm9yZWFj
dGl2YXRlLl9jaGFuZ2UiLCBmdW5jdGlvbiggZSApIHsKLSAgICB2YXIgZWxlbSA9IGUudGFyZ2V0
OwotCi0gICAgaWYgKCByZm9ybUVsZW1zLnRlc3QoIGVsZW0ubm9kZU5hbWUgKSAmJiAhalF1ZXJ5
Ll9kYXRhKCBlbGVtLCAiY2hhbmdlQnViYmxlcyIgKSApIHsKLSAgICBqUXVlcnkuZXZlbnQuYWRk
KCBlbGVtLCAiY2hhbmdlLl9jaGFuZ2UiLCBmdW5jdGlvbiggZXZlbnQgKSB7Ci0gICAgaWYgKCB0
aGlzLnBhcmVudE5vZGUgJiYgIWV2ZW50LmlzU2ltdWxhdGVkICYmICFldmVudC5pc1RyaWdnZXIg
KSB7Ci0gICAgalF1ZXJ5LmV2ZW50LnNpbXVsYXRlKCAiY2hhbmdlIiwgdGhpcy5wYXJlbnROb2Rl
LCBldmVudCwgdHJ1ZSApOwotICAgIH0KLSAgICB9KTsKLSAgICBqUXVlcnkuX2RhdGEoIGVsZW0s
ICJjaGFuZ2VCdWJibGVzIiwgdHJ1ZSApOwotICAgIH0KLSAgICB9KTsKLSAgICB9LAotCi0gICAg
aGFuZGxlOiBmdW5jdGlvbiggZXZlbnQgKSB7Ci0gICAgdmFyIGVsZW0gPSBldmVudC50YXJnZXQ7
Ci0KLSAgICAvLyBTd2FsbG93IG5hdGl2ZSBjaGFuZ2UgZXZlbnRzIGZyb20gY2hlY2tib3gvcmFk
aW8sIHdlIGFscmVhZHkgdHJpZ2dlcmVkIHRoZW0gYWJvdmUKLSAgICBpZiAoIHRoaXMgIT09IGVs
ZW0gfHwgZXZlbnQuaXNTaW11bGF0ZWQgfHwgZXZlbnQuaXNUcmlnZ2VyIHx8IChlbGVtLnR5cGUg
IT09ICJyYWRpbyIgJiYgZWxlbS50eXBlICE9PSAiY2hlY2tib3giKSApIHsKLSAgICByZXR1cm4g
ZXZlbnQuaGFuZGxlT2JqLmhhbmRsZXIuYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApOwotICAgIH0K
LSAgICB9LAotCi0gICAgdGVhcmRvd246IGZ1bmN0aW9uKCkgewotICAgIGpRdWVyeS5ldmVudC5y
ZW1vdmUoIHRoaXMsICIuX2NoYW5nZSIgKTsKLQotICAgIHJldHVybiAhcmZvcm1FbGVtcy50ZXN0
KCB0aGlzLm5vZGVOYW1lICk7Ci0gICAgfQotICAgIH07Ci19Ci0KLS8vIENyZWF0ZSAiYnViYmxp
bmciIGZvY3VzIGFuZCBibHVyIGV2ZW50cwotaWYgKCAhalF1ZXJ5LnN1cHBvcnQuZm9jdXNpbkJ1
YmJsZXMgKSB7Ci0gICAgalF1ZXJ5LmVhY2goeyBmb2N1czogImZvY3VzaW4iLCBibHVyOiAiZm9j
dXNvdXQiIH0sIGZ1bmN0aW9uKCBvcmlnLCBmaXggKSB7Ci0KLSAgICAvLyBBdHRhY2ggYSBzaW5n
bGUgY2FwdHVyaW5nIGhhbmRsZXIgd2hpbGUgc29tZW9uZSB3YW50cyBmb2N1c2luL2ZvY3Vzb3V0
Ci0gICAgdmFyIGF0dGFjaGVzID0gMCwKLSAgICBoYW5kbGVyID0gZnVuY3Rpb24oIGV2ZW50ICkg
ewotICAgIGpRdWVyeS5ldmVudC5zaW11bGF0ZSggZml4LCBldmVudC50YXJnZXQsIGpRdWVyeS5l
dmVudC5maXgoIGV2ZW50ICksIHRydWUgKTsKLSAgICB9OwotCi0gICAgalF1ZXJ5LmV2ZW50LnNw
ZWNpYWxbIGZpeCBdID0gewotICAgIHNldHVwOiBmdW5jdGlvbigpIHsKLSAgICBpZiAoIGF0dGFj
aGVzKysgPT09IDAgKSB7Ci0gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lciggb3JpZywgaGFu
ZGxlciwgdHJ1ZSApOwotICAgIH0KLSAgICB9LAotICAgIHRlYXJkb3duOiBmdW5jdGlvbigpIHsK
LSAgICBpZiAoIC0tYXR0YWNoZXMgPT09IDAgKSB7Ci0gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRM
aXN0ZW5lciggb3JpZywgaGFuZGxlciwgdHJ1ZSApOwotICAgIH0KLSAgICB9Ci0gICAgfTsKLSAg
ICB9KTsKLX0KLQotalF1ZXJ5LmZuLmV4dGVuZCh7Ci0KLSAgICBvbjogZnVuY3Rpb24oIHR5cGVz
LCBzZWxlY3RvciwgZGF0YSwgZm4sIC8qSU5URVJOQUwqLyBvbmUgKSB7Ci0gICAgdmFyIHR5cGUs
IG9yaWdGbjsKLQotICAgIC8vIFR5cGVzIGNhbiBiZSBhIG1hcCBvZiB0eXBlcy9oYW5kbGVycwot
ICAgIGlmICggdHlwZW9mIHR5cGVzID09PSAib2JqZWN0IiApIHsKLSAgICAvLyAoIHR5cGVzLU9i
amVjdCwgc2VsZWN0b3IsIGRhdGEgKQotICAgIGlmICggdHlwZW9mIHNlbGVjdG9yICE9PSAic3Ry
aW5nIiApIHsKLSAgICAvLyAoIHR5cGVzLU9iamVjdCwgZGF0YSApCi0gICAgZGF0YSA9IGRhdGEg
fHwgc2VsZWN0b3I7Ci0gICAgc2VsZWN0b3IgPSB1bmRlZmluZWQ7Ci0gICAgfQotICAgIGZvciAo
IHR5cGUgaW4gdHlwZXMgKSB7Ci0gICAgdGhpcy5vbiggdHlwZSwgc2VsZWN0b3IsIGRhdGEsIHR5
cGVzWyB0eXBlIF0sIG9uZSApOwotICAgIH0KLSAgICByZXR1cm4gdGhpczsKLSAgICB9Ci0KLSAg
ICBpZiAoIGRhdGEgPT0gbnVsbCAmJiBmbiA9PSBudWxsICkgewotICAgIC8vICggdHlwZXMsIGZu
ICkKLSAgICBmbiA9IHNlbGVjdG9yOwotICAgIGRhdGEgPSBzZWxlY3RvciA9IHVuZGVmaW5lZDsK
LSAgICB9IGVsc2UgaWYgKCBmbiA9PSBudWxsICkgewotICAgIGlmICggdHlwZW9mIHNlbGVjdG9y
ID09PSAic3RyaW5nIiApIHsKLSAgICAvLyAoIHR5cGVzLCBzZWxlY3RvciwgZm4gKQotICAgIGZu
ID0gZGF0YTsKLSAgICBkYXRhID0gdW5kZWZpbmVkOwotICAgIH0gZWxzZSB7Ci0gICAgLy8gKCB0
eXBlcywgZGF0YSwgZm4gKQotICAgIGZuID0gZGF0YTsKLSAgICBkYXRhID0gc2VsZWN0b3I7Ci0g
ICAgc2VsZWN0b3IgPSB1bmRlZmluZWQ7Ci0gICAgfQotICAgIH0KLSAgICBpZiAoIGZuID09PSBm
YWxzZSApIHsKLSAgICBmbiA9IHJldHVybkZhbHNlOwotICAgIH0gZWxzZSBpZiAoICFmbiApIHsK
LSAgICByZXR1cm4gdGhpczsKLSAgICB9Ci0KLSAgICBpZiAoIG9uZSA9PT0gMSApIHsKLSAgICBv
cmlnRm4gPSBmbjsKLSAgICBmbiA9IGZ1bmN0aW9uKCBldmVudCApIHsKLSAgICAvLyBDYW4gdXNl
IGFuIGVtcHR5IHNldCwgc2luY2UgZXZlbnQgY29udGFpbnMgdGhlIGluZm8KLSAgICBqUXVlcnko
KS5vZmYoIGV2ZW50ICk7Ci0gICAgcmV0dXJuIG9yaWdGbi5hcHBseSggdGhpcywgYXJndW1lbnRz
ICk7Ci0gICAgfTsKLSAgICAvLyBVc2Ugc2FtZSBndWlkIHNvIGNhbGxlciBjYW4gcmVtb3ZlIHVz
aW5nIG9yaWdGbgotICAgIGZuLmd1aWQgPSBvcmlnRm4uZ3VpZCB8fCAoIG9yaWdGbi5ndWlkID0g
alF1ZXJ5Lmd1aWQrKyApOwotICAgIH0KLSAgICByZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigp
IHsKLSAgICBqUXVlcnkuZXZlbnQuYWRkKCB0aGlzLCB0eXBlcywgZm4sIGRhdGEsIHNlbGVjdG9y
ICk7Ci0gICAgfSk7Ci0gICAgfSwKLSAgICBvbmU6IGZ1bmN0aW9uKCB0eXBlcywgc2VsZWN0b3Is
IGRhdGEsIGZuICkgewotICAgIHJldHVybiB0aGlzLm9uKCB0eXBlcywgc2VsZWN0b3IsIGRhdGEs
IGZuLCAxICk7Ci0gICAgfSwKLSAgICBvZmY6IGZ1bmN0aW9uKCB0eXBlcywgc2VsZWN0b3IsIGZu
ICkgewotICAgIHZhciBoYW5kbGVPYmosIHR5cGU7Ci0gICAgaWYgKCB0eXBlcyAmJiB0eXBlcy5w
cmV2ZW50RGVmYXVsdCAmJiB0eXBlcy5oYW5kbGVPYmogKSB7Ci0gICAgLy8gKCBldmVudCApICBk
aXNwYXRjaGVkIGpRdWVyeS5FdmVudAotICAgIGhhbmRsZU9iaiA9IHR5cGVzLmhhbmRsZU9iajsK
LSAgICBqUXVlcnkoIHR5cGVzLmRlbGVnYXRlVGFyZ2V0ICkub2ZmKAotICAgIGhhbmRsZU9iai5u
YW1lc3BhY2UgPyBoYW5kbGVPYmoub3JpZ1R5cGUgKyAiLiIgKyBoYW5kbGVPYmoubmFtZXNwYWNl
IDogaGFuZGxlT2JqLm9yaWdUeXBlLAotICAgIGhhbmRsZU9iai5zZWxlY3RvciwKLSAgICBoYW5k
bGVPYmouaGFuZGxlcgotICAgICk7Ci0gICAgcmV0dXJuIHRoaXM7Ci0gICAgfQotICAgIGlmICgg
dHlwZW9mIHR5cGVzID09PSAib2JqZWN0IiApIHsKLSAgICAvLyAoIHR5cGVzLW9iamVjdCBbLCBz
ZWxlY3Rvcl0gKQotICAgIGZvciAoIHR5cGUgaW4gdHlwZXMgKSB7Ci0gICAgdGhpcy5vZmYoIHR5
cGUsIHNlbGVjdG9yLCB0eXBlc1sgdHlwZSBdICk7Ci0gICAgfQotICAgIHJldHVybiB0aGlzOwot
ICAgIH0KLSAgICBpZiAoIHNlbGVjdG9yID09PSBmYWxzZSB8fCB0eXBlb2Ygc2VsZWN0b3IgPT09
ICJmdW5jdGlvbiIgKSB7Ci0gICAgLy8gKCB0eXBlcyBbLCBmbl0gKQotICAgIGZuID0gc2VsZWN0
b3I7Ci0gICAgc2VsZWN0b3IgPSB1bmRlZmluZWQ7Ci0gICAgfQotICAgIGlmICggZm4gPT09IGZh
bHNlICkgewotICAgIGZuID0gcmV0dXJuRmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0aGlzLmVh
Y2goZnVuY3Rpb24oKSB7Ci0gICAgalF1ZXJ5LmV2ZW50LnJlbW92ZSggdGhpcywgdHlwZXMsIGZu
LCBzZWxlY3RvciApOwotICAgIH0pOwotICAgIH0sCi0KLSAgICBiaW5kOiBmdW5jdGlvbiggdHlw
ZXMsIGRhdGEsIGZuICkgewotICAgIHJldHVybiB0aGlzLm9uKCB0eXBlcywgbnVsbCwgZGF0YSwg
Zm4gKTsKLSAgICB9LAotICAgIHVuYmluZDogZnVuY3Rpb24oIHR5cGVzLCBmbiApIHsKLSAgICBy
ZXR1cm4gdGhpcy5vZmYoIHR5cGVzLCBudWxsLCBmbiApOwotICAgIH0sCi0KLSAgICBkZWxlZ2F0
ZTogZnVuY3Rpb24oIHNlbGVjdG9yLCB0eXBlcywgZGF0YSwgZm4gKSB7Ci0gICAgcmV0dXJuIHRo
aXMub24oIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4gKTsKLSAgICB9LAotICAgIHVuZGVsZWdh
dGU6IGZ1bmN0aW9uKCBzZWxlY3RvciwgdHlwZXMsIGZuICkgewotICAgIC8vICggbmFtZXNwYWNl
ICkgb3IgKCBzZWxlY3RvciwgdHlwZXMgWywgZm5dICkKLSAgICByZXR1cm4gYXJndW1lbnRzLmxl
bmd0aCA9PT0gMSA/IHRoaXMub2ZmKCBzZWxlY3RvciwgIioqIiApIDogdGhpcy5vZmYoIHR5cGVz
LCBzZWxlY3RvciB8fCAiKioiLCBmbiApOwotICAgIH0sCi0KLSAgICB0cmlnZ2VyOiBmdW5jdGlv
biggdHlwZSwgZGF0YSApIHsKLSAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewotICAg
IGpRdWVyeS5ldmVudC50cmlnZ2VyKCB0eXBlLCBkYXRhLCB0aGlzICk7Ci0gICAgfSk7Ci0gICAg
fSwKLSAgICB0cmlnZ2VySGFuZGxlcjogZnVuY3Rpb24oIHR5cGUsIGRhdGEgKSB7Ci0gICAgdmFy
IGVsZW0gPSB0aGlzWzBdOwotICAgIGlmICggZWxlbSApIHsKLSAgICByZXR1cm4galF1ZXJ5LmV2
ZW50LnRyaWdnZXIoIHR5cGUsIGRhdGEsIGVsZW0sIHRydWUgKTsKLSAgICB9Ci0gICAgfQotfSk7
Ci0vKiEKLSAqIFNpenpsZSBDU1MgU2VsZWN0b3IgRW5naW5lCi0gKiBDb3B5cmlnaHQgMjAxMiBq
UXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzCi0gKiBSZWxlYXNlZCB1bmRl
ciB0aGUgTUlUIGxpY2Vuc2UKLSAqIGh0dHA6Ly9zaXp6bGVqcy5jb20vCi0gKi8KLShmdW5jdGlv
biggd2luZG93LCB1bmRlZmluZWQgKSB7Ci0KLXZhciBpLAotICAgIGNhY2hlZHJ1bnMsCi0gICAg
RXhwciwKLSAgICBnZXRUZXh0LAotICAgIGlzWE1MLAotICAgIGNvbXBpbGUsCi0gICAgaGFzRHVw
bGljYXRlLAotICAgIG91dGVybW9zdENvbnRleHQsCi0KLSAgICAvLyBMb2NhbCBkb2N1bWVudCB2
YXJzCi0gICAgc2V0RG9jdW1lbnQsCi0gICAgZG9jdW1lbnQsCi0gICAgZG9jRWxlbSwKLSAgICBk
b2N1bWVudElzWE1MLAotICAgIHJidWdneVFTQSwKLSAgICByYnVnZ3lNYXRjaGVzLAotICAgIG1h
dGNoZXMsCi0gICAgY29udGFpbnMsCi0gICAgc29ydE9yZGVyLAotCi0gICAgLy8gSW5zdGFuY2Ut
c3BlY2lmaWMgZGF0YQotICAgIGV4cGFuZG8gPSAic2l6emxlIiArIC0obmV3IERhdGUoKSksCi0g
ICAgcHJlZmVycmVkRG9jID0gd2luZG93LmRvY3VtZW50LAotICAgIHN1cHBvcnQgPSB7fSwKLSAg
ICBkaXJydW5zID0gMCwKLSAgICBkb25lID0gMCwKLSAgICBjbGFzc0NhY2hlID0gY3JlYXRlQ2Fj
aGUoKSwKLSAgICB0b2tlbkNhY2hlID0gY3JlYXRlQ2FjaGUoKSwKLSAgICBjb21waWxlckNhY2hl
ID0gY3JlYXRlQ2FjaGUoKSwKLQotICAgIC8vIEdlbmVyYWwtcHVycG9zZSBjb25zdGFudHMKLSAg
ICBzdHJ1bmRlZmluZWQgPSB0eXBlb2YgdW5kZWZpbmVkLAotICAgIE1BWF9ORUdBVElWRSA9IDEg
PDwgMzEsCi0KLSAgICAvLyBBcnJheSBtZXRob2RzCi0gICAgYXJyID0gW10sCi0gICAgcG9wID0g
YXJyLnBvcCwKLSAgICBwdXNoID0gYXJyLnB1c2gsCi0gICAgc2xpY2UgPSBhcnIuc2xpY2UsCi0g
ICAgLy8gVXNlIGEgc3RyaXBwZWQtZG93biBpbmRleE9mIGlmIHdlIGNhbid0IHVzZSBhIG5hdGl2
ZSBvbmUKLSAgICBpbmRleE9mID0gYXJyLmluZGV4T2YgfHwgZnVuY3Rpb24oIGVsZW0gKSB7Ci0g
ICAgdmFyIGkgPSAwLAotICAgIGxlbiA9IHRoaXMubGVuZ3RoOwotICAgIGZvciAoIDsgaSA8IGxl
bjsgaSsrICkgewotICAgIGlmICggdGhpc1tpXSA9PT0gZWxlbSApIHsKLSAgICByZXR1cm4gaTsK
LSAgICB9Ci0gICAgfQotICAgIHJldHVybiAtMTsKLSAgICB9LAotCi0KLSAgICAvLyBSZWd1bGFy
IGV4cHJlc3Npb25zCi0KLSAgICAvLyBXaGl0ZXNwYWNlIGNoYXJhY3RlcnMgaHR0cDovL3d3dy53
My5vcmcvVFIvY3NzMy1zZWxlY3RvcnMvI3doaXRlc3BhY2UKLSAgICB3aGl0ZXNwYWNlID0gIltc
XHgyMFxcdFxcclxcblxcZl0iLAotICAgIC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtc3lu
dGF4LyNjaGFyYWN0ZXJzCi0gICAgY2hhcmFjdGVyRW5jb2RpbmcgPSAiKD86XFxcXC58W1xcdy1d
fFteXFx4MDAtXFx4YTBdKSsiLAotCi0gICAgLy8gTG9vc2VseSBtb2RlbGVkIG9uIENTUyBpZGVu
dGlmaWVyIGNoYXJhY3RlcnMKLSAgICAvLyBBbiB1bnF1b3RlZCB2YWx1ZSBzaG91bGQgYmUgYSBD
U1MgaWRlbnRpZmllciBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLXNlbGVjdG9ycy8jYXR0cmli
dXRlLXNlbGVjdG9ycwotICAgIC8vIFByb3BlciBzeW50YXg6IGh0dHA6Ly93d3cudzMub3JnL1RS
L0NTUzIxL3N5bmRhdGEuaHRtbCN2YWx1ZS1kZWYtaWRlbnRpZmllcgotICAgIGlkZW50aWZpZXIg
PSBjaGFyYWN0ZXJFbmNvZGluZy5yZXBsYWNlKCAidyIsICJ3IyIgKSwKLQotICAgIC8vIEFjY2Vw
dGFibGUgb3BlcmF0b3JzIGh0dHA6Ly93d3cudzMub3JnL1RSL3NlbGVjdG9ycy8jYXR0cmlidXRl
LXNlbGVjdG9ycwotICAgIG9wZXJhdG9ycyA9ICIoWypeJHwhfl0/PSkiLAotICAgIGF0dHJpYnV0
ZXMgPSAiXFxbIiArIHdoaXRlc3BhY2UgKyAiKigiICsgY2hhcmFjdGVyRW5jb2RpbmcgKyAiKSIg
KyB3aGl0ZXNwYWNlICsKLSAgICAiKig/OiIgKyBvcGVyYXRvcnMgKyB3aGl0ZXNwYWNlICsgIioo
PzooWydcIl0pKCg/OlxcXFwufFteXFxcXF0pKj8pXFwzfCgiICsgaWRlbnRpZmllciArICIpfCl8
KSIgKyB3aGl0ZXNwYWNlICsgIipcXF0iLAotCi0gICAgLy8gUHJlZmVyIGFyZ3VtZW50cyBxdW90
ZWQsCi0gICAgLy8gICB0aGVuIG5vdCBjb250YWluaW5nIHBzZXVkb3MvYnJhY2tldHMsCi0gICAg
Ly8gICB0aGVuIGF0dHJpYnV0ZSBzZWxlY3RvcnMvbm9uLXBhcmVudGhldGljYWwgZXhwcmVzc2lv
bnMsCi0gICAgLy8gICB0aGVuIGFueXRoaW5nIGVsc2UKLSAgICAvLyBUaGVzZSBwcmVmZXJlbmNl
cyBhcmUgaGVyZSB0byByZWR1Y2UgdGhlIG51bWJlciBvZiBzZWxlY3RvcnMKLSAgICAvLyAgIG5l
ZWRpbmcgdG9rZW5pemUgaW4gdGhlIFBTRVVETyBwcmVGaWx0ZXIKLSAgICBwc2V1ZG9zID0gIjoo
IiArIGNoYXJhY3RlckVuY29kaW5nICsgIikoPzpcXCgoKFsnXCJdKSgoPzpcXFxcLnxbXlxcXFxd
KSo/KVxcM3woKD86XFxcXC58W15cXFxcKClbXFxdXXwiICsgYXR0cmlidXRlcy5yZXBsYWNlKCAz
LCA4ICkgKyAiKSopfC4qKVxcKXwpIiwKLQotICAgIC8vIExlYWRpbmcgYW5kIG5vbi1lc2NhcGVk
IHRyYWlsaW5nIHdoaXRlc3BhY2UsIGNhcHR1cmluZyBzb21lIG5vbi13aGl0ZXNwYWNlIGNoYXJh
Y3RlcnMgcHJlY2VkaW5nIHRoZSBsYXR0ZXIKLSAgICBydHJpbSA9IG5ldyBSZWdFeHAoICJeIiAr
IHdoaXRlc3BhY2UgKyAiK3woKD86XnxbXlxcXFxdKSg/OlxcXFwuKSopIiArIHdoaXRlc3BhY2Ug
KyAiKyQiLCAiZyIgKSwKLQotICAgIHJjb21tYSA9IG5ldyBSZWdFeHAoICJeIiArIHdoaXRlc3Bh
Y2UgKyAiKiwiICsgd2hpdGVzcGFjZSArICIqIiApLAotICAgIHJjb21iaW5hdG9ycyA9IG5ldyBS
ZWdFeHAoICJeIiArIHdoaXRlc3BhY2UgKyAiKihbXFx4MjBcXHRcXHJcXG5cXGY+K35dKSIgKyB3
aGl0ZXNwYWNlICsgIioiICksCi0gICAgcnBzZXVkbyA9IG5ldyBSZWdFeHAoIHBzZXVkb3MgKSwK
LSAgICByaWRlbnRpZmllciA9IG5ldyBSZWdFeHAoICJeIiArIGlkZW50aWZpZXIgKyAiJCIgKSwK
LQotICAgIG1hdGNoRXhwciA9IHsKLSAgICAiSUQiOiBuZXcgUmVnRXhwKCAiXiMoIiArIGNoYXJh
Y3RlckVuY29kaW5nICsgIikiICksCi0gICAgIkNMQVNTIjogbmV3IFJlZ0V4cCggIl5cXC4oIiAr
IGNoYXJhY3RlckVuY29kaW5nICsgIikiICksCi0gICAgIk5BTUUiOiBuZXcgUmVnRXhwKCAiXlxc
W25hbWU9WydcIl0/KCIgKyBjaGFyYWN0ZXJFbmNvZGluZyArICIpWydcIl0/XFxdIiApLAotICAg
ICJUQUciOiBuZXcgUmVnRXhwKCAiXigiICsgY2hhcmFjdGVyRW5jb2RpbmcucmVwbGFjZSggInci
LCAidyoiICkgKyAiKSIgKSwKLSAgICAiQVRUUiI6IG5ldyBSZWdFeHAoICJeIiArIGF0dHJpYnV0
ZXMgKSwKLSAgICAiUFNFVURPIjogbmV3IFJlZ0V4cCggIl4iICsgcHNldWRvcyApLAotICAgICJD
SElMRCI6IG5ldyBSZWdFeHAoICJeOihvbmx5fGZpcnN0fGxhc3R8bnRofG50aC1sYXN0KS0oY2hp
bGR8b2YtdHlwZSkoPzpcXCgiICsgd2hpdGVzcGFjZSArCi0gICAgIiooZXZlbnxvZGR8KChbKy1d
fCkoXFxkKilufCkiICsgd2hpdGVzcGFjZSArICIqKD86KFsrLV18KSIgKyB3aGl0ZXNwYWNlICsK
LSAgICAiKihcXGQrKXwpKSIgKyB3aGl0ZXNwYWNlICsgIipcXCl8KSIsICJpIiApLAotICAgIC8v
IEZvciB1c2UgaW4gbGlicmFyaWVzIGltcGxlbWVudGluZyAuaXMoKQotICAgIC8vIFdlIHVzZSB0
aGlzIGZvciBQT1MgbWF0Y2hpbmcgaW4gYHNlbGVjdGAKLSAgICAibmVlZHNDb250ZXh0IjogbmV3
IFJlZ0V4cCggIl4iICsgd2hpdGVzcGFjZSArICIqWz4rfl18OihldmVufG9kZHxlcXxndHxsdHxu
dGh8Zmlyc3R8bGFzdCkoPzpcXCgiICsKLSAgICB3aGl0ZXNwYWNlICsgIiooKD86LVxcZCk/XFxk
KikiICsgd2hpdGVzcGFjZSArICIqXFwpfCkoPz1bXi1dfCQpIiwgImkiICkKLSAgICB9LAotCi0g
ICAgcnNpYmxpbmcgPSAvW1x4MjBcdFxyXG5cZl0qWyt+XS8sCi0KLSAgICBybmF0aXZlID0gL15b
XntdK1x7XHMqXFtuYXRpdmUgY29kZS8sCi0KLSAgICAvLyBFYXNpbHktcGFyc2VhYmxlL3JldHJp
ZXZhYmxlIElEIG9yIFRBRyBvciBDTEFTUyBzZWxlY3RvcnMKLSAgICBycXVpY2tFeHByID0gL14o
PzojKFtcdy1dKyl8KFx3Kyl8XC4oW1x3LV0rKSkkLywKLQotICAgIHJpbnB1dHMgPSAvXig/Omlu
cHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pLAotICAgIHJoZWFkZXIgPSAvXmhcZCQvaSwK
LQotICAgIHJlc2NhcGUgPSAvJ3xcXC9nLAotICAgIHJhdHRyaWJ1dGVRdW90ZXMgPSAvXD1bXHgy
MFx0XHJcblxmXSooW14nIlxdXSopW1x4MjBcdFxyXG5cZl0qXF0vZywKLQotICAgIC8vIENTUyBl
c2NhcGVzIGh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIxL3N5bmRhdGEuaHRtbCNlc2NhcGVkLWNo
YXJhY3RlcnMKLSAgICBydW5lc2NhcGUgPSAvXFwoW1xkYS1mQS1GXXsxLDZ9W1x4MjBcdFxyXG5c
Zl0/fC4pL2csCi0gICAgZnVuZXNjYXBlID0gZnVuY3Rpb24oIF8sIGVzY2FwZWQgKSB7Ci0gICAg
dmFyIGhpZ2ggPSAiMHgiICsgZXNjYXBlZCAtIDB4MTAwMDA7Ci0gICAgLy8gTmFOIG1lYW5zIG5v
bi1jb2RlcG9pbnQKLSAgICByZXR1cm4gaGlnaCAhPT0gaGlnaCA/Ci0gICAgZXNjYXBlZCA6Ci0g
ICAgLy8gQk1QIGNvZGVwb2ludAotICAgIGhpZ2ggPCAwID8KLSAgICBTdHJpbmcuZnJvbUNoYXJD
b2RlKCBoaWdoICsgMHgxMDAwMCApIDoKLSAgICAvLyBTdXBwbGVtZW50YWwgUGxhbmUgY29kZXBv
aW50IChzdXJyb2dhdGUgcGFpcikKLSAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKCBoaWdoID4+IDEw
IHwgMHhEODAwLCBoaWdoICYgMHgzRkYgfCAweERDMDAgKTsKLSAgICB9OwotCi0vLyBVc2UgYSBz
dHJpcHBlZC1kb3duIHNsaWNlIGlmIHdlIGNhbid0IHVzZSBhIG5hdGl2ZSBvbmUKLXRyeSB7Ci0g
ICAgc2xpY2UuY2FsbCggcHJlZmVycmVkRG9jLmRvY3VtZW50RWxlbWVudC5jaGlsZE5vZGVzLCAw
IClbMF0ubm9kZVR5cGU7Ci19IGNhdGNoICggZSApIHsKLSAgICBzbGljZSA9IGZ1bmN0aW9uKCBp
ICkgewotICAgIHZhciBlbGVtLAotICAgIHJlc3VsdHMgPSBbXTsKLSAgICB3aGlsZSAoIChlbGVt
ID0gdGhpc1tpKytdKSApIHsKLSAgICByZXN1bHRzLnB1c2goIGVsZW0gKTsKLSAgICB9Ci0gICAg
cmV0dXJuIHJlc3VsdHM7Ci0gICAgfTsKLX0KLQotLyoqCi0gKiBGb3IgZmVhdHVyZSBkZXRlY3Rp
b24KLSAqIEBwYXJhbSB7RnVuY3Rpb259IGZuIFRoZSBmdW5jdGlvbiB0byB0ZXN0IGZvciBuYXRp
dmUgc3VwcG9ydAotICovCi1mdW5jdGlvbiBpc05hdGl2ZSggZm4gKSB7Ci0gICAgcmV0dXJuIHJu
YXRpdmUudGVzdCggZm4gKyAiIiApOwotfQotCi0vKioKLSAqIENyZWF0ZSBrZXktdmFsdWUgY2Fj
aGVzIG9mIGxpbWl0ZWQgc2l6ZQotICogQHJldHVybnMge0Z1bmN0aW9uKHN0cmluZywgT2JqZWN0
KX0gUmV0dXJucyB0aGUgT2JqZWN0IGRhdGEgYWZ0ZXIgc3RvcmluZyBpdCBvbiBpdHNlbGYgd2l0
aAotICogICAgcHJvcGVydHkgbmFtZSB0aGUgKHNwYWNlLXN1ZmZpeGVkKSBzdHJpbmcgYW5kIChp
ZiB0aGUgY2FjaGUgaXMgbGFyZ2VyIHRoYW4gRXhwci5jYWNoZUxlbmd0aCkKLSAqICAgIGRlbGV0
aW5nIHRoZSBvbGRlc3QgZW50cnkKLSAqLwotZnVuY3Rpb24gY3JlYXRlQ2FjaGUoKSB7Ci0gICAg
dmFyIGNhY2hlLAotICAgIGtleXMgPSBbXTsKLQotICAgIHJldHVybiAoY2FjaGUgPSBmdW5jdGlv
bigga2V5LCB2YWx1ZSApIHsKLSAgICAvLyBVc2UgKGtleSArICIgIikgdG8gYXZvaWQgY29sbGlz
aW9uIHdpdGggbmF0aXZlIHByb3RvdHlwZSBwcm9wZXJ0aWVzIChzZWUgSXNzdWUgIzE1NykKLSAg
ICBpZiAoIGtleXMucHVzaCgga2V5ICs9ICIgIiApID4gRXhwci5jYWNoZUxlbmd0aCApIHsKLSAg
ICAvLyBPbmx5IGtlZXAgdGhlIG1vc3QgcmVjZW50IGVudHJpZXMKLSAgICBkZWxldGUgY2FjaGVb
IGtleXMuc2hpZnQoKSBdOwotICAgIH0KLSAgICByZXR1cm4gKGNhY2hlWyBrZXkgXSA9IHZhbHVl
KTsKLSAgICB9KTsKLX0KLQotLyoqCi0gKiBNYXJrIGEgZnVuY3Rpb24gZm9yIHNwZWNpYWwgdXNl
IGJ5IFNpenpsZQotICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gVGhlIGZ1bmN0aW9uIHRvIG1hcmsK
LSAqLwotZnVuY3Rpb24gbWFya0Z1bmN0aW9uKCBmbiApIHsKLSAgICBmblsgZXhwYW5kbyBdID0g
dHJ1ZTsKLSAgICByZXR1cm4gZm47Ci19Ci0KLS8qKgotICogU3VwcG9ydCB0ZXN0aW5nIHVzaW5n
IGFuIGVsZW1lbnQKLSAqIEBwYXJhbSB7RnVuY3Rpb259IGZuIFBhc3NlZCB0aGUgY3JlYXRlZCBk
aXYgYW5kIGV4cGVjdHMgYSBib29sZWFuIHJlc3VsdAotICovCi1mdW5jdGlvbiBhc3NlcnQoIGZu
ICkgewotICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLQotICAg
IHRyeSB7Ci0gICAgcmV0dXJuIGZuKCBkaXYgKTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAgcmV0
dXJuIGZhbHNlOwotICAgIH0gZmluYWxseSB7Ci0gICAgLy8gcmVsZWFzZSBtZW1vcnkgaW4gSUUK
LSAgICBkaXYgPSBudWxsOwotICAgIH0KLX0KLQotZnVuY3Rpb24gU2l6emxlKCBzZWxlY3Rvciwg
Y29udGV4dCwgcmVzdWx0cywgc2VlZCApIHsKLSAgICB2YXIgbWF0Y2gsIGVsZW0sIG0sIG5vZGVU
eXBlLAotICAgIC8vIFFTQSB2YXJzCi0gICAgaSwgZ3JvdXBzLCBvbGQsIG5pZCwgbmV3Q29udGV4
dCwgbmV3U2VsZWN0b3I7Ci0KLSAgICBpZiAoICggY29udGV4dCA/IGNvbnRleHQub3duZXJEb2N1
bWVudCB8fCBjb250ZXh0IDogcHJlZmVycmVkRG9jICkgIT09IGRvY3VtZW50ICkgewotICAgIHNl
dERvY3VtZW50KCBjb250ZXh0ICk7Ci0gICAgfQotCi0gICAgY29udGV4dCA9IGNvbnRleHQgfHwg
ZG9jdW1lbnQ7Ci0gICAgcmVzdWx0cyA9IHJlc3VsdHMgfHwgW107Ci0KLSAgICBpZiAoICFzZWxl
Y3RvciB8fCB0eXBlb2Ygc2VsZWN0b3IgIT09ICJzdHJpbmciICkgewotICAgIHJldHVybiByZXN1
bHRzOwotICAgIH0KLQotICAgIGlmICggKG5vZGVUeXBlID0gY29udGV4dC5ub2RlVHlwZSkgIT09
IDEgJiYgbm9kZVR5cGUgIT09IDkgKSB7Ci0gICAgcmV0dXJuIFtdOwotICAgIH0KLQotICAgIGlm
ICggIWRvY3VtZW50SXNYTUwgJiYgIXNlZWQgKSB7Ci0KLSAgICAvLyBTaG9ydGN1dHMKLSAgICBp
ZiAoIChtYXRjaCA9IHJxdWlja0V4cHIuZXhlYyggc2VsZWN0b3IgKSkgKSB7Ci0gICAgLy8gU3Bl
ZWQtdXA6IFNpenpsZSgiI0lEIikKLSAgICBpZiAoIChtID0gbWF0Y2hbMV0pICkgewotICAgIGlm
ICggbm9kZVR5cGUgPT09IDkgKSB7Ci0gICAgZWxlbSA9IGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQo
IG0gKTsKLSAgICAvLyBDaGVjayBwYXJlbnROb2RlIHRvIGNhdGNoIHdoZW4gQmxhY2tiZXJyeSA0
LjYgcmV0dXJucwotICAgIC8vIG5vZGVzIHRoYXQgYXJlIG5vIGxvbmdlciBpbiB0aGUgZG9jdW1l
bnQgIzY5NjMKLSAgICBpZiAoIGVsZW0gJiYgZWxlbS5wYXJlbnROb2RlICkgewotICAgIC8vIEhh
bmRsZSB0aGUgY2FzZSB3aGVyZSBJRSwgT3BlcmEsIGFuZCBXZWJraXQgcmV0dXJuIGl0ZW1zCi0g
ICAgLy8gYnkgbmFtZSBpbnN0ZWFkIG9mIElECi0gICAgaWYgKCBlbGVtLmlkID09PSBtICkgewot
ICAgIHJlc3VsdHMucHVzaCggZWxlbSApOwotICAgIHJldHVybiByZXN1bHRzOwotICAgIH0KLSAg
ICB9IGVsc2UgewotICAgIHJldHVybiByZXN1bHRzOwotICAgIH0KLSAgICB9IGVsc2UgewotICAg
IC8vIENvbnRleHQgaXMgbm90IGEgZG9jdW1lbnQKLSAgICBpZiAoIGNvbnRleHQub3duZXJEb2N1
bWVudCAmJiAoZWxlbSA9IGNvbnRleHQub3duZXJEb2N1bWVudC5nZXRFbGVtZW50QnlJZCggbSAp
KSAmJgotICAgIGNvbnRhaW5zKCBjb250ZXh0LCBlbGVtICkgJiYgZWxlbS5pZCA9PT0gbSApIHsK
LSAgICByZXN1bHRzLnB1c2goIGVsZW0gKTsKLSAgICByZXR1cm4gcmVzdWx0czsKLSAgICB9Ci0g
ICAgfQotCi0gICAgLy8gU3BlZWQtdXA6IFNpenpsZSgiVEFHIikKLSAgICB9IGVsc2UgaWYgKCBt
YXRjaFsyXSApIHsKLSAgICBwdXNoLmFwcGx5KCByZXN1bHRzLCBzbGljZS5jYWxsKGNvbnRleHQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoIHNlbGVjdG9yICksIDApICk7Ci0gICAgcmV0dXJuIHJlc3Vs
dHM7Ci0KLSAgICAvLyBTcGVlZC11cDogU2l6emxlKCIuQ0xBU1MiKQotICAgIH0gZWxzZSBpZiAo
IChtID0gbWF0Y2hbM10pICYmIHN1cHBvcnQuZ2V0QnlDbGFzc05hbWUgJiYgY29udGV4dC5nZXRF
bGVtZW50c0J5Q2xhc3NOYW1lICkgewotICAgIHB1c2guYXBwbHkoIHJlc3VsdHMsIHNsaWNlLmNh
bGwoY29udGV4dC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCBtICksIDApICk7Ci0gICAgcmV0dXJu
IHJlc3VsdHM7Ci0gICAgfQotICAgIH0KLQotICAgIC8vIFFTQSBwYXRoCi0gICAgaWYgKCBzdXBw
b3J0LnFzYSAmJiAhcmJ1Z2d5UVNBLnRlc3Qoc2VsZWN0b3IpICkgewotICAgIG9sZCA9IHRydWU7
Ci0gICAgbmlkID0gZXhwYW5kbzsKLSAgICBuZXdDb250ZXh0ID0gY29udGV4dDsKLSAgICBuZXdT
ZWxlY3RvciA9IG5vZGVUeXBlID09PSA5ICYmIHNlbGVjdG9yOwotCi0gICAgLy8gcVNBIHdvcmtz
IHN0cmFuZ2VseSBvbiBFbGVtZW50LXJvb3RlZCBxdWVyaWVzCi0gICAgLy8gV2UgY2FuIHdvcmsg
YXJvdW5kIHRoaXMgYnkgc3BlY2lmeWluZyBhbiBleHRyYSBJRCBvbiB0aGUgcm9vdAotICAgIC8v
IGFuZCB3b3JraW5nIHVwIGZyb20gdGhlcmUgKFRoYW5rcyB0byBBbmRyZXcgRHVwb250IGZvciB0
aGUgdGVjaG5pcXVlKQotICAgIC8vIElFIDggZG9lc24ndCB3b3JrIG9uIG9iamVjdCBlbGVtZW50
cwotICAgIGlmICggbm9kZVR5cGUgPT09IDEgJiYgY29udGV4dC5ub2RlTmFtZS50b0xvd2VyQ2Fz
ZSgpICE9PSAib2JqZWN0IiApIHsKLSAgICBncm91cHMgPSB0b2tlbml6ZSggc2VsZWN0b3IgKTsK
LQotICAgIGlmICggKG9sZCA9IGNvbnRleHQuZ2V0QXR0cmlidXRlKCJpZCIpKSApIHsKLSAgICBu
aWQgPSBvbGQucmVwbGFjZSggcmVzY2FwZSwgIlxcJCYiICk7Ci0gICAgfSBlbHNlIHsKLSAgICBj
b250ZXh0LnNldEF0dHJpYnV0ZSggImlkIiwgbmlkICk7Ci0gICAgfQotICAgIG5pZCA9ICJbaWQ9
JyIgKyBuaWQgKyAiJ10gIjsKLQotICAgIGkgPSBncm91cHMubGVuZ3RoOwotICAgIHdoaWxlICgg
aS0tICkgewotICAgIGdyb3Vwc1tpXSA9IG5pZCArIHRvU2VsZWN0b3IoIGdyb3Vwc1tpXSApOwot
ICAgIH0KLSAgICBuZXdDb250ZXh0ID0gcnNpYmxpbmcudGVzdCggc2VsZWN0b3IgKSAmJiBjb250
ZXh0LnBhcmVudE5vZGUgfHwgY29udGV4dDsKLSAgICBuZXdTZWxlY3RvciA9IGdyb3Vwcy5qb2lu
KCIsIik7Ci0gICAgfQotCi0gICAgaWYgKCBuZXdTZWxlY3RvciApIHsKLSAgICB0cnkgewotICAg
IHB1c2guYXBwbHkoIHJlc3VsdHMsIHNsaWNlLmNhbGwoIG5ld0NvbnRleHQucXVlcnlTZWxlY3Rv
ckFsbCgKLSAgICBuZXdTZWxlY3RvcgotICAgICksIDAgKSApOwotICAgIHJldHVybiByZXN1bHRz
OwotICAgIH0gY2F0Y2gocXNhRXJyb3IpIHsKLSAgICB9IGZpbmFsbHkgewotICAgIGlmICggIW9s
ZCApIHsKLSAgICBjb250ZXh0LnJlbW92ZUF0dHJpYnV0ZSgiaWQiKTsKLSAgICB9Ci0gICAgfQot
ICAgIH0KLSAgICB9Ci0gICAgfQotCi0gICAgLy8gQWxsIG90aGVycwotICAgIHJldHVybiBzZWxl
Y3QoIHNlbGVjdG9yLnJlcGxhY2UoIHJ0cmltLCAiJDEiICksIGNvbnRleHQsIHJlc3VsdHMsIHNl
ZWQgKTsKLX0KLQotLyoqCi0gKiBEZXRlY3QgeG1sCi0gKiBAcGFyYW0ge0VsZW1lbnR8T2JqZWN0
fSBlbGVtIEFuIGVsZW1lbnQgb3IgYSBkb2N1bWVudAotICovCi1pc1hNTCA9IFNpenpsZS5pc1hN
TCA9IGZ1bmN0aW9uKCBlbGVtICkgewotICAgIC8vIGRvY3VtZW50RWxlbWVudCBpcyB2ZXJpZmll
ZCBmb3IgY2FzZXMgd2hlcmUgaXQgZG9lc24ndCB5ZXQgZXhpc3QKLSAgICAvLyAoc3VjaCBhcyBs
b2FkaW5nIGlmcmFtZXMgaW4gSUUgLSAjNDgzMykKLSAgICB2YXIgZG9jdW1lbnRFbGVtZW50ID0g
ZWxlbSAmJiAoZWxlbS5vd25lckRvY3VtZW50IHx8IGVsZW0pLmRvY3VtZW50RWxlbWVudDsKLSAg
ICByZXR1cm4gZG9jdW1lbnRFbGVtZW50ID8gZG9jdW1lbnRFbGVtZW50Lm5vZGVOYW1lICE9PSAi
SFRNTCIgOiBmYWxzZTsKLX07Ci0KLS8qKgotICogU2V0cyBkb2N1bWVudC1yZWxhdGVkIHZhcmlh
YmxlcyBvbmNlIGJhc2VkIG9uIHRoZSBjdXJyZW50IGRvY3VtZW50Ci0gKiBAcGFyYW0ge0VsZW1l
bnR8T2JqZWN0fSBbZG9jXSBBbiBlbGVtZW50IG9yIGRvY3VtZW50IG9iamVjdCB0byB1c2UgdG8g
c2V0IHRoZSBkb2N1bWVudAotICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY3VycmVu
dCBkb2N1bWVudAotICovCi1zZXREb2N1bWVudCA9IFNpenpsZS5zZXREb2N1bWVudCA9IGZ1bmN0
aW9uKCBub2RlICkgewotICAgIHZhciBkb2MgPSBub2RlID8gbm9kZS5vd25lckRvY3VtZW50IHx8
IG5vZGUgOiBwcmVmZXJyZWREb2M7Ci0KLSAgICAvLyBJZiBubyBkb2N1bWVudCBhbmQgZG9jdW1l
bnRFbGVtZW50IGlzIGF2YWlsYWJsZSwgcmV0dXJuCi0gICAgaWYgKCBkb2MgPT09IGRvY3VtZW50
IHx8IGRvYy5ub2RlVHlwZSAhPT0gOSB8fCAhZG9jLmRvY3VtZW50RWxlbWVudCApIHsKLSAgICBy
ZXR1cm4gZG9jdW1lbnQ7Ci0gICAgfQotCi0gICAgLy8gU2V0IG91ciBkb2N1bWVudAotICAgIGRv
Y3VtZW50ID0gZG9jOwotICAgIGRvY0VsZW0gPSBkb2MuZG9jdW1lbnRFbGVtZW50OwotCi0gICAg
Ly8gU3VwcG9ydCB0ZXN0cwotICAgIGRvY3VtZW50SXNYTUwgPSBpc1hNTCggZG9jICk7Ci0KLSAg
ICAvLyBDaGVjayBpZiBnZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpIHJldHVybnMgb25seSBlbGVt
ZW50cwotICAgIHN1cHBvcnQudGFnTmFtZU5vQ29tbWVudHMgPSBhc3NlcnQoZnVuY3Rpb24oIGRp
diApIHsKLSAgICBkaXYuYXBwZW5kQ2hpbGQoIGRvYy5jcmVhdGVDb21tZW50KCIiKSApOwotICAg
IHJldHVybiAhZGl2LmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikubGVuZ3RoOwotICAgIH0pOwot
Ci0gICAgLy8gQ2hlY2sgaWYgYXR0cmlidXRlcyBzaG91bGQgYmUgcmV0cmlldmVkIGJ5IGF0dHJp
YnV0ZSBub2RlcwotICAgIHN1cHBvcnQuYXR0cmlidXRlcyA9IGFzc2VydChmdW5jdGlvbiggZGl2
ICkgewotICAgIGRpdi5pbm5lckhUTUwgPSAiPHNlbGVjdD48L3NlbGVjdD4iOwotICAgIHZhciB0
eXBlID0gdHlwZW9mIGRpdi5sYXN0Q2hpbGQuZ2V0QXR0cmlidXRlKCJtdWx0aXBsZSIpOwotICAg
IC8vIElFOCByZXR1cm5zIGEgc3RyaW5nIGZvciBzb21lIGF0dHJpYnV0ZXMgZXZlbiB3aGVuIG5v
dCBwcmVzZW50Ci0gICAgcmV0dXJuIHR5cGUgIT09ICJib29sZWFuIiAmJiB0eXBlICE9PSAic3Ry
aW5nIjsKLSAgICB9KTsKLQotICAgIC8vIENoZWNrIGlmIGdldEVsZW1lbnRzQnlDbGFzc05hbWUg
Y2FuIGJlIHRydXN0ZWQKLSAgICBzdXBwb3J0LmdldEJ5Q2xhc3NOYW1lID0gYXNzZXJ0KGZ1bmN0
aW9uKCBkaXYgKSB7Ci0gICAgLy8gT3BlcmEgY2FuJ3QgZmluZCBhIHNlY29uZCBjbGFzc25hbWUg
KGluIDkuNikKLSAgICBkaXYuaW5uZXJIVE1MID0gIjxkaXYgY2xhc3M9J2hpZGRlbiBlJz48L2Rp
dj48ZGl2IGNsYXNzPSdoaWRkZW4nPjwvZGl2PiI7Ci0gICAgaWYgKCAhZGl2LmdldEVsZW1lbnRz
QnlDbGFzc05hbWUgfHwgIWRpdi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJlIikubGVuZ3RoICkg
ewotICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICAvLyBTYWZhcmkgMy4yIGNhY2hlcyBj
bGFzcyBhdHRyaWJ1dGVzIGFuZCBkb2Vzbid0IGNhdGNoIGNoYW5nZXMKLSAgICBkaXYubGFzdENo
aWxkLmNsYXNzTmFtZSA9ICJlIjsKLSAgICByZXR1cm4gZGl2LmdldEVsZW1lbnRzQnlDbGFzc05h
bWUoImUiKS5sZW5ndGggPT09IDI7Ci0gICAgfSk7Ci0KLSAgICAvLyBDaGVjayBpZiBnZXRFbGVt
ZW50QnlJZCByZXR1cm5zIGVsZW1lbnRzIGJ5IG5hbWUKLSAgICAvLyBDaGVjayBpZiBnZXRFbGVt
ZW50c0J5TmFtZSBwcml2aWxlZ2VzIGZvcm0gY29udHJvbHMgb3IgcmV0dXJucyBlbGVtZW50cyBi
eSBJRAotICAgIHN1cHBvcnQuZ2V0QnlOYW1lID0gYXNzZXJ0KGZ1bmN0aW9uKCBkaXYgKSB7Ci0g
ICAgLy8gSW5qZWN0IGNvbnRlbnQKLSAgICBkaXYuaWQgPSBleHBhbmRvICsgMDsKLSAgICBkaXYu
aW5uZXJIVE1MID0gIjxhIG5hbWU9JyIgKyBleHBhbmRvICsgIic+PC9hPjxkaXYgbmFtZT0nIiAr
IGV4cGFuZG8gKyAiJz48L2Rpdj4iOwotICAgIGRvY0VsZW0uaW5zZXJ0QmVmb3JlKCBkaXYsIGRv
Y0VsZW0uZmlyc3RDaGlsZCApOwotCi0gICAgLy8gVGVzdAotICAgIHZhciBwYXNzID0gZG9jLmdl
dEVsZW1lbnRzQnlOYW1lICYmCi0gICAgLy8gYnVnZ3kgYnJvd3NlcnMgd2lsbCByZXR1cm4gZmV3
ZXIgdGhhbiB0aGUgY29ycmVjdCAyCi0gICAgZG9jLmdldEVsZW1lbnRzQnlOYW1lKCBleHBhbmRv
ICkubGVuZ3RoID09PSAyICsKLSAgICAvLyBidWdneSBicm93c2VycyB3aWxsIHJldHVybiBtb3Jl
IHRoYW4gdGhlIGNvcnJlY3QgMAotICAgIGRvYy5nZXRFbGVtZW50c0J5TmFtZSggZXhwYW5kbyAr
IDAgKS5sZW5ndGg7Ci0gICAgc3VwcG9ydC5nZXRJZE5vdE5hbWUgPSAhZG9jLmdldEVsZW1lbnRC
eUlkKCBleHBhbmRvICk7Ci0KLSAgICAvLyBDbGVhbnVwCi0gICAgZG9jRWxlbS5yZW1vdmVDaGls
ZCggZGl2ICk7Ci0KLSAgICByZXR1cm4gcGFzczsKLSAgICB9KTsKLQotICAgIC8vIElFNi83IHJl
dHVybiBtb2RpZmllZCBhdHRyaWJ1dGVzCi0gICAgRXhwci5hdHRySGFuZGxlID0gYXNzZXJ0KGZ1
bmN0aW9uKCBkaXYgKSB7Ci0gICAgZGl2LmlubmVySFRNTCA9ICI8YSBocmVmPScjJz48L2E+IjsK
LSAgICByZXR1cm4gZGl2LmZpcnN0Q2hpbGQgJiYgdHlwZW9mIGRpdi5maXJzdENoaWxkLmdldEF0
dHJpYnV0ZSAhPT0gc3RydW5kZWZpbmVkICYmCi0gICAgZGl2LmZpcnN0Q2hpbGQuZ2V0QXR0cmli
dXRlKCJocmVmIikgPT09ICIjIjsKLSAgICB9KSA/Ci0gICAge30gOgotICAgIHsKLSAgICAiaHJl
ZiI6IGZ1bmN0aW9uKCBlbGVtICkgewotICAgIHJldHVybiBlbGVtLmdldEF0dHJpYnV0ZSggImhy
ZWYiLCAyICk7Ci0gICAgfSwKLSAgICAidHlwZSI6IGZ1bmN0aW9uKCBlbGVtICkgewotICAgIHJl
dHVybiBlbGVtLmdldEF0dHJpYnV0ZSgidHlwZSIpOwotICAgIH0KLSAgICB9OwotCi0gICAgLy8g
SUQgZmluZCBhbmQgZmlsdGVyCi0gICAgaWYgKCBzdXBwb3J0LmdldElkTm90TmFtZSApIHsKLSAg
ICBFeHByLmZpbmRbIklEIl0gPSBmdW5jdGlvbiggaWQsIGNvbnRleHQgKSB7Ci0gICAgaWYgKCB0
eXBlb2YgY29udGV4dC5nZXRFbGVtZW50QnlJZCAhPT0gc3RydW5kZWZpbmVkICYmICFkb2N1bWVu
dElzWE1MICkgewotICAgIHZhciBtID0gY29udGV4dC5nZXRFbGVtZW50QnlJZCggaWQgKTsKLSAg
ICAvLyBDaGVjayBwYXJlbnROb2RlIHRvIGNhdGNoIHdoZW4gQmxhY2tiZXJyeSA0LjYgcmV0dXJu
cwotICAgIC8vIG5vZGVzIHRoYXQgYXJlIG5vIGxvbmdlciBpbiB0aGUgZG9jdW1lbnQgIzY5NjMK
LSAgICByZXR1cm4gbSAmJiBtLnBhcmVudE5vZGUgPyBbbV0gOiBbXTsKLSAgICB9Ci0gICAgfTsK
LSAgICBFeHByLmZpbHRlclsiSUQiXSA9IGZ1bmN0aW9uKCBpZCApIHsKLSAgICB2YXIgYXR0cklk
ID0gaWQucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKTsKLSAgICByZXR1cm4gZnVuY3Rp
b24oIGVsZW0gKSB7Ci0gICAgcmV0dXJuIGVsZW0uZ2V0QXR0cmlidXRlKCJpZCIpID09PSBhdHRy
SWQ7Ci0gICAgfTsKLSAgICB9OwotICAgIH0gZWxzZSB7Ci0gICAgRXhwci5maW5kWyJJRCJdID0g
ZnVuY3Rpb24oIGlkLCBjb250ZXh0ICkgewotICAgIGlmICggdHlwZW9mIGNvbnRleHQuZ2V0RWxl
bWVudEJ5SWQgIT09IHN0cnVuZGVmaW5lZCAmJiAhZG9jdW1lbnRJc1hNTCApIHsKLSAgICB2YXIg
bSA9IGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQoIGlkICk7Ci0KLSAgICByZXR1cm4gbSA/Ci0gICAg
bS5pZCA9PT0gaWQgfHwgdHlwZW9mIG0uZ2V0QXR0cmlidXRlTm9kZSAhPT0gc3RydW5kZWZpbmVk
ICYmIG0uZ2V0QXR0cmlidXRlTm9kZSgiaWQiKS52YWx1ZSA9PT0gaWQgPwotICAgIFttXSA6Ci0g
ICAgdW5kZWZpbmVkIDoKLSAgICBbXTsKLSAgICB9Ci0gICAgfTsKLSAgICBFeHByLmZpbHRlclsi
SUQiXSA9ICBmdW5jdGlvbiggaWQgKSB7Ci0gICAgdmFyIGF0dHJJZCA9IGlkLnJlcGxhY2UoIHJ1
bmVzY2FwZSwgZnVuZXNjYXBlICk7Ci0gICAgcmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkgewotICAg
IHZhciBub2RlID0gdHlwZW9mIGVsZW0uZ2V0QXR0cmlidXRlTm9kZSAhPT0gc3RydW5kZWZpbmVk
ICYmIGVsZW0uZ2V0QXR0cmlidXRlTm9kZSgiaWQiKTsKLSAgICByZXR1cm4gbm9kZSAmJiBub2Rl
LnZhbHVlID09PSBhdHRySWQ7Ci0gICAgfTsKLSAgICB9OwotICAgIH0KLQotICAgIC8vIFRhZwot
ICAgIEV4cHIuZmluZFsiVEFHIl0gPSBzdXBwb3J0LnRhZ05hbWVOb0NvbW1lbnRzID8KLSAgICBm
dW5jdGlvbiggdGFnLCBjb250ZXh0ICkgewotICAgIGlmICggdHlwZW9mIGNvbnRleHQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUgIT09IHN0cnVuZGVmaW5lZCApIHsKLSAgICByZXR1cm4gY29udGV4dC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSggdGFnICk7Ci0gICAgfQotICAgIH0gOgotICAgIGZ1bmN0aW9u
KCB0YWcsIGNvbnRleHQgKSB7Ci0gICAgdmFyIGVsZW0sCi0gICAgdG1wID0gW10sCi0gICAgaSA9
IDAsCi0gICAgcmVzdWx0cyA9IGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIHRhZyApOwot
Ci0gICAgLy8gRmlsdGVyIG91dCBwb3NzaWJsZSBjb21tZW50cwotICAgIGlmICggdGFnID09PSAi
KiIgKSB7Ci0gICAgd2hpbGUgKCAoZWxlbSA9IHJlc3VsdHNbaSsrXSkgKSB7Ci0gICAgaWYgKCBl
bGVtLm5vZGVUeXBlID09PSAxICkgewotICAgIHRtcC5wdXNoKCBlbGVtICk7Ci0gICAgfQotICAg
IH0KLQotICAgIHJldHVybiB0bXA7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHRzOwotICAgIH07
Ci0KLSAgICAvLyBOYW1lCi0gICAgRXhwci5maW5kWyJOQU1FIl0gPSBzdXBwb3J0LmdldEJ5TmFt
ZSAmJiBmdW5jdGlvbiggdGFnLCBjb250ZXh0ICkgewotICAgIGlmICggdHlwZW9mIGNvbnRleHQu
Z2V0RWxlbWVudHNCeU5hbWUgIT09IHN0cnVuZGVmaW5lZCApIHsKLSAgICByZXR1cm4gY29udGV4
dC5nZXRFbGVtZW50c0J5TmFtZSggbmFtZSApOwotICAgIH0KLSAgICB9OwotCi0gICAgLy8gQ2xh
c3MKLSAgICBFeHByLmZpbmRbIkNMQVNTIl0gPSBzdXBwb3J0LmdldEJ5Q2xhc3NOYW1lICYmIGZ1
bmN0aW9uKCBjbGFzc05hbWUsIGNvbnRleHQgKSB7Ci0gICAgaWYgKCB0eXBlb2YgY29udGV4dC5n
ZXRFbGVtZW50c0J5Q2xhc3NOYW1lICE9PSBzdHJ1bmRlZmluZWQgJiYgIWRvY3VtZW50SXNYTUwg
KSB7Ci0gICAgcmV0dXJuIGNvbnRleHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSggY2xhc3NOYW1l
ICk7Ci0gICAgfQotICAgIH07Ci0KLSAgICAvLyBRU0EgYW5kIG1hdGNoZXNTZWxlY3RvciBzdXBw
b3J0Ci0KLSAgICAvLyBtYXRjaGVzU2VsZWN0b3IoOmFjdGl2ZSkgcmVwb3J0cyBmYWxzZSB3aGVu
IHRydWUgKElFOS9PcGVyYSAxMS41KQotICAgIHJidWdneU1hdGNoZXMgPSBbXTsKLQotICAgIC8v
IHFTYSg6Zm9jdXMpIHJlcG9ydHMgZmFsc2Ugd2hlbiB0cnVlIChDaHJvbWUgMjEpLAotICAgIC8v
IG5vIG5lZWQgdG8gYWxzbyBhZGQgdG8gYnVnZ3lNYXRjaGVzIHNpbmNlIG1hdGNoZXMgY2hlY2tz
IGJ1Z2d5UVNBCi0gICAgLy8gQSBzdXBwb3J0IHRlc3Qgd291bGQgcmVxdWlyZSB0b28gbXVjaCBj
b2RlICh3b3VsZCBpbmNsdWRlIGRvY3VtZW50IHJlYWR5KQotICAgIHJidWdneVFTQSA9IFsgIjpm
b2N1cyIgXTsKLQotICAgIGlmICggKHN1cHBvcnQucXNhID0gaXNOYXRpdmUoZG9jLnF1ZXJ5U2Vs
ZWN0b3JBbGwpKSApIHsKLSAgICAvLyBCdWlsZCBRU0EgcmVnZXgKLSAgICAvLyBSZWdleCBzdHJh
dGVneSBhZG9wdGVkIGZyb20gRGllZ28gUGVyaW5pCi0gICAgYXNzZXJ0KGZ1bmN0aW9uKCBkaXYg
KSB7Ci0gICAgLy8gU2VsZWN0IGlzIHNldCB0byBlbXB0eSBzdHJpbmcgb24gcHVycG9zZQotICAg
IC8vIFRoaXMgaXMgdG8gdGVzdCBJRSdzIHRyZWF0bWVudCBvZiBub3QgZXhwbGljdGx5Ci0gICAg
Ly8gc2V0dGluZyBhIGJvb2xlYW4gY29udGVudCBhdHRyaWJ1dGUsCi0gICAgLy8gc2luY2UgaXRz
IHByZXNlbmNlIHNob3VsZCBiZSBlbm91Z2gKLSAgICAvLyBodHRwOi8vYnVncy5qcXVlcnkuY29t
L3RpY2tldC8xMjM1OQotICAgIGRpdi5pbm5lckhUTUwgPSAiPHNlbGVjdD48b3B0aW9uIHNlbGVj
dGVkPScnPjwvb3B0aW9uPjwvc2VsZWN0PiI7Ci0KLSAgICAvLyBJRTggLSBTb21lIGJvb2xlYW4g
YXR0cmlidXRlcyBhcmUgbm90IHRyZWF0ZWQgY29ycmVjdGx5Ci0gICAgaWYgKCAhZGl2LnF1ZXJ5
U2VsZWN0b3JBbGwoIltzZWxlY3RlZF0iKS5sZW5ndGggKSB7Ci0gICAgcmJ1Z2d5UVNBLnB1c2go
ICJcXFsiICsgd2hpdGVzcGFjZSArICIqKD86Y2hlY2tlZHxkaXNhYmxlZHxpc21hcHxtdWx0aXBs
ZXxyZWFkb25seXxzZWxlY3RlZHx2YWx1ZSkiICk7Ci0gICAgfQotCi0gICAgLy8gV2Via2l0L09w
ZXJhIC0gOmNoZWNrZWQgc2hvdWxkIHJldHVybiBzZWxlY3RlZCBvcHRpb24gZWxlbWVudHMKLSAg
ICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDExL1JFQy1jc3MzLXNlbGVjdG9ycy0yMDExMDky
OS8jY2hlY2tlZAotICAgIC8vIElFOCB0aHJvd3MgZXJyb3IgaGVyZSBhbmQgd2lsbCBub3Qgc2Vl
IGxhdGVyIHRlc3RzCi0gICAgaWYgKCAhZGl2LnF1ZXJ5U2VsZWN0b3JBbGwoIjpjaGVja2VkIiku
bGVuZ3RoICkgewotICAgIHJidWdneVFTQS5wdXNoKCI6Y2hlY2tlZCIpOwotICAgIH0KLSAgICB9
KTsKLQotICAgIGFzc2VydChmdW5jdGlvbiggZGl2ICkgewotCi0gICAgLy8gT3BlcmEgMTAtMTIv
SUU4IC0gXj0gJD0gKj0gYW5kIGVtcHR5IHZhbHVlcwotICAgIC8vIFNob3VsZCBub3Qgc2VsZWN0
IGFueXRoaW5nCi0gICAgZGl2LmlubmVySFRNTCA9ICI8aW5wdXQgdHlwZT0naGlkZGVuJyBpPScn
Lz4iOwotICAgIGlmICggZGl2LnF1ZXJ5U2VsZWN0b3JBbGwoIltpXj0nJ10iKS5sZW5ndGggKSB7
Ci0gICAgcmJ1Z2d5UVNBLnB1c2goICJbKl4kXT0iICsgd2hpdGVzcGFjZSArICIqKD86XCJcInwn
JykiICk7Ci0gICAgfQotCi0gICAgLy8gRkYgMy41IC0gOmVuYWJsZWQvOmRpc2FibGVkIGFuZCBo
aWRkZW4gZWxlbWVudHMgKGhpZGRlbiBlbGVtZW50cyBhcmUgc3RpbGwgZW5hYmxlZCkKLSAgICAv
LyBJRTggdGhyb3dzIGVycm9yIGhlcmUgYW5kIHdpbGwgbm90IHNlZSBsYXRlciB0ZXN0cwotICAg
IGlmICggIWRpdi5xdWVyeVNlbGVjdG9yQWxsKCI6ZW5hYmxlZCIpLmxlbmd0aCApIHsKLSAgICBy
YnVnZ3lRU0EucHVzaCggIjplbmFibGVkIiwgIjpkaXNhYmxlZCIgKTsKLSAgICB9Ci0KLSAgICAv
LyBPcGVyYSAxMC0xMSBkb2VzIG5vdCB0aHJvdyBvbiBwb3N0LWNvbW1hIGludmFsaWQgcHNldWRv
cwotICAgIGRpdi5xdWVyeVNlbGVjdG9yQWxsKCIqLDp4Iik7Ci0gICAgcmJ1Z2d5UVNBLnB1c2go
IiwuKjoiKTsKLSAgICB9KTsKLSAgICB9Ci0KLSAgICBpZiAoIChzdXBwb3J0Lm1hdGNoZXNTZWxl
Y3RvciA9IGlzTmF0aXZlKCAobWF0Y2hlcyA9IGRvY0VsZW0ubWF0Y2hlc1NlbGVjdG9yIHx8Ci0g
ICAgZG9jRWxlbS5tb3pNYXRjaGVzU2VsZWN0b3IgfHwKLSAgICBkb2NFbGVtLndlYmtpdE1hdGNo
ZXNTZWxlY3RvciB8fAotICAgIGRvY0VsZW0ub01hdGNoZXNTZWxlY3RvciB8fAotICAgIGRvY0Vs
ZW0ubXNNYXRjaGVzU2VsZWN0b3IpICkpICkgewotCi0gICAgYXNzZXJ0KGZ1bmN0aW9uKCBkaXYg
KSB7Ci0gICAgLy8gQ2hlY2sgdG8gc2VlIGlmIGl0J3MgcG9zc2libGUgdG8gZG8gbWF0Y2hlc1Nl
bGVjdG9yCi0gICAgLy8gb24gYSBkaXNjb25uZWN0ZWQgbm9kZSAoSUUgOSkKLSAgICBzdXBwb3J0
LmRpc2Nvbm5lY3RlZE1hdGNoID0gbWF0Y2hlcy5jYWxsKCBkaXYsICJkaXYiICk7Ci0KLSAgICAv
LyBUaGlzIHNob3VsZCBmYWlsIHdpdGggYW4gZXhjZXB0aW9uCi0gICAgLy8gR2Vja28gZG9lcyBu
b3QgZXJyb3IsIHJldHVybnMgZmFsc2UgaW5zdGVhZAotICAgIG1hdGNoZXMuY2FsbCggZGl2LCAi
W3MhPScnXTp4IiApOwotICAgIHJidWdneU1hdGNoZXMucHVzaCggIiE9IiwgcHNldWRvcyApOwot
ICAgIH0pOwotICAgIH0KLQotICAgIHJidWdneVFTQSA9IG5ldyBSZWdFeHAoIHJidWdneVFTQS5q
b2luKCJ8IikgKTsKLSAgICByYnVnZ3lNYXRjaGVzID0gbmV3IFJlZ0V4cCggcmJ1Z2d5TWF0Y2hl
cy5qb2luKCJ8IikgKTsKLQotICAgIC8vIEVsZW1lbnQgY29udGFpbnMgYW5vdGhlcgotICAgIC8v
IFB1cnBvc2VmdWxseSBkb2VzIG5vdCBpbXBsZW1lbnQgaW5jbHVzaXZlIGRlc2NlbmRlbnQKLSAg
ICAvLyBBcyBpbiwgYW4gZWxlbWVudCBkb2VzIG5vdCBjb250YWluIGl0c2VsZgotICAgIGNvbnRh
aW5zID0gaXNOYXRpdmUoZG9jRWxlbS5jb250YWlucykgfHwgZG9jRWxlbS5jb21wYXJlRG9jdW1l
bnRQb3NpdGlvbiA/Ci0gICAgZnVuY3Rpb24oIGEsIGIgKSB7Ci0gICAgdmFyIGFkb3duID0gYS5u
b2RlVHlwZSA9PT0gOSA/IGEuZG9jdW1lbnRFbGVtZW50IDogYSwKLSAgICBidXAgPSBiICYmIGIu
cGFyZW50Tm9kZTsKLSAgICByZXR1cm4gYSA9PT0gYnVwIHx8ICEhKCBidXAgJiYgYnVwLm5vZGVU
eXBlID09PSAxICYmICgKLSAgICBhZG93bi5jb250YWlucyA/Ci0gICAgYWRvd24uY29udGFpbnMo
IGJ1cCApIDoKLSAgICBhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uICYmIGEuY29tcGFyZURvY3Vt
ZW50UG9zaXRpb24oIGJ1cCApICYgMTYKLSAgICApKTsKLSAgICB9IDoKLSAgICBmdW5jdGlvbigg
YSwgYiApIHsKLSAgICBpZiAoIGIgKSB7Ci0gICAgd2hpbGUgKCAoYiA9IGIucGFyZW50Tm9kZSkg
KSB7Ci0gICAgaWYgKCBiID09PSBhICkgewotICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICB9
Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLSAgICB9OwotCi0gICAgLy8gRG9jdW1lbnQgb3Jk
ZXIgc29ydGluZwotICAgIHNvcnRPcmRlciA9IGRvY0VsZW0uY29tcGFyZURvY3VtZW50UG9zaXRp
b24gPwotICAgIGZ1bmN0aW9uKCBhLCBiICkgewotICAgIHZhciBjb21wYXJlOwotCi0gICAgaWYg
KCBhID09PSBiICkgewotICAgIGhhc0R1cGxpY2F0ZSA9IHRydWU7Ci0gICAgcmV0dXJuIDA7Ci0g
ICAgfQotCi0gICAgaWYgKCAoY29tcGFyZSA9IGIuY29tcGFyZURvY3VtZW50UG9zaXRpb24gJiYg
YS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiAmJiBhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKCBi
ICkpICkgewotICAgIGlmICggY29tcGFyZSAmIDEgfHwgYS5wYXJlbnROb2RlICYmIGEucGFyZW50
Tm9kZS5ub2RlVHlwZSA9PT0gMTEgKSB7Ci0gICAgaWYgKCBhID09PSBkb2MgfHwgY29udGFpbnMo
IHByZWZlcnJlZERvYywgYSApICkgewotICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgaWYgKCBi
ID09PSBkb2MgfHwgY29udGFpbnMoIHByZWZlcnJlZERvYywgYiApICkgewotICAgIHJldHVybiAx
OwotICAgIH0KLSAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgcmV0dXJuIGNvbXBhcmUgJiA0ID8g
LTEgOiAxOwotICAgIH0KLQotICAgIHJldHVybiBhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uID8g
LTEgOiAxOwotICAgIH0gOgotICAgIGZ1bmN0aW9uKCBhLCBiICkgewotICAgIHZhciBjdXIsCi0g
ICAgaSA9IDAsCi0gICAgYXVwID0gYS5wYXJlbnROb2RlLAotICAgIGJ1cCA9IGIucGFyZW50Tm9k
ZSwKLSAgICBhcCA9IFsgYSBdLAotICAgIGJwID0gWyBiIF07Ci0KLSAgICAvLyBFeGl0IGVhcmx5
IGlmIHRoZSBub2RlcyBhcmUgaWRlbnRpY2FsCi0gICAgaWYgKCBhID09PSBiICkgewotICAgIGhh
c0R1cGxpY2F0ZSA9IHRydWU7Ci0gICAgcmV0dXJuIDA7Ci0KLSAgICAvLyBQYXJlbnRsZXNzIG5v
ZGVzIGFyZSBlaXRoZXIgZG9jdW1lbnRzIG9yIGRpc2Nvbm5lY3RlZAotICAgIH0gZWxzZSBpZiAo
ICFhdXAgfHwgIWJ1cCApIHsKLSAgICByZXR1cm4gYSA9PT0gZG9jID8gLTEgOgotICAgIGIgPT09
IGRvYyA/IDEgOgotICAgIGF1cCA/IC0xIDoKLSAgICBidXAgPyAxIDoKLSAgICAwOwotCi0gICAg
Ly8gSWYgdGhlIG5vZGVzIGFyZSBzaWJsaW5ncywgd2UgY2FuIGRvIGEgcXVpY2sgY2hlY2sKLSAg
ICB9IGVsc2UgaWYgKCBhdXAgPT09IGJ1cCApIHsKLSAgICByZXR1cm4gc2libGluZ0NoZWNrKCBh
LCBiICk7Ci0gICAgfQotCi0gICAgLy8gT3RoZXJ3aXNlIHdlIG5lZWQgZnVsbCBsaXN0cyBvZiB0
aGVpciBhbmNlc3RvcnMgZm9yIGNvbXBhcmlzb24KLSAgICBjdXIgPSBhOwotICAgIHdoaWxlICgg
KGN1ciA9IGN1ci5wYXJlbnROb2RlKSApIHsKLSAgICBhcC51bnNoaWZ0KCBjdXIgKTsKLSAgICB9
Ci0gICAgY3VyID0gYjsKLSAgICB3aGlsZSAoIChjdXIgPSBjdXIucGFyZW50Tm9kZSkgKSB7Ci0g
ICAgYnAudW5zaGlmdCggY3VyICk7Ci0gICAgfQotCi0gICAgLy8gV2FsayBkb3duIHRoZSB0cmVl
IGxvb2tpbmcgZm9yIGEgZGlzY3JlcGFuY3kKLSAgICB3aGlsZSAoIGFwW2ldID09PSBicFtpXSAp
IHsKLSAgICBpKys7Ci0gICAgfQotCi0gICAgcmV0dXJuIGkgPwotICAgIC8vIERvIGEgc2libGlu
ZyBjaGVjayBpZiB0aGUgbm9kZXMgaGF2ZSBhIGNvbW1vbiBhbmNlc3RvcgotICAgIHNpYmxpbmdD
aGVjayggYXBbaV0sIGJwW2ldICkgOgotCi0gICAgLy8gT3RoZXJ3aXNlIG5vZGVzIGluIG91ciBk
b2N1bWVudCBzb3J0IGZpcnN0Ci0gICAgYXBbaV0gPT09IHByZWZlcnJlZERvYyA/IC0xIDoKLSAg
ICBicFtpXSA9PT0gcHJlZmVycmVkRG9jID8gMSA6Ci0gICAgMDsKLSAgICB9OwotCi0gICAgLy8g
QWx3YXlzIGFzc3VtZSB0aGUgcHJlc2VuY2Ugb2YgZHVwbGljYXRlcyBpZiBzb3J0IGRvZXNuJ3QK
LSAgICAvLyBwYXNzIHRoZW0gdG8gb3VyIGNvbXBhcmlzb24gZnVuY3Rpb24gKGFzIGluIEdvb2ds
ZSBDaHJvbWUpLgotICAgIGhhc0R1cGxpY2F0ZSA9IGZhbHNlOwotICAgIFswLCAwXS5zb3J0KCBz
b3J0T3JkZXIgKTsKLSAgICBzdXBwb3J0LmRldGVjdER1cGxpY2F0ZXMgPSBoYXNEdXBsaWNhdGU7
Ci0KLSAgICByZXR1cm4gZG9jdW1lbnQ7Ci19OwotCi1TaXp6bGUubWF0Y2hlcyA9IGZ1bmN0aW9u
KCBleHByLCBlbGVtZW50cyApIHsKLSAgICByZXR1cm4gU2l6emxlKCBleHByLCBudWxsLCBudWxs
LCBlbGVtZW50cyApOwotfTsKLQotU2l6emxlLm1hdGNoZXNTZWxlY3RvciA9IGZ1bmN0aW9uKCBl
bGVtLCBleHByICkgewotICAgIC8vIFNldCBkb2N1bWVudCB2YXJzIGlmIG5lZWRlZAotICAgIGlm
ICggKCBlbGVtLm93bmVyRG9jdW1lbnQgfHwgZWxlbSApICE9PSBkb2N1bWVudCApIHsKLSAgICBz
ZXREb2N1bWVudCggZWxlbSApOwotICAgIH0KLQotICAgIC8vIE1ha2Ugc3VyZSB0aGF0IGF0dHJp
YnV0ZSBzZWxlY3RvcnMgYXJlIHF1b3RlZAotICAgIGV4cHIgPSBleHByLnJlcGxhY2UoIHJhdHRy
aWJ1dGVRdW90ZXMsICI9JyQxJ10iICk7Ci0KLSAgICAvLyByYnVnZ3lRU0EgYWx3YXlzIGNvbnRh
aW5zIDpmb2N1cywgc28gbm8gbmVlZCBmb3IgYW4gZXhpc3RlbmNlIGNoZWNrCi0gICAgaWYgKCBz
dXBwb3J0Lm1hdGNoZXNTZWxlY3RvciAmJiAhZG9jdW1lbnRJc1hNTCAmJiAoIXJidWdneU1hdGNo
ZXMgfHwgIXJidWdneU1hdGNoZXMudGVzdChleHByKSkgJiYgIXJidWdneVFTQS50ZXN0KGV4cHIp
ICkgewotICAgIHRyeSB7Ci0gICAgdmFyIHJldCA9IG1hdGNoZXMuY2FsbCggZWxlbSwgZXhwciAp
OwotCi0gICAgLy8gSUUgOSdzIG1hdGNoZXNTZWxlY3RvciByZXR1cm5zIGZhbHNlIG9uIGRpc2Nv
bm5lY3RlZCBub2RlcwotICAgIGlmICggcmV0IHx8IHN1cHBvcnQuZGlzY29ubmVjdGVkTWF0Y2gg
fHwKLSAgICAvLyBBcyB3ZWxsLCBkaXNjb25uZWN0ZWQgbm9kZXMgYXJlIHNhaWQgdG8gYmUgaW4g
YSBkb2N1bWVudAotICAgIC8vIGZyYWdtZW50IGluIElFIDkKLSAgICBlbGVtLmRvY3VtZW50ICYm
IGVsZW0uZG9jdW1lbnQubm9kZVR5cGUgIT09IDExICkgewotICAgIHJldHVybiByZXQ7Ci0gICAg
fQotICAgIH0gY2F0Y2goZSkge30KLSAgICB9Ci0KLSAgICByZXR1cm4gU2l6emxlKCBleHByLCBk
b2N1bWVudCwgbnVsbCwgW2VsZW1dICkubGVuZ3RoID4gMDsKLX07Ci0KLVNpenpsZS5jb250YWlu
cyA9IGZ1bmN0aW9uKCBjb250ZXh0LCBlbGVtICkgewotICAgIC8vIFNldCBkb2N1bWVudCB2YXJz
IGlmIG5lZWRlZAotICAgIGlmICggKCBjb250ZXh0Lm93bmVyRG9jdW1lbnQgfHwgY29udGV4dCAp
ICE9PSBkb2N1bWVudCApIHsKLSAgICBzZXREb2N1bWVudCggY29udGV4dCApOwotICAgIH0KLSAg
ICByZXR1cm4gY29udGFpbnMoIGNvbnRleHQsIGVsZW0gKTsKLX07Ci0KLVNpenpsZS5hdHRyID0g
ZnVuY3Rpb24oIGVsZW0sIG5hbWUgKSB7Ci0gICAgdmFyIHZhbDsKLQotICAgIC8vIFNldCBkb2N1
bWVudCB2YXJzIGlmIG5lZWRlZAotICAgIGlmICggKCBlbGVtLm93bmVyRG9jdW1lbnQgfHwgZWxl
bSApICE9PSBkb2N1bWVudCApIHsKLSAgICBzZXREb2N1bWVudCggZWxlbSApOwotICAgIH0KLQot
ICAgIGlmICggIWRvY3VtZW50SXNYTUwgKSB7Ci0gICAgbmFtZSA9IG5hbWUudG9Mb3dlckNhc2Uo
KTsKLSAgICB9Ci0gICAgaWYgKCAodmFsID0gRXhwci5hdHRySGFuZGxlWyBuYW1lIF0pICkgewot
ICAgIHJldHVybiB2YWwoIGVsZW0gKTsKLSAgICB9Ci0gICAgaWYgKCBkb2N1bWVudElzWE1MIHx8
IHN1cHBvcnQuYXR0cmlidXRlcyApIHsKLSAgICByZXR1cm4gZWxlbS5nZXRBdHRyaWJ1dGUoIG5h
bWUgKTsKLSAgICB9Ci0gICAgcmV0dXJuICggKHZhbCA9IGVsZW0uZ2V0QXR0cmlidXRlTm9kZSgg
bmFtZSApKSB8fCBlbGVtLmdldEF0dHJpYnV0ZSggbmFtZSApICkgJiYgZWxlbVsgbmFtZSBdID09
PSB0cnVlID8KLSAgICBuYW1lIDoKLSAgICB2YWwgJiYgdmFsLnNwZWNpZmllZCA/IHZhbC52YWx1
ZSA6IG51bGw7Ci19OwotCi1TaXp6bGUuZXJyb3IgPSBmdW5jdGlvbiggbXNnICkgewotICAgIHRo
cm93IG5ldyBFcnJvciggIlN5bnRheCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246ICIg
KyBtc2cgKTsKLX07Ci0KLS8vIERvY3VtZW50IHNvcnRpbmcgYW5kIHJlbW92aW5nIGR1cGxpY2F0
ZXMKLVNpenpsZS51bmlxdWVTb3J0ID0gZnVuY3Rpb24oIHJlc3VsdHMgKSB7Ci0gICAgdmFyIGVs
ZW0sCi0gICAgZHVwbGljYXRlcyA9IFtdLAotICAgIGkgPSAxLAotICAgIGogPSAwOwotCi0gICAg
Ly8gVW5sZXNzIHdlICprbm93KiB3ZSBjYW4gZGV0ZWN0IGR1cGxpY2F0ZXMsIGFzc3VtZSB0aGVp
ciBwcmVzZW5jZQotICAgIGhhc0R1cGxpY2F0ZSA9ICFzdXBwb3J0LmRldGVjdER1cGxpY2F0ZXM7
Ci0gICAgcmVzdWx0cy5zb3J0KCBzb3J0T3JkZXIgKTsKLQotICAgIGlmICggaGFzRHVwbGljYXRl
ICkgewotICAgIGZvciAoIDsgKGVsZW0gPSByZXN1bHRzW2ldKTsgaSsrICkgewotICAgIGlmICgg
ZWxlbSA9PT0gcmVzdWx0c1sgaSAtIDEgXSApIHsKLSAgICBqID0gZHVwbGljYXRlcy5wdXNoKCBp
ICk7Ci0gICAgfQotICAgIH0KLSAgICB3aGlsZSAoIGotLSApIHsKLSAgICByZXN1bHRzLnNwbGlj
ZSggZHVwbGljYXRlc1sgaiBdLCAxICk7Ci0gICAgfQotICAgIH0KLQotICAgIHJldHVybiByZXN1
bHRzOwotfTsKLQotZnVuY3Rpb24gc2libGluZ0NoZWNrKCBhLCBiICkgewotICAgIHZhciBjdXIg
PSBiICYmIGEsCi0gICAgZGlmZiA9IGN1ciAmJiAoIH5iLnNvdXJjZUluZGV4IHx8IE1BWF9ORUdB
VElWRSApIC0gKCB+YS5zb3VyY2VJbmRleCB8fCBNQVhfTkVHQVRJVkUgKTsKLQotICAgIC8vIFVz
ZSBJRSBzb3VyY2VJbmRleCBpZiBhdmFpbGFibGUgb24gYm90aCBub2RlcwotICAgIGlmICggZGlm
ZiApIHsKLSAgICByZXR1cm4gZGlmZjsKLSAgICB9Ci0KLSAgICAvLyBDaGVjayBpZiBiIGZvbGxv
d3MgYQotICAgIGlmICggY3VyICkgewotICAgIHdoaWxlICggKGN1ciA9IGN1ci5uZXh0U2libGlu
ZykgKSB7Ci0gICAgaWYgKCBjdXIgPT09IGIgKSB7Ci0gICAgcmV0dXJuIC0xOwotICAgIH0KLSAg
ICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIGEgPyAxIDogLTE7Ci19Ci0KLS8vIFJldHVybnMgYSBm
dW5jdGlvbiB0byB1c2UgaW4gcHNldWRvcyBmb3IgaW5wdXQgdHlwZXMKLWZ1bmN0aW9uIGNyZWF0
ZUlucHV0UHNldWRvKCB0eXBlICkgewotICAgIHJldHVybiBmdW5jdGlvbiggZWxlbSApIHsKLSAg
ICB2YXIgbmFtZSA9IGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTsKLSAgICByZXR1cm4gbmFt
ZSA9PT0gImlucHV0IiAmJiBlbGVtLnR5cGUgPT09IHR5cGU7Ci0gICAgfTsKLX0KLQotLy8gUmV0
dXJucyBhIGZ1bmN0aW9uIHRvIHVzZSBpbiBwc2V1ZG9zIGZvciBidXR0b25zCi1mdW5jdGlvbiBj
cmVhdGVCdXR0b25Qc2V1ZG8oIHR5cGUgKSB7Ci0gICAgcmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkg
ewotICAgIHZhciBuYW1lID0gZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOwotICAgIHJldHVy
biAobmFtZSA9PT0gImlucHV0IiB8fCBuYW1lID09PSAiYnV0dG9uIikgJiYgZWxlbS50eXBlID09
PSB0eXBlOwotICAgIH07Ci19Ci0KLS8vIFJldHVybnMgYSBmdW5jdGlvbiB0byB1c2UgaW4gcHNl
dWRvcyBmb3IgcG9zaXRpb25hbHMKLWZ1bmN0aW9uIGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oIGZu
ICkgewotICAgIHJldHVybiBtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIGFyZ3VtZW50ICkgewotICAg
IGFyZ3VtZW50ID0gK2FyZ3VtZW50OwotICAgIHJldHVybiBtYXJrRnVuY3Rpb24oZnVuY3Rpb24o
IHNlZWQsIG1hdGNoZXMgKSB7Ci0gICAgdmFyIGosCi0gICAgbWF0Y2hJbmRleGVzID0gZm4oIFtd
LCBzZWVkLmxlbmd0aCwgYXJndW1lbnQgKSwKLSAgICBpID0gbWF0Y2hJbmRleGVzLmxlbmd0aDsK
LQotICAgIC8vIE1hdGNoIGVsZW1lbnRzIGZvdW5kIGF0IHRoZSBzcGVjaWZpZWQgaW5kZXhlcwot
ICAgIHdoaWxlICggaS0tICkgewotICAgIGlmICggc2VlZFsgKGogPSBtYXRjaEluZGV4ZXNbaV0p
IF0gKSB7Ci0gICAgc2VlZFtqXSA9ICEobWF0Y2hlc1tqXSA9IHNlZWRbal0pOwotICAgIH0KLSAg
ICB9Ci0gICAgfSk7Ci0gICAgfSk7Ci19Ci0KLS8qKgotICogVXRpbGl0eSBmdW5jdGlvbiBmb3Ig
cmV0cmlldmluZyB0aGUgdGV4dCB2YWx1ZSBvZiBhbiBhcnJheSBvZiBET00gbm9kZXMKLSAqIEBw
YXJhbSB7QXJyYXl8RWxlbWVudH0gZWxlbQotICovCi1nZXRUZXh0ID0gU2l6emxlLmdldFRleHQg
PSBmdW5jdGlvbiggZWxlbSApIHsKLSAgICB2YXIgbm9kZSwKLSAgICByZXQgPSAiIiwKLSAgICBp
ID0gMCwKLSAgICBub2RlVHlwZSA9IGVsZW0ubm9kZVR5cGU7Ci0KLSAgICBpZiAoICFub2RlVHlw
ZSApIHsKLSAgICAvLyBJZiBubyBub2RlVHlwZSwgdGhpcyBpcyBleHBlY3RlZCB0byBiZSBhbiBh
cnJheQotICAgIGZvciAoIDsgKG5vZGUgPSBlbGVtW2ldKTsgaSsrICkgewotICAgIC8vIERvIG5v
dCB0cmF2ZXJzZSBjb21tZW50IG5vZGVzCi0gICAgcmV0ICs9IGdldFRleHQoIG5vZGUgKTsKLSAg
ICB9Ci0gICAgfSBlbHNlIGlmICggbm9kZVR5cGUgPT09IDEgfHwgbm9kZVR5cGUgPT09IDkgfHwg
bm9kZVR5cGUgPT09IDExICkgewotICAgIC8vIFVzZSB0ZXh0Q29udGVudCBmb3IgZWxlbWVudHMK
LSAgICAvLyBpbm5lclRleHQgdXNhZ2UgcmVtb3ZlZCBmb3IgY29uc2lzdGVuY3kgb2YgbmV3IGxp
bmVzIChzZWUgIzExMTUzKQotICAgIGlmICggdHlwZW9mIGVsZW0udGV4dENvbnRlbnQgPT09ICJz
dHJpbmciICkgewotICAgIHJldHVybiBlbGVtLnRleHRDb250ZW50OwotICAgIH0gZWxzZSB7Ci0g
ICAgLy8gVHJhdmVyc2UgaXRzIGNoaWxkcmVuCi0gICAgZm9yICggZWxlbSA9IGVsZW0uZmlyc3RD
aGlsZDsgZWxlbTsgZWxlbSA9IGVsZW0ubmV4dFNpYmxpbmcgKSB7Ci0gICAgcmV0ICs9IGdldFRl
eHQoIGVsZW0gKTsKLSAgICB9Ci0gICAgfQotICAgIH0gZWxzZSBpZiAoIG5vZGVUeXBlID09PSAz
IHx8IG5vZGVUeXBlID09PSA0ICkgewotICAgIHJldHVybiBlbGVtLm5vZGVWYWx1ZTsKLSAgICB9
Ci0gICAgLy8gRG8gbm90IGluY2x1ZGUgY29tbWVudCBvciBwcm9jZXNzaW5nIGluc3RydWN0aW9u
IG5vZGVzCi0KLSAgICByZXR1cm4gcmV0OwotfTsKLQotRXhwciA9IFNpenpsZS5zZWxlY3RvcnMg
PSB7Ci0KLSAgICAvLyBDYW4gYmUgYWRqdXN0ZWQgYnkgdGhlIHVzZXIKLSAgICBjYWNoZUxlbmd0
aDogNTAsCi0KLSAgICBjcmVhdGVQc2V1ZG86IG1hcmtGdW5jdGlvbiwKLQotICAgIG1hdGNoOiBt
YXRjaEV4cHIsCi0KLSAgICBmaW5kOiB7fSwKLQotICAgIHJlbGF0aXZlOiB7Ci0gICAgIj4iOiB7
IGRpcjogInBhcmVudE5vZGUiLCBmaXJzdDogdHJ1ZSB9LAotICAgICIgIjogeyBkaXI6ICJwYXJl
bnROb2RlIiB9LAotICAgICIrIjogeyBkaXI6ICJwcmV2aW91c1NpYmxpbmciLCBmaXJzdDogdHJ1
ZSB9LAotICAgICJ+IjogeyBkaXI6ICJwcmV2aW91c1NpYmxpbmciIH0KLSAgICB9LAotCi0gICAg
cHJlRmlsdGVyOiB7Ci0gICAgIkFUVFIiOiBmdW5jdGlvbiggbWF0Y2ggKSB7Ci0gICAgbWF0Y2hb
MV0gPSBtYXRjaFsxXS5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApOwotCi0gICAgLy8g
TW92ZSB0aGUgZ2l2ZW4gdmFsdWUgdG8gbWF0Y2hbM10gd2hldGhlciBxdW90ZWQgb3IgdW5xdW90
ZWQKLSAgICBtYXRjaFszXSA9ICggbWF0Y2hbNF0gfHwgbWF0Y2hbNV0gfHwgIiIgKS5yZXBsYWNl
KCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApOwotCi0gICAgaWYgKCBtYXRjaFsyXSA9PT0gIn49IiAp
IHsKLSAgICBtYXRjaFszXSA9ICIgIiArIG1hdGNoWzNdICsgIiAiOwotICAgIH0KLQotICAgIHJl
dHVybiBtYXRjaC5zbGljZSggMCwgNCApOwotICAgIH0sCi0KLSAgICAiQ0hJTEQiOiBmdW5jdGlv
biggbWF0Y2ggKSB7Ci0gICAgLyogbWF0Y2hlcyBmcm9tIG1hdGNoRXhwclsiQ0hJTEQiXQotICAg
IDEgdHlwZSAob25seXxudGh8Li4uKQotICAgIDIgd2hhdCAoY2hpbGR8b2YtdHlwZSkKLSAgICAz
IGFyZ3VtZW50IChldmVufG9kZHxcZCp8XGQqbihbKy1dXGQrKT98Li4uKQotICAgIDQgeG4tY29t
cG9uZW50IG9mIHhuK3kgYXJndW1lbnQgKFsrLV0/XGQqbnwpCi0gICAgNSBzaWduIG9mIHhuLWNv
bXBvbmVudAotICAgIDYgeCBvZiB4bi1jb21wb25lbnQKLSAgICA3IHNpZ24gb2YgeS1jb21wb25l
bnQKLSAgICA4IHkgb2YgeS1jb21wb25lbnQKLSAgICAqLwotICAgIG1hdGNoWzFdID0gbWF0Y2hb
MV0udG9Mb3dlckNhc2UoKTsKLQotICAgIGlmICggbWF0Y2hbMV0uc2xpY2UoIDAsIDMgKSA9PT0g
Im50aCIgKSB7Ci0gICAgLy8gbnRoLSogcmVxdWlyZXMgYXJndW1lbnQKLSAgICBpZiAoICFtYXRj
aFszXSApIHsKLSAgICBTaXp6bGUuZXJyb3IoIG1hdGNoWzBdICk7Ci0gICAgfQotCi0gICAgLy8g
bnVtZXJpYyB4IGFuZCB5IHBhcmFtZXRlcnMgZm9yIEV4cHIuZmlsdGVyLkNISUxECi0gICAgLy8g
cmVtZW1iZXIgdGhhdCBmYWxzZS90cnVlIGNhc3QgcmVzcGVjdGl2ZWx5IHRvIDAvMQotICAgIG1h
dGNoWzRdID0gKyggbWF0Y2hbNF0gPyBtYXRjaFs1XSArIChtYXRjaFs2XSB8fCAxKSA6IDIgKiAo
IG1hdGNoWzNdID09PSAiZXZlbiIgfHwgbWF0Y2hbM10gPT09ICJvZGQiICkgKTsKLSAgICBtYXRj
aFs1XSA9ICsoICggbWF0Y2hbN10gKyBtYXRjaFs4XSApIHx8IG1hdGNoWzNdID09PSAib2RkIiAp
OwotCi0gICAgLy8gb3RoZXIgdHlwZXMgcHJvaGliaXQgYXJndW1lbnRzCi0gICAgfSBlbHNlIGlm
ICggbWF0Y2hbM10gKSB7Ci0gICAgU2l6emxlLmVycm9yKCBtYXRjaFswXSApOwotICAgIH0KLQot
ICAgIHJldHVybiBtYXRjaDsKLSAgICB9LAotCi0gICAgIlBTRVVETyI6IGZ1bmN0aW9uKCBtYXRj
aCApIHsKLSAgICB2YXIgZXhjZXNzLAotICAgIHVucXVvdGVkID0gIW1hdGNoWzVdICYmIG1hdGNo
WzJdOwotCi0gICAgaWYgKCBtYXRjaEV4cHJbIkNISUxEIl0udGVzdCggbWF0Y2hbMF0gKSApIHsK
LSAgICByZXR1cm4gbnVsbDsKLSAgICB9Ci0KLSAgICAvLyBBY2NlcHQgcXVvdGVkIGFyZ3VtZW50
cyBhcy1pcwotICAgIGlmICggbWF0Y2hbNF0gKSB7Ci0gICAgbWF0Y2hbMl0gPSBtYXRjaFs0XTsK
LQotICAgIC8vIFN0cmlwIGV4Y2VzcyBjaGFyYWN0ZXJzIGZyb20gdW5xdW90ZWQgYXJndW1lbnRz
Ci0gICAgfSBlbHNlIGlmICggdW5xdW90ZWQgJiYgcnBzZXVkby50ZXN0KCB1bnF1b3RlZCApICYm
Ci0gICAgLy8gR2V0IGV4Y2VzcyBmcm9tIHRva2VuaXplIChyZWN1cnNpdmVseSkKLSAgICAoZXhj
ZXNzID0gdG9rZW5pemUoIHVucXVvdGVkLCB0cnVlICkpICYmCi0gICAgLy8gYWR2YW5jZSB0byB0
aGUgbmV4dCBjbG9zaW5nIHBhcmVudGhlc2lzCi0gICAgKGV4Y2VzcyA9IHVucXVvdGVkLmluZGV4
T2YoICIpIiwgdW5xdW90ZWQubGVuZ3RoIC0gZXhjZXNzICkgLSB1bnF1b3RlZC5sZW5ndGgpICkg
ewotCi0gICAgLy8gZXhjZXNzIGlzIGEgbmVnYXRpdmUgaW5kZXgKLSAgICBtYXRjaFswXSA9IG1h
dGNoWzBdLnNsaWNlKCAwLCBleGNlc3MgKTsKLSAgICBtYXRjaFsyXSA9IHVucXVvdGVkLnNsaWNl
KCAwLCBleGNlc3MgKTsKLSAgICB9Ci0KLSAgICAvLyBSZXR1cm4gb25seSBjYXB0dXJlcyBuZWVk
ZWQgYnkgdGhlIHBzZXVkbyBmaWx0ZXIgbWV0aG9kICh0eXBlIGFuZCBhcmd1bWVudCkKLSAgICBy
ZXR1cm4gbWF0Y2guc2xpY2UoIDAsIDMgKTsKLSAgICB9Ci0gICAgfSwKLQotICAgIGZpbHRlcjog
ewotCi0gICAgIlRBRyI6IGZ1bmN0aW9uKCBub2RlTmFtZSApIHsKLSAgICBpZiAoIG5vZGVOYW1l
ID09PSAiKiIgKSB7Ci0gICAgcmV0dXJuIGZ1bmN0aW9uKCkgeyByZXR1cm4gdHJ1ZTsgfTsKLSAg
ICB9Ci0KLSAgICBub2RlTmFtZSA9IG5vZGVOYW1lLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNj
YXBlICkudG9Mb3dlckNhc2UoKTsKLSAgICByZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAg
cmV0dXJuIGVsZW0ubm9kZU5hbWUgJiYgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBu
b2RlTmFtZTsKLSAgICB9OwotICAgIH0sCi0KLSAgICAiQ0xBU1MiOiBmdW5jdGlvbiggY2xhc3NO
YW1lICkgewotICAgIHZhciBwYXR0ZXJuID0gY2xhc3NDYWNoZVsgY2xhc3NOYW1lICsgIiAiIF07
Ci0KLSAgICByZXR1cm4gcGF0dGVybiB8fAotICAgIChwYXR0ZXJuID0gbmV3IFJlZ0V4cCggIihe
fCIgKyB3aGl0ZXNwYWNlICsgIikiICsgY2xhc3NOYW1lICsgIigiICsgd2hpdGVzcGFjZSArICJ8
JCkiICkpICYmCi0gICAgY2xhc3NDYWNoZSggY2xhc3NOYW1lLCBmdW5jdGlvbiggZWxlbSApIHsK
LSAgICByZXR1cm4gcGF0dGVybi50ZXN0KCBlbGVtLmNsYXNzTmFtZSB8fCAodHlwZW9mIGVsZW0u
Z2V0QXR0cmlidXRlICE9PSBzdHJ1bmRlZmluZWQgJiYgZWxlbS5nZXRBdHRyaWJ1dGUoImNsYXNz
IikpIHx8ICIiICk7Ci0gICAgfSk7Ci0gICAgfSwKLQotICAgICJBVFRSIjogZnVuY3Rpb24oIG5h
bWUsIG9wZXJhdG9yLCBjaGVjayApIHsKLSAgICByZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7Ci0g
ICAgdmFyIHJlc3VsdCA9IFNpenpsZS5hdHRyKCBlbGVtLCBuYW1lICk7Ci0KLSAgICBpZiAoIHJl
c3VsdCA9PSBudWxsICkgewotICAgIHJldHVybiBvcGVyYXRvciA9PT0gIiE9IjsKLSAgICB9Ci0g
ICAgaWYgKCAhb3BlcmF0b3IgKSB7Ci0gICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgcmVz
dWx0ICs9ICIiOwotCi0gICAgcmV0dXJuIG9wZXJhdG9yID09PSAiPSIgPyByZXN1bHQgPT09IGNo
ZWNrIDoKLSAgICBvcGVyYXRvciA9PT0gIiE9IiA/IHJlc3VsdCAhPT0gY2hlY2sgOgotICAgIG9w
ZXJhdG9yID09PSAiXj0iID8gY2hlY2sgJiYgcmVzdWx0LmluZGV4T2YoIGNoZWNrICkgPT09IDAg
OgotICAgIG9wZXJhdG9yID09PSAiKj0iID8gY2hlY2sgJiYgcmVzdWx0LmluZGV4T2YoIGNoZWNr
ICkgPiAtMSA6Ci0gICAgb3BlcmF0b3IgPT09ICIkPSIgPyBjaGVjayAmJiByZXN1bHQuc2xpY2Uo
IC1jaGVjay5sZW5ndGggKSA9PT0gY2hlY2sgOgotICAgIG9wZXJhdG9yID09PSAifj0iID8gKCAi
ICIgKyByZXN1bHQgKyAiICIgKS5pbmRleE9mKCBjaGVjayApID4gLTEgOgotICAgIG9wZXJhdG9y
ID09PSAifD0iID8gcmVzdWx0ID09PSBjaGVjayB8fCByZXN1bHQuc2xpY2UoIDAsIGNoZWNrLmxl
bmd0aCArIDEgKSA9PT0gY2hlY2sgKyAiLSIgOgotICAgIGZhbHNlOwotICAgIH07Ci0gICAgfSwK
LQotICAgICJDSElMRCI6IGZ1bmN0aW9uKCB0eXBlLCB3aGF0LCBhcmd1bWVudCwgZmlyc3QsIGxh
c3QgKSB7Ci0gICAgdmFyIHNpbXBsZSA9IHR5cGUuc2xpY2UoIDAsIDMgKSAhPT0gIm50aCIsCi0g
ICAgZm9yd2FyZCA9IHR5cGUuc2xpY2UoIC00ICkgIT09ICJsYXN0IiwKLSAgICBvZlR5cGUgPSB3
aGF0ID09PSAib2YtdHlwZSI7Ci0KLSAgICByZXR1cm4gZmlyc3QgPT09IDEgJiYgbGFzdCA9PT0g
MCA/Ci0KLSAgICAvLyBTaG9ydGN1dCBmb3IgOm50aC0qKG4pCi0gICAgZnVuY3Rpb24oIGVsZW0g
KSB7Ci0gICAgcmV0dXJuICEhZWxlbS5wYXJlbnROb2RlOwotICAgIH0gOgotCi0gICAgZnVuY3Rp
b24oIGVsZW0sIGNvbnRleHQsIHhtbCApIHsKLSAgICB2YXIgY2FjaGUsIG91dGVyQ2FjaGUsIG5v
ZGUsIGRpZmYsIG5vZGVJbmRleCwgc3RhcnQsCi0gICAgZGlyID0gc2ltcGxlICE9PSBmb3J3YXJk
ID8gIm5leHRTaWJsaW5nIiA6ICJwcmV2aW91c1NpYmxpbmciLAotICAgIHBhcmVudCA9IGVsZW0u
cGFyZW50Tm9kZSwKLSAgICBuYW1lID0gb2ZUeXBlICYmIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNh
c2UoKSwKLSAgICB1c2VDYWNoZSA9ICF4bWwgJiYgIW9mVHlwZTsKLQotICAgIGlmICggcGFyZW50
ICkgewotCi0gICAgLy8gOihmaXJzdHxsYXN0fG9ubHkpLShjaGlsZHxvZi10eXBlKQotICAgIGlm
ICggc2ltcGxlICkgewotICAgIHdoaWxlICggZGlyICkgewotICAgIG5vZGUgPSBlbGVtOwotICAg
IHdoaWxlICggKG5vZGUgPSBub2RlWyBkaXIgXSkgKSB7Ci0gICAgaWYgKCBvZlR5cGUgPyBub2Rl
Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IG5hbWUgOiBub2RlLm5vZGVUeXBlID09PSAxICkg
ewotICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgfQotICAgIC8vIFJldmVyc2UgZGlyZWN0
aW9uIGZvciA6b25seS0qIChpZiB3ZSBoYXZlbid0IHlldCBkb25lIHNvKQotICAgIHN0YXJ0ID0g
ZGlyID0gdHlwZSA9PT0gIm9ubHkiICYmICFzdGFydCAmJiAibmV4dFNpYmxpbmciOwotICAgIH0K
LSAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBzdGFydCA9IFsgZm9yd2FyZCA/IHBhcmVu
dC5maXJzdENoaWxkIDogcGFyZW50Lmxhc3RDaGlsZCBdOwotCi0gICAgLy8gbm9uLXhtbCA6bnRo
LWNoaWxkKC4uLikgc3RvcmVzIGNhY2hlIGRhdGEgb24gYHBhcmVudGAKLSAgICBpZiAoIGZvcndh
cmQgJiYgdXNlQ2FjaGUgKSB7Ci0gICAgLy8gU2VlayBgZWxlbWAgZnJvbSBhIHByZXZpb3VzbHkt
Y2FjaGVkIGluZGV4Ci0gICAgb3V0ZXJDYWNoZSA9IHBhcmVudFsgZXhwYW5kbyBdIHx8IChwYXJl
bnRbIGV4cGFuZG8gXSA9IHt9KTsKLSAgICBjYWNoZSA9IG91dGVyQ2FjaGVbIHR5cGUgXSB8fCBb
XTsKLSAgICBub2RlSW5kZXggPSBjYWNoZVswXSA9PT0gZGlycnVucyAmJiBjYWNoZVsxXTsKLSAg
ICBkaWZmID0gY2FjaGVbMF0gPT09IGRpcnJ1bnMgJiYgY2FjaGVbMl07Ci0gICAgbm9kZSA9IG5v
ZGVJbmRleCAmJiBwYXJlbnQuY2hpbGROb2Rlc1sgbm9kZUluZGV4IF07Ci0KLSAgICB3aGlsZSAo
IChub2RlID0gKytub2RlSW5kZXggJiYgbm9kZSAmJiBub2RlWyBkaXIgXSB8fAotCi0gICAgLy8g
RmFsbGJhY2sgdG8gc2Vla2luZyBgZWxlbWAgZnJvbSB0aGUgc3RhcnQKLSAgICAoZGlmZiA9IG5v
ZGVJbmRleCA9IDApIHx8IHN0YXJ0LnBvcCgpKSApIHsKLQotICAgIC8vIFdoZW4gZm91bmQsIGNh
Y2hlIGluZGV4ZXMgb24gYHBhcmVudGAgYW5kIGJyZWFrCi0gICAgaWYgKCBub2RlLm5vZGVUeXBl
ID09PSAxICYmICsrZGlmZiAmJiBub2RlID09PSBlbGVtICkgewotICAgIG91dGVyQ2FjaGVbIHR5
cGUgXSA9IFsgZGlycnVucywgbm9kZUluZGV4LCBkaWZmIF07Ci0gICAgYnJlYWs7Ci0gICAgfQot
ICAgIH0KLQotICAgIC8vIFVzZSBwcmV2aW91c2x5LWNhY2hlZCBlbGVtZW50IGluZGV4IGlmIGF2
YWlsYWJsZQotICAgIH0gZWxzZSBpZiAoIHVzZUNhY2hlICYmIChjYWNoZSA9IChlbGVtWyBleHBh
bmRvIF0gfHwgKGVsZW1bIGV4cGFuZG8gXSA9IHt9KSlbIHR5cGUgXSkgJiYgY2FjaGVbMF0gPT09
IGRpcnJ1bnMgKSB7Ci0gICAgZGlmZiA9IGNhY2hlWzFdOwotCi0gICAgLy8geG1sIDpudGgtY2hp
bGQoLi4uKSBvciA6bnRoLWxhc3QtY2hpbGQoLi4uKSBvciA6bnRoKC1sYXN0KT8tb2YtdHlwZSgu
Li4pCi0gICAgfSBlbHNlIHsKLSAgICAvLyBVc2UgdGhlIHNhbWUgbG9vcCBhcyBhYm92ZSB0byBz
ZWVrIGBlbGVtYCBmcm9tIHRoZSBzdGFydAotICAgIHdoaWxlICggKG5vZGUgPSArK25vZGVJbmRl
eCAmJiBub2RlICYmIG5vZGVbIGRpciBdIHx8Ci0gICAgKGRpZmYgPSBub2RlSW5kZXggPSAwKSB8
fCBzdGFydC5wb3AoKSkgKSB7Ci0KLSAgICBpZiAoICggb2ZUeXBlID8gbm9kZS5ub2RlTmFtZS50
b0xvd2VyQ2FzZSgpID09PSBuYW1lIDogbm9kZS5ub2RlVHlwZSA9PT0gMSApICYmICsrZGlmZiAp
IHsKLSAgICAvLyBDYWNoZSB0aGUgaW5kZXggb2YgZWFjaCBlbmNvdW50ZXJlZCBlbGVtZW50Ci0g
ICAgaWYgKCB1c2VDYWNoZSApIHsKLSAgICAobm9kZVsgZXhwYW5kbyBdIHx8IChub2RlWyBleHBh
bmRvIF0gPSB7fSkpWyB0eXBlIF0gPSBbIGRpcnJ1bnMsIGRpZmYgXTsKLSAgICB9Ci0KLSAgICBp
ZiAoIG5vZGUgPT09IGVsZW0gKSB7Ci0gICAgYnJlYWs7Ci0gICAgfQotICAgIH0KLSAgICB9Ci0g
ICAgfQotCi0gICAgLy8gSW5jb3Jwb3JhdGUgdGhlIG9mZnNldCwgdGhlbiBjaGVjayBhZ2FpbnN0
IGN5Y2xlIHNpemUKLSAgICBkaWZmIC09IGxhc3Q7Ci0gICAgcmV0dXJuIGRpZmYgPT09IGZpcnN0
IHx8ICggZGlmZiAlIGZpcnN0ID09PSAwICYmIGRpZmYgLyBmaXJzdCA+PSAwICk7Ci0gICAgfQot
ICAgIH07Ci0gICAgfSwKLQotICAgICJQU0VVRE8iOiBmdW5jdGlvbiggcHNldWRvLCBhcmd1bWVu
dCApIHsKLSAgICAvLyBwc2V1ZG8tY2xhc3MgbmFtZXMgYXJlIGNhc2UtaW5zZW5zaXRpdmUKLSAg
ICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9zZWxlY3RvcnMvI3BzZXVkby1jbGFzc2VzCi0gICAg
Ly8gUHJpb3JpdGl6ZSBieSBjYXNlIHNlbnNpdGl2aXR5IGluIGNhc2UgY3VzdG9tIHBzZXVkb3Mg
YXJlIGFkZGVkIHdpdGggdXBwZXJjYXNlIGxldHRlcnMKLSAgICAvLyBSZW1lbWJlciB0aGF0IHNl
dEZpbHRlcnMgaW5oZXJpdHMgZnJvbSBwc2V1ZG9zCi0gICAgdmFyIGFyZ3MsCi0gICAgZm4gPSBF
eHByLnBzZXVkb3NbIHBzZXVkbyBdIHx8IEV4cHIuc2V0RmlsdGVyc1sgcHNldWRvLnRvTG93ZXJD
YXNlKCkgXSB8fAotICAgIFNpenpsZS5lcnJvciggInVuc3VwcG9ydGVkIHBzZXVkbzogIiArIHBz
ZXVkbyApOwotCi0gICAgLy8gVGhlIHVzZXIgbWF5IHVzZSBjcmVhdGVQc2V1ZG8gdG8gaW5kaWNh
dGUgdGhhdAotICAgIC8vIGFyZ3VtZW50cyBhcmUgbmVlZGVkIHRvIGNyZWF0ZSB0aGUgZmlsdGVy
IGZ1bmN0aW9uCi0gICAgLy8ganVzdCBhcyBTaXp6bGUgZG9lcwotICAgIGlmICggZm5bIGV4cGFu
ZG8gXSApIHsKLSAgICByZXR1cm4gZm4oIGFyZ3VtZW50ICk7Ci0gICAgfQotCi0gICAgLy8gQnV0
IG1haW50YWluIHN1cHBvcnQgZm9yIG9sZCBzaWduYXR1cmVzCi0gICAgaWYgKCBmbi5sZW5ndGgg
PiAxICkgewotICAgIGFyZ3MgPSBbIHBzZXVkbywgcHNldWRvLCAiIiwgYXJndW1lbnQgXTsKLSAg
ICByZXR1cm4gRXhwci5zZXRGaWx0ZXJzLmhhc093blByb3BlcnR5KCBwc2V1ZG8udG9Mb3dlckNh
c2UoKSApID8KLSAgICBtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIHNlZWQsIG1hdGNoZXMgKSB7Ci0g
ICAgdmFyIGlkeCwKLSAgICBtYXRjaGVkID0gZm4oIHNlZWQsIGFyZ3VtZW50ICksCi0gICAgaSA9
IG1hdGNoZWQubGVuZ3RoOwotICAgIHdoaWxlICggaS0tICkgewotICAgIGlkeCA9IGluZGV4T2Yu
Y2FsbCggc2VlZCwgbWF0Y2hlZFtpXSApOwotICAgIHNlZWRbIGlkeCBdID0gISggbWF0Y2hlc1sg
aWR4IF0gPSBtYXRjaGVkW2ldICk7Ci0gICAgfQotICAgIH0pIDoKLSAgICBmdW5jdGlvbiggZWxl
bSApIHsKLSAgICByZXR1cm4gZm4oIGVsZW0sIDAsIGFyZ3MgKTsKLSAgICB9OwotICAgIH0KLQot
ICAgIHJldHVybiBmbjsKLSAgICB9Ci0gICAgfSwKLQotICAgIHBzZXVkb3M6IHsKLSAgICAvLyBQ
b3RlbnRpYWxseSBjb21wbGV4IHBzZXVkb3MKLSAgICAibm90IjogbWFya0Z1bmN0aW9uKGZ1bmN0
aW9uKCBzZWxlY3RvciApIHsKLSAgICAvLyBUcmltIHRoZSBzZWxlY3RvciBwYXNzZWQgdG8gY29t
cGlsZQotICAgIC8vIHRvIGF2b2lkIHRyZWF0aW5nIGxlYWRpbmcgYW5kIHRyYWlsaW5nCi0gICAg
Ly8gc3BhY2VzIGFzIGNvbWJpbmF0b3JzCi0gICAgdmFyIGlucHV0ID0gW10sCi0gICAgcmVzdWx0
cyA9IFtdLAotICAgIG1hdGNoZXIgPSBjb21waWxlKCBzZWxlY3Rvci5yZXBsYWNlKCBydHJpbSwg
IiQxIiApICk7Ci0KLSAgICByZXR1cm4gbWF0Y2hlclsgZXhwYW5kbyBdID8KLSAgICBtYXJrRnVu
Y3Rpb24oZnVuY3Rpb24oIHNlZWQsIG1hdGNoZXMsIGNvbnRleHQsIHhtbCApIHsKLSAgICB2YXIg
ZWxlbSwKLSAgICB1bm1hdGNoZWQgPSBtYXRjaGVyKCBzZWVkLCBudWxsLCB4bWwsIFtdICksCi0g
ICAgaSA9IHNlZWQubGVuZ3RoOwotCi0gICAgLy8gTWF0Y2ggZWxlbWVudHMgdW5tYXRjaGVkIGJ5
IGBtYXRjaGVyYAotICAgIHdoaWxlICggaS0tICkgewotICAgIGlmICggKGVsZW0gPSB1bm1hdGNo
ZWRbaV0pICkgewotICAgIHNlZWRbaV0gPSAhKG1hdGNoZXNbaV0gPSBlbGVtKTsKLSAgICB9Ci0g
ICAgfQotICAgIH0pIDoKLSAgICBmdW5jdGlvbiggZWxlbSwgY29udGV4dCwgeG1sICkgewotICAg
IGlucHV0WzBdID0gZWxlbTsKLSAgICBtYXRjaGVyKCBpbnB1dCwgbnVsbCwgeG1sLCByZXN1bHRz
ICk7Ci0gICAgcmV0dXJuICFyZXN1bHRzLnBvcCgpOwotICAgIH07Ci0gICAgfSksCi0KLSAgICAi
aGFzIjogbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCBzZWxlY3RvciApIHsKLSAgICByZXR1cm4gZnVu
Y3Rpb24oIGVsZW0gKSB7Ci0gICAgcmV0dXJuIFNpenpsZSggc2VsZWN0b3IsIGVsZW0gKS5sZW5n
dGggPiAwOwotICAgIH07Ci0gICAgfSksCi0KLSAgICAiY29udGFpbnMiOiBtYXJrRnVuY3Rpb24o
ZnVuY3Rpb24oIHRleHQgKSB7Ci0gICAgcmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkgewotICAgIHJl
dHVybiAoIGVsZW0udGV4dENvbnRlbnQgfHwgZWxlbS5pbm5lclRleHQgfHwgZ2V0VGV4dCggZWxl
bSApICkuaW5kZXhPZiggdGV4dCApID4gLTE7Ci0gICAgfTsKLSAgICB9KSwKLQotICAgIC8vICJX
aGV0aGVyIGFuIGVsZW1lbnQgaXMgcmVwcmVzZW50ZWQgYnkgYSA6bGFuZygpIHNlbGVjdG9yCi0g
ICAgLy8gaXMgYmFzZWQgc29sZWx5IG9uIHRoZSBlbGVtZW50J3MgbGFuZ3VhZ2UgdmFsdWUKLSAg
ICAvLyBiZWluZyBlcXVhbCB0byB0aGUgaWRlbnRpZmllciBDLAotICAgIC8vIG9yIGJlZ2lubmlu
ZyB3aXRoIHRoZSBpZGVudGlmaWVyIEMgaW1tZWRpYXRlbHkgZm9sbG93ZWQgYnkgIi0iLgotICAg
IC8vIFRoZSBtYXRjaGluZyBvZiBDIGFnYWluc3QgdGhlIGVsZW1lbnQncyBsYW5ndWFnZSB2YWx1
ZSBpcyBwZXJmb3JtZWQgY2FzZS1pbnNlbnNpdGl2ZWx5LgotICAgIC8vIFRoZSBpZGVudGlmaWVy
IEMgZG9lcyBub3QgaGF2ZSB0byBiZSBhIHZhbGlkIGxhbmd1YWdlIG5hbWUuIgotICAgIC8vIGh0
dHA6Ly93d3cudzMub3JnL1RSL3NlbGVjdG9ycy8jbGFuZy1wc2V1ZG8KLSAgICAibGFuZyI6IG1h
cmtGdW5jdGlvbiggZnVuY3Rpb24oIGxhbmcgKSB7Ci0gICAgLy8gbGFuZyB2YWx1ZSBtdXN0IGJl
IGEgdmFsaWQgaWRlbnRpZmlkZXIKLSAgICBpZiAoICFyaWRlbnRpZmllci50ZXN0KGxhbmcgfHwg
IiIpICkgewotICAgIFNpenpsZS5lcnJvciggInVuc3VwcG9ydGVkIGxhbmc6ICIgKyBsYW5nICk7
Ci0gICAgfQotICAgIGxhbmcgPSBsYW5nLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICku
dG9Mb3dlckNhc2UoKTsKLSAgICByZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgdmFyIGVs
ZW1MYW5nOwotICAgIGRvIHsKLSAgICBpZiAoIChlbGVtTGFuZyA9IGRvY3VtZW50SXNYTUwgPwot
ICAgIGVsZW0uZ2V0QXR0cmlidXRlKCJ4bWw6bGFuZyIpIHx8IGVsZW0uZ2V0QXR0cmlidXRlKCJs
YW5nIikgOgotICAgIGVsZW0ubGFuZykgKSB7Ci0KLSAgICBlbGVtTGFuZyA9IGVsZW1MYW5nLnRv
TG93ZXJDYXNlKCk7Ci0gICAgcmV0dXJuIGVsZW1MYW5nID09PSBsYW5nIHx8IGVsZW1MYW5nLmlu
ZGV4T2YoIGxhbmcgKyAiLSIgKSA9PT0gMDsKLSAgICB9Ci0gICAgfSB3aGlsZSAoIChlbGVtID0g
ZWxlbS5wYXJlbnROb2RlKSAmJiBlbGVtLm5vZGVUeXBlID09PSAxICk7Ci0gICAgcmV0dXJuIGZh
bHNlOwotICAgIH07Ci0gICAgfSksCi0KLSAgICAvLyBNaXNjZWxsYW5lb3VzCi0gICAgInRhcmdl
dCI6IGZ1bmN0aW9uKCBlbGVtICkgewotICAgIHZhciBoYXNoID0gd2luZG93LmxvY2F0aW9uICYm
IHdpbmRvdy5sb2NhdGlvbi5oYXNoOwotICAgIHJldHVybiBoYXNoICYmIGhhc2guc2xpY2UoIDEg
KSA9PT0gZWxlbS5pZDsKLSAgICB9LAotCi0gICAgInJvb3QiOiBmdW5jdGlvbiggZWxlbSApIHsK
LSAgICByZXR1cm4gZWxlbSA9PT0gZG9jRWxlbTsKLSAgICB9LAotCi0gICAgImZvY3VzIjogZnVu
Y3Rpb24oIGVsZW0gKSB7Ci0gICAgcmV0dXJuIGVsZW0gPT09IGRvY3VtZW50LmFjdGl2ZUVsZW1l
bnQgJiYgKCFkb2N1bWVudC5oYXNGb2N1cyB8fCBkb2N1bWVudC5oYXNGb2N1cygpKSAmJiAhIShl
bGVtLnR5cGUgfHwgZWxlbS5ocmVmIHx8IH5lbGVtLnRhYkluZGV4KTsKLSAgICB9LAotCi0gICAg
Ly8gQm9vbGVhbiBwcm9wZXJ0aWVzCi0gICAgImVuYWJsZWQiOiBmdW5jdGlvbiggZWxlbSApIHsK
LSAgICByZXR1cm4gZWxlbS5kaXNhYmxlZCA9PT0gZmFsc2U7Ci0gICAgfSwKLQotICAgICJkaXNh
YmxlZCI6IGZ1bmN0aW9uKCBlbGVtICkgewotICAgIHJldHVybiBlbGVtLmRpc2FibGVkID09PSB0
cnVlOwotICAgIH0sCi0KLSAgICAiY2hlY2tlZCI6IGZ1bmN0aW9uKCBlbGVtICkgewotICAgIC8v
IEluIENTUzMsIDpjaGVja2VkIHNob3VsZCByZXR1cm4gYm90aCBjaGVja2VkIGFuZCBzZWxlY3Rl
ZCBlbGVtZW50cwotICAgIC8vIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMTEvUkVDLWNzczMtc2Vs
ZWN0b3JzLTIwMTEwOTI5LyNjaGVja2VkCi0gICAgdmFyIG5vZGVOYW1lID0gZWxlbS5ub2RlTmFt
ZS50b0xvd2VyQ2FzZSgpOwotICAgIHJldHVybiAobm9kZU5hbWUgPT09ICJpbnB1dCIgJiYgISFl
bGVtLmNoZWNrZWQpIHx8IChub2RlTmFtZSA9PT0gIm9wdGlvbiIgJiYgISFlbGVtLnNlbGVjdGVk
KTsKLSAgICB9LAotCi0gICAgInNlbGVjdGVkIjogZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgLy8g
QWNjZXNzaW5nIHRoaXMgcHJvcGVydHkgbWFrZXMgc2VsZWN0ZWQtYnktZGVmYXVsdAotICAgIC8v
IG9wdGlvbnMgaW4gU2FmYXJpIHdvcmsgcHJvcGVybHkKLSAgICBpZiAoIGVsZW0ucGFyZW50Tm9k
ZSApIHsKLSAgICBlbGVtLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleDsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gZWxlbS5zZWxlY3RlZCA9PT0gdHJ1ZTsKLSAgICB9LAotCi0gICAgLy8gQ29udGVudHMK
LSAgICAiZW1wdHkiOiBmdW5jdGlvbiggZWxlbSApIHsKLSAgICAvLyBodHRwOi8vd3d3LnczLm9y
Zy9UUi9zZWxlY3RvcnMvI2VtcHR5LXBzZXVkbwotICAgIC8vIDplbXB0eSBpcyBvbmx5IGFmZmVj
dGVkIGJ5IGVsZW1lbnQgbm9kZXMgYW5kIGNvbnRlbnQgbm9kZXMoaW5jbHVkaW5nIHRleHQoMyks
IGNkYXRhKDQpKSwKLSAgICAvLyAgIG5vdCBjb21tZW50LCBwcm9jZXNzaW5nIGluc3RydWN0aW9u
cywgb3Igb3RoZXJzCi0gICAgLy8gVGhhbmtzIHRvIERpZWdvIFBlcmluaSBmb3IgdGhlIG5vZGVO
YW1lIHNob3J0Y3V0Ci0gICAgLy8gICBHcmVhdGVyIHRoYW4gIkAiIG1lYW5zIGFscGhhIGNoYXJh
Y3RlcnMgKHNwZWNpZmljYWxseSBub3Qgc3RhcnRpbmcgd2l0aCAiIyIgb3IgIj8iKQotICAgIGZv
ciAoIGVsZW0gPSBlbGVtLmZpcnN0Q2hpbGQ7IGVsZW07IGVsZW0gPSBlbGVtLm5leHRTaWJsaW5n
ICkgewotICAgIGlmICggZWxlbS5ub2RlTmFtZSA+ICJAIiB8fCBlbGVtLm5vZGVUeXBlID09PSAz
IHx8IGVsZW0ubm9kZVR5cGUgPT09IDQgKSB7Ci0gICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAg
ICB9Ci0gICAgcmV0dXJuIHRydWU7Ci0gICAgfSwKLQotICAgICJwYXJlbnQiOiBmdW5jdGlvbigg
ZWxlbSApIHsKLSAgICByZXR1cm4gIUV4cHIucHNldWRvc1siZW1wdHkiXSggZWxlbSApOwotICAg
IH0sCi0KLSAgICAvLyBFbGVtZW50L2lucHV0IHR5cGVzCi0gICAgImhlYWRlciI6IGZ1bmN0aW9u
KCBlbGVtICkgewotICAgIHJldHVybiByaGVhZGVyLnRlc3QoIGVsZW0ubm9kZU5hbWUgKTsKLSAg
ICB9LAotCi0gICAgImlucHV0IjogZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgcmV0dXJuIHJpbnB1
dHMudGVzdCggZWxlbS5ub2RlTmFtZSApOwotICAgIH0sCi0KLSAgICAiYnV0dG9uIjogZnVuY3Rp
b24oIGVsZW0gKSB7Ci0gICAgdmFyIG5hbWUgPSBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7
Ci0gICAgcmV0dXJuIG5hbWUgPT09ICJpbnB1dCIgJiYgZWxlbS50eXBlID09PSAiYnV0dG9uIiB8
fCBuYW1lID09PSAiYnV0dG9uIjsKLSAgICB9LAotCi0gICAgInRleHQiOiBmdW5jdGlvbiggZWxl
bSApIHsKLSAgICB2YXIgYXR0cjsKLSAgICAvLyBJRTYgYW5kIDcgd2lsbCBtYXAgZWxlbS50eXBl
IHRvICd0ZXh0JyBmb3IgbmV3IEhUTUw1IHR5cGVzIChzZWFyY2gsIGV0YykKLSAgICAvLyB1c2Ug
Z2V0QXR0cmlidXRlIGluc3RlYWQgdG8gdGVzdCB0aGlzIGNhc2UKLSAgICByZXR1cm4gZWxlbS5u
b2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAiaW5wdXQiICYmCi0gICAgZWxlbS50eXBlID09PSAi
dGV4dCIgJiYKLSAgICAoIChhdHRyID0gZWxlbS5nZXRBdHRyaWJ1dGUoInR5cGUiKSkgPT0gbnVs
bCB8fCBhdHRyLnRvTG93ZXJDYXNlKCkgPT09IGVsZW0udHlwZSApOwotICAgIH0sCi0KLSAgICAv
LyBQb3NpdGlvbi1pbi1jb2xsZWN0aW9uCi0gICAgImZpcnN0IjogY3JlYXRlUG9zaXRpb25hbFBz
ZXVkbyhmdW5jdGlvbigpIHsKLSAgICByZXR1cm4gWyAwIF07Ci0gICAgfSksCi0KLSAgICAibGFz
dCI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24oIG1hdGNoSW5kZXhlcywgbGVuZ3Ro
ICkgewotICAgIHJldHVybiBbIGxlbmd0aCAtIDEgXTsKLSAgICB9KSwKLQotICAgICJlcSI6IGNy
ZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24oIG1hdGNoSW5kZXhlcywgbGVuZ3RoLCBhcmd1
bWVudCApIHsKLSAgICByZXR1cm4gWyBhcmd1bWVudCA8IDAgPyBhcmd1bWVudCArIGxlbmd0aCA6
IGFyZ3VtZW50IF07Ci0gICAgfSksCi0KLSAgICAiZXZlbiI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1
ZG8oZnVuY3Rpb24oIG1hdGNoSW5kZXhlcywgbGVuZ3RoICkgewotICAgIHZhciBpID0gMDsKLSAg
ICBmb3IgKCA7IGkgPCBsZW5ndGg7IGkgKz0gMiApIHsKLSAgICBtYXRjaEluZGV4ZXMucHVzaCgg
aSApOwotICAgIH0KLSAgICByZXR1cm4gbWF0Y2hJbmRleGVzOwotICAgIH0pLAotCi0gICAgIm9k
ZCI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24oIG1hdGNoSW5kZXhlcywgbGVuZ3Ro
ICkgewotICAgIHZhciBpID0gMTsKLSAgICBmb3IgKCA7IGkgPCBsZW5ndGg7IGkgKz0gMiApIHsK
LSAgICBtYXRjaEluZGV4ZXMucHVzaCggaSApOwotICAgIH0KLSAgICByZXR1cm4gbWF0Y2hJbmRl
eGVzOwotICAgIH0pLAotCi0gICAgImx0IjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlv
biggbWF0Y2hJbmRleGVzLCBsZW5ndGgsIGFyZ3VtZW50ICkgewotICAgIHZhciBpID0gYXJndW1l
bnQgPCAwID8gYXJndW1lbnQgKyBsZW5ndGggOiBhcmd1bWVudDsKLSAgICBmb3IgKCA7IC0taSA+
PSAwOyApIHsKLSAgICBtYXRjaEluZGV4ZXMucHVzaCggaSApOwotICAgIH0KLSAgICByZXR1cm4g
bWF0Y2hJbmRleGVzOwotICAgIH0pLAotCi0gICAgImd0IjogY3JlYXRlUG9zaXRpb25hbFBzZXVk
byhmdW5jdGlvbiggbWF0Y2hJbmRleGVzLCBsZW5ndGgsIGFyZ3VtZW50ICkgewotICAgIHZhciBp
ID0gYXJndW1lbnQgPCAwID8gYXJndW1lbnQgKyBsZW5ndGggOiBhcmd1bWVudDsKLSAgICBmb3Ig
KCA7ICsraSA8IGxlbmd0aDsgKSB7Ci0gICAgbWF0Y2hJbmRleGVzLnB1c2goIGkgKTsKLSAgICB9
Ci0gICAgcmV0dXJuIG1hdGNoSW5kZXhlczsKLSAgICB9KQotICAgIH0KLX07Ci0KLS8vIEFkZCBi
dXR0b24vaW5wdXQgdHlwZSBwc2V1ZG9zCi1mb3IgKCBpIGluIHsgcmFkaW86IHRydWUsIGNoZWNr
Ym94OiB0cnVlLCBmaWxlOiB0cnVlLCBwYXNzd29yZDogdHJ1ZSwgaW1hZ2U6IHRydWUgfSApIHsK
LSAgICBFeHByLnBzZXVkb3NbIGkgXSA9IGNyZWF0ZUlucHV0UHNldWRvKCBpICk7Ci19Ci1mb3Ig
KCBpIGluIHsgc3VibWl0OiB0cnVlLCByZXNldDogdHJ1ZSB9ICkgewotICAgIEV4cHIucHNldWRv
c1sgaSBdID0gY3JlYXRlQnV0dG9uUHNldWRvKCBpICk7Ci19Ci0KLWZ1bmN0aW9uIHRva2VuaXpl
KCBzZWxlY3RvciwgcGFyc2VPbmx5ICkgewotICAgIHZhciBtYXRjaGVkLCBtYXRjaCwgdG9rZW5z
LCB0eXBlLAotICAgIHNvRmFyLCBncm91cHMsIHByZUZpbHRlcnMsCi0gICAgY2FjaGVkID0gdG9r
ZW5DYWNoZVsgc2VsZWN0b3IgKyAiICIgXTsKLQotICAgIGlmICggY2FjaGVkICkgewotICAgIHJl
dHVybiBwYXJzZU9ubHkgPyAwIDogY2FjaGVkLnNsaWNlKCAwICk7Ci0gICAgfQotCi0gICAgc29G
YXIgPSBzZWxlY3RvcjsKLSAgICBncm91cHMgPSBbXTsKLSAgICBwcmVGaWx0ZXJzID0gRXhwci5w
cmVGaWx0ZXI7Ci0KLSAgICB3aGlsZSAoIHNvRmFyICkgewotCi0gICAgLy8gQ29tbWEgYW5kIGZp
cnN0IHJ1bgotICAgIGlmICggIW1hdGNoZWQgfHwgKG1hdGNoID0gcmNvbW1hLmV4ZWMoIHNvRmFy
ICkpICkgewotICAgIGlmICggbWF0Y2ggKSB7Ci0gICAgLy8gRG9uJ3QgY29uc3VtZSB0cmFpbGlu
ZyBjb21tYXMgYXMgdmFsaWQKLSAgICBzb0ZhciA9IHNvRmFyLnNsaWNlKCBtYXRjaFswXS5sZW5n
dGggKSB8fCBzb0ZhcjsKLSAgICB9Ci0gICAgZ3JvdXBzLnB1c2goIHRva2VucyA9IFtdICk7Ci0g
ICAgfQotCi0gICAgbWF0Y2hlZCA9IGZhbHNlOwotCi0gICAgLy8gQ29tYmluYXRvcnMKLSAgICBp
ZiAoIChtYXRjaCA9IHJjb21iaW5hdG9ycy5leGVjKCBzb0ZhciApKSApIHsKLSAgICBtYXRjaGVk
ID0gbWF0Y2guc2hpZnQoKTsKLSAgICB0b2tlbnMucHVzaCggewotICAgIHZhbHVlOiBtYXRjaGVk
LAotICAgIC8vIENhc3QgZGVzY2VuZGFudCBjb21iaW5hdG9ycyB0byBzcGFjZQotICAgIHR5cGU6
IG1hdGNoWzBdLnJlcGxhY2UoIHJ0cmltLCAiICIgKQotICAgIH0gKTsKLSAgICBzb0ZhciA9IHNv
RmFyLnNsaWNlKCBtYXRjaGVkLmxlbmd0aCApOwotICAgIH0KLQotICAgIC8vIEZpbHRlcnMKLSAg
ICBmb3IgKCB0eXBlIGluIEV4cHIuZmlsdGVyICkgewotICAgIGlmICggKG1hdGNoID0gbWF0Y2hF
eHByWyB0eXBlIF0uZXhlYyggc29GYXIgKSkgJiYgKCFwcmVGaWx0ZXJzWyB0eXBlIF0gfHwKLSAg
ICAobWF0Y2ggPSBwcmVGaWx0ZXJzWyB0eXBlIF0oIG1hdGNoICkpKSApIHsKLSAgICBtYXRjaGVk
ID0gbWF0Y2guc2hpZnQoKTsKLSAgICB0b2tlbnMucHVzaCggewotICAgIHZhbHVlOiBtYXRjaGVk
LAotICAgIHR5cGU6IHR5cGUsCi0gICAgbWF0Y2hlczogbWF0Y2gKLSAgICB9ICk7Ci0gICAgc29G
YXIgPSBzb0Zhci5zbGljZSggbWF0Y2hlZC5sZW5ndGggKTsKLSAgICB9Ci0gICAgfQotCi0gICAg
aWYgKCAhbWF0Y2hlZCApIHsKLSAgICBicmVhazsKLSAgICB9Ci0gICAgfQotCi0gICAgLy8gUmV0
dXJuIHRoZSBsZW5ndGggb2YgdGhlIGludmFsaWQgZXhjZXNzCi0gICAgLy8gaWYgd2UncmUganVz
dCBwYXJzaW5nCi0gICAgLy8gT3RoZXJ3aXNlLCB0aHJvdyBhbiBlcnJvciBvciByZXR1cm4gdG9r
ZW5zCi0gICAgcmV0dXJuIHBhcnNlT25seSA/Ci0gICAgc29GYXIubGVuZ3RoIDoKLSAgICBzb0Zh
ciA/Ci0gICAgU2l6emxlLmVycm9yKCBzZWxlY3RvciApIDoKLSAgICAvLyBDYWNoZSB0aGUgdG9r
ZW5zCi0gICAgdG9rZW5DYWNoZSggc2VsZWN0b3IsIGdyb3VwcyApLnNsaWNlKCAwICk7Ci19Ci0K
LWZ1bmN0aW9uIHRvU2VsZWN0b3IoIHRva2VucyApIHsKLSAgICB2YXIgaSA9IDAsCi0gICAgbGVu
ID0gdG9rZW5zLmxlbmd0aCwKLSAgICBzZWxlY3RvciA9ICIiOwotICAgIGZvciAoIDsgaSA8IGxl
bjsgaSsrICkgewotICAgIHNlbGVjdG9yICs9IHRva2Vuc1tpXS52YWx1ZTsKLSAgICB9Ci0gICAg
cmV0dXJuIHNlbGVjdG9yOwotfQotCi1mdW5jdGlvbiBhZGRDb21iaW5hdG9yKCBtYXRjaGVyLCBj
b21iaW5hdG9yLCBiYXNlICkgewotICAgIHZhciBkaXIgPSBjb21iaW5hdG9yLmRpciwKLSAgICBj
aGVja05vbkVsZW1lbnRzID0gYmFzZSAmJiBkaXIgPT09ICJwYXJlbnROb2RlIiwKLSAgICBkb25l
TmFtZSA9IGRvbmUrKzsKLQotICAgIHJldHVybiBjb21iaW5hdG9yLmZpcnN0ID8KLSAgICAvLyBD
aGVjayBhZ2FpbnN0IGNsb3Nlc3QgYW5jZXN0b3IvcHJlY2VkaW5nIGVsZW1lbnQKLSAgICBmdW5j
dGlvbiggZWxlbSwgY29udGV4dCwgeG1sICkgewotICAgIHdoaWxlICggKGVsZW0gPSBlbGVtWyBk
aXIgXSkgKSB7Ci0gICAgaWYgKCBlbGVtLm5vZGVUeXBlID09PSAxIHx8IGNoZWNrTm9uRWxlbWVu
dHMgKSB7Ci0gICAgcmV0dXJuIG1hdGNoZXIoIGVsZW0sIGNvbnRleHQsIHhtbCApOwotICAgIH0K
LSAgICB9Ci0gICAgfSA6Ci0KLSAgICAvLyBDaGVjayBhZ2FpbnN0IGFsbCBhbmNlc3Rvci9wcmVj
ZWRpbmcgZWxlbWVudHMKLSAgICBmdW5jdGlvbiggZWxlbSwgY29udGV4dCwgeG1sICkgewotICAg
IHZhciBkYXRhLCBjYWNoZSwgb3V0ZXJDYWNoZSwKLSAgICBkaXJrZXkgPSBkaXJydW5zICsgIiAi
ICsgZG9uZU5hbWU7Ci0KLSAgICAvLyBXZSBjYW4ndCBzZXQgYXJiaXRyYXJ5IGRhdGEgb24gWE1M
IG5vZGVzLCBzbyB0aGV5IGRvbid0IGJlbmVmaXQgZnJvbSBkaXIgY2FjaGluZwotICAgIGlmICgg
eG1sICkgewotICAgIHdoaWxlICggKGVsZW0gPSBlbGVtWyBkaXIgXSkgKSB7Ci0gICAgaWYgKCBl
bGVtLm5vZGVUeXBlID09PSAxIHx8IGNoZWNrTm9uRWxlbWVudHMgKSB7Ci0gICAgaWYgKCBtYXRj
aGVyKCBlbGVtLCBjb250ZXh0LCB4bWwgKSApIHsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0g
ICAgfQotICAgIH0KLSAgICB9IGVsc2UgewotICAgIHdoaWxlICggKGVsZW0gPSBlbGVtWyBkaXIg
XSkgKSB7Ci0gICAgaWYgKCBlbGVtLm5vZGVUeXBlID09PSAxIHx8IGNoZWNrTm9uRWxlbWVudHMg
KSB7Ci0gICAgb3V0ZXJDYWNoZSA9IGVsZW1bIGV4cGFuZG8gXSB8fCAoZWxlbVsgZXhwYW5kbyBd
ID0ge30pOwotICAgIGlmICggKGNhY2hlID0gb3V0ZXJDYWNoZVsgZGlyIF0pICYmIGNhY2hlWzBd
ID09PSBkaXJrZXkgKSB7Ci0gICAgaWYgKCAoZGF0YSA9IGNhY2hlWzFdKSA9PT0gdHJ1ZSB8fCBk
YXRhID09PSBjYWNoZWRydW5zICkgewotICAgIHJldHVybiBkYXRhID09PSB0cnVlOwotICAgIH0K
LSAgICB9IGVsc2UgewotICAgIGNhY2hlID0gb3V0ZXJDYWNoZVsgZGlyIF0gPSBbIGRpcmtleSBd
OwotICAgIGNhY2hlWzFdID0gbWF0Y2hlciggZWxlbSwgY29udGV4dCwgeG1sICkgfHwgY2FjaGVk
cnVuczsKLSAgICBpZiAoIGNhY2hlWzFdID09PSB0cnVlICkgewotICAgIHJldHVybiB0cnVlOwot
ICAgIH0KLSAgICB9Ci0gICAgfQotICAgIH0KLSAgICB9Ci0gICAgfTsKLX0KLQotZnVuY3Rpb24g
ZWxlbWVudE1hdGNoZXIoIG1hdGNoZXJzICkgewotICAgIHJldHVybiBtYXRjaGVycy5sZW5ndGgg
PiAxID8KLSAgICBmdW5jdGlvbiggZWxlbSwgY29udGV4dCwgeG1sICkgewotICAgIHZhciBpID0g
bWF0Y2hlcnMubGVuZ3RoOwotICAgIHdoaWxlICggaS0tICkgewotICAgIGlmICggIW1hdGNoZXJz
W2ldKCBlbGVtLCBjb250ZXh0LCB4bWwgKSApIHsKLSAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
ICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLSAgICB9IDoKLSAgICBtYXRjaGVyc1swXTsKLX0KLQot
ZnVuY3Rpb24gY29uZGVuc2UoIHVubWF0Y2hlZCwgbWFwLCBmaWx0ZXIsIGNvbnRleHQsIHhtbCAp
IHsKLSAgICB2YXIgZWxlbSwKLSAgICBuZXdVbm1hdGNoZWQgPSBbXSwKLSAgICBpID0gMCwKLSAg
ICBsZW4gPSB1bm1hdGNoZWQubGVuZ3RoLAotICAgIG1hcHBlZCA9IG1hcCAhPSBudWxsOwotCi0g
ICAgZm9yICggOyBpIDwgbGVuOyBpKysgKSB7Ci0gICAgaWYgKCAoZWxlbSA9IHVubWF0Y2hlZFtp
XSkgKSB7Ci0gICAgaWYgKCAhZmlsdGVyIHx8IGZpbHRlciggZWxlbSwgY29udGV4dCwgeG1sICkg
KSB7Ci0gICAgbmV3VW5tYXRjaGVkLnB1c2goIGVsZW0gKTsKLSAgICBpZiAoIG1hcHBlZCApIHsK
LSAgICBtYXAucHVzaCggaSApOwotICAgIH0KLSAgICB9Ci0gICAgfQotICAgIH0KLQotICAgIHJl
dHVybiBuZXdVbm1hdGNoZWQ7Ci19Ci0KLWZ1bmN0aW9uIHNldE1hdGNoZXIoIHByZUZpbHRlciwg
c2VsZWN0b3IsIG1hdGNoZXIsIHBvc3RGaWx0ZXIsIHBvc3RGaW5kZXIsIHBvc3RTZWxlY3RvciAp
IHsKLSAgICBpZiAoIHBvc3RGaWx0ZXIgJiYgIXBvc3RGaWx0ZXJbIGV4cGFuZG8gXSApIHsKLSAg
ICBwb3N0RmlsdGVyID0gc2V0TWF0Y2hlciggcG9zdEZpbHRlciApOwotICAgIH0KLSAgICBpZiAo
IHBvc3RGaW5kZXIgJiYgIXBvc3RGaW5kZXJbIGV4cGFuZG8gXSApIHsKLSAgICBwb3N0RmluZGVy
ID0gc2V0TWF0Y2hlciggcG9zdEZpbmRlciwgcG9zdFNlbGVjdG9yICk7Ci0gICAgfQotICAgIHJl
dHVybiBtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIHNlZWQsIHJlc3VsdHMsIGNvbnRleHQsIHhtbCAp
IHsKLSAgICB2YXIgdGVtcCwgaSwgZWxlbSwKLSAgICBwcmVNYXAgPSBbXSwKLSAgICBwb3N0TWFw
ID0gW10sCi0gICAgcHJlZXhpc3RpbmcgPSByZXN1bHRzLmxlbmd0aCwKLQotICAgIC8vIEdldCBp
bml0aWFsIGVsZW1lbnRzIGZyb20gc2VlZCBvciBjb250ZXh0Ci0gICAgZWxlbXMgPSBzZWVkIHx8
IG11bHRpcGxlQ29udGV4dHMoIHNlbGVjdG9yIHx8ICIqIiwgY29udGV4dC5ub2RlVHlwZSA/IFsg
Y29udGV4dCBdIDogY29udGV4dCwgW10gKSwKLQotICAgIC8vIFByZWZpbHRlciB0byBnZXQgbWF0
Y2hlciBpbnB1dCwgcHJlc2VydmluZyBhIG1hcCBmb3Igc2VlZC1yZXN1bHRzIHN5bmNocm9uaXph
dGlvbgotICAgIG1hdGNoZXJJbiA9IHByZUZpbHRlciAmJiAoIHNlZWQgfHwgIXNlbGVjdG9yICkg
PwotICAgIGNvbmRlbnNlKCBlbGVtcywgcHJlTWFwLCBwcmVGaWx0ZXIsIGNvbnRleHQsIHhtbCAp
IDoKLSAgICBlbGVtcywKLQotICAgIG1hdGNoZXJPdXQgPSBtYXRjaGVyID8KLSAgICAvLyBJZiB3
ZSBoYXZlIGEgcG9zdEZpbmRlciwgb3IgZmlsdGVyZWQgc2VlZCwgb3Igbm9uLXNlZWQgcG9zdEZp
bHRlciBvciBwcmVleGlzdGluZyByZXN1bHRzLAotICAgIHBvc3RGaW5kZXIgfHwgKCBzZWVkID8g
cHJlRmlsdGVyIDogcHJlZXhpc3RpbmcgfHwgcG9zdEZpbHRlciApID8KLQotICAgIC8vIC4uLmlu
dGVybWVkaWF0ZSBwcm9jZXNzaW5nIGlzIG5lY2Vzc2FyeQotICAgIFtdIDoKLQotICAgIC8vIC4u
Lm90aGVyd2lzZSB1c2UgcmVzdWx0cyBkaXJlY3RseQotICAgIHJlc3VsdHMgOgotICAgIG1hdGNo
ZXJJbjsKLQotICAgIC8vIEZpbmQgcHJpbWFyeSBtYXRjaGVzCi0gICAgaWYgKCBtYXRjaGVyICkg
ewotICAgIG1hdGNoZXIoIG1hdGNoZXJJbiwgbWF0Y2hlck91dCwgY29udGV4dCwgeG1sICk7Ci0g
ICAgfQotCi0gICAgLy8gQXBwbHkgcG9zdEZpbHRlcgotICAgIGlmICggcG9zdEZpbHRlciApIHsK
LSAgICB0ZW1wID0gY29uZGVuc2UoIG1hdGNoZXJPdXQsIHBvc3RNYXAgKTsKLSAgICBwb3N0Rmls
dGVyKCB0ZW1wLCBbXSwgY29udGV4dCwgeG1sICk7Ci0KLSAgICAvLyBVbi1tYXRjaCBmYWlsaW5n
IGVsZW1lbnRzIGJ5IG1vdmluZyB0aGVtIGJhY2sgdG8gbWF0Y2hlckluCi0gICAgaSA9IHRlbXAu
bGVuZ3RoOwotICAgIHdoaWxlICggaS0tICkgewotICAgIGlmICggKGVsZW0gPSB0ZW1wW2ldKSAp
IHsKLSAgICBtYXRjaGVyT3V0WyBwb3N0TWFwW2ldIF0gPSAhKG1hdGNoZXJJblsgcG9zdE1hcFtp
XSBdID0gZWxlbSk7Ci0gICAgfQotICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoIHNlZWQgKSB7Ci0g
ICAgaWYgKCBwb3N0RmluZGVyIHx8IHByZUZpbHRlciApIHsKLSAgICBpZiAoIHBvc3RGaW5kZXIg
KSB7Ci0gICAgLy8gR2V0IHRoZSBmaW5hbCBtYXRjaGVyT3V0IGJ5IGNvbmRlbnNpbmcgdGhpcyBp
bnRlcm1lZGlhdGUgaW50byBwb3N0RmluZGVyIGNvbnRleHRzCi0gICAgdGVtcCA9IFtdOwotICAg
IGkgPSBtYXRjaGVyT3V0Lmxlbmd0aDsKLSAgICB3aGlsZSAoIGktLSApIHsKLSAgICBpZiAoIChl
bGVtID0gbWF0Y2hlck91dFtpXSkgKSB7Ci0gICAgLy8gUmVzdG9yZSBtYXRjaGVySW4gc2luY2Ug
ZWxlbSBpcyBub3QgeWV0IGEgZmluYWwgbWF0Y2gKLSAgICB0ZW1wLnB1c2goIChtYXRjaGVySW5b
aV0gPSBlbGVtKSApOwotICAgIH0KLSAgICB9Ci0gICAgcG9zdEZpbmRlciggbnVsbCwgKG1hdGNo
ZXJPdXQgPSBbXSksIHRlbXAsIHhtbCApOwotICAgIH0KLQotICAgIC8vIE1vdmUgbWF0Y2hlZCBl
bGVtZW50cyBmcm9tIHNlZWQgdG8gcmVzdWx0cyB0byBrZWVwIHRoZW0gc3luY2hyb25pemVkCi0g
ICAgaSA9IG1hdGNoZXJPdXQubGVuZ3RoOwotICAgIHdoaWxlICggaS0tICkgewotICAgIGlmICgg
KGVsZW0gPSBtYXRjaGVyT3V0W2ldKSAmJgotICAgICh0ZW1wID0gcG9zdEZpbmRlciA/IGluZGV4
T2YuY2FsbCggc2VlZCwgZWxlbSApIDogcHJlTWFwW2ldKSA+IC0xICkgewotCi0gICAgc2VlZFt0
ZW1wXSA9ICEocmVzdWx0c1t0ZW1wXSA9IGVsZW0pOwotICAgIH0KLSAgICB9Ci0gICAgfQotCi0g
ICAgLy8gQWRkIGVsZW1lbnRzIHRvIHJlc3VsdHMsIHRocm91Z2ggcG9zdEZpbmRlciBpZiBkZWZp
bmVkCi0gICAgfSBlbHNlIHsKLSAgICBtYXRjaGVyT3V0ID0gY29uZGVuc2UoCi0gICAgbWF0Y2hl
ck91dCA9PT0gcmVzdWx0cyA/Ci0gICAgbWF0Y2hlck91dC5zcGxpY2UoIHByZWV4aXN0aW5nLCBt
YXRjaGVyT3V0Lmxlbmd0aCApIDoKLSAgICBtYXRjaGVyT3V0Ci0gICAgKTsKLSAgICBpZiAoIHBv
c3RGaW5kZXIgKSB7Ci0gICAgcG9zdEZpbmRlciggbnVsbCwgcmVzdWx0cywgbWF0Y2hlck91dCwg
eG1sICk7Ci0gICAgfSBlbHNlIHsKLSAgICBwdXNoLmFwcGx5KCByZXN1bHRzLCBtYXRjaGVyT3V0
ICk7Ci0gICAgfQotICAgIH0KLSAgICB9KTsKLX0KLQotZnVuY3Rpb24gbWF0Y2hlckZyb21Ub2tl
bnMoIHRva2VucyApIHsKLSAgICB2YXIgY2hlY2tDb250ZXh0LCBtYXRjaGVyLCBqLAotICAgIGxl
biA9IHRva2Vucy5sZW5ndGgsCi0gICAgbGVhZGluZ1JlbGF0aXZlID0gRXhwci5yZWxhdGl2ZVsg
dG9rZW5zWzBdLnR5cGUgXSwKLSAgICBpbXBsaWNpdFJlbGF0aXZlID0gbGVhZGluZ1JlbGF0aXZl
IHx8IEV4cHIucmVsYXRpdmVbIiAiXSwKLSAgICBpID0gbGVhZGluZ1JlbGF0aXZlID8gMSA6IDAs
Ci0KLSAgICAvLyBUaGUgZm91bmRhdGlvbmFsIG1hdGNoZXIgZW5zdXJlcyB0aGF0IGVsZW1lbnRz
IGFyZSByZWFjaGFibGUgZnJvbSB0b3AtbGV2ZWwgY29udGV4dChzKQotICAgIG1hdGNoQ29udGV4
dCA9IGFkZENvbWJpbmF0b3IoIGZ1bmN0aW9uKCBlbGVtICkgewotICAgIHJldHVybiBlbGVtID09
PSBjaGVja0NvbnRleHQ7Ci0gICAgfSwgaW1wbGljaXRSZWxhdGl2ZSwgdHJ1ZSApLAotICAgIG1h
dGNoQW55Q29udGV4dCA9IGFkZENvbWJpbmF0b3IoIGZ1bmN0aW9uKCBlbGVtICkgewotICAgIHJl
dHVybiBpbmRleE9mLmNhbGwoIGNoZWNrQ29udGV4dCwgZWxlbSApID4gLTE7Ci0gICAgfSwgaW1w
bGljaXRSZWxhdGl2ZSwgdHJ1ZSApLAotICAgIG1hdGNoZXJzID0gWyBmdW5jdGlvbiggZWxlbSwg
Y29udGV4dCwgeG1sICkgewotICAgIHJldHVybiAoICFsZWFkaW5nUmVsYXRpdmUgJiYgKCB4bWwg
fHwgY29udGV4dCAhPT0gb3V0ZXJtb3N0Q29udGV4dCApICkgfHwgKAotICAgIChjaGVja0NvbnRl
eHQgPSBjb250ZXh0KS5ub2RlVHlwZSA/Ci0gICAgbWF0Y2hDb250ZXh0KCBlbGVtLCBjb250ZXh0
LCB4bWwgKSA6Ci0gICAgbWF0Y2hBbnlDb250ZXh0KCBlbGVtLCBjb250ZXh0LCB4bWwgKSApOwot
ICAgIH0gXTsKLQotICAgIGZvciAoIDsgaSA8IGxlbjsgaSsrICkgewotICAgIGlmICggKG1hdGNo
ZXIgPSBFeHByLnJlbGF0aXZlWyB0b2tlbnNbaV0udHlwZSBdKSApIHsKLSAgICBtYXRjaGVycyA9
IFsgYWRkQ29tYmluYXRvcihlbGVtZW50TWF0Y2hlciggbWF0Y2hlcnMgKSwgbWF0Y2hlcikgXTsK
LSAgICB9IGVsc2UgewotICAgIG1hdGNoZXIgPSBFeHByLmZpbHRlclsgdG9rZW5zW2ldLnR5cGUg
XS5hcHBseSggbnVsbCwgdG9rZW5zW2ldLm1hdGNoZXMgKTsKLQotICAgIC8vIFJldHVybiBzcGVj
aWFsIHVwb24gc2VlaW5nIGEgcG9zaXRpb25hbCBtYXRjaGVyCi0gICAgaWYgKCBtYXRjaGVyWyBl
eHBhbmRvIF0gKSB7Ci0gICAgLy8gRmluZCB0aGUgbmV4dCByZWxhdGl2ZSBvcGVyYXRvciAoaWYg
YW55KSBmb3IgcHJvcGVyIGhhbmRsaW5nCi0gICAgaiA9ICsraTsKLSAgICBmb3IgKCA7IGogPCBs
ZW47IGorKyApIHsKLSAgICBpZiAoIEV4cHIucmVsYXRpdmVbIHRva2Vuc1tqXS50eXBlIF0gKSB7
Ci0gICAgYnJlYWs7Ci0gICAgfQotICAgIH0KLSAgICByZXR1cm4gc2V0TWF0Y2hlcigKLSAgICBp
ID4gMSAmJiBlbGVtZW50TWF0Y2hlciggbWF0Y2hlcnMgKSwKLSAgICBpID4gMSAmJiB0b1NlbGVj
dG9yKCB0b2tlbnMuc2xpY2UoIDAsIGkgLSAxICkgKS5yZXBsYWNlKCBydHJpbSwgIiQxIiApLAot
ICAgIG1hdGNoZXIsCi0gICAgaSA8IGogJiYgbWF0Y2hlckZyb21Ub2tlbnMoIHRva2Vucy5zbGlj
ZSggaSwgaiApICksCi0gICAgaiA8IGxlbiAmJiBtYXRjaGVyRnJvbVRva2VucyggKHRva2VucyA9
IHRva2Vucy5zbGljZSggaiApKSApLAotICAgIGogPCBsZW4gJiYgdG9TZWxlY3RvciggdG9rZW5z
ICkKLSAgICApOwotICAgIH0KLSAgICBtYXRjaGVycy5wdXNoKCBtYXRjaGVyICk7Ci0gICAgfQot
ICAgIH0KLQotICAgIHJldHVybiBlbGVtZW50TWF0Y2hlciggbWF0Y2hlcnMgKTsKLX0KLQotZnVu
Y3Rpb24gbWF0Y2hlckZyb21Hcm91cE1hdGNoZXJzKCBlbGVtZW50TWF0Y2hlcnMsIHNldE1hdGNo
ZXJzICkgewotICAgIC8vIEEgY291bnRlciB0byBzcGVjaWZ5IHdoaWNoIGVsZW1lbnQgaXMgY3Vy
cmVudGx5IGJlaW5nIG1hdGNoZWQKLSAgICB2YXIgbWF0Y2hlckNhY2hlZFJ1bnMgPSAwLAotICAg
IGJ5U2V0ID0gc2V0TWF0Y2hlcnMubGVuZ3RoID4gMCwKLSAgICBieUVsZW1lbnQgPSBlbGVtZW50
TWF0Y2hlcnMubGVuZ3RoID4gMCwKLSAgICBzdXBlck1hdGNoZXIgPSBmdW5jdGlvbiggc2VlZCwg
Y29udGV4dCwgeG1sLCByZXN1bHRzLCBleHBhbmRDb250ZXh0ICkgewotICAgIHZhciBlbGVtLCBq
LCBtYXRjaGVyLAotICAgIHNldE1hdGNoZWQgPSBbXSwKLSAgICBtYXRjaGVkQ291bnQgPSAwLAot
ICAgIGkgPSAiMCIsCi0gICAgdW5tYXRjaGVkID0gc2VlZCAmJiBbXSwKLSAgICBvdXRlcm1vc3Qg
PSBleHBhbmRDb250ZXh0ICE9IG51bGwsCi0gICAgY29udGV4dEJhY2t1cCA9IG91dGVybW9zdENv
bnRleHQsCi0gICAgLy8gV2UgbXVzdCBhbHdheXMgaGF2ZSBlaXRoZXIgc2VlZCBlbGVtZW50cyBv
ciBjb250ZXh0Ci0gICAgZWxlbXMgPSBzZWVkIHx8IGJ5RWxlbWVudCAmJiBFeHByLmZpbmRbIlRB
RyJdKCAiKiIsIGV4cGFuZENvbnRleHQgJiYgY29udGV4dC5wYXJlbnROb2RlIHx8IGNvbnRleHQg
KSwKLSAgICAvLyBVc2UgaW50ZWdlciBkaXJydW5zIGlmZiB0aGlzIGlzIHRoZSBvdXRlcm1vc3Qg
bWF0Y2hlcgotICAgIGRpcnJ1bnNVbmlxdWUgPSAoZGlycnVucyArPSBjb250ZXh0QmFja3VwID09
IG51bGwgPyAxIDogTWF0aC5yYW5kb20oKSB8fCAwLjEpOwotCi0gICAgaWYgKCBvdXRlcm1vc3Qg
KSB7Ci0gICAgb3V0ZXJtb3N0Q29udGV4dCA9IGNvbnRleHQgIT09IGRvY3VtZW50ICYmIGNvbnRl
eHQ7Ci0gICAgY2FjaGVkcnVucyA9IG1hdGNoZXJDYWNoZWRSdW5zOwotICAgIH0KLQotICAgIC8v
IEFkZCBlbGVtZW50cyBwYXNzaW5nIGVsZW1lbnRNYXRjaGVycyBkaXJlY3RseSB0byByZXN1bHRz
Ci0gICAgLy8gS2VlcCBgaWAgYSBzdHJpbmcgaWYgdGhlcmUgYXJlIG5vIGVsZW1lbnRzIHNvIGBt
YXRjaGVkQ291bnRgIHdpbGwgYmUgIjAwIiBiZWxvdwotICAgIGZvciAoIDsgKGVsZW0gPSBlbGVt
c1tpXSkgIT0gbnVsbDsgaSsrICkgewotICAgIGlmICggYnlFbGVtZW50ICYmIGVsZW0gKSB7Ci0g
ICAgaiA9IDA7Ci0gICAgd2hpbGUgKCAobWF0Y2hlciA9IGVsZW1lbnRNYXRjaGVyc1tqKytdKSAp
IHsKLSAgICBpZiAoIG1hdGNoZXIoIGVsZW0sIGNvbnRleHQsIHhtbCApICkgewotICAgIHJlc3Vs
dHMucHVzaCggZWxlbSApOwotICAgIGJyZWFrOwotICAgIH0KLSAgICB9Ci0gICAgaWYgKCBvdXRl
cm1vc3QgKSB7Ci0gICAgZGlycnVucyA9IGRpcnJ1bnNVbmlxdWU7Ci0gICAgY2FjaGVkcnVucyA9
ICsrbWF0Y2hlckNhY2hlZFJ1bnM7Ci0gICAgfQotICAgIH0KLQotICAgIC8vIFRyYWNrIHVubWF0
Y2hlZCBlbGVtZW50cyBmb3Igc2V0IGZpbHRlcnMKLSAgICBpZiAoIGJ5U2V0ICkgewotICAgIC8v
IFRoZXkgd2lsbCBoYXZlIGdvbmUgdGhyb3VnaCBhbGwgcG9zc2libGUgbWF0Y2hlcnMKLSAgICBp
ZiAoIChlbGVtID0gIW1hdGNoZXIgJiYgZWxlbSkgKSB7Ci0gICAgbWF0Y2hlZENvdW50LS07Ci0g
ICAgfQotCi0gICAgLy8gTGVuZ3RoZW4gdGhlIGFycmF5IGZvciBldmVyeSBlbGVtZW50LCBtYXRj
aGVkIG9yIG5vdAotICAgIGlmICggc2VlZCApIHsKLSAgICB1bm1hdGNoZWQucHVzaCggZWxlbSAp
OwotICAgIH0KLSAgICB9Ci0gICAgfQotCi0gICAgLy8gQXBwbHkgc2V0IGZpbHRlcnMgdG8gdW5t
YXRjaGVkIGVsZW1lbnRzCi0gICAgbWF0Y2hlZENvdW50ICs9IGk7Ci0gICAgaWYgKCBieVNldCAm
JiBpICE9PSBtYXRjaGVkQ291bnQgKSB7Ci0gICAgaiA9IDA7Ci0gICAgd2hpbGUgKCAobWF0Y2hl
ciA9IHNldE1hdGNoZXJzW2orK10pICkgewotICAgIG1hdGNoZXIoIHVubWF0Y2hlZCwgc2V0TWF0
Y2hlZCwgY29udGV4dCwgeG1sICk7Ci0gICAgfQotCi0gICAgaWYgKCBzZWVkICkgewotICAgIC8v
IFJlaW50ZWdyYXRlIGVsZW1lbnQgbWF0Y2hlcyB0byBlbGltaW5hdGUgdGhlIG5lZWQgZm9yIHNv
cnRpbmcKLSAgICBpZiAoIG1hdGNoZWRDb3VudCA+IDAgKSB7Ci0gICAgd2hpbGUgKCBpLS0gKSB7
Ci0gICAgaWYgKCAhKHVubWF0Y2hlZFtpXSB8fCBzZXRNYXRjaGVkW2ldKSApIHsKLSAgICBzZXRN
YXRjaGVkW2ldID0gcG9wLmNhbGwoIHJlc3VsdHMgKTsKLSAgICB9Ci0gICAgfQotICAgIH0KLQot
ICAgIC8vIERpc2NhcmQgaW5kZXggcGxhY2Vob2xkZXIgdmFsdWVzIHRvIGdldCBvbmx5IGFjdHVh
bCBtYXRjaGVzCi0gICAgc2V0TWF0Y2hlZCA9IGNvbmRlbnNlKCBzZXRNYXRjaGVkICk7Ci0gICAg
fQotCi0gICAgLy8gQWRkIG1hdGNoZXMgdG8gcmVzdWx0cwotICAgIHB1c2guYXBwbHkoIHJlc3Vs
dHMsIHNldE1hdGNoZWQgKTsKLQotICAgIC8vIFNlZWRsZXNzIHNldCBtYXRjaGVzIHN1Y2NlZWRp
bmcgbXVsdGlwbGUgc3VjY2Vzc2Z1bCBtYXRjaGVycyBzdGlwdWxhdGUgc29ydGluZwotICAgIGlm
ICggb3V0ZXJtb3N0ICYmICFzZWVkICYmIHNldE1hdGNoZWQubGVuZ3RoID4gMCAmJgotICAgICgg
bWF0Y2hlZENvdW50ICsgc2V0TWF0Y2hlcnMubGVuZ3RoICkgPiAxICkgewotCi0gICAgU2l6emxl
LnVuaXF1ZVNvcnQoIHJlc3VsdHMgKTsKLSAgICB9Ci0gICAgfQotCi0gICAgLy8gT3ZlcnJpZGUg
bWFuaXB1bGF0aW9uIG9mIGdsb2JhbHMgYnkgbmVzdGVkIG1hdGNoZXJzCi0gICAgaWYgKCBvdXRl
cm1vc3QgKSB7Ci0gICAgZGlycnVucyA9IGRpcnJ1bnNVbmlxdWU7Ci0gICAgb3V0ZXJtb3N0Q29u
dGV4dCA9IGNvbnRleHRCYWNrdXA7Ci0gICAgfQotCi0gICAgcmV0dXJuIHVubWF0Y2hlZDsKLSAg
ICB9OwotCi0gICAgcmV0dXJuIGJ5U2V0ID8KLSAgICBtYXJrRnVuY3Rpb24oIHN1cGVyTWF0Y2hl
ciApIDoKLSAgICBzdXBlck1hdGNoZXI7Ci19Ci0KLWNvbXBpbGUgPSBTaXp6bGUuY29tcGlsZSA9
IGZ1bmN0aW9uKCBzZWxlY3RvciwgZ3JvdXAgLyogSW50ZXJuYWwgVXNlIE9ubHkgKi8gKSB7Ci0g
ICAgdmFyIGksCi0gICAgc2V0TWF0Y2hlcnMgPSBbXSwKLSAgICBlbGVtZW50TWF0Y2hlcnMgPSBb
XSwKLSAgICBjYWNoZWQgPSBjb21waWxlckNhY2hlWyBzZWxlY3RvciArICIgIiBdOwotCi0gICAg
aWYgKCAhY2FjaGVkICkgewotICAgIC8vIEdlbmVyYXRlIGEgZnVuY3Rpb24gb2YgcmVjdXJzaXZl
IGZ1bmN0aW9ucyB0aGF0IGNhbiBiZSB1c2VkIHRvIGNoZWNrIGVhY2ggZWxlbWVudAotICAgIGlm
ICggIWdyb3VwICkgewotICAgIGdyb3VwID0gdG9rZW5pemUoIHNlbGVjdG9yICk7Ci0gICAgfQot
ICAgIGkgPSBncm91cC5sZW5ndGg7Ci0gICAgd2hpbGUgKCBpLS0gKSB7Ci0gICAgY2FjaGVkID0g
bWF0Y2hlckZyb21Ub2tlbnMoIGdyb3VwW2ldICk7Ci0gICAgaWYgKCBjYWNoZWRbIGV4cGFuZG8g
XSApIHsKLSAgICBzZXRNYXRjaGVycy5wdXNoKCBjYWNoZWQgKTsKLSAgICB9IGVsc2UgewotICAg
IGVsZW1lbnRNYXRjaGVycy5wdXNoKCBjYWNoZWQgKTsKLSAgICB9Ci0gICAgfQotCi0gICAgLy8g
Q2FjaGUgdGhlIGNvbXBpbGVkIGZ1bmN0aW9uCi0gICAgY2FjaGVkID0gY29tcGlsZXJDYWNoZSgg
c2VsZWN0b3IsIG1hdGNoZXJGcm9tR3JvdXBNYXRjaGVycyggZWxlbWVudE1hdGNoZXJzLCBzZXRN
YXRjaGVycyApICk7Ci0gICAgfQotICAgIHJldHVybiBjYWNoZWQ7Ci19OwotCi1mdW5jdGlvbiBt
dWx0aXBsZUNvbnRleHRzKCBzZWxlY3RvciwgY29udGV4dHMsIHJlc3VsdHMgKSB7Ci0gICAgdmFy
IGkgPSAwLAotICAgIGxlbiA9IGNvbnRleHRzLmxlbmd0aDsKLSAgICBmb3IgKCA7IGkgPCBsZW47
IGkrKyApIHsKLSAgICBTaXp6bGUoIHNlbGVjdG9yLCBjb250ZXh0c1tpXSwgcmVzdWx0cyApOwot
ICAgIH0KLSAgICByZXR1cm4gcmVzdWx0czsKLX0KLQotZnVuY3Rpb24gc2VsZWN0KCBzZWxlY3Rv
ciwgY29udGV4dCwgcmVzdWx0cywgc2VlZCApIHsKLSAgICB2YXIgaSwgdG9rZW5zLCB0b2tlbiwg
dHlwZSwgZmluZCwKLSAgICBtYXRjaCA9IHRva2VuaXplKCBzZWxlY3RvciApOwotCi0gICAgaWYg
KCAhc2VlZCApIHsKLSAgICAvLyBUcnkgdG8gbWluaW1pemUgb3BlcmF0aW9ucyBpZiB0aGVyZSBp
cyBvbmx5IG9uZSBncm91cAotICAgIGlmICggbWF0Y2gubGVuZ3RoID09PSAxICkgewotCi0gICAg
Ly8gVGFrZSBhIHNob3J0Y3V0IGFuZCBzZXQgdGhlIGNvbnRleHQgaWYgdGhlIHJvb3Qgc2VsZWN0
b3IgaXMgYW4gSUQKLSAgICB0b2tlbnMgPSBtYXRjaFswXSA9IG1hdGNoWzBdLnNsaWNlKCAwICk7
Ci0gICAgaWYgKCB0b2tlbnMubGVuZ3RoID4gMiAmJiAodG9rZW4gPSB0b2tlbnNbMF0pLnR5cGUg
PT09ICJJRCIgJiYKLSAgICBjb250ZXh0Lm5vZGVUeXBlID09PSA5ICYmICFkb2N1bWVudElzWE1M
ICYmCi0gICAgRXhwci5yZWxhdGl2ZVsgdG9rZW5zWzFdLnR5cGUgXSApIHsKLQotICAgIGNvbnRl
eHQgPSBFeHByLmZpbmRbIklEIl0oIHRva2VuLm1hdGNoZXNbMF0ucmVwbGFjZSggcnVuZXNjYXBl
LCBmdW5lc2NhcGUgKSwgY29udGV4dCApWzBdOwotICAgIGlmICggIWNvbnRleHQgKSB7Ci0gICAg
cmV0dXJuIHJlc3VsdHM7Ci0gICAgfQotCi0gICAgc2VsZWN0b3IgPSBzZWxlY3Rvci5zbGljZSgg
dG9rZW5zLnNoaWZ0KCkudmFsdWUubGVuZ3RoICk7Ci0gICAgfQotCi0gICAgLy8gRmV0Y2ggYSBz
ZWVkIHNldCBmb3IgcmlnaHQtdG8tbGVmdCBtYXRjaGluZwotICAgIGkgPSBtYXRjaEV4cHJbIm5l
ZWRzQ29udGV4dCJdLnRlc3QoIHNlbGVjdG9yICkgPyAwIDogdG9rZW5zLmxlbmd0aDsKLSAgICB3
aGlsZSAoIGktLSApIHsKLSAgICB0b2tlbiA9IHRva2Vuc1tpXTsKLQotICAgIC8vIEFib3J0IGlm
IHdlIGhpdCBhIGNvbWJpbmF0b3IKLSAgICBpZiAoIEV4cHIucmVsYXRpdmVbICh0eXBlID0gdG9r
ZW4udHlwZSkgXSApIHsKLSAgICBicmVhazsKLSAgICB9Ci0gICAgaWYgKCAoZmluZCA9IEV4cHIu
ZmluZFsgdHlwZSBdKSApIHsKLSAgICAvLyBTZWFyY2gsIGV4cGFuZGluZyBjb250ZXh0IGZvciBs
ZWFkaW5nIHNpYmxpbmcgY29tYmluYXRvcnMKLSAgICBpZiAoIChzZWVkID0gZmluZCgKLSAgICB0
b2tlbi5tYXRjaGVzWzBdLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICksCi0gICAgcnNp
YmxpbmcudGVzdCggdG9rZW5zWzBdLnR5cGUgKSAmJiBjb250ZXh0LnBhcmVudE5vZGUgfHwgY29u
dGV4dAotICAgICkpICkgewotCi0gICAgLy8gSWYgc2VlZCBpcyBlbXB0eSBvciBubyB0b2tlbnMg
cmVtYWluLCB3ZSBjYW4gcmV0dXJuIGVhcmx5Ci0gICAgdG9rZW5zLnNwbGljZSggaSwgMSApOwot
ICAgIHNlbGVjdG9yID0gc2VlZC5sZW5ndGggJiYgdG9TZWxlY3RvciggdG9rZW5zICk7Ci0gICAg
aWYgKCAhc2VsZWN0b3IgKSB7Ci0gICAgcHVzaC5hcHBseSggcmVzdWx0cywgc2xpY2UuY2FsbCgg
c2VlZCwgMCApICk7Ci0gICAgcmV0dXJuIHJlc3VsdHM7Ci0gICAgfQotCi0gICAgYnJlYWs7Ci0g
ICAgfQotICAgIH0KLSAgICB9Ci0gICAgfQotICAgIH0KLQotICAgIC8vIENvbXBpbGUgYW5kIGV4
ZWN1dGUgYSBmaWx0ZXJpbmcgZnVuY3Rpb24KLSAgICAvLyBQcm92aWRlIGBtYXRjaGAgdG8gYXZv
aWQgcmV0b2tlbml6YXRpb24gaWYgd2UgbW9kaWZpZWQgdGhlIHNlbGVjdG9yIGFib3ZlCi0gICAg
Y29tcGlsZSggc2VsZWN0b3IsIG1hdGNoICkoCi0gICAgc2VlZCwKLSAgICBjb250ZXh0LAotICAg
IGRvY3VtZW50SXNYTUwsCi0gICAgcmVzdWx0cywKLSAgICByc2libGluZy50ZXN0KCBzZWxlY3Rv
ciApCi0gICAgKTsKLSAgICByZXR1cm4gcmVzdWx0czsKLX0KLQotLy8gRGVwcmVjYXRlZAotRXhw
ci5wc2V1ZG9zWyJudGgiXSA9IEV4cHIucHNldWRvc1siZXEiXTsKLQotLy8gRWFzeSBBUEkgZm9y
IGNyZWF0aW5nIG5ldyBzZXRGaWx0ZXJzCi1mdW5jdGlvbiBzZXRGaWx0ZXJzKCkge30KLUV4cHIu
ZmlsdGVycyA9IHNldEZpbHRlcnMucHJvdG90eXBlID0gRXhwci5wc2V1ZG9zOwotRXhwci5zZXRG
aWx0ZXJzID0gbmV3IHNldEZpbHRlcnMoKTsKLQotLy8gSW5pdGlhbGl6ZSB3aXRoIHRoZSBkZWZh
dWx0IGRvY3VtZW50Ci1zZXREb2N1bWVudCgpOwotCi0vLyBPdmVycmlkZSBzaXp6bGUgYXR0cmli
dXRlIHJldHJpZXZhbAotU2l6emxlLmF0dHIgPSBqUXVlcnkuYXR0cjsKLWpRdWVyeS5maW5kID0g
U2l6emxlOwotalF1ZXJ5LmV4cHIgPSBTaXp6bGUuc2VsZWN0b3JzOwotalF1ZXJ5LmV4cHJbIjoi
XSA9IGpRdWVyeS5leHByLnBzZXVkb3M7Ci1qUXVlcnkudW5pcXVlID0gU2l6emxlLnVuaXF1ZVNv
cnQ7Ci1qUXVlcnkudGV4dCA9IFNpenpsZS5nZXRUZXh0OwotalF1ZXJ5LmlzWE1MRG9jID0gU2l6
emxlLmlzWE1MOwotalF1ZXJ5LmNvbnRhaW5zID0gU2l6emxlLmNvbnRhaW5zOwotCi0KLX0pKCB3
aW5kb3cgKTsKLXZhciBydW50aWwgPSAvVW50aWwkLywKLSAgICBycGFyZW50c3ByZXYgPSAvXig/
OnBhcmVudHN8cHJldig/OlVudGlsfEFsbCkpLywKLSAgICBpc1NpbXBsZSA9IC9eLlteOiNcW1wu
LF0qJC8sCi0gICAgcm5lZWRzQ29udGV4dCA9IGpRdWVyeS5leHByLm1hdGNoLm5lZWRzQ29udGV4
dCwKLSAgICAvLyBtZXRob2RzIGd1YXJhbnRlZWQgdG8gcHJvZHVjZSBhIHVuaXF1ZSBzZXQgd2hl
biBzdGFydGluZyBmcm9tIGEgdW5pcXVlIHNldAotICAgIGd1YXJhbnRlZWRVbmlxdWUgPSB7Ci0g
ICAgY2hpbGRyZW46IHRydWUsCi0gICAgY29udGVudHM6IHRydWUsCi0gICAgbmV4dDogdHJ1ZSwK
LSAgICBwcmV2OiB0cnVlCi0gICAgfTsKLQotalF1ZXJ5LmZuLmV4dGVuZCh7Ci0gICAgZmluZDog
ZnVuY3Rpb24oIHNlbGVjdG9yICkgewotICAgIHZhciBpLCByZXQsIHNlbGYsCi0gICAgbGVuID0g
dGhpcy5sZW5ndGg7Ci0KLSAgICBpZiAoIHR5cGVvZiBzZWxlY3RvciAhPT0gInN0cmluZyIgKSB7
Ci0gICAgc2VsZiA9IHRoaXM7Ci0gICAgcmV0dXJuIHRoaXMucHVzaFN0YWNrKCBqUXVlcnkoIHNl
bGVjdG9yICkuZmlsdGVyKGZ1bmN0aW9uKCkgewotICAgIGZvciAoIGkgPSAwOyBpIDwgbGVuOyBp
KysgKSB7Ci0gICAgaWYgKCBqUXVlcnkuY29udGFpbnMoIHNlbGZbIGkgXSwgdGhpcyApICkgewot
ICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICB9Ci0gICAgfSkgKTsKLSAgICB9Ci0KLSAgICBy
ZXQgPSBbXTsKLSAgICBmb3IgKCBpID0gMDsgaSA8IGxlbjsgaSsrICkgewotICAgIGpRdWVyeS5m
aW5kKCBzZWxlY3RvciwgdGhpc1sgaSBdLCByZXQgKTsKLSAgICB9Ci0KLSAgICAvLyBOZWVkZWQg
YmVjYXVzZSAkKCBzZWxlY3RvciwgY29udGV4dCApIGJlY29tZXMgJCggY29udGV4dCApLmZpbmQo
IHNlbGVjdG9yICkKLSAgICByZXQgPSB0aGlzLnB1c2hTdGFjayggbGVuID4gMSA/IGpRdWVyeS51
bmlxdWUoIHJldCApIDogcmV0ICk7Ci0gICAgcmV0LnNlbGVjdG9yID0gKCB0aGlzLnNlbGVjdG9y
ID8gdGhpcy5zZWxlY3RvciArICIgIiA6ICIiICkgKyBzZWxlY3RvcjsKLSAgICByZXR1cm4gcmV0
OwotICAgIH0sCi0KLSAgICBoYXM6IGZ1bmN0aW9uKCB0YXJnZXQgKSB7Ci0gICAgdmFyIGksCi0g
ICAgdGFyZ2V0cyA9IGpRdWVyeSggdGFyZ2V0LCB0aGlzICksCi0gICAgbGVuID0gdGFyZ2V0cy5s
ZW5ndGg7Ci0KLSAgICByZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oKSB7Ci0gICAgZm9yICgg
aSA9IDA7IGkgPCBsZW47IGkrKyApIHsKLSAgICBpZiAoIGpRdWVyeS5jb250YWlucyggdGhpcywg
dGFyZ2V0c1tpXSApICkgewotICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICB9Ci0gICAgfSk7
Ci0gICAgfSwKLQotICAgIG5vdDogZnVuY3Rpb24oIHNlbGVjdG9yICkgewotICAgIHJldHVybiB0
aGlzLnB1c2hTdGFjayggd2lubm93KHRoaXMsIHNlbGVjdG9yLCBmYWxzZSkgKTsKLSAgICB9LAot
Ci0gICAgZmlsdGVyOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7Ci0gICAgcmV0dXJuIHRoaXMucHVz
aFN0YWNrKCB3aW5ub3codGhpcywgc2VsZWN0b3IsIHRydWUpICk7Ci0gICAgfSwKLQotICAgIGlz
OiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7Ci0gICAgcmV0dXJuICEhc2VsZWN0b3IgJiYgKAotICAg
IHR5cGVvZiBzZWxlY3RvciA9PT0gInN0cmluZyIgPwotICAgIC8vIElmIHRoaXMgaXMgYSBwb3Np
dGlvbmFsL3JlbGF0aXZlIHNlbGVjdG9yLCBjaGVjayBtZW1iZXJzaGlwIGluIHRoZSByZXR1cm5l
ZCBzZXQKLSAgICAvLyBzbyAkKCJwOmZpcnN0IikuaXMoInA6bGFzdCIpIHdvbid0IHJldHVybiB0
cnVlIGZvciBhIGRvYyB3aXRoIHR3byAicCIuCi0gICAgcm5lZWRzQ29udGV4dC50ZXN0KCBzZWxl
Y3RvciApID8KLSAgICBqUXVlcnkoIHNlbGVjdG9yLCB0aGlzLmNvbnRleHQgKS5pbmRleCggdGhp
c1swXSApID49IDAgOgotICAgIGpRdWVyeS5maWx0ZXIoIHNlbGVjdG9yLCB0aGlzICkubGVuZ3Ro
ID4gMCA6Ci0gICAgdGhpcy5maWx0ZXIoIHNlbGVjdG9yICkubGVuZ3RoID4gMCApOwotICAgIH0s
Ci0KLSAgICBjbG9zZXN0OiBmdW5jdGlvbiggc2VsZWN0b3JzLCBjb250ZXh0ICkgewotICAgIHZh
ciBjdXIsCi0gICAgaSA9IDAsCi0gICAgbCA9IHRoaXMubGVuZ3RoLAotICAgIHJldCA9IFtdLAot
ICAgIHBvcyA9IHJuZWVkc0NvbnRleHQudGVzdCggc2VsZWN0b3JzICkgfHwgdHlwZW9mIHNlbGVj
dG9ycyAhPT0gInN0cmluZyIgPwotICAgIGpRdWVyeSggc2VsZWN0b3JzLCBjb250ZXh0IHx8IHRo
aXMuY29udGV4dCApIDoKLSAgICAwOwotCi0gICAgZm9yICggOyBpIDwgbDsgaSsrICkgewotICAg
IGN1ciA9IHRoaXNbaV07Ci0KLSAgICB3aGlsZSAoIGN1ciAmJiBjdXIub3duZXJEb2N1bWVudCAm
JiBjdXIgIT09IGNvbnRleHQgJiYgY3VyLm5vZGVUeXBlICE9PSAxMSApIHsKLSAgICBpZiAoIHBv
cyA/IHBvcy5pbmRleChjdXIpID4gLTEgOiBqUXVlcnkuZmluZC5tYXRjaGVzU2VsZWN0b3IoY3Vy
LCBzZWxlY3RvcnMpICkgewotICAgIHJldC5wdXNoKCBjdXIgKTsKLSAgICBicmVhazsKLSAgICB9
Ci0gICAgY3VyID0gY3VyLnBhcmVudE5vZGU7Ci0gICAgfQotICAgIH0KLQotICAgIHJldHVybiB0
aGlzLnB1c2hTdGFjayggcmV0Lmxlbmd0aCA+IDEgPyBqUXVlcnkudW5pcXVlKCByZXQgKSA6IHJl
dCApOwotICAgIH0sCi0KLSAgICAvLyBEZXRlcm1pbmUgdGhlIHBvc2l0aW9uIG9mIGFuIGVsZW1l
bnQgd2l0aGluCi0gICAgLy8gdGhlIG1hdGNoZWQgc2V0IG9mIGVsZW1lbnRzCi0gICAgaW5kZXg6
IGZ1bmN0aW9uKCBlbGVtICkgewotCi0gICAgLy8gTm8gYXJndW1lbnQsIHJldHVybiBpbmRleCBp
biBwYXJlbnQKLSAgICBpZiAoICFlbGVtICkgewotICAgIHJldHVybiAoIHRoaXNbMF0gJiYgdGhp
c1swXS5wYXJlbnROb2RlICkgPyB0aGlzLmZpcnN0KCkucHJldkFsbCgpLmxlbmd0aCA6IC0xOwot
ICAgIH0KLQotICAgIC8vIGluZGV4IGluIHNlbGVjdG9yCi0gICAgaWYgKCB0eXBlb2YgZWxlbSA9
PT0gInN0cmluZyIgKSB7Ci0gICAgcmV0dXJuIGpRdWVyeS5pbkFycmF5KCB0aGlzWzBdLCBqUXVl
cnkoIGVsZW0gKSApOwotICAgIH0KLQotICAgIC8vIExvY2F0ZSB0aGUgcG9zaXRpb24gb2YgdGhl
IGRlc2lyZWQgZWxlbWVudAotICAgIHJldHVybiBqUXVlcnkuaW5BcnJheSgKLSAgICAvLyBJZiBp
dCByZWNlaXZlcyBhIGpRdWVyeSBvYmplY3QsIHRoZSBmaXJzdCBlbGVtZW50IGlzIHVzZWQKLSAg
ICBlbGVtLmpxdWVyeSA/IGVsZW1bMF0gOiBlbGVtLCB0aGlzICk7Ci0gICAgfSwKLQotICAgIGFk
ZDogZnVuY3Rpb24oIHNlbGVjdG9yLCBjb250ZXh0ICkgewotICAgIHZhciBzZXQgPSB0eXBlb2Yg
c2VsZWN0b3IgPT09ICJzdHJpbmciID8KLSAgICBqUXVlcnkoIHNlbGVjdG9yLCBjb250ZXh0ICkg
OgotICAgIGpRdWVyeS5tYWtlQXJyYXkoIHNlbGVjdG9yICYmIHNlbGVjdG9yLm5vZGVUeXBlID8g
WyBzZWxlY3RvciBdIDogc2VsZWN0b3IgKSwKLSAgICBhbGwgPSBqUXVlcnkubWVyZ2UoIHRoaXMu
Z2V0KCksIHNldCApOwotCi0gICAgcmV0dXJuIHRoaXMucHVzaFN0YWNrKCBqUXVlcnkudW5pcXVl
KGFsbCkgKTsKLSAgICB9LAotCi0gICAgYWRkQmFjazogZnVuY3Rpb24oIHNlbGVjdG9yICkgewot
ICAgIHJldHVybiB0aGlzLmFkZCggc2VsZWN0b3IgPT0gbnVsbCA/Ci0gICAgdGhpcy5wcmV2T2Jq
ZWN0IDogdGhpcy5wcmV2T2JqZWN0LmZpbHRlcihzZWxlY3RvcikKLSAgICApOwotICAgIH0KLX0p
OwotCi1qUXVlcnkuZm4uYW5kU2VsZiA9IGpRdWVyeS5mbi5hZGRCYWNrOwotCi1mdW5jdGlvbiBz
aWJsaW5nKCBjdXIsIGRpciApIHsKLSAgICBkbyB7Ci0gICAgY3VyID0gY3VyWyBkaXIgXTsKLSAg
ICB9IHdoaWxlICggY3VyICYmIGN1ci5ub2RlVHlwZSAhPT0gMSApOwotCi0gICAgcmV0dXJuIGN1
cjsKLX0KLQotalF1ZXJ5LmVhY2goewotICAgIHBhcmVudDogZnVuY3Rpb24oIGVsZW0gKSB7Ci0g
ICAgdmFyIHBhcmVudCA9IGVsZW0ucGFyZW50Tm9kZTsKLSAgICByZXR1cm4gcGFyZW50ICYmIHBh
cmVudC5ub2RlVHlwZSAhPT0gMTEgPyBwYXJlbnQgOiBudWxsOwotICAgIH0sCi0gICAgcGFyZW50
czogZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgcmV0dXJuIGpRdWVyeS5kaXIoIGVsZW0sICJwYXJl
bnROb2RlIiApOwotICAgIH0sCi0gICAgcGFyZW50c1VudGlsOiBmdW5jdGlvbiggZWxlbSwgaSwg
dW50aWwgKSB7Ci0gICAgcmV0dXJuIGpRdWVyeS5kaXIoIGVsZW0sICJwYXJlbnROb2RlIiwgdW50
aWwgKTsKLSAgICB9LAotICAgIG5leHQ6IGZ1bmN0aW9uKCBlbGVtICkgewotICAgIHJldHVybiBz
aWJsaW5nKCBlbGVtLCAibmV4dFNpYmxpbmciICk7Ci0gICAgfSwKLSAgICBwcmV2OiBmdW5jdGlv
biggZWxlbSApIHsKLSAgICByZXR1cm4gc2libGluZyggZWxlbSwgInByZXZpb3VzU2libGluZyIg
KTsKLSAgICB9LAotICAgIG5leHRBbGw6IGZ1bmN0aW9uKCBlbGVtICkgewotICAgIHJldHVybiBq
UXVlcnkuZGlyKCBlbGVtLCAibmV4dFNpYmxpbmciICk7Ci0gICAgfSwKLSAgICBwcmV2QWxsOiBm
dW5jdGlvbiggZWxlbSApIHsKLSAgICByZXR1cm4galF1ZXJ5LmRpciggZWxlbSwgInByZXZpb3Vz
U2libGluZyIgKTsKLSAgICB9LAotICAgIG5leHRVbnRpbDogZnVuY3Rpb24oIGVsZW0sIGksIHVu
dGlsICkgewotICAgIHJldHVybiBqUXVlcnkuZGlyKCBlbGVtLCAibmV4dFNpYmxpbmciLCB1bnRp
bCApOwotICAgIH0sCi0gICAgcHJldlVudGlsOiBmdW5jdGlvbiggZWxlbSwgaSwgdW50aWwgKSB7
Ci0gICAgcmV0dXJuIGpRdWVyeS5kaXIoIGVsZW0sICJwcmV2aW91c1NpYmxpbmciLCB1bnRpbCAp
OwotICAgIH0sCi0gICAgc2libGluZ3M6IGZ1bmN0aW9uKCBlbGVtICkgewotICAgIHJldHVybiBq
UXVlcnkuc2libGluZyggKCBlbGVtLnBhcmVudE5vZGUgfHwge30gKS5maXJzdENoaWxkLCBlbGVt
ICk7Ci0gICAgfSwKLSAgICBjaGlsZHJlbjogZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgcmV0dXJu
IGpRdWVyeS5zaWJsaW5nKCBlbGVtLmZpcnN0Q2hpbGQgKTsKLSAgICB9LAotICAgIGNvbnRlbnRz
OiBmdW5jdGlvbiggZWxlbSApIHsKLSAgICByZXR1cm4galF1ZXJ5Lm5vZGVOYW1lKCBlbGVtLCAi
aWZyYW1lIiApID8KLSAgICBlbGVtLmNvbnRlbnREb2N1bWVudCB8fCBlbGVtLmNvbnRlbnRXaW5k
b3cuZG9jdW1lbnQgOgotICAgIGpRdWVyeS5tZXJnZSggW10sIGVsZW0uY2hpbGROb2RlcyApOwot
ICAgIH0KLX0sIGZ1bmN0aW9uKCBuYW1lLCBmbiApIHsKLSAgICBqUXVlcnkuZm5bIG5hbWUgXSA9
IGZ1bmN0aW9uKCB1bnRpbCwgc2VsZWN0b3IgKSB7Ci0gICAgdmFyIHJldCA9IGpRdWVyeS5tYXAo
IHRoaXMsIGZuLCB1bnRpbCApOwotCi0gICAgaWYgKCAhcnVudGlsLnRlc3QoIG5hbWUgKSApIHsK
LSAgICBzZWxlY3RvciA9IHVudGlsOwotICAgIH0KLQotICAgIGlmICggc2VsZWN0b3IgJiYgdHlw
ZW9mIHNlbGVjdG9yID09PSAic3RyaW5nIiApIHsKLSAgICByZXQgPSBqUXVlcnkuZmlsdGVyKCBz
ZWxlY3RvciwgcmV0ICk7Ci0gICAgfQotCi0gICAgcmV0ID0gdGhpcy5sZW5ndGggPiAxICYmICFn
dWFyYW50ZWVkVW5pcXVlWyBuYW1lIF0gPyBqUXVlcnkudW5pcXVlKCByZXQgKSA6IHJldDsKLQot
ICAgIGlmICggdGhpcy5sZW5ndGggPiAxICYmIHJwYXJlbnRzcHJldi50ZXN0KCBuYW1lICkgKSB7
Ci0gICAgcmV0ID0gcmV0LnJldmVyc2UoKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdGhpcy5wdXNo
U3RhY2soIHJldCApOwotICAgIH07Ci19KTsKLQotalF1ZXJ5LmV4dGVuZCh7Ci0gICAgZmlsdGVy
OiBmdW5jdGlvbiggZXhwciwgZWxlbXMsIG5vdCApIHsKLSAgICBpZiAoIG5vdCApIHsKLSAgICBl
eHByID0gIjpub3QoIiArIGV4cHIgKyAiKSI7Ci0gICAgfQotCi0gICAgcmV0dXJuIGVsZW1zLmxl
bmd0aCA9PT0gMSA/Ci0gICAgalF1ZXJ5LmZpbmQubWF0Y2hlc1NlbGVjdG9yKGVsZW1zWzBdLCBl
eHByKSA/IFsgZWxlbXNbMF0gXSA6IFtdIDoKLSAgICBqUXVlcnkuZmluZC5tYXRjaGVzKGV4cHIs
IGVsZW1zKTsKLSAgICB9LAotCi0gICAgZGlyOiBmdW5jdGlvbiggZWxlbSwgZGlyLCB1bnRpbCAp
IHsKLSAgICB2YXIgbWF0Y2hlZCA9IFtdLAotICAgIGN1ciA9IGVsZW1bIGRpciBdOwotCi0gICAg
d2hpbGUgKCBjdXIgJiYgY3VyLm5vZGVUeXBlICE9PSA5ICYmICh1bnRpbCA9PT0gdW5kZWZpbmVk
IHx8IGN1ci5ub2RlVHlwZSAhPT0gMSB8fCAhalF1ZXJ5KCBjdXIgKS5pcyggdW50aWwgKSkgKSB7
Ci0gICAgaWYgKCBjdXIubm9kZVR5cGUgPT09IDEgKSB7Ci0gICAgbWF0Y2hlZC5wdXNoKCBjdXIg
KTsKLSAgICB9Ci0gICAgY3VyID0gY3VyW2Rpcl07Ci0gICAgfQotICAgIHJldHVybiBtYXRjaGVk
OwotICAgIH0sCi0KLSAgICBzaWJsaW5nOiBmdW5jdGlvbiggbiwgZWxlbSApIHsKLSAgICB2YXIg
ciA9IFtdOwotCi0gICAgZm9yICggOyBuOyBuID0gbi5uZXh0U2libGluZyApIHsKLSAgICBpZiAo
IG4ubm9kZVR5cGUgPT09IDEgJiYgbiAhPT0gZWxlbSApIHsKLSAgICByLnB1c2goIG4gKTsKLSAg
ICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHI7Ci0gICAgfQotfSk7Ci0KLS8vIEltcGxlbWVudCB0
aGUgaWRlbnRpY2FsIGZ1bmN0aW9uYWxpdHkgZm9yIGZpbHRlciBhbmQgbm90Ci1mdW5jdGlvbiB3
aW5ub3coIGVsZW1lbnRzLCBxdWFsaWZpZXIsIGtlZXAgKSB7Ci0KLSAgICAvLyBDYW4ndCBwYXNz
IG51bGwgb3IgdW5kZWZpbmVkIHRvIGluZGV4T2YgaW4gRmlyZWZveCA0Ci0gICAgLy8gU2V0IHRv
IDAgdG8gc2tpcCBzdHJpbmcgY2hlY2sKLSAgICBxdWFsaWZpZXIgPSBxdWFsaWZpZXIgfHwgMDsK
LQotICAgIGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIHF1YWxpZmllciApICkgewotICAgIHJldHVy
biBqUXVlcnkuZ3JlcChlbGVtZW50cywgZnVuY3Rpb24oIGVsZW0sIGkgKSB7Ci0gICAgdmFyIHJl
dFZhbCA9ICEhcXVhbGlmaWVyLmNhbGwoIGVsZW0sIGksIGVsZW0gKTsKLSAgICByZXR1cm4gcmV0
VmFsID09PSBrZWVwOwotICAgIH0pOwotCi0gICAgfSBlbHNlIGlmICggcXVhbGlmaWVyLm5vZGVU
eXBlICkgewotICAgIHJldHVybiBqUXVlcnkuZ3JlcChlbGVtZW50cywgZnVuY3Rpb24oIGVsZW0g
KSB7Ci0gICAgcmV0dXJuICggZWxlbSA9PT0gcXVhbGlmaWVyICkgPT09IGtlZXA7Ci0gICAgfSk7
Ci0KLSAgICB9IGVsc2UgaWYgKCB0eXBlb2YgcXVhbGlmaWVyID09PSAic3RyaW5nIiApIHsKLSAg
ICB2YXIgZmlsdGVyZWQgPSBqUXVlcnkuZ3JlcChlbGVtZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7
Ci0gICAgcmV0dXJuIGVsZW0ubm9kZVR5cGUgPT09IDE7Ci0gICAgfSk7Ci0KLSAgICBpZiAoIGlz
U2ltcGxlLnRlc3QoIHF1YWxpZmllciApICkgewotICAgIHJldHVybiBqUXVlcnkuZmlsdGVyKHF1
YWxpZmllciwgZmlsdGVyZWQsICFrZWVwKTsKLSAgICB9IGVsc2UgewotICAgIHF1YWxpZmllciA9
IGpRdWVyeS5maWx0ZXIoIHF1YWxpZmllciwgZmlsdGVyZWQgKTsKLSAgICB9Ci0gICAgfQotCi0g
ICAgcmV0dXJuIGpRdWVyeS5ncmVwKGVsZW1lbnRzLCBmdW5jdGlvbiggZWxlbSApIHsKLSAgICBy
ZXR1cm4gKCBqUXVlcnkuaW5BcnJheSggZWxlbSwgcXVhbGlmaWVyICkgPj0gMCApID09PSBrZWVw
OwotICAgIH0pOwotfQotZnVuY3Rpb24gY3JlYXRlU2FmZUZyYWdtZW50KCBkb2N1bWVudCApIHsK
LSAgICB2YXIgbGlzdCA9IG5vZGVOYW1lcy5zcGxpdCggInwiICksCi0gICAgc2FmZUZyYWcgPSBk
b2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7Ci0KLSAgICBpZiAoIHNhZmVGcmFnLmNy
ZWF0ZUVsZW1lbnQgKSB7Ci0gICAgd2hpbGUgKCBsaXN0Lmxlbmd0aCApIHsKLSAgICBzYWZlRnJh
Zy5jcmVhdGVFbGVtZW50KAotICAgIGxpc3QucG9wKCkKLSAgICApOwotICAgIH0KLSAgICB9Ci0g
ICAgcmV0dXJuIHNhZmVGcmFnOwotfQotCi12YXIgbm9kZU5hbWVzID0gImFiYnJ8YXJ0aWNsZXxh
c2lkZXxhdWRpb3xiZGl8Y2FudmFzfGRhdGF8ZGF0YWxpc3R8ZGV0YWlsc3xmaWdjYXB0aW9ufGZp
Z3VyZXxmb290ZXJ8IiArCi0gICAgImhlYWRlcnxoZ3JvdXB8bWFya3xtZXRlcnxuYXZ8b3V0cHV0
fHByb2dyZXNzfHNlY3Rpb258c3VtbWFyeXx0aW1lfHZpZGVvIiwKLSAgICByaW5saW5lalF1ZXJ5
ID0gLyBqUXVlcnlcZCs9Iig/Om51bGx8XGQrKSIvZywKLSAgICBybm9zaGltY2FjaGUgPSBuZXcg
UmVnRXhwKCI8KD86IiArIG5vZGVOYW1lcyArICIpW1xccy8+XSIsICJpIiksCi0gICAgcmxlYWRp
bmdXaGl0ZXNwYWNlID0gL15ccysvLAotICAgIHJ4aHRtbFRhZyA9IC88KD8hYXJlYXxicnxjb2x8
ZW1iZWR8aHJ8aW1nfGlucHV0fGxpbmt8bWV0YXxwYXJhbSkoKFtcdzpdKylbXj5dKilcLz4vZ2ks
Ci0gICAgcnRhZ05hbWUgPSAvPChbXHc6XSspLywKLSAgICBydGJvZHkgPSAvPHRib2R5L2ksCi0g
ICAgcmh0bWwgPSAvPHwmIz9cdys7LywKLSAgICBybm9Jbm5lcmh0bWwgPSAvPCg/OnNjcmlwdHxz
dHlsZXxsaW5rKS9pLAotICAgIG1hbmlwdWxhdGlvbl9yY2hlY2thYmxlVHlwZSA9IC9eKD86Y2hl
Y2tib3h8cmFkaW8pJC9pLAotICAgIC8vIGNoZWNrZWQ9ImNoZWNrZWQiIG9yIGNoZWNrZWQKLSAg
ICByY2hlY2tlZCA9IC9jaGVja2VkXHMqKD86W149XXw9XHMqLmNoZWNrZWQuKS9pLAotICAgIHJz
Y3JpcHRUeXBlID0gL14kfFwvKD86amF2YXxlY21hKXNjcmlwdC9pLAotICAgIHJzY3JpcHRUeXBl
TWFza2VkID0gL150cnVlXC8oLiopLywKLSAgICByY2xlYW5TY3JpcHQgPSAvXlxzKjwhKD86XFtD
REFUQVxbfC0tKXwoPzpcXVxdfC0tKT5ccyokL2csCi0KLSAgICAvLyBXZSBoYXZlIHRvIGNsb3Nl
IHRoZXNlIHRhZ3MgdG8gc3VwcG9ydCBYSFRNTCAoIzEzMjAwKQotICAgIHdyYXBNYXAgPSB7Ci0g
ICAgb3B0aW9uOiBbIDEsICI8c2VsZWN0IG11bHRpcGxlPSdtdWx0aXBsZSc+IiwgIjwvc2VsZWN0
PiIgXSwKLSAgICBsZWdlbmQ6IFsgMSwgIjxmaWVsZHNldD4iLCAiPC9maWVsZHNldD4iIF0sCi0g
ICAgYXJlYTogWyAxLCAiPG1hcD4iLCAiPC9tYXA+IiBdLAotICAgIHBhcmFtOiBbIDEsICI8b2Jq
ZWN0PiIsICI8L29iamVjdD4iIF0sCi0gICAgdGhlYWQ6IFsgMSwgIjx0YWJsZT4iLCAiPC90YWJs
ZT4iIF0sCi0gICAgdHI6IFsgMiwgIjx0YWJsZT48dGJvZHk+IiwgIjwvdGJvZHk+PC90YWJsZT4i
IF0sCi0gICAgY29sOiBbIDIsICI8dGFibGU+PHRib2R5PjwvdGJvZHk+PGNvbGdyb3VwPiIsICI8
L2NvbGdyb3VwPjwvdGFibGU+IiBdLAotICAgIHRkOiBbIDMsICI8dGFibGU+PHRib2R5Pjx0cj4i
LCAiPC90cj48L3Rib2R5PjwvdGFibGU+IiBdLAotCi0gICAgLy8gSUU2LTggY2FuJ3Qgc2VyaWFs
aXplIGxpbmssIHNjcmlwdCwgc3R5bGUsIG9yIGFueSBodG1sNSAoTm9TY29wZSkgdGFncywKLSAg
ICAvLyB1bmxlc3Mgd3JhcHBlZCBpbiBhIGRpdiB3aXRoIG5vbi1icmVha2luZyBjaGFyYWN0ZXJz
IGluIGZyb250IG9mIGl0LgotICAgIF9kZWZhdWx0OiBqUXVlcnkuc3VwcG9ydC5odG1sU2VyaWFs
aXplID8gWyAwLCAiIiwgIiIgXSA6IFsgMSwgIlg8ZGl2PiIsICI8L2Rpdj4iICBdCi0gICAgfSwK
LSAgICBzYWZlRnJhZ21lbnQgPSBjcmVhdGVTYWZlRnJhZ21lbnQoIGRvY3VtZW50ICksCi0gICAg
ZnJhZ21lbnREaXYgPSBzYWZlRnJhZ21lbnQuYXBwZW5kQ2hpbGQoIGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpICk7Ci0KLXdyYXBNYXAub3B0Z3JvdXAgPSB3cmFwTWFwLm9wdGlvbjsKLXdy
YXBNYXAudGJvZHkgPSB3cmFwTWFwLnRmb290ID0gd3JhcE1hcC5jb2xncm91cCA9IHdyYXBNYXAu
Y2FwdGlvbiA9IHdyYXBNYXAudGhlYWQ7Ci13cmFwTWFwLnRoID0gd3JhcE1hcC50ZDsKLQotalF1
ZXJ5LmZuLmV4dGVuZCh7Ci0gICAgdGV4dDogZnVuY3Rpb24oIHZhbHVlICkgewotICAgIHJldHVy
biBqUXVlcnkuYWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggdmFsdWUgKSB7Ci0gICAgcmV0dXJuIHZh
bHVlID09PSB1bmRlZmluZWQgPwotICAgIGpRdWVyeS50ZXh0KCB0aGlzICkgOgotICAgIHRoaXMu
ZW1wdHkoKS5hcHBlbmQoICggdGhpc1swXSAmJiB0aGlzWzBdLm93bmVyRG9jdW1lbnQgfHwgZG9j
dW1lbnQgKS5jcmVhdGVUZXh0Tm9kZSggdmFsdWUgKSApOwotICAgIH0sIG51bGwsIHZhbHVlLCBh
cmd1bWVudHMubGVuZ3RoICk7Ci0gICAgfSwKLQotICAgIHdyYXBBbGw6IGZ1bmN0aW9uKCBodG1s
ICkgewotICAgIGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIGh0bWwgKSApIHsKLSAgICByZXR1cm4g
dGhpcy5lYWNoKGZ1bmN0aW9uKGkpIHsKLSAgICBqUXVlcnkodGhpcykud3JhcEFsbCggaHRtbC5j
YWxsKHRoaXMsIGkpICk7Ci0gICAgfSk7Ci0gICAgfQotCi0gICAgaWYgKCB0aGlzWzBdICkgewot
ICAgIC8vIFRoZSBlbGVtZW50cyB0byB3cmFwIHRoZSB0YXJnZXQgYXJvdW5kCi0gICAgdmFyIHdy
YXAgPSBqUXVlcnkoIGh0bWwsIHRoaXNbMF0ub3duZXJEb2N1bWVudCApLmVxKDApLmNsb25lKHRy
dWUpOwotCi0gICAgaWYgKCB0aGlzWzBdLnBhcmVudE5vZGUgKSB7Ci0gICAgd3JhcC5pbnNlcnRC
ZWZvcmUoIHRoaXNbMF0gKTsKLSAgICB9Ci0KLSAgICB3cmFwLm1hcChmdW5jdGlvbigpIHsKLSAg
ICB2YXIgZWxlbSA9IHRoaXM7Ci0KLSAgICB3aGlsZSAoIGVsZW0uZmlyc3RDaGlsZCAmJiBlbGVt
LmZpcnN0Q2hpbGQubm9kZVR5cGUgPT09IDEgKSB7Ci0gICAgZWxlbSA9IGVsZW0uZmlyc3RDaGls
ZDsKLSAgICB9Ci0KLSAgICByZXR1cm4gZWxlbTsKLSAgICB9KS5hcHBlbmQoIHRoaXMgKTsKLSAg
ICB9Ci0KLSAgICByZXR1cm4gdGhpczsKLSAgICB9LAotCi0gICAgd3JhcElubmVyOiBmdW5jdGlv
biggaHRtbCApIHsKLSAgICBpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBodG1sICkgKSB7Ci0gICAg
cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihpKSB7Ci0gICAgalF1ZXJ5KHRoaXMpLndyYXBJbm5l
ciggaHRtbC5jYWxsKHRoaXMsIGkpICk7Ci0gICAgfSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRo
aXMuZWFjaChmdW5jdGlvbigpIHsKLSAgICB2YXIgc2VsZiA9IGpRdWVyeSggdGhpcyApLAotICAg
IGNvbnRlbnRzID0gc2VsZi5jb250ZW50cygpOwotCi0gICAgaWYgKCBjb250ZW50cy5sZW5ndGgg
KSB7Ci0gICAgY29udGVudHMud3JhcEFsbCggaHRtbCApOwotCi0gICAgfSBlbHNlIHsKLSAgICBz
ZWxmLmFwcGVuZCggaHRtbCApOwotICAgIH0KLSAgICB9KTsKLSAgICB9LAotCi0gICAgd3JhcDog
ZnVuY3Rpb24oIGh0bWwgKSB7Ci0gICAgdmFyIGlzRnVuY3Rpb24gPSBqUXVlcnkuaXNGdW5jdGlv
biggaHRtbCApOwotCi0gICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihpKSB7Ci0gICAgalF1
ZXJ5KCB0aGlzICkud3JhcEFsbCggaXNGdW5jdGlvbiA/IGh0bWwuY2FsbCh0aGlzLCBpKSA6IGh0
bWwgKTsKLSAgICB9KTsKLSAgICB9LAotCi0gICAgdW53cmFwOiBmdW5jdGlvbigpIHsKLSAgICBy
ZXR1cm4gdGhpcy5wYXJlbnQoKS5lYWNoKGZ1bmN0aW9uKCkgewotICAgIGlmICggIWpRdWVyeS5u
b2RlTmFtZSggdGhpcywgImJvZHkiICkgKSB7Ci0gICAgalF1ZXJ5KCB0aGlzICkucmVwbGFjZVdp
dGgoIHRoaXMuY2hpbGROb2RlcyApOwotICAgIH0KLSAgICB9KS5lbmQoKTsKLSAgICB9LAotCi0g
ICAgYXBwZW5kOiBmdW5jdGlvbigpIHsKLSAgICByZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVu
dHMsIHRydWUsIGZ1bmN0aW9uKCBlbGVtICkgewotICAgIGlmICggdGhpcy5ub2RlVHlwZSA9PT0g
MSB8fCB0aGlzLm5vZGVUeXBlID09PSAxMSB8fCB0aGlzLm5vZGVUeXBlID09PSA5ICkgewotICAg
IHRoaXMuYXBwZW5kQ2hpbGQoIGVsZW0gKTsKLSAgICB9Ci0gICAgfSk7Ci0gICAgfSwKLQotICAg
IHByZXBlbmQ6IGZ1bmN0aW9uKCkgewotICAgIHJldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50
cywgdHJ1ZSwgZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgaWYgKCB0aGlzLm5vZGVUeXBlID09PSAx
IHx8IHRoaXMubm9kZVR5cGUgPT09IDExIHx8IHRoaXMubm9kZVR5cGUgPT09IDkgKSB7Ci0gICAg
dGhpcy5pbnNlcnRCZWZvcmUoIGVsZW0sIHRoaXMuZmlyc3RDaGlsZCApOwotICAgIH0KLSAgICB9
KTsKLSAgICB9LAotCi0gICAgYmVmb3JlOiBmdW5jdGlvbigpIHsKLSAgICByZXR1cm4gdGhpcy5k
b21NYW5pcCggYXJndW1lbnRzLCBmYWxzZSwgZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgaWYgKCB0
aGlzLnBhcmVudE5vZGUgKSB7Ci0gICAgdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSggZWxl
bSwgdGhpcyApOwotICAgIH0KLSAgICB9KTsKLSAgICB9LAotCi0gICAgYWZ0ZXI6IGZ1bmN0aW9u
KCkgewotICAgIHJldHVybiB0aGlzLmRvbU1hbmlwKCBhcmd1bWVudHMsIGZhbHNlLCBmdW5jdGlv
biggZWxlbSApIHsKLSAgICBpZiAoIHRoaXMucGFyZW50Tm9kZSApIHsKLSAgICB0aGlzLnBhcmVu
dE5vZGUuaW5zZXJ0QmVmb3JlKCBlbGVtLCB0aGlzLm5leHRTaWJsaW5nICk7Ci0gICAgfQotICAg
IH0pOwotICAgIH0sCi0KLSAgICAvLyBrZWVwRGF0YSBpcyBmb3IgaW50ZXJuYWwgdXNlIG9ubHkt
LWRvIG5vdCBkb2N1bWVudAotICAgIHJlbW92ZTogZnVuY3Rpb24oIHNlbGVjdG9yLCBrZWVwRGF0
YSApIHsKLSAgICB2YXIgZWxlbSwKLSAgICBpID0gMDsKLQotICAgIGZvciAoIDsgKGVsZW0gPSB0
aGlzW2ldKSAhPSBudWxsOyBpKysgKSB7Ci0gICAgaWYgKCAhc2VsZWN0b3IgfHwgalF1ZXJ5LmZp
bHRlciggc2VsZWN0b3IsIFsgZWxlbSBdICkubGVuZ3RoID4gMCApIHsKLSAgICBpZiAoICFrZWVw
RGF0YSAmJiBlbGVtLm5vZGVUeXBlID09PSAxICkgewotICAgIGpRdWVyeS5jbGVhbkRhdGEoIGdl
dEFsbCggZWxlbSApICk7Ci0gICAgfQotCi0gICAgaWYgKCBlbGVtLnBhcmVudE5vZGUgKSB7Ci0g
ICAgaWYgKCBrZWVwRGF0YSAmJiBqUXVlcnkuY29udGFpbnMoIGVsZW0ub3duZXJEb2N1bWVudCwg
ZWxlbSApICkgewotICAgIHNldEdsb2JhbEV2YWwoIGdldEFsbCggZWxlbSwgInNjcmlwdCIgKSAp
OwotICAgIH0KLSAgICBlbGVtLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoIGVsZW0gKTsKLSAgICB9
Ci0gICAgfQotICAgIH0KLQotICAgIHJldHVybiB0aGlzOwotICAgIH0sCi0KLSAgICBlbXB0eTog
ZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGVsZW0sCi0gICAgaSA9IDA7Ci0KLSAgICBmb3IgKCA7IChl
bGVtID0gdGhpc1tpXSkgIT0gbnVsbDsgaSsrICkgewotICAgIC8vIFJlbW92ZSBlbGVtZW50IG5v
ZGVzIGFuZCBwcmV2ZW50IG1lbW9yeSBsZWFrcwotICAgIGlmICggZWxlbS5ub2RlVHlwZSA9PT0g
MSApIHsKLSAgICBqUXVlcnkuY2xlYW5EYXRhKCBnZXRBbGwoIGVsZW0sIGZhbHNlICkgKTsKLSAg
ICB9Ci0KLSAgICAvLyBSZW1vdmUgYW55IHJlbWFpbmluZyBub2RlcwotICAgIHdoaWxlICggZWxl
bS5maXJzdENoaWxkICkgewotICAgIGVsZW0ucmVtb3ZlQ2hpbGQoIGVsZW0uZmlyc3RDaGlsZCAp
OwotICAgIH0KLQotICAgIC8vIElmIHRoaXMgaXMgYSBzZWxlY3QsIGVuc3VyZSB0aGF0IGl0IGRp
c3BsYXlzIGVtcHR5ICgjMTIzMzYpCi0gICAgLy8gU3VwcG9ydDogSUU8OQotICAgIGlmICggZWxl
bS5vcHRpb25zICYmIGpRdWVyeS5ub2RlTmFtZSggZWxlbSwgInNlbGVjdCIgKSApIHsKLSAgICBl
bGVtLm9wdGlvbnMubGVuZ3RoID0gMDsKLSAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHRoaXM7
Ci0gICAgfSwKLQotICAgIGNsb25lOiBmdW5jdGlvbiggZGF0YUFuZEV2ZW50cywgZGVlcERhdGFB
bmRFdmVudHMgKSB7Ci0gICAgZGF0YUFuZEV2ZW50cyA9IGRhdGFBbmRFdmVudHMgPT0gbnVsbCA/
IGZhbHNlIDogZGF0YUFuZEV2ZW50czsKLSAgICBkZWVwRGF0YUFuZEV2ZW50cyA9IGRlZXBEYXRh
QW5kRXZlbnRzID09IG51bGwgPyBkYXRhQW5kRXZlbnRzIDogZGVlcERhdGFBbmRFdmVudHM7Ci0K
LSAgICByZXR1cm4gdGhpcy5tYXAoIGZ1bmN0aW9uICgpIHsKLSAgICByZXR1cm4galF1ZXJ5LmNs
b25lKCB0aGlzLCBkYXRhQW5kRXZlbnRzLCBkZWVwRGF0YUFuZEV2ZW50cyApOwotICAgIH0pOwot
ICAgIH0sCi0KLSAgICBodG1sOiBmdW5jdGlvbiggdmFsdWUgKSB7Ci0gICAgcmV0dXJuIGpRdWVy
eS5hY2Nlc3MoIHRoaXMsIGZ1bmN0aW9uKCB2YWx1ZSApIHsKLSAgICB2YXIgZWxlbSA9IHRoaXNb
MF0gfHwge30sCi0gICAgaSA9IDAsCi0gICAgbCA9IHRoaXMubGVuZ3RoOwotCi0gICAgaWYgKCB2
YWx1ZSA9PT0gdW5kZWZpbmVkICkgewotICAgIHJldHVybiBlbGVtLm5vZGVUeXBlID09PSAxID8K
LSAgICBlbGVtLmlubmVySFRNTC5yZXBsYWNlKCByaW5saW5lalF1ZXJ5LCAiIiApIDoKLSAgICB1
bmRlZmluZWQ7Ci0gICAgfQotCi0gICAgLy8gU2VlIGlmIHdlIGNhbiB0YWtlIGEgc2hvcnRjdXQg
YW5kIGp1c3QgdXNlIGlubmVySFRNTAotICAgIGlmICggdHlwZW9mIHZhbHVlID09PSAic3RyaW5n
IiAmJiAhcm5vSW5uZXJodG1sLnRlc3QoIHZhbHVlICkgJiYKLSAgICAoIGpRdWVyeS5zdXBwb3J0
Lmh0bWxTZXJpYWxpemUgfHwgIXJub3NoaW1jYWNoZS50ZXN0KCB2YWx1ZSApICApICYmCi0gICAg
KCBqUXVlcnkuc3VwcG9ydC5sZWFkaW5nV2hpdGVzcGFjZSB8fCAhcmxlYWRpbmdXaGl0ZXNwYWNl
LnRlc3QoIHZhbHVlICkgKSAmJgotICAgICF3cmFwTWFwWyAoIHJ0YWdOYW1lLmV4ZWMoIHZhbHVl
ICkgfHwgWyIiLCAiIl0gKVsxXS50b0xvd2VyQ2FzZSgpIF0gKSB7Ci0KLSAgICB2YWx1ZSA9IHZh
bHVlLnJlcGxhY2UoIHJ4aHRtbFRhZywgIjwkMT48LyQyPiIgKTsKLQotICAgIHRyeSB7Ci0gICAg
Zm9yICg7IGkgPCBsOyBpKysgKSB7Ci0gICAgLy8gUmVtb3ZlIGVsZW1lbnQgbm9kZXMgYW5kIHBy
ZXZlbnQgbWVtb3J5IGxlYWtzCi0gICAgZWxlbSA9IHRoaXNbaV0gfHwge307Ci0gICAgaWYgKCBl
bGVtLm5vZGVUeXBlID09PSAxICkgewotICAgIGpRdWVyeS5jbGVhbkRhdGEoIGdldEFsbCggZWxl
bSwgZmFsc2UgKSApOwotICAgIGVsZW0uaW5uZXJIVE1MID0gdmFsdWU7Ci0gICAgfQotICAgIH0K
LQotICAgIGVsZW0gPSAwOwotCi0gICAgLy8gSWYgdXNpbmcgaW5uZXJIVE1MIHRocm93cyBhbiBl
eGNlcHRpb24sIHVzZSB0aGUgZmFsbGJhY2sgbWV0aG9kCi0gICAgfSBjYXRjaChlKSB7fQotICAg
IH0KLQotICAgIGlmICggZWxlbSApIHsKLSAgICB0aGlzLmVtcHR5KCkuYXBwZW5kKCB2YWx1ZSAp
OwotICAgIH0KLSAgICB9LCBudWxsLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCApOwotICAgIH0s
Ci0KLSAgICByZXBsYWNlV2l0aDogZnVuY3Rpb24oIHZhbHVlICkgewotICAgIHZhciBpc0Z1bmMg
PSBqUXVlcnkuaXNGdW5jdGlvbiggdmFsdWUgKTsKLQotICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRo
ZSBlbGVtZW50cyBhcmUgcmVtb3ZlZCBmcm9tIHRoZSBET00gYmVmb3JlIHRoZXkgYXJlIGluc2Vy
dGVkCi0gICAgLy8gdGhpcyBjYW4gaGVscCBmaXggcmVwbGFjaW5nIGEgcGFyZW50IHdpdGggY2hp
bGQgZWxlbWVudHMKLSAgICBpZiAoICFpc0Z1bmMgJiYgdHlwZW9mIHZhbHVlICE9PSAic3RyaW5n
IiApIHsKLSAgICB2YWx1ZSA9IGpRdWVyeSggdmFsdWUgKS5ub3QoIHRoaXMgKS5kZXRhY2goKTsK
LSAgICB9Ci0KLSAgICByZXR1cm4gdGhpcy5kb21NYW5pcCggWyB2YWx1ZSBdLCB0cnVlLCBmdW5j
dGlvbiggZWxlbSApIHsKLSAgICB2YXIgbmV4dCA9IHRoaXMubmV4dFNpYmxpbmcsCi0gICAgcGFy
ZW50ID0gdGhpcy5wYXJlbnROb2RlOwotCi0gICAgaWYgKCBwYXJlbnQgKSB7Ci0gICAgalF1ZXJ5
KCB0aGlzICkucmVtb3ZlKCk7Ci0gICAgcGFyZW50Lmluc2VydEJlZm9yZSggZWxlbSwgbmV4dCAp
OwotICAgIH0KLSAgICB9KTsKLSAgICB9LAotCi0gICAgZGV0YWNoOiBmdW5jdGlvbiggc2VsZWN0
b3IgKSB7Ci0gICAgcmV0dXJuIHRoaXMucmVtb3ZlKCBzZWxlY3RvciwgdHJ1ZSApOwotICAgIH0s
Ci0KLSAgICBkb21NYW5pcDogZnVuY3Rpb24oIGFyZ3MsIHRhYmxlLCBjYWxsYmFjayApIHsKLQot
ICAgIC8vIEZsYXR0ZW4gYW55IG5lc3RlZCBhcnJheXMKLSAgICBhcmdzID0gY29yZV9jb25jYXQu
YXBwbHkoIFtdLCBhcmdzICk7Ci0KLSAgICB2YXIgZmlyc3QsIG5vZGUsIGhhc1NjcmlwdHMsCi0g
ICAgc2NyaXB0cywgZG9jLCBmcmFnbWVudCwKLSAgICBpID0gMCwKLSAgICBsID0gdGhpcy5sZW5n
dGgsCi0gICAgc2V0ID0gdGhpcywKLSAgICBpTm9DbG9uZSA9IGwgLSAxLAotICAgIHZhbHVlID0g
YXJnc1swXSwKLSAgICBpc0Z1bmN0aW9uID0galF1ZXJ5LmlzRnVuY3Rpb24oIHZhbHVlICk7Ci0K
LSAgICAvLyBXZSBjYW4ndCBjbG9uZU5vZGUgZnJhZ21lbnRzIHRoYXQgY29udGFpbiBjaGVja2Vk
LCBpbiBXZWJLaXQKLSAgICBpZiAoIGlzRnVuY3Rpb24gfHwgISggbCA8PSAxIHx8IHR5cGVvZiB2
YWx1ZSAhPT0gInN0cmluZyIgfHwgalF1ZXJ5LnN1cHBvcnQuY2hlY2tDbG9uZSB8fCAhcmNoZWNr
ZWQudGVzdCggdmFsdWUgKSApICkgewotICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oIGlu
ZGV4ICkgewotICAgIHZhciBzZWxmID0gc2V0LmVxKCBpbmRleCApOwotICAgIGlmICggaXNGdW5j
dGlvbiApIHsKLSAgICBhcmdzWzBdID0gdmFsdWUuY2FsbCggdGhpcywgaW5kZXgsIHRhYmxlID8g
c2VsZi5odG1sKCkgOiB1bmRlZmluZWQgKTsKLSAgICB9Ci0gICAgc2VsZi5kb21NYW5pcCggYXJn
cywgdGFibGUsIGNhbGxiYWNrICk7Ci0gICAgfSk7Ci0gICAgfQotCi0gICAgaWYgKCBsICkgewot
ICAgIGZyYWdtZW50ID0galF1ZXJ5LmJ1aWxkRnJhZ21lbnQoIGFyZ3MsIHRoaXNbIDAgXS5vd25l
ckRvY3VtZW50LCBmYWxzZSwgdGhpcyApOwotICAgIGZpcnN0ID0gZnJhZ21lbnQuZmlyc3RDaGls
ZDsKLQotICAgIGlmICggZnJhZ21lbnQuY2hpbGROb2Rlcy5sZW5ndGggPT09IDEgKSB7Ci0gICAg
ZnJhZ21lbnQgPSBmaXJzdDsKLSAgICB9Ci0KLSAgICBpZiAoIGZpcnN0ICkgewotICAgIHRhYmxl
ID0gdGFibGUgJiYgalF1ZXJ5Lm5vZGVOYW1lKCBmaXJzdCwgInRyIiApOwotICAgIHNjcmlwdHMg
PSBqUXVlcnkubWFwKCBnZXRBbGwoIGZyYWdtZW50LCAic2NyaXB0IiApLCBkaXNhYmxlU2NyaXB0
ICk7Ci0gICAgaGFzU2NyaXB0cyA9IHNjcmlwdHMubGVuZ3RoOwotCi0gICAgLy8gVXNlIHRoZSBv
cmlnaW5hbCBmcmFnbWVudCBmb3IgdGhlIGxhc3QgaXRlbSBpbnN0ZWFkIG9mIHRoZSBmaXJzdCBi
ZWNhdXNlIGl0IGNhbiBlbmQgdXAKLSAgICAvLyBiZWluZyBlbXB0aWVkIGluY29ycmVjdGx5IGlu
IGNlcnRhaW4gc2l0dWF0aW9ucyAoIzgwNzApLgotICAgIGZvciAoIDsgaSA8IGw7IGkrKyApIHsK
LSAgICBub2RlID0gZnJhZ21lbnQ7Ci0KLSAgICBpZiAoIGkgIT09IGlOb0Nsb25lICkgewotICAg
IG5vZGUgPSBqUXVlcnkuY2xvbmUoIG5vZGUsIHRydWUsIHRydWUgKTsKLQotICAgIC8vIEtlZXAg
cmVmZXJlbmNlcyB0byBjbG9uZWQgc2NyaXB0cyBmb3IgbGF0ZXIgcmVzdG9yYXRpb24KLSAgICBp
ZiAoIGhhc1NjcmlwdHMgKSB7Ci0gICAgalF1ZXJ5Lm1lcmdlKCBzY3JpcHRzLCBnZXRBbGwoIG5v
ZGUsICJzY3JpcHQiICkgKTsKLSAgICB9Ci0gICAgfQotCi0gICAgY2FsbGJhY2suY2FsbCgKLSAg
ICB0YWJsZSAmJiBqUXVlcnkubm9kZU5hbWUoIHRoaXNbaV0sICJ0YWJsZSIgKSA/Ci0gICAgZmlu
ZE9yQXBwZW5kKCB0aGlzW2ldLCAidGJvZHkiICkgOgotICAgIHRoaXNbaV0sCi0gICAgbm9kZSwK
LSAgICBpCi0gICAgKTsKLSAgICB9Ci0KLSAgICBpZiAoIGhhc1NjcmlwdHMgKSB7Ci0gICAgZG9j
ID0gc2NyaXB0c1sgc2NyaXB0cy5sZW5ndGggLSAxIF0ub3duZXJEb2N1bWVudDsKLQotICAgIC8v
IFJlZW5hYmxlIHNjcmlwdHMKLSAgICBqUXVlcnkubWFwKCBzY3JpcHRzLCByZXN0b3JlU2NyaXB0
ICk7Ci0KLSAgICAvLyBFdmFsdWF0ZSBleGVjdXRhYmxlIHNjcmlwdHMgb24gZmlyc3QgZG9jdW1l
bnQgaW5zZXJ0aW9uCi0gICAgZm9yICggaSA9IDA7IGkgPCBoYXNTY3JpcHRzOyBpKysgKSB7Ci0g
ICAgbm9kZSA9IHNjcmlwdHNbIGkgXTsKLSAgICBpZiAoIHJzY3JpcHRUeXBlLnRlc3QoIG5vZGUu
dHlwZSB8fCAiIiApICYmCi0gICAgIWpRdWVyeS5fZGF0YSggbm9kZSwgImdsb2JhbEV2YWwiICkg
JiYgalF1ZXJ5LmNvbnRhaW5zKCBkb2MsIG5vZGUgKSApIHsKLQotICAgIGlmICggbm9kZS5zcmMg
KSB7Ci0gICAgLy8gSG9wZSBhamF4IGlzIGF2YWlsYWJsZS4uLgotICAgIGpRdWVyeS5hamF4KHsK
LSAgICB1cmw6IG5vZGUuc3JjLAotICAgIHR5cGU6ICJHRVQiLAotICAgIGRhdGFUeXBlOiAic2Ny
aXB0IiwKLSAgICBhc3luYzogZmFsc2UsCi0gICAgZ2xvYmFsOiBmYWxzZSwKLSAgICAidGhyb3dz
IjogdHJ1ZQotICAgIH0pOwotICAgIH0gZWxzZSB7Ci0gICAgalF1ZXJ5Lmdsb2JhbEV2YWwoICgg
bm9kZS50ZXh0IHx8IG5vZGUudGV4dENvbnRlbnQgfHwgbm9kZS5pbm5lckhUTUwgfHwgIiIgKS5y
ZXBsYWNlKCByY2xlYW5TY3JpcHQsICIiICkgKTsKLSAgICB9Ci0gICAgfQotICAgIH0KLSAgICB9
Ci0KLSAgICAvLyBGaXggIzExODA5OiBBdm9pZCBsZWFraW5nIG1lbW9yeQotICAgIGZyYWdtZW50
ID0gZmlyc3QgPSBudWxsOwotICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gdGhpczsKLSAgICB9
Ci19KTsKLQotZnVuY3Rpb24gZmluZE9yQXBwZW5kKCBlbGVtLCB0YWcgKSB7Ci0gICAgcmV0dXJu
IGVsZW0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoIHRhZyApWzBdIHx8IGVsZW0uYXBwZW5kQ2hpbGQo
IGVsZW0ub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KCB0YWcgKSApOwotfQotCi0vLyBSZXBs
YWNlL3Jlc3RvcmUgdGhlIHR5cGUgYXR0cmlidXRlIG9mIHNjcmlwdCBlbGVtZW50cyBmb3Igc2Fm
ZSBET00gbWFuaXB1bGF0aW9uCi1mdW5jdGlvbiBkaXNhYmxlU2NyaXB0KCBlbGVtICkgewotICAg
IHZhciBhdHRyID0gZWxlbS5nZXRBdHRyaWJ1dGVOb2RlKCJ0eXBlIik7Ci0gICAgZWxlbS50eXBl
ID0gKCBhdHRyICYmIGF0dHIuc3BlY2lmaWVkICkgKyAiLyIgKyBlbGVtLnR5cGU7Ci0gICAgcmV0
dXJuIGVsZW07Ci19Ci1mdW5jdGlvbiByZXN0b3JlU2NyaXB0KCBlbGVtICkgewotICAgIHZhciBt
YXRjaCA9IHJzY3JpcHRUeXBlTWFza2VkLmV4ZWMoIGVsZW0udHlwZSApOwotICAgIGlmICggbWF0
Y2ggKSB7Ci0gICAgZWxlbS50eXBlID0gbWF0Y2hbMV07Ci0gICAgfSBlbHNlIHsKLSAgICBlbGVt
LnJlbW92ZUF0dHJpYnV0ZSgidHlwZSIpOwotICAgIH0KLSAgICByZXR1cm4gZWxlbTsKLX0KLQot
Ly8gTWFyayBzY3JpcHRzIGFzIGhhdmluZyBhbHJlYWR5IGJlZW4gZXZhbHVhdGVkCi1mdW5jdGlv
biBzZXRHbG9iYWxFdmFsKCBlbGVtcywgcmVmRWxlbWVudHMgKSB7Ci0gICAgdmFyIGVsZW0sCi0g
ICAgaSA9IDA7Ci0gICAgZm9yICggOyAoZWxlbSA9IGVsZW1zW2ldKSAhPSBudWxsOyBpKysgKSB7
Ci0gICAgalF1ZXJ5Ll9kYXRhKCBlbGVtLCAiZ2xvYmFsRXZhbCIsICFyZWZFbGVtZW50cyB8fCBq
UXVlcnkuX2RhdGEoIHJlZkVsZW1lbnRzW2ldLCAiZ2xvYmFsRXZhbCIgKSApOwotICAgIH0KLX0K
LQotZnVuY3Rpb24gY2xvbmVDb3B5RXZlbnQoIHNyYywgZGVzdCApIHsKLQotICAgIGlmICggZGVz
dC5ub2RlVHlwZSAhPT0gMSB8fCAhalF1ZXJ5Lmhhc0RhdGEoIHNyYyApICkgewotICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICB2YXIgdHlwZSwgaSwgbCwKLSAgICBvbGREYXRhID0galF1ZXJ5Ll9k
YXRhKCBzcmMgKSwKLSAgICBjdXJEYXRhID0galF1ZXJ5Ll9kYXRhKCBkZXN0LCBvbGREYXRhICks
Ci0gICAgZXZlbnRzID0gb2xkRGF0YS5ldmVudHM7Ci0KLSAgICBpZiAoIGV2ZW50cyApIHsKLSAg
ICBkZWxldGUgY3VyRGF0YS5oYW5kbGU7Ci0gICAgY3VyRGF0YS5ldmVudHMgPSB7fTsKLQotICAg
IGZvciAoIHR5cGUgaW4gZXZlbnRzICkgewotICAgIGZvciAoIGkgPSAwLCBsID0gZXZlbnRzWyB0
eXBlIF0ubGVuZ3RoOyBpIDwgbDsgaSsrICkgewotICAgIGpRdWVyeS5ldmVudC5hZGQoIGRlc3Qs
IHR5cGUsIGV2ZW50c1sgdHlwZSBdWyBpIF0gKTsKLSAgICB9Ci0gICAgfQotICAgIH0KLQotICAg
IC8vIG1ha2UgdGhlIGNsb25lZCBwdWJsaWMgZGF0YSBvYmplY3QgYSBjb3B5IGZyb20gdGhlIG9y
aWdpbmFsCi0gICAgaWYgKCBjdXJEYXRhLmRhdGEgKSB7Ci0gICAgY3VyRGF0YS5kYXRhID0galF1
ZXJ5LmV4dGVuZCgge30sIGN1ckRhdGEuZGF0YSApOwotICAgIH0KLX0KLQotZnVuY3Rpb24gZml4
Q2xvbmVOb2RlSXNzdWVzKCBzcmMsIGRlc3QgKSB7Ci0gICAgdmFyIG5vZGVOYW1lLCBlLCBkYXRh
OwotCi0gICAgLy8gV2UgZG8gbm90IG5lZWQgdG8gZG8gYW55dGhpbmcgZm9yIG5vbi1FbGVtZW50
cwotICAgIGlmICggZGVzdC5ub2RlVHlwZSAhPT0gMSApIHsKLSAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgbm9kZU5hbWUgPSBkZXN0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7Ci0KLSAgICAvLyBJ
RTYtOCBjb3BpZXMgZXZlbnRzIGJvdW5kIHZpYSBhdHRhY2hFdmVudCB3aGVuIHVzaW5nIGNsb25l
Tm9kZS4KLSAgICBpZiAoICFqUXVlcnkuc3VwcG9ydC5ub0Nsb25lRXZlbnQgJiYgZGVzdFsgalF1
ZXJ5LmV4cGFuZG8gXSApIHsKLSAgICBkYXRhID0galF1ZXJ5Ll9kYXRhKCBkZXN0ICk7Ci0KLSAg
ICBmb3IgKCBlIGluIGRhdGEuZXZlbnRzICkgewotICAgIGpRdWVyeS5yZW1vdmVFdmVudCggZGVz
dCwgZSwgZGF0YS5oYW5kbGUgKTsKLSAgICB9Ci0KLSAgICAvLyBFdmVudCBkYXRhIGdldHMgcmVm
ZXJlbmNlZCBpbnN0ZWFkIG9mIGNvcGllZCBpZiB0aGUgZXhwYW5kbyBnZXRzIGNvcGllZCB0b28K
LSAgICBkZXN0LnJlbW92ZUF0dHJpYnV0ZSggalF1ZXJ5LmV4cGFuZG8gKTsKLSAgICB9Ci0KLSAg
ICAvLyBJRSBibGFua3MgY29udGVudHMgd2hlbiBjbG9uaW5nIHNjcmlwdHMsIGFuZCB0cmllcyB0
byBldmFsdWF0ZSBuZXdseS1zZXQgdGV4dAotICAgIGlmICggbm9kZU5hbWUgPT09ICJzY3JpcHQi
ICYmIGRlc3QudGV4dCAhPT0gc3JjLnRleHQgKSB7Ci0gICAgZGlzYWJsZVNjcmlwdCggZGVzdCAp
LnRleHQgPSBzcmMudGV4dDsKLSAgICByZXN0b3JlU2NyaXB0KCBkZXN0ICk7Ci0KLSAgICAvLyBJ
RTYtMTAgaW1wcm9wZXJseSBjbG9uZXMgY2hpbGRyZW4gb2Ygb2JqZWN0IGVsZW1lbnRzIHVzaW5n
IGNsYXNzaWQuCi0gICAgLy8gSUUxMCB0aHJvd3MgTm9Nb2RpZmljYXRpb25BbGxvd2VkRXJyb3Ig
aWYgcGFyZW50IGlzIG51bGwsICMxMjEzMi4KLSAgICB9IGVsc2UgaWYgKCBub2RlTmFtZSA9PT0g
Im9iamVjdCIgKSB7Ci0gICAgaWYgKCBkZXN0LnBhcmVudE5vZGUgKSB7Ci0gICAgZGVzdC5vdXRl
ckhUTUwgPSBzcmMub3V0ZXJIVE1MOwotICAgIH0KLQotICAgIC8vIFRoaXMgcGF0aCBhcHBlYXJz
IHVuYXZvaWRhYmxlIGZvciBJRTkuIFdoZW4gY2xvbmluZyBhbiBvYmplY3QKLSAgICAvLyBlbGVt
ZW50IGluIElFOSwgdGhlIG91dGVySFRNTCBzdHJhdGVneSBhYm92ZSBpcyBub3Qgc3VmZmljaWVu
dC4KLSAgICAvLyBJZiB0aGUgc3JjIGhhcyBpbm5lckhUTUwgYW5kIHRoZSBkZXN0aW5hdGlvbiBk
b2VzIG5vdCwKLSAgICAvLyBjb3B5IHRoZSBzcmMuaW5uZXJIVE1MIGludG8gdGhlIGRlc3QuaW5u
ZXJIVE1MLiAjMTAzMjQKLSAgICBpZiAoIGpRdWVyeS5zdXBwb3J0Lmh0bWw1Q2xvbmUgJiYgKCBz
cmMuaW5uZXJIVE1MICYmICFqUXVlcnkudHJpbShkZXN0LmlubmVySFRNTCkgKSApIHsKLSAgICBk
ZXN0LmlubmVySFRNTCA9IHNyYy5pbm5lckhUTUw7Ci0gICAgfQotCi0gICAgfSBlbHNlIGlmICgg
bm9kZU5hbWUgPT09ICJpbnB1dCIgJiYgbWFuaXB1bGF0aW9uX3JjaGVja2FibGVUeXBlLnRlc3Qo
IHNyYy50eXBlICkgKSB7Ci0gICAgLy8gSUU2LTggZmFpbHMgdG8gcGVyc2lzdCB0aGUgY2hlY2tl
ZCBzdGF0ZSBvZiBhIGNsb25lZCBjaGVja2JveAotICAgIC8vIG9yIHJhZGlvIGJ1dHRvbi4gV29y
c2UsIElFNi03IGZhaWwgdG8gZ2l2ZSB0aGUgY2xvbmVkIGVsZW1lbnQKLSAgICAvLyBhIGNoZWNr
ZWQgYXBwZWFyYW5jZSBpZiB0aGUgZGVmYXVsdENoZWNrZWQgdmFsdWUgaXNuJ3QgYWxzbyBzZXQK
LQotICAgIGRlc3QuZGVmYXVsdENoZWNrZWQgPSBkZXN0LmNoZWNrZWQgPSBzcmMuY2hlY2tlZDsK
LQotICAgIC8vIElFNi03IGdldCBjb25mdXNlZCBhbmQgZW5kIHVwIHNldHRpbmcgdGhlIHZhbHVl
IG9mIGEgY2xvbmVkCi0gICAgLy8gY2hlY2tib3gvcmFkaW8gYnV0dG9uIHRvIGFuIGVtcHR5IHN0
cmluZyBpbnN0ZWFkIG9mICJvbiIKLSAgICBpZiAoIGRlc3QudmFsdWUgIT09IHNyYy52YWx1ZSAp
IHsKLSAgICBkZXN0LnZhbHVlID0gc3JjLnZhbHVlOwotICAgIH0KLQotICAgIC8vIElFNi04IGZh
aWxzIHRvIHJldHVybiB0aGUgc2VsZWN0ZWQgb3B0aW9uIHRvIHRoZSBkZWZhdWx0IHNlbGVjdGVk
Ci0gICAgLy8gc3RhdGUgd2hlbiBjbG9uaW5nIG9wdGlvbnMKLSAgICB9IGVsc2UgaWYgKCBub2Rl
TmFtZSA9PT0gIm9wdGlvbiIgKSB7Ci0gICAgZGVzdC5kZWZhdWx0U2VsZWN0ZWQgPSBkZXN0LnNl
bGVjdGVkID0gc3JjLmRlZmF1bHRTZWxlY3RlZDsKLQotICAgIC8vIElFNi04IGZhaWxzIHRvIHNl
dCB0aGUgZGVmYXVsdFZhbHVlIHRvIHRoZSBjb3JyZWN0IHZhbHVlIHdoZW4KLSAgICAvLyBjbG9u
aW5nIG90aGVyIHR5cGVzIG9mIGlucHV0IGZpZWxkcwotICAgIH0gZWxzZSBpZiAoIG5vZGVOYW1l
ID09PSAiaW5wdXQiIHx8IG5vZGVOYW1lID09PSAidGV4dGFyZWEiICkgewotICAgIGRlc3QuZGVm
YXVsdFZhbHVlID0gc3JjLmRlZmF1bHRWYWx1ZTsKLSAgICB9Ci19Ci0KLWpRdWVyeS5lYWNoKHsK
LSAgICBhcHBlbmRUbzogImFwcGVuZCIsCi0gICAgcHJlcGVuZFRvOiAicHJlcGVuZCIsCi0gICAg
aW5zZXJ0QmVmb3JlOiAiYmVmb3JlIiwKLSAgICBpbnNlcnRBZnRlcjogImFmdGVyIiwKLSAgICBy
ZXBsYWNlQWxsOiAicmVwbGFjZVdpdGgiCi19LCBmdW5jdGlvbiggbmFtZSwgb3JpZ2luYWwgKSB7
Ci0gICAgalF1ZXJ5LmZuWyBuYW1lIF0gPSBmdW5jdGlvbiggc2VsZWN0b3IgKSB7Ci0gICAgdmFy
IGVsZW1zLAotICAgIGkgPSAwLAotICAgIHJldCA9IFtdLAotICAgIGluc2VydCA9IGpRdWVyeSgg
c2VsZWN0b3IgKSwKLSAgICBsYXN0ID0gaW5zZXJ0Lmxlbmd0aCAtIDE7Ci0KLSAgICBmb3IgKCA7
IGkgPD0gbGFzdDsgaSsrICkgewotICAgIGVsZW1zID0gaSA9PT0gbGFzdCA/IHRoaXMgOiB0aGlz
LmNsb25lKHRydWUpOwotICAgIGpRdWVyeSggaW5zZXJ0W2ldIClbIG9yaWdpbmFsIF0oIGVsZW1z
ICk7Ci0KLSAgICAvLyBNb2Rlcm4gYnJvd3NlcnMgY2FuIGFwcGx5IGpRdWVyeSBjb2xsZWN0aW9u
cyBhcyBhcnJheXMsIGJ1dCBvbGRJRSBuZWVkcyBhIC5nZXQoKQotICAgIGNvcmVfcHVzaC5hcHBs
eSggcmV0LCBlbGVtcy5nZXQoKSApOwotICAgIH0KLQotICAgIHJldHVybiB0aGlzLnB1c2hTdGFj
ayggcmV0ICk7Ci0gICAgfTsKLX0pOwotCi1mdW5jdGlvbiBnZXRBbGwoIGNvbnRleHQsIHRhZyAp
IHsKLSAgICB2YXIgZWxlbXMsIGVsZW0sCi0gICAgaSA9IDAsCi0gICAgZm91bmQgPSB0eXBlb2Yg
Y29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSAhPT0gY29yZV9zdHJ1bmRlZmluZWQgPyBjb250
ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lKCB0YWcgfHwgIioiICkgOgotICAgIHR5cGVvZiBjb250
ZXh0LnF1ZXJ5U2VsZWN0b3JBbGwgIT09IGNvcmVfc3RydW5kZWZpbmVkID8gY29udGV4dC5xdWVy
eVNlbGVjdG9yQWxsKCB0YWcgfHwgIioiICkgOgotICAgIHVuZGVmaW5lZDsKLQotICAgIGlmICgg
IWZvdW5kICkgewotICAgIGZvciAoIGZvdW5kID0gW10sIGVsZW1zID0gY29udGV4dC5jaGlsZE5v
ZGVzIHx8IGNvbnRleHQ7IChlbGVtID0gZWxlbXNbaV0pICE9IG51bGw7IGkrKyApIHsKLSAgICBp
ZiAoICF0YWcgfHwgalF1ZXJ5Lm5vZGVOYW1lKCBlbGVtLCB0YWcgKSApIHsKLSAgICBmb3VuZC5w
dXNoKCBlbGVtICk7Ci0gICAgfSBlbHNlIHsKLSAgICBqUXVlcnkubWVyZ2UoIGZvdW5kLCBnZXRB
bGwoIGVsZW0sIHRhZyApICk7Ci0gICAgfQotICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gdGFn
ID09PSB1bmRlZmluZWQgfHwgdGFnICYmIGpRdWVyeS5ub2RlTmFtZSggY29udGV4dCwgdGFnICkg
PwotICAgIGpRdWVyeS5tZXJnZSggWyBjb250ZXh0IF0sIGZvdW5kICkgOgotICAgIGZvdW5kOwot
fQotCi0vLyBVc2VkIGluIGJ1aWxkRnJhZ21lbnQsIGZpeGVzIHRoZSBkZWZhdWx0Q2hlY2tlZCBw
cm9wZXJ0eQotZnVuY3Rpb24gZml4RGVmYXVsdENoZWNrZWQoIGVsZW0gKSB7Ci0gICAgaWYgKCBt
YW5pcHVsYXRpb25fcmNoZWNrYWJsZVR5cGUudGVzdCggZWxlbS50eXBlICkgKSB7Ci0gICAgZWxl
bS5kZWZhdWx0Q2hlY2tlZCA9IGVsZW0uY2hlY2tlZDsKLSAgICB9Ci19Ci0KLWpRdWVyeS5leHRl
bmQoewotICAgIGNsb25lOiBmdW5jdGlvbiggZWxlbSwgZGF0YUFuZEV2ZW50cywgZGVlcERhdGFB
bmRFdmVudHMgKSB7Ci0gICAgdmFyIGRlc3RFbGVtZW50cywgbm9kZSwgY2xvbmUsIGksIHNyY0Vs
ZW1lbnRzLAotICAgIGluUGFnZSA9IGpRdWVyeS5jb250YWlucyggZWxlbS5vd25lckRvY3VtZW50
LCBlbGVtICk7Ci0KLSAgICBpZiAoIGpRdWVyeS5zdXBwb3J0Lmh0bWw1Q2xvbmUgfHwgalF1ZXJ5
LmlzWE1MRG9jKGVsZW0pIHx8ICFybm9zaGltY2FjaGUudGVzdCggIjwiICsgZWxlbS5ub2RlTmFt
ZSArICI+IiApICkgewotICAgIGNsb25lID0gZWxlbS5jbG9uZU5vZGUoIHRydWUgKTsKLQotICAg
IC8vIElFPD04IGRvZXMgbm90IHByb3Blcmx5IGNsb25lIGRldGFjaGVkLCB1bmtub3duIGVsZW1l
bnQgbm9kZXMKLSAgICB9IGVsc2UgewotICAgIGZyYWdtZW50RGl2LmlubmVySFRNTCA9IGVsZW0u
b3V0ZXJIVE1MOwotICAgIGZyYWdtZW50RGl2LnJlbW92ZUNoaWxkKCBjbG9uZSA9IGZyYWdtZW50
RGl2LmZpcnN0Q2hpbGQgKTsKLSAgICB9Ci0KLSAgICBpZiAoICghalF1ZXJ5LnN1cHBvcnQubm9D
bG9uZUV2ZW50IHx8ICFqUXVlcnkuc3VwcG9ydC5ub0Nsb25lQ2hlY2tlZCkgJiYKLSAgICAoZWxl
bS5ub2RlVHlwZSA9PT0gMSB8fCBlbGVtLm5vZGVUeXBlID09PSAxMSkgJiYgIWpRdWVyeS5pc1hN
TERvYyhlbGVtKSApIHsKLQotICAgIC8vIFdlIGVzY2hldyBTaXp6bGUgaGVyZSBmb3IgcGVyZm9y
bWFuY2UgcmVhc29uczogaHR0cDovL2pzcGVyZi5jb20vZ2V0YWxsLXZzLXNpenpsZS8yCi0gICAg
ZGVzdEVsZW1lbnRzID0gZ2V0QWxsKCBjbG9uZSApOwotICAgIHNyY0VsZW1lbnRzID0gZ2V0QWxs
KCBlbGVtICk7Ci0KLSAgICAvLyBGaXggYWxsIElFIGNsb25pbmcgaXNzdWVzCi0gICAgZm9yICgg
aSA9IDA7IChub2RlID0gc3JjRWxlbWVudHNbaV0pICE9IG51bGw7ICsraSApIHsKLSAgICAvLyBF
bnN1cmUgdGhhdCB0aGUgZGVzdGluYXRpb24gbm9kZSBpcyBub3QgbnVsbDsgRml4ZXMgIzk1ODcK
LSAgICBpZiAoIGRlc3RFbGVtZW50c1tpXSApIHsKLSAgICBmaXhDbG9uZU5vZGVJc3N1ZXMoIG5v
ZGUsIGRlc3RFbGVtZW50c1tpXSApOwotICAgIH0KLSAgICB9Ci0gICAgfQotCi0gICAgLy8gQ29w
eSB0aGUgZXZlbnRzIGZyb20gdGhlIG9yaWdpbmFsIHRvIHRoZSBjbG9uZQotICAgIGlmICggZGF0
YUFuZEV2ZW50cyApIHsKLSAgICBpZiAoIGRlZXBEYXRhQW5kRXZlbnRzICkgewotICAgIHNyY0Vs
ZW1lbnRzID0gc3JjRWxlbWVudHMgfHwgZ2V0QWxsKCBlbGVtICk7Ci0gICAgZGVzdEVsZW1lbnRz
ID0gZGVzdEVsZW1lbnRzIHx8IGdldEFsbCggY2xvbmUgKTsKLQotICAgIGZvciAoIGkgPSAwOyAo
bm9kZSA9IHNyY0VsZW1lbnRzW2ldKSAhPSBudWxsOyBpKysgKSB7Ci0gICAgY2xvbmVDb3B5RXZl
bnQoIG5vZGUsIGRlc3RFbGVtZW50c1tpXSApOwotICAgIH0KLSAgICB9IGVsc2UgewotICAgIGNs
b25lQ29weUV2ZW50KCBlbGVtLCBjbG9uZSApOwotICAgIH0KLSAgICB9Ci0KLSAgICAvLyBQcmVz
ZXJ2ZSBzY3JpcHQgZXZhbHVhdGlvbiBoaXN0b3J5Ci0gICAgZGVzdEVsZW1lbnRzID0gZ2V0QWxs
KCBjbG9uZSwgInNjcmlwdCIgKTsKLSAgICBpZiAoIGRlc3RFbGVtZW50cy5sZW5ndGggPiAwICkg
ewotICAgIHNldEdsb2JhbEV2YWwoIGRlc3RFbGVtZW50cywgIWluUGFnZSAmJiBnZXRBbGwoIGVs
ZW0sICJzY3JpcHQiICkgKTsKLSAgICB9Ci0KLSAgICBkZXN0RWxlbWVudHMgPSBzcmNFbGVtZW50
cyA9IG5vZGUgPSBudWxsOwotCi0gICAgLy8gUmV0dXJuIHRoZSBjbG9uZWQgc2V0Ci0gICAgcmV0
dXJuIGNsb25lOwotICAgIH0sCi0KLSAgICBidWlsZEZyYWdtZW50OiBmdW5jdGlvbiggZWxlbXMs
IGNvbnRleHQsIHNjcmlwdHMsIHNlbGVjdGlvbiApIHsKLSAgICB2YXIgaiwgZWxlbSwgY29udGFp
bnMsCi0gICAgdG1wLCB0YWcsIHRib2R5LCB3cmFwLAotICAgIGwgPSBlbGVtcy5sZW5ndGgsCi0K
LSAgICAvLyBFbnN1cmUgYSBzYWZlIGZyYWdtZW50Ci0gICAgc2FmZSA9IGNyZWF0ZVNhZmVGcmFn
bWVudCggY29udGV4dCApLAotCi0gICAgbm9kZXMgPSBbXSwKLSAgICBpID0gMDsKLQotICAgIGZv
ciAoIDsgaSA8IGw7IGkrKyApIHsKLSAgICBlbGVtID0gZWxlbXNbIGkgXTsKLQotICAgIGlmICgg
ZWxlbSB8fCBlbGVtID09PSAwICkgewotCi0gICAgLy8gQWRkIG5vZGVzIGRpcmVjdGx5Ci0gICAg
aWYgKCBqUXVlcnkudHlwZSggZWxlbSApID09PSAib2JqZWN0IiApIHsKLSAgICBqUXVlcnkubWVy
Z2UoIG5vZGVzLCBlbGVtLm5vZGVUeXBlID8gWyBlbGVtIF0gOiBlbGVtICk7Ci0KLSAgICAvLyBD
b252ZXJ0IG5vbi1odG1sIGludG8gYSB0ZXh0IG5vZGUKLSAgICB9IGVsc2UgaWYgKCAhcmh0bWwu
dGVzdCggZWxlbSApICkgewotICAgIG5vZGVzLnB1c2goIGNvbnRleHQuY3JlYXRlVGV4dE5vZGUo
IGVsZW0gKSApOwotCi0gICAgLy8gQ29udmVydCBodG1sIGludG8gRE9NIG5vZGVzCi0gICAgfSBl
bHNlIHsKLSAgICB0bXAgPSB0bXAgfHwgc2FmZS5hcHBlbmRDaGlsZCggY29udGV4dC5jcmVhdGVF
bGVtZW50KCJkaXYiKSApOwotCi0gICAgLy8gRGVzZXJpYWxpemUgYSBzdGFuZGFyZCByZXByZXNl
bnRhdGlvbgotICAgIHRhZyA9ICggcnRhZ05hbWUuZXhlYyggZWxlbSApIHx8IFsiIiwgIiJdIClb
MV0udG9Mb3dlckNhc2UoKTsKLSAgICB3cmFwID0gd3JhcE1hcFsgdGFnIF0gfHwgd3JhcE1hcC5f
ZGVmYXVsdDsKLQotICAgIHRtcC5pbm5lckhUTUwgPSB3cmFwWzFdICsgZWxlbS5yZXBsYWNlKCBy
eGh0bWxUYWcsICI8JDE+PC8kMj4iICkgKyB3cmFwWzJdOwotCi0gICAgLy8gRGVzY2VuZCB0aHJv
dWdoIHdyYXBwZXJzIHRvIHRoZSByaWdodCBjb250ZW50Ci0gICAgaiA9IHdyYXBbMF07Ci0gICAg
d2hpbGUgKCBqLS0gKSB7Ci0gICAgdG1wID0gdG1wLmxhc3RDaGlsZDsKLSAgICB9Ci0KLSAgICAv
LyBNYW51YWxseSBhZGQgbGVhZGluZyB3aGl0ZXNwYWNlIHJlbW92ZWQgYnkgSUUKLSAgICBpZiAo
ICFqUXVlcnkuc3VwcG9ydC5sZWFkaW5nV2hpdGVzcGFjZSAmJiBybGVhZGluZ1doaXRlc3BhY2Uu
dGVzdCggZWxlbSApICkgewotICAgIG5vZGVzLnB1c2goIGNvbnRleHQuY3JlYXRlVGV4dE5vZGUo
IHJsZWFkaW5nV2hpdGVzcGFjZS5leGVjKCBlbGVtIClbMF0gKSApOwotICAgIH0KLQotICAgIC8v
IFJlbW92ZSBJRSdzIGF1dG9pbnNlcnRlZCA8dGJvZHk+IGZyb20gdGFibGUgZnJhZ21lbnRzCi0g
ICAgaWYgKCAhalF1ZXJ5LnN1cHBvcnQudGJvZHkgKSB7Ci0KLSAgICAvLyBTdHJpbmcgd2FzIGEg
PHRhYmxlPiwgKm1heSogaGF2ZSBzcHVyaW91cyA8dGJvZHk+Ci0gICAgZWxlbSA9IHRhZyA9PT0g
InRhYmxlIiAmJiAhcnRib2R5LnRlc3QoIGVsZW0gKSA/Ci0gICAgdG1wLmZpcnN0Q2hpbGQgOgot
Ci0gICAgLy8gU3RyaW5nIHdhcyBhIGJhcmUgPHRoZWFkPiBvciA8dGZvb3Q+Ci0gICAgd3JhcFsx
XSA9PT0gIjx0YWJsZT4iICYmICFydGJvZHkudGVzdCggZWxlbSApID8KLSAgICB0bXAgOgotICAg
IDA7Ci0KLSAgICBqID0gZWxlbSAmJiBlbGVtLmNoaWxkTm9kZXMubGVuZ3RoOwotICAgIHdoaWxl
ICggai0tICkgewotICAgIGlmICggalF1ZXJ5Lm5vZGVOYW1lKCAodGJvZHkgPSBlbGVtLmNoaWxk
Tm9kZXNbal0pLCAidGJvZHkiICkgJiYgIXRib2R5LmNoaWxkTm9kZXMubGVuZ3RoICkgewotICAg
IGVsZW0ucmVtb3ZlQ2hpbGQoIHRib2R5ICk7Ci0gICAgfQotICAgIH0KLSAgICB9Ci0KLSAgICBq
UXVlcnkubWVyZ2UoIG5vZGVzLCB0bXAuY2hpbGROb2RlcyApOwotCi0gICAgLy8gRml4ICMxMjM5
MiBmb3IgV2ViS2l0IGFuZCBJRSA+IDkKLSAgICB0bXAudGV4dENvbnRlbnQgPSAiIjsKLQotICAg
IC8vIEZpeCAjMTIzOTIgZm9yIG9sZElFCi0gICAgd2hpbGUgKCB0bXAuZmlyc3RDaGlsZCApIHsK
LSAgICB0bXAucmVtb3ZlQ2hpbGQoIHRtcC5maXJzdENoaWxkICk7Ci0gICAgfQotCi0gICAgLy8g
UmVtZW1iZXIgdGhlIHRvcC1sZXZlbCBjb250YWluZXIgZm9yIHByb3BlciBjbGVhbnVwCi0gICAg
dG1wID0gc2FmZS5sYXN0Q2hpbGQ7Ci0gICAgfQotICAgIH0KLSAgICB9Ci0KLSAgICAvLyBGaXgg
IzExMzU2OiBDbGVhciBlbGVtZW50cyBmcm9tIGZyYWdtZW50Ci0gICAgaWYgKCB0bXAgKSB7Ci0g
ICAgc2FmZS5yZW1vdmVDaGlsZCggdG1wICk7Ci0gICAgfQotCi0gICAgLy8gUmVzZXQgZGVmYXVs
dENoZWNrZWQgZm9yIGFueSByYWRpb3MgYW5kIGNoZWNrYm94ZXMKLSAgICAvLyBhYm91dCB0byBi
ZSBhcHBlbmRlZCB0byB0aGUgRE9NIGluIElFIDYvNyAoIzgwNjApCi0gICAgaWYgKCAhalF1ZXJ5
LnN1cHBvcnQuYXBwZW5kQ2hlY2tlZCApIHsKLSAgICBqUXVlcnkuZ3JlcCggZ2V0QWxsKCBub2Rl
cywgImlucHV0IiApLCBmaXhEZWZhdWx0Q2hlY2tlZCApOwotICAgIH0KLQotICAgIGkgPSAwOwot
ICAgIHdoaWxlICggKGVsZW0gPSBub2Rlc1sgaSsrIF0pICkgewotCi0gICAgLy8gIzQwODcgLSBJ
ZiBvcmlnaW4gYW5kIGRlc3RpbmF0aW9uIGVsZW1lbnRzIGFyZSB0aGUgc2FtZSwgYW5kIHRoaXMg
aXMKLSAgICAvLyB0aGF0IGVsZW1lbnQsIGRvIG5vdCBkbyBhbnl0aGluZwotICAgIGlmICggc2Vs
ZWN0aW9uICYmIGpRdWVyeS5pbkFycmF5KCBlbGVtLCBzZWxlY3Rpb24gKSAhPT0gLTEgKSB7Ci0g
ICAgY29udGludWU7Ci0gICAgfQotCi0gICAgY29udGFpbnMgPSBqUXVlcnkuY29udGFpbnMoIGVs
ZW0ub3duZXJEb2N1bWVudCwgZWxlbSApOwotCi0gICAgLy8gQXBwZW5kIHRvIGZyYWdtZW50Ci0g
ICAgdG1wID0gZ2V0QWxsKCBzYWZlLmFwcGVuZENoaWxkKCBlbGVtICksICJzY3JpcHQiICk7Ci0K
LSAgICAvLyBQcmVzZXJ2ZSBzY3JpcHQgZXZhbHVhdGlvbiBoaXN0b3J5Ci0gICAgaWYgKCBjb250
YWlucyApIHsKLSAgICBzZXRHbG9iYWxFdmFsKCB0bXAgKTsKLSAgICB9Ci0KLSAgICAvLyBDYXB0
dXJlIGV4ZWN1dGFibGVzCi0gICAgaWYgKCBzY3JpcHRzICkgewotICAgIGogPSAwOwotICAgIHdo
aWxlICggKGVsZW0gPSB0bXBbIGorKyBdKSApIHsKLSAgICBpZiAoIHJzY3JpcHRUeXBlLnRlc3Qo
IGVsZW0udHlwZSB8fCAiIiApICkgewotICAgIHNjcmlwdHMucHVzaCggZWxlbSApOwotICAgIH0K
LSAgICB9Ci0gICAgfQotICAgIH0KLQotICAgIHRtcCA9IG51bGw7Ci0KLSAgICByZXR1cm4gc2Fm
ZTsKLSAgICB9LAotCi0gICAgY2xlYW5EYXRhOiBmdW5jdGlvbiggZWxlbXMsIC8qIGludGVybmFs
ICovIGFjY2VwdERhdGEgKSB7Ci0gICAgdmFyIGVsZW0sIHR5cGUsIGlkLCBkYXRhLAotICAgIGkg
PSAwLAotICAgIGludGVybmFsS2V5ID0galF1ZXJ5LmV4cGFuZG8sCi0gICAgY2FjaGUgPSBqUXVl
cnkuY2FjaGUsCi0gICAgZGVsZXRlRXhwYW5kbyA9IGpRdWVyeS5zdXBwb3J0LmRlbGV0ZUV4cGFu
ZG8sCi0gICAgc3BlY2lhbCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsOwotCi0gICAgZm9yICggOyAo
ZWxlbSA9IGVsZW1zW2ldKSAhPSBudWxsOyBpKysgKSB7Ci0KLSAgICBpZiAoIGFjY2VwdERhdGEg
fHwgalF1ZXJ5LmFjY2VwdERhdGEoIGVsZW0gKSApIHsKLQotICAgIGlkID0gZWxlbVsgaW50ZXJu
YWxLZXkgXTsKLSAgICBkYXRhID0gaWQgJiYgY2FjaGVbIGlkIF07Ci0KLSAgICBpZiAoIGRhdGEg
KSB7Ci0gICAgaWYgKCBkYXRhLmV2ZW50cyApIHsKLSAgICBmb3IgKCB0eXBlIGluIGRhdGEuZXZl
bnRzICkgewotICAgIGlmICggc3BlY2lhbFsgdHlwZSBdICkgewotICAgIGpRdWVyeS5ldmVudC5y
ZW1vdmUoIGVsZW0sIHR5cGUgKTsKLQotICAgIC8vIFRoaXMgaXMgYSBzaG9ydGN1dCB0byBhdm9p
ZCBqUXVlcnkuZXZlbnQucmVtb3ZlJ3Mgb3ZlcmhlYWQKLSAgICB9IGVsc2UgewotICAgIGpRdWVy
eS5yZW1vdmVFdmVudCggZWxlbSwgdHlwZSwgZGF0YS5oYW5kbGUgKTsKLSAgICB9Ci0gICAgfQot
ICAgIH0KLQotICAgIC8vIFJlbW92ZSBjYWNoZSBvbmx5IGlmIGl0IHdhcyBub3QgYWxyZWFkeSBy
ZW1vdmVkIGJ5IGpRdWVyeS5ldmVudC5yZW1vdmUKLSAgICBpZiAoIGNhY2hlWyBpZCBdICkgewot
Ci0gICAgZGVsZXRlIGNhY2hlWyBpZCBdOwotCi0gICAgLy8gSUUgZG9lcyBub3QgYWxsb3cgdXMg
dG8gZGVsZXRlIGV4cGFuZG8gcHJvcGVydGllcyBmcm9tIG5vZGVzLAotICAgIC8vIG5vciBkb2Vz
IGl0IGhhdmUgYSByZW1vdmVBdHRyaWJ1dGUgZnVuY3Rpb24gb24gRG9jdW1lbnQgbm9kZXM7Ci0g
ICAgLy8gd2UgbXVzdCBoYW5kbGUgYWxsIG9mIHRoZXNlIGNhc2VzCi0gICAgaWYgKCBkZWxldGVF
eHBhbmRvICkgewotICAgIGRlbGV0ZSBlbGVtWyBpbnRlcm5hbEtleSBdOwotCi0gICAgfSBlbHNl
IGlmICggdHlwZW9mIGVsZW0ucmVtb3ZlQXR0cmlidXRlICE9PSBjb3JlX3N0cnVuZGVmaW5lZCAp
IHsKLSAgICBlbGVtLnJlbW92ZUF0dHJpYnV0ZSggaW50ZXJuYWxLZXkgKTsKLQotICAgIH0gZWxz
ZSB7Ci0gICAgZWxlbVsgaW50ZXJuYWxLZXkgXSA9IG51bGw7Ci0gICAgfQotCi0gICAgY29yZV9k
ZWxldGVkSWRzLnB1c2goIGlkICk7Ci0gICAgfQotICAgIH0KLSAgICB9Ci0gICAgfQotICAgIH0K
LX0pOwotdmFyIGlmcmFtZSwgZ2V0U3R5bGVzLCBjdXJDU1MsCi0gICAgcmFscGhhID0gL2FscGhh
XChbXildKlwpL2ksCi0gICAgcm9wYWNpdHkgPSAvb3BhY2l0eVxzKj1ccyooW14pXSopLywKLSAg
ICBycG9zaXRpb24gPSAvXih0b3B8cmlnaHR8Ym90dG9tfGxlZnQpJC8sCi0gICAgLy8gc3dhcHBh
YmxlIGlmIGRpc3BsYXkgaXMgbm9uZSBvciBzdGFydHMgd2l0aCB0YWJsZSBleGNlcHQgInRhYmxl
IiwgInRhYmxlLWNlbGwiLCBvciAidGFibGUtY2FwdGlvbiIKLSAgICAvLyBzZWUgaGVyZSBmb3Ig
ZGlzcGxheSB2YWx1ZXM6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3Mv
Q1NTL2Rpc3BsYXkKLSAgICByZGlzcGxheXN3YXAgPSAvXihub25lfHRhYmxlKD8hLWNbZWFdKS4r
KS8sCi0gICAgcm1hcmdpbiA9IC9ebWFyZ2luLywKLSAgICBybnVtc3BsaXQgPSBuZXcgUmVnRXhw
KCAiXigiICsgY29yZV9wbnVtICsgIikoLiopJCIsICJpIiApLAotICAgIHJudW1ub25weCA9IG5l
dyBSZWdFeHAoICJeKCIgKyBjb3JlX3BudW0gKyAiKSg/IXB4KVthLXolXSskIiwgImkiICksCi0g
ICAgcnJlbE51bSA9IG5ldyBSZWdFeHAoICJeKFsrLV0pPSgiICsgY29yZV9wbnVtICsgIikiLCAi
aSIgKSwKLSAgICBlbGVtZGlzcGxheSA9IHsgQk9EWTogImJsb2NrIiB9LAotCi0gICAgY3NzU2hv
dyA9IHsgcG9zaXRpb246ICJhYnNvbHV0ZSIsIHZpc2liaWxpdHk6ICJoaWRkZW4iLCBkaXNwbGF5
OiAiYmxvY2siIH0sCi0gICAgY3NzTm9ybWFsVHJhbnNmb3JtID0gewotICAgIGxldHRlclNwYWNp
bmc6IDAsCi0gICAgZm9udFdlaWdodDogNDAwCi0gICAgfSwKLQotICAgIGNzc0V4cGFuZCA9IFsg
IlRvcCIsICJSaWdodCIsICJCb3R0b20iLCAiTGVmdCIgXSwKLSAgICBjc3NQcmVmaXhlcyA9IFsg
IldlYmtpdCIsICJPIiwgIk1veiIsICJtcyIgXTsKLQotLy8gcmV0dXJuIGEgY3NzIHByb3BlcnR5
IG1hcHBlZCB0byBhIHBvdGVudGlhbGx5IHZlbmRvciBwcmVmaXhlZCBwcm9wZXJ0eQotZnVuY3Rp
b24gdmVuZG9yUHJvcE5hbWUoIHN0eWxlLCBuYW1lICkgewotCi0gICAgLy8gc2hvcnRjdXQgZm9y
IG5hbWVzIHRoYXQgYXJlIG5vdCB2ZW5kb3IgcHJlZml4ZWQKLSAgICBpZiAoIG5hbWUgaW4gc3R5
bGUgKSB7Ci0gICAgcmV0dXJuIG5hbWU7Ci0gICAgfQotCi0gICAgLy8gY2hlY2sgZm9yIHZlbmRv
ciBwcmVmaXhlZCBuYW1lcwotICAgIHZhciBjYXBOYW1lID0gbmFtZS5jaGFyQXQoMCkudG9VcHBl
ckNhc2UoKSArIG5hbWUuc2xpY2UoMSksCi0gICAgb3JpZ05hbWUgPSBuYW1lLAotICAgIGkgPSBj
c3NQcmVmaXhlcy5sZW5ndGg7Ci0KLSAgICB3aGlsZSAoIGktLSApIHsKLSAgICBuYW1lID0gY3Nz
UHJlZml4ZXNbIGkgXSArIGNhcE5hbWU7Ci0gICAgaWYgKCBuYW1lIGluIHN0eWxlICkgewotICAg
IHJldHVybiBuYW1lOwotICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gb3JpZ05hbWU7Ci19Ci0K
LWZ1bmN0aW9uIGlzSGlkZGVuKCBlbGVtLCBlbCApIHsKLSAgICAvLyBpc0hpZGRlbiBtaWdodCBi
ZSBjYWxsZWQgZnJvbSBqUXVlcnkjZmlsdGVyIGZ1bmN0aW9uOwotICAgIC8vIGluIHRoYXQgY2Fz
ZSwgZWxlbWVudCB3aWxsIGJlIHNlY29uZCBhcmd1bWVudAotICAgIGVsZW0gPSBlbCB8fCBlbGVt
OwotICAgIHJldHVybiBqUXVlcnkuY3NzKCBlbGVtLCAiZGlzcGxheSIgKSA9PT0gIm5vbmUiIHx8
ICFqUXVlcnkuY29udGFpbnMoIGVsZW0ub3duZXJEb2N1bWVudCwgZWxlbSApOwotfQotCi1mdW5j
dGlvbiBzaG93SGlkZSggZWxlbWVudHMsIHNob3cgKSB7Ci0gICAgdmFyIGRpc3BsYXksIGVsZW0s
IGhpZGRlbiwKLSAgICB2YWx1ZXMgPSBbXSwKLSAgICBpbmRleCA9IDAsCi0gICAgbGVuZ3RoID0g
ZWxlbWVudHMubGVuZ3RoOwotCi0gICAgZm9yICggOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKyAp
IHsKLSAgICBlbGVtID0gZWxlbWVudHNbIGluZGV4IF07Ci0gICAgaWYgKCAhZWxlbS5zdHlsZSAp
IHsKLSAgICBjb250aW51ZTsKLSAgICB9Ci0KLSAgICB2YWx1ZXNbIGluZGV4IF0gPSBqUXVlcnku
X2RhdGEoIGVsZW0sICJvbGRkaXNwbGF5IiApOwotICAgIGRpc3BsYXkgPSBlbGVtLnN0eWxlLmRp
c3BsYXk7Ci0gICAgaWYgKCBzaG93ICkgewotICAgIC8vIFJlc2V0IHRoZSBpbmxpbmUgZGlzcGxh
eSBvZiB0aGlzIGVsZW1lbnQgdG8gbGVhcm4gaWYgaXQgaXMKLSAgICAvLyBiZWluZyBoaWRkZW4g
YnkgY2FzY2FkZWQgcnVsZXMgb3Igbm90Ci0gICAgaWYgKCAhdmFsdWVzWyBpbmRleCBdICYmIGRp
c3BsYXkgPT09ICJub25lIiApIHsKLSAgICBlbGVtLnN0eWxlLmRpc3BsYXkgPSAiIjsKLSAgICB9
Ci0KLSAgICAvLyBTZXQgZWxlbWVudHMgd2hpY2ggaGF2ZSBiZWVuIG92ZXJyaWRkZW4gd2l0aCBk
aXNwbGF5OiBub25lCi0gICAgLy8gaW4gYSBzdHlsZXNoZWV0IHRvIHdoYXRldmVyIHRoZSBkZWZh
dWx0IGJyb3dzZXIgc3R5bGUgaXMKLSAgICAvLyBmb3Igc3VjaCBhbiBlbGVtZW50Ci0gICAgaWYg
KCBlbGVtLnN0eWxlLmRpc3BsYXkgPT09ICIiICYmIGlzSGlkZGVuKCBlbGVtICkgKSB7Ci0gICAg
dmFsdWVzWyBpbmRleCBdID0galF1ZXJ5Ll9kYXRhKCBlbGVtLCAib2xkZGlzcGxheSIsIGNzc19k
ZWZhdWx0RGlzcGxheShlbGVtLm5vZGVOYW1lKSApOwotICAgIH0KLSAgICB9IGVsc2UgewotCi0g
ICAgaWYgKCAhdmFsdWVzWyBpbmRleCBdICkgewotICAgIGhpZGRlbiA9IGlzSGlkZGVuKCBlbGVt
ICk7Ci0KLSAgICBpZiAoIGRpc3BsYXkgJiYgZGlzcGxheSAhPT0gIm5vbmUiIHx8ICFoaWRkZW4g
KSB7Ci0gICAgalF1ZXJ5Ll9kYXRhKCBlbGVtLCAib2xkZGlzcGxheSIsIGhpZGRlbiA/IGRpc3Bs
YXkgOiBqUXVlcnkuY3NzKCBlbGVtLCAiZGlzcGxheSIgKSApOwotICAgIH0KLSAgICB9Ci0gICAg
fQotICAgIH0KLQotICAgIC8vIFNldCB0aGUgZGlzcGxheSBvZiBtb3N0IG9mIHRoZSBlbGVtZW50
cyBpbiBhIHNlY29uZCBsb29wCi0gICAgLy8gdG8gYXZvaWQgdGhlIGNvbnN0YW50IHJlZmxvdwot
ICAgIGZvciAoIGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7Ci0gICAgZWxl
bSA9IGVsZW1lbnRzWyBpbmRleCBdOwotICAgIGlmICggIWVsZW0uc3R5bGUgKSB7Ci0gICAgY29u
dGludWU7Ci0gICAgfQotICAgIGlmICggIXNob3cgfHwgZWxlbS5zdHlsZS5kaXNwbGF5ID09PSAi
bm9uZSIgfHwgZWxlbS5zdHlsZS5kaXNwbGF5ID09PSAiIiApIHsKLSAgICBlbGVtLnN0eWxlLmRp
c3BsYXkgPSBzaG93ID8gdmFsdWVzWyBpbmRleCBdIHx8ICIiIDogIm5vbmUiOwotICAgIH0KLSAg
ICB9Ci0KLSAgICByZXR1cm4gZWxlbWVudHM7Ci19Ci0KLWpRdWVyeS5mbi5leHRlbmQoewotICAg
IGNzczogZnVuY3Rpb24oIG5hbWUsIHZhbHVlICkgewotICAgIHJldHVybiBqUXVlcnkuYWNjZXNz
KCB0aGlzLCBmdW5jdGlvbiggZWxlbSwgbmFtZSwgdmFsdWUgKSB7Ci0gICAgdmFyIGxlbiwgc3R5
bGVzLAotICAgIG1hcCA9IHt9LAotICAgIGkgPSAwOwotCi0gICAgaWYgKCBqUXVlcnkuaXNBcnJh
eSggbmFtZSApICkgewotICAgIHN0eWxlcyA9IGdldFN0eWxlcyggZWxlbSApOwotICAgIGxlbiA9
IG5hbWUubGVuZ3RoOwotCi0gICAgZm9yICggOyBpIDwgbGVuOyBpKysgKSB7Ci0gICAgbWFwWyBu
YW1lWyBpIF0gXSA9IGpRdWVyeS5jc3MoIGVsZW0sIG5hbWVbIGkgXSwgZmFsc2UsIHN0eWxlcyAp
OwotICAgIH0KLQotICAgIHJldHVybiBtYXA7Ci0gICAgfQotCi0gICAgcmV0dXJuIHZhbHVlICE9
PSB1bmRlZmluZWQgPwotICAgIGpRdWVyeS5zdHlsZSggZWxlbSwgbmFtZSwgdmFsdWUgKSA6Ci0g
ICAgalF1ZXJ5LmNzcyggZWxlbSwgbmFtZSApOwotICAgIH0sIG5hbWUsIHZhbHVlLCBhcmd1bWVu
dHMubGVuZ3RoID4gMSApOwotICAgIH0sCi0gICAgc2hvdzogZnVuY3Rpb24oKSB7Ci0gICAgcmV0
dXJuIHNob3dIaWRlKCB0aGlzLCB0cnVlICk7Ci0gICAgfSwKLSAgICBoaWRlOiBmdW5jdGlvbigp
IHsKLSAgICByZXR1cm4gc2hvd0hpZGUoIHRoaXMgKTsKLSAgICB9LAotICAgIHRvZ2dsZTogZnVu
Y3Rpb24oIHN0YXRlICkgewotICAgIHZhciBib29sID0gdHlwZW9mIHN0YXRlID09PSAiYm9vbGVh
biI7Ci0KLSAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewotICAgIGlmICggYm9vbCA/
IHN0YXRlIDogaXNIaWRkZW4oIHRoaXMgKSApIHsKLSAgICBqUXVlcnkoIHRoaXMgKS5zaG93KCk7
Ci0gICAgfSBlbHNlIHsKLSAgICBqUXVlcnkoIHRoaXMgKS5oaWRlKCk7Ci0gICAgfQotICAgIH0p
OwotICAgIH0KLX0pOwotCi1qUXVlcnkuZXh0ZW5kKHsKLSAgICAvLyBBZGQgaW4gc3R5bGUgcHJv
cGVydHkgaG9va3MgZm9yIG92ZXJyaWRpbmcgdGhlIGRlZmF1bHQKLSAgICAvLyBiZWhhdmlvciBv
ZiBnZXR0aW5nIGFuZCBzZXR0aW5nIGEgc3R5bGUgcHJvcGVydHkKLSAgICBjc3NIb29rczogewot
ICAgIG9wYWNpdHk6IHsKLSAgICBnZXQ6IGZ1bmN0aW9uKCBlbGVtLCBjb21wdXRlZCApIHsKLSAg
ICBpZiAoIGNvbXB1dGVkICkgewotICAgIC8vIFdlIHNob3VsZCBhbHdheXMgZ2V0IGEgbnVtYmVy
IGJhY2sgZnJvbSBvcGFjaXR5Ci0gICAgdmFyIHJldCA9IGN1ckNTUyggZWxlbSwgIm9wYWNpdHki
ICk7Ci0gICAgcmV0dXJuIHJldCA9PT0gIiIgPyAiMSIgOiByZXQ7Ci0gICAgfQotICAgIH0KLSAg
ICB9Ci0gICAgfSwKLQotICAgIC8vIEV4Y2x1ZGUgdGhlIGZvbGxvd2luZyBjc3MgcHJvcGVydGll
cyB0byBhZGQgcHgKLSAgICBjc3NOdW1iZXI6IHsKLSAgICAiY29sdW1uQ291bnQiOiB0cnVlLAot
ICAgICJmaWxsT3BhY2l0eSI6IHRydWUsCi0gICAgImZvbnRXZWlnaHQiOiB0cnVlLAotICAgICJs
aW5lSGVpZ2h0IjogdHJ1ZSwKLSAgICAib3BhY2l0eSI6IHRydWUsCi0gICAgIm9ycGhhbnMiOiB0
cnVlLAotICAgICJ3aWRvd3MiOiB0cnVlLAotICAgICJ6SW5kZXgiOiB0cnVlLAotICAgICJ6b29t
IjogdHJ1ZQotICAgIH0sCi0KLSAgICAvLyBBZGQgaW4gcHJvcGVydGllcyB3aG9zZSBuYW1lcyB5
b3Ugd2lzaCB0byBmaXggYmVmb3JlCi0gICAgLy8gc2V0dGluZyBvciBnZXR0aW5nIHRoZSB2YWx1
ZQotICAgIGNzc1Byb3BzOiB7Ci0gICAgLy8gbm9ybWFsaXplIGZsb2F0IGNzcyBwcm9wZXJ0eQot
ICAgICJmbG9hdCI6IGpRdWVyeS5zdXBwb3J0LmNzc0Zsb2F0ID8gImNzc0Zsb2F0IiA6ICJzdHls
ZUZsb2F0IgotICAgIH0sCi0KLSAgICAvLyBHZXQgYW5kIHNldCB0aGUgc3R5bGUgcHJvcGVydHkg
b24gYSBET00gTm9kZQotICAgIHN0eWxlOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgdmFsdWUsIGV4
dHJhICkgewotICAgIC8vIERvbid0IHNldCBzdHlsZXMgb24gdGV4dCBhbmQgY29tbWVudCBub2Rl
cwotICAgIGlmICggIWVsZW0gfHwgZWxlbS5ub2RlVHlwZSA9PT0gMyB8fCBlbGVtLm5vZGVUeXBl
ID09PSA4IHx8ICFlbGVtLnN0eWxlICkgewotICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBN
YWtlIHN1cmUgdGhhdCB3ZSdyZSB3b3JraW5nIHdpdGggdGhlIHJpZ2h0IG5hbWUKLSAgICB2YXIg
cmV0LCB0eXBlLCBob29rcywKLSAgICBvcmlnTmFtZSA9IGpRdWVyeS5jYW1lbENhc2UoIG5hbWUg
KSwKLSAgICBzdHlsZSA9IGVsZW0uc3R5bGU7Ci0KLSAgICBuYW1lID0galF1ZXJ5LmNzc1Byb3Bz
WyBvcmlnTmFtZSBdIHx8ICggalF1ZXJ5LmNzc1Byb3BzWyBvcmlnTmFtZSBdID0gdmVuZG9yUHJv
cE5hbWUoIHN0eWxlLCBvcmlnTmFtZSApICk7Ci0KLSAgICAvLyBnZXRzIGhvb2sgZm9yIHRoZSBw
cmVmaXhlZCB2ZXJzaW9uCi0gICAgLy8gZm9sbG93ZWQgYnkgdGhlIHVucHJlZml4ZWQgdmVyc2lv
bgotICAgIGhvb2tzID0galF1ZXJ5LmNzc0hvb2tzWyBuYW1lIF0gfHwgalF1ZXJ5LmNzc0hvb2tz
WyBvcmlnTmFtZSBdOwotCi0gICAgLy8gQ2hlY2sgaWYgd2UncmUgc2V0dGluZyBhIHZhbHVlCi0g
ICAgaWYgKCB2YWx1ZSAhPT0gdW5kZWZpbmVkICkgewotICAgIHR5cGUgPSB0eXBlb2YgdmFsdWU7
Ci0KLSAgICAvLyBjb252ZXJ0IHJlbGF0aXZlIG51bWJlciBzdHJpbmdzICgrPSBvciAtPSkgdG8g
cmVsYXRpdmUgbnVtYmVycy4gIzczNDUKLSAgICBpZiAoIHR5cGUgPT09ICJzdHJpbmciICYmIChy
ZXQgPSBycmVsTnVtLmV4ZWMoIHZhbHVlICkpICkgewotICAgIHZhbHVlID0gKCByZXRbMV0gKyAx
ICkgKiByZXRbMl0gKyBwYXJzZUZsb2F0KCBqUXVlcnkuY3NzKCBlbGVtLCBuYW1lICkgKTsKLSAg
ICAvLyBGaXhlcyBidWcgIzkyMzcKLSAgICB0eXBlID0gIm51bWJlciI7Ci0gICAgfQotCi0gICAg
Ly8gTWFrZSBzdXJlIHRoYXQgTmFOIGFuZCBudWxsIHZhbHVlcyBhcmVuJ3Qgc2V0LiBTZWU6ICM3
MTE2Ci0gICAgaWYgKCB2YWx1ZSA9PSBudWxsIHx8IHR5cGUgPT09ICJudW1iZXIiICYmIGlzTmFO
KCB2YWx1ZSApICkgewotICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBJZiBhIG51bWJlciB3
YXMgcGFzc2VkIGluLCBhZGQgJ3B4JyB0byB0aGUgKGV4Y2VwdCBmb3IgY2VydGFpbiBDU1MgcHJv
cGVydGllcykKLSAgICBpZiAoIHR5cGUgPT09ICJudW1iZXIiICYmICFqUXVlcnkuY3NzTnVtYmVy
WyBvcmlnTmFtZSBdICkgewotICAgIHZhbHVlICs9ICJweCI7Ci0gICAgfQotCi0gICAgLy8gRml4
ZXMgIzg5MDgsIGl0IGNhbiBiZSBkb25lIG1vcmUgY29ycmVjdGx5IGJ5IHNwZWNpZmluZyBzZXR0
ZXJzIGluIGNzc0hvb2tzLAotICAgIC8vIGJ1dCBpdCB3b3VsZCBtZWFuIHRvIGRlZmluZSBlaWdo
dCAoZm9yIGV2ZXJ5IHByb2JsZW1hdGljIHByb3BlcnR5KSBpZGVudGljYWwgZnVuY3Rpb25zCi0g
ICAgaWYgKCAhalF1ZXJ5LnN1cHBvcnQuY2xlYXJDbG9uZVN0eWxlICYmIHZhbHVlID09PSAiIiAm
JiBuYW1lLmluZGV4T2YoImJhY2tncm91bmQiKSA9PT0gMCApIHsKLSAgICBzdHlsZVsgbmFtZSBd
ID0gImluaGVyaXQiOwotICAgIH0KLQotICAgIC8vIElmIGEgaG9vayB3YXMgcHJvdmlkZWQsIHVz
ZSB0aGF0IHZhbHVlLCBvdGhlcndpc2UganVzdCBzZXQgdGhlIHNwZWNpZmllZCB2YWx1ZQotICAg
IGlmICggIWhvb2tzIHx8ICEoInNldCIgaW4gaG9va3MpIHx8ICh2YWx1ZSA9IGhvb2tzLnNldCgg
ZWxlbSwgdmFsdWUsIGV4dHJhICkpICE9PSB1bmRlZmluZWQgKSB7Ci0KLSAgICAvLyBXcmFwcGVk
IHRvIHByZXZlbnQgSUUgZnJvbSB0aHJvd2luZyBlcnJvcnMgd2hlbiAnaW52YWxpZCcgdmFsdWVz
IGFyZSBwcm92aWRlZAotICAgIC8vIEZpeGVzIGJ1ZyAjNTUwOQotICAgIHRyeSB7Ci0gICAgc3R5
bGVbIG5hbWUgXSA9IHZhbHVlOwotICAgIH0gY2F0Y2goZSkge30KLSAgICB9Ci0KLSAgICB9IGVs
c2UgewotICAgIC8vIElmIGEgaG9vayB3YXMgcHJvdmlkZWQgZ2V0IHRoZSBub24tY29tcHV0ZWQg
dmFsdWUgZnJvbSB0aGVyZQotICAgIGlmICggaG9va3MgJiYgImdldCIgaW4gaG9va3MgJiYgKHJl
dCA9IGhvb2tzLmdldCggZWxlbSwgZmFsc2UsIGV4dHJhICkpICE9PSB1bmRlZmluZWQgKSB7Ci0g
ICAgcmV0dXJuIHJldDsKLSAgICB9Ci0KLSAgICAvLyBPdGhlcndpc2UganVzdCBnZXQgdGhlIHZh
bHVlIGZyb20gdGhlIHN0eWxlIG9iamVjdAotICAgIHJldHVybiBzdHlsZVsgbmFtZSBdOwotICAg
IH0KLSAgICB9LAotCi0gICAgY3NzOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgZXh0cmEsIHN0eWxl
cyApIHsKLSAgICB2YXIgbnVtLCB2YWwsIGhvb2tzLAotICAgIG9yaWdOYW1lID0galF1ZXJ5LmNh
bWVsQ2FzZSggbmFtZSApOwotCi0gICAgLy8gTWFrZSBzdXJlIHRoYXQgd2UncmUgd29ya2luZyB3
aXRoIHRoZSByaWdodCBuYW1lCi0gICAgbmFtZSA9IGpRdWVyeS5jc3NQcm9wc1sgb3JpZ05hbWUg
XSB8fCAoIGpRdWVyeS5jc3NQcm9wc1sgb3JpZ05hbWUgXSA9IHZlbmRvclByb3BOYW1lKCBlbGVt
LnN0eWxlLCBvcmlnTmFtZSApICk7Ci0KLSAgICAvLyBnZXRzIGhvb2sgZm9yIHRoZSBwcmVmaXhl
ZCB2ZXJzaW9uCi0gICAgLy8gZm9sbG93ZWQgYnkgdGhlIHVucHJlZml4ZWQgdmVyc2lvbgotICAg
IGhvb2tzID0galF1ZXJ5LmNzc0hvb2tzWyBuYW1lIF0gfHwgalF1ZXJ5LmNzc0hvb2tzWyBvcmln
TmFtZSBdOwotCi0gICAgLy8gSWYgYSBob29rIHdhcyBwcm92aWRlZCBnZXQgdGhlIGNvbXB1dGVk
IHZhbHVlIGZyb20gdGhlcmUKLSAgICBpZiAoIGhvb2tzICYmICJnZXQiIGluIGhvb2tzICkgewot
ICAgIHZhbCA9IGhvb2tzLmdldCggZWxlbSwgdHJ1ZSwgZXh0cmEgKTsKLSAgICB9Ci0KLSAgICAv
LyBPdGhlcndpc2UsIGlmIGEgd2F5IHRvIGdldCB0aGUgY29tcHV0ZWQgdmFsdWUgZXhpc3RzLCB1
c2UgdGhhdAotICAgIGlmICggdmFsID09PSB1bmRlZmluZWQgKSB7Ci0gICAgdmFsID0gY3VyQ1NT
KCBlbGVtLCBuYW1lLCBzdHlsZXMgKTsKLSAgICB9Ci0KLSAgICAvL2NvbnZlcnQgIm5vcm1hbCIg
dG8gY29tcHV0ZWQgdmFsdWUKLSAgICBpZiAoIHZhbCA9PT0gIm5vcm1hbCIgJiYgbmFtZSBpbiBj
c3NOb3JtYWxUcmFuc2Zvcm0gKSB7Ci0gICAgdmFsID0gY3NzTm9ybWFsVHJhbnNmb3JtWyBuYW1l
IF07Ci0gICAgfQotCi0gICAgLy8gUmV0dXJuLCBjb252ZXJ0aW5nIHRvIG51bWJlciBpZiBmb3Jj
ZWQgb3IgYSBxdWFsaWZpZXIgd2FzIHByb3ZpZGVkIGFuZCB2YWwgbG9va3MgbnVtZXJpYwotICAg
IGlmICggZXh0cmEgPT09ICIiIHx8IGV4dHJhICkgewotICAgIG51bSA9IHBhcnNlRmxvYXQoIHZh
bCApOwotICAgIHJldHVybiBleHRyYSA9PT0gdHJ1ZSB8fCBqUXVlcnkuaXNOdW1lcmljKCBudW0g
KSA/IG51bSB8fCAwIDogdmFsOwotICAgIH0KLSAgICByZXR1cm4gdmFsOwotICAgIH0sCi0KLSAg
ICAvLyBBIG1ldGhvZCBmb3IgcXVpY2tseSBzd2FwcGluZyBpbi9vdXQgQ1NTIHByb3BlcnRpZXMg
dG8gZ2V0IGNvcnJlY3QgY2FsY3VsYXRpb25zCi0gICAgc3dhcDogZnVuY3Rpb24oIGVsZW0sIG9w
dGlvbnMsIGNhbGxiYWNrLCBhcmdzICkgewotICAgIHZhciByZXQsIG5hbWUsCi0gICAgb2xkID0g
e307Ci0KLSAgICAvLyBSZW1lbWJlciB0aGUgb2xkIHZhbHVlcywgYW5kIGluc2VydCB0aGUgbmV3
IG9uZXMKLSAgICBmb3IgKCBuYW1lIGluIG9wdGlvbnMgKSB7Ci0gICAgb2xkWyBuYW1lIF0gPSBl
bGVtLnN0eWxlWyBuYW1lIF07Ci0gICAgZWxlbS5zdHlsZVsgbmFtZSBdID0gb3B0aW9uc1sgbmFt
ZSBdOwotICAgIH0KLQotICAgIHJldCA9IGNhbGxiYWNrLmFwcGx5KCBlbGVtLCBhcmdzIHx8IFtd
ICk7Ci0KLSAgICAvLyBSZXZlcnQgdGhlIG9sZCB2YWx1ZXMKLSAgICBmb3IgKCBuYW1lIGluIG9w
dGlvbnMgKSB7Ci0gICAgZWxlbS5zdHlsZVsgbmFtZSBdID0gb2xkWyBuYW1lIF07Ci0gICAgfQot
Ci0gICAgcmV0dXJuIHJldDsKLSAgICB9Ci19KTsKLQotLy8gTk9URTogd2UndmUgaW5jbHVkZWQg
dGhlICJ3aW5kb3ciIGluIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlCi0vLyBiZWNhdXNlIGpzZG9t
IG9uIG5vZGUuanMgd2lsbCBicmVhayB3aXRob3V0IGl0LgotaWYgKCB3aW5kb3cuZ2V0Q29tcHV0
ZWRTdHlsZSApIHsKLSAgICBnZXRTdHlsZXMgPSBmdW5jdGlvbiggZWxlbSApIHsKLSAgICByZXR1
cm4gd2luZG93LmdldENvbXB1dGVkU3R5bGUoIGVsZW0sIG51bGwgKTsKLSAgICB9OwotCi0gICAg
Y3VyQ1NTID0gZnVuY3Rpb24oIGVsZW0sIG5hbWUsIF9jb21wdXRlZCApIHsKLSAgICB2YXIgd2lk
dGgsIG1pbldpZHRoLCBtYXhXaWR0aCwKLSAgICBjb21wdXRlZCA9IF9jb21wdXRlZCB8fCBnZXRT
dHlsZXMoIGVsZW0gKSwKLQotICAgIC8vIGdldFByb3BlcnR5VmFsdWUgaXMgb25seSBuZWVkZWQg
Zm9yIC5jc3MoJ2ZpbHRlcicpIGluIElFOSwgc2VlICMxMjUzNwotICAgIHJldCA9IGNvbXB1dGVk
ID8gY29tcHV0ZWQuZ2V0UHJvcGVydHlWYWx1ZSggbmFtZSApIHx8IGNvbXB1dGVkWyBuYW1lIF0g
OiB1bmRlZmluZWQsCi0gICAgc3R5bGUgPSBlbGVtLnN0eWxlOwotCi0gICAgaWYgKCBjb21wdXRl
ZCApIHsKLQotICAgIGlmICggcmV0ID09PSAiIiAmJiAhalF1ZXJ5LmNvbnRhaW5zKCBlbGVtLm93
bmVyRG9jdW1lbnQsIGVsZW0gKSApIHsKLSAgICByZXQgPSBqUXVlcnkuc3R5bGUoIGVsZW0sIG5h
bWUgKTsKLSAgICB9Ci0KLSAgICAvLyBBIHRyaWJ1dGUgdG8gdGhlICJhd2Vzb21lIGhhY2sgYnkg
RGVhbiBFZHdhcmRzIgotICAgIC8vIENocm9tZSA8IDE3IGFuZCBTYWZhcmkgNS4wIHVzZXMgImNv
bXB1dGVkIHZhbHVlIiBpbnN0ZWFkIG9mICJ1c2VkIHZhbHVlIiBmb3IgbWFyZ2luLXJpZ2h0Ci0g
ICAgLy8gU2FmYXJpIDUuMS43IChhdCBsZWFzdCkgcmV0dXJucyBwZXJjZW50YWdlIGZvciBhIGxh
cmdlciBzZXQgb2YgdmFsdWVzLCBidXQgd2lkdGggc2VlbXMgdG8gYmUgcmVsaWFibHkgcGl4ZWxz
Ci0gICAgLy8gdGhpcyBpcyBhZ2FpbnN0IHRoZSBDU1NPTSBkcmFmdCBzcGVjOiBodHRwOi8vZGV2
LnczLm9yZy9jc3N3Zy9jc3NvbS8jcmVzb2x2ZWQtdmFsdWVzCi0gICAgaWYgKCBybnVtbm9ucHgu
dGVzdCggcmV0ICkgJiYgcm1hcmdpbi50ZXN0KCBuYW1lICkgKSB7Ci0KLSAgICAvLyBSZW1lbWJl
ciB0aGUgb3JpZ2luYWwgdmFsdWVzCi0gICAgd2lkdGggPSBzdHlsZS53aWR0aDsKLSAgICBtaW5X
aWR0aCA9IHN0eWxlLm1pbldpZHRoOwotICAgIG1heFdpZHRoID0gc3R5bGUubWF4V2lkdGg7Ci0K
LSAgICAvLyBQdXQgaW4gdGhlIG5ldyB2YWx1ZXMgdG8gZ2V0IGEgY29tcHV0ZWQgdmFsdWUgb3V0
Ci0gICAgc3R5bGUubWluV2lkdGggPSBzdHlsZS5tYXhXaWR0aCA9IHN0eWxlLndpZHRoID0gcmV0
OwotICAgIHJldCA9IGNvbXB1dGVkLndpZHRoOwotCi0gICAgLy8gUmV2ZXJ0IHRoZSBjaGFuZ2Vk
IHZhbHVlcwotICAgIHN0eWxlLndpZHRoID0gd2lkdGg7Ci0gICAgc3R5bGUubWluV2lkdGggPSBt
aW5XaWR0aDsKLSAgICBzdHlsZS5tYXhXaWR0aCA9IG1heFdpZHRoOwotICAgIH0KLSAgICB9Ci0K
LSAgICByZXR1cm4gcmV0OwotICAgIH07Ci19IGVsc2UgaWYgKCBkb2N1bWVudC5kb2N1bWVudEVs
ZW1lbnQuY3VycmVudFN0eWxlICkgewotICAgIGdldFN0eWxlcyA9IGZ1bmN0aW9uKCBlbGVtICkg
ewotICAgIHJldHVybiBlbGVtLmN1cnJlbnRTdHlsZTsKLSAgICB9OwotCi0gICAgY3VyQ1NTID0g
ZnVuY3Rpb24oIGVsZW0sIG5hbWUsIF9jb21wdXRlZCApIHsKLSAgICB2YXIgbGVmdCwgcnMsIHJz
TGVmdCwKLSAgICBjb21wdXRlZCA9IF9jb21wdXRlZCB8fCBnZXRTdHlsZXMoIGVsZW0gKSwKLSAg
ICByZXQgPSBjb21wdXRlZCA/IGNvbXB1dGVkWyBuYW1lIF0gOiB1bmRlZmluZWQsCi0gICAgc3R5
bGUgPSBlbGVtLnN0eWxlOwotCi0gICAgLy8gQXZvaWQgc2V0dGluZyByZXQgdG8gZW1wdHkgc3Ry
aW5nIGhlcmUKLSAgICAvLyBzbyB3ZSBkb24ndCBkZWZhdWx0IHRvIGF1dG8KLSAgICBpZiAoIHJl
dCA9PSBudWxsICYmIHN0eWxlICYmIHN0eWxlWyBuYW1lIF0gKSB7Ci0gICAgcmV0ID0gc3R5bGVb
IG5hbWUgXTsKLSAgICB9Ci0KLSAgICAvLyBGcm9tIHRoZSBhd2Vzb21lIGhhY2sgYnkgRGVhbiBF
ZHdhcmRzCi0gICAgLy8gaHR0cDovL2VyaWsuZWFlLm5ldC9hcmNoaXZlcy8yMDA3LzA3LzI3LzE4
LjU0LjE1LyNjb21tZW50LTEwMjI5MQotCi0gICAgLy8gSWYgd2UncmUgbm90IGRlYWxpbmcgd2l0
aCBhIHJlZ3VsYXIgcGl4ZWwgbnVtYmVyCi0gICAgLy8gYnV0IGEgbnVtYmVyIHRoYXQgaGFzIGEg
d2VpcmQgZW5kaW5nLCB3ZSBuZWVkIHRvIGNvbnZlcnQgaXQgdG8gcGl4ZWxzCi0gICAgLy8gYnV0
IG5vdCBwb3NpdGlvbiBjc3MgYXR0cmlidXRlcywgYXMgdGhvc2UgYXJlIHByb3BvcnRpb25hbCB0
byB0aGUgcGFyZW50IGVsZW1lbnQgaW5zdGVhZAotICAgIC8vIGFuZCB3ZSBjYW4ndCBtZWFzdXJl
IHRoZSBwYXJlbnQgaW5zdGVhZCBiZWNhdXNlIGl0IG1pZ2h0IHRyaWdnZXIgYSAic3RhY2tpbmcg
ZG9sbHMiIHByb2JsZW0KLSAgICBpZiAoIHJudW1ub25weC50ZXN0KCByZXQgKSAmJiAhcnBvc2l0
aW9uLnRlc3QoIG5hbWUgKSApIHsKLQotICAgIC8vIFJlbWVtYmVyIHRoZSBvcmlnaW5hbCB2YWx1
ZXMKLSAgICBsZWZ0ID0gc3R5bGUubGVmdDsKLSAgICBycyA9IGVsZW0ucnVudGltZVN0eWxlOwot
ICAgIHJzTGVmdCA9IHJzICYmIHJzLmxlZnQ7Ci0KLSAgICAvLyBQdXQgaW4gdGhlIG5ldyB2YWx1
ZXMgdG8gZ2V0IGEgY29tcHV0ZWQgdmFsdWUgb3V0Ci0gICAgaWYgKCByc0xlZnQgKSB7Ci0gICAg
cnMubGVmdCA9IGVsZW0uY3VycmVudFN0eWxlLmxlZnQ7Ci0gICAgfQotICAgIHN0eWxlLmxlZnQg
PSBuYW1lID09PSAiZm9udFNpemUiID8gIjFlbSIgOiByZXQ7Ci0gICAgcmV0ID0gc3R5bGUucGl4
ZWxMZWZ0ICsgInB4IjsKLQotICAgIC8vIFJldmVydCB0aGUgY2hhbmdlZCB2YWx1ZXMKLSAgICBz
dHlsZS5sZWZ0ID0gbGVmdDsKLSAgICBpZiAoIHJzTGVmdCApIHsKLSAgICBycy5sZWZ0ID0gcnNM
ZWZ0OwotICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gcmV0ID09PSAiIiA/ICJhdXRvIiA6IHJl
dDsKLSAgICB9OwotfQotCi1mdW5jdGlvbiBzZXRQb3NpdGl2ZU51bWJlciggZWxlbSwgdmFsdWUs
IHN1YnRyYWN0ICkgewotICAgIHZhciBtYXRjaGVzID0gcm51bXNwbGl0LmV4ZWMoIHZhbHVlICk7
Ci0gICAgcmV0dXJuIG1hdGNoZXMgPwotICAgIC8vIEd1YXJkIGFnYWluc3QgdW5kZWZpbmVkICJz
dWJ0cmFjdCIsIGUuZy4sIHdoZW4gdXNlZCBhcyBpbiBjc3NIb29rcwotICAgIE1hdGgubWF4KCAw
LCBtYXRjaGVzWyAxIF0gLSAoIHN1YnRyYWN0IHx8IDAgKSApICsgKCBtYXRjaGVzWyAyIF0gfHwg
InB4IiApIDoKLSAgICB2YWx1ZTsKLX0KLQotZnVuY3Rpb24gYXVnbWVudFdpZHRoT3JIZWlnaHQo
IGVsZW0sIG5hbWUsIGV4dHJhLCBpc0JvcmRlckJveCwgc3R5bGVzICkgewotICAgIHZhciBpID0g
ZXh0cmEgPT09ICggaXNCb3JkZXJCb3ggPyAiYm9yZGVyIiA6ICJjb250ZW50IiApID8KLSAgICAv
LyBJZiB3ZSBhbHJlYWR5IGhhdmUgdGhlIHJpZ2h0IG1lYXN1cmVtZW50LCBhdm9pZCBhdWdtZW50
YXRpb24KLSAgICA0IDoKLSAgICAvLyBPdGhlcndpc2UgaW5pdGlhbGl6ZSBmb3IgaG9yaXpvbnRh
bCBvciB2ZXJ0aWNhbCBwcm9wZXJ0aWVzCi0gICAgbmFtZSA9PT0gIndpZHRoIiA/IDEgOiAwLAot
Ci0gICAgdmFsID0gMDsKLQotICAgIGZvciAoIDsgaSA8IDQ7IGkgKz0gMiApIHsKLSAgICAvLyBi
b3RoIGJveCBtb2RlbHMgZXhjbHVkZSBtYXJnaW4sIHNvIGFkZCBpdCBpZiB3ZSB3YW50IGl0Ci0g
ICAgaWYgKCBleHRyYSA9PT0gIm1hcmdpbiIgKSB7Ci0gICAgdmFsICs9IGpRdWVyeS5jc3MoIGVs
ZW0sIGV4dHJhICsgY3NzRXhwYW5kWyBpIF0sIHRydWUsIHN0eWxlcyApOwotICAgIH0KLQotICAg
IGlmICggaXNCb3JkZXJCb3ggKSB7Ci0gICAgLy8gYm9yZGVyLWJveCBpbmNsdWRlcyBwYWRkaW5n
LCBzbyByZW1vdmUgaXQgaWYgd2Ugd2FudCBjb250ZW50Ci0gICAgaWYgKCBleHRyYSA9PT0gImNv
bnRlbnQiICkgewotICAgIHZhbCAtPSBqUXVlcnkuY3NzKCBlbGVtLCAicGFkZGluZyIgKyBjc3NF
eHBhbmRbIGkgXSwgdHJ1ZSwgc3R5bGVzICk7Ci0gICAgfQotCi0gICAgLy8gYXQgdGhpcyBwb2lu
dCwgZXh0cmEgaXNuJ3QgYm9yZGVyIG5vciBtYXJnaW4sIHNvIHJlbW92ZSBib3JkZXIKLSAgICBp
ZiAoIGV4dHJhICE9PSAibWFyZ2luIiApIHsKLSAgICB2YWwgLT0galF1ZXJ5LmNzcyggZWxlbSwg
ImJvcmRlciIgKyBjc3NFeHBhbmRbIGkgXSArICJXaWR0aCIsIHRydWUsIHN0eWxlcyApOwotICAg
IH0KLSAgICB9IGVsc2UgewotICAgIC8vIGF0IHRoaXMgcG9pbnQsIGV4dHJhIGlzbid0IGNvbnRl
bnQsIHNvIGFkZCBwYWRkaW5nCi0gICAgdmFsICs9IGpRdWVyeS5jc3MoIGVsZW0sICJwYWRkaW5n
IiArIGNzc0V4cGFuZFsgaSBdLCB0cnVlLCBzdHlsZXMgKTsKLQotICAgIC8vIGF0IHRoaXMgcG9p
bnQsIGV4dHJhIGlzbid0IGNvbnRlbnQgbm9yIHBhZGRpbmcsIHNvIGFkZCBib3JkZXIKLSAgICBp
ZiAoIGV4dHJhICE9PSAicGFkZGluZyIgKSB7Ci0gICAgdmFsICs9IGpRdWVyeS5jc3MoIGVsZW0s
ICJib3JkZXIiICsgY3NzRXhwYW5kWyBpIF0gKyAiV2lkdGgiLCB0cnVlLCBzdHlsZXMgKTsKLSAg
ICB9Ci0gICAgfQotICAgIH0KLQotICAgIHJldHVybiB2YWw7Ci19Ci0KLWZ1bmN0aW9uIGdldFdp
ZHRoT3JIZWlnaHQoIGVsZW0sIG5hbWUsIGV4dHJhICkgewotCi0gICAgLy8gU3RhcnQgd2l0aCBv
ZmZzZXQgcHJvcGVydHksIHdoaWNoIGlzIGVxdWl2YWxlbnQgdG8gdGhlIGJvcmRlci1ib3ggdmFs
dWUKLSAgICB2YXIgdmFsdWVJc0JvcmRlckJveCA9IHRydWUsCi0gICAgdmFsID0gbmFtZSA9PT0g
IndpZHRoIiA/IGVsZW0ub2Zmc2V0V2lkdGggOiBlbGVtLm9mZnNldEhlaWdodCwKLSAgICBzdHls
ZXMgPSBnZXRTdHlsZXMoIGVsZW0gKSwKLSAgICBpc0JvcmRlckJveCA9IGpRdWVyeS5zdXBwb3J0
LmJveFNpemluZyAmJiBqUXVlcnkuY3NzKCBlbGVtLCAiYm94U2l6aW5nIiwgZmFsc2UsIHN0eWxl
cyApID09PSAiYm9yZGVyLWJveCI7Ci0KLSAgICAvLyBzb21lIG5vbi1odG1sIGVsZW1lbnRzIHJl
dHVybiB1bmRlZmluZWQgZm9yIG9mZnNldFdpZHRoLCBzbyBjaGVjayBmb3IgbnVsbC91bmRlZmlu
ZWQKLSAgICAvLyBzdmcgLSBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNn
aT9pZD02NDkyODUKLSAgICAvLyBNYXRoTUwgLSBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3Jn
L3Nob3dfYnVnLmNnaT9pZD00OTE2NjgKLSAgICBpZiAoIHZhbCA8PSAwIHx8IHZhbCA9PSBudWxs
ICkgewotICAgIC8vIEZhbGwgYmFjayB0byBjb21wdXRlZCB0aGVuIHVuY29tcHV0ZWQgY3NzIGlm
IG5lY2Vzc2FyeQotICAgIHZhbCA9IGN1ckNTUyggZWxlbSwgbmFtZSwgc3R5bGVzICk7Ci0gICAg
aWYgKCB2YWwgPCAwIHx8IHZhbCA9PSBudWxsICkgewotICAgIHZhbCA9IGVsZW0uc3R5bGVbIG5h
bWUgXTsKLSAgICB9Ci0KLSAgICAvLyBDb21wdXRlZCB1bml0IGlzIG5vdCBwaXhlbHMuIFN0b3Ag
aGVyZSBhbmQgcmV0dXJuLgotICAgIGlmICggcm51bW5vbnB4LnRlc3QodmFsKSApIHsKLSAgICBy
ZXR1cm4gdmFsOwotICAgIH0KLQotICAgIC8vIHdlIG5lZWQgdGhlIGNoZWNrIGZvciBzdHlsZSBp
biBjYXNlIGEgYnJvd3NlciB3aGljaCByZXR1cm5zIHVucmVsaWFibGUgdmFsdWVzCi0gICAgLy8g
Zm9yIGdldENvbXB1dGVkU3R5bGUgc2lsZW50bHkgZmFsbHMgYmFjayB0byB0aGUgcmVsaWFibGUg
ZWxlbS5zdHlsZQotICAgIHZhbHVlSXNCb3JkZXJCb3ggPSBpc0JvcmRlckJveCAmJiAoIGpRdWVy
eS5zdXBwb3J0LmJveFNpemluZ1JlbGlhYmxlIHx8IHZhbCA9PT0gZWxlbS5zdHlsZVsgbmFtZSBd
ICk7Ci0KLSAgICAvLyBOb3JtYWxpemUgIiIsIGF1dG8sIGFuZCBwcmVwYXJlIGZvciBleHRyYQot
ICAgIHZhbCA9IHBhcnNlRmxvYXQoIHZhbCApIHx8IDA7Ci0gICAgfQotCi0gICAgLy8gdXNlIHRo
ZSBhY3RpdmUgYm94LXNpemluZyBtb2RlbCB0byBhZGQvc3VidHJhY3QgaXJyZWxldmFudCBzdHls
ZXMKLSAgICByZXR1cm4gKCB2YWwgKwotICAgIGF1Z21lbnRXaWR0aE9ySGVpZ2h0KAotICAgIGVs
ZW0sCi0gICAgbmFtZSwKLSAgICBleHRyYSB8fCAoIGlzQm9yZGVyQm94ID8gImJvcmRlciIgOiAi
Y29udGVudCIgKSwKLSAgICB2YWx1ZUlzQm9yZGVyQm94LAotICAgIHN0eWxlcwotICAgICkKLSAg
ICApICsgInB4IjsKLX0KLQotLy8gVHJ5IHRvIGRldGVybWluZSB0aGUgZGVmYXVsdCBkaXNwbGF5
IHZhbHVlIG9mIGFuIGVsZW1lbnQKLWZ1bmN0aW9uIGNzc19kZWZhdWx0RGlzcGxheSggbm9kZU5h
bWUgKSB7Ci0gICAgdmFyIGRvYyA9IGRvY3VtZW50LAotICAgIGRpc3BsYXkgPSBlbGVtZGlzcGxh
eVsgbm9kZU5hbWUgXTsKLQotICAgIGlmICggIWRpc3BsYXkgKSB7Ci0gICAgZGlzcGxheSA9IGFj
dHVhbERpc3BsYXkoIG5vZGVOYW1lLCBkb2MgKTsKLQotICAgIC8vIElmIHRoZSBzaW1wbGUgd2F5
IGZhaWxzLCByZWFkIGZyb20gaW5zaWRlIGFuIGlmcmFtZQotICAgIGlmICggZGlzcGxheSA9PT0g
Im5vbmUiIHx8ICFkaXNwbGF5ICkgewotICAgIC8vIFVzZSB0aGUgYWxyZWFkeS1jcmVhdGVkIGlm
cmFtZSBpZiBwb3NzaWJsZQotICAgIGlmcmFtZSA9ICggaWZyYW1lIHx8Ci0gICAgalF1ZXJ5KCI8
aWZyYW1lIGZyYW1lYm9yZGVyPScwJyB3aWR0aD0nMCcgaGVpZ2h0PScwJy8+IikKLSAgICAuY3Nz
KCAiY3NzVGV4dCIsICJkaXNwbGF5OmJsb2NrICFpbXBvcnRhbnQiICkKLSAgICApLmFwcGVuZFRv
KCBkb2MuZG9jdW1lbnRFbGVtZW50ICk7Ci0KLSAgICAvLyBBbHdheXMgd3JpdGUgYSBuZXcgSFRN
TCBza2VsZXRvbiBzbyBXZWJraXQgYW5kIEZpcmVmb3ggZG9uJ3QgY2hva2Ugb24gcmV1c2UKLSAg
ICBkb2MgPSAoIGlmcmFtZVswXS5jb250ZW50V2luZG93IHx8IGlmcmFtZVswXS5jb250ZW50RG9j
dW1lbnQgKS5kb2N1bWVudDsKLSAgICBkb2Mud3JpdGUoIjwhZG9jdHlwZSBodG1sPjxodG1sPjxi
b2R5PiIpOwotICAgIGRvYy5jbG9zZSgpOwotCi0gICAgZGlzcGxheSA9IGFjdHVhbERpc3BsYXko
IG5vZGVOYW1lLCBkb2MgKTsKLSAgICBpZnJhbWUuZGV0YWNoKCk7Ci0gICAgfQotCi0gICAgLy8g
U3RvcmUgdGhlIGNvcnJlY3QgZGVmYXVsdCBkaXNwbGF5Ci0gICAgZWxlbWRpc3BsYXlbIG5vZGVO
YW1lIF0gPSBkaXNwbGF5OwotICAgIH0KLQotICAgIHJldHVybiBkaXNwbGF5OwotfQotCi0vLyBD
YWxsZWQgT05MWSBmcm9tIHdpdGhpbiBjc3NfZGVmYXVsdERpc3BsYXkKLWZ1bmN0aW9uIGFjdHVh
bERpc3BsYXkoIG5hbWUsIGRvYyApIHsKLSAgICB2YXIgZWxlbSA9IGpRdWVyeSggZG9jLmNyZWF0
ZUVsZW1lbnQoIG5hbWUgKSApLmFwcGVuZFRvKCBkb2MuYm9keSApLAotICAgIGRpc3BsYXkgPSBq
UXVlcnkuY3NzKCBlbGVtWzBdLCAiZGlzcGxheSIgKTsKLSAgICBlbGVtLnJlbW92ZSgpOwotICAg
IHJldHVybiBkaXNwbGF5OwotfQotCi1qUXVlcnkuZWFjaChbICJoZWlnaHQiLCAid2lkdGgiIF0s
IGZ1bmN0aW9uKCBpLCBuYW1lICkgewotICAgIGpRdWVyeS5jc3NIb29rc1sgbmFtZSBdID0gewot
ICAgIGdldDogZnVuY3Rpb24oIGVsZW0sIGNvbXB1dGVkLCBleHRyYSApIHsKLSAgICBpZiAoIGNv
bXB1dGVkICkgewotICAgIC8vIGNlcnRhaW4gZWxlbWVudHMgY2FuIGhhdmUgZGltZW5zaW9uIGlu
Zm8gaWYgd2UgaW52aXNpYmx5IHNob3cgdGhlbQotICAgIC8vIGhvd2V2ZXIsIGl0IG11c3QgaGF2
ZSBhIGN1cnJlbnQgZGlzcGxheSBzdHlsZSB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSB0aGlzCi0g
ICAgcmV0dXJuIGVsZW0ub2Zmc2V0V2lkdGggPT09IDAgJiYgcmRpc3BsYXlzd2FwLnRlc3QoIGpR
dWVyeS5jc3MoIGVsZW0sICJkaXNwbGF5IiApICkgPwotICAgIGpRdWVyeS5zd2FwKCBlbGVtLCBj
c3NTaG93LCBmdW5jdGlvbigpIHsKLSAgICByZXR1cm4gZ2V0V2lkdGhPckhlaWdodCggZWxlbSwg
bmFtZSwgZXh0cmEgKTsKLSAgICB9KSA6Ci0gICAgZ2V0V2lkdGhPckhlaWdodCggZWxlbSwgbmFt
ZSwgZXh0cmEgKTsKLSAgICB9Ci0gICAgfSwKLQotICAgIHNldDogZnVuY3Rpb24oIGVsZW0sIHZh
bHVlLCBleHRyYSApIHsKLSAgICB2YXIgc3R5bGVzID0gZXh0cmEgJiYgZ2V0U3R5bGVzKCBlbGVt
ICk7Ci0gICAgcmV0dXJuIHNldFBvc2l0aXZlTnVtYmVyKCBlbGVtLCB2YWx1ZSwgZXh0cmEgPwot
ICAgIGF1Z21lbnRXaWR0aE9ySGVpZ2h0KAotICAgIGVsZW0sCi0gICAgbmFtZSwKLSAgICBleHRy
YSwKLSAgICBqUXVlcnkuc3VwcG9ydC5ib3hTaXppbmcgJiYgalF1ZXJ5LmNzcyggZWxlbSwgImJv
eFNpemluZyIsIGZhbHNlLCBzdHlsZXMgKSA9PT0gImJvcmRlci1ib3giLAotICAgIHN0eWxlcwot
ICAgICkgOiAwCi0gICAgKTsKLSAgICB9Ci0gICAgfTsKLX0pOwotCi1pZiAoICFqUXVlcnkuc3Vw
cG9ydC5vcGFjaXR5ICkgewotICAgIGpRdWVyeS5jc3NIb29rcy5vcGFjaXR5ID0gewotICAgIGdl
dDogZnVuY3Rpb24oIGVsZW0sIGNvbXB1dGVkICkgewotICAgIC8vIElFIHVzZXMgZmlsdGVycyBm
b3Igb3BhY2l0eQotICAgIHJldHVybiByb3BhY2l0eS50ZXN0KCAoY29tcHV0ZWQgJiYgZWxlbS5j
dXJyZW50U3R5bGUgPyBlbGVtLmN1cnJlbnRTdHlsZS5maWx0ZXIgOiBlbGVtLnN0eWxlLmZpbHRl
cikgfHwgIiIgKSA/Ci0gICAgKCAwLjAxICogcGFyc2VGbG9hdCggUmVnRXhwLiQxICkgKSArICIi
IDoKLSAgICBjb21wdXRlZCA/ICIxIiA6ICIiOwotICAgIH0sCi0KLSAgICBzZXQ6IGZ1bmN0aW9u
KCBlbGVtLCB2YWx1ZSApIHsKLSAgICB2YXIgc3R5bGUgPSBlbGVtLnN0eWxlLAotICAgIGN1cnJl
bnRTdHlsZSA9IGVsZW0uY3VycmVudFN0eWxlLAotICAgIG9wYWNpdHkgPSBqUXVlcnkuaXNOdW1l
cmljKCB2YWx1ZSApID8gImFscGhhKG9wYWNpdHk9IiArIHZhbHVlICogMTAwICsgIikiIDogIiIs
Ci0gICAgZmlsdGVyID0gY3VycmVudFN0eWxlICYmIGN1cnJlbnRTdHlsZS5maWx0ZXIgfHwgc3R5
bGUuZmlsdGVyIHx8ICIiOwotCi0gICAgLy8gSUUgaGFzIHRyb3VibGUgd2l0aCBvcGFjaXR5IGlm
IGl0IGRvZXMgbm90IGhhdmUgbGF5b3V0Ci0gICAgLy8gRm9yY2UgaXQgYnkgc2V0dGluZyB0aGUg
em9vbSBsZXZlbAotICAgIHN0eWxlLnpvb20gPSAxOwotCi0gICAgLy8gaWYgc2V0dGluZyBvcGFj
aXR5IHRvIDEsIGFuZCBubyBvdGhlciBmaWx0ZXJzIGV4aXN0IC0gYXR0ZW1wdCB0byByZW1vdmUg
ZmlsdGVyIGF0dHJpYnV0ZSAjNjY1MgotICAgIC8vIGlmIHZhbHVlID09PSAiIiwgdGhlbiByZW1v
dmUgaW5saW5lIG9wYWNpdHkgIzEyNjg1Ci0gICAgaWYgKCAoIHZhbHVlID49IDEgfHwgdmFsdWUg
PT09ICIiICkgJiYKLSAgICBqUXVlcnkudHJpbSggZmlsdGVyLnJlcGxhY2UoIHJhbHBoYSwgIiIg
KSApID09PSAiIiAmJgotICAgIHN0eWxlLnJlbW92ZUF0dHJpYnV0ZSApIHsKLQotICAgIC8vIFNl
dHRpbmcgc3R5bGUuZmlsdGVyIHRvIG51bGwsICIiICYgIiAiIHN0aWxsIGxlYXZlICJmaWx0ZXI6
IiBpbiB0aGUgY3NzVGV4dAotICAgIC8vIGlmICJmaWx0ZXI6IiBpcyBwcmVzZW50IGF0IGFsbCwg
Y2xlYXJUeXBlIGlzIGRpc2FibGVkLCB3ZSB3YW50IHRvIGF2b2lkIHRoaXMKLSAgICAvLyBzdHls
ZS5yZW1vdmVBdHRyaWJ1dGUgaXMgSUUgT25seSwgYnV0IHNvIGFwcGFyZW50bHkgaXMgdGhpcyBj
b2RlIHBhdGguLi4KLSAgICBzdHlsZS5yZW1vdmVBdHRyaWJ1dGUoICJmaWx0ZXIiICk7Ci0KLSAg
ICAvLyBpZiB0aGVyZSBpcyBubyBmaWx0ZXIgc3R5bGUgYXBwbGllZCBpbiBhIGNzcyBydWxlIG9y
IHVuc2V0IGlubGluZSBvcGFjaXR5LCB3ZSBhcmUgZG9uZQotICAgIGlmICggdmFsdWUgPT09ICIi
IHx8IGN1cnJlbnRTdHlsZSAmJiAhY3VycmVudFN0eWxlLmZpbHRlciApIHsKLSAgICByZXR1cm47
Ci0gICAgfQotICAgIH0KLQotICAgIC8vIG90aGVyd2lzZSwgc2V0IG5ldyBmaWx0ZXIgdmFsdWVz
Ci0gICAgc3R5bGUuZmlsdGVyID0gcmFscGhhLnRlc3QoIGZpbHRlciApID8KLSAgICBmaWx0ZXIu
cmVwbGFjZSggcmFscGhhLCBvcGFjaXR5ICkgOgotICAgIGZpbHRlciArICIgIiArIG9wYWNpdHk7
Ci0gICAgfQotICAgIH07Ci19Ci0KLS8vIFRoZXNlIGhvb2tzIGNhbm5vdCBiZSBhZGRlZCB1bnRp
bCBET00gcmVhZHkgYmVjYXVzZSB0aGUgc3VwcG9ydCB0ZXN0Ci0vLyBmb3IgaXQgaXMgbm90IHJ1
biB1bnRpbCBhZnRlciBET00gcmVhZHkKLWpRdWVyeShmdW5jdGlvbigpIHsKLSAgICBpZiAoICFq
UXVlcnkuc3VwcG9ydC5yZWxpYWJsZU1hcmdpblJpZ2h0ICkgewotICAgIGpRdWVyeS5jc3NIb29r
cy5tYXJnaW5SaWdodCA9IHsKLSAgICBnZXQ6IGZ1bmN0aW9uKCBlbGVtLCBjb21wdXRlZCApIHsK
LSAgICBpZiAoIGNvbXB1dGVkICkgewotICAgIC8vIFdlYktpdCBCdWcgMTMzNDMgLSBnZXRDb21w
dXRlZFN0eWxlIHJldHVybnMgd3JvbmcgdmFsdWUgZm9yIG1hcmdpbi1yaWdodAotICAgIC8vIFdv
cmsgYXJvdW5kIGJ5IHRlbXBvcmFyaWx5IHNldHRpbmcgZWxlbWVudCBkaXNwbGF5IHRvIGlubGlu
ZS1ibG9jawotICAgIHJldHVybiBqUXVlcnkuc3dhcCggZWxlbSwgeyAiZGlzcGxheSI6ICJpbmxp
bmUtYmxvY2siIH0sCi0gICAgY3VyQ1NTLCBbIGVsZW0sICJtYXJnaW5SaWdodCIgXSApOwotICAg
IH0KLSAgICB9Ci0gICAgfTsKLSAgICB9Ci0KLSAgICAvLyBXZWJraXQgYnVnOiBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjkwODQKLSAgICAvLyBnZXRDb21wdXRlZFN0
eWxlIHJldHVybnMgcGVyY2VudCB3aGVuIHNwZWNpZmllZCBmb3IgdG9wL2xlZnQvYm90dG9tL3Jp
Z2h0Ci0gICAgLy8gcmF0aGVyIHRoYW4gbWFrZSB0aGUgY3NzIG1vZHVsZSBkZXBlbmQgb24gdGhl
IG9mZnNldCBtb2R1bGUsIHdlIGp1c3QgY2hlY2sgZm9yIGl0IGhlcmUKLSAgICBpZiAoICFqUXVl
cnkuc3VwcG9ydC5waXhlbFBvc2l0aW9uICYmIGpRdWVyeS5mbi5wb3NpdGlvbiApIHsKLSAgICBq
UXVlcnkuZWFjaCggWyAidG9wIiwgImxlZnQiIF0sIGZ1bmN0aW9uKCBpLCBwcm9wICkgewotICAg
IGpRdWVyeS5jc3NIb29rc1sgcHJvcCBdID0gewotICAgIGdldDogZnVuY3Rpb24oIGVsZW0sIGNv
bXB1dGVkICkgewotICAgIGlmICggY29tcHV0ZWQgKSB7Ci0gICAgY29tcHV0ZWQgPSBjdXJDU1Mo
IGVsZW0sIHByb3AgKTsKLSAgICAvLyBpZiBjdXJDU1MgcmV0dXJucyBwZXJjZW50YWdlLCBmYWxs
YmFjayB0byBvZmZzZXQKLSAgICByZXR1cm4gcm51bW5vbnB4LnRlc3QoIGNvbXB1dGVkICkgPwot
ICAgIGpRdWVyeSggZWxlbSApLnBvc2l0aW9uKClbIHByb3AgXSArICJweCIgOgotICAgIGNvbXB1
dGVkOwotICAgIH0KLSAgICB9Ci0gICAgfTsKLSAgICB9KTsKLSAgICB9Ci0KLX0pOwotCi1pZiAo
IGpRdWVyeS5leHByICYmIGpRdWVyeS5leHByLmZpbHRlcnMgKSB7Ci0gICAgalF1ZXJ5LmV4cHIu
ZmlsdGVycy5oaWRkZW4gPSBmdW5jdGlvbiggZWxlbSApIHsKLSAgICAvLyBTdXBwb3J0OiBPcGVy
YSA8PSAxMi4xMgotICAgIC8vIE9wZXJhIHJlcG9ydHMgb2Zmc2V0V2lkdGhzIGFuZCBvZmZzZXRI
ZWlnaHRzIGxlc3MgdGhhbiB6ZXJvIG9uIHNvbWUgZWxlbWVudHMKLSAgICByZXR1cm4gZWxlbS5v
ZmZzZXRXaWR0aCA8PSAwICYmIGVsZW0ub2Zmc2V0SGVpZ2h0IDw9IDAgfHwKLSAgICAoIWpRdWVy
eS5zdXBwb3J0LnJlbGlhYmxlSGlkZGVuT2Zmc2V0cyAmJiAoKGVsZW0uc3R5bGUgJiYgZWxlbS5z
dHlsZS5kaXNwbGF5KSB8fCBqUXVlcnkuY3NzKCBlbGVtLCAiZGlzcGxheSIgKSkgPT09ICJub25l
Iik7Ci0gICAgfTsKLQotICAgIGpRdWVyeS5leHByLmZpbHRlcnMudmlzaWJsZSA9IGZ1bmN0aW9u
KCBlbGVtICkgewotICAgIHJldHVybiAhalF1ZXJ5LmV4cHIuZmlsdGVycy5oaWRkZW4oIGVsZW0g
KTsKLSAgICB9OwotfQotCi0vLyBUaGVzZSBob29rcyBhcmUgdXNlZCBieSBhbmltYXRlIHRvIGV4
cGFuZCBwcm9wZXJ0aWVzCi1qUXVlcnkuZWFjaCh7Ci0gICAgbWFyZ2luOiAiIiwKLSAgICBwYWRk
aW5nOiAiIiwKLSAgICBib3JkZXI6ICJXaWR0aCIKLX0sIGZ1bmN0aW9uKCBwcmVmaXgsIHN1ZmZp
eCApIHsKLSAgICBqUXVlcnkuY3NzSG9va3NbIHByZWZpeCArIHN1ZmZpeCBdID0gewotICAgIGV4
cGFuZDogZnVuY3Rpb24oIHZhbHVlICkgewotICAgIHZhciBpID0gMCwKLSAgICBleHBhbmRlZCA9
IHt9LAotCi0gICAgLy8gYXNzdW1lcyBhIHNpbmdsZSBudW1iZXIgaWYgbm90IGEgc3RyaW5nCi0g
ICAgcGFydHMgPSB0eXBlb2YgdmFsdWUgPT09ICJzdHJpbmciID8gdmFsdWUuc3BsaXQoIiAiKSA6
IFsgdmFsdWUgXTsKLQotICAgIGZvciAoIDsgaSA8IDQ7IGkrKyApIHsKLSAgICBleHBhbmRlZFsg
cHJlZml4ICsgY3NzRXhwYW5kWyBpIF0gKyBzdWZmaXggXSA9Ci0gICAgcGFydHNbIGkgXSB8fCBw
YXJ0c1sgaSAtIDIgXSB8fCBwYXJ0c1sgMCBdOwotICAgIH0KLQotICAgIHJldHVybiBleHBhbmRl
ZDsKLSAgICB9Ci0gICAgfTsKLQotICAgIGlmICggIXJtYXJnaW4udGVzdCggcHJlZml4ICkgKSB7
Ci0gICAgalF1ZXJ5LmNzc0hvb2tzWyBwcmVmaXggKyBzdWZmaXggXS5zZXQgPSBzZXRQb3NpdGl2
ZU51bWJlcjsKLSAgICB9Ci19KTsKLXZhciByMjAgPSAvJTIwL2csCi0gICAgcmJyYWNrZXQgPSAv
XFtcXSQvLAotICAgIHJDUkxGID0gL1xyP1xuL2csCi0gICAgcnN1Ym1pdHRlclR5cGVzID0gL14o
PzpzdWJtaXR8YnV0dG9ufGltYWdlfHJlc2V0fGZpbGUpJC9pLAotICAgIHJzdWJtaXR0YWJsZSA9
IC9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGtleWdlbikvaTsKLQotalF1ZXJ5LmZuLmV4dGVu
ZCh7Ci0gICAgc2VyaWFsaXplOiBmdW5jdGlvbigpIHsKLSAgICByZXR1cm4galF1ZXJ5LnBhcmFt
KCB0aGlzLnNlcmlhbGl6ZUFycmF5KCkgKTsKLSAgICB9LAotICAgIHNlcmlhbGl6ZUFycmF5OiBm
dW5jdGlvbigpIHsKLSAgICByZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXsKLSAgICAvLyBDYW4g
YWRkIHByb3BIb29rIGZvciAiZWxlbWVudHMiIHRvIGZpbHRlciBvciBhZGQgZm9ybSBlbGVtZW50
cwotICAgIHZhciBlbGVtZW50cyA9IGpRdWVyeS5wcm9wKCB0aGlzLCAiZWxlbWVudHMiICk7Ci0g
ICAgcmV0dXJuIGVsZW1lbnRzID8galF1ZXJ5Lm1ha2VBcnJheSggZWxlbWVudHMgKSA6IHRoaXM7
Ci0gICAgfSkKLSAgICAuZmlsdGVyKGZ1bmN0aW9uKCl7Ci0gICAgdmFyIHR5cGUgPSB0aGlzLnR5
cGU7Ci0gICAgLy8gVXNlIC5pcygiOmRpc2FibGVkIikgc28gdGhhdCBmaWVsZHNldFtkaXNhYmxl
ZF0gd29ya3MKLSAgICByZXR1cm4gdGhpcy5uYW1lICYmICFqUXVlcnkoIHRoaXMgKS5pcyggIjpk
aXNhYmxlZCIgKSAmJgotICAgIHJzdWJtaXR0YWJsZS50ZXN0KCB0aGlzLm5vZGVOYW1lICkgJiYg
IXJzdWJtaXR0ZXJUeXBlcy50ZXN0KCB0eXBlICkgJiYKLSAgICAoIHRoaXMuY2hlY2tlZCB8fCAh
bWFuaXB1bGF0aW9uX3JjaGVja2FibGVUeXBlLnRlc3QoIHR5cGUgKSApOwotICAgIH0pCi0gICAg
Lm1hcChmdW5jdGlvbiggaSwgZWxlbSApewotICAgIHZhciB2YWwgPSBqUXVlcnkoIHRoaXMgKS52
YWwoKTsKLQotICAgIHJldHVybiB2YWwgPT0gbnVsbCA/Ci0gICAgbnVsbCA6Ci0gICAgalF1ZXJ5
LmlzQXJyYXkoIHZhbCApID8KLSAgICBqUXVlcnkubWFwKCB2YWwsIGZ1bmN0aW9uKCB2YWwgKXsK
LSAgICByZXR1cm4geyBuYW1lOiBlbGVtLm5hbWUsIHZhbHVlOiB2YWwucmVwbGFjZSggckNSTEYs
ICJcclxuIiApIH07Ci0gICAgfSkgOgotICAgIHsgbmFtZTogZWxlbS5uYW1lLCB2YWx1ZTogdmFs
LnJlcGxhY2UoIHJDUkxGLCAiXHJcbiIgKSB9OwotICAgIH0pLmdldCgpOwotICAgIH0KLX0pOwot
Ci0vL1NlcmlhbGl6ZSBhbiBhcnJheSBvZiBmb3JtIGVsZW1lbnRzIG9yIGEgc2V0IG9mCi0vL2tl
eS92YWx1ZXMgaW50byBhIHF1ZXJ5IHN0cmluZwotalF1ZXJ5LnBhcmFtID0gZnVuY3Rpb24oIGEs
IHRyYWRpdGlvbmFsICkgewotICAgIHZhciBwcmVmaXgsCi0gICAgcyA9IFtdLAotICAgIGFkZCA9
IGZ1bmN0aW9uKCBrZXksIHZhbHVlICkgewotICAgIC8vIElmIHZhbHVlIGlzIGEgZnVuY3Rpb24s
IGludm9rZSBpdCBhbmQgcmV0dXJuIGl0cyB2YWx1ZQotICAgIHZhbHVlID0galF1ZXJ5LmlzRnVu
Y3Rpb24oIHZhbHVlICkgPyB2YWx1ZSgpIDogKCB2YWx1ZSA9PSBudWxsID8gIiIgOiB2YWx1ZSAp
OwotICAgIHNbIHMubGVuZ3RoIF0gPSBlbmNvZGVVUklDb21wb25lbnQoIGtleSApICsgIj0iICsg
ZW5jb2RlVVJJQ29tcG9uZW50KCB2YWx1ZSApOwotICAgIH07Ci0KLSAgICAvLyBTZXQgdHJhZGl0
aW9uYWwgdG8gdHJ1ZSBmb3IgalF1ZXJ5IDw9IDEuMy4yIGJlaGF2aW9yLgotICAgIGlmICggdHJh
ZGl0aW9uYWwgPT09IHVuZGVmaW5lZCApIHsKLSAgICB0cmFkaXRpb25hbCA9IGpRdWVyeS5hamF4
U2V0dGluZ3MgJiYgalF1ZXJ5LmFqYXhTZXR0aW5ncy50cmFkaXRpb25hbDsKLSAgICB9Ci0KLSAg
ICAvLyBJZiBhbiBhcnJheSB3YXMgcGFzc2VkIGluLCBhc3N1bWUgdGhhdCBpdCBpcyBhbiBhcnJh
eSBvZiBmb3JtIGVsZW1lbnRzLgotICAgIGlmICggalF1ZXJ5LmlzQXJyYXkoIGEgKSB8fCAoIGEu
anF1ZXJ5ICYmICFqUXVlcnkuaXNQbGFpbk9iamVjdCggYSApICkgKSB7Ci0gICAgLy8gU2VyaWFs
aXplIHRoZSBmb3JtIGVsZW1lbnRzCi0gICAgalF1ZXJ5LmVhY2goIGEsIGZ1bmN0aW9uKCkgewot
ICAgIGFkZCggdGhpcy5uYW1lLCB0aGlzLnZhbHVlICk7Ci0gICAgfSk7Ci0KLSAgICB9IGVsc2Ug
ewotICAgIC8vIElmIHRyYWRpdGlvbmFsLCBlbmNvZGUgdGhlICJvbGQiIHdheSAodGhlIHdheSAx
LjMuMiBvciBvbGRlcgotICAgIC8vIGRpZCBpdCksIG90aGVyd2lzZSBlbmNvZGUgcGFyYW1zIHJl
Y3Vyc2l2ZWx5LgotICAgIGZvciAoIHByZWZpeCBpbiBhICkgewotICAgIGJ1aWxkUGFyYW1zKCBw
cmVmaXgsIGFbIHByZWZpeCBdLCB0cmFkaXRpb25hbCwgYWRkICk7Ci0gICAgfQotICAgIH0KLQot
ICAgIC8vIFJldHVybiB0aGUgcmVzdWx0aW5nIHNlcmlhbGl6YXRpb24KLSAgICByZXR1cm4gcy5q
b2luKCAiJiIgKS5yZXBsYWNlKCByMjAsICIrIiApOwotfTsKLQotZnVuY3Rpb24gYnVpbGRQYXJh
bXMoIHByZWZpeCwgb2JqLCB0cmFkaXRpb25hbCwgYWRkICkgewotICAgIHZhciBuYW1lOwotCi0g
ICAgaWYgKCBqUXVlcnkuaXNBcnJheSggb2JqICkgKSB7Ci0gICAgLy8gU2VyaWFsaXplIGFycmF5
IGl0ZW0uCi0gICAgalF1ZXJ5LmVhY2goIG9iaiwgZnVuY3Rpb24oIGksIHYgKSB7Ci0gICAgaWYg
KCB0cmFkaXRpb25hbCB8fCByYnJhY2tldC50ZXN0KCBwcmVmaXggKSApIHsKLSAgICAvLyBUcmVh
dCBlYWNoIGFycmF5IGl0ZW0gYXMgYSBzY2FsYXIuCi0gICAgYWRkKCBwcmVmaXgsIHYgKTsKLQot
ICAgIH0gZWxzZSB7Ci0gICAgLy8gSXRlbSBpcyBub24tc2NhbGFyIChhcnJheSBvciBvYmplY3Qp
LCBlbmNvZGUgaXRzIG51bWVyaWMgaW5kZXguCi0gICAgYnVpbGRQYXJhbXMoIHByZWZpeCArICJb
IiArICggdHlwZW9mIHYgPT09ICJvYmplY3QiID8gaSA6ICIiICkgKyAiXSIsIHYsIHRyYWRpdGlv
bmFsLCBhZGQgKTsKLSAgICB9Ci0gICAgfSk7Ci0KLSAgICB9IGVsc2UgaWYgKCAhdHJhZGl0aW9u
YWwgJiYgalF1ZXJ5LnR5cGUoIG9iaiApID09PSAib2JqZWN0IiApIHsKLSAgICAvLyBTZXJpYWxp
emUgb2JqZWN0IGl0ZW0uCi0gICAgZm9yICggbmFtZSBpbiBvYmogKSB7Ci0gICAgYnVpbGRQYXJh
bXMoIHByZWZpeCArICJbIiArIG5hbWUgKyAiXSIsIG9ialsgbmFtZSBdLCB0cmFkaXRpb25hbCwg
YWRkICk7Ci0gICAgfQotCi0gICAgfSBlbHNlIHsKLSAgICAvLyBTZXJpYWxpemUgc2NhbGFyIGl0
ZW0uCi0gICAgYWRkKCBwcmVmaXgsIG9iaiApOwotICAgIH0KLX0KLWpRdWVyeS5lYWNoKCAoImJs
dXIgZm9jdXMgZm9jdXNpbiBmb2N1c291dCBsb2FkIHJlc2l6ZSBzY3JvbGwgdW5sb2FkIGNsaWNr
IGRibGNsaWNrICIgKwotICAgICJtb3VzZWRvd24gbW91c2V1cCBtb3VzZW1vdmUgbW91c2VvdmVy
IG1vdXNlb3V0IG1vdXNlZW50ZXIgbW91c2VsZWF2ZSAiICsKLSAgICAiY2hhbmdlIHNlbGVjdCBz
dWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBlcnJvciBjb250ZXh0bWVudSIpLnNwbGl0KCIg
IiksIGZ1bmN0aW9uKCBpLCBuYW1lICkgewotCi0gICAgLy8gSGFuZGxlIGV2ZW50IGJpbmRpbmcK
LSAgICBqUXVlcnkuZm5bIG5hbWUgXSA9IGZ1bmN0aW9uKCBkYXRhLCBmbiApIHsKLSAgICByZXR1
cm4gYXJndW1lbnRzLmxlbmd0aCA+IDAgPwotICAgIHRoaXMub24oIG5hbWUsIG51bGwsIGRhdGEs
IGZuICkgOgotICAgIHRoaXMudHJpZ2dlciggbmFtZSApOwotICAgIH07Ci19KTsKLQotalF1ZXJ5
LmZuLmhvdmVyID0gZnVuY3Rpb24oIGZuT3ZlciwgZm5PdXQgKSB7Ci0gICAgcmV0dXJuIHRoaXMu
bW91c2VlbnRlciggZm5PdmVyICkubW91c2VsZWF2ZSggZm5PdXQgfHwgZm5PdmVyICk7Ci19Owot
dmFyCi0gICAgLy8gRG9jdW1lbnQgbG9jYXRpb24KLSAgICBhamF4TG9jUGFydHMsCi0gICAgYWph
eExvY2F0aW9uLAotICAgIGFqYXhfbm9uY2UgPSBqUXVlcnkubm93KCksCi0KLSAgICBhamF4X3Jx
dWVyeSA9IC9cPy8sCi0gICAgcmhhc2ggPSAvIy4qJC8sCi0gICAgcnRzID0gLyhbPyZdKV89W14m
XSovLAotICAgIHJoZWFkZXJzID0gL14oLio/KTpbIFx0XSooW15cclxuXSopXHI/JC9tZywgLy8g
SUUgbGVhdmVzIGFuIFxyIGNoYXJhY3RlciBhdCBFT0wKLSAgICAvLyAjNzY1MywgIzgxMjUsICM4
MTUyOiBsb2NhbCBwcm90b2NvbCBkZXRlY3Rpb24KLSAgICBybG9jYWxQcm90b2NvbCA9IC9eKD86
YWJvdXR8YXBwfGFwcC1zdG9yYWdlfC4rLWV4dGVuc2lvbnxmaWxlfHJlc3x3aWRnZXQpOiQvLAot
ICAgIHJub0NvbnRlbnQgPSAvXig/OkdFVHxIRUFEKSQvLAotICAgIHJwcm90b2NvbCA9IC9eXC9c
Ly8sCi0gICAgcnVybCA9IC9eKFtcdy4rLV0rOikoPzpcL1wvKFteXC8/IzpdKikoPzo6KFxkKyl8
KXwpLywKLQotICAgIC8vIEtlZXAgYSBjb3B5IG9mIHRoZSBvbGQgbG9hZCBtZXRob2QKLSAgICBf
bG9hZCA9IGpRdWVyeS5mbi5sb2FkLAotCi0gICAgLyogUHJlZmlsdGVycwotICAgICAqIDEpIFRo
ZXkgYXJlIHVzZWZ1bCB0byBpbnRyb2R1Y2UgY3VzdG9tIGRhdGFUeXBlcyAoc2VlIGFqYXgvanNv
bnAuanMgZm9yIGFuIGV4YW1wbGUpCi0gICAgICogMikgVGhlc2UgYXJlIGNhbGxlZDoKLSAgICAg
KiAgICAtIEJFRk9SRSBhc2tpbmcgZm9yIGEgdHJhbnNwb3J0Ci0gICAgICogICAgLSBBRlRFUiBw
YXJhbSBzZXJpYWxpemF0aW9uIChzLmRhdGEgaXMgYSBzdHJpbmcgaWYgcy5wcm9jZXNzRGF0YSBp
cyB0cnVlKQotICAgICAqIDMpIGtleSBpcyB0aGUgZGF0YVR5cGUKLSAgICAgKiA0KSB0aGUgY2F0
Y2hhbGwgc3ltYm9sICIqIiBjYW4gYmUgdXNlZAotICAgICAqIDUpIGV4ZWN1dGlvbiB3aWxsIHN0
YXJ0IHdpdGggdHJhbnNwb3J0IGRhdGFUeXBlIGFuZCBUSEVOIGNvbnRpbnVlIGRvd24gdG8gIioi
IGlmIG5lZWRlZAotICAgICAqLwotICAgIHByZWZpbHRlcnMgPSB7fSwKLQotICAgIC8qIFRyYW5z
cG9ydHMgYmluZGluZ3MKLSAgICAgKiAxKSBrZXkgaXMgdGhlIGRhdGFUeXBlCi0gICAgICogMikg
dGhlIGNhdGNoYWxsIHN5bWJvbCAiKiIgY2FuIGJlIHVzZWQKLSAgICAgKiAzKSBzZWxlY3Rpb24g
d2lsbCBzdGFydCB3aXRoIHRyYW5zcG9ydCBkYXRhVHlwZSBhbmQgVEhFTiBnbyB0byAiKiIgaWYg
bmVlZGVkCi0gICAgICovCi0gICAgdHJhbnNwb3J0cyA9IHt9LAotCi0gICAgLy8gQXZvaWQgY29t
bWVudC1wcm9sb2cgY2hhciBzZXF1ZW5jZSAoIzEwMDk4KTsgbXVzdCBhcHBlYXNlIGxpbnQgYW5k
IGV2YWRlIGNvbXByZXNzaW9uCi0gICAgYWxsVHlwZXMgPSAiKi8iLmNvbmNhdCgiKiIpOwotCi0v
LyAjODEzOCwgSUUgbWF5IHRocm93IGFuIGV4Y2VwdGlvbiB3aGVuIGFjY2Vzc2luZwotLy8gYSBm
aWVsZCBmcm9tIHdpbmRvdy5sb2NhdGlvbiBpZiBkb2N1bWVudC5kb21haW4gaGFzIGJlZW4gc2V0
Ci10cnkgewotICAgIGFqYXhMb2NhdGlvbiA9IGxvY2F0aW9uLmhyZWY7Ci19IGNhdGNoKCBlICkg
ewotICAgIC8vIFVzZSB0aGUgaHJlZiBhdHRyaWJ1dGUgb2YgYW4gQSBlbGVtZW50Ci0gICAgLy8g
c2luY2UgSUUgd2lsbCBtb2RpZnkgaXQgZ2l2ZW4gZG9jdW1lbnQubG9jYXRpb24KLSAgICBhamF4
TG9jYXRpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCAiYSIgKTsKLSAgICBhamF4TG9jYXRp
b24uaHJlZiA9ICIiOwotICAgIGFqYXhMb2NhdGlvbiA9IGFqYXhMb2NhdGlvbi5ocmVmOwotfQot
Ci0vLyBTZWdtZW50IGxvY2F0aW9uIGludG8gcGFydHMKLWFqYXhMb2NQYXJ0cyA9IHJ1cmwuZXhl
YyggYWpheExvY2F0aW9uLnRvTG93ZXJDYXNlKCkgKSB8fCBbXTsKLQotLy8gQmFzZSAiY29uc3Ry
dWN0b3IiIGZvciBqUXVlcnkuYWpheFByZWZpbHRlciBhbmQgalF1ZXJ5LmFqYXhUcmFuc3BvcnQK
LWZ1bmN0aW9uIGFkZFRvUHJlZmlsdGVyc09yVHJhbnNwb3J0cyggc3RydWN0dXJlICkgewotCi0g
ICAgLy8gZGF0YVR5cGVFeHByZXNzaW9uIGlzIG9wdGlvbmFsIGFuZCBkZWZhdWx0cyB0byAiKiIK
LSAgICByZXR1cm4gZnVuY3Rpb24oIGRhdGFUeXBlRXhwcmVzc2lvbiwgZnVuYyApIHsKLQotICAg
IGlmICggdHlwZW9mIGRhdGFUeXBlRXhwcmVzc2lvbiAhPT0gInN0cmluZyIgKSB7Ci0gICAgZnVu
YyA9IGRhdGFUeXBlRXhwcmVzc2lvbjsKLSAgICBkYXRhVHlwZUV4cHJlc3Npb24gPSAiKiI7Ci0g
ICAgfQotCi0gICAgdmFyIGRhdGFUeXBlLAotICAgIGkgPSAwLAotICAgIGRhdGFUeXBlcyA9IGRh
dGFUeXBlRXhwcmVzc2lvbi50b0xvd2VyQ2FzZSgpLm1hdGNoKCBjb3JlX3Jub3R3aGl0ZSApIHx8
IFtdOwotCi0gICAgaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggZnVuYyApICkgewotICAgIC8vIEZv
ciBlYWNoIGRhdGFUeXBlIGluIHRoZSBkYXRhVHlwZUV4cHJlc3Npb24KLSAgICB3aGlsZSAoIChk
YXRhVHlwZSA9IGRhdGFUeXBlc1tpKytdKSApIHsKLSAgICAvLyBQcmVwZW5kIGlmIHJlcXVlc3Rl
ZAotICAgIGlmICggZGF0YVR5cGVbMF0gPT09ICIrIiApIHsKLSAgICBkYXRhVHlwZSA9IGRhdGFU
eXBlLnNsaWNlKCAxICkgfHwgIioiOwotICAgIChzdHJ1Y3R1cmVbIGRhdGFUeXBlIF0gPSBzdHJ1
Y3R1cmVbIGRhdGFUeXBlIF0gfHwgW10pLnVuc2hpZnQoIGZ1bmMgKTsKLQotICAgIC8vIE90aGVy
d2lzZSBhcHBlbmQKLSAgICB9IGVsc2UgewotICAgIChzdHJ1Y3R1cmVbIGRhdGFUeXBlIF0gPSBz
dHJ1Y3R1cmVbIGRhdGFUeXBlIF0gfHwgW10pLnB1c2goIGZ1bmMgKTsKLSAgICB9Ci0gICAgfQot
ICAgIH0KLSAgICB9OwotfQotCi0vLyBCYXNlIGluc3BlY3Rpb24gZnVuY3Rpb24gZm9yIHByZWZp
bHRlcnMgYW5kIHRyYW5zcG9ydHMKLWZ1bmN0aW9uIGluc3BlY3RQcmVmaWx0ZXJzT3JUcmFuc3Bv
cnRzKCBzdHJ1Y3R1cmUsIG9wdGlvbnMsIG9yaWdpbmFsT3B0aW9ucywganFYSFIgKSB7Ci0KLSAg
ICB2YXIgaW5zcGVjdGVkID0ge30sCi0gICAgc2Vla2luZ1RyYW5zcG9ydCA9ICggc3RydWN0dXJl
ID09PSB0cmFuc3BvcnRzICk7Ci0KLSAgICBmdW5jdGlvbiBpbnNwZWN0KCBkYXRhVHlwZSApIHsK
LSAgICB2YXIgc2VsZWN0ZWQ7Ci0gICAgaW5zcGVjdGVkWyBkYXRhVHlwZSBdID0gdHJ1ZTsKLSAg
ICBqUXVlcnkuZWFjaCggc3RydWN0dXJlWyBkYXRhVHlwZSBdIHx8IFtdLCBmdW5jdGlvbiggXywg
cHJlZmlsdGVyT3JGYWN0b3J5ICkgewotICAgIHZhciBkYXRhVHlwZU9yVHJhbnNwb3J0ID0gcHJl
ZmlsdGVyT3JGYWN0b3J5KCBvcHRpb25zLCBvcmlnaW5hbE9wdGlvbnMsIGpxWEhSICk7Ci0gICAg
aWYoIHR5cGVvZiBkYXRhVHlwZU9yVHJhbnNwb3J0ID09PSAic3RyaW5nIiAmJiAhc2Vla2luZ1Ry
YW5zcG9ydCAmJiAhaW5zcGVjdGVkWyBkYXRhVHlwZU9yVHJhbnNwb3J0IF0gKSB7Ci0gICAgb3B0
aW9ucy5kYXRhVHlwZXMudW5zaGlmdCggZGF0YVR5cGVPclRyYW5zcG9ydCApOwotICAgIGluc3Bl
Y3QoIGRhdGFUeXBlT3JUcmFuc3BvcnQgKTsKLSAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSBlbHNl
IGlmICggc2Vla2luZ1RyYW5zcG9ydCApIHsKLSAgICByZXR1cm4gISggc2VsZWN0ZWQgPSBkYXRh
VHlwZU9yVHJhbnNwb3J0ICk7Ci0gICAgfQotICAgIH0pOwotICAgIHJldHVybiBzZWxlY3RlZDsK
LSAgICB9Ci0KLSAgICByZXR1cm4gaW5zcGVjdCggb3B0aW9ucy5kYXRhVHlwZXNbIDAgXSApIHx8
ICFpbnNwZWN0ZWRbICIqIiBdICYmIGluc3BlY3QoICIqIiApOwotfQotCi0vLyBBIHNwZWNpYWwg
ZXh0ZW5kIGZvciBhamF4IG9wdGlvbnMKLS8vIHRoYXQgdGFrZXMgImZsYXQiIG9wdGlvbnMgKG5v
dCB0byBiZSBkZWVwIGV4dGVuZGVkKQotLy8gRml4ZXMgIzk4ODcKLWZ1bmN0aW9uIGFqYXhFeHRl
bmQoIHRhcmdldCwgc3JjICkgewotICAgIHZhciBkZWVwLCBrZXksCi0gICAgZmxhdE9wdGlvbnMg
PSBqUXVlcnkuYWpheFNldHRpbmdzLmZsYXRPcHRpb25zIHx8IHt9OwotCi0gICAgZm9yICgga2V5
IGluIHNyYyApIHsKLSAgICBpZiAoIHNyY1sga2V5IF0gIT09IHVuZGVmaW5lZCApIHsKLSAgICAo
IGZsYXRPcHRpb25zWyBrZXkgXSA/IHRhcmdldCA6ICggZGVlcCB8fCAoZGVlcCA9IHt9KSApIClb
IGtleSBdID0gc3JjWyBrZXkgXTsKLSAgICB9Ci0gICAgfQotICAgIGlmICggZGVlcCApIHsKLSAg
ICBqUXVlcnkuZXh0ZW5kKCB0cnVlLCB0YXJnZXQsIGRlZXAgKTsKLSAgICB9Ci0KLSAgICByZXR1
cm4gdGFyZ2V0OwotfQotCi1qUXVlcnkuZm4ubG9hZCA9IGZ1bmN0aW9uKCB1cmwsIHBhcmFtcywg
Y2FsbGJhY2sgKSB7Ci0gICAgaWYgKCB0eXBlb2YgdXJsICE9PSAic3RyaW5nIiAmJiBfbG9hZCAp
IHsKLSAgICByZXR1cm4gX2xvYWQuYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApOwotICAgIH0KLQot
ICAgIHZhciBzZWxlY3RvciwgcmVzcG9uc2UsIHR5cGUsCi0gICAgc2VsZiA9IHRoaXMsCi0gICAg
b2ZmID0gdXJsLmluZGV4T2YoIiAiKTsKLQotICAgIGlmICggb2ZmID49IDAgKSB7Ci0gICAgc2Vs
ZWN0b3IgPSB1cmwuc2xpY2UoIG9mZiwgdXJsLmxlbmd0aCApOwotICAgIHVybCA9IHVybC5zbGlj
ZSggMCwgb2ZmICk7Ci0gICAgfQotCi0gICAgLy8gSWYgaXQncyBhIGZ1bmN0aW9uCi0gICAgaWYg
KCBqUXVlcnkuaXNGdW5jdGlvbiggcGFyYW1zICkgKSB7Ci0KLSAgICAvLyBXZSBhc3N1bWUgdGhh
dCBpdCdzIHRoZSBjYWxsYmFjawotICAgIGNhbGxiYWNrID0gcGFyYW1zOwotICAgIHBhcmFtcyA9
IHVuZGVmaW5lZDsKLQotICAgIC8vIE90aGVyd2lzZSwgYnVpbGQgYSBwYXJhbSBzdHJpbmcKLSAg
ICB9IGVsc2UgaWYgKCBwYXJhbXMgJiYgdHlwZW9mIHBhcmFtcyA9PT0gIm9iamVjdCIgKSB7Ci0g
ICAgdHlwZSA9ICJQT1NUIjsKLSAgICB9Ci0KLSAgICAvLyBJZiB3ZSBoYXZlIGVsZW1lbnRzIHRv
IG1vZGlmeSwgbWFrZSB0aGUgcmVxdWVzdAotICAgIGlmICggc2VsZi5sZW5ndGggPiAwICkgewot
ICAgIGpRdWVyeS5hamF4KHsKLSAgICB1cmw6IHVybCwKLQotICAgIC8vIGlmICJ0eXBlIiB2YXJp
YWJsZSBpcyB1bmRlZmluZWQsIHRoZW4gIkdFVCIgbWV0aG9kIHdpbGwgYmUgdXNlZAotICAgIHR5
cGU6IHR5cGUsCi0gICAgZGF0YVR5cGU6ICJodG1sIiwKLSAgICBkYXRhOiBwYXJhbXMKLSAgICB9
KS5kb25lKGZ1bmN0aW9uKCByZXNwb25zZVRleHQgKSB7Ci0KLSAgICAvLyBTYXZlIHJlc3BvbnNl
IGZvciB1c2UgaW4gY29tcGxldGUgY2FsbGJhY2sKLSAgICByZXNwb25zZSA9IGFyZ3VtZW50czsK
LQotICAgIHNlbGYuaHRtbCggc2VsZWN0b3IgPwotCi0gICAgLy8gSWYgYSBzZWxlY3RvciB3YXMg
c3BlY2lmaWVkLCBsb2NhdGUgdGhlIHJpZ2h0IGVsZW1lbnRzIGluIGEgZHVtbXkgZGl2Ci0gICAg
Ly8gRXhjbHVkZSBzY3JpcHRzIHRvIGF2b2lkIElFICdQZXJtaXNzaW9uIERlbmllZCcgZXJyb3Jz
Ci0gICAgalF1ZXJ5KCI8ZGl2PiIpLmFwcGVuZCggalF1ZXJ5LnBhcnNlSFRNTCggcmVzcG9uc2VU
ZXh0ICkgKS5maW5kKCBzZWxlY3RvciApIDoKLQotICAgIC8vIE90aGVyd2lzZSB1c2UgdGhlIGZ1
bGwgcmVzdWx0Ci0gICAgcmVzcG9uc2VUZXh0ICk7Ci0KLSAgICB9KS5jb21wbGV0ZSggY2FsbGJh
Y2sgJiYgZnVuY3Rpb24oIGpxWEhSLCBzdGF0dXMgKSB7Ci0gICAgc2VsZi5lYWNoKCBjYWxsYmFj
aywgcmVzcG9uc2UgfHwgWyBqcVhIUi5yZXNwb25zZVRleHQsIHN0YXR1cywganFYSFIgXSApOwot
ICAgIH0pOwotICAgIH0KLQotICAgIHJldHVybiB0aGlzOwotfTsKLQotLy8gQXR0YWNoIGEgYnVu
Y2ggb2YgZnVuY3Rpb25zIGZvciBoYW5kbGluZyBjb21tb24gQUpBWCBldmVudHMKLWpRdWVyeS5l
YWNoKCBbICJhamF4U3RhcnQiLCAiYWpheFN0b3AiLCAiYWpheENvbXBsZXRlIiwgImFqYXhFcnJv
ciIsICJhamF4U3VjY2VzcyIsICJhamF4U2VuZCIgXSwgZnVuY3Rpb24oIGksIHR5cGUgKXsKLSAg
ICBqUXVlcnkuZm5bIHR5cGUgXSA9IGZ1bmN0aW9uKCBmbiApewotICAgIHJldHVybiB0aGlzLm9u
KCB0eXBlLCBmbiApOwotICAgIH07Ci19KTsKLQotalF1ZXJ5LmVhY2goIFsgImdldCIsICJwb3N0
IiBdLCBmdW5jdGlvbiggaSwgbWV0aG9kICkgewotICAgIGpRdWVyeVsgbWV0aG9kIF0gPSBmdW5j
dGlvbiggdXJsLCBkYXRhLCBjYWxsYmFjaywgdHlwZSApIHsKLSAgICAvLyBzaGlmdCBhcmd1bWVu
dHMgaWYgZGF0YSBhcmd1bWVudCB3YXMgb21pdHRlZAotICAgIGlmICggalF1ZXJ5LmlzRnVuY3Rp
b24oIGRhdGEgKSApIHsKLSAgICB0eXBlID0gdHlwZSB8fCBjYWxsYmFjazsKLSAgICBjYWxsYmFj
ayA9IGRhdGE7Ci0gICAgZGF0YSA9IHVuZGVmaW5lZDsKLSAgICB9Ci0KLSAgICByZXR1cm4galF1
ZXJ5LmFqYXgoewotICAgIHVybDogdXJsLAotICAgIHR5cGU6IG1ldGhvZCwKLSAgICBkYXRhVHlw
ZTogdHlwZSwKLSAgICBkYXRhOiBkYXRhLAotICAgIHN1Y2Nlc3M6IGNhbGxiYWNrCi0gICAgfSk7
Ci0gICAgfTsKLX0pOwotCi1qUXVlcnkuZXh0ZW5kKHsKLQotICAgIC8vIENvdW50ZXIgZm9yIGhv
bGRpbmcgdGhlIG51bWJlciBvZiBhY3RpdmUgcXVlcmllcwotICAgIGFjdGl2ZTogMCwKLQotICAg
IC8vIExhc3QtTW9kaWZpZWQgaGVhZGVyIGNhY2hlIGZvciBuZXh0IHJlcXVlc3QKLSAgICBsYXN0
TW9kaWZpZWQ6IHt9LAotICAgIGV0YWc6IHt9LAotCi0gICAgYWpheFNldHRpbmdzOiB7Ci0gICAg
dXJsOiBhamF4TG9jYXRpb24sCi0gICAgdHlwZTogIkdFVCIsCi0gICAgaXNMb2NhbDogcmxvY2Fs
UHJvdG9jb2wudGVzdCggYWpheExvY1BhcnRzWyAxIF0gKSwKLSAgICBnbG9iYWw6IHRydWUsCi0g
ICAgcHJvY2Vzc0RhdGE6IHRydWUsCi0gICAgYXN5bmM6IHRydWUsCi0gICAgY29udGVudFR5cGU6
ICJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9VVRGLTgiLAotICAg
IC8qCi0gICAgdGltZW91dDogMCwKLSAgICBkYXRhOiBudWxsLAotICAgIGRhdGFUeXBlOiBudWxs
LAotICAgIHVzZXJuYW1lOiBudWxsLAotICAgIHBhc3N3b3JkOiBudWxsLAotICAgIGNhY2hlOiBu
dWxsLAotICAgIHRocm93czogZmFsc2UsCi0gICAgdHJhZGl0aW9uYWw6IGZhbHNlLAotICAgIGhl
YWRlcnM6IHt9LAotICAgICovCi0KLSAgICBhY2NlcHRzOiB7Ci0gICAgIioiOiBhbGxUeXBlcywK
LSAgICB0ZXh0OiAidGV4dC9wbGFpbiIsCi0gICAgaHRtbDogInRleHQvaHRtbCIsCi0gICAgeG1s
OiAiYXBwbGljYXRpb24veG1sLCB0ZXh0L3htbCIsCi0gICAganNvbjogImFwcGxpY2F0aW9uL2pz
b24sIHRleHQvamF2YXNjcmlwdCIKLSAgICB9LAotCi0gICAgY29udGVudHM6IHsKLSAgICB4bWw6
IC94bWwvLAotICAgIGh0bWw6IC9odG1sLywKLSAgICBqc29uOiAvanNvbi8KLSAgICB9LAotCi0g
ICAgcmVzcG9uc2VGaWVsZHM6IHsKLSAgICB4bWw6ICJyZXNwb25zZVhNTCIsCi0gICAgdGV4dDog
InJlc3BvbnNlVGV4dCIKLSAgICB9LAotCi0gICAgLy8gRGF0YSBjb252ZXJ0ZXJzCi0gICAgLy8g
S2V5cyBzZXBhcmF0ZSBzb3VyY2UgKG9yIGNhdGNoYWxsICIqIikgYW5kIGRlc3RpbmF0aW9uIHR5
cGVzIHdpdGggYSBzaW5nbGUgc3BhY2UKLSAgICBjb252ZXJ0ZXJzOiB7Ci0KLSAgICAvLyBDb252
ZXJ0IGFueXRoaW5nIHRvIHRleHQKLSAgICAiKiB0ZXh0Ijogd2luZG93LlN0cmluZywKLQotICAg
IC8vIFRleHQgdG8gaHRtbCAodHJ1ZSA9IG5vIHRyYW5zZm9ybWF0aW9uKQotICAgICJ0ZXh0IGh0
bWwiOiB0cnVlLAotCi0gICAgLy8gRXZhbHVhdGUgdGV4dCBhcyBhIGpzb24gZXhwcmVzc2lvbgot
ICAgICJ0ZXh0IGpzb24iOiBqUXVlcnkucGFyc2VKU09OLAotCi0gICAgLy8gUGFyc2UgdGV4dCBh
cyB4bWwKLSAgICAidGV4dCB4bWwiOiBqUXVlcnkucGFyc2VYTUwKLSAgICB9LAotCi0gICAgLy8g
Rm9yIG9wdGlvbnMgdGhhdCBzaG91bGRuJ3QgYmUgZGVlcCBleHRlbmRlZDoKLSAgICAvLyB5b3Ug
Y2FuIGFkZCB5b3VyIG93biBjdXN0b20gb3B0aW9ucyBoZXJlIGlmCi0gICAgLy8gYW5kIHdoZW4g
eW91IGNyZWF0ZSBvbmUgdGhhdCBzaG91bGRuJ3QgYmUKLSAgICAvLyBkZWVwIGV4dGVuZGVkIChz
ZWUgYWpheEV4dGVuZCkKLSAgICBmbGF0T3B0aW9uczogewotICAgIHVybDogdHJ1ZSwKLSAgICBj
b250ZXh0OiB0cnVlCi0gICAgfQotICAgIH0sCi0KLSAgICAvLyBDcmVhdGVzIGEgZnVsbCBmbGVk
Z2VkIHNldHRpbmdzIG9iamVjdCBpbnRvIHRhcmdldAotICAgIC8vIHdpdGggYm90aCBhamF4U2V0
dGluZ3MgYW5kIHNldHRpbmdzIGZpZWxkcy4KLSAgICAvLyBJZiB0YXJnZXQgaXMgb21pdHRlZCwg
d3JpdGVzIGludG8gYWpheFNldHRpbmdzLgotICAgIGFqYXhTZXR1cDogZnVuY3Rpb24oIHRhcmdl
dCwgc2V0dGluZ3MgKSB7Ci0gICAgcmV0dXJuIHNldHRpbmdzID8KLQotICAgIC8vIEJ1aWxkaW5n
IGEgc2V0dGluZ3Mgb2JqZWN0Ci0gICAgYWpheEV4dGVuZCggYWpheEV4dGVuZCggdGFyZ2V0LCBq
UXVlcnkuYWpheFNldHRpbmdzICksIHNldHRpbmdzICkgOgotCi0gICAgLy8gRXh0ZW5kaW5nIGFq
YXhTZXR0aW5ncwotICAgIGFqYXhFeHRlbmQoIGpRdWVyeS5hamF4U2V0dGluZ3MsIHRhcmdldCAp
OwotICAgIH0sCi0KLSAgICBhamF4UHJlZmlsdGVyOiBhZGRUb1ByZWZpbHRlcnNPclRyYW5zcG9y
dHMoIHByZWZpbHRlcnMgKSwKLSAgICBhamF4VHJhbnNwb3J0OiBhZGRUb1ByZWZpbHRlcnNPclRy
YW5zcG9ydHMoIHRyYW5zcG9ydHMgKSwKLQotICAgIC8vIE1haW4gbWV0aG9kCi0gICAgYWpheDog
ZnVuY3Rpb24oIHVybCwgb3B0aW9ucyApIHsKLQotICAgIC8vIElmIHVybCBpcyBhbiBvYmplY3Qs
IHNpbXVsYXRlIHByZS0xLjUgc2lnbmF0dXJlCi0gICAgaWYgKCB0eXBlb2YgdXJsID09PSAib2Jq
ZWN0IiApIHsKLSAgICBvcHRpb25zID0gdXJsOwotICAgIHVybCA9IHVuZGVmaW5lZDsKLSAgICB9
Ci0KLSAgICAvLyBGb3JjZSBvcHRpb25zIHRvIGJlIGFuIG9iamVjdAotICAgIG9wdGlvbnMgPSBv
cHRpb25zIHx8IHt9OwotCi0gICAgdmFyIC8vIENyb3NzLWRvbWFpbiBkZXRlY3Rpb24gdmFycwot
ICAgIHBhcnRzLAotICAgIC8vIExvb3AgdmFyaWFibGUKLSAgICBpLAotICAgIC8vIFVSTCB3aXRo
b3V0IGFudGktY2FjaGUgcGFyYW0KLSAgICBjYWNoZVVSTCwKLSAgICAvLyBSZXNwb25zZSBoZWFk
ZXJzIGFzIHN0cmluZwotICAgIHJlc3BvbnNlSGVhZGVyc1N0cmluZywKLSAgICAvLyB0aW1lb3V0
IGhhbmRsZQotICAgIHRpbWVvdXRUaW1lciwKLQotICAgIC8vIFRvIGtub3cgaWYgZ2xvYmFsIGV2
ZW50cyBhcmUgdG8gYmUgZGlzcGF0Y2hlZAotICAgIGZpcmVHbG9iYWxzLAotCi0gICAgdHJhbnNw
b3J0LAotICAgIC8vIFJlc3BvbnNlIGhlYWRlcnMKLSAgICByZXNwb25zZUhlYWRlcnMsCi0gICAg
Ly8gQ3JlYXRlIHRoZSBmaW5hbCBvcHRpb25zIG9iamVjdAotICAgIHMgPSBqUXVlcnkuYWpheFNl
dHVwKCB7fSwgb3B0aW9ucyApLAotICAgIC8vIENhbGxiYWNrcyBjb250ZXh0Ci0gICAgY2FsbGJh
Y2tDb250ZXh0ID0gcy5jb250ZXh0IHx8IHMsCi0gICAgLy8gQ29udGV4dCBmb3IgZ2xvYmFsIGV2
ZW50cyBpcyBjYWxsYmFja0NvbnRleHQgaWYgaXQgaXMgYSBET00gbm9kZSBvciBqUXVlcnkgY29s
bGVjdGlvbgotICAgIGdsb2JhbEV2ZW50Q29udGV4dCA9IHMuY29udGV4dCAmJiAoIGNhbGxiYWNr
Q29udGV4dC5ub2RlVHlwZSB8fCBjYWxsYmFja0NvbnRleHQuanF1ZXJ5ICkgPwotICAgIGpRdWVy
eSggY2FsbGJhY2tDb250ZXh0ICkgOgotICAgIGpRdWVyeS5ldmVudCwKLSAgICAvLyBEZWZlcnJl
ZHMKLSAgICBkZWZlcnJlZCA9IGpRdWVyeS5EZWZlcnJlZCgpLAotICAgIGNvbXBsZXRlRGVmZXJy
ZWQgPSBqUXVlcnkuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLAotICAgIC8vIFN0YXR1cy1kZXBl
bmRlbnQgY2FsbGJhY2tzCi0gICAgc3RhdHVzQ29kZSA9IHMuc3RhdHVzQ29kZSB8fCB7fSwKLSAg
ICAvLyBIZWFkZXJzICh0aGV5IGFyZSBzZW50IGFsbCBhdCBvbmNlKQotICAgIHJlcXVlc3RIZWFk
ZXJzID0ge30sCi0gICAgcmVxdWVzdEhlYWRlcnNOYW1lcyA9IHt9LAotICAgIC8vIFRoZSBqcVhI
UiBzdGF0ZQotICAgIHN0YXRlID0gMCwKLSAgICAvLyBEZWZhdWx0IGFib3J0IG1lc3NhZ2UKLSAg
ICBzdHJBYm9ydCA9ICJjYW5jZWxlZCIsCi0gICAgLy8gRmFrZSB4aHIKLSAgICBqcVhIUiA9IHsK
LSAgICByZWFkeVN0YXRlOiAwLAotCi0gICAgLy8gQnVpbGRzIGhlYWRlcnMgaGFzaHRhYmxlIGlm
IG5lZWRlZAotICAgIGdldFJlc3BvbnNlSGVhZGVyOiBmdW5jdGlvbigga2V5ICkgewotICAgIHZh
ciBtYXRjaDsKLSAgICBpZiAoIHN0YXRlID09PSAyICkgewotICAgIGlmICggIXJlc3BvbnNlSGVh
ZGVycyApIHsKLSAgICByZXNwb25zZUhlYWRlcnMgPSB7fTsKLSAgICB3aGlsZSAoIChtYXRjaCA9
IHJoZWFkZXJzLmV4ZWMoIHJlc3BvbnNlSGVhZGVyc1N0cmluZyApKSApIHsKLSAgICByZXNwb25z
ZUhlYWRlcnNbIG1hdGNoWzFdLnRvTG93ZXJDYXNlKCkgXSA9IG1hdGNoWyAyIF07Ci0gICAgfQot
ICAgIH0KLSAgICBtYXRjaCA9IHJlc3BvbnNlSGVhZGVyc1sga2V5LnRvTG93ZXJDYXNlKCkgXTsK
LSAgICB9Ci0gICAgcmV0dXJuIG1hdGNoID09IG51bGwgPyBudWxsIDogbWF0Y2g7Ci0gICAgfSwK
LQotICAgIC8vIFJhdyBzdHJpbmcKLSAgICBnZXRBbGxSZXNwb25zZUhlYWRlcnM6IGZ1bmN0aW9u
KCkgewotICAgIHJldHVybiBzdGF0ZSA9PT0gMiA/IHJlc3BvbnNlSGVhZGVyc1N0cmluZyA6IG51
bGw7Ci0gICAgfSwKLQotICAgIC8vIENhY2hlcyB0aGUgaGVhZGVyCi0gICAgc2V0UmVxdWVzdEhl
YWRlcjogZnVuY3Rpb24oIG5hbWUsIHZhbHVlICkgewotICAgIHZhciBsbmFtZSA9IG5hbWUudG9M
b3dlckNhc2UoKTsKLSAgICBpZiAoICFzdGF0ZSApIHsKLSAgICBuYW1lID0gcmVxdWVzdEhlYWRl
cnNOYW1lc1sgbG5hbWUgXSA9IHJlcXVlc3RIZWFkZXJzTmFtZXNbIGxuYW1lIF0gfHwgbmFtZTsK
LSAgICByZXF1ZXN0SGVhZGVyc1sgbmFtZSBdID0gdmFsdWU7Ci0gICAgfQotICAgIHJldHVybiB0
aGlzOwotICAgIH0sCi0KLSAgICAvLyBPdmVycmlkZXMgcmVzcG9uc2UgY29udGVudC10eXBlIGhl
YWRlcgotICAgIG92ZXJyaWRlTWltZVR5cGU6IGZ1bmN0aW9uKCB0eXBlICkgewotICAgIGlmICgg
IXN0YXRlICkgewotICAgIHMubWltZVR5cGUgPSB0eXBlOwotICAgIH0KLSAgICByZXR1cm4gdGhp
czsKLSAgICB9LAotCi0gICAgLy8gU3RhdHVzLWRlcGVuZGVudCBjYWxsYmFja3MKLSAgICBzdGF0
dXNDb2RlOiBmdW5jdGlvbiggbWFwICkgewotICAgIHZhciBjb2RlOwotICAgIGlmICggbWFwICkg
ewotICAgIGlmICggc3RhdGUgPCAyICkgewotICAgIGZvciAoIGNvZGUgaW4gbWFwICkgewotICAg
IC8vIExhenktYWRkIHRoZSBuZXcgY2FsbGJhY2sgaW4gYSB3YXkgdGhhdCBwcmVzZXJ2ZXMgb2xk
IG9uZXMKLSAgICBzdGF0dXNDb2RlWyBjb2RlIF0gPSBbIHN0YXR1c0NvZGVbIGNvZGUgXSwgbWFw
WyBjb2RlIF0gXTsKLSAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAvLyBFeGVjdXRlIHRoZSBhcHBy
b3ByaWF0ZSBjYWxsYmFja3MKLSAgICBqcVhIUi5hbHdheXMoIG1hcFsganFYSFIuc3RhdHVzIF0g
KTsKLSAgICB9Ci0gICAgfQotICAgIHJldHVybiB0aGlzOwotICAgIH0sCi0KLSAgICAvLyBDYW5j
ZWwgdGhlIHJlcXVlc3QKLSAgICBhYm9ydDogZnVuY3Rpb24oIHN0YXR1c1RleHQgKSB7Ci0gICAg
dmFyIGZpbmFsVGV4dCA9IHN0YXR1c1RleHQgfHwgc3RyQWJvcnQ7Ci0gICAgaWYgKCB0cmFuc3Bv
cnQgKSB7Ci0gICAgdHJhbnNwb3J0LmFib3J0KCBmaW5hbFRleHQgKTsKLSAgICB9Ci0gICAgZG9u
ZSggMCwgZmluYWxUZXh0ICk7Ci0gICAgcmV0dXJuIHRoaXM7Ci0gICAgfQotICAgIH07Ci0KLSAg
ICAvLyBBdHRhY2ggZGVmZXJyZWRzCi0gICAgZGVmZXJyZWQucHJvbWlzZSgganFYSFIgKS5jb21w
bGV0ZSA9IGNvbXBsZXRlRGVmZXJyZWQuYWRkOwotICAgIGpxWEhSLnN1Y2Nlc3MgPSBqcVhIUi5k
b25lOwotICAgIGpxWEhSLmVycm9yID0ganFYSFIuZmFpbDsKLQotICAgIC8vIFJlbW92ZSBoYXNo
IGNoYXJhY3RlciAoIzc1MzE6IGFuZCBzdHJpbmcgcHJvbW90aW9uKQotICAgIC8vIEFkZCBwcm90
b2NvbCBpZiBub3QgcHJvdmlkZWQgKCM1ODY2OiBJRTcgaXNzdWUgd2l0aCBwcm90b2NvbC1sZXNz
IHVybHMpCi0gICAgLy8gSGFuZGxlIGZhbHN5IHVybCBpbiB0aGUgc2V0dGluZ3Mgb2JqZWN0ICgj
MTAwOTM6IGNvbnNpc3RlbmN5IHdpdGggb2xkIHNpZ25hdHVyZSkKLSAgICAvLyBXZSBhbHNvIHVz
ZSB0aGUgdXJsIHBhcmFtZXRlciBpZiBhdmFpbGFibGUKLSAgICBzLnVybCA9ICggKCB1cmwgfHwg
cy51cmwgfHwgYWpheExvY2F0aW9uICkgKyAiIiApLnJlcGxhY2UoIHJoYXNoLCAiIiApLnJlcGxh
Y2UoIHJwcm90b2NvbCwgYWpheExvY1BhcnRzWyAxIF0gKyAiLy8iICk7Ci0KLSAgICAvLyBBbGlh
cyBtZXRob2Qgb3B0aW9uIHRvIHR5cGUgYXMgcGVyIHRpY2tldCAjMTIwMDQKLSAgICBzLnR5cGUg
PSBvcHRpb25zLm1ldGhvZCB8fCBvcHRpb25zLnR5cGUgfHwgcy5tZXRob2QgfHwgcy50eXBlOwot
Ci0gICAgLy8gRXh0cmFjdCBkYXRhVHlwZXMgbGlzdAotICAgIHMuZGF0YVR5cGVzID0galF1ZXJ5
LnRyaW0oIHMuZGF0YVR5cGUgfHwgIioiICkudG9Mb3dlckNhc2UoKS5tYXRjaCggY29yZV9ybm90
d2hpdGUgKSB8fCBbIiJdOwotCi0gICAgLy8gQSBjcm9zcy1kb21haW4gcmVxdWVzdCBpcyBpbiBv
cmRlciB3aGVuIHdlIGhhdmUgYSBwcm90b2NvbDpob3N0OnBvcnQgbWlzbWF0Y2gKLSAgICBpZiAo
IHMuY3Jvc3NEb21haW4gPT0gbnVsbCApIHsKLSAgICBwYXJ0cyA9IHJ1cmwuZXhlYyggcy51cmwu
dG9Mb3dlckNhc2UoKSApOwotICAgIHMuY3Jvc3NEb21haW4gPSAhISggcGFydHMgJiYKLSAgICAo
IHBhcnRzWyAxIF0gIT09IGFqYXhMb2NQYXJ0c1sgMSBdIHx8IHBhcnRzWyAyIF0gIT09IGFqYXhM
b2NQYXJ0c1sgMiBdIHx8Ci0gICAgKCBwYXJ0c1sgMyBdIHx8ICggcGFydHNbIDEgXSA9PT0gImh0
dHA6IiA/IDgwIDogNDQzICkgKSAhPQotICAgICggYWpheExvY1BhcnRzWyAzIF0gfHwgKCBhamF4
TG9jUGFydHNbIDEgXSA9PT0gImh0dHA6IiA/IDgwIDogNDQzICkgKSApCi0gICAgKTsKLSAgICB9
Ci0KLSAgICAvLyBDb252ZXJ0IGRhdGEgaWYgbm90IGFscmVhZHkgYSBzdHJpbmcKLSAgICBpZiAo
IHMuZGF0YSAmJiBzLnByb2Nlc3NEYXRhICYmIHR5cGVvZiBzLmRhdGEgIT09ICJzdHJpbmciICkg
ewotICAgIHMuZGF0YSA9IGpRdWVyeS5wYXJhbSggcy5kYXRhLCBzLnRyYWRpdGlvbmFsICk7Ci0g
ICAgfQotCi0gICAgLy8gQXBwbHkgcHJlZmlsdGVycwotICAgIGluc3BlY3RQcmVmaWx0ZXJzT3JU
cmFuc3BvcnRzKCBwcmVmaWx0ZXJzLCBzLCBvcHRpb25zLCBqcVhIUiApOwotCi0gICAgLy8gSWYg
cmVxdWVzdCB3YXMgYWJvcnRlZCBpbnNpZGUgYSBwcmVmaWx0ZXIsIHN0b3AgdGhlcmUKLSAgICBp
ZiAoIHN0YXRlID09PSAyICkgewotICAgIHJldHVybiBqcVhIUjsKLSAgICB9Ci0KLSAgICAvLyBX
ZSBjYW4gZmlyZSBnbG9iYWwgZXZlbnRzIGFzIG9mIG5vdyBpZiBhc2tlZCB0bwotICAgIGZpcmVH
bG9iYWxzID0gcy5nbG9iYWw7Ci0KLSAgICAvLyBXYXRjaCBmb3IgYSBuZXcgc2V0IG9mIHJlcXVl
c3RzCi0gICAgaWYgKCBmaXJlR2xvYmFscyAmJiBqUXVlcnkuYWN0aXZlKysgPT09IDAgKSB7Ci0g
ICAgalF1ZXJ5LmV2ZW50LnRyaWdnZXIoImFqYXhTdGFydCIpOwotICAgIH0KLQotICAgIC8vIFVw
cGVyY2FzZSB0aGUgdHlwZQotICAgIHMudHlwZSA9IHMudHlwZS50b1VwcGVyQ2FzZSgpOwotCi0g
ICAgLy8gRGV0ZXJtaW5lIGlmIHJlcXVlc3QgaGFzIGNvbnRlbnQKLSAgICBzLmhhc0NvbnRlbnQg
PSAhcm5vQ29udGVudC50ZXN0KCBzLnR5cGUgKTsKLQotICAgIC8vIFNhdmUgdGhlIFVSTCBpbiBj
YXNlIHdlJ3JlIHRveWluZyB3aXRoIHRoZSBJZi1Nb2RpZmllZC1TaW5jZQotICAgIC8vIGFuZC9v
ciBJZi1Ob25lLU1hdGNoIGhlYWRlciBsYXRlciBvbgotICAgIGNhY2hlVVJMID0gcy51cmw7Ci0K
LSAgICAvLyBNb3JlIG9wdGlvbnMgaGFuZGxpbmcgZm9yIHJlcXVlc3RzIHdpdGggbm8gY29udGVu
dAotICAgIGlmICggIXMuaGFzQ29udGVudCApIHsKLQotICAgIC8vIElmIGRhdGEgaXMgYXZhaWxh
YmxlLCBhcHBlbmQgZGF0YSB0byB1cmwKLSAgICBpZiAoIHMuZGF0YSApIHsKLSAgICBjYWNoZVVS
TCA9ICggcy51cmwgKz0gKCBhamF4X3JxdWVyeS50ZXN0KCBjYWNoZVVSTCApID8gIiYiIDogIj8i
ICkgKyBzLmRhdGEgKTsKLSAgICAvLyAjOTY4MjogcmVtb3ZlIGRhdGEgc28gdGhhdCBpdCdzIG5v
dCB1c2VkIGluIGFuIGV2ZW50dWFsIHJldHJ5Ci0gICAgZGVsZXRlIHMuZGF0YTsKLSAgICB9Ci0K
LSAgICAvLyBBZGQgYW50aS1jYWNoZSBpbiB1cmwgaWYgbmVlZGVkCi0gICAgaWYgKCBzLmNhY2hl
ID09PSBmYWxzZSApIHsKLSAgICBzLnVybCA9IHJ0cy50ZXN0KCBjYWNoZVVSTCApID8KLQotICAg
IC8vIElmIHRoZXJlIGlzIGFscmVhZHkgYSAnXycgcGFyYW1ldGVyLCBzZXQgaXRzIHZhbHVlCi0g
ICAgY2FjaGVVUkwucmVwbGFjZSggcnRzLCAiJDFfPSIgKyBhamF4X25vbmNlKysgKSA6Ci0KLSAg
ICAvLyBPdGhlcndpc2UgYWRkIG9uZSB0byB0aGUgZW5kCi0gICAgY2FjaGVVUkwgKyAoIGFqYXhf
cnF1ZXJ5LnRlc3QoIGNhY2hlVVJMICkgPyAiJiIgOiAiPyIgKSArICJfPSIgKyBhamF4X25vbmNl
Kys7Ci0gICAgfQotICAgIH0KLQotICAgIC8vIFNldCB0aGUgSWYtTW9kaWZpZWQtU2luY2UgYW5k
L29yIElmLU5vbmUtTWF0Y2ggaGVhZGVyLCBpZiBpbiBpZk1vZGlmaWVkIG1vZGUuCi0gICAgaWYg
KCBzLmlmTW9kaWZpZWQgKSB7Ci0gICAgaWYgKCBqUXVlcnkubGFzdE1vZGlmaWVkWyBjYWNoZVVS
TCBdICkgewotICAgIGpxWEhSLnNldFJlcXVlc3RIZWFkZXIoICJJZi1Nb2RpZmllZC1TaW5jZSIs
IGpRdWVyeS5sYXN0TW9kaWZpZWRbIGNhY2hlVVJMIF0gKTsKLSAgICB9Ci0gICAgaWYgKCBqUXVl
cnkuZXRhZ1sgY2FjaGVVUkwgXSApIHsKLSAgICBqcVhIUi5zZXRSZXF1ZXN0SGVhZGVyKCAiSWYt
Tm9uZS1NYXRjaCIsIGpRdWVyeS5ldGFnWyBjYWNoZVVSTCBdICk7Ci0gICAgfQotICAgIH0KLQot
ICAgIC8vIFNldCB0aGUgY29ycmVjdCBoZWFkZXIsIGlmIGRhdGEgaXMgYmVpbmcgc2VudAotICAg
IGlmICggcy5kYXRhICYmIHMuaGFzQ29udGVudCAmJiBzLmNvbnRlbnRUeXBlICE9PSBmYWxzZSB8
fCBvcHRpb25zLmNvbnRlbnRUeXBlICkgewotICAgIGpxWEhSLnNldFJlcXVlc3RIZWFkZXIoICJD
b250ZW50LVR5cGUiLCBzLmNvbnRlbnRUeXBlICk7Ci0gICAgfQotCi0gICAgLy8gU2V0IHRoZSBB
Y2NlcHRzIGhlYWRlciBmb3IgdGhlIHNlcnZlciwgZGVwZW5kaW5nIG9uIHRoZSBkYXRhVHlwZQot
ICAgIGpxWEhSLnNldFJlcXVlc3RIZWFkZXIoCi0gICAgIkFjY2VwdCIsCi0gICAgcy5kYXRhVHlw
ZXNbIDAgXSAmJiBzLmFjY2VwdHNbIHMuZGF0YVR5cGVzWzBdIF0gPwotICAgIHMuYWNjZXB0c1sg
cy5kYXRhVHlwZXNbMF0gXSArICggcy5kYXRhVHlwZXNbIDAgXSAhPT0gIioiID8gIiwgIiArIGFs
bFR5cGVzICsgIjsgcT0wLjAxIiA6ICIiICkgOgotICAgIHMuYWNjZXB0c1sgIioiIF0KLSAgICAp
OwotCi0gICAgLy8gQ2hlY2sgZm9yIGhlYWRlcnMgb3B0aW9uCi0gICAgZm9yICggaSBpbiBzLmhl
YWRlcnMgKSB7Ci0gICAganFYSFIuc2V0UmVxdWVzdEhlYWRlciggaSwgcy5oZWFkZXJzWyBpIF0g
KTsKLSAgICB9Ci0KLSAgICAvLyBBbGxvdyBjdXN0b20gaGVhZGVycy9taW1ldHlwZXMgYW5kIGVh
cmx5IGFib3J0Ci0gICAgaWYgKCBzLmJlZm9yZVNlbmQgJiYgKCBzLmJlZm9yZVNlbmQuY2FsbCgg
Y2FsbGJhY2tDb250ZXh0LCBqcVhIUiwgcyApID09PSBmYWxzZSB8fCBzdGF0ZSA9PT0gMiApICkg
ewotICAgIC8vIEFib3J0IGlmIG5vdCBkb25lIGFscmVhZHkgYW5kIHJldHVybgotICAgIHJldHVy
biBqcVhIUi5hYm9ydCgpOwotICAgIH0KLQotICAgIC8vIGFib3J0aW5nIGlzIG5vIGxvbmdlciBh
IGNhbmNlbGxhdGlvbgotICAgIHN0ckFib3J0ID0gImFib3J0IjsKLQotICAgIC8vIEluc3RhbGwg
Y2FsbGJhY2tzIG9uIGRlZmVycmVkcwotICAgIGZvciAoIGkgaW4geyBzdWNjZXNzOiAxLCBlcnJv
cjogMSwgY29tcGxldGU6IDEgfSApIHsKLSAgICBqcVhIUlsgaSBdKCBzWyBpIF0gKTsKLSAgICB9
Ci0KLSAgICAvLyBHZXQgdHJhbnNwb3J0Ci0gICAgdHJhbnNwb3J0ID0gaW5zcGVjdFByZWZpbHRl
cnNPclRyYW5zcG9ydHMoIHRyYW5zcG9ydHMsIHMsIG9wdGlvbnMsIGpxWEhSICk7Ci0KLSAgICAv
LyBJZiBubyB0cmFuc3BvcnQsIHdlIGF1dG8tYWJvcnQKLSAgICBpZiAoICF0cmFuc3BvcnQgKSB7
Ci0gICAgZG9uZSggLTEsICJObyBUcmFuc3BvcnQiICk7Ci0gICAgfSBlbHNlIHsKLSAgICBqcVhI
Ui5yZWFkeVN0YXRlID0gMTsKLQotICAgIC8vIFNlbmQgZ2xvYmFsIGV2ZW50Ci0gICAgaWYgKCBm
aXJlR2xvYmFscyApIHsKLSAgICBnbG9iYWxFdmVudENvbnRleHQudHJpZ2dlciggImFqYXhTZW5k
IiwgWyBqcVhIUiwgcyBdICk7Ci0gICAgfQotICAgIC8vIFRpbWVvdXQKLSAgICBpZiAoIHMuYXN5
bmMgJiYgcy50aW1lb3V0ID4gMCApIHsKLSAgICB0aW1lb3V0VGltZXIgPSBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgewotICAgIGpxWEhSLmFib3J0KCJ0aW1lb3V0Iik7Ci0gICAgfSwgcy50aW1lb3V0
ICk7Ci0gICAgfQotCi0gICAgdHJ5IHsKLSAgICBzdGF0ZSA9IDE7Ci0gICAgdHJhbnNwb3J0LnNl
bmQoIHJlcXVlc3RIZWFkZXJzLCBkb25lICk7Ci0gICAgfSBjYXRjaCAoIGUgKSB7Ci0gICAgLy8g
UHJvcGFnYXRlIGV4Y2VwdGlvbiBhcyBlcnJvciBpZiBub3QgZG9uZQotICAgIGlmICggc3RhdGUg
PCAyICkgewotICAgIGRvbmUoIC0xLCBlICk7Ci0gICAgLy8gU2ltcGx5IHJldGhyb3cgb3RoZXJ3
aXNlCi0gICAgfSBlbHNlIHsKLSAgICB0aHJvdyBlOwotICAgIH0KLSAgICB9Ci0gICAgfQotCi0g
ICAgLy8gQ2FsbGJhY2sgZm9yIHdoZW4gZXZlcnl0aGluZyBpcyBkb25lCi0gICAgZnVuY3Rpb24g
ZG9uZSggc3RhdHVzLCBuYXRpdmVTdGF0dXNUZXh0LCByZXNwb25zZXMsIGhlYWRlcnMgKSB7Ci0g
ICAgdmFyIGlzU3VjY2Vzcywgc3VjY2VzcywgZXJyb3IsIHJlc3BvbnNlLCBtb2RpZmllZCwKLSAg
ICBzdGF0dXNUZXh0ID0gbmF0aXZlU3RhdHVzVGV4dDsKLQotICAgIC8vIENhbGxlZCBvbmNlCi0g
ICAgaWYgKCBzdGF0ZSA9PT0gMiApIHsKLSAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gU3Rh
dGUgaXMgImRvbmUiIG5vdwotICAgIHN0YXRlID0gMjsKLQotICAgIC8vIENsZWFyIHRpbWVvdXQg
aWYgaXQgZXhpc3RzCi0gICAgaWYgKCB0aW1lb3V0VGltZXIgKSB7Ci0gICAgY2xlYXJUaW1lb3V0
KCB0aW1lb3V0VGltZXIgKTsKLSAgICB9Ci0KLSAgICAvLyBEZXJlZmVyZW5jZSB0cmFuc3BvcnQg
Zm9yIGVhcmx5IGdhcmJhZ2UgY29sbGVjdGlvbgotICAgIC8vIChubyBtYXR0ZXIgaG93IGxvbmcg
dGhlIGpxWEhSIG9iamVjdCB3aWxsIGJlIHVzZWQpCi0gICAgdHJhbnNwb3J0ID0gdW5kZWZpbmVk
OwotCi0gICAgLy8gQ2FjaGUgcmVzcG9uc2UgaGVhZGVycwotICAgIHJlc3BvbnNlSGVhZGVyc1N0
cmluZyA9IGhlYWRlcnMgfHwgIiI7Ci0KLSAgICAvLyBTZXQgcmVhZHlTdGF0ZQotICAgIGpxWEhS
LnJlYWR5U3RhdGUgPSBzdGF0dXMgPiAwID8gNCA6IDA7Ci0KLSAgICAvLyBHZXQgcmVzcG9uc2Ug
ZGF0YQotICAgIGlmICggcmVzcG9uc2VzICkgewotICAgIHJlc3BvbnNlID0gYWpheEhhbmRsZVJl
c3BvbnNlcyggcywganFYSFIsIHJlc3BvbnNlcyApOwotICAgIH0KLQotICAgIC8vIElmIHN1Y2Nl
c3NmdWwsIGhhbmRsZSB0eXBlIGNoYWluaW5nCi0gICAgaWYgKCBzdGF0dXMgPj0gMjAwICYmIHN0
YXR1cyA8IDMwMCB8fCBzdGF0dXMgPT09IDMwNCApIHsKLQotICAgIC8vIFNldCB0aGUgSWYtTW9k
aWZpZWQtU2luY2UgYW5kL29yIElmLU5vbmUtTWF0Y2ggaGVhZGVyLCBpZiBpbiBpZk1vZGlmaWVk
IG1vZGUuCi0gICAgaWYgKCBzLmlmTW9kaWZpZWQgKSB7Ci0gICAgbW9kaWZpZWQgPSBqcVhIUi5n
ZXRSZXNwb25zZUhlYWRlcigiTGFzdC1Nb2RpZmllZCIpOwotICAgIGlmICggbW9kaWZpZWQgKSB7
Ci0gICAgalF1ZXJ5Lmxhc3RNb2RpZmllZFsgY2FjaGVVUkwgXSA9IG1vZGlmaWVkOwotICAgIH0K
LSAgICBtb2RpZmllZCA9IGpxWEhSLmdldFJlc3BvbnNlSGVhZGVyKCJldGFnIik7Ci0gICAgaWYg
KCBtb2RpZmllZCApIHsKLSAgICBqUXVlcnkuZXRhZ1sgY2FjaGVVUkwgXSA9IG1vZGlmaWVkOwot
ICAgIH0KLSAgICB9Ci0KLSAgICAvLyBpZiBubyBjb250ZW50Ci0gICAgaWYgKCBzdGF0dXMgPT09
IDIwNCApIHsKLSAgICBpc1N1Y2Nlc3MgPSB0cnVlOwotICAgIHN0YXR1c1RleHQgPSAibm9jb250
ZW50IjsKLQotICAgIC8vIGlmIG5vdCBtb2RpZmllZAotICAgIH0gZWxzZSBpZiAoIHN0YXR1cyA9
PT0gMzA0ICkgewotICAgIGlzU3VjY2VzcyA9IHRydWU7Ci0gICAgc3RhdHVzVGV4dCA9ICJub3Rt
b2RpZmllZCI7Ci0KLSAgICAvLyBJZiB3ZSBoYXZlIGRhdGEsIGxldCdzIGNvbnZlcnQgaXQKLSAg
ICB9IGVsc2UgewotICAgIGlzU3VjY2VzcyA9IGFqYXhDb252ZXJ0KCBzLCByZXNwb25zZSApOwot
ICAgIHN0YXR1c1RleHQgPSBpc1N1Y2Nlc3Muc3RhdGU7Ci0gICAgc3VjY2VzcyA9IGlzU3VjY2Vz
cy5kYXRhOwotICAgIGVycm9yID0gaXNTdWNjZXNzLmVycm9yOwotICAgIGlzU3VjY2VzcyA9ICFl
cnJvcjsKLSAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAvLyBXZSBleHRyYWN0IGVycm9yIGZyb20g
c3RhdHVzVGV4dAotICAgIC8vIHRoZW4gbm9ybWFsaXplIHN0YXR1c1RleHQgYW5kIHN0YXR1cyBm
b3Igbm9uLWFib3J0cwotICAgIGVycm9yID0gc3RhdHVzVGV4dDsKLSAgICBpZiAoIHN0YXR1cyB8
fCAhc3RhdHVzVGV4dCApIHsKLSAgICBzdGF0dXNUZXh0ID0gImVycm9yIjsKLSAgICBpZiAoIHN0
YXR1cyA8IDAgKSB7Ci0gICAgc3RhdHVzID0gMDsKLSAgICB9Ci0gICAgfQotICAgIH0KLQotICAg
IC8vIFNldCBkYXRhIGZvciB0aGUgZmFrZSB4aHIgb2JqZWN0Ci0gICAganFYSFIuc3RhdHVzID0g
c3RhdHVzOwotICAgIGpxWEhSLnN0YXR1c1RleHQgPSAoIG5hdGl2ZVN0YXR1c1RleHQgfHwgc3Rh
dHVzVGV4dCApICsgIiI7Ci0KLSAgICAvLyBTdWNjZXNzL0Vycm9yCi0gICAgaWYgKCBpc1N1Y2Nl
c3MgKSB7Ci0gICAgZGVmZXJyZWQucmVzb2x2ZVdpdGgoIGNhbGxiYWNrQ29udGV4dCwgWyBzdWNj
ZXNzLCBzdGF0dXNUZXh0LCBqcVhIUiBdICk7Ci0gICAgfSBlbHNlIHsKLSAgICBkZWZlcnJlZC5y
ZWplY3RXaXRoKCBjYWxsYmFja0NvbnRleHQsIFsganFYSFIsIHN0YXR1c1RleHQsIGVycm9yIF0g
KTsKLSAgICB9Ci0KLSAgICAvLyBTdGF0dXMtZGVwZW5kZW50IGNhbGxiYWNrcwotICAgIGpxWEhS
LnN0YXR1c0NvZGUoIHN0YXR1c0NvZGUgKTsKLSAgICBzdGF0dXNDb2RlID0gdW5kZWZpbmVkOwot
Ci0gICAgaWYgKCBmaXJlR2xvYmFscyApIHsKLSAgICBnbG9iYWxFdmVudENvbnRleHQudHJpZ2dl
ciggaXNTdWNjZXNzID8gImFqYXhTdWNjZXNzIiA6ICJhamF4RXJyb3IiLAotICAgIFsganFYSFIs
IHMsIGlzU3VjY2VzcyA/IHN1Y2Nlc3MgOiBlcnJvciBdICk7Ci0gICAgfQotCi0gICAgLy8gQ29t
cGxldGUKLSAgICBjb21wbGV0ZURlZmVycmVkLmZpcmVXaXRoKCBjYWxsYmFja0NvbnRleHQsIFsg
anFYSFIsIHN0YXR1c1RleHQgXSApOwotCi0gICAgaWYgKCBmaXJlR2xvYmFscyApIHsKLSAgICBn
bG9iYWxFdmVudENvbnRleHQudHJpZ2dlciggImFqYXhDb21wbGV0ZSIsIFsganFYSFIsIHMgXSAp
OwotICAgIC8vIEhhbmRsZSB0aGUgZ2xvYmFsIEFKQVggY291bnRlcgotICAgIGlmICggISggLS1q
UXVlcnkuYWN0aXZlICkgKSB7Ci0gICAgalF1ZXJ5LmV2ZW50LnRyaWdnZXIoImFqYXhTdG9wIik7
Ci0gICAgfQotICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4ganFYSFI7Ci0gICAgfSwKLQotICAg
IGdldFNjcmlwdDogZnVuY3Rpb24oIHVybCwgY2FsbGJhY2sgKSB7Ci0gICAgcmV0dXJuIGpRdWVy
eS5nZXQoIHVybCwgdW5kZWZpbmVkLCBjYWxsYmFjaywgInNjcmlwdCIgKTsKLSAgICB9LAotCi0g
ICAgZ2V0SlNPTjogZnVuY3Rpb24oIHVybCwgZGF0YSwgY2FsbGJhY2sgKSB7Ci0gICAgcmV0dXJu
IGpRdWVyeS5nZXQoIHVybCwgZGF0YSwgY2FsbGJhY2ssICJqc29uIiApOwotICAgIH0KLX0pOwot
Ci0vKiBIYW5kbGVzIHJlc3BvbnNlcyB0byBhbiBhamF4IHJlcXVlc3Q6Ci0gKiAtIHNldHMgYWxs
IHJlc3BvbnNlWFhYIGZpZWxkcyBhY2NvcmRpbmdseQotICogLSBmaW5kcyB0aGUgcmlnaHQgZGF0
YVR5cGUgKG1lZGlhdGVzIGJldHdlZW4gY29udGVudC10eXBlIGFuZCBleHBlY3RlZCBkYXRhVHlw
ZSkKLSAqIC0gcmV0dXJucyB0aGUgY29ycmVzcG9uZGluZyByZXNwb25zZQotICovCi1mdW5jdGlv
biBhamF4SGFuZGxlUmVzcG9uc2VzKCBzLCBqcVhIUiwgcmVzcG9uc2VzICkgewotICAgIHZhciBm
aXJzdERhdGFUeXBlLCBjdCwgZmluYWxEYXRhVHlwZSwgdHlwZSwKLSAgICBjb250ZW50cyA9IHMu
Y29udGVudHMsCi0gICAgZGF0YVR5cGVzID0gcy5kYXRhVHlwZXMsCi0gICAgcmVzcG9uc2VGaWVs
ZHMgPSBzLnJlc3BvbnNlRmllbGRzOwotCi0gICAgLy8gRmlsbCByZXNwb25zZVhYWCBmaWVsZHMK
LSAgICBmb3IgKCB0eXBlIGluIHJlc3BvbnNlRmllbGRzICkgewotICAgIGlmICggdHlwZSBpbiBy
ZXNwb25zZXMgKSB7Ci0gICAganFYSFJbIHJlc3BvbnNlRmllbGRzW3R5cGVdIF0gPSByZXNwb25z
ZXNbIHR5cGUgXTsKLSAgICB9Ci0gICAgfQotCi0gICAgLy8gUmVtb3ZlIGF1dG8gZGF0YVR5cGUg
YW5kIGdldCBjb250ZW50LXR5cGUgaW4gdGhlIHByb2Nlc3MKLSAgICB3aGlsZSggZGF0YVR5cGVz
WyAwIF0gPT09ICIqIiApIHsKLSAgICBkYXRhVHlwZXMuc2hpZnQoKTsKLSAgICBpZiAoIGN0ID09
PSB1bmRlZmluZWQgKSB7Ci0gICAgY3QgPSBzLm1pbWVUeXBlIHx8IGpxWEhSLmdldFJlc3BvbnNl
SGVhZGVyKCJDb250ZW50LVR5cGUiKTsKLSAgICB9Ci0gICAgfQotCi0gICAgLy8gQ2hlY2sgaWYg
d2UncmUgZGVhbGluZyB3aXRoIGEga25vd24gY29udGVudC10eXBlCi0gICAgaWYgKCBjdCApIHsK
LSAgICBmb3IgKCB0eXBlIGluIGNvbnRlbnRzICkgewotICAgIGlmICggY29udGVudHNbIHR5cGUg
XSAmJiBjb250ZW50c1sgdHlwZSBdLnRlc3QoIGN0ICkgKSB7Ci0gICAgZGF0YVR5cGVzLnVuc2hp
ZnQoIHR5cGUgKTsKLSAgICBicmVhazsKLSAgICB9Ci0gICAgfQotICAgIH0KLQotICAgIC8vIENo
ZWNrIHRvIHNlZSBpZiB3ZSBoYXZlIGEgcmVzcG9uc2UgZm9yIHRoZSBleHBlY3RlZCBkYXRhVHlw
ZQotICAgIGlmICggZGF0YVR5cGVzWyAwIF0gaW4gcmVzcG9uc2VzICkgewotICAgIGZpbmFsRGF0
YVR5cGUgPSBkYXRhVHlwZXNbIDAgXTsKLSAgICB9IGVsc2UgewotICAgIC8vIFRyeSBjb252ZXJ0
aWJsZSBkYXRhVHlwZXMKLSAgICBmb3IgKCB0eXBlIGluIHJlc3BvbnNlcyApIHsKLSAgICBpZiAo
ICFkYXRhVHlwZXNbIDAgXSB8fCBzLmNvbnZlcnRlcnNbIHR5cGUgKyAiICIgKyBkYXRhVHlwZXNb
MF0gXSApIHsKLSAgICBmaW5hbERhdGFUeXBlID0gdHlwZTsKLSAgICBicmVhazsKLSAgICB9Ci0g
ICAgaWYgKCAhZmlyc3REYXRhVHlwZSApIHsKLSAgICBmaXJzdERhdGFUeXBlID0gdHlwZTsKLSAg
ICB9Ci0gICAgfQotICAgIC8vIE9yIGp1c3QgdXNlIGZpcnN0IG9uZQotICAgIGZpbmFsRGF0YVR5
cGUgPSBmaW5hbERhdGFUeXBlIHx8IGZpcnN0RGF0YVR5cGU7Ci0gICAgfQotCi0gICAgLy8gSWYg
d2UgZm91bmQgYSBkYXRhVHlwZQotICAgIC8vIFdlIGFkZCB0aGUgZGF0YVR5cGUgdG8gdGhlIGxp
c3QgaWYgbmVlZGVkCi0gICAgLy8gYW5kIHJldHVybiB0aGUgY29ycmVzcG9uZGluZyByZXNwb25z
ZQotICAgIGlmICggZmluYWxEYXRhVHlwZSApIHsKLSAgICBpZiAoIGZpbmFsRGF0YVR5cGUgIT09
IGRhdGFUeXBlc1sgMCBdICkgewotICAgIGRhdGFUeXBlcy51bnNoaWZ0KCBmaW5hbERhdGFUeXBl
ICk7Ci0gICAgfQotICAgIHJldHVybiByZXNwb25zZXNbIGZpbmFsRGF0YVR5cGUgXTsKLSAgICB9
Ci19Ci0KLS8vIENoYWluIGNvbnZlcnNpb25zIGdpdmVuIHRoZSByZXF1ZXN0IGFuZCB0aGUgb3Jp
Z2luYWwgcmVzcG9uc2UKLWZ1bmN0aW9uIGFqYXhDb252ZXJ0KCBzLCByZXNwb25zZSApIHsKLSAg
ICB2YXIgY29udjIsIGN1cnJlbnQsIGNvbnYsIHRtcCwKLSAgICBjb252ZXJ0ZXJzID0ge30sCi0g
ICAgaSA9IDAsCi0gICAgLy8gV29yayB3aXRoIGEgY29weSBvZiBkYXRhVHlwZXMgaW4gY2FzZSB3
ZSBuZWVkIHRvIG1vZGlmeSBpdCBmb3IgY29udmVyc2lvbgotICAgIGRhdGFUeXBlcyA9IHMuZGF0
YVR5cGVzLnNsaWNlKCksCi0gICAgcHJldiA9IGRhdGFUeXBlc1sgMCBdOwotCi0gICAgLy8gQXBw
bHkgdGhlIGRhdGFGaWx0ZXIgaWYgcHJvdmlkZWQKLSAgICBpZiAoIHMuZGF0YUZpbHRlciApIHsK
LSAgICByZXNwb25zZSA9IHMuZGF0YUZpbHRlciggcmVzcG9uc2UsIHMuZGF0YVR5cGUgKTsKLSAg
ICB9Ci0KLSAgICAvLyBDcmVhdGUgY29udmVydGVycyBtYXAgd2l0aCBsb3dlcmNhc2VkIGtleXMK
LSAgICBpZiAoIGRhdGFUeXBlc1sgMSBdICkgewotICAgIGZvciAoIGNvbnYgaW4gcy5jb252ZXJ0
ZXJzICkgewotICAgIGNvbnZlcnRlcnNbIGNvbnYudG9Mb3dlckNhc2UoKSBdID0gcy5jb252ZXJ0
ZXJzWyBjb252IF07Ci0gICAgfQotICAgIH0KLQotICAgIC8vIENvbnZlcnQgdG8gZWFjaCBzZXF1
ZW50aWFsIGRhdGFUeXBlLCB0b2xlcmF0aW5nIGxpc3QgbW9kaWZpY2F0aW9uCi0gICAgZm9yICgg
OyAoY3VycmVudCA9IGRhdGFUeXBlc1srK2ldKTsgKSB7Ci0KLSAgICAvLyBUaGVyZSdzIG9ubHkg
d29yayB0byBkbyBpZiBjdXJyZW50IGRhdGFUeXBlIGlzIG5vbi1hdXRvCi0gICAgaWYgKCBjdXJy
ZW50ICE9PSAiKiIgKSB7Ci0KLSAgICAvLyBDb252ZXJ0IHJlc3BvbnNlIGlmIHByZXYgZGF0YVR5
cGUgaXMgbm9uLWF1dG8gYW5kIGRpZmZlcnMgZnJvbSBjdXJyZW50Ci0gICAgaWYgKCBwcmV2ICE9
PSAiKiIgJiYgcHJldiAhPT0gY3VycmVudCApIHsKLQotICAgIC8vIFNlZWsgYSBkaXJlY3QgY29u
dmVydGVyCi0gICAgY29udiA9IGNvbnZlcnRlcnNbIHByZXYgKyAiICIgKyBjdXJyZW50IF0gfHwg
Y29udmVydGVyc1sgIiogIiArIGN1cnJlbnQgXTsKLQotICAgIC8vIElmIG5vbmUgZm91bmQsIHNl
ZWsgYSBwYWlyCi0gICAgaWYgKCAhY29udiApIHsKLSAgICBmb3IgKCBjb252MiBpbiBjb252ZXJ0
ZXJzICkgewotCi0gICAgLy8gSWYgY29udjIgb3V0cHV0cyBjdXJyZW50Ci0gICAgdG1wID0gY29u
djIuc3BsaXQoIiAiKTsKLSAgICBpZiAoIHRtcFsgMSBdID09PSBjdXJyZW50ICkgewotCi0gICAg
Ly8gSWYgcHJldiBjYW4gYmUgY29udmVydGVkIHRvIGFjY2VwdGVkIGlucHV0Ci0gICAgY29udiA9
IGNvbnZlcnRlcnNbIHByZXYgKyAiICIgKyB0bXBbIDAgXSBdIHx8Ci0gICAgY29udmVydGVyc1sg
IiogIiArIHRtcFsgMCBdIF07Ci0gICAgaWYgKCBjb252ICkgewotICAgIC8vIENvbmRlbnNlIGVx
dWl2YWxlbmNlIGNvbnZlcnRlcnMKLSAgICBpZiAoIGNvbnYgPT09IHRydWUgKSB7Ci0gICAgY29u
diA9IGNvbnZlcnRlcnNbIGNvbnYyIF07Ci0KLSAgICAvLyBPdGhlcndpc2UsIGluc2VydCB0aGUg
aW50ZXJtZWRpYXRlIGRhdGFUeXBlCi0gICAgfSBlbHNlIGlmICggY29udmVydGVyc1sgY29udjIg
XSAhPT0gdHJ1ZSApIHsKLSAgICBjdXJyZW50ID0gdG1wWyAwIF07Ci0gICAgZGF0YVR5cGVzLnNw
bGljZSggaS0tLCAwLCBjdXJyZW50ICk7Ci0gICAgfQotCi0gICAgYnJlYWs7Ci0gICAgfQotICAg
IH0KLSAgICB9Ci0gICAgfQotCi0gICAgLy8gQXBwbHkgY29udmVydGVyIChpZiBub3QgYW4gZXF1
aXZhbGVuY2UpCi0gICAgaWYgKCBjb252ICE9PSB0cnVlICkgewotCi0gICAgLy8gVW5sZXNzIGVy
cm9ycyBhcmUgYWxsb3dlZCB0byBidWJibGUsIGNhdGNoIGFuZCByZXR1cm4gdGhlbQotICAgIGlm
ICggY29udiAmJiBzWyJ0aHJvd3MiXSApIHsKLSAgICByZXNwb25zZSA9IGNvbnYoIHJlc3BvbnNl
ICk7Ci0gICAgfSBlbHNlIHsKLSAgICB0cnkgewotICAgIHJlc3BvbnNlID0gY29udiggcmVzcG9u
c2UgKTsKLSAgICB9IGNhdGNoICggZSApIHsKLSAgICByZXR1cm4geyBzdGF0ZTogInBhcnNlcmVy
cm9yIiwgZXJyb3I6IGNvbnYgPyBlIDogIk5vIGNvbnZlcnNpb24gZnJvbSAiICsgcHJldiArICIg
dG8gIiArIGN1cnJlbnQgfTsKLSAgICB9Ci0gICAgfQotICAgIH0KLSAgICB9Ci0KLSAgICAvLyBV
cGRhdGUgcHJldiBmb3IgbmV4dCBpdGVyYXRpb24KLSAgICBwcmV2ID0gY3VycmVudDsKLSAgICB9
Ci0gICAgfQotCi0gICAgcmV0dXJuIHsgc3RhdGU6ICJzdWNjZXNzIiwgZGF0YTogcmVzcG9uc2Ug
fTsKLX0KLS8vIEluc3RhbGwgc2NyaXB0IGRhdGFUeXBlCi1qUXVlcnkuYWpheFNldHVwKHsKLSAg
ICBhY2NlcHRzOiB7Ci0gICAgc2NyaXB0OiAidGV4dC9qYXZhc2NyaXB0LCBhcHBsaWNhdGlvbi9q
YXZhc2NyaXB0LCBhcHBsaWNhdGlvbi9lY21hc2NyaXB0LCBhcHBsaWNhdGlvbi94LWVjbWFzY3Jp
cHQiCi0gICAgfSwKLSAgICBjb250ZW50czogewotICAgIHNjcmlwdDogLyg/OmphdmF8ZWNtYSlz
Y3JpcHQvCi0gICAgfSwKLSAgICBjb252ZXJ0ZXJzOiB7Ci0gICAgInRleHQgc2NyaXB0IjogZnVu
Y3Rpb24oIHRleHQgKSB7Ci0gICAgalF1ZXJ5Lmdsb2JhbEV2YWwoIHRleHQgKTsKLSAgICByZXR1
cm4gdGV4dDsKLSAgICB9Ci0gICAgfQotfSk7Ci0KLS8vIEhhbmRsZSBjYWNoZSdzIHNwZWNpYWwg
Y2FzZSBhbmQgZ2xvYmFsCi1qUXVlcnkuYWpheFByZWZpbHRlciggInNjcmlwdCIsIGZ1bmN0aW9u
KCBzICkgewotICAgIGlmICggcy5jYWNoZSA9PT0gdW5kZWZpbmVkICkgewotICAgIHMuY2FjaGUg
PSBmYWxzZTsKLSAgICB9Ci0gICAgaWYgKCBzLmNyb3NzRG9tYWluICkgewotICAgIHMudHlwZSA9
ICJHRVQiOwotICAgIHMuZ2xvYmFsID0gZmFsc2U7Ci0gICAgfQotfSk7Ci0KLS8vIEJpbmQgc2Ny
aXB0IHRhZyBoYWNrIHRyYW5zcG9ydAotalF1ZXJ5LmFqYXhUcmFuc3BvcnQoICJzY3JpcHQiLCBm
dW5jdGlvbihzKSB7Ci0KLSAgICAvLyBUaGlzIHRyYW5zcG9ydCBvbmx5IGRlYWxzIHdpdGggY3Jv
c3MgZG9tYWluIHJlcXVlc3RzCi0gICAgaWYgKCBzLmNyb3NzRG9tYWluICkgewotCi0gICAgdmFy
IHNjcmlwdCwKLSAgICBoZWFkID0gZG9jdW1lbnQuaGVhZCB8fCBqUXVlcnkoImhlYWQiKVswXSB8
fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7Ci0KLSAgICByZXR1cm4gewotCi0gICAgc2VuZDog
ZnVuY3Rpb24oIF8sIGNhbGxiYWNrICkgewotCi0gICAgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgic2NyaXB0Iik7Ci0KLSAgICBzY3JpcHQuYXN5bmMgPSB0cnVlOwotCi0gICAgaWYg
KCBzLnNjcmlwdENoYXJzZXQgKSB7Ci0gICAgc2NyaXB0LmNoYXJzZXQgPSBzLnNjcmlwdENoYXJz
ZXQ7Ci0gICAgfQotCi0gICAgc2NyaXB0LnNyYyA9IHMudXJsOwotCi0gICAgLy8gQXR0YWNoIGhh
bmRsZXJzIGZvciBhbGwgYnJvd3NlcnMKLSAgICBzY3JpcHQub25sb2FkID0gc2NyaXB0Lm9ucmVh
ZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCBfLCBpc0Fib3J0ICkgewotCi0gICAgaWYgKCBpc0Fi
b3J0IHx8ICFzY3JpcHQucmVhZHlTdGF0ZSB8fCAvbG9hZGVkfGNvbXBsZXRlLy50ZXN0KCBzY3Jp
cHQucmVhZHlTdGF0ZSApICkgewotCi0gICAgLy8gSGFuZGxlIG1lbW9yeSBsZWFrIGluIElFCi0g
ICAgc2NyaXB0Lm9ubG9hZCA9IHNjcmlwdC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBudWxsOwotCi0g
ICAgLy8gUmVtb3ZlIHRoZSBzY3JpcHQKLSAgICBpZiAoIHNjcmlwdC5wYXJlbnROb2RlICkgewot
ICAgIHNjcmlwdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKCBzY3JpcHQgKTsKLSAgICB9Ci0KLSAg
ICAvLyBEZXJlZmVyZW5jZSB0aGUgc2NyaXB0Ci0gICAgc2NyaXB0ID0gbnVsbDsKLQotICAgIC8v
IENhbGxiYWNrIGlmIG5vdCBhYm9ydAotICAgIGlmICggIWlzQWJvcnQgKSB7Ci0gICAgY2FsbGJh
Y2soIDIwMCwgInN1Y2Nlc3MiICk7Ci0gICAgfQotICAgIH0KLSAgICB9OwotCi0gICAgLy8gQ2ly
Y3VtdmVudCBJRTYgYnVncyB3aXRoIGJhc2UgZWxlbWVudHMgKCMyNzA5IGFuZCAjNDM3OCkgYnkg
cHJlcGVuZGluZwotICAgIC8vIFVzZSBuYXRpdmUgRE9NIG1hbmlwdWxhdGlvbiB0byBhdm9pZCBv
dXIgZG9tTWFuaXAgQUpBWCB0cmlja2VyeQotICAgIGhlYWQuaW5zZXJ0QmVmb3JlKCBzY3JpcHQs
IGhlYWQuZmlyc3RDaGlsZCApOwotICAgIH0sCi0KLSAgICBhYm9ydDogZnVuY3Rpb24oKSB7Ci0g
ICAgaWYgKCBzY3JpcHQgKSB7Ci0gICAgc2NyaXB0Lm9ubG9hZCggdW5kZWZpbmVkLCB0cnVlICk7
Ci0gICAgfQotICAgIH0KLSAgICB9OwotICAgIH0KLX0pOwotdmFyIG9sZENhbGxiYWNrcyA9IFtd
LAotICAgIHJqc29ucCA9IC8oPSlcPyg/PSZ8JCl8XD9cPy87Ci0KLS8vIERlZmF1bHQganNvbnAg
c2V0dGluZ3MKLWpRdWVyeS5hamF4U2V0dXAoewotICAgIGpzb25wOiAiY2FsbGJhY2siLAotICAg
IGpzb25wQ2FsbGJhY2s6IGZ1bmN0aW9uKCkgewotICAgIHZhciBjYWxsYmFjayA9IG9sZENhbGxi
YWNrcy5wb3AoKSB8fCAoIGpRdWVyeS5leHBhbmRvICsgIl8iICsgKCBhamF4X25vbmNlKysgKSAp
OwotICAgIHRoaXNbIGNhbGxiYWNrIF0gPSB0cnVlOwotICAgIHJldHVybiBjYWxsYmFjazsKLSAg
ICB9Ci19KTsKLQotLy8gRGV0ZWN0LCBub3JtYWxpemUgb3B0aW9ucyBhbmQgaW5zdGFsbCBjYWxs
YmFja3MgZm9yIGpzb25wIHJlcXVlc3RzCi1qUXVlcnkuYWpheFByZWZpbHRlciggImpzb24ganNv
bnAiLCBmdW5jdGlvbiggcywgb3JpZ2luYWxTZXR0aW5ncywganFYSFIgKSB7Ci0KLSAgICB2YXIg
Y2FsbGJhY2tOYW1lLCBvdmVyd3JpdHRlbiwgcmVzcG9uc2VDb250YWluZXIsCi0gICAganNvblBy
b3AgPSBzLmpzb25wICE9PSBmYWxzZSAmJiAoIHJqc29ucC50ZXN0KCBzLnVybCApID8KLSAgICAi
dXJsIiA6Ci0gICAgdHlwZW9mIHMuZGF0YSA9PT0gInN0cmluZyIgJiYgISggcy5jb250ZW50VHlw
ZSB8fCAiIiApLmluZGV4T2YoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpICYm
IHJqc29ucC50ZXN0KCBzLmRhdGEgKSAmJiAiZGF0YSIKLSAgICApOwotCi0gICAgLy8gSGFuZGxl
IGlmZiB0aGUgZXhwZWN0ZWQgZGF0YSB0eXBlIGlzICJqc29ucCIgb3Igd2UgaGF2ZSBhIHBhcmFt
ZXRlciB0byBzZXQKLSAgICBpZiAoIGpzb25Qcm9wIHx8IHMuZGF0YVR5cGVzWyAwIF0gPT09ICJq
c29ucCIgKSB7Ci0KLSAgICAvLyBHZXQgY2FsbGJhY2sgbmFtZSwgcmVtZW1iZXJpbmcgcHJlZXhp
c3RpbmcgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIGl0Ci0gICAgY2FsbGJhY2tOYW1lID0gcy5qc29u
cENhbGxiYWNrID0galF1ZXJ5LmlzRnVuY3Rpb24oIHMuanNvbnBDYWxsYmFjayApID8KLSAgICBz
Lmpzb25wQ2FsbGJhY2soKSA6Ci0gICAgcy5qc29ucENhbGxiYWNrOwotCi0gICAgLy8gSW5zZXJ0
IGNhbGxiYWNrIGludG8gdXJsIG9yIGZvcm0gZGF0YQotICAgIGlmICgganNvblByb3AgKSB7Ci0g
ICAgc1sganNvblByb3AgXSA9IHNbIGpzb25Qcm9wIF0ucmVwbGFjZSggcmpzb25wLCAiJDEiICsg
Y2FsbGJhY2tOYW1lICk7Ci0gICAgfSBlbHNlIGlmICggcy5qc29ucCAhPT0gZmFsc2UgKSB7Ci0g
ICAgcy51cmwgKz0gKCBhamF4X3JxdWVyeS50ZXN0KCBzLnVybCApID8gIiYiIDogIj8iICkgKyBz
Lmpzb25wICsgIj0iICsgY2FsbGJhY2tOYW1lOwotICAgIH0KLQotICAgIC8vIFVzZSBkYXRhIGNv
bnZlcnRlciB0byByZXRyaWV2ZSBqc29uIGFmdGVyIHNjcmlwdCBleGVjdXRpb24KLSAgICBzLmNv
bnZlcnRlcnNbInNjcmlwdCBqc29uIl0gPSBmdW5jdGlvbigpIHsKLSAgICBpZiAoICFyZXNwb25z
ZUNvbnRhaW5lciApIHsKLSAgICBqUXVlcnkuZXJyb3IoIGNhbGxiYWNrTmFtZSArICIgd2FzIG5v
dCBjYWxsZWQiICk7Ci0gICAgfQotICAgIHJldHVybiByZXNwb25zZUNvbnRhaW5lclsgMCBdOwot
ICAgIH07Ci0KLSAgICAvLyBmb3JjZSBqc29uIGRhdGFUeXBlCi0gICAgcy5kYXRhVHlwZXNbIDAg
XSA9ICJqc29uIjsKLQotICAgIC8vIEluc3RhbGwgY2FsbGJhY2sKLSAgICBvdmVyd3JpdHRlbiA9
IHdpbmRvd1sgY2FsbGJhY2tOYW1lIF07Ci0gICAgd2luZG93WyBjYWxsYmFja05hbWUgXSA9IGZ1
bmN0aW9uKCkgewotICAgIHJlc3BvbnNlQ29udGFpbmVyID0gYXJndW1lbnRzOwotICAgIH07Ci0K
LSAgICAvLyBDbGVhbi11cCBmdW5jdGlvbiAoZmlyZXMgYWZ0ZXIgY29udmVydGVycykKLSAgICBq
cVhIUi5hbHdheXMoZnVuY3Rpb24oKSB7Ci0gICAgLy8gUmVzdG9yZSBwcmVleGlzdGluZyB2YWx1
ZQotICAgIHdpbmRvd1sgY2FsbGJhY2tOYW1lIF0gPSBvdmVyd3JpdHRlbjsKLQotICAgIC8vIFNh
dmUgYmFjayBhcyBmcmVlCi0gICAgaWYgKCBzWyBjYWxsYmFja05hbWUgXSApIHsKLSAgICAvLyBt
YWtlIHN1cmUgdGhhdCByZS11c2luZyB0aGUgb3B0aW9ucyBkb2Vzbid0IHNjcmV3IHRoaW5ncyBh
cm91bmQKLSAgICBzLmpzb25wQ2FsbGJhY2sgPSBvcmlnaW5hbFNldHRpbmdzLmpzb25wQ2FsbGJh
Y2s7Ci0KLSAgICAvLyBzYXZlIHRoZSBjYWxsYmFjayBuYW1lIGZvciBmdXR1cmUgdXNlCi0gICAg
b2xkQ2FsbGJhY2tzLnB1c2goIGNhbGxiYWNrTmFtZSApOwotICAgIH0KLQotICAgIC8vIENhbGwg
aWYgaXQgd2FzIGEgZnVuY3Rpb24gYW5kIHdlIGhhdmUgYSByZXNwb25zZQotICAgIGlmICggcmVz
cG9uc2VDb250YWluZXIgJiYgalF1ZXJ5LmlzRnVuY3Rpb24oIG92ZXJ3cml0dGVuICkgKSB7Ci0g
ICAgb3ZlcndyaXR0ZW4oIHJlc3BvbnNlQ29udGFpbmVyWyAwIF0gKTsKLSAgICB9Ci0KLSAgICBy
ZXNwb25zZUNvbnRhaW5lciA9IG92ZXJ3cml0dGVuID0gdW5kZWZpbmVkOwotICAgIH0pOwotCi0g
ICAgLy8gRGVsZWdhdGUgdG8gc2NyaXB0Ci0gICAgcmV0dXJuICJzY3JpcHQiOwotICAgIH0KLX0p
OwotdmFyIHhockNhbGxiYWNrcywgeGhyU3VwcG9ydGVkLAotICAgIHhocklkID0gMCwKLSAgICAv
LyAjNTI4MDogSW50ZXJuZXQgRXhwbG9yZXIgd2lsbCBrZWVwIGNvbm5lY3Rpb25zIGFsaXZlIGlm
IHdlIGRvbid0IGFib3J0IG9uIHVubG9hZAotICAgIHhock9uVW5sb2FkQWJvcnQgPSB3aW5kb3cu
QWN0aXZlWE9iamVjdCAmJiBmdW5jdGlvbigpIHsKLSAgICAvLyBBYm9ydCBhbGwgcGVuZGluZyBy
ZXF1ZXN0cwotICAgIHZhciBrZXk7Ci0gICAgZm9yICgga2V5IGluIHhockNhbGxiYWNrcyApIHsK
LSAgICB4aHJDYWxsYmFja3NbIGtleSBdKCB1bmRlZmluZWQsIHRydWUgKTsKLSAgICB9Ci0gICAg
fTsKLQotLy8gRnVuY3Rpb25zIHRvIGNyZWF0ZSB4aHJzCi1mdW5jdGlvbiBjcmVhdGVTdGFuZGFy
ZFhIUigpIHsKLSAgICB0cnkgewotICAgIHJldHVybiBuZXcgd2luZG93LlhNTEh0dHBSZXF1ZXN0
KCk7Ci0gICAgfSBjYXRjaCggZSApIHt9Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZUFjdGl2ZVhIUigp
IHsKLSAgICB0cnkgewotICAgIHJldHVybiBuZXcgd2luZG93LkFjdGl2ZVhPYmplY3QoIk1pY3Jv
c29mdC5YTUxIVFRQIik7Ci0gICAgfSBjYXRjaCggZSApIHt9Ci19Ci0KLS8vIENyZWF0ZSB0aGUg
cmVxdWVzdCBvYmplY3QKLS8vIChUaGlzIGlzIHN0aWxsIGF0dGFjaGVkIHRvIGFqYXhTZXR0aW5n
cyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSkKLWpRdWVyeS5hamF4U2V0dGluZ3MueGhyID0g
d2luZG93LkFjdGl2ZVhPYmplY3QgPwotICAgIC8qIE1pY3Jvc29mdCBmYWlsZWQgdG8gcHJvcGVy
bHkKLSAgICAgKiBpbXBsZW1lbnQgdGhlIFhNTEh0dHBSZXF1ZXN0IGluIElFNyAoY2FuJ3QgcmVx
dWVzdCBsb2NhbCBmaWxlcyksCi0gICAgICogc28gd2UgdXNlIHRoZSBBY3RpdmVYT2JqZWN0IHdo
ZW4gaXQgaXMgYXZhaWxhYmxlCi0gICAgICogQWRkaXRpb25hbGx5IFhNTEh0dHBSZXF1ZXN0IGNh
biBiZSBkaXNhYmxlZCBpbiBJRTcvSUU4IHNvCi0gICAgICogd2UgbmVlZCBhIGZhbGxiYWNrLgot
ICAgICAqLwotICAgIGZ1bmN0aW9uKCkgewotICAgIHJldHVybiAhdGhpcy5pc0xvY2FsICYmIGNy
ZWF0ZVN0YW5kYXJkWEhSKCkgfHwgY3JlYXRlQWN0aXZlWEhSKCk7Ci0gICAgfSA6Ci0gICAgLy8g
Rm9yIGFsbCBvdGhlciBicm93c2VycywgdXNlIHRoZSBzdGFuZGFyZCBYTUxIdHRwUmVxdWVzdCBv
YmplY3QKLSAgICBjcmVhdGVTdGFuZGFyZFhIUjsKLQotLy8gRGV0ZXJtaW5lIHN1cHBvcnQgcHJv
cGVydGllcwoteGhyU3VwcG9ydGVkID0galF1ZXJ5LmFqYXhTZXR0aW5ncy54aHIoKTsKLWpRdWVy
eS5zdXBwb3J0LmNvcnMgPSAhIXhoclN1cHBvcnRlZCAmJiAoICJ3aXRoQ3JlZGVudGlhbHMiIGlu
IHhoclN1cHBvcnRlZCApOwoteGhyU3VwcG9ydGVkID0galF1ZXJ5LnN1cHBvcnQuYWpheCA9ICEh
eGhyU3VwcG9ydGVkOwotCi0vLyBDcmVhdGUgdHJhbnNwb3J0IGlmIHRoZSBicm93c2VyIGNhbiBw
cm92aWRlIGFuIHhocgotaWYgKCB4aHJTdXBwb3J0ZWQgKSB7Ci0KLSAgICBqUXVlcnkuYWpheFRy
YW5zcG9ydChmdW5jdGlvbiggcyApIHsKLSAgICAvLyBDcm9zcyBkb21haW4gb25seSBhbGxvd2Vk
IGlmIHN1cHBvcnRlZCB0aHJvdWdoIFhNTEh0dHBSZXF1ZXN0Ci0gICAgaWYgKCAhcy5jcm9zc0Rv
bWFpbiB8fCBqUXVlcnkuc3VwcG9ydC5jb3JzICkgewotCi0gICAgdmFyIGNhbGxiYWNrOwotCi0g
ICAgcmV0dXJuIHsKLSAgICBzZW5kOiBmdW5jdGlvbiggaGVhZGVycywgY29tcGxldGUgKSB7Ci0K
LSAgICAvLyBHZXQgYSBuZXcgeGhyCi0gICAgdmFyIGhhbmRsZSwgaSwKLSAgICB4aHIgPSBzLnho
cigpOwotCi0gICAgLy8gT3BlbiB0aGUgc29ja2V0Ci0gICAgLy8gUGFzc2luZyBudWxsIHVzZXJu
YW1lLCBnZW5lcmF0ZXMgYSBsb2dpbiBwb3B1cCBvbiBPcGVyYSAoIzI4NjUpCi0gICAgaWYgKCBz
LnVzZXJuYW1lICkgewotICAgIHhoci5vcGVuKCBzLnR5cGUsIHMudXJsLCBzLmFzeW5jLCBzLnVz
ZXJuYW1lLCBzLnBhc3N3b3JkICk7Ci0gICAgfSBlbHNlIHsKLSAgICB4aHIub3Blbiggcy50eXBl
LCBzLnVybCwgcy5hc3luYyApOwotICAgIH0KLQotICAgIC8vIEFwcGx5IGN1c3RvbSBmaWVsZHMg
aWYgcHJvdmlkZWQKLSAgICBpZiAoIHMueGhyRmllbGRzICkgewotICAgIGZvciAoIGkgaW4gcy54
aHJGaWVsZHMgKSB7Ci0gICAgeGhyWyBpIF0gPSBzLnhockZpZWxkc1sgaSBdOwotICAgIH0KLSAg
ICB9Ci0KLSAgICAvLyBPdmVycmlkZSBtaW1lIHR5cGUgaWYgbmVlZGVkCi0gICAgaWYgKCBzLm1p
bWVUeXBlICYmIHhoci5vdmVycmlkZU1pbWVUeXBlICkgewotICAgIHhoci5vdmVycmlkZU1pbWVU
eXBlKCBzLm1pbWVUeXBlICk7Ci0gICAgfQotCi0gICAgLy8gWC1SZXF1ZXN0ZWQtV2l0aCBoZWFk
ZXIKLSAgICAvLyBGb3IgY3Jvc3MtZG9tYWluIHJlcXVlc3RzLCBzZWVpbmcgYXMgY29uZGl0aW9u
cyBmb3IgYSBwcmVmbGlnaHQgYXJlCi0gICAgLy8gYWtpbiB0byBhIGppZ3NhdyBwdXp6bGUsIHdl
IHNpbXBseSBuZXZlciBzZXQgaXQgdG8gYmUgc3VyZS4KLSAgICAvLyAoaXQgY2FuIGFsd2F5cyBi
ZSBzZXQgb24gYSBwZXItcmVxdWVzdCBiYXNpcyBvciBldmVuIHVzaW5nIGFqYXhTZXR1cCkKLSAg
ICAvLyBGb3Igc2FtZS1kb21haW4gcmVxdWVzdHMsIHdvbid0IGNoYW5nZSBoZWFkZXIgaWYgYWxy
ZWFkeSBwcm92aWRlZC4KLSAgICBpZiAoICFzLmNyb3NzRG9tYWluICYmICFoZWFkZXJzWyJYLVJl
cXVlc3RlZC1XaXRoIl0gKSB7Ci0gICAgaGVhZGVyc1siWC1SZXF1ZXN0ZWQtV2l0aCJdID0gIlhN
TEh0dHBSZXF1ZXN0IjsKLSAgICB9Ci0KLSAgICAvLyBOZWVkIGFuIGV4dHJhIHRyeS9jYXRjaCBm
b3IgY3Jvc3MgZG9tYWluIHJlcXVlc3RzIGluIEZpcmVmb3ggMwotICAgIHRyeSB7Ci0gICAgZm9y
ICggaSBpbiBoZWFkZXJzICkgewotICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKCBpLCBoZWFkZXJz
WyBpIF0gKTsKLSAgICB9Ci0gICAgfSBjYXRjaCggZXJyICkge30KLQotICAgIC8vIERvIHNlbmQg
dGhlIHJlcXVlc3QKLSAgICAvLyBUaGlzIG1heSByYWlzZSBhbiBleGNlcHRpb24gd2hpY2ggaXMg
YWN0dWFsbHkKLSAgICAvLyBoYW5kbGVkIGluIGpRdWVyeS5hamF4IChzbyBubyB0cnkvY2F0Y2gg
aGVyZSkKLSAgICB4aHIuc2VuZCggKCBzLmhhc0NvbnRlbnQgJiYgcy5kYXRhICkgfHwgbnVsbCAp
OwotCi0gICAgLy8gTGlzdGVuZXIKLSAgICBjYWxsYmFjayA9IGZ1bmN0aW9uKCBfLCBpc0Fib3J0
ICkgewotICAgIHZhciBzdGF0dXMsIHJlc3BvbnNlSGVhZGVycywgc3RhdHVzVGV4dCwgcmVzcG9u
c2VzOwotCi0gICAgLy8gRmlyZWZveCB0aHJvd3MgZXhjZXB0aW9ucyB3aGVuIGFjY2Vzc2luZyBw
cm9wZXJ0aWVzCi0gICAgLy8gb2YgYW4geGhyIHdoZW4gYSBuZXR3b3JrIGVycm9yIG9jY3VycmVk
Ci0gICAgLy8gaHR0cDovL2hlbHBmdWwua25vYnMtZGlhbHMuY29tL2luZGV4LnBocC9Db21wb25l
bnRfcmV0dXJuZWRfZmFpbHVyZV9jb2RlOl8weDgwMDQwMTExXyhOU19FUlJPUl9OT1RfQVZBSUxB
QkxFKQotICAgIHRyeSB7Ci0KLSAgICAvLyBXYXMgbmV2ZXIgY2FsbGVkIGFuZCBpcyBhYm9ydGVk
IG9yIGNvbXBsZXRlCi0gICAgaWYgKCBjYWxsYmFjayAmJiAoIGlzQWJvcnQgfHwgeGhyLnJlYWR5
U3RhdGUgPT09IDQgKSApIHsKLQotICAgIC8vIE9ubHkgY2FsbGVkIG9uY2UKLSAgICBjYWxsYmFj
ayA9IHVuZGVmaW5lZDsKLQotICAgIC8vIERvIG5vdCBrZWVwIGFzIGFjdGl2ZSBhbnltb3JlCi0g
ICAgaWYgKCBoYW5kbGUgKSB7Ci0gICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGpRdWVyeS5u
b29wOwotICAgIGlmICggeGhyT25VbmxvYWRBYm9ydCApIHsKLSAgICBkZWxldGUgeGhyQ2FsbGJh
Y2tzWyBoYW5kbGUgXTsKLSAgICB9Ci0gICAgfQotCi0gICAgLy8gSWYgaXQncyBhbiBhYm9ydAot
ICAgIGlmICggaXNBYm9ydCApIHsKLSAgICAvLyBBYm9ydCBpdCBtYW51YWxseSBpZiBuZWVkZWQK
LSAgICBpZiAoIHhoci5yZWFkeVN0YXRlICE9PSA0ICkgewotICAgIHhoci5hYm9ydCgpOwotICAg
IH0KLSAgICB9IGVsc2UgewotICAgIHJlc3BvbnNlcyA9IHt9OwotICAgIHN0YXR1cyA9IHhoci5z
dGF0dXM7Ci0gICAgcmVzcG9uc2VIZWFkZXJzID0geGhyLmdldEFsbFJlc3BvbnNlSGVhZGVycygp
OwotCi0gICAgLy8gV2hlbiByZXF1ZXN0aW5nIGJpbmFyeSBkYXRhLCBJRTYtOSB3aWxsIHRocm93
IGFuIGV4Y2VwdGlvbgotICAgIC8vIG9uIGFueSBhdHRlbXB0IHRvIGFjY2VzcyByZXNwb25zZVRl
eHQgKCMxMTQyNikKLSAgICBpZiAoIHR5cGVvZiB4aHIucmVzcG9uc2VUZXh0ID09PSAic3RyaW5n
IiApIHsKLSAgICByZXNwb25zZXMudGV4dCA9IHhoci5yZXNwb25zZVRleHQ7Ci0gICAgfQotCi0g
ICAgLy8gRmlyZWZveCB0aHJvd3MgYW4gZXhjZXB0aW9uIHdoZW4gYWNjZXNzaW5nCi0gICAgLy8g
c3RhdHVzVGV4dCBmb3IgZmF1bHR5IGNyb3NzLWRvbWFpbiByZXF1ZXN0cwotICAgIHRyeSB7Ci0g
ICAgc3RhdHVzVGV4dCA9IHhoci5zdGF0dXNUZXh0OwotICAgIH0gY2F0Y2goIGUgKSB7Ci0gICAg
Ly8gV2Ugbm9ybWFsaXplIHdpdGggV2Via2l0IGdpdmluZyBhbiBlbXB0eSBzdGF0dXNUZXh0Ci0g
ICAgc3RhdHVzVGV4dCA9ICIiOwotICAgIH0KLQotICAgIC8vIEZpbHRlciBzdGF0dXMgZm9yIG5v
biBzdGFuZGFyZCBiZWhhdmlvcnMKLQotICAgIC8vIElmIHRoZSByZXF1ZXN0IGlzIGxvY2FsIGFu
ZCB3ZSBoYXZlIGRhdGE6IGFzc3VtZSBhIHN1Y2Nlc3MKLSAgICAvLyAoc3VjY2VzcyB3aXRoIG5v
IGRhdGEgd29uJ3QgZ2V0IG5vdGlmaWVkLCB0aGF0J3MgdGhlIGJlc3Qgd2UKLSAgICAvLyBjYW4g
ZG8gZ2l2ZW4gY3VycmVudCBpbXBsZW1lbnRhdGlvbnMpCi0gICAgaWYgKCAhc3RhdHVzICYmIHMu
aXNMb2NhbCAmJiAhcy5jcm9zc0RvbWFpbiApIHsKLSAgICBzdGF0dXMgPSByZXNwb25zZXMudGV4
dCA/IDIwMCA6IDQwNDsKLSAgICAvLyBJRSAtICMxNDUwOiBzb21ldGltZXMgcmV0dXJucyAxMjIz
IHdoZW4gaXQgc2hvdWxkIGJlIDIwNAotICAgIH0gZWxzZSBpZiAoIHN0YXR1cyA9PT0gMTIyMyAp
IHsKLSAgICBzdGF0dXMgPSAyMDQ7Ci0gICAgfQotICAgIH0KLSAgICB9Ci0gICAgfSBjYXRjaCgg
ZmlyZWZveEFjY2Vzc0V4Y2VwdGlvbiApIHsKLSAgICBpZiAoICFpc0Fib3J0ICkgewotICAgIGNv
bXBsZXRlKCAtMSwgZmlyZWZveEFjY2Vzc0V4Y2VwdGlvbiApOwotICAgIH0KLSAgICB9Ci0KLSAg
ICAvLyBDYWxsIGNvbXBsZXRlIGlmIG5lZWRlZAotICAgIGlmICggcmVzcG9uc2VzICkgewotICAg
IGNvbXBsZXRlKCBzdGF0dXMsIHN0YXR1c1RleHQsIHJlc3BvbnNlcywgcmVzcG9uc2VIZWFkZXJz
ICk7Ci0gICAgfQotICAgIH07Ci0KLSAgICBpZiAoICFzLmFzeW5jICkgewotICAgIC8vIGlmIHdl
J3JlIGluIHN5bmMgbW9kZSB3ZSBmaXJlIHRoZSBjYWxsYmFjawotICAgIGNhbGxiYWNrKCk7Ci0g
ICAgfSBlbHNlIGlmICggeGhyLnJlYWR5U3RhdGUgPT09IDQgKSB7Ci0gICAgLy8gKElFNiAmIElF
NykgaWYgaXQncyBpbiBjYWNoZSBhbmQgaGFzIGJlZW4KLSAgICAvLyByZXRyaWV2ZWQgZGlyZWN0
bHkgd2UgbmVlZCB0byBmaXJlIHRoZSBjYWxsYmFjawotICAgIHNldFRpbWVvdXQoIGNhbGxiYWNr
ICk7Ci0gICAgfSBlbHNlIHsKLSAgICBoYW5kbGUgPSArK3hocklkOwotICAgIGlmICggeGhyT25V
bmxvYWRBYm9ydCApIHsKLSAgICAvLyBDcmVhdGUgdGhlIGFjdGl2ZSB4aHJzIGNhbGxiYWNrcyBs
aXN0IGlmIG5lZWRlZAotICAgIC8vIGFuZCBhdHRhY2ggdGhlIHVubG9hZCBoYW5kbGVyCi0gICAg
aWYgKCAheGhyQ2FsbGJhY2tzICkgewotICAgIHhockNhbGxiYWNrcyA9IHt9OwotICAgIGpRdWVy
eSggd2luZG93ICkudW5sb2FkKCB4aHJPblVubG9hZEFib3J0ICk7Ci0gICAgfQotICAgIC8vIEFk
ZCB0byBsaXN0IG9mIGFjdGl2ZSB4aHJzIGNhbGxiYWNrcwotICAgIHhockNhbGxiYWNrc1sgaGFu
ZGxlIF0gPSBjYWxsYmFjazsKLSAgICB9Ci0gICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGNh
bGxiYWNrOwotICAgIH0KLSAgICB9LAotCi0gICAgYWJvcnQ6IGZ1bmN0aW9uKCkgewotICAgIGlm
ICggY2FsbGJhY2sgKSB7Ci0gICAgY2FsbGJhY2soIHVuZGVmaW5lZCwgdHJ1ZSApOwotICAgIH0K
LSAgICB9Ci0gICAgfTsKLSAgICB9Ci0gICAgfSk7Ci19Ci12YXIgZnhOb3csIHRpbWVySWQsCi0g
ICAgcmZ4dHlwZXMgPSAvXig/OnRvZ2dsZXxzaG93fGhpZGUpJC8sCi0gICAgcmZ4bnVtID0gbmV3
IFJlZ0V4cCggIl4oPzooWystXSk9fCkoIiArIGNvcmVfcG51bSArICIpKFthLXolXSopJCIsICJp
IiApLAotICAgIHJydW4gPSAvcXVldWVIb29rcyQvLAotICAgIGFuaW1hdGlvblByZWZpbHRlcnMg
PSBbIGRlZmF1bHRQcmVmaWx0ZXIgXSwKLSAgICB0d2VlbmVycyA9IHsKLSAgICAiKiI6IFtmdW5j
dGlvbiggcHJvcCwgdmFsdWUgKSB7Ci0gICAgdmFyIGVuZCwgdW5pdCwKLSAgICB0d2VlbiA9IHRo
aXMuY3JlYXRlVHdlZW4oIHByb3AsIHZhbHVlICksCi0gICAgcGFydHMgPSByZnhudW0uZXhlYygg
dmFsdWUgKSwKLSAgICB0YXJnZXQgPSB0d2Vlbi5jdXIoKSwKLSAgICBzdGFydCA9ICt0YXJnZXQg
fHwgMCwKLSAgICBzY2FsZSA9IDEsCi0gICAgbWF4SXRlcmF0aW9ucyA9IDIwOwotCi0gICAgaWYg
KCBwYXJ0cyApIHsKLSAgICBlbmQgPSArcGFydHNbMl07Ci0gICAgdW5pdCA9IHBhcnRzWzNdIHx8
ICggalF1ZXJ5LmNzc051bWJlclsgcHJvcCBdID8gIiIgOiAicHgiICk7Ci0KLSAgICAvLyBXZSBu
ZWVkIHRvIGNvbXB1dGUgc3RhcnRpbmcgdmFsdWUKLSAgICBpZiAoIHVuaXQgIT09ICJweCIgJiYg
c3RhcnQgKSB7Ci0gICAgLy8gSXRlcmF0aXZlbHkgYXBwcm94aW1hdGUgZnJvbSBhIG5vbnplcm8g
c3RhcnRpbmcgcG9pbnQKLSAgICAvLyBQcmVmZXIgdGhlIGN1cnJlbnQgcHJvcGVydHksIGJlY2F1
c2UgdGhpcyBwcm9jZXNzIHdpbGwgYmUgdHJpdmlhbCBpZiBpdCB1c2VzIHRoZSBzYW1lIHVuaXRz
Ci0gICAgLy8gRmFsbGJhY2sgdG8gZW5kIG9yIGEgc2ltcGxlIGNvbnN0YW50Ci0gICAgc3RhcnQg
PSBqUXVlcnkuY3NzKCB0d2Vlbi5lbGVtLCBwcm9wLCB0cnVlICkgfHwgZW5kIHx8IDE7Ci0KLSAg
ICBkbyB7Ci0gICAgLy8gSWYgcHJldmlvdXMgaXRlcmF0aW9uIHplcm9lZCBvdXQsIGRvdWJsZSB1
bnRpbCB3ZSBnZXQgKnNvbWV0aGluZyoKLSAgICAvLyBVc2UgYSBzdHJpbmcgZm9yIGRvdWJsaW5n
IGZhY3RvciBzbyB3ZSBkb24ndCBhY2NpZGVudGFsbHkgc2VlIHNjYWxlIGFzIHVuY2hhbmdlZCBi
ZWxvdwotICAgIHNjYWxlID0gc2NhbGUgfHwgIi41IjsKLQotICAgIC8vIEFkanVzdCBhbmQgYXBw
bHkKLSAgICBzdGFydCA9IHN0YXJ0IC8gc2NhbGU7Ci0gICAgalF1ZXJ5LnN0eWxlKCB0d2Vlbi5l
bGVtLCBwcm9wLCBzdGFydCArIHVuaXQgKTsKLQotICAgIC8vIFVwZGF0ZSBzY2FsZSwgdG9sZXJh
dGluZyB6ZXJvIG9yIE5hTiBmcm9tIHR3ZWVuLmN1cigpCi0gICAgLy8gQW5kIGJyZWFraW5nIHRo
ZSBsb29wIGlmIHNjYWxlIGlzIHVuY2hhbmdlZCBvciBwZXJmZWN0LCBvciBpZiB3ZSd2ZSBqdXN0
IGhhZCBlbm91Z2gKLSAgICB9IHdoaWxlICggc2NhbGUgIT09IChzY2FsZSA9IHR3ZWVuLmN1cigp
IC8gdGFyZ2V0KSAmJiBzY2FsZSAhPT0gMSAmJiAtLW1heEl0ZXJhdGlvbnMgKTsKLSAgICB9Ci0K
LSAgICB0d2Vlbi51bml0ID0gdW5pdDsKLSAgICB0d2Vlbi5zdGFydCA9IHN0YXJ0OwotICAgIC8v
IElmIGEgKz0vLT0gdG9rZW4gd2FzIHByb3ZpZGVkLCB3ZSdyZSBkb2luZyBhIHJlbGF0aXZlIGFu
aW1hdGlvbgotICAgIHR3ZWVuLmVuZCA9IHBhcnRzWzFdID8gc3RhcnQgKyAoIHBhcnRzWzFdICsg
MSApICogZW5kIDogZW5kOwotICAgIH0KLSAgICByZXR1cm4gdHdlZW47Ci0gICAgfV0KLSAgICB9
OwotCi0vLyBBbmltYXRpb25zIGNyZWF0ZWQgc3luY2hyb25vdXNseSB3aWxsIHJ1biBzeW5jaHJv
bm91c2x5Ci1mdW5jdGlvbiBjcmVhdGVGeE5vdygpIHsKLSAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgewotICAgIGZ4Tm93ID0gdW5kZWZpbmVkOwotICAgIH0pOwotICAgIHJldHVybiAoIGZ4Tm93
ID0galF1ZXJ5Lm5vdygpICk7Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZVR3ZWVucyggYW5pbWF0aW9u
LCBwcm9wcyApIHsKLSAgICBqUXVlcnkuZWFjaCggcHJvcHMsIGZ1bmN0aW9uKCBwcm9wLCB2YWx1
ZSApIHsKLSAgICB2YXIgY29sbGVjdGlvbiA9ICggdHdlZW5lcnNbIHByb3AgXSB8fCBbXSApLmNv
bmNhdCggdHdlZW5lcnNbICIqIiBdICksCi0gICAgaW5kZXggPSAwLAotICAgIGxlbmd0aCA9IGNv
bGxlY3Rpb24ubGVuZ3RoOwotICAgIGZvciAoIDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7
Ci0gICAgaWYgKCBjb2xsZWN0aW9uWyBpbmRleCBdLmNhbGwoIGFuaW1hdGlvbiwgcHJvcCwgdmFs
dWUgKSApIHsKLQotICAgIC8vIHdlJ3JlIGRvbmUgd2l0aCB0aGlzIHByb3BlcnR5Ci0gICAgcmV0
dXJuOwotICAgIH0KLSAgICB9Ci0gICAgfSk7Ci19Ci0KLWZ1bmN0aW9uIEFuaW1hdGlvbiggZWxl
bSwgcHJvcGVydGllcywgb3B0aW9ucyApIHsKLSAgICB2YXIgcmVzdWx0LAotICAgIHN0b3BwZWQs
Ci0gICAgaW5kZXggPSAwLAotICAgIGxlbmd0aCA9IGFuaW1hdGlvblByZWZpbHRlcnMubGVuZ3Ro
LAotICAgIGRlZmVycmVkID0galF1ZXJ5LkRlZmVycmVkKCkuYWx3YXlzKCBmdW5jdGlvbigpIHsK
LSAgICAvLyBkb24ndCBtYXRjaCBlbGVtIGluIHRoZSA6YW5pbWF0ZWQgc2VsZWN0b3IKLSAgICBk
ZWxldGUgdGljay5lbGVtOwotICAgIH0pLAotICAgIHRpY2sgPSBmdW5jdGlvbigpIHsKLSAgICBp
ZiAoIHN0b3BwZWQgKSB7Ci0gICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICB2YXIgY3VycmVu
dFRpbWUgPSBmeE5vdyB8fCBjcmVhdGVGeE5vdygpLAotICAgIHJlbWFpbmluZyA9IE1hdGgubWF4
KCAwLCBhbmltYXRpb24uc3RhcnRUaW1lICsgYW5pbWF0aW9uLmR1cmF0aW9uIC0gY3VycmVudFRp
bWUgKSwKLSAgICAvLyBhcmNoYWljIGNyYXNoIGJ1ZyB3b24ndCBhbGxvdyB1cyB0byB1c2UgMSAt
ICggMC41IHx8IDAgKSAoIzEyNDk3KQotICAgIHRlbXAgPSByZW1haW5pbmcgLyBhbmltYXRpb24u
ZHVyYXRpb24gfHwgMCwKLSAgICBwZXJjZW50ID0gMSAtIHRlbXAsCi0gICAgaW5kZXggPSAwLAot
ICAgIGxlbmd0aCA9IGFuaW1hdGlvbi50d2VlbnMubGVuZ3RoOwotCi0gICAgZm9yICggOyBpbmRl
eCA8IGxlbmd0aCA7IGluZGV4KysgKSB7Ci0gICAgYW5pbWF0aW9uLnR3ZWVuc1sgaW5kZXggXS5y
dW4oIHBlcmNlbnQgKTsKLSAgICB9Ci0KLSAgICBkZWZlcnJlZC5ub3RpZnlXaXRoKCBlbGVtLCBb
IGFuaW1hdGlvbiwgcGVyY2VudCwgcmVtYWluaW5nIF0pOwotCi0gICAgaWYgKCBwZXJjZW50IDwg
MSAmJiBsZW5ndGggKSB7Ci0gICAgcmV0dXJuIHJlbWFpbmluZzsKLSAgICB9IGVsc2UgewotICAg
IGRlZmVycmVkLnJlc29sdmVXaXRoKCBlbGVtLCBbIGFuaW1hdGlvbiBdICk7Ci0gICAgcmV0dXJu
IGZhbHNlOwotICAgIH0KLSAgICB9LAotICAgIGFuaW1hdGlvbiA9IGRlZmVycmVkLnByb21pc2Uo
ewotICAgIGVsZW06IGVsZW0sCi0gICAgcHJvcHM6IGpRdWVyeS5leHRlbmQoIHt9LCBwcm9wZXJ0
aWVzICksCi0gICAgb3B0czogalF1ZXJ5LmV4dGVuZCggdHJ1ZSwgeyBzcGVjaWFsRWFzaW5nOiB7
fSB9LCBvcHRpb25zICksCi0gICAgb3JpZ2luYWxQcm9wZXJ0aWVzOiBwcm9wZXJ0aWVzLAotICAg
IG9yaWdpbmFsT3B0aW9uczogb3B0aW9ucywKLSAgICBzdGFydFRpbWU6IGZ4Tm93IHx8IGNyZWF0
ZUZ4Tm93KCksCi0gICAgZHVyYXRpb246IG9wdGlvbnMuZHVyYXRpb24sCi0gICAgdHdlZW5zOiBb
XSwKLSAgICBjcmVhdGVUd2VlbjogZnVuY3Rpb24oIHByb3AsIGVuZCApIHsKLSAgICB2YXIgdHdl
ZW4gPSBqUXVlcnkuVHdlZW4oIGVsZW0sIGFuaW1hdGlvbi5vcHRzLCBwcm9wLCBlbmQsCi0gICAg
YW5pbWF0aW9uLm9wdHMuc3BlY2lhbEVhc2luZ1sgcHJvcCBdIHx8IGFuaW1hdGlvbi5vcHRzLmVh
c2luZyApOwotICAgIGFuaW1hdGlvbi50d2VlbnMucHVzaCggdHdlZW4gKTsKLSAgICByZXR1cm4g
dHdlZW47Ci0gICAgfSwKLSAgICBzdG9wOiBmdW5jdGlvbiggZ290b0VuZCApIHsKLSAgICB2YXIg
aW5kZXggPSAwLAotICAgIC8vIGlmIHdlIGFyZSBnb2luZyB0byB0aGUgZW5kLCB3ZSB3YW50IHRv
IHJ1biBhbGwgdGhlIHR3ZWVucwotICAgIC8vIG90aGVyd2lzZSB3ZSBza2lwIHRoaXMgcGFydAot
ICAgIGxlbmd0aCA9IGdvdG9FbmQgPyBhbmltYXRpb24udHdlZW5zLmxlbmd0aCA6IDA7Ci0gICAg
aWYgKCBzdG9wcGVkICkgewotICAgIHJldHVybiB0aGlzOwotICAgIH0KLSAgICBzdG9wcGVkID0g
dHJ1ZTsKLSAgICBmb3IgKCA7IGluZGV4IDwgbGVuZ3RoIDsgaW5kZXgrKyApIHsKLSAgICBhbmlt
YXRpb24udHdlZW5zWyBpbmRleCBdLnJ1biggMSApOwotICAgIH0KLQotICAgIC8vIHJlc29sdmUg
d2hlbiB3ZSBwbGF5ZWQgdGhlIGxhc3QgZnJhbWUKLSAgICAvLyBvdGhlcndpc2UsIHJlamVjdAot
ICAgIGlmICggZ290b0VuZCApIHsKLSAgICBkZWZlcnJlZC5yZXNvbHZlV2l0aCggZWxlbSwgWyBh
bmltYXRpb24sIGdvdG9FbmQgXSApOwotICAgIH0gZWxzZSB7Ci0gICAgZGVmZXJyZWQucmVqZWN0
V2l0aCggZWxlbSwgWyBhbmltYXRpb24sIGdvdG9FbmQgXSApOwotICAgIH0KLSAgICByZXR1cm4g
dGhpczsKLSAgICB9Ci0gICAgfSksCi0gICAgcHJvcHMgPSBhbmltYXRpb24ucHJvcHM7Ci0KLSAg
ICBwcm9wRmlsdGVyKCBwcm9wcywgYW5pbWF0aW9uLm9wdHMuc3BlY2lhbEVhc2luZyApOwotCi0g
ICAgZm9yICggOyBpbmRleCA8IGxlbmd0aCA7IGluZGV4KysgKSB7Ci0gICAgcmVzdWx0ID0gYW5p
bWF0aW9uUHJlZmlsdGVyc1sgaW5kZXggXS5jYWxsKCBhbmltYXRpb24sIGVsZW0sIHByb3BzLCBh
bmltYXRpb24ub3B0cyApOwotICAgIGlmICggcmVzdWx0ICkgewotICAgIHJldHVybiByZXN1bHQ7
Ci0gICAgfQotICAgIH0KLQotICAgIGNyZWF0ZVR3ZWVucyggYW5pbWF0aW9uLCBwcm9wcyApOwot
Ci0gICAgaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggYW5pbWF0aW9uLm9wdHMuc3RhcnQgKSApIHsK
LSAgICBhbmltYXRpb24ub3B0cy5zdGFydC5jYWxsKCBlbGVtLCBhbmltYXRpb24gKTsKLSAgICB9
Ci0KLSAgICBqUXVlcnkuZngudGltZXIoCi0gICAgalF1ZXJ5LmV4dGVuZCggdGljaywgewotICAg
IGVsZW06IGVsZW0sCi0gICAgYW5pbTogYW5pbWF0aW9uLAotICAgIHF1ZXVlOiBhbmltYXRpb24u
b3B0cy5xdWV1ZQotICAgIH0pCi0gICAgKTsKLQotICAgIC8vIGF0dGFjaCBjYWxsYmFja3MgZnJv
bSBvcHRpb25zCi0gICAgcmV0dXJuIGFuaW1hdGlvbi5wcm9ncmVzcyggYW5pbWF0aW9uLm9wdHMu
cHJvZ3Jlc3MgKQotICAgIC5kb25lKCBhbmltYXRpb24ub3B0cy5kb25lLCBhbmltYXRpb24ub3B0
cy5jb21wbGV0ZSApCi0gICAgLmZhaWwoIGFuaW1hdGlvbi5vcHRzLmZhaWwgKQotICAgIC5hbHdh
eXMoIGFuaW1hdGlvbi5vcHRzLmFsd2F5cyApOwotfQotCi1mdW5jdGlvbiBwcm9wRmlsdGVyKCBw
cm9wcywgc3BlY2lhbEVhc2luZyApIHsKLSAgICB2YXIgdmFsdWUsIG5hbWUsIGluZGV4LCBlYXNp
bmcsIGhvb2tzOwotCi0gICAgLy8gY2FtZWxDYXNlLCBzcGVjaWFsRWFzaW5nIGFuZCBleHBhbmQg
Y3NzSG9vayBwYXNzCi0gICAgZm9yICggaW5kZXggaW4gcHJvcHMgKSB7Ci0gICAgbmFtZSA9IGpR
dWVyeS5jYW1lbENhc2UoIGluZGV4ICk7Ci0gICAgZWFzaW5nID0gc3BlY2lhbEVhc2luZ1sgbmFt
ZSBdOwotICAgIHZhbHVlID0gcHJvcHNbIGluZGV4IF07Ci0gICAgaWYgKCBqUXVlcnkuaXNBcnJh
eSggdmFsdWUgKSApIHsKLSAgICBlYXNpbmcgPSB2YWx1ZVsgMSBdOwotICAgIHZhbHVlID0gcHJv
cHNbIGluZGV4IF0gPSB2YWx1ZVsgMCBdOwotICAgIH0KLQotICAgIGlmICggaW5kZXggIT09IG5h
bWUgKSB7Ci0gICAgcHJvcHNbIG5hbWUgXSA9IHZhbHVlOwotICAgIGRlbGV0ZSBwcm9wc1sgaW5k
ZXggXTsKLSAgICB9Ci0KLSAgICBob29rcyA9IGpRdWVyeS5jc3NIb29rc1sgbmFtZSBdOwotICAg
IGlmICggaG9va3MgJiYgImV4cGFuZCIgaW4gaG9va3MgKSB7Ci0gICAgdmFsdWUgPSBob29rcy5l
eHBhbmQoIHZhbHVlICk7Ci0gICAgZGVsZXRlIHByb3BzWyBuYW1lIF07Ci0KLSAgICAvLyBub3Qg
cXVpdGUgJC5leHRlbmQsIHRoaXMgd29udCBvdmVyd3JpdGUga2V5cyBhbHJlYWR5IHByZXNlbnQu
Ci0gICAgLy8gYWxzbyAtIHJldXNpbmcgJ2luZGV4JyBmcm9tIGFib3ZlIGJlY2F1c2Ugd2UgaGF2
ZSB0aGUgY29ycmVjdCAibmFtZSIKLSAgICBmb3IgKCBpbmRleCBpbiB2YWx1ZSApIHsKLSAgICBp
ZiAoICEoIGluZGV4IGluIHByb3BzICkgKSB7Ci0gICAgcHJvcHNbIGluZGV4IF0gPSB2YWx1ZVsg
aW5kZXggXTsKLSAgICBzcGVjaWFsRWFzaW5nWyBpbmRleCBdID0gZWFzaW5nOwotICAgIH0KLSAg
ICB9Ci0gICAgfSBlbHNlIHsKLSAgICBzcGVjaWFsRWFzaW5nWyBuYW1lIF0gPSBlYXNpbmc7Ci0g
ICAgfQotICAgIH0KLX0KLQotalF1ZXJ5LkFuaW1hdGlvbiA9IGpRdWVyeS5leHRlbmQoIEFuaW1h
dGlvbiwgewotCi0gICAgdHdlZW5lcjogZnVuY3Rpb24oIHByb3BzLCBjYWxsYmFjayApIHsKLSAg
ICBpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBwcm9wcyApICkgewotICAgIGNhbGxiYWNrID0gcHJv
cHM7Ci0gICAgcHJvcHMgPSBbICIqIiBdOwotICAgIH0gZWxzZSB7Ci0gICAgcHJvcHMgPSBwcm9w
cy5zcGxpdCgiICIpOwotICAgIH0KLQotICAgIHZhciBwcm9wLAotICAgIGluZGV4ID0gMCwKLSAg
ICBsZW5ndGggPSBwcm9wcy5sZW5ndGg7Ci0KLSAgICBmb3IgKCA7IGluZGV4IDwgbGVuZ3RoIDsg
aW5kZXgrKyApIHsKLSAgICBwcm9wID0gcHJvcHNbIGluZGV4IF07Ci0gICAgdHdlZW5lcnNbIHBy
b3AgXSA9IHR3ZWVuZXJzWyBwcm9wIF0gfHwgW107Ci0gICAgdHdlZW5lcnNbIHByb3AgXS51bnNo
aWZ0KCBjYWxsYmFjayApOwotICAgIH0KLSAgICB9LAotCi0gICAgcHJlZmlsdGVyOiBmdW5jdGlv
biggY2FsbGJhY2ssIHByZXBlbmQgKSB7Ci0gICAgaWYgKCBwcmVwZW5kICkgewotICAgIGFuaW1h
dGlvblByZWZpbHRlcnMudW5zaGlmdCggY2FsbGJhY2sgKTsKLSAgICB9IGVsc2UgewotICAgIGFu
aW1hdGlvblByZWZpbHRlcnMucHVzaCggY2FsbGJhY2sgKTsKLSAgICB9Ci0gICAgfQotfSk7Ci0K
LWZ1bmN0aW9uIGRlZmF1bHRQcmVmaWx0ZXIoIGVsZW0sIHByb3BzLCBvcHRzICkgewotICAgIC8q
anNoaW50IHZhbGlkdGhpczp0cnVlICovCi0gICAgdmFyIHByb3AsIGluZGV4LCBsZW5ndGgsCi0g
ICAgdmFsdWUsIGRhdGFTaG93LCB0b2dnbGUsCi0gICAgdHdlZW4sIGhvb2tzLCBvbGRmaXJlLAot
ICAgIGFuaW0gPSB0aGlzLAotICAgIHN0eWxlID0gZWxlbS5zdHlsZSwKLSAgICBvcmlnID0ge30s
Ci0gICAgaGFuZGxlZCA9IFtdLAotICAgIGhpZGRlbiA9IGVsZW0ubm9kZVR5cGUgJiYgaXNIaWRk
ZW4oIGVsZW0gKTsKLQotICAgIC8vIGhhbmRsZSBxdWV1ZTogZmFsc2UgcHJvbWlzZXMKLSAgICBp
ZiAoICFvcHRzLnF1ZXVlICkgewotICAgIGhvb2tzID0galF1ZXJ5Ll9xdWV1ZUhvb2tzKCBlbGVt
LCAiZngiICk7Ci0gICAgaWYgKCBob29rcy51bnF1ZXVlZCA9PSBudWxsICkgewotICAgIGhvb2tz
LnVucXVldWVkID0gMDsKLSAgICBvbGRmaXJlID0gaG9va3MuZW1wdHkuZmlyZTsKLSAgICBob29r
cy5lbXB0eS5maXJlID0gZnVuY3Rpb24oKSB7Ci0gICAgaWYgKCAhaG9va3MudW5xdWV1ZWQgKSB7
Ci0gICAgb2xkZmlyZSgpOwotICAgIH0KLSAgICB9OwotICAgIH0KLSAgICBob29rcy51bnF1ZXVl
ZCsrOwotCi0gICAgYW5pbS5hbHdheXMoZnVuY3Rpb24oKSB7Ci0gICAgLy8gZG9pbmcgdGhpcyBt
YWtlcyBzdXJlIHRoYXQgdGhlIGNvbXBsZXRlIGhhbmRsZXIgd2lsbCBiZSBjYWxsZWQKLSAgICAv
LyBiZWZvcmUgdGhpcyBjb21wbGV0ZXMKLSAgICBhbmltLmFsd2F5cyhmdW5jdGlvbigpIHsKLSAg
ICBob29rcy51bnF1ZXVlZC0tOwotICAgIGlmICggIWpRdWVyeS5xdWV1ZSggZWxlbSwgImZ4IiAp
Lmxlbmd0aCApIHsKLSAgICBob29rcy5lbXB0eS5maXJlKCk7Ci0gICAgfQotICAgIH0pOwotICAg
IH0pOwotICAgIH0KLQotICAgIC8vIGhlaWdodC93aWR0aCBvdmVyZmxvdyBwYXNzCi0gICAgaWYg
KCBlbGVtLm5vZGVUeXBlID09PSAxICYmICggImhlaWdodCIgaW4gcHJvcHMgfHwgIndpZHRoIiBp
biBwcm9wcyApICkgewotICAgIC8vIE1ha2Ugc3VyZSB0aGF0IG5vdGhpbmcgc25lYWtzIG91dAot
ICAgIC8vIFJlY29yZCBhbGwgMyBvdmVyZmxvdyBhdHRyaWJ1dGVzIGJlY2F1c2UgSUUgZG9lcyBu
b3QKLSAgICAvLyBjaGFuZ2UgdGhlIG92ZXJmbG93IGF0dHJpYnV0ZSB3aGVuIG92ZXJmbG93WCBh
bmQKLSAgICAvLyBvdmVyZmxvd1kgYXJlIHNldCB0byB0aGUgc2FtZSB2YWx1ZQotICAgIG9wdHMu
b3ZlcmZsb3cgPSBbIHN0eWxlLm92ZXJmbG93LCBzdHlsZS5vdmVyZmxvd1gsIHN0eWxlLm92ZXJm
bG93WSBdOwotCi0gICAgLy8gU2V0IGRpc3BsYXkgcHJvcGVydHkgdG8gaW5saW5lLWJsb2NrIGZv
ciBoZWlnaHQvd2lkdGgKLSAgICAvLyBhbmltYXRpb25zIG9uIGlubGluZSBlbGVtZW50cyB0aGF0
IGFyZSBoYXZpbmcgd2lkdGgvaGVpZ2h0IGFuaW1hdGVkCi0gICAgaWYgKCBqUXVlcnkuY3NzKCBl
bGVtLCAiZGlzcGxheSIgKSA9PT0gImlubGluZSIgJiYKLSAgICBqUXVlcnkuY3NzKCBlbGVtLCAi
ZmxvYXQiICkgPT09ICJub25lIiApIHsKLQotICAgIC8vIGlubGluZS1sZXZlbCBlbGVtZW50cyBh
Y2NlcHQgaW5saW5lLWJsb2NrOwotICAgIC8vIGJsb2NrLWxldmVsIGVsZW1lbnRzIG5lZWQgdG8g
YmUgaW5saW5lIHdpdGggbGF5b3V0Ci0gICAgaWYgKCAhalF1ZXJ5LnN1cHBvcnQuaW5saW5lQmxv
Y2tOZWVkc0xheW91dCB8fCBjc3NfZGVmYXVsdERpc3BsYXkoIGVsZW0ubm9kZU5hbWUgKSA9PT0g
ImlubGluZSIgKSB7Ci0gICAgc3R5bGUuZGlzcGxheSA9ICJpbmxpbmUtYmxvY2siOwotCi0gICAg
fSBlbHNlIHsKLSAgICBzdHlsZS56b29tID0gMTsKLSAgICB9Ci0gICAgfQotICAgIH0KLQotICAg
IGlmICggb3B0cy5vdmVyZmxvdyApIHsKLSAgICBzdHlsZS5vdmVyZmxvdyA9ICJoaWRkZW4iOwot
ICAgIGlmICggIWpRdWVyeS5zdXBwb3J0LnNocmlua1dyYXBCbG9ja3MgKSB7Ci0gICAgYW5pbS5h
bHdheXMoZnVuY3Rpb24oKSB7Ci0gICAgc3R5bGUub3ZlcmZsb3cgPSBvcHRzLm92ZXJmbG93WyAw
IF07Ci0gICAgc3R5bGUub3ZlcmZsb3dYID0gb3B0cy5vdmVyZmxvd1sgMSBdOwotICAgIHN0eWxl
Lm92ZXJmbG93WSA9IG9wdHMub3ZlcmZsb3dbIDIgXTsKLSAgICB9KTsKLSAgICB9Ci0gICAgfQot
Ci0KLSAgICAvLyBzaG93L2hpZGUgcGFzcwotICAgIGZvciAoIGluZGV4IGluIHByb3BzICkgewot
ICAgIHZhbHVlID0gcHJvcHNbIGluZGV4IF07Ci0gICAgaWYgKCByZnh0eXBlcy5leGVjKCB2YWx1
ZSApICkgewotICAgIGRlbGV0ZSBwcm9wc1sgaW5kZXggXTsKLSAgICB0b2dnbGUgPSB0b2dnbGUg
fHwgdmFsdWUgPT09ICJ0b2dnbGUiOwotICAgIGlmICggdmFsdWUgPT09ICggaGlkZGVuID8gImhp
ZGUiIDogInNob3ciICkgKSB7Ci0gICAgY29udGludWU7Ci0gICAgfQotICAgIGhhbmRsZWQucHVz
aCggaW5kZXggKTsKLSAgICB9Ci0gICAgfQotCi0gICAgbGVuZ3RoID0gaGFuZGxlZC5sZW5ndGg7
Ci0gICAgaWYgKCBsZW5ndGggKSB7Ci0gICAgZGF0YVNob3cgPSBqUXVlcnkuX2RhdGEoIGVsZW0s
ICJmeHNob3ciICkgfHwgalF1ZXJ5Ll9kYXRhKCBlbGVtLCAiZnhzaG93Iiwge30gKTsKLSAgICBp
ZiAoICJoaWRkZW4iIGluIGRhdGFTaG93ICkgewotICAgIGhpZGRlbiA9IGRhdGFTaG93LmhpZGRl
bjsKLSAgICB9Ci0KLSAgICAvLyBzdG9yZSBzdGF0ZSBpZiBpdHMgdG9nZ2xlIC0gZW5hYmxlcyAu
c3RvcCgpLnRvZ2dsZSgpIHRvICJyZXZlcnNlIgotICAgIGlmICggdG9nZ2xlICkgewotICAgIGRh
dGFTaG93LmhpZGRlbiA9ICFoaWRkZW47Ci0gICAgfQotICAgIGlmICggaGlkZGVuICkgewotICAg
IGpRdWVyeSggZWxlbSApLnNob3coKTsKLSAgICB9IGVsc2UgewotICAgIGFuaW0uZG9uZShmdW5j
dGlvbigpIHsKLSAgICBqUXVlcnkoIGVsZW0gKS5oaWRlKCk7Ci0gICAgfSk7Ci0gICAgfQotICAg
IGFuaW0uZG9uZShmdW5jdGlvbigpIHsKLSAgICB2YXIgcHJvcDsKLSAgICBqUXVlcnkuX3JlbW92
ZURhdGEoIGVsZW0sICJmeHNob3ciICk7Ci0gICAgZm9yICggcHJvcCBpbiBvcmlnICkgewotICAg
IGpRdWVyeS5zdHlsZSggZWxlbSwgcHJvcCwgb3JpZ1sgcHJvcCBdICk7Ci0gICAgfQotICAgIH0p
OwotICAgIGZvciAoIGluZGV4ID0gMCA7IGluZGV4IDwgbGVuZ3RoIDsgaW5kZXgrKyApIHsKLSAg
ICBwcm9wID0gaGFuZGxlZFsgaW5kZXggXTsKLSAgICB0d2VlbiA9IGFuaW0uY3JlYXRlVHdlZW4o
IHByb3AsIGhpZGRlbiA/IGRhdGFTaG93WyBwcm9wIF0gOiAwICk7Ci0gICAgb3JpZ1sgcHJvcCBd
ID0gZGF0YVNob3dbIHByb3AgXSB8fCBqUXVlcnkuc3R5bGUoIGVsZW0sIHByb3AgKTsKLQotICAg
IGlmICggISggcHJvcCBpbiBkYXRhU2hvdyApICkgewotICAgIGRhdGFTaG93WyBwcm9wIF0gPSB0
d2Vlbi5zdGFydDsKLSAgICBpZiAoIGhpZGRlbiApIHsKLSAgICB0d2Vlbi5lbmQgPSB0d2Vlbi5z
dGFydDsKLSAgICB0d2Vlbi5zdGFydCA9IHByb3AgPT09ICJ3aWR0aCIgfHwgcHJvcCA9PT0gImhl
aWdodCIgPyAxIDogMDsKLSAgICB9Ci0gICAgfQotICAgIH0KLSAgICB9Ci19Ci0KLWZ1bmN0aW9u
IFR3ZWVuKCBlbGVtLCBvcHRpb25zLCBwcm9wLCBlbmQsIGVhc2luZyApIHsKLSAgICByZXR1cm4g
bmV3IFR3ZWVuLnByb3RvdHlwZS5pbml0KCBlbGVtLCBvcHRpb25zLCBwcm9wLCBlbmQsIGVhc2lu
ZyApOwotfQotalF1ZXJ5LlR3ZWVuID0gVHdlZW47Ci0KLVR3ZWVuLnByb3RvdHlwZSA9IHsKLSAg
ICBjb25zdHJ1Y3RvcjogVHdlZW4sCi0gICAgaW5pdDogZnVuY3Rpb24oIGVsZW0sIG9wdGlvbnMs
IHByb3AsIGVuZCwgZWFzaW5nLCB1bml0ICkgewotICAgIHRoaXMuZWxlbSA9IGVsZW07Ci0gICAg
dGhpcy5wcm9wID0gcHJvcDsKLSAgICB0aGlzLmVhc2luZyA9IGVhc2luZyB8fCAic3dpbmciOwot
ICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7Ci0gICAgdGhpcy5zdGFydCA9IHRoaXMubm93ID0g
dGhpcy5jdXIoKTsKLSAgICB0aGlzLmVuZCA9IGVuZDsKLSAgICB0aGlzLnVuaXQgPSB1bml0IHx8
ICggalF1ZXJ5LmNzc051bWJlclsgcHJvcCBdID8gIiIgOiAicHgiICk7Ci0gICAgfSwKLSAgICBj
dXI6IGZ1bmN0aW9uKCkgewotICAgIHZhciBob29rcyA9IFR3ZWVuLnByb3BIb29rc1sgdGhpcy5w
cm9wIF07Ci0KLSAgICByZXR1cm4gaG9va3MgJiYgaG9va3MuZ2V0ID8KLSAgICBob29rcy5nZXQo
IHRoaXMgKSA6Ci0gICAgVHdlZW4ucHJvcEhvb2tzLl9kZWZhdWx0LmdldCggdGhpcyApOwotICAg
IH0sCi0gICAgcnVuOiBmdW5jdGlvbiggcGVyY2VudCApIHsKLSAgICB2YXIgZWFzZWQsCi0gICAg
aG9va3MgPSBUd2Vlbi5wcm9wSG9va3NbIHRoaXMucHJvcCBdOwotCi0gICAgaWYgKCB0aGlzLm9w
dGlvbnMuZHVyYXRpb24gKSB7Ci0gICAgdGhpcy5wb3MgPSBlYXNlZCA9IGpRdWVyeS5lYXNpbmdb
IHRoaXMuZWFzaW5nIF0oCi0gICAgcGVyY2VudCwgdGhpcy5vcHRpb25zLmR1cmF0aW9uICogcGVy
Y2VudCwgMCwgMSwgdGhpcy5vcHRpb25zLmR1cmF0aW9uCi0gICAgKTsKLSAgICB9IGVsc2Ugewot
ICAgIHRoaXMucG9zID0gZWFzZWQgPSBwZXJjZW50OwotICAgIH0KLSAgICB0aGlzLm5vdyA9ICgg
dGhpcy5lbmQgLSB0aGlzLnN0YXJ0ICkgKiBlYXNlZCArIHRoaXMuc3RhcnQ7Ci0KLSAgICBpZiAo
IHRoaXMub3B0aW9ucy5zdGVwICkgewotICAgIHRoaXMub3B0aW9ucy5zdGVwLmNhbGwoIHRoaXMu
ZWxlbSwgdGhpcy5ub3csIHRoaXMgKTsKLSAgICB9Ci0KLSAgICBpZiAoIGhvb2tzICYmIGhvb2tz
LnNldCApIHsKLSAgICBob29rcy5zZXQoIHRoaXMgKTsKLSAgICB9IGVsc2UgewotICAgIFR3ZWVu
LnByb3BIb29rcy5fZGVmYXVsdC5zZXQoIHRoaXMgKTsKLSAgICB9Ci0gICAgcmV0dXJuIHRoaXM7
Ci0gICAgfQotfTsKLQotVHdlZW4ucHJvdG90eXBlLmluaXQucHJvdG90eXBlID0gVHdlZW4ucHJv
dG90eXBlOwotCi1Ud2Vlbi5wcm9wSG9va3MgPSB7Ci0gICAgX2RlZmF1bHQ6IHsKLSAgICBnZXQ6
IGZ1bmN0aW9uKCB0d2VlbiApIHsKLSAgICB2YXIgcmVzdWx0OwotCi0gICAgaWYgKCB0d2Vlbi5l
bGVtWyB0d2Vlbi5wcm9wIF0gIT0gbnVsbCAmJgotICAgICghdHdlZW4uZWxlbS5zdHlsZSB8fCB0
d2Vlbi5lbGVtLnN0eWxlWyB0d2Vlbi5wcm9wIF0gPT0gbnVsbCkgKSB7Ci0gICAgcmV0dXJuIHR3
ZWVuLmVsZW1bIHR3ZWVuLnByb3AgXTsKLSAgICB9Ci0KLSAgICAvLyBwYXNzaW5nIGFuIGVtcHR5
IHN0cmluZyBhcyBhIDNyZCBwYXJhbWV0ZXIgdG8gLmNzcyB3aWxsIGF1dG9tYXRpY2FsbHkKLSAg
ICAvLyBhdHRlbXB0IGEgcGFyc2VGbG9hdCBhbmQgZmFsbGJhY2sgdG8gYSBzdHJpbmcgaWYgdGhl
IHBhcnNlIGZhaWxzCi0gICAgLy8gc28sIHNpbXBsZSB2YWx1ZXMgc3VjaCBhcyAiMTBweCIgYXJl
IHBhcnNlZCB0byBGbG9hdC4KLSAgICAvLyBjb21wbGV4IHZhbHVlcyBzdWNoIGFzICJyb3RhdGUo
MXJhZCkiIGFyZSByZXR1cm5lZCBhcyBpcy4KLSAgICByZXN1bHQgPSBqUXVlcnkuY3NzKCB0d2Vl
bi5lbGVtLCB0d2Vlbi5wcm9wLCAiIiApOwotICAgIC8vIEVtcHR5IHN0cmluZ3MsIG51bGwsIHVu
ZGVmaW5lZCBhbmQgImF1dG8iIGFyZSBjb252ZXJ0ZWQgdG8gMC4KLSAgICByZXR1cm4gIXJlc3Vs
dCB8fCByZXN1bHQgPT09ICJhdXRvIiA/IDAgOiByZXN1bHQ7Ci0gICAgfSwKLSAgICBzZXQ6IGZ1
bmN0aW9uKCB0d2VlbiApIHsKLSAgICAvLyB1c2Ugc3RlcCBob29rIGZvciBiYWNrIGNvbXBhdCAt
IHVzZSBjc3NIb29rIGlmIGl0cyB0aGVyZSAtIHVzZSAuc3R5bGUgaWYgaXRzCi0gICAgLy8gYXZh
aWxhYmxlIGFuZCB1c2UgcGxhaW4gcHJvcGVydGllcyB3aGVyZSBhdmFpbGFibGUKLSAgICBpZiAo
IGpRdWVyeS5meC5zdGVwWyB0d2Vlbi5wcm9wIF0gKSB7Ci0gICAgalF1ZXJ5LmZ4LnN0ZXBbIHR3
ZWVuLnByb3AgXSggdHdlZW4gKTsKLSAgICB9IGVsc2UgaWYgKCB0d2Vlbi5lbGVtLnN0eWxlICYm
ICggdHdlZW4uZWxlbS5zdHlsZVsgalF1ZXJ5LmNzc1Byb3BzWyB0d2Vlbi5wcm9wIF0gXSAhPSBu
dWxsIHx8IGpRdWVyeS5jc3NIb29rc1sgdHdlZW4ucHJvcCBdICkgKSB7Ci0gICAgalF1ZXJ5LnN0
eWxlKCB0d2Vlbi5lbGVtLCB0d2Vlbi5wcm9wLCB0d2Vlbi5ub3cgKyB0d2Vlbi51bml0ICk7Ci0g
ICAgfSBlbHNlIHsKLSAgICB0d2Vlbi5lbGVtWyB0d2Vlbi5wcm9wIF0gPSB0d2Vlbi5ub3c7Ci0g
ICAgfQotICAgIH0KLSAgICB9Ci19OwotCi0vLyBSZW1vdmUgaW4gMi4wIC0gdGhpcyBzdXBwb3J0
cyBJRTgncyBwYW5pYyBiYXNlZCBhcHByb2FjaAotLy8gdG8gc2V0dGluZyB0aGluZ3Mgb24gZGlz
Y29ubmVjdGVkIG5vZGVzCi0KLVR3ZWVuLnByb3BIb29rcy5zY3JvbGxUb3AgPSBUd2Vlbi5wcm9w
SG9va3Muc2Nyb2xsTGVmdCA9IHsKLSAgICBzZXQ6IGZ1bmN0aW9uKCB0d2VlbiApIHsKLSAgICBp
ZiAoIHR3ZWVuLmVsZW0ubm9kZVR5cGUgJiYgdHdlZW4uZWxlbS5wYXJlbnROb2RlICkgewotICAg
IHR3ZWVuLmVsZW1bIHR3ZWVuLnByb3AgXSA9IHR3ZWVuLm5vdzsKLSAgICB9Ci0gICAgfQotfTsK
LQotalF1ZXJ5LmVhY2goWyAidG9nZ2xlIiwgInNob3ciLCAiaGlkZSIgXSwgZnVuY3Rpb24oIGks
IG5hbWUgKSB7Ci0gICAgdmFyIGNzc0ZuID0galF1ZXJ5LmZuWyBuYW1lIF07Ci0gICAgalF1ZXJ5
LmZuWyBuYW1lIF0gPSBmdW5jdGlvbiggc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKSB7Ci0gICAg
cmV0dXJuIHNwZWVkID09IG51bGwgfHwgdHlwZW9mIHNwZWVkID09PSAiYm9vbGVhbiIgPwotICAg
IGNzc0ZuLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKSA6Ci0gICAgdGhpcy5hbmltYXRlKCBnZW5G
eCggbmFtZSwgdHJ1ZSApLCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApOwotICAgIH07Ci19KTsK
LQotalF1ZXJ5LmZuLmV4dGVuZCh7Ci0gICAgZmFkZVRvOiBmdW5jdGlvbiggc3BlZWQsIHRvLCBl
YXNpbmcsIGNhbGxiYWNrICkgewotCi0gICAgLy8gc2hvdyBhbnkgaGlkZGVuIGVsZW1lbnRzIGFm
dGVyIHNldHRpbmcgb3BhY2l0eSB0byAwCi0gICAgcmV0dXJuIHRoaXMuZmlsdGVyKCBpc0hpZGRl
biApLmNzcyggIm9wYWNpdHkiLCAwICkuc2hvdygpCi0KLSAgICAvLyBhbmltYXRlIHRvIHRoZSB2
YWx1ZSBzcGVjaWZpZWQKLSAgICAuZW5kKCkuYW5pbWF0ZSh7IG9wYWNpdHk6IHRvIH0sIHNwZWVk
LCBlYXNpbmcsIGNhbGxiYWNrICk7Ci0gICAgfSwKLSAgICBhbmltYXRlOiBmdW5jdGlvbiggcHJv
cCwgc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKSB7Ci0gICAgdmFyIGVtcHR5ID0galF1ZXJ5Lmlz
RW1wdHlPYmplY3QoIHByb3AgKSwKLSAgICBvcHRhbGwgPSBqUXVlcnkuc3BlZWQoIHNwZWVkLCBl
YXNpbmcsIGNhbGxiYWNrICksCi0gICAgZG9BbmltYXRpb24gPSBmdW5jdGlvbigpIHsKLSAgICAv
LyBPcGVyYXRlIG9uIGEgY29weSBvZiBwcm9wIHNvIHBlci1wcm9wZXJ0eSBlYXNpbmcgd29uJ3Qg
YmUgbG9zdAotICAgIHZhciBhbmltID0gQW5pbWF0aW9uKCB0aGlzLCBqUXVlcnkuZXh0ZW5kKCB7
fSwgcHJvcCApLCBvcHRhbGwgKTsKLSAgICBkb0FuaW1hdGlvbi5maW5pc2ggPSBmdW5jdGlvbigp
IHsKLSAgICBhbmltLnN0b3AoIHRydWUgKTsKLSAgICB9OwotICAgIC8vIEVtcHR5IGFuaW1hdGlv
bnMsIG9yIGZpbmlzaGluZyByZXNvbHZlcyBpbW1lZGlhdGVseQotICAgIGlmICggZW1wdHkgfHwg
alF1ZXJ5Ll9kYXRhKCB0aGlzLCAiZmluaXNoIiApICkgewotICAgIGFuaW0uc3RvcCggdHJ1ZSAp
OwotICAgIH0KLSAgICB9OwotICAgIGRvQW5pbWF0aW9uLmZpbmlzaCA9IGRvQW5pbWF0aW9uOwot
Ci0gICAgcmV0dXJuIGVtcHR5IHx8IG9wdGFsbC5xdWV1ZSA9PT0gZmFsc2UgPwotICAgIHRoaXMu
ZWFjaCggZG9BbmltYXRpb24gKSA6Ci0gICAgdGhpcy5xdWV1ZSggb3B0YWxsLnF1ZXVlLCBkb0Fu
aW1hdGlvbiApOwotICAgIH0sCi0gICAgc3RvcDogZnVuY3Rpb24oIHR5cGUsIGNsZWFyUXVldWUs
IGdvdG9FbmQgKSB7Ci0gICAgdmFyIHN0b3BRdWV1ZSA9IGZ1bmN0aW9uKCBob29rcyApIHsKLSAg
ICB2YXIgc3RvcCA9IGhvb2tzLnN0b3A7Ci0gICAgZGVsZXRlIGhvb2tzLnN0b3A7Ci0gICAgc3Rv
cCggZ290b0VuZCApOwotICAgIH07Ci0KLSAgICBpZiAoIHR5cGVvZiB0eXBlICE9PSAic3RyaW5n
IiApIHsKLSAgICBnb3RvRW5kID0gY2xlYXJRdWV1ZTsKLSAgICBjbGVhclF1ZXVlID0gdHlwZTsK
LSAgICB0eXBlID0gdW5kZWZpbmVkOwotICAgIH0KLSAgICBpZiAoIGNsZWFyUXVldWUgJiYgdHlw
ZSAhPT0gZmFsc2UgKSB7Ci0gICAgdGhpcy5xdWV1ZSggdHlwZSB8fCAiZngiLCBbXSApOwotICAg
IH0KLQotICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGRlcXVldWUg
PSB0cnVlLAotICAgIGluZGV4ID0gdHlwZSAhPSBudWxsICYmIHR5cGUgKyAicXVldWVIb29rcyIs
Ci0gICAgdGltZXJzID0galF1ZXJ5LnRpbWVycywKLSAgICBkYXRhID0galF1ZXJ5Ll9kYXRhKCB0
aGlzICk7Ci0KLSAgICBpZiAoIGluZGV4ICkgewotICAgIGlmICggZGF0YVsgaW5kZXggXSAmJiBk
YXRhWyBpbmRleCBdLnN0b3AgKSB7Ci0gICAgc3RvcFF1ZXVlKCBkYXRhWyBpbmRleCBdICk7Ci0g
ICAgfQotICAgIH0gZWxzZSB7Ci0gICAgZm9yICggaW5kZXggaW4gZGF0YSApIHsKLSAgICBpZiAo
IGRhdGFbIGluZGV4IF0gJiYgZGF0YVsgaW5kZXggXS5zdG9wICYmIHJydW4udGVzdCggaW5kZXgg
KSApIHsKLSAgICBzdG9wUXVldWUoIGRhdGFbIGluZGV4IF0gKTsKLSAgICB9Ci0gICAgfQotICAg
IH0KLQotICAgIGZvciAoIGluZGV4ID0gdGltZXJzLmxlbmd0aDsgaW5kZXgtLTsgKSB7Ci0gICAg
aWYgKCB0aW1lcnNbIGluZGV4IF0uZWxlbSA9PT0gdGhpcyAmJiAodHlwZSA9PSBudWxsIHx8IHRp
bWVyc1sgaW5kZXggXS5xdWV1ZSA9PT0gdHlwZSkgKSB7Ci0gICAgdGltZXJzWyBpbmRleCBdLmFu
aW0uc3RvcCggZ290b0VuZCApOwotICAgIGRlcXVldWUgPSBmYWxzZTsKLSAgICB0aW1lcnMuc3Bs
aWNlKCBpbmRleCwgMSApOwotICAgIH0KLSAgICB9Ci0KLSAgICAvLyBzdGFydCB0aGUgbmV4dCBp
biB0aGUgcXVldWUgaWYgdGhlIGxhc3Qgc3RlcCB3YXNuJ3QgZm9yY2VkCi0gICAgLy8gdGltZXJz
IGN1cnJlbnRseSB3aWxsIGNhbGwgdGhlaXIgY29tcGxldGUgY2FsbGJhY2tzLCB3aGljaCB3aWxs
IGRlcXVldWUKLSAgICAvLyBidXQgb25seSBpZiB0aGV5IHdlcmUgZ290b0VuZAotICAgIGlmICgg
ZGVxdWV1ZSB8fCAhZ290b0VuZCApIHsKLSAgICBqUXVlcnkuZGVxdWV1ZSggdGhpcywgdHlwZSAp
OwotICAgIH0KLSAgICB9KTsKLSAgICB9LAotICAgIGZpbmlzaDogZnVuY3Rpb24oIHR5cGUgKSB7
Ci0gICAgaWYgKCB0eXBlICE9PSBmYWxzZSApIHsKLSAgICB0eXBlID0gdHlwZSB8fCAiZngiOwot
ICAgIH0KLSAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewotICAgIHZhciBpbmRleCwK
LSAgICBkYXRhID0galF1ZXJ5Ll9kYXRhKCB0aGlzICksCi0gICAgcXVldWUgPSBkYXRhWyB0eXBl
ICsgInF1ZXVlIiBdLAotICAgIGhvb2tzID0gZGF0YVsgdHlwZSArICJxdWV1ZUhvb2tzIiBdLAot
ICAgIHRpbWVycyA9IGpRdWVyeS50aW1lcnMsCi0gICAgbGVuZ3RoID0gcXVldWUgPyBxdWV1ZS5s
ZW5ndGggOiAwOwotCi0gICAgLy8gZW5hYmxlIGZpbmlzaGluZyBmbGFnIG9uIHByaXZhdGUgZGF0
YQotICAgIGRhdGEuZmluaXNoID0gdHJ1ZTsKLQotICAgIC8vIGVtcHR5IHRoZSBxdWV1ZSBmaXJz
dAotICAgIGpRdWVyeS5xdWV1ZSggdGhpcywgdHlwZSwgW10gKTsKLQotICAgIGlmICggaG9va3Mg
JiYgaG9va3MuY3VyICYmIGhvb2tzLmN1ci5maW5pc2ggKSB7Ci0gICAgaG9va3MuY3VyLmZpbmlz
aC5jYWxsKCB0aGlzICk7Ci0gICAgfQotCi0gICAgLy8gbG9vayBmb3IgYW55IGFjdGl2ZSBhbmlt
YXRpb25zLCBhbmQgZmluaXNoIHRoZW0KLSAgICBmb3IgKCBpbmRleCA9IHRpbWVycy5sZW5ndGg7
IGluZGV4LS07ICkgewotICAgIGlmICggdGltZXJzWyBpbmRleCBdLmVsZW0gPT09IHRoaXMgJiYg
dGltZXJzWyBpbmRleCBdLnF1ZXVlID09PSB0eXBlICkgewotICAgIHRpbWVyc1sgaW5kZXggXS5h
bmltLnN0b3AoIHRydWUgKTsKLSAgICB0aW1lcnMuc3BsaWNlKCBpbmRleCwgMSApOwotICAgIH0K
LSAgICB9Ci0KLSAgICAvLyBsb29rIGZvciBhbnkgYW5pbWF0aW9ucyBpbiB0aGUgb2xkIHF1ZXVl
IGFuZCBmaW5pc2ggdGhlbQotICAgIGZvciAoIGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGlu
ZGV4KysgKSB7Ci0gICAgaWYgKCBxdWV1ZVsgaW5kZXggXSAmJiBxdWV1ZVsgaW5kZXggXS5maW5p
c2ggKSB7Ci0gICAgcXVldWVbIGluZGV4IF0uZmluaXNoLmNhbGwoIHRoaXMgKTsKLSAgICB9Ci0g
ICAgfQotCi0gICAgLy8gdHVybiBvZmYgZmluaXNoaW5nIGZsYWcKLSAgICBkZWxldGUgZGF0YS5m
aW5pc2g7Ci0gICAgfSk7Ci0gICAgfQotfSk7Ci0KLS8vIEdlbmVyYXRlIHBhcmFtZXRlcnMgdG8g
Y3JlYXRlIGEgc3RhbmRhcmQgYW5pbWF0aW9uCi1mdW5jdGlvbiBnZW5GeCggdHlwZSwgaW5jbHVk
ZVdpZHRoICkgewotICAgIHZhciB3aGljaCwKLSAgICBhdHRycyA9IHsgaGVpZ2h0OiB0eXBlIH0s
Ci0gICAgaSA9IDA7Ci0KLSAgICAvLyBpZiB3ZSBpbmNsdWRlIHdpZHRoLCBzdGVwIHZhbHVlIGlz
IDEgdG8gZG8gYWxsIGNzc0V4cGFuZCB2YWx1ZXMsCi0gICAgLy8gaWYgd2UgZG9uJ3QgaW5jbHVk
ZSB3aWR0aCwgc3RlcCB2YWx1ZSBpcyAyIHRvIHNraXAgb3ZlciBMZWZ0IGFuZCBSaWdodAotICAg
IGluY2x1ZGVXaWR0aCA9IGluY2x1ZGVXaWR0aD8gMSA6IDA7Ci0gICAgZm9yKCA7IGkgPCA0IDsg
aSArPSAyIC0gaW5jbHVkZVdpZHRoICkgewotICAgIHdoaWNoID0gY3NzRXhwYW5kWyBpIF07Ci0g
ICAgYXR0cnNbICJtYXJnaW4iICsgd2hpY2ggXSA9IGF0dHJzWyAicGFkZGluZyIgKyB3aGljaCBd
ID0gdHlwZTsKLSAgICB9Ci0KLSAgICBpZiAoIGluY2x1ZGVXaWR0aCApIHsKLSAgICBhdHRycy5v
cGFjaXR5ID0gYXR0cnMud2lkdGggPSB0eXBlOwotICAgIH0KLQotICAgIHJldHVybiBhdHRyczsK
LX0KLQotLy8gR2VuZXJhdGUgc2hvcnRjdXRzIGZvciBjdXN0b20gYW5pbWF0aW9ucwotalF1ZXJ5
LmVhY2goewotICAgIHNsaWRlRG93bjogZ2VuRngoInNob3ciKSwKLSAgICBzbGlkZVVwOiBnZW5G
eCgiaGlkZSIpLAotICAgIHNsaWRlVG9nZ2xlOiBnZW5GeCgidG9nZ2xlIiksCi0gICAgZmFkZUlu
OiB7IG9wYWNpdHk6ICJzaG93IiB9LAotICAgIGZhZGVPdXQ6IHsgb3BhY2l0eTogImhpZGUiIH0s
Ci0gICAgZmFkZVRvZ2dsZTogeyBvcGFjaXR5OiAidG9nZ2xlIiB9Ci19LCBmdW5jdGlvbiggbmFt
ZSwgcHJvcHMgKSB7Ci0gICAgalF1ZXJ5LmZuWyBuYW1lIF0gPSBmdW5jdGlvbiggc3BlZWQsIGVh
c2luZywgY2FsbGJhY2sgKSB7Ci0gICAgcmV0dXJuIHRoaXMuYW5pbWF0ZSggcHJvcHMsIHNwZWVk
LCBlYXNpbmcsIGNhbGxiYWNrICk7Ci0gICAgfTsKLX0pOwotCi1qUXVlcnkuc3BlZWQgPSBmdW5j
dGlvbiggc3BlZWQsIGVhc2luZywgZm4gKSB7Ci0gICAgdmFyIG9wdCA9IHNwZWVkICYmIHR5cGVv
ZiBzcGVlZCA9PT0gIm9iamVjdCIgPyBqUXVlcnkuZXh0ZW5kKCB7fSwgc3BlZWQgKSA6IHsKLSAg
ICBjb21wbGV0ZTogZm4gfHwgIWZuICYmIGVhc2luZyB8fAotICAgIGpRdWVyeS5pc0Z1bmN0aW9u
KCBzcGVlZCApICYmIHNwZWVkLAotICAgIGR1cmF0aW9uOiBzcGVlZCwKLSAgICBlYXNpbmc6IGZu
ICYmIGVhc2luZyB8fCBlYXNpbmcgJiYgIWpRdWVyeS5pc0Z1bmN0aW9uKCBlYXNpbmcgKSAmJiBl
YXNpbmcKLSAgICB9OwotCi0gICAgb3B0LmR1cmF0aW9uID0galF1ZXJ5LmZ4Lm9mZiA/IDAgOiB0
eXBlb2Ygb3B0LmR1cmF0aW9uID09PSAibnVtYmVyIiA/IG9wdC5kdXJhdGlvbiA6Ci0gICAgb3B0
LmR1cmF0aW9uIGluIGpRdWVyeS5meC5zcGVlZHMgPyBqUXVlcnkuZnguc3BlZWRzWyBvcHQuZHVy
YXRpb24gXSA6IGpRdWVyeS5meC5zcGVlZHMuX2RlZmF1bHQ7Ci0KLSAgICAvLyBub3JtYWxpemUg
b3B0LnF1ZXVlIC0gdHJ1ZS91bmRlZmluZWQvbnVsbCAtPiAiZngiCi0gICAgaWYgKCBvcHQucXVl
dWUgPT0gbnVsbCB8fCBvcHQucXVldWUgPT09IHRydWUgKSB7Ci0gICAgb3B0LnF1ZXVlID0gImZ4
IjsKLSAgICB9Ci0KLSAgICAvLyBRdWV1ZWluZwotICAgIG9wdC5vbGQgPSBvcHQuY29tcGxldGU7
Ci0KLSAgICBvcHQuY29tcGxldGUgPSBmdW5jdGlvbigpIHsKLSAgICBpZiAoIGpRdWVyeS5pc0Z1
bmN0aW9uKCBvcHQub2xkICkgKSB7Ci0gICAgb3B0Lm9sZC5jYWxsKCB0aGlzICk7Ci0gICAgfQot
Ci0gICAgaWYgKCBvcHQucXVldWUgKSB7Ci0gICAgalF1ZXJ5LmRlcXVldWUoIHRoaXMsIG9wdC5x
dWV1ZSApOwotICAgIH0KLSAgICB9OwotCi0gICAgcmV0dXJuIG9wdDsKLX07Ci0KLWpRdWVyeS5l
YXNpbmcgPSB7Ci0gICAgbGluZWFyOiBmdW5jdGlvbiggcCApIHsKLSAgICByZXR1cm4gcDsKLSAg
ICB9LAotICAgIHN3aW5nOiBmdW5jdGlvbiggcCApIHsKLSAgICByZXR1cm4gMC41IC0gTWF0aC5j
b3MoIHAqTWF0aC5QSSApIC8gMjsKLSAgICB9Ci19OwotCi1qUXVlcnkudGltZXJzID0gW107Ci1q
UXVlcnkuZnggPSBUd2Vlbi5wcm90b3R5cGUuaW5pdDsKLWpRdWVyeS5meC50aWNrID0gZnVuY3Rp
b24oKSB7Ci0gICAgdmFyIHRpbWVyLAotICAgIHRpbWVycyA9IGpRdWVyeS50aW1lcnMsCi0gICAg
aSA9IDA7Ci0KLSAgICBmeE5vdyA9IGpRdWVyeS5ub3coKTsKLQotICAgIGZvciAoIDsgaSA8IHRp
bWVycy5sZW5ndGg7IGkrKyApIHsKLSAgICB0aW1lciA9IHRpbWVyc1sgaSBdOwotICAgIC8vIENo
ZWNrcyB0aGUgdGltZXIgaGFzIG5vdCBhbHJlYWR5IGJlZW4gcmVtb3ZlZAotICAgIGlmICggIXRp
bWVyKCkgJiYgdGltZXJzWyBpIF0gPT09IHRpbWVyICkgewotICAgIHRpbWVycy5zcGxpY2UoIGkt
LSwgMSApOwotICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoICF0aW1lcnMubGVuZ3RoICkgewotICAg
IGpRdWVyeS5meC5zdG9wKCk7Ci0gICAgfQotICAgIGZ4Tm93ID0gdW5kZWZpbmVkOwotfTsKLQot
alF1ZXJ5LmZ4LnRpbWVyID0gZnVuY3Rpb24oIHRpbWVyICkgewotICAgIGlmICggdGltZXIoKSAm
JiBqUXVlcnkudGltZXJzLnB1c2goIHRpbWVyICkgKSB7Ci0gICAgalF1ZXJ5LmZ4LnN0YXJ0KCk7
Ci0gICAgfQotfTsKLQotalF1ZXJ5LmZ4LmludGVydmFsID0gMTM7Ci0KLWpRdWVyeS5meC5zdGFy
dCA9IGZ1bmN0aW9uKCkgewotICAgIGlmICggIXRpbWVySWQgKSB7Ci0gICAgdGltZXJJZCA9IHNl
dEludGVydmFsKCBqUXVlcnkuZngudGljaywgalF1ZXJ5LmZ4LmludGVydmFsICk7Ci0gICAgfQot
fTsKLQotalF1ZXJ5LmZ4LnN0b3AgPSBmdW5jdGlvbigpIHsKLSAgICBjbGVhckludGVydmFsKCB0
aW1lcklkICk7Ci0gICAgdGltZXJJZCA9IG51bGw7Ci19OwotCi1qUXVlcnkuZnguc3BlZWRzID0g
ewotICAgIHNsb3c6IDYwMCwKLSAgICBmYXN0OiAyMDAsCi0gICAgLy8gRGVmYXVsdCBzcGVlZAot
ICAgIF9kZWZhdWx0OiA0MDAKLX07Ci0KLS8vIEJhY2sgQ29tcGF0IDwxLjggZXh0ZW5zaW9uIHBv
aW50Ci1qUXVlcnkuZnguc3RlcCA9IHt9OwotCi1pZiAoIGpRdWVyeS5leHByICYmIGpRdWVyeS5l
eHByLmZpbHRlcnMgKSB7Ci0gICAgalF1ZXJ5LmV4cHIuZmlsdGVycy5hbmltYXRlZCA9IGZ1bmN0
aW9uKCBlbGVtICkgewotICAgIHJldHVybiBqUXVlcnkuZ3JlcChqUXVlcnkudGltZXJzLCBmdW5j
dGlvbiggZm4gKSB7Ci0gICAgcmV0dXJuIGVsZW0gPT09IGZuLmVsZW07Ci0gICAgfSkubGVuZ3Ro
OwotICAgIH07Ci19Ci1qUXVlcnkuZm4ub2Zmc2V0ID0gZnVuY3Rpb24oIG9wdGlvbnMgKSB7Ci0g
ICAgaWYgKCBhcmd1bWVudHMubGVuZ3RoICkgewotICAgIHJldHVybiBvcHRpb25zID09PSB1bmRl
ZmluZWQgPwotICAgIHRoaXMgOgotICAgIHRoaXMuZWFjaChmdW5jdGlvbiggaSApIHsKLSAgICBq
UXVlcnkub2Zmc2V0LnNldE9mZnNldCggdGhpcywgb3B0aW9ucywgaSApOwotICAgIH0pOwotICAg
IH0KLQotICAgIHZhciBkb2NFbGVtLCB3aW4sCi0gICAgYm94ID0geyB0b3A6IDAsIGxlZnQ6IDAg
fSwKLSAgICBlbGVtID0gdGhpc1sgMCBdLAotICAgIGRvYyA9IGVsZW0gJiYgZWxlbS5vd25lckRv
Y3VtZW50OwotCi0gICAgaWYgKCAhZG9jICkgewotICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBk
b2NFbGVtID0gZG9jLmRvY3VtZW50RWxlbWVudDsKLQotICAgIC8vIE1ha2Ugc3VyZSBpdCdzIG5v
dCBhIGRpc2Nvbm5lY3RlZCBET00gbm9kZQotICAgIGlmICggIWpRdWVyeS5jb250YWlucyggZG9j
RWxlbSwgZWxlbSApICkgewotICAgIHJldHVybiBib3g7Ci0gICAgfQotCi0gICAgLy8gSWYgd2Ug
ZG9uJ3QgaGF2ZSBnQkNSLCBqdXN0IHVzZSAwLDAgcmF0aGVyIHRoYW4gZXJyb3IKLSAgICAvLyBC
bGFja0JlcnJ5IDUsIGlPUyAzIChvcmlnaW5hbCBpUGhvbmUpCi0gICAgaWYgKCB0eXBlb2YgZWxl
bS5nZXRCb3VuZGluZ0NsaWVudFJlY3QgIT09IGNvcmVfc3RydW5kZWZpbmVkICkgewotICAgIGJv
eCA9IGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7Ci0gICAgfQotICAgIHdpbiA9IGdldFdp
bmRvdyggZG9jICk7Ci0gICAgcmV0dXJuIHsKLSAgICB0b3A6IGJveC50b3AgICsgKCB3aW4ucGFn
ZVlPZmZzZXQgfHwgZG9jRWxlbS5zY3JvbGxUb3AgKSAgLSAoIGRvY0VsZW0uY2xpZW50VG9wICB8
fCAwICksCi0gICAgbGVmdDogYm94LmxlZnQgKyAoIHdpbi5wYWdlWE9mZnNldCB8fCBkb2NFbGVt
LnNjcm9sbExlZnQgKSAtICggZG9jRWxlbS5jbGllbnRMZWZ0IHx8IDAgKQotICAgIH07Ci19Owot
Ci1qUXVlcnkub2Zmc2V0ID0gewotCi0gICAgc2V0T2Zmc2V0OiBmdW5jdGlvbiggZWxlbSwgb3B0
aW9ucywgaSApIHsKLSAgICB2YXIgcG9zaXRpb24gPSBqUXVlcnkuY3NzKCBlbGVtLCAicG9zaXRp
b24iICk7Ci0KLSAgICAvLyBzZXQgcG9zaXRpb24gZmlyc3QsIGluLWNhc2UgdG9wL2xlZnQgYXJl
IHNldCBldmVuIG9uIHN0YXRpYyBlbGVtCi0gICAgaWYgKCBwb3NpdGlvbiA9PT0gInN0YXRpYyIg
KSB7Ci0gICAgZWxlbS5zdHlsZS5wb3NpdGlvbiA9ICJyZWxhdGl2ZSI7Ci0gICAgfQotCi0gICAg
dmFyIGN1ckVsZW0gPSBqUXVlcnkoIGVsZW0gKSwKLSAgICBjdXJPZmZzZXQgPSBjdXJFbGVtLm9m
ZnNldCgpLAotICAgIGN1ckNTU1RvcCA9IGpRdWVyeS5jc3MoIGVsZW0sICJ0b3AiICksCi0gICAg
Y3VyQ1NTTGVmdCA9IGpRdWVyeS5jc3MoIGVsZW0sICJsZWZ0IiApLAotICAgIGNhbGN1bGF0ZVBv
c2l0aW9uID0gKCBwb3NpdGlvbiA9PT0gImFic29sdXRlIiB8fCBwb3NpdGlvbiA9PT0gImZpeGVk
IiApICYmIGpRdWVyeS5pbkFycmF5KCJhdXRvIiwgW2N1ckNTU1RvcCwgY3VyQ1NTTGVmdF0pID4g
LTEsCi0gICAgcHJvcHMgPSB7fSwgY3VyUG9zaXRpb24gPSB7fSwgY3VyVG9wLCBjdXJMZWZ0Owot
Ci0gICAgLy8gbmVlZCB0byBiZSBhYmxlIHRvIGNhbGN1bGF0ZSBwb3NpdGlvbiBpZiBlaXRoZXIg
dG9wIG9yIGxlZnQgaXMgYXV0byBhbmQgcG9zaXRpb24gaXMgZWl0aGVyIGFic29sdXRlIG9yIGZp
eGVkCi0gICAgaWYgKCBjYWxjdWxhdGVQb3NpdGlvbiApIHsKLSAgICBjdXJQb3NpdGlvbiA9IGN1
ckVsZW0ucG9zaXRpb24oKTsKLSAgICBjdXJUb3AgPSBjdXJQb3NpdGlvbi50b3A7Ci0gICAgY3Vy
TGVmdCA9IGN1clBvc2l0aW9uLmxlZnQ7Ci0gICAgfSBlbHNlIHsKLSAgICBjdXJUb3AgPSBwYXJz
ZUZsb2F0KCBjdXJDU1NUb3AgKSB8fCAwOwotICAgIGN1ckxlZnQgPSBwYXJzZUZsb2F0KCBjdXJD
U1NMZWZ0ICkgfHwgMDsKLSAgICB9Ci0KLSAgICBpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBvcHRp
b25zICkgKSB7Ci0gICAgb3B0aW9ucyA9IG9wdGlvbnMuY2FsbCggZWxlbSwgaSwgY3VyT2Zmc2V0
ICk7Ci0gICAgfQotCi0gICAgaWYgKCBvcHRpb25zLnRvcCAhPSBudWxsICkgewotICAgIHByb3Bz
LnRvcCA9ICggb3B0aW9ucy50b3AgLSBjdXJPZmZzZXQudG9wICkgKyBjdXJUb3A7Ci0gICAgfQot
ICAgIGlmICggb3B0aW9ucy5sZWZ0ICE9IG51bGwgKSB7Ci0gICAgcHJvcHMubGVmdCA9ICggb3B0
aW9ucy5sZWZ0IC0gY3VyT2Zmc2V0LmxlZnQgKSArIGN1ckxlZnQ7Ci0gICAgfQotCi0gICAgaWYg
KCAidXNpbmciIGluIG9wdGlvbnMgKSB7Ci0gICAgb3B0aW9ucy51c2luZy5jYWxsKCBlbGVtLCBw
cm9wcyApOwotICAgIH0gZWxzZSB7Ci0gICAgY3VyRWxlbS5jc3MoIHByb3BzICk7Ci0gICAgfQot
ICAgIH0KLX07Ci0KLQotalF1ZXJ5LmZuLmV4dGVuZCh7Ci0KLSAgICBwb3NpdGlvbjogZnVuY3Rp
b24oKSB7Ci0gICAgaWYgKCAhdGhpc1sgMCBdICkgewotICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICB2YXIgb2Zmc2V0UGFyZW50LCBvZmZzZXQsCi0gICAgcGFyZW50T2Zmc2V0ID0geyB0b3A6IDAs
IGxlZnQ6IDAgfSwKLSAgICBlbGVtID0gdGhpc1sgMCBdOwotCi0gICAgLy8gZml4ZWQgZWxlbWVu
dHMgYXJlIG9mZnNldCBmcm9tIHdpbmRvdyAocGFyZW50T2Zmc2V0ID0ge3RvcDowLCBsZWZ0OiAw
fSwgYmVjYXVzZSBpdCBpcyBpdCdzIG9ubHkgb2Zmc2V0IHBhcmVudAotICAgIGlmICggalF1ZXJ5
LmNzcyggZWxlbSwgInBvc2l0aW9uIiApID09PSAiZml4ZWQiICkgewotICAgIC8vIHdlIGFzc3Vt
ZSB0aGF0IGdldEJvdW5kaW5nQ2xpZW50UmVjdCBpcyBhdmFpbGFibGUgd2hlbiBjb21wdXRlZCBw
b3NpdGlvbiBpcyBmaXhlZAotICAgIG9mZnNldCA9IGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0
KCk7Ci0gICAgfSBlbHNlIHsKLSAgICAvLyBHZXQgKnJlYWwqIG9mZnNldFBhcmVudAotICAgIG9m
ZnNldFBhcmVudCA9IHRoaXMub2Zmc2V0UGFyZW50KCk7Ci0KLSAgICAvLyBHZXQgY29ycmVjdCBv
ZmZzZXRzCi0gICAgb2Zmc2V0ID0gdGhpcy5vZmZzZXQoKTsKLSAgICBpZiAoICFqUXVlcnkubm9k
ZU5hbWUoIG9mZnNldFBhcmVudFsgMCBdLCAiaHRtbCIgKSApIHsKLSAgICBwYXJlbnRPZmZzZXQg
PSBvZmZzZXRQYXJlbnQub2Zmc2V0KCk7Ci0gICAgfQotCi0gICAgLy8gQWRkIG9mZnNldFBhcmVu
dCBib3JkZXJzCi0gICAgcGFyZW50T2Zmc2V0LnRvcCAgKz0galF1ZXJ5LmNzcyggb2Zmc2V0UGFy
ZW50WyAwIF0sICJib3JkZXJUb3BXaWR0aCIsIHRydWUgKTsKLSAgICBwYXJlbnRPZmZzZXQubGVm
dCArPSBqUXVlcnkuY3NzKCBvZmZzZXRQYXJlbnRbIDAgXSwgImJvcmRlckxlZnRXaWR0aCIsIHRy
dWUgKTsKLSAgICB9Ci0KLSAgICAvLyBTdWJ0cmFjdCBwYXJlbnQgb2Zmc2V0cyBhbmQgZWxlbWVu
dCBtYXJnaW5zCi0gICAgLy8gbm90ZTogd2hlbiBhbiBlbGVtZW50IGhhcyBtYXJnaW46IGF1dG8g
dGhlIG9mZnNldExlZnQgYW5kIG1hcmdpbkxlZnQKLSAgICAvLyBhcmUgdGhlIHNhbWUgaW4gU2Fm
YXJpIGNhdXNpbmcgb2Zmc2V0LmxlZnQgdG8gaW5jb3JyZWN0bHkgYmUgMAotICAgIHJldHVybiB7
Ci0gICAgdG9wOiAgb2Zmc2V0LnRvcCAgLSBwYXJlbnRPZmZzZXQudG9wIC0galF1ZXJ5LmNzcygg
ZWxlbSwgIm1hcmdpblRvcCIsIHRydWUgKSwKLSAgICBsZWZ0OiBvZmZzZXQubGVmdCAtIHBhcmVu
dE9mZnNldC5sZWZ0IC0galF1ZXJ5LmNzcyggZWxlbSwgIm1hcmdpbkxlZnQiLCB0cnVlKQotICAg
IH07Ci0gICAgfSwKLQotICAgIG9mZnNldFBhcmVudDogZnVuY3Rpb24oKSB7Ci0gICAgcmV0dXJu
IHRoaXMubWFwKGZ1bmN0aW9uKCkgewotICAgIHZhciBvZmZzZXRQYXJlbnQgPSB0aGlzLm9mZnNl
dFBhcmVudCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7Ci0gICAgd2hpbGUgKCBvZmZzZXRQ
YXJlbnQgJiYgKCAhalF1ZXJ5Lm5vZGVOYW1lKCBvZmZzZXRQYXJlbnQsICJodG1sIiApICYmIGpR
dWVyeS5jc3MoIG9mZnNldFBhcmVudCwgInBvc2l0aW9uIikgPT09ICJzdGF0aWMiICkgKSB7Ci0g
ICAgb2Zmc2V0UGFyZW50ID0gb2Zmc2V0UGFyZW50Lm9mZnNldFBhcmVudDsKLSAgICB9Ci0gICAg
cmV0dXJuIG9mZnNldFBhcmVudCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7Ci0gICAgfSk7
Ci0gICAgfQotfSk7Ci0KLQotLy8gQ3JlYXRlIHNjcm9sbExlZnQgYW5kIHNjcm9sbFRvcCBtZXRo
b2RzCi1qUXVlcnkuZWFjaCgge3Njcm9sbExlZnQ6ICJwYWdlWE9mZnNldCIsIHNjcm9sbFRvcDog
InBhZ2VZT2Zmc2V0In0sIGZ1bmN0aW9uKCBtZXRob2QsIHByb3AgKSB7Ci0gICAgdmFyIHRvcCA9
IC9ZLy50ZXN0KCBwcm9wICk7Ci0KLSAgICBqUXVlcnkuZm5bIG1ldGhvZCBdID0gZnVuY3Rpb24o
IHZhbCApIHsKLSAgICByZXR1cm4galF1ZXJ5LmFjY2VzcyggdGhpcywgZnVuY3Rpb24oIGVsZW0s
IG1ldGhvZCwgdmFsICkgewotICAgIHZhciB3aW4gPSBnZXRXaW5kb3coIGVsZW0gKTsKLQotICAg
IGlmICggdmFsID09PSB1bmRlZmluZWQgKSB7Ci0gICAgcmV0dXJuIHdpbiA/IChwcm9wIGluIHdp
bikgPyB3aW5bIHByb3AgXSA6Ci0gICAgd2luLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFsgbWV0
aG9kIF0gOgotICAgIGVsZW1bIG1ldGhvZCBdOwotICAgIH0KLQotICAgIGlmICggd2luICkgewot
ICAgIHdpbi5zY3JvbGxUbygKLSAgICAhdG9wID8gdmFsIDogalF1ZXJ5KCB3aW4gKS5zY3JvbGxM
ZWZ0KCksCi0gICAgdG9wID8gdmFsIDogalF1ZXJ5KCB3aW4gKS5zY3JvbGxUb3AoKQotICAgICk7
Ci0KLSAgICB9IGVsc2UgewotICAgIGVsZW1bIG1ldGhvZCBdID0gdmFsOwotICAgIH0KLSAgICB9
LCBtZXRob2QsIHZhbCwgYXJndW1lbnRzLmxlbmd0aCwgbnVsbCApOwotICAgIH07Ci19KTsKLQot
ZnVuY3Rpb24gZ2V0V2luZG93KCBlbGVtICkgewotICAgIHJldHVybiBqUXVlcnkuaXNXaW5kb3co
IGVsZW0gKSA/Ci0gICAgZWxlbSA6Ci0gICAgZWxlbS5ub2RlVHlwZSA9PT0gOSA/Ci0gICAgZWxl
bS5kZWZhdWx0VmlldyB8fCBlbGVtLnBhcmVudFdpbmRvdyA6Ci0gICAgZmFsc2U7Ci19Ci0vLyBD
cmVhdGUgaW5uZXJIZWlnaHQsIGlubmVyV2lkdGgsIGhlaWdodCwgd2lkdGgsIG91dGVySGVpZ2h0
IGFuZCBvdXRlcldpZHRoIG1ldGhvZHMKLWpRdWVyeS5lYWNoKCB7IEhlaWdodDogImhlaWdodCIs
IFdpZHRoOiAid2lkdGgiIH0sIGZ1bmN0aW9uKCBuYW1lLCB0eXBlICkgewotICAgIGpRdWVyeS5l
YWNoKCB7IHBhZGRpbmc6ICJpbm5lciIgKyBuYW1lLCBjb250ZW50OiB0eXBlLCAiIjogIm91dGVy
IiArIG5hbWUgfSwgZnVuY3Rpb24oIGRlZmF1bHRFeHRyYSwgZnVuY05hbWUgKSB7Ci0gICAgLy8g
bWFyZ2luIGlzIG9ubHkgZm9yIG91dGVySGVpZ2h0LCBvdXRlcldpZHRoCi0gICAgalF1ZXJ5LmZu
WyBmdW5jTmFtZSBdID0gZnVuY3Rpb24oIG1hcmdpbiwgdmFsdWUgKSB7Ci0gICAgdmFyIGNoYWlu
YWJsZSA9IGFyZ3VtZW50cy5sZW5ndGggJiYgKCBkZWZhdWx0RXh0cmEgfHwgdHlwZW9mIG1hcmdp
biAhPT0gImJvb2xlYW4iICksCi0gICAgZXh0cmEgPSBkZWZhdWx0RXh0cmEgfHwgKCBtYXJnaW4g
PT09IHRydWUgfHwgdmFsdWUgPT09IHRydWUgPyAibWFyZ2luIiA6ICJib3JkZXIiICk7Ci0KLSAg
ICByZXR1cm4galF1ZXJ5LmFjY2VzcyggdGhpcywgZnVuY3Rpb24oIGVsZW0sIHR5cGUsIHZhbHVl
ICkgewotICAgIHZhciBkb2M7Ci0KLSAgICBpZiAoIGpRdWVyeS5pc1dpbmRvdyggZWxlbSApICkg
ewotICAgIC8vIEFzIG9mIDUvOC8yMDEyIHRoaXMgd2lsbCB5aWVsZCBpbmNvcnJlY3QgcmVzdWx0
cyBmb3IgTW9iaWxlIFNhZmFyaSwgYnV0IHRoZXJlCi0gICAgLy8gaXNuJ3QgYSB3aG9sZSBsb3Qg
d2UgY2FuIGRvLiBTZWUgcHVsbCByZXF1ZXN0IGF0IHRoaXMgVVJMIGZvciBkaXNjdXNzaW9uOgot
ICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9qcXVlcnkvanF1ZXJ5L3B1bGwvNzY0Ci0gICAgcmV0
dXJuIGVsZW0uZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50WyAiY2xpZW50IiArIG5hbWUgXTsKLSAg
ICB9Ci0KLSAgICAvLyBHZXQgZG9jdW1lbnQgd2lkdGggb3IgaGVpZ2h0Ci0gICAgaWYgKCBlbGVt
Lm5vZGVUeXBlID09PSA5ICkgewotICAgIGRvYyA9IGVsZW0uZG9jdW1lbnRFbGVtZW50OwotCi0g
ICAgLy8gRWl0aGVyIHNjcm9sbFtXaWR0aC9IZWlnaHRdIG9yIG9mZnNldFtXaWR0aC9IZWlnaHRd
IG9yIGNsaWVudFtXaWR0aC9IZWlnaHRdLCB3aGljaGV2ZXIgaXMgZ3JlYXRlc3QKLSAgICAvLyB1
bmZvcnR1bmF0ZWx5LCB0aGlzIGNhdXNlcyBidWcgIzM4MzggaW4gSUU2Lzggb25seSwgYnV0IHRo
ZXJlIGlzIGN1cnJlbnRseSBubyBnb29kLCBzbWFsbCB3YXkgdG8gZml4IGl0LgotICAgIHJldHVy
biBNYXRoLm1heCgKLSAgICBlbGVtLmJvZHlbICJzY3JvbGwiICsgbmFtZSBdLCBkb2NbICJzY3Jv
bGwiICsgbmFtZSBdLAotICAgIGVsZW0uYm9keVsgIm9mZnNldCIgKyBuYW1lIF0sIGRvY1sgIm9m
ZnNldCIgKyBuYW1lIF0sCi0gICAgZG9jWyAiY2xpZW50IiArIG5hbWUgXQotICAgICk7Ci0gICAg
fQotCi0gICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPwotICAgIC8vIEdldCB3aWR0aCBv
ciBoZWlnaHQgb24gdGhlIGVsZW1lbnQsIHJlcXVlc3RpbmcgYnV0IG5vdCBmb3JjaW5nIHBhcnNl
RmxvYXQKLSAgICBqUXVlcnkuY3NzKCBlbGVtLCB0eXBlLCBleHRyYSApIDoKLQotICAgIC8vIFNl
dCB3aWR0aCBvciBoZWlnaHQgb24gdGhlIGVsZW1lbnQKLSAgICBqUXVlcnkuc3R5bGUoIGVsZW0s
IHR5cGUsIHZhbHVlLCBleHRyYSApOwotICAgIH0sIHR5cGUsIGNoYWluYWJsZSA/IG1hcmdpbiA6
IHVuZGVmaW5lZCwgY2hhaW5hYmxlLCBudWxsICk7Ci0gICAgfTsKLSAgICB9KTsKLX0pOwotLy8g
TGltaXQgc2NvcGUgcG9sbHV0aW9uIGZyb20gYW55IGRlcHJlY2F0ZWQgQVBJCi0vLyAoZnVuY3Rp
b24oKSB7Ci0KLS8vIH0pKCk7Ci0vLyBFeHBvc2UgalF1ZXJ5IHRvIHRoZSBnbG9iYWwgb2JqZWN0
Ci13aW5kb3cualF1ZXJ5ID0gd2luZG93LiQgPSBqUXVlcnk7Ci0KLS8vIEV4cG9zZSBqUXVlcnkg
YXMgYW4gQU1EIG1vZHVsZSwgYnV0IG9ubHkgZm9yIEFNRCBsb2FkZXJzIHRoYXQKLS8vIHVuZGVy
c3RhbmQgdGhlIGlzc3VlcyB3aXRoIGxvYWRpbmcgbXVsdGlwbGUgdmVyc2lvbnMgb2YgalF1ZXJ5
Ci0vLyBpbiBhIHBhZ2UgdGhhdCBhbGwgbWlnaHQgY2FsbCBkZWZpbmUoKS4gVGhlIGxvYWRlciB3
aWxsIGluZGljYXRlCi0vLyB0aGV5IGhhdmUgc3BlY2lhbCBhbGxvd2FuY2VzIGZvciBtdWx0aXBs
ZSBqUXVlcnkgdmVyc2lvbnMgYnkKLS8vIHNwZWNpZnlpbmcgZGVmaW5lLmFtZC5qUXVlcnkgPSB0
cnVlLiBSZWdpc3RlciBhcyBhIG5hbWVkIG1vZHVsZSwKLS8vIHNpbmNlIGpRdWVyeSBjYW4gYmUg
Y29uY2F0ZW5hdGVkIHdpdGggb3RoZXIgZmlsZXMgdGhhdCBtYXkgdXNlIGRlZmluZSwKLS8vIGJ1
dCBub3QgdXNlIGEgcHJvcGVyIGNvbmNhdGVuYXRpb24gc2NyaXB0IHRoYXQgdW5kZXJzdGFuZHMg
YW5vbnltb3VzCi0vLyBBTUQgbW9kdWxlcy4gQSBuYW1lZCBBTUQgaXMgc2FmZXN0IGFuZCBtb3N0
IHJvYnVzdCB3YXkgdG8gcmVnaXN0ZXIuCi0vLyBMb3dlcmNhc2UganF1ZXJ5IGlzIHVzZWQgYmVj
YXVzZSBBTUQgbW9kdWxlIG5hbWVzIGFyZSBkZXJpdmVkIGZyb20KLS8vIGZpbGUgbmFtZXMsIGFu
ZCBqUXVlcnkgaXMgbm9ybWFsbHkgZGVsaXZlcmVkIGluIGEgbG93ZXJjYXNlIGZpbGUgbmFtZS4K
LS8vIERvIHRoaXMgYWZ0ZXIgY3JlYXRpbmcgdGhlIGdsb2JhbCBzbyB0aGF0IGlmIGFuIEFNRCBt
b2R1bGUgd2FudHMgdG8gY2FsbAotLy8gbm9Db25mbGljdCB0byBoaWRlIHRoaXMgdmVyc2lvbiBv
ZiBqUXVlcnksIGl0IHdpbGwgd29yay4KLWlmICggdHlwZW9mIGRlZmluZSA9PT0gImZ1bmN0aW9u
IiAmJiBkZWZpbmUuYW1kICYmIGRlZmluZS5hbWQualF1ZXJ5ICkgewotICAgIGRlZmluZSggImpx
dWVyeSIsIFtdLCBmdW5jdGlvbiAoKSB7IHJldHVybiBqUXVlcnk7IH0gKTsKLX0KLQotfSkoIHdp
bmRvdyApOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2JhY2tib25lL2Jvd2VyX2NvbXBvbmVudHMvdG9kb212Yy1jb21tb24vYmFzZS5jc3MgYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9iYWNrYm9uZS9ib3dlcl9jb21wb25lbnRzL3RvZG9tdmMtY29tbW9uL2Jhc2Uu
Y3NzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MzdjZDljYzhjN2UwN2U0NjkxZDRl
ZTFiYWE3MDJlNDk5M2NhMjFhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL2Jvd2VyX2NvbXBvbmVudHMvdG9kb212Yy1j
b21tb24vYmFzZS5jc3MKKysrIC9kZXYvbnVsbApAQCAtMSw1NTQgKzAsMCBAQAotaHRtbCwKLWJv
ZHkgewotICAgIG1hcmdpbjogMDsKLSAgICBwYWRkaW5nOiAwOwotfQotCi1idXR0b24gewotICAg
IG1hcmdpbjogMDsKLSAgICBwYWRkaW5nOiAwOwotICAgIGJvcmRlcjogMDsKLSAgICBiYWNrZ3Jv
dW5kOiBub25lOwotICAgIGZvbnQtc2l6ZTogMTAwJTsKLSAgICB2ZXJ0aWNhbC1hbGlnbjogYmFz
ZWxpbmU7Ci0gICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7Ci0gICAgY29sb3I6IGluaGVyaXQ7Ci0g
ICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwotICAgIC8qLW1vei1hcHBlYXJhbmNlOiBub25l
OyovCi0gICAgLW1zLWFwcGVhcmFuY2U6IG5vbmU7Ci0gICAgLW8tYXBwZWFyYW5jZTogbm9uZTsK
LSAgICBhcHBlYXJhbmNlOiBub25lOwotfQotCi1ib2R5IHsKLSAgICBmb250OiAxNHB4ICdIZWx2
ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7Ci0gICAgbGluZS1oZWln
aHQ6IDEuNGVtOwotICAgIGJhY2tncm91bmQ6ICNlYWVhZWEgdXJsKCdiZy5wbmcnKTsKLSAgICBj
b2xvcjogIzRkNGQ0ZDsKLSAgICB3aWR0aDogNTUwcHg7Ci0gICAgbWFyZ2luOiAwIGF1dG87Ci0g
ICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7Ci0gICAgLW1vei1mb250LXNt
b290aGluZzogYW50aWFsaWFzZWQ7Ci0gICAgLW1zLWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNl
ZDsKLSAgICAtby1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7Ci0gICAgZm9udC1zbW9vdGhp
bmc6IGFudGlhbGlhc2VkOwotfQotCi0jdG9kb2FwcCB7Ci0gICAgYmFja2dyb3VuZDogI2ZmZjsK
LSAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSk7Ci0gICAgbWFyZ2luOiAx
MzBweCAwIDQwcHggMDsKLSAgICBib3JkZXI6IDFweCBzb2xpZCAjY2NjOwotICAgIHBvc2l0aW9u
OiByZWxhdGl2ZTsKLSAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAycHg7Ci0gICAgYm9yZGVy
LXRvcC1yaWdodC1yYWRpdXM6IDJweDsKLSAgICBib3gtc2hhZG93OiAwIDJweCA2cHggMCByZ2Jh
KDAsIDAsIDAsIDAuMiksCi0gICAgMCAyNXB4IDUwcHggMCByZ2JhKDAsIDAsIDAsIDAuMTUpOwot
fQotCi0jdG9kb2FwcDpiZWZvcmUgewotICAgIGNvbnRlbnQ6ICcnOwotICAgIGJvcmRlci1sZWZ0
OiAxcHggc29saWQgI2Y1ZDZkNjsKLSAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjZjVkNmQ2
OwotICAgIHdpZHRoOiAycHg7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHRvcDogMDsK
LSAgICBsZWZ0OiA0MHB4OwotICAgIGhlaWdodDogMTAwJTsKLX0KLQotI3RvZG9hcHAgaW5wdXQ6
Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIgewotICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKLX0K
LQotI3RvZG9hcHAgaW5wdXQ6Oi1tb3otcGxhY2Vob2xkZXIgewotICAgIGZvbnQtc3R5bGU6IGl0
YWxpYzsKLSAgICBjb2xvcjogI2E5YTlhOTsKLX0KLQotI3RvZG9hcHAgaDEgewotICAgIHBvc2l0
aW9uOiBhYnNvbHV0ZTsKLSAgICB0b3A6IC0xMjBweDsKLSAgICB3aWR0aDogMTAwJTsKLSAgICBm
b250LXNpemU6IDcwcHg7Ci0gICAgZm9udC13ZWlnaHQ6IGJvbGQ7Ci0gICAgdGV4dC1hbGlnbjog
Y2VudGVyOwotICAgIGNvbG9yOiAjYjNiM2IzOwotICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAy
NTUsIDAuMyk7Ci0gICAgdGV4dC1zaGFkb3c6IC0xcHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMik7
Ci0gICAgLXdlYmtpdC10ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5OwotICAgIC1t
b3otdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTsKLSAgICAtbXMtdGV4dC1yZW5k
ZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTsKLSAgICAtby10ZXh0LXJlbmRlcmluZzogb3B0aW1p
emVMZWdpYmlsaXR5OwotICAgIHRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7Ci19
Ci0KLSNoZWFkZXIgewotICAgIHBhZGRpbmctdG9wOiAxNXB4OwotICAgIGJvcmRlci1yYWRpdXM6
IGluaGVyaXQ7Ci19Ci0KLSNoZWFkZXI6YmVmb3JlIHsKLSAgICBjb250ZW50OiAnJzsKLSAgICBw
b3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgdG9wOiAwOwotICAgIHJpZ2h0OiAwOwotICAgIGxlZnQ6
IDA7Ci0gICAgaGVpZ2h0OiAxNXB4OwotICAgIHotaW5kZXg6IDI7Ci0gICAgYm9yZGVyLWJvdHRv
bTogMXB4IHNvbGlkICM2YzYxNWM7Ci0gICAgYmFja2dyb3VuZDogIzhkN2Q3NzsKLSAgICBiYWNr
Z3JvdW5kOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90dG9tLCBm
cm9tKHJnYmEoMTMyLCAxMTAsIDEwMCwgMC44KSksdG8ocmdiYSgxMDEsIDg0LCA3NiwgMC44KSkp
OwotICAgIGJhY2tncm91bmQ6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgcmdiYSgxMzIs
IDExMCwgMTAwLCAwLjgpLCByZ2JhKDEwMSwgODQsIDc2LCAwLjgpKTsKLSAgICBiYWNrZ3JvdW5k
OiAtbW96LWxpbmVhci1ncmFkaWVudCh0b3AsIHJnYmEoMTMyLCAxMTAsIDEwMCwgMC44KSwgcmdi
YSgxMDEsIDg0LCA3NiwgMC44KSk7Ci0gICAgYmFja2dyb3VuZDogLW8tbGluZWFyLWdyYWRpZW50
KHRvcCwgcmdiYSgxMzIsIDExMCwgMTAwLCAwLjgpLCByZ2JhKDEwMSwgODQsIDc2LCAwLjgpKTsK
LSAgICBiYWNrZ3JvdW5kOiAtbXMtbGluZWFyLWdyYWRpZW50KHRvcCwgcmdiYSgxMzIsIDExMCwg
MTAwLCAwLjgpLCByZ2JhKDEwMSwgODQsIDc2LCAwLjgpKTsKLSAgICBiYWNrZ3JvdW5kOiBsaW5l
YXItZ3JhZGllbnQodG9wLCByZ2JhKDEzMiwgMTEwLCAxMDAsIDAuOCksIHJnYmEoMTAxLCA4NCwg
NzYsIDAuOCkpOwotICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDFweDsKLSAgICBib3JkZXIt
dG9wLXJpZ2h0LXJhZGl1czogMXB4OwotfQotCi0jbmV3LXRvZG8sCi0uZWRpdCB7Ci0gICAgcG9z
aXRpb246IHJlbGF0aXZlOwotICAgIG1hcmdpbjogMDsKLSAgICB3aWR0aDogMTAwJTsKLSAgICBm
b250LXNpemU6IDI0cHg7Ci0gICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7Ci0gICAgbGluZS1oZWln
aHQ6IDEuNGVtOwotICAgIGJvcmRlcjogMDsKLSAgICBvdXRsaW5lOiBub25lOwotICAgIGNvbG9y
OiBpbmhlcml0OwotICAgIHBhZGRpbmc6IDZweDsKLSAgICBib3JkZXI6IDFweCBzb2xpZCAjOTk5
OwotICAgIGJveC1zaGFkb3c6IGluc2V0IDAgLTFweCA1cHggMCByZ2JhKDAsIDAsIDAsIDAuMik7
Ci0gICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94OwotICAgIC1tb3otYm94LXNpemlu
ZzogYm9yZGVyLWJveDsKLSAgICAtbXMtYm94LXNpemluZzogYm9yZGVyLWJveDsKLSAgICAtby1i
b3gtc2l6aW5nOiBib3JkZXItYm94OwotICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Ci0gICAg
LXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7Ci0gICAgLW1vei1mb250LXNtb290
aGluZzogYW50aWFsaWFzZWQ7Ci0gICAgLW1zLWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsK
LSAgICAtby1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7Ci0gICAgZm9udC1zbW9vdGhpbmc6
IGFudGlhbGlhc2VkOwotfQotCi0jbmV3LXRvZG8gewotICAgIHBhZGRpbmc6IDE2cHggMTZweCAx
NnB4IDYwcHg7Ci0gICAgYm9yZGVyOiBub25lOwotICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwg
MCwgMC4wMik7Ci0gICAgei1pbmRleDogMjsKLSAgICBib3gtc2hhZG93OiBub25lOwotfQotCi0j
bWFpbiB7Ci0gICAgcG9zaXRpb246IHJlbGF0aXZlOwotICAgIHotaW5kZXg6IDI7Ci0gICAgYm9y
ZGVyLXRvcDogMXB4IGRvdHRlZCAjYWRhZGFkOwotfQotCi1sYWJlbFtmb3I9J3RvZ2dsZS1hbGwn
XSB7Ci0gICAgZGlzcGxheTogbm9uZTsKLX0KLQotI3RvZ2dsZS1hbGwgewotICAgIHBvc2l0aW9u
OiBhYnNvbHV0ZTsKLSAgICB0b3A6IC00MnB4OwotICAgIGxlZnQ6IC00cHg7Ci0gICAgd2lkdGg6
IDQwcHg7Ci0gICAgdGV4dC1hbGlnbjogY2VudGVyOwotICAgIGJvcmRlcjogbm9uZTsgLyogTW9i
aWxlIFNhZmFyaSAqLwotfQotCi0jdG9nZ2xlLWFsbDpiZWZvcmUgewotICAgIGNvbnRlbnQ6ICfC
uyc7Ci0gICAgZm9udC1zaXplOiAyOHB4OwotICAgIGNvbG9yOiAjZDlkOWQ5OwotICAgIHBhZGRp
bmc6IDAgMjVweCA3cHg7Ci19Ci0KLSN0b2dnbGUtYWxsOmNoZWNrZWQ6YmVmb3JlIHsKLSAgICBj
b2xvcjogIzczNzM3MzsKLX0KLQotI3RvZG8tbGlzdCB7Ci0gICAgbWFyZ2luOiAwOwotICAgIHBh
ZGRpbmc6IDA7Ci0gICAgbGlzdC1zdHlsZTogbm9uZTsKLX0KLQotI3RvZG8tbGlzdCBsaSB7Ci0g
ICAgcG9zaXRpb246IHJlbGF0aXZlOwotICAgIGZvbnQtc2l6ZTogMjRweDsKLSAgICBib3JkZXIt
Ym90dG9tOiAxcHggZG90dGVkICNjY2M7Ci19Ci0KLSN0b2RvLWxpc3QgbGk6bGFzdC1jaGlsZCB7
Ci0gICAgYm9yZGVyLWJvdHRvbTogbm9uZTsKLX0KLQotI3RvZG8tbGlzdCBsaS5lZGl0aW5nIHsK
LSAgICBib3JkZXItYm90dG9tOiBub25lOwotICAgIHBhZGRpbmc6IDA7Ci19Ci0KLSN0b2RvLWxp
c3QgbGkuZWRpdGluZyAuZWRpdCB7Ci0gICAgZGlzcGxheTogYmxvY2s7Ci0gICAgd2lkdGg6IDUw
NnB4OwotICAgIHBhZGRpbmc6IDEzcHggMTdweCAxMnB4IDE3cHg7Ci0gICAgbWFyZ2luOiAwIDAg
MCA0M3B4OwotfQotCi0jdG9kby1saXN0IGxpLmVkaXRpbmcgLnZpZXcgewotICAgIGRpc3BsYXk6
IG5vbmU7Ci19Ci0KLSN0b2RvLWxpc3QgbGkgLnRvZ2dsZSB7Ci0gICAgdGV4dC1hbGlnbjogY2Vu
dGVyOwotICAgIHdpZHRoOiA0MHB4OwotICAgIC8qIGF1dG8sIHNpbmNlIG5vbi1XZWJLaXQgYnJv
d3NlcnMgZG9lc24ndCBzdXBwb3J0IGlucHV0IHN0eWxpbmcgKi8KLSAgICBoZWlnaHQ6IGF1dG87
Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHRvcDogMDsKLSAgICBib3R0b206IDA7Ci0g
ICAgbWFyZ2luOiBhdXRvIDA7Ci0gICAgYm9yZGVyOiBub25lOyAvKiBNb2JpbGUgU2FmYXJpICov
Ci0gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwotICAgIC8qLW1vei1hcHBlYXJhbmNlOiBu
b25lOyovCi0gICAgLW1zLWFwcGVhcmFuY2U6IG5vbmU7Ci0gICAgLW8tYXBwZWFyYW5jZTogbm9u
ZTsKLSAgICBhcHBlYXJhbmNlOiBub25lOwotfQotCi0jdG9kby1saXN0IGxpIC50b2dnbGU6YWZ0
ZXIgewotICAgIGNvbnRlbnQ6ICfinJQnOwotICAgIGxpbmUtaGVpZ2h0OiA0M3B4OyAvKiA0MCAr
IGEgY291cGxlIG9mIHBpeGVscyB2aXN1YWwgYWRqdXN0bWVudCAqLwotICAgIGZvbnQtc2l6ZTog
MjBweDsKLSAgICBjb2xvcjogI2Q5ZDlkOTsKLSAgICB0ZXh0LXNoYWRvdzogMCAtMXB4IDAgI2Jm
YmZiZjsKLX0KLQotI3RvZG8tbGlzdCBsaSAudG9nZ2xlOmNoZWNrZWQ6YWZ0ZXIgewotICAgIGNv
bG9yOiAjODVhZGE3OwotICAgIHRleHQtc2hhZG93OiAwIDFweCAwICM2Njk5OTE7Ci0gICAgYm90
dG9tOiAxcHg7Ci0gICAgcG9zaXRpb246IHJlbGF0aXZlOwotfQotCi0jdG9kby1saXN0IGxpIGxh
YmVsIHsKLSAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkOwotICAgIHBhZGRpbmc6IDE1cHg7Ci0g
ICAgbWFyZ2luLWxlZnQ6IDQ1cHg7Ci0gICAgZGlzcGxheTogYmxvY2s7Ci0gICAgbGluZS1oZWln
aHQ6IDEuMjsKLSAgICAtd2Via2l0LXRyYW5zaXRpb246IGNvbG9yIDAuNHM7Ci0gICAgLW1vei10
cmFuc2l0aW9uOiBjb2xvciAwLjRzOwotICAgIC1tcy10cmFuc2l0aW9uOiBjb2xvciAwLjRzOwot
ICAgIC1vLXRyYW5zaXRpb246IGNvbG9yIDAuNHM7Ci0gICAgdHJhbnNpdGlvbjogY29sb3IgMC40
czsKLX0KLQotI3RvZG8tbGlzdCBsaS5jb21wbGV0ZWQgbGFiZWwgewotICAgIGNvbG9yOiAjYTlh
OWE5OwotICAgIHRleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdoOwotfQotCi0jdG9kby1saXN0
IGxpIC5kZXN0cm95IHsKLSAgICBkaXNwbGF5OiBub25lOwotICAgIHBvc2l0aW9uOiBhYnNvbHV0
ZTsKLSAgICB0b3A6IDA7Ci0gICAgcmlnaHQ6IDEwcHg7Ci0gICAgYm90dG9tOiAwOwotICAgIHdp
ZHRoOiA0MHB4OwotICAgIGhlaWdodDogNDBweDsKLSAgICBtYXJnaW46IGF1dG8gMDsKLSAgICBm
b250LXNpemU6IDIycHg7Ci0gICAgY29sb3I6ICNhODhhOGE7Ci0gICAgLXdlYmtpdC10cmFuc2l0
aW9uOiBhbGwgMC4yczsKLSAgICAtbW96LXRyYW5zaXRpb246IGFsbCAwLjJzOwotICAgIC1tcy10
cmFuc2l0aW9uOiBhbGwgMC4yczsKLSAgICAtby10cmFuc2l0aW9uOiBhbGwgMC4yczsKLSAgICB0
cmFuc2l0aW9uOiBhbGwgMC4yczsKLX0KLQotI3RvZG8tbGlzdCBsaSAuZGVzdHJveTpob3ZlciB7
Ci0gICAgdGV4dC1zaGFkb3c6IDAgMCAxcHggIzAwMCwKLSAgICAgMCAwIDEwcHggcmdiYSgxOTks
IDEwNywgMTA3LCAwLjgpOwotICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxLjMpOwotICAg
IC1tb3otdHJhbnNmb3JtOiBzY2FsZSgxLjMpOwotICAgIC1tcy10cmFuc2Zvcm06IHNjYWxlKDEu
Myk7Ci0gICAgLW8tdHJhbnNmb3JtOiBzY2FsZSgxLjMpOwotICAgIHRyYW5zZm9ybTogc2NhbGUo
MS4zKTsKLX0KLQotI3RvZG8tbGlzdCBsaSAuZGVzdHJveTphZnRlciB7Ci0gICAgY29udGVudDog
J+Kclic7Ci19Ci0KLSN0b2RvLWxpc3QgbGk6aG92ZXIgLmRlc3Ryb3kgewotICAgIGRpc3BsYXk6
IGJsb2NrOwotfQotCi0jdG9kby1saXN0IGxpIC5lZGl0IHsKLSAgICBkaXNwbGF5OiBub25lOwot
fQotCi0jdG9kby1saXN0IGxpLmVkaXRpbmc6bGFzdC1jaGlsZCB7Ci0gICAgbWFyZ2luLWJvdHRv
bTogLTFweDsKLX0KLQotI2Zvb3RlciB7Ci0gICAgY29sb3I6ICM3Nzc7Ci0gICAgcGFkZGluZzog
MCAxNXB4OwotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICByaWdodDogMDsKLSAgICBib3R0
b206IC0zMXB4OwotICAgIGxlZnQ6IDA7Ci0gICAgaGVpZ2h0OiAyMHB4OwotICAgIHotaW5kZXg6
IDE7Ci0gICAgdGV4dC1hbGlnbjogY2VudGVyOwotfQotCi0jZm9vdGVyOmJlZm9yZSB7Ci0gICAg
Y29udGVudDogJyc7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHJpZ2h0OiAwOwotICAg
IGJvdHRvbTogMzFweDsKLSAgICBsZWZ0OiAwOwotICAgIGhlaWdodDogNTBweDsKLSAgICB6LWlu
ZGV4OiAtMTsKLSAgICBib3gtc2hhZG93OiAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjMpLAot
ICAgIDAgNnB4IDAgLTNweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCksCi0gICAgMCA3cHggMXB4
IC0zcHggcmdiYSgwLCAwLCAwLCAwLjMpLAotICAgIDAgNDNweCAwIC02cHggcmdiYSgyNTUsIDI1
NSwgMjU1LCAwLjgpLAotICAgIDAgNDRweCAycHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMik7Ci19
Ci0KLSN0b2RvLWNvdW50IHsKLSAgICBmbG9hdDogbGVmdDsKLSAgICB0ZXh0LWFsaWduOiBsZWZ0
OwotfQotCi0jZmlsdGVycyB7Ci0gICAgbWFyZ2luOiAwOwotICAgIHBhZGRpbmc6IDA7Ci0gICAg
bGlzdC1zdHlsZTogbm9uZTsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgcmlnaHQ6IDA7
Ci0gICAgbGVmdDogMDsKLX0KLQotI2ZpbHRlcnMgbGkgewotICAgIGRpc3BsYXk6IGlubGluZTsK
LX0KLQotI2ZpbHRlcnMgbGkgYSB7Ci0gICAgY29sb3I6ICM4Mzc1NmY7Ci0gICAgbWFyZ2luOiAy
cHg7Ci0gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwotfQotCi0jZmlsdGVycyBsaSBhLnNlbGVj
dGVkIHsKLSAgICBmb250LXdlaWdodDogYm9sZDsKLX0KLQotI2NsZWFyLWNvbXBsZXRlZCB7Ci0g
ICAgZmxvYXQ6IHJpZ2h0OwotICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKLSAgICBsaW5lLWhlaWdo
dDogMjBweDsKLSAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Ci0gICAgYmFja2dyb3VuZDogcmdi
YSgwLCAwLCAwLCAwLjEpOwotICAgIGZvbnQtc2l6ZTogMTFweDsKLSAgICBwYWRkaW5nOiAwIDEw
cHg7Ci0gICAgYm9yZGVyLXJhZGl1czogM3B4OwotICAgIGJveC1zaGFkb3c6IDAgLTFweCAwIDAg
cmdiYSgwLCAwLCAwLCAwLjIpOwotfQotCi0jY2xlYXItY29tcGxldGVkOmhvdmVyIHsKLSAgICBi
YWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMTUpOwotICAgIGJveC1zaGFkb3c6IDAgLTFweCAw
IDAgcmdiYSgwLCAwLCAwLCAwLjMpOwotfQotCi0jaW5mbyB7Ci0gICAgbWFyZ2luOiA2NXB4IGF1
dG8gMDsKLSAgICBjb2xvcjogI2E2YTZhNjsKLSAgICBmb250LXNpemU6IDEycHg7Ci0gICAgdGV4
dC1zaGFkb3c6IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpOwotICAgIHRleHQtYWxp
Z246IGNlbnRlcjsKLX0KLQotI2luZm8gYSB7Ci0gICAgY29sb3I6IGluaGVyaXQ7Ci19Ci0KLS8q
Ci0gICAgSGFjayB0byByZW1vdmUgYmFja2dyb3VuZCBmcm9tIE1vYmlsZSBTYWZhcmkuCi0gICAg
Q2FuJ3QgdXNlIGl0IGdsb2JhbGx5IHNpbmNlIGl0IGRlc3Ryb3lzIGNoZWNrYm94ZXMgaW4gRmly
ZWZveCBhbmQgT3BlcmEKLSovCi1AbWVkaWEgc2NyZWVuIGFuZCAoLXdlYmtpdC1taW4tZGV2aWNl
LXBpeGVsLXJhdGlvOjApIHsKLSAgICAjdG9nZ2xlLWFsbCwKLSAgICAjdG9kby1saXN0IGxpIC50
b2dnbGUgewotICAgIGJhY2tncm91bmQ6IG5vbmU7Ci0gICAgfQotCi0gICAgI3RvZG8tbGlzdCBs
aSAudG9nZ2xlIHsKLSAgICBoZWlnaHQ6IDQwcHg7Ci0gICAgfQotCi0gICAgI3RvZ2dsZS1hbGwg
ewotICAgIHRvcDogLTU2cHg7Ci0gICAgbGVmdDogLTE1cHg7Ci0gICAgd2lkdGg6IDY1cHg7Ci0g
ICAgaGVpZ2h0OiA0MXB4OwotICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpOwot
ICAgIHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsKLSAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5v
bmU7Ci0gICAgYXBwZWFyYW5jZTogbm9uZTsKLSAgICB9Ci19Ci0KLS5oaWRkZW57Ci0gICAgZGlz
cGxheTpub25lOwotfQotCi1ociB7Ci0gICAgbWFyZ2luOiAyMHB4IDA7Ci0gICAgYm9yZGVyOiAw
OwotICAgIGJvcmRlci10b3A6IDFweCBkYXNoZWQgI0M1QzVDNTsKLSAgICBib3JkZXItYm90dG9t
OiAxcHggZGFzaGVkICNGN0Y3Rjc7Ci19Ci0KLS5sZWFybiBhIHsKLSAgICBmb250LXdlaWdodDog
bm9ybWFsOwotICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKLSAgICBjb2xvcjogI2I4M2Y0NTsK
LX0KLQotLmxlYXJuIGE6aG92ZXIgewotICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwot
ICAgIGNvbG9yOiAjNzg3ZTdlOwotfQotCi0ubGVhcm4gaDMsCi0ubGVhcm4gaDQsCi0ubGVhcm4g
aDUgewotICAgIG1hcmdpbjogMTBweCAwOwotICAgIGZvbnQtd2VpZ2h0OiA1MDA7Ci0gICAgbGlu
ZS1oZWlnaHQ6IDEuMjsKLSAgICBjb2xvcjogIzAwMDsKLX0KLQotLmxlYXJuIGgzIHsKLSAgICBm
b250LXNpemU6IDI0cHg7Ci19Ci0KLS5sZWFybiBoNCB7Ci0gICAgZm9udC1zaXplOiAxOHB4Owot
fQotCi0ubGVhcm4gaDUgewotICAgIG1hcmdpbi1ib3R0b206IDA7Ci0gICAgZm9udC1zaXplOiAx
NHB4OwotfQotCi0ubGVhcm4gdWwgewotICAgIHBhZGRpbmc6IDA7Ci0gICAgbWFyZ2luOiAwIDAg
MzBweCAyNXB4OwotfQotCi0ubGVhcm4gbGkgewotICAgIGxpbmUtaGVpZ2h0OiAyMHB4OwotfQot
Ci0ubGVhcm4gcCB7Ci0gICAgZm9udC1zaXplOiAxNXB4OwotICAgIGZvbnQtd2VpZ2h0OiAzMDA7
Ci0gICAgbGluZS1oZWlnaHQ6IDEuMzsKLSAgICBtYXJnaW4tdG9wOiAwOwotICAgIG1hcmdpbi1i
b3R0b206IDA7Ci19Ci0KLS5xdW90ZSB7Ci0gICAgYm9yZGVyOiBub25lOwotICAgIG1hcmdpbjog
MjBweCAwIDYwcHggMDsKLX0KLQotLnF1b3RlIHAgewotICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsK
LX0KLQotLnF1b3RlIHA6YmVmb3JlIHsKLSAgICBjb250ZW50OiAn4oCcJzsKLSAgICBmb250LXNp
emU6IDUwcHg7Ci0gICAgb3BhY2l0eTogLjE1OwotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAg
ICB0b3A6IC0yMHB4OwotICAgIGxlZnQ6IDNweDsKLX0KLQotLnF1b3RlIHA6YWZ0ZXIgewotICAg
IGNvbnRlbnQ6ICfigJ0nOwotICAgIGZvbnQtc2l6ZTogNTBweDsKLSAgICBvcGFjaXR5OiAuMTU7
Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIGJvdHRvbTogLTQycHg7Ci0gICAgcmlnaHQ6
IDNweDsKLX0KLQotLnF1b3RlIGZvb3RlciB7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAg
IGJvdHRvbTogLTQwcHg7Ci0gICAgcmlnaHQ6IDA7Ci19Ci0KLS5xdW90ZSBmb290ZXIgaW1nIHsK
LSAgICBib3JkZXItcmFkaXVzOiAzcHg7Ci19Ci0KLS5xdW90ZSBmb290ZXIgYSB7Ci0gICAgbWFy
Z2luLWxlZnQ6IDVweDsKLSAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwotfQotCi0uc3BlZWNo
LWJ1YmJsZSB7Ci0gICAgcG9zaXRpb246IHJlbGF0aXZlOwotICAgIHBhZGRpbmc6IDEwcHg7Ci0g
ICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAuMDQpOwotICAgIGJvcmRlci1yYWRpdXM6IDVw
eDsKLX0KLQotLnNwZWVjaC1idWJibGU6YWZ0ZXIgewotICAgIGNvbnRlbnQ6ICcnOwotICAgIHBv
c2l0aW9uOiBhYnNvbHV0ZTsKLSAgICB0b3A6IDEwMCU7Ci0gICAgcmlnaHQ6IDMwcHg7Ci0gICAg
Ym9yZGVyOiAxM3B4IHNvbGlkIHRyYW5zcGFyZW50OwotICAgIGJvcmRlci10b3AtY29sb3I6IHJn
YmEoMCwgMCwgMCwgLjA0KTsKLX0KLQotLyoqYm9keSovLmxlYXJuLWJhciA+IC5sZWFybiB7Ci0g
ICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHdpZHRoOiAyNzJweDsKLSAgICB0b3A6IDhweDsK
LSAgICBsZWZ0OiAtMzAwcHg7Ci0gICAgcGFkZGluZzogMTBweDsKLSAgICBib3JkZXItcmFkaXVz
OiA1cHg7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAuNik7Ci0g
ICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogbGVmdDsKLSAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiA1
MDBtczsKLX0KLQotQG1lZGlhIChtaW4td2lkdGg6IDg5OXB4KSB7Ci0gICAgLyoqYm9keSovLmxl
YXJuLWJhciB7Ci0gICAgd2lkdGg6IGF1dG87Ci0gICAgbWFyZ2luOiAwIDAgMCAzMDBweDsKLSAg
ICB9Ci0gICAgLyoqYm9keSovLmxlYXJuLWJhciA+IC5sZWFybiB7Ci0gICAgbGVmdDogOHB4Owot
ICAgIH0KLSAgICAvKipib2R5Ki8ubGVhcm4tYmFyICN0b2RvYXBwIHsKLSAgICB3aWR0aDogNTUw
cHg7Ci0gICAgbWFyZ2luOiAxMzBweCBhdXRvIDQwcHggYXV0bzsKLSAgICB9Ci19CmRpZmYgLS1n
aXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ib3dlcl9jb21wb25lbnRzL3RvZG9tdmMtY29tbW9u
L2Jhc2UuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ib3dlcl9jb21wb25lbnRzL3RvZG9tdmMt
Y29tbW9uL2Jhc2UuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5YmY0MjQwZmFk
OWE5YzExOTRjODE1ODZkYzI5MTZiZWMxY2NhNzguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvYm93ZXJfY29tcG9uZW50
cy90b2RvbXZjLWNvbW1vbi9iYXNlLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMjA5ICswLDAgQEAK
LShmdW5jdGlvbiAoKSB7Ci0gICAgJ3VzZSBzdHJpY3QnOwotCi0gICAgLy8gVW5kZXJzY29yZSdz
IFRlbXBsYXRlIE1vZHVsZQotICAgIC8vIENvdXJ0ZXN5IG9mIHVuZGVyc2NvcmVqcy5vcmcKLSAg
ICB2YXIgXyA9IChmdW5jdGlvbiAoXykgewotICAgIF8uZGVmYXVsdHMgPSBmdW5jdGlvbiAob2Jq
ZWN0KSB7Ci0gICAgaWYgKCFvYmplY3QpIHsKLSAgICByZXR1cm4gb2JqZWN0OwotICAgIH0KLSAg
ICBmb3IgKHZhciBhcmdzSW5kZXggPSAxLCBhcmdzTGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDsg
YXJnc0luZGV4IDwgYXJnc0xlbmd0aDsgYXJnc0luZGV4KyspIHsKLSAgICB2YXIgaXRlcmFibGUg
PSBhcmd1bWVudHNbYXJnc0luZGV4XTsKLSAgICBpZiAoaXRlcmFibGUpIHsKLSAgICBmb3IgKHZh
ciBrZXkgaW4gaXRlcmFibGUpIHsKLSAgICBpZiAob2JqZWN0W2tleV0gPT0gbnVsbCkgewotICAg
IG9iamVjdFtrZXldID0gaXRlcmFibGVba2V5XTsKLSAgICB9Ci0gICAgfQotICAgIH0KLSAgICB9
Ci0gICAgcmV0dXJuIG9iamVjdDsKLSAgICB9Ci0KLSAgICAvLyBCeSBkZWZhdWx0LCBVbmRlcnNj
b3JlIHVzZXMgRVJCLXN0eWxlIHRlbXBsYXRlIGRlbGltaXRlcnMsIGNoYW5nZSB0aGUKLSAgICAv
LyBmb2xsb3dpbmcgdGVtcGxhdGUgc2V0dGluZ3MgdG8gdXNlIGFsdGVybmF0aXZlIGRlbGltaXRl
cnMuCi0gICAgXy50ZW1wbGF0ZVNldHRpbmdzID0gewotICAgIGV2YWx1YXRlICAgIDogLzwlKFtc
c1xTXSs/KSU+L2csCi0gICAgaW50ZXJwb2xhdGUgOiAvPCU9KFtcc1xTXSs/KSU+L2csCi0gICAg
ZXNjYXBlICAgICAgOiAvPCUtKFtcc1xTXSs/KSU+L2cKLSAgICB9OwotCi0gICAgLy8gV2hlbiBj
dXN0b21pemluZyBgdGVtcGxhdGVTZXR0aW5nc2AsIGlmIHlvdSBkb24ndCB3YW50IHRvIGRlZmlu
ZSBhbgotICAgIC8vIGludGVycG9sYXRpb24sIGV2YWx1YXRpb24gb3IgZXNjYXBpbmcgcmVnZXgs
IHdlIG5lZWQgb25lIHRoYXQgaXMKLSAgICAvLyBndWFyYW50ZWVkIG5vdCB0byBtYXRjaC4KLSAg
ICB2YXIgbm9NYXRjaCA9IC8oLileLzsKLQotICAgIC8vIENlcnRhaW4gY2hhcmFjdGVycyBuZWVk
IHRvIGJlIGVzY2FwZWQgc28gdGhhdCB0aGV5IGNhbiBiZSBwdXQgaW50byBhCi0gICAgLy8gc3Ry
aW5nIGxpdGVyYWwuCi0gICAgdmFyIGVzY2FwZXMgPSB7Ci0gICAgIiciOiAgICAgICInIiwKLSAg
ICAnXFwnOiAgICAgJ1xcJywKLSAgICAnXHInOiAgICAgJ3InLAotICAgICdcbic6ICAgICAnbics
Ci0gICAgJ1x0JzogICAgICd0JywKLSAgICAnXHUyMDI4JzogJ3UyMDI4JywKLSAgICAnXHUyMDI5
JzogJ3UyMDI5JwotICAgIH07Ci0KLSAgICB2YXIgZXNjYXBlciA9IC9cXHwnfFxyfFxufFx0fFx1
MjAyOHxcdTIwMjkvZzsKLQotICAgIC8vIEphdmFTY3JpcHQgbWljcm8tdGVtcGxhdGluZywgc2lt
aWxhciB0byBKb2huIFJlc2lnJ3MgaW1wbGVtZW50YXRpb24uCi0gICAgLy8gVW5kZXJzY29yZSB0
ZW1wbGF0aW5nIGhhbmRsZXMgYXJiaXRyYXJ5IGRlbGltaXRlcnMsIHByZXNlcnZlcyB3aGl0ZXNw
YWNlLAotICAgIC8vIGFuZCBjb3JyZWN0bHkgZXNjYXBlcyBxdW90ZXMgd2l0aGluIGludGVycG9s
YXRlZCBjb2RlLgotICAgIF8udGVtcGxhdGUgPSBmdW5jdGlvbih0ZXh0LCBkYXRhLCBzZXR0aW5n
cykgewotICAgIHZhciByZW5kZXI7Ci0gICAgc2V0dGluZ3MgPSBfLmRlZmF1bHRzKHt9LCBzZXR0
aW5ncywgXy50ZW1wbGF0ZVNldHRpbmdzKTsKLQotICAgIC8vIENvbWJpbmUgZGVsaW1pdGVycyBp
bnRvIG9uZSByZWd1bGFyIGV4cHJlc3Npb24gdmlhIGFsdGVybmF0aW9uLgotICAgIHZhciBtYXRj
aGVyID0gbmV3IFJlZ0V4cChbCi0gICAgKHNldHRpbmdzLmVzY2FwZSB8fCBub01hdGNoKS5zb3Vy
Y2UsCi0gICAgKHNldHRpbmdzLmludGVycG9sYXRlIHx8IG5vTWF0Y2gpLnNvdXJjZSwKLSAgICAo
c2V0dGluZ3MuZXZhbHVhdGUgfHwgbm9NYXRjaCkuc291cmNlCi0gICAgXS5qb2luKCd8JykgKyAn
fCQnLCAnZycpOwotCi0gICAgLy8gQ29tcGlsZSB0aGUgdGVtcGxhdGUgc291cmNlLCBlc2NhcGlu
ZyBzdHJpbmcgbGl0ZXJhbHMgYXBwcm9wcmlhdGVseS4KLSAgICB2YXIgaW5kZXggPSAwOwotICAg
IHZhciBzb3VyY2UgPSAiX19wKz0nIjsKLSAgICB0ZXh0LnJlcGxhY2UobWF0Y2hlciwgZnVuY3Rp
b24obWF0Y2gsIGVzY2FwZSwgaW50ZXJwb2xhdGUsIGV2YWx1YXRlLCBvZmZzZXQpIHsKLSAgICBz
b3VyY2UgKz0gdGV4dC5zbGljZShpbmRleCwgb2Zmc2V0KQotICAgIC5yZXBsYWNlKGVzY2FwZXIs
IGZ1bmN0aW9uKG1hdGNoKSB7IHJldHVybiAnXFwnICsgZXNjYXBlc1ttYXRjaF07IH0pOwotCi0g
ICAgaWYgKGVzY2FwZSkgewotICAgIHNvdXJjZSArPSAiJytcbigoX190PSgiICsgZXNjYXBlICsg
IikpPT1udWxsPycnOl8uZXNjYXBlKF9fdCkpK1xuJyI7Ci0gICAgfQotICAgIGlmIChpbnRlcnBv
bGF0ZSkgewotICAgIHNvdXJjZSArPSAiJytcbigoX190PSgiICsgaW50ZXJwb2xhdGUgKyAiKSk9
PW51bGw/Jyc6X190KStcbiciOwotICAgIH0KLSAgICBpZiAoZXZhbHVhdGUpIHsKLSAgICBzb3Vy
Y2UgKz0gIic7XG4iICsgZXZhbHVhdGUgKyAiXG5fX3ArPSciOwotICAgIH0KLSAgICBpbmRleCA9
IG9mZnNldCArIG1hdGNoLmxlbmd0aDsKLSAgICByZXR1cm4gbWF0Y2g7Ci0gICAgfSk7Ci0gICAg
c291cmNlICs9ICInO1xuIjsKLQotICAgIC8vIElmIGEgdmFyaWFibGUgaXMgbm90IHNwZWNpZmll
ZCwgcGxhY2UgZGF0YSB2YWx1ZXMgaW4gbG9jYWwgc2NvcGUuCi0gICAgaWYgKCFzZXR0aW5ncy52
YXJpYWJsZSkgc291cmNlID0gJ3dpdGgob2JqfHx7fSl7XG4nICsgc291cmNlICsgJ31cbic7Ci0K
LSAgICBzb3VyY2UgPSAidmFyIF9fdCxfX3A9JycsX19qPUFycmF5LnByb3RvdHlwZS5qb2luLCIg
KwotICAgICJwcmludD1mdW5jdGlvbigpe19fcCs9X19qLmNhbGwoYXJndW1lbnRzLCcnKTt9O1xu
IiArCi0gICAgc291cmNlICsgInJldHVybiBfX3A7XG4iOwotCi0gICAgdHJ5IHsKLSAgICByZW5k
ZXIgPSBuZXcgRnVuY3Rpb24oc2V0dGluZ3MudmFyaWFibGUgfHwgJ29iaicsICdfJywgc291cmNl
KTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAgZS5zb3VyY2UgPSBzb3VyY2U7Ci0gICAgdGhyb3cg
ZTsKLSAgICB9Ci0KLSAgICBpZiAoZGF0YSkgcmV0dXJuIHJlbmRlcihkYXRhLCBfKTsKLSAgICB2
YXIgdGVtcGxhdGUgPSBmdW5jdGlvbihkYXRhKSB7Ci0gICAgcmV0dXJuIHJlbmRlci5jYWxsKHRo
aXMsIGRhdGEsIF8pOwotICAgIH07Ci0KLSAgICAvLyBQcm92aWRlIHRoZSBjb21waWxlZCBmdW5j
dGlvbiBzb3VyY2UgYXMgYSBjb252ZW5pZW5jZSBmb3IgcHJlY29tcGlsYXRpb24uCi0gICAgdGVt
cGxhdGUuc291cmNlID0gJ2Z1bmN0aW9uKCcgKyAoc2V0dGluZ3MudmFyaWFibGUgfHwgJ29iaicp
ICsgJyl7XG4nICsgc291cmNlICsgJ30nOwotCi0gICAgcmV0dXJuIHRlbXBsYXRlOwotICAgIH07
Ci0KLSAgICByZXR1cm4gXzsKLSAgICB9KSh7fSk7Ci0KLSAgICBpZiAobG9jYXRpb24uaG9zdG5h
bWUgPT09ICd0b2RvbXZjLmNvbScpIHsKLSAgICB3aW5kb3cuX2dhcSA9IFtbJ19zZXRBY2NvdW50
JywnVUEtMzEwODEwNjItMSddLFsnX3RyYWNrUGFnZXZpZXcnXV07KGZ1bmN0aW9uKGQsdCl7dmFy
IGc9ZC5jcmVhdGVFbGVtZW50KHQpLHM9ZC5nZXRFbGVtZW50c0J5VGFnTmFtZSh0KVswXTtnLnNy
Yz0nLy93d3cuZ29vZ2xlLWFuYWx5dGljcy5jb20vZ2EuanMnO3MucGFyZW50Tm9kZS5pbnNlcnRC
ZWZvcmUoZyxzKX0oZG9jdW1lbnQsJ3NjcmlwdCcpKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBy
ZWRpcmVjdCgpIHsKLSAgICBpZiAobG9jYXRpb24uaG9zdG5hbWUgPT09ICd0YXN0ZWpzLmdpdGh1
Yi5pbycpIHsKLSAgICBsb2NhdGlvbi5ocmVmID0gbG9jYXRpb24uaHJlZi5yZXBsYWNlKCd0YXN0
ZWpzLmdpdGh1Yi5pby90b2RvbXZjJywgJ3RvZG9tdmMuY29tJyk7Ci0gICAgfQotICAgIH0KLQot
ICAgIGZ1bmN0aW9uIGZpbmRSb290KCkgewotICAgIHZhciBiYXNlOwotCi0gICAgWy9sYWJzLywg
L1x3Ki1leGFtcGxlcy9dLmZvckVhY2goZnVuY3Rpb24gKGhyZWYpIHsKLSAgICB2YXIgbWF0Y2gg
PSBsb2NhdGlvbi5ocmVmLm1hdGNoKGhyZWYpOwotCi0gICAgaWYgKCFiYXNlICYmIG1hdGNoKSB7
Ci0gICAgYmFzZSA9IGxvY2F0aW9uLmhyZWYuaW5kZXhPZihtYXRjaCk7Ci0gICAgfQotICAgIH0p
OwotCi0gICAgcmV0dXJuIGxvY2F0aW9uLmhyZWYuc3Vic3RyKDAsIGJhc2UpOwotICAgIH0KLQot
ICAgIGZ1bmN0aW9uIGdldEZpbGUoZmlsZSwgY2FsbGJhY2spIHsKLSAgICBpZiAoIWxvY2F0aW9u
Lmhvc3QpIHsKLSAgICByZXR1cm4gY29uc29sZS5pbmZvKCdNaXNzIHRoZSBpbmZvIGJhcj8gUnVu
IFRvZG9NVkMgZnJvbSBhIHNlcnZlciB0byBhdm9pZCBhIGNyb3NzLW9yaWdpbiBlcnJvci4nKTsK
LSAgICB9Ci0KLSAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7Ci0KLSAgICB4aHIu
b3BlbignR0VUJywgZmluZFJvb3QoKSArIGZpbGUsIHRydWUpOwotICAgIHhoci5zZW5kKCk7Ci0K
LSAgICB4aHIub25sb2FkID0gZnVuY3Rpb24gKCkgewotICAgIGlmICh4aHIuc3RhdHVzID09PSAy
MDAgJiYgY2FsbGJhY2spIHsKLSAgICBjYWxsYmFjayh4aHIucmVzcG9uc2VUZXh0KTsKLSAgICB9
Ci0gICAgfTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBMZWFybihsZWFybkpTT04sIGNvbmZpZykg
ewotICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBMZWFybikpIHsKLSAgICByZXR1cm4gbmV3IExl
YXJuKGxlYXJuSlNPTiwgY29uZmlnKTsKLSAgICB9Ci0KLSAgICB2YXIgdGVtcGxhdGUsIGZyYW1l
d29yazsKLQotICAgIGlmICh0eXBlb2YgbGVhcm5KU09OICE9PSAnb2JqZWN0JykgewotICAgIHRy
eSB7Ci0gICAgbGVhcm5KU09OID0gSlNPTi5wYXJzZShsZWFybkpTT04pOwotICAgIH0gY2F0Y2gg
KGUpIHsKLSAgICByZXR1cm47Ci0gICAgfQotICAgIH0KLQotICAgIGlmIChjb25maWcpIHsKLSAg
ICB0ZW1wbGF0ZSA9IGNvbmZpZy50ZW1wbGF0ZTsKLSAgICBmcmFtZXdvcmsgPSBjb25maWcuZnJh
bWV3b3JrOwotICAgIH0KLQotICAgIGlmICghdGVtcGxhdGUgJiYgbGVhcm5KU09OLnRlbXBsYXRl
cykgewotICAgIHRlbXBsYXRlID0gbGVhcm5KU09OLnRlbXBsYXRlcy50b2RvbXZjOwotICAgIH0K
LQotICAgIGlmICghZnJhbWV3b3JrICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLWZy
YW1ld29ya10nKSkgewotICAgIGZyYW1ld29yayA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tk
YXRhLWZyYW1ld29ya10nKS5nZXRBdHRyaWJ1dGUoJ2RhdGEtZnJhbWV3b3JrJyk7Ci0gICAgfQot
Ci0KLSAgICBpZiAodGVtcGxhdGUgJiYgbGVhcm5KU09OW2ZyYW1ld29ya10pIHsKLSAgICB0aGlz
LmZyYW1ld29ya0pTT04gPSBsZWFybkpTT05bZnJhbWV3b3JrXTsKLSAgICB0aGlzLnRlbXBsYXRl
ID0gdGVtcGxhdGU7Ci0KLSAgICB0aGlzLmFwcGVuZCgpOwotICAgIH0KLSAgICB9Ci0KLSAgICBM
ZWFybi5wcm90b3R5cGUuYXBwZW5kID0gZnVuY3Rpb24gKCkgewotICAgIHZhciBhc2lkZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2FzaWRlJyk7Ci0gICAgYXNpZGUuaW5uZXJIVE1MID0gXy50
ZW1wbGF0ZSh0aGlzLnRlbXBsYXRlLCB0aGlzLmZyYW1ld29ya0pTT04pOwotICAgIGFzaWRlLmNs
YXNzTmFtZSA9ICdsZWFybic7Ci0KLSAgICAvLyBMb2NhbGl6ZSBkZW1vIGxpbmtzCi0gICAgdmFy
IGRlbW9MaW5rcyA9IGFzaWRlLnF1ZXJ5U2VsZWN0b3JBbGwoJy5kZW1vLWxpbmsnKTsKLSAgICBB
cnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGRlbW9MaW5rcywgZnVuY3Rpb24gKGRlbW9MaW5r
KSB7Ci0gICAgZGVtb0xpbmsuc2V0QXR0cmlidXRlKCdocmVmJywgZmluZFJvb3QoKSArIGRlbW9M
aW5rLmdldEF0dHJpYnV0ZSgnaHJlZicpKTsKLSAgICB9KTsKLQotICAgIGRvY3VtZW50LmJvZHku
Y2xhc3NOYW1lID0gKGRvY3VtZW50LmJvZHkuY2xhc3NOYW1lICsgJyBsZWFybi1iYXInKS50cmlt
KCk7Ci0gICAgZG9jdW1lbnQuYm9keS5pbnNlcnRBZGphY2VudEhUTUwoJ2FmdGVyQmVnaW4nLCBh
c2lkZS5vdXRlckhUTUwpOwotICAgIH07Ci0KLSAgICByZWRpcmVjdCgpOwotICAgIGdldEZpbGUo
J2xlYXJuLmpzb24nLCBMZWFybik7Ci19KSgpOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFj
a2JvbmUvYm93ZXJfY29tcG9uZW50cy90b2RvbXZjLWNvbW1vbi9iZy5wbmcgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9iYWNrYm9uZS9ib3dlcl9jb21wb25lbnRzL3RvZG9tdmMtY29tbW9uL2JnLnBuZwpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjJhNzYwMDgyNWVlMTFmMjE4NDllZDQ3NTQ5OWM3ZDFl
Y2JjYzg3MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMApHSVQgYmlu
YXJ5IHBhdGNoCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKbGl0ZXJhbCAyMTI2CnpjbVYtVTIoa0J4
UCk8aDszS3xMazAwMGUxTkpMVHEwMDNrRjAwM2tIMHt7UjM0VUIhcTAwMDBDUCl0LXM/KFhqRQp6
Pis5eWA9SEs3bnQ9fjN0MDAwTzVOa2w8WmN3VGp1KFE0dn43S1dFVyNZbT9sS192O1RtfCFGYylA
TndFbm10c2gKenghT356ODFKVDNwRnNtPm09MDRoVmFfbFhsX2JtPStNOz1lSTwlJHJPMnRhYHN1
aCpTciNQT3cqP2FkcSFPIUNWCnoqMCZiKXJrQ0NFVikxbkl1aUxCbnRVSC1NSkk7JnFZZ3p8ZEBO
aG5uX2FiaTJnYHB1NE5BTVZpZDNoUyU/cXV6fgp6amxKZih4OGNqPFBHY2puKkorYXsmSDVwKm41
JDVlMz88S0NjP28wNm1Bc05TYmdQV08/UHojQ3puPCE9ez57VlMKelVWRVAxbXNnOWBeT0ZVaFNP
NXJ0WEhoUmx5VTJpPjYkQlQ9Z2xHYHtKbGN0R0hyd1JJbSk2QnV1NjVqTFFuXkg4Cnp2bDlsWnFV
QkErJXF2TTVYQyt5WUBtZkEoWUJ+WFA9ZXw2PHslJF5lVThucks/djJjY2JASm9tNUNHPnJLQUw3
Sgp6cGxIRUlhdlZwfDBwMSZtIUdgVGk/PDdpWjt9QEc3I1opfUttJTIhRkhuUTAqJj9QTFIpRyFI
QWFIZ1UjY3wkZHoKenBqIzBIbWVhZEllPmAjKT1Kamtie0I9RktuVTNwYy0mWUBqX2o2KGg0WX4r
VXE8UFUzNkM7NWI9TV5GYD1wMWRJCnprPENRT1BOYTc+IV5KPUxIdW54MXhpNFFYSy1ZeyZNb1Q4
a3k2VmI5Y3xXaG5Pd0Z+Yz0zek95OGFna3RsaVM2Iwp6YCM4RmA5SClEPWJtazlCNU1uVyZfciMp
ZiRjKzskTFNyLUBeQW44ZGhjfklxdXV2PmpPSzdwdzdMSjsmWDBpMUMKekdNc0hkUDFPc0BueSQk
aiE+WEFpaSU3YnA1az5gcHlOQSF+ZXBiKSgpcDl6UjRZbDZ6PVV9e0NJZGgxeihGcEFvCnpRSVch
OzB6cEN5QzQqN1lMa1pDT0BjdWwwUl8memdoc0E4RWspeiU8IXAtYnZzc3BsWVkyfVA7IXY0Q1lq
OWttRgp6YjBiTl9tNFYqZl5ZWk1vYjIoajNwS2p+N3YjWnRrcz1Jbyt7c3UlV2l1a2RKSCRiP2Za
a2lBPVBZXzNPaERCa28KeihMVFFIWSZGXl4yaEctWWAqWjkzdmJ+Yz8qKEpjaERqVGZDcz96Um0q
YCpOKlYtJD0/UXF0aG5Tcio/T1Mzc2pLCnpvPF9VXmZ7fmFnNjB1bD5qTnBLYTkye0BOSCtTc3RY
JUB9eEIqSmshbH1QWjFjQ2xJbnN+fTVeIVJuY1VrKnJtQQp6JVNJVmd0NThFUXhMSitPaUZxPHl1
NGVPRHw5THQzZE5zZWZ4T3VxKUQmJF8lajBEZ3FDeTFnemN8dFREMyptZWUKens9JXw8YGB9X0h5
cGhPdXs7KXhrUmcrUW5IQ0MzVGYra3NwcVY2KnxRSy1SY3FEfTQ+S2tCdXdxdXlaTFVwfGdyCnpQ
VWJVYkZiQnJQZDF4T2BeQypyLWkzcDkqRiMoT0JoITRXeUBhQyYqIXxPfEdYY2pEQSZZaEZ7O2NE
NypvKEdTXgp6QHBRU0U3KXhfODE9UXlqZTYqTFEjVFh1LTcobztTOHUzdHBEQTxTZ2NLY0tPcG1B
Oz1IQlpTQE9GVEBfWE92eHEKeipOfDNLTHl0Z3pINkdVJiZVb2M0WnprNGx1bTNQezk/ZnBJNCtR
R1BKK3Y2YDFsZlJxM0xjUyooTSpXSyt8YiVPCnplJHo+MF9kZGolaG1Dc3BlWGRoWVJ9LWk5QT1D
YEVvQ2hVWXVIfl54ITkrfCYoUGdiKj5Dazw9OWp8KSpAeHlmVAp6cFAjK0t0PH0zOWJ8M1dsNGZ4
VCgrRz9hSD5nR15kQE1FYVVPSlJmeTU1VHRGSTdeWSlWdU1VPTdQcDB5NTVqU34KeitUSilpZ015
cnFrWDt3VThqNjhpSUR0cUpZaFNfRDNfT2VtLUBnNm1lX1JmaVF9dVRfSy1BLTlxRyV9Z2szRTlj
CnohOGBLZ3NNTlhtKWJlbG9QZk1xbCp8JiRNPjFxYGkhY1kpUkZZbmpOWXUqZ1N2QDhYZWJWNyV9
eFlMPjYpR0pQSgp6SnBBN0szMWxjSnVJRktTdy17eDRGWDBLMkF6KX5YZzxgc091JDR8XjxNQzdA
K3hid3hzR2dUdkpJQUxqUHs2OEwKejhBWXVTR1MwR1VnazZXYHY0VztSeSp1b0VUbnVsUGl8NTcz
JWx2Klp4dyN2NnlVUV5NT2ZjcFQjVjhSSURWIyNOCnpEMWArQWVtc09oKXdiV0RFeFZjZnBLeilq
eVY9PH4mWlhQZzZjfFpERTdVNGJrPERePi0oXlhKWDRZem9pTlJ2TAp6eXVZN34yNnctUF5adyU2
Rn1zaEJ3VjIkMDJjOFJzU1V5NmRNOTJkaUNBeGlYM0lVcXNxNWlnNj5VXyFWeSpxNSQKemptfTE2
dEpyK1FaJlQ/SGtrcGVJd1ZYLXIxRUk9QCVabHQ7Njx0d0g4NklEPmcqbWomRSFBKSklZ1hKPXg2
dSNsCnpjS0VQPmJ4NHJxViprYEJCclokTXFqdHtUc0hjeFVIPjspaUFLfUIoS2lsYSZWRCViPzZt
Jl4wV0s0XiZFWk5BSQp6OEFNWXNfJSREJXxNK0ArY1FxTC1oaTR5Rz5oKmp3ZGlpIVcxe31wPlpo
d0ZZdF80U3Uxa2pZOTxiQVpqen45ZWsKel9EaWFyK0FmSkZQXzlAeW1VbyRLVz48LTVgISRWTk9J
MXkoRURTSDRXcENpakVfPmFsIU50PV5lVkVSI3VKMT1iCno7QldGMklneUY1TGV4Vit5ZWMkS2lu
O0FpQG15bztHPnpKJmpyZFcjZWNYaElacGg1T1lxd19QRWZjRjU2PE8xOQp6TCk4ciFLTSgpaWYw
YEA/VzQoSmRjKTdXb1BHXiY9JDx6VXNNK0hDV2FrQ14zdFp4aytQalFHfUI+WjU8WjZWeHcKekJA
SHJWJCZsfkBUYWo3MHBjZXtpU3VSTHNVY3pEWV81VG5EcThQeV9RM3doYEQ4ITRqSzt2RmRSUCtR
MD16SnkqCnp6dVdkJSFhaUBEe3wqSjxJO09EJmklbHtKcC04KlB1M1ZHTFdpeWs2diNYbVFxd2At
KyVlJHxDSncqQGA1emIzPAp6RX16IztrUmhMJnE1UERHNkBtbSokPlp1X1paRSNxM01jK04mMU9e
N2hvaDlRUjdgK0wkY0JQNXBxRz1mcUEwdWgKelVCdWtheFRGbUgpPHxYYnZwMmM9SFNiTmtwWHc3
M2E1bHY3ViRqYjkyI3laMTQxQCRYP0Z9SnQ4Z0lVN1dtNm05Cno/ZV87O3pzbm02YExaZVA+VD0k
KUtyPlo/a3IqVW1GcVI3engwQzZeYm1jc2NAMUFHdHdfck5IPi1YbSRkKnxRPAp6biYxTG4wdTc9
bCZJTHM+JUNrSnBgRGlHOUYxOHg0TmUrbGc8I2k/ZTdqTCV4OzRablJrTl5NeDA3KnFvTTZOPCQK
RWYoPjBOITJrZE4KCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ib3dlcl9jb21w
b25lbnRzL3VuZGVyc2NvcmUvdW5kZXJzY29yZS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL2Jv
d2VyX2NvbXBvbmVudHMvdW5kZXJzY29yZS91bmRlcnNjb3JlLmpzCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBhMTJmMGQ5NmNmYjQ4YTAyZDUxODQyN2IyNmMzMzNiYWM2MjI4MTBhLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2JhY2tib25lL2Jvd2VyX2NvbXBvbmVudHMvdW5kZXJzY29yZS91bmRlcnNjb3JlLmpzCisrKyAv
ZGV2L251bGwKQEAgLTEsMTIyNiArMCwwIEBACi0vLyAgICAgVW5kZXJzY29yZS5qcyAxLjQuNAot
Ly8gICAgIGh0dHA6Ly91bmRlcnNjb3JlanMub3JnCi0vLyAgICAgKGMpIDIwMDktMjAxMyBKZXJl
bXkgQXNoa2VuYXMsIERvY3VtZW50Q2xvdWQgSW5jLgotLy8gICAgIFVuZGVyc2NvcmUgbWF5IGJl
IGZyZWVseSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuCi0KLShmdW5jdGlvbigp
IHsKLQotICAvLyBCYXNlbGluZSBzZXR1cAotICAvLyAtLS0tLS0tLS0tLS0tLQotCi0gIC8vIEVz
dGFibGlzaCB0aGUgcm9vdCBvYmplY3QsIGB3aW5kb3dgIGluIHRoZSBicm93c2VyLCBvciBgZ2xv
YmFsYCBvbiB0aGUgc2VydmVyLgotICB2YXIgcm9vdCA9IHRoaXM7Ci0KLSAgLy8gU2F2ZSB0aGUg
cHJldmlvdXMgdmFsdWUgb2YgdGhlIGBfYCB2YXJpYWJsZS4KLSAgdmFyIHByZXZpb3VzVW5kZXJz
Y29yZSA9IHJvb3QuXzsKLQotICAvLyBFc3RhYmxpc2ggdGhlIG9iamVjdCB0aGF0IGdldHMgcmV0
dXJuZWQgdG8gYnJlYWsgb3V0IG9mIGEgbG9vcCBpdGVyYXRpb24uCi0gIHZhciBicmVha2VyID0g
e307Ci0KLSAgLy8gU2F2ZSBieXRlcyBpbiB0aGUgbWluaWZpZWQgKGJ1dCBub3QgZ3ppcHBlZCkg
dmVyc2lvbjoKLSAgdmFyIEFycmF5UHJvdG8gPSBBcnJheS5wcm90b3R5cGUsIE9ialByb3RvID0g
T2JqZWN0LnByb3RvdHlwZSwgRnVuY1Byb3RvID0gRnVuY3Rpb24ucHJvdG90eXBlOwotCi0gIC8v
IENyZWF0ZSBxdWljayByZWZlcmVuY2UgdmFyaWFibGVzIGZvciBzcGVlZCBhY2Nlc3MgdG8gY29y
ZSBwcm90b3R5cGVzLgotICB2YXIgcHVzaCAgICAgICAgICAgICA9IEFycmF5UHJvdG8ucHVzaCwK
LSAgICAgIHNsaWNlICAgICAgICAgICAgPSBBcnJheVByb3RvLnNsaWNlLAotICAgICAgY29uY2F0
ICAgICAgICAgICA9IEFycmF5UHJvdG8uY29uY2F0LAotICAgICAgdG9TdHJpbmcgICAgICAgICA9
IE9ialByb3RvLnRvU3RyaW5nLAotICAgICAgaGFzT3duUHJvcGVydHkgICA9IE9ialByb3RvLmhh
c093blByb3BlcnR5OwotCi0gIC8vIEFsbCAqKkVDTUFTY3JpcHQgNSoqIG5hdGl2ZSBmdW5jdGlv
biBpbXBsZW1lbnRhdGlvbnMgdGhhdCB3ZSBob3BlIHRvIHVzZQotICAvLyBhcmUgZGVjbGFyZWQg
aGVyZS4KLSAgdmFyCi0gICAgbmF0aXZlRm9yRWFjaCAgICAgID0gQXJyYXlQcm90by5mb3JFYWNo
LAotICAgIG5hdGl2ZU1hcCAgICAgICAgICA9IEFycmF5UHJvdG8ubWFwLAotICAgIG5hdGl2ZVJl
ZHVjZSAgICAgICA9IEFycmF5UHJvdG8ucmVkdWNlLAotICAgIG5hdGl2ZVJlZHVjZVJpZ2h0ICA9
IEFycmF5UHJvdG8ucmVkdWNlUmlnaHQsCi0gICAgbmF0aXZlRmlsdGVyICAgICAgID0gQXJyYXlQ
cm90by5maWx0ZXIsCi0gICAgbmF0aXZlRXZlcnkgICAgICAgID0gQXJyYXlQcm90by5ldmVyeSwK
LSAgICBuYXRpdmVTb21lICAgICAgICAgPSBBcnJheVByb3RvLnNvbWUsCi0gICAgbmF0aXZlSW5k
ZXhPZiAgICAgID0gQXJyYXlQcm90by5pbmRleE9mLAotICAgIG5hdGl2ZUxhc3RJbmRleE9mICA9
IEFycmF5UHJvdG8ubGFzdEluZGV4T2YsCi0gICAgbmF0aXZlSXNBcnJheSAgICAgID0gQXJyYXku
aXNBcnJheSwKLSAgICBuYXRpdmVLZXlzICAgICAgICAgPSBPYmplY3Qua2V5cywKLSAgICBuYXRp
dmVCaW5kICAgICAgICAgPSBGdW5jUHJvdG8uYmluZDsKLQotICAvLyBDcmVhdGUgYSBzYWZlIHJl
ZmVyZW5jZSB0byB0aGUgVW5kZXJzY29yZSBvYmplY3QgZm9yIHVzZSBiZWxvdy4KLSAgdmFyIF8g
PSBmdW5jdGlvbihvYmopIHsKLSAgICBpZiAob2JqIGluc3RhbmNlb2YgXykgcmV0dXJuIG9iajsK
LSAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgXykpIHJldHVybiBuZXcgXyhvYmopOwotICAgIHRo
aXMuX3dyYXBwZWQgPSBvYmo7Ci0gIH07Ci0KLSAgLy8gRXhwb3J0IHRoZSBVbmRlcnNjb3JlIG9i
amVjdCBmb3IgKipOb2RlLmpzKiosIHdpdGgKLSAgLy8gYmFja3dhcmRzLWNvbXBhdGliaWxpdHkg
Zm9yIHRoZSBvbGQgYHJlcXVpcmUoKWAgQVBJLiBJZiB3ZSdyZSBpbgotICAvLyB0aGUgYnJvd3Nl
ciwgYWRkIGBfYCBhcyBhIGdsb2JhbCBvYmplY3QgdmlhIGEgc3RyaW5nIGlkZW50aWZpZXIsCi0g
IC8vIGZvciBDbG9zdXJlIENvbXBpbGVyICJhZHZhbmNlZCIgbW9kZS4KLSAgaWYgKHR5cGVvZiBl
eHBvcnRzICE9PSAndW5kZWZpbmVkJykgewotICAgIGlmICh0eXBlb2YgbW9kdWxlICE9PSAndW5k
ZWZpbmVkJyAmJiBtb2R1bGUuZXhwb3J0cykgewotICAgICAgZXhwb3J0cyA9IG1vZHVsZS5leHBv
cnRzID0gXzsKLSAgICB9Ci0gICAgZXhwb3J0cy5fID0gXzsKLSAgfSBlbHNlIHsKLSAgICByb290
Ll8gPSBfOwotICB9Ci0KLSAgLy8gQ3VycmVudCB2ZXJzaW9uLgotICBfLlZFUlNJT04gPSAnMS40
LjQnOwotCi0gIC8vIENvbGxlY3Rpb24gRnVuY3Rpb25zCi0gIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tCi0KLSAgLy8gVGhlIGNvcm5lcnN0b25lLCBhbiBgZWFjaGAgaW1wbGVtZW50YXRpb24sIGFr
YSBgZm9yRWFjaGAuCi0gIC8vIEhhbmRsZXMgb2JqZWN0cyB3aXRoIHRoZSBidWlsdC1pbiBgZm9y
RWFjaGAsIGFycmF5cywgYW5kIHJhdyBvYmplY3RzLgotICAvLyBEZWxlZ2F0ZXMgdG8gKipFQ01B
U2NyaXB0IDUqKidzIG5hdGl2ZSBgZm9yRWFjaGAgaWYgYXZhaWxhYmxlLgotICB2YXIgZWFjaCA9
IF8uZWFjaCA9IF8uZm9yRWFjaCA9IGZ1bmN0aW9uKG9iaiwgaXRlcmF0b3IsIGNvbnRleHQpIHsK
LSAgICBpZiAob2JqID09IG51bGwpIHJldHVybjsKLSAgICBpZiAobmF0aXZlRm9yRWFjaCAmJiBv
YmouZm9yRWFjaCA9PT0gbmF0aXZlRm9yRWFjaCkgewotICAgICAgb2JqLmZvckVhY2goaXRlcmF0
b3IsIGNvbnRleHQpOwotICAgIH0gZWxzZSBpZiAob2JqLmxlbmd0aCA9PT0gK29iai5sZW5ndGgp
IHsKLSAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gb2JqLmxlbmd0aDsgaSA8IGw7IGkrKykgewot
ICAgICAgICBpZiAoaXRlcmF0b3IuY2FsbChjb250ZXh0LCBvYmpbaV0sIGksIG9iaikgPT09IGJy
ZWFrZXIpIHJldHVybjsKLSAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgZm9yICh2YXIga2V5
IGluIG9iaikgewotICAgICAgICBpZiAoXy5oYXMob2JqLCBrZXkpKSB7Ci0gICAgICAgICAgaWYg
KGl0ZXJhdG9yLmNhbGwoY29udGV4dCwgb2JqW2tleV0sIGtleSwgb2JqKSA9PT0gYnJlYWtlcikg
cmV0dXJuOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICB9OwotCi0gIC8vIFJldHVybiB0
aGUgcmVzdWx0cyBvZiBhcHBseWluZyB0aGUgaXRlcmF0b3IgdG8gZWFjaCBlbGVtZW50LgotICAv
LyBEZWxlZ2F0ZXMgdG8gKipFQ01BU2NyaXB0IDUqKidzIG5hdGl2ZSBgbWFwYCBpZiBhdmFpbGFi
bGUuCi0gIF8ubWFwID0gXy5jb2xsZWN0ID0gZnVuY3Rpb24ob2JqLCBpdGVyYXRvciwgY29udGV4
dCkgewotICAgIHZhciByZXN1bHRzID0gW107Ci0gICAgaWYgKG9iaiA9PSBudWxsKSByZXR1cm4g
cmVzdWx0czsKLSAgICBpZiAobmF0aXZlTWFwICYmIG9iai5tYXAgPT09IG5hdGl2ZU1hcCkgcmV0
dXJuIG9iai5tYXAoaXRlcmF0b3IsIGNvbnRleHQpOwotICAgIGVhY2gob2JqLCBmdW5jdGlvbih2
YWx1ZSwgaW5kZXgsIGxpc3QpIHsKLSAgICAgIHJlc3VsdHNbcmVzdWx0cy5sZW5ndGhdID0gaXRl
cmF0b3IuY2FsbChjb250ZXh0LCB2YWx1ZSwgaW5kZXgsIGxpc3QpOwotICAgIH0pOwotICAgIHJl
dHVybiByZXN1bHRzOwotICB9OwotCi0gIHZhciByZWR1Y2VFcnJvciA9ICdSZWR1Y2Ugb2YgZW1w
dHkgYXJyYXkgd2l0aCBubyBpbml0aWFsIHZhbHVlJzsKLQotICAvLyAqKlJlZHVjZSoqIGJ1aWxk
cyB1cCBhIHNpbmdsZSByZXN1bHQgZnJvbSBhIGxpc3Qgb2YgdmFsdWVzLCBha2EgYGluamVjdGAs
Ci0gIC8vIG9yIGBmb2xkbGAuIERlbGVnYXRlcyB0byAqKkVDTUFTY3JpcHQgNSoqJ3MgbmF0aXZl
IGByZWR1Y2VgIGlmIGF2YWlsYWJsZS4KLSAgXy5yZWR1Y2UgPSBfLmZvbGRsID0gXy5pbmplY3Qg
PSBmdW5jdGlvbihvYmosIGl0ZXJhdG9yLCBtZW1vLCBjb250ZXh0KSB7Ci0gICAgdmFyIGluaXRp
YWwgPSBhcmd1bWVudHMubGVuZ3RoID4gMjsKLSAgICBpZiAob2JqID09IG51bGwpIG9iaiA9IFtd
OwotICAgIGlmIChuYXRpdmVSZWR1Y2UgJiYgb2JqLnJlZHVjZSA9PT0gbmF0aXZlUmVkdWNlKSB7
Ci0gICAgICBpZiAoY29udGV4dCkgaXRlcmF0b3IgPSBfLmJpbmQoaXRlcmF0b3IsIGNvbnRleHQp
OwotICAgICAgcmV0dXJuIGluaXRpYWwgPyBvYmoucmVkdWNlKGl0ZXJhdG9yLCBtZW1vKSA6IG9i
ai5yZWR1Y2UoaXRlcmF0b3IpOwotICAgIH0KLSAgICBlYWNoKG9iaiwgZnVuY3Rpb24odmFsdWUs
IGluZGV4LCBsaXN0KSB7Ci0gICAgICBpZiAoIWluaXRpYWwpIHsKLSAgICAgICAgbWVtbyA9IHZh
bHVlOwotICAgICAgICBpbml0aWFsID0gdHJ1ZTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIG1l
bW8gPSBpdGVyYXRvci5jYWxsKGNvbnRleHQsIG1lbW8sIHZhbHVlLCBpbmRleCwgbGlzdCk7Ci0g
ICAgICB9Ci0gICAgfSk7Ci0gICAgaWYgKCFpbml0aWFsKSB0aHJvdyBuZXcgVHlwZUVycm9yKHJl
ZHVjZUVycm9yKTsKLSAgICByZXR1cm4gbWVtbzsKLSAgfTsKLQotICAvLyBUaGUgcmlnaHQtYXNz
b2NpYXRpdmUgdmVyc2lvbiBvZiByZWR1Y2UsIGFsc28ga25vd24gYXMgYGZvbGRyYC4KLSAgLy8g
RGVsZWdhdGVzIHRvICoqRUNNQVNjcmlwdCA1KioncyBuYXRpdmUgYHJlZHVjZVJpZ2h0YCBpZiBh
dmFpbGFibGUuCi0gIF8ucmVkdWNlUmlnaHQgPSBfLmZvbGRyID0gZnVuY3Rpb24ob2JqLCBpdGVy
YXRvciwgbWVtbywgY29udGV4dCkgewotICAgIHZhciBpbml0aWFsID0gYXJndW1lbnRzLmxlbmd0
aCA+IDI7Ci0gICAgaWYgKG9iaiA9PSBudWxsKSBvYmogPSBbXTsKLSAgICBpZiAobmF0aXZlUmVk
dWNlUmlnaHQgJiYgb2JqLnJlZHVjZVJpZ2h0ID09PSBuYXRpdmVSZWR1Y2VSaWdodCkgewotICAg
ICAgaWYgKGNvbnRleHQpIGl0ZXJhdG9yID0gXy5iaW5kKGl0ZXJhdG9yLCBjb250ZXh0KTsKLSAg
ICAgIHJldHVybiBpbml0aWFsID8gb2JqLnJlZHVjZVJpZ2h0KGl0ZXJhdG9yLCBtZW1vKSA6IG9i
ai5yZWR1Y2VSaWdodChpdGVyYXRvcik7Ci0gICAgfQotICAgIHZhciBsZW5ndGggPSBvYmoubGVu
Z3RoOwotICAgIGlmIChsZW5ndGggIT09ICtsZW5ndGgpIHsKLSAgICAgIHZhciBrZXlzID0gXy5r
ZXlzKG9iaik7Ci0gICAgICBsZW5ndGggPSBrZXlzLmxlbmd0aDsKLSAgICB9Ci0gICAgZWFjaChv
YmosIGZ1bmN0aW9uKHZhbHVlLCBpbmRleCwgbGlzdCkgewotICAgICAgaW5kZXggPSBrZXlzID8g
a2V5c1stLWxlbmd0aF0gOiAtLWxlbmd0aDsKLSAgICAgIGlmICghaW5pdGlhbCkgewotICAgICAg
ICBtZW1vID0gb2JqW2luZGV4XTsKLSAgICAgICAgaW5pdGlhbCA9IHRydWU7Ci0gICAgICB9IGVs
c2UgewotICAgICAgICBtZW1vID0gaXRlcmF0b3IuY2FsbChjb250ZXh0LCBtZW1vLCBvYmpbaW5k
ZXhdLCBpbmRleCwgbGlzdCk7Ci0gICAgICB9Ci0gICAgfSk7Ci0gICAgaWYgKCFpbml0aWFsKSB0
aHJvdyBuZXcgVHlwZUVycm9yKHJlZHVjZUVycm9yKTsKLSAgICByZXR1cm4gbWVtbzsKLSAgfTsK
LQotICAvLyBSZXR1cm4gdGhlIGZpcnN0IHZhbHVlIHdoaWNoIHBhc3NlcyBhIHRydXRoIHRlc3Qu
IEFsaWFzZWQgYXMgYGRldGVjdGAuCi0gIF8uZmluZCA9IF8uZGV0ZWN0ID0gZnVuY3Rpb24ob2Jq
LCBpdGVyYXRvciwgY29udGV4dCkgewotICAgIHZhciByZXN1bHQ7Ci0gICAgYW55KG9iaiwgZnVu
Y3Rpb24odmFsdWUsIGluZGV4LCBsaXN0KSB7Ci0gICAgICBpZiAoaXRlcmF0b3IuY2FsbChjb250
ZXh0LCB2YWx1ZSwgaW5kZXgsIGxpc3QpKSB7Ci0gICAgICAgIHJlc3VsdCA9IHZhbHVlOwotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgICB9KTsKLSAgICByZXR1cm4gcmVzdWx0Owot
ICB9OwotCi0gIC8vIFJldHVybiBhbGwgdGhlIGVsZW1lbnRzIHRoYXQgcGFzcyBhIHRydXRoIHRl
c3QuCi0gIC8vIERlbGVnYXRlcyB0byAqKkVDTUFTY3JpcHQgNSoqJ3MgbmF0aXZlIGBmaWx0ZXJg
IGlmIGF2YWlsYWJsZS4KLSAgLy8gQWxpYXNlZCBhcyBgc2VsZWN0YC4KLSAgXy5maWx0ZXIgPSBf
LnNlbGVjdCA9IGZ1bmN0aW9uKG9iaiwgaXRlcmF0b3IsIGNvbnRleHQpIHsKLSAgICB2YXIgcmVz
dWx0cyA9IFtdOwotICAgIGlmIChvYmogPT0gbnVsbCkgcmV0dXJuIHJlc3VsdHM7Ci0gICAgaWYg
KG5hdGl2ZUZpbHRlciAmJiBvYmouZmlsdGVyID09PSBuYXRpdmVGaWx0ZXIpIHJldHVybiBvYmou
ZmlsdGVyKGl0ZXJhdG9yLCBjb250ZXh0KTsKLSAgICBlYWNoKG9iaiwgZnVuY3Rpb24odmFsdWUs
IGluZGV4LCBsaXN0KSB7Ci0gICAgICBpZiAoaXRlcmF0b3IuY2FsbChjb250ZXh0LCB2YWx1ZSwg
aW5kZXgsIGxpc3QpKSByZXN1bHRzW3Jlc3VsdHMubGVuZ3RoXSA9IHZhbHVlOwotICAgIH0pOwot
ICAgIHJldHVybiByZXN1bHRzOwotICB9OwotCi0gIC8vIFJldHVybiBhbGwgdGhlIGVsZW1lbnRz
IGZvciB3aGljaCBhIHRydXRoIHRlc3QgZmFpbHMuCi0gIF8ucmVqZWN0ID0gZnVuY3Rpb24ob2Jq
LCBpdGVyYXRvciwgY29udGV4dCkgewotICAgIHJldHVybiBfLmZpbHRlcihvYmosIGZ1bmN0aW9u
KHZhbHVlLCBpbmRleCwgbGlzdCkgewotICAgICAgcmV0dXJuICFpdGVyYXRvci5jYWxsKGNvbnRl
eHQsIHZhbHVlLCBpbmRleCwgbGlzdCk7Ci0gICAgfSwgY29udGV4dCk7Ci0gIH07Ci0KLSAgLy8g
RGV0ZXJtaW5lIHdoZXRoZXIgYWxsIG9mIHRoZSBlbGVtZW50cyBtYXRjaCBhIHRydXRoIHRlc3Qu
Ci0gIC8vIERlbGVnYXRlcyB0byAqKkVDTUFTY3JpcHQgNSoqJ3MgbmF0aXZlIGBldmVyeWAgaWYg
YXZhaWxhYmxlLgotICAvLyBBbGlhc2VkIGFzIGBhbGxgLgotICBfLmV2ZXJ5ID0gXy5hbGwgPSBm
dW5jdGlvbihvYmosIGl0ZXJhdG9yLCBjb250ZXh0KSB7Ci0gICAgaXRlcmF0b3IgfHwgKGl0ZXJh
dG9yID0gXy5pZGVudGl0eSk7Ci0gICAgdmFyIHJlc3VsdCA9IHRydWU7Ci0gICAgaWYgKG9iaiA9
PSBudWxsKSByZXR1cm4gcmVzdWx0OwotICAgIGlmIChuYXRpdmVFdmVyeSAmJiBvYmouZXZlcnkg
PT09IG5hdGl2ZUV2ZXJ5KSByZXR1cm4gb2JqLmV2ZXJ5KGl0ZXJhdG9yLCBjb250ZXh0KTsKLSAg
ICBlYWNoKG9iaiwgZnVuY3Rpb24odmFsdWUsIGluZGV4LCBsaXN0KSB7Ci0gICAgICBpZiAoIShy
ZXN1bHQgPSByZXN1bHQgJiYgaXRlcmF0b3IuY2FsbChjb250ZXh0LCB2YWx1ZSwgaW5kZXgsIGxp
c3QpKSkgcmV0dXJuIGJyZWFrZXI7Ci0gICAgfSk7Ci0gICAgcmV0dXJuICEhcmVzdWx0OwotICB9
OwotCi0gIC8vIERldGVybWluZSBpZiBhdCBsZWFzdCBvbmUgZWxlbWVudCBpbiB0aGUgb2JqZWN0
IG1hdGNoZXMgYSB0cnV0aCB0ZXN0LgotICAvLyBEZWxlZ2F0ZXMgdG8gKipFQ01BU2NyaXB0IDUq
KidzIG5hdGl2ZSBgc29tZWAgaWYgYXZhaWxhYmxlLgotICAvLyBBbGlhc2VkIGFzIGBhbnlgLgot
ICB2YXIgYW55ID0gXy5zb21lID0gXy5hbnkgPSBmdW5jdGlvbihvYmosIGl0ZXJhdG9yLCBjb250
ZXh0KSB7Ci0gICAgaXRlcmF0b3IgfHwgKGl0ZXJhdG9yID0gXy5pZGVudGl0eSk7Ci0gICAgdmFy
IHJlc3VsdCA9IGZhbHNlOwotICAgIGlmIChvYmogPT0gbnVsbCkgcmV0dXJuIHJlc3VsdDsKLSAg
ICBpZiAobmF0aXZlU29tZSAmJiBvYmouc29tZSA9PT0gbmF0aXZlU29tZSkgcmV0dXJuIG9iai5z
b21lKGl0ZXJhdG9yLCBjb250ZXh0KTsKLSAgICBlYWNoKG9iaiwgZnVuY3Rpb24odmFsdWUsIGlu
ZGV4LCBsaXN0KSB7Ci0gICAgICBpZiAocmVzdWx0IHx8IChyZXN1bHQgPSBpdGVyYXRvci5jYWxs
KGNvbnRleHQsIHZhbHVlLCBpbmRleCwgbGlzdCkpKSByZXR1cm4gYnJlYWtlcjsKLSAgICB9KTsK
LSAgICByZXR1cm4gISFyZXN1bHQ7Ci0gIH07Ci0KLSAgLy8gRGV0ZXJtaW5lIGlmIHRoZSBhcnJh
eSBvciBvYmplY3QgY29udGFpbnMgYSBnaXZlbiB2YWx1ZSAodXNpbmcgYD09PWApLgotICAvLyBB
bGlhc2VkIGFzIGBpbmNsdWRlYC4KLSAgXy5jb250YWlucyA9IF8uaW5jbHVkZSA9IGZ1bmN0aW9u
KG9iaiwgdGFyZ2V0KSB7Ci0gICAgaWYgKG9iaiA9PSBudWxsKSByZXR1cm4gZmFsc2U7Ci0gICAg
aWYgKG5hdGl2ZUluZGV4T2YgJiYgb2JqLmluZGV4T2YgPT09IG5hdGl2ZUluZGV4T2YpIHJldHVy
biBvYmouaW5kZXhPZih0YXJnZXQpICE9IC0xOwotICAgIHJldHVybiBhbnkob2JqLCBmdW5jdGlv
bih2YWx1ZSkgewotICAgICAgcmV0dXJuIHZhbHVlID09PSB0YXJnZXQ7Ci0gICAgfSk7Ci0gIH07
Ci0KLSAgLy8gSW52b2tlIGEgbWV0aG9kICh3aXRoIGFyZ3VtZW50cykgb24gZXZlcnkgaXRlbSBp
biBhIGNvbGxlY3Rpb24uCi0gIF8uaW52b2tlID0gZnVuY3Rpb24ob2JqLCBtZXRob2QpIHsKLSAg
ICB2YXIgYXJncyA9IHNsaWNlLmNhbGwoYXJndW1lbnRzLCAyKTsKLSAgICB2YXIgaXNGdW5jID0g
Xy5pc0Z1bmN0aW9uKG1ldGhvZCk7Ci0gICAgcmV0dXJuIF8ubWFwKG9iaiwgZnVuY3Rpb24odmFs
dWUpIHsKLSAgICAgIHJldHVybiAoaXNGdW5jID8gbWV0aG9kIDogdmFsdWVbbWV0aG9kXSkuYXBw
bHkodmFsdWUsIGFyZ3MpOwotICAgIH0pOwotICB9OwotCi0gIC8vIENvbnZlbmllbmNlIHZlcnNp
b24gb2YgYSBjb21tb24gdXNlIGNhc2Ugb2YgYG1hcGA6IGZldGNoaW5nIGEgcHJvcGVydHkuCi0g
IF8ucGx1Y2sgPSBmdW5jdGlvbihvYmosIGtleSkgewotICAgIHJldHVybiBfLm1hcChvYmosIGZ1
bmN0aW9uKHZhbHVlKXsgcmV0dXJuIHZhbHVlW2tleV07IH0pOwotICB9OwotCi0gIC8vIENvbnZl
bmllbmNlIHZlcnNpb24gb2YgYSBjb21tb24gdXNlIGNhc2Ugb2YgYGZpbHRlcmA6IHNlbGVjdGlu
ZyBvbmx5IG9iamVjdHMKLSAgLy8gY29udGFpbmluZyBzcGVjaWZpYyBga2V5OnZhbHVlYCBwYWly
cy4KLSAgXy53aGVyZSA9IGZ1bmN0aW9uKG9iaiwgYXR0cnMsIGZpcnN0KSB7Ci0gICAgaWYgKF8u
aXNFbXB0eShhdHRycykpIHJldHVybiBmaXJzdCA/IG51bGwgOiBbXTsKLSAgICByZXR1cm4gX1tm
aXJzdCA/ICdmaW5kJyA6ICdmaWx0ZXInXShvYmosIGZ1bmN0aW9uKHZhbHVlKSB7Ci0gICAgICBm
b3IgKHZhciBrZXkgaW4gYXR0cnMpIHsKLSAgICAgICAgaWYgKGF0dHJzW2tleV0gIT09IHZhbHVl
W2tleV0pIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgICAgIHJldHVybiB0cnVlOwotICAgIH0p
OwotICB9OwotCi0gIC8vIENvbnZlbmllbmNlIHZlcnNpb24gb2YgYSBjb21tb24gdXNlIGNhc2Ug
b2YgYGZpbmRgOiBnZXR0aW5nIHRoZSBmaXJzdCBvYmplY3QKLSAgLy8gY29udGFpbmluZyBzcGVj
aWZpYyBga2V5OnZhbHVlYCBwYWlycy4KLSAgXy5maW5kV2hlcmUgPSBmdW5jdGlvbihvYmosIGF0
dHJzKSB7Ci0gICAgcmV0dXJuIF8ud2hlcmUob2JqLCBhdHRycywgdHJ1ZSk7Ci0gIH07Ci0KLSAg
Ly8gUmV0dXJuIHRoZSBtYXhpbXVtIGVsZW1lbnQgb3IgKGVsZW1lbnQtYmFzZWQgY29tcHV0YXRp
b24pLgotICAvLyBDYW4ndCBvcHRpbWl6ZSBhcnJheXMgb2YgaW50ZWdlcnMgbG9uZ2VyIHRoYW4g
NjUsNTM1IGVsZW1lbnRzLgotICAvLyBTZWU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04MDc5NwotICBfLm1heCA9IGZ1bmN0aW9uKG9iaiwgaXRlcmF0b3IsIGNvbnRl
eHQpIHsKLSAgICBpZiAoIWl0ZXJhdG9yICYmIF8uaXNBcnJheShvYmopICYmIG9ialswXSA9PT0g
K29ialswXSAmJiBvYmoubGVuZ3RoIDwgNjU1MzUpIHsKLSAgICAgIHJldHVybiBNYXRoLm1heC5h
cHBseShNYXRoLCBvYmopOwotICAgIH0KLSAgICBpZiAoIWl0ZXJhdG9yICYmIF8uaXNFbXB0eShv
YmopKSByZXR1cm4gLUluZmluaXR5OwotICAgIHZhciByZXN1bHQgPSB7Y29tcHV0ZWQgOiAtSW5m
aW5pdHksIHZhbHVlOiAtSW5maW5pdHl9OwotICAgIGVhY2gob2JqLCBmdW5jdGlvbih2YWx1ZSwg
aW5kZXgsIGxpc3QpIHsKLSAgICAgIHZhciBjb21wdXRlZCA9IGl0ZXJhdG9yID8gaXRlcmF0b3Iu
Y2FsbChjb250ZXh0LCB2YWx1ZSwgaW5kZXgsIGxpc3QpIDogdmFsdWU7Ci0gICAgICBjb21wdXRl
ZCA+PSByZXN1bHQuY29tcHV0ZWQgJiYgKHJlc3VsdCA9IHt2YWx1ZSA6IHZhbHVlLCBjb21wdXRl
ZCA6IGNvbXB1dGVkfSk7Ci0gICAgfSk7Ci0gICAgcmV0dXJuIHJlc3VsdC52YWx1ZTsKLSAgfTsK
LQotICAvLyBSZXR1cm4gdGhlIG1pbmltdW0gZWxlbWVudCAob3IgZWxlbWVudC1iYXNlZCBjb21w
dXRhdGlvbikuCi0gIF8ubWluID0gZnVuY3Rpb24ob2JqLCBpdGVyYXRvciwgY29udGV4dCkgewot
ICAgIGlmICghaXRlcmF0b3IgJiYgXy5pc0FycmF5KG9iaikgJiYgb2JqWzBdID09PSArb2JqWzBd
ICYmIG9iai5sZW5ndGggPCA2NTUzNSkgewotICAgICAgcmV0dXJuIE1hdGgubWluLmFwcGx5KE1h
dGgsIG9iaik7Ci0gICAgfQotICAgIGlmICghaXRlcmF0b3IgJiYgXy5pc0VtcHR5KG9iaikpIHJl
dHVybiBJbmZpbml0eTsKLSAgICB2YXIgcmVzdWx0ID0ge2NvbXB1dGVkIDogSW5maW5pdHksIHZh
bHVlOiBJbmZpbml0eX07Ci0gICAgZWFjaChvYmosIGZ1bmN0aW9uKHZhbHVlLCBpbmRleCwgbGlz
dCkgewotICAgICAgdmFyIGNvbXB1dGVkID0gaXRlcmF0b3IgPyBpdGVyYXRvci5jYWxsKGNvbnRl
eHQsIHZhbHVlLCBpbmRleCwgbGlzdCkgOiB2YWx1ZTsKLSAgICAgIGNvbXB1dGVkIDwgcmVzdWx0
LmNvbXB1dGVkICYmIChyZXN1bHQgPSB7dmFsdWUgOiB2YWx1ZSwgY29tcHV0ZWQgOiBjb21wdXRl
ZH0pOwotICAgIH0pOwotICAgIHJldHVybiByZXN1bHQudmFsdWU7Ci0gIH07Ci0KLSAgLy8gU2h1
ZmZsZSBhbiBhcnJheS4KLSAgXy5zaHVmZmxlID0gZnVuY3Rpb24ob2JqKSB7Ci0gICAgdmFyIHJh
bmQ7Ci0gICAgdmFyIGluZGV4ID0gMDsKLSAgICB2YXIgc2h1ZmZsZWQgPSBbXTsKLSAgICBlYWNo
KG9iaiwgZnVuY3Rpb24odmFsdWUpIHsKLSAgICAgIHJhbmQgPSBfLnJhbmRvbShpbmRleCsrKTsK
LSAgICAgIHNodWZmbGVkW2luZGV4IC0gMV0gPSBzaHVmZmxlZFtyYW5kXTsKLSAgICAgIHNodWZm
bGVkW3JhbmRdID0gdmFsdWU7Ci0gICAgfSk7Ci0gICAgcmV0dXJuIHNodWZmbGVkOwotICB9Owot
Ci0gIC8vIEFuIGludGVybmFsIGZ1bmN0aW9uIHRvIGdlbmVyYXRlIGxvb2t1cCBpdGVyYXRvcnMu
Ci0gIHZhciBsb29rdXBJdGVyYXRvciA9IGZ1bmN0aW9uKHZhbHVlKSB7Ci0gICAgcmV0dXJuIF8u
aXNGdW5jdGlvbih2YWx1ZSkgPyB2YWx1ZSA6IGZ1bmN0aW9uKG9iail7IHJldHVybiBvYmpbdmFs
dWVdOyB9OwotICB9OwotCi0gIC8vIFNvcnQgdGhlIG9iamVjdCdzIHZhbHVlcyBieSBhIGNyaXRl
cmlvbiBwcm9kdWNlZCBieSBhbiBpdGVyYXRvci4KLSAgXy5zb3J0QnkgPSBmdW5jdGlvbihvYmos
IHZhbHVlLCBjb250ZXh0KSB7Ci0gICAgdmFyIGl0ZXJhdG9yID0gbG9va3VwSXRlcmF0b3IodmFs
dWUpOwotICAgIHJldHVybiBfLnBsdWNrKF8ubWFwKG9iaiwgZnVuY3Rpb24odmFsdWUsIGluZGV4
LCBsaXN0KSB7Ci0gICAgICByZXR1cm4gewotICAgICAgICB2YWx1ZSA6IHZhbHVlLAotICAgICAg
ICBpbmRleCA6IGluZGV4LAotICAgICAgICBjcml0ZXJpYSA6IGl0ZXJhdG9yLmNhbGwoY29udGV4
dCwgdmFsdWUsIGluZGV4LCBsaXN0KQotICAgICAgfTsKLSAgICB9KS5zb3J0KGZ1bmN0aW9uKGxl
ZnQsIHJpZ2h0KSB7Ci0gICAgICB2YXIgYSA9IGxlZnQuY3JpdGVyaWE7Ci0gICAgICB2YXIgYiA9
IHJpZ2h0LmNyaXRlcmlhOwotICAgICAgaWYgKGEgIT09IGIpIHsKLSAgICAgICAgaWYgKGEgPiBi
IHx8IGEgPT09IHZvaWQgMCkgcmV0dXJuIDE7Ci0gICAgICAgIGlmIChhIDwgYiB8fCBiID09PSB2
b2lkIDApIHJldHVybiAtMTsKLSAgICAgIH0KLSAgICAgIHJldHVybiBsZWZ0LmluZGV4IDwgcmln
aHQuaW5kZXggPyAtMSA6IDE7Ci0gICAgfSksICd2YWx1ZScpOwotICB9OwotCi0gIC8vIEFuIGlu
dGVybmFsIGZ1bmN0aW9uIHVzZWQgZm9yIGFnZ3JlZ2F0ZSAiZ3JvdXAgYnkiIG9wZXJhdGlvbnMu
Ci0gIHZhciBncm91cCA9IGZ1bmN0aW9uKG9iaiwgdmFsdWUsIGNvbnRleHQsIGJlaGF2aW9yKSB7
Ci0gICAgdmFyIHJlc3VsdCA9IHt9OwotICAgIHZhciBpdGVyYXRvciA9IGxvb2t1cEl0ZXJhdG9y
KHZhbHVlIHx8IF8uaWRlbnRpdHkpOwotICAgIGVhY2gob2JqLCBmdW5jdGlvbih2YWx1ZSwgaW5k
ZXgpIHsKLSAgICAgIHZhciBrZXkgPSBpdGVyYXRvci5jYWxsKGNvbnRleHQsIHZhbHVlLCBpbmRl
eCwgb2JqKTsKLSAgICAgIGJlaGF2aW9yKHJlc3VsdCwga2V5LCB2YWx1ZSk7Ci0gICAgfSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLSAgfTsKLQotICAvLyBHcm91cHMgdGhlIG9iamVjdCdzIHZhbHVl
cyBieSBhIGNyaXRlcmlvbi4gUGFzcyBlaXRoZXIgYSBzdHJpbmcgYXR0cmlidXRlCi0gIC8vIHRv
IGdyb3VwIGJ5LCBvciBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgY3JpdGVyaW9uLgotICBf
Lmdyb3VwQnkgPSBmdW5jdGlvbihvYmosIHZhbHVlLCBjb250ZXh0KSB7Ci0gICAgcmV0dXJuIGdy
b3VwKG9iaiwgdmFsdWUsIGNvbnRleHQsIGZ1bmN0aW9uKHJlc3VsdCwga2V5LCB2YWx1ZSkgewot
ICAgICAgKF8uaGFzKHJlc3VsdCwga2V5KSA/IHJlc3VsdFtrZXldIDogKHJlc3VsdFtrZXldID0g
W10pKS5wdXNoKHZhbHVlKTsKLSAgICB9KTsKLSAgfTsKLQotICAvLyBDb3VudHMgaW5zdGFuY2Vz
IG9mIGFuIG9iamVjdCB0aGF0IGdyb3VwIGJ5IGEgY2VydGFpbiBjcml0ZXJpb24uIFBhc3MKLSAg
Ly8gZWl0aGVyIGEgc3RyaW5nIGF0dHJpYnV0ZSB0byBjb3VudCBieSwgb3IgYSBmdW5jdGlvbiB0
aGF0IHJldHVybnMgdGhlCi0gIC8vIGNyaXRlcmlvbi4KLSAgXy5jb3VudEJ5ID0gZnVuY3Rpb24o
b2JqLCB2YWx1ZSwgY29udGV4dCkgewotICAgIHJldHVybiBncm91cChvYmosIHZhbHVlLCBjb250
ZXh0LCBmdW5jdGlvbihyZXN1bHQsIGtleSkgewotICAgICAgaWYgKCFfLmhhcyhyZXN1bHQsIGtl
eSkpIHJlc3VsdFtrZXldID0gMDsKLSAgICAgIHJlc3VsdFtrZXldKys7Ci0gICAgfSk7Ci0gIH07
Ci0KLSAgLy8gVXNlIGEgY29tcGFyYXRvciBmdW5jdGlvbiB0byBmaWd1cmUgb3V0IHRoZSBzbWFs
bGVzdCBpbmRleCBhdCB3aGljaAotICAvLyBhbiBvYmplY3Qgc2hvdWxkIGJlIGluc2VydGVkIHNv
IGFzIHRvIG1haW50YWluIG9yZGVyLiBVc2VzIGJpbmFyeSBzZWFyY2guCi0gIF8uc29ydGVkSW5k
ZXggPSBmdW5jdGlvbihhcnJheSwgb2JqLCBpdGVyYXRvciwgY29udGV4dCkgewotICAgIGl0ZXJh
dG9yID0gaXRlcmF0b3IgPT0gbnVsbCA/IF8uaWRlbnRpdHkgOiBsb29rdXBJdGVyYXRvcihpdGVy
YXRvcik7Ci0gICAgdmFyIHZhbHVlID0gaXRlcmF0b3IuY2FsbChjb250ZXh0LCBvYmopOwotICAg
IHZhciBsb3cgPSAwLCBoaWdoID0gYXJyYXkubGVuZ3RoOwotICAgIHdoaWxlIChsb3cgPCBoaWdo
KSB7Ci0gICAgICB2YXIgbWlkID0gKGxvdyArIGhpZ2gpID4+PiAxOwotICAgICAgaXRlcmF0b3Iu
Y2FsbChjb250ZXh0LCBhcnJheVttaWRdKSA8IHZhbHVlID8gbG93ID0gbWlkICsgMSA6IGhpZ2gg
PSBtaWQ7Ci0gICAgfQotICAgIHJldHVybiBsb3c7Ci0gIH07Ci0KLSAgLy8gU2FmZWx5IGNvbnZl
cnQgYW55dGhpbmcgaXRlcmFibGUgaW50byBhIHJlYWwsIGxpdmUgYXJyYXkuCi0gIF8udG9BcnJh
eSA9IGZ1bmN0aW9uKG9iaikgewotICAgIGlmICghb2JqKSByZXR1cm4gW107Ci0gICAgaWYgKF8u
aXNBcnJheShvYmopKSByZXR1cm4gc2xpY2UuY2FsbChvYmopOwotICAgIGlmIChvYmoubGVuZ3Ro
ID09PSArb2JqLmxlbmd0aCkgcmV0dXJuIF8ubWFwKG9iaiwgXy5pZGVudGl0eSk7Ci0gICAgcmV0
dXJuIF8udmFsdWVzKG9iaik7Ci0gIH07Ci0KLSAgLy8gUmV0dXJuIHRoZSBudW1iZXIgb2YgZWxl
bWVudHMgaW4gYW4gb2JqZWN0LgotICBfLnNpemUgPSBmdW5jdGlvbihvYmopIHsKLSAgICBpZiAo
b2JqID09IG51bGwpIHJldHVybiAwOwotICAgIHJldHVybiAob2JqLmxlbmd0aCA9PT0gK29iai5s
ZW5ndGgpID8gb2JqLmxlbmd0aCA6IF8ua2V5cyhvYmopLmxlbmd0aDsKLSAgfTsKLQotICAvLyBB
cnJheSBGdW5jdGlvbnMKLSAgLy8gLS0tLS0tLS0tLS0tLS0tCi0KLSAgLy8gR2V0IHRoZSBmaXJz
dCBlbGVtZW50IG9mIGFuIGFycmF5LiBQYXNzaW5nICoqbioqIHdpbGwgcmV0dXJuIHRoZSBmaXJz
dCBOCi0gIC8vIHZhbHVlcyBpbiB0aGUgYXJyYXkuIEFsaWFzZWQgYXMgYGhlYWRgIGFuZCBgdGFr
ZWAuIFRoZSAqKmd1YXJkKiogY2hlY2sKLSAgLy8gYWxsb3dzIGl0IHRvIHdvcmsgd2l0aCBgXy5t
YXBgLgotICBfLmZpcnN0ID0gXy5oZWFkID0gXy50YWtlID0gZnVuY3Rpb24oYXJyYXksIG4sIGd1
YXJkKSB7Ci0gICAgaWYgKGFycmF5ID09IG51bGwpIHJldHVybiB2b2lkIDA7Ci0gICAgcmV0dXJu
IChuICE9IG51bGwpICYmICFndWFyZCA/IHNsaWNlLmNhbGwoYXJyYXksIDAsIG4pIDogYXJyYXlb
MF07Ci0gIH07Ci0KLSAgLy8gUmV0dXJucyBldmVyeXRoaW5nIGJ1dCB0aGUgbGFzdCBlbnRyeSBv
ZiB0aGUgYXJyYXkuIEVzcGVjaWFsbHkgdXNlZnVsIG9uCi0gIC8vIHRoZSBhcmd1bWVudHMgb2Jq
ZWN0LiBQYXNzaW5nICoqbioqIHdpbGwgcmV0dXJuIGFsbCB0aGUgdmFsdWVzIGluCi0gIC8vIHRo
ZSBhcnJheSwgZXhjbHVkaW5nIHRoZSBsYXN0IE4uIFRoZSAqKmd1YXJkKiogY2hlY2sgYWxsb3dz
IGl0IHRvIHdvcmsgd2l0aAotICAvLyBgXy5tYXBgLgotICBfLmluaXRpYWwgPSBmdW5jdGlvbihh
cnJheSwgbiwgZ3VhcmQpIHsKLSAgICByZXR1cm4gc2xpY2UuY2FsbChhcnJheSwgMCwgYXJyYXku
bGVuZ3RoIC0gKChuID09IG51bGwpIHx8IGd1YXJkID8gMSA6IG4pKTsKLSAgfTsKLQotICAvLyBH
ZXQgdGhlIGxhc3QgZWxlbWVudCBvZiBhbiBhcnJheS4gUGFzc2luZyAqKm4qKiB3aWxsIHJldHVy
biB0aGUgbGFzdCBOCi0gIC8vIHZhbHVlcyBpbiB0aGUgYXJyYXkuIFRoZSAqKmd1YXJkKiogY2hl
Y2sgYWxsb3dzIGl0IHRvIHdvcmsgd2l0aCBgXy5tYXBgLgotICBfLmxhc3QgPSBmdW5jdGlvbihh
cnJheSwgbiwgZ3VhcmQpIHsKLSAgICBpZiAoYXJyYXkgPT0gbnVsbCkgcmV0dXJuIHZvaWQgMDsK
LSAgICBpZiAoKG4gIT0gbnVsbCkgJiYgIWd1YXJkKSB7Ci0gICAgICByZXR1cm4gc2xpY2UuY2Fs
bChhcnJheSwgTWF0aC5tYXgoYXJyYXkubGVuZ3RoIC0gbiwgMCkpOwotICAgIH0gZWxzZSB7Ci0g
ICAgICByZXR1cm4gYXJyYXlbYXJyYXkubGVuZ3RoIC0gMV07Ci0gICAgfQotICB9OwotCi0gIC8v
IFJldHVybnMgZXZlcnl0aGluZyBidXQgdGhlIGZpcnN0IGVudHJ5IG9mIHRoZSBhcnJheS4gQWxp
YXNlZCBhcyBgdGFpbGAgYW5kIGBkcm9wYC4KLSAgLy8gRXNwZWNpYWxseSB1c2VmdWwgb24gdGhl
IGFyZ3VtZW50cyBvYmplY3QuIFBhc3NpbmcgYW4gKipuKiogd2lsbCByZXR1cm4KLSAgLy8gdGhl
IHJlc3QgTiB2YWx1ZXMgaW4gdGhlIGFycmF5LiBUaGUgKipndWFyZCoqCi0gIC8vIGNoZWNrIGFs
bG93cyBpdCB0byB3b3JrIHdpdGggYF8ubWFwYC4KLSAgXy5yZXN0ID0gXy50YWlsID0gXy5kcm9w
ID0gZnVuY3Rpb24oYXJyYXksIG4sIGd1YXJkKSB7Ci0gICAgcmV0dXJuIHNsaWNlLmNhbGwoYXJy
YXksIChuID09IG51bGwpIHx8IGd1YXJkID8gMSA6IG4pOwotICB9OwotCi0gIC8vIFRyaW0gb3V0
IGFsbCBmYWxzeSB2YWx1ZXMgZnJvbSBhbiBhcnJheS4KLSAgXy5jb21wYWN0ID0gZnVuY3Rpb24o
YXJyYXkpIHsKLSAgICByZXR1cm4gXy5maWx0ZXIoYXJyYXksIF8uaWRlbnRpdHkpOwotICB9Owot
Ci0gIC8vIEludGVybmFsIGltcGxlbWVudGF0aW9uIG9mIGEgcmVjdXJzaXZlIGBmbGF0dGVuYCBm
dW5jdGlvbi4KLSAgdmFyIGZsYXR0ZW4gPSBmdW5jdGlvbihpbnB1dCwgc2hhbGxvdywgb3V0cHV0
KSB7Ci0gICAgZWFjaChpbnB1dCwgZnVuY3Rpb24odmFsdWUpIHsKLSAgICAgIGlmIChfLmlzQXJy
YXkodmFsdWUpKSB7Ci0gICAgICAgIHNoYWxsb3cgPyBwdXNoLmFwcGx5KG91dHB1dCwgdmFsdWUp
IDogZmxhdHRlbih2YWx1ZSwgc2hhbGxvdywgb3V0cHV0KTsKLSAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgIG91dHB1dC5wdXNoKHZhbHVlKTsKLSAgICAgIH0KLSAgICB9KTsKLSAgICByZXR1cm4gb3V0
cHV0OwotICB9OwotCi0gIC8vIFJldHVybiBhIGNvbXBsZXRlbHkgZmxhdHRlbmVkIHZlcnNpb24g
b2YgYW4gYXJyYXkuCi0gIF8uZmxhdHRlbiA9IGZ1bmN0aW9uKGFycmF5LCBzaGFsbG93KSB7Ci0g
ICAgcmV0dXJuIGZsYXR0ZW4oYXJyYXksIHNoYWxsb3csIFtdKTsKLSAgfTsKLQotICAvLyBSZXR1
cm4gYSB2ZXJzaW9uIG9mIHRoZSBhcnJheSB0aGF0IGRvZXMgbm90IGNvbnRhaW4gdGhlIHNwZWNp
ZmllZCB2YWx1ZShzKS4KLSAgXy53aXRob3V0ID0gZnVuY3Rpb24oYXJyYXkpIHsKLSAgICByZXR1
cm4gXy5kaWZmZXJlbmNlKGFycmF5LCBzbGljZS5jYWxsKGFyZ3VtZW50cywgMSkpOwotICB9Owot
Ci0gIC8vIFByb2R1Y2UgYSBkdXBsaWNhdGUtZnJlZSB2ZXJzaW9uIG9mIHRoZSBhcnJheS4gSWYg
dGhlIGFycmF5IGhhcyBhbHJlYWR5Ci0gIC8vIGJlZW4gc29ydGVkLCB5b3UgaGF2ZSB0aGUgb3B0
aW9uIG9mIHVzaW5nIGEgZmFzdGVyIGFsZ29yaXRobS4KLSAgLy8gQWxpYXNlZCBhcyBgdW5pcXVl
YC4KLSAgXy51bmlxID0gXy51bmlxdWUgPSBmdW5jdGlvbihhcnJheSwgaXNTb3J0ZWQsIGl0ZXJh
dG9yLCBjb250ZXh0KSB7Ci0gICAgaWYgKF8uaXNGdW5jdGlvbihpc1NvcnRlZCkpIHsKLSAgICAg
IGNvbnRleHQgPSBpdGVyYXRvcjsKLSAgICAgIGl0ZXJhdG9yID0gaXNTb3J0ZWQ7Ci0gICAgICBp
c1NvcnRlZCA9IGZhbHNlOwotICAgIH0KLSAgICB2YXIgaW5pdGlhbCA9IGl0ZXJhdG9yID8gXy5t
YXAoYXJyYXksIGl0ZXJhdG9yLCBjb250ZXh0KSA6IGFycmF5OwotICAgIHZhciByZXN1bHRzID0g
W107Ci0gICAgdmFyIHNlZW4gPSBbXTsKLSAgICBlYWNoKGluaXRpYWwsIGZ1bmN0aW9uKHZhbHVl
LCBpbmRleCkgewotICAgICAgaWYgKGlzU29ydGVkID8gKCFpbmRleCB8fCBzZWVuW3NlZW4ubGVu
Z3RoIC0gMV0gIT09IHZhbHVlKSA6ICFfLmNvbnRhaW5zKHNlZW4sIHZhbHVlKSkgewotICAgICAg
ICBzZWVuLnB1c2godmFsdWUpOwotICAgICAgICByZXN1bHRzLnB1c2goYXJyYXlbaW5kZXhdKTsK
LSAgICAgIH0KLSAgICB9KTsKLSAgICByZXR1cm4gcmVzdWx0czsKLSAgfTsKLQotICAvLyBQcm9k
dWNlIGFuIGFycmF5IHRoYXQgY29udGFpbnMgdGhlIHVuaW9uOiBlYWNoIGRpc3RpbmN0IGVsZW1l
bnQgZnJvbSBhbGwgb2YKLSAgLy8gdGhlIHBhc3NlZC1pbiBhcnJheXMuCi0gIF8udW5pb24gPSBm
dW5jdGlvbigpIHsKLSAgICByZXR1cm4gXy51bmlxKGNvbmNhdC5hcHBseShBcnJheVByb3RvLCBh
cmd1bWVudHMpKTsKLSAgfTsKLQotICAvLyBQcm9kdWNlIGFuIGFycmF5IHRoYXQgY29udGFpbnMg
ZXZlcnkgaXRlbSBzaGFyZWQgYmV0d2VlbiBhbGwgdGhlCi0gIC8vIHBhc3NlZC1pbiBhcnJheXMu
Ci0gIF8uaW50ZXJzZWN0aW9uID0gZnVuY3Rpb24oYXJyYXkpIHsKLSAgICB2YXIgcmVzdCA9IHNs
aWNlLmNhbGwoYXJndW1lbnRzLCAxKTsKLSAgICByZXR1cm4gXy5maWx0ZXIoXy51bmlxKGFycmF5
KSwgZnVuY3Rpb24oaXRlbSkgewotICAgICAgcmV0dXJuIF8uZXZlcnkocmVzdCwgZnVuY3Rpb24o
b3RoZXIpIHsKLSAgICAgICAgcmV0dXJuIF8uaW5kZXhPZihvdGhlciwgaXRlbSkgPj0gMDsKLSAg
ICAgIH0pOwotICAgIH0pOwotICB9OwotCi0gIC8vIFRha2UgdGhlIGRpZmZlcmVuY2UgYmV0d2Vl
biBvbmUgYXJyYXkgYW5kIGEgbnVtYmVyIG9mIG90aGVyIGFycmF5cy4KLSAgLy8gT25seSB0aGUg
ZWxlbWVudHMgcHJlc2VudCBpbiBqdXN0IHRoZSBmaXJzdCBhcnJheSB3aWxsIHJlbWFpbi4KLSAg
Xy5kaWZmZXJlbmNlID0gZnVuY3Rpb24oYXJyYXkpIHsKLSAgICB2YXIgcmVzdCA9IGNvbmNhdC5h
cHBseShBcnJheVByb3RvLCBzbGljZS5jYWxsKGFyZ3VtZW50cywgMSkpOwotICAgIHJldHVybiBf
LmZpbHRlcihhcnJheSwgZnVuY3Rpb24odmFsdWUpeyByZXR1cm4gIV8uY29udGFpbnMocmVzdCwg
dmFsdWUpOyB9KTsKLSAgfTsKLQotICAvLyBaaXAgdG9nZXRoZXIgbXVsdGlwbGUgbGlzdHMgaW50
byBhIHNpbmdsZSBhcnJheSAtLSBlbGVtZW50cyB0aGF0IHNoYXJlCi0gIC8vIGFuIGluZGV4IGdv
IHRvZ2V0aGVyLgotICBfLnppcCA9IGZ1bmN0aW9uKCkgewotICAgIHZhciBhcmdzID0gc2xpY2Uu
Y2FsbChhcmd1bWVudHMpOwotICAgIHZhciBsZW5ndGggPSBfLm1heChfLnBsdWNrKGFyZ3MsICds
ZW5ndGgnKSk7Ci0gICAgdmFyIHJlc3VsdHMgPSBuZXcgQXJyYXkobGVuZ3RoKTsKLSAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7Ci0gICAgICByZXN1bHRzW2ldID0gXy5wbHVj
ayhhcmdzLCAiIiArIGkpOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0czsKLSAgfTsKLQotICAv
LyBDb252ZXJ0cyBsaXN0cyBpbnRvIG9iamVjdHMuIFBhc3MgZWl0aGVyIGEgc2luZ2xlIGFycmF5
IG9mIGBba2V5LCB2YWx1ZV1gCi0gIC8vIHBhaXJzLCBvciB0d28gcGFyYWxsZWwgYXJyYXlzIG9m
IHRoZSBzYW1lIGxlbmd0aCAtLSBvbmUgb2Yga2V5cywgYW5kIG9uZSBvZgotICAvLyB0aGUgY29y
cmVzcG9uZGluZyB2YWx1ZXMuCi0gIF8ub2JqZWN0ID0gZnVuY3Rpb24obGlzdCwgdmFsdWVzKSB7
Ci0gICAgaWYgKGxpc3QgPT0gbnVsbCkgcmV0dXJuIHt9OwotICAgIHZhciByZXN1bHQgPSB7fTsK
LSAgICBmb3IgKHZhciBpID0gMCwgbCA9IGxpc3QubGVuZ3RoOyBpIDwgbDsgaSsrKSB7Ci0gICAg
ICBpZiAodmFsdWVzKSB7Ci0gICAgICAgIHJlc3VsdFtsaXN0W2ldXSA9IHZhbHVlc1tpXTsKLSAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgIHJlc3VsdFtsaXN0W2ldWzBdXSA9IGxpc3RbaV1bMV07Ci0g
ICAgICB9Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci0gIH07Ci0KLSAgLy8gSWYgdGhlIGJy
b3dzZXIgZG9lc24ndCBzdXBwbHkgdXMgd2l0aCBpbmRleE9mIChJJ20gbG9va2luZyBhdCB5b3Us
ICoqTVNJRSoqKSwKLSAgLy8gd2UgbmVlZCB0aGlzIGZ1bmN0aW9uLiBSZXR1cm4gdGhlIHBvc2l0
aW9uIG9mIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIGFuCi0gIC8vIGl0ZW0gaW4gYW4gYXJyYXks
IG9yIC0xIGlmIHRoZSBpdGVtIGlzIG5vdCBpbmNsdWRlZCBpbiB0aGUgYXJyYXkuCi0gIC8vIERl
bGVnYXRlcyB0byAqKkVDTUFTY3JpcHQgNSoqJ3MgbmF0aXZlIGBpbmRleE9mYCBpZiBhdmFpbGFi
bGUuCi0gIC8vIElmIHRoZSBhcnJheSBpcyBsYXJnZSBhbmQgYWxyZWFkeSBpbiBzb3J0IG9yZGVy
LCBwYXNzIGB0cnVlYAotICAvLyBmb3IgKippc1NvcnRlZCoqIHRvIHVzZSBiaW5hcnkgc2VhcmNo
LgotICBfLmluZGV4T2YgPSBmdW5jdGlvbihhcnJheSwgaXRlbSwgaXNTb3J0ZWQpIHsKLSAgICBp
ZiAoYXJyYXkgPT0gbnVsbCkgcmV0dXJuIC0xOwotICAgIHZhciBpID0gMCwgbCA9IGFycmF5Lmxl
bmd0aDsKLSAgICBpZiAoaXNTb3J0ZWQpIHsKLSAgICAgIGlmICh0eXBlb2YgaXNTb3J0ZWQgPT0g
J251bWJlcicpIHsKLSAgICAgICAgaSA9IChpc1NvcnRlZCA8IDAgPyBNYXRoLm1heCgwLCBsICsg
aXNTb3J0ZWQpIDogaXNTb3J0ZWQpOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgaSA9IF8uc29y
dGVkSW5kZXgoYXJyYXksIGl0ZW0pOwotICAgICAgICByZXR1cm4gYXJyYXlbaV0gPT09IGl0ZW0g
PyBpIDogLTE7Ci0gICAgICB9Ci0gICAgfQotICAgIGlmIChuYXRpdmVJbmRleE9mICYmIGFycmF5
LmluZGV4T2YgPT09IG5hdGl2ZUluZGV4T2YpIHJldHVybiBhcnJheS5pbmRleE9mKGl0ZW0sIGlz
U29ydGVkKTsKLSAgICBmb3IgKDsgaSA8IGw7IGkrKykgaWYgKGFycmF5W2ldID09PSBpdGVtKSBy
ZXR1cm4gaTsKLSAgICByZXR1cm4gLTE7Ci0gIH07Ci0KLSAgLy8gRGVsZWdhdGVzIHRvICoqRUNN
QVNjcmlwdCA1KioncyBuYXRpdmUgYGxhc3RJbmRleE9mYCBpZiBhdmFpbGFibGUuCi0gIF8ubGFz
dEluZGV4T2YgPSBmdW5jdGlvbihhcnJheSwgaXRlbSwgZnJvbSkgewotICAgIGlmIChhcnJheSA9
PSBudWxsKSByZXR1cm4gLTE7Ci0gICAgdmFyIGhhc0luZGV4ID0gZnJvbSAhPSBudWxsOwotICAg
IGlmIChuYXRpdmVMYXN0SW5kZXhPZiAmJiBhcnJheS5sYXN0SW5kZXhPZiA9PT0gbmF0aXZlTGFz
dEluZGV4T2YpIHsKLSAgICAgIHJldHVybiBoYXNJbmRleCA/IGFycmF5Lmxhc3RJbmRleE9mKGl0
ZW0sIGZyb20pIDogYXJyYXkubGFzdEluZGV4T2YoaXRlbSk7Ci0gICAgfQotICAgIHZhciBpID0g
KGhhc0luZGV4ID8gZnJvbSA6IGFycmF5Lmxlbmd0aCk7Ci0gICAgd2hpbGUgKGktLSkgaWYgKGFy
cmF5W2ldID09PSBpdGVtKSByZXR1cm4gaTsKLSAgICByZXR1cm4gLTE7Ci0gIH07Ci0KLSAgLy8g
R2VuZXJhdGUgYW4gaW50ZWdlciBBcnJheSBjb250YWluaW5nIGFuIGFyaXRobWV0aWMgcHJvZ3Jl
c3Npb24uIEEgcG9ydCBvZgotICAvLyB0aGUgbmF0aXZlIFB5dGhvbiBgcmFuZ2UoKWAgZnVuY3Rp
b24uIFNlZQotICAvLyBbdGhlIFB5dGhvbiBkb2N1bWVudGF0aW9uXShodHRwOi8vZG9jcy5weXRo
b24ub3JnL2xpYnJhcnkvZnVuY3Rpb25zLmh0bWwjcmFuZ2UpLgotICBfLnJhbmdlID0gZnVuY3Rp
b24oc3RhcnQsIHN0b3AsIHN0ZXApIHsKLSAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8PSAxKSB7
Ci0gICAgICBzdG9wID0gc3RhcnQgfHwgMDsKLSAgICAgIHN0YXJ0ID0gMDsKLSAgICB9Ci0gICAg
c3RlcCA9IGFyZ3VtZW50c1syXSB8fCAxOwotCi0gICAgdmFyIGxlbiA9IE1hdGgubWF4KE1hdGgu
Y2VpbCgoc3RvcCAtIHN0YXJ0KSAvIHN0ZXApLCAwKTsKLSAgICB2YXIgaWR4ID0gMDsKLSAgICB2
YXIgcmFuZ2UgPSBuZXcgQXJyYXkobGVuKTsKLQotICAgIHdoaWxlKGlkeCA8IGxlbikgewotICAg
ICAgcmFuZ2VbaWR4KytdID0gc3RhcnQ7Ci0gICAgICBzdGFydCArPSBzdGVwOwotICAgIH0KLQot
ICAgIHJldHVybiByYW5nZTsKLSAgfTsKLQotICAvLyBGdW5jdGlvbiAoYWhlbSkgRnVuY3Rpb25z
Ci0gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLQotCi0gIC8vIENyZWF0ZSBhIGZ1bmN0aW9uIGJvdW5k
IHRvIGEgZ2l2ZW4gb2JqZWN0IChhc3NpZ25pbmcgYHRoaXNgLCBhbmQgYXJndW1lbnRzLAotICAv
LyBvcHRpb25hbGx5KS4gRGVsZWdhdGVzIHRvICoqRUNNQVNjcmlwdCA1KioncyBuYXRpdmUgYEZ1
bmN0aW9uLmJpbmRgIGlmCi0gIC8vIGF2YWlsYWJsZS4KLSAgXy5iaW5kID0gZnVuY3Rpb24oZnVu
YywgY29udGV4dCkgewotICAgIGlmIChmdW5jLmJpbmQgPT09IG5hdGl2ZUJpbmQgJiYgbmF0aXZl
QmluZCkgcmV0dXJuIG5hdGl2ZUJpbmQuYXBwbHkoZnVuYywgc2xpY2UuY2FsbChhcmd1bWVudHMs
IDEpKTsKLSAgICB2YXIgYXJncyA9IHNsaWNlLmNhbGwoYXJndW1lbnRzLCAyKTsKLSAgICByZXR1
cm4gZnVuY3Rpb24oKSB7Ci0gICAgICByZXR1cm4gZnVuYy5hcHBseShjb250ZXh0LCBhcmdzLmNv
bmNhdChzbGljZS5jYWxsKGFyZ3VtZW50cykpKTsKLSAgICB9OwotICB9OwotCi0gIC8vIFBhcnRp
YWxseSBhcHBseSBhIGZ1bmN0aW9uIGJ5IGNyZWF0aW5nIGEgdmVyc2lvbiB0aGF0IGhhcyBoYWQg
c29tZSBvZiBpdHMKLSAgLy8gYXJndW1lbnRzIHByZS1maWxsZWQsIHdpdGhvdXQgY2hhbmdpbmcg
aXRzIGR5bmFtaWMgYHRoaXNgIGNvbnRleHQuCi0gIF8ucGFydGlhbCA9IGZ1bmN0aW9uKGZ1bmMp
IHsKLSAgICB2YXIgYXJncyA9IHNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKTsKLSAgICByZXR1cm4g
ZnVuY3Rpb24oKSB7Ci0gICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmdzLmNvbmNhdChz
bGljZS5jYWxsKGFyZ3VtZW50cykpKTsKLSAgICB9OwotICB9OwotCi0gIC8vIEJpbmQgYWxsIG9m
IGFuIG9iamVjdCdzIG1ldGhvZHMgdG8gdGhhdCBvYmplY3QuIFVzZWZ1bCBmb3IgZW5zdXJpbmcg
dGhhdAotICAvLyBhbGwgY2FsbGJhY2tzIGRlZmluZWQgb24gYW4gb2JqZWN0IGJlbG9uZyB0byBp
dC4KLSAgXy5iaW5kQWxsID0gZnVuY3Rpb24ob2JqKSB7Ci0gICAgdmFyIGZ1bmNzID0gc2xpY2Uu
Y2FsbChhcmd1bWVudHMsIDEpOwotICAgIGlmIChmdW5jcy5sZW5ndGggPT09IDApIGZ1bmNzID0g
Xy5mdW5jdGlvbnMob2JqKTsKLSAgICBlYWNoKGZ1bmNzLCBmdW5jdGlvbihmKSB7IG9ialtmXSA9
IF8uYmluZChvYmpbZl0sIG9iaik7IH0pOwotICAgIHJldHVybiBvYmo7Ci0gIH07Ci0KLSAgLy8g
TWVtb2l6ZSBhbiBleHBlbnNpdmUgZnVuY3Rpb24gYnkgc3RvcmluZyBpdHMgcmVzdWx0cy4KLSAg
Xy5tZW1vaXplID0gZnVuY3Rpb24oZnVuYywgaGFzaGVyKSB7Ci0gICAgdmFyIG1lbW8gPSB7fTsK
LSAgICBoYXNoZXIgfHwgKGhhc2hlciA9IF8uaWRlbnRpdHkpOwotICAgIHJldHVybiBmdW5jdGlv
bigpIHsKLSAgICAgIHZhciBrZXkgPSBoYXNoZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKLSAg
ICAgIHJldHVybiBfLmhhcyhtZW1vLCBrZXkpID8gbWVtb1trZXldIDogKG1lbW9ba2V5XSA9IGZ1
bmMuYXBwbHkodGhpcywgYXJndW1lbnRzKSk7Ci0gICAgfTsKLSAgfTsKLQotICAvLyBEZWxheXMg
YSBmdW5jdGlvbiBmb3IgdGhlIGdpdmVuIG51bWJlciBvZiBtaWxsaXNlY29uZHMsIGFuZCB0aGVu
IGNhbGxzCi0gIC8vIGl0IHdpdGggdGhlIGFyZ3VtZW50cyBzdXBwbGllZC4KLSAgXy5kZWxheSA9
IGZ1bmN0aW9uKGZ1bmMsIHdhaXQpIHsKLSAgICB2YXIgYXJncyA9IHNsaWNlLmNhbGwoYXJndW1l
bnRzLCAyKTsKLSAgICByZXR1cm4gc2V0VGltZW91dChmdW5jdGlvbigpeyByZXR1cm4gZnVuYy5h
cHBseShudWxsLCBhcmdzKTsgfSwgd2FpdCk7Ci0gIH07Ci0KLSAgLy8gRGVmZXJzIGEgZnVuY3Rp
b24sIHNjaGVkdWxpbmcgaXQgdG8gcnVuIGFmdGVyIHRoZSBjdXJyZW50IGNhbGwgc3RhY2sgaGFz
Ci0gIC8vIGNsZWFyZWQuCi0gIF8uZGVmZXIgPSBmdW5jdGlvbihmdW5jKSB7Ci0gICAgcmV0dXJu
IF8uZGVsYXkuYXBwbHkoXywgW2Z1bmMsIDFdLmNvbmNhdChzbGljZS5jYWxsKGFyZ3VtZW50cywg
MSkpKTsKLSAgfTsKLQotICAvLyBSZXR1cm5zIGEgZnVuY3Rpb24sIHRoYXQsIHdoZW4gaW52b2tl
ZCwgd2lsbCBvbmx5IGJlIHRyaWdnZXJlZCBhdCBtb3N0IG9uY2UKLSAgLy8gZHVyaW5nIGEgZ2l2
ZW4gd2luZG93IG9mIHRpbWUuCi0gIF8udGhyb3R0bGUgPSBmdW5jdGlvbihmdW5jLCB3YWl0KSB7
Ci0gICAgdmFyIGNvbnRleHQsIGFyZ3MsIHRpbWVvdXQsIHJlc3VsdDsKLSAgICB2YXIgcHJldmlv
dXMgPSAwOwotICAgIHZhciBsYXRlciA9IGZ1bmN0aW9uKCkgewotICAgICAgcHJldmlvdXMgPSBu
ZXcgRGF0ZTsKLSAgICAgIHRpbWVvdXQgPSBudWxsOwotICAgICAgcmVzdWx0ID0gZnVuYy5hcHBs
eShjb250ZXh0LCBhcmdzKTsKLSAgICB9OwotICAgIHJldHVybiBmdW5jdGlvbigpIHsKLSAgICAg
IHZhciBub3cgPSBuZXcgRGF0ZTsKLSAgICAgIHZhciByZW1haW5pbmcgPSB3YWl0IC0gKG5vdyAt
IHByZXZpb3VzKTsKLSAgICAgIGNvbnRleHQgPSB0aGlzOwotICAgICAgYXJncyA9IGFyZ3VtZW50
czsKLSAgICAgIGlmIChyZW1haW5pbmcgPD0gMCkgewotICAgICAgICBjbGVhclRpbWVvdXQodGlt
ZW91dCk7Ci0gICAgICAgIHRpbWVvdXQgPSBudWxsOwotICAgICAgICBwcmV2aW91cyA9IG5vdzsK
LSAgICAgICAgcmVzdWx0ID0gZnVuYy5hcHBseShjb250ZXh0LCBhcmdzKTsKLSAgICAgIH0gZWxz
ZSBpZiAoIXRpbWVvdXQpIHsKLSAgICAgICAgdGltZW91dCA9IHNldFRpbWVvdXQobGF0ZXIsIHJl
bWFpbmluZyk7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gcmVzdWx0OwotICAgIH07Ci0gIH07Ci0K
LSAgLy8gUmV0dXJucyBhIGZ1bmN0aW9uLCB0aGF0LCBhcyBsb25nIGFzIGl0IGNvbnRpbnVlcyB0
byBiZSBpbnZva2VkLCB3aWxsIG5vdAotICAvLyBiZSB0cmlnZ2VyZWQuIFRoZSBmdW5jdGlvbiB3
aWxsIGJlIGNhbGxlZCBhZnRlciBpdCBzdG9wcyBiZWluZyBjYWxsZWQgZm9yCi0gIC8vIE4gbWls
bGlzZWNvbmRzLiBJZiBgaW1tZWRpYXRlYCBpcyBwYXNzZWQsIHRyaWdnZXIgdGhlIGZ1bmN0aW9u
IG9uIHRoZQotICAvLyBsZWFkaW5nIGVkZ2UsIGluc3RlYWQgb2YgdGhlIHRyYWlsaW5nLgotICBf
LmRlYm91bmNlID0gZnVuY3Rpb24oZnVuYywgd2FpdCwgaW1tZWRpYXRlKSB7Ci0gICAgdmFyIHRp
bWVvdXQsIHJlc3VsdDsKLSAgICByZXR1cm4gZnVuY3Rpb24oKSB7Ci0gICAgICB2YXIgY29udGV4
dCA9IHRoaXMsIGFyZ3MgPSBhcmd1bWVudHM7Ci0gICAgICB2YXIgbGF0ZXIgPSBmdW5jdGlvbigp
IHsKLSAgICAgICAgdGltZW91dCA9IG51bGw7Ci0gICAgICAgIGlmICghaW1tZWRpYXRlKSByZXN1
bHQgPSBmdW5jLmFwcGx5KGNvbnRleHQsIGFyZ3MpOwotICAgICAgfTsKLSAgICAgIHZhciBjYWxs
Tm93ID0gaW1tZWRpYXRlICYmICF0aW1lb3V0OwotICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQp
OwotICAgICAgdGltZW91dCA9IHNldFRpbWVvdXQobGF0ZXIsIHdhaXQpOwotICAgICAgaWYgKGNh
bGxOb3cpIHJlc3VsdCA9IGZ1bmMuYXBwbHkoY29udGV4dCwgYXJncyk7Ci0gICAgICByZXR1cm4g
cmVzdWx0OwotICAgIH07Ci0gIH07Ci0KLSAgLy8gUmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgd2ls
bCBiZSBleGVjdXRlZCBhdCBtb3N0IG9uZSB0aW1lLCBubyBtYXR0ZXIgaG93Ci0gIC8vIG9mdGVu
IHlvdSBjYWxsIGl0LiBVc2VmdWwgZm9yIGxhenkgaW5pdGlhbGl6YXRpb24uCi0gIF8ub25jZSA9
IGZ1bmN0aW9uKGZ1bmMpIHsKLSAgICB2YXIgcmFuID0gZmFsc2UsIG1lbW87Ci0gICAgcmV0dXJu
IGZ1bmN0aW9uKCkgewotICAgICAgaWYgKHJhbikgcmV0dXJuIG1lbW87Ci0gICAgICByYW4gPSB0
cnVlOwotICAgICAgbWVtbyA9IGZ1bmMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKLSAgICAgIGZ1
bmMgPSBudWxsOwotICAgICAgcmV0dXJuIG1lbW87Ci0gICAgfTsKLSAgfTsKLQotICAvLyBSZXR1
cm5zIHRoZSBmaXJzdCBmdW5jdGlvbiBwYXNzZWQgYXMgYW4gYXJndW1lbnQgdG8gdGhlIHNlY29u
ZCwKLSAgLy8gYWxsb3dpbmcgeW91IHRvIGFkanVzdCBhcmd1bWVudHMsIHJ1biBjb2RlIGJlZm9y
ZSBhbmQgYWZ0ZXIsIGFuZAotICAvLyBjb25kaXRpb25hbGx5IGV4ZWN1dGUgdGhlIG9yaWdpbmFs
IGZ1bmN0aW9uLgotICBfLndyYXAgPSBmdW5jdGlvbihmdW5jLCB3cmFwcGVyKSB7Ci0gICAgcmV0
dXJuIGZ1bmN0aW9uKCkgewotICAgICAgdmFyIGFyZ3MgPSBbZnVuY107Ci0gICAgICBwdXNoLmFw
cGx5KGFyZ3MsIGFyZ3VtZW50cyk7Ci0gICAgICByZXR1cm4gd3JhcHBlci5hcHBseSh0aGlzLCBh
cmdzKTsKLSAgICB9OwotICB9OwotCi0gIC8vIFJldHVybnMgYSBmdW5jdGlvbiB0aGF0IGlzIHRo
ZSBjb21wb3NpdGlvbiBvZiBhIGxpc3Qgb2YgZnVuY3Rpb25zLCBlYWNoCi0gIC8vIGNvbnN1bWlu
ZyB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBmdW5jdGlvbiB0aGF0IGZvbGxvd3MuCi0gIF8uY29t
cG9zZSA9IGZ1bmN0aW9uKCkgewotICAgIHZhciBmdW5jcyA9IGFyZ3VtZW50czsKLSAgICByZXR1
cm4gZnVuY3Rpb24oKSB7Ci0gICAgICB2YXIgYXJncyA9IGFyZ3VtZW50czsKLSAgICAgIGZvciAo
dmFyIGkgPSBmdW5jcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgewotICAgICAgICBhcmdzID0g
W2Z1bmNzW2ldLmFwcGx5KHRoaXMsIGFyZ3MpXTsKLSAgICAgIH0KLSAgICAgIHJldHVybiBhcmdz
WzBdOwotICAgIH07Ci0gIH07Ci0KLSAgLy8gUmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgd2lsbCBv
bmx5IGJlIGV4ZWN1dGVkIGFmdGVyIGJlaW5nIGNhbGxlZCBOIHRpbWVzLgotICBfLmFmdGVyID0g
ZnVuY3Rpb24odGltZXMsIGZ1bmMpIHsKLSAgICBpZiAodGltZXMgPD0gMCkgcmV0dXJuIGZ1bmMo
KTsKLSAgICByZXR1cm4gZnVuY3Rpb24oKSB7Ci0gICAgICBpZiAoLS10aW1lcyA8IDEpIHsKLSAg
ICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKLSAgICAgIH0KLSAgICB9
OwotICB9OwotCi0gIC8vIE9iamVjdCBGdW5jdGlvbnMKLSAgLy8gLS0tLS0tLS0tLS0tLS0tLQot
Ci0gIC8vIFJldHJpZXZlIHRoZSBuYW1lcyBvZiBhbiBvYmplY3QncyBwcm9wZXJ0aWVzLgotICAv
LyBEZWxlZ2F0ZXMgdG8gKipFQ01BU2NyaXB0IDUqKidzIG5hdGl2ZSBgT2JqZWN0LmtleXNgCi0g
IF8ua2V5cyA9IG5hdGl2ZUtleXMgfHwgZnVuY3Rpb24ob2JqKSB7Ci0gICAgaWYgKG9iaiAhPT0g
T2JqZWN0KG9iaikpIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgb2JqZWN0Jyk7Ci0gICAg
dmFyIGtleXMgPSBbXTsKLSAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSBpZiAoXy5oYXMob2JqLCBr
ZXkpKSBrZXlzW2tleXMubGVuZ3RoXSA9IGtleTsKLSAgICByZXR1cm4ga2V5czsKLSAgfTsKLQot
ICAvLyBSZXRyaWV2ZSB0aGUgdmFsdWVzIG9mIGFuIG9iamVjdCdzIHByb3BlcnRpZXMuCi0gIF8u
dmFsdWVzID0gZnVuY3Rpb24ob2JqKSB7Ci0gICAgdmFyIHZhbHVlcyA9IFtdOwotICAgIGZvciAo
dmFyIGtleSBpbiBvYmopIGlmIChfLmhhcyhvYmosIGtleSkpIHZhbHVlcy5wdXNoKG9ialtrZXld
KTsKLSAgICByZXR1cm4gdmFsdWVzOwotICB9OwotCi0gIC8vIENvbnZlcnQgYW4gb2JqZWN0IGlu
dG8gYSBsaXN0IG9mIGBba2V5LCB2YWx1ZV1gIHBhaXJzLgotICBfLnBhaXJzID0gZnVuY3Rpb24o
b2JqKSB7Ci0gICAgdmFyIHBhaXJzID0gW107Ci0gICAgZm9yICh2YXIga2V5IGluIG9iaikgaWYg
KF8uaGFzKG9iaiwga2V5KSkgcGFpcnMucHVzaChba2V5LCBvYmpba2V5XV0pOwotICAgIHJldHVy
biBwYWlyczsKLSAgfTsKLQotICAvLyBJbnZlcnQgdGhlIGtleXMgYW5kIHZhbHVlcyBvZiBhbiBv
YmplY3QuIFRoZSB2YWx1ZXMgbXVzdCBiZSBzZXJpYWxpemFibGUuCi0gIF8uaW52ZXJ0ID0gZnVu
Y3Rpb24ob2JqKSB7Ci0gICAgdmFyIHJlc3VsdCA9IHt9OwotICAgIGZvciAodmFyIGtleSBpbiBv
YmopIGlmIChfLmhhcyhvYmosIGtleSkpIHJlc3VsdFtvYmpba2V5XV0gPSBrZXk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLSAgfTsKLQotICAvLyBSZXR1cm4gYSBzb3J0ZWQgbGlzdCBvZiB0aGUgZnVu
Y3Rpb24gbmFtZXMgYXZhaWxhYmxlIG9uIHRoZSBvYmplY3QuCi0gIC8vIEFsaWFzZWQgYXMgYG1l
dGhvZHNgCi0gIF8uZnVuY3Rpb25zID0gXy5tZXRob2RzID0gZnVuY3Rpb24ob2JqKSB7Ci0gICAg
dmFyIG5hbWVzID0gW107Ci0gICAgZm9yICh2YXIga2V5IGluIG9iaikgewotICAgICAgaWYgKF8u
aXNGdW5jdGlvbihvYmpba2V5XSkpIG5hbWVzLnB1c2goa2V5KTsKLSAgICB9Ci0gICAgcmV0dXJu
IG5hbWVzLnNvcnQoKTsKLSAgfTsKLQotICAvLyBFeHRlbmQgYSBnaXZlbiBvYmplY3Qgd2l0aCBh
bGwgdGhlIHByb3BlcnRpZXMgaW4gcGFzc2VkLWluIG9iamVjdChzKS4KLSAgXy5leHRlbmQgPSBm
dW5jdGlvbihvYmopIHsKLSAgICBlYWNoKHNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKSwgZnVuY3Rp
b24oc291cmNlKSB7Ci0gICAgICBpZiAoc291cmNlKSB7Ci0gICAgICAgIGZvciAodmFyIHByb3Ag
aW4gc291cmNlKSB7Ci0gICAgICAgICAgb2JqW3Byb3BdID0gc291cmNlW3Byb3BdOwotICAgICAg
ICB9Ci0gICAgICB9Ci0gICAgfSk7Ci0gICAgcmV0dXJuIG9iajsKLSAgfTsKLQotICAvLyBSZXR1
cm4gYSBjb3B5IG9mIHRoZSBvYmplY3Qgb25seSBjb250YWluaW5nIHRoZSB3aGl0ZWxpc3RlZCBw
cm9wZXJ0aWVzLgotICBfLnBpY2sgPSBmdW5jdGlvbihvYmopIHsKLSAgICB2YXIgY29weSA9IHt9
OwotICAgIHZhciBrZXlzID0gY29uY2F0LmFwcGx5KEFycmF5UHJvdG8sIHNsaWNlLmNhbGwoYXJn
dW1lbnRzLCAxKSk7Ci0gICAgZWFjaChrZXlzLCBmdW5jdGlvbihrZXkpIHsKLSAgICAgIGlmIChr
ZXkgaW4gb2JqKSBjb3B5W2tleV0gPSBvYmpba2V5XTsKLSAgICB9KTsKLSAgICByZXR1cm4gY29w
eTsKLSAgfTsKLQotICAgLy8gUmV0dXJuIGEgY29weSBvZiB0aGUgb2JqZWN0IHdpdGhvdXQgdGhl
IGJsYWNrbGlzdGVkIHByb3BlcnRpZXMuCi0gIF8ub21pdCA9IGZ1bmN0aW9uKG9iaikgewotICAg
IHZhciBjb3B5ID0ge307Ci0gICAgdmFyIGtleXMgPSBjb25jYXQuYXBwbHkoQXJyYXlQcm90bywg
c2xpY2UuY2FsbChhcmd1bWVudHMsIDEpKTsKLSAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSB7Ci0g
ICAgICBpZiAoIV8uY29udGFpbnMoa2V5cywga2V5KSkgY29weVtrZXldID0gb2JqW2tleV07Ci0g
ICAgfQotICAgIHJldHVybiBjb3B5OwotICB9OwotCi0gIC8vIEZpbGwgaW4gYSBnaXZlbiBvYmpl
Y3Qgd2l0aCBkZWZhdWx0IHByb3BlcnRpZXMuCi0gIF8uZGVmYXVsdHMgPSBmdW5jdGlvbihvYmop
IHsKLSAgICBlYWNoKHNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKSwgZnVuY3Rpb24oc291cmNlKSB7
Ci0gICAgICBpZiAoc291cmNlKSB7Ci0gICAgICAgIGZvciAodmFyIHByb3AgaW4gc291cmNlKSB7
Ci0gICAgICAgICAgaWYgKG9ialtwcm9wXSA9PSBudWxsKSBvYmpbcHJvcF0gPSBzb3VyY2VbcHJv
cF07Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9KTsKLSAgICByZXR1cm4gb2JqOwotICB9Owot
Ci0gIC8vIENyZWF0ZSBhIChzaGFsbG93LWNsb25lZCkgZHVwbGljYXRlIG9mIGFuIG9iamVjdC4K
LSAgXy5jbG9uZSA9IGZ1bmN0aW9uKG9iaikgewotICAgIGlmICghXy5pc09iamVjdChvYmopKSBy
ZXR1cm4gb2JqOwotICAgIHJldHVybiBfLmlzQXJyYXkob2JqKSA/IG9iai5zbGljZSgpIDogXy5l
eHRlbmQoe30sIG9iaik7Ci0gIH07Ci0KLSAgLy8gSW52b2tlcyBpbnRlcmNlcHRvciB3aXRoIHRo
ZSBvYmosIGFuZCB0aGVuIHJldHVybnMgb2JqLgotICAvLyBUaGUgcHJpbWFyeSBwdXJwb3NlIG9m
IHRoaXMgbWV0aG9kIGlzIHRvICJ0YXAgaW50byIgYSBtZXRob2QgY2hhaW4sIGluCi0gIC8vIG9y
ZGVyIHRvIHBlcmZvcm0gb3BlcmF0aW9ucyBvbiBpbnRlcm1lZGlhdGUgcmVzdWx0cyB3aXRoaW4g
dGhlIGNoYWluLgotICBfLnRhcCA9IGZ1bmN0aW9uKG9iaiwgaW50ZXJjZXB0b3IpIHsKLSAgICBp
bnRlcmNlcHRvcihvYmopOwotICAgIHJldHVybiBvYmo7Ci0gIH07Ci0KLSAgLy8gSW50ZXJuYWwg
cmVjdXJzaXZlIGNvbXBhcmlzb24gZnVuY3Rpb24gZm9yIGBpc0VxdWFsYC4KLSAgdmFyIGVxID0g
ZnVuY3Rpb24oYSwgYiwgYVN0YWNrLCBiU3RhY2spIHsKLSAgICAvLyBJZGVudGljYWwgb2JqZWN0
cyBhcmUgZXF1YWwuIGAwID09PSAtMGAsIGJ1dCB0aGV5IGFyZW4ndCBpZGVudGljYWwuCi0gICAg
Ly8gU2VlIHRoZSBIYXJtb255IGBlZ2FsYCBwcm9wb3NhbDogaHR0cDovL3dpa2kuZWNtYXNjcmlw
dC5vcmcvZG9rdS5waHA/aWQ9aGFybW9ueTplZ2FsLgotICAgIGlmIChhID09PSBiKSByZXR1cm4g
YSAhPT0gMCB8fCAxIC8gYSA9PSAxIC8gYjsKLSAgICAvLyBBIHN0cmljdCBjb21wYXJpc29uIGlz
IG5lY2Vzc2FyeSBiZWNhdXNlIGBudWxsID09IHVuZGVmaW5lZGAuCi0gICAgaWYgKGEgPT0gbnVs
bCB8fCBiID09IG51bGwpIHJldHVybiBhID09PSBiOwotICAgIC8vIFVud3JhcCBhbnkgd3JhcHBl
ZCBvYmplY3RzLgotICAgIGlmIChhIGluc3RhbmNlb2YgXykgYSA9IGEuX3dyYXBwZWQ7Ci0gICAg
aWYgKGIgaW5zdGFuY2VvZiBfKSBiID0gYi5fd3JhcHBlZDsKLSAgICAvLyBDb21wYXJlIGBbW0Ns
YXNzXV1gIG5hbWVzLgotICAgIHZhciBjbGFzc05hbWUgPSB0b1N0cmluZy5jYWxsKGEpOwotICAg
IGlmIChjbGFzc05hbWUgIT0gdG9TdHJpbmcuY2FsbChiKSkgcmV0dXJuIGZhbHNlOwotICAgIHN3
aXRjaCAoY2xhc3NOYW1lKSB7Ci0gICAgICAvLyBTdHJpbmdzLCBudW1iZXJzLCBkYXRlcywgYW5k
IGJvb2xlYW5zIGFyZSBjb21wYXJlZCBieSB2YWx1ZS4KLSAgICAgIGNhc2UgJ1tvYmplY3QgU3Ry
aW5nXSc6Ci0gICAgICAgIC8vIFByaW1pdGl2ZXMgYW5kIHRoZWlyIGNvcnJlc3BvbmRpbmcgb2Jq
ZWN0IHdyYXBwZXJzIGFyZSBlcXVpdmFsZW50OyB0aHVzLCBgIjUiYCBpcwotICAgICAgICAvLyBl
cXVpdmFsZW50IHRvIGBuZXcgU3RyaW5nKCI1IilgLgotICAgICAgICByZXR1cm4gYSA9PSBTdHJp
bmcoYik7Ci0gICAgICBjYXNlICdbb2JqZWN0IE51bWJlcl0nOgotICAgICAgICAvLyBgTmFOYHMg
YXJlIGVxdWl2YWxlbnQsIGJ1dCBub24tcmVmbGV4aXZlLiBBbiBgZWdhbGAgY29tcGFyaXNvbiBp
cyBwZXJmb3JtZWQgZm9yCi0gICAgICAgIC8vIG90aGVyIG51bWVyaWMgdmFsdWVzLgotICAgICAg
ICByZXR1cm4gYSAhPSArYSA/IGIgIT0gK2IgOiAoYSA9PSAwID8gMSAvIGEgPT0gMSAvIGIgOiBh
ID09ICtiKTsKLSAgICAgIGNhc2UgJ1tvYmplY3QgRGF0ZV0nOgotICAgICAgY2FzZSAnW29iamVj
dCBCb29sZWFuXSc6Ci0gICAgICAgIC8vIENvZXJjZSBkYXRlcyBhbmQgYm9vbGVhbnMgdG8gbnVt
ZXJpYyBwcmltaXRpdmUgdmFsdWVzLiBEYXRlcyBhcmUgY29tcGFyZWQgYnkgdGhlaXIKLSAgICAg
ICAgLy8gbWlsbGlzZWNvbmQgcmVwcmVzZW50YXRpb25zLiBOb3RlIHRoYXQgaW52YWxpZCBkYXRl
cyB3aXRoIG1pbGxpc2Vjb25kIHJlcHJlc2VudGF0aW9ucwotICAgICAgICAvLyBvZiBgTmFOYCBh
cmUgbm90IGVxdWl2YWxlbnQuCi0gICAgICAgIHJldHVybiArYSA9PSArYjsKLSAgICAgIC8vIFJl
Z0V4cHMgYXJlIGNvbXBhcmVkIGJ5IHRoZWlyIHNvdXJjZSBwYXR0ZXJucyBhbmQgZmxhZ3MuCi0g
ICAgICBjYXNlICdbb2JqZWN0IFJlZ0V4cF0nOgotICAgICAgICByZXR1cm4gYS5zb3VyY2UgPT0g
Yi5zb3VyY2UgJiYKLSAgICAgICAgICAgICAgIGEuZ2xvYmFsID09IGIuZ2xvYmFsICYmCi0gICAg
ICAgICAgICAgICBhLm11bHRpbGluZSA9PSBiLm11bHRpbGluZSAmJgotICAgICAgICAgICAgICAg
YS5pZ25vcmVDYXNlID09IGIuaWdub3JlQ2FzZTsKLSAgICB9Ci0gICAgaWYgKHR5cGVvZiBhICE9
ICdvYmplY3QnIHx8IHR5cGVvZiBiICE9ICdvYmplY3QnKSByZXR1cm4gZmFsc2U7Ci0gICAgLy8g
QXNzdW1lIGVxdWFsaXR5IGZvciBjeWNsaWMgc3RydWN0dXJlcy4gVGhlIGFsZ29yaXRobSBmb3Ig
ZGV0ZWN0aW5nIGN5Y2xpYwotICAgIC8vIHN0cnVjdHVyZXMgaXMgYWRhcHRlZCBmcm9tIEVTIDUu
MSBzZWN0aW9uIDE1LjEyLjMsIGFic3RyYWN0IG9wZXJhdGlvbiBgSk9gLgotICAgIHZhciBsZW5n
dGggPSBhU3RhY2subGVuZ3RoOwotICAgIHdoaWxlIChsZW5ndGgtLSkgewotICAgICAgLy8gTGlu
ZWFyIHNlYXJjaC4gUGVyZm9ybWFuY2UgaXMgaW52ZXJzZWx5IHByb3BvcnRpb25hbCB0byB0aGUg
bnVtYmVyIG9mCi0gICAgICAvLyB1bmlxdWUgbmVzdGVkIHN0cnVjdHVyZXMuCi0gICAgICBpZiAo
YVN0YWNrW2xlbmd0aF0gPT0gYSkgcmV0dXJuIGJTdGFja1tsZW5ndGhdID09IGI7Ci0gICAgfQot
ICAgIC8vIEFkZCB0aGUgZmlyc3Qgb2JqZWN0IHRvIHRoZSBzdGFjayBvZiB0cmF2ZXJzZWQgb2Jq
ZWN0cy4KLSAgICBhU3RhY2sucHVzaChhKTsKLSAgICBiU3RhY2sucHVzaChiKTsKLSAgICB2YXIg
c2l6ZSA9IDAsIHJlc3VsdCA9IHRydWU7Ci0gICAgLy8gUmVjdXJzaXZlbHkgY29tcGFyZSBvYmpl
Y3RzIGFuZCBhcnJheXMuCi0gICAgaWYgKGNsYXNzTmFtZSA9PSAnW29iamVjdCBBcnJheV0nKSB7
Ci0gICAgICAvLyBDb21wYXJlIGFycmF5IGxlbmd0aHMgdG8gZGV0ZXJtaW5lIGlmIGEgZGVlcCBj
b21wYXJpc29uIGlzIG5lY2Vzc2FyeS4KLSAgICAgIHNpemUgPSBhLmxlbmd0aDsKLSAgICAgIHJl
c3VsdCA9IHNpemUgPT0gYi5sZW5ndGg7Ci0gICAgICBpZiAocmVzdWx0KSB7Ci0gICAgICAgIC8v
IERlZXAgY29tcGFyZSB0aGUgY29udGVudHMsIGlnbm9yaW5nIG5vbi1udW1lcmljIHByb3BlcnRp
ZXMuCi0gICAgICAgIHdoaWxlIChzaXplLS0pIHsKLSAgICAgICAgICBpZiAoIShyZXN1bHQgPSBl
cShhW3NpemVdLCBiW3NpemVdLCBhU3RhY2ssIGJTdGFjaykpKSBicmVhazsKLSAgICAgICAgfQot
ICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAvLyBPYmplY3RzIHdpdGggZGlmZmVyZW50IGNv
bnN0cnVjdG9ycyBhcmUgbm90IGVxdWl2YWxlbnQsIGJ1dCBgT2JqZWN0YHMKLSAgICAgIC8vIGZy
b20gZGlmZmVyZW50IGZyYW1lcyBhcmUuCi0gICAgICB2YXIgYUN0b3IgPSBhLmNvbnN0cnVjdG9y
LCBiQ3RvciA9IGIuY29uc3RydWN0b3I7Ci0gICAgICBpZiAoYUN0b3IgIT09IGJDdG9yICYmICEo
Xy5pc0Z1bmN0aW9uKGFDdG9yKSAmJiAoYUN0b3IgaW5zdGFuY2VvZiBhQ3RvcikgJiYKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBfLmlzRnVuY3Rpb24oYkN0b3IpICYmIChiQ3RvciBp
bnN0YW5jZW9mIGJDdG9yKSkpIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAg
ICAgLy8gRGVlcCBjb21wYXJlIG9iamVjdHMuCi0gICAgICBmb3IgKHZhciBrZXkgaW4gYSkgewot
ICAgICAgICBpZiAoXy5oYXMoYSwga2V5KSkgewotICAgICAgICAgIC8vIENvdW50IHRoZSBleHBl
Y3RlZCBudW1iZXIgb2YgcHJvcGVydGllcy4KLSAgICAgICAgICBzaXplKys7Ci0gICAgICAgICAg
Ly8gRGVlcCBjb21wYXJlIGVhY2ggbWVtYmVyLgotICAgICAgICAgIGlmICghKHJlc3VsdCA9IF8u
aGFzKGIsIGtleSkgJiYgZXEoYVtrZXldLCBiW2tleV0sIGFTdGFjaywgYlN0YWNrKSkpIGJyZWFr
OwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICAvLyBFbnN1cmUgdGhhdCBib3RoIG9iamVjdHMg
Y29udGFpbiB0aGUgc2FtZSBudW1iZXIgb2YgcHJvcGVydGllcy4KLSAgICAgIGlmIChyZXN1bHQp
IHsKLSAgICAgICAgZm9yIChrZXkgaW4gYikgewotICAgICAgICAgIGlmIChfLmhhcyhiLCBrZXkp
ICYmICEoc2l6ZS0tKSkgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgcmVzdWx0ID0gIXNpemU7
Ci0gICAgICB9Ci0gICAgfQotICAgIC8vIFJlbW92ZSB0aGUgZmlyc3Qgb2JqZWN0IGZyb20gdGhl
IHN0YWNrIG9mIHRyYXZlcnNlZCBvYmplY3RzLgotICAgIGFTdGFjay5wb3AoKTsKLSAgICBiU3Rh
Y2sucG9wKCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSAgfTsKLQotICAvLyBQZXJmb3JtIGEgZGVl
cCBjb21wYXJpc29uIHRvIGNoZWNrIGlmIHR3byBvYmplY3RzIGFyZSBlcXVhbC4KLSAgXy5pc0Vx
dWFsID0gZnVuY3Rpb24oYSwgYikgewotICAgIHJldHVybiBlcShhLCBiLCBbXSwgW10pOwotICB9
OwotCi0gIC8vIElzIGEgZ2l2ZW4gYXJyYXksIHN0cmluZywgb3Igb2JqZWN0IGVtcHR5PwotICAv
LyBBbiAiZW1wdHkiIG9iamVjdCBoYXMgbm8gZW51bWVyYWJsZSBvd24tcHJvcGVydGllcy4KLSAg
Xy5pc0VtcHR5ID0gZnVuY3Rpb24ob2JqKSB7Ci0gICAgaWYgKG9iaiA9PSBudWxsKSByZXR1cm4g
dHJ1ZTsKLSAgICBpZiAoXy5pc0FycmF5KG9iaikgfHwgXy5pc1N0cmluZyhvYmopKSByZXR1cm4g
b2JqLmxlbmd0aCA9PT0gMDsKLSAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSBpZiAoXy5oYXMob2Jq
LCBrZXkpKSByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH07Ci0KLSAgLy8gSXMg
YSBnaXZlbiB2YWx1ZSBhIERPTSBlbGVtZW50PwotICBfLmlzRWxlbWVudCA9IGZ1bmN0aW9uKG9i
aikgewotICAgIHJldHVybiAhIShvYmogJiYgb2JqLm5vZGVUeXBlID09PSAxKTsKLSAgfTsKLQot
ICAvLyBJcyBhIGdpdmVuIHZhbHVlIGFuIGFycmF5PwotICAvLyBEZWxlZ2F0ZXMgdG8gRUNNQTUn
cyBuYXRpdmUgQXJyYXkuaXNBcnJheQotICBfLmlzQXJyYXkgPSBuYXRpdmVJc0FycmF5IHx8IGZ1
bmN0aW9uKG9iaikgewotICAgIHJldHVybiB0b1N0cmluZy5jYWxsKG9iaikgPT0gJ1tvYmplY3Qg
QXJyYXldJzsKLSAgfTsKLQotICAvLyBJcyBhIGdpdmVuIHZhcmlhYmxlIGFuIG9iamVjdD8KLSAg
Xy5pc09iamVjdCA9IGZ1bmN0aW9uKG9iaikgewotICAgIHJldHVybiBvYmogPT09IE9iamVjdChv
YmopOwotICB9OwotCi0gIC8vIEFkZCBzb21lIGlzVHlwZSBtZXRob2RzOiBpc0FyZ3VtZW50cywg
aXNGdW5jdGlvbiwgaXNTdHJpbmcsIGlzTnVtYmVyLCBpc0RhdGUsIGlzUmVnRXhwLgotICBlYWNo
KFsnQXJndW1lbnRzJywgJ0Z1bmN0aW9uJywgJ1N0cmluZycsICdOdW1iZXInLCAnRGF0ZScsICdS
ZWdFeHAnXSwgZnVuY3Rpb24obmFtZSkgewotICAgIF9bJ2lzJyArIG5hbWVdID0gZnVuY3Rpb24o
b2JqKSB7Ci0gICAgICByZXR1cm4gdG9TdHJpbmcuY2FsbChvYmopID09ICdbb2JqZWN0ICcgKyBu
YW1lICsgJ10nOwotICAgIH07Ci0gIH0pOwotCi0gIC8vIERlZmluZSBhIGZhbGxiYWNrIHZlcnNp
b24gb2YgdGhlIG1ldGhvZCBpbiBicm93c2VycyAoYWhlbSwgSUUpLCB3aGVyZQotICAvLyB0aGVy
ZSBpc24ndCBhbnkgaW5zcGVjdGFibGUgIkFyZ3VtZW50cyIgdHlwZS4KLSAgaWYgKCFfLmlzQXJn
dW1lbnRzKGFyZ3VtZW50cykpIHsKLSAgICBfLmlzQXJndW1lbnRzID0gZnVuY3Rpb24ob2JqKSB7
Ci0gICAgICByZXR1cm4gISEob2JqICYmIF8uaGFzKG9iaiwgJ2NhbGxlZScpKTsKLSAgICB9Owot
ICB9Ci0KLSAgLy8gT3B0aW1pemUgYGlzRnVuY3Rpb25gIGlmIGFwcHJvcHJpYXRlLgotICBpZiAo
dHlwZW9mICgvLi8pICE9PSAnZnVuY3Rpb24nKSB7Ci0gICAgXy5pc0Z1bmN0aW9uID0gZnVuY3Rp
b24ob2JqKSB7Ci0gICAgICByZXR1cm4gdHlwZW9mIG9iaiA9PT0gJ2Z1bmN0aW9uJzsKLSAgICB9
OwotICB9Ci0KLSAgLy8gSXMgYSBnaXZlbiBvYmplY3QgYSBmaW5pdGUgbnVtYmVyPwotICBfLmlz
RmluaXRlID0gZnVuY3Rpb24ob2JqKSB7Ci0gICAgcmV0dXJuIGlzRmluaXRlKG9iaikgJiYgIWlz
TmFOKHBhcnNlRmxvYXQob2JqKSk7Ci0gIH07Ci0KLSAgLy8gSXMgdGhlIGdpdmVuIHZhbHVlIGBO
YU5gPyAoTmFOIGlzIHRoZSBvbmx5IG51bWJlciB3aGljaCBkb2VzIG5vdCBlcXVhbCBpdHNlbGYp
LgotICBfLmlzTmFOID0gZnVuY3Rpb24ob2JqKSB7Ci0gICAgcmV0dXJuIF8uaXNOdW1iZXIob2Jq
KSAmJiBvYmogIT0gK29iajsKLSAgfTsKLQotICAvLyBJcyBhIGdpdmVuIHZhbHVlIGEgYm9vbGVh
bj8KLSAgXy5pc0Jvb2xlYW4gPSBmdW5jdGlvbihvYmopIHsKLSAgICByZXR1cm4gb2JqID09PSB0
cnVlIHx8IG9iaiA9PT0gZmFsc2UgfHwgdG9TdHJpbmcuY2FsbChvYmopID09ICdbb2JqZWN0IEJv
b2xlYW5dJzsKLSAgfTsKLQotICAvLyBJcyBhIGdpdmVuIHZhbHVlIGVxdWFsIHRvIG51bGw/Ci0g
IF8uaXNOdWxsID0gZnVuY3Rpb24ob2JqKSB7Ci0gICAgcmV0dXJuIG9iaiA9PT0gbnVsbDsKLSAg
fTsKLQotICAvLyBJcyBhIGdpdmVuIHZhcmlhYmxlIHVuZGVmaW5lZD8KLSAgXy5pc1VuZGVmaW5l
ZCA9IGZ1bmN0aW9uKG9iaikgewotICAgIHJldHVybiBvYmogPT09IHZvaWQgMDsKLSAgfTsKLQot
ICAvLyBTaG9ydGN1dCBmdW5jdGlvbiBmb3IgY2hlY2tpbmcgaWYgYW4gb2JqZWN0IGhhcyBhIGdp
dmVuIHByb3BlcnR5IGRpcmVjdGx5Ci0gIC8vIG9uIGl0c2VsZiAoaW4gb3RoZXIgd29yZHMsIG5v
dCBvbiBhIHByb3RvdHlwZSkuCi0gIF8uaGFzID0gZnVuY3Rpb24ob2JqLCBrZXkpIHsKLSAgICBy
ZXR1cm4gaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSk7Ci0gIH07Ci0KLSAgLy8gVXRpbGl0
eSBGdW5jdGlvbnMKLSAgLy8gLS0tLS0tLS0tLS0tLS0tLS0KLQotICAvLyBSdW4gVW5kZXJzY29y
ZS5qcyBpbiAqbm9Db25mbGljdCogbW9kZSwgcmV0dXJuaW5nIHRoZSBgX2AgdmFyaWFibGUgdG8g
aXRzCi0gIC8vIHByZXZpb3VzIG93bmVyLiBSZXR1cm5zIGEgcmVmZXJlbmNlIHRvIHRoZSBVbmRl
cnNjb3JlIG9iamVjdC4KLSAgXy5ub0NvbmZsaWN0ID0gZnVuY3Rpb24oKSB7Ci0gICAgcm9vdC5f
ID0gcHJldmlvdXNVbmRlcnNjb3JlOwotICAgIHJldHVybiB0aGlzOwotICB9OwotCi0gIC8vIEtl
ZXAgdGhlIGlkZW50aXR5IGZ1bmN0aW9uIGFyb3VuZCBmb3IgZGVmYXVsdCBpdGVyYXRvcnMuCi0g
IF8uaWRlbnRpdHkgPSBmdW5jdGlvbih2YWx1ZSkgewotICAgIHJldHVybiB2YWx1ZTsKLSAgfTsK
LQotICAvLyBSdW4gYSBmdW5jdGlvbiAqKm4qKiB0aW1lcy4KLSAgXy50aW1lcyA9IGZ1bmN0aW9u
KG4sIGl0ZXJhdG9yLCBjb250ZXh0KSB7Ci0gICAgdmFyIGFjY3VtID0gQXJyYXkobik7Ci0gICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBuOyBpKyspIGFjY3VtW2ldID0gaXRlcmF0b3IuY2FsbChjb250
ZXh0LCBpKTsKLSAgICByZXR1cm4gYWNjdW07Ci0gIH07Ci0KLSAgLy8gUmV0dXJuIGEgcmFuZG9t
IGludGVnZXIgYmV0d2VlbiBtaW4gYW5kIG1heCAoaW5jbHVzaXZlKS4KLSAgXy5yYW5kb20gPSBm
dW5jdGlvbihtaW4sIG1heCkgewotICAgIGlmIChtYXggPT0gbnVsbCkgewotICAgICAgbWF4ID0g
bWluOwotICAgICAgbWluID0gMDsKLSAgICB9Ci0gICAgcmV0dXJuIG1pbiArIE1hdGguZmxvb3Io
TWF0aC5yYW5kb20oKSAqIChtYXggLSBtaW4gKyAxKSk7Ci0gIH07Ci0KLSAgLy8gTGlzdCBvZiBI
VE1MIGVudGl0aWVzIGZvciBlc2NhcGluZy4KLSAgdmFyIGVudGl0eU1hcCA9IHsKLSAgICBlc2Nh
cGU6IHsKLSAgICAgICcmJzogJyZhbXA7JywKLSAgICAgICc8JzogJyZsdDsnLAotICAgICAgJz4n
OiAnJmd0OycsCi0gICAgICAnIic6ICcmcXVvdDsnLAotICAgICAgIiciOiAnJiN4Mjc7JywKLSAg
ICAgICcvJzogJyYjeDJGOycKLSAgICB9Ci0gIH07Ci0gIGVudGl0eU1hcC51bmVzY2FwZSA9IF8u
aW52ZXJ0KGVudGl0eU1hcC5lc2NhcGUpOwotCi0gIC8vIFJlZ2V4ZXMgY29udGFpbmluZyB0aGUg
a2V5cyBhbmQgdmFsdWVzIGxpc3RlZCBpbW1lZGlhdGVseSBhYm92ZS4KLSAgdmFyIGVudGl0eVJl
Z2V4ZXMgPSB7Ci0gICAgZXNjYXBlOiAgIG5ldyBSZWdFeHAoJ1snICsgXy5rZXlzKGVudGl0eU1h
cC5lc2NhcGUpLmpvaW4oJycpICsgJ10nLCAnZycpLAotICAgIHVuZXNjYXBlOiBuZXcgUmVnRXhw
KCcoJyArIF8ua2V5cyhlbnRpdHlNYXAudW5lc2NhcGUpLmpvaW4oJ3wnKSArICcpJywgJ2cnKQot
ICB9OwotCi0gIC8vIEZ1bmN0aW9ucyBmb3IgZXNjYXBpbmcgYW5kIHVuZXNjYXBpbmcgc3RyaW5n
cyB0by9mcm9tIEhUTUwgaW50ZXJwb2xhdGlvbi4KLSAgXy5lYWNoKFsnZXNjYXBlJywgJ3VuZXNj
YXBlJ10sIGZ1bmN0aW9uKG1ldGhvZCkgewotICAgIF9bbWV0aG9kXSA9IGZ1bmN0aW9uKHN0cmlu
ZykgewotICAgICAgaWYgKHN0cmluZyA9PSBudWxsKSByZXR1cm4gJyc7Ci0gICAgICByZXR1cm4g
KCcnICsgc3RyaW5nKS5yZXBsYWNlKGVudGl0eVJlZ2V4ZXNbbWV0aG9kXSwgZnVuY3Rpb24obWF0
Y2gpIHsKLSAgICAgICAgcmV0dXJuIGVudGl0eU1hcFttZXRob2RdW21hdGNoXTsKLSAgICAgIH0p
OwotICAgIH07Ci0gIH0pOwotCi0gIC8vIElmIHRoZSB2YWx1ZSBvZiB0aGUgbmFtZWQgcHJvcGVy
dHkgaXMgYSBmdW5jdGlvbiB0aGVuIGludm9rZSBpdDsKLSAgLy8gb3RoZXJ3aXNlLCByZXR1cm4g
aXQuCi0gIF8ucmVzdWx0ID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgewotICAgIGlmIChv
YmplY3QgPT0gbnVsbCkgcmV0dXJuIG51bGw7Ci0gICAgdmFyIHZhbHVlID0gb2JqZWN0W3Byb3Bl
cnR5XTsKLSAgICByZXR1cm4gXy5pc0Z1bmN0aW9uKHZhbHVlKSA/IHZhbHVlLmNhbGwob2JqZWN0
KSA6IHZhbHVlOwotICB9OwotCi0gIC8vIEFkZCB5b3VyIG93biBjdXN0b20gZnVuY3Rpb25zIHRv
IHRoZSBVbmRlcnNjb3JlIG9iamVjdC4KLSAgXy5taXhpbiA9IGZ1bmN0aW9uKG9iaikgewotICAg
IGVhY2goXy5mdW5jdGlvbnMob2JqKSwgZnVuY3Rpb24obmFtZSl7Ci0gICAgICB2YXIgZnVuYyA9
IF9bbmFtZV0gPSBvYmpbbmFtZV07Ci0gICAgICBfLnByb3RvdHlwZVtuYW1lXSA9IGZ1bmN0aW9u
KCkgewotICAgICAgICB2YXIgYXJncyA9IFt0aGlzLl93cmFwcGVkXTsKLSAgICAgICAgcHVzaC5h
cHBseShhcmdzLCBhcmd1bWVudHMpOwotICAgICAgICByZXR1cm4gcmVzdWx0LmNhbGwodGhpcywg
ZnVuYy5hcHBseShfLCBhcmdzKSk7Ci0gICAgICB9OwotICAgIH0pOwotICB9OwotCi0gIC8vIEdl
bmVyYXRlIGEgdW5pcXVlIGludGVnZXIgaWQgKHVuaXF1ZSB3aXRoaW4gdGhlIGVudGlyZSBjbGll
bnQgc2Vzc2lvbikuCi0gIC8vIFVzZWZ1bCBmb3IgdGVtcG9yYXJ5IERPTSBpZHMuCi0gIHZhciBp
ZENvdW50ZXIgPSAwOwotICBfLnVuaXF1ZUlkID0gZnVuY3Rpb24ocHJlZml4KSB7Ci0gICAgdmFy
IGlkID0gKytpZENvdW50ZXIgKyAnJzsKLSAgICByZXR1cm4gcHJlZml4ID8gcHJlZml4ICsgaWQg
OiBpZDsKLSAgfTsKLQotICAvLyBCeSBkZWZhdWx0LCBVbmRlcnNjb3JlIHVzZXMgRVJCLXN0eWxl
IHRlbXBsYXRlIGRlbGltaXRlcnMsIGNoYW5nZSB0aGUKLSAgLy8gZm9sbG93aW5nIHRlbXBsYXRl
IHNldHRpbmdzIHRvIHVzZSBhbHRlcm5hdGl2ZSBkZWxpbWl0ZXJzLgotICBfLnRlbXBsYXRlU2V0
dGluZ3MgPSB7Ci0gICAgZXZhbHVhdGUgICAgOiAvPCUoW1xzXFNdKz8pJT4vZywKLSAgICBpbnRl
cnBvbGF0ZSA6IC88JT0oW1xzXFNdKz8pJT4vZywKLSAgICBlc2NhcGUgICAgICA6IC88JS0oW1xz
XFNdKz8pJT4vZwotICB9OwotCi0gIC8vIFdoZW4gY3VzdG9taXppbmcgYHRlbXBsYXRlU2V0dGlu
Z3NgLCBpZiB5b3UgZG9uJ3Qgd2FudCB0byBkZWZpbmUgYW4KLSAgLy8gaW50ZXJwb2xhdGlvbiwg
ZXZhbHVhdGlvbiBvciBlc2NhcGluZyByZWdleCwgd2UgbmVlZCBvbmUgdGhhdCBpcwotICAvLyBn
dWFyYW50ZWVkIG5vdCB0byBtYXRjaC4KLSAgdmFyIG5vTWF0Y2ggPSAvKC4pXi87Ci0KLSAgLy8g
Q2VydGFpbiBjaGFyYWN0ZXJzIG5lZWQgdG8gYmUgZXNjYXBlZCBzbyB0aGF0IHRoZXkgY2FuIGJl
IHB1dCBpbnRvIGEKLSAgLy8gc3RyaW5nIGxpdGVyYWwuCi0gIHZhciBlc2NhcGVzID0gewotICAg
ICInIjogICAgICAiJyIsCi0gICAgJ1xcJzogICAgICdcXCcsCi0gICAgJ1xyJzogICAgICdyJywK
LSAgICAnXG4nOiAgICAgJ24nLAotICAgICdcdCc6ICAgICAndCcsCi0gICAgJ1x1MjAyOCc6ICd1
MjAyOCcsCi0gICAgJ1x1MjAyOSc6ICd1MjAyOScKLSAgfTsKLQotICB2YXIgZXNjYXBlciA9IC9c
XHwnfFxyfFxufFx0fFx1MjAyOHxcdTIwMjkvZzsKLQotICAvLyBKYXZhU2NyaXB0IG1pY3JvLXRl
bXBsYXRpbmcsIHNpbWlsYXIgdG8gSm9obiBSZXNpZydzIGltcGxlbWVudGF0aW9uLgotICAvLyBV
bmRlcnNjb3JlIHRlbXBsYXRpbmcgaGFuZGxlcyBhcmJpdHJhcnkgZGVsaW1pdGVycywgcHJlc2Vy
dmVzIHdoaXRlc3BhY2UsCi0gIC8vIGFuZCBjb3JyZWN0bHkgZXNjYXBlcyBxdW90ZXMgd2l0aGlu
IGludGVycG9sYXRlZCBjb2RlLgotICBfLnRlbXBsYXRlID0gZnVuY3Rpb24odGV4dCwgZGF0YSwg
c2V0dGluZ3MpIHsKLSAgICB2YXIgcmVuZGVyOwotICAgIHNldHRpbmdzID0gXy5kZWZhdWx0cyh7
fSwgc2V0dGluZ3MsIF8udGVtcGxhdGVTZXR0aW5ncyk7Ci0KLSAgICAvLyBDb21iaW5lIGRlbGlt
aXRlcnMgaW50byBvbmUgcmVndWxhciBleHByZXNzaW9uIHZpYSBhbHRlcm5hdGlvbi4KLSAgICB2
YXIgbWF0Y2hlciA9IG5ldyBSZWdFeHAoWwotICAgICAgKHNldHRpbmdzLmVzY2FwZSB8fCBub01h
dGNoKS5zb3VyY2UsCi0gICAgICAoc2V0dGluZ3MuaW50ZXJwb2xhdGUgfHwgbm9NYXRjaCkuc291
cmNlLAotICAgICAgKHNldHRpbmdzLmV2YWx1YXRlIHx8IG5vTWF0Y2gpLnNvdXJjZQotICAgIF0u
am9pbignfCcpICsgJ3wkJywgJ2cnKTsKLQotICAgIC8vIENvbXBpbGUgdGhlIHRlbXBsYXRlIHNv
dXJjZSwgZXNjYXBpbmcgc3RyaW5nIGxpdGVyYWxzIGFwcHJvcHJpYXRlbHkuCi0gICAgdmFyIGlu
ZGV4ID0gMDsKLSAgICB2YXIgc291cmNlID0gIl9fcCs9JyI7Ci0gICAgdGV4dC5yZXBsYWNlKG1h
dGNoZXIsIGZ1bmN0aW9uKG1hdGNoLCBlc2NhcGUsIGludGVycG9sYXRlLCBldmFsdWF0ZSwgb2Zm
c2V0KSB7Ci0gICAgICBzb3VyY2UgKz0gdGV4dC5zbGljZShpbmRleCwgb2Zmc2V0KQotICAgICAg
ICAucmVwbGFjZShlc2NhcGVyLCBmdW5jdGlvbihtYXRjaCkgeyByZXR1cm4gJ1xcJyArIGVzY2Fw
ZXNbbWF0Y2hdOyB9KTsKLQotICAgICAgaWYgKGVzY2FwZSkgewotICAgICAgICBzb3VyY2UgKz0g
IicrXG4oKF9fdD0oIiArIGVzY2FwZSArICIpKT09bnVsbD8nJzpfLmVzY2FwZShfX3QpKStcbici
OwotICAgICAgfQotICAgICAgaWYgKGludGVycG9sYXRlKSB7Ci0gICAgICAgIHNvdXJjZSArPSAi
JytcbigoX190PSgiICsgaW50ZXJwb2xhdGUgKyAiKSk9PW51bGw/Jyc6X190KStcbiciOwotICAg
ICAgfQotICAgICAgaWYgKGV2YWx1YXRlKSB7Ci0gICAgICAgIHNvdXJjZSArPSAiJztcbiIgKyBl
dmFsdWF0ZSArICJcbl9fcCs9JyI7Ci0gICAgICB9Ci0gICAgICBpbmRleCA9IG9mZnNldCArIG1h
dGNoLmxlbmd0aDsKLSAgICAgIHJldHVybiBtYXRjaDsKLSAgICB9KTsKLSAgICBzb3VyY2UgKz0g
Iic7XG4iOwotCi0gICAgLy8gSWYgYSB2YXJpYWJsZSBpcyBub3Qgc3BlY2lmaWVkLCBwbGFjZSBk
YXRhIHZhbHVlcyBpbiBsb2NhbCBzY29wZS4KLSAgICBpZiAoIXNldHRpbmdzLnZhcmlhYmxlKSBz
b3VyY2UgPSAnd2l0aChvYmp8fHt9KXtcbicgKyBzb3VyY2UgKyAnfVxuJzsKLQotICAgIHNvdXJj
ZSA9ICJ2YXIgX190LF9fcD0nJyxfX2o9QXJyYXkucHJvdG90eXBlLmpvaW4sIiArCi0gICAgICAi
cHJpbnQ9ZnVuY3Rpb24oKXtfX3ArPV9fai5jYWxsKGFyZ3VtZW50cywnJyk7fTtcbiIgKwotICAg
ICAgc291cmNlICsgInJldHVybiBfX3A7XG4iOwotCi0gICAgdHJ5IHsKLSAgICAgIHJlbmRlciA9
IG5ldyBGdW5jdGlvbihzZXR0aW5ncy52YXJpYWJsZSB8fCAnb2JqJywgJ18nLCBzb3VyY2UpOwot
ICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgIGUuc291cmNlID0gc291cmNlOwotICAgICAgdGhyb3cg
ZTsKLSAgICB9Ci0KLSAgICBpZiAoZGF0YSkgcmV0dXJuIHJlbmRlcihkYXRhLCBfKTsKLSAgICB2
YXIgdGVtcGxhdGUgPSBmdW5jdGlvbihkYXRhKSB7Ci0gICAgICByZXR1cm4gcmVuZGVyLmNhbGwo
dGhpcywgZGF0YSwgXyk7Ci0gICAgfTsKLQotICAgIC8vIFByb3ZpZGUgdGhlIGNvbXBpbGVkIGZ1
bmN0aW9uIHNvdXJjZSBhcyBhIGNvbnZlbmllbmNlIGZvciBwcmVjb21waWxhdGlvbi4KLSAgICB0
ZW1wbGF0ZS5zb3VyY2UgPSAnZnVuY3Rpb24oJyArIChzZXR0aW5ncy52YXJpYWJsZSB8fCAnb2Jq
JykgKyAnKXtcbicgKyBzb3VyY2UgKyAnfSc7Ci0KLSAgICByZXR1cm4gdGVtcGxhdGU7Ci0gIH07
Ci0KLSAgLy8gQWRkIGEgImNoYWluIiBmdW5jdGlvbiwgd2hpY2ggd2lsbCBkZWxlZ2F0ZSB0byB0
aGUgd3JhcHBlci4KLSAgXy5jaGFpbiA9IGZ1bmN0aW9uKG9iaikgewotICAgIHJldHVybiBfKG9i
aikuY2hhaW4oKTsKLSAgfTsKLQotICAvLyBPT1AKLSAgLy8gLS0tLS0tLS0tLS0tLS0tCi0gIC8v
IElmIFVuZGVyc2NvcmUgaXMgY2FsbGVkIGFzIGEgZnVuY3Rpb24sIGl0IHJldHVybnMgYSB3cmFw
cGVkIG9iamVjdCB0aGF0Ci0gIC8vIGNhbiBiZSB1c2VkIE9PLXN0eWxlLiBUaGlzIHdyYXBwZXIg
aG9sZHMgYWx0ZXJlZCB2ZXJzaW9ucyBvZiBhbGwgdGhlCi0gIC8vIHVuZGVyc2NvcmUgZnVuY3Rp
b25zLiBXcmFwcGVkIG9iamVjdHMgbWF5IGJlIGNoYWluZWQuCi0KLSAgLy8gSGVscGVyIGZ1bmN0
aW9uIHRvIGNvbnRpbnVlIGNoYWluaW5nIGludGVybWVkaWF0ZSByZXN1bHRzLgotICB2YXIgcmVz
dWx0ID0gZnVuY3Rpb24ob2JqKSB7Ci0gICAgcmV0dXJuIHRoaXMuX2NoYWluID8gXyhvYmopLmNo
YWluKCkgOiBvYmo7Ci0gIH07Ci0KLSAgLy8gQWRkIGFsbCBvZiB0aGUgVW5kZXJzY29yZSBmdW5j
dGlvbnMgdG8gdGhlIHdyYXBwZXIgb2JqZWN0LgotICBfLm1peGluKF8pOwotCi0gIC8vIEFkZCBh
bGwgbXV0YXRvciBBcnJheSBmdW5jdGlvbnMgdG8gdGhlIHdyYXBwZXIuCi0gIGVhY2goWydwb3An
LCAncHVzaCcsICdyZXZlcnNlJywgJ3NoaWZ0JywgJ3NvcnQnLCAnc3BsaWNlJywgJ3Vuc2hpZnQn
XSwgZnVuY3Rpb24obmFtZSkgewotICAgIHZhciBtZXRob2QgPSBBcnJheVByb3RvW25hbWVdOwot
ICAgIF8ucHJvdG90eXBlW25hbWVdID0gZnVuY3Rpb24oKSB7Ci0gICAgICB2YXIgb2JqID0gdGhp
cy5fd3JhcHBlZDsKLSAgICAgIG1ldGhvZC5hcHBseShvYmosIGFyZ3VtZW50cyk7Ci0gICAgICBp
ZiAoKG5hbWUgPT0gJ3NoaWZ0JyB8fCBuYW1lID09ICdzcGxpY2UnKSAmJiBvYmoubGVuZ3RoID09
PSAwKSBkZWxldGUgb2JqWzBdOwotICAgICAgcmV0dXJuIHJlc3VsdC5jYWxsKHRoaXMsIG9iaik7
Ci0gICAgfTsKLSAgfSk7Ci0KLSAgLy8gQWRkIGFsbCBhY2Nlc3NvciBBcnJheSBmdW5jdGlvbnMg
dG8gdGhlIHdyYXBwZXIuCi0gIGVhY2goWydjb25jYXQnLCAnam9pbicsICdzbGljZSddLCBmdW5j
dGlvbihuYW1lKSB7Ci0gICAgdmFyIG1ldGhvZCA9IEFycmF5UHJvdG9bbmFtZV07Ci0gICAgXy5w
cm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbigpIHsKLSAgICAgIHJldHVybiByZXN1bHQuY2FsbCh0
aGlzLCBtZXRob2QuYXBwbHkodGhpcy5fd3JhcHBlZCwgYXJndW1lbnRzKSk7Ci0gICAgfTsKLSAg
fSk7Ci0KLSAgXy5leHRlbmQoXy5wcm90b3R5cGUsIHsKLQotICAgIC8vIFN0YXJ0IGNoYWluaW5n
IGEgd3JhcHBlZCBVbmRlcnNjb3JlIG9iamVjdC4KLSAgICBjaGFpbjogZnVuY3Rpb24oKSB7Ci0g
ICAgICB0aGlzLl9jaGFpbiA9IHRydWU7Ci0gICAgICByZXR1cm4gdGhpczsKLSAgICB9LAotCi0g
ICAgLy8gRXh0cmFjdHMgdGhlIHJlc3VsdCBmcm9tIGEgd3JhcHBlZCBhbmQgY2hhaW5lZCBvYmpl
Y3QuCi0gICAgdmFsdWU6IGZ1bmN0aW9uKCkgewotICAgICAgcmV0dXJuIHRoaXMuX3dyYXBwZWQ7
Ci0gICAgfQotCi0gIH0pOwotCi19KS5jYWxsKHRoaXMpOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvYmFja2JvbmUvaW5kZXguaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL2luZGV4Lmh0bWwK
aW5kZXggZDYzYTMwZWI0MDE4MjIwNzIzOGNkYjJmY2ZkMzJkYWJjNGM3NDMzNC4uYWEyMTQ3MzNl
ZDdmNzVmMTBjNTNiY2FmMDJmMjA2YjNkNTVlMjFiYSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
YmFja2JvbmUvaW5kZXguaHRtbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9pbmRleC5odG1s
CkBAIC0xLDY0ICsxLDY0IEBACiA8IWRvY3R5cGUgaHRtbD4KIDxodG1sIGxhbmc9ImVuIiBkYXRh
LWZyYW1ld29yaz0iYmFja2JvbmVqcyI+CiAgICAgPGhlYWQ+Ci0gICAgPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgotICAgIDxtZXRhIGh0dHAtZXF1aXY9IlgtVUEtQ29tcGF0aWJsZSIgY29udGVudD0i
SUU9ZWRnZSI+Ci0gICAgPHRpdGxlPkJhY2tib25lLmpzIOKAoiBUb2RvTVZDPC90aXRsZT4KLSAg
ICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9ImJvd2VyX2NvbXBvbmVudHMvdG9kb212Yy1j
b21tb24vYmFzZS5jc3MiPgorICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CisgICAgICAg
IDx0aXRsZT5CYWNrYm9uZS5qcyDigKIgVG9kb01WQzwvdGl0bGU+CisgICAgICAgIDxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0ibm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jhc2UuY3Nz
Ij4KKyAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJub2RlX21vZHVsZXMvdG9k
b212Yy1hcHAtY3NzL2luZGV4LmNzcyI+CiAgICAgPC9oZWFkPgogICAgIDxib2R5PgotICAgIDxz
ZWN0aW9uIGlkPSJ0b2RvYXBwIj4KLSAgICA8aGVhZGVyIGlkPSJoZWFkZXIiPgotICAgIDxoMT50
b2RvczwvaDE+Ci0gICAgPGlucHV0IGlkPSJuZXctdG9kbyIgcGxhY2Vob2xkZXI9IldoYXQgbmVl
ZHMgdG8gYmUgZG9uZT8iIGF1dG9mb2N1cz4KLSAgICA8L2hlYWRlcj4KLSAgICA8c2VjdGlvbiBp
ZD0ibWFpbiI+Ci0gICAgPGlucHV0IGlkPSJ0b2dnbGUtYWxsIiB0eXBlPSJjaGVja2JveCI+Ci0g
ICAgPGxhYmVsIGZvcj0idG9nZ2xlLWFsbCI+TWFyayBhbGwgYXMgY29tcGxldGU8L2xhYmVsPgot
ICAgIDx1bCBpZD0idG9kby1saXN0Ij48L3VsPgotICAgIDwvc2VjdGlvbj4KLSAgICA8Zm9vdGVy
IGlkPSJmb290ZXIiPjwvZm9vdGVyPgotICAgIDwvc2VjdGlvbj4KLSAgICA8Zm9vdGVyIGlkPSJp
bmZvIj4KLSAgICA8cD5Eb3VibGUtY2xpY2sgdG8gZWRpdCBhIHRvZG88L3A+Ci0gICAgPHA+V3Jp
dHRlbiBieSA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYWRkeW9zbWFuaSI+QWRkeSBPc21h
bmk8L2E+PC9wPgotICAgIDxwPlBhcnQgb2YgPGEgaHJlZj0iaHR0cDovL3RvZG9tdmMuY29tIj5U
b2RvTVZDPC9hPjwvcD4KLSAgICA8L2Zvb3Rlcj4KLSAgICA8c2NyaXB0IHR5cGU9InRleHQvdGVt
cGxhdGUiIGlkPSJpdGVtLXRlbXBsYXRlIj4KLSAgICA8ZGl2IGNsYXNzPSJ2aWV3Ij4KLSAgICA8
aW5wdXQgY2xhc3M9InRvZ2dsZSIgdHlwZT0iY2hlY2tib3giIDwlPSBjb21wbGV0ZWQgPyAnY2hl
Y2tlZCcgOiAnJyAlPj4KLSAgICA8bGFiZWw+PCUtIHRpdGxlICU+PC9sYWJlbD4KLSAgICA8YnV0
dG9uIGNsYXNzPSJkZXN0cm95Ij48L2J1dHRvbj4KLSAgICA8L2Rpdj4KLSAgICA8aW5wdXQgY2xh
c3M9ImVkaXQiIHZhbHVlPSI8JS0gdGl0bGUgJT4iPgotICAgIDwvc2NyaXB0PgotICAgIDxzY3Jp
cHQgdHlwZT0idGV4dC90ZW1wbGF0ZSIgaWQ9InN0YXRzLXRlbXBsYXRlIj4KLSAgICA8c3BhbiBp
ZD0idG9kby1jb3VudCI+PHN0cm9uZz48JT0gcmVtYWluaW5nICU+PC9zdHJvbmc+IDwlPSByZW1h
aW5pbmcgPT09IDEgPyAnaXRlbScgOiAnaXRlbXMnICU+IGxlZnQ8L3NwYW4+Ci0gICAgPHVsIGlk
PSJmaWx0ZXJzIj4KLSAgICA8bGk+Ci0gICAgPGEgY2xhc3M9InNlbGVjdGVkIiBocmVmPSIjLyI+
QWxsPC9hPgotICAgIDwvbGk+Ci0gICAgPGxpPgotICAgIDxhIGhyZWY9IiMvYWN0aXZlIj5BY3Rp
dmU8L2E+Ci0gICAgPC9saT4KLSAgICA8bGk+Ci0gICAgPGEgaHJlZj0iIy9jb21wbGV0ZWQiPkNv
bXBsZXRlZDwvYT4KLSAgICA8L2xpPgotICAgIDwvdWw+Ci0gICAgPCUgaWYgKGNvbXBsZXRlZCkg
eyAlPgotICAgIDxidXR0b24gaWQ9ImNsZWFyLWNvbXBsZXRlZCI+Q2xlYXIgY29tcGxldGVkICg8
JT0gY29tcGxldGVkICU+KTwvYnV0dG9uPgotICAgIDwlIH0gJT4KLSAgICA8L3NjcmlwdD4KLSAg
ICA8c2NyaXB0IHNyYz0iYm93ZXJfY29tcG9uZW50cy90b2RvbXZjLWNvbW1vbi9iYXNlLmpzIj48
L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iYm93ZXJfY29tcG9uZW50cy9qcXVlcnkvanF1ZXJ5
LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iYm93ZXJfY29tcG9uZW50cy91bmRlcnNj
b3JlL3VuZGVyc2NvcmUuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJib3dlcl9jb21w
b25lbnRzL2JhY2tib25lL2JhY2tib25lLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0i
Ym93ZXJfY29tcG9uZW50cy9iYWNrYm9uZS5sb2NhbFN0b3JhZ2UvYmFja2JvbmUubG9jYWxTdG9y
YWdlLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0ianMvbW9kZWxzL3RvZG8uanMiPjwv
c2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJqcy9jb2xsZWN0aW9ucy90b2Rvcy5qcyI+PC9zY3Jp
cHQ+Ci0gICAgPHNjcmlwdCBzcmM9ImpzL3ZpZXdzL3RvZG8tdmlldy5qcyI+PC9zY3JpcHQ+Ci0g
ICAgPHNjcmlwdCBzcmM9ImpzL3ZpZXdzL2FwcC12aWV3LmpzIj48L3NjcmlwdD4KLSAgICA8c2Ny
aXB0IHNyYz0ianMvcm91dGVycy9yb3V0ZXIuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3Jj
PSJqcy9hcHAuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2VjdGlvbiBjbGFzcz0idG9kb2FwcCI+
CisgICAgICAgICAgICA8aGVhZGVyIGNsYXNzPSJoZWFkZXIiPgorICAgICAgICAgICAgICAgIDxo
MT50b2RvczwvaDE+CisgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPSJuZXctdG9kbyIgcGxh
Y2Vob2xkZXI9IldoYXQgbmVlZHMgdG8gYmUgZG9uZT8iIGF1dG9mb2N1cz4KKyAgICAgICAgICAg
IDwvaGVhZGVyPgorICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9Im1haW4iPgorICAgICAgICAg
ICAgICAgIDxpbnB1dCBjbGFzcz0idG9nZ2xlLWFsbCIgaWQ9InRvZ2dsZS1hbGwiIHR5cGU9ImNo
ZWNrYm94Ij4KKyAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJ0b2dnbGUtYWxsIj5NYXJrIGFs
bCBhcyBjb21wbGV0ZTwvbGFiZWw+CisgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJ0b2RvLWxp
c3QiPjwvdWw+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisgICAgICAgICAgICA8Zm9vdGVyIGNs
YXNzPSJmb290ZXIiPjwvZm9vdGVyPgorICAgICAgICA8L3NlY3Rpb24+CisgICAgICAgIDxmb290
ZXIgY2xhc3M9ImluZm8iPgorICAgICAgICAgICAgPHA+RG91YmxlLWNsaWNrIHRvIGVkaXQgYSB0
b2RvPC9wPgorICAgICAgICAgICAgPHA+V3JpdHRlbiBieSA8YSBocmVmPSJodHRwczovL2dpdGh1
Yi5jb20vYWRkeW9zbWFuaSI+QWRkeSBPc21hbmk8L2E+PC9wPgorICAgICAgICAgICAgPHA+UGFy
dCBvZiA8YSBocmVmPSJodHRwOi8vdG9kb212Yy5jb20iPlRvZG9NVkM8L2E+PC9wPgorICAgICAg
ICA8L2Zvb3Rlcj4KKyAgICAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L3RlbXBsYXRlIiBpZD0iaXRl
bS10ZW1wbGF0ZSI+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ2aWV3Ij4KKyAgICAgICAgICAg
ICAgICA8aW5wdXQgY2xhc3M9InRvZ2dsZSIgdHlwZT0iY2hlY2tib3giIDwlPSBjb21wbGV0ZWQg
PyAnY2hlY2tlZCcgOiAnJyAlPj4KKyAgICAgICAgICAgICAgICA8bGFiZWw+PCUtIHRpdGxlICU+
PC9sYWJlbD4KKyAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJkZXN0cm95Ij48L2J1dHRv
bj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPGlucHV0IGNsYXNzPSJlZGl0IiB2
YWx1ZT0iPCUtIHRpdGxlICU+Ij4KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQg
dHlwZT0idGV4dC90ZW1wbGF0ZSIgaWQ9InN0YXRzLXRlbXBsYXRlIj4KKyAgICAgICAgICAgIDxz
cGFuIGNsYXNzPSJ0b2RvLWNvdW50Ij48c3Ryb25nPjwlPSByZW1haW5pbmcgJT48L3N0cm9uZz4g
PCU9IHJlbWFpbmluZyA9PT0gMSA/ICdpdGVtJyA6ICdpdGVtcycgJT4gbGVmdDwvc3Bhbj4KKyAg
ICAgICAgICAgIDx1bCBjbGFzcz0iZmlsdGVycyI+CisgICAgICAgICAgICAgICAgPGxpPgorICAg
ICAgICAgICAgICAgICAgICA8YSBjbGFzcz0ic2VsZWN0ZWQiIGhyZWY9IiMvIj5BbGw8L2E+Cisg
ICAgICAgICAgICAgICAgPC9saT4KKyAgICAgICAgICAgICAgICA8bGk+CisgICAgICAgICAgICAg
ICAgICAgIDxhIGhyZWY9IiMvYWN0aXZlIj5BY3RpdmU8L2E+CisgICAgICAgICAgICAgICAgPC9s
aT4KKyAgICAgICAgICAgICAgICA8bGk+CisgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMv
Y29tcGxldGVkIj5Db21wbGV0ZWQ8L2E+CisgICAgICAgICAgICAgICAgPC9saT4KKyAgICAgICAg
ICAgIDwvdWw+CisgICAgICAgICAgICA8JSBpZiAoY29tcGxldGVkKSB7ICU+CisgICAgICAgICAg
ICA8YnV0dG9uIGNsYXNzPSJjbGVhci1jb21wbGV0ZWQiPkNsZWFyIGNvbXBsZXRlZDwvYnV0dG9u
PgorICAgICAgICAgICAgPCUgfSAlPgorICAgICAgICA8L3NjcmlwdD4KKyAgICAgICAgPCEtLSA8
c2NyaXB0IHNyYz0ibm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jhc2UuanMiPjwvc2NyaXB0
PiAtLT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Im5vZGVfbW9kdWxlcy9qcXVlcnkvZGlzdC9qcXVl
cnkuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0ibm9kZV9tb2R1bGVzL3VuZGVy
c2NvcmUvdW5kZXJzY29yZS5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSJub2Rl
X21vZHVsZXMvYmFja2JvbmUvYmFja2JvbmUuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0
IHNyYz0ianMvYmFja2JvbmUuc3luYy5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3Jj
PSJqcy9tb2RlbHMvdG9kby5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSJqcy9j
b2xsZWN0aW9ucy90b2Rvcy5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSJqcy92
aWV3cy90b2RvLXZpZXcuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0ianMvdmll
d3MvYXBwLXZpZXcuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0ianMvcm91dGVy
cy9yb3V0ZXIuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0ianMvYXBwLmpzIj48
L3NjcmlwdD4KICAgICA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9i
YWNrYm9uZS9qcy9hcHAuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9qcy9hcHAuanMKaW5kZXgg
YWNhNzkwNzk1NzNlODFhMDEwOGQxMjQ2NzkyNzkzMzA0MDE3ODU4NC4uMWUxMzlkM2JkNDY2MGE1
YzQ0MGU5NGFiY2ZkMGY3OGUwOTNiNTZlMCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2Jv
bmUvanMvYXBwLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL2pzL2FwcC5qcwpAQCAtMiw2
ICsyLDcgQEAKIC8qanNoaW50IHVudXNlZDpmYWxzZSAqLwogdmFyIGFwcCA9IGFwcCB8fCB7fTsK
IHZhciBFTlRFUl9LRVkgPSAxMzsKK3ZhciBFU0NfS0VZID0gMjc7CiAKICQoZnVuY3Rpb24gKCkg
ewogICAgICd1c2Ugc3RyaWN0JzsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL2pz
L2JhY2tib25lLnN5bmMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9qcy9iYWNrYm9uZS5zeW5j
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmY4ZTNjNjdlZGRiNzlhNTE3M2M1YWNlZDE1M2Y0ZWJjMzZiNmEyYWIK
LS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9qcy9iYWNrYm9uZS5zeW5j
LmpzCkBAIC0wLDAgKzEsMTE4IEBACitCYWNrYm9uZS5zeW5jID0gZnVuY3Rpb24obWV0aG9kLCBt
b2RlbCwgb3B0aW9ucykgeworCisgIC8vIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHdlIGluaXRpYWxp
emUgYSBzdG9yZSwgaW4gdGhpcyBjYXNlCisgIC8vIHdlIHdpbGwganVzdCB1c2UgYSBKUyBvYmpl
Y3QuCisgIHZhciBjYWNoZSA9IHt9OworICAKKyAgLy8gVGhlIHNpemUgd2lsbCBiZSBwcmltYXJp
bHkgdXNlZCB0byBhc3NpZ24gaWRzIHRvIG5ld2x5IAorICAvLyBjcmVhdGVkIG1vZGVscy4gRWFj
aCB0aW1lIGEgbmV3IG1vZGVsIGlzIGNyZWF0ZWQsIHRoZSBzaXplIAorICAvLyB3aWxsIGJlIGlu
Y3JlbWVudGVkLgorICB2YXIgc2l6ZSAgPSAwOworCisgIC8vIHNpbmNlIHdlIG5lZWQgdG8gY3Jl
YXRlIGEgc3RvcmUgZm9yIHRoZSBtb2RlbHMvY29sbGVjdGlvbnMKKyAgLy8gd2UgYXJlIGFjdHVh
bGx5IGdvaW5nIHRvIGludm9rZSB0aGUgb3V0ZXIgZnVuY3Rpb24gd2hpY2ggd2lsbAorICAvLyBy
ZXR1cm4gdGhpcyBmdW5jdGlvbiBiZWxvdyBhcyB0aGUgQmFja2JvbmUuc3luYyB0aGF0IHdpbGwK
KyAgLy8gYWN0dWFsbHkgYmUgdXNlZC4KKyAgcmV0dXJuIGZ1bmN0aW9uKG1ldGhvZCwgbW9kZWws
IG9wdGlvbnMpIHsKKworICAgIC8vIGNyZWF0ZSBhIG5ldyBkZWZlcnJlZCBvYmplY3QuIHN0YW5k
YXJkIHN5bmMgcmV0dXJucyB0aGUgJC5hamF4CisgICAgLy8gcmVxdWVzdCwgd2hpY2ggaW50ZXJu
YWxseSByZXR1cm5zIGEgZGVmZXJyZWQuIEl0J3MgaW1wb3J0YW50IHRvCisgICAgLy8gZG8gdGhp
cyBzbyB0aGF0IHBlb3BsZSBjYW4gY2hhaW4gb24gZmV0Y2ggdXNpbmcgdGhlIHN0YW5kYXJkIC50
aGVuLy5mYWlsCisgICAgLy8gc3ludGF4LCByYXRoZXIgdGhhbiBqdXN0IHRoZSBzdWNjZXNzL2Vy
cm9yIGNhbGxiYWNrcy4KKyAgICB2YXIgZGVmZXJyZWQgPSAkLkRlZmVycmVkKCk7CisgICAgCisg
ICAgLy8gd2hlbiBjcmVhdGluZyBhIG5ldyBtb2RlbC4uLgorICAgIGlmIChtZXRob2QgPT09ICJj
cmVhdGUiKSB7CisKKyAgICAgIC8vIGZpcnN0IGFzc2lnbiBpdCBhbiBpZC4gVGhlIHNlcnZlciB3
b3VsZCB0cmFkaXRpb25hbGx5IGRvIHRoaXMuCisgICAgICBtb2RlbC5pZCA9IHNpemU7CisgICAg
ICAvLyBzdG9yZSBpdCBpbiBvdXIgY2FjaGUKKyAgICAgIGNhY2hlW21vZGVsLmlkXSA9IG1vZGVs
OworICAgICAgLy8gbWFrZSBzdXJlIHdlIGluY3JlbWVudCB0aGUgbnVtYmVyIG9mIG1vZGVscyB3
ZSBub3cgaGF2ZS4KKyAgICAgIHNpemUgKz0gMTsKKworICAgICAgLy8gaWYgYSBzdWNjZXNzIGNh
bGxiYWNrIHdhcyBwcm92aWRlZCwgZXhlY3V0ZSBpdC4KKyAgICAgIGlmIChvcHRpb25zLnN1Y2Nl
c3MpIHsKKyAgICAgICAgb3B0aW9ucy5zdWNjZXNzKG1vZGVsLCBtb2RlbC50b0pTT04oKSwgb3B0
aW9ucyk7CisgICAgICB9CisKKyAgICAgIC8vIHJlc29sdmUgdGhlIGRlZmVycmVkLgorICAgICAg
ZGVmZXJyZWQucmVzb2x2ZShtb2RlbCk7CisKKyAgICAvLyB3ZSBhcmUgdXBkYXRpbmcgYSBtb2Rl
bAorICAgIH0gZWxzZSBpZiAobWV0aG9kID09PSAidXBkYXRlIikgeworICAgICAgCisgICAgICAv
LyBhcyBsb25nIGFzIHRoZSBtb2RlbCBhY3R1YWxseSBleGlzdHMgaW4gb3VyIHN0b3JlCisgICAg
ICBpZiAoY2FjaGVbbW9kZWwuaWRdKSB7CisgICAgICAgIAorICAgICAgICAvLyBvdmVyd3JpdGUg
d2hhdCBpcyBjdXJyZW50bHkgaW4gdGhlIHN0b3JlIHdpdGggdGhpcyBtb2RlbC4KKyAgICAgICAg
Y2FjaGVbbW9kZWwuaWRdID0gbW9kZWw7CisKKyAgICAgICAgLy8gaWYgYSBzdWNjZXNzIGNhbGxi
YWNrIHdhcyBwcm92aWRlZCwgZXhlY3V0ZSBpdC4KKyAgICAgICAgaWYgKG9wdGlvbnMuc3VjY2Vz
cykgeworICAgICAgICAgIG9wdGlvbnMuc3VjY2Vzcyhtb2RlbCwgbW9kZWwudG9KU09OKCksIG9w
dGlvbnMpOworICAgICAgICB9CisKKyAgICAgICAgZGVmZXJyZWQucmVzb2x2ZShtb2RlbCk7Cisg
ICAgICAKKyAgICAgIC8vIGlmIHRoaXMgbW9kZWwgZG9lc24ndCBleGlzdCB5ZXQsIHdlIGNhbid0
IHVwZGF0ZSBpdAorICAgICAgfSBlbHNlIHsKKyAgICAgICAgCisgICAgICAgIGlmIChvcHRpb25z
LmVycm9yKSB7CisgICAgICAgICAgb3B0aW9ucy5lcnJvcihtb2RlbCwgIk1vZGVsIG5vdCBmb3Vu
ZCIpOworICAgICAgICB9CisgICAgICAgIGRlZmVycmVkLnJlamVjdChtb2RlbCk7CisgICAgICB9
CisKKyAgICAvLyBpZiB3ZSdyZSB0cnlpbmcgdG8gcmVhZCBhIG1vZGVsLi4uCisgICAgfSBlbHNl
IGlmIChtZXRob2QgPT09ICJyZWFkIikgeworICAgICAgCisgICAgICAvLyBhcyBsb25nIGFzIGl0
IGV4aXN0cworICAgICAgaWYgKGNhY2hlW21vZGVsLmlkXSkgeworICAgICAgICAKKyAgICAgICAg
Ly8gaWYgYSBzdWNjZXNzIGNhbGxiYWNrIHdhcyBwcm92aWRlZCwgZXhlY3V0ZSBpdC4KKyAgICAg
ICAgaWYgKG9wdGlvbnMuc3VjY2VzcykgeworICAgICAgICAgIG9wdGlvbnMuc3VjY2Vzcyhtb2Rl
bCwgY2FjaGVbbW9kZWwuaWRdLnRvSlNPTigpLCBvcHRpb25zKTsKKyAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgLy8gcmVzb2x2ZSAKKyAgICAgICAgZGVmZXJyZWQucmVzb2x2ZShtb2RlbCk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBpZiAob3B0aW9ucy5lcnJvcikgeworICAgICAgICAg
IG9wdGlvbnMuZXJyb3IobW9kZWwsICJNb2RlbCBub3QgZm91bmQiKTsKKyAgICAgICAgfQorICAg
ICAgICBkZWZlcnJlZC5yZWplY3QobW9kZWwpOworICAgICAgfQorICAgICAgCisgICAgLy8gaWYg
d2UncmUgZGVsZXRpbmcgYSBtb2RlbC4uLgorICAgIH0gZWxzZSBpZiAobWV0aG9kID09PSAiZGVs
ZXRlIikgeworICAgICAgCisgICAgICAvLyBmaXJzdCBtYWtlIHN1cmUgaXQgZXhpc3RzIGluIHRo
ZSBjYWNoZQorICAgICAgaWYgKGNhY2hlW21vZGVsLmlkXSkgeworICAgICAgICAKKyAgICAgICAg
Ly8gdGhlbiByZW1vdmUgaXQgZnJvbSB0aGUgY2FjaGUKKyAgICAgICAgZGVsZXRlIGNhY2hlW21v
ZGVsLmlkXTsKKyAgICAgICAgCisgICAgICAgIC8vIGFuZCB0cmlnZ2VyIHRoZSBzdWNjZXNzIGNh
bGxiYWNrLiBOb3RlIHdlJ3JlIHBhc3NpbmcgYW4gCisgICAgICAgIC8vIGVtcHR5IG9iamVjdCBh
cyB0aGUgc2Vjb25kIGFyZ3VtZW50LCBiZWNhdXNlIGEgZGVsZXRpb24gCisgICAgICAgIC8vIHdv
dWxkIHJlc3VsdCBpbiBhbiBlbXB0eSByZXR1cm4gZnJvbSB0aGUgc2VydmVyLgorICAgICAgICBp
ZiAob3B0aW9ucy5zdWNjZXNzKSB7CisgICAgICAgICAgb3B0aW9ucy5zdWNjZXNzKG1vZGVsLCB7
fSwgb3B0aW9ucyk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIHJlc29sdmUgdGhl
IGRlZmVycmVkCisgICAgICAgIGRlZmVycmVkLnJlc29sdmUobW9kZWwpOworICAgICAgICAKKyAg
ICAgIC8vIG90aGVyd2lzZSwgZXJyb3IgdGhhdCB0aGUgbW9kZWwgZG9lc24ndCBleGlzdC4KKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChvcHRpb25zLmVycm9yKSB7CisgICAgICAgICAgb3B0
aW9ucy5lcnJvcihtb2RlbCwgIk1vZGVsIG5vdCBmb3VuZCIpOworICAgICAgICB9CisgICAgICAg
IGRlZmVycmVkLnJlamVjdChtb2RlbCk7CisgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGRl
ZmVycmVkLnByb21pc2UoKTsgIAorICB9CisgIAorfSgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL2pzL2NvbGxlY3Rpb25zL3Rv
ZG9zLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvanMvY29sbGVjdGlvbnMvdG9kb3MuanMKaW5k
ZXggM2IxNTAwNGYzZmIzYmQ5ZDJhNmQ4ZDkwNWQ5Y2I2ZjUzMzk0ZDUwNi4uZjhmNWQzMTExMzM1
ODhkODc2OGNhZjJmMGRlZjRlMmE0ODM4ZWIzMyAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFj
a2JvbmUvanMvY29sbGVjdGlvbnMvdG9kb3MuanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUv
anMvY29sbGVjdGlvbnMvdG9kb3MuanMKQEAgLTcsNDAgKzcsMzEgQEAgdmFyIGFwcCA9IGFwcCB8
fCB7fTsKICAgICAvLyBUb2RvIENvbGxlY3Rpb24KICAgICAvLyAtLS0tLS0tLS0tLS0tLS0KIAot
ICAgIC8vIFRoZSBjb2xsZWN0aW9uIG9mIHRvZG9zIGlzIGJhY2tlZCBieSAqbG9jYWxTdG9yYWdl
KiBpbnN0ZWFkIG9mIGEgcmVtb3RlCi0gICAgLy8gc2VydmVyLgorCiAgICAgdmFyIFRvZG9zID0g
QmFja2JvbmUuQ29sbGVjdGlvbi5leHRlbmQoewotICAgIC8vIFJlZmVyZW5jZSB0byB0aGlzIGNv
bGxlY3Rpb24ncyBtb2RlbC4KLSAgICBtb2RlbDogYXBwLlRvZG8sCisgICAgICAgIC8vIFJlZmVy
ZW5jZSB0byB0aGlzIGNvbGxlY3Rpb24ncyBtb2RlbC4KKyAgICAgICAgbW9kZWw6IGFwcC5Ub2Rv
LAogCi0gICAgLy8gU2F2ZSBhbGwgb2YgdGhlIHRvZG8gaXRlbXMgdW5kZXIgdGhlIGAidG9kb3Mi
YCBuYW1lc3BhY2UuCi0gICAgbG9jYWxTdG9yYWdlOiBuZXcgQmFja2JvbmUuTG9jYWxTdG9yYWdl
KCd0b2Rvcy1iYWNrYm9uZScpLAorICAgICAgICAvLyBTYXZlIGFsbCBvZiB0aGUgdG9kbyBpdGVt
cyB1bmRlciB0aGlzIGV4YW1wbGUncyBuYW1lc3BhY2UuCiAKLSAgICAvLyBGaWx0ZXIgZG93biB0
aGUgbGlzdCBvZiBhbGwgdG9kbyBpdGVtcyB0aGF0IGFyZSBmaW5pc2hlZC4KLSAgICBjb21wbGV0
ZWQ6IGZ1bmN0aW9uICgpIHsKLSAgICByZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24gKHRvZG8p
IHsKLSAgICByZXR1cm4gdG9kby5nZXQoJ2NvbXBsZXRlZCcpOwotICAgIH0pOwotICAgIH0sCi0K
LSAgICAvLyBGaWx0ZXIgZG93biB0aGUgbGlzdCB0byBvbmx5IHRvZG8gaXRlbXMgdGhhdCBhcmUg
c3RpbGwgbm90IGZpbmlzaGVkLgotICAgIHJlbWFpbmluZzogZnVuY3Rpb24gKCkgewotICAgIHJl
dHVybiB0aGlzLndpdGhvdXQuYXBwbHkodGhpcywgdGhpcy5jb21wbGV0ZWQoKSk7Ci0gICAgfSwK
LQotICAgIC8vIFdlIGtlZXAgdGhlIFRvZG9zIGluIHNlcXVlbnRpYWwgb3JkZXIsIGRlc3BpdGUg
YmVpbmcgc2F2ZWQgYnkgdW5vcmRlcmVkCi0gICAgLy8gR1VJRCBpbiB0aGUgZGF0YWJhc2UuIFRo
aXMgZ2VuZXJhdGVzIHRoZSBuZXh0IG9yZGVyIG51bWJlciBmb3IgbmV3IGl0ZW1zLgotICAgIG5l
eHRPcmRlcjogZnVuY3Rpb24gKCkgewotICAgIGlmICghdGhpcy5sZW5ndGgpIHsKLSAgICByZXR1
cm4gMTsKLSAgICB9Ci0gICAgcmV0dXJuIHRoaXMubGFzdCgpLmdldCgnb3JkZXInKSArIDE7Ci0g
ICAgfSwKLQotICAgIC8vIFRvZG9zIGFyZSBzb3J0ZWQgYnkgdGhlaXIgb3JpZ2luYWwgaW5zZXJ0
aW9uIG9yZGVyLgotICAgIGNvbXBhcmF0b3I6IGZ1bmN0aW9uICh0b2RvKSB7Ci0gICAgcmV0dXJu
IHRvZG8uZ2V0KCdvcmRlcicpOwotICAgIH0KKyAgICAgICAgLy8gRmlsdGVyIGRvd24gdGhlIGxp
c3Qgb2YgYWxsIHRvZG8gaXRlbXMgdGhhdCBhcmUgZmluaXNoZWQuCisgICAgICAgIGNvbXBsZXRl
ZDogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMud2hlcmUoe2NvbXBsZXRl
ZDogdHJ1ZX0pOworICAgICAgICB9LAorCisgICAgICAgIC8vIEZpbHRlciBkb3duIHRoZSBsaXN0
IHRvIG9ubHkgdG9kbyBpdGVtcyB0aGF0IGFyZSBzdGlsbCBub3QgZmluaXNoZWQuCisgICAgICAg
IHJlbWFpbmluZzogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMud2hlcmUo
e2NvbXBsZXRlZDogZmFsc2V9KTsKKyAgICAgICAgfSwKKworICAgICAgICAvLyBXZSBrZWVwIHRo
ZSBUb2RvcyBpbiBzZXF1ZW50aWFsIG9yZGVyLCBkZXNwaXRlIGJlaW5nIHNhdmVkIGJ5IHVub3Jk
ZXJlZAorICAgICAgICAvLyBHVUlEIGluIHRoZSBkYXRhYmFzZS4gVGhpcyBnZW5lcmF0ZXMgdGhl
IG5leHQgb3JkZXIgbnVtYmVyIGZvciBuZXcgaXRlbXMuCisgICAgICAgIG5leHRPcmRlcjogZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMubGVuZ3RoID8gdGhpcy5sYXN0KCku
Z2V0KCdvcmRlcicpICsgMSA6IDE7CisgICAgICAgIH0sCisKKyAgICAgICAgLy8gVG9kb3MgYXJl
IHNvcnRlZCBieSB0aGVpciBvcmlnaW5hbCBpbnNlcnRpb24gb3JkZXIuCisgICAgICAgIGNvbXBh
cmF0b3I6ICdvcmRlcicKICAgICB9KTsKIAogICAgIC8vIENyZWF0ZSBvdXIgZ2xvYmFsIGNvbGxl
Y3Rpb24gb2YgKipUb2RvcyoqLgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvanMv
bW9kZWxzL3RvZG8uanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9qcy9tb2RlbHMvdG9kby5qcwpp
bmRleCA0OTE3ZGZlMDZkMDczNGNhMGM0OWI3ZWU3YjE1YTAyOTM0MTRiZmQzLi40ZjNmZGUzZTI2
ZmIxYjcxNjgyNGEwODgyMDQ2YjBhZmZmMzFmYzFiIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9i
YWNrYm9uZS9qcy9tb2RlbHMvdG9kby5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9qcy9t
b2RlbHMvdG9kby5qcwpAQCAtOSwxOCArOSwxOCBAQCB2YXIgYXBwID0gYXBwIHx8IHt9OwogCiAg
ICAgLy8gT3VyIGJhc2ljICoqVG9kbyoqIG1vZGVsIGhhcyBgdGl0bGVgLCBgb3JkZXJgLCBhbmQg
YGNvbXBsZXRlZGAgYXR0cmlidXRlcy4KICAgICBhcHAuVG9kbyA9IEJhY2tib25lLk1vZGVsLmV4
dGVuZCh7Ci0gICAgLy8gRGVmYXVsdCBhdHRyaWJ1dGVzIGZvciB0aGUgdG9kbwotICAgIC8vIGFu
ZCBlbnN1cmUgdGhhdCBlYWNoIHRvZG8gY3JlYXRlZCBoYXMgYHRpdGxlYCBhbmQgYGNvbXBsZXRl
ZGAga2V5cy4KLSAgICBkZWZhdWx0czogewotICAgIHRpdGxlOiAnJywKLSAgICBjb21wbGV0ZWQ6
IGZhbHNlCi0gICAgfSwKKyAgICAgICAgLy8gRGVmYXVsdCBhdHRyaWJ1dGVzIGZvciB0aGUgdG9k
bworICAgICAgICAvLyBhbmQgZW5zdXJlIHRoYXQgZWFjaCB0b2RvIGNyZWF0ZWQgaGFzIGB0aXRs
ZWAgYW5kIGBjb21wbGV0ZWRgIGtleXMuCisgICAgICAgIGRlZmF1bHRzOiB7CisgICAgICAgICAg
ICB0aXRsZTogJycsCisgICAgICAgICAgICBjb21wbGV0ZWQ6IGZhbHNlCisgICAgICAgIH0sCiAK
LSAgICAvLyBUb2dnbGUgdGhlIGBjb21wbGV0ZWRgIHN0YXRlIG9mIHRoaXMgdG9kbyBpdGVtLgot
ICAgIHRvZ2dsZTogZnVuY3Rpb24gKCkgewotICAgIHRoaXMuc2F2ZSh7Ci0gICAgY29tcGxldGVk
OiAhdGhpcy5nZXQoJ2NvbXBsZXRlZCcpCi0gICAgfSk7Ci0gICAgfQorICAgICAgICAvLyBUb2dn
bGUgdGhlIGBjb21wbGV0ZWRgIHN0YXRlIG9mIHRoaXMgdG9kbyBpdGVtLgorICAgICAgICB0b2dn
bGU6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRoaXMuc2F2ZSh7CisgICAgICAgICAgICAg
ICAgY29tcGxldGVkOiAhdGhpcy5nZXQoJ2NvbXBsZXRlZCcpCisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgfQogICAgIH0pOwogfSkoKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25l
L2pzL3JvdXRlcnMvcm91dGVyLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvanMvcm91dGVycy9y
b3V0ZXIuanMKaW5kZXggMDA5NzAzOWYyOTU3MzhhMDY2MTgxY2U1NDEwMGUwN2ExZGVhZWFmNC4u
NTkzN2U5ZmYwMzc4NDNhMDc1MjM2ZWYwMzI1MWNiMTFkOTIxZDliYyAxMDA2NDQKLS0tIGEvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvYmFja2JvbmUvanMvcm91dGVycy9yb3V0ZXIuanMKKysrIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
YmFja2JvbmUvanMvcm91dGVycy9yb3V0ZXIuanMKQEAgLTcsMTggKzcsMTggQEAgdmFyIGFwcCA9
IGFwcCB8fCB7fTsKICAgICAvLyBUb2RvIFJvdXRlcgogICAgIC8vIC0tLS0tLS0tLS0KICAgICB2
YXIgVG9kb1JvdXRlciA9IEJhY2tib25lLlJvdXRlci5leHRlbmQoewotICAgIHJvdXRlczogewot
ICAgICcqZmlsdGVyJzogJ3NldEZpbHRlcicKLSAgICB9LAorICAgICAgICByb3V0ZXM6IHsKKyAg
ICAgICAgICAgICcqZmlsdGVyJzogJ3NldEZpbHRlcicKKyAgICAgICAgfSwKIAotICAgIHNldEZp
bHRlcjogZnVuY3Rpb24gKHBhcmFtKSB7Ci0gICAgLy8gU2V0IHRoZSBjdXJyZW50IGZpbHRlciB0
byBiZSB1c2VkCi0gICAgYXBwLlRvZG9GaWx0ZXIgPSBwYXJhbSB8fCAnJzsKKyAgICAgICAgc2V0
RmlsdGVyOiBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAgIC8vIFNldCB0aGUgY3VycmVu
dCBmaWx0ZXIgdG8gYmUgdXNlZAorICAgICAgICAgICAgYXBwLlRvZG9GaWx0ZXIgPSBwYXJhbSB8
fCAnJzsKIAotICAgIC8vIFRyaWdnZXIgYSBjb2xsZWN0aW9uIGZpbHRlciBldmVudCwgY2F1c2lu
ZyBoaWRpbmcvdW5oaWRpbmcKLSAgICAvLyBvZiBUb2RvIHZpZXcgaXRlbXMKLSAgICBhcHAudG9k
b3MudHJpZ2dlcignZmlsdGVyJyk7Ci0gICAgfQorICAgICAgICAgICAgLy8gVHJpZ2dlciBhIGNv
bGxlY3Rpb24gZmlsdGVyIGV2ZW50LCBjYXVzaW5nIGhpZGluZy91bmhpZGluZworICAgICAgICAg
ICAgLy8gb2YgVG9kbyB2aWV3IGl0ZW1zCisgICAgICAgICAgICBhcHAudG9kb3MudHJpZ2dlcign
ZmlsdGVyJyk7CisgICAgICAgIH0KICAgICB9KTsKIAogICAgIGFwcC5Ub2RvUm91dGVyID0gbmV3
IFRvZG9Sb3V0ZXIoKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL2pzL3ZpZXdz
L2FwcC12aWV3LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvanMvdmlld3MvYXBwLXZpZXcuanMK
aW5kZXggNDk1ZWJjNDE5ZTdkMzAwM2IzZjQxMWMwNDI4MDY0NDc5MTY0OGVlMC4uMzQyNTJmYzlj
YjIyNjRmNmQzNjQ0OWRlM2IyYTI4NTNmZDhlOTVmYiAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
YmFja2JvbmUvanMvdmlld3MvYXBwLXZpZXcuanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUv
anMvdmlld3MvYXBwLXZpZXcuanMKQEAgLTEwLDEyMyArMTAsMTIyIEBAIHZhciBhcHAgPSBhcHAg
fHwge307CiAgICAgLy8gT3VyIG92ZXJhbGwgKipBcHBWaWV3KiogaXMgdGhlIHRvcC1sZXZlbCBw
aWVjZSBvZiBVSS4KICAgICBhcHAuQXBwVmlldyA9IEJhY2tib25lLlZpZXcuZXh0ZW5kKHsKIAot
ICAgIC8vIEluc3RlYWQgb2YgZ2VuZXJhdGluZyBhIG5ldyBlbGVtZW50LCBiaW5kIHRvIHRoZSBl
eGlzdGluZyBza2VsZXRvbiBvZgotICAgIC8vIHRoZSBBcHAgYWxyZWFkeSBwcmVzZW50IGluIHRo
ZSBIVE1MLgotICAgIGVsOiAnI3RvZG9hcHAnLAotCi0gICAgLy8gT3VyIHRlbXBsYXRlIGZvciB0
aGUgbGluZSBvZiBzdGF0aXN0aWNzIGF0IHRoZSBib3R0b20gb2YgdGhlIGFwcC4KLSAgICBzdGF0
c1RlbXBsYXRlOiBfLnRlbXBsYXRlKCQoJyNzdGF0cy10ZW1wbGF0ZScpLmh0bWwoKSksCi0KLSAg
ICAvLyBEZWxlZ2F0ZWQgZXZlbnRzIGZvciBjcmVhdGluZyBuZXcgaXRlbXMsIGFuZCBjbGVhcmlu
ZyBjb21wbGV0ZWQgb25lcy4KLSAgICBldmVudHM6IHsKLSAgICAna2V5cHJlc3MgI25ldy10b2Rv
JzogJ2NyZWF0ZU9uRW50ZXInLAotICAgICdjbGljayAjY2xlYXItY29tcGxldGVkJzogJ2NsZWFy
Q29tcGxldGVkJywKLSAgICAnY2xpY2sgI3RvZ2dsZS1hbGwnOiAndG9nZ2xlQWxsQ29tcGxldGUn
Ci0gICAgfSwKLQotICAgIC8vIEF0IGluaXRpYWxpemF0aW9uIHdlIGJpbmQgdG8gdGhlIHJlbGV2
YW50IGV2ZW50cyBvbiB0aGUgYFRvZG9zYAotICAgIC8vIGNvbGxlY3Rpb24sIHdoZW4gaXRlbXMg
YXJlIGFkZGVkIG9yIGNoYW5nZWQuIEtpY2sgdGhpbmdzIG9mZiBieQotICAgIC8vIGxvYWRpbmcg
YW55IHByZWV4aXN0aW5nIHRvZG9zIHRoYXQgbWlnaHQgYmUgc2F2ZWQgaW4gKmxvY2FsU3RvcmFn
ZSouCi0gICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24gKCkgewotICAgIHRoaXMuYWxsQ2hlY2tib3gg
PSB0aGlzLiQoJyN0b2dnbGUtYWxsJylbMF07Ci0gICAgdGhpcy4kaW5wdXQgPSB0aGlzLiQoJyNu
ZXctdG9kbycpOwotICAgIHRoaXMuJGZvb3RlciA9IHRoaXMuJCgnI2Zvb3RlcicpOwotICAgIHRo
aXMuJG1haW4gPSB0aGlzLiQoJyNtYWluJyk7Ci0KLSAgICB0aGlzLmxpc3RlblRvKGFwcC50b2Rv
cywgJ2FkZCcsIHRoaXMuYWRkT25lKTsKLSAgICB0aGlzLmxpc3RlblRvKGFwcC50b2RvcywgJ3Jl
c2V0JywgdGhpcy5hZGRBbGwpOwotICAgIHRoaXMubGlzdGVuVG8oYXBwLnRvZG9zLCAnY2hhbmdl
OmNvbXBsZXRlZCcsIHRoaXMuZmlsdGVyT25lKTsKLSAgICB0aGlzLmxpc3RlblRvKGFwcC50b2Rv
cywgJ2ZpbHRlcicsIHRoaXMuZmlsdGVyQWxsKTsKLSAgICB0aGlzLmxpc3RlblRvKGFwcC50b2Rv
cywgJ2FsbCcsIHRoaXMucmVuZGVyKTsKLQotICAgIC8vIFN1cHByZXNzZXMgJ2FkZCcgZXZlbnRz
IHdpdGgge3Jlc2V0OiB0cnVlfSBhbmQgcHJldmVudHMgdGhlIGFwcCB2aWV3IAotICAgIC8vIGZy
b20gYmVpbmcgcmUtcmVuZGVyZWQgZm9yIGV2ZXJ5IG1vZGVsLiBPbmx5IHJlbmRlcnMgd2hlbiB0
aGUgJ3Jlc2V0JwotICAgIC8vIGV2ZW50IGlzIHRyaWdnZXJlZCBhdCB0aGUgZW5kIG9mIHRoZSBm
ZXRjaC4KLSAgICBhcHAudG9kb3MuZmV0Y2goe3Jlc2V0OiB0cnVlfSk7Ci0gICAgfSwKLQotICAg
IC8vIFJlLXJlbmRlcmluZyB0aGUgQXBwIGp1c3QgbWVhbnMgcmVmcmVzaGluZyB0aGUgc3RhdGlz
dGljcyAtLSB0aGUgcmVzdAotICAgIC8vIG9mIHRoZSBhcHAgZG9lc24ndCBjaGFuZ2UuCi0gICAg
cmVuZGVyOiBmdW5jdGlvbiAoKSB7Ci0gICAgdmFyIGNvbXBsZXRlZCA9IGFwcC50b2Rvcy5jb21w
bGV0ZWQoKS5sZW5ndGg7Ci0gICAgdmFyIHJlbWFpbmluZyA9IGFwcC50b2Rvcy5yZW1haW5pbmco
KS5sZW5ndGg7Ci0KLSAgICBpZiAoYXBwLnRvZG9zLmxlbmd0aCkgewotICAgIHRoaXMuJG1haW4u
c2hvdygpOwotICAgIHRoaXMuJGZvb3Rlci5zaG93KCk7Ci0KLSAgICB0aGlzLiRmb290ZXIuaHRt
bCh0aGlzLnN0YXRzVGVtcGxhdGUoewotICAgIGNvbXBsZXRlZDogY29tcGxldGVkLAotICAgIHJl
bWFpbmluZzogcmVtYWluaW5nCi0gICAgfSkpOwotCi0gICAgdGhpcy4kKCcjZmlsdGVycyBsaSBh
JykKLSAgICAucmVtb3ZlQ2xhc3MoJ3NlbGVjdGVkJykKLSAgICAuZmlsdGVyKCdbaHJlZj0iIy8n
ICsgKGFwcC5Ub2RvRmlsdGVyIHx8ICcnKSArICciXScpCi0gICAgLmFkZENsYXNzKCdzZWxlY3Rl
ZCcpOwotICAgIH0gZWxzZSB7Ci0gICAgdGhpcy4kbWFpbi5oaWRlKCk7Ci0gICAgdGhpcy4kZm9v
dGVyLmhpZGUoKTsKLSAgICB9Ci0KLSAgICB0aGlzLmFsbENoZWNrYm94LmNoZWNrZWQgPSAhcmVt
YWluaW5nOwotICAgIH0sCi0KLSAgICAvLyBBZGQgYSBzaW5nbGUgdG9kbyBpdGVtIHRvIHRoZSBs
aXN0IGJ5IGNyZWF0aW5nIGEgdmlldyBmb3IgaXQsIGFuZAotICAgIC8vIGFwcGVuZGluZyBpdHMg
ZWxlbWVudCB0byB0aGUgYDx1bD5gLgotICAgIGFkZE9uZTogZnVuY3Rpb24gKHRvZG8pIHsKLSAg
ICB2YXIgdmlldyA9IG5ldyBhcHAuVG9kb1ZpZXcoeyBtb2RlbDogdG9kbyB9KTsKLSAgICAkKCcj
dG9kby1saXN0JykuYXBwZW5kKHZpZXcucmVuZGVyKCkuZWwpOwotICAgIH0sCi0KLSAgICAvLyBB
ZGQgYWxsIGl0ZW1zIGluIHRoZSAqKlRvZG9zKiogY29sbGVjdGlvbiBhdCBvbmNlLgotICAgIGFk
ZEFsbDogZnVuY3Rpb24gKCkgewotICAgIHRoaXMuJCgnI3RvZG8tbGlzdCcpLmh0bWwoJycpOwot
ICAgIGFwcC50b2Rvcy5lYWNoKHRoaXMuYWRkT25lLCB0aGlzKTsKLSAgICB9LAotCi0gICAgZmls
dGVyT25lOiBmdW5jdGlvbiAodG9kbykgewotICAgIHRvZG8udHJpZ2dlcigndmlzaWJsZScpOwot
ICAgIH0sCi0KLSAgICBmaWx0ZXJBbGw6IGZ1bmN0aW9uICgpIHsKLSAgICBhcHAudG9kb3MuZWFj
aCh0aGlzLmZpbHRlck9uZSwgdGhpcyk7Ci0gICAgfSwKLQotICAgIC8vIEdlbmVyYXRlIHRoZSBh
dHRyaWJ1dGVzIGZvciBhIG5ldyBUb2RvIGl0ZW0uCi0gICAgbmV3QXR0cmlidXRlczogZnVuY3Rp
b24gKCkgewotICAgIHJldHVybiB7Ci0gICAgdGl0bGU6IHRoaXMuJGlucHV0LnZhbCgpLnRyaW0o
KSwKLSAgICBvcmRlcjogYXBwLnRvZG9zLm5leHRPcmRlcigpLAotICAgIGNvbXBsZXRlZDogZmFs
c2UKLSAgICB9OwotICAgIH0sCi0KLSAgICAvLyBJZiB5b3UgaGl0IHJldHVybiBpbiB0aGUgbWFp
biBpbnB1dCBmaWVsZCwgY3JlYXRlIG5ldyAqKlRvZG8qKiBtb2RlbCwKLSAgICAvLyBwZXJzaXN0
aW5nIGl0IHRvICpsb2NhbFN0b3JhZ2UqLgotICAgIGNyZWF0ZU9uRW50ZXI6IGZ1bmN0aW9uIChl
KSB7Ci0gICAgaWYgKGUud2hpY2ggIT09IEVOVEVSX0tFWSB8fCAhdGhpcy4kaW5wdXQudmFsKCku
dHJpbSgpKSB7Ci0gICAgcmV0dXJuOwotICAgIH0KLQotICAgIGFwcC50b2Rvcy5jcmVhdGUodGhp
cy5uZXdBdHRyaWJ1dGVzKCkpOwotICAgIHRoaXMuJGlucHV0LnZhbCgnJyk7Ci0gICAgfSwKLQot
ICAgIC8vIENsZWFyIGFsbCBjb21wbGV0ZWQgdG9kbyBpdGVtcywgZGVzdHJveWluZyB0aGVpciBt
b2RlbHMuCi0gICAgY2xlYXJDb21wbGV0ZWQ6IGZ1bmN0aW9uICgpIHsKLSAgICBfLmludm9rZShh
cHAudG9kb3MuY29tcGxldGVkKCksICdkZXN0cm95Jyk7Ci0gICAgcmV0dXJuIGZhbHNlOwotICAg
IH0sCi0KLSAgICB0b2dnbGVBbGxDb21wbGV0ZTogZnVuY3Rpb24gKCkgewotICAgIHZhciBjb21w
bGV0ZWQgPSB0aGlzLmFsbENoZWNrYm94LmNoZWNrZWQ7Ci0KLSAgICBhcHAudG9kb3MuZWFjaChm
dW5jdGlvbiAodG9kbykgewotICAgIHRvZG8uc2F2ZSh7Ci0gICAgJ2NvbXBsZXRlZCc6IGNvbXBs
ZXRlZAotICAgIH0pOwotICAgIH0pOwotICAgIH0KKyAgICAgICAgLy8gSW5zdGVhZCBvZiBnZW5l
cmF0aW5nIGEgbmV3IGVsZW1lbnQsIGJpbmQgdG8gdGhlIGV4aXN0aW5nIHNrZWxldG9uIG9mCisg
ICAgICAgIC8vIHRoZSBBcHAgYWxyZWFkeSBwcmVzZW50IGluIHRoZSBIVE1MLgorICAgICAgICBl
bDogJy50b2RvYXBwJywKKworICAgICAgICAvLyBPdXIgdGVtcGxhdGUgZm9yIHRoZSBsaW5lIG9m
IHN0YXRpc3RpY3MgYXQgdGhlIGJvdHRvbSBvZiB0aGUgYXBwLgorICAgICAgICBzdGF0c1RlbXBs
YXRlOiBfLnRlbXBsYXRlKCQoJyNzdGF0cy10ZW1wbGF0ZScpLmh0bWwoKSksCisKKyAgICAgICAg
Ly8gRGVsZWdhdGVkIGV2ZW50cyBmb3IgY3JlYXRpbmcgbmV3IGl0ZW1zLCBhbmQgY2xlYXJpbmcg
Y29tcGxldGVkIG9uZXMuCisgICAgICAgIGV2ZW50czogeworICAgICAgICAgICAgJ2tleXByZXNz
IC5uZXctdG9kbyc6ICdjcmVhdGVPbkVudGVyJywKKyAgICAgICAgICAgICdjbGljayAuY2xlYXIt
Y29tcGxldGVkJzogJ2NsZWFyQ29tcGxldGVkJywKKyAgICAgICAgICAgICdjbGljayAudG9nZ2xl
LWFsbCc6ICd0b2dnbGVBbGxDb21wbGV0ZScKKyAgICAgICAgfSwKKworICAgICAgICAvLyBBdCBp
bml0aWFsaXphdGlvbiB3ZSBiaW5kIHRvIHRoZSByZWxldmFudCBldmVudHMgb24gdGhlIGBUb2Rv
c2AKKyAgICAgICAgLy8gY29sbGVjdGlvbiwgd2hlbiBpdGVtcyBhcmUgYWRkZWQgb3IgY2hhbmdl
ZC4gS2ljayB0aGluZ3Mgb2ZmIGJ5CisgICAgICAgIC8vIGxvYWRpbmcgYW55IHByZWV4aXN0aW5n
IHRvZG9zIHRoYXQgbWlnaHQgYmUgc2F2ZWQgaW4gKmxvY2FsU3RvcmFnZSouCisgICAgICAgIGlu
aXRpYWxpemU6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRoaXMuYWxsQ2hlY2tib3ggPSB0
aGlzLiQoJy50b2dnbGUtYWxsJylbMF07CisgICAgICAgICAgICB0aGlzLiRpbnB1dCA9IHRoaXMu
JCgnLm5ldy10b2RvJyk7CisgICAgICAgICAgICB0aGlzLiRmb290ZXIgPSB0aGlzLiQoJy5mb290
ZXInKTsKKyAgICAgICAgICAgIHRoaXMuJG1haW4gPSB0aGlzLiQoJy5tYWluJyk7CisgICAgICAg
ICAgICB0aGlzLiRsaXN0ID0gJCgnLnRvZG8tbGlzdCcpOworCisgICAgICAgICAgICB0aGlzLmxp
c3RlblRvKGFwcC50b2RvcywgJ2FkZCcsIHRoaXMuYWRkT25lKTsKKyAgICAgICAgICAgIHRoaXMu
bGlzdGVuVG8oYXBwLnRvZG9zLCAncmVzZXQnLCB0aGlzLmFkZEFsbCk7CisgICAgICAgICAgICB0
aGlzLmxpc3RlblRvKGFwcC50b2RvcywgJ2NoYW5nZTpjb21wbGV0ZWQnLCB0aGlzLmZpbHRlck9u
ZSk7CisgICAgICAgICAgICB0aGlzLmxpc3RlblRvKGFwcC50b2RvcywgJ2ZpbHRlcicsIHRoaXMu
ZmlsdGVyQWxsKTsKKyAgICAgICAgICAgIHRoaXMubGlzdGVuVG8oYXBwLnRvZG9zLCAnYWxsJywg
Xy5kZWJvdW5jZSh0aGlzLnJlbmRlciwgMCkpOworCisgICAgICAgICAgICAvLyBTdXBwcmVzc2Vz
ICdhZGQnIGV2ZW50cyB3aXRoIHtyZXNldDogdHJ1ZX0gYW5kIHByZXZlbnRzIHRoZSBhcHAgdmll
dworICAgICAgICAgICAgLy8gZnJvbSBiZWluZyByZS1yZW5kZXJlZCBmb3IgZXZlcnkgbW9kZWwu
IE9ubHkgcmVuZGVycyB3aGVuIHRoZSAncmVzZXQnCisgICAgICAgICAgICAvLyBldmVudCBpcyB0
cmlnZ2VyZWQgYXQgdGhlIGVuZCBvZiB0aGUgZmV0Y2guCisgICAgICAgICAgICBhcHAudG9kb3Mu
ZmV0Y2goe3Jlc2V0OiB0cnVlfSk7CisgICAgICAgIH0sCisKKyAgICAgICAgLy8gUmUtcmVuZGVy
aW5nIHRoZSBBcHAganVzdCBtZWFucyByZWZyZXNoaW5nIHRoZSBzdGF0aXN0aWNzIC0tIHRoZSBy
ZXN0CisgICAgICAgIC8vIG9mIHRoZSBhcHAgZG9lc24ndCBjaGFuZ2UuCisgICAgICAgIHJlbmRl
cjogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdmFyIGNvbXBsZXRlZCA9IGFwcC50b2Rvcy5j
b21wbGV0ZWQoKS5sZW5ndGg7CisgICAgICAgICAgICB2YXIgcmVtYWluaW5nID0gYXBwLnRvZG9z
LnJlbWFpbmluZygpLmxlbmd0aDsKKworICAgICAgICAgICAgaWYgKGFwcC50b2Rvcy5sZW5ndGgp
IHsKKyAgICAgICAgICAgICAgICB0aGlzLiRtYWluLnNob3coKTsKKyAgICAgICAgICAgICAgICB0
aGlzLiRmb290ZXIuc2hvdygpOworCisgICAgICAgICAgICAgICAgdGhpcy4kZm9vdGVyLmh0bWwo
dGhpcy5zdGF0c1RlbXBsYXRlKHsKKyAgICAgICAgICAgICAgICAgICAgY29tcGxldGVkOiBjb21w
bGV0ZWQsCisgICAgICAgICAgICAgICAgICAgIHJlbWFpbmluZzogcmVtYWluaW5nCisgICAgICAg
ICAgICAgICAgfSkpOworCisgICAgICAgICAgICAgICAgdGhpcy4kKCcuZmlsdGVycyBsaSBhJykK
KyAgICAgICAgICAgICAgICAgICAgLnJlbW92ZUNsYXNzKCdzZWxlY3RlZCcpCisgICAgICAgICAg
ICAgICAgICAgIC5maWx0ZXIoJ1tocmVmPSIjLycgKyAoYXBwLlRvZG9GaWx0ZXIgfHwgJycpICsg
JyJdJykKKyAgICAgICAgICAgICAgICAgICAgLmFkZENsYXNzKCdzZWxlY3RlZCcpOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB0aGlzLiRtYWluLmhpZGUoKTsKKyAgICAg
ICAgICAgICAgICB0aGlzLiRmb290ZXIuaGlkZSgpOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICB0aGlzLmFsbENoZWNrYm94LmNoZWNrZWQgPSAhcmVtYWluaW5nOworICAgICAgICB9LAor
CisgICAgICAgIC8vIEFkZCBhIHNpbmdsZSB0b2RvIGl0ZW0gdG8gdGhlIGxpc3QgYnkgY3JlYXRp
bmcgYSB2aWV3IGZvciBpdCwgYW5kCisgICAgICAgIC8vIGFwcGVuZGluZyBpdHMgZWxlbWVudCB0
byB0aGUgYDx1bD5gLgorICAgICAgICBhZGRPbmU6IGZ1bmN0aW9uICh0b2RvKSB7CisgICAgICAg
ICAgICB2YXIgdmlldyA9IG5ldyBhcHAuVG9kb1ZpZXcoeyBtb2RlbDogdG9kbyB9KTsKKyAgICAg
ICAgICAgIHRoaXMuJGxpc3QuYXBwZW5kKHZpZXcucmVuZGVyKCkuZWwpOworICAgICAgICB9LAor
CisgICAgICAgIC8vIEFkZCBhbGwgaXRlbXMgaW4gdGhlICoqVG9kb3MqKiBjb2xsZWN0aW9uIGF0
IG9uY2UuCisgICAgICAgIGFkZEFsbDogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdGhpcy4k
bGlzdC5odG1sKCcnKTsKKyAgICAgICAgICAgIGFwcC50b2Rvcy5lYWNoKHRoaXMuYWRkT25lLCB0
aGlzKTsKKyAgICAgICAgfSwKKworICAgICAgICBmaWx0ZXJPbmU6IGZ1bmN0aW9uICh0b2RvKSB7
CisgICAgICAgICAgICB0b2RvLnRyaWdnZXIoJ3Zpc2libGUnKTsKKyAgICAgICAgfSwKKworICAg
ICAgICBmaWx0ZXJBbGw6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGFwcC50b2Rvcy5lYWNo
KHRoaXMuZmlsdGVyT25lLCB0aGlzKTsKKyAgICAgICAgfSwKKworICAgICAgICAvLyBHZW5lcmF0
ZSB0aGUgYXR0cmlidXRlcyBmb3IgYSBuZXcgVG9kbyBpdGVtLgorICAgICAgICBuZXdBdHRyaWJ1
dGVzOiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICByZXR1cm4geworICAgICAgICAgICAgICAg
IHRpdGxlOiB0aGlzLiRpbnB1dC52YWwoKS50cmltKCksCisgICAgICAgICAgICAgICAgb3JkZXI6
IGFwcC50b2Rvcy5uZXh0T3JkZXIoKSwKKyAgICAgICAgICAgICAgICBjb21wbGV0ZWQ6IGZhbHNl
CisgICAgICAgICAgICB9OworICAgICAgICB9LAorCisgICAgICAgIC8vIElmIHlvdSBoaXQgcmV0
dXJuIGluIHRoZSBtYWluIGlucHV0IGZpZWxkLCBjcmVhdGUgbmV3ICoqVG9kbyoqIG1vZGVsLAor
ICAgICAgICAvLyBwZXJzaXN0aW5nIGl0IHRvICptZW1vcnkqLgorICAgICAgICBjcmVhdGVPbkVu
dGVyOiBmdW5jdGlvbiAoZSkgeworICAgICAgICAgICAgaWYgKGUud2hpY2ggPT09IEVOVEVSX0tF
WSAmJiB0aGlzLiRpbnB1dC52YWwoKS50cmltKCkpIHsKKyAgICAgICAgICAgICAgICBhcHAudG9k
b3MuY3JlYXRlKHRoaXMubmV3QXR0cmlidXRlcygpKTsKKyAgICAgICAgICAgICAgICB0aGlzLiRp
bnB1dC52YWwoJycpOworICAgICAgICAgICAgfQorICAgICAgICB9LAorCisgICAgICAgIC8vIENs
ZWFyIGFsbCBjb21wbGV0ZWQgdG9kbyBpdGVtcywgZGVzdHJveWluZyB0aGVpciBtb2RlbHMuCisg
ICAgICAgIGNsZWFyQ29tcGxldGVkOiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBfLmludm9r
ZShhcHAudG9kb3MuY29tcGxldGVkKCksICdkZXN0cm95Jyk7CisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIH0sCisKKyAgICAgICAgdG9nZ2xlQWxsQ29tcGxldGU6IGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgIHZhciBjb21wbGV0ZWQgPSB0aGlzLmFsbENoZWNrYm94LmNoZWNr
ZWQ7CisKKyAgICAgICAgICAgIGFwcC50b2Rvcy5lYWNoKGZ1bmN0aW9uICh0b2RvKSB7CisgICAg
ICAgICAgICAgICAgdG9kby5zYXZlKHsKKyAgICAgICAgICAgICAgICAgICAgY29tcGxldGVkOiBj
b21wbGV0ZWQKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9
CiAgICAgfSk7CiB9KShqUXVlcnkpOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUv
anMvdmlld3MvdG9kby12aWV3LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvanMvdmlld3MvdG9k
by12aWV3LmpzCmluZGV4IDFmODJlN2YzYmUwNmQ1NmZkMzI0NWQ1YjUzZjY4OGVjZjljMWU5YWEu
LmJiM2I0MDQzZmY2ZTA3NzFhZGIwM2UyMDIwNjg0MTViNzMwM2JmZWQgMTAwNjQ0Ci0tLSBhL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2JhY2tib25lL2pzL3ZpZXdzL3RvZG8tdmlldy5qcworKysgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9iYWNrYm9uZS9qcy92aWV3cy90b2RvLXZpZXcuanMKQEAgLTEsNCArMSw0IEBACi0vKmdsb2Jh
bCBCYWNrYm9uZSwgalF1ZXJ5LCBfLCBFTlRFUl9LRVkgKi8KKy8qZ2xvYmFsIEJhY2tib25lLCBq
UXVlcnksIF8sIEVOVEVSX0tFWSwgRVNDX0tFWSAqLwogdmFyIGFwcCA9IGFwcCB8fCB7fTsKIAog
KGZ1bmN0aW9uICgkKSB7CkBAIC05LDg2ICs5LDExNSBAQCB2YXIgYXBwID0gYXBwIHx8IHt9Owog
CiAgICAgLy8gVGhlIERPTSBlbGVtZW50IGZvciBhIHRvZG8gaXRlbS4uLgogICAgIGFwcC5Ub2Rv
VmlldyA9IEJhY2tib25lLlZpZXcuZXh0ZW5kKHsKLSAgICAvLy4uLiBpcyBhIGxpc3QgdGFnLgot
ICAgIHRhZ05hbWU6ICAnbGknLAotCi0gICAgLy8gQ2FjaGUgdGhlIHRlbXBsYXRlIGZ1bmN0aW9u
IGZvciBhIHNpbmdsZSBpdGVtLgotICAgIHRlbXBsYXRlOiBfLnRlbXBsYXRlKCQoJyNpdGVtLXRl
bXBsYXRlJykuaHRtbCgpKSwKLQotICAgIC8vIFRoZSBET00gZXZlbnRzIHNwZWNpZmljIHRvIGFu
IGl0ZW0uCi0gICAgZXZlbnRzOiB7Ci0gICAgJ2NsaWNrIC50b2dnbGUnOiAndG9nZ2xlQ29tcGxl
dGVkJywKLSAgICAnZGJsY2xpY2sgbGFiZWwnOiAnZWRpdCcsCi0gICAgJ2NsaWNrIC5kZXN0cm95
JzogJ2NsZWFyJywKLSAgICAna2V5cHJlc3MgLmVkaXQnOiAndXBkYXRlT25FbnRlcicsCi0gICAg
J2JsdXIgLmVkaXQnOiAnY2xvc2UnCi0gICAgfSwKLQotICAgIC8vIFRoZSBUb2RvVmlldyBsaXN0
ZW5zIGZvciBjaGFuZ2VzIHRvIGl0cyBtb2RlbCwgcmUtcmVuZGVyaW5nLiBTaW5jZSB0aGVyZSdz
Ci0gICAgLy8gYSBvbmUtdG8tb25lIGNvcnJlc3BvbmRlbmNlIGJldHdlZW4gYSAqKlRvZG8qKiBh
bmQgYSAqKlRvZG9WaWV3KiogaW4gdGhpcwotICAgIC8vIGFwcCwgd2Ugc2V0IGEgZGlyZWN0IHJl
ZmVyZW5jZSBvbiB0aGUgbW9kZWwgZm9yIGNvbnZlbmllbmNlLgotICAgIGluaXRpYWxpemU6IGZ1
bmN0aW9uICgpIHsKLSAgICB0aGlzLmxpc3RlblRvKHRoaXMubW9kZWwsICdjaGFuZ2UnLCB0aGlz
LnJlbmRlcik7Ci0gICAgdGhpcy5saXN0ZW5Ubyh0aGlzLm1vZGVsLCAnZGVzdHJveScsIHRoaXMu
cmVtb3ZlKTsKLSAgICB0aGlzLmxpc3RlblRvKHRoaXMubW9kZWwsICd2aXNpYmxlJywgdGhpcy50
b2dnbGVWaXNpYmxlKTsKLSAgICB9LAotCi0gICAgLy8gUmUtcmVuZGVyIHRoZSB0aXRsZXMgb2Yg
dGhlIHRvZG8gaXRlbS4KLSAgICByZW5kZXI6IGZ1bmN0aW9uICgpIHsKLSAgICB0aGlzLiRlbC5o
dG1sKHRoaXMudGVtcGxhdGUodGhpcy5tb2RlbC50b0pTT04oKSkpOwotICAgIHRoaXMuJGVsLnRv
Z2dsZUNsYXNzKCdjb21wbGV0ZWQnLCB0aGlzLm1vZGVsLmdldCgnY29tcGxldGVkJykpOwotICAg
IHRoaXMudG9nZ2xlVmlzaWJsZSgpOwotICAgIHRoaXMuJGlucHV0ID0gdGhpcy4kKCcuZWRpdCcp
OwotICAgIHJldHVybiB0aGlzOwotICAgIH0sCi0KLSAgICB0b2dnbGVWaXNpYmxlOiBmdW5jdGlv
biAoKSB7Ci0gICAgdGhpcy4kZWwudG9nZ2xlQ2xhc3MoJ2hpZGRlbicsIHRoaXMuaXNIaWRkZW4o
KSk7Ci0gICAgfSwKLQotICAgIGlzSGlkZGVuOiBmdW5jdGlvbiAoKSB7Ci0gICAgdmFyIGlzQ29t
cGxldGVkID0gdGhpcy5tb2RlbC5nZXQoJ2NvbXBsZXRlZCcpOwotICAgIHJldHVybiAoLy8gaGlk
ZGVuIGNhc2VzIG9ubHkKLSAgICAoIWlzQ29tcGxldGVkICYmIGFwcC5Ub2RvRmlsdGVyID09PSAn
Y29tcGxldGVkJykgfHwKLSAgICAoaXNDb21wbGV0ZWQgJiYgYXBwLlRvZG9GaWx0ZXIgPT09ICdh
Y3RpdmUnKQotICAgICk7Ci0gICAgfSwKLQotICAgIC8vIFRvZ2dsZSB0aGUgYCJjb21wbGV0ZWQi
YCBzdGF0ZSBvZiB0aGUgbW9kZWwuCi0gICAgdG9nZ2xlQ29tcGxldGVkOiBmdW5jdGlvbiAoKSB7
Ci0gICAgdGhpcy5tb2RlbC50b2dnbGUoKTsKLSAgICB9LAotCi0gICAgLy8gU3dpdGNoIHRoaXMg
dmlldyBpbnRvIGAiZWRpdGluZyJgIG1vZGUsIGRpc3BsYXlpbmcgdGhlIGlucHV0IGZpZWxkLgot
ICAgIGVkaXQ6IGZ1bmN0aW9uICgpIHsKLSAgICB0aGlzLiRlbC5hZGRDbGFzcygnZWRpdGluZycp
OwotICAgIHRoaXMuJGlucHV0LmZvY3VzKCk7Ci0gICAgfSwKLQotICAgIC8vIENsb3NlIHRoZSBg
ImVkaXRpbmciYCBtb2RlLCBzYXZpbmcgY2hhbmdlcyB0byB0aGUgdG9kby4KLSAgICBjbG9zZTog
ZnVuY3Rpb24gKCkgewotICAgIHZhciB0cmltbWVkVmFsdWUgPSB0aGlzLiRpbnB1dC52YWwoKS50
cmltKCk7Ci0gICAgdGhpcy4kaW5wdXQudmFsKHRyaW1tZWRWYWx1ZSk7Ci0KLSAgICBpZiAodHJp
bW1lZFZhbHVlKSB7Ci0gICAgdGhpcy5tb2RlbC5zYXZlKHsgdGl0bGU6IHRyaW1tZWRWYWx1ZSB9
KTsKLSAgICB9IGVsc2UgewotICAgIHRoaXMuY2xlYXIoKTsKLSAgICB9Ci0KLSAgICB0aGlzLiRl
bC5yZW1vdmVDbGFzcygnZWRpdGluZycpOwotICAgIH0sCi0KLSAgICAvLyBJZiB5b3UgaGl0IGBl
bnRlcmAsIHdlJ3JlIHRocm91Z2ggZWRpdGluZyB0aGUgaXRlbS4KLSAgICB1cGRhdGVPbkVudGVy
OiBmdW5jdGlvbiAoZSkgewotICAgIGlmIChlLndoaWNoID09PSBFTlRFUl9LRVkpIHsKLSAgICB0
aGlzLmNsb3NlKCk7Ci0gICAgfQotICAgIH0sCi0KLSAgICAvLyBSZW1vdmUgdGhlIGl0ZW0sIGRl
c3Ryb3kgdGhlIG1vZGVsIGZyb20gKmxvY2FsU3RvcmFnZSogYW5kIGRlbGV0ZSBpdHMgdmlldy4K
LSAgICBjbGVhcjogZnVuY3Rpb24gKCkgewotICAgIHRoaXMubW9kZWwuZGVzdHJveSgpOwotICAg
IH0KKyAgICAgICAgLy8uLi4gaXMgYSBsaXN0IHRhZy4KKyAgICAgICAgdGFnTmFtZTogICdsaScs
CisKKyAgICAgICAgLy8gQ2FjaGUgdGhlIHRlbXBsYXRlIGZ1bmN0aW9uIGZvciBhIHNpbmdsZSBp
dGVtLgorICAgICAgICB0ZW1wbGF0ZTogXy50ZW1wbGF0ZSgkKCcjaXRlbS10ZW1wbGF0ZScpLmh0
bWwoKSksCisKKyAgICAgICAgLy8gVGhlIERPTSBldmVudHMgc3BlY2lmaWMgdG8gYW4gaXRlbS4K
KyAgICAgICAgZXZlbnRzOiB7CisgICAgICAgICAgICAnY2xpY2sgLnRvZ2dsZSc6ICd0b2dnbGVD
b21wbGV0ZWQnLAorICAgICAgICAgICAgJ2RibGNsaWNrIGxhYmVsJzogJ2VkaXQnLAorICAgICAg
ICAgICAgJ2NsaWNrIC5kZXN0cm95JzogJ2NsZWFyJywKKyAgICAgICAgICAgICdrZXlwcmVzcyAu
ZWRpdCc6ICd1cGRhdGVPbkVudGVyJywKKyAgICAgICAgICAgICdrZXlkb3duIC5lZGl0JzogJ3Jl
dmVydE9uRXNjYXBlJywKKyAgICAgICAgICAgICdibHVyIC5lZGl0JzogJ2Nsb3NlJworICAgICAg
ICB9LAorCisgICAgICAgIC8vIFRoZSBUb2RvVmlldyBsaXN0ZW5zIGZvciBjaGFuZ2VzIHRvIGl0
cyBtb2RlbCwgcmUtcmVuZGVyaW5nLiBTaW5jZQorICAgICAgICAvLyB0aGVyZSdzIGEgb25lLXRv
LW9uZSBjb3JyZXNwb25kZW5jZSBiZXR3ZWVuIGEgKipUb2RvKiogYW5kIGEKKyAgICAgICAgLy8g
KipUb2RvVmlldyoqIGluIHRoaXMgYXBwLCB3ZSBzZXQgYSBkaXJlY3QgcmVmZXJlbmNlIG9uIHRo
ZSBtb2RlbCBmb3IKKyAgICAgICAgLy8gY29udmVuaWVuY2UuCisgICAgICAgIGluaXRpYWxpemU6
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRoaXMubGlzdGVuVG8odGhpcy5tb2RlbCwgJ2No
YW5nZScsIHRoaXMucmVuZGVyKTsKKyAgICAgICAgICAgIHRoaXMubGlzdGVuVG8odGhpcy5tb2Rl
bCwgJ2Rlc3Ryb3knLCB0aGlzLnJlbW92ZSk7CisgICAgICAgICAgICB0aGlzLmxpc3RlblRvKHRo
aXMubW9kZWwsICd2aXNpYmxlJywgdGhpcy50b2dnbGVWaXNpYmxlKTsKKyAgICAgICAgfSwKKwor
ICAgICAgICAvLyBSZS1yZW5kZXIgdGhlIHRpdGxlcyBvZiB0aGUgdG9kbyBpdGVtLgorICAgICAg
ICByZW5kZXI6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIC8vIEJhY2tib25lIExvY2FsU3Rv
cmFnZSBpcyBhZGRpbmcgYGlkYCBhdHRyaWJ1dGUgaW5zdGFudGx5IGFmdGVyCisgICAgICAgICAg
ICAvLyBjcmVhdGluZyBhIG1vZGVsLiAgVGhpcyBjYXVzZXMgb3VyIFRvZG9WaWV3IHRvIHJlbmRl
ciB0d2ljZS4gT25jZQorICAgICAgICAgICAgLy8gYWZ0ZXIgY3JlYXRpbmcgYSBtb2RlbCBhbmQg
b25jZSBvbiBgaWRgIGNoYW5nZS4gIFdlIHdhbnQgdG8KKyAgICAgICAgICAgIC8vIGZpbHRlciBv
dXQgdGhlIHNlY29uZCByZWR1bmRhbnQgcmVuZGVyLCB3aGljaCBpcyBjYXVzZWQgYnkgdGhpcwor
ICAgICAgICAgICAgLy8gYGlkYCBjaGFuZ2UuICBJdCdzIGtub3duIEJhY2tib25lIExvY2FsU3Rv
cmFnZSBidWcsIHRoZXJlZm9yZQorICAgICAgICAgICAgLy8gd2UndmUgdG8gY3JlYXRlIGEgd29y
a2Fyb3VuZC4KKyAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YXN0ZWpzL3RvZG9t
dmMvaXNzdWVzLzQ2OQorICAgICAgICAgICAgaWYgKHRoaXMubW9kZWwuY2hhbmdlZC5pZCAhPT0g
dW5kZWZpbmVkKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB0aGlzLiRlbC5odG1sKHRoaXMudGVtcGxhdGUodGhpcy5tb2RlbC50b0pTT04o
KSkpOworICAgICAgICAgICAgdGhpcy4kZWwudG9nZ2xlQ2xhc3MoJ2NvbXBsZXRlZCcsIHRoaXMu
bW9kZWwuZ2V0KCdjb21wbGV0ZWQnKSk7CisgICAgICAgICAgICB0aGlzLnRvZ2dsZVZpc2libGUo
KTsKKyAgICAgICAgICAgIHRoaXMuJGlucHV0ID0gdGhpcy4kKCcuZWRpdCcpOworICAgICAgICAg
ICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0sCisKKyAgICAgICAgdG9nZ2xlVmlzaWJsZTogZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgdGhpcy4kZWwudG9nZ2xlQ2xhc3MoJ2hpZGRlbicsIHRo
aXMuaXNIaWRkZW4oKSk7CisgICAgICAgIH0sCisKKyAgICAgICAgaXNIaWRkZW46IGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLm1vZGVsLmdldCgnY29tcGxldGVkJykgPwor
ICAgICAgICAgICAgICAgIGFwcC5Ub2RvRmlsdGVyID09PSAnYWN0aXZlJyA6CisgICAgICAgICAg
ICAgICAgYXBwLlRvZG9GaWx0ZXIgPT09ICdjb21wbGV0ZWQnOworICAgICAgICB9LAorCisgICAg
ICAgIC8vIFRvZ2dsZSB0aGUgYCJjb21wbGV0ZWQiYCBzdGF0ZSBvZiB0aGUgbW9kZWwuCisgICAg
ICAgIHRvZ2dsZUNvbXBsZXRlZDogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdGhpcy5tb2Rl
bC50b2dnbGUoKTsKKyAgICAgICAgfSwKKworICAgICAgICAvLyBTd2l0Y2ggdGhpcyB2aWV3IGlu
dG8gYCJlZGl0aW5nImAgbW9kZSwgZGlzcGxheWluZyB0aGUgaW5wdXQgZmllbGQuCisgICAgICAg
IGVkaXQ6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRoaXMuJGVsLmFkZENsYXNzKCdlZGl0
aW5nJyk7CisgICAgICAgICAgICB0aGlzLiRpbnB1dC5mb2N1cygpOworICAgICAgICB9LAorCisg
ICAgICAgIC8vIENsb3NlIHRoZSBgImVkaXRpbmciYCBtb2RlLCBzYXZpbmcgY2hhbmdlcyB0byB0
aGUgdG9kby4KKyAgICAgICAgY2xvc2U6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHZhciB2
YWx1ZSA9IHRoaXMuJGlucHV0LnZhbCgpOworICAgICAgICAgICAgdmFyIHRyaW1tZWRWYWx1ZSA9
IHZhbHVlLnRyaW0oKTsKKworICAgICAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBoYW5kbGUg
Ymx1ciBldmVudHMgZnJvbSBhbiBpdGVtIHRoYXQgaXMgbm8KKyAgICAgICAgICAgIC8vIGxvbmdl
ciBiZWluZyBlZGl0ZWQuIFJlbHlpbmcgb24gdGhlIENTUyBjbGFzcyBoZXJlIGhhcyB0aGUKKyAg
ICAgICAgICAgIC8vIGJlbmVmaXQgb2YgdXMgbm90IGhhdmluZyB0byBtYWludGFpbiBzdGF0ZSBp
biB0aGUgRE9NIGFuZCB0aGUKKyAgICAgICAgICAgIC8vIEphdmFTY3JpcHQgbG9naWMuCisgICAg
ICAgICAgICBpZiAoIXRoaXMuJGVsLmhhc0NsYXNzKCdlZGl0aW5nJykpIHsKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh0cmltbWVkVmFs
dWUpIHsKKyAgICAgICAgICAgICAgICB0aGlzLm1vZGVsLnNhdmUoeyB0aXRsZTogdHJpbW1lZFZh
bHVlIH0pOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB0aGlzLmNsZWFy
KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRoaXMuJGVsLnJlbW92ZUNsYXNzKCdl
ZGl0aW5nJyk7CisgICAgICAgIH0sCisKKyAgICAgICAgLy8gSWYgeW91IGhpdCBgZW50ZXJgLCB3
ZSdyZSB0aHJvdWdoIGVkaXRpbmcgdGhlIGl0ZW0uCisgICAgICAgIHVwZGF0ZU9uRW50ZXI6IGZ1
bmN0aW9uIChlKSB7CisgICAgICAgICAgICBpZiAoZS53aGljaCA9PT0gRU5URVJfS0VZKSB7Cisg
ICAgICAgICAgICAgICAgdGhpcy5jbG9zZSgpOworICAgICAgICAgICAgfQorICAgICAgICB9LAor
CisgICAgICAgIC8vIElmIHlvdSdyZSBwcmVzc2luZyBgZXNjYXBlYCB3ZSByZXZlcnQgeW91ciBj
aGFuZ2UgYnkgc2ltcGx5IGxlYXZpbmcKKyAgICAgICAgLy8gdGhlIGBlZGl0aW5nYCBzdGF0ZS4K
KyAgICAgICAgcmV2ZXJ0T25Fc2NhcGU6IGZ1bmN0aW9uIChlKSB7CisgICAgICAgICAgICBpZiAo
ZS53aGljaCA9PT0gRVNDX0tFWSkgeworICAgICAgICAgICAgICAgIHRoaXMuJGVsLnJlbW92ZUNs
YXNzKCdlZGl0aW5nJyk7CisgICAgICAgICAgICAgICAgLy8gQWxzbyByZXNldCB0aGUgaGlkZGVu
IGlucHV0IGJhY2sgdG8gdGhlIG9yaWdpbmFsIHZhbHVlLgorICAgICAgICAgICAgICAgIHRoaXMu
JGlucHV0LnZhbCh0aGlzLm1vZGVsLmdldCgndGl0bGUnKSk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0sCisKKyAgICAgICAgLy8gUmVtb3ZlIHRoZSBpdGVtLCBkZXN0cm95IHRoZSBtb2RlbCBm
cm9tICpsb2NhbFN0b3JhZ2UqIGFuZCBkZWxldGUgaXRzIHZpZXcuCisgICAgICAgIGNsZWFyOiBm
dW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0aGlzLm1vZGVsLmRlc3Ryb3koKTsKKyAgICAgICAg
fQogICAgIH0pOwogfSkoalF1ZXJ5KTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25l
L25vZGVfbW9kdWxlcy9iYWNrYm9uZS9MSUNFTlNFIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9k
ZV9tb2R1bGVzL2JhY2tib25lL0xJQ0VOU0UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDJjODliMjYwODEwOTFkYzBi
YmI4ZDEzMjM5MjllZmEwNGJlZmRjZQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2Jh
Y2tib25lL25vZGVfbW9kdWxlcy9iYWNrYm9uZS9MSUNFTlNFCkBAIC0wLDAgKzEsMjIgQEAKK0Nv
cHlyaWdodCAoYykgMjAxMC0yMDE2IEplcmVteSBBc2hrZW5hcywgRG9jdW1lbnRDbG91ZAorCitQ
ZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNv
bgorb2J0YWluaW5nIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3Vt
ZW50YXRpb24KK2ZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJl
IHdpdGhvdXQKK3Jlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSBy
aWdodHMgdG8gdXNlLAorY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwg
c3VibGljZW5zZSwgYW5kL29yIHNlbGwKK2NvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBw
ZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNv
LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcKK2NvbmRpdGlvbnM6CisKK1RoZSBhYm92ZSBjb3B5
cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlCitpbmNsdWRl
ZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4K
KworVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0Yg
QU5ZIEtJTkQsCitFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQg
VE8gVEhFIFdBUlJBTlRJRVMKK09GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQU5ECitOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBBVVRIT1JTIE9SIENPUFlSSUdIVAorSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwg
REFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksCitXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05U
UkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKK0ZST00sIE9VVCBPRiBPUiBJTiBDT05O
RUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKK09USEVSIERFQUxJTkdTIElO
IFRIRSBTT0ZUV0FSRS4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9k
dWxlcy9iYWNrYm9uZS9SRUFETUUubWQgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVs
ZXMvYmFja2JvbmUvUkVBRE1FLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3NmI3ZmMzZWI0NDAzMWY4MTk5ZjZk
NjI0YTA4NzU0M2E3MjcwNmQKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9u
ZS9ub2RlX21vZHVsZXMvYmFja2JvbmUvUkVBRE1FLm1kCkBAIC0wLDAgKzEsMzQgQEAKKyAgICAg
X19fXyAgICAgICAgICAgICAgICAgICAgIF9fICAgICAgX18KKyAgICAvXCAgX2BcICAgICAgICAg
ICAgICAgICAgL1wgXCAgICAvXCBcICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBf
XworICAgIFwgXCBcIFwgXCAgICAgX18gICAgICBfX19cIFwgXC8nXFwgXCBcX19fXyAgICBfX18g
ICAgIF9fXyAgICAgIF9fICAgICAgL1xfXCAgICBfX19fCisgICAgIFwgXCAgXyA8JyAgLydfX2Bc
ICAgLydfX19cIFwgLCA8IFwgXCAnX19gXCAgLyBfX2BcIC8nIF8gYFwgIC8nX19gXCAgICBcL1wg
XCAgLycsX19cCisgICAgICBcIFwgXCBcIFwvXCBcIFwuXF8vXCBcX18vXCBcIFxcYFxcIFwgXCBc
IFwvXCBcIFwgXC9cIFwvXCBcL1wgIF9fLyAgX18gXCBcIFwvXF9fLCBgXAorICAgICAgIFwgXF9f
X18vXCBcX18vLlxfXCBcX19fX1xcIFxfXCBcX1wgXF8sX18vXCBcX19fXy9cIFxfXCBcX1wgXF9f
X19cL1xfXF9cIFwgXC9cX19fXy8KKyAgICAgICAgXC9fX18vICBcL19fL1wvXy9cL19fX18vIFwv
Xy9cL18vXC9fX18vICBcL19fXy8gIFwvXy9cL18vXC9fX19fL1wvXy9cIFxfXCBcL19fXy8KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwgXF9fX18vCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXC9fX18vCisgICAg
KF8nX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXydfKQorICAgIChfLuKAlOKAlOKAlOKAlOKAlOKAlOKA
lOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKA
lOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKA
lOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKA
lOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlC5fKQorCisKK0Jh
Y2tib25lIHN1cHBsaWVzIHN0cnVjdHVyZSB0byBKYXZhU2NyaXB0LWhlYXZ5IGFwcGxpY2F0aW9u
cyBieSBwcm92aWRpbmcgbW9kZWxzIHdpdGgga2V5LXZhbHVlIGJpbmRpbmcgYW5kIGN1c3RvbSBl
dmVudHMsIGNvbGxlY3Rpb25zIHdpdGggYSByaWNoIEFQSSBvZiBlbnVtZXJhYmxlIGZ1bmN0aW9u
cywgdmlld3Mgd2l0aCBkZWNsYXJhdGl2ZSBldmVudCBoYW5kbGluZywgYW5kIGNvbm5lY3RzIGl0
IGFsbCB0byB5b3VyIGV4aXN0aW5nIGFwcGxpY2F0aW9uIG92ZXIgYSBSRVNUZnVsIEpTT04gaW50
ZXJmYWNlLgorCitGb3IgRG9jcywgTGljZW5zZSwgVGVzdHMsIHByZS1wYWNrZWQgZG93bmxvYWRz
LCBhbmQgZXZlcnl0aGluZyBlbHNlLCByZWFsbHksIHNlZToKK2h0dHA6Ly9iYWNrYm9uZWpzLm9y
ZworCitUbyBzdWdnZXN0IGEgZmVhdHVyZSBvciByZXBvcnQgYSBidWc6CitodHRwczovL2dpdGh1
Yi5jb20vamFzaGtlbmFzL2JhY2tib25lL2lzc3VlcworCitGb3IgcXVlc3Rpb25zIG9uIHdvcmtp
bmcgd2l0aCBCYWNrYm9uZSBvciBnZW5lcmFsIGRpc2N1c3Npb25zOgoraHR0cHM6Ly9ncm91cHMu
Z29vZ2xlLmNvbS9mb3J1bS8jIWZvcnVtL2JhY2tib25lanMsCitodHRwOi8vc3RhY2tvdmVyZmxv
dy5jb20vcXVlc3Rpb25zL3RhZ2dlZC9iYWNrYm9uZS5qcywgb3IKK2h0dHBzOi8vZ2l0dGVyLmlt
L2phc2hrZW5hcy9iYWNrYm9uZQorCitCYWNrYm9uZSBpcyBhbiBvcGVuLXNvdXJjZWQgY29tcG9u
ZW50IG9mIERvY3VtZW50Q2xvdWQ6CitodHRwczovL2dpdGh1Yi5jb20vZG9jdW1lbnRjbG91ZAor
CitNYW55IHRoYW5rcyB0byBvdXIgY29udHJpYnV0b3JzOgoraHR0cHM6Ly9naXRodWIuY29tL2ph
c2hrZW5hcy9iYWNrYm9uZS9ncmFwaHMvY29udHJpYnV0b3JzCisKK1NwZWNpYWwgdGhhbmtzIHRv
IFJvYmVydCBLaWVmZmVyIGZvciB0aGUgb3JpZ2luYWwgcGhpbG9zb3BoeSBiZWhpbmQgQmFja2Jv
bmUuCitodHRwczovL2dpdGh1Yi5jb20vYnJvb2ZhCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9i
YWNrYm9uZS9ub2RlX21vZHVsZXMvYmFja2JvbmUvYmFja2JvbmUtbWluLmpzIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2JhY2tib25lL2JhY2tib25lLW1pbi5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40MzVhNzJjOWYxYjgzZTg2Y2RhZTUyZjEyODhmMmFiNzYyZmIyYTk1Ci0tLSAvZGV2L251
bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2JhY2tib25lL2JhY2ti
b25lLW1pbi5qcwpAQCAtMCwwICsxLDIgQEAKKyhmdW5jdGlvbih0KXt2YXIgZT10eXBlb2Ygc2Vs
Zj09Im9iamVjdCImJnNlbGYuc2VsZj09PXNlbGYmJnNlbGZ8fHR5cGVvZiBnbG9iYWw9PSJvYmpl
Y3QiJiZnbG9iYWwuZ2xvYmFsPT09Z2xvYmFsJiZnbG9iYWw7aWYodHlwZW9mIGRlZmluZT09PSJm
dW5jdGlvbiImJmRlZmluZS5hbWQpe2RlZmluZShbInVuZGVyc2NvcmUiLCJqcXVlcnkiLCJleHBv
cnRzIl0sZnVuY3Rpb24oaSxyLG4pe2UuQmFja2JvbmU9dChlLG4saSxyKX0pfWVsc2UgaWYodHlw
ZW9mIGV4cG9ydHMhPT0idW5kZWZpbmVkIil7dmFyIGk9cmVxdWlyZSgidW5kZXJzY29yZSIpLHI7
dHJ5e3I9cmVxdWlyZSgianF1ZXJ5Iil9Y2F0Y2gobil7fXQoZSxleHBvcnRzLGkscil9ZWxzZXtl
LkJhY2tib25lPXQoZSx7fSxlLl8sZS5qUXVlcnl8fGUuWmVwdG98fGUuZW5kZXJ8fGUuJCl9fSko
ZnVuY3Rpb24odCxlLGkscil7dmFyIG49dC5CYWNrYm9uZTt2YXIgcz1BcnJheS5wcm90b3R5cGUu
c2xpY2U7ZS5WRVJTSU9OPSIxLjMuMyI7ZS4kPXI7ZS5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7dC5C
YWNrYm9uZT1uO3JldHVybiB0aGlzfTtlLmVtdWxhdGVIVFRQPWZhbHNlO2UuZW11bGF0ZUpTT049
ZmFsc2U7dmFyIGE9ZnVuY3Rpb24odCxlLHIpe3N3aXRjaCh0KXtjYXNlIDE6cmV0dXJuIGZ1bmN0
aW9uKCl7cmV0dXJuIGlbZV0odGhpc1tyXSl9O2Nhc2UgMjpyZXR1cm4gZnVuY3Rpb24odCl7cmV0
dXJuIGlbZV0odGhpc1tyXSx0KX07Y2FzZSAzOnJldHVybiBmdW5jdGlvbih0LG4pe3JldHVybiBp
W2VdKHRoaXNbcl0sbyh0LHRoaXMpLG4pfTtjYXNlIDQ6cmV0dXJuIGZ1bmN0aW9uKHQsbixzKXty
ZXR1cm4gaVtlXSh0aGlzW3JdLG8odCx0aGlzKSxuLHMpfTtkZWZhdWx0OnJldHVybiBmdW5jdGlv
bigpe3ZhciB0PXMuY2FsbChhcmd1bWVudHMpO3QudW5zaGlmdCh0aGlzW3JdKTtyZXR1cm4gaVtl
XS5hcHBseShpLHQpfX19O3ZhciBoPWZ1bmN0aW9uKHQsZSxyKXtpLmVhY2goZSxmdW5jdGlvbihl
LG4pe2lmKGlbbl0pdC5wcm90b3R5cGVbbl09YShlLG4scil9KX07dmFyIG89ZnVuY3Rpb24odCxl
KXtpZihpLmlzRnVuY3Rpb24odCkpcmV0dXJuIHQ7aWYoaS5pc09iamVjdCh0KSYmIWUuX2lzTW9k
ZWwodCkpcmV0dXJuIGwodCk7aWYoaS5pc1N0cmluZyh0KSlyZXR1cm4gZnVuY3Rpb24oZSl7cmV0
dXJuIGUuZ2V0KHQpfTtyZXR1cm4gdH07dmFyIGw9ZnVuY3Rpb24odCl7dmFyIGU9aS5tYXRjaGVz
KHQpO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZSh0LmF0dHJpYnV0ZXMpfX07dmFyIHU9ZS5F
dmVudHM9e307dmFyIGM9L1xzKy87dmFyIGY9ZnVuY3Rpb24odCxlLHIsbixzKXt2YXIgYT0wLGg7
aWYociYmdHlwZW9mIHI9PT0ib2JqZWN0Iil7aWYobiE9PXZvaWQgMCYmImNvbnRleHQiaW4gcyYm
cy5jb250ZXh0PT09dm9pZCAwKXMuY29udGV4dD1uO2ZvcihoPWkua2V5cyhyKTthPGgubGVuZ3Ro
O2ErKyl7ZT1mKHQsZSxoW2FdLHJbaFthXV0scyl9fWVsc2UgaWYociYmYy50ZXN0KHIpKXtmb3Io
aD1yLnNwbGl0KGMpO2E8aC5sZW5ndGg7YSsrKXtlPXQoZSxoW2FdLG4scyl9fWVsc2V7ZT10KGUs
cixuLHMpfXJldHVybiBlfTt1Lm9uPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gZCh0aGlzLHQsZSxp
KX07dmFyIGQ9ZnVuY3Rpb24odCxlLGkscixuKXt0Ll9ldmVudHM9Zih2LHQuX2V2ZW50c3x8e30s
ZSxpLHtjb250ZXh0OnIsY3R4OnQsbGlzdGVuaW5nOm59KTtpZihuKXt2YXIgcz10Ll9saXN0ZW5l
cnN8fCh0Ll9saXN0ZW5lcnM9e30pO3Nbbi5pZF09bn1yZXR1cm4gdH07dS5saXN0ZW5Ubz1mdW5j
dGlvbih0LGUscil7aWYoIXQpcmV0dXJuIHRoaXM7dmFyIG49dC5fbGlzdGVuSWR8fCh0Ll9saXN0
ZW5JZD1pLnVuaXF1ZUlkKCJsIikpO3ZhciBzPXRoaXMuX2xpc3RlbmluZ1RvfHwodGhpcy5fbGlz
dGVuaW5nVG89e30pO3ZhciBhPXNbbl07aWYoIWEpe3ZhciBoPXRoaXMuX2xpc3RlbklkfHwodGhp
cy5fbGlzdGVuSWQ9aS51bmlxdWVJZCgibCIpKTthPXNbbl09e29iajp0LG9iaklkOm4saWQ6aCxs
aXN0ZW5pbmdUbzpzLGNvdW50OjB9fWQodCxlLHIsdGhpcyxhKTtyZXR1cm4gdGhpc307dmFyIHY9
ZnVuY3Rpb24odCxlLGkscil7aWYoaSl7dmFyIG49dFtlXXx8KHRbZV09W10pO3ZhciBzPXIuY29u
dGV4dCxhPXIuY3R4LGg9ci5saXN0ZW5pbmc7aWYoaCloLmNvdW50Kys7bi5wdXNoKHtjYWxsYmFj
azppLGNvbnRleHQ6cyxjdHg6c3x8YSxsaXN0ZW5pbmc6aH0pfXJldHVybiB0fTt1Lm9mZj1mdW5j
dGlvbih0LGUsaSl7aWYoIXRoaXMuX2V2ZW50cylyZXR1cm4gdGhpczt0aGlzLl9ldmVudHM9Zihn
LHRoaXMuX2V2ZW50cyx0LGUse2NvbnRleHQ6aSxsaXN0ZW5lcnM6dGhpcy5fbGlzdGVuZXJzfSk7
cmV0dXJuIHRoaXN9O3Uuc3RvcExpc3RlbmluZz1mdW5jdGlvbih0LGUscil7dmFyIG49dGhpcy5f
bGlzdGVuaW5nVG87aWYoIW4pcmV0dXJuIHRoaXM7dmFyIHM9dD9bdC5fbGlzdGVuSWRdOmkua2V5
cyhuKTtmb3IodmFyIGE9MDthPHMubGVuZ3RoO2ErKyl7dmFyIGg9bltzW2FdXTtpZighaClicmVh
aztoLm9iai5vZmYoZSxyLHRoaXMpfXJldHVybiB0aGlzfTt2YXIgZz1mdW5jdGlvbih0LGUscixu
KXtpZighdClyZXR1cm47dmFyIHM9MCxhO3ZhciBoPW4uY29udGV4dCxvPW4ubGlzdGVuZXJzO2lm
KCFlJiYhciYmIWgpe3ZhciBsPWkua2V5cyhvKTtmb3IoO3M8bC5sZW5ndGg7cysrKXthPW9bbFtz
XV07ZGVsZXRlIG9bYS5pZF07ZGVsZXRlIGEubGlzdGVuaW5nVG9bYS5vYmpJZF19cmV0dXJufXZh
ciB1PWU/W2VdOmkua2V5cyh0KTtmb3IoO3M8dS5sZW5ndGg7cysrKXtlPXVbc107dmFyIGM9dFtl
XTtpZighYylicmVhazt2YXIgZj1bXTtmb3IodmFyIGQ9MDtkPGMubGVuZ3RoO2QrKyl7dmFyIHY9
Y1tkXTtpZihyJiZyIT09di5jYWxsYmFjayYmciE9PXYuY2FsbGJhY2suX2NhbGxiYWNrfHxoJiZo
IT09di5jb250ZXh0KXtmLnB1c2godil9ZWxzZXthPXYubGlzdGVuaW5nO2lmKGEmJi0tYS5jb3Vu
dD09PTApe2RlbGV0ZSBvW2EuaWRdO2RlbGV0ZSBhLmxpc3RlbmluZ1RvW2Eub2JqSWRdfX19aWYo
Zi5sZW5ndGgpe3RbZV09Zn1lbHNle2RlbGV0ZSB0W2VdfX1yZXR1cm4gdH07dS5vbmNlPWZ1bmN0
aW9uKHQsZSxyKXt2YXIgbj1mKHAse30sdCxlLGkuYmluZCh0aGlzLm9mZix0aGlzKSk7aWYodHlw
ZW9mIHQ9PT0ic3RyaW5nIiYmcj09bnVsbCllPXZvaWQgMDtyZXR1cm4gdGhpcy5vbihuLGUscil9
O3UubGlzdGVuVG9PbmNlPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1mKHAse30sZSxyLGkuYmluZCh0
aGlzLnN0b3BMaXN0ZW5pbmcsdGhpcyx0KSk7cmV0dXJuIHRoaXMubGlzdGVuVG8odCxuKX07dmFy
IHA9ZnVuY3Rpb24odCxlLHIsbil7aWYocil7dmFyIHM9dFtlXT1pLm9uY2UoZnVuY3Rpb24oKXtu
KGUscyk7ci5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KTtzLl9jYWxsYmFjaz1yfXJldHVybiB0fTt1
LnRyaWdnZXI9ZnVuY3Rpb24odCl7aWYoIXRoaXMuX2V2ZW50cylyZXR1cm4gdGhpczt2YXIgZT1N
YXRoLm1heCgwLGFyZ3VtZW50cy5sZW5ndGgtMSk7dmFyIGk9QXJyYXkoZSk7Zm9yKHZhciByPTA7
cjxlO3IrKylpW3JdPWFyZ3VtZW50c1tyKzFdO2YobSx0aGlzLl9ldmVudHMsdCx2b2lkIDAsaSk7
cmV0dXJuIHRoaXN9O3ZhciBtPWZ1bmN0aW9uKHQsZSxpLHIpe2lmKHQpe3ZhciBuPXRbZV07dmFy
IHM9dC5hbGw7aWYobiYmcylzPXMuc2xpY2UoKTtpZihuKV8obixyKTtpZihzKV8ocyxbZV0uY29u
Y2F0KHIpKX1yZXR1cm4gdH07dmFyIF89ZnVuY3Rpb24odCxlKXt2YXIgaSxyPS0xLG49dC5sZW5n
dGgscz1lWzBdLGE9ZVsxXSxoPWVbMl07c3dpdGNoKGUubGVuZ3RoKXtjYXNlIDA6d2hpbGUoKyty
PG4pKGk9dFtyXSkuY2FsbGJhY2suY2FsbChpLmN0eCk7cmV0dXJuO2Nhc2UgMTp3aGlsZSgrK3I8
bikoaT10W3JdKS5jYWxsYmFjay5jYWxsKGkuY3R4LHMpO3JldHVybjtjYXNlIDI6d2hpbGUoKyty
PG4pKGk9dFtyXSkuY2FsbGJhY2suY2FsbChpLmN0eCxzLGEpO3JldHVybjtjYXNlIDM6d2hpbGUo
KytyPG4pKGk9dFtyXSkuY2FsbGJhY2suY2FsbChpLmN0eCxzLGEsaCk7cmV0dXJuO2RlZmF1bHQ6
d2hpbGUoKytyPG4pKGk9dFtyXSkuY2FsbGJhY2suYXBwbHkoaS5jdHgsZSk7cmV0dXJufX07dS5i
aW5kPXUub247dS51bmJpbmQ9dS5vZmY7aS5leHRlbmQoZSx1KTt2YXIgeT1lLk1vZGVsPWZ1bmN0
aW9uKHQsZSl7dmFyIHI9dHx8e307ZXx8KGU9e30pO3RoaXMuY2lkPWkudW5pcXVlSWQodGhpcy5j
aWRQcmVmaXgpO3RoaXMuYXR0cmlidXRlcz17fTtpZihlLmNvbGxlY3Rpb24pdGhpcy5jb2xsZWN0
aW9uPWUuY29sbGVjdGlvbjtpZihlLnBhcnNlKXI9dGhpcy5wYXJzZShyLGUpfHx7fTt2YXIgbj1p
LnJlc3VsdCh0aGlzLCJkZWZhdWx0cyIpO3I9aS5kZWZhdWx0cyhpLmV4dGVuZCh7fSxuLHIpLG4p
O3RoaXMuc2V0KHIsZSk7dGhpcy5jaGFuZ2VkPXt9O3RoaXMuaW5pdGlhbGl6ZS5hcHBseSh0aGlz
LGFyZ3VtZW50cyl9O2kuZXh0ZW5kKHkucHJvdG90eXBlLHUse2NoYW5nZWQ6bnVsbCx2YWxpZGF0
aW9uRXJyb3I6bnVsbCxpZEF0dHJpYnV0ZToiaWQiLGNpZFByZWZpeDoiYyIsaW5pdGlhbGl6ZTpm
dW5jdGlvbigpe30sdG9KU09OOmZ1bmN0aW9uKHQpe3JldHVybiBpLmNsb25lKHRoaXMuYXR0cmli
dXRlcyl9LHN5bmM6ZnVuY3Rpb24oKXtyZXR1cm4gZS5zeW5jLmFwcGx5KHRoaXMsYXJndW1lbnRz
KX0sZ2V0OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmF0dHJpYnV0ZXNbdF19LGVzY2FwZTpmdW5j
dGlvbih0KXtyZXR1cm4gaS5lc2NhcGUodGhpcy5nZXQodCkpfSxoYXM6ZnVuY3Rpb24odCl7cmV0
dXJuIHRoaXMuZ2V0KHQpIT1udWxsfSxtYXRjaGVzOmZ1bmN0aW9uKHQpe3JldHVybiEhaS5pdGVy
YXRlZSh0LHRoaXMpKHRoaXMuYXR0cmlidXRlcyl9LHNldDpmdW5jdGlvbih0LGUscil7aWYodD09
bnVsbClyZXR1cm4gdGhpczt2YXIgbjtpZih0eXBlb2YgdD09PSJvYmplY3QiKXtuPXQ7cj1lfWVs
c2V7KG49e30pW3RdPWV9cnx8KHI9e30pO2lmKCF0aGlzLl92YWxpZGF0ZShuLHIpKXJldHVybiBm
YWxzZTt2YXIgcz1yLnVuc2V0O3ZhciBhPXIuc2lsZW50O3ZhciBoPVtdO3ZhciBvPXRoaXMuX2No
YW5naW5nO3RoaXMuX2NoYW5naW5nPXRydWU7aWYoIW8pe3RoaXMuX3ByZXZpb3VzQXR0cmlidXRl
cz1pLmNsb25lKHRoaXMuYXR0cmlidXRlcyk7dGhpcy5jaGFuZ2VkPXt9fXZhciBsPXRoaXMuYXR0
cmlidXRlczt2YXIgdT10aGlzLmNoYW5nZWQ7dmFyIGM9dGhpcy5fcHJldmlvdXNBdHRyaWJ1dGVz
O2Zvcih2YXIgZiBpbiBuKXtlPW5bZl07aWYoIWkuaXNFcXVhbChsW2ZdLGUpKWgucHVzaChmKTtp
ZighaS5pc0VxdWFsKGNbZl0sZSkpe3VbZl09ZX1lbHNle2RlbGV0ZSB1W2ZdfXM/ZGVsZXRlIGxb
Zl06bFtmXT1lfWlmKHRoaXMuaWRBdHRyaWJ1dGUgaW4gbil0aGlzLmlkPXRoaXMuZ2V0KHRoaXMu
aWRBdHRyaWJ1dGUpO2lmKCFhKXtpZihoLmxlbmd0aCl0aGlzLl9wZW5kaW5nPXI7Zm9yKHZhciBk
PTA7ZDxoLmxlbmd0aDtkKyspe3RoaXMudHJpZ2dlcigiY2hhbmdlOiIraFtkXSx0aGlzLGxbaFtk
XV0scil9fWlmKG8pcmV0dXJuIHRoaXM7aWYoIWEpe3doaWxlKHRoaXMuX3BlbmRpbmcpe3I9dGhp
cy5fcGVuZGluZzt0aGlzLl9wZW5kaW5nPWZhbHNlO3RoaXMudHJpZ2dlcigiY2hhbmdlIix0aGlz
LHIpfX10aGlzLl9wZW5kaW5nPWZhbHNlO3RoaXMuX2NoYW5naW5nPWZhbHNlO3JldHVybiB0aGlz
fSx1bnNldDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnNldCh0LHZvaWQgMCxpLmV4dGVuZCh7
fSxlLHt1bnNldDp0cnVlfSkpfSxjbGVhcjpmdW5jdGlvbih0KXt2YXIgZT17fTtmb3IodmFyIHIg
aW4gdGhpcy5hdHRyaWJ1dGVzKWVbcl09dm9pZCAwO3JldHVybiB0aGlzLnNldChlLGkuZXh0ZW5k
KHt9LHQse3Vuc2V0OnRydWV9KSl9LGhhc0NoYW5nZWQ6ZnVuY3Rpb24odCl7aWYodD09bnVsbCly
ZXR1cm4haS5pc0VtcHR5KHRoaXMuY2hhbmdlZCk7cmV0dXJuIGkuaGFzKHRoaXMuY2hhbmdlZCx0
KX0sY2hhbmdlZEF0dHJpYnV0ZXM6ZnVuY3Rpb24odCl7aWYoIXQpcmV0dXJuIHRoaXMuaGFzQ2hh
bmdlZCgpP2kuY2xvbmUodGhpcy5jaGFuZ2VkKTpmYWxzZTt2YXIgZT10aGlzLl9jaGFuZ2luZz90
aGlzLl9wcmV2aW91c0F0dHJpYnV0ZXM6dGhpcy5hdHRyaWJ1dGVzO3ZhciByPXt9O2Zvcih2YXIg
biBpbiB0KXt2YXIgcz10W25dO2lmKGkuaXNFcXVhbChlW25dLHMpKWNvbnRpbnVlO3Jbbl09c31y
ZXR1cm4gaS5zaXplKHIpP3I6ZmFsc2V9LHByZXZpb3VzOmZ1bmN0aW9uKHQpe2lmKHQ9PW51bGx8
fCF0aGlzLl9wcmV2aW91c0F0dHJpYnV0ZXMpcmV0dXJuIG51bGw7cmV0dXJuIHRoaXMuX3ByZXZp
b3VzQXR0cmlidXRlc1t0XX0scHJldmlvdXNBdHRyaWJ1dGVzOmZ1bmN0aW9uKCl7cmV0dXJuIGku
Y2xvbmUodGhpcy5fcHJldmlvdXNBdHRyaWJ1dGVzKX0sZmV0Y2g6ZnVuY3Rpb24odCl7dD1pLmV4
dGVuZCh7cGFyc2U6dHJ1ZX0sdCk7dmFyIGU9dGhpczt2YXIgcj10LnN1Y2Nlc3M7dC5zdWNjZXNz
PWZ1bmN0aW9uKGkpe3ZhciBuPXQucGFyc2U/ZS5wYXJzZShpLHQpOmk7aWYoIWUuc2V0KG4sdCkp
cmV0dXJuIGZhbHNlO2lmKHIpci5jYWxsKHQuY29udGV4dCxlLGksdCk7ZS50cmlnZ2VyKCJzeW5j
IixlLGksdCl9O0IodGhpcyx0KTtyZXR1cm4gdGhpcy5zeW5jKCJyZWFkIix0aGlzLHQpfSxzYXZl
OmZ1bmN0aW9uKHQsZSxyKXt2YXIgbjtpZih0PT1udWxsfHx0eXBlb2YgdD09PSJvYmplY3QiKXtu
PXQ7cj1lfWVsc2V7KG49e30pW3RdPWV9cj1pLmV4dGVuZCh7dmFsaWRhdGU6dHJ1ZSxwYXJzZTp0
cnVlfSxyKTt2YXIgcz1yLndhaXQ7aWYobiYmIXMpe2lmKCF0aGlzLnNldChuLHIpKXJldHVybiBm
YWxzZX1lbHNlIGlmKCF0aGlzLl92YWxpZGF0ZShuLHIpKXtyZXR1cm4gZmFsc2V9dmFyIGE9dGhp
czt2YXIgaD1yLnN1Y2Nlc3M7dmFyIG89dGhpcy5hdHRyaWJ1dGVzO3Iuc3VjY2Vzcz1mdW5jdGlv
bih0KXthLmF0dHJpYnV0ZXM9bzt2YXIgZT1yLnBhcnNlP2EucGFyc2UodCxyKTp0O2lmKHMpZT1p
LmV4dGVuZCh7fSxuLGUpO2lmKGUmJiFhLnNldChlLHIpKXJldHVybiBmYWxzZTtpZihoKWguY2Fs
bChyLmNvbnRleHQsYSx0LHIpO2EudHJpZ2dlcigic3luYyIsYSx0LHIpfTtCKHRoaXMscik7aWYo
biYmcyl0aGlzLmF0dHJpYnV0ZXM9aS5leHRlbmQoe30sbyxuKTt2YXIgbD10aGlzLmlzTmV3KCk/
ImNyZWF0ZSI6ci5wYXRjaD8icGF0Y2giOiJ1cGRhdGUiO2lmKGw9PT0icGF0Y2giJiYhci5hdHRy
cylyLmF0dHJzPW47dmFyIHU9dGhpcy5zeW5jKGwsdGhpcyxyKTt0aGlzLmF0dHJpYnV0ZXM9bzty
ZXR1cm4gdX0sZGVzdHJveTpmdW5jdGlvbih0KXt0PXQ/aS5jbG9uZSh0KTp7fTt2YXIgZT10aGlz
O3ZhciByPXQuc3VjY2Vzczt2YXIgbj10LndhaXQ7dmFyIHM9ZnVuY3Rpb24oKXtlLnN0b3BMaXN0
ZW5pbmcoKTtlLnRyaWdnZXIoImRlc3Ryb3kiLGUsZS5jb2xsZWN0aW9uLHQpfTt0LnN1Y2Nlc3M9
ZnVuY3Rpb24oaSl7aWYobilzKCk7aWYocilyLmNhbGwodC5jb250ZXh0LGUsaSx0KTtpZighZS5p
c05ldygpKWUudHJpZ2dlcigic3luYyIsZSxpLHQpfTt2YXIgYT1mYWxzZTtpZih0aGlzLmlzTmV3
KCkpe2kuZGVmZXIodC5zdWNjZXNzKX1lbHNle0IodGhpcyx0KTthPXRoaXMuc3luYygiZGVsZXRl
Iix0aGlzLHQpfWlmKCFuKXMoKTtyZXR1cm4gYX0sdXJsOmZ1bmN0aW9uKCl7dmFyIHQ9aS5yZXN1
bHQodGhpcywidXJsUm9vdCIpfHxpLnJlc3VsdCh0aGlzLmNvbGxlY3Rpb24sInVybCIpfHxGKCk7
aWYodGhpcy5pc05ldygpKXJldHVybiB0O3ZhciBlPXRoaXMuZ2V0KHRoaXMuaWRBdHRyaWJ1dGUp
O3JldHVybiB0LnJlcGxhY2UoL1teXC9dJC8sIiQmLyIpK2VuY29kZVVSSUNvbXBvbmVudChlKX0s
cGFyc2U6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdH0sY2xvbmU6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3
IHRoaXMuY29uc3RydWN0b3IodGhpcy5hdHRyaWJ1dGVzKX0saXNOZXc6ZnVuY3Rpb24oKXtyZXR1
cm4hdGhpcy5oYXModGhpcy5pZEF0dHJpYnV0ZSl9LGlzVmFsaWQ6ZnVuY3Rpb24odCl7cmV0dXJu
IHRoaXMuX3ZhbGlkYXRlKHt9LGkuZXh0ZW5kKHt9LHQse3ZhbGlkYXRlOnRydWV9KSl9LF92YWxp
ZGF0ZTpmdW5jdGlvbih0LGUpe2lmKCFlLnZhbGlkYXRlfHwhdGhpcy52YWxpZGF0ZSlyZXR1cm4g
dHJ1ZTt0PWkuZXh0ZW5kKHt9LHRoaXMuYXR0cmlidXRlcyx0KTt2YXIgcj10aGlzLnZhbGlkYXRp
b25FcnJvcj10aGlzLnZhbGlkYXRlKHQsZSl8fG51bGw7aWYoIXIpcmV0dXJuIHRydWU7dGhpcy50
cmlnZ2VyKCJpbnZhbGlkIix0aGlzLHIsaS5leHRlbmQoZSx7dmFsaWRhdGlvbkVycm9yOnJ9KSk7
cmV0dXJuIGZhbHNlfX0pO3ZhciBiPXtrZXlzOjEsdmFsdWVzOjEscGFpcnM6MSxpbnZlcnQ6MSxw
aWNrOjAsb21pdDowLGNoYWluOjEsaXNFbXB0eToxfTtoKHksYiwiYXR0cmlidXRlcyIpO3ZhciB4
PWUuQ29sbGVjdGlvbj1mdW5jdGlvbih0LGUpe2V8fChlPXt9KTtpZihlLm1vZGVsKXRoaXMubW9k
ZWw9ZS5tb2RlbDtpZihlLmNvbXBhcmF0b3IhPT12b2lkIDApdGhpcy5jb21wYXJhdG9yPWUuY29t
cGFyYXRvcjt0aGlzLl9yZXNldCgpO3RoaXMuaW5pdGlhbGl6ZS5hcHBseSh0aGlzLGFyZ3VtZW50
cyk7aWYodCl0aGlzLnJlc2V0KHQsaS5leHRlbmQoe3NpbGVudDp0cnVlfSxlKSl9O3ZhciB3PXth
ZGQ6dHJ1ZSxyZW1vdmU6dHJ1ZSxtZXJnZTp0cnVlfTt2YXIgRT17YWRkOnRydWUscmVtb3ZlOmZh
bHNlfTt2YXIgST1mdW5jdGlvbih0LGUsaSl7aT1NYXRoLm1pbihNYXRoLm1heChpLDApLHQubGVu
Z3RoKTt2YXIgcj1BcnJheSh0Lmxlbmd0aC1pKTt2YXIgbj1lLmxlbmd0aDt2YXIgcztmb3Iocz0w
O3M8ci5sZW5ndGg7cysrKXJbc109dFtzK2ldO2ZvcihzPTA7czxuO3MrKyl0W3MraV09ZVtzXTtm
b3Iocz0wO3M8ci5sZW5ndGg7cysrKXRbcytuK2ldPXJbc119O2kuZXh0ZW5kKHgucHJvdG90eXBl
LHUse21vZGVsOnksaW5pdGlhbGl6ZTpmdW5jdGlvbigpe30sdG9KU09OOmZ1bmN0aW9uKHQpe3Jl
dHVybiB0aGlzLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS50b0pTT04odCl9KX0sc3luYzpmdW5j
dGlvbigpe3JldHVybiBlLnN5bmMuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxhZGQ6ZnVuY3Rpb24o
dCxlKXtyZXR1cm4gdGhpcy5zZXQodCxpLmV4dGVuZCh7bWVyZ2U6ZmFsc2V9LGUsRSkpfSxyZW1v
dmU6ZnVuY3Rpb24odCxlKXtlPWkuZXh0ZW5kKHt9LGUpO3ZhciByPSFpLmlzQXJyYXkodCk7dD1y
P1t0XTp0LnNsaWNlKCk7dmFyIG49dGhpcy5fcmVtb3ZlTW9kZWxzKHQsZSk7aWYoIWUuc2lsZW50
JiZuLmxlbmd0aCl7ZS5jaGFuZ2VzPXthZGRlZDpbXSxtZXJnZWQ6W10scmVtb3ZlZDpufTt0aGlz
LnRyaWdnZXIoInVwZGF0ZSIsdGhpcyxlKX1yZXR1cm4gcj9uWzBdOm59LHNldDpmdW5jdGlvbih0
LGUpe2lmKHQ9PW51bGwpcmV0dXJuO2U9aS5leHRlbmQoe30sdyxlKTtpZihlLnBhcnNlJiYhdGhp
cy5faXNNb2RlbCh0KSl7dD10aGlzLnBhcnNlKHQsZSl8fFtdfXZhciByPSFpLmlzQXJyYXkodCk7
dD1yP1t0XTp0LnNsaWNlKCk7dmFyIG49ZS5hdDtpZihuIT1udWxsKW49K247aWYobj50aGlzLmxl
bmd0aCluPXRoaXMubGVuZ3RoO2lmKG48MCluKz10aGlzLmxlbmd0aCsxO3ZhciBzPVtdO3ZhciBh
PVtdO3ZhciBoPVtdO3ZhciBvPVtdO3ZhciBsPXt9O3ZhciB1PWUuYWRkO3ZhciBjPWUubWVyZ2U7
dmFyIGY9ZS5yZW1vdmU7dmFyIGQ9ZmFsc2U7dmFyIHY9dGhpcy5jb21wYXJhdG9yJiZuPT1udWxs
JiZlLnNvcnQhPT1mYWxzZTt2YXIgZz1pLmlzU3RyaW5nKHRoaXMuY29tcGFyYXRvcik/dGhpcy5j
b21wYXJhdG9yOm51bGw7dmFyIHAsbTtmb3IobT0wO208dC5sZW5ndGg7bSsrKXtwPXRbbV07dmFy
IF89dGhpcy5nZXQocCk7aWYoXyl7aWYoYyYmcCE9PV8pe3ZhciB5PXRoaXMuX2lzTW9kZWwocCk/
cC5hdHRyaWJ1dGVzOnA7aWYoZS5wYXJzZSl5PV8ucGFyc2UoeSxlKTtfLnNldCh5LGUpO2gucHVz
aChfKTtpZih2JiYhZClkPV8uaGFzQ2hhbmdlZChnKX1pZighbFtfLmNpZF0pe2xbXy5jaWRdPXRy
dWU7cy5wdXNoKF8pfXRbbV09X31lbHNlIGlmKHUpe3A9dFttXT10aGlzLl9wcmVwYXJlTW9kZWwo
cCxlKTtpZihwKXthLnB1c2gocCk7dGhpcy5fYWRkUmVmZXJlbmNlKHAsZSk7bFtwLmNpZF09dHJ1
ZTtzLnB1c2gocCl9fX1pZihmKXtmb3IobT0wO208dGhpcy5sZW5ndGg7bSsrKXtwPXRoaXMubW9k
ZWxzW21dO2lmKCFsW3AuY2lkXSlvLnB1c2gocCl9aWYoby5sZW5ndGgpdGhpcy5fcmVtb3ZlTW9k
ZWxzKG8sZSl9dmFyIGI9ZmFsc2U7dmFyIHg9IXYmJnUmJmY7aWYocy5sZW5ndGgmJngpe2I9dGhp
cy5sZW5ndGghPT1zLmxlbmd0aHx8aS5zb21lKHRoaXMubW9kZWxzLGZ1bmN0aW9uKHQsZSl7cmV0
dXJuIHQhPT1zW2VdfSk7dGhpcy5tb2RlbHMubGVuZ3RoPTA7SSh0aGlzLm1vZGVscyxzLDApO3Ro
aXMubGVuZ3RoPXRoaXMubW9kZWxzLmxlbmd0aH1lbHNlIGlmKGEubGVuZ3RoKXtpZih2KWQ9dHJ1
ZTtJKHRoaXMubW9kZWxzLGEsbj09bnVsbD90aGlzLmxlbmd0aDpuKTt0aGlzLmxlbmd0aD10aGlz
Lm1vZGVscy5sZW5ndGh9aWYoZCl0aGlzLnNvcnQoe3NpbGVudDp0cnVlfSk7aWYoIWUuc2lsZW50
KXtmb3IobT0wO208YS5sZW5ndGg7bSsrKXtpZihuIT1udWxsKWUuaW5kZXg9bittO3A9YVttXTtw
LnRyaWdnZXIoImFkZCIscCx0aGlzLGUpfWlmKGR8fGIpdGhpcy50cmlnZ2VyKCJzb3J0Iix0aGlz
LGUpO2lmKGEubGVuZ3RofHxvLmxlbmd0aHx8aC5sZW5ndGgpe2UuY2hhbmdlcz17YWRkZWQ6YSxy
ZW1vdmVkOm8sbWVyZ2VkOmh9O3RoaXMudHJpZ2dlcigidXBkYXRlIix0aGlzLGUpfX1yZXR1cm4g
cj90WzBdOnR9LHJlc2V0OmZ1bmN0aW9uKHQsZSl7ZT1lP2kuY2xvbmUoZSk6e307Zm9yKHZhciBy
PTA7cjx0aGlzLm1vZGVscy5sZW5ndGg7cisrKXt0aGlzLl9yZW1vdmVSZWZlcmVuY2UodGhpcy5t
b2RlbHNbcl0sZSl9ZS5wcmV2aW91c01vZGVscz10aGlzLm1vZGVsczt0aGlzLl9yZXNldCgpO3Q9
dGhpcy5hZGQodCxpLmV4dGVuZCh7c2lsZW50OnRydWV9LGUpKTtpZighZS5zaWxlbnQpdGhpcy50
cmlnZ2VyKCJyZXNldCIsdGhpcyxlKTtyZXR1cm4gdH0scHVzaDpmdW5jdGlvbih0LGUpe3JldHVy
biB0aGlzLmFkZCh0LGkuZXh0ZW5kKHthdDp0aGlzLmxlbmd0aH0sZSkpfSxwb3A6ZnVuY3Rpb24o
dCl7dmFyIGU9dGhpcy5hdCh0aGlzLmxlbmd0aC0xKTtyZXR1cm4gdGhpcy5yZW1vdmUoZSx0KX0s
dW5zaGlmdDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmFkZCh0LGkuZXh0ZW5kKHthdDowfSxl
KSl9LHNoaWZ0OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuYXQoMCk7cmV0dXJuIHRoaXMucmVtb3Zl
KGUsdCl9LHNsaWNlOmZ1bmN0aW9uKCl7cmV0dXJuIHMuYXBwbHkodGhpcy5tb2RlbHMsYXJndW1l
bnRzKX0sZ2V0OmZ1bmN0aW9uKHQpe2lmKHQ9PW51bGwpcmV0dXJuIHZvaWQgMDtyZXR1cm4gdGhp
cy5fYnlJZFt0XXx8dGhpcy5fYnlJZFt0aGlzLm1vZGVsSWQodC5hdHRyaWJ1dGVzfHx0KV18fHQu
Y2lkJiZ0aGlzLl9ieUlkW3QuY2lkXX0saGFzOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmdldCh0
KSE9bnVsbH0sYXQ6ZnVuY3Rpb24odCl7aWYodDwwKXQrPXRoaXMubGVuZ3RoO3JldHVybiB0aGlz
Lm1vZGVsc1t0XX0sd2hlcmU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpc1tlPyJmaW5kIjoiZmls
dGVyIl0odCl9LGZpbmRXaGVyZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy53aGVyZSh0LHRydWUp
fSxzb3J0OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuY29tcGFyYXRvcjtpZighZSl0aHJvdyBuZXcg
RXJyb3IoIkNhbm5vdCBzb3J0IGEgc2V0IHdpdGhvdXQgYSBjb21wYXJhdG9yIik7dHx8KHQ9e30p
O3ZhciByPWUubGVuZ3RoO2lmKGkuaXNGdW5jdGlvbihlKSllPWkuYmluZChlLHRoaXMpO2lmKHI9
PT0xfHxpLmlzU3RyaW5nKGUpKXt0aGlzLm1vZGVscz10aGlzLnNvcnRCeShlKX1lbHNle3RoaXMu
bW9kZWxzLnNvcnQoZSl9aWYoIXQuc2lsZW50KXRoaXMudHJpZ2dlcigic29ydCIsdGhpcyx0KTty
ZXR1cm4gdGhpc30scGx1Y2s6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubWFwKHQrIiIpfSxmZXRj
aDpmdW5jdGlvbih0KXt0PWkuZXh0ZW5kKHtwYXJzZTp0cnVlfSx0KTt2YXIgZT10LnN1Y2Nlc3M7
dmFyIHI9dGhpczt0LnN1Y2Nlc3M9ZnVuY3Rpb24oaSl7dmFyIG49dC5yZXNldD8icmVzZXQiOiJz
ZXQiO3Jbbl0oaSx0KTtpZihlKWUuY2FsbCh0LmNvbnRleHQscixpLHQpO3IudHJpZ2dlcigic3lu
YyIscixpLHQpfTtCKHRoaXMsdCk7cmV0dXJuIHRoaXMuc3luYygicmVhZCIsdGhpcyx0KX0sY3Jl
YXRlOmZ1bmN0aW9uKHQsZSl7ZT1lP2kuY2xvbmUoZSk6e307dmFyIHI9ZS53YWl0O3Q9dGhpcy5f
cHJlcGFyZU1vZGVsKHQsZSk7aWYoIXQpcmV0dXJuIGZhbHNlO2lmKCFyKXRoaXMuYWRkKHQsZSk7
dmFyIG49dGhpczt2YXIgcz1lLnN1Y2Nlc3M7ZS5zdWNjZXNzPWZ1bmN0aW9uKHQsZSxpKXtpZihy
KW4uYWRkKHQsaSk7aWYocylzLmNhbGwoaS5jb250ZXh0LHQsZSxpKX07dC5zYXZlKG51bGwsZSk7
cmV0dXJuIHR9LHBhcnNlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHR9LGNsb25lOmZ1bmN0aW9uKCl7
cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMubW9kZWxzLHttb2RlbDp0aGlzLm1vZGVs
LGNvbXBhcmF0b3I6dGhpcy5jb21wYXJhdG9yfSl9LG1vZGVsSWQ6ZnVuY3Rpb24odCl7cmV0dXJu
IHRbdGhpcy5tb2RlbC5wcm90b3R5cGUuaWRBdHRyaWJ1dGV8fCJpZCJdfSxfcmVzZXQ6ZnVuY3Rp
b24oKXt0aGlzLmxlbmd0aD0wO3RoaXMubW9kZWxzPVtdO3RoaXMuX2J5SWQ9e319LF9wcmVwYXJl
TW9kZWw6ZnVuY3Rpb24odCxlKXtpZih0aGlzLl9pc01vZGVsKHQpKXtpZighdC5jb2xsZWN0aW9u
KXQuY29sbGVjdGlvbj10aGlzO3JldHVybiB0fWU9ZT9pLmNsb25lKGUpOnt9O2UuY29sbGVjdGlv
bj10aGlzO3ZhciByPW5ldyB0aGlzLm1vZGVsKHQsZSk7aWYoIXIudmFsaWRhdGlvbkVycm9yKXJl
dHVybiByO3RoaXMudHJpZ2dlcigiaW52YWxpZCIsdGhpcyxyLnZhbGlkYXRpb25FcnJvcixlKTty
ZXR1cm4gZmFsc2V9LF9yZW1vdmVNb2RlbHM6ZnVuY3Rpb24odCxlKXt2YXIgaT1bXTtmb3IodmFy
IHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIG49dGhpcy5nZXQodFtyXSk7aWYoIW4pY29udGludWU7
dmFyIHM9dGhpcy5pbmRleE9mKG4pO3RoaXMubW9kZWxzLnNwbGljZShzLDEpO3RoaXMubGVuZ3Ro
LS07ZGVsZXRlIHRoaXMuX2J5SWRbbi5jaWRdO3ZhciBhPXRoaXMubW9kZWxJZChuLmF0dHJpYnV0
ZXMpO2lmKGEhPW51bGwpZGVsZXRlIHRoaXMuX2J5SWRbYV07aWYoIWUuc2lsZW50KXtlLmluZGV4
PXM7bi50cmlnZ2VyKCJyZW1vdmUiLG4sdGhpcyxlKX1pLnB1c2gobik7dGhpcy5fcmVtb3ZlUmVm
ZXJlbmNlKG4sZSl9cmV0dXJuIGl9LF9pc01vZGVsOmZ1bmN0aW9uKHQpe3JldHVybiB0IGluc3Rh
bmNlb2YgeX0sX2FkZFJlZmVyZW5jZTpmdW5jdGlvbih0LGUpe3RoaXMuX2J5SWRbdC5jaWRdPXQ7
dmFyIGk9dGhpcy5tb2RlbElkKHQuYXR0cmlidXRlcyk7aWYoaSE9bnVsbCl0aGlzLl9ieUlkW2ld
PXQ7dC5vbigiYWxsIix0aGlzLl9vbk1vZGVsRXZlbnQsdGhpcyl9LF9yZW1vdmVSZWZlcmVuY2U6
ZnVuY3Rpb24odCxlKXtkZWxldGUgdGhpcy5fYnlJZFt0LmNpZF07dmFyIGk9dGhpcy5tb2RlbElk
KHQuYXR0cmlidXRlcyk7aWYoaSE9bnVsbClkZWxldGUgdGhpcy5fYnlJZFtpXTtpZih0aGlzPT09
dC5jb2xsZWN0aW9uKWRlbGV0ZSB0LmNvbGxlY3Rpb247dC5vZmYoImFsbCIsdGhpcy5fb25Nb2Rl
bEV2ZW50LHRoaXMpfSxfb25Nb2RlbEV2ZW50OmZ1bmN0aW9uKHQsZSxpLHIpe2lmKGUpe2lmKCh0
PT09ImFkZCJ8fHQ9PT0icmVtb3ZlIikmJmkhPT10aGlzKXJldHVybjtpZih0PT09ImRlc3Ryb3ki
KXRoaXMucmVtb3ZlKGUscik7aWYodD09PSJjaGFuZ2UiKXt2YXIgbj10aGlzLm1vZGVsSWQoZS5w
cmV2aW91c0F0dHJpYnV0ZXMoKSk7dmFyIHM9dGhpcy5tb2RlbElkKGUuYXR0cmlidXRlcyk7aWYo
biE9PXMpe2lmKG4hPW51bGwpZGVsZXRlIHRoaXMuX2J5SWRbbl07aWYocyE9bnVsbCl0aGlzLl9i
eUlkW3NdPWV9fX10aGlzLnRyaWdnZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0pO3ZhciBTPXtm
b3JFYWNoOjMsZWFjaDozLG1hcDozLGNvbGxlY3Q6MyxyZWR1Y2U6MCxmb2xkbDowLGluamVjdDow
LHJlZHVjZVJpZ2h0OjAsZm9sZHI6MCxmaW5kOjMsZGV0ZWN0OjMsZmlsdGVyOjMsc2VsZWN0OjMs
cmVqZWN0OjMsZXZlcnk6MyxhbGw6Myxzb21lOjMsYW55OjMsaW5jbHVkZTozLGluY2x1ZGVzOjMs
Y29udGFpbnM6MyxpbnZva2U6MCxtYXg6MyxtaW46Myx0b0FycmF5OjEsc2l6ZToxLGZpcnN0OjMs
aGVhZDozLHRha2U6Myxpbml0aWFsOjMscmVzdDozLHRhaWw6Myxkcm9wOjMsbGFzdDozLHdpdGhv
dXQ6MCxkaWZmZXJlbmNlOjAsaW5kZXhPZjozLHNodWZmbGU6MSxsYXN0SW5kZXhPZjozLGlzRW1w
dHk6MSxjaGFpbjoxLHNhbXBsZTozLHBhcnRpdGlvbjozLGdyb3VwQnk6Myxjb3VudEJ5OjMsc29y
dEJ5OjMsaW5kZXhCeTozLGZpbmRJbmRleDozLGZpbmRMYXN0SW5kZXg6M307aCh4LFMsIm1vZGVs
cyIpO3ZhciBrPWUuVmlldz1mdW5jdGlvbih0KXt0aGlzLmNpZD1pLnVuaXF1ZUlkKCJ2aWV3Iik7
aS5leHRlbmQodGhpcyxpLnBpY2sodCxQKSk7dGhpcy5fZW5zdXJlRWxlbWVudCgpO3RoaXMuaW5p
dGlhbGl6ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O3ZhciBUPS9eKFxTKylccyooLiopJC87dmFy
IFA9WyJtb2RlbCIsImNvbGxlY3Rpb24iLCJlbCIsImlkIiwiYXR0cmlidXRlcyIsImNsYXNzTmFt
ZSIsInRhZ05hbWUiLCJldmVudHMiXTtpLmV4dGVuZChrLnByb3RvdHlwZSx1LHt0YWdOYW1lOiJk
aXYiLCQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuJGVsLmZpbmQodCl9LGluaXRpYWxpemU6ZnVu
Y3Rpb24oKXt9LHJlbmRlcjpmdW5jdGlvbigpe3JldHVybiB0aGlzfSxyZW1vdmU6ZnVuY3Rpb24o
KXt0aGlzLl9yZW1vdmVFbGVtZW50KCk7dGhpcy5zdG9wTGlzdGVuaW5nKCk7cmV0dXJuIHRoaXN9
LF9yZW1vdmVFbGVtZW50OmZ1bmN0aW9uKCl7dGhpcy4kZWwucmVtb3ZlKCl9LHNldEVsZW1lbnQ6
ZnVuY3Rpb24odCl7dGhpcy51bmRlbGVnYXRlRXZlbnRzKCk7dGhpcy5fc2V0RWxlbWVudCh0KTt0
aGlzLmRlbGVnYXRlRXZlbnRzKCk7cmV0dXJuIHRoaXN9LF9zZXRFbGVtZW50OmZ1bmN0aW9uKHQp
e3RoaXMuJGVsPXQgaW5zdGFuY2VvZiBlLiQ/dDplLiQodCk7dGhpcy5lbD10aGlzLiRlbFswXX0s
ZGVsZWdhdGVFdmVudHM6ZnVuY3Rpb24odCl7dHx8KHQ9aS5yZXN1bHQodGhpcywiZXZlbnRzIikp
O2lmKCF0KXJldHVybiB0aGlzO3RoaXMudW5kZWxlZ2F0ZUV2ZW50cygpO2Zvcih2YXIgZSBpbiB0
KXt2YXIgcj10W2VdO2lmKCFpLmlzRnVuY3Rpb24ocikpcj10aGlzW3JdO2lmKCFyKWNvbnRpbnVl
O3ZhciBuPWUubWF0Y2goVCk7dGhpcy5kZWxlZ2F0ZShuWzFdLG5bMl0saS5iaW5kKHIsdGhpcykp
fXJldHVybiB0aGlzfSxkZWxlZ2F0ZTpmdW5jdGlvbih0LGUsaSl7dGhpcy4kZWwub24odCsiLmRl
bGVnYXRlRXZlbnRzIit0aGlzLmNpZCxlLGkpO3JldHVybiB0aGlzfSx1bmRlbGVnYXRlRXZlbnRz
OmZ1bmN0aW9uKCl7aWYodGhpcy4kZWwpdGhpcy4kZWwub2ZmKCIuZGVsZWdhdGVFdmVudHMiK3Ro
aXMuY2lkKTtyZXR1cm4gdGhpc30sdW5kZWxlZ2F0ZTpmdW5jdGlvbih0LGUsaSl7dGhpcy4kZWwu
b2ZmKHQrIi5kZWxlZ2F0ZUV2ZW50cyIrdGhpcy5jaWQsZSxpKTtyZXR1cm4gdGhpc30sX2NyZWF0
ZUVsZW1lbnQ6ZnVuY3Rpb24odCl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodCl9LF9l
bnN1cmVFbGVtZW50OmZ1bmN0aW9uKCl7aWYoIXRoaXMuZWwpe3ZhciB0PWkuZXh0ZW5kKHt9LGku
cmVzdWx0KHRoaXMsImF0dHJpYnV0ZXMiKSk7aWYodGhpcy5pZCl0LmlkPWkucmVzdWx0KHRoaXMs
ImlkIik7aWYodGhpcy5jbGFzc05hbWUpdFsiY2xhc3MiXT1pLnJlc3VsdCh0aGlzLCJjbGFzc05h
bWUiKTt0aGlzLnNldEVsZW1lbnQodGhpcy5fY3JlYXRlRWxlbWVudChpLnJlc3VsdCh0aGlzLCJ0
YWdOYW1lIikpKTt0aGlzLl9zZXRBdHRyaWJ1dGVzKHQpfWVsc2V7dGhpcy5zZXRFbGVtZW50KGku
cmVzdWx0KHRoaXMsImVsIikpfX0sX3NldEF0dHJpYnV0ZXM6ZnVuY3Rpb24odCl7dGhpcy4kZWwu
YXR0cih0KX19KTtlLnN5bmM9ZnVuY3Rpb24odCxyLG4pe3ZhciBzPUhbdF07aS5kZWZhdWx0cyhu
fHwobj17fSkse2VtdWxhdGVIVFRQOmUuZW11bGF0ZUhUVFAsZW11bGF0ZUpTT046ZS5lbXVsYXRl
SlNPTn0pO3ZhciBhPXt0eXBlOnMsZGF0YVR5cGU6Impzb24ifTtpZighbi51cmwpe2EudXJsPWku
cmVzdWx0KHIsInVybCIpfHxGKCl9aWYobi5kYXRhPT1udWxsJiZyJiYodD09PSJjcmVhdGUifHx0
PT09InVwZGF0ZSJ8fHQ9PT0icGF0Y2giKSl7YS5jb250ZW50VHlwZT0iYXBwbGljYXRpb24vanNv
biI7YS5kYXRhPUpTT04uc3RyaW5naWZ5KG4uYXR0cnN8fHIudG9KU09OKG4pKX1pZihuLmVtdWxh
dGVKU09OKXthLmNvbnRlbnRUeXBlPSJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQi
O2EuZGF0YT1hLmRhdGE/e21vZGVsOmEuZGF0YX06e319aWYobi5lbXVsYXRlSFRUUCYmKHM9PT0i
UFVUInx8cz09PSJERUxFVEUifHxzPT09IlBBVENIIikpe2EudHlwZT0iUE9TVCI7aWYobi5lbXVs
YXRlSlNPTilhLmRhdGEuX21ldGhvZD1zO3ZhciBoPW4uYmVmb3JlU2VuZDtuLmJlZm9yZVNlbmQ9
ZnVuY3Rpb24odCl7dC5zZXRSZXF1ZXN0SGVhZGVyKCJYLUhUVFAtTWV0aG9kLU92ZXJyaWRlIixz
KTtpZihoKXJldHVybiBoLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19aWYoYS50eXBlIT09IkdFVCIm
JiFuLmVtdWxhdGVKU09OKXthLnByb2Nlc3NEYXRhPWZhbHNlfXZhciBvPW4uZXJyb3I7bi5lcnJv
cj1mdW5jdGlvbih0LGUsaSl7bi50ZXh0U3RhdHVzPWU7bi5lcnJvclRocm93bj1pO2lmKG8pby5j
YWxsKG4uY29udGV4dCx0LGUsaSl9O3ZhciBsPW4ueGhyPWUuYWpheChpLmV4dGVuZChhLG4pKTty
LnRyaWdnZXIoInJlcXVlc3QiLHIsbCxuKTtyZXR1cm4gbH07dmFyIEg9e2NyZWF0ZToiUE9TVCIs
dXBkYXRlOiJQVVQiLHBhdGNoOiJQQVRDSCIsImRlbGV0ZSI6IkRFTEVURSIscmVhZDoiR0VUIn07
ZS5hamF4PWZ1bmN0aW9uKCl7cmV0dXJuIGUuJC5hamF4LmFwcGx5KGUuJCxhcmd1bWVudHMpfTt2
YXIgJD1lLlJvdXRlcj1mdW5jdGlvbih0KXt0fHwodD17fSk7aWYodC5yb3V0ZXMpdGhpcy5yb3V0
ZXM9dC5yb3V0ZXM7dGhpcy5fYmluZFJvdXRlcygpO3RoaXMuaW5pdGlhbGl6ZS5hcHBseSh0aGlz
LGFyZ3VtZW50cyl9O3ZhciBBPS9cKCguKj8pXCkvZzt2YXIgQz0vKFwoXD8pPzpcdysvZzt2YXIg
Uj0vXCpcdysvZzt2YXIgaj0vW1wte31cW1xdKz8uLFxcXF4kfCNcc10vZztpLmV4dGVuZCgkLnBy
b3RvdHlwZSx1LHtpbml0aWFsaXplOmZ1bmN0aW9uKCl7fSxyb3V0ZTpmdW5jdGlvbih0LHIsbil7
aWYoIWkuaXNSZWdFeHAodCkpdD10aGlzLl9yb3V0ZVRvUmVnRXhwKHQpO2lmKGkuaXNGdW5jdGlv
bihyKSl7bj1yO3I9IiJ9aWYoIW4pbj10aGlzW3JdO3ZhciBzPXRoaXM7ZS5oaXN0b3J5LnJvdXRl
KHQsZnVuY3Rpb24oaSl7dmFyIGE9cy5fZXh0cmFjdFBhcmFtZXRlcnModCxpKTtpZihzLmV4ZWN1
dGUobixhLHIpIT09ZmFsc2Upe3MudHJpZ2dlci5hcHBseShzLFsicm91dGU6IityXS5jb25jYXQo
YSkpO3MudHJpZ2dlcigicm91dGUiLHIsYSk7ZS5oaXN0b3J5LnRyaWdnZXIoInJvdXRlIixzLHIs
YSl9fSk7cmV0dXJuIHRoaXN9LGV4ZWN1dGU6ZnVuY3Rpb24odCxlLGkpe2lmKHQpdC5hcHBseSh0
aGlzLGUpfSxuYXZpZ2F0ZTpmdW5jdGlvbih0LGkpe2UuaGlzdG9yeS5uYXZpZ2F0ZSh0LGkpO3Jl
dHVybiB0aGlzfSxfYmluZFJvdXRlczpmdW5jdGlvbigpe2lmKCF0aGlzLnJvdXRlcylyZXR1cm47
dGhpcy5yb3V0ZXM9aS5yZXN1bHQodGhpcywicm91dGVzIik7dmFyIHQsZT1pLmtleXModGhpcy5y
b3V0ZXMpO3doaWxlKCh0PWUucG9wKCkpIT1udWxsKXt0aGlzLnJvdXRlKHQsdGhpcy5yb3V0ZXNb
dF0pfX0sX3JvdXRlVG9SZWdFeHA6ZnVuY3Rpb24odCl7dD10LnJlcGxhY2UoaiwiXFwkJiIpLnJl
cGxhY2UoQSwiKD86JDEpPyIpLnJlcGxhY2UoQyxmdW5jdGlvbih0LGUpe3JldHVybiBlP3Q6Iihb
Xi8/XSspIn0pLnJlcGxhY2UoUiwiKFteP10qPykiKTtyZXR1cm4gbmV3IFJlZ0V4cCgiXiIrdCsi
KD86XFw/KFtcXHNcXFNdKikpPyQiKX0sX2V4dHJhY3RQYXJhbWV0ZXJzOmZ1bmN0aW9uKHQsZSl7
dmFyIHI9dC5leGVjKGUpLnNsaWNlKDEpO3JldHVybiBpLm1hcChyLGZ1bmN0aW9uKHQsZSl7aWYo
ZT09PXIubGVuZ3RoLTEpcmV0dXJuIHR8fG51bGw7cmV0dXJuIHQ/ZGVjb2RlVVJJQ29tcG9uZW50
KHQpOm51bGx9KX19KTt2YXIgTj1lLkhpc3Rvcnk9ZnVuY3Rpb24oKXt0aGlzLmhhbmRsZXJzPVtd
O3RoaXMuY2hlY2tVcmw9aS5iaW5kKHRoaXMuY2hlY2tVcmwsdGhpcyk7aWYodHlwZW9mIHdpbmRv
dyE9PSJ1bmRlZmluZWQiKXt0aGlzLmxvY2F0aW9uPXdpbmRvdy5sb2NhdGlvbjt0aGlzLmhpc3Rv
cnk9d2luZG93Lmhpc3Rvcnl9fTt2YXIgTT0vXlsjXC9dfFxzKyQvZzt2YXIgTz0vXlwvK3xcLysk
L2c7dmFyIFU9LyMuKiQvO04uc3RhcnRlZD1mYWxzZTtpLmV4dGVuZChOLnByb3RvdHlwZSx1LHtp
bnRlcnZhbDo1MCxhdFJvb3Q6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmxvY2F0aW9uLnBhdGhuYW1l
LnJlcGxhY2UoL1teXC9dJC8sIiQmLyIpO3JldHVybiB0PT09dGhpcy5yb290JiYhdGhpcy5nZXRT
ZWFyY2goKX0sbWF0Y2hSb290OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5kZWNvZGVGcmFnbWVudCh0
aGlzLmxvY2F0aW9uLnBhdGhuYW1lKTt2YXIgZT10LnNsaWNlKDAsdGhpcy5yb290Lmxlbmd0aC0x
KSsiLyI7cmV0dXJuIGU9PT10aGlzLnJvb3R9LGRlY29kZUZyYWdtZW50OmZ1bmN0aW9uKHQpe3Jl
dHVybiBkZWNvZGVVUkkodC5yZXBsYWNlKC8lMjUvZywiJTI1MjUiKSl9LGdldFNlYXJjaDpmdW5j
dGlvbigpe3ZhciB0PXRoaXMubG9jYXRpb24uaHJlZi5yZXBsYWNlKC8jLiovLCIiKS5tYXRjaCgv
XD8uKy8pO3JldHVybiB0P3RbMF06IiJ9LGdldEhhc2g6ZnVuY3Rpb24odCl7dmFyIGU9KHR8fHRo
aXMpLmxvY2F0aW9uLmhyZWYubWF0Y2goLyMoLiopJC8pO3JldHVybiBlP2VbMV06IiJ9LGdldFBh
dGg6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmRlY29kZUZyYWdtZW50KHRoaXMubG9jYXRpb24ucGF0
aG5hbWUrdGhpcy5nZXRTZWFyY2goKSkuc2xpY2UodGhpcy5yb290Lmxlbmd0aC0xKTtyZXR1cm4g
dC5jaGFyQXQoMCk9PT0iLyI/dC5zbGljZSgxKTp0fSxnZXRGcmFnbWVudDpmdW5jdGlvbih0KXtp
Zih0PT1udWxsKXtpZih0aGlzLl91c2VQdXNoU3RhdGV8fCF0aGlzLl93YW50c0hhc2hDaGFuZ2Up
e3Q9dGhpcy5nZXRQYXRoKCl9ZWxzZXt0PXRoaXMuZ2V0SGFzaCgpfX1yZXR1cm4gdC5yZXBsYWNl
KE0sIiIpfSxzdGFydDpmdW5jdGlvbih0KXtpZihOLnN0YXJ0ZWQpdGhyb3cgbmV3IEVycm9yKCJC
YWNrYm9uZS5oaXN0b3J5IGhhcyBhbHJlYWR5IGJlZW4gc3RhcnRlZCIpO04uc3RhcnRlZD10cnVl
O3RoaXMub3B0aW9ucz1pLmV4dGVuZCh7cm9vdDoiLyJ9LHRoaXMub3B0aW9ucyx0KTt0aGlzLnJv
b3Q9dGhpcy5vcHRpb25zLnJvb3Q7dGhpcy5fd2FudHNIYXNoQ2hhbmdlPXRoaXMub3B0aW9ucy5o
YXNoQ2hhbmdlIT09ZmFsc2U7dGhpcy5faGFzSGFzaENoYW5nZT0ib25oYXNoY2hhbmdlImluIHdp
bmRvdyYmKGRvY3VtZW50LmRvY3VtZW50TW9kZT09PXZvaWQgMHx8ZG9jdW1lbnQuZG9jdW1lbnRN
b2RlPjcpO3RoaXMuX3VzZUhhc2hDaGFuZ2U9dGhpcy5fd2FudHNIYXNoQ2hhbmdlJiZ0aGlzLl9o
YXNIYXNoQ2hhbmdlO3RoaXMuX3dhbnRzUHVzaFN0YXRlPSEhdGhpcy5vcHRpb25zLnB1c2hTdGF0
ZTt0aGlzLl9oYXNQdXNoU3RhdGU9ISEodGhpcy5oaXN0b3J5JiZ0aGlzLmhpc3RvcnkucHVzaFN0
YXRlKTt0aGlzLl91c2VQdXNoU3RhdGU9dGhpcy5fd2FudHNQdXNoU3RhdGUmJnRoaXMuX2hhc1B1
c2hTdGF0ZTt0aGlzLmZyYWdtZW50PXRoaXMuZ2V0RnJhZ21lbnQoKTt0aGlzLnJvb3Q9KCIvIit0
aGlzLnJvb3QrIi8iKS5yZXBsYWNlKE8sIi8iKTtpZih0aGlzLl93YW50c0hhc2hDaGFuZ2UmJnRo
aXMuX3dhbnRzUHVzaFN0YXRlKXtpZighdGhpcy5faGFzUHVzaFN0YXRlJiYhdGhpcy5hdFJvb3Qo
KSl7dmFyIGU9dGhpcy5yb290LnNsaWNlKDAsLTEpfHwiLyI7dGhpcy5sb2NhdGlvbi5yZXBsYWNl
KGUrIiMiK3RoaXMuZ2V0UGF0aCgpKTtyZXR1cm4gdHJ1ZX1lbHNlIGlmKHRoaXMuX2hhc1B1c2hT
dGF0ZSYmdGhpcy5hdFJvb3QoKSl7dGhpcy5uYXZpZ2F0ZSh0aGlzLmdldEhhc2goKSx7cmVwbGFj
ZTp0cnVlfSl9fWlmKCF0aGlzLl9oYXNIYXNoQ2hhbmdlJiZ0aGlzLl93YW50c0hhc2hDaGFuZ2Um
JiF0aGlzLl91c2VQdXNoU3RhdGUpe3RoaXMuaWZyYW1lPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImlmcmFtZSIpO3RoaXMuaWZyYW1lLnNyYz0iamF2YXNjcmlwdDowIjt0aGlzLmlmcmFtZS5zdHls
ZS5kaXNwbGF5PSJub25lIjt0aGlzLmlmcmFtZS50YWJJbmRleD0tMTt2YXIgcj1kb2N1bWVudC5i
b2R5O3ZhciBuPXIuaW5zZXJ0QmVmb3JlKHRoaXMuaWZyYW1lLHIuZmlyc3RDaGlsZCkuY29udGVu
dFdpbmRvdztuLmRvY3VtZW50Lm9wZW4oKTtuLmRvY3VtZW50LmNsb3NlKCk7bi5sb2NhdGlvbi5o
YXNoPSIjIit0aGlzLmZyYWdtZW50fXZhciBzPXdpbmRvdy5hZGRFdmVudExpc3RlbmVyfHxmdW5j
dGlvbih0LGUpe3JldHVybiBhdHRhY2hFdmVudCgib24iK3QsZSl9O2lmKHRoaXMuX3VzZVB1c2hT
dGF0ZSl7cygicG9wc3RhdGUiLHRoaXMuY2hlY2tVcmwsZmFsc2UpfWVsc2UgaWYodGhpcy5fdXNl
SGFzaENoYW5nZSYmIXRoaXMuaWZyYW1lKXtzKCJoYXNoY2hhbmdlIix0aGlzLmNoZWNrVXJsLGZh
bHNlKX1lbHNlIGlmKHRoaXMuX3dhbnRzSGFzaENoYW5nZSl7dGhpcy5fY2hlY2tVcmxJbnRlcnZh
bD1zZXRJbnRlcnZhbCh0aGlzLmNoZWNrVXJsLHRoaXMuaW50ZXJ2YWwpfWlmKCF0aGlzLm9wdGlv
bnMuc2lsZW50KXJldHVybiB0aGlzLmxvYWRVcmwoKX0sc3RvcDpmdW5jdGlvbigpe3ZhciB0PXdp
bmRvdy5yZW1vdmVFdmVudExpc3RlbmVyfHxmdW5jdGlvbih0LGUpe3JldHVybiBkZXRhY2hFdmVu
dCgib24iK3QsZSl9O2lmKHRoaXMuX3VzZVB1c2hTdGF0ZSl7dCgicG9wc3RhdGUiLHRoaXMuY2hl
Y2tVcmwsZmFsc2UpfWVsc2UgaWYodGhpcy5fdXNlSGFzaENoYW5nZSYmIXRoaXMuaWZyYW1lKXt0
KCJoYXNoY2hhbmdlIix0aGlzLmNoZWNrVXJsLGZhbHNlKX1pZih0aGlzLmlmcmFtZSl7ZG9jdW1l
bnQuYm9keS5yZW1vdmVDaGlsZCh0aGlzLmlmcmFtZSk7dGhpcy5pZnJhbWU9bnVsbH1pZih0aGlz
Ll9jaGVja1VybEludGVydmFsKWNsZWFySW50ZXJ2YWwodGhpcy5fY2hlY2tVcmxJbnRlcnZhbCk7
Ti5zdGFydGVkPWZhbHNlfSxyb3V0ZTpmdW5jdGlvbih0LGUpe3RoaXMuaGFuZGxlcnMudW5zaGlm
dCh7cm91dGU6dCxjYWxsYmFjazplfSl9LGNoZWNrVXJsOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMu
Z2V0RnJhZ21lbnQoKTtpZihlPT09dGhpcy5mcmFnbWVudCYmdGhpcy5pZnJhbWUpe2U9dGhpcy5n
ZXRIYXNoKHRoaXMuaWZyYW1lLmNvbnRlbnRXaW5kb3cpfWlmKGU9PT10aGlzLmZyYWdtZW50KXJl
dHVybiBmYWxzZTtpZih0aGlzLmlmcmFtZSl0aGlzLm5hdmlnYXRlKGUpO3RoaXMubG9hZFVybCgp
fSxsb2FkVXJsOmZ1bmN0aW9uKHQpe2lmKCF0aGlzLm1hdGNoUm9vdCgpKXJldHVybiBmYWxzZTt0
PXRoaXMuZnJhZ21lbnQ9dGhpcy5nZXRGcmFnbWVudCh0KTtyZXR1cm4gaS5zb21lKHRoaXMuaGFu
ZGxlcnMsZnVuY3Rpb24oZSl7aWYoZS5yb3V0ZS50ZXN0KHQpKXtlLmNhbGxiYWNrKHQpO3JldHVy
biB0cnVlfX0pfSxuYXZpZ2F0ZTpmdW5jdGlvbih0LGUpe2lmKCFOLnN0YXJ0ZWQpcmV0dXJuIGZh
bHNlO2lmKCFlfHxlPT09dHJ1ZSllPXt0cmlnZ2VyOiEhZX07dD10aGlzLmdldEZyYWdtZW50KHR8
fCIiKTt2YXIgaT10aGlzLnJvb3Q7aWYodD09PSIifHx0LmNoYXJBdCgwKT09PSI/Iil7aT1pLnNs
aWNlKDAsLTEpfHwiLyJ9dmFyIHI9aSt0O3Q9dGhpcy5kZWNvZGVGcmFnbWVudCh0LnJlcGxhY2Uo
VSwiIikpO2lmKHRoaXMuZnJhZ21lbnQ9PT10KXJldHVybjt0aGlzLmZyYWdtZW50PXQ7aWYodGhp
cy5fdXNlUHVzaFN0YXRlKXt0aGlzLmhpc3RvcnlbZS5yZXBsYWNlPyJyZXBsYWNlU3RhdGUiOiJw
dXNoU3RhdGUiXSh7fSxkb2N1bWVudC50aXRsZSxyKX1lbHNlIGlmKHRoaXMuX3dhbnRzSGFzaENo
YW5nZSl7dGhpcy5fdXBkYXRlSGFzaCh0aGlzLmxvY2F0aW9uLHQsZS5yZXBsYWNlKTtpZih0aGlz
LmlmcmFtZSYmdCE9PXRoaXMuZ2V0SGFzaCh0aGlzLmlmcmFtZS5jb250ZW50V2luZG93KSl7dmFy
IG49dGhpcy5pZnJhbWUuY29udGVudFdpbmRvdztpZighZS5yZXBsYWNlKXtuLmRvY3VtZW50Lm9w
ZW4oKTtuLmRvY3VtZW50LmNsb3NlKCl9dGhpcy5fdXBkYXRlSGFzaChuLmxvY2F0aW9uLHQsZS5y
ZXBsYWNlKX19ZWxzZXtyZXR1cm4gdGhpcy5sb2NhdGlvbi5hc3NpZ24ocil9aWYoZS50cmlnZ2Vy
KXJldHVybiB0aGlzLmxvYWRVcmwodCl9LF91cGRhdGVIYXNoOmZ1bmN0aW9uKHQsZSxpKXtpZihp
KXt2YXIgcj10LmhyZWYucmVwbGFjZSgvKGphdmFzY3JpcHQ6fCMpLiokLywiIik7dC5yZXBsYWNl
KHIrIiMiK2UpfWVsc2V7dC5oYXNoPSIjIitlfX19KTtlLmhpc3Rvcnk9bmV3IE47dmFyIHE9ZnVu
Y3Rpb24odCxlKXt2YXIgcj10aGlzO3ZhciBuO2lmKHQmJmkuaGFzKHQsImNvbnN0cnVjdG9yIikp
e249dC5jb25zdHJ1Y3Rvcn1lbHNle249ZnVuY3Rpb24oKXtyZXR1cm4gci5hcHBseSh0aGlzLGFy
Z3VtZW50cyl9fWkuZXh0ZW5kKG4scixlKTtuLnByb3RvdHlwZT1pLmNyZWF0ZShyLnByb3RvdHlw
ZSx0KTtuLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1uO24uX19zdXBlcl9fPXIucHJvdG90eXBlO3Jl
dHVybiBufTt5LmV4dGVuZD14LmV4dGVuZD0kLmV4dGVuZD1rLmV4dGVuZD1OLmV4dGVuZD1xO3Zh
ciBGPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCdBICJ1cmwiIHByb3BlcnR5IG9yIGZ1bmN0
aW9uIG11c3QgYmUgc3BlY2lmaWVkJyl9O3ZhciBCPWZ1bmN0aW9uKHQsZSl7dmFyIGk9ZS5lcnJv
cjtlLmVycm9yPWZ1bmN0aW9uKHIpe2lmKGkpaS5jYWxsKGUuY29udGV4dCx0LHIsZSk7dC50cmln
Z2VyKCJlcnJvciIsdCxyLGUpfX07cmV0dXJuIGV9KTsKKy8vIyBzb3VyY2VNYXBwaW5nVVJMPWJh
Y2tib25lLW1pbi5tYXAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvYmFja2JvbmUvYmFja2JvbmUtbWluLm1h
cCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9iYWNrYm9uZS9iYWNrYm9uZS1t
aW4ubWFwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjBlMWNlNGUxZjc5YjIxNzI4NmNkNDhjZDhmZDgyN2M2NGVlZjAy
MzEKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMv
YmFja2JvbmUvYmFja2JvbmUtbWluLm1hcApAQCAtMCwwICsxIEBACit7InZlcnNpb24iOjMsInNv
dXJjZXMiOlsiYmFja2JvbmUuanMiXSwibmFtZXMiOlsiZmFjdG9yeSIsInJvb3QiLCJzZWxmIiwi
Z2xvYmFsIiwiZGVmaW5lIiwiYW1kIiwiXyIsIiQiLCJleHBvcnRzIiwiQmFja2JvbmUiLCJyZXF1
aXJlIiwiZSIsImpRdWVyeSIsIlplcHRvIiwiZW5kZXIiLCJwcmV2aW91c0JhY2tib25lIiwic2xp
Y2UiLCJBcnJheSIsInByb3RvdHlwZSIsIlZFUlNJT04iLCJub0NvbmZsaWN0IiwidGhpcyIsImVt
dWxhdGVIVFRQIiwiZW11bGF0ZUpTT04iLCJhZGRNZXRob2QiLCJsZW5ndGgiLCJtZXRob2QiLCJh
dHRyaWJ1dGUiLCJ2YWx1ZSIsIml0ZXJhdGVlIiwiY29udGV4dCIsImNiIiwiZGVmYXVsdFZhbCIs
ImFyZ3MiLCJjYWxsIiwiYXJndW1lbnRzIiwidW5zaGlmdCIsImFwcGx5IiwiYWRkVW5kZXJzY29y
ZU1ldGhvZHMiLCJDbGFzcyIsIm1ldGhvZHMiLCJlYWNoIiwiaW5zdGFuY2UiLCJpc0Z1bmN0aW9u
IiwiaXNPYmplY3QiLCJfaXNNb2RlbCIsIm1vZGVsTWF0Y2hlciIsImlzU3RyaW5nIiwibW9kZWwi
LCJnZXQiLCJhdHRycyIsIm1hdGNoZXIiLCJtYXRjaGVzIiwiYXR0cmlidXRlcyIsIkV2ZW50cyIs
ImV2ZW50U3BsaXR0ZXIiLCJldmVudHNBcGkiLCJldmVudHMiLCJuYW1lIiwiY2FsbGJhY2siLCJv
cHRzIiwiaSIsIm5hbWVzIiwia2V5cyIsInRlc3QiLCJzcGxpdCIsIm9uIiwiaW50ZXJuYWxPbiIs
Im9iaiIsImxpc3RlbmluZyIsIl9ldmVudHMiLCJvbkFwaSIsImN0eCIsImxpc3RlbmVycyIsIl9s
aXN0ZW5lcnMiLCJpZCIsImxpc3RlblRvIiwiX2xpc3RlbklkIiwidW5pcXVlSWQiLCJsaXN0ZW5p
bmdUbyIsIl9saXN0ZW5pbmdUbyIsInRoaXNJZCIsIm9iaklkIiwiY291bnQiLCJvcHRpb25zIiwi
aGFuZGxlcnMiLCJwdXNoIiwib2ZmIiwib2ZmQXBpIiwic3RvcExpc3RlbmluZyIsImlkcyIsInJl
bWFpbmluZyIsImoiLCJoYW5kbGVyIiwiX2NhbGxiYWNrIiwib25jZSIsIm9uY2VNYXAiLCJiaW5k
IiwibGlzdGVuVG9PbmNlIiwibWFwIiwib2ZmZXIiLCJ0cmlnZ2VyIiwiTWF0aCIsIm1heCIsInRy
aWdnZXJBcGkiLCJvYmpFdmVudHMiLCJhbGxFdmVudHMiLCJhbGwiLCJ0cmlnZ2VyRXZlbnRzIiwi
Y29uY2F0IiwiZXYiLCJsIiwiYTEiLCJhMiIsImEzIiwidW5iaW5kIiwiZXh0ZW5kIiwiTW9kZWwi
LCJjaWQiLCJjaWRQcmVmaXgiLCJjb2xsZWN0aW9uIiwicGFyc2UiLCJkZWZhdWx0cyIsInJlc3Vs
dCIsInNldCIsImNoYW5nZWQiLCJpbml0aWFsaXplIiwidmFsaWRhdGlvbkVycm9yIiwiaWRBdHRy
aWJ1dGUiLCJ0b0pTT04iLCJjbG9uZSIsInN5bmMiLCJhdHRyIiwiZXNjYXBlIiwiaGFzIiwia2V5
IiwidmFsIiwiX3ZhbGlkYXRlIiwidW5zZXQiLCJzaWxlbnQiLCJjaGFuZ2VzIiwiY2hhbmdpbmci
LCJfY2hhbmdpbmciLCJfcHJldmlvdXNBdHRyaWJ1dGVzIiwiY3VycmVudCIsInByZXYiLCJpc0Vx
dWFsIiwiX3BlbmRpbmciLCJjbGVhciIsImhhc0NoYW5nZWQiLCJpc0VtcHR5IiwiY2hhbmdlZEF0
dHJpYnV0ZXMiLCJkaWZmIiwib2xkIiwic2l6ZSIsInByZXZpb3VzIiwicHJldmlvdXNBdHRyaWJ1
dGVzIiwiZmV0Y2giLCJzdWNjZXNzIiwicmVzcCIsInNlcnZlckF0dHJzIiwid3JhcEVycm9yIiwi
c2F2ZSIsInZhbGlkYXRlIiwid2FpdCIsImlzTmV3IiwicGF0Y2giLCJ4aHIiLCJkZXN0cm95Iiwi
ZGVmZXIiLCJ1cmwiLCJiYXNlIiwidXJsRXJyb3IiLCJyZXBsYWNlIiwiZW5jb2RlVVJJQ29tcG9u
ZW50IiwiY29uc3RydWN0b3IiLCJpc1ZhbGlkIiwiZXJyb3IiLCJtb2RlbE1ldGhvZHMiLCJ2YWx1
ZXMiLCJwYWlycyIsImludmVydCIsInBpY2siLCJvbWl0IiwiY2hhaW4iLCJDb2xsZWN0aW9uIiwi
bW9kZWxzIiwiY29tcGFyYXRvciIsIl9yZXNldCIsInJlc2V0Iiwic2V0T3B0aW9ucyIsImFkZCIs
InJlbW92ZSIsIm1lcmdlIiwiYWRkT3B0aW9ucyIsInNwbGljZSIsImFycmF5IiwiaW5zZXJ0Iiwi
YXQiLCJtaW4iLCJ0YWlsIiwic2luZ3VsYXIiLCJpc0FycmF5IiwicmVtb3ZlZCIsIl9yZW1vdmVN
b2RlbHMiLCJhZGRlZCIsIm1lcmdlZCIsInRvQWRkIiwidG9NZXJnZSIsInRvUmVtb3ZlIiwibW9k
ZWxNYXAiLCJzb3J0Iiwic29ydGFibGUiLCJzb3J0QXR0ciIsImV4aXN0aW5nIiwiX3ByZXBhcmVN
b2RlbCIsIl9hZGRSZWZlcmVuY2UiLCJvcmRlckNoYW5nZWQiLCJzb21lIiwibSIsImluZGV4Iiwi
X3JlbW92ZVJlZmVyZW5jZSIsInByZXZpb3VzTW9kZWxzIiwicG9wIiwic2hpZnQiLCJfYnlJZCIs
Im1vZGVsSWQiLCJ3aGVyZSIsImZpcnN0IiwiZmluZFdoZXJlIiwiRXJyb3IiLCJzb3J0QnkiLCJw
bHVjayIsImNyZWF0ZSIsImNhbGxiYWNrT3B0cyIsImluZGV4T2YiLCJfb25Nb2RlbEV2ZW50Iiwi
ZXZlbnQiLCJwcmV2SWQiLCJjb2xsZWN0aW9uTWV0aG9kcyIsImZvckVhY2giLCJjb2xsZWN0Iiwi
cmVkdWNlIiwiZm9sZGwiLCJpbmplY3QiLCJyZWR1Y2VSaWdodCIsImZvbGRyIiwiZmluZCIsImRl
dGVjdCIsImZpbHRlciIsInNlbGVjdCIsInJlamVjdCIsImV2ZXJ5IiwiYW55IiwiaW5jbHVkZSIs
ImluY2x1ZGVzIiwiY29udGFpbnMiLCJpbnZva2UiLCJ0b0FycmF5IiwiaGVhZCIsInRha2UiLCJp
bml0aWFsIiwicmVzdCIsImRyb3AiLCJsYXN0Iiwid2l0aG91dCIsImRpZmZlcmVuY2UiLCJzaHVm
ZmxlIiwibGFzdEluZGV4T2YiLCJzYW1wbGUiLCJwYXJ0aXRpb24iLCJncm91cEJ5IiwiY291bnRC
eSIsImluZGV4QnkiLCJmaW5kSW5kZXgiLCJmaW5kTGFzdEluZGV4IiwiVmlldyIsInZpZXdPcHRp
b25zIiwiX2Vuc3VyZUVsZW1lbnQiLCJkZWxlZ2F0ZUV2ZW50U3BsaXR0ZXIiLCJ0YWdOYW1lIiwi
c2VsZWN0b3IiLCIkZWwiLCJyZW5kZXIiLCJfcmVtb3ZlRWxlbWVudCIsInNldEVsZW1lbnQiLCJl
bGVtZW50IiwidW5kZWxlZ2F0ZUV2ZW50cyIsIl9zZXRFbGVtZW50IiwiZGVsZWdhdGVFdmVudHMi
LCJlbCIsIm1hdGNoIiwiZGVsZWdhdGUiLCJldmVudE5hbWUiLCJsaXN0ZW5lciIsInVuZGVsZWdh
dGUiLCJfY3JlYXRlRWxlbWVudCIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFt
ZSIsIl9zZXRBdHRyaWJ1dGVzIiwidHlwZSIsIm1ldGhvZE1hcCIsInBhcmFtcyIsImRhdGFUeXBl
IiwiZGF0YSIsImNvbnRlbnRUeXBlIiwiSlNPTiIsInN0cmluZ2lmeSIsIl9tZXRob2QiLCJiZWZv
cmVTZW5kIiwic2V0UmVxdWVzdEhlYWRlciIsInByb2Nlc3NEYXRhIiwidGV4dFN0YXR1cyIsImVy
cm9yVGhyb3duIiwiYWpheCIsInVwZGF0ZSIsImRlbGV0ZSIsInJlYWQiLCJSb3V0ZXIiLCJyb3V0
ZXMiLCJfYmluZFJvdXRlcyIsIm9wdGlvbmFsUGFyYW0iLCJuYW1lZFBhcmFtIiwic3BsYXRQYXJh
bSIsImVzY2FwZVJlZ0V4cCIsInJvdXRlIiwiaXNSZWdFeHAiLCJfcm91dGVUb1JlZ0V4cCIsInJv
dXRlciIsImhpc3RvcnkiLCJmcmFnbWVudCIsIl9leHRyYWN0UGFyYW1ldGVycyIsImV4ZWN1dGUi
LCJuYXZpZ2F0ZSIsIm9wdGlvbmFsIiwiUmVnRXhwIiwiZXhlYyIsInBhcmFtIiwiZGVjb2RlVVJJ
Q29tcG9uZW50IiwiSGlzdG9yeSIsImNoZWNrVXJsIiwid2luZG93IiwibG9jYXRpb24iLCJyb3V0
ZVN0cmlwcGVyIiwicm9vdFN0cmlwcGVyIiwicGF0aFN0cmlwcGVyIiwic3RhcnRlZCIsImludGVy
dmFsIiwiYXRSb290IiwicGF0aCIsInBhdGhuYW1lIiwiZ2V0U2VhcmNoIiwibWF0Y2hSb290Iiwi
ZGVjb2RlRnJhZ21lbnQiLCJyb290UGF0aCIsImRlY29kZVVSSSIsImhyZWYiLCJnZXRIYXNoIiwi
Z2V0UGF0aCIsImNoYXJBdCIsImdldEZyYWdtZW50IiwiX3VzZVB1c2hTdGF0ZSIsIl93YW50c0hh
c2hDaGFuZ2UiLCJzdGFydCIsImhhc2hDaGFuZ2UiLCJfaGFzSGFzaENoYW5nZSIsImRvY3VtZW50
TW9kZSIsIl91c2VIYXNoQ2hhbmdlIiwiX3dhbnRzUHVzaFN0YXRlIiwicHVzaFN0YXRlIiwiX2hh
c1B1c2hTdGF0ZSIsImlmcmFtZSIsInNyYyIsInN0eWxlIiwiZGlzcGxheSIsInRhYkluZGV4Iiwi
Ym9keSIsImlXaW5kb3ciLCJpbnNlcnRCZWZvcmUiLCJmaXJzdENoaWxkIiwiY29udGVudFdpbmRv
dyIsIm9wZW4iLCJjbG9zZSIsImhhc2giLCJhZGRFdmVudExpc3RlbmVyIiwiYXR0YWNoRXZlbnQi
LCJfY2hlY2tVcmxJbnRlcnZhbCIsInNldEludGVydmFsIiwibG9hZFVybCIsInN0b3AiLCJyZW1v
dmVFdmVudExpc3RlbmVyIiwiZGV0YWNoRXZlbnQiLCJyZW1vdmVDaGlsZCIsImNsZWFySW50ZXJ2
YWwiLCJ0aXRsZSIsIl91cGRhdGVIYXNoIiwiYXNzaWduIiwicHJvdG9Qcm9wcyIsInN0YXRpY1By
b3BzIiwicGFyZW50IiwiY2hpbGQiLCJfX3N1cGVyX18iXSwibWFwcGluZ3MiOiJDQU9BLFNBQVVB
LEdBSVIsR0FBSUMsU0FBZUMsT0FBUSxVQUFZQSxLQUFLQSxPQUFTQSxNQUFRQSxZQUMzQ0MsU0FB
VSxVQUFZQSxPQUFPQSxTQUFXQSxRQUFVQSxNQUdwRSxVQUFXQyxVQUFXLFlBQWNBLE9BQU9DLElB
QUssQ0FDOUNELFFBQVEsYUFBYyxTQUFVLFdBQVksU0FBU0UsRUFBR0MsRUFBR0MsR0FHekRQLEVB
QUtRLFNBQVdULEVBQVFDLEVBQU1PLEVBQVNGLEVBQUdDLFNBSXZDLFVBQVdDLFdBQVksWUFBYSxD
QUN6QyxHQUFJRixHQUFJSSxRQUFRLGNBQWVILENBQy9CLEtBQU1BLEVBQUlHLFFBQVEsVUFBYSxN
QUFPQyxJQUN0Q1gsRUFBUUMsRUFBTU8sUUFBU0YsRUFBR0MsT0FHckIsQ0FDTE4sRUFBS1EsU0FB
V1QsRUFBUUMsS0FBVUEsRUFBS0ssRUFBSUwsRUFBS1csUUFBVVgsRUFBS1ksT0FBU1osRUFBS2Es
T0FBU2IsRUFBS00sTUFHNUYsU0FBU04sRUFBTVEsRUFBVUgsRUFBR0MsR0FPN0IsR0FBSVEsR0FB
bUJkLEVBQUtRLFFBRzVCLElBQUlPLEdBQVFDLE1BQU1DLFVBQVVGLEtBRzVCUCxHQUFTVSxRQUFV
LE9BSW5CVixHQUFTRixFQUFJQSxDQUliRSxHQUFTVyxXQUFhLFdBQ3BCbkIsRUFBS1EsU0FBV00s
Q0FDaEIsT0FBT00sTUFNVFosR0FBU2EsWUFBYyxLQU12QmIsR0FBU2MsWUFBYyxLQVN2QixJQUFJ
QyxHQUFZLFNBQVNDLEVBQVFDLEVBQVFDLEdBQ3ZDLE9BQVFGLEdBQ04sSUFBSyxHQUFHLE1BQU8s
WUFDYixNQUFPbkIsR0FBRW9CLEdBQVFMLEtBQUtNLElBRXhCLEtBQUssR0FBRyxNQUFPLFVBQVND
LEdBQ3RCLE1BQU90QixHQUFFb0IsR0FBUUwsS0FBS00sR0FBWUMsR0FFcEMsS0FBSyxHQUFHLE1B
QU8sVUFBU0MsRUFBVUMsR0FDaEMsTUFBT3hCLEdBQUVvQixHQUFRTCxLQUFLTSxHQUFZSSxFQUFH
RixFQUFVUixNQUFPUyxHQUV4RCxLQUFLLEdBQUcsTUFBTyxVQUFTRCxFQUFVRyxFQUFZRixHQUM1
QyxNQUFPeEIsR0FBRW9CLEdBQVFMLEtBQUtNLEdBQVlJLEVBQUdGLEVBQVVSLE1BQU9XLEVBQVlG
LEdBRXBFLFNBQVMsTUFBTyxZQUNkLEdBQUlHLEdBQU9qQixFQUFNa0IsS0FBS0MsVUFDdEJGLEdB
QUtHLFFBQVFmLEtBQUtNLEdBQ2xCLE9BQU9yQixHQUFFb0IsR0FBUVcsTUFBTS9CLEVBQUcyQixL
QUloQyxJQUFJSyxHQUF1QixTQUFTQyxFQUFPQyxFQUFTYixHQUNsRHJCLEVBQUVtQyxLQUFLRCxF
QUFTLFNBQVNmLEVBQVFDLEdBQy9CLEdBQUlwQixFQUFFb0IsR0FBU2EsRUFBTXJCLFVBQVVRLEdB
QVVGLEVBQVVDLEVBQVFDLEVBQVFDLEtBS3ZFLElBQUlJLEdBQUssU0FBU0YsRUFBVWEsR0FDMUIs
R0FBSXBDLEVBQUVxQyxXQUFXZCxHQUFXLE1BQU9BLEVBQ25DLElBQUl2QixFQUFFc0MsU0FBU2Ys
S0FBY2EsRUFBU0csU0FBU2hCLEdBQVcsTUFBT2lCLEdBQWFqQixFQUM5RSxJQUFJdkIsRUFBRXlD
LFNBQVNsQixHQUFXLE1BQU8sVUFBU21CLEdBQVMsTUFBT0EsR0FBTUMsSUFBSXBCLEdBQ3BFLE9B
QU9BLEdBRVQsSUFBSWlCLEdBQWUsU0FBU0ksR0FDMUIsR0FBSUMsR0FBVTdDLEVBQUU4QyxRQUFR
RixFQUN4QixPQUFPLFVBQVNGLEdBQ2QsTUFBT0csR0FBUUgsRUFBTUssYUFpQnpCLElBQUlDLEdB
QVM3QyxFQUFTNkMsU0FHdEIsSUFBSUMsR0FBZ0IsS0FLcEIsSUFBSUMsR0FBWSxTQUFTM0IsRUFB
VTRCLEVBQVFDLEVBQU1DLEVBQVVDLEdBQ3pELEdBQUlDLEdBQUksRUFBR0MsQ0FDWCxJQUFJSixT
QUFlQSxLQUFTLFNBQVUsQ0FFcEMsR0FBSUMsUUFBa0IsSUFBSyxXQUFhQyxJQUFRQSxFQUFLOUIs
Y0FBaUIsR0FBRzhCLEVBQUs5QixRQUFVNkIsQ0FDeEYsS0FBS0csRUFBUXhELEVBQUV5RCxLQUFL
TCxHQUFPRyxFQUFJQyxFQUFNckMsT0FBU29DLElBQUssQ0FDakRKLEVBQVNELEVBQVUzQixFQUFV
NEIsRUFBUUssRUFBTUQsR0FBSUgsRUFBS0ksRUFBTUQsSUFBS0QsUUFFNUQsSUFBSUYsR0FBUUgs
RUFBY1MsS0FBS04sR0FBTyxDQUUzQyxJQUFLSSxFQUFRSixFQUFLTyxNQUFNVixHQUFnQk0sRUFB
SUMsRUFBTXJDLE9BQVFvQyxJQUFLLENBQzdESixFQUFTNUIsRUFBUzRCLEVBQVFLLEVBQU1ELEdB
QUlGLEVBQVVDLFFBRTNDLENBRUxILEVBQVM1QixFQUFTNEIsRUFBUUMsRUFBTUMsRUFBVUMsR0FF
NUMsTUFBT0gsR0FLVEgsR0FBT1ksR0FBSyxTQUFTUixFQUFNQyxFQUFVN0IsR0FDbkMsTUFBT3FD
LEdBQVc5QyxLQUFNcUMsRUFBTUMsRUFBVTdCLEdBSTFDLElBQUlxQyxHQUFhLFNBQVNDLEVBQUtW
LEVBQU1DLEVBQVU3QixFQUFTdUMsR0FDdERELEVBQUlFLFFBQVVkLEVBQVVlLEVBQU9ILEVBQUlF
LFlBQWVaLEVBQU1DLEdBQ3REN0IsUUFBU0EsRUFDVDBDLElBQUtKLEVBQ0xDLFVBQVdBLEdBR2Is
SUFBSUEsRUFBVyxDQUNiLEdBQUlJLEdBQVlMLEVBQUlNLGFBQWVOLEVBQUlNLGNBQ3ZDRCxHQUFV
SixFQUFVTSxJQUFNTixFQUc1QixNQUFPRCxHQU1UZCxHQUFPc0IsU0FBVyxTQUFTUixFQUFLVixF
QUFNQyxHQUNwQyxJQUFLUyxFQUFLLE1BQU8vQyxLQUNqQixJQUFJc0QsR0FBS1AsRUFBSVMsWUFB
Y1QsRUFBSVMsVUFBWXZFLEVBQUV3RSxTQUFTLEtBQ3RELElBQUlDLEdBQWMxRCxLQUFLMkQsZUFB
aUIzRCxLQUFLMkQsZ0JBQzdDLElBQUlYLEdBQVlVLEVBQVlKLEVBSTVCLEtBQUtOLEVBQVcsQ0FD
ZCxHQUFJWSxHQUFTNUQsS0FBS3dELFlBQWN4RCxLQUFLd0QsVUFBWXZFLEVBQUV3RSxTQUFTLEtB
QzVEVCxHQUFZVSxFQUFZSixJQUFPUCxJQUFLQSxFQUFLYyxNQUFPUCxFQUFJQSxHQUFJTSxFQUFR
RixZQUFhQSxFQUFhSSxNQUFPLEdBSW5HaEIsRUFBV0MsRUFBS1YsRUFBTUMsRUFBVXRDLEtBQU1n
RCxFQUN0QyxPQUFPaEQsTUFJVCxJQUFJa0QsR0FBUSxTQUFTZCxFQUFRQyxFQUFNQyxFQUFVeUIs
R0FDM0MsR0FBSXpCLEVBQVUsQ0FDWixHQUFJMEIsR0FBVzVCLEVBQU9DLEtBQVVELEVBQU9DLE1B
Q3ZDLElBQUk1QixHQUFVc0QsRUFBUXRELFFBQVMwQyxFQUFNWSxFQUFRWixJQUFLSCxFQUFZZSxF
QUFRZixTQUN0RSxJQUFJQSxFQUFXQSxFQUFVYyxPQUV6QkUsR0FBU0MsTUFBTTNCLFNBQVVBLEVB
QVU3QixRQUFTQSxFQUFTMEMsSUFBSzFDLEdBQVcwQyxFQUFLSCxVQUFXQSxJQUV2RixNQUFPWixH
QU9USCxHQUFPaUMsSUFBTSxTQUFTN0IsRUFBTUMsRUFBVTdCLEdBQ3BDLElBQUtULEtBQUtpRCxR
QUFTLE1BQU9qRCxLQUMxQkEsTUFBS2lELFFBQVVkLEVBQVVnQyxFQUFRbkUsS0FBS2lELFFBQVNa
LEVBQU1DLEdBQ25EN0IsUUFBU0EsRUFDVDJDLFVBQVdwRCxLQUFLcUQsWUFFbEIsT0FBT3JELE1B
S1RpQyxHQUFPbUMsY0FBZ0IsU0FBU3JCLEVBQUtWLEVBQU1DLEdBQ3pDLEdBQUlvQixHQUFjMUQs
S0FBSzJELFlBQ3ZCLEtBQUtELEVBQWEsTUFBTzFELEtBRXpCLElBQUlxRSxHQUFNdEIsR0FBT0Es
RUFBSVMsV0FBYXZFLEVBQUV5RCxLQUFLZ0IsRUFFekMsS0FBSyxHQUFJbEIsR0FBSSxFQUFHQSxF
QUFJNkIsRUFBSWpFLE9BQVFvQyxJQUFLLENBQ25DLEdBQUlRLEdBQVlVLEVBQVlXLEVBQUk3QixH
QUloQyxLQUFLUSxFQUFXLEtBRWhCQSxHQUFVRCxJQUFJbUIsSUFBSTdCLEVBQU1DLEVBQVV0QyxN
QUdwQyxNQUFPQSxNQUlULElBQUltRSxHQUFTLFNBQVMvQixFQUFRQyxFQUFNQyxFQUFVeUIsR0FD
NUMsSUFBSzNCLEVBQVEsTUFFYixJQUFJSSxHQUFJLEVBQUdRLENBQ1gsSUFBSXZDLEdBQVVzRCxF
QUFRdEQsUUFBUzJDLEVBQVlXLEVBQVFYLFNBR25ELEtBQUtmLElBQVNDLElBQWE3QixFQUFTLENB
Q2xDLEdBQUk0RCxHQUFNcEYsRUFBRXlELEtBQUtVLEVBQ2pCLE1BQU9aLEVBQUk2QixFQUFJakUs
T0FBUW9DLElBQUssQ0FDMUJRLEVBQVlJLEVBQVVpQixFQUFJN0IsVUFDbkJZLEdBQVVKLEVBQVVN
LFVBQ3BCTixHQUFVVSxZQUFZVixFQUFVYSxPQUV6QyxPQUdGLEdBQUlwQixHQUFRSixHQUFRQSxH
QUFRcEQsRUFBRXlELEtBQUtOLEVBQ25DLE1BQU9JLEVBQUlDLEVBQU1yQyxPQUFRb0MsSUFBSyxD
QUM1QkgsRUFBT0ksRUFBTUQsRUFDYixJQUFJd0IsR0FBVzVCLEVBQU9DLEVBR3RCLEtBQUsyQixF
QUFVLEtBR2YsSUFBSU0sS0FDSixLQUFLLEdBQUlDLEdBQUksRUFBR0EsRUFBSVAsRUFBUzVELE9B
QVFtRSxJQUFLLENBQ3hDLEdBQUlDLEdBQVVSLEVBQVNPLEVBQ3ZCLElBQ0VqQyxHQUFZQSxJQUFh
a0MsRUFBUWxDLFVBQy9CQSxJQUFha0MsRUFBUWxDLFNBQVNtQyxXQUM1QmhFLEdBQVdBLElBQVkr
RCxFQUFRL0QsUUFDbkMsQ0FDQTZELEVBQVVMLEtBQUtPLE9BQ1YsQ0FDTHhCLEVBQVl3QixFQUFR
eEIsU0FDcEIsSUFBSUEsS0FBZUEsRUFBVWMsUUFBVSxFQUFHLE9BQ2pDVixHQUFVSixFQUFVTSxV
QUNwQk4sR0FBVVUsWUFBWVYsRUFBVWEsU0FNN0MsR0FBSVMsRUFBVWxFLE9BQVEsQ0FDcEJnQyxF
QUFPQyxHQUFRaUMsTUFDVixPQUNFbEMsR0FBT0MsSUFHbEIsTUFBT0QsR0FPVEgsR0FBT3lDLEtB
QU8sU0FBU3JDLEVBQU1DLEVBQVU3QixHQUVyQyxHQUFJMkIsR0FBU0QsRUFBVXdDLEtBQWF0QyxF
QUFNQyxFQUFVckQsRUFBRTJGLEtBQUs1RSxLQUFLa0UsSUFBS2xFLE1BQ3JFLFVBQVdxQyxLQUFT
LFVBQVk1QixHQUFXLEtBQU02QixNQUFnQixFQUNqRSxPQUFPdEMsTUFBSzZDLEdBQUdULEVBQVFF
LEVBQVU3QixHQUluQ3dCLEdBQU80QyxhQUFlLFNBQVM5QixFQUFLVixFQUFNQyxHQUV4QyxHQUFJ
RixHQUFTRCxFQUFVd0MsS0FBYXRDLEVBQU1DLEVBQVVyRCxFQUFFMkYsS0FBSzVFLEtBQUtvRSxj
QUFlcEUsS0FBTStDLEdBQ3JGLE9BQU8vQyxNQUFLdUQsU0FBU1IsRUFBS1gsR0FLNUIsSUFBSXVD
LEdBQVUsU0FBU0csRUFBS3pDLEVBQU1DLEVBQVV5QyxHQUMxQyxHQUFJekMsRUFBVSxDQUNaLEdB
QUlvQyxHQUFPSSxFQUFJekMsR0FBUXBELEVBQUV5RixLQUFLLFdBQzVCSyxFQUFNMUMsRUFBTXFD
LEVBQ1pwQyxHQUFTdEIsTUFBTWhCLEtBQU1jLFlBRXZCNEQsR0FBS0QsVUFBWW5DLEVBRW5CLE1B
QU93QyxHQU9UN0MsR0FBTytDLFFBQVUsU0FBUzNDLEdBQ3hCLElBQUtyQyxLQUFLaUQsUUFBUyxN
QUFPakQsS0FFMUIsSUFBSUksR0FBUzZFLEtBQUtDLElBQUksRUFBR3BFLFVBQVVWLE9BQVMsRUFD
NUMsSUFBSVEsR0FBT2hCLE1BQU1RLEVBQ2pCLEtBQUssR0FBSW9DLEdBQUksRUFBR0EsRUFBSXBD
LEVBQVFvQyxJQUFLNUIsRUFBSzRCLEdBQUsxQixVQUFVMEIsRUFBSSxFQUV6REwsR0FBVWdELEVB
QVluRixLQUFLaUQsUUFBU1osTUFBVyxHQUFHekIsRUFDbEQsT0FBT1osTUFJVCxJQUFJbUYsR0FB
YSxTQUFTQyxFQUFXL0MsRUFBTUMsRUFBVTFCLEdBQ25ELEdBQUl3RSxFQUFXLENBQ2IsR0FBSWhE
LEdBQVNnRCxFQUFVL0MsRUFDdkIsSUFBSWdELEdBQVlELEVBQVVFLEdBQzFCLElBQUlsRCxHQUFV
aUQsRUFBV0EsRUFBWUEsRUFBVTFGLE9BQy9DLElBQUl5QyxFQUFRbUQsRUFBY25ELEVBQVF4QixF
QUNsQyxJQUFJeUUsRUFBV0UsRUFBY0YsR0FBWWhELEdBQU1tRCxPQUFPNUUsSUFFeEQsTUFBT3dF
LEdBTVQsSUFBSUcsR0FBZ0IsU0FBU25ELEVBQVF4QixHQUNuQyxHQUFJNkUsR0FBSWpELEdBQUss
RUFBR2tELEVBQUl0RCxFQUFPaEMsT0FBUXVGLEVBQUsvRSxFQUFLLEdBQUlnRixFQUFLaEYsRUFB
SyxHQUFJaUYsRUFBS2pGLEVBQUssRUFDekUsUUFBUUEsRUFBS1IsUUFDWCxJQUFLLEdBQUcsUUFB
U29DLEVBQUlrRCxHQUFJRCxFQUFLckQsRUFBT0ksSUFBSUYsU0FBU3pCLEtBQUs0RSxFQUFHdEMs
SUFBTSxPQUNoRSxLQUFLLEdBQUcsUUFBU1gsRUFBSWtELEdBQUlELEVBQUtyRCxFQUFPSSxJQUFJ
RixTQUFTekIsS0FBSzRFLEVBQUd0QyxJQUFLd0MsRUFBSyxPQUNwRSxLQUFLLEdBQUcsUUFBU25E
LEVBQUlrRCxHQUFJRCxFQUFLckQsRUFBT0ksSUFBSUYsU0FBU3pCLEtBQUs0RSxFQUFHdEMsSUFB
S3dDLEVBQUlDLEVBQUssT0FDeEUsS0FBSyxHQUFHLFFBQVNwRCxFQUFJa0QsR0FBSUQsRUFBS3JE
LEVBQU9JLElBQUlGLFNBQVN6QixLQUFLNEUsRUFBR3RDLElBQUt3QyxFQUFJQyxFQUFJQyxFQUFL
LE9BQzVFLFNBQVMsUUFBU3JELEVBQUlrRCxHQUFJRCxFQUFLckQsRUFBT0ksSUFBSUYsU0FBU3RC
LE1BQU15RSxFQUFHdEMsSUFBS3ZDLEVBQU8sU0FLNUVxQixHQUFPMkMsS0FBUzNDLEVBQU9ZLEVB
Q3ZCWixHQUFPNkQsT0FBUzdELEVBQU9pQyxHQUl2QmpGLEdBQUU4RyxPQUFPM0csRUFBVTZDLEVB
WW5CLElBQUkrRCxHQUFRNUcsRUFBUzRHLE1BQVEsU0FBU2hFLEVBQVkrQixHQUNoRCxHQUFJbEMs
R0FBUUcsS0FDWitCLEtBQVlBLEtBQ1ovRCxNQUFLaUcsSUFBTWhILEVBQUV3RSxTQUFTekQsS0FB
S2tHLFVBQzNCbEcsTUFBS2dDLGFBQ0wsSUFBSStCLEVBQVFvQyxXQUFZbkcsS0FBS21HLFdBQWFw
QyxFQUFRb0MsVUFDbEQsSUFBSXBDLEVBQVFxQyxNQUFPdkUsRUFBUTdCLEtBQUtvRyxNQUFNdkUs
RUFBT2tDLE1BQzdDLElBQUlzQyxHQUFXcEgsRUFBRXFILE9BQU90RyxLQUFNLFdBQzlCNkIsR0FB
UTVDLEVBQUVvSCxTQUFTcEgsRUFBRThHLFVBQVdNLEVBQVV4RSxHQUFRd0UsRUFDbERyRyxNQUFL
dUcsSUFBSTFFLEVBQU9rQyxFQUNoQi9ELE1BQUt3RyxVQUNMeEcsTUFBS3lHLFdBQVd6RixNQUFN
aEIsS0FBTWMsV0FJOUI3QixHQUFFOEcsT0FBT0MsRUFBTW5HLFVBQVdvQyxHQUd4QnVFLFFBQVMs
S0FHVEUsZ0JBQWlCLEtBSWpCQyxZQUFhLEtBSWJULFVBQVcsSUFJWE8sV0FBWSxhQUdaRyxPQUFR
LFNBQVM3QyxHQUNmLE1BQU85RSxHQUFFNEgsTUFBTTdHLEtBQUtnQyxhQUt0QjhFLEtBQU0sV0FD
SixNQUFPMUgsR0FBUzBILEtBQUs5RixNQUFNaEIsS0FBTWMsWUFJbkNjLElBQUssU0FBU21GLEdB
Q1osTUFBTy9HLE1BQUtnQyxXQUFXK0UsSUFJekJDLE9BQVEsU0FBU0QsR0FDZixNQUFPOUgsR0FB
RStILE9BQU9oSCxLQUFLNEIsSUFBSW1GLEtBSzNCRSxJQUFLLFNBQVNGLEdBQ1osTUFBTy9HLE1B
QUs0QixJQUFJbUYsSUFBUyxNQUkzQmhGLFFBQVMsU0FBU0YsR0FDaEIsUUFBUzVDLEVBQUV1QixT
QUFTcUIsRUFBTzdCLE1BQU1BLEtBQUtnQyxhQU14Q3VFLElBQUssU0FBU1csRUFBS0MsRUFBS3BE
LEdBQ3RCLEdBQUltRCxHQUFPLEtBQU0sTUFBT2xILEtBR3hCLElBQUk2QixFQUNKLFVBQVdxRixL
QUFRLFNBQVUsQ0FDM0JyRixFQUFRcUYsQ0FDUm5ELEdBQVVvRCxNQUNMLEVBQ0p0RixNQUFZcUYs
R0FBT0MsRUFHdEJwRCxJQUFZQSxLQUdaLEtBQUsvRCxLQUFLb0gsVUFBVXZGLEVBQU9rQyxHQUFV
LE1BQU8sTUFHNUMsSUFBSXNELEdBQWF0RCxFQUFRc0QsS0FDekIsSUFBSUMsR0FBYXZELEVBQVF1
RCxNQUN6QixJQUFJQyxLQUNKLElBQUlDLEdBQWF4SCxLQUFLeUgsU0FDdEJ6SCxNQUFLeUgsVUFB
WSxJQUVqQixLQUFLRCxFQUFVLENBQ2J4SCxLQUFLMEgsb0JBQXNCekksRUFBRTRILE1BQU03RyxL
QUFLZ0MsV0FDeENoQyxNQUFLd0csV0FHUCxHQUFJbUIsR0FBVTNILEtBQUtnQyxVQUNuQixJQUFJ
d0UsR0FBVXhHLEtBQUt3RyxPQUNuQixJQUFJb0IsR0FBVTVILEtBQUswSCxtQkFHbkIsS0FBSyxH
QUFJWCxLQUFRbEYsR0FBTyxDQUN0QnNGLEVBQU10RixFQUFNa0YsRUFDWixLQUFLOUgsRUFBRTRJ
LFFBQVFGLEVBQVFaLEdBQU9JLEdBQU1JLEVBQVF0RCxLQUFLOEMsRUFDakQsS0FBSzlILEVBQUU0
SSxRQUFRRCxFQUFLYixHQUFPSSxHQUFNLENBQy9CWCxFQUFRTyxHQUFRSSxNQUNYLE9BQ0VYLEdB
QVFPLEdBRWpCTSxRQUFlTSxHQUFRWixHQUFRWSxFQUFRWixHQUFRSSxFQUlqRCxHQUFJbkgsS0FB
SzJHLGNBQWU5RSxHQUFPN0IsS0FBS3NELEdBQUt0RCxLQUFLNEIsSUFBSTVCLEtBQUsyRyxZQUd2
RCxLQUFLVyxFQUFRLENBQ1gsR0FBSUMsRUFBUW5ILE9BQVFKLEtBQUs4SCxTQUFXL0QsQ0FDcEMs
S0FBSyxHQUFJdkIsR0FBSSxFQUFHQSxFQUFJK0UsRUFBUW5ILE9BQVFvQyxJQUFLLENBQ3ZDeEMs
S0FBS2dGLFFBQVEsVUFBWXVDLEVBQVEvRSxHQUFJeEMsS0FBTTJILEVBQVFKLEVBQVEvRSxJQUFL
dUIsSUFNcEUsR0FBSXlELEVBQVUsTUFBT3hILEtBQ3JCLEtBQUtzSCxFQUFRLENBQ1gsTUFBT3RI
LEtBQUs4SCxTQUFVLENBQ3BCL0QsRUFBVS9ELEtBQUs4SCxRQUNmOUgsTUFBSzhILFNBQVcsS0FD
aEI5SCxNQUFLZ0YsUUFBUSxTQUFVaEYsS0FBTStELElBR2pDL0QsS0FBSzhILFNBQVcsS0FDaEI5
SCxNQUFLeUgsVUFBWSxLQUNqQixPQUFPekgsT0FLVHFILE1BQU8sU0FBU04sRUFBTWhELEdBQ3BC
LE1BQU8vRCxNQUFLdUcsSUFBSVEsTUFBVyxHQUFHOUgsRUFBRThHLFVBQVdoQyxHQUFVc0QsTUFB
TyxTQUk5RFUsTUFBTyxTQUFTaEUsR0FDZCxHQUFJbEMsS0FDSixLQUFLLEdBQUlxRixLQUFPbEgs
TUFBS2dDLFdBQVlILEVBQU1xRixPQUFZLEVBQ25ELE9BQU9sSCxNQUFLdUcsSUFBSTFFLEVBQU81
QyxFQUFFOEcsVUFBV2hDLEdBQVVzRCxNQUFPLFNBS3ZEVyxXQUFZLFNBQVNqQixHQUNuQixHQUFJ
QSxHQUFRLEtBQU0sT0FBUTlILEVBQUVnSixRQUFRakksS0FBS3dHLFFBQ3pDLE9BQU92SCxHQUFF
Z0ksSUFBSWpILEtBQUt3RyxRQUFTTyxJQVM3Qm1CLGtCQUFtQixTQUFTQyxHQUMxQixJQUFLQSxF
QUFNLE1BQU9uSSxNQUFLZ0ksYUFBZS9JLEVBQUU0SCxNQUFNN0csS0FBS3dHLFNBQVcsS0FDOUQs
SUFBSTRCLEdBQU1wSSxLQUFLeUgsVUFBWXpILEtBQUswSCxvQkFBc0IxSCxLQUFLZ0MsVUFDM0Qs
SUFBSXdFLEtBQ0osS0FBSyxHQUFJTyxLQUFRb0IsR0FBTSxDQUNyQixHQUFJaEIsR0FBTWdCLEVB
QUtwQixFQUNmLElBQUk5SCxFQUFFNEksUUFBUU8sRUFBSXJCLEdBQU9JLEdBQU0sUUFDL0JYLEdB
QVFPLEdBQVFJLEVBRWxCLE1BQU9sSSxHQUFFb0osS0FBSzdCLEdBQVdBLEVBQVUsT0FLckM4QixT
QUFVLFNBQVN2QixHQUNqQixHQUFJQSxHQUFRLE9BQVMvRyxLQUFLMEgsb0JBQXFCLE1BQU8sS0FD
dEQsT0FBTzFILE1BQUswSCxvQkFBb0JYLElBS2xDd0IsbUJBQW9CLFdBQ2xCLE1BQU90SixHQUFF
NEgsTUFBTTdHLEtBQUswSCxzQkFLdEJjLE1BQU8sU0FBU3pFLEdBQ2RBLEVBQVU5RSxFQUFFOEcs
UUFBUUssTUFBTyxNQUFPckMsRUFDbEMsSUFBSXBDLEdBQVEzQixJQUNaLElBQUl5SSxHQUFVMUUs
RUFBUTBFLE9BQ3RCMUUsR0FBUTBFLFFBQVUsU0FBU0MsR0FDekIsR0FBSUMsR0FBYzVFLEVBQVFx
QyxNQUFRekUsRUFBTXlFLE1BQU1zQyxFQUFNM0UsR0FBVzJFLENBQy9ELEtBQUsvRyxFQUFNNEUs
SUFBSW9DLEVBQWE1RSxHQUFVLE1BQU8sTUFDN0MsSUFBSTBFLEVBQVNBLEVBQVE1SCxLQUFLa0Qs
RUFBUXRELFFBQVNrQixFQUFPK0csRUFBTTNFLEVBQ3hEcEMsR0FBTXFELFFBQVEsT0FBUXJELEVB
QU8rRyxFQUFNM0UsR0FFckM2RSxHQUFVNUksS0FBTStELEVBQ2hCLE9BQU8vRCxNQUFLOEcsS0FB
SyxPQUFROUcsS0FBTStELElBTWpDOEUsS0FBTSxTQUFTM0IsRUFBS0MsRUFBS3BELEdBRXZCLEdB
QUlsQyxFQUNKLElBQUlxRixHQUFPLFlBQWVBLEtBQVEsU0FBVSxDQUMxQ3JGLEVBQVFxRixDQUNS
bkQsR0FBVW9ELE1BQ0wsRUFDSnRGLE1BQVlxRixHQUFPQyxFQUd0QnBELEVBQVU5RSxFQUFFOEcs
UUFBUStDLFNBQVUsS0FBTTFDLE1BQU8sTUFBT3JDLEVBQ2xELElBQUlnRixHQUFPaEYsRUFBUWdG
LElBS25CLElBQUlsSCxJQUFVa0gsRUFBTSxDQUNsQixJQUFLL0ksS0FBS3VHLElBQUkxRSxFQUFP
a0MsR0FBVSxNQUFPLFdBQ2pDLEtBQUsvRCxLQUFLb0gsVUFBVXZGLEVBQU9rQyxHQUFVLENBQzFD
LE1BQU8sT0FLVCxHQUFJcEMsR0FBUTNCLElBQ1osSUFBSXlJLEdBQVUxRSxFQUFRMEUsT0FDdEIs
SUFBSXpHLEdBQWFoQyxLQUFLZ0MsVUFDdEIrQixHQUFRMEUsUUFBVSxTQUFTQyxHQUV6Qi9HLEVB
QU1LLFdBQWFBLENBQ25CLElBQUkyRyxHQUFjNUUsRUFBUXFDLE1BQVF6RSxFQUFNeUUsTUFBTXND
LEVBQU0zRSxHQUFXMkUsQ0FDL0QsSUFBSUssRUFBTUosRUFBYzFKLEVBQUU4RyxVQUFXbEUsRUFB
TzhHLEVBQzVDLElBQUlBLElBQWdCaEgsRUFBTTRFLElBQUlvQyxFQUFhNUUsR0FBVSxNQUFPLE1B
QzVELElBQUkwRSxFQUFTQSxFQUFRNUgsS0FBS2tELEVBQVF0RCxRQUFTa0IsRUFBTytHLEVBQU0z
RSxFQUN4RHBDLEdBQU1xRCxRQUFRLE9BQVFyRCxFQUFPK0csRUFBTTNFLEdBRXJDNkUsR0FBVTVJ
LEtBQU0rRCxFQUdoQixJQUFJbEMsR0FBU2tILEVBQU0vSSxLQUFLZ0MsV0FBYS9DLEVBQUU4RyxV
QUFXL0QsRUFBWUgsRUFFOUQsSUFBSXhCLEdBQVNMLEtBQUtnSixRQUFVLFNBQVlqRixFQUFRa0Ys
TUFBUSxRQUFVLFFBQ2xFLElBQUk1SSxJQUFXLFVBQVkwRCxFQUFRbEMsTUFBT2tDLEVBQVFsQyxN
QUFRQSxDQUMxRCxJQUFJcUgsR0FBTWxKLEtBQUs4RyxLQUFLekcsRUFBUUwsS0FBTStELEVBR2xD
L0QsTUFBS2dDLFdBQWFBLENBRWxCLE9BQU9rSCxJQU1UQyxRQUFTLFNBQVNwRixHQUNoQkEsRUFB
VUEsRUFBVTlFLEVBQUU0SCxNQUFNOUMsS0FDNUIsSUFBSXBDLEdBQVEzQixJQUNaLElBQUl5SSxH
QUFVMUUsRUFBUTBFLE9BQ3RCLElBQUlNLEdBQU9oRixFQUFRZ0YsSUFFbkIsSUFBSUksR0FBVSxX
QUNaeEgsRUFBTXlDLGVBQ056QyxHQUFNcUQsUUFBUSxVQUFXckQsRUFBT0EsRUFBTXdFLFdBQVlw
QyxHQUdwREEsR0FBUTBFLFFBQVUsU0FBU0MsR0FDekIsR0FBSUssRUFBTUksR0FDVixJQUFJVixF
QUFTQSxFQUFRNUgsS0FBS2tELEVBQVF0RCxRQUFTa0IsRUFBTytHLEVBQU0zRSxFQUN4RCxLQUFL
cEMsRUFBTXFILFFBQVNySCxFQUFNcUQsUUFBUSxPQUFRckQsRUFBTytHLEVBQU0zRSxHQUd6RCxJ
QUFJbUYsR0FBTSxLQUNWLElBQUlsSixLQUFLZ0osUUFBUyxDQUNoQi9KLEVBQUVtSyxNQUFNckYs
RUFBUTBFLGFBQ1gsQ0FDTEcsRUFBVTVJLEtBQU0rRCxFQUNoQm1GLEdBQU1sSixLQUFLOEcsS0FB
SyxTQUFVOUcsS0FBTStELEdBRWxDLElBQUtnRixFQUFNSSxHQUNYLE9BQU9ELElBTVRHLElBQUss
V0FDSCxHQUFJQyxHQUNGckssRUFBRXFILE9BQU90RyxLQUFNLFlBQ2ZmLEVBQUVxSCxPQUFPdEcs
S0FBS21HLFdBQVksUUFDMUJvRCxHQUNGLElBQUl2SixLQUFLZ0osUUFBUyxNQUFPTSxFQUN6QixJ
QUFJaEcsR0FBS3RELEtBQUs0QixJQUFJNUIsS0FBSzJHLFlBQ3ZCLE9BQU8yQyxHQUFLRSxRQUFR
LFNBQVUsT0FBU0MsbUJBQW1CbkcsSUFLNUQ4QyxNQUFPLFNBQVNzQyxFQUFNM0UsR0FDcEIsTUFB
TzJFLElBSVQ3QixNQUFPLFdBQ0wsTUFBTyxJQUFJN0csTUFBSzBKLFlBQVkxSixLQUFLZ0MsYUFJ
bkNnSCxNQUFPLFdBQ0wsT0FBUWhKLEtBQUtpSCxJQUFJakgsS0FBSzJHLGNBSXhCZ0QsUUFBUyxT
QUFTNUYsR0FDaEIsTUFBTy9ELE1BQUtvSCxhQUFjbkksRUFBRThHLFVBQVdoQyxHQUFVK0UsU0FB
VSxTQUs3RDFCLFVBQVcsU0FBU3ZGLEVBQU9rQyxHQUN6QixJQUFLQSxFQUFRK0UsV0FBYTlJLEtB
QUs4SSxTQUFVLE1BQU8sS0FDaERqSCxHQUFRNUMsRUFBRThHLFVBQVcvRixLQUFLZ0MsV0FBWUgs
RUFDdEMsSUFBSStILEdBQVE1SixLQUFLMEcsZ0JBQWtCMUcsS0FBSzhJLFNBQVNqSCxFQUFPa0Ms
SUFBWSxJQUNwRSxLQUFLNkYsRUFBTyxNQUFPLEtBQ25CNUosTUFBS2dGLFFBQVEsVUFBV2hGLEtB
QU00SixFQUFPM0ssRUFBRThHLE9BQU9oQyxHQUFVMkMsZ0JBQWlCa0QsSUFDekUsT0FBTyxTQU9Y
LElBQUlDLElBQWdCbkgsS0FBTSxFQUFHb0gsT0FBUSxFQUFHQyxNQUFPLEVBQUdDLE9BQVEsRUFB
R0MsS0FBTSxFQUMvREMsS0FBTSxFQUFHQyxNQUFPLEVBQUdsQyxRQUFTLEVBR2hDaEgsR0FBcUIr
RSxFQUFPNkQsRUFBYyxhQWUxQyxJQUFJTyxHQUFhaEwsRUFBU2dMLFdBQWEsU0FBU0MsRUFBUXRH
LEdBQ3REQSxJQUFZQSxLQUNaLElBQUlBLEVBQVFwQyxNQUFPM0IsS0FBSzJCLE1BQVFvQyxFQUFR
cEMsS0FDeEMsSUFBSW9DLEVBQVF1RyxpQkFBb0IsR0FBR3RLLEtBQUtzSyxXQUFhdkcsRUFBUXVH
LFVBQzdEdEssTUFBS3VLLFFBQ0x2SyxNQUFLeUcsV0FBV3pGLE1BQU1oQixLQUFNYyxVQUM1QixJ
QUFJdUosRUFBUXJLLEtBQUt3SyxNQUFNSCxFQUFRcEwsRUFBRThHLFFBQVF1QixPQUFRLE1BQU92
RCxJQUkxRCxJQUFJMEcsSUFBY0MsSUFBSyxLQUFNQyxPQUFRLEtBQU1DLE1BQU8sS0FDbEQsSUFB
SUMsSUFBY0gsSUFBSyxLQUFNQyxPQUFRLE1BR3JDLElBQUlHLEdBQVMsU0FBU0MsRUFBT0MsRUFB
UUMsR0FDbkNBLEVBQUtoRyxLQUFLaUcsSUFBSWpHLEtBQUtDLElBQUkrRixFQUFJLEdBQUlGLEVB
QU0zSyxPQUNyQyxJQUFJK0ssR0FBT3ZMLE1BQU1tTCxFQUFNM0ssT0FBUzZLLEVBQ2hDLElBQUk3
SyxHQUFTNEssRUFBTzVLLE1BQ3BCLElBQUlvQyxFQUNKLEtBQUtBLEVBQUksRUFBR0EsRUFBSTJJ
LEVBQUsvSyxPQUFRb0MsSUFBSzJJLEVBQUszSSxHQUFLdUksRUFBTXZJLEVBQUl5SSxFQUN0RCxL
QUFLekksRUFBSSxFQUFHQSxFQUFJcEMsRUFBUW9DLElBQUt1SSxFQUFNdkksRUFBSXlJLEdBQU1E
LEVBQU94SSxFQUNwRCxLQUFLQSxFQUFJLEVBQUdBLEVBQUkySSxFQUFLL0ssT0FBUW9DLElBQUt1
SSxFQUFNdkksRUFBSXBDLEVBQVM2SyxHQUFNRSxFQUFLM0ksR0FJbEV2RCxHQUFFOEcsT0FBT3FF
LEVBQVd2SyxVQUFXb0MsR0FJN0JOLE1BQU9xRSxFQUlQUyxXQUFZLGFBSVpHLE9BQVEsU0FBUzdD
LEdBQ2YsTUFBTy9ELE1BQUs4RSxJQUFJLFNBQVNuRCxHQUFTLE1BQU9BLEdBQU1pRixPQUFPN0Ms
TUFJeEQrQyxLQUFNLFdBQ0osTUFBTzFILEdBQVMwSCxLQUFLOUYsTUFBTWhCLEtBQU1jLFlBTW5D
NEosSUFBSyxTQUFTTCxFQUFRdEcsR0FDcEIsTUFBTy9ELE1BQUt1RyxJQUFJOEQsRUFBUXBMLEVB
QUU4RyxRQUFRNkUsTUFBTyxPQUFRN0csRUFBUzhHLEtBSTVERixPQUFRLFNBQVNOLEVBQVF0RyxH
QUN2QkEsRUFBVTlFLEVBQUU4RyxVQUFXaEMsRUFDdkIsSUFBSXFILElBQVluTSxFQUFFb00sUUFB
UWhCLEVBQzFCQSxHQUFTZSxHQUFZZixHQUFVQSxFQUFPMUssT0FDdEMsSUFBSTJMLEdBQVV0TCxL
QUFLdUwsY0FBY2xCLEVBQVF0RyxFQUN6QyxLQUFLQSxFQUFRdUQsUUFBVWdFLEVBQVFsTCxPQUFR
LENBQ3JDMkQsRUFBUXdELFNBQVdpRSxTQUFXQyxVQUFZSCxRQUFTQSxFQUNuRHRMLE1BQUtnRixR
QUFRLFNBQVVoRixLQUFNK0QsR0FFL0IsTUFBT3FILEdBQVdFLEVBQVEsR0FBS0EsR0FPakMvRSxJ
QUFLLFNBQVM4RCxFQUFRdEcsR0FDcEIsR0FBSXNHLEdBQVUsS0FBTSxNQUVwQnRHLEdBQVU5RSxF
QUFFOEcsVUFBVzBFLEVBQVkxRyxFQUNuQyxJQUFJQSxFQUFRcUMsUUFBVXBHLEtBQUt3QixTQUFT
NkksR0FBUyxDQUMzQ0EsRUFBU3JLLEtBQUtvRyxNQUFNaUUsRUFBUXRHLE9BRzlCLEdBQUlxSCxJ
QUFZbk0sRUFBRW9NLFFBQVFoQixFQUMxQkEsR0FBU2UsR0FBWWYsR0FBVUEsRUFBTzFLLE9BRXRD
LElBQUlzTCxHQUFLbEgsRUFBUWtILEVBQ2pCLElBQUlBLEdBQU0sS0FBTUEsR0FBTUEsQ0FDdEIs
SUFBSUEsRUFBS2pMLEtBQUtJLE9BQVE2SyxFQUFLakwsS0FBS0ksTUFDaEMsSUFBSTZLLEVBQUss
RUFBR0EsR0FBTWpMLEtBQUtJLE9BQVMsQ0FFaEMsSUFBSW1HLEtBQ0osSUFBSW1GLEtBQ0osSUFB
SUMsS0FDSixJQUFJQyxLQUNKLElBQUlDLEtBRUosSUFBSW5CLEdBQU0zRyxFQUFRMkcsR0FDbEIs
SUFBSUUsR0FBUTdHLEVBQVE2RyxLQUNwQixJQUFJRCxHQUFTNUcsRUFBUTRHLE1BRXJCLElBQUlt
QixHQUFPLEtBQ1gsSUFBSUMsR0FBVy9MLEtBQUtzSyxZQUFjVyxHQUFNLE1BQVFsSCxFQUFRK0gs
T0FBUyxLQUNqRSxJQUFJRSxHQUFXL00sRUFBRXlDLFNBQVMxQixLQUFLc0ssWUFBY3RLLEtBQUtz
SyxXQUFhLElBSS9ELElBQUkzSSxHQUFPYSxDQUNYLEtBQUtBLEVBQUksRUFBR0EsRUFBSTZILEVB
QU9qSyxPQUFRb0MsSUFBSyxDQUNsQ2IsRUFBUTBJLEVBQU83SCxFQUlmLElBQUl5SixHQUFXak0s
S0FBSzRCLElBQUlELEVBQ3hCLElBQUlzSyxFQUFVLENBQ1osR0FBSXJCLEdBQVNqSixJQUFVc0ss
RUFBVSxDQUMvQixHQUFJcEssR0FBUTdCLEtBQUt3QixTQUFTRyxHQUFTQSxFQUFNSyxXQUFhTCxD
QUN0RCxJQUFJb0MsRUFBUXFDLE1BQU92RSxFQUFRb0ssRUFBUzdGLE1BQU12RSxFQUFPa0MsRUFD
akRrSSxHQUFTMUYsSUFBSTFFLEVBQU9rQyxFQUNwQjRILEdBQVExSCxLQUFLZ0ksRUFDYixJQUFJ
RixJQUFhRCxFQUFNQSxFQUFPRyxFQUFTakUsV0FBV2dFLEdBRXBELElBQUtILEVBQVNJLEVBQVNo
RyxLQUFNLENBQzNCNEYsRUFBU0ksRUFBU2hHLEtBQU8sSUFDekJNLEdBQUl0QyxLQUFLZ0ksR0FF
WDVCLEVBQU83SCxHQUFLeUosTUFHUCxJQUFJdkIsRUFBSyxDQUNkL0ksRUFBUTBJLEVBQU83SCxH
QUFLeEMsS0FBS2tNLGNBQWN2SyxFQUFPb0MsRUFDOUMsSUFBSXBDLEVBQU8sQ0FDVCtKLEVBQU16
SCxLQUFLdEMsRUFDWDNCLE1BQUttTSxjQUFjeEssRUFBT29DLEVBQzFCOEgsR0FBU2xLLEVBQU1z
RSxLQUFPLElBQ3RCTSxHQUFJdEMsS0FBS3RDLEtBTWYsR0FBSWdKLEVBQVEsQ0FDVixJQUFLbkks
RUFBSSxFQUFHQSxFQUFJeEMsS0FBS0ksT0FBUW9DLElBQUssQ0FDaENiLEVBQVEzQixLQUFLcUss
T0FBTzdILEVBQ3BCLEtBQUtxSixFQUFTbEssRUFBTXNFLEtBQU0yRixFQUFTM0gsS0FBS3RDLEdB
RTFDLEdBQUlpSyxFQUFTeEwsT0FBUUosS0FBS3VMLGNBQWNLLEVBQVU3SCxHQUlwRCxHQUFJcUks
R0FBZSxLQUNuQixJQUFJNUMsSUFBV3VDLEdBQVlyQixHQUFPQyxDQUNsQyxJQUFJcEUsRUFBSW5H
LFFBQVVvSixFQUFTLENBQ3pCNEMsRUFBZXBNLEtBQUtJLFNBQVdtRyxFQUFJbkcsUUFBVW5CLEVB
QUVvTixLQUFLck0sS0FBS3FLLE9BQVEsU0FBU2lDLEVBQUdDLEdBQzNFLE1BQU9ELEtBQU0vRixF
QUFJZ0csSUFFbkJ2TSxNQUFLcUssT0FBT2pLLE9BQVMsQ0FDckIwSyxHQUFPOUssS0FBS3FLLE9B
QVE5RCxFQUFLLEVBQ3pCdkcsTUFBS0ksT0FBU0osS0FBS3FLLE9BQU9qSyxXQUNyQixJQUFJc0ws
RUFBTXRMLE9BQVEsQ0FDdkIsR0FBSTJMLEVBQVVELEVBQU8sSUFDckJoQixHQUFPOUssS0FBS3FL
LE9BQVFxQixFQUFPVCxHQUFNLEtBQU9qTCxLQUFLSSxPQUFTNkssRUFDdERqTCxNQUFLSSxPQUFT
SixLQUFLcUssT0FBT2pLLE9BSTVCLEdBQUkwTCxFQUFNOUwsS0FBSzhMLE1BQU14RSxPQUFRLE1B
RzdCLEtBQUt2RCxFQUFRdUQsT0FBUSxDQUNuQixJQUFLOUUsRUFBSSxFQUFHQSxFQUFJa0osRUFB
TXRMLE9BQVFvQyxJQUFLLENBQ2pDLEdBQUl5SSxHQUFNLEtBQU1sSCxFQUFRd0ksTUFBUXRCLEVB
QUt6SSxDQUNyQ2IsR0FBUStKLEVBQU1sSixFQUNkYixHQUFNcUQsUUFBUSxNQUFPckQsRUFBTzNC
LEtBQU0rRCxHQUVwQyxHQUFJK0gsR0FBUU0sRUFBY3BNLEtBQUtnRixRQUFRLE9BQVFoRixLQUFN
K0QsRUFDckQsSUFBSTJILEVBQU10TCxRQUFVd0wsRUFBU3hMLFFBQVV1TCxFQUFRdkwsT0FBUSxD
QUNyRDJELEVBQVF3RCxTQUNOaUUsTUFBT0UsRUFDUEosUUFBU00sRUFDVEgsT0FBUUUsRUFFVjNM
LE1BQUtnRixRQUFRLFNBQVVoRixLQUFNK0QsSUFLakMsTUFBT3FILEdBQVdmLEVBQU8sR0FBS0Es
R0FPaENHLE1BQU8sU0FBU0gsRUFBUXRHLEdBQ3RCQSxFQUFVQSxFQUFVOUUsRUFBRTRILE1BQU05
QyxLQUM1QixLQUFLLEdBQUl2QixHQUFJLEVBQUdBLEVBQUl4QyxLQUFLcUssT0FBT2pLLE9BQVFv
QyxJQUFLLENBQzNDeEMsS0FBS3dNLGlCQUFpQnhNLEtBQUtxSyxPQUFPN0gsR0FBSXVCLEdBRXhD
QSxFQUFRMEksZUFBaUJ6TSxLQUFLcUssTUFDOUJySyxNQUFLdUssUUFDTEYsR0FBU3JLLEtBQUsw
SyxJQUFJTCxFQUFRcEwsRUFBRThHLFFBQVF1QixPQUFRLE1BQU92RCxHQUNuRCxLQUFLQSxFQUFR
dUQsT0FBUXRILEtBQUtnRixRQUFRLFFBQVNoRixLQUFNK0QsRUFDakQsT0FBT3NHLElBSVRwRyxL
QUFNLFNBQVN0QyxFQUFPb0MsR0FDcEIsTUFBTy9ELE1BQUswSyxJQUFJL0ksRUFBTzFDLEVBQUU4
RyxRQUFRa0YsR0FBSWpMLEtBQUtJLFFBQVMyRCxLQUlyRDJJLElBQUssU0FBUzNJLEdBQ1osR0FB
SXBDLEdBQVEzQixLQUFLaUwsR0FBR2pMLEtBQUtJLE9BQVMsRUFDbEMsT0FBT0osTUFBSzJLLE9B
QU9oSixFQUFPb0MsSUFJNUJoRCxRQUFTLFNBQVNZLEVBQU9vQyxHQUN2QixNQUFPL0QsTUFBSzBL
LElBQUkvSSxFQUFPMUMsRUFBRThHLFFBQVFrRixHQUFJLEdBQUlsSCxLQUkzQzRJLE1BQU8sU0FB
UzVJLEdBQ2QsR0FBSXBDLEdBQVEzQixLQUFLaUwsR0FBRyxFQUNwQixPQUFPakwsTUFBSzJLLE9B
QU9oSixFQUFPb0MsSUFJNUJwRSxNQUFPLFdBQ0wsTUFBT0EsR0FBTXFCLE1BQU1oQixLQUFLcUss
T0FBUXZKLFlBS2xDYyxJQUFLLFNBQVNtQixHQUNaLEdBQUlBLEdBQU8sS0FBTSxXQUFZLEVBQzdC
LE9BQU8vQyxNQUFLNE0sTUFBTTdKLElBQ2hCL0MsS0FBSzRNLE1BQU01TSxLQUFLNk0sUUFBUTlK
LEVBQUlmLFlBQWNlLEtBQzFDQSxFQUFJa0QsS0FBT2pHLEtBQUs0TSxNQUFNN0osRUFBSWtELE1B
STlCZ0IsSUFBSyxTQUFTbEUsR0FDWixNQUFPL0MsTUFBSzRCLElBQUltQixJQUFRLE1BSTFCa0ks
R0FBSSxTQUFTc0IsR0FDWCxHQUFJQSxFQUFRLEVBQUdBLEdBQVN2TSxLQUFLSSxNQUM3QixPQUFP
SixNQUFLcUssT0FBT2tDLElBS3JCTyxNQUFPLFNBQVNqTCxFQUFPa0wsR0FDckIsTUFBTy9NLE1B
QUsrTSxFQUFRLE9BQVMsVUFBVWxMLElBS3pDbUwsVUFBVyxTQUFTbkwsR0FDbEIsTUFBTzdCLE1B
QUs4TSxNQUFNakwsRUFBTyxPQU0zQmlLLEtBQU0sU0FBUy9ILEdBQ2IsR0FBSXVHLEdBQWF0SyxL
QUFLc0ssVUFDdEIsS0FBS0EsRUFBWSxLQUFNLElBQUkyQyxPQUFNLHlDQUNqQ2xKLEtBQVlBLEtB
RVosSUFBSTNELEdBQVNrSyxFQUFXbEssTUFDeEIsSUFBSW5CLEVBQUVxQyxXQUFXZ0osR0FBYUEs
RUFBYXJMLEVBQUUyRixLQUFLMEYsRUFBWXRLLEtBRzlELElBQUlJLElBQVcsR0FBS25CLEVBQUV5
QyxTQUFTNEksR0FBYSxDQUMxQ3RLLEtBQUtxSyxPQUFTckssS0FBS2tOLE9BQU81QyxPQUNyQixD
QUNMdEssS0FBS3FLLE9BQU95QixLQUFLeEIsR0FFbkIsSUFBS3ZHLEVBQVF1RCxPQUFRdEgsS0FB
S2dGLFFBQVEsT0FBUWhGLEtBQU0rRCxFQUNoRCxPQUFPL0QsT0FJVG1OLE1BQU8sU0FBU3BHLEdB
Q2QsTUFBTy9HLE1BQUs4RSxJQUFJaUMsRUFBTyxLQU16QnlCLE1BQU8sU0FBU3pFLEdBQ2RBLEVB
QVU5RSxFQUFFOEcsUUFBUUssTUFBTyxNQUFPckMsRUFDbEMsSUFBSTBFLEdBQVUxRSxFQUFRMEUs
T0FDdEIsSUFBSXRDLEdBQWFuRyxJQUNqQitELEdBQVEwRSxRQUFVLFNBQVNDLEdBQ3pCLEdBQUly
SSxHQUFTMEQsRUFBUXlHLE1BQVEsUUFBVSxLQUN2Q3JFLEdBQVc5RixHQUFRcUksRUFBTTNFLEVB
Q3pCLElBQUkwRSxFQUFTQSxFQUFRNUgsS0FBS2tELEVBQVF0RCxRQUFTMEYsRUFBWXVDLEVBQU0z
RSxFQUM3RG9DLEdBQVduQixRQUFRLE9BQVFtQixFQUFZdUMsRUFBTTNFLEdBRS9DNkUsR0FBVTVJ
LEtBQU0rRCxFQUNoQixPQUFPL0QsTUFBSzhHLEtBQUssT0FBUTlHLEtBQU0rRCxJQU1qQ3FKLE9B
QVEsU0FBU3pMLEVBQU9vQyxHQUN0QkEsRUFBVUEsRUFBVTlFLEVBQUU0SCxNQUFNOUMsS0FDNUIs
SUFBSWdGLEdBQU9oRixFQUFRZ0YsSUFDbkJwSCxHQUFRM0IsS0FBS2tNLGNBQWN2SyxFQUFPb0Ms
RUFDbEMsS0FBS3BDLEVBQU8sTUFBTyxNQUNuQixLQUFLb0gsRUFBTS9JLEtBQUswSyxJQUFJL0ks
RUFBT29DLEVBQzNCLElBQUlvQyxHQUFhbkcsSUFDakIsSUFBSXlJLEdBQVUxRSxFQUFRMEUsT0FD
dEIxRSxHQUFRMEUsUUFBVSxTQUFTNkQsRUFBRzVELEVBQU0yRSxHQUNsQyxHQUFJdEUsRUFBTTVD
LEVBQVd1RSxJQUFJNEIsRUFBR2UsRUFDNUIsSUFBSTVFLEVBQVNBLEVBQVE1SCxLQUFLd00sRUFB
YTVNLFFBQVM2TCxFQUFHNUQsRUFBTTJFLEdBRTNEMUwsR0FBTWtILEtBQUssS0FBTTlFLEVBQ2pC
LE9BQU9wQyxJQUtUeUUsTUFBTyxTQUFTc0MsRUFBTTNFLEdBQ3BCLE1BQU8yRSxJQUlUN0IsTUFB
TyxXQUNMLE1BQU8sSUFBSTdHLE1BQUswSixZQUFZMUosS0FBS3FLLFFBQy9CMUksTUFBTzNCLEtB
QUsyQixNQUNaMkksV0FBWXRLLEtBQUtzSyxjQUtyQnVDLFFBQVMsU0FBU2hMLEdBQ2hCLE1BQU9B
LEdBQU03QixLQUFLMkIsTUFBTTlCLFVBQVU4RyxhQUFlLE9BS25ENEQsT0FBUSxXQUNOdkssS0FB
S0ksT0FBUyxDQUNkSixNQUFLcUssU0FDTHJLLE1BQUs0TSxVQUtQVixjQUFlLFNBQVNySyxFQUFP
a0MsR0FDN0IsR0FBSS9ELEtBQUt3QixTQUFTSyxHQUFRLENBQ3hCLElBQUtBLEVBQU1zRSxXQUFZ
dEUsRUFBTXNFLFdBQWFuRyxJQUMxQyxPQUFPNkIsR0FFVGtDLEVBQVVBLEVBQVU5RSxFQUFFNEgs
TUFBTTlDLEtBQzVCQSxHQUFRb0MsV0FBYW5HLElBQ3JCLElBQUkyQixHQUFRLEdBQUkzQixNQUFL
MkIsTUFBTUUsRUFBT2tDLEVBQ2xDLEtBQUtwQyxFQUFNK0UsZ0JBQWlCLE1BQU8vRSxFQUNuQzNC
LE1BQUtnRixRQUFRLFVBQVdoRixLQUFNMkIsRUFBTStFLGdCQUFpQjNDLEVBQ3JELE9BQU8sUUFJ
VHdILGNBQWUsU0FBU2xCLEVBQVF0RyxHQUM5QixHQUFJdUgsS0FDSixLQUFLLEdBQUk5SSxHQUFJ
LEVBQUdBLEVBQUk2SCxFQUFPakssT0FBUW9DLElBQUssQ0FDdEMsR0FBSWIsR0FBUTNCLEtBQUs0
QixJQUFJeUksRUFBTzdILEdBQzVCLEtBQUtiLEVBQU8sUUFFWixJQUFJNEssR0FBUXZNLEtBQUtz
TixRQUFRM0wsRUFDekIzQixNQUFLcUssT0FBT1MsT0FBT3lCLEVBQU8sRUFDMUJ2TSxNQUFLSSxl
QUlFSixNQUFLNE0sTUFBTWpMLEVBQU1zRSxJQUN4QixJQUFJM0MsR0FBS3RELEtBQUs2TSxRQUFR
bEwsRUFBTUssV0FDNUIsSUFBSXNCLEdBQU0sV0FBYXRELE1BQUs0TSxNQUFNdEosRUFFbEMsS0FB
S1MsRUFBUXVELE9BQVEsQ0FDbkJ2RCxFQUFRd0ksTUFBUUEsQ0FDaEI1SyxHQUFNcUQsUUFBUSxT
QUFVckQsRUFBTzNCLEtBQU0rRCxHQUd2Q3VILEVBQVFySCxLQUFLdEMsRUFDYjNCLE1BQUt3TSxp
QkFBaUI3SyxFQUFPb0MsR0FFL0IsTUFBT3VILElBS1Q5SixTQUFVLFNBQVNHLEdBQ2pCLE1BQU9B
LGFBQWlCcUUsSUFJMUJtRyxjQUFlLFNBQVN4SyxFQUFPb0MsR0FDN0IvRCxLQUFLNE0sTUFBTWpM
LEVBQU1zRSxLQUFPdEUsQ0FDeEIsSUFBSTJCLEdBQUt0RCxLQUFLNk0sUUFBUWxMLEVBQU1LLFdB
QzVCLElBQUlzQixHQUFNLEtBQU10RCxLQUFLNE0sTUFBTXRKLEdBQU0zQixDQUNqQ0EsR0FBTWtC
LEdBQUcsTUFBTzdDLEtBQUt1TixjQUFldk4sT0FJdEN3TSxpQkFBa0IsU0FBUzdLLEVBQU9vQyxT
QUN6Qi9ELE1BQUs0TSxNQUFNakwsRUFBTXNFLElBQ3hCLElBQUkzQyxHQUFLdEQsS0FBSzZNLFFB
QVFsTCxFQUFNSyxXQUM1QixJQUFJc0IsR0FBTSxXQUFhdEQsTUFBSzRNLE1BQU10SixFQUNsQyxJ
QUFJdEQsT0FBUzJCLEVBQU13RSxpQkFBbUJ4RSxHQUFNd0UsVUFDNUN4RSxHQUFNdUMsSUFBSSxN
QUFPbEUsS0FBS3VOLGNBQWV2TixPQU92Q3VOLGNBQWUsU0FBU0MsRUFBTzdMLEVBQU93RSxFQUFZ
cEMsR0FDaEQsR0FBSXBDLEVBQU8sQ0FDVCxJQUFLNkwsSUFBVSxPQUFTQSxJQUFVLFdBQWFySCxJ
QUFlbkcsS0FBTSxNQUNwRSxJQUFJd04sSUFBVSxVQUFXeE4sS0FBSzJLLE9BQU9oSixFQUFPb0Ms
RUFDNUMsSUFBSXlKLElBQVUsU0FBVSxDQUN0QixHQUFJQyxHQUFTek4sS0FBSzZNLFFBQVFsTCxF
QUFNNEcscUJBQ2hDLElBQUlqRixHQUFLdEQsS0FBSzZNLFFBQVFsTCxFQUFNSyxXQUM1QixJQUFJ
eUwsSUFBV25LLEVBQUksQ0FDakIsR0FBSW1LLEdBQVUsV0FBYXpOLE1BQUs0TSxNQUFNYSxFQUN0
QyxJQUFJbkssR0FBTSxLQUFNdEQsS0FBSzRNLE1BQU10SixHQUFNM0IsSUFJdkMzQixLQUFLZ0Ys
UUFBUWhFLE1BQU1oQixLQUFNYyxhQVE3QixJQUFJNE0sSUFBcUJDLFFBQVMsRUFBR3ZNLEtBQU0s
RUFBRzBELElBQUssRUFBRzhJLFFBQVMsRUFBR0MsT0FBUSxFQUN0RUMsTUFBTyxFQUFHQyxPQUFR
LEVBQUdDLFlBQWEsRUFBR0MsTUFBTyxFQUFHQyxLQUFNLEVBQUdDLE9BQVEsRUFBR0MsT0FBUSxF
QUMzRUMsT0FBUSxFQUFHQyxPQUFRLEVBQUdDLE1BQU8sRUFBR2pKLElBQUssRUFBRytHLEtBQU0s
RUFBR21DLElBQUssRUFBR0MsUUFBUyxFQUFHQyxTQUFVLEVBQy9FQyxTQUFVLEVBQUdDLE9BQVEs
RUFBRzFKLElBQUssRUFBR2dHLElBQUssRUFBRzJELFFBQVMsRUFBR3hHLEtBQU0sRUFBRzBFLE1B
QU8sRUFDcEUrQixLQUFNLEVBQUdDLEtBQU0sRUFBR0MsUUFBUyxFQUFHQyxLQUFNLEVBQUc5RCxL
QUFNLEVBQUcrRCxLQUFNLEVBQUdDLEtBQU0sRUFDL0RDLFFBQVMsRUFBR0MsV0FBWSxFQUFHL0Is
UUFBUyxFQUFHZ0MsUUFBUyxFQUFHQyxZQUFhLEVBQ2hFdEgsUUFBUyxFQUFHa0MsTUFBTyxFQUFH
cUYsT0FBUSxFQUFHQyxVQUFXLEVBQUdDLFFBQVMsRUFBR0MsUUFBUyxFQUNwRXpDLE9BQVEsRUFB
RzBDLFFBQVMsRUFBR0MsVUFBVyxFQUFHQyxjQUFlLEVBR3hEN08sR0FBcUJtSixFQUFZc0QsRUFB
bUIsU0FlcEQsSUFBSXFDLEdBQU8zUSxFQUFTMlEsS0FBTyxTQUFTaE0sR0FDbEMvRCxLQUFLaUcs
SUFBTWhILEVBQUV3RSxTQUFTLE9BQ3RCeEUsR0FBRThHLE9BQU8vRixLQUFNZixFQUFFZ0wsS0FB
S2xHLEVBQVNpTSxHQUMvQmhRLE1BQUtpUSxnQkFDTGpRLE1BQUt5RyxXQUFXekYsTUFBTWhCLEtB
QU1jLFdBSTlCLElBQUlvUCxHQUF3QixnQkFHNUIsSUFBSUYsSUFBZSxRQUFTLGFBQWMsS0FBTSxL
QUFNLGFBQWMsWUFBYSxVQUFXLFNBRzVGL1EsR0FBRThHLE9BQU9nSyxFQUFLbFEsVUFBV29DLEdB
R3ZCa08sUUFBUyxNQUlUalIsRUFBRyxTQUFTa1IsR0FDVixNQUFPcFEsTUFBS3FRLElBQUluQyxL
QUFLa0MsSUFLdkIzSixXQUFZLGFBS1o2SixPQUFRLFdBQ04sTUFBT3RRLE9BS1QySyxPQUFRLFdB
Q04zSyxLQUFLdVEsZ0JBQ0x2USxNQUFLb0UsZUFDTCxPQUFPcEUsT0FNVHVRLGVBQWdCLFdBQ2R2
USxLQUFLcVEsSUFBSTFGLFVBS1g2RixXQUFZLFNBQVNDLEdBQ25CelEsS0FBSzBRLGtCQUNMMVEs
TUFBSzJRLFlBQVlGLEVBQ2pCelEsTUFBSzRRLGdCQUNMLE9BQU81USxPQVFUMlEsWUFBYSxTQUFT
RSxHQUNwQjdRLEtBQUtxUSxJQUFNUSxZQUFjelIsR0FBU0YsRUFBSTJSLEVBQUt6UixFQUFTRixF
QUFFMlIsRUFDdEQ3USxNQUFLNlEsR0FBSzdRLEtBQUtxUSxJQUFJLElBZ0JyQk8sZUFBZ0IsU0FB
U3hPLEdBQ3ZCQSxJQUFXQSxFQUFTbkQsRUFBRXFILE9BQU90RyxLQUFNLFVBQ25DLEtBQUtvQyxF
QUFRLE1BQU9wQyxLQUNwQkEsTUFBSzBRLGtCQUNMLEtBQUssR0FBSXhKLEtBQU85RSxHQUFRLENB
Q3RCLEdBQUkvQixHQUFTK0IsRUFBTzhFLEVBQ3BCLEtBQUtqSSxFQUFFcUMsV0FBV2pCLEdBQVNB
LEVBQVNMLEtBQUtLLEVBQ3pDLEtBQUtBLEVBQVEsUUFDYixJQUFJeVEsR0FBUTVKLEVBQUk0SixN
QUFNWixFQUN0QmxRLE1BQUsrUSxTQUFTRCxFQUFNLEdBQUlBLEVBQU0sR0FBSTdSLEVBQUUyRixL
QUFLdkUsRUFBUUwsT0FFbkQsTUFBT0EsT0FNVCtRLFNBQVUsU0FBU0MsRUFBV1osRUFBVWEsR0FD
dENqUixLQUFLcVEsSUFBSXhOLEdBQUdtTyxFQUFZLGtCQUFvQmhSLEtBQUtpRyxJQUFLbUssRUFB
VWEsRUFDaEUsT0FBT2pSLE9BTVQwUSxpQkFBa0IsV0FDaEIsR0FBSTFRLEtBQUtxUSxJQUFLclEs
S0FBS3FRLElBQUluTSxJQUFJLGtCQUFvQmxFLEtBQUtpRyxJQUNwRCxPQUFPakcsT0FLVGtSLFdB
QVksU0FBU0YsRUFBV1osRUFBVWEsR0FDeENqUixLQUFLcVEsSUFBSW5NLElBQUk4TSxFQUFZLGtC
QUFvQmhSLEtBQUtpRyxJQUFLbUssRUFBVWEsRUFDakUsT0FBT2pSLE9BS1RtUixlQUFnQixTQUFT
aEIsR0FDdkIsTUFBT2lCLFVBQVNDLGNBQWNsQixJQU9oQ0YsZUFBZ0IsV0FDZCxJQUFLalEsS0FB
SzZRLEdBQUksQ0FDWixHQUFJaFAsR0FBUTVDLEVBQUU4RyxVQUFXOUcsRUFBRXFILE9BQU90RyxL
QUFNLGNBQ3hDLElBQUlBLEtBQUtzRCxHQUFJekIsRUFBTXlCLEdBQUtyRSxFQUFFcUgsT0FBT3RH
LEtBQU0sS0FDdkMsSUFBSUEsS0FBS3NSLFVBQVd6UCxFQUFNLFNBQVc1QyxFQUFFcUgsT0FBT3RH
LEtBQU0sWUFDcERBLE1BQUt3USxXQUFXeFEsS0FBS21SLGVBQWVsUyxFQUFFcUgsT0FBT3RHLEtB
QU0sWUFDbkRBLE1BQUt1UixlQUFlMVAsT0FDZixDQUNMN0IsS0FBS3dRLFdBQVd2UixFQUFFcUgs
T0FBT3RHLEtBQU0sU0FNbkN1UixlQUFnQixTQUFTdlAsR0FDdkJoQyxLQUFLcVEsSUFBSXRKLEtB
QUsvRSxLQXVCbEI1QyxHQUFTMEgsS0FBTyxTQUFTekcsRUFBUXNCLEVBQU9vQyxHQUN0QyxHQUFJ
eU4sR0FBT0MsRUFBVXBSLEVBR3JCcEIsR0FBRW9ILFNBQVN0QyxJQUFZQSxPQUNyQjlELFlBQWFi
LEVBQVNhLFlBQ3RCQyxZQUFhZCxFQUFTYyxhQUl4QixJQUFJd1IsSUFBVUYsS0FBTUEsRUFBTUcs
U0FBVSxPQUdwQyxLQUFLNU4sRUFBUXNGLElBQUssQ0FDaEJxSSxFQUFPckksSUFBTXBLLEVBQUVx
SCxPQUFPM0UsRUFBTyxRQUFVNEgsSUFJekMsR0FBSXhGLEVBQVE2TixNQUFRLE1BQVFqUSxJQUFV
dEIsSUFBVyxVQUFZQSxJQUFXLFVBQVlBLElBQVcsU0FBVSxDQUN2R3FSLEVBQU9HLFlBQWMsa0JB
Q3JCSCxHQUFPRSxLQUFPRSxLQUFLQyxVQUFVaE8sRUFBUWxDLE9BQVNGLEVBQU1pRixPQUFPN0Ms
SUFJN0QsR0FBSUEsRUFBUTdELFlBQWEsQ0FDdkJ3UixFQUFPRyxZQUFjLG1DQUNyQkgsR0FBT0Us
S0FBT0YsRUFBT0UsTUFBUWpRLE1BQU8rUCxFQUFPRSxTQUs3QyxHQUFJN04sRUFBUTlELGNBQWdC
dVIsSUFBUyxPQUFTQSxJQUFTLFVBQVlBLElBQVMsU0FBVSxDQUNwRkUsRUFBT0YsS0FBTyxNQUNk
LElBQUl6TixFQUFRN0QsWUFBYXdSLEVBQU9FLEtBQUtJLFFBQVVSLENBQy9DLElBQUlTLEdBQWFs
TyxFQUFRa08sVUFDekJsTyxHQUFRa08sV0FBYSxTQUFTL0ksR0FDNUJBLEVBQUlnSixpQkFBaUIs
eUJBQTBCVixFQUMvQyxJQUFJUyxFQUFZLE1BQU9BLEdBQVdqUixNQUFNaEIsS0FBTWMsWUFLbEQs
R0FBSTRRLEVBQU9GLE9BQVMsUUFBVXpOLEVBQVE3RCxZQUFhLENBQ2pEd1IsRUFBT1MsWUFBYyxN
QUl2QixHQUFJdkksR0FBUTdGLEVBQVE2RixLQUNwQjdGLEdBQVE2RixNQUFRLFNBQVNWLEVBQUtr
SixFQUFZQyxHQUN4Q3RPLEVBQVFxTyxXQUFhQSxDQUNyQnJPLEdBQVFzTyxZQUFjQSxDQUN0QixJ
QUFJekksRUFBT0EsRUFBTS9JLEtBQUtrRCxFQUFRdEQsUUFBU3lJLEVBQUtrSixFQUFZQyxHQUkx
RCxJQUFJbkosR0FBTW5GLEVBQVFtRixJQUFNOUosRUFBU2tULEtBQUtyVCxFQUFFOEcsT0FBTzJM
LEVBQVEzTixHQUN2RHBDLEdBQU1xRCxRQUFRLFVBQVdyRCxFQUFPdUgsRUFBS25GLEVBQ3JDLE9B
QU9tRixHQUlULElBQUl1SSxJQUNGckUsT0FBVSxPQUNWbUYsT0FBVSxNQUNWdEosTUFBUyxRQUNU
dUosU0FBVSxTQUNWQyxLQUFRLE1BS1ZyVCxHQUFTa1QsS0FBTyxXQUNkLE1BQU9sVCxHQUFTRixF
QUFFb1QsS0FBS3RSLE1BQU01QixFQUFTRixFQUFHNEIsV0FRM0MsSUFBSTRSLEdBQVN0VCxFQUFT
c1QsT0FBUyxTQUFTM08sR0FDdENBLElBQVlBLEtBQ1osSUFBSUEsRUFBUTRPLE9BQVEzUyxLQUFL
MlMsT0FBUzVPLEVBQVE0TyxNQUMxQzNTLE1BQUs0UyxhQUNMNVMsTUFBS3lHLFdBQVd6RixNQUFN
aEIsS0FBTWMsV0FLOUIsSUFBSStSLEdBQWdCLFlBQ3BCLElBQUlDLEdBQWdCLGNBQ3BCLElBQUlD
LEdBQWdCLFFBQ3BCLElBQUlDLEdBQWdCLDBCQUdwQi9ULEdBQUU4RyxPQUFPMk0sRUFBTzdTLFVB
QVdvQyxHQUl6QndFLFdBQVksYUFRWndNLE1BQU8sU0FBU0EsRUFBTzVRLEVBQU1DLEdBQzNCLElB
QUtyRCxFQUFFaVUsU0FBU0QsR0FBUUEsRUFBUWpULEtBQUttVCxlQUFlRixFQUNwRCxJQUFJaFUs
RUFBRXFDLFdBQVdlLEdBQU8sQ0FDdEJDLEVBQVdELENBQ1hBLEdBQU8sR0FFVCxJQUFLQyxFQUFV
QSxFQUFXdEMsS0FBS3FDLEVBQy9CLElBQUkrUSxHQUFTcFQsSUFDYlosR0FBU2lVLFFBQVFKLE1B
QU1BLEVBQU8sU0FBU0ssR0FDckMsR0FBSTFTLEdBQU93UyxFQUFPRyxtQkFBbUJOLEVBQU9LLEVB
QzVDLElBQUlGLEVBQU9JLFFBQVFsUixFQUFVMUIsRUFBTXlCLEtBQVUsTUFBTyxDQUNsRCtRLEVB
QU9wTyxRQUFRaEUsTUFBTW9TLEdBQVMsU0FBVy9RLEdBQU1tRCxPQUFPNUUsR0FDdER3UyxHQUFP
cE8sUUFBUSxRQUFTM0MsRUFBTXpCLEVBQzlCeEIsR0FBU2lVLFFBQVFyTyxRQUFRLFFBQVNvTyxF
QUFRL1EsRUFBTXpCLEtBR3BELE9BQU9aLE9BS1R3VCxRQUFTLFNBQVNsUixFQUFVMUIsRUFBTXlC
LEdBQ2hDLEdBQUlDLEVBQVVBLEVBQVN0QixNQUFNaEIsS0FBTVksSUFJckM2UyxTQUFVLFNBQVNI
LEVBQVV2UCxHQUMzQjNFLEVBQVNpVSxRQUFRSSxTQUFTSCxFQUFVdlAsRUFDcEMsT0FBTy9ELE9B
TVQ0UyxZQUFhLFdBQ1gsSUFBSzVTLEtBQUsyUyxPQUFRLE1BQ2xCM1MsTUFBSzJTLE9BQVMxVCxF
QUFFcUgsT0FBT3RHLEtBQU0sU0FDN0IsSUFBSWlULEdBQU9OLEVBQVMxVCxFQUFFeUQsS0FBSzFD
LEtBQUsyUyxPQUNoQyxRQUFRTSxFQUFRTixFQUFPakcsUUFBVSxLQUFNLENBQ3JDMU0sS0FBS2lU
LE1BQU1BLEVBQU9qVCxLQUFLMlMsT0FBT00sTUFNbENFLGVBQWdCLFNBQVNGLEdBQ3ZCQSxFQUFR
QSxFQUFNekosUUFBUXdKLEVBQWMsUUFDdEJ4SixRQUFRcUosRUFBZSxXQUN2QnJKLFFBQVFzSixF
QUFZLFNBQVNoQyxFQUFPNEMsR0FDbkMsTUFBT0EsR0FBVzVDLEVBQVEsYUFFM0J0SCxRQUFRdUos
RUFBWSxXQUNsQyxPQUFPLElBQUlZLFFBQU8sSUFBTVYsRUFBUSx5QkFNbENNLG1CQUFvQixTQUFT
TixFQUFPSyxHQUNsQyxHQUFJNUIsR0FBU3VCLEVBQU1XLEtBQUtOLEdBQVUzVCxNQUFNLEVBQ3hD
LE9BQU9WLEdBQUU2RixJQUFJNE0sRUFBUSxTQUFTbUMsRUFBT3JSLEdBRW5DLEdBQUlBLElBQU1r
UCxFQUFPdFIsT0FBUyxFQUFHLE1BQU95VCxJQUFTLElBQzdDLE9BQU9BLEdBQVFDLG1CQUFtQkQs
R0FBUyxTQWNqRCxJQUFJRSxHQUFVM1UsRUFBUzJVLFFBQVUsV0FDL0IvVCxLQUFLZ0UsV0FDTGhF
LE1BQUtnVSxTQUFXL1UsRUFBRTJGLEtBQUs1RSxLQUFLZ1UsU0FBVWhVLEtBR3RDLFVBQVdpVSxV
QUFXLFlBQWEsQ0FDakNqVSxLQUFLa1UsU0FBV0QsT0FBT0MsUUFDdkJsVSxNQUFLcVQsUUFBVVks
T0FBT1osU0FLMUIsSUFBSWMsR0FBZ0IsY0FHcEIsSUFBSUMsR0FBZSxZQUduQixJQUFJQyxHQUFl
LE1BR25CTixHQUFRTyxRQUFVLEtBR2xCclYsR0FBRThHLE9BQU9nTyxFQUFRbFUsVUFBV29DLEdB
STFCc1MsU0FBVSxHQUdWQyxPQUFRLFdBQ04sR0FBSUMsR0FBT3pVLEtBQUtrVSxTQUFTUSxTQUFT
bEwsUUFBUSxTQUFVLE1BQ3BELE9BQU9pTCxLQUFTelUsS0FBS3BCLE9BQVNvQixLQUFLMlUsYUFJ
ckNDLFVBQVcsV0FDVCxHQUFJSCxHQUFPelUsS0FBSzZVLGVBQWU3VSxLQUFLa1UsU0FBU1EsU0FD
N0MsSUFBSUksR0FBV0wsRUFBSzlVLE1BQU0sRUFBR0ssS0FBS3BCLEtBQUt3QixPQUFTLEdBQUss
R0FDckQsT0FBTzBVLEtBQWE5VSxLQUFLcEIsTUFNM0JpVyxlQUFnQixTQUFTdkIsR0FDdkIsTUFB
T3lCLFdBQVV6QixFQUFTOUosUUFBUSxPQUFRLFdBSzVDbUwsVUFBVyxXQUNULEdBQUk3RCxHQUFR
OVEsS0FBS2tVLFNBQVNjLEtBQUt4TCxRQUFRLE1BQU8sSUFBSXNILE1BQU0sT0FDeEQsT0FBT0Es
R0FBUUEsRUFBTSxHQUFLLElBSzVCbUUsUUFBUyxTQUFTaEIsR0FDaEIsR0FBSW5ELElBQVNtRCxH
QUFValUsTUFBTWtVLFNBQVNjLEtBQUtsRSxNQUFNLFNBQ2pELE9BQU9BLEdBQVFBLEVBQU0sR0FB
SyxJQUk1Qm9FLFFBQVMsV0FDUCxHQUFJVCxHQUFPelUsS0FBSzZVLGVBQ2Q3VSxLQUFLa1UsU0FB
U1EsU0FBVzFVLEtBQUsyVSxhQUM5QmhWLE1BQU1LLEtBQUtwQixLQUFLd0IsT0FBUyxFQUMzQixP
QUFPcVUsR0FBS1UsT0FBTyxLQUFPLElBQU1WLEVBQUs5VSxNQUFNLEdBQUs4VSxHQUlsRFcsWUFB
YSxTQUFTOUIsR0FDcEIsR0FBSUEsR0FBWSxLQUFNLENBQ3BCLEdBQUl0VCxLQUFLcVYsZ0JBQWtC
clYsS0FBS3NWLGlCQUFrQixDQUNoRGhDLEVBQVd0VCxLQUFLa1YsY0FDWCxDQUNMNUIsRUFBV3RU
LEtBQUtpVixXQUdwQixNQUFPM0IsR0FBUzlKLFFBQVEySyxFQUFlLEtBS3pDb0IsTUFBTyxTQUFT
eFIsR0FDZCxHQUFJZ1EsRUFBUU8sUUFBUyxLQUFNLElBQUlySCxPQUFNLDRDQUNyQzhHLEdBQVFP
LFFBQVUsSUFJbEJ0VSxNQUFLK0QsUUFBbUI5RSxFQUFFOEcsUUFBUW5ILEtBQU0sS0FBTW9CLEtB
QUsrRCxRQUFTQSxFQUM1RC9ELE1BQUtwQixLQUFtQm9CLEtBQUsrRCxRQUFRbkYsSUFDckNvQixN
QUFLc1YsaUJBQW1CdFYsS0FBSytELFFBQVF5UixhQUFlLEtBQ3BEeFYsTUFBS3lWLGVBQW1CLGdC
QUFrQnhCLFVBQVc3QyxTQUFTc0UsbUJBQXNCLElBQUt0RSxTQUFTc0UsYUFBZSxFQUNqSDFWLE1B
QUsyVixlQUFtQjNWLEtBQUtzVixrQkFBb0J0VixLQUFLeVYsY0FDdER6VixNQUFLNFYsa0JBQXFC
NVYsS0FBSytELFFBQVE4UixTQUN2QzdWLE1BQUs4VixpQkFBc0I5VixLQUFLcVQsU0FBV3JULEtB
QUtxVCxRQUFRd0MsVUFDeEQ3VixNQUFLcVYsY0FBbUJyVixLQUFLNFYsaUJBQW1CNVYsS0FBSzhW
LGFBQ3JEOVYsTUFBS3NULFNBQW1CdFQsS0FBS29WLGFBRzdCcFYsTUFBS3BCLE1BQVEsSUFBTW9C
LEtBQUtwQixLQUFPLEtBQUs0SyxRQUFRNEssRUFBYyxJQUkxRCxJQUFJcFUsS0FBS3NWLGtCQUFv
QnRWLEtBQUs0VixnQkFBaUIsQ0FJakQsSUFBSzVWLEtBQUs4VixnQkFBa0I5VixLQUFLd1UsU0FB
VSxDQUN6QyxHQUFJTSxHQUFXOVUsS0FBS3BCLEtBQUtlLE1BQU0sR0FBSSxJQUFNLEdBQ3pDSyxN
QUFLa1UsU0FBUzFLLFFBQVFzTCxFQUFXLElBQU05VSxLQUFLa1YsVUFFNUMsT0FBTyxVQUlGLElB
QUlsVixLQUFLOFYsZUFBaUI5VixLQUFLd1UsU0FBVSxDQUM5Q3hVLEtBQUt5VCxTQUFTelQsS0FB
S2lWLFdBQVl6TCxRQUFTLFFBUTVDLElBQUt4SixLQUFLeVYsZ0JBQWtCelYsS0FBS3NWLG1CQUFx
QnRWLEtBQUtxVixjQUFlLENBQ3hFclYsS0FBSytWLE9BQVMzRSxTQUFTQyxjQUFjLFNBQ3JDclIs
TUFBSytWLE9BQU9DLElBQU0sY0FDbEJoVyxNQUFLK1YsT0FBT0UsTUFBTUMsUUFBVSxNQUM1QmxX
LE1BQUsrVixPQUFPSSxVQUFZLENBQ3hCLElBQUlDLEdBQU9oRixTQUFTZ0YsSUFFcEIsSUFBSUMs
R0FBVUQsRUFBS0UsYUFBYXRXLEtBQUsrVixPQUFRSyxFQUFLRyxZQUFZQyxhQUM5REgsR0FBUWpG
LFNBQVNxRixNQUNqQkosR0FBUWpGLFNBQVNzRixPQUNqQkwsR0FBUW5DLFNBQVN5QyxLQUFPLElB
QU0zVyxLQUFLc1QsU0FJckMsR0FBSXNELEdBQW1CM0MsT0FBTzJDLGtCQUFvQixTQUFTNUYsRUFB
V0MsR0FDcEUsTUFBTzRGLGFBQVksS0FBTzdGLEVBQVdDLEdBS3ZDLElBQUlqUixLQUFLcVYsY0FB
ZSxDQUN0QnVCLEVBQWlCLFdBQVk1VyxLQUFLZ1UsU0FBVSxXQUN2QyxJQUFJaFUsS0FBSzJWLGlC
QUFtQjNWLEtBQUsrVixPQUFRLENBQzlDYSxFQUFpQixhQUFjNVcsS0FBS2dVLFNBQVUsV0FDekMs
SUFBSWhVLEtBQUtzVixpQkFBa0IsQ0FDaEN0VixLQUFLOFcsa0JBQW9CQyxZQUFZL1csS0FBS2dV
LFNBQVVoVSxLQUFLdVUsVUFHM0QsSUFBS3ZVLEtBQUsrRCxRQUFRdUQsT0FBUSxNQUFPdEgsTUFB
S2dYLFdBS3hDQyxLQUFNLFdBRUosR0FBSUMsR0FBc0JqRCxPQUFPaUQscUJBQXVCLFNBQVNsRyxF
QUFXQyxHQUMxRSxNQUFPa0csYUFBWSxLQUFPbkcsRUFBV0MsR0FJdkMsSUFBSWpSLEtBQUtxVixj
QUFlLENBQ3RCNkIsRUFBb0IsV0FBWWxYLEtBQUtnVSxTQUFVLFdBQzFDLElBQUloVSxLQUFLMlYs
aUJBQW1CM1YsS0FBSytWLE9BQVEsQ0FDOUNtQixFQUFvQixhQUFjbFgsS0FBS2dVLFNBQVUsT0FJ
bkQsR0FBSWhVLEtBQUsrVixPQUFRLENBQ2YzRSxTQUFTZ0YsS0FBS2dCLFlBQVlwWCxLQUFLK1Ys
T0FDL0IvVixNQUFLK1YsT0FBUyxLQUloQixHQUFJL1YsS0FBSzhXLGtCQUFtQk8sY0FBY3JYLEtB
QUs4VyxrQkFDL0MvQyxHQUFRTyxRQUFVLE9BS3BCckIsTUFBTyxTQUFTQSxFQUFPM1EsR0FDckJ0
QyxLQUFLZ0UsU0FBU2pELFNBQVNrUyxNQUFPQSxFQUFPM1EsU0FBVUEsS0FLakQwUixTQUFVLFNB
QVMxVSxHQUNqQixHQUFJcUksR0FBVTNILEtBQUtvVixhQUluQixJQUFJek4sSUFBWTNILEtBQUtz
VCxVQUFZdFQsS0FBSytWLE9BQVEsQ0FDNUNwTyxFQUFVM0gsS0FBS2lWLFFBQVFqVixLQUFLK1Ys
T0FBT1MsZUFHckMsR0FBSTdPLElBQVkzSCxLQUFLc1QsU0FBVSxNQUFPLE1BQ3RDLElBQUl0VCxL
QUFLK1YsT0FBUS9WLEtBQUt5VCxTQUFTOUwsRUFDL0IzSCxNQUFLZ1gsV0FNUEEsUUFBUyxTQUFT
MUQsR0FFaEIsSUFBS3RULEtBQUs0VSxZQUFhLE1BQU8sTUFDOUJ0QixHQUFXdFQsS0FBS3NULFNB
QVd0VCxLQUFLb1YsWUFBWTlCLEVBQzVDLE9BQU9yVSxHQUFFb04sS0FBS3JNLEtBQUtnRSxTQUFV
LFNBQVNRLEdBQ3BDLEdBQUlBLEVBQVF5TyxNQUFNdFEsS0FBSzJRLEdBQVcsQ0FDaEM5TyxFQUFR
bEMsU0FBU2dSLEVBQ2pCLE9BQU8sVUFZYkcsU0FBVSxTQUFTSCxFQUFVdlAsR0FDM0IsSUFBS2dR
LEVBQVFPLFFBQVMsTUFBTyxNQUM3QixLQUFLdlEsR0FBV0EsSUFBWSxLQUFNQSxHQUFXaUIsVUFB
V2pCLEVBR3hEdVAsR0FBV3RULEtBQUtvVixZQUFZOUIsR0FBWSxHQUd4QyxJQUFJd0IsR0FBVzlV
LEtBQUtwQixJQUNwQixJQUFJMFUsSUFBYSxJQUFNQSxFQUFTNkIsT0FBTyxLQUFPLElBQUssQ0FD
akRMLEVBQVdBLEVBQVNuVixNQUFNLEdBQUksSUFBTSxJQUV0QyxHQUFJMEosR0FBTXlMLEVBQVd4
QixDQUdyQkEsR0FBV3RULEtBQUs2VSxlQUFldkIsRUFBUzlKLFFBQVE2SyxFQUFjLElBRTlELElB
QUlyVSxLQUFLc1QsV0FBYUEsRUFBVSxNQUNoQ3RULE1BQUtzVCxTQUFXQSxDQUdoQixJQUFJdFQs
S0FBS3FWLGNBQWUsQ0FDdEJyVixLQUFLcVQsUUFBUXRQLEVBQVF5RixRQUFVLGVBQWlCLGdCQUFp
QjRILFNBQVNrRyxNQUFPak8sT0FJNUUsSUFBSXJKLEtBQUtzVixpQkFBa0IsQ0FDaEN0VixLQUFL
dVgsWUFBWXZYLEtBQUtrVSxTQUFVWixFQUFVdlAsRUFBUXlGLFFBQ2xELElBQUl4SixLQUFLK1Ys
UUFBVXpDLElBQWF0VCxLQUFLaVYsUUFBUWpWLEtBQUsrVixPQUFPUyxlQUFnQixDQUN2RSxHQUFJ
SCxHQUFVclcsS0FBSytWLE9BQU9TLGFBSzFCLEtBQUt6UyxFQUFReUYsUUFBUyxDQUNwQjZNLEVB
QVFqRixTQUFTcUYsTUFDakJKLEdBQVFqRixTQUFTc0YsUUFHbkIxVyxLQUFLdVgsWUFBWWxCLEVB
QVFuQyxTQUFVWixFQUFVdlAsRUFBUXlGLGNBS2xELENBQ0wsTUFBT3hKLE1BQUtrVSxTQUFTc0Qs
T0FBT25PLEdBRTlCLEdBQUl0RixFQUFRaUIsUUFBUyxNQUFPaEYsTUFBS2dYLFFBQVExRCxJQUsz
Q2lFLFlBQWEsU0FBU3JELEVBQVVaLEVBQVU5SixHQUN4QyxHQUFJQSxFQUFTLENBQ1gsR0FBSXdM
LEdBQU9kLEVBQVNjLEtBQUt4TCxRQUFRLHFCQUFzQixHQUN2RDBLLEdBQVMxSyxRQUFRd0wsRUFB
TyxJQUFNMUIsT0FDekIsQ0FFTFksRUFBU3lDLEtBQU8sSUFBTXJELEtBTzVCbFUsR0FBU2lVLFFB
QVUsR0FBSVUsRUFRdkIsSUFBSWhPLEdBQVMsU0FBUzBSLEVBQVlDLEdBQ2hDLEdBQUlDLEdBQVMz
WCxJQUNiLElBQUk0WCxFQUtKLElBQUlILEdBQWN4WSxFQUFFZ0ksSUFBSXdRLEVBQVksZUFBZ0Is
Q0FDbERHLEVBQVFILEVBQVcvTixnQkFDZCxDQUNMa08sRUFBUSxXQUFZLE1BQU9ELEdBQU8zVyxN
QUFNaEIsS0FBTWMsWUFJaEQ3QixFQUFFOEcsT0FBTzZSLEVBQU9ELEVBQVFELEVBSXhCRSxHQUFN
L1gsVUFBWVosRUFBRW1PLE9BQU91SyxFQUFPOVgsVUFBVzRYLEVBQzdDRyxHQUFNL1gsVUFBVTZK
LFlBQWNrTyxDQUk5QkEsR0FBTUMsVUFBWUYsRUFBTzlYLFNBRXpCLE9BQU8rWCxHQUlUNVIsR0FB
TUQsT0FBU3FFLEVBQVdyRSxPQUFTMk0sRUFBTzNNLE9BQVNnSyxFQUFLaEssT0FBU2dPLEVBQVFo
TyxPQUFTQSxDQUdsRixJQUFJd0QsR0FBVyxXQUNiLEtBQU0sSUFBSTBELE9BQU0sa0RBSWxCLElB
QUlyRSxHQUFZLFNBQVNqSCxFQUFPb0MsR0FDOUIsR0FBSTZGLEdBQVE3RixFQUFRNkYsS0FDcEI3
RixHQUFRNkYsTUFBUSxTQUFTbEIsR0FDdkIsR0FBSWtCLEVBQU9BLEVBQU0vSSxLQUFLa0QsRUFB
UXRELFFBQVNrQixFQUFPK0csRUFBTTNFLEVBQ3BEcEMsR0FBTXFELFFBQVEsUUFBU3JELEVBQU8r
RyxFQUFNM0UsSUFJeEMsT0FBTzNFIiwiZmlsZSI6ImJhY2tib25lLW1pbi5qcyJ9ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9k
ZV9tb2R1bGVzL2JhY2tib25lL2JhY2tib25lLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9k
ZV9tb2R1bGVzL2JhY2tib25lL2JhY2tib25lLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU1Y2NiMjJiZDAwYWYw
M2RkZWVlNDZlOWE4MmU4ZjE5MzI0ZDlmODMKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvYmFja2JvbmUvYmFja2JvbmUuanMKQEAgLTAsMCArMSwx
OTIwIEBACisvLyAgICAgQmFja2JvbmUuanMgMS4zLjMKKworLy8gICAgIChjKSAyMDEwLTIwMTYg
SmVyZW15IEFzaGtlbmFzLCBEb2N1bWVudENsb3VkIGFuZCBJbnZlc3RpZ2F0aXZlIFJlcG9ydGVy
cyAmIEVkaXRvcnMKKy8vICAgICBCYWNrYm9uZSBtYXkgYmUgZnJlZWx5IGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBNSVQgbGljZW5zZS4KKy8vICAgICBGb3IgYWxsIGRldGFpbHMgYW5kIGRvY3VtZW50
YXRpb246CisvLyAgICAgaHR0cDovL2JhY2tib25lanMub3JnCisKKyhmdW5jdGlvbihmYWN0b3J5
KSB7CisKKyAgLy8gRXN0YWJsaXNoIHRoZSByb290IG9iamVjdCwgYHdpbmRvd2AgKGBzZWxmYCkg
aW4gdGhlIGJyb3dzZXIsIG9yIGBnbG9iYWxgIG9uIHRoZSBzZXJ2ZXIuCisgIC8vIFdlIHVzZSBg
c2VsZmAgaW5zdGVhZCBvZiBgd2luZG93YCBmb3IgYFdlYldvcmtlcmAgc3VwcG9ydC4KKyAgdmFy
IHJvb3QgPSAodHlwZW9mIHNlbGYgPT0gJ29iamVjdCcgJiYgc2VsZi5zZWxmID09PSBzZWxmICYm
IHNlbGYpIHx8CisgICAgICAgICAgICAodHlwZW9mIGdsb2JhbCA9PSAnb2JqZWN0JyAmJiBnbG9i
YWwuZ2xvYmFsID09PSBnbG9iYWwgJiYgZ2xvYmFsKTsKKworICAvLyBTZXQgdXAgQmFja2JvbmUg
YXBwcm9wcmlhdGVseSBmb3IgdGhlIGVudmlyb25tZW50LiBTdGFydCB3aXRoIEFNRC4KKyAgaWYg
KHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCkgeworICAgIGRlZmlu
ZShbJ3VuZGVyc2NvcmUnLCAnanF1ZXJ5JywgJ2V4cG9ydHMnXSwgZnVuY3Rpb24oXywgJCwgZXhw
b3J0cykgeworICAgICAgLy8gRXhwb3J0IGdsb2JhbCBldmVuIGluIEFNRCBjYXNlIGluIGNhc2Ug
dGhpcyBzY3JpcHQgaXMgbG9hZGVkIHdpdGgKKyAgICAgIC8vIG90aGVycyB0aGF0IG1heSBzdGls
bCBleHBlY3QgYSBnbG9iYWwgQmFja2JvbmUuCisgICAgICByb290LkJhY2tib25lID0gZmFjdG9y
eShyb290LCBleHBvcnRzLCBfLCAkKTsKKyAgICB9KTsKKworICAvLyBOZXh0IGZvciBOb2RlLmpz
IG9yIENvbW1vbkpTLiBqUXVlcnkgbWF5IG5vdCBiZSBuZWVkZWQgYXMgYSBtb2R1bGUuCisgIH0g
ZWxzZSBpZiAodHlwZW9mIGV4cG9ydHMgIT09ICd1bmRlZmluZWQnKSB7CisgICAgdmFyIF8gPSBy
ZXF1aXJlKCd1bmRlcnNjb3JlJyksICQ7CisgICAgdHJ5IHsgJCA9IHJlcXVpcmUoJ2pxdWVyeScp
OyB9IGNhdGNoIChlKSB7fQorICAgIGZhY3Rvcnkocm9vdCwgZXhwb3J0cywgXywgJCk7CisKKyAg
Ly8gRmluYWxseSwgYXMgYSBicm93c2VyIGdsb2JhbC4KKyAgfSBlbHNlIHsKKyAgICByb290LkJh
Y2tib25lID0gZmFjdG9yeShyb290LCB7fSwgcm9vdC5fLCAocm9vdC5qUXVlcnkgfHwgcm9vdC5a
ZXB0byB8fCByb290LmVuZGVyIHx8IHJvb3QuJCkpOworICB9CisKK30pKGZ1bmN0aW9uKHJvb3Qs
IEJhY2tib25lLCBfLCAkKSB7CisKKyAgLy8gSW5pdGlhbCBTZXR1cAorICAvLyAtLS0tLS0tLS0t
LS0tCisKKyAgLy8gU2F2ZSB0aGUgcHJldmlvdXMgdmFsdWUgb2YgdGhlIGBCYWNrYm9uZWAgdmFy
aWFibGUsIHNvIHRoYXQgaXQgY2FuIGJlCisgIC8vIHJlc3RvcmVkIGxhdGVyIG9uLCBpZiBgbm9D
b25mbGljdGAgaXMgdXNlZC4KKyAgdmFyIHByZXZpb3VzQmFja2JvbmUgPSByb290LkJhY2tib25l
OworCisgIC8vIENyZWF0ZSBhIGxvY2FsIHJlZmVyZW5jZSB0byBhIGNvbW1vbiBhcnJheSBtZXRo
b2Qgd2UnbGwgd2FudCB0byB1c2UgbGF0ZXIuCisgIHZhciBzbGljZSA9IEFycmF5LnByb3RvdHlw
ZS5zbGljZTsKKworICAvLyBDdXJyZW50IHZlcnNpb24gb2YgdGhlIGxpYnJhcnkuIEtlZXAgaW4g
c3luYyB3aXRoIGBwYWNrYWdlLmpzb25gLgorICBCYWNrYm9uZS5WRVJTSU9OID0gJzEuMy4zJzsK
KworICAvLyBGb3IgQmFja2JvbmUncyBwdXJwb3NlcywgalF1ZXJ5LCBaZXB0bywgRW5kZXIsIG9y
IE15IExpYnJhcnkgKGtpZGRpbmcpIG93bnMKKyAgLy8gdGhlIGAkYCB2YXJpYWJsZS4KKyAgQmFj
a2JvbmUuJCA9ICQ7CisKKyAgLy8gUnVucyBCYWNrYm9uZS5qcyBpbiAqbm9Db25mbGljdCogbW9k
ZSwgcmV0dXJuaW5nIHRoZSBgQmFja2JvbmVgIHZhcmlhYmxlCisgIC8vIHRvIGl0cyBwcmV2aW91
cyBvd25lci4gUmV0dXJucyBhIHJlZmVyZW5jZSB0byB0aGlzIEJhY2tib25lIG9iamVjdC4KKyAg
QmFja2JvbmUubm9Db25mbGljdCA9IGZ1bmN0aW9uKCkgeworICAgIHJvb3QuQmFja2JvbmUgPSBw
cmV2aW91c0JhY2tib25lOworICAgIHJldHVybiB0aGlzOworICB9OworCisgIC8vIFR1cm4gb24g
YGVtdWxhdGVIVFRQYCB0byBzdXBwb3J0IGxlZ2FjeSBIVFRQIHNlcnZlcnMuIFNldHRpbmcgdGhp
cyBvcHRpb24KKyAgLy8gd2lsbCBmYWtlIGAiUEFUQ0giYCwgYCJQVVQiYCBhbmQgYCJERUxFVEUi
YCByZXF1ZXN0cyB2aWEgdGhlIGBfbWV0aG9kYCBwYXJhbWV0ZXIgYW5kCisgIC8vIHNldCBhIGBY
LUh0dHAtTWV0aG9kLU92ZXJyaWRlYCBoZWFkZXIuCisgIEJhY2tib25lLmVtdWxhdGVIVFRQID0g
ZmFsc2U7CisKKyAgLy8gVHVybiBvbiBgZW11bGF0ZUpTT05gIHRvIHN1cHBvcnQgbGVnYWN5IHNl
cnZlcnMgdGhhdCBjYW4ndCBkZWFsIHdpdGggZGlyZWN0CisgIC8vIGBhcHBsaWNhdGlvbi9qc29u
YCByZXF1ZXN0cyAuLi4gdGhpcyB3aWxsIGVuY29kZSB0aGUgYm9keSBhcworICAvLyBgYXBwbGlj
YXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkYCBpbnN0ZWFkIGFuZCB3aWxsIHNlbmQgdGhlIG1v
ZGVsIGluIGEKKyAgLy8gZm9ybSBwYXJhbSBuYW1lZCBgbW9kZWxgLgorICBCYWNrYm9uZS5lbXVs
YXRlSlNPTiA9IGZhbHNlOworCisgIC8vIFByb3h5IEJhY2tib25lIGNsYXNzIG1ldGhvZHMgdG8g
VW5kZXJzY29yZSBmdW5jdGlvbnMsIHdyYXBwaW5nIHRoZSBtb2RlbCdzCisgIC8vIGBhdHRyaWJ1
dGVzYCBvYmplY3Qgb3IgY29sbGVjdGlvbidzIGBtb2RlbHNgIGFycmF5IGJlaGluZCB0aGUgc2Nl
bmVzLgorICAvLworICAvLyBjb2xsZWN0aW9uLmZpbHRlcihmdW5jdGlvbihtb2RlbCkgeyByZXR1
cm4gbW9kZWwuZ2V0KCdhZ2UnKSA+IDEwIH0pOworICAvLyBjb2xsZWN0aW9uLmVhY2godGhpcy5h
ZGRWaWV3KTsKKyAgLy8KKyAgLy8gYEZ1bmN0aW9uI2FwcGx5YCBjYW4gYmUgc2xvdyBzbyB3ZSB1
c2UgdGhlIG1ldGhvZCdzIGFyZyBjb3VudCwgaWYgd2Uga25vdyBpdC4KKyAgdmFyIGFkZE1ldGhv
ZCA9IGZ1bmN0aW9uKGxlbmd0aCwgbWV0aG9kLCBhdHRyaWJ1dGUpIHsKKyAgICBzd2l0Y2ggKGxl
bmd0aCkgeworICAgICAgY2FzZSAxOiByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVy
biBfW21ldGhvZF0odGhpc1thdHRyaWJ1dGVdKTsKKyAgICAgIH07CisgICAgICBjYXNlIDI6IHJl
dHVybiBmdW5jdGlvbih2YWx1ZSkgeworICAgICAgICByZXR1cm4gX1ttZXRob2RdKHRoaXNbYXR0
cmlidXRlXSwgdmFsdWUpOworICAgICAgfTsKKyAgICAgIGNhc2UgMzogcmV0dXJuIGZ1bmN0aW9u
KGl0ZXJhdGVlLCBjb250ZXh0KSB7CisgICAgICAgIHJldHVybiBfW21ldGhvZF0odGhpc1thdHRy
aWJ1dGVdLCBjYihpdGVyYXRlZSwgdGhpcyksIGNvbnRleHQpOworICAgICAgfTsKKyAgICAgIGNh
c2UgNDogcmV0dXJuIGZ1bmN0aW9uKGl0ZXJhdGVlLCBkZWZhdWx0VmFsLCBjb250ZXh0KSB7Cisg
ICAgICAgIHJldHVybiBfW21ldGhvZF0odGhpc1thdHRyaWJ1dGVdLCBjYihpdGVyYXRlZSwgdGhp
cyksIGRlZmF1bHRWYWwsIGNvbnRleHQpOworICAgICAgfTsKKyAgICAgIGRlZmF1bHQ6IHJldHVy
biBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIGFyZ3MgPSBzbGljZS5jYWxsKGFyZ3VtZW50cyk7
CisgICAgICAgIGFyZ3MudW5zaGlmdCh0aGlzW2F0dHJpYnV0ZV0pOworICAgICAgICByZXR1cm4g
X1ttZXRob2RdLmFwcGx5KF8sIGFyZ3MpOworICAgICAgfTsKKyAgICB9CisgIH07CisgIHZhciBh
ZGRVbmRlcnNjb3JlTWV0aG9kcyA9IGZ1bmN0aW9uKENsYXNzLCBtZXRob2RzLCBhdHRyaWJ1dGUp
IHsKKyAgICBfLmVhY2gobWV0aG9kcywgZnVuY3Rpb24obGVuZ3RoLCBtZXRob2QpIHsKKyAgICAg
IGlmIChfW21ldGhvZF0pIENsYXNzLnByb3RvdHlwZVttZXRob2RdID0gYWRkTWV0aG9kKGxlbmd0
aCwgbWV0aG9kLCBhdHRyaWJ1dGUpOworICAgIH0pOworICB9OworCisgIC8vIFN1cHBvcnQgYGNv
bGxlY3Rpb24uc29ydEJ5KCdhdHRyJylgIGFuZCBgY29sbGVjdGlvbi5maW5kV2hlcmUoe2lkOiAx
fSlgLgorICB2YXIgY2IgPSBmdW5jdGlvbihpdGVyYXRlZSwgaW5zdGFuY2UpIHsKKyAgICBpZiAo
Xy5pc0Z1bmN0aW9uKGl0ZXJhdGVlKSkgcmV0dXJuIGl0ZXJhdGVlOworICAgIGlmIChfLmlzT2Jq
ZWN0KGl0ZXJhdGVlKSAmJiAhaW5zdGFuY2UuX2lzTW9kZWwoaXRlcmF0ZWUpKSByZXR1cm4gbW9k
ZWxNYXRjaGVyKGl0ZXJhdGVlKTsKKyAgICBpZiAoXy5pc1N0cmluZyhpdGVyYXRlZSkpIHJldHVy
biBmdW5jdGlvbihtb2RlbCkgeyByZXR1cm4gbW9kZWwuZ2V0KGl0ZXJhdGVlKTsgfTsKKyAgICBy
ZXR1cm4gaXRlcmF0ZWU7CisgIH07CisgIHZhciBtb2RlbE1hdGNoZXIgPSBmdW5jdGlvbihhdHRy
cykgeworICAgIHZhciBtYXRjaGVyID0gXy5tYXRjaGVzKGF0dHJzKTsKKyAgICByZXR1cm4gZnVu
Y3Rpb24obW9kZWwpIHsKKyAgICAgIHJldHVybiBtYXRjaGVyKG1vZGVsLmF0dHJpYnV0ZXMpOwor
ICAgIH07CisgIH07CisKKyAgLy8gQmFja2JvbmUuRXZlbnRzCisgIC8vIC0tLS0tLS0tLS0tLS0t
LQorCisgIC8vIEEgbW9kdWxlIHRoYXQgY2FuIGJlIG1peGVkIGluIHRvICphbnkgb2JqZWN0KiBp
biBvcmRlciB0byBwcm92aWRlIGl0IHdpdGgKKyAgLy8gYSBjdXN0b20gZXZlbnQgY2hhbm5lbC4g
WW91IG1heSBiaW5kIGEgY2FsbGJhY2sgdG8gYW4gZXZlbnQgd2l0aCBgb25gIG9yCisgIC8vIHJl
bW92ZSB3aXRoIGBvZmZgOyBgdHJpZ2dlcmAtaW5nIGFuIGV2ZW50IGZpcmVzIGFsbCBjYWxsYmFj
a3MgaW4KKyAgLy8gc3VjY2Vzc2lvbi4KKyAgLy8KKyAgLy8gICAgIHZhciBvYmplY3QgPSB7fTsK
KyAgLy8gICAgIF8uZXh0ZW5kKG9iamVjdCwgQmFja2JvbmUuRXZlbnRzKTsKKyAgLy8gICAgIG9i
amVjdC5vbignZXhwYW5kJywgZnVuY3Rpb24oKXsgYWxlcnQoJ2V4cGFuZGVkJyk7IH0pOworICAv
LyAgICAgb2JqZWN0LnRyaWdnZXIoJ2V4cGFuZCcpOworICAvLworICB2YXIgRXZlbnRzID0gQmFj
a2JvbmUuRXZlbnRzID0ge307CisKKyAgLy8gUmVndWxhciBleHByZXNzaW9uIHVzZWQgdG8gc3Bs
aXQgZXZlbnQgc3RyaW5ncy4KKyAgdmFyIGV2ZW50U3BsaXR0ZXIgPSAvXHMrLzsKKworICAvLyBJ
dGVyYXRlcyBvdmVyIHRoZSBzdGFuZGFyZCBgZXZlbnQsIGNhbGxiYWNrYCAoYXMgd2VsbCBhcyB0
aGUgZmFuY3kgbXVsdGlwbGUKKyAgLy8gc3BhY2Utc2VwYXJhdGVkIGV2ZW50cyBgImNoYW5nZSBi
bHVyIiwgY2FsbGJhY2tgIGFuZCBqUXVlcnktc3R5bGUgZXZlbnQKKyAgLy8gbWFwcyBge2V2ZW50
OiBjYWxsYmFja31gKS4KKyAgdmFyIGV2ZW50c0FwaSA9IGZ1bmN0aW9uKGl0ZXJhdGVlLCBldmVu
dHMsIG5hbWUsIGNhbGxiYWNrLCBvcHRzKSB7CisgICAgdmFyIGkgPSAwLCBuYW1lczsKKyAgICBp
ZiAobmFtZSAmJiB0eXBlb2YgbmFtZSA9PT0gJ29iamVjdCcpIHsKKyAgICAgIC8vIEhhbmRsZSBl
dmVudCBtYXBzLgorICAgICAgaWYgKGNhbGxiYWNrICE9PSB2b2lkIDAgJiYgJ2NvbnRleHQnIGlu
IG9wdHMgJiYgb3B0cy5jb250ZXh0ID09PSB2b2lkIDApIG9wdHMuY29udGV4dCA9IGNhbGxiYWNr
OworICAgICAgZm9yIChuYW1lcyA9IF8ua2V5cyhuYW1lKTsgaSA8IG5hbWVzLmxlbmd0aCA7IGkr
KykgeworICAgICAgICBldmVudHMgPSBldmVudHNBcGkoaXRlcmF0ZWUsIGV2ZW50cywgbmFtZXNb
aV0sIG5hbWVbbmFtZXNbaV1dLCBvcHRzKTsKKyAgICAgIH0KKyAgICB9IGVsc2UgaWYgKG5hbWUg
JiYgZXZlbnRTcGxpdHRlci50ZXN0KG5hbWUpKSB7CisgICAgICAvLyBIYW5kbGUgc3BhY2Utc2Vw
YXJhdGVkIGV2ZW50IG5hbWVzIGJ5IGRlbGVnYXRpbmcgdGhlbSBpbmRpdmlkdWFsbHkuCisgICAg
ICBmb3IgKG5hbWVzID0gbmFtZS5zcGxpdChldmVudFNwbGl0dGVyKTsgaSA8IG5hbWVzLmxlbmd0
aDsgaSsrKSB7CisgICAgICAgIGV2ZW50cyA9IGl0ZXJhdGVlKGV2ZW50cywgbmFtZXNbaV0sIGNh
bGxiYWNrLCBvcHRzKTsKKyAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgLy8gRmluYWxseSwg
c3RhbmRhcmQgZXZlbnRzLgorICAgICAgZXZlbnRzID0gaXRlcmF0ZWUoZXZlbnRzLCBuYW1lLCBj
YWxsYmFjaywgb3B0cyk7CisgICAgfQorICAgIHJldHVybiBldmVudHM7CisgIH07CisKKyAgLy8g
QmluZCBhbiBldmVudCB0byBhIGBjYWxsYmFja2AgZnVuY3Rpb24uIFBhc3NpbmcgYCJhbGwiYCB3
aWxsIGJpbmQKKyAgLy8gdGhlIGNhbGxiYWNrIHRvIGFsbCBldmVudHMgZmlyZWQuCisgIEV2ZW50
cy5vbiA9IGZ1bmN0aW9uKG5hbWUsIGNhbGxiYWNrLCBjb250ZXh0KSB7CisgICAgcmV0dXJuIGlu
dGVybmFsT24odGhpcywgbmFtZSwgY2FsbGJhY2ssIGNvbnRleHQpOworICB9OworCisgIC8vIEd1
YXJkIHRoZSBgbGlzdGVuaW5nYCBhcmd1bWVudCBmcm9tIHRoZSBwdWJsaWMgQVBJLgorICB2YXIg
aW50ZXJuYWxPbiA9IGZ1bmN0aW9uKG9iaiwgbmFtZSwgY2FsbGJhY2ssIGNvbnRleHQsIGxpc3Rl
bmluZykgeworICAgIG9iai5fZXZlbnRzID0gZXZlbnRzQXBpKG9uQXBpLCBvYmouX2V2ZW50cyB8
fCB7fSwgbmFtZSwgY2FsbGJhY2ssIHsKKyAgICAgIGNvbnRleHQ6IGNvbnRleHQsCisgICAgICBj
dHg6IG9iaiwKKyAgICAgIGxpc3RlbmluZzogbGlzdGVuaW5nCisgICAgfSk7CisKKyAgICBpZiAo
bGlzdGVuaW5nKSB7CisgICAgICB2YXIgbGlzdGVuZXJzID0gb2JqLl9saXN0ZW5lcnMgfHwgKG9i
ai5fbGlzdGVuZXJzID0ge30pOworICAgICAgbGlzdGVuZXJzW2xpc3RlbmluZy5pZF0gPSBsaXN0
ZW5pbmc7CisgICAgfQorCisgICAgcmV0dXJuIG9iajsKKyAgfTsKKworICAvLyBJbnZlcnNpb24t
b2YtY29udHJvbCB2ZXJzaW9ucyBvZiBgb25gLiBUZWxsICp0aGlzKiBvYmplY3QgdG8gbGlzdGVu
IHRvCisgIC8vIGFuIGV2ZW50IGluIGFub3RoZXIgb2JqZWN0Li4uIGtlZXBpbmcgdHJhY2sgb2Yg
d2hhdCBpdCdzIGxpc3RlbmluZyB0bworICAvLyBmb3IgZWFzaWVyIHVuYmluZGluZyBsYXRlci4K
KyAgRXZlbnRzLmxpc3RlblRvID0gZnVuY3Rpb24ob2JqLCBuYW1lLCBjYWxsYmFjaykgeworICAg
IGlmICghb2JqKSByZXR1cm4gdGhpczsKKyAgICB2YXIgaWQgPSBvYmouX2xpc3RlbklkIHx8IChv
YmouX2xpc3RlbklkID0gXy51bmlxdWVJZCgnbCcpKTsKKyAgICB2YXIgbGlzdGVuaW5nVG8gPSB0
aGlzLl9saXN0ZW5pbmdUbyB8fCAodGhpcy5fbGlzdGVuaW5nVG8gPSB7fSk7CisgICAgdmFyIGxp
c3RlbmluZyA9IGxpc3RlbmluZ1RvW2lkXTsKKworICAgIC8vIFRoaXMgb2JqZWN0IGlzIG5vdCBs
aXN0ZW5pbmcgdG8gYW55IG90aGVyIGV2ZW50cyBvbiBgb2JqYCB5ZXQuCisgICAgLy8gU2V0dXAg
dGhlIG5lY2Vzc2FyeSByZWZlcmVuY2VzIHRvIHRyYWNrIHRoZSBsaXN0ZW5pbmcgY2FsbGJhY2tz
LgorICAgIGlmICghbGlzdGVuaW5nKSB7CisgICAgICB2YXIgdGhpc0lkID0gdGhpcy5fbGlzdGVu
SWQgfHwgKHRoaXMuX2xpc3RlbklkID0gXy51bmlxdWVJZCgnbCcpKTsKKyAgICAgIGxpc3Rlbmlu
ZyA9IGxpc3RlbmluZ1RvW2lkXSA9IHtvYmo6IG9iaiwgb2JqSWQ6IGlkLCBpZDogdGhpc0lkLCBs
aXN0ZW5pbmdUbzogbGlzdGVuaW5nVG8sIGNvdW50OiAwfTsKKyAgICB9CisKKyAgICAvLyBCaW5k
IGNhbGxiYWNrcyBvbiBvYmosIGFuZCBrZWVwIHRyYWNrIG9mIHRoZW0gb24gbGlzdGVuaW5nLgor
ICAgIGludGVybmFsT24ob2JqLCBuYW1lLCBjYWxsYmFjaywgdGhpcywgbGlzdGVuaW5nKTsKKyAg
ICByZXR1cm4gdGhpczsKKyAgfTsKKworICAvLyBUaGUgcmVkdWNpbmcgQVBJIHRoYXQgYWRkcyBh
IGNhbGxiYWNrIHRvIHRoZSBgZXZlbnRzYCBvYmplY3QuCisgIHZhciBvbkFwaSA9IGZ1bmN0aW9u
KGV2ZW50cywgbmFtZSwgY2FsbGJhY2ssIG9wdGlvbnMpIHsKKyAgICBpZiAoY2FsbGJhY2spIHsK
KyAgICAgIHZhciBoYW5kbGVycyA9IGV2ZW50c1tuYW1lXSB8fCAoZXZlbnRzW25hbWVdID0gW10p
OworICAgICAgdmFyIGNvbnRleHQgPSBvcHRpb25zLmNvbnRleHQsIGN0eCA9IG9wdGlvbnMuY3R4
LCBsaXN0ZW5pbmcgPSBvcHRpb25zLmxpc3RlbmluZzsKKyAgICAgIGlmIChsaXN0ZW5pbmcpIGxp
c3RlbmluZy5jb3VudCsrOworCisgICAgICBoYW5kbGVycy5wdXNoKHtjYWxsYmFjazogY2FsbGJh
Y2ssIGNvbnRleHQ6IGNvbnRleHQsIGN0eDogY29udGV4dCB8fCBjdHgsIGxpc3RlbmluZzogbGlz
dGVuaW5nfSk7CisgICAgfQorICAgIHJldHVybiBldmVudHM7CisgIH07CisKKyAgLy8gUmVtb3Zl
IG9uZSBvciBtYW55IGNhbGxiYWNrcy4gSWYgYGNvbnRleHRgIGlzIG51bGwsIHJlbW92ZXMgYWxs
CisgIC8vIGNhbGxiYWNrcyB3aXRoIHRoYXQgZnVuY3Rpb24uIElmIGBjYWxsYmFja2AgaXMgbnVs
bCwgcmVtb3ZlcyBhbGwKKyAgLy8gY2FsbGJhY2tzIGZvciB0aGUgZXZlbnQuIElmIGBuYW1lYCBp
cyBudWxsLCByZW1vdmVzIGFsbCBib3VuZAorICAvLyBjYWxsYmFja3MgZm9yIGFsbCBldmVudHMu
CisgIEV2ZW50cy5vZmYgPSBmdW5jdGlvbihuYW1lLCBjYWxsYmFjaywgY29udGV4dCkgeworICAg
IGlmICghdGhpcy5fZXZlbnRzKSByZXR1cm4gdGhpczsKKyAgICB0aGlzLl9ldmVudHMgPSBldmVu
dHNBcGkob2ZmQXBpLCB0aGlzLl9ldmVudHMsIG5hbWUsIGNhbGxiYWNrLCB7CisgICAgICBjb250
ZXh0OiBjb250ZXh0LAorICAgICAgbGlzdGVuZXJzOiB0aGlzLl9saXN0ZW5lcnMKKyAgICB9KTsK
KyAgICByZXR1cm4gdGhpczsKKyAgfTsKKworICAvLyBUZWxsIHRoaXMgb2JqZWN0IHRvIHN0b3Ag
bGlzdGVuaW5nIHRvIGVpdGhlciBzcGVjaWZpYyBldmVudHMgLi4uIG9yCisgIC8vIHRvIGV2ZXJ5
IG9iamVjdCBpdCdzIGN1cnJlbnRseSBsaXN0ZW5pbmcgdG8uCisgIEV2ZW50cy5zdG9wTGlzdGVu
aW5nID0gZnVuY3Rpb24ob2JqLCBuYW1lLCBjYWxsYmFjaykgeworICAgIHZhciBsaXN0ZW5pbmdU
byA9IHRoaXMuX2xpc3RlbmluZ1RvOworICAgIGlmICghbGlzdGVuaW5nVG8pIHJldHVybiB0aGlz
OworCisgICAgdmFyIGlkcyA9IG9iaiA/IFtvYmouX2xpc3RlbklkXSA6IF8ua2V5cyhsaXN0ZW5p
bmdUbyk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGlkcy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIGxpc3RlbmluZyA9IGxpc3RlbmluZ1RvW2lkc1tpXV07CisKKyAgICAgIC8vIElmIGxp
c3RlbmluZyBkb2Vzbid0IGV4aXN0LCB0aGlzIG9iamVjdCBpcyBub3QgY3VycmVudGx5CisgICAg
ICAvLyBsaXN0ZW5pbmcgdG8gb2JqLiBCcmVhayBvdXQgZWFybHkuCisgICAgICBpZiAoIWxpc3Rl
bmluZykgYnJlYWs7CisKKyAgICAgIGxpc3RlbmluZy5vYmoub2ZmKG5hbWUsIGNhbGxiYWNrLCB0
aGlzKTsKKyAgICB9CisKKyAgICByZXR1cm4gdGhpczsKKyAgfTsKKworICAvLyBUaGUgcmVkdWNp
bmcgQVBJIHRoYXQgcmVtb3ZlcyBhIGNhbGxiYWNrIGZyb20gdGhlIGBldmVudHNgIG9iamVjdC4K
KyAgdmFyIG9mZkFwaSA9IGZ1bmN0aW9uKGV2ZW50cywgbmFtZSwgY2FsbGJhY2ssIG9wdGlvbnMp
IHsKKyAgICBpZiAoIWV2ZW50cykgcmV0dXJuOworCisgICAgdmFyIGkgPSAwLCBsaXN0ZW5pbmc7
CisgICAgdmFyIGNvbnRleHQgPSBvcHRpb25zLmNvbnRleHQsIGxpc3RlbmVycyA9IG9wdGlvbnMu
bGlzdGVuZXJzOworCisgICAgLy8gRGVsZXRlIGFsbCBldmVudHMgbGlzdGVuZXJzIGFuZCAiZHJv
cCIgZXZlbnRzLgorICAgIGlmICghbmFtZSAmJiAhY2FsbGJhY2sgJiYgIWNvbnRleHQpIHsKKyAg
ICAgIHZhciBpZHMgPSBfLmtleXMobGlzdGVuZXJzKTsKKyAgICAgIGZvciAoOyBpIDwgaWRzLmxl
bmd0aDsgaSsrKSB7CisgICAgICAgIGxpc3RlbmluZyA9IGxpc3RlbmVyc1tpZHNbaV1dOworICAg
ICAgICBkZWxldGUgbGlzdGVuZXJzW2xpc3RlbmluZy5pZF07CisgICAgICAgIGRlbGV0ZSBsaXN0
ZW5pbmcubGlzdGVuaW5nVG9bbGlzdGVuaW5nLm9iaklkXTsKKyAgICAgIH0KKyAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICB2YXIgbmFtZXMgPSBuYW1lID8gW25hbWVdIDogXy5rZXlzKGV2ZW50
cyk7CisgICAgZm9yICg7IGkgPCBuYW1lcy5sZW5ndGg7IGkrKykgeworICAgICAgbmFtZSA9IG5h
bWVzW2ldOworICAgICAgdmFyIGhhbmRsZXJzID0gZXZlbnRzW25hbWVdOworCisgICAgICAvLyBC
YWlsIG91dCBpZiB0aGVyZSBhcmUgbm8gZXZlbnRzIHN0b3JlZC4KKyAgICAgIGlmICghaGFuZGxl
cnMpIGJyZWFrOworCisgICAgICAvLyBSZXBsYWNlIGV2ZW50cyBpZiB0aGVyZSBhcmUgYW55IHJl
bWFpbmluZy4gIE90aGVyd2lzZSwgY2xlYW4gdXAuCisgICAgICB2YXIgcmVtYWluaW5nID0gW107
CisgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGhhbmRsZXJzLmxlbmd0aDsgaisrKSB7CisgICAg
ICAgIHZhciBoYW5kbGVyID0gaGFuZGxlcnNbal07CisgICAgICAgIGlmICgKKyAgICAgICAgICBj
YWxsYmFjayAmJiBjYWxsYmFjayAhPT0gaGFuZGxlci5jYWxsYmFjayAmJgorICAgICAgICAgICAg
Y2FsbGJhY2sgIT09IGhhbmRsZXIuY2FsbGJhY2suX2NhbGxiYWNrIHx8CisgICAgICAgICAgICAg
IGNvbnRleHQgJiYgY29udGV4dCAhPT0gaGFuZGxlci5jb250ZXh0CisgICAgICAgICkgeworICAg
ICAgICAgIHJlbWFpbmluZy5wdXNoKGhhbmRsZXIpOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgIGxpc3RlbmluZyA9IGhhbmRsZXIubGlzdGVuaW5nOworICAgICAgICAgIGlmIChsaXN0ZW5p
bmcgJiYgLS1saXN0ZW5pbmcuY291bnQgPT09IDApIHsKKyAgICAgICAgICAgIGRlbGV0ZSBsaXN0
ZW5lcnNbbGlzdGVuaW5nLmlkXTsKKyAgICAgICAgICAgIGRlbGV0ZSBsaXN0ZW5pbmcubGlzdGVu
aW5nVG9bbGlzdGVuaW5nLm9iaklkXTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0K
KworICAgICAgLy8gVXBkYXRlIHRhaWwgZXZlbnQgaWYgdGhlIGxpc3QgaGFzIGFueSBldmVudHMu
ICBPdGhlcndpc2UsIGNsZWFuIHVwLgorICAgICAgaWYgKHJlbWFpbmluZy5sZW5ndGgpIHsKKyAg
ICAgICAgZXZlbnRzW25hbWVdID0gcmVtYWluaW5nOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ZGVsZXRlIGV2ZW50c1tuYW1lXTsKKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGV2ZW50czsK
KyAgfTsKKworICAvLyBCaW5kIGFuIGV2ZW50IHRvIG9ubHkgYmUgdHJpZ2dlcmVkIGEgc2luZ2xl
IHRpbWUuIEFmdGVyIHRoZSBmaXJzdCB0aW1lCisgIC8vIHRoZSBjYWxsYmFjayBpcyBpbnZva2Vk
LCBpdHMgbGlzdGVuZXIgd2lsbCBiZSByZW1vdmVkLiBJZiBtdWx0aXBsZSBldmVudHMKKyAgLy8g
YXJlIHBhc3NlZCBpbiB1c2luZyB0aGUgc3BhY2Utc2VwYXJhdGVkIHN5bnRheCwgdGhlIGhhbmRs
ZXIgd2lsbCBmaXJlCisgIC8vIG9uY2UgZm9yIGVhY2ggZXZlbnQsIG5vdCBvbmNlIGZvciBhIGNv
bWJpbmF0aW9uIG9mIGFsbCBldmVudHMuCisgIEV2ZW50cy5vbmNlID0gZnVuY3Rpb24obmFtZSwg
Y2FsbGJhY2ssIGNvbnRleHQpIHsKKyAgICAvLyBNYXAgdGhlIGV2ZW50IGludG8gYSBge2V2ZW50
OiBvbmNlfWAgb2JqZWN0LgorICAgIHZhciBldmVudHMgPSBldmVudHNBcGkob25jZU1hcCwge30s
IG5hbWUsIGNhbGxiYWNrLCBfLmJpbmQodGhpcy5vZmYsIHRoaXMpKTsKKyAgICBpZiAodHlwZW9m
IG5hbWUgPT09ICdzdHJpbmcnICYmIGNvbnRleHQgPT0gbnVsbCkgY2FsbGJhY2sgPSB2b2lkIDA7
CisgICAgcmV0dXJuIHRoaXMub24oZXZlbnRzLCBjYWxsYmFjaywgY29udGV4dCk7CisgIH07CisK
KyAgLy8gSW52ZXJzaW9uLW9mLWNvbnRyb2wgdmVyc2lvbnMgb2YgYG9uY2VgLgorICBFdmVudHMu
bGlzdGVuVG9PbmNlID0gZnVuY3Rpb24ob2JqLCBuYW1lLCBjYWxsYmFjaykgeworICAgIC8vIE1h
cCB0aGUgZXZlbnQgaW50byBhIGB7ZXZlbnQ6IG9uY2V9YCBvYmplY3QuCisgICAgdmFyIGV2ZW50
cyA9IGV2ZW50c0FwaShvbmNlTWFwLCB7fSwgbmFtZSwgY2FsbGJhY2ssIF8uYmluZCh0aGlzLnN0
b3BMaXN0ZW5pbmcsIHRoaXMsIG9iaikpOworICAgIHJldHVybiB0aGlzLmxpc3RlblRvKG9iaiwg
ZXZlbnRzKTsKKyAgfTsKKworICAvLyBSZWR1Y2VzIHRoZSBldmVudCBjYWxsYmFja3MgaW50byBh
IG1hcCBvZiBge2V2ZW50OiBvbmNlV3JhcHBlcn1gLgorICAvLyBgb2ZmZXJgIHVuYmluZHMgdGhl
IGBvbmNlV3JhcHBlcmAgYWZ0ZXIgaXQgaGFzIGJlZW4gY2FsbGVkLgorICB2YXIgb25jZU1hcCA9
IGZ1bmN0aW9uKG1hcCwgbmFtZSwgY2FsbGJhY2ssIG9mZmVyKSB7CisgICAgaWYgKGNhbGxiYWNr
KSB7CisgICAgICB2YXIgb25jZSA9IG1hcFtuYW1lXSA9IF8ub25jZShmdW5jdGlvbigpIHsKKyAg
ICAgICAgb2ZmZXIobmFtZSwgb25jZSk7CisgICAgICAgIGNhbGxiYWNrLmFwcGx5KHRoaXMsIGFy
Z3VtZW50cyk7CisgICAgICB9KTsKKyAgICAgIG9uY2UuX2NhbGxiYWNrID0gY2FsbGJhY2s7Cisg
ICAgfQorICAgIHJldHVybiBtYXA7CisgIH07CisKKyAgLy8gVHJpZ2dlciBvbmUgb3IgbWFueSBl
dmVudHMsIGZpcmluZyBhbGwgYm91bmQgY2FsbGJhY2tzLiBDYWxsYmFja3MgYXJlCisgIC8vIHBh
c3NlZCB0aGUgc2FtZSBhcmd1bWVudHMgYXMgYHRyaWdnZXJgIGlzLCBhcGFydCBmcm9tIHRoZSBl
dmVudCBuYW1lCisgIC8vICh1bmxlc3MgeW91J3JlIGxpc3RlbmluZyBvbiBgImFsbCJgLCB3aGlj
aCB3aWxsIGNhdXNlIHlvdXIgY2FsbGJhY2sgdG8KKyAgLy8gcmVjZWl2ZSB0aGUgdHJ1ZSBuYW1l
IG9mIHRoZSBldmVudCBhcyB0aGUgZmlyc3QgYXJndW1lbnQpLgorICBFdmVudHMudHJpZ2dlciA9
IGZ1bmN0aW9uKG5hbWUpIHsKKyAgICBpZiAoIXRoaXMuX2V2ZW50cykgcmV0dXJuIHRoaXM7CisK
KyAgICB2YXIgbGVuZ3RoID0gTWF0aC5tYXgoMCwgYXJndW1lbnRzLmxlbmd0aCAtIDEpOworICAg
IHZhciBhcmdzID0gQXJyYXkobGVuZ3RoKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0
aDsgaSsrKSBhcmdzW2ldID0gYXJndW1lbnRzW2kgKyAxXTsKKworICAgIGV2ZW50c0FwaSh0cmln
Z2VyQXBpLCB0aGlzLl9ldmVudHMsIG5hbWUsIHZvaWQgMCwgYXJncyk7CisgICAgcmV0dXJuIHRo
aXM7CisgIH07CisKKyAgLy8gSGFuZGxlcyB0cmlnZ2VyaW5nIHRoZSBhcHByb3ByaWF0ZSBldmVu
dCBjYWxsYmFja3MuCisgIHZhciB0cmlnZ2VyQXBpID0gZnVuY3Rpb24ob2JqRXZlbnRzLCBuYW1l
LCBjYWxsYmFjaywgYXJncykgeworICAgIGlmIChvYmpFdmVudHMpIHsKKyAgICAgIHZhciBldmVu
dHMgPSBvYmpFdmVudHNbbmFtZV07CisgICAgICB2YXIgYWxsRXZlbnRzID0gb2JqRXZlbnRzLmFs
bDsKKyAgICAgIGlmIChldmVudHMgJiYgYWxsRXZlbnRzKSBhbGxFdmVudHMgPSBhbGxFdmVudHMu
c2xpY2UoKTsKKyAgICAgIGlmIChldmVudHMpIHRyaWdnZXJFdmVudHMoZXZlbnRzLCBhcmdzKTsK
KyAgICAgIGlmIChhbGxFdmVudHMpIHRyaWdnZXJFdmVudHMoYWxsRXZlbnRzLCBbbmFtZV0uY29u
Y2F0KGFyZ3MpKTsKKyAgICB9CisgICAgcmV0dXJuIG9iakV2ZW50czsKKyAgfTsKKworICAvLyBB
IGRpZmZpY3VsdC10by1iZWxpZXZlLCBidXQgb3B0aW1pemVkIGludGVybmFsIGRpc3BhdGNoIGZ1
bmN0aW9uIGZvcgorICAvLyB0cmlnZ2VyaW5nIGV2ZW50cy4gVHJpZXMgdG8ga2VlcCB0aGUgdXN1
YWwgY2FzZXMgc3BlZWR5IChtb3N0IGludGVybmFsCisgIC8vIEJhY2tib25lIGV2ZW50cyBoYXZl
IDMgYXJndW1lbnRzKS4KKyAgdmFyIHRyaWdnZXJFdmVudHMgPSBmdW5jdGlvbihldmVudHMsIGFy
Z3MpIHsKKyAgICB2YXIgZXYsIGkgPSAtMSwgbCA9IGV2ZW50cy5sZW5ndGgsIGExID0gYXJnc1sw
XSwgYTIgPSBhcmdzWzFdLCBhMyA9IGFyZ3NbMl07CisgICAgc3dpdGNoIChhcmdzLmxlbmd0aCkg
eworICAgICAgY2FzZSAwOiB3aGlsZSAoKytpIDwgbCkgKGV2ID0gZXZlbnRzW2ldKS5jYWxsYmFj
ay5jYWxsKGV2LmN0eCk7IHJldHVybjsKKyAgICAgIGNhc2UgMTogd2hpbGUgKCsraSA8IGwpIChl
diA9IGV2ZW50c1tpXSkuY2FsbGJhY2suY2FsbChldi5jdHgsIGExKTsgcmV0dXJuOworICAgICAg
Y2FzZSAyOiB3aGlsZSAoKytpIDwgbCkgKGV2ID0gZXZlbnRzW2ldKS5jYWxsYmFjay5jYWxsKGV2
LmN0eCwgYTEsIGEyKTsgcmV0dXJuOworICAgICAgY2FzZSAzOiB3aGlsZSAoKytpIDwgbCkgKGV2
ID0gZXZlbnRzW2ldKS5jYWxsYmFjay5jYWxsKGV2LmN0eCwgYTEsIGEyLCBhMyk7IHJldHVybjsK
KyAgICAgIGRlZmF1bHQ6IHdoaWxlICgrK2kgPCBsKSAoZXYgPSBldmVudHNbaV0pLmNhbGxiYWNr
LmFwcGx5KGV2LmN0eCwgYXJncyk7IHJldHVybjsKKyAgICB9CisgIH07CisKKyAgLy8gQWxpYXNl
cyBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuCisgIEV2ZW50cy5iaW5kICAgPSBFdmVudHMu
b247CisgIEV2ZW50cy51bmJpbmQgPSBFdmVudHMub2ZmOworCisgIC8vIEFsbG93IHRoZSBgQmFj
a2JvbmVgIG9iamVjdCB0byBzZXJ2ZSBhcyBhIGdsb2JhbCBldmVudCBidXMsIGZvciBmb2xrcyB3
aG8KKyAgLy8gd2FudCBnbG9iYWwgInB1YnN1YiIgaW4gYSBjb252ZW5pZW50IHBsYWNlLgorICBf
LmV4dGVuZChCYWNrYm9uZSwgRXZlbnRzKTsKKworICAvLyBCYWNrYm9uZS5Nb2RlbAorICAvLyAt
LS0tLS0tLS0tLS0tLQorCisgIC8vIEJhY2tib25lICoqTW9kZWxzKiogYXJlIHRoZSBiYXNpYyBk
YXRhIG9iamVjdCBpbiB0aGUgZnJhbWV3b3JrIC0tCisgIC8vIGZyZXF1ZW50bHkgcmVwcmVzZW50
aW5nIGEgcm93IGluIGEgdGFibGUgaW4gYSBkYXRhYmFzZSBvbiB5b3VyIHNlcnZlci4KKyAgLy8g
QSBkaXNjcmV0ZSBjaHVuayBvZiBkYXRhIGFuZCBhIGJ1bmNoIG9mIHVzZWZ1bCwgcmVsYXRlZCBt
ZXRob2RzIGZvcgorICAvLyBwZXJmb3JtaW5nIGNvbXB1dGF0aW9ucyBhbmQgdHJhbnNmb3JtYXRp
b25zIG9uIHRoYXQgZGF0YS4KKworICAvLyBDcmVhdGUgYSBuZXcgbW9kZWwgd2l0aCB0aGUgc3Bl
Y2lmaWVkIGF0dHJpYnV0ZXMuIEEgY2xpZW50IGlkIChgY2lkYCkKKyAgLy8gaXMgYXV0b21hdGlj
YWxseSBnZW5lcmF0ZWQgYW5kIGFzc2lnbmVkIGZvciB5b3UuCisgIHZhciBNb2RlbCA9IEJhY2ti
b25lLk1vZGVsID0gZnVuY3Rpb24oYXR0cmlidXRlcywgb3B0aW9ucykgeworICAgIHZhciBhdHRy
cyA9IGF0dHJpYnV0ZXMgfHwge307CisgICAgb3B0aW9ucyB8fCAob3B0aW9ucyA9IHt9KTsKKyAg
ICB0aGlzLmNpZCA9IF8udW5pcXVlSWQodGhpcy5jaWRQcmVmaXgpOworICAgIHRoaXMuYXR0cmli
dXRlcyA9IHt9OworICAgIGlmIChvcHRpb25zLmNvbGxlY3Rpb24pIHRoaXMuY29sbGVjdGlvbiA9
IG9wdGlvbnMuY29sbGVjdGlvbjsKKyAgICBpZiAob3B0aW9ucy5wYXJzZSkgYXR0cnMgPSB0aGlz
LnBhcnNlKGF0dHJzLCBvcHRpb25zKSB8fCB7fTsKKyAgICB2YXIgZGVmYXVsdHMgPSBfLnJlc3Vs
dCh0aGlzLCAnZGVmYXVsdHMnKTsKKyAgICBhdHRycyA9IF8uZGVmYXVsdHMoXy5leHRlbmQoe30s
IGRlZmF1bHRzLCBhdHRycyksIGRlZmF1bHRzKTsKKyAgICB0aGlzLnNldChhdHRycywgb3B0aW9u
cyk7CisgICAgdGhpcy5jaGFuZ2VkID0ge307CisgICAgdGhpcy5pbml0aWFsaXplLmFwcGx5KHRo
aXMsIGFyZ3VtZW50cyk7CisgIH07CisKKyAgLy8gQXR0YWNoIGFsbCBpbmhlcml0YWJsZSBtZXRo
b2RzIHRvIHRoZSBNb2RlbCBwcm90b3R5cGUuCisgIF8uZXh0ZW5kKE1vZGVsLnByb3RvdHlwZSwg
RXZlbnRzLCB7CisKKyAgICAvLyBBIGhhc2ggb2YgYXR0cmlidXRlcyB3aG9zZSBjdXJyZW50IGFu
ZCBwcmV2aW91cyB2YWx1ZSBkaWZmZXIuCisgICAgY2hhbmdlZDogbnVsbCwKKworICAgIC8vIFRo
ZSB2YWx1ZSByZXR1cm5lZCBkdXJpbmcgdGhlIGxhc3QgZmFpbGVkIHZhbGlkYXRpb24uCisgICAg
dmFsaWRhdGlvbkVycm9yOiBudWxsLAorCisgICAgLy8gVGhlIGRlZmF1bHQgbmFtZSBmb3IgdGhl
IEpTT04gYGlkYCBhdHRyaWJ1dGUgaXMgYCJpZCJgLiBNb25nb0RCIGFuZAorICAgIC8vIENvdWNo
REIgdXNlcnMgbWF5IHdhbnQgdG8gc2V0IHRoaXMgdG8gYCJfaWQiYC4KKyAgICBpZEF0dHJpYnV0
ZTogJ2lkJywKKworICAgIC8vIFRoZSBwcmVmaXggaXMgdXNlZCB0byBjcmVhdGUgdGhlIGNsaWVu
dCBpZCB3aGljaCBpcyB1c2VkIHRvIGlkZW50aWZ5IG1vZGVscyBsb2NhbGx5LgorICAgIC8vIFlv
dSBtYXkgd2FudCB0byBvdmVycmlkZSB0aGlzIGlmIHlvdSdyZSBleHBlcmllbmNpbmcgbmFtZSBj
bGFzaGVzIHdpdGggbW9kZWwgaWRzLgorICAgIGNpZFByZWZpeDogJ2MnLAorCisgICAgLy8gSW5p
dGlhbGl6ZSBpcyBhbiBlbXB0eSBmdW5jdGlvbiBieSBkZWZhdWx0LiBPdmVycmlkZSBpdCB3aXRo
IHlvdXIgb3duCisgICAgLy8gaW5pdGlhbGl6YXRpb24gbG9naWMuCisgICAgaW5pdGlhbGl6ZTog
ZnVuY3Rpb24oKXt9LAorCisgICAgLy8gUmV0dXJuIGEgY29weSBvZiB0aGUgbW9kZWwncyBgYXR0
cmlidXRlc2Agb2JqZWN0LgorICAgIHRvSlNPTjogZnVuY3Rpb24ob3B0aW9ucykgeworICAgICAg
cmV0dXJuIF8uY2xvbmUodGhpcy5hdHRyaWJ1dGVzKTsKKyAgICB9LAorCisgICAgLy8gUHJveHkg
YEJhY2tib25lLnN5bmNgIGJ5IGRlZmF1bHQgLS0gYnV0IG92ZXJyaWRlIHRoaXMgaWYgeW91IG5l
ZWQKKyAgICAvLyBjdXN0b20gc3luY2luZyBzZW1hbnRpY3MgZm9yICp0aGlzKiBwYXJ0aWN1bGFy
IG1vZGVsLgorICAgIHN5bmM6IGZ1bmN0aW9uKCkgeworICAgICAgcmV0dXJuIEJhY2tib25lLnN5
bmMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKKyAgICB9LAorCisgICAgLy8gR2V0IHRoZSB2YWx1
ZSBvZiBhbiBhdHRyaWJ1dGUuCisgICAgZ2V0OiBmdW5jdGlvbihhdHRyKSB7CisgICAgICByZXR1
cm4gdGhpcy5hdHRyaWJ1dGVzW2F0dHJdOworICAgIH0sCisKKyAgICAvLyBHZXQgdGhlIEhUTUwt
ZXNjYXBlZCB2YWx1ZSBvZiBhbiBhdHRyaWJ1dGUuCisgICAgZXNjYXBlOiBmdW5jdGlvbihhdHRy
KSB7CisgICAgICByZXR1cm4gXy5lc2NhcGUodGhpcy5nZXQoYXR0cikpOworICAgIH0sCisKKyAg
ICAvLyBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgYXR0cmlidXRlIGNvbnRhaW5zIGEgdmFsdWUgdGhh
dCBpcyBub3QgbnVsbAorICAgIC8vIG9yIHVuZGVmaW5lZC4KKyAgICBoYXM6IGZ1bmN0aW9uKGF0
dHIpIHsKKyAgICAgIHJldHVybiB0aGlzLmdldChhdHRyKSAhPSBudWxsOworICAgIH0sCisKKyAg
ICAvLyBTcGVjaWFsLWNhc2VkIHByb3h5IHRvIHVuZGVyc2NvcmUncyBgXy5tYXRjaGVzYCBtZXRo
b2QuCisgICAgbWF0Y2hlczogZnVuY3Rpb24oYXR0cnMpIHsKKyAgICAgIHJldHVybiAhIV8uaXRl
cmF0ZWUoYXR0cnMsIHRoaXMpKHRoaXMuYXR0cmlidXRlcyk7CisgICAgfSwKKworICAgIC8vIFNl
dCBhIGhhc2ggb2YgbW9kZWwgYXR0cmlidXRlcyBvbiB0aGUgb2JqZWN0LCBmaXJpbmcgYCJjaGFu
Z2UiYC4gVGhpcyBpcworICAgIC8vIHRoZSBjb3JlIHByaW1pdGl2ZSBvcGVyYXRpb24gb2YgYSBt
b2RlbCwgdXBkYXRpbmcgdGhlIGRhdGEgYW5kIG5vdGlmeWluZworICAgIC8vIGFueW9uZSB3aG8g
bmVlZHMgdG8ga25vdyBhYm91dCB0aGUgY2hhbmdlIGluIHN0YXRlLiBUaGUgaGVhcnQgb2YgdGhl
IGJlYXN0LgorICAgIHNldDogZnVuY3Rpb24oa2V5LCB2YWwsIG9wdGlvbnMpIHsKKyAgICAgIGlm
IChrZXkgPT0gbnVsbCkgcmV0dXJuIHRoaXM7CisKKyAgICAgIC8vIEhhbmRsZSBib3RoIGAia2V5
IiwgdmFsdWVgIGFuZCBge2tleTogdmFsdWV9YCAtc3R5bGUgYXJndW1lbnRzLgorICAgICAgdmFy
IGF0dHJzOworICAgICAgaWYgKHR5cGVvZiBrZXkgPT09ICdvYmplY3QnKSB7CisgICAgICAgIGF0
dHJzID0ga2V5OworICAgICAgICBvcHRpb25zID0gdmFsOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgKGF0dHJzID0ge30pW2tleV0gPSB2YWw7CisgICAgICB9CisKKyAgICAgIG9wdGlvbnMgfHwg
KG9wdGlvbnMgPSB7fSk7CisKKyAgICAgIC8vIFJ1biB2YWxpZGF0aW9uLgorICAgICAgaWYgKCF0
aGlzLl92YWxpZGF0ZShhdHRycywgb3B0aW9ucykpIHJldHVybiBmYWxzZTsKKworICAgICAgLy8g
RXh0cmFjdCBhdHRyaWJ1dGVzIGFuZCBvcHRpb25zLgorICAgICAgdmFyIHVuc2V0ICAgICAgPSBv
cHRpb25zLnVuc2V0OworICAgICAgdmFyIHNpbGVudCAgICAgPSBvcHRpb25zLnNpbGVudDsKKyAg
ICAgIHZhciBjaGFuZ2VzICAgID0gW107CisgICAgICB2YXIgY2hhbmdpbmcgICA9IHRoaXMuX2No
YW5naW5nOworICAgICAgdGhpcy5fY2hhbmdpbmcgPSB0cnVlOworCisgICAgICBpZiAoIWNoYW5n
aW5nKSB7CisgICAgICAgIHRoaXMuX3ByZXZpb3VzQXR0cmlidXRlcyA9IF8uY2xvbmUodGhpcy5h
dHRyaWJ1dGVzKTsKKyAgICAgICAgdGhpcy5jaGFuZ2VkID0ge307CisgICAgICB9CisKKyAgICAg
IHZhciBjdXJyZW50ID0gdGhpcy5hdHRyaWJ1dGVzOworICAgICAgdmFyIGNoYW5nZWQgPSB0aGlz
LmNoYW5nZWQ7CisgICAgICB2YXIgcHJldiAgICA9IHRoaXMuX3ByZXZpb3VzQXR0cmlidXRlczsK
KworICAgICAgLy8gRm9yIGVhY2ggYHNldGAgYXR0cmlidXRlLCB1cGRhdGUgb3IgZGVsZXRlIHRo
ZSBjdXJyZW50IHZhbHVlLgorICAgICAgZm9yICh2YXIgYXR0ciBpbiBhdHRycykgeworICAgICAg
ICB2YWwgPSBhdHRyc1thdHRyXTsKKyAgICAgICAgaWYgKCFfLmlzRXF1YWwoY3VycmVudFthdHRy
XSwgdmFsKSkgY2hhbmdlcy5wdXNoKGF0dHIpOworICAgICAgICBpZiAoIV8uaXNFcXVhbChwcmV2
W2F0dHJdLCB2YWwpKSB7CisgICAgICAgICAgY2hhbmdlZFthdHRyXSA9IHZhbDsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICBkZWxldGUgY2hhbmdlZFthdHRyXTsKKyAgICAgICAgfQorICAg
ICAgICB1bnNldCA/IGRlbGV0ZSBjdXJyZW50W2F0dHJdIDogY3VycmVudFthdHRyXSA9IHZhbDsK
KyAgICAgIH0KKworICAgICAgLy8gVXBkYXRlIHRoZSBgaWRgLgorICAgICAgaWYgKHRoaXMuaWRB
dHRyaWJ1dGUgaW4gYXR0cnMpIHRoaXMuaWQgPSB0aGlzLmdldCh0aGlzLmlkQXR0cmlidXRlKTsK
KworICAgICAgLy8gVHJpZ2dlciBhbGwgcmVsZXZhbnQgYXR0cmlidXRlIGNoYW5nZXMuCisgICAg
ICBpZiAoIXNpbGVudCkgeworICAgICAgICBpZiAoY2hhbmdlcy5sZW5ndGgpIHRoaXMuX3BlbmRp
bmcgPSBvcHRpb25zOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoYW5nZXMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgICAgICB0aGlzLnRyaWdnZXIoJ2NoYW5nZTonICsgY2hhbmdlc1tpXSwg
dGhpcywgY3VycmVudFtjaGFuZ2VzW2ldXSwgb3B0aW9ucyk7CisgICAgICAgIH0KKyAgICAgIH0K
KworICAgICAgLy8gWW91IG1pZ2h0IGJlIHdvbmRlcmluZyB3aHkgdGhlcmUncyBhIGB3aGlsZWAg
bG9vcCBoZXJlLiBDaGFuZ2VzIGNhbgorICAgICAgLy8gYmUgcmVjdXJzaXZlbHkgbmVzdGVkIHdp
dGhpbiBgImNoYW5nZSJgIGV2ZW50cy4KKyAgICAgIGlmIChjaGFuZ2luZykgcmV0dXJuIHRoaXM7
CisgICAgICBpZiAoIXNpbGVudCkgeworICAgICAgICB3aGlsZSAodGhpcy5fcGVuZGluZykgewor
ICAgICAgICAgIG9wdGlvbnMgPSB0aGlzLl9wZW5kaW5nOworICAgICAgICAgIHRoaXMuX3BlbmRp
bmcgPSBmYWxzZTsKKyAgICAgICAgICB0aGlzLnRyaWdnZXIoJ2NoYW5nZScsIHRoaXMsIG9wdGlv
bnMpOworICAgICAgICB9CisgICAgICB9CisgICAgICB0aGlzLl9wZW5kaW5nID0gZmFsc2U7Cisg
ICAgICB0aGlzLl9jaGFuZ2luZyA9IGZhbHNlOworICAgICAgcmV0dXJuIHRoaXM7CisgICAgfSwK
KworICAgIC8vIFJlbW92ZSBhbiBhdHRyaWJ1dGUgZnJvbSB0aGUgbW9kZWwsIGZpcmluZyBgImNo
YW5nZSJgLiBgdW5zZXRgIGlzIGEgbm9vcAorICAgIC8vIGlmIHRoZSBhdHRyaWJ1dGUgZG9lc24n
dCBleGlzdC4KKyAgICB1bnNldDogZnVuY3Rpb24oYXR0ciwgb3B0aW9ucykgeworICAgICAgcmV0
dXJuIHRoaXMuc2V0KGF0dHIsIHZvaWQgMCwgXy5leHRlbmQoe30sIG9wdGlvbnMsIHt1bnNldDog
dHJ1ZX0pKTsKKyAgICB9LAorCisgICAgLy8gQ2xlYXIgYWxsIGF0dHJpYnV0ZXMgb24gdGhlIG1v
ZGVsLCBmaXJpbmcgYCJjaGFuZ2UiYC4KKyAgICBjbGVhcjogZnVuY3Rpb24ob3B0aW9ucykgewor
ICAgICAgdmFyIGF0dHJzID0ge307CisgICAgICBmb3IgKHZhciBrZXkgaW4gdGhpcy5hdHRyaWJ1
dGVzKSBhdHRyc1trZXldID0gdm9pZCAwOworICAgICAgcmV0dXJuIHRoaXMuc2V0KGF0dHJzLCBf
LmV4dGVuZCh7fSwgb3B0aW9ucywge3Vuc2V0OiB0cnVlfSkpOworICAgIH0sCisKKyAgICAvLyBE
ZXRlcm1pbmUgaWYgdGhlIG1vZGVsIGhhcyBjaGFuZ2VkIHNpbmNlIHRoZSBsYXN0IGAiY2hhbmdl
ImAgZXZlbnQuCisgICAgLy8gSWYgeW91IHNwZWNpZnkgYW4gYXR0cmlidXRlIG5hbWUsIGRldGVy
bWluZSBpZiB0aGF0IGF0dHJpYnV0ZSBoYXMgY2hhbmdlZC4KKyAgICBoYXNDaGFuZ2VkOiBmdW5j
dGlvbihhdHRyKSB7CisgICAgICBpZiAoYXR0ciA9PSBudWxsKSByZXR1cm4gIV8uaXNFbXB0eSh0
aGlzLmNoYW5nZWQpOworICAgICAgcmV0dXJuIF8uaGFzKHRoaXMuY2hhbmdlZCwgYXR0cik7Cisg
ICAgfSwKKworICAgIC8vIFJldHVybiBhbiBvYmplY3QgY29udGFpbmluZyBhbGwgdGhlIGF0dHJp
YnV0ZXMgdGhhdCBoYXZlIGNoYW5nZWQsIG9yCisgICAgLy8gZmFsc2UgaWYgdGhlcmUgYXJlIG5v
IGNoYW5nZWQgYXR0cmlidXRlcy4gVXNlZnVsIGZvciBkZXRlcm1pbmluZyB3aGF0CisgICAgLy8g
cGFydHMgb2YgYSB2aWV3IG5lZWQgdG8gYmUgdXBkYXRlZCBhbmQvb3Igd2hhdCBhdHRyaWJ1dGVz
IG5lZWQgdG8gYmUKKyAgICAvLyBwZXJzaXN0ZWQgdG8gdGhlIHNlcnZlci4gVW5zZXQgYXR0cmli
dXRlcyB3aWxsIGJlIHNldCB0byB1bmRlZmluZWQuCisgICAgLy8gWW91IGNhbiBhbHNvIHBhc3Mg
YW4gYXR0cmlidXRlcyBvYmplY3QgdG8gZGlmZiBhZ2FpbnN0IHRoZSBtb2RlbCwKKyAgICAvLyBk
ZXRlcm1pbmluZyBpZiB0aGVyZSAqd291bGQgYmUqIGEgY2hhbmdlLgorICAgIGNoYW5nZWRBdHRy
aWJ1dGVzOiBmdW5jdGlvbihkaWZmKSB7CisgICAgICBpZiAoIWRpZmYpIHJldHVybiB0aGlzLmhh
c0NoYW5nZWQoKSA/IF8uY2xvbmUodGhpcy5jaGFuZ2VkKSA6IGZhbHNlOworICAgICAgdmFyIG9s
ZCA9IHRoaXMuX2NoYW5naW5nID8gdGhpcy5fcHJldmlvdXNBdHRyaWJ1dGVzIDogdGhpcy5hdHRy
aWJ1dGVzOworICAgICAgdmFyIGNoYW5nZWQgPSB7fTsKKyAgICAgIGZvciAodmFyIGF0dHIgaW4g
ZGlmZikgeworICAgICAgICB2YXIgdmFsID0gZGlmZlthdHRyXTsKKyAgICAgICAgaWYgKF8uaXNF
cXVhbChvbGRbYXR0cl0sIHZhbCkpIGNvbnRpbnVlOworICAgICAgICBjaGFuZ2VkW2F0dHJdID0g
dmFsOworICAgICAgfQorICAgICAgcmV0dXJuIF8uc2l6ZShjaGFuZ2VkKSA/IGNoYW5nZWQgOiBm
YWxzZTsKKyAgICB9LAorCisgICAgLy8gR2V0IHRoZSBwcmV2aW91cyB2YWx1ZSBvZiBhbiBhdHRy
aWJ1dGUsIHJlY29yZGVkIGF0IHRoZSB0aW1lIHRoZSBsYXN0CisgICAgLy8gYCJjaGFuZ2UiYCBl
dmVudCB3YXMgZmlyZWQuCisgICAgcHJldmlvdXM6IGZ1bmN0aW9uKGF0dHIpIHsKKyAgICAgIGlm
IChhdHRyID09IG51bGwgfHwgIXRoaXMuX3ByZXZpb3VzQXR0cmlidXRlcykgcmV0dXJuIG51bGw7
CisgICAgICByZXR1cm4gdGhpcy5fcHJldmlvdXNBdHRyaWJ1dGVzW2F0dHJdOworICAgIH0sCisK
KyAgICAvLyBHZXQgYWxsIG9mIHRoZSBhdHRyaWJ1dGVzIG9mIHRoZSBtb2RlbCBhdCB0aGUgdGlt
ZSBvZiB0aGUgcHJldmlvdXMKKyAgICAvLyBgImNoYW5nZSJgIGV2ZW50LgorICAgIHByZXZpb3Vz
QXR0cmlidXRlczogZnVuY3Rpb24oKSB7CisgICAgICByZXR1cm4gXy5jbG9uZSh0aGlzLl9wcmV2
aW91c0F0dHJpYnV0ZXMpOworICAgIH0sCisKKyAgICAvLyBGZXRjaCB0aGUgbW9kZWwgZnJvbSB0
aGUgc2VydmVyLCBtZXJnaW5nIHRoZSByZXNwb25zZSB3aXRoIHRoZSBtb2RlbCdzCisgICAgLy8g
bG9jYWwgYXR0cmlidXRlcy4gQW55IGNoYW5nZWQgYXR0cmlidXRlcyB3aWxsIHRyaWdnZXIgYSAi
Y2hhbmdlIiBldmVudC4KKyAgICBmZXRjaDogZnVuY3Rpb24ob3B0aW9ucykgeworICAgICAgb3B0
aW9ucyA9IF8uZXh0ZW5kKHtwYXJzZTogdHJ1ZX0sIG9wdGlvbnMpOworICAgICAgdmFyIG1vZGVs
ID0gdGhpczsKKyAgICAgIHZhciBzdWNjZXNzID0gb3B0aW9ucy5zdWNjZXNzOworICAgICAgb3B0
aW9ucy5zdWNjZXNzID0gZnVuY3Rpb24ocmVzcCkgeworICAgICAgICB2YXIgc2VydmVyQXR0cnMg
PSBvcHRpb25zLnBhcnNlID8gbW9kZWwucGFyc2UocmVzcCwgb3B0aW9ucykgOiByZXNwOworICAg
ICAgICBpZiAoIW1vZGVsLnNldChzZXJ2ZXJBdHRycywgb3B0aW9ucykpIHJldHVybiBmYWxzZTsK
KyAgICAgICAgaWYgKHN1Y2Nlc3MpIHN1Y2Nlc3MuY2FsbChvcHRpb25zLmNvbnRleHQsIG1vZGVs
LCByZXNwLCBvcHRpb25zKTsKKyAgICAgICAgbW9kZWwudHJpZ2dlcignc3luYycsIG1vZGVsLCBy
ZXNwLCBvcHRpb25zKTsKKyAgICAgIH07CisgICAgICB3cmFwRXJyb3IodGhpcywgb3B0aW9ucyk7
CisgICAgICByZXR1cm4gdGhpcy5zeW5jKCdyZWFkJywgdGhpcywgb3B0aW9ucyk7CisgICAgfSwK
KworICAgIC8vIFNldCBhIGhhc2ggb2YgbW9kZWwgYXR0cmlidXRlcywgYW5kIHN5bmMgdGhlIG1v
ZGVsIHRvIHRoZSBzZXJ2ZXIuCisgICAgLy8gSWYgdGhlIHNlcnZlciByZXR1cm5zIGFuIGF0dHJp
YnV0ZXMgaGFzaCB0aGF0IGRpZmZlcnMsIHRoZSBtb2RlbCdzCisgICAgLy8gc3RhdGUgd2lsbCBi
ZSBgc2V0YCBhZ2Fpbi4KKyAgICBzYXZlOiBmdW5jdGlvbihrZXksIHZhbCwgb3B0aW9ucykgewor
ICAgICAgLy8gSGFuZGxlIGJvdGggYCJrZXkiLCB2YWx1ZWAgYW5kIGB7a2V5OiB2YWx1ZX1gIC1z
dHlsZSBhcmd1bWVudHMuCisgICAgICB2YXIgYXR0cnM7CisgICAgICBpZiAoa2V5ID09IG51bGwg
fHwgdHlwZW9mIGtleSA9PT0gJ29iamVjdCcpIHsKKyAgICAgICAgYXR0cnMgPSBrZXk7CisgICAg
ICAgIG9wdGlvbnMgPSB2YWw7CisgICAgICB9IGVsc2UgeworICAgICAgICAoYXR0cnMgPSB7fSlb
a2V5XSA9IHZhbDsKKyAgICAgIH0KKworICAgICAgb3B0aW9ucyA9IF8uZXh0ZW5kKHt2YWxpZGF0
ZTogdHJ1ZSwgcGFyc2U6IHRydWV9LCBvcHRpb25zKTsKKyAgICAgIHZhciB3YWl0ID0gb3B0aW9u
cy53YWl0OworCisgICAgICAvLyBJZiB3ZSdyZSBub3Qgd2FpdGluZyBhbmQgYXR0cmlidXRlcyBl
eGlzdCwgc2F2ZSBhY3RzIGFzCisgICAgICAvLyBgc2V0KGF0dHIpLnNhdmUobnVsbCwgb3B0cylg
IHdpdGggdmFsaWRhdGlvbi4gT3RoZXJ3aXNlLCBjaGVjayBpZgorICAgICAgLy8gdGhlIG1vZGVs
IHdpbGwgYmUgdmFsaWQgd2hlbiB0aGUgYXR0cmlidXRlcywgaWYgYW55LCBhcmUgc2V0LgorICAg
ICAgaWYgKGF0dHJzICYmICF3YWl0KSB7CisgICAgICAgIGlmICghdGhpcy5zZXQoYXR0cnMsIG9w
dGlvbnMpKSByZXR1cm4gZmFsc2U7CisgICAgICB9IGVsc2UgaWYgKCF0aGlzLl92YWxpZGF0ZShh
dHRycywgb3B0aW9ucykpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgfQorCisgICAg
ICAvLyBBZnRlciBhIHN1Y2Nlc3NmdWwgc2VydmVyLXNpZGUgc2F2ZSwgdGhlIGNsaWVudCBpcyAo
b3B0aW9uYWxseSkKKyAgICAgIC8vIHVwZGF0ZWQgd2l0aCB0aGUgc2VydmVyLXNpZGUgc3RhdGUu
CisgICAgICB2YXIgbW9kZWwgPSB0aGlzOworICAgICAgdmFyIHN1Y2Nlc3MgPSBvcHRpb25zLnN1
Y2Nlc3M7CisgICAgICB2YXIgYXR0cmlidXRlcyA9IHRoaXMuYXR0cmlidXRlczsKKyAgICAgIG9w
dGlvbnMuc3VjY2VzcyA9IGZ1bmN0aW9uKHJlc3ApIHsKKyAgICAgICAgLy8gRW5zdXJlIGF0dHJp
YnV0ZXMgYXJlIHJlc3RvcmVkIGR1cmluZyBzeW5jaHJvbm91cyBzYXZlcy4KKyAgICAgICAgbW9k
ZWwuYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXM7CisgICAgICAgIHZhciBzZXJ2ZXJBdHRycyA9IG9w
dGlvbnMucGFyc2UgPyBtb2RlbC5wYXJzZShyZXNwLCBvcHRpb25zKSA6IHJlc3A7CisgICAgICAg
IGlmICh3YWl0KSBzZXJ2ZXJBdHRycyA9IF8uZXh0ZW5kKHt9LCBhdHRycywgc2VydmVyQXR0cnMp
OworICAgICAgICBpZiAoc2VydmVyQXR0cnMgJiYgIW1vZGVsLnNldChzZXJ2ZXJBdHRycywgb3B0
aW9ucykpIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKHN1Y2Nlc3MpIHN1Y2Nlc3MuY2FsbChv
cHRpb25zLmNvbnRleHQsIG1vZGVsLCByZXNwLCBvcHRpb25zKTsKKyAgICAgICAgbW9kZWwudHJp
Z2dlcignc3luYycsIG1vZGVsLCByZXNwLCBvcHRpb25zKTsKKyAgICAgIH07CisgICAgICB3cmFw
RXJyb3IodGhpcywgb3B0aW9ucyk7CisKKyAgICAgIC8vIFNldCB0ZW1wb3JhcnkgYXR0cmlidXRl
cyBpZiBge3dhaXQ6IHRydWV9YCB0byBwcm9wZXJseSBmaW5kIG5ldyBpZHMuCisgICAgICBpZiAo
YXR0cnMgJiYgd2FpdCkgdGhpcy5hdHRyaWJ1dGVzID0gXy5leHRlbmQoe30sIGF0dHJpYnV0ZXMs
IGF0dHJzKTsKKworICAgICAgdmFyIG1ldGhvZCA9IHRoaXMuaXNOZXcoKSA/ICdjcmVhdGUnIDog
KG9wdGlvbnMucGF0Y2ggPyAncGF0Y2gnIDogJ3VwZGF0ZScpOworICAgICAgaWYgKG1ldGhvZCA9
PT0gJ3BhdGNoJyAmJiAhb3B0aW9ucy5hdHRycykgb3B0aW9ucy5hdHRycyA9IGF0dHJzOworICAg
ICAgdmFyIHhociA9IHRoaXMuc3luYyhtZXRob2QsIHRoaXMsIG9wdGlvbnMpOworCisgICAgICAv
LyBSZXN0b3JlIGF0dHJpYnV0ZXMuCisgICAgICB0aGlzLmF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVz
OworCisgICAgICByZXR1cm4geGhyOworICAgIH0sCisKKyAgICAvLyBEZXN0cm95IHRoaXMgbW9k
ZWwgb24gdGhlIHNlcnZlciBpZiBpdCB3YXMgYWxyZWFkeSBwZXJzaXN0ZWQuCisgICAgLy8gT3B0
aW1pc3RpY2FsbHkgcmVtb3ZlcyB0aGUgbW9kZWwgZnJvbSBpdHMgY29sbGVjdGlvbiwgaWYgaXQg
aGFzIG9uZS4KKyAgICAvLyBJZiBgd2FpdDogdHJ1ZWAgaXMgcGFzc2VkLCB3YWl0cyBmb3IgdGhl
IHNlcnZlciB0byByZXNwb25kIGJlZm9yZSByZW1vdmFsLgorICAgIGRlc3Ryb3k6IGZ1bmN0aW9u
KG9wdGlvbnMpIHsKKyAgICAgIG9wdGlvbnMgPSBvcHRpb25zID8gXy5jbG9uZShvcHRpb25zKSA6
IHt9OworICAgICAgdmFyIG1vZGVsID0gdGhpczsKKyAgICAgIHZhciBzdWNjZXNzID0gb3B0aW9u
cy5zdWNjZXNzOworICAgICAgdmFyIHdhaXQgPSBvcHRpb25zLndhaXQ7CisKKyAgICAgIHZhciBk
ZXN0cm95ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIG1vZGVsLnN0b3BMaXN0ZW5pbmcoKTsKKyAg
ICAgICAgbW9kZWwudHJpZ2dlcignZGVzdHJveScsIG1vZGVsLCBtb2RlbC5jb2xsZWN0aW9uLCBv
cHRpb25zKTsKKyAgICAgIH07CisKKyAgICAgIG9wdGlvbnMuc3VjY2VzcyA9IGZ1bmN0aW9uKHJl
c3ApIHsKKyAgICAgICAgaWYgKHdhaXQpIGRlc3Ryb3koKTsKKyAgICAgICAgaWYgKHN1Y2Nlc3Mp
IHN1Y2Nlc3MuY2FsbChvcHRpb25zLmNvbnRleHQsIG1vZGVsLCByZXNwLCBvcHRpb25zKTsKKyAg
ICAgICAgaWYgKCFtb2RlbC5pc05ldygpKSBtb2RlbC50cmlnZ2VyKCdzeW5jJywgbW9kZWwsIHJl
c3AsIG9wdGlvbnMpOworICAgICAgfTsKKworICAgICAgdmFyIHhociA9IGZhbHNlOworICAgICAg
aWYgKHRoaXMuaXNOZXcoKSkgeworICAgICAgICBfLmRlZmVyKG9wdGlvbnMuc3VjY2Vzcyk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICB3cmFwRXJyb3IodGhpcywgb3B0aW9ucyk7CisgICAgICAg
IHhociA9IHRoaXMuc3luYygnZGVsZXRlJywgdGhpcywgb3B0aW9ucyk7CisgICAgICB9CisgICAg
ICBpZiAoIXdhaXQpIGRlc3Ryb3koKTsKKyAgICAgIHJldHVybiB4aHI7CisgICAgfSwKKworICAg
IC8vIERlZmF1bHQgVVJMIGZvciB0aGUgbW9kZWwncyByZXByZXNlbnRhdGlvbiBvbiB0aGUgc2Vy
dmVyIC0tIGlmIHlvdSdyZQorICAgIC8vIHVzaW5nIEJhY2tib25lJ3MgcmVzdGZ1bCBtZXRob2Rz
LCBvdmVycmlkZSB0aGlzIHRvIGNoYW5nZSB0aGUgZW5kcG9pbnQKKyAgICAvLyB0aGF0IHdpbGwg
YmUgY2FsbGVkLgorICAgIHVybDogZnVuY3Rpb24oKSB7CisgICAgICB2YXIgYmFzZSA9CisgICAg
ICAgIF8ucmVzdWx0KHRoaXMsICd1cmxSb290JykgfHwKKyAgICAgICAgXy5yZXN1bHQodGhpcy5j
b2xsZWN0aW9uLCAndXJsJykgfHwKKyAgICAgICAgdXJsRXJyb3IoKTsKKyAgICAgIGlmICh0aGlz
LmlzTmV3KCkpIHJldHVybiBiYXNlOworICAgICAgdmFyIGlkID0gdGhpcy5nZXQodGhpcy5pZEF0
dHJpYnV0ZSk7CisgICAgICByZXR1cm4gYmFzZS5yZXBsYWNlKC9bXlwvXSQvLCAnJCYvJykgKyBl
bmNvZGVVUklDb21wb25lbnQoaWQpOworICAgIH0sCisKKyAgICAvLyAqKnBhcnNlKiogY29udmVy
dHMgYSByZXNwb25zZSBpbnRvIHRoZSBoYXNoIG9mIGF0dHJpYnV0ZXMgdG8gYmUgYHNldGAgb24K
KyAgICAvLyB0aGUgbW9kZWwuIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGlzIGp1c3QgdG8g
cGFzcyB0aGUgcmVzcG9uc2UgYWxvbmcuCisgICAgcGFyc2U6IGZ1bmN0aW9uKHJlc3AsIG9wdGlv
bnMpIHsKKyAgICAgIHJldHVybiByZXNwOworICAgIH0sCisKKyAgICAvLyBDcmVhdGUgYSBuZXcg
bW9kZWwgd2l0aCBpZGVudGljYWwgYXR0cmlidXRlcyB0byB0aGlzIG9uZS4KKyAgICBjbG9uZTog
ZnVuY3Rpb24oKSB7CisgICAgICByZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy5hdHRy
aWJ1dGVzKTsKKyAgICB9LAorCisgICAgLy8gQSBtb2RlbCBpcyBuZXcgaWYgaXQgaGFzIG5ldmVy
IGJlZW4gc2F2ZWQgdG8gdGhlIHNlcnZlciwgYW5kIGxhY2tzIGFuIGlkLgorICAgIGlzTmV3OiBm
dW5jdGlvbigpIHsKKyAgICAgIHJldHVybiAhdGhpcy5oYXModGhpcy5pZEF0dHJpYnV0ZSk7Cisg
ICAgfSwKKworICAgIC8vIENoZWNrIGlmIHRoZSBtb2RlbCBpcyBjdXJyZW50bHkgaW4gYSB2YWxp
ZCBzdGF0ZS4KKyAgICBpc1ZhbGlkOiBmdW5jdGlvbihvcHRpb25zKSB7CisgICAgICByZXR1cm4g
dGhpcy5fdmFsaWRhdGUoe30sIF8uZXh0ZW5kKHt9LCBvcHRpb25zLCB7dmFsaWRhdGU6IHRydWV9
KSk7CisgICAgfSwKKworICAgIC8vIFJ1biB2YWxpZGF0aW9uIGFnYWluc3QgdGhlIG5leHQgY29t
cGxldGUgc2V0IG9mIG1vZGVsIGF0dHJpYnV0ZXMsCisgICAgLy8gcmV0dXJuaW5nIGB0cnVlYCBp
ZiBhbGwgaXMgd2VsbC4gT3RoZXJ3aXNlLCBmaXJlIGFuIGAiaW52YWxpZCJgIGV2ZW50LgorICAg
IF92YWxpZGF0ZTogZnVuY3Rpb24oYXR0cnMsIG9wdGlvbnMpIHsKKyAgICAgIGlmICghb3B0aW9u
cy52YWxpZGF0ZSB8fCAhdGhpcy52YWxpZGF0ZSkgcmV0dXJuIHRydWU7CisgICAgICBhdHRycyA9
IF8uZXh0ZW5kKHt9LCB0aGlzLmF0dHJpYnV0ZXMsIGF0dHJzKTsKKyAgICAgIHZhciBlcnJvciA9
IHRoaXMudmFsaWRhdGlvbkVycm9yID0gdGhpcy52YWxpZGF0ZShhdHRycywgb3B0aW9ucykgfHwg
bnVsbDsKKyAgICAgIGlmICghZXJyb3IpIHJldHVybiB0cnVlOworICAgICAgdGhpcy50cmlnZ2Vy
KCdpbnZhbGlkJywgdGhpcywgZXJyb3IsIF8uZXh0ZW5kKG9wdGlvbnMsIHt2YWxpZGF0aW9uRXJy
b3I6IGVycm9yfSkpOworICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICB9KTsKKworICAv
LyBVbmRlcnNjb3JlIG1ldGhvZHMgdGhhdCB3ZSB3YW50IHRvIGltcGxlbWVudCBvbiB0aGUgTW9k
ZWwsIG1hcHBlZCB0byB0aGUKKyAgLy8gbnVtYmVyIG9mIGFyZ3VtZW50cyB0aGV5IHRha2UuCisg
IHZhciBtb2RlbE1ldGhvZHMgPSB7a2V5czogMSwgdmFsdWVzOiAxLCBwYWlyczogMSwgaW52ZXJ0
OiAxLCBwaWNrOiAwLAorICAgICAgb21pdDogMCwgY2hhaW46IDEsIGlzRW1wdHk6IDF9OworCisg
IC8vIE1peCBpbiBlYWNoIFVuZGVyc2NvcmUgbWV0aG9kIGFzIGEgcHJveHkgdG8gYE1vZGVsI2F0
dHJpYnV0ZXNgLgorICBhZGRVbmRlcnNjb3JlTWV0aG9kcyhNb2RlbCwgbW9kZWxNZXRob2RzLCAn
YXR0cmlidXRlcycpOworCisgIC8vIEJhY2tib25lLkNvbGxlY3Rpb24KKyAgLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLQorCisgIC8vIElmIG1vZGVscyB0ZW5kIHRvIHJlcHJlc2VudCBhIHNpbmdsZSBy
b3cgb2YgZGF0YSwgYSBCYWNrYm9uZSBDb2xsZWN0aW9uIGlzCisgIC8vIG1vcmUgYW5hbG9nb3Vz
IHRvIGEgdGFibGUgZnVsbCBvZiBkYXRhIC4uLiBvciBhIHNtYWxsIHNsaWNlIG9yIHBhZ2Ugb2Yg
dGhhdAorICAvLyB0YWJsZSwgb3IgYSBjb2xsZWN0aW9uIG9mIHJvd3MgdGhhdCBiZWxvbmcgdG9n
ZXRoZXIgZm9yIGEgcGFydGljdWxhciByZWFzb24KKyAgLy8gLS0gYWxsIG9mIHRoZSBtZXNzYWdl
cyBpbiB0aGlzIHBhcnRpY3VsYXIgZm9sZGVyLCBhbGwgb2YgdGhlIGRvY3VtZW50cworICAvLyBi
ZWxvbmdpbmcgdG8gdGhpcyBwYXJ0aWN1bGFyIGF1dGhvciwgYW5kIHNvIG9uLiBDb2xsZWN0aW9u
cyBtYWludGFpbgorICAvLyBpbmRleGVzIG9mIHRoZWlyIG1vZGVscywgYm90aCBpbiBvcmRlciwg
YW5kIGZvciBsb29rdXAgYnkgYGlkYC4KKworICAvLyBDcmVhdGUgYSBuZXcgKipDb2xsZWN0aW9u
KiosIHBlcmhhcHMgdG8gY29udGFpbiBhIHNwZWNpZmljIHR5cGUgb2YgYG1vZGVsYC4KKyAgLy8g
SWYgYSBgY29tcGFyYXRvcmAgaXMgc3BlY2lmaWVkLCB0aGUgQ29sbGVjdGlvbiB3aWxsIG1haW50
YWluCisgIC8vIGl0cyBtb2RlbHMgaW4gc29ydCBvcmRlciwgYXMgdGhleSdyZSBhZGRlZCBhbmQg
cmVtb3ZlZC4KKyAgdmFyIENvbGxlY3Rpb24gPSBCYWNrYm9uZS5Db2xsZWN0aW9uID0gZnVuY3Rp
b24obW9kZWxzLCBvcHRpb25zKSB7CisgICAgb3B0aW9ucyB8fCAob3B0aW9ucyA9IHt9KTsKKyAg
ICBpZiAob3B0aW9ucy5tb2RlbCkgdGhpcy5tb2RlbCA9IG9wdGlvbnMubW9kZWw7CisgICAgaWYg
KG9wdGlvbnMuY29tcGFyYXRvciAhPT0gdm9pZCAwKSB0aGlzLmNvbXBhcmF0b3IgPSBvcHRpb25z
LmNvbXBhcmF0b3I7CisgICAgdGhpcy5fcmVzZXQoKTsKKyAgICB0aGlzLmluaXRpYWxpemUuYXBw
bHkodGhpcywgYXJndW1lbnRzKTsKKyAgICBpZiAobW9kZWxzKSB0aGlzLnJlc2V0KG1vZGVscywg
Xy5leHRlbmQoe3NpbGVudDogdHJ1ZX0sIG9wdGlvbnMpKTsKKyAgfTsKKworICAvLyBEZWZhdWx0
IG9wdGlvbnMgZm9yIGBDb2xsZWN0aW9uI3NldGAuCisgIHZhciBzZXRPcHRpb25zID0ge2FkZDog
dHJ1ZSwgcmVtb3ZlOiB0cnVlLCBtZXJnZTogdHJ1ZX07CisgIHZhciBhZGRPcHRpb25zID0ge2Fk
ZDogdHJ1ZSwgcmVtb3ZlOiBmYWxzZX07CisKKyAgLy8gU3BsaWNlcyBgaW5zZXJ0YCBpbnRvIGBh
cnJheWAgYXQgaW5kZXggYGF0YC4KKyAgdmFyIHNwbGljZSA9IGZ1bmN0aW9uKGFycmF5LCBpbnNl
cnQsIGF0KSB7CisgICAgYXQgPSBNYXRoLm1pbihNYXRoLm1heChhdCwgMCksIGFycmF5Lmxlbmd0
aCk7CisgICAgdmFyIHRhaWwgPSBBcnJheShhcnJheS5sZW5ndGggLSBhdCk7CisgICAgdmFyIGxl
bmd0aCA9IGluc2VydC5sZW5ndGg7CisgICAgdmFyIGk7CisgICAgZm9yIChpID0gMDsgaSA8IHRh
aWwubGVuZ3RoOyBpKyspIHRhaWxbaV0gPSBhcnJheVtpICsgYXRdOworICAgIGZvciAoaSA9IDA7
IGkgPCBsZW5ndGg7IGkrKykgYXJyYXlbaSArIGF0XSA9IGluc2VydFtpXTsKKyAgICBmb3IgKGkg
PSAwOyBpIDwgdGFpbC5sZW5ndGg7IGkrKykgYXJyYXlbaSArIGxlbmd0aCArIGF0XSA9IHRhaWxb
aV07CisgIH07CisKKyAgLy8gRGVmaW5lIHRoZSBDb2xsZWN0aW9uJ3MgaW5oZXJpdGFibGUgbWV0
aG9kcy4KKyAgXy5leHRlbmQoQ29sbGVjdGlvbi5wcm90b3R5cGUsIEV2ZW50cywgeworCisgICAg
Ly8gVGhlIGRlZmF1bHQgbW9kZWwgZm9yIGEgY29sbGVjdGlvbiBpcyBqdXN0IGEgKipCYWNrYm9u
ZS5Nb2RlbCoqLgorICAgIC8vIFRoaXMgc2hvdWxkIGJlIG92ZXJyaWRkZW4gaW4gbW9zdCBjYXNl
cy4KKyAgICBtb2RlbDogTW9kZWwsCisKKyAgICAvLyBJbml0aWFsaXplIGlzIGFuIGVtcHR5IGZ1
bmN0aW9uIGJ5IGRlZmF1bHQuIE92ZXJyaWRlIGl0IHdpdGggeW91ciBvd24KKyAgICAvLyBpbml0
aWFsaXphdGlvbiBsb2dpYy4KKyAgICBpbml0aWFsaXplOiBmdW5jdGlvbigpe30sCisKKyAgICAv
LyBUaGUgSlNPTiByZXByZXNlbnRhdGlvbiBvZiBhIENvbGxlY3Rpb24gaXMgYW4gYXJyYXkgb2Yg
dGhlCisgICAgLy8gbW9kZWxzJyBhdHRyaWJ1dGVzLgorICAgIHRvSlNPTjogZnVuY3Rpb24ob3B0
aW9ucykgeworICAgICAgcmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKG1vZGVsKSB7IHJldHVybiBt
b2RlbC50b0pTT04ob3B0aW9ucyk7IH0pOworICAgIH0sCisKKyAgICAvLyBQcm94eSBgQmFja2Jv
bmUuc3luY2AgYnkgZGVmYXVsdC4KKyAgICBzeW5jOiBmdW5jdGlvbigpIHsKKyAgICAgIHJldHVy
biBCYWNrYm9uZS5zeW5jLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CisgICAgfSwKKworICAgIC8v
IEFkZCBhIG1vZGVsLCBvciBsaXN0IG9mIG1vZGVscyB0byB0aGUgc2V0LiBgbW9kZWxzYCBtYXkg
YmUgQmFja2JvbmUKKyAgICAvLyBNb2RlbHMgb3IgcmF3IEphdmFTY3JpcHQgb2JqZWN0cyB0byBi
ZSBjb252ZXJ0ZWQgdG8gTW9kZWxzLCBvciBhbnkKKyAgICAvLyBjb21iaW5hdGlvbiBvZiB0aGUg
dHdvLgorICAgIGFkZDogZnVuY3Rpb24obW9kZWxzLCBvcHRpb25zKSB7CisgICAgICByZXR1cm4g
dGhpcy5zZXQobW9kZWxzLCBfLmV4dGVuZCh7bWVyZ2U6IGZhbHNlfSwgb3B0aW9ucywgYWRkT3B0
aW9ucykpOworICAgIH0sCisKKyAgICAvLyBSZW1vdmUgYSBtb2RlbCwgb3IgYSBsaXN0IG9mIG1v
ZGVscyBmcm9tIHRoZSBzZXQuCisgICAgcmVtb3ZlOiBmdW5jdGlvbihtb2RlbHMsIG9wdGlvbnMp
IHsKKyAgICAgIG9wdGlvbnMgPSBfLmV4dGVuZCh7fSwgb3B0aW9ucyk7CisgICAgICB2YXIgc2lu
Z3VsYXIgPSAhXy5pc0FycmF5KG1vZGVscyk7CisgICAgICBtb2RlbHMgPSBzaW5ndWxhciA/IFtt
b2RlbHNdIDogbW9kZWxzLnNsaWNlKCk7CisgICAgICB2YXIgcmVtb3ZlZCA9IHRoaXMuX3JlbW92
ZU1vZGVscyhtb2RlbHMsIG9wdGlvbnMpOworICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCAmJiBy
ZW1vdmVkLmxlbmd0aCkgeworICAgICAgICBvcHRpb25zLmNoYW5nZXMgPSB7YWRkZWQ6IFtdLCBt
ZXJnZWQ6IFtdLCByZW1vdmVkOiByZW1vdmVkfTsKKyAgICAgICAgdGhpcy50cmlnZ2VyKCd1cGRh
dGUnLCB0aGlzLCBvcHRpb25zKTsKKyAgICAgIH0KKyAgICAgIHJldHVybiBzaW5ndWxhciA/IHJl
bW92ZWRbMF0gOiByZW1vdmVkOworICAgIH0sCisKKyAgICAvLyBVcGRhdGUgYSBjb2xsZWN0aW9u
IGJ5IGBzZXRgLWluZyBhIG5ldyBsaXN0IG9mIG1vZGVscywgYWRkaW5nIG5ldyBvbmVzLAorICAg
IC8vIHJlbW92aW5nIG1vZGVscyB0aGF0IGFyZSBubyBsb25nZXIgcHJlc2VudCwgYW5kIG1lcmdp
bmcgbW9kZWxzIHRoYXQKKyAgICAvLyBhbHJlYWR5IGV4aXN0IGluIHRoZSBjb2xsZWN0aW9uLCBh
cyBuZWNlc3NhcnkuIFNpbWlsYXIgdG8gKipNb2RlbCNzZXQqKiwKKyAgICAvLyB0aGUgY29yZSBv
cGVyYXRpb24gZm9yIHVwZGF0aW5nIHRoZSBkYXRhIGNvbnRhaW5lZCBieSB0aGUgY29sbGVjdGlv
bi4KKyAgICBzZXQ6IGZ1bmN0aW9uKG1vZGVscywgb3B0aW9ucykgeworICAgICAgaWYgKG1vZGVs
cyA9PSBudWxsKSByZXR1cm47CisKKyAgICAgIG9wdGlvbnMgPSBfLmV4dGVuZCh7fSwgc2V0T3B0
aW9ucywgb3B0aW9ucyk7CisgICAgICBpZiAob3B0aW9ucy5wYXJzZSAmJiAhdGhpcy5faXNNb2Rl
bChtb2RlbHMpKSB7CisgICAgICAgIG1vZGVscyA9IHRoaXMucGFyc2UobW9kZWxzLCBvcHRpb25z
KSB8fCBbXTsKKyAgICAgIH0KKworICAgICAgdmFyIHNpbmd1bGFyID0gIV8uaXNBcnJheShtb2Rl
bHMpOworICAgICAgbW9kZWxzID0gc2luZ3VsYXIgPyBbbW9kZWxzXSA6IG1vZGVscy5zbGljZSgp
OworCisgICAgICB2YXIgYXQgPSBvcHRpb25zLmF0OworICAgICAgaWYgKGF0ICE9IG51bGwpIGF0
ID0gK2F0OworICAgICAgaWYgKGF0ID4gdGhpcy5sZW5ndGgpIGF0ID0gdGhpcy5sZW5ndGg7Cisg
ICAgICBpZiAoYXQgPCAwKSBhdCArPSB0aGlzLmxlbmd0aCArIDE7CisKKyAgICAgIHZhciBzZXQg
PSBbXTsKKyAgICAgIHZhciB0b0FkZCA9IFtdOworICAgICAgdmFyIHRvTWVyZ2UgPSBbXTsKKyAg
ICAgIHZhciB0b1JlbW92ZSA9IFtdOworICAgICAgdmFyIG1vZGVsTWFwID0ge307CisKKyAgICAg
IHZhciBhZGQgPSBvcHRpb25zLmFkZDsKKyAgICAgIHZhciBtZXJnZSA9IG9wdGlvbnMubWVyZ2U7
CisgICAgICB2YXIgcmVtb3ZlID0gb3B0aW9ucy5yZW1vdmU7CisKKyAgICAgIHZhciBzb3J0ID0g
ZmFsc2U7CisgICAgICB2YXIgc29ydGFibGUgPSB0aGlzLmNvbXBhcmF0b3IgJiYgYXQgPT0gbnVs
bCAmJiBvcHRpb25zLnNvcnQgIT09IGZhbHNlOworICAgICAgdmFyIHNvcnRBdHRyID0gXy5pc1N0
cmluZyh0aGlzLmNvbXBhcmF0b3IpID8gdGhpcy5jb21wYXJhdG9yIDogbnVsbDsKKworICAgICAg
Ly8gVHVybiBiYXJlIG9iamVjdHMgaW50byBtb2RlbCByZWZlcmVuY2VzLCBhbmQgcHJldmVudCBp
bnZhbGlkIG1vZGVscworICAgICAgLy8gZnJvbSBiZWluZyBhZGRlZC4KKyAgICAgIHZhciBtb2Rl
bCwgaTsKKyAgICAgIGZvciAoaSA9IDA7IGkgPCBtb2RlbHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
ICAgbW9kZWwgPSBtb2RlbHNbaV07CisKKyAgICAgICAgLy8gSWYgYSBkdXBsaWNhdGUgaXMgZm91
bmQsIHByZXZlbnQgaXQgZnJvbSBiZWluZyBhZGRlZCBhbmQKKyAgICAgICAgLy8gb3B0aW9uYWxs
eSBtZXJnZSBpdCBpbnRvIHRoZSBleGlzdGluZyBtb2RlbC4KKyAgICAgICAgdmFyIGV4aXN0aW5n
ID0gdGhpcy5nZXQobW9kZWwpOworICAgICAgICBpZiAoZXhpc3RpbmcpIHsKKyAgICAgICAgICBp
ZiAobWVyZ2UgJiYgbW9kZWwgIT09IGV4aXN0aW5nKSB7CisgICAgICAgICAgICB2YXIgYXR0cnMg
PSB0aGlzLl9pc01vZGVsKG1vZGVsKSA/IG1vZGVsLmF0dHJpYnV0ZXMgOiBtb2RlbDsKKyAgICAg
ICAgICAgIGlmIChvcHRpb25zLnBhcnNlKSBhdHRycyA9IGV4aXN0aW5nLnBhcnNlKGF0dHJzLCBv
cHRpb25zKTsKKyAgICAgICAgICAgIGV4aXN0aW5nLnNldChhdHRycywgb3B0aW9ucyk7CisgICAg
ICAgICAgICB0b01lcmdlLnB1c2goZXhpc3RpbmcpOworICAgICAgICAgICAgaWYgKHNvcnRhYmxl
ICYmICFzb3J0KSBzb3J0ID0gZXhpc3RpbmcuaGFzQ2hhbmdlZChzb3J0QXR0cik7CisgICAgICAg
ICAgfQorICAgICAgICAgIGlmICghbW9kZWxNYXBbZXhpc3RpbmcuY2lkXSkgeworICAgICAgICAg
ICAgbW9kZWxNYXBbZXhpc3RpbmcuY2lkXSA9IHRydWU7CisgICAgICAgICAgICBzZXQucHVzaChl
eGlzdGluZyk7CisgICAgICAgICAgfQorICAgICAgICAgIG1vZGVsc1tpXSA9IGV4aXN0aW5nOwor
CisgICAgICAgIC8vIElmIHRoaXMgaXMgYSBuZXcsIHZhbGlkIG1vZGVsLCBwdXNoIGl0IHRvIHRo
ZSBgdG9BZGRgIGxpc3QuCisgICAgICAgIH0gZWxzZSBpZiAoYWRkKSB7CisgICAgICAgICAgbW9k
ZWwgPSBtb2RlbHNbaV0gPSB0aGlzLl9wcmVwYXJlTW9kZWwobW9kZWwsIG9wdGlvbnMpOworICAg
ICAgICAgIGlmIChtb2RlbCkgeworICAgICAgICAgICAgdG9BZGQucHVzaChtb2RlbCk7CisgICAg
ICAgICAgICB0aGlzLl9hZGRSZWZlcmVuY2UobW9kZWwsIG9wdGlvbnMpOworICAgICAgICAgICAg
bW9kZWxNYXBbbW9kZWwuY2lkXSA9IHRydWU7CisgICAgICAgICAgICBzZXQucHVzaChtb2RlbCk7
CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisKKyAgICAgIC8vIFJlbW92ZSBzdGFs
ZSBtb2RlbHMuCisgICAgICBpZiAocmVtb3ZlKSB7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCB0
aGlzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgbW9kZWwgPSB0aGlzLm1vZGVsc1tpXTsKKyAg
ICAgICAgICBpZiAoIW1vZGVsTWFwW21vZGVsLmNpZF0pIHRvUmVtb3ZlLnB1c2gobW9kZWwpOwor
ICAgICAgICB9CisgICAgICAgIGlmICh0b1JlbW92ZS5sZW5ndGgpIHRoaXMuX3JlbW92ZU1vZGVs
cyh0b1JlbW92ZSwgb3B0aW9ucyk7CisgICAgICB9CisKKyAgICAgIC8vIFNlZSBpZiBzb3J0aW5n
IGlzIG5lZWRlZCwgdXBkYXRlIGBsZW5ndGhgIGFuZCBzcGxpY2UgaW4gbmV3IG1vZGVscy4KKyAg
ICAgIHZhciBvcmRlckNoYW5nZWQgPSBmYWxzZTsKKyAgICAgIHZhciByZXBsYWNlID0gIXNvcnRh
YmxlICYmIGFkZCAmJiByZW1vdmU7CisgICAgICBpZiAoc2V0Lmxlbmd0aCAmJiByZXBsYWNlKSB7
CisgICAgICAgIG9yZGVyQ2hhbmdlZCA9IHRoaXMubGVuZ3RoICE9PSBzZXQubGVuZ3RoIHx8IF8u
c29tZSh0aGlzLm1vZGVscywgZnVuY3Rpb24obSwgaW5kZXgpIHsKKyAgICAgICAgICByZXR1cm4g
bSAhPT0gc2V0W2luZGV4XTsKKyAgICAgICAgfSk7CisgICAgICAgIHRoaXMubW9kZWxzLmxlbmd0
aCA9IDA7CisgICAgICAgIHNwbGljZSh0aGlzLm1vZGVscywgc2V0LCAwKTsKKyAgICAgICAgdGhp
cy5sZW5ndGggPSB0aGlzLm1vZGVscy5sZW5ndGg7CisgICAgICB9IGVsc2UgaWYgKHRvQWRkLmxl
bmd0aCkgeworICAgICAgICBpZiAoc29ydGFibGUpIHNvcnQgPSB0cnVlOworICAgICAgICBzcGxp
Y2UodGhpcy5tb2RlbHMsIHRvQWRkLCBhdCA9PSBudWxsID8gdGhpcy5sZW5ndGggOiBhdCk7Cisg
ICAgICAgIHRoaXMubGVuZ3RoID0gdGhpcy5tb2RlbHMubGVuZ3RoOworICAgICAgfQorCisgICAg
ICAvLyBTaWxlbnRseSBzb3J0IHRoZSBjb2xsZWN0aW9uIGlmIGFwcHJvcHJpYXRlLgorICAgICAg
aWYgKHNvcnQpIHRoaXMuc29ydCh7c2lsZW50OiB0cnVlfSk7CisKKyAgICAgIC8vIFVubGVzcyBz
aWxlbmNlZCwgaXQncyB0aW1lIHRvIGZpcmUgYWxsIGFwcHJvcHJpYXRlIGFkZC9zb3J0L3VwZGF0
ZSBldmVudHMuCisgICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7CisgICAgICAgIGZvciAoaSA9
IDA7IGkgPCB0b0FkZC5sZW5ndGg7IGkrKykgeworICAgICAgICAgIGlmIChhdCAhPSBudWxsKSBv
cHRpb25zLmluZGV4ID0gYXQgKyBpOworICAgICAgICAgIG1vZGVsID0gdG9BZGRbaV07CisgICAg
ICAgICAgbW9kZWwudHJpZ2dlcignYWRkJywgbW9kZWwsIHRoaXMsIG9wdGlvbnMpOworICAgICAg
ICB9CisgICAgICAgIGlmIChzb3J0IHx8IG9yZGVyQ2hhbmdlZCkgdGhpcy50cmlnZ2VyKCdzb3J0
JywgdGhpcywgb3B0aW9ucyk7CisgICAgICAgIGlmICh0b0FkZC5sZW5ndGggfHwgdG9SZW1vdmUu
bGVuZ3RoIHx8IHRvTWVyZ2UubGVuZ3RoKSB7CisgICAgICAgICAgb3B0aW9ucy5jaGFuZ2VzID0g
eworICAgICAgICAgICAgYWRkZWQ6IHRvQWRkLAorICAgICAgICAgICAgcmVtb3ZlZDogdG9SZW1v
dmUsCisgICAgICAgICAgICBtZXJnZWQ6IHRvTWVyZ2UKKyAgICAgICAgICB9OworICAgICAgICAg
IHRoaXMudHJpZ2dlcigndXBkYXRlJywgdGhpcywgb3B0aW9ucyk7CisgICAgICAgIH0KKyAgICAg
IH0KKworICAgICAgLy8gUmV0dXJuIHRoZSBhZGRlZCAob3IgbWVyZ2VkKSBtb2RlbCAob3IgbW9k
ZWxzKS4KKyAgICAgIHJldHVybiBzaW5ndWxhciA/IG1vZGVsc1swXSA6IG1vZGVsczsKKyAgICB9
LAorCisgICAgLy8gV2hlbiB5b3UgaGF2ZSBtb3JlIGl0ZW1zIHRoYW4geW91IHdhbnQgdG8gYWRk
IG9yIHJlbW92ZSBpbmRpdmlkdWFsbHksCisgICAgLy8geW91IGNhbiByZXNldCB0aGUgZW50aXJl
IHNldCB3aXRoIGEgbmV3IGxpc3Qgb2YgbW9kZWxzLCB3aXRob3V0IGZpcmluZworICAgIC8vIGFu
eSBncmFudWxhciBgYWRkYCBvciBgcmVtb3ZlYCBldmVudHMuIEZpcmVzIGByZXNldGAgd2hlbiBm
aW5pc2hlZC4KKyAgICAvLyBVc2VmdWwgZm9yIGJ1bGsgb3BlcmF0aW9ucyBhbmQgb3B0aW1pemF0
aW9ucy4KKyAgICByZXNldDogZnVuY3Rpb24obW9kZWxzLCBvcHRpb25zKSB7CisgICAgICBvcHRp
b25zID0gb3B0aW9ucyA/IF8uY2xvbmUob3B0aW9ucykgOiB7fTsKKyAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgdGhpcy5tb2RlbHMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgdGhpcy5fcmVtb3Zl
UmVmZXJlbmNlKHRoaXMubW9kZWxzW2ldLCBvcHRpb25zKTsKKyAgICAgIH0KKyAgICAgIG9wdGlv
bnMucHJldmlvdXNNb2RlbHMgPSB0aGlzLm1vZGVsczsKKyAgICAgIHRoaXMuX3Jlc2V0KCk7Cisg
ICAgICBtb2RlbHMgPSB0aGlzLmFkZChtb2RlbHMsIF8uZXh0ZW5kKHtzaWxlbnQ6IHRydWV9LCBv
cHRpb25zKSk7CisgICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB0aGlzLnRyaWdnZXIoJ3Jlc2V0
JywgdGhpcywgb3B0aW9ucyk7CisgICAgICByZXR1cm4gbW9kZWxzOworICAgIH0sCisKKyAgICAv
LyBBZGQgYSBtb2RlbCB0byB0aGUgZW5kIG9mIHRoZSBjb2xsZWN0aW9uLgorICAgIHB1c2g6IGZ1
bmN0aW9uKG1vZGVsLCBvcHRpb25zKSB7CisgICAgICByZXR1cm4gdGhpcy5hZGQobW9kZWwsIF8u
ZXh0ZW5kKHthdDogdGhpcy5sZW5ndGh9LCBvcHRpb25zKSk7CisgICAgfSwKKworICAgIC8vIFJl
bW92ZSBhIG1vZGVsIGZyb20gdGhlIGVuZCBvZiB0aGUgY29sbGVjdGlvbi4KKyAgICBwb3A6IGZ1
bmN0aW9uKG9wdGlvbnMpIHsKKyAgICAgIHZhciBtb2RlbCA9IHRoaXMuYXQodGhpcy5sZW5ndGgg
LSAxKTsKKyAgICAgIHJldHVybiB0aGlzLnJlbW92ZShtb2RlbCwgb3B0aW9ucyk7CisgICAgfSwK
KworICAgIC8vIEFkZCBhIG1vZGVsIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGNvbGxlY3Rpb24u
CisgICAgdW5zaGlmdDogZnVuY3Rpb24obW9kZWwsIG9wdGlvbnMpIHsKKyAgICAgIHJldHVybiB0
aGlzLmFkZChtb2RlbCwgXy5leHRlbmQoe2F0OiAwfSwgb3B0aW9ucykpOworICAgIH0sCisKKyAg
ICAvLyBSZW1vdmUgYSBtb2RlbCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGNvbGxlY3Rpb24u
CisgICAgc2hpZnQ6IGZ1bmN0aW9uKG9wdGlvbnMpIHsKKyAgICAgIHZhciBtb2RlbCA9IHRoaXMu
YXQoMCk7CisgICAgICByZXR1cm4gdGhpcy5yZW1vdmUobW9kZWwsIG9wdGlvbnMpOworICAgIH0s
CisKKyAgICAvLyBTbGljZSBvdXQgYSBzdWItYXJyYXkgb2YgbW9kZWxzIGZyb20gdGhlIGNvbGxl
Y3Rpb24uCisgICAgc2xpY2U6IGZ1bmN0aW9uKCkgeworICAgICAgcmV0dXJuIHNsaWNlLmFwcGx5
KHRoaXMubW9kZWxzLCBhcmd1bWVudHMpOworICAgIH0sCisKKyAgICAvLyBHZXQgYSBtb2RlbCBm
cm9tIHRoZSBzZXQgYnkgaWQsIGNpZCwgbW9kZWwgb2JqZWN0IHdpdGggaWQgb3IgY2lkCisgICAg
Ly8gcHJvcGVydGllcywgb3IgYW4gYXR0cmlidXRlcyBvYmplY3QgdGhhdCBpcyB0cmFuc2Zvcm1l
ZCB0aHJvdWdoIG1vZGVsSWQuCisgICAgZ2V0OiBmdW5jdGlvbihvYmopIHsKKyAgICAgIGlmIChv
YmogPT0gbnVsbCkgcmV0dXJuIHZvaWQgMDsKKyAgICAgIHJldHVybiB0aGlzLl9ieUlkW29ial0g
fHwKKyAgICAgICAgdGhpcy5fYnlJZFt0aGlzLm1vZGVsSWQob2JqLmF0dHJpYnV0ZXMgfHwgb2Jq
KV0gfHwKKyAgICAgICAgb2JqLmNpZCAmJiB0aGlzLl9ieUlkW29iai5jaWRdOworICAgIH0sCisK
KyAgICAvLyBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgbW9kZWwgaXMgaW4gdGhlIGNvbGxlY3Rpb24u
CisgICAgaGFzOiBmdW5jdGlvbihvYmopIHsKKyAgICAgIHJldHVybiB0aGlzLmdldChvYmopICE9
IG51bGw7CisgICAgfSwKKworICAgIC8vIEdldCB0aGUgbW9kZWwgYXQgdGhlIGdpdmVuIGluZGV4
LgorICAgIGF0OiBmdW5jdGlvbihpbmRleCkgeworICAgICAgaWYgKGluZGV4IDwgMCkgaW5kZXgg
Kz0gdGhpcy5sZW5ndGg7CisgICAgICByZXR1cm4gdGhpcy5tb2RlbHNbaW5kZXhdOworICAgIH0s
CisKKyAgICAvLyBSZXR1cm4gbW9kZWxzIHdpdGggbWF0Y2hpbmcgYXR0cmlidXRlcy4gVXNlZnVs
IGZvciBzaW1wbGUgY2FzZXMgb2YKKyAgICAvLyBgZmlsdGVyYC4KKyAgICB3aGVyZTogZnVuY3Rp
b24oYXR0cnMsIGZpcnN0KSB7CisgICAgICByZXR1cm4gdGhpc1tmaXJzdCA/ICdmaW5kJyA6ICdm
aWx0ZXInXShhdHRycyk7CisgICAgfSwKKworICAgIC8vIFJldHVybiB0aGUgZmlyc3QgbW9kZWwg
d2l0aCBtYXRjaGluZyBhdHRyaWJ1dGVzLiBVc2VmdWwgZm9yIHNpbXBsZSBjYXNlcworICAgIC8v
IG9mIGBmaW5kYC4KKyAgICBmaW5kV2hlcmU6IGZ1bmN0aW9uKGF0dHJzKSB7CisgICAgICByZXR1
cm4gdGhpcy53aGVyZShhdHRycywgdHJ1ZSk7CisgICAgfSwKKworICAgIC8vIEZvcmNlIHRoZSBj
b2xsZWN0aW9uIHRvIHJlLXNvcnQgaXRzZWxmLiBZb3UgZG9uJ3QgbmVlZCB0byBjYWxsIHRoaXMg
dW5kZXIKKyAgICAvLyBub3JtYWwgY2lyY3Vtc3RhbmNlcywgYXMgdGhlIHNldCB3aWxsIG1haW50
YWluIHNvcnQgb3JkZXIgYXMgZWFjaCBpdGVtCisgICAgLy8gaXMgYWRkZWQuCisgICAgc29ydDog
ZnVuY3Rpb24ob3B0aW9ucykgeworICAgICAgdmFyIGNvbXBhcmF0b3IgPSB0aGlzLmNvbXBhcmF0
b3I7CisgICAgICBpZiAoIWNvbXBhcmF0b3IpIHRocm93IG5ldyBFcnJvcignQ2Fubm90IHNvcnQg
YSBzZXQgd2l0aG91dCBhIGNvbXBhcmF0b3InKTsKKyAgICAgIG9wdGlvbnMgfHwgKG9wdGlvbnMg
PSB7fSk7CisKKyAgICAgIHZhciBsZW5ndGggPSBjb21wYXJhdG9yLmxlbmd0aDsKKyAgICAgIGlm
IChfLmlzRnVuY3Rpb24oY29tcGFyYXRvcikpIGNvbXBhcmF0b3IgPSBfLmJpbmQoY29tcGFyYXRv
ciwgdGhpcyk7CisKKyAgICAgIC8vIFJ1biBzb3J0IGJhc2VkIG9uIHR5cGUgb2YgYGNvbXBhcmF0
b3JgLgorICAgICAgaWYgKGxlbmd0aCA9PT0gMSB8fCBfLmlzU3RyaW5nKGNvbXBhcmF0b3IpKSB7
CisgICAgICAgIHRoaXMubW9kZWxzID0gdGhpcy5zb3J0QnkoY29tcGFyYXRvcik7CisgICAgICB9
IGVsc2UgeworICAgICAgICB0aGlzLm1vZGVscy5zb3J0KGNvbXBhcmF0b3IpOworICAgICAgfQor
ICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkgdGhpcy50cmlnZ2VyKCdzb3J0JywgdGhpcywgb3B0
aW9ucyk7CisgICAgICByZXR1cm4gdGhpczsKKyAgICB9LAorCisgICAgLy8gUGx1Y2sgYW4gYXR0
cmlidXRlIGZyb20gZWFjaCBtb2RlbCBpbiB0aGUgY29sbGVjdGlvbi4KKyAgICBwbHVjazogZnVu
Y3Rpb24oYXR0cikgeworICAgICAgcmV0dXJuIHRoaXMubWFwKGF0dHIgKyAnJyk7CisgICAgfSwK
KworICAgIC8vIEZldGNoIHRoZSBkZWZhdWx0IHNldCBvZiBtb2RlbHMgZm9yIHRoaXMgY29sbGVj
dGlvbiwgcmVzZXR0aW5nIHRoZQorICAgIC8vIGNvbGxlY3Rpb24gd2hlbiB0aGV5IGFycml2ZS4g
SWYgYHJlc2V0OiB0cnVlYCBpcyBwYXNzZWQsIHRoZSByZXNwb25zZQorICAgIC8vIGRhdGEgd2ls
bCBiZSBwYXNzZWQgdGhyb3VnaCB0aGUgYHJlc2V0YCBtZXRob2QgaW5zdGVhZCBvZiBgc2V0YC4K
KyAgICBmZXRjaDogZnVuY3Rpb24ob3B0aW9ucykgeworICAgICAgb3B0aW9ucyA9IF8uZXh0ZW5k
KHtwYXJzZTogdHJ1ZX0sIG9wdGlvbnMpOworICAgICAgdmFyIHN1Y2Nlc3MgPSBvcHRpb25zLnN1
Y2Nlc3M7CisgICAgICB2YXIgY29sbGVjdGlvbiA9IHRoaXM7CisgICAgICBvcHRpb25zLnN1Y2Nl
c3MgPSBmdW5jdGlvbihyZXNwKSB7CisgICAgICAgIHZhciBtZXRob2QgPSBvcHRpb25zLnJlc2V0
ID8gJ3Jlc2V0JyA6ICdzZXQnOworICAgICAgICBjb2xsZWN0aW9uW21ldGhvZF0ocmVzcCwgb3B0
aW9ucyk7CisgICAgICAgIGlmIChzdWNjZXNzKSBzdWNjZXNzLmNhbGwob3B0aW9ucy5jb250ZXh0
LCBjb2xsZWN0aW9uLCByZXNwLCBvcHRpb25zKTsKKyAgICAgICAgY29sbGVjdGlvbi50cmlnZ2Vy
KCdzeW5jJywgY29sbGVjdGlvbiwgcmVzcCwgb3B0aW9ucyk7CisgICAgICB9OworICAgICAgd3Jh
cEVycm9yKHRoaXMsIG9wdGlvbnMpOworICAgICAgcmV0dXJuIHRoaXMuc3luYygncmVhZCcsIHRo
aXMsIG9wdGlvbnMpOworICAgIH0sCisKKyAgICAvLyBDcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2Yg
YSBtb2RlbCBpbiB0aGlzIGNvbGxlY3Rpb24uIEFkZCB0aGUgbW9kZWwgdG8gdGhlCisgICAgLy8g
Y29sbGVjdGlvbiBpbW1lZGlhdGVseSwgdW5sZXNzIGB3YWl0OiB0cnVlYCBpcyBwYXNzZWQsIGlu
IHdoaWNoIGNhc2Ugd2UKKyAgICAvLyB3YWl0IGZvciB0aGUgc2VydmVyIHRvIGFncmVlLgorICAg
IGNyZWF0ZTogZnVuY3Rpb24obW9kZWwsIG9wdGlvbnMpIHsKKyAgICAgIG9wdGlvbnMgPSBvcHRp
b25zID8gXy5jbG9uZShvcHRpb25zKSA6IHt9OworICAgICAgdmFyIHdhaXQgPSBvcHRpb25zLndh
aXQ7CisgICAgICBtb2RlbCA9IHRoaXMuX3ByZXBhcmVNb2RlbChtb2RlbCwgb3B0aW9ucyk7Cisg
ICAgICBpZiAoIW1vZGVsKSByZXR1cm4gZmFsc2U7CisgICAgICBpZiAoIXdhaXQpIHRoaXMuYWRk
KG1vZGVsLCBvcHRpb25zKTsKKyAgICAgIHZhciBjb2xsZWN0aW9uID0gdGhpczsKKyAgICAgIHZh
ciBzdWNjZXNzID0gb3B0aW9ucy5zdWNjZXNzOworICAgICAgb3B0aW9ucy5zdWNjZXNzID0gZnVu
Y3Rpb24obSwgcmVzcCwgY2FsbGJhY2tPcHRzKSB7CisgICAgICAgIGlmICh3YWl0KSBjb2xsZWN0
aW9uLmFkZChtLCBjYWxsYmFja09wdHMpOworICAgICAgICBpZiAoc3VjY2Vzcykgc3VjY2Vzcy5j
YWxsKGNhbGxiYWNrT3B0cy5jb250ZXh0LCBtLCByZXNwLCBjYWxsYmFja09wdHMpOworICAgICAg
fTsKKyAgICAgIG1vZGVsLnNhdmUobnVsbCwgb3B0aW9ucyk7CisgICAgICByZXR1cm4gbW9kZWw7
CisgICAgfSwKKworICAgIC8vICoqcGFyc2UqKiBjb252ZXJ0cyBhIHJlc3BvbnNlIGludG8gYSBs
aXN0IG9mIG1vZGVscyB0byBiZSBhZGRlZCB0byB0aGUKKyAgICAvLyBjb2xsZWN0aW9uLiBUaGUg
ZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBpcyBqdXN0IHRvIHBhc3MgaXQgdGhyb3VnaC4KKyAgICBw
YXJzZTogZnVuY3Rpb24ocmVzcCwgb3B0aW9ucykgeworICAgICAgcmV0dXJuIHJlc3A7CisgICAg
fSwKKworICAgIC8vIENyZWF0ZSBhIG5ldyBjb2xsZWN0aW9uIHdpdGggYW4gaWRlbnRpY2FsIGxp
c3Qgb2YgbW9kZWxzIGFzIHRoaXMgb25lLgorICAgIGNsb25lOiBmdW5jdGlvbigpIHsKKyAgICAg
IHJldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3Rvcih0aGlzLm1vZGVscywgeworICAgICAgICBtb2Rl
bDogdGhpcy5tb2RlbCwKKyAgICAgICAgY29tcGFyYXRvcjogdGhpcy5jb21wYXJhdG9yCisgICAg
ICB9KTsKKyAgICB9LAorCisgICAgLy8gRGVmaW5lIGhvdyB0byB1bmlxdWVseSBpZGVudGlmeSBt
b2RlbHMgaW4gdGhlIGNvbGxlY3Rpb24uCisgICAgbW9kZWxJZDogZnVuY3Rpb24oYXR0cnMpIHsK
KyAgICAgIHJldHVybiBhdHRyc1t0aGlzLm1vZGVsLnByb3RvdHlwZS5pZEF0dHJpYnV0ZSB8fCAn
aWQnXTsKKyAgICB9LAorCisgICAgLy8gUHJpdmF0ZSBtZXRob2QgdG8gcmVzZXQgYWxsIGludGVy
bmFsIHN0YXRlLiBDYWxsZWQgd2hlbiB0aGUgY29sbGVjdGlvbgorICAgIC8vIGlzIGZpcnN0IGlu
aXRpYWxpemVkIG9yIHJlc2V0LgorICAgIF9yZXNldDogZnVuY3Rpb24oKSB7CisgICAgICB0aGlz
Lmxlbmd0aCA9IDA7CisgICAgICB0aGlzLm1vZGVscyA9IFtdOworICAgICAgdGhpcy5fYnlJZCAg
PSB7fTsKKyAgICB9LAorCisgICAgLy8gUHJlcGFyZSBhIGhhc2ggb2YgYXR0cmlidXRlcyAob3Ig
b3RoZXIgbW9kZWwpIHRvIGJlIGFkZGVkIHRvIHRoaXMKKyAgICAvLyBjb2xsZWN0aW9uLgorICAg
IF9wcmVwYXJlTW9kZWw6IGZ1bmN0aW9uKGF0dHJzLCBvcHRpb25zKSB7CisgICAgICBpZiAodGhp
cy5faXNNb2RlbChhdHRycykpIHsKKyAgICAgICAgaWYgKCFhdHRycy5jb2xsZWN0aW9uKSBhdHRy
cy5jb2xsZWN0aW9uID0gdGhpczsKKyAgICAgICAgcmV0dXJuIGF0dHJzOworICAgICAgfQorICAg
ICAgb3B0aW9ucyA9IG9wdGlvbnMgPyBfLmNsb25lKG9wdGlvbnMpIDoge307CisgICAgICBvcHRp
b25zLmNvbGxlY3Rpb24gPSB0aGlzOworICAgICAgdmFyIG1vZGVsID0gbmV3IHRoaXMubW9kZWwo
YXR0cnMsIG9wdGlvbnMpOworICAgICAgaWYgKCFtb2RlbC52YWxpZGF0aW9uRXJyb3IpIHJldHVy
biBtb2RlbDsKKyAgICAgIHRoaXMudHJpZ2dlcignaW52YWxpZCcsIHRoaXMsIG1vZGVsLnZhbGlk
YXRpb25FcnJvciwgb3B0aW9ucyk7CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfSwKKworICAg
IC8vIEludGVybmFsIG1ldGhvZCBjYWxsZWQgYnkgYm90aCByZW1vdmUgYW5kIHNldC4KKyAgICBf
cmVtb3ZlTW9kZWxzOiBmdW5jdGlvbihtb2RlbHMsIG9wdGlvbnMpIHsKKyAgICAgIHZhciByZW1v
dmVkID0gW107CisgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1vZGVscy5sZW5ndGg7IGkrKykg
eworICAgICAgICB2YXIgbW9kZWwgPSB0aGlzLmdldChtb2RlbHNbaV0pOworICAgICAgICBpZiAo
IW1vZGVsKSBjb250aW51ZTsKKworICAgICAgICB2YXIgaW5kZXggPSB0aGlzLmluZGV4T2YobW9k
ZWwpOworICAgICAgICB0aGlzLm1vZGVscy5zcGxpY2UoaW5kZXgsIDEpOworICAgICAgICB0aGlz
Lmxlbmd0aC0tOworCisgICAgICAgIC8vIFJlbW92ZSByZWZlcmVuY2VzIGJlZm9yZSB0cmlnZ2Vy
aW5nICdyZW1vdmUnIGV2ZW50IHRvIHByZXZlbnQgYW4KKyAgICAgICAgLy8gaW5maW5pdGUgbG9v
cC4gIzM2OTMKKyAgICAgICAgZGVsZXRlIHRoaXMuX2J5SWRbbW9kZWwuY2lkXTsKKyAgICAgICAg
dmFyIGlkID0gdGhpcy5tb2RlbElkKG1vZGVsLmF0dHJpYnV0ZXMpOworICAgICAgICBpZiAoaWQg
IT0gbnVsbCkgZGVsZXRlIHRoaXMuX2J5SWRbaWRdOworCisgICAgICAgIGlmICghb3B0aW9ucy5z
aWxlbnQpIHsKKyAgICAgICAgICBvcHRpb25zLmluZGV4ID0gaW5kZXg7CisgICAgICAgICAgbW9k
ZWwudHJpZ2dlcigncmVtb3ZlJywgbW9kZWwsIHRoaXMsIG9wdGlvbnMpOworICAgICAgICB9CisK
KyAgICAgICAgcmVtb3ZlZC5wdXNoKG1vZGVsKTsKKyAgICAgICAgdGhpcy5fcmVtb3ZlUmVmZXJl
bmNlKG1vZGVsLCBvcHRpb25zKTsKKyAgICAgIH0KKyAgICAgIHJldHVybiByZW1vdmVkOworICAg
IH0sCisKKyAgICAvLyBNZXRob2QgZm9yIGNoZWNraW5nIHdoZXRoZXIgYW4gb2JqZWN0IHNob3Vs
ZCBiZSBjb25zaWRlcmVkIGEgbW9kZWwgZm9yCisgICAgLy8gdGhlIHB1cnBvc2VzIG9mIGFkZGlu
ZyB0byB0aGUgY29sbGVjdGlvbi4KKyAgICBfaXNNb2RlbDogZnVuY3Rpb24obW9kZWwpIHsKKyAg
ICAgIHJldHVybiBtb2RlbCBpbnN0YW5jZW9mIE1vZGVsOworICAgIH0sCisKKyAgICAvLyBJbnRl
cm5hbCBtZXRob2QgdG8gY3JlYXRlIGEgbW9kZWwncyB0aWVzIHRvIGEgY29sbGVjdGlvbi4KKyAg
ICBfYWRkUmVmZXJlbmNlOiBmdW5jdGlvbihtb2RlbCwgb3B0aW9ucykgeworICAgICAgdGhpcy5f
YnlJZFttb2RlbC5jaWRdID0gbW9kZWw7CisgICAgICB2YXIgaWQgPSB0aGlzLm1vZGVsSWQobW9k
ZWwuYXR0cmlidXRlcyk7CisgICAgICBpZiAoaWQgIT0gbnVsbCkgdGhpcy5fYnlJZFtpZF0gPSBt
b2RlbDsKKyAgICAgIG1vZGVsLm9uKCdhbGwnLCB0aGlzLl9vbk1vZGVsRXZlbnQsIHRoaXMpOwor
ICAgIH0sCisKKyAgICAvLyBJbnRlcm5hbCBtZXRob2QgdG8gc2V2ZXIgYSBtb2RlbCdzIHRpZXMg
dG8gYSBjb2xsZWN0aW9uLgorICAgIF9yZW1vdmVSZWZlcmVuY2U6IGZ1bmN0aW9uKG1vZGVsLCBv
cHRpb25zKSB7CisgICAgICBkZWxldGUgdGhpcy5fYnlJZFttb2RlbC5jaWRdOworICAgICAgdmFy
IGlkID0gdGhpcy5tb2RlbElkKG1vZGVsLmF0dHJpYnV0ZXMpOworICAgICAgaWYgKGlkICE9IG51
bGwpIGRlbGV0ZSB0aGlzLl9ieUlkW2lkXTsKKyAgICAgIGlmICh0aGlzID09PSBtb2RlbC5jb2xs
ZWN0aW9uKSBkZWxldGUgbW9kZWwuY29sbGVjdGlvbjsKKyAgICAgIG1vZGVsLm9mZignYWxsJywg
dGhpcy5fb25Nb2RlbEV2ZW50LCB0aGlzKTsKKyAgICB9LAorCisgICAgLy8gSW50ZXJuYWwgbWV0
aG9kIGNhbGxlZCBldmVyeSB0aW1lIGEgbW9kZWwgaW4gdGhlIHNldCBmaXJlcyBhbiBldmVudC4K
KyAgICAvLyBTZXRzIG5lZWQgdG8gdXBkYXRlIHRoZWlyIGluZGV4ZXMgd2hlbiBtb2RlbHMgY2hh
bmdlIGlkcy4gQWxsIG90aGVyCisgICAgLy8gZXZlbnRzIHNpbXBseSBwcm94eSB0aHJvdWdoLiAi
YWRkIiBhbmQgInJlbW92ZSIgZXZlbnRzIHRoYXQgb3JpZ2luYXRlCisgICAgLy8gaW4gb3RoZXIg
Y29sbGVjdGlvbnMgYXJlIGlnbm9yZWQuCisgICAgX29uTW9kZWxFdmVudDogZnVuY3Rpb24oZXZl
bnQsIG1vZGVsLCBjb2xsZWN0aW9uLCBvcHRpb25zKSB7CisgICAgICBpZiAobW9kZWwpIHsKKyAg
ICAgICAgaWYgKChldmVudCA9PT0gJ2FkZCcgfHwgZXZlbnQgPT09ICdyZW1vdmUnKSAmJiBjb2xs
ZWN0aW9uICE9PSB0aGlzKSByZXR1cm47CisgICAgICAgIGlmIChldmVudCA9PT0gJ2Rlc3Ryb3kn
KSB0aGlzLnJlbW92ZShtb2RlbCwgb3B0aW9ucyk7CisgICAgICAgIGlmIChldmVudCA9PT0gJ2No
YW5nZScpIHsKKyAgICAgICAgICB2YXIgcHJldklkID0gdGhpcy5tb2RlbElkKG1vZGVsLnByZXZp
b3VzQXR0cmlidXRlcygpKTsKKyAgICAgICAgICB2YXIgaWQgPSB0aGlzLm1vZGVsSWQobW9kZWwu
YXR0cmlidXRlcyk7CisgICAgICAgICAgaWYgKHByZXZJZCAhPT0gaWQpIHsKKyAgICAgICAgICAg
IGlmIChwcmV2SWQgIT0gbnVsbCkgZGVsZXRlIHRoaXMuX2J5SWRbcHJldklkXTsKKyAgICAgICAg
ICAgIGlmIChpZCAhPSBudWxsKSB0aGlzLl9ieUlkW2lkXSA9IG1vZGVsOworICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgfQorICAgICAgdGhpcy50cmlnZ2VyLmFwcGx5KHRoaXMsIGFyZ3Vt
ZW50cyk7CisgICAgfQorCisgIH0pOworCisgIC8vIFVuZGVyc2NvcmUgbWV0aG9kcyB0aGF0IHdl
IHdhbnQgdG8gaW1wbGVtZW50IG9uIHRoZSBDb2xsZWN0aW9uLgorICAvLyA5MCUgb2YgdGhlIGNv
cmUgdXNlZnVsbmVzcyBvZiBCYWNrYm9uZSBDb2xsZWN0aW9ucyBpcyBhY3R1YWxseSBpbXBsZW1l
bnRlZAorICAvLyByaWdodCBoZXJlOgorICB2YXIgY29sbGVjdGlvbk1ldGhvZHMgPSB7Zm9yRWFj
aDogMywgZWFjaDogMywgbWFwOiAzLCBjb2xsZWN0OiAzLCByZWR1Y2U6IDAsCisgICAgICBmb2xk
bDogMCwgaW5qZWN0OiAwLCByZWR1Y2VSaWdodDogMCwgZm9sZHI6IDAsIGZpbmQ6IDMsIGRldGVj
dDogMywgZmlsdGVyOiAzLAorICAgICAgc2VsZWN0OiAzLCByZWplY3Q6IDMsIGV2ZXJ5OiAzLCBh
bGw6IDMsIHNvbWU6IDMsIGFueTogMywgaW5jbHVkZTogMywgaW5jbHVkZXM6IDMsCisgICAgICBj
b250YWluczogMywgaW52b2tlOiAwLCBtYXg6IDMsIG1pbjogMywgdG9BcnJheTogMSwgc2l6ZTog
MSwgZmlyc3Q6IDMsCisgICAgICBoZWFkOiAzLCB0YWtlOiAzLCBpbml0aWFsOiAzLCByZXN0OiAz
LCB0YWlsOiAzLCBkcm9wOiAzLCBsYXN0OiAzLAorICAgICAgd2l0aG91dDogMCwgZGlmZmVyZW5j
ZTogMCwgaW5kZXhPZjogMywgc2h1ZmZsZTogMSwgbGFzdEluZGV4T2Y6IDMsCisgICAgICBpc0Vt
cHR5OiAxLCBjaGFpbjogMSwgc2FtcGxlOiAzLCBwYXJ0aXRpb246IDMsIGdyb3VwQnk6IDMsIGNv
dW50Qnk6IDMsCisgICAgICBzb3J0Qnk6IDMsIGluZGV4Qnk6IDMsIGZpbmRJbmRleDogMywgZmlu
ZExhc3RJbmRleDogM307CisKKyAgLy8gTWl4IGluIGVhY2ggVW5kZXJzY29yZSBtZXRob2QgYXMg
YSBwcm94eSB0byBgQ29sbGVjdGlvbiNtb2RlbHNgLgorICBhZGRVbmRlcnNjb3JlTWV0aG9kcyhD
b2xsZWN0aW9uLCBjb2xsZWN0aW9uTWV0aG9kcywgJ21vZGVscycpOworCisgIC8vIEJhY2tib25l
LlZpZXcKKyAgLy8gLS0tLS0tLS0tLS0tLQorCisgIC8vIEJhY2tib25lIFZpZXdzIGFyZSBhbG1v
c3QgbW9yZSBjb252ZW50aW9uIHRoYW4gdGhleSBhcmUgYWN0dWFsIGNvZGUuIEEgVmlldworICAv
LyBpcyBzaW1wbHkgYSBKYXZhU2NyaXB0IG9iamVjdCB0aGF0IHJlcHJlc2VudHMgYSBsb2dpY2Fs
IGNodW5rIG9mIFVJIGluIHRoZQorICAvLyBET00uIFRoaXMgbWlnaHQgYmUgYSBzaW5nbGUgaXRl
bSwgYW4gZW50aXJlIGxpc3QsIGEgc2lkZWJhciBvciBwYW5lbCwgb3IKKyAgLy8gZXZlbiB0aGUg
c3Vycm91bmRpbmcgZnJhbWUgd2hpY2ggd3JhcHMgeW91ciB3aG9sZSBhcHAuIERlZmluaW5nIGEg
Y2h1bmsgb2YKKyAgLy8gVUkgYXMgYSAqKlZpZXcqKiBhbGxvd3MgeW91IHRvIGRlZmluZSB5b3Vy
IERPTSBldmVudHMgZGVjbGFyYXRpdmVseSwgd2l0aG91dAorICAvLyBoYXZpbmcgdG8gd29ycnkg
YWJvdXQgcmVuZGVyIG9yZGVyIC4uLiBhbmQgbWFrZXMgaXQgZWFzeSBmb3IgdGhlIHZpZXcgdG8K
KyAgLy8gcmVhY3QgdG8gc3BlY2lmaWMgY2hhbmdlcyBpbiB0aGUgc3RhdGUgb2YgeW91ciBtb2Rl
bHMuCisKKyAgLy8gQ3JlYXRpbmcgYSBCYWNrYm9uZS5WaWV3IGNyZWF0ZXMgaXRzIGluaXRpYWwg
ZWxlbWVudCBvdXRzaWRlIG9mIHRoZSBET00sCisgIC8vIGlmIGFuIGV4aXN0aW5nIGVsZW1lbnQg
aXMgbm90IHByb3ZpZGVkLi4uCisgIHZhciBWaWV3ID0gQmFja2JvbmUuVmlldyA9IGZ1bmN0aW9u
KG9wdGlvbnMpIHsKKyAgICB0aGlzLmNpZCA9IF8udW5pcXVlSWQoJ3ZpZXcnKTsKKyAgICBfLmV4
dGVuZCh0aGlzLCBfLnBpY2sob3B0aW9ucywgdmlld09wdGlvbnMpKTsKKyAgICB0aGlzLl9lbnN1
cmVFbGVtZW50KCk7CisgICAgdGhpcy5pbml0aWFsaXplLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7
CisgIH07CisKKyAgLy8gQ2FjaGVkIHJlZ2V4IHRvIHNwbGl0IGtleXMgZm9yIGBkZWxlZ2F0ZWAu
CisgIHZhciBkZWxlZ2F0ZUV2ZW50U3BsaXR0ZXIgPSAvXihcUyspXHMqKC4qKSQvOworCisgIC8v
IExpc3Qgb2YgdmlldyBvcHRpb25zIHRvIGJlIHNldCBhcyBwcm9wZXJ0aWVzLgorICB2YXIgdmll
d09wdGlvbnMgPSBbJ21vZGVsJywgJ2NvbGxlY3Rpb24nLCAnZWwnLCAnaWQnLCAnYXR0cmlidXRl
cycsICdjbGFzc05hbWUnLCAndGFnTmFtZScsICdldmVudHMnXTsKKworICAvLyBTZXQgdXAgYWxs
IGluaGVyaXRhYmxlICoqQmFja2JvbmUuVmlldyoqIHByb3BlcnRpZXMgYW5kIG1ldGhvZHMuCisg
IF8uZXh0ZW5kKFZpZXcucHJvdG90eXBlLCBFdmVudHMsIHsKKworICAgIC8vIFRoZSBkZWZhdWx0
IGB0YWdOYW1lYCBvZiBhIFZpZXcncyBlbGVtZW50IGlzIGAiZGl2ImAuCisgICAgdGFnTmFtZTog
J2RpdicsCisKKyAgICAvLyBqUXVlcnkgZGVsZWdhdGUgZm9yIGVsZW1lbnQgbG9va3VwLCBzY29w
ZWQgdG8gRE9NIGVsZW1lbnRzIHdpdGhpbiB0aGUKKyAgICAvLyBjdXJyZW50IHZpZXcuIFRoaXMg
c2hvdWxkIGJlIHByZWZlcnJlZCB0byBnbG9iYWwgbG9va3VwcyB3aGVyZSBwb3NzaWJsZS4KKyAg
ICAkOiBmdW5jdGlvbihzZWxlY3RvcikgeworICAgICAgcmV0dXJuIHRoaXMuJGVsLmZpbmQoc2Vs
ZWN0b3IpOworICAgIH0sCisKKyAgICAvLyBJbml0aWFsaXplIGlzIGFuIGVtcHR5IGZ1bmN0aW9u
IGJ5IGRlZmF1bHQuIE92ZXJyaWRlIGl0IHdpdGggeW91ciBvd24KKyAgICAvLyBpbml0aWFsaXph
dGlvbiBsb2dpYy4KKyAgICBpbml0aWFsaXplOiBmdW5jdGlvbigpe30sCisKKyAgICAvLyAqKnJl
bmRlcioqIGlzIHRoZSBjb3JlIGZ1bmN0aW9uIHRoYXQgeW91ciB2aWV3IHNob3VsZCBvdmVycmlk
ZSwgaW4gb3JkZXIKKyAgICAvLyB0byBwb3B1bGF0ZSBpdHMgZWxlbWVudCAoYHRoaXMuZWxgKSwg
d2l0aCB0aGUgYXBwcm9wcmlhdGUgSFRNTC4gVGhlCisgICAgLy8gY29udmVudGlvbiBpcyBmb3Ig
KipyZW5kZXIqKiB0byBhbHdheXMgcmV0dXJuIGB0aGlzYC4KKyAgICByZW5kZXI6IGZ1bmN0aW9u
KCkgeworICAgICAgcmV0dXJuIHRoaXM7CisgICAgfSwKKworICAgIC8vIFJlbW92ZSB0aGlzIHZp
ZXcgYnkgdGFraW5nIHRoZSBlbGVtZW50IG91dCBvZiB0aGUgRE9NLCBhbmQgcmVtb3ZpbmcgYW55
CisgICAgLy8gYXBwbGljYWJsZSBCYWNrYm9uZS5FdmVudHMgbGlzdGVuZXJzLgorICAgIHJlbW92
ZTogZnVuY3Rpb24oKSB7CisgICAgICB0aGlzLl9yZW1vdmVFbGVtZW50KCk7CisgICAgICB0aGlz
LnN0b3BMaXN0ZW5pbmcoKTsKKyAgICAgIHJldHVybiB0aGlzOworICAgIH0sCisKKyAgICAvLyBS
ZW1vdmUgdGhpcyB2aWV3J3MgZWxlbWVudCBmcm9tIHRoZSBkb2N1bWVudCBhbmQgYWxsIGV2ZW50
IGxpc3RlbmVycworICAgIC8vIGF0dGFjaGVkIHRvIGl0LiBFeHBvc2VkIGZvciBzdWJjbGFzc2Vz
IHVzaW5nIGFuIGFsdGVybmF0aXZlIERPTQorICAgIC8vIG1hbmlwdWxhdGlvbiBBUEkuCisgICAg
X3JlbW92ZUVsZW1lbnQ6IGZ1bmN0aW9uKCkgeworICAgICAgdGhpcy4kZWwucmVtb3ZlKCk7Cisg
ICAgfSwKKworICAgIC8vIENoYW5nZSB0aGUgdmlldydzIGVsZW1lbnQgKGB0aGlzLmVsYCBwcm9w
ZXJ0eSkgYW5kIHJlLWRlbGVnYXRlIHRoZQorICAgIC8vIHZpZXcncyBldmVudHMgb24gdGhlIG5l
dyBlbGVtZW50LgorICAgIHNldEVsZW1lbnQ6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKKyAgICAgIHRo
aXMudW5kZWxlZ2F0ZUV2ZW50cygpOworICAgICAgdGhpcy5fc2V0RWxlbWVudChlbGVtZW50KTsK
KyAgICAgIHRoaXMuZGVsZWdhdGVFdmVudHMoKTsKKyAgICAgIHJldHVybiB0aGlzOworICAgIH0s
CisKKyAgICAvLyBDcmVhdGVzIHRoZSBgdGhpcy5lbGAgYW5kIGB0aGlzLiRlbGAgcmVmZXJlbmNl
cyBmb3IgdGhpcyB2aWV3IHVzaW5nIHRoZQorICAgIC8vIGdpdmVuIGBlbGAuIGBlbGAgY2FuIGJl
IGEgQ1NTIHNlbGVjdG9yIG9yIGFuIEhUTUwgc3RyaW5nLCBhIGpRdWVyeQorICAgIC8vIGNvbnRl
eHQgb3IgYW4gZWxlbWVudC4gU3ViY2xhc3NlcyBjYW4gb3ZlcnJpZGUgdGhpcyB0byB1dGlsaXpl
IGFuCisgICAgLy8gYWx0ZXJuYXRpdmUgRE9NIG1hbmlwdWxhdGlvbiBBUEkgYW5kIGFyZSBvbmx5
IHJlcXVpcmVkIHRvIHNldCB0aGUKKyAgICAvLyBgdGhpcy5lbGAgcHJvcGVydHkuCisgICAgX3Nl
dEVsZW1lbnQ6IGZ1bmN0aW9uKGVsKSB7CisgICAgICB0aGlzLiRlbCA9IGVsIGluc3RhbmNlb2Yg
QmFja2JvbmUuJCA/IGVsIDogQmFja2JvbmUuJChlbCk7CisgICAgICB0aGlzLmVsID0gdGhpcy4k
ZWxbMF07CisgICAgfSwKKworICAgIC8vIFNldCBjYWxsYmFja3MsIHdoZXJlIGB0aGlzLmV2ZW50
c2AgaXMgYSBoYXNoIG9mCisgICAgLy8KKyAgICAvLyAqeyJldmVudCBzZWxlY3RvciI6ICJjYWxs
YmFjayJ9KgorICAgIC8vCisgICAgLy8gICAgIHsKKyAgICAvLyAgICAgICAnbW91c2Vkb3duIC50
aXRsZSc6ICAnZWRpdCcsCisgICAgLy8gICAgICAgJ2NsaWNrIC5idXR0b24nOiAgICAgJ3NhdmUn
LAorICAgIC8vICAgICAgICdjbGljayAub3Blbic6ICAgICAgIGZ1bmN0aW9uKGUpIHsgLi4uIH0K
KyAgICAvLyAgICAgfQorICAgIC8vCisgICAgLy8gcGFpcnMuIENhbGxiYWNrcyB3aWxsIGJlIGJv
dW5kIHRvIHRoZSB2aWV3LCB3aXRoIGB0aGlzYCBzZXQgcHJvcGVybHkuCisgICAgLy8gVXNlcyBl
dmVudCBkZWxlZ2F0aW9uIGZvciBlZmZpY2llbmN5LgorICAgIC8vIE9taXR0aW5nIHRoZSBzZWxl
Y3RvciBiaW5kcyB0aGUgZXZlbnQgdG8gYHRoaXMuZWxgLgorICAgIGRlbGVnYXRlRXZlbnRzOiBm
dW5jdGlvbihldmVudHMpIHsKKyAgICAgIGV2ZW50cyB8fCAoZXZlbnRzID0gXy5yZXN1bHQodGhp
cywgJ2V2ZW50cycpKTsKKyAgICAgIGlmICghZXZlbnRzKSByZXR1cm4gdGhpczsKKyAgICAgIHRo
aXMudW5kZWxlZ2F0ZUV2ZW50cygpOworICAgICAgZm9yICh2YXIga2V5IGluIGV2ZW50cykgewor
ICAgICAgICB2YXIgbWV0aG9kID0gZXZlbnRzW2tleV07CisgICAgICAgIGlmICghXy5pc0Z1bmN0
aW9uKG1ldGhvZCkpIG1ldGhvZCA9IHRoaXNbbWV0aG9kXTsKKyAgICAgICAgaWYgKCFtZXRob2Qp
IGNvbnRpbnVlOworICAgICAgICB2YXIgbWF0Y2ggPSBrZXkubWF0Y2goZGVsZWdhdGVFdmVudFNw
bGl0dGVyKTsKKyAgICAgICAgdGhpcy5kZWxlZ2F0ZShtYXRjaFsxXSwgbWF0Y2hbMl0sIF8uYmlu
ZChtZXRob2QsIHRoaXMpKTsKKyAgICAgIH0KKyAgICAgIHJldHVybiB0aGlzOworICAgIH0sCisK
KyAgICAvLyBBZGQgYSBzaW5nbGUgZXZlbnQgbGlzdGVuZXIgdG8gdGhlIHZpZXcncyBlbGVtZW50
IChvciBhIGNoaWxkIGVsZW1lbnQKKyAgICAvLyB1c2luZyBgc2VsZWN0b3JgKS4gVGhpcyBvbmx5
IHdvcmtzIGZvciBkZWxlZ2F0ZS1hYmxlIGV2ZW50czogbm90IGBmb2N1c2AsCisgICAgLy8gYGJs
dXJgLCBhbmQgbm90IGBjaGFuZ2VgLCBgc3VibWl0YCwgYW5kIGByZXNldGAgaW4gSW50ZXJuZXQg
RXhwbG9yZXIuCisgICAgZGVsZWdhdGU6IGZ1bmN0aW9uKGV2ZW50TmFtZSwgc2VsZWN0b3IsIGxp
c3RlbmVyKSB7CisgICAgICB0aGlzLiRlbC5vbihldmVudE5hbWUgKyAnLmRlbGVnYXRlRXZlbnRz
JyArIHRoaXMuY2lkLCBzZWxlY3RvciwgbGlzdGVuZXIpOworICAgICAgcmV0dXJuIHRoaXM7Cisg
ICAgfSwKKworICAgIC8vIENsZWFycyBhbGwgY2FsbGJhY2tzIHByZXZpb3VzbHkgYm91bmQgdG8g
dGhlIHZpZXcgYnkgYGRlbGVnYXRlRXZlbnRzYC4KKyAgICAvLyBZb3UgdXN1YWxseSBkb24ndCBu
ZWVkIHRvIHVzZSB0aGlzLCBidXQgbWF5IHdpc2ggdG8gaWYgeW91IGhhdmUgbXVsdGlwbGUKKyAg
ICAvLyBCYWNrYm9uZSB2aWV3cyBhdHRhY2hlZCB0byB0aGUgc2FtZSBET00gZWxlbWVudC4KKyAg
ICB1bmRlbGVnYXRlRXZlbnRzOiBmdW5jdGlvbigpIHsKKyAgICAgIGlmICh0aGlzLiRlbCkgdGhp
cy4kZWwub2ZmKCcuZGVsZWdhdGVFdmVudHMnICsgdGhpcy5jaWQpOworICAgICAgcmV0dXJuIHRo
aXM7CisgICAgfSwKKworICAgIC8vIEEgZmluZXItZ3JhaW5lZCBgdW5kZWxlZ2F0ZUV2ZW50c2Ag
Zm9yIHJlbW92aW5nIGEgc2luZ2xlIGRlbGVnYXRlZCBldmVudC4KKyAgICAvLyBgc2VsZWN0b3Jg
IGFuZCBgbGlzdGVuZXJgIGFyZSBib3RoIG9wdGlvbmFsLgorICAgIHVuZGVsZWdhdGU6IGZ1bmN0
aW9uKGV2ZW50TmFtZSwgc2VsZWN0b3IsIGxpc3RlbmVyKSB7CisgICAgICB0aGlzLiRlbC5vZmYo
ZXZlbnROYW1lICsgJy5kZWxlZ2F0ZUV2ZW50cycgKyB0aGlzLmNpZCwgc2VsZWN0b3IsIGxpc3Rl
bmVyKTsKKyAgICAgIHJldHVybiB0aGlzOworICAgIH0sCisKKyAgICAvLyBQcm9kdWNlcyBhIERP
TSBlbGVtZW50IHRvIGJlIGFzc2lnbmVkIHRvIHlvdXIgdmlldy4gRXhwb3NlZCBmb3IKKyAgICAv
LyBzdWJjbGFzc2VzIHVzaW5nIGFuIGFsdGVybmF0aXZlIERPTSBtYW5pcHVsYXRpb24gQVBJLgor
ICAgIF9jcmVhdGVFbGVtZW50OiBmdW5jdGlvbih0YWdOYW1lKSB7CisgICAgICByZXR1cm4gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCh0YWdOYW1lKTsKKyAgICB9LAorCisgICAgLy8gRW5zdXJlIHRo
YXQgdGhlIFZpZXcgaGFzIGEgRE9NIGVsZW1lbnQgdG8gcmVuZGVyIGludG8uCisgICAgLy8gSWYg
YHRoaXMuZWxgIGlzIGEgc3RyaW5nLCBwYXNzIGl0IHRocm91Z2ggYCQoKWAsIHRha2UgdGhlIGZp
cnN0CisgICAgLy8gbWF0Y2hpbmcgZWxlbWVudCwgYW5kIHJlLWFzc2lnbiBpdCB0byBgZWxgLiBP
dGhlcndpc2UsIGNyZWF0ZQorICAgIC8vIGFuIGVsZW1lbnQgZnJvbSB0aGUgYGlkYCwgYGNsYXNz
TmFtZWAgYW5kIGB0YWdOYW1lYCBwcm9wZXJ0aWVzLgorICAgIF9lbnN1cmVFbGVtZW50OiBmdW5j
dGlvbigpIHsKKyAgICAgIGlmICghdGhpcy5lbCkgeworICAgICAgICB2YXIgYXR0cnMgPSBfLmV4
dGVuZCh7fSwgXy5yZXN1bHQodGhpcywgJ2F0dHJpYnV0ZXMnKSk7CisgICAgICAgIGlmICh0aGlz
LmlkKSBhdHRycy5pZCA9IF8ucmVzdWx0KHRoaXMsICdpZCcpOworICAgICAgICBpZiAodGhpcy5j
bGFzc05hbWUpIGF0dHJzWydjbGFzcyddID0gXy5yZXN1bHQodGhpcywgJ2NsYXNzTmFtZScpOwor
ICAgICAgICB0aGlzLnNldEVsZW1lbnQodGhpcy5fY3JlYXRlRWxlbWVudChfLnJlc3VsdCh0aGlz
LCAndGFnTmFtZScpKSk7CisgICAgICAgIHRoaXMuX3NldEF0dHJpYnV0ZXMoYXR0cnMpOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgdGhpcy5zZXRFbGVtZW50KF8ucmVzdWx0KHRoaXMsICdlbCcp
KTsKKyAgICAgIH0KKyAgICB9LAorCisgICAgLy8gU2V0IGF0dHJpYnV0ZXMgZnJvbSBhIGhhc2gg
b24gdGhpcyB2aWV3J3MgZWxlbWVudC4gIEV4cG9zZWQgZm9yCisgICAgLy8gc3ViY2xhc3NlcyB1
c2luZyBhbiBhbHRlcm5hdGl2ZSBET00gbWFuaXB1bGF0aW9uIEFQSS4KKyAgICBfc2V0QXR0cmli
dXRlczogZnVuY3Rpb24oYXR0cmlidXRlcykgeworICAgICAgdGhpcy4kZWwuYXR0cihhdHRyaWJ1
dGVzKTsKKyAgICB9CisKKyAgfSk7CisKKyAgLy8gQmFja2JvbmUuc3luYworICAvLyAtLS0tLS0t
LS0tLS0tCisKKyAgLy8gT3ZlcnJpZGUgdGhpcyBmdW5jdGlvbiB0byBjaGFuZ2UgdGhlIG1hbm5l
ciBpbiB3aGljaCBCYWNrYm9uZSBwZXJzaXN0cworICAvLyBtb2RlbHMgdG8gdGhlIHNlcnZlci4g
WW91IHdpbGwgYmUgcGFzc2VkIHRoZSB0eXBlIG9mIHJlcXVlc3QsIGFuZCB0aGUKKyAgLy8gbW9k
ZWwgaW4gcXVlc3Rpb24uIEJ5IGRlZmF1bHQsIG1ha2VzIGEgUkVTVGZ1bCBBamF4IHJlcXVlc3QK
KyAgLy8gdG8gdGhlIG1vZGVsJ3MgYHVybCgpYC4gU29tZSBwb3NzaWJsZSBjdXN0b21pemF0aW9u
cyBjb3VsZCBiZToKKyAgLy8KKyAgLy8gKiBVc2UgYHNldFRpbWVvdXRgIHRvIGJhdGNoIHJhcGlk
LWZpcmUgdXBkYXRlcyBpbnRvIGEgc2luZ2xlIHJlcXVlc3QuCisgIC8vICogU2VuZCB1cCB0aGUg
bW9kZWxzIGFzIFhNTCBpbnN0ZWFkIG9mIEpTT04uCisgIC8vICogUGVyc2lzdCBtb2RlbHMgdmlh
IFdlYlNvY2tldHMgaW5zdGVhZCBvZiBBamF4LgorICAvLworICAvLyBUdXJuIG9uIGBCYWNrYm9u
ZS5lbXVsYXRlSFRUUGAgaW4gb3JkZXIgdG8gc2VuZCBgUFVUYCBhbmQgYERFTEVURWAgcmVxdWVz
dHMKKyAgLy8gYXMgYFBPU1RgLCB3aXRoIGEgYF9tZXRob2RgIHBhcmFtZXRlciBjb250YWluaW5n
IHRoZSB0cnVlIEhUVFAgbWV0aG9kLAorICAvLyBhcyB3ZWxsIGFzIGFsbCByZXF1ZXN0cyB3aXRo
IHRoZSBib2R5IGFzIGBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRgCisgIC8vIGlu
c3RlYWQgb2YgYGFwcGxpY2F0aW9uL2pzb25gIHdpdGggdGhlIG1vZGVsIGluIGEgcGFyYW0gbmFt
ZWQgYG1vZGVsYC4KKyAgLy8gVXNlZnVsIHdoZW4gaW50ZXJmYWNpbmcgd2l0aCBzZXJ2ZXItc2lk
ZSBsYW5ndWFnZXMgbGlrZSAqKlBIUCoqIHRoYXQgbWFrZQorICAvLyBpdCBkaWZmaWN1bHQgdG8g
cmVhZCB0aGUgYm9keSBvZiBgUFVUYCByZXF1ZXN0cy4KKyAgQmFja2JvbmUuc3luYyA9IGZ1bmN0
aW9uKG1ldGhvZCwgbW9kZWwsIG9wdGlvbnMpIHsKKyAgICB2YXIgdHlwZSA9IG1ldGhvZE1hcFtt
ZXRob2RdOworCisgICAgLy8gRGVmYXVsdCBvcHRpb25zLCB1bmxlc3Mgc3BlY2lmaWVkLgorICAg
IF8uZGVmYXVsdHMob3B0aW9ucyB8fCAob3B0aW9ucyA9IHt9KSwgeworICAgICAgZW11bGF0ZUhU
VFA6IEJhY2tib25lLmVtdWxhdGVIVFRQLAorICAgICAgZW11bGF0ZUpTT046IEJhY2tib25lLmVt
dWxhdGVKU09OCisgICAgfSk7CisKKyAgICAvLyBEZWZhdWx0IEpTT04tcmVxdWVzdCBvcHRpb25z
LgorICAgIHZhciBwYXJhbXMgPSB7dHlwZTogdHlwZSwgZGF0YVR5cGU6ICdqc29uJ307CisKKyAg
ICAvLyBFbnN1cmUgdGhhdCB3ZSBoYXZlIGEgVVJMLgorICAgIGlmICghb3B0aW9ucy51cmwpIHsK
KyAgICAgIHBhcmFtcy51cmwgPSBfLnJlc3VsdChtb2RlbCwgJ3VybCcpIHx8IHVybEVycm9yKCk7
CisgICAgfQorCisgICAgLy8gRW5zdXJlIHRoYXQgd2UgaGF2ZSB0aGUgYXBwcm9wcmlhdGUgcmVx
dWVzdCBkYXRhLgorICAgIGlmIChvcHRpb25zLmRhdGEgPT0gbnVsbCAmJiBtb2RlbCAmJiAobWV0
aG9kID09PSAnY3JlYXRlJyB8fCBtZXRob2QgPT09ICd1cGRhdGUnIHx8IG1ldGhvZCA9PT0gJ3Bh
dGNoJykpIHsKKyAgICAgIHBhcmFtcy5jb250ZW50VHlwZSA9ICdhcHBsaWNhdGlvbi9qc29uJzsK
KyAgICAgIHBhcmFtcy5kYXRhID0gSlNPTi5zdHJpbmdpZnkob3B0aW9ucy5hdHRycyB8fCBtb2Rl
bC50b0pTT04ob3B0aW9ucykpOworICAgIH0KKworICAgIC8vIEZvciBvbGRlciBzZXJ2ZXJzLCBl
bXVsYXRlIEpTT04gYnkgZW5jb2RpbmcgdGhlIHJlcXVlc3QgaW50byBhbiBIVE1MLWZvcm0uCisg
ICAgaWYgKG9wdGlvbnMuZW11bGF0ZUpTT04pIHsKKyAgICAgIHBhcmFtcy5jb250ZW50VHlwZSA9
ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnOworICAgICAgcGFyYW1zLmRhdGEg
PSBwYXJhbXMuZGF0YSA/IHttb2RlbDogcGFyYW1zLmRhdGF9IDoge307CisgICAgfQorCisgICAg
Ly8gRm9yIG9sZGVyIHNlcnZlcnMsIGVtdWxhdGUgSFRUUCBieSBtaW1pY2tpbmcgdGhlIEhUVFAg
bWV0aG9kIHdpdGggYF9tZXRob2RgCisgICAgLy8gQW5kIGFuIGBYLUhUVFAtTWV0aG9kLU92ZXJy
aWRlYCBoZWFkZXIuCisgICAgaWYgKG9wdGlvbnMuZW11bGF0ZUhUVFAgJiYgKHR5cGUgPT09ICdQ
VVQnIHx8IHR5cGUgPT09ICdERUxFVEUnIHx8IHR5cGUgPT09ICdQQVRDSCcpKSB7CisgICAgICBw
YXJhbXMudHlwZSA9ICdQT1NUJzsKKyAgICAgIGlmIChvcHRpb25zLmVtdWxhdGVKU09OKSBwYXJh
bXMuZGF0YS5fbWV0aG9kID0gdHlwZTsKKyAgICAgIHZhciBiZWZvcmVTZW5kID0gb3B0aW9ucy5i
ZWZvcmVTZW5kOworICAgICAgb3B0aW9ucy5iZWZvcmVTZW5kID0gZnVuY3Rpb24oeGhyKSB7Cisg
ICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKCdYLUhUVFAtTWV0aG9kLU92ZXJyaWRlJywgdHlw
ZSk7CisgICAgICAgIGlmIChiZWZvcmVTZW5kKSByZXR1cm4gYmVmb3JlU2VuZC5hcHBseSh0aGlz
LCBhcmd1bWVudHMpOworICAgICAgfTsKKyAgICB9CisKKyAgICAvLyBEb24ndCBwcm9jZXNzIGRh
dGEgb24gYSBub24tR0VUIHJlcXVlc3QuCisgICAgaWYgKHBhcmFtcy50eXBlICE9PSAnR0VUJyAm
JiAhb3B0aW9ucy5lbXVsYXRlSlNPTikgeworICAgICAgcGFyYW1zLnByb2Nlc3NEYXRhID0gZmFs
c2U7CisgICAgfQorCisgICAgLy8gUGFzcyBhbG9uZyBgdGV4dFN0YXR1c2AgYW5kIGBlcnJvclRo
cm93bmAgZnJvbSBqUXVlcnkuCisgICAgdmFyIGVycm9yID0gb3B0aW9ucy5lcnJvcjsKKyAgICBv
cHRpb25zLmVycm9yID0gZnVuY3Rpb24oeGhyLCB0ZXh0U3RhdHVzLCBlcnJvclRocm93bikgewor
ICAgICAgb3B0aW9ucy50ZXh0U3RhdHVzID0gdGV4dFN0YXR1czsKKyAgICAgIG9wdGlvbnMuZXJy
b3JUaHJvd24gPSBlcnJvclRocm93bjsKKyAgICAgIGlmIChlcnJvcikgZXJyb3IuY2FsbChvcHRp
b25zLmNvbnRleHQsIHhociwgdGV4dFN0YXR1cywgZXJyb3JUaHJvd24pOworICAgIH07CisKKyAg
ICAvLyBNYWtlIHRoZSByZXF1ZXN0LCBhbGxvd2luZyB0aGUgdXNlciB0byBvdmVycmlkZSBhbnkg
QWpheCBvcHRpb25zLgorICAgIHZhciB4aHIgPSBvcHRpb25zLnhociA9IEJhY2tib25lLmFqYXgo
Xy5leHRlbmQocGFyYW1zLCBvcHRpb25zKSk7CisgICAgbW9kZWwudHJpZ2dlcigncmVxdWVzdCcs
IG1vZGVsLCB4aHIsIG9wdGlvbnMpOworICAgIHJldHVybiB4aHI7CisgIH07CisKKyAgLy8gTWFw
IGZyb20gQ1JVRCB0byBIVFRQIGZvciBvdXIgZGVmYXVsdCBgQmFja2JvbmUuc3luY2AgaW1wbGVt
ZW50YXRpb24uCisgIHZhciBtZXRob2RNYXAgPSB7CisgICAgJ2NyZWF0ZSc6ICdQT1NUJywKKyAg
ICAndXBkYXRlJzogJ1BVVCcsCisgICAgJ3BhdGNoJzogJ1BBVENIJywKKyAgICAnZGVsZXRlJzog
J0RFTEVURScsCisgICAgJ3JlYWQnOiAnR0VUJworICB9OworCisgIC8vIFNldCB0aGUgZGVmYXVs
dCBpbXBsZW1lbnRhdGlvbiBvZiBgQmFja2JvbmUuYWpheGAgdG8gcHJveHkgdGhyb3VnaCB0byBg
JGAuCisgIC8vIE92ZXJyaWRlIHRoaXMgaWYgeW91J2QgbGlrZSB0byB1c2UgYSBkaWZmZXJlbnQg
bGlicmFyeS4KKyAgQmFja2JvbmUuYWpheCA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiBCYWNr
Ym9uZS4kLmFqYXguYXBwbHkoQmFja2JvbmUuJCwgYXJndW1lbnRzKTsKKyAgfTsKKworICAvLyBC
YWNrYm9uZS5Sb3V0ZXIKKyAgLy8gLS0tLS0tLS0tLS0tLS0tCisKKyAgLy8gUm91dGVycyBtYXAg
ZmF1eC1VUkxzIHRvIGFjdGlvbnMsIGFuZCBmaXJlIGV2ZW50cyB3aGVuIHJvdXRlcyBhcmUKKyAg
Ly8gbWF0Y2hlZC4gQ3JlYXRpbmcgYSBuZXcgb25lIHNldHMgaXRzIGByb3V0ZXNgIGhhc2gsIGlm
IG5vdCBzZXQgc3RhdGljYWxseS4KKyAgdmFyIFJvdXRlciA9IEJhY2tib25lLlJvdXRlciA9IGZ1
bmN0aW9uKG9wdGlvbnMpIHsKKyAgICBvcHRpb25zIHx8IChvcHRpb25zID0ge30pOworICAgIGlm
IChvcHRpb25zLnJvdXRlcykgdGhpcy5yb3V0ZXMgPSBvcHRpb25zLnJvdXRlczsKKyAgICB0aGlz
Ll9iaW5kUm91dGVzKCk7CisgICAgdGhpcy5pbml0aWFsaXplLmFwcGx5KHRoaXMsIGFyZ3VtZW50
cyk7CisgIH07CisKKyAgLy8gQ2FjaGVkIHJlZ3VsYXIgZXhwcmVzc2lvbnMgZm9yIG1hdGNoaW5n
IG5hbWVkIHBhcmFtIHBhcnRzIGFuZCBzcGxhdHRlZAorICAvLyBwYXJ0cyBvZiByb3V0ZSBzdHJp
bmdzLgorICB2YXIgb3B0aW9uYWxQYXJhbSA9IC9cKCguKj8pXCkvZzsKKyAgdmFyIG5hbWVkUGFy
YW0gICAgPSAvKFwoXD8pPzpcdysvZzsKKyAgdmFyIHNwbGF0UGFyYW0gICAgPSAvXCpcdysvZzsK
KyAgdmFyIGVzY2FwZVJlZ0V4cCAgPSAvW1wte31cW1xdKz8uLFxcXF4kfCNcc10vZzsKKworICAv
LyBTZXQgdXAgYWxsIGluaGVyaXRhYmxlICoqQmFja2JvbmUuUm91dGVyKiogcHJvcGVydGllcyBh
bmQgbWV0aG9kcy4KKyAgXy5leHRlbmQoUm91dGVyLnByb3RvdHlwZSwgRXZlbnRzLCB7CisKKyAg
ICAvLyBJbml0aWFsaXplIGlzIGFuIGVtcHR5IGZ1bmN0aW9uIGJ5IGRlZmF1bHQuIE92ZXJyaWRl
IGl0IHdpdGggeW91ciBvd24KKyAgICAvLyBpbml0aWFsaXphdGlvbiBsb2dpYy4KKyAgICBpbml0
aWFsaXplOiBmdW5jdGlvbigpe30sCisKKyAgICAvLyBNYW51YWxseSBiaW5kIGEgc2luZ2xlIG5h
bWVkIHJvdXRlIHRvIGEgY2FsbGJhY2suIEZvciBleGFtcGxlOgorICAgIC8vCisgICAgLy8gICAg
IHRoaXMucm91dGUoJ3NlYXJjaC86cXVlcnkvcDpudW0nLCAnc2VhcmNoJywgZnVuY3Rpb24ocXVl
cnksIG51bSkgeworICAgIC8vICAgICAgIC4uLgorICAgIC8vICAgICB9KTsKKyAgICAvLworICAg
IHJvdXRlOiBmdW5jdGlvbihyb3V0ZSwgbmFtZSwgY2FsbGJhY2spIHsKKyAgICAgIGlmICghXy5p
c1JlZ0V4cChyb3V0ZSkpIHJvdXRlID0gdGhpcy5fcm91dGVUb1JlZ0V4cChyb3V0ZSk7CisgICAg
ICBpZiAoXy5pc0Z1bmN0aW9uKG5hbWUpKSB7CisgICAgICAgIGNhbGxiYWNrID0gbmFtZTsKKyAg
ICAgICAgbmFtZSA9ICcnOworICAgICAgfQorICAgICAgaWYgKCFjYWxsYmFjaykgY2FsbGJhY2sg
PSB0aGlzW25hbWVdOworICAgICAgdmFyIHJvdXRlciA9IHRoaXM7CisgICAgICBCYWNrYm9uZS5o
aXN0b3J5LnJvdXRlKHJvdXRlLCBmdW5jdGlvbihmcmFnbWVudCkgeworICAgICAgICB2YXIgYXJn
cyA9IHJvdXRlci5fZXh0cmFjdFBhcmFtZXRlcnMocm91dGUsIGZyYWdtZW50KTsKKyAgICAgICAg
aWYgKHJvdXRlci5leGVjdXRlKGNhbGxiYWNrLCBhcmdzLCBuYW1lKSAhPT0gZmFsc2UpIHsKKyAg
ICAgICAgICByb3V0ZXIudHJpZ2dlci5hcHBseShyb3V0ZXIsIFsncm91dGU6JyArIG5hbWVdLmNv
bmNhdChhcmdzKSk7CisgICAgICAgICAgcm91dGVyLnRyaWdnZXIoJ3JvdXRlJywgbmFtZSwgYXJn
cyk7CisgICAgICAgICAgQmFja2JvbmUuaGlzdG9yeS50cmlnZ2VyKCdyb3V0ZScsIHJvdXRlciwg
bmFtZSwgYXJncyk7CisgICAgICAgIH0KKyAgICAgIH0pOworICAgICAgcmV0dXJuIHRoaXM7Cisg
ICAgfSwKKworICAgIC8vIEV4ZWN1dGUgYSByb3V0ZSBoYW5kbGVyIHdpdGggdGhlIHByb3ZpZGVk
IHBhcmFtZXRlcnMuICBUaGlzIGlzIGFuCisgICAgLy8gZXhjZWxsZW50IHBsYWNlIHRvIGRvIHBy
ZS1yb3V0ZSBzZXR1cCBvciBwb3N0LXJvdXRlIGNsZWFudXAuCisgICAgZXhlY3V0ZTogZnVuY3Rp
b24oY2FsbGJhY2ssIGFyZ3MsIG5hbWUpIHsKKyAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2su
YXBwbHkodGhpcywgYXJncyk7CisgICAgfSwKKworICAgIC8vIFNpbXBsZSBwcm94eSB0byBgQmFj
a2JvbmUuaGlzdG9yeWAgdG8gc2F2ZSBhIGZyYWdtZW50IGludG8gdGhlIGhpc3RvcnkuCisgICAg
bmF2aWdhdGU6IGZ1bmN0aW9uKGZyYWdtZW50LCBvcHRpb25zKSB7CisgICAgICBCYWNrYm9uZS5o
aXN0b3J5Lm5hdmlnYXRlKGZyYWdtZW50LCBvcHRpb25zKTsKKyAgICAgIHJldHVybiB0aGlzOwor
ICAgIH0sCisKKyAgICAvLyBCaW5kIGFsbCBkZWZpbmVkIHJvdXRlcyB0byBgQmFja2JvbmUuaGlz
dG9yeWAuIFdlIGhhdmUgdG8gcmV2ZXJzZSB0aGUKKyAgICAvLyBvcmRlciBvZiB0aGUgcm91dGVz
IGhlcmUgdG8gc3VwcG9ydCBiZWhhdmlvciB3aGVyZSB0aGUgbW9zdCBnZW5lcmFsCisgICAgLy8g
cm91dGVzIGNhbiBiZSBkZWZpbmVkIGF0IHRoZSBib3R0b20gb2YgdGhlIHJvdXRlIG1hcC4KKyAg
ICBfYmluZFJvdXRlczogZnVuY3Rpb24oKSB7CisgICAgICBpZiAoIXRoaXMucm91dGVzKSByZXR1
cm47CisgICAgICB0aGlzLnJvdXRlcyA9IF8ucmVzdWx0KHRoaXMsICdyb3V0ZXMnKTsKKyAgICAg
IHZhciByb3V0ZSwgcm91dGVzID0gXy5rZXlzKHRoaXMucm91dGVzKTsKKyAgICAgIHdoaWxlICgo
cm91dGUgPSByb3V0ZXMucG9wKCkpICE9IG51bGwpIHsKKyAgICAgICAgdGhpcy5yb3V0ZShyb3V0
ZSwgdGhpcy5yb3V0ZXNbcm91dGVdKTsKKyAgICAgIH0KKyAgICB9LAorCisgICAgLy8gQ29udmVy
dCBhIHJvdXRlIHN0cmluZyBpbnRvIGEgcmVndWxhciBleHByZXNzaW9uLCBzdWl0YWJsZSBmb3Ig
bWF0Y2hpbmcKKyAgICAvLyBhZ2FpbnN0IHRoZSBjdXJyZW50IGxvY2F0aW9uIGhhc2guCisgICAg
X3JvdXRlVG9SZWdFeHA6IGZ1bmN0aW9uKHJvdXRlKSB7CisgICAgICByb3V0ZSA9IHJvdXRlLnJl
cGxhY2UoZXNjYXBlUmVnRXhwLCAnXFwkJicpCisgICAgICAgICAgICAgICAgICAgLnJlcGxhY2Uo
b3B0aW9uYWxQYXJhbSwgJyg/OiQxKT8nKQorICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKG5h
bWVkUGFyYW0sIGZ1bmN0aW9uKG1hdGNoLCBvcHRpb25hbCkgeworICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIG9wdGlvbmFsID8gbWF0Y2ggOiAnKFteLz9dKyknOworICAgICAgICAgICAgICAg
ICAgIH0pCisgICAgICAgICAgICAgICAgICAgLnJlcGxhY2Uoc3BsYXRQYXJhbSwgJyhbXj9dKj8p
Jyk7CisgICAgICByZXR1cm4gbmV3IFJlZ0V4cCgnXicgKyByb3V0ZSArICcoPzpcXD8oW1xcc1xc
U10qKSk/JCcpOworICAgIH0sCisKKyAgICAvLyBHaXZlbiBhIHJvdXRlLCBhbmQgYSBVUkwgZnJh
Z21lbnQgdGhhdCBpdCBtYXRjaGVzLCByZXR1cm4gdGhlIGFycmF5IG9mCisgICAgLy8gZXh0cmFj
dGVkIGRlY29kZWQgcGFyYW1ldGVycy4gRW1wdHkgb3IgdW5tYXRjaGVkIHBhcmFtZXRlcnMgd2ls
bCBiZQorICAgIC8vIHRyZWF0ZWQgYXMgYG51bGxgIHRvIG5vcm1hbGl6ZSBjcm9zcy1icm93c2Vy
IGJlaGF2aW9yLgorICAgIF9leHRyYWN0UGFyYW1ldGVyczogZnVuY3Rpb24ocm91dGUsIGZyYWdt
ZW50KSB7CisgICAgICB2YXIgcGFyYW1zID0gcm91dGUuZXhlYyhmcmFnbWVudCkuc2xpY2UoMSk7
CisgICAgICByZXR1cm4gXy5tYXAocGFyYW1zLCBmdW5jdGlvbihwYXJhbSwgaSkgeworICAgICAg
ICAvLyBEb24ndCBkZWNvZGUgdGhlIHNlYXJjaCBwYXJhbXMuCisgICAgICAgIGlmIChpID09PSBw
YXJhbXMubGVuZ3RoIC0gMSkgcmV0dXJuIHBhcmFtIHx8IG51bGw7CisgICAgICAgIHJldHVybiBw
YXJhbSA/IGRlY29kZVVSSUNvbXBvbmVudChwYXJhbSkgOiBudWxsOworICAgICAgfSk7CisgICAg
fQorCisgIH0pOworCisgIC8vIEJhY2tib25lLkhpc3RvcnkKKyAgLy8gLS0tLS0tLS0tLS0tLS0t
LQorCisgIC8vIEhhbmRsZXMgY3Jvc3MtYnJvd3NlciBoaXN0b3J5IG1hbmFnZW1lbnQsIGJhc2Vk
IG9uIGVpdGhlcgorICAvLyBbcHVzaFN0YXRlXShodHRwOi8vZGl2ZWludG9odG1sNS5pbmZvL2hp
c3RvcnkuaHRtbCkgYW5kIHJlYWwgVVJMcywgb3IKKyAgLy8gW29uaGFzaGNoYW5nZV0oaHR0cHM6
Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9ET00vd2luZG93Lm9uaGFzaGNoYW5n
ZSkKKyAgLy8gYW5kIFVSTCBmcmFnbWVudHMuIElmIHRoZSBicm93c2VyIHN1cHBvcnRzIG5laXRo
ZXIgKG9sZCBJRSwgbmF0Y2gpLAorICAvLyBmYWxscyBiYWNrIHRvIHBvbGxpbmcuCisgIHZhciBI
aXN0b3J5ID0gQmFja2JvbmUuSGlzdG9yeSA9IGZ1bmN0aW9uKCkgeworICAgIHRoaXMuaGFuZGxl
cnMgPSBbXTsKKyAgICB0aGlzLmNoZWNrVXJsID0gXy5iaW5kKHRoaXMuY2hlY2tVcmwsIHRoaXMp
OworCisgICAgLy8gRW5zdXJlIHRoYXQgYEhpc3RvcnlgIGNhbiBiZSB1c2VkIG91dHNpZGUgb2Yg
dGhlIGJyb3dzZXIuCisgICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7Cisg
ICAgICB0aGlzLmxvY2F0aW9uID0gd2luZG93LmxvY2F0aW9uOworICAgICAgdGhpcy5oaXN0b3J5
ID0gd2luZG93Lmhpc3Rvcnk7CisgICAgfQorICB9OworCisgIC8vIENhY2hlZCByZWdleCBmb3Ig
c3RyaXBwaW5nIGEgbGVhZGluZyBoYXNoL3NsYXNoIGFuZCB0cmFpbGluZyBzcGFjZS4KKyAgdmFy
IHJvdXRlU3RyaXBwZXIgPSAvXlsjXC9dfFxzKyQvZzsKKworICAvLyBDYWNoZWQgcmVnZXggZm9y
IHN0cmlwcGluZyBsZWFkaW5nIGFuZCB0cmFpbGluZyBzbGFzaGVzLgorICB2YXIgcm9vdFN0cmlw
cGVyID0gL15cLyt8XC8rJC9nOworCisgIC8vIENhY2hlZCByZWdleCBmb3Igc3RyaXBwaW5nIHVy
bHMgb2YgaGFzaC4KKyAgdmFyIHBhdGhTdHJpcHBlciA9IC8jLiokLzsKKworICAvLyBIYXMgdGhl
IGhpc3RvcnkgaGFuZGxpbmcgYWxyZWFkeSBiZWVuIHN0YXJ0ZWQ/CisgIEhpc3Rvcnkuc3RhcnRl
ZCA9IGZhbHNlOworCisgIC8vIFNldCB1cCBhbGwgaW5oZXJpdGFibGUgKipCYWNrYm9uZS5IaXN0
b3J5KiogcHJvcGVydGllcyBhbmQgbWV0aG9kcy4KKyAgXy5leHRlbmQoSGlzdG9yeS5wcm90b3R5
cGUsIEV2ZW50cywgeworCisgICAgLy8gVGhlIGRlZmF1bHQgaW50ZXJ2YWwgdG8gcG9sbCBmb3Ig
aGFzaCBjaGFuZ2VzLCBpZiBuZWNlc3NhcnksIGlzCisgICAgLy8gdHdlbnR5IHRpbWVzIGEgc2Vj
b25kLgorICAgIGludGVydmFsOiA1MCwKKworICAgIC8vIEFyZSB3ZSBhdCB0aGUgYXBwIHJvb3Q/
CisgICAgYXRSb290OiBmdW5jdGlvbigpIHsKKyAgICAgIHZhciBwYXRoID0gdGhpcy5sb2NhdGlv
bi5wYXRobmFtZS5yZXBsYWNlKC9bXlwvXSQvLCAnJCYvJyk7CisgICAgICByZXR1cm4gcGF0aCA9
PT0gdGhpcy5yb290ICYmICF0aGlzLmdldFNlYXJjaCgpOworICAgIH0sCisKKyAgICAvLyBEb2Vz
IHRoZSBwYXRobmFtZSBtYXRjaCB0aGUgcm9vdD8KKyAgICBtYXRjaFJvb3Q6IGZ1bmN0aW9uKCkg
eworICAgICAgdmFyIHBhdGggPSB0aGlzLmRlY29kZUZyYWdtZW50KHRoaXMubG9jYXRpb24ucGF0
aG5hbWUpOworICAgICAgdmFyIHJvb3RQYXRoID0gcGF0aC5zbGljZSgwLCB0aGlzLnJvb3QubGVu
Z3RoIC0gMSkgKyAnLyc7CisgICAgICByZXR1cm4gcm9vdFBhdGggPT09IHRoaXMucm9vdDsKKyAg
ICB9LAorCisgICAgLy8gVW5pY29kZSBjaGFyYWN0ZXJzIGluIGBsb2NhdGlvbi5wYXRobmFtZWAg
YXJlIHBlcmNlbnQgZW5jb2RlZCBzbyB0aGV5J3JlCisgICAgLy8gZGVjb2RlZCBmb3IgY29tcGFy
aXNvbi4gYCUyNWAgc2hvdWxkIG5vdCBiZSBkZWNvZGVkIHNpbmNlIGl0IG1heSBiZSBwYXJ0Cisg
ICAgLy8gb2YgYW4gZW5jb2RlZCBwYXJhbWV0ZXIuCisgICAgZGVjb2RlRnJhZ21lbnQ6IGZ1bmN0
aW9uKGZyYWdtZW50KSB7CisgICAgICByZXR1cm4gZGVjb2RlVVJJKGZyYWdtZW50LnJlcGxhY2Uo
LyUyNS9nLCAnJTI1MjUnKSk7CisgICAgfSwKKworICAgIC8vIEluIElFNiwgdGhlIGhhc2ggZnJh
Z21lbnQgYW5kIHNlYXJjaCBwYXJhbXMgYXJlIGluY29ycmVjdCBpZiB0aGUKKyAgICAvLyBmcmFn
bWVudCBjb250YWlucyBgP2AuCisgICAgZ2V0U2VhcmNoOiBmdW5jdGlvbigpIHsKKyAgICAgIHZh
ciBtYXRjaCA9IHRoaXMubG9jYXRpb24uaHJlZi5yZXBsYWNlKC8jLiovLCAnJykubWF0Y2goL1w/
LisvKTsKKyAgICAgIHJldHVybiBtYXRjaCA/IG1hdGNoWzBdIDogJyc7CisgICAgfSwKKworICAg
IC8vIEdldHMgdGhlIHRydWUgaGFzaCB2YWx1ZS4gQ2Fubm90IHVzZSBsb2NhdGlvbi5oYXNoIGRp
cmVjdGx5IGR1ZSB0byBidWcKKyAgICAvLyBpbiBGaXJlZm94IHdoZXJlIGxvY2F0aW9uLmhhc2gg
d2lsbCBhbHdheXMgYmUgZGVjb2RlZC4KKyAgICBnZXRIYXNoOiBmdW5jdGlvbih3aW5kb3cpIHsK
KyAgICAgIHZhciBtYXRjaCA9ICh3aW5kb3cgfHwgdGhpcykubG9jYXRpb24uaHJlZi5tYXRjaCgv
IyguKikkLyk7CisgICAgICByZXR1cm4gbWF0Y2ggPyBtYXRjaFsxXSA6ICcnOworICAgIH0sCisK
KyAgICAvLyBHZXQgdGhlIHBhdGhuYW1lIGFuZCBzZWFyY2ggcGFyYW1zLCB3aXRob3V0IHRoZSBy
b290LgorICAgIGdldFBhdGg6IGZ1bmN0aW9uKCkgeworICAgICAgdmFyIHBhdGggPSB0aGlzLmRl
Y29kZUZyYWdtZW50KAorICAgICAgICB0aGlzLmxvY2F0aW9uLnBhdGhuYW1lICsgdGhpcy5nZXRT
ZWFyY2goKQorICAgICAgKS5zbGljZSh0aGlzLnJvb3QubGVuZ3RoIC0gMSk7CisgICAgICByZXR1
cm4gcGF0aC5jaGFyQXQoMCkgPT09ICcvJyA/IHBhdGguc2xpY2UoMSkgOiBwYXRoOworICAgIH0s
CisKKyAgICAvLyBHZXQgdGhlIGNyb3NzLWJyb3dzZXIgbm9ybWFsaXplZCBVUkwgZnJhZ21lbnQg
ZnJvbSB0aGUgcGF0aCBvciBoYXNoLgorICAgIGdldEZyYWdtZW50OiBmdW5jdGlvbihmcmFnbWVu
dCkgeworICAgICAgaWYgKGZyYWdtZW50ID09IG51bGwpIHsKKyAgICAgICAgaWYgKHRoaXMuX3Vz
ZVB1c2hTdGF0ZSB8fCAhdGhpcy5fd2FudHNIYXNoQ2hhbmdlKSB7CisgICAgICAgICAgZnJhZ21l
bnQgPSB0aGlzLmdldFBhdGgoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBmcmFnbWVu
dCA9IHRoaXMuZ2V0SGFzaCgpOworICAgICAgICB9CisgICAgICB9CisgICAgICByZXR1cm4gZnJh
Z21lbnQucmVwbGFjZShyb3V0ZVN0cmlwcGVyLCAnJyk7CisgICAgfSwKKworICAgIC8vIFN0YXJ0
IHRoZSBoYXNoIGNoYW5nZSBoYW5kbGluZywgcmV0dXJuaW5nIGB0cnVlYCBpZiB0aGUgY3VycmVu
dCBVUkwgbWF0Y2hlcworICAgIC8vIGFuIGV4aXN0aW5nIHJvdXRlLCBhbmQgYGZhbHNlYCBvdGhl
cndpc2UuCisgICAgc3RhcnQ6IGZ1bmN0aW9uKG9wdGlvbnMpIHsKKyAgICAgIGlmIChIaXN0b3J5
LnN0YXJ0ZWQpIHRocm93IG5ldyBFcnJvcignQmFja2JvbmUuaGlzdG9yeSBoYXMgYWxyZWFkeSBi
ZWVuIHN0YXJ0ZWQnKTsKKyAgICAgIEhpc3Rvcnkuc3RhcnRlZCA9IHRydWU7CisKKyAgICAgIC8v
IEZpZ3VyZSBvdXQgdGhlIGluaXRpYWwgY29uZmlndXJhdGlvbi4gRG8gd2UgbmVlZCBhbiBpZnJh
bWU/CisgICAgICAvLyBJcyBwdXNoU3RhdGUgZGVzaXJlZCAuLi4gaXMgaXQgYXZhaWxhYmxlPwor
ICAgICAgdGhpcy5vcHRpb25zICAgICAgICAgID0gXy5leHRlbmQoe3Jvb3Q6ICcvJ30sIHRoaXMu
b3B0aW9ucywgb3B0aW9ucyk7CisgICAgICB0aGlzLnJvb3QgICAgICAgICAgICAgPSB0aGlzLm9w
dGlvbnMucm9vdDsKKyAgICAgIHRoaXMuX3dhbnRzSGFzaENoYW5nZSA9IHRoaXMub3B0aW9ucy5o
YXNoQ2hhbmdlICE9PSBmYWxzZTsKKyAgICAgIHRoaXMuX2hhc0hhc2hDaGFuZ2UgICA9ICdvbmhh
c2hjaGFuZ2UnIGluIHdpbmRvdyAmJiAoZG9jdW1lbnQuZG9jdW1lbnRNb2RlID09PSB2b2lkIDAg
fHwgZG9jdW1lbnQuZG9jdW1lbnRNb2RlID4gNyk7CisgICAgICB0aGlzLl91c2VIYXNoQ2hhbmdl
ICAgPSB0aGlzLl93YW50c0hhc2hDaGFuZ2UgJiYgdGhpcy5faGFzSGFzaENoYW5nZTsKKyAgICAg
IHRoaXMuX3dhbnRzUHVzaFN0YXRlICA9ICEhdGhpcy5vcHRpb25zLnB1c2hTdGF0ZTsKKyAgICAg
IHRoaXMuX2hhc1B1c2hTdGF0ZSAgICA9ICEhKHRoaXMuaGlzdG9yeSAmJiB0aGlzLmhpc3Rvcnku
cHVzaFN0YXRlKTsKKyAgICAgIHRoaXMuX3VzZVB1c2hTdGF0ZSAgICA9IHRoaXMuX3dhbnRzUHVz
aFN0YXRlICYmIHRoaXMuX2hhc1B1c2hTdGF0ZTsKKyAgICAgIHRoaXMuZnJhZ21lbnQgICAgICAg
ICA9IHRoaXMuZ2V0RnJhZ21lbnQoKTsKKworICAgICAgLy8gTm9ybWFsaXplIHJvb3QgdG8gYWx3
YXlzIGluY2x1ZGUgYSBsZWFkaW5nIGFuZCB0cmFpbGluZyBzbGFzaC4KKyAgICAgIHRoaXMucm9v
dCA9ICgnLycgKyB0aGlzLnJvb3QgKyAnLycpLnJlcGxhY2Uocm9vdFN0cmlwcGVyLCAnLycpOwor
CisgICAgICAvLyBUcmFuc2l0aW9uIGZyb20gaGFzaENoYW5nZSB0byBwdXNoU3RhdGUgb3Igdmlj
ZSB2ZXJzYSBpZiBib3RoIGFyZQorICAgICAgLy8gcmVxdWVzdGVkLgorICAgICAgaWYgKHRoaXMu
X3dhbnRzSGFzaENoYW5nZSAmJiB0aGlzLl93YW50c1B1c2hTdGF0ZSkgeworCisgICAgICAgIC8v
IElmIHdlJ3ZlIHN0YXJ0ZWQgb2ZmIHdpdGggYSByb3V0ZSBmcm9tIGEgYHB1c2hTdGF0ZWAtZW5h
YmxlZAorICAgICAgICAvLyBicm93c2VyLCBidXQgd2UncmUgY3VycmVudGx5IGluIGEgYnJvd3Nl
ciB0aGF0IGRvZXNuJ3Qgc3VwcG9ydCBpdC4uLgorICAgICAgICBpZiAoIXRoaXMuX2hhc1B1c2hT
dGF0ZSAmJiAhdGhpcy5hdFJvb3QoKSkgeworICAgICAgICAgIHZhciByb290UGF0aCA9IHRoaXMu
cm9vdC5zbGljZSgwLCAtMSkgfHwgJy8nOworICAgICAgICAgIHRoaXMubG9jYXRpb24ucmVwbGFj
ZShyb290UGF0aCArICcjJyArIHRoaXMuZ2V0UGF0aCgpKTsKKyAgICAgICAgICAvLyBSZXR1cm4g
aW1tZWRpYXRlbHkgYXMgYnJvd3NlciB3aWxsIGRvIHJlZGlyZWN0IHRvIG5ldyB1cmwKKyAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAvLyBPciBpZiB3ZSd2ZSBzdGFydGVkIG91dCB3
aXRoIGEgaGFzaC1iYXNlZCByb3V0ZSwgYnV0IHdlJ3JlIGN1cnJlbnRseQorICAgICAgICAvLyBp
biBhIGJyb3dzZXIgd2hlcmUgaXQgY291bGQgYmUgYHB1c2hTdGF0ZWAtYmFzZWQgaW5zdGVhZC4u
LgorICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2hhc1B1c2hTdGF0ZSAmJiB0aGlzLmF0Um9vdCgp
KSB7CisgICAgICAgICAgdGhpcy5uYXZpZ2F0ZSh0aGlzLmdldEhhc2goKSwge3JlcGxhY2U6IHRy
dWV9KTsKKyAgICAgICAgfQorCisgICAgICB9CisKKyAgICAgIC8vIFByb3h5IGFuIGlmcmFtZSB0
byBoYW5kbGUgbG9jYXRpb24gZXZlbnRzIGlmIHRoZSBicm93c2VyIGRvZXNuJ3QKKyAgICAgIC8v
IHN1cHBvcnQgdGhlIGBoYXNoY2hhbmdlYCBldmVudCwgSFRNTDUgaGlzdG9yeSwgb3IgdGhlIHVz
ZXIgd2FudHMKKyAgICAgIC8vIGBoYXNoQ2hhbmdlYCBidXQgbm90IGBwdXNoU3RhdGVgLgorICAg
ICAgaWYgKCF0aGlzLl9oYXNIYXNoQ2hhbmdlICYmIHRoaXMuX3dhbnRzSGFzaENoYW5nZSAmJiAh
dGhpcy5fdXNlUHVzaFN0YXRlKSB7CisgICAgICAgIHRoaXMuaWZyYW1lID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnaWZyYW1lJyk7CisgICAgICAgIHRoaXMuaWZyYW1lLnNyYyA9ICdqYXZhc2Ny
aXB0OjAnOworICAgICAgICB0aGlzLmlmcmFtZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOworICAg
ICAgICB0aGlzLmlmcmFtZS50YWJJbmRleCA9IC0xOworICAgICAgICB2YXIgYm9keSA9IGRvY3Vt
ZW50LmJvZHk7CisgICAgICAgIC8vIFVzaW5nIGBhcHBlbmRDaGlsZGAgd2lsbCB0aHJvdyBvbiBJ
RSA8IDkgaWYgdGhlIGRvY3VtZW50IGlzIG5vdCByZWFkeS4KKyAgICAgICAgdmFyIGlXaW5kb3cg
PSBib2R5Lmluc2VydEJlZm9yZSh0aGlzLmlmcmFtZSwgYm9keS5maXJzdENoaWxkKS5jb250ZW50
V2luZG93OworICAgICAgICBpV2luZG93LmRvY3VtZW50Lm9wZW4oKTsKKyAgICAgICAgaVdpbmRv
dy5kb2N1bWVudC5jbG9zZSgpOworICAgICAgICBpV2luZG93LmxvY2F0aW9uLmhhc2ggPSAnIycg
KyB0aGlzLmZyYWdtZW50OworICAgICAgfQorCisgICAgICAvLyBBZGQgYSBjcm9zcy1wbGF0Zm9y
bSBgYWRkRXZlbnRMaXN0ZW5lcmAgc2hpbSBmb3Igb2xkZXIgYnJvd3NlcnMuCisgICAgICB2YXIg
YWRkRXZlbnRMaXN0ZW5lciA9IHdpbmRvdy5hZGRFdmVudExpc3RlbmVyIHx8IGZ1bmN0aW9uKGV2
ZW50TmFtZSwgbGlzdGVuZXIpIHsKKyAgICAgICAgcmV0dXJuIGF0dGFjaEV2ZW50KCdvbicgKyBl
dmVudE5hbWUsIGxpc3RlbmVyKTsKKyAgICAgIH07CisKKyAgICAgIC8vIERlcGVuZGluZyBvbiB3
aGV0aGVyIHdlJ3JlIHVzaW5nIHB1c2hTdGF0ZSBvciBoYXNoZXMsIGFuZCB3aGV0aGVyCisgICAg
ICAvLyAnb25oYXNoY2hhbmdlJyBpcyBzdXBwb3J0ZWQsIGRldGVybWluZSBob3cgd2UgY2hlY2sg
dGhlIFVSTCBzdGF0ZS4KKyAgICAgIGlmICh0aGlzLl91c2VQdXNoU3RhdGUpIHsKKyAgICAgICAg
YWRkRXZlbnRMaXN0ZW5lcigncG9wc3RhdGUnLCB0aGlzLmNoZWNrVXJsLCBmYWxzZSk7CisgICAg
ICB9IGVsc2UgaWYgKHRoaXMuX3VzZUhhc2hDaGFuZ2UgJiYgIXRoaXMuaWZyYW1lKSB7CisgICAg
ICAgIGFkZEV2ZW50TGlzdGVuZXIoJ2hhc2hjaGFuZ2UnLCB0aGlzLmNoZWNrVXJsLCBmYWxzZSk7
CisgICAgICB9IGVsc2UgaWYgKHRoaXMuX3dhbnRzSGFzaENoYW5nZSkgeworICAgICAgICB0aGlz
Ll9jaGVja1VybEludGVydmFsID0gc2V0SW50ZXJ2YWwodGhpcy5jaGVja1VybCwgdGhpcy5pbnRl
cnZhbCk7CisgICAgICB9CisKKyAgICAgIGlmICghdGhpcy5vcHRpb25zLnNpbGVudCkgcmV0dXJu
IHRoaXMubG9hZFVybCgpOworICAgIH0sCisKKyAgICAvLyBEaXNhYmxlIEJhY2tib25lLmhpc3Rv
cnksIHBlcmhhcHMgdGVtcG9yYXJpbHkuIE5vdCB1c2VmdWwgaW4gYSByZWFsIGFwcCwKKyAgICAv
LyBidXQgcG9zc2libHkgdXNlZnVsIGZvciB1bml0IHRlc3RpbmcgUm91dGVycy4KKyAgICBzdG9w
OiBmdW5jdGlvbigpIHsKKyAgICAgIC8vIEFkZCBhIGNyb3NzLXBsYXRmb3JtIGByZW1vdmVFdmVu
dExpc3RlbmVyYCBzaGltIGZvciBvbGRlciBicm93c2Vycy4KKyAgICAgIHZhciByZW1vdmVFdmVu
dExpc3RlbmVyID0gd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIgfHwgZnVuY3Rpb24oZXZlbnRO
YW1lLCBsaXN0ZW5lcikgeworICAgICAgICByZXR1cm4gZGV0YWNoRXZlbnQoJ29uJyArIGV2ZW50
TmFtZSwgbGlzdGVuZXIpOworICAgICAgfTsKKworICAgICAgLy8gUmVtb3ZlIHdpbmRvdyBsaXN0
ZW5lcnMuCisgICAgICBpZiAodGhpcy5fdXNlUHVzaFN0YXRlKSB7CisgICAgICAgIHJlbW92ZUV2
ZW50TGlzdGVuZXIoJ3BvcHN0YXRlJywgdGhpcy5jaGVja1VybCwgZmFsc2UpOworICAgICAgfSBl
bHNlIGlmICh0aGlzLl91c2VIYXNoQ2hhbmdlICYmICF0aGlzLmlmcmFtZSkgeworICAgICAgICBy
ZW1vdmVFdmVudExpc3RlbmVyKCdoYXNoY2hhbmdlJywgdGhpcy5jaGVja1VybCwgZmFsc2UpOwor
ICAgICAgfQorCisgICAgICAvLyBDbGVhbiB1cCB0aGUgaWZyYW1lIGlmIG5lY2Vzc2FyeS4KKyAg
ICAgIGlmICh0aGlzLmlmcmFtZSkgeworICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxk
KHRoaXMuaWZyYW1lKTsKKyAgICAgICAgdGhpcy5pZnJhbWUgPSBudWxsOworICAgICAgfQorCisg
ICAgICAvLyBTb21lIGVudmlyb25tZW50cyB3aWxsIHRocm93IHdoZW4gY2xlYXJpbmcgYW4gdW5k
ZWZpbmVkIGludGVydmFsLgorICAgICAgaWYgKHRoaXMuX2NoZWNrVXJsSW50ZXJ2YWwpIGNsZWFy
SW50ZXJ2YWwodGhpcy5fY2hlY2tVcmxJbnRlcnZhbCk7CisgICAgICBIaXN0b3J5LnN0YXJ0ZWQg
PSBmYWxzZTsKKyAgICB9LAorCisgICAgLy8gQWRkIGEgcm91dGUgdG8gYmUgdGVzdGVkIHdoZW4g
dGhlIGZyYWdtZW50IGNoYW5nZXMuIFJvdXRlcyBhZGRlZCBsYXRlcgorICAgIC8vIG1heSBvdmVy
cmlkZSBwcmV2aW91cyByb3V0ZXMuCisgICAgcm91dGU6IGZ1bmN0aW9uKHJvdXRlLCBjYWxsYmFj
aykgeworICAgICAgdGhpcy5oYW5kbGVycy51bnNoaWZ0KHtyb3V0ZTogcm91dGUsIGNhbGxiYWNr
OiBjYWxsYmFja30pOworICAgIH0sCisKKyAgICAvLyBDaGVja3MgdGhlIGN1cnJlbnQgVVJMIHRv
IHNlZSBpZiBpdCBoYXMgY2hhbmdlZCwgYW5kIGlmIGl0IGhhcywKKyAgICAvLyBjYWxscyBgbG9h
ZFVybGAsIG5vcm1hbGl6aW5nIGFjcm9zcyB0aGUgaGlkZGVuIGlmcmFtZS4KKyAgICBjaGVja1Vy
bDogZnVuY3Rpb24oZSkgeworICAgICAgdmFyIGN1cnJlbnQgPSB0aGlzLmdldEZyYWdtZW50KCk7
CisKKyAgICAgIC8vIElmIHRoZSB1c2VyIHByZXNzZWQgdGhlIGJhY2sgYnV0dG9uLCB0aGUgaWZy
YW1lJ3MgaGFzaCB3aWxsIGhhdmUKKyAgICAgIC8vIGNoYW5nZWQgYW5kIHdlIHNob3VsZCB1c2Ug
dGhhdCBmb3IgY29tcGFyaXNvbi4KKyAgICAgIGlmIChjdXJyZW50ID09PSB0aGlzLmZyYWdtZW50
ICYmIHRoaXMuaWZyYW1lKSB7CisgICAgICAgIGN1cnJlbnQgPSB0aGlzLmdldEhhc2godGhpcy5p
ZnJhbWUuY29udGVudFdpbmRvdyk7CisgICAgICB9CisKKyAgICAgIGlmIChjdXJyZW50ID09PSB0
aGlzLmZyYWdtZW50KSByZXR1cm4gZmFsc2U7CisgICAgICBpZiAodGhpcy5pZnJhbWUpIHRoaXMu
bmF2aWdhdGUoY3VycmVudCk7CisgICAgICB0aGlzLmxvYWRVcmwoKTsKKyAgICB9LAorCisgICAg
Ly8gQXR0ZW1wdCB0byBsb2FkIHRoZSBjdXJyZW50IFVSTCBmcmFnbWVudC4gSWYgYSByb3V0ZSBz
dWNjZWVkcyB3aXRoIGEKKyAgICAvLyBtYXRjaCwgcmV0dXJucyBgdHJ1ZWAuIElmIG5vIGRlZmlu
ZWQgcm91dGVzIG1hdGNoZXMgdGhlIGZyYWdtZW50LAorICAgIC8vIHJldHVybnMgYGZhbHNlYC4K
KyAgICBsb2FkVXJsOiBmdW5jdGlvbihmcmFnbWVudCkgeworICAgICAgLy8gSWYgdGhlIHJvb3Qg
ZG9lc24ndCBtYXRjaCwgbm8gcm91dGVzIGNhbiBtYXRjaCBlaXRoZXIuCisgICAgICBpZiAoIXRo
aXMubWF0Y2hSb290KCkpIHJldHVybiBmYWxzZTsKKyAgICAgIGZyYWdtZW50ID0gdGhpcy5mcmFn
bWVudCA9IHRoaXMuZ2V0RnJhZ21lbnQoZnJhZ21lbnQpOworICAgICAgcmV0dXJuIF8uc29tZSh0
aGlzLmhhbmRsZXJzLCBmdW5jdGlvbihoYW5kbGVyKSB7CisgICAgICAgIGlmIChoYW5kbGVyLnJv
dXRlLnRlc3QoZnJhZ21lbnQpKSB7CisgICAgICAgICAgaGFuZGxlci5jYWxsYmFjayhmcmFnbWVu
dCk7CisgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgIH0pOworICAgIH0s
CisKKyAgICAvLyBTYXZlIGEgZnJhZ21lbnQgaW50byB0aGUgaGFzaCBoaXN0b3J5LCBvciByZXBs
YWNlIHRoZSBVUkwgc3RhdGUgaWYgdGhlCisgICAgLy8gJ3JlcGxhY2UnIG9wdGlvbiBpcyBwYXNz
ZWQuIFlvdSBhcmUgcmVzcG9uc2libGUgZm9yIHByb3Blcmx5IFVSTC1lbmNvZGluZworICAgIC8v
IHRoZSBmcmFnbWVudCBpbiBhZHZhbmNlLgorICAgIC8vCisgICAgLy8gVGhlIG9wdGlvbnMgb2Jq
ZWN0IGNhbiBjb250YWluIGB0cmlnZ2VyOiB0cnVlYCBpZiB5b3Ugd2lzaCB0byBoYXZlIHRoZQor
ICAgIC8vIHJvdXRlIGNhbGxiYWNrIGJlIGZpcmVkIChub3QgdXN1YWxseSBkZXNpcmFibGUpLCBv
ciBgcmVwbGFjZTogdHJ1ZWAsIGlmCisgICAgLy8geW91IHdpc2ggdG8gbW9kaWZ5IHRoZSBjdXJy
ZW50IFVSTCB3aXRob3V0IGFkZGluZyBhbiBlbnRyeSB0byB0aGUgaGlzdG9yeS4KKyAgICBuYXZp
Z2F0ZTogZnVuY3Rpb24oZnJhZ21lbnQsIG9wdGlvbnMpIHsKKyAgICAgIGlmICghSGlzdG9yeS5z
dGFydGVkKSByZXR1cm4gZmFsc2U7CisgICAgICBpZiAoIW9wdGlvbnMgfHwgb3B0aW9ucyA9PT0g
dHJ1ZSkgb3B0aW9ucyA9IHt0cmlnZ2VyOiAhIW9wdGlvbnN9OworCisgICAgICAvLyBOb3JtYWxp
emUgdGhlIGZyYWdtZW50LgorICAgICAgZnJhZ21lbnQgPSB0aGlzLmdldEZyYWdtZW50KGZyYWdt
ZW50IHx8ICcnKTsKKworICAgICAgLy8gRG9uJ3QgaW5jbHVkZSBhIHRyYWlsaW5nIHNsYXNoIG9u
IHRoZSByb290LgorICAgICAgdmFyIHJvb3RQYXRoID0gdGhpcy5yb290OworICAgICAgaWYgKGZy
YWdtZW50ID09PSAnJyB8fCBmcmFnbWVudC5jaGFyQXQoMCkgPT09ICc/JykgeworICAgICAgICBy
b290UGF0aCA9IHJvb3RQYXRoLnNsaWNlKDAsIC0xKSB8fCAnLyc7CisgICAgICB9CisgICAgICB2
YXIgdXJsID0gcm9vdFBhdGggKyBmcmFnbWVudDsKKworICAgICAgLy8gU3RyaXAgdGhlIGhhc2gg
YW5kIGRlY29kZSBmb3IgbWF0Y2hpbmcuCisgICAgICBmcmFnbWVudCA9IHRoaXMuZGVjb2RlRnJh
Z21lbnQoZnJhZ21lbnQucmVwbGFjZShwYXRoU3RyaXBwZXIsICcnKSk7CisKKyAgICAgIGlmICh0
aGlzLmZyYWdtZW50ID09PSBmcmFnbWVudCkgcmV0dXJuOworICAgICAgdGhpcy5mcmFnbWVudCA9
IGZyYWdtZW50OworCisgICAgICAvLyBJZiBwdXNoU3RhdGUgaXMgYXZhaWxhYmxlLCB3ZSB1c2Ug
aXQgdG8gc2V0IHRoZSBmcmFnbWVudCBhcyBhIHJlYWwgVVJMLgorICAgICAgaWYgKHRoaXMuX3Vz
ZVB1c2hTdGF0ZSkgeworICAgICAgICB0aGlzLmhpc3Rvcnlbb3B0aW9ucy5yZXBsYWNlID8gJ3Jl
cGxhY2VTdGF0ZScgOiAncHVzaFN0YXRlJ10oe30sIGRvY3VtZW50LnRpdGxlLCB1cmwpOworCisg
ICAgICAvLyBJZiBoYXNoIGNoYW5nZXMgaGF2ZW4ndCBiZWVuIGV4cGxpY2l0bHkgZGlzYWJsZWQs
IHVwZGF0ZSB0aGUgaGFzaAorICAgICAgLy8gZnJhZ21lbnQgdG8gc3RvcmUgaGlzdG9yeS4KKyAg
ICAgIH0gZWxzZSBpZiAodGhpcy5fd2FudHNIYXNoQ2hhbmdlKSB7CisgICAgICAgIHRoaXMuX3Vw
ZGF0ZUhhc2godGhpcy5sb2NhdGlvbiwgZnJhZ21lbnQsIG9wdGlvbnMucmVwbGFjZSk7CisgICAg
ICAgIGlmICh0aGlzLmlmcmFtZSAmJiBmcmFnbWVudCAhPT0gdGhpcy5nZXRIYXNoKHRoaXMuaWZy
YW1lLmNvbnRlbnRXaW5kb3cpKSB7CisgICAgICAgICAgdmFyIGlXaW5kb3cgPSB0aGlzLmlmcmFt
ZS5jb250ZW50V2luZG93OworCisgICAgICAgICAgLy8gT3BlbmluZyBhbmQgY2xvc2luZyB0aGUg
aWZyYW1lIHRyaWNrcyBJRTcgYW5kIGVhcmxpZXIgdG8gcHVzaCBhCisgICAgICAgICAgLy8gaGlz
dG9yeSBlbnRyeSBvbiBoYXNoLXRhZyBjaGFuZ2UuICBXaGVuIHJlcGxhY2UgaXMgdHJ1ZSwgd2Ug
ZG9uJ3QKKyAgICAgICAgICAvLyB3YW50IHRoaXMuCisgICAgICAgICAgaWYgKCFvcHRpb25zLnJl
cGxhY2UpIHsKKyAgICAgICAgICAgIGlXaW5kb3cuZG9jdW1lbnQub3BlbigpOworICAgICAgICAg
ICAgaVdpbmRvdy5kb2N1bWVudC5jbG9zZSgpOworICAgICAgICAgIH0KKworICAgICAgICAgIHRo
aXMuX3VwZGF0ZUhhc2goaVdpbmRvdy5sb2NhdGlvbiwgZnJhZ21lbnQsIG9wdGlvbnMucmVwbGFj
ZSk7CisgICAgICAgIH0KKworICAgICAgLy8gSWYgeW91J3ZlIHRvbGQgdXMgdGhhdCB5b3UgZXhw
bGljaXRseSBkb24ndCB3YW50IGZhbGxiYWNrIGhhc2hjaGFuZ2UtCisgICAgICAvLyBiYXNlZCBo
aXN0b3J5LCB0aGVuIGBuYXZpZ2F0ZWAgYmVjb21lcyBhIHBhZ2UgcmVmcmVzaC4KKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHJldHVybiB0aGlzLmxvY2F0aW9uLmFzc2lnbih1cmwpOworICAgICAg
fQorICAgICAgaWYgKG9wdGlvbnMudHJpZ2dlcikgcmV0dXJuIHRoaXMubG9hZFVybChmcmFnbWVu
dCk7CisgICAgfSwKKworICAgIC8vIFVwZGF0ZSB0aGUgaGFzaCBsb2NhdGlvbiwgZWl0aGVyIHJl
cGxhY2luZyB0aGUgY3VycmVudCBlbnRyeSwgb3IgYWRkaW5nCisgICAgLy8gYSBuZXcgb25lIHRv
IHRoZSBicm93c2VyIGhpc3RvcnkuCisgICAgX3VwZGF0ZUhhc2g6IGZ1bmN0aW9uKGxvY2F0aW9u
LCBmcmFnbWVudCwgcmVwbGFjZSkgeworICAgICAgaWYgKHJlcGxhY2UpIHsKKyAgICAgICAgdmFy
IGhyZWYgPSBsb2NhdGlvbi5ocmVmLnJlcGxhY2UoLyhqYXZhc2NyaXB0OnwjKS4qJC8sICcnKTsK
KyAgICAgICAgbG9jYXRpb24ucmVwbGFjZShocmVmICsgJyMnICsgZnJhZ21lbnQpOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgLy8gU29tZSBicm93c2VycyByZXF1aXJlIHRoYXQgYGhhc2hgIGNv
bnRhaW5zIGEgbGVhZGluZyAjLgorICAgICAgICBsb2NhdGlvbi5oYXNoID0gJyMnICsgZnJhZ21l
bnQ7CisgICAgICB9CisgICAgfQorCisgIH0pOworCisgIC8vIENyZWF0ZSB0aGUgZGVmYXVsdCBC
YWNrYm9uZS5oaXN0b3J5LgorICBCYWNrYm9uZS5oaXN0b3J5ID0gbmV3IEhpc3Rvcnk7CisKKyAg
Ly8gSGVscGVycworICAvLyAtLS0tLS0tCisKKyAgLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGNvcnJl
Y3RseSBzZXQgdXAgdGhlIHByb3RvdHlwZSBjaGFpbiBmb3Igc3ViY2xhc3Nlcy4KKyAgLy8gU2lt
aWxhciB0byBgZ29vZy5pbmhlcml0c2AsIGJ1dCB1c2VzIGEgaGFzaCBvZiBwcm90b3R5cGUgcHJv
cGVydGllcyBhbmQKKyAgLy8gY2xhc3MgcHJvcGVydGllcyB0byBiZSBleHRlbmRlZC4KKyAgdmFy
IGV4dGVuZCA9IGZ1bmN0aW9uKHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7CisgICAgdmFyIHBh
cmVudCA9IHRoaXM7CisgICAgdmFyIGNoaWxkOworCisgICAgLy8gVGhlIGNvbnN0cnVjdG9yIGZ1
bmN0aW9uIGZvciB0aGUgbmV3IHN1YmNsYXNzIGlzIGVpdGhlciBkZWZpbmVkIGJ5IHlvdQorICAg
IC8vICh0aGUgImNvbnN0cnVjdG9yIiBwcm9wZXJ0eSBpbiB5b3VyIGBleHRlbmRgIGRlZmluaXRp
b24pLCBvciBkZWZhdWx0ZWQKKyAgICAvLyBieSB1cyB0byBzaW1wbHkgY2FsbCB0aGUgcGFyZW50
IGNvbnN0cnVjdG9yLgorICAgIGlmIChwcm90b1Byb3BzICYmIF8uaGFzKHByb3RvUHJvcHMsICdj
b25zdHJ1Y3RvcicpKSB7CisgICAgICBjaGlsZCA9IHByb3RvUHJvcHMuY29uc3RydWN0b3I7Cisg
ICAgfSBlbHNlIHsKKyAgICAgIGNoaWxkID0gZnVuY3Rpb24oKXsgcmV0dXJuIHBhcmVudC5hcHBs
eSh0aGlzLCBhcmd1bWVudHMpOyB9OworICAgIH0KKworICAgIC8vIEFkZCBzdGF0aWMgcHJvcGVy
dGllcyB0byB0aGUgY29uc3RydWN0b3IgZnVuY3Rpb24sIGlmIHN1cHBsaWVkLgorICAgIF8uZXh0
ZW5kKGNoaWxkLCBwYXJlbnQsIHN0YXRpY1Byb3BzKTsKKworICAgIC8vIFNldCB0aGUgcHJvdG90
eXBlIGNoYWluIHRvIGluaGVyaXQgZnJvbSBgcGFyZW50YCwgd2l0aG91dCBjYWxsaW5nCisgICAg
Ly8gYHBhcmVudGAncyBjb25zdHJ1Y3RvciBmdW5jdGlvbiBhbmQgYWRkIHRoZSBwcm90b3R5cGUg
cHJvcGVydGllcy4KKyAgICBjaGlsZC5wcm90b3R5cGUgPSBfLmNyZWF0ZShwYXJlbnQucHJvdG90
eXBlLCBwcm90b1Byb3BzKTsKKyAgICBjaGlsZC5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBjaGls
ZDsKKworICAgIC8vIFNldCBhIGNvbnZlbmllbmNlIHByb3BlcnR5IGluIGNhc2UgdGhlIHBhcmVu
dCdzIHByb3RvdHlwZSBpcyBuZWVkZWQKKyAgICAvLyBsYXRlci4KKyAgICBjaGlsZC5fX3N1cGVy
X18gPSBwYXJlbnQucHJvdG90eXBlOworCisgICAgcmV0dXJuIGNoaWxkOworICB9OworCisgIC8v
IFNldCB1cCBpbmhlcml0YW5jZSBmb3IgdGhlIG1vZGVsLCBjb2xsZWN0aW9uLCByb3V0ZXIsIHZp
ZXcgYW5kIGhpc3RvcnkuCisgIE1vZGVsLmV4dGVuZCA9IENvbGxlY3Rpb24uZXh0ZW5kID0gUm91
dGVyLmV4dGVuZCA9IFZpZXcuZXh0ZW5kID0gSGlzdG9yeS5leHRlbmQgPSBleHRlbmQ7CisKKyAg
Ly8gVGhyb3cgYW4gZXJyb3Igd2hlbiBhIFVSTCBpcyBuZWVkZWQsIGFuZCBub25lIGlzIHN1cHBs
aWVkLgorICB2YXIgdXJsRXJyb3IgPSBmdW5jdGlvbigpIHsKKyAgICB0aHJvdyBuZXcgRXJyb3Io
J0EgInVybCIgcHJvcGVydHkgb3IgZnVuY3Rpb24gbXVzdCBiZSBzcGVjaWZpZWQnKTsKKyAgfTsK
KworICAvLyBXcmFwIGFuIG9wdGlvbmFsIGVycm9yIGNhbGxiYWNrIHdpdGggYSBmYWxsYmFjayBl
cnJvciBldmVudC4KKyAgdmFyIHdyYXBFcnJvciA9IGZ1bmN0aW9uKG1vZGVsLCBvcHRpb25zKSB7
CisgICAgdmFyIGVycm9yID0gb3B0aW9ucy5lcnJvcjsKKyAgICBvcHRpb25zLmVycm9yID0gZnVu
Y3Rpb24ocmVzcCkgeworICAgICAgaWYgKGVycm9yKSBlcnJvci5jYWxsKG9wdGlvbnMuY29udGV4
dCwgbW9kZWwsIHJlc3AsIG9wdGlvbnMpOworICAgICAgbW9kZWwudHJpZ2dlcignZXJyb3InLCBt
b2RlbCwgcmVzcCwgb3B0aW9ucyk7CisgICAgfTsKKyAgfTsKKworICByZXR1cm4gQmFja2JvbmU7
Cit9KTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9iYWNr
Ym9uZS9wYWNrYWdlLmpzb24gYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvYmFj
a2JvbmUvcGFja2FnZS5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg1OTY0MjQyOWE1NjdkNjJlNmZjMWE1OGIx
NDA4OGYyNjQ1NWIyNzIKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9u
b2RlX21vZHVsZXMvYmFja2JvbmUvcGFja2FnZS5qc29uCkBAIC0wLDAgKzEsMTIxIEBACit7Cisg
ICJfYXJncyI6IFsKKyAgICBbCisgICAgICB7CisgICAgICAgICJyYXciOiAiYmFja2JvbmVAXjEu
My4zIiwKKyAgICAgICAgInNjb3BlIjogbnVsbCwKKyAgICAgICAgImVzY2FwZWROYW1lIjogImJh
Y2tib25lIiwKKyAgICAgICAgIm5hbWUiOiAiYmFja2JvbmUiLAorICAgICAgICAicmF3U3BlYyI6
ICJeMS4zLjMiLAorICAgICAgICAic3BlYyI6ICI+PTEuMy4zIDwyLjAuMCIsCisgICAgICAgICJ0
eXBlIjogInJhbmdlIgorICAgICAgfSwKKyAgICAgICIvVXNlcnMvYWRkeW8vcHJvamVjdHMvc3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25l
IgorICAgIF0KKyAgXSwKKyAgIl9mcm9tIjogImJhY2tib25lQD49MS4zLjMgPDIuMC4wIiwKKyAg
Il9pZCI6ICJiYWNrYm9uZUAxLjMuMyIsCisgICJfaW5DYWNoZSI6IHRydWUsCisgICJfbG9jYXRp
b24iOiAiL2JhY2tib25lIiwKKyAgIl9ub2RlVmVyc2lvbiI6ICI1LjkuMCIsCisgICJfbnBtT3Bl
cmF0aW9uYWxJbnRlcm5hbCI6IHsKKyAgICAiaG9zdCI6ICJwYWNrYWdlcy0xMi13ZXN0LmludGVy
bmFsLm5wbWpzLmNvbSIsCisgICAgInRtcCI6ICJ0bXAvYmFja2JvbmUtMS4zLjMudGd6XzE0NTk4
NzgzNTcxMDlfMC4zMTEyODc4NDAzNjI2MzgyNCIKKyAgfSwKKyAgIl9ucG1Vc2VyIjogeworICAg
ICJuYW1lIjogImpyaWRnZXdlbGwiLAorICAgICJlbWFpbCI6ICJqdXN0aW4rbnBtQHJpZGdld2Vs
bC5uYW1lIgorICB9LAorICAiX25wbVZlcnNpb24iOiAiMy43LjMiLAorICAiX3BoYW50b21DaGls
ZHJlbiI6IHt9LAorICAiX3JlcXVlc3RlZCI6IHsKKyAgICAicmF3IjogImJhY2tib25lQF4xLjMu
MyIsCisgICAgInNjb3BlIjogbnVsbCwKKyAgICAiZXNjYXBlZE5hbWUiOiAiYmFja2JvbmUiLAor
ICAgICJuYW1lIjogImJhY2tib25lIiwKKyAgICAicmF3U3BlYyI6ICJeMS4zLjMiLAorICAgICJz
cGVjIjogIj49MS4zLjMgPDIuMC4wIiwKKyAgICAidHlwZSI6ICJyYW5nZSIKKyAgfSwKKyAgIl9y
ZXF1aXJlZEJ5IjogWworICAgICIvIgorICBdLAorICAiX3Jlc29sdmVkIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL2JhY2tib25lLy0vYmFja2JvbmUtMS4zLjMudGd6IiwKKyAgIl9zaGFz
dW0iOiAiNGNjODBlYTdjYjE2MzFhYzQ3NDg4OWNlNDBmMmY4YmM2ODNiMjk5OSIsCisgICJfc2hy
aW5rd3JhcCI6IG51bGwsCisgICJfc3BlYyI6ICJiYWNrYm9uZUBeMS4zLjMiLAorICAiX3doZXJl
IjogIi9Vc2Vycy9hZGR5by9wcm9qZWN0cy9zcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUiLAorICAiYXV0aG9yIjogeworICAgICJuYW1l
IjogIkplcmVteSBBc2hrZW5hcyIKKyAgfSwKKyAgImJ1Z3MiOiB7CisgICAgInVybCI6ICJodHRw
czovL2dpdGh1Yi5jb20vamFzaGtlbmFzL2JhY2tib25lL2lzc3VlcyIKKyAgfSwKKyAgImRlcGVu
ZGVuY2llcyI6IHsKKyAgICAidW5kZXJzY29yZSI6ICI+PTEuOC4zIgorICB9LAorICAiZGVzY3Jp
cHRpb24iOiAiR2l2ZSB5b3VyIEpTIEFwcCBzb21lIEJhY2tib25lIHdpdGggTW9kZWxzLCBWaWV3
cywgQ29sbGVjdGlvbnMsIGFuZCBFdmVudHMuIiwKKyAgImRldkRlcGVuZGVuY2llcyI6IHsKKyAg
ICAiY29mZmVlLXNjcmlwdCI6ICIxLjcuMSIsCisgICAgImRvY2NvIjogIjAuNy4wIiwKKyAgICAi
ZXNsaW50IjogIjEuMTAueCIsCisgICAgImthcm1hIjogIl4wLjEzLjEzIiwKKyAgICAia2FybWEt
cGhhbnRvbWpzLWxhdW5jaGVyIjogIl4wLjEuNCIsCisgICAgImthcm1hLXF1bml0IjogIl4wLjEu
NSIsCisgICAgInF1bml0anMiOiAiXjEuMTguMCIsCisgICAgInVnbGlmeS1qcyI6ICJeMi40LjE3
IgorICB9LAorICAiZGlyZWN0b3JpZXMiOiB7fSwKKyAgImRpc3QiOiB7CisgICAgInNoYXN1bSI6
ICI0Y2M4MGVhN2NiMTYzMWFjNDc0ODg5Y2U0MGYyZjhiYzY4M2IyOTk5IiwKKyAgICAidGFyYmFs
bCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9iYWNrYm9uZS8tL2JhY2tib25lLTEuMy4z
LnRneiIKKyAgfSwKKyAgImZpbGVzIjogWworICAgICJiYWNrYm9uZS5qcyIsCisgICAgImJhY2ti
b25lLW1pbi5qcyIsCisgICAgImJhY2tib25lLW1pbi5tYXAiLAorICAgICJMSUNFTlNFIgorICBd
LAorICAiZ2l0SGVhZCI6ICI4ZWM4ODYwNDczMjk0NGYxOTdiMzUyYTZiZTIyYzgyMTZlYTlkM2Ex
IiwKKyAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9qYXNoa2VuYXMvYmFja2JvbmUj
cmVhZG1lIiwKKyAgImtleXdvcmRzIjogWworICAgICJtb2RlbCIsCisgICAgInZpZXciLAorICAg
ICJjb250cm9sbGVyIiwKKyAgICAicm91dGVyIiwKKyAgICAic2VydmVyIiwKKyAgICAiY2xpZW50
IiwKKyAgICAiYnJvd3NlciIKKyAgXSwKKyAgImxpY2Vuc2UiOiAiTUlUIiwKKyAgIm1haW4iOiAi
YmFja2JvbmUuanMiLAorICAibWFpbnRhaW5lcnMiOiBbCisgICAgeworICAgICAgIm5hbWUiOiAi
YnJhZGR1bmJhciIsCisgICAgICAiZW1haWwiOiAiZHVuYmFyYjJAZ21haWwuY29tIgorICAgIH0s
CisgICAgeworICAgICAgIm5hbWUiOiAiamFzaGtlbmFzIiwKKyAgICAgICJlbWFpbCI6ICJqYXNo
a2VuYXNAZ21haWwuY29tIgorICAgIH0sCisgICAgeworICAgICAgIm5hbWUiOiAianJpZGdld2Vs
bCIsCisgICAgICAiZW1haWwiOiAianVzdGluK25wbUByaWRnZXdlbGwubmFtZSIKKyAgICB9Cisg
IF0sCisgICJuYW1lIjogImJhY2tib25lIiwKKyAgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjoge30s
CisgICJyZWFkbWUiOiAiRVJST1I6IE5vIFJFQURNRSBkYXRhIGZvdW5kISIsCisgICJyZXBvc2l0
b3J5IjogeworICAgICJ0eXBlIjogImdpdCIsCisgICAgInVybCI6ICJnaXQraHR0cHM6Ly9naXRo
dWIuY29tL2phc2hrZW5hcy9iYWNrYm9uZS5naXQiCisgIH0sCisgICJzY3JpcHRzIjogeworICAg
ICJidWlsZCI6ICJ1Z2xpZnlqcyBiYWNrYm9uZS5qcyAtLW1hbmdsZSAtLXNvdXJjZS1tYXAgYmFj
a2JvbmUtbWluLm1hcCAtbyBiYWNrYm9uZS1taW4uanMiLAorICAgICJkb2MiOiAiZG9jY28gYmFj
a2JvbmUuanMgJiYgZG9jY28gZXhhbXBsZXMvdG9kb3MvdG9kb3MuanMgZXhhbXBsZXMvYmFja2Jv
bmUubG9jYWxTdG9yYWdlLmpzIiwKKyAgICAibGludCI6ICJlc2xpbnQgYmFja2JvbmUuanMgdGVz
dC8qLmpzIiwKKyAgICAidGVzdCI6ICJrYXJtYSBzdGFydCAmJiBjb2ZmZWUgdGVzdC9tb2RlbC5j
b2ZmZWUgJiYgbnBtIHJ1biBsaW50IgorICB9LAorICAidXJsIjogImh0dHA6Ly9iYWNrYm9uZWpz
Lm9yZyIsCisgICJ2ZXJzaW9uIjogIjEuMy4zIgorfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
YmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9BVVRIT1JTLnR4dCBiL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2Jh
Y2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvQVVUSE9SUy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzM0MzYz
ZGVhYTc1NDc0OGJjYzhhMmFmMjBlY2I1MzNiMjJjMDRjMQotLS0gL2Rldi9udWxsCisrKyBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvQVVUSE9SUy50eHQKQEAgLTAs
MCArMSwyOTUgQEAKK0F1dGhvcnMgb3JkZXJlZCBieSBmaXJzdCBjb250cmlidXRpb24uCisKK0pv
aG4gUmVzaWcgPGplcmVzaWdAZ21haWwuY29tPgorR2lsbGVzIHZhbiBkZW4gSG92ZW4gPGdpbGxl
czAxODFAZ21haWwuY29tPgorTWljaGFlbCBHZWFyeSA8bWlrZUBnZWFyeS5jb20+CitTdGVmYW4g
UGV0cmUgPHN0ZWZhbi5wZXRyZUBnbWFpbC5jb20+CitZZWh1ZGEgS2F0eiA8d3ljYXRzQGdtYWls
LmNvbT4KK0NvcmV5IEpld2V0dCA8Y2pAc3ludGhldGljcGxheWdyb3VuZC5jb20+CitLbGF1cyBI
YXJ0bCA8a2xhdXMuaGFydGxAZ21haWwuY29tPgorRnJhbmNrIE1hcmNpYSA8ZnJhbmNrLm1hcmNp
YUBnbWFpbC5jb20+CitKw7ZybiBaYWVmZmVyZXIgPGpvZXJuLnphZWZmZXJlckBnbWFpbC5jb20+
CitQYXVsIEJha2F1cyA8cGF1bC5iYWthdXNAZ21haWwuY29tPgorQnJhbmRvbiBBYXJvbiA8YnJh
bmRvbi5hYXJvbkBnbWFpbC5jb20+CitNaWtlIEFsc3VwIDxtYWxzdXBAZ21haWwuY29tPgorRGF2
ZSBNZXRodmluIDxkYXZlLm1ldGh2aW5AZ21haWwuY29tPgorRWQgRW5nZWxoYXJkdCA8ZWRlbmdl
bGhhcmR0QGdtYWlsLmNvbT4KK1NlYW4gQ2F0Y2hwb2xlIDxsaXR0bGVjb29sZHVkZUBnbWFpbC5j
b20+CitQYXVsIE1jbGFuYWhhbiA8cG1jbGFuYWhhbkBnbWFpbC5jb20+CitEYXZpZCBTZXJkdWtl
IDxkYXZpZHNlcmR1a2VAZ21haWwuY29tPgorUmljaGFyZCBELiBXb3J0aCA8cmR3b3J0aEBnbWFp
bC5jb20+CitTY290dCBHb256w6FsZXogPHNjb3R0LmdvbnphbGV6QGdtYWlsLmNvbT4KK0FyaWVs
IEZsZXNsZXIgPGFmbGVzbGVyQGdtYWlsLmNvbT4KK0pvbiBFdmFucyA8am9uQHNwcmluZ3l3ZWIu
Y29tPgorVEogSG9sb3dheWNodWsgPHRqQHZpc2lvbi1tZWRpYS5jYT4KK01pY2hhZWwgQmVuc291
c3NhbiA8bWlja2V5QHNlZXNtaWMuY29tPgorUm9iZXJ0IEthdGnEhyA8cm9iZXJ0LmthdGljQGdt
YWlsLmNvbT4KK0xvdWlzLVLDqW1pIEJhYsOpIDxscmJhYmVAZ21haWwuY29tPgorRWFybGUgQ2Fz
dGxlZGluZSA8bXJzcGVha2VyQGdtYWlsLmNvbT4KK0RhbWlhbiBKYW5vd3NraSA8ZGFtaWFuLmph
bm93c2tpQGdtYWlsLmNvbT4KK1JpY2ggRG91Z2hlcnR5IDxyaWNoQHJkLmdlbi5uej4KK0tpbSBE
YWxzZ2FhcmQgPGtpbUBraW1kYWxzZ2FhcmQuY29tPgorQW5kcmVhIEdpYW1tYXJjaGkgPGFuZHJl
YS5naWFtbWFyY2hpQGdtYWlsLmNvbT4KK01hcmsgR2lic29uIDxqb2xseXRvYWRAZ21haWwuY29t
PgorS2FybCBTd2VkYmVyZyA8a3N3ZWRiZXJnQGdtYWlsLmNvbT4KK0p1c3RpbiBNZXllciA8anVz
dGluYm1leWVyQGdtYWlsLmNvbT4KK0JlbiBBbG1hbiA8Y293Ym95QHJqMy5uZXQ+CitKYW1lcyBQ
YWRvbHNleSA8Y2xhQHBhZG9sc2V5Lm5ldD4KK0RhdmlkIFBldGVyc2VuIDxwdWJsaWNAcGV0ZXJz
ZW5kaWRpdC5jb20+CitCYXRpc3RlIEJpZWxlciA8YmF0aXN0ZS5iaWVsZXJAZ21haWwuY29tPgor
QWxleGFuZGVyIEZhcmthcyA8aW5mb0Bjb3JydXB0LXN5c3RlbS5kZT4KK1JpY2sgV2FsZHJvbiA8
d2FsZHJvbi5yaWNrQGdtYWlsLmNvbT4KK0ZpbGlwZSBGb3J0ZXMgPGZpbGlwZUBmb3J0ZXMuY29t
PgorTmVlcmFqIFNpbmdoIDxuZWVyYWpkb3RuYW1lQGdtYWlsLmNvbT4KK1BhdWwgSXJpc2ggPHBh
dWwuaXJpc2hAZ21haWwuY29tPgorSXJhw6ogQ2FydmFsaG8gPGlyYWVAaXJhZS5wcm8uYnI+CitN
YXR0IEN1cnJ5IDxtYXR0QHBzZXVkb2NvZGVyLmNvbT4KK01pY2hhZWwgTW9udGVsZW9uZSA8bWlj
aGFlbEBtaWNoYWVsbW9udGVsZW9uZS5uZXQ+CitOb2FoIFNsb2FuIDxub2FoLnNsb2FuQGdtYWls
LmNvbT4KK1RvbSBWaW5lciA8Z2l0aHViQHZpbmVyLnR2PgorRG91Z2xhcyBOZWluZXIgPGRvdWdA
ZG91Z25laW5lci5jb20+CitBZGFtIEouIFNvbnRhZyA8YWpwaWFub0BhanBpYW5vLmNvbT4KK0Rh
dmUgUmVlZCA8ZGFyZWVkQG1pY3Jvc29mdC5jb20+CitSYWxwaCBXaGl0YmVjayA8cmFscGgud2hp
dGJlY2tAZ21haWwuY29tPgorQ2FybCBGw7xyc3RlbmJlcmcgPGF6YXRvdGhAZ21haWwuY29tPgor
SmFjb2IgV3JpZ2h0IDxqYWN3cmlnaHRAZ21haWwuY29tPgorSi4gUnlhbiBTdGlubmV0dCA8anJ5
YW5zQGdtYWlsLmNvbT4KK3Vua25vd24gPElnZW4wMDVALnVwY29ycC5hZC51cHJyLmNvbT4KK3Rl
bXAwMSA8dGVtcDAxaXJjQGdtYWlsLmNvbT4KK0hldW5nc3ViIExlZSA8aEBzdWJsLmVlPgorQ29s
aW4gU25vdmVyIDxnaXRodWIuY29tQHpldGFmbGVldC5jb20+CitSeWFuIFcgVGVubmV5IDxyeWFu
QDEwZS51cz4KK1Bpbmhvb2sgPGNvbnRhY3RAcGluaG9va2xhYnMuY29tPgorUm9uIE90dGVuIDxy
LmouZy5vdHRlbkBnbWFpbC5jb20+CitKZXBodGUgQ2xhaW4gPEplcGh0ZS5DbGFpbkB1bml2LXJl
dW5pb24uZnI+CitBbnRvbiBNYXR6bmVsbGVyIDxvYmh2c2J5cHFnaGdjQGdtYWlsLmNvbT4KK0Fs
ZXggU2V4dG9uIDxBbGV4U2V4dG9uQGdtYWlsLmNvbT4KK0RhbiBIZWJlcmRlbiA8ZGFuaGViZXJk
ZW5AZ21haWwuY29tPgorSGVucmkgV2llY2hlcnMgPGh3aWVjaGVyc0BnbWFpbC5jb20+CitSdXNz
ZWxsIEhvbGJyb29rIDxydXNzZWxsLmhvbGJyb29rQHBhdGNoLmNvbT4KK0p1bGlhbiBBdWJvdXJn
IDxhdWJvdXJnLmp1bGlhbkBnbWFpbC5jb20+CitHaWFubmkgQWxlc3NhbmRybyBDaGlhcHBldHRh
IDxnaWFubmlAcnVubGV2ZWw2Lm9yZz4KK1Njb3R0IEplaGwgPHNjb3R0amVobEBnbWFpbC5jb20+
CitKYW1lcyBCdXJrZSA8anJidXJrZUBnbWFpbC5jb20+CitKb25hcyBQZmVubmlnZXIgPGpvbmFz
QHBmZW5uaWdlci5uYW1lPgorWGF2aSBSYW1pcmV6IDx4YXZpLnJtekBnbWFpbC5jb20+CitKYXJl
ZCBHcmlwcGUgPGphcmVkQGRlYWRseWljb24uY29tPgorU3lsdmVzdGVyIEtlaWwgPHN5bHZlc3Rl
ckBrZWlsLm9yLmF0PgorQnJhbmRvbiBTdGVybmUgPGJzdGVybmVAbW96aWxsYS5jb20+CitNYXRo
aWFzIEJ5bmVucyA8bWF0aGlhc0BxaXdpLmJlPgorVGltbXkgV2lsbGlzb24gPDR0aW1teXdpbEBn
bWFpbC5jb20+CitDb3JleSBGcmFuZyA8Z25hcmYzN0BnbWFpbC5jb20+CitEaWdpdGFseGVybyA8
ZGlnaXRhbHhlcm8+CitBbnRvbiBLb3ZhbHlvdiA8YW50b25Aa292YWx5b3YubmV0PgorRGF2aWQg
TXVyZG9jaCA8ZGF2aWRAZGF2aWRtdXJkb2NoLmNvbT4KK0pvc2ggVmFybmVyIDxqb3NoLnZhcm5l
ckBnbWFpbC5jb20+CitDaGFybGVzIE1jTnVsdHkgPGNtY251bHR5QGt6bmYuY29tPgorSm9yZGFu
IEJvZXNjaCA8amJvZXNjaDI2QGdtYWlsLmNvbT4KK0plc3MgVGhyeXNvZWUgPGplc3NAdGhyeXNv
ZWUuZGs+CitNaWNoYWVsIE11cnJheSA8bUBtdXJ6Lm5ldD4KK0xlZSBDYXJwZW50ZXIgPGVsY2Fy
cGllQGdtYWlsLmNvbT4KK0FsZXhpcyBBYnJpbCA8bWVAYWxleGlzYWJyaWwuY29tPgorUm9iIE1v
cmdhbiA8cm9iYnltQGdtYWlsLmNvbT4KK0pvaG4gRmlyZWJhdWdoIDxqb2huX2ZpcmViYXVnaEBi
aWdmaXguY29tPgorU2FtIEJpc2JlZSA8c2FtQHNiaXNiZWUuY29tPgorR2lsbW9yZSBEYXZpZHNv
biA8Z2lsbW9yZW9ybGVzc0BnbWFpbC5jb20+CitCcmlhbiBCcmVubmFuIDxtZUBicmlhbmxvdmVz
dGhpbmdzLmNvbT4KK1hhdmllciBNb250aWxsZXQgPHhhdmllcm0wMi5uZXRAZ21haWwuY29tPgor
RGFuaWVsIFBpaGxzdHJvbSA8c2Npb2xpc3Quc2VAZ21haWwuY29tPgorU2FoYWIgWWF6ZGFuaSA8
c2FoYWIueWF6ZGFuaStnaXRodWJAZ21haWwuY29tPgorYXZhbHkgPGdpdGh1Yi1jb21AYWdhY2hp
Lm5hbWU+CitTY290dCBIdWdoZXMgPGhpQHNjb3R0LWh1Z2hlcy5tZT4KK01pa2UgU2hlcm92IDxt
aWtlLnNoZXJvdkBnbWFpbC5jb20+CitHcmVnIEhhemVsIDxnaGF6ZWxAZ21haWwuY29tPgorU2No
YWxrIE5lZXRobGluZyA8c2NoYWxrQG9zc3JlbGVhc2VmZWVkLmNvbT4KK0RlbmlzIEtuYXVmIDxE
ZW5pcy5LbmF1ZkBnbWFpbC5jb20+CitUaW1vIFRpamhvZiA8a3JpbmtsZW1haWxAZ21haWwuY29t
PgorU3RlZW4gTmllbHNlbiA8c3dpbmVka0BnbWFpbC5jb20+CitBbnRvbiBSeXpob3YgPGFudG9u
QHJ5emhvdi5tZT4KK1NoaSBDaHVhbiA8c2hpY2h1YW5yQGdtYWlsLmNvbT4KK0JlcmtlciBQZWtz
YWcgPGJlcmtlci5wZWtzYWdAZ21haWwuY29tPgorVG9ieSBCcmFpbiA8dG9ieWJAZnJlc2h2aWV3
LmNvbT4KK01hdHQgTXVlbGxlciA8bWF0dG11ZWxsZUBnbWFpbC5jb20+CitKdXN0aW4gPGRyYWtl
Zmp1c3RpbkBnbWFpbC5jb20+CitEYW5pZWwgSGVybWFuIDxkYW5pZWwuYy5oZXJtYW5AZ21haWwu
Y29tPgorT2xlZyBHYWlkYXJlbmtvIDxtYXJrZWxvZ0BnbWFpbC5jb20+CitSaWNoYXJkIEdpYnNv
biA8cmljaGFyZC5naWJzb25AZ21haWwuY29tPgorUmFmYcOrbCBCbGFpcyBNYXNzb24gPHJhZmJt
YXNzb25AZ21haWwuY29tPgorY21jM2NuIDw1OTE5NDYxOEBxcS5jb20+CitKb2UgUHJlc2JyZXkg
PHByZXNicmV5QGdtYWlsLmNvbT4KK1NpbmRyZSBTb3JodXMgPHNpbmRyZXNvcmh1c0BnbWFpbC5j
b20+CitBcm5lIGRlIEJyZWUgPGFybmVAYnVra2llLm5sPgorVmxhZGlzbGF2IFphcmFrb3Zza3kg
PHZsYWQuemFyQGdtYWlsLmNvbT4KK0FuZHJldyBFIE1vbmF0IDxhbW9uYXRAZ21haWwuY29tPgor
T3NrYXJpIDxhZG1pbkBvLXByb2dyYW1zLmNvbT4KK0pvYW8gSGVucmlxdWUgZGUgQW5kcmFkZSBC
cnVuaSA8am9hb2hicnVuaUB5YWhvby5jb20uYnI+Cit0c2luaGEgPHRzaW5oYUBBbnRob255cy1N
YWNCb29rLVByby5sb2NhbD4KK01hdHQgRmFybWVyIDxtYXR0QGZybXIubWU+CitUcmV5IEh1bm5l
ciA8dHJleWh1bm5lckBnbWFpbC5jb20+CitKYXNvbiBNb29uIDxqbW9vbkBzb2NpYWxjYXN0LmNv
bT4KK0plZmZlcnkgVG8gPGplZmZlcnkudG9AZ21haWwuY29tPgorS3JpcyBCb3JjaGVycyA8a3Jp
cy5ib3JjaGVyc0BnbWFpbC5jb20+CitWbGFkaW1pciBaaHVyYXZsZXYgPHByaXZhdGUuZmFjZUBn
bWFpbC5jb20+CitKYWNvYiBUaG9ybnRvbiA8amFjb2J0aG9ybnRvbkBnbWFpbC5jb20+CitDaGFk
IEtpbGxpbmdzd29ydGggPGNoYWRraWxsaW5nc3dvcnRoQG1pc3NvdXJpc3RhdGUuZWR1PgorTm93
cmVzIFJhZmlkIDxub3dyZXMucmFmZWRAZ21haWwuY29tPgorRGF2aWQgQmVuamFtaW4gPGRhdmlk
YmVuQG1pdC5lZHU+CitVcmkgR2lsYWQgPGFudGlzaG9rQGdtYWlsLmNvbT4KK0NocmlzIEZhdWxr
bmVyIDx0aGVmYXVsa25lckBnbWFpbC5jb20+CitFbGlqYWggTWFub3IgPGVsaWphaC5tYW5vckBn
bWFpbC5jb20+CitEYW5pZWwgQ2hhdGZpZWxkIDxjaGF0ZmllbGRkYW5pZWxAZ21haWwuY29tPgor
TmlraXRhIEdvdm9yb3YgPG5pa2l0YS5nb3Zvcm92QGdtYWlsLmNvbT4KK1dlc2xleSBXYWxzZXIg
PHdhdzMyNUBnbWFpbC5jb20+CitNaWtlIFBlbm5pc2kgPG1pa2VAbWlrZXBlbm5pc2kuY29tPgor
TWFya3VzIFN0YWFiIDxtYXJrdXMuc3RhYWJAcmVkYXhvLmRlPgorRGF2ZSBSaWRkbGUgPGRhdmlk
QGpveXZ1dS5jb20+CitDYWxsdW0gTWFjcmFlIDxjYWxsdW1AbHlueHBocC5jb20+CitCZW5qYW1p
biBUcnV5bWFuIDxiZW50cnV5bWFuQGdtYWlsLmNvbT4KK0phbWVzIEh1c3RvbiA8amFtZXNAamFt
ZXNodXN0b24ubmV0PgorRXJpY2sgUnVpeiBkZSBDaMOhdmV6IDxlcmlja3JkY2hAZ21haWwuY29t
PgorRGF2aWQgQm9ubmVyIDxkYm9ubmVyQGNvZ29sYWJzLmNvbT4KK0FraW50YXlvIEFraW53dW5t
aSA8YWFraW53dW5taUBqdWRnZS5jb20+CitNT1JHQU4gPG1vcmdhbkBtb3JnYW5ncmFwaGljcy5j
b20+CitJc21haWwgS2hhaXIgPGlzbWFpbC5raGFpckBnbWFpbC5jb20+CitDYXJsIERhbmxleSA8
Y2FybGRhbmxleUBnbWFpbC5jb20+CitNaWtlIFBldHJvdmljaCA8bWljaGFlbC5jLnBldHJvdmlj
aEBnbWFpbC5jb20+CitHcmVnIExhdmFsbGVlIDxncmVnbGF2YWxsZWVAd2Fwb2xhYnMuY29tPgor
RGFuaWVsIEfDoWx2ZXogPGRnYWx2ZXpAZWRpdGFibGV0aGluZy5jb20+CitTYWkgTHVuZyBXb25n
IDxzYWkud29uZ0BodWZmaW5ndG9ucG9zdC5jb20+CitUb20gSCBGdWVydGVzIDxUb21GdWVydGVz
QGdtYWlsLmNvbT4KK1JvbGFuZCBFY2tsIDxlY2tsLnJvbGFuZEBnb29nbGVtYWlsLmNvbT4KK0ph
eSBNZXJyaWZpZWxkIDxmcmFjbWFrQGdtYWlsLmNvbT4KK0FsbGVuIEogU2NobWlkdCBKciA8Y29i
cmFzb2Z0QGdtYWlsLmNvbT4KK0pvbmF0aGFuIFNhbXBzb24gPGpqZHNhbXBzb25AZ21haWwuY29t
PgorTWFyY2VsIEdyZXRlciA8bWFyY2VsLmdyZXRlckBvY2JuZXQuY2g+CitNYXR0aGlhcyBKw6Rn
Z2xpIDxtYXR0aGlhcy5qYWVnZ2xpQGdtYWlsLmNvbT4KK0RhdmlkIEZveCA8ZGZveGluYXRvckBn
bWFpbC5jb20+CitZaW1pbmcgSGUgPHlpbWluZ2hlQGdtYWlsLmNvbT4KK0RldmluIENvb3BlciA8
Y29vcGVyLnNlbWFudGljc0BnbWFpbC5jb20+CitQYXVsIFJhbW9zIDxwYXVsLmIucmFtb3NAZ21h
aWwuY29tPgorUm9kIFZhZ2cgPHJvZEB2YWdnLm9yZz4KK0Jlbm5ldHQgU29yYm8gPGJzb3Jib0Bn
bWFpbC5jb20+CitTZWJhc3RpYW4gQnVya2hhcmQgPHNlYmkuYnVya2hhcmRAZ21haWwuY29tPgor
WmFjaGFyeSBBZGFtIEthcGxhbiA8cmF6aWNAdmlyYWxraXR0eS5jb20+CituYW50b192aSA8bmFu
dG9AbW9vbi5lbWFpbC5uZS5qcD4KK25hbnRvIDxuYW50b0Btb29uLmVtYWlsLm5lLmpwPgorRGFu
aWwgU29tc2lrb3YgPGRhbmlsYXNvbXNpa292QGdtYWlsLmNvbT4KK1J5dW5vc3VrZSBTQVRPIDx0
cmlja25vdGVzLnJzQGdtYWlsLmNvbT4KK0plYW4gQm91c3NpZXIgPGplYW4uYm91c3NpZXJAZ21h
aWwuY29tPgorQWRhbSBDb3Vsb21iZSA8bWVAYWRhbS5jbz4KK0FuZHJldyBQbHVtbWVyIDxwbHVt
bWVyLmFuZHJld0BnbWFpbC5jb20+CitNYXJrIFJhZGRhdHogPG1yYWRkYXR6QGdtYWlsLmNvbT4K
K0lzYWFjIFouIFNjaGx1ZXRlciA8aUBpenMubWU+CitLYXJsIFNpZWJ1cmcgPGtzaWVidXJnQHlh
aG9vLmNvbT4KK1Bhc2NhbCBCb3JyZWxpIDxwYXNjYWxAYm9ycmVsaS5jb20+CitOZ3V5ZW4gUGh1
YyBMYW0gPHJ1YWRvMTk4N0BnbWFpbC5jb20+CitEbWl0cnkgR3VzZXYgPGRtaXRyeS5ndXNldkBn
bWFpbC5jb20+CitNaWNoYcWCIEdvxYLEmWJpb3dza2kgPG0uZ29sZWJAZ21haWwuY29tPgorTGkg
WHVkb25nIDxpc3RvbmVsZWVAZ21haWwuY29tPgorU3RldmVuIEJlbm5lciA8YWRtaW5Ac3RldmVu
YmVubmVyLmNvbT4KK1RvbSBIIEZ1ZXJ0ZXMgPHRvbWZ1ZXJ0ZXNAZ21haWwuY29tPgorUmVuYXRv
IE9saXZlaXJhIGRvcyBTYW50b3MgPHJvczNAY2luLnVmcGUuYnI+Cityb3MzY2luIDxyb3MzQGNp
bi51ZnBlLmJyPgorSmFzb24gQmVkYXJkIDxqYXNvbitqcXVlcnlAamJlZGFyZC5jYT4KK0t5bGUg
Um9iaW5zb24gWW91bmcgPGt5bGVAZG9udGtyeS5jb20+CitDaHJpcyBUYWxraW5ndG9uIDxjaHJp
c0B0YWxraW5ndG9udGVjaC5jb20+CitFZGRpZSBNb25nZSA8ZWRkaWVAZWRkaWVtb25nZS5jb20+
CitUZXJyeSBKb25lcyA8dGVycnlAam9uLmVzPgorSmFzb24gTWVyaW5vIDxqYXNvbm1lcmlub0Bn
bWFpbC5jb20+CitKZXJlbXkgRHVuY2sgPGpkdW5ja0BnbWFpbC5jb20+CitDaHJpcyBQcmljZSA8
cHJpY2UuY0BnbWFpbC5jb20+CitHdXkgQmVkZm9yZCA8Z3V5YmVkZm9yZEBnbWFpbC5jb20+CitB
bWV5IFNha2hhZGVvIDxtZUBhbWV5bXMuY29tPgorTWlrZSBTaWRvcm92IDxtaWtlcy5la2JAZ21h
aWwuY29tPgorQW50aG9ueSBSeWFuIDxhbnRob255cnlhbjFAZ21haWwuY29tPgorRG9taW5payBE
LiBHZXllciA8ZG9taW5pay5nZXllckBnbWFpbC5jb20+CitHZW9yZ2UgS2F0cyA8a2F0c2dlb3Jn
ZWVrQGdtYWlsLmNvbT4KK0xpaGFuIExpIDxmcmFua2lldGVhcmRyb3BAZ21haWwuY29tPgorUm9u
bnkgU3ByaW5nZXIgPHNwcmluZ2VyLnJvbm55QGdtYWlsLmNvbT4KK0NocmlzIEFudGFraSA8Q2hy
aXNBbnRha2lAZ21haWwuY29tPgorTWFyaWFuIFNvbGxtYW5uIDxtYXJpYW4uc29sbG1hbm5AY2Fy
Z29tZWRpYS5jaD4KK25qaGFtYW5uIDxuamhhbWFubkBnbWFpbC5jb20+CitJbHlhIEthbnRvciA8
aWxpYWthbkBnbWFpbC5jb20+CitEYXZpZCBIb25nIDxkLmhvbmdAbWUuY29tPgorSm9obiBQYXVs
IDxqb2huQGpvaG5rcGF1bC5jb20+CitKYWtvYiBTdG9lY2sgPGpha29iQHBva2VybWFuaWEuZGU+
CitDaHJpc3RvcGhlciBKb25lcyA8Y2hyaXNAY2pxZWQuY29tPgorRm9yYmVzIExpbmRlc2F5IDxm
b3JiZXNAbGluZGVzYXkuY28udWs+CitTLiBBbmRyZXcgU2hlcHBhcmQgPGFuZHJld0B3cS5pbz4K
K0xlb25hcmRvIEJhbHRlciA8bGVvbmFyZG8uYmFsdGVyQGdtYWlsLmNvbT4KK1JvbWFuIFJlacOf
IDxtZUBzaWx2ZXJ3aW5kLmlvPgorQmVuankgQ3VpIDxiZW5qeXRyeXNAZ21haWwuY29tPgorUm9k
cmlnbyBSb3NlbmZlbGQgUm9zYXMgPHJyLnJvc2FzQGdtYWlsLmNvbT4KK0pvaG4gSG92ZW4gPGhv
dmVuakBnbWFpbC5jb20+CitQaGlsaXAgSsOkZ2Vuc3RlZHQgPHBoaWxpcEBmb29saXAub3JnPgor
Q2hyaXN0aWFuIEtvc21vd3NraSA8a3Ntd3NrQGdtYWlsLmNvbT4KK0xpYW5nIFBlbmcgPHBvcHBp
bmxwQGdtYWlsLmNvbT4KK1RKIFZhblRvbGwgPHRqLnZhbnRvbGxAZ21haWwuY29tPgorU2VueWEg
UHVnYWNoIDx1cGlzZnJlZUBvdXRsb29rLmNvbT4KK0F1cmVsaW8gRGUgUm9zYSA8YXVyZWxpb2Rl
cm9zYUBnbWFpbC5jb20+CitOYXphciBNb2tyeW5za3lpIDxuYXphckBtb2tyeW5za3lpLmNvbT4K
K0FtaXQgTWVyY2hhbnQgPGJ1bGxyZWRleWVzQGdtYWlsLmNvbT4KK0phc29uIEJlZGFyZCA8amFz
b24rZ2l0aHViQGpiZWRhcmQuY2E+CitBcnRodXIgVmVyc2NoYWV2ZSA8Y29udGFjdEBhcnRodXJ2
ZXJzY2hhZXZlLmJlPgorRGFuIEhhcnQgPGRhbmhhcnRAbm90b250aGVoaWdoc3RyZWV0LmNvbT4K
K0JpbiBYaW4gPHJoeXppeEBnbWFpbC5jb20+CitEYXZpZCBDb3JiYWNobyA8ZGF2aWRjb3JiYWNo
b0BnbWFpbC5jb20+CitWZWFjZXNsYXYgR3JpbWFsc2NoaSA8Z3JpbWFsc2NoaUB5YW5kZXgucnU+
CitEYW5pZWwgSHVzYXIgPGRhbm8uaHVzYXJAZ21haWwuY29tPgorRnJlZGVyaWMgSGVtYmVyZ2Vy
IDxtYWlsQGZyZWRlcmljLWhlbWJlcmdlci5kZT4KK0JlbiBUb2V3cyA8bWFzdGFoeWV0aUBnbWFp
bC5jb20+CitBZGl0eWEgUmFnaGF2YW4gPGFyYWdoYXZhbjNAZ21haWwuY29tPgorVmljdG9yIEhv
bXlha292IDx2a2hvbXlhY2tvdkBnbWFpbC5jb20+CitTaGl2YWppIFZhcm1hIDxjb250YWN0QHNo
aXZhaml2YXJtYS5jb20+CitOaWNvbGFzIEhFTlJZIDxpY2V3aWxAZ21haWwuY29tPgorQW5uZS1H
YWVsbGUgQ29sb20gPGNvbG9tYUB3ZXN0bWluc3Rlci5hYy51az4KK0dlb3JnZSBNYXVlciA8Z21h
dWVyQGdtYWlsLmNvbT4KK0xlb25hcmRvIEJyYWdhIDxsZW9uYXJkby5icmFnYUBnbWFpbC5jb20+
CitTdGVwaGVuIEVkZ2FyIDxzdGVwaGVuQG5ldHdlYi5jb20uYXU+CitUaG9tYXMgVG9ydG9yaW5p
IDx0aG9tYXN0b3J0b3JpbmlAZ21haWwuY29tPgorV2luc3RvbiBIb3dlcyA8d2luc3Rvbmhvd2Vz
QGdtYWlsLmNvbT4KK0pvbiBIZXN0ZXIgPGpvbi5kLmhlc3RlckBnbWFpbC5jb20+CitBbGV4YW5k
ZXIgTydNYXJhIDxtZUBhbGV4b21hcmEuY29tPgorQmFzdGlhbiBCdWNoaG9seiA8YnVjaGhvbHou
YmFzdGlhbkBnb29nbGVtYWlsLmNvbT4KK0FydGh1ciBTdG9seWFyIDxuZWtyLmZhYnVsYUBnbWFp
bC5jb20+CitDYWx2aW4gTWV0Y2FsZiA8Y2FsdmluLm1ldGNhbGZAZ21haWwuY29tPgorTXUgSGFp
YmFvIDxtaGJzZWFsQDE2My5jb20+CitSaWNoYXJkIE1jRGFuaWVsIDxybTAwMjZAdWFoLmVkdT4K
K0NocmlzIFJlYmVydCA8Z2l0aHViQHJlYmVydGlhLmNvbT4KK0dhYnJpZWwgU2NodWxob2YgPGdh
YnJpZWwuc2NodWxob2ZAaW50ZWwuY29tPgorR2lsYWQgUGVsZWcgPGdpbGFkcDAwN0BnbWFpbC5j
b20+CitNYXJ0aW4gTmF1bWFubiA8bWFydGluQGdlZWtvbmF1dC5kZT4KK01hcmVrIExld2FuZG93
c2tpIDxtLmxld2FuZG93c2tpQGNrc291cmNlLmNvbT4KK0JydW5vIFBlzIFyZWwgPGJydW5vcGVy
ZWxAZ21haWwuY29tPgorUmVlZCBMb2RlbiA8cmVlZEByZWVkbG9kZW4uY29tPgorRGFuaWVsIE5p
bGwgPGRhbmllbGxuaWxsQGdtYWlsLmNvbT4KK1lvbmd3b28gSmVvbiA8eW9uZ3dvby5qZW9uQG5h
dmVyY29ycC5jb20+CitTZWFuIEhlbmRlcnNvbiA8c2VhbmguemFAZ21haWwuY29tPgorUmljaGFy
ZCBLcmFhaWplbmhhZ2VuIDxzdGRpbitnaXRAcmlpY2hhcmQuY29tPgorQ29ubm9yIEF0aGVydG9u
IDxjLmxpYW0uYXRoZXJ0b25AZ21haWwuY29tPgorR2FyeSBZZSA8Z2FyeXN5ZUBnbWFpbC5jb20+
CitDaHJpc3RpYW4gR3JldGUgPHdlYm1hc3RlckBjaHJpc3RpYW5ncmV0ZS5jb20+CitMaXphIFJh
bW8gPGxpemEuaC5yYW1vQGdtYWlsLmNvbT4KK0p1bGlhbiBBbGV4YW5kZXIgTXVyaWxsbyA8anVs
aWFuLmFsZXhhbmRlci5tdXJpbGxvQGdtYWlsLmNvbT4KK0pvZWxsZSBGbGV1cmFudGluIDxqb2Fz
cXVlZW5pZWJlZUBnbWFpbC5jb20+CitKYWUgU3VuZyBQYXJrIDxhbGJlcnRvLnBhcmtAZ21haWwu
Y29tPgorSnVuIFN1biA8a2xzZm9yZXZlckBnbWFpbC5jb20+CitKb3NoIFNvcmVmIDxhcGFjaGVA
c29yZWYuY29tPgorSGVucnkgV29uZyA8aGVucnl3NGtAZ21haWwuY29tPgorSm9uIER1ZnJlc25l
IDxqb24uZHVmcmVzbmVAZ21haWwuY29tPgorTWFydGlqbiBXLiB2YW4gZGVyIExlZSA8bWFydGlq
bkB2YW5kZXJsZWUuY29tPgorRGV2aW4gV2lsc29uIDxkd2lsc29uNi5naXRodWJAZ21haWwuY29t
PgorU3RldmUgTWFvIDxtYW9jaGVueWFuQGdtYWlsLmNvbT4KK1phY2sgSGFsbCA8emFja2hhbGxA
b3V0bG9vay5jb20+CitCZXJuaGFyZCBNLiBXaWVkZW1hbm4gPGpxdWVyeWJtd0Bsc21vZC5kZT4K
K1RvZG9yIFByaWt1bW92IDx0b25vX3ByQGFidi5iZz4KK0poYSBOYW1hbiA8Y3JlYXRlbmFtYW5A
Z21haWwuY29tPgorV2lsbGlhbSBSb2JpbmV0IDx3aWxsaWFtLnJvYmluZXRAY29ub3N0aXguY29t
PgorQWxleGFuZGVyIExpc2lhbm9pIDxhbGwzZm94QGdtYWlsLmNvbT4KK1ZpdGFsaXkgVGVyemll
diA8dml0YWxpeXRlcnppZXZAZ21haWwuY29tPgorSm9lIFRydW1idWxsIDx0cnVtYnVsbC5qQGdt
YWlsLmNvbT4KK0FsZXhhbmRlciBLIDx4cHlyb0B5YS5ydT4KK0RhbWlhbiBTZW5uIDxqcXVlcnlA
dG9wYXhpLmNvZGVzPgorUmFsaW4gQ2hpbWV2IDxyYWxpbi5jaGltZXZAZ21haWwuY29tPgorRmVs
aXBlIFNhdGVsZXIgPGZzYXRlbGVyQGdtYWlsLmNvbT4KK0NocmlzdG9waGUgVGFmYW5pLURlcmVl
cGVyIDxjaHJpc3RvcGhldGRAaG90bWFpbC5mcj4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2Jh
Y2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvTElDRU5TRS50eHQgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNr
Ym9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L0xJQ0VOU0UudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUzMTJhNGM4
NjRkMjIwZDQ5NmFlMGI2ZmQxMTgzNGEwODM5NmZiODkKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L0xJQ0VOU0UudHh0CkBAIC0wLDAg
KzEsMzYgQEAKK0NvcHlyaWdodCBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0
b3JzLCBodHRwczovL2pxdWVyeS5vcmcvCisKK1RoaXMgc29mdHdhcmUgY29uc2lzdHMgb2Ygdm9s
dW50YXJ5IGNvbnRyaWJ1dGlvbnMgbWFkZSBieSBtYW55CitpbmRpdmlkdWFscy4gRm9yIGV4YWN0
IGNvbnRyaWJ1dGlvbiBoaXN0b3J5LCBzZWUgdGhlIHJldmlzaW9uIGhpc3RvcnkKK2F2YWlsYWJs
ZSBhdCBodHRwczovL2dpdGh1Yi5jb20vanF1ZXJ5L2pxdWVyeQorCitUaGUgZm9sbG93aW5nIGxp
Y2Vuc2UgYXBwbGllcyB0byBhbGwgcGFydHMgb2YgdGhpcyBzb2Z0d2FyZSBleGNlcHQgYXMKK2Rv
Y3VtZW50ZWQgYmVsb3c6CisKKz09PT0KKworUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwg
ZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCithIGNvcHkgb2YgdGhpcyBz
b2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKKyJTb2Z0d2Fy
ZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRp
bmcKK3dpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBt
ZXJnZSwgcHVibGlzaCwKK2Rpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGll
cyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bworcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29m
dHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCit0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnM6CisKK1RoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Np
b24gbm90aWNlIHNoYWxsIGJlCitpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFs
IHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKworVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJB
UyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCitFWFBSRVNTIE9SIElNUExJRUQs
IElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKK01FUkNIQU5U
QUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5ECitOT05JTkZSSU5H
RU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJT
IEJFCitMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQU4gQUNUSU9OCitPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJ
TkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04KK1dJVEggVEhFIFNPRlRXQVJFIE9SIFRI
RSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorCis9PT09CisKK0FsbCBm
aWxlcyBsb2NhdGVkIGluIHRoZSBub2RlX21vZHVsZXMgYW5kIGV4dGVybmFsIGRpcmVjdG9yaWVz
IGFyZQorZXh0ZXJuYWxseSBtYWludGFpbmVkIGxpYnJhcmllcyB1c2VkIGJ5IHRoaXMgc29mdHdh
cmUgd2hpY2ggaGF2ZSB0aGVpcgorb3duIGxpY2Vuc2VzOyB3ZSByZWNvbW1lbmQgeW91IHJlYWQg
dGhlbSwgYXMgdGhlaXIgdGVybXMgbWF5IGRpZmZlciBmcm9tCit0aGUgdGVybXMgYWJvdmUuCmRp
ZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L1JFQURN
RS5tZCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvUkVBRE1FLm1k
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmJhMzE3NGE3NzgxZTA4OTI4ZDM5MTZlNTY3YWJmZWJkNmU5NTAwMmEKLS0t
IC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5
L1JFQURNRS5tZApAQCAtMCwwICsxLDY1IEBACisjIGpRdWVyeQorCis+IGpRdWVyeSBpcyBhIGZh
c3QsIHNtYWxsLCBhbmQgZmVhdHVyZS1yaWNoIEphdmFTY3JpcHQgbGlicmFyeS4KKworRm9yIGlu
Zm9ybWF0aW9uIG9uIGhvdyB0byBnZXQgc3RhcnRlZCBhbmQgaG93IHRvIHVzZSBqUXVlcnksIHBs
ZWFzZSBzZWUgW2pRdWVyeSdzIGRvY3VtZW50YXRpb25dKGh0dHA6Ly9hcGkuanF1ZXJ5LmNvbS8p
LgorRm9yIHNvdXJjZSBmaWxlcyBhbmQgaXNzdWVzLCBwbGVhc2UgdmlzaXQgdGhlIFtqUXVlcnkg
cmVwb10oaHR0cHM6Ly9naXRodWIuY29tL2pxdWVyeS9qcXVlcnkpLgorCisjIyBJbmNsdWRpbmcg
alF1ZXJ5CisKK0JlbG93IGFyZSBzb21lIG9mIHRoZSBtb3N0IGNvbW1vbiB3YXlzIHRvIGluY2x1
ZGUgalF1ZXJ5LgorCisjIyMgQnJvd3NlcgorCisjIyMjIFNjcmlwdCB0YWcKKworYGBgaHRtbAor
PHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS0yLjIuMC5taW4uanMi
Pjwvc2NyaXB0PgorYGBgCisKKyMjIyMgQmFiZWwKKworW0JhYmVsXShodHRwOi8vYmFiZWxqcy5p
by8pIGlzIGEgbmV4dCBnZW5lcmF0aW9uIEphdmFTY3JpcHQgY29tcGlsZXIuIE9uZSBvZiB0aGUg
ZmVhdHVyZXMgaXMgdGhlIGFiaWxpdHkgdG8gdXNlIEVTNi9FUzIwMTUgbW9kdWxlcyBub3csIGV2
ZW4gdGhvdWdoIGJyb3dzZXJzIGRvIG5vdCB5ZXQgc3VwcG9ydCB0aGlzIGZlYXR1cmUgbmF0aXZl
bHkuCisKK2BgYGpzCitpbXBvcnQgJCBmcm9tICJqcXVlcnkiOworYGBgCisKKyMjIyMgQnJvd3Nl
cmlmeS9XZWJwYWNrCisKK1RoZXJlIGFyZSBzZXZlcmFsIHdheXMgdG8gdXNlIFtCcm93c2VyaWZ5
XShodHRwOi8vYnJvd3NlcmlmeS5vcmcvKSBhbmQgW1dlYnBhY2tdKGh0dHBzOi8vd2VicGFjay5n
aXRodWIuaW8vKS4gRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdXNpbmcgdGhlc2UgdG9vbHMsIHBs
ZWFzZSByZWZlciB0byB0aGUgY29ycmVzcG9uZGluZyBwcm9qZWN0J3MgZG9jdW1lbnRpb24uIElu
IHRoZSBzY3JpcHQsIGluY2x1ZGluZyBqUXVlcnkgd2lsbCB1c3VhbGx5IGxvb2sgbGlrZSB0aGlz
Li4uCisKK2BgYGpzCit2YXIgJCA9IHJlcXVpcmUoImpxdWVyeSIpOworYGBgCisKKyMjIyMgQU1E
IChBc3luY2hyb25vdXMgTW9kdWxlIERlZmluaXRpb24pCisKK0FNRCBpcyBhIG1vZHVsZSBmb3Jt
YXQgYnVpbHQgZm9yIHRoZSBicm93c2VyLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgd2UgcmVjb21t
ZW5kIFtyZXF1aXJlLmpzJyBkb2N1bWVudGF0aW9uXShodHRwOi8vcmVxdWlyZWpzLm9yZy9kb2Nz
L3doeWFtZC5odG1sKS4KKworYGBganMKK2RlZmluZShbImpxdWVyeSJdLCBmdW5jdGlvbigkKSB7
CisKK30pOworYGBgCisKKyMjIyBOb2RlCisKK1RvIGluY2x1ZGUgalF1ZXJ5IGluIFtOb2RlXShu
b2RlanMub3JnKSwgZmlyc3QgaW5zdGFsbCB3aXRoIG5wbS4KKworYGBgc2gKK25wbSBpbnN0YWxs
IGpxdWVyeQorYGBgCisKK0ZvciBqUXVlcnkgdG8gd29yayBpbiBOb2RlLCBhIHdpbmRvdyB3aXRo
IGEgZG9jdW1lbnQgaXMgcmVxdWlyZWQuIFNpbmNlIG5vIHN1Y2ggd2luZG93IGV4aXN0cyBuYXRp
dmVseSBpbiBOb2RlLCBvbmUgY2FuIGJlIG1vY2tlZCBieSB0b29scyBzdWNoIGFzIFtqc2RvbV0o
aHR0cHM6Ly9naXRodWIuY29tL3RtcHZhci9qc2RvbSkuIFRoaXMgY2FuIGJlIHVzZWZ1bCBmb3Ig
dGVzdGluZyBwdXJwb3Nlcy4KKworYGBganMKK3JlcXVpcmUoImpzZG9tIikuZW52KCIiLCBmdW5j
dGlvbihlcnIsIHdpbmRvdykgeworCWlmIChlcnIpIHsKKwkJY29uc29sZS5lcnJvcihlcnIpOwor
CQlyZXR1cm47CisJfQorCisJdmFyICQgPSByZXF1aXJlKCJqcXVlcnkiKSh3aW5kb3cpOworfSk7
CitgYGAKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVl
cnkvYm93ZXIuanNvbiBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkv
Ym93ZXIuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NTc5OGQ1YWRhNmRjMGJiM2QzZDE3OTlhMmZkZmJlNDg5
ZWQzZTE4Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1
bGVzL2pxdWVyeS9ib3dlci5qc29uCkBAIC0wLDAgKzEsMTQgQEAKK3sKKyAgIm5hbWUiOiAianF1
ZXJ5IiwKKyAgIm1haW4iOiAiZGlzdC9qcXVlcnkuanMiLAorICAibGljZW5zZSI6ICJNSVQiLAor
ICAiaWdub3JlIjogWworICAgICJwYWNrYWdlLmpzb24iCisgIF0sCisgICJrZXl3b3JkcyI6IFsK
KyAgICAianF1ZXJ5IiwKKyAgICAiamF2YXNjcmlwdCIsCisgICAgImJyb3dzZXIiLAorICAgICJs
aWJyYXJ5IgorICBdCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9kaXN0L2NvcmUuanMgYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L2Rpc3QvY29yZS5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42OTAwYjJlNGJlNDE2YWQzZDRjYWJjNDAzMjVjNzQ5MDE3ZjcxNDM2Ci0tLSAvZGV2
L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9kaXN0
L2NvcmUuanMKQEAgLTAsMCArMSw0ODIgQEAKKy8qIGdsb2JhbCBTeW1ib2wgKi8KKy8vIERlZmlu
aW5nIHRoaXMgZ2xvYmFsIGluIC5lc2xpbnRyYy5qc29uIHdvdWxkIGNyZWF0ZSBhIGRhbmdlciBv
ZiB1c2luZyB0aGUgZ2xvYmFsCisvLyB1bmd1YXJkZWQgaW4gYW5vdGhlciBwbGFjZSwgaXQgc2Vl
bXMgc2FmZXIgdG8gZGVmaW5lIGdsb2JhbCBvbmx5IGZvciB0aGlzIG1vZHVsZQorCitkZWZpbmUo
IFsKKyAgICAiLi92YXIvYXJyIiwKKyAgICAiLi92YXIvZG9jdW1lbnQiLAorICAgICIuL3Zhci9n
ZXRQcm90byIsCisgICAgIi4vdmFyL3NsaWNlIiwKKyAgICAiLi92YXIvY29uY2F0IiwKKyAgICAi
Li92YXIvcHVzaCIsCisgICAgIi4vdmFyL2luZGV4T2YiLAorICAgICIuL3Zhci9jbGFzczJ0eXBl
IiwKKyAgICAiLi92YXIvdG9TdHJpbmciLAorICAgICIuL3Zhci9oYXNPd24iLAorICAgICIuL3Zh
ci9mblRvU3RyaW5nIiwKKyAgICAiLi92YXIvT2JqZWN0RnVuY3Rpb25TdHJpbmciLAorICAgICIu
L3Zhci9zdXBwb3J0IiwKKyAgICAiLi9jb3JlL0RPTUV2YWwiCitdLCBmdW5jdGlvbiggYXJyLCBk
b2N1bWVudCwgZ2V0UHJvdG8sIHNsaWNlLCBjb25jYXQsIHB1c2gsIGluZGV4T2YsCisgICAgY2xh
c3MydHlwZSwgdG9TdHJpbmcsIGhhc093biwgZm5Ub1N0cmluZywgT2JqZWN0RnVuY3Rpb25TdHJp
bmcsCisgICAgc3VwcG9ydCwgRE9NRXZhbCApIHsKKworInVzZSBzdHJpY3QiOworCit2YXIKKyAg
ICB2ZXJzaW9uID0gIjMuMS4xIiwKKworICAgIC8vIERlZmluZSBhIGxvY2FsIGNvcHkgb2YgalF1
ZXJ5CisgICAgalF1ZXJ5ID0gZnVuY3Rpb24oIHNlbGVjdG9yLCBjb250ZXh0ICkgeworCisgICAg
ICAgIC8vIFRoZSBqUXVlcnkgb2JqZWN0IGlzIGFjdHVhbGx5IGp1c3QgdGhlIGluaXQgY29uc3Ry
dWN0b3IgJ2VuaGFuY2VkJworICAgICAgICAvLyBOZWVkIGluaXQgaWYgalF1ZXJ5IGlzIGNhbGxl
ZCAoanVzdCBhbGxvdyBlcnJvciB0byBiZSB0aHJvd24gaWYgbm90IGluY2x1ZGVkKQorICAgICAg
ICByZXR1cm4gbmV3IGpRdWVyeS5mbi5pbml0KCBzZWxlY3RvciwgY29udGV4dCApOworICAgIH0s
CisKKyAgICAvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4wIG9ubHkKKyAgICAvLyBNYWtlIHN1cmUg
d2UgdHJpbSBCT00gYW5kIE5CU1AKKyAgICBydHJpbSA9IC9eW1xzXHVGRUZGXHhBMF0rfFtcc1x1
RkVGRlx4QTBdKyQvZywKKworICAgIC8vIE1hdGNoZXMgZGFzaGVkIHN0cmluZyBmb3IgY2FtZWxp
emluZworICAgIHJtc1ByZWZpeCA9IC9eLW1zLS8sCisgICAgcmRhc2hBbHBoYSA9IC8tKFthLXpd
KS9nLAorCisgICAgLy8gVXNlZCBieSBqUXVlcnkuY2FtZWxDYXNlIGFzIGNhbGxiYWNrIHRvIHJl
cGxhY2UoKQorICAgIGZjYW1lbENhc2UgPSBmdW5jdGlvbiggYWxsLCBsZXR0ZXIgKSB7CisgICAg
ICAgIHJldHVybiBsZXR0ZXIudG9VcHBlckNhc2UoKTsKKyAgICB9OworCitqUXVlcnkuZm4gPSBq
UXVlcnkucHJvdG90eXBlID0geworCisgICAgLy8gVGhlIGN1cnJlbnQgdmVyc2lvbiBvZiBqUXVl
cnkgYmVpbmcgdXNlZAorICAgIGpxdWVyeTogdmVyc2lvbiwKKworICAgIGNvbnN0cnVjdG9yOiBq
UXVlcnksCisKKyAgICAvLyBUaGUgZGVmYXVsdCBsZW5ndGggb2YgYSBqUXVlcnkgb2JqZWN0IGlz
IDAKKyAgICBsZW5ndGg6IDAsCisKKyAgICB0b0FycmF5OiBmdW5jdGlvbigpIHsKKyAgICAgICAg
cmV0dXJuIHNsaWNlLmNhbGwoIHRoaXMgKTsKKyAgICB9LAorCisgICAgLy8gR2V0IHRoZSBOdGgg
ZWxlbWVudCBpbiB0aGUgbWF0Y2hlZCBlbGVtZW50IHNldCBPUgorICAgIC8vIEdldCB0aGUgd2hv
bGUgbWF0Y2hlZCBlbGVtZW50IHNldCBhcyBhIGNsZWFuIGFycmF5CisgICAgZ2V0OiBmdW5jdGlv
biggbnVtICkgeworCisgICAgICAgIC8vIFJldHVybiBhbGwgdGhlIGVsZW1lbnRzIGluIGEgY2xl
YW4gYXJyYXkKKyAgICAgICAgaWYgKCBudW0gPT0gbnVsbCApIHsKKyAgICAgICAgICAgIHJldHVy
biBzbGljZS5jYWxsKCB0aGlzICk7CisgICAgICAgIH0KKworICAgICAgICAvLyBSZXR1cm4ganVz
dCB0aGUgb25lIGVsZW1lbnQgZnJvbSB0aGUgc2V0CisgICAgICAgIHJldHVybiBudW0gPCAwID8g
dGhpc1sgbnVtICsgdGhpcy5sZW5ndGggXSA6IHRoaXNbIG51bSBdOworICAgIH0sCisKKyAgICAv
LyBUYWtlIGFuIGFycmF5IG9mIGVsZW1lbnRzIGFuZCBwdXNoIGl0IG9udG8gdGhlIHN0YWNrCisg
ICAgLy8gKHJldHVybmluZyB0aGUgbmV3IG1hdGNoZWQgZWxlbWVudCBzZXQpCisgICAgcHVzaFN0
YWNrOiBmdW5jdGlvbiggZWxlbXMgKSB7CisKKyAgICAgICAgLy8gQnVpbGQgYSBuZXcgalF1ZXJ5
IG1hdGNoZWQgZWxlbWVudCBzZXQKKyAgICAgICAgdmFyIHJldCA9IGpRdWVyeS5tZXJnZSggdGhp
cy5jb25zdHJ1Y3RvcigpLCBlbGVtcyApOworCisgICAgICAgIC8vIEFkZCB0aGUgb2xkIG9iamVj
dCBvbnRvIHRoZSBzdGFjayAoYXMgYSByZWZlcmVuY2UpCisgICAgICAgIHJldC5wcmV2T2JqZWN0
ID0gdGhpczsKKworICAgICAgICAvLyBSZXR1cm4gdGhlIG5ld2x5LWZvcm1lZCBlbGVtZW50IHNl
dAorICAgICAgICByZXR1cm4gcmV0OworICAgIH0sCisKKyAgICAvLyBFeGVjdXRlIGEgY2FsbGJh
Y2sgZm9yIGV2ZXJ5IGVsZW1lbnQgaW4gdGhlIG1hdGNoZWQgc2V0LgorICAgIGVhY2g6IGZ1bmN0
aW9uKCBjYWxsYmFjayApIHsKKyAgICAgICAgcmV0dXJuIGpRdWVyeS5lYWNoKCB0aGlzLCBjYWxs
YmFjayApOworICAgIH0sCisKKyAgICBtYXA6IGZ1bmN0aW9uKCBjYWxsYmFjayApIHsKKyAgICAg
ICAgcmV0dXJuIHRoaXMucHVzaFN0YWNrKCBqUXVlcnkubWFwKCB0aGlzLCBmdW5jdGlvbiggZWxl
bSwgaSApIHsKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjay5jYWxsKCBlbGVtLCBpLCBlbGVt
ICk7CisgICAgICAgIH0gKSApOworICAgIH0sCisKKyAgICBzbGljZTogZnVuY3Rpb24oKSB7Cisg
ICAgICAgIHJldHVybiB0aGlzLnB1c2hTdGFjayggc2xpY2UuYXBwbHkoIHRoaXMsIGFyZ3VtZW50
cyApICk7CisgICAgfSwKKworICAgIGZpcnN0OiBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJu
IHRoaXMuZXEoIDAgKTsKKyAgICB9LAorCisgICAgbGFzdDogZnVuY3Rpb24oKSB7CisgICAgICAg
IHJldHVybiB0aGlzLmVxKCAtMSApOworICAgIH0sCisKKyAgICBlcTogZnVuY3Rpb24oIGkgKSB7
CisgICAgICAgIHZhciBsZW4gPSB0aGlzLmxlbmd0aCwKKyAgICAgICAgICAgIGogPSAraSArICgg
aSA8IDAgPyBsZW4gOiAwICk7CisgICAgICAgIHJldHVybiB0aGlzLnB1c2hTdGFjayggaiA+PSAw
ICYmIGogPCBsZW4gPyBbIHRoaXNbIGogXSBdIDogW10gKTsKKyAgICB9LAorCisgICAgZW5kOiBm
dW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMucHJldk9iamVjdCB8fCB0aGlzLmNvbnN0
cnVjdG9yKCk7CisgICAgfSwKKworICAgIC8vIEZvciBpbnRlcm5hbCB1c2Ugb25seS4KKyAgICAv
LyBCZWhhdmVzIGxpa2UgYW4gQXJyYXkncyBtZXRob2QsIG5vdCBsaWtlIGEgalF1ZXJ5IG1ldGhv
ZC4KKyAgICBwdXNoOiBwdXNoLAorICAgIHNvcnQ6IGFyci5zb3J0LAorICAgIHNwbGljZTogYXJy
LnNwbGljZQorfTsKKworalF1ZXJ5LmV4dGVuZCA9IGpRdWVyeS5mbi5leHRlbmQgPSBmdW5jdGlv
bigpIHsKKyAgICB2YXIgb3B0aW9ucywgbmFtZSwgc3JjLCBjb3B5LCBjb3B5SXNBcnJheSwgY2xv
bmUsCisgICAgICAgIHRhcmdldCA9IGFyZ3VtZW50c1sgMCBdIHx8IHt9LAorICAgICAgICBpID0g
MSwKKyAgICAgICAgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aCwKKyAgICAgICAgZGVlcCA9IGZh
bHNlOworCisgICAgLy8gSGFuZGxlIGEgZGVlcCBjb3B5IHNpdHVhdGlvbgorICAgIGlmICggdHlw
ZW9mIHRhcmdldCA9PT0gImJvb2xlYW4iICkgeworICAgICAgICBkZWVwID0gdGFyZ2V0OworCisg
ICAgICAgIC8vIFNraXAgdGhlIGJvb2xlYW4gYW5kIHRoZSB0YXJnZXQKKyAgICAgICAgdGFyZ2V0
ID0gYXJndW1lbnRzWyBpIF0gfHwge307CisgICAgICAgIGkrKzsKKyAgICB9CisKKyAgICAvLyBI
YW5kbGUgY2FzZSB3aGVuIHRhcmdldCBpcyBhIHN0cmluZyBvciBzb21ldGhpbmcgKHBvc3NpYmxl
IGluIGRlZXAgY29weSkKKyAgICBpZiAoIHR5cGVvZiB0YXJnZXQgIT09ICJvYmplY3QiICYmICFq
UXVlcnkuaXNGdW5jdGlvbiggdGFyZ2V0ICkgKSB7CisgICAgICAgIHRhcmdldCA9IHt9OworICAg
IH0KKworICAgIC8vIEV4dGVuZCBqUXVlcnkgaXRzZWxmIGlmIG9ubHkgb25lIGFyZ3VtZW50IGlz
IHBhc3NlZAorICAgIGlmICggaSA9PT0gbGVuZ3RoICkgeworICAgICAgICB0YXJnZXQgPSB0aGlz
OworICAgICAgICBpLS07CisgICAgfQorCisgICAgZm9yICggOyBpIDwgbGVuZ3RoOyBpKysgKSB7
CisKKyAgICAgICAgLy8gT25seSBkZWFsIHdpdGggbm9uLW51bGwvdW5kZWZpbmVkIHZhbHVlcwor
ICAgICAgICBpZiAoICggb3B0aW9ucyA9IGFyZ3VtZW50c1sgaSBdICkgIT0gbnVsbCApIHsKKwor
ICAgICAgICAgICAgLy8gRXh0ZW5kIHRoZSBiYXNlIG9iamVjdAorICAgICAgICAgICAgZm9yICgg
bmFtZSBpbiBvcHRpb25zICkgeworICAgICAgICAgICAgICAgIHNyYyA9IHRhcmdldFsgbmFtZSBd
OworICAgICAgICAgICAgICAgIGNvcHkgPSBvcHRpb25zWyBuYW1lIF07CisKKyAgICAgICAgICAg
ICAgICAvLyBQcmV2ZW50IG5ldmVyLWVuZGluZyBsb29wCisgICAgICAgICAgICAgICAgaWYgKCB0
YXJnZXQgPT09IGNvcHkgKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIFJlY3Vyc2UgaWYgd2UncmUgbWVyZ2lu
ZyBwbGFpbiBvYmplY3RzIG9yIGFycmF5cworICAgICAgICAgICAgICAgIGlmICggZGVlcCAmJiBj
b3B5ICYmICggalF1ZXJ5LmlzUGxhaW5PYmplY3QoIGNvcHkgKSB8fAorICAgICAgICAgICAgICAg
ICAgICAoIGNvcHlJc0FycmF5ID0galF1ZXJ5LmlzQXJyYXkoIGNvcHkgKSApICkgKSB7CisKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKCBjb3B5SXNBcnJheSApIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNvcHlJc0FycmF5ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBjbG9u
ZSA9IHNyYyAmJiBqUXVlcnkuaXNBcnJheSggc3JjICkgPyBzcmMgOiBbXTsKKworICAgICAgICAg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgY2xvbmUgPSBzcmMg
JiYgalF1ZXJ5LmlzUGxhaW5PYmplY3QoIHNyYyApID8gc3JjIDoge307CisgICAgICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAvLyBOZXZlciBtb3ZlIG9yaWdpbmFsIG9i
amVjdHMsIGNsb25lIHRoZW0KKyAgICAgICAgICAgICAgICAgICAgdGFyZ2V0WyBuYW1lIF0gPSBq
UXVlcnkuZXh0ZW5kKCBkZWVwLCBjbG9uZSwgY29weSApOworCisgICAgICAgICAgICAgICAgLy8g
RG9uJ3QgYnJpbmcgaW4gdW5kZWZpbmVkIHZhbHVlcworICAgICAgICAgICAgICAgIH0gZWxzZSBp
ZiAoIGNvcHkgIT09IHVuZGVmaW5lZCApIHsKKyAgICAgICAgICAgICAgICAgICAgdGFyZ2V0WyBu
YW1lIF0gPSBjb3B5OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KKworICAgIC8vIFJldHVybiB0aGUgbW9kaWZpZWQgb2JqZWN0CisgICAgcmV0dXJu
IHRhcmdldDsKK307CisKK2pRdWVyeS5leHRlbmQoIHsKKworICAgIC8vIFVuaXF1ZSBmb3IgZWFj
aCBjb3B5IG9mIGpRdWVyeSBvbiB0aGUgcGFnZQorICAgIGV4cGFuZG86ICJqUXVlcnkiICsgKCB2
ZXJzaW9uICsgTWF0aC5yYW5kb20oKSApLnJlcGxhY2UoIC9cRC9nLCAiIiApLAorCisgICAgLy8g
QXNzdW1lIGpRdWVyeSBpcyByZWFkeSB3aXRob3V0IHRoZSByZWFkeSBtb2R1bGUKKyAgICBpc1Jl
YWR5OiB0cnVlLAorCisgICAgZXJyb3I6IGZ1bmN0aW9uKCBtc2cgKSB7CisgICAgICAgIHRocm93
IG5ldyBFcnJvciggbXNnICk7CisgICAgfSwKKworICAgIG5vb3A6IGZ1bmN0aW9uKCkge30sCisK
KyAgICBpc0Z1bmN0aW9uOiBmdW5jdGlvbiggb2JqICkgeworICAgICAgICByZXR1cm4galF1ZXJ5
LnR5cGUoIG9iaiApID09PSAiZnVuY3Rpb24iOworICAgIH0sCisKKyAgICBpc0FycmF5OiBBcnJh
eS5pc0FycmF5LAorCisgICAgaXNXaW5kb3c6IGZ1bmN0aW9uKCBvYmogKSB7CisgICAgICAgIHJl
dHVybiBvYmogIT0gbnVsbCAmJiBvYmogPT09IG9iai53aW5kb3c7CisgICAgfSwKKworICAgIGlz
TnVtZXJpYzogZnVuY3Rpb24oIG9iaiApIHsKKworICAgICAgICAvLyBBcyBvZiBqUXVlcnkgMy4w
LCBpc051bWVyaWMgaXMgbGltaXRlZCB0bworICAgICAgICAvLyBzdHJpbmdzIGFuZCBudW1iZXJz
IChwcmltaXRpdmVzIG9yIG9iamVjdHMpCisgICAgICAgIC8vIHRoYXQgY2FuIGJlIGNvZXJjZWQg
dG8gZmluaXRlIG51bWJlcnMgKGdoLTI2NjIpCisgICAgICAgIHZhciB0eXBlID0galF1ZXJ5LnR5
cGUoIG9iaiApOworICAgICAgICByZXR1cm4gKCB0eXBlID09PSAibnVtYmVyIiB8fCB0eXBlID09
PSAic3RyaW5nIiApICYmCisKKyAgICAgICAgICAgIC8vIHBhcnNlRmxvYXQgTmFOcyBudW1lcmlj
LWNhc3QgZmFsc2UgcG9zaXRpdmVzICgiIikKKyAgICAgICAgICAgIC8vIC4uLmJ1dCBtaXNpbnRl
cnByZXRzIGxlYWRpbmctbnVtYmVyIHN0cmluZ3MsIHBhcnRpY3VsYXJseSBoZXggbGl0ZXJhbHMg
KCIweC4uLiIpCisgICAgICAgICAgICAvLyBzdWJ0cmFjdGlvbiBmb3JjZXMgaW5maW5pdGllcyB0
byBOYU4KKyAgICAgICAgICAgICFpc05hTiggb2JqIC0gcGFyc2VGbG9hdCggb2JqICkgKTsKKyAg
ICB9LAorCisgICAgaXNQbGFpbk9iamVjdDogZnVuY3Rpb24oIG9iaiApIHsKKyAgICAgICAgdmFy
IHByb3RvLCBDdG9yOworCisgICAgICAgIC8vIERldGVjdCBvYnZpb3VzIG5lZ2F0aXZlcworICAg
ICAgICAvLyBVc2UgdG9TdHJpbmcgaW5zdGVhZCBvZiBqUXVlcnkudHlwZSB0byBjYXRjaCBob3N0
IG9iamVjdHMKKyAgICAgICAgaWYgKCAhb2JqIHx8IHRvU3RyaW5nLmNhbGwoIG9iaiApICE9PSAi
W29iamVjdCBPYmplY3RdIiApIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
fQorCisgICAgICAgIHByb3RvID0gZ2V0UHJvdG8oIG9iaiApOworCisgICAgICAgIC8vIE9iamVj
dHMgd2l0aCBubyBwcm90b3R5cGUgKGUuZy4sIGBPYmplY3QuY3JlYXRlKCBudWxsIClgKSBhcmUg
cGxhaW4KKyAgICAgICAgaWYgKCAhcHJvdG8gKSB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgfQorCisgICAgICAgIC8vIE9iamVjdHMgd2l0aCBwcm90b3R5cGUgYXJlIHBsYWlu
IGlmZiB0aGV5IHdlcmUgY29uc3RydWN0ZWQgYnkgYSBnbG9iYWwgT2JqZWN0IGZ1bmN0aW9uCisg
ICAgICAgIEN0b3IgPSBoYXNPd24uY2FsbCggcHJvdG8sICJjb25zdHJ1Y3RvciIgKSAmJiBwcm90
by5jb25zdHJ1Y3RvcjsKKyAgICAgICAgcmV0dXJuIHR5cGVvZiBDdG9yID09PSAiZnVuY3Rpb24i
ICYmIGZuVG9TdHJpbmcuY2FsbCggQ3RvciApID09PSBPYmplY3RGdW5jdGlvblN0cmluZzsKKyAg
ICB9LAorCisgICAgaXNFbXB0eU9iamVjdDogZnVuY3Rpb24oIG9iaiApIHsKKworICAgICAgICAv
KiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqLworICAgICAgICAvLyBTZWUgaHR0cHM6
Ly9naXRodWIuY29tL2VzbGludC9lc2xpbnQvaXNzdWVzLzYxMjUKKyAgICAgICAgdmFyIG5hbWU7
CisKKyAgICAgICAgZm9yICggbmFtZSBpbiBvYmogKSB7CisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSwKKworICAgIHR5cGU6
IGZ1bmN0aW9uKCBvYmogKSB7CisgICAgICAgIGlmICggb2JqID09IG51bGwgKSB7CisgICAgICAg
ICAgICByZXR1cm4gb2JqICsgIiI7CisgICAgICAgIH0KKworICAgICAgICAvLyBTdXBwb3J0OiBB
bmRyb2lkIDw9Mi4zIG9ubHkgKGZ1bmN0aW9uaXNoIFJlZ0V4cCkKKyAgICAgICAgcmV0dXJuIHR5
cGVvZiBvYmogPT09ICJvYmplY3QiIHx8IHR5cGVvZiBvYmogPT09ICJmdW5jdGlvbiIgPworICAg
ICAgICAgICAgY2xhc3MydHlwZVsgdG9TdHJpbmcuY2FsbCggb2JqICkgXSB8fCAib2JqZWN0IiA6
CisgICAgICAgICAgICB0eXBlb2Ygb2JqOworICAgIH0sCisKKyAgICAvLyBFdmFsdWF0ZXMgYSBz
Y3JpcHQgaW4gYSBnbG9iYWwgY29udGV4dAorICAgIGdsb2JhbEV2YWw6IGZ1bmN0aW9uKCBjb2Rl
ICkgeworICAgICAgICBET01FdmFsKCBjb2RlICk7CisgICAgfSwKKworICAgIC8vIENvbnZlcnQg
ZGFzaGVkIHRvIGNhbWVsQ2FzZTsgdXNlZCBieSB0aGUgY3NzIGFuZCBkYXRhIG1vZHVsZXMKKyAg
ICAvLyBTdXBwb3J0OiBJRSA8PTkgLSAxMSwgRWRnZSAxMiAtIDEzCisgICAgLy8gTWljcm9zb2Z0
IGZvcmdvdCB0byBodW1wIHRoZWlyIHZlbmRvciBwcmVmaXggKCM5NTcyKQorICAgIGNhbWVsQ2Fz
ZTogZnVuY3Rpb24oIHN0cmluZyApIHsKKyAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKCBy
bXNQcmVmaXgsICJtcy0iICkucmVwbGFjZSggcmRhc2hBbHBoYSwgZmNhbWVsQ2FzZSApOworICAg
IH0sCisKKyAgICBub2RlTmFtZTogZnVuY3Rpb24oIGVsZW0sIG5hbWUgKSB7CisgICAgICAgIHJl
dHVybiBlbGVtLm5vZGVOYW1lICYmIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gbmFt
ZS50b0xvd2VyQ2FzZSgpOworICAgIH0sCisKKyAgICBlYWNoOiBmdW5jdGlvbiggb2JqLCBjYWxs
YmFjayApIHsKKyAgICAgICAgdmFyIGxlbmd0aCwgaSA9IDA7CisKKyAgICAgICAgaWYgKCBpc0Fy
cmF5TGlrZSggb2JqICkgKSB7CisgICAgICAgICAgICBsZW5ndGggPSBvYmoubGVuZ3RoOworICAg
ICAgICAgICAgZm9yICggOyBpIDwgbGVuZ3RoOyBpKysgKSB7CisgICAgICAgICAgICAgICAgaWYg
KCBjYWxsYmFjay5jYWxsKCBvYmpbIGkgXSwgaSwgb2JqWyBpIF0gKSA9PT0gZmFsc2UgKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGZvciAoIGkgaW4gb2JqICkgeworICAg
ICAgICAgICAgICAgIGlmICggY2FsbGJhY2suY2FsbCggb2JqWyBpIF0sIGksIG9ialsgaSBdICkg
PT09IGZhbHNlICkgeworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gb2JqOworICAg
IH0sCisKKyAgICAvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4wIG9ubHkKKyAgICB0cmltOiBmdW5j
dGlvbiggdGV4dCApIHsKKyAgICAgICAgcmV0dXJuIHRleHQgPT0gbnVsbCA/CisgICAgICAgICAg
ICAiIiA6CisgICAgICAgICAgICAoIHRleHQgKyAiIiApLnJlcGxhY2UoIHJ0cmltLCAiIiApOwor
ICAgIH0sCisKKyAgICAvLyByZXN1bHRzIGlzIGZvciBpbnRlcm5hbCB1c2FnZSBvbmx5CisgICAg
bWFrZUFycmF5OiBmdW5jdGlvbiggYXJyLCByZXN1bHRzICkgeworICAgICAgICB2YXIgcmV0ID0g
cmVzdWx0cyB8fCBbXTsKKworICAgICAgICBpZiAoIGFyciAhPSBudWxsICkgeworICAgICAgICAg
ICAgaWYgKCBpc0FycmF5TGlrZSggT2JqZWN0KCBhcnIgKSApICkgeworICAgICAgICAgICAgICAg
IGpRdWVyeS5tZXJnZSggcmV0LAorICAgICAgICAgICAgICAgICAgICB0eXBlb2YgYXJyID09PSAi
c3RyaW5nIiA/CisgICAgICAgICAgICAgICAgICAgIFsgYXJyIF0gOiBhcnIKKyAgICAgICAgICAg
ICAgICApOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBwdXNoLmNhbGwo
IHJldCwgYXJyICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4g
cmV0OworICAgIH0sCisKKyAgICBpbkFycmF5OiBmdW5jdGlvbiggZWxlbSwgYXJyLCBpICkgewor
ICAgICAgICByZXR1cm4gYXJyID09IG51bGwgPyAtMSA6IGluZGV4T2YuY2FsbCggYXJyLCBlbGVt
LCBpICk7CisgICAgfSwKKworICAgIC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00LjAgb25seSwgUGhh
bnRvbUpTIDEgb25seQorICAgIC8vIHB1c2guYXBwbHkoXywgYXJyYXlsaWtlKSB0aHJvd3Mgb24g
YW5jaWVudCBXZWJLaXQKKyAgICBtZXJnZTogZnVuY3Rpb24oIGZpcnN0LCBzZWNvbmQgKSB7Cisg
ICAgICAgIHZhciBsZW4gPSArc2Vjb25kLmxlbmd0aCwKKyAgICAgICAgICAgIGogPSAwLAorICAg
ICAgICAgICAgaSA9IGZpcnN0Lmxlbmd0aDsKKworICAgICAgICBmb3IgKCA7IGogPCBsZW47IGor
KyApIHsKKyAgICAgICAgICAgIGZpcnN0WyBpKysgXSA9IHNlY29uZFsgaiBdOworICAgICAgICB9
CisKKyAgICAgICAgZmlyc3QubGVuZ3RoID0gaTsKKworICAgICAgICByZXR1cm4gZmlyc3Q7Cisg
ICAgfSwKKworICAgIGdyZXA6IGZ1bmN0aW9uKCBlbGVtcywgY2FsbGJhY2ssIGludmVydCApIHsK
KyAgICAgICAgdmFyIGNhbGxiYWNrSW52ZXJzZSwKKyAgICAgICAgICAgIG1hdGNoZXMgPSBbXSwK
KyAgICAgICAgICAgIGkgPSAwLAorICAgICAgICAgICAgbGVuZ3RoID0gZWxlbXMubGVuZ3RoLAor
ICAgICAgICAgICAgY2FsbGJhY2tFeHBlY3QgPSAhaW52ZXJ0OworCisgICAgICAgIC8vIEdvIHRo
cm91Z2ggdGhlIGFycmF5LCBvbmx5IHNhdmluZyB0aGUgaXRlbXMKKyAgICAgICAgLy8gdGhhdCBw
YXNzIHRoZSB2YWxpZGF0b3IgZnVuY3Rpb24KKyAgICAgICAgZm9yICggOyBpIDwgbGVuZ3RoOyBp
KysgKSB7CisgICAgICAgICAgICBjYWxsYmFja0ludmVyc2UgPSAhY2FsbGJhY2soIGVsZW1zWyBp
IF0sIGkgKTsKKyAgICAgICAgICAgIGlmICggY2FsbGJhY2tJbnZlcnNlICE9PSBjYWxsYmFja0V4
cGVjdCApIHsKKyAgICAgICAgICAgICAgICBtYXRjaGVzLnB1c2goIGVsZW1zWyBpIF0gKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBtYXRjaGVzOworICAgIH0s
CisKKyAgICAvLyBhcmcgaXMgZm9yIGludGVybmFsIHVzYWdlIG9ubHkKKyAgICBtYXA6IGZ1bmN0
aW9uKCBlbGVtcywgY2FsbGJhY2ssIGFyZyApIHsKKyAgICAgICAgdmFyIGxlbmd0aCwgdmFsdWUs
CisgICAgICAgICAgICBpID0gMCwKKyAgICAgICAgICAgIHJldCA9IFtdOworCisgICAgICAgIC8v
IEdvIHRocm91Z2ggdGhlIGFycmF5LCB0cmFuc2xhdGluZyBlYWNoIG9mIHRoZSBpdGVtcyB0byB0
aGVpciBuZXcgdmFsdWVzCisgICAgICAgIGlmICggaXNBcnJheUxpa2UoIGVsZW1zICkgKSB7Cisg
ICAgICAgICAgICBsZW5ndGggPSBlbGVtcy5sZW5ndGg7CisgICAgICAgICAgICBmb3IgKCA7IGkg
PCBsZW5ndGg7IGkrKyApIHsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IGNhbGxiYWNrKCBlbGVt
c1sgaSBdLCBpLCBhcmcgKTsKKworICAgICAgICAgICAgICAgIGlmICggdmFsdWUgIT0gbnVsbCAp
IHsKKyAgICAgICAgICAgICAgICAgICAgcmV0LnB1c2goIHZhbHVlICk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgIC8vIEdvIHRocm91Z2ggZXZlcnkga2V5IG9u
IHRoZSBvYmplY3QsCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBmb3IgKCBpIGluIGVs
ZW1zICkgeworICAgICAgICAgICAgICAgIHZhbHVlID0gY2FsbGJhY2soIGVsZW1zWyBpIF0sIGks
IGFyZyApOworCisgICAgICAgICAgICAgICAgaWYgKCB2YWx1ZSAhPSBudWxsICkgeworICAgICAg
ICAgICAgICAgICAgICByZXQucHVzaCggdmFsdWUgKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBGbGF0dGVuIGFueSBuZXN0ZWQgYXJy
YXlzCisgICAgICAgIHJldHVybiBjb25jYXQuYXBwbHkoIFtdLCByZXQgKTsKKyAgICB9LAorCisg
ICAgLy8gQSBnbG9iYWwgR1VJRCBjb3VudGVyIGZvciBvYmplY3RzCisgICAgZ3VpZDogMSwKKwor
ICAgIC8vIEJpbmQgYSBmdW5jdGlvbiB0byBhIGNvbnRleHQsIG9wdGlvbmFsbHkgcGFydGlhbGx5
IGFwcGx5aW5nIGFueQorICAgIC8vIGFyZ3VtZW50cy4KKyAgICBwcm94eTogZnVuY3Rpb24oIGZu
LCBjb250ZXh0ICkgeworICAgICAgICB2YXIgdG1wLCBhcmdzLCBwcm94eTsKKworICAgICAgICBp
ZiAoIHR5cGVvZiBjb250ZXh0ID09PSAic3RyaW5nIiApIHsKKyAgICAgICAgICAgIHRtcCA9IGZu
WyBjb250ZXh0IF07CisgICAgICAgICAgICBjb250ZXh0ID0gZm47CisgICAgICAgICAgICBmbiA9
IHRtcDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFF1aWNrIGNoZWNrIHRvIGRldGVybWluZSBp
ZiB0YXJnZXQgaXMgY2FsbGFibGUsIGluIHRoZSBzcGVjCisgICAgICAgIC8vIHRoaXMgdGhyb3dz
IGEgVHlwZUVycm9yLCBidXQgd2Ugd2lsbCBqdXN0IHJldHVybiB1bmRlZmluZWQuCisgICAgICAg
IGlmICggIWpRdWVyeS5pc0Z1bmN0aW9uKCBmbiApICkgeworICAgICAgICAgICAgcmV0dXJuIHVu
ZGVmaW5lZDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFNpbXVsYXRlZCBiaW5kCisgICAgICAg
IGFyZ3MgPSBzbGljZS5jYWxsKCBhcmd1bWVudHMsIDIgKTsKKyAgICAgICAgcHJveHkgPSBmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgIHJldHVybiBmbi5hcHBseSggY29udGV4dCB8fCB0aGlzLCBh
cmdzLmNvbmNhdCggc2xpY2UuY2FsbCggYXJndW1lbnRzICkgKSApOworICAgICAgICB9OworCisg
ICAgICAgIC8vIFNldCB0aGUgZ3VpZCBvZiB1bmlxdWUgaGFuZGxlciB0byB0aGUgc2FtZSBvZiBv
cmlnaW5hbCBoYW5kbGVyLCBzbyBpdCBjYW4gYmUgcmVtb3ZlZAorICAgICAgICBwcm94eS5ndWlk
ID0gZm4uZ3VpZCA9IGZuLmd1aWQgfHwgalF1ZXJ5Lmd1aWQrKzsKKworICAgICAgICByZXR1cm4g
cHJveHk7CisgICAgfSwKKworICAgIG5vdzogRGF0ZS5ub3csCisKKyAgICAvLyBqUXVlcnkuc3Vw
cG9ydCBpcyBub3QgdXNlZCBpbiBDb3JlIGJ1dCBvdGhlciBwcm9qZWN0cyBhdHRhY2ggdGhlaXIK
KyAgICAvLyBwcm9wZXJ0aWVzIHRvIGl0IHNvIGl0IG5lZWRzIHRvIGV4aXN0LgorICAgIHN1cHBv
cnQ6IHN1cHBvcnQKK30gKTsKKworaWYgKCB0eXBlb2YgU3ltYm9sID09PSAiZnVuY3Rpb24iICkg
eworICAgIGpRdWVyeS5mblsgU3ltYm9sLml0ZXJhdG9yIF0gPSBhcnJbIFN5bWJvbC5pdGVyYXRv
ciBdOworfQorCisvLyBQb3B1bGF0ZSB0aGUgY2xhc3MydHlwZSBtYXAKK2pRdWVyeS5lYWNoKCAi
Qm9vbGVhbiBOdW1iZXIgU3RyaW5nIEZ1bmN0aW9uIEFycmF5IERhdGUgUmVnRXhwIE9iamVjdCBF
cnJvciBTeW1ib2wiLnNwbGl0KCAiICIgKSwKK2Z1bmN0aW9uKCBpLCBuYW1lICkgeworICAgIGNs
YXNzMnR5cGVbICJbb2JqZWN0ICIgKyBuYW1lICsgIl0iIF0gPSBuYW1lLnRvTG93ZXJDYXNlKCk7
Cit9ICk7CisKK2Z1bmN0aW9uIGlzQXJyYXlMaWtlKCBvYmogKSB7CisKKyAgICAvLyBTdXBwb3J0
OiByZWFsIGlPUyA4LjIgb25seSAobm90IHJlcHJvZHVjaWJsZSBpbiBzaW11bGF0b3IpCisgICAg
Ly8gYGluYCBjaGVjayB1c2VkIHRvIHByZXZlbnQgSklUIGVycm9yIChnaC0yMTQ1KQorICAgIC8v
IGhhc093biBpc24ndCB1c2VkIGhlcmUgZHVlIHRvIGZhbHNlIG5lZ2F0aXZlcworICAgIC8vIHJl
Z2FyZGluZyBOb2RlbGlzdCBsZW5ndGggaW4gSUUKKyAgICB2YXIgbGVuZ3RoID0gISFvYmogJiYg
Imxlbmd0aCIgaW4gb2JqICYmIG9iai5sZW5ndGgsCisgICAgICAgIHR5cGUgPSBqUXVlcnkudHlw
ZSggb2JqICk7CisKKyAgICBpZiAoIHR5cGUgPT09ICJmdW5jdGlvbiIgfHwgalF1ZXJ5LmlzV2lu
ZG93KCBvYmogKSApIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVy
biB0eXBlID09PSAiYXJyYXkiIHx8IGxlbmd0aCA9PT0gMCB8fAorICAgICAgICB0eXBlb2YgbGVu
Z3RoID09PSAibnVtYmVyIiAmJiBsZW5ndGggPiAwICYmICggbGVuZ3RoIC0gMSApIGluIG9iajsK
K30KKworcmV0dXJuIGpRdWVyeTsKK30gKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2ti
b25lL25vZGVfbW9kdWxlcy9qcXVlcnkvZGlzdC9qcXVlcnkuanMgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNr
Ym9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L2Rpc3QvanF1ZXJ5LmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUxYWVh
MjkzYTMzZmE0YjJiODdmYWJiNDA2MGU3NjI2ZGMyYTQ4OTEKLS0tIC9kZXYvbnVsbAorKysgYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L2Rpc3QvanF1ZXJ5LmpzCkBA
IC0wLDAgKzEsMTAyMjAgQEAKKy8qIQorICogalF1ZXJ5IEphdmFTY3JpcHQgTGlicmFyeSB2My4x
LjEKKyAqIGh0dHBzOi8vanF1ZXJ5LmNvbS8KKyAqCisgKiBJbmNsdWRlcyBTaXp6bGUuanMKKyAq
IGh0dHBzOi8vc2l6emxlanMuY29tLworICoKKyAqIENvcHlyaWdodCBqUXVlcnkgRm91bmRhdGlv
biBhbmQgb3RoZXIgY29udHJpYnV0b3JzCisgKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vu
c2UKKyAqIGh0dHBzOi8vanF1ZXJ5Lm9yZy9saWNlbnNlCisgKgorICogRGF0ZTogMjAxNi0wOS0y
MlQyMjozMFoKKyAqLworKCBmdW5jdGlvbiggZ2xvYmFsLCBmYWN0b3J5ICkgeworCisgICAgInVz
ZSBzdHJpY3QiOworCisgICAgaWYgKCB0eXBlb2YgbW9kdWxlID09PSAib2JqZWN0IiAmJiB0eXBl
b2YgbW9kdWxlLmV4cG9ydHMgPT09ICJvYmplY3QiICkgeworCisgICAgICAgIC8vIEZvciBDb21t
b25KUyBhbmQgQ29tbW9uSlMtbGlrZSBlbnZpcm9ubWVudHMgd2hlcmUgYSBwcm9wZXIgYHdpbmRv
d2AKKyAgICAgICAgLy8gaXMgcHJlc2VudCwgZXhlY3V0ZSB0aGUgZmFjdG9yeSBhbmQgZ2V0IGpR
dWVyeS4KKyAgICAgICAgLy8gRm9yIGVudmlyb25tZW50cyB0aGF0IGRvIG5vdCBoYXZlIGEgYHdp
bmRvd2Agd2l0aCBhIGBkb2N1bWVudGAKKyAgICAgICAgLy8gKHN1Y2ggYXMgTm9kZS5qcyksIGV4
cG9zZSBhIGZhY3RvcnkgYXMgbW9kdWxlLmV4cG9ydHMuCisgICAgICAgIC8vIFRoaXMgYWNjZW50
dWF0ZXMgdGhlIG5lZWQgZm9yIHRoZSBjcmVhdGlvbiBvZiBhIHJlYWwgYHdpbmRvd2AuCisgICAg
ICAgIC8vIGUuZy4gdmFyIGpRdWVyeSA9IHJlcXVpcmUoImpxdWVyeSIpKHdpbmRvdyk7CisgICAg
ICAgIC8vIFNlZSB0aWNrZXQgIzE0NTQ5IGZvciBtb3JlIGluZm8uCisgICAgICAgIG1vZHVsZS5l
eHBvcnRzID0gZ2xvYmFsLmRvY3VtZW50ID8KKyAgICAgICAgICAgIGZhY3RvcnkoIGdsb2JhbCwg
dHJ1ZSApIDoKKyAgICAgICAgICAgIGZ1bmN0aW9uKCB3ICkgeworICAgICAgICAgICAgICAgIGlm
ICggIXcuZG9jdW1lbnQgKSB7CisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigg
ImpRdWVyeSByZXF1aXJlcyBhIHdpbmRvdyB3aXRoIGEgZG9jdW1lbnQiICk7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBmYWN0b3J5KCB3ICk7CisgICAgICAgICAg
ICB9OworICAgIH0gZWxzZSB7CisgICAgICAgIGZhY3RvcnkoIGdsb2JhbCApOworICAgIH0KKwor
Ly8gUGFzcyB0aGlzIGlmIHdpbmRvdyBpcyBub3QgZGVmaW5lZCB5ZXQKK30gKSggdHlwZW9mIHdp
bmRvdyAhPT0gInVuZGVmaW5lZCIgPyB3aW5kb3cgOiB0aGlzLCBmdW5jdGlvbiggd2luZG93LCBu
b0dsb2JhbCApIHsKKworLy8gRWRnZSA8PSAxMiAtIDEzKywgRmlyZWZveCA8PTE4IC0gNDUrLCBJ
RSAxMCAtIDExLCBTYWZhcmkgNS4xIC0gOSssIGlPUyA2IC0gOS4xCisvLyB0aHJvdyBleGNlcHRp
b25zIHdoZW4gbm9uLXN0cmljdCBjb2RlIChlLmcuLCBBU1AuTkVUIDQuNSkgYWNjZXNzZXMgc3Ry
aWN0IG1vZGUKKy8vIGFyZ3VtZW50cy5jYWxsZWUuY2FsbGVyICh0cmFjLTEzMzM1KS4gQnV0IGFz
IG9mIGpRdWVyeSAzLjAgKDIwMTYpLCBzdHJpY3QgbW9kZSBzaG91bGQgYmUgY29tbW9uCisvLyBl
bm91Z2ggdGhhdCBhbGwgc3VjaCBhdHRlbXB0cyBhcmUgZ3VhcmRlZCBpbiBhIHRyeSBibG9jay4K
KyJ1c2Ugc3RyaWN0IjsKKwordmFyIGFyciA9IFtdOworCit2YXIgZG9jdW1lbnQgPSB3aW5kb3cu
ZG9jdW1lbnQ7CisKK3ZhciBnZXRQcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZjsKKwordmFy
IHNsaWNlID0gYXJyLnNsaWNlOworCit2YXIgY29uY2F0ID0gYXJyLmNvbmNhdDsKKwordmFyIHB1
c2ggPSBhcnIucHVzaDsKKwordmFyIGluZGV4T2YgPSBhcnIuaW5kZXhPZjsKKwordmFyIGNsYXNz
MnR5cGUgPSB7fTsKKwordmFyIHRvU3RyaW5nID0gY2xhc3MydHlwZS50b1N0cmluZzsKKwordmFy
IGhhc093biA9IGNsYXNzMnR5cGUuaGFzT3duUHJvcGVydHk7CisKK3ZhciBmblRvU3RyaW5nID0g
aGFzT3duLnRvU3RyaW5nOworCit2YXIgT2JqZWN0RnVuY3Rpb25TdHJpbmcgPSBmblRvU3RyaW5n
LmNhbGwoIE9iamVjdCApOworCit2YXIgc3VwcG9ydCA9IHt9OworCisKKworICAgIGZ1bmN0aW9u
IERPTUV2YWwoIGNvZGUsIGRvYyApIHsKKyAgICAgICAgZG9jID0gZG9jIHx8IGRvY3VtZW50Owor
CisgICAgICAgIHZhciBzY3JpcHQgPSBkb2MuY3JlYXRlRWxlbWVudCggInNjcmlwdCIgKTsKKwor
ICAgICAgICBzY3JpcHQudGV4dCA9IGNvZGU7CisgICAgICAgIGRvYy5oZWFkLmFwcGVuZENoaWxk
KCBzY3JpcHQgKS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKCBzY3JpcHQgKTsKKyAgICB9CisvKiBn
bG9iYWwgU3ltYm9sICovCisvLyBEZWZpbmluZyB0aGlzIGdsb2JhbCBpbiAuZXNsaW50cmMuanNv
biB3b3VsZCBjcmVhdGUgYSBkYW5nZXIgb2YgdXNpbmcgdGhlIGdsb2JhbAorLy8gdW5ndWFyZGVk
IGluIGFub3RoZXIgcGxhY2UsIGl0IHNlZW1zIHNhZmVyIHRvIGRlZmluZSBnbG9iYWwgb25seSBm
b3IgdGhpcyBtb2R1bGUKKworCisKK3ZhcgorICAgIHZlcnNpb24gPSAiMy4xLjEiLAorCisgICAg
Ly8gRGVmaW5lIGEgbG9jYWwgY29weSBvZiBqUXVlcnkKKyAgICBqUXVlcnkgPSBmdW5jdGlvbigg
c2VsZWN0b3IsIGNvbnRleHQgKSB7CisKKyAgICAgICAgLy8gVGhlIGpRdWVyeSBvYmplY3QgaXMg
YWN0dWFsbHkganVzdCB0aGUgaW5pdCBjb25zdHJ1Y3RvciAnZW5oYW5jZWQnCisgICAgICAgIC8v
IE5lZWQgaW5pdCBpZiBqUXVlcnkgaXMgY2FsbGVkIChqdXN0IGFsbG93IGVycm9yIHRvIGJlIHRo
cm93biBpZiBub3QgaW5jbHVkZWQpCisgICAgICAgIHJldHVybiBuZXcgalF1ZXJ5LmZuLmluaXQo
IHNlbGVjdG9yLCBjb250ZXh0ICk7CisgICAgfSwKKworICAgIC8vIFN1cHBvcnQ6IEFuZHJvaWQg
PD00LjAgb25seQorICAgIC8vIE1ha2Ugc3VyZSB3ZSB0cmltIEJPTSBhbmQgTkJTUAorICAgIHJ0
cmltID0gL15bXHNcdUZFRkZceEEwXSt8W1xzXHVGRUZGXHhBMF0rJC9nLAorCisgICAgLy8gTWF0
Y2hlcyBkYXNoZWQgc3RyaW5nIGZvciBjYW1lbGl6aW5nCisgICAgcm1zUHJlZml4ID0gL14tbXMt
LywKKyAgICByZGFzaEFscGhhID0gLy0oW2Etel0pL2csCisKKyAgICAvLyBVc2VkIGJ5IGpRdWVy
eS5jYW1lbENhc2UgYXMgY2FsbGJhY2sgdG8gcmVwbGFjZSgpCisgICAgZmNhbWVsQ2FzZSA9IGZ1
bmN0aW9uKCBhbGwsIGxldHRlciApIHsKKyAgICAgICAgcmV0dXJuIGxldHRlci50b1VwcGVyQ2Fz
ZSgpOworICAgIH07CisKK2pRdWVyeS5mbiA9IGpRdWVyeS5wcm90b3R5cGUgPSB7CisKKyAgICAv
LyBUaGUgY3VycmVudCB2ZXJzaW9uIG9mIGpRdWVyeSBiZWluZyB1c2VkCisgICAganF1ZXJ5OiB2
ZXJzaW9uLAorCisgICAgY29uc3RydWN0b3I6IGpRdWVyeSwKKworICAgIC8vIFRoZSBkZWZhdWx0
IGxlbmd0aCBvZiBhIGpRdWVyeSBvYmplY3QgaXMgMAorICAgIGxlbmd0aDogMCwKKworICAgIHRv
QXJyYXk6IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gc2xpY2UuY2FsbCggdGhpcyApOwor
ICAgIH0sCisKKyAgICAvLyBHZXQgdGhlIE50aCBlbGVtZW50IGluIHRoZSBtYXRjaGVkIGVsZW1l
bnQgc2V0IE9SCisgICAgLy8gR2V0IHRoZSB3aG9sZSBtYXRjaGVkIGVsZW1lbnQgc2V0IGFzIGEg
Y2xlYW4gYXJyYXkKKyAgICBnZXQ6IGZ1bmN0aW9uKCBudW0gKSB7CisKKyAgICAgICAgLy8gUmV0
dXJuIGFsbCB0aGUgZWxlbWVudHMgaW4gYSBjbGVhbiBhcnJheQorICAgICAgICBpZiAoIG51bSA9
PSBudWxsICkgeworICAgICAgICAgICAgcmV0dXJuIHNsaWNlLmNhbGwoIHRoaXMgKTsKKyAgICAg
ICAgfQorCisgICAgICAgIC8vIFJldHVybiBqdXN0IHRoZSBvbmUgZWxlbWVudCBmcm9tIHRoZSBz
ZXQKKyAgICAgICAgcmV0dXJuIG51bSA8IDAgPyB0aGlzWyBudW0gKyB0aGlzLmxlbmd0aCBdIDog
dGhpc1sgbnVtIF07CisgICAgfSwKKworICAgIC8vIFRha2UgYW4gYXJyYXkgb2YgZWxlbWVudHMg
YW5kIHB1c2ggaXQgb250byB0aGUgc3RhY2sKKyAgICAvLyAocmV0dXJuaW5nIHRoZSBuZXcgbWF0
Y2hlZCBlbGVtZW50IHNldCkKKyAgICBwdXNoU3RhY2s6IGZ1bmN0aW9uKCBlbGVtcyApIHsKKwor
ICAgICAgICAvLyBCdWlsZCBhIG5ldyBqUXVlcnkgbWF0Y2hlZCBlbGVtZW50IHNldAorICAgICAg
ICB2YXIgcmV0ID0galF1ZXJ5Lm1lcmdlKCB0aGlzLmNvbnN0cnVjdG9yKCksIGVsZW1zICk7CisK
KyAgICAgICAgLy8gQWRkIHRoZSBvbGQgb2JqZWN0IG9udG8gdGhlIHN0YWNrIChhcyBhIHJlZmVy
ZW5jZSkKKyAgICAgICAgcmV0LnByZXZPYmplY3QgPSB0aGlzOworCisgICAgICAgIC8vIFJldHVy
biB0aGUgbmV3bHktZm9ybWVkIGVsZW1lbnQgc2V0CisgICAgICAgIHJldHVybiByZXQ7CisgICAg
fSwKKworICAgIC8vIEV4ZWN1dGUgYSBjYWxsYmFjayBmb3IgZXZlcnkgZWxlbWVudCBpbiB0aGUg
bWF0Y2hlZCBzZXQuCisgICAgZWFjaDogZnVuY3Rpb24oIGNhbGxiYWNrICkgeworICAgICAgICBy
ZXR1cm4galF1ZXJ5LmVhY2goIHRoaXMsIGNhbGxiYWNrICk7CisgICAgfSwKKworICAgIG1hcDog
ZnVuY3Rpb24oIGNhbGxiYWNrICkgeworICAgICAgICByZXR1cm4gdGhpcy5wdXNoU3RhY2soIGpR
dWVyeS5tYXAoIHRoaXMsIGZ1bmN0aW9uKCBlbGVtLCBpICkgeworICAgICAgICAgICAgcmV0dXJu
IGNhbGxiYWNrLmNhbGwoIGVsZW0sIGksIGVsZW0gKTsKKyAgICAgICAgfSApICk7CisgICAgfSwK
KworICAgIHNsaWNlOiBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMucHVzaFN0YWNr
KCBzbGljZS5hcHBseSggdGhpcywgYXJndW1lbnRzICkgKTsKKyAgICB9LAorCisgICAgZmlyc3Q6
IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gdGhpcy5lcSggMCApOworICAgIH0sCisKKyAg
ICBsYXN0OiBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZXEoIC0xICk7CisgICAg
fSwKKworICAgIGVxOiBmdW5jdGlvbiggaSApIHsKKyAgICAgICAgdmFyIGxlbiA9IHRoaXMubGVu
Z3RoLAorICAgICAgICAgICAgaiA9ICtpICsgKCBpIDwgMCA/IGxlbiA6IDAgKTsKKyAgICAgICAg
cmV0dXJuIHRoaXMucHVzaFN0YWNrKCBqID49IDAgJiYgaiA8IGxlbiA/IFsgdGhpc1sgaiBdIF0g
OiBbXSApOworICAgIH0sCisKKyAgICBlbmQ6IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4g
dGhpcy5wcmV2T2JqZWN0IHx8IHRoaXMuY29uc3RydWN0b3IoKTsKKyAgICB9LAorCisgICAgLy8g
Rm9yIGludGVybmFsIHVzZSBvbmx5LgorICAgIC8vIEJlaGF2ZXMgbGlrZSBhbiBBcnJheSdzIG1l
dGhvZCwgbm90IGxpa2UgYSBqUXVlcnkgbWV0aG9kLgorICAgIHB1c2g6IHB1c2gsCisgICAgc29y
dDogYXJyLnNvcnQsCisgICAgc3BsaWNlOiBhcnIuc3BsaWNlCit9OworCitqUXVlcnkuZXh0ZW5k
ID0galF1ZXJ5LmZuLmV4dGVuZCA9IGZ1bmN0aW9uKCkgeworICAgIHZhciBvcHRpb25zLCBuYW1l
LCBzcmMsIGNvcHksIGNvcHlJc0FycmF5LCBjbG9uZSwKKyAgICAgICAgdGFyZ2V0ID0gYXJndW1l
bnRzWyAwIF0gfHwge30sCisgICAgICAgIGkgPSAxLAorICAgICAgICBsZW5ndGggPSBhcmd1bWVu
dHMubGVuZ3RoLAorICAgICAgICBkZWVwID0gZmFsc2U7CisKKyAgICAvLyBIYW5kbGUgYSBkZWVw
IGNvcHkgc2l0dWF0aW9uCisgICAgaWYgKCB0eXBlb2YgdGFyZ2V0ID09PSAiYm9vbGVhbiIgKSB7
CisgICAgICAgIGRlZXAgPSB0YXJnZXQ7CisKKyAgICAgICAgLy8gU2tpcCB0aGUgYm9vbGVhbiBh
bmQgdGhlIHRhcmdldAorICAgICAgICB0YXJnZXQgPSBhcmd1bWVudHNbIGkgXSB8fCB7fTsKKyAg
ICAgICAgaSsrOworICAgIH0KKworICAgIC8vIEhhbmRsZSBjYXNlIHdoZW4gdGFyZ2V0IGlzIGEg
c3RyaW5nIG9yIHNvbWV0aGluZyAocG9zc2libGUgaW4gZGVlcCBjb3B5KQorICAgIGlmICggdHlw
ZW9mIHRhcmdldCAhPT0gIm9iamVjdCIgJiYgIWpRdWVyeS5pc0Z1bmN0aW9uKCB0YXJnZXQgKSAp
IHsKKyAgICAgICAgdGFyZ2V0ID0ge307CisgICAgfQorCisgICAgLy8gRXh0ZW5kIGpRdWVyeSBp
dHNlbGYgaWYgb25seSBvbmUgYXJndW1lbnQgaXMgcGFzc2VkCisgICAgaWYgKCBpID09PSBsZW5n
dGggKSB7CisgICAgICAgIHRhcmdldCA9IHRoaXM7CisgICAgICAgIGktLTsKKyAgICB9CisKKyAg
ICBmb3IgKCA7IGkgPCBsZW5ndGg7IGkrKyApIHsKKworICAgICAgICAvLyBPbmx5IGRlYWwgd2l0
aCBub24tbnVsbC91bmRlZmluZWQgdmFsdWVzCisgICAgICAgIGlmICggKCBvcHRpb25zID0gYXJn
dW1lbnRzWyBpIF0gKSAhPSBudWxsICkgeworCisgICAgICAgICAgICAvLyBFeHRlbmQgdGhlIGJh
c2Ugb2JqZWN0CisgICAgICAgICAgICBmb3IgKCBuYW1lIGluIG9wdGlvbnMgKSB7CisgICAgICAg
ICAgICAgICAgc3JjID0gdGFyZ2V0WyBuYW1lIF07CisgICAgICAgICAgICAgICAgY29weSA9IG9w
dGlvbnNbIG5hbWUgXTsKKworICAgICAgICAgICAgICAgIC8vIFByZXZlbnQgbmV2ZXItZW5kaW5n
IGxvb3AKKyAgICAgICAgICAgICAgICBpZiAoIHRhcmdldCA9PT0gY29weSApIHsKKyAgICAgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgLy8gUmVjdXJzZSBpZiB3ZSdyZSBtZXJnaW5nIHBsYWluIG9iamVjdHMgb3IgYXJyYXlzCisg
ICAgICAgICAgICAgICAgaWYgKCBkZWVwICYmIGNvcHkgJiYgKCBqUXVlcnkuaXNQbGFpbk9iamVj
dCggY29weSApIHx8CisgICAgICAgICAgICAgICAgICAgICggY29weUlzQXJyYXkgPSBqUXVlcnku
aXNBcnJheSggY29weSApICkgKSApIHsKKworICAgICAgICAgICAgICAgICAgICBpZiAoIGNvcHlJ
c0FycmF5ICkgeworICAgICAgICAgICAgICAgICAgICAgICAgY29weUlzQXJyYXkgPSBmYWxzZTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNsb25lID0gc3JjICYmIGpRdWVyeS5pc0FycmF5KCBz
cmMgKSA/IHNyYyA6IFtdOworCisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBjbG9uZSA9IHNyYyAmJiBqUXVlcnkuaXNQbGFpbk9iamVjdCggc3Jj
ICkgPyBzcmMgOiB7fTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
ICAgIC8vIE5ldmVyIG1vdmUgb3JpZ2luYWwgb2JqZWN0cywgY2xvbmUgdGhlbQorICAgICAgICAg
ICAgICAgICAgICB0YXJnZXRbIG5hbWUgXSA9IGpRdWVyeS5leHRlbmQoIGRlZXAsIGNsb25lLCBj
b3B5ICk7CisKKyAgICAgICAgICAgICAgICAvLyBEb24ndCBicmluZyBpbiB1bmRlZmluZWQgdmFs
dWVzCisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICggY29weSAhPT0gdW5kZWZpbmVkICkgewor
ICAgICAgICAgICAgICAgICAgICB0YXJnZXRbIG5hbWUgXSA9IGNvcHk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLy8gUmV0dXJuIHRo
ZSBtb2RpZmllZCBvYmplY3QKKyAgICByZXR1cm4gdGFyZ2V0OworfTsKKworalF1ZXJ5LmV4dGVu
ZCggeworCisgICAgLy8gVW5pcXVlIGZvciBlYWNoIGNvcHkgb2YgalF1ZXJ5IG9uIHRoZSBwYWdl
CisgICAgZXhwYW5kbzogImpRdWVyeSIgKyAoIHZlcnNpb24gKyBNYXRoLnJhbmRvbSgpICkucmVw
bGFjZSggL1xEL2csICIiICksCisKKyAgICAvLyBBc3N1bWUgalF1ZXJ5IGlzIHJlYWR5IHdpdGhv
dXQgdGhlIHJlYWR5IG1vZHVsZQorICAgIGlzUmVhZHk6IHRydWUsCisKKyAgICBlcnJvcjogZnVu
Y3Rpb24oIG1zZyApIHsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCBtc2cgKTsKKyAgICB9LAor
CisgICAgbm9vcDogZnVuY3Rpb24oKSB7fSwKKworICAgIGlzRnVuY3Rpb246IGZ1bmN0aW9uKCBv
YmogKSB7CisgICAgICAgIHJldHVybiBqUXVlcnkudHlwZSggb2JqICkgPT09ICJmdW5jdGlvbiI7
CisgICAgfSwKKworICAgIGlzQXJyYXk6IEFycmF5LmlzQXJyYXksCisKKyAgICBpc1dpbmRvdzog
ZnVuY3Rpb24oIG9iaiApIHsKKyAgICAgICAgcmV0dXJuIG9iaiAhPSBudWxsICYmIG9iaiA9PT0g
b2JqLndpbmRvdzsKKyAgICB9LAorCisgICAgaXNOdW1lcmljOiBmdW5jdGlvbiggb2JqICkgewor
CisgICAgICAgIC8vIEFzIG9mIGpRdWVyeSAzLjAsIGlzTnVtZXJpYyBpcyBsaW1pdGVkIHRvCisg
ICAgICAgIC8vIHN0cmluZ3MgYW5kIG51bWJlcnMgKHByaW1pdGl2ZXMgb3Igb2JqZWN0cykKKyAg
ICAgICAgLy8gdGhhdCBjYW4gYmUgY29lcmNlZCB0byBmaW5pdGUgbnVtYmVycyAoZ2gtMjY2MikK
KyAgICAgICAgdmFyIHR5cGUgPSBqUXVlcnkudHlwZSggb2JqICk7CisgICAgICAgIHJldHVybiAo
IHR5cGUgPT09ICJudW1iZXIiIHx8IHR5cGUgPT09ICJzdHJpbmciICkgJiYKKworICAgICAgICAg
ICAgLy8gcGFyc2VGbG9hdCBOYU5zIG51bWVyaWMtY2FzdCBmYWxzZSBwb3NpdGl2ZXMgKCIiKQor
ICAgICAgICAgICAgLy8gLi4uYnV0IG1pc2ludGVycHJldHMgbGVhZGluZy1udW1iZXIgc3RyaW5n
cywgcGFydGljdWxhcmx5IGhleCBsaXRlcmFscyAoIjB4Li4uIikKKyAgICAgICAgICAgIC8vIHN1
YnRyYWN0aW9uIGZvcmNlcyBpbmZpbml0aWVzIHRvIE5hTgorICAgICAgICAgICAgIWlzTmFOKCBv
YmogLSBwYXJzZUZsb2F0KCBvYmogKSApOworICAgIH0sCisKKyAgICBpc1BsYWluT2JqZWN0OiBm
dW5jdGlvbiggb2JqICkgeworICAgICAgICB2YXIgcHJvdG8sIEN0b3I7CisKKyAgICAgICAgLy8g
RGV0ZWN0IG9idmlvdXMgbmVnYXRpdmVzCisgICAgICAgIC8vIFVzZSB0b1N0cmluZyBpbnN0ZWFk
IG9mIGpRdWVyeS50eXBlIHRvIGNhdGNoIGhvc3Qgb2JqZWN0cworICAgICAgICBpZiAoICFvYmog
fHwgdG9TdHJpbmcuY2FsbCggb2JqICkgIT09ICJbb2JqZWN0IE9iamVjdF0iICkgeworICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgcHJvdG8gPSBnZXRQcm90
byggb2JqICk7CisKKyAgICAgICAgLy8gT2JqZWN0cyB3aXRoIG5vIHByb3RvdHlwZSAoZS5nLiwg
YE9iamVjdC5jcmVhdGUoIG51bGwgKWApIGFyZSBwbGFpbgorICAgICAgICBpZiAoICFwcm90byAp
IHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgLy8gT2Jq
ZWN0cyB3aXRoIHByb3RvdHlwZSBhcmUgcGxhaW4gaWZmIHRoZXkgd2VyZSBjb25zdHJ1Y3RlZCBi
eSBhIGdsb2JhbCBPYmplY3QgZnVuY3Rpb24KKyAgICAgICAgQ3RvciA9IGhhc093bi5jYWxsKCBw
cm90bywgImNvbnN0cnVjdG9yIiApICYmIHByb3RvLmNvbnN0cnVjdG9yOworICAgICAgICByZXR1
cm4gdHlwZW9mIEN0b3IgPT09ICJmdW5jdGlvbiIgJiYgZm5Ub1N0cmluZy5jYWxsKCBDdG9yICkg
PT09IE9iamVjdEZ1bmN0aW9uU3RyaW5nOworICAgIH0sCisKKyAgICBpc0VtcHR5T2JqZWN0OiBm
dW5jdGlvbiggb2JqICkgeworCisgICAgICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12
YXJzICovCisgICAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZXNsaW50L2VzbGludC9p
c3N1ZXMvNjEyNQorICAgICAgICB2YXIgbmFtZTsKKworICAgICAgICBmb3IgKCBuYW1lIGluIG9i
aiApIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9LAorCisgICAgdHlwZTogZnVuY3Rpb24oIG9iaiApIHsKKyAgICAgICAg
aWYgKCBvYmogPT0gbnVsbCApIHsKKyAgICAgICAgICAgIHJldHVybiBvYmogKyAiIjsKKyAgICAg
ICAgfQorCisgICAgICAgIC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD0yLjMgb25seSAoZnVuY3Rpb25p
c2ggUmVnRXhwKQorICAgICAgICByZXR1cm4gdHlwZW9mIG9iaiA9PT0gIm9iamVjdCIgfHwgdHlw
ZW9mIG9iaiA9PT0gImZ1bmN0aW9uIiA/CisgICAgICAgICAgICBjbGFzczJ0eXBlWyB0b1N0cmlu
Zy5jYWxsKCBvYmogKSBdIHx8ICJvYmplY3QiIDoKKyAgICAgICAgICAgIHR5cGVvZiBvYmo7Cisg
ICAgfSwKKworICAgIC8vIEV2YWx1YXRlcyBhIHNjcmlwdCBpbiBhIGdsb2JhbCBjb250ZXh0Cisg
ICAgZ2xvYmFsRXZhbDogZnVuY3Rpb24oIGNvZGUgKSB7CisgICAgICAgIERPTUV2YWwoIGNvZGUg
KTsKKyAgICB9LAorCisgICAgLy8gQ29udmVydCBkYXNoZWQgdG8gY2FtZWxDYXNlOyB1c2VkIGJ5
IHRoZSBjc3MgYW5kIGRhdGEgbW9kdWxlcworICAgIC8vIFN1cHBvcnQ6IElFIDw9OSAtIDExLCBF
ZGdlIDEyIC0gMTMKKyAgICAvLyBNaWNyb3NvZnQgZm9yZ290IHRvIGh1bXAgdGhlaXIgdmVuZG9y
IHByZWZpeCAoIzk1NzIpCisgICAgY2FtZWxDYXNlOiBmdW5jdGlvbiggc3RyaW5nICkgeworICAg
ICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoIHJtc1ByZWZpeCwgIm1zLSIgKS5yZXBsYWNlKCBy
ZGFzaEFscGhhLCBmY2FtZWxDYXNlICk7CisgICAgfSwKKworICAgIG5vZGVOYW1lOiBmdW5jdGlv
biggZWxlbSwgbmFtZSApIHsKKyAgICAgICAgcmV0dXJuIGVsZW0ubm9kZU5hbWUgJiYgZWxlbS5u
b2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBuYW1lLnRvTG93ZXJDYXNlKCk7CisgICAgfSwKKwor
ICAgIGVhY2g6IGZ1bmN0aW9uKCBvYmosIGNhbGxiYWNrICkgeworICAgICAgICB2YXIgbGVuZ3Ro
LCBpID0gMDsKKworICAgICAgICBpZiAoIGlzQXJyYXlMaWtlKCBvYmogKSApIHsKKyAgICAgICAg
ICAgIGxlbmd0aCA9IG9iai5sZW5ndGg7CisgICAgICAgICAgICBmb3IgKCA7IGkgPCBsZW5ndGg7
IGkrKyApIHsKKyAgICAgICAgICAgICAgICBpZiAoIGNhbGxiYWNrLmNhbGwoIG9ialsgaSBdLCBp
LCBvYmpbIGkgXSApID09PSBmYWxzZSApIHsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgZm9yICggaSBpbiBvYmogKSB7CisgICAgICAgICAgICAgICAgaWYgKCBjYWxsYmFjay5j
YWxsKCBvYmpbIGkgXSwgaSwgb2JqWyBpIF0gKSA9PT0gZmFsc2UgKSB7CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorCisgICAgICAgIHJldHVybiBvYmo7CisgICAgfSwKKworICAgIC8vIFN1cHBvcnQ6IEFuZHJv
aWQgPD00LjAgb25seQorICAgIHRyaW06IGZ1bmN0aW9uKCB0ZXh0ICkgeworICAgICAgICByZXR1
cm4gdGV4dCA9PSBudWxsID8KKyAgICAgICAgICAgICIiIDoKKyAgICAgICAgICAgICggdGV4dCAr
ICIiICkucmVwbGFjZSggcnRyaW0sICIiICk7CisgICAgfSwKKworICAgIC8vIHJlc3VsdHMgaXMg
Zm9yIGludGVybmFsIHVzYWdlIG9ubHkKKyAgICBtYWtlQXJyYXk6IGZ1bmN0aW9uKCBhcnIsIHJl
c3VsdHMgKSB7CisgICAgICAgIHZhciByZXQgPSByZXN1bHRzIHx8IFtdOworCisgICAgICAgIGlm
ICggYXJyICE9IG51bGwgKSB7CisgICAgICAgICAgICBpZiAoIGlzQXJyYXlMaWtlKCBPYmplY3Qo
IGFyciApICkgKSB7CisgICAgICAgICAgICAgICAgalF1ZXJ5Lm1lcmdlKCByZXQsCisgICAgICAg
ICAgICAgICAgICAgIHR5cGVvZiBhcnIgPT09ICJzdHJpbmciID8KKyAgICAgICAgICAgICAgICAg
ICAgWyBhcnIgXSA6IGFycgorICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIHB1c2guY2FsbCggcmV0LCBhcnIgKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorCisgICAgICAgIHJldHVybiByZXQ7CisgICAgfSwKKworICAgIGluQXJyYXk6
IGZ1bmN0aW9uKCBlbGVtLCBhcnIsIGkgKSB7CisgICAgICAgIHJldHVybiBhcnIgPT0gbnVsbCA/
IC0xIDogaW5kZXhPZi5jYWxsKCBhcnIsIGVsZW0sIGkgKTsKKyAgICB9LAorCisgICAgLy8gU3Vw
cG9ydDogQW5kcm9pZCA8PTQuMCBvbmx5LCBQaGFudG9tSlMgMSBvbmx5CisgICAgLy8gcHVzaC5h
cHBseShfLCBhcnJheWxpa2UpIHRocm93cyBvbiBhbmNpZW50IFdlYktpdAorICAgIG1lcmdlOiBm
dW5jdGlvbiggZmlyc3QsIHNlY29uZCApIHsKKyAgICAgICAgdmFyIGxlbiA9ICtzZWNvbmQubGVu
Z3RoLAorICAgICAgICAgICAgaiA9IDAsCisgICAgICAgICAgICBpID0gZmlyc3QubGVuZ3RoOwor
CisgICAgICAgIGZvciAoIDsgaiA8IGxlbjsgaisrICkgeworICAgICAgICAgICAgZmlyc3RbIGkr
KyBdID0gc2Vjb25kWyBqIF07CisgICAgICAgIH0KKworICAgICAgICBmaXJzdC5sZW5ndGggPSBp
OworCisgICAgICAgIHJldHVybiBmaXJzdDsKKyAgICB9LAorCisgICAgZ3JlcDogZnVuY3Rpb24o
IGVsZW1zLCBjYWxsYmFjaywgaW52ZXJ0ICkgeworICAgICAgICB2YXIgY2FsbGJhY2tJbnZlcnNl
LAorICAgICAgICAgICAgbWF0Y2hlcyA9IFtdLAorICAgICAgICAgICAgaSA9IDAsCisgICAgICAg
ICAgICBsZW5ndGggPSBlbGVtcy5sZW5ndGgsCisgICAgICAgICAgICBjYWxsYmFja0V4cGVjdCA9
ICFpbnZlcnQ7CisKKyAgICAgICAgLy8gR28gdGhyb3VnaCB0aGUgYXJyYXksIG9ubHkgc2F2aW5n
IHRoZSBpdGVtcworICAgICAgICAvLyB0aGF0IHBhc3MgdGhlIHZhbGlkYXRvciBmdW5jdGlvbgor
ICAgICAgICBmb3IgKCA7IGkgPCBsZW5ndGg7IGkrKyApIHsKKyAgICAgICAgICAgIGNhbGxiYWNr
SW52ZXJzZSA9ICFjYWxsYmFjayggZWxlbXNbIGkgXSwgaSApOworICAgICAgICAgICAgaWYgKCBj
YWxsYmFja0ludmVyc2UgIT09IGNhbGxiYWNrRXhwZWN0ICkgeworICAgICAgICAgICAgICAgIG1h
dGNoZXMucHVzaCggZWxlbXNbIGkgXSApOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAg
ICAgICAgcmV0dXJuIG1hdGNoZXM7CisgICAgfSwKKworICAgIC8vIGFyZyBpcyBmb3IgaW50ZXJu
YWwgdXNhZ2Ugb25seQorICAgIG1hcDogZnVuY3Rpb24oIGVsZW1zLCBjYWxsYmFjaywgYXJnICkg
eworICAgICAgICB2YXIgbGVuZ3RoLCB2YWx1ZSwKKyAgICAgICAgICAgIGkgPSAwLAorICAgICAg
ICAgICAgcmV0ID0gW107CisKKyAgICAgICAgLy8gR28gdGhyb3VnaCB0aGUgYXJyYXksIHRyYW5z
bGF0aW5nIGVhY2ggb2YgdGhlIGl0ZW1zIHRvIHRoZWlyIG5ldyB2YWx1ZXMKKyAgICAgICAgaWYg
KCBpc0FycmF5TGlrZSggZWxlbXMgKSApIHsKKyAgICAgICAgICAgIGxlbmd0aCA9IGVsZW1zLmxl
bmd0aDsKKyAgICAgICAgICAgIGZvciAoIDsgaSA8IGxlbmd0aDsgaSsrICkgeworICAgICAgICAg
ICAgICAgIHZhbHVlID0gY2FsbGJhY2soIGVsZW1zWyBpIF0sIGksIGFyZyApOworCisgICAgICAg
ICAgICAgICAgaWYgKCB2YWx1ZSAhPSBudWxsICkgeworICAgICAgICAgICAgICAgICAgICByZXQu
cHVzaCggdmFsdWUgKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgLy8gR28gdGhyb3VnaCBldmVyeSBrZXkgb24gdGhlIG9iamVjdCwKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIGZvciAoIGkgaW4gZWxlbXMgKSB7CisgICAgICAgICAgICAgICAgdmFs
dWUgPSBjYWxsYmFjayggZWxlbXNbIGkgXSwgaSwgYXJnICk7CisKKyAgICAgICAgICAgICAgICBp
ZiAoIHZhbHVlICE9IG51bGwgKSB7CisgICAgICAgICAgICAgICAgICAgIHJldC5wdXNoKCB2YWx1
ZSApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAg
ICAgIC8vIEZsYXR0ZW4gYW55IG5lc3RlZCBhcnJheXMKKyAgICAgICAgcmV0dXJuIGNvbmNhdC5h
cHBseSggW10sIHJldCApOworICAgIH0sCisKKyAgICAvLyBBIGdsb2JhbCBHVUlEIGNvdW50ZXIg
Zm9yIG9iamVjdHMKKyAgICBndWlkOiAxLAorCisgICAgLy8gQmluZCBhIGZ1bmN0aW9uIHRvIGEg
Y29udGV4dCwgb3B0aW9uYWxseSBwYXJ0aWFsbHkgYXBwbHlpbmcgYW55CisgICAgLy8gYXJndW1l
bnRzLgorICAgIHByb3h5OiBmdW5jdGlvbiggZm4sIGNvbnRleHQgKSB7CisgICAgICAgIHZhciB0
bXAsIGFyZ3MsIHByb3h5OworCisgICAgICAgIGlmICggdHlwZW9mIGNvbnRleHQgPT09ICJzdHJp
bmciICkgeworICAgICAgICAgICAgdG1wID0gZm5bIGNvbnRleHQgXTsKKyAgICAgICAgICAgIGNv
bnRleHQgPSBmbjsKKyAgICAgICAgICAgIGZuID0gdG1wOworICAgICAgICB9CisKKyAgICAgICAg
Ly8gUXVpY2sgY2hlY2sgdG8gZGV0ZXJtaW5lIGlmIHRhcmdldCBpcyBjYWxsYWJsZSwgaW4gdGhl
IHNwZWMKKyAgICAgICAgLy8gdGhpcyB0aHJvd3MgYSBUeXBlRXJyb3IsIGJ1dCB3ZSB3aWxsIGp1
c3QgcmV0dXJuIHVuZGVmaW5lZC4KKyAgICAgICAgaWYgKCAhalF1ZXJ5LmlzRnVuY3Rpb24oIGZu
ICkgKSB7CisgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOworICAgICAgICB9CisKKyAgICAg
ICAgLy8gU2ltdWxhdGVkIGJpbmQKKyAgICAgICAgYXJncyA9IHNsaWNlLmNhbGwoIGFyZ3VtZW50
cywgMiApOworICAgICAgICBwcm94eSA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcmV0dXJu
IGZuLmFwcGx5KCBjb250ZXh0IHx8IHRoaXMsIGFyZ3MuY29uY2F0KCBzbGljZS5jYWxsKCBhcmd1
bWVudHMgKSApICk7CisgICAgICAgIH07CisKKyAgICAgICAgLy8gU2V0IHRoZSBndWlkIG9mIHVu
aXF1ZSBoYW5kbGVyIHRvIHRoZSBzYW1lIG9mIG9yaWdpbmFsIGhhbmRsZXIsIHNvIGl0IGNhbiBi
ZSByZW1vdmVkCisgICAgICAgIHByb3h5Lmd1aWQgPSBmbi5ndWlkID0gZm4uZ3VpZCB8fCBqUXVl
cnkuZ3VpZCsrOworCisgICAgICAgIHJldHVybiBwcm94eTsKKyAgICB9LAorCisgICAgbm93OiBE
YXRlLm5vdywKKworICAgIC8vIGpRdWVyeS5zdXBwb3J0IGlzIG5vdCB1c2VkIGluIENvcmUgYnV0
IG90aGVyIHByb2plY3RzIGF0dGFjaCB0aGVpcgorICAgIC8vIHByb3BlcnRpZXMgdG8gaXQgc28g
aXQgbmVlZHMgdG8gZXhpc3QuCisgICAgc3VwcG9ydDogc3VwcG9ydAorfSApOworCitpZiAoIHR5
cGVvZiBTeW1ib2wgPT09ICJmdW5jdGlvbiIgKSB7CisgICAgalF1ZXJ5LmZuWyBTeW1ib2wuaXRl
cmF0b3IgXSA9IGFyclsgU3ltYm9sLml0ZXJhdG9yIF07Cit9CisKKy8vIFBvcHVsYXRlIHRoZSBj
bGFzczJ0eXBlIG1hcAoralF1ZXJ5LmVhY2goICJCb29sZWFuIE51bWJlciBTdHJpbmcgRnVuY3Rp
b24gQXJyYXkgRGF0ZSBSZWdFeHAgT2JqZWN0IEVycm9yIFN5bWJvbCIuc3BsaXQoICIgIiApLAor
ZnVuY3Rpb24oIGksIG5hbWUgKSB7CisgICAgY2xhc3MydHlwZVsgIltvYmplY3QgIiArIG5hbWUg
KyAiXSIgXSA9IG5hbWUudG9Mb3dlckNhc2UoKTsKK30gKTsKKworZnVuY3Rpb24gaXNBcnJheUxp
a2UoIG9iaiApIHsKKworICAgIC8vIFN1cHBvcnQ6IHJlYWwgaU9TIDguMiBvbmx5IChub3QgcmVw
cm9kdWNpYmxlIGluIHNpbXVsYXRvcikKKyAgICAvLyBgaW5gIGNoZWNrIHVzZWQgdG8gcHJldmVu
dCBKSVQgZXJyb3IgKGdoLTIxNDUpCisgICAgLy8gaGFzT3duIGlzbid0IHVzZWQgaGVyZSBkdWUg
dG8gZmFsc2UgbmVnYXRpdmVzCisgICAgLy8gcmVnYXJkaW5nIE5vZGVsaXN0IGxlbmd0aCBpbiBJ
RQorICAgIHZhciBsZW5ndGggPSAhIW9iaiAmJiAibGVuZ3RoIiBpbiBvYmogJiYgb2JqLmxlbmd0
aCwKKyAgICAgICAgdHlwZSA9IGpRdWVyeS50eXBlKCBvYmogKTsKKworICAgIGlmICggdHlwZSA9
PT0gImZ1bmN0aW9uIiB8fCBqUXVlcnkuaXNXaW5kb3coIG9iaiApICkgeworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHR5cGUgPT09ICJhcnJheSIgfHwgbGVuZ3Ro
ID09PSAwIHx8CisgICAgICAgIHR5cGVvZiBsZW5ndGggPT09ICJudW1iZXIiICYmIGxlbmd0aCA+
IDAgJiYgKCBsZW5ndGggLSAxICkgaW4gb2JqOworfQordmFyIFNpenpsZSA9CisvKiEKKyAqIFNp
enpsZSBDU1MgU2VsZWN0b3IgRW5naW5lIHYyLjMuMworICogaHR0cHM6Ly9zaXp6bGVqcy5jb20v
CisgKgorICogQ29weXJpZ2h0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRv
cnMKKyAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZQorICogaHR0cDovL2pxdWVyeS5v
cmcvbGljZW5zZQorICoKKyAqIERhdGU6IDIwMTYtMDgtMDgKKyAqLworKGZ1bmN0aW9uKCB3aW5k
b3cgKSB7CisKK3ZhciBpLAorICAgIHN1cHBvcnQsCisgICAgRXhwciwKKyAgICBnZXRUZXh0LAor
ICAgIGlzWE1MLAorICAgIHRva2VuaXplLAorICAgIGNvbXBpbGUsCisgICAgc2VsZWN0LAorICAg
IG91dGVybW9zdENvbnRleHQsCisgICAgc29ydElucHV0LAorICAgIGhhc0R1cGxpY2F0ZSwKKwor
ICAgIC8vIExvY2FsIGRvY3VtZW50IHZhcnMKKyAgICBzZXREb2N1bWVudCwKKyAgICBkb2N1bWVu
dCwKKyAgICBkb2NFbGVtLAorICAgIGRvY3VtZW50SXNIVE1MLAorICAgIHJidWdneVFTQSwKKyAg
ICByYnVnZ3lNYXRjaGVzLAorICAgIG1hdGNoZXMsCisgICAgY29udGFpbnMsCisKKyAgICAvLyBJ
bnN0YW5jZS1zcGVjaWZpYyBkYXRhCisgICAgZXhwYW5kbyA9ICJzaXp6bGUiICsgMSAqIG5ldyBE
YXRlKCksCisgICAgcHJlZmVycmVkRG9jID0gd2luZG93LmRvY3VtZW50LAorICAgIGRpcnJ1bnMg
PSAwLAorICAgIGRvbmUgPSAwLAorICAgIGNsYXNzQ2FjaGUgPSBjcmVhdGVDYWNoZSgpLAorICAg
IHRva2VuQ2FjaGUgPSBjcmVhdGVDYWNoZSgpLAorICAgIGNvbXBpbGVyQ2FjaGUgPSBjcmVhdGVD
YWNoZSgpLAorICAgIHNvcnRPcmRlciA9IGZ1bmN0aW9uKCBhLCBiICkgeworICAgICAgICBpZiAo
IGEgPT09IGIgKSB7CisgICAgICAgICAgICBoYXNEdXBsaWNhdGUgPSB0cnVlOworICAgICAgICB9
CisgICAgICAgIHJldHVybiAwOworICAgIH0sCisKKyAgICAvLyBJbnN0YW5jZSBtZXRob2RzCisg
ICAgaGFzT3duID0gKHt9KS5oYXNPd25Qcm9wZXJ0eSwKKyAgICBhcnIgPSBbXSwKKyAgICBwb3Ag
PSBhcnIucG9wLAorICAgIHB1c2hfbmF0aXZlID0gYXJyLnB1c2gsCisgICAgcHVzaCA9IGFyci5w
dXNoLAorICAgIHNsaWNlID0gYXJyLnNsaWNlLAorICAgIC8vIFVzZSBhIHN0cmlwcGVkLWRvd24g
aW5kZXhPZiBhcyBpdCdzIGZhc3RlciB0aGFuIG5hdGl2ZQorICAgIC8vIGh0dHBzOi8vanNwZXJm
LmNvbS90aG9yLWluZGV4b2YtdnMtZm9yLzUKKyAgICBpbmRleE9mID0gZnVuY3Rpb24oIGxpc3Qs
IGVsZW0gKSB7CisgICAgICAgIHZhciBpID0gMCwKKyAgICAgICAgICAgIGxlbiA9IGxpc3QubGVu
Z3RoOworICAgICAgICBmb3IgKCA7IGkgPCBsZW47IGkrKyApIHsKKyAgICAgICAgICAgIGlmICgg
bGlzdFtpXSA9PT0gZWxlbSApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gaTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gLTE7CisgICAgfSwKKworICAgIGJvb2xl
YW5zID0gImNoZWNrZWR8c2VsZWN0ZWR8YXN5bmN8YXV0b2ZvY3VzfGF1dG9wbGF5fGNvbnRyb2xz
fGRlZmVyfGRpc2FibGVkfGhpZGRlbnxpc21hcHxsb29wfG11bHRpcGxlfG9wZW58cmVhZG9ubHl8
cmVxdWlyZWR8c2NvcGVkIiwKKworICAgIC8vIFJlZ3VsYXIgZXhwcmVzc2lvbnMKKworICAgIC8v
IGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtc2VsZWN0b3JzLyN3aGl0ZXNwYWNlCisgICAgd2hp
dGVzcGFjZSA9ICJbXFx4MjBcXHRcXHJcXG5cXGZdIiwKKworICAgIC8vIGh0dHA6Ly93d3cudzMu
b3JnL1RSL0NTUzIxL3N5bmRhdGEuaHRtbCN2YWx1ZS1kZWYtaWRlbnRpZmllcgorICAgIGlkZW50
aWZpZXIgPSAiKD86XFxcXC58W1xcdy1dfFteXDAtXFx4YTBdKSsiLAorCisgICAgLy8gQXR0cmli
dXRlIHNlbGVjdG9yczogaHR0cDovL3d3dy53My5vcmcvVFIvc2VsZWN0b3JzLyNhdHRyaWJ1dGUt
c2VsZWN0b3JzCisgICAgYXR0cmlidXRlcyA9ICJcXFsiICsgd2hpdGVzcGFjZSArICIqKCIgKyBp
ZGVudGlmaWVyICsgIikoPzoiICsgd2hpdGVzcGFjZSArCisgICAgICAgIC8vIE9wZXJhdG9yIChj
YXB0dXJlIDIpCisgICAgICAgICIqKFsqXiR8IX5dPz0pIiArIHdoaXRlc3BhY2UgKworICAgICAg
ICAvLyAiQXR0cmlidXRlIHZhbHVlcyBtdXN0IGJlIENTUyBpZGVudGlmaWVycyBbY2FwdHVyZSA1
XSBvciBzdHJpbmdzIFtjYXB0dXJlIDMgb3IgY2FwdHVyZSA0XSIKKyAgICAgICAgIiooPzonKCg/
OlxcXFwufFteXFxcXCddKSopJ3xcIigoPzpcXFxcLnxbXlxcXFxcIl0pKilcInwoIiArIGlkZW50
aWZpZXIgKyAiKSl8KSIgKyB3aGl0ZXNwYWNlICsKKyAgICAgICAgIipcXF0iLAorCisgICAgcHNl
dWRvcyA9ICI6KCIgKyBpZGVudGlmaWVyICsgIikoPzpcXCgoIiArCisgICAgICAgIC8vIFRvIHJl
ZHVjZSB0aGUgbnVtYmVyIG9mIHNlbGVjdG9ycyBuZWVkaW5nIHRva2VuaXplIGluIHRoZSBwcmVG
aWx0ZXIsIHByZWZlciBhcmd1bWVudHM6CisgICAgICAgIC8vIDEuIHF1b3RlZCAoY2FwdHVyZSAz
OyBjYXB0dXJlIDQgb3IgY2FwdHVyZSA1KQorICAgICAgICAiKCcoKD86XFxcXC58W15cXFxcJ10p
KiknfFwiKCg/OlxcXFwufFteXFxcXFwiXSkqKVwiKXwiICsKKyAgICAgICAgLy8gMi4gc2ltcGxl
IChjYXB0dXJlIDYpCisgICAgICAgICIoKD86XFxcXC58W15cXFxcKClbXFxdXXwiICsgYXR0cmli
dXRlcyArICIpKil8IiArCisgICAgICAgIC8vIDMuIGFueXRoaW5nIGVsc2UgKGNhcHR1cmUgMikK
KyAgICAgICAgIi4qIiArCisgICAgICAgICIpXFwpfCkiLAorCisgICAgLy8gTGVhZGluZyBhbmQg
bm9uLWVzY2FwZWQgdHJhaWxpbmcgd2hpdGVzcGFjZSwgY2FwdHVyaW5nIHNvbWUgbm9uLXdoaXRl
c3BhY2UgY2hhcmFjdGVycyBwcmVjZWRpbmcgdGhlIGxhdHRlcgorICAgIHJ3aGl0ZXNwYWNlID0g
bmV3IFJlZ0V4cCggd2hpdGVzcGFjZSArICIrIiwgImciICksCisgICAgcnRyaW0gPSBuZXcgUmVn
RXhwKCAiXiIgKyB3aGl0ZXNwYWNlICsgIit8KCg/Ol58W15cXFxcXSkoPzpcXFxcLikqKSIgKyB3
aGl0ZXNwYWNlICsgIiskIiwgImciICksCisKKyAgICByY29tbWEgPSBuZXcgUmVnRXhwKCAiXiIg
KyB3aGl0ZXNwYWNlICsgIiosIiArIHdoaXRlc3BhY2UgKyAiKiIgKSwKKyAgICByY29tYmluYXRv
cnMgPSBuZXcgUmVnRXhwKCAiXiIgKyB3aGl0ZXNwYWNlICsgIiooWz4rfl18IiArIHdoaXRlc3Bh
Y2UgKyAiKSIgKyB3aGl0ZXNwYWNlICsgIioiICksCisKKyAgICByYXR0cmlidXRlUXVvdGVzID0g
bmV3IFJlZ0V4cCggIj0iICsgd2hpdGVzcGFjZSArICIqKFteXFxdJ1wiXSo/KSIgKyB3aGl0ZXNw
YWNlICsgIipcXF0iLCAiZyIgKSwKKworICAgIHJwc2V1ZG8gPSBuZXcgUmVnRXhwKCBwc2V1ZG9z
ICksCisgICAgcmlkZW50aWZpZXIgPSBuZXcgUmVnRXhwKCAiXiIgKyBpZGVudGlmaWVyICsgIiQi
ICksCisKKyAgICBtYXRjaEV4cHIgPSB7CisgICAgICAgICJJRCI6IG5ldyBSZWdFeHAoICJeIygi
ICsgaWRlbnRpZmllciArICIpIiApLAorICAgICAgICAiQ0xBU1MiOiBuZXcgUmVnRXhwKCAiXlxc
LigiICsgaWRlbnRpZmllciArICIpIiApLAorICAgICAgICAiVEFHIjogbmV3IFJlZ0V4cCggIl4o
IiArIGlkZW50aWZpZXIgKyAifFsqXSkiICksCisgICAgICAgICJBVFRSIjogbmV3IFJlZ0V4cCgg
Il4iICsgYXR0cmlidXRlcyApLAorICAgICAgICAiUFNFVURPIjogbmV3IFJlZ0V4cCggIl4iICsg
cHNldWRvcyApLAorICAgICAgICAiQ0hJTEQiOiBuZXcgUmVnRXhwKCAiXjoob25seXxmaXJzdHxs
YXN0fG50aHxudGgtbGFzdCktKGNoaWxkfG9mLXR5cGUpKD86XFwoIiArIHdoaXRlc3BhY2UgKwor
ICAgICAgICAgICAgIiooZXZlbnxvZGR8KChbKy1dfCkoXFxkKilufCkiICsgd2hpdGVzcGFjZSAr
ICIqKD86KFsrLV18KSIgKyB3aGl0ZXNwYWNlICsKKyAgICAgICAgICAgICIqKFxcZCspfCkpIiAr
IHdoaXRlc3BhY2UgKyAiKlxcKXwpIiwgImkiICksCisgICAgICAgICJib29sIjogbmV3IFJlZ0V4
cCggIl4oPzoiICsgYm9vbGVhbnMgKyAiKSQiLCAiaSIgKSwKKyAgICAgICAgLy8gRm9yIHVzZSBp
biBsaWJyYXJpZXMgaW1wbGVtZW50aW5nIC5pcygpCisgICAgICAgIC8vIFdlIHVzZSB0aGlzIGZv
ciBQT1MgbWF0Y2hpbmcgaW4gYHNlbGVjdGAKKyAgICAgICAgIm5lZWRzQ29udGV4dCI6IG5ldyBS
ZWdFeHAoICJeIiArIHdoaXRlc3BhY2UgKyAiKls+K35dfDooZXZlbnxvZGR8ZXF8Z3R8bHR8bnRo
fGZpcnN0fGxhc3QpKD86XFwoIiArCisgICAgICAgICAgICB3aGl0ZXNwYWNlICsgIiooKD86LVxc
ZCk/XFxkKikiICsgd2hpdGVzcGFjZSArICIqXFwpfCkoPz1bXi1dfCQpIiwgImkiICkKKyAgICB9
LAorCisgICAgcmlucHV0cyA9IC9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbikkL2ks
CisgICAgcmhlYWRlciA9IC9eaFxkJC9pLAorCisgICAgcm5hdGl2ZSA9IC9eW157XStce1xzKlxb
bmF0aXZlIFx3LywKKworICAgIC8vIEVhc2lseS1wYXJzZWFibGUvcmV0cmlldmFibGUgSUQgb3Ig
VEFHIG9yIENMQVNTIHNlbGVjdG9ycworICAgIHJxdWlja0V4cHIgPSAvXig/OiMoW1x3LV0rKXwo
XHcrKXxcLihbXHctXSspKSQvLAorCisgICAgcnNpYmxpbmcgPSAvWyt+XS8sCisKKyAgICAvLyBD
U1MgZXNjYXBlcworICAgIC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIxL3N5bmRhdGEuaHRt
bCNlc2NhcGVkLWNoYXJhY3RlcnMKKyAgICBydW5lc2NhcGUgPSBuZXcgUmVnRXhwKCAiXFxcXChb
XFxkYS1mXXsxLDZ9IiArIHdoaXRlc3BhY2UgKyAiP3woIiArIHdoaXRlc3BhY2UgKyAiKXwuKSIs
ICJpZyIgKSwKKyAgICBmdW5lc2NhcGUgPSBmdW5jdGlvbiggXywgZXNjYXBlZCwgZXNjYXBlZFdo
aXRlc3BhY2UgKSB7CisgICAgICAgIHZhciBoaWdoID0gIjB4IiArIGVzY2FwZWQgLSAweDEwMDAw
OworICAgICAgICAvLyBOYU4gbWVhbnMgbm9uLWNvZGVwb2ludAorICAgICAgICAvLyBTdXBwb3J0
OiBGaXJlZm94PDI0CisgICAgICAgIC8vIFdvcmthcm91bmQgZXJyb25lb3VzIG51bWVyaWMgaW50
ZXJwcmV0YXRpb24gb2YgKyIweCIKKyAgICAgICAgcmV0dXJuIGhpZ2ggIT09IGhpZ2ggfHwgZXNj
YXBlZFdoaXRlc3BhY2UgPworICAgICAgICAgICAgZXNjYXBlZCA6CisgICAgICAgICAgICBoaWdo
IDwgMCA/CisgICAgICAgICAgICAgICAgLy8gQk1QIGNvZGVwb2ludAorICAgICAgICAgICAgICAg
IFN0cmluZy5mcm9tQ2hhckNvZGUoIGhpZ2ggKyAweDEwMDAwICkgOgorICAgICAgICAgICAgICAg
IC8vIFN1cHBsZW1lbnRhbCBQbGFuZSBjb2RlcG9pbnQgKHN1cnJvZ2F0ZSBwYWlyKQorICAgICAg
ICAgICAgICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoIGhpZ2ggPj4gMTAgfCAweEQ4MDAsIGhpZ2gg
JiAweDNGRiB8IDB4REMwMCApOworICAgIH0sCisKKyAgICAvLyBDU1Mgc3RyaW5nL2lkZW50aWZp
ZXIgc2VyaWFsaXphdGlvbgorICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3NvbS8j
Y29tbW9uLXNlcmlhbGl6aW5nLWlkaW9tcworICAgIHJjc3Nlc2NhcGUgPSAvKFtcMC1ceDFmXHg3
Zl18Xi0/XGQpfF4tJHxbXlwwLVx4MWZceDdmLVx1RkZGRlx3LV0vZywKKyAgICBmY3NzZXNjYXBl
ID0gZnVuY3Rpb24oIGNoLCBhc0NvZGVQb2ludCApIHsKKyAgICAgICAgaWYgKCBhc0NvZGVQb2lu
dCApIHsKKworICAgICAgICAgICAgLy8gVSswMDAwIE5VTEwgYmVjb21lcyBVK0ZGRkQgUkVQTEFD
RU1FTlQgQ0hBUkFDVEVSCisgICAgICAgICAgICBpZiAoIGNoID09PSAiXDAiICkgeworICAgICAg
ICAgICAgICAgIHJldHVybiAiXHVGRkZEIjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
Ly8gQ29udHJvbCBjaGFyYWN0ZXJzIGFuZCAoZGVwZW5kZW50IHVwb24gcG9zaXRpb24pIG51bWJl
cnMgZ2V0IGVzY2FwZWQgYXMgY29kZSBwb2ludHMKKyAgICAgICAgICAgIHJldHVybiBjaC5zbGlj
ZSggMCwgLTEgKSArICJcXCIgKyBjaC5jaGFyQ29kZUF0KCBjaC5sZW5ndGggLSAxICkudG9TdHJp
bmcoIDE2ICkgKyAiICI7CisgICAgICAgIH0KKworICAgICAgICAvLyBPdGhlciBwb3RlbnRpYWxs
eS1zcGVjaWFsIEFTQ0lJIGNoYXJhY3RlcnMgZ2V0IGJhY2tzbGFzaC1lc2NhcGVkCisgICAgICAg
IHJldHVybiAiXFwiICsgY2g7CisgICAgfSwKKworICAgIC8vIFVzZWQgZm9yIGlmcmFtZXMKKyAg
ICAvLyBTZWUgc2V0RG9jdW1lbnQoKQorICAgIC8vIFJlbW92aW5nIHRoZSBmdW5jdGlvbiB3cmFw
cGVyIGNhdXNlcyBhICJQZXJtaXNzaW9uIERlbmllZCIKKyAgICAvLyBlcnJvciBpbiBJRQorICAg
IHVubG9hZEhhbmRsZXIgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgc2V0RG9jdW1lbnQoKTsKKyAg
ICB9LAorCisgICAgZGlzYWJsZWRBbmNlc3RvciA9IGFkZENvbWJpbmF0b3IoCisgICAgICAgIGZ1
bmN0aW9uKCBlbGVtICkgeworICAgICAgICAgICAgcmV0dXJuIGVsZW0uZGlzYWJsZWQgPT09IHRy
dWUgJiYgKCJmb3JtIiBpbiBlbGVtIHx8ICJsYWJlbCIgaW4gZWxlbSk7CisgICAgICAgIH0sCisg
ICAgICAgIHsgZGlyOiAicGFyZW50Tm9kZSIsIG5leHQ6ICJsZWdlbmQiIH0KKyAgICApOworCisv
LyBPcHRpbWl6ZSBmb3IgcHVzaC5hcHBseSggXywgTm9kZUxpc3QgKQordHJ5IHsKKyAgICBwdXNo
LmFwcGx5KAorICAgICAgICAoYXJyID0gc2xpY2UuY2FsbCggcHJlZmVycmVkRG9jLmNoaWxkTm9k
ZXMgKSksCisgICAgICAgIHByZWZlcnJlZERvYy5jaGlsZE5vZGVzCisgICAgKTsKKyAgICAvLyBT
dXBwb3J0OiBBbmRyb2lkPDQuMAorICAgIC8vIERldGVjdCBzaWxlbnRseSBmYWlsaW5nIHB1c2gu
YXBwbHkKKyAgICBhcnJbIHByZWZlcnJlZERvYy5jaGlsZE5vZGVzLmxlbmd0aCBdLm5vZGVUeXBl
OworfSBjYXRjaCAoIGUgKSB7CisgICAgcHVzaCA9IHsgYXBwbHk6IGFyci5sZW5ndGggPworCisg
ICAgICAgIC8vIExldmVyYWdlIHNsaWNlIGlmIHBvc3NpYmxlCisgICAgICAgIGZ1bmN0aW9uKCB0
YXJnZXQsIGVscyApIHsKKyAgICAgICAgICAgIHB1c2hfbmF0aXZlLmFwcGx5KCB0YXJnZXQsIHNs
aWNlLmNhbGwoZWxzKSApOworICAgICAgICB9IDoKKworICAgICAgICAvLyBTdXBwb3J0OiBJRTw5
CisgICAgICAgIC8vIE90aGVyd2lzZSBhcHBlbmQgZGlyZWN0bHkKKyAgICAgICAgZnVuY3Rpb24o
IHRhcmdldCwgZWxzICkgeworICAgICAgICAgICAgdmFyIGogPSB0YXJnZXQubGVuZ3RoLAorICAg
ICAgICAgICAgICAgIGkgPSAwOworICAgICAgICAgICAgLy8gQ2FuJ3QgdHJ1c3QgTm9kZUxpc3Qu
bGVuZ3RoCisgICAgICAgICAgICB3aGlsZSAoICh0YXJnZXRbaisrXSA9IGVsc1tpKytdKSApIHt9
CisgICAgICAgICAgICB0YXJnZXQubGVuZ3RoID0gaiAtIDE7CisgICAgICAgIH0KKyAgICB9Owor
fQorCitmdW5jdGlvbiBTaXp6bGUoIHNlbGVjdG9yLCBjb250ZXh0LCByZXN1bHRzLCBzZWVkICkg
eworICAgIHZhciBtLCBpLCBlbGVtLCBuaWQsIG1hdGNoLCBncm91cHMsIG5ld1NlbGVjdG9yLAor
ICAgICAgICBuZXdDb250ZXh0ID0gY29udGV4dCAmJiBjb250ZXh0Lm93bmVyRG9jdW1lbnQsCisK
KyAgICAgICAgLy8gbm9kZVR5cGUgZGVmYXVsdHMgdG8gOSwgc2luY2UgY29udGV4dCBkZWZhdWx0
cyB0byBkb2N1bWVudAorICAgICAgICBub2RlVHlwZSA9IGNvbnRleHQgPyBjb250ZXh0Lm5vZGVU
eXBlIDogOTsKKworICAgIHJlc3VsdHMgPSByZXN1bHRzIHx8IFtdOworCisgICAgLy8gUmV0dXJu
IGVhcmx5IGZyb20gY2FsbHMgd2l0aCBpbnZhbGlkIHNlbGVjdG9yIG9yIGNvbnRleHQKKyAgICBp
ZiAoIHR5cGVvZiBzZWxlY3RvciAhPT0gInN0cmluZyIgfHwgIXNlbGVjdG9yIHx8CisgICAgICAg
IG5vZGVUeXBlICE9PSAxICYmIG5vZGVUeXBlICE9PSA5ICYmIG5vZGVUeXBlICE9PSAxMSApIHsK
KworICAgICAgICByZXR1cm4gcmVzdWx0czsKKyAgICB9CisKKyAgICAvLyBUcnkgdG8gc2hvcnRj
dXQgZmluZCBvcGVyYXRpb25zIChhcyBvcHBvc2VkIHRvIGZpbHRlcnMpIGluIEhUTUwgZG9jdW1l
bnRzCisgICAgaWYgKCAhc2VlZCApIHsKKworICAgICAgICBpZiAoICggY29udGV4dCA/IGNvbnRl
eHQub3duZXJEb2N1bWVudCB8fCBjb250ZXh0IDogcHJlZmVycmVkRG9jICkgIT09IGRvY3VtZW50
ICkgeworICAgICAgICAgICAgc2V0RG9jdW1lbnQoIGNvbnRleHQgKTsKKyAgICAgICAgfQorICAg
ICAgICBjb250ZXh0ID0gY29udGV4dCB8fCBkb2N1bWVudDsKKworICAgICAgICBpZiAoIGRvY3Vt
ZW50SXNIVE1MICkgeworCisgICAgICAgICAgICAvLyBJZiB0aGUgc2VsZWN0b3IgaXMgc3VmZmlj
aWVudGx5IHNpbXBsZSwgdHJ5IHVzaW5nIGEgImdldCpCeSoiIERPTSBtZXRob2QKKyAgICAgICAg
ICAgIC8vIChleGNlcHRpbmcgRG9jdW1lbnRGcmFnbWVudCBjb250ZXh0LCB3aGVyZSB0aGUgbWV0
aG9kcyBkb24ndCBleGlzdCkKKyAgICAgICAgICAgIGlmICggbm9kZVR5cGUgIT09IDExICYmICht
YXRjaCA9IHJxdWlja0V4cHIuZXhlYyggc2VsZWN0b3IgKSkgKSB7CisKKyAgICAgICAgICAgICAg
ICAvLyBJRCBzZWxlY3RvcgorICAgICAgICAgICAgICAgIGlmICggKG0gPSBtYXRjaFsxXSkgKSB7
CisKKyAgICAgICAgICAgICAgICAgICAgLy8gRG9jdW1lbnQgY29udGV4dAorICAgICAgICAgICAg
ICAgICAgICBpZiAoIG5vZGVUeXBlID09PSA5ICkgeworICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCAoZWxlbSA9IGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQoIG0gKSkgKSB7CisKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBTdXBwb3J0OiBJRSwgT3BlcmEsIFdlYmtpdAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IGlkZW50aWZ5IHZlcnNpb25zCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gZ2V0RWxlbWVudEJ5SWQgY2FuIG1hdGNoIGVsZW1lbnRz
IGJ5IG5hbWUgaW5zdGVhZCBvZiBJRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgg
ZWxlbS5pZCA9PT0gbSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0
cy5wdXNoKCBlbGVtICk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBy
ZXN1bHRzOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dHM7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgLy8g
RWxlbWVudCBjb250ZXh0CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisKKyAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6IElFLCBPcGVyYSwgV2Via2l0CisgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBUT0RPOiBpZGVudGlmeSB2ZXJzaW9ucworICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gZ2V0RWxlbWVudEJ5SWQgY2FuIG1hdGNoIGVsZW1lbnRzIGJ5IG5hbWUgaW5z
dGVhZCBvZiBJRAorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBuZXdDb250ZXh0ICYmIChl
bGVtID0gbmV3Q29udGV4dC5nZXRFbGVtZW50QnlJZCggbSApKSAmJgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnRhaW5zKCBjb250ZXh0LCBlbGVtICkgJiYKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlbGVtLmlkID09PSBtICkgeworCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVzdWx0cy5wdXNoKCBlbGVtICk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdHM7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIFR5cGUgc2VsZWN0b3IKKyAgICAgICAgICAg
ICAgICB9IGVsc2UgaWYgKCBtYXRjaFsyXSApIHsKKyAgICAgICAgICAgICAgICAgICAgcHVzaC5h
cHBseSggcmVzdWx0cywgY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSggc2VsZWN0b3IgKSAp
OworICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0czsKKworICAgICAgICAgICAgICAg
IC8vIENsYXNzIHNlbGVjdG9yCisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICggKG0gPSBtYXRj
aFszXSkgJiYgc3VwcG9ydC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lICYmCisgICAgICAgICAgICAg
ICAgICAgIGNvbnRleHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSApIHsKKworICAgICAgICAgICAg
ICAgICAgICBwdXNoLmFwcGx5KCByZXN1bHRzLCBjb250ZXh0LmdldEVsZW1lbnRzQnlDbGFzc05h
bWUoIG0gKSApOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0czsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRha2UgYWR2YW50YWdl
IG9mIHF1ZXJ5U2VsZWN0b3JBbGwKKyAgICAgICAgICAgIGlmICggc3VwcG9ydC5xc2EgJiYKKyAg
ICAgICAgICAgICAgICAhY29tcGlsZXJDYWNoZVsgc2VsZWN0b3IgKyAiICIgXSAmJgorICAgICAg
ICAgICAgICAgICghcmJ1Z2d5UVNBIHx8ICFyYnVnZ3lRU0EudGVzdCggc2VsZWN0b3IgKSkgKSB7
CisKKyAgICAgICAgICAgICAgICBpZiAoIG5vZGVUeXBlICE9PSAxICkgeworICAgICAgICAgICAg
ICAgICAgICBuZXdDb250ZXh0ID0gY29udGV4dDsKKyAgICAgICAgICAgICAgICAgICAgbmV3U2Vs
ZWN0b3IgPSBzZWxlY3RvcjsKKworICAgICAgICAgICAgICAgIC8vIHFTQSBsb29rcyBvdXRzaWRl
IEVsZW1lbnQgY29udGV4dCwgd2hpY2ggaXMgbm90IHdoYXQgd2Ugd2FudAorICAgICAgICAgICAg
ICAgIC8vIFRoYW5rcyB0byBBbmRyZXcgRHVwb250IGZvciB0aGlzIHdvcmthcm91bmQgdGVjaG5p
cXVlCisgICAgICAgICAgICAgICAgLy8gU3VwcG9ydDogSUUgPD04CisgICAgICAgICAgICAgICAg
Ly8gRXhjbHVkZSBvYmplY3QgZWxlbWVudHMKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCBj
b250ZXh0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgIT09ICJvYmplY3QiICkgeworCisgICAgICAg
ICAgICAgICAgICAgIC8vIENhcHR1cmUgdGhlIGNvbnRleHQgSUQsIHNldHRpbmcgaXQgZmlyc3Qg
aWYgbmVjZXNzYXJ5CisgICAgICAgICAgICAgICAgICAgIGlmICggKG5pZCA9IGNvbnRleHQuZ2V0
QXR0cmlidXRlKCAiaWQiICkpICkgeworICAgICAgICAgICAgICAgICAgICAgICAgbmlkID0gbmlk
LnJlcGxhY2UoIHJjc3Nlc2NhcGUsIGZjc3Nlc2NhcGUgKTsKKyAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0QXR0cmlidXRlKCAi
aWQiLCAobmlkID0gZXhwYW5kbykgKTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgICAgICAgIC8vIFByZWZpeCBldmVyeSBzZWxlY3RvciBpbiB0aGUgbGlzdAorICAgICAg
ICAgICAgICAgICAgICBncm91cHMgPSB0b2tlbml6ZSggc2VsZWN0b3IgKTsKKyAgICAgICAgICAg
ICAgICAgICAgaSA9IGdyb3Vwcy5sZW5ndGg7CisgICAgICAgICAgICAgICAgICAgIHdoaWxlICgg
aS0tICkgeworICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBzW2ldID0gIiMiICsgbmlkICsg
IiAiICsgdG9TZWxlY3RvciggZ3JvdXBzW2ldICk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgbmV3U2VsZWN0b3IgPSBncm91cHMuam9pbiggIiwiICk7CisKKyAg
ICAgICAgICAgICAgICAgICAgLy8gRXhwYW5kIGNvbnRleHQgZm9yIHNpYmxpbmcgc2VsZWN0b3Jz
CisgICAgICAgICAgICAgICAgICAgIG5ld0NvbnRleHQgPSByc2libGluZy50ZXN0KCBzZWxlY3Rv
ciApICYmIHRlc3RDb250ZXh0KCBjb250ZXh0LnBhcmVudE5vZGUgKSB8fAorICAgICAgICAgICAg
ICAgICAgICAgICAgY29udGV4dDsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICBpZiAoIG5ld1NlbGVjdG9yICkgeworICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgcHVzaC5hcHBseSggcmVzdWx0cywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBuZXdDb250ZXh0LnF1ZXJ5U2VsZWN0b3JBbGwoIG5ld1NlbGVjdG9yICkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
cmVzdWx0czsKKyAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoIHFzYUVycm9yICkgeworICAg
ICAgICAgICAgICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCBuaWQgPT09IGV4cGFuZG8gKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4
dC5yZW1vdmVBdHRyaWJ1dGUoICJpZCIgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0KKworICAgIC8vIEFsbCBvdGhlcnMKKyAgICByZXR1cm4gc2VsZWN0KCBz
ZWxlY3Rvci5yZXBsYWNlKCBydHJpbSwgIiQxIiApLCBjb250ZXh0LCByZXN1bHRzLCBzZWVkICk7
Cit9CisKKy8qKgorICogQ3JlYXRlIGtleS12YWx1ZSBjYWNoZXMgb2YgbGltaXRlZCBzaXplCisg
KiBAcmV0dXJucyB7ZnVuY3Rpb24oc3RyaW5nLCBvYmplY3QpfSBSZXR1cm5zIHRoZSBPYmplY3Qg
ZGF0YSBhZnRlciBzdG9yaW5nIGl0IG9uIGl0c2VsZiB3aXRoCisgKiAgcHJvcGVydHkgbmFtZSB0
aGUgKHNwYWNlLXN1ZmZpeGVkKSBzdHJpbmcgYW5kIChpZiB0aGUgY2FjaGUgaXMgbGFyZ2VyIHRo
YW4gRXhwci5jYWNoZUxlbmd0aCkKKyAqICBkZWxldGluZyB0aGUgb2xkZXN0IGVudHJ5CisgKi8K
K2Z1bmN0aW9uIGNyZWF0ZUNhY2hlKCkgeworICAgIHZhciBrZXlzID0gW107CisKKyAgICBmdW5j
dGlvbiBjYWNoZSgga2V5LCB2YWx1ZSApIHsKKyAgICAgICAgLy8gVXNlIChrZXkgKyAiICIpIHRv
IGF2b2lkIGNvbGxpc2lvbiB3aXRoIG5hdGl2ZSBwcm90b3R5cGUgcHJvcGVydGllcyAoc2VlIElz
c3VlICMxNTcpCisgICAgICAgIGlmICgga2V5cy5wdXNoKCBrZXkgKyAiICIgKSA+IEV4cHIuY2Fj
aGVMZW5ndGggKSB7CisgICAgICAgICAgICAvLyBPbmx5IGtlZXAgdGhlIG1vc3QgcmVjZW50IGVu
dHJpZXMKKyAgICAgICAgICAgIGRlbGV0ZSBjYWNoZVsga2V5cy5zaGlmdCgpIF07CisgICAgICAg
IH0KKyAgICAgICAgcmV0dXJuIChjYWNoZVsga2V5ICsgIiAiIF0gPSB2YWx1ZSk7CisgICAgfQor
ICAgIHJldHVybiBjYWNoZTsKK30KKworLyoqCisgKiBNYXJrIGEgZnVuY3Rpb24gZm9yIHNwZWNp
YWwgdXNlIGJ5IFNpenpsZQorICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gVGhlIGZ1bmN0aW9uIHRv
IG1hcmsKKyAqLworZnVuY3Rpb24gbWFya0Z1bmN0aW9uKCBmbiApIHsKKyAgICBmblsgZXhwYW5k
byBdID0gdHJ1ZTsKKyAgICByZXR1cm4gZm47Cit9CisKKy8qKgorICogU3VwcG9ydCB0ZXN0aW5n
IHVzaW5nIGFuIGVsZW1lbnQKKyAqIEBwYXJhbSB7RnVuY3Rpb259IGZuIFBhc3NlZCB0aGUgY3Jl
YXRlZCBlbGVtZW50IGFuZCByZXR1cm5zIGEgYm9vbGVhbiByZXN1bHQKKyAqLworZnVuY3Rpb24g
YXNzZXJ0KCBmbiApIHsKKyAgICB2YXIgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJmaWVs
ZHNldCIpOworCisgICAgdHJ5IHsKKyAgICAgICAgcmV0dXJuICEhZm4oIGVsICk7CisgICAgfSBj
YXRjaCAoZSkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfSBmaW5hbGx5IHsKKyAgICAg
ICAgLy8gUmVtb3ZlIGZyb20gaXRzIHBhcmVudCBieSBkZWZhdWx0CisgICAgICAgIGlmICggZWwu
cGFyZW50Tm9kZSApIHsKKyAgICAgICAgICAgIGVsLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoIGVs
ICk7CisgICAgICAgIH0KKyAgICAgICAgLy8gcmVsZWFzZSBtZW1vcnkgaW4gSUUKKyAgICAgICAg
ZWwgPSBudWxsOworICAgIH0KK30KKworLyoqCisgKiBBZGRzIHRoZSBzYW1lIGhhbmRsZXIgZm9y
IGFsbCBvZiB0aGUgc3BlY2lmaWVkIGF0dHJzCisgKiBAcGFyYW0ge1N0cmluZ30gYXR0cnMgUGlw
ZS1zZXBhcmF0ZWQgbGlzdCBvZiBhdHRyaWJ1dGVzCisgKiBAcGFyYW0ge0Z1bmN0aW9ufSBoYW5k
bGVyIFRoZSBtZXRob2QgdGhhdCB3aWxsIGJlIGFwcGxpZWQKKyAqLworZnVuY3Rpb24gYWRkSGFu
ZGxlKCBhdHRycywgaGFuZGxlciApIHsKKyAgICB2YXIgYXJyID0gYXR0cnMuc3BsaXQoInwiKSwK
KyAgICAgICAgaSA9IGFyci5sZW5ndGg7CisKKyAgICB3aGlsZSAoIGktLSApIHsKKyAgICAgICAg
RXhwci5hdHRySGFuZGxlWyBhcnJbaV0gXSA9IGhhbmRsZXI7CisgICAgfQorfQorCisvKioKKyAq
IENoZWNrcyBkb2N1bWVudCBvcmRlciBvZiB0d28gc2libGluZ3MKKyAqIEBwYXJhbSB7RWxlbWVu
dH0gYQorICogQHBhcmFtIHtFbGVtZW50fSBiCisgKiBAcmV0dXJucyB7TnVtYmVyfSBSZXR1cm5z
IGxlc3MgdGhhbiAwIGlmIGEgcHJlY2VkZXMgYiwgZ3JlYXRlciB0aGFuIDAgaWYgYSBmb2xsb3dz
IGIKKyAqLworZnVuY3Rpb24gc2libGluZ0NoZWNrKCBhLCBiICkgeworICAgIHZhciBjdXIgPSBi
ICYmIGEsCisgICAgICAgIGRpZmYgPSBjdXIgJiYgYS5ub2RlVHlwZSA9PT0gMSAmJiBiLm5vZGVU
eXBlID09PSAxICYmCisgICAgICAgICAgICBhLnNvdXJjZUluZGV4IC0gYi5zb3VyY2VJbmRleDsK
KworICAgIC8vIFVzZSBJRSBzb3VyY2VJbmRleCBpZiBhdmFpbGFibGUgb24gYm90aCBub2Rlcwor
ICAgIGlmICggZGlmZiApIHsKKyAgICAgICAgcmV0dXJuIGRpZmY7CisgICAgfQorCisgICAgLy8g
Q2hlY2sgaWYgYiBmb2xsb3dzIGEKKyAgICBpZiAoIGN1ciApIHsKKyAgICAgICAgd2hpbGUgKCAo
Y3VyID0gY3VyLm5leHRTaWJsaW5nKSApIHsKKyAgICAgICAgICAgIGlmICggY3VyID09PSBiICkg
eworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0KKworICAgIHJldHVybiBhID8gMSA6IC0xOworfQorCisvKioKKyAqIFJldHVybnMgYSBm
dW5jdGlvbiB0byB1c2UgaW4gcHNldWRvcyBmb3IgaW5wdXQgdHlwZXMKKyAqIEBwYXJhbSB7U3Ry
aW5nfSB0eXBlCisgKi8KK2Z1bmN0aW9uIGNyZWF0ZUlucHV0UHNldWRvKCB0eXBlICkgeworICAg
IHJldHVybiBmdW5jdGlvbiggZWxlbSApIHsKKyAgICAgICAgdmFyIG5hbWUgPSBlbGVtLm5vZGVO
YW1lLnRvTG93ZXJDYXNlKCk7CisgICAgICAgIHJldHVybiBuYW1lID09PSAiaW5wdXQiICYmIGVs
ZW0udHlwZSA9PT0gdHlwZTsKKyAgICB9OworfQorCisvKioKKyAqIFJldHVybnMgYSBmdW5jdGlv
biB0byB1c2UgaW4gcHNldWRvcyBmb3IgYnV0dG9ucworICogQHBhcmFtIHtTdHJpbmd9IHR5cGUK
KyAqLworZnVuY3Rpb24gY3JlYXRlQnV0dG9uUHNldWRvKCB0eXBlICkgeworICAgIHJldHVybiBm
dW5jdGlvbiggZWxlbSApIHsKKyAgICAgICAgdmFyIG5hbWUgPSBlbGVtLm5vZGVOYW1lLnRvTG93
ZXJDYXNlKCk7CisgICAgICAgIHJldHVybiAobmFtZSA9PT0gImlucHV0IiB8fCBuYW1lID09PSAi
YnV0dG9uIikgJiYgZWxlbS50eXBlID09PSB0eXBlOworICAgIH07Cit9CisKKy8qKgorICogUmV0
dXJucyBhIGZ1bmN0aW9uIHRvIHVzZSBpbiBwc2V1ZG9zIGZvciA6ZW5hYmxlZC86ZGlzYWJsZWQK
KyAqIEBwYXJhbSB7Qm9vbGVhbn0gZGlzYWJsZWQgdHJ1ZSBmb3IgOmRpc2FibGVkOyBmYWxzZSBm
b3IgOmVuYWJsZWQKKyAqLworZnVuY3Rpb24gY3JlYXRlRGlzYWJsZWRQc2V1ZG8oIGRpc2FibGVk
ICkgeworCisgICAgLy8gS25vd24gOmRpc2FibGVkIGZhbHNlIHBvc2l0aXZlczogZmllbGRzZXRb
ZGlzYWJsZWRdID4gbGVnZW5kOm50aC1vZi10eXBlKG4rMikgOmNhbi1kaXNhYmxlCisgICAgcmV0
dXJuIGZ1bmN0aW9uKCBlbGVtICkgeworCisgICAgICAgIC8vIE9ubHkgY2VydGFpbiBlbGVtZW50
cyBjYW4gbWF0Y2ggOmVuYWJsZWQgb3IgOmRpc2FibGVkCisgICAgICAgIC8vIGh0dHBzOi8vaHRt
bC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3NjcmlwdGluZy5odG1sI3NlbGVjdG9yLWVuYWJs
ZWQKKyAgICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc2Ny
aXB0aW5nLmh0bWwjc2VsZWN0b3ItZGlzYWJsZWQKKyAgICAgICAgaWYgKCAiZm9ybSIgaW4gZWxl
bSApIHsKKworICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIGluaGVyaXRlZCBkaXNhYmxlZG5lc3Mg
b24gcmVsZXZhbnQgbm9uLWRpc2FibGVkIGVsZW1lbnRzOgorICAgICAgICAgICAgLy8gKiBsaXN0
ZWQgZm9ybS1hc3NvY2lhdGVkIGVsZW1lbnRzIGluIGEgZGlzYWJsZWQgZmllbGRzZXQKKyAgICAg
ICAgICAgIC8vICAgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZm9ybXMu
aHRtbCNjYXRlZ29yeS1saXN0ZWQKKyAgICAgICAgICAgIC8vICAgaHR0cHM6Ly9odG1sLnNwZWMu
d2hhdHdnLm9yZy9tdWx0aXBhZ2UvZm9ybXMuaHRtbCNjb25jZXB0LWZlLWRpc2FibGVkCisgICAg
ICAgICAgICAvLyAqIG9wdGlvbiBlbGVtZW50cyBpbiBhIGRpc2FibGVkIG9wdGdyb3VwCisgICAg
ICAgICAgICAvLyAgIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2Zvcm1z
Lmh0bWwjY29uY2VwdC1vcHRpb24tZGlzYWJsZWQKKyAgICAgICAgICAgIC8vIEFsbCBzdWNoIGVs
ZW1lbnRzIGhhdmUgYSAiZm9ybSIgcHJvcGVydHkuCisgICAgICAgICAgICBpZiAoIGVsZW0ucGFy
ZW50Tm9kZSAmJiBlbGVtLmRpc2FibGVkID09PSBmYWxzZSApIHsKKworICAgICAgICAgICAgICAg
IC8vIE9wdGlvbiBlbGVtZW50cyBkZWZlciB0byBhIHBhcmVudCBvcHRncm91cCBpZiBwcmVzZW50
CisgICAgICAgICAgICAgICAgaWYgKCAibGFiZWwiIGluIGVsZW0gKSB7CisgICAgICAgICAgICAg
ICAgICAgIGlmICggImxhYmVsIiBpbiBlbGVtLnBhcmVudE5vZGUgKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZWxlbS5wYXJlbnROb2RlLmRpc2FibGVkID09PSBkaXNhYmxlZDsK
KyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBlbGVtLmRpc2FibGVkID09PSBkaXNhYmxlZDsKKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6IElFIDYgLSAx
MQorICAgICAgICAgICAgICAgIC8vIFVzZSB0aGUgaXNEaXNhYmxlZCBzaG9ydGN1dCBwcm9wZXJ0
eSB0byBjaGVjayBmb3IgZGlzYWJsZWQgZmllbGRzZXQgYW5jZXN0b3JzCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGVsZW0uaXNEaXNhYmxlZCA9PT0gZGlzYWJsZWQgfHwKKworICAgICAgICAgICAg
ICAgICAgICAvLyBXaGVyZSB0aGVyZSBpcyBubyBpc0Rpc2FibGVkLCBjaGVjayBtYW51YWxseQor
ICAgICAgICAgICAgICAgICAgICAvKiBqc2hpbnQgLVcwMTggKi8KKyAgICAgICAgICAgICAgICAg
ICAgZWxlbS5pc0Rpc2FibGVkICE9PSAhZGlzYWJsZWQgJiYKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGRpc2FibGVkQW5jZXN0b3IoIGVsZW0gKSA9PT0gZGlzYWJsZWQ7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHJldHVybiBlbGVtLmRpc2FibGVkID09PSBkaXNhYmxlZDsKKworICAg
ICAgICAvLyBUcnkgdG8gd2lubm93IG91dCBlbGVtZW50cyB0aGF0IGNhbid0IGJlIGRpc2FibGVk
IGJlZm9yZSB0cnVzdGluZyB0aGUgZGlzYWJsZWQgcHJvcGVydHkuCisgICAgICAgIC8vIFNvbWUg
dmljdGltcyBnZXQgY2F1Z2h0IGluIG91ciBuZXQgKGxhYmVsLCBsZWdlbmQsIG1lbnUsIHRyYWNr
KSwgYnV0IGl0IHNob3VsZG4ndAorICAgICAgICAvLyBldmVuIGV4aXN0IG9uIHRoZW0sIGxldCBh
bG9uZSBoYXZlIGEgYm9vbGVhbiB2YWx1ZS4KKyAgICAgICAgfSBlbHNlIGlmICggImxhYmVsIiBp
biBlbGVtICkgeworICAgICAgICAgICAgcmV0dXJuIGVsZW0uZGlzYWJsZWQgPT09IGRpc2FibGVk
OworICAgICAgICB9CisKKyAgICAgICAgLy8gUmVtYWluaW5nIGVsZW1lbnRzIGFyZSBuZWl0aGVy
IDplbmFibGVkIG5vciA6ZGlzYWJsZWQKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH07Cit9
CisKKy8qKgorICogUmV0dXJucyBhIGZ1bmN0aW9uIHRvIHVzZSBpbiBwc2V1ZG9zIGZvciBwb3Np
dGlvbmFscworICogQHBhcmFtIHtGdW5jdGlvbn0gZm4KKyAqLworZnVuY3Rpb24gY3JlYXRlUG9z
aXRpb25hbFBzZXVkbyggZm4gKSB7CisgICAgcmV0dXJuIG1hcmtGdW5jdGlvbihmdW5jdGlvbigg
YXJndW1lbnQgKSB7CisgICAgICAgIGFyZ3VtZW50ID0gK2FyZ3VtZW50OworICAgICAgICByZXR1
cm4gbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCBzZWVkLCBtYXRjaGVzICkgeworICAgICAgICAgICAg
dmFyIGosCisgICAgICAgICAgICAgICAgbWF0Y2hJbmRleGVzID0gZm4oIFtdLCBzZWVkLmxlbmd0
aCwgYXJndW1lbnQgKSwKKyAgICAgICAgICAgICAgICBpID0gbWF0Y2hJbmRleGVzLmxlbmd0aDsK
KworICAgICAgICAgICAgLy8gTWF0Y2ggZWxlbWVudHMgZm91bmQgYXQgdGhlIHNwZWNpZmllZCBp
bmRleGVzCisgICAgICAgICAgICB3aGlsZSAoIGktLSApIHsKKyAgICAgICAgICAgICAgICBpZiAo
IHNlZWRbIChqID0gbWF0Y2hJbmRleGVzW2ldKSBdICkgeworICAgICAgICAgICAgICAgICAgICBz
ZWVkW2pdID0gIShtYXRjaGVzW2pdID0gc2VlZFtqXSk7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICB9KTsKK30KKworLyoqCisgKiBDaGVja3MgYSBu
b2RlIGZvciB2YWxpZGl0eSBhcyBhIFNpenpsZSBjb250ZXh0CisgKiBAcGFyYW0ge0VsZW1lbnR8
T2JqZWN0PX0gY29udGV4dAorICogQHJldHVybnMge0VsZW1lbnR8T2JqZWN0fEJvb2xlYW59IFRo
ZSBpbnB1dCBub2RlIGlmIGFjY2VwdGFibGUsIG90aGVyd2lzZSBhIGZhbHN5IHZhbHVlCisgKi8K
K2Z1bmN0aW9uIHRlc3RDb250ZXh0KCBjb250ZXh0ICkgeworICAgIHJldHVybiBjb250ZXh0ICYm
IHR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lICE9PSAidW5kZWZpbmVkIiAmJiBj
b250ZXh0OworfQorCisvLyBFeHBvc2Ugc3VwcG9ydCB2YXJzIGZvciBjb252ZW5pZW5jZQorc3Vw
cG9ydCA9IFNpenpsZS5zdXBwb3J0ID0ge307CisKKy8qKgorICogRGV0ZWN0cyBYTUwgbm9kZXMK
KyAqIEBwYXJhbSB7RWxlbWVudHxPYmplY3R9IGVsZW0gQW4gZWxlbWVudCBvciBhIGRvY3VtZW50
CisgKiBAcmV0dXJucyB7Qm9vbGVhbn0gVHJ1ZSBpZmYgZWxlbSBpcyBhIG5vbi1IVE1MIFhNTCBu
b2RlCisgKi8KK2lzWE1MID0gU2l6emxlLmlzWE1MID0gZnVuY3Rpb24oIGVsZW0gKSB7CisgICAg
Ly8gZG9jdW1lbnRFbGVtZW50IGlzIHZlcmlmaWVkIGZvciBjYXNlcyB3aGVyZSBpdCBkb2Vzbid0
IHlldCBleGlzdAorICAgIC8vIChzdWNoIGFzIGxvYWRpbmcgaWZyYW1lcyBpbiBJRSAtICM0ODMz
KQorICAgIHZhciBkb2N1bWVudEVsZW1lbnQgPSBlbGVtICYmIChlbGVtLm93bmVyRG9jdW1lbnQg
fHwgZWxlbSkuZG9jdW1lbnRFbGVtZW50OworICAgIHJldHVybiBkb2N1bWVudEVsZW1lbnQgPyBk
b2N1bWVudEVsZW1lbnQubm9kZU5hbWUgIT09ICJIVE1MIiA6IGZhbHNlOworfTsKKworLyoqCisg
KiBTZXRzIGRvY3VtZW50LXJlbGF0ZWQgdmFyaWFibGVzIG9uY2UgYmFzZWQgb24gdGhlIGN1cnJl
bnQgZG9jdW1lbnQKKyAqIEBwYXJhbSB7RWxlbWVudHxPYmplY3R9IFtkb2NdIEFuIGVsZW1lbnQg
b3IgZG9jdW1lbnQgb2JqZWN0IHRvIHVzZSB0byBzZXQgdGhlIGRvY3VtZW50CisgKiBAcmV0dXJu
cyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjdXJyZW50IGRvY3VtZW50CisgKi8KK3NldERvY3VtZW50
ID0gU2l6emxlLnNldERvY3VtZW50ID0gZnVuY3Rpb24oIG5vZGUgKSB7CisgICAgdmFyIGhhc0Nv
bXBhcmUsIHN1YldpbmRvdywKKyAgICAgICAgZG9jID0gbm9kZSA/IG5vZGUub3duZXJEb2N1bWVu
dCB8fCBub2RlIDogcHJlZmVycmVkRG9jOworCisgICAgLy8gUmV0dXJuIGVhcmx5IGlmIGRvYyBp
cyBpbnZhbGlkIG9yIGFscmVhZHkgc2VsZWN0ZWQKKyAgICBpZiAoIGRvYyA9PT0gZG9jdW1lbnQg
fHwgZG9jLm5vZGVUeXBlICE9PSA5IHx8ICFkb2MuZG9jdW1lbnRFbGVtZW50ICkgeworICAgICAg
ICByZXR1cm4gZG9jdW1lbnQ7CisgICAgfQorCisgICAgLy8gVXBkYXRlIGdsb2JhbCB2YXJpYWJs
ZXMKKyAgICBkb2N1bWVudCA9IGRvYzsKKyAgICBkb2NFbGVtID0gZG9jdW1lbnQuZG9jdW1lbnRF
bGVtZW50OworICAgIGRvY3VtZW50SXNIVE1MID0gIWlzWE1MKCBkb2N1bWVudCApOworCisgICAg
Ly8gU3VwcG9ydDogSUUgOS0xMSwgRWRnZQorICAgIC8vIEFjY2Vzc2luZyBpZnJhbWUgZG9jdW1l
bnRzIGFmdGVyIHVubG9hZCB0aHJvd3MgInBlcm1pc3Npb24gZGVuaWVkIiBlcnJvcnMgKGpRdWVy
eSAjMTM5MzYpCisgICAgaWYgKCBwcmVmZXJyZWREb2MgIT09IGRvY3VtZW50ICYmCisgICAgICAg
IChzdWJXaW5kb3cgPSBkb2N1bWVudC5kZWZhdWx0VmlldykgJiYgc3ViV2luZG93LnRvcCAhPT0g
c3ViV2luZG93ICkgeworCisgICAgICAgIC8vIFN1cHBvcnQ6IElFIDExLCBFZGdlCisgICAgICAg
IGlmICggc3ViV2luZG93LmFkZEV2ZW50TGlzdGVuZXIgKSB7CisgICAgICAgICAgICBzdWJXaW5k
b3cuYWRkRXZlbnRMaXN0ZW5lciggInVubG9hZCIsIHVubG9hZEhhbmRsZXIsIGZhbHNlICk7CisK
KyAgICAgICAgLy8gU3VwcG9ydDogSUUgOSAtIDEwIG9ubHkKKyAgICAgICAgfSBlbHNlIGlmICgg
c3ViV2luZG93LmF0dGFjaEV2ZW50ICkgeworICAgICAgICAgICAgc3ViV2luZG93LmF0dGFjaEV2
ZW50KCAib251bmxvYWQiLCB1bmxvYWRIYW5kbGVyICk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICAvKiBBdHRyaWJ1dGVzCisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisgICAgLy8gU3VwcG9ydDog
SUU8OAorICAgIC8vIFZlcmlmeSB0aGF0IGdldEF0dHJpYnV0ZSByZWFsbHkgcmV0dXJucyBhdHRy
aWJ1dGVzIGFuZCBub3QgcHJvcGVydGllcworICAgIC8vIChleGNlcHRpbmcgSUU4IGJvb2xlYW5z
KQorICAgIHN1cHBvcnQuYXR0cmlidXRlcyA9IGFzc2VydChmdW5jdGlvbiggZWwgKSB7CisgICAg
ICAgIGVsLmNsYXNzTmFtZSA9ICJpIjsKKyAgICAgICAgcmV0dXJuICFlbC5nZXRBdHRyaWJ1dGUo
ImNsYXNzTmFtZSIpOworICAgIH0pOworCisgICAgLyogZ2V0RWxlbWVudChzKUJ5KgorICAgIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0gKi8KKworICAgIC8vIENoZWNrIGlmIGdldEVsZW1lbnRzQnlUYWdOYW1lKCIq
IikgcmV0dXJucyBvbmx5IGVsZW1lbnRzCisgICAgc3VwcG9ydC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSA9IGFzc2VydChmdW5jdGlvbiggZWwgKSB7CisgICAgICAgIGVsLmFwcGVuZENoaWxkKCBkb2N1
bWVudC5jcmVhdGVDb21tZW50KCIiKSApOworICAgICAgICByZXR1cm4gIWVsLmdldEVsZW1lbnRz
QnlUYWdOYW1lKCIqIikubGVuZ3RoOworICAgIH0pOworCisgICAgLy8gU3VwcG9ydDogSUU8OQor
ICAgIHN1cHBvcnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSA9IHJuYXRpdmUudGVzdCggZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSApOworCisgICAgLy8gU3VwcG9ydDogSUU8MTAKKyAg
ICAvLyBDaGVjayBpZiBnZXRFbGVtZW50QnlJZCByZXR1cm5zIGVsZW1lbnRzIGJ5IG5hbWUKKyAg
ICAvLyBUaGUgYnJva2VuIGdldEVsZW1lbnRCeUlkIG1ldGhvZHMgZG9uJ3QgcGljayB1cCBwcm9n
cmFtbWF0aWNhbGx5LXNldCBuYW1lcywKKyAgICAvLyBzbyB1c2UgYSByb3VuZGFib3V0IGdldEVs
ZW1lbnRzQnlOYW1lIHRlc3QKKyAgICBzdXBwb3J0LmdldEJ5SWQgPSBhc3NlcnQoZnVuY3Rpb24o
IGVsICkgeworICAgICAgICBkb2NFbGVtLmFwcGVuZENoaWxkKCBlbCApLmlkID0gZXhwYW5kbzsK
KyAgICAgICAgcmV0dXJuICFkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSB8fCAhZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeU5hbWUoIGV4cGFuZG8gKS5sZW5ndGg7CisgICAgfSk7CisKKyAgICAvLyBJ
RCBmaWx0ZXIgYW5kIGZpbmQKKyAgICBpZiAoIHN1cHBvcnQuZ2V0QnlJZCApIHsKKyAgICAgICAg
RXhwci5maWx0ZXJbIklEIl0gPSBmdW5jdGlvbiggaWQgKSB7CisgICAgICAgICAgICB2YXIgYXR0
cklkID0gaWQucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKTsKKyAgICAgICAgICAgIHJl
dHVybiBmdW5jdGlvbiggZWxlbSApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZWxlbS5nZXRB
dHRyaWJ1dGUoImlkIikgPT09IGF0dHJJZDsKKyAgICAgICAgICAgIH07CisgICAgICAgIH07Cisg
ICAgICAgIEV4cHIuZmluZFsiSUQiXSA9IGZ1bmN0aW9uKCBpZCwgY29udGV4dCApIHsKKyAgICAg
ICAgICAgIGlmICggdHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQgIT09ICJ1bmRlZmluZWQi
ICYmIGRvY3VtZW50SXNIVE1MICkgeworICAgICAgICAgICAgICAgIHZhciBlbGVtID0gY29udGV4
dC5nZXRFbGVtZW50QnlJZCggaWQgKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZWxlbSA/IFsg
ZWxlbSBdIDogW107CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgRXhwci5maWx0ZXJbIklEIl0gPSAgZnVuY3Rpb24oIGlkICkgeworICAgICAgICAgICAg
dmFyIGF0dHJJZCA9IGlkLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICk7CisgICAgICAg
ICAgICByZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7CisgICAgICAgICAgICAgICAgdmFyIG5vZGUg
PSB0eXBlb2YgZWxlbS5nZXRBdHRyaWJ1dGVOb2RlICE9PSAidW5kZWZpbmVkIiAmJgorICAgICAg
ICAgICAgICAgICAgICBlbGVtLmdldEF0dHJpYnV0ZU5vZGUoImlkIik7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIG5vZGUgJiYgbm9kZS52YWx1ZSA9PT0gYXR0cklkOworICAgICAgICAgICAgfTsK
KyAgICAgICAgfTsKKworICAgICAgICAvLyBTdXBwb3J0OiBJRSA2IC0gNyBvbmx5CisgICAgICAg
IC8vIGdldEVsZW1lbnRCeUlkIGlzIG5vdCByZWxpYWJsZSBhcyBhIGZpbmQgc2hvcnRjdXQKKyAg
ICAgICAgRXhwci5maW5kWyJJRCJdID0gZnVuY3Rpb24oIGlkLCBjb250ZXh0ICkgeworICAgICAg
ICAgICAgaWYgKCB0eXBlb2YgY29udGV4dC5nZXRFbGVtZW50QnlJZCAhPT0gInVuZGVmaW5lZCIg
JiYgZG9jdW1lbnRJc0hUTUwgKSB7CisgICAgICAgICAgICAgICAgdmFyIG5vZGUsIGksIGVsZW1z
LAorICAgICAgICAgICAgICAgICAgICBlbGVtID0gY29udGV4dC5nZXRFbGVtZW50QnlJZCggaWQg
KTsKKworICAgICAgICAgICAgICAgIGlmICggZWxlbSApIHsKKworICAgICAgICAgICAgICAgICAg
ICAvLyBWZXJpZnkgdGhlIGlkIGF0dHJpYnV0ZQorICAgICAgICAgICAgICAgICAgICBub2RlID0g
ZWxlbS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpOworICAgICAgICAgICAgICAgICAgICBpZiAoIG5v
ZGUgJiYgbm9kZS52YWx1ZSA9PT0gaWQgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gWyBlbGVtIF07CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAg
ICAvLyBGYWxsIGJhY2sgb24gZ2V0RWxlbWVudHNCeU5hbWUKKyAgICAgICAgICAgICAgICAgICAg
ZWxlbXMgPSBjb250ZXh0LmdldEVsZW1lbnRzQnlOYW1lKCBpZCApOworICAgICAgICAgICAgICAg
ICAgICBpID0gMDsKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCAoZWxlbSA9IGVsZW1zW2kr
K10pICkgeworICAgICAgICAgICAgICAgICAgICAgICAgbm9kZSA9IGVsZW0uZ2V0QXR0cmlidXRl
Tm9kZSgiaWQiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICggbm9kZSAmJiBub2RlLnZh
bHVlID09PSBpZCApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWyBlbGVt
IF07CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICByZXR1cm4gW107CisgICAgICAgICAg
ICB9CisgICAgICAgIH07CisgICAgfQorCisgICAgLy8gVGFnCisgICAgRXhwci5maW5kWyJUQUci
XSA9IHN1cHBvcnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUgPworICAgICAgICBmdW5jdGlvbiggdGFn
LCBjb250ZXh0ICkgeworICAgICAgICAgICAgaWYgKCB0eXBlb2YgY29udGV4dC5nZXRFbGVtZW50
c0J5VGFnTmFtZSAhPT0gInVuZGVmaW5lZCIgKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNv
bnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIHRhZyApOworCisgICAgICAgICAgICAvLyBEb2N1
bWVudEZyYWdtZW50IG5vZGVzIGRvbid0IGhhdmUgZ0VCVE4KKyAgICAgICAgICAgIH0gZWxzZSBp
ZiAoIHN1cHBvcnQucXNhICkgeworICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0LnF1ZXJ5
U2VsZWN0b3JBbGwoIHRhZyApOworICAgICAgICAgICAgfQorICAgICAgICB9IDoKKworICAgICAg
ICBmdW5jdGlvbiggdGFnLCBjb250ZXh0ICkgeworICAgICAgICAgICAgdmFyIGVsZW0sCisgICAg
ICAgICAgICAgICAgdG1wID0gW10sCisgICAgICAgICAgICAgICAgaSA9IDAsCisgICAgICAgICAg
ICAgICAgLy8gQnkgaGFwcHkgY29pbmNpZGVuY2UsIGEgKGJyb2tlbikgZ0VCVE4gYXBwZWFycyBv
biBEb2N1bWVudEZyYWdtZW50IG5vZGVzIHRvbworICAgICAgICAgICAgICAgIHJlc3VsdHMgPSBj
b250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lKCB0YWcgKTsKKworICAgICAgICAgICAgLy8gRmls
dGVyIG91dCBwb3NzaWJsZSBjb21tZW50cworICAgICAgICAgICAgaWYgKCB0YWcgPT09ICIqIiAp
IHsKKyAgICAgICAgICAgICAgICB3aGlsZSAoIChlbGVtID0gcmVzdWx0c1tpKytdKSApIHsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgdG1wLnB1c2goIGVsZW0gKTsKKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHJldHVybiB0bXA7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0czsKKyAgICAgICAgfTsKKworICAgIC8v
IENsYXNzCisgICAgRXhwci5maW5kWyJDTEFTUyJdID0gc3VwcG9ydC5nZXRFbGVtZW50c0J5Q2xh
c3NOYW1lICYmIGZ1bmN0aW9uKCBjbGFzc05hbWUsIGNvbnRleHQgKSB7CisgICAgICAgIGlmICgg
dHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSAhPT0gInVuZGVmaW5lZCIgJiYg
ZG9jdW1lbnRJc0hUTUwgKSB7CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5nZXRFbGVtZW50
c0J5Q2xhc3NOYW1lKCBjbGFzc05hbWUgKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICAvKiBR
U0EvbWF0Y2hlc1NlbGVjdG9yCisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisgICAgLy8gUVNBIGFu
ZCBtYXRjaGVzU2VsZWN0b3Igc3VwcG9ydAorCisgICAgLy8gbWF0Y2hlc1NlbGVjdG9yKDphY3Rp
dmUpIHJlcG9ydHMgZmFsc2Ugd2hlbiB0cnVlIChJRTkvT3BlcmEgMTEuNSkKKyAgICByYnVnZ3lN
YXRjaGVzID0gW107CisKKyAgICAvLyBxU2EoOmZvY3VzKSByZXBvcnRzIGZhbHNlIHdoZW4gdHJ1
ZSAoQ2hyb21lIDIxKQorICAgIC8vIFdlIGFsbG93IHRoaXMgYmVjYXVzZSBvZiBhIGJ1ZyBpbiBJ
RTgvOSB0aGF0IHRocm93cyBhbiBlcnJvcgorICAgIC8vIHdoZW5ldmVyIGBkb2N1bWVudC5hY3Rp
dmVFbGVtZW50YCBpcyBhY2Nlc3NlZCBvbiBhbiBpZnJhbWUKKyAgICAvLyBTbywgd2UgYWxsb3cg
OmZvY3VzIHRvIHBhc3MgdGhyb3VnaCBRU0EgYWxsIHRoZSB0aW1lIHRvIGF2b2lkIHRoZSBJRSBl
cnJvcgorICAgIC8vIFNlZSBodHRwczovL2J1Z3MuanF1ZXJ5LmNvbS90aWNrZXQvMTMzNzgKKyAg
ICByYnVnZ3lRU0EgPSBbXTsKKworICAgIGlmICggKHN1cHBvcnQucXNhID0gcm5hdGl2ZS50ZXN0
KCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsICkpICkgeworICAgICAgICAvLyBCdWlsZCBRU0Eg
cmVnZXgKKyAgICAgICAgLy8gUmVnZXggc3RyYXRlZ3kgYWRvcHRlZCBmcm9tIERpZWdvIFBlcmlu
aQorICAgICAgICBhc3NlcnQoZnVuY3Rpb24oIGVsICkgeworICAgICAgICAgICAgLy8gU2VsZWN0
IGlzIHNldCB0byBlbXB0eSBzdHJpbmcgb24gcHVycG9zZQorICAgICAgICAgICAgLy8gVGhpcyBp
cyB0byB0ZXN0IElFJ3MgdHJlYXRtZW50IG9mIG5vdCBleHBsaWNpdGx5CisgICAgICAgICAgICAv
LyBzZXR0aW5nIGEgYm9vbGVhbiBjb250ZW50IGF0dHJpYnV0ZSwKKyAgICAgICAgICAgIC8vIHNp
bmNlIGl0cyBwcmVzZW5jZSBzaG91bGQgYmUgZW5vdWdoCisgICAgICAgICAgICAvLyBodHRwczov
L2J1Z3MuanF1ZXJ5LmNvbS90aWNrZXQvMTIzNTkKKyAgICAgICAgICAgIGRvY0VsZW0uYXBwZW5k
Q2hpbGQoIGVsICkuaW5uZXJIVE1MID0gIjxhIGlkPSciICsgZXhwYW5kbyArICInPjwvYT4iICsK
KyAgICAgICAgICAgICAgICAiPHNlbGVjdCBpZD0nIiArIGV4cGFuZG8gKyAiLVxyXFwnIG1zYWxs
b3djYXB0dXJlPScnPiIgKworICAgICAgICAgICAgICAgICI8b3B0aW9uIHNlbGVjdGVkPScnPjwv
b3B0aW9uPjwvc2VsZWN0PiI7CisKKyAgICAgICAgICAgIC8vIFN1cHBvcnQ6IElFOCwgT3BlcmEg
MTEtMTIuMTYKKyAgICAgICAgICAgIC8vIE5vdGhpbmcgc2hvdWxkIGJlIHNlbGVjdGVkIHdoZW4g
ZW1wdHkgc3RyaW5ncyBmb2xsb3cgXj0gb3IgJD0gb3IgKj0KKyAgICAgICAgICAgIC8vIFRoZSB0
ZXN0IGF0dHJpYnV0ZSBtdXN0IGJlIHVua25vd24gaW4gT3BlcmEgYnV0ICJzYWZlIiBmb3IgV2lu
UlQKKyAgICAgICAgICAgIC8vIGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJh
cnkvaWUvaGg0NjUzODguYXNweCNhdHRyaWJ1dGVfc2VjdGlvbgorICAgICAgICAgICAgaWYgKCBl
bC5xdWVyeVNlbGVjdG9yQWxsKCJbbXNhbGxvd2NhcHR1cmVePScnXSIpLmxlbmd0aCApIHsKKyAg
ICAgICAgICAgICAgICByYnVnZ3lRU0EucHVzaCggIlsqXiRdPSIgKyB3aGl0ZXNwYWNlICsgIioo
PzonJ3xcIlwiKSIgKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gU3VwcG9ydDog
SUU4CisgICAgICAgICAgICAvLyBCb29sZWFuIGF0dHJpYnV0ZXMgYW5kICJ2YWx1ZSIgYXJlIG5v
dCB0cmVhdGVkIGNvcnJlY3RseQorICAgICAgICAgICAgaWYgKCAhZWwucXVlcnlTZWxlY3RvckFs
bCgiW3NlbGVjdGVkXSIpLmxlbmd0aCApIHsKKyAgICAgICAgICAgICAgICByYnVnZ3lRU0EucHVz
aCggIlxcWyIgKyB3aGl0ZXNwYWNlICsgIiooPzp2YWx1ZXwiICsgYm9vbGVhbnMgKyAiKSIgKTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gU3VwcG9ydDogQ2hyb21lPDI5LCBBbmRy
b2lkPDQuNCwgU2FmYXJpPDcuMCssIGlPUzw3LjArLCBQaGFudG9tSlM8MS45LjgrCisgICAgICAg
ICAgICBpZiAoICFlbC5xdWVyeVNlbGVjdG9yQWxsKCAiW2lkfj0iICsgZXhwYW5kbyArICItXSIg
KS5sZW5ndGggKSB7CisgICAgICAgICAgICAgICAgcmJ1Z2d5UVNBLnB1c2goIn49Iik7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFdlYmtpdC9PcGVyYSAtIDpjaGVja2VkIHNob3Vs
ZCByZXR1cm4gc2VsZWN0ZWQgb3B0aW9uIGVsZW1lbnRzCisgICAgICAgICAgICAvLyBodHRwOi8v
d3d3LnczLm9yZy9UUi8yMDExL1JFQy1jc3MzLXNlbGVjdG9ycy0yMDExMDkyOS8jY2hlY2tlZAor
ICAgICAgICAgICAgLy8gSUU4IHRocm93cyBlcnJvciBoZXJlIGFuZCB3aWxsIG5vdCBzZWUgbGF0
ZXIgdGVzdHMKKyAgICAgICAgICAgIGlmICggIWVsLnF1ZXJ5U2VsZWN0b3JBbGwoIjpjaGVja2Vk
IikubGVuZ3RoICkgeworICAgICAgICAgICAgICAgIHJidWdneVFTQS5wdXNoKCI6Y2hlY2tlZCIp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBTdXBwb3J0OiBTYWZhcmkgOCssIGlP
UyA4KworICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEzNjg1MQorICAgICAgICAgICAgLy8gSW4tcGFnZSBgc2VsZWN0b3IjaWQgc2libGluZy1j
b21iaW5hdG9yIHNlbGVjdG9yYCBmYWlscworICAgICAgICAgICAgaWYgKCAhZWwucXVlcnlTZWxl
Y3RvckFsbCggImEjIiArIGV4cGFuZG8gKyAiKyoiICkubGVuZ3RoICkgeworICAgICAgICAgICAg
ICAgIHJidWdneVFTQS5wdXNoKCIuIy4rWyt+XSIpOworICAgICAgICAgICAgfQorICAgICAgICB9
KTsKKworICAgICAgICBhc3NlcnQoZnVuY3Rpb24oIGVsICkgeworICAgICAgICAgICAgZWwuaW5u
ZXJIVE1MID0gIjxhIGhyZWY9JycgZGlzYWJsZWQ9J2Rpc2FibGVkJz48L2E+IiArCisgICAgICAg
ICAgICAgICAgIjxzZWxlY3QgZGlzYWJsZWQ9J2Rpc2FibGVkJz48b3B0aW9uLz48L3NlbGVjdD4i
OworCisgICAgICAgICAgICAvLyBTdXBwb3J0OiBXaW5kb3dzIDggTmF0aXZlIEFwcHMKKyAgICAg
ICAgICAgIC8vIFRoZSB0eXBlIGFuZCBuYW1lIGF0dHJpYnV0ZXMgYXJlIHJlc3RyaWN0ZWQgZHVy
aW5nIC5pbm5lckhUTUwgYXNzaWdubWVudAorICAgICAgICAgICAgdmFyIGlucHV0ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKKyAgICAgICAgICAgIGlucHV0LnNldEF0dHJpYnV0
ZSggInR5cGUiLCAiaGlkZGVuIiApOworICAgICAgICAgICAgZWwuYXBwZW5kQ2hpbGQoIGlucHV0
ICkuc2V0QXR0cmlidXRlKCAibmFtZSIsICJEIiApOworCisgICAgICAgICAgICAvLyBTdXBwb3J0
OiBJRTgKKyAgICAgICAgICAgIC8vIEVuZm9yY2UgY2FzZS1zZW5zaXRpdml0eSBvZiBuYW1lIGF0
dHJpYnV0ZQorICAgICAgICAgICAgaWYgKCBlbC5xdWVyeVNlbGVjdG9yQWxsKCJbbmFtZT1kXSIp
Lmxlbmd0aCApIHsKKyAgICAgICAgICAgICAgICByYnVnZ3lRU0EucHVzaCggIm5hbWUiICsgd2hp
dGVzcGFjZSArICIqWypeJHwhfl0/PSIgKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
Ly8gRkYgMy41IC0gOmVuYWJsZWQvOmRpc2FibGVkIGFuZCBoaWRkZW4gZWxlbWVudHMgKGhpZGRl
biBlbGVtZW50cyBhcmUgc3RpbGwgZW5hYmxlZCkKKyAgICAgICAgICAgIC8vIElFOCB0aHJvd3Mg
ZXJyb3IgaGVyZSBhbmQgd2lsbCBub3Qgc2VlIGxhdGVyIHRlc3RzCisgICAgICAgICAgICBpZiAo
IGVsLnF1ZXJ5U2VsZWN0b3JBbGwoIjplbmFibGVkIikubGVuZ3RoICE9PSAyICkgeworICAgICAg
ICAgICAgICAgIHJidWdneVFTQS5wdXNoKCAiOmVuYWJsZWQiLCAiOmRpc2FibGVkIiApOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBTdXBwb3J0OiBJRTktMTErCisgICAgICAgICAg
ICAvLyBJRSdzIDpkaXNhYmxlZCBzZWxlY3RvciBkb2VzIG5vdCBwaWNrIHVwIHRoZSBjaGlsZHJl
biBvZiBkaXNhYmxlZCBmaWVsZHNldHMKKyAgICAgICAgICAgIGRvY0VsZW0uYXBwZW5kQ2hpbGQo
IGVsICkuZGlzYWJsZWQgPSB0cnVlOworICAgICAgICAgICAgaWYgKCBlbC5xdWVyeVNlbGVjdG9y
QWxsKCI6ZGlzYWJsZWQiKS5sZW5ndGggIT09IDIgKSB7CisgICAgICAgICAgICAgICAgcmJ1Z2d5
UVNBLnB1c2goICI6ZW5hYmxlZCIsICI6ZGlzYWJsZWQiICk7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIC8vIE9wZXJhIDEwLTExIGRvZXMgbm90IHRocm93IG9uIHBvc3QtY29tbWEgaW52
YWxpZCBwc2V1ZG9zCisgICAgICAgICAgICBlbC5xdWVyeVNlbGVjdG9yQWxsKCIqLDp4Iik7Cisg
ICAgICAgICAgICByYnVnZ3lRU0EucHVzaCgiLC4qOiIpOworICAgICAgICB9KTsKKyAgICB9CisK
KyAgICBpZiAoIChzdXBwb3J0Lm1hdGNoZXNTZWxlY3RvciA9IHJuYXRpdmUudGVzdCggKG1hdGNo
ZXMgPSBkb2NFbGVtLm1hdGNoZXMgfHwKKyAgICAgICAgZG9jRWxlbS53ZWJraXRNYXRjaGVzU2Vs
ZWN0b3IgfHwKKyAgICAgICAgZG9jRWxlbS5tb3pNYXRjaGVzU2VsZWN0b3IgfHwKKyAgICAgICAg
ZG9jRWxlbS5vTWF0Y2hlc1NlbGVjdG9yIHx8CisgICAgICAgIGRvY0VsZW0ubXNNYXRjaGVzU2Vs
ZWN0b3IpICkpICkgeworCisgICAgICAgIGFzc2VydChmdW5jdGlvbiggZWwgKSB7CisgICAgICAg
ICAgICAvLyBDaGVjayB0byBzZWUgaWYgaXQncyBwb3NzaWJsZSB0byBkbyBtYXRjaGVzU2VsZWN0
b3IKKyAgICAgICAgICAgIC8vIG9uIGEgZGlzY29ubmVjdGVkIG5vZGUgKElFIDkpCisgICAgICAg
ICAgICBzdXBwb3J0LmRpc2Nvbm5lY3RlZE1hdGNoID0gbWF0Y2hlcy5jYWxsKCBlbCwgIioiICk7
CisKKyAgICAgICAgICAgIC8vIFRoaXMgc2hvdWxkIGZhaWwgd2l0aCBhbiBleGNlcHRpb24KKyAg
ICAgICAgICAgIC8vIEdlY2tvIGRvZXMgbm90IGVycm9yLCByZXR1cm5zIGZhbHNlIGluc3RlYWQK
KyAgICAgICAgICAgIG1hdGNoZXMuY2FsbCggZWwsICJbcyE9JyddOngiICk7CisgICAgICAgICAg
ICByYnVnZ3lNYXRjaGVzLnB1c2goICIhPSIsIHBzZXVkb3MgKTsKKyAgICAgICAgfSk7CisgICAg
fQorCisgICAgcmJ1Z2d5UVNBID0gcmJ1Z2d5UVNBLmxlbmd0aCAmJiBuZXcgUmVnRXhwKCByYnVn
Z3lRU0Euam9pbigifCIpICk7CisgICAgcmJ1Z2d5TWF0Y2hlcyA9IHJidWdneU1hdGNoZXMubGVu
Z3RoICYmIG5ldyBSZWdFeHAoIHJidWdneU1hdGNoZXMuam9pbigifCIpICk7CisKKyAgICAvKiBD
b250YWlucworICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAgICBoYXNDb21wYXJlID0gcm5hdGl2ZS50
ZXN0KCBkb2NFbGVtLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uICk7CisKKyAgICAvLyBFbGVtZW50
IGNvbnRhaW5zIGFub3RoZXIKKyAgICAvLyBQdXJwb3NlZnVsbHkgc2VsZi1leGNsdXNpdmUKKyAg
ICAvLyBBcyBpbiwgYW4gZWxlbWVudCBkb2VzIG5vdCBjb250YWluIGl0c2VsZgorICAgIGNvbnRh
aW5zID0gaGFzQ29tcGFyZSB8fCBybmF0aXZlLnRlc3QoIGRvY0VsZW0uY29udGFpbnMgKSA/Cisg
ICAgICAgIGZ1bmN0aW9uKCBhLCBiICkgeworICAgICAgICAgICAgdmFyIGFkb3duID0gYS5ub2Rl
VHlwZSA9PT0gOSA/IGEuZG9jdW1lbnRFbGVtZW50IDogYSwKKyAgICAgICAgICAgICAgICBidXAg
PSBiICYmIGIucGFyZW50Tm9kZTsKKyAgICAgICAgICAgIHJldHVybiBhID09PSBidXAgfHwgISEo
IGJ1cCAmJiBidXAubm9kZVR5cGUgPT09IDEgJiYgKAorICAgICAgICAgICAgICAgIGFkb3duLmNv
bnRhaW5zID8KKyAgICAgICAgICAgICAgICAgICAgYWRvd24uY29udGFpbnMoIGJ1cCApIDoKKyAg
ICAgICAgICAgICAgICAgICAgYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiAmJiBhLmNvbXBhcmVE
b2N1bWVudFBvc2l0aW9uKCBidXAgKSAmIDE2CisgICAgICAgICAgICApKTsKKyAgICAgICAgfSA6
CisgICAgICAgIGZ1bmN0aW9uKCBhLCBiICkgeworICAgICAgICAgICAgaWYgKCBiICkgeworICAg
ICAgICAgICAgICAgIHdoaWxlICggKGIgPSBiLnBhcmVudE5vZGUpICkgeworICAgICAgICAgICAg
ICAgICAgICBpZiAoIGIgPT09IGEgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfTsKKworICAgIC8qIFNv
cnRpbmcKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKyAgICAvLyBEb2N1bWVudCBvcmRlciBzb3J0
aW5nCisgICAgc29ydE9yZGVyID0gaGFzQ29tcGFyZSA/CisgICAgZnVuY3Rpb24oIGEsIGIgKSB7
CisKKyAgICAgICAgLy8gRmxhZyBmb3IgZHVwbGljYXRlIHJlbW92YWwKKyAgICAgICAgaWYgKCBh
ID09PSBiICkgeworICAgICAgICAgICAgaGFzRHVwbGljYXRlID0gdHJ1ZTsKKyAgICAgICAgICAg
IHJldHVybiAwOworICAgICAgICB9CisKKyAgICAgICAgLy8gU29ydCBvbiBtZXRob2QgZXhpc3Rl
bmNlIGlmIG9ubHkgb25lIGlucHV0IGhhcyBjb21wYXJlRG9jdW1lbnRQb3NpdGlvbgorICAgICAg
ICB2YXIgY29tcGFyZSA9ICFhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uIC0gIWIuY29tcGFyZURv
Y3VtZW50UG9zaXRpb247CisgICAgICAgIGlmICggY29tcGFyZSApIHsKKyAgICAgICAgICAgIHJl
dHVybiBjb21wYXJlOworICAgICAgICB9CisKKyAgICAgICAgLy8gQ2FsY3VsYXRlIHBvc2l0aW9u
IGlmIGJvdGggaW5wdXRzIGJlbG9uZyB0byB0aGUgc2FtZSBkb2N1bWVudAorICAgICAgICBjb21w
YXJlID0gKCBhLm93bmVyRG9jdW1lbnQgfHwgYSApID09PSAoIGIub3duZXJEb2N1bWVudCB8fCBi
ICkgPworICAgICAgICAgICAgYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiggYiApIDoKKworICAg
ICAgICAgICAgLy8gT3RoZXJ3aXNlIHdlIGtub3cgdGhleSBhcmUgZGlzY29ubmVjdGVkCisgICAg
ICAgICAgICAxOworCisgICAgICAgIC8vIERpc2Nvbm5lY3RlZCBub2RlcworICAgICAgICBpZiAo
IGNvbXBhcmUgJiAxIHx8CisgICAgICAgICAgICAoIXN1cHBvcnQuc29ydERldGFjaGVkICYmIGIu
Y29tcGFyZURvY3VtZW50UG9zaXRpb24oIGEgKSA9PT0gY29tcGFyZSkgKSB7CisKKyAgICAgICAg
ICAgIC8vIENob29zZSB0aGUgZmlyc3QgZWxlbWVudCB0aGF0IGlzIHJlbGF0ZWQgdG8gb3VyIHBy
ZWZlcnJlZCBkb2N1bWVudAorICAgICAgICAgICAgaWYgKCBhID09PSBkb2N1bWVudCB8fCBhLm93
bmVyRG9jdW1lbnQgPT09IHByZWZlcnJlZERvYyAmJiBjb250YWlucyhwcmVmZXJyZWREb2MsIGEp
ICkgeworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGlmICggYiA9PT0gZG9jdW1lbnQgfHwgYi5vd25lckRvY3VtZW50ID09PSBwcmVmZXJyZWRE
b2MgJiYgY29udGFpbnMocHJlZmVycmVkRG9jLCBiKSApIHsKKyAgICAgICAgICAgICAgICByZXR1
cm4gMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gTWFpbnRhaW4gb3JpZ2luYWwg
b3JkZXIKKyAgICAgICAgICAgIHJldHVybiBzb3J0SW5wdXQgPworICAgICAgICAgICAgICAgICgg
aW5kZXhPZiggc29ydElucHV0LCBhICkgLSBpbmRleE9mKCBzb3J0SW5wdXQsIGIgKSApIDoKKyAg
ICAgICAgICAgICAgICAwOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGNvbXBhcmUgJiA0
ID8gLTEgOiAxOworICAgIH0gOgorICAgIGZ1bmN0aW9uKCBhLCBiICkgeworICAgICAgICAvLyBF
eGl0IGVhcmx5IGlmIHRoZSBub2RlcyBhcmUgaWRlbnRpY2FsCisgICAgICAgIGlmICggYSA9PT0g
YiApIHsKKyAgICAgICAgICAgIGhhc0R1cGxpY2F0ZSA9IHRydWU7CisgICAgICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBjdXIsCisgICAgICAgICAgICBpID0gMCwK
KyAgICAgICAgICAgIGF1cCA9IGEucGFyZW50Tm9kZSwKKyAgICAgICAgICAgIGJ1cCA9IGIucGFy
ZW50Tm9kZSwKKyAgICAgICAgICAgIGFwID0gWyBhIF0sCisgICAgICAgICAgICBicCA9IFsgYiBd
OworCisgICAgICAgIC8vIFBhcmVudGxlc3Mgbm9kZXMgYXJlIGVpdGhlciBkb2N1bWVudHMgb3Ig
ZGlzY29ubmVjdGVkCisgICAgICAgIGlmICggIWF1cCB8fCAhYnVwICkgeworICAgICAgICAgICAg
cmV0dXJuIGEgPT09IGRvY3VtZW50ID8gLTEgOgorICAgICAgICAgICAgICAgIGIgPT09IGRvY3Vt
ZW50ID8gMSA6CisgICAgICAgICAgICAgICAgYXVwID8gLTEgOgorICAgICAgICAgICAgICAgIGJ1
cCA/IDEgOgorICAgICAgICAgICAgICAgIHNvcnRJbnB1dCA/CisgICAgICAgICAgICAgICAgKCBp
bmRleE9mKCBzb3J0SW5wdXQsIGEgKSAtIGluZGV4T2YoIHNvcnRJbnB1dCwgYiApICkgOgorICAg
ICAgICAgICAgICAgIDA7CisKKyAgICAgICAgLy8gSWYgdGhlIG5vZGVzIGFyZSBzaWJsaW5ncywg
d2UgY2FuIGRvIGEgcXVpY2sgY2hlY2sKKyAgICAgICAgfSBlbHNlIGlmICggYXVwID09PSBidXAg
KSB7CisgICAgICAgICAgICByZXR1cm4gc2libGluZ0NoZWNrKCBhLCBiICk7CisgICAgICAgIH0K
KworICAgICAgICAvLyBPdGhlcndpc2Ugd2UgbmVlZCBmdWxsIGxpc3RzIG9mIHRoZWlyIGFuY2Vz
dG9ycyBmb3IgY29tcGFyaXNvbgorICAgICAgICBjdXIgPSBhOworICAgICAgICB3aGlsZSAoIChj
dXIgPSBjdXIucGFyZW50Tm9kZSkgKSB7CisgICAgICAgICAgICBhcC51bnNoaWZ0KCBjdXIgKTsK
KyAgICAgICAgfQorICAgICAgICBjdXIgPSBiOworICAgICAgICB3aGlsZSAoIChjdXIgPSBjdXIu
cGFyZW50Tm9kZSkgKSB7CisgICAgICAgICAgICBicC51bnNoaWZ0KCBjdXIgKTsKKyAgICAgICAg
fQorCisgICAgICAgIC8vIFdhbGsgZG93biB0aGUgdHJlZSBsb29raW5nIGZvciBhIGRpc2NyZXBh
bmN5CisgICAgICAgIHdoaWxlICggYXBbaV0gPT09IGJwW2ldICkgeworICAgICAgICAgICAgaSsr
OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGkgPworICAgICAgICAgICAgLy8gRG8gYSBz
aWJsaW5nIGNoZWNrIGlmIHRoZSBub2RlcyBoYXZlIGEgY29tbW9uIGFuY2VzdG9yCisgICAgICAg
ICAgICBzaWJsaW5nQ2hlY2soIGFwW2ldLCBicFtpXSApIDoKKworICAgICAgICAgICAgLy8gT3Ro
ZXJ3aXNlIG5vZGVzIGluIG91ciBkb2N1bWVudCBzb3J0IGZpcnN0CisgICAgICAgICAgICBhcFtp
XSA9PT0gcHJlZmVycmVkRG9jID8gLTEgOgorICAgICAgICAgICAgYnBbaV0gPT09IHByZWZlcnJl
ZERvYyA/IDEgOgorICAgICAgICAgICAgMDsKKyAgICB9OworCisgICAgcmV0dXJuIGRvY3VtZW50
OworfTsKKworU2l6emxlLm1hdGNoZXMgPSBmdW5jdGlvbiggZXhwciwgZWxlbWVudHMgKSB7Cisg
ICAgcmV0dXJuIFNpenpsZSggZXhwciwgbnVsbCwgbnVsbCwgZWxlbWVudHMgKTsKK307CisKK1Np
enpsZS5tYXRjaGVzU2VsZWN0b3IgPSBmdW5jdGlvbiggZWxlbSwgZXhwciApIHsKKyAgICAvLyBT
ZXQgZG9jdW1lbnQgdmFycyBpZiBuZWVkZWQKKyAgICBpZiAoICggZWxlbS5vd25lckRvY3VtZW50
IHx8IGVsZW0gKSAhPT0gZG9jdW1lbnQgKSB7CisgICAgICAgIHNldERvY3VtZW50KCBlbGVtICk7
CisgICAgfQorCisgICAgLy8gTWFrZSBzdXJlIHRoYXQgYXR0cmlidXRlIHNlbGVjdG9ycyBhcmUg
cXVvdGVkCisgICAgZXhwciA9IGV4cHIucmVwbGFjZSggcmF0dHJpYnV0ZVF1b3RlcywgIj0nJDEn
XSIgKTsKKworICAgIGlmICggc3VwcG9ydC5tYXRjaGVzU2VsZWN0b3IgJiYgZG9jdW1lbnRJc0hU
TUwgJiYKKyAgICAgICAgIWNvbXBpbGVyQ2FjaGVbIGV4cHIgKyAiICIgXSAmJgorICAgICAgICAo
ICFyYnVnZ3lNYXRjaGVzIHx8ICFyYnVnZ3lNYXRjaGVzLnRlc3QoIGV4cHIgKSApICYmCisgICAg
ICAgICggIXJidWdneVFTQSAgICAgfHwgIXJidWdneVFTQS50ZXN0KCBleHByICkgKSApIHsKKwor
ICAgICAgICB0cnkgeworICAgICAgICAgICAgdmFyIHJldCA9IG1hdGNoZXMuY2FsbCggZWxlbSwg
ZXhwciApOworCisgICAgICAgICAgICAvLyBJRSA5J3MgbWF0Y2hlc1NlbGVjdG9yIHJldHVybnMg
ZmFsc2Ugb24gZGlzY29ubmVjdGVkIG5vZGVzCisgICAgICAgICAgICBpZiAoIHJldCB8fCBzdXBw
b3J0LmRpc2Nvbm5lY3RlZE1hdGNoIHx8CisgICAgICAgICAgICAgICAgICAgIC8vIEFzIHdlbGws
IGRpc2Nvbm5lY3RlZCBub2RlcyBhcmUgc2FpZCB0byBiZSBpbiBhIGRvY3VtZW50CisgICAgICAg
ICAgICAgICAgICAgIC8vIGZyYWdtZW50IGluIElFIDkKKyAgICAgICAgICAgICAgICAgICAgZWxl
bS5kb2N1bWVudCAmJiBlbGVtLmRvY3VtZW50Lm5vZGVUeXBlICE9PSAxMSApIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gcmV0OworICAgICAgICAgICAgfQorICAgICAgICB9IGNhdGNoIChlKSB7
fQorICAgIH0KKworICAgIHJldHVybiBTaXp6bGUoIGV4cHIsIGRvY3VtZW50LCBudWxsLCBbIGVs
ZW0gXSApLmxlbmd0aCA+IDA7Cit9OworCitTaXp6bGUuY29udGFpbnMgPSBmdW5jdGlvbiggY29u
dGV4dCwgZWxlbSApIHsKKyAgICAvLyBTZXQgZG9jdW1lbnQgdmFycyBpZiBuZWVkZWQKKyAgICBp
ZiAoICggY29udGV4dC5vd25lckRvY3VtZW50IHx8IGNvbnRleHQgKSAhPT0gZG9jdW1lbnQgKSB7
CisgICAgICAgIHNldERvY3VtZW50KCBjb250ZXh0ICk7CisgICAgfQorICAgIHJldHVybiBjb250
YWlucyggY29udGV4dCwgZWxlbSApOworfTsKKworU2l6emxlLmF0dHIgPSBmdW5jdGlvbiggZWxl
bSwgbmFtZSApIHsKKyAgICAvLyBTZXQgZG9jdW1lbnQgdmFycyBpZiBuZWVkZWQKKyAgICBpZiAo
ICggZWxlbS5vd25lckRvY3VtZW50IHx8IGVsZW0gKSAhPT0gZG9jdW1lbnQgKSB7CisgICAgICAg
IHNldERvY3VtZW50KCBlbGVtICk7CisgICAgfQorCisgICAgdmFyIGZuID0gRXhwci5hdHRySGFu
ZGxlWyBuYW1lLnRvTG93ZXJDYXNlKCkgXSwKKyAgICAgICAgLy8gRG9uJ3QgZ2V0IGZvb2xlZCBi
eSBPYmplY3QucHJvdG90eXBlIHByb3BlcnRpZXMgKGpRdWVyeSAjMTM4MDcpCisgICAgICAgIHZh
bCA9IGZuICYmIGhhc093bi5jYWxsKCBFeHByLmF0dHJIYW5kbGUsIG5hbWUudG9Mb3dlckNhc2Uo
KSApID8KKyAgICAgICAgICAgIGZuKCBlbGVtLCBuYW1lLCAhZG9jdW1lbnRJc0hUTUwgKSA6Cisg
ICAgICAgICAgICB1bmRlZmluZWQ7CisKKyAgICByZXR1cm4gdmFsICE9PSB1bmRlZmluZWQgPwor
ICAgICAgICB2YWwgOgorICAgICAgICBzdXBwb3J0LmF0dHJpYnV0ZXMgfHwgIWRvY3VtZW50SXNI
VE1MID8KKyAgICAgICAgICAgIGVsZW0uZ2V0QXR0cmlidXRlKCBuYW1lICkgOgorICAgICAgICAg
ICAgKHZhbCA9IGVsZW0uZ2V0QXR0cmlidXRlTm9kZShuYW1lKSkgJiYgdmFsLnNwZWNpZmllZCA/
CisgICAgICAgICAgICAgICAgdmFsLnZhbHVlIDoKKyAgICAgICAgICAgICAgICBudWxsOworfTsK
KworU2l6emxlLmVzY2FwZSA9IGZ1bmN0aW9uKCBzZWwgKSB7CisgICAgcmV0dXJuIChzZWwgKyAi
IikucmVwbGFjZSggcmNzc2VzY2FwZSwgZmNzc2VzY2FwZSApOworfTsKKworU2l6emxlLmVycm9y
ID0gZnVuY3Rpb24oIG1zZyApIHsKKyAgICB0aHJvdyBuZXcgRXJyb3IoICJTeW50YXggZXJyb3Is
IHVucmVjb2duaXplZCBleHByZXNzaW9uOiAiICsgbXNnICk7Cit9OworCisvKioKKyAqIERvY3Vt
ZW50IHNvcnRpbmcgYW5kIHJlbW92aW5nIGR1cGxpY2F0ZXMKKyAqIEBwYXJhbSB7QXJyYXlMaWtl
fSByZXN1bHRzCisgKi8KK1NpenpsZS51bmlxdWVTb3J0ID0gZnVuY3Rpb24oIHJlc3VsdHMgKSB7
CisgICAgdmFyIGVsZW0sCisgICAgICAgIGR1cGxpY2F0ZXMgPSBbXSwKKyAgICAgICAgaiA9IDAs
CisgICAgICAgIGkgPSAwOworCisgICAgLy8gVW5sZXNzIHdlICprbm93KiB3ZSBjYW4gZGV0ZWN0
IGR1cGxpY2F0ZXMsIGFzc3VtZSB0aGVpciBwcmVzZW5jZQorICAgIGhhc0R1cGxpY2F0ZSA9ICFz
dXBwb3J0LmRldGVjdER1cGxpY2F0ZXM7CisgICAgc29ydElucHV0ID0gIXN1cHBvcnQuc29ydFN0
YWJsZSAmJiByZXN1bHRzLnNsaWNlKCAwICk7CisgICAgcmVzdWx0cy5zb3J0KCBzb3J0T3JkZXIg
KTsKKworICAgIGlmICggaGFzRHVwbGljYXRlICkgeworICAgICAgICB3aGlsZSAoIChlbGVtID0g
cmVzdWx0c1tpKytdKSApIHsKKyAgICAgICAgICAgIGlmICggZWxlbSA9PT0gcmVzdWx0c1sgaSBd
ICkgeworICAgICAgICAgICAgICAgIGogPSBkdXBsaWNhdGVzLnB1c2goIGkgKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICB3aGlsZSAoIGotLSApIHsKKyAgICAgICAgICAgIHJl
c3VsdHMuc3BsaWNlKCBkdXBsaWNhdGVzWyBqIF0sIDEgKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIC8vIENsZWFyIGlucHV0IGFmdGVyIHNvcnRpbmcgdG8gcmVsZWFzZSBvYmplY3RzCisgICAg
Ly8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9qcXVlcnkvc2l6emxlL3B1bGwvMjI1CisgICAgc29y
dElucHV0ID0gbnVsbDsKKworICAgIHJldHVybiByZXN1bHRzOworfTsKKworLyoqCisgKiBVdGls
aXR5IGZ1bmN0aW9uIGZvciByZXRyaWV2aW5nIHRoZSB0ZXh0IHZhbHVlIG9mIGFuIGFycmF5IG9m
IERPTSBub2RlcworICogQHBhcmFtIHtBcnJheXxFbGVtZW50fSBlbGVtCisgKi8KK2dldFRleHQg
PSBTaXp6bGUuZ2V0VGV4dCA9IGZ1bmN0aW9uKCBlbGVtICkgeworICAgIHZhciBub2RlLAorICAg
ICAgICByZXQgPSAiIiwKKyAgICAgICAgaSA9IDAsCisgICAgICAgIG5vZGVUeXBlID0gZWxlbS5u
b2RlVHlwZTsKKworICAgIGlmICggIW5vZGVUeXBlICkgeworICAgICAgICAvLyBJZiBubyBub2Rl
VHlwZSwgdGhpcyBpcyBleHBlY3RlZCB0byBiZSBhbiBhcnJheQorICAgICAgICB3aGlsZSAoIChu
b2RlID0gZWxlbVtpKytdKSApIHsKKyAgICAgICAgICAgIC8vIERvIG5vdCB0cmF2ZXJzZSBjb21t
ZW50IG5vZGVzCisgICAgICAgICAgICByZXQgKz0gZ2V0VGV4dCggbm9kZSApOworICAgICAgICB9
CisgICAgfSBlbHNlIGlmICggbm9kZVR5cGUgPT09IDEgfHwgbm9kZVR5cGUgPT09IDkgfHwgbm9k
ZVR5cGUgPT09IDExICkgeworICAgICAgICAvLyBVc2UgdGV4dENvbnRlbnQgZm9yIGVsZW1lbnRz
CisgICAgICAgIC8vIGlubmVyVGV4dCB1c2FnZSByZW1vdmVkIGZvciBjb25zaXN0ZW5jeSBvZiBu
ZXcgbGluZXMgKGpRdWVyeSAjMTExNTMpCisgICAgICAgIGlmICggdHlwZW9mIGVsZW0udGV4dENv
bnRlbnQgPT09ICJzdHJpbmciICkgeworICAgICAgICAgICAgcmV0dXJuIGVsZW0udGV4dENvbnRl
bnQ7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBUcmF2ZXJzZSBpdHMgY2hpbGRy
ZW4KKyAgICAgICAgICAgIGZvciAoIGVsZW0gPSBlbGVtLmZpcnN0Q2hpbGQ7IGVsZW07IGVsZW0g
PSBlbGVtLm5leHRTaWJsaW5nICkgeworICAgICAgICAgICAgICAgIHJldCArPSBnZXRUZXh0KCBl
bGVtICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKCBub2RlVHlw
ZSA9PT0gMyB8fCBub2RlVHlwZSA9PT0gNCApIHsKKyAgICAgICAgcmV0dXJuIGVsZW0ubm9kZVZh
bHVlOworICAgIH0KKyAgICAvLyBEbyBub3QgaW5jbHVkZSBjb21tZW50IG9yIHByb2Nlc3Npbmcg
aW5zdHJ1Y3Rpb24gbm9kZXMKKworICAgIHJldHVybiByZXQ7Cit9OworCitFeHByID0gU2l6emxl
LnNlbGVjdG9ycyA9IHsKKworICAgIC8vIENhbiBiZSBhZGp1c3RlZCBieSB0aGUgdXNlcgorICAg
IGNhY2hlTGVuZ3RoOiA1MCwKKworICAgIGNyZWF0ZVBzZXVkbzogbWFya0Z1bmN0aW9uLAorCisg
ICAgbWF0Y2g6IG1hdGNoRXhwciwKKworICAgIGF0dHJIYW5kbGU6IHt9LAorCisgICAgZmluZDog
e30sCisKKyAgICByZWxhdGl2ZTogeworICAgICAgICAiPiI6IHsgZGlyOiAicGFyZW50Tm9kZSIs
IGZpcnN0OiB0cnVlIH0sCisgICAgICAgICIgIjogeyBkaXI6ICJwYXJlbnROb2RlIiB9LAorICAg
ICAgICAiKyI6IHsgZGlyOiAicHJldmlvdXNTaWJsaW5nIiwgZmlyc3Q6IHRydWUgfSwKKyAgICAg
ICAgIn4iOiB7IGRpcjogInByZXZpb3VzU2libGluZyIgfQorICAgIH0sCisKKyAgICBwcmVGaWx0
ZXI6IHsKKyAgICAgICAgIkFUVFIiOiBmdW5jdGlvbiggbWF0Y2ggKSB7CisgICAgICAgICAgICBt
YXRjaFsxXSA9IG1hdGNoWzFdLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICk7CisKKyAg
ICAgICAgICAgIC8vIE1vdmUgdGhlIGdpdmVuIHZhbHVlIHRvIG1hdGNoWzNdIHdoZXRoZXIgcXVv
dGVkIG9yIHVucXVvdGVkCisgICAgICAgICAgICBtYXRjaFszXSA9ICggbWF0Y2hbM10gfHwgbWF0
Y2hbNF0gfHwgbWF0Y2hbNV0gfHwgIiIgKS5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSAp
OworCisgICAgICAgICAgICBpZiAoIG1hdGNoWzJdID09PSAifj0iICkgeworICAgICAgICAgICAg
ICAgIG1hdGNoWzNdID0gIiAiICsgbWF0Y2hbM10gKyAiICI7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHJldHVybiBtYXRjaC5zbGljZSggMCwgNCApOworICAgICAgICB9LAorCisgICAg
ICAgICJDSElMRCI6IGZ1bmN0aW9uKCBtYXRjaCApIHsKKyAgICAgICAgICAgIC8qIG1hdGNoZXMg
ZnJvbSBtYXRjaEV4cHJbIkNISUxEIl0KKyAgICAgICAgICAgICAgICAxIHR5cGUgKG9ubHl8bnRo
fC4uLikKKyAgICAgICAgICAgICAgICAyIHdoYXQgKGNoaWxkfG9mLXR5cGUpCisgICAgICAgICAg
ICAgICAgMyBhcmd1bWVudCAoZXZlbnxvZGR8XGQqfFxkKm4oWystXVxkKyk/fC4uLikKKyAgICAg
ICAgICAgICAgICA0IHhuLWNvbXBvbmVudCBvZiB4bit5IGFyZ3VtZW50IChbKy1dP1xkKm58KQor
ICAgICAgICAgICAgICAgIDUgc2lnbiBvZiB4bi1jb21wb25lbnQKKyAgICAgICAgICAgICAgICA2
IHggb2YgeG4tY29tcG9uZW50CisgICAgICAgICAgICAgICAgNyBzaWduIG9mIHktY29tcG9uZW50
CisgICAgICAgICAgICAgICAgOCB5IG9mIHktY29tcG9uZW50CisgICAgICAgICAgICAqLworICAg
ICAgICAgICAgbWF0Y2hbMV0gPSBtYXRjaFsxXS50b0xvd2VyQ2FzZSgpOworCisgICAgICAgICAg
ICBpZiAoIG1hdGNoWzFdLnNsaWNlKCAwLCAzICkgPT09ICJudGgiICkgeworICAgICAgICAgICAg
ICAgIC8vIG50aC0qIHJlcXVpcmVzIGFyZ3VtZW50CisgICAgICAgICAgICAgICAgaWYgKCAhbWF0
Y2hbM10gKSB7CisgICAgICAgICAgICAgICAgICAgIFNpenpsZS5lcnJvciggbWF0Y2hbMF0gKTsK
KyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBudW1lcmljIHggYW5kIHkg
cGFyYW1ldGVycyBmb3IgRXhwci5maWx0ZXIuQ0hJTEQKKyAgICAgICAgICAgICAgICAvLyByZW1l
bWJlciB0aGF0IGZhbHNlL3RydWUgY2FzdCByZXNwZWN0aXZlbHkgdG8gMC8xCisgICAgICAgICAg
ICAgICAgbWF0Y2hbNF0gPSArKCBtYXRjaFs0XSA/IG1hdGNoWzVdICsgKG1hdGNoWzZdIHx8IDEp
IDogMiAqICggbWF0Y2hbM10gPT09ICJldmVuIiB8fCBtYXRjaFszXSA9PT0gIm9kZCIgKSApOwor
ICAgICAgICAgICAgICAgIG1hdGNoWzVdID0gKyggKCBtYXRjaFs3XSArIG1hdGNoWzhdICkgfHwg
bWF0Y2hbM10gPT09ICJvZGQiICk7CisKKyAgICAgICAgICAgIC8vIG90aGVyIHR5cGVzIHByb2hp
Yml0IGFyZ3VtZW50cworICAgICAgICAgICAgfSBlbHNlIGlmICggbWF0Y2hbM10gKSB7CisgICAg
ICAgICAgICAgICAgU2l6emxlLmVycm9yKCBtYXRjaFswXSApOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICByZXR1cm4gbWF0Y2g7CisgICAgICAgIH0sCisKKyAgICAgICAgIlBTRVVETyI6
IGZ1bmN0aW9uKCBtYXRjaCApIHsKKyAgICAgICAgICAgIHZhciBleGNlc3MsCisgICAgICAgICAg
ICAgICAgdW5xdW90ZWQgPSAhbWF0Y2hbNl0gJiYgbWF0Y2hbMl07CisKKyAgICAgICAgICAgIGlm
ICggbWF0Y2hFeHByWyJDSElMRCJdLnRlc3QoIG1hdGNoWzBdICkgKSB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIG51bGw7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEFjY2VwdCBx
dW90ZWQgYXJndW1lbnRzIGFzLWlzCisgICAgICAgICAgICBpZiAoIG1hdGNoWzNdICkgeworICAg
ICAgICAgICAgICAgIG1hdGNoWzJdID0gbWF0Y2hbNF0gfHwgbWF0Y2hbNV0gfHwgIiI7CisKKyAg
ICAgICAgICAgIC8vIFN0cmlwIGV4Y2VzcyBjaGFyYWN0ZXJzIGZyb20gdW5xdW90ZWQgYXJndW1l
bnRzCisgICAgICAgICAgICB9IGVsc2UgaWYgKCB1bnF1b3RlZCAmJiBycHNldWRvLnRlc3QoIHVu
cXVvdGVkICkgJiYKKyAgICAgICAgICAgICAgICAvLyBHZXQgZXhjZXNzIGZyb20gdG9rZW5pemUg
KHJlY3Vyc2l2ZWx5KQorICAgICAgICAgICAgICAgIChleGNlc3MgPSB0b2tlbml6ZSggdW5xdW90
ZWQsIHRydWUgKSkgJiYKKyAgICAgICAgICAgICAgICAvLyBhZHZhbmNlIHRvIHRoZSBuZXh0IGNs
b3NpbmcgcGFyZW50aGVzaXMKKyAgICAgICAgICAgICAgICAoZXhjZXNzID0gdW5xdW90ZWQuaW5k
ZXhPZiggIikiLCB1bnF1b3RlZC5sZW5ndGggLSBleGNlc3MgKSAtIHVucXVvdGVkLmxlbmd0aCkg
KSB7CisKKyAgICAgICAgICAgICAgICAvLyBleGNlc3MgaXMgYSBuZWdhdGl2ZSBpbmRleAorICAg
ICAgICAgICAgICAgIG1hdGNoWzBdID0gbWF0Y2hbMF0uc2xpY2UoIDAsIGV4Y2VzcyApOworICAg
ICAgICAgICAgICAgIG1hdGNoWzJdID0gdW5xdW90ZWQuc2xpY2UoIDAsIGV4Y2VzcyApOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBSZXR1cm4gb25seSBjYXB0dXJlcyBuZWVkZWQg
YnkgdGhlIHBzZXVkbyBmaWx0ZXIgbWV0aG9kICh0eXBlIGFuZCBhcmd1bWVudCkKKyAgICAgICAg
ICAgIHJldHVybiBtYXRjaC5zbGljZSggMCwgMyApOworICAgICAgICB9CisgICAgfSwKKworICAg
IGZpbHRlcjogeworCisgICAgICAgICJUQUciOiBmdW5jdGlvbiggbm9kZU5hbWVTZWxlY3RvciAp
IHsKKyAgICAgICAgICAgIHZhciBub2RlTmFtZSA9IG5vZGVOYW1lU2VsZWN0b3IucmVwbGFjZSgg
cnVuZXNjYXBlLCBmdW5lc2NhcGUgKS50b0xvd2VyQ2FzZSgpOworICAgICAgICAgICAgcmV0dXJu
IG5vZGVOYW1lU2VsZWN0b3IgPT09ICIqIiA/CisgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7
IHJldHVybiB0cnVlOyB9IDoKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiggZWxlbSApIHsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW0ubm9kZU5hbWUgJiYgZWxlbS5ub2RlTmFtZS50
b0xvd2VyQ2FzZSgpID09PSBub2RlTmFtZTsKKyAgICAgICAgICAgICAgICB9OworICAgICAgICB9
LAorCisgICAgICAgICJDTEFTUyI6IGZ1bmN0aW9uKCBjbGFzc05hbWUgKSB7CisgICAgICAgICAg
ICB2YXIgcGF0dGVybiA9IGNsYXNzQ2FjaGVbIGNsYXNzTmFtZSArICIgIiBdOworCisgICAgICAg
ICAgICByZXR1cm4gcGF0dGVybiB8fAorICAgICAgICAgICAgICAgIChwYXR0ZXJuID0gbmV3IFJl
Z0V4cCggIihefCIgKyB3aGl0ZXNwYWNlICsgIikiICsgY2xhc3NOYW1lICsgIigiICsgd2hpdGVz
cGFjZSArICJ8JCkiICkpICYmCisgICAgICAgICAgICAgICAgY2xhc3NDYWNoZSggY2xhc3NOYW1l
LCBmdW5jdGlvbiggZWxlbSApIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhdHRlcm4u
dGVzdCggdHlwZW9mIGVsZW0uY2xhc3NOYW1lID09PSAic3RyaW5nIiAmJiBlbGVtLmNsYXNzTmFt
ZSB8fCB0eXBlb2YgZWxlbS5nZXRBdHRyaWJ1dGUgIT09ICJ1bmRlZmluZWQiICYmIGVsZW0uZ2V0
QXR0cmlidXRlKCJjbGFzcyIpIHx8ICIiICk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAg
IH0sCisKKyAgICAgICAgIkFUVFIiOiBmdW5jdGlvbiggbmFtZSwgb3BlcmF0b3IsIGNoZWNrICkg
eworICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkgeworICAgICAgICAgICAgICAg
IHZhciByZXN1bHQgPSBTaXp6bGUuYXR0ciggZWxlbSwgbmFtZSApOworCisgICAgICAgICAgICAg
ICAgaWYgKCByZXN1bHQgPT0gbnVsbCApIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9w
ZXJhdG9yID09PSAiIT0iOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAo
ICFvcGVyYXRvciApIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICIiOworCisgICAgICAgICAg
ICAgICAgcmV0dXJuIG9wZXJhdG9yID09PSAiPSIgPyByZXN1bHQgPT09IGNoZWNrIDoKKyAgICAg
ICAgICAgICAgICAgICAgb3BlcmF0b3IgPT09ICIhPSIgPyByZXN1bHQgIT09IGNoZWNrIDoKKyAg
ICAgICAgICAgICAgICAgICAgb3BlcmF0b3IgPT09ICJePSIgPyBjaGVjayAmJiByZXN1bHQuaW5k
ZXhPZiggY2hlY2sgKSA9PT0gMCA6CisgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yID09PSAi
Kj0iID8gY2hlY2sgJiYgcmVzdWx0LmluZGV4T2YoIGNoZWNrICkgPiAtMSA6CisgICAgICAgICAg
ICAgICAgICAgIG9wZXJhdG9yID09PSAiJD0iID8gY2hlY2sgJiYgcmVzdWx0LnNsaWNlKCAtY2hl
Y2subGVuZ3RoICkgPT09IGNoZWNrIDoKKyAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3IgPT09
ICJ+PSIgPyAoICIgIiArIHJlc3VsdC5yZXBsYWNlKCByd2hpdGVzcGFjZSwgIiAiICkgKyAiICIg
KS5pbmRleE9mKCBjaGVjayApID4gLTEgOgorICAgICAgICAgICAgICAgICAgICBvcGVyYXRvciA9
PT0gInw9IiA/IHJlc3VsdCA9PT0gY2hlY2sgfHwgcmVzdWx0LnNsaWNlKCAwLCBjaGVjay5sZW5n
dGggKyAxICkgPT09IGNoZWNrICsgIi0iIDoKKyAgICAgICAgICAgICAgICAgICAgZmFsc2U7Cisg
ICAgICAgICAgICB9OworICAgICAgICB9LAorCisgICAgICAgICJDSElMRCI6IGZ1bmN0aW9uKCB0
eXBlLCB3aGF0LCBhcmd1bWVudCwgZmlyc3QsIGxhc3QgKSB7CisgICAgICAgICAgICB2YXIgc2lt
cGxlID0gdHlwZS5zbGljZSggMCwgMyApICE9PSAibnRoIiwKKyAgICAgICAgICAgICAgICBmb3J3
YXJkID0gdHlwZS5zbGljZSggLTQgKSAhPT0gImxhc3QiLAorICAgICAgICAgICAgICAgIG9mVHlw
ZSA9IHdoYXQgPT09ICJvZi10eXBlIjsKKworICAgICAgICAgICAgcmV0dXJuIGZpcnN0ID09PSAx
ICYmIGxhc3QgPT09IDAgPworCisgICAgICAgICAgICAgICAgLy8gU2hvcnRjdXQgZm9yIDpudGgt
KihuKQorICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCBlbGVtICkgeworICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gISFlbGVtLnBhcmVudE5vZGU7CisgICAgICAgICAgICAgICAgfSA6CisKKyAg
ICAgICAgICAgICAgICBmdW5jdGlvbiggZWxlbSwgY29udGV4dCwgeG1sICkgeworICAgICAgICAg
ICAgICAgICAgICB2YXIgY2FjaGUsIHVuaXF1ZUNhY2hlLCBvdXRlckNhY2hlLCBub2RlLCBub2Rl
SW5kZXgsIHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgZGlyID0gc2ltcGxlICE9PSBm
b3J3YXJkID8gIm5leHRTaWJsaW5nIiA6ICJwcmV2aW91c1NpYmxpbmciLAorICAgICAgICAgICAg
ICAgICAgICAgICAgcGFyZW50ID0gZWxlbS5wYXJlbnROb2RlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgbmFtZSA9IG9mVHlwZSAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCksCisgICAg
ICAgICAgICAgICAgICAgICAgICB1c2VDYWNoZSA9ICF4bWwgJiYgIW9mVHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGRpZmYgPSBmYWxzZTsKKworICAgICAgICAgICAgICAgICAgICBpZiAo
IHBhcmVudCApIHsKKworICAgICAgICAgICAgICAgICAgICAgICAgLy8gOihmaXJzdHxsYXN0fG9u
bHkpLShjaGlsZHxvZi10eXBlKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBzaW1wbGUg
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCBkaXIgKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUgPSBlbGVtOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB3aGlsZSAoIChub2RlID0gbm9kZVsgZGlyIF0pICkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBvZlR5cGUgPworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0g
bmFtZSA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5ub2Rl
VHlwZSA9PT0gMSApIHsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBSZXZlcnNlIGRpcmVjdGlvbiBmb3IgOm9ubHktKiAoaWYgd2UgaGF2ZW4ndCB5
ZXQgZG9uZSBzbykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQgPSBkaXIg
PSB0eXBlID09PSAib25seSIgJiYgIXN0YXJ0ICYmICJuZXh0U2libGluZyI7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAg
ICBzdGFydCA9IFsgZm9yd2FyZCA/IHBhcmVudC5maXJzdENoaWxkIDogcGFyZW50Lmxhc3RDaGls
ZCBdOworCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBub24teG1sIDpudGgtY2hpbGQoLi4u
KSBzdG9yZXMgY2FjaGUgZGF0YSBvbiBgcGFyZW50YAorICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCBmb3J3YXJkICYmIHVzZUNhY2hlICkgeworCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gU2VlayBgZWxlbWAgZnJvbSBhIHByZXZpb3VzbHktY2FjaGVkIGluZGV4CisKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyAuLi5pbiBhIGd6aXAtZnJpZW5kbHkgd2F5CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbm9kZSA9IHBhcmVudDsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBvdXRlckNhY2hlID0gbm9kZVsgZXhwYW5kbyBdIHx8IChub2RlWyBleHBhbmRv
IF0gPSB7fSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTdXBwb3J0OiBJRSA8
OSBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGVmZW5kIGFnYWluc3QgY2xv
bmVkIGF0dHJvcGVydGllcyAoalF1ZXJ5IGdoLTE3MDkpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5pcXVlQ2FjaGUgPSBvdXRlckNhY2hlWyBub2RlLnVuaXF1ZUlEIF0gfHwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKG91dGVyQ2FjaGVbIG5vZGUudW5pcXVlSUQgXSA9
IHt9KTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlID0gdW5pcXVlQ2FjaGVb
IHR5cGUgXSB8fCBbXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlSW5kZXggPSBj
YWNoZVsgMCBdID09PSBkaXJydW5zICYmIGNhY2hlWyAxIF07CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGlmZiA9IG5vZGVJbmRleCAmJiBjYWNoZVsgMiBdOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG5vZGUgPSBub2RlSW5kZXggJiYgcGFyZW50LmNoaWxkTm9kZXNbIG5vZGVJ
bmRleCBdOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCAobm9kZSA9ICsr
bm9kZUluZGV4ICYmIG5vZGUgJiYgbm9kZVsgZGlyIF0gfHwKKworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBGYWxsYmFjayB0byBzZWVraW5nIGBlbGVtYCBmcm9tIHRoZSBzdGFy
dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGlmZiA9IG5vZGVJbmRleCA9IDAp
IHx8IHN0YXJ0LnBvcCgpKSApIHsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBXaGVuIGZvdW5kLCBjYWNoZSBpbmRleGVzIG9uIGBwYXJlbnRgIGFuZCBicmVhaworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIG5vZGUubm9kZVR5cGUgPT09IDEgJiYgKytk
aWZmICYmIG5vZGUgPT09IGVsZW0gKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bmlxdWVDYWNoZVsgdHlwZSBdID0gWyBkaXJydW5zLCBub2RlSW5kZXgsIGRpZmYgXTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIFVzZSBwcmV2aW91c2x5LWNhY2hlZCBlbGVtZW50IGluZGV4IGlmIGF2YWlsYWJsZQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggdXNlQ2FjaGUgKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIC4uLmluIGEgZ3ppcC1mcmllbmRseSB3YXkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZSA9IGVsZW07CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG91dGVyQ2FjaGUgPSBub2RlWyBleHBhbmRvIF0gfHwgKG5vZGVbIGV4
cGFuZG8gXSA9IHt9KTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTdXBw
b3J0OiBJRSA8OSBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERlZmVu
ZCBhZ2FpbnN0IGNsb25lZCBhdHRyb3BlcnRpZXMgKGpRdWVyeSBnaC0xNzA5KQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bmlxdWVDYWNoZSA9IG91dGVyQ2FjaGVbIG5vZGUudW5p
cXVlSUQgXSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG91dGVyQ2Fj
aGVbIG5vZGUudW5pcXVlSUQgXSA9IHt9KTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjYWNoZSA9IHVuaXF1ZUNhY2hlWyB0eXBlIF0gfHwgW107CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG5vZGVJbmRleCA9IGNhY2hlWyAwIF0gPT09IGRpcnJ1bnMgJiYgY2Fj
aGVbIDEgXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlmZiA9IG5vZGVJbmRl
eDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyB4bWwgOm50aC1jaGlsZCguLi4pCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gb3IgOm50aC1sYXN0LWNoaWxkKC4uLikgb3IgOm50aCgtbGFzdCk/LW9mLXR5cGUoLi4u
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggZGlmZiA9PT0gZmFsc2UgKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFVzZSB0aGUgc2FtZSBsb29wIGFzIGFi
b3ZlIHRvIHNlZWsgYGVsZW1gIGZyb20gdGhlIHN0YXJ0CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHdoaWxlICggKG5vZGUgPSArK25vZGVJbmRleCAmJiBub2RlICYmIG5vZGVbIGRp
ciBdIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGlmZiA9IG5vZGVJ
bmRleCA9IDApIHx8IHN0YXJ0LnBvcCgpKSApIHsKKworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCAoIG9mVHlwZSA/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBuYW1lIDoKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLm5vZGVUeXBlID09PSAxICkg
JiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArK2RpZmYgKSB7CisK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDYWNoZSB0aGUgaW5k
ZXggb2YgZWFjaCBlbmNvdW50ZXJlZCBlbGVtZW50CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKCB1c2VDYWNoZSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb3V0ZXJDYWNoZSA9IG5vZGVbIGV4cGFuZG8gXSB8fCAobm9k
ZVsgZXhwYW5kbyBdID0ge30pOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIFN1cHBvcnQ6IElFIDw5IG9ubHkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gRGVmZW5kIGFnYWluc3QgY2xvbmVkIGF0dHJvcGVydGll
cyAoalF1ZXJ5IGdoLTE3MDkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVuaXF1ZUNhY2hlID0gb3V0ZXJDYWNoZVsgbm9kZS51bmlxdWVJRCBdIHx8CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3V0ZXJDYWNoZVsg
bm9kZS51bmlxdWVJRCBdID0ge30pOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuaXF1ZUNhY2hlWyB0eXBlIF0gPSBbIGRpcnJ1bnMsIGRpZmYgXTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIG5vZGUgPT09IGVsZW0gKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gSW5jb3Jwb3JhdGUgdGhlIG9mZnNldCwgdGhlbiBjaGVjayBh
Z2FpbnN0IGN5Y2xlIHNpemUKKyAgICAgICAgICAgICAgICAgICAgICAgIGRpZmYgLT0gbGFzdDsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkaWZmID09PSBmaXJzdCB8fCAoIGRpZmYg
JSBmaXJzdCA9PT0gMCAmJiBkaWZmIC8gZmlyc3QgPj0gMCApOworICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgfSwKKworICAgICAgICAiUFNFVURPIjog
ZnVuY3Rpb24oIHBzZXVkbywgYXJndW1lbnQgKSB7CisgICAgICAgICAgICAvLyBwc2V1ZG8tY2xh
c3MgbmFtZXMgYXJlIGNhc2UtaW5zZW5zaXRpdmUKKyAgICAgICAgICAgIC8vIGh0dHA6Ly93d3cu
dzMub3JnL1RSL3NlbGVjdG9ycy8jcHNldWRvLWNsYXNzZXMKKyAgICAgICAgICAgIC8vIFByaW9y
aXRpemUgYnkgY2FzZSBzZW5zaXRpdml0eSBpbiBjYXNlIGN1c3RvbSBwc2V1ZG9zIGFyZSBhZGRl
ZCB3aXRoIHVwcGVyY2FzZSBsZXR0ZXJzCisgICAgICAgICAgICAvLyBSZW1lbWJlciB0aGF0IHNl
dEZpbHRlcnMgaW5oZXJpdHMgZnJvbSBwc2V1ZG9zCisgICAgICAgICAgICB2YXIgYXJncywKKyAg
ICAgICAgICAgICAgICBmbiA9IEV4cHIucHNldWRvc1sgcHNldWRvIF0gfHwgRXhwci5zZXRGaWx0
ZXJzWyBwc2V1ZG8udG9Mb3dlckNhc2UoKSBdIHx8CisgICAgICAgICAgICAgICAgICAgIFNpenps
ZS5lcnJvciggInVuc3VwcG9ydGVkIHBzZXVkbzogIiArIHBzZXVkbyApOworCisgICAgICAgICAg
ICAvLyBUaGUgdXNlciBtYXkgdXNlIGNyZWF0ZVBzZXVkbyB0byBpbmRpY2F0ZSB0aGF0CisgICAg
ICAgICAgICAvLyBhcmd1bWVudHMgYXJlIG5lZWRlZCB0byBjcmVhdGUgdGhlIGZpbHRlciBmdW5j
dGlvbgorICAgICAgICAgICAgLy8ganVzdCBhcyBTaXp6bGUgZG9lcworICAgICAgICAgICAgaWYg
KCBmblsgZXhwYW5kbyBdICkgeworICAgICAgICAgICAgICAgIHJldHVybiBmbiggYXJndW1lbnQg
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gQnV0IG1haW50YWluIHN1cHBvcnQg
Zm9yIG9sZCBzaWduYXR1cmVzCisgICAgICAgICAgICBpZiAoIGZuLmxlbmd0aCA+IDEgKSB7Cisg
ICAgICAgICAgICAgICAgYXJncyA9IFsgcHNldWRvLCBwc2V1ZG8sICIiLCBhcmd1bWVudCBdOwor
ICAgICAgICAgICAgICAgIHJldHVybiBFeHByLnNldEZpbHRlcnMuaGFzT3duUHJvcGVydHkoIHBz
ZXVkby50b0xvd2VyQ2FzZSgpICkgPworICAgICAgICAgICAgICAgICAgICBtYXJrRnVuY3Rpb24o
ZnVuY3Rpb24oIHNlZWQsIG1hdGNoZXMgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIg
aWR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZWQgPSBmbiggc2VlZCwgYXJn
dW1lbnQgKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gbWF0Y2hlZC5sZW5ndGg7
CisgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoIGktLSApIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZHggPSBpbmRleE9mKCBzZWVkLCBtYXRjaGVkW2ldICk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2VlZFsgaWR4IF0gPSAhKCBtYXRjaGVzWyBpZHggXSA9IG1h
dGNoZWRbaV0gKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgfSkgOgorICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiggZWxlbSApIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmbiggZWxlbSwgMCwgYXJncyApOworICAgICAgICAgICAg
ICAgICAgICB9OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gZm47CisgICAg
ICAgIH0KKyAgICB9LAorCisgICAgcHNldWRvczogeworICAgICAgICAvLyBQb3RlbnRpYWxseSBj
b21wbGV4IHBzZXVkb3MKKyAgICAgICAgIm5vdCI6IG1hcmtGdW5jdGlvbihmdW5jdGlvbiggc2Vs
ZWN0b3IgKSB7CisgICAgICAgICAgICAvLyBUcmltIHRoZSBzZWxlY3RvciBwYXNzZWQgdG8gY29t
cGlsZQorICAgICAgICAgICAgLy8gdG8gYXZvaWQgdHJlYXRpbmcgbGVhZGluZyBhbmQgdHJhaWxp
bmcKKyAgICAgICAgICAgIC8vIHNwYWNlcyBhcyBjb21iaW5hdG9ycworICAgICAgICAgICAgdmFy
IGlucHV0ID0gW10sCisgICAgICAgICAgICAgICAgcmVzdWx0cyA9IFtdLAorICAgICAgICAgICAg
ICAgIG1hdGNoZXIgPSBjb21waWxlKCBzZWxlY3Rvci5yZXBsYWNlKCBydHJpbSwgIiQxIiApICk7
CisKKyAgICAgICAgICAgIHJldHVybiBtYXRjaGVyWyBleHBhbmRvIF0gPworICAgICAgICAgICAg
ICAgIG1hcmtGdW5jdGlvbihmdW5jdGlvbiggc2VlZCwgbWF0Y2hlcywgY29udGV4dCwgeG1sICkg
eworICAgICAgICAgICAgICAgICAgICB2YXIgZWxlbSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IHVubWF0Y2hlZCA9IG1hdGNoZXIoIHNlZWQsIG51bGwsIHhtbCwgW10gKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGkgPSBzZWVkLmxlbmd0aDsKKworICAgICAgICAgICAgICAgICAgICAvLyBN
YXRjaCBlbGVtZW50cyB1bm1hdGNoZWQgYnkgYG1hdGNoZXJgCisgICAgICAgICAgICAgICAgICAg
IHdoaWxlICggaS0tICkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAoZWxlbSA9IHVu
bWF0Y2hlZFtpXSkgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VlZFtpXSA9ICEo
bWF0Y2hlc1tpXSA9IGVsZW0pOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSkgOgorICAgICAgICAgICAgICAgIGZ1bmN0
aW9uKCBlbGVtLCBjb250ZXh0LCB4bWwgKSB7CisgICAgICAgICAgICAgICAgICAgIGlucHV0WzBd
ID0gZWxlbTsKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2hlciggaW5wdXQsIG51bGwsIHhtbCwg
cmVzdWx0cyApOworICAgICAgICAgICAgICAgICAgICAvLyBEb24ndCBrZWVwIHRoZSBlbGVtZW50
IChpc3N1ZSAjMjk5KQorICAgICAgICAgICAgICAgICAgICBpbnB1dFswXSA9IG51bGw7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiAhcmVzdWx0cy5wb3AoKTsKKyAgICAgICAgICAgICAgICB9
OworICAgICAgICB9KSwKKworICAgICAgICAiaGFzIjogbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCBz
ZWxlY3RvciApIHsKKyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiggZWxlbSApIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gU2l6emxlKCBzZWxlY3RvciwgZWxlbSApLmxlbmd0aCA+IDA7Cisg
ICAgICAgICAgICB9OworICAgICAgICB9KSwKKworICAgICAgICAiY29udGFpbnMiOiBtYXJrRnVu
Y3Rpb24oZnVuY3Rpb24oIHRleHQgKSB7CisgICAgICAgICAgICB0ZXh0ID0gdGV4dC5yZXBsYWNl
KCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApOworICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCBl
bGVtICkgeworICAgICAgICAgICAgICAgIHJldHVybiAoIGVsZW0udGV4dENvbnRlbnQgfHwgZWxl
bS5pbm5lclRleHQgfHwgZ2V0VGV4dCggZWxlbSApICkuaW5kZXhPZiggdGV4dCApID4gLTE7Cisg
ICAgICAgICAgICB9OworICAgICAgICB9KSwKKworICAgICAgICAvLyAiV2hldGhlciBhbiBlbGVt
ZW50IGlzIHJlcHJlc2VudGVkIGJ5IGEgOmxhbmcoKSBzZWxlY3RvcgorICAgICAgICAvLyBpcyBi
YXNlZCBzb2xlbHkgb24gdGhlIGVsZW1lbnQncyBsYW5ndWFnZSB2YWx1ZQorICAgICAgICAvLyBi
ZWluZyBlcXVhbCB0byB0aGUgaWRlbnRpZmllciBDLAorICAgICAgICAvLyBvciBiZWdpbm5pbmcg
d2l0aCB0aGUgaWRlbnRpZmllciBDIGltbWVkaWF0ZWx5IGZvbGxvd2VkIGJ5ICItIi4KKyAgICAg
ICAgLy8gVGhlIG1hdGNoaW5nIG9mIEMgYWdhaW5zdCB0aGUgZWxlbWVudCdzIGxhbmd1YWdlIHZh
bHVlIGlzIHBlcmZvcm1lZCBjYXNlLWluc2Vuc2l0aXZlbHkuCisgICAgICAgIC8vIFRoZSBpZGVu
dGlmaWVyIEMgZG9lcyBub3QgaGF2ZSB0byBiZSBhIHZhbGlkIGxhbmd1YWdlIG5hbWUuIgorICAg
ICAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9zZWxlY3RvcnMvI2xhbmctcHNldWRvCisgICAg
ICAgICJsYW5nIjogbWFya0Z1bmN0aW9uKCBmdW5jdGlvbiggbGFuZyApIHsKKyAgICAgICAgICAg
IC8vIGxhbmcgdmFsdWUgbXVzdCBiZSBhIHZhbGlkIGlkZW50aWZpZXIKKyAgICAgICAgICAgIGlm
ICggIXJpZGVudGlmaWVyLnRlc3QobGFuZyB8fCAiIikgKSB7CisgICAgICAgICAgICAgICAgU2l6
emxlLmVycm9yKCAidW5zdXBwb3J0ZWQgbGFuZzogIiArIGxhbmcgKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGxhbmcgPSBsYW5nLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICku
dG9Mb3dlckNhc2UoKTsKKyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiggZWxlbSApIHsKKyAg
ICAgICAgICAgICAgICB2YXIgZWxlbUxhbmc7CisgICAgICAgICAgICAgICAgZG8geworICAgICAg
ICAgICAgICAgICAgICBpZiAoIChlbGVtTGFuZyA9IGRvY3VtZW50SXNIVE1MID8KKyAgICAgICAg
ICAgICAgICAgICAgICAgIGVsZW0ubGFuZyA6CisgICAgICAgICAgICAgICAgICAgICAgICBlbGVt
LmdldEF0dHJpYnV0ZSgieG1sOmxhbmciKSB8fCBlbGVtLmdldEF0dHJpYnV0ZSgibGFuZyIpKSAp
IHsKKworICAgICAgICAgICAgICAgICAgICAgICAgZWxlbUxhbmcgPSBlbGVtTGFuZy50b0xvd2Vy
Q2FzZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1MYW5nID09PSBsYW5n
IHx8IGVsZW1MYW5nLmluZGV4T2YoIGxhbmcgKyAiLSIgKSA9PT0gMDsKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIH0gd2hpbGUgKCAoZWxlbSA9IGVsZW0ucGFyZW50Tm9k
ZSkgJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSApOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgIH07CisgICAgICAgIH0pLAorCisgICAgICAgIC8vIE1pc2NlbGxhbmVv
dXMKKyAgICAgICAgInRhcmdldCI6IGZ1bmN0aW9uKCBlbGVtICkgeworICAgICAgICAgICAgdmFy
IGhhc2ggPSB3aW5kb3cubG9jYXRpb24gJiYgd2luZG93LmxvY2F0aW9uLmhhc2g7CisgICAgICAg
ICAgICByZXR1cm4gaGFzaCAmJiBoYXNoLnNsaWNlKCAxICkgPT09IGVsZW0uaWQ7CisgICAgICAg
IH0sCisKKyAgICAgICAgInJvb3QiOiBmdW5jdGlvbiggZWxlbSApIHsKKyAgICAgICAgICAgIHJl
dHVybiBlbGVtID09PSBkb2NFbGVtOworICAgICAgICB9LAorCisgICAgICAgICJmb2N1cyI6IGZ1
bmN0aW9uKCBlbGVtICkgeworICAgICAgICAgICAgcmV0dXJuIGVsZW0gPT09IGRvY3VtZW50LmFj
dGl2ZUVsZW1lbnQgJiYgKCFkb2N1bWVudC5oYXNGb2N1cyB8fCBkb2N1bWVudC5oYXNGb2N1cygp
KSAmJiAhIShlbGVtLnR5cGUgfHwgZWxlbS5ocmVmIHx8IH5lbGVtLnRhYkluZGV4KTsKKyAgICAg
ICAgfSwKKworICAgICAgICAvLyBCb29sZWFuIHByb3BlcnRpZXMKKyAgICAgICAgImVuYWJsZWQi
OiBjcmVhdGVEaXNhYmxlZFBzZXVkbyggZmFsc2UgKSwKKyAgICAgICAgImRpc2FibGVkIjogY3Jl
YXRlRGlzYWJsZWRQc2V1ZG8oIHRydWUgKSwKKworICAgICAgICAiY2hlY2tlZCI6IGZ1bmN0aW9u
KCBlbGVtICkgeworICAgICAgICAgICAgLy8gSW4gQ1NTMywgOmNoZWNrZWQgc2hvdWxkIHJldHVy
biBib3RoIGNoZWNrZWQgYW5kIHNlbGVjdGVkIGVsZW1lbnRzCisgICAgICAgICAgICAvLyBodHRw
Oi8vd3d3LnczLm9yZy9UUi8yMDExL1JFQy1jc3MzLXNlbGVjdG9ycy0yMDExMDkyOS8jY2hlY2tl
ZAorICAgICAgICAgICAgdmFyIG5vZGVOYW1lID0gZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgp
OworICAgICAgICAgICAgcmV0dXJuIChub2RlTmFtZSA9PT0gImlucHV0IiAmJiAhIWVsZW0uY2hl
Y2tlZCkgfHwgKG5vZGVOYW1lID09PSAib3B0aW9uIiAmJiAhIWVsZW0uc2VsZWN0ZWQpOworICAg
ICAgICB9LAorCisgICAgICAgICJzZWxlY3RlZCI6IGZ1bmN0aW9uKCBlbGVtICkgeworICAgICAg
ICAgICAgLy8gQWNjZXNzaW5nIHRoaXMgcHJvcGVydHkgbWFrZXMgc2VsZWN0ZWQtYnktZGVmYXVs
dAorICAgICAgICAgICAgLy8gb3B0aW9ucyBpbiBTYWZhcmkgd29yayBwcm9wZXJseQorICAgICAg
ICAgICAgaWYgKCBlbGVtLnBhcmVudE5vZGUgKSB7CisgICAgICAgICAgICAgICAgZWxlbS5wYXJl
bnROb2RlLnNlbGVjdGVkSW5kZXg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVy
biBlbGVtLnNlbGVjdGVkID09PSB0cnVlOworICAgICAgICB9LAorCisgICAgICAgIC8vIENvbnRl
bnRzCisgICAgICAgICJlbXB0eSI6IGZ1bmN0aW9uKCBlbGVtICkgeworICAgICAgICAgICAgLy8g
aHR0cDovL3d3dy53My5vcmcvVFIvc2VsZWN0b3JzLyNlbXB0eS1wc2V1ZG8KKyAgICAgICAgICAg
IC8vIDplbXB0eSBpcyBuZWdhdGVkIGJ5IGVsZW1lbnQgKDEpIG9yIGNvbnRlbnQgbm9kZXMgKHRl
eHQ6IDM7IGNkYXRhOiA0OyBlbnRpdHkgcmVmOiA1KSwKKyAgICAgICAgICAgIC8vICAgYnV0IG5v
dCBieSBvdGhlcnMgKGNvbW1lbnQ6IDg7IHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb246IDc7IGV0Yy4p
CisgICAgICAgICAgICAvLyBub2RlVHlwZSA8IDYgd29ya3MgYmVjYXVzZSBhdHRyaWJ1dGVzICgy
KSBkbyBub3QgYXBwZWFyIGFzIGNoaWxkcmVuCisgICAgICAgICAgICBmb3IgKCBlbGVtID0gZWxl
bS5maXJzdENoaWxkOyBlbGVtOyBlbGVtID0gZWxlbS5uZXh0U2libGluZyApIHsKKyAgICAgICAg
ICAgICAgICBpZiAoIGVsZW0ubm9kZVR5cGUgPCA2ICkgeworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0sCisKKyAgICAgICAgInBhcmVudCI6IGZ1bmN0aW9u
KCBlbGVtICkgeworICAgICAgICAgICAgcmV0dXJuICFFeHByLnBzZXVkb3NbImVtcHR5Il0oIGVs
ZW0gKTsKKyAgICAgICAgfSwKKworICAgICAgICAvLyBFbGVtZW50L2lucHV0IHR5cGVzCisgICAg
ICAgICJoZWFkZXIiOiBmdW5jdGlvbiggZWxlbSApIHsKKyAgICAgICAgICAgIHJldHVybiByaGVh
ZGVyLnRlc3QoIGVsZW0ubm9kZU5hbWUgKTsKKyAgICAgICAgfSwKKworICAgICAgICAiaW5wdXQi
OiBmdW5jdGlvbiggZWxlbSApIHsKKyAgICAgICAgICAgIHJldHVybiByaW5wdXRzLnRlc3QoIGVs
ZW0ubm9kZU5hbWUgKTsKKyAgICAgICAgfSwKKworICAgICAgICAiYnV0dG9uIjogZnVuY3Rpb24o
IGVsZW0gKSB7CisgICAgICAgICAgICB2YXIgbmFtZSA9IGVsZW0ubm9kZU5hbWUudG9Mb3dlckNh
c2UoKTsKKyAgICAgICAgICAgIHJldHVybiBuYW1lID09PSAiaW5wdXQiICYmIGVsZW0udHlwZSA9
PT0gImJ1dHRvbiIgfHwgbmFtZSA9PT0gImJ1dHRvbiI7CisgICAgICAgIH0sCisKKyAgICAgICAg
InRleHQiOiBmdW5jdGlvbiggZWxlbSApIHsKKyAgICAgICAgICAgIHZhciBhdHRyOworICAgICAg
ICAgICAgcmV0dXJuIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gImlucHV0IiAmJgor
ICAgICAgICAgICAgICAgIGVsZW0udHlwZSA9PT0gInRleHQiICYmCisKKyAgICAgICAgICAgICAg
ICAvLyBTdXBwb3J0OiBJRTw4CisgICAgICAgICAgICAgICAgLy8gTmV3IEhUTUw1IGF0dHJpYnV0
ZSB2YWx1ZXMgKGUuZy4sICJzZWFyY2giKSBhcHBlYXIgd2l0aCBlbGVtLnR5cGUgPT09ICJ0ZXh0
IgorICAgICAgICAgICAgICAgICggKGF0dHIgPSBlbGVtLmdldEF0dHJpYnV0ZSgidHlwZSIpKSA9
PSBudWxsIHx8IGF0dHIudG9Mb3dlckNhc2UoKSA9PT0gInRleHQiICk7CisgICAgICAgIH0sCisK
KyAgICAgICAgLy8gUG9zaXRpb24taW4tY29sbGVjdGlvbgorICAgICAgICAiZmlyc3QiOiBjcmVh
dGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcmV0dXJuIFsgMCBd
OworICAgICAgICB9KSwKKworICAgICAgICAibGFzdCI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8o
ZnVuY3Rpb24oIG1hdGNoSW5kZXhlcywgbGVuZ3RoICkgeworICAgICAgICAgICAgcmV0dXJuIFsg
bGVuZ3RoIC0gMSBdOworICAgICAgICB9KSwKKworICAgICAgICAiZXEiOiBjcmVhdGVQb3NpdGlv
bmFsUHNldWRvKGZ1bmN0aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0aCwgYXJndW1lbnQgKSB7Cisg
ICAgICAgICAgICByZXR1cm4gWyBhcmd1bWVudCA8IDAgPyBhcmd1bWVudCArIGxlbmd0aCA6IGFy
Z3VtZW50IF07CisgICAgICAgIH0pLAorCisgICAgICAgICJldmVuIjogY3JlYXRlUG9zaXRpb25h
bFBzZXVkbyhmdW5jdGlvbiggbWF0Y2hJbmRleGVzLCBsZW5ndGggKSB7CisgICAgICAgICAgICB2
YXIgaSA9IDA7CisgICAgICAgICAgICBmb3IgKCA7IGkgPCBsZW5ndGg7IGkgKz0gMiApIHsKKyAg
ICAgICAgICAgICAgICBtYXRjaEluZGV4ZXMucHVzaCggaSApOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgcmV0dXJuIG1hdGNoSW5kZXhlczsKKyAgICAgICAgfSksCisKKyAgICAgICAgIm9k
ZCI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24oIG1hdGNoSW5kZXhlcywgbGVuZ3Ro
ICkgeworICAgICAgICAgICAgdmFyIGkgPSAxOworICAgICAgICAgICAgZm9yICggOyBpIDwgbGVu
Z3RoOyBpICs9IDIgKSB7CisgICAgICAgICAgICAgICAgbWF0Y2hJbmRleGVzLnB1c2goIGkgKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBtYXRjaEluZGV4ZXM7CisgICAgICAg
IH0pLAorCisgICAgICAgICJsdCI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24oIG1h
dGNoSW5kZXhlcywgbGVuZ3RoLCBhcmd1bWVudCApIHsKKyAgICAgICAgICAgIHZhciBpID0gYXJn
dW1lbnQgPCAwID8gYXJndW1lbnQgKyBsZW5ndGggOiBhcmd1bWVudDsKKyAgICAgICAgICAgIGZv
ciAoIDsgLS1pID49IDA7ICkgeworICAgICAgICAgICAgICAgIG1hdGNoSW5kZXhlcy5wdXNoKCBp
ICk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gbWF0Y2hJbmRleGVzOworICAg
ICAgICB9KSwKKworICAgICAgICAiZ3QiOiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9u
KCBtYXRjaEluZGV4ZXMsIGxlbmd0aCwgYXJndW1lbnQgKSB7CisgICAgICAgICAgICB2YXIgaSA9
IGFyZ3VtZW50IDwgMCA/IGFyZ3VtZW50ICsgbGVuZ3RoIDogYXJndW1lbnQ7CisgICAgICAgICAg
ICBmb3IgKCA7ICsraSA8IGxlbmd0aDsgKSB7CisgICAgICAgICAgICAgICAgbWF0Y2hJbmRleGVz
LnB1c2goIGkgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBtYXRjaEluZGV4
ZXM7CisgICAgICAgIH0pCisgICAgfQorfTsKKworRXhwci5wc2V1ZG9zWyJudGgiXSA9IEV4cHIu
cHNldWRvc1siZXEiXTsKKworLy8gQWRkIGJ1dHRvbi9pbnB1dCB0eXBlIHBzZXVkb3MKK2ZvciAo
IGkgaW4geyByYWRpbzogdHJ1ZSwgY2hlY2tib3g6IHRydWUsIGZpbGU6IHRydWUsIHBhc3N3b3Jk
OiB0cnVlLCBpbWFnZTogdHJ1ZSB9ICkgeworICAgIEV4cHIucHNldWRvc1sgaSBdID0gY3JlYXRl
SW5wdXRQc2V1ZG8oIGkgKTsKK30KK2ZvciAoIGkgaW4geyBzdWJtaXQ6IHRydWUsIHJlc2V0OiB0
cnVlIH0gKSB7CisgICAgRXhwci5wc2V1ZG9zWyBpIF0gPSBjcmVhdGVCdXR0b25Qc2V1ZG8oIGkg
KTsKK30KKworLy8gRWFzeSBBUEkgZm9yIGNyZWF0aW5nIG5ldyBzZXRGaWx0ZXJzCitmdW5jdGlv
biBzZXRGaWx0ZXJzKCkge30KK3NldEZpbHRlcnMucHJvdG90eXBlID0gRXhwci5maWx0ZXJzID0g
RXhwci5wc2V1ZG9zOworRXhwci5zZXRGaWx0ZXJzID0gbmV3IHNldEZpbHRlcnMoKTsKKwordG9r
ZW5pemUgPSBTaXp6bGUudG9rZW5pemUgPSBmdW5jdGlvbiggc2VsZWN0b3IsIHBhcnNlT25seSAp
IHsKKyAgICB2YXIgbWF0Y2hlZCwgbWF0Y2gsIHRva2VucywgdHlwZSwKKyAgICAgICAgc29GYXIs
IGdyb3VwcywgcHJlRmlsdGVycywKKyAgICAgICAgY2FjaGVkID0gdG9rZW5DYWNoZVsgc2VsZWN0
b3IgKyAiICIgXTsKKworICAgIGlmICggY2FjaGVkICkgeworICAgICAgICByZXR1cm4gcGFyc2VP
bmx5ID8gMCA6IGNhY2hlZC5zbGljZSggMCApOworICAgIH0KKworICAgIHNvRmFyID0gc2VsZWN0
b3I7CisgICAgZ3JvdXBzID0gW107CisgICAgcHJlRmlsdGVycyA9IEV4cHIucHJlRmlsdGVyOwor
CisgICAgd2hpbGUgKCBzb0ZhciApIHsKKworICAgICAgICAvLyBDb21tYSBhbmQgZmlyc3QgcnVu
CisgICAgICAgIGlmICggIW1hdGNoZWQgfHwgKG1hdGNoID0gcmNvbW1hLmV4ZWMoIHNvRmFyICkp
ICkgeworICAgICAgICAgICAgaWYgKCBtYXRjaCApIHsKKyAgICAgICAgICAgICAgICAvLyBEb24n
dCBjb25zdW1lIHRyYWlsaW5nIGNvbW1hcyBhcyB2YWxpZAorICAgICAgICAgICAgICAgIHNvRmFy
ID0gc29GYXIuc2xpY2UoIG1hdGNoWzBdLmxlbmd0aCApIHx8IHNvRmFyOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgZ3JvdXBzLnB1c2goICh0b2tlbnMgPSBbXSkgKTsKKyAgICAgICAgfQor
CisgICAgICAgIG1hdGNoZWQgPSBmYWxzZTsKKworICAgICAgICAvLyBDb21iaW5hdG9ycworICAg
ICAgICBpZiAoIChtYXRjaCA9IHJjb21iaW5hdG9ycy5leGVjKCBzb0ZhciApKSApIHsKKyAgICAg
ICAgICAgIG1hdGNoZWQgPSBtYXRjaC5zaGlmdCgpOworICAgICAgICAgICAgdG9rZW5zLnB1c2go
eworICAgICAgICAgICAgICAgIHZhbHVlOiBtYXRjaGVkLAorICAgICAgICAgICAgICAgIC8vIENh
c3QgZGVzY2VuZGFudCBjb21iaW5hdG9ycyB0byBzcGFjZQorICAgICAgICAgICAgICAgIHR5cGU6
IG1hdGNoWzBdLnJlcGxhY2UoIHJ0cmltLCAiICIgKQorICAgICAgICAgICAgfSk7CisgICAgICAg
ICAgICBzb0ZhciA9IHNvRmFyLnNsaWNlKCBtYXRjaGVkLmxlbmd0aCApOworICAgICAgICB9CisK
KyAgICAgICAgLy8gRmlsdGVycworICAgICAgICBmb3IgKCB0eXBlIGluIEV4cHIuZmlsdGVyICkg
eworICAgICAgICAgICAgaWYgKCAobWF0Y2ggPSBtYXRjaEV4cHJbIHR5cGUgXS5leGVjKCBzb0Zh
ciApKSAmJiAoIXByZUZpbHRlcnNbIHR5cGUgXSB8fAorICAgICAgICAgICAgICAgIChtYXRjaCA9
IHByZUZpbHRlcnNbIHR5cGUgXSggbWF0Y2ggKSkpICkgeworICAgICAgICAgICAgICAgIG1hdGNo
ZWQgPSBtYXRjaC5zaGlmdCgpOworICAgICAgICAgICAgICAgIHRva2Vucy5wdXNoKHsKKyAgICAg
ICAgICAgICAgICAgICAgdmFsdWU6IG1hdGNoZWQsCisgICAgICAgICAgICAgICAgICAgIHR5cGU6
IHR5cGUsCisgICAgICAgICAgICAgICAgICAgIG1hdGNoZXM6IG1hdGNoCisgICAgICAgICAgICAg
ICAgfSk7CisgICAgICAgICAgICAgICAgc29GYXIgPSBzb0Zhci5zbGljZSggbWF0Y2hlZC5sZW5n
dGggKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmICggIW1hdGNoZWQg
KSB7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFJldHVy
biB0aGUgbGVuZ3RoIG9mIHRoZSBpbnZhbGlkIGV4Y2VzcworICAgIC8vIGlmIHdlJ3JlIGp1c3Qg
cGFyc2luZworICAgIC8vIE90aGVyd2lzZSwgdGhyb3cgYW4gZXJyb3Igb3IgcmV0dXJuIHRva2Vu
cworICAgIHJldHVybiBwYXJzZU9ubHkgPworICAgICAgICBzb0Zhci5sZW5ndGggOgorICAgICAg
ICBzb0ZhciA/CisgICAgICAgICAgICBTaXp6bGUuZXJyb3IoIHNlbGVjdG9yICkgOgorICAgICAg
ICAgICAgLy8gQ2FjaGUgdGhlIHRva2VucworICAgICAgICAgICAgdG9rZW5DYWNoZSggc2VsZWN0
b3IsIGdyb3VwcyApLnNsaWNlKCAwICk7Cit9OworCitmdW5jdGlvbiB0b1NlbGVjdG9yKCB0b2tl
bnMgKSB7CisgICAgdmFyIGkgPSAwLAorICAgICAgICBsZW4gPSB0b2tlbnMubGVuZ3RoLAorICAg
ICAgICBzZWxlY3RvciA9ICIiOworICAgIGZvciAoIDsgaSA8IGxlbjsgaSsrICkgeworICAgICAg
ICBzZWxlY3RvciArPSB0b2tlbnNbaV0udmFsdWU7CisgICAgfQorICAgIHJldHVybiBzZWxlY3Rv
cjsKK30KKworZnVuY3Rpb24gYWRkQ29tYmluYXRvciggbWF0Y2hlciwgY29tYmluYXRvciwgYmFz
ZSApIHsKKyAgICB2YXIgZGlyID0gY29tYmluYXRvci5kaXIsCisgICAgICAgIHNraXAgPSBjb21i
aW5hdG9yLm5leHQsCisgICAgICAgIGtleSA9IHNraXAgfHwgZGlyLAorICAgICAgICBjaGVja05v
bkVsZW1lbnRzID0gYmFzZSAmJiBrZXkgPT09ICJwYXJlbnROb2RlIiwKKyAgICAgICAgZG9uZU5h
bWUgPSBkb25lKys7CisKKyAgICByZXR1cm4gY29tYmluYXRvci5maXJzdCA/CisgICAgICAgIC8v
IENoZWNrIGFnYWluc3QgY2xvc2VzdCBhbmNlc3Rvci9wcmVjZWRpbmcgZWxlbWVudAorICAgICAg
ICBmdW5jdGlvbiggZWxlbSwgY29udGV4dCwgeG1sICkgeworICAgICAgICAgICAgd2hpbGUgKCAo
ZWxlbSA9IGVsZW1bIGRpciBdKSApIHsKKyAgICAgICAgICAgICAgICBpZiAoIGVsZW0ubm9kZVR5
cGUgPT09IDEgfHwgY2hlY2tOb25FbGVtZW50cyApIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIG1hdGNoZXIoIGVsZW0sIGNvbnRleHQsIHhtbCApOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfSA6CisKKyAg
ICAgICAgLy8gQ2hlY2sgYWdhaW5zdCBhbGwgYW5jZXN0b3IvcHJlY2VkaW5nIGVsZW1lbnRzCisg
ICAgICAgIGZ1bmN0aW9uKCBlbGVtLCBjb250ZXh0LCB4bWwgKSB7CisgICAgICAgICAgICB2YXIg
b2xkQ2FjaGUsIHVuaXF1ZUNhY2hlLCBvdXRlckNhY2hlLAorICAgICAgICAgICAgICAgIG5ld0Nh
Y2hlID0gWyBkaXJydW5zLCBkb25lTmFtZSBdOworCisgICAgICAgICAgICAvLyBXZSBjYW4ndCBz
ZXQgYXJiaXRyYXJ5IGRhdGEgb24gWE1MIG5vZGVzLCBzbyB0aGV5IGRvbid0IGJlbmVmaXQgZnJv
bSBjb21iaW5hdG9yIGNhY2hpbmcKKyAgICAgICAgICAgIGlmICggeG1sICkgeworICAgICAgICAg
ICAgICAgIHdoaWxlICggKGVsZW0gPSBlbGVtWyBkaXIgXSkgKSB7CisgICAgICAgICAgICAgICAg
ICAgIGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSB8fCBjaGVja05vbkVsZW1lbnRzICkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCBtYXRjaGVyKCBlbGVtLCBjb250ZXh0LCB4bWwgKSAp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgd2hpbGUgKCAoZWxlbSA9IGVs
ZW1bIGRpciBdKSApIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCBlbGVtLm5vZGVUeXBlID09
PSAxIHx8IGNoZWNrTm9uRWxlbWVudHMgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvdXRl
ckNhY2hlID0gZWxlbVsgZXhwYW5kbyBdIHx8IChlbGVtWyBleHBhbmRvIF0gPSB7fSk7CisKKyAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6IElFIDw5IG9ubHkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIERlZmVuZCBhZ2FpbnN0IGNsb25lZCBhdHRyb3BlcnRpZXMgKGpRdWVy
eSBnaC0xNzA5KQorICAgICAgICAgICAgICAgICAgICAgICAgdW5pcXVlQ2FjaGUgPSBvdXRlckNh
Y2hlWyBlbGVtLnVuaXF1ZUlEIF0gfHwgKG91dGVyQ2FjaGVbIGVsZW0udW5pcXVlSUQgXSA9IHt9
KTsKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBza2lwICYmIHNraXAgPT09IGVsZW0u
bm9kZU5hbWUudG9Mb3dlckNhc2UoKSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
bGVtID0gZWxlbVsgZGlyIF0gfHwgZWxlbTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxz
ZSBpZiAoIChvbGRDYWNoZSA9IHVuaXF1ZUNhY2hlWyBrZXkgXSkgJiYKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBvbGRDYWNoZVsgMCBdID09PSBkaXJydW5zICYmIG9sZENhY2hlWyAxIF0g
PT09IGRvbmVOYW1lICkgeworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXNzaWdu
IHRvIG5ld0NhY2hlIHNvIHJlc3VsdHMgYmFjay1wcm9wYWdhdGUgdG8gcHJldmlvdXMgZWxlbWVu
dHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKG5ld0NhY2hlWyAyIF0gPSBv
bGRDYWNoZVsgMiBdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gUmV1c2UgbmV3Y2FjaGUgc28gcmVzdWx0cyBiYWNrLXBy
b3BhZ2F0ZSB0byBwcmV2aW91cyBlbGVtZW50cworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuaXF1ZUNhY2hlWyBrZXkgXSA9IG5ld0NhY2hlOworCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gQSBtYXRjaCBtZWFucyB3ZSdyZSBkb25lOyBhIGZhaWwgbWVhbnMgd2UgaGF2ZSB0
byBrZWVwIGNoZWNraW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAobmV3Q2Fj
aGVbIDIgXSA9IG1hdGNoZXIoIGVsZW0sIGNvbnRleHQsIHhtbCApKSApIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICB9OworfQorCitmdW5jdGlvbiBlbGVtZW50TWF0Y2hlciggbWF0Y2hlcnMg
KSB7CisgICAgcmV0dXJuIG1hdGNoZXJzLmxlbmd0aCA+IDEgPworICAgICAgICBmdW5jdGlvbigg
ZWxlbSwgY29udGV4dCwgeG1sICkgeworICAgICAgICAgICAgdmFyIGkgPSBtYXRjaGVycy5sZW5n
dGg7CisgICAgICAgICAgICB3aGlsZSAoIGktLSApIHsKKyAgICAgICAgICAgICAgICBpZiAoICFt
YXRjaGVyc1tpXSggZWxlbSwgY29udGV4dCwgeG1sICkgKSB7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfSA6CisgICAgICAgIG1hdGNoZXJzWzBdOworfQor
CitmdW5jdGlvbiBtdWx0aXBsZUNvbnRleHRzKCBzZWxlY3RvciwgY29udGV4dHMsIHJlc3VsdHMg
KSB7CisgICAgdmFyIGkgPSAwLAorICAgICAgICBsZW4gPSBjb250ZXh0cy5sZW5ndGg7CisgICAg
Zm9yICggOyBpIDwgbGVuOyBpKysgKSB7CisgICAgICAgIFNpenpsZSggc2VsZWN0b3IsIGNvbnRl
eHRzW2ldLCByZXN1bHRzICk7CisgICAgfQorICAgIHJldHVybiByZXN1bHRzOworfQorCitmdW5j
dGlvbiBjb25kZW5zZSggdW5tYXRjaGVkLCBtYXAsIGZpbHRlciwgY29udGV4dCwgeG1sICkgewor
ICAgIHZhciBlbGVtLAorICAgICAgICBuZXdVbm1hdGNoZWQgPSBbXSwKKyAgICAgICAgaSA9IDAs
CisgICAgICAgIGxlbiA9IHVubWF0Y2hlZC5sZW5ndGgsCisgICAgICAgIG1hcHBlZCA9IG1hcCAh
PSBudWxsOworCisgICAgZm9yICggOyBpIDwgbGVuOyBpKysgKSB7CisgICAgICAgIGlmICggKGVs
ZW0gPSB1bm1hdGNoZWRbaV0pICkgeworICAgICAgICAgICAgaWYgKCAhZmlsdGVyIHx8IGZpbHRl
ciggZWxlbSwgY29udGV4dCwgeG1sICkgKSB7CisgICAgICAgICAgICAgICAgbmV3VW5tYXRjaGVk
LnB1c2goIGVsZW0gKTsKKyAgICAgICAgICAgICAgICBpZiAoIG1hcHBlZCApIHsKKyAgICAgICAg
ICAgICAgICAgICAgbWFwLnB1c2goIGkgKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gbmV3VW5tYXRjaGVkOworfQorCitm
dW5jdGlvbiBzZXRNYXRjaGVyKCBwcmVGaWx0ZXIsIHNlbGVjdG9yLCBtYXRjaGVyLCBwb3N0Rmls
dGVyLCBwb3N0RmluZGVyLCBwb3N0U2VsZWN0b3IgKSB7CisgICAgaWYgKCBwb3N0RmlsdGVyICYm
ICFwb3N0RmlsdGVyWyBleHBhbmRvIF0gKSB7CisgICAgICAgIHBvc3RGaWx0ZXIgPSBzZXRNYXRj
aGVyKCBwb3N0RmlsdGVyICk7CisgICAgfQorICAgIGlmICggcG9zdEZpbmRlciAmJiAhcG9zdEZp
bmRlclsgZXhwYW5kbyBdICkgeworICAgICAgICBwb3N0RmluZGVyID0gc2V0TWF0Y2hlciggcG9z
dEZpbmRlciwgcG9zdFNlbGVjdG9yICk7CisgICAgfQorICAgIHJldHVybiBtYXJrRnVuY3Rpb24o
ZnVuY3Rpb24oIHNlZWQsIHJlc3VsdHMsIGNvbnRleHQsIHhtbCApIHsKKyAgICAgICAgdmFyIHRl
bXAsIGksIGVsZW0sCisgICAgICAgICAgICBwcmVNYXAgPSBbXSwKKyAgICAgICAgICAgIHBvc3RN
YXAgPSBbXSwKKyAgICAgICAgICAgIHByZWV4aXN0aW5nID0gcmVzdWx0cy5sZW5ndGgsCisKKyAg
ICAgICAgICAgIC8vIEdldCBpbml0aWFsIGVsZW1lbnRzIGZyb20gc2VlZCBvciBjb250ZXh0Cisg
ICAgICAgICAgICBlbGVtcyA9IHNlZWQgfHwgbXVsdGlwbGVDb250ZXh0cyggc2VsZWN0b3IgfHwg
IioiLCBjb250ZXh0Lm5vZGVUeXBlID8gWyBjb250ZXh0IF0gOiBjb250ZXh0LCBbXSApLAorCisg
ICAgICAgICAgICAvLyBQcmVmaWx0ZXIgdG8gZ2V0IG1hdGNoZXIgaW5wdXQsIHByZXNlcnZpbmcg
YSBtYXAgZm9yIHNlZWQtcmVzdWx0cyBzeW5jaHJvbml6YXRpb24KKyAgICAgICAgICAgIG1hdGNo
ZXJJbiA9IHByZUZpbHRlciAmJiAoIHNlZWQgfHwgIXNlbGVjdG9yICkgPworICAgICAgICAgICAg
ICAgIGNvbmRlbnNlKCBlbGVtcywgcHJlTWFwLCBwcmVGaWx0ZXIsIGNvbnRleHQsIHhtbCApIDoK
KyAgICAgICAgICAgICAgICBlbGVtcywKKworICAgICAgICAgICAgbWF0Y2hlck91dCA9IG1hdGNo
ZXIgPworICAgICAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgYSBwb3N0RmluZGVyLCBvciBmaWx0
ZXJlZCBzZWVkLCBvciBub24tc2VlZCBwb3N0RmlsdGVyIG9yIHByZWV4aXN0aW5nIHJlc3VsdHMs
CisgICAgICAgICAgICAgICAgcG9zdEZpbmRlciB8fCAoIHNlZWQgPyBwcmVGaWx0ZXIgOiBwcmVl
eGlzdGluZyB8fCBwb3N0RmlsdGVyICkgPworCisgICAgICAgICAgICAgICAgICAgIC8vIC4uLmlu
dGVybWVkaWF0ZSBwcm9jZXNzaW5nIGlzIG5lY2Vzc2FyeQorICAgICAgICAgICAgICAgICAgICBb
XSA6CisKKyAgICAgICAgICAgICAgICAgICAgLy8gLi4ub3RoZXJ3aXNlIHVzZSByZXN1bHRzIGRp
cmVjdGx5CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMgOgorICAgICAgICAgICAgICAgIG1h
dGNoZXJJbjsKKworICAgICAgICAvLyBGaW5kIHByaW1hcnkgbWF0Y2hlcworICAgICAgICBpZiAo
IG1hdGNoZXIgKSB7CisgICAgICAgICAgICBtYXRjaGVyKCBtYXRjaGVySW4sIG1hdGNoZXJPdXQs
IGNvbnRleHQsIHhtbCApOworICAgICAgICB9CisKKyAgICAgICAgLy8gQXBwbHkgcG9zdEZpbHRl
cgorICAgICAgICBpZiAoIHBvc3RGaWx0ZXIgKSB7CisgICAgICAgICAgICB0ZW1wID0gY29uZGVu
c2UoIG1hdGNoZXJPdXQsIHBvc3RNYXAgKTsKKyAgICAgICAgICAgIHBvc3RGaWx0ZXIoIHRlbXAs
IFtdLCBjb250ZXh0LCB4bWwgKTsKKworICAgICAgICAgICAgLy8gVW4tbWF0Y2ggZmFpbGluZyBl
bGVtZW50cyBieSBtb3ZpbmcgdGhlbSBiYWNrIHRvIG1hdGNoZXJJbgorICAgICAgICAgICAgaSA9
IHRlbXAubGVuZ3RoOworICAgICAgICAgICAgd2hpbGUgKCBpLS0gKSB7CisgICAgICAgICAgICAg
ICAgaWYgKCAoZWxlbSA9IHRlbXBbaV0pICkgeworICAgICAgICAgICAgICAgICAgICBtYXRjaGVy
T3V0WyBwb3N0TWFwW2ldIF0gPSAhKG1hdGNoZXJJblsgcG9zdE1hcFtpXSBdID0gZWxlbSk7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYg
KCBzZWVkICkgeworICAgICAgICAgICAgaWYgKCBwb3N0RmluZGVyIHx8IHByZUZpbHRlciApIHsK
KyAgICAgICAgICAgICAgICBpZiAoIHBvc3RGaW5kZXIgKSB7CisgICAgICAgICAgICAgICAgICAg
IC8vIEdldCB0aGUgZmluYWwgbWF0Y2hlck91dCBieSBjb25kZW5zaW5nIHRoaXMgaW50ZXJtZWRp
YXRlIGludG8gcG9zdEZpbmRlciBjb250ZXh0cworICAgICAgICAgICAgICAgICAgICB0ZW1wID0g
W107CisgICAgICAgICAgICAgICAgICAgIGkgPSBtYXRjaGVyT3V0Lmxlbmd0aDsKKyAgICAgICAg
ICAgICAgICAgICAgd2hpbGUgKCBpLS0gKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
IChlbGVtID0gbWF0Y2hlck91dFtpXSkgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gUmVzdG9yZSBtYXRjaGVySW4gc2luY2UgZWxlbSBpcyBub3QgeWV0IGEgZmluYWwgbWF0Y2gK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wLnB1c2goIChtYXRjaGVySW5baV0gPSBl
bGVtKSApOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgIHBvc3RGaW5kZXIoIG51bGwsIChtYXRjaGVyT3V0ID0gW10p
LCB0ZW1wLCB4bWwgKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBN
b3ZlIG1hdGNoZWQgZWxlbWVudHMgZnJvbSBzZWVkIHRvIHJlc3VsdHMgdG8ga2VlcCB0aGVtIHN5
bmNocm9uaXplZAorICAgICAgICAgICAgICAgIGkgPSBtYXRjaGVyT3V0Lmxlbmd0aDsKKyAgICAg
ICAgICAgICAgICB3aGlsZSAoIGktLSApIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCAoZWxl
bSA9IG1hdGNoZXJPdXRbaV0pICYmCisgICAgICAgICAgICAgICAgICAgICAgICAodGVtcCA9IHBv
c3RGaW5kZXIgPyBpbmRleE9mKCBzZWVkLCBlbGVtICkgOiBwcmVNYXBbaV0pID4gLTEgKSB7CisK
KyAgICAgICAgICAgICAgICAgICAgICAgIHNlZWRbdGVtcF0gPSAhKHJlc3VsdHNbdGVtcF0gPSBl
bGVtKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKworICAgICAgICAvLyBBZGQgZWxlbWVudHMgdG8gcmVzdWx0cywgdGhyb3VnaCBwb3N0
RmluZGVyIGlmIGRlZmluZWQKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1hdGNoZXJP
dXQgPSBjb25kZW5zZSgKKyAgICAgICAgICAgICAgICBtYXRjaGVyT3V0ID09PSByZXN1bHRzID8K
KyAgICAgICAgICAgICAgICAgICAgbWF0Y2hlck91dC5zcGxpY2UoIHByZWV4aXN0aW5nLCBtYXRj
aGVyT3V0Lmxlbmd0aCApIDoKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2hlck91dAorICAgICAg
ICAgICAgKTsKKyAgICAgICAgICAgIGlmICggcG9zdEZpbmRlciApIHsKKyAgICAgICAgICAgICAg
ICBwb3N0RmluZGVyKCBudWxsLCByZXN1bHRzLCBtYXRjaGVyT3V0LCB4bWwgKTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcHVzaC5hcHBseSggcmVzdWx0cywgbWF0Y2hl
ck91dCApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSk7Cit9CisKK2Z1bmN0aW9u
IG1hdGNoZXJGcm9tVG9rZW5zKCB0b2tlbnMgKSB7CisgICAgdmFyIGNoZWNrQ29udGV4dCwgbWF0
Y2hlciwgaiwKKyAgICAgICAgbGVuID0gdG9rZW5zLmxlbmd0aCwKKyAgICAgICAgbGVhZGluZ1Jl
bGF0aXZlID0gRXhwci5yZWxhdGl2ZVsgdG9rZW5zWzBdLnR5cGUgXSwKKyAgICAgICAgaW1wbGlj
aXRSZWxhdGl2ZSA9IGxlYWRpbmdSZWxhdGl2ZSB8fCBFeHByLnJlbGF0aXZlWyIgIl0sCisgICAg
ICAgIGkgPSBsZWFkaW5nUmVsYXRpdmUgPyAxIDogMCwKKworICAgICAgICAvLyBUaGUgZm91bmRh
dGlvbmFsIG1hdGNoZXIgZW5zdXJlcyB0aGF0IGVsZW1lbnRzIGFyZSByZWFjaGFibGUgZnJvbSB0
b3AtbGV2ZWwgY29udGV4dChzKQorICAgICAgICBtYXRjaENvbnRleHQgPSBhZGRDb21iaW5hdG9y
KCBmdW5jdGlvbiggZWxlbSApIHsKKyAgICAgICAgICAgIHJldHVybiBlbGVtID09PSBjaGVja0Nv
bnRleHQ7CisgICAgICAgIH0sIGltcGxpY2l0UmVsYXRpdmUsIHRydWUgKSwKKyAgICAgICAgbWF0
Y2hBbnlDb250ZXh0ID0gYWRkQ29tYmluYXRvciggZnVuY3Rpb24oIGVsZW0gKSB7CisgICAgICAg
ICAgICByZXR1cm4gaW5kZXhPZiggY2hlY2tDb250ZXh0LCBlbGVtICkgPiAtMTsKKyAgICAgICAg
fSwgaW1wbGljaXRSZWxhdGl2ZSwgdHJ1ZSApLAorICAgICAgICBtYXRjaGVycyA9IFsgZnVuY3Rp
b24oIGVsZW0sIGNvbnRleHQsIHhtbCApIHsKKyAgICAgICAgICAgIHZhciByZXQgPSAoICFsZWFk
aW5nUmVsYXRpdmUgJiYgKCB4bWwgfHwgY29udGV4dCAhPT0gb3V0ZXJtb3N0Q29udGV4dCApICkg
fHwgKAorICAgICAgICAgICAgICAgIChjaGVja0NvbnRleHQgPSBjb250ZXh0KS5ub2RlVHlwZSA/
CisgICAgICAgICAgICAgICAgICAgIG1hdGNoQ29udGV4dCggZWxlbSwgY29udGV4dCwgeG1sICkg
OgorICAgICAgICAgICAgICAgICAgICBtYXRjaEFueUNvbnRleHQoIGVsZW0sIGNvbnRleHQsIHht
bCApICk7CisgICAgICAgICAgICAvLyBBdm9pZCBoYW5naW5nIG9udG8gZWxlbWVudCAoaXNzdWUg
IzI5OSkKKyAgICAgICAgICAgIGNoZWNrQ29udGV4dCA9IG51bGw7CisgICAgICAgICAgICByZXR1
cm4gcmV0OworICAgICAgICB9IF07CisKKyAgICBmb3IgKCA7IGkgPCBsZW47IGkrKyApIHsKKyAg
ICAgICAgaWYgKCAobWF0Y2hlciA9IEV4cHIucmVsYXRpdmVbIHRva2Vuc1tpXS50eXBlIF0pICkg
eworICAgICAgICAgICAgbWF0Y2hlcnMgPSBbIGFkZENvbWJpbmF0b3IoZWxlbWVudE1hdGNoZXIo
IG1hdGNoZXJzICksIG1hdGNoZXIpIF07CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBt
YXRjaGVyID0gRXhwci5maWx0ZXJbIHRva2Vuc1tpXS50eXBlIF0uYXBwbHkoIG51bGwsIHRva2Vu
c1tpXS5tYXRjaGVzICk7CisKKyAgICAgICAgICAgIC8vIFJldHVybiBzcGVjaWFsIHVwb24gc2Vl
aW5nIGEgcG9zaXRpb25hbCBtYXRjaGVyCisgICAgICAgICAgICBpZiAoIG1hdGNoZXJbIGV4cGFu
ZG8gXSApIHsKKyAgICAgICAgICAgICAgICAvLyBGaW5kIHRoZSBuZXh0IHJlbGF0aXZlIG9wZXJh
dG9yIChpZiBhbnkpIGZvciBwcm9wZXIgaGFuZGxpbmcKKyAgICAgICAgICAgICAgICBqID0gKytp
OworICAgICAgICAgICAgICAgIGZvciAoIDsgaiA8IGxlbjsgaisrICkgeworICAgICAgICAgICAg
ICAgICAgICBpZiAoIEV4cHIucmVsYXRpdmVbIHRva2Vuc1tqXS50eXBlIF0gKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2V0TWF0Y2hlcigKKyAgICAgICAgICAg
ICAgICAgICAgaSA+IDEgJiYgZWxlbWVudE1hdGNoZXIoIG1hdGNoZXJzICksCisgICAgICAgICAg
ICAgICAgICAgIGkgPiAxICYmIHRvU2VsZWN0b3IoCisgICAgICAgICAgICAgICAgICAgICAgICAv
LyBJZiB0aGUgcHJlY2VkaW5nIHRva2VuIHdhcyBhIGRlc2NlbmRhbnQgY29tYmluYXRvciwgaW5z
ZXJ0IGFuIGltcGxpY2l0IGFueS1lbGVtZW50IGAqYAorICAgICAgICAgICAgICAgICAgICAgICAg
dG9rZW5zLnNsaWNlKCAwLCBpIC0gMSApLmNvbmNhdCh7IHZhbHVlOiB0b2tlbnNbIGkgLSAyIF0u
dHlwZSA9PT0gIiAiID8gIioiIDogIiIgfSkKKyAgICAgICAgICAgICAgICAgICAgKS5yZXBsYWNl
KCBydHJpbSwgIiQxIiApLAorICAgICAgICAgICAgICAgICAgICBtYXRjaGVyLAorICAgICAgICAg
ICAgICAgICAgICBpIDwgaiAmJiBtYXRjaGVyRnJvbVRva2VucyggdG9rZW5zLnNsaWNlKCBpLCBq
ICkgKSwKKyAgICAgICAgICAgICAgICAgICAgaiA8IGxlbiAmJiBtYXRjaGVyRnJvbVRva2Vucygg
KHRva2VucyA9IHRva2Vucy5zbGljZSggaiApKSApLAorICAgICAgICAgICAgICAgICAgICBqIDwg
bGVuICYmIHRvU2VsZWN0b3IoIHRva2VucyApCisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIG1hdGNoZXJzLnB1c2goIG1hdGNoZXIgKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIHJldHVybiBlbGVtZW50TWF0Y2hlciggbWF0Y2hlcnMgKTsKK30KKworZnVu
Y3Rpb24gbWF0Y2hlckZyb21Hcm91cE1hdGNoZXJzKCBlbGVtZW50TWF0Y2hlcnMsIHNldE1hdGNo
ZXJzICkgeworICAgIHZhciBieVNldCA9IHNldE1hdGNoZXJzLmxlbmd0aCA+IDAsCisgICAgICAg
IGJ5RWxlbWVudCA9IGVsZW1lbnRNYXRjaGVycy5sZW5ndGggPiAwLAorICAgICAgICBzdXBlck1h
dGNoZXIgPSBmdW5jdGlvbiggc2VlZCwgY29udGV4dCwgeG1sLCByZXN1bHRzLCBvdXRlcm1vc3Qg
KSB7CisgICAgICAgICAgICB2YXIgZWxlbSwgaiwgbWF0Y2hlciwKKyAgICAgICAgICAgICAgICBt
YXRjaGVkQ291bnQgPSAwLAorICAgICAgICAgICAgICAgIGkgPSAiMCIsCisgICAgICAgICAgICAg
ICAgdW5tYXRjaGVkID0gc2VlZCAmJiBbXSwKKyAgICAgICAgICAgICAgICBzZXRNYXRjaGVkID0g
W10sCisgICAgICAgICAgICAgICAgY29udGV4dEJhY2t1cCA9IG91dGVybW9zdENvbnRleHQsCisg
ICAgICAgICAgICAgICAgLy8gV2UgbXVzdCBhbHdheXMgaGF2ZSBlaXRoZXIgc2VlZCBlbGVtZW50
cyBvciBvdXRlcm1vc3QgY29udGV4dAorICAgICAgICAgICAgICAgIGVsZW1zID0gc2VlZCB8fCBi
eUVsZW1lbnQgJiYgRXhwci5maW5kWyJUQUciXSggIioiLCBvdXRlcm1vc3QgKSwKKyAgICAgICAg
ICAgICAgICAvLyBVc2UgaW50ZWdlciBkaXJydW5zIGlmZiB0aGlzIGlzIHRoZSBvdXRlcm1vc3Qg
bWF0Y2hlcgorICAgICAgICAgICAgICAgIGRpcnJ1bnNVbmlxdWUgPSAoZGlycnVucyArPSBjb250
ZXh0QmFja3VwID09IG51bGwgPyAxIDogTWF0aC5yYW5kb20oKSB8fCAwLjEpLAorICAgICAgICAg
ICAgICAgIGxlbiA9IGVsZW1zLmxlbmd0aDsKKworICAgICAgICAgICAgaWYgKCBvdXRlcm1vc3Qg
KSB7CisgICAgICAgICAgICAgICAgb3V0ZXJtb3N0Q29udGV4dCA9IGNvbnRleHQgPT09IGRvY3Vt
ZW50IHx8IGNvbnRleHQgfHwgb3V0ZXJtb3N0OworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAvLyBBZGQgZWxlbWVudHMgcGFzc2luZyBlbGVtZW50TWF0Y2hlcnMgZGlyZWN0bHkgdG8gcmVz
dWx0cworICAgICAgICAgICAgLy8gU3VwcG9ydDogSUU8OSwgU2FmYXJpCisgICAgICAgICAgICAv
LyBUb2xlcmF0ZSBOb2RlTGlzdCBwcm9wZXJ0aWVzIChJRTogImxlbmd0aCI7IFNhZmFyaTogPG51
bWJlcj4pIG1hdGNoaW5nIGVsZW1lbnRzIGJ5IGlkCisgICAgICAgICAgICBmb3IgKCA7IGkgIT09
IGxlbiAmJiAoZWxlbSA9IGVsZW1zW2ldKSAhPSBudWxsOyBpKysgKSB7CisgICAgICAgICAgICAg
ICAgaWYgKCBieUVsZW1lbnQgJiYgZWxlbSApIHsKKyAgICAgICAgICAgICAgICAgICAgaiA9IDA7
CisgICAgICAgICAgICAgICAgICAgIGlmICggIWNvbnRleHQgJiYgZWxlbS5vd25lckRvY3VtZW50
ICE9PSBkb2N1bWVudCApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNldERvY3VtZW50KCBl
bGVtICk7CisgICAgICAgICAgICAgICAgICAgICAgICB4bWwgPSAhZG9jdW1lbnRJc0hUTUw7Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCAobWF0Y2hl
ciA9IGVsZW1lbnRNYXRjaGVyc1tqKytdKSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICggbWF0Y2hlciggZWxlbSwgY29udGV4dCB8fCBkb2N1bWVudCwgeG1sKSApIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXN1bHRzLnB1c2goIGVsZW0gKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoIG91dGVybW9zdCApIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGRpcnJ1bnMgPSBkaXJydW5zVW5pcXVlOworICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gVHJh
Y2sgdW5tYXRjaGVkIGVsZW1lbnRzIGZvciBzZXQgZmlsdGVycworICAgICAgICAgICAgICAgIGlm
ICggYnlTZXQgKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFRoZXkgd2lsbCBoYXZlIGdvbmUg
dGhyb3VnaCBhbGwgcG9zc2libGUgbWF0Y2hlcnMKKyAgICAgICAgICAgICAgICAgICAgaWYgKCAo
ZWxlbSA9ICFtYXRjaGVyICYmIGVsZW0pICkgeworICAgICAgICAgICAgICAgICAgICAgICAgbWF0
Y2hlZENvdW50LS07CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAg
ICAvLyBMZW5ndGhlbiB0aGUgYXJyYXkgZm9yIGV2ZXJ5IGVsZW1lbnQsIG1hdGNoZWQgb3Igbm90
CisgICAgICAgICAgICAgICAgICAgIGlmICggc2VlZCApIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHVubWF0Y2hlZC5wdXNoKCBlbGVtICk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIGBpYCBpcyBub3cg
dGhlIGNvdW50IG9mIGVsZW1lbnRzIHZpc2l0ZWQgYWJvdmUsIGFuZCBhZGRpbmcgaXQgdG8gYG1h
dGNoZWRDb3VudGAKKyAgICAgICAgICAgIC8vIG1ha2VzIHRoZSBsYXR0ZXIgbm9ubmVnYXRpdmUu
CisgICAgICAgICAgICBtYXRjaGVkQ291bnQgKz0gaTsKKworICAgICAgICAgICAgLy8gQXBwbHkg
c2V0IGZpbHRlcnMgdG8gdW5tYXRjaGVkIGVsZW1lbnRzCisgICAgICAgICAgICAvLyBOT1RFOiBU
aGlzIGNhbiBiZSBza2lwcGVkIGlmIHRoZXJlIGFyZSBubyB1bm1hdGNoZWQgZWxlbWVudHMgKGku
ZS4sIGBtYXRjaGVkQ291bnRgCisgICAgICAgICAgICAvLyBlcXVhbHMgYGlgKSwgdW5sZXNzIHdl
IGRpZG4ndCB2aXNpdCBfYW55XyBlbGVtZW50cyBpbiB0aGUgYWJvdmUgbG9vcCBiZWNhdXNlIHdl
IGhhdmUKKyAgICAgICAgICAgIC8vIG5vIGVsZW1lbnQgbWF0Y2hlcnMgYW5kIG5vIHNlZWQuCisg
ICAgICAgICAgICAvLyBJbmNyZW1lbnRpbmcgYW4gaW5pdGlhbGx5LXN0cmluZyAiMCIgYGlgIGFs
bG93cyBgaWAgdG8gcmVtYWluIGEgc3RyaW5nIG9ubHkgaW4gdGhhdAorICAgICAgICAgICAgLy8g
Y2FzZSwgd2hpY2ggd2lsbCByZXN1bHQgaW4gYSAiMDAiIGBtYXRjaGVkQ291bnRgIHRoYXQgZGlm
ZmVycyBmcm9tIGBpYCBidXQgaXMgYWxzbworICAgICAgICAgICAgLy8gbnVtZXJpY2FsbHkgemVy
by4KKyAgICAgICAgICAgIGlmICggYnlTZXQgJiYgaSAhPT0gbWF0Y2hlZENvdW50ICkgeworICAg
ICAgICAgICAgICAgIGogPSAwOworICAgICAgICAgICAgICAgIHdoaWxlICggKG1hdGNoZXIgPSBz
ZXRNYXRjaGVyc1tqKytdKSApIHsKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2hlciggdW5tYXRj
aGVkLCBzZXRNYXRjaGVkLCBjb250ZXh0LCB4bWwgKTsKKyAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICBpZiAoIHNlZWQgKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFJlaW50
ZWdyYXRlIGVsZW1lbnQgbWF0Y2hlcyB0byBlbGltaW5hdGUgdGhlIG5lZWQgZm9yIHNvcnRpbmcK
KyAgICAgICAgICAgICAgICAgICAgaWYgKCBtYXRjaGVkQ291bnQgPiAwICkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgd2hpbGUgKCBpLS0gKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCAhKHVubWF0Y2hlZFtpXSB8fCBzZXRNYXRjaGVkW2ldKSApIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2V0TWF0Y2hlZFtpXSA9IHBvcC5jYWxsKCByZXN1bHRzICk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgLy8gRGlzY2Fy
ZCBpbmRleCBwbGFjZWhvbGRlciB2YWx1ZXMgdG8gZ2V0IG9ubHkgYWN0dWFsIG1hdGNoZXMKKyAg
ICAgICAgICAgICAgICAgICAgc2V0TWF0Y2hlZCA9IGNvbmRlbnNlKCBzZXRNYXRjaGVkICk7Cisg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gQWRkIG1hdGNoZXMgdG8gcmVz
dWx0cworICAgICAgICAgICAgICAgIHB1c2guYXBwbHkoIHJlc3VsdHMsIHNldE1hdGNoZWQgKTsK
KworICAgICAgICAgICAgICAgIC8vIFNlZWRsZXNzIHNldCBtYXRjaGVzIHN1Y2NlZWRpbmcgbXVs
dGlwbGUgc3VjY2Vzc2Z1bCBtYXRjaGVycyBzdGlwdWxhdGUgc29ydGluZworICAgICAgICAgICAg
ICAgIGlmICggb3V0ZXJtb3N0ICYmICFzZWVkICYmIHNldE1hdGNoZWQubGVuZ3RoID4gMCAmJgor
ICAgICAgICAgICAgICAgICAgICAoIG1hdGNoZWRDb3VudCArIHNldE1hdGNoZXJzLmxlbmd0aCAp
ID4gMSApIHsKKworICAgICAgICAgICAgICAgICAgICBTaXp6bGUudW5pcXVlU29ydCggcmVzdWx0
cyApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8g
T3ZlcnJpZGUgbWFuaXB1bGF0aW9uIG9mIGdsb2JhbHMgYnkgbmVzdGVkIG1hdGNoZXJzCisgICAg
ICAgICAgICBpZiAoIG91dGVybW9zdCApIHsKKyAgICAgICAgICAgICAgICBkaXJydW5zID0gZGly
cnVuc1VuaXF1ZTsKKyAgICAgICAgICAgICAgICBvdXRlcm1vc3RDb250ZXh0ID0gY29udGV4dEJh
Y2t1cDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHVubWF0Y2hlZDsKKyAg
ICAgICAgfTsKKworICAgIHJldHVybiBieVNldCA/CisgICAgICAgIG1hcmtGdW5jdGlvbiggc3Vw
ZXJNYXRjaGVyICkgOgorICAgICAgICBzdXBlck1hdGNoZXI7Cit9CisKK2NvbXBpbGUgPSBTaXp6
bGUuY29tcGlsZSA9IGZ1bmN0aW9uKCBzZWxlY3RvciwgbWF0Y2ggLyogSW50ZXJuYWwgVXNlIE9u
bHkgKi8gKSB7CisgICAgdmFyIGksCisgICAgICAgIHNldE1hdGNoZXJzID0gW10sCisgICAgICAg
IGVsZW1lbnRNYXRjaGVycyA9IFtdLAorICAgICAgICBjYWNoZWQgPSBjb21waWxlckNhY2hlWyBz
ZWxlY3RvciArICIgIiBdOworCisgICAgaWYgKCAhY2FjaGVkICkgeworICAgICAgICAvLyBHZW5l
cmF0ZSBhIGZ1bmN0aW9uIG9mIHJlY3Vyc2l2ZSBmdW5jdGlvbnMgdGhhdCBjYW4gYmUgdXNlZCB0
byBjaGVjayBlYWNoIGVsZW1lbnQKKyAgICAgICAgaWYgKCAhbWF0Y2ggKSB7CisgICAgICAgICAg
ICBtYXRjaCA9IHRva2VuaXplKCBzZWxlY3RvciApOworICAgICAgICB9CisgICAgICAgIGkgPSBt
YXRjaC5sZW5ndGg7CisgICAgICAgIHdoaWxlICggaS0tICkgeworICAgICAgICAgICAgY2FjaGVk
ID0gbWF0Y2hlckZyb21Ub2tlbnMoIG1hdGNoW2ldICk7CisgICAgICAgICAgICBpZiAoIGNhY2hl
ZFsgZXhwYW5kbyBdICkgeworICAgICAgICAgICAgICAgIHNldE1hdGNoZXJzLnB1c2goIGNhY2hl
ZCApOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBlbGVtZW50TWF0Y2hl
cnMucHVzaCggY2FjaGVkICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAv
LyBDYWNoZSB0aGUgY29tcGlsZWQgZnVuY3Rpb24KKyAgICAgICAgY2FjaGVkID0gY29tcGlsZXJD
YWNoZSggc2VsZWN0b3IsIG1hdGNoZXJGcm9tR3JvdXBNYXRjaGVycyggZWxlbWVudE1hdGNoZXJz
LCBzZXRNYXRjaGVycyApICk7CisKKyAgICAgICAgLy8gU2F2ZSBzZWxlY3RvciBhbmQgdG9rZW5p
emF0aW9uCisgICAgICAgIGNhY2hlZC5zZWxlY3RvciA9IHNlbGVjdG9yOworICAgIH0KKyAgICBy
ZXR1cm4gY2FjaGVkOworfTsKKworLyoqCisgKiBBIGxvdy1sZXZlbCBzZWxlY3Rpb24gZnVuY3Rp
b24gdGhhdCB3b3JrcyB3aXRoIFNpenpsZSdzIGNvbXBpbGVkCisgKiAgc2VsZWN0b3IgZnVuY3Rp
b25zCisgKiBAcGFyYW0ge1N0cmluZ3xGdW5jdGlvbn0gc2VsZWN0b3IgQSBzZWxlY3RvciBvciBh
IHByZS1jb21waWxlZAorICogIHNlbGVjdG9yIGZ1bmN0aW9uIGJ1aWx0IHdpdGggU2l6emxlLmNv
bXBpbGUKKyAqIEBwYXJhbSB7RWxlbWVudH0gY29udGV4dAorICogQHBhcmFtIHtBcnJheX0gW3Jl
c3VsdHNdCisgKiBAcGFyYW0ge0FycmF5fSBbc2VlZF0gQSBzZXQgb2YgZWxlbWVudHMgdG8gbWF0
Y2ggYWdhaW5zdAorICovCitzZWxlY3QgPSBTaXp6bGUuc2VsZWN0ID0gZnVuY3Rpb24oIHNlbGVj
dG9yLCBjb250ZXh0LCByZXN1bHRzLCBzZWVkICkgeworICAgIHZhciBpLCB0b2tlbnMsIHRva2Vu
LCB0eXBlLCBmaW5kLAorICAgICAgICBjb21waWxlZCA9IHR5cGVvZiBzZWxlY3RvciA9PT0gImZ1
bmN0aW9uIiAmJiBzZWxlY3RvciwKKyAgICAgICAgbWF0Y2ggPSAhc2VlZCAmJiB0b2tlbml6ZSgg
KHNlbGVjdG9yID0gY29tcGlsZWQuc2VsZWN0b3IgfHwgc2VsZWN0b3IpICk7CisKKyAgICByZXN1
bHRzID0gcmVzdWx0cyB8fCBbXTsKKworICAgIC8vIFRyeSB0byBtaW5pbWl6ZSBvcGVyYXRpb25z
IGlmIHRoZXJlIGlzIG9ubHkgb25lIHNlbGVjdG9yIGluIHRoZSBsaXN0IGFuZCBubyBzZWVkCisg
ICAgLy8gKHRoZSBsYXR0ZXIgb2Ygd2hpY2ggZ3VhcmFudGVlcyB1cyBjb250ZXh0KQorICAgIGlm
ICggbWF0Y2gubGVuZ3RoID09PSAxICkgeworCisgICAgICAgIC8vIFJlZHVjZSBjb250ZXh0IGlm
IHRoZSBsZWFkaW5nIGNvbXBvdW5kIHNlbGVjdG9yIGlzIGFuIElECisgICAgICAgIHRva2VucyA9
IG1hdGNoWzBdID0gbWF0Y2hbMF0uc2xpY2UoIDAgKTsKKyAgICAgICAgaWYgKCB0b2tlbnMubGVu
Z3RoID4gMiAmJiAodG9rZW4gPSB0b2tlbnNbMF0pLnR5cGUgPT09ICJJRCIgJiYKKyAgICAgICAg
ICAgICAgICBjb250ZXh0Lm5vZGVUeXBlID09PSA5ICYmIGRvY3VtZW50SXNIVE1MICYmIEV4cHIu
cmVsYXRpdmVbIHRva2Vuc1sxXS50eXBlIF0gKSB7CisKKyAgICAgICAgICAgIGNvbnRleHQgPSAo
IEV4cHIuZmluZFsiSUQiXSggdG9rZW4ubWF0Y2hlc1swXS5yZXBsYWNlKHJ1bmVzY2FwZSwgZnVu
ZXNjYXBlKSwgY29udGV4dCApIHx8IFtdIClbMF07CisgICAgICAgICAgICBpZiAoICFjb250ZXh0
ICkgeworICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRzOworCisgICAgICAgICAgICAvLyBQ
cmVjb21waWxlZCBtYXRjaGVycyB3aWxsIHN0aWxsIHZlcmlmeSBhbmNlc3RyeSwgc28gc3RlcCB1
cCBhIGxldmVsCisgICAgICAgICAgICB9IGVsc2UgaWYgKCBjb21waWxlZCApIHsKKyAgICAgICAg
ICAgICAgICBjb250ZXh0ID0gY29udGV4dC5wYXJlbnROb2RlOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBzZWxlY3RvciA9IHNlbGVjdG9yLnNsaWNlKCB0b2tlbnMuc2hpZnQoKS52YWx1
ZS5sZW5ndGggKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZldGNoIGEgc2VlZCBzZXQgZm9y
IHJpZ2h0LXRvLWxlZnQgbWF0Y2hpbmcKKyAgICAgICAgaSA9IG1hdGNoRXhwclsibmVlZHNDb250
ZXh0Il0udGVzdCggc2VsZWN0b3IgKSA/IDAgOiB0b2tlbnMubGVuZ3RoOworICAgICAgICB3aGls
ZSAoIGktLSApIHsKKyAgICAgICAgICAgIHRva2VuID0gdG9rZW5zW2ldOworCisgICAgICAgICAg
ICAvLyBBYm9ydCBpZiB3ZSBoaXQgYSBjb21iaW5hdG9yCisgICAgICAgICAgICBpZiAoIEV4cHIu
cmVsYXRpdmVbICh0eXBlID0gdG9rZW4udHlwZSkgXSApIHsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICggKGZpbmQgPSBFeHByLmZpbmRbIHR5
cGUgXSkgKSB7CisgICAgICAgICAgICAgICAgLy8gU2VhcmNoLCBleHBhbmRpbmcgY29udGV4dCBm
b3IgbGVhZGluZyBzaWJsaW5nIGNvbWJpbmF0b3JzCisgICAgICAgICAgICAgICAgaWYgKCAoc2Vl
ZCA9IGZpbmQoCisgICAgICAgICAgICAgICAgICAgIHRva2VuLm1hdGNoZXNbMF0ucmVwbGFjZSgg
cnVuZXNjYXBlLCBmdW5lc2NhcGUgKSwKKyAgICAgICAgICAgICAgICAgICAgcnNpYmxpbmcudGVz
dCggdG9rZW5zWzBdLnR5cGUgKSAmJiB0ZXN0Q29udGV4dCggY29udGV4dC5wYXJlbnROb2RlICkg
fHwgY29udGV4dAorICAgICAgICAgICAgICAgICkpICkgeworCisgICAgICAgICAgICAgICAgICAg
IC8vIElmIHNlZWQgaXMgZW1wdHkgb3Igbm8gdG9rZW5zIHJlbWFpbiwgd2UgY2FuIHJldHVybiBl
YXJseQorICAgICAgICAgICAgICAgICAgICB0b2tlbnMuc3BsaWNlKCBpLCAxICk7CisgICAgICAg
ICAgICAgICAgICAgIHNlbGVjdG9yID0gc2VlZC5sZW5ndGggJiYgdG9TZWxlY3RvciggdG9rZW5z
ICk7CisgICAgICAgICAgICAgICAgICAgIGlmICggIXNlbGVjdG9yICkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgcHVzaC5hcHBseSggcmVzdWx0cywgc2VlZCApOworICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdHM7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBDb21waWxlIGFuZCBleGVjdXRlIGEgZmlsdGVyaW5n
IGZ1bmN0aW9uIGlmIG9uZSBpcyBub3QgcHJvdmlkZWQKKyAgICAvLyBQcm92aWRlIGBtYXRjaGAg
dG8gYXZvaWQgcmV0b2tlbml6YXRpb24gaWYgd2UgbW9kaWZpZWQgdGhlIHNlbGVjdG9yIGFib3Zl
CisgICAgKCBjb21waWxlZCB8fCBjb21waWxlKCBzZWxlY3RvciwgbWF0Y2ggKSApKAorICAgICAg
ICBzZWVkLAorICAgICAgICBjb250ZXh0LAorICAgICAgICAhZG9jdW1lbnRJc0hUTUwsCisgICAg
ICAgIHJlc3VsdHMsCisgICAgICAgICFjb250ZXh0IHx8IHJzaWJsaW5nLnRlc3QoIHNlbGVjdG9y
ICkgJiYgdGVzdENvbnRleHQoIGNvbnRleHQucGFyZW50Tm9kZSApIHx8IGNvbnRleHQKKyAgICAp
OworICAgIHJldHVybiByZXN1bHRzOworfTsKKworLy8gT25lLXRpbWUgYXNzaWdubWVudHMKKwor
Ly8gU29ydCBzdGFiaWxpdHkKK3N1cHBvcnQuc29ydFN0YWJsZSA9IGV4cGFuZG8uc3BsaXQoIiIp
LnNvcnQoIHNvcnRPcmRlciApLmpvaW4oIiIpID09PSBleHBhbmRvOworCisvLyBTdXBwb3J0OiBD
aHJvbWUgMTQtMzUrCisvLyBBbHdheXMgYXNzdW1lIGR1cGxpY2F0ZXMgaWYgdGhleSBhcmVuJ3Qg
cGFzc2VkIHRvIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9uCitzdXBwb3J0LmRldGVjdER1cGxpY2F0
ZXMgPSAhIWhhc0R1cGxpY2F0ZTsKKworLy8gSW5pdGlhbGl6ZSBhZ2FpbnN0IHRoZSBkZWZhdWx0
IGRvY3VtZW50CitzZXREb2N1bWVudCgpOworCisvLyBTdXBwb3J0OiBXZWJraXQ8NTM3LjMyIC0g
U2FmYXJpIDYuMC4zL0Nocm9tZSAyNSAoZml4ZWQgaW4gQ2hyb21lIDI3KQorLy8gRGV0YWNoZWQg
bm9kZXMgY29uZm91bmRpbmdseSBmb2xsb3cgKmVhY2ggb3RoZXIqCitzdXBwb3J0LnNvcnREZXRh
Y2hlZCA9IGFzc2VydChmdW5jdGlvbiggZWwgKSB7CisgICAgLy8gU2hvdWxkIHJldHVybiAxLCBi
dXQgcmV0dXJucyA0IChmb2xsb3dpbmcpCisgICAgcmV0dXJuIGVsLmNvbXBhcmVEb2N1bWVudFBv
c2l0aW9uKCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJmaWVsZHNldCIpICkgJiAxOworfSk7CisK
Ky8vIFN1cHBvcnQ6IElFPDgKKy8vIFByZXZlbnQgYXR0cmlidXRlL3Byb3BlcnR5ICJpbnRlcnBv
bGF0aW9uIgorLy8gaHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9tczUz
NjQyOSUyOFZTLjg1JTI5LmFzcHgKK2lmICggIWFzc2VydChmdW5jdGlvbiggZWwgKSB7CisgICAg
ZWwuaW5uZXJIVE1MID0gIjxhIGhyZWY9JyMnPjwvYT4iOworICAgIHJldHVybiBlbC5maXJzdENo
aWxkLmdldEF0dHJpYnV0ZSgiaHJlZiIpID09PSAiIyIgOworfSkgKSB7CisgICAgYWRkSGFuZGxl
KCAidHlwZXxocmVmfGhlaWdodHx3aWR0aCIsIGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBpc1hNTCAp
IHsKKyAgICAgICAgaWYgKCAhaXNYTUwgKSB7CisgICAgICAgICAgICByZXR1cm4gZWxlbS5nZXRB
dHRyaWJ1dGUoIG5hbWUsIG5hbWUudG9Mb3dlckNhc2UoKSA9PT0gInR5cGUiID8gMSA6IDIgKTsK
KyAgICAgICAgfQorICAgIH0pOworfQorCisvLyBTdXBwb3J0OiBJRTw5CisvLyBVc2UgZGVmYXVs
dFZhbHVlIGluIHBsYWNlIG9mIGdldEF0dHJpYnV0ZSgidmFsdWUiKQoraWYgKCAhc3VwcG9ydC5h
dHRyaWJ1dGVzIHx8ICFhc3NlcnQoZnVuY3Rpb24oIGVsICkgeworICAgIGVsLmlubmVySFRNTCA9
ICI8aW5wdXQvPiI7CisgICAgZWwuZmlyc3RDaGlsZC5zZXRBdHRyaWJ1dGUoICJ2YWx1ZSIsICIi
ICk7CisgICAgcmV0dXJuIGVsLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCAidmFsdWUiICkgPT09
ICIiOworfSkgKSB7CisgICAgYWRkSGFuZGxlKCAidmFsdWUiLCBmdW5jdGlvbiggZWxlbSwgbmFt
ZSwgaXNYTUwgKSB7CisgICAgICAgIGlmICggIWlzWE1MICYmIGVsZW0ubm9kZU5hbWUudG9Mb3dl
ckNhc2UoKSA9PT0gImlucHV0IiApIHsKKyAgICAgICAgICAgIHJldHVybiBlbGVtLmRlZmF1bHRW
YWx1ZTsKKyAgICAgICAgfQorICAgIH0pOworfQorCisvLyBTdXBwb3J0OiBJRTw5CisvLyBVc2Ug
Z2V0QXR0cmlidXRlTm9kZSB0byBmZXRjaCBib29sZWFucyB3aGVuIGdldEF0dHJpYnV0ZSBsaWVz
CitpZiAoICFhc3NlcnQoZnVuY3Rpb24oIGVsICkgeworICAgIHJldHVybiBlbC5nZXRBdHRyaWJ1
dGUoImRpc2FibGVkIikgPT0gbnVsbDsKK30pICkgeworICAgIGFkZEhhbmRsZSggYm9vbGVhbnMs
IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBpc1hNTCApIHsKKyAgICAgICAgdmFyIHZhbDsKKyAgICAg
ICAgaWYgKCAhaXNYTUwgKSB7CisgICAgICAgICAgICByZXR1cm4gZWxlbVsgbmFtZSBdID09PSB0
cnVlID8gbmFtZS50b0xvd2VyQ2FzZSgpIDoKKyAgICAgICAgICAgICAgICAgICAgKHZhbCA9IGVs
ZW0uZ2V0QXR0cmlidXRlTm9kZSggbmFtZSApKSAmJiB2YWwuc3BlY2lmaWVkID8KKyAgICAgICAg
ICAgICAgICAgICAgdmFsLnZhbHVlIDoKKyAgICAgICAgICAgICAgICBudWxsOworICAgICAgICB9
CisgICAgfSk7Cit9CisKK3JldHVybiBTaXp6bGU7CisKK30pKCB3aW5kb3cgKTsKKworCisKK2pR
dWVyeS5maW5kID0gU2l6emxlOworalF1ZXJ5LmV4cHIgPSBTaXp6bGUuc2VsZWN0b3JzOworCisv
LyBEZXByZWNhdGVkCitqUXVlcnkuZXhwclsgIjoiIF0gPSBqUXVlcnkuZXhwci5wc2V1ZG9zOwor
alF1ZXJ5LnVuaXF1ZVNvcnQgPSBqUXVlcnkudW5pcXVlID0gU2l6emxlLnVuaXF1ZVNvcnQ7Citq
UXVlcnkudGV4dCA9IFNpenpsZS5nZXRUZXh0OworalF1ZXJ5LmlzWE1MRG9jID0gU2l6emxlLmlz
WE1MOworalF1ZXJ5LmNvbnRhaW5zID0gU2l6emxlLmNvbnRhaW5zOworalF1ZXJ5LmVzY2FwZVNl
bGVjdG9yID0gU2l6emxlLmVzY2FwZTsKKworCisKKwordmFyIGRpciA9IGZ1bmN0aW9uKCBlbGVt
LCBkaXIsIHVudGlsICkgeworICAgIHZhciBtYXRjaGVkID0gW10sCisgICAgICAgIHRydW5jYXRl
ID0gdW50aWwgIT09IHVuZGVmaW5lZDsKKworICAgIHdoaWxlICggKCBlbGVtID0gZWxlbVsgZGly
IF0gKSAmJiBlbGVtLm5vZGVUeXBlICE9PSA5ICkgeworICAgICAgICBpZiAoIGVsZW0ubm9kZVR5
cGUgPT09IDEgKSB7CisgICAgICAgICAgICBpZiAoIHRydW5jYXRlICYmIGpRdWVyeSggZWxlbSAp
LmlzKCB1bnRpbCApICkgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgbWF0Y2hlZC5wdXNoKCBlbGVtICk7CisgICAgICAgIH0KKyAgICB9CisgICAg
cmV0dXJuIG1hdGNoZWQ7Cit9OworCisKK3ZhciBzaWJsaW5ncyA9IGZ1bmN0aW9uKCBuLCBlbGVt
ICkgeworICAgIHZhciBtYXRjaGVkID0gW107CisKKyAgICBmb3IgKCA7IG47IG4gPSBuLm5leHRT
aWJsaW5nICkgeworICAgICAgICBpZiAoIG4ubm9kZVR5cGUgPT09IDEgJiYgbiAhPT0gZWxlbSAp
IHsKKyAgICAgICAgICAgIG1hdGNoZWQucHVzaCggbiApOworICAgICAgICB9CisgICAgfQorCisg
ICAgcmV0dXJuIG1hdGNoZWQ7Cit9OworCisKK3ZhciBybmVlZHNDb250ZXh0ID0galF1ZXJ5LmV4
cHIubWF0Y2gubmVlZHNDb250ZXh0OworCit2YXIgcnNpbmdsZVRhZyA9ICggL148KFthLXpdW15c
L1wwPjpceDIwXHRcclxuXGZdKilbXHgyMFx0XHJcblxmXSpcLz8+KD86PFwvXDE+fCkkL2kgKTsK
KworCisKK3ZhciByaXNTaW1wbGUgPSAvXi5bXjojXFtcLixdKiQvOworCisvLyBJbXBsZW1lbnQg
dGhlIGlkZW50aWNhbCBmdW5jdGlvbmFsaXR5IGZvciBmaWx0ZXIgYW5kIG5vdAorZnVuY3Rpb24g
d2lubm93KCBlbGVtZW50cywgcXVhbGlmaWVyLCBub3QgKSB7CisgICAgaWYgKCBqUXVlcnkuaXNG
dW5jdGlvbiggcXVhbGlmaWVyICkgKSB7CisgICAgICAgIHJldHVybiBqUXVlcnkuZ3JlcCggZWxl
bWVudHMsIGZ1bmN0aW9uKCBlbGVtLCBpICkgeworICAgICAgICAgICAgcmV0dXJuICEhcXVhbGlm
aWVyLmNhbGwoIGVsZW0sIGksIGVsZW0gKSAhPT0gbm90OworICAgICAgICB9ICk7CisgICAgfQor
CisgICAgLy8gU2luZ2xlIGVsZW1lbnQKKyAgICBpZiAoIHF1YWxpZmllci5ub2RlVHlwZSApIHsK
KyAgICAgICAgcmV0dXJuIGpRdWVyeS5ncmVwKCBlbGVtZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7
CisgICAgICAgICAgICByZXR1cm4gKCBlbGVtID09PSBxdWFsaWZpZXIgKSAhPT0gbm90OworICAg
ICAgICB9ICk7CisgICAgfQorCisgICAgLy8gQXJyYXlsaWtlIG9mIGVsZW1lbnRzIChqUXVlcnks
IGFyZ3VtZW50cywgQXJyYXkpCisgICAgaWYgKCB0eXBlb2YgcXVhbGlmaWVyICE9PSAic3RyaW5n
IiApIHsKKyAgICAgICAgcmV0dXJuIGpRdWVyeS5ncmVwKCBlbGVtZW50cywgZnVuY3Rpb24oIGVs
ZW0gKSB7CisgICAgICAgICAgICByZXR1cm4gKCBpbmRleE9mLmNhbGwoIHF1YWxpZmllciwgZWxl
bSApID4gLTEgKSAhPT0gbm90OworICAgICAgICB9ICk7CisgICAgfQorCisgICAgLy8gU2ltcGxl
IHNlbGVjdG9yIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGRpcmVjdGx5LCByZW1vdmluZyBub24tRWxl
bWVudHMKKyAgICBpZiAoIHJpc1NpbXBsZS50ZXN0KCBxdWFsaWZpZXIgKSApIHsKKyAgICAgICAg
cmV0dXJuIGpRdWVyeS5maWx0ZXIoIHF1YWxpZmllciwgZWxlbWVudHMsIG5vdCApOworICAgIH0K
KworICAgIC8vIENvbXBsZXggc2VsZWN0b3IsIGNvbXBhcmUgdGhlIHR3byBzZXRzLCByZW1vdmlu
ZyBub24tRWxlbWVudHMKKyAgICBxdWFsaWZpZXIgPSBqUXVlcnkuZmlsdGVyKCBxdWFsaWZpZXIs
IGVsZW1lbnRzICk7CisgICAgcmV0dXJuIGpRdWVyeS5ncmVwKCBlbGVtZW50cywgZnVuY3Rpb24o
IGVsZW0gKSB7CisgICAgICAgIHJldHVybiAoIGluZGV4T2YuY2FsbCggcXVhbGlmaWVyLCBlbGVt
ICkgPiAtMSApICE9PSBub3QgJiYgZWxlbS5ub2RlVHlwZSA9PT0gMTsKKyAgICB9ICk7Cit9CisK
K2pRdWVyeS5maWx0ZXIgPSBmdW5jdGlvbiggZXhwciwgZWxlbXMsIG5vdCApIHsKKyAgICB2YXIg
ZWxlbSA9IGVsZW1zWyAwIF07CisKKyAgICBpZiAoIG5vdCApIHsKKyAgICAgICAgZXhwciA9ICI6
bm90KCIgKyBleHByICsgIikiOworICAgIH0KKworICAgIGlmICggZWxlbXMubGVuZ3RoID09PSAx
ICYmIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7CisgICAgICAgIHJldHVybiBqUXVlcnkuZmluZC5t
YXRjaGVzU2VsZWN0b3IoIGVsZW0sIGV4cHIgKSA/IFsgZWxlbSBdIDogW107CisgICAgfQorCisg
ICAgcmV0dXJuIGpRdWVyeS5maW5kLm1hdGNoZXMoIGV4cHIsIGpRdWVyeS5ncmVwKCBlbGVtcywg
ZnVuY3Rpb24oIGVsZW0gKSB7CisgICAgICAgIHJldHVybiBlbGVtLm5vZGVUeXBlID09PSAxOwor
ICAgIH0gKSApOworfTsKKworalF1ZXJ5LmZuLmV4dGVuZCggeworICAgIGZpbmQ6IGZ1bmN0aW9u
KCBzZWxlY3RvciApIHsKKyAgICAgICAgdmFyIGksIHJldCwKKyAgICAgICAgICAgIGxlbiA9IHRo
aXMubGVuZ3RoLAorICAgICAgICAgICAgc2VsZiA9IHRoaXM7CisKKyAgICAgICAgaWYgKCB0eXBl
b2Ygc2VsZWN0b3IgIT09ICJzdHJpbmciICkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMucHVz
aFN0YWNrKCBqUXVlcnkoIHNlbGVjdG9yICkuZmlsdGVyKCBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgICAgICBmb3IgKCBpID0gMDsgaSA8IGxlbjsgaSsrICkgeworICAgICAgICAgICAgICAgICAg
ICBpZiAoIGpRdWVyeS5jb250YWlucyggc2VsZlsgaSBdLCB0aGlzICkgKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gKSApOworICAgICAgICB9CisKKyAgICAgICAgcmV0
ID0gdGhpcy5wdXNoU3RhY2soIFtdICk7CisKKyAgICAgICAgZm9yICggaSA9IDA7IGkgPCBsZW47
IGkrKyApIHsKKyAgICAgICAgICAgIGpRdWVyeS5maW5kKCBzZWxlY3Rvciwgc2VsZlsgaSBdLCBy
ZXQgKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBsZW4gPiAxID8galF1ZXJ5LnVuaXF1
ZVNvcnQoIHJldCApIDogcmV0OworICAgIH0sCisgICAgZmlsdGVyOiBmdW5jdGlvbiggc2VsZWN0
b3IgKSB7CisgICAgICAgIHJldHVybiB0aGlzLnB1c2hTdGFjayggd2lubm93KCB0aGlzLCBzZWxl
Y3RvciB8fCBbXSwgZmFsc2UgKSApOworICAgIH0sCisgICAgbm90OiBmdW5jdGlvbiggc2VsZWN0
b3IgKSB7CisgICAgICAgIHJldHVybiB0aGlzLnB1c2hTdGFjayggd2lubm93KCB0aGlzLCBzZWxl
Y3RvciB8fCBbXSwgdHJ1ZSApICk7CisgICAgfSwKKyAgICBpczogZnVuY3Rpb24oIHNlbGVjdG9y
ICkgeworICAgICAgICByZXR1cm4gISF3aW5ub3coCisgICAgICAgICAgICB0aGlzLAorCisgICAg
ICAgICAgICAvLyBJZiB0aGlzIGlzIGEgcG9zaXRpb25hbC9yZWxhdGl2ZSBzZWxlY3RvciwgY2hl
Y2sgbWVtYmVyc2hpcCBpbiB0aGUgcmV0dXJuZWQgc2V0CisgICAgICAgICAgICAvLyBzbyAkKCJw
OmZpcnN0IikuaXMoInA6bGFzdCIpIHdvbid0IHJldHVybiB0cnVlIGZvciBhIGRvYyB3aXRoIHR3
byAicCIuCisgICAgICAgICAgICB0eXBlb2Ygc2VsZWN0b3IgPT09ICJzdHJpbmciICYmIHJuZWVk
c0NvbnRleHQudGVzdCggc2VsZWN0b3IgKSA/CisgICAgICAgICAgICAgICAgalF1ZXJ5KCBzZWxl
Y3RvciApIDoKKyAgICAgICAgICAgICAgICBzZWxlY3RvciB8fCBbXSwKKyAgICAgICAgICAgIGZh
bHNlCisgICAgICAgICkubGVuZ3RoOworICAgIH0KK30gKTsKKworCisvLyBJbml0aWFsaXplIGEg
alF1ZXJ5IG9iamVjdAorCisKKy8vIEEgY2VudHJhbCByZWZlcmVuY2UgdG8gdGhlIHJvb3QgalF1
ZXJ5KGRvY3VtZW50KQordmFyIHJvb3RqUXVlcnksCisKKyAgICAvLyBBIHNpbXBsZSB3YXkgdG8g
Y2hlY2sgZm9yIEhUTUwgc3RyaW5ncworICAgIC8vIFByaW9yaXRpemUgI2lkIG92ZXIgPHRhZz4g
dG8gYXZvaWQgWFNTIHZpYSBsb2NhdGlvbi5oYXNoICgjOTUyMSkKKyAgICAvLyBTdHJpY3QgSFRN
TCByZWNvZ25pdGlvbiAoIzExMjkwOiBtdXN0IHN0YXJ0IHdpdGggPCkKKyAgICAvLyBTaG9ydGN1
dCBzaW1wbGUgI2lkIGNhc2UgZm9yIHNwZWVkCisgICAgcnF1aWNrRXhwciA9IC9eKD86XHMqKDxb
XHdcV10rPilbXj5dKnwjKFtcdy1dKykpJC8sCisKKyAgICBpbml0ID0galF1ZXJ5LmZuLmluaXQg
PSBmdW5jdGlvbiggc2VsZWN0b3IsIGNvbnRleHQsIHJvb3QgKSB7CisgICAgICAgIHZhciBtYXRj
aCwgZWxlbTsKKworICAgICAgICAvLyBIQU5ETEU6ICQoIiIpLCAkKG51bGwpLCAkKHVuZGVmaW5l
ZCksICQoZmFsc2UpCisgICAgICAgIGlmICggIXNlbGVjdG9yICkgeworICAgICAgICAgICAgcmV0
dXJuIHRoaXM7CisgICAgICAgIH0KKworICAgICAgICAvLyBNZXRob2QgaW5pdCgpIGFjY2VwdHMg
YW4gYWx0ZXJuYXRlIHJvb3RqUXVlcnkKKyAgICAgICAgLy8gc28gbWlncmF0ZSBjYW4gc3VwcG9y
dCBqUXVlcnkuc3ViIChnaC0yMTAxKQorICAgICAgICByb290ID0gcm9vdCB8fCByb290alF1ZXJ5
OworCisgICAgICAgIC8vIEhhbmRsZSBIVE1MIHN0cmluZ3MKKyAgICAgICAgaWYgKCB0eXBlb2Yg
c2VsZWN0b3IgPT09ICJzdHJpbmciICkgeworICAgICAgICAgICAgaWYgKCBzZWxlY3RvclsgMCBd
ID09PSAiPCIgJiYKKyAgICAgICAgICAgICAgICBzZWxlY3Rvclsgc2VsZWN0b3IubGVuZ3RoIC0g
MSBdID09PSAiPiIgJiYKKyAgICAgICAgICAgICAgICBzZWxlY3Rvci5sZW5ndGggPj0gMyApIHsK
KworICAgICAgICAgICAgICAgIC8vIEFzc3VtZSB0aGF0IHN0cmluZ3MgdGhhdCBzdGFydCBhbmQg
ZW5kIHdpdGggPD4gYXJlIEhUTUwgYW5kIHNraXAgdGhlIHJlZ2V4IGNoZWNrCisgICAgICAgICAg
ICAgICAgbWF0Y2ggPSBbIG51bGwsIHNlbGVjdG9yLCBudWxsIF07CisKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgbWF0Y2ggPSBycXVpY2tFeHByLmV4ZWMoIHNlbGVjdG9y
ICk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIE1hdGNoIGh0bWwgb3IgbWFrZSBz
dXJlIG5vIGNvbnRleHQgaXMgc3BlY2lmaWVkIGZvciAjaWQKKyAgICAgICAgICAgIGlmICggbWF0
Y2ggJiYgKCBtYXRjaFsgMSBdIHx8ICFjb250ZXh0ICkgKSB7CisKKyAgICAgICAgICAgICAgICAv
LyBIQU5ETEU6ICQoaHRtbCkgLT4gJChhcnJheSkKKyAgICAgICAgICAgICAgICBpZiAoIG1hdGNo
WyAxIF0gKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQgPSBjb250ZXh0IGluc3RhbmNl
b2YgalF1ZXJ5ID8gY29udGV4dFsgMCBdIDogY29udGV4dDsKKworICAgICAgICAgICAgICAgICAg
ICAvLyBPcHRpb24gdG8gcnVuIHNjcmlwdHMgaXMgdHJ1ZSBmb3IgYmFjay1jb21wYXQKKyAgICAg
ICAgICAgICAgICAgICAgLy8gSW50ZW50aW9uYWxseSBsZXQgdGhlIGVycm9yIGJlIHRocm93biBp
ZiBwYXJzZUhUTUwgaXMgbm90IHByZXNlbnQKKyAgICAgICAgICAgICAgICAgICAgalF1ZXJ5Lm1l
cmdlKCB0aGlzLCBqUXVlcnkucGFyc2VIVE1MKAorICAgICAgICAgICAgICAgICAgICAgICAgbWF0
Y2hbIDEgXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQgJiYgY29udGV4dC5ub2Rl
VHlwZSA/IGNvbnRleHQub3duZXJEb2N1bWVudCB8fCBjb250ZXh0IDogZG9jdW1lbnQsCisgICAg
ICAgICAgICAgICAgICAgICAgICB0cnVlCisgICAgICAgICAgICAgICAgICAgICkgKTsKKworICAg
ICAgICAgICAgICAgICAgICAvLyBIQU5ETEU6ICQoaHRtbCwgcHJvcHMpCisgICAgICAgICAgICAg
ICAgICAgIGlmICggcnNpbmdsZVRhZy50ZXN0KCBtYXRjaFsgMSBdICkgJiYgalF1ZXJ5LmlzUGxh
aW5PYmplY3QoIGNvbnRleHQgKSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoIG1h
dGNoIGluIGNvbnRleHQgKSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBQcm9w
ZXJ0aWVzIG9mIGNvbnRleHQgYXJlIGNhbGxlZCBhcyBtZXRob2RzIGlmIHBvc3NpYmxlCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggdGhpc1sgbWF0
Y2ggXSApICkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzWyBtYXRjaCBd
KCBjb250ZXh0WyBtYXRjaCBdICk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAu
Li5hbmQgb3RoZXJ3aXNlIHNldCBhcyBhdHRyaWJ1dGVzCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hdHRy
KCBtYXRjaCwgY29udGV4dFsgbWF0Y2ggXSApOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOworCisgICAgICAgICAgICAgICAgLy8gSEFO
RExFOiAkKCNpZCkKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAg
ICBlbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIG1hdGNoWyAyIF0gKTsKKworICAgICAg
ICAgICAgICAgICAgICBpZiAoIGVsZW0gKSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8v
IEluamVjdCB0aGUgZWxlbWVudCBkaXJlY3RseSBpbnRvIHRoZSBqUXVlcnkgb2JqZWN0CisgICAg
ICAgICAgICAgICAgICAgICAgICB0aGlzWyAwIF0gPSBlbGVtOworICAgICAgICAgICAgICAgICAg
ICAgICAgdGhpcy5sZW5ndGggPSAxOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
Ly8gSEFORExFOiAkKGV4cHIsICQoLi4uKSkKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoICFjb250
ZXh0IHx8IGNvbnRleHQuanF1ZXJ5ICkgeworICAgICAgICAgICAgICAgIHJldHVybiAoIGNvbnRl
eHQgfHwgcm9vdCApLmZpbmQoIHNlbGVjdG9yICk7CisKKyAgICAgICAgICAgIC8vIEhBTkRMRTog
JChleHByLCBjb250ZXh0KQorICAgICAgICAgICAgLy8gKHdoaWNoIGlzIGp1c3QgZXF1aXZhbGVu
dCB0bzogJChjb250ZXh0KS5maW5kKGV4cHIpCisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIHJldHVybiB0aGlzLmNvbnN0cnVjdG9yKCBjb250ZXh0ICkuZmluZCggc2VsZWN0
b3IgKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAvLyBIQU5ETEU6ICQoRE9NRWxlbWVudCkK
KyAgICAgICAgfSBlbHNlIGlmICggc2VsZWN0b3Iubm9kZVR5cGUgKSB7CisgICAgICAgICAgICB0
aGlzWyAwIF0gPSBzZWxlY3RvcjsKKyAgICAgICAgICAgIHRoaXMubGVuZ3RoID0gMTsKKyAgICAg
ICAgICAgIHJldHVybiB0aGlzOworCisgICAgICAgIC8vIEhBTkRMRTogJChmdW5jdGlvbikKKyAg
ICAgICAgLy8gU2hvcnRjdXQgZm9yIGRvY3VtZW50IHJlYWR5CisgICAgICAgIH0gZWxzZSBpZiAo
IGpRdWVyeS5pc0Z1bmN0aW9uKCBzZWxlY3RvciApICkgeworICAgICAgICAgICAgcmV0dXJuIHJv
b3QucmVhZHkgIT09IHVuZGVmaW5lZCA/CisgICAgICAgICAgICAgICAgcm9vdC5yZWFkeSggc2Vs
ZWN0b3IgKSA6CisKKyAgICAgICAgICAgICAgICAvLyBFeGVjdXRlIGltbWVkaWF0ZWx5IGlmIHJl
YWR5IGlzIG5vdCBwcmVzZW50CisgICAgICAgICAgICAgICAgc2VsZWN0b3IoIGpRdWVyeSApOwor
ICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGpRdWVyeS5tYWtlQXJyYXkoIHNlbGVjdG9yLCB0
aGlzICk7CisgICAgfTsKKworLy8gR2l2ZSB0aGUgaW5pdCBmdW5jdGlvbiB0aGUgalF1ZXJ5IHBy
b3RvdHlwZSBmb3IgbGF0ZXIgaW5zdGFudGlhdGlvbgoraW5pdC5wcm90b3R5cGUgPSBqUXVlcnku
Zm47CisKKy8vIEluaXRpYWxpemUgY2VudHJhbCByZWZlcmVuY2UKK3Jvb3RqUXVlcnkgPSBqUXVl
cnkoIGRvY3VtZW50ICk7CisKKwordmFyIHJwYXJlbnRzcHJldiA9IC9eKD86cGFyZW50c3xwcmV2
KD86VW50aWx8QWxsKSkvLAorCisgICAgLy8gTWV0aG9kcyBndWFyYW50ZWVkIHRvIHByb2R1Y2Ug
YSB1bmlxdWUgc2V0IHdoZW4gc3RhcnRpbmcgZnJvbSBhIHVuaXF1ZSBzZXQKKyAgICBndWFyYW50
ZWVkVW5pcXVlID0geworICAgICAgICBjaGlsZHJlbjogdHJ1ZSwKKyAgICAgICAgY29udGVudHM6
IHRydWUsCisgICAgICAgIG5leHQ6IHRydWUsCisgICAgICAgIHByZXY6IHRydWUKKyAgICB9Owor
CitqUXVlcnkuZm4uZXh0ZW5kKCB7CisgICAgaGFzOiBmdW5jdGlvbiggdGFyZ2V0ICkgeworICAg
ICAgICB2YXIgdGFyZ2V0cyA9IGpRdWVyeSggdGFyZ2V0LCB0aGlzICksCisgICAgICAgICAgICBs
ID0gdGFyZ2V0cy5sZW5ndGg7CisKKyAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyKCBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgIHZhciBpID0gMDsKKyAgICAgICAgICAgIGZvciAoIDsgaSA8IGw7
IGkrKyApIHsKKyAgICAgICAgICAgICAgICBpZiAoIGpRdWVyeS5jb250YWlucyggdGhpcywgdGFy
Z2V0c1sgaSBdICkgKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSApOworICAgIH0sCisKKyAgICBj
bG9zZXN0OiBmdW5jdGlvbiggc2VsZWN0b3JzLCBjb250ZXh0ICkgeworICAgICAgICB2YXIgY3Vy
LAorICAgICAgICAgICAgaSA9IDAsCisgICAgICAgICAgICBsID0gdGhpcy5sZW5ndGgsCisgICAg
ICAgICAgICBtYXRjaGVkID0gW10sCisgICAgICAgICAgICB0YXJnZXRzID0gdHlwZW9mIHNlbGVj
dG9ycyAhPT0gInN0cmluZyIgJiYgalF1ZXJ5KCBzZWxlY3RvcnMgKTsKKworICAgICAgICAvLyBQ
b3NpdGlvbmFsIHNlbGVjdG9ycyBuZXZlciBtYXRjaCwgc2luY2UgdGhlcmUncyBubyBfc2VsZWN0
aW9uXyBjb250ZXh0CisgICAgICAgIGlmICggIXJuZWVkc0NvbnRleHQudGVzdCggc2VsZWN0b3Jz
ICkgKSB7CisgICAgICAgICAgICBmb3IgKCA7IGkgPCBsOyBpKysgKSB7CisgICAgICAgICAgICAg
ICAgZm9yICggY3VyID0gdGhpc1sgaSBdOyBjdXIgJiYgY3VyICE9PSBjb250ZXh0OyBjdXIgPSBj
dXIucGFyZW50Tm9kZSApIHsKKworICAgICAgICAgICAgICAgICAgICAvLyBBbHdheXMgc2tpcCBk
b2N1bWVudCBmcmFnbWVudHMKKyAgICAgICAgICAgICAgICAgICAgaWYgKCBjdXIubm9kZVR5cGUg
PCAxMSAmJiAoIHRhcmdldHMgPworICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0cy5pbmRl
eCggY3VyICkgPiAtMSA6CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIERvbid0IHBhc3Mg
bm9uLWVsZW1lbnRzIHRvIFNpenpsZQorICAgICAgICAgICAgICAgICAgICAgICAgY3VyLm5vZGVU
eXBlID09PSAxICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmZpbmQubWF0
Y2hlc1NlbGVjdG9yKCBjdXIsIHNlbGVjdG9ycyApICkgKSB7CisKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG1hdGNoZWQucHVzaCggY3VyICk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0aGlzLnB1c2hTdGFjayggbWF0Y2hlZC5s
ZW5ndGggPiAxID8galF1ZXJ5LnVuaXF1ZVNvcnQoIG1hdGNoZWQgKSA6IG1hdGNoZWQgKTsKKyAg
ICB9LAorCisgICAgLy8gRGV0ZXJtaW5lIHRoZSBwb3NpdGlvbiBvZiBhbiBlbGVtZW50IHdpdGhp
biB0aGUgc2V0CisgICAgaW5kZXg6IGZ1bmN0aW9uKCBlbGVtICkgeworCisgICAgICAgIC8vIE5v
IGFyZ3VtZW50LCByZXR1cm4gaW5kZXggaW4gcGFyZW50CisgICAgICAgIGlmICggIWVsZW0gKSB7
CisgICAgICAgICAgICByZXR1cm4gKCB0aGlzWyAwIF0gJiYgdGhpc1sgMCBdLnBhcmVudE5vZGUg
KSA/IHRoaXMuZmlyc3QoKS5wcmV2QWxsKCkubGVuZ3RoIDogLTE7CisgICAgICAgIH0KKworICAg
ICAgICAvLyBJbmRleCBpbiBzZWxlY3RvcgorICAgICAgICBpZiAoIHR5cGVvZiBlbGVtID09PSAi
c3RyaW5nIiApIHsKKyAgICAgICAgICAgIHJldHVybiBpbmRleE9mLmNhbGwoIGpRdWVyeSggZWxl
bSApLCB0aGlzWyAwIF0gKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIExvY2F0ZSB0aGUgcG9z
aXRpb24gb2YgdGhlIGRlc2lyZWQgZWxlbWVudAorICAgICAgICByZXR1cm4gaW5kZXhPZi5jYWxs
KCB0aGlzLAorCisgICAgICAgICAgICAvLyBJZiBpdCByZWNlaXZlcyBhIGpRdWVyeSBvYmplY3Qs
IHRoZSBmaXJzdCBlbGVtZW50IGlzIHVzZWQKKyAgICAgICAgICAgIGVsZW0uanF1ZXJ5ID8gZWxl
bVsgMCBdIDogZWxlbQorICAgICAgICApOworICAgIH0sCisKKyAgICBhZGQ6IGZ1bmN0aW9uKCBz
ZWxlY3RvciwgY29udGV4dCApIHsKKyAgICAgICAgcmV0dXJuIHRoaXMucHVzaFN0YWNrKAorICAg
ICAgICAgICAgalF1ZXJ5LnVuaXF1ZVNvcnQoCisgICAgICAgICAgICAgICAgalF1ZXJ5Lm1lcmdl
KCB0aGlzLmdldCgpLCBqUXVlcnkoIHNlbGVjdG9yLCBjb250ZXh0ICkgKQorICAgICAgICAgICAg
KQorICAgICAgICApOworICAgIH0sCisKKyAgICBhZGRCYWNrOiBmdW5jdGlvbiggc2VsZWN0b3Ig
KSB7CisgICAgICAgIHJldHVybiB0aGlzLmFkZCggc2VsZWN0b3IgPT0gbnVsbCA/CisgICAgICAg
ICAgICB0aGlzLnByZXZPYmplY3QgOiB0aGlzLnByZXZPYmplY3QuZmlsdGVyKCBzZWxlY3RvciAp
CisgICAgICAgICk7CisgICAgfQorfSApOworCitmdW5jdGlvbiBzaWJsaW5nKCBjdXIsIGRpciAp
IHsKKyAgICB3aGlsZSAoICggY3VyID0gY3VyWyBkaXIgXSApICYmIGN1ci5ub2RlVHlwZSAhPT0g
MSApIHt9CisgICAgcmV0dXJuIGN1cjsKK30KKworalF1ZXJ5LmVhY2goIHsKKyAgICBwYXJlbnQ6
IGZ1bmN0aW9uKCBlbGVtICkgeworICAgICAgICB2YXIgcGFyZW50ID0gZWxlbS5wYXJlbnROb2Rl
OworICAgICAgICByZXR1cm4gcGFyZW50ICYmIHBhcmVudC5ub2RlVHlwZSAhPT0gMTEgPyBwYXJl
bnQgOiBudWxsOworICAgIH0sCisgICAgcGFyZW50czogZnVuY3Rpb24oIGVsZW0gKSB7CisgICAg
ICAgIHJldHVybiBkaXIoIGVsZW0sICJwYXJlbnROb2RlIiApOworICAgIH0sCisgICAgcGFyZW50
c1VudGlsOiBmdW5jdGlvbiggZWxlbSwgaSwgdW50aWwgKSB7CisgICAgICAgIHJldHVybiBkaXIo
IGVsZW0sICJwYXJlbnROb2RlIiwgdW50aWwgKTsKKyAgICB9LAorICAgIG5leHQ6IGZ1bmN0aW9u
KCBlbGVtICkgeworICAgICAgICByZXR1cm4gc2libGluZyggZWxlbSwgIm5leHRTaWJsaW5nIiAp
OworICAgIH0sCisgICAgcHJldjogZnVuY3Rpb24oIGVsZW0gKSB7CisgICAgICAgIHJldHVybiBz
aWJsaW5nKCBlbGVtLCAicHJldmlvdXNTaWJsaW5nIiApOworICAgIH0sCisgICAgbmV4dEFsbDog
ZnVuY3Rpb24oIGVsZW0gKSB7CisgICAgICAgIHJldHVybiBkaXIoIGVsZW0sICJuZXh0U2libGlu
ZyIgKTsKKyAgICB9LAorICAgIHByZXZBbGw6IGZ1bmN0aW9uKCBlbGVtICkgeworICAgICAgICBy
ZXR1cm4gZGlyKCBlbGVtLCAicHJldmlvdXNTaWJsaW5nIiApOworICAgIH0sCisgICAgbmV4dFVu
dGlsOiBmdW5jdGlvbiggZWxlbSwgaSwgdW50aWwgKSB7CisgICAgICAgIHJldHVybiBkaXIoIGVs
ZW0sICJuZXh0U2libGluZyIsIHVudGlsICk7CisgICAgfSwKKyAgICBwcmV2VW50aWw6IGZ1bmN0
aW9uKCBlbGVtLCBpLCB1bnRpbCApIHsKKyAgICAgICAgcmV0dXJuIGRpciggZWxlbSwgInByZXZp
b3VzU2libGluZyIsIHVudGlsICk7CisgICAgfSwKKyAgICBzaWJsaW5nczogZnVuY3Rpb24oIGVs
ZW0gKSB7CisgICAgICAgIHJldHVybiBzaWJsaW5ncyggKCBlbGVtLnBhcmVudE5vZGUgfHwge30g
KS5maXJzdENoaWxkLCBlbGVtICk7CisgICAgfSwKKyAgICBjaGlsZHJlbjogZnVuY3Rpb24oIGVs
ZW0gKSB7CisgICAgICAgIHJldHVybiBzaWJsaW5ncyggZWxlbS5maXJzdENoaWxkICk7CisgICAg
fSwKKyAgICBjb250ZW50czogZnVuY3Rpb24oIGVsZW0gKSB7CisgICAgICAgIHJldHVybiBlbGVt
LmNvbnRlbnREb2N1bWVudCB8fCBqUXVlcnkubWVyZ2UoIFtdLCBlbGVtLmNoaWxkTm9kZXMgKTsK
KyAgICB9Cit9LCBmdW5jdGlvbiggbmFtZSwgZm4gKSB7CisgICAgalF1ZXJ5LmZuWyBuYW1lIF0g
PSBmdW5jdGlvbiggdW50aWwsIHNlbGVjdG9yICkgeworICAgICAgICB2YXIgbWF0Y2hlZCA9IGpR
dWVyeS5tYXAoIHRoaXMsIGZuLCB1bnRpbCApOworCisgICAgICAgIGlmICggbmFtZS5zbGljZSgg
LTUgKSAhPT0gIlVudGlsIiApIHsKKyAgICAgICAgICAgIHNlbGVjdG9yID0gdW50aWw7CisgICAg
ICAgIH0KKworICAgICAgICBpZiAoIHNlbGVjdG9yICYmIHR5cGVvZiBzZWxlY3RvciA9PT0gInN0
cmluZyIgKSB7CisgICAgICAgICAgICBtYXRjaGVkID0galF1ZXJ5LmZpbHRlciggc2VsZWN0b3Is
IG1hdGNoZWQgKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICggdGhpcy5sZW5ndGggPiAxICkg
eworCisgICAgICAgICAgICAvLyBSZW1vdmUgZHVwbGljYXRlcworICAgICAgICAgICAgaWYgKCAh
Z3VhcmFudGVlZFVuaXF1ZVsgbmFtZSBdICkgeworICAgICAgICAgICAgICAgIGpRdWVyeS51bmlx
dWVTb3J0KCBtYXRjaGVkICk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFJldmVy
c2Ugb3JkZXIgZm9yIHBhcmVudHMqIGFuZCBwcmV2LWRlcml2YXRpdmVzCisgICAgICAgICAgICBp
ZiAoIHJwYXJlbnRzcHJldi50ZXN0KCBuYW1lICkgKSB7CisgICAgICAgICAgICAgICAgbWF0Y2hl
ZC5yZXZlcnNlKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4g
dGhpcy5wdXNoU3RhY2soIG1hdGNoZWQgKTsKKyAgICB9OworfSApOwordmFyIHJub3RodG1sd2hp
dGUgPSAoIC9bXlx4MjBcdFxyXG5cZl0rL2cgKTsKKworCisKKy8vIENvbnZlcnQgU3RyaW5nLWZv
cm1hdHRlZCBvcHRpb25zIGludG8gT2JqZWN0LWZvcm1hdHRlZCBvbmVzCitmdW5jdGlvbiBjcmVh
dGVPcHRpb25zKCBvcHRpb25zICkgeworICAgIHZhciBvYmplY3QgPSB7fTsKKyAgICBqUXVlcnku
ZWFjaCggb3B0aW9ucy5tYXRjaCggcm5vdGh0bWx3aGl0ZSApIHx8IFtdLCBmdW5jdGlvbiggXywg
ZmxhZyApIHsKKyAgICAgICAgb2JqZWN0WyBmbGFnIF0gPSB0cnVlOworICAgIH0gKTsKKyAgICBy
ZXR1cm4gb2JqZWN0OworfQorCisvKgorICogQ3JlYXRlIGEgY2FsbGJhY2sgbGlzdCB1c2luZyB0
aGUgZm9sbG93aW5nIHBhcmFtZXRlcnM6CisgKgorICogIG9wdGlvbnM6IGFuIG9wdGlvbmFsIGxp
c3Qgb2Ygc3BhY2Utc2VwYXJhdGVkIG9wdGlvbnMgdGhhdCB3aWxsIGNoYW5nZSBob3cKKyAqICAg
ICAgICAgIHRoZSBjYWxsYmFjayBsaXN0IGJlaGF2ZXMgb3IgYSBtb3JlIHRyYWRpdGlvbmFsIG9w
dGlvbiBvYmplY3QKKyAqCisgKiBCeSBkZWZhdWx0IGEgY2FsbGJhY2sgbGlzdCB3aWxsIGFjdCBs
aWtlIGFuIGV2ZW50IGNhbGxiYWNrIGxpc3QgYW5kIGNhbiBiZQorICogImZpcmVkIiBtdWx0aXBs
ZSB0aW1lcy4KKyAqCisgKiBQb3NzaWJsZSBvcHRpb25zOgorICoKKyAqICBvbmNlOiAgICAgICAg
ICAgd2lsbCBlbnN1cmUgdGhlIGNhbGxiYWNrIGxpc3QgY2FuIG9ubHkgYmUgZmlyZWQgb25jZSAo
bGlrZSBhIERlZmVycmVkKQorICoKKyAqICBtZW1vcnk6ICAgICAgICAgd2lsbCBrZWVwIHRyYWNr
IG9mIHByZXZpb3VzIHZhbHVlcyBhbmQgd2lsbCBjYWxsIGFueSBjYWxsYmFjayBhZGRlZAorICog
ICAgICAgICAgICAgICAgICBhZnRlciB0aGUgbGlzdCBoYXMgYmVlbiBmaXJlZCByaWdodCBhd2F5
IHdpdGggdGhlIGxhdGVzdCAibWVtb3JpemVkIgorICogICAgICAgICAgICAgICAgICB2YWx1ZXMg
KGxpa2UgYSBEZWZlcnJlZCkKKyAqCisgKiAgdW5pcXVlOiAgICAgICAgIHdpbGwgZW5zdXJlIGEg
Y2FsbGJhY2sgY2FuIG9ubHkgYmUgYWRkZWQgb25jZSAobm8gZHVwbGljYXRlIGluIHRoZSBsaXN0
KQorICoKKyAqICBzdG9wT25GYWxzZTogICAgaW50ZXJydXB0IGNhbGxpbmdzIHdoZW4gYSBjYWxs
YmFjayByZXR1cm5zIGZhbHNlCisgKgorICovCitqUXVlcnkuQ2FsbGJhY2tzID0gZnVuY3Rpb24o
IG9wdGlvbnMgKSB7CisKKyAgICAvLyBDb252ZXJ0IG9wdGlvbnMgZnJvbSBTdHJpbmctZm9ybWF0
dGVkIHRvIE9iamVjdC1mb3JtYXR0ZWQgaWYgbmVlZGVkCisgICAgLy8gKHdlIGNoZWNrIGluIGNh
Y2hlIGZpcnN0KQorICAgIG9wdGlvbnMgPSB0eXBlb2Ygb3B0aW9ucyA9PT0gInN0cmluZyIgPwor
ICAgICAgICBjcmVhdGVPcHRpb25zKCBvcHRpb25zICkgOgorICAgICAgICBqUXVlcnkuZXh0ZW5k
KCB7fSwgb3B0aW9ucyApOworCisgICAgdmFyIC8vIEZsYWcgdG8ga25vdyBpZiBsaXN0IGlzIGN1
cnJlbnRseSBmaXJpbmcKKyAgICAgICAgZmlyaW5nLAorCisgICAgICAgIC8vIExhc3QgZmlyZSB2
YWx1ZSBmb3Igbm9uLWZvcmdldHRhYmxlIGxpc3RzCisgICAgICAgIG1lbW9yeSwKKworICAgICAg
ICAvLyBGbGFnIHRvIGtub3cgaWYgbGlzdCB3YXMgYWxyZWFkeSBmaXJlZAorICAgICAgICBmaXJl
ZCwKKworICAgICAgICAvLyBGbGFnIHRvIHByZXZlbnQgZmlyaW5nCisgICAgICAgIGxvY2tlZCwK
KworICAgICAgICAvLyBBY3R1YWwgY2FsbGJhY2sgbGlzdAorICAgICAgICBsaXN0ID0gW10sCisK
KyAgICAgICAgLy8gUXVldWUgb2YgZXhlY3V0aW9uIGRhdGEgZm9yIHJlcGVhdGFibGUgbGlzdHMK
KyAgICAgICAgcXVldWUgPSBbXSwKKworICAgICAgICAvLyBJbmRleCBvZiBjdXJyZW50bHkgZmly
aW5nIGNhbGxiYWNrIChtb2RpZmllZCBieSBhZGQvcmVtb3ZlIGFzIG5lZWRlZCkKKyAgICAgICAg
ZmlyaW5nSW5kZXggPSAtMSwKKworICAgICAgICAvLyBGaXJlIGNhbGxiYWNrcworICAgICAgICBm
aXJlID0gZnVuY3Rpb24oKSB7CisKKyAgICAgICAgICAgIC8vIEVuZm9yY2Ugc2luZ2xlLWZpcmlu
ZworICAgICAgICAgICAgbG9ja2VkID0gb3B0aW9ucy5vbmNlOworCisgICAgICAgICAgICAvLyBF
eGVjdXRlIGNhbGxiYWNrcyBmb3IgYWxsIHBlbmRpbmcgZXhlY3V0aW9ucywKKyAgICAgICAgICAg
IC8vIHJlc3BlY3RpbmcgZmlyaW5nSW5kZXggb3ZlcnJpZGVzIGFuZCBydW50aW1lIGNoYW5nZXMK
KyAgICAgICAgICAgIGZpcmVkID0gZmlyaW5nID0gdHJ1ZTsKKyAgICAgICAgICAgIGZvciAoIDsg
cXVldWUubGVuZ3RoOyBmaXJpbmdJbmRleCA9IC0xICkgeworICAgICAgICAgICAgICAgIG1lbW9y
eSA9IHF1ZXVlLnNoaWZ0KCk7CisgICAgICAgICAgICAgICAgd2hpbGUgKCArK2ZpcmluZ0luZGV4
IDwgbGlzdC5sZW5ndGggKSB7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gUnVuIGNhbGxiYWNr
IGFuZCBjaGVjayBmb3IgZWFybHkgdGVybWluYXRpb24KKyAgICAgICAgICAgICAgICAgICAgaWYg
KCBsaXN0WyBmaXJpbmdJbmRleCBdLmFwcGx5KCBtZW1vcnlbIDAgXSwgbWVtb3J5WyAxIF0gKSA9
PT0gZmFsc2UgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuc3RvcE9uRmFsc2Ug
KSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIEp1bXAgdG8gZW5kIGFuZCBmb3JnZXQg
dGhlIGRhdGEgc28gLmFkZCBkb2Vzbid0IHJlLWZpcmUKKyAgICAgICAgICAgICAgICAgICAgICAg
IGZpcmluZ0luZGV4ID0gbGlzdC5sZW5ndGg7CisgICAgICAgICAgICAgICAgICAgICAgICBtZW1v
cnkgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gRm9yZ2V0IHRoZSBkYXRhIGlmIHdlJ3JlIGRv
bmUgd2l0aCBpdAorICAgICAgICAgICAgaWYgKCAhb3B0aW9ucy5tZW1vcnkgKSB7CisgICAgICAg
ICAgICAgICAgbWVtb3J5ID0gZmFsc2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZp
cmluZyA9IGZhbHNlOworCisgICAgICAgICAgICAvLyBDbGVhbiB1cCBpZiB3ZSdyZSBkb25lIGZp
cmluZyBmb3IgZ29vZAorICAgICAgICAgICAgaWYgKCBsb2NrZWQgKSB7CisKKyAgICAgICAgICAg
ICAgICAvLyBLZWVwIGFuIGVtcHR5IGxpc3QgaWYgd2UgaGF2ZSBkYXRhIGZvciBmdXR1cmUgYWRk
IGNhbGxzCisgICAgICAgICAgICAgICAgaWYgKCBtZW1vcnkgKSB7CisgICAgICAgICAgICAgICAg
ICAgIGxpc3QgPSBbXTsKKworICAgICAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgdGhpcyBvYmpl
Y3QgaXMgc3BlbnQKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAg
ICBsaXN0ID0gIiI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9
LAorCisgICAgICAgIC8vIEFjdHVhbCBDYWxsYmFja3Mgb2JqZWN0CisgICAgICAgIHNlbGYgPSB7
CisKKyAgICAgICAgICAgIC8vIEFkZCBhIGNhbGxiYWNrIG9yIGEgY29sbGVjdGlvbiBvZiBjYWxs
YmFja3MgdG8gdGhlIGxpc3QKKyAgICAgICAgICAgIGFkZDogZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICAgICAgaWYgKCBsaXN0ICkgeworCisgICAgICAgICAgICAgICAgICAgIC8vIElmIHdlIGhh
dmUgbWVtb3J5IGZyb20gYSBwYXN0IHJ1biwgd2Ugc2hvdWxkIGZpcmUgYWZ0ZXIgYWRkaW5nCisg
ICAgICAgICAgICAgICAgICAgIGlmICggbWVtb3J5ICYmICFmaXJpbmcgKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBmaXJpbmdJbmRleCA9IGxpc3QubGVuZ3RoIC0gMTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHF1ZXVlLnB1c2goIG1lbW9yeSApOworICAgICAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICAgICAgKCBmdW5jdGlvbiBhZGQoIGFyZ3MgKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBqUXVlcnkuZWFjaCggYXJncywgZnVuY3Rpb24oIF8sIGFyZyApIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBhcmcg
KSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhb3B0aW9ucy51bmlx
dWUgfHwgIXNlbGYuaGFzKCBhcmcgKSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGxpc3QucHVzaCggYXJnICk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCBhcmcgJiYgYXJnLmxl
bmd0aCAmJiBqUXVlcnkudHlwZSggYXJnICkgIT09ICJzdHJpbmciICkgeworCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIEluc3BlY3QgcmVjdXJzaXZlbHkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYWRkKCBhcmcgKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9ICk7CisgICAgICAgICAgICAgICAgICAg
IH0gKSggYXJndW1lbnRzICk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKCBtZW1vcnkgJiYg
IWZpcmluZyApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpcmUoKTsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gdGhp
czsKKyAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgIC8vIFJlbW92ZSBhIGNhbGxiYWNrIGZy
b20gdGhlIGxpc3QKKyAgICAgICAgICAgIHJlbW92ZTogZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICAgICAgalF1ZXJ5LmVhY2goIGFyZ3VtZW50cywgZnVuY3Rpb24oIF8sIGFyZyApIHsKKyAgICAg
ICAgICAgICAgICAgICAgdmFyIGluZGV4OworICAgICAgICAgICAgICAgICAgICB3aGlsZSAoICgg
aW5kZXggPSBqUXVlcnkuaW5BcnJheSggYXJnLCBsaXN0LCBpbmRleCApICkgPiAtMSApIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGxpc3Quc3BsaWNlKCBpbmRleCwgMSApOworCisgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBIYW5kbGUgZmlyaW5nIGluZGV4ZXMKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICggaW5kZXggPD0gZmlyaW5nSW5kZXggKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZmlyaW5nSW5kZXgtLTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gdGhpczsKKyAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgIC8vIENoZWNrIGlm
IGEgZ2l2ZW4gY2FsbGJhY2sgaXMgaW4gdGhlIGxpc3QuCisgICAgICAgICAgICAvLyBJZiBubyBh
cmd1bWVudCBpcyBnaXZlbiwgcmV0dXJuIHdoZXRoZXIgb3Igbm90IGxpc3QgaGFzIGNhbGxiYWNr
cyBhdHRhY2hlZC4KKyAgICAgICAgICAgIGhhczogZnVuY3Rpb24oIGZuICkgeworICAgICAgICAg
ICAgICAgIHJldHVybiBmbiA/CisgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5pbkFycmF5KCBm
biwgbGlzdCApID4gLTEgOgorICAgICAgICAgICAgICAgICAgICBsaXN0Lmxlbmd0aCA+IDA7Cisg
ICAgICAgICAgICB9LAorCisgICAgICAgICAgICAvLyBSZW1vdmUgYWxsIGNhbGxiYWNrcyBmcm9t
IHRoZSBsaXN0CisgICAgICAgICAgICBlbXB0eTogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAg
ICAgaWYgKCBsaXN0ICkgeworICAgICAgICAgICAgICAgICAgICBsaXN0ID0gW107CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICAgICAgfSwK
KworICAgICAgICAgICAgLy8gRGlzYWJsZSAuZmlyZSBhbmQgLmFkZAorICAgICAgICAgICAgLy8g
QWJvcnQgYW55IGN1cnJlbnQvcGVuZGluZyBleGVjdXRpb25zCisgICAgICAgICAgICAvLyBDbGVh
ciBhbGwgY2FsbGJhY2tzIGFuZCB2YWx1ZXMKKyAgICAgICAgICAgIGRpc2FibGU6IGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgICAgIGxvY2tlZCA9IHF1ZXVlID0gW107CisgICAgICAgICAgICAg
ICAgbGlzdCA9IG1lbW9yeSA9ICIiOworICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOworICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgIGRpc2FibGVkOiBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gIWxpc3Q7CisgICAgICAgICAgICB9LAorCisgICAgICAgICAgICAvLyBE
aXNhYmxlIC5maXJlCisgICAgICAgICAgICAvLyBBbHNvIGRpc2FibGUgLmFkZCB1bmxlc3Mgd2Ug
aGF2ZSBtZW1vcnkgKHNpbmNlIGl0IHdvdWxkIGhhdmUgbm8gZWZmZWN0KQorICAgICAgICAgICAg
Ly8gQWJvcnQgYW55IHBlbmRpbmcgZXhlY3V0aW9ucworICAgICAgICAgICAgbG9jazogZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICAgICAgbG9ja2VkID0gcXVldWUgPSBbXTsKKyAgICAgICAgICAg
ICAgICBpZiAoICFtZW1vcnkgJiYgIWZpcmluZyApIHsKKyAgICAgICAgICAgICAgICAgICAgbGlz
dCA9IG1lbW9yeSA9ICIiOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1
cm4gdGhpczsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBsb2NrZWQ6IGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgICAgIHJldHVybiAhIWxvY2tlZDsKKyAgICAgICAgICAgIH0sCisKKyAg
ICAgICAgICAgIC8vIENhbGwgYWxsIGNhbGxiYWNrcyB3aXRoIHRoZSBnaXZlbiBjb250ZXh0IGFu
ZCBhcmd1bWVudHMKKyAgICAgICAgICAgIGZpcmVXaXRoOiBmdW5jdGlvbiggY29udGV4dCwgYXJn
cyApIHsKKyAgICAgICAgICAgICAgICBpZiAoICFsb2NrZWQgKSB7CisgICAgICAgICAgICAgICAg
ICAgIGFyZ3MgPSBhcmdzIHx8IFtdOworICAgICAgICAgICAgICAgICAgICBhcmdzID0gWyBjb250
ZXh0LCBhcmdzLnNsaWNlID8gYXJncy5zbGljZSgpIDogYXJncyBdOworICAgICAgICAgICAgICAg
ICAgICBxdWV1ZS5wdXNoKCBhcmdzICk7CisgICAgICAgICAgICAgICAgICAgIGlmICggIWZpcmlu
ZyApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpcmUoKTsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAg
ICAgICAgICAgIH0sCisKKyAgICAgICAgICAgIC8vIENhbGwgYWxsIHRoZSBjYWxsYmFja3Mgd2l0
aCB0aGUgZ2l2ZW4gYXJndW1lbnRzCisgICAgICAgICAgICBmaXJlOiBmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgICAgICBzZWxmLmZpcmVXaXRoKCB0aGlzLCBhcmd1bWVudHMgKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgIC8vIFRv
IGtub3cgaWYgdGhlIGNhbGxiYWNrcyBoYXZlIGFscmVhZHkgYmVlbiBjYWxsZWQgYXQgbGVhc3Qg
b25jZQorICAgICAgICAgICAgZmlyZWQ6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHJl
dHVybiAhIWZpcmVkOworICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgcmV0dXJuIHNl
bGY7Cit9OworCisKK2Z1bmN0aW9uIElkZW50aXR5KCB2ICkgeworICAgIHJldHVybiB2OworfQor
ZnVuY3Rpb24gVGhyb3dlciggZXggKSB7CisgICAgdGhyb3cgZXg7Cit9CisKK2Z1bmN0aW9uIGFk
b3B0VmFsdWUoIHZhbHVlLCByZXNvbHZlLCByZWplY3QgKSB7CisgICAgdmFyIG1ldGhvZDsKKwor
ICAgIHRyeSB7CisKKyAgICAgICAgLy8gQ2hlY2sgZm9yIHByb21pc2UgYXNwZWN0IGZpcnN0IHRv
IHByaXZpbGVnZSBzeW5jaHJvbm91cyBiZWhhdmlvcgorICAgICAgICBpZiAoIHZhbHVlICYmIGpR
dWVyeS5pc0Z1bmN0aW9uKCAoIG1ldGhvZCA9IHZhbHVlLnByb21pc2UgKSApICkgeworICAgICAg
ICAgICAgbWV0aG9kLmNhbGwoIHZhbHVlICkuZG9uZSggcmVzb2x2ZSApLmZhaWwoIHJlamVjdCAp
OworCisgICAgICAgIC8vIE90aGVyIHRoZW5hYmxlcworICAgICAgICB9IGVsc2UgaWYgKCB2YWx1
ZSAmJiBqUXVlcnkuaXNGdW5jdGlvbiggKCBtZXRob2QgPSB2YWx1ZS50aGVuICkgKSApIHsKKyAg
ICAgICAgICAgIG1ldGhvZC5jYWxsKCB2YWx1ZSwgcmVzb2x2ZSwgcmVqZWN0ICk7CisKKyAgICAg
ICAgLy8gT3RoZXIgbm9uLXRoZW5hYmxlcworICAgICAgICB9IGVsc2UgeworCisgICAgICAgICAg
ICAvLyBTdXBwb3J0OiBBbmRyb2lkIDQuMCBvbmx5CisgICAgICAgICAgICAvLyBTdHJpY3QgbW9k
ZSBmdW5jdGlvbnMgaW52b2tlZCB3aXRob3V0IC5jYWxsLy5hcHBseSBnZXQgZ2xvYmFsLW9iamVj
dCBjb250ZXh0CisgICAgICAgICAgICByZXNvbHZlLmNhbGwoIHVuZGVmaW5lZCwgdmFsdWUgKTsK
KyAgICAgICAgfQorCisgICAgLy8gRm9yIFByb21pc2VzL0ErLCBjb252ZXJ0IGV4Y2VwdGlvbnMg
aW50byByZWplY3Rpb25zCisgICAgLy8gU2luY2UgalF1ZXJ5LndoZW4gZG9lc24ndCB1bndyYXAg
dGhlbmFibGVzLCB3ZSBjYW4gc2tpcCB0aGUgZXh0cmEgY2hlY2tzIGFwcGVhcmluZyBpbgorICAg
IC8vIERlZmVycmVkI3RoZW4gdG8gY29uZGl0aW9uYWxseSBzdXBwcmVzcyByZWplY3Rpb24uCisg
ICAgfSBjYXRjaCAoIHZhbHVlICkgeworCisgICAgICAgIC8vIFN1cHBvcnQ6IEFuZHJvaWQgNC4w
IG9ubHkKKyAgICAgICAgLy8gU3RyaWN0IG1vZGUgZnVuY3Rpb25zIGludm9rZWQgd2l0aG91dCAu
Y2FsbC8uYXBwbHkgZ2V0IGdsb2JhbC1vYmplY3QgY29udGV4dAorICAgICAgICByZWplY3QuY2Fs
bCggdW5kZWZpbmVkLCB2YWx1ZSApOworICAgIH0KK30KKworalF1ZXJ5LmV4dGVuZCggeworCisg
ICAgRGVmZXJyZWQ6IGZ1bmN0aW9uKCBmdW5jICkgeworICAgICAgICB2YXIgdHVwbGVzID0gWwor
CisgICAgICAgICAgICAgICAgLy8gYWN0aW9uLCBhZGQgbGlzdGVuZXIsIGNhbGxiYWNrcywKKyAg
ICAgICAgICAgICAgICAvLyAuLi4gLnRoZW4gaGFuZGxlcnMsIGFyZ3VtZW50IGluZGV4LCBbZmlu
YWwgc3RhdGVdCisgICAgICAgICAgICAgICAgWyAibm90aWZ5IiwgInByb2dyZXNzIiwgalF1ZXJ5
LkNhbGxiYWNrcyggIm1lbW9yeSIgKSwKKyAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LkNhbGxi
YWNrcyggIm1lbW9yeSIgKSwgMiBdLAorICAgICAgICAgICAgICAgIFsgInJlc29sdmUiLCAiZG9u
ZSIsIGpRdWVyeS5DYWxsYmFja3MoICJvbmNlIG1lbW9yeSIgKSwKKyAgICAgICAgICAgICAgICAg
ICAgalF1ZXJ5LkNhbGxiYWNrcyggIm9uY2UgbWVtb3J5IiApLCAwLCAicmVzb2x2ZWQiIF0sCisg
ICAgICAgICAgICAgICAgWyAicmVqZWN0IiwgImZhaWwiLCBqUXVlcnkuQ2FsbGJhY2tzKCAib25j
ZSBtZW1vcnkiICksCisgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5DYWxsYmFja3MoICJvbmNl
IG1lbW9yeSIgKSwgMSwgInJlamVjdGVkIiBdCisgICAgICAgICAgICBdLAorICAgICAgICAgICAg
c3RhdGUgPSAicGVuZGluZyIsCisgICAgICAgICAgICBwcm9taXNlID0geworICAgICAgICAgICAg
ICAgIHN0YXRlOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRl
OworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgYWx3YXlzOiBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQuZG9uZSggYXJndW1lbnRzICkuZmFpbCgg
YXJndW1lbnRzICk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICAgICAgImNhdGNoIjogZnVuY3Rpb24oIGZuICkgeworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gcHJvbWlzZS50aGVuKCBudWxsLCBmbiApOworICAgICAg
ICAgICAgICAgIH0sCisKKyAgICAgICAgICAgICAgICAvLyBLZWVwIHBpcGUgZm9yIGJhY2stY29t
cGF0CisgICAgICAgICAgICAgICAgcGlwZTogZnVuY3Rpb24oIC8qIGZuRG9uZSwgZm5GYWlsLCBm
blByb2dyZXNzICovICkgeworICAgICAgICAgICAgICAgICAgICB2YXIgZm5zID0gYXJndW1lbnRz
OworCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBqUXVlcnkuRGVmZXJyZWQoIGZ1bmN0aW9u
KCBuZXdEZWZlciApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5lYWNoKCB0dXBs
ZXMsIGZ1bmN0aW9uKCBpLCB0dXBsZSApIHsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIE1hcCB0dXBsZXMgKHByb2dyZXNzLCBkb25lLCBmYWlsKSB0byBhcmd1bWVudHMgKGRvbmUs
IGZhaWwsIHByb2dyZXNzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmbiA9IGpR
dWVyeS5pc0Z1bmN0aW9uKCBmbnNbIHR1cGxlWyA0IF0gXSApICYmIGZuc1sgdHVwbGVbIDQgXSBd
OworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGVmZXJyZWQucHJvZ3Jlc3MoZnVu
Y3Rpb24oKSB7IGJpbmQgdG8gbmV3RGVmZXIgb3IgbmV3RGVmZXIubm90aWZ5IH0pCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gZGVmZXJyZWQuZG9uZShmdW5jdGlvbigpIHsgYmluZCB0
byBuZXdEZWZlciBvciBuZXdEZWZlci5yZXNvbHZlIH0pCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gZGVmZXJyZWQuZmFpbChmdW5jdGlvbigpIHsgYmluZCB0byBuZXdEZWZlciBvciBu
ZXdEZWZlci5yZWplY3QgfSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZFsg
dHVwbGVbIDEgXSBdKCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdmFyIHJldHVybmVkID0gZm4gJiYgZm4uYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHJldHVybmVkICYmIGpRdWVyeS5pc0Z1
bmN0aW9uKCByZXR1cm5lZC5wcm9taXNlICkgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm5lZC5wcm9taXNlKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAucHJvZ3Jlc3MoIG5ld0RlZmVyLm5vdGlmeSApCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLmRvbmUoIG5ld0RlZmVyLnJlc29sdmUgKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mYWlsKCBuZXdEZWZlci5yZWpl
Y3QgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0RlZmVyWyB0dXBsZVsgMCBdICsgIldpdGgi
IF0oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbiA/IFsgcmV0dXJuZWQgXSA6IGFy
Z3VtZW50cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0g
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGZucyA9IG51bGw7CisgICAgICAgICAgICAgICAgICAgIH0gKS5wcm9taXNlKCk7CisgICAgICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB0aGVuOiBmdW5jdGlvbiggb25GdWxmaWxsZWQs
IG9uUmVqZWN0ZWQsIG9uUHJvZ3Jlc3MgKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBtYXhE
ZXB0aCA9IDA7CisgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHJlc29sdmUoIGRlcHRoLCBk
ZWZlcnJlZCwgaGFuZGxlciwgc3BlY2lhbCApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdGhhdCA9
IHRoaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MgPSBhcmd1bWVudHMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pZ2h0VGhyb3cgPSBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXR1cm5lZCwgdGhl
bjsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3VwcG9ydDogUHJv
bWlzZXMvQSsgc2VjdGlvbiAyLjMuMy4zLjMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIGh0dHBzOi8vcHJvbWlzZXNhcGx1cy5jb20vI3BvaW50LTU5CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZ25vcmUgZG91YmxlLXJlc29sdXRpb24gYXR0
ZW1wdHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggZGVwdGggPCBt
YXhEZXB0aCApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybmVkID0gaGFuZGxlci5hcHBseSggdGhhdCwg
YXJncyApOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTdXBwb3J0
OiBQcm9taXNlcy9BKyBzZWN0aW9uIDIuMy4xCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBodHRwczovL3Byb21pc2VzYXBsdXMuY29tLyNwb2ludC00OAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCByZXR1cm5lZCA9PT0gZGVmZXJyZWQucHJv
bWlzZSgpICkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93
IG5ldyBUeXBlRXJyb3IoICJUaGVuYWJsZSBzZWxmLXJlc29sdXRpb24iICk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIFN1cHBvcnQ6IFByb21pc2VzL0ErIHNlY3Rpb25zIDIuMy4zLjEsIDMuNQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9wcm9taXNlc2Fw
bHVzLmNvbS8jcG9pbnQtNTQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IGh0dHBzOi8vcHJvbWlzZXNhcGx1cy5jb20vI3BvaW50LTc1CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBSZXRyaWV2ZSBgdGhlbmAgb25seSBvbmNlCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuID0gcmV0dXJuZWQgJiYKKworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6IFByb21pc2VzL0ErIHNl
Y3Rpb24gMi4zLjQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBo
dHRwczovL3Byb21pc2VzYXBsdXMuY29tLyNwb2ludC02NAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIE9ubHkgY2hlY2sgb2JqZWN0cyBhbmQgZnVuY3Rpb25zIGZv
ciB0aGVuYWJpbGl0eQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgg
dHlwZW9mIHJldHVybmVkID09PSAib2JqZWN0IiB8fAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0eXBlb2YgcmV0dXJuZWQgPT09ICJmdW5jdGlvbiIgKSAmJgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybmVkLnRoZW47CisK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEhhbmRsZSBhIHJldHVybmVk
IHRoZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGpRdWVy
eS5pc0Z1bmN0aW9uKCB0aGVuICkgKSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBTcGVjaWFsIHByb2Nlc3NvcnMgKG5vdGlmeSkganVzdCB3YWl0IGZvciBy
ZXNvbHV0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBz
cGVjaWFsICkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
aGVuLmNhbGwoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm5lZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlc29sdmUoIG1heERlcHRoLCBkZWZlcnJlZCwgSWRlbnRpdHksIHNwZWNpYWwgKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoIG1h
eERlcHRoLCBkZWZlcnJlZCwgVGhyb3dlciwgc3BlY2lhbCApCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBOb3JtYWwgcHJvY2Vzc29ycyAocmVzb2x2ZSkgYWxzbyBob29rIGlu
dG8gcHJvZ3Jlc3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgeworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIC4u
LmFuZCBkaXNyZWdhcmQgb2xkZXIgcmVzb2x1dGlvbiB2YWx1ZXMKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4RGVwdGgrKzsKKworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuLmNhbGwoCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5lZCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoIG1heERlcHRoLCBkZWZl
cnJlZCwgSWRlbnRpdHksIHNwZWNpYWwgKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc29sdmUoIG1heERlcHRoLCBkZWZlcnJlZCwgVGhyb3dlciwg
c3BlY2lhbCApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVzb2x2ZSggbWF4RGVwdGgsIGRlZmVycmVkLCBJZGVudGl0eSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5ub3RpZnlXaXRo
ICkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIEhhbmRsZSBhbGwgb3RoZXIgcmV0dXJuZWQgdmFsdWVzCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gT25seSBzdWJzdGl0dXRlIGhhbmRsZXJz
IHBhc3Mgb24gY29udGV4dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIGFuZCBtdWx0aXBsZSB2YWx1ZXMgKG5vbi1zcGVjIGJlaGF2aW9yKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggaGFuZGxlciAhPT0gSWRlbnRpdHkgKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgPSB1bmRl
ZmluZWQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3Mg
PSBbIHJldHVybmVkIF07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUHJvY2VzcyB0
aGUgdmFsdWUocykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBE
ZWZhdWx0IHByb2Nlc3MgaXMgcmVzb2x2ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICggc3BlY2lhbCB8fCBkZWZlcnJlZC5yZXNvbHZlV2l0aCApKCB0aGF0LCBhcmdz
ICk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gT25seSBub3JtYWwgcHJvY2Vzc29ycyAocmVzb2x2ZSkgY2F0Y2ggYW5kIHJlamVjdCBleGNl
cHRpb25zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3MgPSBzcGVjaWFs
ID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pZ2h0VGhyb3cgOgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbWlnaHRUaHJvdygpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKCBlICkgeworCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggalF1ZXJ5LkRlZmVycmVkLmV4Y2VwdGlv
bkhvb2sgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBqUXVlcnkuRGVmZXJyZWQuZXhjZXB0aW9uSG9vayggZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzLnN0YWNrVHJhY2UgKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6IFByb21pc2VzL0Er
IHNlY3Rpb24gMi4zLjMuMy40LjEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gaHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8jcG9pbnQtNjEKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWdub3JlIHBvc3QtcmVzb2x1
dGlvbiBleGNlcHRpb25zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICggZGVwdGggKyAxID49IG1heERlcHRoICkgeworCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBPbmx5IHN1YnN0aXR1dGUgaGFuZGxlcnMg
cGFzcyBvbiBjb250ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBhbmQgbXVsdGlwbGUgdmFsdWVzIChub24tc3BlYyBiZWhhdmlvcikKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggaGFuZGxlciAh
PT0gVGhyb3dlciApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0aGF0ID0gdW5kZWZpbmVkOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MgPSBbIGUgXTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0V2l0aCggdGhhdCwgYXJn
cyApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN1
cHBvcnQ6IFByb21pc2VzL0ErIHNlY3Rpb24gMi4zLjMuMy4xCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gaHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8jcG9pbnQtNTcKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBSZS1yZXNvbHZlIHByb21pc2VzIGltbWVkaWF0ZWx5IHRv
IGRvZGdlIGZhbHNlIHJlamVjdGlvbiBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gc3Vic2VxdWVudCBlcnJvcnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGRl
cHRoICkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzKCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBDYWxsIGFuIG9wdGlvbmFsIGhvb2sgdG8gcmVjb3JkIHRoZSBzdGFjaywg
aW4gY2FzZSBvZiBleGNlcHRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
c2luY2UgaXQncyBvdGhlcndpc2UgbG9zdCB3aGVuIGV4ZWN1dGlvbiBnb2VzIGFzeW5jCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggalF1ZXJ5LkRlZmVycmVkLmdldFN0YWNr
SG9vayApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3Muc3Rh
Y2tUcmFjZSA9IGpRdWVyeS5EZWZlcnJlZC5nZXRTdGFja0hvb2soKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5k
b3cuc2V0VGltZW91dCggcHJvY2VzcyApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4galF1ZXJ5LkRlZmVycmVkKCBmdW5jdGlvbiggbmV3RGVm
ZXIgKSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHByb2dyZXNzX2hhbmRsZXJzLmFk
ZCggLi4uICkKKyAgICAgICAgICAgICAgICAgICAgICAgIHR1cGxlc1sgMCBdWyAzIF0uYWRkKAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0RlZmVy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkuaXNGdW5jdGlvbiggb25Q
cm9ncmVzcyApID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uUHJvZ3Jl
c3MgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWRlbnRpdHksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0RlZmVyLm5vdGlmeVdpdGgKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgICAgICApOworCisgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBmdWxmaWxsZWRfaGFuZGxlcnMuYWRkKCAuLi4gKQorICAg
ICAgICAgICAgICAgICAgICAgICAgdHVwbGVzWyAxIF1bIDMgXS5hZGQoCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVzb2x2ZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3RGVmZXIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5pc0Z1bmN0aW9uKCBvbkZ1bGZpbGxlZCApID8K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRnVsZmlsbGVkIDoKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElkZW50aXR5CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICAgICAgKTsKKworICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gcmVqZWN0ZWRfaGFuZGxlcnMuYWRkKCAuLi4gKQorICAgICAgICAgICAg
ICAgICAgICAgICAgdHVwbGVzWyAyIF1bIDMgXS5hZGQoCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVzb2x2ZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3RGVmZXIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGpRdWVyeS5pc0Z1bmN0aW9uKCBvblJlamVjdGVkICkgPworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgb25SZWplY3RlZCA6CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBUaHJvd2VyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KQorICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICAgICAgfSApLnBy
b21pc2UoKTsKKyAgICAgICAgICAgICAgICB9LAorCisgICAgICAgICAgICAgICAgLy8gR2V0IGEg
cHJvbWlzZSBmb3IgdGhpcyBkZWZlcnJlZAorICAgICAgICAgICAgICAgIC8vIElmIG9iaiBpcyBw
cm92aWRlZCwgdGhlIHByb21pc2UgYXNwZWN0IGlzIGFkZGVkIHRvIHRoZSBvYmplY3QKKyAgICAg
ICAgICAgICAgICBwcm9taXNlOiBmdW5jdGlvbiggb2JqICkgeworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gb2JqICE9IG51bGwgPyBqUXVlcnkuZXh0ZW5kKCBvYmosIHByb21pc2UgKSA6IHBy
b21pc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGRl
ZmVycmVkID0ge307CisKKyAgICAgICAgLy8gQWRkIGxpc3Qtc3BlY2lmaWMgbWV0aG9kcworICAg
ICAgICBqUXVlcnkuZWFjaCggdHVwbGVzLCBmdW5jdGlvbiggaSwgdHVwbGUgKSB7CisgICAgICAg
ICAgICB2YXIgbGlzdCA9IHR1cGxlWyAyIF0sCisgICAgICAgICAgICAgICAgc3RhdGVTdHJpbmcg
PSB0dXBsZVsgNSBdOworCisgICAgICAgICAgICAvLyBwcm9taXNlLnByb2dyZXNzID0gbGlzdC5h
ZGQKKyAgICAgICAgICAgIC8vIHByb21pc2UuZG9uZSA9IGxpc3QuYWRkCisgICAgICAgICAgICAv
LyBwcm9taXNlLmZhaWwgPSBsaXN0LmFkZAorICAgICAgICAgICAgcHJvbWlzZVsgdHVwbGVbIDEg
XSBdID0gbGlzdC5hZGQ7CisKKyAgICAgICAgICAgIC8vIEhhbmRsZSBzdGF0ZQorICAgICAgICAg
ICAgaWYgKCBzdGF0ZVN0cmluZyApIHsKKyAgICAgICAgICAgICAgICBsaXN0LmFkZCgKKyAgICAg
ICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8v
IHN0YXRlID0gInJlc29sdmVkIiAoaS5lLiwgZnVsZmlsbGVkKQorICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gc3RhdGUgPSAicmVqZWN0ZWQiCisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0
ZSA9IHN0YXRlU3RyaW5nOworICAgICAgICAgICAgICAgICAgICB9LAorCisgICAgICAgICAgICAg
ICAgICAgIC8vIHJlamVjdGVkX2NhbGxiYWNrcy5kaXNhYmxlCisgICAgICAgICAgICAgICAgICAg
IC8vIGZ1bGZpbGxlZF9jYWxsYmFja3MuZGlzYWJsZQorICAgICAgICAgICAgICAgICAgICB0dXBs
ZXNbIDMgLSBpIF1bIDIgXS5kaXNhYmxlLAorCisgICAgICAgICAgICAgICAgICAgIC8vIHByb2dy
ZXNzX2NhbGxiYWNrcy5sb2NrCisgICAgICAgICAgICAgICAgICAgIHR1cGxlc1sgMCBdWyAyIF0u
bG9jaworICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8v
IHByb2dyZXNzX2hhbmRsZXJzLmZpcmUKKyAgICAgICAgICAgIC8vIGZ1bGZpbGxlZF9oYW5kbGVy
cy5maXJlCisgICAgICAgICAgICAvLyByZWplY3RlZF9oYW5kbGVycy5maXJlCisgICAgICAgICAg
ICBsaXN0LmFkZCggdHVwbGVbIDMgXS5maXJlICk7CisKKyAgICAgICAgICAgIC8vIGRlZmVycmVk
Lm5vdGlmeSA9IGZ1bmN0aW9uKCkgeyBkZWZlcnJlZC5ub3RpZnlXaXRoKC4uLikgfQorICAgICAg
ICAgICAgLy8gZGVmZXJyZWQucmVzb2x2ZSA9IGZ1bmN0aW9uKCkgeyBkZWZlcnJlZC5yZXNvbHZl
V2l0aCguLi4pIH0KKyAgICAgICAgICAgIC8vIGRlZmVycmVkLnJlamVjdCA9IGZ1bmN0aW9uKCkg
eyBkZWZlcnJlZC5yZWplY3RXaXRoKC4uLikgfQorICAgICAgICAgICAgZGVmZXJyZWRbIHR1cGxl
WyAwIF0gXSA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGRlZmVycmVkWyB0dXBsZVsg
MCBdICsgIldpdGgiIF0oIHRoaXMgPT09IGRlZmVycmVkID8gdW5kZWZpbmVkIDogdGhpcywgYXJn
dW1lbnRzICk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgICAgICB9Owor
CisgICAgICAgICAgICAvLyBkZWZlcnJlZC5ub3RpZnlXaXRoID0gbGlzdC5maXJlV2l0aAorICAg
ICAgICAgICAgLy8gZGVmZXJyZWQucmVzb2x2ZVdpdGggPSBsaXN0LmZpcmVXaXRoCisgICAgICAg
ICAgICAvLyBkZWZlcnJlZC5yZWplY3RXaXRoID0gbGlzdC5maXJlV2l0aAorICAgICAgICAgICAg
ZGVmZXJyZWRbIHR1cGxlWyAwIF0gKyAiV2l0aCIgXSA9IGxpc3QuZmlyZVdpdGg7CisgICAgICAg
IH0gKTsKKworICAgICAgICAvLyBNYWtlIHRoZSBkZWZlcnJlZCBhIHByb21pc2UKKyAgICAgICAg
cHJvbWlzZS5wcm9taXNlKCBkZWZlcnJlZCApOworCisgICAgICAgIC8vIENhbGwgZ2l2ZW4gZnVu
YyBpZiBhbnkKKyAgICAgICAgaWYgKCBmdW5jICkgeworICAgICAgICAgICAgZnVuYy5jYWxsKCBk
ZWZlcnJlZCwgZGVmZXJyZWQgKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEFsbCBkb25lIQor
ICAgICAgICByZXR1cm4gZGVmZXJyZWQ7CisgICAgfSwKKworICAgIC8vIERlZmVycmVkIGhlbHBl
cgorICAgIHdoZW46IGZ1bmN0aW9uKCBzaW5nbGVWYWx1ZSApIHsKKyAgICAgICAgdmFyCisKKyAg
ICAgICAgICAgIC8vIGNvdW50IG9mIHVuY29tcGxldGVkIHN1Ym9yZGluYXRlcworICAgICAgICAg
ICAgcmVtYWluaW5nID0gYXJndW1lbnRzLmxlbmd0aCwKKworICAgICAgICAgICAgLy8gY291bnQg
b2YgdW5wcm9jZXNzZWQgYXJndW1lbnRzCisgICAgICAgICAgICBpID0gcmVtYWluaW5nLAorCisg
ICAgICAgICAgICAvLyBzdWJvcmRpbmF0ZSBmdWxmaWxsbWVudCBkYXRhCisgICAgICAgICAgICBy
ZXNvbHZlQ29udGV4dHMgPSBBcnJheSggaSApLAorICAgICAgICAgICAgcmVzb2x2ZVZhbHVlcyA9
IHNsaWNlLmNhbGwoIGFyZ3VtZW50cyApLAorCisgICAgICAgICAgICAvLyB0aGUgbWFzdGVyIERl
ZmVycmVkCisgICAgICAgICAgICBtYXN0ZXIgPSBqUXVlcnkuRGVmZXJyZWQoKSwKKworICAgICAg
ICAgICAgLy8gc3Vib3JkaW5hdGUgY2FsbGJhY2sgZmFjdG9yeQorICAgICAgICAgICAgdXBkYXRl
RnVuYyA9IGZ1bmN0aW9uKCBpICkgeworICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbigg
dmFsdWUgKSB7CisgICAgICAgICAgICAgICAgICAgIHJlc29sdmVDb250ZXh0c1sgaSBdID0gdGhp
czsKKyAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZVZhbHVlc1sgaSBdID0gYXJndW1lbnRzLmxl
bmd0aCA+IDEgPyBzbGljZS5jYWxsKCBhcmd1bWVudHMgKSA6IHZhbHVlOworICAgICAgICAgICAg
ICAgICAgICBpZiAoICEoIC0tcmVtYWluaW5nICkgKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBtYXN0ZXIucmVzb2x2ZVdpdGgoIHJlc29sdmVDb250ZXh0cywgcmVzb2x2ZVZhbHVlcyApOwor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIH07
CisKKyAgICAgICAgLy8gU2luZ2xlLSBhbmQgZW1wdHkgYXJndW1lbnRzIGFyZSBhZG9wdGVkIGxp
a2UgUHJvbWlzZS5yZXNvbHZlCisgICAgICAgIGlmICggcmVtYWluaW5nIDw9IDEgKSB7CisgICAg
ICAgICAgICBhZG9wdFZhbHVlKCBzaW5nbGVWYWx1ZSwgbWFzdGVyLmRvbmUoIHVwZGF0ZUZ1bmMo
IGkgKSApLnJlc29sdmUsIG1hc3Rlci5yZWplY3QgKTsKKworICAgICAgICAgICAgLy8gVXNlIC50
aGVuKCkgdG8gdW53cmFwIHNlY29uZGFyeSB0aGVuYWJsZXMgKGNmLiBnaC0zMDAwKQorICAgICAg
ICAgICAgaWYgKCBtYXN0ZXIuc3RhdGUoKSA9PT0gInBlbmRpbmciIHx8CisgICAgICAgICAgICAg
ICAgalF1ZXJ5LmlzRnVuY3Rpb24oIHJlc29sdmVWYWx1ZXNbIGkgXSAmJiByZXNvbHZlVmFsdWVz
WyBpIF0udGhlbiApICkgeworCisgICAgICAgICAgICAgICAgcmV0dXJuIG1hc3Rlci50aGVuKCk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBNdWx0aXBsZSBhcmd1bWVu
dHMgYXJlIGFnZ3JlZ2F0ZWQgbGlrZSBQcm9taXNlLmFsbCBhcnJheSBlbGVtZW50cworICAgICAg
ICB3aGlsZSAoIGktLSApIHsKKyAgICAgICAgICAgIGFkb3B0VmFsdWUoIHJlc29sdmVWYWx1ZXNb
IGkgXSwgdXBkYXRlRnVuYyggaSApLCBtYXN0ZXIucmVqZWN0ICk7CisgICAgICAgIH0KKworICAg
ICAgICByZXR1cm4gbWFzdGVyLnByb21pc2UoKTsKKyAgICB9Cit9ICk7CisKKworLy8gVGhlc2Ug
dXN1YWxseSBpbmRpY2F0ZSBhIHByb2dyYW1tZXIgbWlzdGFrZSBkdXJpbmcgZGV2ZWxvcG1lbnQs
CisvLyB3YXJuIGFib3V0IHRoZW0gQVNBUCByYXRoZXIgdGhhbiBzd2FsbG93aW5nIHRoZW0gYnkg
ZGVmYXVsdC4KK3ZhciByZXJyb3JOYW1lcyA9IC9eKEV2YWx8SW50ZXJuYWx8UmFuZ2V8UmVmZXJl
bmNlfFN5bnRheHxUeXBlfFVSSSlFcnJvciQvOworCitqUXVlcnkuRGVmZXJyZWQuZXhjZXB0aW9u
SG9vayA9IGZ1bmN0aW9uKCBlcnJvciwgc3RhY2sgKSB7CisKKyAgICAvLyBTdXBwb3J0OiBJRSA4
IC0gOSBvbmx5CisgICAgLy8gQ29uc29sZSBleGlzdHMgd2hlbiBkZXYgdG9vbHMgYXJlIG9wZW4s
IHdoaWNoIGNhbiBoYXBwZW4gYXQgYW55IHRpbWUKKyAgICBpZiAoIHdpbmRvdy5jb25zb2xlICYm
IHdpbmRvdy5jb25zb2xlLndhcm4gJiYgZXJyb3IgJiYgcmVycm9yTmFtZXMudGVzdCggZXJyb3Iu
bmFtZSApICkgeworICAgICAgICB3aW5kb3cuY29uc29sZS53YXJuKCAialF1ZXJ5LkRlZmVycmVk
IGV4Y2VwdGlvbjogIiArIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBzdGFjayApOworICAg
IH0KK307CisKKworCisKK2pRdWVyeS5yZWFkeUV4Y2VwdGlvbiA9IGZ1bmN0aW9uKCBlcnJvciAp
IHsKKyAgICB3aW5kb3cuc2V0VGltZW91dCggZnVuY3Rpb24oKSB7CisgICAgICAgIHRocm93IGVy
cm9yOworICAgIH0gKTsKK307CisKKworCisKKy8vIFRoZSBkZWZlcnJlZCB1c2VkIG9uIERPTSBy
ZWFkeQordmFyIHJlYWR5TGlzdCA9IGpRdWVyeS5EZWZlcnJlZCgpOworCitqUXVlcnkuZm4ucmVh
ZHkgPSBmdW5jdGlvbiggZm4gKSB7CisKKyAgICByZWFkeUxpc3QKKyAgICAgICAgLnRoZW4oIGZu
ICkKKworICAgICAgICAvLyBXcmFwIGpRdWVyeS5yZWFkeUV4Y2VwdGlvbiBpbiBhIGZ1bmN0aW9u
IHNvIHRoYXQgdGhlIGxvb2t1cAorICAgICAgICAvLyBoYXBwZW5zIGF0IHRoZSB0aW1lIG9mIGVy
cm9yIGhhbmRsaW5nIGluc3RlYWQgb2YgY2FsbGJhY2sKKyAgICAgICAgLy8gcmVnaXN0cmF0aW9u
LgorICAgICAgICAuY2F0Y2goIGZ1bmN0aW9uKCBlcnJvciApIHsKKyAgICAgICAgICAgIGpRdWVy
eS5yZWFkeUV4Y2VwdGlvbiggZXJyb3IgKTsKKyAgICAgICAgfSApOworCisgICAgcmV0dXJuIHRo
aXM7Cit9OworCitqUXVlcnkuZXh0ZW5kKCB7CisKKyAgICAvLyBJcyB0aGUgRE9NIHJlYWR5IHRv
IGJlIHVzZWQ/IFNldCB0byB0cnVlIG9uY2UgaXQgb2NjdXJzLgorICAgIGlzUmVhZHk6IGZhbHNl
LAorCisgICAgLy8gQSBjb3VudGVyIHRvIHRyYWNrIGhvdyBtYW55IGl0ZW1zIHRvIHdhaXQgZm9y
IGJlZm9yZQorICAgIC8vIHRoZSByZWFkeSBldmVudCBmaXJlcy4gU2VlICM2NzgxCisgICAgcmVh
ZHlXYWl0OiAxLAorCisgICAgLy8gSG9sZCAob3IgcmVsZWFzZSkgdGhlIHJlYWR5IGV2ZW50Cisg
ICAgaG9sZFJlYWR5OiBmdW5jdGlvbiggaG9sZCApIHsKKyAgICAgICAgaWYgKCBob2xkICkgewor
ICAgICAgICAgICAgalF1ZXJ5LnJlYWR5V2FpdCsrOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgalF1ZXJ5LnJlYWR5KCB0cnVlICk7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgLy8g
SGFuZGxlIHdoZW4gdGhlIERPTSBpcyByZWFkeQorICAgIHJlYWR5OiBmdW5jdGlvbiggd2FpdCAp
IHsKKworICAgICAgICAvLyBBYm9ydCBpZiB0aGVyZSBhcmUgcGVuZGluZyBob2xkcyBvciB3ZSdy
ZSBhbHJlYWR5IHJlYWR5CisgICAgICAgIGlmICggd2FpdCA9PT0gdHJ1ZSA/IC0talF1ZXJ5LnJl
YWR5V2FpdCA6IGpRdWVyeS5pc1JlYWR5ICkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgLy8gUmVtZW1iZXIgdGhhdCB0aGUgRE9NIGlzIHJlYWR5CisgICAgICAg
IGpRdWVyeS5pc1JlYWR5ID0gdHJ1ZTsKKworICAgICAgICAvLyBJZiBhIG5vcm1hbCBET00gUmVh
ZHkgZXZlbnQgZmlyZWQsIGRlY3JlbWVudCwgYW5kIHdhaXQgaWYgbmVlZCBiZQorICAgICAgICBp
ZiAoIHdhaXQgIT09IHRydWUgJiYgLS1qUXVlcnkucmVhZHlXYWl0ID4gMCApIHsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIElmIHRoZXJlIGFyZSBmdW5jdGlv
bnMgYm91bmQsIHRvIGV4ZWN1dGUKKyAgICAgICAgcmVhZHlMaXN0LnJlc29sdmVXaXRoKCBkb2N1
bWVudCwgWyBqUXVlcnkgXSApOworICAgIH0KK30gKTsKKworalF1ZXJ5LnJlYWR5LnRoZW4gPSBy
ZWFkeUxpc3QudGhlbjsKKworLy8gVGhlIHJlYWR5IGV2ZW50IGhhbmRsZXIgYW5kIHNlbGYgY2xl
YW51cCBtZXRob2QKK2Z1bmN0aW9uIGNvbXBsZXRlZCgpIHsKKyAgICBkb2N1bWVudC5yZW1vdmVF
dmVudExpc3RlbmVyKCAiRE9NQ29udGVudExvYWRlZCIsIGNvbXBsZXRlZCApOworICAgIHdpbmRv
dy5yZW1vdmVFdmVudExpc3RlbmVyKCAibG9hZCIsIGNvbXBsZXRlZCApOworICAgIGpRdWVyeS5y
ZWFkeSgpOworfQorCisvLyBDYXRjaCBjYXNlcyB3aGVyZSAkKGRvY3VtZW50KS5yZWFkeSgpIGlz
IGNhbGxlZAorLy8gYWZ0ZXIgdGhlIGJyb3dzZXIgZXZlbnQgaGFzIGFscmVhZHkgb2NjdXJyZWQu
CisvLyBTdXBwb3J0OiBJRSA8PTkgLSAxMCBvbmx5CisvLyBPbGRlciBJRSBzb21ldGltZXMgc2ln
bmFscyAiaW50ZXJhY3RpdmUiIHRvbyBzb29uCitpZiAoIGRvY3VtZW50LnJlYWR5U3RhdGUgPT09
ICJjb21wbGV0ZSIgfHwKKyAgICAoIGRvY3VtZW50LnJlYWR5U3RhdGUgIT09ICJsb2FkaW5nIiAm
JiAhZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmRvU2Nyb2xsICkgKSB7CisKKyAgICAvLyBIYW5k
bGUgaXQgYXN5bmNocm9ub3VzbHkgdG8gYWxsb3cgc2NyaXB0cyB0aGUgb3Bwb3J0dW5pdHkgdG8g
ZGVsYXkgcmVhZHkKKyAgICB3aW5kb3cuc2V0VGltZW91dCggalF1ZXJ5LnJlYWR5ICk7CisKK30g
ZWxzZSB7CisKKyAgICAvLyBVc2UgdGhlIGhhbmR5IGV2ZW50IGNhbGxiYWNrCisgICAgZG9jdW1l
bnQuYWRkRXZlbnRMaXN0ZW5lciggIkRPTUNvbnRlbnRMb2FkZWQiLCBjb21wbGV0ZWQgKTsKKwor
ICAgIC8vIEEgZmFsbGJhY2sgdG8gd2luZG93Lm9ubG9hZCwgdGhhdCB3aWxsIGFsd2F5cyB3b3Jr
CisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoICJsb2FkIiwgY29tcGxldGVkICk7Cit9CisK
KworCisKKy8vIE11bHRpZnVuY3Rpb25hbCBtZXRob2QgdG8gZ2V0IGFuZCBzZXQgdmFsdWVzIG9m
IGEgY29sbGVjdGlvbgorLy8gVGhlIHZhbHVlL3MgY2FuIG9wdGlvbmFsbHkgYmUgZXhlY3V0ZWQg
aWYgaXQncyBhIGZ1bmN0aW9uCit2YXIgYWNjZXNzID0gZnVuY3Rpb24oIGVsZW1zLCBmbiwga2V5
LCB2YWx1ZSwgY2hhaW5hYmxlLCBlbXB0eUdldCwgcmF3ICkgeworICAgIHZhciBpID0gMCwKKyAg
ICAgICAgbGVuID0gZWxlbXMubGVuZ3RoLAorICAgICAgICBidWxrID0ga2V5ID09IG51bGw7CisK
KyAgICAvLyBTZXRzIG1hbnkgdmFsdWVzCisgICAgaWYgKCBqUXVlcnkudHlwZSgga2V5ICkgPT09
ICJvYmplY3QiICkgeworICAgICAgICBjaGFpbmFibGUgPSB0cnVlOworICAgICAgICBmb3IgKCBp
IGluIGtleSApIHsKKyAgICAgICAgICAgIGFjY2VzcyggZWxlbXMsIGZuLCBpLCBrZXlbIGkgXSwg
dHJ1ZSwgZW1wdHlHZXQsIHJhdyApOworICAgICAgICB9CisKKyAgICAvLyBTZXRzIG9uZSB2YWx1
ZQorICAgIH0gZWxzZSBpZiAoIHZhbHVlICE9PSB1bmRlZmluZWQgKSB7CisgICAgICAgIGNoYWlu
YWJsZSA9IHRydWU7CisKKyAgICAgICAgaWYgKCAhalF1ZXJ5LmlzRnVuY3Rpb24oIHZhbHVlICkg
KSB7CisgICAgICAgICAgICByYXcgPSB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCBi
dWxrICkgeworCisgICAgICAgICAgICAvLyBCdWxrIG9wZXJhdGlvbnMgcnVuIGFnYWluc3QgdGhl
IGVudGlyZSBzZXQKKyAgICAgICAgICAgIGlmICggcmF3ICkgeworICAgICAgICAgICAgICAgIGZu
LmNhbGwoIGVsZW1zLCB2YWx1ZSApOworICAgICAgICAgICAgICAgIGZuID0gbnVsbDsKKworICAg
ICAgICAgICAgLy8gLi4uZXhjZXB0IHdoZW4gZXhlY3V0aW5nIGZ1bmN0aW9uIHZhbHVlcworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBidWxrID0gZm47CisgICAgICAgICAg
ICAgICAgZm4gPSBmdW5jdGlvbiggZWxlbSwga2V5LCB2YWx1ZSApIHsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGJ1bGsuY2FsbCggalF1ZXJ5KCBlbGVtICksIHZhbHVlICk7CisgICAgICAg
ICAgICAgICAgfTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmICggZm4g
KSB7CisgICAgICAgICAgICBmb3IgKCA7IGkgPCBsZW47IGkrKyApIHsKKyAgICAgICAgICAgICAg
ICBmbigKKyAgICAgICAgICAgICAgICAgICAgZWxlbXNbIGkgXSwga2V5LCByYXcgPworICAgICAg
ICAgICAgICAgICAgICB2YWx1ZSA6CisgICAgICAgICAgICAgICAgICAgIHZhbHVlLmNhbGwoIGVs
ZW1zWyBpIF0sIGksIGZuKCBlbGVtc1sgaSBdLCBrZXkgKSApCisgICAgICAgICAgICAgICAgKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICggY2hhaW5hYmxlICkg
eworICAgICAgICByZXR1cm4gZWxlbXM7CisgICAgfQorCisgICAgLy8gR2V0cworICAgIGlmICgg
YnVsayApIHsKKyAgICAgICAgcmV0dXJuIGZuLmNhbGwoIGVsZW1zICk7CisgICAgfQorCisgICAg
cmV0dXJuIGxlbiA/IGZuKCBlbGVtc1sgMCBdLCBrZXkgKSA6IGVtcHR5R2V0OworfTsKK3ZhciBh
Y2NlcHREYXRhID0gZnVuY3Rpb24oIG93bmVyICkgeworCisgICAgLy8gQWNjZXB0cyBvbmx5Ogor
ICAgIC8vICAtIE5vZGUKKyAgICAvLyAgICAtIE5vZGUuRUxFTUVOVF9OT0RFCisgICAgLy8gICAg
LSBOb2RlLkRPQ1VNRU5UX05PREUKKyAgICAvLyAgLSBPYmplY3QKKyAgICAvLyAgICAtIEFueQor
ICAgIHJldHVybiBvd25lci5ub2RlVHlwZSA9PT0gMSB8fCBvd25lci5ub2RlVHlwZSA9PT0gOSB8
fCAhKCArb3duZXIubm9kZVR5cGUgKTsKK307CisKKworCisKK2Z1bmN0aW9uIERhdGEoKSB7Cisg
ICAgdGhpcy5leHBhbmRvID0galF1ZXJ5LmV4cGFuZG8gKyBEYXRhLnVpZCsrOworfQorCitEYXRh
LnVpZCA9IDE7CisKK0RhdGEucHJvdG90eXBlID0geworCisgICAgY2FjaGU6IGZ1bmN0aW9uKCBv
d25lciApIHsKKworICAgICAgICAvLyBDaGVjayBpZiB0aGUgb3duZXIgb2JqZWN0IGFscmVhZHkg
aGFzIGEgY2FjaGUKKyAgICAgICAgdmFyIHZhbHVlID0gb3duZXJbIHRoaXMuZXhwYW5kbyBdOwor
CisgICAgICAgIC8vIElmIG5vdCwgY3JlYXRlIG9uZQorICAgICAgICBpZiAoICF2YWx1ZSApIHsK
KyAgICAgICAgICAgIHZhbHVlID0ge307CisKKyAgICAgICAgICAgIC8vIFdlIGNhbiBhY2NlcHQg
ZGF0YSBmb3Igbm9uLWVsZW1lbnQgbm9kZXMgaW4gbW9kZXJuIGJyb3dzZXJzLAorICAgICAgICAg
ICAgLy8gYnV0IHdlIHNob3VsZCBub3QsIHNlZSAjODMzNS4KKyAgICAgICAgICAgIC8vIEFsd2F5
cyByZXR1cm4gYW4gZW1wdHkgb2JqZWN0LgorICAgICAgICAgICAgaWYgKCBhY2NlcHREYXRhKCBv
d25lciApICkgeworCisgICAgICAgICAgICAgICAgLy8gSWYgaXQgaXMgYSBub2RlIHVubGlrZWx5
IHRvIGJlIHN0cmluZ2lmeS1lZCBvciBsb29wZWQgb3ZlcgorICAgICAgICAgICAgICAgIC8vIHVz
ZSBwbGFpbiBhc3NpZ25tZW50CisgICAgICAgICAgICAgICAgaWYgKCBvd25lci5ub2RlVHlwZSAp
IHsKKyAgICAgICAgICAgICAgICAgICAgb3duZXJbIHRoaXMuZXhwYW5kbyBdID0gdmFsdWU7CisK
KyAgICAgICAgICAgICAgICAvLyBPdGhlcndpc2Ugc2VjdXJlIGl0IGluIGEgbm9uLWVudW1lcmFi
bGUgcHJvcGVydHkKKyAgICAgICAgICAgICAgICAvLyBjb25maWd1cmFibGUgbXVzdCBiZSB0cnVl
IHRvIGFsbG93IHRoZSBwcm9wZXJ0eSB0byBiZQorICAgICAgICAgICAgICAgIC8vIGRlbGV0ZWQg
d2hlbiBkYXRhIGlzIHJlbW92ZWQKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoIG93bmVyLCB0aGlzLmV4cGFuZG8sIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZQorICAgICAgICAgICAgICAgICAgICB9ICk7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJu
IHZhbHVlOworICAgIH0sCisgICAgc2V0OiBmdW5jdGlvbiggb3duZXIsIGRhdGEsIHZhbHVlICkg
eworICAgICAgICB2YXIgcHJvcCwKKyAgICAgICAgICAgIGNhY2hlID0gdGhpcy5jYWNoZSggb3du
ZXIgKTsKKworICAgICAgICAvLyBIYW5kbGU6IFsgb3duZXIsIGtleSwgdmFsdWUgXSBhcmdzCisg
ICAgICAgIC8vIEFsd2F5cyB1c2UgY2FtZWxDYXNlIGtleSAoZ2gtMjI1NykKKyAgICAgICAgaWYg
KCB0eXBlb2YgZGF0YSA9PT0gInN0cmluZyIgKSB7CisgICAgICAgICAgICBjYWNoZVsgalF1ZXJ5
LmNhbWVsQ2FzZSggZGF0YSApIF0gPSB2YWx1ZTsKKworICAgICAgICAvLyBIYW5kbGU6IFsgb3du
ZXIsIHsgcHJvcGVydGllcyB9IF0gYXJncworICAgICAgICB9IGVsc2UgeworCisgICAgICAgICAg
ICAvLyBDb3B5IHRoZSBwcm9wZXJ0aWVzIG9uZS1ieS1vbmUgdG8gdGhlIGNhY2hlIG9iamVjdAor
ICAgICAgICAgICAgZm9yICggcHJvcCBpbiBkYXRhICkgeworICAgICAgICAgICAgICAgIGNhY2hl
WyBqUXVlcnkuY2FtZWxDYXNlKCBwcm9wICkgXSA9IGRhdGFbIHByb3AgXTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gY2FjaGU7CisgICAgfSwKKyAgICBnZXQ6IGZ1
bmN0aW9uKCBvd25lciwga2V5ICkgeworICAgICAgICByZXR1cm4ga2V5ID09PSB1bmRlZmluZWQg
PworICAgICAgICAgICAgdGhpcy5jYWNoZSggb3duZXIgKSA6CisKKyAgICAgICAgICAgIC8vIEFs
d2F5cyB1c2UgY2FtZWxDYXNlIGtleSAoZ2gtMjI1NykKKyAgICAgICAgICAgIG93bmVyWyB0aGlz
LmV4cGFuZG8gXSAmJiBvd25lclsgdGhpcy5leHBhbmRvIF1bIGpRdWVyeS5jYW1lbENhc2UoIGtl
eSApIF07CisgICAgfSwKKyAgICBhY2Nlc3M6IGZ1bmN0aW9uKCBvd25lciwga2V5LCB2YWx1ZSAp
IHsKKworICAgICAgICAvLyBJbiBjYXNlcyB3aGVyZSBlaXRoZXI6CisgICAgICAgIC8vCisgICAg
ICAgIC8vICAgMS4gTm8ga2V5IHdhcyBzcGVjaWZpZWQKKyAgICAgICAgLy8gICAyLiBBIHN0cmlu
ZyBrZXkgd2FzIHNwZWNpZmllZCwgYnV0IG5vIHZhbHVlIHByb3ZpZGVkCisgICAgICAgIC8vCisg
ICAgICAgIC8vIFRha2UgdGhlICJyZWFkIiBwYXRoIGFuZCBhbGxvdyB0aGUgZ2V0IG1ldGhvZCB0
byBkZXRlcm1pbmUKKyAgICAgICAgLy8gd2hpY2ggdmFsdWUgdG8gcmV0dXJuLCByZXNwZWN0aXZl
bHkgZWl0aGVyOgorICAgICAgICAvLworICAgICAgICAvLyAgIDEuIFRoZSBlbnRpcmUgY2FjaGUg
b2JqZWN0CisgICAgICAgIC8vICAgMi4gVGhlIGRhdGEgc3RvcmVkIGF0IHRoZSBrZXkKKyAgICAg
ICAgLy8KKyAgICAgICAgaWYgKCBrZXkgPT09IHVuZGVmaW5lZCB8fAorICAgICAgICAgICAgICAg
ICggKCBrZXkgJiYgdHlwZW9mIGtleSA9PT0gInN0cmluZyIgKSAmJiB2YWx1ZSA9PT0gdW5kZWZp
bmVkICkgKSB7CisKKyAgICAgICAgICAgIHJldHVybiB0aGlzLmdldCggb3duZXIsIGtleSApOwor
ICAgICAgICB9CisKKyAgICAgICAgLy8gV2hlbiB0aGUga2V5IGlzIG5vdCBhIHN0cmluZywgb3Ig
Ym90aCBhIGtleSBhbmQgdmFsdWUKKyAgICAgICAgLy8gYXJlIHNwZWNpZmllZCwgc2V0IG9yIGV4
dGVuZCAoZXhpc3Rpbmcgb2JqZWN0cykgd2l0aCBlaXRoZXI6CisgICAgICAgIC8vCisgICAgICAg
IC8vICAgMS4gQW4gb2JqZWN0IG9mIHByb3BlcnRpZXMKKyAgICAgICAgLy8gICAyLiBBIGtleSBh
bmQgdmFsdWUKKyAgICAgICAgLy8KKyAgICAgICAgdGhpcy5zZXQoIG93bmVyLCBrZXksIHZhbHVl
ICk7CisKKyAgICAgICAgLy8gU2luY2UgdGhlICJzZXQiIHBhdGggY2FuIGhhdmUgdHdvIHBvc3Np
YmxlIGVudHJ5IHBvaW50cworICAgICAgICAvLyByZXR1cm4gdGhlIGV4cGVjdGVkIGRhdGEgYmFz
ZWQgb24gd2hpY2ggcGF0aCB3YXMgdGFrZW5bKl0KKyAgICAgICAgcmV0dXJuIHZhbHVlICE9PSB1
bmRlZmluZWQgPyB2YWx1ZSA6IGtleTsKKyAgICB9LAorICAgIHJlbW92ZTogZnVuY3Rpb24oIG93
bmVyLCBrZXkgKSB7CisgICAgICAgIHZhciBpLAorICAgICAgICAgICAgY2FjaGUgPSBvd25lclsg
dGhpcy5leHBhbmRvIF07CisKKyAgICAgICAgaWYgKCBjYWNoZSA9PT0gdW5kZWZpbmVkICkgewor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCBrZXkgIT09IHVu
ZGVmaW5lZCApIHsKKworICAgICAgICAgICAgLy8gU3VwcG9ydCBhcnJheSBvciBzcGFjZSBzZXBh
cmF0ZWQgc3RyaW5nIG9mIGtleXMKKyAgICAgICAgICAgIGlmICggalF1ZXJ5LmlzQXJyYXkoIGtl
eSApICkgeworCisgICAgICAgICAgICAgICAgLy8gSWYga2V5IGlzIGFuIGFycmF5IG9mIGtleXMu
Li4KKyAgICAgICAgICAgICAgICAvLyBXZSBhbHdheXMgc2V0IGNhbWVsQ2FzZSBrZXlzLCBzbyBy
ZW1vdmUgdGhhdC4KKyAgICAgICAgICAgICAgICBrZXkgPSBrZXkubWFwKCBqUXVlcnkuY2FtZWxD
YXNlICk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGtleSA9IGpRdWVy
eS5jYW1lbENhc2UoIGtleSApOworCisgICAgICAgICAgICAgICAgLy8gSWYgYSBrZXkgd2l0aCB0
aGUgc3BhY2VzIGV4aXN0cywgdXNlIGl0LgorICAgICAgICAgICAgICAgIC8vIE90aGVyd2lzZSwg
Y3JlYXRlIGFuIGFycmF5IGJ5IG1hdGNoaW5nIG5vbi13aGl0ZXNwYWNlCisgICAgICAgICAgICAg
ICAga2V5ID0ga2V5IGluIGNhY2hlID8KKyAgICAgICAgICAgICAgICAgICAgWyBrZXkgXSA6Cisg
ICAgICAgICAgICAgICAgICAgICgga2V5Lm1hdGNoKCBybm90aHRtbHdoaXRlICkgfHwgW10gKTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaSA9IGtleS5sZW5ndGg7CisKKyAgICAgICAg
ICAgIHdoaWxlICggaS0tICkgeworICAgICAgICAgICAgICAgIGRlbGV0ZSBjYWNoZVsga2V5WyBp
IF0gXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIFJlbW92ZSB0aGUg
ZXhwYW5kbyBpZiB0aGVyZSdzIG5vIG1vcmUgZGF0YQorICAgICAgICBpZiAoIGtleSA9PT0gdW5k
ZWZpbmVkIHx8IGpRdWVyeS5pc0VtcHR5T2JqZWN0KCBjYWNoZSApICkgeworCisgICAgICAgICAg
ICAvLyBTdXBwb3J0OiBDaHJvbWUgPD0zNSAtIDQ1CisgICAgICAgICAgICAvLyBXZWJraXQgJiBC
bGluayBwZXJmb3JtYW5jZSBzdWZmZXJzIHdoZW4gZGVsZXRpbmcgcHJvcGVydGllcworICAgICAg
ICAgICAgLy8gZnJvbSBET00gbm9kZXMsIHNvIHNldCB0byB1bmRlZmluZWQgaW5zdGVhZAorICAg
ICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9k
ZXRhaWw/aWQ9Mzc4NjA3IChidWcgcmVzdHJpY3RlZCkKKyAgICAgICAgICAgIGlmICggb3duZXIu
bm9kZVR5cGUgKSB7CisgICAgICAgICAgICAgICAgb3duZXJbIHRoaXMuZXhwYW5kbyBdID0gdW5k
ZWZpbmVkOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkZWxldGUgb3du
ZXJbIHRoaXMuZXhwYW5kbyBdOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSwKKyAg
ICBoYXNEYXRhOiBmdW5jdGlvbiggb3duZXIgKSB7CisgICAgICAgIHZhciBjYWNoZSA9IG93bmVy
WyB0aGlzLmV4cGFuZG8gXTsKKyAgICAgICAgcmV0dXJuIGNhY2hlICE9PSB1bmRlZmluZWQgJiYg
IWpRdWVyeS5pc0VtcHR5T2JqZWN0KCBjYWNoZSApOworICAgIH0KK307Cit2YXIgZGF0YVByaXYg
PSBuZXcgRGF0YSgpOworCit2YXIgZGF0YVVzZXIgPSBuZXcgRGF0YSgpOworCisKKworLy8gIElt
cGxlbWVudGF0aW9uIFN1bW1hcnkKKy8vCisvLyAgMS4gRW5mb3JjZSBBUEkgc3VyZmFjZSBhbmQg
c2VtYW50aWMgY29tcGF0aWJpbGl0eSB3aXRoIDEuOS54IGJyYW5jaAorLy8gIDIuIEltcHJvdmUg
dGhlIG1vZHVsZSdzIG1haW50YWluYWJpbGl0eSBieSByZWR1Y2luZyB0aGUgc3RvcmFnZQorLy8g
ICAgICBwYXRocyB0byBhIHNpbmdsZSBtZWNoYW5pc20uCisvLyAgMy4gVXNlIHRoZSBzYW1lIHNp
bmdsZSBtZWNoYW5pc20gdG8gc3VwcG9ydCAicHJpdmF0ZSIgYW5kICJ1c2VyIiBkYXRhLgorLy8g
IDQuIF9OZXZlcl8gZXhwb3NlICJwcml2YXRlIiBkYXRhIHRvIHVzZXIgY29kZSAoVE9ETzogRHJv
cCBfZGF0YSwgX3JlbW92ZURhdGEpCisvLyAgNS4gQXZvaWQgZXhwb3NpbmcgaW1wbGVtZW50YXRp
b24gZGV0YWlscyBvbiB1c2VyIG9iamVjdHMgKGVnLiBleHBhbmRvIHByb3BlcnRpZXMpCisvLyAg
Ni4gUHJvdmlkZSBhIGNsZWFyIHBhdGggZm9yIGltcGxlbWVudGF0aW9uIHVwZ3JhZGUgdG8gV2Vh
a01hcCBpbiAyMDE0CisKK3ZhciByYnJhY2UgPSAvXig/Olx7W1x3XFddKlx9fFxbW1x3XFddKlxd
KSQvLAorICAgIHJtdWx0aURhc2ggPSAvW0EtWl0vZzsKKworZnVuY3Rpb24gZ2V0RGF0YSggZGF0
YSApIHsKKyAgICBpZiAoIGRhdGEgPT09ICJ0cnVlIiApIHsKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorCisgICAgaWYgKCBkYXRhID09PSAiZmFsc2UiICkgeworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgaWYgKCBkYXRhID09PSAibnVsbCIgKSB7CisgICAgICAgIHJl
dHVybiBudWxsOworICAgIH0KKworICAgIC8vIE9ubHkgY29udmVydCB0byBhIG51bWJlciBpZiBp
dCBkb2Vzbid0IGNoYW5nZSB0aGUgc3RyaW5nCisgICAgaWYgKCBkYXRhID09PSArZGF0YSArICIi
ICkgeworICAgICAgICByZXR1cm4gK2RhdGE7CisgICAgfQorCisgICAgaWYgKCByYnJhY2UudGVz
dCggZGF0YSApICkgeworICAgICAgICByZXR1cm4gSlNPTi5wYXJzZSggZGF0YSApOworICAgIH0K
KworICAgIHJldHVybiBkYXRhOworfQorCitmdW5jdGlvbiBkYXRhQXR0ciggZWxlbSwga2V5LCBk
YXRhICkgeworICAgIHZhciBuYW1lOworCisgICAgLy8gSWYgbm90aGluZyB3YXMgZm91bmQgaW50
ZXJuYWxseSwgdHJ5IHRvIGZldGNoIGFueQorICAgIC8vIGRhdGEgZnJvbSB0aGUgSFRNTDUgZGF0
YS0qIGF0dHJpYnV0ZQorICAgIGlmICggZGF0YSA9PT0gdW5kZWZpbmVkICYmIGVsZW0ubm9kZVR5
cGUgPT09IDEgKSB7CisgICAgICAgIG5hbWUgPSAiZGF0YS0iICsga2V5LnJlcGxhY2UoIHJtdWx0
aURhc2gsICItJCYiICkudG9Mb3dlckNhc2UoKTsKKyAgICAgICAgZGF0YSA9IGVsZW0uZ2V0QXR0
cmlidXRlKCBuYW1lICk7CisKKyAgICAgICAgaWYgKCB0eXBlb2YgZGF0YSA9PT0gInN0cmluZyIg
KSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIGRhdGEgPSBnZXREYXRhKCBk
YXRhICk7CisgICAgICAgICAgICB9IGNhdGNoICggZSApIHt9CisKKyAgICAgICAgICAgIC8vIE1h
a2Ugc3VyZSB3ZSBzZXQgdGhlIGRhdGEgc28gaXQgaXNuJ3QgY2hhbmdlZCBsYXRlcgorICAgICAg
ICAgICAgZGF0YVVzZXIuc2V0KCBlbGVtLCBrZXksIGRhdGEgKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIGRhdGEgPSB1bmRlZmluZWQ7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0
dXJuIGRhdGE7Cit9CisKK2pRdWVyeS5leHRlbmQoIHsKKyAgICBoYXNEYXRhOiBmdW5jdGlvbigg
ZWxlbSApIHsKKyAgICAgICAgcmV0dXJuIGRhdGFVc2VyLmhhc0RhdGEoIGVsZW0gKSB8fCBkYXRh
UHJpdi5oYXNEYXRhKCBlbGVtICk7CisgICAgfSwKKworICAgIGRhdGE6IGZ1bmN0aW9uKCBlbGVt
LCBuYW1lLCBkYXRhICkgeworICAgICAgICByZXR1cm4gZGF0YVVzZXIuYWNjZXNzKCBlbGVtLCBu
YW1lLCBkYXRhICk7CisgICAgfSwKKworICAgIHJlbW92ZURhdGE6IGZ1bmN0aW9uKCBlbGVtLCBu
YW1lICkgeworICAgICAgICBkYXRhVXNlci5yZW1vdmUoIGVsZW0sIG5hbWUgKTsKKyAgICB9LAor
CisgICAgLy8gVE9ETzogTm93IHRoYXQgYWxsIGNhbGxzIHRvIF9kYXRhIGFuZCBfcmVtb3ZlRGF0
YSBoYXZlIGJlZW4gcmVwbGFjZWQKKyAgICAvLyB3aXRoIGRpcmVjdCBjYWxscyB0byBkYXRhUHJp
diBtZXRob2RzLCB0aGVzZSBjYW4gYmUgZGVwcmVjYXRlZC4KKyAgICBfZGF0YTogZnVuY3Rpb24o
IGVsZW0sIG5hbWUsIGRhdGEgKSB7CisgICAgICAgIHJldHVybiBkYXRhUHJpdi5hY2Nlc3MoIGVs
ZW0sIG5hbWUsIGRhdGEgKTsKKyAgICB9LAorCisgICAgX3JlbW92ZURhdGE6IGZ1bmN0aW9uKCBl
bGVtLCBuYW1lICkgeworICAgICAgICBkYXRhUHJpdi5yZW1vdmUoIGVsZW0sIG5hbWUgKTsKKyAg
ICB9Cit9ICk7CisKK2pRdWVyeS5mbi5leHRlbmQoIHsKKyAgICBkYXRhOiBmdW5jdGlvbigga2V5
LCB2YWx1ZSApIHsKKyAgICAgICAgdmFyIGksIG5hbWUsIGRhdGEsCisgICAgICAgICAgICBlbGVt
ID0gdGhpc1sgMCBdLAorICAgICAgICAgICAgYXR0cnMgPSBlbGVtICYmIGVsZW0uYXR0cmlidXRl
czsKKworICAgICAgICAvLyBHZXRzIGFsbCB2YWx1ZXMKKyAgICAgICAgaWYgKCBrZXkgPT09IHVu
ZGVmaW5lZCApIHsKKyAgICAgICAgICAgIGlmICggdGhpcy5sZW5ndGggKSB7CisgICAgICAgICAg
ICAgICAgZGF0YSA9IGRhdGFVc2VyLmdldCggZWxlbSApOworCisgICAgICAgICAgICAgICAgaWYg
KCBlbGVtLm5vZGVUeXBlID09PSAxICYmICFkYXRhUHJpdi5nZXQoIGVsZW0sICJoYXNEYXRhQXR0
cnMiICkgKSB7CisgICAgICAgICAgICAgICAgICAgIGkgPSBhdHRycy5sZW5ndGg7CisgICAgICAg
ICAgICAgICAgICAgIHdoaWxlICggaS0tICkgeworCisgICAgICAgICAgICAgICAgICAgICAgICAv
LyBTdXBwb3J0OiBJRSAxMSBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgYXR0
cnMgZWxlbWVudHMgY2FuIGJlIG51bGwgKCMxNDg5NCkKKyAgICAgICAgICAgICAgICAgICAgICAg
IGlmICggYXR0cnNbIGkgXSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0g
YXR0cnNbIGkgXS5uYW1lOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggbmFtZS5p
bmRleE9mKCAiZGF0YS0iICkgPT09IDAgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5hbWUgPSBqUXVlcnkuY2FtZWxDYXNlKCBuYW1lLnNsaWNlKCA1ICkgKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUF0dHIoIGVsZW0sIG5hbWUsIGRhdGFbIG5hbWUg
XSApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBkYXRhUHJp
di5zZXQoIGVsZW0sICJoYXNEYXRhQXR0cnMiLCB0cnVlICk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gZGF0YTsKKyAgICAgICAgfQorCisg
ICAgICAgIC8vIFNldHMgbXVsdGlwbGUgdmFsdWVzCisgICAgICAgIGlmICggdHlwZW9mIGtleSA9
PT0gIm9iamVjdCIgKSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgICAgICBkYXRhVXNlci5zZXQoIHRoaXMsIGtleSApOworICAgICAgICAg
ICAgfSApOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGFjY2VzcyggdGhpcywgZnVuY3Rp
b24oIHZhbHVlICkgeworICAgICAgICAgICAgdmFyIGRhdGE7CisKKyAgICAgICAgICAgIC8vIFRo
ZSBjYWxsaW5nIGpRdWVyeSBvYmplY3QgKGVsZW1lbnQgbWF0Y2hlcykgaXMgbm90IGVtcHR5Cisg
ICAgICAgICAgICAvLyAoYW5kIHRoZXJlZm9yZSBoYXMgYW4gZWxlbWVudCBhcHBlYXJzIGF0IHRo
aXNbIDAgXSkgYW5kIHRoZQorICAgICAgICAgICAgLy8gYHZhbHVlYCBwYXJhbWV0ZXIgd2FzIG5v
dCB1bmRlZmluZWQuIEFuIGVtcHR5IGpRdWVyeSBvYmplY3QKKyAgICAgICAgICAgIC8vIHdpbGwg
cmVzdWx0IGluIGB1bmRlZmluZWRgIGZvciBlbGVtID0gdGhpc1sgMCBdIHdoaWNoIHdpbGwKKyAg
ICAgICAgICAgIC8vIHRocm93IGFuIGV4Y2VwdGlvbiBpZiBhbiBhdHRlbXB0IHRvIHJlYWQgYSBk
YXRhIGNhY2hlIGlzIG1hZGUuCisgICAgICAgICAgICBpZiAoIGVsZW0gJiYgdmFsdWUgPT09IHVu
ZGVmaW5lZCApIHsKKworICAgICAgICAgICAgICAgIC8vIEF0dGVtcHQgdG8gZ2V0IGRhdGEgZnJv
bSB0aGUgY2FjaGUKKyAgICAgICAgICAgICAgICAvLyBUaGUga2V5IHdpbGwgYWx3YXlzIGJlIGNh
bWVsQ2FzZWQgaW4gRGF0YQorICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhVXNlci5nZXQoIGVs
ZW0sIGtleSApOworICAgICAgICAgICAgICAgIGlmICggZGF0YSAhPT0gdW5kZWZpbmVkICkgewor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF0YTsKKyAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICAvLyBBdHRlbXB0IHRvICJkaXNjb3ZlciIgdGhlIGRhdGEgaW4KKyAgICAg
ICAgICAgICAgICAvLyBIVE1MNSBjdXN0b20gZGF0YS0qIGF0dHJzCisgICAgICAgICAgICAgICAg
ZGF0YSA9IGRhdGFBdHRyKCBlbGVtLCBrZXkgKTsKKyAgICAgICAgICAgICAgICBpZiAoIGRhdGEg
IT09IHVuZGVmaW5lZCApIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGE7CisgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gV2UgdHJpZWQgcmVhbGx5IGhhcmQs
IGJ1dCB0aGUgZGF0YSBkb2Vzbid0IGV4aXN0LgorICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gU2V0IHRoZSBkYXRhLi4uCisgICAgICAgICAg
ICB0aGlzLmVhY2goIGZ1bmN0aW9uKCkgeworCisgICAgICAgICAgICAgICAgLy8gV2UgYWx3YXlz
IHN0b3JlIHRoZSBjYW1lbENhc2VkIGtleQorICAgICAgICAgICAgICAgIGRhdGFVc2VyLnNldCgg
dGhpcywga2V5LCB2YWx1ZSApOworICAgICAgICAgICAgfSApOworICAgICAgICB9LCBudWxsLCB2
YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDEsIG51bGwsIHRydWUgKTsKKyAgICB9LAorCisgICAg
cmVtb3ZlRGF0YTogZnVuY3Rpb24oIGtleSApIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZWFjaCgg
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBkYXRhVXNlci5yZW1vdmUoIHRoaXMsIGtleSApOwor
ICAgICAgICB9ICk7CisgICAgfQorfSApOworCisKK2pRdWVyeS5leHRlbmQoIHsKKyAgICBxdWV1
ZTogZnVuY3Rpb24oIGVsZW0sIHR5cGUsIGRhdGEgKSB7CisgICAgICAgIHZhciBxdWV1ZTsKKwor
ICAgICAgICBpZiAoIGVsZW0gKSB7CisgICAgICAgICAgICB0eXBlID0gKCB0eXBlIHx8ICJmeCIg
KSArICJxdWV1ZSI7CisgICAgICAgICAgICBxdWV1ZSA9IGRhdGFQcml2LmdldCggZWxlbSwgdHlw
ZSApOworCisgICAgICAgICAgICAvLyBTcGVlZCB1cCBkZXF1ZXVlIGJ5IGdldHRpbmcgb3V0IHF1
aWNrbHkgaWYgdGhpcyBpcyBqdXN0IGEgbG9va3VwCisgICAgICAgICAgICBpZiAoIGRhdGEgKSB7
CisgICAgICAgICAgICAgICAgaWYgKCAhcXVldWUgfHwgalF1ZXJ5LmlzQXJyYXkoIGRhdGEgKSAp
IHsKKyAgICAgICAgICAgICAgICAgICAgcXVldWUgPSBkYXRhUHJpdi5hY2Nlc3MoIGVsZW0sIHR5
cGUsIGpRdWVyeS5tYWtlQXJyYXkoIGRhdGEgKSApOworICAgICAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgICAgIHF1ZXVlLnB1c2goIGRhdGEgKTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gcXVldWUgfHwgW107CisgICAg
ICAgIH0KKyAgICB9LAorCisgICAgZGVxdWV1ZTogZnVuY3Rpb24oIGVsZW0sIHR5cGUgKSB7Cisg
ICAgICAgIHR5cGUgPSB0eXBlIHx8ICJmeCI7CisKKyAgICAgICAgdmFyIHF1ZXVlID0galF1ZXJ5
LnF1ZXVlKCBlbGVtLCB0eXBlICksCisgICAgICAgICAgICBzdGFydExlbmd0aCA9IHF1ZXVlLmxl
bmd0aCwKKyAgICAgICAgICAgIGZuID0gcXVldWUuc2hpZnQoKSwKKyAgICAgICAgICAgIGhvb2tz
ID0galF1ZXJ5Ll9xdWV1ZUhvb2tzKCBlbGVtLCB0eXBlICksCisgICAgICAgICAgICBuZXh0ID0g
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgalF1ZXJ5LmRlcXVldWUoIGVsZW0sIHR5cGUg
KTsKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgLy8gSWYgdGhlIGZ4IHF1ZXVlIGlzIGRlcXVl
dWVkLCBhbHdheXMgcmVtb3ZlIHRoZSBwcm9ncmVzcyBzZW50aW5lbAorICAgICAgICBpZiAoIGZu
ID09PSAiaW5wcm9ncmVzcyIgKSB7CisgICAgICAgICAgICBmbiA9IHF1ZXVlLnNoaWZ0KCk7Cisg
ICAgICAgICAgICBzdGFydExlbmd0aC0tOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCBmbiAp
IHsKKworICAgICAgICAgICAgLy8gQWRkIGEgcHJvZ3Jlc3Mgc2VudGluZWwgdG8gcHJldmVudCB0
aGUgZnggcXVldWUgZnJvbSBiZWluZworICAgICAgICAgICAgLy8gYXV0b21hdGljYWxseSBkZXF1
ZXVlZAorICAgICAgICAgICAgaWYgKCB0eXBlID09PSAiZngiICkgeworICAgICAgICAgICAgICAg
IHF1ZXVlLnVuc2hpZnQoICJpbnByb2dyZXNzIiApOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAvLyBDbGVhciB1cCB0aGUgbGFzdCBxdWV1ZSBzdG9wIGZ1bmN0aW9uCisgICAgICAgICAg
ICBkZWxldGUgaG9va3Muc3RvcDsKKyAgICAgICAgICAgIGZuLmNhbGwoIGVsZW0sIG5leHQsIGhv
b2tzICk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoICFzdGFydExlbmd0aCAmJiBob29rcyAp
IHsKKyAgICAgICAgICAgIGhvb2tzLmVtcHR5LmZpcmUoKTsKKyAgICAgICAgfQorICAgIH0sCisK
KyAgICAvLyBOb3QgcHVibGljIC0gZ2VuZXJhdGUgYSBxdWV1ZUhvb2tzIG9iamVjdCwgb3IgcmV0
dXJuIHRoZSBjdXJyZW50IG9uZQorICAgIF9xdWV1ZUhvb2tzOiBmdW5jdGlvbiggZWxlbSwgdHlw
ZSApIHsKKyAgICAgICAgdmFyIGtleSA9IHR5cGUgKyAicXVldWVIb29rcyI7CisgICAgICAgIHJl
dHVybiBkYXRhUHJpdi5nZXQoIGVsZW0sIGtleSApIHx8IGRhdGFQcml2LmFjY2VzcyggZWxlbSwg
a2V5LCB7CisgICAgICAgICAgICBlbXB0eTogalF1ZXJ5LkNhbGxiYWNrcyggIm9uY2UgbWVtb3J5
IiApLmFkZCggZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgZGF0YVByaXYucmVtb3ZlKCBl
bGVtLCBbIHR5cGUgKyAicXVldWUiLCBrZXkgXSApOworICAgICAgICAgICAgfSApCisgICAgICAg
IH0gKTsKKyAgICB9Cit9ICk7CisKK2pRdWVyeS5mbi5leHRlbmQoIHsKKyAgICBxdWV1ZTogZnVu
Y3Rpb24oIHR5cGUsIGRhdGEgKSB7CisgICAgICAgIHZhciBzZXR0ZXIgPSAyOworCisgICAgICAg
IGlmICggdHlwZW9mIHR5cGUgIT09ICJzdHJpbmciICkgeworICAgICAgICAgICAgZGF0YSA9IHR5
cGU7CisgICAgICAgICAgICB0eXBlID0gImZ4IjsKKyAgICAgICAgICAgIHNldHRlci0tOworICAg
ICAgICB9CisKKyAgICAgICAgaWYgKCBhcmd1bWVudHMubGVuZ3RoIDwgc2V0dGVyICkgeworICAg
ICAgICAgICAgcmV0dXJuIGpRdWVyeS5xdWV1ZSggdGhpc1sgMCBdLCB0eXBlICk7CisgICAgICAg
IH0KKworICAgICAgICByZXR1cm4gZGF0YSA9PT0gdW5kZWZpbmVkID8KKyAgICAgICAgICAgIHRo
aXMgOgorICAgICAgICAgICAgdGhpcy5lYWNoKCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAg
ICB2YXIgcXVldWUgPSBqUXVlcnkucXVldWUoIHRoaXMsIHR5cGUsIGRhdGEgKTsKKworICAgICAg
ICAgICAgICAgIC8vIEVuc3VyZSBhIGhvb2tzIGZvciB0aGlzIHF1ZXVlCisgICAgICAgICAgICAg
ICAgalF1ZXJ5Ll9xdWV1ZUhvb2tzKCB0aGlzLCB0eXBlICk7CisKKyAgICAgICAgICAgICAgICBp
ZiAoIHR5cGUgPT09ICJmeCIgJiYgcXVldWVbIDAgXSAhPT0gImlucHJvZ3Jlc3MiICkgeworICAg
ICAgICAgICAgICAgICAgICBqUXVlcnkuZGVxdWV1ZSggdGhpcywgdHlwZSApOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0gKTsKKyAgICB9LAorICAgIGRlcXVldWU6IGZ1bmN0aW9u
KCB0eXBlICkgeworICAgICAgICByZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgIGpRdWVyeS5kZXF1ZXVlKCB0aGlzLCB0eXBlICk7CisgICAgICAgIH0gKTsKKyAgICB9
LAorICAgIGNsZWFyUXVldWU6IGZ1bmN0aW9uKCB0eXBlICkgeworICAgICAgICByZXR1cm4gdGhp
cy5xdWV1ZSggdHlwZSB8fCAiZngiLCBbXSApOworICAgIH0sCisKKyAgICAvLyBHZXQgYSBwcm9t
aXNlIHJlc29sdmVkIHdoZW4gcXVldWVzIG9mIGEgY2VydGFpbiB0eXBlCisgICAgLy8gYXJlIGVt
cHRpZWQgKGZ4IGlzIHRoZSB0eXBlIGJ5IGRlZmF1bHQpCisgICAgcHJvbWlzZTogZnVuY3Rpb24o
IHR5cGUsIG9iaiApIHsKKyAgICAgICAgdmFyIHRtcCwKKyAgICAgICAgICAgIGNvdW50ID0gMSwK
KyAgICAgICAgICAgIGRlZmVyID0galF1ZXJ5LkRlZmVycmVkKCksCisgICAgICAgICAgICBlbGVt
ZW50cyA9IHRoaXMsCisgICAgICAgICAgICBpID0gdGhpcy5sZW5ndGgsCisgICAgICAgICAgICBy
ZXNvbHZlID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgaWYgKCAhKCAtLWNvdW50ICkg
KSB7CisgICAgICAgICAgICAgICAgICAgIGRlZmVyLnJlc29sdmVXaXRoKCBlbGVtZW50cywgWyBl
bGVtZW50cyBdICk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfTsKKworICAgICAg
ICBpZiAoIHR5cGVvZiB0eXBlICE9PSAic3RyaW5nIiApIHsKKyAgICAgICAgICAgIG9iaiA9IHR5
cGU7CisgICAgICAgICAgICB0eXBlID0gdW5kZWZpbmVkOworICAgICAgICB9CisgICAgICAgIHR5
cGUgPSB0eXBlIHx8ICJmeCI7CisKKyAgICAgICAgd2hpbGUgKCBpLS0gKSB7CisgICAgICAgICAg
ICB0bXAgPSBkYXRhUHJpdi5nZXQoIGVsZW1lbnRzWyBpIF0sIHR5cGUgKyAicXVldWVIb29rcyIg
KTsKKyAgICAgICAgICAgIGlmICggdG1wICYmIHRtcC5lbXB0eSApIHsKKyAgICAgICAgICAgICAg
ICBjb3VudCsrOworICAgICAgICAgICAgICAgIHRtcC5lbXB0eS5hZGQoIHJlc29sdmUgKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXNvbHZlKCk7CisgICAgICAgIHJldHVy
biBkZWZlci5wcm9taXNlKCBvYmogKTsKKyAgICB9Cit9ICk7Cit2YXIgcG51bSA9ICggL1srLV0/
KD86XGQqXC58KVxkKyg/OltlRV1bKy1dP1xkK3wpLyApLnNvdXJjZTsKKwordmFyIHJjc3NOdW0g
PSBuZXcgUmVnRXhwKCAiXig/OihbKy1dKT18KSgiICsgcG51bSArICIpKFthLXolXSopJCIsICJp
IiApOworCisKK3ZhciBjc3NFeHBhbmQgPSBbICJUb3AiLCAiUmlnaHQiLCAiQm90dG9tIiwgIkxl
ZnQiIF07CisKK3ZhciBpc0hpZGRlbldpdGhpblRyZWUgPSBmdW5jdGlvbiggZWxlbSwgZWwgKSB7
CisKKyAgICAgICAgLy8gaXNIaWRkZW5XaXRoaW5UcmVlIG1pZ2h0IGJlIGNhbGxlZCBmcm9tIGpR
dWVyeSNmaWx0ZXIgZnVuY3Rpb247CisgICAgICAgIC8vIGluIHRoYXQgY2FzZSwgZWxlbWVudCB3
aWxsIGJlIHNlY29uZCBhcmd1bWVudAorICAgICAgICBlbGVtID0gZWwgfHwgZWxlbTsKKworICAg
ICAgICAvLyBJbmxpbmUgc3R5bGUgdHJ1bXBzIGFsbAorICAgICAgICByZXR1cm4gZWxlbS5zdHls
ZS5kaXNwbGF5ID09PSAibm9uZSIgfHwKKyAgICAgICAgICAgIGVsZW0uc3R5bGUuZGlzcGxheSA9
PT0gIiIgJiYKKworICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCBjaGVjayBjb21wdXRlZCBzdHls
ZQorICAgICAgICAgICAgLy8gU3VwcG9ydDogRmlyZWZveCA8PTQzIC0gNDUKKyAgICAgICAgICAg
IC8vIERpc2Nvbm5lY3RlZCBlbGVtZW50cyBjYW4gaGF2ZSBjb21wdXRlZCBkaXNwbGF5OiBub25l
LCBzbyBmaXJzdCBjb25maXJtIHRoYXQgZWxlbSBpcworICAgICAgICAgICAgLy8gaW4gdGhlIGRv
Y3VtZW50LgorICAgICAgICAgICAgalF1ZXJ5LmNvbnRhaW5zKCBlbGVtLm93bmVyRG9jdW1lbnQs
IGVsZW0gKSAmJgorCisgICAgICAgICAgICBqUXVlcnkuY3NzKCBlbGVtLCAiZGlzcGxheSIgKSA9
PT0gIm5vbmUiOworICAgIH07CisKK3ZhciBzd2FwID0gZnVuY3Rpb24oIGVsZW0sIG9wdGlvbnMs
IGNhbGxiYWNrLCBhcmdzICkgeworICAgIHZhciByZXQsIG5hbWUsCisgICAgICAgIG9sZCA9IHt9
OworCisgICAgLy8gUmVtZW1iZXIgdGhlIG9sZCB2YWx1ZXMsIGFuZCBpbnNlcnQgdGhlIG5ldyBv
bmVzCisgICAgZm9yICggbmFtZSBpbiBvcHRpb25zICkgeworICAgICAgICBvbGRbIG5hbWUgXSA9
IGVsZW0uc3R5bGVbIG5hbWUgXTsKKyAgICAgICAgZWxlbS5zdHlsZVsgbmFtZSBdID0gb3B0aW9u
c1sgbmFtZSBdOworICAgIH0KKworICAgIHJldCA9IGNhbGxiYWNrLmFwcGx5KCBlbGVtLCBhcmdz
IHx8IFtdICk7CisKKyAgICAvLyBSZXZlcnQgdGhlIG9sZCB2YWx1ZXMKKyAgICBmb3IgKCBuYW1l
IGluIG9wdGlvbnMgKSB7CisgICAgICAgIGVsZW0uc3R5bGVbIG5hbWUgXSA9IG9sZFsgbmFtZSBd
OworICAgIH0KKworICAgIHJldHVybiByZXQ7Cit9OworCisKKworCitmdW5jdGlvbiBhZGp1c3RD
U1MoIGVsZW0sIHByb3AsIHZhbHVlUGFydHMsIHR3ZWVuICkgeworICAgIHZhciBhZGp1c3RlZCwK
KyAgICAgICAgc2NhbGUgPSAxLAorICAgICAgICBtYXhJdGVyYXRpb25zID0gMjAsCisgICAgICAg
IGN1cnJlbnRWYWx1ZSA9IHR3ZWVuID8KKyAgICAgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgICAgIHJldHVybiB0d2Vlbi5jdXIoKTsKKyAgICAgICAgICAgIH0gOgorICAgICAgICAg
ICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGpRdWVyeS5jc3MoIGVsZW0s
IHByb3AsICIiICk7CisgICAgICAgICAgICB9LAorICAgICAgICBpbml0aWFsID0gY3VycmVudFZh
bHVlKCksCisgICAgICAgIHVuaXQgPSB2YWx1ZVBhcnRzICYmIHZhbHVlUGFydHNbIDMgXSB8fCAo
IGpRdWVyeS5jc3NOdW1iZXJbIHByb3AgXSA/ICIiIDogInB4IiApLAorCisgICAgICAgIC8vIFN0
YXJ0aW5nIHZhbHVlIGNvbXB1dGF0aW9uIGlzIHJlcXVpcmVkIGZvciBwb3RlbnRpYWwgdW5pdCBt
aXNtYXRjaGVzCisgICAgICAgIGluaXRpYWxJblVuaXQgPSAoIGpRdWVyeS5jc3NOdW1iZXJbIHBy
b3AgXSB8fCB1bml0ICE9PSAicHgiICYmICtpbml0aWFsICkgJiYKKyAgICAgICAgICAgIHJjc3NO
dW0uZXhlYyggalF1ZXJ5LmNzcyggZWxlbSwgcHJvcCApICk7CisKKyAgICBpZiAoIGluaXRpYWxJ
blVuaXQgJiYgaW5pdGlhbEluVW5pdFsgMyBdICE9PSB1bml0ICkgeworCisgICAgICAgIC8vIFRy
dXN0IHVuaXRzIHJlcG9ydGVkIGJ5IGpRdWVyeS5jc3MKKyAgICAgICAgdW5pdCA9IHVuaXQgfHwg
aW5pdGlhbEluVW5pdFsgMyBdOworCisgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSB1cGRhdGUgdGhl
IHR3ZWVuIHByb3BlcnRpZXMgbGF0ZXIgb24KKyAgICAgICAgdmFsdWVQYXJ0cyA9IHZhbHVlUGFy
dHMgfHwgW107CisKKyAgICAgICAgLy8gSXRlcmF0aXZlbHkgYXBwcm94aW1hdGUgZnJvbSBhIG5v
bnplcm8gc3RhcnRpbmcgcG9pbnQKKyAgICAgICAgaW5pdGlhbEluVW5pdCA9ICtpbml0aWFsIHx8
IDE7CisKKyAgICAgICAgZG8geworCisgICAgICAgICAgICAvLyBJZiBwcmV2aW91cyBpdGVyYXRp
b24gemVyb2VkIG91dCwgZG91YmxlIHVudGlsIHdlIGdldCAqc29tZXRoaW5nKi4KKyAgICAgICAg
ICAgIC8vIFVzZSBzdHJpbmcgZm9yIGRvdWJsaW5nIHNvIHdlIGRvbid0IGFjY2lkZW50YWxseSBz
ZWUgc2NhbGUgYXMgdW5jaGFuZ2VkIGJlbG93CisgICAgICAgICAgICBzY2FsZSA9IHNjYWxlIHx8
ICIuNSI7CisKKyAgICAgICAgICAgIC8vIEFkanVzdCBhbmQgYXBwbHkKKyAgICAgICAgICAgIGlu
aXRpYWxJblVuaXQgPSBpbml0aWFsSW5Vbml0IC8gc2NhbGU7CisgICAgICAgICAgICBqUXVlcnku
c3R5bGUoIGVsZW0sIHByb3AsIGluaXRpYWxJblVuaXQgKyB1bml0ICk7CisKKyAgICAgICAgLy8g
VXBkYXRlIHNjYWxlLCB0b2xlcmF0aW5nIHplcm8gb3IgTmFOIGZyb20gdHdlZW4uY3VyKCkKKyAg
ICAgICAgLy8gQnJlYWsgdGhlIGxvb3AgaWYgc2NhbGUgaXMgdW5jaGFuZ2VkIG9yIHBlcmZlY3Qs
IG9yIGlmIHdlJ3ZlIGp1c3QgaGFkIGVub3VnaC4KKyAgICAgICAgfSB3aGlsZSAoCisgICAgICAg
ICAgICBzY2FsZSAhPT0gKCBzY2FsZSA9IGN1cnJlbnRWYWx1ZSgpIC8gaW5pdGlhbCApICYmIHNj
YWxlICE9PSAxICYmIC0tbWF4SXRlcmF0aW9ucworICAgICAgICApOworICAgIH0KKworICAgIGlm
ICggdmFsdWVQYXJ0cyApIHsKKyAgICAgICAgaW5pdGlhbEluVW5pdCA9ICtpbml0aWFsSW5Vbml0
IHx8ICtpbml0aWFsIHx8IDA7CisKKyAgICAgICAgLy8gQXBwbHkgcmVsYXRpdmUgb2Zmc2V0ICgr
PS8tPSkgaWYgc3BlY2lmaWVkCisgICAgICAgIGFkanVzdGVkID0gdmFsdWVQYXJ0c1sgMSBdID8K
KyAgICAgICAgICAgIGluaXRpYWxJblVuaXQgKyAoIHZhbHVlUGFydHNbIDEgXSArIDEgKSAqIHZh
bHVlUGFydHNbIDIgXSA6CisgICAgICAgICAgICArdmFsdWVQYXJ0c1sgMiBdOworICAgICAgICBp
ZiAoIHR3ZWVuICkgeworICAgICAgICAgICAgdHdlZW4udW5pdCA9IHVuaXQ7CisgICAgICAgICAg
ICB0d2Vlbi5zdGFydCA9IGluaXRpYWxJblVuaXQ7CisgICAgICAgICAgICB0d2Vlbi5lbmQgPSBh
ZGp1c3RlZDsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gYWRqdXN0ZWQ7Cit9CisKKwor
dmFyIGRlZmF1bHREaXNwbGF5TWFwID0ge307CisKK2Z1bmN0aW9uIGdldERlZmF1bHREaXNwbGF5
KCBlbGVtICkgeworICAgIHZhciB0ZW1wLAorICAgICAgICBkb2MgPSBlbGVtLm93bmVyRG9jdW1l
bnQsCisgICAgICAgIG5vZGVOYW1lID0gZWxlbS5ub2RlTmFtZSwKKyAgICAgICAgZGlzcGxheSA9
IGRlZmF1bHREaXNwbGF5TWFwWyBub2RlTmFtZSBdOworCisgICAgaWYgKCBkaXNwbGF5ICkgewor
ICAgICAgICByZXR1cm4gZGlzcGxheTsKKyAgICB9CisKKyAgICB0ZW1wID0gZG9jLmJvZHkuYXBw
ZW5kQ2hpbGQoIGRvYy5jcmVhdGVFbGVtZW50KCBub2RlTmFtZSApICk7CisgICAgZGlzcGxheSA9
IGpRdWVyeS5jc3MoIHRlbXAsICJkaXNwbGF5IiApOworCisgICAgdGVtcC5wYXJlbnROb2RlLnJl
bW92ZUNoaWxkKCB0ZW1wICk7CisKKyAgICBpZiAoIGRpc3BsYXkgPT09ICJub25lIiApIHsKKyAg
ICAgICAgZGlzcGxheSA9ICJibG9jayI7CisgICAgfQorICAgIGRlZmF1bHREaXNwbGF5TWFwWyBu
b2RlTmFtZSBdID0gZGlzcGxheTsKKworICAgIHJldHVybiBkaXNwbGF5OworfQorCitmdW5jdGlv
biBzaG93SGlkZSggZWxlbWVudHMsIHNob3cgKSB7CisgICAgdmFyIGRpc3BsYXksIGVsZW0sCisg
ICAgICAgIHZhbHVlcyA9IFtdLAorICAgICAgICBpbmRleCA9IDAsCisgICAgICAgIGxlbmd0aCA9
IGVsZW1lbnRzLmxlbmd0aDsKKworICAgIC8vIERldGVybWluZSBuZXcgZGlzcGxheSB2YWx1ZSBm
b3IgZWxlbWVudHMgdGhhdCBuZWVkIHRvIGNoYW5nZQorICAgIGZvciAoIDsgaW5kZXggPCBsZW5n
dGg7IGluZGV4KysgKSB7CisgICAgICAgIGVsZW0gPSBlbGVtZW50c1sgaW5kZXggXTsKKyAgICAg
ICAgaWYgKCAhZWxlbS5zdHlsZSApIHsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9
CisKKyAgICAgICAgZGlzcGxheSA9IGVsZW0uc3R5bGUuZGlzcGxheTsKKyAgICAgICAgaWYgKCBz
aG93ICkgeworCisgICAgICAgICAgICAvLyBTaW5jZSB3ZSBmb3JjZSB2aXNpYmlsaXR5IHVwb24g
Y2FzY2FkZS1oaWRkZW4gZWxlbWVudHMsIGFuIGltbWVkaWF0ZSAoYW5kIHNsb3cpCisgICAgICAg
ICAgICAvLyBjaGVjayBpcyByZXF1aXJlZCBpbiB0aGlzIGZpcnN0IGxvb3AgdW5sZXNzIHdlIGhh
dmUgYSBub25lbXB0eSBkaXNwbGF5IHZhbHVlIChlaXRoZXIKKyAgICAgICAgICAgIC8vIGlubGlu
ZSBvciBhYm91dC10by1iZS1yZXN0b3JlZCkKKyAgICAgICAgICAgIGlmICggZGlzcGxheSA9PT0g
Im5vbmUiICkgeworICAgICAgICAgICAgICAgIHZhbHVlc1sgaW5kZXggXSA9IGRhdGFQcml2Lmdl
dCggZWxlbSwgImRpc3BsYXkiICkgfHwgbnVsbDsKKyAgICAgICAgICAgICAgICBpZiAoICF2YWx1
ZXNbIGluZGV4IF0gKSB7CisgICAgICAgICAgICAgICAgICAgIGVsZW0uc3R5bGUuZGlzcGxheSA9
ICIiOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICgg
ZWxlbS5zdHlsZS5kaXNwbGF5ID09PSAiIiAmJiBpc0hpZGRlbldpdGhpblRyZWUoIGVsZW0gKSAp
IHsKKyAgICAgICAgICAgICAgICB2YWx1ZXNbIGluZGV4IF0gPSBnZXREZWZhdWx0RGlzcGxheSgg
ZWxlbSApOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYg
KCBkaXNwbGF5ICE9PSAibm9uZSIgKSB7CisgICAgICAgICAgICAgICAgdmFsdWVzWyBpbmRleCBd
ID0gIm5vbmUiOworCisgICAgICAgICAgICAgICAgLy8gUmVtZW1iZXIgd2hhdCB3ZSdyZSBvdmVy
d3JpdGluZworICAgICAgICAgICAgICAgIGRhdGFQcml2LnNldCggZWxlbSwgImRpc3BsYXkiLCBk
aXNwbGF5ICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBTZXQg
dGhlIGRpc3BsYXkgb2YgdGhlIGVsZW1lbnRzIGluIGEgc2Vjb25kIGxvb3AgdG8gYXZvaWQgY29u
c3RhbnQgcmVmbG93CisgICAgZm9yICggaW5kZXggPSAwOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgr
KyApIHsKKyAgICAgICAgaWYgKCB2YWx1ZXNbIGluZGV4IF0gIT0gbnVsbCApIHsKKyAgICAgICAg
ICAgIGVsZW1lbnRzWyBpbmRleCBdLnN0eWxlLmRpc3BsYXkgPSB2YWx1ZXNbIGluZGV4IF07Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gZWxlbWVudHM7Cit9CisKK2pRdWVyeS5mbi5l
eHRlbmQoIHsKKyAgICBzaG93OiBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHNob3dIaWRl
KCB0aGlzLCB0cnVlICk7CisgICAgfSwKKyAgICBoaWRlOiBmdW5jdGlvbigpIHsKKyAgICAgICAg
cmV0dXJuIHNob3dIaWRlKCB0aGlzICk7CisgICAgfSwKKyAgICB0b2dnbGU6IGZ1bmN0aW9uKCBz
dGF0ZSApIHsKKyAgICAgICAgaWYgKCB0eXBlb2Ygc3RhdGUgPT09ICJib29sZWFuIiApIHsKKyAg
ICAgICAgICAgIHJldHVybiBzdGF0ZSA/IHRoaXMuc2hvdygpIDogdGhpcy5oaWRlKCk7CisgICAg
ICAgIH0KKworICAgICAgICByZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgIGlmICggaXNIaWRkZW5XaXRoaW5UcmVlKCB0aGlzICkgKSB7CisgICAgICAgICAgICAgICAg
alF1ZXJ5KCB0aGlzICkuc2hvdygpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBqUXVlcnkoIHRoaXMgKS5oaWRlKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gKTsK
KyAgICB9Cit9ICk7Cit2YXIgcmNoZWNrYWJsZVR5cGUgPSAoIC9eKD86Y2hlY2tib3h8cmFkaW8p
JC9pICk7CisKK3ZhciBydGFnTmFtZSA9ICggLzwoW2Etel1bXlwvXDA+XHgyMFx0XHJcblxmXSsp
L2kgKTsKKwordmFyIHJzY3JpcHRUeXBlID0gKCAvXiR8XC8oPzpqYXZhfGVjbWEpc2NyaXB0L2kg
KTsKKworCisKKy8vIFdlIGhhdmUgdG8gY2xvc2UgdGhlc2UgdGFncyB0byBzdXBwb3J0IFhIVE1M
ICgjMTMyMDApCit2YXIgd3JhcE1hcCA9IHsKKworICAgIC8vIFN1cHBvcnQ6IElFIDw9OSBvbmx5
CisgICAgb3B0aW9uOiBbIDEsICI8c2VsZWN0IG11bHRpcGxlPSdtdWx0aXBsZSc+IiwgIjwvc2Vs
ZWN0PiIgXSwKKworICAgIC8vIFhIVE1MIHBhcnNlcnMgZG8gbm90IG1hZ2ljYWxseSBpbnNlcnQg
ZWxlbWVudHMgaW4gdGhlCisgICAgLy8gc2FtZSB3YXkgdGhhdCB0YWcgc291cCBwYXJzZXJzIGRv
LiBTbyB3ZSBjYW5ub3Qgc2hvcnRlbgorICAgIC8vIHRoaXMgYnkgb21pdHRpbmcgPHRib2R5PiBv
ciBvdGhlciByZXF1aXJlZCBlbGVtZW50cy4KKyAgICB0aGVhZDogWyAxLCAiPHRhYmxlPiIsICI8
L3RhYmxlPiIgXSwKKyAgICBjb2w6IFsgMiwgIjx0YWJsZT48Y29sZ3JvdXA+IiwgIjwvY29sZ3Jv
dXA+PC90YWJsZT4iIF0sCisgICAgdHI6IFsgMiwgIjx0YWJsZT48dGJvZHk+IiwgIjwvdGJvZHk+
PC90YWJsZT4iIF0sCisgICAgdGQ6IFsgMywgIjx0YWJsZT48dGJvZHk+PHRyPiIsICI8L3RyPjwv
dGJvZHk+PC90YWJsZT4iIF0sCisKKyAgICBfZGVmYXVsdDogWyAwLCAiIiwgIiIgXQorfTsKKwor
Ly8gU3VwcG9ydDogSUUgPD05IG9ubHkKK3dyYXBNYXAub3B0Z3JvdXAgPSB3cmFwTWFwLm9wdGlv
bjsKKword3JhcE1hcC50Ym9keSA9IHdyYXBNYXAudGZvb3QgPSB3cmFwTWFwLmNvbGdyb3VwID0g
d3JhcE1hcC5jYXB0aW9uID0gd3JhcE1hcC50aGVhZDsKK3dyYXBNYXAudGggPSB3cmFwTWFwLnRk
OworCisKK2Z1bmN0aW9uIGdldEFsbCggY29udGV4dCwgdGFnICkgeworCisgICAgLy8gU3VwcG9y
dDogSUUgPD05IC0gMTEgb25seQorICAgIC8vIFVzZSB0eXBlb2YgdG8gYXZvaWQgemVyby1hcmd1
bWVudCBtZXRob2QgaW52b2NhdGlvbiBvbiBob3N0IG9iamVjdHMgKCMxNTE1MSkKKyAgICB2YXIg
cmV0OworCisgICAgaWYgKCB0eXBlb2YgY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSAhPT0g
InVuZGVmaW5lZCIgKSB7CisgICAgICAgIHJldCA9IGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoIHRhZyB8fCAiKiIgKTsKKworICAgIH0gZWxzZSBpZiAoIHR5cGVvZiBjb250ZXh0LnF1ZXJ5
U2VsZWN0b3JBbGwgIT09ICJ1bmRlZmluZWQiICkgeworICAgICAgICByZXQgPSBjb250ZXh0LnF1
ZXJ5U2VsZWN0b3JBbGwoIHRhZyB8fCAiKiIgKTsKKworICAgIH0gZWxzZSB7CisgICAgICAgIHJl
dCA9IFtdOworICAgIH0KKworICAgIGlmICggdGFnID09PSB1bmRlZmluZWQgfHwgdGFnICYmIGpR
dWVyeS5ub2RlTmFtZSggY29udGV4dCwgdGFnICkgKSB7CisgICAgICAgIHJldHVybiBqUXVlcnku
bWVyZ2UoIFsgY29udGV4dCBdLCByZXQgKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmV0OworfQor
CisKKy8vIE1hcmsgc2NyaXB0cyBhcyBoYXZpbmcgYWxyZWFkeSBiZWVuIGV2YWx1YXRlZAorZnVu
Y3Rpb24gc2V0R2xvYmFsRXZhbCggZWxlbXMsIHJlZkVsZW1lbnRzICkgeworICAgIHZhciBpID0g
MCwKKyAgICAgICAgbCA9IGVsZW1zLmxlbmd0aDsKKworICAgIGZvciAoIDsgaSA8IGw7IGkrKyAp
IHsKKyAgICAgICAgZGF0YVByaXYuc2V0KAorICAgICAgICAgICAgZWxlbXNbIGkgXSwKKyAgICAg
ICAgICAgICJnbG9iYWxFdmFsIiwKKyAgICAgICAgICAgICFyZWZFbGVtZW50cyB8fCBkYXRhUHJp
di5nZXQoIHJlZkVsZW1lbnRzWyBpIF0sICJnbG9iYWxFdmFsIiApCisgICAgICAgICk7CisgICAg
fQorfQorCisKK3ZhciByaHRtbCA9IC88fCYjP1x3KzsvOworCitmdW5jdGlvbiBidWlsZEZyYWdt
ZW50KCBlbGVtcywgY29udGV4dCwgc2NyaXB0cywgc2VsZWN0aW9uLCBpZ25vcmVkICkgeworICAg
IHZhciBlbGVtLCB0bXAsIHRhZywgd3JhcCwgY29udGFpbnMsIGosCisgICAgICAgIGZyYWdtZW50
ID0gY29udGV4dC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksCisgICAgICAgIG5vZGVzID0gW10s
CisgICAgICAgIGkgPSAwLAorICAgICAgICBsID0gZWxlbXMubGVuZ3RoOworCisgICAgZm9yICgg
OyBpIDwgbDsgaSsrICkgeworICAgICAgICBlbGVtID0gZWxlbXNbIGkgXTsKKworICAgICAgICBp
ZiAoIGVsZW0gfHwgZWxlbSA9PT0gMCApIHsKKworICAgICAgICAgICAgLy8gQWRkIG5vZGVzIGRp
cmVjdGx5CisgICAgICAgICAgICBpZiAoIGpRdWVyeS50eXBlKCBlbGVtICkgPT09ICJvYmplY3Qi
ICkgeworCisgICAgICAgICAgICAgICAgLy8gU3VwcG9ydDogQW5kcm9pZCA8PTQuMCBvbmx5LCBQ
aGFudG9tSlMgMSBvbmx5CisgICAgICAgICAgICAgICAgLy8gcHVzaC5hcHBseShfLCBhcnJheWxp
a2UpIHRocm93cyBvbiBhbmNpZW50IFdlYktpdAorICAgICAgICAgICAgICAgIGpRdWVyeS5tZXJn
ZSggbm9kZXMsIGVsZW0ubm9kZVR5cGUgPyBbIGVsZW0gXSA6IGVsZW0gKTsKKworICAgICAgICAg
ICAgLy8gQ29udmVydCBub24taHRtbCBpbnRvIGEgdGV4dCBub2RlCisgICAgICAgICAgICB9IGVs
c2UgaWYgKCAhcmh0bWwudGVzdCggZWxlbSApICkgeworICAgICAgICAgICAgICAgIG5vZGVzLnB1
c2goIGNvbnRleHQuY3JlYXRlVGV4dE5vZGUoIGVsZW0gKSApOworCisgICAgICAgICAgICAvLyBD
b252ZXJ0IGh0bWwgaW50byBET00gbm9kZXMKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgdG1wID0gdG1wIHx8IGZyYWdtZW50LmFwcGVuZENoaWxkKCBjb250ZXh0LmNyZWF0
ZUVsZW1lbnQoICJkaXYiICkgKTsKKworICAgICAgICAgICAgICAgIC8vIERlc2VyaWFsaXplIGEg
c3RhbmRhcmQgcmVwcmVzZW50YXRpb24KKyAgICAgICAgICAgICAgICB0YWcgPSAoIHJ0YWdOYW1l
LmV4ZWMoIGVsZW0gKSB8fCBbICIiLCAiIiBdIClbIDEgXS50b0xvd2VyQ2FzZSgpOworICAgICAg
ICAgICAgICAgIHdyYXAgPSB3cmFwTWFwWyB0YWcgXSB8fCB3cmFwTWFwLl9kZWZhdWx0OworICAg
ICAgICAgICAgICAgIHRtcC5pbm5lckhUTUwgPSB3cmFwWyAxIF0gKyBqUXVlcnkuaHRtbFByZWZp
bHRlciggZWxlbSApICsgd3JhcFsgMiBdOworCisgICAgICAgICAgICAgICAgLy8gRGVzY2VuZCB0
aHJvdWdoIHdyYXBwZXJzIHRvIHRoZSByaWdodCBjb250ZW50CisgICAgICAgICAgICAgICAgaiA9
IHdyYXBbIDAgXTsKKyAgICAgICAgICAgICAgICB3aGlsZSAoIGotLSApIHsKKyAgICAgICAgICAg
ICAgICAgICAgdG1wID0gdG1wLmxhc3RDaGlsZDsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICAvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4wIG9ubHksIFBoYW50b21KUyAxIG9u
bHkKKyAgICAgICAgICAgICAgICAvLyBwdXNoLmFwcGx5KF8sIGFycmF5bGlrZSkgdGhyb3dzIG9u
IGFuY2llbnQgV2ViS2l0CisgICAgICAgICAgICAgICAgalF1ZXJ5Lm1lcmdlKCBub2RlcywgdG1w
LmNoaWxkTm9kZXMgKTsKKworICAgICAgICAgICAgICAgIC8vIFJlbWVtYmVyIHRoZSB0b3AtbGV2
ZWwgY29udGFpbmVyCisgICAgICAgICAgICAgICAgdG1wID0gZnJhZ21lbnQuZmlyc3RDaGlsZDsK
KworICAgICAgICAgICAgICAgIC8vIEVuc3VyZSB0aGUgY3JlYXRlZCBub2RlcyBhcmUgb3JwaGFu
ZWQgKCMxMjM5MikKKyAgICAgICAgICAgICAgICB0bXAudGV4dENvbnRlbnQgPSAiIjsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFJlbW92ZSB3cmFwcGVyIGZyb20g
ZnJhZ21lbnQKKyAgICBmcmFnbWVudC50ZXh0Q29udGVudCA9ICIiOworCisgICAgaSA9IDA7Cisg
ICAgd2hpbGUgKCAoIGVsZW0gPSBub2Rlc1sgaSsrIF0gKSApIHsKKworICAgICAgICAvLyBTa2lw
IGVsZW1lbnRzIGFscmVhZHkgaW4gdGhlIGNvbnRleHQgY29sbGVjdGlvbiAodHJhYy00MDg3KQor
ICAgICAgICBpZiAoIHNlbGVjdGlvbiAmJiBqUXVlcnkuaW5BcnJheSggZWxlbSwgc2VsZWN0aW9u
ICkgPiAtMSApIHsKKyAgICAgICAgICAgIGlmICggaWdub3JlZCApIHsKKyAgICAgICAgICAgICAg
ICBpZ25vcmVkLnB1c2goIGVsZW0gKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICB9CisKKyAgICAgICAgY29udGFpbnMgPSBqUXVlcnkuY29udGFpbnMoIGVs
ZW0ub3duZXJEb2N1bWVudCwgZWxlbSApOworCisgICAgICAgIC8vIEFwcGVuZCB0byBmcmFnbWVu
dAorICAgICAgICB0bXAgPSBnZXRBbGwoIGZyYWdtZW50LmFwcGVuZENoaWxkKCBlbGVtICksICJz
Y3JpcHQiICk7CisKKyAgICAgICAgLy8gUHJlc2VydmUgc2NyaXB0IGV2YWx1YXRpb24gaGlzdG9y
eQorICAgICAgICBpZiAoIGNvbnRhaW5zICkgeworICAgICAgICAgICAgc2V0R2xvYmFsRXZhbCgg
dG1wICk7CisgICAgICAgIH0KKworICAgICAgICAvLyBDYXB0dXJlIGV4ZWN1dGFibGVzCisgICAg
ICAgIGlmICggc2NyaXB0cyApIHsKKyAgICAgICAgICAgIGogPSAwOworICAgICAgICAgICAgd2hp
bGUgKCAoIGVsZW0gPSB0bXBbIGorKyBdICkgKSB7CisgICAgICAgICAgICAgICAgaWYgKCByc2Ny
aXB0VHlwZS50ZXN0KCBlbGVtLnR5cGUgfHwgIiIgKSApIHsKKyAgICAgICAgICAgICAgICAgICAg
c2NyaXB0cy5wdXNoKCBlbGVtICk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGZyYWdtZW50OworfQorCisKKyggZnVuY3Rp
b24oKSB7CisgICAgdmFyIGZyYWdtZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVu
dCgpLAorICAgICAgICBkaXYgPSBmcmFnbWVudC5hcHBlbmRDaGlsZCggZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCggImRpdiIgKSApLAorICAgICAgICBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoICJpbnB1dCIgKTsKKworICAgIC8vIFN1cHBvcnQ6IEFuZHJvaWQgNC4wIC0gNC4zIG9ubHkK
KyAgICAvLyBDaGVjayBzdGF0ZSBsb3N0IGlmIHRoZSBuYW1lIGlzIHNldCAoIzExMjE3KQorICAg
IC8vIFN1cHBvcnQ6IFdpbmRvd3MgV2ViIEFwcHMgKFdXQSkKKyAgICAvLyBgbmFtZWAgYW5kIGB0
eXBlYCBtdXN0IHVzZSAuc2V0QXR0cmlidXRlIGZvciBXV0EgKCMxNDkwMSkKKyAgICBpbnB1dC5z
ZXRBdHRyaWJ1dGUoICJ0eXBlIiwgInJhZGlvIiApOworICAgIGlucHV0LnNldEF0dHJpYnV0ZSgg
ImNoZWNrZWQiLCAiY2hlY2tlZCIgKTsKKyAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoICJuYW1lIiwg
InQiICk7CisKKyAgICBkaXYuYXBwZW5kQ2hpbGQoIGlucHV0ICk7CisKKyAgICAvLyBTdXBwb3J0
OiBBbmRyb2lkIDw9NC4xIG9ubHkKKyAgICAvLyBPbGRlciBXZWJLaXQgZG9lc24ndCBjbG9uZSBj
aGVja2VkIHN0YXRlIGNvcnJlY3RseSBpbiBmcmFnbWVudHMKKyAgICBzdXBwb3J0LmNoZWNrQ2xv
bmUgPSBkaXYuY2xvbmVOb2RlKCB0cnVlICkuY2xvbmVOb2RlKCB0cnVlICkubGFzdENoaWxkLmNo
ZWNrZWQ7CisKKyAgICAvLyBTdXBwb3J0OiBJRSA8PTExIG9ubHkKKyAgICAvLyBNYWtlIHN1cmUg
dGV4dGFyZWEgKGFuZCBjaGVja2JveCkgZGVmYXVsdFZhbHVlIGlzIHByb3Blcmx5IGNsb25lZAor
ICAgIGRpdi5pbm5lckhUTUwgPSAiPHRleHRhcmVhPng8L3RleHRhcmVhPiI7CisgICAgc3VwcG9y
dC5ub0Nsb25lQ2hlY2tlZCA9ICEhZGl2LmNsb25lTm9kZSggdHJ1ZSApLmxhc3RDaGlsZC5kZWZh
dWx0VmFsdWU7Cit9ICkoKTsKK3ZhciBkb2N1bWVudEVsZW1lbnQgPSBkb2N1bWVudC5kb2N1bWVu
dEVsZW1lbnQ7CisKKworCit2YXIKKyAgICBya2V5RXZlbnQgPSAvXmtleS8sCisgICAgcm1vdXNl
RXZlbnQgPSAvXig/Om1vdXNlfHBvaW50ZXJ8Y29udGV4dG1lbnV8ZHJhZ3xkcm9wKXxjbGljay8s
CisgICAgcnR5cGVuYW1lc3BhY2UgPSAvXihbXi5dKikoPzpcLiguKyl8KS87CisKK2Z1bmN0aW9u
IHJldHVyblRydWUoKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Z1bmN0aW9uIHJldHVybkZh
bHNlKCkgeworICAgIHJldHVybiBmYWxzZTsKK30KKworLy8gU3VwcG9ydDogSUUgPD05IG9ubHkK
Ky8vIFNlZSAjMTMzOTMgZm9yIG1vcmUgaW5mbworZnVuY3Rpb24gc2FmZUFjdGl2ZUVsZW1lbnQo
KSB7CisgICAgdHJ5IHsKKyAgICAgICAgcmV0dXJuIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7Cisg
ICAgfSBjYXRjaCAoIGVyciApIHsgfQorfQorCitmdW5jdGlvbiBvbiggZWxlbSwgdHlwZXMsIHNl
bGVjdG9yLCBkYXRhLCBmbiwgb25lICkgeworICAgIHZhciBvcmlnRm4sIHR5cGU7CisKKyAgICAv
LyBUeXBlcyBjYW4gYmUgYSBtYXAgb2YgdHlwZXMvaGFuZGxlcnMKKyAgICBpZiAoIHR5cGVvZiB0
eXBlcyA9PT0gIm9iamVjdCIgKSB7CisKKyAgICAgICAgLy8gKCB0eXBlcy1PYmplY3QsIHNlbGVj
dG9yLCBkYXRhICkKKyAgICAgICAgaWYgKCB0eXBlb2Ygc2VsZWN0b3IgIT09ICJzdHJpbmciICkg
eworCisgICAgICAgICAgICAvLyAoIHR5cGVzLU9iamVjdCwgZGF0YSApCisgICAgICAgICAgICBk
YXRhID0gZGF0YSB8fCBzZWxlY3RvcjsKKyAgICAgICAgICAgIHNlbGVjdG9yID0gdW5kZWZpbmVk
OworICAgICAgICB9CisgICAgICAgIGZvciAoIHR5cGUgaW4gdHlwZXMgKSB7CisgICAgICAgICAg
ICBvbiggZWxlbSwgdHlwZSwgc2VsZWN0b3IsIGRhdGEsIHR5cGVzWyB0eXBlIF0sIG9uZSApOwor
ICAgICAgICB9CisgICAgICAgIHJldHVybiBlbGVtOworICAgIH0KKworICAgIGlmICggZGF0YSA9
PSBudWxsICYmIGZuID09IG51bGwgKSB7CisKKyAgICAgICAgLy8gKCB0eXBlcywgZm4gKQorICAg
ICAgICBmbiA9IHNlbGVjdG9yOworICAgICAgICBkYXRhID0gc2VsZWN0b3IgPSB1bmRlZmluZWQ7
CisgICAgfSBlbHNlIGlmICggZm4gPT0gbnVsbCApIHsKKyAgICAgICAgaWYgKCB0eXBlb2Ygc2Vs
ZWN0b3IgPT09ICJzdHJpbmciICkgeworCisgICAgICAgICAgICAvLyAoIHR5cGVzLCBzZWxlY3Rv
ciwgZm4gKQorICAgICAgICAgICAgZm4gPSBkYXRhOworICAgICAgICAgICAgZGF0YSA9IHVuZGVm
aW5lZDsKKyAgICAgICAgfSBlbHNlIHsKKworICAgICAgICAgICAgLy8gKCB0eXBlcywgZGF0YSwg
Zm4gKQorICAgICAgICAgICAgZm4gPSBkYXRhOworICAgICAgICAgICAgZGF0YSA9IHNlbGVjdG9y
OworICAgICAgICAgICAgc2VsZWN0b3IgPSB1bmRlZmluZWQ7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgaWYgKCBmbiA9PT0gZmFsc2UgKSB7CisgICAgICAgIGZuID0gcmV0dXJuRmFsc2U7CisgICAg
fSBlbHNlIGlmICggIWZuICkgeworICAgICAgICByZXR1cm4gZWxlbTsKKyAgICB9CisKKyAgICBp
ZiAoIG9uZSA9PT0gMSApIHsKKyAgICAgICAgb3JpZ0ZuID0gZm47CisgICAgICAgIGZuID0gZnVu
Y3Rpb24oIGV2ZW50ICkgeworCisgICAgICAgICAgICAvLyBDYW4gdXNlIGFuIGVtcHR5IHNldCwg
c2luY2UgZXZlbnQgY29udGFpbnMgdGhlIGluZm8KKyAgICAgICAgICAgIGpRdWVyeSgpLm9mZigg
ZXZlbnQgKTsKKyAgICAgICAgICAgIHJldHVybiBvcmlnRm4uYXBwbHkoIHRoaXMsIGFyZ3VtZW50
cyApOworICAgICAgICB9OworCisgICAgICAgIC8vIFVzZSBzYW1lIGd1aWQgc28gY2FsbGVyIGNh
biByZW1vdmUgdXNpbmcgb3JpZ0ZuCisgICAgICAgIGZuLmd1aWQgPSBvcmlnRm4uZ3VpZCB8fCAo
IG9yaWdGbi5ndWlkID0galF1ZXJ5Lmd1aWQrKyApOworICAgIH0KKyAgICByZXR1cm4gZWxlbS5l
YWNoKCBmdW5jdGlvbigpIHsKKyAgICAgICAgalF1ZXJ5LmV2ZW50LmFkZCggdGhpcywgdHlwZXMs
IGZuLCBkYXRhLCBzZWxlY3RvciApOworICAgIH0gKTsKK30KKworLyoKKyAqIEhlbHBlciBmdW5j
dGlvbnMgZm9yIG1hbmFnaW5nIGV2ZW50cyAtLSBub3QgcGFydCBvZiB0aGUgcHVibGljIGludGVy
ZmFjZS4KKyAqIFByb3BzIHRvIERlYW4gRWR3YXJkcycgYWRkRXZlbnQgbGlicmFyeSBmb3IgbWFu
eSBvZiB0aGUgaWRlYXMuCisgKi8KK2pRdWVyeS5ldmVudCA9IHsKKworICAgIGdsb2JhbDoge30s
CisKKyAgICBhZGQ6IGZ1bmN0aW9uKCBlbGVtLCB0eXBlcywgaGFuZGxlciwgZGF0YSwgc2VsZWN0
b3IgKSB7CisKKyAgICAgICAgdmFyIGhhbmRsZU9iakluLCBldmVudEhhbmRsZSwgdG1wLAorICAg
ICAgICAgICAgZXZlbnRzLCB0LCBoYW5kbGVPYmosCisgICAgICAgICAgICBzcGVjaWFsLCBoYW5k
bGVycywgdHlwZSwgbmFtZXNwYWNlcywgb3JpZ1R5cGUsCisgICAgICAgICAgICBlbGVtRGF0YSA9
IGRhdGFQcml2LmdldCggZWxlbSApOworCisgICAgICAgIC8vIERvbid0IGF0dGFjaCBldmVudHMg
dG8gbm9EYXRhIG9yIHRleHQvY29tbWVudCBub2RlcyAoYnV0IGFsbG93IHBsYWluIG9iamVjdHMp
CisgICAgICAgIGlmICggIWVsZW1EYXRhICkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgLy8gQ2FsbGVyIGNhbiBwYXNzIGluIGFuIG9iamVjdCBvZiBjdXN0b20g
ZGF0YSBpbiBsaWV1IG9mIHRoZSBoYW5kbGVyCisgICAgICAgIGlmICggaGFuZGxlci5oYW5kbGVy
ICkgeworICAgICAgICAgICAgaGFuZGxlT2JqSW4gPSBoYW5kbGVyOworICAgICAgICAgICAgaGFu
ZGxlciA9IGhhbmRsZU9iakluLmhhbmRsZXI7CisgICAgICAgICAgICBzZWxlY3RvciA9IGhhbmRs
ZU9iakluLnNlbGVjdG9yOworICAgICAgICB9CisKKyAgICAgICAgLy8gRW5zdXJlIHRoYXQgaW52
YWxpZCBzZWxlY3RvcnMgdGhyb3cgZXhjZXB0aW9ucyBhdCBhdHRhY2ggdGltZQorICAgICAgICAv
LyBFdmFsdWF0ZSBhZ2FpbnN0IGRvY3VtZW50RWxlbWVudCBpbiBjYXNlIGVsZW0gaXMgYSBub24t
ZWxlbWVudCBub2RlIChlLmcuLCBkb2N1bWVudCkKKyAgICAgICAgaWYgKCBzZWxlY3RvciApIHsK
KyAgICAgICAgICAgIGpRdWVyeS5maW5kLm1hdGNoZXNTZWxlY3RvciggZG9jdW1lbnRFbGVtZW50
LCBzZWxlY3RvciApOworICAgICAgICB9CisKKyAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhl
IGhhbmRsZXIgaGFzIGEgdW5pcXVlIElELCB1c2VkIHRvIGZpbmQvcmVtb3ZlIGl0IGxhdGVyCisg
ICAgICAgIGlmICggIWhhbmRsZXIuZ3VpZCApIHsKKyAgICAgICAgICAgIGhhbmRsZXIuZ3VpZCA9
IGpRdWVyeS5ndWlkKys7CisgICAgICAgIH0KKworICAgICAgICAvLyBJbml0IHRoZSBlbGVtZW50
J3MgZXZlbnQgc3RydWN0dXJlIGFuZCBtYWluIGhhbmRsZXIsIGlmIHRoaXMgaXMgdGhlIGZpcnN0
CisgICAgICAgIGlmICggISggZXZlbnRzID0gZWxlbURhdGEuZXZlbnRzICkgKSB7CisgICAgICAg
ICAgICBldmVudHMgPSBlbGVtRGF0YS5ldmVudHMgPSB7fTsKKyAgICAgICAgfQorICAgICAgICBp
ZiAoICEoIGV2ZW50SGFuZGxlID0gZWxlbURhdGEuaGFuZGxlICkgKSB7CisgICAgICAgICAgICBl
dmVudEhhbmRsZSA9IGVsZW1EYXRhLmhhbmRsZSA9IGZ1bmN0aW9uKCBlICkgeworCisgICAgICAg
ICAgICAgICAgLy8gRGlzY2FyZCB0aGUgc2Vjb25kIGV2ZW50IG9mIGEgalF1ZXJ5LmV2ZW50LnRy
aWdnZXIoKSBhbmQKKyAgICAgICAgICAgICAgICAvLyB3aGVuIGFuIGV2ZW50IGlzIGNhbGxlZCBh
ZnRlciBhIHBhZ2UgaGFzIHVubG9hZGVkCisgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiBq
UXVlcnkgIT09ICJ1bmRlZmluZWQiICYmIGpRdWVyeS5ldmVudC50cmlnZ2VyZWQgIT09IGUudHlw
ZSA/CisgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5ldmVudC5kaXNwYXRjaC5hcHBseSggZWxl
bSwgYXJndW1lbnRzICkgOiB1bmRlZmluZWQ7CisgICAgICAgICAgICB9OworICAgICAgICB9CisK
KyAgICAgICAgLy8gSGFuZGxlIG11bHRpcGxlIGV2ZW50cyBzZXBhcmF0ZWQgYnkgYSBzcGFjZQor
ICAgICAgICB0eXBlcyA9ICggdHlwZXMgfHwgIiIgKS5tYXRjaCggcm5vdGh0bWx3aGl0ZSApIHx8
IFsgIiIgXTsKKyAgICAgICAgdCA9IHR5cGVzLmxlbmd0aDsKKyAgICAgICAgd2hpbGUgKCB0LS0g
KSB7CisgICAgICAgICAgICB0bXAgPSBydHlwZW5hbWVzcGFjZS5leGVjKCB0eXBlc1sgdCBdICkg
fHwgW107CisgICAgICAgICAgICB0eXBlID0gb3JpZ1R5cGUgPSB0bXBbIDEgXTsKKyAgICAgICAg
ICAgIG5hbWVzcGFjZXMgPSAoIHRtcFsgMiBdIHx8ICIiICkuc3BsaXQoICIuIiApLnNvcnQoKTsK
KworICAgICAgICAgICAgLy8gVGhlcmUgKm11c3QqIGJlIGEgdHlwZSwgbm8gYXR0YWNoaW5nIG5h
bWVzcGFjZS1vbmx5IGhhbmRsZXJzCisgICAgICAgICAgICBpZiAoICF0eXBlICkgeworICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBJZiBl
dmVudCBjaGFuZ2VzIGl0cyB0eXBlLCB1c2UgdGhlIHNwZWNpYWwgZXZlbnQgaGFuZGxlcnMgZm9y
IHRoZSBjaGFuZ2VkIHR5cGUKKyAgICAgICAgICAgIHNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3Bl
Y2lhbFsgdHlwZSBdIHx8IHt9OworCisgICAgICAgICAgICAvLyBJZiBzZWxlY3RvciBkZWZpbmVk
LCBkZXRlcm1pbmUgc3BlY2lhbCBldmVudCBhcGkgdHlwZSwgb3RoZXJ3aXNlIGdpdmVuIHR5cGUK
KyAgICAgICAgICAgIHR5cGUgPSAoIHNlbGVjdG9yID8gc3BlY2lhbC5kZWxlZ2F0ZVR5cGUgOiBz
cGVjaWFsLmJpbmRUeXBlICkgfHwgdHlwZTsKKworICAgICAgICAgICAgLy8gVXBkYXRlIHNwZWNp
YWwgYmFzZWQgb24gbmV3bHkgcmVzZXQgdHlwZQorICAgICAgICAgICAgc3BlY2lhbCA9IGpRdWVy
eS5ldmVudC5zcGVjaWFsWyB0eXBlIF0gfHwge307CisKKyAgICAgICAgICAgIC8vIGhhbmRsZU9i
aiBpcyBwYXNzZWQgdG8gYWxsIGV2ZW50IGhhbmRsZXJzCisgICAgICAgICAgICBoYW5kbGVPYmog
PSBqUXVlcnkuZXh0ZW5kKCB7CisgICAgICAgICAgICAgICAgdHlwZTogdHlwZSwKKyAgICAgICAg
ICAgICAgICBvcmlnVHlwZTogb3JpZ1R5cGUsCisgICAgICAgICAgICAgICAgZGF0YTogZGF0YSwK
KyAgICAgICAgICAgICAgICBoYW5kbGVyOiBoYW5kbGVyLAorICAgICAgICAgICAgICAgIGd1aWQ6
IGhhbmRsZXIuZ3VpZCwKKyAgICAgICAgICAgICAgICBzZWxlY3Rvcjogc2VsZWN0b3IsCisgICAg
ICAgICAgICAgICAgbmVlZHNDb250ZXh0OiBzZWxlY3RvciAmJiBqUXVlcnkuZXhwci5tYXRjaC5u
ZWVkc0NvbnRleHQudGVzdCggc2VsZWN0b3IgKSwKKyAgICAgICAgICAgICAgICBuYW1lc3BhY2U6
IG5hbWVzcGFjZXMuam9pbiggIi4iICkKKyAgICAgICAgICAgIH0sIGhhbmRsZU9iakluICk7CisK
KyAgICAgICAgICAgIC8vIEluaXQgdGhlIGV2ZW50IGhhbmRsZXIgcXVldWUgaWYgd2UncmUgdGhl
IGZpcnN0CisgICAgICAgICAgICBpZiAoICEoIGhhbmRsZXJzID0gZXZlbnRzWyB0eXBlIF0gKSAp
IHsKKyAgICAgICAgICAgICAgICBoYW5kbGVycyA9IGV2ZW50c1sgdHlwZSBdID0gW107CisgICAg
ICAgICAgICAgICAgaGFuZGxlcnMuZGVsZWdhdGVDb3VudCA9IDA7CisKKyAgICAgICAgICAgICAg
ICAvLyBPbmx5IHVzZSBhZGRFdmVudExpc3RlbmVyIGlmIHRoZSBzcGVjaWFsIGV2ZW50cyBoYW5k
bGVyIHJldHVybnMgZmFsc2UKKyAgICAgICAgICAgICAgICBpZiAoICFzcGVjaWFsLnNldHVwIHx8
CisgICAgICAgICAgICAgICAgICAgIHNwZWNpYWwuc2V0dXAuY2FsbCggZWxlbSwgZGF0YSwgbmFt
ZXNwYWNlcywgZXZlbnRIYW5kbGUgKSA9PT0gZmFsc2UgKSB7CisKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKCBlbGVtLmFkZEV2ZW50TGlzdGVuZXIgKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBlbGVtLmFkZEV2ZW50TGlzdGVuZXIoIHR5cGUsIGV2ZW50SGFuZGxlICk7CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGlmICggc3BlY2lhbC5hZGQgKSB7CisgICAgICAgICAgICAgICAgc3BlY2lhbC5hZGQuY2Fs
bCggZWxlbSwgaGFuZGxlT2JqICk7CisKKyAgICAgICAgICAgICAgICBpZiAoICFoYW5kbGVPYmou
aGFuZGxlci5ndWlkICkgeworICAgICAgICAgICAgICAgICAgICBoYW5kbGVPYmouaGFuZGxlci5n
dWlkID0gaGFuZGxlci5ndWlkOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgLy8gQWRkIHRvIHRoZSBlbGVtZW50J3MgaGFuZGxlciBsaXN0LCBkZWxlZ2F0
ZXMgaW4gZnJvbnQKKyAgICAgICAgICAgIGlmICggc2VsZWN0b3IgKSB7CisgICAgICAgICAgICAg
ICAgaGFuZGxlcnMuc3BsaWNlKCBoYW5kbGVycy5kZWxlZ2F0ZUNvdW50KyssIDAsIGhhbmRsZU9i
aiApOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBoYW5kbGVycy5wdXNo
KCBoYW5kbGVPYmogKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gS2VlcCB0cmFj
ayBvZiB3aGljaCBldmVudHMgaGF2ZSBldmVyIGJlZW4gdXNlZCwgZm9yIGV2ZW50IG9wdGltaXph
dGlvbgorICAgICAgICAgICAgalF1ZXJ5LmV2ZW50Lmdsb2JhbFsgdHlwZSBdID0gdHJ1ZTsKKyAg
ICAgICAgfQorCisgICAgfSwKKworICAgIC8vIERldGFjaCBhbiBldmVudCBvciBzZXQgb2YgZXZl
bnRzIGZyb20gYW4gZWxlbWVudAorICAgIHJlbW92ZTogZnVuY3Rpb24oIGVsZW0sIHR5cGVzLCBo
YW5kbGVyLCBzZWxlY3RvciwgbWFwcGVkVHlwZXMgKSB7CisKKyAgICAgICAgdmFyIGosIG9yaWdD
b3VudCwgdG1wLAorICAgICAgICAgICAgZXZlbnRzLCB0LCBoYW5kbGVPYmosCisgICAgICAgICAg
ICBzcGVjaWFsLCBoYW5kbGVycywgdHlwZSwgbmFtZXNwYWNlcywgb3JpZ1R5cGUsCisgICAgICAg
ICAgICBlbGVtRGF0YSA9IGRhdGFQcml2Lmhhc0RhdGEoIGVsZW0gKSAmJiBkYXRhUHJpdi5nZXQo
IGVsZW0gKTsKKworICAgICAgICBpZiAoICFlbGVtRGF0YSB8fCAhKCBldmVudHMgPSBlbGVtRGF0
YS5ldmVudHMgKSApIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IC8vIE9uY2UgZm9yIGVhY2ggdHlwZS5uYW1lc3BhY2UgaW4gdHlwZXM7IHR5cGUgbWF5IGJlIG9t
aXR0ZWQKKyAgICAgICAgdHlwZXMgPSAoIHR5cGVzIHx8ICIiICkubWF0Y2goIHJub3RodG1sd2hp
dGUgKSB8fCBbICIiIF07CisgICAgICAgIHQgPSB0eXBlcy5sZW5ndGg7CisgICAgICAgIHdoaWxl
ICggdC0tICkgeworICAgICAgICAgICAgdG1wID0gcnR5cGVuYW1lc3BhY2UuZXhlYyggdHlwZXNb
IHQgXSApIHx8IFtdOworICAgICAgICAgICAgdHlwZSA9IG9yaWdUeXBlID0gdG1wWyAxIF07Cisg
ICAgICAgICAgICBuYW1lc3BhY2VzID0gKCB0bXBbIDIgXSB8fCAiIiApLnNwbGl0KCAiLiIgKS5z
b3J0KCk7CisKKyAgICAgICAgICAgIC8vIFVuYmluZCBhbGwgZXZlbnRzIChvbiB0aGlzIG5hbWVz
cGFjZSwgaWYgcHJvdmlkZWQpIGZvciB0aGUgZWxlbWVudAorICAgICAgICAgICAgaWYgKCAhdHlw
ZSApIHsKKyAgICAgICAgICAgICAgICBmb3IgKCB0eXBlIGluIGV2ZW50cyApIHsKKyAgICAgICAg
ICAgICAgICAgICAgalF1ZXJ5LmV2ZW50LnJlbW92ZSggZWxlbSwgdHlwZSArIHR5cGVzWyB0IF0s
IGhhbmRsZXIsIHNlbGVjdG9yLCB0cnVlICk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzcGVjaWFsID0g
alF1ZXJ5LmV2ZW50LnNwZWNpYWxbIHR5cGUgXSB8fCB7fTsKKyAgICAgICAgICAgIHR5cGUgPSAo
IHNlbGVjdG9yID8gc3BlY2lhbC5kZWxlZ2F0ZVR5cGUgOiBzcGVjaWFsLmJpbmRUeXBlICkgfHwg
dHlwZTsKKyAgICAgICAgICAgIGhhbmRsZXJzID0gZXZlbnRzWyB0eXBlIF0gfHwgW107CisgICAg
ICAgICAgICB0bXAgPSB0bXBbIDIgXSAmJgorICAgICAgICAgICAgICAgIG5ldyBSZWdFeHAoICIo
XnxcXC4pIiArIG5hbWVzcGFjZXMuam9pbiggIlxcLig/Oi4qXFwufCkiICkgKyAiKFxcLnwkKSIg
KTsKKworICAgICAgICAgICAgLy8gUmVtb3ZlIG1hdGNoaW5nIGV2ZW50cworICAgICAgICAgICAg
b3JpZ0NvdW50ID0gaiA9IGhhbmRsZXJzLmxlbmd0aDsKKyAgICAgICAgICAgIHdoaWxlICggai0t
ICkgeworICAgICAgICAgICAgICAgIGhhbmRsZU9iaiA9IGhhbmRsZXJzWyBqIF07CisKKyAgICAg
ICAgICAgICAgICBpZiAoICggbWFwcGVkVHlwZXMgfHwgb3JpZ1R5cGUgPT09IGhhbmRsZU9iai5v
cmlnVHlwZSApICYmCisgICAgICAgICAgICAgICAgICAgICggIWhhbmRsZXIgfHwgaGFuZGxlci5n
dWlkID09PSBoYW5kbGVPYmouZ3VpZCApICYmCisgICAgICAgICAgICAgICAgICAgICggIXRtcCB8
fCB0bXAudGVzdCggaGFuZGxlT2JqLm5hbWVzcGFjZSApICkgJiYKKyAgICAgICAgICAgICAgICAg
ICAgKCAhc2VsZWN0b3IgfHwgc2VsZWN0b3IgPT09IGhhbmRsZU9iai5zZWxlY3RvciB8fAorICAg
ICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3IgPT09ICIqKiIgJiYgaGFuZGxlT2JqLnNlbGVj
dG9yICkgKSB7CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZXJzLnNwbGljZSggaiwgMSApOwor
CisgICAgICAgICAgICAgICAgICAgIGlmICggaGFuZGxlT2JqLnNlbGVjdG9yICkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgaGFuZGxlcnMuZGVsZWdhdGVDb3VudC0tOworICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmICggc3BlY2lhbC5yZW1vdmUgKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWFsLnJlbW92ZS5jYWxsKCBlbGVtLCBoYW5kbGVP
YmogKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgLy8gUmVtb3ZlIGdlbmVyaWMgZXZlbnQgaGFuZGxlciBpZiB3
ZSByZW1vdmVkIHNvbWV0aGluZyBhbmQgbm8gbW9yZSBoYW5kbGVycyBleGlzdAorICAgICAgICAg
ICAgLy8gKGF2b2lkcyBwb3RlbnRpYWwgZm9yIGVuZGxlc3MgcmVjdXJzaW9uIGR1cmluZyByZW1v
dmFsIG9mIHNwZWNpYWwgZXZlbnQgaGFuZGxlcnMpCisgICAgICAgICAgICBpZiAoIG9yaWdDb3Vu
dCAmJiAhaGFuZGxlcnMubGVuZ3RoICkgeworICAgICAgICAgICAgICAgIGlmICggIXNwZWNpYWwu
dGVhcmRvd24gfHwKKyAgICAgICAgICAgICAgICAgICAgc3BlY2lhbC50ZWFyZG93bi5jYWxsKCBl
bGVtLCBuYW1lc3BhY2VzLCBlbGVtRGF0YS5oYW5kbGUgKSA9PT0gZmFsc2UgKSB7CisKKyAgICAg
ICAgICAgICAgICAgICAgalF1ZXJ5LnJlbW92ZUV2ZW50KCBlbGVtLCB0eXBlLCBlbGVtRGF0YS5o
YW5kbGUgKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBkZWxldGUgZXZl
bnRzWyB0eXBlIF07CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBSZW1v
dmUgZGF0YSBhbmQgdGhlIGV4cGFuZG8gaWYgaXQncyBubyBsb25nZXIgdXNlZAorICAgICAgICBp
ZiAoIGpRdWVyeS5pc0VtcHR5T2JqZWN0KCBldmVudHMgKSApIHsKKyAgICAgICAgICAgIGRhdGFQ
cml2LnJlbW92ZSggZWxlbSwgImhhbmRsZSBldmVudHMiICk7CisgICAgICAgIH0KKyAgICB9LAor
CisgICAgZGlzcGF0Y2g6IGZ1bmN0aW9uKCBuYXRpdmVFdmVudCApIHsKKworICAgICAgICAvLyBN
YWtlIGEgd3JpdGFibGUgalF1ZXJ5LkV2ZW50IGZyb20gdGhlIG5hdGl2ZSBldmVudCBvYmplY3QK
KyAgICAgICAgdmFyIGV2ZW50ID0galF1ZXJ5LmV2ZW50LmZpeCggbmF0aXZlRXZlbnQgKTsKKwor
ICAgICAgICB2YXIgaSwgaiwgcmV0LCBtYXRjaGVkLCBoYW5kbGVPYmosIGhhbmRsZXJRdWV1ZSwK
KyAgICAgICAgICAgIGFyZ3MgPSBuZXcgQXJyYXkoIGFyZ3VtZW50cy5sZW5ndGggKSwKKyAgICAg
ICAgICAgIGhhbmRsZXJzID0gKCBkYXRhUHJpdi5nZXQoIHRoaXMsICJldmVudHMiICkgfHwge30g
KVsgZXZlbnQudHlwZSBdIHx8IFtdLAorICAgICAgICAgICAgc3BlY2lhbCA9IGpRdWVyeS5ldmVu
dC5zcGVjaWFsWyBldmVudC50eXBlIF0gfHwge307CisKKyAgICAgICAgLy8gVXNlIHRoZSBmaXgt
ZWQgalF1ZXJ5LkV2ZW50IHJhdGhlciB0aGFuIHRoZSAocmVhZC1vbmx5KSBuYXRpdmUgZXZlbnQK
KyAgICAgICAgYXJnc1sgMCBdID0gZXZlbnQ7CisKKyAgICAgICAgZm9yICggaSA9IDE7IGkgPCBh
cmd1bWVudHMubGVuZ3RoOyBpKysgKSB7CisgICAgICAgICAgICBhcmdzWyBpIF0gPSBhcmd1bWVu
dHNbIGkgXTsKKyAgICAgICAgfQorCisgICAgICAgIGV2ZW50LmRlbGVnYXRlVGFyZ2V0ID0gdGhp
czsKKworICAgICAgICAvLyBDYWxsIHRoZSBwcmVEaXNwYXRjaCBob29rIGZvciB0aGUgbWFwcGVk
IHR5cGUsIGFuZCBsZXQgaXQgYmFpbCBpZiBkZXNpcmVkCisgICAgICAgIGlmICggc3BlY2lhbC5w
cmVEaXNwYXRjaCAmJiBzcGVjaWFsLnByZURpc3BhdGNoLmNhbGwoIHRoaXMsIGV2ZW50ICkgPT09
IGZhbHNlICkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8g
RGV0ZXJtaW5lIGhhbmRsZXJzCisgICAgICAgIGhhbmRsZXJRdWV1ZSA9IGpRdWVyeS5ldmVudC5o
YW5kbGVycy5jYWxsKCB0aGlzLCBldmVudCwgaGFuZGxlcnMgKTsKKworICAgICAgICAvLyBSdW4g
ZGVsZWdhdGVzIGZpcnN0OyB0aGV5IG1heSB3YW50IHRvIHN0b3AgcHJvcGFnYXRpb24gYmVuZWF0
aCB1cworICAgICAgICBpID0gMDsKKyAgICAgICAgd2hpbGUgKCAoIG1hdGNoZWQgPSBoYW5kbGVy
UXVldWVbIGkrKyBdICkgJiYgIWV2ZW50LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkgKSB7CisgICAg
ICAgICAgICBldmVudC5jdXJyZW50VGFyZ2V0ID0gbWF0Y2hlZC5lbGVtOworCisgICAgICAgICAg
ICBqID0gMDsKKyAgICAgICAgICAgIHdoaWxlICggKCBoYW5kbGVPYmogPSBtYXRjaGVkLmhhbmRs
ZXJzWyBqKysgXSApICYmCisgICAgICAgICAgICAgICAgIWV2ZW50LmlzSW1tZWRpYXRlUHJvcGFn
YXRpb25TdG9wcGVkKCkgKSB7CisKKyAgICAgICAgICAgICAgICAvLyBUcmlnZ2VyZWQgZXZlbnQg
bXVzdCBlaXRoZXIgMSkgaGF2ZSBubyBuYW1lc3BhY2UsIG9yIDIpIGhhdmUgbmFtZXNwYWNlKHMp
CisgICAgICAgICAgICAgICAgLy8gYSBzdWJzZXQgb3IgZXF1YWwgdG8gdGhvc2UgaW4gdGhlIGJv
dW5kIGV2ZW50IChib3RoIGNhbiBoYXZlIG5vIG5hbWVzcGFjZSkuCisgICAgICAgICAgICAgICAg
aWYgKCAhZXZlbnQucm5hbWVzcGFjZSB8fCBldmVudC5ybmFtZXNwYWNlLnRlc3QoIGhhbmRsZU9i
ai5uYW1lc3BhY2UgKSApIHsKKworICAgICAgICAgICAgICAgICAgICBldmVudC5oYW5kbGVPYmog
PSBoYW5kbGVPYmo7CisgICAgICAgICAgICAgICAgICAgIGV2ZW50LmRhdGEgPSBoYW5kbGVPYmou
ZGF0YTsKKworICAgICAgICAgICAgICAgICAgICByZXQgPSAoICggalF1ZXJ5LmV2ZW50LnNwZWNp
YWxbIGhhbmRsZU9iai5vcmlnVHlwZSBdIHx8IHt9ICkuaGFuZGxlIHx8CisgICAgICAgICAgICAg
ICAgICAgICAgICBoYW5kbGVPYmouaGFuZGxlciApLmFwcGx5KCBtYXRjaGVkLmVsZW0sIGFyZ3Mg
KTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoIHJldCAhPT0gdW5kZWZpbmVkICkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCAoIGV2ZW50LnJlc3VsdCA9IHJldCApID09PSBmYWxz
ZSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gQ2FsbCB0
aGUgcG9zdERpc3BhdGNoIGhvb2sgZm9yIHRoZSBtYXBwZWQgdHlwZQorICAgICAgICBpZiAoIHNw
ZWNpYWwucG9zdERpc3BhdGNoICkgeworICAgICAgICAgICAgc3BlY2lhbC5wb3N0RGlzcGF0Y2gu
Y2FsbCggdGhpcywgZXZlbnQgKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBldmVudC5y
ZXN1bHQ7CisgICAgfSwKKworICAgIGhhbmRsZXJzOiBmdW5jdGlvbiggZXZlbnQsIGhhbmRsZXJz
ICkgeworICAgICAgICB2YXIgaSwgaGFuZGxlT2JqLCBzZWwsIG1hdGNoZWRIYW5kbGVycywgbWF0
Y2hlZFNlbGVjdG9ycywKKyAgICAgICAgICAgIGhhbmRsZXJRdWV1ZSA9IFtdLAorICAgICAgICAg
ICAgZGVsZWdhdGVDb3VudCA9IGhhbmRsZXJzLmRlbGVnYXRlQ291bnQsCisgICAgICAgICAgICBj
dXIgPSBldmVudC50YXJnZXQ7CisKKyAgICAgICAgLy8gRmluZCBkZWxlZ2F0ZSBoYW5kbGVycwor
ICAgICAgICBpZiAoIGRlbGVnYXRlQ291bnQgJiYKKworICAgICAgICAgICAgLy8gU3VwcG9ydDog
SUUgPD05CisgICAgICAgICAgICAvLyBCbGFjay1ob2xlIFNWRyA8dXNlPiBpbnN0YW5jZSB0cmVl
cyAodHJhYy0xMzE4MCkKKyAgICAgICAgICAgIGN1ci5ub2RlVHlwZSAmJgorCisgICAgICAgICAg
ICAvLyBTdXBwb3J0OiBGaXJlZm94IDw9NDIKKyAgICAgICAgICAgIC8vIFN1cHByZXNzIHNwZWMt
dmlvbGF0aW5nIGNsaWNrcyBpbmRpY2F0aW5nIGEgbm9uLXByaW1hcnkgcG9pbnRlciBidXR0b24g
KHRyYWMtMzg2MSkKKyAgICAgICAgICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2
ZWwtMy1FdmVudHMvI2V2ZW50LXR5cGUtY2xpY2sKKyAgICAgICAgICAgIC8vIFN1cHBvcnQ6IElF
IDExIG9ubHkKKyAgICAgICAgICAgIC8vIC4uLmJ1dCBub3QgYXJyb3cga2V5ICJjbGlja3MiIG9m
IHJhZGlvIGlucHV0cywgd2hpY2ggY2FuIGhhdmUgYGJ1dHRvbmAgLTEgKGdoLTIzNDMpCisgICAg
ICAgICAgICAhKCBldmVudC50eXBlID09PSAiY2xpY2siICYmIGV2ZW50LmJ1dHRvbiA+PSAxICkg
KSB7CisKKyAgICAgICAgICAgIGZvciAoIDsgY3VyICE9PSB0aGlzOyBjdXIgPSBjdXIucGFyZW50
Tm9kZSB8fCB0aGlzICkgeworCisgICAgICAgICAgICAgICAgLy8gRG9uJ3QgY2hlY2sgbm9uLWVs
ZW1lbnRzICgjMTMyMDgpCisgICAgICAgICAgICAgICAgLy8gRG9uJ3QgcHJvY2VzcyBjbGlja3Mg
b24gZGlzYWJsZWQgZWxlbWVudHMgKCM2OTExLCAjODE2NSwgIzExMzgyLCAjMTE3NjQpCisgICAg
ICAgICAgICAgICAgaWYgKCBjdXIubm9kZVR5cGUgPT09IDEgJiYgISggZXZlbnQudHlwZSA9PT0g
ImNsaWNrIiAmJiBjdXIuZGlzYWJsZWQgPT09IHRydWUgKSApIHsKKyAgICAgICAgICAgICAgICAg
ICAgbWF0Y2hlZEhhbmRsZXJzID0gW107CisgICAgICAgICAgICAgICAgICAgIG1hdGNoZWRTZWxl
Y3RvcnMgPSB7fTsKKyAgICAgICAgICAgICAgICAgICAgZm9yICggaSA9IDA7IGkgPCBkZWxlZ2F0
ZUNvdW50OyBpKysgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVPYmogPSBoYW5k
bGVyc1sgaSBdOworCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBEb24ndCBjb25mbGljdCB3
aXRoIE9iamVjdC5wcm90b3R5cGUgcHJvcGVydGllcyAoIzEzMjAzKQorICAgICAgICAgICAgICAg
ICAgICAgICAgc2VsID0gaGFuZGxlT2JqLnNlbGVjdG9yICsgIiAiOworCisgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoIG1hdGNoZWRTZWxlY3RvcnNbIHNlbCBdID09PSB1bmRlZmluZWQgKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlZFNlbGVjdG9yc1sgc2VsIF0gPSBo
YW5kbGVPYmoubmVlZHNDb250ZXh0ID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
alF1ZXJ5KCBzZWwsIHRoaXMgKS5pbmRleCggY3VyICkgPiAtMSA6CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGpRdWVyeS5maW5kKCBzZWwsIHRoaXMsIG51bGwsIFsgY3VyIF0gKS5s
ZW5ndGg7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoIG1hdGNoZWRTZWxlY3RvcnNbIHNlbCBdICkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1hdGNoZWRIYW5kbGVycy5wdXNoKCBoYW5kbGVPYmogKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBp
ZiAoIG1hdGNoZWRIYW5kbGVycy5sZW5ndGggKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBo
YW5kbGVyUXVldWUucHVzaCggeyBlbGVtOiBjdXIsIGhhbmRsZXJzOiBtYXRjaGVkSGFuZGxlcnMg
fSApOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gQWRkIHRoZSByZW1haW5pbmcgKGRpcmVjdGx5
LWJvdW5kKSBoYW5kbGVycworICAgICAgICBjdXIgPSB0aGlzOworICAgICAgICBpZiAoIGRlbGVn
YXRlQ291bnQgPCBoYW5kbGVycy5sZW5ndGggKSB7CisgICAgICAgICAgICBoYW5kbGVyUXVldWUu
cHVzaCggeyBlbGVtOiBjdXIsIGhhbmRsZXJzOiBoYW5kbGVycy5zbGljZSggZGVsZWdhdGVDb3Vu
dCApIH0gKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBoYW5kbGVyUXVldWU7CisgICAg
fSwKKworICAgIGFkZFByb3A6IGZ1bmN0aW9uKCBuYW1lLCBob29rICkgeworICAgICAgICBPYmpl
Y3QuZGVmaW5lUHJvcGVydHkoIGpRdWVyeS5FdmVudC5wcm90b3R5cGUsIG5hbWUsIHsKKyAgICAg
ICAgICAgIGVudW1lcmFibGU6IHRydWUsCisgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUs
CisKKyAgICAgICAgICAgIGdldDogalF1ZXJ5LmlzRnVuY3Rpb24oIGhvb2sgKSA/CisgICAgICAg
ICAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICggdGhpcy5vcmln
aW5hbEV2ZW50ICkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBob29rKCB0
aGlzLm9yaWdpbmFsRXZlbnQgKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIH0gOgorICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAg
ICBpZiAoIHRoaXMub3JpZ2luYWxFdmVudCApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdGhpcy5vcmlnaW5hbEV2ZW50WyBuYW1lIF07CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICB9LAorCisgICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKCB2YWx1
ZSApIHsKKyAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoIHRoaXMsIG5hbWUs
IHsKKyAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSwKKyAgICAgICAgICAgICAg
ICAgICAgY29uZmlndXJhYmxlOiB0cnVlLAorICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTog
dHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlCisgICAgICAgICAgICAgICAg
fSApOworICAgICAgICAgICAgfQorICAgICAgICB9ICk7CisgICAgfSwKKworICAgIGZpeDogZnVu
Y3Rpb24oIG9yaWdpbmFsRXZlbnQgKSB7CisgICAgICAgIHJldHVybiBvcmlnaW5hbEV2ZW50WyBq
UXVlcnkuZXhwYW5kbyBdID8KKyAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQgOgorICAgICAgICAg
ICAgbmV3IGpRdWVyeS5FdmVudCggb3JpZ2luYWxFdmVudCApOworICAgIH0sCisKKyAgICBzcGVj
aWFsOiB7CisgICAgICAgIGxvYWQ6IHsKKworICAgICAgICAgICAgLy8gUHJldmVudCB0cmlnZ2Vy
ZWQgaW1hZ2UubG9hZCBldmVudHMgZnJvbSBidWJibGluZyB0byB3aW5kb3cubG9hZAorICAgICAg
ICAgICAgbm9CdWJibGU6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgZm9jdXM6IHsKKworICAg
ICAgICAgICAgLy8gRmlyZSBuYXRpdmUgZXZlbnQgaWYgcG9zc2libGUgc28gYmx1ci9mb2N1cyBz
ZXF1ZW5jZSBpcyBjb3JyZWN0CisgICAgICAgICAgICB0cmlnZ2VyOiBmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoIHRoaXMgIT09IHNhZmVBY3RpdmVFbGVtZW50KCkgJiYgdGhpcy5m
b2N1cyApIHsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5mb2N1cygpOworICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgIGRlbGVnYXRlVHlwZTogImZvY3VzaW4iCisgICAgICAgIH0sCisgICAgICAg
IGJsdXI6IHsKKyAgICAgICAgICAgIHRyaWdnZXI6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
ICAgIGlmICggdGhpcyA9PT0gc2FmZUFjdGl2ZUVsZW1lbnQoKSAmJiB0aGlzLmJsdXIgKSB7Cisg
ICAgICAgICAgICAgICAgICAgIHRoaXMuYmx1cigpOworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
IGRlbGVnYXRlVHlwZTogImZvY3Vzb3V0IgorICAgICAgICB9LAorICAgICAgICBjbGljazogewor
CisgICAgICAgICAgICAvLyBGb3IgY2hlY2tib3gsIGZpcmUgbmF0aXZlIGV2ZW50IHNvIGNoZWNr
ZWQgc3RhdGUgd2lsbCBiZSByaWdodAorICAgICAgICAgICAgdHJpZ2dlcjogZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICAgICAgaWYgKCB0aGlzLnR5cGUgPT09ICJjaGVja2JveCIgJiYgdGhpcy5j
bGljayAmJiBqUXVlcnkubm9kZU5hbWUoIHRoaXMsICJpbnB1dCIgKSApIHsKKyAgICAgICAgICAg
ICAgICAgICAgdGhpcy5jbGljaygpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgLy8gRm9y
IGNyb3NzLWJyb3dzZXIgY29uc2lzdGVuY3ksIGRvbid0IGZpcmUgbmF0aXZlIC5jbGljaygpIG9u
IGxpbmtzCisgICAgICAgICAgICBfZGVmYXVsdDogZnVuY3Rpb24oIGV2ZW50ICkgeworICAgICAg
ICAgICAgICAgIHJldHVybiBqUXVlcnkubm9kZU5hbWUoIGV2ZW50LnRhcmdldCwgImEiICk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0sCisKKyAgICAgICAgYmVmb3JldW5sb2FkOiB7CisgICAg
ICAgICAgICBwb3N0RGlzcGF0Y2g6IGZ1bmN0aW9uKCBldmVudCApIHsKKworICAgICAgICAgICAg
ICAgIC8vIFN1cHBvcnQ6IEZpcmVmb3ggMjArCisgICAgICAgICAgICAgICAgLy8gRmlyZWZveCBk
b2Vzbid0IGFsZXJ0IGlmIHRoZSByZXR1cm5WYWx1ZSBmaWVsZCBpcyBub3Qgc2V0LgorICAgICAg
ICAgICAgICAgIGlmICggZXZlbnQucmVzdWx0ICE9PSB1bmRlZmluZWQgJiYgZXZlbnQub3JpZ2lu
YWxFdmVudCApIHsKKyAgICAgICAgICAgICAgICAgICAgZXZlbnQub3JpZ2luYWxFdmVudC5yZXR1
cm5WYWx1ZSA9IGV2ZW50LnJlc3VsdDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9Cit9OworCitqUXVlcnkucmVtb3ZlRXZlbnQgPSBmdW5jdGlvbigg
ZWxlbSwgdHlwZSwgaGFuZGxlICkgeworCisgICAgLy8gVGhpcyAiaWYiIGlzIG5lZWRlZCBmb3Ig
cGxhaW4gb2JqZWN0cworICAgIGlmICggZWxlbS5yZW1vdmVFdmVudExpc3RlbmVyICkgeworICAg
ICAgICBlbGVtLnJlbW92ZUV2ZW50TGlzdGVuZXIoIHR5cGUsIGhhbmRsZSApOworICAgIH0KK307
CisKK2pRdWVyeS5FdmVudCA9IGZ1bmN0aW9uKCBzcmMsIHByb3BzICkgeworCisgICAgLy8gQWxs
b3cgaW5zdGFudGlhdGlvbiB3aXRob3V0IHRoZSAnbmV3JyBrZXl3b3JkCisgICAgaWYgKCAhKCB0
aGlzIGluc3RhbmNlb2YgalF1ZXJ5LkV2ZW50ICkgKSB7CisgICAgICAgIHJldHVybiBuZXcgalF1
ZXJ5LkV2ZW50KCBzcmMsIHByb3BzICk7CisgICAgfQorCisgICAgLy8gRXZlbnQgb2JqZWN0Cisg
ICAgaWYgKCBzcmMgJiYgc3JjLnR5cGUgKSB7CisgICAgICAgIHRoaXMub3JpZ2luYWxFdmVudCA9
IHNyYzsKKyAgICAgICAgdGhpcy50eXBlID0gc3JjLnR5cGU7CisKKyAgICAgICAgLy8gRXZlbnRz
IGJ1YmJsaW5nIHVwIHRoZSBkb2N1bWVudCBtYXkgaGF2ZSBiZWVuIG1hcmtlZCBhcyBwcmV2ZW50
ZWQKKyAgICAgICAgLy8gYnkgYSBoYW5kbGVyIGxvd2VyIGRvd24gdGhlIHRyZWU7IHJlZmxlY3Qg
dGhlIGNvcnJlY3QgdmFsdWUuCisgICAgICAgIHRoaXMuaXNEZWZhdWx0UHJldmVudGVkID0gc3Jj
LmRlZmF1bHRQcmV2ZW50ZWQgfHwKKyAgICAgICAgICAgICAgICBzcmMuZGVmYXVsdFByZXZlbnRl
ZCA9PT0gdW5kZWZpbmVkICYmCisKKyAgICAgICAgICAgICAgICAvLyBTdXBwb3J0OiBBbmRyb2lk
IDw9Mi4zIG9ubHkKKyAgICAgICAgICAgICAgICBzcmMucmV0dXJuVmFsdWUgPT09IGZhbHNlID8K
KyAgICAgICAgICAgIHJldHVyblRydWUgOgorICAgICAgICAgICAgcmV0dXJuRmFsc2U7CisKKyAg
ICAgICAgLy8gQ3JlYXRlIHRhcmdldCBwcm9wZXJ0aWVzCisgICAgICAgIC8vIFN1cHBvcnQ6IFNh
ZmFyaSA8PTYgLSA3IG9ubHkKKyAgICAgICAgLy8gVGFyZ2V0IHNob3VsZCBub3QgYmUgYSB0ZXh0
IG5vZGUgKCM1MDQsICMxMzE0MykKKyAgICAgICAgdGhpcy50YXJnZXQgPSAoIHNyYy50YXJnZXQg
JiYgc3JjLnRhcmdldC5ub2RlVHlwZSA9PT0gMyApID8KKyAgICAgICAgICAgIHNyYy50YXJnZXQu
cGFyZW50Tm9kZSA6CisgICAgICAgICAgICBzcmMudGFyZ2V0OworCisgICAgICAgIHRoaXMuY3Vy
cmVudFRhcmdldCA9IHNyYy5jdXJyZW50VGFyZ2V0OworICAgICAgICB0aGlzLnJlbGF0ZWRUYXJn
ZXQgPSBzcmMucmVsYXRlZFRhcmdldDsKKworICAgIC8vIEV2ZW50IHR5cGUKKyAgICB9IGVsc2Ug
eworICAgICAgICB0aGlzLnR5cGUgPSBzcmM7CisgICAgfQorCisgICAgLy8gUHV0IGV4cGxpY2l0
bHkgcHJvdmlkZWQgcHJvcGVydGllcyBvbnRvIHRoZSBldmVudCBvYmplY3QKKyAgICBpZiAoIHBy
b3BzICkgeworICAgICAgICBqUXVlcnkuZXh0ZW5kKCB0aGlzLCBwcm9wcyApOworICAgIH0KKwor
ICAgIC8vIENyZWF0ZSBhIHRpbWVzdGFtcCBpZiBpbmNvbWluZyBldmVudCBkb2Vzbid0IGhhdmUg
b25lCisgICAgdGhpcy50aW1lU3RhbXAgPSBzcmMgJiYgc3JjLnRpbWVTdGFtcCB8fCBqUXVlcnku
bm93KCk7CisKKyAgICAvLyBNYXJrIGl0IGFzIGZpeGVkCisgICAgdGhpc1sgalF1ZXJ5LmV4cGFu
ZG8gXSA9IHRydWU7Cit9OworCisvLyBqUXVlcnkuRXZlbnQgaXMgYmFzZWQgb24gRE9NMyBFdmVu
dHMgYXMgc3BlY2lmaWVkIGJ5IHRoZSBFQ01BU2NyaXB0IExhbmd1YWdlIEJpbmRpbmcKKy8vIGh0
dHBzOi8vd3d3LnczLm9yZy9UUi8yMDAzL1dELURPTS1MZXZlbC0zLUV2ZW50cy0yMDAzMDMzMS9l
Y21hLXNjcmlwdC1iaW5kaW5nLmh0bWwKK2pRdWVyeS5FdmVudC5wcm90b3R5cGUgPSB7CisgICAg
Y29uc3RydWN0b3I6IGpRdWVyeS5FdmVudCwKKyAgICBpc0RlZmF1bHRQcmV2ZW50ZWQ6IHJldHVy
bkZhbHNlLAorICAgIGlzUHJvcGFnYXRpb25TdG9wcGVkOiByZXR1cm5GYWxzZSwKKyAgICBpc0lt
bWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZDogcmV0dXJuRmFsc2UsCisgICAgaXNTaW11bGF0ZWQ6
IGZhbHNlLAorCisgICAgcHJldmVudERlZmF1bHQ6IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIg
ZSA9IHRoaXMub3JpZ2luYWxFdmVudDsKKworICAgICAgICB0aGlzLmlzRGVmYXVsdFByZXZlbnRl
ZCA9IHJldHVyblRydWU7CisKKyAgICAgICAgaWYgKCBlICYmICF0aGlzLmlzU2ltdWxhdGVkICkg
eworICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICB9CisgICAgfSwKKyAg
ICBzdG9wUHJvcGFnYXRpb246IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgZSA9IHRoaXMub3Jp
Z2luYWxFdmVudDsKKworICAgICAgICB0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkID0gcmV0dXJu
VHJ1ZTsKKworICAgICAgICBpZiAoIGUgJiYgIXRoaXMuaXNTaW11bGF0ZWQgKSB7CisgICAgICAg
ICAgICBlLnN0b3BQcm9wYWdhdGlvbigpOworICAgICAgICB9CisgICAgfSwKKyAgICBzdG9wSW1t
ZWRpYXRlUHJvcGFnYXRpb246IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgZSA9IHRoaXMub3Jp
Z2luYWxFdmVudDsKKworICAgICAgICB0aGlzLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVk
ID0gcmV0dXJuVHJ1ZTsKKworICAgICAgICBpZiAoIGUgJiYgIXRoaXMuaXNTaW11bGF0ZWQgKSB7
CisgICAgICAgICAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpOworICAgICAgICB9CisK
KyAgICAgICAgdGhpcy5zdG9wUHJvcGFnYXRpb24oKTsKKyAgICB9Cit9OworCisvLyBJbmNsdWRl
cyBhbGwgY29tbW9uIGV2ZW50IHByb3BzIGluY2x1ZGluZyBLZXlFdmVudCBhbmQgTW91c2VFdmVu
dCBzcGVjaWZpYyBwcm9wcworalF1ZXJ5LmVhY2goIHsKKyAgICBhbHRLZXk6IHRydWUsCisgICAg
YnViYmxlczogdHJ1ZSwKKyAgICBjYW5jZWxhYmxlOiB0cnVlLAorICAgIGNoYW5nZWRUb3VjaGVz
OiB0cnVlLAorICAgIGN0cmxLZXk6IHRydWUsCisgICAgZGV0YWlsOiB0cnVlLAorICAgIGV2ZW50
UGhhc2U6IHRydWUsCisgICAgbWV0YUtleTogdHJ1ZSwKKyAgICBwYWdlWDogdHJ1ZSwKKyAgICBw
YWdlWTogdHJ1ZSwKKyAgICBzaGlmdEtleTogdHJ1ZSwKKyAgICB2aWV3OiB0cnVlLAorICAgICJj
aGFyIjogdHJ1ZSwKKyAgICBjaGFyQ29kZTogdHJ1ZSwKKyAgICBrZXk6IHRydWUsCisgICAga2V5
Q29kZTogdHJ1ZSwKKyAgICBidXR0b246IHRydWUsCisgICAgYnV0dG9uczogdHJ1ZSwKKyAgICBj
bGllbnRYOiB0cnVlLAorICAgIGNsaWVudFk6IHRydWUsCisgICAgb2Zmc2V0WDogdHJ1ZSwKKyAg
ICBvZmZzZXRZOiB0cnVlLAorICAgIHBvaW50ZXJJZDogdHJ1ZSwKKyAgICBwb2ludGVyVHlwZTog
dHJ1ZSwKKyAgICBzY3JlZW5YOiB0cnVlLAorICAgIHNjcmVlblk6IHRydWUsCisgICAgdGFyZ2V0
VG91Y2hlczogdHJ1ZSwKKyAgICB0b0VsZW1lbnQ6IHRydWUsCisgICAgdG91Y2hlczogdHJ1ZSwK
KworICAgIHdoaWNoOiBmdW5jdGlvbiggZXZlbnQgKSB7CisgICAgICAgIHZhciBidXR0b24gPSBl
dmVudC5idXR0b247CisKKyAgICAgICAgLy8gQWRkIHdoaWNoIGZvciBrZXkgZXZlbnRzCisgICAg
ICAgIGlmICggZXZlbnQud2hpY2ggPT0gbnVsbCAmJiBya2V5RXZlbnQudGVzdCggZXZlbnQudHlw
ZSApICkgeworICAgICAgICAgICAgcmV0dXJuIGV2ZW50LmNoYXJDb2RlICE9IG51bGwgPyBldmVu
dC5jaGFyQ29kZSA6IGV2ZW50LmtleUNvZGU7CisgICAgICAgIH0KKworICAgICAgICAvLyBBZGQg
d2hpY2ggZm9yIGNsaWNrOiAxID09PSBsZWZ0OyAyID09PSBtaWRkbGU7IDMgPT09IHJpZ2h0Cisg
ICAgICAgIGlmICggIWV2ZW50LndoaWNoICYmIGJ1dHRvbiAhPT0gdW5kZWZpbmVkICYmIHJtb3Vz
ZUV2ZW50LnRlc3QoIGV2ZW50LnR5cGUgKSApIHsKKyAgICAgICAgICAgIGlmICggYnV0dG9uICYg
MSApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgaWYgKCBidXR0b24gJiAyICkgeworICAgICAgICAgICAgICAgIHJldHVybiAzOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIGJ1dHRvbiAmIDQgKSB7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIDI7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiAwOwor
ICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGV2ZW50LndoaWNoOworICAgIH0KK30sIGpRdWVy
eS5ldmVudC5hZGRQcm9wICk7CisKKy8vIENyZWF0ZSBtb3VzZWVudGVyL2xlYXZlIGV2ZW50cyB1
c2luZyBtb3VzZW92ZXIvb3V0IGFuZCBldmVudC10aW1lIGNoZWNrcworLy8gc28gdGhhdCBldmVu
dCBkZWxlZ2F0aW9uIHdvcmtzIGluIGpRdWVyeS4KKy8vIERvIHRoZSBzYW1lIGZvciBwb2ludGVy
ZW50ZXIvcG9pbnRlcmxlYXZlIGFuZCBwb2ludGVyb3Zlci9wb2ludGVyb3V0CisvLworLy8gU3Vw
cG9ydDogU2FmYXJpIDcgb25seQorLy8gU2FmYXJpIHNlbmRzIG1vdXNlZW50ZXIgdG9vIG9mdGVu
OyBzZWU6CisvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2Rl
dGFpbD9pZD00NzAyNTgKKy8vIGZvciB0aGUgZGVzY3JpcHRpb24gb2YgdGhlIGJ1ZyAoaXQgZXhp
c3RlZCBpbiBvbGRlciBDaHJvbWUgdmVyc2lvbnMgYXMgd2VsbCkuCitqUXVlcnkuZWFjaCggewor
ICAgIG1vdXNlZW50ZXI6ICJtb3VzZW92ZXIiLAorICAgIG1vdXNlbGVhdmU6ICJtb3VzZW91dCIs
CisgICAgcG9pbnRlcmVudGVyOiAicG9pbnRlcm92ZXIiLAorICAgIHBvaW50ZXJsZWF2ZTogInBv
aW50ZXJvdXQiCit9LCBmdW5jdGlvbiggb3JpZywgZml4ICkgeworICAgIGpRdWVyeS5ldmVudC5z
cGVjaWFsWyBvcmlnIF0gPSB7CisgICAgICAgIGRlbGVnYXRlVHlwZTogZml4LAorICAgICAgICBi
aW5kVHlwZTogZml4LAorCisgICAgICAgIGhhbmRsZTogZnVuY3Rpb24oIGV2ZW50ICkgeworICAg
ICAgICAgICAgdmFyIHJldCwKKyAgICAgICAgICAgICAgICB0YXJnZXQgPSB0aGlzLAorICAgICAg
ICAgICAgICAgIHJlbGF0ZWQgPSBldmVudC5yZWxhdGVkVGFyZ2V0LAorICAgICAgICAgICAgICAg
IGhhbmRsZU9iaiA9IGV2ZW50LmhhbmRsZU9iajsKKworICAgICAgICAgICAgLy8gRm9yIG1vdXNl
ZW50ZXIvbGVhdmUgY2FsbCB0aGUgaGFuZGxlciBpZiByZWxhdGVkIGlzIG91dHNpZGUgdGhlIHRh
cmdldC4KKyAgICAgICAgICAgIC8vIE5COiBObyByZWxhdGVkVGFyZ2V0IGlmIHRoZSBtb3VzZSBs
ZWZ0L2VudGVyZWQgdGhlIGJyb3dzZXIgd2luZG93CisgICAgICAgICAgICBpZiAoICFyZWxhdGVk
IHx8ICggcmVsYXRlZCAhPT0gdGFyZ2V0ICYmICFqUXVlcnkuY29udGFpbnMoIHRhcmdldCwgcmVs
YXRlZCApICkgKSB7CisgICAgICAgICAgICAgICAgZXZlbnQudHlwZSA9IGhhbmRsZU9iai5vcmln
VHlwZTsKKyAgICAgICAgICAgICAgICByZXQgPSBoYW5kbGVPYmouaGFuZGxlci5hcHBseSggdGhp
cywgYXJndW1lbnRzICk7CisgICAgICAgICAgICAgICAgZXZlbnQudHlwZSA9IGZpeDsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiByZXQ7CisgICAgICAgIH0KKyAgICB9OworfSAp
OworCitqUXVlcnkuZm4uZXh0ZW5kKCB7CisKKyAgICBvbjogZnVuY3Rpb24oIHR5cGVzLCBzZWxl
Y3RvciwgZGF0YSwgZm4gKSB7CisgICAgICAgIHJldHVybiBvbiggdGhpcywgdHlwZXMsIHNlbGVj
dG9yLCBkYXRhLCBmbiApOworICAgIH0sCisgICAgb25lOiBmdW5jdGlvbiggdHlwZXMsIHNlbGVj
dG9yLCBkYXRhLCBmbiApIHsKKyAgICAgICAgcmV0dXJuIG9uKCB0aGlzLCB0eXBlcywgc2VsZWN0
b3IsIGRhdGEsIGZuLCAxICk7CisgICAgfSwKKyAgICBvZmY6IGZ1bmN0aW9uKCB0eXBlcywgc2Vs
ZWN0b3IsIGZuICkgeworICAgICAgICB2YXIgaGFuZGxlT2JqLCB0eXBlOworICAgICAgICBpZiAo
IHR5cGVzICYmIHR5cGVzLnByZXZlbnREZWZhdWx0ICYmIHR5cGVzLmhhbmRsZU9iaiApIHsKKwor
ICAgICAgICAgICAgLy8gKCBldmVudCApICBkaXNwYXRjaGVkIGpRdWVyeS5FdmVudAorICAgICAg
ICAgICAgaGFuZGxlT2JqID0gdHlwZXMuaGFuZGxlT2JqOworICAgICAgICAgICAgalF1ZXJ5KCB0
eXBlcy5kZWxlZ2F0ZVRhcmdldCApLm9mZigKKyAgICAgICAgICAgICAgICBoYW5kbGVPYmoubmFt
ZXNwYWNlID8KKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlT2JqLm9yaWdUeXBlICsgIi4iICsg
aGFuZGxlT2JqLm5hbWVzcGFjZSA6CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZU9iai5vcmln
VHlwZSwKKyAgICAgICAgICAgICAgICBoYW5kbGVPYmouc2VsZWN0b3IsCisgICAgICAgICAgICAg
ICAgaGFuZGxlT2JqLmhhbmRsZXIKKyAgICAgICAgICAgICk7CisgICAgICAgICAgICByZXR1cm4g
dGhpczsKKyAgICAgICAgfQorICAgICAgICBpZiAoIHR5cGVvZiB0eXBlcyA9PT0gIm9iamVjdCIg
KSB7CisKKyAgICAgICAgICAgIC8vICggdHlwZXMtb2JqZWN0IFssIHNlbGVjdG9yXSApCisgICAg
ICAgICAgICBmb3IgKCB0eXBlIGluIHR5cGVzICkgeworICAgICAgICAgICAgICAgIHRoaXMub2Zm
KCB0eXBlLCBzZWxlY3RvciwgdHlwZXNbIHR5cGUgXSApOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCBzZWxlY3RvciA9PT0g
ZmFsc2UgfHwgdHlwZW9mIHNlbGVjdG9yID09PSAiZnVuY3Rpb24iICkgeworCisgICAgICAgICAg
ICAvLyAoIHR5cGVzIFssIGZuXSApCisgICAgICAgICAgICBmbiA9IHNlbGVjdG9yOworICAgICAg
ICAgICAgc2VsZWN0b3IgPSB1bmRlZmluZWQ7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCBmbiA9
PT0gZmFsc2UgKSB7CisgICAgICAgICAgICBmbiA9IHJldHVybkZhbHNlOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgalF1ZXJ5
LmV2ZW50LnJlbW92ZSggdGhpcywgdHlwZXMsIGZuLCBzZWxlY3RvciApOworICAgICAgICB9ICk7
CisgICAgfQorfSApOworCisKK3ZhcgorCisgICAgLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiAq
LworCisgICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9lc2xpbnQvZXNsaW50L2lzc3Vlcy8z
MjI5CisgICAgcnhodG1sVGFnID0gLzwoPyFhcmVhfGJyfGNvbHxlbWJlZHxocnxpbWd8aW5wdXR8
bGlua3xtZXRhfHBhcmFtKSgoW2Etel1bXlwvXDA+XHgyMFx0XHJcblxmXSopW14+XSopXC8+L2dp
LAorCisgICAgLyogZXNsaW50LWVuYWJsZSAqLworCisgICAgLy8gU3VwcG9ydDogSUUgPD0xMCAt
IDExLCBFZGdlIDEyIC0gMTMKKyAgICAvLyBJbiBJRS9FZGdlIHVzaW5nIHJlZ2V4IGdyb3VwcyBo
ZXJlIGNhdXNlcyBzZXZlcmUgc2xvd2Rvd25zLgorICAgIC8vIFNlZSBodHRwczovL2Nvbm5lY3Qu
bWljcm9zb2Z0LmNvbS9JRS9mZWVkYmFjay9kZXRhaWxzLzE3MzY1MTIvCisgICAgcm5vSW5uZXJo
dG1sID0gLzxzY3JpcHR8PHN0eWxlfDxsaW5rL2ksCisKKyAgICAvLyBjaGVja2VkPSJjaGVja2Vk
IiBvciBjaGVja2VkCisgICAgcmNoZWNrZWQgPSAvY2hlY2tlZFxzKig/OltePV18PVxzKi5jaGVj
a2VkLikvaSwKKyAgICByc2NyaXB0VHlwZU1hc2tlZCA9IC9edHJ1ZVwvKC4qKS8sCisgICAgcmNs
ZWFuU2NyaXB0ID0gL15ccyo8ISg/OlxbQ0RBVEFcW3wtLSl8KD86XF1cXXwtLSk+XHMqJC9nOwor
CitmdW5jdGlvbiBtYW5pcHVsYXRpb25UYXJnZXQoIGVsZW0sIGNvbnRlbnQgKSB7CisgICAgaWYg
KCBqUXVlcnkubm9kZU5hbWUoIGVsZW0sICJ0YWJsZSIgKSAmJgorICAgICAgICBqUXVlcnkubm9k
ZU5hbWUoIGNvbnRlbnQubm9kZVR5cGUgIT09IDExID8gY29udGVudCA6IGNvbnRlbnQuZmlyc3RD
aGlsZCwgInRyIiApICkgeworCisgICAgICAgIHJldHVybiBlbGVtLmdldEVsZW1lbnRzQnlUYWdO
YW1lKCAidGJvZHkiIClbIDAgXSB8fCBlbGVtOworICAgIH0KKworICAgIHJldHVybiBlbGVtOwor
fQorCisvLyBSZXBsYWNlL3Jlc3RvcmUgdGhlIHR5cGUgYXR0cmlidXRlIG9mIHNjcmlwdCBlbGVt
ZW50cyBmb3Igc2FmZSBET00gbWFuaXB1bGF0aW9uCitmdW5jdGlvbiBkaXNhYmxlU2NyaXB0KCBl
bGVtICkgeworICAgIGVsZW0udHlwZSA9ICggZWxlbS5nZXRBdHRyaWJ1dGUoICJ0eXBlIiApICE9
PSBudWxsICkgKyAiLyIgKyBlbGVtLnR5cGU7CisgICAgcmV0dXJuIGVsZW07Cit9CitmdW5jdGlv
biByZXN0b3JlU2NyaXB0KCBlbGVtICkgeworICAgIHZhciBtYXRjaCA9IHJzY3JpcHRUeXBlTWFz
a2VkLmV4ZWMoIGVsZW0udHlwZSApOworCisgICAgaWYgKCBtYXRjaCApIHsKKyAgICAgICAgZWxl
bS50eXBlID0gbWF0Y2hbIDEgXTsKKyAgICB9IGVsc2UgeworICAgICAgICBlbGVtLnJlbW92ZUF0
dHJpYnV0ZSggInR5cGUiICk7CisgICAgfQorCisgICAgcmV0dXJuIGVsZW07Cit9CisKK2Z1bmN0
aW9uIGNsb25lQ29weUV2ZW50KCBzcmMsIGRlc3QgKSB7CisgICAgdmFyIGksIGwsIHR5cGUsIHBk
YXRhT2xkLCBwZGF0YUN1ciwgdWRhdGFPbGQsIHVkYXRhQ3VyLCBldmVudHM7CisKKyAgICBpZiAo
IGRlc3Qubm9kZVR5cGUgIT09IDEgKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAv
LyAxLiBDb3B5IHByaXZhdGUgZGF0YTogZXZlbnRzLCBoYW5kbGVycywgZXRjLgorICAgIGlmICgg
ZGF0YVByaXYuaGFzRGF0YSggc3JjICkgKSB7CisgICAgICAgIHBkYXRhT2xkID0gZGF0YVByaXYu
YWNjZXNzKCBzcmMgKTsKKyAgICAgICAgcGRhdGFDdXIgPSBkYXRhUHJpdi5zZXQoIGRlc3QsIHBk
YXRhT2xkICk7CisgICAgICAgIGV2ZW50cyA9IHBkYXRhT2xkLmV2ZW50czsKKworICAgICAgICBp
ZiAoIGV2ZW50cyApIHsKKyAgICAgICAgICAgIGRlbGV0ZSBwZGF0YUN1ci5oYW5kbGU7CisgICAg
ICAgICAgICBwZGF0YUN1ci5ldmVudHMgPSB7fTsKKworICAgICAgICAgICAgZm9yICggdHlwZSBp
biBldmVudHMgKSB7CisgICAgICAgICAgICAgICAgZm9yICggaSA9IDAsIGwgPSBldmVudHNbIHR5
cGUgXS5sZW5ndGg7IGkgPCBsOyBpKysgKSB7CisgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5l
dmVudC5hZGQoIGRlc3QsIHR5cGUsIGV2ZW50c1sgdHlwZSBdWyBpIF0gKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyAyLiBDb3B5
IHVzZXIgZGF0YQorICAgIGlmICggZGF0YVVzZXIuaGFzRGF0YSggc3JjICkgKSB7CisgICAgICAg
IHVkYXRhT2xkID0gZGF0YVVzZXIuYWNjZXNzKCBzcmMgKTsKKyAgICAgICAgdWRhdGFDdXIgPSBq
UXVlcnkuZXh0ZW5kKCB7fSwgdWRhdGFPbGQgKTsKKworICAgICAgICBkYXRhVXNlci5zZXQoIGRl
c3QsIHVkYXRhQ3VyICk7CisgICAgfQorfQorCisvLyBGaXggSUUgYnVncywgc2VlIHN1cHBvcnQg
dGVzdHMKK2Z1bmN0aW9uIGZpeElucHV0KCBzcmMsIGRlc3QgKSB7CisgICAgdmFyIG5vZGVOYW1l
ID0gZGVzdC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOworCisgICAgLy8gRmFpbHMgdG8gcGVyc2lz
dCB0aGUgY2hlY2tlZCBzdGF0ZSBvZiBhIGNsb25lZCBjaGVja2JveCBvciByYWRpbyBidXR0b24u
CisgICAgaWYgKCBub2RlTmFtZSA9PT0gImlucHV0IiAmJiByY2hlY2thYmxlVHlwZS50ZXN0KCBz
cmMudHlwZSApICkgeworICAgICAgICBkZXN0LmNoZWNrZWQgPSBzcmMuY2hlY2tlZDsKKworICAg
IC8vIEZhaWxzIHRvIHJldHVybiB0aGUgc2VsZWN0ZWQgb3B0aW9uIHRvIHRoZSBkZWZhdWx0IHNl
bGVjdGVkIHN0YXRlIHdoZW4gY2xvbmluZyBvcHRpb25zCisgICAgfSBlbHNlIGlmICggbm9kZU5h
bWUgPT09ICJpbnB1dCIgfHwgbm9kZU5hbWUgPT09ICJ0ZXh0YXJlYSIgKSB7CisgICAgICAgIGRl
c3QuZGVmYXVsdFZhbHVlID0gc3JjLmRlZmF1bHRWYWx1ZTsKKyAgICB9Cit9CisKK2Z1bmN0aW9u
IGRvbU1hbmlwKCBjb2xsZWN0aW9uLCBhcmdzLCBjYWxsYmFjaywgaWdub3JlZCApIHsKKworICAg
IC8vIEZsYXR0ZW4gYW55IG5lc3RlZCBhcnJheXMKKyAgICBhcmdzID0gY29uY2F0LmFwcGx5KCBb
XSwgYXJncyApOworCisgICAgdmFyIGZyYWdtZW50LCBmaXJzdCwgc2NyaXB0cywgaGFzU2NyaXB0
cywgbm9kZSwgZG9jLAorICAgICAgICBpID0gMCwKKyAgICAgICAgbCA9IGNvbGxlY3Rpb24ubGVu
Z3RoLAorICAgICAgICBpTm9DbG9uZSA9IGwgLSAxLAorICAgICAgICB2YWx1ZSA9IGFyZ3NbIDAg
XSwKKyAgICAgICAgaXNGdW5jdGlvbiA9IGpRdWVyeS5pc0Z1bmN0aW9uKCB2YWx1ZSApOworCisg
ICAgLy8gV2UgY2FuJ3QgY2xvbmVOb2RlIGZyYWdtZW50cyB0aGF0IGNvbnRhaW4gY2hlY2tlZCwg
aW4gV2ViS2l0CisgICAgaWYgKCBpc0Z1bmN0aW9uIHx8CisgICAgICAgICAgICAoIGwgPiAxICYm
IHR5cGVvZiB2YWx1ZSA9PT0gInN0cmluZyIgJiYKKyAgICAgICAgICAgICAgICAhc3VwcG9ydC5j
aGVja0Nsb25lICYmIHJjaGVja2VkLnRlc3QoIHZhbHVlICkgKSApIHsKKyAgICAgICAgcmV0dXJu
IGNvbGxlY3Rpb24uZWFjaCggZnVuY3Rpb24oIGluZGV4ICkgeworICAgICAgICAgICAgdmFyIHNl
bGYgPSBjb2xsZWN0aW9uLmVxKCBpbmRleCApOworICAgICAgICAgICAgaWYgKCBpc0Z1bmN0aW9u
ICkgeworICAgICAgICAgICAgICAgIGFyZ3NbIDAgXSA9IHZhbHVlLmNhbGwoIHRoaXMsIGluZGV4
LCBzZWxmLmh0bWwoKSApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZG9tTWFuaXAoIHNl
bGYsIGFyZ3MsIGNhbGxiYWNrLCBpZ25vcmVkICk7CisgICAgICAgIH0gKTsKKyAgICB9CisKKyAg
ICBpZiAoIGwgKSB7CisgICAgICAgIGZyYWdtZW50ID0gYnVpbGRGcmFnbWVudCggYXJncywgY29s
bGVjdGlvblsgMCBdLm93bmVyRG9jdW1lbnQsIGZhbHNlLCBjb2xsZWN0aW9uLCBpZ25vcmVkICk7
CisgICAgICAgIGZpcnN0ID0gZnJhZ21lbnQuZmlyc3RDaGlsZDsKKworICAgICAgICBpZiAoIGZy
YWdtZW50LmNoaWxkTm9kZXMubGVuZ3RoID09PSAxICkgeworICAgICAgICAgICAgZnJhZ21lbnQg
PSBmaXJzdDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFJlcXVpcmUgZWl0aGVyIG5ldyBjb250
ZW50IG9yIGFuIGludGVyZXN0IGluIGlnbm9yZWQgZWxlbWVudHMgdG8gaW52b2tlIHRoZSBjYWxs
YmFjaworICAgICAgICBpZiAoIGZpcnN0IHx8IGlnbm9yZWQgKSB7CisgICAgICAgICAgICBzY3Jp
cHRzID0galF1ZXJ5Lm1hcCggZ2V0QWxsKCBmcmFnbWVudCwgInNjcmlwdCIgKSwgZGlzYWJsZVNj
cmlwdCApOworICAgICAgICAgICAgaGFzU2NyaXB0cyA9IHNjcmlwdHMubGVuZ3RoOworCisgICAg
ICAgICAgICAvLyBVc2UgdGhlIG9yaWdpbmFsIGZyYWdtZW50IGZvciB0aGUgbGFzdCBpdGVtCisg
ICAgICAgICAgICAvLyBpbnN0ZWFkIG9mIHRoZSBmaXJzdCBiZWNhdXNlIGl0IGNhbiBlbmQgdXAK
KyAgICAgICAgICAgIC8vIGJlaW5nIGVtcHRpZWQgaW5jb3JyZWN0bHkgaW4gY2VydGFpbiBzaXR1
YXRpb25zICgjODA3MCkuCisgICAgICAgICAgICBmb3IgKCA7IGkgPCBsOyBpKysgKSB7CisgICAg
ICAgICAgICAgICAgbm9kZSA9IGZyYWdtZW50OworCisgICAgICAgICAgICAgICAgaWYgKCBpICE9
PSBpTm9DbG9uZSApIHsKKyAgICAgICAgICAgICAgICAgICAgbm9kZSA9IGpRdWVyeS5jbG9uZSgg
bm9kZSwgdHJ1ZSwgdHJ1ZSApOworCisgICAgICAgICAgICAgICAgICAgIC8vIEtlZXAgcmVmZXJl
bmNlcyB0byBjbG9uZWQgc2NyaXB0cyBmb3IgbGF0ZXIgcmVzdG9yYXRpb24KKyAgICAgICAgICAg
ICAgICAgICAgaWYgKCBoYXNTY3JpcHRzICkgeworCisgICAgICAgICAgICAgICAgICAgICAgICAv
LyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4wIG9ubHksIFBoYW50b21KUyAxIG9ubHkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIHB1c2guYXBwbHkoXywgYXJyYXlsaWtlKSB0aHJvd3Mgb24gYW5j
aWVudCBXZWJLaXQKKyAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5tZXJnZSggc2NyaXB0
cywgZ2V0QWxsKCBub2RlLCAic2NyaXB0IiApICk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBjYWxsYmFjay5jYWxsKCBjb2xsZWN0
aW9uWyBpIF0sIG5vZGUsIGkgKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCBo
YXNTY3JpcHRzICkgeworICAgICAgICAgICAgICAgIGRvYyA9IHNjcmlwdHNbIHNjcmlwdHMubGVu
Z3RoIC0gMSBdLm93bmVyRG9jdW1lbnQ7CisKKyAgICAgICAgICAgICAgICAvLyBSZWVuYWJsZSBz
Y3JpcHRzCisgICAgICAgICAgICAgICAgalF1ZXJ5Lm1hcCggc2NyaXB0cywgcmVzdG9yZVNjcmlw
dCApOworCisgICAgICAgICAgICAgICAgLy8gRXZhbHVhdGUgZXhlY3V0YWJsZSBzY3JpcHRzIG9u
IGZpcnN0IGRvY3VtZW50IGluc2VydGlvbgorICAgICAgICAgICAgICAgIGZvciAoIGkgPSAwOyBp
IDwgaGFzU2NyaXB0czsgaSsrICkgeworICAgICAgICAgICAgICAgICAgICBub2RlID0gc2NyaXB0
c1sgaSBdOworICAgICAgICAgICAgICAgICAgICBpZiAoIHJzY3JpcHRUeXBlLnRlc3QoIG5vZGUu
dHlwZSB8fCAiIiApICYmCisgICAgICAgICAgICAgICAgICAgICAgICAhZGF0YVByaXYuYWNjZXNz
KCBub2RlLCAiZ2xvYmFsRXZhbCIgKSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5
LmNvbnRhaW5zKCBkb2MsIG5vZGUgKSApIHsKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCBub2RlLnNyYyApIHsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE9wdGlvbmFs
IEFKQVggZGVwZW5kZW5jeSwgYnV0IHdvbid0IHJ1biBzY3JpcHRzIGlmIG5vdCBwcmVzZW50Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBqUXVlcnkuX2V2YWxVcmwgKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5fZXZhbFVybCggbm9kZS5zcmMgKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIERPTUV2YWwoIG5vZGUudGV4dENv
bnRlbnQucmVwbGFjZSggcmNsZWFuU2NyaXB0LCAiIiApLCBkb2MgKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBjb2xsZWN0aW9uOwor
fQorCitmdW5jdGlvbiByZW1vdmUoIGVsZW0sIHNlbGVjdG9yLCBrZWVwRGF0YSApIHsKKyAgICB2
YXIgbm9kZSwKKyAgICAgICAgbm9kZXMgPSBzZWxlY3RvciA/IGpRdWVyeS5maWx0ZXIoIHNlbGVj
dG9yLCBlbGVtICkgOiBlbGVtLAorICAgICAgICBpID0gMDsKKworICAgIGZvciAoIDsgKCBub2Rl
ID0gbm9kZXNbIGkgXSApICE9IG51bGw7IGkrKyApIHsKKyAgICAgICAgaWYgKCAha2VlcERhdGEg
JiYgbm9kZS5ub2RlVHlwZSA9PT0gMSApIHsKKyAgICAgICAgICAgIGpRdWVyeS5jbGVhbkRhdGEo
IGdldEFsbCggbm9kZSApICk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIG5vZGUucGFyZW50
Tm9kZSApIHsKKyAgICAgICAgICAgIGlmICgga2VlcERhdGEgJiYgalF1ZXJ5LmNvbnRhaW5zKCBu
b2RlLm93bmVyRG9jdW1lbnQsIG5vZGUgKSApIHsKKyAgICAgICAgICAgICAgICBzZXRHbG9iYWxF
dmFsKCBnZXRBbGwoIG5vZGUsICJzY3JpcHQiICkgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIG5vZGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCggbm9kZSApOworICAgICAgICB9CisgICAg
fQorCisgICAgcmV0dXJuIGVsZW07Cit9CisKK2pRdWVyeS5leHRlbmQoIHsKKyAgICBodG1sUHJl
ZmlsdGVyOiBmdW5jdGlvbiggaHRtbCApIHsKKyAgICAgICAgcmV0dXJuIGh0bWwucmVwbGFjZSgg
cnhodG1sVGFnLCAiPCQxPjwvJDI+IiApOworICAgIH0sCisKKyAgICBjbG9uZTogZnVuY3Rpb24o
IGVsZW0sIGRhdGFBbmRFdmVudHMsIGRlZXBEYXRhQW5kRXZlbnRzICkgeworICAgICAgICB2YXIg
aSwgbCwgc3JjRWxlbWVudHMsIGRlc3RFbGVtZW50cywKKyAgICAgICAgICAgIGNsb25lID0gZWxl
bS5jbG9uZU5vZGUoIHRydWUgKSwKKyAgICAgICAgICAgIGluUGFnZSA9IGpRdWVyeS5jb250YWlu
cyggZWxlbS5vd25lckRvY3VtZW50LCBlbGVtICk7CisKKyAgICAgICAgLy8gRml4IElFIGNsb25p
bmcgaXNzdWVzCisgICAgICAgIGlmICggIXN1cHBvcnQubm9DbG9uZUNoZWNrZWQgJiYgKCBlbGVt
Lm5vZGVUeXBlID09PSAxIHx8IGVsZW0ubm9kZVR5cGUgPT09IDExICkgJiYKKyAgICAgICAgICAg
ICAgICAhalF1ZXJ5LmlzWE1MRG9jKCBlbGVtICkgKSB7CisKKyAgICAgICAgICAgIC8vIFdlIGVz
Y2hldyBTaXp6bGUgaGVyZSBmb3IgcGVyZm9ybWFuY2UgcmVhc29uczogaHR0cHM6Ly9qc3BlcmYu
Y29tL2dldGFsbC12cy1zaXp6bGUvMgorICAgICAgICAgICAgZGVzdEVsZW1lbnRzID0gZ2V0QWxs
KCBjbG9uZSApOworICAgICAgICAgICAgc3JjRWxlbWVudHMgPSBnZXRBbGwoIGVsZW0gKTsKKwor
ICAgICAgICAgICAgZm9yICggaSA9IDAsIGwgPSBzcmNFbGVtZW50cy5sZW5ndGg7IGkgPCBsOyBp
KysgKSB7CisgICAgICAgICAgICAgICAgZml4SW5wdXQoIHNyY0VsZW1lbnRzWyBpIF0sIGRlc3RF
bGVtZW50c1sgaSBdICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBD
b3B5IHRoZSBldmVudHMgZnJvbSB0aGUgb3JpZ2luYWwgdG8gdGhlIGNsb25lCisgICAgICAgIGlm
ICggZGF0YUFuZEV2ZW50cyApIHsKKyAgICAgICAgICAgIGlmICggZGVlcERhdGFBbmRFdmVudHMg
KSB7CisgICAgICAgICAgICAgICAgc3JjRWxlbWVudHMgPSBzcmNFbGVtZW50cyB8fCBnZXRBbGwo
IGVsZW0gKTsKKyAgICAgICAgICAgICAgICBkZXN0RWxlbWVudHMgPSBkZXN0RWxlbWVudHMgfHwg
Z2V0QWxsKCBjbG9uZSApOworCisgICAgICAgICAgICAgICAgZm9yICggaSA9IDAsIGwgPSBzcmNF
bGVtZW50cy5sZW5ndGg7IGkgPCBsOyBpKysgKSB7CisgICAgICAgICAgICAgICAgICAgIGNsb25l
Q29weUV2ZW50KCBzcmNFbGVtZW50c1sgaSBdLCBkZXN0RWxlbWVudHNbIGkgXSApOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgY2xvbmVD
b3B5RXZlbnQoIGVsZW0sIGNsb25lICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAg
ICAgICAvLyBQcmVzZXJ2ZSBzY3JpcHQgZXZhbHVhdGlvbiBoaXN0b3J5CisgICAgICAgIGRlc3RF
bGVtZW50cyA9IGdldEFsbCggY2xvbmUsICJzY3JpcHQiICk7CisgICAgICAgIGlmICggZGVzdEVs
ZW1lbnRzLmxlbmd0aCA+IDAgKSB7CisgICAgICAgICAgICBzZXRHbG9iYWxFdmFsKCBkZXN0RWxl
bWVudHMsICFpblBhZ2UgJiYgZ2V0QWxsKCBlbGVtLCAic2NyaXB0IiApICk7CisgICAgICAgIH0K
KworICAgICAgICAvLyBSZXR1cm4gdGhlIGNsb25lZCBzZXQKKyAgICAgICAgcmV0dXJuIGNsb25l
OworICAgIH0sCisKKyAgICBjbGVhbkRhdGE6IGZ1bmN0aW9uKCBlbGVtcyApIHsKKyAgICAgICAg
dmFyIGRhdGEsIGVsZW0sIHR5cGUsCisgICAgICAgICAgICBzcGVjaWFsID0galF1ZXJ5LmV2ZW50
LnNwZWNpYWwsCisgICAgICAgICAgICBpID0gMDsKKworICAgICAgICBmb3IgKCA7ICggZWxlbSA9
IGVsZW1zWyBpIF0gKSAhPT0gdW5kZWZpbmVkOyBpKysgKSB7CisgICAgICAgICAgICBpZiAoIGFj
Y2VwdERhdGEoIGVsZW0gKSApIHsKKyAgICAgICAgICAgICAgICBpZiAoICggZGF0YSA9IGVsZW1b
IGRhdGFQcml2LmV4cGFuZG8gXSApICkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIGRhdGEu
ZXZlbnRzICkgeworICAgICAgICAgICAgICAgICAgICAgICAgZm9yICggdHlwZSBpbiBkYXRhLmV2
ZW50cyApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHNwZWNpYWxbIHR5cGUg
XSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmV2ZW50LnJlbW92
ZSggZWxlbSwgdHlwZSApOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBp
cyBhIHNob3J0Y3V0IHRvIGF2b2lkIGpRdWVyeS5ldmVudC5yZW1vdmUncyBvdmVyaGVhZAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGpRdWVyeS5yZW1vdmVFdmVudCggZWxlbSwgdHlwZSwgZGF0YS5oYW5kbGUgKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAvLyBTdXBwb3J0
OiBDaHJvbWUgPD0zNSAtIDQ1KworICAgICAgICAgICAgICAgICAgICAvLyBBc3NpZ24gdW5kZWZp
bmVkIGluc3RlYWQgb2YgdXNpbmcgZGVsZXRlLCBzZWUgRGF0YSNyZW1vdmUKKyAgICAgICAgICAg
ICAgICAgICAgZWxlbVsgZGF0YVByaXYuZXhwYW5kbyBdID0gdW5kZWZpbmVkOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoIGVsZW1bIGRhdGFVc2VyLmV4cGFuZG8gXSAp
IHsKKworICAgICAgICAgICAgICAgICAgICAvLyBTdXBwb3J0OiBDaHJvbWUgPD0zNSAtIDQ1Kwor
ICAgICAgICAgICAgICAgICAgICAvLyBBc3NpZ24gdW5kZWZpbmVkIGluc3RlYWQgb2YgdXNpbmcg
ZGVsZXRlLCBzZWUgRGF0YSNyZW1vdmUKKyAgICAgICAgICAgICAgICAgICAgZWxlbVsgZGF0YVVz
ZXIuZXhwYW5kbyBdID0gdW5kZWZpbmVkOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KK30gKTsKKworalF1ZXJ5LmZuLmV4dGVuZCggeworICAgIGRl
dGFjaDogZnVuY3Rpb24oIHNlbGVjdG9yICkgeworICAgICAgICByZXR1cm4gcmVtb3ZlKCB0aGlz
LCBzZWxlY3RvciwgdHJ1ZSApOworICAgIH0sCisKKyAgICByZW1vdmU6IGZ1bmN0aW9uKCBzZWxl
Y3RvciApIHsKKyAgICAgICAgcmV0dXJuIHJlbW92ZSggdGhpcywgc2VsZWN0b3IgKTsKKyAgICB9
LAorCisgICAgdGV4dDogZnVuY3Rpb24oIHZhbHVlICkgeworICAgICAgICByZXR1cm4gYWNjZXNz
KCB0aGlzLCBmdW5jdGlvbiggdmFsdWUgKSB7CisgICAgICAgICAgICByZXR1cm4gdmFsdWUgPT09
IHVuZGVmaW5lZCA/CisgICAgICAgICAgICAgICAgalF1ZXJ5LnRleHQoIHRoaXMgKSA6CisgICAg
ICAgICAgICAgICAgdGhpcy5lbXB0eSgpLmVhY2goIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
ICAgICAgICBpZiAoIHRoaXMubm9kZVR5cGUgPT09IDEgfHwgdGhpcy5ub2RlVHlwZSA9PT0gMTEg
fHwgdGhpcy5ub2RlVHlwZSA9PT0gOSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMu
dGV4dENvbnRlbnQgPSB2YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIH0gKTsKKyAgICAgICAgfSwgbnVsbCwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggKTsKKyAg
ICB9LAorCisgICAgYXBwZW5kOiBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIGRvbU1hbmlw
KCB0aGlzLCBhcmd1bWVudHMsIGZ1bmN0aW9uKCBlbGVtICkgeworICAgICAgICAgICAgaWYgKCB0
aGlzLm5vZGVUeXBlID09PSAxIHx8IHRoaXMubm9kZVR5cGUgPT09IDExIHx8IHRoaXMubm9kZVR5
cGUgPT09IDkgKSB7CisgICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IG1hbmlwdWxhdGlvblRh
cmdldCggdGhpcywgZWxlbSApOworICAgICAgICAgICAgICAgIHRhcmdldC5hcHBlbmRDaGlsZCgg
ZWxlbSApOworICAgICAgICAgICAgfQorICAgICAgICB9ICk7CisgICAgfSwKKworICAgIHByZXBl
bmQ6IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gZG9tTWFuaXAoIHRoaXMsIGFyZ3VtZW50
cywgZnVuY3Rpb24oIGVsZW0gKSB7CisgICAgICAgICAgICBpZiAoIHRoaXMubm9kZVR5cGUgPT09
IDEgfHwgdGhpcy5ub2RlVHlwZSA9PT0gMTEgfHwgdGhpcy5ub2RlVHlwZSA9PT0gOSApIHsKKyAg
ICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gbWFuaXB1bGF0aW9uVGFyZ2V0KCB0aGlzLCBlbGVt
ICk7CisgICAgICAgICAgICAgICAgdGFyZ2V0Lmluc2VydEJlZm9yZSggZWxlbSwgdGFyZ2V0LmZp
cnN0Q2hpbGQgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSApOworICAgIH0sCisKKyAgICBi
ZWZvcmU6IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gZG9tTWFuaXAoIHRoaXMsIGFyZ3Vt
ZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7CisgICAgICAgICAgICBpZiAoIHRoaXMucGFyZW50Tm9k
ZSApIHsKKyAgICAgICAgICAgICAgICB0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKCBlbGVt
LCB0aGlzICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gKTsKKyAgICB9LAorCisgICAgYWZ0
ZXI6IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gZG9tTWFuaXAoIHRoaXMsIGFyZ3VtZW50
cywgZnVuY3Rpb24oIGVsZW0gKSB7CisgICAgICAgICAgICBpZiAoIHRoaXMucGFyZW50Tm9kZSAp
IHsKKyAgICAgICAgICAgICAgICB0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKCBlbGVtLCB0
aGlzLm5leHRTaWJsaW5nICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gKTsKKyAgICB9LAor
CisgICAgZW1wdHk6IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgZWxlbSwKKyAgICAgICAgICAg
IGkgPSAwOworCisgICAgICAgIGZvciAoIDsgKCBlbGVtID0gdGhpc1sgaSBdICkgIT0gbnVsbDsg
aSsrICkgeworICAgICAgICAgICAgaWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICkgeworCisgICAg
ICAgICAgICAgICAgLy8gUHJldmVudCBtZW1vcnkgbGVha3MKKyAgICAgICAgICAgICAgICBqUXVl
cnkuY2xlYW5EYXRhKCBnZXRBbGwoIGVsZW0sIGZhbHNlICkgKTsKKworICAgICAgICAgICAgICAg
IC8vIFJlbW92ZSBhbnkgcmVtYWluaW5nIG5vZGVzCisgICAgICAgICAgICAgICAgZWxlbS50ZXh0
Q29udGVudCA9ICIiOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJu
IHRoaXM7CisgICAgfSwKKworICAgIGNsb25lOiBmdW5jdGlvbiggZGF0YUFuZEV2ZW50cywgZGVl
cERhdGFBbmRFdmVudHMgKSB7CisgICAgICAgIGRhdGFBbmRFdmVudHMgPSBkYXRhQW5kRXZlbnRz
ID09IG51bGwgPyBmYWxzZSA6IGRhdGFBbmRFdmVudHM7CisgICAgICAgIGRlZXBEYXRhQW5kRXZl
bnRzID0gZGVlcERhdGFBbmRFdmVudHMgPT0gbnVsbCA/IGRhdGFBbmRFdmVudHMgOiBkZWVwRGF0
YUFuZEV2ZW50czsKKworICAgICAgICByZXR1cm4gdGhpcy5tYXAoIGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgcmV0dXJuIGpRdWVyeS5jbG9uZSggdGhpcywgZGF0YUFuZEV2ZW50cywgZGVlcERh
dGFBbmRFdmVudHMgKTsKKyAgICAgICAgfSApOworICAgIH0sCisKKyAgICBodG1sOiBmdW5jdGlv
biggdmFsdWUgKSB7CisgICAgICAgIHJldHVybiBhY2Nlc3MoIHRoaXMsIGZ1bmN0aW9uKCB2YWx1
ZSApIHsKKyAgICAgICAgICAgIHZhciBlbGVtID0gdGhpc1sgMCBdIHx8IHt9LAorICAgICAgICAg
ICAgICAgIGkgPSAwLAorICAgICAgICAgICAgICAgIGwgPSB0aGlzLmxlbmd0aDsKKworICAgICAg
ICAgICAgaWYgKCB2YWx1ZSA9PT0gdW5kZWZpbmVkICYmIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW0uaW5uZXJIVE1MOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAvLyBTZWUgaWYgd2UgY2FuIHRha2UgYSBzaG9ydGN1dCBhbmQganVzdCB1
c2UgaW5uZXJIVE1MCisgICAgICAgICAgICBpZiAoIHR5cGVvZiB2YWx1ZSA9PT0gInN0cmluZyIg
JiYgIXJub0lubmVyaHRtbC50ZXN0KCB2YWx1ZSApICYmCisgICAgICAgICAgICAgICAgIXdyYXBN
YXBbICggcnRhZ05hbWUuZXhlYyggdmFsdWUgKSB8fCBbICIiLCAiIiBdIClbIDEgXS50b0xvd2Vy
Q2FzZSgpIF0gKSB7CisKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IGpRdWVyeS5odG1sUHJlZmls
dGVyKCB2YWx1ZSApOworCisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAg
ICAgZm9yICggOyBpIDwgbDsgaSsrICkgeworICAgICAgICAgICAgICAgICAgICAgICAgZWxlbSA9
IHRoaXNbIGkgXSB8fCB7fTsKKworICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIGVs
ZW1lbnQgbm9kZXMgYW5kIHByZXZlbnQgbWVtb3J5IGxlYWtzCisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgalF1ZXJ5LmNsZWFuRGF0YSggZ2V0QWxsKCBlbGVtLCBmYWxzZSApICk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZWxlbS5pbm5lckhUTUwgPSB2YWx1ZTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
ICAgIGVsZW0gPSAwOworCisgICAgICAgICAgICAgICAgLy8gSWYgdXNpbmcgaW5uZXJIVE1MIHRo
cm93cyBhbiBleGNlcHRpb24sIHVzZSB0aGUgZmFsbGJhY2sgbWV0aG9kCisgICAgICAgICAgICAg
ICAgfSBjYXRjaCAoIGUgKSB7fQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIGVs
ZW0gKSB7CisgICAgICAgICAgICAgICAgdGhpcy5lbXB0eSgpLmFwcGVuZCggdmFsdWUgKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfSwgbnVsbCwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggKTsK
KyAgICB9LAorCisgICAgcmVwbGFjZVdpdGg6IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgaWdu
b3JlZCA9IFtdOworCisgICAgICAgIC8vIE1ha2UgdGhlIGNoYW5nZXMsIHJlcGxhY2luZyBlYWNo
IG5vbi1pZ25vcmVkIGNvbnRleHQgZWxlbWVudCB3aXRoIHRoZSBuZXcgY29udGVudAorICAgICAg
ICByZXR1cm4gZG9tTWFuaXAoIHRoaXMsIGFyZ3VtZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7Cisg
ICAgICAgICAgICB2YXIgcGFyZW50ID0gdGhpcy5wYXJlbnROb2RlOworCisgICAgICAgICAgICBp
ZiAoIGpRdWVyeS5pbkFycmF5KCB0aGlzLCBpZ25vcmVkICkgPCAwICkgeworICAgICAgICAgICAg
ICAgIGpRdWVyeS5jbGVhbkRhdGEoIGdldEFsbCggdGhpcyApICk7CisgICAgICAgICAgICAgICAg
aWYgKCBwYXJlbnQgKSB7CisgICAgICAgICAgICAgICAgICAgIHBhcmVudC5yZXBsYWNlQ2hpbGQo
IGVsZW0sIHRoaXMgKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgLy8gRm9yY2UgY2FsbGJhY2sgaW52b2NhdGlvbgorICAgICAgICB9LCBpZ25vcmVkICk7Cisg
ICAgfQorfSApOworCitqUXVlcnkuZWFjaCggeworICAgIGFwcGVuZFRvOiAiYXBwZW5kIiwKKyAg
ICBwcmVwZW5kVG86ICJwcmVwZW5kIiwKKyAgICBpbnNlcnRCZWZvcmU6ICJiZWZvcmUiLAorICAg
IGluc2VydEFmdGVyOiAiYWZ0ZXIiLAorICAgIHJlcGxhY2VBbGw6ICJyZXBsYWNlV2l0aCIKK30s
IGZ1bmN0aW9uKCBuYW1lLCBvcmlnaW5hbCApIHsKKyAgICBqUXVlcnkuZm5bIG5hbWUgXSA9IGZ1
bmN0aW9uKCBzZWxlY3RvciApIHsKKyAgICAgICAgdmFyIGVsZW1zLAorICAgICAgICAgICAgcmV0
ID0gW10sCisgICAgICAgICAgICBpbnNlcnQgPSBqUXVlcnkoIHNlbGVjdG9yICksCisgICAgICAg
ICAgICBsYXN0ID0gaW5zZXJ0Lmxlbmd0aCAtIDEsCisgICAgICAgICAgICBpID0gMDsKKworICAg
ICAgICBmb3IgKCA7IGkgPD0gbGFzdDsgaSsrICkgeworICAgICAgICAgICAgZWxlbXMgPSBpID09
PSBsYXN0ID8gdGhpcyA6IHRoaXMuY2xvbmUoIHRydWUgKTsKKyAgICAgICAgICAgIGpRdWVyeSgg
aW5zZXJ0WyBpIF0gKVsgb3JpZ2luYWwgXSggZWxlbXMgKTsKKworICAgICAgICAgICAgLy8gU3Vw
cG9ydDogQW5kcm9pZCA8PTQuMCBvbmx5LCBQaGFudG9tSlMgMSBvbmx5CisgICAgICAgICAgICAv
LyAuZ2V0KCkgYmVjYXVzZSBwdXNoLmFwcGx5KF8sIGFycmF5bGlrZSkgdGhyb3dzIG9uIGFuY2ll
bnQgV2ViS2l0CisgICAgICAgICAgICBwdXNoLmFwcGx5KCByZXQsIGVsZW1zLmdldCgpICk7Cisg
ICAgICAgIH0KKworICAgICAgICByZXR1cm4gdGhpcy5wdXNoU3RhY2soIHJldCApOworICAgIH07
Cit9ICk7Cit2YXIgcm1hcmdpbiA9ICggL15tYXJnaW4vICk7CisKK3ZhciBybnVtbm9ucHggPSBu
ZXcgUmVnRXhwKCAiXigiICsgcG51bSArICIpKD8hcHgpW2EteiVdKyQiLCAiaSIgKTsKKwordmFy
IGdldFN0eWxlcyA9IGZ1bmN0aW9uKCBlbGVtICkgeworCisgICAgICAgIC8vIFN1cHBvcnQ6IElF
IDw9MTEgb25seSwgRmlyZWZveCA8PTMwICgjMTUwOTgsICMxNDE1MCkKKyAgICAgICAgLy8gSUUg
dGhyb3dzIG9uIGVsZW1lbnRzIGNyZWF0ZWQgaW4gcG9wdXBzCisgICAgICAgIC8vIEZGIG1lYW53
aGlsZSB0aHJvd3Mgb24gZnJhbWUgZWxlbWVudHMgdGhyb3VnaCAiZGVmYXVsdFZpZXcuZ2V0Q29t
cHV0ZWRTdHlsZSIKKyAgICAgICAgdmFyIHZpZXcgPSBlbGVtLm93bmVyRG9jdW1lbnQuZGVmYXVs
dFZpZXc7CisKKyAgICAgICAgaWYgKCAhdmlldyB8fCAhdmlldy5vcGVuZXIgKSB7CisgICAgICAg
ICAgICB2aWV3ID0gd2luZG93OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHZpZXcuZ2V0
Q29tcHV0ZWRTdHlsZSggZWxlbSApOworICAgIH07CisKKworCisoIGZ1bmN0aW9uKCkgeworCisg
ICAgLy8gRXhlY3V0aW5nIGJvdGggcGl4ZWxQb3NpdGlvbiAmIGJveFNpemluZ1JlbGlhYmxlIHRl
c3RzIHJlcXVpcmUgb25seSBvbmUgbGF5b3V0CisgICAgLy8gc28gdGhleSdyZSBleGVjdXRlZCBh
dCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgdGhlIHNlY29uZCBjb21wdXRhdGlvbi4KKyAgICBmdW5j
dGlvbiBjb21wdXRlU3R5bGVUZXN0cygpIHsKKworICAgICAgICAvLyBUaGlzIGlzIGEgc2luZ2xl
dG9uLCB3ZSBuZWVkIHRvIGV4ZWN1dGUgaXQgb25seSBvbmNlCisgICAgICAgIGlmICggIWRpdiAp
IHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGRpdi5zdHlsZS5j
c3NUZXh0ID0KKyAgICAgICAgICAgICJib3gtc2l6aW5nOmJvcmRlci1ib3g7IiArCisgICAgICAg
ICAgICAicG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpibG9jazsiICsKKyAgICAgICAgICAgICJt
YXJnaW46YXV0bztib3JkZXI6MXB4O3BhZGRpbmc6MXB4OyIgKworICAgICAgICAgICAgInRvcDox
JTt3aWR0aDo1MCUiOworICAgICAgICBkaXYuaW5uZXJIVE1MID0gIiI7CisgICAgICAgIGRvY3Vt
ZW50RWxlbWVudC5hcHBlbmRDaGlsZCggY29udGFpbmVyICk7CisKKyAgICAgICAgdmFyIGRpdlN0
eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoIGRpdiApOworICAgICAgICBwaXhlbFBvc2l0
aW9uVmFsID0gZGl2U3R5bGUudG9wICE9PSAiMSUiOworCisgICAgICAgIC8vIFN1cHBvcnQ6IEFu
ZHJvaWQgNC4wIC0gNC4zIG9ubHksIEZpcmVmb3ggPD0zIC0gNDQKKyAgICAgICAgcmVsaWFibGVN
YXJnaW5MZWZ0VmFsID0gZGl2U3R5bGUubWFyZ2luTGVmdCA9PT0gIjJweCI7CisgICAgICAgIGJv
eFNpemluZ1JlbGlhYmxlVmFsID0gZGl2U3R5bGUud2lkdGggPT09ICI0cHgiOworCisgICAgICAg
IC8vIFN1cHBvcnQ6IEFuZHJvaWQgNC4wIC0gNC4zIG9ubHkKKyAgICAgICAgLy8gU29tZSBzdHls
ZXMgY29tZSBiYWNrIHdpdGggcGVyY2VudGFnZSB2YWx1ZXMsIGV2ZW4gdGhvdWdoIHRoZXkgc2hv
dWxkbid0CisgICAgICAgIGRpdi5zdHlsZS5tYXJnaW5SaWdodCA9ICI1MCUiOworICAgICAgICBw
aXhlbE1hcmdpblJpZ2h0VmFsID0gZGl2U3R5bGUubWFyZ2luUmlnaHQgPT09ICI0cHgiOworCisg
ICAgICAgIGRvY3VtZW50RWxlbWVudC5yZW1vdmVDaGlsZCggY29udGFpbmVyICk7CisKKyAgICAg
ICAgLy8gTnVsbGlmeSB0aGUgZGl2IHNvIGl0IHdvdWxkbid0IGJlIHN0b3JlZCBpbiB0aGUgbWVt
b3J5IGFuZAorICAgICAgICAvLyBpdCB3aWxsIGFsc28gYmUgYSBzaWduIHRoYXQgY2hlY2tzIGFs
cmVhZHkgcGVyZm9ybWVkCisgICAgICAgIGRpdiA9IG51bGw7CisgICAgfQorCisgICAgdmFyIHBp
eGVsUG9zaXRpb25WYWwsIGJveFNpemluZ1JlbGlhYmxlVmFsLCBwaXhlbE1hcmdpblJpZ2h0VmFs
LCByZWxpYWJsZU1hcmdpbkxlZnRWYWwsCisgICAgICAgIGNvbnRhaW5lciA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoICJkaXYiICksCisgICAgICAgIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoICJkaXYiICk7CisKKyAgICAvLyBGaW5pc2ggZWFybHkgaW4gbGltaXRlZCAobm9uLWJyb3dz
ZXIpIGVudmlyb25tZW50cworICAgIGlmICggIWRpdi5zdHlsZSApIHsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIC8vIFN1cHBvcnQ6IElFIDw9OSAtIDExIG9ubHkKKyAgICAvLyBTdHls
ZSBvZiBjbG9uZWQgZWxlbWVudCBhZmZlY3RzIHNvdXJjZSBlbGVtZW50IGNsb25lZCAoIzg5MDgp
CisgICAgZGl2LnN0eWxlLmJhY2tncm91bmRDbGlwID0gImNvbnRlbnQtYm94IjsKKyAgICBkaXYu
Y2xvbmVOb2RlKCB0cnVlICkuc3R5bGUuYmFja2dyb3VuZENsaXAgPSAiIjsKKyAgICBzdXBwb3J0
LmNsZWFyQ2xvbmVTdHlsZSA9IGRpdi5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCA9PT0gImNvbnRlbnQt
Ym94IjsKKworICAgIGNvbnRhaW5lci5zdHlsZS5jc3NUZXh0ID0gImJvcmRlcjowO3dpZHRoOjhw
eDtoZWlnaHQ6MDt0b3A6MDtsZWZ0Oi05OTk5cHg7IiArCisgICAgICAgICJwYWRkaW5nOjA7bWFy
Z2luLXRvcDoxcHg7cG9zaXRpb246YWJzb2x1dGUiOworICAgIGNvbnRhaW5lci5hcHBlbmRDaGls
ZCggZGl2ICk7CisKKyAgICBqUXVlcnkuZXh0ZW5kKCBzdXBwb3J0LCB7CisgICAgICAgIHBpeGVs
UG9zaXRpb246IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgY29tcHV0ZVN0eWxlVGVzdHMoKTsK
KyAgICAgICAgICAgIHJldHVybiBwaXhlbFBvc2l0aW9uVmFsOworICAgICAgICB9LAorICAgICAg
ICBib3hTaXppbmdSZWxpYWJsZTogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBjb21wdXRlU3R5
bGVUZXN0cygpOworICAgICAgICAgICAgcmV0dXJuIGJveFNpemluZ1JlbGlhYmxlVmFsOworICAg
ICAgICB9LAorICAgICAgICBwaXhlbE1hcmdpblJpZ2h0OiBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgIGNvbXB1dGVTdHlsZVRlc3RzKCk7CisgICAgICAgICAgICByZXR1cm4gcGl4ZWxNYXJnaW5S
aWdodFZhbDsKKyAgICAgICAgfSwKKyAgICAgICAgcmVsaWFibGVNYXJnaW5MZWZ0OiBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgIGNvbXB1dGVTdHlsZVRlc3RzKCk7CisgICAgICAgICAgICByZXR1
cm4gcmVsaWFibGVNYXJnaW5MZWZ0VmFsOworICAgICAgICB9CisgICAgfSApOworfSApKCk7CisK
KworZnVuY3Rpb24gY3VyQ1NTKCBlbGVtLCBuYW1lLCBjb21wdXRlZCApIHsKKyAgICB2YXIgd2lk
dGgsIG1pbldpZHRoLCBtYXhXaWR0aCwgcmV0LAorICAgICAgICBzdHlsZSA9IGVsZW0uc3R5bGU7
CisKKyAgICBjb21wdXRlZCA9IGNvbXB1dGVkIHx8IGdldFN0eWxlcyggZWxlbSApOworCisgICAg
Ly8gU3VwcG9ydDogSUUgPD05IG9ubHkKKyAgICAvLyBnZXRQcm9wZXJ0eVZhbHVlIGlzIG9ubHkg
bmVlZGVkIGZvciAuY3NzKCdmaWx0ZXInKSAoIzEyNTM3KQorICAgIGlmICggY29tcHV0ZWQgKSB7
CisgICAgICAgIHJldCA9IGNvbXB1dGVkLmdldFByb3BlcnR5VmFsdWUoIG5hbWUgKSB8fCBjb21w
dXRlZFsgbmFtZSBdOworCisgICAgICAgIGlmICggcmV0ID09PSAiIiAmJiAhalF1ZXJ5LmNvbnRh
aW5zKCBlbGVtLm93bmVyRG9jdW1lbnQsIGVsZW0gKSApIHsKKyAgICAgICAgICAgIHJldCA9IGpR
dWVyeS5zdHlsZSggZWxlbSwgbmFtZSApOworICAgICAgICB9CisKKyAgICAgICAgLy8gQSB0cmli
dXRlIHRvIHRoZSAiYXdlc29tZSBoYWNrIGJ5IERlYW4gRWR3YXJkcyIKKyAgICAgICAgLy8gQW5k
cm9pZCBCcm93c2VyIHJldHVybnMgcGVyY2VudGFnZSBmb3Igc29tZSB2YWx1ZXMsCisgICAgICAg
IC8vIGJ1dCB3aWR0aCBzZWVtcyB0byBiZSByZWxpYWJseSBwaXhlbHMuCisgICAgICAgIC8vIFRo
aXMgaXMgYWdhaW5zdCB0aGUgQ1NTT00gZHJhZnQgc3BlYzoKKyAgICAgICAgLy8gaHR0cHM6Ly9k
cmFmdHMuY3Nzd2cub3JnL2Nzc29tLyNyZXNvbHZlZC12YWx1ZXMKKyAgICAgICAgaWYgKCAhc3Vw
cG9ydC5waXhlbE1hcmdpblJpZ2h0KCkgJiYgcm51bW5vbnB4LnRlc3QoIHJldCApICYmIHJtYXJn
aW4udGVzdCggbmFtZSApICkgeworCisgICAgICAgICAgICAvLyBSZW1lbWJlciB0aGUgb3JpZ2lu
YWwgdmFsdWVzCisgICAgICAgICAgICB3aWR0aCA9IHN0eWxlLndpZHRoOworICAgICAgICAgICAg
bWluV2lkdGggPSBzdHlsZS5taW5XaWR0aDsKKyAgICAgICAgICAgIG1heFdpZHRoID0gc3R5bGUu
bWF4V2lkdGg7CisKKyAgICAgICAgICAgIC8vIFB1dCBpbiB0aGUgbmV3IHZhbHVlcyB0byBnZXQg
YSBjb21wdXRlZCB2YWx1ZSBvdXQKKyAgICAgICAgICAgIHN0eWxlLm1pbldpZHRoID0gc3R5bGUu
bWF4V2lkdGggPSBzdHlsZS53aWR0aCA9IHJldDsKKyAgICAgICAgICAgIHJldCA9IGNvbXB1dGVk
LndpZHRoOworCisgICAgICAgICAgICAvLyBSZXZlcnQgdGhlIGNoYW5nZWQgdmFsdWVzCisgICAg
ICAgICAgICBzdHlsZS53aWR0aCA9IHdpZHRoOworICAgICAgICAgICAgc3R5bGUubWluV2lkdGgg
PSBtaW5XaWR0aDsKKyAgICAgICAgICAgIHN0eWxlLm1heFdpZHRoID0gbWF4V2lkdGg7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gcmV0ICE9PSB1bmRlZmluZWQgPworCisgICAgICAg
IC8vIFN1cHBvcnQ6IElFIDw9OSAtIDExIG9ubHkKKyAgICAgICAgLy8gSUUgcmV0dXJucyB6SW5k
ZXggdmFsdWUgYXMgYW4gaW50ZWdlci4KKyAgICAgICAgcmV0ICsgIiIgOgorICAgICAgICByZXQ7
Cit9CisKKworZnVuY3Rpb24gYWRkR2V0SG9va0lmKCBjb25kaXRpb25GbiwgaG9va0ZuICkgewor
CisgICAgLy8gRGVmaW5lIHRoZSBob29rLCB3ZSdsbCBjaGVjayBvbiB0aGUgZmlyc3QgcnVuIGlm
IGl0J3MgcmVhbGx5IG5lZWRlZC4KKyAgICByZXR1cm4geworICAgICAgICBnZXQ6IGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgaWYgKCBjb25kaXRpb25GbigpICkgeworCisgICAgICAgICAgICAg
ICAgLy8gSG9vayBub3QgbmVlZGVkIChvciBpdCdzIG5vdCBwb3NzaWJsZSB0byB1c2UgaXQgZHVl
CisgICAgICAgICAgICAgICAgLy8gdG8gbWlzc2luZyBkZXBlbmRlbmN5KSwgcmVtb3ZlIGl0Lgor
ICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLmdldDsKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEhvb2sgbmVlZGVkOyByZWRlZmluZSBp
dCBzbyB0aGF0IHRoZSBzdXBwb3J0IHRlc3QgaXMgbm90IGV4ZWN1dGVkIGFnYWluLgorICAgICAg
ICAgICAgcmV0dXJuICggdGhpcy5nZXQgPSBob29rRm4gKS5hcHBseSggdGhpcywgYXJndW1lbnRz
ICk7CisgICAgICAgIH0KKyAgICB9OworfQorCisKK3ZhcgorCisgICAgLy8gU3dhcHBhYmxlIGlm
IGRpc3BsYXkgaXMgbm9uZSBvciBzdGFydHMgd2l0aCB0YWJsZQorICAgIC8vIGV4Y2VwdCAidGFi
bGUiLCAidGFibGUtY2VsbCIsIG9yICJ0YWJsZS1jYXB0aW9uIgorICAgIC8vIFNlZSBoZXJlIGZv
ciBkaXNwbGF5IHZhbHVlczogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9j
cy9DU1MvZGlzcGxheQorICAgIHJkaXNwbGF5c3dhcCA9IC9eKG5vbmV8dGFibGUoPyEtY1tlYV0p
LispLywKKyAgICBjc3NTaG93ID0geyBwb3NpdGlvbjogImFic29sdXRlIiwgdmlzaWJpbGl0eTog
ImhpZGRlbiIsIGRpc3BsYXk6ICJibG9jayIgfSwKKyAgICBjc3NOb3JtYWxUcmFuc2Zvcm0gPSB7
CisgICAgICAgIGxldHRlclNwYWNpbmc6ICIwIiwKKyAgICAgICAgZm9udFdlaWdodDogIjQwMCIK
KyAgICB9LAorCisgICAgY3NzUHJlZml4ZXMgPSBbICJXZWJraXQiLCAiTW96IiwgIm1zIiBdLAor
ICAgIGVtcHR5U3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCAiZGl2IiApLnN0eWxlOwor
CisvLyBSZXR1cm4gYSBjc3MgcHJvcGVydHkgbWFwcGVkIHRvIGEgcG90ZW50aWFsbHkgdmVuZG9y
IHByZWZpeGVkIHByb3BlcnR5CitmdW5jdGlvbiB2ZW5kb3JQcm9wTmFtZSggbmFtZSApIHsKKwor
ICAgIC8vIFNob3J0Y3V0IGZvciBuYW1lcyB0aGF0IGFyZSBub3QgdmVuZG9yIHByZWZpeGVkCisg
ICAgaWYgKCBuYW1lIGluIGVtcHR5U3R5bGUgKSB7CisgICAgICAgIHJldHVybiBuYW1lOworICAg
IH0KKworICAgIC8vIENoZWNrIGZvciB2ZW5kb3IgcHJlZml4ZWQgbmFtZXMKKyAgICB2YXIgY2Fw
TmFtZSA9IG5hbWVbIDAgXS50b1VwcGVyQ2FzZSgpICsgbmFtZS5zbGljZSggMSApLAorICAgICAg
ICBpID0gY3NzUHJlZml4ZXMubGVuZ3RoOworCisgICAgd2hpbGUgKCBpLS0gKSB7CisgICAgICAg
IG5hbWUgPSBjc3NQcmVmaXhlc1sgaSBdICsgY2FwTmFtZTsKKyAgICAgICAgaWYgKCBuYW1lIGlu
IGVtcHR5U3R5bGUgKSB7CisgICAgICAgICAgICByZXR1cm4gbmFtZTsKKyAgICAgICAgfQorICAg
IH0KK30KKworZnVuY3Rpb24gc2V0UG9zaXRpdmVOdW1iZXIoIGVsZW0sIHZhbHVlLCBzdWJ0cmFj
dCApIHsKKworICAgIC8vIEFueSByZWxhdGl2ZSAoKy8tKSB2YWx1ZXMgaGF2ZSBhbHJlYWR5IGJl
ZW4KKyAgICAvLyBub3JtYWxpemVkIGF0IHRoaXMgcG9pbnQKKyAgICB2YXIgbWF0Y2hlcyA9IHJj
c3NOdW0uZXhlYyggdmFsdWUgKTsKKyAgICByZXR1cm4gbWF0Y2hlcyA/CisKKyAgICAgICAgLy8g
R3VhcmQgYWdhaW5zdCB1bmRlZmluZWQgInN1YnRyYWN0IiwgZS5nLiwgd2hlbiB1c2VkIGFzIGlu
IGNzc0hvb2tzCisgICAgICAgIE1hdGgubWF4KCAwLCBtYXRjaGVzWyAyIF0gLSAoIHN1YnRyYWN0
IHx8IDAgKSApICsgKCBtYXRjaGVzWyAzIF0gfHwgInB4IiApIDoKKyAgICAgICAgdmFsdWU7Cit9
CisKK2Z1bmN0aW9uIGF1Z21lbnRXaWR0aE9ySGVpZ2h0KCBlbGVtLCBuYW1lLCBleHRyYSwgaXNC
b3JkZXJCb3gsIHN0eWxlcyApIHsKKyAgICB2YXIgaSwKKyAgICAgICAgdmFsID0gMDsKKworICAg
IC8vIElmIHdlIGFscmVhZHkgaGF2ZSB0aGUgcmlnaHQgbWVhc3VyZW1lbnQsIGF2b2lkIGF1Z21l
bnRhdGlvbgorICAgIGlmICggZXh0cmEgPT09ICggaXNCb3JkZXJCb3ggPyAiYm9yZGVyIiA6ICJj
b250ZW50IiApICkgeworICAgICAgICBpID0gNDsKKworICAgIC8vIE90aGVyd2lzZSBpbml0aWFs
aXplIGZvciBob3Jpem9udGFsIG9yIHZlcnRpY2FsIHByb3BlcnRpZXMKKyAgICB9IGVsc2Ugewor
ICAgICAgICBpID0gbmFtZSA9PT0gIndpZHRoIiA/IDEgOiAwOworICAgIH0KKworICAgIGZvciAo
IDsgaSA8IDQ7IGkgKz0gMiApIHsKKworICAgICAgICAvLyBCb3RoIGJveCBtb2RlbHMgZXhjbHVk
ZSBtYXJnaW4sIHNvIGFkZCBpdCBpZiB3ZSB3YW50IGl0CisgICAgICAgIGlmICggZXh0cmEgPT09
ICJtYXJnaW4iICkgeworICAgICAgICAgICAgdmFsICs9IGpRdWVyeS5jc3MoIGVsZW0sIGV4dHJh
ICsgY3NzRXhwYW5kWyBpIF0sIHRydWUsIHN0eWxlcyApOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKCBpc0JvcmRlckJveCApIHsKKworICAgICAgICAgICAgLy8gYm9yZGVyLWJveCBpbmNsdWRl
cyBwYWRkaW5nLCBzbyByZW1vdmUgaXQgaWYgd2Ugd2FudCBjb250ZW50CisgICAgICAgICAgICBp
ZiAoIGV4dHJhID09PSAiY29udGVudCIgKSB7CisgICAgICAgICAgICAgICAgdmFsIC09IGpRdWVy
eS5jc3MoIGVsZW0sICJwYWRkaW5nIiArIGNzc0V4cGFuZFsgaSBdLCB0cnVlLCBzdHlsZXMgKTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gQXQgdGhpcyBwb2ludCwgZXh0cmEgaXNu
J3QgYm9yZGVyIG5vciBtYXJnaW4sIHNvIHJlbW92ZSBib3JkZXIKKyAgICAgICAgICAgIGlmICgg
ZXh0cmEgIT09ICJtYXJnaW4iICkgeworICAgICAgICAgICAgICAgIHZhbCAtPSBqUXVlcnkuY3Nz
KCBlbGVtLCAiYm9yZGVyIiArIGNzc0V4cGFuZFsgaSBdICsgIldpZHRoIiwgdHJ1ZSwgc3R5bGVz
ICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisKKyAgICAgICAgICAgIC8vIEF0
IHRoaXMgcG9pbnQsIGV4dHJhIGlzbid0IGNvbnRlbnQsIHNvIGFkZCBwYWRkaW5nCisgICAgICAg
ICAgICB2YWwgKz0galF1ZXJ5LmNzcyggZWxlbSwgInBhZGRpbmciICsgY3NzRXhwYW5kWyBpIF0s
IHRydWUsIHN0eWxlcyApOworCisgICAgICAgICAgICAvLyBBdCB0aGlzIHBvaW50LCBleHRyYSBp
c24ndCBjb250ZW50IG5vciBwYWRkaW5nLCBzbyBhZGQgYm9yZGVyCisgICAgICAgICAgICBpZiAo
IGV4dHJhICE9PSAicGFkZGluZyIgKSB7CisgICAgICAgICAgICAgICAgdmFsICs9IGpRdWVyeS5j
c3MoIGVsZW0sICJib3JkZXIiICsgY3NzRXhwYW5kWyBpIF0gKyAiV2lkdGgiLCB0cnVlLCBzdHls
ZXMgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiB2YWw7
Cit9CisKK2Z1bmN0aW9uIGdldFdpZHRoT3JIZWlnaHQoIGVsZW0sIG5hbWUsIGV4dHJhICkgewor
CisgICAgLy8gU3RhcnQgd2l0aCBvZmZzZXQgcHJvcGVydHksIHdoaWNoIGlzIGVxdWl2YWxlbnQg
dG8gdGhlIGJvcmRlci1ib3ggdmFsdWUKKyAgICB2YXIgdmFsLAorICAgICAgICB2YWx1ZUlzQm9y
ZGVyQm94ID0gdHJ1ZSwKKyAgICAgICAgc3R5bGVzID0gZ2V0U3R5bGVzKCBlbGVtICksCisgICAg
ICAgIGlzQm9yZGVyQm94ID0galF1ZXJ5LmNzcyggZWxlbSwgImJveFNpemluZyIsIGZhbHNlLCBz
dHlsZXMgKSA9PT0gImJvcmRlci1ib3giOworCisgICAgLy8gU3VwcG9ydDogSUUgPD0xMSBvbmx5
CisgICAgLy8gUnVubmluZyBnZXRCb3VuZGluZ0NsaWVudFJlY3Qgb24gYSBkaXNjb25uZWN0ZWQg
bm9kZQorICAgIC8vIGluIElFIHRocm93cyBhbiBlcnJvci4KKyAgICBpZiAoIGVsZW0uZ2V0Q2xp
ZW50UmVjdHMoKS5sZW5ndGggKSB7CisgICAgICAgIHZhbCA9IGVsZW0uZ2V0Qm91bmRpbmdDbGll
bnRSZWN0KClbIG5hbWUgXTsKKyAgICB9CisKKyAgICAvLyBTb21lIG5vbi1odG1sIGVsZW1lbnRz
IHJldHVybiB1bmRlZmluZWQgZm9yIG9mZnNldFdpZHRoLCBzbyBjaGVjayBmb3IgbnVsbC91bmRl
ZmluZWQKKyAgICAvLyBzdmcgLSBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVn
LmNnaT9pZD02NDkyODUKKyAgICAvLyBNYXRoTUwgLSBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEu
b3JnL3Nob3dfYnVnLmNnaT9pZD00OTE2NjgKKyAgICBpZiAoIHZhbCA8PSAwIHx8IHZhbCA9PSBu
dWxsICkgeworCisgICAgICAgIC8vIEZhbGwgYmFjayB0byBjb21wdXRlZCB0aGVuIHVuY29tcHV0
ZWQgY3NzIGlmIG5lY2Vzc2FyeQorICAgICAgICB2YWwgPSBjdXJDU1MoIGVsZW0sIG5hbWUsIHN0
eWxlcyApOworICAgICAgICBpZiAoIHZhbCA8IDAgfHwgdmFsID09IG51bGwgKSB7CisgICAgICAg
ICAgICB2YWwgPSBlbGVtLnN0eWxlWyBuYW1lIF07CisgICAgICAgIH0KKworICAgICAgICAvLyBD
b21wdXRlZCB1bml0IGlzIG5vdCBwaXhlbHMuIFN0b3AgaGVyZSBhbmQgcmV0dXJuLgorICAgICAg
ICBpZiAoIHJudW1ub25weC50ZXN0KCB2YWwgKSApIHsKKyAgICAgICAgICAgIHJldHVybiB2YWw7
CisgICAgICAgIH0KKworICAgICAgICAvLyBDaGVjayBmb3Igc3R5bGUgaW4gY2FzZSBhIGJyb3dz
ZXIgd2hpY2ggcmV0dXJucyB1bnJlbGlhYmxlIHZhbHVlcworICAgICAgICAvLyBmb3IgZ2V0Q29t
cHV0ZWRTdHlsZSBzaWxlbnRseSBmYWxscyBiYWNrIHRvIHRoZSByZWxpYWJsZSBlbGVtLnN0eWxl
CisgICAgICAgIHZhbHVlSXNCb3JkZXJCb3ggPSBpc0JvcmRlckJveCAmJgorICAgICAgICAgICAg
KCBzdXBwb3J0LmJveFNpemluZ1JlbGlhYmxlKCkgfHwgdmFsID09PSBlbGVtLnN0eWxlWyBuYW1l
IF0gKTsKKworICAgICAgICAvLyBOb3JtYWxpemUgIiIsIGF1dG8sIGFuZCBwcmVwYXJlIGZvciBl
eHRyYQorICAgICAgICB2YWwgPSBwYXJzZUZsb2F0KCB2YWwgKSB8fCAwOworICAgIH0KKworICAg
IC8vIFVzZSB0aGUgYWN0aXZlIGJveC1zaXppbmcgbW9kZWwgdG8gYWRkL3N1YnRyYWN0IGlycmVs
ZXZhbnQgc3R5bGVzCisgICAgcmV0dXJuICggdmFsICsKKyAgICAgICAgYXVnbWVudFdpZHRoT3JI
ZWlnaHQoCisgICAgICAgICAgICBlbGVtLAorICAgICAgICAgICAgbmFtZSwKKyAgICAgICAgICAg
IGV4dHJhIHx8ICggaXNCb3JkZXJCb3ggPyAiYm9yZGVyIiA6ICJjb250ZW50IiApLAorICAgICAg
ICAgICAgdmFsdWVJc0JvcmRlckJveCwKKyAgICAgICAgICAgIHN0eWxlcworICAgICAgICApCisg
ICAgKSArICJweCI7Cit9CisKK2pRdWVyeS5leHRlbmQoIHsKKworICAgIC8vIEFkZCBpbiBzdHls
ZSBwcm9wZXJ0eSBob29rcyBmb3Igb3ZlcnJpZGluZyB0aGUgZGVmYXVsdAorICAgIC8vIGJlaGF2
aW9yIG9mIGdldHRpbmcgYW5kIHNldHRpbmcgYSBzdHlsZSBwcm9wZXJ0eQorICAgIGNzc0hvb2tz
OiB7CisgICAgICAgIG9wYWNpdHk6IHsKKyAgICAgICAgICAgIGdldDogZnVuY3Rpb24oIGVsZW0s
IGNvbXB1dGVkICkgeworICAgICAgICAgICAgICAgIGlmICggY29tcHV0ZWQgKSB7CisKKyAgICAg
ICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIGFsd2F5cyBnZXQgYSBudW1iZXIgYmFjayBmcm9t
IG9wYWNpdHkKKyAgICAgICAgICAgICAgICAgICAgdmFyIHJldCA9IGN1ckNTUyggZWxlbSwgIm9w
YWNpdHkiICk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQgPT09ICIiID8gIjEiIDog
cmV0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0s
CisKKyAgICAvLyBEb24ndCBhdXRvbWF0aWNhbGx5IGFkZCAicHgiIHRvIHRoZXNlIHBvc3NpYmx5
LXVuaXRsZXNzIHByb3BlcnRpZXMKKyAgICBjc3NOdW1iZXI6IHsKKyAgICAgICAgImFuaW1hdGlv
bkl0ZXJhdGlvbkNvdW50IjogdHJ1ZSwKKyAgICAgICAgImNvbHVtbkNvdW50IjogdHJ1ZSwKKyAg
ICAgICAgImZpbGxPcGFjaXR5IjogdHJ1ZSwKKyAgICAgICAgImZsZXhHcm93IjogdHJ1ZSwKKyAg
ICAgICAgImZsZXhTaHJpbmsiOiB0cnVlLAorICAgICAgICAiZm9udFdlaWdodCI6IHRydWUsCisg
ICAgICAgICJsaW5lSGVpZ2h0IjogdHJ1ZSwKKyAgICAgICAgIm9wYWNpdHkiOiB0cnVlLAorICAg
ICAgICAib3JkZXIiOiB0cnVlLAorICAgICAgICAib3JwaGFucyI6IHRydWUsCisgICAgICAgICJ3
aWRvd3MiOiB0cnVlLAorICAgICAgICAiekluZGV4IjogdHJ1ZSwKKyAgICAgICAgInpvb20iOiB0
cnVlCisgICAgfSwKKworICAgIC8vIEFkZCBpbiBwcm9wZXJ0aWVzIHdob3NlIG5hbWVzIHlvdSB3
aXNoIHRvIGZpeCBiZWZvcmUKKyAgICAvLyBzZXR0aW5nIG9yIGdldHRpbmcgdGhlIHZhbHVlCisg
ICAgY3NzUHJvcHM6IHsKKyAgICAgICAgImZsb2F0IjogImNzc0Zsb2F0IgorICAgIH0sCisKKyAg
ICAvLyBHZXQgYW5kIHNldCB0aGUgc3R5bGUgcHJvcGVydHkgb24gYSBET00gTm9kZQorICAgIHN0
eWxlOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgdmFsdWUsIGV4dHJhICkgeworCisgICAgICAgIC8v
IERvbid0IHNldCBzdHlsZXMgb24gdGV4dCBhbmQgY29tbWVudCBub2RlcworICAgICAgICBpZiAo
ICFlbGVtIHx8IGVsZW0ubm9kZVR5cGUgPT09IDMgfHwgZWxlbS5ub2RlVHlwZSA9PT0gOCB8fCAh
ZWxlbS5zdHlsZSApIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IC8vIE1ha2Ugc3VyZSB0aGF0IHdlJ3JlIHdvcmtpbmcgd2l0aCB0aGUgcmlnaHQgbmFtZQorICAg
ICAgICB2YXIgcmV0LCB0eXBlLCBob29rcywKKyAgICAgICAgICAgIG9yaWdOYW1lID0galF1ZXJ5
LmNhbWVsQ2FzZSggbmFtZSApLAorICAgICAgICAgICAgc3R5bGUgPSBlbGVtLnN0eWxlOworCisg
ICAgICAgIG5hbWUgPSBqUXVlcnkuY3NzUHJvcHNbIG9yaWdOYW1lIF0gfHwKKyAgICAgICAgICAg
ICggalF1ZXJ5LmNzc1Byb3BzWyBvcmlnTmFtZSBdID0gdmVuZG9yUHJvcE5hbWUoIG9yaWdOYW1l
ICkgfHwgb3JpZ05hbWUgKTsKKworICAgICAgICAvLyBHZXRzIGhvb2sgZm9yIHRoZSBwcmVmaXhl
ZCB2ZXJzaW9uLCB0aGVuIHVucHJlZml4ZWQgdmVyc2lvbgorICAgICAgICBob29rcyA9IGpRdWVy
eS5jc3NIb29rc1sgbmFtZSBdIHx8IGpRdWVyeS5jc3NIb29rc1sgb3JpZ05hbWUgXTsKKworICAg
ICAgICAvLyBDaGVjayBpZiB3ZSdyZSBzZXR0aW5nIGEgdmFsdWUKKyAgICAgICAgaWYgKCB2YWx1
ZSAhPT0gdW5kZWZpbmVkICkgeworICAgICAgICAgICAgdHlwZSA9IHR5cGVvZiB2YWx1ZTsKKwor
ICAgICAgICAgICAgLy8gQ29udmVydCAiKz0iIG9yICItPSIgdG8gcmVsYXRpdmUgbnVtYmVycyAo
IzczNDUpCisgICAgICAgICAgICBpZiAoIHR5cGUgPT09ICJzdHJpbmciICYmICggcmV0ID0gcmNz
c051bS5leGVjKCB2YWx1ZSApICkgJiYgcmV0WyAxIF0gKSB7CisgICAgICAgICAgICAgICAgdmFs
dWUgPSBhZGp1c3RDU1MoIGVsZW0sIG5hbWUsIHJldCApOworCisgICAgICAgICAgICAgICAgLy8g
Rml4ZXMgYnVnICM5MjM3CisgICAgICAgICAgICAgICAgdHlwZSA9ICJudW1iZXIiOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCBudWxsIGFuZCBOYU4gdmFs
dWVzIGFyZW4ndCBzZXQgKCM3MTE2KQorICAgICAgICAgICAgaWYgKCB2YWx1ZSA9PSBudWxsIHx8
IHZhbHVlICE9PSB2YWx1ZSApIHsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIC8vIElmIGEgbnVtYmVyIHdhcyBwYXNzZWQgaW4sIGFkZCB0aGUg
dW5pdCAoZXhjZXB0IGZvciBjZXJ0YWluIENTUyBwcm9wZXJ0aWVzKQorICAgICAgICAgICAgaWYg
KCB0eXBlID09PSAibnVtYmVyIiApIHsKKyAgICAgICAgICAgICAgICB2YWx1ZSArPSByZXQgJiYg
cmV0WyAzIF0gfHwgKCBqUXVlcnkuY3NzTnVtYmVyWyBvcmlnTmFtZSBdID8gIiIgOiAicHgiICk7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIGJhY2tncm91bmQtKiBwcm9wcyBhZmZl
Y3Qgb3JpZ2luYWwgY2xvbmUncyB2YWx1ZXMKKyAgICAgICAgICAgIGlmICggIXN1cHBvcnQuY2xl
YXJDbG9uZVN0eWxlICYmIHZhbHVlID09PSAiIiAmJiBuYW1lLmluZGV4T2YoICJiYWNrZ3JvdW5k
IiApID09PSAwICkgeworICAgICAgICAgICAgICAgIHN0eWxlWyBuYW1lIF0gPSAiaW5oZXJpdCI7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIElmIGEgaG9vayB3YXMgcHJvdmlkZWQs
IHVzZSB0aGF0IHZhbHVlLCBvdGhlcndpc2UganVzdCBzZXQgdGhlIHNwZWNpZmllZCB2YWx1ZQor
ICAgICAgICAgICAgaWYgKCAhaG9va3MgfHwgISggInNldCIgaW4gaG9va3MgKSB8fAorICAgICAg
ICAgICAgICAgICggdmFsdWUgPSBob29rcy5zZXQoIGVsZW0sIHZhbHVlLCBleHRyYSApICkgIT09
IHVuZGVmaW5lZCApIHsKKworICAgICAgICAgICAgICAgIHN0eWxlWyBuYW1lIF0gPSB2YWx1ZTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICB9IGVsc2UgeworCisgICAgICAgICAgICAvLyBJZiBh
IGhvb2sgd2FzIHByb3ZpZGVkIGdldCB0aGUgbm9uLWNvbXB1dGVkIHZhbHVlIGZyb20gdGhlcmUK
KyAgICAgICAgICAgIGlmICggaG9va3MgJiYgImdldCIgaW4gaG9va3MgJiYKKyAgICAgICAgICAg
ICAgICAoIHJldCA9IGhvb2tzLmdldCggZWxlbSwgZmFsc2UsIGV4dHJhICkgKSAhPT0gdW5kZWZp
bmVkICkgeworCisgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgLy8gT3RoZXJ3aXNlIGp1c3QgZ2V0IHRoZSB2YWx1ZSBmcm9tIHRoZSBzdHls
ZSBvYmplY3QKKyAgICAgICAgICAgIHJldHVybiBzdHlsZVsgbmFtZSBdOworICAgICAgICB9Cisg
ICAgfSwKKworICAgIGNzczogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGV4dHJhLCBzdHlsZXMgKSB7
CisgICAgICAgIHZhciB2YWwsIG51bSwgaG9va3MsCisgICAgICAgICAgICBvcmlnTmFtZSA9IGpR
dWVyeS5jYW1lbENhc2UoIG5hbWUgKTsKKworICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCB3ZSdy
ZSB3b3JraW5nIHdpdGggdGhlIHJpZ2h0IG5hbWUKKyAgICAgICAgbmFtZSA9IGpRdWVyeS5jc3NQ
cm9wc1sgb3JpZ05hbWUgXSB8fAorICAgICAgICAgICAgKCBqUXVlcnkuY3NzUHJvcHNbIG9yaWdO
YW1lIF0gPSB2ZW5kb3JQcm9wTmFtZSggb3JpZ05hbWUgKSB8fCBvcmlnTmFtZSApOworCisgICAg
ICAgIC8vIFRyeSBwcmVmaXhlZCBuYW1lIGZvbGxvd2VkIGJ5IHRoZSB1bnByZWZpeGVkIG5hbWUK
KyAgICAgICAgaG9va3MgPSBqUXVlcnkuY3NzSG9va3NbIG5hbWUgXSB8fCBqUXVlcnkuY3NzSG9v
a3NbIG9yaWdOYW1lIF07CisKKyAgICAgICAgLy8gSWYgYSBob29rIHdhcyBwcm92aWRlZCBnZXQg
dGhlIGNvbXB1dGVkIHZhbHVlIGZyb20gdGhlcmUKKyAgICAgICAgaWYgKCBob29rcyAmJiAiZ2V0
IiBpbiBob29rcyApIHsKKyAgICAgICAgICAgIHZhbCA9IGhvb2tzLmdldCggZWxlbSwgdHJ1ZSwg
ZXh0cmEgKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIE90aGVyd2lzZSwgaWYgYSB3YXkgdG8g
Z2V0IHRoZSBjb21wdXRlZCB2YWx1ZSBleGlzdHMsIHVzZSB0aGF0CisgICAgICAgIGlmICggdmFs
ID09PSB1bmRlZmluZWQgKSB7CisgICAgICAgICAgICB2YWwgPSBjdXJDU1MoIGVsZW0sIG5hbWUs
IHN0eWxlcyApOworICAgICAgICB9CisKKyAgICAgICAgLy8gQ29udmVydCAibm9ybWFsIiB0byBj
b21wdXRlZCB2YWx1ZQorICAgICAgICBpZiAoIHZhbCA9PT0gIm5vcm1hbCIgJiYgbmFtZSBpbiBj
c3NOb3JtYWxUcmFuc2Zvcm0gKSB7CisgICAgICAgICAgICB2YWwgPSBjc3NOb3JtYWxUcmFuc2Zv
cm1bIG5hbWUgXTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIE1ha2UgbnVtZXJpYyBpZiBmb3Jj
ZWQgb3IgYSBxdWFsaWZpZXIgd2FzIHByb3ZpZGVkIGFuZCB2YWwgbG9va3MgbnVtZXJpYworICAg
ICAgICBpZiAoIGV4dHJhID09PSAiIiB8fCBleHRyYSApIHsKKyAgICAgICAgICAgIG51bSA9IHBh
cnNlRmxvYXQoIHZhbCApOworICAgICAgICAgICAgcmV0dXJuIGV4dHJhID09PSB0cnVlIHx8IGlz
RmluaXRlKCBudW0gKSA/IG51bSB8fCAwIDogdmFsOworICAgICAgICB9CisgICAgICAgIHJldHVy
biB2YWw7CisgICAgfQorfSApOworCitqUXVlcnkuZWFjaCggWyAiaGVpZ2h0IiwgIndpZHRoIiBd
LCBmdW5jdGlvbiggaSwgbmFtZSApIHsKKyAgICBqUXVlcnkuY3NzSG9va3NbIG5hbWUgXSA9IHsK
KyAgICAgICAgZ2V0OiBmdW5jdGlvbiggZWxlbSwgY29tcHV0ZWQsIGV4dHJhICkgeworICAgICAg
ICAgICAgaWYgKCBjb21wdXRlZCApIHsKKworICAgICAgICAgICAgICAgIC8vIENlcnRhaW4gZWxl
bWVudHMgY2FuIGhhdmUgZGltZW5zaW9uIGluZm8gaWYgd2UgaW52aXNpYmx5IHNob3cgdGhlbQor
ICAgICAgICAgICAgICAgIC8vIGJ1dCBpdCBtdXN0IGhhdmUgYSBjdXJyZW50IGRpc3BsYXkgc3R5
bGUgdGhhdCB3b3VsZCBiZW5lZml0CisgICAgICAgICAgICAgICAgcmV0dXJuIHJkaXNwbGF5c3dh
cC50ZXN0KCBqUXVlcnkuY3NzKCBlbGVtLCAiZGlzcGxheSIgKSApICYmCisKKyAgICAgICAgICAg
ICAgICAgICAgLy8gU3VwcG9ydDogU2FmYXJpIDgrCisgICAgICAgICAgICAgICAgICAgIC8vIFRh
YmxlIGNvbHVtbnMgaW4gU2FmYXJpIGhhdmUgbm9uLXplcm8gb2Zmc2V0V2lkdGggJiB6ZXJvCisg
ICAgICAgICAgICAgICAgICAgIC8vIGdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoIHVubGVz
cyBkaXNwbGF5IGlzIGNoYW5nZWQuCisgICAgICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6IElF
IDw9MTEgb25seQorICAgICAgICAgICAgICAgICAgICAvLyBSdW5uaW5nIGdldEJvdW5kaW5nQ2xp
ZW50UmVjdCBvbiBhIGRpc2Nvbm5lY3RlZCBub2RlCisgICAgICAgICAgICAgICAgICAgIC8vIGlu
IElFIHRocm93cyBhbiBlcnJvci4KKyAgICAgICAgICAgICAgICAgICAgKCAhZWxlbS5nZXRDbGll
bnRSZWN0cygpLmxlbmd0aCB8fCAhZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCAp
ID8KKyAgICAgICAgICAgICAgICAgICAgICAgIHN3YXAoIGVsZW0sIGNzc1Nob3csIGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBnZXRXaWR0aE9ySGVpZ2h0
KCBlbGVtLCBuYW1lLCBleHRyYSApOworICAgICAgICAgICAgICAgICAgICAgICAgfSApIDoKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGdldFdpZHRoT3JIZWlnaHQoIGVsZW0sIG5hbWUsIGV4dHJh
ICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisKKyAgICAgICAgc2V0OiBmdW5jdGlvbigg
ZWxlbSwgdmFsdWUsIGV4dHJhICkgeworICAgICAgICAgICAgdmFyIG1hdGNoZXMsCisgICAgICAg
ICAgICAgICAgc3R5bGVzID0gZXh0cmEgJiYgZ2V0U3R5bGVzKCBlbGVtICksCisgICAgICAgICAg
ICAgICAgc3VidHJhY3QgPSBleHRyYSAmJiBhdWdtZW50V2lkdGhPckhlaWdodCgKKyAgICAgICAg
ICAgICAgICAgICAgZWxlbSwKKyAgICAgICAgICAgICAgICAgICAgbmFtZSwKKyAgICAgICAgICAg
ICAgICAgICAgZXh0cmEsCisgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5jc3MoIGVsZW0sICJi
b3hTaXppbmciLCBmYWxzZSwgc3R5bGVzICkgPT09ICJib3JkZXItYm94IiwKKyAgICAgICAgICAg
ICAgICAgICAgc3R5bGVzCisgICAgICAgICAgICAgICAgKTsKKworICAgICAgICAgICAgLy8gQ29u
dmVydCB0byBwaXhlbHMgaWYgdmFsdWUgYWRqdXN0bWVudCBpcyBuZWVkZWQKKyAgICAgICAgICAg
IGlmICggc3VidHJhY3QgJiYgKCBtYXRjaGVzID0gcmNzc051bS5leGVjKCB2YWx1ZSApICkgJiYK
KyAgICAgICAgICAgICAgICAoIG1hdGNoZXNbIDMgXSB8fCAicHgiICkgIT09ICJweCIgKSB7CisK
KyAgICAgICAgICAgICAgICBlbGVtLnN0eWxlWyBuYW1lIF0gPSB2YWx1ZTsKKyAgICAgICAgICAg
ICAgICB2YWx1ZSA9IGpRdWVyeS5jc3MoIGVsZW0sIG5hbWUgKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgcmV0dXJuIHNldFBvc2l0aXZlTnVtYmVyKCBlbGVtLCB2YWx1ZSwgc3VidHJh
Y3QgKTsKKyAgICAgICAgfQorICAgIH07Cit9ICk7CisKK2pRdWVyeS5jc3NIb29rcy5tYXJnaW5M
ZWZ0ID0gYWRkR2V0SG9va0lmKCBzdXBwb3J0LnJlbGlhYmxlTWFyZ2luTGVmdCwKKyAgICBmdW5j
dGlvbiggZWxlbSwgY29tcHV0ZWQgKSB7CisgICAgICAgIGlmICggY29tcHV0ZWQgKSB7CisgICAg
ICAgICAgICByZXR1cm4gKCBwYXJzZUZsb2F0KCBjdXJDU1MoIGVsZW0sICJtYXJnaW5MZWZ0IiAp
ICkgfHwKKyAgICAgICAgICAgICAgICBlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQg
LQorICAgICAgICAgICAgICAgICAgICBzd2FwKCBlbGVtLCB7IG1hcmdpbkxlZnQ6IDAgfSwgZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbS5nZXRCb3VuZGlu
Z0NsaWVudFJlY3QoKS5sZWZ0OworICAgICAgICAgICAgICAgICAgICB9ICkKKyAgICAgICAgICAg
ICAgICApICsgInB4IjsKKyAgICAgICAgfQorICAgIH0KKyk7CisKKy8vIFRoZXNlIGhvb2tzIGFy
ZSB1c2VkIGJ5IGFuaW1hdGUgdG8gZXhwYW5kIHByb3BlcnRpZXMKK2pRdWVyeS5lYWNoKCB7Cisg
ICAgbWFyZ2luOiAiIiwKKyAgICBwYWRkaW5nOiAiIiwKKyAgICBib3JkZXI6ICJXaWR0aCIKK30s
IGZ1bmN0aW9uKCBwcmVmaXgsIHN1ZmZpeCApIHsKKyAgICBqUXVlcnkuY3NzSG9va3NbIHByZWZp
eCArIHN1ZmZpeCBdID0geworICAgICAgICBleHBhbmQ6IGZ1bmN0aW9uKCB2YWx1ZSApIHsKKyAg
ICAgICAgICAgIHZhciBpID0gMCwKKyAgICAgICAgICAgICAgICBleHBhbmRlZCA9IHt9LAorCisg
ICAgICAgICAgICAgICAgLy8gQXNzdW1lcyBhIHNpbmdsZSBudW1iZXIgaWYgbm90IGEgc3RyaW5n
CisgICAgICAgICAgICAgICAgcGFydHMgPSB0eXBlb2YgdmFsdWUgPT09ICJzdHJpbmciID8gdmFs
dWUuc3BsaXQoICIgIiApIDogWyB2YWx1ZSBdOworCisgICAgICAgICAgICBmb3IgKCA7IGkgPCA0
OyBpKysgKSB7CisgICAgICAgICAgICAgICAgZXhwYW5kZWRbIHByZWZpeCArIGNzc0V4cGFuZFsg
aSBdICsgc3VmZml4IF0gPQorICAgICAgICAgICAgICAgICAgICBwYXJ0c1sgaSBdIHx8IHBhcnRz
WyBpIC0gMiBdIHx8IHBhcnRzWyAwIF07CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJl
dHVybiBleHBhbmRlZDsKKyAgICAgICAgfQorICAgIH07CisKKyAgICBpZiAoICFybWFyZ2luLnRl
c3QoIHByZWZpeCApICkgeworICAgICAgICBqUXVlcnkuY3NzSG9va3NbIHByZWZpeCArIHN1ZmZp
eCBdLnNldCA9IHNldFBvc2l0aXZlTnVtYmVyOworICAgIH0KK30gKTsKKworalF1ZXJ5LmZuLmV4
dGVuZCggeworICAgIGNzczogZnVuY3Rpb24oIG5hbWUsIHZhbHVlICkgeworICAgICAgICByZXR1
cm4gYWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggZWxlbSwgbmFtZSwgdmFsdWUgKSB7CisgICAgICAg
ICAgICB2YXIgc3R5bGVzLCBsZW4sCisgICAgICAgICAgICAgICAgbWFwID0ge30sCisgICAgICAg
ICAgICAgICAgaSA9IDA7CisKKyAgICAgICAgICAgIGlmICggalF1ZXJ5LmlzQXJyYXkoIG5hbWUg
KSApIHsKKyAgICAgICAgICAgICAgICBzdHlsZXMgPSBnZXRTdHlsZXMoIGVsZW0gKTsKKyAgICAg
ICAgICAgICAgICBsZW4gPSBuYW1lLmxlbmd0aDsKKworICAgICAgICAgICAgICAgIGZvciAoIDsg
aSA8IGxlbjsgaSsrICkgeworICAgICAgICAgICAgICAgICAgICBtYXBbIG5hbWVbIGkgXSBdID0g
alF1ZXJ5LmNzcyggZWxlbSwgbmFtZVsgaSBdLCBmYWxzZSwgc3R5bGVzICk7CisgICAgICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAgICAgcmV0dXJuIG1hcDsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgcmV0dXJuIHZhbHVlICE9PSB1bmRlZmluZWQgPworICAgICAgICAgICAgICAg
IGpRdWVyeS5zdHlsZSggZWxlbSwgbmFtZSwgdmFsdWUgKSA6CisgICAgICAgICAgICAgICAgalF1
ZXJ5LmNzcyggZWxlbSwgbmFtZSApOworICAgICAgICB9LCBuYW1lLCB2YWx1ZSwgYXJndW1lbnRz
Lmxlbmd0aCA+IDEgKTsKKyAgICB9Cit9ICk7CisKKworZnVuY3Rpb24gVHdlZW4oIGVsZW0sIG9w
dGlvbnMsIHByb3AsIGVuZCwgZWFzaW5nICkgeworICAgIHJldHVybiBuZXcgVHdlZW4ucHJvdG90
eXBlLmluaXQoIGVsZW0sIG9wdGlvbnMsIHByb3AsIGVuZCwgZWFzaW5nICk7Cit9CitqUXVlcnku
VHdlZW4gPSBUd2VlbjsKKworVHdlZW4ucHJvdG90eXBlID0geworICAgIGNvbnN0cnVjdG9yOiBU
d2VlbiwKKyAgICBpbml0OiBmdW5jdGlvbiggZWxlbSwgb3B0aW9ucywgcHJvcCwgZW5kLCBlYXNp
bmcsIHVuaXQgKSB7CisgICAgICAgIHRoaXMuZWxlbSA9IGVsZW07CisgICAgICAgIHRoaXMucHJv
cCA9IHByb3A7CisgICAgICAgIHRoaXMuZWFzaW5nID0gZWFzaW5nIHx8IGpRdWVyeS5lYXNpbmcu
X2RlZmF1bHQ7CisgICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7CisgICAgICAgIHRoaXMu
c3RhcnQgPSB0aGlzLm5vdyA9IHRoaXMuY3VyKCk7CisgICAgICAgIHRoaXMuZW5kID0gZW5kOwor
ICAgICAgICB0aGlzLnVuaXQgPSB1bml0IHx8ICggalF1ZXJ5LmNzc051bWJlclsgcHJvcCBdID8g
IiIgOiAicHgiICk7CisgICAgfSwKKyAgICBjdXI6IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIg
aG9va3MgPSBUd2Vlbi5wcm9wSG9va3NbIHRoaXMucHJvcCBdOworCisgICAgICAgIHJldHVybiBo
b29rcyAmJiBob29rcy5nZXQgPworICAgICAgICAgICAgaG9va3MuZ2V0KCB0aGlzICkgOgorICAg
ICAgICAgICAgVHdlZW4ucHJvcEhvb2tzLl9kZWZhdWx0LmdldCggdGhpcyApOworICAgIH0sCisg
ICAgcnVuOiBmdW5jdGlvbiggcGVyY2VudCApIHsKKyAgICAgICAgdmFyIGVhc2VkLAorICAgICAg
ICAgICAgaG9va3MgPSBUd2Vlbi5wcm9wSG9va3NbIHRoaXMucHJvcCBdOworCisgICAgICAgIGlm
ICggdGhpcy5vcHRpb25zLmR1cmF0aW9uICkgeworICAgICAgICAgICAgdGhpcy5wb3MgPSBlYXNl
ZCA9IGpRdWVyeS5lYXNpbmdbIHRoaXMuZWFzaW5nIF0oCisgICAgICAgICAgICAgICAgcGVyY2Vu
dCwgdGhpcy5vcHRpb25zLmR1cmF0aW9uICogcGVyY2VudCwgMCwgMSwgdGhpcy5vcHRpb25zLmR1
cmF0aW9uCisgICAgICAgICAgICApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhp
cy5wb3MgPSBlYXNlZCA9IHBlcmNlbnQ7CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5ub3cgPSAo
IHRoaXMuZW5kIC0gdGhpcy5zdGFydCApICogZWFzZWQgKyB0aGlzLnN0YXJ0OworCisgICAgICAg
IGlmICggdGhpcy5vcHRpb25zLnN0ZXAgKSB7CisgICAgICAgICAgICB0aGlzLm9wdGlvbnMuc3Rl
cC5jYWxsKCB0aGlzLmVsZW0sIHRoaXMubm93LCB0aGlzICk7CisgICAgICAgIH0KKworICAgICAg
ICBpZiAoIGhvb2tzICYmIGhvb2tzLnNldCApIHsKKyAgICAgICAgICAgIGhvb2tzLnNldCggdGhp
cyApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgVHdlZW4ucHJvcEhvb2tzLl9kZWZh
dWx0LnNldCggdGhpcyApOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0K
K307CisKK1R3ZWVuLnByb3RvdHlwZS5pbml0LnByb3RvdHlwZSA9IFR3ZWVuLnByb3RvdHlwZTsK
KworVHdlZW4ucHJvcEhvb2tzID0geworICAgIF9kZWZhdWx0OiB7CisgICAgICAgIGdldDogZnVu
Y3Rpb24oIHR3ZWVuICkgeworICAgICAgICAgICAgdmFyIHJlc3VsdDsKKworICAgICAgICAgICAg
Ly8gVXNlIGEgcHJvcGVydHkgb24gdGhlIGVsZW1lbnQgZGlyZWN0bHkgd2hlbiBpdCBpcyBub3Qg
YSBET00gZWxlbWVudCwKKyAgICAgICAgICAgIC8vIG9yIHdoZW4gdGhlcmUgaXMgbm8gbWF0Y2hp
bmcgc3R5bGUgcHJvcGVydHkgdGhhdCBleGlzdHMuCisgICAgICAgICAgICBpZiAoIHR3ZWVuLmVs
ZW0ubm9kZVR5cGUgIT09IDEgfHwKKyAgICAgICAgICAgICAgICB0d2Vlbi5lbGVtWyB0d2Vlbi5w
cm9wIF0gIT0gbnVsbCAmJiB0d2Vlbi5lbGVtLnN0eWxlWyB0d2Vlbi5wcm9wIF0gPT0gbnVsbCAp
IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHdlZW4uZWxlbVsgdHdlZW4ucHJvcCBdOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBQYXNzaW5nIGFuIGVtcHR5IHN0cmluZyBhcyBh
IDNyZCBwYXJhbWV0ZXIgdG8gLmNzcyB3aWxsIGF1dG9tYXRpY2FsbHkKKyAgICAgICAgICAgIC8v
IGF0dGVtcHQgYSBwYXJzZUZsb2F0IGFuZCBmYWxsYmFjayB0byBhIHN0cmluZyBpZiB0aGUgcGFy
c2UgZmFpbHMuCisgICAgICAgICAgICAvLyBTaW1wbGUgdmFsdWVzIHN1Y2ggYXMgIjEwcHgiIGFy
ZSBwYXJzZWQgdG8gRmxvYXQ7CisgICAgICAgICAgICAvLyBjb21wbGV4IHZhbHVlcyBzdWNoIGFz
ICJyb3RhdGUoMXJhZCkiIGFyZSByZXR1cm5lZCBhcy1pcy4KKyAgICAgICAgICAgIHJlc3VsdCA9
IGpRdWVyeS5jc3MoIHR3ZWVuLmVsZW0sIHR3ZWVuLnByb3AsICIiICk7CisKKyAgICAgICAgICAg
IC8vIEVtcHR5IHN0cmluZ3MsIG51bGwsIHVuZGVmaW5lZCBhbmQgImF1dG8iIGFyZSBjb252ZXJ0
ZWQgdG8gMC4KKyAgICAgICAgICAgIHJldHVybiAhcmVzdWx0IHx8IHJlc3VsdCA9PT0gImF1dG8i
ID8gMCA6IHJlc3VsdDsKKyAgICAgICAgfSwKKyAgICAgICAgc2V0OiBmdW5jdGlvbiggdHdlZW4g
KSB7CisKKyAgICAgICAgICAgIC8vIFVzZSBzdGVwIGhvb2sgZm9yIGJhY2sgY29tcGF0LgorICAg
ICAgICAgICAgLy8gVXNlIGNzc0hvb2sgaWYgaXRzIHRoZXJlLgorICAgICAgICAgICAgLy8gVXNl
IC5zdHlsZSBpZiBhdmFpbGFibGUgYW5kIHVzZSBwbGFpbiBwcm9wZXJ0aWVzIHdoZXJlIGF2YWls
YWJsZS4KKyAgICAgICAgICAgIGlmICggalF1ZXJ5LmZ4LnN0ZXBbIHR3ZWVuLnByb3AgXSApIHsK
KyAgICAgICAgICAgICAgICBqUXVlcnkuZnguc3RlcFsgdHdlZW4ucHJvcCBdKCB0d2VlbiApOwor
ICAgICAgICAgICAgfSBlbHNlIGlmICggdHdlZW4uZWxlbS5ub2RlVHlwZSA9PT0gMSAmJgorICAg
ICAgICAgICAgICAgICggdHdlZW4uZWxlbS5zdHlsZVsgalF1ZXJ5LmNzc1Byb3BzWyB0d2Vlbi5w
cm9wIF0gXSAhPSBudWxsIHx8CisgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5jc3NIb29rc1sg
dHdlZW4ucHJvcCBdICkgKSB7CisgICAgICAgICAgICAgICAgalF1ZXJ5LnN0eWxlKCB0d2Vlbi5l
bGVtLCB0d2Vlbi5wcm9wLCB0d2Vlbi5ub3cgKyB0d2Vlbi51bml0ICk7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIHR3ZWVuLmVsZW1bIHR3ZWVuLnByb3AgXSA9IHR3ZWVu
Lm5vdzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK307CisKKy8vIFN1cHBvcnQ6
IElFIDw9OSBvbmx5CisvLyBQYW5pYyBiYXNlZCBhcHByb2FjaCB0byBzZXR0aW5nIHRoaW5ncyBv
biBkaXNjb25uZWN0ZWQgbm9kZXMKK1R3ZWVuLnByb3BIb29rcy5zY3JvbGxUb3AgPSBUd2Vlbi5w
cm9wSG9va3Muc2Nyb2xsTGVmdCA9IHsKKyAgICBzZXQ6IGZ1bmN0aW9uKCB0d2VlbiApIHsKKyAg
ICAgICAgaWYgKCB0d2Vlbi5lbGVtLm5vZGVUeXBlICYmIHR3ZWVuLmVsZW0ucGFyZW50Tm9kZSAp
IHsKKyAgICAgICAgICAgIHR3ZWVuLmVsZW1bIHR3ZWVuLnByb3AgXSA9IHR3ZWVuLm5vdzsKKyAg
ICAgICAgfQorICAgIH0KK307CisKK2pRdWVyeS5lYXNpbmcgPSB7CisgICAgbGluZWFyOiBmdW5j
dGlvbiggcCApIHsKKyAgICAgICAgcmV0dXJuIHA7CisgICAgfSwKKyAgICBzd2luZzogZnVuY3Rp
b24oIHAgKSB7CisgICAgICAgIHJldHVybiAwLjUgLSBNYXRoLmNvcyggcCAqIE1hdGguUEkgKSAv
IDI7CisgICAgfSwKKyAgICBfZGVmYXVsdDogInN3aW5nIgorfTsKKworalF1ZXJ5LmZ4ID0gVHdl
ZW4ucHJvdG90eXBlLmluaXQ7CisKKy8vIEJhY2sgY29tcGF0IDwxLjggZXh0ZW5zaW9uIHBvaW50
CitqUXVlcnkuZnguc3RlcCA9IHt9OworCisKKworCit2YXIKKyAgICBmeE5vdywgdGltZXJJZCwK
KyAgICByZnh0eXBlcyA9IC9eKD86dG9nZ2xlfHNob3d8aGlkZSkkLywKKyAgICBycnVuID0gL3F1
ZXVlSG9va3MkLzsKKworZnVuY3Rpb24gcmFmKCkgeworICAgIGlmICggdGltZXJJZCApIHsKKyAg
ICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSggcmFmICk7CisgICAgICAgIGpRdWVy
eS5meC50aWNrKCk7CisgICAgfQorfQorCisvLyBBbmltYXRpb25zIGNyZWF0ZWQgc3luY2hyb25v
dXNseSB3aWxsIHJ1biBzeW5jaHJvbm91c2x5CitmdW5jdGlvbiBjcmVhdGVGeE5vdygpIHsKKyAg
ICB3aW5kb3cuc2V0VGltZW91dCggZnVuY3Rpb24oKSB7CisgICAgICAgIGZ4Tm93ID0gdW5kZWZp
bmVkOworICAgIH0gKTsKKyAgICByZXR1cm4gKCBmeE5vdyA9IGpRdWVyeS5ub3coKSApOworfQor
CisvLyBHZW5lcmF0ZSBwYXJhbWV0ZXJzIHRvIGNyZWF0ZSBhIHN0YW5kYXJkIGFuaW1hdGlvbgor
ZnVuY3Rpb24gZ2VuRngoIHR5cGUsIGluY2x1ZGVXaWR0aCApIHsKKyAgICB2YXIgd2hpY2gsCisg
ICAgICAgIGkgPSAwLAorICAgICAgICBhdHRycyA9IHsgaGVpZ2h0OiB0eXBlIH07CisKKyAgICAv
LyBJZiB3ZSBpbmNsdWRlIHdpZHRoLCBzdGVwIHZhbHVlIGlzIDEgdG8gZG8gYWxsIGNzc0V4cGFu
ZCB2YWx1ZXMsCisgICAgLy8gb3RoZXJ3aXNlIHN0ZXAgdmFsdWUgaXMgMiB0byBza2lwIG92ZXIg
TGVmdCBhbmQgUmlnaHQKKyAgICBpbmNsdWRlV2lkdGggPSBpbmNsdWRlV2lkdGggPyAxIDogMDsK
KyAgICBmb3IgKCA7IGkgPCA0OyBpICs9IDIgLSBpbmNsdWRlV2lkdGggKSB7CisgICAgICAgIHdo
aWNoID0gY3NzRXhwYW5kWyBpIF07CisgICAgICAgIGF0dHJzWyAibWFyZ2luIiArIHdoaWNoIF0g
PSBhdHRyc1sgInBhZGRpbmciICsgd2hpY2ggXSA9IHR5cGU7CisgICAgfQorCisgICAgaWYgKCBp
bmNsdWRlV2lkdGggKSB7CisgICAgICAgIGF0dHJzLm9wYWNpdHkgPSBhdHRycy53aWR0aCA9IHR5
cGU7CisgICAgfQorCisgICAgcmV0dXJuIGF0dHJzOworfQorCitmdW5jdGlvbiBjcmVhdGVUd2Vl
biggdmFsdWUsIHByb3AsIGFuaW1hdGlvbiApIHsKKyAgICB2YXIgdHdlZW4sCisgICAgICAgIGNv
bGxlY3Rpb24gPSAoIEFuaW1hdGlvbi50d2VlbmVyc1sgcHJvcCBdIHx8IFtdICkuY29uY2F0KCBB
bmltYXRpb24udHdlZW5lcnNbICIqIiBdICksCisgICAgICAgIGluZGV4ID0gMCwKKyAgICAgICAg
bGVuZ3RoID0gY29sbGVjdGlvbi5sZW5ndGg7CisgICAgZm9yICggOyBpbmRleCA8IGxlbmd0aDsg
aW5kZXgrKyApIHsKKyAgICAgICAgaWYgKCAoIHR3ZWVuID0gY29sbGVjdGlvblsgaW5kZXggXS5j
YWxsKCBhbmltYXRpb24sIHByb3AsIHZhbHVlICkgKSApIHsKKworICAgICAgICAgICAgLy8gV2Un
cmUgZG9uZSB3aXRoIHRoaXMgcHJvcGVydHkKKyAgICAgICAgICAgIHJldHVybiB0d2VlbjsKKyAg
ICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gZGVmYXVsdFByZWZpbHRlciggZWxlbSwgcHJv
cHMsIG9wdHMgKSB7CisgICAgdmFyIHByb3AsIHZhbHVlLCB0b2dnbGUsIGhvb2tzLCBvbGRmaXJl
LCBwcm9wVHdlZW4sIHJlc3RvcmVEaXNwbGF5LCBkaXNwbGF5LAorICAgICAgICBpc0JveCA9ICJ3
aWR0aCIgaW4gcHJvcHMgfHwgImhlaWdodCIgaW4gcHJvcHMsCisgICAgICAgIGFuaW0gPSB0aGlz
LAorICAgICAgICBvcmlnID0ge30sCisgICAgICAgIHN0eWxlID0gZWxlbS5zdHlsZSwKKyAgICAg
ICAgaGlkZGVuID0gZWxlbS5ub2RlVHlwZSAmJiBpc0hpZGRlbldpdGhpblRyZWUoIGVsZW0gKSwK
KyAgICAgICAgZGF0YVNob3cgPSBkYXRhUHJpdi5nZXQoIGVsZW0sICJmeHNob3ciICk7CisKKyAg
ICAvLyBRdWV1ZS1za2lwcGluZyBhbmltYXRpb25zIGhpamFjayB0aGUgZnggaG9va3MKKyAgICBp
ZiAoICFvcHRzLnF1ZXVlICkgeworICAgICAgICBob29rcyA9IGpRdWVyeS5fcXVldWVIb29rcygg
ZWxlbSwgImZ4IiApOworICAgICAgICBpZiAoIGhvb2tzLnVucXVldWVkID09IG51bGwgKSB7Cisg
ICAgICAgICAgICBob29rcy51bnF1ZXVlZCA9IDA7CisgICAgICAgICAgICBvbGRmaXJlID0gaG9v
a3MuZW1wdHkuZmlyZTsKKyAgICAgICAgICAgIGhvb2tzLmVtcHR5LmZpcmUgPSBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgICAgICBpZiAoICFob29rcy51bnF1ZXVlZCApIHsKKyAgICAgICAgICAg
ICAgICAgICAgb2xkZmlyZSgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH07Cisg
ICAgICAgIH0KKyAgICAgICAgaG9va3MudW5xdWV1ZWQrKzsKKworICAgICAgICBhbmltLmFsd2F5
cyggZnVuY3Rpb24oKSB7CisKKyAgICAgICAgICAgIC8vIEVuc3VyZSB0aGUgY29tcGxldGUgaGFu
ZGxlciBpcyBjYWxsZWQgYmVmb3JlIHRoaXMgY29tcGxldGVzCisgICAgICAgICAgICBhbmltLmFs
d2F5cyggZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgaG9va3MudW5xdWV1ZWQtLTsKKyAg
ICAgICAgICAgICAgICBpZiAoICFqUXVlcnkucXVldWUoIGVsZW0sICJmeCIgKS5sZW5ndGggKSB7
CisgICAgICAgICAgICAgICAgICAgIGhvb2tzLmVtcHR5LmZpcmUoKTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9ICk7CisgICAgICAgIH0gKTsKKyAgICB9CisKKyAgICAvLyBEZXRl
Y3Qgc2hvdy9oaWRlIGFuaW1hdGlvbnMKKyAgICBmb3IgKCBwcm9wIGluIHByb3BzICkgeworICAg
ICAgICB2YWx1ZSA9IHByb3BzWyBwcm9wIF07CisgICAgICAgIGlmICggcmZ4dHlwZXMudGVzdCgg
dmFsdWUgKSApIHsKKyAgICAgICAgICAgIGRlbGV0ZSBwcm9wc1sgcHJvcCBdOworICAgICAgICAg
ICAgdG9nZ2xlID0gdG9nZ2xlIHx8IHZhbHVlID09PSAidG9nZ2xlIjsKKyAgICAgICAgICAgIGlm
ICggdmFsdWUgPT09ICggaGlkZGVuID8gImhpZGUiIDogInNob3ciICkgKSB7CisKKyAgICAgICAg
ICAgICAgICAvLyBQcmV0ZW5kIHRvIGJlIGhpZGRlbiBpZiB0aGlzIGlzIGEgInNob3ciIGFuZAor
ICAgICAgICAgICAgICAgIC8vIHRoZXJlIGlzIHN0aWxsIGRhdGEgZnJvbSBhIHN0b3BwZWQgc2hv
dy9oaWRlCisgICAgICAgICAgICAgICAgaWYgKCB2YWx1ZSA9PT0gInNob3ciICYmIGRhdGFTaG93
ICYmIGRhdGFTaG93WyBwcm9wIF0gIT09IHVuZGVmaW5lZCApIHsKKyAgICAgICAgICAgICAgICAg
ICAgaGlkZGVuID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgIC8vIElnbm9yZSBhbGwgb3RoZXIg
bm8tb3Agc2hvdy9oaWRlIGRhdGEKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBvcmlnWyBwcm9wIF0gPSBkYXRhU2hvdyAmJiBkYXRhU2hvd1sgcHJvcCBdIHx8
IGpRdWVyeS5zdHlsZSggZWxlbSwgcHJvcCApOworICAgICAgICB9CisgICAgfQorCisgICAgLy8g
QmFpbCBvdXQgaWYgdGhpcyBpcyBhIG5vLW9wIGxpa2UgLmhpZGUoKS5oaWRlKCkKKyAgICBwcm9w
VHdlZW4gPSAhalF1ZXJ5LmlzRW1wdHlPYmplY3QoIHByb3BzICk7CisgICAgaWYgKCAhcHJvcFR3
ZWVuICYmIGpRdWVyeS5pc0VtcHR5T2JqZWN0KCBvcmlnICkgKSB7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICAvLyBSZXN0cmljdCAib3ZlcmZsb3ciIGFuZCAiZGlzcGxheSIgc3R5bGVz
IGR1cmluZyBib3ggYW5pbWF0aW9ucworICAgIGlmICggaXNCb3ggJiYgZWxlbS5ub2RlVHlwZSA9
PT0gMSApIHsKKworICAgICAgICAvLyBTdXBwb3J0OiBJRSA8PTkgLSAxMSwgRWRnZSAxMiAtIDEz
CisgICAgICAgIC8vIFJlY29yZCBhbGwgMyBvdmVyZmxvdyBhdHRyaWJ1dGVzIGJlY2F1c2UgSUUg
ZG9lcyBub3QgaW5mZXIgdGhlIHNob3J0aGFuZAorICAgICAgICAvLyBmcm9tIGlkZW50aWNhbGx5
LXZhbHVlZCBvdmVyZmxvd1ggYW5kIG92ZXJmbG93WQorICAgICAgICBvcHRzLm92ZXJmbG93ID0g
WyBzdHlsZS5vdmVyZmxvdywgc3R5bGUub3ZlcmZsb3dYLCBzdHlsZS5vdmVyZmxvd1kgXTsKKwor
ICAgICAgICAvLyBJZGVudGlmeSBhIGRpc3BsYXkgdHlwZSwgcHJlZmVycmluZyBvbGQgc2hvdy9o
aWRlIGRhdGEgb3ZlciB0aGUgQ1NTIGNhc2NhZGUKKyAgICAgICAgcmVzdG9yZURpc3BsYXkgPSBk
YXRhU2hvdyAmJiBkYXRhU2hvdy5kaXNwbGF5OworICAgICAgICBpZiAoIHJlc3RvcmVEaXNwbGF5
ID09IG51bGwgKSB7CisgICAgICAgICAgICByZXN0b3JlRGlzcGxheSA9IGRhdGFQcml2LmdldCgg
ZWxlbSwgImRpc3BsYXkiICk7CisgICAgICAgIH0KKyAgICAgICAgZGlzcGxheSA9IGpRdWVyeS5j
c3MoIGVsZW0sICJkaXNwbGF5IiApOworICAgICAgICBpZiAoIGRpc3BsYXkgPT09ICJub25lIiAp
IHsKKyAgICAgICAgICAgIGlmICggcmVzdG9yZURpc3BsYXkgKSB7CisgICAgICAgICAgICAgICAg
ZGlzcGxheSA9IHJlc3RvcmVEaXNwbGF5OworICAgICAgICAgICAgfSBlbHNlIHsKKworICAgICAg
ICAgICAgICAgIC8vIEdldCBub25lbXB0eSB2YWx1ZShzKSBieSB0ZW1wb3JhcmlseSBmb3JjaW5n
IHZpc2liaWxpdHkKKyAgICAgICAgICAgICAgICBzaG93SGlkZSggWyBlbGVtIF0sIHRydWUgKTsK
KyAgICAgICAgICAgICAgICByZXN0b3JlRGlzcGxheSA9IGVsZW0uc3R5bGUuZGlzcGxheSB8fCBy
ZXN0b3JlRGlzcGxheTsKKyAgICAgICAgICAgICAgICBkaXNwbGF5ID0galF1ZXJ5LmNzcyggZWxl
bSwgImRpc3BsYXkiICk7CisgICAgICAgICAgICAgICAgc2hvd0hpZGUoIFsgZWxlbSBdICk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBBbmltYXRlIGlubGluZSBlbGVt
ZW50cyBhcyBpbmxpbmUtYmxvY2sKKyAgICAgICAgaWYgKCBkaXNwbGF5ID09PSAiaW5saW5lIiB8
fCBkaXNwbGF5ID09PSAiaW5saW5lLWJsb2NrIiAmJiByZXN0b3JlRGlzcGxheSAhPSBudWxsICkg
eworICAgICAgICAgICAgaWYgKCBqUXVlcnkuY3NzKCBlbGVtLCAiZmxvYXQiICkgPT09ICJub25l
IiApIHsKKworICAgICAgICAgICAgICAgIC8vIFJlc3RvcmUgdGhlIG9yaWdpbmFsIGRpc3BsYXkg
dmFsdWUgYXQgdGhlIGVuZCBvZiBwdXJlIHNob3cvaGlkZSBhbmltYXRpb25zCisgICAgICAgICAg
ICAgICAgaWYgKCAhcHJvcFR3ZWVuICkgeworICAgICAgICAgICAgICAgICAgICBhbmltLmRvbmUo
IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGUuZGlzcGxheSA9IHJl
c3RvcmVEaXNwbGF5OworICAgICAgICAgICAgICAgICAgICB9ICk7CisgICAgICAgICAgICAgICAg
ICAgIGlmICggcmVzdG9yZURpc3BsYXkgPT0gbnVsbCApIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGRpc3BsYXkgPSBzdHlsZS5kaXNwbGF5OworICAgICAgICAgICAgICAgICAgICAgICAgcmVz
dG9yZURpc3BsYXkgPSBkaXNwbGF5ID09PSAibm9uZSIgPyAiIiA6IGRpc3BsYXk7CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgc3R5bGUu
ZGlzcGxheSA9ICJpbmxpbmUtYmxvY2siOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorCisgICAgaWYgKCBvcHRzLm92ZXJmbG93ICkgeworICAgICAgICBzdHlsZS5vdmVyZmxvdyA9
ICJoaWRkZW4iOworICAgICAgICBhbmltLmFsd2F5cyggZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICBzdHlsZS5vdmVyZmxvdyA9IG9wdHMub3ZlcmZsb3dbIDAgXTsKKyAgICAgICAgICAgIHN0eWxl
Lm92ZXJmbG93WCA9IG9wdHMub3ZlcmZsb3dbIDEgXTsKKyAgICAgICAgICAgIHN0eWxlLm92ZXJm
bG93WSA9IG9wdHMub3ZlcmZsb3dbIDIgXTsKKyAgICAgICAgfSApOworICAgIH0KKworICAgIC8v
IEltcGxlbWVudCBzaG93L2hpZGUgYW5pbWF0aW9ucworICAgIHByb3BUd2VlbiA9IGZhbHNlOwor
ICAgIGZvciAoIHByb3AgaW4gb3JpZyApIHsKKworICAgICAgICAvLyBHZW5lcmFsIHNob3cvaGlk
ZSBzZXR1cCBmb3IgdGhpcyBlbGVtZW50IGFuaW1hdGlvbgorICAgICAgICBpZiAoICFwcm9wVHdl
ZW4gKSB7CisgICAgICAgICAgICBpZiAoIGRhdGFTaG93ICkgeworICAgICAgICAgICAgICAgIGlm
ICggImhpZGRlbiIgaW4gZGF0YVNob3cgKSB7CisgICAgICAgICAgICAgICAgICAgIGhpZGRlbiA9
IGRhdGFTaG93LmhpZGRlbjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGRhdGFTaG93ID0gZGF0YVByaXYuYWNjZXNzKCBlbGVtLCAiZnhz
aG93IiwgeyBkaXNwbGF5OiByZXN0b3JlRGlzcGxheSB9ICk7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIC8vIFN0b3JlIGhpZGRlbi92aXNpYmxlIGZvciB0b2dnbGUgc28gYC5zdG9wKCku
dG9nZ2xlKClgICJyZXZlcnNlcyIKKyAgICAgICAgICAgIGlmICggdG9nZ2xlICkgeworICAgICAg
ICAgICAgICAgIGRhdGFTaG93LmhpZGRlbiA9ICFoaWRkZW47CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIC8vIFNob3cgZWxlbWVudHMgYmVmb3JlIGFuaW1hdGluZyB0aGVtCisgICAgICAg
ICAgICBpZiAoIGhpZGRlbiApIHsKKyAgICAgICAgICAgICAgICBzaG93SGlkZSggWyBlbGVtIF0s
IHRydWUgKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogZXNsaW50LWRpc2FibGUg
bm8tbG9vcC1mdW5jICovCisKKyAgICAgICAgICAgIGFuaW0uZG9uZSggZnVuY3Rpb24oKSB7CisK
KyAgICAgICAgICAgIC8qIGVzbGludC1lbmFibGUgbm8tbG9vcC1mdW5jICovCisKKyAgICAgICAg
ICAgICAgICAvLyBUaGUgZmluYWwgc3RlcCBvZiBhICJoaWRlIiBhbmltYXRpb24gaXMgYWN0dWFs
bHkgaGlkaW5nIHRoZSBlbGVtZW50CisgICAgICAgICAgICAgICAgaWYgKCAhaGlkZGVuICkgewor
ICAgICAgICAgICAgICAgICAgICBzaG93SGlkZSggWyBlbGVtIF0gKTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgZGF0YVByaXYucmVtb3ZlKCBlbGVtLCAiZnhzaG93IiApOwor
ICAgICAgICAgICAgICAgIGZvciAoIHByb3AgaW4gb3JpZyApIHsKKyAgICAgICAgICAgICAgICAg
ICAgalF1ZXJ5LnN0eWxlKCBlbGVtLCBwcm9wLCBvcmlnWyBwcm9wIF0gKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9ICk7CisgICAgICAgIH0KKworICAgICAgICAvLyBQZXItcHJv
cGVydHkgc2V0dXAKKyAgICAgICAgcHJvcFR3ZWVuID0gY3JlYXRlVHdlZW4oIGhpZGRlbiA/IGRh
dGFTaG93WyBwcm9wIF0gOiAwLCBwcm9wLCBhbmltICk7CisgICAgICAgIGlmICggISggcHJvcCBp
biBkYXRhU2hvdyApICkgeworICAgICAgICAgICAgZGF0YVNob3dbIHByb3AgXSA9IHByb3BUd2Vl
bi5zdGFydDsKKyAgICAgICAgICAgIGlmICggaGlkZGVuICkgeworICAgICAgICAgICAgICAgIHBy
b3BUd2Vlbi5lbmQgPSBwcm9wVHdlZW4uc3RhcnQ7CisgICAgICAgICAgICAgICAgcHJvcFR3ZWVu
LnN0YXJ0ID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rp
b24gcHJvcEZpbHRlciggcHJvcHMsIHNwZWNpYWxFYXNpbmcgKSB7CisgICAgdmFyIGluZGV4LCBu
YW1lLCBlYXNpbmcsIHZhbHVlLCBob29rczsKKworICAgIC8vIGNhbWVsQ2FzZSwgc3BlY2lhbEVh
c2luZyBhbmQgZXhwYW5kIGNzc0hvb2sgcGFzcworICAgIGZvciAoIGluZGV4IGluIHByb3BzICkg
eworICAgICAgICBuYW1lID0galF1ZXJ5LmNhbWVsQ2FzZSggaW5kZXggKTsKKyAgICAgICAgZWFz
aW5nID0gc3BlY2lhbEVhc2luZ1sgbmFtZSBdOworICAgICAgICB2YWx1ZSA9IHByb3BzWyBpbmRl
eCBdOworICAgICAgICBpZiAoIGpRdWVyeS5pc0FycmF5KCB2YWx1ZSApICkgeworICAgICAgICAg
ICAgZWFzaW5nID0gdmFsdWVbIDEgXTsKKyAgICAgICAgICAgIHZhbHVlID0gcHJvcHNbIGluZGV4
IF0gPSB2YWx1ZVsgMCBdOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCBpbmRleCAhPT0gbmFt
ZSApIHsKKyAgICAgICAgICAgIHByb3BzWyBuYW1lIF0gPSB2YWx1ZTsKKyAgICAgICAgICAgIGRl
bGV0ZSBwcm9wc1sgaW5kZXggXTsKKyAgICAgICAgfQorCisgICAgICAgIGhvb2tzID0galF1ZXJ5
LmNzc0hvb2tzWyBuYW1lIF07CisgICAgICAgIGlmICggaG9va3MgJiYgImV4cGFuZCIgaW4gaG9v
a3MgKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGhvb2tzLmV4cGFuZCggdmFsdWUgKTsKKyAgICAg
ICAgICAgIGRlbGV0ZSBwcm9wc1sgbmFtZSBdOworCisgICAgICAgICAgICAvLyBOb3QgcXVpdGUg
JC5leHRlbmQsIHRoaXMgd29uJ3Qgb3ZlcndyaXRlIGV4aXN0aW5nIGtleXMuCisgICAgICAgICAg
ICAvLyBSZXVzaW5nICdpbmRleCcgYmVjYXVzZSB3ZSBoYXZlIHRoZSBjb3JyZWN0ICJuYW1lIgor
ICAgICAgICAgICAgZm9yICggaW5kZXggaW4gdmFsdWUgKSB7CisgICAgICAgICAgICAgICAgaWYg
KCAhKCBpbmRleCBpbiBwcm9wcyApICkgeworICAgICAgICAgICAgICAgICAgICBwcm9wc1sgaW5k
ZXggXSA9IHZhbHVlWyBpbmRleCBdOworICAgICAgICAgICAgICAgICAgICBzcGVjaWFsRWFzaW5n
WyBpbmRleCBdID0gZWFzaW5nOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNwZWNpYWxFYXNpbmdbIG5hbWUgXSA9IGVhc2lu
ZzsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gQW5pbWF0aW9uKCBlbGVtLCBwcm9w
ZXJ0aWVzLCBvcHRpb25zICkgeworICAgIHZhciByZXN1bHQsCisgICAgICAgIHN0b3BwZWQsCisg
ICAgICAgIGluZGV4ID0gMCwKKyAgICAgICAgbGVuZ3RoID0gQW5pbWF0aW9uLnByZWZpbHRlcnMu
bGVuZ3RoLAorICAgICAgICBkZWZlcnJlZCA9IGpRdWVyeS5EZWZlcnJlZCgpLmFsd2F5cyggZnVu
Y3Rpb24oKSB7CisKKyAgICAgICAgICAgIC8vIERvbid0IG1hdGNoIGVsZW0gaW4gdGhlIDphbmlt
YXRlZCBzZWxlY3RvcgorICAgICAgICAgICAgZGVsZXRlIHRpY2suZWxlbTsKKyAgICAgICAgfSAp
LAorICAgICAgICB0aWNrID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBpZiAoIHN0b3BwZWQg
KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgdmFyIGN1cnJlbnRUaW1lID0gZnhOb3cgfHwgY3JlYXRlRnhOb3coKSwKKyAgICAgICAg
ICAgICAgICByZW1haW5pbmcgPSBNYXRoLm1heCggMCwgYW5pbWF0aW9uLnN0YXJ0VGltZSArIGFu
aW1hdGlvbi5kdXJhdGlvbiAtIGN1cnJlbnRUaW1lICksCisKKyAgICAgICAgICAgICAgICAvLyBT
dXBwb3J0OiBBbmRyb2lkIDIuMyBvbmx5CisgICAgICAgICAgICAgICAgLy8gQXJjaGFpYyBjcmFz
aCBidWcgd29uJ3QgYWxsb3cgdXMgdG8gdXNlIGAxIC0gKCAwLjUgfHwgMCApYCAoIzEyNDk3KQor
ICAgICAgICAgICAgICAgIHRlbXAgPSByZW1haW5pbmcgLyBhbmltYXRpb24uZHVyYXRpb24gfHwg
MCwKKyAgICAgICAgICAgICAgICBwZXJjZW50ID0gMSAtIHRlbXAsCisgICAgICAgICAgICAgICAg
aW5kZXggPSAwLAorICAgICAgICAgICAgICAgIGxlbmd0aCA9IGFuaW1hdGlvbi50d2VlbnMubGVu
Z3RoOworCisgICAgICAgICAgICBmb3IgKCA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkgewor
ICAgICAgICAgICAgICAgIGFuaW1hdGlvbi50d2VlbnNbIGluZGV4IF0ucnVuKCBwZXJjZW50ICk7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGRlZmVycmVkLm5vdGlmeVdpdGgoIGVsZW0s
IFsgYW5pbWF0aW9uLCBwZXJjZW50LCByZW1haW5pbmcgXSApOworCisgICAgICAgICAgICBpZiAo
IHBlcmNlbnQgPCAxICYmIGxlbmd0aCApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVtYWlu
aW5nOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNv
bHZlV2l0aCggZWxlbSwgWyBhbmltYXRpb24gXSApOworICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgYW5pbWF0aW9uID0gZGVm
ZXJyZWQucHJvbWlzZSggeworICAgICAgICAgICAgZWxlbTogZWxlbSwKKyAgICAgICAgICAgIHBy
b3BzOiBqUXVlcnkuZXh0ZW5kKCB7fSwgcHJvcGVydGllcyApLAorICAgICAgICAgICAgb3B0czog
alF1ZXJ5LmV4dGVuZCggdHJ1ZSwgeworICAgICAgICAgICAgICAgIHNwZWNpYWxFYXNpbmc6IHt9
LAorICAgICAgICAgICAgICAgIGVhc2luZzogalF1ZXJ5LmVhc2luZy5fZGVmYXVsdAorICAgICAg
ICAgICAgfSwgb3B0aW9ucyApLAorICAgICAgICAgICAgb3JpZ2luYWxQcm9wZXJ0aWVzOiBwcm9w
ZXJ0aWVzLAorICAgICAgICAgICAgb3JpZ2luYWxPcHRpb25zOiBvcHRpb25zLAorICAgICAgICAg
ICAgc3RhcnRUaW1lOiBmeE5vdyB8fCBjcmVhdGVGeE5vdygpLAorICAgICAgICAgICAgZHVyYXRp
b246IG9wdGlvbnMuZHVyYXRpb24sCisgICAgICAgICAgICB0d2VlbnM6IFtdLAorICAgICAgICAg
ICAgY3JlYXRlVHdlZW46IGZ1bmN0aW9uKCBwcm9wLCBlbmQgKSB7CisgICAgICAgICAgICAgICAg
dmFyIHR3ZWVuID0galF1ZXJ5LlR3ZWVuKCBlbGVtLCBhbmltYXRpb24ub3B0cywgcHJvcCwgZW5k
LAorICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLm9wdHMuc3BlY2lhbEVhc2luZ1sg
cHJvcCBdIHx8IGFuaW1hdGlvbi5vcHRzLmVhc2luZyApOworICAgICAgICAgICAgICAgIGFuaW1h
dGlvbi50d2VlbnMucHVzaCggdHdlZW4gKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHdlZW47
CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgc3RvcDogZnVuY3Rpb24oIGdvdG9FbmQgKSB7
CisgICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gMCwKKworICAgICAgICAgICAgICAgICAgICAv
LyBJZiB3ZSBhcmUgZ29pbmcgdG8gdGhlIGVuZCwgd2Ugd2FudCB0byBydW4gYWxsIHRoZSB0d2Vl
bnMKKyAgICAgICAgICAgICAgICAgICAgLy8gb3RoZXJ3aXNlIHdlIHNraXAgdGhpcyBwYXJ0Cisg
ICAgICAgICAgICAgICAgICAgIGxlbmd0aCA9IGdvdG9FbmQgPyBhbmltYXRpb24udHdlZW5zLmxl
bmd0aCA6IDA7CisgICAgICAgICAgICAgICAgaWYgKCBzdG9wcGVkICkgeworICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
c3RvcHBlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgZm9yICggOyBpbmRleCA8IGxlbmd0aDsg
aW5kZXgrKyApIHsKKyAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLnR3ZWVuc1sgaW5kZXgg
XS5ydW4oIDEgKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBSZXNv
bHZlIHdoZW4gd2UgcGxheWVkIHRoZSBsYXN0IGZyYW1lOyBvdGhlcndpc2UsIHJlamVjdAorICAg
ICAgICAgICAgICAgIGlmICggZ290b0VuZCApIHsKKyAgICAgICAgICAgICAgICAgICAgZGVmZXJy
ZWQubm90aWZ5V2l0aCggZWxlbSwgWyBhbmltYXRpb24sIDEsIDAgXSApOworICAgICAgICAgICAg
ICAgICAgICBkZWZlcnJlZC5yZXNvbHZlV2l0aCggZWxlbSwgWyBhbmltYXRpb24sIGdvdG9FbmQg
XSApOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGRlZmVy
cmVkLnJlamVjdFdpdGgoIGVsZW0sIFsgYW5pbWF0aW9uLCBnb3RvRW5kIF0gKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0gKSwKKyAgICAgICAgcHJvcHMgPSBhbmltYXRpb24ucHJvcHM7CisKKyAgICBwcm9w
RmlsdGVyKCBwcm9wcywgYW5pbWF0aW9uLm9wdHMuc3BlY2lhbEVhc2luZyApOworCisgICAgZm9y
ICggOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHsKKyAgICAgICAgcmVzdWx0ID0gQW5pbWF0
aW9uLnByZWZpbHRlcnNbIGluZGV4IF0uY2FsbCggYW5pbWF0aW9uLCBlbGVtLCBwcm9wcywgYW5p
bWF0aW9uLm9wdHMgKTsKKyAgICAgICAgaWYgKCByZXN1bHQgKSB7CisgICAgICAgICAgICBpZiAo
IGpRdWVyeS5pc0Z1bmN0aW9uKCByZXN1bHQuc3RvcCApICkgeworICAgICAgICAgICAgICAgIGpR
dWVyeS5fcXVldWVIb29rcyggYW5pbWF0aW9uLmVsZW0sIGFuaW1hdGlvbi5vcHRzLnF1ZXVlICku
c3RvcCA9CisgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5wcm94eSggcmVzdWx0LnN0b3AsIHJl
c3VsdCApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIGpRdWVyeS5tYXAoIHByb3BzLCBjcmVhdGVUd2VlbiwgYW5pbWF0
aW9uICk7CisKKyAgICBpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBhbmltYXRpb24ub3B0cy5zdGFy
dCApICkgeworICAgICAgICBhbmltYXRpb24ub3B0cy5zdGFydC5jYWxsKCBlbGVtLCBhbmltYXRp
b24gKTsKKyAgICB9CisKKyAgICBqUXVlcnkuZngudGltZXIoCisgICAgICAgIGpRdWVyeS5leHRl
bmQoIHRpY2ssIHsKKyAgICAgICAgICAgIGVsZW06IGVsZW0sCisgICAgICAgICAgICBhbmltOiBh
bmltYXRpb24sCisgICAgICAgICAgICBxdWV1ZTogYW5pbWF0aW9uLm9wdHMucXVldWUKKyAgICAg
ICAgfSApCisgICAgKTsKKworICAgIC8vIGF0dGFjaCBjYWxsYmFja3MgZnJvbSBvcHRpb25zCisg
ICAgcmV0dXJuIGFuaW1hdGlvbi5wcm9ncmVzcyggYW5pbWF0aW9uLm9wdHMucHJvZ3Jlc3MgKQor
ICAgICAgICAuZG9uZSggYW5pbWF0aW9uLm9wdHMuZG9uZSwgYW5pbWF0aW9uLm9wdHMuY29tcGxl
dGUgKQorICAgICAgICAuZmFpbCggYW5pbWF0aW9uLm9wdHMuZmFpbCApCisgICAgICAgIC5hbHdh
eXMoIGFuaW1hdGlvbi5vcHRzLmFsd2F5cyApOworfQorCitqUXVlcnkuQW5pbWF0aW9uID0galF1
ZXJ5LmV4dGVuZCggQW5pbWF0aW9uLCB7CisKKyAgICB0d2VlbmVyczogeworICAgICAgICAiKiI6
IFsgZnVuY3Rpb24oIHByb3AsIHZhbHVlICkgeworICAgICAgICAgICAgdmFyIHR3ZWVuID0gdGhp
cy5jcmVhdGVUd2VlbiggcHJvcCwgdmFsdWUgKTsKKyAgICAgICAgICAgIGFkanVzdENTUyggdHdl
ZW4uZWxlbSwgcHJvcCwgcmNzc051bS5leGVjKCB2YWx1ZSApLCB0d2VlbiApOworICAgICAgICAg
ICAgcmV0dXJuIHR3ZWVuOworICAgICAgICB9IF0KKyAgICB9LAorCisgICAgdHdlZW5lcjogZnVu
Y3Rpb24oIHByb3BzLCBjYWxsYmFjayApIHsKKyAgICAgICAgaWYgKCBqUXVlcnkuaXNGdW5jdGlv
biggcHJvcHMgKSApIHsKKyAgICAgICAgICAgIGNhbGxiYWNrID0gcHJvcHM7CisgICAgICAgICAg
ICBwcm9wcyA9IFsgIioiIF07CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwcm9wcyA9
IHByb3BzLm1hdGNoKCBybm90aHRtbHdoaXRlICk7CisgICAgICAgIH0KKworICAgICAgICB2YXIg
cHJvcCwKKyAgICAgICAgICAgIGluZGV4ID0gMCwKKyAgICAgICAgICAgIGxlbmd0aCA9IHByb3Bz
Lmxlbmd0aDsKKworICAgICAgICBmb3IgKCA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkgewor
ICAgICAgICAgICAgcHJvcCA9IHByb3BzWyBpbmRleCBdOworICAgICAgICAgICAgQW5pbWF0aW9u
LnR3ZWVuZXJzWyBwcm9wIF0gPSBBbmltYXRpb24udHdlZW5lcnNbIHByb3AgXSB8fCBbXTsKKyAg
ICAgICAgICAgIEFuaW1hdGlvbi50d2VlbmVyc1sgcHJvcCBdLnVuc2hpZnQoIGNhbGxiYWNrICk7
CisgICAgICAgIH0KKyAgICB9LAorCisgICAgcHJlZmlsdGVyczogWyBkZWZhdWx0UHJlZmlsdGVy
IF0sCisKKyAgICBwcmVmaWx0ZXI6IGZ1bmN0aW9uKCBjYWxsYmFjaywgcHJlcGVuZCApIHsKKyAg
ICAgICAgaWYgKCBwcmVwZW5kICkgeworICAgICAgICAgICAgQW5pbWF0aW9uLnByZWZpbHRlcnMu
dW5zaGlmdCggY2FsbGJhY2sgKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIEFuaW1h
dGlvbi5wcmVmaWx0ZXJzLnB1c2goIGNhbGxiYWNrICk7CisgICAgICAgIH0KKyAgICB9Cit9ICk7
CisKK2pRdWVyeS5zcGVlZCA9IGZ1bmN0aW9uKCBzcGVlZCwgZWFzaW5nLCBmbiApIHsKKyAgICB2
YXIgb3B0ID0gc3BlZWQgJiYgdHlwZW9mIHNwZWVkID09PSAib2JqZWN0IiA/IGpRdWVyeS5leHRl
bmQoIHt9LCBzcGVlZCApIDogeworICAgICAgICBjb21wbGV0ZTogZm4gfHwgIWZuICYmIGVhc2lu
ZyB8fAorICAgICAgICAgICAgalF1ZXJ5LmlzRnVuY3Rpb24oIHNwZWVkICkgJiYgc3BlZWQsCisg
ICAgICAgIGR1cmF0aW9uOiBzcGVlZCwKKyAgICAgICAgZWFzaW5nOiBmbiAmJiBlYXNpbmcgfHwg
ZWFzaW5nICYmICFqUXVlcnkuaXNGdW5jdGlvbiggZWFzaW5nICkgJiYgZWFzaW5nCisgICAgfTsK
KworICAgIC8vIEdvIHRvIHRoZSBlbmQgc3RhdGUgaWYgZnggYXJlIG9mZiBvciBpZiBkb2N1bWVu
dCBpcyBoaWRkZW4KKyAgICBpZiAoIGpRdWVyeS5meC5vZmYgfHwgZG9jdW1lbnQuaGlkZGVuICkg
eworICAgICAgICBvcHQuZHVyYXRpb24gPSAwOworCisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYg
KCB0eXBlb2Ygb3B0LmR1cmF0aW9uICE9PSAibnVtYmVyIiApIHsKKyAgICAgICAgICAgIGlmICgg
b3B0LmR1cmF0aW9uIGluIGpRdWVyeS5meC5zcGVlZHMgKSB7CisgICAgICAgICAgICAgICAgb3B0
LmR1cmF0aW9uID0galF1ZXJ5LmZ4LnNwZWVkc1sgb3B0LmR1cmF0aW9uIF07CisKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgb3B0LmR1cmF0aW9uID0galF1ZXJ5LmZ4LnNw
ZWVkcy5fZGVmYXVsdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8v
IE5vcm1hbGl6ZSBvcHQucXVldWUgLSB0cnVlL3VuZGVmaW5lZC9udWxsIC0+ICJmeCIKKyAgICBp
ZiAoIG9wdC5xdWV1ZSA9PSBudWxsIHx8IG9wdC5xdWV1ZSA9PT0gdHJ1ZSApIHsKKyAgICAgICAg
b3B0LnF1ZXVlID0gImZ4IjsKKyAgICB9CisKKyAgICAvLyBRdWV1ZWluZworICAgIG9wdC5vbGQg
PSBvcHQuY29tcGxldGU7CisKKyAgICBvcHQuY29tcGxldGUgPSBmdW5jdGlvbigpIHsKKyAgICAg
ICAgaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggb3B0Lm9sZCApICkgeworICAgICAgICAgICAgb3B0
Lm9sZC5jYWxsKCB0aGlzICk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIG9wdC5xdWV1ZSAp
IHsKKyAgICAgICAgICAgIGpRdWVyeS5kZXF1ZXVlKCB0aGlzLCBvcHQucXVldWUgKTsKKyAgICAg
ICAgfQorICAgIH07CisKKyAgICByZXR1cm4gb3B0OworfTsKKworalF1ZXJ5LmZuLmV4dGVuZCgg
eworICAgIGZhZGVUbzogZnVuY3Rpb24oIHNwZWVkLCB0bywgZWFzaW5nLCBjYWxsYmFjayApIHsK
KworICAgICAgICAvLyBTaG93IGFueSBoaWRkZW4gZWxlbWVudHMgYWZ0ZXIgc2V0dGluZyBvcGFj
aXR5IHRvIDAKKyAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyKCBpc0hpZGRlbldpdGhpblRyZWUg
KS5jc3MoICJvcGFjaXR5IiwgMCApLnNob3coKQorCisgICAgICAgICAgICAvLyBBbmltYXRlIHRv
IHRoZSB2YWx1ZSBzcGVjaWZpZWQKKyAgICAgICAgICAgIC5lbmQoKS5hbmltYXRlKCB7IG9wYWNp
dHk6IHRvIH0sIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICk7CisgICAgfSwKKyAgICBhbmltYXRl
OiBmdW5jdGlvbiggcHJvcCwgc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKSB7CisgICAgICAgIHZh
ciBlbXB0eSA9IGpRdWVyeS5pc0VtcHR5T2JqZWN0KCBwcm9wICksCisgICAgICAgICAgICBvcHRh
bGwgPSBqUXVlcnkuc3BlZWQoIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICksCisgICAgICAgICAg
ICBkb0FuaW1hdGlvbiA9IGZ1bmN0aW9uKCkgeworCisgICAgICAgICAgICAgICAgLy8gT3BlcmF0
ZSBvbiBhIGNvcHkgb2YgcHJvcCBzbyBwZXItcHJvcGVydHkgZWFzaW5nIHdvbid0IGJlIGxvc3QK
KyAgICAgICAgICAgICAgICB2YXIgYW5pbSA9IEFuaW1hdGlvbiggdGhpcywgalF1ZXJ5LmV4dGVu
ZCgge30sIHByb3AgKSwgb3B0YWxsICk7CisKKyAgICAgICAgICAgICAgICAvLyBFbXB0eSBhbmlt
YXRpb25zLCBvciBmaW5pc2hpbmcgcmVzb2x2ZXMgaW1tZWRpYXRlbHkKKyAgICAgICAgICAgICAg
ICBpZiAoIGVtcHR5IHx8IGRhdGFQcml2LmdldCggdGhpcywgImZpbmlzaCIgKSApIHsKKyAgICAg
ICAgICAgICAgICAgICAgYW5pbS5zdG9wKCB0cnVlICk7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfTsKKyAgICAgICAgICAgIGRvQW5pbWF0aW9uLmZpbmlzaCA9IGRvQW5pbWF0aW9u
OworCisgICAgICAgIHJldHVybiBlbXB0eSB8fCBvcHRhbGwucXVldWUgPT09IGZhbHNlID8KKyAg
ICAgICAgICAgIHRoaXMuZWFjaCggZG9BbmltYXRpb24gKSA6CisgICAgICAgICAgICB0aGlzLnF1
ZXVlKCBvcHRhbGwucXVldWUsIGRvQW5pbWF0aW9uICk7CisgICAgfSwKKyAgICBzdG9wOiBmdW5j
dGlvbiggdHlwZSwgY2xlYXJRdWV1ZSwgZ290b0VuZCApIHsKKyAgICAgICAgdmFyIHN0b3BRdWV1
ZSA9IGZ1bmN0aW9uKCBob29rcyApIHsKKyAgICAgICAgICAgIHZhciBzdG9wID0gaG9va3Muc3Rv
cDsKKyAgICAgICAgICAgIGRlbGV0ZSBob29rcy5zdG9wOworICAgICAgICAgICAgc3RvcCggZ290
b0VuZCApOworICAgICAgICB9OworCisgICAgICAgIGlmICggdHlwZW9mIHR5cGUgIT09ICJzdHJp
bmciICkgeworICAgICAgICAgICAgZ290b0VuZCA9IGNsZWFyUXVldWU7CisgICAgICAgICAgICBj
bGVhclF1ZXVlID0gdHlwZTsKKyAgICAgICAgICAgIHR5cGUgPSB1bmRlZmluZWQ7CisgICAgICAg
IH0KKyAgICAgICAgaWYgKCBjbGVhclF1ZXVlICYmIHR5cGUgIT09IGZhbHNlICkgeworICAgICAg
ICAgICAgdGhpcy5xdWV1ZSggdHlwZSB8fCAiZngiLCBbXSApOworICAgICAgICB9CisKKyAgICAg
ICAgcmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB2YXIgZGVxdWV1
ZSA9IHRydWUsCisgICAgICAgICAgICAgICAgaW5kZXggPSB0eXBlICE9IG51bGwgJiYgdHlwZSAr
ICJxdWV1ZUhvb2tzIiwKKyAgICAgICAgICAgICAgICB0aW1lcnMgPSBqUXVlcnkudGltZXJzLAor
ICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhUHJpdi5nZXQoIHRoaXMgKTsKKworICAgICAgICAg
ICAgaWYgKCBpbmRleCApIHsKKyAgICAgICAgICAgICAgICBpZiAoIGRhdGFbIGluZGV4IF0gJiYg
ZGF0YVsgaW5kZXggXS5zdG9wICkgeworICAgICAgICAgICAgICAgICAgICBzdG9wUXVldWUoIGRh
dGFbIGluZGV4IF0gKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIGZvciAoIGluZGV4IGluIGRhdGEgKSB7CisgICAgICAgICAgICAgICAg
ICAgIGlmICggZGF0YVsgaW5kZXggXSAmJiBkYXRhWyBpbmRleCBdLnN0b3AgJiYgcnJ1bi50ZXN0
KCBpbmRleCApICkgeworICAgICAgICAgICAgICAgICAgICAgICAgc3RvcFF1ZXVlKCBkYXRhWyBp
bmRleCBdICk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGZvciAoIGluZGV4ID0gdGltZXJzLmxlbmd0aDsgaW5k
ZXgtLTsgKSB7CisgICAgICAgICAgICAgICAgaWYgKCB0aW1lcnNbIGluZGV4IF0uZWxlbSA9PT0g
dGhpcyAmJgorICAgICAgICAgICAgICAgICAgICAoIHR5cGUgPT0gbnVsbCB8fCB0aW1lcnNbIGlu
ZGV4IF0ucXVldWUgPT09IHR5cGUgKSApIHsKKworICAgICAgICAgICAgICAgICAgICB0aW1lcnNb
IGluZGV4IF0uYW5pbS5zdG9wKCBnb3RvRW5kICk7CisgICAgICAgICAgICAgICAgICAgIGRlcXVl
dWUgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgdGltZXJzLnNwbGljZSggaW5kZXgsIDEg
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFN0
YXJ0IHRoZSBuZXh0IGluIHRoZSBxdWV1ZSBpZiB0aGUgbGFzdCBzdGVwIHdhc24ndCBmb3JjZWQu
CisgICAgICAgICAgICAvLyBUaW1lcnMgY3VycmVudGx5IHdpbGwgY2FsbCB0aGVpciBjb21wbGV0
ZSBjYWxsYmFja3MsIHdoaWNoCisgICAgICAgICAgICAvLyB3aWxsIGRlcXVldWUgYnV0IG9ubHkg
aWYgdGhleSB3ZXJlIGdvdG9FbmQuCisgICAgICAgICAgICBpZiAoIGRlcXVldWUgfHwgIWdvdG9F
bmQgKSB7CisgICAgICAgICAgICAgICAgalF1ZXJ5LmRlcXVldWUoIHRoaXMsIHR5cGUgKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfSApOworICAgIH0sCisgICAgZmluaXNoOiBmdW5jdGlvbigg
dHlwZSApIHsKKyAgICAgICAgaWYgKCB0eXBlICE9PSBmYWxzZSApIHsKKyAgICAgICAgICAgIHR5
cGUgPSB0eXBlIHx8ICJmeCI7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRoaXMuZWFjaCgg
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB2YXIgaW5kZXgsCisgICAgICAgICAgICAgICAgZGF0
YSA9IGRhdGFQcml2LmdldCggdGhpcyApLAorICAgICAgICAgICAgICAgIHF1ZXVlID0gZGF0YVsg
dHlwZSArICJxdWV1ZSIgXSwKKyAgICAgICAgICAgICAgICBob29rcyA9IGRhdGFbIHR5cGUgKyAi
cXVldWVIb29rcyIgXSwKKyAgICAgICAgICAgICAgICB0aW1lcnMgPSBqUXVlcnkudGltZXJzLAor
ICAgICAgICAgICAgICAgIGxlbmd0aCA9IHF1ZXVlID8gcXVldWUubGVuZ3RoIDogMDsKKworICAg
ICAgICAgICAgLy8gRW5hYmxlIGZpbmlzaGluZyBmbGFnIG9uIHByaXZhdGUgZGF0YQorICAgICAg
ICAgICAgZGF0YS5maW5pc2ggPSB0cnVlOworCisgICAgICAgICAgICAvLyBFbXB0eSB0aGUgcXVl
dWUgZmlyc3QKKyAgICAgICAgICAgIGpRdWVyeS5xdWV1ZSggdGhpcywgdHlwZSwgW10gKTsKKwor
ICAgICAgICAgICAgaWYgKCBob29rcyAmJiBob29rcy5zdG9wICkgeworICAgICAgICAgICAgICAg
IGhvb2tzLnN0b3AuY2FsbCggdGhpcywgdHJ1ZSApOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAvLyBMb29rIGZvciBhbnkgYWN0aXZlIGFuaW1hdGlvbnMsIGFuZCBmaW5pc2ggdGhlbQor
ICAgICAgICAgICAgZm9yICggaW5kZXggPSB0aW1lcnMubGVuZ3RoOyBpbmRleC0tOyApIHsKKyAg
ICAgICAgICAgICAgICBpZiAoIHRpbWVyc1sgaW5kZXggXS5lbGVtID09PSB0aGlzICYmIHRpbWVy
c1sgaW5kZXggXS5xdWV1ZSA9PT0gdHlwZSApIHsKKyAgICAgICAgICAgICAgICAgICAgdGltZXJz
WyBpbmRleCBdLmFuaW0uc3RvcCggdHJ1ZSApOworICAgICAgICAgICAgICAgICAgICB0aW1lcnMu
c3BsaWNlKCBpbmRleCwgMSApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgLy8gTG9vayBmb3IgYW55IGFuaW1hdGlvbnMgaW4gdGhlIG9sZCBxdWV1ZSBh
bmQgZmluaXNoIHRoZW0KKyAgICAgICAgICAgIGZvciAoIGluZGV4ID0gMDsgaW5kZXggPCBsZW5n
dGg7IGluZGV4KysgKSB7CisgICAgICAgICAgICAgICAgaWYgKCBxdWV1ZVsgaW5kZXggXSAmJiBx
dWV1ZVsgaW5kZXggXS5maW5pc2ggKSB7CisgICAgICAgICAgICAgICAgICAgIHF1ZXVlWyBpbmRl
eCBdLmZpbmlzaC5jYWxsKCB0aGlzICk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAvLyBUdXJuIG9mZiBmaW5pc2hpbmcgZmxhZworICAgICAgICAgICAg
ZGVsZXRlIGRhdGEuZmluaXNoOworICAgICAgICB9ICk7CisgICAgfQorfSApOworCitqUXVlcnku
ZWFjaCggWyAidG9nZ2xlIiwgInNob3ciLCAiaGlkZSIgXSwgZnVuY3Rpb24oIGksIG5hbWUgKSB7
CisgICAgdmFyIGNzc0ZuID0galF1ZXJ5LmZuWyBuYW1lIF07CisgICAgalF1ZXJ5LmZuWyBuYW1l
IF0gPSBmdW5jdGlvbiggc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKSB7CisgICAgICAgIHJldHVy
biBzcGVlZCA9PSBudWxsIHx8IHR5cGVvZiBzcGVlZCA9PT0gImJvb2xlYW4iID8KKyAgICAgICAg
ICAgIGNzc0ZuLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKSA6CisgICAgICAgICAgICB0aGlzLmFu
aW1hdGUoIGdlbkZ4KCBuYW1lLCB0cnVlICksIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICk7Cisg
ICAgfTsKK30gKTsKKworLy8gR2VuZXJhdGUgc2hvcnRjdXRzIGZvciBjdXN0b20gYW5pbWF0aW9u
cworalF1ZXJ5LmVhY2goIHsKKyAgICBzbGlkZURvd246IGdlbkZ4KCAic2hvdyIgKSwKKyAgICBz
bGlkZVVwOiBnZW5GeCggImhpZGUiICksCisgICAgc2xpZGVUb2dnbGU6IGdlbkZ4KCAidG9nZ2xl
IiApLAorICAgIGZhZGVJbjogeyBvcGFjaXR5OiAic2hvdyIgfSwKKyAgICBmYWRlT3V0OiB7IG9w
YWNpdHk6ICJoaWRlIiB9LAorICAgIGZhZGVUb2dnbGU6IHsgb3BhY2l0eTogInRvZ2dsZSIgfQor
fSwgZnVuY3Rpb24oIG5hbWUsIHByb3BzICkgeworICAgIGpRdWVyeS5mblsgbmFtZSBdID0gZnVu
Y3Rpb24oIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICkgeworICAgICAgICByZXR1cm4gdGhpcy5h
bmltYXRlKCBwcm9wcywgc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKTsKKyAgICB9OworfSApOwor
CitqUXVlcnkudGltZXJzID0gW107CitqUXVlcnkuZngudGljayA9IGZ1bmN0aW9uKCkgeworICAg
IHZhciB0aW1lciwKKyAgICAgICAgaSA9IDAsCisgICAgICAgIHRpbWVycyA9IGpRdWVyeS50aW1l
cnM7CisKKyAgICBmeE5vdyA9IGpRdWVyeS5ub3coKTsKKworICAgIGZvciAoIDsgaSA8IHRpbWVy
cy5sZW5ndGg7IGkrKyApIHsKKyAgICAgICAgdGltZXIgPSB0aW1lcnNbIGkgXTsKKworICAgICAg
ICAvLyBDaGVja3MgdGhlIHRpbWVyIGhhcyBub3QgYWxyZWFkeSBiZWVuIHJlbW92ZWQKKyAgICAg
ICAgaWYgKCAhdGltZXIoKSAmJiB0aW1lcnNbIGkgXSA9PT0gdGltZXIgKSB7CisgICAgICAgICAg
ICB0aW1lcnMuc3BsaWNlKCBpLS0sIDEgKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICgg
IXRpbWVycy5sZW5ndGggKSB7CisgICAgICAgIGpRdWVyeS5meC5zdG9wKCk7CisgICAgfQorICAg
IGZ4Tm93ID0gdW5kZWZpbmVkOworfTsKKworalF1ZXJ5LmZ4LnRpbWVyID0gZnVuY3Rpb24oIHRp
bWVyICkgeworICAgIGpRdWVyeS50aW1lcnMucHVzaCggdGltZXIgKTsKKyAgICBpZiAoIHRpbWVy
KCkgKSB7CisgICAgICAgIGpRdWVyeS5meC5zdGFydCgpOworICAgIH0gZWxzZSB7CisgICAgICAg
IGpRdWVyeS50aW1lcnMucG9wKCk7CisgICAgfQorfTsKKworalF1ZXJ5LmZ4LmludGVydmFsID0g
MTM7CitqUXVlcnkuZnguc3RhcnQgPSBmdW5jdGlvbigpIHsKKyAgICBpZiAoICF0aW1lcklkICkg
eworICAgICAgICB0aW1lcklkID0gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSA/CisgICAg
ICAgICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCByYWYgKSA6CisgICAgICAgICAg
ICB3aW5kb3cuc2V0SW50ZXJ2YWwoIGpRdWVyeS5meC50aWNrLCBqUXVlcnkuZnguaW50ZXJ2YWwg
KTsKKyAgICB9Cit9OworCitqUXVlcnkuZnguc3RvcCA9IGZ1bmN0aW9uKCkgeworICAgIGlmICgg
d2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lICkgeworICAgICAgICB3aW5kb3cuY2FuY2VsQW5p
bWF0aW9uRnJhbWUoIHRpbWVySWQgKTsKKyAgICB9IGVsc2UgeworICAgICAgICB3aW5kb3cuY2xl
YXJJbnRlcnZhbCggdGltZXJJZCApOworICAgIH0KKworICAgIHRpbWVySWQgPSBudWxsOworfTsK
KworalF1ZXJ5LmZ4LnNwZWVkcyA9IHsKKyAgICBzbG93OiA2MDAsCisgICAgZmFzdDogMjAwLAor
CisgICAgLy8gRGVmYXVsdCBzcGVlZAorICAgIF9kZWZhdWx0OiA0MDAKK307CisKKworLy8gQmFz
ZWQgb2ZmIG9mIHRoZSBwbHVnaW4gYnkgQ2xpbnQgSGVsZmVycywgd2l0aCBwZXJtaXNzaW9uLgor
Ly8gaHR0cHM6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMTAwMzI0MDE0NzQ3L2h0dHA6Ly9ibGlu
ZHNpZ25hbHMuY29tL2luZGV4LnBocC8yMDA5LzA3L2pxdWVyeS1kZWxheS8KK2pRdWVyeS5mbi5k
ZWxheSA9IGZ1bmN0aW9uKCB0aW1lLCB0eXBlICkgeworICAgIHRpbWUgPSBqUXVlcnkuZnggPyBq
UXVlcnkuZnguc3BlZWRzWyB0aW1lIF0gfHwgdGltZSA6IHRpbWU7CisgICAgdHlwZSA9IHR5cGUg
fHwgImZ4IjsKKworICAgIHJldHVybiB0aGlzLnF1ZXVlKCB0eXBlLCBmdW5jdGlvbiggbmV4dCwg
aG9va3MgKSB7CisgICAgICAgIHZhciB0aW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoIG5leHQs
IHRpbWUgKTsKKyAgICAgICAgaG9va3Muc3RvcCA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
d2luZG93LmNsZWFyVGltZW91dCggdGltZW91dCApOworICAgICAgICB9OworICAgIH0gKTsKK307
CisKKworKCBmdW5jdGlvbigpIHsKKyAgICB2YXIgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCAiaW5wdXQiICksCisgICAgICAgIHNlbGVjdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ICJzZWxlY3QiICksCisgICAgICAgIG9wdCA9IHNlbGVjdC5hcHBlbmRDaGlsZCggZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCggIm9wdGlvbiIgKSApOworCisgICAgaW5wdXQudHlwZSA9ICJjaGVja2Jv
eCI7CisKKyAgICAvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4zIG9ubHkKKyAgICAvLyBEZWZhdWx0
IHZhbHVlIGZvciBhIGNoZWNrYm94IHNob3VsZCBiZSAib24iCisgICAgc3VwcG9ydC5jaGVja09u
ID0gaW5wdXQudmFsdWUgIT09ICIiOworCisgICAgLy8gU3VwcG9ydDogSUUgPD0xMSBvbmx5Cisg
ICAgLy8gTXVzdCBhY2Nlc3Mgc2VsZWN0ZWRJbmRleCB0byBtYWtlIGRlZmF1bHQgb3B0aW9ucyBz
ZWxlY3QKKyAgICBzdXBwb3J0Lm9wdFNlbGVjdGVkID0gb3B0LnNlbGVjdGVkOworCisgICAgLy8g
U3VwcG9ydDogSUUgPD0xMSBvbmx5CisgICAgLy8gQW4gaW5wdXQgbG9zZXMgaXRzIHZhbHVlIGFm
dGVyIGJlY29taW5nIGEgcmFkaW8KKyAgICBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ICJpbnB1dCIgKTsKKyAgICBpbnB1dC52YWx1ZSA9ICJ0IjsKKyAgICBpbnB1dC50eXBlID0gInJh
ZGlvIjsKKyAgICBzdXBwb3J0LnJhZGlvVmFsdWUgPSBpbnB1dC52YWx1ZSA9PT0gInQiOworfSAp
KCk7CisKKwordmFyIGJvb2xIb29rLAorICAgIGF0dHJIYW5kbGUgPSBqUXVlcnkuZXhwci5hdHRy
SGFuZGxlOworCitqUXVlcnkuZm4uZXh0ZW5kKCB7CisgICAgYXR0cjogZnVuY3Rpb24oIG5hbWUs
IHZhbHVlICkgeworICAgICAgICByZXR1cm4gYWNjZXNzKCB0aGlzLCBqUXVlcnkuYXR0ciwgbmFt
ZSwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggPiAxICk7CisgICAgfSwKKworICAgIHJlbW92ZUF0
dHI6IGZ1bmN0aW9uKCBuYW1lICkgeworICAgICAgICByZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgIGpRdWVyeS5yZW1vdmVBdHRyKCB0aGlzLCBuYW1lICk7CisgICAg
ICAgIH0gKTsKKyAgICB9Cit9ICk7CisKK2pRdWVyeS5leHRlbmQoIHsKKyAgICBhdHRyOiBmdW5j
dGlvbiggZWxlbSwgbmFtZSwgdmFsdWUgKSB7CisgICAgICAgIHZhciByZXQsIGhvb2tzLAorICAg
ICAgICAgICAgblR5cGUgPSBlbGVtLm5vZGVUeXBlOworCisgICAgICAgIC8vIERvbid0IGdldC9z
ZXQgYXR0cmlidXRlcyBvbiB0ZXh0LCBjb21tZW50IGFuZCBhdHRyaWJ1dGUgbm9kZXMKKyAgICAg
ICAgaWYgKCBuVHlwZSA9PT0gMyB8fCBuVHlwZSA9PT0gOCB8fCBuVHlwZSA9PT0gMiApIHsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZhbGxiYWNrIHRvIHBy
b3Agd2hlbiBhdHRyaWJ1dGVzIGFyZSBub3Qgc3VwcG9ydGVkCisgICAgICAgIGlmICggdHlwZW9m
IGVsZW0uZ2V0QXR0cmlidXRlID09PSAidW5kZWZpbmVkIiApIHsKKyAgICAgICAgICAgIHJldHVy
biBqUXVlcnkucHJvcCggZWxlbSwgbmFtZSwgdmFsdWUgKTsKKyAgICAgICAgfQorCisgICAgICAg
IC8vIEF0dHJpYnV0ZSBob29rcyBhcmUgZGV0ZXJtaW5lZCBieSB0aGUgbG93ZXJjYXNlIHZlcnNp
b24KKyAgICAgICAgLy8gR3JhYiBuZWNlc3NhcnkgaG9vayBpZiBvbmUgaXMgZGVmaW5lZAorICAg
ICAgICBpZiAoIG5UeXBlICE9PSAxIHx8ICFqUXVlcnkuaXNYTUxEb2MoIGVsZW0gKSApIHsKKyAg
ICAgICAgICAgIGhvb2tzID0galF1ZXJ5LmF0dHJIb29rc1sgbmFtZS50b0xvd2VyQ2FzZSgpIF0g
fHwKKyAgICAgICAgICAgICAgICAoIGpRdWVyeS5leHByLm1hdGNoLmJvb2wudGVzdCggbmFtZSAp
ID8gYm9vbEhvb2sgOiB1bmRlZmluZWQgKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICggdmFs
dWUgIT09IHVuZGVmaW5lZCApIHsKKyAgICAgICAgICAgIGlmICggdmFsdWUgPT09IG51bGwgKSB7
CisgICAgICAgICAgICAgICAgalF1ZXJ5LnJlbW92ZUF0dHIoIGVsZW0sIG5hbWUgKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICggaG9v
a3MgJiYgInNldCIgaW4gaG9va3MgJiYKKyAgICAgICAgICAgICAgICAoIHJldCA9IGhvb2tzLnNl
dCggZWxlbSwgdmFsdWUsIG5hbWUgKSApICE9PSB1bmRlZmluZWQgKSB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHJldDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZWxlbS5zZXRBdHRy
aWJ1dGUoIG5hbWUsIHZhbHVlICsgIiIgKTsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmICggaG9va3MgJiYgImdldCIgaW4gaG9va3MgJiYgKCByZXQg
PSBob29rcy5nZXQoIGVsZW0sIG5hbWUgKSApICE9PSBudWxsICkgeworICAgICAgICAgICAgcmV0
dXJuIHJldDsKKyAgICAgICAgfQorCisgICAgICAgIHJldCA9IGpRdWVyeS5maW5kLmF0dHIoIGVs
ZW0sIG5hbWUgKTsKKworICAgICAgICAvLyBOb24tZXhpc3RlbnQgYXR0cmlidXRlcyByZXR1cm4g
bnVsbCwgd2Ugbm9ybWFsaXplIHRvIHVuZGVmaW5lZAorICAgICAgICByZXR1cm4gcmV0ID09IG51
bGwgPyB1bmRlZmluZWQgOiByZXQ7CisgICAgfSwKKworICAgIGF0dHJIb29rczogeworICAgICAg
ICB0eXBlOiB7CisgICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSApIHsKKyAg
ICAgICAgICAgICAgICBpZiAoICFzdXBwb3J0LnJhZGlvVmFsdWUgJiYgdmFsdWUgPT09ICJyYWRp
byIgJiYKKyAgICAgICAgICAgICAgICAgICAgalF1ZXJ5Lm5vZGVOYW1lKCBlbGVtLCAiaW5wdXQi
ICkgKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciB2YWwgPSBlbGVtLnZhbHVlOworICAgICAg
ICAgICAgICAgICAgICBlbGVtLnNldEF0dHJpYnV0ZSggInR5cGUiLCB2YWx1ZSApOworICAgICAg
ICAgICAgICAgICAgICBpZiAoIHZhbCApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0u
dmFsdWUgPSB2YWw7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHZhbHVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0sCisKKyAgICByZW1vdmVBdHRyOiBmdW5jdGlvbiggZWxlbSwgdmFsdWUgKSB7Cisg
ICAgICAgIHZhciBuYW1lLAorICAgICAgICAgICAgaSA9IDAsCisKKyAgICAgICAgICAgIC8vIEF0
dHJpYnV0ZSBuYW1lcyBjYW4gY29udGFpbiBub24tSFRNTCB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMK
KyAgICAgICAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5
bnRheC5odG1sI2F0dHJpYnV0ZXMtMgorICAgICAgICAgICAgYXR0ck5hbWVzID0gdmFsdWUgJiYg
dmFsdWUubWF0Y2goIHJub3RodG1sd2hpdGUgKTsKKworICAgICAgICBpZiAoIGF0dHJOYW1lcyAm
JiBlbGVtLm5vZGVUeXBlID09PSAxICkgeworICAgICAgICAgICAgd2hpbGUgKCAoIG5hbWUgPSBh
dHRyTmFtZXNbIGkrKyBdICkgKSB7CisgICAgICAgICAgICAgICAgZWxlbS5yZW1vdmVBdHRyaWJ1
dGUoIG5hbWUgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30gKTsKKworLy8g
SG9va3MgZm9yIGJvb2xlYW4gYXR0cmlidXRlcworYm9vbEhvb2sgPSB7CisgICAgc2V0OiBmdW5j
dGlvbiggZWxlbSwgdmFsdWUsIG5hbWUgKSB7CisgICAgICAgIGlmICggdmFsdWUgPT09IGZhbHNl
ICkgeworCisgICAgICAgICAgICAvLyBSZW1vdmUgYm9vbGVhbiBhdHRyaWJ1dGVzIHdoZW4gc2V0
IHRvIGZhbHNlCisgICAgICAgICAgICBqUXVlcnkucmVtb3ZlQXR0ciggZWxlbSwgbmFtZSApOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZWxlbS5zZXRBdHRyaWJ1dGUoIG5hbWUsIG5h
bWUgKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbmFtZTsKKyAgICB9Cit9OworCitqUXVl
cnkuZWFjaCggalF1ZXJ5LmV4cHIubWF0Y2guYm9vbC5zb3VyY2UubWF0Y2goIC9cdysvZyApLCBm
dW5jdGlvbiggaSwgbmFtZSApIHsKKyAgICB2YXIgZ2V0dGVyID0gYXR0ckhhbmRsZVsgbmFtZSBd
IHx8IGpRdWVyeS5maW5kLmF0dHI7CisKKyAgICBhdHRySGFuZGxlWyBuYW1lIF0gPSBmdW5jdGlv
biggZWxlbSwgbmFtZSwgaXNYTUwgKSB7CisgICAgICAgIHZhciByZXQsIGhhbmRsZSwKKyAgICAg
ICAgICAgIGxvd2VyY2FzZU5hbWUgPSBuYW1lLnRvTG93ZXJDYXNlKCk7CisKKyAgICAgICAgaWYg
KCAhaXNYTUwgKSB7CisKKyAgICAgICAgICAgIC8vIEF2b2lkIGFuIGluZmluaXRlIGxvb3AgYnkg
dGVtcG9yYXJpbHkgcmVtb3ZpbmcgdGhpcyBmdW5jdGlvbiBmcm9tIHRoZSBnZXR0ZXIKKyAgICAg
ICAgICAgIGhhbmRsZSA9IGF0dHJIYW5kbGVbIGxvd2VyY2FzZU5hbWUgXTsKKyAgICAgICAgICAg
IGF0dHJIYW5kbGVbIGxvd2VyY2FzZU5hbWUgXSA9IHJldDsKKyAgICAgICAgICAgIHJldCA9IGdl
dHRlciggZWxlbSwgbmFtZSwgaXNYTUwgKSAhPSBudWxsID8KKyAgICAgICAgICAgICAgICBsb3dl
cmNhc2VOYW1lIDoKKyAgICAgICAgICAgICAgICBudWxsOworICAgICAgICAgICAgYXR0ckhhbmRs
ZVsgbG93ZXJjYXNlTmFtZSBdID0gaGFuZGxlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBy
ZXQ7CisgICAgfTsKK30gKTsKKworCisKKwordmFyIHJmb2N1c2FibGUgPSAvXig/OmlucHV0fHNl
bGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pLAorICAgIHJjbGlja2FibGUgPSAvXig/OmF8YXJlYSkk
L2k7CisKK2pRdWVyeS5mbi5leHRlbmQoIHsKKyAgICBwcm9wOiBmdW5jdGlvbiggbmFtZSwgdmFs
dWUgKSB7CisgICAgICAgIHJldHVybiBhY2Nlc3MoIHRoaXMsIGpRdWVyeS5wcm9wLCBuYW1lLCB2
YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDEgKTsKKyAgICB9LAorCisgICAgcmVtb3ZlUHJvcDog
ZnVuY3Rpb24oIG5hbWUgKSB7CisgICAgICAgIHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgZGVsZXRlIHRoaXNbIGpRdWVyeS5wcm9wRml4WyBuYW1lIF0gfHwgbmFt
ZSBdOworICAgICAgICB9ICk7CisgICAgfQorfSApOworCitqUXVlcnkuZXh0ZW5kKCB7CisgICAg
cHJvcDogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIHZhbHVlICkgeworICAgICAgICB2YXIgcmV0LCBo
b29rcywKKyAgICAgICAgICAgIG5UeXBlID0gZWxlbS5ub2RlVHlwZTsKKworICAgICAgICAvLyBE
b24ndCBnZXQvc2V0IHByb3BlcnRpZXMgb24gdGV4dCwgY29tbWVudCBhbmQgYXR0cmlidXRlIG5v
ZGVzCisgICAgICAgIGlmICggblR5cGUgPT09IDMgfHwgblR5cGUgPT09IDggfHwgblR5cGUgPT09
IDIgKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoIG5U
eXBlICE9PSAxIHx8ICFqUXVlcnkuaXNYTUxEb2MoIGVsZW0gKSApIHsKKworICAgICAgICAgICAg
Ly8gRml4IG5hbWUgYW5kIGF0dGFjaCBob29rcworICAgICAgICAgICAgbmFtZSA9IGpRdWVyeS5w
cm9wRml4WyBuYW1lIF0gfHwgbmFtZTsKKyAgICAgICAgICAgIGhvb2tzID0galF1ZXJ5LnByb3BI
b29rc1sgbmFtZSBdOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCB2YWx1ZSAhPT0gdW5kZWZp
bmVkICkgeworICAgICAgICAgICAgaWYgKCBob29rcyAmJiAic2V0IiBpbiBob29rcyAmJgorICAg
ICAgICAgICAgICAgICggcmV0ID0gaG9va3Muc2V0KCBlbGVtLCB2YWx1ZSwgbmFtZSApICkgIT09
IHVuZGVmaW5lZCApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmV0OworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICByZXR1cm4gKCBlbGVtWyBuYW1lIF0gPSB2YWx1ZSApOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKCBob29rcyAmJiAiZ2V0IiBpbiBob29rcyAmJiAoIHJldCA9IGhv
b2tzLmdldCggZWxlbSwgbmFtZSApICkgIT09IG51bGwgKSB7CisgICAgICAgICAgICByZXR1cm4g
cmV0OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGVsZW1bIG5hbWUgXTsKKyAgICB9LAor
CisgICAgcHJvcEhvb2tzOiB7CisgICAgICAgIHRhYkluZGV4OiB7CisgICAgICAgICAgICBnZXQ6
IGZ1bmN0aW9uKCBlbGVtICkgeworCisgICAgICAgICAgICAgICAgLy8gU3VwcG9ydDogSUUgPD05
IC0gMTEgb25seQorICAgICAgICAgICAgICAgIC8vIGVsZW0udGFiSW5kZXggZG9lc24ndCBhbHdh
eXMgcmV0dXJuIHRoZQorICAgICAgICAgICAgICAgIC8vIGNvcnJlY3QgdmFsdWUgd2hlbiBpdCBo
YXNuJ3QgYmVlbiBleHBsaWNpdGx5IHNldAorICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vd2Vi
LmFyY2hpdmUub3JnL3dlYi8yMDE0MTExNjIzMzM0Ny9odHRwOi8vZmx1aWRwcm9qZWN0Lm9yZy9i
bG9nLzIwMDgvMDEvMDkvZ2V0dGluZy1zZXR0aW5nLWFuZC1yZW1vdmluZy10YWJpbmRleC12YWx1
ZXMtd2l0aC1qYXZhc2NyaXB0LworICAgICAgICAgICAgICAgIC8vIFVzZSBwcm9wZXIgYXR0cmli
dXRlIHJldHJpZXZhbCgjMTIwNzIpCisgICAgICAgICAgICAgICAgdmFyIHRhYmluZGV4ID0galF1
ZXJ5LmZpbmQuYXR0ciggZWxlbSwgInRhYmluZGV4IiApOworCisgICAgICAgICAgICAgICAgaWYg
KCB0YWJpbmRleCApIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50KCB0YWJp
bmRleCwgMTAgKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoCisg
ICAgICAgICAgICAgICAgICAgIHJmb2N1c2FibGUudGVzdCggZWxlbS5ub2RlTmFtZSApIHx8Cisg
ICAgICAgICAgICAgICAgICAgIHJjbGlja2FibGUudGVzdCggZWxlbS5ub2RlTmFtZSApICYmCisg
ICAgICAgICAgICAgICAgICAgIGVsZW0uaHJlZgorICAgICAgICAgICAgICAgICkgeworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9LAorCisgICAg
cHJvcEZpeDogeworICAgICAgICAiZm9yIjogImh0bWxGb3IiLAorICAgICAgICAiY2xhc3MiOiAi
Y2xhc3NOYW1lIgorICAgIH0KK30gKTsKKworLy8gU3VwcG9ydDogSUUgPD0xMSBvbmx5CisvLyBB
Y2Nlc3NpbmcgdGhlIHNlbGVjdGVkSW5kZXggcHJvcGVydHkKKy8vIGZvcmNlcyB0aGUgYnJvd3Nl
ciB0byByZXNwZWN0IHNldHRpbmcgc2VsZWN0ZWQKKy8vIG9uIHRoZSBvcHRpb24KKy8vIFRoZSBn
ZXR0ZXIgZW5zdXJlcyBhIGRlZmF1bHQgb3B0aW9uIGlzIHNlbGVjdGVkCisvLyB3aGVuIGluIGFu
IG9wdGdyb3VwCisvLyBlc2xpbnQgcnVsZSAibm8tdW51c2VkLWV4cHJlc3Npb25zIiBpcyBkaXNh
YmxlZCBmb3IgdGhpcyBjb2RlCisvLyBzaW5jZSBpdCBjb25zaWRlcnMgc3VjaCBhY2Nlc3Npb25z
IG5vb3AKK2lmICggIXN1cHBvcnQub3B0U2VsZWN0ZWQgKSB7CisgICAgalF1ZXJ5LnByb3BIb29r
cy5zZWxlY3RlZCA9IHsKKyAgICAgICAgZ2V0OiBmdW5jdGlvbiggZWxlbSApIHsKKworICAgICAg
ICAgICAgLyogZXNsaW50IG5vLXVudXNlZC1leHByZXNzaW9uczogIm9mZiIgKi8KKworICAgICAg
ICAgICAgdmFyIHBhcmVudCA9IGVsZW0ucGFyZW50Tm9kZTsKKyAgICAgICAgICAgIGlmICggcGFy
ZW50ICYmIHBhcmVudC5wYXJlbnROb2RlICkgeworICAgICAgICAgICAgICAgIHBhcmVudC5wYXJl
bnROb2RlLnNlbGVjdGVkSW5kZXg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4g
bnVsbDsKKyAgICAgICAgfSwKKyAgICAgICAgc2V0OiBmdW5jdGlvbiggZWxlbSApIHsKKworICAg
ICAgICAgICAgLyogZXNsaW50IG5vLXVudXNlZC1leHByZXNzaW9uczogIm9mZiIgKi8KKworICAg
ICAgICAgICAgdmFyIHBhcmVudCA9IGVsZW0ucGFyZW50Tm9kZTsKKyAgICAgICAgICAgIGlmICgg
cGFyZW50ICkgeworICAgICAgICAgICAgICAgIHBhcmVudC5zZWxlY3RlZEluZGV4OworCisgICAg
ICAgICAgICAgICAgaWYgKCBwYXJlbnQucGFyZW50Tm9kZSApIHsKKyAgICAgICAgICAgICAgICAg
ICAgcGFyZW50LnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleDsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9OworfQorCitqUXVlcnkuZWFjaCggWworICAg
ICJ0YWJJbmRleCIsCisgICAgInJlYWRPbmx5IiwKKyAgICAibWF4TGVuZ3RoIiwKKyAgICAiY2Vs
bFNwYWNpbmciLAorICAgICJjZWxsUGFkZGluZyIsCisgICAgInJvd1NwYW4iLAorICAgICJjb2xT
cGFuIiwKKyAgICAidXNlTWFwIiwKKyAgICAiZnJhbWVCb3JkZXIiLAorICAgICJjb250ZW50RWRp
dGFibGUiCitdLCBmdW5jdGlvbigpIHsKKyAgICBqUXVlcnkucHJvcEZpeFsgdGhpcy50b0xvd2Vy
Q2FzZSgpIF0gPSB0aGlzOworfSApOworCisKKworCisgICAgLy8gU3RyaXAgYW5kIGNvbGxhcHNl
IHdoaXRlc3BhY2UgYWNjb3JkaW5nIHRvIEhUTUwgc3BlYworICAgIC8vIGh0dHBzOi8vaHRtbC5z
cGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2luZnJhc3RydWN0dXJlLmh0bWwjc3RyaXAtYW5kLWNv
bGxhcHNlLXdoaXRlc3BhY2UKKyAgICBmdW5jdGlvbiBzdHJpcEFuZENvbGxhcHNlKCB2YWx1ZSAp
IHsKKyAgICAgICAgdmFyIHRva2VucyA9IHZhbHVlLm1hdGNoKCBybm90aHRtbHdoaXRlICkgfHwg
W107CisgICAgICAgIHJldHVybiB0b2tlbnMuam9pbiggIiAiICk7CisgICAgfQorCisKK2Z1bmN0
aW9uIGdldENsYXNzKCBlbGVtICkgeworICAgIHJldHVybiBlbGVtLmdldEF0dHJpYnV0ZSAmJiBl
bGVtLmdldEF0dHJpYnV0ZSggImNsYXNzIiApIHx8ICIiOworfQorCitqUXVlcnkuZm4uZXh0ZW5k
KCB7CisgICAgYWRkQ2xhc3M6IGZ1bmN0aW9uKCB2YWx1ZSApIHsKKyAgICAgICAgdmFyIGNsYXNz
ZXMsIGVsZW0sIGN1ciwgY3VyVmFsdWUsIGNsYXp6LCBqLCBmaW5hbFZhbHVlLAorICAgICAgICAg
ICAgaSA9IDA7CisKKyAgICAgICAgaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggdmFsdWUgKSApIHsK
KyAgICAgICAgICAgIHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCBqICkgeworICAgICAgICAg
ICAgICAgIGpRdWVyeSggdGhpcyApLmFkZENsYXNzKCB2YWx1ZS5jYWxsKCB0aGlzLCBqLCBnZXRD
bGFzcyggdGhpcyApICkgKTsKKyAgICAgICAgICAgIH0gKTsKKyAgICAgICAgfQorCisgICAgICAg
IGlmICggdHlwZW9mIHZhbHVlID09PSAic3RyaW5nIiAmJiB2YWx1ZSApIHsKKyAgICAgICAgICAg
IGNsYXNzZXMgPSB2YWx1ZS5tYXRjaCggcm5vdGh0bWx3aGl0ZSApIHx8IFtdOworCisgICAgICAg
ICAgICB3aGlsZSAoICggZWxlbSA9IHRoaXNbIGkrKyBdICkgKSB7CisgICAgICAgICAgICAgICAg
Y3VyVmFsdWUgPSBnZXRDbGFzcyggZWxlbSApOworICAgICAgICAgICAgICAgIGN1ciA9IGVsZW0u
bm9kZVR5cGUgPT09IDEgJiYgKCAiICIgKyBzdHJpcEFuZENvbGxhcHNlKCBjdXJWYWx1ZSApICsg
IiAiICk7CisKKyAgICAgICAgICAgICAgICBpZiAoIGN1ciApIHsKKyAgICAgICAgICAgICAgICAg
ICAgaiA9IDA7CisgICAgICAgICAgICAgICAgICAgIHdoaWxlICggKCBjbGF6eiA9IGNsYXNzZXNb
IGorKyBdICkgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGN1ci5pbmRleE9mKCAi
ICIgKyBjbGF6eiArICIgIiApIDwgMCApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
dXIgKz0gY2xhenogKyAiICI7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAvLyBPbmx5IGFzc2lnbiBpZiBkaWZm
ZXJlbnQgdG8gYXZvaWQgdW5uZWVkZWQgcmVuZGVyaW5nLgorICAgICAgICAgICAgICAgICAgICBm
aW5hbFZhbHVlID0gc3RyaXBBbmRDb2xsYXBzZSggY3VyICk7CisgICAgICAgICAgICAgICAgICAg
IGlmICggY3VyVmFsdWUgIT09IGZpbmFsVmFsdWUgKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBlbGVtLnNldEF0dHJpYnV0ZSggImNsYXNzIiwgZmluYWxWYWx1ZSApOworICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisK
KyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfSwKKworICAgIHJlbW92ZUNsYXNzOiBmdW5jdGlv
biggdmFsdWUgKSB7CisgICAgICAgIHZhciBjbGFzc2VzLCBlbGVtLCBjdXIsIGN1clZhbHVlLCBj
bGF6eiwgaiwgZmluYWxWYWx1ZSwKKyAgICAgICAgICAgIGkgPSAwOworCisgICAgICAgIGlmICgg
alF1ZXJ5LmlzRnVuY3Rpb24oIHZhbHVlICkgKSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy5l
YWNoKCBmdW5jdGlvbiggaiApIHsKKyAgICAgICAgICAgICAgICBqUXVlcnkoIHRoaXMgKS5yZW1v
dmVDbGFzcyggdmFsdWUuY2FsbCggdGhpcywgaiwgZ2V0Q2xhc3MoIHRoaXMgKSApICk7CisgICAg
ICAgICAgICB9ICk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoICFhcmd1bWVudHMubGVuZ3Ro
ICkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXR0ciggImNsYXNzIiwgIiIgKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmICggdHlwZW9mIHZhbHVlID09PSAic3RyaW5nIiAmJiB2YWx1ZSAp
IHsKKyAgICAgICAgICAgIGNsYXNzZXMgPSB2YWx1ZS5tYXRjaCggcm5vdGh0bWx3aGl0ZSApIHx8
IFtdOworCisgICAgICAgICAgICB3aGlsZSAoICggZWxlbSA9IHRoaXNbIGkrKyBdICkgKSB7Cisg
ICAgICAgICAgICAgICAgY3VyVmFsdWUgPSBnZXRDbGFzcyggZWxlbSApOworCisgICAgICAgICAg
ICAgICAgLy8gVGhpcyBleHByZXNzaW9uIGlzIGhlcmUgZm9yIGJldHRlciBjb21wcmVzc2liaWxp
dHkgKHNlZSBhZGRDbGFzcykKKyAgICAgICAgICAgICAgICBjdXIgPSBlbGVtLm5vZGVUeXBlID09
PSAxICYmICggIiAiICsgc3RyaXBBbmRDb2xsYXBzZSggY3VyVmFsdWUgKSArICIgIiApOworCisg
ICAgICAgICAgICAgICAgaWYgKCBjdXIgKSB7CisgICAgICAgICAgICAgICAgICAgIGogPSAwOwor
ICAgICAgICAgICAgICAgICAgICB3aGlsZSAoICggY2xhenogPSBjbGFzc2VzWyBqKysgXSApICkg
eworCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZW1vdmUgKmFsbCogaW5zdGFuY2VzCisg
ICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoIGN1ci5pbmRleE9mKCAiICIgKyBjbGF6eiAr
ICIgIiApID4gLTEgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyID0gY3VyLnJl
cGxhY2UoICIgIiArIGNsYXp6ICsgIiAiLCAiICIgKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIC8vIE9ubHkg
YXNzaWduIGlmIGRpZmZlcmVudCB0byBhdm9pZCB1bm5lZWRlZCByZW5kZXJpbmcuCisgICAgICAg
ICAgICAgICAgICAgIGZpbmFsVmFsdWUgPSBzdHJpcEFuZENvbGxhcHNlKCBjdXIgKTsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKCBjdXJWYWx1ZSAhPT0gZmluYWxWYWx1ZSApIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGVsZW0uc2V0QXR0cmlidXRlKCAiY2xhc3MiLCBmaW5hbFZhbHVlICk7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9LAorCisgICAgdG9nZ2xl
Q2xhc3M6IGZ1bmN0aW9uKCB2YWx1ZSwgc3RhdGVWYWwgKSB7CisgICAgICAgIHZhciB0eXBlID0g
dHlwZW9mIHZhbHVlOworCisgICAgICAgIGlmICggdHlwZW9mIHN0YXRlVmFsID09PSAiYm9vbGVh
biIgJiYgdHlwZSA9PT0gInN0cmluZyIgKSB7CisgICAgICAgICAgICByZXR1cm4gc3RhdGVWYWwg
PyB0aGlzLmFkZENsYXNzKCB2YWx1ZSApIDogdGhpcy5yZW1vdmVDbGFzcyggdmFsdWUgKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIHZhbHVlICkgKSB7Cisg
ICAgICAgICAgICByZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbiggaSApIHsKKyAgICAgICAgICAg
ICAgICBqUXVlcnkoIHRoaXMgKS50b2dnbGVDbGFzcygKKyAgICAgICAgICAgICAgICAgICAgdmFs
dWUuY2FsbCggdGhpcywgaSwgZ2V0Q2xhc3MoIHRoaXMgKSwgc3RhdGVWYWwgKSwKKyAgICAgICAg
ICAgICAgICAgICAgc3RhdGVWYWwKKyAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgfSAp
OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICB2YXIgY2xhc3NOYW1lLCBpLCBzZWxmLCBjbGFzc05hbWVzOworCisgICAgICAg
ICAgICBpZiAoIHR5cGUgPT09ICJzdHJpbmciICkgeworCisgICAgICAgICAgICAgICAgLy8gVG9n
Z2xlIGluZGl2aWR1YWwgY2xhc3MgbmFtZXMKKyAgICAgICAgICAgICAgICBpID0gMDsKKyAgICAg
ICAgICAgICAgICBzZWxmID0galF1ZXJ5KCB0aGlzICk7CisgICAgICAgICAgICAgICAgY2xhc3NO
YW1lcyA9IHZhbHVlLm1hdGNoKCBybm90aHRtbHdoaXRlICkgfHwgW107CisKKyAgICAgICAgICAg
ICAgICB3aGlsZSAoICggY2xhc3NOYW1lID0gY2xhc3NOYW1lc1sgaSsrIF0gKSApIHsKKworICAg
ICAgICAgICAgICAgICAgICAvLyBDaGVjayBlYWNoIGNsYXNzTmFtZSBnaXZlbiwgc3BhY2Ugc2Vw
YXJhdGVkIGxpc3QKKyAgICAgICAgICAgICAgICAgICAgaWYgKCBzZWxmLmhhc0NsYXNzKCBjbGFz
c05hbWUgKSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVtb3ZlQ2xhc3MoIGNs
YXNzTmFtZSApOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
ICAgICAgICAgc2VsZi5hZGRDbGFzcyggY2xhc3NOYW1lICk7CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRvZ2dsZSB3aG9sZSBjbGFz
cyBuYW1lCisgICAgICAgICAgICB9IGVsc2UgaWYgKCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHR5
cGUgPT09ICJib29sZWFuIiApIHsKKyAgICAgICAgICAgICAgICBjbGFzc05hbWUgPSBnZXRDbGFz
cyggdGhpcyApOworICAgICAgICAgICAgICAgIGlmICggY2xhc3NOYW1lICkgeworCisgICAgICAg
ICAgICAgICAgICAgIC8vIFN0b3JlIGNsYXNzTmFtZSBpZiBzZXQKKyAgICAgICAgICAgICAgICAg
ICAgZGF0YVByaXYuc2V0KCB0aGlzLCAiX19jbGFzc05hbWVfXyIsIGNsYXNzTmFtZSApOworICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIElmIHRoZSBlbGVtZW50IGhhcyBh
IGNsYXNzIG5hbWUgb3IgaWYgd2UncmUgcGFzc2VkIGBmYWxzZWAsCisgICAgICAgICAgICAgICAg
Ly8gdGhlbiByZW1vdmUgdGhlIHdob2xlIGNsYXNzbmFtZSAoaWYgdGhlcmUgd2FzIG9uZSwgdGhl
IGFib3ZlIHNhdmVkIGl0KS4KKyAgICAgICAgICAgICAgICAvLyBPdGhlcndpc2UgYnJpbmcgYmFj
ayB3aGF0ZXZlciB3YXMgcHJldmlvdXNseSBzYXZlZCAoaWYgYW55dGhpbmcpLAorICAgICAgICAg
ICAgICAgIC8vIGZhbGxpbmcgYmFjayB0byB0aGUgZW1wdHkgc3RyaW5nIGlmIG5vdGhpbmcgd2Fz
IHN0b3JlZC4KKyAgICAgICAgICAgICAgICBpZiAoIHRoaXMuc2V0QXR0cmlidXRlICkgeworICAg
ICAgICAgICAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSggImNsYXNzIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNsYXNzTmFtZSB8fCB2YWx1ZSA9PT0gZmFsc2UgPworICAgICAgICAgICAg
ICAgICAgICAgICAgIiIgOgorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVByaXYuZ2V0KCB0
aGlzLCAiX19jbGFzc05hbWVfXyIgKSB8fCAiIgorICAgICAgICAgICAgICAgICAgICApOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSApOworICAgIH0sCisKKyAg
ICBoYXNDbGFzczogZnVuY3Rpb24oIHNlbGVjdG9yICkgeworICAgICAgICB2YXIgY2xhc3NOYW1l
LCBlbGVtLAorICAgICAgICAgICAgaSA9IDA7CisKKyAgICAgICAgY2xhc3NOYW1lID0gIiAiICsg
c2VsZWN0b3IgKyAiICI7CisgICAgICAgIHdoaWxlICggKCBlbGVtID0gdGhpc1sgaSsrIF0gKSAp
IHsKKyAgICAgICAgICAgIGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSAmJgorICAgICAgICAgICAg
ICAgICggIiAiICsgc3RyaXBBbmRDb2xsYXBzZSggZ2V0Q2xhc3MoIGVsZW0gKSApICsgIiAiICku
aW5kZXhPZiggY2xhc3NOYW1lICkgPiAtMSApIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorfSApOworCisKKworCit2YXIgcnJldHVybiA9IC9cci9nOworCitqUXVlcnkuZm4u
ZXh0ZW5kKCB7CisgICAgdmFsOiBmdW5jdGlvbiggdmFsdWUgKSB7CisgICAgICAgIHZhciBob29r
cywgcmV0LCBpc0Z1bmN0aW9uLAorICAgICAgICAgICAgZWxlbSA9IHRoaXNbIDAgXTsKKworICAg
ICAgICBpZiAoICFhcmd1bWVudHMubGVuZ3RoICkgeworICAgICAgICAgICAgaWYgKCBlbGVtICkg
eworICAgICAgICAgICAgICAgIGhvb2tzID0galF1ZXJ5LnZhbEhvb2tzWyBlbGVtLnR5cGUgXSB8
fAorICAgICAgICAgICAgICAgICAgICBqUXVlcnkudmFsSG9va3NbIGVsZW0ubm9kZU5hbWUudG9M
b3dlckNhc2UoKSBdOworCisgICAgICAgICAgICAgICAgaWYgKCBob29rcyAmJgorICAgICAgICAg
ICAgICAgICAgICAiZ2V0IiBpbiBob29rcyAmJgorICAgICAgICAgICAgICAgICAgICAoIHJldCA9
IGhvb2tzLmdldCggZWxlbSwgInZhbHVlIiApICkgIT09IHVuZGVmaW5lZAorICAgICAgICAgICAg
ICAgICkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0OworICAgICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgICAgIHJldCA9IGVsZW0udmFsdWU7CisKKyAgICAgICAgICAgICAg
ICAvLyBIYW5kbGUgbW9zdCBjb21tb24gc3RyaW5nIGNhc2VzCisgICAgICAgICAgICAgICAgaWYg
KCB0eXBlb2YgcmV0ID09PSAic3RyaW5nIiApIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHJldC5yZXBsYWNlKCBycmV0dXJuLCAiIiApOworICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgIC8vIEhhbmRsZSBjYXNlcyB3aGVyZSB2YWx1ZSBpcyBudWxsL3VuZGVmIG9yIG51
bWJlcgorICAgICAgICAgICAgICAgIHJldHVybiByZXQgPT0gbnVsbCA/ICIiIDogcmV0OworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBp
c0Z1bmN0aW9uID0galF1ZXJ5LmlzRnVuY3Rpb24oIHZhbHVlICk7CisKKyAgICAgICAgcmV0dXJu
IHRoaXMuZWFjaCggZnVuY3Rpb24oIGkgKSB7CisgICAgICAgICAgICB2YXIgdmFsOworCisgICAg
ICAgICAgICBpZiAoIHRoaXMubm9kZVR5cGUgIT09IDEgKSB7CisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIGlzRnVuY3Rpb24gKSB7Cisg
ICAgICAgICAgICAgICAgdmFsID0gdmFsdWUuY2FsbCggdGhpcywgaSwgalF1ZXJ5KCB0aGlzICku
dmFsKCkgKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdmFsID0gdmFs
dWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRyZWF0IG51bGwvdW5kZWZpbmVk
IGFzICIiOyBjb252ZXJ0IG51bWJlcnMgdG8gc3RyaW5nCisgICAgICAgICAgICBpZiAoIHZhbCA9
PSBudWxsICkgeworICAgICAgICAgICAgICAgIHZhbCA9ICIiOworCisgICAgICAgICAgICB9IGVs
c2UgaWYgKCB0eXBlb2YgdmFsID09PSAibnVtYmVyIiApIHsKKyAgICAgICAgICAgICAgICB2YWwg
Kz0gIiI7CisKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoIGpRdWVyeS5pc0FycmF5KCB2YWwgKSAp
IHsKKyAgICAgICAgICAgICAgICB2YWwgPSBqUXVlcnkubWFwKCB2YWwsIGZ1bmN0aW9uKCB2YWx1
ZSApIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlID09IG51bGwgPyAiIiA6IHZh
bHVlICsgIiI7CisgICAgICAgICAgICAgICAgfSApOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBob29rcyA9IGpRdWVyeS52YWxIb29rc1sgdGhpcy50eXBlIF0gfHwgalF1ZXJ5LnZhbEhv
b2tzWyB0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgXTsKKworICAgICAgICAgICAgLy8gSWYg
c2V0IHJldHVybnMgdW5kZWZpbmVkLCBmYWxsIGJhY2sgdG8gbm9ybWFsIHNldHRpbmcKKyAgICAg
ICAgICAgIGlmICggIWhvb2tzIHx8ICEoICJzZXQiIGluIGhvb2tzICkgfHwgaG9va3Muc2V0KCB0
aGlzLCB2YWwsICJ2YWx1ZSIgKSA9PT0gdW5kZWZpbmVkICkgeworICAgICAgICAgICAgICAgIHRo
aXMudmFsdWUgPSB2YWw7CisgICAgICAgICAgICB9CisgICAgICAgIH0gKTsKKyAgICB9Cit9ICk7
CisKK2pRdWVyeS5leHRlbmQoIHsKKyAgICB2YWxIb29rczogeworICAgICAgICBvcHRpb246IHsK
KyAgICAgICAgICAgIGdldDogZnVuY3Rpb24oIGVsZW0gKSB7CisKKyAgICAgICAgICAgICAgICB2
YXIgdmFsID0galF1ZXJ5LmZpbmQuYXR0ciggZWxlbSwgInZhbHVlIiApOworICAgICAgICAgICAg
ICAgIHJldHVybiB2YWwgIT0gbnVsbCA/CisgICAgICAgICAgICAgICAgICAgIHZhbCA6CisKKyAg
ICAgICAgICAgICAgICAgICAgLy8gU3VwcG9ydDogSUUgPD0xMCAtIDExIG9ubHkKKyAgICAgICAg
ICAgICAgICAgICAgLy8gb3B0aW9uLnRleHQgdGhyb3dzIGV4Y2VwdGlvbnMgKCMxNDY4NiwgIzE0
ODU4KQorICAgICAgICAgICAgICAgICAgICAvLyBTdHJpcCBhbmQgY29sbGFwc2Ugd2hpdGVzcGFj
ZQorICAgICAgICAgICAgICAgICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyNz
dHJpcC1hbmQtY29sbGFwc2Utd2hpdGVzcGFjZQorICAgICAgICAgICAgICAgICAgICBzdHJpcEFu
ZENvbGxhcHNlKCBqUXVlcnkudGV4dCggZWxlbSApICk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0sCisgICAgICAgIHNlbGVjdDogeworICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiggZWxlbSAp
IHsKKyAgICAgICAgICAgICAgICB2YXIgdmFsdWUsIG9wdGlvbiwgaSwKKyAgICAgICAgICAgICAg
ICAgICAgb3B0aW9ucyA9IGVsZW0ub3B0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgaW5kZXgg
PSBlbGVtLnNlbGVjdGVkSW5kZXgsCisgICAgICAgICAgICAgICAgICAgIG9uZSA9IGVsZW0udHlw
ZSA9PT0gInNlbGVjdC1vbmUiLAorICAgICAgICAgICAgICAgICAgICB2YWx1ZXMgPSBvbmUgPyBu
dWxsIDogW10sCisgICAgICAgICAgICAgICAgICAgIG1heCA9IG9uZSA/IGluZGV4ICsgMSA6IG9w
dGlvbnMubGVuZ3RoOworCisgICAgICAgICAgICAgICAgaWYgKCBpbmRleCA8IDAgKSB7CisgICAg
ICAgICAgICAgICAgICAgIGkgPSBtYXg7CisKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgICAgICBpID0gb25lID8gaW5kZXggOiAwOworICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgIC8vIExvb3AgdGhyb3VnaCBhbGwgdGhlIHNlbGVjdGVkIG9wdGlv
bnMKKyAgICAgICAgICAgICAgICBmb3IgKCA7IGkgPCBtYXg7IGkrKyApIHsKKyAgICAgICAgICAg
ICAgICAgICAgb3B0aW9uID0gb3B0aW9uc1sgaSBdOworCisgICAgICAgICAgICAgICAgICAgIC8v
IFN1cHBvcnQ6IElFIDw9OSBvbmx5CisgICAgICAgICAgICAgICAgICAgIC8vIElFOC05IGRvZXNu
J3QgdXBkYXRlIHNlbGVjdGVkIGFmdGVyIGZvcm0gcmVzZXQgKCMyNTUxKQorICAgICAgICAgICAg
ICAgICAgICBpZiAoICggb3B0aW9uLnNlbGVjdGVkIHx8IGkgPT09IGluZGV4ICkgJiYKKworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERvbid0IHJldHVybiBvcHRpb25zIHRoYXQgYXJl
IGRpc2FibGVkIG9yIGluIGEgZGlzYWJsZWQgb3B0Z3JvdXAKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAhb3B0aW9uLmRpc2FibGVkICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KCAhb3B0aW9uLnBhcmVudE5vZGUuZGlzYWJsZWQgfHwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIWpRdWVyeS5ub2RlTmFtZSggb3B0aW9uLnBhcmVudE5vZGUsICJvcHRncm91cCIg
KSApICkgeworCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBHZXQgdGhlIHNwZWNpZmljIHZh
bHVlIGZvciB0aGUgb3B0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGpRdWVy
eSggb3B0aW9uICkudmFsKCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0
IG5lZWQgYW4gYXJyYXkgZm9yIG9uZSBzZWxlY3RzCisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoIG9uZSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIE11
bHRpLVNlbGVjdHMgcmV0dXJuIGFuIGFycmF5CisgICAgICAgICAgICAgICAgICAgICAgICB2YWx1
ZXMucHVzaCggdmFsdWUgKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZXM7CisgICAgICAgICAgICB9LAorCisg
ICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSApIHsKKyAgICAgICAgICAgICAg
ICB2YXIgb3B0aW9uU2V0LCBvcHRpb24sCisgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMgPSBl
bGVtLm9wdGlvbnMsCisgICAgICAgICAgICAgICAgICAgIHZhbHVlcyA9IGpRdWVyeS5tYWtlQXJy
YXkoIHZhbHVlICksCisgICAgICAgICAgICAgICAgICAgIGkgPSBvcHRpb25zLmxlbmd0aDsKKwor
ICAgICAgICAgICAgICAgIHdoaWxlICggaS0tICkgeworICAgICAgICAgICAgICAgICAgICBvcHRp
b24gPSBvcHRpb25zWyBpIF07CisKKyAgICAgICAgICAgICAgICAgICAgLyogZXNsaW50LWRpc2Fi
bGUgbm8tY29uZC1hc3NpZ24gKi8KKworICAgICAgICAgICAgICAgICAgICBpZiAoIG9wdGlvbi5z
ZWxlY3RlZCA9CisgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkuaW5BcnJheSggalF1ZXJ5
LnZhbEhvb2tzLm9wdGlvbi5nZXQoIG9wdGlvbiApLCB2YWx1ZXMgKSA+IC0xCisgICAgICAgICAg
ICAgICAgICAgICkgeworICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uU2V0ID0gdHJ1ZTsK
KyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIC8qIGVzbGludC1l
bmFibGUgbm8tY29uZC1hc3NpZ24gKi8KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICAvLyBGb3JjZSBicm93c2VycyB0byBiZWhhdmUgY29uc2lzdGVudGx5IHdoZW4gbm9uLW1h
dGNoaW5nIHZhbHVlIGlzIHNldAorICAgICAgICAgICAgICAgIGlmICggIW9wdGlvblNldCApIHsK
KyAgICAgICAgICAgICAgICAgICAgZWxlbS5zZWxlY3RlZEluZGV4ID0gLTE7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZXM7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9Cit9ICk7CisKKy8vIFJhZGlvcyBhbmQgY2hlY2tib3hlcyBnZXR0ZXIv
c2V0dGVyCitqUXVlcnkuZWFjaCggWyAicmFkaW8iLCAiY2hlY2tib3giIF0sIGZ1bmN0aW9uKCkg
eworICAgIGpRdWVyeS52YWxIb29rc1sgdGhpcyBdID0geworICAgICAgICBzZXQ6IGZ1bmN0aW9u
KCBlbGVtLCB2YWx1ZSApIHsKKyAgICAgICAgICAgIGlmICggalF1ZXJ5LmlzQXJyYXkoIHZhbHVl
ICkgKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuICggZWxlbS5jaGVja2VkID0galF1ZXJ5Lmlu
QXJyYXkoIGpRdWVyeSggZWxlbSApLnZhbCgpLCB2YWx1ZSApID4gLTEgKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH07CisgICAgaWYgKCAhc3VwcG9ydC5jaGVja09uICkgeworICAg
ICAgICBqUXVlcnkudmFsSG9va3NbIHRoaXMgXS5nZXQgPSBmdW5jdGlvbiggZWxlbSApIHsKKyAg
ICAgICAgICAgIHJldHVybiBlbGVtLmdldEF0dHJpYnV0ZSggInZhbHVlIiApID09PSBudWxsID8g
Im9uIiA6IGVsZW0udmFsdWU7CisgICAgICAgIH07CisgICAgfQorfSApOworCisKKworCisvLyBS
ZXR1cm4galF1ZXJ5IGZvciBhdHRyaWJ1dGVzLW9ubHkgaW5jbHVzaW9uCisKKwordmFyIHJmb2N1
c01vcnBoID0gL14oPzpmb2N1c2luZm9jdXN8Zm9jdXNvdXRibHVyKSQvOworCitqUXVlcnkuZXh0
ZW5kKCBqUXVlcnkuZXZlbnQsIHsKKworICAgIHRyaWdnZXI6IGZ1bmN0aW9uKCBldmVudCwgZGF0
YSwgZWxlbSwgb25seUhhbmRsZXJzICkgeworCisgICAgICAgIHZhciBpLCBjdXIsIHRtcCwgYnVi
YmxlVHlwZSwgb250eXBlLCBoYW5kbGUsIHNwZWNpYWwsCisgICAgICAgICAgICBldmVudFBhdGgg
PSBbIGVsZW0gfHwgZG9jdW1lbnQgXSwKKyAgICAgICAgICAgIHR5cGUgPSBoYXNPd24uY2FsbCgg
ZXZlbnQsICJ0eXBlIiApID8gZXZlbnQudHlwZSA6IGV2ZW50LAorICAgICAgICAgICAgbmFtZXNw
YWNlcyA9IGhhc093bi5jYWxsKCBldmVudCwgIm5hbWVzcGFjZSIgKSA/IGV2ZW50Lm5hbWVzcGFj
ZS5zcGxpdCggIi4iICkgOiBbXTsKKworICAgICAgICBjdXIgPSB0bXAgPSBlbGVtID0gZWxlbSB8
fCBkb2N1bWVudDsKKworICAgICAgICAvLyBEb24ndCBkbyBldmVudHMgb24gdGV4dCBhbmQgY29t
bWVudCBub2RlcworICAgICAgICBpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDMgfHwgZWxlbS5ub2Rl
VHlwZSA9PT0gOCApIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IC8vIGZvY3VzL2JsdXIgbW9ycGhzIHRvIGZvY3VzaW4vb3V0OyBlbnN1cmUgd2UncmUgbm90IGZp
cmluZyB0aGVtIHJpZ2h0IG5vdworICAgICAgICBpZiAoIHJmb2N1c01vcnBoLnRlc3QoIHR5cGUg
KyBqUXVlcnkuZXZlbnQudHJpZ2dlcmVkICkgKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICBpZiAoIHR5cGUuaW5kZXhPZiggIi4iICkgPiAtMSApIHsKKworICAg
ICAgICAgICAgLy8gTmFtZXNwYWNlZCB0cmlnZ2VyOyBjcmVhdGUgYSByZWdleHAgdG8gbWF0Y2gg
ZXZlbnQgdHlwZSBpbiBoYW5kbGUoKQorICAgICAgICAgICAgbmFtZXNwYWNlcyA9IHR5cGUuc3Bs
aXQoICIuIiApOworICAgICAgICAgICAgdHlwZSA9IG5hbWVzcGFjZXMuc2hpZnQoKTsKKyAgICAg
ICAgICAgIG5hbWVzcGFjZXMuc29ydCgpOworICAgICAgICB9CisgICAgICAgIG9udHlwZSA9IHR5
cGUuaW5kZXhPZiggIjoiICkgPCAwICYmICJvbiIgKyB0eXBlOworCisgICAgICAgIC8vIENhbGxl
ciBjYW4gcGFzcyBpbiBhIGpRdWVyeS5FdmVudCBvYmplY3QsIE9iamVjdCwgb3IganVzdCBhbiBl
dmVudCB0eXBlIHN0cmluZworICAgICAgICBldmVudCA9IGV2ZW50WyBqUXVlcnkuZXhwYW5kbyBd
ID8KKyAgICAgICAgICAgIGV2ZW50IDoKKyAgICAgICAgICAgIG5ldyBqUXVlcnkuRXZlbnQoIHR5
cGUsIHR5cGVvZiBldmVudCA9PT0gIm9iamVjdCIgJiYgZXZlbnQgKTsKKworICAgICAgICAvLyBU
cmlnZ2VyIGJpdG1hc2s6ICYgMSBmb3IgbmF0aXZlIGhhbmRsZXJzOyAmIDIgZm9yIGpRdWVyeSAo
YWx3YXlzIHRydWUpCisgICAgICAgIGV2ZW50LmlzVHJpZ2dlciA9IG9ubHlIYW5kbGVycyA/IDIg
OiAzOworICAgICAgICBldmVudC5uYW1lc3BhY2UgPSBuYW1lc3BhY2VzLmpvaW4oICIuIiApOwor
ICAgICAgICBldmVudC5ybmFtZXNwYWNlID0gZXZlbnQubmFtZXNwYWNlID8KKyAgICAgICAgICAg
IG5ldyBSZWdFeHAoICIoXnxcXC4pIiArIG5hbWVzcGFjZXMuam9pbiggIlxcLig/Oi4qXFwufCki
ICkgKyAiKFxcLnwkKSIgKSA6CisgICAgICAgICAgICBudWxsOworCisgICAgICAgIC8vIENsZWFu
IHVwIHRoZSBldmVudCBpbiBjYXNlIGl0IGlzIGJlaW5nIHJldXNlZAorICAgICAgICBldmVudC5y
ZXN1bHQgPSB1bmRlZmluZWQ7CisgICAgICAgIGlmICggIWV2ZW50LnRhcmdldCApIHsKKyAgICAg
ICAgICAgIGV2ZW50LnRhcmdldCA9IGVsZW07CisgICAgICAgIH0KKworICAgICAgICAvLyBDbG9u
ZSBhbnkgaW5jb21pbmcgZGF0YSBhbmQgcHJlcGVuZCB0aGUgZXZlbnQsIGNyZWF0aW5nIHRoZSBo
YW5kbGVyIGFyZyBsaXN0CisgICAgICAgIGRhdGEgPSBkYXRhID09IG51bGwgPworICAgICAgICAg
ICAgWyBldmVudCBdIDoKKyAgICAgICAgICAgIGpRdWVyeS5tYWtlQXJyYXkoIGRhdGEsIFsgZXZl
bnQgXSApOworCisgICAgICAgIC8vIEFsbG93IHNwZWNpYWwgZXZlbnRzIHRvIGRyYXcgb3V0c2lk
ZSB0aGUgbGluZXMKKyAgICAgICAgc3BlY2lhbCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsWyB0eXBl
IF0gfHwge307CisgICAgICAgIGlmICggIW9ubHlIYW5kbGVycyAmJiBzcGVjaWFsLnRyaWdnZXIg
JiYgc3BlY2lhbC50cmlnZ2VyLmFwcGx5KCBlbGVtLCBkYXRhICkgPT09IGZhbHNlICkgeworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gRGV0ZXJtaW5lIGV2ZW50
IHByb3BhZ2F0aW9uIHBhdGggaW4gYWR2YW5jZSwgcGVyIFczQyBldmVudHMgc3BlYyAoIzk5NTEp
CisgICAgICAgIC8vIEJ1YmJsZSB1cCB0byBkb2N1bWVudCwgdGhlbiB0byB3aW5kb3c7IHdhdGNo
IGZvciBhIGdsb2JhbCBvd25lckRvY3VtZW50IHZhciAoIzk3MjQpCisgICAgICAgIGlmICggIW9u
bHlIYW5kbGVycyAmJiAhc3BlY2lhbC5ub0J1YmJsZSAmJiAhalF1ZXJ5LmlzV2luZG93KCBlbGVt
ICkgKSB7CisKKyAgICAgICAgICAgIGJ1YmJsZVR5cGUgPSBzcGVjaWFsLmRlbGVnYXRlVHlwZSB8
fCB0eXBlOworICAgICAgICAgICAgaWYgKCAhcmZvY3VzTW9ycGgudGVzdCggYnViYmxlVHlwZSAr
IHR5cGUgKSApIHsKKyAgICAgICAgICAgICAgICBjdXIgPSBjdXIucGFyZW50Tm9kZTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGZvciAoIDsgY3VyOyBjdXIgPSBjdXIucGFyZW50Tm9kZSAp
IHsKKyAgICAgICAgICAgICAgICBldmVudFBhdGgucHVzaCggY3VyICk7CisgICAgICAgICAgICAg
ICAgdG1wID0gY3VyOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBPbmx5IGFkZCB3
aW5kb3cgaWYgd2UgZ290IHRvIGRvY3VtZW50IChlLmcuLCBub3QgcGxhaW4gb2JqIG9yIGRldGFj
aGVkIERPTSkKKyAgICAgICAgICAgIGlmICggdG1wID09PSAoIGVsZW0ub3duZXJEb2N1bWVudCB8
fCBkb2N1bWVudCApICkgeworICAgICAgICAgICAgICAgIGV2ZW50UGF0aC5wdXNoKCB0bXAuZGVm
YXVsdFZpZXcgfHwgdG1wLnBhcmVudFdpbmRvdyB8fCB3aW5kb3cgKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorCisgICAgICAgIC8vIEZpcmUgaGFuZGxlcnMgb24gdGhlIGV2ZW50IHBhdGgK
KyAgICAgICAgaSA9IDA7CisgICAgICAgIHdoaWxlICggKCBjdXIgPSBldmVudFBhdGhbIGkrKyBd
ICkgJiYgIWV2ZW50LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkgKSB7CisKKyAgICAgICAgICAgIGV2
ZW50LnR5cGUgPSBpID4gMSA/CisgICAgICAgICAgICAgICAgYnViYmxlVHlwZSA6CisgICAgICAg
ICAgICAgICAgc3BlY2lhbC5iaW5kVHlwZSB8fCB0eXBlOworCisgICAgICAgICAgICAvLyBqUXVl
cnkgaGFuZGxlcgorICAgICAgICAgICAgaGFuZGxlID0gKCBkYXRhUHJpdi5nZXQoIGN1ciwgImV2
ZW50cyIgKSB8fCB7fSApWyBldmVudC50eXBlIF0gJiYKKyAgICAgICAgICAgICAgICBkYXRhUHJp
di5nZXQoIGN1ciwgImhhbmRsZSIgKTsKKyAgICAgICAgICAgIGlmICggaGFuZGxlICkgeworICAg
ICAgICAgICAgICAgIGhhbmRsZS5hcHBseSggY3VyLCBkYXRhICk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIC8vIE5hdGl2ZSBoYW5kbGVyCisgICAgICAgICAgICBoYW5kbGUgPSBvbnR5
cGUgJiYgY3VyWyBvbnR5cGUgXTsKKyAgICAgICAgICAgIGlmICggaGFuZGxlICYmIGhhbmRsZS5h
cHBseSAmJiBhY2NlcHREYXRhKCBjdXIgKSApIHsKKyAgICAgICAgICAgICAgICBldmVudC5yZXN1
bHQgPSBoYW5kbGUuYXBwbHkoIGN1ciwgZGF0YSApOworICAgICAgICAgICAgICAgIGlmICggZXZl
bnQucmVzdWx0ID09PSBmYWxzZSApIHsKKyAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVu
dERlZmF1bHQoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgZXZlbnQudHlwZSA9IHR5cGU7CisKKyAgICAgICAgLy8gSWYgbm9ib2R5IHByZXZl
bnRlZCB0aGUgZGVmYXVsdCBhY3Rpb24sIGRvIGl0IG5vdworICAgICAgICBpZiAoICFvbmx5SGFu
ZGxlcnMgJiYgIWV2ZW50LmlzRGVmYXVsdFByZXZlbnRlZCgpICkgeworCisgICAgICAgICAgICBp
ZiAoICggIXNwZWNpYWwuX2RlZmF1bHQgfHwKKyAgICAgICAgICAgICAgICBzcGVjaWFsLl9kZWZh
dWx0LmFwcGx5KCBldmVudFBhdGgucG9wKCksIGRhdGEgKSA9PT0gZmFsc2UgKSAmJgorICAgICAg
ICAgICAgICAgIGFjY2VwdERhdGEoIGVsZW0gKSApIHsKKworICAgICAgICAgICAgICAgIC8vIENh
bGwgYSBuYXRpdmUgRE9NIG1ldGhvZCBvbiB0aGUgdGFyZ2V0IHdpdGggdGhlIHNhbWUgbmFtZSBh
cyB0aGUgZXZlbnQuCisgICAgICAgICAgICAgICAgLy8gRG9uJ3QgZG8gZGVmYXVsdCBhY3Rpb25z
IG9uIHdpbmRvdywgdGhhdCdzIHdoZXJlIGdsb2JhbCB2YXJpYWJsZXMgYmUgKCM2MTcwKQorICAg
ICAgICAgICAgICAgIGlmICggb250eXBlICYmIGpRdWVyeS5pc0Z1bmN0aW9uKCBlbGVtWyB0eXBl
IF0gKSAmJiAhalF1ZXJ5LmlzV2luZG93KCBlbGVtICkgKSB7CisKKyAgICAgICAgICAgICAgICAg
ICAgLy8gRG9uJ3QgcmUtdHJpZ2dlciBhbiBvbkZPTyBldmVudCB3aGVuIHdlIGNhbGwgaXRzIEZP
TygpIG1ldGhvZAorICAgICAgICAgICAgICAgICAgICB0bXAgPSBlbGVtWyBvbnR5cGUgXTsKKwor
ICAgICAgICAgICAgICAgICAgICBpZiAoIHRtcCApIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGVsZW1bIG9udHlwZSBdID0gbnVsbDsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgICAgICAgIC8vIFByZXZlbnQgcmUtdHJpZ2dlcmluZyBvZiB0aGUgc2FtZSBldmVudCwg
c2luY2Ugd2UgYWxyZWFkeSBidWJibGVkIGl0IGFib3ZlCisgICAgICAgICAgICAgICAgICAgIGpR
dWVyeS5ldmVudC50cmlnZ2VyZWQgPSB0eXBlOworICAgICAgICAgICAgICAgICAgICBlbGVtWyB0
eXBlIF0oKTsKKyAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmV2ZW50LnRyaWdnZXJlZCA9IHVu
ZGVmaW5lZDsKKworICAgICAgICAgICAgICAgICAgICBpZiAoIHRtcCApIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGVsZW1bIG9udHlwZSBdID0gdG1wOworICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAg
cmV0dXJuIGV2ZW50LnJlc3VsdDsKKyAgICB9LAorCisgICAgLy8gUGlnZ3liYWNrIG9uIGEgZG9u
b3IgZXZlbnQgdG8gc2ltdWxhdGUgYSBkaWZmZXJlbnQgb25lCisgICAgLy8gVXNlZCBvbmx5IGZv
ciBgZm9jdXMoaW4gfCBvdXQpYCBldmVudHMKKyAgICBzaW11bGF0ZTogZnVuY3Rpb24oIHR5cGUs
IGVsZW0sIGV2ZW50ICkgeworICAgICAgICB2YXIgZSA9IGpRdWVyeS5leHRlbmQoCisgICAgICAg
ICAgICBuZXcgalF1ZXJ5LkV2ZW50KCksCisgICAgICAgICAgICBldmVudCwKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICB0eXBlOiB0eXBlLAorICAgICAgICAgICAgICAgIGlzU2ltdWxh
dGVkOiB0cnVlCisgICAgICAgICAgICB9CisgICAgICAgICk7CisKKyAgICAgICAgalF1ZXJ5LmV2
ZW50LnRyaWdnZXIoIGUsIG51bGwsIGVsZW0gKTsKKyAgICB9CisKK30gKTsKKworalF1ZXJ5LmZu
LmV4dGVuZCggeworCisgICAgdHJpZ2dlcjogZnVuY3Rpb24oIHR5cGUsIGRhdGEgKSB7CisgICAg
ICAgIHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgalF1ZXJ5LmV2
ZW50LnRyaWdnZXIoIHR5cGUsIGRhdGEsIHRoaXMgKTsKKyAgICAgICAgfSApOworICAgIH0sCisg
ICAgdHJpZ2dlckhhbmRsZXI6IGZ1bmN0aW9uKCB0eXBlLCBkYXRhICkgeworICAgICAgICB2YXIg
ZWxlbSA9IHRoaXNbIDAgXTsKKyAgICAgICAgaWYgKCBlbGVtICkgeworICAgICAgICAgICAgcmV0
dXJuIGpRdWVyeS5ldmVudC50cmlnZ2VyKCB0eXBlLCBkYXRhLCBlbGVtLCB0cnVlICk7CisgICAg
ICAgIH0KKyAgICB9Cit9ICk7CisKKworalF1ZXJ5LmVhY2goICggImJsdXIgZm9jdXMgZm9jdXNp
biBmb2N1c291dCByZXNpemUgc2Nyb2xsIGNsaWNrIGRibGNsaWNrICIgKworICAgICJtb3VzZWRv
d24gbW91c2V1cCBtb3VzZW1vdmUgbW91c2VvdmVyIG1vdXNlb3V0IG1vdXNlZW50ZXIgbW91c2Vs
ZWF2ZSAiICsKKyAgICAiY2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1
cCBjb250ZXh0bWVudSIgKS5zcGxpdCggIiAiICksCisgICAgZnVuY3Rpb24oIGksIG5hbWUgKSB7
CisKKyAgICAvLyBIYW5kbGUgZXZlbnQgYmluZGluZworICAgIGpRdWVyeS5mblsgbmFtZSBdID0g
ZnVuY3Rpb24oIGRhdGEsIGZuICkgeworICAgICAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA+
IDAgPworICAgICAgICAgICAgdGhpcy5vbiggbmFtZSwgbnVsbCwgZGF0YSwgZm4gKSA6CisgICAg
ICAgICAgICB0aGlzLnRyaWdnZXIoIG5hbWUgKTsKKyAgICB9OworfSApOworCitqUXVlcnkuZm4u
ZXh0ZW5kKCB7CisgICAgaG92ZXI6IGZ1bmN0aW9uKCBmbk92ZXIsIGZuT3V0ICkgeworICAgICAg
ICByZXR1cm4gdGhpcy5tb3VzZWVudGVyKCBmbk92ZXIgKS5tb3VzZWxlYXZlKCBmbk91dCB8fCBm
bk92ZXIgKTsKKyAgICB9Cit9ICk7CisKKworCisKK3N1cHBvcnQuZm9jdXNpbiA9ICJvbmZvY3Vz
aW4iIGluIHdpbmRvdzsKKworCisvLyBTdXBwb3J0OiBGaXJlZm94IDw9NDQKKy8vIEZpcmVmb3gg
ZG9lc24ndCBoYXZlIGZvY3VzKGluIHwgb3V0KSBldmVudHMKKy8vIFJlbGF0ZWQgdGlja2V0IC0g
aHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg3Nzg3CisvLwor
Ly8gU3VwcG9ydDogQ2hyb21lIDw9NDggLSA0OSwgU2FmYXJpIDw9OS4wIC0gOS4xCisvLyBmb2N1
cyhpbiB8IG91dCkgZXZlbnRzIGZpcmUgYWZ0ZXIgZm9jdXMgJiBibHVyIGV2ZW50cywKKy8vIHdo
aWNoIGlzIHNwZWMgdmlvbGF0aW9uIC0gaHR0cDovL3d3dy53My5vcmcvVFIvRE9NLUxldmVsLTMt
RXZlbnRzLyNldmVudHMtZm9jdXNldmVudC1ldmVudC1vcmRlcgorLy8gUmVsYXRlZCB0aWNrZXQg
LSBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD00
NDk4NTcKK2lmICggIXN1cHBvcnQuZm9jdXNpbiApIHsKKyAgICBqUXVlcnkuZWFjaCggeyBmb2N1
czogImZvY3VzaW4iLCBibHVyOiAiZm9jdXNvdXQiIH0sIGZ1bmN0aW9uKCBvcmlnLCBmaXggKSB7
CisKKyAgICAgICAgLy8gQXR0YWNoIGEgc2luZ2xlIGNhcHR1cmluZyBoYW5kbGVyIG9uIHRoZSBk
b2N1bWVudCB3aGlsZSBzb21lb25lIHdhbnRzIGZvY3VzaW4vZm9jdXNvdXQKKyAgICAgICAgdmFy
IGhhbmRsZXIgPSBmdW5jdGlvbiggZXZlbnQgKSB7CisgICAgICAgICAgICBqUXVlcnkuZXZlbnQu
c2ltdWxhdGUoIGZpeCwgZXZlbnQudGFyZ2V0LCBqUXVlcnkuZXZlbnQuZml4KCBldmVudCApICk7
CisgICAgICAgIH07CisKKyAgICAgICAgalF1ZXJ5LmV2ZW50LnNwZWNpYWxbIGZpeCBdID0gewor
ICAgICAgICAgICAgc2V0dXA6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHZhciBkb2Mg
PSB0aGlzLm93bmVyRG9jdW1lbnQgfHwgdGhpcywKKyAgICAgICAgICAgICAgICAgICAgYXR0YWNo
ZXMgPSBkYXRhUHJpdi5hY2Nlc3MoIGRvYywgZml4ICk7CisKKyAgICAgICAgICAgICAgICBpZiAo
ICFhdHRhY2hlcyApIHsKKyAgICAgICAgICAgICAgICAgICAgZG9jLmFkZEV2ZW50TGlzdGVuZXIo
IG9yaWcsIGhhbmRsZXIsIHRydWUgKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgZGF0YVByaXYuYWNjZXNzKCBkb2MsIGZpeCwgKCBhdHRhY2hlcyB8fCAwICkgKyAxICk7Cisg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgdGVhcmRvd246IGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgICAgIHZhciBkb2MgPSB0aGlzLm93bmVyRG9jdW1lbnQgfHwgdGhpcywKKyAgICAgICAg
ICAgICAgICAgICAgYXR0YWNoZXMgPSBkYXRhUHJpdi5hY2Nlc3MoIGRvYywgZml4ICkgLSAxOwor
CisgICAgICAgICAgICAgICAgaWYgKCAhYXR0YWNoZXMgKSB7CisgICAgICAgICAgICAgICAgICAg
IGRvYy5yZW1vdmVFdmVudExpc3RlbmVyKCBvcmlnLCBoYW5kbGVyLCB0cnVlICk7CisgICAgICAg
ICAgICAgICAgICAgIGRhdGFQcml2LnJlbW92ZSggZG9jLCBmaXggKTsKKworICAgICAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGRhdGFQcml2LmFjY2VzcyggZG9jLCBm
aXgsIGF0dGFjaGVzICk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAg
ICB9OworICAgIH0gKTsKK30KK3ZhciBsb2NhdGlvbiA9IHdpbmRvdy5sb2NhdGlvbjsKKwordmFy
IG5vbmNlID0galF1ZXJ5Lm5vdygpOworCit2YXIgcnF1ZXJ5ID0gKCAvXD8vICk7CisKKworCisv
LyBDcm9zcy1icm93c2VyIHhtbCBwYXJzaW5nCitqUXVlcnkucGFyc2VYTUwgPSBmdW5jdGlvbigg
ZGF0YSApIHsKKyAgICB2YXIgeG1sOworICAgIGlmICggIWRhdGEgfHwgdHlwZW9mIGRhdGEgIT09
ICJzdHJpbmciICkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICAvLyBTdXBw
b3J0OiBJRSA5IC0gMTEgb25seQorICAgIC8vIElFIHRocm93cyBvbiBwYXJzZUZyb21TdHJpbmcg
d2l0aCBpbnZhbGlkIGlucHV0LgorICAgIHRyeSB7CisgICAgICAgIHhtbCA9ICggbmV3IHdpbmRv
dy5ET01QYXJzZXIoKSApLnBhcnNlRnJvbVN0cmluZyggZGF0YSwgInRleHQveG1sIiApOworICAg
IH0gY2F0Y2ggKCBlICkgeworICAgICAgICB4bWwgPSB1bmRlZmluZWQ7CisgICAgfQorCisgICAg
aWYgKCAheG1sIHx8IHhtbC5nZXRFbGVtZW50c0J5VGFnTmFtZSggInBhcnNlcmVycm9yIiApLmxl
bmd0aCApIHsKKyAgICAgICAgalF1ZXJ5LmVycm9yKCAiSW52YWxpZCBYTUw6ICIgKyBkYXRhICk7
CisgICAgfQorICAgIHJldHVybiB4bWw7Cit9OworCisKK3ZhcgorICAgIHJicmFja2V0ID0gL1xb
XF0kLywKKyAgICByQ1JMRiA9IC9ccj9cbi9nLAorICAgIHJzdWJtaXR0ZXJUeXBlcyA9IC9eKD86
c3VibWl0fGJ1dHRvbnxpbWFnZXxyZXNldHxmaWxlKSQvaSwKKyAgICByc3VibWl0dGFibGUgPSAv
Xig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxrZXlnZW4pL2k7CisKK2Z1bmN0aW9uIGJ1aWxkUGFy
YW1zKCBwcmVmaXgsIG9iaiwgdHJhZGl0aW9uYWwsIGFkZCApIHsKKyAgICB2YXIgbmFtZTsKKwor
ICAgIGlmICggalF1ZXJ5LmlzQXJyYXkoIG9iaiApICkgeworCisgICAgICAgIC8vIFNlcmlhbGl6
ZSBhcnJheSBpdGVtLgorICAgICAgICBqUXVlcnkuZWFjaCggb2JqLCBmdW5jdGlvbiggaSwgdiAp
IHsKKyAgICAgICAgICAgIGlmICggdHJhZGl0aW9uYWwgfHwgcmJyYWNrZXQudGVzdCggcHJlZml4
ICkgKSB7CisKKyAgICAgICAgICAgICAgICAvLyBUcmVhdCBlYWNoIGFycmF5IGl0ZW0gYXMgYSBz
Y2FsYXIuCisgICAgICAgICAgICAgICAgYWRkKCBwcmVmaXgsIHYgKTsKKworICAgICAgICAgICAg
fSBlbHNlIHsKKworICAgICAgICAgICAgICAgIC8vIEl0ZW0gaXMgbm9uLXNjYWxhciAoYXJyYXkg
b3Igb2JqZWN0KSwgZW5jb2RlIGl0cyBudW1lcmljIGluZGV4LgorICAgICAgICAgICAgICAgIGJ1
aWxkUGFyYW1zKAorICAgICAgICAgICAgICAgICAgICBwcmVmaXggKyAiWyIgKyAoIHR5cGVvZiB2
ID09PSAib2JqZWN0IiAmJiB2ICE9IG51bGwgPyBpIDogIiIgKSArICJdIiwKKyAgICAgICAgICAg
ICAgICAgICAgdiwKKyAgICAgICAgICAgICAgICAgICAgdHJhZGl0aW9uYWwsCisgICAgICAgICAg
ICAgICAgICAgIGFkZAorICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0gKTsKKworICAgIH0gZWxzZSBpZiAoICF0cmFkaXRpb25hbCAmJiBqUXVlcnkudHlwZSggb2Jq
ICkgPT09ICJvYmplY3QiICkgeworCisgICAgICAgIC8vIFNlcmlhbGl6ZSBvYmplY3QgaXRlbS4K
KyAgICAgICAgZm9yICggbmFtZSBpbiBvYmogKSB7CisgICAgICAgICAgICBidWlsZFBhcmFtcygg
cHJlZml4ICsgIlsiICsgbmFtZSArICJdIiwgb2JqWyBuYW1lIF0sIHRyYWRpdGlvbmFsLCBhZGQg
KTsKKyAgICAgICAgfQorCisgICAgfSBlbHNlIHsKKworICAgICAgICAvLyBTZXJpYWxpemUgc2Nh
bGFyIGl0ZW0uCisgICAgICAgIGFkZCggcHJlZml4LCBvYmogKTsKKyAgICB9Cit9CisKKy8vIFNl
cmlhbGl6ZSBhbiBhcnJheSBvZiBmb3JtIGVsZW1lbnRzIG9yIGEgc2V0IG9mCisvLyBrZXkvdmFs
dWVzIGludG8gYSBxdWVyeSBzdHJpbmcKK2pRdWVyeS5wYXJhbSA9IGZ1bmN0aW9uKCBhLCB0cmFk
aXRpb25hbCApIHsKKyAgICB2YXIgcHJlZml4LAorICAgICAgICBzID0gW10sCisgICAgICAgIGFk
ZCA9IGZ1bmN0aW9uKCBrZXksIHZhbHVlT3JGdW5jdGlvbiApIHsKKworICAgICAgICAgICAgLy8g
SWYgdmFsdWUgaXMgYSBmdW5jdGlvbiwgaW52b2tlIGl0IGFuZCB1c2UgaXRzIHJldHVybiB2YWx1
ZQorICAgICAgICAgICAgdmFyIHZhbHVlID0galF1ZXJ5LmlzRnVuY3Rpb24oIHZhbHVlT3JGdW5j
dGlvbiApID8KKyAgICAgICAgICAgICAgICB2YWx1ZU9yRnVuY3Rpb24oKSA6CisgICAgICAgICAg
ICAgICAgdmFsdWVPckZ1bmN0aW9uOworCisgICAgICAgICAgICBzWyBzLmxlbmd0aCBdID0gZW5j
b2RlVVJJQ29tcG9uZW50KCBrZXkgKSArICI9IiArCisgICAgICAgICAgICAgICAgZW5jb2RlVVJJ
Q29tcG9uZW50KCB2YWx1ZSA9PSBudWxsID8gIiIgOiB2YWx1ZSApOworICAgICAgICB9OworCisg
ICAgLy8gSWYgYW4gYXJyYXkgd2FzIHBhc3NlZCBpbiwgYXNzdW1lIHRoYXQgaXQgaXMgYW4gYXJy
YXkgb2YgZm9ybSBlbGVtZW50cy4KKyAgICBpZiAoIGpRdWVyeS5pc0FycmF5KCBhICkgfHwgKCBh
LmpxdWVyeSAmJiAhalF1ZXJ5LmlzUGxhaW5PYmplY3QoIGEgKSApICkgeworCisgICAgICAgIC8v
IFNlcmlhbGl6ZSB0aGUgZm9ybSBlbGVtZW50cworICAgICAgICBqUXVlcnkuZWFjaCggYSwgZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICBhZGQoIHRoaXMubmFtZSwgdGhpcy52YWx1ZSApOworICAg
ICAgICB9ICk7CisKKyAgICB9IGVsc2UgeworCisgICAgICAgIC8vIElmIHRyYWRpdGlvbmFsLCBl
bmNvZGUgdGhlICJvbGQiIHdheSAodGhlIHdheSAxLjMuMiBvciBvbGRlcgorICAgICAgICAvLyBk
aWQgaXQpLCBvdGhlcndpc2UgZW5jb2RlIHBhcmFtcyByZWN1cnNpdmVseS4KKyAgICAgICAgZm9y
ICggcHJlZml4IGluIGEgKSB7CisgICAgICAgICAgICBidWlsZFBhcmFtcyggcHJlZml4LCBhWyBw
cmVmaXggXSwgdHJhZGl0aW9uYWwsIGFkZCApOworICAgICAgICB9CisgICAgfQorCisgICAgLy8g
UmV0dXJuIHRoZSByZXN1bHRpbmcgc2VyaWFsaXphdGlvbgorICAgIHJldHVybiBzLmpvaW4oICIm
IiApOworfTsKKworalF1ZXJ5LmZuLmV4dGVuZCggeworICAgIHNlcmlhbGl6ZTogZnVuY3Rpb24o
KSB7CisgICAgICAgIHJldHVybiBqUXVlcnkucGFyYW0oIHRoaXMuc2VyaWFsaXplQXJyYXkoKSAp
OworICAgIH0sCisgICAgc2VyaWFsaXplQXJyYXk6IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1
cm4gdGhpcy5tYXAoIGZ1bmN0aW9uKCkgeworCisgICAgICAgICAgICAvLyBDYW4gYWRkIHByb3BI
b29rIGZvciAiZWxlbWVudHMiIHRvIGZpbHRlciBvciBhZGQgZm9ybSBlbGVtZW50cworICAgICAg
ICAgICAgdmFyIGVsZW1lbnRzID0galF1ZXJ5LnByb3AoIHRoaXMsICJlbGVtZW50cyIgKTsKKyAg
ICAgICAgICAgIHJldHVybiBlbGVtZW50cyA/IGpRdWVyeS5tYWtlQXJyYXkoIGVsZW1lbnRzICkg
OiB0aGlzOworICAgICAgICB9ICkKKyAgICAgICAgLmZpbHRlciggZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICB2YXIgdHlwZSA9IHRoaXMudHlwZTsKKworICAgICAgICAgICAgLy8gVXNlIC5pcygg
IjpkaXNhYmxlZCIgKSBzbyB0aGF0IGZpZWxkc2V0W2Rpc2FibGVkXSB3b3JrcworICAgICAgICAg
ICAgcmV0dXJuIHRoaXMubmFtZSAmJiAhalF1ZXJ5KCB0aGlzICkuaXMoICI6ZGlzYWJsZWQiICkg
JiYKKyAgICAgICAgICAgICAgICByc3VibWl0dGFibGUudGVzdCggdGhpcy5ub2RlTmFtZSApICYm
ICFyc3VibWl0dGVyVHlwZXMudGVzdCggdHlwZSApICYmCisgICAgICAgICAgICAgICAgKCB0aGlz
LmNoZWNrZWQgfHwgIXJjaGVja2FibGVUeXBlLnRlc3QoIHR5cGUgKSApOworICAgICAgICB9ICkK
KyAgICAgICAgLm1hcCggZnVuY3Rpb24oIGksIGVsZW0gKSB7CisgICAgICAgICAgICB2YXIgdmFs
ID0galF1ZXJ5KCB0aGlzICkudmFsKCk7CisKKyAgICAgICAgICAgIGlmICggdmFsID09IG51bGwg
KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGlmICggalF1ZXJ5LmlzQXJyYXkoIHZhbCApICkgeworICAgICAgICAgICAgICAgIHJl
dHVybiBqUXVlcnkubWFwKCB2YWwsIGZ1bmN0aW9uKCB2YWwgKSB7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB7IG5hbWU6IGVsZW0ubmFtZSwgdmFsdWU6IHZhbC5yZXBsYWNlKCByQ1JMRiwg
IlxyXG4iICkgfTsKKyAgICAgICAgICAgICAgICB9ICk7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHJldHVybiB7IG5hbWU6IGVsZW0ubmFtZSwgdmFsdWU6IHZhbC5yZXBsYWNlKCByQ1JM
RiwgIlxyXG4iICkgfTsKKyAgICAgICAgfSApLmdldCgpOworICAgIH0KK30gKTsKKworCit2YXIK
KyAgICByMjAgPSAvJTIwL2csCisgICAgcmhhc2ggPSAvIy4qJC8sCisgICAgcmFudGlDYWNoZSA9
IC8oWz8mXSlfPVteJl0qLywKKyAgICByaGVhZGVycyA9IC9eKC4qPyk6WyBcdF0qKFteXHJcbl0q
KSQvbWcsCisKKyAgICAvLyAjNzY1MywgIzgxMjUsICM4MTUyOiBsb2NhbCBwcm90b2NvbCBkZXRl
Y3Rpb24KKyAgICBybG9jYWxQcm90b2NvbCA9IC9eKD86YWJvdXR8YXBwfGFwcC1zdG9yYWdlfC4r
LWV4dGVuc2lvbnxmaWxlfHJlc3x3aWRnZXQpOiQvLAorICAgIHJub0NvbnRlbnQgPSAvXig/OkdF
VHxIRUFEKSQvLAorICAgIHJwcm90b2NvbCA9IC9eXC9cLy8sCisKKyAgICAvKiBQcmVmaWx0ZXJz
CisgICAgICogMSkgVGhleSBhcmUgdXNlZnVsIHRvIGludHJvZHVjZSBjdXN0b20gZGF0YVR5cGVz
IChzZWUgYWpheC9qc29ucC5qcyBmb3IgYW4gZXhhbXBsZSkKKyAgICAgKiAyKSBUaGVzZSBhcmUg
Y2FsbGVkOgorICAgICAqICAgIC0gQkVGT1JFIGFza2luZyBmb3IgYSB0cmFuc3BvcnQKKyAgICAg
KiAgICAtIEFGVEVSIHBhcmFtIHNlcmlhbGl6YXRpb24gKHMuZGF0YSBpcyBhIHN0cmluZyBpZiBz
LnByb2Nlc3NEYXRhIGlzIHRydWUpCisgICAgICogMykga2V5IGlzIHRoZSBkYXRhVHlwZQorICAg
ICAqIDQpIHRoZSBjYXRjaGFsbCBzeW1ib2wgIioiIGNhbiBiZSB1c2VkCisgICAgICogNSkgZXhl
Y3V0aW9uIHdpbGwgc3RhcnQgd2l0aCB0cmFuc3BvcnQgZGF0YVR5cGUgYW5kIFRIRU4gY29udGlu
dWUgZG93biB0byAiKiIgaWYgbmVlZGVkCisgICAgICovCisgICAgcHJlZmlsdGVycyA9IHt9LAor
CisgICAgLyogVHJhbnNwb3J0cyBiaW5kaW5ncworICAgICAqIDEpIGtleSBpcyB0aGUgZGF0YVR5
cGUKKyAgICAgKiAyKSB0aGUgY2F0Y2hhbGwgc3ltYm9sICIqIiBjYW4gYmUgdXNlZAorICAgICAq
IDMpIHNlbGVjdGlvbiB3aWxsIHN0YXJ0IHdpdGggdHJhbnNwb3J0IGRhdGFUeXBlIGFuZCBUSEVO
IGdvIHRvICIqIiBpZiBuZWVkZWQKKyAgICAgKi8KKyAgICB0cmFuc3BvcnRzID0ge30sCisKKyAg
ICAvLyBBdm9pZCBjb21tZW50LXByb2xvZyBjaGFyIHNlcXVlbmNlICgjMTAwOTgpOyBtdXN0IGFw
cGVhc2UgbGludCBhbmQgZXZhZGUgY29tcHJlc3Npb24KKyAgICBhbGxUeXBlcyA9ICIqLyIuY29u
Y2F0KCAiKiIgKSwKKworICAgIC8vIEFuY2hvciB0YWcgZm9yIHBhcnNpbmcgdGhlIGRvY3VtZW50
IG9yaWdpbgorICAgIG9yaWdpbkFuY2hvciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoICJhIiAp
OworICAgIG9yaWdpbkFuY2hvci5ocmVmID0gbG9jYXRpb24uaHJlZjsKKworLy8gQmFzZSAiY29u
c3RydWN0b3IiIGZvciBqUXVlcnkuYWpheFByZWZpbHRlciBhbmQgalF1ZXJ5LmFqYXhUcmFuc3Bv
cnQKK2Z1bmN0aW9uIGFkZFRvUHJlZmlsdGVyc09yVHJhbnNwb3J0cyggc3RydWN0dXJlICkgewor
CisgICAgLy8gZGF0YVR5cGVFeHByZXNzaW9uIGlzIG9wdGlvbmFsIGFuZCBkZWZhdWx0cyB0byAi
KiIKKyAgICByZXR1cm4gZnVuY3Rpb24oIGRhdGFUeXBlRXhwcmVzc2lvbiwgZnVuYyApIHsKKwor
ICAgICAgICBpZiAoIHR5cGVvZiBkYXRhVHlwZUV4cHJlc3Npb24gIT09ICJzdHJpbmciICkgewor
ICAgICAgICAgICAgZnVuYyA9IGRhdGFUeXBlRXhwcmVzc2lvbjsKKyAgICAgICAgICAgIGRhdGFU
eXBlRXhwcmVzc2lvbiA9ICIqIjsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBkYXRhVHlwZSwK
KyAgICAgICAgICAgIGkgPSAwLAorICAgICAgICAgICAgZGF0YVR5cGVzID0gZGF0YVR5cGVFeHBy
ZXNzaW9uLnRvTG93ZXJDYXNlKCkubWF0Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbXTsKKworICAg
ICAgICBpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBmdW5jICkgKSB7CisKKyAgICAgICAgICAgIC8v
IEZvciBlYWNoIGRhdGFUeXBlIGluIHRoZSBkYXRhVHlwZUV4cHJlc3Npb24KKyAgICAgICAgICAg
IHdoaWxlICggKCBkYXRhVHlwZSA9IGRhdGFUeXBlc1sgaSsrIF0gKSApIHsKKworICAgICAgICAg
ICAgICAgIC8vIFByZXBlbmQgaWYgcmVxdWVzdGVkCisgICAgICAgICAgICAgICAgaWYgKCBkYXRh
VHlwZVsgMCBdID09PSAiKyIgKSB7CisgICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlID0gZGF0
YVR5cGUuc2xpY2UoIDEgKSB8fCAiKiI7CisgICAgICAgICAgICAgICAgICAgICggc3RydWN0dXJl
WyBkYXRhVHlwZSBdID0gc3RydWN0dXJlWyBkYXRhVHlwZSBdIHx8IFtdICkudW5zaGlmdCggZnVu
YyApOworCisgICAgICAgICAgICAgICAgLy8gT3RoZXJ3aXNlIGFwcGVuZAorICAgICAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICggc3RydWN0dXJlWyBkYXRhVHlwZSBd
ID0gc3RydWN0dXJlWyBkYXRhVHlwZSBdIHx8IFtdICkucHVzaCggZnVuYyApOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH07Cit9CisKKy8vIEJhc2Ug
aW5zcGVjdGlvbiBmdW5jdGlvbiBmb3IgcHJlZmlsdGVycyBhbmQgdHJhbnNwb3J0cworZnVuY3Rp
b24gaW5zcGVjdFByZWZpbHRlcnNPclRyYW5zcG9ydHMoIHN0cnVjdHVyZSwgb3B0aW9ucywgb3Jp
Z2luYWxPcHRpb25zLCBqcVhIUiApIHsKKworICAgIHZhciBpbnNwZWN0ZWQgPSB7fSwKKyAgICAg
ICAgc2Vla2luZ1RyYW5zcG9ydCA9ICggc3RydWN0dXJlID09PSB0cmFuc3BvcnRzICk7CisKKyAg
ICBmdW5jdGlvbiBpbnNwZWN0KCBkYXRhVHlwZSApIHsKKyAgICAgICAgdmFyIHNlbGVjdGVkOwor
ICAgICAgICBpbnNwZWN0ZWRbIGRhdGFUeXBlIF0gPSB0cnVlOworICAgICAgICBqUXVlcnkuZWFj
aCggc3RydWN0dXJlWyBkYXRhVHlwZSBdIHx8IFtdLCBmdW5jdGlvbiggXywgcHJlZmlsdGVyT3JG
YWN0b3J5ICkgeworICAgICAgICAgICAgdmFyIGRhdGFUeXBlT3JUcmFuc3BvcnQgPSBwcmVmaWx0
ZXJPckZhY3RvcnkoIG9wdGlvbnMsIG9yaWdpbmFsT3B0aW9ucywganFYSFIgKTsKKyAgICAgICAg
ICAgIGlmICggdHlwZW9mIGRhdGFUeXBlT3JUcmFuc3BvcnQgPT09ICJzdHJpbmciICYmCisgICAg
ICAgICAgICAgICAgIXNlZWtpbmdUcmFuc3BvcnQgJiYgIWluc3BlY3RlZFsgZGF0YVR5cGVPclRy
YW5zcG9ydCBdICkgeworCisgICAgICAgICAgICAgICAgb3B0aW9ucy5kYXRhVHlwZXMudW5zaGlm
dCggZGF0YVR5cGVPclRyYW5zcG9ydCApOworICAgICAgICAgICAgICAgIGluc3BlY3QoIGRhdGFU
eXBlT3JUcmFuc3BvcnQgKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICB9IGVsc2UgaWYgKCBzZWVraW5nVHJhbnNwb3J0ICkgeworICAgICAgICAgICAgICAgIHJl
dHVybiAhKCBzZWxlY3RlZCA9IGRhdGFUeXBlT3JUcmFuc3BvcnQgKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfSApOworICAgICAgICByZXR1cm4gc2VsZWN0ZWQ7CisgICAgfQorCisgICAgcmV0
dXJuIGluc3BlY3QoIG9wdGlvbnMuZGF0YVR5cGVzWyAwIF0gKSB8fCAhaW5zcGVjdGVkWyAiKiIg
XSAmJiBpbnNwZWN0KCAiKiIgKTsKK30KKworLy8gQSBzcGVjaWFsIGV4dGVuZCBmb3IgYWpheCBv
cHRpb25zCisvLyB0aGF0IHRha2VzICJmbGF0IiBvcHRpb25zIChub3QgdG8gYmUgZGVlcCBleHRl
bmRlZCkKKy8vIEZpeGVzICM5ODg3CitmdW5jdGlvbiBhamF4RXh0ZW5kKCB0YXJnZXQsIHNyYyAp
IHsKKyAgICB2YXIga2V5LCBkZWVwLAorICAgICAgICBmbGF0T3B0aW9ucyA9IGpRdWVyeS5hamF4
U2V0dGluZ3MuZmxhdE9wdGlvbnMgfHwge307CisKKyAgICBmb3IgKCBrZXkgaW4gc3JjICkgewor
ICAgICAgICBpZiAoIHNyY1sga2V5IF0gIT09IHVuZGVmaW5lZCApIHsKKyAgICAgICAgICAgICgg
ZmxhdE9wdGlvbnNbIGtleSBdID8gdGFyZ2V0IDogKCBkZWVwIHx8ICggZGVlcCA9IHt9ICkgKSAp
WyBrZXkgXSA9IHNyY1sga2V5IF07CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKCBkZWVwICkg
eworICAgICAgICBqUXVlcnkuZXh0ZW5kKCB0cnVlLCB0YXJnZXQsIGRlZXAgKTsKKyAgICB9CisK
KyAgICByZXR1cm4gdGFyZ2V0OworfQorCisvKiBIYW5kbGVzIHJlc3BvbnNlcyB0byBhbiBhamF4
IHJlcXVlc3Q6CisgKiAtIGZpbmRzIHRoZSByaWdodCBkYXRhVHlwZSAobWVkaWF0ZXMgYmV0d2Vl
biBjb250ZW50LXR5cGUgYW5kIGV4cGVjdGVkIGRhdGFUeXBlKQorICogLSByZXR1cm5zIHRoZSBj
b3JyZXNwb25kaW5nIHJlc3BvbnNlCisgKi8KK2Z1bmN0aW9uIGFqYXhIYW5kbGVSZXNwb25zZXMo
IHMsIGpxWEhSLCByZXNwb25zZXMgKSB7CisKKyAgICB2YXIgY3QsIHR5cGUsIGZpbmFsRGF0YVR5
cGUsIGZpcnN0RGF0YVR5cGUsCisgICAgICAgIGNvbnRlbnRzID0gcy5jb250ZW50cywKKyAgICAg
ICAgZGF0YVR5cGVzID0gcy5kYXRhVHlwZXM7CisKKyAgICAvLyBSZW1vdmUgYXV0byBkYXRhVHlw
ZSBhbmQgZ2V0IGNvbnRlbnQtdHlwZSBpbiB0aGUgcHJvY2VzcworICAgIHdoaWxlICggZGF0YVR5
cGVzWyAwIF0gPT09ICIqIiApIHsKKyAgICAgICAgZGF0YVR5cGVzLnNoaWZ0KCk7CisgICAgICAg
IGlmICggY3QgPT09IHVuZGVmaW5lZCApIHsKKyAgICAgICAgICAgIGN0ID0gcy5taW1lVHlwZSB8
fCBqcVhIUi5nZXRSZXNwb25zZUhlYWRlciggIkNvbnRlbnQtVHlwZSIgKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIC8vIENoZWNrIGlmIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIGtub3duIGNvbnRl
bnQtdHlwZQorICAgIGlmICggY3QgKSB7CisgICAgICAgIGZvciAoIHR5cGUgaW4gY29udGVudHMg
KSB7CisgICAgICAgICAgICBpZiAoIGNvbnRlbnRzWyB0eXBlIF0gJiYgY29udGVudHNbIHR5cGUg
XS50ZXN0KCBjdCApICkgeworICAgICAgICAgICAgICAgIGRhdGFUeXBlcy51bnNoaWZ0KCB0eXBl
ICk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICAvLyBDaGVjayB0byBzZWUgaWYgd2UgaGF2ZSBhIHJlc3BvbnNlIGZvciB0aGUg
ZXhwZWN0ZWQgZGF0YVR5cGUKKyAgICBpZiAoIGRhdGFUeXBlc1sgMCBdIGluIHJlc3BvbnNlcyAp
IHsKKyAgICAgICAgZmluYWxEYXRhVHlwZSA9IGRhdGFUeXBlc1sgMCBdOworICAgIH0gZWxzZSB7
CisKKyAgICAgICAgLy8gVHJ5IGNvbnZlcnRpYmxlIGRhdGFUeXBlcworICAgICAgICBmb3IgKCB0
eXBlIGluIHJlc3BvbnNlcyApIHsKKyAgICAgICAgICAgIGlmICggIWRhdGFUeXBlc1sgMCBdIHx8
IHMuY29udmVydGVyc1sgdHlwZSArICIgIiArIGRhdGFUeXBlc1sgMCBdIF0gKSB7CisgICAgICAg
ICAgICAgICAgZmluYWxEYXRhVHlwZSA9IHR5cGU7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoICFmaXJzdERhdGFUeXBlICkgeworICAgICAg
ICAgICAgICAgIGZpcnN0RGF0YVR5cGUgPSB0eXBlOworICAgICAgICAgICAgfQorICAgICAgICB9
CisKKyAgICAgICAgLy8gT3IganVzdCB1c2UgZmlyc3Qgb25lCisgICAgICAgIGZpbmFsRGF0YVR5
cGUgPSBmaW5hbERhdGFUeXBlIHx8IGZpcnN0RGF0YVR5cGU7CisgICAgfQorCisgICAgLy8gSWYg
d2UgZm91bmQgYSBkYXRhVHlwZQorICAgIC8vIFdlIGFkZCB0aGUgZGF0YVR5cGUgdG8gdGhlIGxp
c3QgaWYgbmVlZGVkCisgICAgLy8gYW5kIHJldHVybiB0aGUgY29ycmVzcG9uZGluZyByZXNwb25z
ZQorICAgIGlmICggZmluYWxEYXRhVHlwZSApIHsKKyAgICAgICAgaWYgKCBmaW5hbERhdGFUeXBl
ICE9PSBkYXRhVHlwZXNbIDAgXSApIHsKKyAgICAgICAgICAgIGRhdGFUeXBlcy51bnNoaWZ0KCBm
aW5hbERhdGFUeXBlICk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3BvbnNlc1sgZmlu
YWxEYXRhVHlwZSBdOworICAgIH0KK30KKworLyogQ2hhaW4gY29udmVyc2lvbnMgZ2l2ZW4gdGhl
IHJlcXVlc3QgYW5kIHRoZSBvcmlnaW5hbCByZXNwb25zZQorICogQWxzbyBzZXRzIHRoZSByZXNw
b25zZVhYWCBmaWVsZHMgb24gdGhlIGpxWEhSIGluc3RhbmNlCisgKi8KK2Z1bmN0aW9uIGFqYXhD
b252ZXJ0KCBzLCByZXNwb25zZSwganFYSFIsIGlzU3VjY2VzcyApIHsKKyAgICB2YXIgY29udjIs
IGN1cnJlbnQsIGNvbnYsIHRtcCwgcHJldiwKKyAgICAgICAgY29udmVydGVycyA9IHt9LAorCisg
ICAgICAgIC8vIFdvcmsgd2l0aCBhIGNvcHkgb2YgZGF0YVR5cGVzIGluIGNhc2Ugd2UgbmVlZCB0
byBtb2RpZnkgaXQgZm9yIGNvbnZlcnNpb24KKyAgICAgICAgZGF0YVR5cGVzID0gcy5kYXRhVHlw
ZXMuc2xpY2UoKTsKKworICAgIC8vIENyZWF0ZSBjb252ZXJ0ZXJzIG1hcCB3aXRoIGxvd2VyY2Fz
ZWQga2V5cworICAgIGlmICggZGF0YVR5cGVzWyAxIF0gKSB7CisgICAgICAgIGZvciAoIGNvbnYg
aW4gcy5jb252ZXJ0ZXJzICkgeworICAgICAgICAgICAgY29udmVydGVyc1sgY29udi50b0xvd2Vy
Q2FzZSgpIF0gPSBzLmNvbnZlcnRlcnNbIGNvbnYgXTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IGN1cnJlbnQgPSBkYXRhVHlwZXMuc2hpZnQoKTsKKworICAgIC8vIENvbnZlcnQgdG8gZWFjaCBz
ZXF1ZW50aWFsIGRhdGFUeXBlCisgICAgd2hpbGUgKCBjdXJyZW50ICkgeworCisgICAgICAgIGlm
ICggcy5yZXNwb25zZUZpZWxkc1sgY3VycmVudCBdICkgeworICAgICAgICAgICAganFYSFJbIHMu
cmVzcG9uc2VGaWVsZHNbIGN1cnJlbnQgXSBdID0gcmVzcG9uc2U7CisgICAgICAgIH0KKworICAg
ICAgICAvLyBBcHBseSB0aGUgZGF0YUZpbHRlciBpZiBwcm92aWRlZAorICAgICAgICBpZiAoICFw
cmV2ICYmIGlzU3VjY2VzcyAmJiBzLmRhdGFGaWx0ZXIgKSB7CisgICAgICAgICAgICByZXNwb25z
ZSA9IHMuZGF0YUZpbHRlciggcmVzcG9uc2UsIHMuZGF0YVR5cGUgKTsKKyAgICAgICAgfQorCisg
ICAgICAgIHByZXYgPSBjdXJyZW50OworICAgICAgICBjdXJyZW50ID0gZGF0YVR5cGVzLnNoaWZ0
KCk7CisKKyAgICAgICAgaWYgKCBjdXJyZW50ICkgeworCisgICAgICAgICAgICAvLyBUaGVyZSdz
IG9ubHkgd29yayB0byBkbyBpZiBjdXJyZW50IGRhdGFUeXBlIGlzIG5vbi1hdXRvCisgICAgICAg
ICAgICBpZiAoIGN1cnJlbnQgPT09ICIqIiApIHsKKworICAgICAgICAgICAgICAgIGN1cnJlbnQg
PSBwcmV2OworCisgICAgICAgICAgICAvLyBDb252ZXJ0IHJlc3BvbnNlIGlmIHByZXYgZGF0YVR5
cGUgaXMgbm9uLWF1dG8gYW5kIGRpZmZlcnMgZnJvbSBjdXJyZW50CisgICAgICAgICAgICB9IGVs
c2UgaWYgKCBwcmV2ICE9PSAiKiIgJiYgcHJldiAhPT0gY3VycmVudCApIHsKKworICAgICAgICAg
ICAgICAgIC8vIFNlZWsgYSBkaXJlY3QgY29udmVydGVyCisgICAgICAgICAgICAgICAgY29udiA9
IGNvbnZlcnRlcnNbIHByZXYgKyAiICIgKyBjdXJyZW50IF0gfHwgY29udmVydGVyc1sgIiogIiAr
IGN1cnJlbnQgXTsKKworICAgICAgICAgICAgICAgIC8vIElmIG5vbmUgZm91bmQsIHNlZWsgYSBw
YWlyCisgICAgICAgICAgICAgICAgaWYgKCAhY29udiApIHsKKyAgICAgICAgICAgICAgICAgICAg
Zm9yICggY29udjIgaW4gY29udmVydGVycyApIHsKKworICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gSWYgY29udjIgb3V0cHV0cyBjdXJyZW50CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAg
PSBjb252Mi5zcGxpdCggIiAiICk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHRtcFsg
MSBdID09PSBjdXJyZW50ICkgeworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYg
cHJldiBjYW4gYmUgY29udmVydGVkIHRvIGFjY2VwdGVkIGlucHV0CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29udiA9IGNvbnZlcnRlcnNbIHByZXYgKyAiICIgKyB0bXBbIDAgXSBdIHx8
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRlcnNbICIqICIgKyB0bXBb
IDAgXSBdOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggY29udiApIHsKKworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDb25kZW5zZSBlcXVpdmFsZW5jZSBjb252
ZXJ0ZXJzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggY29udiA9PT0gdHJ1
ZSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnYgPSBjb252ZXJ0
ZXJzWyBjb252MiBdOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE90aGVy
d2lzZSwgaW5zZXJ0IHRoZSBpbnRlcm1lZGlhdGUgZGF0YVR5cGUKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfSBlbHNlIGlmICggY29udmVydGVyc1sgY29udjIgXSAhPT0gdHJ1ZSAp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgPSB0bXBbIDAg
XTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlcy51bnNoaWZ0
KCB0bXBbIDEgXSApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIEFwcGx5IGNvbnZlcnRlciAo
aWYgbm90IGFuIGVxdWl2YWxlbmNlKQorICAgICAgICAgICAgICAgIGlmICggY29udiAhPT0gdHJ1
ZSApIHsKKworICAgICAgICAgICAgICAgICAgICAvLyBVbmxlc3MgZXJyb3JzIGFyZSBhbGxvd2Vk
IHRvIGJ1YmJsZSwgY2F0Y2ggYW5kIHJldHVybiB0aGVtCisgICAgICAgICAgICAgICAgICAgIGlm
ICggY29udiAmJiBzLnRocm93cyApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNl
ID0gY29udiggcmVzcG9uc2UgKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVz
cG9uc2UgPSBjb252KCByZXNwb25zZSApOworICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRj
aCAoIGUgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGU6ICJwYXJzZXJlcnJvciIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiBjb252ID8gZSA6ICJObyBjb252ZXJzaW9uIGZy
b20gIiArIHByZXYgKyAiIHRvICIgKyBjdXJyZW50CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAg
IHJldHVybiB7IHN0YXRlOiAic3VjY2VzcyIsIGRhdGE6IHJlc3BvbnNlIH07Cit9CisKK2pRdWVy
eS5leHRlbmQoIHsKKworICAgIC8vIENvdW50ZXIgZm9yIGhvbGRpbmcgdGhlIG51bWJlciBvZiBh
Y3RpdmUgcXVlcmllcworICAgIGFjdGl2ZTogMCwKKworICAgIC8vIExhc3QtTW9kaWZpZWQgaGVh
ZGVyIGNhY2hlIGZvciBuZXh0IHJlcXVlc3QKKyAgICBsYXN0TW9kaWZpZWQ6IHt9LAorICAgIGV0
YWc6IHt9LAorCisgICAgYWpheFNldHRpbmdzOiB7CisgICAgICAgIHVybDogbG9jYXRpb24uaHJl
ZiwKKyAgICAgICAgdHlwZTogIkdFVCIsCisgICAgICAgIGlzTG9jYWw6IHJsb2NhbFByb3RvY29s
LnRlc3QoIGxvY2F0aW9uLnByb3RvY29sICksCisgICAgICAgIGdsb2JhbDogdHJ1ZSwKKyAgICAg
ICAgcHJvY2Vzc0RhdGE6IHRydWUsCisgICAgICAgIGFzeW5jOiB0cnVlLAorICAgICAgICBjb250
ZW50VHlwZTogImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD1VVEYt
OCIsCisKKyAgICAgICAgLyoKKyAgICAgICAgdGltZW91dDogMCwKKyAgICAgICAgZGF0YTogbnVs
bCwKKyAgICAgICAgZGF0YVR5cGU6IG51bGwsCisgICAgICAgIHVzZXJuYW1lOiBudWxsLAorICAg
ICAgICBwYXNzd29yZDogbnVsbCwKKyAgICAgICAgY2FjaGU6IG51bGwsCisgICAgICAgIHRocm93
czogZmFsc2UsCisgICAgICAgIHRyYWRpdGlvbmFsOiBmYWxzZSwKKyAgICAgICAgaGVhZGVyczog
e30sCisgICAgICAgICovCisKKyAgICAgICAgYWNjZXB0czogeworICAgICAgICAgICAgIioiOiBh
bGxUeXBlcywKKyAgICAgICAgICAgIHRleHQ6ICJ0ZXh0L3BsYWluIiwKKyAgICAgICAgICAgIGh0
bWw6ICJ0ZXh0L2h0bWwiLAorICAgICAgICAgICAgeG1sOiAiYXBwbGljYXRpb24veG1sLCB0ZXh0
L3htbCIsCisgICAgICAgICAgICBqc29uOiAiYXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZhc2Ny
aXB0IgorICAgICAgICB9LAorCisgICAgICAgIGNvbnRlbnRzOiB7CisgICAgICAgICAgICB4bWw6
IC9cYnhtbFxiLywKKyAgICAgICAgICAgIGh0bWw6IC9cYmh0bWwvLAorICAgICAgICAgICAganNv
bjogL1xianNvblxiLworICAgICAgICB9LAorCisgICAgICAgIHJlc3BvbnNlRmllbGRzOiB7Cisg
ICAgICAgICAgICB4bWw6ICJyZXNwb25zZVhNTCIsCisgICAgICAgICAgICB0ZXh0OiAicmVzcG9u
c2VUZXh0IiwKKyAgICAgICAgICAgIGpzb246ICJyZXNwb25zZUpTT04iCisgICAgICAgIH0sCisK
KyAgICAgICAgLy8gRGF0YSBjb252ZXJ0ZXJzCisgICAgICAgIC8vIEtleXMgc2VwYXJhdGUgc291
cmNlIChvciBjYXRjaGFsbCAiKiIpIGFuZCBkZXN0aW5hdGlvbiB0eXBlcyB3aXRoIGEgc2luZ2xl
IHNwYWNlCisgICAgICAgIGNvbnZlcnRlcnM6IHsKKworICAgICAgICAgICAgLy8gQ29udmVydCBh
bnl0aGluZyB0byB0ZXh0CisgICAgICAgICAgICAiKiB0ZXh0IjogU3RyaW5nLAorCisgICAgICAg
ICAgICAvLyBUZXh0IHRvIGh0bWwgKHRydWUgPSBubyB0cmFuc2Zvcm1hdGlvbikKKyAgICAgICAg
ICAgICJ0ZXh0IGh0bWwiOiB0cnVlLAorCisgICAgICAgICAgICAvLyBFdmFsdWF0ZSB0ZXh0IGFz
IGEganNvbiBleHByZXNzaW9uCisgICAgICAgICAgICAidGV4dCBqc29uIjogSlNPTi5wYXJzZSwK
KworICAgICAgICAgICAgLy8gUGFyc2UgdGV4dCBhcyB4bWwKKyAgICAgICAgICAgICJ0ZXh0IHht
bCI6IGpRdWVyeS5wYXJzZVhNTAorICAgICAgICB9LAorCisgICAgICAgIC8vIEZvciBvcHRpb25z
IHRoYXQgc2hvdWxkbid0IGJlIGRlZXAgZXh0ZW5kZWQ6CisgICAgICAgIC8vIHlvdSBjYW4gYWRk
IHlvdXIgb3duIGN1c3RvbSBvcHRpb25zIGhlcmUgaWYKKyAgICAgICAgLy8gYW5kIHdoZW4geW91
IGNyZWF0ZSBvbmUgdGhhdCBzaG91bGRuJ3QgYmUKKyAgICAgICAgLy8gZGVlcCBleHRlbmRlZCAo
c2VlIGFqYXhFeHRlbmQpCisgICAgICAgIGZsYXRPcHRpb25zOiB7CisgICAgICAgICAgICB1cmw6
IHRydWUsCisgICAgICAgICAgICBjb250ZXh0OiB0cnVlCisgICAgICAgIH0KKyAgICB9LAorCisg
ICAgLy8gQ3JlYXRlcyBhIGZ1bGwgZmxlZGdlZCBzZXR0aW5ncyBvYmplY3QgaW50byB0YXJnZXQK
KyAgICAvLyB3aXRoIGJvdGggYWpheFNldHRpbmdzIGFuZCBzZXR0aW5ncyBmaWVsZHMuCisgICAg
Ly8gSWYgdGFyZ2V0IGlzIG9taXR0ZWQsIHdyaXRlcyBpbnRvIGFqYXhTZXR0aW5ncy4KKyAgICBh
amF4U2V0dXA6IGZ1bmN0aW9uKCB0YXJnZXQsIHNldHRpbmdzICkgeworICAgICAgICByZXR1cm4g
c2V0dGluZ3MgPworCisgICAgICAgICAgICAvLyBCdWlsZGluZyBhIHNldHRpbmdzIG9iamVjdAor
ICAgICAgICAgICAgYWpheEV4dGVuZCggYWpheEV4dGVuZCggdGFyZ2V0LCBqUXVlcnkuYWpheFNl
dHRpbmdzICksIHNldHRpbmdzICkgOgorCisgICAgICAgICAgICAvLyBFeHRlbmRpbmcgYWpheFNl
dHRpbmdzCisgICAgICAgICAgICBhamF4RXh0ZW5kKCBqUXVlcnkuYWpheFNldHRpbmdzLCB0YXJn
ZXQgKTsKKyAgICB9LAorCisgICAgYWpheFByZWZpbHRlcjogYWRkVG9QcmVmaWx0ZXJzT3JUcmFu
c3BvcnRzKCBwcmVmaWx0ZXJzICksCisgICAgYWpheFRyYW5zcG9ydDogYWRkVG9QcmVmaWx0ZXJz
T3JUcmFuc3BvcnRzKCB0cmFuc3BvcnRzICksCisKKyAgICAvLyBNYWluIG1ldGhvZAorICAgIGFq
YXg6IGZ1bmN0aW9uKCB1cmwsIG9wdGlvbnMgKSB7CisKKyAgICAgICAgLy8gSWYgdXJsIGlzIGFu
IG9iamVjdCwgc2ltdWxhdGUgcHJlLTEuNSBzaWduYXR1cmUKKyAgICAgICAgaWYgKCB0eXBlb2Yg
dXJsID09PSAib2JqZWN0IiApIHsKKyAgICAgICAgICAgIG9wdGlvbnMgPSB1cmw7CisgICAgICAg
ICAgICB1cmwgPSB1bmRlZmluZWQ7CisgICAgICAgIH0KKworICAgICAgICAvLyBGb3JjZSBvcHRp
b25zIHRvIGJlIGFuIG9iamVjdAorICAgICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKKwor
ICAgICAgICB2YXIgdHJhbnNwb3J0LAorCisgICAgICAgICAgICAvLyBVUkwgd2l0aG91dCBhbnRp
LWNhY2hlIHBhcmFtCisgICAgICAgICAgICBjYWNoZVVSTCwKKworICAgICAgICAgICAgLy8gUmVz
cG9uc2UgaGVhZGVycworICAgICAgICAgICAgcmVzcG9uc2VIZWFkZXJzU3RyaW5nLAorICAgICAg
ICAgICAgcmVzcG9uc2VIZWFkZXJzLAorCisgICAgICAgICAgICAvLyB0aW1lb3V0IGhhbmRsZQor
ICAgICAgICAgICAgdGltZW91dFRpbWVyLAorCisgICAgICAgICAgICAvLyBVcmwgY2xlYW51cCB2
YXIKKyAgICAgICAgICAgIHVybEFuY2hvciwKKworICAgICAgICAgICAgLy8gUmVxdWVzdCBzdGF0
ZSAoYmVjb21lcyBmYWxzZSB1cG9uIHNlbmQgYW5kIHRydWUgdXBvbiBjb21wbGV0aW9uKQorICAg
ICAgICAgICAgY29tcGxldGVkLAorCisgICAgICAgICAgICAvLyBUbyBrbm93IGlmIGdsb2JhbCBl
dmVudHMgYXJlIHRvIGJlIGRpc3BhdGNoZWQKKyAgICAgICAgICAgIGZpcmVHbG9iYWxzLAorCisg
ICAgICAgICAgICAvLyBMb29wIHZhcmlhYmxlCisgICAgICAgICAgICBpLAorCisgICAgICAgICAg
ICAvLyB1bmNhY2hlZCBwYXJ0IG9mIHRoZSB1cmwKKyAgICAgICAgICAgIHVuY2FjaGVkLAorCisg
ICAgICAgICAgICAvLyBDcmVhdGUgdGhlIGZpbmFsIG9wdGlvbnMgb2JqZWN0CisgICAgICAgICAg
ICBzID0galF1ZXJ5LmFqYXhTZXR1cCgge30sIG9wdGlvbnMgKSwKKworICAgICAgICAgICAgLy8g
Q2FsbGJhY2tzIGNvbnRleHQKKyAgICAgICAgICAgIGNhbGxiYWNrQ29udGV4dCA9IHMuY29udGV4
dCB8fCBzLAorCisgICAgICAgICAgICAvLyBDb250ZXh0IGZvciBnbG9iYWwgZXZlbnRzIGlzIGNh
bGxiYWNrQ29udGV4dCBpZiBpdCBpcyBhIERPTSBub2RlIG9yIGpRdWVyeSBjb2xsZWN0aW9uCisg
ICAgICAgICAgICBnbG9iYWxFdmVudENvbnRleHQgPSBzLmNvbnRleHQgJiYKKyAgICAgICAgICAg
ICAgICAoIGNhbGxiYWNrQ29udGV4dC5ub2RlVHlwZSB8fCBjYWxsYmFja0NvbnRleHQuanF1ZXJ5
ICkgPworICAgICAgICAgICAgICAgICAgICBqUXVlcnkoIGNhbGxiYWNrQ29udGV4dCApIDoKKyAg
ICAgICAgICAgICAgICAgICAgalF1ZXJ5LmV2ZW50LAorCisgICAgICAgICAgICAvLyBEZWZlcnJl
ZHMKKyAgICAgICAgICAgIGRlZmVycmVkID0galF1ZXJ5LkRlZmVycmVkKCksCisgICAgICAgICAg
ICBjb21wbGV0ZURlZmVycmVkID0galF1ZXJ5LkNhbGxiYWNrcyggIm9uY2UgbWVtb3J5IiApLAor
CisgICAgICAgICAgICAvLyBTdGF0dXMtZGVwZW5kZW50IGNhbGxiYWNrcworICAgICAgICAgICAg
c3RhdHVzQ29kZSA9IHMuc3RhdHVzQ29kZSB8fCB7fSwKKworICAgICAgICAgICAgLy8gSGVhZGVy
cyAodGhleSBhcmUgc2VudCBhbGwgYXQgb25jZSkKKyAgICAgICAgICAgIHJlcXVlc3RIZWFkZXJz
ID0ge30sCisgICAgICAgICAgICByZXF1ZXN0SGVhZGVyc05hbWVzID0ge30sCisKKyAgICAgICAg
ICAgIC8vIERlZmF1bHQgYWJvcnQgbWVzc2FnZQorICAgICAgICAgICAgc3RyQWJvcnQgPSAiY2Fu
Y2VsZWQiLAorCisgICAgICAgICAgICAvLyBGYWtlIHhocgorICAgICAgICAgICAganFYSFIgPSB7
CisgICAgICAgICAgICAgICAgcmVhZHlTdGF0ZTogMCwKKworICAgICAgICAgICAgICAgIC8vIEJ1
aWxkcyBoZWFkZXJzIGhhc2h0YWJsZSBpZiBuZWVkZWQKKyAgICAgICAgICAgICAgICBnZXRSZXNw
b25zZUhlYWRlcjogZnVuY3Rpb24oIGtleSApIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIG1h
dGNoOworICAgICAgICAgICAgICAgICAgICBpZiAoIGNvbXBsZXRlZCApIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICggIXJlc3BvbnNlSGVhZGVycyApIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXNwb25zZUhlYWRlcnMgPSB7fTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB3aGlsZSAoICggbWF0Y2ggPSByaGVhZGVycy5leGVjKCByZXNwb25zZUhlYWRlcnNTdHJp
bmcgKSApICkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZUhlYWRl
cnNbIG1hdGNoWyAxIF0udG9Mb3dlckNhc2UoKSBdID0gbWF0Y2hbIDIgXTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgICAgICBtYXRjaCA9IHJlc3BvbnNlSGVhZGVyc1sga2V5LnRvTG93ZXJDYXNlKCkg
XTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWF0
Y2ggPT0gbnVsbCA/IG51bGwgOiBtYXRjaDsKKyAgICAgICAgICAgICAgICB9LAorCisgICAgICAg
ICAgICAgICAgLy8gUmF3IHN0cmluZworICAgICAgICAgICAgICAgIGdldEFsbFJlc3BvbnNlSGVh
ZGVyczogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb21wbGV0ZWQg
PyByZXNwb25zZUhlYWRlcnNTdHJpbmcgOiBudWxsOworICAgICAgICAgICAgICAgIH0sCisKKyAg
ICAgICAgICAgICAgICAvLyBDYWNoZXMgdGhlIGhlYWRlcgorICAgICAgICAgICAgICAgIHNldFJl
cXVlc3RIZWFkZXI6IGZ1bmN0aW9uKCBuYW1lLCB2YWx1ZSApIHsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKCBjb21wbGV0ZWQgPT0gbnVsbCApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5h
bWUgPSByZXF1ZXN0SGVhZGVyc05hbWVzWyBuYW1lLnRvTG93ZXJDYXNlKCkgXSA9CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdEhlYWRlcnNOYW1lc1sgbmFtZS50b0xvd2VyQ2Fz
ZSgpIF0gfHwgbmFtZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RIZWFkZXJzWyBu
YW1lIF0gPSB2YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdGhpczsKKyAgICAgICAgICAgICAgICB9LAorCisgICAgICAgICAgICAgICAgLy8g
T3ZlcnJpZGVzIHJlc3BvbnNlIGNvbnRlbnQtdHlwZSBoZWFkZXIKKyAgICAgICAgICAgICAgICBv
dmVycmlkZU1pbWVUeXBlOiBmdW5jdGlvbiggdHlwZSApIHsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKCBjb21wbGV0ZWQgPT0gbnVsbCApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHMubWlt
ZVR5cGUgPSB0eXBlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiB0aGlzOworICAgICAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgICAgICAvLyBT
dGF0dXMtZGVwZW5kZW50IGNhbGxiYWNrcworICAgICAgICAgICAgICAgIHN0YXR1c0NvZGU6IGZ1
bmN0aW9uKCBtYXAgKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBjb2RlOworICAgICAgICAg
ICAgICAgICAgICBpZiAoIG1hcCApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICggY29t
cGxldGVkICkgeworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRXhlY3V0ZSB0aGUg
YXBwcm9wcmlhdGUgY2FsbGJhY2tzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAganFYSFIu
YWx3YXlzKCBtYXBbIGpxWEhSLnN0YXR1cyBdICk7CisgICAgICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgeworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTGF6eS1hZGQgdGhlIG5l
dyBjYWxsYmFja3MgaW4gYSB3YXkgdGhhdCBwcmVzZXJ2ZXMgb2xkIG9uZXMKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmb3IgKCBjb2RlIGluIG1hcCApIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RhdHVzQ29kZVsgY29kZSBdID0gWyBzdGF0dXNDb2RlWyBjb2RlIF0s
IG1hcFsgY29kZSBdIF07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB0aGlzOworICAgICAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgICAgICAv
LyBDYW5jZWwgdGhlIHJlcXVlc3QKKyAgICAgICAgICAgICAgICBhYm9ydDogZnVuY3Rpb24oIHN0
YXR1c1RleHQgKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBmaW5hbFRleHQgPSBzdGF0dXNU
ZXh0IHx8IHN0ckFib3J0OworICAgICAgICAgICAgICAgICAgICBpZiAoIHRyYW5zcG9ydCApIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9ydC5hYm9ydCggZmluYWxUZXh0ICk7Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZG9uZSggMCwgZmluYWxU
ZXh0ICk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH07CisKKyAgICAgICAgLy8gQXR0YWNoIGRlZmVycmVkcworICAgICAg
ICBkZWZlcnJlZC5wcm9taXNlKCBqcVhIUiApOworCisgICAgICAgIC8vIEFkZCBwcm90b2NvbCBp
ZiBub3QgcHJvdmlkZWQgKHByZWZpbHRlcnMgbWlnaHQgZXhwZWN0IGl0KQorICAgICAgICAvLyBI
YW5kbGUgZmFsc3kgdXJsIGluIHRoZSBzZXR0aW5ncyBvYmplY3QgKCMxMDA5MzogY29uc2lzdGVu
Y3kgd2l0aCBvbGQgc2lnbmF0dXJlKQorICAgICAgICAvLyBXZSBhbHNvIHVzZSB0aGUgdXJsIHBh
cmFtZXRlciBpZiBhdmFpbGFibGUKKyAgICAgICAgcy51cmwgPSAoICggdXJsIHx8IHMudXJsIHx8
IGxvY2F0aW9uLmhyZWYgKSArICIiICkKKyAgICAgICAgICAgIC5yZXBsYWNlKCBycHJvdG9jb2ws
IGxvY2F0aW9uLnByb3RvY29sICsgIi8vIiApOworCisgICAgICAgIC8vIEFsaWFzIG1ldGhvZCBv
cHRpb24gdG8gdHlwZSBhcyBwZXIgdGlja2V0ICMxMjAwNAorICAgICAgICBzLnR5cGUgPSBvcHRp
b25zLm1ldGhvZCB8fCBvcHRpb25zLnR5cGUgfHwgcy5tZXRob2QgfHwgcy50eXBlOworCisgICAg
ICAgIC8vIEV4dHJhY3QgZGF0YVR5cGVzIGxpc3QKKyAgICAgICAgcy5kYXRhVHlwZXMgPSAoIHMu
ZGF0YVR5cGUgfHwgIioiICkudG9Mb3dlckNhc2UoKS5tYXRjaCggcm5vdGh0bWx3aGl0ZSApIHx8
IFsgIiIgXTsKKworICAgICAgICAvLyBBIGNyb3NzLWRvbWFpbiByZXF1ZXN0IGlzIGluIG9yZGVy
IHdoZW4gdGhlIG9yaWdpbiBkb2Vzbid0IG1hdGNoIHRoZSBjdXJyZW50IG9yaWdpbi4KKyAgICAg
ICAgaWYgKCBzLmNyb3NzRG9tYWluID09IG51bGwgKSB7CisgICAgICAgICAgICB1cmxBbmNob3Ig
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCAiYSIgKTsKKworICAgICAgICAgICAgLy8gU3VwcG9y
dDogSUUgPD04IC0gMTEsIEVkZ2UgMTIgLSAxMworICAgICAgICAgICAgLy8gSUUgdGhyb3dzIGV4
Y2VwdGlvbiBvbiBhY2Nlc3NpbmcgdGhlIGhyZWYgcHJvcGVydHkgaWYgdXJsIGlzIG1hbGZvcm1l
ZCwKKyAgICAgICAgICAgIC8vIGUuZy4gaHR0cDovL2V4YW1wbGUuY29tOjgweC8KKyAgICAgICAg
ICAgIHRyeSB7CisgICAgICAgICAgICAgICAgdXJsQW5jaG9yLmhyZWYgPSBzLnVybDsKKworICAg
ICAgICAgICAgICAgIC8vIFN1cHBvcnQ6IElFIDw9OCAtIDExIG9ubHkKKyAgICAgICAgICAgICAg
ICAvLyBBbmNob3IncyBob3N0IHByb3BlcnR5IGlzbid0IGNvcnJlY3RseSBzZXQgd2hlbiBzLnVy
bCBpcyByZWxhdGl2ZQorICAgICAgICAgICAgICAgIHVybEFuY2hvci5ocmVmID0gdXJsQW5jaG9y
LmhyZWY7CisgICAgICAgICAgICAgICAgcy5jcm9zc0RvbWFpbiA9IG9yaWdpbkFuY2hvci5wcm90
b2NvbCArICIvLyIgKyBvcmlnaW5BbmNob3IuaG9zdCAhPT0KKyAgICAgICAgICAgICAgICAgICAg
dXJsQW5jaG9yLnByb3RvY29sICsgIi8vIiArIHVybEFuY2hvci5ob3N0OworICAgICAgICAgICAg
fSBjYXRjaCAoIGUgKSB7CisKKyAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBhbiBlcnJv
ciBwYXJzaW5nIHRoZSBVUkwsIGFzc3VtZSBpdCBpcyBjcm9zc0RvbWFpbiwKKyAgICAgICAgICAg
ICAgICAvLyBpdCBjYW4gYmUgcmVqZWN0ZWQgYnkgdGhlIHRyYW5zcG9ydCBpZiBpdCBpcyBpbnZh
bGlkCisgICAgICAgICAgICAgICAgcy5jcm9zc0RvbWFpbiA9IHRydWU7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKworICAgICAgICAvLyBDb252ZXJ0IGRhdGEgaWYgbm90IGFscmVhZHkgYSBz
dHJpbmcKKyAgICAgICAgaWYgKCBzLmRhdGEgJiYgcy5wcm9jZXNzRGF0YSAmJiB0eXBlb2Ygcy5k
YXRhICE9PSAic3RyaW5nIiApIHsKKyAgICAgICAgICAgIHMuZGF0YSA9IGpRdWVyeS5wYXJhbSgg
cy5kYXRhLCBzLnRyYWRpdGlvbmFsICk7CisgICAgICAgIH0KKworICAgICAgICAvLyBBcHBseSBw
cmVmaWx0ZXJzCisgICAgICAgIGluc3BlY3RQcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCBwcmVmaWx0
ZXJzLCBzLCBvcHRpb25zLCBqcVhIUiApOworCisgICAgICAgIC8vIElmIHJlcXVlc3Qgd2FzIGFi
b3J0ZWQgaW5zaWRlIGEgcHJlZmlsdGVyLCBzdG9wIHRoZXJlCisgICAgICAgIGlmICggY29tcGxl
dGVkICkgeworICAgICAgICAgICAgcmV0dXJuIGpxWEhSOworICAgICAgICB9CisKKyAgICAgICAg
Ly8gV2UgY2FuIGZpcmUgZ2xvYmFsIGV2ZW50cyBhcyBvZiBub3cgaWYgYXNrZWQgdG8KKyAgICAg
ICAgLy8gRG9uJ3QgZmlyZSBldmVudHMgaWYgalF1ZXJ5LmV2ZW50IGlzIHVuZGVmaW5lZCBpbiBh
biBBTUQtdXNhZ2Ugc2NlbmFyaW8gKCMxNTExOCkKKyAgICAgICAgZmlyZUdsb2JhbHMgPSBqUXVl
cnkuZXZlbnQgJiYgcy5nbG9iYWw7CisKKyAgICAgICAgLy8gV2F0Y2ggZm9yIGEgbmV3IHNldCBv
ZiByZXF1ZXN0cworICAgICAgICBpZiAoIGZpcmVHbG9iYWxzICYmIGpRdWVyeS5hY3RpdmUrKyA9
PT0gMCApIHsKKyAgICAgICAgICAgIGpRdWVyeS5ldmVudC50cmlnZ2VyKCAiYWpheFN0YXJ0IiAp
OworICAgICAgICB9CisKKyAgICAgICAgLy8gVXBwZXJjYXNlIHRoZSB0eXBlCisgICAgICAgIHMu
dHlwZSA9IHMudHlwZS50b1VwcGVyQ2FzZSgpOworCisgICAgICAgIC8vIERldGVybWluZSBpZiBy
ZXF1ZXN0IGhhcyBjb250ZW50CisgICAgICAgIHMuaGFzQ29udGVudCA9ICFybm9Db250ZW50LnRl
c3QoIHMudHlwZSApOworCisgICAgICAgIC8vIFNhdmUgdGhlIFVSTCBpbiBjYXNlIHdlJ3JlIHRv
eWluZyB3aXRoIHRoZSBJZi1Nb2RpZmllZC1TaW5jZQorICAgICAgICAvLyBhbmQvb3IgSWYtTm9u
ZS1NYXRjaCBoZWFkZXIgbGF0ZXIgb24KKyAgICAgICAgLy8gUmVtb3ZlIGhhc2ggdG8gc2ltcGxp
ZnkgdXJsIG1hbmlwdWxhdGlvbgorICAgICAgICBjYWNoZVVSTCA9IHMudXJsLnJlcGxhY2UoIHJo
YXNoLCAiIiApOworCisgICAgICAgIC8vIE1vcmUgb3B0aW9ucyBoYW5kbGluZyBmb3IgcmVxdWVz
dHMgd2l0aCBubyBjb250ZW50CisgICAgICAgIGlmICggIXMuaGFzQ29udGVudCApIHsKKworICAg
ICAgICAgICAgLy8gUmVtZW1iZXIgdGhlIGhhc2ggc28gd2UgY2FuIHB1dCBpdCBiYWNrCisgICAg
ICAgICAgICB1bmNhY2hlZCA9IHMudXJsLnNsaWNlKCBjYWNoZVVSTC5sZW5ndGggKTsKKworICAg
ICAgICAgICAgLy8gSWYgZGF0YSBpcyBhdmFpbGFibGUsIGFwcGVuZCBkYXRhIHRvIHVybAorICAg
ICAgICAgICAgaWYgKCBzLmRhdGEgKSB7CisgICAgICAgICAgICAgICAgY2FjaGVVUkwgKz0gKCBy
cXVlcnkudGVzdCggY2FjaGVVUkwgKSA/ICImIiA6ICI/IiApICsgcy5kYXRhOworCisgICAgICAg
ICAgICAgICAgLy8gIzk2ODI6IHJlbW92ZSBkYXRhIHNvIHRoYXQgaXQncyBub3QgdXNlZCBpbiBh
biBldmVudHVhbCByZXRyeQorICAgICAgICAgICAgICAgIGRlbGV0ZSBzLmRhdGE7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIC8vIEFkZCBvciB1cGRhdGUgYW50aS1jYWNoZSBwYXJhbSBp
ZiBuZWVkZWQKKyAgICAgICAgICAgIGlmICggcy5jYWNoZSA9PT0gZmFsc2UgKSB7CisgICAgICAg
ICAgICAgICAgY2FjaGVVUkwgPSBjYWNoZVVSTC5yZXBsYWNlKCByYW50aUNhY2hlLCAiJDEiICk7
CisgICAgICAgICAgICAgICAgdW5jYWNoZWQgPSAoIHJxdWVyeS50ZXN0KCBjYWNoZVVSTCApID8g
IiYiIDogIj8iICkgKyAiXz0iICsgKCBub25jZSsrICkgKyB1bmNhY2hlZDsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgLy8gUHV0IGhhc2ggYW5kIGFudGktY2FjaGUgb24gdGhlIFVSTCB0
aGF0IHdpbGwgYmUgcmVxdWVzdGVkIChnaC0xNzMyKQorICAgICAgICAgICAgcy51cmwgPSBjYWNo
ZVVSTCArIHVuY2FjaGVkOworCisgICAgICAgIC8vIENoYW5nZSAnJTIwJyB0byAnKycgaWYgdGhp
cyBpcyBlbmNvZGVkIGZvcm0gYm9keSBjb250ZW50IChnaC0yNjU4KQorICAgICAgICB9IGVsc2Ug
aWYgKCBzLmRhdGEgJiYgcy5wcm9jZXNzRGF0YSAmJgorICAgICAgICAgICAgKCBzLmNvbnRlbnRU
eXBlIHx8ICIiICkuaW5kZXhPZiggImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIg
KSA9PT0gMCApIHsKKyAgICAgICAgICAgIHMuZGF0YSA9IHMuZGF0YS5yZXBsYWNlKCByMjAsICIr
IiApOworICAgICAgICB9CisKKyAgICAgICAgLy8gU2V0IHRoZSBJZi1Nb2RpZmllZC1TaW5jZSBh
bmQvb3IgSWYtTm9uZS1NYXRjaCBoZWFkZXIsIGlmIGluIGlmTW9kaWZpZWQgbW9kZS4KKyAgICAg
ICAgaWYgKCBzLmlmTW9kaWZpZWQgKSB7CisgICAgICAgICAgICBpZiAoIGpRdWVyeS5sYXN0TW9k
aWZpZWRbIGNhY2hlVVJMIF0gKSB7CisgICAgICAgICAgICAgICAganFYSFIuc2V0UmVxdWVzdEhl
YWRlciggIklmLU1vZGlmaWVkLVNpbmNlIiwgalF1ZXJ5Lmxhc3RNb2RpZmllZFsgY2FjaGVVUkwg
XSApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCBqUXVlcnkuZXRhZ1sgY2FjaGVV
UkwgXSApIHsKKyAgICAgICAgICAgICAgICBqcVhIUi5zZXRSZXF1ZXN0SGVhZGVyKCAiSWYtTm9u
ZS1NYXRjaCIsIGpRdWVyeS5ldGFnWyBjYWNoZVVSTCBdICk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKworICAgICAgICAvLyBTZXQgdGhlIGNvcnJlY3QgaGVhZGVyLCBpZiBkYXRhIGlzIGJl
aW5nIHNlbnQKKyAgICAgICAgaWYgKCBzLmRhdGEgJiYgcy5oYXNDb250ZW50ICYmIHMuY29udGVu
dFR5cGUgIT09IGZhbHNlIHx8IG9wdGlvbnMuY29udGVudFR5cGUgKSB7CisgICAgICAgICAgICBq
cVhIUi5zZXRSZXF1ZXN0SGVhZGVyKCAiQ29udGVudC1UeXBlIiwgcy5jb250ZW50VHlwZSApOwor
ICAgICAgICB9CisKKyAgICAgICAgLy8gU2V0IHRoZSBBY2NlcHRzIGhlYWRlciBmb3IgdGhlIHNl
cnZlciwgZGVwZW5kaW5nIG9uIHRoZSBkYXRhVHlwZQorICAgICAgICBqcVhIUi5zZXRSZXF1ZXN0
SGVhZGVyKAorICAgICAgICAgICAgIkFjY2VwdCIsCisgICAgICAgICAgICBzLmRhdGFUeXBlc1sg
MCBdICYmIHMuYWNjZXB0c1sgcy5kYXRhVHlwZXNbIDAgXSBdID8KKyAgICAgICAgICAgICAgICBz
LmFjY2VwdHNbIHMuZGF0YVR5cGVzWyAwIF0gXSArCisgICAgICAgICAgICAgICAgICAgICggcy5k
YXRhVHlwZXNbIDAgXSAhPT0gIioiID8gIiwgIiArIGFsbFR5cGVzICsgIjsgcT0wLjAxIiA6ICIi
ICkgOgorICAgICAgICAgICAgICAgIHMuYWNjZXB0c1sgIioiIF0KKyAgICAgICAgKTsKKworICAg
ICAgICAvLyBDaGVjayBmb3IgaGVhZGVycyBvcHRpb24KKyAgICAgICAgZm9yICggaSBpbiBzLmhl
YWRlcnMgKSB7CisgICAgICAgICAgICBqcVhIUi5zZXRSZXF1ZXN0SGVhZGVyKCBpLCBzLmhlYWRl
cnNbIGkgXSApOworICAgICAgICB9CisKKyAgICAgICAgLy8gQWxsb3cgY3VzdG9tIGhlYWRlcnMv
bWltZXR5cGVzIGFuZCBlYXJseSBhYm9ydAorICAgICAgICBpZiAoIHMuYmVmb3JlU2VuZCAmJgor
ICAgICAgICAgICAgKCBzLmJlZm9yZVNlbmQuY2FsbCggY2FsbGJhY2tDb250ZXh0LCBqcVhIUiwg
cyApID09PSBmYWxzZSB8fCBjb21wbGV0ZWQgKSApIHsKKworICAgICAgICAgICAgLy8gQWJvcnQg
aWYgbm90IGRvbmUgYWxyZWFkeSBhbmQgcmV0dXJuCisgICAgICAgICAgICByZXR1cm4ganFYSFIu
YWJvcnQoKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEFib3J0aW5nIGlzIG5vIGxvbmdlciBh
IGNhbmNlbGxhdGlvbgorICAgICAgICBzdHJBYm9ydCA9ICJhYm9ydCI7CisKKyAgICAgICAgLy8g
SW5zdGFsbCBjYWxsYmFja3Mgb24gZGVmZXJyZWRzCisgICAgICAgIGNvbXBsZXRlRGVmZXJyZWQu
YWRkKCBzLmNvbXBsZXRlICk7CisgICAgICAgIGpxWEhSLmRvbmUoIHMuc3VjY2VzcyApOworICAg
ICAgICBqcVhIUi5mYWlsKCBzLmVycm9yICk7CisKKyAgICAgICAgLy8gR2V0IHRyYW5zcG9ydAor
ICAgICAgICB0cmFuc3BvcnQgPSBpbnNwZWN0UHJlZmlsdGVyc09yVHJhbnNwb3J0cyggdHJhbnNw
b3J0cywgcywgb3B0aW9ucywganFYSFIgKTsKKworICAgICAgICAvLyBJZiBubyB0cmFuc3BvcnQs
IHdlIGF1dG8tYWJvcnQKKyAgICAgICAgaWYgKCAhdHJhbnNwb3J0ICkgeworICAgICAgICAgICAg
ZG9uZSggLTEsICJObyBUcmFuc3BvcnQiICk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBqcVhIUi5yZWFkeVN0YXRlID0gMTsKKworICAgICAgICAgICAgLy8gU2VuZCBnbG9iYWwgZXZl
bnQKKyAgICAgICAgICAgIGlmICggZmlyZUdsb2JhbHMgKSB7CisgICAgICAgICAgICAgICAgZ2xv
YmFsRXZlbnRDb250ZXh0LnRyaWdnZXIoICJhamF4U2VuZCIsIFsganFYSFIsIHMgXSApOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBJZiByZXF1ZXN0IHdhcyBhYm9ydGVkIGluc2lk
ZSBhamF4U2VuZCwgc3RvcCB0aGVyZQorICAgICAgICAgICAgaWYgKCBjb21wbGV0ZWQgKSB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGpxWEhSOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAvLyBUaW1lb3V0CisgICAgICAgICAgICBpZiAoIHMuYXN5bmMgJiYgcy50aW1lb3V0ID4gMCAp
IHsKKyAgICAgICAgICAgICAgICB0aW1lb3V0VGltZXIgPSB3aW5kb3cuc2V0VGltZW91dCggZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIGpxWEhSLmFib3J0KCAidGltZW91dCIgKTsK
KyAgICAgICAgICAgICAgICB9LCBzLnRpbWVvdXQgKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBjb21wbGV0ZWQgPSBmYWxzZTsKKyAgICAgICAg
ICAgICAgICB0cmFuc3BvcnQuc2VuZCggcmVxdWVzdEhlYWRlcnMsIGRvbmUgKTsKKyAgICAgICAg
ICAgIH0gY2F0Y2ggKCBlICkgeworCisgICAgICAgICAgICAgICAgLy8gUmV0aHJvdyBwb3N0LWNv
bXBsZXRpb24gZXhjZXB0aW9ucworICAgICAgICAgICAgICAgIGlmICggY29tcGxldGVkICkgewor
ICAgICAgICAgICAgICAgICAgICB0aHJvdyBlOworICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgIC8vIFByb3BhZ2F0ZSBvdGhlcnMgYXMgcmVzdWx0cworICAgICAgICAgICAgICAg
IGRvbmUoIC0xLCBlICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBD
YWxsYmFjayBmb3Igd2hlbiBldmVyeXRoaW5nIGlzIGRvbmUKKyAgICAgICAgZnVuY3Rpb24gZG9u
ZSggc3RhdHVzLCBuYXRpdmVTdGF0dXNUZXh0LCByZXNwb25zZXMsIGhlYWRlcnMgKSB7CisgICAg
ICAgICAgICB2YXIgaXNTdWNjZXNzLCBzdWNjZXNzLCBlcnJvciwgcmVzcG9uc2UsIG1vZGlmaWVk
LAorICAgICAgICAgICAgICAgIHN0YXR1c1RleHQgPSBuYXRpdmVTdGF0dXNUZXh0OworCisgICAg
ICAgICAgICAvLyBJZ25vcmUgcmVwZWF0IGludm9jYXRpb25zCisgICAgICAgICAgICBpZiAoIGNv
bXBsZXRlZCApIHsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGNvbXBsZXRlZCA9IHRydWU7CisKKyAgICAgICAgICAgIC8vIENsZWFyIHRpbWVv
dXQgaWYgaXQgZXhpc3RzCisgICAgICAgICAgICBpZiAoIHRpbWVvdXRUaW1lciApIHsKKyAgICAg
ICAgICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KCB0aW1lb3V0VGltZXIgKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgLy8gRGVyZWZlcmVuY2UgdHJhbnNwb3J0IGZvciBlYXJseSBn
YXJiYWdlIGNvbGxlY3Rpb24KKyAgICAgICAgICAgIC8vIChubyBtYXR0ZXIgaG93IGxvbmcgdGhl
IGpxWEhSIG9iamVjdCB3aWxsIGJlIHVzZWQpCisgICAgICAgICAgICB0cmFuc3BvcnQgPSB1bmRl
ZmluZWQ7CisKKyAgICAgICAgICAgIC8vIENhY2hlIHJlc3BvbnNlIGhlYWRlcnMKKyAgICAgICAg
ICAgIHJlc3BvbnNlSGVhZGVyc1N0cmluZyA9IGhlYWRlcnMgfHwgIiI7CisKKyAgICAgICAgICAg
IC8vIFNldCByZWFkeVN0YXRlCisgICAgICAgICAgICBqcVhIUi5yZWFkeVN0YXRlID0gc3RhdHVz
ID4gMCA/IDQgOiAwOworCisgICAgICAgICAgICAvLyBEZXRlcm1pbmUgaWYgc3VjY2Vzc2Z1bAor
ICAgICAgICAgICAgaXNTdWNjZXNzID0gc3RhdHVzID49IDIwMCAmJiBzdGF0dXMgPCAzMDAgfHwg
c3RhdHVzID09PSAzMDQ7CisKKyAgICAgICAgICAgIC8vIEdldCByZXNwb25zZSBkYXRhCisgICAg
ICAgICAgICBpZiAoIHJlc3BvbnNlcyApIHsKKyAgICAgICAgICAgICAgICByZXNwb25zZSA9IGFq
YXhIYW5kbGVSZXNwb25zZXMoIHMsIGpxWEhSLCByZXNwb25zZXMgKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgLy8gQ29udmVydCBubyBtYXR0ZXIgd2hhdCAodGhhdCB3YXkgcmVzcG9u
c2VYWFggZmllbGRzIGFyZSBhbHdheXMgc2V0KQorICAgICAgICAgICAgcmVzcG9uc2UgPSBhamF4
Q29udmVydCggcywgcmVzcG9uc2UsIGpxWEhSLCBpc1N1Y2Nlc3MgKTsKKworICAgICAgICAgICAg
Ly8gSWYgc3VjY2Vzc2Z1bCwgaGFuZGxlIHR5cGUgY2hhaW5pbmcKKyAgICAgICAgICAgIGlmICgg
aXNTdWNjZXNzICkgeworCisgICAgICAgICAgICAgICAgLy8gU2V0IHRoZSBJZi1Nb2RpZmllZC1T
aW5jZSBhbmQvb3IgSWYtTm9uZS1NYXRjaCBoZWFkZXIsIGlmIGluIGlmTW9kaWZpZWQgbW9kZS4K
KyAgICAgICAgICAgICAgICBpZiAoIHMuaWZNb2RpZmllZCApIHsKKyAgICAgICAgICAgICAgICAg
ICAgbW9kaWZpZWQgPSBqcVhIUi5nZXRSZXNwb25zZUhlYWRlciggIkxhc3QtTW9kaWZpZWQiICk7
CisgICAgICAgICAgICAgICAgICAgIGlmICggbW9kaWZpZWQgKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBqUXVlcnkubGFzdE1vZGlmaWVkWyBjYWNoZVVSTCBdID0gbW9kaWZpZWQ7CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgbW9kaWZpZWQgPSBqcVhIUi5n
ZXRSZXNwb25zZUhlYWRlciggImV0YWciICk7CisgICAgICAgICAgICAgICAgICAgIGlmICggbW9k
aWZpZWQgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkuZXRhZ1sgY2FjaGVVUkwg
XSA9IG1vZGlmaWVkOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgLy8gaWYgbm8gY29udGVudAorICAgICAgICAgICAgICAgIGlmICgg
c3RhdHVzID09PSAyMDQgfHwgcy50eXBlID09PSAiSEVBRCIgKSB7CisgICAgICAgICAgICAgICAg
ICAgIHN0YXR1c1RleHQgPSAibm9jb250ZW50IjsKKworICAgICAgICAgICAgICAgIC8vIGlmIG5v
dCBtb2RpZmllZAorICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIHN0YXR1cyA9PT0gMzA0ICkg
eworICAgICAgICAgICAgICAgICAgICBzdGF0dXNUZXh0ID0gIm5vdG1vZGlmaWVkIjsKKworICAg
ICAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgZGF0YSwgbGV0J3MgY29udmVydCBpdAorICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHN0YXR1c1RleHQgPSByZXNw
b25zZS5zdGF0ZTsKKyAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyA9IHJlc3BvbnNlLmRhdGE7
CisgICAgICAgICAgICAgICAgICAgIGVycm9yID0gcmVzcG9uc2UuZXJyb3I7CisgICAgICAgICAg
ICAgICAgICAgIGlzU3VjY2VzcyA9ICFlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9IGVsc2UgeworCisgICAgICAgICAgICAgICAgLy8gRXh0cmFjdCBlcnJvciBmcm9tIHN0
YXR1c1RleHQgYW5kIG5vcm1hbGl6ZSBmb3Igbm9uLWFib3J0cworICAgICAgICAgICAgICAgIGVy
cm9yID0gc3RhdHVzVGV4dDsKKyAgICAgICAgICAgICAgICBpZiAoIHN0YXR1cyB8fCAhc3RhdHVz
VGV4dCApIHsKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzVGV4dCA9ICJlcnJvciI7CisgICAg
ICAgICAgICAgICAgICAgIGlmICggc3RhdHVzIDwgMCApIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHN0YXR1cyA9IDA7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFNldCBkYXRhIGZvciB0aGUgZmFrZSB4
aHIgb2JqZWN0CisgICAgICAgICAgICBqcVhIUi5zdGF0dXMgPSBzdGF0dXM7CisgICAgICAgICAg
ICBqcVhIUi5zdGF0dXNUZXh0ID0gKCBuYXRpdmVTdGF0dXNUZXh0IHx8IHN0YXR1c1RleHQgKSAr
ICIiOworCisgICAgICAgICAgICAvLyBTdWNjZXNzL0Vycm9yCisgICAgICAgICAgICBpZiAoIGlz
U3VjY2VzcyApIHsKKyAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlV2l0aCggY2FsbGJh
Y2tDb250ZXh0LCBbIHN1Y2Nlc3MsIHN0YXR1c1RleHQsIGpxWEhSIF0gKTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0V2l0aCggY2FsbGJhY2tD
b250ZXh0LCBbIGpxWEhSLCBzdGF0dXNUZXh0LCBlcnJvciBdICk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIC8vIFN0YXR1cy1kZXBlbmRlbnQgY2FsbGJhY2tzCisgICAgICAgICAgICBq
cVhIUi5zdGF0dXNDb2RlKCBzdGF0dXNDb2RlICk7CisgICAgICAgICAgICBzdGF0dXNDb2RlID0g
dW5kZWZpbmVkOworCisgICAgICAgICAgICBpZiAoIGZpcmVHbG9iYWxzICkgeworICAgICAgICAg
ICAgICAgIGdsb2JhbEV2ZW50Q29udGV4dC50cmlnZ2VyKCBpc1N1Y2Nlc3MgPyAiYWpheFN1Y2Nl
c3MiIDogImFqYXhFcnJvciIsCisgICAgICAgICAgICAgICAgICAgIFsganFYSFIsIHMsIGlzU3Vj
Y2VzcyA/IHN1Y2Nlc3MgOiBlcnJvciBdICk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IC8vIENvbXBsZXRlCisgICAgICAgICAgICBjb21wbGV0ZURlZmVycmVkLmZpcmVXaXRoKCBjYWxs
YmFja0NvbnRleHQsIFsganFYSFIsIHN0YXR1c1RleHQgXSApOworCisgICAgICAgICAgICBpZiAo
IGZpcmVHbG9iYWxzICkgeworICAgICAgICAgICAgICAgIGdsb2JhbEV2ZW50Q29udGV4dC50cmln
Z2VyKCAiYWpheENvbXBsZXRlIiwgWyBqcVhIUiwgcyBdICk7CisKKyAgICAgICAgICAgICAgICAv
LyBIYW5kbGUgdGhlIGdsb2JhbCBBSkFYIGNvdW50ZXIKKyAgICAgICAgICAgICAgICBpZiAoICEo
IC0talF1ZXJ5LmFjdGl2ZSApICkgeworICAgICAgICAgICAgICAgICAgICBqUXVlcnkuZXZlbnQu
dHJpZ2dlciggImFqYXhTdG9wIiApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBqcVhIUjsKKyAgICB9LAorCisgICAgZ2V0SlNP
TjogZnVuY3Rpb24oIHVybCwgZGF0YSwgY2FsbGJhY2sgKSB7CisgICAgICAgIHJldHVybiBqUXVl
cnkuZ2V0KCB1cmwsIGRhdGEsIGNhbGxiYWNrLCAianNvbiIgKTsKKyAgICB9LAorCisgICAgZ2V0
U2NyaXB0OiBmdW5jdGlvbiggdXJsLCBjYWxsYmFjayApIHsKKyAgICAgICAgcmV0dXJuIGpRdWVy
eS5nZXQoIHVybCwgdW5kZWZpbmVkLCBjYWxsYmFjaywgInNjcmlwdCIgKTsKKyAgICB9Cit9ICk7
CisKK2pRdWVyeS5lYWNoKCBbICJnZXQiLCAicG9zdCIgXSwgZnVuY3Rpb24oIGksIG1ldGhvZCAp
IHsKKyAgICBqUXVlcnlbIG1ldGhvZCBdID0gZnVuY3Rpb24oIHVybCwgZGF0YSwgY2FsbGJhY2ss
IHR5cGUgKSB7CisKKyAgICAgICAgLy8gU2hpZnQgYXJndW1lbnRzIGlmIGRhdGEgYXJndW1lbnQg
d2FzIG9taXR0ZWQKKyAgICAgICAgaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggZGF0YSApICkgewor
ICAgICAgICAgICAgdHlwZSA9IHR5cGUgfHwgY2FsbGJhY2s7CisgICAgICAgICAgICBjYWxsYmFj
ayA9IGRhdGE7CisgICAgICAgICAgICBkYXRhID0gdW5kZWZpbmVkOworICAgICAgICB9CisKKyAg
ICAgICAgLy8gVGhlIHVybCBjYW4gYmUgYW4gb3B0aW9ucyBvYmplY3QgKHdoaWNoIHRoZW4gbXVz
dCBoYXZlIC51cmwpCisgICAgICAgIHJldHVybiBqUXVlcnkuYWpheCggalF1ZXJ5LmV4dGVuZCgg
eworICAgICAgICAgICAgdXJsOiB1cmwsCisgICAgICAgICAgICB0eXBlOiBtZXRob2QsCisgICAg
ICAgICAgICBkYXRhVHlwZTogdHlwZSwKKyAgICAgICAgICAgIGRhdGE6IGRhdGEsCisgICAgICAg
ICAgICBzdWNjZXNzOiBjYWxsYmFjaworICAgICAgICB9LCBqUXVlcnkuaXNQbGFpbk9iamVjdCgg
dXJsICkgJiYgdXJsICkgKTsKKyAgICB9OworfSApOworCisKK2pRdWVyeS5fZXZhbFVybCA9IGZ1
bmN0aW9uKCB1cmwgKSB7CisgICAgcmV0dXJuIGpRdWVyeS5hamF4KCB7CisgICAgICAgIHVybDog
dXJsLAorCisgICAgICAgIC8vIE1ha2UgdGhpcyBleHBsaWNpdCwgc2luY2UgdXNlciBjYW4gb3Zl
cnJpZGUgdGhpcyB0aHJvdWdoIGFqYXhTZXR1cCAoIzExMjY0KQorICAgICAgICB0eXBlOiAiR0VU
IiwKKyAgICAgICAgZGF0YVR5cGU6ICJzY3JpcHQiLAorICAgICAgICBjYWNoZTogdHJ1ZSwKKyAg
ICAgICAgYXN5bmM6IGZhbHNlLAorICAgICAgICBnbG9iYWw6IGZhbHNlLAorICAgICAgICAidGhy
b3dzIjogdHJ1ZQorICAgIH0gKTsKK307CisKKworalF1ZXJ5LmZuLmV4dGVuZCggeworICAgIHdy
YXBBbGw6IGZ1bmN0aW9uKCBodG1sICkgeworICAgICAgICB2YXIgd3JhcDsKKworICAgICAgICBp
ZiAoIHRoaXNbIDAgXSApIHsKKyAgICAgICAgICAgIGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIGh0
bWwgKSApIHsKKyAgICAgICAgICAgICAgICBodG1sID0gaHRtbC5jYWxsKCB0aGlzWyAwIF0gKTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGVsZW1lbnRzIHRvIHdyYXAgdGhl
IHRhcmdldCBhcm91bmQKKyAgICAgICAgICAgIHdyYXAgPSBqUXVlcnkoIGh0bWwsIHRoaXNbIDAg
XS5vd25lckRvY3VtZW50ICkuZXEoIDAgKS5jbG9uZSggdHJ1ZSApOworCisgICAgICAgICAgICBp
ZiAoIHRoaXNbIDAgXS5wYXJlbnROb2RlICkgeworICAgICAgICAgICAgICAgIHdyYXAuaW5zZXJ0
QmVmb3JlKCB0aGlzWyAwIF0gKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgd3JhcC5t
YXAoIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHZhciBlbGVtID0gdGhpczsKKworICAg
ICAgICAgICAgICAgIHdoaWxlICggZWxlbS5maXJzdEVsZW1lbnRDaGlsZCApIHsKKyAgICAgICAg
ICAgICAgICAgICAgZWxlbSA9IGVsZW0uZmlyc3RFbGVtZW50Q2hpbGQ7CisgICAgICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW07CisgICAgICAgICAgICB9ICkuYXBw
ZW5kKCB0aGlzICk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9LAor
CisgICAgd3JhcElubmVyOiBmdW5jdGlvbiggaHRtbCApIHsKKyAgICAgICAgaWYgKCBqUXVlcnku
aXNGdW5jdGlvbiggaHRtbCApICkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaCggZnVu
Y3Rpb24oIGkgKSB7CisgICAgICAgICAgICAgICAgalF1ZXJ5KCB0aGlzICkud3JhcElubmVyKCBo
dG1sLmNhbGwoIHRoaXMsIGkgKSApOworICAgICAgICAgICAgfSApOworICAgICAgICB9CisKKyAg
ICAgICAgcmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB2YXIgc2Vs
ZiA9IGpRdWVyeSggdGhpcyApLAorICAgICAgICAgICAgICAgIGNvbnRlbnRzID0gc2VsZi5jb250
ZW50cygpOworCisgICAgICAgICAgICBpZiAoIGNvbnRlbnRzLmxlbmd0aCApIHsKKyAgICAgICAg
ICAgICAgICBjb250ZW50cy53cmFwQWxsKCBodG1sICk7CisKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgc2VsZi5hcHBlbmQoIGh0bWwgKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfSApOworICAgIH0sCisKKyAgICB3cmFwOiBmdW5jdGlvbiggaHRtbCApIHsKKyAgICAg
ICAgdmFyIGlzRnVuY3Rpb24gPSBqUXVlcnkuaXNGdW5jdGlvbiggaHRtbCApOworCisgICAgICAg
IHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCBpICkgeworICAgICAgICAgICAgalF1ZXJ5KCB0
aGlzICkud3JhcEFsbCggaXNGdW5jdGlvbiA/IGh0bWwuY2FsbCggdGhpcywgaSApIDogaHRtbCAp
OworICAgICAgICB9ICk7CisgICAgfSwKKworICAgIHVud3JhcDogZnVuY3Rpb24oIHNlbGVjdG9y
ICkgeworICAgICAgICB0aGlzLnBhcmVudCggc2VsZWN0b3IgKS5ub3QoICJib2R5IiApLmVhY2go
IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgalF1ZXJ5KCB0aGlzICkucmVwbGFjZVdpdGgoIHRo
aXMuY2hpbGROb2RlcyApOworICAgICAgICB9ICk7CisgICAgICAgIHJldHVybiB0aGlzOworICAg
IH0KK30gKTsKKworCitqUXVlcnkuZXhwci5wc2V1ZG9zLmhpZGRlbiA9IGZ1bmN0aW9uKCBlbGVt
ICkgeworICAgIHJldHVybiAhalF1ZXJ5LmV4cHIucHNldWRvcy52aXNpYmxlKCBlbGVtICk7Cit9
OworalF1ZXJ5LmV4cHIucHNldWRvcy52aXNpYmxlID0gZnVuY3Rpb24oIGVsZW0gKSB7CisgICAg
cmV0dXJuICEhKCBlbGVtLm9mZnNldFdpZHRoIHx8IGVsZW0ub2Zmc2V0SGVpZ2h0IHx8IGVsZW0u
Z2V0Q2xpZW50UmVjdHMoKS5sZW5ndGggKTsKK307CisKKworCisKK2pRdWVyeS5hamF4U2V0dGlu
Z3MueGhyID0gZnVuY3Rpb24oKSB7CisgICAgdHJ5IHsKKyAgICAgICAgcmV0dXJuIG5ldyB3aW5k
b3cuWE1MSHR0cFJlcXVlc3QoKTsKKyAgICB9IGNhdGNoICggZSApIHt9Cit9OworCit2YXIgeGhy
U3VjY2Vzc1N0YXR1cyA9IHsKKworICAgICAgICAvLyBGaWxlIHByb3RvY29sIGFsd2F5cyB5aWVs
ZHMgc3RhdHVzIGNvZGUgMCwgYXNzdW1lIDIwMAorICAgICAgICAwOiAyMDAsCisKKyAgICAgICAg
Ly8gU3VwcG9ydDogSUUgPD05IG9ubHkKKyAgICAgICAgLy8gIzE0NTA6IHNvbWV0aW1lcyBJRSBy
ZXR1cm5zIDEyMjMgd2hlbiBpdCBzaG91bGQgYmUgMjA0CisgICAgICAgIDEyMjM6IDIwNAorICAg
IH0sCisgICAgeGhyU3VwcG9ydGVkID0galF1ZXJ5LmFqYXhTZXR0aW5ncy54aHIoKTsKKworc3Vw
cG9ydC5jb3JzID0gISF4aHJTdXBwb3J0ZWQgJiYgKCAid2l0aENyZWRlbnRpYWxzIiBpbiB4aHJT
dXBwb3J0ZWQgKTsKK3N1cHBvcnQuYWpheCA9IHhoclN1cHBvcnRlZCA9ICEheGhyU3VwcG9ydGVk
OworCitqUXVlcnkuYWpheFRyYW5zcG9ydCggZnVuY3Rpb24oIG9wdGlvbnMgKSB7CisgICAgdmFy
IGNhbGxiYWNrLCBlcnJvckNhbGxiYWNrOworCisgICAgLy8gQ3Jvc3MgZG9tYWluIG9ubHkgYWxs
b3dlZCBpZiBzdXBwb3J0ZWQgdGhyb3VnaCBYTUxIdHRwUmVxdWVzdAorICAgIGlmICggc3VwcG9y
dC5jb3JzIHx8IHhoclN1cHBvcnRlZCAmJiAhb3B0aW9ucy5jcm9zc0RvbWFpbiApIHsKKyAgICAg
ICAgcmV0dXJuIHsKKyAgICAgICAgICAgIHNlbmQ6IGZ1bmN0aW9uKCBoZWFkZXJzLCBjb21wbGV0
ZSApIHsKKyAgICAgICAgICAgICAgICB2YXIgaSwKKyAgICAgICAgICAgICAgICAgICAgeGhyID0g
b3B0aW9ucy54aHIoKTsKKworICAgICAgICAgICAgICAgIHhoci5vcGVuKAorICAgICAgICAgICAg
ICAgICAgICBvcHRpb25zLnR5cGUsCisgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMudXJsLAor
ICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmFzeW5jLAorICAgICAgICAgICAgICAgICAgICBv
cHRpb25zLnVzZXJuYW1lLAorICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnBhc3N3b3JkCisg
ICAgICAgICAgICAgICAgKTsKKworICAgICAgICAgICAgICAgIC8vIEFwcGx5IGN1c3RvbSBmaWVs
ZHMgaWYgcHJvdmlkZWQKKyAgICAgICAgICAgICAgICBpZiAoIG9wdGlvbnMueGhyRmllbGRzICkg
eworICAgICAgICAgICAgICAgICAgICBmb3IgKCBpIGluIG9wdGlvbnMueGhyRmllbGRzICkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgeGhyWyBpIF0gPSBvcHRpb25zLnhockZpZWxkc1sgaSBd
OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgLy8gT3ZlcnJpZGUgbWltZSB0eXBlIGlmIG5lZWRlZAorICAgICAgICAgICAgICAgIGlm
ICggb3B0aW9ucy5taW1lVHlwZSAmJiB4aHIub3ZlcnJpZGVNaW1lVHlwZSApIHsKKyAgICAgICAg
ICAgICAgICAgICAgeGhyLm92ZXJyaWRlTWltZVR5cGUoIG9wdGlvbnMubWltZVR5cGUgKTsKKyAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBYLVJlcXVlc3RlZC1XaXRoIGhl
YWRlcgorICAgICAgICAgICAgICAgIC8vIEZvciBjcm9zcy1kb21haW4gcmVxdWVzdHMsIHNlZWlu
ZyBhcyBjb25kaXRpb25zIGZvciBhIHByZWZsaWdodCBhcmUKKyAgICAgICAgICAgICAgICAvLyBh
a2luIHRvIGEgamlnc2F3IHB1enpsZSwgd2Ugc2ltcGx5IG5ldmVyIHNldCBpdCB0byBiZSBzdXJl
LgorICAgICAgICAgICAgICAgIC8vIChpdCBjYW4gYWx3YXlzIGJlIHNldCBvbiBhIHBlci1yZXF1
ZXN0IGJhc2lzIG9yIGV2ZW4gdXNpbmcgYWpheFNldHVwKQorICAgICAgICAgICAgICAgIC8vIEZv
ciBzYW1lLWRvbWFpbiByZXF1ZXN0cywgd29uJ3QgY2hhbmdlIGhlYWRlciBpZiBhbHJlYWR5IHBy
b3ZpZGVkLgorICAgICAgICAgICAgICAgIGlmICggIW9wdGlvbnMuY3Jvc3NEb21haW4gJiYgIWhl
YWRlcnNbICJYLVJlcXVlc3RlZC1XaXRoIiBdICkgeworICAgICAgICAgICAgICAgICAgICBoZWFk
ZXJzWyAiWC1SZXF1ZXN0ZWQtV2l0aCIgXSA9ICJYTUxIdHRwUmVxdWVzdCI7CisgICAgICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gU2V0IGhlYWRlcnMKKyAgICAgICAgICAgICAg
ICBmb3IgKCBpIGluIGhlYWRlcnMgKSB7CisgICAgICAgICAgICAgICAgICAgIHhoci5zZXRSZXF1
ZXN0SGVhZGVyKCBpLCBoZWFkZXJzWyBpIF0gKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICAvLyBDYWxsYmFjaworICAgICAgICAgICAgICAgIGNhbGxiYWNrID0gZnVuY3Rp
b24oIHR5cGUgKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICggY2FsbGJhY2sgKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2FsbGJhY2sgPSBlcnJvckNhbGxiYWNrID0geGhyLm9ubG9hZCA9CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhoci5vbmVycm9yID0geGhyLm9uYWJvcnQgPSB4
aHIub25yZWFkeXN0YXRlY2hhbmdlID0gbnVsbDsKKworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICggdHlwZSA9PT0gImFib3J0IiApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgeGhyLmFib3J0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlm
ICggdHlwZSA9PT0gImVycm9yIiApIHsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBTdXBwb3J0OiBJRSA8PTkgb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBPbiBhIG1hbnVhbCBuYXRpdmUgYWJvcnQsIElFOSB0aHJvd3MKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gZXJyb3JzIG9uIGFueSBwcm9wZXJ0eSBhY2Nlc3MgdGhhdCBp
cyBub3QgcmVhZHlTdGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHR5
cGVvZiB4aHIuc3RhdHVzICE9PSAibnVtYmVyIiApIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbXBsZXRlKCAwLCAiZXJyb3IiICk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb21wbGV0ZSgKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IEZpbGU6IHByb3RvY29sIGFsd2F5cyB5aWVsZHMgc3RhdHVzIDA7IHNlZSAjODYwNSwgIzE0MjA3
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGhyLnN0YXR1cywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4aHIuc3RhdHVzVGV4dAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlKAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgeGhyU3VjY2Vzc1N0YXR1c1sgeGhyLnN0YXR1cyBdIHx8IHhoci5z
dGF0dXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4aHIuc3RhdHVzVGV4
dCwKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3VwcG9ydDogSUUg
PD05IG9ubHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElFOSBoYXMg
bm8gWEhSMiBidXQgdGhyb3dzIG9uIGJpbmFyeSAodHJhYy0xMTQyNikKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIEZvciBYSFIyIG5vbi10ZXh0LCBsZXQgdGhlIGNhbGxl
ciBoYW5kbGUgaXQgKGdoLTI0OTgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoIHhoci5yZXNwb25zZVR5cGUgfHwgInRleHQiICkgIT09ICJ0ZXh0IiAgfHwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiB4aHIucmVzcG9uc2VUZXh0ICE9PSAi
c3RyaW5nIiA/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBiaW5h
cnk6IHhoci5yZXNwb25zZSB9IDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB7IHRleHQ6IHhoci5yZXNwb25zZVRleHQgfSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHhoci5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAg
ICAgICB9OworCisgICAgICAgICAgICAgICAgLy8gTGlzdGVuIHRvIGV2ZW50cworICAgICAgICAg
ICAgICAgIHhoci5vbmxvYWQgPSBjYWxsYmFjaygpOworICAgICAgICAgICAgICAgIGVycm9yQ2Fs
bGJhY2sgPSB4aHIub25lcnJvciA9IGNhbGxiYWNrKCAiZXJyb3IiICk7CisKKyAgICAgICAgICAg
ICAgICAvLyBTdXBwb3J0OiBJRSA5IG9ubHkKKyAgICAgICAgICAgICAgICAvLyBVc2Ugb25yZWFk
eXN0YXRlY2hhbmdlIHRvIHJlcGxhY2Ugb25hYm9ydAorICAgICAgICAgICAgICAgIC8vIHRvIGhh
bmRsZSB1bmNhdWdodCBhYm9ydHMKKyAgICAgICAgICAgICAgICBpZiAoIHhoci5vbmFib3J0ICE9
PSB1bmRlZmluZWQgKSB7CisgICAgICAgICAgICAgICAgICAgIHhoci5vbmFib3J0ID0gZXJyb3JD
YWxsYmFjazsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICB4
aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKSB7CisKKyAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIENoZWNrIHJlYWR5U3RhdGUgYmVmb3JlIHRpbWVvdXQgYXMgaXQgY2hhbmdlcwor
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCB4aHIucmVhZHlTdGF0ZSA9PT0gNCApIHsKKwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFsbG93IG9uZXJyb3IgdG8gYmUgY2FsbGVk
IGZpcnN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ1dCB0aGF0IHdpbGwgbm90
IGhhbmRsZSBhIG5hdGl2ZSBhYm9ydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFs
c28sIHNhdmUgZXJyb3JDYWxsYmFjayB0byBhIHZhcmlhYmxlCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gYXMgeGhyLm9uZXJyb3IgY2Fubm90IGJlIGFjY2Vzc2VkCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgd2luZG93LnNldFRpbWVvdXQoIGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGNhbGxiYWNrICkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JDYWxsYmFjaygpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApOworICAg
ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIENyZWF0ZSB0aGUgYWJvcnQgY2FsbGJhY2sK
KyAgICAgICAgICAgICAgICBjYWxsYmFjayA9IGNhbGxiYWNrKCAiYWJvcnQiICk7CisKKyAgICAg
ICAgICAgICAgICB0cnkgeworCisgICAgICAgICAgICAgICAgICAgIC8vIERvIHNlbmQgdGhlIHJl
cXVlc3QgKHRoaXMgbWF5IHJhaXNlIGFuIGV4Y2VwdGlvbikKKyAgICAgICAgICAgICAgICAgICAg
eGhyLnNlbmQoIG9wdGlvbnMuaGFzQ29udGVudCAmJiBvcHRpb25zLmRhdGEgfHwgbnVsbCApOwor
ICAgICAgICAgICAgICAgIH0gY2F0Y2ggKCBlICkgeworCisgICAgICAgICAgICAgICAgICAgIC8v
ICMxNDY4MzogT25seSByZXRocm93IGlmIHRoaXMgaGFzbid0IGJlZW4gbm90aWZpZWQgYXMgYW4g
ZXJyb3IgeWV0CisgICAgICAgICAgICAgICAgICAgIGlmICggY2FsbGJhY2sgKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICB0aHJvdyBlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgYWJvcnQ6IGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgICAgIGlmICggY2FsbGJhY2sgKSB7CisgICAgICAgICAgICAgICAg
ICAgIGNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAg
ICB9OworICAgIH0KK30gKTsKKworCisKKworLy8gUHJldmVudCBhdXRvLWV4ZWN1dGlvbiBvZiBz
Y3JpcHRzIHdoZW4gbm8gZXhwbGljaXQgZGF0YVR5cGUgd2FzIHByb3ZpZGVkIChTZWUgZ2gtMjQz
MikKK2pRdWVyeS5hamF4UHJlZmlsdGVyKCBmdW5jdGlvbiggcyApIHsKKyAgICBpZiAoIHMuY3Jv
c3NEb21haW4gKSB7CisgICAgICAgIHMuY29udGVudHMuc2NyaXB0ID0gZmFsc2U7CisgICAgfQor
fSApOworCisvLyBJbnN0YWxsIHNjcmlwdCBkYXRhVHlwZQoralF1ZXJ5LmFqYXhTZXR1cCggewor
ICAgIGFjY2VwdHM6IHsKKyAgICAgICAgc2NyaXB0OiAidGV4dC9qYXZhc2NyaXB0LCBhcHBsaWNh
dGlvbi9qYXZhc2NyaXB0LCAiICsKKyAgICAgICAgICAgICJhcHBsaWNhdGlvbi9lY21hc2NyaXB0
LCBhcHBsaWNhdGlvbi94LWVjbWFzY3JpcHQiCisgICAgfSwKKyAgICBjb250ZW50czogeworICAg
ICAgICBzY3JpcHQ6IC9cYig/OmphdmF8ZWNtYSlzY3JpcHRcYi8KKyAgICB9LAorICAgIGNvbnZl
cnRlcnM6IHsKKyAgICAgICAgInRleHQgc2NyaXB0IjogZnVuY3Rpb24oIHRleHQgKSB7CisgICAg
ICAgICAgICBqUXVlcnkuZ2xvYmFsRXZhbCggdGV4dCApOworICAgICAgICAgICAgcmV0dXJuIHRl
eHQ7CisgICAgICAgIH0KKyAgICB9Cit9ICk7CisKKy8vIEhhbmRsZSBjYWNoZSdzIHNwZWNpYWwg
Y2FzZSBhbmQgY3Jvc3NEb21haW4KK2pRdWVyeS5hamF4UHJlZmlsdGVyKCAic2NyaXB0IiwgZnVu
Y3Rpb24oIHMgKSB7CisgICAgaWYgKCBzLmNhY2hlID09PSB1bmRlZmluZWQgKSB7CisgICAgICAg
IHMuY2FjaGUgPSBmYWxzZTsKKyAgICB9CisgICAgaWYgKCBzLmNyb3NzRG9tYWluICkgeworICAg
ICAgICBzLnR5cGUgPSAiR0VUIjsKKyAgICB9Cit9ICk7CisKKy8vIEJpbmQgc2NyaXB0IHRhZyBo
YWNrIHRyYW5zcG9ydAoralF1ZXJ5LmFqYXhUcmFuc3BvcnQoICJzY3JpcHQiLCBmdW5jdGlvbigg
cyApIHsKKworICAgIC8vIFRoaXMgdHJhbnNwb3J0IG9ubHkgZGVhbHMgd2l0aCBjcm9zcyBkb21h
aW4gcmVxdWVzdHMKKyAgICBpZiAoIHMuY3Jvc3NEb21haW4gKSB7CisgICAgICAgIHZhciBzY3Jp
cHQsIGNhbGxiYWNrOworICAgICAgICByZXR1cm4geworICAgICAgICAgICAgc2VuZDogZnVuY3Rp
b24oIF8sIGNvbXBsZXRlICkgeworICAgICAgICAgICAgICAgIHNjcmlwdCA9IGpRdWVyeSggIjxz
Y3JpcHQ+IiApLnByb3AoIHsKKyAgICAgICAgICAgICAgICAgICAgY2hhcnNldDogcy5zY3JpcHRD
aGFyc2V0LAorICAgICAgICAgICAgICAgICAgICBzcmM6IHMudXJsCisgICAgICAgICAgICAgICAg
fSApLm9uKAorICAgICAgICAgICAgICAgICAgICAibG9hZCBlcnJvciIsCisgICAgICAgICAgICAg
ICAgICAgIGNhbGxiYWNrID0gZnVuY3Rpb24oIGV2dCApIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHNjcmlwdC5yZW1vdmUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrID0g
bnVsbDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICggZXZ0ICkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbXBsZXRlKCBldnQudHlwZSA9PT0gImVycm9yIiA/IDQwNCA6IDIw
MCwgZXZ0LnR5cGUgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICk7CisKKyAgICAgICAgICAgICAgICAvLyBVc2UgbmF0
aXZlIERPTSBtYW5pcHVsYXRpb24gdG8gYXZvaWQgb3VyIGRvbU1hbmlwIEFKQVggdHJpY2tlcnkK
KyAgICAgICAgICAgICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKCBzY3JpcHRbIDAgXSAp
OworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGFib3J0OiBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoIGNhbGxiYWNrICkgeworICAgICAgICAgICAgICAgICAgICBjYWxsYmFj
aygpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9
Cit9ICk7CisKKworCisKK3ZhciBvbGRDYWxsYmFja3MgPSBbXSwKKyAgICByanNvbnAgPSAvKD0p
XD8oPz0mfCQpfFw/XD8vOworCisvLyBEZWZhdWx0IGpzb25wIHNldHRpbmdzCitqUXVlcnkuYWph
eFNldHVwKCB7CisgICAganNvbnA6ICJjYWxsYmFjayIsCisgICAganNvbnBDYWxsYmFjazogZnVu
Y3Rpb24oKSB7CisgICAgICAgIHZhciBjYWxsYmFjayA9IG9sZENhbGxiYWNrcy5wb3AoKSB8fCAo
IGpRdWVyeS5leHBhbmRvICsgIl8iICsgKCBub25jZSsrICkgKTsKKyAgICAgICAgdGhpc1sgY2Fs
bGJhY2sgXSA9IHRydWU7CisgICAgICAgIHJldHVybiBjYWxsYmFjazsKKyAgICB9Cit9ICk7CisK
Ky8vIERldGVjdCwgbm9ybWFsaXplIG9wdGlvbnMgYW5kIGluc3RhbGwgY2FsbGJhY2tzIGZvciBq
c29ucCByZXF1ZXN0cworalF1ZXJ5LmFqYXhQcmVmaWx0ZXIoICJqc29uIGpzb25wIiwgZnVuY3Rp
b24oIHMsIG9yaWdpbmFsU2V0dGluZ3MsIGpxWEhSICkgeworCisgICAgdmFyIGNhbGxiYWNrTmFt
ZSwgb3ZlcndyaXR0ZW4sIHJlc3BvbnNlQ29udGFpbmVyLAorICAgICAgICBqc29uUHJvcCA9IHMu
anNvbnAgIT09IGZhbHNlICYmICggcmpzb25wLnRlc3QoIHMudXJsICkgPworICAgICAgICAgICAg
InVybCIgOgorICAgICAgICAgICAgdHlwZW9mIHMuZGF0YSA9PT0gInN0cmluZyIgJiYKKyAgICAg
ICAgICAgICAgICAoIHMuY29udGVudFR5cGUgfHwgIiIgKQorICAgICAgICAgICAgICAgICAgICAu
aW5kZXhPZiggImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIgKSA9PT0gMCAmJgor
ICAgICAgICAgICAgICAgIHJqc29ucC50ZXN0KCBzLmRhdGEgKSAmJiAiZGF0YSIKKyAgICAgICAg
KTsKKworICAgIC8vIEhhbmRsZSBpZmYgdGhlIGV4cGVjdGVkIGRhdGEgdHlwZSBpcyAianNvbnAi
IG9yIHdlIGhhdmUgYSBwYXJhbWV0ZXIgdG8gc2V0CisgICAgaWYgKCBqc29uUHJvcCB8fCBzLmRh
dGFUeXBlc1sgMCBdID09PSAianNvbnAiICkgeworCisgICAgICAgIC8vIEdldCBjYWxsYmFjayBu
YW1lLCByZW1lbWJlcmluZyBwcmVleGlzdGluZyB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggaXQKKyAg
ICAgICAgY2FsbGJhY2tOYW1lID0gcy5qc29ucENhbGxiYWNrID0galF1ZXJ5LmlzRnVuY3Rpb24o
IHMuanNvbnBDYWxsYmFjayApID8KKyAgICAgICAgICAgIHMuanNvbnBDYWxsYmFjaygpIDoKKyAg
ICAgICAgICAgIHMuanNvbnBDYWxsYmFjazsKKworICAgICAgICAvLyBJbnNlcnQgY2FsbGJhY2sg
aW50byB1cmwgb3IgZm9ybSBkYXRhCisgICAgICAgIGlmICgganNvblByb3AgKSB7CisgICAgICAg
ICAgICBzWyBqc29uUHJvcCBdID0gc1sganNvblByb3AgXS5yZXBsYWNlKCByanNvbnAsICIkMSIg
KyBjYWxsYmFja05hbWUgKTsKKyAgICAgICAgfSBlbHNlIGlmICggcy5qc29ucCAhPT0gZmFsc2Ug
KSB7CisgICAgICAgICAgICBzLnVybCArPSAoIHJxdWVyeS50ZXN0KCBzLnVybCApID8gIiYiIDog
Ij8iICkgKyBzLmpzb25wICsgIj0iICsgY2FsbGJhY2tOYW1lOworICAgICAgICB9CisKKyAgICAg
ICAgLy8gVXNlIGRhdGEgY29udmVydGVyIHRvIHJldHJpZXZlIGpzb24gYWZ0ZXIgc2NyaXB0IGV4
ZWN1dGlvbgorICAgICAgICBzLmNvbnZlcnRlcnNbICJzY3JpcHQganNvbiIgXSA9IGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgaWYgKCAhcmVzcG9uc2VDb250YWluZXIgKSB7CisgICAgICAgICAg
ICAgICAgalF1ZXJ5LmVycm9yKCBjYWxsYmFja05hbWUgKyAiIHdhcyBub3QgY2FsbGVkIiApOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlQ29udGFpbmVyWyAwIF07
CisgICAgICAgIH07CisKKyAgICAgICAgLy8gRm9yY2UganNvbiBkYXRhVHlwZQorICAgICAgICBz
LmRhdGFUeXBlc1sgMCBdID0gImpzb24iOworCisgICAgICAgIC8vIEluc3RhbGwgY2FsbGJhY2sK
KyAgICAgICAgb3ZlcndyaXR0ZW4gPSB3aW5kb3dbIGNhbGxiYWNrTmFtZSBdOworICAgICAgICB3
aW5kb3dbIGNhbGxiYWNrTmFtZSBdID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICByZXNwb25z
ZUNvbnRhaW5lciA9IGFyZ3VtZW50czsKKyAgICAgICAgfTsKKworICAgICAgICAvLyBDbGVhbi11
cCBmdW5jdGlvbiAoZmlyZXMgYWZ0ZXIgY29udmVydGVycykKKyAgICAgICAganFYSFIuYWx3YXlz
KCBmdW5jdGlvbigpIHsKKworICAgICAgICAgICAgLy8gSWYgcHJldmlvdXMgdmFsdWUgZGlkbid0
IGV4aXN0IC0gcmVtb3ZlIGl0CisgICAgICAgICAgICBpZiAoIG92ZXJ3cml0dGVuID09PSB1bmRl
ZmluZWQgKSB7CisgICAgICAgICAgICAgICAgalF1ZXJ5KCB3aW5kb3cgKS5yZW1vdmVQcm9wKCBj
YWxsYmFja05hbWUgKTsKKworICAgICAgICAgICAgLy8gT3RoZXJ3aXNlIHJlc3RvcmUgcHJlZXhp
c3RpbmcgdmFsdWUKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgd2luZG93
WyBjYWxsYmFja05hbWUgXSA9IG92ZXJ3cml0dGVuOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAvLyBTYXZlIGJhY2sgYXMgZnJlZQorICAgICAgICAgICAgaWYgKCBzWyBjYWxsYmFja05h
bWUgXSApIHsKKworICAgICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHJlLXVzaW5nIHRo
ZSBvcHRpb25zIGRvZXNuJ3Qgc2NyZXcgdGhpbmdzIGFyb3VuZAorICAgICAgICAgICAgICAgIHMu
anNvbnBDYWxsYmFjayA9IG9yaWdpbmFsU2V0dGluZ3MuanNvbnBDYWxsYmFjazsKKworICAgICAg
ICAgICAgICAgIC8vIFNhdmUgdGhlIGNhbGxiYWNrIG5hbWUgZm9yIGZ1dHVyZSB1c2UKKyAgICAg
ICAgICAgICAgICBvbGRDYWxsYmFja3MucHVzaCggY2FsbGJhY2tOYW1lICk7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIC8vIENhbGwgaWYgaXQgd2FzIGEgZnVuY3Rpb24gYW5kIHdlIGhh
dmUgYSByZXNwb25zZQorICAgICAgICAgICAgaWYgKCByZXNwb25zZUNvbnRhaW5lciAmJiBqUXVl
cnkuaXNGdW5jdGlvbiggb3ZlcndyaXR0ZW4gKSApIHsKKyAgICAgICAgICAgICAgICBvdmVyd3Jp
dHRlbiggcmVzcG9uc2VDb250YWluZXJbIDAgXSApOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICByZXNwb25zZUNvbnRhaW5lciA9IG92ZXJ3cml0dGVuID0gdW5kZWZpbmVkOworICAgICAg
ICB9ICk7CisKKyAgICAgICAgLy8gRGVsZWdhdGUgdG8gc2NyaXB0CisgICAgICAgIHJldHVybiAi
c2NyaXB0IjsKKyAgICB9Cit9ICk7CisKKworCisKKy8vIFN1cHBvcnQ6IFNhZmFyaSA4IG9ubHkK
Ky8vIEluIFNhZmFyaSA4IGRvY3VtZW50cyBjcmVhdGVkIHZpYSBkb2N1bWVudC5pbXBsZW1lbnRh
dGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQKKy8vIGNvbGxhcHNlIHNpYmxpbmcgZm9ybXM6IHRoZSBz
ZWNvbmQgb25lIGJlY29tZXMgYSBjaGlsZCBvZiB0aGUgZmlyc3Qgb25lLgorLy8gQmVjYXVzZSBv
ZiB0aGF0LCB0aGlzIHNlY3VyaXR5IG1lYXN1cmUgaGFzIHRvIGJlIGRpc2FibGVkIGluIFNhZmFy
aSA4LgorLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzMzNwor
c3VwcG9ydC5jcmVhdGVIVE1MRG9jdW1lbnQgPSAoIGZ1bmN0aW9uKCkgeworICAgIHZhciBib2R5
ID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCAiIiApLmJvZHk7
CisgICAgYm9keS5pbm5lckhUTUwgPSAiPGZvcm0+PC9mb3JtPjxmb3JtPjwvZm9ybT4iOworICAg
IHJldHVybiBib2R5LmNoaWxkTm9kZXMubGVuZ3RoID09PSAyOworfSApKCk7CisKKworLy8gQXJn
dW1lbnQgImRhdGEiIHNob3VsZCBiZSBzdHJpbmcgb2YgaHRtbAorLy8gY29udGV4dCAob3B0aW9u
YWwpOiBJZiBzcGVjaWZpZWQsIHRoZSBmcmFnbWVudCB3aWxsIGJlIGNyZWF0ZWQgaW4gdGhpcyBj
b250ZXh0LAorLy8gZGVmYXVsdHMgdG8gZG9jdW1lbnQKKy8vIGtlZXBTY3JpcHRzIChvcHRpb25h
bCk6IElmIHRydWUsIHdpbGwgaW5jbHVkZSBzY3JpcHRzIHBhc3NlZCBpbiB0aGUgaHRtbCBzdHJp
bmcKK2pRdWVyeS5wYXJzZUhUTUwgPSBmdW5jdGlvbiggZGF0YSwgY29udGV4dCwga2VlcFNjcmlw
dHMgKSB7CisgICAgaWYgKCB0eXBlb2YgZGF0YSAhPT0gInN0cmluZyIgKSB7CisgICAgICAgIHJl
dHVybiBbXTsKKyAgICB9CisgICAgaWYgKCB0eXBlb2YgY29udGV4dCA9PT0gImJvb2xlYW4iICkg
eworICAgICAgICBrZWVwU2NyaXB0cyA9IGNvbnRleHQ7CisgICAgICAgIGNvbnRleHQgPSBmYWxz
ZTsKKyAgICB9CisKKyAgICB2YXIgYmFzZSwgcGFyc2VkLCBzY3JpcHRzOworCisgICAgaWYgKCAh
Y29udGV4dCApIHsKKworICAgICAgICAvLyBTdG9wIHNjcmlwdHMgb3IgaW5saW5lIGV2ZW50IGhh
bmRsZXJzIGZyb20gYmVpbmcgZXhlY3V0ZWQgaW1tZWRpYXRlbHkKKyAgICAgICAgLy8gYnkgdXNp
bmcgZG9jdW1lbnQuaW1wbGVtZW50YXRpb24KKyAgICAgICAgaWYgKCBzdXBwb3J0LmNyZWF0ZUhU
TUxEb2N1bWVudCApIHsKKyAgICAgICAgICAgIGNvbnRleHQgPSBkb2N1bWVudC5pbXBsZW1lbnRh
dGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoICIiICk7CisKKyAgICAgICAgICAgIC8vIFNldCB0aGUg
YmFzZSBocmVmIGZvciB0aGUgY3JlYXRlZCBkb2N1bWVudAorICAgICAgICAgICAgLy8gc28gYW55
IHBhcnNlZCBlbGVtZW50cyB3aXRoIFVSTHMKKyAgICAgICAgICAgIC8vIGFyZSBiYXNlZCBvbiB0
aGUgZG9jdW1lbnQncyBVUkwgKGdoLTI5NjUpCisgICAgICAgICAgICBiYXNlID0gY29udGV4dC5j
cmVhdGVFbGVtZW50KCAiYmFzZSIgKTsKKyAgICAgICAgICAgIGJhc2UuaHJlZiA9IGRvY3VtZW50
LmxvY2F0aW9uLmhyZWY7CisgICAgICAgICAgICBjb250ZXh0LmhlYWQuYXBwZW5kQ2hpbGQoIGJh
c2UgKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNvbnRleHQgPSBkb2N1bWVudDsK
KyAgICAgICAgfQorICAgIH0KKworICAgIHBhcnNlZCA9IHJzaW5nbGVUYWcuZXhlYyggZGF0YSAp
OworICAgIHNjcmlwdHMgPSAha2VlcFNjcmlwdHMgJiYgW107CisKKyAgICAvLyBTaW5nbGUgdGFn
CisgICAgaWYgKCBwYXJzZWQgKSB7CisgICAgICAgIHJldHVybiBbIGNvbnRleHQuY3JlYXRlRWxl
bWVudCggcGFyc2VkWyAxIF0gKSBdOworICAgIH0KKworICAgIHBhcnNlZCA9IGJ1aWxkRnJhZ21l
bnQoIFsgZGF0YSBdLCBjb250ZXh0LCBzY3JpcHRzICk7CisKKyAgICBpZiAoIHNjcmlwdHMgJiYg
c2NyaXB0cy5sZW5ndGggKSB7CisgICAgICAgIGpRdWVyeSggc2NyaXB0cyApLnJlbW92ZSgpOwor
ICAgIH0KKworICAgIHJldHVybiBqUXVlcnkubWVyZ2UoIFtdLCBwYXJzZWQuY2hpbGROb2RlcyAp
OworfTsKKworCisvKioKKyAqIExvYWQgYSB1cmwgaW50byBhIHBhZ2UKKyAqLworalF1ZXJ5LmZu
LmxvYWQgPSBmdW5jdGlvbiggdXJsLCBwYXJhbXMsIGNhbGxiYWNrICkgeworICAgIHZhciBzZWxl
Y3RvciwgdHlwZSwgcmVzcG9uc2UsCisgICAgICAgIHNlbGYgPSB0aGlzLAorICAgICAgICBvZmYg
PSB1cmwuaW5kZXhPZiggIiAiICk7CisKKyAgICBpZiAoIG9mZiA+IC0xICkgeworICAgICAgICBz
ZWxlY3RvciA9IHN0cmlwQW5kQ29sbGFwc2UoIHVybC5zbGljZSggb2ZmICkgKTsKKyAgICAgICAg
dXJsID0gdXJsLnNsaWNlKCAwLCBvZmYgKTsKKyAgICB9CisKKyAgICAvLyBJZiBpdCdzIGEgZnVu
Y3Rpb24KKyAgICBpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBwYXJhbXMgKSApIHsKKworICAgICAg
ICAvLyBXZSBhc3N1bWUgdGhhdCBpdCdzIHRoZSBjYWxsYmFjaworICAgICAgICBjYWxsYmFjayA9
IHBhcmFtczsKKyAgICAgICAgcGFyYW1zID0gdW5kZWZpbmVkOworCisgICAgLy8gT3RoZXJ3aXNl
LCBidWlsZCBhIHBhcmFtIHN0cmluZworICAgIH0gZWxzZSBpZiAoIHBhcmFtcyAmJiB0eXBlb2Yg
cGFyYW1zID09PSAib2JqZWN0IiApIHsKKyAgICAgICAgdHlwZSA9ICJQT1NUIjsKKyAgICB9CisK
KyAgICAvLyBJZiB3ZSBoYXZlIGVsZW1lbnRzIHRvIG1vZGlmeSwgbWFrZSB0aGUgcmVxdWVzdAor
ICAgIGlmICggc2VsZi5sZW5ndGggPiAwICkgeworICAgICAgICBqUXVlcnkuYWpheCggeworICAg
ICAgICAgICAgdXJsOiB1cmwsCisKKyAgICAgICAgICAgIC8vIElmICJ0eXBlIiB2YXJpYWJsZSBp
cyB1bmRlZmluZWQsIHRoZW4gIkdFVCIgbWV0aG9kIHdpbGwgYmUgdXNlZC4KKyAgICAgICAgICAg
IC8vIE1ha2UgdmFsdWUgb2YgdGhpcyBmaWVsZCBleHBsaWNpdCBzaW5jZQorICAgICAgICAgICAg
Ly8gdXNlciBjYW4gb3ZlcnJpZGUgaXQgdGhyb3VnaCBhamF4U2V0dXAgbWV0aG9kCisgICAgICAg
ICAgICB0eXBlOiB0eXBlIHx8ICJHRVQiLAorICAgICAgICAgICAgZGF0YVR5cGU6ICJodG1sIiwK
KyAgICAgICAgICAgIGRhdGE6IHBhcmFtcworICAgICAgICB9ICkuZG9uZSggZnVuY3Rpb24oIHJl
c3BvbnNlVGV4dCApIHsKKworICAgICAgICAgICAgLy8gU2F2ZSByZXNwb25zZSBmb3IgdXNlIGlu
IGNvbXBsZXRlIGNhbGxiYWNrCisgICAgICAgICAgICByZXNwb25zZSA9IGFyZ3VtZW50czsKKwor
ICAgICAgICAgICAgc2VsZi5odG1sKCBzZWxlY3RvciA/CisKKyAgICAgICAgICAgICAgICAvLyBJ
ZiBhIHNlbGVjdG9yIHdhcyBzcGVjaWZpZWQsIGxvY2F0ZSB0aGUgcmlnaHQgZWxlbWVudHMgaW4g
YSBkdW1teSBkaXYKKyAgICAgICAgICAgICAgICAvLyBFeGNsdWRlIHNjcmlwdHMgdG8gYXZvaWQg
SUUgJ1Blcm1pc3Npb24gRGVuaWVkJyBlcnJvcnMKKyAgICAgICAgICAgICAgICBqUXVlcnkoICI8
ZGl2PiIgKS5hcHBlbmQoIGpRdWVyeS5wYXJzZUhUTUwoIHJlc3BvbnNlVGV4dCApICkuZmluZCgg
c2VsZWN0b3IgKSA6CisKKyAgICAgICAgICAgICAgICAvLyBPdGhlcndpc2UgdXNlIHRoZSBmdWxs
IHJlc3VsdAorICAgICAgICAgICAgICAgIHJlc3BvbnNlVGV4dCApOworCisgICAgICAgIC8vIElm
IHRoZSByZXF1ZXN0IHN1Y2NlZWRzLCB0aGlzIGZ1bmN0aW9uIGdldHMgImRhdGEiLCAic3RhdHVz
IiwgImpxWEhSIgorICAgICAgICAvLyBidXQgdGhleSBhcmUgaWdub3JlZCBiZWNhdXNlIHJlc3Bv
bnNlIHdhcyBzZXQgYWJvdmUuCisgICAgICAgIC8vIElmIGl0IGZhaWxzLCB0aGlzIGZ1bmN0aW9u
IGdldHMgImpxWEhSIiwgInN0YXR1cyIsICJlcnJvciIKKyAgICAgICAgfSApLmFsd2F5cyggY2Fs
bGJhY2sgJiYgZnVuY3Rpb24oIGpxWEhSLCBzdGF0dXMgKSB7CisgICAgICAgICAgICBzZWxmLmVh
Y2goIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGNhbGxiYWNrLmFwcGx5KCB0aGlzLCBy
ZXNwb25zZSB8fCBbIGpxWEhSLnJlc3BvbnNlVGV4dCwgc3RhdHVzLCBqcVhIUiBdICk7CisgICAg
ICAgICAgICB9ICk7CisgICAgICAgIH0gKTsKKyAgICB9CisKKyAgICByZXR1cm4gdGhpczsKK307
CisKKworCisKKy8vIEF0dGFjaCBhIGJ1bmNoIG9mIGZ1bmN0aW9ucyBmb3IgaGFuZGxpbmcgY29t
bW9uIEFKQVggZXZlbnRzCitqUXVlcnkuZWFjaCggWworICAgICJhamF4U3RhcnQiLAorICAgICJh
amF4U3RvcCIsCisgICAgImFqYXhDb21wbGV0ZSIsCisgICAgImFqYXhFcnJvciIsCisgICAgImFq
YXhTdWNjZXNzIiwKKyAgICAiYWpheFNlbmQiCitdLCBmdW5jdGlvbiggaSwgdHlwZSApIHsKKyAg
ICBqUXVlcnkuZm5bIHR5cGUgXSA9IGZ1bmN0aW9uKCBmbiApIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMub24oIHR5cGUsIGZuICk7CisgICAgfTsKK30gKTsKKworCisKKworalF1ZXJ5LmV4cHIucHNl
dWRvcy5hbmltYXRlZCA9IGZ1bmN0aW9uKCBlbGVtICkgeworICAgIHJldHVybiBqUXVlcnkuZ3Jl
cCggalF1ZXJ5LnRpbWVycywgZnVuY3Rpb24oIGZuICkgeworICAgICAgICByZXR1cm4gZWxlbSA9
PT0gZm4uZWxlbTsKKyAgICB9ICkubGVuZ3RoOworfTsKKworCisKKworLyoqCisgKiBHZXRzIGEg
d2luZG93IGZyb20gYW4gZWxlbWVudAorICovCitmdW5jdGlvbiBnZXRXaW5kb3coIGVsZW0gKSB7
CisgICAgcmV0dXJuIGpRdWVyeS5pc1dpbmRvdyggZWxlbSApID8gZWxlbSA6IGVsZW0ubm9kZVR5
cGUgPT09IDkgJiYgZWxlbS5kZWZhdWx0VmlldzsKK30KKworalF1ZXJ5Lm9mZnNldCA9IHsKKyAg
ICBzZXRPZmZzZXQ6IGZ1bmN0aW9uKCBlbGVtLCBvcHRpb25zLCBpICkgeworICAgICAgICB2YXIg
Y3VyUG9zaXRpb24sIGN1ckxlZnQsIGN1ckNTU1RvcCwgY3VyVG9wLCBjdXJPZmZzZXQsIGN1ckNT
U0xlZnQsIGNhbGN1bGF0ZVBvc2l0aW9uLAorICAgICAgICAgICAgcG9zaXRpb24gPSBqUXVlcnku
Y3NzKCBlbGVtLCAicG9zaXRpb24iICksCisgICAgICAgICAgICBjdXJFbGVtID0galF1ZXJ5KCBl
bGVtICksCisgICAgICAgICAgICBwcm9wcyA9IHt9OworCisgICAgICAgIC8vIFNldCBwb3NpdGlv
biBmaXJzdCwgaW4tY2FzZSB0b3AvbGVmdCBhcmUgc2V0IGV2ZW4gb24gc3RhdGljIGVsZW0KKyAg
ICAgICAgaWYgKCBwb3NpdGlvbiA9PT0gInN0YXRpYyIgKSB7CisgICAgICAgICAgICBlbGVtLnN0
eWxlLnBvc2l0aW9uID0gInJlbGF0aXZlIjsKKyAgICAgICAgfQorCisgICAgICAgIGN1ck9mZnNl
dCA9IGN1ckVsZW0ub2Zmc2V0KCk7CisgICAgICAgIGN1ckNTU1RvcCA9IGpRdWVyeS5jc3MoIGVs
ZW0sICJ0b3AiICk7CisgICAgICAgIGN1ckNTU0xlZnQgPSBqUXVlcnkuY3NzKCBlbGVtLCAibGVm
dCIgKTsKKyAgICAgICAgY2FsY3VsYXRlUG9zaXRpb24gPSAoIHBvc2l0aW9uID09PSAiYWJzb2x1
dGUiIHx8IHBvc2l0aW9uID09PSAiZml4ZWQiICkgJiYKKyAgICAgICAgICAgICggY3VyQ1NTVG9w
ICsgY3VyQ1NTTGVmdCApLmluZGV4T2YoICJhdXRvIiApID4gLTE7CisKKyAgICAgICAgLy8gTmVl
ZCB0byBiZSBhYmxlIHRvIGNhbGN1bGF0ZSBwb3NpdGlvbiBpZiBlaXRoZXIKKyAgICAgICAgLy8g
dG9wIG9yIGxlZnQgaXMgYXV0byBhbmQgcG9zaXRpb24gaXMgZWl0aGVyIGFic29sdXRlIG9yIGZp
eGVkCisgICAgICAgIGlmICggY2FsY3VsYXRlUG9zaXRpb24gKSB7CisgICAgICAgICAgICBjdXJQ
b3NpdGlvbiA9IGN1ckVsZW0ucG9zaXRpb24oKTsKKyAgICAgICAgICAgIGN1clRvcCA9IGN1clBv
c2l0aW9uLnRvcDsKKyAgICAgICAgICAgIGN1ckxlZnQgPSBjdXJQb3NpdGlvbi5sZWZ0OworCisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjdXJUb3AgPSBwYXJzZUZsb2F0KCBjdXJDU1NU
b3AgKSB8fCAwOworICAgICAgICAgICAgY3VyTGVmdCA9IHBhcnNlRmxvYXQoIGN1ckNTU0xlZnQg
KSB8fCAwOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggb3B0
aW9ucyApICkgeworCisgICAgICAgICAgICAvLyBVc2UgalF1ZXJ5LmV4dGVuZCBoZXJlIHRvIGFs
bG93IG1vZGlmaWNhdGlvbiBvZiBjb29yZGluYXRlcyBhcmd1bWVudCAoZ2gtMTg0OCkKKyAgICAg
ICAgICAgIG9wdGlvbnMgPSBvcHRpb25zLmNhbGwoIGVsZW0sIGksIGpRdWVyeS5leHRlbmQoIHt9
LCBjdXJPZmZzZXQgKSApOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCBvcHRpb25zLnRvcCAh
PSBudWxsICkgeworICAgICAgICAgICAgcHJvcHMudG9wID0gKCBvcHRpb25zLnRvcCAtIGN1ck9m
ZnNldC50b3AgKSArIGN1clRvcDsKKyAgICAgICAgfQorICAgICAgICBpZiAoIG9wdGlvbnMubGVm
dCAhPSBudWxsICkgeworICAgICAgICAgICAgcHJvcHMubGVmdCA9ICggb3B0aW9ucy5sZWZ0IC0g
Y3VyT2Zmc2V0LmxlZnQgKSArIGN1ckxlZnQ7CisgICAgICAgIH0KKworICAgICAgICBpZiAoICJ1
c2luZyIgaW4gb3B0aW9ucyApIHsKKyAgICAgICAgICAgIG9wdGlvbnMudXNpbmcuY2FsbCggZWxl
bSwgcHJvcHMgKTsKKworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgY3VyRWxlbS5jc3Mo
IHByb3BzICk7CisgICAgICAgIH0KKyAgICB9Cit9OworCitqUXVlcnkuZm4uZXh0ZW5kKCB7Cisg
ICAgb2Zmc2V0OiBmdW5jdGlvbiggb3B0aW9ucyApIHsKKworICAgICAgICAvLyBQcmVzZXJ2ZSBj
aGFpbmluZyBmb3Igc2V0dGVyCisgICAgICAgIGlmICggYXJndW1lbnRzLmxlbmd0aCApIHsKKyAg
ICAgICAgICAgIHJldHVybiBvcHRpb25zID09PSB1bmRlZmluZWQgPworICAgICAgICAgICAgICAg
IHRoaXMgOgorICAgICAgICAgICAgICAgIHRoaXMuZWFjaCggZnVuY3Rpb24oIGkgKSB7CisgICAg
ICAgICAgICAgICAgICAgIGpRdWVyeS5vZmZzZXQuc2V0T2Zmc2V0KCB0aGlzLCBvcHRpb25zLCBp
ICk7CisgICAgICAgICAgICAgICAgfSApOworICAgICAgICB9CisKKyAgICAgICAgdmFyIGRvY0Vs
ZW0sIHdpbiwgcmVjdCwgZG9jLAorICAgICAgICAgICAgZWxlbSA9IHRoaXNbIDAgXTsKKworICAg
ICAgICBpZiAoICFlbGVtICkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAg
ICAgICAgLy8gU3VwcG9ydDogSUUgPD0xMSBvbmx5CisgICAgICAgIC8vIFJ1bm5pbmcgZ2V0Qm91
bmRpbmdDbGllbnRSZWN0IG9uIGEKKyAgICAgICAgLy8gZGlzY29ubmVjdGVkIG5vZGUgaW4gSUUg
dGhyb3dzIGFuIGVycm9yCisgICAgICAgIGlmICggIWVsZW0uZ2V0Q2xpZW50UmVjdHMoKS5sZW5n
dGggKSB7CisgICAgICAgICAgICByZXR1cm4geyB0b3A6IDAsIGxlZnQ6IDAgfTsKKyAgICAgICAg
fQorCisgICAgICAgIHJlY3QgPSBlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworCisgICAg
ICAgIC8vIE1ha2Ugc3VyZSBlbGVtZW50IGlzIG5vdCBoaWRkZW4gKGRpc3BsYXk6IG5vbmUpCisg
ICAgICAgIGlmICggcmVjdC53aWR0aCB8fCByZWN0LmhlaWdodCApIHsKKyAgICAgICAgICAgIGRv
YyA9IGVsZW0ub3duZXJEb2N1bWVudDsKKyAgICAgICAgICAgIHdpbiA9IGdldFdpbmRvdyggZG9j
ICk7CisgICAgICAgICAgICBkb2NFbGVtID0gZG9jLmRvY3VtZW50RWxlbWVudDsKKworICAgICAg
ICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICAgICB0b3A6IHJlY3QudG9wICsgd2luLnBhZ2VZ
T2Zmc2V0IC0gZG9jRWxlbS5jbGllbnRUb3AsCisgICAgICAgICAgICAgICAgbGVmdDogcmVjdC5s
ZWZ0ICsgd2luLnBhZ2VYT2Zmc2V0IC0gZG9jRWxlbS5jbGllbnRMZWZ0CisgICAgICAgICAgICB9
OworICAgICAgICB9CisKKyAgICAgICAgLy8gUmV0dXJuIHplcm9zIGZvciBkaXNjb25uZWN0ZWQg
YW5kIGhpZGRlbiBlbGVtZW50cyAoZ2gtMjMxMCkKKyAgICAgICAgcmV0dXJuIHJlY3Q7CisgICAg
fSwKKworICAgIHBvc2l0aW9uOiBmdW5jdGlvbigpIHsKKyAgICAgICAgaWYgKCAhdGhpc1sgMCBd
ICkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdmFyIG9mZnNl
dFBhcmVudCwgb2Zmc2V0LAorICAgICAgICAgICAgZWxlbSA9IHRoaXNbIDAgXSwKKyAgICAgICAg
ICAgIHBhcmVudE9mZnNldCA9IHsgdG9wOiAwLCBsZWZ0OiAwIH07CisKKyAgICAgICAgLy8gRml4
ZWQgZWxlbWVudHMgYXJlIG9mZnNldCBmcm9tIHdpbmRvdyAocGFyZW50T2Zmc2V0ID0ge3RvcDow
LCBsZWZ0OiAwfSwKKyAgICAgICAgLy8gYmVjYXVzZSBpdCBpcyBpdHMgb25seSBvZmZzZXQgcGFy
ZW50CisgICAgICAgIGlmICggalF1ZXJ5LmNzcyggZWxlbSwgInBvc2l0aW9uIiApID09PSAiZml4
ZWQiICkgeworCisgICAgICAgICAgICAvLyBBc3N1bWUgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGlz
IHRoZXJlIHdoZW4gY29tcHV0ZWQgcG9zaXRpb24gaXMgZml4ZWQKKyAgICAgICAgICAgIG9mZnNl
dCA9IGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CisKKyAgICAgICAgfSBlbHNlIHsKKwor
ICAgICAgICAgICAgLy8gR2V0ICpyZWFsKiBvZmZzZXRQYXJlbnQKKyAgICAgICAgICAgIG9mZnNl
dFBhcmVudCA9IHRoaXMub2Zmc2V0UGFyZW50KCk7CisKKyAgICAgICAgICAgIC8vIEdldCBjb3Jy
ZWN0IG9mZnNldHMKKyAgICAgICAgICAgIG9mZnNldCA9IHRoaXMub2Zmc2V0KCk7CisgICAgICAg
ICAgICBpZiAoICFqUXVlcnkubm9kZU5hbWUoIG9mZnNldFBhcmVudFsgMCBdLCAiaHRtbCIgKSAp
IHsKKyAgICAgICAgICAgICAgICBwYXJlbnRPZmZzZXQgPSBvZmZzZXRQYXJlbnQub2Zmc2V0KCk7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEFkZCBvZmZzZXRQYXJlbnQgYm9yZGVy
cworICAgICAgICAgICAgcGFyZW50T2Zmc2V0ID0geworICAgICAgICAgICAgICAgIHRvcDogcGFy
ZW50T2Zmc2V0LnRvcCArIGpRdWVyeS5jc3MoIG9mZnNldFBhcmVudFsgMCBdLCAiYm9yZGVyVG9w
V2lkdGgiLCB0cnVlICksCisgICAgICAgICAgICAgICAgbGVmdDogcGFyZW50T2Zmc2V0LmxlZnQg
KyBqUXVlcnkuY3NzKCBvZmZzZXRQYXJlbnRbIDAgXSwgImJvcmRlckxlZnRXaWR0aCIsIHRydWUg
KQorICAgICAgICAgICAgfTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFN1YnRyYWN0IHBhcmVu
dCBvZmZzZXRzIGFuZCBlbGVtZW50IG1hcmdpbnMKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAg
ICAgIHRvcDogb2Zmc2V0LnRvcCAtIHBhcmVudE9mZnNldC50b3AgLSBqUXVlcnkuY3NzKCBlbGVt
LCAibWFyZ2luVG9wIiwgdHJ1ZSApLAorICAgICAgICAgICAgbGVmdDogb2Zmc2V0LmxlZnQgLSBw
YXJlbnRPZmZzZXQubGVmdCAtIGpRdWVyeS5jc3MoIGVsZW0sICJtYXJnaW5MZWZ0IiwgdHJ1ZSAp
CisgICAgICAgIH07CisgICAgfSwKKworICAgIC8vIFRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuIGRv
Y3VtZW50RWxlbWVudCBpbiB0aGUgZm9sbG93aW5nIGNhc2VzOgorICAgIC8vIDEpIEZvciB0aGUg
ZWxlbWVudCBpbnNpZGUgdGhlIGlmcmFtZSB3aXRob3V0IG9mZnNldFBhcmVudCwgdGhpcyBtZXRo
b2Qgd2lsbCByZXR1cm4KKyAgICAvLyAgICBkb2N1bWVudEVsZW1lbnQgb2YgdGhlIHBhcmVudCB3
aW5kb3cKKyAgICAvLyAyKSBGb3IgdGhlIGhpZGRlbiBvciBkZXRhY2hlZCBlbGVtZW50CisgICAg
Ly8gMykgRm9yIGJvZHkgb3IgaHRtbCBlbGVtZW50LCBpLmUuIGluIGNhc2Ugb2YgdGhlIGh0bWwg
bm9kZSAtIGl0IHdpbGwgcmV0dXJuIGl0c2VsZgorICAgIC8vCisgICAgLy8gYnV0IHRob3NlIGV4
Y2VwdGlvbnMgd2VyZSBuZXZlciBwcmVzZW50ZWQgYXMgYSByZWFsIGxpZmUgdXNlLWNhc2VzCisg
ICAgLy8gYW5kIG1pZ2h0IGJlIGNvbnNpZGVyZWQgYXMgbW9yZSBwcmVmZXJhYmxlIHJlc3VsdHMu
CisgICAgLy8KKyAgICAvLyBUaGlzIGxvZ2ljLCBob3dldmVyLCBpcyBub3QgZ3VhcmFudGVlZCBh
bmQgY2FuIGNoYW5nZSBhdCBhbnkgcG9pbnQgaW4gdGhlIGZ1dHVyZQorICAgIG9mZnNldFBhcmVu
dDogZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiB0aGlzLm1hcCggZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICB2YXIgb2Zmc2V0UGFyZW50ID0gdGhpcy5vZmZzZXRQYXJlbnQ7CisKKyAgICAg
ICAgICAgIHdoaWxlICggb2Zmc2V0UGFyZW50ICYmIGpRdWVyeS5jc3MoIG9mZnNldFBhcmVudCwg
InBvc2l0aW9uIiApID09PSAic3RhdGljIiApIHsKKyAgICAgICAgICAgICAgICBvZmZzZXRQYXJl
bnQgPSBvZmZzZXRQYXJlbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICByZXR1cm4gb2Zmc2V0UGFyZW50IHx8IGRvY3VtZW50RWxlbWVudDsKKyAgICAgICAgfSAp
OworICAgIH0KK30gKTsKKworLy8gQ3JlYXRlIHNjcm9sbExlZnQgYW5kIHNjcm9sbFRvcCBtZXRo
b2RzCitqUXVlcnkuZWFjaCggeyBzY3JvbGxMZWZ0OiAicGFnZVhPZmZzZXQiLCBzY3JvbGxUb3A6
ICJwYWdlWU9mZnNldCIgfSwgZnVuY3Rpb24oIG1ldGhvZCwgcHJvcCApIHsKKyAgICB2YXIgdG9w
ID0gInBhZ2VZT2Zmc2V0IiA9PT0gcHJvcDsKKworICAgIGpRdWVyeS5mblsgbWV0aG9kIF0gPSBm
dW5jdGlvbiggdmFsICkgeworICAgICAgICByZXR1cm4gYWNjZXNzKCB0aGlzLCBmdW5jdGlvbigg
ZWxlbSwgbWV0aG9kLCB2YWwgKSB7CisgICAgICAgICAgICB2YXIgd2luID0gZ2V0V2luZG93KCBl
bGVtICk7CisKKyAgICAgICAgICAgIGlmICggdmFsID09PSB1bmRlZmluZWQgKSB7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHdpbiA/IHdpblsgcHJvcCBdIDogZWxlbVsgbWV0aG9kIF07CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICggd2luICkgeworICAgICAgICAgICAgICAgIHdp
bi5zY3JvbGxUbygKKyAgICAgICAgICAgICAgICAgICAgIXRvcCA/IHZhbCA6IHdpbi5wYWdlWE9m
ZnNldCwKKyAgICAgICAgICAgICAgICAgICAgdG9wID8gdmFsIDogd2luLnBhZ2VZT2Zmc2V0Cisg
ICAgICAgICAgICAgICAgKTsKKworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBlbGVtWyBtZXRob2QgXSA9IHZhbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwgbWV0aG9k
LCB2YWwsIGFyZ3VtZW50cy5sZW5ndGggKTsKKyAgICB9OworfSApOworCisvLyBTdXBwb3J0OiBT
YWZhcmkgPD03IC0gOS4xLCBDaHJvbWUgPD0zNyAtIDQ5CisvLyBBZGQgdGhlIHRvcC9sZWZ0IGNz
c0hvb2tzIHVzaW5nIGpRdWVyeS5mbi5wb3NpdGlvbgorLy8gV2Via2l0IGJ1ZzogaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5MDg0CisvLyBCbGluayBidWc6IGh0dHBz
Oi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTU4OTM0Nwor
Ly8gZ2V0Q29tcHV0ZWRTdHlsZSByZXR1cm5zIHBlcmNlbnQgd2hlbiBzcGVjaWZpZWQgZm9yIHRv
cC9sZWZ0L2JvdHRvbS9yaWdodDsKKy8vIHJhdGhlciB0aGFuIG1ha2UgdGhlIGNzcyBtb2R1bGUg
ZGVwZW5kIG9uIHRoZSBvZmZzZXQgbW9kdWxlLCBqdXN0IGNoZWNrIGZvciBpdCBoZXJlCitqUXVl
cnkuZWFjaCggWyAidG9wIiwgImxlZnQiIF0sIGZ1bmN0aW9uKCBpLCBwcm9wICkgeworICAgIGpR
dWVyeS5jc3NIb29rc1sgcHJvcCBdID0gYWRkR2V0SG9va0lmKCBzdXBwb3J0LnBpeGVsUG9zaXRp
b24sCisgICAgICAgIGZ1bmN0aW9uKCBlbGVtLCBjb21wdXRlZCApIHsKKyAgICAgICAgICAgIGlm
ICggY29tcHV0ZWQgKSB7CisgICAgICAgICAgICAgICAgY29tcHV0ZWQgPSBjdXJDU1MoIGVsZW0s
IHByb3AgKTsKKworICAgICAgICAgICAgICAgIC8vIElmIGN1ckNTUyByZXR1cm5zIHBlcmNlbnRh
Z2UsIGZhbGxiYWNrIHRvIG9mZnNldAorICAgICAgICAgICAgICAgIHJldHVybiBybnVtbm9ucHgu
dGVzdCggY29tcHV0ZWQgKSA/CisgICAgICAgICAgICAgICAgICAgIGpRdWVyeSggZWxlbSApLnBv
c2l0aW9uKClbIHByb3AgXSArICJweCIgOgorICAgICAgICAgICAgICAgICAgICBjb21wdXRlZDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICk7Cit9ICk7CisKKworLy8gQ3JlYXRlIGlu
bmVySGVpZ2h0LCBpbm5lcldpZHRoLCBoZWlnaHQsIHdpZHRoLCBvdXRlckhlaWdodCBhbmQgb3V0
ZXJXaWR0aCBtZXRob2RzCitqUXVlcnkuZWFjaCggeyBIZWlnaHQ6ICJoZWlnaHQiLCBXaWR0aDog
IndpZHRoIiB9LCBmdW5jdGlvbiggbmFtZSwgdHlwZSApIHsKKyAgICBqUXVlcnkuZWFjaCggeyBw
YWRkaW5nOiAiaW5uZXIiICsgbmFtZSwgY29udGVudDogdHlwZSwgIiI6ICJvdXRlciIgKyBuYW1l
IH0sCisgICAgICAgIGZ1bmN0aW9uKCBkZWZhdWx0RXh0cmEsIGZ1bmNOYW1lICkgeworCisgICAg
ICAgIC8vIE1hcmdpbiBpcyBvbmx5IGZvciBvdXRlckhlaWdodCwgb3V0ZXJXaWR0aAorICAgICAg
ICBqUXVlcnkuZm5bIGZ1bmNOYW1lIF0gPSBmdW5jdGlvbiggbWFyZ2luLCB2YWx1ZSApIHsKKyAg
ICAgICAgICAgIHZhciBjaGFpbmFibGUgPSBhcmd1bWVudHMubGVuZ3RoICYmICggZGVmYXVsdEV4
dHJhIHx8IHR5cGVvZiBtYXJnaW4gIT09ICJib29sZWFuIiApLAorICAgICAgICAgICAgICAgIGV4
dHJhID0gZGVmYXVsdEV4dHJhIHx8ICggbWFyZ2luID09PSB0cnVlIHx8IHZhbHVlID09PSB0cnVl
ID8gIm1hcmdpbiIgOiAiYm9yZGVyIiApOworCisgICAgICAgICAgICByZXR1cm4gYWNjZXNzKCB0
aGlzLCBmdW5jdGlvbiggZWxlbSwgdHlwZSwgdmFsdWUgKSB7CisgICAgICAgICAgICAgICAgdmFy
IGRvYzsKKworICAgICAgICAgICAgICAgIGlmICggalF1ZXJ5LmlzV2luZG93KCBlbGVtICkgKSB7
CisKKyAgICAgICAgICAgICAgICAgICAgLy8gJCggd2luZG93ICkub3V0ZXJXaWR0aC9IZWlnaHQg
cmV0dXJuIHcvaCBpbmNsdWRpbmcgc2Nyb2xsYmFycyAoZ2gtMTcyOSkKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZ1bmNOYW1lLmluZGV4T2YoICJvdXRlciIgKSA9PT0gMCA/CisgICAgICAg
ICAgICAgICAgICAgICAgICBlbGVtWyAiaW5uZXIiICsgbmFtZSBdIDoKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGVsZW0uZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50WyAiY2xpZW50IiArIG5hbWUg
XTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBHZXQgZG9jdW1lbnQg
d2lkdGggb3IgaGVpZ2h0CisgICAgICAgICAgICAgICAgaWYgKCBlbGVtLm5vZGVUeXBlID09PSA5
ICkgeworICAgICAgICAgICAgICAgICAgICBkb2MgPSBlbGVtLmRvY3VtZW50RWxlbWVudDsKKwor
ICAgICAgICAgICAgICAgICAgICAvLyBFaXRoZXIgc2Nyb2xsW1dpZHRoL0hlaWdodF0gb3Igb2Zm
c2V0W1dpZHRoL0hlaWdodF0gb3IgY2xpZW50W1dpZHRoL0hlaWdodF0sCisgICAgICAgICAgICAg
ICAgICAgIC8vIHdoaWNoZXZlciBpcyBncmVhdGVzdAorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gTWF0aC5tYXgoCisgICAgICAgICAgICAgICAgICAgICAgICBlbGVtLmJvZHlbICJzY3JvbGwi
ICsgbmFtZSBdLCBkb2NbICJzY3JvbGwiICsgbmFtZSBdLAorICAgICAgICAgICAgICAgICAgICAg
ICAgZWxlbS5ib2R5WyAib2Zmc2V0IiArIG5hbWUgXSwgZG9jWyAib2Zmc2V0IiArIG5hbWUgXSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIGRvY1sgImNsaWVudCIgKyBuYW1lIF0KKyAgICAgICAg
ICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICByZXR1
cm4gdmFsdWUgPT09IHVuZGVmaW5lZCA/CisKKyAgICAgICAgICAgICAgICAgICAgLy8gR2V0IHdp
ZHRoIG9yIGhlaWdodCBvbiB0aGUgZWxlbWVudCwgcmVxdWVzdGluZyBidXQgbm90IGZvcmNpbmcg
cGFyc2VGbG9hdAorICAgICAgICAgICAgICAgICAgICBqUXVlcnkuY3NzKCBlbGVtLCB0eXBlLCBl
eHRyYSApIDoKKworICAgICAgICAgICAgICAgICAgICAvLyBTZXQgd2lkdGggb3IgaGVpZ2h0IG9u
IHRoZSBlbGVtZW50CisgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5zdHlsZSggZWxlbSwgdHlw
ZSwgdmFsdWUsIGV4dHJhICk7CisgICAgICAgICAgICB9LCB0eXBlLCBjaGFpbmFibGUgPyBtYXJn
aW4gOiB1bmRlZmluZWQsIGNoYWluYWJsZSApOworICAgICAgICB9OworICAgIH0gKTsKK30gKTsK
KworCitqUXVlcnkuZm4uZXh0ZW5kKCB7CisKKyAgICBiaW5kOiBmdW5jdGlvbiggdHlwZXMsIGRh
dGEsIGZuICkgeworICAgICAgICByZXR1cm4gdGhpcy5vbiggdHlwZXMsIG51bGwsIGRhdGEsIGZu
ICk7CisgICAgfSwKKyAgICB1bmJpbmQ6IGZ1bmN0aW9uKCB0eXBlcywgZm4gKSB7CisgICAgICAg
IHJldHVybiB0aGlzLm9mZiggdHlwZXMsIG51bGwsIGZuICk7CisgICAgfSwKKworICAgIGRlbGVn
YXRlOiBmdW5jdGlvbiggc2VsZWN0b3IsIHR5cGVzLCBkYXRhLCBmbiApIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMub24oIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4gKTsKKyAgICB9LAorICAgIHVu
ZGVsZWdhdGU6IGZ1bmN0aW9uKCBzZWxlY3RvciwgdHlwZXMsIGZuICkgeworCisgICAgICAgIC8v
ICggbmFtZXNwYWNlICkgb3IgKCBzZWxlY3RvciwgdHlwZXMgWywgZm5dICkKKyAgICAgICAgcmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGggPT09IDEgPworICAgICAgICAgICAgdGhpcy5vZmYoIHNlbGVj
dG9yLCAiKioiICkgOgorICAgICAgICAgICAgdGhpcy5vZmYoIHR5cGVzLCBzZWxlY3RvciB8fCAi
KioiLCBmbiApOworICAgIH0KK30gKTsKKworalF1ZXJ5LnBhcnNlSlNPTiA9IEpTT04ucGFyc2U7
CisKKworCisKKy8vIFJlZ2lzdGVyIGFzIGEgbmFtZWQgQU1EIG1vZHVsZSwgc2luY2UgalF1ZXJ5
IGNhbiBiZSBjb25jYXRlbmF0ZWQgd2l0aCBvdGhlcgorLy8gZmlsZXMgdGhhdCBtYXkgdXNlIGRl
ZmluZSwgYnV0IG5vdCB2aWEgYSBwcm9wZXIgY29uY2F0ZW5hdGlvbiBzY3JpcHQgdGhhdAorLy8g
dW5kZXJzdGFuZHMgYW5vbnltb3VzIEFNRCBtb2R1bGVzLiBBIG5hbWVkIEFNRCBpcyBzYWZlc3Qg
YW5kIG1vc3Qgcm9idXN0CisvLyB3YXkgdG8gcmVnaXN0ZXIuIExvd2VyY2FzZSBqcXVlcnkgaXMg
dXNlZCBiZWNhdXNlIEFNRCBtb2R1bGUgbmFtZXMgYXJlCisvLyBkZXJpdmVkIGZyb20gZmlsZSBu
YW1lcywgYW5kIGpRdWVyeSBpcyBub3JtYWxseSBkZWxpdmVyZWQgaW4gYSBsb3dlcmNhc2UKKy8v
IGZpbGUgbmFtZS4gRG8gdGhpcyBhZnRlciBjcmVhdGluZyB0aGUgZ2xvYmFsIHNvIHRoYXQgaWYg
YW4gQU1EIG1vZHVsZSB3YW50cworLy8gdG8gY2FsbCBub0NvbmZsaWN0IHRvIGhpZGUgdGhpcyB2
ZXJzaW9uIG9mIGpRdWVyeSwgaXQgd2lsbCB3b3JrLgorCisvLyBOb3RlIHRoYXQgZm9yIG1heGlt
dW0gcG9ydGFiaWxpdHksIGxpYnJhcmllcyB0aGF0IGFyZSBub3QgalF1ZXJ5IHNob3VsZAorLy8g
ZGVjbGFyZSB0aGVtc2VsdmVzIGFzIGFub255bW91cyBtb2R1bGVzLCBhbmQgYXZvaWQgc2V0dGlu
ZyBhIGdsb2JhbCBpZiBhbgorLy8gQU1EIGxvYWRlciBpcyBwcmVzZW50LiBqUXVlcnkgaXMgYSBz
cGVjaWFsIGNhc2UuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUKKy8vIGh0dHBzOi8vZ2l0aHVi
LmNvbS9qcmJ1cmtlL3JlcXVpcmVqcy93aWtpL1VwZGF0aW5nLWV4aXN0aW5nLWxpYnJhcmllcyN3
aWtpLWFub24KKworaWYgKCB0eXBlb2YgZGVmaW5lID09PSAiZnVuY3Rpb24iICYmIGRlZmluZS5h
bWQgKSB7CisgICAgZGVmaW5lKCAianF1ZXJ5IiwgW10sIGZ1bmN0aW9uKCkgeworICAgICAgICBy
ZXR1cm4galF1ZXJ5OworICAgIH0gKTsKK30KKworCisKKwordmFyCisKKyAgICAvLyBNYXAgb3Zl
ciBqUXVlcnkgaW4gY2FzZSBvZiBvdmVyd3JpdGUKKyAgICBfalF1ZXJ5ID0gd2luZG93LmpRdWVy
eSwKKworICAgIC8vIE1hcCBvdmVyIHRoZSAkIGluIGNhc2Ugb2Ygb3ZlcndyaXRlCisgICAgXyQg
PSB3aW5kb3cuJDsKKworalF1ZXJ5Lm5vQ29uZmxpY3QgPSBmdW5jdGlvbiggZGVlcCApIHsKKyAg
ICBpZiAoIHdpbmRvdy4kID09PSBqUXVlcnkgKSB7CisgICAgICAgIHdpbmRvdy4kID0gXyQ7Cisg
ICAgfQorCisgICAgaWYgKCBkZWVwICYmIHdpbmRvdy5qUXVlcnkgPT09IGpRdWVyeSApIHsKKyAg
ICAgICAgd2luZG93LmpRdWVyeSA9IF9qUXVlcnk7CisgICAgfQorCisgICAgcmV0dXJuIGpRdWVy
eTsKK307CisKKy8vIEV4cG9zZSBqUXVlcnkgYW5kICQgaWRlbnRpZmllcnMsIGV2ZW4gaW4gQU1E
CisvLyAoIzcxMDIjY29tbWVudDoxMCwgaHR0cHM6Ly9naXRodWIuY29tL2pxdWVyeS9qcXVlcnkv
cHVsbC81NTcpCisvLyBhbmQgQ29tbW9uSlMgZm9yIGJyb3dzZXIgZW11bGF0b3JzICgjMTM1NjYp
CitpZiAoICFub0dsb2JhbCApIHsKKyAgICB3aW5kb3cualF1ZXJ5ID0gd2luZG93LiQgPSBqUXVl
cnk7Cit9CisKKworCisKKworcmV0dXJuIGpRdWVyeTsKK30gKTsKZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvZGlzdC9qcXVlcnkubWluLmpzIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9kaXN0L2pxdWVyeS5taW4u
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGM1YmU0YzBmYmUyMzBlODFkOTU3MThhMTg4MjllOTY1YTJkMTRiMgot
LS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVl
cnkvZGlzdC9qcXVlcnkubWluLmpzCkBAIC0wLDAgKzEsNCBAQAorLyohIGpRdWVyeSB2My4xLjEg
fCAoYykgalF1ZXJ5IEZvdW5kYXRpb24gfCBqcXVlcnkub3JnL2xpY2Vuc2UgKi8KKyFmdW5jdGlv
bihhLGIpeyJ1c2Ugc3RyaWN0Ijsib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmIm9iamVjdCI9PXR5
cGVvZiBtb2R1bGUuZXhwb3J0cz9tb2R1bGUuZXhwb3J0cz1hLmRvY3VtZW50P2IoYSwhMCk6ZnVu
Y3Rpb24oYSl7aWYoIWEuZG9jdW1lbnQpdGhyb3cgbmV3IEVycm9yKCJqUXVlcnkgcmVxdWlyZXMg
YSB3aW5kb3cgd2l0aCBhIGRvY3VtZW50Iik7cmV0dXJuIGIoYSl9OmIoYSl9KCJ1bmRlZmluZWQi
IT10eXBlb2Ygd2luZG93P3dpbmRvdzp0aGlzLGZ1bmN0aW9uKGEsYil7InVzZSBzdHJpY3QiO3Zh
ciBjPVtdLGQ9YS5kb2N1bWVudCxlPU9iamVjdC5nZXRQcm90b3R5cGVPZixmPWMuc2xpY2UsZz1j
LmNvbmNhdCxoPWMucHVzaCxpPWMuaW5kZXhPZixqPXt9LGs9ai50b1N0cmluZyxsPWouaGFzT3du
UHJvcGVydHksbT1sLnRvU3RyaW5nLG49bS5jYWxsKE9iamVjdCksbz17fTtmdW5jdGlvbiBwKGEs
Yil7Yj1ifHxkO3ZhciBjPWIuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7Yy50ZXh0PWEsYi5oZWFk
LmFwcGVuZENoaWxkKGMpLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYyl9dmFyIHE9IjMuMS4xIixy
PWZ1bmN0aW9uKGEsYil7cmV0dXJuIG5ldyByLmZuLmluaXQoYSxiKX0scz0vXltcc1x1RkVGRlx4
QTBdK3xbXHNcdUZFRkZceEEwXSskL2csdD0vXi1tcy0vLHU9Ly0oW2Etel0pL2csdj1mdW5jdGlv
bihhLGIpe3JldHVybiBiLnRvVXBwZXJDYXNlKCl9O3IuZm49ci5wcm90b3R5cGU9e2pxdWVyeTpx
LGNvbnN0cnVjdG9yOnIsbGVuZ3RoOjAsdG9BcnJheTpmdW5jdGlvbigpe3JldHVybiBmLmNhbGwo
dGhpcyl9LGdldDpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09YT9mLmNhbGwodGhpcyk6YTwwP3Ro
aXNbYSt0aGlzLmxlbmd0aF06dGhpc1thXX0scHVzaFN0YWNrOmZ1bmN0aW9uKGEpe3ZhciBiPXIu
bWVyZ2UodGhpcy5jb25zdHJ1Y3RvcigpLGEpO3JldHVybiBiLnByZXZPYmplY3Q9dGhpcyxifSxl
YWNoOmZ1bmN0aW9uKGEpe3JldHVybiByLmVhY2godGhpcyxhKX0sbWFwOmZ1bmN0aW9uKGEpe3Jl
dHVybiB0aGlzLnB1c2hTdGFjayhyLm1hcCh0aGlzLGZ1bmN0aW9uKGIsYyl7cmV0dXJuIGEuY2Fs
bChiLGMsYil9KSl9LHNsaWNlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGYuYXBw
bHkodGhpcyxhcmd1bWVudHMpKX0sZmlyc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcSgwKX0s
bGFzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVxKC0xKX0sZXE6ZnVuY3Rpb24oYSl7dmFyIGI9
dGhpcy5sZW5ndGgsYz0rYSsoYTwwP2I6MCk7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGM+PTAmJmM8
Yj9bdGhpc1tjXV06W10pfSxlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcmV2T2JqZWN0fHx0
aGlzLmNvbnN0cnVjdG9yKCl9LHB1c2g6aCxzb3J0OmMuc29ydCxzcGxpY2U6Yy5zcGxpY2V9LHIu
ZXh0ZW5kPXIuZm4uZXh0ZW5kPWZ1bmN0aW9uKCl7dmFyIGEsYixjLGQsZSxmLGc9YXJndW1lbnRz
WzBdfHx7fSxoPTEsaT1hcmd1bWVudHMubGVuZ3RoLGo9ITE7Zm9yKCJib29sZWFuIj09dHlwZW9m
IGcmJihqPWcsZz1hcmd1bWVudHNbaF18fHt9LGgrKyksIm9iamVjdCI9PXR5cGVvZiBnfHxyLmlz
RnVuY3Rpb24oZyl8fChnPXt9KSxoPT09aSYmKGc9dGhpcyxoLS0pO2g8aTtoKyspaWYobnVsbCE9
KGE9YXJndW1lbnRzW2hdKSlmb3IoYiBpbiBhKWM9Z1tiXSxkPWFbYl0sZyE9PWQmJihqJiZkJiYo
ci5pc1BsYWluT2JqZWN0KGQpfHwoZT1yLmlzQXJyYXkoZCkpKT8oZT8oZT0hMSxmPWMmJnIuaXNB
cnJheShjKT9jOltdKTpmPWMmJnIuaXNQbGFpbk9iamVjdChjKT9jOnt9LGdbYl09ci5leHRlbmQo
aixmLGQpKTp2b2lkIDAhPT1kJiYoZ1tiXT1kKSk7cmV0dXJuIGd9LHIuZXh0ZW5kKHtleHBhbmRv
OiJqUXVlcnkiKyhxK01hdGgucmFuZG9tKCkpLnJlcGxhY2UoL1xEL2csIiIpLGlzUmVhZHk6ITAs
ZXJyb3I6ZnVuY3Rpb24oYSl7dGhyb3cgbmV3IEVycm9yKGEpfSxub29wOmZ1bmN0aW9uKCl7fSxp
c0Z1bmN0aW9uOmZ1bmN0aW9uKGEpe3JldHVybiJmdW5jdGlvbiI9PT1yLnR5cGUoYSl9LGlzQXJy
YXk6QXJyYXkuaXNBcnJheSxpc1dpbmRvdzpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbCE9YSYmYT09
PWEud2luZG93fSxpc051bWVyaWM6ZnVuY3Rpb24oYSl7dmFyIGI9ci50eXBlKGEpO3JldHVybigi
bnVtYmVyIj09PWJ8fCJzdHJpbmciPT09YikmJiFpc05hTihhLXBhcnNlRmxvYXQoYSkpfSxpc1Bs
YWluT2JqZWN0OmZ1bmN0aW9uKGEpe3ZhciBiLGM7cmV0dXJuISghYXx8IltvYmplY3QgT2JqZWN0
XSIhPT1rLmNhbGwoYSkpJiYoIShiPWUoYSkpfHwoYz1sLmNhbGwoYiwiY29uc3RydWN0b3IiKSYm
Yi5jb25zdHJ1Y3RvciwiZnVuY3Rpb24iPT10eXBlb2YgYyYmbS5jYWxsKGMpPT09bikpfSxpc0Vt
cHR5T2JqZWN0OmZ1bmN0aW9uKGEpe3ZhciBiO2ZvcihiIGluIGEpcmV0dXJuITE7cmV0dXJuITB9
LHR5cGU6ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWE/YSsiIjoib2JqZWN0Ij09dHlwZW9mIGF8
fCJmdW5jdGlvbiI9PXR5cGVvZiBhP2pbay5jYWxsKGEpXXx8Im9iamVjdCI6dHlwZW9mIGF9LGds
b2JhbEV2YWw6ZnVuY3Rpb24oYSl7cChhKX0sY2FtZWxDYXNlOmZ1bmN0aW9uKGEpe3JldHVybiBh
LnJlcGxhY2UodCwibXMtIikucmVwbGFjZSh1LHYpfSxub2RlTmFtZTpmdW5jdGlvbihhLGIpe3Jl
dHVybiBhLm5vZGVOYW1lJiZhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1iLnRvTG93ZXJDYXNl
KCl9LGVhY2g6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPTA7aWYodyhhKSl7Zm9yKGM9YS5sZW5ndGg7
ZDxjO2QrKylpZihiLmNhbGwoYVtkXSxkLGFbZF0pPT09ITEpYnJlYWt9ZWxzZSBmb3IoZCBpbiBh
KWlmKGIuY2FsbChhW2RdLGQsYVtkXSk9PT0hMSlicmVhaztyZXR1cm4gYX0sdHJpbTpmdW5jdGlv
bihhKXtyZXR1cm4gbnVsbD09YT8iIjooYSsiIikucmVwbGFjZShzLCIiKX0sbWFrZUFycmF5OmZ1
bmN0aW9uKGEsYil7dmFyIGM9Ynx8W107cmV0dXJuIG51bGwhPWEmJih3KE9iamVjdChhKSk/ci5t
ZXJnZShjLCJzdHJpbmciPT10eXBlb2YgYT9bYV06YSk6aC5jYWxsKGMsYSkpLGN9LGluQXJyYXk6
ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBudWxsPT1iPy0xOmkuY2FsbChiLGEsYyl9LG1lcmdlOmZ1
bmN0aW9uKGEsYil7Zm9yKHZhciBjPStiLmxlbmd0aCxkPTAsZT1hLmxlbmd0aDtkPGM7ZCsrKWFb
ZSsrXT1iW2RdO3JldHVybiBhLmxlbmd0aD1lLGF9LGdyZXA6ZnVuY3Rpb24oYSxiLGMpe2Zvcih2
YXIgZCxlPVtdLGY9MCxnPWEubGVuZ3RoLGg9IWM7ZjxnO2YrKylkPSFiKGFbZl0sZiksZCE9PWgm
JmUucHVzaChhW2ZdKTtyZXR1cm4gZX0sbWFwOmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGY9MCxo
PVtdO2lmKHcoYSkpZm9yKGQ9YS5sZW5ndGg7ZjxkO2YrKyllPWIoYVtmXSxmLGMpLG51bGwhPWUm
JmgucHVzaChlKTtlbHNlIGZvcihmIGluIGEpZT1iKGFbZl0sZixjKSxudWxsIT1lJiZoLnB1c2go
ZSk7cmV0dXJuIGcuYXBwbHkoW10saCl9LGd1aWQ6MSxwcm94eTpmdW5jdGlvbihhLGIpe3ZhciBj
LGQsZTtpZigic3RyaW5nIj09dHlwZW9mIGImJihjPWFbYl0sYj1hLGE9Yyksci5pc0Z1bmN0aW9u
KGEpKXJldHVybiBkPWYuY2FsbChhcmd1bWVudHMsMiksZT1mdW5jdGlvbigpe3JldHVybiBhLmFw
cGx5KGJ8fHRoaXMsZC5jb25jYXQoZi5jYWxsKGFyZ3VtZW50cykpKX0sZS5ndWlkPWEuZ3VpZD1h
Lmd1aWR8fHIuZ3VpZCsrLGV9LG5vdzpEYXRlLm5vdyxzdXBwb3J0Om99KSwiZnVuY3Rpb24iPT10
eXBlb2YgU3ltYm9sJiYoci5mbltTeW1ib2wuaXRlcmF0b3JdPWNbU3ltYm9sLml0ZXJhdG9yXSks
ci5lYWNoKCJCb29sZWFuIE51bWJlciBTdHJpbmcgRnVuY3Rpb24gQXJyYXkgRGF0ZSBSZWdFeHAg
T2JqZWN0IEVycm9yIFN5bWJvbCIuc3BsaXQoIiAiKSxmdW5jdGlvbihhLGIpe2pbIltvYmplY3Qg
IitiKyJdIl09Yi50b0xvd2VyQ2FzZSgpfSk7ZnVuY3Rpb24gdyhhKXt2YXIgYj0hIWEmJiJsZW5n
dGgiaW4gYSYmYS5sZW5ndGgsYz1yLnR5cGUoYSk7cmV0dXJuImZ1bmN0aW9uIiE9PWMmJiFyLmlz
V2luZG93KGEpJiYoImFycmF5Ij09PWN8fDA9PT1ifHwibnVtYmVyIj09dHlwZW9mIGImJmI+MCYm
Yi0xIGluIGEpfXZhciB4PWZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlLGYsZyxoLGksaixrLGwsbSxu
LG8scCxxLHIscyx0LHU9InNpenpsZSIrMSpuZXcgRGF0ZSx2PWEuZG9jdW1lbnQsdz0wLHg9MCx5
PWhhKCksej1oYSgpLEE9aGEoKSxCPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGE9PT1iJiYobD0hMCks
MH0sQz17fS5oYXNPd25Qcm9wZXJ0eSxEPVtdLEU9RC5wb3AsRj1ELnB1c2gsRz1ELnB1c2gsSD1E
LnNsaWNlLEk9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9MCxkPWEubGVuZ3RoO2M8ZDtjKyspaWYo
YVtjXT09PWIpcmV0dXJuIGM7cmV0dXJuLTF9LEo9ImNoZWNrZWR8c2VsZWN0ZWR8YXN5bmN8YXV0
b2ZvY3VzfGF1dG9wbGF5fGNvbnRyb2xzfGRlZmVyfGRpc2FibGVkfGhpZGRlbnxpc21hcHxsb29w
fG11bHRpcGxlfG9wZW58cmVhZG9ubHl8cmVxdWlyZWR8c2NvcGVkIixLPSJbXFx4MjBcXHRcXHJc
XG5cXGZdIixMPSIoPzpcXFxcLnxbXFx3LV18W15cMC1cXHhhMF0pKyIsTT0iXFxbIitLKyIqKCIr
TCsiKSg/OiIrSysiKihbKl4kfCF+XT89KSIrSysiKig/OicoKD86XFxcXC58W15cXFxcJ10pKikn
fFwiKCg/OlxcXFwufFteXFxcXFwiXSkqKVwifCgiK0wrIikpfCkiK0srIipcXF0iLE49IjooIitM
KyIpKD86XFwoKCgnKCg/OlxcXFwufFteXFxcXCddKSopJ3xcIigoPzpcXFxcLnxbXlxcXFxcIl0p
KilcIil8KCg/OlxcXFwufFteXFxcXCgpW1xcXV18IitNKyIpKil8LiopXFwpfCkiLE89bmV3IFJl
Z0V4cChLKyIrIiwiZyIpLFA9bmV3IFJlZ0V4cCgiXiIrSysiK3woKD86XnxbXlxcXFxdKSg/Olxc
XFwuKSopIitLKyIrJCIsImciKSxRPW5ldyBSZWdFeHAoIl4iK0srIiosIitLKyIqIiksUj1uZXcg
UmVnRXhwKCJeIitLKyIqKFs+K35dfCIrSysiKSIrSysiKiIpLFM9bmV3IFJlZ0V4cCgiPSIrSysi
KihbXlxcXSdcIl0qPykiK0srIipcXF0iLCJnIiksVD1uZXcgUmVnRXhwKE4pLFU9bmV3IFJlZ0V4
cCgiXiIrTCsiJCIpLFY9e0lEOm5ldyBSZWdFeHAoIl4jKCIrTCsiKSIpLENMQVNTOm5ldyBSZWdF
eHAoIl5cXC4oIitMKyIpIiksVEFHOm5ldyBSZWdFeHAoIl4oIitMKyJ8WypdKSIpLEFUVFI6bmV3
IFJlZ0V4cCgiXiIrTSksUFNFVURPOm5ldyBSZWdFeHAoIl4iK04pLENISUxEOm5ldyBSZWdFeHAo
Il46KG9ubHl8Zmlyc3R8bGFzdHxudGh8bnRoLWxhc3QpLShjaGlsZHxvZi10eXBlKSg/OlxcKCIr
SysiKihldmVufG9kZHwoKFsrLV18KShcXGQqKW58KSIrSysiKig/OihbKy1dfCkiK0srIiooXFxk
Kyl8KSkiK0srIipcXCl8KSIsImkiKSxib29sOm5ldyBSZWdFeHAoIl4oPzoiK0orIikkIiwiaSIp
LG5lZWRzQ29udGV4dDpuZXcgUmVnRXhwKCJeIitLKyIqWz4rfl18OihldmVufG9kZHxlcXxndHxs
dHxudGh8Zmlyc3R8bGFzdCkoPzpcXCgiK0srIiooKD86LVxcZCk/XFxkKikiK0srIipcXCl8KSg/
PVteLV18JCkiLCJpIil9LFc9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaSxY
PS9eaFxkJC9pLFk9L15bXntdK1x7XHMqXFtuYXRpdmUgXHcvLFo9L14oPzojKFtcdy1dKyl8KFx3
Kyl8XC4oW1x3LV0rKSkkLywkPS9bK35dLyxfPW5ldyBSZWdFeHAoIlxcXFwoW1xcZGEtZl17MSw2
fSIrSysiP3woIitLKyIpfC4pIiwiaWciKSxhYT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9IjB4Iiti
LTY1NTM2O3JldHVybiBkIT09ZHx8Yz9iOmQ8MD9TdHJpbmcuZnJvbUNoYXJDb2RlKGQrNjU1MzYp
OlN0cmluZy5mcm9tQ2hhckNvZGUoZD4+MTB8NTUyOTYsMTAyMyZkfDU2MzIwKX0sYmE9LyhbXDAt
XHgxZlx4N2ZdfF4tP1xkKXxeLSR8W15cMC1ceDFmXHg3Zi1cdUZGRkZcdy1dL2csY2E9ZnVuY3Rp
b24oYSxiKXtyZXR1cm4gYj8iXDAiPT09YT8iXHVmZmZkIjphLnNsaWNlKDAsLTEpKyJcXCIrYS5j
aGFyQ29kZUF0KGEubGVuZ3RoLTEpLnRvU3RyaW5nKDE2KSsiICI6IlxcIithfSxkYT1mdW5jdGlv
bigpe20oKX0sZWE9dGEoZnVuY3Rpb24oYSl7cmV0dXJuIGEuZGlzYWJsZWQ9PT0hMCYmKCJmb3Jt
ImluIGF8fCJsYWJlbCJpbiBhKX0se2RpcjoicGFyZW50Tm9kZSIsbmV4dDoibGVnZW5kIn0pO3Ry
eXtHLmFwcGx5KEQ9SC5jYWxsKHYuY2hpbGROb2Rlcyksdi5jaGlsZE5vZGVzKSxEW3YuY2hpbGRO
b2Rlcy5sZW5ndGhdLm5vZGVUeXBlfWNhdGNoKGZhKXtHPXthcHBseTpELmxlbmd0aD9mdW5jdGlv
bihhLGIpe0YuYXBwbHkoYSxILmNhbGwoYikpfTpmdW5jdGlvbihhLGIpe3ZhciBjPWEubGVuZ3Ro
LGQ9MDt3aGlsZShhW2MrK109YltkKytdKTthLmxlbmd0aD1jLTF9fX1mdW5jdGlvbiBnYShhLGIs
ZCxlKXt2YXIgZixoLGosayxsLG8scixzPWImJmIub3duZXJEb2N1bWVudCx3PWI/Yi5ub2RlVHlw
ZTo5O2lmKGQ9ZHx8W10sInN0cmluZyIhPXR5cGVvZiBhfHwhYXx8MSE9PXcmJjkhPT13JiYxMSE9
PXcpcmV0dXJuIGQ7aWYoIWUmJigoYj9iLm93bmVyRG9jdW1lbnR8fGI6dikhPT1uJiZtKGIpLGI9
Ynx8bixwKSl7aWYoMTEhPT13JiYobD1aLmV4ZWMoYSkpKWlmKGY9bFsxXSl7aWYoOT09PXcpe2lm
KCEoaj1iLmdldEVsZW1lbnRCeUlkKGYpKSlyZXR1cm4gZDtpZihqLmlkPT09ZilyZXR1cm4gZC5w
dXNoKGopLGR9ZWxzZSBpZihzJiYoaj1zLmdldEVsZW1lbnRCeUlkKGYpKSYmdChiLGopJiZqLmlk
PT09ZilyZXR1cm4gZC5wdXNoKGopLGR9ZWxzZXtpZihsWzJdKXJldHVybiBHLmFwcGx5KGQsYi5n
ZXRFbGVtZW50c0J5VGFnTmFtZShhKSksZDtpZigoZj1sWzNdKSYmYy5nZXRFbGVtZW50c0J5Q2xh
c3NOYW1lJiZiLmdldEVsZW1lbnRzQnlDbGFzc05hbWUpcmV0dXJuIEcuYXBwbHkoZCxiLmdldEVs
ZW1lbnRzQnlDbGFzc05hbWUoZikpLGR9aWYoYy5xc2EmJiFBW2ErIiAiXSYmKCFxfHwhcS50ZXN0
KGEpKSl7aWYoMSE9PXcpcz1iLHI9YTtlbHNlIGlmKCJvYmplY3QiIT09Yi5ub2RlTmFtZS50b0xv
d2VyQ2FzZSgpKXsoaz1iLmdldEF0dHJpYnV0ZSgiaWQiKSk/az1rLnJlcGxhY2UoYmEsY2EpOmIu
c2V0QXR0cmlidXRlKCJpZCIsaz11KSxvPWcoYSksaD1vLmxlbmd0aDt3aGlsZShoLS0pb1toXT0i
IyIraysiICIrc2Eob1toXSk7cj1vLmpvaW4oIiwiKSxzPSQudGVzdChhKSYmcWEoYi5wYXJlbnRO
b2RlKXx8Yn1pZihyKXRyeXtyZXR1cm4gRy5hcHBseShkLHMucXVlcnlTZWxlY3RvckFsbChyKSks
ZH1jYXRjaCh4KXt9ZmluYWxseXtrPT09dSYmYi5yZW1vdmVBdHRyaWJ1dGUoImlkIil9fX1yZXR1
cm4gaShhLnJlcGxhY2UoUCwiJDEiKSxiLGQsZSl9ZnVuY3Rpb24gaGEoKXt2YXIgYT1bXTtmdW5j
dGlvbiBiKGMsZSl7cmV0dXJuIGEucHVzaChjKyIgIik+ZC5jYWNoZUxlbmd0aCYmZGVsZXRlIGJb
YS5zaGlmdCgpXSxiW2MrIiAiXT1lfXJldHVybiBifWZ1bmN0aW9uIGlhKGEpe3JldHVybiBhW3Vd
PSEwLGF9ZnVuY3Rpb24gamEoYSl7dmFyIGI9bi5jcmVhdGVFbGVtZW50KCJmaWVsZHNldCIpO3Ry
eXtyZXR1cm4hIWEoYil9Y2F0Y2goYyl7cmV0dXJuITF9ZmluYWxseXtiLnBhcmVudE5vZGUmJmIu
cGFyZW50Tm9kZS5yZW1vdmVDaGlsZChiKSxiPW51bGx9fWZ1bmN0aW9uIGthKGEsYil7dmFyIGM9
YS5zcGxpdCgifCIpLGU9Yy5sZW5ndGg7d2hpbGUoZS0tKWQuYXR0ckhhbmRsZVtjW2VdXT1ifWZ1
bmN0aW9uIGxhKGEsYil7dmFyIGM9YiYmYSxkPWMmJjE9PT1hLm5vZGVUeXBlJiYxPT09Yi5ub2Rl
VHlwZSYmYS5zb3VyY2VJbmRleC1iLnNvdXJjZUluZGV4O2lmKGQpcmV0dXJuIGQ7aWYoYyl3aGls
ZShjPWMubmV4dFNpYmxpbmcpaWYoYz09PWIpcmV0dXJuLTE7cmV0dXJuIGE/MTotMX1mdW5jdGlv
biBtYShhKXtyZXR1cm4gZnVuY3Rpb24oYil7dmFyIGM9Yi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgp
O3JldHVybiJpbnB1dCI9PT1jJiZiLnR5cGU9PT1hfX1mdW5jdGlvbiBuYShhKXtyZXR1cm4gZnVu
Y3Rpb24oYil7dmFyIGM9Yi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybigiaW5wdXQiPT09
Y3x8ImJ1dHRvbiI9PT1jKSYmYi50eXBlPT09YX19ZnVuY3Rpb24gb2EoYSl7cmV0dXJuIGZ1bmN0
aW9uKGIpe3JldHVybiJmb3JtImluIGI/Yi5wYXJlbnROb2RlJiZiLmRpc2FibGVkPT09ITE/Imxh
YmVsImluIGI/ImxhYmVsImluIGIucGFyZW50Tm9kZT9iLnBhcmVudE5vZGUuZGlzYWJsZWQ9PT1h
OmIuZGlzYWJsZWQ9PT1hOmIuaXNEaXNhYmxlZD09PWF8fGIuaXNEaXNhYmxlZCE9PSFhJiZlYShi
KT09PWE6Yi5kaXNhYmxlZD09PWE6ImxhYmVsImluIGImJmIuZGlzYWJsZWQ9PT1hfX1mdW5jdGlv
biBwYShhKXtyZXR1cm4gaWEoZnVuY3Rpb24oYil7cmV0dXJuIGI9K2IsaWEoZnVuY3Rpb24oYyxk
KXt2YXIgZSxmPWEoW10sYy5sZW5ndGgsYiksZz1mLmxlbmd0aDt3aGlsZShnLS0pY1tlPWZbZ11d
JiYoY1tlXT0hKGRbZV09Y1tlXSkpfSl9KX1mdW5jdGlvbiBxYShhKXtyZXR1cm4gYSYmInVuZGVm
aW5lZCIhPXR5cGVvZiBhLmdldEVsZW1lbnRzQnlUYWdOYW1lJiZhfWM9Z2Euc3VwcG9ydD17fSxm
PWdhLmlzWE1MPWZ1bmN0aW9uKGEpe3ZhciBiPWEmJihhLm93bmVyRG9jdW1lbnR8fGEpLmRvY3Vt
ZW50RWxlbWVudDtyZXR1cm4hIWImJiJIVE1MIiE9PWIubm9kZU5hbWV9LG09Z2Euc2V0RG9jdW1l
bnQ9ZnVuY3Rpb24oYSl7dmFyIGIsZSxnPWE/YS5vd25lckRvY3VtZW50fHxhOnY7cmV0dXJuIGch
PT1uJiY5PT09Zy5ub2RlVHlwZSYmZy5kb2N1bWVudEVsZW1lbnQ/KG49ZyxvPW4uZG9jdW1lbnRF
bGVtZW50LHA9IWYobiksdiE9PW4mJihlPW4uZGVmYXVsdFZpZXcpJiZlLnRvcCE9PWUmJihlLmFk
ZEV2ZW50TGlzdGVuZXI/ZS5hZGRFdmVudExpc3RlbmVyKCJ1bmxvYWQiLGRhLCExKTplLmF0dGFj
aEV2ZW50JiZlLmF0dGFjaEV2ZW50KCJvbnVubG9hZCIsZGEpKSxjLmF0dHJpYnV0ZXM9amEoZnVu
Y3Rpb24oYSl7cmV0dXJuIGEuY2xhc3NOYW1lPSJpIiwhYS5nZXRBdHRyaWJ1dGUoImNsYXNzTmFt
ZSIpfSksYy5nZXRFbGVtZW50c0J5VGFnTmFtZT1qYShmdW5jdGlvbihhKXtyZXR1cm4gYS5hcHBl
bmRDaGlsZChuLmNyZWF0ZUNvbW1lbnQoIiIpKSwhYS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIp
Lmxlbmd0aH0pLGMuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZT1ZLnRlc3Qobi5nZXRFbGVtZW50c0J5
Q2xhc3NOYW1lKSxjLmdldEJ5SWQ9amEoZnVuY3Rpb24oYSl7cmV0dXJuIG8uYXBwZW5kQ2hpbGQo
YSkuaWQ9dSwhbi5nZXRFbGVtZW50c0J5TmFtZXx8IW4uZ2V0RWxlbWVudHNCeU5hbWUodSkubGVu
Z3RofSksYy5nZXRCeUlkPyhkLmZpbHRlci5JRD1mdW5jdGlvbihhKXt2YXIgYj1hLnJlcGxhY2Uo
XyxhYSk7cmV0dXJuIGZ1bmN0aW9uKGEpe3JldHVybiBhLmdldEF0dHJpYnV0ZSgiaWQiKT09PWJ9
fSxkLmZpbmQuSUQ9ZnVuY3Rpb24oYSxiKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGIuZ2V0RWxl
bWVudEJ5SWQmJnApe3ZhciBjPWIuZ2V0RWxlbWVudEJ5SWQoYSk7cmV0dXJuIGM/W2NdOltdfX0p
OihkLmZpbHRlci5JRD1mdW5jdGlvbihhKXt2YXIgYj1hLnJlcGxhY2UoXyxhYSk7cmV0dXJuIGZ1
bmN0aW9uKGEpe3ZhciBjPSJ1bmRlZmluZWQiIT10eXBlb2YgYS5nZXRBdHRyaWJ1dGVOb2RlJiZh
LmdldEF0dHJpYnV0ZU5vZGUoImlkIik7cmV0dXJuIGMmJmMudmFsdWU9PT1ifX0sZC5maW5kLklE
PWZ1bmN0aW9uKGEsYil7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBiLmdldEVsZW1lbnRCeUlkJiZw
KXt2YXIgYyxkLGUsZj1iLmdldEVsZW1lbnRCeUlkKGEpO2lmKGYpe2lmKGM9Zi5nZXRBdHRyaWJ1
dGVOb2RlKCJpZCIpLGMmJmMudmFsdWU9PT1hKXJldHVybltmXTtlPWIuZ2V0RWxlbWVudHNCeU5h
bWUoYSksZD0wO3doaWxlKGY9ZVtkKytdKWlmKGM9Zi5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpLGMm
JmMudmFsdWU9PT1hKXJldHVybltmXX1yZXR1cm5bXX19KSxkLmZpbmQuVEFHPWMuZ2V0RWxlbWVu
dHNCeVRhZ05hbWU/ZnVuY3Rpb24oYSxiKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIGIuZ2V0
RWxlbWVudHNCeVRhZ05hbWU/Yi5nZXRFbGVtZW50c0J5VGFnTmFtZShhKTpjLnFzYT9iLnF1ZXJ5
U2VsZWN0b3JBbGwoYSk6dm9pZCAwfTpmdW5jdGlvbihhLGIpe3ZhciBjLGQ9W10sZT0wLGY9Yi5n
ZXRFbGVtZW50c0J5VGFnTmFtZShhKTtpZigiKiI9PT1hKXt3aGlsZShjPWZbZSsrXSkxPT09Yy5u
b2RlVHlwZSYmZC5wdXNoKGMpO3JldHVybiBkfXJldHVybiBmfSxkLmZpbmQuQ0xBU1M9Yy5nZXRF
bGVtZW50c0J5Q2xhc3NOYW1lJiZmdW5jdGlvbihhLGIpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2Yg
Yi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lJiZwKXJldHVybiBiLmdldEVsZW1lbnRzQnlDbGFzc05h
bWUoYSl9LHI9W10scT1bXSwoYy5xc2E9WS50ZXN0KG4ucXVlcnlTZWxlY3RvckFsbCkpJiYoamEo
ZnVuY3Rpb24oYSl7by5hcHBlbmRDaGlsZChhKS5pbm5lckhUTUw9IjxhIGlkPSciK3UrIic+PC9h
PjxzZWxlY3QgaWQ9JyIrdSsiLVxyXFwnIG1zYWxsb3djYXB0dXJlPScnPjxvcHRpb24gc2VsZWN0
ZWQ9Jyc+PC9vcHRpb24+PC9zZWxlY3Q+IixhLnF1ZXJ5U2VsZWN0b3JBbGwoIlttc2FsbG93Y2Fw
dHVyZV49JyddIikubGVuZ3RoJiZxLnB1c2goIlsqXiRdPSIrSysiKig/OicnfFwiXCIpIiksYS5x
dWVyeVNlbGVjdG9yQWxsKCJbc2VsZWN0ZWRdIikubGVuZ3RofHxxLnB1c2goIlxcWyIrSysiKig/
OnZhbHVlfCIrSisiKSIpLGEucXVlcnlTZWxlY3RvckFsbCgiW2lkfj0iK3UrIi1dIikubGVuZ3Ro
fHxxLnB1c2goIn49IiksYS5xdWVyeVNlbGVjdG9yQWxsKCI6Y2hlY2tlZCIpLmxlbmd0aHx8cS5w
dXNoKCI6Y2hlY2tlZCIpLGEucXVlcnlTZWxlY3RvckFsbCgiYSMiK3UrIisqIikubGVuZ3RofHxx
LnB1c2goIi4jLitbK35dIil9KSxqYShmdW5jdGlvbihhKXthLmlubmVySFRNTD0iPGEgaHJlZj0n
JyBkaXNhYmxlZD0nZGlzYWJsZWQnPjwvYT48c2VsZWN0IGRpc2FibGVkPSdkaXNhYmxlZCc+PG9w
dGlvbi8+PC9zZWxlY3Q+Ijt2YXIgYj1uLmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7Yi5zZXRBdHRy
aWJ1dGUoInR5cGUiLCJoaWRkZW4iKSxhLmFwcGVuZENoaWxkKGIpLnNldEF0dHJpYnV0ZSgibmFt
ZSIsIkQiKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoIltuYW1lPWRdIikubGVuZ3RoJiZxLnB1c2goIm5h
bWUiK0srIipbKl4kfCF+XT89IiksMiE9PWEucXVlcnlTZWxlY3RvckFsbCgiOmVuYWJsZWQiKS5s
ZW5ndGgmJnEucHVzaCgiOmVuYWJsZWQiLCI6ZGlzYWJsZWQiKSxvLmFwcGVuZENoaWxkKGEpLmRp
c2FibGVkPSEwLDIhPT1hLnF1ZXJ5U2VsZWN0b3JBbGwoIjpkaXNhYmxlZCIpLmxlbmd0aCYmcS5w
dXNoKCI6ZW5hYmxlZCIsIjpkaXNhYmxlZCIpLGEucXVlcnlTZWxlY3RvckFsbCgiKiw6eCIpLHEu
cHVzaCgiLC4qOiIpfSkpLChjLm1hdGNoZXNTZWxlY3Rvcj1ZLnRlc3Qocz1vLm1hdGNoZXN8fG8u
d2Via2l0TWF0Y2hlc1NlbGVjdG9yfHxvLm1vek1hdGNoZXNTZWxlY3Rvcnx8by5vTWF0Y2hlc1Nl
bGVjdG9yfHxvLm1zTWF0Y2hlc1NlbGVjdG9yKSkmJmphKGZ1bmN0aW9uKGEpe2MuZGlzY29ubmVj
dGVkTWF0Y2g9cy5jYWxsKGEsIioiKSxzLmNhbGwoYSwiW3MhPScnXTp4Iiksci5wdXNoKCIhPSIs
Til9KSxxPXEubGVuZ3RoJiZuZXcgUmVnRXhwKHEuam9pbigifCIpKSxyPXIubGVuZ3RoJiZuZXcg
UmVnRXhwKHIuam9pbigifCIpKSxiPVkudGVzdChvLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKSx0
PWJ8fFkudGVzdChvLmNvbnRhaW5zKT9mdW5jdGlvbihhLGIpe3ZhciBjPTk9PT1hLm5vZGVUeXBl
P2EuZG9jdW1lbnRFbGVtZW50OmEsZD1iJiZiLnBhcmVudE5vZGU7cmV0dXJuIGE9PT1kfHwhKCFk
fHwxIT09ZC5ub2RlVHlwZXx8IShjLmNvbnRhaW5zP2MuY29udGFpbnMoZCk6YS5jb21wYXJlRG9j
dW1lbnRQb3NpdGlvbiYmMTYmYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihkKSkpfTpmdW5jdGlv
bihhLGIpe2lmKGIpd2hpbGUoYj1iLnBhcmVudE5vZGUpaWYoYj09PWEpcmV0dXJuITA7cmV0dXJu
ITF9LEI9Yj9mdW5jdGlvbihhLGIpe2lmKGE9PT1iKXJldHVybiBsPSEwLDA7dmFyIGQ9IWEuY29t
cGFyZURvY3VtZW50UG9zaXRpb24tIWIuY29tcGFyZURvY3VtZW50UG9zaXRpb247cmV0dXJuIGQ/
ZDooZD0oYS5vd25lckRvY3VtZW50fHxhKT09PShiLm93bmVyRG9jdW1lbnR8fGIpP2EuY29tcGFy
ZURvY3VtZW50UG9zaXRpb24oYik6MSwxJmR8fCFjLnNvcnREZXRhY2hlZCYmYi5jb21wYXJlRG9j
dW1lbnRQb3NpdGlvbihhKT09PWQ/YT09PW58fGEub3duZXJEb2N1bWVudD09PXYmJnQodixhKT8t
MTpiPT09bnx8Yi5vd25lckRvY3VtZW50PT09diYmdCh2LGIpPzE6az9JKGssYSktSShrLGIpOjA6
NCZkPy0xOjEpfTpmdW5jdGlvbihhLGIpe2lmKGE9PT1iKXJldHVybiBsPSEwLDA7dmFyIGMsZD0w
LGU9YS5wYXJlbnROb2RlLGY9Yi5wYXJlbnROb2RlLGc9W2FdLGg9W2JdO2lmKCFlfHwhZilyZXR1
cm4gYT09PW4/LTE6Yj09PW4/MTplPy0xOmY/MTprP0koayxhKS1JKGssYik6MDtpZihlPT09Zily
ZXR1cm4gbGEoYSxiKTtjPWE7d2hpbGUoYz1jLnBhcmVudE5vZGUpZy51bnNoaWZ0KGMpO2M9Yjt3
aGlsZShjPWMucGFyZW50Tm9kZSloLnVuc2hpZnQoYyk7d2hpbGUoZ1tkXT09PWhbZF0pZCsrO3Jl
dHVybiBkP2xhKGdbZF0saFtkXSk6Z1tkXT09PXY/LTE6aFtkXT09PXY/MTowfSxuKTpufSxnYS5t
YXRjaGVzPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGdhKGEsbnVsbCxudWxsLGIpfSxnYS5tYXRjaGVz
U2VsZWN0b3I9ZnVuY3Rpb24oYSxiKXtpZigoYS5vd25lckRvY3VtZW50fHxhKSE9PW4mJm0oYSks
Yj1iLnJlcGxhY2UoUywiPSckMSddIiksYy5tYXRjaGVzU2VsZWN0b3ImJnAmJiFBW2IrIiAiXSYm
KCFyfHwhci50ZXN0KGIpKSYmKCFxfHwhcS50ZXN0KGIpKSl0cnl7dmFyIGQ9cy5jYWxsKGEsYik7
aWYoZHx8Yy5kaXNjb25uZWN0ZWRNYXRjaHx8YS5kb2N1bWVudCYmMTEhPT1hLmRvY3VtZW50Lm5v
ZGVUeXBlKXJldHVybiBkfWNhdGNoKGUpe31yZXR1cm4gZ2EoYixuLG51bGwsW2FdKS5sZW5ndGg+
MH0sZ2EuY29udGFpbnM9ZnVuY3Rpb24oYSxiKXtyZXR1cm4oYS5vd25lckRvY3VtZW50fHxhKSE9
PW4mJm0oYSksdChhLGIpfSxnYS5hdHRyPWZ1bmN0aW9uKGEsYil7KGEub3duZXJEb2N1bWVudHx8
YSkhPT1uJiZtKGEpO3ZhciBlPWQuYXR0ckhhbmRsZVtiLnRvTG93ZXJDYXNlKCldLGY9ZSYmQy5j
YWxsKGQuYXR0ckhhbmRsZSxiLnRvTG93ZXJDYXNlKCkpP2UoYSxiLCFwKTp2b2lkIDA7cmV0dXJu
IHZvaWQgMCE9PWY/ZjpjLmF0dHJpYnV0ZXN8fCFwP2EuZ2V0QXR0cmlidXRlKGIpOihmPWEuZ2V0
QXR0cmlidXRlTm9kZShiKSkmJmYuc3BlY2lmaWVkP2YudmFsdWU6bnVsbH0sZ2EuZXNjYXBlPWZ1
bmN0aW9uKGEpe3JldHVybihhKyIiKS5yZXBsYWNlKGJhLGNhKX0sZ2EuZXJyb3I9ZnVuY3Rpb24o
YSl7dGhyb3cgbmV3IEVycm9yKCJTeW50YXggZXJyb3IsIHVucmVjb2duaXplZCBleHByZXNzaW9u
OiAiK2EpfSxnYS51bmlxdWVTb3J0PWZ1bmN0aW9uKGEpe3ZhciBiLGQ9W10sZT0wLGY9MDtpZihs
PSFjLmRldGVjdER1cGxpY2F0ZXMsaz0hYy5zb3J0U3RhYmxlJiZhLnNsaWNlKDApLGEuc29ydChC
KSxsKXt3aGlsZShiPWFbZisrXSliPT09YVtmXSYmKGU9ZC5wdXNoKGYpKTt3aGlsZShlLS0pYS5z
cGxpY2UoZFtlXSwxKX1yZXR1cm4gaz1udWxsLGF9LGU9Z2EuZ2V0VGV4dD1mdW5jdGlvbihhKXt2
YXIgYixjPSIiLGQ9MCxmPWEubm9kZVR5cGU7aWYoZil7aWYoMT09PWZ8fDk9PT1mfHwxMT09PWYp
e2lmKCJzdHJpbmciPT10eXBlb2YgYS50ZXh0Q29udGVudClyZXR1cm4gYS50ZXh0Q29udGVudDtm
b3IoYT1hLmZpcnN0Q2hpbGQ7YTthPWEubmV4dFNpYmxpbmcpYys9ZShhKX1lbHNlIGlmKDM9PT1m
fHw0PT09ZilyZXR1cm4gYS5ub2RlVmFsdWV9ZWxzZSB3aGlsZShiPWFbZCsrXSljKz1lKGIpO3Jl
dHVybiBjfSxkPWdhLnNlbGVjdG9ycz17Y2FjaGVMZW5ndGg6NTAsY3JlYXRlUHNldWRvOmlhLG1h
dGNoOlYsYXR0ckhhbmRsZTp7fSxmaW5kOnt9LHJlbGF0aXZlOnsiPiI6e2RpcjoicGFyZW50Tm9k
ZSIsZmlyc3Q6ITB9LCIgIjp7ZGlyOiJwYXJlbnROb2RlIn0sIisiOntkaXI6InByZXZpb3VzU2li
bGluZyIsZmlyc3Q6ITB9LCJ+Ijp7ZGlyOiJwcmV2aW91c1NpYmxpbmcifX0scHJlRmlsdGVyOntB
VFRSOmZ1bmN0aW9uKGEpe3JldHVybiBhWzFdPWFbMV0ucmVwbGFjZShfLGFhKSxhWzNdPShhWzNd
fHxhWzRdfHxhWzVdfHwiIikucmVwbGFjZShfLGFhKSwifj0iPT09YVsyXSYmKGFbM109IiAiK2Fb
M10rIiAiKSxhLnNsaWNlKDAsNCl9LENISUxEOmZ1bmN0aW9uKGEpe3JldHVybiBhWzFdPWFbMV0u
dG9Mb3dlckNhc2UoKSwibnRoIj09PWFbMV0uc2xpY2UoMCwzKT8oYVszXXx8Z2EuZXJyb3IoYVsw
XSksYVs0XT0rKGFbNF0/YVs1XSsoYVs2XXx8MSk6MiooImV2ZW4iPT09YVszXXx8Im9kZCI9PT1h
WzNdKSksYVs1XT0rKGFbN10rYVs4XXx8Im9kZCI9PT1hWzNdKSk6YVszXSYmZ2EuZXJyb3IoYVsw
XSksYX0sUFNFVURPOmZ1bmN0aW9uKGEpe3ZhciBiLGM9IWFbNl0mJmFbMl07cmV0dXJuIFYuQ0hJ
TEQudGVzdChhWzBdKT9udWxsOihhWzNdP2FbMl09YVs0XXx8YVs1XXx8IiI6YyYmVC50ZXN0KGMp
JiYoYj1nKGMsITApKSYmKGI9Yy5pbmRleE9mKCIpIixjLmxlbmd0aC1iKS1jLmxlbmd0aCkmJihh
WzBdPWFbMF0uc2xpY2UoMCxiKSxhWzJdPWMuc2xpY2UoMCxiKSksYS5zbGljZSgwLDMpKX19LGZp
bHRlcjp7VEFHOmZ1bmN0aW9uKGEpe3ZhciBiPWEucmVwbGFjZShfLGFhKS50b0xvd2VyQ2FzZSgp
O3JldHVybiIqIj09PWE/ZnVuY3Rpb24oKXtyZXR1cm4hMH06ZnVuY3Rpb24oYSl7cmV0dXJuIGEu
bm9kZU5hbWUmJmEubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PWJ9fSxDTEFTUzpmdW5jdGlvbihh
KXt2YXIgYj15W2ErIiAiXTtyZXR1cm4gYnx8KGI9bmV3IFJlZ0V4cCgiKF58IitLKyIpIithKyIo
IitLKyJ8JCkiKSkmJnkoYSxmdW5jdGlvbihhKXtyZXR1cm4gYi50ZXN0KCJzdHJpbmciPT10eXBl
b2YgYS5jbGFzc05hbWUmJmEuY2xhc3NOYW1lfHwidW5kZWZpbmVkIiE9dHlwZW9mIGEuZ2V0QXR0
cmlidXRlJiZhLmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiIpfSl9LEFUVFI6ZnVuY3Rpb24oYSxi
LGMpe3JldHVybiBmdW5jdGlvbihkKXt2YXIgZT1nYS5hdHRyKGQsYSk7cmV0dXJuIG51bGw9PWU/
IiE9Ij09PWI6IWJ8fChlKz0iIiwiPSI9PT1iP2U9PT1jOiIhPSI9PT1iP2UhPT1jOiJePSI9PT1i
P2MmJjA9PT1lLmluZGV4T2YoYyk6Iio9Ij09PWI/YyYmZS5pbmRleE9mKGMpPi0xOiIkPSI9PT1i
P2MmJmUuc2xpY2UoLWMubGVuZ3RoKT09PWM6In49Ij09PWI/KCIgIitlLnJlcGxhY2UoTywiICIp
KyIgIikuaW5kZXhPZihjKT4tMToifD0iPT09YiYmKGU9PT1jfHxlLnNsaWNlKDAsYy5sZW5ndGgr
MSk9PT1jKyItIikpfX0sQ0hJTEQ6ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj0ibnRoIiE9PWEu
c2xpY2UoMCwzKSxnPSJsYXN0IiE9PWEuc2xpY2UoLTQpLGg9Im9mLXR5cGUiPT09YjtyZXR1cm4g
MT09PWQmJjA9PT1lP2Z1bmN0aW9uKGEpe3JldHVybiEhYS5wYXJlbnROb2RlfTpmdW5jdGlvbihi
LGMsaSl7dmFyIGosayxsLG0sbixvLHA9ZiE9PWc/Im5leHRTaWJsaW5nIjoicHJldmlvdXNTaWJs
aW5nIixxPWIucGFyZW50Tm9kZSxyPWgmJmIubm9kZU5hbWUudG9Mb3dlckNhc2UoKSxzPSFpJiYh
aCx0PSExO2lmKHEpe2lmKGYpe3doaWxlKHApe209Yjt3aGlsZShtPW1bcF0paWYoaD9tLm5vZGVO
YW1lLnRvTG93ZXJDYXNlKCk9PT1yOjE9PT1tLm5vZGVUeXBlKXJldHVybiExO289cD0ib25seSI9
PT1hJiYhbyYmIm5leHRTaWJsaW5nIn1yZXR1cm4hMH1pZihvPVtnP3EuZmlyc3RDaGlsZDpxLmxh
c3RDaGlsZF0sZyYmcyl7bT1xLGw9bVt1XXx8KG1bdV09e30pLGs9bFttLnVuaXF1ZUlEXXx8KGxb
bS51bmlxdWVJRF09e30pLGo9a1thXXx8W10sbj1qWzBdPT09dyYmalsxXSx0PW4mJmpbMl0sbT1u
JiZxLmNoaWxkTm9kZXNbbl07d2hpbGUobT0rK24mJm0mJm1bcF18fCh0PW49MCl8fG8ucG9wKCkp
aWYoMT09PW0ubm9kZVR5cGUmJisrdCYmbT09PWIpe2tbYV09W3csbix0XTticmVha319ZWxzZSBp
ZihzJiYobT1iLGw9bVt1XXx8KG1bdV09e30pLGs9bFttLnVuaXF1ZUlEXXx8KGxbbS51bmlxdWVJ
RF09e30pLGo9a1thXXx8W10sbj1qWzBdPT09dyYmalsxXSx0PW4pLHQ9PT0hMSl3aGlsZShtPSsr
biYmbSYmbVtwXXx8KHQ9bj0wKXx8by5wb3AoKSlpZigoaD9tLm5vZGVOYW1lLnRvTG93ZXJDYXNl
KCk9PT1yOjE9PT1tLm5vZGVUeXBlKSYmKyt0JiYocyYmKGw9bVt1XXx8KG1bdV09e30pLGs9bFtt
LnVuaXF1ZUlEXXx8KGxbbS51bmlxdWVJRF09e30pLGtbYV09W3csdF0pLG09PT1iKSlicmVhazty
ZXR1cm4gdC09ZSx0PT09ZHx8dCVkPT09MCYmdC9kPj0wfX19LFBTRVVETzpmdW5jdGlvbihhLGIp
e3ZhciBjLGU9ZC5wc2V1ZG9zW2FdfHxkLnNldEZpbHRlcnNbYS50b0xvd2VyQ2FzZSgpXXx8Z2Eu
ZXJyb3IoInVuc3VwcG9ydGVkIHBzZXVkbzogIithKTtyZXR1cm4gZVt1XT9lKGIpOmUubGVuZ3Ro
PjE/KGM9W2EsYSwiIixiXSxkLnNldEZpbHRlcnMuaGFzT3duUHJvcGVydHkoYS50b0xvd2VyQ2Fz
ZSgpKT9pYShmdW5jdGlvbihhLGMpe3ZhciBkLGY9ZShhLGIpLGc9Zi5sZW5ndGg7d2hpbGUoZy0t
KWQ9SShhLGZbZ10pLGFbZF09IShjW2RdPWZbZ10pfSk6ZnVuY3Rpb24oYSl7cmV0dXJuIGUoYSww
LGMpfSk6ZX19LHBzZXVkb3M6e25vdDppYShmdW5jdGlvbihhKXt2YXIgYj1bXSxjPVtdLGQ9aChh
LnJlcGxhY2UoUCwiJDEiKSk7cmV0dXJuIGRbdV0/aWEoZnVuY3Rpb24oYSxiLGMsZSl7dmFyIGYs
Zz1kKGEsbnVsbCxlLFtdKSxoPWEubGVuZ3RoO3doaWxlKGgtLSkoZj1nW2hdKSYmKGFbaF09IShi
W2hdPWYpKX0pOmZ1bmN0aW9uKGEsZSxmKXtyZXR1cm4gYlswXT1hLGQoYixudWxsLGYsYyksYlsw
XT1udWxsLCFjLnBvcCgpfX0pLGhhczppYShmdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oYil7
cmV0dXJuIGdhKGEsYikubGVuZ3RoPjB9fSksY29udGFpbnM6aWEoZnVuY3Rpb24oYSl7cmV0dXJu
IGE9YS5yZXBsYWNlKF8sYWEpLGZ1bmN0aW9uKGIpe3JldHVybihiLnRleHRDb250ZW50fHxiLmlu
bmVyVGV4dHx8ZShiKSkuaW5kZXhPZihhKT4tMX19KSxsYW5nOmlhKGZ1bmN0aW9uKGEpe3JldHVy
biBVLnRlc3QoYXx8IiIpfHxnYS5lcnJvcigidW5zdXBwb3J0ZWQgbGFuZzogIithKSxhPWEucmVw
bGFjZShfLGFhKS50b0xvd2VyQ2FzZSgpLGZ1bmN0aW9uKGIpe3ZhciBjO2RvIGlmKGM9cD9iLmxh
bmc6Yi5nZXRBdHRyaWJ1dGUoInhtbDpsYW5nIil8fGIuZ2V0QXR0cmlidXRlKCJsYW5nIikpcmV0
dXJuIGM9Yy50b0xvd2VyQ2FzZSgpLGM9PT1hfHwwPT09Yy5pbmRleE9mKGErIi0iKTt3aGlsZSgo
Yj1iLnBhcmVudE5vZGUpJiYxPT09Yi5ub2RlVHlwZSk7cmV0dXJuITF9fSksdGFyZ2V0OmZ1bmN0
aW9uKGIpe3ZhciBjPWEubG9jYXRpb24mJmEubG9jYXRpb24uaGFzaDtyZXR1cm4gYyYmYy5zbGlj
ZSgxKT09PWIuaWR9LHJvb3Q6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1vfSxmb2N1czpmdW5jdGlv
bihhKXtyZXR1cm4gYT09PW4uYWN0aXZlRWxlbWVudCYmKCFuLmhhc0ZvY3VzfHxuLmhhc0ZvY3Vz
KCkpJiYhIShhLnR5cGV8fGEuaHJlZnx8fmEudGFiSW5kZXgpfSxlbmFibGVkOm9hKCExKSxkaXNh
YmxlZDpvYSghMCksY2hlY2tlZDpmdW5jdGlvbihhKXt2YXIgYj1hLm5vZGVOYW1lLnRvTG93ZXJD
YXNlKCk7cmV0dXJuImlucHV0Ij09PWImJiEhYS5jaGVja2VkfHwib3B0aW9uIj09PWImJiEhYS5z
ZWxlY3RlZH0sc2VsZWN0ZWQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEucGFyZW50Tm9kZSYmYS5wYXJl
bnROb2RlLnNlbGVjdGVkSW5kZXgsYS5zZWxlY3RlZD09PSEwfSxlbXB0eTpmdW5jdGlvbihhKXtm
b3IoYT1hLmZpcnN0Q2hpbGQ7YTthPWEubmV4dFNpYmxpbmcpaWYoYS5ub2RlVHlwZTw2KXJldHVy
biExO3JldHVybiEwfSxwYXJlbnQ6ZnVuY3Rpb24oYSl7cmV0dXJuIWQucHNldWRvcy5lbXB0eShh
KX0saGVhZGVyOmZ1bmN0aW9uKGEpe3JldHVybiBYLnRlc3QoYS5ub2RlTmFtZSl9LGlucHV0OmZ1
bmN0aW9uKGEpe3JldHVybiBXLnRlc3QoYS5ub2RlTmFtZSl9LGJ1dHRvbjpmdW5jdGlvbihhKXt2
YXIgYj1hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PWImJiJidXR0b24i
PT09YS50eXBlfHwiYnV0dG9uIj09PWJ9LHRleHQ6ZnVuY3Rpb24oYSl7dmFyIGI7cmV0dXJuImlu
cHV0Ij09PWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKSYmInRleHQiPT09YS50eXBlJiYobnVsbD09
KGI9YS5nZXRBdHRyaWJ1dGUoInR5cGUiKSl8fCJ0ZXh0Ij09PWIudG9Mb3dlckNhc2UoKSl9LGZp
cnN0OnBhKGZ1bmN0aW9uKCl7cmV0dXJuWzBdfSksbGFzdDpwYShmdW5jdGlvbihhLGIpe3JldHVy
bltiLTFdfSksZXE6cGEoZnVuY3Rpb24oYSxiLGMpe3JldHVybltjPDA/YytiOmNdfSksZXZlbjpw
YShmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0wO2M8YjtjKz0yKWEucHVzaChjKTtyZXR1cm4gYX0p
LG9kZDpwYShmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0xO2M8YjtjKz0yKWEucHVzaChjKTtyZXR1
cm4gYX0pLGx0OnBhKGZ1bmN0aW9uKGEsYixjKXtmb3IodmFyIGQ9YzwwP2MrYjpjOy0tZD49MDsp
YS5wdXNoKGQpO3JldHVybiBhfSksZ3Q6cGEoZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZD1jPDA/
YytiOmM7KytkPGI7KWEucHVzaChkKTtyZXR1cm4gYX0pfX0sZC5wc2V1ZG9zLm50aD1kLnBzZXVk
b3MuZXE7Zm9yKGIgaW57cmFkaW86ITAsY2hlY2tib3g6ITAsZmlsZTohMCxwYXNzd29yZDohMCxp
bWFnZTohMH0pZC5wc2V1ZG9zW2JdPW1hKGIpO2ZvcihiIGlue3N1Ym1pdDohMCxyZXNldDohMH0p
ZC5wc2V1ZG9zW2JdPW5hKGIpO2Z1bmN0aW9uIHJhKCl7fXJhLnByb3RvdHlwZT1kLmZpbHRlcnM9
ZC5wc2V1ZG9zLGQuc2V0RmlsdGVycz1uZXcgcmEsZz1nYS50b2tlbml6ZT1mdW5jdGlvbihhLGIp
e3ZhciBjLGUsZixnLGgsaSxqLGs9elthKyIgIl07aWYoaylyZXR1cm4gYj8wOmsuc2xpY2UoMCk7
aD1hLGk9W10saj1kLnByZUZpbHRlcjt3aGlsZShoKXtjJiYhKGU9US5leGVjKGgpKXx8KGUmJiho
PWguc2xpY2UoZVswXS5sZW5ndGgpfHxoKSxpLnB1c2goZj1bXSkpLGM9ITEsKGU9Ui5leGVjKGgp
KSYmKGM9ZS5zaGlmdCgpLGYucHVzaCh7dmFsdWU6Yyx0eXBlOmVbMF0ucmVwbGFjZShQLCIgIil9
KSxoPWguc2xpY2UoYy5sZW5ndGgpKTtmb3IoZyBpbiBkLmZpbHRlcikhKGU9VltnXS5leGVjKGgp
KXx8altnXSYmIShlPWpbZ10oZSkpfHwoYz1lLnNoaWZ0KCksZi5wdXNoKHt2YWx1ZTpjLHR5cGU6
ZyxtYXRjaGVzOmV9KSxoPWguc2xpY2UoYy5sZW5ndGgpKTtpZighYylicmVha31yZXR1cm4gYj9o
Lmxlbmd0aDpoP2dhLmVycm9yKGEpOnooYSxpKS5zbGljZSgwKX07ZnVuY3Rpb24gc2EoYSl7Zm9y
KHZhciBiPTAsYz1hLmxlbmd0aCxkPSIiO2I8YztiKyspZCs9YVtiXS52YWx1ZTtyZXR1cm4gZH1m
dW5jdGlvbiB0YShhLGIsYyl7dmFyIGQ9Yi5kaXIsZT1iLm5leHQsZj1lfHxkLGc9YyYmInBhcmVu
dE5vZGUiPT09ZixoPXgrKztyZXR1cm4gYi5maXJzdD9mdW5jdGlvbihiLGMsZSl7d2hpbGUoYj1i
W2RdKWlmKDE9PT1iLm5vZGVUeXBlfHxnKXJldHVybiBhKGIsYyxlKTtyZXR1cm4hMX06ZnVuY3Rp
b24oYixjLGkpe3ZhciBqLGssbCxtPVt3LGhdO2lmKGkpe3doaWxlKGI9YltkXSlpZigoMT09PWIu
bm9kZVR5cGV8fGcpJiZhKGIsYyxpKSlyZXR1cm4hMH1lbHNlIHdoaWxlKGI9YltkXSlpZigxPT09
Yi5ub2RlVHlwZXx8ZylpZihsPWJbdV18fChiW3VdPXt9KSxrPWxbYi51bmlxdWVJRF18fChsW2Iu
dW5pcXVlSURdPXt9KSxlJiZlPT09Yi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKWI9YltkXXx8Yjtl
bHNle2lmKChqPWtbZl0pJiZqWzBdPT09dyYmalsxXT09PWgpcmV0dXJuIG1bMl09alsyXTtpZihr
W2ZdPW0sbVsyXT1hKGIsYyxpKSlyZXR1cm4hMH1yZXR1cm4hMX19ZnVuY3Rpb24gdWEoYSl7cmV0
dXJuIGEubGVuZ3RoPjE/ZnVuY3Rpb24oYixjLGQpe3ZhciBlPWEubGVuZ3RoO3doaWxlKGUtLSlp
ZighYVtlXShiLGMsZCkpcmV0dXJuITE7cmV0dXJuITB9OmFbMF19ZnVuY3Rpb24gdmEoYSxiLGMp
e2Zvcih2YXIgZD0wLGU9Yi5sZW5ndGg7ZDxlO2QrKylnYShhLGJbZF0sYyk7cmV0dXJuIGN9ZnVu
Y3Rpb24gd2EoYSxiLGMsZCxlKXtmb3IodmFyIGYsZz1bXSxoPTAsaT1hLmxlbmd0aCxqPW51bGwh
PWI7aDxpO2grKykoZj1hW2hdKSYmKGMmJiFjKGYsZCxlKXx8KGcucHVzaChmKSxqJiZiLnB1c2go
aCkpKTtyZXR1cm4gZ31mdW5jdGlvbiB4YShhLGIsYyxkLGUsZil7cmV0dXJuIGQmJiFkW3VdJiYo
ZD14YShkKSksZSYmIWVbdV0mJihlPXhhKGUsZikpLGlhKGZ1bmN0aW9uKGYsZyxoLGkpe3ZhciBq
LGssbCxtPVtdLG49W10sbz1nLmxlbmd0aCxwPWZ8fHZhKGJ8fCIqIixoLm5vZGVUeXBlP1toXTpo
LFtdKSxxPSFhfHwhZiYmYj9wOndhKHAsbSxhLGgsaSkscj1jP2V8fChmP2E6b3x8ZCk/W106Zzpx
O2lmKGMmJmMocSxyLGgsaSksZCl7aj13YShyLG4pLGQoaixbXSxoLGkpLGs9ai5sZW5ndGg7d2hp
bGUoay0tKShsPWpba10pJiYocltuW2tdXT0hKHFbbltrXV09bCkpfWlmKGYpe2lmKGV8fGEpe2lm
KGUpe2o9W10saz1yLmxlbmd0aDt3aGlsZShrLS0pKGw9cltrXSkmJmoucHVzaChxW2tdPWwpO2Uo
bnVsbCxyPVtdLGosaSl9az1yLmxlbmd0aDt3aGlsZShrLS0pKGw9cltrXSkmJihqPWU/SShmLGwp
Om1ba10pPi0xJiYoZltqXT0hKGdbal09bCkpfX1lbHNlIHI9d2Eocj09PWc/ci5zcGxpY2Uobyxy
Lmxlbmd0aCk6ciksZT9lKG51bGwsZyxyLGkpOkcuYXBwbHkoZyxyKX0pfWZ1bmN0aW9uIHlhKGEp
e2Zvcih2YXIgYixjLGUsZj1hLmxlbmd0aCxnPWQucmVsYXRpdmVbYVswXS50eXBlXSxoPWd8fGQu
cmVsYXRpdmVbIiAiXSxpPWc/MTowLGs9dGEoZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1ifSxoLCEw
KSxsPXRhKGZ1bmN0aW9uKGEpe3JldHVybiBJKGIsYSk+LTF9LGgsITApLG09W2Z1bmN0aW9uKGEs
YyxkKXt2YXIgZT0hZyYmKGR8fGMhPT1qKXx8KChiPWMpLm5vZGVUeXBlP2soYSxjLGQpOmwoYSxj
LGQpKTtyZXR1cm4gYj1udWxsLGV9XTtpPGY7aSsrKWlmKGM9ZC5yZWxhdGl2ZVthW2ldLnR5cGVd
KW09W3RhKHVhKG0pLGMpXTtlbHNle2lmKGM9ZC5maWx0ZXJbYVtpXS50eXBlXS5hcHBseShudWxs
LGFbaV0ubWF0Y2hlcyksY1t1XSl7Zm9yKGU9KytpO2U8ZjtlKyspaWYoZC5yZWxhdGl2ZVthW2Vd
LnR5cGVdKWJyZWFrO3JldHVybiB4YShpPjEmJnVhKG0pLGk+MSYmc2EoYS5zbGljZSgwLGktMSku
Y29uY2F0KHt2YWx1ZToiICI9PT1hW2ktMl0udHlwZT8iKiI6IiJ9KSkucmVwbGFjZShQLCIkMSIp
LGMsaTxlJiZ5YShhLnNsaWNlKGksZSkpLGU8ZiYmeWEoYT1hLnNsaWNlKGUpKSxlPGYmJnNhKGEp
KX1tLnB1c2goYyl9cmV0dXJuIHVhKG0pfWZ1bmN0aW9uIHphKGEsYil7dmFyIGM9Yi5sZW5ndGg+
MCxlPWEubGVuZ3RoPjAsZj1mdW5jdGlvbihmLGcsaCxpLGspe3ZhciBsLG8scSxyPTAscz0iMCIs
dD1mJiZbXSx1PVtdLHY9aix4PWZ8fGUmJmQuZmluZC5UQUcoIioiLGspLHk9dys9bnVsbD09dj8x
Ok1hdGgucmFuZG9tKCl8fC4xLHo9eC5sZW5ndGg7Zm9yKGsmJihqPWc9PT1ufHxnfHxrKTtzIT09
eiYmbnVsbCE9KGw9eFtzXSk7cysrKXtpZihlJiZsKXtvPTAsZ3x8bC5vd25lckRvY3VtZW50PT09
bnx8KG0obCksaD0hcCk7d2hpbGUocT1hW28rK10paWYocShsLGd8fG4saCkpe2kucHVzaChsKTti
cmVha31rJiYodz15KX1jJiYoKGw9IXEmJmwpJiZyLS0sZiYmdC5wdXNoKGwpKX1pZihyKz1zLGMm
JnMhPT1yKXtvPTA7d2hpbGUocT1iW28rK10pcSh0LHUsZyxoKTtpZihmKXtpZihyPjApd2hpbGUo
cy0tKXRbc118fHVbc118fCh1W3NdPUUuY2FsbChpKSk7dT13YSh1KX1HLmFwcGx5KGksdSksayYm
IWYmJnUubGVuZ3RoPjAmJnIrYi5sZW5ndGg+MSYmZ2EudW5pcXVlU29ydChpKX1yZXR1cm4gayYm
KHc9eSxqPXYpLHR9O3JldHVybiBjP2lhKGYpOmZ9cmV0dXJuIGg9Z2EuY29tcGlsZT1mdW5jdGlv
bihhLGIpe3ZhciBjLGQ9W10sZT1bXSxmPUFbYSsiICJdO2lmKCFmKXtifHwoYj1nKGEpKSxjPWIu
bGVuZ3RoO3doaWxlKGMtLSlmPXlhKGJbY10pLGZbdV0/ZC5wdXNoKGYpOmUucHVzaChmKTtmPUEo
YSx6YShlLGQpKSxmLnNlbGVjdG9yPWF9cmV0dXJuIGZ9LGk9Z2Euc2VsZWN0PWZ1bmN0aW9uKGEs
YixjLGUpe3ZhciBmLGksaixrLGwsbT0iZnVuY3Rpb24iPT10eXBlb2YgYSYmYSxuPSFlJiZnKGE9
bS5zZWxlY3Rvcnx8YSk7aWYoYz1jfHxbXSwxPT09bi5sZW5ndGgpe2lmKGk9blswXT1uWzBdLnNs
aWNlKDApLGkubGVuZ3RoPjImJiJJRCI9PT0oaj1pWzBdKS50eXBlJiY5PT09Yi5ub2RlVHlwZSYm
cCYmZC5yZWxhdGl2ZVtpWzFdLnR5cGVdKXtpZihiPShkLmZpbmQuSUQoai5tYXRjaGVzWzBdLnJl
cGxhY2UoXyxhYSksYil8fFtdKVswXSwhYilyZXR1cm4gYzttJiYoYj1iLnBhcmVudE5vZGUpLGE9
YS5zbGljZShpLnNoaWZ0KCkudmFsdWUubGVuZ3RoKX1mPVYubmVlZHNDb250ZXh0LnRlc3QoYSk/
MDppLmxlbmd0aDt3aGlsZShmLS0pe2lmKGo9aVtmXSxkLnJlbGF0aXZlW2s9ai50eXBlXSlicmVh
aztpZigobD1kLmZpbmRba10pJiYoZT1sKGoubWF0Y2hlc1swXS5yZXBsYWNlKF8sYWEpLCQudGVz
dChpWzBdLnR5cGUpJiZxYShiLnBhcmVudE5vZGUpfHxiKSkpe2lmKGkuc3BsaWNlKGYsMSksYT1l
Lmxlbmd0aCYmc2EoaSksIWEpcmV0dXJuIEcuYXBwbHkoYyxlKSxjO2JyZWFrfX19cmV0dXJuKG18
fGgoYSxuKSkoZSxiLCFwLGMsIWJ8fCQudGVzdChhKSYmcWEoYi5wYXJlbnROb2RlKXx8YiksY30s
Yy5zb3J0U3RhYmxlPXUuc3BsaXQoIiIpLnNvcnQoQikuam9pbigiIik9PT11LGMuZGV0ZWN0RHVw
bGljYXRlcz0hIWwsbSgpLGMuc29ydERldGFjaGVkPWphKGZ1bmN0aW9uKGEpe3JldHVybiAxJmEu
Y29tcGFyZURvY3VtZW50UG9zaXRpb24obi5jcmVhdGVFbGVtZW50KCJmaWVsZHNldCIpKX0pLGph
KGZ1bmN0aW9uKGEpe3JldHVybiBhLmlubmVySFRNTD0iPGEgaHJlZj0nIyc+PC9hPiIsIiMiPT09
YS5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgiaHJlZiIpfSl8fGthKCJ0eXBlfGhyZWZ8aGVpZ2h0
fHdpZHRoIixmdW5jdGlvbihhLGIsYyl7aWYoIWMpcmV0dXJuIGEuZ2V0QXR0cmlidXRlKGIsInR5
cGUiPT09Yi50b0xvd2VyQ2FzZSgpPzE6Mil9KSxjLmF0dHJpYnV0ZXMmJmphKGZ1bmN0aW9uKGEp
e3JldHVybiBhLmlubmVySFRNTD0iPGlucHV0Lz4iLGEuZmlyc3RDaGlsZC5zZXRBdHRyaWJ1dGUo
InZhbHVlIiwiIiksIiI9PT1hLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpfSl8fGth
KCJ2YWx1ZSIsZnVuY3Rpb24oYSxiLGMpe2lmKCFjJiYiaW5wdXQiPT09YS5ub2RlTmFtZS50b0xv
d2VyQ2FzZSgpKXJldHVybiBhLmRlZmF1bHRWYWx1ZX0pLGphKGZ1bmN0aW9uKGEpe3JldHVybiBu
dWxsPT1hLmdldEF0dHJpYnV0ZSgiZGlzYWJsZWQiKX0pfHxrYShKLGZ1bmN0aW9uKGEsYixjKXt2
YXIgZDtpZighYylyZXR1cm4gYVtiXT09PSEwP2IudG9Mb3dlckNhc2UoKTooZD1hLmdldEF0dHJp
YnV0ZU5vZGUoYikpJiZkLnNwZWNpZmllZD9kLnZhbHVlOm51bGx9KSxnYX0oYSk7ci5maW5kPXgs
ci5leHByPXguc2VsZWN0b3JzLHIuZXhwclsiOiJdPXIuZXhwci5wc2V1ZG9zLHIudW5pcXVlU29y
dD1yLnVuaXF1ZT14LnVuaXF1ZVNvcnQsci50ZXh0PXguZ2V0VGV4dCxyLmlzWE1MRG9jPXguaXNY
TUwsci5jb250YWlucz14LmNvbnRhaW5zLHIuZXNjYXBlU2VsZWN0b3I9eC5lc2NhcGU7dmFyIHk9
ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPVtdLGU9dm9pZCAwIT09Yzt3aGlsZSgoYT1hW2JdKSYmOSE9
PWEubm9kZVR5cGUpaWYoMT09PWEubm9kZVR5cGUpe2lmKGUmJnIoYSkuaXMoYykpYnJlYWs7ZC5w
dXNoKGEpfXJldHVybiBkfSx6PWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPVtdO2E7YT1hLm5leHRT
aWJsaW5nKTE9PT1hLm5vZGVUeXBlJiZhIT09YiYmYy5wdXNoKGEpO3JldHVybiBjfSxBPXIuZXhw
ci5tYXRjaC5uZWVkc0NvbnRleHQsQj0vXjwoW2Etel1bXlwvXDA+Olx4MjBcdFxyXG5cZl0qKVtc
eDIwXHRcclxuXGZdKlwvPz4oPzo8XC9cMT58KSQvaSxDPS9eLlteOiNcW1wuLF0qJC87ZnVuY3Rp
b24gRChhLGIsYyl7cmV0dXJuIHIuaXNGdW5jdGlvbihiKT9yLmdyZXAoYSxmdW5jdGlvbihhLGQp
e3JldHVybiEhYi5jYWxsKGEsZCxhKSE9PWN9KTpiLm5vZGVUeXBlP3IuZ3JlcChhLGZ1bmN0aW9u
KGEpe3JldHVybiBhPT09YiE9PWN9KToic3RyaW5nIiE9dHlwZW9mIGI/ci5ncmVwKGEsZnVuY3Rp
b24oYSl7cmV0dXJuIGkuY2FsbChiLGEpPi0xIT09Y30pOkMudGVzdChiKT9yLmZpbHRlcihiLGEs
Yyk6KGI9ci5maWx0ZXIoYixhKSxyLmdyZXAoYSxmdW5jdGlvbihhKXtyZXR1cm4gaS5jYWxsKGIs
YSk+LTEhPT1jJiYxPT09YS5ub2RlVHlwZX0pKX1yLmZpbHRlcj1mdW5jdGlvbihhLGIsYyl7dmFy
IGQ9YlswXTtyZXR1cm4gYyYmKGE9Ijpub3QoIithKyIpIiksMT09PWIubGVuZ3RoJiYxPT09ZC5u
b2RlVHlwZT9yLmZpbmQubWF0Y2hlc1NlbGVjdG9yKGQsYSk/W2RdOltdOnIuZmluZC5tYXRjaGVz
KGEsci5ncmVwKGIsZnVuY3Rpb24oYSl7cmV0dXJuIDE9PT1hLm5vZGVUeXBlfSkpfSxyLmZuLmV4
dGVuZCh7ZmluZDpmdW5jdGlvbihhKXt2YXIgYixjLGQ9dGhpcy5sZW5ndGgsZT10aGlzO2lmKCJz
dHJpbmciIT10eXBlb2YgYSlyZXR1cm4gdGhpcy5wdXNoU3RhY2socihhKS5maWx0ZXIoZnVuY3Rp
b24oKXtmb3IoYj0wO2I8ZDtiKyspaWYoci5jb250YWlucyhlW2JdLHRoaXMpKXJldHVybiEwfSkp
O2ZvcihjPXRoaXMucHVzaFN0YWNrKFtdKSxiPTA7YjxkO2IrKylyLmZpbmQoYSxlW2JdLGMpO3Jl
dHVybiBkPjE/ci51bmlxdWVTb3J0KGMpOmN9LGZpbHRlcjpmdW5jdGlvbihhKXtyZXR1cm4gdGhp
cy5wdXNoU3RhY2soRCh0aGlzLGF8fFtdLCExKSl9LG5vdDpmdW5jdGlvbihhKXtyZXR1cm4gdGhp
cy5wdXNoU3RhY2soRCh0aGlzLGF8fFtdLCEwKSl9LGlzOmZ1bmN0aW9uKGEpe3JldHVybiEhRCh0
aGlzLCJzdHJpbmciPT10eXBlb2YgYSYmQS50ZXN0KGEpP3IoYSk6YXx8W10sITEpLmxlbmd0aH19
KTt2YXIgRSxGPS9eKD86XHMqKDxbXHdcV10rPilbXj5dKnwjKFtcdy1dKykpJC8sRz1yLmZuLmlu
aXQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBlLGY7aWYoIWEpcmV0dXJuIHRoaXM7aWYoYz1jfHxFLCJz
dHJpbmciPT10eXBlb2YgYSl7aWYoZT0iPCI9PT1hWzBdJiYiPiI9PT1hW2EubGVuZ3RoLTFdJiZh
Lmxlbmd0aD49Mz9bbnVsbCxhLG51bGxdOkYuZXhlYyhhKSwhZXx8IWVbMV0mJmIpcmV0dXJuIWJ8
fGIuanF1ZXJ5PyhifHxjKS5maW5kKGEpOnRoaXMuY29uc3RydWN0b3IoYikuZmluZChhKTtpZihl
WzFdKXtpZihiPWIgaW5zdGFuY2VvZiByP2JbMF06YixyLm1lcmdlKHRoaXMsci5wYXJzZUhUTUwo
ZVsxXSxiJiZiLm5vZGVUeXBlP2Iub3duZXJEb2N1bWVudHx8YjpkLCEwKSksQi50ZXN0KGVbMV0p
JiZyLmlzUGxhaW5PYmplY3QoYikpZm9yKGUgaW4gYilyLmlzRnVuY3Rpb24odGhpc1tlXSk/dGhp
c1tlXShiW2VdKTp0aGlzLmF0dHIoZSxiW2VdKTtyZXR1cm4gdGhpc31yZXR1cm4gZj1kLmdldEVs
ZW1lbnRCeUlkKGVbMl0pLGYmJih0aGlzWzBdPWYsdGhpcy5sZW5ndGg9MSksdGhpc31yZXR1cm4g
YS5ub2RlVHlwZT8odGhpc1swXT1hLHRoaXMubGVuZ3RoPTEsdGhpcyk6ci5pc0Z1bmN0aW9uKGEp
P3ZvaWQgMCE9PWMucmVhZHk/Yy5yZWFkeShhKTphKHIpOnIubWFrZUFycmF5KGEsdGhpcyl9O0cu
cHJvdG90eXBlPXIuZm4sRT1yKGQpO3ZhciBIPS9eKD86cGFyZW50c3xwcmV2KD86VW50aWx8QWxs
KSkvLEk9e2NoaWxkcmVuOiEwLGNvbnRlbnRzOiEwLG5leHQ6ITAscHJldjohMH07ci5mbi5leHRl
bmQoe2hhczpmdW5jdGlvbihhKXt2YXIgYj1yKGEsdGhpcyksYz1iLmxlbmd0aDtyZXR1cm4gdGhp
cy5maWx0ZXIoZnVuY3Rpb24oKXtmb3IodmFyIGE9MDthPGM7YSsrKWlmKHIuY29udGFpbnModGhp
cyxiW2FdKSlyZXR1cm4hMH0pfSxjbG9zZXN0OmZ1bmN0aW9uKGEsYil7dmFyIGMsZD0wLGU9dGhp
cy5sZW5ndGgsZj1bXSxnPSJzdHJpbmciIT10eXBlb2YgYSYmcihhKTtpZighQS50ZXN0KGEpKWZv
cig7ZDxlO2QrKylmb3IoYz10aGlzW2RdO2MmJmMhPT1iO2M9Yy5wYXJlbnROb2RlKWlmKGMubm9k
ZVR5cGU8MTEmJihnP2cuaW5kZXgoYyk+LTE6MT09PWMubm9kZVR5cGUmJnIuZmluZC5tYXRjaGVz
U2VsZWN0b3IoYyxhKSkpe2YucHVzaChjKTticmVha31yZXR1cm4gdGhpcy5wdXNoU3RhY2soZi5s
ZW5ndGg+MT9yLnVuaXF1ZVNvcnQoZik6Zil9LGluZGV4OmZ1bmN0aW9uKGEpe3JldHVybiBhPyJz
dHJpbmciPT10eXBlb2YgYT9pLmNhbGwocihhKSx0aGlzWzBdKTppLmNhbGwodGhpcyxhLmpxdWVy
eT9hWzBdOmEpOnRoaXNbMF0mJnRoaXNbMF0ucGFyZW50Tm9kZT90aGlzLmZpcnN0KCkucHJldkFs
bCgpLmxlbmd0aDotMX0sYWRkOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMucHVzaFN0YWNrKHIu
dW5pcXVlU29ydChyLm1lcmdlKHRoaXMuZ2V0KCkscihhLGIpKSkpfSxhZGRCYWNrOmZ1bmN0aW9u
KGEpe3JldHVybiB0aGlzLmFkZChudWxsPT1hP3RoaXMucHJldk9iamVjdDp0aGlzLnByZXZPYmpl
Y3QuZmlsdGVyKGEpKX19KTtmdW5jdGlvbiBKKGEsYil7d2hpbGUoKGE9YVtiXSkmJjEhPT1hLm5v
ZGVUeXBlKTtyZXR1cm4gYX1yLmVhY2goe3BhcmVudDpmdW5jdGlvbihhKXt2YXIgYj1hLnBhcmVu
dE5vZGU7cmV0dXJuIGImJjExIT09Yi5ub2RlVHlwZT9iOm51bGx9LHBhcmVudHM6ZnVuY3Rpb24o
YSl7cmV0dXJuIHkoYSwicGFyZW50Tm9kZSIpfSxwYXJlbnRzVW50aWw6ZnVuY3Rpb24oYSxiLGMp
e3JldHVybiB5KGEsInBhcmVudE5vZGUiLGMpfSxuZXh0OmZ1bmN0aW9uKGEpe3JldHVybiBKKGEs
Im5leHRTaWJsaW5nIil9LHByZXY6ZnVuY3Rpb24oYSl7cmV0dXJuIEooYSwicHJldmlvdXNTaWJs
aW5nIil9LG5leHRBbGw6ZnVuY3Rpb24oYSl7cmV0dXJuIHkoYSwibmV4dFNpYmxpbmciKX0scHJl
dkFsbDpmdW5jdGlvbihhKXtyZXR1cm4geShhLCJwcmV2aW91c1NpYmxpbmciKX0sbmV4dFVudGls
OmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4geShhLCJuZXh0U2libGluZyIsYyl9LHByZXZVbnRpbDpm
dW5jdGlvbihhLGIsYyl7cmV0dXJuIHkoYSwicHJldmlvdXNTaWJsaW5nIixjKX0sc2libGluZ3M6
ZnVuY3Rpb24oYSl7cmV0dXJuIHooKGEucGFyZW50Tm9kZXx8e30pLmZpcnN0Q2hpbGQsYSl9LGNo
aWxkcmVuOmZ1bmN0aW9uKGEpe3JldHVybiB6KGEuZmlyc3RDaGlsZCl9LGNvbnRlbnRzOmZ1bmN0
aW9uKGEpe3JldHVybiBhLmNvbnRlbnREb2N1bWVudHx8ci5tZXJnZShbXSxhLmNoaWxkTm9kZXMp
fX0sZnVuY3Rpb24oYSxiKXtyLmZuW2FdPWZ1bmN0aW9uKGMsZCl7dmFyIGU9ci5tYXAodGhpcyxi
LGMpO3JldHVybiJVbnRpbCIhPT1hLnNsaWNlKC01KSYmKGQ9YyksZCYmInN0cmluZyI9PXR5cGVv
ZiBkJiYoZT1yLmZpbHRlcihkLGUpKSx0aGlzLmxlbmd0aD4xJiYoSVthXXx8ci51bmlxdWVTb3J0
KGUpLEgudGVzdChhKSYmZS5yZXZlcnNlKCkpLHRoaXMucHVzaFN0YWNrKGUpfX0pO3ZhciBLPS9b
Xlx4MjBcdFxyXG5cZl0rL2c7ZnVuY3Rpb24gTChhKXt2YXIgYj17fTtyZXR1cm4gci5lYWNoKGEu
bWF0Y2goSyl8fFtdLGZ1bmN0aW9uKGEsYyl7YltjXT0hMH0pLGJ9ci5DYWxsYmFja3M9ZnVuY3Rp
b24oYSl7YT0ic3RyaW5nIj09dHlwZW9mIGE/TChhKTpyLmV4dGVuZCh7fSxhKTt2YXIgYixjLGQs
ZSxmPVtdLGc9W10saD0tMSxpPWZ1bmN0aW9uKCl7Zm9yKGU9YS5vbmNlLGQ9Yj0hMDtnLmxlbmd0
aDtoPS0xKXtjPWcuc2hpZnQoKTt3aGlsZSgrK2g8Zi5sZW5ndGgpZltoXS5hcHBseShjWzBdLGNb
MV0pPT09ITEmJmEuc3RvcE9uRmFsc2UmJihoPWYubGVuZ3RoLGM9ITEpfWEubWVtb3J5fHwoYz0h
MSksYj0hMSxlJiYoZj1jP1tdOiIiKX0saj17YWRkOmZ1bmN0aW9uKCl7cmV0dXJuIGYmJihjJiYh
YiYmKGg9Zi5sZW5ndGgtMSxnLnB1c2goYykpLGZ1bmN0aW9uIGQoYil7ci5lYWNoKGIsZnVuY3Rp
b24oYixjKXtyLmlzRnVuY3Rpb24oYyk/YS51bmlxdWUmJmouaGFzKGMpfHxmLnB1c2goYyk6YyYm
Yy5sZW5ndGgmJiJzdHJpbmciIT09ci50eXBlKGMpJiZkKGMpfSl9KGFyZ3VtZW50cyksYyYmIWIm
JmkoKSksdGhpc30scmVtb3ZlOmZ1bmN0aW9uKCl7cmV0dXJuIHIuZWFjaChhcmd1bWVudHMsZnVu
Y3Rpb24oYSxiKXt2YXIgYzt3aGlsZSgoYz1yLmluQXJyYXkoYixmLGMpKT4tMSlmLnNwbGljZShj
LDEpLGM8PWgmJmgtLX0pLHRoaXN9LGhhczpmdW5jdGlvbihhKXtyZXR1cm4gYT9yLmluQXJyYXko
YSxmKT4tMTpmLmxlbmd0aD4wfSxlbXB0eTpmdW5jdGlvbigpe3JldHVybiBmJiYoZj1bXSksdGhp
c30sZGlzYWJsZTpmdW5jdGlvbigpe3JldHVybiBlPWc9W10sZj1jPSIiLHRoaXN9LGRpc2FibGVk
OmZ1bmN0aW9uKCl7cmV0dXJuIWZ9LGxvY2s6ZnVuY3Rpb24oKXtyZXR1cm4gZT1nPVtdLGN8fGJ8
fChmPWM9IiIpLHRoaXN9LGxvY2tlZDpmdW5jdGlvbigpe3JldHVybiEhZX0sZmlyZVdpdGg6ZnVu
Y3Rpb24oYSxjKXtyZXR1cm4gZXx8KGM9Y3x8W10sYz1bYSxjLnNsaWNlP2Muc2xpY2UoKTpjXSxn
LnB1c2goYyksYnx8aSgpKSx0aGlzfSxmaXJlOmZ1bmN0aW9uKCl7cmV0dXJuIGouZmlyZVdpdGgo
dGhpcyxhcmd1bWVudHMpLHRoaXN9LGZpcmVkOmZ1bmN0aW9uKCl7cmV0dXJuISFkfX07cmV0dXJu
IGp9O2Z1bmN0aW9uIE0oYSl7cmV0dXJuIGF9ZnVuY3Rpb24gTihhKXt0aHJvdyBhfWZ1bmN0aW9u
IE8oYSxiLGMpe3ZhciBkO3RyeXthJiZyLmlzRnVuY3Rpb24oZD1hLnByb21pc2UpP2QuY2FsbChh
KS5kb25lKGIpLmZhaWwoYyk6YSYmci5pc0Z1bmN0aW9uKGQ9YS50aGVuKT9kLmNhbGwoYSxiLGMp
OmIuY2FsbCh2b2lkIDAsYSl9Y2F0Y2goYSl7Yy5jYWxsKHZvaWQgMCxhKX19ci5leHRlbmQoe0Rl
ZmVycmVkOmZ1bmN0aW9uKGIpe3ZhciBjPVtbIm5vdGlmeSIsInByb2dyZXNzIixyLkNhbGxiYWNr
cygibWVtb3J5Iiksci5DYWxsYmFja3MoIm1lbW9yeSIpLDJdLFsicmVzb2x2ZSIsImRvbmUiLHIu
Q2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLHIuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLDAsInJl
c29sdmVkIl0sWyJyZWplY3QiLCJmYWlsIixyLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSxyLkNh
bGxiYWNrcygib25jZSBtZW1vcnkiKSwxLCJyZWplY3RlZCJdXSxkPSJwZW5kaW5nIixlPXtzdGF0
ZTpmdW5jdGlvbigpe3JldHVybiBkfSxhbHdheXM6ZnVuY3Rpb24oKXtyZXR1cm4gZi5kb25lKGFy
Z3VtZW50cykuZmFpbChhcmd1bWVudHMpLHRoaXN9LCJjYXRjaCI6ZnVuY3Rpb24oYSl7cmV0dXJu
IGUudGhlbihudWxsLGEpfSxwaXBlOmZ1bmN0aW9uKCl7dmFyIGE9YXJndW1lbnRzO3JldHVybiBy
LkRlZmVycmVkKGZ1bmN0aW9uKGIpe3IuZWFjaChjLGZ1bmN0aW9uKGMsZCl7dmFyIGU9ci5pc0Z1
bmN0aW9uKGFbZFs0XV0pJiZhW2RbNF1dO2ZbZFsxXV0oZnVuY3Rpb24oKXt2YXIgYT1lJiZlLmFw
cGx5KHRoaXMsYXJndW1lbnRzKTthJiZyLmlzRnVuY3Rpb24oYS5wcm9taXNlKT9hLnByb21pc2Uo
KS5wcm9ncmVzcyhiLm5vdGlmeSkuZG9uZShiLnJlc29sdmUpLmZhaWwoYi5yZWplY3QpOmJbZFsw
XSsiV2l0aCJdKHRoaXMsZT9bYV06YXJndW1lbnRzKX0pfSksYT1udWxsfSkucHJvbWlzZSgpfSx0
aGVuOmZ1bmN0aW9uKGIsZCxlKXt2YXIgZj0wO2Z1bmN0aW9uIGcoYixjLGQsZSl7cmV0dXJuIGZ1
bmN0aW9uKCl7dmFyIGg9dGhpcyxpPWFyZ3VtZW50cyxqPWZ1bmN0aW9uKCl7dmFyIGEsajtpZigh
KGI8Zikpe2lmKGE9ZC5hcHBseShoLGkpLGE9PT1jLnByb21pc2UoKSl0aHJvdyBuZXcgVHlwZUVy
cm9yKCJUaGVuYWJsZSBzZWxmLXJlc29sdXRpb24iKTtqPWEmJigib2JqZWN0Ij09dHlwZW9mIGF8
fCJmdW5jdGlvbiI9PXR5cGVvZiBhKSYmYS50aGVuLHIuaXNGdW5jdGlvbihqKT9lP2ouY2FsbChh
LGcoZixjLE0sZSksZyhmLGMsTixlKSk6KGYrKyxqLmNhbGwoYSxnKGYsYyxNLGUpLGcoZixjLE4s
ZSksZyhmLGMsTSxjLm5vdGlmeVdpdGgpKSk6KGQhPT1NJiYoaD12b2lkIDAsaT1bYV0pLChlfHxj
LnJlc29sdmVXaXRoKShoLGkpKX19LGs9ZT9qOmZ1bmN0aW9uKCl7dHJ5e2ooKX1jYXRjaChhKXty
LkRlZmVycmVkLmV4Y2VwdGlvbkhvb2smJnIuRGVmZXJyZWQuZXhjZXB0aW9uSG9vayhhLGsuc3Rh
Y2tUcmFjZSksYisxPj1mJiYoZCE9PU4mJihoPXZvaWQgMCxpPVthXSksYy5yZWplY3RXaXRoKGgs
aSkpfX07Yj9rKCk6KHIuRGVmZXJyZWQuZ2V0U3RhY2tIb29rJiYoay5zdGFja1RyYWNlPXIuRGVm
ZXJyZWQuZ2V0U3RhY2tIb29rKCkpLGEuc2V0VGltZW91dChrKSl9fXJldHVybiByLkRlZmVycmVk
KGZ1bmN0aW9uKGEpe2NbMF1bM10uYWRkKGcoMCxhLHIuaXNGdW5jdGlvbihlKT9lOk0sYS5ub3Rp
ZnlXaXRoKSksY1sxXVszXS5hZGQoZygwLGEsci5pc0Z1bmN0aW9uKGIpP2I6TSkpLGNbMl1bM10u
YWRkKGcoMCxhLHIuaXNGdW5jdGlvbihkKT9kOk4pKX0pLnByb21pc2UoKX0scHJvbWlzZTpmdW5j
dGlvbihhKXtyZXR1cm4gbnVsbCE9YT9yLmV4dGVuZChhLGUpOmV9fSxmPXt9O3JldHVybiByLmVh
Y2goYyxmdW5jdGlvbihhLGIpe3ZhciBnPWJbMl0saD1iWzVdO2VbYlsxXV09Zy5hZGQsaCYmZy5h
ZGQoZnVuY3Rpb24oKXtkPWh9LGNbMy1hXVsyXS5kaXNhYmxlLGNbMF1bMl0ubG9jayksZy5hZGQo
YlszXS5maXJlKSxmW2JbMF1dPWZ1bmN0aW9uKCl7cmV0dXJuIGZbYlswXSsiV2l0aCJdKHRoaXM9
PT1mP3ZvaWQgMDp0aGlzLGFyZ3VtZW50cyksdGhpc30sZltiWzBdKyJXaXRoIl09Zy5maXJlV2l0
aH0pLGUucHJvbWlzZShmKSxiJiZiLmNhbGwoZixmKSxmfSx3aGVuOmZ1bmN0aW9uKGEpe3ZhciBi
PWFyZ3VtZW50cy5sZW5ndGgsYz1iLGQ9QXJyYXkoYyksZT1mLmNhbGwoYXJndW1lbnRzKSxnPXIu
RGVmZXJyZWQoKSxoPWZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbihjKXtkW2FdPXRoaXMsZVth
XT1hcmd1bWVudHMubGVuZ3RoPjE/Zi5jYWxsKGFyZ3VtZW50cyk6YywtLWJ8fGcucmVzb2x2ZVdp
dGgoZCxlKX19O2lmKGI8PTEmJihPKGEsZy5kb25lKGgoYykpLnJlc29sdmUsZy5yZWplY3QpLCJw
ZW5kaW5nIj09PWcuc3RhdGUoKXx8ci5pc0Z1bmN0aW9uKGVbY10mJmVbY10udGhlbikpKXJldHVy
biBnLnRoZW4oKTt3aGlsZShjLS0pTyhlW2NdLGgoYyksZy5yZWplY3QpO3JldHVybiBnLnByb21p
c2UoKX19KTt2YXIgUD0vXihFdmFsfEludGVybmFsfFJhbmdlfFJlZmVyZW5jZXxTeW50YXh8VHlw
ZXxVUkkpRXJyb3IkLztyLkRlZmVycmVkLmV4Y2VwdGlvbkhvb2s9ZnVuY3Rpb24oYixjKXthLmNv
bnNvbGUmJmEuY29uc29sZS53YXJuJiZiJiZQLnRlc3QoYi5uYW1lKSYmYS5jb25zb2xlLndhcm4o
ImpRdWVyeS5EZWZlcnJlZCBleGNlcHRpb246ICIrYi5tZXNzYWdlLGIuc3RhY2ssYyl9LHIucmVh
ZHlFeGNlcHRpb249ZnVuY3Rpb24oYil7YS5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhyb3cgYn0p
fTt2YXIgUT1yLkRlZmVycmVkKCk7ci5mbi5yZWFkeT1mdW5jdGlvbihhKXtyZXR1cm4gUS50aGVu
KGEpWyJjYXRjaCJdKGZ1bmN0aW9uKGEpe3IucmVhZHlFeGNlcHRpb24oYSl9KSx0aGlzfSxyLmV4
dGVuZCh7aXNSZWFkeTohMSxyZWFkeVdhaXQ6MSxob2xkUmVhZHk6ZnVuY3Rpb24oYSl7YT9yLnJl
YWR5V2FpdCsrOnIucmVhZHkoITApfSxyZWFkeTpmdW5jdGlvbihhKXsoYT09PSEwPy0tci5yZWFk
eVdhaXQ6ci5pc1JlYWR5KXx8KHIuaXNSZWFkeT0hMCxhIT09ITAmJi0tci5yZWFkeVdhaXQ+MHx8
US5yZXNvbHZlV2l0aChkLFtyXSkpfX0pLHIucmVhZHkudGhlbj1RLnRoZW47ZnVuY3Rpb24gUigp
e2QucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsUiksCithLnJlbW92ZUV2
ZW50TGlzdGVuZXIoImxvYWQiLFIpLHIucmVhZHkoKX0iY29tcGxldGUiPT09ZC5yZWFkeVN0YXRl
fHwibG9hZGluZyIhPT1kLnJlYWR5U3RhdGUmJiFkLmRvY3VtZW50RWxlbWVudC5kb1Njcm9sbD9h
LnNldFRpbWVvdXQoci5yZWFkeSk6KGQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRl
ZCIsUiksYS5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixSKSk7dmFyIFM9ZnVuY3Rpb24oYSxiLGMs
ZCxlLGYsZyl7dmFyIGg9MCxpPWEubGVuZ3RoLGo9bnVsbD09YztpZigib2JqZWN0Ij09PXIudHlw
ZShjKSl7ZT0hMDtmb3IoaCBpbiBjKVMoYSxiLGgsY1toXSwhMCxmLGcpfWVsc2UgaWYodm9pZCAw
IT09ZCYmKGU9ITAsci5pc0Z1bmN0aW9uKGQpfHwoZz0hMCksaiYmKGc/KGIuY2FsbChhLGQpLGI9
bnVsbCk6KGo9YixiPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gai5jYWxsKHIoYSksYyl9KSksYikp
Zm9yKDtoPGk7aCsrKWIoYVtoXSxjLGc/ZDpkLmNhbGwoYVtoXSxoLGIoYVtoXSxjKSkpO3JldHVy
biBlP2E6aj9iLmNhbGwoYSk6aT9iKGFbMF0sYyk6Zn0sVD1mdW5jdGlvbihhKXtyZXR1cm4gMT09
PWEubm9kZVR5cGV8fDk9PT1hLm5vZGVUeXBlfHwhK2Eubm9kZVR5cGV9O2Z1bmN0aW9uIFUoKXt0
aGlzLmV4cGFuZG89ci5leHBhbmRvK1UudWlkKyt9VS51aWQ9MSxVLnByb3RvdHlwZT17Y2FjaGU6
ZnVuY3Rpb24oYSl7dmFyIGI9YVt0aGlzLmV4cGFuZG9dO3JldHVybiBifHwoYj17fSxUKGEpJiYo
YS5ub2RlVHlwZT9hW3RoaXMuZXhwYW5kb109YjpPYmplY3QuZGVmaW5lUHJvcGVydHkoYSx0aGlz
LmV4cGFuZG8se3ZhbHVlOmIsY29uZmlndXJhYmxlOiEwfSkpKSxifSxzZXQ6ZnVuY3Rpb24oYSxi
LGMpe3ZhciBkLGU9dGhpcy5jYWNoZShhKTtpZigic3RyaW5nIj09dHlwZW9mIGIpZVtyLmNhbWVs
Q2FzZShiKV09YztlbHNlIGZvcihkIGluIGIpZVtyLmNhbWVsQ2FzZShkKV09YltkXTtyZXR1cm4g
ZX0sZ2V0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIHZvaWQgMD09PWI/dGhpcy5jYWNoZShhKTphW3Ro
aXMuZXhwYW5kb10mJmFbdGhpcy5leHBhbmRvXVtyLmNhbWVsQ2FzZShiKV19LGFjY2VzczpmdW5j
dGlvbihhLGIsYyl7cmV0dXJuIHZvaWQgMD09PWJ8fGImJiJzdHJpbmciPT10eXBlb2YgYiYmdm9p
ZCAwPT09Yz90aGlzLmdldChhLGIpOih0aGlzLnNldChhLGIsYyksdm9pZCAwIT09Yz9jOmIpfSxy
ZW1vdmU6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPWFbdGhpcy5leHBhbmRvXTtpZih2b2lkIDAhPT1k
KXtpZih2b2lkIDAhPT1iKXtyLmlzQXJyYXkoYik/Yj1iLm1hcChyLmNhbWVsQ2FzZSk6KGI9ci5j
YW1lbENhc2UoYiksYj1iIGluIGQ/W2JdOmIubWF0Y2goSyl8fFtdKSxjPWIubGVuZ3RoO3doaWxl
KGMtLSlkZWxldGUgZFtiW2NdXX0odm9pZCAwPT09Ynx8ci5pc0VtcHR5T2JqZWN0KGQpKSYmKGEu
bm9kZVR5cGU/YVt0aGlzLmV4cGFuZG9dPXZvaWQgMDpkZWxldGUgYVt0aGlzLmV4cGFuZG9dKX19
LGhhc0RhdGE6ZnVuY3Rpb24oYSl7dmFyIGI9YVt0aGlzLmV4cGFuZG9dO3JldHVybiB2b2lkIDAh
PT1iJiYhci5pc0VtcHR5T2JqZWN0KGIpfX07dmFyIFY9bmV3IFUsVz1uZXcgVSxYPS9eKD86XHtb
XHdcV10qXH18XFtbXHdcV10qXF0pJC8sWT0vW0EtWl0vZztmdW5jdGlvbiBaKGEpe3JldHVybiJ0
cnVlIj09PWF8fCJmYWxzZSIhPT1hJiYoIm51bGwiPT09YT9udWxsOmE9PT0rYSsiIj8rYTpYLnRl
c3QoYSk/SlNPTi5wYXJzZShhKTphKX1mdW5jdGlvbiAkKGEsYixjKXt2YXIgZDtpZih2b2lkIDA9
PT1jJiYxPT09YS5ub2RlVHlwZSlpZihkPSJkYXRhLSIrYi5yZXBsYWNlKFksIi0kJiIpLnRvTG93
ZXJDYXNlKCksYz1hLmdldEF0dHJpYnV0ZShkKSwic3RyaW5nIj09dHlwZW9mIGMpe3RyeXtjPVoo
Yyl9Y2F0Y2goZSl7fVcuc2V0KGEsYixjKX1lbHNlIGM9dm9pZCAwO3JldHVybiBjfXIuZXh0ZW5k
KHtoYXNEYXRhOmZ1bmN0aW9uKGEpe3JldHVybiBXLmhhc0RhdGEoYSl8fFYuaGFzRGF0YShhKX0s
ZGF0YTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIFcuYWNjZXNzKGEsYixjKX0scmVtb3ZlRGF0YTpm
dW5jdGlvbihhLGIpe1cucmVtb3ZlKGEsYil9LF9kYXRhOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4g
Vi5hY2Nlc3MoYSxiLGMpfSxfcmVtb3ZlRGF0YTpmdW5jdGlvbihhLGIpe1YucmVtb3ZlKGEsYil9
fSksci5mbi5leHRlbmQoe2RhdGE6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGUsZj10aGlzWzBdLGc9
ZiYmZi5hdHRyaWJ1dGVzO2lmKHZvaWQgMD09PWEpe2lmKHRoaXMubGVuZ3RoJiYoZT1XLmdldChm
KSwxPT09Zi5ub2RlVHlwZSYmIVYuZ2V0KGYsImhhc0RhdGFBdHRycyIpKSl7Yz1nLmxlbmd0aDt3
aGlsZShjLS0pZ1tjXSYmKGQ9Z1tjXS5uYW1lLDA9PT1kLmluZGV4T2YoImRhdGEtIikmJihkPXIu
Y2FtZWxDYXNlKGQuc2xpY2UoNSkpLCQoZixkLGVbZF0pKSk7Vi5zZXQoZiwiaGFzRGF0YUF0dHJz
IiwhMCl9cmV0dXJuIGV9cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBhP3RoaXMuZWFjaChmdW5jdGlv
bigpe1cuc2V0KHRoaXMsYSl9KTpTKHRoaXMsZnVuY3Rpb24oYil7dmFyIGM7aWYoZiYmdm9pZCAw
PT09Yil7aWYoYz1XLmdldChmLGEpLHZvaWQgMCE9PWMpcmV0dXJuIGM7aWYoYz0kKGYsYSksdm9p
ZCAwIT09YylyZXR1cm4gY31lbHNlIHRoaXMuZWFjaChmdW5jdGlvbigpe1cuc2V0KHRoaXMsYSxi
KX0pfSxudWxsLGIsYXJndW1lbnRzLmxlbmd0aD4xLG51bGwsITApfSxyZW1vdmVEYXRhOmZ1bmN0
aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtXLnJlbW92ZSh0aGlzLGEpfSl9fSks
ci5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9uKGEsYixjKXt2YXIgZDtpZihhKXJldHVybiBiPShifHwi
ZngiKSsicXVldWUiLGQ9Vi5nZXQoYSxiKSxjJiYoIWR8fHIuaXNBcnJheShjKT9kPVYuYWNjZXNz
KGEsYixyLm1ha2VBcnJheShjKSk6ZC5wdXNoKGMpKSxkfHxbXX0sZGVxdWV1ZTpmdW5jdGlvbihh
LGIpe2I9Ynx8ImZ4Ijt2YXIgYz1yLnF1ZXVlKGEsYiksZD1jLmxlbmd0aCxlPWMuc2hpZnQoKSxm
PXIuX3F1ZXVlSG9va3MoYSxiKSxnPWZ1bmN0aW9uKCl7ci5kZXF1ZXVlKGEsYil9OyJpbnByb2dy
ZXNzIj09PWUmJihlPWMuc2hpZnQoKSxkLS0pLGUmJigiZngiPT09YiYmYy51bnNoaWZ0KCJpbnBy
b2dyZXNzIiksZGVsZXRlIGYuc3RvcCxlLmNhbGwoYSxnLGYpKSwhZCYmZiYmZi5lbXB0eS5maXJl
KCl9LF9xdWV1ZUhvb2tzOmZ1bmN0aW9uKGEsYil7dmFyIGM9YisicXVldWVIb29rcyI7cmV0dXJu
IFYuZ2V0KGEsYyl8fFYuYWNjZXNzKGEsYyx7ZW1wdHk6ci5DYWxsYmFja3MoIm9uY2UgbWVtb3J5
IikuYWRkKGZ1bmN0aW9uKCl7Vi5yZW1vdmUoYSxbYisicXVldWUiLGNdKX0pfSl9fSksci5mbi5l
eHRlbmQoe3F1ZXVlOmZ1bmN0aW9uKGEsYil7dmFyIGM9MjtyZXR1cm4ic3RyaW5nIiE9dHlwZW9m
IGEmJihiPWEsYT0iZngiLGMtLSksYXJndW1lbnRzLmxlbmd0aDxjP3IucXVldWUodGhpc1swXSxh
KTp2b2lkIDA9PT1iP3RoaXM6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGM9ci5xdWV1ZSh0aGlz
LGEsYik7ci5fcXVldWVIb29rcyh0aGlzLGEpLCJmeCI9PT1hJiYiaW5wcm9ncmVzcyIhPT1jWzBd
JiZyLmRlcXVldWUodGhpcyxhKX0pfSxkZXF1ZXVlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVh
Y2goZnVuY3Rpb24oKXtyLmRlcXVldWUodGhpcyxhKX0pfSxjbGVhclF1ZXVlOmZ1bmN0aW9uKGEp
e3JldHVybiB0aGlzLnF1ZXVlKGF8fCJmeCIsW10pfSxwcm9taXNlOmZ1bmN0aW9uKGEsYil7dmFy
IGMsZD0xLGU9ci5EZWZlcnJlZCgpLGY9dGhpcyxnPXRoaXMubGVuZ3RoLGg9ZnVuY3Rpb24oKXst
LWR8fGUucmVzb2x2ZVdpdGgoZixbZl0pfTsic3RyaW5nIiE9dHlwZW9mIGEmJihiPWEsYT12b2lk
IDApLGE9YXx8ImZ4Ijt3aGlsZShnLS0pYz1WLmdldChmW2ddLGErInF1ZXVlSG9va3MiKSxjJiZj
LmVtcHR5JiYoZCsrLGMuZW1wdHkuYWRkKGgpKTtyZXR1cm4gaCgpLGUucHJvbWlzZShiKX19KTt2
YXIgXz0vWystXT8oPzpcZCpcLnwpXGQrKD86W2VFXVsrLV0/XGQrfCkvLnNvdXJjZSxhYT1uZXcg
UmVnRXhwKCJeKD86KFsrLV0pPXwpKCIrXysiKShbYS16JV0qKSQiLCJpIiksYmE9WyJUb3AiLCJS
aWdodCIsIkJvdHRvbSIsIkxlZnQiXSxjYT1mdW5jdGlvbihhLGIpe3JldHVybiBhPWJ8fGEsIm5v
bmUiPT09YS5zdHlsZS5kaXNwbGF5fHwiIj09PWEuc3R5bGUuZGlzcGxheSYmci5jb250YWlucyhh
Lm93bmVyRG9jdW1lbnQsYSkmJiJub25lIj09PXIuY3NzKGEsImRpc3BsYXkiKX0sZGE9ZnVuY3Rp
b24oYSxiLGMsZCl7dmFyIGUsZixnPXt9O2ZvcihmIGluIGIpZ1tmXT1hLnN0eWxlW2ZdLGEuc3R5
bGVbZl09YltmXTtlPWMuYXBwbHkoYSxkfHxbXSk7Zm9yKGYgaW4gYilhLnN0eWxlW2ZdPWdbZl07
cmV0dXJuIGV9O2Z1bmN0aW9uIGVhKGEsYixjLGQpe3ZhciBlLGY9MSxnPTIwLGg9ZD9mdW5jdGlv
bigpe3JldHVybiBkLmN1cigpfTpmdW5jdGlvbigpe3JldHVybiByLmNzcyhhLGIsIiIpfSxpPWgo
KSxqPWMmJmNbM118fChyLmNzc051bWJlcltiXT8iIjoicHgiKSxrPShyLmNzc051bWJlcltiXXx8
InB4IiE9PWomJitpKSYmYWEuZXhlYyhyLmNzcyhhLGIpKTtpZihrJiZrWzNdIT09ail7aj1qfHxr
WzNdLGM9Y3x8W10saz0raXx8MTtkbyBmPWZ8fCIuNSIsay89ZixyLnN0eWxlKGEsYixrK2opO3do
aWxlKGYhPT0oZj1oKCkvaSkmJjEhPT1mJiYtLWcpfXJldHVybiBjJiYoaz0ra3x8K2l8fDAsZT1j
WzFdP2srKGNbMV0rMSkqY1syXTorY1syXSxkJiYoZC51bml0PWosZC5zdGFydD1rLGQuZW5kPWUp
KSxlfXZhciBmYT17fTtmdW5jdGlvbiBnYShhKXt2YXIgYixjPWEub3duZXJEb2N1bWVudCxkPWEu
bm9kZU5hbWUsZT1mYVtkXTtyZXR1cm4gZT9lOihiPWMuYm9keS5hcHBlbmRDaGlsZChjLmNyZWF0
ZUVsZW1lbnQoZCkpLGU9ci5jc3MoYiwiZGlzcGxheSIpLGIucGFyZW50Tm9kZS5yZW1vdmVDaGls
ZChiKSwibm9uZSI9PT1lJiYoZT0iYmxvY2siKSxmYVtkXT1lLGUpfWZ1bmN0aW9uIGhhKGEsYil7
Zm9yKHZhciBjLGQsZT1bXSxmPTAsZz1hLmxlbmd0aDtmPGc7ZisrKWQ9YVtmXSxkLnN0eWxlJiYo
Yz1kLnN0eWxlLmRpc3BsYXksYj8oIm5vbmUiPT09YyYmKGVbZl09Vi5nZXQoZCwiZGlzcGxheSIp
fHxudWxsLGVbZl18fChkLnN0eWxlLmRpc3BsYXk9IiIpKSwiIj09PWQuc3R5bGUuZGlzcGxheSYm
Y2EoZCkmJihlW2ZdPWdhKGQpKSk6Im5vbmUiIT09YyYmKGVbZl09Im5vbmUiLFYuc2V0KGQsImRp
c3BsYXkiLGMpKSk7Zm9yKGY9MDtmPGc7ZisrKW51bGwhPWVbZl0mJihhW2ZdLnN0eWxlLmRpc3Bs
YXk9ZVtmXSk7cmV0dXJuIGF9ci5mbi5leHRlbmQoe3Nob3c6ZnVuY3Rpb24oKXtyZXR1cm4gaGEo
dGhpcywhMCl9LGhpZGU6ZnVuY3Rpb24oKXtyZXR1cm4gaGEodGhpcyl9LHRvZ2dsZTpmdW5jdGlv
bihhKXtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiBhP2E/dGhpcy5zaG93KCk6dGhpcy5oaWRlKCk6
dGhpcy5lYWNoKGZ1bmN0aW9uKCl7Y2EodGhpcyk/cih0aGlzKS5zaG93KCk6cih0aGlzKS5oaWRl
KCl9KX19KTt2YXIgaWE9L14oPzpjaGVja2JveHxyYWRpbykkL2ksamE9LzwoW2Etel1bXlwvXDA+
XHgyMFx0XHJcblxmXSspL2ksa2E9L14kfFwvKD86amF2YXxlY21hKXNjcmlwdC9pLGxhPXtvcHRp
b246WzEsIjxzZWxlY3QgbXVsdGlwbGU9J211bHRpcGxlJz4iLCI8L3NlbGVjdD4iXSx0aGVhZDpb
MSwiPHRhYmxlPiIsIjwvdGFibGU+Il0sY29sOlsyLCI8dGFibGU+PGNvbGdyb3VwPiIsIjwvY29s
Z3JvdXA+PC90YWJsZT4iXSx0cjpbMiwiPHRhYmxlPjx0Ym9keT4iLCI8L3Rib2R5PjwvdGFibGU+
Il0sdGQ6WzMsIjx0YWJsZT48dGJvZHk+PHRyPiIsIjwvdHI+PC90Ym9keT48L3RhYmxlPiJdLF9k
ZWZhdWx0OlswLCIiLCIiXX07bGEub3B0Z3JvdXA9bGEub3B0aW9uLGxhLnRib2R5PWxhLnRmb290
PWxhLmNvbGdyb3VwPWxhLmNhcHRpb249bGEudGhlYWQsbGEudGg9bGEudGQ7ZnVuY3Rpb24gbWEo
YSxiKXt2YXIgYztyZXR1cm4gYz0idW5kZWZpbmVkIiE9dHlwZW9mIGEuZ2V0RWxlbWVudHNCeVRh
Z05hbWU/YS5nZXRFbGVtZW50c0J5VGFnTmFtZShifHwiKiIpOiJ1bmRlZmluZWQiIT10eXBlb2Yg
YS5xdWVyeVNlbGVjdG9yQWxsP2EucXVlcnlTZWxlY3RvckFsbChifHwiKiIpOltdLHZvaWQgMD09
PWJ8fGImJnIubm9kZU5hbWUoYSxiKT9yLm1lcmdlKFthXSxjKTpjfWZ1bmN0aW9uIG5hKGEsYil7
Zm9yKHZhciBjPTAsZD1hLmxlbmd0aDtjPGQ7YysrKVYuc2V0KGFbY10sImdsb2JhbEV2YWwiLCFi
fHxWLmdldChiW2NdLCJnbG9iYWxFdmFsIikpfXZhciBvYT0vPHwmIz9cdys7LztmdW5jdGlvbiBw
YShhLGIsYyxkLGUpe2Zvcih2YXIgZixnLGgsaSxqLGssbD1iLmNyZWF0ZURvY3VtZW50RnJhZ21l
bnQoKSxtPVtdLG49MCxvPWEubGVuZ3RoO248bztuKyspaWYoZj1hW25dLGZ8fDA9PT1mKWlmKCJv
YmplY3QiPT09ci50eXBlKGYpKXIubWVyZ2UobSxmLm5vZGVUeXBlP1tmXTpmKTtlbHNlIGlmKG9h
LnRlc3QoZikpe2c9Z3x8bC5hcHBlbmRDaGlsZChiLmNyZWF0ZUVsZW1lbnQoImRpdiIpKSxoPShq
YS5leGVjKGYpfHxbIiIsIiJdKVsxXS50b0xvd2VyQ2FzZSgpLGk9bGFbaF18fGxhLl9kZWZhdWx0
LGcuaW5uZXJIVE1MPWlbMV0rci5odG1sUHJlZmlsdGVyKGYpK2lbMl0saz1pWzBdO3doaWxlKGst
LSlnPWcubGFzdENoaWxkO3IubWVyZ2UobSxnLmNoaWxkTm9kZXMpLGc9bC5maXJzdENoaWxkLGcu
dGV4dENvbnRlbnQ9IiJ9ZWxzZSBtLnB1c2goYi5jcmVhdGVUZXh0Tm9kZShmKSk7bC50ZXh0Q29u
dGVudD0iIixuPTA7d2hpbGUoZj1tW24rK10paWYoZCYmci5pbkFycmF5KGYsZCk+LTEpZSYmZS5w
dXNoKGYpO2Vsc2UgaWYoaj1yLmNvbnRhaW5zKGYub3duZXJEb2N1bWVudCxmKSxnPW1hKGwuYXBw
ZW5kQ2hpbGQoZiksInNjcmlwdCIpLGomJm5hKGcpLGMpe2s9MDt3aGlsZShmPWdbaysrXSlrYS50
ZXN0KGYudHlwZXx8IiIpJiZjLnB1c2goZil9cmV0dXJuIGx9IWZ1bmN0aW9uKCl7dmFyIGE9ZC5j
cmVhdGVEb2N1bWVudEZyYWdtZW50KCksYj1hLmFwcGVuZENoaWxkKGQuY3JlYXRlRWxlbWVudCgi
ZGl2IikpLGM9ZC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO2Muc2V0QXR0cmlidXRlKCJ0eXBlIiwi
cmFkaW8iKSxjLnNldEF0dHJpYnV0ZSgiY2hlY2tlZCIsImNoZWNrZWQiKSxjLnNldEF0dHJpYnV0
ZSgibmFtZSIsInQiKSxiLmFwcGVuZENoaWxkKGMpLG8uY2hlY2tDbG9uZT1iLmNsb25lTm9kZSgh
MCkuY2xvbmVOb2RlKCEwKS5sYXN0Q2hpbGQuY2hlY2tlZCxiLmlubmVySFRNTD0iPHRleHRhcmVh
Png8L3RleHRhcmVhPiIsby5ub0Nsb25lQ2hlY2tlZD0hIWIuY2xvbmVOb2RlKCEwKS5sYXN0Q2hp
bGQuZGVmYXVsdFZhbHVlfSgpO3ZhciBxYT1kLmRvY3VtZW50RWxlbWVudCxyYT0vXmtleS8sc2E9
L14oPzptb3VzZXxwb2ludGVyfGNvbnRleHRtZW51fGRyYWd8ZHJvcCl8Y2xpY2svLHRhPS9eKFte
Ll0qKSg/OlwuKC4rKXwpLztmdW5jdGlvbiB1YSgpe3JldHVybiEwfWZ1bmN0aW9uIHZhKCl7cmV0
dXJuITF9ZnVuY3Rpb24gd2EoKXt0cnl7cmV0dXJuIGQuYWN0aXZlRWxlbWVudH1jYXRjaChhKXt9
fWZ1bmN0aW9uIHhhKGEsYixjLGQsZSxmKXt2YXIgZyxoO2lmKCJvYmplY3QiPT10eXBlb2YgYil7
InN0cmluZyIhPXR5cGVvZiBjJiYoZD1kfHxjLGM9dm9pZCAwKTtmb3IoaCBpbiBiKXhhKGEsaCxj
LGQsYltoXSxmKTtyZXR1cm4gYX1pZihudWxsPT1kJiZudWxsPT1lPyhlPWMsZD1jPXZvaWQgMCk6
bnVsbD09ZSYmKCJzdHJpbmciPT10eXBlb2YgYz8oZT1kLGQ9dm9pZCAwKTooZT1kLGQ9YyxjPXZv
aWQgMCkpLGU9PT0hMSllPXZhO2Vsc2UgaWYoIWUpcmV0dXJuIGE7cmV0dXJuIDE9PT1mJiYoZz1l
LGU9ZnVuY3Rpb24oYSl7cmV0dXJuIHIoKS5vZmYoYSksZy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9
LGUuZ3VpZD1nLmd1aWR8fChnLmd1aWQ9ci5ndWlkKyspKSxhLmVhY2goZnVuY3Rpb24oKXtyLmV2
ZW50LmFkZCh0aGlzLGIsZSxkLGMpfSl9ci5ldmVudD17Z2xvYmFsOnt9LGFkZDpmdW5jdGlvbihh
LGIsYyxkLGUpe3ZhciBmLGcsaCxpLGosayxsLG0sbixvLHAscT1WLmdldChhKTtpZihxKXtjLmhh
bmRsZXImJihmPWMsYz1mLmhhbmRsZXIsZT1mLnNlbGVjdG9yKSxlJiZyLmZpbmQubWF0Y2hlc1Nl
bGVjdG9yKHFhLGUpLGMuZ3VpZHx8KGMuZ3VpZD1yLmd1aWQrKyksKGk9cS5ldmVudHMpfHwoaT1x
LmV2ZW50cz17fSksKGc9cS5oYW5kbGUpfHwoZz1xLmhhbmRsZT1mdW5jdGlvbihiKXtyZXR1cm4i
dW5kZWZpbmVkIiE9dHlwZW9mIHImJnIuZXZlbnQudHJpZ2dlcmVkIT09Yi50eXBlP3IuZXZlbnQu
ZGlzcGF0Y2guYXBwbHkoYSxhcmd1bWVudHMpOnZvaWQgMH0pLGI9KGJ8fCIiKS5tYXRjaChLKXx8
WyIiXSxqPWIubGVuZ3RoO3doaWxlKGotLSloPXRhLmV4ZWMoYltqXSl8fFtdLG49cD1oWzFdLG89
KGhbMl18fCIiKS5zcGxpdCgiLiIpLnNvcnQoKSxuJiYobD1yLmV2ZW50LnNwZWNpYWxbbl18fHt9
LG49KGU/bC5kZWxlZ2F0ZVR5cGU6bC5iaW5kVHlwZSl8fG4sbD1yLmV2ZW50LnNwZWNpYWxbbl18
fHt9LGs9ci5leHRlbmQoe3R5cGU6bixvcmlnVHlwZTpwLGRhdGE6ZCxoYW5kbGVyOmMsZ3VpZDpj
Lmd1aWQsc2VsZWN0b3I6ZSxuZWVkc0NvbnRleHQ6ZSYmci5leHByLm1hdGNoLm5lZWRzQ29udGV4
dC50ZXN0KGUpLG5hbWVzcGFjZTpvLmpvaW4oIi4iKX0sZiksKG09aVtuXSl8fChtPWlbbl09W10s
bS5kZWxlZ2F0ZUNvdW50PTAsbC5zZXR1cCYmbC5zZXR1cC5jYWxsKGEsZCxvLGcpIT09ITF8fGEu
YWRkRXZlbnRMaXN0ZW5lciYmYS5hZGRFdmVudExpc3RlbmVyKG4sZykpLGwuYWRkJiYobC5hZGQu
Y2FsbChhLGspLGsuaGFuZGxlci5ndWlkfHwoay5oYW5kbGVyLmd1aWQ9Yy5ndWlkKSksZT9tLnNw
bGljZShtLmRlbGVnYXRlQ291bnQrKywwLGspOm0ucHVzaChrKSxyLmV2ZW50Lmdsb2JhbFtuXT0h
MCl9fSxyZW1vdmU6ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZixnLGgsaSxqLGssbCxtLG4sbyxw
LHE9Vi5oYXNEYXRhKGEpJiZWLmdldChhKTtpZihxJiYoaT1xLmV2ZW50cykpe2I9KGJ8fCIiKS5t
YXRjaChLKXx8WyIiXSxqPWIubGVuZ3RoO3doaWxlKGotLSlpZihoPXRhLmV4ZWMoYltqXSl8fFtd
LG49cD1oWzFdLG89KGhbMl18fCIiKS5zcGxpdCgiLiIpLnNvcnQoKSxuKXtsPXIuZXZlbnQuc3Bl
Y2lhbFtuXXx8e30sbj0oZD9sLmRlbGVnYXRlVHlwZTpsLmJpbmRUeXBlKXx8bixtPWlbbl18fFtd
LGg9aFsyXSYmbmV3IFJlZ0V4cCgiKF58XFwuKSIrby5qb2luKCJcXC4oPzouKlxcLnwpIikrIihc
XC58JCkiKSxnPWY9bS5sZW5ndGg7d2hpbGUoZi0tKWs9bVtmXSwhZSYmcCE9PWsub3JpZ1R5cGV8
fGMmJmMuZ3VpZCE9PWsuZ3VpZHx8aCYmIWgudGVzdChrLm5hbWVzcGFjZSl8fGQmJmQhPT1rLnNl
bGVjdG9yJiYoIioqIiE9PWR8fCFrLnNlbGVjdG9yKXx8KG0uc3BsaWNlKGYsMSksay5zZWxlY3Rv
ciYmbS5kZWxlZ2F0ZUNvdW50LS0sbC5yZW1vdmUmJmwucmVtb3ZlLmNhbGwoYSxrKSk7ZyYmIW0u
bGVuZ3RoJiYobC50ZWFyZG93biYmbC50ZWFyZG93bi5jYWxsKGEsbyxxLmhhbmRsZSkhPT0hMXx8
ci5yZW1vdmVFdmVudChhLG4scS5oYW5kbGUpLGRlbGV0ZSBpW25dKX1lbHNlIGZvcihuIGluIGkp
ci5ldmVudC5yZW1vdmUoYSxuK2Jbal0sYyxkLCEwKTtyLmlzRW1wdHlPYmplY3QoaSkmJlYucmVt
b3ZlKGEsImhhbmRsZSBldmVudHMiKX19LGRpc3BhdGNoOmZ1bmN0aW9uKGEpe3ZhciBiPXIuZXZl
bnQuZml4KGEpLGMsZCxlLGYsZyxoLGk9bmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgpLGo9KFYu
Z2V0KHRoaXMsImV2ZW50cyIpfHx7fSlbYi50eXBlXXx8W10saz1yLmV2ZW50LnNwZWNpYWxbYi50
eXBlXXx8e307Zm9yKGlbMF09YixjPTE7Yzxhcmd1bWVudHMubGVuZ3RoO2MrKylpW2NdPWFyZ3Vt
ZW50c1tjXTtpZihiLmRlbGVnYXRlVGFyZ2V0PXRoaXMsIWsucHJlRGlzcGF0Y2h8fGsucHJlRGlz
cGF0Y2guY2FsbCh0aGlzLGIpIT09ITEpe2g9ci5ldmVudC5oYW5kbGVycy5jYWxsKHRoaXMsYixq
KSxjPTA7d2hpbGUoKGY9aFtjKytdKSYmIWIuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSl7Yi5jdXJy
ZW50VGFyZ2V0PWYuZWxlbSxkPTA7d2hpbGUoKGc9Zi5oYW5kbGVyc1tkKytdKSYmIWIuaXNJbW1l
ZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQoKSliLnJuYW1lc3BhY2UmJiFiLnJuYW1lc3BhY2UudGVz
dChnLm5hbWVzcGFjZSl8fChiLmhhbmRsZU9iaj1nLGIuZGF0YT1nLmRhdGEsZT0oKHIuZXZlbnQu
c3BlY2lhbFtnLm9yaWdUeXBlXXx8e30pLmhhbmRsZXx8Zy5oYW5kbGVyKS5hcHBseShmLmVsZW0s
aSksdm9pZCAwIT09ZSYmKGIucmVzdWx0PWUpPT09ITEmJihiLnByZXZlbnREZWZhdWx0KCksYi5z
dG9wUHJvcGFnYXRpb24oKSkpfXJldHVybiBrLnBvc3REaXNwYXRjaCYmay5wb3N0RGlzcGF0Y2gu
Y2FsbCh0aGlzLGIpLGIucmVzdWx0fX0saGFuZGxlcnM6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGUs
ZixnLGg9W10saT1iLmRlbGVnYXRlQ291bnQsaj1hLnRhcmdldDtpZihpJiZqLm5vZGVUeXBlJiYh
KCJjbGljayI9PT1hLnR5cGUmJmEuYnV0dG9uPj0xKSlmb3IoO2ohPT10aGlzO2o9ai5wYXJlbnRO
b2RlfHx0aGlzKWlmKDE9PT1qLm5vZGVUeXBlJiYoImNsaWNrIiE9PWEudHlwZXx8ai5kaXNhYmxl
ZCE9PSEwKSl7Zm9yKGY9W10sZz17fSxjPTA7YzxpO2MrKylkPWJbY10sZT1kLnNlbGVjdG9yKyIg
Iix2b2lkIDA9PT1nW2VdJiYoZ1tlXT1kLm5lZWRzQ29udGV4dD9yKGUsdGhpcykuaW5kZXgoaik+
LTE6ci5maW5kKGUsdGhpcyxudWxsLFtqXSkubGVuZ3RoKSxnW2VdJiZmLnB1c2goZCk7Zi5sZW5n
dGgmJmgucHVzaCh7ZWxlbTpqLGhhbmRsZXJzOmZ9KX1yZXR1cm4gaj10aGlzLGk8Yi5sZW5ndGgm
JmgucHVzaCh7ZWxlbTpqLGhhbmRsZXJzOmIuc2xpY2UoaSl9KSxofSxhZGRQcm9wOmZ1bmN0aW9u
KGEsYil7T2JqZWN0LmRlZmluZVByb3BlcnR5KHIuRXZlbnQucHJvdG90eXBlLGEse2VudW1lcmFi
bGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDpyLmlzRnVuY3Rpb24oYik/ZnVuY3Rpb24oKXtpZih0
aGlzLm9yaWdpbmFsRXZlbnQpcmV0dXJuIGIodGhpcy5vcmlnaW5hbEV2ZW50KX06ZnVuY3Rpb24o
KXtpZih0aGlzLm9yaWdpbmFsRXZlbnQpcmV0dXJuIHRoaXMub3JpZ2luYWxFdmVudFthXX0sc2V0
OmZ1bmN0aW9uKGIpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLGEse2VudW1lcmFibGU6ITAs
Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmJ9KX19KX0sZml4OmZ1bmN0aW9uKGEp
e3JldHVybiBhW3IuZXhwYW5kb10/YTpuZXcgci5FdmVudChhKX0sc3BlY2lhbDp7bG9hZDp7bm9C
dWJibGU6ITB9LGZvY3VzOnt0cmlnZ2VyOmZ1bmN0aW9uKCl7aWYodGhpcyE9PXdhKCkmJnRoaXMu
Zm9jdXMpcmV0dXJuIHRoaXMuZm9jdXMoKSwhMX0sZGVsZWdhdGVUeXBlOiJmb2N1c2luIn0sYmx1
cjp7dHJpZ2dlcjpmdW5jdGlvbigpe2lmKHRoaXM9PT13YSgpJiZ0aGlzLmJsdXIpcmV0dXJuIHRo
aXMuYmx1cigpLCExfSxkZWxlZ2F0ZVR5cGU6ImZvY3Vzb3V0In0sY2xpY2s6e3RyaWdnZXI6ZnVu
Y3Rpb24oKXtpZigiY2hlY2tib3giPT09dGhpcy50eXBlJiZ0aGlzLmNsaWNrJiZyLm5vZGVOYW1l
KHRoaXMsImlucHV0IikpcmV0dXJuIHRoaXMuY2xpY2soKSwhMX0sX2RlZmF1bHQ6ZnVuY3Rpb24o
YSl7cmV0dXJuIHIubm9kZU5hbWUoYS50YXJnZXQsImEiKX19LGJlZm9yZXVubG9hZDp7cG9zdERp
c3BhdGNoOmZ1bmN0aW9uKGEpe3ZvaWQgMCE9PWEucmVzdWx0JiZhLm9yaWdpbmFsRXZlbnQmJihh
Lm9yaWdpbmFsRXZlbnQucmV0dXJuVmFsdWU9YS5yZXN1bHQpfX19fSxyLnJlbW92ZUV2ZW50PWZ1
bmN0aW9uKGEsYixjKXthLnJlbW92ZUV2ZW50TGlzdGVuZXImJmEucmVtb3ZlRXZlbnRMaXN0ZW5l
cihiLGMpfSxyLkV2ZW50PWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiByLkV2
ZW50PyhhJiZhLnR5cGU/KHRoaXMub3JpZ2luYWxFdmVudD1hLHRoaXMudHlwZT1hLnR5cGUsdGhp
cy5pc0RlZmF1bHRQcmV2ZW50ZWQ9YS5kZWZhdWx0UHJldmVudGVkfHx2b2lkIDA9PT1hLmRlZmF1
bHRQcmV2ZW50ZWQmJmEucmV0dXJuVmFsdWU9PT0hMT91YTp2YSx0aGlzLnRhcmdldD1hLnRhcmdl
dCYmMz09PWEudGFyZ2V0Lm5vZGVUeXBlP2EudGFyZ2V0LnBhcmVudE5vZGU6YS50YXJnZXQsdGhp
cy5jdXJyZW50VGFyZ2V0PWEuY3VycmVudFRhcmdldCx0aGlzLnJlbGF0ZWRUYXJnZXQ9YS5yZWxh
dGVkVGFyZ2V0KTp0aGlzLnR5cGU9YSxiJiZyLmV4dGVuZCh0aGlzLGIpLHRoaXMudGltZVN0YW1w
PWEmJmEudGltZVN0YW1wfHxyLm5vdygpLHZvaWQodGhpc1tyLmV4cGFuZG9dPSEwKSk6bmV3IHIu
RXZlbnQoYSxiKX0sci5FdmVudC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOnIuRXZlbnQsaXNEZWZh
dWx0UHJldmVudGVkOnZhLGlzUHJvcGFnYXRpb25TdG9wcGVkOnZhLGlzSW1tZWRpYXRlUHJvcGFn
YXRpb25TdG9wcGVkOnZhLGlzU2ltdWxhdGVkOiExLHByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7
dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPXVhLGEmJiF0
aGlzLmlzU2ltdWxhdGVkJiZhLnByZXZlbnREZWZhdWx0KCl9LHN0b3BQcm9wYWdhdGlvbjpmdW5j
dGlvbigpe3ZhciBhPXRoaXMub3JpZ2luYWxFdmVudDt0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVk
PXVhLGEmJiF0aGlzLmlzU2ltdWxhdGVkJiZhLnN0b3BQcm9wYWdhdGlvbigpfSxzdG9wSW1tZWRp
YXRlUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9yaWdpbmFsRXZlbnQ7dGhpcy5p
c0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZD11YSxhJiYhdGhpcy5pc1NpbXVsYXRlZCYmYS5z
dG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSx0aGlzLnN0b3BQcm9wYWdhdGlvbigpfX0sci5lYWNo
KHthbHRLZXk6ITAsYnViYmxlczohMCxjYW5jZWxhYmxlOiEwLGNoYW5nZWRUb3VjaGVzOiEwLGN0
cmxLZXk6ITAsZGV0YWlsOiEwLGV2ZW50UGhhc2U6ITAsbWV0YUtleTohMCxwYWdlWDohMCxwYWdl
WTohMCxzaGlmdEtleTohMCx2aWV3OiEwLCJjaGFyIjohMCxjaGFyQ29kZTohMCxrZXk6ITAsa2V5
Q29kZTohMCxidXR0b246ITAsYnV0dG9uczohMCxjbGllbnRYOiEwLGNsaWVudFk6ITAsb2Zmc2V0
WDohMCxvZmZzZXRZOiEwLHBvaW50ZXJJZDohMCxwb2ludGVyVHlwZTohMCxzY3JlZW5YOiEwLHNj
cmVlblk6ITAsdGFyZ2V0VG91Y2hlczohMCx0b0VsZW1lbnQ6ITAsdG91Y2hlczohMCx3aGljaDpm
dW5jdGlvbihhKXt2YXIgYj1hLmJ1dHRvbjtyZXR1cm4gbnVsbD09YS53aGljaCYmcmEudGVzdChh
LnR5cGUpP251bGwhPWEuY2hhckNvZGU/YS5jaGFyQ29kZTphLmtleUNvZGU6IWEud2hpY2gmJnZv
aWQgMCE9PWImJnNhLnRlc3QoYS50eXBlKT8xJmI/MToyJmI/Mzo0JmI/MjowOmEud2hpY2h9fSxy
LmV2ZW50LmFkZFByb3ApLHIuZWFjaCh7bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZl
OiJtb3VzZW91dCIscG9pbnRlcmVudGVyOiJwb2ludGVyb3ZlciIscG9pbnRlcmxlYXZlOiJwb2lu
dGVyb3V0In0sZnVuY3Rpb24oYSxiKXtyLmV2ZW50LnNwZWNpYWxbYV09e2RlbGVnYXRlVHlwZTpi
LGJpbmRUeXBlOmIsaGFuZGxlOmZ1bmN0aW9uKGEpe3ZhciBjLGQ9dGhpcyxlPWEucmVsYXRlZFRh
cmdldCxmPWEuaGFuZGxlT2JqO3JldHVybiBlJiYoZT09PWR8fHIuY29udGFpbnMoZCxlKSl8fChh
LnR5cGU9Zi5vcmlnVHlwZSxjPWYuaGFuZGxlci5hcHBseSh0aGlzLGFyZ3VtZW50cyksYS50eXBl
PWIpLGN9fX0pLHIuZm4uZXh0ZW5kKHtvbjpmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4geGEodGhp
cyxhLGIsYyxkKX0sb25lOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB4YSh0aGlzLGEsYixjLGQs
MSl9LG9mZjpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZTtpZihhJiZhLnByZXZlbnREZWZhdWx0JiZh
LmhhbmRsZU9iailyZXR1cm4gZD1hLmhhbmRsZU9iaixyKGEuZGVsZWdhdGVUYXJnZXQpLm9mZihk
Lm5hbWVzcGFjZT9kLm9yaWdUeXBlKyIuIitkLm5hbWVzcGFjZTpkLm9yaWdUeXBlLGQuc2VsZWN0
b3IsZC5oYW5kbGVyKSx0aGlzO2lmKCJvYmplY3QiPT10eXBlb2YgYSl7Zm9yKGUgaW4gYSl0aGlz
Lm9mZihlLGIsYVtlXSk7cmV0dXJuIHRoaXN9cmV0dXJuIGIhPT0hMSYmImZ1bmN0aW9uIiE9dHlw
ZW9mIGJ8fChjPWIsYj12b2lkIDApLGM9PT0hMSYmKGM9dmEpLHRoaXMuZWFjaChmdW5jdGlvbigp
e3IuZXZlbnQucmVtb3ZlKHRoaXMsYSxjLGIpfSl9fSk7dmFyIHlhPS88KD8hYXJlYXxicnxjb2x8
ZW1iZWR8aHJ8aW1nfGlucHV0fGxpbmt8bWV0YXxwYXJhbSkoKFthLXpdW15cL1wwPlx4MjBcdFxy
XG5cZl0qKVtePl0qKVwvPi9naSx6YT0vPHNjcmlwdHw8c3R5bGV8PGxpbmsvaSxBYT0vY2hlY2tl
ZFxzKig/OltePV18PVxzKi5jaGVja2VkLikvaSxCYT0vXnRydWVcLyguKikvLENhPS9eXHMqPCEo
PzpcW0NEQVRBXFt8LS0pfCg/OlxdXF18LS0pPlxzKiQvZztmdW5jdGlvbiBEYShhLGIpe3JldHVy
biByLm5vZGVOYW1lKGEsInRhYmxlIikmJnIubm9kZU5hbWUoMTEhPT1iLm5vZGVUeXBlP2I6Yi5m
aXJzdENoaWxkLCJ0ciIpP2EuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRib2R5IilbMF18fGE6YX1m
dW5jdGlvbiBFYShhKXtyZXR1cm4gYS50eXBlPShudWxsIT09YS5nZXRBdHRyaWJ1dGUoInR5cGUi
KSkrIi8iK2EudHlwZSxhfWZ1bmN0aW9uIEZhKGEpe3ZhciBiPUJhLmV4ZWMoYS50eXBlKTtyZXR1
cm4gYj9hLnR5cGU9YlsxXTphLnJlbW92ZUF0dHJpYnV0ZSgidHlwZSIpLGF9ZnVuY3Rpb24gR2Eo
YSxiKXt2YXIgYyxkLGUsZixnLGgsaSxqO2lmKDE9PT1iLm5vZGVUeXBlKXtpZihWLmhhc0RhdGEo
YSkmJihmPVYuYWNjZXNzKGEpLGc9Vi5zZXQoYixmKSxqPWYuZXZlbnRzKSl7ZGVsZXRlIGcuaGFu
ZGxlLGcuZXZlbnRzPXt9O2ZvcihlIGluIGopZm9yKGM9MCxkPWpbZV0ubGVuZ3RoO2M8ZDtjKysp
ci5ldmVudC5hZGQoYixlLGpbZV1bY10pfVcuaGFzRGF0YShhKSYmKGg9Vy5hY2Nlc3MoYSksaT1y
LmV4dGVuZCh7fSxoKSxXLnNldChiLGkpKX19ZnVuY3Rpb24gSGEoYSxiKXt2YXIgYz1iLm5vZGVO
YW1lLnRvTG93ZXJDYXNlKCk7ImlucHV0Ij09PWMmJmlhLnRlc3QoYS50eXBlKT9iLmNoZWNrZWQ9
YS5jaGVja2VkOiJpbnB1dCIhPT1jJiYidGV4dGFyZWEiIT09Y3x8KGIuZGVmYXVsdFZhbHVlPWEu
ZGVmYXVsdFZhbHVlKX1mdW5jdGlvbiBJYShhLGIsYyxkKXtiPWcuYXBwbHkoW10sYik7dmFyIGUs
ZixoLGksaixrLGw9MCxtPWEubGVuZ3RoLG49bS0xLHE9YlswXSxzPXIuaXNGdW5jdGlvbihxKTtp
ZihzfHxtPjEmJiJzdHJpbmciPT10eXBlb2YgcSYmIW8uY2hlY2tDbG9uZSYmQWEudGVzdChxKSly
ZXR1cm4gYS5lYWNoKGZ1bmN0aW9uKGUpe3ZhciBmPWEuZXEoZSk7cyYmKGJbMF09cS5jYWxsKHRo
aXMsZSxmLmh0bWwoKSkpLElhKGYsYixjLGQpfSk7aWYobSYmKGU9cGEoYixhWzBdLm93bmVyRG9j
dW1lbnQsITEsYSxkKSxmPWUuZmlyc3RDaGlsZCwxPT09ZS5jaGlsZE5vZGVzLmxlbmd0aCYmKGU9
ZiksZnx8ZCkpe2ZvcihoPXIubWFwKG1hKGUsInNjcmlwdCIpLEVhKSxpPWgubGVuZ3RoO2w8bTts
Kyspaj1lLGwhPT1uJiYoaj1yLmNsb25lKGosITAsITApLGkmJnIubWVyZ2UoaCxtYShqLCJzY3Jp
cHQiKSkpLGMuY2FsbChhW2xdLGosbCk7aWYoaSlmb3Ioaz1oW2gubGVuZ3RoLTFdLm93bmVyRG9j
dW1lbnQsci5tYXAoaCxGYSksbD0wO2w8aTtsKyspaj1oW2xdLGthLnRlc3Qoai50eXBlfHwiIikm
JiFWLmFjY2VzcyhqLCJnbG9iYWxFdmFsIikmJnIuY29udGFpbnMoayxqKSYmKGouc3JjP3IuX2V2
YWxVcmwmJnIuX2V2YWxVcmwoai5zcmMpOnAoai50ZXh0Q29udGVudC5yZXBsYWNlKENhLCIiKSxr
KSl9cmV0dXJuIGF9ZnVuY3Rpb24gSmEoYSxiLGMpe2Zvcih2YXIgZCxlPWI/ci5maWx0ZXIoYixh
KTphLGY9MDtudWxsIT0oZD1lW2ZdKTtmKyspY3x8MSE9PWQubm9kZVR5cGV8fHIuY2xlYW5EYXRh
KG1hKGQpKSxkLnBhcmVudE5vZGUmJihjJiZyLmNvbnRhaW5zKGQub3duZXJEb2N1bWVudCxkKSYm
bmEobWEoZCwic2NyaXB0IikpLGQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChkKSk7cmV0dXJuIGF9
ci5leHRlbmQoe2h0bWxQcmVmaWx0ZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSh5YSwi
PCQxPjwvJDI+Iil9LGNsb25lOmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGYsZyxoPWEuY2xvbmVO
b2RlKCEwKSxpPXIuY29udGFpbnMoYS5vd25lckRvY3VtZW50LGEpO2lmKCEoby5ub0Nsb25lQ2hl
Y2tlZHx8MSE9PWEubm9kZVR5cGUmJjExIT09YS5ub2RlVHlwZXx8ci5pc1hNTERvYyhhKSkpZm9y
KGc9bWEoaCksZj1tYShhKSxkPTAsZT1mLmxlbmd0aDtkPGU7ZCsrKUhhKGZbZF0sZ1tkXSk7aWYo
YilpZihjKWZvcihmPWZ8fG1hKGEpLGc9Z3x8bWEoaCksZD0wLGU9Zi5sZW5ndGg7ZDxlO2QrKylH
YShmW2RdLGdbZF0pO2Vsc2UgR2EoYSxoKTtyZXR1cm4gZz1tYShoLCJzY3JpcHQiKSxnLmxlbmd0
aD4wJiZuYShnLCFpJiZtYShhLCJzY3JpcHQiKSksaH0sY2xlYW5EYXRhOmZ1bmN0aW9uKGEpe2Zv
cih2YXIgYixjLGQsZT1yLmV2ZW50LnNwZWNpYWwsZj0wO3ZvaWQgMCE9PShjPWFbZl0pO2YrKylp
ZihUKGMpKXtpZihiPWNbVi5leHBhbmRvXSl7aWYoYi5ldmVudHMpZm9yKGQgaW4gYi5ldmVudHMp
ZVtkXT9yLmV2ZW50LnJlbW92ZShjLGQpOnIucmVtb3ZlRXZlbnQoYyxkLGIuaGFuZGxlKTtjW1Yu
ZXhwYW5kb109dm9pZCAwfWNbVy5leHBhbmRvXSYmKGNbVy5leHBhbmRvXT12b2lkIDApfX19KSxy
LmZuLmV4dGVuZCh7ZGV0YWNoOmZ1bmN0aW9uKGEpe3JldHVybiBKYSh0aGlzLGEsITApfSxyZW1v
dmU6ZnVuY3Rpb24oYSl7cmV0dXJuIEphKHRoaXMsYSl9LHRleHQ6ZnVuY3Rpb24oYSl7cmV0dXJu
IFModGhpcyxmdW5jdGlvbihhKXtyZXR1cm4gdm9pZCAwPT09YT9yLnRleHQodGhpcyk6dGhpcy5l
bXB0eSgpLmVhY2goZnVuY3Rpb24oKXsxIT09dGhpcy5ub2RlVHlwZSYmMTEhPT10aGlzLm5vZGVU
eXBlJiY5IT09dGhpcy5ub2RlVHlwZXx8KHRoaXMudGV4dENvbnRlbnQ9YSl9KX0sbnVsbCxhLGFy
Z3VtZW50cy5sZW5ndGgpfSxhcHBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gSWEodGhpcyxhcmd1bWVu
dHMsZnVuY3Rpb24oYSl7aWYoMT09PXRoaXMubm9kZVR5cGV8fDExPT09dGhpcy5ub2RlVHlwZXx8
OT09PXRoaXMubm9kZVR5cGUpe3ZhciBiPURhKHRoaXMsYSk7Yi5hcHBlbmRDaGlsZChhKX19KX0s
cHJlcGVuZDpmdW5jdGlvbigpe3JldHVybiBJYSh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihhKXtp
ZigxPT09dGhpcy5ub2RlVHlwZXx8MTE9PT10aGlzLm5vZGVUeXBlfHw5PT09dGhpcy5ub2RlVHlw
ZSl7dmFyIGI9RGEodGhpcyxhKTtiLmluc2VydEJlZm9yZShhLGIuZmlyc3RDaGlsZCl9fSl9LGJl
Zm9yZTpmdW5jdGlvbigpe3JldHVybiBJYSh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihhKXt0aGlz
LnBhcmVudE5vZGUmJnRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSx0aGlzKX0pfSxhZnRl
cjpmdW5jdGlvbigpe3JldHVybiBJYSh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihhKXt0aGlzLnBh
cmVudE5vZGUmJnRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSx0aGlzLm5leHRTaWJsaW5n
KX0pfSxlbXB0eTpmdW5jdGlvbigpe2Zvcih2YXIgYSxiPTA7bnVsbCE9KGE9dGhpc1tiXSk7Yisr
KTE9PT1hLm5vZGVUeXBlJiYoci5jbGVhbkRhdGEobWEoYSwhMSkpLGEudGV4dENvbnRlbnQ9IiIp
O3JldHVybiB0aGlzfSxjbG9uZTpmdW5jdGlvbihhLGIpe3JldHVybiBhPW51bGwhPWEmJmEsYj1u
dWxsPT1iP2E6Yix0aGlzLm1hcChmdW5jdGlvbigpe3JldHVybiByLmNsb25lKHRoaXMsYSxiKX0p
fSxodG1sOmZ1bmN0aW9uKGEpe3JldHVybiBTKHRoaXMsZnVuY3Rpb24oYSl7dmFyIGI9dGhpc1sw
XXx8e30sYz0wLGQ9dGhpcy5sZW5ndGg7aWYodm9pZCAwPT09YSYmMT09PWIubm9kZVR5cGUpcmV0
dXJuIGIuaW5uZXJIVE1MO2lmKCJzdHJpbmciPT10eXBlb2YgYSYmIXphLnRlc3QoYSkmJiFsYVso
amEuZXhlYyhhKXx8WyIiLCIiXSlbMV0udG9Mb3dlckNhc2UoKV0pe2E9ci5odG1sUHJlZmlsdGVy
KGEpO3RyeXtmb3IoO2M8ZDtjKyspYj10aGlzW2NdfHx7fSwxPT09Yi5ub2RlVHlwZSYmKHIuY2xl
YW5EYXRhKG1hKGIsITEpKSxiLmlubmVySFRNTD1hKTtiPTB9Y2F0Y2goZSl7fX1iJiZ0aGlzLmVt
cHR5KCkuYXBwZW5kKGEpfSxudWxsLGEsYXJndW1lbnRzLmxlbmd0aCl9LHJlcGxhY2VXaXRoOmZ1
bmN0aW9uKCl7dmFyIGE9W107cmV0dXJuIElhKHRoaXMsYXJndW1lbnRzLGZ1bmN0aW9uKGIpe3Zh
ciBjPXRoaXMucGFyZW50Tm9kZTtyLmluQXJyYXkodGhpcyxhKTwwJiYoci5jbGVhbkRhdGEobWEo
dGhpcykpLGMmJmMucmVwbGFjZUNoaWxkKGIsdGhpcykpfSxhKX19KSxyLmVhY2goe2FwcGVuZFRv
OiJhcHBlbmQiLHByZXBlbmRUbzoicHJlcGVuZCIsaW5zZXJ0QmVmb3JlOiJiZWZvcmUiLGluc2Vy
dEFmdGVyOiJhZnRlciIscmVwbGFjZUFsbDoicmVwbGFjZVdpdGgifSxmdW5jdGlvbihhLGIpe3Iu
Zm5bYV09ZnVuY3Rpb24oYSl7Zm9yKHZhciBjLGQ9W10sZT1yKGEpLGY9ZS5sZW5ndGgtMSxnPTA7
Zzw9ZjtnKyspYz1nPT09Zj90aGlzOnRoaXMuY2xvbmUoITApLHIoZVtnXSlbYl0oYyksaC5hcHBs
eShkLGMuZ2V0KCkpO3JldHVybiB0aGlzLnB1c2hTdGFjayhkKX19KTt2YXIgS2E9L15tYXJnaW4v
LExhPW5ldyBSZWdFeHAoIl4oIitfKyIpKD8hcHgpW2EteiVdKyQiLCJpIiksTWE9ZnVuY3Rpb24o
Yil7dmFyIGM9Yi5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3O3JldHVybiBjJiZjLm9wZW5lcnx8
KGM9YSksYy5nZXRDb21wdXRlZFN0eWxlKGIpfTshZnVuY3Rpb24oKXtmdW5jdGlvbiBiKCl7aWYo
aSl7aS5zdHlsZS5jc3NUZXh0PSJib3gtc2l6aW5nOmJvcmRlci1ib3g7cG9zaXRpb246cmVsYXRp
dmU7ZGlzcGxheTpibG9jazttYXJnaW46YXV0bztib3JkZXI6MXB4O3BhZGRpbmc6MXB4O3RvcDox
JTt3aWR0aDo1MCUiLGkuaW5uZXJIVE1MPSIiLHFhLmFwcGVuZENoaWxkKGgpO3ZhciBiPWEuZ2V0
Q29tcHV0ZWRTdHlsZShpKTtjPSIxJSIhPT1iLnRvcCxnPSIycHgiPT09Yi5tYXJnaW5MZWZ0LGU9
IjRweCI9PT1iLndpZHRoLGkuc3R5bGUubWFyZ2luUmlnaHQ9IjUwJSIsZj0iNHB4Ij09PWIubWFy
Z2luUmlnaHQscWEucmVtb3ZlQ2hpbGQoaCksaT1udWxsfX12YXIgYyxlLGYsZyxoPWQuY3JlYXRl
RWxlbWVudCgiZGl2IiksaT1kLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2kuc3R5bGUmJihpLnN0eWxl
LmJhY2tncm91bmRDbGlwPSJjb250ZW50LWJveCIsaS5jbG9uZU5vZGUoITApLnN0eWxlLmJhY2tn
cm91bmRDbGlwPSIiLG8uY2xlYXJDbG9uZVN0eWxlPSJjb250ZW50LWJveCI9PT1pLnN0eWxlLmJh
Y2tncm91bmRDbGlwLGguc3R5bGUuY3NzVGV4dD0iYm9yZGVyOjA7d2lkdGg6OHB4O2hlaWdodDow
O3RvcDowO2xlZnQ6LTk5OTlweDtwYWRkaW5nOjA7bWFyZ2luLXRvcDoxcHg7cG9zaXRpb246YWJz
b2x1dGUiLGguYXBwZW5kQ2hpbGQoaSksci5leHRlbmQobyx7cGl4ZWxQb3NpdGlvbjpmdW5jdGlv
bigpe3JldHVybiBiKCksY30sYm94U2l6aW5nUmVsaWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gYigp
LGV9LHBpeGVsTWFyZ2luUmlnaHQ6ZnVuY3Rpb24oKXtyZXR1cm4gYigpLGZ9LHJlbGlhYmxlTWFy
Z2luTGVmdDpmdW5jdGlvbigpe3JldHVybiBiKCksZ319KSl9KCk7ZnVuY3Rpb24gTmEoYSxiLGMp
e3ZhciBkLGUsZixnLGg9YS5zdHlsZTtyZXR1cm4gYz1jfHxNYShhKSxjJiYoZz1jLmdldFByb3Bl
cnR5VmFsdWUoYil8fGNbYl0sIiIhPT1nfHxyLmNvbnRhaW5zKGEub3duZXJEb2N1bWVudCxhKXx8
KGc9ci5zdHlsZShhLGIpKSwhby5waXhlbE1hcmdpblJpZ2h0KCkmJkxhLnRlc3QoZykmJkthLnRl
c3QoYikmJihkPWgud2lkdGgsZT1oLm1pbldpZHRoLGY9aC5tYXhXaWR0aCxoLm1pbldpZHRoPWgu
bWF4V2lkdGg9aC53aWR0aD1nLGc9Yy53aWR0aCxoLndpZHRoPWQsaC5taW5XaWR0aD1lLGgubWF4
V2lkdGg9ZikpLHZvaWQgMCE9PWc/ZysiIjpnfWZ1bmN0aW9uIE9hKGEsYil7cmV0dXJue2dldDpm
dW5jdGlvbigpe3JldHVybiBhKCk/dm9pZCBkZWxldGUgdGhpcy5nZXQ6KHRoaXMuZ2V0PWIpLmFw
cGx5KHRoaXMsYXJndW1lbnRzKX19fXZhciBQYT0vXihub25lfHRhYmxlKD8hLWNbZWFdKS4rKS8s
UWE9e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdmlzaWJpbGl0eToiaGlkZGVuIixkaXNwbGF5OiJibG9j
ayJ9LFJhPXtsZXR0ZXJTcGFjaW5nOiIwIixmb250V2VpZ2h0OiI0MDAifSxTYT1bIldlYmtpdCIs
Ik1veiIsIm1zIl0sVGE9ZC5jcmVhdGVFbGVtZW50KCJkaXYiKS5zdHlsZTtmdW5jdGlvbiBVYShh
KXtpZihhIGluIFRhKXJldHVybiBhO3ZhciBiPWFbMF0udG9VcHBlckNhc2UoKSthLnNsaWNlKDEp
LGM9U2EubGVuZ3RoO3doaWxlKGMtLSlpZihhPVNhW2NdK2IsYSBpbiBUYSlyZXR1cm4gYX1mdW5j
dGlvbiBWYShhLGIsYyl7dmFyIGQ9YWEuZXhlYyhiKTtyZXR1cm4gZD9NYXRoLm1heCgwLGRbMl0t
KGN8fDApKSsoZFszXXx8InB4Iik6Yn1mdW5jdGlvbiBXYShhLGIsYyxkLGUpe3ZhciBmLGc9MDtm
b3IoZj1jPT09KGQ/ImJvcmRlciI6ImNvbnRlbnQiKT80OiJ3aWR0aCI9PT1iPzE6MDtmPDQ7Zis9
MikibWFyZ2luIj09PWMmJihnKz1yLmNzcyhhLGMrYmFbZl0sITAsZSkpLGQ/KCJjb250ZW50Ij09
PWMmJihnLT1yLmNzcyhhLCJwYWRkaW5nIitiYVtmXSwhMCxlKSksIm1hcmdpbiIhPT1jJiYoZy09
ci5jc3MoYSwiYm9yZGVyIitiYVtmXSsiV2lkdGgiLCEwLGUpKSk6KGcrPXIuY3NzKGEsInBhZGRp
bmciK2JhW2ZdLCEwLGUpLCJwYWRkaW5nIiE9PWMmJihnKz1yLmNzcyhhLCJib3JkZXIiK2JhW2Zd
KyJXaWR0aCIsITAsZSkpKTtyZXR1cm4gZ31mdW5jdGlvbiBYYShhLGIsYyl7dmFyIGQsZT0hMCxm
PU1hKGEpLGc9ImJvcmRlci1ib3giPT09ci5jc3MoYSwiYm94U2l6aW5nIiwhMSxmKTtpZihhLmdl
dENsaWVudFJlY3RzKCkubGVuZ3RoJiYoZD1hLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpW2JdKSxk
PD0wfHxudWxsPT1kKXtpZihkPU5hKGEsYixmKSwoZDwwfHxudWxsPT1kKSYmKGQ9YS5zdHlsZVti
XSksTGEudGVzdChkKSlyZXR1cm4gZDtlPWcmJihvLmJveFNpemluZ1JlbGlhYmxlKCl8fGQ9PT1h
LnN0eWxlW2JdKSxkPXBhcnNlRmxvYXQoZCl8fDB9cmV0dXJuIGQrV2EoYSxiLGN8fChnPyJib3Jk
ZXIiOiJjb250ZW50IiksZSxmKSsicHgifXIuZXh0ZW5kKHtjc3NIb29rczp7b3BhY2l0eTp7Z2V0
OmZ1bmN0aW9uKGEsYil7aWYoYil7dmFyIGM9TmEoYSwib3BhY2l0eSIpO3JldHVybiIiPT09Yz8i
MSI6Y319fX0sY3NzTnVtYmVyOnthbmltYXRpb25JdGVyYXRpb25Db3VudDohMCxjb2x1bW5Db3Vu
dDohMCxmaWxsT3BhY2l0eTohMCxmbGV4R3JvdzohMCxmbGV4U2hyaW5rOiEwLGZvbnRXZWlnaHQ6
ITAsbGluZUhlaWdodDohMCxvcGFjaXR5OiEwLG9yZGVyOiEwLG9ycGhhbnM6ITAsd2lkb3dzOiEw
LHpJbmRleDohMCx6b29tOiEwfSxjc3NQcm9wczp7ImZsb2F0IjoiY3NzRmxvYXQifSxzdHlsZTpm
dW5jdGlvbihhLGIsYyxkKXtpZihhJiYzIT09YS5ub2RlVHlwZSYmOCE9PWEubm9kZVR5cGUmJmEu
c3R5bGUpe3ZhciBlLGYsZyxoPXIuY2FtZWxDYXNlKGIpLGk9YS5zdHlsZTtyZXR1cm4gYj1yLmNz
c1Byb3BzW2hdfHwoci5jc3NQcm9wc1toXT1VYShoKXx8aCksZz1yLmNzc0hvb2tzW2JdfHxyLmNz
c0hvb2tzW2hdLHZvaWQgMD09PWM/ZyYmImdldCJpbiBnJiZ2b2lkIDAhPT0oZT1nLmdldChhLCEx
LGQpKT9lOmlbYl06KGY9dHlwZW9mIGMsInN0cmluZyI9PT1mJiYoZT1hYS5leGVjKGMpKSYmZVsx
XSYmKGM9ZWEoYSxiLGUpLGY9Im51bWJlciIpLG51bGwhPWMmJmM9PT1jJiYoIm51bWJlciI9PT1m
JiYoYys9ZSYmZVszXXx8KHIuY3NzTnVtYmVyW2hdPyIiOiJweCIpKSxvLmNsZWFyQ2xvbmVTdHls
ZXx8IiIhPT1jfHwwIT09Yi5pbmRleE9mKCJiYWNrZ3JvdW5kIil8fChpW2JdPSJpbmhlcml0Iiks
ZyYmInNldCJpbiBnJiZ2b2lkIDA9PT0oYz1nLnNldChhLGMsZCkpfHwoaVtiXT1jKSksdm9pZCAw
KX19LGNzczpmdW5jdGlvbihhLGIsYyxkKXt2YXIgZSxmLGcsaD1yLmNhbWVsQ2FzZShiKTtyZXR1
cm4gYj1yLmNzc1Byb3BzW2hdfHwoci5jc3NQcm9wc1toXT1VYShoKXx8aCksZz1yLmNzc0hvb2tz
W2JdfHxyLmNzc0hvb2tzW2hdLGcmJiJnZXQiaW4gZyYmKGU9Zy5nZXQoYSwhMCxjKSksdm9pZCAw
PT09ZSYmKGU9TmEoYSxiLGQpKSwibm9ybWFsIj09PWUmJmIgaW4gUmEmJihlPVJhW2JdKSwiIj09
PWN8fGM/KGY9cGFyc2VGbG9hdChlKSxjPT09ITB8fGlzRmluaXRlKGYpP2Z8fDA6ZSk6ZX19KSxy
LmVhY2goWyJoZWlnaHQiLCJ3aWR0aCJdLGZ1bmN0aW9uKGEsYil7ci5jc3NIb29rc1tiXT17Z2V0
OmZ1bmN0aW9uKGEsYyxkKXtpZihjKXJldHVybiFQYS50ZXN0KHIuY3NzKGEsImRpc3BsYXkiKSl8
fGEuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGgmJmEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lk
dGg/WGEoYSxiLGQpOmRhKGEsUWEsZnVuY3Rpb24oKXtyZXR1cm4gWGEoYSxiLGQpfSl9LHNldDpm
dW5jdGlvbihhLGMsZCl7dmFyIGUsZj1kJiZNYShhKSxnPWQmJldhKGEsYixkLCJib3JkZXItYm94
Ij09PXIuY3NzKGEsImJveFNpemluZyIsITEsZiksZik7cmV0dXJuIGcmJihlPWFhLmV4ZWMoYykp
JiYicHgiIT09KGVbM118fCJweCIpJiYoYS5zdHlsZVtiXT1jLGM9ci5jc3MoYSxiKSksVmEoYSxj
LGcpfX19KSxyLmNzc0hvb2tzLm1hcmdpbkxlZnQ9T2Eoby5yZWxpYWJsZU1hcmdpbkxlZnQsZnVu
Y3Rpb24oYSxiKXtpZihiKXJldHVybihwYXJzZUZsb2F0KE5hKGEsIm1hcmdpbkxlZnQiKSl8fGEu
Z2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdC1kYShhLHttYXJnaW5MZWZ0OjB9LGZ1bmN0aW9u
KCl7cmV0dXJuIGEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdH0pKSsicHgifSksci5lYWNo
KHttYXJnaW46IiIscGFkZGluZzoiIixib3JkZXI6IldpZHRoIn0sZnVuY3Rpb24oYSxiKXtyLmNz
c0hvb2tzW2ErYl09e2V4cGFuZDpmdW5jdGlvbihjKXtmb3IodmFyIGQ9MCxlPXt9LGY9InN0cmlu
ZyI9PXR5cGVvZiBjP2Muc3BsaXQoIiAiKTpbY107ZDw0O2QrKyllW2ErYmFbZF0rYl09ZltkXXx8
ZltkLTJdfHxmWzBdO3JldHVybiBlfX0sS2EudGVzdChhKXx8KHIuY3NzSG9va3NbYStiXS5zZXQ9
VmEpfSksci5mbi5leHRlbmQoe2NzczpmdW5jdGlvbihhLGIpe3JldHVybiBTKHRoaXMsZnVuY3Rp
b24oYSxiLGMpe3ZhciBkLGUsZj17fSxnPTA7aWYoci5pc0FycmF5KGIpKXtmb3IoZD1NYShhKSxl
PWIubGVuZ3RoO2c8ZTtnKyspZltiW2ddXT1yLmNzcyhhLGJbZ10sITEsZCk7cmV0dXJuIGZ9cmV0
dXJuIHZvaWQgMCE9PWM/ci5zdHlsZShhLGIsYyk6ci5jc3MoYSxiKX0sYSxiLGFyZ3VtZW50cy5s
ZW5ndGg+MSl9fSk7ZnVuY3Rpb24gWWEoYSxiLGMsZCxlKXtyZXR1cm4gbmV3IFlhLnByb3RvdHlw
ZS5pbml0KGEsYixjLGQsZSl9ci5Ud2Vlbj1ZYSxZYS5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOllh
LGluaXQ6ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3RoaXMuZWxlbT1hLHRoaXMucHJvcD1jLHRoaXMu
ZWFzaW5nPWV8fHIuZWFzaW5nLl9kZWZhdWx0LHRoaXMub3B0aW9ucz1iLHRoaXMuc3RhcnQ9dGhp
cy5ub3c9dGhpcy5jdXIoKSx0aGlzLmVuZD1kLHRoaXMudW5pdD1mfHwoci5jc3NOdW1iZXJbY10/
IiI6InB4Iil9LGN1cjpmdW5jdGlvbigpe3ZhciBhPVlhLnByb3BIb29rc1t0aGlzLnByb3BdO3Jl
dHVybiBhJiZhLmdldD9hLmdldCh0aGlzKTpZYS5wcm9wSG9va3MuX2RlZmF1bHQuZ2V0KHRoaXMp
fSxydW46ZnVuY3Rpb24oYSl7dmFyIGIsYz1ZYS5wcm9wSG9va3NbdGhpcy5wcm9wXTtyZXR1cm4g
dGhpcy5vcHRpb25zLmR1cmF0aW9uP3RoaXMucG9zPWI9ci5lYXNpbmdbdGhpcy5lYXNpbmddKGEs
dGhpcy5vcHRpb25zLmR1cmF0aW9uKmEsMCwxLHRoaXMub3B0aW9ucy5kdXJhdGlvbik6dGhpcy5w
b3M9Yj1hLHRoaXMubm93PSh0aGlzLmVuZC10aGlzLnN0YXJ0KSpiK3RoaXMuc3RhcnQsdGhpcy5v
cHRpb25zLnN0ZXAmJnRoaXMub3B0aW9ucy5zdGVwLmNhbGwodGhpcy5lbGVtLHRoaXMubm93LHRo
aXMpLGMmJmMuc2V0P2Muc2V0KHRoaXMpOllhLnByb3BIb29rcy5fZGVmYXVsdC5zZXQodGhpcyks
dGhpc319LFlhLnByb3RvdHlwZS5pbml0LnByb3RvdHlwZT1ZYS5wcm90b3R5cGUsWWEucHJvcEhv
b2tzPXtfZGVmYXVsdDp7Z2V0OmZ1bmN0aW9uKGEpe3ZhciBiO3JldHVybiAxIT09YS5lbGVtLm5v
ZGVUeXBlfHxudWxsIT1hLmVsZW1bYS5wcm9wXSYmbnVsbD09YS5lbGVtLnN0eWxlW2EucHJvcF0/
YS5lbGVtW2EucHJvcF06KGI9ci5jc3MoYS5lbGVtLGEucHJvcCwiIiksYiYmImF1dG8iIT09Yj9i
OjApfSxzZXQ6ZnVuY3Rpb24oYSl7ci5meC5zdGVwW2EucHJvcF0/ci5meC5zdGVwW2EucHJvcF0o
YSk6MSE9PWEuZWxlbS5ub2RlVHlwZXx8bnVsbD09YS5lbGVtLnN0eWxlW3IuY3NzUHJvcHNbYS5w
cm9wXV0mJiFyLmNzc0hvb2tzW2EucHJvcF0/YS5lbGVtW2EucHJvcF09YS5ub3c6ci5zdHlsZShh
LmVsZW0sYS5wcm9wLGEubm93K2EudW5pdCl9fX0sWWEucHJvcEhvb2tzLnNjcm9sbFRvcD1ZYS5w
cm9wSG9va3Muc2Nyb2xsTGVmdD17c2V0OmZ1bmN0aW9uKGEpe2EuZWxlbS5ub2RlVHlwZSYmYS5l
bGVtLnBhcmVudE5vZGUmJihhLmVsZW1bYS5wcm9wXT1hLm5vdyl9fSxyLmVhc2luZz17bGluZWFy
OmZ1bmN0aW9uKGEpe3JldHVybiBhfSxzd2luZzpmdW5jdGlvbihhKXtyZXR1cm4uNS1NYXRoLmNv
cyhhKk1hdGguUEkpLzJ9LF9kZWZhdWx0OiJzd2luZyJ9LHIuZng9WWEucHJvdG90eXBlLmluaXQs
ci5meC5zdGVwPXt9O3ZhciBaYSwkYSxfYT0vXig/OnRvZ2dsZXxzaG93fGhpZGUpJC8sYWI9L3F1
ZXVlSG9va3MkLztmdW5jdGlvbiBiYigpeyRhJiYoYS5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYmIp
LHIuZngudGljaygpKX1mdW5jdGlvbiBjYigpe3JldHVybiBhLnNldFRpbWVvdXQoZnVuY3Rpb24o
KXtaYT12b2lkIDB9KSxaYT1yLm5vdygpfWZ1bmN0aW9uIGRiKGEsYil7dmFyIGMsZD0wLGU9e2hl
aWdodDphfTtmb3IoYj1iPzE6MDtkPDQ7ZCs9Mi1iKWM9YmFbZF0sZVsibWFyZ2luIitjXT1lWyJw
YWRkaW5nIitjXT1hO3JldHVybiBiJiYoZS5vcGFjaXR5PWUud2lkdGg9YSksZX1mdW5jdGlvbiBl
YihhLGIsYyl7Zm9yKHZhciBkLGU9KGhiLnR3ZWVuZXJzW2JdfHxbXSkuY29uY2F0KGhiLnR3ZWVu
ZXJzWyIqIl0pLGY9MCxnPWUubGVuZ3RoO2Y8ZztmKyspaWYoZD1lW2ZdLmNhbGwoYyxiLGEpKXJl
dHVybiBkfWZ1bmN0aW9uIGZiKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixrLGw9IndpZHRoImlu
IGJ8fCJoZWlnaHQiaW4gYixtPXRoaXMsbj17fSxvPWEuc3R5bGUscD1hLm5vZGVUeXBlJiZjYShh
KSxxPVYuZ2V0KGEsImZ4c2hvdyIpO2MucXVldWV8fChnPXIuX3F1ZXVlSG9va3MoYSwiZngiKSxu
dWxsPT1nLnVucXVldWVkJiYoZy51bnF1ZXVlZD0wLGg9Zy5lbXB0eS5maXJlLGcuZW1wdHkuZmly
ZT1mdW5jdGlvbigpe2cudW5xdWV1ZWR8fGgoKX0pLGcudW5xdWV1ZWQrKyxtLmFsd2F5cyhmdW5j
dGlvbigpe20uYWx3YXlzKGZ1bmN0aW9uKCl7Zy51bnF1ZXVlZC0tLHIucXVldWUoYSwiZngiKS5s
ZW5ndGh8fGcuZW1wdHkuZmlyZSgpfSl9KSk7Zm9yKGQgaW4gYilpZihlPWJbZF0sX2EudGVzdChl
KSl7aWYoZGVsZXRlIGJbZF0sZj1mfHwidG9nZ2xlIj09PWUsZT09PShwPyJoaWRlIjoic2hvdyIp
KXtpZigic2hvdyIhPT1lfHwhcXx8dm9pZCAwPT09cVtkXSljb250aW51ZTtwPSEwfW5bZF09cSYm
cVtkXXx8ci5zdHlsZShhLGQpfWlmKGk9IXIuaXNFbXB0eU9iamVjdChiKSxpfHwhci5pc0VtcHR5
T2JqZWN0KG4pKXtsJiYxPT09YS5ub2RlVHlwZSYmKGMub3ZlcmZsb3c9W28ub3ZlcmZsb3csby5v
dmVyZmxvd1gsby5vdmVyZmxvd1ldLGo9cSYmcS5kaXNwbGF5LG51bGw9PWomJihqPVYuZ2V0KGEs
ImRpc3BsYXkiKSksaz1yLmNzcyhhLCJkaXNwbGF5IiksIm5vbmUiPT09ayYmKGo/az1qOihoYShb
YV0sITApLGo9YS5zdHlsZS5kaXNwbGF5fHxqLGs9ci5jc3MoYSwiZGlzcGxheSIpLGhhKFthXSkp
KSwoImlubGluZSI9PT1rfHwiaW5saW5lLWJsb2NrIj09PWsmJm51bGwhPWopJiYibm9uZSI9PT1y
LmNzcyhhLCJmbG9hdCIpJiYoaXx8KG0uZG9uZShmdW5jdGlvbigpe28uZGlzcGxheT1qfSksbnVs
bD09aiYmKGs9by5kaXNwbGF5LGo9Im5vbmUiPT09az8iIjprKSksby5kaXNwbGF5PSJpbmxpbmUt
YmxvY2siKSksYy5vdmVyZmxvdyYmKG8ub3ZlcmZsb3c9ImhpZGRlbiIsbS5hbHdheXMoZnVuY3Rp
b24oKXtvLm92ZXJmbG93PWMub3ZlcmZsb3dbMF0sby5vdmVyZmxvd1g9Yy5vdmVyZmxvd1sxXSxv
Lm92ZXJmbG93WT1jLm92ZXJmbG93WzJdfSkpLGk9ITE7Zm9yKGQgaW4gbilpfHwocT8iaGlkZGVu
ImluIHEmJihwPXEuaGlkZGVuKTpxPVYuYWNjZXNzKGEsImZ4c2hvdyIse2Rpc3BsYXk6an0pLGYm
JihxLmhpZGRlbj0hcCkscCYmaGEoW2FdLCEwKSxtLmRvbmUoZnVuY3Rpb24oKXtwfHxoYShbYV0p
LFYucmVtb3ZlKGEsImZ4c2hvdyIpO2ZvcihkIGluIG4pci5zdHlsZShhLGQsbltkXSl9KSksaT1l
YihwP3FbZF06MCxkLG0pLGQgaW4gcXx8KHFbZF09aS5zdGFydCxwJiYoaS5lbmQ9aS5zdGFydCxp
LnN0YXJ0PTApKX19ZnVuY3Rpb24gZ2IoYSxiKXt2YXIgYyxkLGUsZixnO2ZvcihjIGluIGEpaWYo
ZD1yLmNhbWVsQ2FzZShjKSxlPWJbZF0sZj1hW2NdLHIuaXNBcnJheShmKSYmKGU9ZlsxXSxmPWFb
Y109ZlswXSksYyE9PWQmJihhW2RdPWYsZGVsZXRlIGFbY10pLGc9ci5jc3NIb29rc1tkXSxnJiYi
ZXhwYW5kImluIGcpe2Y9Zy5leHBhbmQoZiksZGVsZXRlIGFbZF07Zm9yKGMgaW4gZiljIGluIGF8
fChhW2NdPWZbY10sYltjXT1lKX1lbHNlIGJbZF09ZX1mdW5jdGlvbiBoYihhLGIsYyl7dmFyIGQs
ZSxmPTAsZz1oYi5wcmVmaWx0ZXJzLmxlbmd0aCxoPXIuRGVmZXJyZWQoKS5hbHdheXMoZnVuY3Rp
b24oKXtkZWxldGUgaS5lbGVtfSksaT1mdW5jdGlvbigpe2lmKGUpcmV0dXJuITE7Zm9yKHZhciBi
PVphfHxjYigpLGM9TWF0aC5tYXgoMCxqLnN0YXJ0VGltZStqLmR1cmF0aW9uLWIpLGQ9Yy9qLmR1
cmF0aW9ufHwwLGY9MS1kLGc9MCxpPWoudHdlZW5zLmxlbmd0aDtnPGk7ZysrKWoudHdlZW5zW2dd
LnJ1bihmKTtyZXR1cm4gaC5ub3RpZnlXaXRoKGEsW2osZixjXSksZjwxJiZpP2M6KGgucmVzb2x2
ZVdpdGgoYSxbal0pLCExKX0saj1oLnByb21pc2Uoe2VsZW06YSxwcm9wczpyLmV4dGVuZCh7fSxi
KSxvcHRzOnIuZXh0ZW5kKCEwLHtzcGVjaWFsRWFzaW5nOnt9LGVhc2luZzpyLmVhc2luZy5fZGVm
YXVsdH0sYyksb3JpZ2luYWxQcm9wZXJ0aWVzOmIsb3JpZ2luYWxPcHRpb25zOmMsc3RhcnRUaW1l
OlphfHxjYigpLGR1cmF0aW9uOmMuZHVyYXRpb24sdHdlZW5zOltdLGNyZWF0ZVR3ZWVuOmZ1bmN0
aW9uKGIsYyl7dmFyIGQ9ci5Ud2VlbihhLGoub3B0cyxiLGMsai5vcHRzLnNwZWNpYWxFYXNpbmdb
Yl18fGoub3B0cy5lYXNpbmcpO3JldHVybiBqLnR3ZWVucy5wdXNoKGQpLGR9LHN0b3A6ZnVuY3Rp
b24oYil7dmFyIGM9MCxkPWI/ai50d2VlbnMubGVuZ3RoOjA7aWYoZSlyZXR1cm4gdGhpcztmb3Io
ZT0hMDtjPGQ7YysrKWoudHdlZW5zW2NdLnJ1bigxKTtyZXR1cm4gYj8oaC5ub3RpZnlXaXRoKGEs
W2osMSwwXSksaC5yZXNvbHZlV2l0aChhLFtqLGJdKSk6aC5yZWplY3RXaXRoKGEsW2osYl0pLHRo
aXN9fSksaz1qLnByb3BzO2ZvcihnYihrLGoub3B0cy5zcGVjaWFsRWFzaW5nKTtmPGc7ZisrKWlm
KGQ9aGIucHJlZmlsdGVyc1tmXS5jYWxsKGosYSxrLGoub3B0cykpcmV0dXJuIHIuaXNGdW5jdGlv
bihkLnN0b3ApJiYoci5fcXVldWVIb29rcyhqLmVsZW0sai5vcHRzLnF1ZXVlKS5zdG9wPXIucHJv
eHkoZC5zdG9wLGQpKSxkO3JldHVybiByLm1hcChrLGViLGopLHIuaXNGdW5jdGlvbihqLm9wdHMu
c3RhcnQpJiZqLm9wdHMuc3RhcnQuY2FsbChhLGopLHIuZngudGltZXIoci5leHRlbmQoaSx7ZWxl
bTphLGFuaW06aixxdWV1ZTpqLm9wdHMucXVldWV9KSksai5wcm9ncmVzcyhqLm9wdHMucHJvZ3Jl
c3MpLmRvbmUoai5vcHRzLmRvbmUsai5vcHRzLmNvbXBsZXRlKS5mYWlsKGoub3B0cy5mYWlsKS5h
bHdheXMoai5vcHRzLmFsd2F5cyl9ci5BbmltYXRpb249ci5leHRlbmQoaGIse3R3ZWVuZXJzOnsi
KiI6W2Z1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5jcmVhdGVUd2VlbihhLGIpO3JldHVybiBlYShj
LmVsZW0sYSxhYS5leGVjKGIpLGMpLGN9XX0sdHdlZW5lcjpmdW5jdGlvbihhLGIpe3IuaXNGdW5j
dGlvbihhKT8oYj1hLGE9WyIqIl0pOmE9YS5tYXRjaChLKTtmb3IodmFyIGMsZD0wLGU9YS5sZW5n
dGg7ZDxlO2QrKyljPWFbZF0saGIudHdlZW5lcnNbY109aGIudHdlZW5lcnNbY118fFtdLGhiLnR3
ZWVuZXJzW2NdLnVuc2hpZnQoYil9LHByZWZpbHRlcnM6W2ZiXSxwcmVmaWx0ZXI6ZnVuY3Rpb24o
YSxiKXtiP2hiLnByZWZpbHRlcnMudW5zaGlmdChhKTpoYi5wcmVmaWx0ZXJzLnB1c2goYSl9fSks
ci5zcGVlZD1mdW5jdGlvbihhLGIsYyl7dmFyIGU9YSYmIm9iamVjdCI9PXR5cGVvZiBhP3IuZXh0
ZW5kKHt9LGEpOntjb21wbGV0ZTpjfHwhYyYmYnx8ci5pc0Z1bmN0aW9uKGEpJiZhLGR1cmF0aW9u
OmEsZWFzaW5nOmMmJmJ8fGImJiFyLmlzRnVuY3Rpb24oYikmJmJ9O3JldHVybiByLmZ4Lm9mZnx8
ZC5oaWRkZW4/ZS5kdXJhdGlvbj0wOiJudW1iZXIiIT10eXBlb2YgZS5kdXJhdGlvbiYmKGUuZHVy
YXRpb24gaW4gci5meC5zcGVlZHM/ZS5kdXJhdGlvbj1yLmZ4LnNwZWVkc1tlLmR1cmF0aW9uXTpl
LmR1cmF0aW9uPXIuZnguc3BlZWRzLl9kZWZhdWx0KSxudWxsIT1lLnF1ZXVlJiZlLnF1ZXVlIT09
ITB8fChlLnF1ZXVlPSJmeCIpLGUub2xkPWUuY29tcGxldGUsZS5jb21wbGV0ZT1mdW5jdGlvbigp
e3IuaXNGdW5jdGlvbihlLm9sZCkmJmUub2xkLmNhbGwodGhpcyksZS5xdWV1ZSYmci5kZXF1ZXVl
KHRoaXMsZS5xdWV1ZSl9LGV9LHIuZm4uZXh0ZW5kKHtmYWRlVG86ZnVuY3Rpb24oYSxiLGMsZCl7
cmV0dXJuIHRoaXMuZmlsdGVyKGNhKS5jc3MoIm9wYWNpdHkiLDApLnNob3coKS5lbmQoKS5hbmlt
YXRlKHtvcGFjaXR5OmJ9LGEsYyxkKX0sYW5pbWF0ZTpmdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1y
LmlzRW1wdHlPYmplY3QoYSksZj1yLnNwZWVkKGIsYyxkKSxnPWZ1bmN0aW9uKCl7dmFyIGI9aGIo
dGhpcyxyLmV4dGVuZCh7fSxhKSxmKTsoZXx8Vi5nZXQodGhpcywiZmluaXNoIikpJiZiLnN0b3Ao
ITApfTtyZXR1cm4gZy5maW5pc2g9ZyxlfHxmLnF1ZXVlPT09ITE/dGhpcy5lYWNoKGcpOnRoaXMu
cXVldWUoZi5xdWV1ZSxnKX0sc3RvcDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9ZnVuY3Rpb24oYSl7
dmFyIGI9YS5zdG9wO2RlbGV0ZSBhLnN0b3AsYihjKX07cmV0dXJuInN0cmluZyIhPXR5cGVvZiBh
JiYoYz1iLGI9YSxhPXZvaWQgMCksYiYmYSE9PSExJiZ0aGlzLnF1ZXVlKGF8fCJmeCIsW10pLHRo
aXMuZWFjaChmdW5jdGlvbigpe3ZhciBiPSEwLGU9bnVsbCE9YSYmYSsicXVldWVIb29rcyIsZj1y
LnRpbWVycyxnPVYuZ2V0KHRoaXMpO2lmKGUpZ1tlXSYmZ1tlXS5zdG9wJiZkKGdbZV0pO2Vsc2Ug
Zm9yKGUgaW4gZylnW2VdJiZnW2VdLnN0b3AmJmFiLnRlc3QoZSkmJmQoZ1tlXSk7Zm9yKGU9Zi5s
ZW5ndGg7ZS0tOylmW2VdLmVsZW0hPT10aGlzfHxudWxsIT1hJiZmW2VdLnF1ZXVlIT09YXx8KGZb
ZV0uYW5pbS5zdG9wKGMpLGI9ITEsZi5zcGxpY2UoZSwxKSk7IWImJmN8fHIuZGVxdWV1ZSh0aGlz
LGEpfSl9LGZpbmlzaDpmdW5jdGlvbihhKXtyZXR1cm4gYSE9PSExJiYoYT1hfHwiZngiKSx0aGlz
LmVhY2goZnVuY3Rpb24oKXt2YXIgYixjPVYuZ2V0KHRoaXMpLGQ9Y1thKyJxdWV1ZSJdLGU9Y1th
KyJxdWV1ZUhvb2tzIl0sZj1yLnRpbWVycyxnPWQ/ZC5sZW5ndGg6MDtmb3IoYy5maW5pc2g9ITAs
ci5xdWV1ZSh0aGlzLGEsW10pLGUmJmUuc3RvcCYmZS5zdG9wLmNhbGwodGhpcywhMCksYj1mLmxl
bmd0aDtiLS07KWZbYl0uZWxlbT09PXRoaXMmJmZbYl0ucXVldWU9PT1hJiYoZltiXS5hbmltLnN0
b3AoITApLGYuc3BsaWNlKGIsMSkpO2ZvcihiPTA7YjxnO2IrKylkW2JdJiZkW2JdLmZpbmlzaCYm
ZFtiXS5maW5pc2guY2FsbCh0aGlzKTtkZWxldGUgYy5maW5pc2h9KX19KSxyLmVhY2goWyJ0b2dn
bGUiLCJzaG93IiwiaGlkZSJdLGZ1bmN0aW9uKGEsYil7dmFyIGM9ci5mbltiXTtyLmZuW2JdPWZ1
bmN0aW9uKGEsZCxlKXtyZXR1cm4gbnVsbD09YXx8ImJvb2xlYW4iPT10eXBlb2YgYT9jLmFwcGx5
KHRoaXMsYXJndW1lbnRzKTp0aGlzLmFuaW1hdGUoZGIoYiwhMCksYSxkLGUpfX0pLHIuZWFjaCh7
c2xpZGVEb3duOmRiKCJzaG93Iiksc2xpZGVVcDpkYigiaGlkZSIpLHNsaWRlVG9nZ2xlOmRiKCJ0
b2dnbGUiKSxmYWRlSW46e29wYWNpdHk6InNob3cifSxmYWRlT3V0OntvcGFjaXR5OiJoaWRlIn0s
ZmFkZVRvZ2dsZTp7b3BhY2l0eToidG9nZ2xlIn19LGZ1bmN0aW9uKGEsYil7ci5mblthXT1mdW5j
dGlvbihhLGMsZCl7cmV0dXJuIHRoaXMuYW5pbWF0ZShiLGEsYyxkKX19KSxyLnRpbWVycz1bXSxy
LmZ4LnRpY2s9ZnVuY3Rpb24oKXt2YXIgYSxiPTAsYz1yLnRpbWVycztmb3IoWmE9ci5ub3coKTti
PGMubGVuZ3RoO2IrKylhPWNbYl0sYSgpfHxjW2JdIT09YXx8Yy5zcGxpY2UoYi0tLDEpO2MubGVu
Z3RofHxyLmZ4LnN0b3AoKSxaYT12b2lkIDB9LHIuZngudGltZXI9ZnVuY3Rpb24oYSl7ci50aW1l
cnMucHVzaChhKSxhKCk/ci5meC5zdGFydCgpOnIudGltZXJzLnBvcCgpfSxyLmZ4LmludGVydmFs
PTEzLHIuZnguc3RhcnQ9ZnVuY3Rpb24oKXskYXx8KCRhPWEucmVxdWVzdEFuaW1hdGlvbkZyYW1l
P2EucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGJiKTphLnNldEludGVydmFsKHIuZngudGljayxyLmZ4
LmludGVydmFsKSl9LHIuZnguc3RvcD1mdW5jdGlvbigpe2EuY2FuY2VsQW5pbWF0aW9uRnJhbWU/
YS5jYW5jZWxBbmltYXRpb25GcmFtZSgkYSk6YS5jbGVhckludGVydmFsKCRhKSwkYT1udWxsfSxy
LmZ4LnNwZWVkcz17c2xvdzo2MDAsZmFzdDoyMDAsX2RlZmF1bHQ6NDAwfSxyLmZuLmRlbGF5PWZ1
bmN0aW9uKGIsYyl7cmV0dXJuIGI9ci5meD9yLmZ4LnNwZWVkc1tiXXx8YjpiLGM9Y3x8ImZ4Iix0
aGlzLnF1ZXVlKGMsZnVuY3Rpb24oYyxkKXt2YXIgZT1hLnNldFRpbWVvdXQoYyxiKTtkLnN0b3A9
ZnVuY3Rpb24oKXthLmNsZWFyVGltZW91dChlKX19KX0sZnVuY3Rpb24oKXt2YXIgYT1kLmNyZWF0
ZUVsZW1lbnQoImlucHV0IiksYj1kLmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpLGM9Yi5hcHBlbmRD
aGlsZChkLmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpKTthLnR5cGU9ImNoZWNrYm94IixvLmNoZWNr
T249IiIhPT1hLnZhbHVlLG8ub3B0U2VsZWN0ZWQ9Yy5zZWxlY3RlZCxhPWQuY3JlYXRlRWxlbWVu
dCgiaW5wdXQiKSxhLnZhbHVlPSJ0IixhLnR5cGU9InJhZGlvIixvLnJhZGlvVmFsdWU9InQiPT09
YS52YWx1ZX0oKTt2YXIgaWIsamI9ci5leHByLmF0dHJIYW5kbGU7ci5mbi5leHRlbmQoe2F0dHI6
ZnVuY3Rpb24oYSxiKXtyZXR1cm4gUyh0aGlzLHIuYXR0cixhLGIsYXJndW1lbnRzLmxlbmd0aD4x
KX0scmVtb3ZlQXR0cjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ci5y
ZW1vdmVBdHRyKHRoaXMsYSl9KX19KSxyLmV4dGVuZCh7YXR0cjpmdW5jdGlvbihhLGIsYyl7dmFy
IGQsZSxmPWEubm9kZVR5cGU7aWYoMyE9PWYmJjghPT1mJiYyIT09ZilyZXR1cm4idW5kZWZpbmVk
Ij09dHlwZW9mIGEuZ2V0QXR0cmlidXRlP3IucHJvcChhLGIsYyk6KDE9PT1mJiZyLmlzWE1MRG9j
KGEpfHwoZT1yLmF0dHJIb29rc1tiLnRvTG93ZXJDYXNlKCldfHwoci5leHByLm1hdGNoLmJvb2wu
dGVzdChiKT9pYjp2b2lkIDApKSwKK3ZvaWQgMCE9PWM/bnVsbD09PWM/dm9pZCByLnJlbW92ZUF0
dHIoYSxiKTplJiYic2V0ImluIGUmJnZvaWQgMCE9PShkPWUuc2V0KGEsYyxiKSk/ZDooYS5zZXRB
dHRyaWJ1dGUoYixjKyIiKSxjKTplJiYiZ2V0ImluIGUmJm51bGwhPT0oZD1lLmdldChhLGIpKT9k
OihkPXIuZmluZC5hdHRyKGEsYiksbnVsbD09ZD92b2lkIDA6ZCkpfSxhdHRySG9va3M6e3R5cGU6
e3NldDpmdW5jdGlvbihhLGIpe2lmKCFvLnJhZGlvVmFsdWUmJiJyYWRpbyI9PT1iJiZyLm5vZGVO
YW1lKGEsImlucHV0Iikpe3ZhciBjPWEudmFsdWU7cmV0dXJuIGEuc2V0QXR0cmlidXRlKCJ0eXBl
IixiKSxjJiYoYS52YWx1ZT1jKSxifX19fSxyZW1vdmVBdHRyOmZ1bmN0aW9uKGEsYil7dmFyIGMs
ZD0wLGU9YiYmYi5tYXRjaChLKTtpZihlJiYxPT09YS5ub2RlVHlwZSl3aGlsZShjPWVbZCsrXSlh
LnJlbW92ZUF0dHJpYnV0ZShjKX19KSxpYj17c2V0OmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYj09
PSExP3IucmVtb3ZlQXR0cihhLGMpOmEuc2V0QXR0cmlidXRlKGMsYyksY319LHIuZWFjaChyLmV4
cHIubWF0Y2guYm9vbC5zb3VyY2UubWF0Y2goL1x3Ky9nKSxmdW5jdGlvbihhLGIpe3ZhciBjPWpi
W2JdfHxyLmZpbmQuYXR0cjtqYltiXT1mdW5jdGlvbihhLGIsZCl7dmFyIGUsZixnPWIudG9Mb3dl
ckNhc2UoKTtyZXR1cm4gZHx8KGY9amJbZ10samJbZ109ZSxlPW51bGwhPWMoYSxiLGQpP2c6bnVs
bCxqYltnXT1mKSxlfX0pO3ZhciBrYj0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24p
JC9pLGxiPS9eKD86YXxhcmVhKSQvaTtyLmZuLmV4dGVuZCh7cHJvcDpmdW5jdGlvbihhLGIpe3Jl
dHVybiBTKHRoaXMsci5wcm9wLGEsYixhcmd1bWVudHMubGVuZ3RoPjEpfSxyZW1vdmVQcm9wOmZ1
bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtkZWxldGUgdGhpc1tyLnByb3BG
aXhbYV18fGFdfSl9fSksci5leHRlbmQoe3Byb3A6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZj1h
Lm5vZGVUeXBlO2lmKDMhPT1mJiY4IT09ZiYmMiE9PWYpcmV0dXJuIDE9PT1mJiZyLmlzWE1MRG9j
KGEpfHwoYj1yLnByb3BGaXhbYl18fGIsZT1yLnByb3BIb29rc1tiXSksdm9pZCAwIT09Yz9lJiYi
c2V0ImluIGUmJnZvaWQgMCE9PShkPWUuc2V0KGEsYyxiKSk/ZDphW2JdPWM6ZSYmImdldCJpbiBl
JiZudWxsIT09KGQ9ZS5nZXQoYSxiKSk/ZDphW2JdfSxwcm9wSG9va3M6e3RhYkluZGV4OntnZXQ6
ZnVuY3Rpb24oYSl7dmFyIGI9ci5maW5kLmF0dHIoYSwidGFiaW5kZXgiKTtyZXR1cm4gYj9wYXJz
ZUludChiLDEwKTprYi50ZXN0KGEubm9kZU5hbWUpfHxsYi50ZXN0KGEubm9kZU5hbWUpJiZhLmhy
ZWY/MDotMX19fSxwcm9wRml4OnsiZm9yIjoiaHRtbEZvciIsImNsYXNzIjoiY2xhc3NOYW1lIn19
KSxvLm9wdFNlbGVjdGVkfHwoci5wcm9wSG9va3Muc2VsZWN0ZWQ9e2dldDpmdW5jdGlvbihhKXt2
YXIgYj1hLnBhcmVudE5vZGU7cmV0dXJuIGImJmIucGFyZW50Tm9kZSYmYi5wYXJlbnROb2RlLnNl
bGVjdGVkSW5kZXgsbnVsbH0sc2V0OmZ1bmN0aW9uKGEpe3ZhciBiPWEucGFyZW50Tm9kZTtiJiYo
Yi5zZWxlY3RlZEluZGV4LGIucGFyZW50Tm9kZSYmYi5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXgp
fX0pLHIuZWFjaChbInRhYkluZGV4IiwicmVhZE9ubHkiLCJtYXhMZW5ndGgiLCJjZWxsU3BhY2lu
ZyIsImNlbGxQYWRkaW5nIiwicm93U3BhbiIsImNvbFNwYW4iLCJ1c2VNYXAiLCJmcmFtZUJvcmRl
ciIsImNvbnRlbnRFZGl0YWJsZSJdLGZ1bmN0aW9uKCl7ci5wcm9wRml4W3RoaXMudG9Mb3dlckNh
c2UoKV09dGhpc30pO2Z1bmN0aW9uIG1iKGEpe3ZhciBiPWEubWF0Y2goSyl8fFtdO3JldHVybiBi
LmpvaW4oIiAiKX1mdW5jdGlvbiBuYihhKXtyZXR1cm4gYS5nZXRBdHRyaWJ1dGUmJmEuZ2V0QXR0
cmlidXRlKCJjbGFzcyIpfHwiIn1yLmZuLmV4dGVuZCh7YWRkQ2xhc3M6ZnVuY3Rpb24oYSl7dmFy
IGIsYyxkLGUsZixnLGgsaT0wO2lmKHIuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1
bmN0aW9uKGIpe3IodGhpcykuYWRkQ2xhc3MoYS5jYWxsKHRoaXMsYixuYih0aGlzKSkpfSk7aWYo
InN0cmluZyI9PXR5cGVvZiBhJiZhKXtiPWEubWF0Y2goSyl8fFtdO3doaWxlKGM9dGhpc1tpKytd
KWlmKGU9bmIoYyksZD0xPT09Yy5ub2RlVHlwZSYmIiAiK21iKGUpKyIgIil7Zz0wO3doaWxlKGY9
YltnKytdKWQuaW5kZXhPZigiICIrZisiICIpPDAmJihkKz1mKyIgIik7aD1tYihkKSxlIT09aCYm
Yy5zZXRBdHRyaWJ1dGUoImNsYXNzIixoKX19cmV0dXJuIHRoaXN9LHJlbW92ZUNsYXNzOmZ1bmN0
aW9uKGEpe3ZhciBiLGMsZCxlLGYsZyxoLGk9MDtpZihyLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRo
aXMuZWFjaChmdW5jdGlvbihiKXtyKHRoaXMpLnJlbW92ZUNsYXNzKGEuY2FsbCh0aGlzLGIsbmIo
dGhpcykpKX0pO2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiB0aGlzLmF0dHIoImNsYXNzIiwi
Iik7aWYoInN0cmluZyI9PXR5cGVvZiBhJiZhKXtiPWEubWF0Y2goSyl8fFtdO3doaWxlKGM9dGhp
c1tpKytdKWlmKGU9bmIoYyksZD0xPT09Yy5ub2RlVHlwZSYmIiAiK21iKGUpKyIgIil7Zz0wO3do
aWxlKGY9YltnKytdKXdoaWxlKGQuaW5kZXhPZigiICIrZisiICIpPi0xKWQ9ZC5yZXBsYWNlKCIg
IitmKyIgIiwiICIpO2g9bWIoZCksZSE9PWgmJmMuc2V0QXR0cmlidXRlKCJjbGFzcyIsaCl9fXJl
dHVybiB0aGlzfSx0b2dnbGVDbGFzczpmdW5jdGlvbihhLGIpe3ZhciBjPXR5cGVvZiBhO3JldHVy
biJib29sZWFuIj09dHlwZW9mIGImJiJzdHJpbmciPT09Yz9iP3RoaXMuYWRkQ2xhc3MoYSk6dGhp
cy5yZW1vdmVDbGFzcyhhKTpyLmlzRnVuY3Rpb24oYSk/dGhpcy5lYWNoKGZ1bmN0aW9uKGMpe3Io
dGhpcykudG9nZ2xlQ2xhc3MoYS5jYWxsKHRoaXMsYyxuYih0aGlzKSxiKSxiKX0pOnRoaXMuZWFj
aChmdW5jdGlvbigpe3ZhciBiLGQsZSxmO2lmKCJzdHJpbmciPT09Yyl7ZD0wLGU9cih0aGlzKSxm
PWEubWF0Y2goSyl8fFtdO3doaWxlKGI9ZltkKytdKWUuaGFzQ2xhc3MoYik/ZS5yZW1vdmVDbGFz
cyhiKTplLmFkZENsYXNzKGIpfWVsc2Ugdm9pZCAwIT09YSYmImJvb2xlYW4iIT09Y3x8KGI9bmIo
dGhpcyksYiYmVi5zZXQodGhpcywiX19jbGFzc05hbWVfXyIsYiksdGhpcy5zZXRBdHRyaWJ1dGUm
JnRoaXMuc2V0QXR0cmlidXRlKCJjbGFzcyIsYnx8YT09PSExPyIiOlYuZ2V0KHRoaXMsIl9fY2xh
c3NOYW1lX18iKXx8IiIpKX0pfSxoYXNDbGFzczpmdW5jdGlvbihhKXt2YXIgYixjLGQ9MDtiPSIg
IithKyIgIjt3aGlsZShjPXRoaXNbZCsrXSlpZigxPT09Yy5ub2RlVHlwZSYmKCIgIittYihuYihj
KSkrIiAiKS5pbmRleE9mKGIpPi0xKXJldHVybiEwO3JldHVybiExfX0pO3ZhciBvYj0vXHIvZzty
LmZuLmV4dGVuZCh7dmFsOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlPXRoaXNbMF07e2lmKGFyZ3Vt
ZW50cy5sZW5ndGgpcmV0dXJuIGQ9ci5pc0Z1bmN0aW9uKGEpLHRoaXMuZWFjaChmdW5jdGlvbihj
KXt2YXIgZTsxPT09dGhpcy5ub2RlVHlwZSYmKGU9ZD9hLmNhbGwodGhpcyxjLHIodGhpcykudmFs
KCkpOmEsbnVsbD09ZT9lPSIiOiJudW1iZXIiPT10eXBlb2YgZT9lKz0iIjpyLmlzQXJyYXkoZSkm
JihlPXIubWFwKGUsZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWE/IiI6YSsiIn0pKSxiPXIudmFs
SG9va3NbdGhpcy50eXBlXXx8ci52YWxIb29rc1t0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCld
LGImJiJzZXQiaW4gYiYmdm9pZCAwIT09Yi5zZXQodGhpcyxlLCJ2YWx1ZSIpfHwodGhpcy52YWx1
ZT1lKSl9KTtpZihlKXJldHVybiBiPXIudmFsSG9va3NbZS50eXBlXXx8ci52YWxIb29rc1tlLm5v
ZGVOYW1lLnRvTG93ZXJDYXNlKCldLGImJiJnZXQiaW4gYiYmdm9pZCAwIT09KGM9Yi5nZXQoZSwi
dmFsdWUiKSk/YzooYz1lLnZhbHVlLCJzdHJpbmciPT10eXBlb2YgYz9jLnJlcGxhY2Uob2IsIiIp
Om51bGw9PWM/IiI6Yyl9fX0pLHIuZXh0ZW5kKHt2YWxIb29rczp7b3B0aW9uOntnZXQ6ZnVuY3Rp
b24oYSl7dmFyIGI9ci5maW5kLmF0dHIoYSwidmFsdWUiKTtyZXR1cm4gbnVsbCE9Yj9iOm1iKHIu
dGV4dChhKSl9fSxzZWxlY3Q6e2dldDpmdW5jdGlvbihhKXt2YXIgYixjLGQsZT1hLm9wdGlvbnMs
Zj1hLnNlbGVjdGVkSW5kZXgsZz0ic2VsZWN0LW9uZSI9PT1hLnR5cGUsaD1nP251bGw6W10saT1n
P2YrMTplLmxlbmd0aDtmb3IoZD1mPDA/aTpnP2Y6MDtkPGk7ZCsrKWlmKGM9ZVtkXSwoYy5zZWxl
Y3RlZHx8ZD09PWYpJiYhYy5kaXNhYmxlZCYmKCFjLnBhcmVudE5vZGUuZGlzYWJsZWR8fCFyLm5v
ZGVOYW1lKGMucGFyZW50Tm9kZSwib3B0Z3JvdXAiKSkpe2lmKGI9cihjKS52YWwoKSxnKXJldHVy
biBiO2gucHVzaChiKX1yZXR1cm4gaH0sc2V0OmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlPWEub3B0
aW9ucyxmPXIubWFrZUFycmF5KGIpLGc9ZS5sZW5ndGg7d2hpbGUoZy0tKWQ9ZVtnXSwoZC5zZWxl
Y3RlZD1yLmluQXJyYXkoci52YWxIb29rcy5vcHRpb24uZ2V0KGQpLGYpPi0xKSYmKGM9ITApO3Jl
dHVybiBjfHwoYS5zZWxlY3RlZEluZGV4PS0xKSxmfX19fSksci5lYWNoKFsicmFkaW8iLCJjaGVj
a2JveCJdLGZ1bmN0aW9uKCl7ci52YWxIb29rc1t0aGlzXT17c2V0OmZ1bmN0aW9uKGEsYil7aWYo
ci5pc0FycmF5KGIpKXJldHVybiBhLmNoZWNrZWQ9ci5pbkFycmF5KHIoYSkudmFsKCksYik+LTF9
fSxvLmNoZWNrT258fChyLnZhbEhvb2tzW3RoaXNdLmdldD1mdW5jdGlvbihhKXtyZXR1cm4gbnVs
bD09PWEuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpPyJvbiI6YS52YWx1ZX0pfSk7dmFyIHBiPS9eKD86
Zm9jdXNpbmZvY3VzfGZvY3Vzb3V0Ymx1cikkLztyLmV4dGVuZChyLmV2ZW50LHt0cmlnZ2VyOmZ1
bmN0aW9uKGIsYyxlLGYpe3ZhciBnLGgsaSxqLGssbSxuLG89W2V8fGRdLHA9bC5jYWxsKGIsInR5
cGUiKT9iLnR5cGU6YixxPWwuY2FsbChiLCJuYW1lc3BhY2UiKT9iLm5hbWVzcGFjZS5zcGxpdCgi
LiIpOltdO2lmKGg9aT1lPWV8fGQsMyE9PWUubm9kZVR5cGUmJjghPT1lLm5vZGVUeXBlJiYhcGIu
dGVzdChwK3IuZXZlbnQudHJpZ2dlcmVkKSYmKHAuaW5kZXhPZigiLiIpPi0xJiYocT1wLnNwbGl0
KCIuIikscD1xLnNoaWZ0KCkscS5zb3J0KCkpLGs9cC5pbmRleE9mKCI6Iik8MCYmIm9uIitwLGI9
YltyLmV4cGFuZG9dP2I6bmV3IHIuRXZlbnQocCwib2JqZWN0Ij09dHlwZW9mIGImJmIpLGIuaXNU
cmlnZ2VyPWY/MjozLGIubmFtZXNwYWNlPXEuam9pbigiLiIpLGIucm5hbWVzcGFjZT1iLm5hbWVz
cGFjZT9uZXcgUmVnRXhwKCIoXnxcXC4pIitxLmpvaW4oIlxcLig/Oi4qXFwufCkiKSsiKFxcLnwk
KSIpOm51bGwsYi5yZXN1bHQ9dm9pZCAwLGIudGFyZ2V0fHwoYi50YXJnZXQ9ZSksYz1udWxsPT1j
P1tiXTpyLm1ha2VBcnJheShjLFtiXSksbj1yLmV2ZW50LnNwZWNpYWxbcF18fHt9LGZ8fCFuLnRy
aWdnZXJ8fG4udHJpZ2dlci5hcHBseShlLGMpIT09ITEpKXtpZighZiYmIW4ubm9CdWJibGUmJiFy
LmlzV2luZG93KGUpKXtmb3Ioaj1uLmRlbGVnYXRlVHlwZXx8cCxwYi50ZXN0KGorcCl8fChoPWgu
cGFyZW50Tm9kZSk7aDtoPWgucGFyZW50Tm9kZSlvLnB1c2goaCksaT1oO2k9PT0oZS5vd25lckRv
Y3VtZW50fHxkKSYmby5wdXNoKGkuZGVmYXVsdFZpZXd8fGkucGFyZW50V2luZG93fHxhKX1nPTA7
d2hpbGUoKGg9b1tnKytdKSYmIWIuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSliLnR5cGU9Zz4xP2o6
bi5iaW5kVHlwZXx8cCxtPShWLmdldChoLCJldmVudHMiKXx8e30pW2IudHlwZV0mJlYuZ2V0KGgs
ImhhbmRsZSIpLG0mJm0uYXBwbHkoaCxjKSxtPWsmJmhba10sbSYmbS5hcHBseSYmVChoKSYmKGIu
cmVzdWx0PW0uYXBwbHkoaCxjKSxiLnJlc3VsdD09PSExJiZiLnByZXZlbnREZWZhdWx0KCkpO3Jl
dHVybiBiLnR5cGU9cCxmfHxiLmlzRGVmYXVsdFByZXZlbnRlZCgpfHxuLl9kZWZhdWx0JiZuLl9k
ZWZhdWx0LmFwcGx5KG8ucG9wKCksYykhPT0hMXx8IVQoZSl8fGsmJnIuaXNGdW5jdGlvbihlW3Bd
KSYmIXIuaXNXaW5kb3coZSkmJihpPWVba10saSYmKGVba109bnVsbCksci5ldmVudC50cmlnZ2Vy
ZWQ9cCxlW3BdKCksci5ldmVudC50cmlnZ2VyZWQ9dm9pZCAwLGkmJihlW2tdPWkpKSxiLnJlc3Vs
dH19LHNpbXVsYXRlOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1yLmV4dGVuZChuZXcgci5FdmVudCxj
LHt0eXBlOmEsaXNTaW11bGF0ZWQ6ITB9KTtyLmV2ZW50LnRyaWdnZXIoZCxudWxsLGIpfX0pLHIu
Zm4uZXh0ZW5kKHt0cmlnZ2VyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlv
bigpe3IuZXZlbnQudHJpZ2dlcihhLGIsdGhpcyl9KX0sdHJpZ2dlckhhbmRsZXI6ZnVuY3Rpb24o
YSxiKXt2YXIgYz10aGlzWzBdO2lmKGMpcmV0dXJuIHIuZXZlbnQudHJpZ2dlcihhLGIsYywhMCl9
fSksci5lYWNoKCJibHVyIGZvY3VzIGZvY3VzaW4gZm9jdXNvdXQgcmVzaXplIHNjcm9sbCBjbGlj
ayBkYmxjbGljayBtb3VzZWRvd24gbW91c2V1cCBtb3VzZW1vdmUgbW91c2VvdmVyIG1vdXNlb3V0
IG1vdXNlZW50ZXIgbW91c2VsZWF2ZSBjaGFuZ2Ugc2VsZWN0IHN1Ym1pdCBrZXlkb3duIGtleXBy
ZXNzIGtleXVwIGNvbnRleHRtZW51Ii5zcGxpdCgiICIpLGZ1bmN0aW9uKGEsYil7ci5mbltiXT1m
dW5jdGlvbihhLGMpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjA/dGhpcy5vbihiLG51bGwsYSxj
KTp0aGlzLnRyaWdnZXIoYil9fSksci5mbi5leHRlbmQoe2hvdmVyOmZ1bmN0aW9uKGEsYil7cmV0
dXJuIHRoaXMubW91c2VlbnRlcihhKS5tb3VzZWxlYXZlKGJ8fGEpfX0pLG8uZm9jdXNpbj0ib25m
b2N1c2luImluIGEsby5mb2N1c2lufHxyLmVhY2goe2ZvY3VzOiJmb2N1c2luIixibHVyOiJmb2N1
c291dCJ9LGZ1bmN0aW9uKGEsYil7dmFyIGM9ZnVuY3Rpb24oYSl7ci5ldmVudC5zaW11bGF0ZShi
LGEudGFyZ2V0LHIuZXZlbnQuZml4KGEpKX07ci5ldmVudC5zcGVjaWFsW2JdPXtzZXR1cDpmdW5j
dGlvbigpe3ZhciBkPXRoaXMub3duZXJEb2N1bWVudHx8dGhpcyxlPVYuYWNjZXNzKGQsYik7ZXx8
ZC5hZGRFdmVudExpc3RlbmVyKGEsYywhMCksVi5hY2Nlc3MoZCxiLChlfHwwKSsxKX0sdGVhcmRv
d246ZnVuY3Rpb24oKXt2YXIgZD10aGlzLm93bmVyRG9jdW1lbnR8fHRoaXMsZT1WLmFjY2Vzcyhk
LGIpLTE7ZT9WLmFjY2VzcyhkLGIsZSk6KGQucmVtb3ZlRXZlbnRMaXN0ZW5lcihhLGMsITApLFYu
cmVtb3ZlKGQsYikpfX19KTt2YXIgcWI9YS5sb2NhdGlvbixyYj1yLm5vdygpLHNiPS9cPy87ci5w
YXJzZVhNTD1mdW5jdGlvbihiKXt2YXIgYztpZighYnx8InN0cmluZyIhPXR5cGVvZiBiKXJldHVy
biBudWxsO3RyeXtjPShuZXcgYS5ET01QYXJzZXIpLnBhcnNlRnJvbVN0cmluZyhiLCJ0ZXh0L3ht
bCIpfWNhdGNoKGQpe2M9dm9pZCAwfXJldHVybiBjJiYhYy5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
cGFyc2VyZXJyb3IiKS5sZW5ndGh8fHIuZXJyb3IoIkludmFsaWQgWE1MOiAiK2IpLGN9O3ZhciB0
Yj0vXFtcXSQvLHViPS9ccj9cbi9nLHZiPS9eKD86c3VibWl0fGJ1dHRvbnxpbWFnZXxyZXNldHxm
aWxlKSQvaSx3Yj0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxrZXlnZW4pL2k7ZnVuY3Rpb24g
eGIoYSxiLGMsZCl7dmFyIGU7aWYoci5pc0FycmF5KGIpKXIuZWFjaChiLGZ1bmN0aW9uKGIsZSl7
Y3x8dGIudGVzdChhKT9kKGEsZSk6eGIoYSsiWyIrKCJvYmplY3QiPT10eXBlb2YgZSYmbnVsbCE9
ZT9iOiIiKSsiXSIsZSxjLGQpfSk7ZWxzZSBpZihjfHwib2JqZWN0IiE9PXIudHlwZShiKSlkKGEs
Yik7ZWxzZSBmb3IoZSBpbiBiKXhiKGErIlsiK2UrIl0iLGJbZV0sYyxkKX1yLnBhcmFtPWZ1bmN0
aW9uKGEsYil7dmFyIGMsZD1bXSxlPWZ1bmN0aW9uKGEsYil7dmFyIGM9ci5pc0Z1bmN0aW9uKGIp
P2IoKTpiO2RbZC5sZW5ndGhdPWVuY29kZVVSSUNvbXBvbmVudChhKSsiPSIrZW5jb2RlVVJJQ29t
cG9uZW50KG51bGw9PWM/IiI6Yyl9O2lmKHIuaXNBcnJheShhKXx8YS5qcXVlcnkmJiFyLmlzUGxh
aW5PYmplY3QoYSkpci5lYWNoKGEsZnVuY3Rpb24oKXtlKHRoaXMubmFtZSx0aGlzLnZhbHVlKX0p
O2Vsc2UgZm9yKGMgaW4gYSl4YihjLGFbY10sYixlKTtyZXR1cm4gZC5qb2luKCImIil9LHIuZm4u
ZXh0ZW5kKHtzZXJpYWxpemU6ZnVuY3Rpb24oKXtyZXR1cm4gci5wYXJhbSh0aGlzLnNlcmlhbGl6
ZUFycmF5KCkpfSxzZXJpYWxpemVBcnJheTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5j
dGlvbigpe3ZhciBhPXIucHJvcCh0aGlzLCJlbGVtZW50cyIpO3JldHVybiBhP3IubWFrZUFycmF5
KGEpOnRoaXN9KS5maWx0ZXIoZnVuY3Rpb24oKXt2YXIgYT10aGlzLnR5cGU7cmV0dXJuIHRoaXMu
bmFtZSYmIXIodGhpcykuaXMoIjpkaXNhYmxlZCIpJiZ3Yi50ZXN0KHRoaXMubm9kZU5hbWUpJiYh
dmIudGVzdChhKSYmKHRoaXMuY2hlY2tlZHx8IWlhLnRlc3QoYSkpfSkubWFwKGZ1bmN0aW9uKGEs
Yil7dmFyIGM9cih0aGlzKS52YWwoKTtyZXR1cm4gbnVsbD09Yz9udWxsOnIuaXNBcnJheShjKT9y
Lm1hcChjLGZ1bmN0aW9uKGEpe3JldHVybntuYW1lOmIubmFtZSx2YWx1ZTphLnJlcGxhY2UodWIs
IlxyXG4iKX19KTp7bmFtZTpiLm5hbWUsdmFsdWU6Yy5yZXBsYWNlKHViLCJcclxuIil9fSkuZ2V0
KCl9fSk7dmFyIHliPS8lMjAvZyx6Yj0vIy4qJC8sQWI9LyhbPyZdKV89W14mXSovLEJiPS9eKC4q
Pyk6WyBcdF0qKFteXHJcbl0qKSQvZ20sQ2I9L14oPzphYm91dHxhcHB8YXBwLXN0b3JhZ2V8List
ZXh0ZW5zaW9ufGZpbGV8cmVzfHdpZGdldCk6JC8sRGI9L14oPzpHRVR8SEVBRCkkLyxFYj0vXlwv
XC8vLEZiPXt9LEdiPXt9LEhiPSIqLyIuY29uY2F0KCIqIiksSWI9ZC5jcmVhdGVFbGVtZW50KCJh
Iik7SWIuaHJlZj1xYi5ocmVmO2Z1bmN0aW9uIEpiKGEpe3JldHVybiBmdW5jdGlvbihiLGMpeyJz
dHJpbmciIT10eXBlb2YgYiYmKGM9YixiPSIqIik7dmFyIGQsZT0wLGY9Yi50b0xvd2VyQ2FzZSgp
Lm1hdGNoKEspfHxbXTtpZihyLmlzRnVuY3Rpb24oYykpd2hpbGUoZD1mW2UrK10pIisiPT09ZFsw
XT8oZD1kLnNsaWNlKDEpfHwiKiIsKGFbZF09YVtkXXx8W10pLnVuc2hpZnQoYykpOihhW2RdPWFb
ZF18fFtdKS5wdXNoKGMpfX1mdW5jdGlvbiBLYihhLGIsYyxkKXt2YXIgZT17fSxmPWE9PT1HYjtm
dW5jdGlvbiBnKGgpe3ZhciBpO3JldHVybiBlW2hdPSEwLHIuZWFjaChhW2hdfHxbXSxmdW5jdGlv
bihhLGgpe3ZhciBqPWgoYixjLGQpO3JldHVybiJzdHJpbmciIT10eXBlb2Yganx8Znx8ZVtqXT9m
PyEoaT1qKTp2b2lkIDA6KGIuZGF0YVR5cGVzLnVuc2hpZnQoaiksZyhqKSwhMSl9KSxpfXJldHVy
biBnKGIuZGF0YVR5cGVzWzBdKXx8IWVbIioiXSYmZygiKiIpfWZ1bmN0aW9uIExiKGEsYil7dmFy
IGMsZCxlPXIuYWpheFNldHRpbmdzLmZsYXRPcHRpb25zfHx7fTtmb3IoYyBpbiBiKXZvaWQgMCE9
PWJbY10mJigoZVtjXT9hOmR8fChkPXt9KSlbY109YltjXSk7cmV0dXJuIGQmJnIuZXh0ZW5kKCEw
LGEsZCksYX1mdW5jdGlvbiBNYihhLGIsYyl7dmFyIGQsZSxmLGcsaD1hLmNvbnRlbnRzLGk9YS5k
YXRhVHlwZXM7d2hpbGUoIioiPT09aVswXSlpLnNoaWZ0KCksdm9pZCAwPT09ZCYmKGQ9YS5taW1l
VHlwZXx8Yi5nZXRSZXNwb25zZUhlYWRlcigiQ29udGVudC1UeXBlIikpO2lmKGQpZm9yKGUgaW4g
aClpZihoW2VdJiZoW2VdLnRlc3QoZCkpe2kudW5zaGlmdChlKTticmVha31pZihpWzBdaW4gYylm
PWlbMF07ZWxzZXtmb3IoZSBpbiBjKXtpZighaVswXXx8YS5jb252ZXJ0ZXJzW2UrIiAiK2lbMF1d
KXtmPWU7YnJlYWt9Z3x8KGc9ZSl9Zj1mfHxnfWlmKGYpcmV0dXJuIGYhPT1pWzBdJiZpLnVuc2hp
ZnQoZiksY1tmXX1mdW5jdGlvbiBOYihhLGIsYyxkKXt2YXIgZSxmLGcsaCxpLGo9e30saz1hLmRh
dGFUeXBlcy5zbGljZSgpO2lmKGtbMV0pZm9yKGcgaW4gYS5jb252ZXJ0ZXJzKWpbZy50b0xvd2Vy
Q2FzZSgpXT1hLmNvbnZlcnRlcnNbZ107Zj1rLnNoaWZ0KCk7d2hpbGUoZilpZihhLnJlc3BvbnNl
RmllbGRzW2ZdJiYoY1thLnJlc3BvbnNlRmllbGRzW2ZdXT1iKSwhaSYmZCYmYS5kYXRhRmlsdGVy
JiYoYj1hLmRhdGFGaWx0ZXIoYixhLmRhdGFUeXBlKSksaT1mLGY9ay5zaGlmdCgpKWlmKCIqIj09
PWYpZj1pO2Vsc2UgaWYoIioiIT09aSYmaSE9PWYpe2lmKGc9altpKyIgIitmXXx8alsiKiAiK2Zd
LCFnKWZvcihlIGluIGopaWYoaD1lLnNwbGl0KCIgIiksaFsxXT09PWYmJihnPWpbaSsiICIraFsw
XV18fGpbIiogIitoWzBdXSkpe2c9PT0hMD9nPWpbZV06altlXSE9PSEwJiYoZj1oWzBdLGsudW5z
aGlmdChoWzFdKSk7YnJlYWt9aWYoZyE9PSEwKWlmKGcmJmFbInRocm93cyJdKWI9ZyhiKTtlbHNl
IHRyeXtiPWcoYil9Y2F0Y2gobCl7cmV0dXJue3N0YXRlOiJwYXJzZXJlcnJvciIsZXJyb3I6Zz9s
OiJObyBjb252ZXJzaW9uIGZyb20gIitpKyIgdG8gIitmfX19cmV0dXJue3N0YXRlOiJzdWNjZXNz
IixkYXRhOmJ9fXIuZXh0ZW5kKHthY3RpdmU6MCxsYXN0TW9kaWZpZWQ6e30sZXRhZzp7fSxhamF4
U2V0dGluZ3M6e3VybDpxYi5ocmVmLHR5cGU6IkdFVCIsaXNMb2NhbDpDYi50ZXN0KHFiLnByb3Rv
Y29sKSxnbG9iYWw6ITAscHJvY2Vzc0RhdGE6ITAsYXN5bmM6ITAsY29udGVudFR5cGU6ImFwcGxp
Y2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD1VVEYtOCIsYWNjZXB0czp7Iioi
OkhiLHRleHQ6InRleHQvcGxhaW4iLGh0bWw6InRleHQvaHRtbCIseG1sOiJhcHBsaWNhdGlvbi94
bWwsIHRleHQveG1sIixqc29uOiJhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L2phdmFzY3JpcHQifSxj
b250ZW50czp7eG1sOi9cYnhtbFxiLyxodG1sOi9cYmh0bWwvLGpzb246L1xianNvblxiL30scmVz
cG9uc2VGaWVsZHM6e3htbDoicmVzcG9uc2VYTUwiLHRleHQ6InJlc3BvbnNlVGV4dCIsanNvbjoi
cmVzcG9uc2VKU09OIn0sY29udmVydGVyczp7IiogdGV4dCI6U3RyaW5nLCJ0ZXh0IGh0bWwiOiEw
LCJ0ZXh0IGpzb24iOkpTT04ucGFyc2UsInRleHQgeG1sIjpyLnBhcnNlWE1MfSxmbGF0T3B0aW9u
czp7dXJsOiEwLGNvbnRleHQ6ITB9fSxhamF4U2V0dXA6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYj9M
YihMYihhLHIuYWpheFNldHRpbmdzKSxiKTpMYihyLmFqYXhTZXR0aW5ncyxhKX0sYWpheFByZWZp
bHRlcjpKYihGYiksYWpheFRyYW5zcG9ydDpKYihHYiksYWpheDpmdW5jdGlvbihiLGMpeyJvYmpl
Y3QiPT10eXBlb2YgYiYmKGM9YixiPXZvaWQgMCksYz1jfHx7fTt2YXIgZSxmLGcsaCxpLGosayxs
LG0sbixvPXIuYWpheFNldHVwKHt9LGMpLHA9by5jb250ZXh0fHxvLHE9by5jb250ZXh0JiYocC5u
b2RlVHlwZXx8cC5qcXVlcnkpP3IocCk6ci5ldmVudCxzPXIuRGVmZXJyZWQoKSx0PXIuQ2FsbGJh
Y2tzKCJvbmNlIG1lbW9yeSIpLHU9by5zdGF0dXNDb2RlfHx7fSx2PXt9LHc9e30seD0iY2FuY2Vs
ZWQiLHk9e3JlYWR5U3RhdGU6MCxnZXRSZXNwb25zZUhlYWRlcjpmdW5jdGlvbihhKXt2YXIgYjtp
ZihrKXtpZighaCl7aD17fTt3aGlsZShiPUJiLmV4ZWMoZykpaFtiWzFdLnRvTG93ZXJDYXNlKCld
PWJbMl19Yj1oW2EudG9Mb3dlckNhc2UoKV19cmV0dXJuIG51bGw9PWI/bnVsbDpifSxnZXRBbGxS
ZXNwb25zZUhlYWRlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gaz9nOm51bGx9LHNldFJlcXVlc3RIZWFk
ZXI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbnVsbD09ayYmKGE9d1thLnRvTG93ZXJDYXNlKCldPXdb
YS50b0xvd2VyQ2FzZSgpXXx8YSx2W2FdPWIpLHRoaXN9LG92ZXJyaWRlTWltZVR5cGU6ZnVuY3Rp
b24oYSl7cmV0dXJuIG51bGw9PWsmJihvLm1pbWVUeXBlPWEpLHRoaXN9LHN0YXR1c0NvZGU6ZnVu
Y3Rpb24oYSl7dmFyIGI7aWYoYSlpZihrKXkuYWx3YXlzKGFbeS5zdGF0dXNdKTtlbHNlIGZvcihi
IGluIGEpdVtiXT1bdVtiXSxhW2JdXTtyZXR1cm4gdGhpc30sYWJvcnQ6ZnVuY3Rpb24oYSl7dmFy
IGI9YXx8eDtyZXR1cm4gZSYmZS5hYm9ydChiKSxBKDAsYiksdGhpc319O2lmKHMucHJvbWlzZSh5
KSxvLnVybD0oKGJ8fG8udXJsfHxxYi5ocmVmKSsiIikucmVwbGFjZShFYixxYi5wcm90b2NvbCsi
Ly8iKSxvLnR5cGU9Yy5tZXRob2R8fGMudHlwZXx8by5tZXRob2R8fG8udHlwZSxvLmRhdGFUeXBl
cz0oby5kYXRhVHlwZXx8IioiKS50b0xvd2VyQ2FzZSgpLm1hdGNoKEspfHxbIiJdLG51bGw9PW8u
Y3Jvc3NEb21haW4pe2o9ZC5jcmVhdGVFbGVtZW50KCJhIik7dHJ5e2ouaHJlZj1vLnVybCxqLmhy
ZWY9ai5ocmVmLG8uY3Jvc3NEb21haW49SWIucHJvdG9jb2wrIi8vIitJYi5ob3N0IT1qLnByb3Rv
Y29sKyIvLyIrai5ob3N0fWNhdGNoKHope28uY3Jvc3NEb21haW49ITB9fWlmKG8uZGF0YSYmby5w
cm9jZXNzRGF0YSYmInN0cmluZyIhPXR5cGVvZiBvLmRhdGEmJihvLmRhdGE9ci5wYXJhbShvLmRh
dGEsby50cmFkaXRpb25hbCkpLEtiKEZiLG8sYyx5KSxrKXJldHVybiB5O2w9ci5ldmVudCYmby5n
bG9iYWwsbCYmMD09PXIuYWN0aXZlKysmJnIuZXZlbnQudHJpZ2dlcigiYWpheFN0YXJ0Iiksby50
eXBlPW8udHlwZS50b1VwcGVyQ2FzZSgpLG8uaGFzQ29udGVudD0hRGIudGVzdChvLnR5cGUpLGY9
by51cmwucmVwbGFjZSh6YiwiIiksby5oYXNDb250ZW50P28uZGF0YSYmby5wcm9jZXNzRGF0YSYm
MD09PShvLmNvbnRlbnRUeXBlfHwiIikuaW5kZXhPZigiYXBwbGljYXRpb24veC13d3ctZm9ybS11
cmxlbmNvZGVkIikmJihvLmRhdGE9by5kYXRhLnJlcGxhY2UoeWIsIisiKSk6KG49by51cmwuc2xp
Y2UoZi5sZW5ndGgpLG8uZGF0YSYmKGYrPShzYi50ZXN0KGYpPyImIjoiPyIpK28uZGF0YSxkZWxl
dGUgby5kYXRhKSxvLmNhY2hlPT09ITEmJihmPWYucmVwbGFjZShBYiwiJDEiKSxuPShzYi50ZXN0
KGYpPyImIjoiPyIpKyJfPSIrcmIrKyArbiksby51cmw9ZituKSxvLmlmTW9kaWZpZWQmJihyLmxh
c3RNb2RpZmllZFtmXSYmeS5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1Nb2RpZmllZC1TaW5jZSIsci5s
YXN0TW9kaWZpZWRbZl0pLHIuZXRhZ1tmXSYmeS5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1Ob25lLU1h
dGNoIixyLmV0YWdbZl0pKSwoby5kYXRhJiZvLmhhc0NvbnRlbnQmJm8uY29udGVudFR5cGUhPT0h
MXx8Yy5jb250ZW50VHlwZSkmJnkuc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC1UeXBlIixvLmNv
bnRlbnRUeXBlKSx5LnNldFJlcXVlc3RIZWFkZXIoIkFjY2VwdCIsby5kYXRhVHlwZXNbMF0mJm8u
YWNjZXB0c1tvLmRhdGFUeXBlc1swXV0/by5hY2NlcHRzW28uZGF0YVR5cGVzWzBdXSsoIioiIT09
by5kYXRhVHlwZXNbMF0/IiwgIitIYisiOyBxPTAuMDEiOiIiKTpvLmFjY2VwdHNbIioiXSk7Zm9y
KG0gaW4gby5oZWFkZXJzKXkuc2V0UmVxdWVzdEhlYWRlcihtLG8uaGVhZGVyc1ttXSk7aWYoby5i
ZWZvcmVTZW5kJiYoby5iZWZvcmVTZW5kLmNhbGwocCx5LG8pPT09ITF8fGspKXJldHVybiB5LmFi
b3J0KCk7aWYoeD0iYWJvcnQiLHQuYWRkKG8uY29tcGxldGUpLHkuZG9uZShvLnN1Y2Nlc3MpLHku
ZmFpbChvLmVycm9yKSxlPUtiKEdiLG8sYyx5KSl7aWYoeS5yZWFkeVN0YXRlPTEsbCYmcS50cmln
Z2VyKCJhamF4U2VuZCIsW3ksb10pLGspcmV0dXJuIHk7by5hc3luYyYmby50aW1lb3V0PjAmJihp
PWEuc2V0VGltZW91dChmdW5jdGlvbigpe3kuYWJvcnQoInRpbWVvdXQiKX0sby50aW1lb3V0KSk7
dHJ5e2s9ITEsZS5zZW5kKHYsQSl9Y2F0Y2goeil7aWYoayl0aHJvdyB6O0EoLTEseil9fWVsc2Ug
QSgtMSwiTm8gVHJhbnNwb3J0Iik7ZnVuY3Rpb24gQShiLGMsZCxoKXt2YXIgaixtLG4sdix3LHg9
YztrfHwoaz0hMCxpJiZhLmNsZWFyVGltZW91dChpKSxlPXZvaWQgMCxnPWh8fCIiLHkucmVhZHlT
dGF0ZT1iPjA/NDowLGo9Yj49MjAwJiZiPDMwMHx8MzA0PT09YixkJiYodj1NYihvLHksZCkpLHY9
TmIobyx2LHksaiksaj8oby5pZk1vZGlmaWVkJiYodz15LmdldFJlc3BvbnNlSGVhZGVyKCJMYXN0
LU1vZGlmaWVkIiksdyYmKHIubGFzdE1vZGlmaWVkW2ZdPXcpLHc9eS5nZXRSZXNwb25zZUhlYWRl
cigiZXRhZyIpLHcmJihyLmV0YWdbZl09dykpLDIwND09PWJ8fCJIRUFEIj09PW8udHlwZT94PSJu
b2NvbnRlbnQiOjMwND09PWI/eD0ibm90bW9kaWZpZWQiOih4PXYuc3RhdGUsbT12LmRhdGEsbj12
LmVycm9yLGo9IW4pKToobj14LCFiJiZ4fHwoeD0iZXJyb3IiLGI8MCYmKGI9MCkpKSx5LnN0YXR1
cz1iLHkuc3RhdHVzVGV4dD0oY3x8eCkrIiIsaj9zLnJlc29sdmVXaXRoKHAsW20seCx5XSk6cy5y
ZWplY3RXaXRoKHAsW3kseCxuXSkseS5zdGF0dXNDb2RlKHUpLHU9dm9pZCAwLGwmJnEudHJpZ2dl
cihqPyJhamF4U3VjY2VzcyI6ImFqYXhFcnJvciIsW3ksbyxqP206bl0pLHQuZmlyZVdpdGgocCxb
eSx4XSksbCYmKHEudHJpZ2dlcigiYWpheENvbXBsZXRlIixbeSxvXSksLS1yLmFjdGl2ZXx8ci5l
dmVudC50cmlnZ2VyKCJhamF4U3RvcCIpKSl9cmV0dXJuIHl9LGdldEpTT046ZnVuY3Rpb24oYSxi
LGMpe3JldHVybiByLmdldChhLGIsYywianNvbiIpfSxnZXRTY3JpcHQ6ZnVuY3Rpb24oYSxiKXty
ZXR1cm4gci5nZXQoYSx2b2lkIDAsYiwic2NyaXB0Iil9fSksci5lYWNoKFsiZ2V0IiwicG9zdCJd
LGZ1bmN0aW9uKGEsYil7cltiXT1mdW5jdGlvbihhLGMsZCxlKXtyZXR1cm4gci5pc0Z1bmN0aW9u
KGMpJiYoZT1lfHxkLGQ9YyxjPXZvaWQgMCksci5hamF4KHIuZXh0ZW5kKHt1cmw6YSx0eXBlOmIs
ZGF0YVR5cGU6ZSxkYXRhOmMsc3VjY2VzczpkfSxyLmlzUGxhaW5PYmplY3QoYSkmJmEpKX19KSxy
Ll9ldmFsVXJsPWZ1bmN0aW9uKGEpe3JldHVybiByLmFqYXgoe3VybDphLHR5cGU6IkdFVCIsZGF0
YVR5cGU6InNjcmlwdCIsY2FjaGU6ITAsYXN5bmM6ITEsZ2xvYmFsOiExLCJ0aHJvd3MiOiEwfSl9
LHIuZm4uZXh0ZW5kKHt3cmFwQWxsOmZ1bmN0aW9uKGEpe3ZhciBiO3JldHVybiB0aGlzWzBdJiYo
ci5pc0Z1bmN0aW9uKGEpJiYoYT1hLmNhbGwodGhpc1swXSkpLGI9cihhLHRoaXNbMF0ub3duZXJE
b2N1bWVudCkuZXEoMCkuY2xvbmUoITApLHRoaXNbMF0ucGFyZW50Tm9kZSYmYi5pbnNlcnRCZWZv
cmUodGhpc1swXSksYi5tYXAoZnVuY3Rpb24oKXt2YXIgYT10aGlzO3doaWxlKGEuZmlyc3RFbGVt
ZW50Q2hpbGQpYT1hLmZpcnN0RWxlbWVudENoaWxkO3JldHVybiBhfSkuYXBwZW5kKHRoaXMpKSx0
aGlzfSx3cmFwSW5uZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIHIuaXNGdW5jdGlvbihhKT90aGlzLmVh
Y2goZnVuY3Rpb24oYil7cih0aGlzKS53cmFwSW5uZXIoYS5jYWxsKHRoaXMsYikpfSk6dGhpcy5l
YWNoKGZ1bmN0aW9uKCl7dmFyIGI9cih0aGlzKSxjPWIuY29udGVudHMoKTtjLmxlbmd0aD9jLndy
YXBBbGwoYSk6Yi5hcHBlbmQoYSl9KX0sd3JhcDpmdW5jdGlvbihhKXt2YXIgYj1yLmlzRnVuY3Rp
b24oYSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihjKXtyKHRoaXMpLndyYXBBbGwoYj9hLmNh
bGwodGhpcyxjKTphKX0pfSx1bndyYXA6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucGFyZW50KGEp
Lm5vdCgiYm9keSIpLmVhY2goZnVuY3Rpb24oKXtyKHRoaXMpLnJlcGxhY2VXaXRoKHRoaXMuY2hp
bGROb2Rlcyl9KSx0aGlzfX0pLHIuZXhwci5wc2V1ZG9zLmhpZGRlbj1mdW5jdGlvbihhKXtyZXR1
cm4hci5leHByLnBzZXVkb3MudmlzaWJsZShhKX0sci5leHByLnBzZXVkb3MudmlzaWJsZT1mdW5j
dGlvbihhKXtyZXR1cm4hIShhLm9mZnNldFdpZHRofHxhLm9mZnNldEhlaWdodHx8YS5nZXRDbGll
bnRSZWN0cygpLmxlbmd0aCl9LHIuYWpheFNldHRpbmdzLnhocj1mdW5jdGlvbigpe3RyeXtyZXR1
cm4gbmV3IGEuWE1MSHR0cFJlcXVlc3R9Y2F0Y2goYil7fX07dmFyIE9iPXswOjIwMCwxMjIzOjIw
NH0sUGI9ci5hamF4U2V0dGluZ3MueGhyKCk7by5jb3JzPSEhUGImJiJ3aXRoQ3JlZGVudGlhbHMi
aW4gUGIsby5hamF4PVBiPSEhUGIsci5hamF4VHJhbnNwb3J0KGZ1bmN0aW9uKGIpe3ZhciBjLGQ7
aWYoby5jb3JzfHxQYiYmIWIuY3Jvc3NEb21haW4pcmV0dXJue3NlbmQ6ZnVuY3Rpb24oZSxmKXt2
YXIgZyxoPWIueGhyKCk7aWYoaC5vcGVuKGIudHlwZSxiLnVybCxiLmFzeW5jLGIudXNlcm5hbWUs
Yi5wYXNzd29yZCksYi54aHJGaWVsZHMpZm9yKGcgaW4gYi54aHJGaWVsZHMpaFtnXT1iLnhockZp
ZWxkc1tnXTtiLm1pbWVUeXBlJiZoLm92ZXJyaWRlTWltZVR5cGUmJmgub3ZlcnJpZGVNaW1lVHlw
ZShiLm1pbWVUeXBlKSxiLmNyb3NzRG9tYWlufHxlWyJYLVJlcXVlc3RlZC1XaXRoIl18fChlWyJY
LVJlcXVlc3RlZC1XaXRoIl09IlhNTEh0dHBSZXF1ZXN0Iik7Zm9yKGcgaW4gZSloLnNldFJlcXVl
c3RIZWFkZXIoZyxlW2ddKTtjPWZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbigpe2MmJihjPWQ9
aC5vbmxvYWQ9aC5vbmVycm9yPWgub25hYm9ydD1oLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLCJh
Ym9ydCI9PT1hP2guYWJvcnQoKToiZXJyb3IiPT09YT8ibnVtYmVyIiE9dHlwZW9mIGguc3RhdHVz
P2YoMCwiZXJyb3IiKTpmKGguc3RhdHVzLGguc3RhdHVzVGV4dCk6ZihPYltoLnN0YXR1c118fGgu
c3RhdHVzLGguc3RhdHVzVGV4dCwidGV4dCIhPT0oaC5yZXNwb25zZVR5cGV8fCJ0ZXh0Iil8fCJz
dHJpbmciIT10eXBlb2YgaC5yZXNwb25zZVRleHQ/e2JpbmFyeTpoLnJlc3BvbnNlfTp7dGV4dDpo
LnJlc3BvbnNlVGV4dH0saC5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSkpfX0saC5vbmxvYWQ9Yygp
LGQ9aC5vbmVycm9yPWMoImVycm9yIiksdm9pZCAwIT09aC5vbmFib3J0P2gub25hYm9ydD1kOmgu
b25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7ND09PWgucmVhZHlTdGF0ZSYmYS5zZXRUaW1l
b3V0KGZ1bmN0aW9uKCl7YyYmZCgpfSl9LGM9YygiYWJvcnQiKTt0cnl7aC5zZW5kKGIuaGFzQ29u
dGVudCYmYi5kYXRhfHxudWxsKX1jYXRjaChpKXtpZihjKXRocm93IGl9fSxhYm9ydDpmdW5jdGlv
bigpe2MmJmMoKX19fSksci5hamF4UHJlZmlsdGVyKGZ1bmN0aW9uKGEpe2EuY3Jvc3NEb21haW4m
JihhLmNvbnRlbnRzLnNjcmlwdD0hMSl9KSxyLmFqYXhTZXR1cCh7YWNjZXB0czp7c2NyaXB0OiJ0
ZXh0L2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2VjbWFz
Y3JpcHQsIGFwcGxpY2F0aW9uL3gtZWNtYXNjcmlwdCJ9LGNvbnRlbnRzOntzY3JpcHQ6L1xiKD86
amF2YXxlY21hKXNjcmlwdFxiL30sY29udmVydGVyczp7InRleHQgc2NyaXB0IjpmdW5jdGlvbihh
KXtyZXR1cm4gci5nbG9iYWxFdmFsKGEpLGF9fX0pLHIuYWpheFByZWZpbHRlcigic2NyaXB0Iixm
dW5jdGlvbihhKXt2b2lkIDA9PT1hLmNhY2hlJiYoYS5jYWNoZT0hMSksYS5jcm9zc0RvbWFpbiYm
KGEudHlwZT0iR0VUIil9KSxyLmFqYXhUcmFuc3BvcnQoInNjcmlwdCIsZnVuY3Rpb24oYSl7aWYo
YS5jcm9zc0RvbWFpbil7dmFyIGIsYztyZXR1cm57c2VuZDpmdW5jdGlvbihlLGYpe2I9cigiPHNj
cmlwdD4iKS5wcm9wKHtjaGFyc2V0OmEuc2NyaXB0Q2hhcnNldCxzcmM6YS51cmx9KS5vbigibG9h
ZCBlcnJvciIsYz1mdW5jdGlvbihhKXtiLnJlbW92ZSgpLGM9bnVsbCxhJiZmKCJlcnJvciI9PT1h
LnR5cGU/NDA0OjIwMCxhLnR5cGUpfSksZC5oZWFkLmFwcGVuZENoaWxkKGJbMF0pfSxhYm9ydDpm
dW5jdGlvbigpe2MmJmMoKX19fX0pO3ZhciBRYj1bXSxSYj0vKD0pXD8oPz0mfCQpfFw/XD8vO3Iu
YWpheFNldHVwKHtqc29ucDoiY2FsbGJhY2siLGpzb25wQ2FsbGJhY2s6ZnVuY3Rpb24oKXt2YXIg
YT1RYi5wb3AoKXx8ci5leHBhbmRvKyJfIityYisrO3JldHVybiB0aGlzW2FdPSEwLGF9fSksci5h
amF4UHJlZmlsdGVyKCJqc29uIGpzb25wIixmdW5jdGlvbihiLGMsZCl7dmFyIGUsZixnLGg9Yi5q
c29ucCE9PSExJiYoUmIudGVzdChiLnVybCk/InVybCI6InN0cmluZyI9PXR5cGVvZiBiLmRhdGEm
JjA9PT0oYi5jb250ZW50VHlwZXx8IiIpLmluZGV4T2YoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0t
dXJsZW5jb2RlZCIpJiZSYi50ZXN0KGIuZGF0YSkmJiJkYXRhIik7aWYoaHx8Impzb25wIj09PWIu
ZGF0YVR5cGVzWzBdKXJldHVybiBlPWIuanNvbnBDYWxsYmFjaz1yLmlzRnVuY3Rpb24oYi5qc29u
cENhbGxiYWNrKT9iLmpzb25wQ2FsbGJhY2soKTpiLmpzb25wQ2FsbGJhY2ssaD9iW2hdPWJbaF0u
cmVwbGFjZShSYiwiJDEiK2UpOmIuanNvbnAhPT0hMSYmKGIudXJsKz0oc2IudGVzdChiLnVybCk/
IiYiOiI/IikrYi5qc29ucCsiPSIrZSksYi5jb252ZXJ0ZXJzWyJzY3JpcHQganNvbiJdPWZ1bmN0
aW9uKCl7cmV0dXJuIGd8fHIuZXJyb3IoZSsiIHdhcyBub3QgY2FsbGVkIiksZ1swXX0sYi5kYXRh
VHlwZXNbMF09Impzb24iLGY9YVtlXSxhW2VdPWZ1bmN0aW9uKCl7Zz1hcmd1bWVudHN9LGQuYWx3
YXlzKGZ1bmN0aW9uKCl7dm9pZCAwPT09Zj9yKGEpLnJlbW92ZVByb3AoZSk6YVtlXT1mLGJbZV0m
JihiLmpzb25wQ2FsbGJhY2s9Yy5qc29ucENhbGxiYWNrLFFiLnB1c2goZSkpLGcmJnIuaXNGdW5j
dGlvbihmKSYmZihnWzBdKSxnPWY9dm9pZCAwfSksInNjcmlwdCJ9KSxvLmNyZWF0ZUhUTUxEb2N1
bWVudD1mdW5jdGlvbigpe3ZhciBhPWQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50
KCIiKS5ib2R5O3JldHVybiBhLmlubmVySFRNTD0iPGZvcm0+PC9mb3JtPjxmb3JtPjwvZm9ybT4i
LDI9PT1hLmNoaWxkTm9kZXMubGVuZ3RofSgpLHIucGFyc2VIVE1MPWZ1bmN0aW9uKGEsYixjKXtp
Zigic3RyaW5nIiE9dHlwZW9mIGEpcmV0dXJuW107ImJvb2xlYW4iPT10eXBlb2YgYiYmKGM9Yixi
PSExKTt2YXIgZSxmLGc7cmV0dXJuIGJ8fChvLmNyZWF0ZUhUTUxEb2N1bWVudD8oYj1kLmltcGxl
bWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgiIiksZT1iLmNyZWF0ZUVsZW1lbnQoImJhc2Ui
KSxlLmhyZWY9ZC5sb2NhdGlvbi5ocmVmLGIuaGVhZC5hcHBlbmRDaGlsZChlKSk6Yj1kKSxmPUIu
ZXhlYyhhKSxnPSFjJiZbXSxmP1tiLmNyZWF0ZUVsZW1lbnQoZlsxXSldOihmPXBhKFthXSxiLGcp
LGcmJmcubGVuZ3RoJiZyKGcpLnJlbW92ZSgpLHIubWVyZ2UoW10sZi5jaGlsZE5vZGVzKSl9LHIu
Zm4ubG9hZD1mdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmLGc9dGhpcyxoPWEuaW5kZXhPZigiICIp
O3JldHVybiBoPi0xJiYoZD1tYihhLnNsaWNlKGgpKSxhPWEuc2xpY2UoMCxoKSksci5pc0Z1bmN0
aW9uKGIpPyhjPWIsYj12b2lkIDApOmImJiJvYmplY3QiPT10eXBlb2YgYiYmKGU9IlBPU1QiKSxn
Lmxlbmd0aD4wJiZyLmFqYXgoe3VybDphLHR5cGU6ZXx8IkdFVCIsZGF0YVR5cGU6Imh0bWwiLGRh
dGE6Yn0pLmRvbmUoZnVuY3Rpb24oYSl7Zj1hcmd1bWVudHMsZy5odG1sKGQ/cigiPGRpdj4iKS5h
cHBlbmQoci5wYXJzZUhUTUwoYSkpLmZpbmQoZCk6YSl9KS5hbHdheXMoYyYmZnVuY3Rpb24oYSxi
KXtnLmVhY2goZnVuY3Rpb24oKXtjLmFwcGx5KHRoaXMsZnx8W2EucmVzcG9uc2VUZXh0LGIsYV0p
fSl9KSx0aGlzfSxyLmVhY2goWyJhamF4U3RhcnQiLCJhamF4U3RvcCIsImFqYXhDb21wbGV0ZSIs
ImFqYXhFcnJvciIsImFqYXhTdWNjZXNzIiwiYWpheFNlbmQiXSxmdW5jdGlvbihhLGIpe3IuZm5b
Yl09ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMub24oYixhKX19KSxyLmV4cHIucHNldWRvcy5hbmlt
YXRlZD1mdW5jdGlvbihhKXtyZXR1cm4gci5ncmVwKHIudGltZXJzLGZ1bmN0aW9uKGIpe3JldHVy
biBhPT09Yi5lbGVtfSkubGVuZ3RofTtmdW5jdGlvbiBTYihhKXtyZXR1cm4gci5pc1dpbmRvdyhh
KT9hOjk9PT1hLm5vZGVUeXBlJiZhLmRlZmF1bHRWaWV3fXIub2Zmc2V0PXtzZXRPZmZzZXQ6ZnVu
Y3Rpb24oYSxiLGMpe3ZhciBkLGUsZixnLGgsaSxqLGs9ci5jc3MoYSwicG9zaXRpb24iKSxsPXIo
YSksbT17fTsic3RhdGljIj09PWsmJihhLnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2ZSIpLGg9bC5v
ZmZzZXQoKSxmPXIuY3NzKGEsInRvcCIpLGk9ci5jc3MoYSwibGVmdCIpLGo9KCJhYnNvbHV0ZSI9
PT1rfHwiZml4ZWQiPT09aykmJihmK2kpLmluZGV4T2YoImF1dG8iKT4tMSxqPyhkPWwucG9zaXRp
b24oKSxnPWQudG9wLGU9ZC5sZWZ0KTooZz1wYXJzZUZsb2F0KGYpfHwwLGU9cGFyc2VGbG9hdChp
KXx8MCksci5pc0Z1bmN0aW9uKGIpJiYoYj1iLmNhbGwoYSxjLHIuZXh0ZW5kKHt9LGgpKSksbnVs
bCE9Yi50b3AmJihtLnRvcD1iLnRvcC1oLnRvcCtnKSxudWxsIT1iLmxlZnQmJihtLmxlZnQ9Yi5s
ZWZ0LWgubGVmdCtlKSwidXNpbmciaW4gYj9iLnVzaW5nLmNhbGwoYSxtKTpsLmNzcyhtKX19LHIu
Zm4uZXh0ZW5kKHtvZmZzZXQ6ZnVuY3Rpb24oYSl7aWYoYXJndW1lbnRzLmxlbmd0aClyZXR1cm4g
dm9pZCAwPT09YT90aGlzOnRoaXMuZWFjaChmdW5jdGlvbihiKXtyLm9mZnNldC5zZXRPZmZzZXQo
dGhpcyxhLGIpfSk7dmFyIGIsYyxkLGUsZj10aGlzWzBdO2lmKGYpcmV0dXJuIGYuZ2V0Q2xpZW50
UmVjdHMoKS5sZW5ndGg/KGQ9Zi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxkLndpZHRofHxkLmhl
aWdodD8oZT1mLm93bmVyRG9jdW1lbnQsYz1TYihlKSxiPWUuZG9jdW1lbnRFbGVtZW50LHt0b3A6
ZC50b3ArYy5wYWdlWU9mZnNldC1iLmNsaWVudFRvcCxsZWZ0OmQubGVmdCtjLnBhZ2VYT2Zmc2V0
LWIuY2xpZW50TGVmdH0pOmQpOnt0b3A6MCxsZWZ0OjB9fSxwb3NpdGlvbjpmdW5jdGlvbigpe2lm
KHRoaXNbMF0pe3ZhciBhLGIsYz10aGlzWzBdLGQ9e3RvcDowLGxlZnQ6MH07cmV0dXJuImZpeGVk
Ij09PXIuY3NzKGMsInBvc2l0aW9uIik/Yj1jLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOihhPXRo
aXMub2Zmc2V0UGFyZW50KCksYj10aGlzLm9mZnNldCgpLHIubm9kZU5hbWUoYVswXSwiaHRtbCIp
fHwoZD1hLm9mZnNldCgpKSxkPXt0b3A6ZC50b3Arci5jc3MoYVswXSwiYm9yZGVyVG9wV2lkdGgi
LCEwKSxsZWZ0OmQubGVmdCtyLmNzcyhhWzBdLCJib3JkZXJMZWZ0V2lkdGgiLCEwKX0pLHt0b3A6
Yi50b3AtZC50b3Atci5jc3MoYywibWFyZ2luVG9wIiwhMCksbGVmdDpiLmxlZnQtZC5sZWZ0LXIu
Y3NzKGMsIm1hcmdpbkxlZnQiLCEwKX19fSxvZmZzZXRQYXJlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4g
dGhpcy5tYXAoZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9mZnNldFBhcmVudDt3aGlsZShhJiYic3Rh
dGljIj09PXIuY3NzKGEsInBvc2l0aW9uIikpYT1hLm9mZnNldFBhcmVudDtyZXR1cm4gYXx8cWF9
KX19KSxyLmVhY2goe3Njcm9sbExlZnQ6InBhZ2VYT2Zmc2V0IixzY3JvbGxUb3A6InBhZ2VZT2Zm
c2V0In0sZnVuY3Rpb24oYSxiKXt2YXIgYz0icGFnZVlPZmZzZXQiPT09YjtyLmZuW2FdPWZ1bmN0
aW9uKGQpe3JldHVybiBTKHRoaXMsZnVuY3Rpb24oYSxkLGUpe3ZhciBmPVNiKGEpO3JldHVybiB2
b2lkIDA9PT1lP2Y/ZltiXTphW2RdOnZvaWQoZj9mLnNjcm9sbFRvKGM/Zi5wYWdlWE9mZnNldDpl
LGM/ZTpmLnBhZ2VZT2Zmc2V0KTphW2RdPWUpfSxhLGQsYXJndW1lbnRzLmxlbmd0aCl9fSksci5l
YWNoKFsidG9wIiwibGVmdCJdLGZ1bmN0aW9uKGEsYil7ci5jc3NIb29rc1tiXT1PYShvLnBpeGVs
UG9zaXRpb24sZnVuY3Rpb24oYSxjKXtpZihjKXJldHVybiBjPU5hKGEsYiksTGEudGVzdChjKT9y
KGEpLnBvc2l0aW9uKClbYl0rInB4IjpjfSl9KSxyLmVhY2goe0hlaWdodDoiaGVpZ2h0IixXaWR0
aDoid2lkdGgifSxmdW5jdGlvbihhLGIpe3IuZWFjaCh7cGFkZGluZzoiaW5uZXIiK2EsY29udGVu
dDpiLCIiOiJvdXRlciIrYX0sZnVuY3Rpb24oYyxkKXtyLmZuW2RdPWZ1bmN0aW9uKGUsZil7dmFy
IGc9YXJndW1lbnRzLmxlbmd0aCYmKGN8fCJib29sZWFuIiE9dHlwZW9mIGUpLGg9Y3x8KGU9PT0h
MHx8Zj09PSEwPyJtYXJnaW4iOiJib3JkZXIiKTtyZXR1cm4gUyh0aGlzLGZ1bmN0aW9uKGIsYyxl
KXt2YXIgZjtyZXR1cm4gci5pc1dpbmRvdyhiKT8wPT09ZC5pbmRleE9mKCJvdXRlciIpP2JbImlu
bmVyIithXTpiLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFsiY2xpZW50IithXTo5PT09Yi5ub2Rl
VHlwZT8oZj1iLmRvY3VtZW50RWxlbWVudCxNYXRoLm1heChiLmJvZHlbInNjcm9sbCIrYV0sZlsi
c2Nyb2xsIithXSxiLmJvZHlbIm9mZnNldCIrYV0sZlsib2Zmc2V0IithXSxmWyJjbGllbnQiK2Fd
KSk6dm9pZCAwPT09ZT9yLmNzcyhiLGMsaCk6ci5zdHlsZShiLGMsZSxoKX0sYixnP2U6dm9pZCAw
LGcpfX0pfSksci5mbi5leHRlbmQoe2JpbmQ6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiB0aGlzLm9u
KGEsbnVsbCxiLGMpfSx1bmJpbmQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5vZmYoYSxudWxs
LGIpfSxkZWxlZ2F0ZTpmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gdGhpcy5vbihiLGEsYyxkKX0s
dW5kZWxlZ2F0ZTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP3Ro
aXMub2ZmKGEsIioqIik6dGhpcy5vZmYoYixhfHwiKioiLGMpfX0pLHIucGFyc2VKU09OPUpTT04u
cGFyc2UsImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZCYmZGVmaW5lKCJqcXVl
cnkiLFtdLGZ1bmN0aW9uKCl7cmV0dXJuIHJ9KTt2YXIgVGI9YS5qUXVlcnksVWI9YS4kO3JldHVy
biByLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oYil7cmV0dXJuIGEuJD09PXImJihhLiQ9VWIpLGImJmEu
alF1ZXJ5PT09ciYmKGEualF1ZXJ5PVRiKSxyfSxifHwoYS5qUXVlcnk9YS4kPXIpLHJ9KTsKZGlm
ZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvZGlzdC9q
cXVlcnkubWluLm1hcCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkv
ZGlzdC9qcXVlcnkubWluLm1hcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YzA5ZGQ4MTQxZDMxNDEwMDliZTIxZTlh
ZjNmYzE4NDRmNjliZWUxCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUv
bm9kZV9tb2R1bGVzL2pxdWVyeS9kaXN0L2pxdWVyeS5taW4ubWFwCkBAIC0wLDAgKzEgQEAKK3si
dmVyc2lvbiI6Mywic291cmNlcyI6WyJqcXVlcnkuanMiXSwibmFtZXMiOlsiZ2xvYmFsIiwiZmFj
dG9yeSIsIm1vZHVsZSIsImV4cG9ydHMiLCJkb2N1bWVudCIsInciLCJFcnJvciIsIndpbmRvdyIs
InRoaXMiLCJub0dsb2JhbCIsImFyciIsImdldFByb3RvIiwiT2JqZWN0IiwiZ2V0UHJvdG90eXBl
T2YiLCJzbGljZSIsImNvbmNhdCIsInB1c2giLCJpbmRleE9mIiwiY2xhc3MydHlwZSIsInRvU3Ry
aW5nIiwiaGFzT3duIiwiaGFzT3duUHJvcGVydHkiLCJmblRvU3RyaW5nIiwiT2JqZWN0RnVuY3Rp
b25TdHJpbmciLCJjYWxsIiwic3VwcG9ydCIsIkRPTUV2YWwiLCJjb2RlIiwiZG9jIiwic2NyaXB0
IiwiY3JlYXRlRWxlbWVudCIsInRleHQiLCJoZWFkIiwiYXBwZW5kQ2hpbGQiLCJwYXJlbnROb2Rl
IiwicmVtb3ZlQ2hpbGQiLCJ2ZXJzaW9uIiwialF1ZXJ5Iiwic2VsZWN0b3IiLCJjb250ZXh0Iiwi
Zm4iLCJpbml0IiwicnRyaW0iLCJybXNQcmVmaXgiLCJyZGFzaEFscGhhIiwiZmNhbWVsQ2FzZSIs
ImFsbCIsImxldHRlciIsInRvVXBwZXJDYXNlIiwicHJvdG90eXBlIiwianF1ZXJ5IiwiY29uc3Ry
dWN0b3IiLCJsZW5ndGgiLCJ0b0FycmF5IiwiZ2V0IiwibnVtIiwicHVzaFN0YWNrIiwiZWxlbXMi
LCJyZXQiLCJtZXJnZSIsInByZXZPYmplY3QiLCJlYWNoIiwiY2FsbGJhY2siLCJtYXAiLCJlbGVt
IiwiaSIsImFwcGx5IiwiYXJndW1lbnRzIiwiZmlyc3QiLCJlcSIsImxhc3QiLCJsZW4iLCJqIiwi
ZW5kIiwic29ydCIsInNwbGljZSIsImV4dGVuZCIsIm9wdGlvbnMiLCJuYW1lIiwic3JjIiwiY29w
eSIsImNvcHlJc0FycmF5IiwiY2xvbmUiLCJ0YXJnZXQiLCJkZWVwIiwiaXNGdW5jdGlvbiIsImlz
UGxhaW5PYmplY3QiLCJpc0FycmF5IiwidW5kZWZpbmVkIiwiZXhwYW5kbyIsIk1hdGgiLCJyYW5k
b20iLCJyZXBsYWNlIiwiaXNSZWFkeSIsImVycm9yIiwibXNnIiwibm9vcCIsIm9iaiIsInR5cGUi
LCJBcnJheSIsImlzV2luZG93IiwiaXNOdW1lcmljIiwiaXNOYU4iLCJwYXJzZUZsb2F0IiwicHJv
dG8iLCJDdG9yIiwiaXNFbXB0eU9iamVjdCIsImdsb2JhbEV2YWwiLCJjYW1lbENhc2UiLCJzdHJp
bmciLCJub2RlTmFtZSIsInRvTG93ZXJDYXNlIiwiaXNBcnJheUxpa2UiLCJ0cmltIiwibWFrZUFy
cmF5IiwicmVzdWx0cyIsImluQXJyYXkiLCJzZWNvbmQiLCJncmVwIiwiaW52ZXJ0IiwiY2FsbGJh
Y2tJbnZlcnNlIiwibWF0Y2hlcyIsImNhbGxiYWNrRXhwZWN0IiwiYXJnIiwidmFsdWUiLCJndWlk
IiwicHJveHkiLCJ0bXAiLCJhcmdzIiwibm93IiwiRGF0ZSIsIlN5bWJvbCIsIml0ZXJhdG9yIiwi
c3BsaXQiLCJTaXp6bGUiLCJFeHByIiwiZ2V0VGV4dCIsImlzWE1MIiwidG9rZW5pemUiLCJjb21w
aWxlIiwic2VsZWN0Iiwib3V0ZXJtb3N0Q29udGV4dCIsInNvcnRJbnB1dCIsImhhc0R1cGxpY2F0
ZSIsInNldERvY3VtZW50IiwiZG9jRWxlbSIsImRvY3VtZW50SXNIVE1MIiwicmJ1Z2d5UVNBIiwi
cmJ1Z2d5TWF0Y2hlcyIsImNvbnRhaW5zIiwicHJlZmVycmVkRG9jIiwiZGlycnVucyIsImRvbmUi
LCJjbGFzc0NhY2hlIiwiY3JlYXRlQ2FjaGUiLCJ0b2tlbkNhY2hlIiwiY29tcGlsZXJDYWNoZSIs
InNvcnRPcmRlciIsImEiLCJiIiwicG9wIiwicHVzaF9uYXRpdmUiLCJsaXN0IiwiYm9vbGVhbnMi
LCJ3aGl0ZXNwYWNlIiwiaWRlbnRpZmllciIsImF0dHJpYnV0ZXMiLCJwc2V1ZG9zIiwicndoaXRl
c3BhY2UiLCJSZWdFeHAiLCJyY29tbWEiLCJyY29tYmluYXRvcnMiLCJyYXR0cmlidXRlUXVvdGVz
IiwicnBzZXVkbyIsInJpZGVudGlmaWVyIiwibWF0Y2hFeHByIiwiSUQiLCJDTEFTUyIsIlRBRyIs
IkFUVFIiLCJQU0VVRE8iLCJDSElMRCIsImJvb2wiLCJuZWVkc0NvbnRleHQiLCJyaW5wdXRzIiwi
cmhlYWRlciIsInJuYXRpdmUiLCJycXVpY2tFeHByIiwicnNpYmxpbmciLCJydW5lc2NhcGUiLCJm
dW5lc2NhcGUiLCJfIiwiZXNjYXBlZCIsImVzY2FwZWRXaGl0ZXNwYWNlIiwiaGlnaCIsIlN0cmlu
ZyIsImZyb21DaGFyQ29kZSIsInJjc3Nlc2NhcGUiLCJmY3NzZXNjYXBlIiwiY2giLCJhc0NvZGVQ
b2ludCIsImNoYXJDb2RlQXQiLCJ1bmxvYWRIYW5kbGVyIiwiZGlzYWJsZWRBbmNlc3RvciIsImFk
ZENvbWJpbmF0b3IiLCJkaXNhYmxlZCIsImRpciIsIm5leHQiLCJjaGlsZE5vZGVzIiwibm9kZVR5
cGUiLCJlIiwiZWxzIiwic2VlZCIsIm0iLCJuaWQiLCJtYXRjaCIsImdyb3VwcyIsIm5ld1NlbGVj
dG9yIiwibmV3Q29udGV4dCIsIm93bmVyRG9jdW1lbnQiLCJleGVjIiwiZ2V0RWxlbWVudEJ5SWQi
LCJpZCIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwiZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSIsInFz
YSIsInRlc3QiLCJnZXRBdHRyaWJ1dGUiLCJzZXRBdHRyaWJ1dGUiLCJ0b1NlbGVjdG9yIiwiam9p
biIsInRlc3RDb250ZXh0IiwicXVlcnlTZWxlY3RvckFsbCIsInFzYUVycm9yIiwicmVtb3ZlQXR0
cmlidXRlIiwia2V5cyIsImNhY2hlIiwia2V5IiwiY2FjaGVMZW5ndGgiLCJzaGlmdCIsIm1hcmtG
dW5jdGlvbiIsImFzc2VydCIsImVsIiwiYWRkSGFuZGxlIiwiYXR0cnMiLCJoYW5kbGVyIiwiYXR0
ckhhbmRsZSIsInNpYmxpbmdDaGVjayIsImN1ciIsImRpZmYiLCJzb3VyY2VJbmRleCIsIm5leHRT
aWJsaW5nIiwiY3JlYXRlSW5wdXRQc2V1ZG8iLCJjcmVhdGVCdXR0b25Qc2V1ZG8iLCJjcmVhdGVE
aXNhYmxlZFBzZXVkbyIsImlzRGlzYWJsZWQiLCJjcmVhdGVQb3NpdGlvbmFsUHNldWRvIiwiYXJn
dW1lbnQiLCJtYXRjaEluZGV4ZXMiLCJkb2N1bWVudEVsZW1lbnQiLCJub2RlIiwiaGFzQ29tcGFy
ZSIsInN1YldpbmRvdyIsImRlZmF1bHRWaWV3IiwidG9wIiwiYWRkRXZlbnRMaXN0ZW5lciIsImF0
dGFjaEV2ZW50IiwiY2xhc3NOYW1lIiwiY3JlYXRlQ29tbWVudCIsImdldEJ5SWQiLCJnZXRFbGVt
ZW50c0J5TmFtZSIsImZpbHRlciIsImF0dHJJZCIsImZpbmQiLCJnZXRBdHRyaWJ1dGVOb2RlIiwi
dGFnIiwiaW5uZXJIVE1MIiwiaW5wdXQiLCJtYXRjaGVzU2VsZWN0b3IiLCJ3ZWJraXRNYXRjaGVz
U2VsZWN0b3IiLCJtb3pNYXRjaGVzU2VsZWN0b3IiLCJvTWF0Y2hlc1NlbGVjdG9yIiwibXNNYXRj
aGVzU2VsZWN0b3IiLCJkaXNjb25uZWN0ZWRNYXRjaCIsImNvbXBhcmVEb2N1bWVudFBvc2l0aW9u
IiwiYWRvd24iLCJidXAiLCJjb21wYXJlIiwic29ydERldGFjaGVkIiwiYXVwIiwiYXAiLCJicCIs
InVuc2hpZnQiLCJleHByIiwiZWxlbWVudHMiLCJhdHRyIiwidmFsIiwic3BlY2lmaWVkIiwiZXNj
YXBlIiwic2VsIiwidW5pcXVlU29ydCIsImR1cGxpY2F0ZXMiLCJkZXRlY3REdXBsaWNhdGVzIiwi
c29ydFN0YWJsZSIsInRleHRDb250ZW50IiwiZmlyc3RDaGlsZCIsIm5vZGVWYWx1ZSIsInNlbGVj
dG9ycyIsImNyZWF0ZVBzZXVkbyIsInJlbGF0aXZlIiwiPiIsIiAiLCIrIiwifiIsInByZUZpbHRl
ciIsImV4Y2VzcyIsInVucXVvdGVkIiwibm9kZU5hbWVTZWxlY3RvciIsInBhdHRlcm4iLCJvcGVy
YXRvciIsImNoZWNrIiwicmVzdWx0Iiwid2hhdCIsInNpbXBsZSIsImZvcndhcmQiLCJvZlR5cGUi
LCJ4bWwiLCJ1bmlxdWVDYWNoZSIsIm91dGVyQ2FjaGUiLCJub2RlSW5kZXgiLCJzdGFydCIsInBh
cmVudCIsInVzZUNhY2hlIiwibGFzdENoaWxkIiwidW5pcXVlSUQiLCJwc2V1ZG8iLCJzZXRGaWx0
ZXJzIiwiaWR4IiwibWF0Y2hlZCIsIm5vdCIsIm1hdGNoZXIiLCJ1bm1hdGNoZWQiLCJoYXMiLCJp
bm5lclRleHQiLCJsYW5nIiwiZWxlbUxhbmciLCJoYXNoIiwibG9jYXRpb24iLCJyb290IiwiZm9j
dXMiLCJhY3RpdmVFbGVtZW50IiwiaGFzRm9jdXMiLCJocmVmIiwidGFiSW5kZXgiLCJlbmFibGVk
IiwiY2hlY2tlZCIsInNlbGVjdGVkIiwic2VsZWN0ZWRJbmRleCIsImVtcHR5IiwiaGVhZGVyIiwi
YnV0dG9uIiwiZXZlbiIsIm9kZCIsImx0IiwiZ3QiLCJyYWRpbyIsImNoZWNrYm94IiwiZmlsZSIs
InBhc3N3b3JkIiwiaW1hZ2UiLCJzdWJtaXQiLCJyZXNldCIsImZpbHRlcnMiLCJwYXJzZU9ubHki
LCJ0b2tlbnMiLCJzb0ZhciIsInByZUZpbHRlcnMiLCJjYWNoZWQiLCJjb21iaW5hdG9yIiwiYmFz
ZSIsInNraXAiLCJjaGVja05vbkVsZW1lbnRzIiwiZG9uZU5hbWUiLCJvbGRDYWNoZSIsIm5ld0Nh
Y2hlIiwiZWxlbWVudE1hdGNoZXIiLCJtYXRjaGVycyIsIm11bHRpcGxlQ29udGV4dHMiLCJjb250
ZXh0cyIsImNvbmRlbnNlIiwibmV3VW5tYXRjaGVkIiwibWFwcGVkIiwic2V0TWF0Y2hlciIsInBv
c3RGaWx0ZXIiLCJwb3N0RmluZGVyIiwicG9zdFNlbGVjdG9yIiwidGVtcCIsInByZU1hcCIsInBv
c3RNYXAiLCJwcmVleGlzdGluZyIsIm1hdGNoZXJJbiIsIm1hdGNoZXJPdXQiLCJtYXRjaGVyRnJv
bVRva2VucyIsImNoZWNrQ29udGV4dCIsImxlYWRpbmdSZWxhdGl2ZSIsImltcGxpY2l0UmVsYXRp
dmUiLCJtYXRjaENvbnRleHQiLCJtYXRjaEFueUNvbnRleHQiLCJtYXRjaGVyRnJvbUdyb3VwTWF0
Y2hlcnMiLCJlbGVtZW50TWF0Y2hlcnMiLCJzZXRNYXRjaGVycyIsImJ5U2V0IiwiYnlFbGVtZW50
Iiwic3VwZXJNYXRjaGVyIiwib3V0ZXJtb3N0IiwibWF0Y2hlZENvdW50Iiwic2V0TWF0Y2hlZCIs
ImNvbnRleHRCYWNrdXAiLCJkaXJydW5zVW5pcXVlIiwidG9rZW4iLCJjb21waWxlZCIsImRlZmF1
bHRWYWx1ZSIsInVuaXF1ZSIsImlzWE1MRG9jIiwiZXNjYXBlU2VsZWN0b3IiLCJ1bnRpbCIsInRy
dW5jYXRlIiwiaXMiLCJzaWJsaW5ncyIsIm4iLCJybmVlZHNDb250ZXh0IiwicnNpbmdsZVRhZyIs
InJpc1NpbXBsZSIsIndpbm5vdyIsInF1YWxpZmllciIsInNlbGYiLCJyb290alF1ZXJ5IiwicGFy
c2VIVE1MIiwicmVhZHkiLCJycGFyZW50c3ByZXYiLCJndWFyYW50ZWVkVW5pcXVlIiwiY2hpbGRy
ZW4iLCJjb250ZW50cyIsInByZXYiLCJ0YXJnZXRzIiwibCIsImNsb3Nlc3QiLCJpbmRleCIsInBy
ZXZBbGwiLCJhZGQiLCJhZGRCYWNrIiwic2libGluZyIsInBhcmVudHMiLCJwYXJlbnRzVW50aWwi
LCJuZXh0QWxsIiwibmV4dFVudGlsIiwicHJldlVudGlsIiwiY29udGVudERvY3VtZW50IiwicmV2
ZXJzZSIsInJub3RodG1sd2hpdGUiLCJjcmVhdGVPcHRpb25zIiwib2JqZWN0IiwiZmxhZyIsIkNh
bGxiYWNrcyIsImZpcmluZyIsIm1lbW9yeSIsImZpcmVkIiwibG9ja2VkIiwicXVldWUiLCJmaXJp
bmdJbmRleCIsImZpcmUiLCJvbmNlIiwic3RvcE9uRmFsc2UiLCJyZW1vdmUiLCJkaXNhYmxlIiwi
bG9jayIsImZpcmVXaXRoIiwiSWRlbnRpdHkiLCJ2IiwiVGhyb3dlciIsImV4IiwiYWRvcHRWYWx1
ZSIsInJlc29sdmUiLCJyZWplY3QiLCJtZXRob2QiLCJwcm9taXNlIiwiZmFpbCIsInRoZW4iLCJE
ZWZlcnJlZCIsImZ1bmMiLCJ0dXBsZXMiLCJzdGF0ZSIsImFsd2F5cyIsImRlZmVycmVkIiwiY2F0
Y2giLCJwaXBlIiwiZm5zIiwibmV3RGVmZXIiLCJ0dXBsZSIsInJldHVybmVkIiwicHJvZ3Jlc3Mi
LCJub3RpZnkiLCJvbkZ1bGZpbGxlZCIsIm9uUmVqZWN0ZWQiLCJvblByb2dyZXNzIiwibWF4RGVw
dGgiLCJkZXB0aCIsInNwZWNpYWwiLCJ0aGF0IiwibWlnaHRUaHJvdyIsIlR5cGVFcnJvciIsIm5v
dGlmeVdpdGgiLCJyZXNvbHZlV2l0aCIsInByb2Nlc3MiLCJleGNlcHRpb25Ib29rIiwic3RhY2tU
cmFjZSIsInJlamVjdFdpdGgiLCJnZXRTdGFja0hvb2siLCJzZXRUaW1lb3V0Iiwic3RhdGVTdHJp
bmciLCJ3aGVuIiwic2luZ2xlVmFsdWUiLCJyZW1haW5pbmciLCJyZXNvbHZlQ29udGV4dHMiLCJy
ZXNvbHZlVmFsdWVzIiwibWFzdGVyIiwidXBkYXRlRnVuYyIsInJlcnJvck5hbWVzIiwic3RhY2si
LCJjb25zb2xlIiwid2FybiIsIm1lc3NhZ2UiLCJyZWFkeUV4Y2VwdGlvbiIsInJlYWR5TGlzdCIs
InJlYWR5V2FpdCIsImhvbGRSZWFkeSIsImhvbGQiLCJ3YWl0IiwiY29tcGxldGVkIiwicmVtb3Zl
RXZlbnRMaXN0ZW5lciIsInJlYWR5U3RhdGUiLCJkb1Njcm9sbCIsImFjY2VzcyIsImNoYWluYWJs
ZSIsImVtcHR5R2V0IiwicmF3IiwiYnVsayIsImFjY2VwdERhdGEiLCJvd25lciIsIkRhdGEiLCJ1
aWQiLCJkZWZpbmVQcm9wZXJ0eSIsImNvbmZpZ3VyYWJsZSIsInNldCIsImRhdGEiLCJwcm9wIiwi
aGFzRGF0YSIsImRhdGFQcml2IiwiZGF0YVVzZXIiLCJyYnJhY2UiLCJybXVsdGlEYXNoIiwiZ2V0
RGF0YSIsIkpTT04iLCJwYXJzZSIsImRhdGFBdHRyIiwicmVtb3ZlRGF0YSIsIl9kYXRhIiwiX3Jl
bW92ZURhdGEiLCJkZXF1ZXVlIiwic3RhcnRMZW5ndGgiLCJob29rcyIsIl9xdWV1ZUhvb2tzIiwi
c3RvcCIsInNldHRlciIsImNsZWFyUXVldWUiLCJjb3VudCIsImRlZmVyIiwicG51bSIsInNvdXJj
ZSIsInJjc3NOdW0iLCJjc3NFeHBhbmQiLCJpc0hpZGRlbldpdGhpblRyZWUiLCJzdHlsZSIsImRp
c3BsYXkiLCJjc3MiLCJzd2FwIiwib2xkIiwiYWRqdXN0Q1NTIiwidmFsdWVQYXJ0cyIsInR3ZWVu
IiwiYWRqdXN0ZWQiLCJzY2FsZSIsIm1heEl0ZXJhdGlvbnMiLCJjdXJyZW50VmFsdWUiLCJpbml0
aWFsIiwidW5pdCIsImNzc051bWJlciIsImluaXRpYWxJblVuaXQiLCJkZWZhdWx0RGlzcGxheU1h
cCIsImdldERlZmF1bHREaXNwbGF5IiwiYm9keSIsInNob3dIaWRlIiwic2hvdyIsInZhbHVlcyIs
ImhpZGUiLCJ0b2dnbGUiLCJyY2hlY2thYmxlVHlwZSIsInJ0YWdOYW1lIiwicnNjcmlwdFR5cGUi
LCJ3cmFwTWFwIiwib3B0aW9uIiwidGhlYWQiLCJjb2wiLCJ0ciIsInRkIiwiX2RlZmF1bHQiLCJv
cHRncm91cCIsInRib2R5IiwidGZvb3QiLCJjb2xncm91cCIsImNhcHRpb24iLCJ0aCIsImdldEFs
bCIsInNldEdsb2JhbEV2YWwiLCJyZWZFbGVtZW50cyIsInJodG1sIiwiYnVpbGRGcmFnbWVudCIs
InNjcmlwdHMiLCJzZWxlY3Rpb24iLCJpZ25vcmVkIiwid3JhcCIsImZyYWdtZW50IiwiY3JlYXRl
RG9jdW1lbnRGcmFnbWVudCIsIm5vZGVzIiwiaHRtbFByZWZpbHRlciIsImNyZWF0ZVRleHROb2Rl
IiwiZGl2IiwiY2hlY2tDbG9uZSIsImNsb25lTm9kZSIsIm5vQ2xvbmVDaGVja2VkIiwicmtleUV2
ZW50Iiwicm1vdXNlRXZlbnQiLCJydHlwZW5hbWVzcGFjZSIsInJldHVyblRydWUiLCJyZXR1cm5G
YWxzZSIsInNhZmVBY3RpdmVFbGVtZW50IiwiZXJyIiwib24iLCJ0eXBlcyIsIm9uZSIsIm9yaWdG
biIsImV2ZW50Iiwib2ZmIiwiaGFuZGxlT2JqSW4iLCJldmVudEhhbmRsZSIsImV2ZW50cyIsInQi
LCJoYW5kbGVPYmoiLCJoYW5kbGVycyIsIm5hbWVzcGFjZXMiLCJvcmlnVHlwZSIsImVsZW1EYXRh
IiwiaGFuZGxlIiwidHJpZ2dlcmVkIiwiZGlzcGF0Y2giLCJkZWxlZ2F0ZVR5cGUiLCJiaW5kVHlw
ZSIsIm5hbWVzcGFjZSIsImRlbGVnYXRlQ291bnQiLCJzZXR1cCIsIm1hcHBlZFR5cGVzIiwib3Jp
Z0NvdW50IiwidGVhcmRvd24iLCJyZW1vdmVFdmVudCIsIm5hdGl2ZUV2ZW50IiwiZml4IiwiaGFu
ZGxlclF1ZXVlIiwiZGVsZWdhdGVUYXJnZXQiLCJwcmVEaXNwYXRjaCIsImlzUHJvcGFnYXRpb25T
dG9wcGVkIiwiY3VycmVudFRhcmdldCIsImlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkIiwi
cm5hbWVzcGFjZSIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwicG9zdERpc3Bh
dGNoIiwibWF0Y2hlZEhhbmRsZXJzIiwibWF0Y2hlZFNlbGVjdG9ycyIsImFkZFByb3AiLCJob29r
IiwiRXZlbnQiLCJlbnVtZXJhYmxlIiwib3JpZ2luYWxFdmVudCIsIndyaXRhYmxlIiwibG9hZCIs
Im5vQnViYmxlIiwidHJpZ2dlciIsImJsdXIiLCJjbGljayIsImJlZm9yZXVubG9hZCIsInJldHVy
blZhbHVlIiwicHJvcHMiLCJpc0RlZmF1bHRQcmV2ZW50ZWQiLCJkZWZhdWx0UHJldmVudGVkIiwi
cmVsYXRlZFRhcmdldCIsInRpbWVTdGFtcCIsImlzU2ltdWxhdGVkIiwic3RvcEltbWVkaWF0ZVBy
b3BhZ2F0aW9uIiwiYWx0S2V5IiwiYnViYmxlcyIsImNhbmNlbGFibGUiLCJjaGFuZ2VkVG91Y2hl
cyIsImN0cmxLZXkiLCJkZXRhaWwiLCJldmVudFBoYXNlIiwibWV0YUtleSIsInBhZ2VYIiwicGFn
ZVkiLCJzaGlmdEtleSIsInZpZXciLCJjaGFyIiwiY2hhckNvZGUiLCJrZXlDb2RlIiwiYnV0dG9u
cyIsImNsaWVudFgiLCJjbGllbnRZIiwib2Zmc2V0WCIsIm9mZnNldFkiLCJwb2ludGVySWQiLCJw
b2ludGVyVHlwZSIsInNjcmVlblgiLCJzY3JlZW5ZIiwidGFyZ2V0VG91Y2hlcyIsInRvRWxlbWVu
dCIsInRvdWNoZXMiLCJ3aGljaCIsIm1vdXNlZW50ZXIiLCJtb3VzZWxlYXZlIiwicG9pbnRlcmVu
dGVyIiwicG9pbnRlcmxlYXZlIiwib3JpZyIsInJlbGF0ZWQiLCJyeGh0bWxUYWciLCJybm9Jbm5l
cmh0bWwiLCJyY2hlY2tlZCIsInJzY3JpcHRUeXBlTWFza2VkIiwicmNsZWFuU2NyaXB0IiwibWFu
aXB1bGF0aW9uVGFyZ2V0IiwiY29udGVudCIsImRpc2FibGVTY3JpcHQiLCJyZXN0b3JlU2NyaXB0
IiwiY2xvbmVDb3B5RXZlbnQiLCJkZXN0IiwicGRhdGFPbGQiLCJwZGF0YUN1ciIsInVkYXRhT2xk
IiwidWRhdGFDdXIiLCJmaXhJbnB1dCIsImRvbU1hbmlwIiwiY29sbGVjdGlvbiIsImhhc1Njcmlw
dHMiLCJpTm9DbG9uZSIsImh0bWwiLCJfZXZhbFVybCIsImtlZXBEYXRhIiwiY2xlYW5EYXRhIiwi
ZGF0YUFuZEV2ZW50cyIsImRlZXBEYXRhQW5kRXZlbnRzIiwic3JjRWxlbWVudHMiLCJkZXN0RWxl
bWVudHMiLCJpblBhZ2UiLCJkZXRhY2giLCJhcHBlbmQiLCJwcmVwZW5kIiwiaW5zZXJ0QmVmb3Jl
IiwiYmVmb3JlIiwiYWZ0ZXIiLCJyZXBsYWNlV2l0aCIsInJlcGxhY2VDaGlsZCIsImFwcGVuZFRv
IiwicHJlcGVuZFRvIiwiaW5zZXJ0QWZ0ZXIiLCJyZXBsYWNlQWxsIiwib3JpZ2luYWwiLCJpbnNl
cnQiLCJybWFyZ2luIiwicm51bW5vbnB4IiwiZ2V0U3R5bGVzIiwib3BlbmVyIiwiZ2V0Q29tcHV0
ZWRTdHlsZSIsImNvbXB1dGVTdHlsZVRlc3RzIiwiY3NzVGV4dCIsImNvbnRhaW5lciIsImRpdlN0
eWxlIiwicGl4ZWxQb3NpdGlvblZhbCIsInJlbGlhYmxlTWFyZ2luTGVmdFZhbCIsIm1hcmdpbkxl
ZnQiLCJib3hTaXppbmdSZWxpYWJsZVZhbCIsIndpZHRoIiwibWFyZ2luUmlnaHQiLCJwaXhlbE1h
cmdpblJpZ2h0VmFsIiwiYmFja2dyb3VuZENsaXAiLCJjbGVhckNsb25lU3R5bGUiLCJwaXhlbFBv
c2l0aW9uIiwiYm94U2l6aW5nUmVsaWFibGUiLCJwaXhlbE1hcmdpblJpZ2h0IiwicmVsaWFibGVN
YXJnaW5MZWZ0IiwiY3VyQ1NTIiwiY29tcHV0ZWQiLCJtaW5XaWR0aCIsIm1heFdpZHRoIiwiZ2V0
UHJvcGVydHlWYWx1ZSIsImFkZEdldEhvb2tJZiIsImNvbmRpdGlvbkZuIiwiaG9va0ZuIiwicmRp
c3BsYXlzd2FwIiwiY3NzU2hvdyIsInBvc2l0aW9uIiwidmlzaWJpbGl0eSIsImNzc05vcm1hbFRy
YW5zZm9ybSIsImxldHRlclNwYWNpbmciLCJmb250V2VpZ2h0IiwiY3NzUHJlZml4ZXMiLCJlbXB0
eVN0eWxlIiwidmVuZG9yUHJvcE5hbWUiLCJjYXBOYW1lIiwic2V0UG9zaXRpdmVOdW1iZXIiLCJz
dWJ0cmFjdCIsIm1heCIsImF1Z21lbnRXaWR0aE9ySGVpZ2h0IiwiZXh0cmEiLCJpc0JvcmRlckJv
eCIsInN0eWxlcyIsImdldFdpZHRoT3JIZWlnaHQiLCJ2YWx1ZUlzQm9yZGVyQm94IiwiZ2V0Q2xp
ZW50UmVjdHMiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJjc3NIb29rcyIsIm9wYWNpdHkiLCJh
bmltYXRpb25JdGVyYXRpb25Db3VudCIsImNvbHVtbkNvdW50IiwiZmlsbE9wYWNpdHkiLCJmbGV4
R3JvdyIsImZsZXhTaHJpbmsiLCJsaW5lSGVpZ2h0Iiwib3JkZXIiLCJvcnBoYW5zIiwid2lkb3dz
IiwiekluZGV4Iiwiem9vbSIsImNzc1Byb3BzIiwiZmxvYXQiLCJvcmlnTmFtZSIsImlzRmluaXRl
IiwibGVmdCIsIm1hcmdpbiIsInBhZGRpbmciLCJib3JkZXIiLCJwcmVmaXgiLCJzdWZmaXgiLCJl
eHBhbmQiLCJleHBhbmRlZCIsInBhcnRzIiwiVHdlZW4iLCJlYXNpbmciLCJwcm9wSG9va3MiLCJy
dW4iLCJwZXJjZW50IiwiZWFzZWQiLCJkdXJhdGlvbiIsInBvcyIsInN0ZXAiLCJmeCIsInNjcm9s
bFRvcCIsInNjcm9sbExlZnQiLCJsaW5lYXIiLCJwIiwic3dpbmciLCJjb3MiLCJQSSIsImZ4Tm93
IiwidGltZXJJZCIsInJmeHR5cGVzIiwicnJ1biIsInJhZiIsInJlcXVlc3RBbmltYXRpb25GcmFt
ZSIsInRpY2siLCJjcmVhdGVGeE5vdyIsImdlbkZ4IiwiaW5jbHVkZVdpZHRoIiwiaGVpZ2h0Iiwi
Y3JlYXRlVHdlZW4iLCJhbmltYXRpb24iLCJBbmltYXRpb24iLCJ0d2VlbmVycyIsImRlZmF1bHRQ
cmVmaWx0ZXIiLCJvcHRzIiwib2xkZmlyZSIsInByb3BUd2VlbiIsInJlc3RvcmVEaXNwbGF5Iiwi
aXNCb3giLCJhbmltIiwiaGlkZGVuIiwiZGF0YVNob3ciLCJ1bnF1ZXVlZCIsIm92ZXJmbG93Iiwi
b3ZlcmZsb3dYIiwib3ZlcmZsb3dZIiwicHJvcEZpbHRlciIsInNwZWNpYWxFYXNpbmciLCJwcm9w
ZXJ0aWVzIiwic3RvcHBlZCIsInByZWZpbHRlcnMiLCJjdXJyZW50VGltZSIsInN0YXJ0VGltZSIs
InR3ZWVucyIsIm9yaWdpbmFsUHJvcGVydGllcyIsIm9yaWdpbmFsT3B0aW9ucyIsImdvdG9FbmQi
LCJ0aW1lciIsImNvbXBsZXRlIiwiKiIsInR3ZWVuZXIiLCJwcmVmaWx0ZXIiLCJzcGVlZCIsIm9w
dCIsInNwZWVkcyIsImZhZGVUbyIsInRvIiwiYW5pbWF0ZSIsIm9wdGFsbCIsImRvQW5pbWF0aW9u
IiwiZmluaXNoIiwic3RvcFF1ZXVlIiwidGltZXJzIiwiY3NzRm4iLCJzbGlkZURvd24iLCJzbGlk
ZVVwIiwic2xpZGVUb2dnbGUiLCJmYWRlSW4iLCJmYWRlT3V0IiwiZmFkZVRvZ2dsZSIsImludGVy
dmFsIiwic2V0SW50ZXJ2YWwiLCJjYW5jZWxBbmltYXRpb25GcmFtZSIsImNsZWFySW50ZXJ2YWwi
LCJzbG93IiwiZmFzdCIsImRlbGF5IiwidGltZSIsInRpbWVvdXQiLCJjbGVhclRpbWVvdXQiLCJj
aGVja09uIiwib3B0U2VsZWN0ZWQiLCJyYWRpb1ZhbHVlIiwiYm9vbEhvb2siLCJyZW1vdmVBdHRy
IiwiblR5cGUiLCJhdHRySG9va3MiLCJhdHRyTmFtZXMiLCJnZXR0ZXIiLCJsb3dlcmNhc2VOYW1l
IiwicmZvY3VzYWJsZSIsInJjbGlja2FibGUiLCJyZW1vdmVQcm9wIiwicHJvcEZpeCIsInRhYmlu
ZGV4IiwicGFyc2VJbnQiLCJmb3IiLCJjbGFzcyIsInN0cmlwQW5kQ29sbGFwc2UiLCJnZXRDbGFz
cyIsImFkZENsYXNzIiwiY2xhc3NlcyIsImN1clZhbHVlIiwiY2xhenoiLCJmaW5hbFZhbHVlIiwi
cmVtb3ZlQ2xhc3MiLCJ0b2dnbGVDbGFzcyIsInN0YXRlVmFsIiwiY2xhc3NOYW1lcyIsImhhc0Ns
YXNzIiwicnJldHVybiIsInZhbEhvb2tzIiwib3B0aW9uU2V0IiwicmZvY3VzTW9ycGgiLCJvbmx5
SGFuZGxlcnMiLCJidWJibGVUeXBlIiwib250eXBlIiwiZXZlbnRQYXRoIiwiaXNUcmlnZ2VyIiwi
cGFyZW50V2luZG93Iiwic2ltdWxhdGUiLCJ0cmlnZ2VySGFuZGxlciIsImhvdmVyIiwiZm5PdmVy
IiwiZm5PdXQiLCJmb2N1c2luIiwiYXR0YWNoZXMiLCJub25jZSIsInJxdWVyeSIsInBhcnNlWE1M
IiwiRE9NUGFyc2VyIiwicGFyc2VGcm9tU3RyaW5nIiwicmJyYWNrZXQiLCJyQ1JMRiIsInJzdWJt
aXR0ZXJUeXBlcyIsInJzdWJtaXR0YWJsZSIsImJ1aWxkUGFyYW1zIiwidHJhZGl0aW9uYWwiLCJw
YXJhbSIsInMiLCJ2YWx1ZU9yRnVuY3Rpb24iLCJlbmNvZGVVUklDb21wb25lbnQiLCJzZXJpYWxp
emUiLCJzZXJpYWxpemVBcnJheSIsInIyMCIsInJoYXNoIiwicmFudGlDYWNoZSIsInJoZWFkZXJz
IiwicmxvY2FsUHJvdG9jb2wiLCJybm9Db250ZW50IiwicnByb3RvY29sIiwidHJhbnNwb3J0cyIs
ImFsbFR5cGVzIiwib3JpZ2luQW5jaG9yIiwiYWRkVG9QcmVmaWx0ZXJzT3JUcmFuc3BvcnRzIiwi
c3RydWN0dXJlIiwiZGF0YVR5cGVFeHByZXNzaW9uIiwiZGF0YVR5cGUiLCJkYXRhVHlwZXMiLCJp
bnNwZWN0UHJlZmlsdGVyc09yVHJhbnNwb3J0cyIsImpxWEhSIiwiaW5zcGVjdGVkIiwic2Vla2lu
Z1RyYW5zcG9ydCIsImluc3BlY3QiLCJwcmVmaWx0ZXJPckZhY3RvcnkiLCJkYXRhVHlwZU9yVHJh
bnNwb3J0IiwiYWpheEV4dGVuZCIsImZsYXRPcHRpb25zIiwiYWpheFNldHRpbmdzIiwiYWpheEhh
bmRsZVJlc3BvbnNlcyIsInJlc3BvbnNlcyIsImN0IiwiZmluYWxEYXRhVHlwZSIsImZpcnN0RGF0
YVR5cGUiLCJtaW1lVHlwZSIsImdldFJlc3BvbnNlSGVhZGVyIiwiY29udmVydGVycyIsImFqYXhD
b252ZXJ0IiwicmVzcG9uc2UiLCJpc1N1Y2Nlc3MiLCJjb252MiIsImN1cnJlbnQiLCJjb252Iiwi
cmVzcG9uc2VGaWVsZHMiLCJkYXRhRmlsdGVyIiwiYWN0aXZlIiwibGFzdE1vZGlmaWVkIiwiZXRh
ZyIsInVybCIsImlzTG9jYWwiLCJwcm90b2NvbCIsInByb2Nlc3NEYXRhIiwiYXN5bmMiLCJjb250
ZW50VHlwZSIsImFjY2VwdHMiLCJqc29uIiwiKiB0ZXh0IiwidGV4dCBodG1sIiwidGV4dCBqc29u
IiwidGV4dCB4bWwiLCJhamF4U2V0dXAiLCJzZXR0aW5ncyIsImFqYXhQcmVmaWx0ZXIiLCJhamF4
VHJhbnNwb3J0IiwiYWpheCIsInRyYW5zcG9ydCIsImNhY2hlVVJMIiwicmVzcG9uc2VIZWFkZXJz
U3RyaW5nIiwicmVzcG9uc2VIZWFkZXJzIiwidGltZW91dFRpbWVyIiwidXJsQW5jaG9yIiwiZmly
ZUdsb2JhbHMiLCJ1bmNhY2hlZCIsImNhbGxiYWNrQ29udGV4dCIsImdsb2JhbEV2ZW50Q29udGV4
dCIsImNvbXBsZXRlRGVmZXJyZWQiLCJzdGF0dXNDb2RlIiwicmVxdWVzdEhlYWRlcnMiLCJyZXF1
ZXN0SGVhZGVyc05hbWVzIiwic3RyQWJvcnQiLCJnZXRBbGxSZXNwb25zZUhlYWRlcnMiLCJzZXRS
ZXF1ZXN0SGVhZGVyIiwib3ZlcnJpZGVNaW1lVHlwZSIsInN0YXR1cyIsImFib3J0Iiwic3RhdHVz
VGV4dCIsImZpbmFsVGV4dCIsImNyb3NzRG9tYWluIiwiaG9zdCIsImhhc0NvbnRlbnQiLCJpZk1v
ZGlmaWVkIiwiaGVhZGVycyIsImJlZm9yZVNlbmQiLCJzdWNjZXNzIiwic2VuZCIsIm5hdGl2ZVN0
YXR1c1RleHQiLCJtb2RpZmllZCIsImdldEpTT04iLCJnZXRTY3JpcHQiLCJ0aHJvd3MiLCJ3cmFw
QWxsIiwiZmlyc3RFbGVtZW50Q2hpbGQiLCJ3cmFwSW5uZXIiLCJ1bndyYXAiLCJ2aXNpYmxlIiwi
b2Zmc2V0V2lkdGgiLCJvZmZzZXRIZWlnaHQiLCJ4aHIiLCJYTUxIdHRwUmVxdWVzdCIsInhoclN1
Y2Nlc3NTdGF0dXMiLCIwIiwiMTIyMyIsInhoclN1cHBvcnRlZCIsImNvcnMiLCJlcnJvckNhbGxi
YWNrIiwib3BlbiIsInVzZXJuYW1lIiwieGhyRmllbGRzIiwib25sb2FkIiwib25lcnJvciIsIm9u
YWJvcnQiLCJvbnJlYWR5c3RhdGVjaGFuZ2UiLCJyZXNwb25zZVR5cGUiLCJyZXNwb25zZVRleHQi
LCJiaW5hcnkiLCJ0ZXh0IHNjcmlwdCIsImNoYXJzZXQiLCJzY3JpcHRDaGFyc2V0IiwiZXZ0Iiwi
b2xkQ2FsbGJhY2tzIiwicmpzb25wIiwianNvbnAiLCJqc29ucENhbGxiYWNrIiwib3JpZ2luYWxT
ZXR0aW5ncyIsImNhbGxiYWNrTmFtZSIsIm92ZXJ3cml0dGVuIiwicmVzcG9uc2VDb250YWluZXIi
LCJqc29uUHJvcCIsImNyZWF0ZUhUTUxEb2N1bWVudCIsImltcGxlbWVudGF0aW9uIiwia2VlcFNj
cmlwdHMiLCJwYXJzZWQiLCJwYXJhbXMiLCJhbmltYXRlZCIsImdldFdpbmRvdyIsIm9mZnNldCIs
InNldE9mZnNldCIsImN1clBvc2l0aW9uIiwiY3VyTGVmdCIsImN1ckNTU1RvcCIsImN1clRvcCIs
ImN1ck9mZnNldCIsImN1ckNTU0xlZnQiLCJjYWxjdWxhdGVQb3NpdGlvbiIsImN1ckVsZW0iLCJ1
c2luZyIsIndpbiIsInJlY3QiLCJwYWdlWU9mZnNldCIsImNsaWVudFRvcCIsInBhZ2VYT2Zmc2V0
IiwiY2xpZW50TGVmdCIsIm9mZnNldFBhcmVudCIsInBhcmVudE9mZnNldCIsInNjcm9sbFRvIiwi
SGVpZ2h0IiwiV2lkdGgiLCIiLCJkZWZhdWx0RXh0cmEiLCJmdW5jTmFtZSIsImJpbmQiLCJ1bmJp
bmQiLCJkZWxlZ2F0ZSIsInVuZGVsZWdhdGUiLCJwYXJzZUpTT04iLCJkZWZpbmUiLCJhbWQiLCJf
alF1ZXJ5IiwiXyQiLCIkIiwibm9Db25mbGljdCJdLCJtYXBwaW5ncyI6IjtDQWFBLFNBQVlBLEVB
QVFDLEdBRW5CLFlBRXVCLGlCQUFYQyxTQUFpRCxnQkFBbkJBLFFBQU9DLFFBU2hERCxPQUFPQyxR
QUFVSCxFQUFPSSxTQUN2QkgsRUFBU0QsR0FBUSxHQUNqQixTQUFVSyxHQUNULElBQU1BLEVBQUVE
LFNBQ1AsS0FBTSxJQUFJRSxPQUFPLDJDQUVsQixPQUFPTCxHQUFTSSxJQUdsQkosRUFBU0QsSUFJ
WSxtQkFBWE8sUUFBeUJBLE9BQVNDLEtBQU0sU0FBVUQsRUFBUUUsR0FNdEUsWUFFQSxJQUFJQyxN
QUVBTixFQUFXRyxFQUFPSCxTQUVsQk8sRUFBV0MsT0FBT0MsZUFFbEJDLEVBQVFKLEVBQUlJLE1B
RVpDLEVBQVNMLEVBQUlLLE9BRWJDLEVBQU9OLEVBQUlNLEtBRVhDLEVBQVVQLEVBQUlPLFFBRWRD
LEtBRUFDLEVBQVdELEVBQVdDLFNBRXRCQyxFQUFTRixFQUFXRyxlQUVwQkMsRUFBYUYsRUFBT0Qs
U0FFcEJJLEVBQXVCRCxFQUFXRSxLQUFNWixRQUV4Q2EsSUFJSCxTQUFTQyxHQUFTQyxFQUFNQyxH
QUN2QkEsRUFBTUEsR0FBT3hCLENBRWIsSUFBSXlCLEdBQVNELEVBQUlFLGNBQWUsU0FFaENELEdB
QU9FLEtBQU9KLEVBQ2RDLEVBQUlJLEtBQUtDLFlBQWFKLEdBQVNLLFdBQVdDLFlBQWFOLEdBUXpE
LEdBQ0NPLEdBQVUsUUFHVkMsRUFBUyxTQUFVQyxFQUFVQyxHQUk1QixNQUFPLElBQUlGLEdBQU9H
LEdBQUdDLEtBQU1ILEVBQVVDLElBS3RDRyxFQUFRLHFDQUdSQyxFQUFZLFFBQ1pDLEVBQWEsWUFH
YkMsRUFBYSxTQUFVQyxFQUFLQyxHQUMzQixNQUFPQSxHQUFPQyxjQUdoQlgsR0FBT0csR0FBS0gs
RUFBT1ksV0FHbEJDLE9BQVFkLEVBRVJlLFlBQWFkLEVBR2JlLE9BQVEsRUFFUkMsUUFBUyxXQUNS
LE1BQU92QyxHQUFNVSxLQUFNaEIsT0FLcEI4QyxJQUFLLFNBQVVDLEdBR2QsTUFBWSxPQUFQQSxF
QUNHekMsRUFBTVUsS0FBTWhCLE1BSWIrQyxFQUFNLEVBQUkvQyxLQUFNK0MsRUFBTS9DLEtBQUs0
QyxRQUFXNUMsS0FBTStDLElBS3BEQyxVQUFXLFNBQVVDLEdBR3BCLEdBQUlDLEdBQU1yQixFQUFP
c0IsTUFBT25ELEtBQUsyQyxjQUFlTSxFQU01QyxPQUhBQyxHQUFJRSxXQUFhcEQsS0FHVmtELEdB
SVJHLEtBQU0sU0FBVUMsR0FDZixNQUFPekIsR0FBT3dCLEtBQU1yRCxLQUFNc0QsSUFHM0JDLElB
QUssU0FBVUQsR0FDZCxNQUFPdEQsTUFBS2dELFVBQVduQixFQUFPMEIsSUFBS3ZELEtBQU0sU0FB
VXdELEVBQU1DLEdBQ3hELE1BQU9ILEdBQVN0QyxLQUFNd0MsRUFBTUMsRUFBR0QsT0FJakNsRCxN
QUFPLFdBQ04sTUFBT04sTUFBS2dELFVBQVcxQyxFQUFNb0QsTUFBTzFELEtBQU0yRCxhQUczQ0Ms
TUFBTyxXQUNOLE1BQU81RCxNQUFLNkQsR0FBSSxJQUdqQkMsS0FBTSxXQUNMLE1BQU85RCxNQUFL
NkQsUUFHYkEsR0FBSSxTQUFVSixHQUNiLEdBQUlNLEdBQU0vRCxLQUFLNEMsT0FDZG9CLEdBQUtQ
LEdBQU1BLEVBQUksRUFBSU0sRUFBTSxFQUMxQixPQUFPL0QsTUFBS2dELFVBQVdnQixHQUFLLEdB
QUtBLEVBQUlELEdBQVEvRCxLQUFNZ0UsU0FHcERDLElBQUssV0FDSixNQUFPakUsTUFBS29ELFlB
QWNwRCxLQUFLMkMsZUFLaENuQyxLQUFNQSxFQUNOMEQsS0FBTWhFLEVBQUlnRSxLQUNWQyxPQUFR
akUsRUFBSWlFLFFBR2J0QyxFQUFPdUMsT0FBU3ZDLEVBQU9HLEdBQUdvQyxPQUFTLFdBQ2xDLEdB
QUlDLEdBQVNDLEVBQU1DLEVBQUtDLEVBQU1DLEVBQWFDLEVBQzFDQyxFQUFTaEIsVUFBVyxPQUNw
QkYsRUFBSSxFQUNKYixFQUFTZSxVQUFVZixPQUNuQmdDLEdBQU8sQ0FzQlIsS0FuQnVCLGlCQUFY
RCxLQUNYQyxFQUFPRCxFQUdQQSxFQUFTaEIsVUFBV0YsT0FDcEJBLEtBSXNCLGdCQUFYa0IsSUFB
d0I5QyxFQUFPZ0QsV0FBWUYsS0FDdERBLE1BSUlsQixJQUFNYixJQUNWK0IsRUFBUzNFLEtBQ1R5
RCxLQUdPQSxFQUFJYixFQUFRYSxJQUduQixHQUFxQyxPQUE5QlksRUFBVVYsVUFBV0YsSUFHM0Is
SUFBTWEsSUFBUUQsR0FDYkUsRUFBTUksRUFBUUwsR0FDZEUsRUFBT0gsRUFBU0MsR0FHWEssSUFB
V0gsSUFLWEksR0FBUUosSUFBVTNDLEVBQU9pRCxjQUFlTixLQUMxQ0MsRUFBYzVDLEVBQU9rRCxR
QUFTUCxNQUUzQkMsR0FDSkEsR0FBYyxFQUNkQyxFQUFRSCxHQUFPMUMsRUFBT2tELFFBQVNSLEdB
QVFBLE1BR3ZDRyxFQUFRSCxHQUFPMUMsRUFBT2lELGNBQWVQLEdBQVFBLEtBSTlDSSxFQUFRTCxH
QUFTekMsRUFBT3VDLE9BQVFRLEVBQU1GLEVBQU9GLElBR3pCUSxTQUFUUixJQUNYRyxFQUFRTCxH
QUFTRSxHQU9yQixPQUFPRyxJQUdSOUMsRUFBT3VDLFFBR05hLFFBQVMsVUFBYXJELEVBQVVzRCxL
QUFLQyxVQUFXQyxRQUFTLE1BQU8sSUFHaEVDLFNBQVMsRUFFVEMsTUFBTyxTQUFVQyxHQUNoQixL
QUFNLElBQUl6RixPQUFPeUYsSUFHbEJDLEtBQU0sYUFFTlgsV0FBWSxTQUFVWSxHQUNyQixNQUE4
QixhQUF2QjVELEVBQU82RCxLQUFNRCxJQUdyQlYsUUFBU1ksTUFBTVosUUFFZmEsU0FBVSxTQUFV
SCxHQUNuQixNQUFjLE9BQVBBLEdBQWVBLElBQVFBLEVBQUkxRixRQUduQzhGLFVBQVcsU0FBVUos
R0FLcEIsR0FBSUMsR0FBTzdELEVBQU82RCxLQUFNRCxFQUN4QixRQUFrQixXQUFUQyxHQUE4QixX
QUFUQSxLQUs1QkksTUFBT0wsRUFBTU0sV0FBWU4sS0FHNUJYLGNBQWUsU0FBVVcsR0FDeEIsR0FB
SU8sR0FBT0MsQ0FJWCxVQUFNUixHQUFnQyxvQkFBekI5RSxFQUFTSyxLQUFNeUUsUUFJNUJPLEVB
QVE3RixFQUFVc0YsTUFRbEJRLEVBQU9yRixFQUFPSSxLQUFNZ0YsRUFBTyxnQkFBbUJBLEVBQU1y
RCxZQUM3QixrQkFBVHNELElBQXVCbkYsRUFBV0UsS0FBTWlGLEtBQVdsRixLQUdsRW1GLGNBQWUs
U0FBVVQsR0FJeEIsR0FBSW5CLEVBRUosS0FBTUEsSUFBUW1CLEdBQ2IsT0FBTyxDQUVSLFFBQU8s
R0FHUkMsS0FBTSxTQUFVRCxHQUNmLE1BQVksT0FBUEEsRUFDR0EsRUFBTSxHQUlRLGdCQUFSQSxJ
QUFtQyxrQkFBUkEsR0FDeEMvRSxFQUFZQyxFQUFTSyxLQUFNeUUsS0FBVyxlQUMvQkEsSUFJVFUs
V0FBWSxTQUFVaEYsR0FDckJELEVBQVNDLElBTVZpRixVQUFXLFNBQVVDLEdBQ3BCLE1BQU9BLEdB
QU9qQixRQUFTakQsRUFBVyxPQUFRaUQsUUFBU2hELEVBQVlDLElBR2hFaUUsU0FBVSxTQUFVOUMs
RUFBTWMsR0FDekIsTUFBT2QsR0FBSzhDLFVBQVk5QyxFQUFLOEMsU0FBU0MsZ0JBQWtCakMsRUFB
S2lDLGVBRzlEbEQsS0FBTSxTQUFVb0MsRUFBS25DLEdBQ3BCLEdBQUlWLEdBQVFhLEVBQUksQ0FF
aEIsSUFBSytDLEVBQWFmLElBRWpCLElBREE3QyxFQUFTNkMsRUFBSTdDLE9BQ0xhLEVBQUliLEVB
QVFhLElBQ25CLEdBQUtILEVBQVN0QyxLQUFNeUUsRUFBS2hDLEdBQUtBLEVBQUdnQyxFQUFLaEMs
T0FBVSxFQUMvQyxVQUlGLEtBQU1BLElBQUtnQyxHQUNWLEdBQUtuQyxFQUFTdEMsS0FBTXlFLEVB
QUtoQyxHQUFLQSxFQUFHZ0MsRUFBS2hDLE9BQVUsRUFDL0MsS0FLSCxPQUFPZ0MsSUFJUmdCLEtB
QU0sU0FBVWxGLEdBQ2YsTUFBZSxPQUFSQSxFQUNOLElBQ0VBLEVBQU8sSUFBSzZELFFBQVNsRCxF
QUFPLEtBSWhDd0UsVUFBVyxTQUFVeEcsRUFBS3lHLEdBQ3pCLEdBQUl6RCxHQUFNeUQsS0FhVixP
QVhZLE9BQVB6RyxJQUNDc0csRUFBYXBHLE9BQVFGLElBQ3pCMkIsRUFBT3NCLE1BQU9ELEVBQ0Us
Z0JBQVJoRCxJQUNMQSxHQUFRQSxHQUdYTSxFQUFLUSxLQUFNa0MsRUFBS2hELElBSVhnRCxHQUdS
MEQsUUFBUyxTQUFVcEQsRUFBTXRELEVBQUt1RCxHQUM3QixNQUFjLE9BQVB2RCxLQUFtQk8sRUFB
UU8sS0FBTWQsRUFBS3NELEVBQU1DLElBS3BETixNQUFPLFNBQVVTLEVBQU9pRCxHQUt2QixJQUpB
LEdBQUk5QyxJQUFPOEMsRUFBT2pFLE9BQ2pCb0IsRUFBSSxFQUNKUCxFQUFJRyxFQUFNaEIsT0FF
SG9CLEVBQUlELEVBQUtDLElBQ2hCSixFQUFPSCxLQUFRb0QsRUFBUTdDLEVBS3hCLE9BRkFKLEdB
QU1oQixPQUFTYSxFQUVSRyxHQUdSa0QsS0FBTSxTQUFVN0QsRUFBT0ssRUFBVXlELEdBU2hDLElB
UkEsR0FBSUMsR0FDSEMsS0FDQXhELEVBQUksRUFDSmIsRUFBU0ssRUFBTUwsT0FDZnNFLEdBQWtC
SCxFQUlYdEQsRUFBSWIsRUFBUWEsSUFDbkJ1RCxHQUFtQjFELEVBQVVMLEVBQU9RLEdBQUtBLEdB
Q3BDdUQsSUFBb0JFLEdBQ3hCRCxFQUFRekcsS0FBTXlDLEVBQU9RLEdBSXZCLE9BQU93RCxJQUlS
MUQsSUFBSyxTQUFVTixFQUFPSyxFQUFVNkQsR0FDL0IsR0FBSXZFLEdBQVF3RSxFQUNYM0QsRUFB
SSxFQUNKUCxJQUdELElBQUtzRCxFQUFhdkQsR0FFakIsSUFEQUwsRUFBU0ssRUFBTUwsT0FDUGEs
RUFBSWIsRUFBUWEsSUFDbkIyRCxFQUFROUQsRUFBVUwsRUFBT1EsR0FBS0EsRUFBRzBELEdBRW5C
LE1BQVRDLEdBQ0psRSxFQUFJMUMsS0FBTTRHLE9BTVosS0FBTTNELElBQUtSLEdBQ1ZtRSxFQUFR
OUQsRUFBVUwsRUFBT1EsR0FBS0EsRUFBRzBELEdBRW5CLE1BQVRDLEdBQ0psRSxFQUFJMUMsS0FB
TTRHLEVBTWIsT0FBTzdHLEdBQU9tRCxTQUFXUixJQUkxQm1FLEtBQU0sRUFJTkMsTUFBTyxTQUFV
dEYsRUFBSUQsR0FDcEIsR0FBSXdGLEdBQUtDLEVBQU1GLENBVWYsSUFSd0IsZ0JBQVp2RixLQUNY
d0YsRUFBTXZGLEVBQUlELEdBQ1ZBLEVBQVVDLEVBQ1ZBLEVBQUt1RixHQUtBMUYsRUFBT2dELFdB
QVk3QyxHQWF6QixNQVJBd0YsR0FBT2xILEVBQU1VLEtBQU0yQyxVQUFXLEdBQzlCMkQsRUFBUSxX
QUNQLE1BQU90RixHQUFHMEIsTUFBTzNCLEdBQVcvQixLQUFNd0gsRUFBS2pILE9BQVFELEVBQU1V
LEtBQU0yQyxjQUk1RDJELEVBQU1ELEtBQU9yRixFQUFHcUYsS0FBT3JGLEVBQUdxRixNQUFReEYs
RUFBT3dGLE9BRWxDQyxHQUdSRyxJQUFLQyxLQUFLRCxJQUlWeEcsUUFBU0EsSUFHYSxrQkFBWDBH
LFVBQ1g5RixFQUFPRyxHQUFJMkYsT0FBT0MsVUFBYTFILEVBQUt5SCxPQUFPQyxXQUk1Qy9GLEVB
QU93QixLQUFNLHVFQUF1RXdFLE1BQU8sS0FDM0YsU0FBVXBFLEVBQUdhLEdBQ1o1RCxFQUFZLFdB
QWE0RCxFQUFPLEtBQVFBLEVBQUtpQyxlQUc5QyxTQUFTQyxHQUFhZixHQU1yQixHQUFJN0MsS0FB
VzZDLEdBQU8sVUFBWUEsSUFBT0EsRUFBSTdDLE9BQzVDOEMsRUFBTzdELEVBQU82RCxLQUFNRCxF
QUVyQixPQUFjLGFBQVRDLElBQXVCN0QsRUFBTytELFNBQVVILEtBSTdCLFVBQVRDLEdBQStCLElB
QVg5QyxHQUNSLGdCQUFYQSxJQUF1QkEsRUFBUyxHQUFPQSxFQUFTLElBQU82QyxJQUVoRSxHQUFJ
cUMsR0FXSixTQUFXL0gsR0FFWCxHQUFJMEQsR0FDSHhDLEVBQ0E4RyxFQUNBQyxFQUNBQyxFQUNB
QyxFQUNBQyxFQUNBQyxFQUNBQyxFQUNBQyxFQUNBQyxFQUdBQyxFQUNBNUksRUFDQTZJLEVBQ0FD
LEVBQ0FDLEVBQ0FDLEVBQ0EzQixFQUNBNEIsRUFHQTVELEVBQVUsU0FBVyxFQUFJLEdBQUl5QyxN
QUM3Qm9CLEVBQWUvSSxFQUFPSCxTQUN0Qm1KLEVBQVUsRUFDVkMsRUFBTyxFQUNQQyxFQUFhQyxL
QUNiQyxFQUFhRCxLQUNiRSxFQUFnQkYsS0FDaEJHLEVBQVksU0FBVUMsRUFBR0MsR0FJeEIsTUFI
S0QsS0FBTUMsSUFDVmhCLEdBQWUsR0FFVCxHQUlSM0gsS0FBY0MsZUFDZFgsS0FDQXNKLEVBQU10
SixFQUFJc0osSUFDVkMsRUFBY3ZKLEVBQUlNLEtBQ2xCQSxFQUFPTixFQUFJTSxLQUNYRixFQUFR
SixFQUFJSSxNQUdaRyxFQUFVLFNBQVVpSixFQUFNbEcsR0FHekIsSUFGQSxHQUFJQyxHQUFJLEVB
Q1BNLEVBQU0yRixFQUFLOUcsT0FDSmEsRUFBSU0sRUFBS04sSUFDaEIsR0FBS2lHLEVBQUtqRyxL
QUFPRCxFQUNoQixNQUFPQyxFQUdULFdBR0RrRyxFQUFXLDZIQUtYQyxFQUFhLHNCQUdiQyxFQUFh
LGdDQUdiQyxFQUFhLE1BQVFGLEVBQWEsS0FBT0MsRUFBYSxPQUFTRCxFQUU5RCxnQkFBa0JBLEVB
RWxCLDJEQUE2REMsRUFBYSxPQUFTRCxFQUNuRixPQUVERyxFQUFVLEtBQU9GLEVBQWEsd0ZBS0FD
LEVBQWEsZUFNM0NFLEVBQWMsR0FBSUMsUUFBUUwsRUFBYSxJQUFLLEtBQzVDMUgsRUFBUSxHQUFJ
K0gsUUFBUSxJQUFNTCxFQUFhLDhCQUFnQ0EsRUFBYSxLQUFNLEtBRTFGTSxFQUFTLEdBQUlELFFB
QVEsSUFBTUwsRUFBYSxLQUFPQSxFQUFhLEtBQzVETyxFQUFlLEdBQUlGLFFBQVEsSUFBTUwsRUFB
YSxXQUFhQSxFQUFhLElBQU1BLEVBQWEsS0FFM0ZRLEVBQW1CLEdBQUlILFFBQVEsSUFBTUwsRUFB
YSxpQkFBbUJBLEVBQWEsT0FBUSxLQUUxRlMsRUFBVSxHQUFJSixRQUFRRixHQUN0Qk8sRUFBYyxH
QUFJTCxRQUFRLElBQU1KLEVBQWEsS0FFN0NVLEdBQ0NDLEdBQU0sR0FBSVAsUUFBUSxNQUFRSixF
QUFhLEtBQ3ZDWSxNQUFTLEdBQUlSLFFBQVEsUUFBVUosRUFBYSxLQUM1Q2EsSUFBTyxHQUFJVCxR
QUFRLEtBQU9KLEVBQWEsU0FDdkNjLEtBQVEsR0FBSVYsUUFBUSxJQUFNSCxHQUMxQmMsT0FBVSxH
QUFJWCxRQUFRLElBQU1GLEdBQzVCYyxNQUFTLEdBQUlaLFFBQVEseURBQTJETCxFQUMvRSwrQkFB
aUNBLEVBQWEsY0FBZ0JBLEVBQzlELGFBQWVBLEVBQWEsU0FBVSxLQUN2Q2tCLEtBQVEsR0FBSWIs
UUFBUSxPQUFTTixFQUFXLEtBQU0sS0FHOUNvQixhQUFnQixHQUFJZCxRQUFRLElBQU1MLEVBQWEs
bURBQzlDQSxFQUFhLG1CQUFxQkEsRUFBYSxtQkFBb0IsTUFHckVvQixFQUFVLHNDQUNWQyxFQUFV
LFNBRVZDLEVBQVUseUJBR1ZDLEVBQWEsbUNBRWJDLEVBQVcsT0FJWEMsRUFBWSxHQUFJcEIsUUFB
USxxQkFBdUJMLEVBQWEsTUFBUUEsRUFBYSxPQUFRLE1BQ3pGMEIsR0FBWSxTQUFVQyxFQUFHQyxF
QUFTQyxHQUNqQyxHQUFJQyxHQUFPLEtBQU9GLEVBQVUsS0FJNUIsT0FBT0UsS0FBU0EsR0FBUUQs
RUFDdkJELEVBQ0FFLEVBQU8sRUFFTkMsT0FBT0MsYUFBY0YsRUFBTyxPQUU1QkMsT0FBT0MsYUFB
Y0YsR0FBUSxHQUFLLE1BQWUsS0FBUEEsRUFBZSxRQUs1REcsR0FBYSxzREFDYkMsR0FBYSxTQUFV
QyxFQUFJQyxHQUMxQixNQUFLQSxHQUdRLE9BQVBELEVBQ0csU0FJREEsRUFBR3pMLE1BQU8sTUFB
VSxLQUFPeUwsRUFBR0UsV0FBWUYsRUFBR25KLE9BQVMsR0FBSWpDLFNBQVUsSUFBTyxJQUk1RSxL
QUFPb0wsR0FPZkcsR0FBZ0IsV0FDZjFELEtBR0QyRCxHQUFtQkMsR0FDbEIsU0FBVTVJLEdBQ1Qs
TUFBT0EsR0FBSzZJLFlBQWEsSUFBUyxRQUFVN0ksSUFBUSxTQUFXQSxNQUU5RDhJLElBQUssYUFB
Y0MsS0FBTSxVQUk3QixLQUNDL0wsRUFBS2tELE1BQ0h4RCxFQUFNSSxFQUFNVSxLQUFNOEgsRUFB
YTBELFlBQ2hDMUQsRUFBYTBELFlBSWR0TSxFQUFLNEksRUFBYTBELFdBQVc1SixRQUFTNkosU0FD
ckMsTUFBUUMsSUFDVGxNLEdBQVNrRCxNQUFPeEQsRUFBSTBDLE9BR25CLFNBQVUrQixFQUFRZ0ks
R0FDakJsRCxFQUFZL0YsTUFBT2lCLEVBQVFyRSxFQUFNVSxLQUFLMkwsS0FLdkMsU0FBVWhJLEVB
QVFnSSxHQUNqQixHQUFJM0ksR0FBSVcsRUFBTy9CLE9BQ2RhLEVBQUksQ0FFTCxPQUFTa0IsRUFB
T1gsS0FBTzJJLEVBQUlsSixNQUMzQmtCLEVBQU8vQixPQUFTb0IsRUFBSSxJQUt2QixRQUFTOEQs
SUFBUWhHLEVBQVVDLEVBQVM0RSxFQUFTaUcsR0FDNUMsR0FBSUMsR0FBR3BKLEVBQUdELEVBQU1z
SixFQUFLQyxFQUFPQyxFQUFRQyxFQUNuQ0MsRUFBYW5MLEdBQVdBLEVBQVFvTCxjQUdoQ1YsRUFB
VzFLLEVBQVVBLEVBQVEwSyxTQUFXLENBS3pDLElBSEE5RixFQUFVQSxNQUdlLGdCQUFiN0UsS0FB
MEJBLEdBQ3hCLElBQWIySyxHQUErQixJQUFiQSxHQUErQixLQUFiQSxFQUVwQyxNQUFPOUYsRUFJ
UixLQUFNaUcsS0FFRTdLLEVBQVVBLEVBQVFvTCxlQUFpQnBMLEVBQVUrRyxLQUFtQmxKLEdBQ3RF
NEksRUFBYXpHLEdBRWRBLEVBQVVBLEdBQVduQyxFQUVoQjhJLEdBQWlCLENBSXJCLEdBQWtCLEtB
QWIrRCxJQUFvQk0sRUFBUTVCLEVBQVdpQyxLQUFNdEwsSUFHakQsR0FBTStLLEVBQUlFLEVBQU0s
SUFHZixHQUFrQixJQUFiTixFQUFpQixDQUNyQixLQUFNakosRUFBT3pCLEVBQVFzTCxlQUFnQlIs
SUFVcEMsTUFBT2xHLEVBTFAsSUFBS25ELEVBQUs4SixLQUFPVCxFQUVoQixNQURBbEcsR0FBUW5H
LEtBQU1nRCxHQUNQbUQsTUFZVCxJQUFLdUcsSUFBZTFKLEVBQU8wSixFQUFXRyxlQUFnQlIsS0FD
ckRoRSxFQUFVOUcsRUFBU3lCLElBQ25CQSxFQUFLOEosS0FBT1QsRUFHWixNQURBbEcsR0FBUW5H
LEtBQU1nRCxHQUNQbUQsTUFLSCxDQUFBLEdBQUtvRyxFQUFNLEdBRWpCLE1BREF2TSxHQUFLa0Qs
TUFBT2lELEVBQVM1RSxFQUFRd0wscUJBQXNCekwsSUFDNUM2RSxDQUdELEtBQU1rRyxFQUFJRSxF
QUFNLEtBQU85TCxFQUFRdU0sd0JBQ3JDekwsRUFBUXlMLHVCQUdSLE1BREFoTixHQUFLa0QsTUFB
T2lELEVBQVM1RSxFQUFReUwsdUJBQXdCWCxJQUM5Q2xHLEVBS1QsR0FBSzFGLEVBQVF3TSxNQUNY
ckUsRUFBZXRILEVBQVcsUUFDekI2RyxJQUFjQSxFQUFVK0UsS0FBTTVMLElBQWMsQ0FFOUMsR0FB
a0IsSUFBYjJLLEVBQ0pTLEVBQWFuTCxFQUNia0wsRUFBY25MLE1BTVIsSUFBd0MsV0FBbkNDLEVB
QVF1RSxTQUFTQyxjQUE2QixFQUduRHVHLEVBQU0vSyxFQUFRNEwsYUFBYyxPQUNqQ2IsRUFBTUEs
RUFBSTFILFFBQVN5RyxHQUFZQyxJQUUvQi9KLEVBQVE2TCxhQUFjLEtBQU9kLEVBQU03SCxHQUlw
QytILEVBQVM5RSxFQUFVcEcsR0FDbkIyQixFQUFJdUosRUFBT3BLLE1BQ1gsT0FBUWEsSUFDUHVK
LEVBQU92SixHQUFLLElBQU1xSixFQUFNLElBQU1lLEdBQVliLEVBQU92SixHQUVsRHdKLEdBQWNE
LEVBQU9jLEtBQU0sS0FHM0JaLEVBQWE5QixFQUFTc0MsS0FBTTVMLElBQWNpTSxHQUFhaE0sRUFB
UUwsYUFDOURLLEVBR0YsR0FBS2tMLEVBQ0osSUFJQyxNQUhBek0sR0FBS2tELE1BQU9pRCxFQUNY
dUcsRUFBV2MsaUJBQWtCZixJQUV2QnRHLEVBQ04sTUFBUXNILElBQ1IsUUFDSW5CLElBQVE3SCxH
QUNabEQsRUFBUW1NLGdCQUFpQixRQVMvQixNQUFPOUYsR0FBUXRHLEVBQVNzRCxRQUFTbEQsRUFB
TyxNQUFRSCxFQUFTNEUsRUFBU2lHLEdBU25FLFFBQVMxRCxNQUNSLEdBQUlpRixLQUVKLFNBQVND
LEdBQU9DLEVBQUtqSCxHQU1wQixNQUpLK0csR0FBSzNOLEtBQU02TixFQUFNLEtBQVF0RyxFQUFL
dUcsbUJBRTNCRixHQUFPRCxFQUFLSSxTQUVaSCxFQUFPQyxFQUFNLEtBQVFqSCxFQUU5QixNQUFP
Z0gsR0FPUixRQUFTSSxJQUFjeE0sR0FFdEIsTUFEQUEsR0FBSWlELElBQVksRUFDVGpELEVBT1Is
UUFBU3lNLElBQVF6TSxHQUNoQixHQUFJME0sR0FBSzlPLEVBQVMwQixjQUFjLFdBRWhDLEtBQ0Ms
UUFBU1UsRUFBSTBNLEdBQ1osTUFBT2hDLEdBQ1IsT0FBTyxFQUNOLFFBRUlnQyxFQUFHaE4sWUFD
UGdOLEVBQUdoTixXQUFXQyxZQUFhK00sR0FHNUJBLEVBQUssTUFTUCxRQUFTQyxJQUFXQyxFQUFP
QyxHQUMxQixHQUFJM08sR0FBTTBPLEVBQU0vRyxNQUFNLEtBQ3JCcEUsRUFBSXZELEVBQUkwQyxN
QUVULE9BQVFhLElBQ1BzRSxFQUFLK0csV0FBWTVPLEVBQUl1RCxJQUFPb0wsRUFVOUIsUUFBU0Us
SUFBY3pGLEVBQUdDLEdBQ3pCLEdBQUl5RixHQUFNekYsR0FBS0QsRUFDZDJGLEVBQU9ELEdBQXNC
LElBQWYxRixFQUFFbUQsVUFBaUMsSUFBZmxELEVBQUVrRCxVQUNuQ25ELEVBQUU0RixZQUFjM0Ys
RUFBRTJGLFdBR3BCLElBQUtELEVBQ0osTUFBT0EsRUFJUixJQUFLRCxFQUNKLE1BQVNBLEVBQU1B
LEVBQUlHLFlBQ2xCLEdBQUtILElBQVF6RixFQUNaLFFBS0gsT0FBT0QsR0FBSSxLQU9aLFFBQVM4
RixJQUFtQjFKLEdBQzNCLE1BQU8sVUFBVWxDLEdBQ2hCLEdBQUljLEdBQU9kLEVBQUs4QyxTQUFT
QyxhQUN6QixPQUFnQixVQUFUakMsR0FBb0JkLEVBQUtrQyxPQUFTQSxHQVEzQyxRQUFTMkosSUFB
b0IzSixHQUM1QixNQUFPLFVBQVVsQyxHQUNoQixHQUFJYyxHQUFPZCxFQUFLOEMsU0FBU0MsYUFD
ekIsUUFBaUIsVUFBVGpDLEdBQTZCLFdBQVRBLElBQXNCZCxFQUFLa0MsT0FBU0EsR0FRbEUsUUFB
UzRKLElBQXNCakQsR0FHOUIsTUFBTyxVQUFVN0ksR0FLaEIsTUFBSyxRQUFVQSxHQVNUQSxFQUFL
OUIsWUFBYzhCLEVBQUs2SSxZQUFhLEVBR3BDLFNBQVc3SSxHQUNWLFNBQVdBLEdBQUs5QixXQUNi
OEIsRUFBSzlCLFdBQVcySyxXQUFhQSxFQUU3QjdJLEVBQUs2SSxXQUFhQSxFQU1wQjdJLEVBQUsr
TCxhQUFlbEQsR0FJMUI3SSxFQUFLK0wsY0FBZ0JsRCxHQUNwQkYsR0FBa0IzSSxLQUFXNkksRUFH
ekI3SSxFQUFLNkksV0FBYUEsRUFLZCxTQUFXN0ksSUFDZkEsRUFBSzZJLFdBQWFBLEdBWTVCLFFB
QVNtRCxJQUF3QnhOLEdBQ2hDLE1BQU93TSxJQUFhLFNBQVVpQixHQUU3QixNQURBQSxJQUFZQSxF
QUNMakIsR0FBYSxTQUFVNUIsRUFBTTNGLEdBQ25DLEdBQUlqRCxHQUNIMEwsRUFBZTFOLEtBQVE0
SyxFQUFLaEssT0FBUTZNLEdBQ3BDaE0sRUFBSWlNLEVBQWE5TSxNQUdsQixPQUFRYSxJQUNGbUos
RUFBTzVJLEVBQUkwTCxFQUFhak0sTUFDNUJtSixFQUFLNUksS0FBT2lELEVBQVFqRCxHQUFLNEks
RUFBSzVJLFNBWW5DLFFBQVMrSixJQUFhaE0sR0FDckIsTUFBT0EsSUFBbUQsbUJBQWpDQSxHQUFR
d0wsc0JBQXdDeEwsRUFJMUVkLEVBQVU2RyxHQUFPN0csV0FPakJnSCxFQUFRSCxHQUFPRyxNQUFR
LFNBQVV6RSxHQUdoQyxHQUFJbU0sR0FBa0JuTSxJQUFTQSxFQUFLMkosZUFBaUIzSixHQUFNbU0s
ZUFDM0QsU0FBT0EsR0FBK0MsU0FBN0JBLEVBQWdCckosVUFRMUNrQyxFQUFjVixHQUFPVSxZQUFj
LFNBQVVvSCxHQUM1QyxHQUFJQyxHQUFZQyxFQUNmMU8sRUFBTXdPLEVBQU9BLEVBQUt6QyxlQUFp
QnlDLEVBQU85RyxDQUczQyxPQUFLMUgsS0FBUXhCLEdBQTZCLElBQWpCd0IsRUFBSXFMLFVBQW1C
ckwsRUFBSXVPLGlCQUtwRC9QLEVBQVd3QixFQUNYcUgsRUFBVTdJLEVBQVMrUCxnQkFDbkJqSCxH
QUFrQlQsRUFBT3JJLEdBSXBCa0osSUFBaUJsSixJQUNwQmtRLEVBQVlsUSxFQUFTbVEsY0FBZ0JE
LEVBQVVFLE1BQVFGLElBR25EQSxFQUFVRyxpQkFDZEgsRUFBVUcsaUJBQWtCLFNBQVUvRCxJQUFl
LEdBRzFDNEQsRUFBVUksYUFDckJKLEVBQVVJLFlBQWEsV0FBWWhFLEtBVXJDakwsRUFBUTZJLFdB
QWEyRSxHQUFPLFNBQVVDLEdBRXJDLE1BREFBLEdBQUd5QixVQUFZLEtBQ1B6QixFQUFHZixhQUFh
LGVBT3pCMU0sRUFBUXNNLHFCQUF1QmtCLEdBQU8sU0FBVUMsR0FFL0MsTUFEQUEsR0FBR2pOLFlB
QWE3QixFQUFTd1EsY0FBYyxNQUMvQjFCLEVBQUduQixxQkFBcUIsS0FBSzNLLFNBSXRDM0IsRUFB
UXVNLHVCQUF5QnRDLEVBQVF3QyxLQUFNOU4sRUFBUzROLHdCQU14RHZNLEVBQVFvUCxRQUFVNUIs
R0FBTyxTQUFVQyxHQUVsQyxNQURBakcsR0FBUWhILFlBQWFpTixHQUFLcEIsR0FBS3JJLEdBQ3ZC
ckYsRUFBUzBRLG9CQUFzQjFRLEVBQVMwUSxrQkFBbUJyTCxHQUFVckMsU0FJekUzQixFQUFRb1As
U0FDWnRJLEVBQUt3SSxPQUFXLEdBQUksU0FBVWpELEdBQzdCLEdBQUlrRCxHQUFTbEQsRUFBR2xJ
LFFBQVNpRyxFQUFXQyxHQUNwQyxPQUFPLFVBQVU5SCxHQUNoQixNQUFPQSxHQUFLbUssYUFBYSxR
QUFVNkMsSUFHckN6SSxFQUFLMEksS0FBUyxHQUFJLFNBQVVuRCxFQUFJdkwsR0FDL0IsR0FBdUMs
bUJBQTNCQSxHQUFRc0wsZ0JBQWtDM0UsRUFBaUIsQ0FDdEUsR0FBSWxGLEdBQU96QixFQUFRc0ws
ZUFBZ0JDLEVBQ25DLE9BQU85SixJQUFTQSxVQUlsQnVFLEVBQUt3SSxPQUFXLEdBQUssU0FBVWpE
LEdBQzlCLEdBQUlrRCxHQUFTbEQsRUFBR2xJLFFBQVNpRyxFQUFXQyxHQUNwQyxPQUFPLFVBQVU5
SCxHQUNoQixHQUFJb00sR0FBd0MsbUJBQTFCcE0sR0FBS2tOLGtCQUN0QmxOLEVBQUtrTixpQkFB
aUIsS0FDdkIsT0FBT2QsSUFBUUEsRUFBS3hJLFFBQVVvSixJQU1oQ3pJLEVBQUswSSxLQUFTLEdB
QUksU0FBVW5ELEVBQUl2TCxHQUMvQixHQUF1QyxtQkFBM0JBLEdBQVFzTCxnQkFBa0MzRSxFQUFp
QixDQUN0RSxHQUFJa0gsR0FBTW5NLEVBQUdSLEVBQ1pPLEVBQU96QixFQUFRc0wsZUFBZ0JDLEVB
RWhDLElBQUs5SixFQUFPLENBSVgsR0FEQW9NLEVBQU9wTSxFQUFLa04saUJBQWlCLE1BQ3hCZCxH
QUFRQSxFQUFLeEksUUFBVWtHLEVBQzNCLE9BQVM5SixFQUlWUCxHQUFRbEIsRUFBUXVPLGtCQUFt
QmhELEdBQ25DN0osRUFBSSxDQUNKLE9BQVNELEVBQU9QLEVBQU1RLEtBRXJCLEdBREFtTSxFQUFP
cE0sRUFBS2tOLGlCQUFpQixNQUN4QmQsR0FBUUEsRUFBS3hJLFFBQVVrRyxFQUMzQixPQUFTOUos
R0FLWixZQU1IdUUsRUFBSzBJLEtBQVUsSUFBSXhQLEVBQVFzTSxxQkFDMUIsU0FBVW9ELEVBQUs1
TyxHQUNkLE1BQTZDLG1CQUFqQ0EsR0FBUXdMLHFCQUNaeEwsRUFBUXdMLHFCQUFzQm9ELEdBRzFC
MVAsRUFBUXdNLElBQ1oxTCxFQUFRaU0saUJBQWtCMkMsR0FEM0IsUUFLUixTQUFVQSxFQUFLNU8s
R0FDZCxHQUFJeUIsR0FDSCtELEtBQ0E5RCxFQUFJLEVBRUprRCxFQUFVNUUsRUFBUXdMLHFCQUFz
Qm9ELEVBR3pDLElBQWEsTUFBUkEsRUFBYyxDQUNsQixNQUFTbk4sRUFBT21ELEVBQVFsRCxLQUNB
LElBQWxCRCxFQUFLaUosVUFDVGxGLEVBQUkvRyxLQUFNZ0QsRUFJWixPQUFPK0QsR0FFUixNQUFP
WixJQUlUb0IsRUFBSzBJLEtBQVksTUFBSXhQLEVBQVF1TSx3QkFBMEIsU0FBVTJDLEVBQVdwTyxH
QUMzRSxHQUErQyxtQkFBbkNBLEdBQVF5TCx3QkFBMEM5RSxFQUM3RCxNQUFPM0csR0FBUXlMLHVC
QUF3QjJDLElBVXpDdkgsS0FPQUQsTUFFTTFILEVBQVF3TSxJQUFNdkMsRUFBUXdDLEtBQU05TixF
QUFTb08scUJBRzFDUyxHQUFPLFNBQVVDLEdBTWhCakcsRUFBUWhILFlBQWFpTixHQUFLa0MsVUFB
WSxVQUFZM0wsRUFBVSxxQkFDMUNBLEVBQVUsa0VBT3ZCeUosRUFBR1YsaUJBQWlCLHdCQUF3QnBM
LFFBQ2hEK0YsRUFBVW5JLEtBQU0sU0FBV29KLEVBQWEsZ0JBS25DOEUsRUFBR1YsaUJBQWlCLGNB
QWNwTCxRQUN2QytGLEVBQVVuSSxLQUFNLE1BQVFvSixFQUFhLGFBQWVELEVBQVcsS0FJMUQrRSxF
QUFHVixpQkFBa0IsUUFBVS9JLEVBQVUsTUFBT3JDLFFBQ3JEK0YsRUFBVW5JLEtBQUssTUFNVmtP
LEVBQUdWLGlCQUFpQixZQUFZcEwsUUFDckMrRixFQUFVbkksS0FBSyxZQU1Wa08sRUFBR1YsaUJB
QWtCLEtBQU8vSSxFQUFVLE1BQU9yQyxRQUNsRCtGLEVBQVVuSSxLQUFLLGNBSWpCaU8sR0FBTyxT
QUFVQyxHQUNoQkEsRUFBR2tDLFVBQVksbUZBS2YsSUFBSUMsR0FBUWpSLEVBQVMwQixjQUFjLFFB
Q25DdVAsR0FBTWpELGFBQWMsT0FBUSxVQUM1QmMsRUFBR2pOLFlBQWFvUCxHQUFRakQsYUFBYyxP
QUFRLEtBSXpDYyxFQUFHVixpQkFBaUIsWUFBWXBMLFFBQ3BDK0YsRUFBVW5JLEtBQU0sT0FBU29K
LEVBQWEsZUFLUyxJQUEzQzhFLEVBQUdWLGlCQUFpQixZQUFZcEwsUUFDcEMrRixFQUFVbkksS0FB
TSxXQUFZLGFBSzdCaUksRUFBUWhILFlBQWFpTixHQUFLckMsVUFBVyxFQUNZLElBQTVDcUMsRUFB
R1YsaUJBQWlCLGFBQWFwTCxRQUNyQytGLEVBQVVuSSxLQUFNLFdBQVksYUFJN0JrTyxFQUFHVixp
QkFBaUIsUUFDcEJyRixFQUFVbkksS0FBSyxZQUlYUyxFQUFRNlAsZ0JBQWtCNUYsRUFBUXdDLEtB
QU96RyxFQUFVd0IsRUFBUXhCLFNBQ2hFd0IsRUFBUXNJLHVCQUNSdEksRUFBUXVJLG9CQUNSdkks
RUFBUXdJLGtCQUNSeEksRUFBUXlJLHFCQUVSekMsR0FBTyxTQUFVQyxHQUdoQnpOLEVBQVFrUSxr
QkFBb0JsSyxFQUFRakcsS0FBTTBOLEVBQUksS0FJOUN6SCxFQUFRakcsS0FBTTBOLEVBQUksYUFD
bEI5RixFQUFjcEksS0FBTSxLQUFNdUosS0FJNUJwQixFQUFZQSxFQUFVL0YsUUFBVSxHQUFJcUgs
UUFBUXRCLEVBQVVtRixLQUFLLE1BQzNEbEYsRUFBZ0JBLEVBQWNoRyxRQUFVLEdBQUlxSCxRQUFR
ckIsRUFBY2tGLEtBQUssTUFJdkUrQixFQUFhM0UsRUFBUXdDLEtBQU1qRixFQUFRMkkseUJBS25D
dkksRUFBV2dILEdBQWMzRSxFQUFRd0MsS0FBTWpGLEVBQVFJLFVBQzlDLFNBQVVTLEVBQUdDLEdB
Q1osR0FBSThILEdBQXVCLElBQWYvSCxFQUFFbUQsU0FBaUJuRCxFQUFFcUcsZ0JBQWtCckcsRUFD
bERnSSxFQUFNL0gsR0FBS0EsRUFBRTdILFVBQ2QsT0FBTzRILEtBQU1nSSxNQUFXQSxHQUF3QixJ
QUFqQkEsRUFBSTdFLFlBQ2xDNEUsRUFBTXhJLFNBQ0x3SSxFQUFNeEksU0FBVXlJLEdBQ2hCaEks
RUFBRThILHlCQUE4RCxHQUFuQzlILEVBQUU4SCx3QkFBeUJFLE1BRzNELFNBQVVoSSxFQUFHQyxH
QUNaLEdBQUtBLEVBQ0osTUFBU0EsRUFBSUEsRUFBRTdILFdBQ2QsR0FBSzZILElBQU1ELEVBQ1Ys
T0FBTyxDQUlWLFFBQU8sR0FPVEQsRUFBWXdHLEVBQ1osU0FBVXZHLEVBQUdDLEdBR1osR0FBS0Qs
SUFBTUMsRUFFVixNQURBaEIsSUFBZSxFQUNSLENBSVIsSUFBSWdKLElBQVdqSSxFQUFFOEgseUJB
QTJCN0gsRUFBRTZILHVCQUM5QyxPQUFLRyxHQUNHQSxHQUlSQSxHQUFZakksRUFBRTZELGVBQWlC
N0QsTUFBVUMsRUFBRTRELGVBQWlCNUQsR0FDM0RELEVBQUU4SCx3QkFBeUI3SCxHQUczQixFQUdj
LEVBQVZnSSxJQUNGdFEsRUFBUXVRLGNBQWdCakksRUFBRTZILHdCQUF5QjlILEtBQVFpSSxFQUd4
RGpJLElBQU0xSixHQUFZMEosRUFBRTZELGdCQUFrQnJFLEdBQWdCRCxFQUFTQyxFQUFjUSxNQUc3
RUMsSUFBTTNKLEdBQVkySixFQUFFNEQsZ0JBQWtCckUsR0FBZ0JELEVBQVNDLEVBQWNTLEdBQzFF
LEVBSURqQixFQUNKN0gsRUFBUzZILEVBQVdnQixHQUFNN0ksRUFBUzZILEVBQVdpQixHQUNoRCxF
QUdlLEVBQVZnSSxLQUFtQixJQUUzQixTQUFVakksRUFBR0MsR0FFWixHQUFLRCxJQUFNQyxFQUVW
LE1BREFoQixJQUFlLEVBQ1IsQ0FHUixJQUFJeUcsR0FDSHZMLEVBQUksRUFDSmdPLEVBQU1uSSxF
QUFFNUgsV0FDUjRQLEVBQU0vSCxFQUFFN0gsV0FDUmdRLEdBQU9wSSxHQUNQcUksR0FBT3BJLEVB
R1IsS0FBTWtJLElBQVFILEVBQ2IsTUFBT2hJLEtBQU0xSixLQUNaMkosSUFBTTNKLEVBQVcsRUFD
akI2UixLQUNBSCxFQUFNLEVBQ05oSixFQUNFN0gsRUFBUzZILEVBQVdnQixHQUFNN0ksRUFBUzZI
LEVBQVdpQixHQUNoRCxDQUdLLElBQUtrSSxJQUFRSCxFQUNuQixNQUFPdkMsSUFBY3pGLEVBQUdD
LEVBSXpCeUYsR0FBTTFGLENBQ04sT0FBUzBGLEVBQU1BLEVBQUl0TixXQUNsQmdRLEVBQUdFLFFB
QVM1QyxFQUViQSxHQUFNekYsQ0FDTixPQUFTeUYsRUFBTUEsRUFBSXROLFdBQ2xCaVEsRUFBR0Ms
UUFBUzVDLEVBSWIsT0FBUTBDLEVBQUdqTyxLQUFPa08sRUFBR2xPLEdBQ3BCQSxHQUdELE9BQU9B
LEdBRU5zTCxHQUFjMkMsRUFBR2pPLEdBQUlrTyxFQUFHbE8sSUFHeEJpTyxFQUFHak8sS0FBT3FG
LEtBQ1Y2SSxFQUFHbE8sS0FBT3FGLEVBQWUsRUFDekIsR0FHS2xKLEdBM1lDQSxHQThZVGtJLEdB
QU9iLFFBQVUsU0FBVTRLLEVBQU1DLEdBQ2hDLE1BQU9oSyxJQUFRK0osRUFBTSxLQUFNLEtBQU1D
LElBR2xDaEssR0FBT2dKLGdCQUFrQixTQUFVdE4sRUFBTXFPLEdBU3hDLElBUE9yTyxFQUFLMkos
ZUFBaUIzSixLQUFXNUQsR0FDdkM0SSxFQUFhaEYsR0FJZHFPLEVBQU9BLEVBQUt6TSxRQUFTZ0Ys
RUFBa0IsVUFFbENuSixFQUFRNlAsaUJBQW1CcEksSUFDOUJVLEVBQWV5SSxFQUFPLFFBQ3BCakos
SUFBa0JBLEVBQWM4RSxLQUFNbUUsT0FDdENsSixJQUFrQkEsRUFBVStFLEtBQU1tRSxJQUVyQyxJ
QUNDLEdBQUkzTyxHQUFNK0QsRUFBUWpHLEtBQU13QyxFQUFNcU8sRUFHOUIsSUFBSzNPLEdBQU9q
QyxFQUFRa1EsbUJBR2xCM04sRUFBSzVELFVBQXVDLEtBQTNCNEQsRUFBSzVELFNBQVM2TSxTQUNo
QyxNQUFPdkosR0FFUCxNQUFPd0osSUFHVixNQUFPNUUsSUFBUStKLEVBQU1qUyxFQUFVLE1BQVE0
RCxJQUFTWixPQUFTLEdBRzFEa0YsR0FBT2UsU0FBVyxTQUFVOUcsRUFBU3lCLEdBS3BDLE9BSE96
QixFQUFRb0wsZUFBaUJwTCxLQUFjbkMsR0FDN0M0SSxFQUFhekcsR0FFUDhHLEVBQVU5RyxFQUFT
eUIsSUFHM0JzRSxHQUFPaUssS0FBTyxTQUFVdk8sRUFBTWMsSUFFdEJkLEVBQUsySixlQUFpQjNK
LEtBQVc1RCxHQUN2QzRJLEVBQWFoRixFQUdkLElBQUl4QixHQUFLK0YsRUFBSytHLFdBQVl4SyxF
QUFLaUMsZUFFOUJ5TCxFQUFNaFEsR0FBTXBCLEVBQU9JLEtBQU0rRyxFQUFLK0csV0FBWXhLLEVB
QUtpQyxlQUM5Q3ZFLEVBQUl3QixFQUFNYyxHQUFPb0UsR0FDakIxRCxNQUVGLE9BQWVBLFVBQVJn
TixFQUNOQSxFQUNBL1EsRUFBUTZJLGFBQWVwQixFQUN0QmxGLEVBQUttSyxhQUFjckosSUFDbEIw
TixFQUFNeE8sRUFBS2tOLGlCQUFpQnBNLEtBQVUwTixFQUFJQyxVQUMxQ0QsRUFBSTVLLE1BQ0os
TUFHSlUsR0FBT29LLE9BQVMsU0FBVUMsR0FDekIsT0FBUUEsRUFBTSxJQUFJL00sUUFBU3lHLEdB
QVlDLEtBR3hDaEUsR0FBT3hDLE1BQVEsU0FBVUMsR0FDeEIsS0FBTSxJQUFJekYsT0FBTywwQ0FB
NEN5RixJQU85RHVDLEdBQU9zSyxXQUFhLFNBQVV6TCxHQUM3QixHQUFJbkQsR0FDSDZPLEtBQ0Fy
TyxFQUFJLEVBQ0pQLEVBQUksQ0FPTCxJQUpBOEUsR0FBZ0J0SCxFQUFRcVIsaUJBQ3hCaEssR0FB
YXJILEVBQVFzUixZQUFjNUwsRUFBUXJHLE1BQU8sR0FDbERxRyxFQUFRekMsS0FBTW1GLEdBRVRk
LEVBQWUsQ0FDbkIsTUFBUy9FLEVBQU9tRCxFQUFRbEQsS0FDbEJELElBQVNtRCxFQUFTbEQsS0FD
dEJPLEVBQUlxTyxFQUFXN1IsS0FBTWlELEdBR3ZCLE9BQVFPLElBQ1AyQyxFQUFReEMsT0FBUWtP
LEVBQVlyTyxHQUFLLEdBUW5DLE1BRkFzRSxHQUFZLEtBRUwzQixHQU9ScUIsRUFBVUYsR0FBT0Us
UUFBVSxTQUFVeEUsR0FDcEMsR0FBSW9NLEdBQ0gxTSxFQUFNLEdBQ05PLEVBQUksRUFDSmdKLEVB
QVdqSixFQUFLaUosUUFFakIsSUFBTUEsR0FNQyxHQUFrQixJQUFiQSxHQUErQixJQUFiQSxHQUEr
QixLQUFiQSxFQUFrQixDQUdqRSxHQUFpQyxnQkFBckJqSixHQUFLZ1AsWUFDaEIsTUFBT2hQLEdB
QUtnUCxXQUdaLEtBQU1oUCxFQUFPQSxFQUFLaVAsV0FBWWpQLEVBQU1BLEVBQU9BLEVBQUsyTCxZ
QUMvQ2pNLEdBQU84RSxFQUFTeEUsT0FHWixJQUFrQixJQUFiaUosR0FBK0IsSUFBYkEsRUFDN0Is
TUFBT2pKLEdBQUtrUCxjQWhCWixPQUFTOUMsRUFBT3BNLEVBQUtDLEtBRXBCUCxHQUFPOEUsRUFB
UzRILEVBa0JsQixPQUFPMU0sSUFHUjZFLEVBQU9ELEdBQU82SyxXQUdickUsWUFBYSxHQUVic0Us
YUFBY3BFLEdBRWR6QixNQUFPeEMsRUFFUHVFLGNBRUEyQixRQUVBb0MsVUFDQ0MsS0FBT3hHLElB
QUssYUFBYzFJLE9BQU8sR0FDakNtUCxLQUFPekcsSUFBSyxjQUNaMEcsS0FBTzFHLElBQUssa0JB
QW1CMUksT0FBTyxHQUN0Q3FQLEtBQU8zRyxJQUFLLG9CQUdiNEcsV0FDQ3ZJLEtBQVEsU0FBVW9D
LEdBVWpCLE1BVEFBLEdBQU0sR0FBS0EsRUFBTSxHQUFHM0gsUUFBU2lHLEVBQVdDLElBR3hDeUIs
RUFBTSxJQUFPQSxFQUFNLElBQU1BLEVBQU0sSUFBTUEsRUFBTSxJQUFNLElBQUszSCxRQUFTaUcs
RUFBV0MsSUFFeEQsT0FBYnlCLEVBQU0sS0FDVkEsRUFBTSxHQUFLLElBQU1BLEVBQU0sR0FBSyxL
QUd0QkEsRUFBTXpNLE1BQU8sRUFBRyxJQUd4QnVLLE1BQVMsU0FBVWtDLEdBNkJsQixNQWxCQUEs
R0FBTSxHQUFLQSxFQUFNLEdBQUd4RyxjQUVZLFFBQTNCd0csRUFBTSxHQUFHek0sTUFBTyxFQUFH
LElBRWpCeU0sRUFBTSxJQUNYakYsR0FBT3hDLE1BQU95SCxFQUFNLElBS3JCQSxFQUFNLEtBQVFB
LEVBQU0sR0FBS0EsRUFBTSxJQUFNQSxFQUFNLElBQU0sR0FBSyxHQUFtQixTQUFiQSxFQUFNLElB
QThCLFFBQWJBLEVBQU0sS0FDekZBLEVBQU0sS0FBVUEsRUFBTSxHQUFLQSxFQUFNLElBQXFCLFFB
QWJBLEVBQU0sS0FHcENBLEVBQU0sSUFDakJqRixHQUFPeEMsTUFBT3lILEVBQU0sSUFHZEEsR0FH
Um5DLE9BQVUsU0FBVW1DLEdBQ25CLEdBQUlvRyxHQUNIQyxHQUFZckcsRUFBTSxJQUFNQSxFQUFN
LEVBRS9CLE9BQUt4QyxHQUFpQixNQUFFbUQsS0FBTVgsRUFBTSxJQUM1QixNQUlIQSxFQUFNLEdB
Q1ZBLEVBQU0sR0FBS0EsRUFBTSxJQUFNQSxFQUFNLElBQU0sR0FHeEJxRyxHQUFZL0ksRUFBUXFE
LEtBQU0wRixLQUVwQ0QsRUFBU2pMLEVBQVVrTCxHQUFVLE1BRTdCRCxFQUFTQyxFQUFTM1MsUUFB
UyxJQUFLMlMsRUFBU3hRLE9BQVN1USxHQUFXQyxFQUFTeFEsVUFHdkVtSyxFQUFNLEdBQUtBLEVB
QU0sR0FBR3pNLE1BQU8sRUFBRzZTLEdBQzlCcEcsRUFBTSxHQUFLcUcsRUFBUzlTLE1BQU8sRUFB
RzZTLElBSXhCcEcsRUFBTXpNLE1BQU8sRUFBRyxNQUl6QmlRLFFBRUM3RixJQUFPLFNBQVUySSxH
QUNoQixHQUFJL00sR0FBVytNLEVBQWlCak8sUUFBU2lHLEVBQVdDLElBQVkvRSxhQUNoRSxPQUE0
QixNQUFyQjhNLEVBQ04sV0FBYSxPQUFPLEdBQ3BCLFNBQVU3UCxHQUNULE1BQU9BLEdBQUs4QyxV
QUFZOUMsRUFBSzhDLFNBQVNDLGdCQUFrQkQsSUFJM0RtRSxNQUFTLFNBQVUwRixHQUNsQixHQUFJ
bUQsR0FBVXJLLEVBQVlrSCxFQUFZLElBRXRDLE9BQU9tRCxLQUNMQSxFQUFVLEdBQUlySixRQUFR
LE1BQVFMLEVBQWEsSUFBTXVHLEVBQVksSUFBTXZHLEVBQWEsU0FDakZYLEVBQVlrSCxFQUFXLFNB
QVUzTSxHQUNoQyxNQUFPOFAsR0FBUTVGLEtBQWdDLGdCQUFuQmxLLEdBQUsyTSxXQUEwQjNNLEVB
QUsyTSxXQUEwQyxtQkFBdEIzTSxHQUFLbUssY0FBZ0NuSyxFQUFLbUssYUFBYSxVQUFZLE9BSTFK
aEQsS0FBUSxTQUFVckcsRUFBTWlQLEVBQVVDLEdBQ2pDLE1BQU8sVUFBVWhRLEdBQ2hCLEdBQUlp
USxHQUFTM0wsR0FBT2lLLEtBQU12TyxFQUFNYyxFQUVoQyxPQUFlLE9BQVZtUCxFQUNnQixPQUFi
RixHQUVGQSxJQUlORSxHQUFVLEdBRVUsTUFBYkYsRUFBbUJFLElBQVdELEVBQ3ZCLE9BQWJELEVB
QW9CRSxJQUFXRCxFQUNsQixPQUFiRCxFQUFvQkMsR0FBcUMsSUFBNUJDLEVBQU9oVCxRQUFTK1Ms
R0FDaEMsT0FBYkQsRUFBb0JDLEdBQVNDLEVBQU9oVCxRQUFTK1MsTUFDaEMsT0FBYkQsRUFBb0JD
LEdBQVNDLEVBQU9uVCxPQUFRa1QsRUFBTTVRLFVBQWE0USxFQUNsRCxPQUFiRCxHQUFzQixJQUFN
RSxFQUFPck8sUUFBUzRFLEVBQWEsS0FBUSxLQUFNdkosUUFBUytTLE1BQ25FLE9BQWJELElBQW9C
RSxJQUFXRCxHQUFTQyxFQUFPblQsTUFBTyxFQUFHa1QsRUFBTTVRLE9BQVMsS0FBUTRRLEVBQVEs
UUFLM0YzSSxNQUFTLFNBQVVuRixFQUFNZ08sRUFBTWpFLEVBQVU3TCxFQUFPRSxHQUMvQyxHQUFJ
NlAsR0FBZ0MsUUFBdkJqTyxFQUFLcEYsTUFBTyxFQUFHLEdBQzNCc1QsRUFBK0IsU0FBckJsTyxF
QUFLcEYsVUFDZnVULEVBQWtCLFlBQVRILENBRVYsT0FBaUIsS0FBVjlQLEdBQXdCLElBQVRFLEVB
R3JCLFNBQVVOLEdBQ1QsUUFBU0EsRUFBSzlCLFlBR2YsU0FBVThCLEVBQU16QixFQUFTK1IsR0FD
eEIsR0FBSTFGLEdBQU8yRixFQUFhQyxFQUFZcEUsRUFBTXFFLEVBQVdDLEVBQ3BENUgsRUFBTXFI
LElBQVdDLEVBQVUsY0FBZ0Isa0JBQzNDTyxFQUFTM1EsRUFBSzlCLFdBQ2Q0QyxFQUFPdVAsR0FB
VXJRLEVBQUs4QyxTQUFTQyxjQUMvQjZOLEdBQVlOLElBQVFELEVBQ3BCNUUsR0FBTyxDQUVSLElB
QUtrRixFQUFTLENBR2IsR0FBS1IsRUFBUyxDQUNiLE1BQVFySCxFQUFNLENBQ2JzRCxFQUFPcE0s
Q0FDUCxPQUFTb00sRUFBT0EsRUFBTXRELEdBQ3JCLEdBQUt1SCxFQUNKakUsRUFBS3RKLFNBQVND
LGdCQUFrQmpDLEVBQ2QsSUFBbEJzTCxFQUFLbkQsU0FFTCxPQUFPLENBSVR5SCxHQUFRNUgsRUFB
ZSxTQUFUNUcsSUFBb0J3TyxHQUFTLGNBRTVDLE9BQU8sRUFNUixHQUhBQSxHQUFVTixFQUFVTyxF
QUFPMUIsV0FBYTBCLEVBQU9FLFdBRzFDVCxHQUFXUSxFQUFXLENBSzFCeEUsRUFBT3VFLEVBQ1BI
LEVBQWFwRSxFQUFNM0ssS0FBYzJLLEVBQU0zSyxPQUl2QzhPLEVBQWNDLEVBQVlwRSxFQUFLMEUs
WUFDN0JOLEVBQVlwRSxFQUFLMEUsY0FFbkJsRyxFQUFRMkYsRUFBYXJPLE9BQ3JCdU8sRUFBWTdG
LEVBQU8sS0FBUXJGLEdBQVdxRixFQUFPLEdBQzdDYSxFQUFPZ0YsR0FBYTdGLEVBQU8sR0FDM0J3
QixFQUFPcUUsR0FBYUUsRUFBTzNILFdBQVl5SCxFQUV2QyxPQUFTckUsSUFBU3FFLEdBQWFyRSxH
QUFRQSxFQUFNdEQsS0FHM0MyQyxFQUFPZ0YsRUFBWSxJQUFNQyxFQUFNMUssTUFHaEMsR0FBdUIs
SUFBbEJvRyxFQUFLbkQsWUFBb0J3QyxHQUFRVyxJQUFTcE0sRUFBTyxDQUNyRHVRLEVBQWFyTyxJ
QUFXcUQsRUFBU2tMLEVBQVdoRixFQUM1QyxZQXVCRixJQWpCS21GLElBRUp4RSxFQUFPcE0sRUFD
UHdRLEVBQWFwRSxFQUFNM0ssS0FBYzJLLEVBQU0zSyxPQUl2QzhPLEVBQWNDLEVBQVlwRSxFQUFL
MEUsWUFDN0JOLEVBQVlwRSxFQUFLMEUsY0FFbkJsRyxFQUFRMkYsRUFBYXJPLE9BQ3JCdU8sRUFB
WTdGLEVBQU8sS0FBUXJGLEdBQVdxRixFQUFPLEdBQzdDYSxFQUFPZ0YsR0FLSGhGLEtBQVMsRUFF
YixNQUFTVyxJQUFTcUUsR0FBYXJFLEdBQVFBLEVBQU10RCxLQUMzQzJDLEVBQU9nRixFQUFZLElB
QU1DLEVBQU0xSyxNQUVoQyxJQUFPcUssRUFDTmpFLEVBQUt0SixTQUFTQyxnQkFBa0JqQyxFQUNk
LElBQWxCc0wsRUFBS25ELGFBQ0h3QyxJQUdHbUYsSUFDSkosRUFBYXBFLEVBQU0zSyxLQUFjMkss
RUFBTTNLLE9BSXZDOE8sRUFBY0MsRUFBWXBFLEVBQUswRSxZQUM3Qk4sRUFBWXBFLEVBQUswRSxj
QUVuQlAsRUFBYXJPLElBQVdxRCxFQUFTa0csSUFHN0JXLElBQVNwTSxHQUNiLEtBU0wsT0FEQXlM
LElBQVFuTCxFQUNEbUwsSUFBU3JMLEdBQVdxTCxFQUFPckwsSUFBVSxHQUFLcUwsRUFBT3JMLEdB
QVMsS0FLckVnSCxPQUFVLFNBQVUySixFQUFROUUsR0FLM0IsR0FBSWpJLEdBQ0h4RixFQUFLK0Ys
RUFBS2dDLFFBQVN3SyxJQUFZeE0sRUFBS3lNLFdBQVlELEVBQU9oTyxnQkFDdER1QixHQUFPeEMs
TUFBTyx1QkFBeUJpUCxFQUt6QyxPQUFLdlMsR0FBSWlELEdBQ0RqRCxFQUFJeU4sR0FJUHpOLEVB
QUdZLE9BQVMsR0FDaEI0RSxHQUFTK00sRUFBUUEsRUFBUSxHQUFJOUUsR0FDdEIxSCxFQUFLeU0s
V0FBVzNULGVBQWdCMFQsRUFBT2hPLGVBQzdDaUksR0FBYSxTQUFVNUIsRUFBTTNGLEdBQzVCLEdB
QUl3TixHQUNIQyxFQUFVMVMsRUFBSTRLLEVBQU02QyxHQUNwQmhNLEVBQUlpUixFQUFROVIsTUFD
YixPQUFRYSxJQUNQZ1IsRUFBTWhVLEVBQVNtTSxFQUFNOEgsRUFBUWpSLElBQzdCbUosRUFBTTZI
LEtBQVd4TixFQUFTd04sR0FBUUMsRUFBUWpSLE1BRzVDLFNBQVVELEdBQ1QsTUFBT3hCLEdBQUl3
QixFQUFNLEVBQUdnRSxLQUloQnhGLElBSVQrSCxTQUVDNEssSUFBT25HLEdBQWEsU0FBVTFNLEdB
STdCLEdBQUkrTyxNQUNIbEssS0FDQWlPLEVBQVV6TSxFQUFTckcsRUFBU3NELFFBQVNsRCxFQUFP
LE1BRTdDLE9BQU8wUyxHQUFTM1AsR0FDZnVKLEdBQWEsU0FBVTVCLEVBQU0zRixFQUFTbEYsRUFB
UytSLEdBQzlDLEdBQUl0USxHQUNIcVIsRUFBWUQsRUFBU2hJLEVBQU0sS0FBTWtILE1BQ2pDclEs
RUFBSW1KLEVBQUtoSyxNQUdWLE9BQVFhLEtBQ0RELEVBQU9xUixFQUFVcFIsTUFDdEJtSixFQUFL
bkosS0FBT3dELEVBQVF4RCxHQUFLRCxNQUk1QixTQUFVQSxFQUFNekIsRUFBUytSLEdBS3hCLE1B
SkFqRCxHQUFNLEdBQUtyTixFQUNYb1IsRUFBUy9ELEVBQU8sS0FBTWlELEVBQUtuTixHQUUzQmtL
LEVBQU0sR0FBSyxNQUNIbEssRUFBUTZDLFNBSW5Cc0wsSUFBT3RHLEdBQWEsU0FBVTFNLEdBQzdC
LE1BQU8sVUFBVTBCLEdBQ2hCLE1BQU9zRSxJQUFRaEcsRUFBVTBCLEdBQU9aLE9BQVMsS0FJM0Np
RyxTQUFZMkYsR0FBYSxTQUFVak4sR0FFbEMsTUFEQUEsR0FBT0EsRUFBSzZELFFBQVNpRyxFQUFX
QyxJQUN6QixTQUFVOUgsR0FDaEIsT0FBU0EsRUFBS2dQLGFBQWVoUCxFQUFLdVIsV0FBYS9NLEVB
QVN4RSxJQUFTL0MsUUFBU2MsU0FXNUV5VCxLQUFReEcsR0FBYyxTQUFVd0csR0FNL0IsTUFKTTFL
LEdBQVlvRCxLQUFLc0gsR0FBUSxLQUM5QmxOLEdBQU94QyxNQUFPLHFCQUF1QjBQLEdBRXRDQSxF
QUFPQSxFQUFLNVAsUUFBU2lHLEVBQVdDLElBQVkvRSxjQUNyQyxTQUFVL0MsR0FDaEIsR0FBSXlS
LEVBQ0osR0FDQyxJQUFNQSxFQUFXdk0sRUFDaEJsRixFQUFLd1IsS0FDTHhSLEVBQUttSyxhQUFh
LGFBQWVuSyxFQUFLbUssYUFBYSxRQUduRCxNQURBc0gsR0FBV0EsRUFBUzFPLGNBQ2IwTyxJQUFh
RCxHQUEyQyxJQUFuQ0MsRUFBU3hVLFFBQVN1VSxFQUFPLFlBRTVDeFIsRUFBT0EsRUFBSzlCLGFB
QWlDLElBQWxCOEIsRUFBS2lKLFNBQzNDLFFBQU8sS0FLVDlILE9BQVUsU0FBVW5CLEdBQ25CLEdB
QUkwUixHQUFPblYsRUFBT29WLFVBQVlwVixFQUFPb1YsU0FBU0QsSUFDOUMsT0FBT0EsSUFBUUEs
RUFBSzVVLE1BQU8sS0FBUWtELEVBQUs4SixJQUd6QzhILEtBQVEsU0FBVTVSLEdBQ2pCLE1BQU9B
LEtBQVNpRixHQUdqQjRNLE1BQVMsU0FBVTdSLEdBQ2xCLE1BQU9BLEtBQVM1RCxFQUFTMFYsaUJB
QW1CMVYsRUFBUzJWLFVBQVkzVixFQUFTMlYsZ0JBQWtCL1IsRUFBS2tDLE1BQVFsQyxFQUFLZ1Ms
T0FBU2hTLEVBQUtpUyxXQUk3SEMsUUFBV3BHLElBQXNCLEdBQ2pDakQsU0FBWWlELElBQXNCLEdB
RWxDcUcsUUFBVyxTQUFVblMsR0FHcEIsR0FBSThDLEdBQVc5QyxFQUFLOEMsU0FBU0MsYUFDN0Is
T0FBcUIsVUFBYkQsS0FBMEI5QyxFQUFLbVMsU0FBMEIsV0FBYnJQLEtBQTJCOUMsRUFBS29TLFVB
R3JGQSxTQUFZLFNBQVVwUyxHQU9yQixNQUpLQSxHQUFLOUIsWUFDVDhCLEVBQUs5QixXQUFXbVUs
Y0FHVnJTLEVBQUtvUyxZQUFhLEdBSTFCRSxNQUFTLFNBQVV0UyxHQUtsQixJQUFNQSxFQUFPQSxF
QUFLaVAsV0FBWWpQLEVBQU1BLEVBQU9BLEVBQUsyTCxZQUMvQyxHQUFLM0wsRUFBS2lKLFNBQVcs
RUFDcEIsT0FBTyxDQUdULFFBQU8sR0FHUjBILE9BQVUsU0FBVTNRLEdBQ25CLE9BQVF1RSxFQUFL
Z0MsUUFBZSxNQUFHdkcsSUFJaEN1UyxPQUFVLFNBQVV2UyxHQUNuQixNQUFPeUgsR0FBUXlDLEtB
QU1sSyxFQUFLOEMsV0FHM0J1SyxNQUFTLFNBQVVyTixHQUNsQixNQUFPd0gsR0FBUTBDLEtBQU1s
SyxFQUFLOEMsV0FHM0IwUCxPQUFVLFNBQVV4UyxHQUNuQixHQUFJYyxHQUFPZCxFQUFLOEMsU0FB
U0MsYUFDekIsT0FBZ0IsVUFBVGpDLEdBQWtDLFdBQWRkLEVBQUtrQyxNQUE4QixXQUFUcEIsR0FH
dEQvQyxLQUFRLFNBQVVpQyxHQUNqQixHQUFJdU8sRUFDSixPQUF1QyxVQUFoQ3ZPLEVBQUs4QyxT
QUFTQyxlQUNOLFNBQWQvQyxFQUFLa0MsT0FJbUMsT0FBckNxTSxFQUFPdk8sRUFBS21LLGFBQWEs
VUFBMkMsU0FBdkJvRSxFQUFLeEwsZ0JBSXZEM0MsTUFBUzRMLEdBQXVCLFdBQy9CLE9BQVMsS0FH
VjFMLEtBQVEwTCxHQUF1QixTQUFVRSxFQUFjOU0sR0FDdEQsT0FBU0EsRUFBUyxLQUduQmlCLEdB
QU0yTCxHQUF1QixTQUFVRSxFQUFjOU0sRUFBUTZNLEdBQzVELE9BQVNBLEVBQVcsRUFBSUEsRUFB
VzdNLEVBQVM2TSxLQUc3Q3dHLEtBQVF6RyxHQUF1QixTQUFVRSxFQUFjOU0sR0FFdEQsSUFEQSxH
QUFJYSxHQUFJLEVBQ0FBLEVBQUliLEVBQVFhLEdBQUssRUFDeEJpTSxFQUFhbFAsS0FBTWlELEVB
RXBCLE9BQU9pTSxLQUdSd0csSUFBTzFHLEdBQXVCLFNBQVVFLEVBQWM5TSxHQUVyRCxJQURBLEdB
QUlhLEdBQUksRUFDQUEsRUFBSWIsRUFBUWEsR0FBSyxFQUN4QmlNLEVBQWFsUCxLQUFNaUQsRUFF
cEIsT0FBT2lNLEtBR1J5RyxHQUFNM0csR0FBdUIsU0FBVUUsRUFBYzlNLEVBQVE2TSxHQUU1RCxJ
QURBLEdBQUloTSxHQUFJZ00sRUFBVyxFQUFJQSxFQUFXN00sRUFBUzZNLElBQ2pDaE0sR0FBSyxH
QUNkaU0sRUFBYWxQLEtBQU1pRCxFQUVwQixPQUFPaU0sS0FHUjBHLEdBQU01RyxHQUF1QixTQUFV
RSxFQUFjOU0sRUFBUTZNLEdBRTVELElBREEsR0FBSWhNLEdBQUlnTSxFQUFXLEVBQUlBLEVBQVc3
TSxFQUFTNk0sSUFDakNoTSxFQUFJYixHQUNiOE0sRUFBYWxQLEtBQU1pRCxFQUVwQixPQUFPaU0s
T0FLVjNILEVBQUtnQyxRQUFhLElBQUloQyxFQUFLZ0MsUUFBWSxFQUd2QyxLQUFNdEcsS0FBTzRT
LE9BQU8sRUFBTUMsVUFBVSxFQUFNQyxNQUFNLEVBQU1DLFVBQVUsRUFBTUMsT0FBTyxHQUM1RTFP
LEVBQUtnQyxRQUFTdEcsR0FBTTJMLEdBQW1CM0wsRUFFeEMsS0FBTUEsS0FBT2lULFFBQVEsRUFB
TUMsT0FBTyxHQUNqQzVPLEVBQUtnQyxRQUFTdEcsR0FBTTRMLEdBQW9CNUwsRUFJekMsU0FBUytR
LE9BQ1RBLEdBQVcvUixVQUFZc0YsRUFBSzZPLFFBQVU3TyxFQUFLZ0MsUUFDM0NoQyxFQUFLeU0s
V0FBYSxHQUFJQSxJQUV0QnRNLEVBQVdKLEdBQU9JLFNBQVcsU0FBVXBHLEVBQVUrVSxHQUNoRCxH
QUFJbkMsR0FBUzNILEVBQU8rSixFQUFRcFIsRUFDM0JxUixFQUFPL0osRUFBUWdLLEVBQ2ZDLEVB
QVM5TixFQUFZckgsRUFBVyxJQUVqQyxJQUFLbVYsRUFDSixNQUFPSixHQUFZLEVBQUlJLEVBQU8z
VyxNQUFPLEVBR3RDeVcsR0FBUWpWLEVBQ1JrTCxLQUNBZ0ssRUFBYWpQLEVBQUttTCxTQUVsQixP
QUFRNkQsRUFBUSxDQUdUckMsS0FBWTNILEVBQVE3QyxFQUFPa0QsS0FBTTJKLE1BQ2pDaEssSUFF
SmdLLEVBQVFBLEVBQU16VyxNQUFPeU0sRUFBTSxHQUFHbkssU0FBWW1VLEdBRTNDL0osRUFBT3hN
LEtBQU9zVyxPQUdmcEMsR0FBVSxHQUdKM0gsRUFBUTVDLEVBQWFpRCxLQUFNMkosTUFDaENyQyxF
QUFVM0gsRUFBTXdCLFFBQ2hCdUksRUFBT3RXLE1BQ040RyxNQUFPc04sRUFFUGhQLEtBQU1xSCxF
QUFNLEdBQUczSCxRQUFTbEQsRUFBTyxPQUVoQzZVLEVBQVFBLEVBQU16VyxNQUFPb1UsRUFBUTlS
LFFBSTlCLEtBQU04QyxJQUFRcUMsR0FBS3dJLFNBQ1p4RCxFQUFReEMsRUFBVzdFLEdBQU8wSCxL
QUFNMkosS0FBY0MsRUFBWXRSLE1BQzlEcUgsRUFBUWlLLEVBQVl0UixHQUFRcUgsTUFDN0IySCxF
QUFVM0gsRUFBTXdCLFFBQ2hCdUksRUFBT3RXLE1BQ040RyxNQUFPc04sRUFDUGhQLEtBQU1BLEVB
Q051QixRQUFTOEYsSUFFVmdLLEVBQVFBLEVBQU16VyxNQUFPb1UsRUFBUTlSLFFBSS9CLEtBQU04
UixFQUNMLE1BT0YsTUFBT21DLEdBQ05FLEVBQU1uVSxPQUNObVUsRUFDQ2pQLEdBQU94QyxNQUFP
eEQsR0FFZHFILEVBQVlySCxFQUFVa0wsR0FBUzFNLE1BQU8sR0FHekMsU0FBU3VOLElBQVlpSixH
QUlwQixJQUhBLEdBQUlyVCxHQUFJLEVBQ1BNLEVBQU0rUyxFQUFPbFUsT0FDYmQsRUFBVyxHQUNK
MkIsRUFBSU0sRUFBS04sSUFDaEIzQixHQUFZZ1YsRUFBT3JULEdBQUcyRCxLQUV2QixPQUFPdEYs
R0FHUixRQUFTc0ssSUFBZXdJLEVBQVNzQyxFQUFZQyxHQUM1QyxHQUFJN0ssR0FBTTRLLEVBQVc1
SyxJQUNwQjhLLEVBQU9GLEVBQVczSyxLQUNsQjhCLEVBQU0rSSxHQUFROUssRUFDZCtLLEVBQW1C
RixHQUFnQixlQUFSOUksRUFDM0JpSixFQUFXdE8sR0FFWixPQUFPa08sR0FBV3RULE1BRWpCLFNB
QVVKLEVBQU16QixFQUFTK1IsR0FDeEIsTUFBU3RRLEVBQU9BLEVBQU04SSxHQUNyQixHQUF1QixJ
QUFsQjlJLEVBQUtpSixVQUFrQjRLLEVBQzNCLE1BQU96QyxHQUFTcFIsRUFBTXpCLEVBQVMrUixF
QUdqQyxRQUFPLEdBSVIsU0FBVXRRLEVBQU16QixFQUFTK1IsR0FDeEIsR0FBSXlELEdBQVV4RCxF
QUFhQyxFQUMxQndELEdBQWF6TyxFQUFTdU8sRUFHdkIsSUFBS3hELEdBQ0osTUFBU3RRLEVBQU9B
LEVBQU04SSxHQUNyQixJQUF1QixJQUFsQjlJLEVBQUtpSixVQUFrQjRLLElBQ3RCekMsRUFBU3BS
LEVBQU16QixFQUFTK1IsR0FDNUIsT0FBTyxNQUtWLE9BQVN0USxFQUFPQSxFQUFNOEksR0FDckIs
R0FBdUIsSUFBbEI5SSxFQUFLaUosVUFBa0I0SyxFQU8zQixHQU5BckQsRUFBYXhRLEVBQU15QixL
QUFjekIsRUFBTXlCLE9BSXZDOE8sRUFBY0MsRUFBWXhRLEVBQUs4USxZQUFlTixFQUFZeFEsRUFB
SzhRLGNBRTFEOEMsR0FBUUEsSUFBUzVULEVBQUs4QyxTQUFTQyxjQUNuQy9DLEVBQU9BLEVBQU04
SSxJQUFTOUksTUFDaEIsQ0FBQSxJQUFNK1QsRUFBV3hELEVBQWExRixLQUNwQ2tKLEVBQVUsS0FB
UXhPLEdBQVd3TyxFQUFVLEtBQVFELEVBRy9DLE1BQVFFLEdBQVUsR0FBTUQsRUFBVSxFQU1sQyxJ
QUhBeEQsRUFBYTFGLEdBQVFtSixFQUdmQSxFQUFVLEdBQU01QyxFQUFTcFIsRUFBTXpCLEVBQVMr
UixHQUM3QyxPQUFPLEVBTVosT0FBTyxHQUlWLFFBQVMyRCxJQUFnQkMsR0FDeEIsTUFBT0EsR0FB
UzlVLE9BQVMsRUFDeEIsU0FBVVksRUFBTXpCLEVBQVMrUixHQUN4QixHQUFJclEsR0FBSWlVLEVB
QVM5VSxNQUNqQixPQUFRYSxJQUNQLElBQU1pVSxFQUFTalUsR0FBSUQsRUFBTXpCLEVBQVMrUixH
QUNqQyxPQUFPLENBR1QsUUFBTyxHQUVSNEQsRUFBUyxHQUdYLFFBQVNDLElBQWtCN1YsRUFBVThW
LEVBQVVqUixHQUc5QyxJQUZBLEdBQUlsRCxHQUFJLEVBQ1BNLEVBQU02VCxFQUFTaFYsT0FDUmEs
RUFBSU0sRUFBS04sSUFDaEJxRSxHQUFRaEcsRUFBVThWLEVBQVNuVSxHQUFJa0QsRUFFaEMsT0FB
T0EsR0FHUixRQUFTa1IsSUFBVWhELEVBQVd0UixFQUFLZ04sRUFBUXhPLEVBQVMrUixHQU9uRCxJ
QU5BLEdBQUl0USxHQUNIc1UsS0FDQXJVLEVBQUksRUFDSk0sRUFBTThRLEVBQVVqUyxPQUNoQm1W
LEVBQWdCLE1BQVB4VSxFQUVGRSxFQUFJTSxFQUFLTixLQUNWRCxFQUFPcVIsRUFBVXBSLE1BQ2hC
OE0sSUFBVUEsRUFBUS9NLEVBQU16QixFQUFTK1IsS0FDdENnRSxFQUFhdFgsS0FBTWdELEdBQ2R1
VSxHQUNKeFUsRUFBSS9DLEtBQU1pRCxJQU1kLE9BQU9xVSxHQUdSLFFBQVNFLElBQVk5RSxFQUFX
cFIsRUFBVThTLEVBQVNxRCxFQUFZQyxFQUFZQyxHQU8xRSxNQU5LRixLQUFlQSxFQUFZaFQsS0FD
L0JnVCxFQUFhRCxHQUFZQyxJQUVyQkMsSUFBZUEsRUFBWWpULEtBQy9CaVQsRUFBYUYsR0FBWUUs
RUFBWUMsSUFFL0IzSixHQUFhLFNBQVU1QixFQUFNakcsRUFBUzVFLEVBQVMrUixHQUNyRCxHQUFJ
c0UsR0FBTTNVLEVBQUdELEVBQ1o2VSxLQUNBQyxLQUNBQyxFQUFjNVIsRUFBUS9ELE9BR3RCSyxF
QUFRMkosR0FBUStLLEdBQWtCN1YsR0FBWSxJQUFLQyxFQUFRMEssVUFBYTFLLEdBQVlBLE1BR3BG
eVcsR0FBWXRGLElBQWV0RyxHQUFTOUssRUFFbkNtQixFQURBNFUsR0FBVTVVLEVBQU9vVixFQUFR
bkYsRUFBV25SLEVBQVMrUixHQUc5QzJFLEVBQWE3RCxFQUVac0QsSUFBZ0J0TCxFQUFPc0csRUFB
WXFGLEdBQWVOLE1BTWpEdFIsRUFDRDZSLENBUUYsSUFMSzVELEdBQ0pBLEVBQVM0RCxFQUFXQyxF
QUFZMVcsRUFBUytSLEdBSXJDbUUsRUFBYSxDQUNqQkcsRUFBT1AsR0FBVVksRUFBWUgsR0FDN0JM
LEVBQVlHLEtBQVVyVyxFQUFTK1IsR0FHL0JyUSxFQUFJMlUsRUFBS3hWLE1BQ1QsT0FBUWEsS0FD
REQsRUFBTzRVLEVBQUszVSxNQUNqQmdWLEVBQVlILEVBQVE3VSxNQUFTK1UsRUFBV0YsRUFBUTdV
LElBQU9ELElBSzFELEdBQUtvSixHQUNKLEdBQUtzTCxHQUFjaEYsRUFBWSxDQUM5QixHQUFLZ0Ys
RUFBYSxDQUVqQkUsS0FDQTNVLEVBQUlnVixFQUFXN1YsTUFDZixPQUFRYSxLQUNERCxFQUFPaVYs
RUFBV2hWLEtBRXZCMlUsRUFBSzVYLEtBQU9nWSxFQUFVL1UsR0FBS0QsRUFHN0IwVSxHQUFZLEtB
QU9PLEtBQWtCTCxFQUFNdEUsR0FJNUNyUSxFQUFJZ1YsRUFBVzdWLE1BQ2YsT0FBUWEsS0FDREQs
RUFBT2lWLEVBQVdoVixNQUN0QjJVLEVBQU9GLEVBQWF6WCxFQUFTbU0sRUFBTXBKLEdBQVM2VSxF
QUFPNVUsU0FFcERtSixFQUFLd0wsS0FBVXpSLEVBQVF5UixHQUFRNVUsU0FPbENpVixHQUFhWixH
QUNaWSxJQUFlOVIsRUFDZDhSLEVBQVd0VSxPQUFRb1UsRUFBYUUsRUFBVzdWLFFBQzNDNlYsR0FF
R1AsRUFDSkEsRUFBWSxLQUFNdlIsRUFBUzhSLEVBQVkzRSxHQUV2Q3RULEVBQUtrRCxNQUFPaUQs
RUFBUzhSLEtBTXpCLFFBQVNDLElBQW1CNUIsR0F3QjNCLElBdkJBLEdBQUk2QixHQUFjL0QsRUFB
UzVRLEVBQzFCRCxFQUFNK1MsRUFBT2xVLE9BQ2JnVyxFQUFrQjdRLEVBQUs4SyxTQUFVaUUsRUFB
TyxHQUFHcFIsTUFDM0NtVCxFQUFtQkQsR0FBbUI3USxFQUFLOEssU0FBUyxLQUNwRHBQLEVBQUlt
VixFQUFrQixFQUFJLEVBRzFCRSxFQUFlMU0sR0FBZSxTQUFVNUksR0FDdkMsTUFBT0EsS0FBU21W
LEdBQ2RFLEdBQWtCLEdBQ3JCRSxFQUFrQjNNLEdBQWUsU0FBVTVJLEdBQzFDLE1BQU8vQyxHQUFT
a1ksRUFBY25WLE9BQzVCcVYsR0FBa0IsR0FDckJuQixHQUFhLFNBQVVsVSxFQUFNekIsRUFBUytS
LEdBQ3JDLEdBQUk1USxJQUFTMFYsSUFBcUI5RSxHQUFPL1IsSUFBWXNHLE1BQ25Ec1EsRUFBZTVX
LEdBQVMwSyxTQUN4QnFNLEVBQWN0VixFQUFNekIsRUFBUytSLEdBQzdCaUYsRUFBaUJ2VixFQUFN
ekIsRUFBUytSLEdBR2xDLE9BREE2RSxHQUFlLEtBQ1J6VixJQUdETyxFQUFJTSxFQUFLTixJQUNo
QixHQUFNbVIsRUFBVTdNLEVBQUs4SyxTQUFVaUUsRUFBT3JULEdBQUdpQyxNQUN4Q2dTLEdBQWF0
TCxHQUFjcUwsR0FBZ0JDLEdBQVk5QyxRQUNqRCxDQUlOLEdBSEFBLEVBQVU3TSxFQUFLd0ksT0FB
UXVHLEVBQU9yVCxHQUFHaUMsTUFBT2hDLE1BQU8sS0FBTW9ULEVBQU9yVCxHQUFHd0QsU0FHMUQy
TixFQUFTM1AsR0FBWSxDQUd6QixJQURBakIsSUFBTVAsRUFDRU8sRUFBSUQsRUFBS0MsSUFDaEIs
R0FBSytELEVBQUs4SyxTQUFVaUUsRUFBTzlTLEdBQUcwQixNQUM3QixLQUdGLE9BQU9zUyxJQUNO
dlUsRUFBSSxHQUFLZ1UsR0FBZ0JDLEdBQ3pCalUsRUFBSSxHQUFLb0ssR0FFUmlKLEVBQU94VyxN
QUFPLEVBQUdtRCxFQUFJLEdBQUlsRCxRQUFTNkcsTUFBZ0MsTUFBekIwUCxFQUFRclQsRUFBSSxH
QUFJaUMsS0FBZSxJQUFNLE1BQzdFTixRQUFTbEQsRUFBTyxNQUNsQjBTLEVBQ0FuUixFQUFJTyxH
QUFLMFUsR0FBbUI1QixFQUFPeFcsTUFBT21ELEVBQUdPLElBQzdDQSxFQUFJRCxHQUFPMlUsR0FB
b0I1QixFQUFTQSxFQUFPeFcsTUFBTzBELElBQ3REQSxFQUFJRCxHQUFPOEosR0FBWWlKLElBR3pC
WSxFQUFTbFgsS0FBTW9VLEdBSWpCLE1BQU82QyxJQUFnQkMsR0FHeEIsUUFBU3NCLElBQTBCQyxF
QUFpQkMsR0FDbkQsR0FBSUMsR0FBUUQsRUFBWXRXLE9BQVMsRUFDaEN3VyxFQUFZSCxFQUFnQnJX
LE9BQVMsRUFDckN5VyxFQUFlLFNBQVV6TSxFQUFNN0ssRUFBUytSLEVBQUtuTixFQUFTMlMsR0FD
ckQsR0FBSTlWLEdBQU1RLEVBQUc0USxFQUNaMkUsRUFBZSxFQUNmOVYsRUFBSSxJQUNKb1IsRUFB
WWpJLE1BQ1o0TSxLQUNBQyxFQUFnQnBSLEVBRWhCcEYsRUFBUTJKLEdBQVF3TSxHQUFhclIsRUFB
SzBJLEtBQVUsSUFBRyxJQUFLNkksR0FFcERJLEVBQWlCM1EsR0FBNEIsTUFBakIwUSxFQUF3QixF
QUFJdlUsS0FBS0MsVUFBWSxHQUN6RXBCLEVBQU1kLEVBQU1MLE1BU2IsS0FQSzBXLElBQ0pqUixF
QUFtQnRHLElBQVluQyxHQUFZbUMsR0FBV3VYLEdBTS9DN1YsSUFBTU0sR0FBNEIsT0FBcEJQLEVB
QU9QLEVBQU1RLElBQWFBLElBQU0sQ0FDckQsR0FBSzJWLEdBQWE1VixFQUFPLENBQ3hCUSxFQUFJ
LEVBQ0VqQyxHQUFXeUIsRUFBSzJKLGdCQUFrQnZOLElBQ3ZDNEksRUFBYWhGLEdBQ2JzUSxHQUFP
cEwsRUFFUixPQUFTa00sRUFBVXFFLEVBQWdCalYsS0FDbEMsR0FBSzRRLEVBQVNwUixFQUFNekIs
R0FBV25DLEVBQVVrVSxHQUFPLENBQy9Dbk4sRUFBUW5HLEtBQU1nRCxFQUNkLE9BR0c4VixJQUNK
dlEsRUFBVTJRLEdBS1BQLEtBRUUzVixHQUFRb1IsR0FBV3BSLElBQ3hCK1YsSUFJSTNNLEdBQ0pp
SSxFQUFVclUsS0FBTWdELElBZ0JuQixHQVRBK1YsR0FBZ0I5VixFQVNYMFYsR0FBUzFWLElBQU04
VixFQUFlLENBQ2xDdlYsRUFBSSxDQUNKLE9BQVM0USxFQUFVc0UsRUFBWWxWLEtBQzlCNFEsRUFB
U0MsRUFBVzJFLEVBQVl6WCxFQUFTK1IsRUFHMUMsSUFBS2xILEVBQU8sQ0FFWCxHQUFLMk0sRUFB
ZSxFQUNuQixNQUFROVYsSUFDQW9SLEVBQVVwUixJQUFNK1YsRUFBVy9WLEtBQ2pDK1YsRUFBVy9W
LEdBQUsrRixFQUFJeEksS0FBTTJGLEdBTTdCNlMsR0FBYTNCLEdBQVUyQixHQUl4QmhaLEVBQUtr
RCxNQUFPaUQsRUFBUzZTLEdBR2hCRixJQUFjMU0sR0FBUTRNLEVBQVc1VyxPQUFTLEdBQzVDMlcs
RUFBZUwsRUFBWXRXLE9BQVcsR0FFeENrRixHQUFPc0ssV0FBWXpMLEdBVXJCLE1BTEsyUyxLQUNK
dlEsRUFBVTJRLEVBQ1ZyUixFQUFtQm9SLEdBR2I1RSxFQUdULE9BQU9zRSxHQUNOM0ssR0FBYzZL
LEdBQ2RBLEVBK0tGLE1BNUtBbFIsR0FBVUwsR0FBT0ssUUFBVSxTQUFVckcsRUFBVWlMLEdBQzlD
LEdBQUl0SixHQUNIeVYsS0FDQUQsS0FDQWhDLEVBQVM3TixFQUFldEgsRUFBVyxJQUVwQyxLQUFN
bVYsRUFBUyxDQUVSbEssSUFDTEEsRUFBUTdFLEVBQVVwRyxJQUVuQjJCLEVBQUlzSixFQUFNbkss
TUFDVixPQUFRYSxJQUNQd1QsRUFBU3lCLEdBQW1CM0wsRUFBTXRKLElBQzdCd1QsRUFBUWhTLEdB
Q1ppVSxFQUFZMVksS0FBTXlXLEdBRWxCZ0MsRUFBZ0J6WSxLQUFNeVcsRUFLeEJBLEdBQVM3TixF
QUFldEgsRUFBVWtYLEdBQTBCQyxFQUFpQkMsSUFHN0VqQyxFQUFPblYsU0FBV0EsRUFFbkIsTUFB
T21WLElBWVI3TyxFQUFTTixHQUFPTSxPQUFTLFNBQVV0RyxFQUFVQyxFQUFTNEUsRUFBU2lHLEdB
QzlELEdBQUluSixHQUFHcVQsRUFBUTZDLEVBQU9qVSxFQUFNK0ssRUFDM0JtSixFQUErQixrQkFB
YjlYLElBQTJCQSxFQUM3Q2lMLEdBQVNILEdBQVExRSxFQUFXcEcsRUFBVzhYLEVBQVM5WCxVQUFZ
QSxFQU03RCxJQUpBNkUsRUFBVUEsTUFJWSxJQUFqQm9HLEVBQU1uSyxPQUFlLENBSXpCLEdBREFr
VSxFQUFTL0osRUFBTSxHQUFLQSxFQUFNLEdBQUd6TSxNQUFPLEdBQy9Cd1csRUFBT2xVLE9BQVMs
R0FBa0MsUUFBNUIrVyxFQUFRN0MsRUFBTyxJQUFJcFIsTUFDdkIsSUFBckIzRCxFQUFRMEssVUFB
a0IvRCxHQUFrQlgsRUFBSzhLLFNBQVVpRSxFQUFPLEdBQUdwUixNQUFTLENBRy9FLEdBREEzRCxH
QUFZZ0csRUFBSzBJLEtBQVMsR0FBR2tKLEVBQU0xUyxRQUFRLEdBQUc3QixRQUFRaUcsRUFBV0Ms
SUFBWXZKLFFBQWtCLElBQ3pGQSxFQUNMLE1BQU80RSxFQUdJaVQsS0FDWDdYLEVBQVVBLEVBQVFM
LFlBR25CSSxFQUFXQSxFQUFTeEIsTUFBT3dXLEVBQU92SSxRQUFRbkgsTUFBTXhFLFFBSWpEYSxF
QUFJOEcsRUFBd0IsYUFBRW1ELEtBQU01TCxHQUFhLEVBQUlnVixFQUFPbFUsTUFDNUQsT0FBUWEs
SUFBTSxDQUliLEdBSEFrVyxFQUFRN0MsRUFBT3JULEdBR1ZzRSxFQUFLOEssU0FBV25OLEVBQU9p
VSxFQUFNalUsTUFDakMsS0FFRCxLQUFNK0ssRUFBTzFJLEVBQUswSSxLQUFNL0ssTUFFakJrSCxF
QUFPNkQsRUFDWmtKLEVBQU0xUyxRQUFRLEdBQUc3QixRQUFTaUcsRUFBV0MsSUFDckNGLEVBQVNz
QyxLQUFNb0osRUFBTyxHQUFHcFIsT0FBVXFJLEdBQWFoTSxFQUFRTCxhQUFnQkssSUFDcEUsQ0FL
SixHQUZBK1UsRUFBTzNTLE9BQVFWLEVBQUcsR0FDbEIzQixFQUFXOEssRUFBS2hLLFFBQVVpTCxH
QUFZaUosSUFDaENoVixFQUVMLE1BREF0QixHQUFLa0QsTUFBT2lELEVBQVNpRyxHQUNkakcsQ0FH
UixTQWVKLE9BUEVpVCxHQUFZelIsRUFBU3JHLEVBQVVpTCxJQUNoQ0gsRUFDQTdLLEdBQ0MyRyxF
QUNEL0IsR0FDQzVFLEdBQVdxSixFQUFTc0MsS0FBTTVMLElBQWNpTSxHQUFhaE0sRUFBUUwsYUFB
Z0JLLEdBRXhFNEUsR0FNUjFGLEVBQVFzUixXQUFhdE4sRUFBUTRDLE1BQU0sSUFBSTNELEtBQU1t
RixHQUFZeUUsS0FBSyxNQUFRN0ksRUFJdEVoRSxFQUFRcVIsbUJBQXFCL0osRUFHN0JDLElBSUF2
SCxFQUFRdVEsYUFBZS9DLEdBQU8sU0FBVUMsR0FFdkMsTUFBMEUsR0FBbkVBLEVBQUcwQyx3QkFB
eUJ4UixFQUFTMEIsY0FBYyxlQU1yRG1OLEdBQU8sU0FBVUMsR0FFdEIsTUFEQUEsR0FBR2tDLFVB
QVksbUJBQytCLE1BQXZDbEMsRUFBRytELFdBQVc5RSxhQUFhLFdBRWxDZ0IsR0FBVyx5QkFBMEIs
U0FBVW5MLEVBQU1jLEVBQU0yRCxHQUMxRCxJQUFNQSxFQUNMLE1BQU96RSxHQUFLbUssYUFBY3JK
LEVBQTZCLFNBQXZCQSxFQUFLaUMsY0FBMkIsRUFBSSxLQU9qRXRGLEVBQVE2SSxZQUFlMkUsR0FB
TyxTQUFVQyxHQUc3QyxNQUZBQSxHQUFHa0MsVUFBWSxXQUNmbEMsRUFBRytELFdBQVc3RSxhQUFj
LFFBQVMsSUFDWSxLQUExQ2MsRUFBRytELFdBQVc5RSxhQUFjLFlBRW5DZ0IsR0FBVyxRQUFTLFNB
QVVuTCxFQUFNYyxFQUFNMkQsR0FDekMsSUFBTUEsR0FBeUMsVUFBaEN6RSxFQUFLOEMsU0FBU0Ms
Y0FDNUIsTUFBTy9DLEdBQUtxVyxlQU9UcEwsR0FBTyxTQUFVQyxHQUN0QixNQUFzQyxPQUEvQkEs
RUFBR2YsYUFBYSxlQUV2QmdCLEdBQVdoRixFQUFVLFNBQVVuRyxFQUFNYyxFQUFNMkQsR0FDMUMs
R0FBSStKLEVBQ0osS0FBTS9KLEVBQ0wsTUFBT3pFLEdBQU1jLE1BQVcsRUFBT0EsRUFBS2lDLGVB
Q2pDeUwsRUFBTXhPLEVBQUtrTixpQkFBa0JwTSxLQUFXME4sRUFBSUMsVUFDN0NELEVBQUk1SyxN
QUNMLE9BS0dVLElBRUgvSCxFQUlKOEIsR0FBTzRPLEtBQU8zSSxFQUNkakcsRUFBT2dRLEtBQU8v
SixFQUFPNkssVUFHckI5USxFQUFPZ1EsS0FBTSxLQUFRaFEsRUFBT2dRLEtBQUs5SCxRQUNqQ2xJ
LEVBQU91USxXQUFhdlEsRUFBT2lZLE9BQVNoUyxFQUFPc0ssV0FDM0N2USxFQUFPTixLQUFPdUcs
RUFBT0UsUUFDckJuRyxFQUFPa1ksU0FBV2pTLEVBQU9HLE1BQ3pCcEcsRUFBT2dILFNBQVdmLEVB
QU9lLFNBQ3pCaEgsRUFBT21ZLGVBQWlCbFMsRUFBT29LLE1BSy9CLElBQUk1RixHQUFNLFNBQVU5
SSxFQUFNOEksRUFBSzJOLEdBQzlCLEdBQUl2RixNQUNId0YsRUFBcUJsVixTQUFWaVYsQ0FFWixR
QUFVelcsRUFBT0EsRUFBTThJLEtBQTZCLElBQWxCOUksRUFBS2lKLFNBQ3RDLEdBQXVCLElBQWxC
akosRUFBS2lKLFNBQWlCLENBQzFCLEdBQUt5TixHQUFZclksRUFBUTJCLEdBQU8yVyxHQUFJRixH
QUNuQyxLQUVEdkYsR0FBUWxVLEtBQU1nRCxHQUdoQixNQUFPa1IsSUFJSjBGLEVBQVcsU0FBVUMs
RUFBRzdXLEdBRzNCLElBRkEsR0FBSWtSLE1BRUkyRixFQUFHQSxFQUFJQSxFQUFFbEwsWUFDSSxJ
QUFma0wsRUFBRTVOLFVBQWtCNE4sSUFBTTdXLEdBQzlCa1IsRUFBUWxVLEtBQU02WixFQUloQixP
QUFPM0YsSUFJSjRGLEVBQWdCelksRUFBT2dRLEtBQUs5RSxNQUFNaEMsYUFFbEN3UCxFQUFhLGtF
QUliQyxFQUFZLGdCQUdoQixTQUFTQyxHQUFRM0ksRUFBVTRJLEVBQVcvRixHQUNyQyxNQUFLOVMs
R0FBT2dELFdBQVk2VixHQUNoQjdZLEVBQU9pRixLQUFNZ0wsRUFBVSxTQUFVdE8sRUFBTUMsR0FD
N0MsUUFBU2lYLEVBQVUxWixLQUFNd0MsRUFBTUMsRUFBR0QsS0FBV21SLElBSzFDK0YsRUFBVWpP
LFNBQ1A1SyxFQUFPaUYsS0FBTWdMLEVBQVUsU0FBVXRPLEdBQ3ZDLE1BQVNBLEtBQVNrWCxJQUFn
Qi9GLElBS1YsZ0JBQWQrRixHQUNKN1ksRUFBT2lGLEtBQU1nTCxFQUFVLFNBQVV0TyxHQUN2QyxN
QUFTL0MsR0FBUU8sS0FBTTBaLEVBQVdsWCxRQUFrQm1SLElBS2pENkYsRUFBVTlNLEtBQU1nTixH
QUNiN1ksRUFBTzBPLE9BQVFtSyxFQUFXNUksRUFBVTZDLElBSTVDK0YsRUFBWTdZLEVBQU8wTyxP
QUFRbUssRUFBVzVJLEdBQy9CalEsRUFBT2lGLEtBQU1nTCxFQUFVLFNBQVV0TyxHQUN2QyxNQUFT
L0MsR0FBUU8sS0FBTTBaLEVBQVdsWCxRQUFrQm1SLEdBQXlCLElBQWxCblIsRUFBS2lKLFlBSWxF
NUssRUFBTzBPLE9BQVMsU0FBVXNCLEVBQU01TyxFQUFPMFIsR0FDdEMsR0FBSW5SLEdBQU9QLEVB
QU8sRUFNbEIsT0FKSzBSLEtBQ0o5QyxFQUFPLFFBQVVBLEVBQU8sS0FHSCxJQUFqQjVPLEVBQU1M
LFFBQWtDLElBQWxCWSxFQUFLaUosU0FDeEI1SyxFQUFPNE8sS0FBS0ssZ0JBQWlCdE4sRUFBTXFP
LElBQVdyTyxNQUcvQzNCLEVBQU80TyxLQUFLeEosUUFBUzRLLEVBQU1oUSxFQUFPaUYsS0FBTTdE
LEVBQU8sU0FBVU8sR0FDL0QsTUFBeUIsS0FBbEJBLEVBQUtpSixhQUlkNUssRUFBT0csR0FBR29D
LFFBQ1RxTSxLQUFNLFNBQVUzTyxHQUNmLEdBQUkyQixHQUFHUCxFQUNOYSxFQUFNL0QsS0FBSzRD
LE9BQ1grWCxFQUFPM2EsSUFFUixJQUF5QixnQkFBYjhCLEdBQ1gsTUFBTzlCLE1BQUtnRCxVQUFX
bkIsRUFBUUMsR0FBV3lPLE9BQVEsV0FDakQsSUFBTTlNLEVBQUksRUFBR0EsRUFBSU0sRUFBS04s
SUFDckIsR0FBSzVCLEVBQU9nSCxTQUFVOFIsRUFBTWxYLEdBQUt6RCxNQUNoQyxPQUFPLElBUVgs
S0FGQWtELEVBQU1sRCxLQUFLZ0QsY0FFTFMsRUFBSSxFQUFHQSxFQUFJTSxFQUFLTixJQUNyQjVC
LEVBQU80TyxLQUFNM08sRUFBVTZZLEVBQU1sWCxHQUFLUCxFQUduQyxPQUFPYSxHQUFNLEVBQUls
QyxFQUFPdVEsV0FBWWxQLEdBQVFBLEdBRTdDcU4sT0FBUSxTQUFVek8sR0FDakIsTUFBTzlCLE1B
QUtnRCxVQUFXeVgsRUFBUXphLEtBQU04QixPQUFnQixLQUV0RDZTLElBQUssU0FBVTdTLEdBQ2Qs
TUFBTzlCLE1BQUtnRCxVQUFXeVgsRUFBUXphLEtBQU04QixPQUFnQixLQUV0RHFZLEdBQUksU0FB
VXJZLEdBQ2IsUUFBUzJZLEVBQ1J6YSxLQUlvQixnQkFBYjhCLElBQXlCd1ksRUFBYzVNLEtBQU01
TCxHQUNuREQsRUFBUUMsR0FDUkEsT0FDRCxHQUNDYyxTQVNKLElBQUlnWSxHQU1IelAsRUFBYSxz
Q0FFYmxKLEVBQU9KLEVBQU9HLEdBQUdDLEtBQU8sU0FBVUgsRUFBVUMsRUFBU3FULEdBQ3BELEdB
QUlySSxHQUFPdkosQ0FHWCxLQUFNMUIsRUFDTCxNQUFPOUIsS0FRUixJQUhBb1YsRUFBT0EsR0FB
UXdGLEVBR1UsZ0JBQWI5WSxHQUF3QixDQWFuQyxHQVBDaUwsRUFMc0IsTUFBbEJqTCxFQUFVLElB
Q3NCLE1BQXBDQSxFQUFVQSxFQUFTYyxPQUFTLElBQzVCZCxFQUFTYyxRQUFVLEdBR1QsS0FBTWQs
RUFBVSxNQUdsQnFKLEVBQVdpQyxLQUFNdEwsSUFJckJpTCxJQUFXQSxFQUFPLElBQVFoTCxFQTZD
eEIsT0FBTUEsR0FBV0EsRUFBUVcsUUFDdEJYLEdBQVdxVCxHQUFPM0UsS0FBTTNPLEdBSzFCOUIs
S0FBSzJDLFlBQWFaLEdBQVUwTyxLQUFNM08sRUFoRHpDLElBQUtpTCxFQUFPLEdBQU0sQ0FZakIs
R0FYQWhMLEVBQVVBLFlBQW1CRixHQUFTRSxFQUFTLEdBQU1BLEVBSXJERixFQUFPc0IsTUFBT25E
LEtBQU02QixFQUFPZ1osVUFDMUI5TixFQUFPLEdBQ1BoTCxHQUFXQSxFQUFRMEssU0FBVzFLLEVB
QVFvTCxlQUFpQnBMLEVBQVVuQyxHQUNqRSxJQUlJMmEsRUFBVzdNLEtBQU1YLEVBQU8sS0FBU2xM
LEVBQU9pRCxjQUFlL0MsR0FDM0QsSUFBTWdMLElBQVNoTCxHQUdURixFQUFPZ0QsV0FBWTdFLEtB
QU0rTSxJQUM3Qi9NLEtBQU0rTSxHQUFTaEwsRUFBU2dMLElBSXhCL00sS0FBSytSLEtBQU1oRixF
QUFPaEwsRUFBU2dMLEdBSzlCLE9BQU8vTSxNQVlQLE1BUkF3RCxHQUFPNUQsRUFBU3lOLGVBQWdC
TixFQUFPLElBRWxDdkosSUFHSnhELEtBQU0sR0FBTXdELEVBQ1p4RCxLQUFLNEMsT0FBUyxHQUVS
NUMsS0FjSCxNQUFLOEIsR0FBUzJLLFVBQ3BCek0sS0FBTSxHQUFNOEIsRUFDWjlCLEtBQUs0QyxP
QUFTLEVBQ1A1QyxNQUlJNkIsRUFBT2dELFdBQVkvQyxHQUNSa0QsU0FBZm9RLEVBQUswRixNQUNY
MUYsRUFBSzBGLE1BQU9oWixHQUdaQSxFQUFVRCxHQUdMQSxFQUFPNkUsVUFBVzVFLEVBQVU5QixN
QUlyQ2lDLEdBQUtRLFVBQVlaLEVBQU9HLEdBR3hCNFksRUFBYS9ZLEVBQVFqQyxFQUdyQixJQUFJ
bWIsR0FBZSxpQ0FHbEJDLEdBQ0NDLFVBQVUsRUFDVkMsVUFBVSxFQUNWM08sTUFBTSxFQUNONE8s
TUFBTSxFQUdSdFosR0FBT0csR0FBR29DLFFBQ1QwUSxJQUFLLFNBQVVuUSxHQUNkLEdBQUl5VyxH
QUFVdlosRUFBUThDLEVBQVEzRSxNQUM3QnFiLEVBQUlELEVBQVF4WSxNQUViLE9BQU81QyxNQUFL
dVEsT0FBUSxXQUVuQixJQURBLEdBQUk5TSxHQUFJLEVBQ0FBLEVBQUk0WCxFQUFHNVgsSUFDZCxH
QUFLNUIsRUFBT2dILFNBQVU3SSxLQUFNb2IsRUFBUzNYLElBQ3BDLE9BQU8sS0FNWDZYLFFBQVMs
U0FBVTNJLEVBQVc1USxHQUM3QixHQUFJaU4sR0FDSHZMLEVBQUksRUFDSjRYLEVBQUlyYixLQUFL
NEMsT0FDVDhSLEtBQ0EwRyxFQUErQixnQkFBZHpJLElBQTBCOVEsRUFBUThRLEVBR3BELEtBQU0y
SCxFQUFjNU0sS0FBTWlGLEdBQ3pCLEtBQVFsUCxFQUFJNFgsRUFBRzVYLElBQ2QsSUFBTXVMLEVB
QU1oUCxLQUFNeUQsR0FBS3VMLEdBQU9BLElBQVFqTixFQUFTaU4sRUFBTUEsRUFBSXROLFdBR3hE
LEdBQUtzTixFQUFJdkMsU0FBVyxLQUFRMk8sRUFDM0JBLEVBQVFHLE1BQU92TSxNQUdFLElBQWpC
QSxFQUFJdkMsVUFDSDVLLEVBQU80TyxLQUFLSyxnQkFBaUI5QixFQUFLMkQsSUFBZ0IsQ0FFbkQr
QixFQUFRbFUsS0FBTXdPLEVBQ2QsT0FNSixNQUFPaFAsTUFBS2dELFVBQVcwUixFQUFROVIsT0FB
UyxFQUFJZixFQUFPdVEsV0FBWXNDLEdBQVlBLElBSTVFNkcsTUFBTyxTQUFVL1gsR0FHaEIsTUFB
TUEsR0FLZSxnQkFBVEEsR0FDSi9DLEVBQVFPLEtBQU1hLEVBQVEyQixHQUFReEQsS0FBTSxJQUly
Q1MsRUFBUU8sS0FBTWhCLEtBR3BCd0QsRUFBS2QsT0FBU2MsRUFBTSxHQUFNQSxHQVpqQnhELEtB
QU0sSUFBT0EsS0FBTSxHQUFJMEIsV0FBZTFCLEtBQUs0RCxRQUFRNFgsVUFBVTVZLFdBZ0J4RTZZ
LElBQUssU0FBVTNaLEVBQVVDLEdBQ3hCLE1BQU8vQixNQUFLZ0QsVUFDWG5CLEVBQU91USxXQUNO
dlEsRUFBT3NCLE1BQU9uRCxLQUFLOEMsTUFBT2pCLEVBQVFDLEVBQVVDLE9BSy9DMlosUUFBUyxT
QUFVNVosR0FDbEIsTUFBTzlCLE1BQUt5YixJQUFpQixNQUFaM1osRUFDaEI5QixLQUFLb0QsV0FB
YXBELEtBQUtvRCxXQUFXbU4sT0FBUXpPLE1BSzdDLFNBQVM2WixHQUFTM00sRUFBSzFDLEdBQ3RC
LE9BQVUwQyxFQUFNQSxFQUFLMUMsS0FBNEIsSUFBakIwQyxFQUFJdkMsVUFDcEMsTUFBT3VDLEdB
R1JuTixFQUFPd0IsTUFDTjhRLE9BQVEsU0FBVTNRLEdBQ2pCLEdBQUkyUSxHQUFTM1EsRUFBSzlC
LFVBQ2xCLE9BQU95UyxJQUE4QixLQUFwQkEsRUFBTzFILFNBQWtCMEgsRUFBUyxNQUVwRHlILFFB
QVMsU0FBVXBZLEdBQ2xCLE1BQU84SSxHQUFLOUksRUFBTSxlQUVuQnFZLGFBQWMsU0FBVXJZLEVB
QU1DLEVBQUd3VyxHQUNoQyxNQUFPM04sR0FBSzlJLEVBQU0sYUFBY3lXLElBRWpDMU4sS0FBTSxT
QUFVL0ksR0FDZixNQUFPbVksR0FBU25ZLEVBQU0sZ0JBRXZCMlgsS0FBTSxTQUFVM1gsR0FDZixN
QUFPbVksR0FBU25ZLEVBQU0sb0JBRXZCc1ksUUFBUyxTQUFVdFksR0FDbEIsTUFBTzhJLEdBQUs5
SSxFQUFNLGdCQUVuQmdZLFFBQVMsU0FBVWhZLEdBQ2xCLE1BQU84SSxHQUFLOUksRUFBTSxvQkFF
bkJ1WSxVQUFXLFNBQVV2WSxFQUFNQyxFQUFHd1csR0FDN0IsTUFBTzNOLEdBQUs5SSxFQUFNLGNB
QWV5VyxJQUVsQytCLFVBQVcsU0FBVXhZLEVBQU1DLEVBQUd3VyxHQUM3QixNQUFPM04sR0FBSzlJ
LEVBQU0sa0JBQW1CeVcsSUFFdENHLFNBQVUsU0FBVTVXLEdBQ25CLE1BQU80VyxJQUFZNVcsRUFB
SzlCLGdCQUFtQitRLFdBQVlqUCxJQUV4RHlYLFNBQVUsU0FBVXpYLEdBQ25CLE1BQU80VyxHQUFV
NVcsRUFBS2lQLGFBRXZCeUksU0FBVSxTQUFVMVgsR0FDbkIsTUFBT0EsR0FBS3lZLGlCQUFtQnBh
LEVBQU9zQixTQUFXSyxFQUFLZ0osY0FFckQsU0FBVWxJLEVBQU10QyxHQUNsQkgsRUFBT0csR0FB
SXNDLEdBQVMsU0FBVTJWLEVBQU9uWSxHQUNwQyxHQUFJNFMsR0FBVTdTLEVBQU8wQixJQUFLdkQs
S0FBTWdDLEVBQUlpWSxFQXVCcEMsT0FyQjBCLFVBQXJCM1YsRUFBS2hFLFlBQ1R3QixFQUFXbVks
R0FHUG5ZLEdBQWdDLGdCQUFiQSxLQUN2QjRTLEVBQVU3UyxFQUFPME8sT0FBUXpPLEVBQVU0UyxJ
QUcvQjFVLEtBQUs0QyxPQUFTLElBR1pvWSxFQUFrQjFXLElBQ3ZCekMsRUFBT3VRLFdBQVlzQyxH
QUlmcUcsRUFBYXJOLEtBQU1wSixJQUN2Qm9RLEVBQVF3SCxXQUlIbGMsS0FBS2dELFVBQVcwUixL
QUd6QixJQUFJeUgsR0FBZ0IsbUJBS3BCLFNBQVNDLEdBQWUvWCxHQUN2QixHQUFJZ1ksS0FJSixP
QUhBeGEsR0FBT3dCLEtBQU1nQixFQUFRMEksTUFBT29QLE9BQXVCLFNBQVU1USxFQUFHK1EsR0FD
L0RELEVBQVFDLElBQVMsSUFFWEQsRUF5QlJ4YSxFQUFPMGEsVUFBWSxTQUFVbFksR0FJNUJBLEVB
QTZCLGdCQUFaQSxHQUNoQitYLEVBQWUvWCxHQUNmeEMsRUFBT3VDLFVBQVlDLEVBRXBCLElBQ0Nt
WSxHQUdBQyxFQUdBQyxFQUdBQyxFQUdBalQsS0FHQWtULEtBR0FDLEtBR0FDLEVBQU8sV0FRTixJ
QUxBSCxFQUFTdFksRUFBUTBZLEtBSWpCTCxFQUFRRixHQUFTLEVBQ1RJLEVBQU1oYSxPQUFRaWEs
S0FBbUIsQ0FDeENKLEVBQVNHLEVBQU1yTyxPQUNmLFNBQVVzTyxFQUFjblQsRUFBSzlHLE9BR3ZC
OEcsRUFBTW1ULEdBQWNuWixNQUFPK1ksRUFBUSxHQUFLQSxFQUFRLE9BQVUsR0FDOURwWSxFQUFR
MlksY0FHUkgsRUFBY25ULEVBQUs5RyxPQUNuQjZaLEdBQVMsR0FNTnBZLEVBQVFvWSxTQUNiQSxH
QUFTLEdBR1ZELEdBQVMsRUFHSkcsSUFJSGpULEVBREkrUyxLQUtHLEtBTVY5QixHQUdDYyxJQUFL
LFdBMkJKLE1BMUJLL1IsS0FHQytTLElBQVdELElBQ2ZLLEVBQWNuVCxFQUFLOUcsT0FBUyxFQUM1
QmdhLEVBQU1wYyxLQUFNaWMsSUFHYixRQUFXaEIsR0FBS2pVLEdBQ2YzRixFQUFPd0IsS0FBTW1F
LEVBQU0sU0FBVStELEVBQUdwRSxHQUMxQnRGLEVBQU9nRCxXQUFZc0MsR0FDakI5QyxFQUFReVYs
UUFBV2EsRUFBSzdGLElBQUszTixJQUNsQ3VDLEVBQUtsSixLQUFNMkcsR0FFREEsR0FBT0EsRUFB
SXZFLFFBQWlDLFdBQXZCZixFQUFPNkQsS0FBTXlCLElBRzdDc1UsRUFBS3RVLE1BR0h4RCxXQUVB
OFksSUFBV0QsR0FDZk0sS0FHSzljLE1BSVJpZCxPQUFRLFdBWVAsTUFYQXBiLEdBQU93QixLQUFN
TSxVQUFXLFNBQVU0SCxFQUFHcEUsR0FDcEMsR0FBSW9VLEVBQ0osUUFBVUEsRUFBUTFaLEVBQU8r
RSxRQUFTTyxFQUFLdUMsRUFBTTZSLE9BQzVDN1IsRUFBS3ZGLE9BQVFvWCxFQUFPLEdBR2ZBLEdB
QVNzQixHQUNiQSxNQUlJN2MsTUFLUjhVLElBQUssU0FBVTlTLEdBQ2QsTUFBT0EsR0FDTkgsRUFB
TytFLFFBQVM1RSxFQUFJMEgsTUFDcEJBLEVBQUs5RyxPQUFTLEdBSWhCa1QsTUFBTyxXQUlOLE1B
SEtwTSxLQUNKQSxNQUVNMUosTUFNUmtkLFFBQVMsV0FHUixNQUZBUCxHQUFTQyxLQUNUbFQsRUFB
TytTLEVBQVMsR0FDVHpjLE1BRVJxTSxTQUFVLFdBQ1QsT0FBUTNDLEdBTVR5VCxLQUFNLFdBS0ws
TUFKQVIsR0FBU0MsS0FDSEgsR0FBV0QsSUFDaEI5UyxFQUFPK1MsRUFBUyxJQUVWemMsTUFFUjJj
LE9BQVEsV0FDUCxRQUFTQSxHQUlWUyxTQUFVLFNBQVVyYixFQUFTeUYsR0FTNUIsTUFSTW1WLEtB
Q0xuVixFQUFPQSxNQUNQQSxHQUFTekYsRUFBU3lGLEVBQUtsSCxNQUFRa0gsRUFBS2xILFFBQVVr
SCxHQUM5Q29WLEVBQU1wYyxLQUFNZ0gsR0FDTmdWLEdBQ0xNLEtBR0s5YyxNQUlSOGMsS0FBTSxX
QUVMLE1BREFuQyxHQUFLeUMsU0FBVXBkLEtBQU0yRCxXQUNkM0QsTUFJUjBjLE1BQU8sV0FDTixR
QUFTQSxHQUlaLE9BQU8vQixHQUlSLFNBQVMwQyxHQUFVQyxHQUNsQixNQUFPQSxHQUVSLFFBQVND
LEdBQVNDLEdBQ2pCLEtBQU1BLEdBR1AsUUFBU0MsR0FBWXJXLEVBQU9zVyxFQUFTQyxHQUNwQyxH
QUFJQyxFQUVKLEtBR014VyxHQUFTdkYsRUFBT2dELFdBQWMrWSxFQUFTeFcsRUFBTXlXLFNBQ2pE
RCxFQUFPNWMsS0FBTW9HLEdBQVE0QixLQUFNMFUsR0FBVUksS0FBTUgsR0FHaEN2VyxHQUFTdkYs
RUFBT2dELFdBQWMrWSxFQUFTeFcsRUFBTTJXLE1BQ3hESCxFQUFPNWMsS0FBTW9HLEVBQU9zVyxF
QUFTQyxHQU83QkQsRUFBUTFjLEtBQU1nRSxPQUFXb0MsR0FNekIsTUFBUUEsR0FJVHVXLEVBQU8z
YyxLQUFNZ0UsT0FBV29DLElBSTFCdkYsRUFBT3VDLFFBRU40WixTQUFVLFNBQVVDLEdBQ25CLEdB
QUlDLEtBSUEsU0FBVSxXQUFZcmMsRUFBTzBhLFVBQVcsVUFDekMxYSxFQUFPMGEsVUFBVyxVQUFZ
LElBQzdCLFVBQVcsT0FBUTFhLEVBQU8wYSxVQUFXLGVBQ3RDMWEsRUFBTzBhLFVBQVcsZUFBaUIs
RUFBRyxhQUNyQyxTQUFVLE9BQVExYSxFQUFPMGEsVUFBVyxlQUNyQzFhLEVBQU8wYSxVQUFXLGVB
QWlCLEVBQUcsYUFFeEM0QixFQUFRLFVBQ1JOLEdBQ0NNLE1BQU8sV0FDTixNQUFPQSxJQUVSQyxP
QUFRLFdBRVAsTUFEQUMsR0FBU3JWLEtBQU1yRixXQUFZbWEsS0FBTW5hLFdBQzFCM0QsTUFFUnNl
LFFBQVMsU0FBVXRjLEdBQ2xCLE1BQU82YixHQUFRRSxLQUFNLEtBQU0vYixJQUk1QnVjLEtBQU0s
V0FDTCxHQUFJQyxHQUFNN2EsU0FFVixPQUFPOUIsR0FBT21jLFNBQVUsU0FBVVMsR0FDakM1YyxF
QUFPd0IsS0FBTTZhLEVBQVEsU0FBVXphLEVBQUdpYixHQUdqQyxHQUFJMWMsR0FBS0gsRUFBT2dE
LFdBQVkyWixFQUFLRSxFQUFPLE1BQVdGLEVBQUtFLEVBQU8sR0FLL0RMLEdBQVVLLEVBQU8sSUFB
TyxXQUN2QixHQUFJQyxHQUFXM2MsR0FBTUEsRUFBRzBCLE1BQU8xRCxLQUFNMkQsVUFDaENnYixJ
QUFZOWMsRUFBT2dELFdBQVk4WixFQUFTZCxTQUM1Q2MsRUFBU2QsVUFDUGUsU0FBVUgsRUFBU0ks
UUFDbkI3VixLQUFNeVYsRUFBU2YsU0FDZkksS0FBTVcsRUFBU2QsUUFFakJjLEVBQVVDLEVBQU8s
R0FBTSxRQUN0QjFlLEtBQ0FnQyxHQUFPMmMsR0FBYWhiLGVBS3hCNmEsRUFBTSxPQUNIWCxXQUVM
RSxLQUFNLFNBQVVlLEVBQWFDLEVBQVlDLEdBQ3hDLEdBQUlDLEdBQVcsQ0FDZixTQUFTdkIsR0FB
U3dCLEVBQU9iLEVBQVV4UCxFQUFTc1EsR0FDM0MsTUFBTyxZQUNOLEdBQUlDLEdBQU9wZixLQUNW
d0gsRUFBTzdELFVBQ1AwYixFQUFhLFdBQ1osR0FBSVYsR0FBVVosQ0FLZCxNQUFLbUIsRUFBUUQs
R0FBYixDQVFBLEdBSkFOLEVBQVc5UCxFQUFRbkwsTUFBTzBiLEVBQU01WCxHQUkzQm1YLElBQWFO
LEVBQVNSLFVBQzFCLEtBQU0sSUFBSXlCLFdBQVcsMkJBT3RCdkIsR0FBT1ksSUFLZ0IsZ0JBQWJB
LElBQ1ksa0JBQWJBLEtBQ1JBLEVBQVNaLEtBR0xsYyxFQUFPZ0QsV0FBWWtaLEdBR2xCb0IsRUFD
SnBCLEVBQUsvYyxLQUNKMmQsRUFDQWpCLEVBQVN1QixFQUFVWixFQUFVaEIsRUFBVThCLEdBQ3ZD
ekIsRUFBU3VCLEVBQVVaLEVBQVVkLEVBQVM0QixLQU92Q0YsSUFFQWxCLEVBQUsvYyxLQUNKMmQs
RUFDQWpCLEVBQVN1QixFQUFVWixFQUFVaEIsRUFBVThCLEdBQ3ZDekIsRUFBU3VCLEVBQVVaLEVB
QVVkLEVBQVM0QixHQUN0Q3pCLEVBQVN1QixFQUFVWixFQUFVaEIsRUFDNUJnQixFQUFTa0IsZUFT
UDFRLElBQVl3TyxJQUNoQitCLEVBQU9wYSxPQUNQd0MsR0FBU21YLEtBS1JRLEdBQVdkLEVBQVNt
QixhQUFlSixFQUFNNVgsTUFLN0NpWSxFQUFVTixFQUNURSxFQUNBLFdBQ0MsSUFDQ0EsSUFDQyxN
QUFRM1MsR0FFSjdLLEVBQU9tYyxTQUFTMEIsZUFDcEI3ZCxFQUFPbWMsU0FBUzBCLGNBQWVoVCxF
QUM5QitTLEVBQVFFLFlBTUxULEVBQVEsR0FBS0QsSUFJWnBRLElBQVkwTyxJQUNoQjZCLEVBQU9w
YSxPQUNQd0MsR0FBU2tGLElBR1YyUixFQUFTdUIsV0FBWVIsRUFBTTVYLEtBUzNCMFgsR0FDSk8s
S0FLSzVkLEVBQU9tYyxTQUFTNkIsZUFDcEJKLEVBQVFFLFdBQWE5ZCxFQUFPbWMsU0FBUzZCLGdC
QUV0QzlmLEVBQU8rZixXQUFZTCxLQUt0QixNQUFPNWQsR0FBT21jLFNBQVUsU0FBVVMsR0FHakNQ
LEVBQVEsR0FBSyxHQUFJekMsSUFDaEJpQyxFQUNDLEVBQ0FlLEVBQ0E1YyxFQUFPZ0QsV0FBWW1h
LEdBQ2xCQSxFQUNBM0IsRUFDRG9CLEVBQVNjLGFBS1hyQixFQUFRLEdBQUssR0FBSXpDLElBQ2hC
aUMsRUFDQyxFQUNBZSxFQUNBNWMsRUFBT2dELFdBQVlpYSxHQUNsQkEsRUFDQXpCLElBS0hhLEVB
QVEsR0FBSyxHQUFJekMsSUFDaEJpQyxFQUNDLEVBQ0FlLEVBQ0E1YyxFQUFPZ0QsV0FBWWthLEdB
Q2xCQSxFQUNBeEIsTUFHQU0sV0FLTEEsUUFBUyxTQUFVcFksR0FDbEIsTUFBYyxPQUFQQSxFQUFj
NUQsRUFBT3VDLE9BQVFxQixFQUFLb1ksR0FBWUEsSUFHdkRRLElBMkRELE9BeERBeGMsR0FBT3dC
LEtBQU02YSxFQUFRLFNBQVV6YSxFQUFHaWIsR0FDakMsR0FBSWhWLEdBQU9nVixFQUFPLEdBQ2pC
cUIsRUFBY3JCLEVBQU8sRUFLdEJiLEdBQVNhLEVBQU8sSUFBUWhWLEVBQUsrUixJQUd4QnNFLEdB
Q0pyVyxFQUFLK1IsSUFDSixXQUlDMEMsRUFBUTRCLEdBS1Q3QixFQUFRLEVBQUl6YSxHQUFLLEdB
QUl5WixRQUdyQmdCLEVBQVEsR0FBSyxHQUFJZixNQU9uQnpULEVBQUsrUixJQUFLaUQsRUFBTyxH
QUFJNUIsTUFLckJ1QixFQUFVSyxFQUFPLElBQVEsV0FFeEIsTUFEQUwsR0FBVUssRUFBTyxHQUFN
LFFBQVUxZSxPQUFTcWUsRUFBV3JaLE9BQVloRixLQUFNMkQsV0FDaEUzRCxNQU1ScWUsRUFBVUss
RUFBTyxHQUFNLFFBQVdoVixFQUFLMFQsV0FJeENTLEVBQVFBLFFBQVNRLEdBR1pKLEdBQ0pBLEVB
QUtqZCxLQUFNcWQsRUFBVUEsR0FJZkEsR0FJUjJCLEtBQU0sU0FBVUMsR0FDZixHQUdDQyxHQUFZ
dmMsVUFBVWYsT0FHdEJhLEVBQUl5YyxFQUdKQyxFQUFrQnhhLE1BQU9sQyxHQUN6QjJjLEVBQWdC
OWYsRUFBTVUsS0FBTTJDLFdBRzVCMGMsRUFBU3hlLEVBQU9tYyxXQUdoQnNDLEVBQWEsU0FBVTdj
LEdBQ3RCLE1BQU8sVUFBVTJELEdBQ2hCK1ksRUFBaUIxYyxHQUFNekQsS0FDdkJvZ0IsRUFBZTNj
LEdBQU1FLFVBQVVmLE9BQVMsRUFBSXRDLEVBQU1VLEtBQU0yQyxXQUFjeUQsSUFDNUQ4WSxHQUNU
RyxFQUFPYixZQUFhVyxFQUFpQkMsSUFNekMsSUFBS0YsR0FBYSxJQUNqQnpDLEVBQVl3QyxFQUFh
SSxFQUFPclgsS0FBTXNYLEVBQVk3YyxJQUFNaWEsUUFBUzJDLEVBQU8xQyxRQUdoRCxZQUFuQjBD
LEVBQU9sQyxTQUNYdGMsRUFBT2dELFdBQVl1YixFQUFlM2MsSUFBTzJjLEVBQWUzYyxHQUFJc2Es
T0FFNUQsTUFBT3NDLEdBQU90QyxNQUtoQixPQUFRdGEsSUFDUGdhLEVBQVkyQyxFQUFlM2MsR0FB
SzZjLEVBQVk3YyxHQUFLNGMsRUFBTzFDLE9BR3pELE9BQU8wQyxHQUFPeEMsWUFPaEIsSUFBSTBD
LEdBQWMsd0RBRWxCMWUsR0FBT21jLFNBQVMwQixjQUFnQixTQUFVcGEsRUFBT2tiLEdBSTNDemdC
LEVBQU8wZ0IsU0FBVzFnQixFQUFPMGdCLFFBQVFDLE1BQVFwYixHQUFTaWIsRUFBWTdTLEtBQU1w
SSxFQUFNaEIsT0FDOUV2RSxFQUFPMGdCLFFBQVFDLEtBQU0sOEJBQWdDcGIsRUFBTXFiLFFBQVNy
YixFQUFNa2IsTUFBT0EsSUFPbkYzZSxFQUFPK2UsZUFBaUIsU0FBVXRiLEdBQ2pDdkYsRUFBTytm
LFdBQVksV0FDbEIsS0FBTXhhLEtBUVIsSUFBSXViLEdBQVloZixFQUFPbWMsVUFFdkJuYyxHQUFP
RyxHQUFHOFksTUFBUSxTQUFVOVksR0FZM0IsTUFWQTZlLEdBQ0U5QyxLQUFNL2IsR0FEUjZlLFNB
TVMsU0FBVXZiLEdBQ2pCekQsRUFBTytlLGVBQWdCdGIsS0FHbEJ0RixNQUdSNkIsRUFBT3VDLFFB
R05pQixTQUFTLEVBSVR5YixVQUFXLEVBR1hDLFVBQVcsU0FBVUMsR0FDZkEsRUFDSm5mLEVBQU9p
ZixZQUVQamYsRUFBT2laLE9BQU8sSUFLaEJBLE1BQU8sU0FBVW1HLElBR1hBLEtBQVMsSUFBU3Bm
LEVBQU9pZixVQUFZamYsRUFBT3dELFdBS2pEeEQsRUFBT3dELFNBQVUsRUFHWjRiLEtBQVMsS0FB
VXBmLEVBQU9pZixVQUFZLEdBSzNDRCxFQUFVckIsWUFBYTVmLEdBQVlpQyxRQUlyQ0EsRUFBT2la
LE1BQU1pRCxLQUFPOEMsRUFBVTlDLElBRzlCLFNBQVNtRCxLQUNSdGhCLEVBQVN1aEIsb0JBQXFC
LG1CQUFvQkQ7QUFDbERuaEIsRUFBT29oQixvQkFBcUIsT0FBUUQsR0FDcENyZixFQUFPaVosUUFP
cUIsYUFBeEJsYixFQUFTd2hCLFlBQ2EsWUFBeEJ4aEIsRUFBU3doQixhQUE2QnhoQixFQUFTK1As
Z0JBQWdCMFIsU0FHakV0aEIsRUFBTytmLFdBQVlqZSxFQUFPaVosUUFLMUJsYixFQUFTcVEsaUJB
QWtCLG1CQUFvQmlSLEdBRy9DbmhCLEVBQU9rUSxpQkFBa0IsT0FBUWlSLEdBUWxDLElBQUlJLEdB
QVMsU0FBVXJlLEVBQU9qQixFQUFJcU0sRUFBS2pILEVBQU9tYSxFQUFXQyxFQUFVQyxHQUNsRSxH
QUFJaGUsR0FBSSxFQUNQTSxFQUFNZCxFQUFNTCxPQUNaOGUsRUFBYyxNQUFQclQsQ0FHUixJQUE0
QixXQUF2QnhNLEVBQU82RCxLQUFNMkksR0FBcUIsQ0FDdENrVCxHQUFZLENBQ1osS0FBTTlkLElB
QUs0SyxHQUNWaVQsRUFBUXJlLEVBQU9qQixFQUFJeUIsRUFBRzRLLEVBQUs1SyxJQUFLLEVBQU0r
ZCxFQUFVQyxPQUkzQyxJQUFlemMsU0FBVm9DLElBQ1htYSxHQUFZLEVBRU4xZixFQUFPZ0QsV0FB
WXVDLEtBQ3hCcWEsR0FBTSxHQUdGQyxJQUdDRCxHQUNKemYsRUFBR2hCLEtBQU1pQyxFQUFPbUUs
R0FDaEJwRixFQUFLLE9BSUwwZixFQUFPMWYsRUFDUEEsRUFBSyxTQUFVd0IsRUFBTTZLLEVBQUtq
SCxHQUN6QixNQUFPc2EsR0FBSzFnQixLQUFNYSxFQUFRMkIsR0FBUTRELE1BS2hDcEYsR0FDSixL
QUFReUIsRUFBSU0sRUFBS04sSUFDaEJ6QixFQUNDaUIsRUFBT1EsR0FBSzRLLEVBQUtvVCxFQUNq
QnJhLEVBQ0FBLEVBQU1wRyxLQUFNaUMsRUFBT1EsR0FBS0EsRUFBR3pCLEVBQUlpQixFQUFPUSxH
QUFLNEssSUFNL0MsT0FBS2tULEdBQ0d0ZSxFQUlIeWUsRUFDRzFmLEVBQUdoQixLQUFNaUMsR0FH
VmMsRUFBTS9CLEVBQUlpQixFQUFPLEdBQUtvTCxHQUFRbVQsR0FFbENHLEVBQWEsU0FBVUMsR0FR
MUIsTUFBMEIsS0FBbkJBLEVBQU1uVixVQUFxQyxJQUFuQm1WLEVBQU1uVixZQUFzQm1WLEVBQU1u
VixTQU1sRSxTQUFTb1YsS0FDUjdoQixLQUFLaUYsUUFBVXBELEVBQU9vRCxRQUFVNGMsRUFBS0Ms
TUFHdENELEVBQUtDLElBQU0sRUFFWEQsRUFBS3BmLFdBRUoyTCxNQUFPLFNBQVV3VCxHQUdoQixH
QUFJeGEsR0FBUXdhLEVBQU81aEIsS0FBS2lGLFFBNEJ4QixPQXpCTW1DLEtBQ0xBLEtBS0t1YSxF
QUFZQyxLQUlYQSxFQUFNblYsU0FDVm1WLEVBQU81aEIsS0FBS2lGLFNBQVltQyxFQU14QmhILE9B
QU8yaEIsZUFBZ0JILEVBQU81aEIsS0FBS2lGLFNBQ2xDbUMsTUFBT0EsRUFDUDRhLGNBQWMsTUFN
WDVhLEdBRVI2YSxJQUFLLFNBQVVMLEVBQU9NLEVBQU05YSxHQUMzQixHQUFJK2EsR0FDSC9ULEVB
QVFwTyxLQUFLb08sTUFBT3dULEVBSXJCLElBQXFCLGdCQUFUTSxHQUNYOVQsRUFBT3ZNLEVBQU91
RSxVQUFXOGIsSUFBVzlhLE1BTXBDLEtBQU0rYSxJQUFRRCxHQUNiOVQsRUFBT3ZNLEVBQU91RSxV
QUFXK2IsSUFBV0QsRUFBTUMsRUFHNUMsT0FBTy9ULElBRVJ0TCxJQUFLLFNBQVU4ZSxFQUFPdlQs
R0FDckIsTUFBZXJKLFVBQVJxSixFQUNOck8sS0FBS29PLE1BQU93VCxHQUdaQSxFQUFPNWhCLEtB
QUtpRixVQUFhMmMsRUFBTzVoQixLQUFLaUYsU0FBV3BELEVBQU91RSxVQUFXaUksS0FFcEVpVCxP
QUFRLFNBQVVNLEVBQU92VCxFQUFLakgsR0FhN0IsTUFBYXBDLFVBQVJxSixHQUNDQSxHQUFzQixn
QkFBUkEsSUFBZ0NySixTQUFWb0MsRUFFbENwSCxLQUFLOEMsSUFBSzhlLEVBQU92VCxJQVN6QnJP
LEtBQUtpaUIsSUFBS0wsRUFBT3ZULEVBQUtqSCxHQUlMcEMsU0FBVm9DLEVBQXNCQSxFQUFRaUgs
SUFFdEM0TyxPQUFRLFNBQVUyRSxFQUFPdlQsR0FDeEIsR0FBSTVLLEdBQ0gySyxFQUFRd1QsRUFB
TzVoQixLQUFLaUYsUUFFckIsSUFBZUQsU0FBVm9KLEVBQUwsQ0FJQSxHQUFhcEosU0FBUnFKLEVB
QW9CLENBR25CeE0sRUFBT2tELFFBQVNzSixHQUlwQkEsRUFBTUEsRUFBSTlLLElBQUsxQixFQUFP
dUUsWUFFdEJpSSxFQUFNeE0sRUFBT3VFLFVBQVdpSSxHQUl4QkEsRUFBTUEsSUFBT0QsSUFDVkMs
R0FDQUEsRUFBSXRCLE1BQU9vUCxRQUdmMVksRUFBSTRLLEVBQUl6TCxNQUVSLE9BQVFhLFVBQ0Ey
SyxHQUFPQyxFQUFLNUssS0FLUnVCLFNBQVJxSixHQUFxQnhNLEVBQU9xRSxjQUFla0ksTUFNMUN3
VCxFQUFNblYsU0FDVm1WLEVBQU81aEIsS0FBS2lGLFNBQVlELGFBRWpCNGMsR0FBTzVoQixLQUFL
aUYsWUFJdEJtZCxRQUFTLFNBQVVSLEdBQ2xCLEdBQUl4VCxHQUFRd1QsRUFBTzVoQixLQUFLaUYs
UUFDeEIsT0FBaUJELFVBQVZvSixJQUF3QnZNLEVBQU9xRSxjQUFla0ksSUFHdkQsSUFBSWlVLEdB
QVcsR0FBSVIsR0FFZlMsRUFBVyxHQUFJVCxHQWNmVSxFQUFTLGdDQUNaQyxFQUFhLFFBRWQsU0FB
U0MsR0FBU1AsR0FDakIsTUFBYyxTQUFUQSxHQUlTLFVBQVRBLElBSVMsU0FBVEEsRUFDRyxLQUlI
QSxLQUFVQSxFQUFPLElBQ2JBLEVBR0pLLEVBQU83VSxLQUFNd1UsR0FDVlEsS0FBS0MsTUFBT1Qs
R0FHYkEsR0FHUixRQUFTVSxHQUFVcGYsRUFBTTZLLEVBQUs2VCxHQUM3QixHQUFJNWQsRUFJSixJ
QUFjVSxTQUFUa2QsR0FBd0MsSUFBbEIxZSxFQUFLaUosU0FJL0IsR0FIQW5JLEVBQU8sUUFBVStK
LEVBQUlqSixRQUFTb2QsRUFBWSxPQUFRamMsY0FDbEQyYixFQUFPMWUsRUFBS21LLGFBQWNySixH
QUVMLGdCQUFUNGQsR0FBb0IsQ0FDL0IsSUFDQ0EsRUFBT08sRUFBU1AsR0FDZixNQUFReFYsSUFH
VjRWLEVBQVNMLElBQUt6ZSxFQUFNNkssRUFBSzZULE9BRXpCQSxHQUFPbGQsTUFHVCxPQUFPa2Qs
R0FHUnJnQixFQUFPdUMsUUFDTmdlLFFBQVMsU0FBVTVlLEdBQ2xCLE1BQU84ZSxHQUFTRixRQUFT
NWUsSUFBVTZlLEVBQVNELFFBQVM1ZSxJQUd0RDBlLEtBQU0sU0FBVTFlLEVBQU1jLEVBQU00ZCxH
QUMzQixNQUFPSSxHQUFTaEIsT0FBUTlkLEVBQU1jLEVBQU00ZCxJQUdyQ1csV0FBWSxTQUFVcmYs
RUFBTWMsR0FDM0JnZSxFQUFTckYsT0FBUXpaLEVBQU1jLElBS3hCd2UsTUFBTyxTQUFVdGYsRUFB
TWMsRUFBTTRkLEdBQzVCLE1BQU9HLEdBQVNmLE9BQVE5ZCxFQUFNYyxFQUFNNGQsSUFHckNhLFlB
QWEsU0FBVXZmLEVBQU1jLEdBQzVCK2QsRUFBU3BGLE9BQVF6WixFQUFNYyxNQUl6QnpDLEVBQU9H
LEdBQUdvQyxRQUNUOGQsS0FBTSxTQUFVN1QsRUFBS2pILEdBQ3BCLEdBQUkzRCxHQUFHYSxFQUFN
NGQsRUFDWjFlLEVBQU94RCxLQUFNLEdBQ2I0TyxFQUFRcEwsR0FBUUEsRUFBS3NHLFVBR3RCLElB
QWE5RSxTQUFScUosRUFBb0IsQ0FDeEIsR0FBS3JPLEtBQUs0QyxTQUNUc2YsRUFBT0ksRUFBU3hm
LElBQUtVLEdBRUUsSUFBbEJBLEVBQUtpSixXQUFtQjRWLEVBQVN2ZixJQUFLVSxFQUFNLGlCQUFt
QixDQUNuRUMsRUFBSW1MLEVBQU1oTSxNQUNWLE9BQVFhLElBSUZtTCxFQUFPbkwsS0FDWGEsRUFB
T3NLLEVBQU9uTCxHQUFJYSxLQUNlLElBQTVCQSxFQUFLN0QsUUFBUyxXQUNsQjZELEVBQU96QyxF
QUFPdUUsVUFBVzlCLEVBQUtoRSxNQUFPLElBQ3JDc2lCLEVBQVVwZixFQUFNYyxFQUFNNGQsRUFB
TTVkLEtBSS9CK2QsR0FBU0osSUFBS3plLEVBQU0sZ0JBQWdCLEdBSXRDLE1BQU8wZSxHQUlSLE1B
QW9CLGdCQUFSN1QsR0FDSnJPLEtBQUtxRCxLQUFNLFdBQ2pCaWYsRUFBU0wsSUFBS2ppQixLQUFN
cU8sS0FJZmlULEVBQVF0aEIsS0FBTSxTQUFVb0gsR0FDOUIsR0FBSThhLEVBT0osSUFBSzFlLEdB
QWtCd0IsU0FBVm9DLEVBQWIsQ0FLQyxHQURBOGEsRUFBT0ksRUFBU3hmLElBQUtVLEVBQU02SyxH
QUNickosU0FBVGtkLEVBQ0osTUFBT0EsRUFNUixJQURBQSxFQUFPVSxFQUFVcGYsRUFBTTZLLEdB
Q1RySixTQUFUa2QsRUFDSixNQUFPQSxPQVFUbGlCLE1BQUtxRCxLQUFNLFdBR1ZpZixFQUFTTCxJ
QUFLamlCLEtBQU1xTyxFQUFLakgsTUFFeEIsS0FBTUEsRUFBT3pELFVBQVVmLE9BQVMsRUFBRyxN
QUFNLElBRzdDaWdCLFdBQVksU0FBVXhVLEdBQ3JCLE1BQU9yTyxNQUFLcUQsS0FBTSxXQUNqQmlm
LEVBQVNyRixPQUFRamQsS0FBTXFPLFFBTTFCeE0sRUFBT3VDLFFBQ053WSxNQUFPLFNBQVVwWixF
QUFNa0MsRUFBTXdjLEdBQzVCLEdBQUl0RixFQUVKLElBQUtwWixFQVlKLE1BWEFrQyxJQUFTQSxH
QUFRLE1BQVMsUUFDMUJrWCxFQUFReUYsRUFBU3ZmLElBQUtVLEVBQU1rQyxHQUd2QndjLEtBQ0V0
RixHQUFTL2EsRUFBT2tELFFBQVNtZCxHQUM5QnRGLEVBQVF5RixFQUFTZixPQUFROWQsRUFBTWtD
LEVBQU03RCxFQUFPNkUsVUFBV3diLElBRXZEdEYsRUFBTXBjLEtBQU0waEIsSUFHUHRGLE9BSVRv
RyxRQUFTLFNBQVV4ZixFQUFNa0MsR0FDeEJBLEVBQU9BLEdBQVEsSUFFZixJQUFJa1gsR0FBUS9h
LEVBQU8rYSxNQUFPcFosRUFBTWtDLEdBQy9CdWQsRUFBY3JHLEVBQU1oYSxPQUNwQlosRUFBSzRh
LEVBQU1yTyxRQUNYMlUsRUFBUXJoQixFQUFPc2hCLFlBQWEzZixFQUFNa0MsR0FDbEM2RyxFQUFP
LFdBQ04xSyxFQUFPbWhCLFFBQVN4ZixFQUFNa0MsR0FJWixnQkFBUDFELElBQ0pBLEVBQUs0YSxF
QUFNck8sUUFDWDBVLEtBR0lqaEIsSUFJVSxPQUFUMEQsR0FDSmtYLEVBQU1oTCxRQUFTLG9CQUlU
c1IsR0FBTUUsS0FDYnBoQixFQUFHaEIsS0FBTXdDLEVBQU0rSSxFQUFNMlcsS0FHaEJELEdBQWVD
LEdBQ3BCQSxFQUFNcE4sTUFBTWdILFFBS2RxRyxZQUFhLFNBQVUzZixFQUFNa0MsR0FDNUIsR0FB
STJJLEdBQU0zSSxFQUFPLFlBQ2pCLE9BQU8yYyxHQUFTdmYsSUFBS1UsRUFBTTZLLElBQVNnVSxF
QUFTZixPQUFROWQsRUFBTTZLLEdBQzFEeUgsTUFBT2pVLEVBQU8wYSxVQUFXLGVBQWdCZCxJQUFL
LFdBQzdDNEcsRUFBU3BGLE9BQVF6WixHQUFRa0MsRUFBTyxRQUFTMkksV0FNN0N4TSxFQUFPRyxH
QUFHb0MsUUFDVHdZLE1BQU8sU0FBVWxYLEVBQU13YyxHQUN0QixHQUFJbUIsR0FBUyxDQVFiLE9B
TnFCLGdCQUFUM2QsS0FDWHdjLEVBQU94YyxFQUNQQSxFQUFPLEtBQ1AyZCxLQUdJMWYsVUFBVWYs
T0FBU3lnQixFQUNoQnhoQixFQUFPK2EsTUFBTzVjLEtBQU0sR0FBSzBGLEdBR2pCVixTQUFUa2Qs
RUFDTmxpQixLQUNBQSxLQUFLcUQsS0FBTSxXQUNWLEdBQUl1WixHQUFRL2EsRUFBTythLE1BQU81
YyxLQUFNMEYsRUFBTXdjLEVBR3RDcmdCLEdBQU9zaEIsWUFBYW5qQixLQUFNMEYsR0FFWixPQUFU
QSxHQUFnQyxlQUFma1gsRUFBTyxJQUM1Qi9hLEVBQU9taEIsUUFBU2hqQixLQUFNMEYsTUFJMUJz
ZCxRQUFTLFNBQVV0ZCxHQUNsQixNQUFPMUYsTUFBS3FELEtBQU0sV0FDakJ4QixFQUFPbWhCLFFB
QVNoakIsS0FBTTBGLE1BR3hCNGQsV0FBWSxTQUFVNWQsR0FDckIsTUFBTzFGLE1BQUs0YyxNQUFP
bFgsR0FBUSxVQUs1Qm1ZLFFBQVMsU0FBVW5ZLEVBQU1ELEdBQ3hCLEdBQUk4QixHQUNIZ2MsRUFB
USxFQUNSQyxFQUFRM2hCLEVBQU9tYyxXQUNmbE0sRUFBVzlSLEtBQ1h5RCxFQUFJekQsS0FBSzRD
LE9BQ1Q4YSxFQUFVLGFBQ0M2RixHQUNUQyxFQUFNaEUsWUFBYTFOLEdBQVlBLElBSWIsaUJBQVRw
TSxLQUNYRCxFQUFNQyxFQUNOQSxFQUFPVixRQUVSVSxFQUFPQSxHQUFRLElBRWYsT0FBUWpDLElB
Q1A4RCxFQUFNOGEsRUFBU3ZmLElBQUtnUCxFQUFVck8sR0FBS2lDLEVBQU8sY0FDckM2QixHQUFP
QSxFQUFJdU8sUUFDZnlOLElBQ0FoYyxFQUFJdU8sTUFBTTJGLElBQUtpQyxHQUlqQixPQURBQSxL
QUNPOEYsRUFBTTNGLFFBQVNwWSxLQUd4QixJQUFJZ2UsR0FBTyxzQ0FBMENDLE9BRWpEQyxHQUFV
LEdBQUkxWixRQUFRLGlCQUFtQndaLEVBQU8sY0FBZSxLQUcvREcsSUFBYyxNQUFPLFFBQVMsU0FB
VSxRQUV4Q0MsR0FBcUIsU0FBVXJnQixFQUFNa0wsR0FPdkMsTUFIQWxMLEdBQU9rTCxHQUFNbEws
RUFHaUIsU0FBdkJBLEVBQUtzZ0IsTUFBTUMsU0FDTSxLQUF2QnZnQixFQUFLc2dCLE1BQU1DLFNB
TVhsaUIsRUFBT2dILFNBQVVyRixFQUFLMkosY0FBZTNKLElBRUgsU0FBbEMzQixFQUFPbWlCLElB
QUt4Z0IsRUFBTSxZQUdqQnlnQixHQUFPLFNBQVV6Z0IsRUFBTWEsRUFBU2YsRUFBVWtFLEdBQzdD
LEdBQUl0RSxHQUFLb0IsRUFDUjRmLElBR0QsS0FBTTVmLElBQVFELEdBQ2I2ZixFQUFLNWYsR0FB
U2QsRUFBS3NnQixNQUFPeGYsR0FDMUJkLEVBQUtzZ0IsTUFBT3hmLEdBQVNELEVBQVNDLEVBRy9C
cEIsR0FBTUksRUFBU0ksTUFBT0YsRUFBTWdFLE1BRzVCLEtBQU1sRCxJQUFRRCxHQUNiYixFQUFL
c2dCLE1BQU94ZixHQUFTNGYsRUFBSzVmLEVBRzNCLE9BQU9wQixHQU1SLFNBQVNpaEIsSUFBVzNn
QixFQUFNMmUsRUFBTWlDLEVBQVlDLEdBQzNDLEdBQUlDLEdBQ0hDLEVBQVEsRUFDUkMsRUFBZ0Is
R0FDaEJDLEVBQWVKLEVBQ2QsV0FDQyxNQUFPQSxHQUFNclYsT0FFZCxXQUNDLE1BQU9uTixHQUFP
bWlCLElBQUt4Z0IsRUFBTTJlLEVBQU0sS0FFakN1QyxFQUFVRCxJQUNWRSxFQUFPUCxHQUFjQSxF
QUFZLEtBQVN2aUIsRUFBTytpQixVQUFXekMsR0FBUyxHQUFLLE1BRzFFMEMsR0FBa0JoakIsRUFB
TytpQixVQUFXekMsSUFBbUIsT0FBVHdDLElBQWtCRCxJQUMvRGYsR0FBUXZXLEtBQU12TCxFQUFP
bWlCLElBQUt4Z0IsRUFBTTJlLEdBRWxDLElBQUswQyxHQUFpQkEsRUFBZSxLQUFRRixFQUFPLENB
R25EQSxFQUFPQSxHQUFRRSxFQUFlLEdBRzlCVCxFQUFhQSxNQUdiUyxHQUFpQkgsR0FBVyxDQUU1
QixHQUlDSCxHQUFRQSxHQUFTLEtBR2pCTSxHQUFnQ04sRUFDaEMxaUIsRUFBT2lpQixNQUFPdGdC
LEVBQU0yZSxFQUFNMEMsRUFBZ0JGLFNBSzFDSixLQUFZQSxFQUFRRSxJQUFpQkMsSUFBdUIsSUFB
VkgsS0FBaUJDLEdBaUJyRSxNQWJLSixLQUNKUyxHQUFpQkEsSUFBa0JILEdBQVcsRUFHOUNKLEVB
QVdGLEVBQVksR0FDdEJTLEdBQWtCVCxFQUFZLEdBQU0sR0FBTUEsRUFBWSxJQUNyREEsRUFBWSxH
QUNUQyxJQUNKQSxFQUFNTSxLQUFPQSxFQUNiTixFQUFNblEsTUFBUTJRLEVBQ2RSLEVBQU1wZ0Is
SUFBTXFnQixJQUdQQSxFQUlSLEdBQUlRLE1BRUosU0FBU0MsSUFBbUJ2aEIsR0FDM0IsR0FBSTRV
LEdBQ0hoWCxFQUFNb0MsRUFBSzJKLGNBQ1g3RyxFQUFXOUMsRUFBSzhDLFNBQ2hCeWQsRUFBVWUs
R0FBbUJ4ZSxFQUU5QixPQUFLeWQsR0FDR0EsR0FHUjNMLEVBQU9oWCxFQUFJNGpCLEtBQUt2akIs
WUFBYUwsRUFBSUUsY0FBZWdGLElBQ2hEeWQsRUFBVWxpQixFQUFPbWlCLElBQUs1TCxFQUFNLFdB
RTVCQSxFQUFLMVcsV0FBV0MsWUFBYXlXLEdBRVosU0FBWjJMLElBQ0pBLEVBQVUsU0FFWGUsR0FB
bUJ4ZSxHQUFheWQsRUFFekJBLEdBR1IsUUFBU2tCLElBQVVuVCxFQUFVb1QsR0FPNUIsSUFOQSxH
QUFJbkIsR0FBU3ZnQixFQUNaMmhCLEtBQ0E1SixFQUFRLEVBQ1IzWSxFQUFTa1AsRUFBU2xQLE9B
R1gyWSxFQUFRM1ksRUFBUTJZLElBQ3ZCL1gsRUFBT3NPLEVBQVV5SixHQUNYL1gsRUFBS3NnQixR
QUlYQyxFQUFVdmdCLEVBQUtzZ0IsTUFBTUMsUUFDaEJtQixHQUthLFNBQVpuQixJQUNKb0IsRUFB
UTVKLEdBQVU4RyxFQUFTdmYsSUFBS1UsRUFBTSxZQUFlLEtBQy9DMmhCLEVBQVE1SixLQUNiL1gs
RUFBS3NnQixNQUFNQyxRQUFVLEtBR0ssS0FBdkJ2Z0IsRUFBS3NnQixNQUFNQyxTQUFrQkYsR0FB
b0JyZ0IsS0FDckQyaEIsRUFBUTVKLEdBQVV3SixHQUFtQnZoQixLQUdyQixTQUFadWdCLElBQ0pv
QixFQUFRNUosR0FBVSxPQUdsQjhHLEVBQVNKLElBQUt6ZSxFQUFNLFVBQVd1Z0IsSUFNbEMsS0FB
TXhJLEVBQVEsRUFBR0EsRUFBUTNZLEVBQVEyWSxJQUNSLE1BQW5CNEosRUFBUTVKLEtBQ1p6SixF
QUFVeUosR0FBUXVJLE1BQU1DLFFBQVVvQixFQUFRNUosR0FJNUMsT0FBT3pKLEdBR1JqUSxFQUFP
RyxHQUFHb0MsUUFDVDhnQixLQUFNLFdBQ0wsTUFBT0QsSUFBVWpsQixNQUFNLElBRXhCb2xCLEtB
QU0sV0FDTCxNQUFPSCxJQUFVamxCLE9BRWxCcWxCLE9BQVEsU0FBVWxILEdBQ2pCLE1BQXNCLGlC
QUFWQSxHQUNKQSxFQUFRbmUsS0FBS2tsQixPQUFTbGxCLEtBQUtvbEIsT0FHNUJwbEIsS0FBS3FE
LEtBQU0sV0FDWndnQixHQUFvQjdqQixNQUN4QjZCLEVBQVE3QixNQUFPa2xCLE9BRWZyakIsRUFB
UTdCLE1BQU9vbEIsV0FLbkIsSUFBSUUsSUFBaUIsd0JBRWpCQyxHQUFXLGlDQUVYQyxHQUFjLDRC
QUtkQyxJQUdIQyxRQUFVLEVBQUcsK0JBQWdDLGFBSzdDQyxPQUFTLEVBQUcsVUFBVyxZQUN2QkMs
S0FBTyxFQUFHLG9CQUFxQix1QkFDL0JDLElBQU0sRUFBRyxpQkFBa0Isb0JBQzNCQyxJQUFNLEVB
QUcscUJBQXNCLHlCQUUvQkMsVUFBWSxFQUFHLEdBQUksSUFJcEJOLElBQVFPLFNBQVdQLEdBQVFD
LE9BRTNCRCxHQUFRUSxNQUFRUixHQUFRUyxNQUFRVCxHQUFRVSxTQUFXVixHQUFRVyxRQUFVWCxH
QUFRRSxNQUM3RUYsR0FBUVksR0FBS1osR0FBUUssRUFHckIsU0FBU1EsSUFBUXZrQixFQUFTNE8s
R0FJekIsR0FBSXpOLEVBWUosT0FUQ0EsR0FENEMsbUJBQWpDbkIsR0FBUXdMLHFCQUNieEwsRUFB
UXdMLHFCQUFzQm9ELEdBQU8sS0FFSSxtQkFBN0I1TyxHQUFRaU0saUJBQ3BCak0sRUFBUWlNLGlC
QUFrQjJDLEdBQU8sUUFNM0IzTCxTQUFSMkwsR0FBcUJBLEdBQU85TyxFQUFPeUUsU0FBVXZFLEVB
QVM0TyxHQUNuRDlPLEVBQU9zQixPQUFTcEIsR0FBV21CLEdBRzVCQSxFQUtSLFFBQVNxakIsSUFB
ZXRqQixFQUFPdWpCLEdBSTlCLElBSEEsR0FBSS9pQixHQUFJLEVBQ1A0WCxFQUFJcFksRUFBTUws
T0FFSGEsRUFBSTRYLEVBQUc1WCxJQUNkNGUsRUFBU0osSUFDUmhmLEVBQU9RLEdBQ1AsY0FDQytp
QixHQUFlbkUsRUFBU3ZmLElBQUswakIsRUFBYS9pQixHQUFLLGVBTW5ELEdBQUlnakIsSUFBUSxX
QUVaLFNBQVNDLElBQWV6akIsRUFBT2xCLEVBQVM0a0IsRUFBU0MsRUFBV0MsR0FPM0QsSUFOQSxH
QUFJcmpCLEdBQU0rRCxFQUFLb0osRUFBS21XLEVBQU1qZSxFQUFVN0UsRUFDbkMraUIsRUFBV2hs
QixFQUFRaWxCLHlCQUNuQkMsS0FDQXhqQixFQUFJLEVBQ0o0WCxFQUFJcFksRUFBTUwsT0FFSGEs
RUFBSTRYLEVBQUc1WCxJQUdkLEdBRkFELEVBQU9QLEVBQU9RLEdBRVRELEdBQWlCLElBQVRBLEVB
R1osR0FBNkIsV0FBeEIzQixFQUFPNkQsS0FBTWxDLEdBSWpCM0IsRUFBT3NCLE1BQU84akIsRUFB
T3pqQixFQUFLaUosVUFBYWpKLEdBQVNBLE9BRzFDLElBQU1pakIsR0FBTS9ZLEtBQU1sSyxHQUls
QixDQUNOK0QsRUFBTUEsR0FBT3dmLEVBQVN0bEIsWUFBYU0sRUFBUVQsY0FBZSxRQUcxRHFQLEdB
QVE0VSxHQUFTblksS0FBTTVKLEtBQVksR0FBSSxLQUFRLEdBQUkrQyxjQUNuRHVnQixFQUFPckIs
R0FBUzlVLElBQVM4VSxHQUFRTSxTQUNqQ3hlLEVBQUlxSixVQUFZa1csRUFBTSxHQUFNamxCLEVB
QU9xbEIsY0FBZTFqQixHQUFTc2pCLEVBQU0sR0FHakU5aUIsRUFBSThpQixFQUFNLEVBQ1YsT0FB
UTlpQixJQUNQdUQsRUFBTUEsRUFBSThNLFNBS1h4UyxHQUFPc0IsTUFBTzhqQixFQUFPMWYsRUFB
SWlGLFlBR3pCakYsRUFBTXdmLEVBQVN0VSxXQUdmbEwsRUFBSWlMLFlBQWMsT0F6QmxCeVUsR0FB
TXptQixLQUFNdUIsRUFBUW9sQixlQUFnQjNqQixHQStCdkN1akIsR0FBU3ZVLFlBQWMsR0FFdkIv
TyxFQUFJLENBQ0osT0FBVUQsRUFBT3lqQixFQUFPeGpCLEtBR3ZCLEdBQUttakIsR0FBYS9rQixF
QUFPK0UsUUFBU3BELEVBQU1vakIsTUFDbENDLEdBQ0pBLEVBQVFybUIsS0FBTWdELE9BZ0JoQixJ
QVhBcUYsRUFBV2hILEVBQU9nSCxTQUFVckYsRUFBSzJKLGNBQWUzSixHQUdoRCtELEVBQU0rZSxH
QUFRUyxFQUFTdGxCLFlBQWErQixHQUFRLFVBR3ZDcUYsR0FDSjBkLEdBQWVoZixHQUlYb2YsRUFB
VSxDQUNkM2lCLEVBQUksQ0FDSixPQUFVUixFQUFPK0QsRUFBS3ZELEtBQ2hCd2hCLEdBQVk5WCxL
QUFNbEssRUFBS2tDLE1BQVEsS0FDbkNpaEIsRUFBUW5tQixLQUFNZ0QsR0FNbEIsTUFBT3VqQixJ
QUlSLFdBQ0MsR0FBSUEsR0FBV25uQixFQUFTb25CLHlCQUN2QkksRUFBTUwsRUFBU3RsQixZQUFh
N0IsRUFBUzBCLGNBQWUsUUFDcER1UCxFQUFRalIsRUFBUzBCLGNBQWUsUUFNakN1UCxHQUFNakQs
YUFBYyxPQUFRLFNBQzVCaUQsRUFBTWpELGFBQWMsVUFBVyxXQUMvQmlELEVBQU1qRCxhQUFjLE9B
QVEsS0FFNUJ3WixFQUFJM2xCLFlBQWFvUCxHQUlqQjVQLEVBQVFvbUIsV0FBYUQsRUFBSUUsV0FB
VyxHQUFPQSxXQUFXLEdBQU9qVCxVQUFVc0IsUUFJdkV5UixFQUFJeFcsVUFBWSx5QkFDaEIzUCxF
QUFRc21CLGlCQUFtQkgsRUFBSUUsV0FBVyxHQUFPalQsVUFBVXdGLGVBRTVELElBQUlsSyxJQUFr
Qi9QLEVBQVMrUCxnQkFLOUI2WCxHQUFZLE9BQ1pDLEdBQWMsaURBQ2RDLEdBQWlCLHFCQUVsQixT
QUFTQyxNQUNSLE9BQU8sRUFHUixRQUFTQyxNQUNSLE9BQU8sRUFLUixRQUFTQyxNQUNSLElBQ0Ms
TUFBT2pvQixHQUFTMFYsY0FDZixNQUFRd1MsS0FHWCxRQUFTQyxJQUFJdmtCLEVBQU13a0IsRUFB
T2xtQixFQUFVb2dCLEVBQU1sZ0IsRUFBSWltQixHQUM3QyxHQUFJQyxHQUFReGlCLENBR1osSUFB
c0IsZ0JBQVZzaUIsR0FBcUIsQ0FHUCxnQkFBYmxtQixLQUdYb2dCLEVBQU9BLEdBQVFwZ0IsRUFD
ZkEsRUFBV2tELE9BRVosS0FBTVUsSUFBUXNpQixHQUNiRCxHQUFJdmtCLEVBQU1rQyxFQUFNNUQs
RUFBVW9nQixFQUFNOEYsRUFBT3RpQixHQUFRdWlCLEVBRWhELE9BQU96a0IsR0FzQlIsR0FuQmEs
TUFBUjBlLEdBQXNCLE1BQU5sZ0IsR0FHcEJBLEVBQUtGLEVBQ0xvZ0IsRUFBT3BnQixFQUFXa0Qs
UUFDRCxNQUFOaEQsSUFDYyxnQkFBYkYsSUFHWEUsRUFBS2tnQixFQUNMQSxFQUFPbGQsU0FJUGhE
LEVBQUtrZ0IsRUFDTEEsRUFBT3BnQixFQUNQQSxFQUFXa0QsU0FHUmhELEtBQU8sRUFDWEEsRUFB
SzRsQixPQUNDLEtBQU01bEIsRUFDWixNQUFPd0IsRUFlUixPQVphLEtBQVJ5a0IsSUFDSkMsRUFB
U2xtQixFQUNUQSxFQUFLLFNBQVVtbUIsR0FJZCxNQURBdG1CLEtBQVN1bUIsSUFBS0QsR0FDUEQs
RUFBT3hrQixNQUFPMUQsS0FBTTJELFlBSTVCM0IsRUFBR3FGLEtBQU82Z0IsRUFBTzdnQixPQUFV
NmdCLEVBQU83Z0IsS0FBT3hGLEVBQU93RixTQUUxQzdELEVBQUtILEtBQU0sV0FDakJ4QixFQUFP
c21CLE1BQU0xTSxJQUFLemIsS0FBTWdvQixFQUFPaG1CLEVBQUlrZ0IsRUFBTXBnQixLQVEzQ0Qs
RUFBT3NtQixPQUVOM29CLFVBRUFpYyxJQUFLLFNBQVVqWSxFQUFNd2tCLEVBQU9uWixFQUFTcVQs
RUFBTXBnQixHQUUxQyxHQUFJdW1CLEdBQWFDLEVBQWEvZ0IsRUFDN0JnaEIsRUFBUUMsRUFBR0Ms
RUFDWHRKLEVBQVN1SixFQUFVaGpCLEVBQU1pakIsRUFBWUMsRUFDckNDLEVBQVd4RyxFQUFTdmYs
SUFBS1UsRUFHMUIsSUFBTXFsQixFQUFOLENBS0toYSxFQUFRQSxVQUNad1osRUFBY3haLEVBQ2RB
LEVBQVV3WixFQUFZeFosUUFDdEIvTSxFQUFXdW1CLEVBQVl2bUIsVUFLbkJBLEdBQ0pELEVBQU80
TyxLQUFLSyxnQkFBaUJuQixHQUFpQjdOLEdBSXpDK00sRUFBUXhILE9BQ2J3SCxFQUFReEgsS0FB
T3hGLEVBQU93RixTQUlma2hCLEVBQVNNLEVBQVNOLFVBQ3pCQSxFQUFTTSxFQUFTTixZQUVYRCxF
QUFjTyxFQUFTQyxVQUM5QlIsRUFBY08sRUFBU0MsT0FBUyxTQUFVcGMsR0FJekMsTUFBeUIsbUJB
QVg3SyxJQUEwQkEsRUFBT3NtQixNQUFNWSxZQUFjcmMsRUFBRWhILEtBQ3BFN0QsRUFBT3NtQixN
QUFNYSxTQUFTdGxCLE1BQU9GLEVBQU1HLFdBQWNxQixTQUtwRGdqQixHQUFVQSxHQUFTLElBQUtq
YixNQUFPb1AsS0FBcUIsSUFDcERxTSxFQUFJUixFQUFNcGxCLE1BQ1YsT0FBUTRsQixJQUNQamhC
LEVBQU1tZ0IsR0FBZXRhLEtBQU00YSxFQUFPUSxRQUNsQzlpQixFQUFPa2pCLEVBQVdyaEIsRUFB
SyxHQUN2Qm9oQixHQUFlcGhCLEVBQUssSUFBTyxJQUFLTSxNQUFPLEtBQU0zRCxPQUd2Q3dCLElB
S055WixFQUFVdGQsRUFBT3NtQixNQUFNaEosUUFBU3paLE9BR2hDQSxHQUFTNUQsRUFBV3FkLEVB
QVE4SixhQUFlOUosRUFBUStKLFdBQWN4akIsRUFHakV5WixFQUFVdGQsRUFBT3NtQixNQUFNaEos
UUFBU3paLE9BR2hDK2lCLEVBQVk1bUIsRUFBT3VDLFFBQ2xCc0IsS0FBTUEsRUFDTmtqQixTQUFV
QSxFQUNWMUcsS0FBTUEsRUFDTnJULFFBQVNBLEVBQ1R4SCxLQUFNd0gsRUFBUXhILEtBQ2R2RixT
QUFVQSxFQUNWaUosYUFBY2pKLEdBQVlELEVBQU9nUSxLQUFLOUUsTUFBTWhDLGFBQWEyQyxLQUFN
NUwsR0FDL0RxbkIsVUFBV1IsRUFBVzdhLEtBQU0sTUFDMUJ1YSxJQUdLSyxFQUFXSCxFQUFRN2lC
LE1BQzFCZ2pCLEVBQVdILEVBQVE3aUIsTUFDbkJnakIsRUFBU1UsY0FBZ0IsRUFHbkJqSyxFQUFR
a0ssT0FDYmxLLEVBQVFrSyxNQUFNcm9CLEtBQU13QyxFQUFNMGUsRUFBTXlHLEVBQVlMLE1BQWtC
LEdBRXpEOWtCLEVBQUt5TSxrQkFDVHpNLEVBQUt5TSxpQkFBa0J2SyxFQUFNNGlCLElBSzNCbkos
RUFBUTFELE1BQ1owRCxFQUFRMUQsSUFBSXphLEtBQU13QyxFQUFNaWxCLEdBRWxCQSxFQUFVNVos
UUFBUXhILE9BQ3ZCb2hCLEVBQVU1WixRQUFReEgsS0FBT3dILEVBQVF4SCxPQUs5QnZGLEVBQ0o0
bUIsRUFBU3ZrQixPQUFRdWtCLEVBQVNVLGdCQUFpQixFQUFHWCxHQUU5Q0MsRUFBU2xvQixLQUFN
aW9CLEdBSWhCNW1CLEVBQU9zbUIsTUFBTTNvQixPQUFRa0csSUFBUyxLQU1oQ3VYLE9BQVEsU0FB
VXpaLEVBQU13a0IsRUFBT25aLEVBQVMvTSxFQUFVd25CLEdBRWpELEdBQUl0bEIsR0FBR3VsQixF
QUFXaGlCLEVBQ2pCZ2hCLEVBQVFDLEVBQUdDLEVBQ1h0SixFQUFTdUosRUFBVWhqQixFQUFNaWpC
LEVBQVlDLEVBQ3JDQyxFQUFXeEcsRUFBU0QsUUFBUzVlLElBQVU2ZSxFQUFTdmYsSUFBS1UsRUFF
dEQsSUFBTXFsQixJQUFlTixFQUFTTSxFQUFTTixRQUF2QyxDQUtBUCxHQUFVQSxHQUFTLElBQUtq
YixNQUFPb1AsS0FBcUIsSUFDcERxTSxFQUFJUixFQUFNcGxCLE1BQ1YsT0FBUTRsQixJQU1QLEdB
TEFqaEIsRUFBTW1nQixHQUFldGEsS0FBTTRhLEVBQU9RLFFBQ2xDOWlCLEVBQU9rakIsRUFBV3Jo
QixFQUFLLEdBQ3ZCb2hCLEdBQWVwaEIsRUFBSyxJQUFPLElBQUtNLE1BQU8sS0FBTTNELE9BR3ZD
d0IsRUFBTixDQU9BeVosRUFBVXRkLEVBQU9zbUIsTUFBTWhKLFFBQVN6WixPQUNoQ0EsR0FBUzVE
LEVBQVdxZCxFQUFROEosYUFBZTlKLEVBQVErSixXQUFjeGpCLEVBQ2pFZ2pCLEVBQVdILEVBQVE3
aUIsT0FDbkI2QixFQUFNQSxFQUFLLElBQ1YsR0FBSTBDLFFBQVEsVUFBWTBlLEVBQVc3YSxLQUFN
LGlCQUFvQixXQUc5RHliLEVBQVl2bEIsRUFBSTBrQixFQUFTOWxCLE1BQ3pCLE9BQVFvQixJQUNQ
eWtCLEVBQVlDLEVBQVUxa0IsSUFFZnNsQixHQUFlVixJQUFhSCxFQUFVRyxVQUN6Qy9aLEdBQVdB
LEVBQVF4SCxPQUFTb2hCLEVBQVVwaEIsTUFDdENFLElBQU9BLEVBQUltRyxLQUFNK2EsRUFBVVUs
WUFDM0JybkIsR0FBWUEsSUFBYTJtQixFQUFVM21CLFdBQ3hCLE9BQWJBLElBQXFCMm1CLEVBQVUz
bUIsWUFDaEM0bUIsRUFBU3ZrQixPQUFRSCxFQUFHLEdBRWZ5a0IsRUFBVTNtQixVQUNkNG1CLEVB
QVNVLGdCQUVMakssRUFBUWxDLFFBQ1prQyxFQUFRbEMsT0FBT2pjLEtBQU13QyxFQUFNaWxCLEdB
T3pCYyxLQUFjYixFQUFTOWxCLFNBQ3JCdWMsRUFBUXFLLFVBQ2JySyxFQUFRcUssU0FBU3hvQixL
QUFNd0MsRUFBTW1sQixFQUFZRSxFQUFTQyxXQUFhLEdBRS9Eam5CLEVBQU80bkIsWUFBYWptQixF
QUFNa0MsRUFBTW1qQixFQUFTQyxjQUduQ1AsR0FBUTdpQixRQTFDZixLQUFNQSxJQUFRNmlCLEdB
Q2IxbUIsRUFBT3NtQixNQUFNbEwsT0FBUXpaLEVBQU1rQyxFQUFPc2lCLEVBQU9RLEdBQUszWixF
QUFTL00sR0FBVSxFQThDL0RELEdBQU9xRSxjQUFlcWlCLElBQzFCbEcsRUFBU3BGLE9BQVF6WixF
QUFNLG1CQUl6QndsQixTQUFVLFNBQVVVLEdBR25CLEdBQUl2QixHQUFRdG1CLEVBQU9zbUIsTUFB
TXdCLElBQUtELEdBRTFCam1CLEVBQUdPLEVBQUdkLEVBQUt3UixFQUFTK1QsRUFBV21CLEVBQ2xD
cGlCLEVBQU8sR0FBSTdCLE9BQU9oQyxVQUFVZixRQUM1QjhsQixHQUFhckcsRUFBU3ZmLElBQUs5
QyxLQUFNLGVBQW9CbW9CLEVBQU16aUIsVUFDM0R5WixFQUFVdGQsRUFBT3NtQixNQUFNaEosUUFB
U2dKLEVBQU16aUIsU0FLdkMsS0FGQThCLEVBQU0sR0FBTTJnQixFQUVOMWtCLEVBQUksRUFBR0Es
RUFBSUUsVUFBVWYsT0FBUWEsSUFDbEMrRCxFQUFNL0QsR0FBTUUsVUFBV0YsRUFNeEIsSUFIQTBr
QixFQUFNMEIsZUFBaUI3cEIsTUFHbEJtZixFQUFRMkssYUFBZTNLLEVBQVEySyxZQUFZOW9CLEtB
QU1oQixLQUFNbW9CLE1BQVksRUFBeEUsQ0FLQXlCLEVBQWUvbkIsRUFBT3NtQixNQUFNTyxTQUFT
MW5CLEtBQU1oQixLQUFNbW9CLEVBQU9PLEdBR3hEamxCLEVBQUksQ0FDSixRQUFVaVIsRUFBVWtW
LEVBQWNubUIsUUFBWTBrQixFQUFNNEIsdUJBQXlCLENBQzVFNUIsRUFBTTZCLGNBQWdCdFYsRUFB
UWxSLEtBRTlCUSxFQUFJLENBQ0osUUFBVXlrQixFQUFZL1QsRUFBUWdVLFNBQVUxa0IsUUFDdENt
a0IsRUFBTThCLGdDQUlEOUIsRUFBTStCLGFBQWMvQixFQUFNK0IsV0FBV3hjLEtBQU0rYSxFQUFV
VSxhQUUxRGhCLEVBQU1NLFVBQVlBLEVBQ2xCTixFQUFNakcsS0FBT3VHLEVBQVV2RyxLQUV2Qmhm
LElBQVVyQixFQUFPc21CLE1BQU1oSixRQUFTc0osRUFBVUcsZUFBbUJFLFFBQzVETCxFQUFVNVos
U0FBVW5MLE1BQU9nUixFQUFRbFIsS0FBTWdFLEdBRTdCeEMsU0FBUjlCLElBQ0dpbEIsRUFBTTFV
LE9BQVN2USxNQUFVLElBQy9CaWxCLEVBQU1nQyxpQkFDTmhDLEVBQU1pQyxvQkFZWCxNQUpLakws
R0FBUWtMLGNBQ1psTCxFQUFRa0wsYUFBYXJwQixLQUFNaEIsS0FBTW1vQixHQUczQkEsRUFBTTFV
LFNBR2RpVixTQUFVLFNBQVVQLEVBQU9PLEdBQzFCLEdBQUlqbEIsR0FBR2dsQixFQUFXdFcsRUFB
S21ZLEVBQWlCQyxFQUN2Q1gsS0FDQVIsRUFBZ0JWLEVBQVNVLGNBQ3pCcGEsRUFBTW1aLEVBQU14
akIsTUFHYixJQUFLeWtCLEdBSUpwYSxFQUFJdkMsWUFPYyxVQUFmMGIsRUFBTXppQixNQUFvQnlp
QixFQUFNblMsUUFBVSxHQUU3QyxLQUFRaEgsSUFBUWhQLEtBQU1nUCxFQUFNQSxFQUFJdE4sWUFB
YzFCLEtBSTdDLEdBQXNCLElBQWpCZ1AsRUFBSXZDLFdBQW9DLFVBQWYwYixFQUFNemlCLE1BQW9C
c0osRUFBSTNDLFlBQWEsR0FBUyxDQUdqRixJQUZBaWUsS0FDQUMsS0FDTTltQixFQUFJLEVBQUdB
LEVBQUkybEIsRUFBZTNsQixJQUMvQmdsQixFQUFZQyxFQUFVamxCLEdBR3RCME8sRUFBTXNXLEVB
QVUzbUIsU0FBVyxJQUVNa0QsU0FBNUJ1bEIsRUFBa0JwWSxLQUN0Qm9ZLEVBQWtCcFksR0FBUXNX
LEVBQVUxZCxhQUNuQ2xKLEVBQVFzUSxFQUFLblMsTUFBT3ViLE1BQU92TSxNQUMzQm5OLEVBQU80
TyxLQUFNMEIsRUFBS25TLEtBQU0sTUFBUWdQLElBQVFwTSxRQUVyQzJuQixFQUFrQnBZLElBQ3RC
bVksRUFBZ0I5cEIsS0FBTWlvQixFQUduQjZCLEdBQWdCMW5CLFFBQ3BCZ25CLEVBQWFwcEIsTUFB
UWdELEtBQU13TCxFQUFLMFosU0FBVTRCLElBWTlDLE1BTEF0YixHQUFNaFAsS0FDRG9wQixFQUFn
QlYsRUFBUzlsQixRQUM3QmduQixFQUFhcHBCLE1BQVFnRCxLQUFNd0wsRUFBSzBaLFNBQVVBLEVB
QVNwb0IsTUFBTzhvQixLQUdwRFEsR0FHUlksUUFBUyxTQUFVbG1CLEVBQU1tbUIsR0FDeEJycUIs
T0FBTzJoQixlQUFnQmxnQixFQUFPNm9CLE1BQU1qb0IsVUFBVzZCLEdBQzlDcW1CLFlBQVksRUFD
WjNJLGNBQWMsRUFFZGxmLElBQUtqQixFQUFPZ0QsV0FBWTRsQixHQUN2QixXQUNDLEdBQUt6cUIs
S0FBSzRxQixjQUNSLE1BQU9ILEdBQU16cUIsS0FBSzRxQixnQkFHckIsV0FDQyxHQUFLNXFCLEtB
QUs0cUIsY0FDUixNQUFPNXFCLE1BQUs0cUIsY0FBZXRtQixJQUkvQjJkLElBQUssU0FBVTdhLEdB
Q2RoSCxPQUFPMmhCLGVBQWdCL2hCLEtBQU1zRSxHQUM1QnFtQixZQUFZLEVBQ1ozSSxjQUFjLEVB
Q2Q2SSxVQUFVLEVBQ1Z6akIsTUFBT0EsUUFNWHVpQixJQUFLLFNBQVVpQixHQUNkLE1BQU9BLEdB
QWUvb0IsRUFBT29ELFNBQzVCMmxCLEVBQ0EsR0FBSS9vQixHQUFPNm9CLE1BQU9FLElBR3BCekws
U0FDQzJMLE1BR0NDLFVBQVUsR0FFWDFWLE9BR0MyVixRQUFTLFdBQ1IsR0FBS2hyQixPQUFTNm5C
LE1BQXVCN25CLEtBQUtxVixNQUV6QyxNQURBclYsTUFBS3FWLFNBQ0UsR0FHVDRULGFBQWMsV0FF
ZmdDLE1BQ0NELFFBQVMsV0FDUixHQUFLaHJCLE9BQVM2bkIsTUFBdUI3bkIsS0FBS2lyQixLQUV6
QyxNQURBanJCLE1BQUtpckIsUUFDRSxHQUdUaEMsYUFBYyxZQUVmaUMsT0FHQ0YsUUFBUyxXQUNS
LEdBQW1CLGFBQWRockIsS0FBSzBGLE1BQXVCMUYsS0FBS2tyQixPQUFTcnBCLEVBQU95RSxTQUFV
dEcsS0FBTSxTQUVyRSxNQURBQSxNQUFLa3JCLFNBQ0UsR0FLVG5GLFNBQVUsU0FBVW9DLEdBQ25C
LE1BQU90bUIsR0FBT3lFLFNBQVU2aEIsRUFBTXhqQixPQUFRLE9BSXhDd21CLGNBQ0NkLGFBQWMs
U0FBVWxDLEdBSURuakIsU0FBakJtakIsRUFBTTFVLFFBQXdCMFUsRUFBTXlDLGdCQUN4Q3pDLEVB
QU15QyxjQUFjUSxZQUFjakQsRUFBTTFVLFlBTzdDNVIsRUFBTzRuQixZQUFjLFNBQVVqbUIsRUFB
TWtDLEVBQU1vakIsR0FHckN0bEIsRUFBSzJkLHFCQUNUM2QsRUFBSzJkLG9CQUFxQnpiLEVBQU1v
akIsSUFJbENqbkIsRUFBTzZvQixNQUFRLFNBQVVubUIsRUFBSzhtQixHQUc3QixNQUFRcnJCLGdC
QUFnQjZCLEdBQU82b0IsT0FLMUJubUIsR0FBT0EsRUFBSW1CLE1BQ2YxRixLQUFLNHFCLGNBQWdC
cm1CLEVBQ3JCdkUsS0FBSzBGLEtBQU9uQixFQUFJbUIsS0FJaEIxRixLQUFLc3JCLG1CQUFxQi9t
QixFQUFJZ25CLGtCQUNIdm1CLFNBQXpCVCxFQUFJZ25CLGtCQUdKaG5CLEVBQUk2bUIsZUFBZ0Is
RUFDckJ6RCxHQUNBQyxHQUtENW5CLEtBQUsyRSxPQUFXSixFQUFJSSxRQUFrQyxJQUF4QkosRUFB
SUksT0FBTzhILFNBQ3hDbEksRUFBSUksT0FBT2pELFdBQ1g2QyxFQUFJSSxPQUVMM0UsS0FBS2dx
QixjQUFnQnpsQixFQUFJeWxCLGNBQ3pCaHFCLEtBQUt3ckIsY0FBZ0JqbkIsRUFBSWluQixlQUl6
QnhyQixLQUFLMEYsS0FBT25CLEVBSVI4bUIsR0FDSnhwQixFQUFPdUMsT0FBUXBFLEtBQU1xckIs
R0FJdEJyckIsS0FBS3lyQixVQUFZbG5CLEdBQU9BLEVBQUlrbkIsV0FBYTVwQixFQUFPNEYsV0FH
aER6SCxLQUFNNkIsRUFBT29ELFVBQVksSUExQ2pCLEdBQUlwRCxHQUFPNm9CLE1BQU9ubUIsRUFB
SzhtQixJQStDaEN4cEIsRUFBTzZvQixNQUFNam9CLFdBQ1pFLFlBQWFkLEVBQU82b0IsTUFDcEJZ
LG1CQUFvQjFELEdBQ3BCbUMscUJBQXNCbkMsR0FDdEJxQyw4QkFBK0JyQyxHQUMvQjhELGFBQWEs
RUFFYnZCLGVBQWdCLFdBQ2YsR0FBSXpkLEdBQUkxTSxLQUFLNHFCLGFBRWI1cUIsTUFBS3NyQixt
QkFBcUIzRCxHQUVyQmpiLElBQU0xTSxLQUFLMHJCLGFBQ2ZoZixFQUFFeWQsa0JBR0pDLGdCQUFp
QixXQUNoQixHQUFJMWQsR0FBSTFNLEtBQUs0cUIsYUFFYjVxQixNQUFLK3BCLHFCQUF1QnBDLEdB
RXZCamIsSUFBTTFNLEtBQUswckIsYUFDZmhmLEVBQUUwZCxtQkFHSnVCLHlCQUEwQixXQUN6QixH
QUFJamYsR0FBSTFNLEtBQUs0cUIsYUFFYjVxQixNQUFLaXFCLDhCQUFnQ3RDLEdBRWhDamIsSUFB
TTFNLEtBQUswckIsYUFDZmhmLEVBQUVpZiwyQkFHSDNyQixLQUFLb3FCLG9CQUtQdm9CLEVBQU93
QixNQUNOdW9CLFFBQVEsRUFDUkMsU0FBUyxFQUNUQyxZQUFZLEVBQ1pDLGdCQUFnQixFQUNoQkMs
U0FBUyxFQUNUQyxRQUFRLEVBQ1JDLFlBQVksRUFDWkMsU0FBUyxFQUNUQyxPQUFPLEVBQ1BDLE9B
QU8sRUFDUEMsVUFBVSxFQUNWQyxNQUFNLEVBQ05DLFFBQVEsRUFDUkMsVUFBVSxFQUNWcGUsS0FB
SyxFQUNMcWUsU0FBUyxFQUNUMVcsUUFBUSxFQUNSMlcsU0FBUyxFQUNUQyxTQUFTLEVBQ1RDLFNB
QVMsRUFDVEMsU0FBUyxFQUNUQyxTQUFTLEVBQ1RDLFdBQVcsRUFDWEMsYUFBYSxFQUNiQyxTQUFT
LEVBQ1RDLFNBQVMsRUFDVEMsZUFBZSxFQUNmQyxXQUFXLEVBQ1hDLFNBQVMsRUFFVEMsTUFBTyxT
QUFVcEYsR0FDaEIsR0FBSW5TLEdBQVNtUyxFQUFNblMsTUFHbkIsT0FBb0IsT0FBZm1TLEVBQU1v
RixPQUFpQi9GLEdBQVU5WixLQUFNeWEsRUFBTXppQixNQUN4QixNQUFsQnlpQixFQUFNc0UsU0FB
bUJ0RSxFQUFNc0UsU0FBV3RFLEVBQU11RSxTQUlsRHZFLEVBQU1vRixPQUFvQnZvQixTQUFYZ1Is
R0FBd0J5UixHQUFZL1osS0FBTXlhLEVBQU16aUIsTUFDdEQsRUFBVHNRLEVBQ0csRUFHTSxFQUFU
QSxFQUNHLEVBR00sRUFBVEEsRUFDRyxFQUdELEVBR0RtUyxFQUFNb0YsUUFFWjFyQixFQUFPc21C
LE1BQU1xQyxTQVVoQjNvQixFQUFPd0IsTUFDTm1xQixXQUFZLFlBQ1pDLFdBQVksV0FDWkMsYUFB
YyxjQUNkQyxhQUFjLGNBQ1osU0FBVUMsRUFBTWpFLEdBQ2xCOW5CLEVBQU9zbUIsTUFBTWhKLFFB
QVN5TyxJQUNyQjNFLGFBQWNVLEVBQ2RULFNBQVVTLEVBRVZiLE9BQVEsU0FBVVgsR0FDakIsR0FB
SWpsQixHQUNIeUIsRUFBUzNFLEtBQ1Q2dEIsRUFBVTFGLEVBQU1xRCxjQUNoQi9DLEVBQVlOLEVB
QU1NLFNBU25CLE9BTE1vRixLQUFhQSxJQUFZbHBCLEdBQVc5QyxFQUFPZ0gsU0FBVWxFLEVBQVFr
cEIsTUFDbEUxRixFQUFNemlCLEtBQU8raUIsRUFBVUcsU0FDdkIxbEIsRUFBTXVsQixFQUFVNVos
UUFBUW5MLE1BQU8xRCxLQUFNMkQsV0FDckN3a0IsRUFBTXppQixLQUFPaWtCLEdBRVB6bUIsTUFL
VnJCLEVBQU9HLEdBQUdvQyxRQUVUMmpCLEdBQUksU0FBVUMsRUFBT2xtQixFQUFVb2dCLEVBQU1s
Z0IsR0FDcEMsTUFBTytsQixJQUFJL25CLEtBQU1nb0IsRUFBT2xtQixFQUFVb2dCLEVBQU1sZ0Is
SUFFekNpbUIsSUFBSyxTQUFVRCxFQUFPbG1CLEVBQVVvZ0IsRUFBTWxnQixHQUNyQyxNQUFPK2xC
LElBQUkvbkIsS0FBTWdvQixFQUFPbG1CLEVBQVVvZ0IsRUFBTWxnQixFQUFJLElBRTdDb21CLElB
QUssU0FBVUosRUFBT2xtQixFQUFVRSxHQUMvQixHQUFJeW1CLEdBQVcvaUIsQ0FDZixJQUFLc2lC
LEdBQVNBLEVBQU1tQyxnQkFBa0JuQyxFQUFNUyxVQVczQyxNQVJBQSxHQUFZVCxFQUFNUyxVQUNs
QjVtQixFQUFRbW1CLEVBQU02QixnQkFBaUJ6QixJQUM5QkssRUFBVVUsVUFDVFYsRUFBVUcsU0FB
VyxJQUFNSCxFQUFVVSxVQUNyQ1YsRUFBVUcsU0FDWEgsRUFBVTNtQixTQUNWMm1CLEVBQVU1WixT
QUVKN08sSUFFUixJQUFzQixnQkFBVmdvQixHQUFxQixDQUdoQyxJQUFNdGlCLElBQVFzaUIsR0FD
YmhvQixLQUFLb29CLElBQUsxaUIsRUFBTTVELEVBQVVrbUIsRUFBT3RpQixHQUVsQyxPQUFPMUYs
TUFXUixNQVRLOEIsTUFBYSxHQUE2QixrQkFBYkEsS0FHakNFLEVBQUtGLEVBQ0xBLEVBQVdrRCxR
QUVQaEQsS0FBTyxJQUNYQSxFQUFLNGxCLElBRUM1bkIsS0FBS3FELEtBQU0sV0FDakJ4QixFQUFP
c21CLE1BQU1sTCxPQUFRamQsS0FBTWdvQixFQUFPaG1CLEVBQUlGLE9BTXpDLElBS0Nnc0IsSUFB
WSw4RkFPWkMsR0FBZSx3QkFHZkMsR0FBVyxvQ0FDWEMsR0FBb0IsY0FDcEJDLEdBQWUsMENBRWhC
LFNBQVNDLElBQW9CM3FCLEVBQU00cUIsR0FDbEMsTUFBS3ZzQixHQUFPeUUsU0FBVTlDLEVBQU0s
VUFDM0IzQixFQUFPeUUsU0FBK0IsS0FBckI4bkIsRUFBUTNoQixTQUFrQjJoQixFQUFVQSxFQUFR
M2IsV0FBWSxNQUVsRWpQLEVBQUsrSixxQkFBc0IsU0FBVyxJQUFPL0osRUFHOUNBLEVBSVIsUUFB
UzZxQixJQUFlN3FCLEdBRXZCLE1BREFBLEdBQUtrQyxNQUF5QyxPQUFoQ2xDLEVBQUttSyxhQUFj
LFNBQXNCLElBQU1uSyxFQUFLa0MsS0FDM0RsQyxFQUVSLFFBQVM4cUIsSUFBZTlxQixHQUN2QixH
QUFJdUosR0FBUWtoQixHQUFrQjdnQixLQUFNNUosRUFBS2tDLEtBUXpDLE9BTktxSCxHQUNKdkos
RUFBS2tDLEtBQU9xSCxFQUFPLEdBRW5CdkosRUFBSzBLLGdCQUFpQixRQUdoQjFLLEVBR1IsUUFB
UytxQixJQUFnQmhxQixFQUFLaXFCLEdBQzdCLEdBQUkvcUIsR0FBRzRYLEVBQUczVixFQUFNK29C
LEVBQVVDLEVBQVVDLEVBQVVDLEVBQVVyRyxDQUV4RCxJQUF1QixJQUFsQmlHLEVBQUsvaEIsU0FB
VixDQUtBLEdBQUs0VixFQUFTRCxRQUFTN2QsS0FDdEJrcUIsRUFBV3BNLEVBQVNmLE9BQVEvYyxH
QUM1Qm1xQixFQUFXck0sRUFBU0osSUFBS3VNLEVBQU1DLEdBQy9CbEcsRUFBU2tHLEVBQVNsRyxR
QUVKLE9BQ05tRyxHQUFTNUYsT0FDaEI0RixFQUFTbkcsU0FFVCxLQUFNN2lCLElBQVE2aUIsR0FD
YixJQUFNOWtCLEVBQUksRUFBRzRYLEVBQUlrTixFQUFRN2lCLEdBQU85QyxPQUFRYSxFQUFJNFgs
RUFBRzVYLElBQzlDNUIsRUFBT3NtQixNQUFNMU0sSUFBSytTLEVBQU05b0IsRUFBTTZpQixFQUFR
N2lCLEdBQVFqQyxJQU83QzZlLEVBQVNGLFFBQVM3ZCxLQUN0Qm9xQixFQUFXck0sRUFBU2hCLE9B
QVEvYyxHQUM1QnFxQixFQUFXL3NCLEVBQU91QyxVQUFZdXFCLEdBRTlCck0sRUFBU0wsSUFBS3VN
LEVBQU1JLEtBS3RCLFFBQVNDLElBQVV0cUIsRUFBS2lxQixHQUN2QixHQUFJbG9CLEdBQVdrb0Is
RUFBS2xvQixTQUFTQyxhQUdYLFdBQWJELEdBQXdCZ2YsR0FBZTVYLEtBQU1uSixFQUFJbUIsTUFD
ckQ4b0IsRUFBSzdZLFFBQVVwUixFQUFJb1IsUUFHSyxVQUFiclAsR0FBcUMsYUFBYkEsSUFDbkNr
b0IsRUFBSzNVLGFBQWV0VixFQUFJc1YsY0FJMUIsUUFBU2lWLElBQVVDLEVBQVl2bkIsRUFBTWxF
LEVBQVV1akIsR0FHOUNyZixFQUFPakgsRUFBT21ELFNBQVc4RCxFQUV6QixJQUFJdWYsR0FBVW5q
QixFQUFPK2lCLEVBQVNxSSxFQUFZcGYsRUFBTXhPLEVBQy9DcUMsRUFBSSxFQUNKNFgsRUFBSTBU
LEVBQVduc0IsT0FDZnFzQixFQUFXNVQsRUFBSSxFQUNmalUsRUFBUUksRUFBTSxHQUNkM0MsRUFB
YWhELEVBQU9nRCxXQUFZdUMsRUFHakMsSUFBS3ZDLEdBQ0R3VyxFQUFJLEdBQXNCLGdCQUFWalUs
S0FDaEJuRyxFQUFRb21CLFlBQWMyRyxHQUFTdGdCLEtBQU10RyxHQUN4QyxNQUFPMm5CLEdBQVcx
ckIsS0FBTSxTQUFVa1ksR0FDakMsR0FBSVosR0FBT29VLEVBQVdsckIsR0FBSTBYLEVBQ3JCMVcs
S0FDSjJDLEVBQU0sR0FBTUosRUFBTXBHLEtBQU1oQixLQUFNdWIsRUFBT1osRUFBS3VVLFNBRTND
SixHQUFVblUsRUFBTW5ULEVBQU1sRSxFQUFVdWpCLElBSWxDLElBQUt4TCxJQUNKMEwsRUFBV0ws
R0FBZWxmLEVBQU11bkIsRUFBWSxHQUFJNWhCLGVBQWUsRUFBTzRoQixFQUFZbEksR0FDbEZqakIs
RUFBUW1qQixFQUFTdFUsV0FFbUIsSUFBL0JzVSxFQUFTdmEsV0FBVzVKLFNBQ3hCbWtCLEVBQVdu
akIsR0FJUEEsR0FBU2lqQixHQUFVLENBT3ZCLElBTkFGLEVBQVU5a0IsRUFBTzBCLElBQUsraUIs
R0FBUVMsRUFBVSxVQUFZc0gsSUFDcERXLEVBQWFySSxFQUFRL2pCLE9BS2JhLEVBQUk0WCxFQUFH
NVgsSUFDZG1NLEVBQU9tWCxFQUVGdGpCLElBQU13ckIsSUFDVnJmLEVBQU8vTixFQUFPNkMsTUFB
T2tMLEdBQU0sR0FBTSxHQUc1Qm9mLEdBSUpudEIsRUFBT3NCLE1BQU93akIsRUFBU0wsR0FBUTFX
LEVBQU0sWUFJdkN0TSxFQUFTdEMsS0FBTSt0QixFQUFZdHJCLEdBQUttTSxFQUFNbk0sRUFHdkMs
SUFBS3VyQixFQU9KLElBTkE1dEIsRUFBTXVsQixFQUFTQSxFQUFRL2pCLE9BQVMsR0FBSXVLLGNB
R3BDdEwsRUFBTzBCLElBQUtvakIsRUFBUzJILElBR2Y3cUIsRUFBSSxFQUFHQSxFQUFJdXJCLEVB
QVl2ckIsSUFDNUJtTSxFQUFPK1csRUFBU2xqQixHQUNYK2hCLEdBQVk5WCxLQUFNa0MsRUFBS2xL
LE1BQVEsTUFDbEMyYyxFQUFTZixPQUFRMVIsRUFBTSxlQUN4Qi9OLEVBQU9nSCxTQUFVekgsRUFB
S3dPLEtBRWpCQSxFQUFLckwsSUFHSjFDLEVBQU9zdEIsVUFDWHR0QixFQUFPc3RCLFNBQVV2ZixF
QUFLckwsS0FHdkJyRCxFQUFTME8sRUFBSzRDLFlBQVlwTixRQUFTOG9CLEdBQWMsSUFBTTlzQixJ
QVE3RCxNQUFPMnRCLEdBR1IsUUFBUzlSLElBQVF6WixFQUFNMUIsRUFBVXN0QixHQUtoQyxJQUpB
LEdBQUl4ZixHQUNIcVgsRUFBUW5sQixFQUFXRCxFQUFPME8sT0FBUXpPLEVBQVUwQixHQUFTQSxF
QUNyREMsRUFBSSxFQUU0QixPQUF2Qm1NLEVBQU9xWCxFQUFPeGpCLElBQWVBLElBQ2hDMnJCLEdB
QThCLElBQWxCeGYsRUFBS25ELFVBQ3RCNUssRUFBT3d0QixVQUFXL0ksR0FBUTFXLElBR3RCQSxF
QUFLbE8sYUFDSjB0QixHQUFZdnRCLEVBQU9nSCxTQUFVK0csRUFBS3pDLGNBQWV5QyxJQUNyRDJX
LEdBQWVELEdBQVExVyxFQUFNLFdBRTlCQSxFQUFLbE8sV0FBV0MsWUFBYWlPLEdBSS9CLE9BQU9w
TSxHQUdSM0IsRUFBT3VDLFFBQ044aUIsY0FBZSxTQUFVZ0ksR0FDeEIsTUFBT0EsR0FBSzlwQixR
QUFTMG9CLEdBQVcsY0FHakNwcEIsTUFBTyxTQUFVbEIsRUFBTThyQixFQUFlQyxHQUNyQyxHQUFJ
OXJCLEdBQUc0WCxFQUFHbVUsRUFBYUMsRUFDdEIvcUIsRUFBUWxCLEVBQUs4akIsV0FBVyxHQUN4
Qm9JLEVBQVM3dEIsRUFBT2dILFNBQVVyRixFQUFLMkosY0FBZTNKLEVBRy9DLE1BQU12QyxFQUFR
c21CLGdCQUFzQyxJQUFsQi9qQixFQUFLaUosVUFBb0MsS0FBbEJqSixFQUFLaUosVUFDM0Q1SyxF
QUFPa1ksU0FBVXZXLElBTW5CLElBSEFpc0IsRUFBZW5KLEdBQVE1aEIsR0FDdkI4cUIsRUFBY2xK
LEdBQVE5aUIsR0FFaEJDLEVBQUksRUFBRzRYLEVBQUltVSxFQUFZNXNCLE9BQVFhLEVBQUk0WCxF
QUFHNVgsSUFDM0NvckIsR0FBVVcsRUFBYS9yQixHQUFLZ3NCLEVBQWNoc0IsR0FLNUMsSUFBSzZy
QixFQUNKLEdBQUtDLEVBSUosSUFIQUMsRUFBY0EsR0FBZWxKLEdBQVE5aUIsR0FDckNpc0IsRUFB
ZUEsR0FBZ0JuSixHQUFRNWhCLEdBRWpDakIsRUFBSSxFQUFHNFgsRUFBSW1VLEVBQVk1c0IsT0FB
UWEsRUFBSTRYLEVBQUc1WCxJQUMzQzhxQixHQUFnQmlCLEVBQWEvckIsR0FBS2dzQixFQUFjaHNC
LFFBR2pEOHFCLElBQWdCL3FCLEVBQU1rQixFQVd4QixPQU5BK3FCLEdBQWVuSixHQUFRNWhCLEVB
QU8sVUFDekIrcUIsRUFBYTdzQixPQUFTLEdBQzFCMmpCLEdBQWVrSixHQUFlQyxHQUFVcEosR0FB
UTlpQixFQUFNLFdBSWhEa0IsR0FHUjJxQixVQUFXLFNBQVVwc0IsR0FLcEIsSUFKQSxHQUFJaWYs
R0FBTTFlLEVBQU1rQyxFQUNmeVosRUFBVXRkLEVBQU9zbUIsTUFBTWhKLFFBQ3ZCMWIsRUFBSSxF
QUU2QnVCLFVBQXhCeEIsRUFBT1AsRUFBT1EsSUFBcUJBLElBQzVDLEdBQUtrZSxFQUFZbmUsR0FB
UyxDQUN6QixHQUFPMGUsRUFBTzFlLEVBQU02ZSxFQUFTcGQsU0FBYyxDQUMxQyxHQUFLaWQsRUFB
S3FHLE9BQ1QsSUFBTTdpQixJQUFRd2MsR0FBS3FHLE9BQ2JwSixFQUFTelosR0FDYjdELEVBQU9z
bUIsTUFBTWxMLE9BQVF6WixFQUFNa0MsR0FJM0I3RCxFQUFPNG5CLFlBQWFqbUIsRUFBTWtDLEVB
QU13YyxFQUFLNEcsT0FPeEN0bEIsR0FBTTZlLEVBQVNwZCxTQUFZRCxPQUV2QnhCLEVBQU04ZSxF
QUFTcmQsV0FJbkJ6QixFQUFNOGUsRUFBU3JkLFNBQVlELFlBT2hDbkQsRUFBT0csR0FBR29DLFFB
Q1R1ckIsT0FBUSxTQUFVN3RCLEdBQ2pCLE1BQU9tYixJQUFRamQsS0FBTThCLEdBQVUsSUFHaENt
YixPQUFRLFNBQVVuYixHQUNqQixNQUFPbWIsSUFBUWpkLEtBQU04QixJQUd0QlAsS0FBTSxTQUFV
NkYsR0FDZixNQUFPa2EsR0FBUXRoQixLQUFNLFNBQVVvSCxHQUM5QixNQUFpQnBDLFVBQVZvQyxF
QUNOdkYsRUFBT04sS0FBTXZCLE1BQ2JBLEtBQUs4VixRQUFRelMsS0FBTSxXQUNLLElBQWxCckQs
S0FBS3lNLFVBQW9DLEtBQWxCek0sS0FBS3lNLFVBQXFDLElBQWxCek0sS0FBS3lNLFdBQ3hEek0s
S0FBS3dTLFlBQWNwTCxNQUdwQixLQUFNQSxFQUFPekQsVUFBVWYsU0FHM0JndEIsT0FBUSxXQUNQ
LE1BQU9kLElBQVU5dUIsS0FBTTJELFVBQVcsU0FBVUgsR0FDM0MsR0FBdUIsSUFBbEJ4RCxLQUFL
eU0sVUFBb0MsS0FBbEJ6TSxLQUFLeU0sVUFBcUMsSUFBbEJ6TSxLQUFLeU0sU0FBaUIsQ0FDekUs
R0FBSTlILEdBQVN3cEIsR0FBb0JudUIsS0FBTXdELEVBQ3ZDbUIsR0FBT2xELFlBQWErQixPQUt2
QnFzQixRQUFTLFdBQ1IsTUFBT2YsSUFBVTl1QixLQUFNMkQsVUFBVyxTQUFVSCxHQUMzQyxHQUF1
QixJQUFsQnhELEtBQUt5TSxVQUFvQyxLQUFsQnpNLEtBQUt5TSxVQUFxQyxJQUFsQnpNLEtBQUt5
TSxTQUFpQixDQUN6RSxHQUFJOUgsR0FBU3dwQixHQUFvQm51QixLQUFNd0QsRUFDdkNtQixHQUFP
bXJCLGFBQWN0c0IsRUFBTW1CLEVBQU84TixnQkFLckNzZCxPQUFRLFdBQ1AsTUFBT2pCLElBQVU5
dUIsS0FBTTJELFVBQVcsU0FBVUgsR0FDdEN4RCxLQUFLMEIsWUFDVDFCLEtBQUswQixXQUFXb3VC
LGFBQWN0c0IsRUFBTXhELFNBS3ZDZ3dCLE1BQU8sV0FDTixNQUFPbEIsSUFBVTl1QixLQUFNMkQs
VUFBVyxTQUFVSCxHQUN0Q3hELEtBQUswQixZQUNUMUIsS0FBSzBCLFdBQVdvdUIsYUFBY3RzQixF
QUFNeEQsS0FBS21QLGdCQUs1QzJHLE1BQU8sV0FJTixJQUhBLEdBQUl0UyxHQUNIQyxFQUFJLEVB
RTJCLE9BQXRCRCxFQUFPeEQsS0FBTXlELElBQWVBLElBQ2QsSUFBbEJELEVBQUtpSixXQUdUNUss
RUFBT3d0QixVQUFXL0ksR0FBUTlpQixHQUFNLElBR2hDQSxFQUFLZ1AsWUFBYyxHQUlyQixPQUFP
eFMsT0FHUjBFLE1BQU8sU0FBVTRxQixFQUFlQyxHQUkvQixNQUhBRCxHQUFpQyxNQUFqQkEsR0FB
Z0NBLEVBQ2hEQyxFQUF5QyxNQUFyQkEsRUFBNEJELEVBQWdCQyxFQUV6RHZ2QixLQUFLdUQsSUFB
SyxXQUNoQixNQUFPMUIsR0FBTzZDLE1BQU8xRSxLQUFNc3ZCLEVBQWVDLE1BSTVDTCxLQUFNLFNB
QVU5bkIsR0FDZixNQUFPa2EsR0FBUXRoQixLQUFNLFNBQVVvSCxHQUM5QixHQUFJNUQsR0FBT3hE
LEtBQU0sT0FDaEJ5RCxFQUFJLEVBQ0o0WCxFQUFJcmIsS0FBSzRDLE1BRVYsSUFBZW9DLFNBQVZv
QyxHQUF5QyxJQUFsQjVELEVBQUtpSixTQUNoQyxNQUFPakosR0FBS29OLFNBSWIsSUFBc0IsZ0JB
QVZ4SixLQUF1QjJtQixHQUFhcmdCLEtBQU10RyxLQUNwRHFlLElBQVdGLEdBQVNuWSxLQUFNaEcs
S0FBYSxHQUFJLEtBQVEsR0FBSWIsZUFBa0IsQ0FFMUVhLEVBQVF2RixFQUFPcWxCLGNBQWU5ZixF
QUU5QixLQUNDLEtBQVEzRCxFQUFJNFgsRUFBRzVYLElBQ2RELEVBQU94RCxLQUFNeUQsT0FHVSxJ
QUFsQkQsRUFBS2lKLFdBQ1Q1SyxFQUFPd3RCLFVBQVcvSSxHQUFROWlCLEdBQU0sSUFDaENBLEVB
QUtvTixVQUFZeEosRUFJbkI1RCxHQUFPLEVBR04sTUFBUWtKLEtBR05sSixHQUNKeEQsS0FBSzhW
LFFBQVE4WixPQUFReG9CLElBRXBCLEtBQU1BLEVBQU96RCxVQUFVZixTQUczQnF0QixZQUFhLFdB
Q1osR0FBSXBKLEtBR0osT0FBT2lJLElBQVU5dUIsS0FBTTJELFVBQVcsU0FBVUgsR0FDM0MsR0FB
STJRLEdBQVNuVSxLQUFLMEIsVUFFYkcsR0FBTytFLFFBQVM1RyxLQUFNNm1CLEdBQVksSUFDdENo
bEIsRUFBT3d0QixVQUFXL0ksR0FBUXRtQixPQUNyQm1VLEdBQ0pBLEVBQU8rYixhQUFjMXNCLEVB
QU14RCxRQUszQjZtQixNQUlMaGxCLEVBQU93QixNQUNOOHNCLFNBQVUsU0FDVkMsVUFBVyxVQUNY
TixhQUFjLFNBQ2RPLFlBQWEsUUFDYkMsV0FBWSxlQUNWLFNBQVVoc0IsRUFBTWlzQixHQUNsQjF1
QixFQUFPRyxHQUFJc0MsR0FBUyxTQUFVeEMsR0FPN0IsSUFOQSxHQUFJbUIsR0FDSEMsS0FDQXN0
QixFQUFTM3VCLEVBQVFDLEdBQ2pCZ0MsRUFBTzBzQixFQUFPNXRCLE9BQVMsRUFDdkJhLEVBQUks
RUFFR0EsR0FBS0ssRUFBTUwsSUFDbEJSLEVBQVFRLElBQU1LLEVBQU85RCxLQUFPQSxLQUFLMEUs
T0FBTyxHQUN4QzdDLEVBQVEydUIsRUFBUS9zQixJQUFPOHNCLEdBQVl0dEIsR0FJbkN6QyxFQUFL
a0QsTUFBT1IsRUFBS0QsRUFBTUgsTUFHeEIsT0FBTzlDLE1BQUtnRCxVQUFXRSxLQUd6QixJQUFJ
dXRCLElBQVUsVUFFVkMsR0FBWSxHQUFJem1CLFFBQVEsS0FBT3daLEVBQU8sa0JBQW1CLEtBRXpE
a04sR0FBWSxTQUFVbnRCLEdBS3hCLEdBQUkrb0IsR0FBTy9vQixFQUFLMkosY0FBYzRDLFdBTTlC
LE9BSk13YyxJQUFTQSxFQUFLcUUsU0FDbkJyRSxFQUFPeHNCLEdBR0R3c0IsRUFBS3NFLGlCQUFr
QnJ0QixLQUtoQyxXQUlDLFFBQVNzdEIsS0FHUixHQUFNMUosRUFBTixDQUlBQSxFQUFJdEQsTUFB
TWlOLFFBQ1QsNEdBSUQzSixFQUFJeFcsVUFBWSxHQUNoQmpCLEdBQWdCbE8sWUFBYXV2QixFQUU3
QixJQUFJQyxHQUFXbHhCLEVBQU84d0IsaUJBQWtCekosRUFDeEM4SixHQUFvQyxPQUFqQkQsRUFB
U2poQixJQUc1Qm1oQixFQUFnRCxRQUF4QkYsRUFBU0csV0FDakNDLEVBQTBDLFFBQW5CSixFQUFT
SyxNQUloQ2xLLEVBQUl0RCxNQUFNeU4sWUFBYyxNQUN4QkMsRUFBK0MsUUFBekJQLEVBQVNNLFlB
RS9CNWhCLEdBQWdCaE8sWUFBYXF2QixHQUk3QjVKLEVBQU0sTUFHUCxHQUFJOEosR0FBa0JHLEVB
QXNCRyxFQUFxQkwsRUFDaEVILEVBQVlweEIsRUFBUzBCLGNBQWUsT0FDcEM4bEIsRUFBTXhuQixF
QUFTMEIsY0FBZSxNQUd6QjhsQixHQUFJdEQsUUFNVnNELEVBQUl0RCxNQUFNMk4sZUFBaUIsY0FD
M0JySyxFQUFJRSxXQUFXLEdBQU94RCxNQUFNMk4sZUFBaUIsR0FDN0N4d0IsRUFBUXl3QixnQkFB
K0MsZ0JBQTdCdEssRUFBSXRELE1BQU0yTixlQUVwQ1QsRUFBVWxOLE1BQU1pTixRQUFVLDRGQUUx
QkMsRUFBVXZ2QixZQUFhMmxCLEdBRXZCdmxCLEVBQU91QyxPQUFRbkQsR0FDZDB3QixjQUFlLFdB
RWQsTUFEQWIsS0FDT0ksR0FFUlUsa0JBQW1CLFdBRWxCLE1BREFkLEtBQ09PLEdBRVJRLGlCQUFr
QixXQUVqQixNQURBZixLQUNPVSxHQUVSTSxtQkFBb0IsV0FFbkIsTUFEQWhCLEtBQ09LLFFBTVYs
U0FBU1ksSUFBUXZ1QixFQUFNYyxFQUFNMHRCLEdBQzVCLEdBQUlWLEdBQU9XLEVBQVVDLEVBQVVo
dkIsRUFDOUI0Z0IsRUFBUXRnQixFQUFLc2dCLEtBb0NkLE9BbENBa08sR0FBV0EsR0FBWXJCLEdB
QVdudEIsR0FJN0J3dUIsSUFDSjl1QixFQUFNOHVCLEVBQVNHLGlCQUFrQjd0QixJQUFVMHRCLEVB
QVUxdEIsR0FFeEMsS0FBUnBCLEdBQWVyQixFQUFPZ0gsU0FBVXJGLEVBQUsySixjQUFlM0osS0FD
eEROLEVBQU1yQixFQUFPaWlCLE1BQU90Z0IsRUFBTWMsS0FRckJyRCxFQUFRNHdCLG9CQUFzQm5C
LEdBQVVoakIsS0FBTXhLLElBQVN1dEIsR0FBUS9pQixLQUFNcEosS0FHMUVndEIsRUFBUXhOLEVB
QU13TixNQUNkVyxFQUFXbk8sRUFBTW1PLFNBQ2pCQyxFQUFXcE8sRUFBTW9PLFNBR2pCcE8sRUFB
TW1PLFNBQVduTyxFQUFNb08sU0FBV3BPLEVBQU13TixNQUFRcHVCLEVBQ2hEQSxFQUFNOHVCLEVB
QVNWLE1BR2Z4TixFQUFNd04sTUFBUUEsRUFDZHhOLEVBQU1tTyxTQUFXQSxFQUNqQm5PLEVBQU1v
TyxTQUFXQSxJQUlKbHRCLFNBQVI5QixFQUlOQSxFQUFNLEdBQ05BLEVBSUYsUUFBU2t2QixJQUFj
QyxFQUFhQyxHQUduQyxPQUNDeHZCLElBQUssV0FDSixNQUFLdXZCLGdCQUlHcnlCLE1BQUs4QyxL
QUtKOUMsS0FBSzhDLElBQU13dkIsR0FBUzV1QixNQUFPMUQsS0FBTTJELGFBTTdDLEdBS0M0dUIs
SUFBZSw0QkFDZkMsSUFBWUMsU0FBVSxXQUFZQyxXQUFZLFNBQVUzTyxRQUFTLFNBQ2pFNE8sSUFD
Q0MsY0FBZSxJQUNmQyxXQUFZLE9BR2JDLElBQWdCLFNBQVUsTUFBTyxNQUNqQ0MsR0FBYW56QixF
QUFTMEIsY0FBZSxPQUFRd2lCLEtBRzlDLFNBQVNrUCxJQUFnQjF1QixHQUd4QixHQUFLQSxJQUFR
eXVCLElBQ1osTUFBT3p1QixFQUlSLElBQUkydUIsR0FBVTN1QixFQUFNLEdBQUk5QixjQUFnQjhC
LEVBQUtoRSxNQUFPLEdBQ25EbUQsRUFBSXF2QixHQUFZbHdCLE1BRWpCLE9BQVFhLElBRVAsR0FE
QWEsRUFBT3d1QixHQUFhcnZCLEdBQU13dkIsRUFDckIzdUIsSUFBUXl1QixJQUNaLE1BQU96dUIs
R0FLVixRQUFTNHVCLElBQW1CMXZCLEVBQU00RCxFQUFPK3JCLEdBSXhDLEdBQUlsc0IsR0FBVTBj
LEdBQVF2VyxLQUFNaEcsRUFDNUIsT0FBT0gsR0FHTi9CLEtBQUtrdUIsSUFBSyxFQUFHbnNCLEVB
QVMsSUFBUWtzQixHQUFZLEtBQVVsc0IsRUFBUyxJQUFPLE1BQ3BFRyxFQUdGLFFBQVNpc0IsSUFB
c0I3dkIsRUFBTWMsRUFBTWd2QixFQUFPQyxFQUFhQyxHQUM5RCxHQUFJL3ZCLEdBQ0h1TyxFQUFN
LENBV1AsS0FQQ3ZPLEVBREk2dkIsS0FBWUMsRUFBYyxTQUFXLFdBQ3JDLEVBSVMsVUFBVGp2QixF
QUFtQixFQUFJLEVBR3BCYixFQUFJLEVBQUdBLEdBQUssRUFHSixXQUFWNnZCLElBQ0p0aEIsR0FB
T25RLEVBQU9taUIsSUFBS3hnQixFQUFNOHZCLEVBQVExUCxHQUFXbmdCLElBQUssRUFBTSt2QixJ
QUduREQsR0FHVyxZQUFWRCxJQUNKdGhCLEdBQU9uUSxFQUFPbWlCLElBQUt4Z0IsRUFBTSxVQUFZ
b2dCLEdBQVduZ0IsSUFBSyxFQUFNK3ZCLElBSTdDLFdBQVZGLElBQ0p0aEIsR0FBT25RLEVBQU9t
aUIsSUFBS3hnQixFQUFNLFNBQVdvZ0IsR0FBV25nQixHQUFNLFNBQVMsRUFBTSt2QixNQUtyRXho
QixHQUFPblEsRUFBT21pQixJQUFLeGdCLEVBQU0sVUFBWW9nQixHQUFXbmdCLElBQUssRUFBTSt2
QixHQUc1QyxZQUFWRixJQUNKdGhCLEdBQU9uUSxFQUFPbWlCLElBQUt4Z0IsRUFBTSxTQUFXb2dC
LEdBQVduZ0IsR0FBTSxTQUFTLEVBQU0rdkIsSUFLdkUsT0FBT3hoQixHQUdSLFFBQVN5aEIsSUFB
a0Jqd0IsRUFBTWMsRUFBTWd2QixHQUd0QyxHQUFJdGhCLEdBQ0gwaEIsR0FBbUIsRUFDbkJGLEVB
QVM3QyxHQUFXbnRCLEdBQ3BCK3ZCLEVBQWlFLGVBQW5EMXhCLEVBQU9taUIsSUFBS3hnQixFQUFN
LGFBQWEsRUFBT2d3QixFQVlyRCxJQVBLaHdCLEVBQUttd0IsaUJBQWlCL3dCLFNBQzFCb1AsRUFB
TXhPLEVBQUtvd0Isd0JBQXlCdHZCLElBTWhDME4sR0FBTyxHQUFZLE1BQVBBLEVBQWMsQ0FTOUIs
R0FOQUEsRUFBTStmLEdBQVF2dUIsRUFBTWMsRUFBTWt2QixJQUNyQnhoQixFQUFNLEdBQVksTUFB
UEEsS0FDZkEsRUFBTXhPLEVBQUtzZ0IsTUFBT3hmLElBSWRvc0IsR0FBVWhqQixLQUFNc0UsR0FD
cEIsTUFBT0EsRUFLUjBoQixHQUFtQkgsSUFDaEJ0eUIsRUFBUTJ3QixxQkFBdUI1ZixJQUFReE8s
RUFBS3NnQixNQUFPeGYsSUFHdEQwTixFQUFNak0sV0FBWWlNLElBQVMsRUFJNUIsTUFBU0EsR0FD
UnFoQixHQUNDN3ZCLEVBQ0FjLEVBQ0FndkIsSUFBV0MsRUFBYyxTQUFXLFdBQ3BDRyxFQUNBRixH
QUVFLEtBR0wzeEIsRUFBT3VDLFFBSU55dkIsVUFDQ0MsU0FDQ2h4QixJQUFLLFNBQVVVLEVBQU13
dUIsR0FDcEIsR0FBS0EsRUFBVyxDQUdmLEdBQUk5dUIsR0FBTTZ1QixHQUFRdnVCLEVBQU0sVUFD
eEIsT0FBZSxLQUFSTixFQUFhLElBQU1BLE1BTzlCMGhCLFdBQ0NtUCx5QkFBMkIsRUFDM0JDLGFB
QWUsRUFDZkMsYUFBZSxFQUNmQyxVQUFZLEVBQ1pDLFlBQWMsRUFDZHRCLFlBQWMsRUFDZHVCLFlB
QWMsRUFDZE4sU0FBVyxFQUNYTyxPQUFTLEVBQ1RDLFNBQVcsRUFDWEMsUUFBVSxFQUNWQyxRQUFV
LEVBQ1ZDLE1BQVEsR0FLVEMsVUFDQ0MsUUFBUyxZQUlWN1EsTUFBTyxTQUFVdGdCLEVBQU1jLEVB
QU04QyxFQUFPa3NCLEdBR25DLEdBQU05dkIsR0FBMEIsSUFBbEJBLEVBQUtpSixVQUFvQyxJQUFs
QmpKLEVBQUtpSixVQUFtQmpKLEVBQUtzZ0IsTUFBbEUsQ0FLQSxHQUFJNWdCLEdBQUt3QyxFQUFN
d2QsRUFDZDBSLEVBQVcveUIsRUFBT3VFLFVBQVc5QixHQUM3QndmLEVBQVF0Z0IsRUFBS3NnQixL
QVNkLE9BUEF4ZixHQUFPekMsRUFBTzZ5QixTQUFVRSxLQUNyQi95QixFQUFPNnlCLFNBQVVFLEdB
QWE1QixHQUFnQjRCLElBQWNBLEdBRy9EMVIsRUFBUXJoQixFQUFPZ3lCLFNBQVV2dkIsSUFBVXpD
LEVBQU9neUIsU0FBVWUsR0FHckM1dkIsU0FBVm9DLEVBb0NDOGIsR0FBUyxPQUFTQSxJQUN3Qmxl
LFVBQTVDOUIsRUFBTWdnQixFQUFNcGdCLElBQUtVLEdBQU0sRUFBTzh2QixJQUV6QnB3QixFQUlE
NGdCLEVBQU94ZixJQTFDZG9CLFFBQWMwQixHQUdBLFdBQVQxQixJQUF1QnhDLEVBQU15Z0IsR0FB
UXZXLEtBQU1oRyxLQUFhbEUsRUFBSyxLQUNqRWtFLEVBQVErYyxHQUFXM2dCLEVBQU1jLEVBQU1w
QixHQUcvQndDLEVBQU8sVUFJTSxNQUFUMEIsR0FBaUJBLElBQVVBLElBS2xCLFdBQVQxQixJQUNK
MEIsR0FBU2xFLEdBQU9BLEVBQUssS0FBU3JCLEVBQU8raUIsVUFBV2dRLEdBQWEsR0FBSyxPQUk3
RDN6QixFQUFReXdCLGlCQUE2QixLQUFWdHFCLEdBQWlELElBQWpDOUMsRUFBSzdELFFBQVMsZ0JB
QzlEcWpCLEVBQU94ZixHQUFTLFdBSVg0ZSxHQUFZLE9BQVNBLElBQ3NCbGUsVUFBOUNvQyxFQUFR
OGIsRUFBTWpCLElBQUt6ZSxFQUFNNEQsRUFBT2tzQixNQUVsQ3hQLEVBQU94ZixHQUFTOEMsSUFs
QmpCLFVBbUNGNGMsSUFBSyxTQUFVeGdCLEVBQU1jLEVBQU1ndkIsRUFBT0UsR0FDakMsR0FBSXho
QixHQUFLalAsRUFBS21nQixFQUNiMFIsRUFBVy95QixFQUFPdUUsVUFBVzlCLEVBeUI5QixPQXRC
QUEsR0FBT3pDLEVBQU82eUIsU0FBVUUsS0FDckIveUIsRUFBTzZ5QixTQUFVRSxHQUFhNUIsR0FB
Z0I0QixJQUFjQSxHQUcvRDFSLEVBQVFyaEIsRUFBT2d5QixTQUFVdnZCLElBQVV6QyxFQUFPZ3lC
LFNBQVVlLEdBRy9DMVIsR0FBUyxPQUFTQSxLQUN0QmxSLEVBQU1rUixFQUFNcGdCLElBQUtVLEdB
QU0sRUFBTTh2QixJQUlqQnR1QixTQUFSZ04sSUFDSkEsRUFBTStmLEdBQVF2dUIsRUFBTWMsRUFB
TWt2QixJQUlkLFdBQVJ4aEIsR0FBb0IxTixJQUFRcXVCLE1BQ2hDM2dCLEVBQU0yZ0IsR0FBb0Jy
dUIsSUFJWixLQUFWZ3ZCLEdBQWdCQSxHQUNwQnZ3QixFQUFNZ0QsV0FBWWlNLEdBQ1hzaEIsS0FB
VSxHQUFRdUIsU0FBVTl4QixHQUFRQSxHQUFPLEVBQUlpUCxHQUVoREEsS0FJVG5RLEVBQU93QixN
QUFRLFNBQVUsU0FBVyxTQUFVSSxFQUFHYSxHQUNoRHpDLEVBQU9neUIsU0FBVXZ2QixJQUNoQnhC
LElBQUssU0FBVVUsRUFBTXd1QixFQUFVc0IsR0FDOUIsR0FBS3RCLEVBSUosT0FBT08sR0FBYTdr
QixLQUFNN0wsRUFBT21pQixJQUFLeGdCLEVBQU0sYUFReENBLEVBQUttd0IsaUJBQWlCL3dCLFFB
QVdZLEVBQUtvd0Isd0JBQXdCdEMsTUFJaEVtQyxHQUFrQmp3QixFQUFNYyxFQUFNZ3ZCLEdBSDlC
clAsR0FBTXpnQixFQUFNZ3ZCLEdBQVMsV0FDcEIsTUFBT2lCLElBQWtCandCLEVBQU1jLEVBQU1n
dkIsTUFNMUNyUixJQUFLLFNBQVV6ZSxFQUFNNEQsRUFBT2tzQixHQUMzQixHQUFJcnNCLEdBQ0h1
c0IsRUFBU0YsR0FBUzNDLEdBQVdudEIsR0FDN0IydkIsRUFBV0csR0FBU0QsR0FDbkI3dkIsRUFD
QWMsRUFDQWd2QixFQUNtRCxlQUFuRHp4QixFQUFPbWlCLElBQUt4Z0IsRUFBTSxhQUFhLEVBQU9n
d0IsR0FDdENBLEVBV0YsT0FQS0wsS0FBY2xzQixFQUFVMGMsR0FBUXZXLEtBQU1oRyxLQUNiLFFB
QTNCSCxFQUFTLElBQU8sUUFFbEJ6RCxFQUFLc2dCLE1BQU94ZixHQUFTOEMsRUFDckJBLEVBQVF2
RixFQUFPbWlCLElBQUt4Z0IsRUFBTWMsSUFHcEI0dUIsR0FBbUIxdkIsRUFBTTRELEVBQU8rckIs
T0FLMUN0eEIsRUFBT2d5QixTQUFTekMsV0FBYWdCLEdBQWNueEIsRUFBUTZ3QixtQkFDbEQsU0FB
VXR1QixFQUFNd3VCLEdBQ2YsR0FBS0EsRUFDSixPQUFTanNCLFdBQVlnc0IsR0FBUXZ1QixFQUFN
LGdCQUNsQ0EsRUFBS293Qix3QkFBd0JrQixLQUM1QjdRLEdBQU16Z0IsR0FBUTR0QixXQUFZLEdB
QUssV0FDOUIsTUFBTzV0QixHQUFLb3dCLHdCQUF3QmtCLFFBRWxDLE9BTVJqekIsRUFBT3dCLE1B
Q04weEIsT0FBUSxHQUNSQyxRQUFTLEdBQ1RDLE9BQVEsU0FDTixTQUFVQyxFQUFRQyxHQUNwQnR6
QixFQUFPZ3lCLFNBQVVxQixFQUFTQyxJQUN6QkMsT0FBUSxTQUFVaHVCLEdBT2pCLElBTkEsR0FB
STNELEdBQUksRUFDUDR4QixLQUdBQyxFQUF5QixnQkFBVmx1QixHQUFxQkEsRUFBTVMsTUFBTyxN
QUFVVCxHQUVwRDNELEVBQUksRUFBR0EsSUFDZDR4QixFQUFVSCxFQUFTdFIsR0FBV25nQixHQUFN
MHhCLEdBQ25DRyxFQUFPN3hCLElBQU82eEIsRUFBTzd4QixFQUFJLElBQU82eEIsRUFBTyxFQUd6
QyxPQUFPRCxLQUlINUUsR0FBUS9pQixLQUFNd25CLEtBQ25CcnpCLEVBQU9neUIsU0FBVXFCLEVB
QVNDLEdBQVNsVCxJQUFNaVIsTUFJM0NyeEIsRUFBT0csR0FBR29DLFFBQ1Q0ZixJQUFLLFNBQVUx
ZixFQUFNOEMsR0FDcEIsTUFBT2thLEdBQVF0aEIsS0FBTSxTQUFVd0QsRUFBTWMsRUFBTThDLEdB
QzFDLEdBQUlvc0IsR0FBUXp2QixFQUNYUixLQUNBRSxFQUFJLENBRUwsSUFBSzVCLEVBQU9rRCxR
QUFTVCxHQUFTLENBSTdCLElBSEFrdkIsRUFBUzdDLEdBQVdudEIsR0FDcEJPLEVBQU1PLEVBQUsx
QixPQUVIYSxFQUFJTSxFQUFLTixJQUNoQkYsRUFBS2UsRUFBTWIsSUFBUTVCLEVBQU9taUIsSUFB
S3hnQixFQUFNYyxFQUFNYixJQUFLLEVBQU8rdkIsRUFHeEQsT0FBT2p3QixHQUdSLE1BQWlCeUIs
VUFBVm9DLEVBQ052RixFQUFPaWlCLE1BQU90Z0IsRUFBTWMsRUFBTThDLEdBQzFCdkYsRUFBT21p
QixJQUFLeGdCLEVBQU1jLElBQ2pCQSxFQUFNOEMsRUFBT3pELFVBQVVmLE9BQVMsS0FLckMsU0FB
UzJ5QixJQUFPL3hCLEVBQU1hLEVBQVM4ZCxFQUFNbGUsRUFBS3V4QixHQUN6QyxNQUFPLElBQUlE
LElBQU05eUIsVUFBVVIsS0FBTXVCLEVBQU1hLEVBQVM4ZCxFQUFNbGUsRUFBS3V4QixHQUU1RDN6
QixFQUFPMHpCLE1BQVFBLEdBRWZBLEdBQU05eUIsV0FDTEUsWUFBYTR5QixHQUNidHpCLEtBQU0s
U0FBVXVCLEVBQU1hLEVBQVM4ZCxFQUFNbGUsRUFBS3V4QixFQUFRN1EsR0FDakQza0IsS0FBS3dE
LEtBQU9BLEVBQ1p4RCxLQUFLbWlCLEtBQU9BLEVBQ1puaUIsS0FBS3cxQixPQUFTQSxHQUFVM3pC
LEVBQU8yekIsT0FBT3pQLFNBQ3RDL2xCLEtBQUtxRSxRQUFVQSxFQUNmckUsS0FBS2tVLE1BQVFs
VSxLQUFLeUgsSUFBTXpILEtBQUtnUCxNQUM3QmhQLEtBQUtpRSxJQUFNQSxFQUNYakUsS0FBSzJr
QixLQUFPQSxJQUFVOWlCLEVBQU8raUIsVUFBV3pDLEdBQVMsR0FBSyxPQUV2RG5ULElBQUssV0FD
SixHQUFJa1UsR0FBUXFTLEdBQU1FLFVBQVd6MUIsS0FBS21pQixLQUVsQyxPQUFPZSxJQUFTQSxF
QUFNcGdCLElBQ3JCb2dCLEVBQU1wZ0IsSUFBSzlDLE1BQ1h1MUIsR0FBTUUsVUFBVTFQLFNBQVNq
akIsSUFBSzlDLE9BRWhDMDFCLElBQUssU0FBVUMsR0FDZCxHQUFJQyxHQUNIMVMsRUFBUXFTLEdB
QU1FLFVBQVd6MUIsS0FBS21pQixLQW9CL0IsT0FsQktuaUIsTUFBS3FFLFFBQVF3eEIsU0FDakI3
MUIsS0FBSzgxQixJQUFNRixFQUFRL3pCLEVBQU8yekIsT0FBUXgxQixLQUFLdzFCLFFBQ3RDRyxF
QUFTMzFCLEtBQUtxRSxRQUFRd3hCLFNBQVdGLEVBQVMsRUFBRyxFQUFHMzFCLEtBQUtxRSxRQUFR
d3hCLFVBRzlENzFCLEtBQUs4MUIsSUFBTUYsRUFBUUQsRUFFcEIzMUIsS0FBS3lILEtBQVF6SCxL
QUFLaUUsSUFBTWpFLEtBQUtrVSxPQUFVMGhCLEVBQVE1MUIsS0FBS2tVLE1BRS9DbFUsS0FBS3FF
LFFBQVEweEIsTUFDakIvMUIsS0FBS3FFLFFBQVEweEIsS0FBSy8wQixLQUFNaEIsS0FBS3dELEtB
QU14RCxLQUFLeUgsSUFBS3pILE1BR3pDa2pCLEdBQVNBLEVBQU1qQixJQUNuQmlCLEVBQU1qQixJ
QUFLamlCLE1BRVh1MUIsR0FBTUUsVUFBVTFQLFNBQVM5RCxJQUFLamlCLE1BRXhCQSxPQUlUdTFC
LEdBQU05eUIsVUFBVVIsS0FBS1EsVUFBWTh5QixHQUFNOXlCLFVBRXZDOHlCLEdBQU1FLFdBQ0wx
UCxVQUNDampCLElBQUssU0FBVXVoQixHQUNkLEdBQUk1USxFQUlKLE9BQTZCLEtBQXhCNFEsRUFB
TTdnQixLQUFLaUosVUFDYSxNQUE1QjRYLEVBQU03Z0IsS0FBTTZnQixFQUFNbEMsT0FBb0QsTUFB
bENrQyxFQUFNN2dCLEtBQUtzZ0IsTUFBT08sRUFBTWxDLE1BQ3JEa0MsRUFBTTdnQixLQUFNNmdC
LEVBQU1sQyxPQU8xQjFPLEVBQVM1UixFQUFPbWlCLElBQUtLLEVBQU03Z0IsS0FBTTZnQixFQUFN
bEMsS0FBTSxJQUdyQzFPLEdBQXFCLFNBQVhBLEVBQXdCQSxFQUFKLElBRXZDd08sSUFBSyxTQUFV
b0MsR0FLVHhpQixFQUFPbTBCLEdBQUdELEtBQU0xUixFQUFNbEMsTUFDMUJ0Z0IsRUFBT20wQixH
QUFHRCxLQUFNMVIsRUFBTWxDLE1BQVFrQyxHQUNLLElBQXhCQSxFQUFNN2dCLEtBQUtpSixVQUNp
QyxNQUFyRDRYLEVBQU03Z0IsS0FBS3NnQixNQUFPamlCLEVBQU82eUIsU0FBVXJRLEVBQU1sQyxT
QUMxQ3RnQixFQUFPZ3lCLFNBQVV4UCxFQUFNbEMsTUFHeEJrQyxFQUFNN2dCLEtBQU02Z0IsRUFB
TWxDLE1BQVNrQyxFQUFNNWMsSUFGakM1RixFQUFPaWlCLE1BQU9PLEVBQU03Z0IsS0FBTTZnQixF
QUFNbEMsS0FBTWtDLEVBQU01YyxJQUFNNGMsRUFBTU0sU0FVNUQ0USxHQUFNRSxVQUFVUSxVQUFZ
VixHQUFNRSxVQUFVUyxZQUMzQ2pVLElBQUssU0FBVW9DLEdBQ1RBLEVBQU03Z0IsS0FBS2lKLFVB
QVk0WCxFQUFNN2dCLEtBQUs5QixhQUN0QzJpQixFQUFNN2dCLEtBQU02Z0IsRUFBTWxDLE1BQVNr
QyxFQUFNNWMsT0FLcEM1RixFQUFPMnpCLFFBQ05XLE9BQVEsU0FBVUMsR0FDakIsTUFBT0EsSUFF
UkMsTUFBTyxTQUFVRCxHQUNoQixNQUFPLEdBQU1seEIsS0FBS294QixJQUFLRixFQUFJbHhCLEtB
QUtxeEIsSUFBTyxHQUV4Q3hRLFNBQVUsU0FHWGxrQixFQUFPbTBCLEdBQUtULEdBQU05eUIsVUFB
VVIsS0FHNUJKLEVBQU9tMEIsR0FBR0QsT0FLVixJQUNDUyxJQUFPQyxHQUNQQyxHQUFXLHlCQUNY
QyxHQUFPLGFBRVIsU0FBU0MsTUFDSEgsS0FDSjEyQixFQUFPODJCLHNCQUF1QkQsSUFDOUIvMEIs
RUFBT20wQixHQUFHYyxRQUtaLFFBQVNDLE1BSVIsTUFIQWgzQixHQUFPK2YsV0FBWSxXQUNsQjBX
LEdBQVF4eEIsU0FFQXd4QixHQUFRMzBCLEVBQU80RixNQUl6QixRQUFTdXZCLElBQU90eEIsRUFB
TXV4QixHQUNyQixHQUFJMUosR0FDSDlwQixFQUFJLEVBQ0ptTCxHQUFVc29CLE9BQVF4eEIsRUFL
bkIsS0FEQXV4QixFQUFlQSxFQUFlLEVBQUksRUFDMUJ4ekIsRUFBSSxFQUFHQSxHQUFLLEVBQUl3
ekIsRUFDdkIxSixFQUFRM0osR0FBV25nQixHQUNuQm1MLEVBQU8sU0FBVzJlLEdBQVUzZSxFQUFP
LFVBQVkyZSxHQUFVN25CLENBTzFELE9BSkt1eEIsS0FDSnJvQixFQUFNa2xCLFFBQVVsbEIsRUFB
TTBpQixNQUFRNXJCLEdBR3hCa0osRUFHUixRQUFTdW9CLElBQWEvdkIsRUFBTythLEVBQU1pVixH
QUtsQyxJQUpBLEdBQUkvUyxHQUNIMEssR0FBZXNJLEdBQVVDLFNBQVVuVixRQUFlNWhCLE9BQVE4
MkIsR0FBVUMsU0FBVSxNQUM5RS9iLEVBQVEsRUFDUjNZLEVBQVNtc0IsRUFBV25zQixPQUNiMlks
RUFBUTNZLEVBQVEyWSxJQUN2QixHQUFPOEksRUFBUTBLLEVBQVl4VCxHQUFRdmEsS0FBTW8yQixF
QUFXalYsRUFBTS9hLEdBR3pELE1BQU9pZCxHQUtWLFFBQVNrVCxJQUFrQi96QixFQUFNNm5CLEVB
QU9tTSxHQUN2QyxHQUFJclYsR0FBTS9hLEVBQU9pZSxFQUFRbkMsRUFBT3VVLEVBQVNDLEVBQVdD
LEVBQWdCNVQsRUFDbkU2VCxFQUFRLFNBQVd2TSxJQUFTLFVBQVlBLEdBQ3hDd00sRUFBTzczQixL
QUNQNHRCLEtBQ0E5SixFQUFRdGdCLEVBQUtzZ0IsTUFDYmdVLEVBQVN0MEIsRUFBS2lKLFVBQVlv
WCxHQUFvQnJnQixHQUM5Q3UwQixFQUFXMVYsRUFBU3ZmLElBQUtVLEVBQU0sU0FHMUJnMEIsR0FB
SzVhLFFBQ1ZzRyxFQUFRcmhCLEVBQU9zaEIsWUFBYTNmLEVBQU0sTUFDWCxNQUFsQjBmLEVBQU04
VSxXQUNWOVUsRUFBTThVLFNBQVcsRUFDakJQLEVBQVV2VSxFQUFNcE4sTUFBTWdILEtBQ3RCb0cs
RUFBTXBOLE1BQU1nSCxLQUFPLFdBQ1pvRyxFQUFNOFUsVUFDWFAsTUFJSHZVLEVBQU04VSxXQUVO
SCxFQUFLelosT0FBUSxXQUdaeVosRUFBS3paLE9BQVEsV0FDWjhFLEVBQU04VSxXQUNBbjJCLEVB
QU8rYSxNQUFPcFosRUFBTSxNQUFPWixRQUNoQ3NnQixFQUFNcE4sTUFBTWdILFdBT2hCLEtBQU1x
RixJQUFRa0osR0FFYixHQURBamtCLEVBQVFpa0IsRUFBT2xKLEdBQ1Z1VSxHQUFTaHBCLEtBQU10
RyxHQUFVLENBRzdCLFNBRk9pa0IsR0FBT2xKLEdBQ2RrRCxFQUFTQSxHQUFvQixXQUFWamUsRUFD
ZEEsS0FBWTB3QixFQUFTLE9BQVMsUUFBVyxDQUk3QyxHQUFlLFNBQVYxd0IsSUFBb0Iyd0IsR0FB
aUMveUIsU0FBckIreUIsRUFBVTVWLEdBSzlDLFFBSkEyVixJQUFTLEVBT1hsSyxFQUFNekwsR0FB
UzRWLEdBQVlBLEVBQVU1VixJQUFVdGdCLEVBQU9paUIsTUFBT3RnQixFQUFNMmUsR0FNckUsR0FE
QXVWLEdBQWE3MUIsRUFBT3FFLGNBQWVtbEIsR0FDN0JxTSxJQUFhNzFCLEVBQU9xRSxjQUFlMG5C
LEdBQXpDLENBS0tnSyxHQUEyQixJQUFsQnAwQixFQUFLaUosV0FLbEIrcUIsRUFBS1MsVUFBYW5V
LEVBQU1tVSxTQUFVblUsRUFBTW9VLFVBQVdwVSxFQUFNcVUsV0FHekRSLEVBQWlCSSxHQUFZQSxF
QUFTaFUsUUFDZixNQUFsQjRULElBQ0pBLEVBQWlCdFYsRUFBU3ZmLElBQUtVLEVBQU0sWUFFdEN1
Z0IsRUFBVWxpQixFQUFPbWlCLElBQUt4Z0IsRUFBTSxXQUNYLFNBQVp1Z0IsSUFDQzRULEVBQ0o1
VCxFQUFVNFQsR0FJVjFTLElBQVl6aEIsSUFBUSxHQUNwQm0wQixFQUFpQm4wQixFQUFLc2dCLE1B
QU1DLFNBQVc0VCxFQUN2QzVULEVBQVVsaUIsRUFBT21pQixJQUFLeGdCLEVBQU0sV0FDNUJ5aEIs
SUFBWXpoQixPQUtHLFdBQVp1Z0IsR0FBb0MsaUJBQVpBLEdBQWdELE1BQWxCNFQsSUFDckIsU0FB
aEM5MUIsRUFBT21pQixJQUFLeGdCLEVBQU0sV0FHaEJrMEIsSUFDTEcsRUFBSzd1QixLQUFNLFdB
Q1Y4YSxFQUFNQyxRQUFVNFQsSUFFTSxNQUFsQkEsSUFDSjVULEVBQVVELEVBQU1DLFFBQ2hCNFQs
RUFBNkIsU0FBWjVULEVBQXFCLEdBQUtBLElBRzdDRCxFQUFNQyxRQUFVLGlCQUtkeVQsRUFBS1Ms
V0FDVG5VLEVBQU1tVSxTQUFXLFNBQ2pCSixFQUFLelosT0FBUSxXQUNaMEYsRUFBTW1VLFNBQVdU
LEVBQUtTLFNBQVUsR0FDaENuVSxFQUFNb1UsVUFBWVYsRUFBS1MsU0FBVSxHQUNqQ25VLEVBQU1x
VSxVQUFZWCxFQUFLUyxTQUFVLE1BS25DUCxHQUFZLENBQ1osS0FBTXZWLElBQVF5TCxHQUdQOEos
SUFDQUssRUFDQyxVQUFZQSxLQUNoQkQsRUFBU0MsRUFBU0QsUUFHbkJDLEVBQVcxVixFQUFTZixP
QUFROWQsRUFBTSxVQUFZdWdCLFFBQVM0VCxJQUluRHRTLElBQ0owUyxFQUFTRCxRQUFVQSxHQUlm
QSxHQUNKN1MsSUFBWXpoQixJQUFRLEdBS3JCcTBCLEVBQUs3dUIsS0FBTSxXQUtKOHVCLEdBQ0w3
UyxJQUFZemhCLElBRWI2ZSxFQUFTcEYsT0FBUXpaLEVBQU0sU0FDdkIsS0FBTTJlLElBQVF5TCxH
QUNiL3JCLEVBQU9paUIsTUFBT3RnQixFQUFNMmUsRUFBTXlMLEVBQU16TCxPQU1uQ3VWLEVBQVlQ
LEdBQWFXLEVBQVNDLEVBQVU1VixHQUFTLEVBQUdBLEVBQU0wVixHQUN0RDFWLElBQVE0VixLQUNm
QSxFQUFVNVYsR0FBU3VWLEVBQVV4akIsTUFDeEI0akIsSUFDSkosRUFBVXp6QixJQUFNeXpCLEVB
QVV4akIsTUFDMUJ3akIsRUFBVXhqQixNQUFRLEtBTXRCLFFBQVNra0IsSUFBWS9NLEVBQU9nTixH
QUMzQixHQUFJOWMsR0FBT2pYLEVBQU1reEIsRUFBUXB1QixFQUFPOGIsQ0FHaEMsS0FBTTNILElB
QVM4UCxHQWVkLEdBZEEvbUIsRUFBT3pDLEVBQU91RSxVQUFXbVYsR0FDekJpYSxFQUFTNkMsRUFB
ZS96QixHQUN4QjhDLEVBQVFpa0IsRUFBTzlQLEdBQ1YxWixFQUFPa0QsUUFBU3FDLEtBQ3BCb3VC
LEVBQVNwdUIsRUFBTyxHQUNoQkEsRUFBUWlrQixFQUFPOVAsR0FBVW5VLEVBQU8sSUFHNUJtVSxJ
QUFValgsSUFDZCttQixFQUFPL21CLEdBQVM4QyxRQUNUaWtCLEdBQU85UCxJQUdmMkgsRUFBUXJo
QixFQUFPZ3lCLFNBQVV2dkIsR0FDcEI0ZSxHQUFTLFVBQVlBLEdBQVEsQ0FDakM5YixFQUFROGIs
RUFBTWtTLE9BQVFodUIsU0FDZmlrQixHQUFPL21CLEVBSWQsS0FBTWlYLElBQVNuVSxHQUNObVUs
SUFBUzhQLEtBQ2hCQSxFQUFPOVAsR0FBVW5VLEVBQU9tVSxHQUN4QjhjLEVBQWU5YyxHQUFVaWEs
T0FJM0I2QyxHQUFlL3pCLEdBQVNreEIsRUFLM0IsUUFBUzZCLElBQVc3ekIsRUFBTTgwQixFQUFZ
ajBCLEdBQ3JDLEdBQUlvUCxHQUNIOGtCLEVBQ0FoZCxFQUFRLEVBQ1IzWSxFQUFTeTBCLEdBQVVt
QixXQUFXNTFCLE9BQzlCeWIsRUFBV3hjLEVBQU9tYyxXQUFXSSxPQUFRLGlCQUc3QjBZLEdBQUt0
ekIsT0FFYnN6QixFQUFPLFdBQ04sR0FBS3lCLEVBQ0osT0FBTyxDQVlSLEtBVkEsR0FBSUUsR0FB
Y2pDLElBQVNPLEtBQzFCN1csRUFBWWhiLEtBQUtrdUIsSUFBSyxFQUFHZ0UsRUFBVXNCLFVBQVl0
QixFQUFVdkIsU0FBVzRDLEdBSXBFcmdCLEVBQU84SCxFQUFZa1gsRUFBVXZCLFVBQVksRUFDekNG
LEVBQVUsRUFBSXZkLEVBQ2RtRCxFQUFRLEVBQ1IzWSxFQUFTdzBCLEVBQVV1QixPQUFPLzFCLE9B
RW5CMlksRUFBUTNZLEVBQVEyWSxJQUN2QjZiLEVBQVV1QixPQUFRcGQsR0FBUW1hLElBQUtDLEVB
S2hDLE9BRkF0WCxHQUFTa0IsV0FBWS9iLEdBQVE0ekIsRUFBV3pCLEVBQVN6VixJQUU1Q3lWLEVB
QVUsR0FBSy95QixFQUNac2QsR0FFUDdCLEVBQVNtQixZQUFhaGMsR0FBUTR6QixLQUN2QixJQUdU
QSxFQUFZL1ksRUFBU1IsU0FDcEJyYSxLQUFNQSxFQUNONm5CLE1BQU94cEIsRUFBT3VDLFVBQVlr
MEIsR0FDMUJkLEtBQU0zMUIsRUFBT3VDLFFBQVEsR0FDcEJpMEIsaUJBQ0E3QyxPQUFRM3pCLEVB
QU8yekIsT0FBT3pQLFVBQ3BCMWhCLEdBQ0h1MEIsbUJBQW9CTixFQUNwQk8sZ0JBQWlCeDBCLEVB
Q2pCcTBCLFVBQVdsQyxJQUFTTyxLQUNwQmxCLFNBQVV4eEIsRUFBUXd4QixTQUNsQjhDLFVBQ0F4
QixZQUFhLFNBQVVoVixFQUFNbGUsR0FDNUIsR0FBSW9nQixHQUFReGlCLEVBQU8wekIsTUFBTy94
QixFQUFNNHpCLEVBQVVJLEtBQU1yVixFQUFNbGUsRUFDcERtekIsRUFBVUksS0FBS2EsY0FBZWxX
LElBQVVpVixFQUFVSSxLQUFLaEMsT0FFekQsT0FEQTRCLEdBQVV1QixPQUFPbjRCLEtBQU02akIs
R0FDaEJBLEdBRVJqQixLQUFNLFNBQVUwVixHQUNmLEdBQUl2ZCxHQUFRLEVBSVgzWSxFQUFTazJC
LEVBQVUxQixFQUFVdUIsT0FBTy8xQixPQUFTLENBQzlDLElBQUsyMUIsRUFDSixNQUFPdjRCLEtB
R1IsS0FEQXU0QixHQUFVLEVBQ0ZoZCxFQUFRM1ksRUFBUTJZLElBQ3ZCNmIsRUFBVXVCLE9BQVFw
ZCxHQUFRbWEsSUFBSyxFQVVoQyxPQU5Lb0QsSUFDSnphLEVBQVNrQixXQUFZL2IsR0FBUTR6QixF
QUFXLEVBQUcsSUFDM0MvWSxFQUFTbUIsWUFBYWhjLEdBQVE0ekIsRUFBVzBCLEtBRXpDemEsRUFB
U3VCLFdBQVlwYyxHQUFRNHpCLEVBQVcwQixJQUVsQzk0QixRQUdUcXJCLEVBQVErTCxFQUFVL0ws
S0FJbkIsS0FGQStNLEdBQVkvTSxFQUFPK0wsRUFBVUksS0FBS2EsZUFFMUI5YyxFQUFRM1ksRUFB
UTJZLElBRXZCLEdBREE5SCxFQUFTNGpCLEdBQVVtQixXQUFZamQsR0FBUXZhLEtBQU1vMkIsRUFB
VzV6QixFQUFNNm5CLEVBQU8rTCxFQUFVSSxNQU05RSxNQUpLMzFCLEdBQU9nRCxXQUFZNE8sRUFB
TzJQLFFBQzlCdmhCLEVBQU9zaEIsWUFBYWlVLEVBQVU1ekIsS0FBTTR6QixFQUFVSSxLQUFLNWEs
T0FBUXdHLEtBQzFEdmhCLEVBQU95RixNQUFPbU0sRUFBTzJQLEtBQU0zUCxJQUV0QkEsQ0FtQlQs
T0FmQTVSLEdBQU8wQixJQUFLOG5CLEVBQU84TCxHQUFhQyxHQUUzQnYxQixFQUFPZ0QsV0FBWXV5
QixFQUFVSSxLQUFLdGpCLFFBQ3RDa2pCLEVBQVVJLEtBQUt0akIsTUFBTWxULEtBQU13QyxFQUFN
NHpCLEdBR2xDdjFCLEVBQU9tMEIsR0FBRytDLE1BQ1RsM0IsRUFBT3VDLE9BQVEweUIsR0FDZHR6
QixLQUFNQSxFQUNOcTBCLEtBQU1ULEVBQ054YSxNQUFPd2EsRUFBVUksS0FBSzVhLFNBS2pCd2Es
RUFBVXhZLFNBQVV3WSxFQUFVSSxLQUFLNVksVUFDeEM1VixLQUFNb3VCLEVBQVVJLEtBQUt4dUIs
S0FBTW91QixFQUFVSSxLQUFLd0IsVUFDMUNsYixLQUFNc1osRUFBVUksS0FBSzFaLE1BQ3JCTSxP
QUFRZ1osRUFBVUksS0FBS3BaLFFBRzFCdmMsRUFBT3cxQixVQUFZeDFCLEVBQU91QyxPQUFRaXpC
LElBRWpDQyxVQUNDMkIsS0FBTyxTQUFVOVcsRUFBTS9hLEdBQ3RCLEdBQUlpZCxHQUFRcmtCLEtB
QUttM0IsWUFBYWhWLEVBQU0vYSxFQUVwQyxPQURBK2MsSUFBV0UsRUFBTTdnQixLQUFNMmUsRUFB
TXdCLEdBQVF2VyxLQUFNaEcsR0FBU2lkLEdBQzdDQSxLQUlUNlUsUUFBUyxTQUFVN04sRUFBTy9u
QixHQUNwQnpCLEVBQU9nRCxXQUFZd21CLElBQ3ZCL25CLEVBQVcrbkIsRUFDWEEsR0FBVSxNQUVW
QSxFQUFRQSxFQUFNdGUsTUFBT29QLEVBT3RCLEtBSkEsR0FBSWdHLEdBQ0g1RyxFQUFRLEVBQ1Iz
WSxFQUFTeW9CLEVBQU16b0IsT0FFUjJZLEVBQVEzWSxFQUFRMlksSUFDdkI0RyxFQUFPa0osRUFB
TzlQLEdBQ2Q4YixHQUFVQyxTQUFVblYsR0FBU2tWLEdBQVVDLFNBQVVuVixPQUNqRGtWLEdBQVVD
LFNBQVVuVixHQUFPdlEsUUFBU3RPLElBSXRDazFCLFlBQWNqQixJQUVkNEIsVUFBVyxTQUFVNzFC
LEVBQVV1c0IsR0FDekJBLEVBQ0p3SCxHQUFVbUIsV0FBVzVtQixRQUFTdE8sR0FFOUIrekIsR0FB
VW1CLFdBQVdoNEIsS0FBTThDLE1BSzlCekIsRUFBT3UzQixNQUFRLFNBQVVBLEVBQU81RCxFQUFR
eHpCLEdBQ3ZDLEdBQUlxM0IsR0FBTUQsR0FBMEIsZ0JBQVZBLEdBQXFCdjNCLEVBQU91QyxVQUFZ
ZzFCLElBQ2pFSixTQUFVaDNCLElBQU9BLEdBQU13ekIsR0FDdEIzekIsRUFBT2dELFdBQVl1MEIs
SUFBV0EsRUFDL0J2RCxTQUFVdUQsRUFDVjVELE9BQVF4ekIsR0FBTXd6QixHQUFVQSxJQUFXM3pC
LEVBQU9nRCxXQUFZMndCLElBQVlBLEVBb0NuRSxPQWhDSzN6QixHQUFPbTBCLEdBQUc1TixLQUFP
eG9CLEVBQVNrNEIsT0FDOUJ1QixFQUFJeEQsU0FBVyxFQUdjLGdCQUFqQndELEdBQUl4RCxXQUNW
d0QsRUFBSXhELFdBQVloMEIsR0FBT20wQixHQUFHc0QsT0FDOUJELEVBQUl4RCxTQUFXaDBCLEVB
QU9tMEIsR0FBR3NELE9BQVFELEVBQUl4RCxVQUdyQ3dELEVBQUl4RCxTQUFXaDBCLEVBQU9tMEIs
R0FBR3NELE9BQU92VCxVQU1qQixNQUFic1QsRUFBSXpjLE9BQWlCeWMsRUFBSXpjLFNBQVUsSUFD
dkN5YyxFQUFJemMsTUFBUSxNQUlieWMsRUFBSW5WLElBQU1tVixFQUFJTCxTQUVkSyxFQUFJTCxT
QUFXLFdBQ1RuM0IsRUFBT2dELFdBQVl3MEIsRUFBSW5WLE1BQzNCbVYsRUFBSW5WLElBQUlsakIs
S0FBTWhCLE1BR1ZxNUIsRUFBSXpjLE9BQ1IvYSxFQUFPbWhCLFFBQVNoakIsS0FBTXE1QixFQUFJ
emMsUUFJckJ5YyxHQUdSeDNCLEVBQU9HLEdBQUdvQyxRQUNUbTFCLE9BQVEsU0FBVUgsRUFBT0ks
RUFBSWhFLEVBQVFseUIsR0FHcEMsTUFBT3RELE1BQUt1USxPQUFRc1QsSUFBcUJHLElBQUssVUFB
VyxHQUFJa0IsT0FHM0RqaEIsTUFBTXcxQixTQUFXM0YsUUFBUzBGLEdBQU1KLEVBQU81RCxFQUFR
bHlCLElBRWxEbTJCLFFBQVMsU0FBVXRYLEVBQU1pWCxFQUFPNUQsRUFBUWx5QixHQUN2QyxHQUFJ
d1MsR0FBUWpVLEVBQU9xRSxjQUFlaWMsR0FDakN1WCxFQUFTNzNCLEVBQU91M0IsTUFBT0EsRUFB
TzVELEVBQVFseUIsR0FDdENxMkIsRUFBYyxXQUdiLEdBQUk5QixHQUFPUixHQUFXcjNCLEtBQU02
QixFQUFPdUMsVUFBWStkLEdBQVF1WCxJQUdsRDVqQixHQUFTdU0sRUFBU3ZmLElBQUs5QyxLQUFN
LFlBQ2pDNjNCLEVBQUt6VSxNQUFNLEdBS2QsT0FGQ3VXLEdBQVlDLE9BQVNELEVBRWY3akIsR0FB
UzRqQixFQUFPOWMsU0FBVSxFQUNoQzVjLEtBQUtxRCxLQUFNczJCLEdBQ1gzNUIsS0FBSzRjLE1B
QU84YyxFQUFPOWMsTUFBTytjLElBRTVCdlcsS0FBTSxTQUFVMWQsRUFBTTRkLEVBQVl3VixHQUNq
QyxHQUFJZSxHQUFZLFNBQVUzVyxHQUN6QixHQUFJRSxHQUFPRixFQUFNRSxXQUNWRixHQUFNRSxL
QUNiQSxFQUFNMFYsR0FZUCxPQVRxQixnQkFBVHB6QixLQUNYb3pCLEVBQVV4VixFQUNWQSxFQUFh
NWQsRUFDYkEsRUFBT1YsUUFFSHNlLEdBQWM1ZCxLQUFTLEdBQzNCMUYsS0FBSzRjLE1BQU9sWCxH
QUFRLFNBR2QxRixLQUFLcUQsS0FBTSxXQUNqQixHQUFJMmYsSUFBVSxFQUNiekgsRUFBZ0IsTUFB
UjdWLEdBQWdCQSxFQUFPLGFBQy9CbzBCLEVBQVNqNEIsRUFBT2k0QixPQUNoQjVYLEVBQU9HLEVB
QVN2ZixJQUFLOUMsS0FFdEIsSUFBS3ViLEVBQ0MyRyxFQUFNM0csSUFBVzJHLEVBQU0zRyxHQUFR
NkgsTUFDbkN5VyxFQUFXM1gsRUFBTTNHLFFBR2xCLEtBQU1BLElBQVMyRyxHQUNUQSxFQUFNM0cs
SUFBVzJHLEVBQU0zRyxHQUFRNkgsTUFBUXVULEdBQUtqcEIsS0FBTTZOLElBQ3REc2UsRUFBVzNY
LEVBQU0zRyxHQUtwQixLQUFNQSxFQUFRdWUsRUFBT2wzQixPQUFRMlksS0FDdkJ1ZSxFQUFRdmUs
R0FBUS9YLE9BQVN4RCxNQUNuQixNQUFSMEYsR0FBZ0JvMEIsRUFBUXZlLEdBQVFxQixRQUFVbFgs
SUFFNUNvMEIsRUFBUXZlLEdBQVFzYyxLQUFLelUsS0FBTTBWLEdBQzNCOVYsR0FBVSxFQUNWOFcs
RUFBTzMxQixPQUFRb1gsRUFBTyxLQU9uQnlILEdBQVk4VixHQUNoQmozQixFQUFPbWhCLFFBQVNo
akIsS0FBTTBGLE1BSXpCazBCLE9BQVEsU0FBVWwwQixHQUlqQixNQUhLQSxNQUFTLElBQ2JBLEVB
QU9BLEdBQVEsTUFFVDFGLEtBQUtxRCxLQUFNLFdBQ2pCLEdBQUlrWSxHQUNIMkcsRUFBT0csRUFB
U3ZmLElBQUs5QyxNQUNyQjRjLEVBQVFzRixFQUFNeGMsRUFBTyxTQUNyQndkLEVBQVFoQixFQUFN
eGMsRUFBTyxjQUNyQm8wQixFQUFTajRCLEVBQU9pNEIsT0FDaEJsM0IsRUFBU2dhLEVBQVFBLEVB
QU1oYSxPQUFTLENBYWpDLEtBVkFzZixFQUFLMFgsUUFBUyxFQUdkLzNCLEVBQU8rYSxNQUFPNWMs
S0FBTTBGLE1BRWZ3ZCxHQUFTQSxFQUFNRSxNQUNuQkYsRUFBTUUsS0FBS3BpQixLQUFNaEIsTUFB
TSxHQUlsQnViLEVBQVF1ZSxFQUFPbDNCLE9BQVEyWSxLQUN2QnVlLEVBQVF2ZSxHQUFRL1gsT0FB
U3hELE1BQVE4NUIsRUFBUXZlLEdBQVFxQixRQUFVbFgsSUFDL0RvMEIsRUFBUXZlLEdBQVFzYyxL
QUFLelUsTUFBTSxHQUMzQjBXLEVBQU8zMUIsT0FBUW9YLEVBQU8sR0FLeEIsS0FBTUEsRUFBUSxF
QUFHQSxFQUFRM1ksRUFBUTJZLElBQzNCcUIsRUFBT3JCLElBQVdxQixFQUFPckIsR0FBUXFlLFFB
Q3JDaGQsRUFBT3JCLEdBQVFxZSxPQUFPNTRCLEtBQU1oQixZQUt2QmtpQixHQUFLMFgsWUFLZi8z
QixFQUFPd0IsTUFBUSxTQUFVLE9BQVEsUUFBVSxTQUFVSSxFQUFHYSxHQUN2RCxHQUFJeTFCLEdB
QVFsNEIsRUFBT0csR0FBSXNDLEVBQ3ZCekMsR0FBT0csR0FBSXNDLEdBQVMsU0FBVTgwQixFQUFP
NUQsRUFBUWx5QixHQUM1QyxNQUFnQixPQUFUODFCLEdBQWtDLGlCQUFWQSxHQUM5QlcsRUFBTXIy
QixNQUFPMUQsS0FBTTJELFdBQ25CM0QsS0FBS3k1QixRQUFTekMsR0FBTzF5QixHQUFNLEdBQVE4
MEIsRUFBTzVELEVBQVFseUIsTUFLckR6QixFQUFPd0IsTUFDTjIyQixVQUFXaEQsR0FBTyxRQUNs
QmlELFFBQVNqRCxHQUFPLFFBQ2hCa0QsWUFBYWxELEdBQU8sVUFDcEJtRCxRQUFVckcsUUFBUyxR
QUNuQnNHLFNBQVd0RyxRQUFTLFFBQ3BCdUcsWUFBY3ZHLFFBQVMsV0FDckIsU0FBVXh2QixFQUFN
K21CLEdBQ2xCeHBCLEVBQU9HLEdBQUlzQyxHQUFTLFNBQVU4MEIsRUFBTzVELEVBQVFseUIsR0FD
NUMsTUFBT3RELE1BQUt5NUIsUUFBU3BPLEVBQU8rTixFQUFPNUQsRUFBUWx5QixNQUk3Q3pCLEVB
QU9pNEIsVUFDUGo0QixFQUFPbTBCLEdBQUdjLEtBQU8sV0FDaEIsR0FBSWlDLEdBQ0h0MUIsRUFB
SSxFQUNKcTJCLEVBQVNqNEIsRUFBT2k0QixNQUlqQixLQUZBdEQsR0FBUTMwQixFQUFPNEYsTUFF
UGhFLEVBQUlxMkIsRUFBT2wzQixPQUFRYSxJQUMxQnMxQixFQUFRZSxFQUFRcjJCLEdBR1ZzMUIs
S0FBV2UsRUFBUXIyQixLQUFRczFCLEdBQ2hDZSxFQUFPMzFCLE9BQVFWLElBQUssRUFJaEJxMkIs
R0FBT2wzQixRQUNaZixFQUFPbTBCLEdBQUc1UyxPQUVYb1QsR0FBUXh4QixRQUdUbkQsRUFBT20w
QixHQUFHK0MsTUFBUSxTQUFVQSxHQUMzQmwzQixFQUFPaTRCLE9BQU90NUIsS0FBTXU0QixHQUNm
QSxJQUNKbDNCLEVBQU9tMEIsR0FBRzloQixRQUVWclMsRUFBT2k0QixPQUFPdHdCLE9BSWhCM0gs
RUFBT20wQixHQUFHc0UsU0FBVyxHQUNyQno0QixFQUFPbTBCLEdBQUc5aEIsTUFBUSxXQUNYdWlC
LEtBQ0xBLEdBQVUxMkIsRUFBTzgyQixzQkFDaEI5MkIsRUFBTzgyQixzQkFBdUJELElBQzlCNzJC
LEVBQU93NkIsWUFBYTE0QixFQUFPbTBCLEdBQUdjLEtBQU1qMUIsRUFBT20wQixHQUFHc0UsWUFJ
akR6NEIsRUFBT20wQixHQUFHNVMsS0FBTyxXQUNYcmpCLEVBQU95NkIscUJBQ1h6NkIsRUFBT3k2
QixxQkFBc0IvRCxJQUU3QjEyQixFQUFPMDZCLGNBQWVoRSxJQUd2QkEsR0FBVSxNQUdYNTBCLEVB
QU9tMEIsR0FBR3NELFFBQ1RvQixLQUFNLElBQ05DLEtBQU0sSUFHTjVVLFNBQVUsS0FNWGxrQixF
QUFPRyxHQUFHNDRCLE1BQVEsU0FBVUMsRUFBTW4xQixHQUlqQyxNQUhBbTFCLEdBQU9oNUIsRUFB
T20wQixHQUFLbjBCLEVBQU9tMEIsR0FBR3NELE9BQVF1QixJQUFVQSxFQUFPQSxFQUN0RG4xQixF
QUFPQSxHQUFRLEtBRVIxRixLQUFLNGMsTUFBT2xYLEVBQU0sU0FBVTZHLEVBQU0yVyxHQUN4QyxH
QUFJNFgsR0FBVS82QixFQUFPK2YsV0FBWXZULEVBQU1zdUIsRUFDdkMzWCxHQUFNRSxLQUFPLFdB
Q1pyakIsRUFBT2c3QixhQUFjRCxPQU14QixXQUNDLEdBQUlqcUIsR0FBUWpSLEVBQVMwQixjQUFl
LFNBQ25DOEcsRUFBU3hJLEVBQVMwQixjQUFlLFVBQ2pDKzNCLEVBQU1qeEIsRUFBTzNHLFlBQWE3
QixFQUFTMEIsY0FBZSxVQUVuRHVQLEdBQU1uTCxLQUFPLFdBSWJ6RSxFQUFRKzVCLFFBQTBCLEtB
QWhCbnFCLEVBQU16SixNQUl4Qm5HLEVBQVFnNkIsWUFBYzVCLEVBQUl6akIsU0FJMUIvRSxFQUFR
alIsRUFBUzBCLGNBQWUsU0FDaEN1UCxFQUFNekosTUFBUSxJQUNkeUosRUFBTW5MLEtBQU8sUUFD
YnpFLEVBQVFpNkIsV0FBNkIsTUFBaEJycUIsRUFBTXpKLFFBSTVCLElBQUkrekIsSUFDSHJzQixH
QUFhak4sRUFBT2dRLEtBQUsvQyxVQUUxQmpOLEdBQU9HLEdBQUdvQyxRQUNUMk4sS0FBTSxTQUFV
ek4sRUFBTThDLEdBQ3JCLE1BQU9rYSxHQUFRdGhCLEtBQU02QixFQUFPa1EsS0FBTXpOLEVBQU04
QyxFQUFPekQsVUFBVWYsT0FBUyxJQUduRXc0QixXQUFZLFNBQVU5MkIsR0FDckIsTUFBT3RFLE1B
QUtxRCxLQUFNLFdBQ2pCeEIsRUFBT3U1QixXQUFZcDdCLEtBQU1zRSxRQUs1QnpDLEVBQU91QyxR
QUNOMk4sS0FBTSxTQUFVdk8sRUFBTWMsRUFBTThDLEdBQzNCLEdBQUlsRSxHQUFLZ2dCLEVBQ1Jt
WSxFQUFRNzNCLEVBQUtpSixRQUdkLElBQWUsSUFBVjR1QixHQUF5QixJQUFWQSxHQUF5QixJQUFW
QSxFQUtuQyxNQUFrQyxtQkFBdEI3M0IsR0FBS21LLGFBQ1Q5TCxFQUFPc2dCLEtBQU0zZSxFQUFN
YyxFQUFNOEMsSUFLbEIsSUFBVmkwQixHQUFnQng1QixFQUFPa1ksU0FBVXZXLEtBQ3JDMGYsRUFB
UXJoQixFQUFPeTVCLFVBQVdoM0IsRUFBS2lDLGlCQUM1QjFFLEVBQU9nUSxLQUFLOUUsTUFBTWpD
LEtBQUs0QyxLQUFNcEosR0FBUzYyQixHQUFXbjJCO0FBR3RDQSxTQUFWb0MsRUFDVyxPQUFWQSxN
QUNKdkYsR0FBT3U1QixXQUFZNTNCLEVBQU1jLEdBSXJCNGUsR0FBUyxPQUFTQSxJQUN1QmxlLFVB
QTNDOUIsRUFBTWdnQixFQUFNakIsSUFBS3plLEVBQU00RCxFQUFPOUMsSUFDekJwQixHQUdSTSxF
QUFLb0ssYUFBY3RKLEVBQU04QyxFQUFRLElBQzFCQSxHQUdIOGIsR0FBUyxPQUFTQSxJQUErQyxR
QUFwQ2hnQixFQUFNZ2dCLEVBQU1wZ0IsSUFBS1UsRUFBTWMsSUFDakRwQixHQUdSQSxFQUFNckIs
RUFBTzRPLEtBQUtzQixLQUFNdk8sRUFBTWMsR0FHaEIsTUFBUHBCLEVBQWM4QixPQUFZOUIsS0FH
bENvNEIsV0FDQzUxQixNQUNDdWMsSUFBSyxTQUFVemUsRUFBTTRELEdBQ3BCLElBQU1uRyxFQUFR
aTZCLFlBQXdCLFVBQVY5ekIsR0FDM0J2RixFQUFPeUUsU0FBVTlDLEVBQU0sU0FBWSxDQUNuQyxH
QUFJd08sR0FBTXhPLEVBQUs0RCxLQUtmLE9BSkE1RCxHQUFLb0ssYUFBYyxPQUFReEcsR0FDdEI0
SyxJQUNKeE8sRUFBSzRELE1BQVE0SyxHQUVQNUssTUFNWGcwQixXQUFZLFNBQVU1M0IsRUFBTTRE
LEdBQzNCLEdBQUk5QyxHQUNIYixFQUFJLEVBSUo4M0IsRUFBWW4wQixHQUFTQSxFQUFNMkYsTUFB
T29QLEVBRW5DLElBQUtvZixHQUErQixJQUFsQi8zQixFQUFLaUosU0FDdEIsTUFBVW5JLEVBQU9p
M0IsRUFBVzkzQixLQUMzQkQsRUFBSzBLLGdCQUFpQjVKLE1BTzFCNjJCLElBQ0NsWixJQUFLLFNB
QVV6ZSxFQUFNNEQsRUFBTzlDLEdBUTNCLE1BUEs4QyxNQUFVLEVBR2R2RixFQUFPdTVCLFdBQVk1
M0IsRUFBTWMsR0FFekJkLEVBQUtvSyxhQUFjdEosRUFBTUEsR0FFbkJBLElBSVR6QyxFQUFPd0Is
S0FBTXhCLEVBQU9nUSxLQUFLOUUsTUFBTWpDLEtBQUs0WSxPQUFPM1csTUFBTyxRQUFVLFNBQVV0
SixFQUFHYSxHQUN4RSxHQUFJazNCLEdBQVMxc0IsR0FBWXhLLElBQVV6QyxFQUFPNE8sS0FBS3NC
LElBRS9DakQsSUFBWXhLLEdBQVMsU0FBVWQsRUFBTWMsRUFBTTJELEdBQzFDLEdBQUkvRSxHQUFL
NGxCLEVBQ1IyUyxFQUFnQm4zQixFQUFLaUMsYUFZdEIsT0FWTTBCLEtBR0w2Z0IsRUFBU2hhLEdB
QVkyc0IsR0FDckIzc0IsR0FBWTJzQixHQUFrQnY0QixFQUM5QkEsRUFBcUMsTUFBL0JzNEIsRUFB
UWg0QixFQUFNYyxFQUFNMkQsR0FDekJ3ekIsRUFDQSxLQUNEM3NCLEdBQVkyc0IsR0FBa0IzUyxH
QUV4QjVsQixJQU9ULElBQUl3NEIsSUFBYSxzQ0FDaEJDLEdBQWEsZUFFZDk1QixHQUFPRyxHQUFH
b0MsUUFDVCtkLEtBQU0sU0FBVTdkLEVBQU04QyxHQUNyQixNQUFPa2EsR0FBUXRoQixLQUFNNkIs
RUFBT3NnQixLQUFNN2QsRUFBTThDLEVBQU96RCxVQUFVZixPQUFTLElBR25FZzVCLFdBQVksU0FB
VXQzQixHQUNyQixNQUFPdEUsTUFBS3FELEtBQU0saUJBQ1ZyRCxNQUFNNkIsRUFBT2c2QixRQUFT
djNCLElBQVVBLFFBSzFDekMsRUFBT3VDLFFBQ04rZCxLQUFNLFNBQVUzZSxFQUFNYyxFQUFNOEMs
R0FDM0IsR0FBSWxFLEdBQUtnZ0IsRUFDUm1ZLEVBQVE3M0IsRUFBS2lKLFFBR2QsSUFBZSxJQUFW
NHVCLEdBQXlCLElBQVZBLEdBQXlCLElBQVZBLEVBV25DLE1BUGUsS0FBVkEsR0FBZ0J4NUIsRUFB
T2tZLFNBQVV2VyxLQUdyQ2MsRUFBT3pDLEVBQU9nNkIsUUFBU3YzQixJQUFVQSxFQUNqQzRlLEVB
QVFyaEIsRUFBTzR6QixVQUFXbnhCLElBR1pVLFNBQVZvQyxFQUNDOGIsR0FBUyxPQUFTQSxJQUN1
QmxlLFVBQTNDOUIsRUFBTWdnQixFQUFNakIsSUFBS3plLEVBQU00RCxFQUFPOUMsSUFDekJwQixF
QUdDTSxFQUFNYyxHQUFTOEMsRUFHcEI4YixHQUFTLE9BQVNBLElBQStDLFFBQXBDaGdCLEVBQU1n
Z0IsRUFBTXBnQixJQUFLVSxFQUFNYyxJQUNqRHBCLEVBR0RNLEVBQU1jLElBR2RteEIsV0FDQ2hn
QixVQUNDM1MsSUFBSyxTQUFVVSxHQU9kLEdBQUlzNEIsR0FBV2o2QixFQUFPNE8sS0FBS3NCLEtB
QU12TyxFQUFNLFdBRXZDLE9BQUtzNEIsR0FDR0MsU0FBVUQsRUFBVSxJQUkzQkosR0FBV2h1QixL
QUFNbEssRUFBSzhDLFdBQ3RCcTFCLEdBQVdqdUIsS0FBTWxLLEVBQUs4QyxXQUN0QjlDLEVBQUtn
UyxLQUVFLFFBUVhxbUIsU0FDQ0csTUFBTyxVQUNQQyxRQUFTLGVBWUxoN0IsRUFBUWc2QixjQUNi
cDVCLEVBQU80ekIsVUFBVTdmLFVBQ2hCOVMsSUFBSyxTQUFVVSxHQUlkLEdBQUkyUSxHQUFTM1Es
RUFBSzlCLFVBSWxCLE9BSEt5UyxJQUFVQSxFQUFPelMsWUFDckJ5UyxFQUFPelMsV0FBV21VLGNB
RVosTUFFUm9NLElBQUssU0FBVXplLEdBSWQsR0FBSTJRLEdBQVMzUSxFQUFLOUIsVUFDYnlTLEtB
Q0pBLEVBQU8wQixjQUVGMUIsRUFBT3pTLFlBQ1h5UyxFQUFPelMsV0FBV21VLGtCQU92QmhVLEVB
QU93QixNQUNOLFdBQ0EsV0FDQSxZQUNBLGNBQ0EsY0FDQSxVQUNBLFVBQ0EsU0FDQSxjQUNBLG1C
QUNFLFdBQ0Z4QixFQUFPZzZCLFFBQVM3N0IsS0FBS3VHLGVBQWtCdkcsTUFRdkMsU0FBU2s4QixJ
QUFrQjkwQixHQUMxQixHQUFJMFAsR0FBUzFQLEVBQU0yRixNQUFPb1AsTUFDMUIsT0FBT3JGLEdB
QU9oSixLQUFNLEtBSXRCLFFBQVNxdUIsSUFBVTM0QixHQUNsQixNQUFPQSxHQUFLbUssY0FBZ0Ju
SyxFQUFLbUssYUFBYyxVQUFhLEdBRzdEOUwsRUFBT0csR0FBR29DLFFBQ1RnNEIsU0FBVSxTQUFV
aDFCLEdBQ25CLEdBQUlpMUIsR0FBUzc0QixFQUFNd0wsRUFBS3N0QixFQUFVQyxFQUFPdjRCLEVB
QUd3NEIsRUFDM0MvNEIsRUFBSSxDQUVMLElBQUs1QixFQUFPZ0QsV0FBWXVDLEdBQ3ZCLE1BQU9w
SCxNQUFLcUQsS0FBTSxTQUFVVyxHQUMzQm5DLEVBQVE3QixNQUFPbzhCLFNBQVVoMUIsRUFBTXBH
LEtBQU1oQixLQUFNZ0UsRUFBR200QixHQUFVbjhCLFNBSTFELElBQXNCLGdCQUFWb0gsSUFBc0JB
LEVBQVEsQ0FDekNpMUIsRUFBVWoxQixFQUFNMkYsTUFBT29QLE1BRXZCLE9BQVUzWSxFQUFPeEQs
S0FBTXlELEtBSXRCLEdBSEE2NEIsRUFBV0gsR0FBVTM0QixHQUNyQndMLEVBQXdCLElBQWxCeEws
RUFBS2lKLFVBQW9CLElBQU15dkIsR0FBa0JJLEdBQWEsSUFFekQsQ0FDVnQ0QixFQUFJLENBQ0os
T0FBVXU0QixFQUFRRixFQUFTcjRCLEtBQ3JCZ0wsRUFBSXZPLFFBQVMsSUFBTTg3QixFQUFRLEtB
QVEsSUFDdkN2dEIsR0FBT3V0QixFQUFRLElBS2pCQyxHQUFhTixHQUFrQmx0QixHQUMxQnN0QixJ
QUFhRSxHQUNqQmg1QixFQUFLb0ssYUFBYyxRQUFTNHVCLElBTWhDLE1BQU94OEIsT0FHUnk4QixZ
QUFhLFNBQVVyMUIsR0FDdEIsR0FBSWkxQixHQUFTNzRCLEVBQU13TCxFQUFLc3RCLEVBQVVDLEVB
QU92NEIsRUFBR3c0QixFQUMzQy80QixFQUFJLENBRUwsSUFBSzVCLEVBQU9nRCxXQUFZdUMsR0FD
dkIsTUFBT3BILE1BQUtxRCxLQUFNLFNBQVVXLEdBQzNCbkMsRUFBUTdCLE1BQU95OEIsWUFBYXIx
QixFQUFNcEcsS0FBTWhCLEtBQU1nRSxFQUFHbTRCLEdBQVVuOEIsU0FJN0QsS0FBTTJELFVBQVVm
LE9BQ2YsTUFBTzVDLE1BQUsrUixLQUFNLFFBQVMsR0FHNUIsSUFBc0IsZ0JBQVYzSyxJQUFzQkEs
RUFBUSxDQUN6Q2kxQixFQUFVajFCLEVBQU0yRixNQUFPb1AsTUFFdkIsT0FBVTNZLEVBQU94RCxL
QUFNeUQsS0FNdEIsR0FMQTY0QixFQUFXSCxHQUFVMzRCLEdBR3JCd0wsRUFBd0IsSUFBbEJ4TCxF
QUFLaUosVUFBb0IsSUFBTXl2QixHQUFrQkksR0FBYSxJQUV6RCxDQUNWdDRCLEVBQUksQ0FDSixP
QUFVdTRCLEVBQVFGLEVBQVNyNEIsS0FHMUIsTUFBUWdMLEVBQUl2TyxRQUFTLElBQU04N0IsRUFB
USxRQUNsQ3Z0QixFQUFNQSxFQUFJNUosUUFBUyxJQUFNbTNCLEVBQVEsSUFBSyxJQUt4Q0MsR0FB
YU4sR0FBa0JsdEIsR0FDMUJzdEIsSUFBYUUsR0FDakJoNUIsRUFBS29LLGFBQWMsUUFBUzR1QixJ
QU1oQyxNQUFPeDhCLE9BR1IwOEIsWUFBYSxTQUFVdDFCLEVBQU91MUIsR0FDN0IsR0FBSWozQixT
QUFjMEIsRUFFbEIsT0FBeUIsaUJBQWJ1MUIsSUFBbUMsV0FBVGozQixFQUM5QmkzQixFQUFXMzhC
LEtBQUtvOEIsU0FBVWgxQixHQUFVcEgsS0FBS3k4QixZQUFhcjFCLEdBR3pEdkYsRUFBT2dELFdB
QVl1QyxHQUNoQnBILEtBQUtxRCxLQUFNLFNBQVVJLEdBQzNCNUIsRUFBUTdCLE1BQU8wOEIsWUFD
ZHQxQixFQUFNcEcsS0FBTWhCLEtBQU15RCxFQUFHMDRCLEdBQVVuOEIsTUFBUTI4QixHQUN2Q0Es
S0FLSTM4QixLQUFLcUQsS0FBTSxXQUNqQixHQUFJOE0sR0FBVzFNLEVBQUdrWCxFQUFNaWlCLENB
RXhCLElBQWMsV0FBVGwzQixFQUFvQixDQUd4QmpDLEVBQUksRUFDSmtYLEVBQU85WSxFQUFRN0Is
TUFDZjQ4QixFQUFheDFCLEVBQU0yRixNQUFPb1AsTUFFMUIsT0FBVWhNLEVBQVl5c0IsRUFBWW41
QixLQUc1QmtYLEVBQUtraUIsU0FBVTFzQixHQUNuQndLLEVBQUs4aEIsWUFBYXRzQixHQUVsQndL
LEVBQUt5aEIsU0FBVWpzQixPQUtJbkwsVUFBVm9DLEdBQWdDLFlBQVQxQixJQUNsQ3lLLEVBQVln
c0IsR0FBVW44QixNQUNqQm1RLEdBR0prUyxFQUFTSixJQUFLamlCLEtBQU0sZ0JBQWlCbVEsR0FP
akNuUSxLQUFLNE4sY0FDVDVOLEtBQUs0TixhQUFjLFFBQ2xCdUMsR0FBYS9JLEtBQVUsRUFDdkIs
R0FDQWliLEVBQVN2ZixJQUFLOUMsS0FBTSxrQkFBcUIsUUFPOUM2OEIsU0FBVSxTQUFVLzZCLEdB
Q25CLEdBQUlxTyxHQUFXM00sRUFDZEMsRUFBSSxDQUVMME0sR0FBWSxJQUFNck8sRUFBVyxHQUM3
QixPQUFVMEIsRUFBT3hELEtBQU15RCxLQUN0QixHQUF1QixJQUFsQkQsRUFBS2lKLFdBQ1AsSUFB
TXl2QixHQUFrQkMsR0FBVTM0QixJQUFXLEtBQU0vQyxRQUFTMFAsTUFDN0QsT0FBTyxDQUlWLFFB
QU8sSUFPVCxJQUFJMnNCLElBQVUsS0FFZGo3QixHQUFPRyxHQUFHb0MsUUFDVDROLElBQUssU0FB
VTVLLEdBQ2QsR0FBSThiLEdBQU9oZ0IsRUFBSzJCLEVBQ2ZyQixFQUFPeEQsS0FBTSxFQUVkLEVB
QUEsR0FBTTJELFVBQVVmLE9BNEJoQixNQUZBaUMsR0FBYWhELEVBQU9nRCxXQUFZdUMsR0FFekJw
SCxLQUFLcUQsS0FBTSxTQUFVSSxHQUMzQixHQUFJdU8sRUFFbUIsS0FBbEJoUyxLQUFLeU0sV0FL
VHVGLEVBREluTixFQUNFdUMsRUFBTXBHLEtBQU1oQixLQUFNeUQsRUFBRzVCLEVBQVE3QixNQUFP
Z1MsT0FFcEM1SyxFQUlLLE1BQVA0SyxFQUNKQSxFQUFNLEdBRW9CLGdCQUFSQSxHQUNsQkEsR0FB
TyxHQUVJblEsRUFBT2tELFFBQVNpTixLQUMzQkEsRUFBTW5RLEVBQU8wQixJQUFLeU8sRUFBSyxT
QUFVNUssR0FDaEMsTUFBZ0IsT0FBVEEsRUFBZ0IsR0FBS0EsRUFBUSxNQUl0QzhiLEVBQVFyaEIs
RUFBT2s3QixTQUFVLzhCLEtBQUswRixPQUFVN0QsRUFBT2s3QixTQUFVLzhCLEtBQUtzRyxTQUFT
QyxlQUdqRTJjLEdBQVksT0FBU0EsSUFBK0NsZSxTQUFwQ2tlLEVBQU1qQixJQUFLamlCLEtBQU1n
UyxFQUFLLFdBQzNEaFMsS0FBS29ILE1BQVE0SyxLQXpEZCxJQUFLeE8sRUFJSixNQUhBMGYsR0FB
UXJoQixFQUFPazdCLFNBQVV2NUIsRUFBS2tDLE9BQzdCN0QsRUFBT2s3QixTQUFVdjVCLEVBQUs4
QyxTQUFTQyxlQUUzQjJjLEdBQ0osT0FBU0EsSUFDZ0NsZSxVQUF2QzlCLEVBQU1nZ0IsRUFBTXBn
QixJQUFLVSxFQUFNLFVBRWxCTixHQUdSQSxFQUFNTSxFQUFLNEQsTUFHUyxnQkFBUmxFLEdBQ0pB
LEVBQUlrQyxRQUFTMDNCLEdBQVMsSUFJaEIsTUFBUDU1QixFQUFjLEdBQUtBLE9BNEM5QnJCLEVB
QU91QyxRQUNOMjRCLFVBQ0NyWCxRQUNDNWlCLElBQUssU0FBVVUsR0FFZCxHQUFJd08sR0FBTW5R
LEVBQU80TyxLQUFLc0IsS0FBTXZPLEVBQU0sUUFDbEMsT0FBYyxPQUFQd08sRUFDTkEsRUFNQWtx
QixHQUFrQnI2QixFQUFPTixLQUFNaUMsTUFHbEM0RSxRQUNDdEYsSUFBSyxTQUFVVSxHQUNkLEdB
QUk0RCxHQUFPc2UsRUFBUWppQixFQUNsQlksRUFBVWIsRUFBS2EsUUFDZmtYLEVBQVEvWCxFQUFL
cVMsY0FDYm9TLEVBQW9CLGVBQWR6a0IsRUFBS2tDLEtBQ1h5ZixFQUFTOEMsRUFBTSxRQUNmbUws
RUFBTW5MLEVBQU0xTSxFQUFRLEVBQUlsWCxFQUFRekIsTUFVakMsS0FQQ2EsRUFESThYLEVBQVEs
RUFDUjZYLEVBR0FuTCxFQUFNMU0sRUFBUSxFQUlYOVgsRUFBSTJ2QixFQUFLM3ZCLElBS2hCLEdB
SkFpaUIsRUFBU3JoQixFQUFTWixJQUlYaWlCLEVBQU85UCxVQUFZblMsSUFBTThYLEtBRzdCbUss
RUFBT3JaLFlBQ0xxWixFQUFPaGtCLFdBQVcySyxXQUNuQnhLLEVBQU95RSxTQUFVb2YsRUFBT2hr
QixXQUFZLGFBQWlCLENBTXhELEdBSEEwRixFQUFRdkYsRUFBUTZqQixHQUFTMVQsTUFHcEJpVyxF
QUNKLE1BQU83Z0IsRUFJUitkLEdBQU8za0IsS0FBTTRHLEdBSWYsTUFBTytkLElBR1JsRCxJQUFL
LFNBQVV6ZSxFQUFNNEQsR0FDcEIsR0FBSTQxQixHQUFXdFgsRUFDZHJoQixFQUFVYixFQUFLYSxR
QUNmOGdCLEVBQVN0akIsRUFBTzZFLFVBQVdVLEdBQzNCM0QsRUFBSVksRUFBUXpCLE1BRWIsT0FB
UWEsSUFDUGlpQixFQUFTcmhCLEVBQVNaLElBSWJpaUIsRUFBTzlQLFNBQ1gvVCxFQUFPK0UsUUFB
Uy9FLEVBQU9rN0IsU0FBU3JYLE9BQU81aUIsSUFBSzRpQixHQUFVUCxTQUV0RDZYLEdBQVksRUFV
ZCxPQUhNQSxLQUNMeDVCLEVBQUtxUyxrQkFFQ3NQLE9BT1h0akIsRUFBT3dCLE1BQVEsUUFBUyxZ
QUFjLFdBQ3JDeEIsRUFBT2s3QixTQUFVLzhCLE9BQ2hCaWlCLElBQUssU0FBVXplLEVBQU00RCxH
QUNwQixHQUFLdkYsRUFBT2tELFFBQVNxQyxHQUNwQixNQUFTNUQsR0FBS21TLFFBQVU5VCxFQUFP
K0UsUUFBUy9FLEVBQVEyQixHQUFPd08sTUFBTzVLLFFBSTNEbkcsRUFBUSs1QixVQUNibjVCLEVB
QU9rN0IsU0FBVS84QixNQUFPOEMsSUFBTSxTQUFVVSxHQUN2QyxNQUF3QyxRQUFqQ0EsRUFBS21L
LGFBQWMsU0FBcUIsS0FBT25LLEVBQUs0RCxTQVc5RCxJQUFJNjFCLElBQWMsaUNBRWxCcDdCLEdB
QU91QyxPQUFRdkMsRUFBT3NtQixPQUVyQjZDLFFBQVMsU0FBVTdDLEVBQU9qRyxFQUFNMWUsRUFB
TTA1QixHQUVyQyxHQUFJejVCLEdBQUd1TCxFQUFLekgsRUFBSzQxQixFQUFZQyxFQUFRdFUsRUFB
UTNKLEVBQzVDa2UsR0FBYzc1QixHQUFRNUQsR0FDdEI4RixFQUFPOUUsRUFBT0ksS0FBTW1uQixF
QUFPLFFBQVdBLEVBQU16aUIsS0FBT3lpQixFQUNuRFEsRUFBYS9uQixFQUFPSSxLQUFNbW5CLEVB
QU8sYUFBZ0JBLEVBQU1nQixVQUFVdGhCLE1BQU8sT0FLekUsSUFIQW1ILEVBQU16SCxFQUFNL0Qs
RUFBT0EsR0FBUTVELEVBR0osSUFBbEI0RCxFQUFLaUosVUFBb0MsSUFBbEJqSixFQUFLaUosV0FL
NUJ3d0IsR0FBWXZ2QixLQUFNaEksRUFBTzdELEVBQU9zbUIsTUFBTVksYUFJdENyakIsRUFBS2pG
LFFBQVMsVUFHbEJrb0IsRUFBYWpqQixFQUFLbUMsTUFBTyxLQUN6Qm5DLEVBQU9pakIsRUFBV3Bh
LFFBQ2xCb2EsRUFBV3prQixRQUVaazVCLEVBQVMxM0IsRUFBS2pGLFFBQVMsS0FBUSxHQUFLLEtB
QU9pRixFQUczQ3lpQixFQUFRQSxFQUFPdG1CLEVBQU9vRCxTQUNyQmtqQixFQUNBLEdBQUl0bUIs
R0FBTzZvQixNQUFPaGxCLEVBQXVCLGdCQUFWeWlCLElBQXNCQSxHQUd0REEsRUFBTW1WLFVBQVlK
LEVBQWUsRUFBSSxFQUNyQy9VLEVBQU1nQixVQUFZUixFQUFXN2EsS0FBTSxLQUNuQ3FhLEVBQU0r
QixXQUFhL0IsRUFBTWdCLFVBQ3hCLEdBQUlsZixRQUFRLFVBQVkwZSxFQUFXN2EsS0FBTSxpQkFB
b0IsV0FDN0QsS0FHRHFhLEVBQU0xVSxPQUFTek8sT0FDVG1qQixFQUFNeGpCLFNBQ1h3akIsRUFB
TXhqQixPQUFTbkIsR0FJaEIwZSxFQUFlLE1BQVJBLEdBQ0ppRyxHQUNGdG1CLEVBQU82RSxVQUFX
d2IsR0FBUWlHLElBRzNCaEosRUFBVXRkLEVBQU9zbUIsTUFBTWhKLFFBQVN6WixPQUMxQnczQixJ
QUFnQi9kLEVBQVE2TCxTQUFXN0wsRUFBUTZMLFFBQVF0bkIsTUFBT0YsRUFBTTBlLE1BQVcsR0FB
akYsQ0FNQSxJQUFNZ2IsSUFBaUIvZCxFQUFRNEwsV0FBYWxwQixFQUFPK0QsU0FBVXBDLEdBQVMs
Q0FNckUsSUFKQTI1QixFQUFhaGUsRUFBUThKLGNBQWdCdmpCLEVBQy9CdTNCLEdBQVl2dkIsS0FB
TXl2QixFQUFhejNCLEtBQ3BDc0osRUFBTUEsRUFBSXROLFlBRUhzTixFQUFLQSxFQUFNQSxFQUFJ
dE4sV0FDdEIyN0IsRUFBVTc4QixLQUFNd08sR0FDaEJ6SCxFQUFNeUgsQ0FJRnpILE1BQVUvRCxF
QUFLMkosZUFBaUJ2TixJQUNwQ3k5QixFQUFVNzhCLEtBQU0rRyxFQUFJd0ksYUFBZXhJLEVBQUln
MkIsY0FBZ0J4OUIsR0FLekQwRCxFQUFJLENBQ0osUUFBVXVMLEVBQU1xdUIsRUFBVzU1QixRQUFZ
MGtCLEVBQU00Qix1QkFFNUM1QixFQUFNemlCLEtBQU9qQyxFQUFJLEVBQ2hCMDVCLEVBQ0FoZSxF
QUFRK0osVUFBWXhqQixFQUdyQm9qQixHQUFXekcsRUFBU3ZmLElBQUtrTSxFQUFLLGVBQW9CbVos
RUFBTXppQixPQUN2RDJjLEVBQVN2ZixJQUFLa00sRUFBSyxVQUNmOFosR0FDSkEsRUFBT3BsQixN
QUFPc0wsRUFBS2tULEdBSXBCNEcsRUFBU3NVLEdBQVVwdUIsRUFBS291QixHQUNuQnRVLEdBQVVB
LEVBQU9wbEIsT0FBU2llLEVBQVkzUyxLQUMxQ21aLEVBQU0xVSxPQUFTcVYsRUFBT3BsQixNQUFP
c0wsRUFBS2tULEdBQzdCaUcsRUFBTTFVLFVBQVcsR0FDckIwVSxFQUFNZ0MsaUJBb0NULE9BaENB
aEMsR0FBTXppQixLQUFPQSxFQUdQdzNCLEdBQWlCL1UsRUFBTW1ELHNCQUVwQm5NLEVBQVE0RyxV
QUNmNUcsRUFBUTRHLFNBQVNyaUIsTUFBTzI1QixFQUFVN3pCLE1BQU8wWSxNQUFXLElBQ3BEUCxF
QUFZbmUsSUFJUDQ1QixHQUFVdjdCLEVBQU9nRCxXQUFZckIsRUFBTWtDLE1BQWE3RCxFQUFPK0Qs
U0FBVXBDLEtBR3JFK0QsRUFBTS9ELEVBQU00NUIsR0FFUDcxQixJQUNKL0QsRUFBTTQ1QixHQUFX
LE1BSWxCdjdCLEVBQU9zbUIsTUFBTVksVUFBWXJqQixFQUN6QmxDLEVBQU1rQyxLQUNON0QsRUFB
T3NtQixNQUFNWSxVQUFZL2pCLE9BRXBCdUMsSUFDSi9ELEVBQU00NUIsR0FBVzcxQixJQU1kNGdC
LEVBQU0xVSxTQUtkK3BCLFNBQVUsU0FBVTkzQixFQUFNbEMsRUFBTTJrQixHQUMvQixHQUFJemIs
R0FBSTdLLEVBQU91QyxPQUNkLEdBQUl2QyxHQUFPNm9CLE1BQ1h2QyxHQUVDemlCLEtBQU1BLEVB
Q05nbUIsYUFBYSxHQUlmN3BCLEdBQU9zbUIsTUFBTTZDLFFBQVN0ZSxFQUFHLEtBQU1sSixNQUtq
QzNCLEVBQU9HLEdBQUdvQyxRQUVUNG1CLFFBQVMsU0FBVXRsQixFQUFNd2MsR0FDeEIsTUFBT2xp
QixNQUFLcUQsS0FBTSxXQUNqQnhCLEVBQU9zbUIsTUFBTTZDLFFBQVN0bEIsRUFBTXdjLEVBQU1s
aUIsU0FHcEN5OUIsZUFBZ0IsU0FBVS8zQixFQUFNd2MsR0FDL0IsR0FBSTFlLEdBQU94RCxLQUFN
LEVBQ2pCLElBQUt3RCxFQUNKLE1BQU8zQixHQUFPc21CLE1BQU02QyxRQUFTdGxCLEVBQU13YyxF
QUFNMWUsR0FBTSxNQU1sRDNCLEVBQU93QixLQUFNLHdMQUVnRHdFLE1BQU8sS0FDbkUsU0FBVXBF
LEVBQUdhLEdBR2J6QyxFQUFPRyxHQUFJc0MsR0FBUyxTQUFVNGQsRUFBTWxnQixHQUNuQyxNQUFP
MkIsV0FBVWYsT0FBUyxFQUN6QjVDLEtBQUsrbkIsR0FBSXpqQixFQUFNLEtBQU00ZCxFQUFNbGdC
LEdBQzNCaEMsS0FBS2dyQixRQUFTMW1CLE1BSWpCekMsRUFBT0csR0FBR29DLFFBQ1RzNUIsTUFB
TyxTQUFVQyxFQUFRQyxHQUN4QixNQUFPNTlCLE1BQUt3dEIsV0FBWW1RLEdBQVNsUSxXQUFZbVEs
R0FBU0QsTUFPeEQxOEIsRUFBUTQ4QixRQUFVLGFBQWU5OUIsR0FXM0JrQixFQUFRNDhCLFNBQ2Jo
OEIsRUFBT3dCLE1BQVFnUyxNQUFPLFVBQVc0VixLQUFNLFlBQWMsU0FBVTJDLEVBQU1qRSxHQUdw
RSxHQUFJOWEsR0FBVSxTQUFVc1osR0FDdkJ0bUIsRUFBT3NtQixNQUFNcVYsU0FBVTdULEVBQUt4
QixFQUFNeGpCLE9BQVE5QyxFQUFPc21CLE1BQU13QixJQUFLeEIsSUFHN0R0bUIsR0FBT3NtQixN
QUFNaEosUUFBU3dLLElBQ3JCTixNQUFPLFdBQ04sR0FBSWpvQixHQUFNcEIsS0FBS21OLGVBQWlC
bk4sS0FDL0I4OUIsRUFBV3piLEVBQVNmLE9BQVFsZ0IsRUFBS3VvQixFQUU1Qm1VLElBQ0wxOEIs
RUFBSTZPLGlCQUFrQjJkLEVBQU0vZSxHQUFTLEdBRXRDd1QsRUFBU2YsT0FBUWxnQixFQUFLdW9C
LEdBQU9tVSxHQUFZLEdBQU0sSUFFaER0VSxTQUFVLFdBQ1QsR0FBSXBvQixHQUFNcEIsS0FBS21O
LGVBQWlCbk4sS0FDL0I4OUIsRUFBV3piLEVBQVNmLE9BQVFsZ0IsRUFBS3VvQixHQUFRLENBRXBD
bVUsR0FLTHpiLEVBQVNmLE9BQVFsZ0IsRUFBS3VvQixFQUFLbVUsSUFKM0IxOEIsRUFBSStmLG9C
QUFxQnlNLEVBQU0vZSxHQUFTLEdBQ3hDd1QsRUFBU3BGLE9BQVE3YixFQUFLdW9CLE9BUzNCLElB
QUl4VSxJQUFXcFYsRUFBT29WLFNBRWxCNG9CLEdBQVFsOEIsRUFBTzRGLE1BRWZ1MkIsR0FBUyxJ
QUtibjhCLEdBQU9vOEIsU0FBVyxTQUFVL2IsR0FDM0IsR0FBSXBPLEVBQ0osS0FBTW9PLEdBQXdC
LGdCQUFUQSxHQUNwQixNQUFPLEtBS1IsS0FDQ3BPLEdBQU0sR0FBTS9ULEdBQU9tK0IsV0FBY0Ms
Z0JBQWlCamMsRUFBTSxZQUN2RCxNQUFReFYsR0FDVG9ILEVBQU05TyxPQU1QLE1BSE04TyxLQUFP
QSxFQUFJdkcscUJBQXNCLGVBQWdCM0ssUUFDdERmLEVBQU95RCxNQUFPLGdCQUFrQjRjLEdBRTFC
cE8sRUFJUixJQUNDc3FCLElBQVcsUUFDWEMsR0FBUSxTQUNSQyxHQUFrQix3Q0FDbEJDLEdBQWUs
b0NBRWhCLFNBQVNDLElBQWF0SixFQUFRenZCLEVBQUtnNUIsRUFBYWhqQixHQUMvQyxHQUFJblgs
RUFFSixJQUFLekMsRUFBT2tELFFBQVNVLEdBR3BCNUQsRUFBT3dCLEtBQU1vQyxFQUFLLFNBQVVo
QyxFQUFHNlosR0FDekJtaEIsR0FBZUwsR0FBUzF3QixLQUFNd25CLEdBR2xDelosRUFBS3laLEVB
QVE1WCxHQUtia2hCLEdBQ0N0SixFQUFTLEtBQXFCLGdCQUFONVgsSUFBdUIsTUFBTEEsRUFBWTda
LEVBQUksSUFBTyxJQUNqRTZaLEVBQ0FtaEIsRUFDQWhqQixTQUtHLElBQU1nakIsR0FBc0MsV0FB
dkI1OEIsRUFBTzZELEtBQU1ELEdBVXhDZ1csRUFBS3laLEVBQVF6dkIsT0FQYixLQUFNbkIsSUFB
UW1CLEdBQ2IrNEIsR0FBYXRKLEVBQVMsSUFBTTV3QixFQUFPLElBQUttQixFQUFLbkIsR0FBUW02
QixFQUFhaGpCLEdBWXJFNVosRUFBTzY4QixNQUFRLFNBQVVwMUIsRUFBR20xQixHQUMzQixHQUFJ
dkosR0FDSHlKLEtBQ0FsakIsRUFBTSxTQUFVcE4sRUFBS3V3QixHQUdwQixHQUFJeDNCLEdBQVF2
RixFQUFPZ0QsV0FBWSs1QixHQUM5QkEsSUFDQUEsQ0FFREQsR0FBR0EsRUFBRS83QixRQUFXaThC
LG1CQUFvQnh3QixHQUFRLElBQzNDd3dCLG1CQUE2QixNQUFUejNCLEVBQWdCLEdBQUtBLEdBSTVD
LElBQUt2RixFQUFPa0QsUUFBU3VFLElBQVNBLEVBQUU1RyxTQUFXYixFQUFPaUQsY0FBZXdFLEdB
R2hFekgsRUFBT3dCLEtBQU1pRyxFQUFHLFdBQ2ZtUyxFQUFLemIsS0FBS3NFLEtBQU10RSxLQUFL
b0gsYUFPdEIsS0FBTTh0QixJQUFVNXJCLEdBQ2ZrMUIsR0FBYXRKLEVBQVE1ckIsRUFBRzRyQixH
QUFVdUosRUFBYWhqQixFQUtqRCxPQUFPa2pCLEdBQUU3d0IsS0FBTSxNQUdoQmpNLEVBQU9HLEdB
QUdvQyxRQUNUMDZCLFVBQVcsV0FDVixNQUFPajlCLEdBQU82OEIsTUFBTzErQixLQUFLKytCLG1C
QUUzQkEsZUFBZ0IsV0FDZixNQUFPLytCLE1BQUt1RCxJQUFLLFdBR2hCLEdBQUl1TyxHQUFXalEs
RUFBT3NnQixLQUFNbmlCLEtBQU0sV0FDbEMsT0FBTzhSLEdBQVdqUSxFQUFPNkUsVUFBV29MLEdB
QWE5UixPQUVqRHVRLE9BQVEsV0FDUixHQUFJN0ssR0FBTzFGLEtBQUswRixJQUdoQixPQUFPMUYs
TUFBS3NFLE9BQVN6QyxFQUFRN0IsTUFBT21hLEdBQUksY0FDdkNva0IsR0FBYTd3QixLQUFNMU4s
S0FBS3NHLFlBQWVnNEIsR0FBZ0I1d0IsS0FBTWhJLEtBQzNEMUYsS0FBSzJWLFVBQVkyUCxHQUFl
NVgsS0FBTWhJLE1BRXpDbkMsSUFBSyxTQUFVRSxFQUFHRCxHQUNsQixHQUFJd08sR0FBTW5RLEVB
QVE3QixNQUFPZ1MsS0FFekIsT0FBWSxPQUFQQSxFQUNHLEtBR0huUSxFQUFPa0QsUUFBU2lOLEdB
Q2JuUSxFQUFPMEIsSUFBS3lPLEVBQUssU0FBVUEsR0FDakMsT0FBUzFOLEtBQU1kLEVBQUtjLEtB
QU04QyxNQUFPNEssRUFBSTVNLFFBQVNpNUIsR0FBTyxZQUk5Qy81QixLQUFNZCxFQUFLYyxLQUFN
OEMsTUFBTzRLLEVBQUk1TSxRQUFTaTVCLEdBQU8sV0FDbER2N0IsUUFLTixJQUNDazhCLElBQU0s
T0FDTkMsR0FBUSxPQUNSQyxHQUFhLGdCQUNiQyxHQUFXLDZCQUdYQyxHQUFpQiw0REFDakJDLEdB
QWEsaUJBQ2JDLEdBQVksUUFXWjlHLE1BT0ErRyxNQUdBQyxHQUFXLEtBQUtqL0IsT0FBUSxLQUd4
QmsvQixHQUFlNy9CLEVBQVMwQixjQUFlLElBQ3ZDbStCLElBQWFqcUIsS0FBT0wsR0FBU0ssSUFH
OUIsU0FBU2txQixJQUE2QkMsR0FHckMsTUFBTyxVQUFVQyxFQUFvQjNoQixHQUVELGdCQUF2QjJo
QixLQUNYM2hCLEVBQU8yaEIsRUFDUEEsRUFBcUIsSUFHdEIsSUFBSUMsR0FDSHA4QixFQUFJLEVB
Q0pxOEIsRUFBWUYsRUFBbUJyNUIsY0FBY3dHLE1BQU9vUCxNQUVyRCxJQUFLdGEsRUFBT2dELFdB
QVlvWixHQUd2QixNQUFVNGhCLEVBQVdDLEVBQVdyOEIsS0FHUixNQUFsQm84QixFQUFVLElBQ2RB
LEVBQVdBLEVBQVN2L0IsTUFBTyxJQUFPLEtBQ2hDcS9CLEVBQVdFLEdBQWFGLEVBQVdFLFFBQW1C
anVCLFFBQVNxTSxLQUkvRDBoQixFQUFXRSxHQUFhRixFQUFXRSxRQUFtQnIvQixLQUFNeWQsSUFR
bkUsUUFBUzhoQixJQUErQkosRUFBV3Q3QixFQUFTdzBCLEVBQWlCbUgsR0FFNUUsR0FBSUMsTUFD
SEMsRUFBcUJQLElBQWNKLEVBRXBDLFNBQVNZLEdBQVNOLEdBQ2pCLEdBQUlqcUIsRUFjSixPQWJB
cXFCLEdBQVdKLElBQWEsRUFDeEJoK0IsRUFBT3dCLEtBQU1zOEIsRUFBV0UsT0FBa0IsU0FBVXQw
QixFQUFHNjBCLEdBQ3RELEdBQUlDLEdBQXNCRCxFQUFvQi83QixFQUFTdzBCLEVBQWlCbUgsRUFD
eEUsT0FBb0MsZ0JBQXhCSyxJQUNWSCxHQUFxQkQsRUFBV0ksR0FLdEJILElBQ0R0cUIsRUFBV3lx
QixHQURmLFFBSE5oOEIsRUFBUXk3QixVQUFVbHVCLFFBQVN5dUIsR0FDM0JGLEVBQVNFLElBQ0Ys
S0FLRnpxQixFQUdSLE1BQU91cUIsR0FBUzk3QixFQUFReTdCLFVBQVcsTUFBVUcsRUFBVyxNQUFT
RSxFQUFTLEtBTTNFLFFBQVNHLElBQVkzN0IsRUFBUUosR0FDNUIsR0FBSThKLEdBQUt6SixFQUNS
MjdCLEVBQWMxK0IsRUFBTzIrQixhQUFhRCxlQUVuQyxLQUFNbHlCLElBQU85SixHQUNRUyxTQUFm
VCxFQUFLOEosTUFDUGt5QixFQUFhbHlCLEdBQVExSixFQUFXQyxJQUFVQSxPQUFpQnlKLEdBQVE5
SixFQUFLOEosR0FPNUUsT0FKS3pKLElBQ0ovQyxFQUFPdUMsUUFBUSxFQUFNTyxFQUFRQyxHQUd2
QkQsRUFPUixRQUFTODdCLElBQXFCOUIsRUFBR3FCLEVBQU9VLEdBRXZDLEdBQUlDLEdBQUlqN0Is
RUFBTWs3QixFQUFlQyxFQUM1QjNsQixFQUFXeWpCLEVBQUV6akIsU0FDYjRrQixFQUFZbkIsRUFB
RW1CLFNBR2YsT0FBMkIsTUFBbkJBLEVBQVcsR0FDbEJBLEVBQVV2eEIsUUFDRXZKLFNBQVAyN0Is
SUFDSkEsRUFBS2hDLEVBQUVtQyxVQUFZZCxFQUFNZSxrQkFBbUIsZ0JBSzlDLElBQUtKLEVBQ0os
SUFBTWo3QixJQUFRd1YsR0FDYixHQUFLQSxFQUFVeFYsSUFBVXdWLEVBQVV4VixHQUFPZ0ksS0FB
TWl6QixHQUFPLENBQ3REYixFQUFVbHVCLFFBQVNsTSxFQUNuQixPQU1ILEdBQUtvNkIsRUFBVyxJ
QUFPWSxHQUN0QkUsRUFBZ0JkLEVBQVcsT0FDckIsQ0FHTixJQUFNcDZCLElBQVFnN0IsR0FBWSxD
QUN6QixJQUFNWixFQUFXLElBQU9uQixFQUFFcUMsV0FBWXQ3QixFQUFPLElBQU1vNkIsRUFBVyxJ
QUFRLENBQ3JFYyxFQUFnQmw3QixDQUNoQixPQUVLbTdCLElBQ0xBLEVBQWdCbjdCLEdBS2xCazdC
LEVBQWdCQSxHQUFpQkMsRUFNbEMsR0FBS0QsRUFJSixNQUhLQSxLQUFrQmQsRUFBVyxJQUNqQ0Es
RUFBVWx1QixRQUFTZ3ZCLEdBRWJGLEVBQVdFLEdBT3BCLFFBQVNLLElBQWF0QyxFQUFHdUMsRUFB
VWxCLEVBQU9tQixHQUN6QyxHQUFJQyxHQUFPQyxFQUFTQyxFQUFNLzVCLEVBQUs0VCxFQUM5QjZs
QixLQUdBbEIsRUFBWW5CLEVBQUVtQixVQUFVeC9CLE9BR3pCLElBQUt3L0IsRUFBVyxHQUNmLElB
QU13QixJQUFRM0MsR0FBRXFDLFdBQ2ZBLEVBQVlNLEVBQUsvNkIsZUFBa0JvNEIsRUFBRXFDLFdB
QVlNLEVBSW5ERCxHQUFVdkIsRUFBVXZ4QixPQUdwQixPQUFROHlCLEVBY1AsR0FaSzFDLEVBQUU0
QyxlQUFnQkYsS0FDdEJyQixFQUFPckIsRUFBRTRDLGVBQWdCRixJQUFjSCxJQUlsQy9sQixHQUFR
Z21CLEdBQWF4QyxFQUFFNkMsYUFDNUJOLEVBQVd2QyxFQUFFNkMsV0FBWU4sRUFBVXZDLEVBQUVr
QixXQUd0QzFrQixFQUFPa21CLEVBQ1BBLEVBQVV2QixFQUFVdnhCLFFBS25CLEdBQWlCLE1BQVo4
eUIsRUFFSkEsRUFBVWxtQixNQUdKLElBQWMsTUFBVEEsR0FBZ0JBLElBQVNrbUIsRUFBVSxDQU05
QyxHQUhBQyxFQUFPTixFQUFZN2xCLEVBQU8sSUFBTWttQixJQUFhTCxFQUFZLEtBQU9LLElBRzFE
QyxFQUNMLElBQU1GLElBQVNKLEdBSWQsR0FEQXo1QixFQUFNNjVCLEVBQU12NUIsTUFBTyxLQUNk
TixFQUFLLEtBQVE4NUIsSUFHakJDLEVBQU9OLEVBQVk3bEIsRUFBTyxJQUFNNVQsRUFBSyxLQUNw
Q3k1QixFQUFZLEtBQU96NUIsRUFBSyxLQUNiLENBR04rNUIsS0FBUyxFQUNiQSxFQUFPTixFQUFZ
SSxHQUdSSixFQUFZSSxNQUFZLElBQ25DQyxFQUFVOTVCLEVBQUssR0FDZnU0QixFQUFVbHVCLFFB
QVNySyxFQUFLLElBRXpCLE9BT0osR0FBSys1QixLQUFTLEVBR2IsR0FBS0EsR0FBUTNDLEVBQUFB
LFVBQ1p1QyxFQUFXSSxFQUFNSixPQUVqQixLQUNDQSxFQUFXSSxFQUFNSixHQUNoQixNQUFReDBC
LEdBQ1QsT0FDQ3lSLE1BQU8sY0FDUDdZLE1BQU9nOEIsRUFBTzUwQixFQUFJLHNCQUF3QnlPLEVB
QU8sT0FBU2ttQixJQVNqRSxPQUFTbGpCLE1BQU8sVUFBVytELEtBQU1nZixHQUdsQ3IvQixFQUFP
dUMsUUFHTnE5QixPQUFRLEVBR1JDLGdCQUNBQyxRQUVBbkIsY0FDQ29CLElBQUt6c0IsR0FBU0ss
S0FDZDlQLEtBQU0sTUFDTm04QixRQUFTekMsR0FBZTF4QixLQUFNeUgsR0FBUzJzQixVQUN2Q3Rp
QyxRQUFRLEVBQ1J1aUMsYUFBYSxFQUNiQyxPQUFPLEVBQ1BDLFlBQWEsbURBY2JDLFNBQ0NqSixJ
QUFLdUcsR0FDTGorQixLQUFNLGFBQ04ydEIsS0FBTSxZQUNOcGIsSUFBSyw0QkFDTHF1QixLQUFN
LHFDQUdQam5CLFVBQ0NwSCxJQUFLLFVBQ0xvYixLQUFNLFNBQ05pVCxLQUFNLFlBR1BaLGdCQUND
enRCLElBQUssY0FDTHZTLEtBQU0sZUFDTjRnQyxLQUFNLGdCQUtQbkIsWUFHQ29CLFNBQVV6MkIs
T0FHVjAyQixhQUFhLEVBR2JDLFlBQWE1ZixLQUFLQyxNQUdsQjRmLFdBQVkxZ0MsRUFBT284QixV
QU9wQnNDLGFBQ0NxQixLQUFLLEVBQ0w3L0IsU0FBUyxJQU9YeWdDLFVBQVcsU0FBVTc5QixFQUFR
ODlCLEdBQzVCLE1BQU9BLEdBR05uQyxHQUFZQSxHQUFZMzdCLEVBQVE5QyxFQUFPMitCLGNBQWdC
aUMsR0FHdkRuQyxHQUFZeitCLEVBQU8yK0IsYUFBYzc3QixJQUduQys5QixjQUFlaEQsR0FBNkJs
SCxJQUM1Q21LLGNBQWVqRCxHQUE2QkgsSUFHNUNxRCxLQUFNLFNBQVVoQixFQUFLdjlCLEdBR0Es
Z0JBQVJ1OUIsS0FDWHY5QixFQUFVdTlCLEVBQ1ZBLEVBQU01OEIsUUFJUFgsRUFBVUEsS0FFVixJ
QUFJdytCLEdBR0hDLEVBR0FDLEVBQ0FDLEVBR0FDLEVBR0FDLEVBR0FoaUIsRUFHQWlpQixFQUdB
MS9CLEVBR0EyL0IsRUFHQXpFLEVBQUk5OEIsRUFBTzJnQyxhQUFlbitCLEdBRzFCZy9CLEVBQWtC
MUUsRUFBRTU4QixTQUFXNDhCLEVBRy9CMkUsRUFBcUIzRSxFQUFFNThCLFVBQ3BCc2hDLEVBQWdC
NTJCLFVBQVk0MkIsRUFBZ0IzZ0MsUUFDN0NiLEVBQVF3aEMsR0FDUnhoQyxFQUFPc21CLE1BR1Q5
SixFQUFXeGMsRUFBT21jLFdBQ2xCdWxCLEVBQW1CMWhDLEVBQU8wYSxVQUFXLGVBR3JDaW5CLEVB
QWE3RSxFQUFFNkUsZUFHZkMsS0FDQUMsS0FHQUMsRUFBVyxXQUdYM0QsR0FDQzVlLFdBQVksRUFH
WjJmLGtCQUFtQixTQUFVMXlCLEdBQzVCLEdBQUl0QixFQUNKLElBQUttVSxFQUFZLENBQ2hCLElB
QU04aEIsRUFBa0IsQ0FDdkJBLElBQ0EsT0FBVWoyQixFQUFRb3lCLEdBQVMveEIsS0FBTTIxQixH
QUNoQ0MsRUFBaUJqMkIsRUFBTyxHQUFJeEcsZUFBa0J3RyxFQUFPLEdBR3ZEQSxFQUFRaTJCLEVB
QWlCMzBCLEVBQUk5SCxlQUU5QixNQUFnQixPQUFUd0csRUFBZ0IsS0FBT0EsR0FJL0I2MkIsc0JB
QXVCLFdBQ3RCLE1BQU8xaUIsR0FBWTZoQixFQUF3QixNQUk1Q2MsaUJBQWtCLFNBQVV2L0IsRUFB
TThDLEdBTWpDLE1BTGtCLE9BQWI4WixJQUNKNWMsRUFBT28vQixFQUFxQnAvQixFQUFLaUMsZUFD
aENtOUIsRUFBcUJwL0IsRUFBS2lDLGdCQUFtQmpDLEVBQzlDbS9CLEVBQWdCbi9CLEdBQVM4QyxH
QUVuQnBILE1BSVI4akMsaUJBQWtCLFNBQVVwK0IsR0FJM0IsTUFIa0IsT0FBYndiLElBQ0p5ZCxF
QUFFbUMsU0FBV3A3QixHQUVQMUYsTUFJUndqQyxXQUFZLFNBQVVqZ0MsR0FDckIsR0FBSXBDLEVB
Q0osSUFBS29DLEVBQ0osR0FBSzJkLEVBR0o4ZSxFQUFNNWhCLE9BQVE3YSxFQUFLeThCLEVBQU0r
RCxhQUl6QixLQUFNNWlDLElBQVFvQyxHQUNiaWdDLEVBQVlyaUMsSUFBV3FpQyxFQUFZcmlDLEdB
QVFvQyxFQUFLcEMsR0FJbkQsT0FBT25CLE9BSVJna0MsTUFBTyxTQUFVQyxHQUNoQixHQUFJQyxH
QUFZRCxHQUFjTixDQUs5QixPQUpLZCxJQUNKQSxFQUFVbUIsTUFBT0UsR0FFbEJsN0IsRUFBTSxF
QUFHazdCLEdBQ0Zsa0MsTUFvQlYsSUFmQXFlLEVBQVNSLFFBQVNtaUIsR0FLbEJyQixFQUFFaUQs
TUFBVUEsR0FBT2pELEVBQUVpRCxLQUFPenNCLEdBQVNLLE1BQVMsSUFDNUNwUSxRQUFTazZCLEdB
QVducUIsR0FBUzJzQixTQUFXLE1BRzFDbkQsRUFBRWo1QixLQUFPckIsRUFBUXVaLFFBQVV2WixF
QUFRcUIsTUFBUWk1QixFQUFFL2dCLFFBQVUrZ0IsRUFBRWo1QixLQUd6RGk1QixFQUFFbUIsV0FB
Y25CLEVBQUVrQixVQUFZLEtBQU10NUIsY0FBY3dHLE1BQU9vUCxLQUFxQixJQUd4RCxNQUFqQndp
QixFQUFFd0YsWUFBc0IsQ0FDNUJqQixFQUFZdGpDLEVBQVMwQixjQUFlLElBS3BDLEtBQ0M0aEMs
RUFBVTF0QixLQUFPbXBCLEVBQUVpRCxJQUluQnNCLEVBQVUxdEIsS0FBTzB0QixFQUFVMXRCLEtB
QzNCbXBCLEVBQUV3RixZQUFjMUUsR0FBYXFDLFNBQVcsS0FBT3JDLEdBQWEyRSxNQUMzRGxCLEVB
QVVwQixTQUFXLEtBQU9vQixFQUFVa0IsS0FDdEMsTUFBUTEzQixHQUlUaXlCLEVBQUV3RixhQUFj
LEdBYWxCLEdBUkt4RixFQUFFemMsTUFBUXljLEVBQUVvRCxhQUFpQyxnQkFBWHBELEdBQUV6YyxP
QUN4Q3ljLEVBQUV6YyxLQUFPcmdCLEVBQU82OEIsTUFBT0MsRUFBRXpjLEtBQU15YyxFQUFFRixj
QUlsQ3NCLEdBQStCdkgsR0FBWW1HLEVBQUd0NkIsRUFBUzI3QixHQUdsRDllLEVBQ0osTUFBTzhl
LEVBS1JtRCxHQUFjdGhDLEVBQU9zbUIsT0FBU3dXLEVBQUVuL0IsT0FHM0IyakMsR0FBbUMsSUFB
cEJ0aEMsRUFBTzQvQixVQUMxQjUvQixFQUFPc21CLE1BQU02QyxRQUFTLGFBSXZCMlQsRUFBRWo1
QixLQUFPaTVCLEVBQUVqNUIsS0FBS2xELGNBR2hCbThCLEVBQUUwRixZQUFjaEYsR0FBVzN4QixL
QUFNaXhCLEVBQUVqNUIsTUFLbkNvOUIsRUFBV25FLEVBQUVpRCxJQUFJeDhCLFFBQVM2NUIsR0FB
TyxJQUczQk4sRUFBRTBGLFdBdUJJMUYsRUFBRXpjLE1BQVF5YyxFQUFFb0QsYUFDb0QsS0FBekVw
RCxFQUFFc0QsYUFBZSxJQUFLeGhDLFFBQVMsdUNBQ2pDaytCLEVBQUV6YyxLQUFPeWMsRUFBRXpj
LEtBQUs5YyxRQUFTNDVCLEdBQUssT0F0QjlCb0UsRUFBV3pFLEVBQUVpRCxJQUFJdGhDLE1BQU93
aUMsRUFBU2xnQyxRQUc1Qis3QixFQUFFemMsT0FDTjRnQixJQUFjOUUsR0FBT3R3QixLQUFNbzFC
LEdBQWEsSUFBTSxLQUFRbkUsRUFBRXpjLFdBR2pEeWMsR0FBRXpjLE1BSUx5YyxFQUFFdndCLFNB
QVUsSUFDaEIwMEIsRUFBV0EsRUFBUzE5QixRQUFTODVCLEdBQVksTUFDekNrRSxHQUFhcEYsR0FB
T3R3QixLQUFNbzFCLEdBQWEsSUFBTSxLQUFRLEtBQVMvRSxNQUFZcUYsR0FJM0V6RSxFQUFFaUQs
SUFBTWtCLEVBQVdNLEdBU2Z6RSxFQUFFMkYsYUFDRHppQyxFQUFPNi9CLGFBQWNvQixJQUN6QjlD
LEVBQU02RCxpQkFBa0Isb0JBQXFCaGlDLEVBQU82L0IsYUFBY29CLElBRTlEamhDLEVBQU84L0Is
S0FBTW1CLElBQ2pCOUMsRUFBTTZELGlCQUFrQixnQkFBaUJoaUMsRUFBTzgvQixLQUFNbUIsTUFL
bkRuRSxFQUFFemMsTUFBUXljLEVBQUUwRixZQUFjMUYsRUFBRXNELGVBQWdCLEdBQVM1OUIsRUFB
UTQ5QixjQUNqRWpDLEVBQU02RCxpQkFBa0IsZUFBZ0JsRixFQUFFc0QsYUFJM0NqQyxFQUFNNkQs
aUJBQ0wsU0FDQWxGLEVBQUVtQixVQUFXLElBQU9uQixFQUFFdUQsUUFBU3ZELEVBQUVtQixVQUFX
LElBQzNDbkIsRUFBRXVELFFBQVN2RCxFQUFFbUIsVUFBVyxLQUNBLE1BQXJCbkIsRUFBRW1CLFVB
QVcsR0FBYyxLQUFPTixHQUFXLFdBQWEsSUFDN0RiLEVBQUV1RCxRQUFTLEtBSWIsS0FBTXorQixJ
QUFLazdCLEdBQUU0RixRQUNadkUsRUFBTTZELGlCQUFrQnBnQyxFQUFHazdCLEVBQUU0RixRQUFT
OWdDLEdBSXZDLElBQUtrN0IsRUFBRTZGLGFBQ0o3RixFQUFFNkYsV0FBV3hqQyxLQUFNcWlDLEVB
QWlCckQsRUFBT3JCLE1BQVEsR0FBU3pkLEdBRzlELE1BQU84ZSxHQUFNZ0UsT0FlZCxJQVhBTCxF
QUFXLFFBR1hKLEVBQWlCOW5CLElBQUtrakIsRUFBRTNGLFVBQ3hCZ0gsRUFBTWgzQixLQUFNMjFC
LEVBQUU4RixTQUNkekUsRUFBTWxpQixLQUFNNmdCLEVBQUVyNUIsT0FHZHU5QixFQUFZOUMsR0FB
K0JSLEdBQVlaLEVBQUd0NkIsRUFBUzI3QixHQUs1RCxDQVNOLEdBUkFBLEVBQU01ZSxXQUFhLEVB
R2QraEIsR0FDSkcsRUFBbUJ0WSxRQUFTLFlBQWNnVixFQUFPckIsSUFJN0N6ZCxFQUNKLE1BQU84
ZSxFQUlIckIsR0FBRXFELE9BQVNyRCxFQUFFN0QsUUFBVSxJQUMzQm1JLEVBQWVsakMsRUFBTytm
LFdBQVksV0FDakNrZ0IsRUFBTWdFLE1BQU8sWUFDWHJGLEVBQUU3RCxTQUdOLEtBQ0M1WixHQUFZ
LEVBQ1oyaEIsRUFBVTZCLEtBQU1qQixFQUFnQno2QixHQUMvQixNQUFRMEQsR0FHVCxHQUFLd1Us
RUFDSixLQUFNeFUsRUFJUDFELE1BQVUwRCxRQWhDWDFELE1BQVUsZUFxQ1gsU0FBU0EsR0FBTSs2
QixFQUFRWSxFQUFrQmpFLEVBQVc2RCxHQUNuRCxHQUFJcEQsR0FBV3NELEVBQVNuL0IsRUFBTzQ3
QixFQUFVMEQsRUFDeENYLEVBQWFVLENBR1R6akIsS0FJTEEsR0FBWSxFQUdQK2hCLEdBQ0psakMs
RUFBT2c3QixhQUFja0ksR0FLdEJKLEVBQVk3OUIsT0FHWis5QixFQUF3QndCLEdBQVcsR0FHbkN2
RSxFQUFNNWUsV0FBYTJpQixFQUFTLEVBQUksRUFBSSxFQUdwQzVDLEVBQVk0QyxHQUFVLEtBQU9B
LEVBQVMsS0FBa0IsTUFBWEEsRUFHeENyRCxJQUNKUSxFQUFXVCxHQUFxQjlCLEVBQUdxQixFQUFP
VSxJQUkzQ1EsRUFBV0QsR0FBYXRDLEVBQUd1QyxFQUFVbEIsRUFBT21CLEdBR3ZDQSxHQUdDeEMs
RUFBRTJGLGFBQ05NLEVBQVc1RSxFQUFNZSxrQkFBbUIsaUJBQy9CNkQsSUFDSi9pQyxFQUFPNi9C
LGFBQWNvQixHQUFhOEIsR0FFbkNBLEVBQVc1RSxFQUFNZSxrQkFBbUIsUUFDL0I2RCxJQUNKL2lD
LEVBQU84L0IsS0FBTW1CLEdBQWE4QixJQUtaLE1BQVhiLEdBQTZCLFNBQVhwRixFQUFFajVCLEtB
Q3hCdStCLEVBQWEsWUFHUyxNQUFYRixFQUNYRSxFQUFhLGVBSWJBLEVBQWEvQyxFQUFTL2lCLE1B
Q3RCc21CLEVBQVV2RCxFQUFTaGYsS0FDbkI1YyxFQUFRNDdCLEVBQVM1N0IsTUFDakI2N0IsR0FB
YTc3QixLQUtkQSxFQUFRMitCLEdBQ0hGLEdBQVdFLElBQ2ZBLEVBQWEsUUFDUkYsRUFBUyxJQUNi
QSxFQUFTLEtBTVovRCxFQUFNK0QsT0FBU0EsRUFDZi9ELEVBQU1pRSxZQUFlVSxHQUFvQlYsR0FB
ZSxHQUduRDlDLEVBQ0o5aUIsRUFBU21CLFlBQWE2akIsR0FBbUJvQixFQUFTUixFQUFZakUsSUFF
OUQzaEIsRUFBU3VCLFdBQVl5akIsR0FBbUJyRCxFQUFPaUUsRUFBWTMrQixJQUk1RDA2QixFQUFN
d0QsV0FBWUEsR0FDbEJBLEVBQWF4K0IsT0FFUm0rQixHQUNKRyxFQUFtQnRZLFFBQVNtVyxFQUFZ
LGNBQWdCLGFBQ3JEbkIsRUFBT3JCLEVBQUd3QyxFQUFZc0QsRUFBVW4vQixJQUlwQ2krQixFQUFp
Qm5tQixTQUFVaW1CLEdBQW1CckQsRUFBT2lFLElBRWhEZCxJQUNKRyxFQUFtQnRZLFFBQVMsZ0JB
QWtCZ1YsRUFBT3JCLE1BRzNDOThCLEVBQU80L0IsUUFDaEI1L0IsRUFBT3NtQixNQUFNNkMsUUFB
UyxjQUt6QixNQUFPZ1YsSUFHUjZFLFFBQVMsU0FBVWpELEVBQUsxZixFQUFNNWUsR0FDN0IsTUFB
T3pCLEdBQU9pQixJQUFLOCtCLEVBQUsxZixFQUFNNWUsRUFBVSxTQUd6Q3doQyxVQUFXLFNBQVVs
RCxFQUFLdCtCLEdBQ3pCLE1BQU96QixHQUFPaUIsSUFBSzgrQixFQUFLNThCLE9BQVcxQixFQUFV
LGFBSS9DekIsRUFBT3dCLE1BQVEsTUFBTyxRQUFVLFNBQVVJLEVBQUdtYSxHQUM1Qy9iLEVBQVEr
YixHQUFXLFNBQVVna0IsRUFBSzFmLEVBQU01ZSxFQUFVb0MsR0FVakQsTUFQSzdELEdBQU9nRCxX
QUFZcWQsS0FDdkJ4YyxFQUFPQSxHQUFRcEMsRUFDZkEsRUFBVzRlLEVBQ1hBLEVBQU9sZCxRQUlE
bkQsRUFBTytnQyxLQUFNL2dDLEVBQU91QyxRQUMxQnc5QixJQUFLQSxFQUNMbDhCLEtBQU1rWSxF
QUNOaWlCLFNBQVVuNkIsRUFDVndjLEtBQU1BLEVBQ051aUIsUUFBU25oQyxHQUNQekIsRUFBT2lE
LGNBQWU4OEIsSUFBU0EsT0FLcEMvL0IsRUFBT3N0QixTQUFXLFNBQVV5UyxHQUMzQixNQUFPLy9C
LEdBQU8rZ0MsTUFDYmhCLElBQUtBLEVBR0xsOEIsS0FBTSxNQUNObTZCLFNBQVUsU0FDVnp4QixP
QUFPLEVBQ1A0ekIsT0FBTyxFQUNQeGlDLFFBQVEsRUFDUnVsQyxVQUFVLEtBS1psakMsRUFBT0cs
R0FBR29DLFFBQ1Q0Z0MsUUFBUyxTQUFVOVYsR0FDbEIsR0FBSXBJLEVBeUJKLE9BdkJLOW1CLE1B
QU0sS0FDTDZCLEVBQU9nRCxXQUFZcXFCLEtBQ3ZCQSxFQUFPQSxFQUFLbHVCLEtBQU1oQixLQUFN
LEtBSXpCOG1CLEVBQU9qbEIsRUFBUXF0QixFQUFNbHZCLEtBQU0sR0FBSW1OLGVBQWdCdEosR0FB
SSxHQUFJYSxPQUFPLEdBRXpEMUUsS0FBTSxHQUFJMEIsWUFDZG9sQixFQUFLZ0osYUFBYzl2QixL
QUFNLElBRzFCOG1CLEVBQUt2akIsSUFBSyxXQUNULEdBQUlDLEdBQU94RCxJQUVYLE9BQVF3RCxF
QUFLeWhDLGtCQUNaemhDLEVBQU9BLEVBQUt5aEMsaUJBR2IsT0FBT3poQyxLQUNKb3NCLE9BQVE1
dkIsT0FHTkEsTUFHUmtsQyxVQUFXLFNBQVVoVyxHQUNwQixNQUFLcnRCLEdBQU9nRCxXQUFZcXFC
LEdBQ2hCbHZCLEtBQUtxRCxLQUFNLFNBQVVJLEdBQzNCNUIsRUFBUTdCLE1BQU9rbEMsVUFBV2hX
LEVBQUtsdUIsS0FBTWhCLEtBQU15RCxNQUl0Q3pELEtBQUtxRCxLQUFNLFdBQ2pCLEdBQUlzWCxH
QUFPOVksRUFBUTdCLE1BQ2xCa2IsRUFBV1AsRUFBS08sVUFFWkEsR0FBU3RZLE9BQ2JzWSxFQUFT
OHBCLFFBQVM5VixHQUdsQnZVLEVBQUtpVixPQUFRVixNQUtoQnBJLEtBQU0sU0FBVW9JLEdBQ2Ys
R0FBSXJxQixHQUFhaEQsRUFBT2dELFdBQVlxcUIsRUFFcEMsT0FBT2x2QixNQUFLcUQsS0FBTSxT
QUFVSSxHQUMzQjVCLEVBQVE3QixNQUFPZ2xDLFFBQVNuZ0MsRUFBYXFxQixFQUFLbHVCLEtBQU1o
QixLQUFNeUQsR0FBTXlyQixNQUk5RGlXLE9BQVEsU0FBVXJqQyxHQUlqQixNQUhBOUIsTUFBS21V
LE9BQVFyUyxHQUFXNlMsSUFBSyxRQUFTdFIsS0FBTSxXQUMzQ3hCLEVBQVE3QixNQUFPaXdCLFlB
QWFqd0IsS0FBS3dNLGNBRTNCeE0sUUFLVDZCLEVBQU9nUSxLQUFLOUgsUUFBUSt0QixPQUFTLFNB
QVV0MEIsR0FDdEMsT0FBUTNCLEVBQU9nUSxLQUFLOUgsUUFBUXE3QixRQUFTNWhDLElBRXRDM0Is
RUFBT2dRLEtBQUs5SCxRQUFRcTdCLFFBQVUsU0FBVTVoQyxHQUN2QyxTQUFXQSxFQUFLNmhDLGFB
QWU3aEMsRUFBSzhoQyxjQUFnQjloQyxFQUFLbXdCLGlCQUFpQi93QixTQU0zRWYsRUFBTzIrQixh
QUFhK0UsSUFBTSxXQUN6QixJQUNDLE1BQU8sSUFBSXhsQyxHQUFPeWxDLGVBQ2pCLE1BQVE5NEIs
S0FHWCxJQUFJKzRCLEtBR0ZDLEVBQUcsSUFJSEMsS0FBTSxLQUVQQyxHQUFlL2pDLEVBQU8yK0Is
YUFBYStFLEtBRXBDdGtDLEdBQVE0a0MsT0FBU0QsSUFBa0IsbUJBQXFCQSxJQUN4RDNrQyxFQUFR
MmhDLEtBQU9nRCxLQUFpQkEsR0FFaEMvakMsRUFBTzhnQyxjQUFlLFNBQVV0K0IsR0FDL0IsR0FB
SWYsR0FBVXdpQyxDQUdkLElBQUs3a0MsRUFBUTRrQyxNQUFRRCxLQUFpQnZoQyxFQUFROC9CLFlB
QzdDLE9BQ0NPLEtBQU0sU0FBVUgsRUFBU3ZMLEdBQ3hCLEdBQUl2MUIsR0FDSDhoQyxFQUFNbGhD
LEVBQVFraEMsS0FXZixJQVRBQSxFQUFJUSxLQUNIMWhDLEVBQVFxQixLQUNSckIsRUFBUXU5QixJ
QUNSdjlCLEVBQVEyOUIsTUFDUjM5QixFQUFRMmhDLFNBQ1IzaEMsRUFBUW1TLFVBSUpuUyxFQUFR
NGhDLFVBQ1osSUFBTXhpQyxJQUFLWSxHQUFRNGhDLFVBQ2xCVixFQUFLOWhDLEdBQU1ZLEVBQVE0
aEMsVUFBV3hpQyxFQUszQlksR0FBUXk4QixVQUFZeUUsRUFBSXpCLGtCQUM1QnlCLEVBQUl6Qixp
QkFBa0J6L0IsRUFBUXk4QixVQVF6Qno4QixFQUFROC9CLGFBQWdCSSxFQUFTLHNCQUN0Q0EsRUFB
UyxvQkFBdUIsaUJBSWpDLEtBQU05Z0MsSUFBSzhnQyxHQUNWZ0IsRUFBSTFCLGlCQUFrQnBnQyxF
QUFHOGdDLEVBQVM5Z0MsR0FJbkNILEdBQVcsU0FBVW9DLEdBQ3BCLE1BQU8sWUFDRHBDLElBQ0pB
LEVBQVd3aUMsRUFBZ0JQLEVBQUlXLE9BQzlCWCxFQUFJWSxRQUFVWixFQUFJYSxRQUFVYixFQUFJ
YyxtQkFBcUIsS0FFeEMsVUFBVDNnQyxFQUNKNi9CLEVBQUl2QixRQUNnQixVQUFUdCtCLEVBS2dC
LGdCQUFmNi9CLEdBQUl4QixPQUNmL0ssRUFBVSxFQUFHLFNBRWJBLEVBR0N1TSxFQUFJeEIsT0FD
SndCLEVBQUl0QixZQUlOakwsRUFDQ3lNLEdBQWtCRixFQUFJeEIsU0FBWXdCLEVBQUl4QixPQUN0
Q3dCLEVBQUl0QixXQUsrQixVQUFqQ3NCLEVBQUllLGNBQWdCLFNBQ00sZ0JBQXJCZixHQUFJZ0Is
Y0FDUkMsT0FBUWpCLEVBQUlyRSxXQUNaMy9CLEtBQU1na0MsRUFBSWdCLGNBQ2JoQixFQUFJM0Is
NEJBUVQyQixFQUFJVyxPQUFTNWlDLElBQ2J3aUMsRUFBZ0JQLEVBQUlZLFFBQVU3aUMsRUFBVSxT
QUtuQjBCLFNBQWhCdWdDLEVBQUlhLFFBQ1JiLEVBQUlhLFFBQVVOLEVBRWRQLEVBQUljLG1CQUFx
QixXQUdBLElBQW5CZCxFQUFJbmtCLFlBTVJyaEIsRUFBTytmLFdBQVksV0FDYnhjLEdBQ0p3aUMs
T0FRTHhpQyxFQUFXQSxFQUFVLFFBRXJCLEtBR0NpaUMsRUFBSWIsS0FBTXJnQyxFQUFRZ2dDLFlB
QWNoZ0MsRUFBUTZkLE1BQVEsTUFDL0MsTUFBUXhWLEdBR1QsR0FBS3BKLEVBQ0osS0FBTW9KLEtB
S1RzM0IsTUFBTyxXQUNEMWdDLEdBQ0pBLFFBV0x6QixFQUFPNmdDLGNBQWUsU0FBVS9ELEdBQzFC
QSxFQUFFd0YsY0FDTnhGLEVBQUV6akIsU0FBUzdaLFFBQVMsS0FLdEJRLEVBQU8yZ0MsV0FDTk4s
U0FDQzdnQyxPQUFRLDZGQUdUNlosVUFDQzdaLE9BQVEsMkJBRVQyL0IsWUFDQ3lGLGNBQWUsU0FB
VWxsQyxHQUV4QixNQURBTSxHQUFPc0UsV0FBWTVFLEdBQ1pBLE1BTVZNLEVBQU82Z0MsY0FBZSxT
QUFVLFNBQVUvRCxHQUN4QjM1QixTQUFaMjVCLEVBQUV2d0IsUUFDTnV3QixFQUFFdndCLE9BQVEs
R0FFTnV3QixFQUFFd0YsY0FDTnhGLEVBQUVqNUIsS0FBTyxTQUtYN0QsRUFBTzhnQyxjQUFlLFNB
QVUsU0FBVWhFLEdBR3pDLEdBQUtBLEVBQUV3RixZQUFjLENBQ3BCLEdBQUk5aUMsR0FBUWlDLENB
Q1osUUFDQ29oQyxLQUFNLFNBQVVuNUIsRUFBR3l0QixHQUNsQjMzQixFQUFTUSxFQUFRLFlBQWFz
Z0IsTUFDN0J1a0IsUUFBUy9ILEVBQUVnSSxjQUNYcGlDLElBQUtvNkIsRUFBRWlELE1BQ0o3WixH
QUNILGFBQ0F6a0IsRUFBVyxTQUFVc2pDLEdBQ3BCdmxDLEVBQU80YixTQUNQM1osRUFBVyxLQUNO
c2pDLEdBQ0o1TixFQUF1QixVQUFiNE4sRUFBSWxoQyxLQUFtQixJQUFNLElBQUtraEMsRUFBSWxo
QyxRQU1uRDlGLEVBQVM0QixLQUFLQyxZQUFhSixFQUFRLEtBRXBDMmlDLE1BQU8sV0FDRDFnQyxH
QUNKQSxRQVVMLElBQUl1akMsT0FDSEMsR0FBUyxtQkFHVmpsQyxHQUFPMmdDLFdBQ051RSxNQUFP
LFdBQ1BDLGNBQWUsV0FDZCxHQUFJMWpDLEdBQVd1akMsR0FBYXI5QixPQUFXM0gsRUFBT29ELFFB
QVUsSUFBUTg0QixJQUVoRSxPQURBLzlCLE1BQU1zRCxJQUFhLEVBQ1pBLEtBS1R6QixFQUFPNmdD
LGNBQWUsYUFBYyxTQUFVL0QsRUFBR3NJLEVBQWtCakgsR0FFbEUsR0FBSWtILEdBQWNDLEVBQWFD
LEVBQzlCQyxFQUFXMUksRUFBRW9JLFNBQVUsSUFBV0QsR0FBT3A1QixLQUFNaXhCLEVBQUVpRCxL
QUNoRCxNQUNrQixnQkFBWGpELEdBQUV6YyxNQUU2QyxLQURuRHljLEVBQUVzRCxhQUFlLElBQ2pC
eGhDLFFBQVMsc0NBQ1hxbUMsR0FBT3A1QixLQUFNaXhCLEVBQUV6YyxPQUFVLE9BSTVCLElBQUtt
bEIsR0FBaUMsVUFBckIxSSxFQUFFbUIsVUFBVyxHQThEN0IsTUEzREFvSCxHQUFldkksRUFBRXFJ
LGNBQWdCbmxDLEVBQU9nRCxXQUFZODVCLEVBQUVxSSxlQUNyRHJJLEVBQUVxSSxnQkFDRnJJLEVB
QUVxSSxjQUdFSyxFQUNKMUksRUFBRzBJLEdBQWExSSxFQUFHMEksR0FBV2ppQyxRQUFTMGhDLEdB
QVEsS0FBT0ksR0FDM0N2SSxFQUFFb0ksU0FBVSxJQUN2QnBJLEVBQUVpRCxNQUFTNUQsR0FBT3R3
QixLQUFNaXhCLEVBQUVpRCxLQUFRLElBQU0sS0FBUWpELEVBQUVvSSxNQUFRLElBQU1HLEdBSWpF
dkksRUFBRXFDLFdBQVksZUFBa0IsV0FJL0IsTUFITW9HLElBQ0x2bEMsRUFBT3lELE1BQU80aEMs
RUFBZSxtQkFFdkJFLEVBQW1CLElBSTNCekksRUFBRW1CLFVBQVcsR0FBTSxPQUduQnFILEVBQWNw
bkMsRUFBUW1uQyxHQUN0Qm5uQyxFQUFRbW5DLEdBQWlCLFdBQ3hCRSxFQUFvQnpqQyxXQUlyQnE4
QixFQUFNNWhCLE9BQVEsV0FHUXBaLFNBQWhCbWlDLEVBQ0p0bEMsRUFBUTlCLEdBQVM2N0IsV0FB
WXNMLEdBSTdCbm5DLEVBQVFtbkMsR0FBaUJDLEVBSXJCeEksRUFBR3VJLEtBR1B2SSxFQUFFcUks
Y0FBZ0JDLEVBQWlCRCxjQUduQ0gsR0FBYXJtQyxLQUFNMG1DLElBSWZFLEdBQXFCdmxDLEVBQU9n
RCxXQUFZc2lDLElBQzVDQSxFQUFhQyxFQUFtQixJQUdqQ0EsRUFBb0JELEVBQWNuaUMsU0FJNUIs
V0FZVC9ELEVBQVFxbUMsbUJBQXFCLFdBQzVCLEdBQUl0aUIsR0FBT3BsQixFQUFTMm5DLGVBQWVE
LG1CQUFvQixJQUFLdGlCLElBRTVELE9BREFBLEdBQUtwVSxVQUFZLDZCQUNpQixJQUEzQm9VLEVB
QUt4WSxXQUFXNUosVUFReEJmLEVBQU9nWixVQUFZLFNBQVVxSCxFQUFNbmdCLEVBQVN5bEMsR0FD
M0MsR0FBcUIsZ0JBQVR0bEIsR0FDWCxRQUV1QixrQkFBWm5nQixLQUNYeWxDLEVBQWN6bEMsRUFD
ZEEsR0FBVSxFQUdYLElBQUlvVixHQUFNc3dCLEVBQVE5Z0IsQ0F3QmxCLE9BdEJNNWtCLEtBSUFk
LEVBQVFxbUMsb0JBQ1p2bEMsRUFBVW5DLEVBQVMybkMsZUFBZUQsbUJBQW9CLElBS3REbndCLEVB
QU9wVixFQUFRVCxjQUFlLFFBQzlCNlYsRUFBSzNCLEtBQU81VixFQUFTdVYsU0FBU0ssS0FDOUJ6
VCxFQUFRUCxLQUFLQyxZQUFhMFYsSUFFMUJwVixFQUFVbkMsR0FJWjZuQyxFQUFTbHRCLEVBQVdu
TixLQUFNOFUsR0FDMUJ5RSxHQUFXNmdCLE1BR05DLEdBQ0sxbEMsRUFBUVQsY0FBZW1tQyxFQUFR
LE1BR3pDQSxFQUFTL2dCLElBQWlCeEUsR0FBUW5nQixFQUFTNGtCLEdBRXRDQSxHQUFXQSxFQUFR
L2pCLFFBQ3ZCZixFQUFROGtCLEdBQVUxSixTQUdacGIsRUFBT3NCLFNBQVdza0MsRUFBT2o3Qixj
QU9qQzNLLEVBQU9HLEdBQUc4b0IsS0FBTyxTQUFVOFcsRUFBSzhGLEVBQVFwa0MsR0FDdkMsR0FB
SXhCLEdBQVU0RCxFQUFNdzdCLEVBQ25Cdm1CLEVBQU8zYSxLQUNQb29CLEVBQU13WixFQUFJbmhD
LFFBQVMsSUFzRHBCLE9BcERLMm5CLFFBQ0p0bUIsRUFBV282QixHQUFrQjBGLEVBQUl0aEMsTUFB
TzhuQixJQUN4Q3daLEVBQU1BLEVBQUl0aEMsTUFBTyxFQUFHOG5CLElBSWhCdm1CLEVBQU9nRCxX
QUFZNmlDLElBR3ZCcGtDLEVBQVdva0MsRUFDWEEsRUFBUzFpQyxRQUdFMGlDLEdBQTRCLGdCQUFY
QSxLQUM1QmhpQyxFQUFPLFFBSUhpVixFQUFLL1gsT0FBUyxHQUNsQmYsRUFBTytnQyxNQUNOaEIs
SUFBS0EsRUFLTGw4QixLQUFNQSxHQUFRLE1BQ2RtNkIsU0FBVSxPQUNWM2QsS0FBTXdsQixJQUNI
MStCLEtBQU0sU0FBVXU5QixHQUduQnJGLEVBQVd2OUIsVUFFWGdYLEVBQUt1VSxLQUFNcHRCLEVB
SVZELEVBQVEsU0FBVSt0QixPQUFRL3RCLEVBQU9nWixVQUFXMHJCLElBQWlCOTFCLEtBQU0zTyxH
QUduRXlrQyxLQUtFbm9CLE9BQVE5YSxHQUFZLFNBQVUwOEIsRUFBTytELEdBQ3hDcHBCLEVBQUt0
WCxLQUFNLFdBQ1ZDLEVBQVNJLE1BQU8xRCxLQUFNa2hDLElBQWNsQixFQUFNdUcsYUFBY3hDLEVB
QVEvRCxRQUs1RGhnQyxNQU9SNkIsRUFBT3dCLE1BQ04sWUFDQSxXQUNBLGVBQ0EsWUFDQSxjQUNB
LFlBQ0UsU0FBVUksRUFBR2lDLEdBQ2Y3RCxFQUFPRyxHQUFJMEQsR0FBUyxTQUFVMUQsR0FDN0Is
TUFBT2hDLE1BQUsrbkIsR0FBSXJpQixFQUFNMUQsTUFPeEJILEVBQU9nUSxLQUFLOUgsUUFBUTQ5
QixTQUFXLFNBQVVua0MsR0FDeEMsTUFBTzNCLEdBQU9pRixLQUFNakYsRUFBT2k0QixPQUFRLFNB
QVU5M0IsR0FDNUMsTUFBT3dCLEtBQVN4QixFQUFHd0IsT0FDaEJaLE9BU0wsU0FBU2dsQyxJQUFX
cGtDLEdBQ25CLE1BQU8zQixHQUFPK0QsU0FBVXBDLEdBQVNBLEVBQXlCLElBQWxCQSxFQUFLaUos
VUFBa0JqSixFQUFLdU0sWUFHckVsTyxFQUFPZ21DLFFBQ05DLFVBQVcsU0FBVXRrQyxFQUFNYSxF
QUFTWixHQUNuQyxHQUFJc2tDLEdBQWFDLEVBQVNDLEVBQVdDLEVBQVFDLEVBQVdDLEVBQVlDLEVB
Q25FNVYsRUFBVzV3QixFQUFPbWlCLElBQUt4Z0IsRUFBTSxZQUM3QjhrQyxFQUFVem1DLEVBQVEy
QixHQUNsQjZuQixJQUdpQixZQUFib0gsSUFDSmp2QixFQUFLc2dCLE1BQU0yTyxTQUFXLFlBR3ZC
MFYsRUFBWUcsRUFBUVQsU0FDcEJJLEVBQVlwbUMsRUFBT21pQixJQUFLeGdCLEVBQU0sT0FDOUI0
a0MsRUFBYXZtQyxFQUFPbWlCLElBQUt4Z0IsRUFBTSxRQUMvQjZrQyxHQUFtQyxhQUFiNVYsR0FB
d0MsVUFBYkEsS0FDOUN3VixFQUFZRyxHQUFhM25DLFFBQVMsV0FJaEM0bkMsR0FDSk4sRUFBY08s
RUFBUTdWLFdBQ3RCeVYsRUFBU0gsRUFBWS8zQixJQUNyQmc0QixFQUFVRCxFQUFZalQsT0FHdEJv
VCxFQUFTbmlDLFdBQVlraUMsSUFBZSxFQUNwQ0QsRUFBVWppQyxXQUFZcWlDLElBQWdCLEdBR2xD
dm1DLEVBQU9nRCxXQUFZUixLQUd2QkEsRUFBVUEsRUFBUXJELEtBQU13QyxFQUFNQyxFQUFHNUIs
RUFBT3VDLFVBQVkrakMsS0FHakMsTUFBZjlqQyxFQUFRMkwsTUFDWnFiLEVBQU1yYixJQUFRM0ws
RUFBUTJMLElBQU1tNEIsRUFBVW40QixJQUFRazRCLEdBRTFCLE1BQWhCN2pDLEVBQVF5d0IsT0FD
WnpKLEVBQU15SixLQUFTendCLEVBQVF5d0IsS0FBT3FULEVBQVVyVCxLQUFTa1QsR0FHN0MsU0FB
VzNqQyxHQUNmQSxFQUFRa2tDLE1BQU12bkMsS0FBTXdDLEVBQU02bkIsR0FHMUJpZCxFQUFRdGtC
LElBQUtxSCxLQUtoQnhwQixFQUFPRyxHQUFHb0MsUUFDVHlqQyxPQUFRLFNBQVV4akMsR0FHakIs
R0FBS1YsVUFBVWYsT0FDZCxNQUFtQm9DLFVBQVpYLEVBQ05yRSxLQUNBQSxLQUFLcUQsS0FBTSxT
QUFVSSxHQUNwQjVCLEVBQU9nbUMsT0FBT0MsVUFBVzluQyxLQUFNcUUsRUFBU1osSUFJM0MsSUFB
SWdGLEdBQVMrL0IsRUFBS0MsRUFBTXJuQyxFQUN2Qm9DLEVBQU94RCxLQUFNLEVBRWQsSUFBTXdE
LEVBT04sTUFBTUEsR0FBS213QixpQkFBaUIvd0IsUUFJNUI2bEMsRUFBT2psQyxFQUFLb3dCLHdC
QUdQNlUsRUFBS25YLE9BQVNtWCxFQUFLdlIsUUFDdkI5MUIsRUFBTW9DLEVBQUsySixjQUNYcTdC
LEVBQU1aLEdBQVd4bUMsR0FDakJxSCxFQUFVckgsRUFBSXVPLGlCQUdiSyxJQUFLeTRCLEVBQUt6
NEIsSUFBTXc0QixFQUFJRSxZQUFjamdDLEVBQVFrZ0MsVUFDMUM3VCxLQUFNMlQsRUFBSzNULEtB
QU8wVCxFQUFJSSxZQUFjbmdDLEVBQVFvZ0MsYUFLdkNKLElBbEJHejRCLElBQUssRUFBRzhrQixL
QUFNLElBcUJ6QnJDLFNBQVUsV0FDVCxHQUFNenlCLEtBQU0sR0FBWixDQUlBLEdBQUk4b0MsR0FB
Y2pCLEVBQ2pCcmtDLEVBQU94RCxLQUFNLEdBQ2Irb0MsR0FBaUIvNEIsSUFBSyxFQUFHOGtCLEtB
QU0sRUE0QmhDLE9BeEJ3QyxVQUFuQ2p6QixFQUFPbWlCLElBQUt4Z0IsRUFBTSxZQUd0QnFrQyxF
QUFTcmtDLEVBQUtvd0IseUJBS2RrVixFQUFlOW9DLEtBQUs4b0MsZUFHcEJqQixFQUFTN25DLEtB
QUs2bkMsU0FDUmhtQyxFQUFPeUUsU0FBVXdpQyxFQUFjLEdBQUssVUFDekNDLEVBQWVELEVBQWFq
QixVQUk3QmtCLEdBQ0MvNEIsSUFBSys0QixFQUFhLzRCLElBQU1uTyxFQUFPbWlCLElBQUs4a0Is
RUFBYyxHQUFLLGtCQUFrQixHQUN6RWhVLEtBQU1pVSxFQUFhalUsS0FBT2p6QixFQUFPbWlCLElB
QUs4a0IsRUFBYyxHQUFLLG1CQUFtQixNQU03RTk0QixJQUFLNjNCLEVBQU83M0IsSUFBTSs0QixF
QUFhLzRCLElBQU1uTyxFQUFPbWlCLElBQUt4Z0IsRUFBTSxhQUFhLEdBQ3BFc3hCLEtBQU0rUyxF
QUFPL1MsS0FBT2lVLEVBQWFqVSxLQUFPanpCLEVBQU9taUIsSUFBS3hnQixFQUFNLGNBQWMsTUFj
MUVzbEMsYUFBYyxXQUNiLE1BQU85b0MsTUFBS3VELElBQUssV0FDaEIsR0FBSXVsQyxHQUFlOW9D
LEtBQUs4b0MsWUFFeEIsT0FBUUEsR0FBMkQsV0FBM0NqbkMsRUFBT21pQixJQUFLOGtCLEVBQWMs
WUFDakRBLEVBQWVBLEVBQWFBLFlBRzdCLE9BQU9BLElBQWdCbjVCLFFBTTFCOU4sRUFBT3dCLE1B
QVE2eUIsV0FBWSxjQUFlRCxVQUFXLGVBQWlCLFNBQVVyWSxFQUFRdUUsR0FDdkYsR0FBSW5TLEdB
QU0sZ0JBQWtCbVMsQ0FFNUJ0Z0IsR0FBT0csR0FBSTRiLEdBQVcsU0FBVTVMLEdBQy9CLE1BQU9z
UCxHQUFRdGhCLEtBQU0sU0FBVXdELEVBQU1vYSxFQUFRNUwsR0FDNUMsR0FBSXcyQixHQUFNWixH
QUFXcGtDLEVBRXJCLE9BQWF3QixVQUFSZ04sRUFDR3cyQixFQUFNQSxFQUFLcm1CLEdBQVMzZSxF
QUFNb2EsUUFHN0I0cUIsRUFDSkEsRUFBSVEsU0FDRmg1QixFQUFZdzRCLEVBQUlJLFlBQVY1MkIs
RUFDUGhDLEVBQU1nQyxFQUFNdzJCLEVBQUlFLGFBSWpCbGxDLEVBQU1vYSxHQUFXNUwsSUFFaEI0
TCxFQUFRNUwsRUFBS3JPLFVBQVVmLFdBVTVCZixFQUFPd0IsTUFBUSxNQUFPLFFBQVUsU0FBVUks
RUFBRzBlLEdBQzVDdGdCLEVBQU9neUIsU0FBVTFSLEdBQVNpUSxHQUFjbnhCLEVBQVEwd0IsY0FD
L0MsU0FBVW51QixFQUFNd3VCLEdBQ2YsR0FBS0EsRUFJSixNQUhBQSxHQUFXRCxHQUFRdnVCLEVB
QU0yZSxHQUdsQnVPLEdBQVVoakIsS0FBTXNrQixHQUN0Qm53QixFQUFRMkIsR0FBT2l2QixXQUFZ
dFEsR0FBUyxLQUNwQzZQLE1BUUxud0IsRUFBT3dCLE1BQVE0bEMsT0FBUSxTQUFVQyxNQUFPLFNB
QVcsU0FBVTVrQyxFQUFNb0IsR0FDbEU3RCxFQUFPd0IsTUFBUTJ4QixRQUFTLFFBQVUxd0IsRUFB
TThwQixRQUFTMW9CLEVBQU15akMsR0FBSSxRQUFVN2tDLEdBQ3BFLFNBQVU4a0MsRUFBY0MsR0FH
eEJ4bkMsRUFBT0csR0FBSXFuQyxHQUFhLFNBQVV0VSxFQUFRM3RCLEdBQ3pDLEdBQUltYSxHQUFZ
NWQsVUFBVWYsU0FBWXdtQyxHQUFrQyxpQkFBWHJVLElBQzVEekIsRUFBUThWLElBQWtCclUsS0FB
VyxHQUFRM3RCLEtBQVUsRUFBTyxTQUFXLFNBRTFFLE9BQU9rYSxHQUFRdGhCLEtBQU0sU0FBVXdE
LEVBQU1rQyxFQUFNMEIsR0FDMUMsR0FBSWhHLEVBRUosT0FBS1MsR0FBTytELFNBQVVwQyxHQUdr
QixJQUFoQzZsQyxFQUFTNW9DLFFBQVMsU0FDeEIrQyxFQUFNLFFBQVVjLEdBQ2hCZCxFQUFLNUQs
U0FBUytQLGdCQUFpQixTQUFXckwsR0FJckIsSUFBbEJkLEVBQUtpSixVQUNUckwsRUFBTW9DLEVB
QUttTSxnQkFJSnpLLEtBQUtrdUIsSUFDWDV2QixFQUFLd2hCLEtBQU0sU0FBVzFnQixHQUFRbEQs
RUFBSyxTQUFXa0QsR0FDOUNkLEVBQUt3aEIsS0FBTSxTQUFXMWdCLEdBQVFsRCxFQUFLLFNBQVdr
RCxHQUM5Q2xELEVBQUssU0FBV2tELEtBSURVLFNBQVZvQyxFQUdOdkYsRUFBT21pQixJQUFLeGdC
LEVBQU1rQyxFQUFNNHRCLEdBR3hCenhCLEVBQU9paUIsTUFBT3RnQixFQUFNa0MsRUFBTTBCLEVB
QU9rc0IsSUFDaEM1dEIsRUFBTTZiLEVBQVl3VCxFQUFTL3ZCLE9BQVd1YyxRQU01QzFmLEVBQU9H
LEdBQUdvQyxRQUVUa2xDLEtBQU0sU0FBVXRoQixFQUFPOUYsRUFBTWxnQixHQUM1QixNQUFPaEMs
TUFBSytuQixHQUFJQyxFQUFPLEtBQU05RixFQUFNbGdCLElBRXBDdW5DLE9BQVEsU0FBVXZoQixF
QUFPaG1CLEdBQ3hCLE1BQU9oQyxNQUFLb29CLElBQUtKLEVBQU8sS0FBTWhtQixJQUcvQnduQyxT
QUFVLFNBQVUxbkMsRUFBVWttQixFQUFPOUYsRUFBTWxnQixHQUMxQyxNQUFPaEMsTUFBSytuQixH
QUFJQyxFQUFPbG1CLEVBQVVvZ0IsRUFBTWxnQixJQUV4Q3luQyxXQUFZLFNBQVUzbkMsRUFBVWtt
QixFQUFPaG1CLEdBR3RDLE1BQTRCLEtBQXJCMkIsVUFBVWYsT0FDaEI1QyxLQUFLb29CLElBQUt0
bUIsRUFBVSxNQUNwQjlCLEtBQUtvb0IsSUFBS0osRUFBT2xtQixHQUFZLEtBQU1FLE1BSXRDSCxF
QUFPNm5DLFVBQVlobkIsS0FBS0MsTUFrQkQsa0JBQVhnbkIsU0FBeUJBLE9BQU9DLEtBQzNDRCxP
QUFRLFlBQWMsV0FDckIsTUFBTzluQyxJQU9ULElBR0Nnb0MsSUFBVTlwQyxFQUFPOEIsT0FHakJp
b0MsR0FBSy9wQyxFQUFPZ3FDLENBeUJiLE9BdkJBbG9DLEdBQU9tb0MsV0FBYSxTQUFVcGxDLEdB
UzdCLE1BUks3RSxHQUFPZ3FDLElBQU1sb0MsSUFDakI5QixFQUFPZ3FDLEVBQUlELElBR1BsbEMs
R0FBUTdFLEVBQU84QixTQUFXQSxJQUM5QjlCLEVBQU84QixPQUFTZ29DLElBR1Zob0MsR0FNRjVC
LElBQ0xGLEVBQU84QixPQUFTOUIsRUFBT2dxQyxFQUFJbG9DLEdBT3JCQSIsImZpbGUiOiJqcXVl
cnkubWluLmpzIn0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L2Rpc3QvanF1ZXJ5LnNsaW0uanMg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L2Rpc3QvanF1ZXJ5LnNs
aW0uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOGQzNmJmOWY5OWFhZTg0NTRhYjdiYWEzNTIxOGFhZTAxODZiZGY2
MwotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9q
cXVlcnkvZGlzdC9qcXVlcnkuc2xpbS5qcwpAQCAtMCwwICsxLDgxMDcgQEAKKy8qIQorICogalF1
ZXJ5IEphdmFTY3JpcHQgTGlicmFyeSB2My4xLjEgLWFqYXgsLWFqYXgvanNvbnAsLWFqYXgvbG9h
ZCwtYWpheC9wYXJzZVhNTCwtYWpheC9zY3JpcHQsLWFqYXgvdmFyL2xvY2F0aW9uLC1hamF4L3Zh
ci9ub25jZSwtYWpheC92YXIvcnF1ZXJ5LC1hamF4L3hociwtbWFuaXB1bGF0aW9uL19ldmFsVXJs
LC1ldmVudC9hamF4LC1lZmZlY3RzLC1lZmZlY3RzL2FuaW1hdGVkU2VsZWN0b3IsLWVmZmVjdHMv
VHdlZW4sLWRlcHJlY2F0ZWQKKyAqIGh0dHBzOi8vanF1ZXJ5LmNvbS8KKyAqCisgKiBJbmNsdWRl
cyBTaXp6bGUuanMKKyAqIGh0dHBzOi8vc2l6emxlanMuY29tLworICoKKyAqIENvcHlyaWdodCBq
UXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzCisgKiBSZWxlYXNlZCB1bmRl
ciB0aGUgTUlUIGxpY2Vuc2UKKyAqIGh0dHBzOi8vanF1ZXJ5Lm9yZy9saWNlbnNlCisgKgorICog
RGF0ZTogMjAxNi0wOS0yMlQyMjozMFoKKyAqLworKCBmdW5jdGlvbiggZ2xvYmFsLCBmYWN0b3J5
ICkgeworCisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKCB0eXBlb2YgbW9kdWxlID09PSAi
b2JqZWN0IiAmJiB0eXBlb2YgbW9kdWxlLmV4cG9ydHMgPT09ICJvYmplY3QiICkgeworCisgICAg
ICAgIC8vIEZvciBDb21tb25KUyBhbmQgQ29tbW9uSlMtbGlrZSBlbnZpcm9ubWVudHMgd2hlcmUg
YSBwcm9wZXIgYHdpbmRvd2AKKyAgICAgICAgLy8gaXMgcHJlc2VudCwgZXhlY3V0ZSB0aGUgZmFj
dG9yeSBhbmQgZ2V0IGpRdWVyeS4KKyAgICAgICAgLy8gRm9yIGVudmlyb25tZW50cyB0aGF0IGRv
IG5vdCBoYXZlIGEgYHdpbmRvd2Agd2l0aCBhIGBkb2N1bWVudGAKKyAgICAgICAgLy8gKHN1Y2gg
YXMgTm9kZS5qcyksIGV4cG9zZSBhIGZhY3RvcnkgYXMgbW9kdWxlLmV4cG9ydHMuCisgICAgICAg
IC8vIFRoaXMgYWNjZW50dWF0ZXMgdGhlIG5lZWQgZm9yIHRoZSBjcmVhdGlvbiBvZiBhIHJlYWwg
YHdpbmRvd2AuCisgICAgICAgIC8vIGUuZy4gdmFyIGpRdWVyeSA9IHJlcXVpcmUoImpxdWVyeSIp
KHdpbmRvdyk7CisgICAgICAgIC8vIFNlZSB0aWNrZXQgIzE0NTQ5IGZvciBtb3JlIGluZm8uCisg
ICAgICAgIG1vZHVsZS5leHBvcnRzID0gZ2xvYmFsLmRvY3VtZW50ID8KKyAgICAgICAgICAgIGZh
Y3RvcnkoIGdsb2JhbCwgdHJ1ZSApIDoKKyAgICAgICAgICAgIGZ1bmN0aW9uKCB3ICkgeworICAg
ICAgICAgICAgICAgIGlmICggIXcuZG9jdW1lbnQgKSB7CisgICAgICAgICAgICAgICAgICAgIHRo
cm93IG5ldyBFcnJvciggImpRdWVyeSByZXF1aXJlcyBhIHdpbmRvdyB3aXRoIGEgZG9jdW1lbnQi
ICk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBmYWN0b3J5KCB3
ICk7CisgICAgICAgICAgICB9OworICAgIH0gZWxzZSB7CisgICAgICAgIGZhY3RvcnkoIGdsb2Jh
bCApOworICAgIH0KKworLy8gUGFzcyB0aGlzIGlmIHdpbmRvdyBpcyBub3QgZGVmaW5lZCB5ZXQK
K30gKSggdHlwZW9mIHdpbmRvdyAhPT0gInVuZGVmaW5lZCIgPyB3aW5kb3cgOiB0aGlzLCBmdW5j
dGlvbiggd2luZG93LCBub0dsb2JhbCApIHsKKworLy8gRWRnZSA8PSAxMiAtIDEzKywgRmlyZWZv
eCA8PTE4IC0gNDUrLCBJRSAxMCAtIDExLCBTYWZhcmkgNS4xIC0gOSssIGlPUyA2IC0gOS4xCisv
LyB0aHJvdyBleGNlcHRpb25zIHdoZW4gbm9uLXN0cmljdCBjb2RlIChlLmcuLCBBU1AuTkVUIDQu
NSkgYWNjZXNzZXMgc3RyaWN0IG1vZGUKKy8vIGFyZ3VtZW50cy5jYWxsZWUuY2FsbGVyICh0cmFj
LTEzMzM1KS4gQnV0IGFzIG9mIGpRdWVyeSAzLjAgKDIwMTYpLCBzdHJpY3QgbW9kZSBzaG91bGQg
YmUgY29tbW9uCisvLyBlbm91Z2ggdGhhdCBhbGwgc3VjaCBhdHRlbXB0cyBhcmUgZ3VhcmRlZCBp
biBhIHRyeSBibG9jay4KKyJ1c2Ugc3RyaWN0IjsKKwordmFyIGFyciA9IFtdOworCit2YXIgZG9j
dW1lbnQgPSB3aW5kb3cuZG9jdW1lbnQ7CisKK3ZhciBnZXRQcm90byA9IE9iamVjdC5nZXRQcm90
b3R5cGVPZjsKKwordmFyIHNsaWNlID0gYXJyLnNsaWNlOworCit2YXIgY29uY2F0ID0gYXJyLmNv
bmNhdDsKKwordmFyIHB1c2ggPSBhcnIucHVzaDsKKwordmFyIGluZGV4T2YgPSBhcnIuaW5kZXhP
ZjsKKwordmFyIGNsYXNzMnR5cGUgPSB7fTsKKwordmFyIHRvU3RyaW5nID0gY2xhc3MydHlwZS50
b1N0cmluZzsKKwordmFyIGhhc093biA9IGNsYXNzMnR5cGUuaGFzT3duUHJvcGVydHk7CisKK3Zh
ciBmblRvU3RyaW5nID0gaGFzT3duLnRvU3RyaW5nOworCit2YXIgT2JqZWN0RnVuY3Rpb25TdHJp
bmcgPSBmblRvU3RyaW5nLmNhbGwoIE9iamVjdCApOworCit2YXIgc3VwcG9ydCA9IHt9OworCisK
KworICAgIGZ1bmN0aW9uIERPTUV2YWwoIGNvZGUsIGRvYyApIHsKKyAgICAgICAgZG9jID0gZG9j
IHx8IGRvY3VtZW50OworCisgICAgICAgIHZhciBzY3JpcHQgPSBkb2MuY3JlYXRlRWxlbWVudCgg
InNjcmlwdCIgKTsKKworICAgICAgICBzY3JpcHQudGV4dCA9IGNvZGU7CisgICAgICAgIGRvYy5o
ZWFkLmFwcGVuZENoaWxkKCBzY3JpcHQgKS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKCBzY3JpcHQg
KTsKKyAgICB9CisvKiBnbG9iYWwgU3ltYm9sICovCisvLyBEZWZpbmluZyB0aGlzIGdsb2JhbCBp
biAuZXNsaW50cmMuanNvbiB3b3VsZCBjcmVhdGUgYSBkYW5nZXIgb2YgdXNpbmcgdGhlIGdsb2Jh
bAorLy8gdW5ndWFyZGVkIGluIGFub3RoZXIgcGxhY2UsIGl0IHNlZW1zIHNhZmVyIHRvIGRlZmlu
ZSBnbG9iYWwgb25seSBmb3IgdGhpcyBtb2R1bGUKKworCisKK3ZhcgorICAgIHZlcnNpb24gPSAi
My4xLjEgLWFqYXgsLWFqYXgvanNvbnAsLWFqYXgvbG9hZCwtYWpheC9wYXJzZVhNTCwtYWpheC9z
Y3JpcHQsLWFqYXgvdmFyL2xvY2F0aW9uLC1hamF4L3Zhci9ub25jZSwtYWpheC92YXIvcnF1ZXJ5
LC1hamF4L3hociwtbWFuaXB1bGF0aW9uL19ldmFsVXJsLC1ldmVudC9hamF4LC1lZmZlY3RzLC1l
ZmZlY3RzL2FuaW1hdGVkU2VsZWN0b3IsLWVmZmVjdHMvVHdlZW4sLWRlcHJlY2F0ZWQiLAorCisg
ICAgLy8gRGVmaW5lIGEgbG9jYWwgY29weSBvZiBqUXVlcnkKKyAgICBqUXVlcnkgPSBmdW5jdGlv
biggc2VsZWN0b3IsIGNvbnRleHQgKSB7CisKKyAgICAgICAgLy8gVGhlIGpRdWVyeSBvYmplY3Qg
aXMgYWN0dWFsbHkganVzdCB0aGUgaW5pdCBjb25zdHJ1Y3RvciAnZW5oYW5jZWQnCisgICAgICAg
IC8vIE5lZWQgaW5pdCBpZiBqUXVlcnkgaXMgY2FsbGVkIChqdXN0IGFsbG93IGVycm9yIHRvIGJl
IHRocm93biBpZiBub3QgaW5jbHVkZWQpCisgICAgICAgIHJldHVybiBuZXcgalF1ZXJ5LmZuLmlu
aXQoIHNlbGVjdG9yLCBjb250ZXh0ICk7CisgICAgfSwKKworICAgIC8vIFN1cHBvcnQ6IEFuZHJv
aWQgPD00LjAgb25seQorICAgIC8vIE1ha2Ugc3VyZSB3ZSB0cmltIEJPTSBhbmQgTkJTUAorICAg
IHJ0cmltID0gL15bXHNcdUZFRkZceEEwXSt8W1xzXHVGRUZGXHhBMF0rJC9nLAorCisgICAgLy8g
TWF0Y2hlcyBkYXNoZWQgc3RyaW5nIGZvciBjYW1lbGl6aW5nCisgICAgcm1zUHJlZml4ID0gL14t
bXMtLywKKyAgICByZGFzaEFscGhhID0gLy0oW2Etel0pL2csCisKKyAgICAvLyBVc2VkIGJ5IGpR
dWVyeS5jYW1lbENhc2UgYXMgY2FsbGJhY2sgdG8gcmVwbGFjZSgpCisgICAgZmNhbWVsQ2FzZSA9
IGZ1bmN0aW9uKCBhbGwsIGxldHRlciApIHsKKyAgICAgICAgcmV0dXJuIGxldHRlci50b1VwcGVy
Q2FzZSgpOworICAgIH07CisKK2pRdWVyeS5mbiA9IGpRdWVyeS5wcm90b3R5cGUgPSB7CisKKyAg
ICAvLyBUaGUgY3VycmVudCB2ZXJzaW9uIG9mIGpRdWVyeSBiZWluZyB1c2VkCisgICAganF1ZXJ5
OiB2ZXJzaW9uLAorCisgICAgY29uc3RydWN0b3I6IGpRdWVyeSwKKworICAgIC8vIFRoZSBkZWZh
dWx0IGxlbmd0aCBvZiBhIGpRdWVyeSBvYmplY3QgaXMgMAorICAgIGxlbmd0aDogMCwKKworICAg
IHRvQXJyYXk6IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gc2xpY2UuY2FsbCggdGhpcyAp
OworICAgIH0sCisKKyAgICAvLyBHZXQgdGhlIE50aCBlbGVtZW50IGluIHRoZSBtYXRjaGVkIGVs
ZW1lbnQgc2V0IE9SCisgICAgLy8gR2V0IHRoZSB3aG9sZSBtYXRjaGVkIGVsZW1lbnQgc2V0IGFz
IGEgY2xlYW4gYXJyYXkKKyAgICBnZXQ6IGZ1bmN0aW9uKCBudW0gKSB7CisKKyAgICAgICAgLy8g
UmV0dXJuIGFsbCB0aGUgZWxlbWVudHMgaW4gYSBjbGVhbiBhcnJheQorICAgICAgICBpZiAoIG51
bSA9PSBudWxsICkgeworICAgICAgICAgICAgcmV0dXJuIHNsaWNlLmNhbGwoIHRoaXMgKTsKKyAg
ICAgICAgfQorCisgICAgICAgIC8vIFJldHVybiBqdXN0IHRoZSBvbmUgZWxlbWVudCBmcm9tIHRo
ZSBzZXQKKyAgICAgICAgcmV0dXJuIG51bSA8IDAgPyB0aGlzWyBudW0gKyB0aGlzLmxlbmd0aCBd
IDogdGhpc1sgbnVtIF07CisgICAgfSwKKworICAgIC8vIFRha2UgYW4gYXJyYXkgb2YgZWxlbWVu
dHMgYW5kIHB1c2ggaXQgb250byB0aGUgc3RhY2sKKyAgICAvLyAocmV0dXJuaW5nIHRoZSBuZXcg
bWF0Y2hlZCBlbGVtZW50IHNldCkKKyAgICBwdXNoU3RhY2s6IGZ1bmN0aW9uKCBlbGVtcyApIHsK
KworICAgICAgICAvLyBCdWlsZCBhIG5ldyBqUXVlcnkgbWF0Y2hlZCBlbGVtZW50IHNldAorICAg
ICAgICB2YXIgcmV0ID0galF1ZXJ5Lm1lcmdlKCB0aGlzLmNvbnN0cnVjdG9yKCksIGVsZW1zICk7
CisKKyAgICAgICAgLy8gQWRkIHRoZSBvbGQgb2JqZWN0IG9udG8gdGhlIHN0YWNrIChhcyBhIHJl
ZmVyZW5jZSkKKyAgICAgICAgcmV0LnByZXZPYmplY3QgPSB0aGlzOworCisgICAgICAgIC8vIFJl
dHVybiB0aGUgbmV3bHktZm9ybWVkIGVsZW1lbnQgc2V0CisgICAgICAgIHJldHVybiByZXQ7Cisg
ICAgfSwKKworICAgIC8vIEV4ZWN1dGUgYSBjYWxsYmFjayBmb3IgZXZlcnkgZWxlbWVudCBpbiB0
aGUgbWF0Y2hlZCBzZXQuCisgICAgZWFjaDogZnVuY3Rpb24oIGNhbGxiYWNrICkgeworICAgICAg
ICByZXR1cm4galF1ZXJ5LmVhY2goIHRoaXMsIGNhbGxiYWNrICk7CisgICAgfSwKKworICAgIG1h
cDogZnVuY3Rpb24oIGNhbGxiYWNrICkgeworICAgICAgICByZXR1cm4gdGhpcy5wdXNoU3RhY2so
IGpRdWVyeS5tYXAoIHRoaXMsIGZ1bmN0aW9uKCBlbGVtLCBpICkgeworICAgICAgICAgICAgcmV0
dXJuIGNhbGxiYWNrLmNhbGwoIGVsZW0sIGksIGVsZW0gKTsKKyAgICAgICAgfSApICk7CisgICAg
fSwKKworICAgIHNsaWNlOiBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMucHVzaFN0
YWNrKCBzbGljZS5hcHBseSggdGhpcywgYXJndW1lbnRzICkgKTsKKyAgICB9LAorCisgICAgZmly
c3Q6IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gdGhpcy5lcSggMCApOworICAgIH0sCisK
KyAgICBsYXN0OiBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZXEoIC0xICk7Cisg
ICAgfSwKKworICAgIGVxOiBmdW5jdGlvbiggaSApIHsKKyAgICAgICAgdmFyIGxlbiA9IHRoaXMu
bGVuZ3RoLAorICAgICAgICAgICAgaiA9ICtpICsgKCBpIDwgMCA/IGxlbiA6IDAgKTsKKyAgICAg
ICAgcmV0dXJuIHRoaXMucHVzaFN0YWNrKCBqID49IDAgJiYgaiA8IGxlbiA/IFsgdGhpc1sgaiBd
IF0gOiBbXSApOworICAgIH0sCisKKyAgICBlbmQ6IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1
cm4gdGhpcy5wcmV2T2JqZWN0IHx8IHRoaXMuY29uc3RydWN0b3IoKTsKKyAgICB9LAorCisgICAg
Ly8gRm9yIGludGVybmFsIHVzZSBvbmx5LgorICAgIC8vIEJlaGF2ZXMgbGlrZSBhbiBBcnJheSdz
IG1ldGhvZCwgbm90IGxpa2UgYSBqUXVlcnkgbWV0aG9kLgorICAgIHB1c2g6IHB1c2gsCisgICAg
c29ydDogYXJyLnNvcnQsCisgICAgc3BsaWNlOiBhcnIuc3BsaWNlCit9OworCitqUXVlcnkuZXh0
ZW5kID0galF1ZXJ5LmZuLmV4dGVuZCA9IGZ1bmN0aW9uKCkgeworICAgIHZhciBvcHRpb25zLCBu
YW1lLCBzcmMsIGNvcHksIGNvcHlJc0FycmF5LCBjbG9uZSwKKyAgICAgICAgdGFyZ2V0ID0gYXJn
dW1lbnRzWyAwIF0gfHwge30sCisgICAgICAgIGkgPSAxLAorICAgICAgICBsZW5ndGggPSBhcmd1
bWVudHMubGVuZ3RoLAorICAgICAgICBkZWVwID0gZmFsc2U7CisKKyAgICAvLyBIYW5kbGUgYSBk
ZWVwIGNvcHkgc2l0dWF0aW9uCisgICAgaWYgKCB0eXBlb2YgdGFyZ2V0ID09PSAiYm9vbGVhbiIg
KSB7CisgICAgICAgIGRlZXAgPSB0YXJnZXQ7CisKKyAgICAgICAgLy8gU2tpcCB0aGUgYm9vbGVh
biBhbmQgdGhlIHRhcmdldAorICAgICAgICB0YXJnZXQgPSBhcmd1bWVudHNbIGkgXSB8fCB7fTsK
KyAgICAgICAgaSsrOworICAgIH0KKworICAgIC8vIEhhbmRsZSBjYXNlIHdoZW4gdGFyZ2V0IGlz
IGEgc3RyaW5nIG9yIHNvbWV0aGluZyAocG9zc2libGUgaW4gZGVlcCBjb3B5KQorICAgIGlmICgg
dHlwZW9mIHRhcmdldCAhPT0gIm9iamVjdCIgJiYgIWpRdWVyeS5pc0Z1bmN0aW9uKCB0YXJnZXQg
KSApIHsKKyAgICAgICAgdGFyZ2V0ID0ge307CisgICAgfQorCisgICAgLy8gRXh0ZW5kIGpRdWVy
eSBpdHNlbGYgaWYgb25seSBvbmUgYXJndW1lbnQgaXMgcGFzc2VkCisgICAgaWYgKCBpID09PSBs
ZW5ndGggKSB7CisgICAgICAgIHRhcmdldCA9IHRoaXM7CisgICAgICAgIGktLTsKKyAgICB9CisK
KyAgICBmb3IgKCA7IGkgPCBsZW5ndGg7IGkrKyApIHsKKworICAgICAgICAvLyBPbmx5IGRlYWwg
d2l0aCBub24tbnVsbC91bmRlZmluZWQgdmFsdWVzCisgICAgICAgIGlmICggKCBvcHRpb25zID0g
YXJndW1lbnRzWyBpIF0gKSAhPSBudWxsICkgeworCisgICAgICAgICAgICAvLyBFeHRlbmQgdGhl
IGJhc2Ugb2JqZWN0CisgICAgICAgICAgICBmb3IgKCBuYW1lIGluIG9wdGlvbnMgKSB7CisgICAg
ICAgICAgICAgICAgc3JjID0gdGFyZ2V0WyBuYW1lIF07CisgICAgICAgICAgICAgICAgY29weSA9
IG9wdGlvbnNbIG5hbWUgXTsKKworICAgICAgICAgICAgICAgIC8vIFByZXZlbnQgbmV2ZXItZW5k
aW5nIGxvb3AKKyAgICAgICAgICAgICAgICBpZiAoIHRhcmdldCA9PT0gY29weSApIHsKKyAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgLy8gUmVjdXJzZSBpZiB3ZSdyZSBtZXJnaW5nIHBsYWluIG9iamVjdHMgb3IgYXJyYXlz
CisgICAgICAgICAgICAgICAgaWYgKCBkZWVwICYmIGNvcHkgJiYgKCBqUXVlcnkuaXNQbGFpbk9i
amVjdCggY29weSApIHx8CisgICAgICAgICAgICAgICAgICAgICggY29weUlzQXJyYXkgPSBqUXVl
cnkuaXNBcnJheSggY29weSApICkgKSApIHsKKworICAgICAgICAgICAgICAgICAgICBpZiAoIGNv
cHlJc0FycmF5ICkgeworICAgICAgICAgICAgICAgICAgICAgICAgY29weUlzQXJyYXkgPSBmYWxz
ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsb25lID0gc3JjICYmIGpRdWVyeS5pc0FycmF5
KCBzcmMgKSA/IHNyYyA6IFtdOworCisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBjbG9uZSA9IHNyYyAmJiBqUXVlcnkuaXNQbGFpbk9iamVjdCgg
c3JjICkgPyBzcmMgOiB7fTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgICAgIC8vIE5ldmVyIG1vdmUgb3JpZ2luYWwgb2JqZWN0cywgY2xvbmUgdGhlbQorICAgICAg
ICAgICAgICAgICAgICB0YXJnZXRbIG5hbWUgXSA9IGpRdWVyeS5leHRlbmQoIGRlZXAsIGNsb25l
LCBjb3B5ICk7CisKKyAgICAgICAgICAgICAgICAvLyBEb24ndCBicmluZyBpbiB1bmRlZmluZWQg
dmFsdWVzCisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICggY29weSAhPT0gdW5kZWZpbmVkICkg
eworICAgICAgICAgICAgICAgICAgICB0YXJnZXRbIG5hbWUgXSA9IGNvcHk7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLy8gUmV0dXJu
IHRoZSBtb2RpZmllZCBvYmplY3QKKyAgICByZXR1cm4gdGFyZ2V0OworfTsKKworalF1ZXJ5LmV4
dGVuZCggeworCisgICAgLy8gVW5pcXVlIGZvciBlYWNoIGNvcHkgb2YgalF1ZXJ5IG9uIHRoZSBw
YWdlCisgICAgZXhwYW5kbzogImpRdWVyeSIgKyAoIHZlcnNpb24gKyBNYXRoLnJhbmRvbSgpICku
cmVwbGFjZSggL1xEL2csICIiICksCisKKyAgICAvLyBBc3N1bWUgalF1ZXJ5IGlzIHJlYWR5IHdp
dGhvdXQgdGhlIHJlYWR5IG1vZHVsZQorICAgIGlzUmVhZHk6IHRydWUsCisKKyAgICBlcnJvcjog
ZnVuY3Rpb24oIG1zZyApIHsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCBtc2cgKTsKKyAgICB9
LAorCisgICAgbm9vcDogZnVuY3Rpb24oKSB7fSwKKworICAgIGlzRnVuY3Rpb246IGZ1bmN0aW9u
KCBvYmogKSB7CisgICAgICAgIHJldHVybiBqUXVlcnkudHlwZSggb2JqICkgPT09ICJmdW5jdGlv
biI7CisgICAgfSwKKworICAgIGlzQXJyYXk6IEFycmF5LmlzQXJyYXksCisKKyAgICBpc1dpbmRv
dzogZnVuY3Rpb24oIG9iaiApIHsKKyAgICAgICAgcmV0dXJuIG9iaiAhPSBudWxsICYmIG9iaiA9
PT0gb2JqLndpbmRvdzsKKyAgICB9LAorCisgICAgaXNOdW1lcmljOiBmdW5jdGlvbiggb2JqICkg
eworCisgICAgICAgIC8vIEFzIG9mIGpRdWVyeSAzLjAsIGlzTnVtZXJpYyBpcyBsaW1pdGVkIHRv
CisgICAgICAgIC8vIHN0cmluZ3MgYW5kIG51bWJlcnMgKHByaW1pdGl2ZXMgb3Igb2JqZWN0cykK
KyAgICAgICAgLy8gdGhhdCBjYW4gYmUgY29lcmNlZCB0byBmaW5pdGUgbnVtYmVycyAoZ2gtMjY2
MikKKyAgICAgICAgdmFyIHR5cGUgPSBqUXVlcnkudHlwZSggb2JqICk7CisgICAgICAgIHJldHVy
biAoIHR5cGUgPT09ICJudW1iZXIiIHx8IHR5cGUgPT09ICJzdHJpbmciICkgJiYKKworICAgICAg
ICAgICAgLy8gcGFyc2VGbG9hdCBOYU5zIG51bWVyaWMtY2FzdCBmYWxzZSBwb3NpdGl2ZXMgKCIi
KQorICAgICAgICAgICAgLy8gLi4uYnV0IG1pc2ludGVycHJldHMgbGVhZGluZy1udW1iZXIgc3Ry
aW5ncywgcGFydGljdWxhcmx5IGhleCBsaXRlcmFscyAoIjB4Li4uIikKKyAgICAgICAgICAgIC8v
IHN1YnRyYWN0aW9uIGZvcmNlcyBpbmZpbml0aWVzIHRvIE5hTgorICAgICAgICAgICAgIWlzTmFO
KCBvYmogLSBwYXJzZUZsb2F0KCBvYmogKSApOworICAgIH0sCisKKyAgICBpc1BsYWluT2JqZWN0
OiBmdW5jdGlvbiggb2JqICkgeworICAgICAgICB2YXIgcHJvdG8sIEN0b3I7CisKKyAgICAgICAg
Ly8gRGV0ZWN0IG9idmlvdXMgbmVnYXRpdmVzCisgICAgICAgIC8vIFVzZSB0b1N0cmluZyBpbnN0
ZWFkIG9mIGpRdWVyeS50eXBlIHRvIGNhdGNoIGhvc3Qgb2JqZWN0cworICAgICAgICBpZiAoICFv
YmogfHwgdG9TdHJpbmcuY2FsbCggb2JqICkgIT09ICJbb2JqZWN0IE9iamVjdF0iICkgeworICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgcHJvdG8gPSBnZXRQ
cm90byggb2JqICk7CisKKyAgICAgICAgLy8gT2JqZWN0cyB3aXRoIG5vIHByb3RvdHlwZSAoZS5n
LiwgYE9iamVjdC5jcmVhdGUoIG51bGwgKWApIGFyZSBwbGFpbgorICAgICAgICBpZiAoICFwcm90
byApIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgLy8g
T2JqZWN0cyB3aXRoIHByb3RvdHlwZSBhcmUgcGxhaW4gaWZmIHRoZXkgd2VyZSBjb25zdHJ1Y3Rl
ZCBieSBhIGdsb2JhbCBPYmplY3QgZnVuY3Rpb24KKyAgICAgICAgQ3RvciA9IGhhc093bi5jYWxs
KCBwcm90bywgImNvbnN0cnVjdG9yIiApICYmIHByb3RvLmNvbnN0cnVjdG9yOworICAgICAgICBy
ZXR1cm4gdHlwZW9mIEN0b3IgPT09ICJmdW5jdGlvbiIgJiYgZm5Ub1N0cmluZy5jYWxsKCBDdG9y
ICkgPT09IE9iamVjdEZ1bmN0aW9uU3RyaW5nOworICAgIH0sCisKKyAgICBpc0VtcHR5T2JqZWN0
OiBmdW5jdGlvbiggb2JqICkgeworCisgICAgICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNl
ZC12YXJzICovCisgICAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZXNsaW50L2VzbGlu
dC9pc3N1ZXMvNjEyNQorICAgICAgICB2YXIgbmFtZTsKKworICAgICAgICBmb3IgKCBuYW1lIGlu
IG9iaiApIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9LAorCisgICAgdHlwZTogZnVuY3Rpb24oIG9iaiApIHsKKyAgICAg
ICAgaWYgKCBvYmogPT0gbnVsbCApIHsKKyAgICAgICAgICAgIHJldHVybiBvYmogKyAiIjsKKyAg
ICAgICAgfQorCisgICAgICAgIC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD0yLjMgb25seSAoZnVuY3Rp
b25pc2ggUmVnRXhwKQorICAgICAgICByZXR1cm4gdHlwZW9mIG9iaiA9PT0gIm9iamVjdCIgfHwg
dHlwZW9mIG9iaiA9PT0gImZ1bmN0aW9uIiA/CisgICAgICAgICAgICBjbGFzczJ0eXBlWyB0b1N0
cmluZy5jYWxsKCBvYmogKSBdIHx8ICJvYmplY3QiIDoKKyAgICAgICAgICAgIHR5cGVvZiBvYmo7
CisgICAgfSwKKworICAgIC8vIEV2YWx1YXRlcyBhIHNjcmlwdCBpbiBhIGdsb2JhbCBjb250ZXh0
CisgICAgZ2xvYmFsRXZhbDogZnVuY3Rpb24oIGNvZGUgKSB7CisgICAgICAgIERPTUV2YWwoIGNv
ZGUgKTsKKyAgICB9LAorCisgICAgLy8gQ29udmVydCBkYXNoZWQgdG8gY2FtZWxDYXNlOyB1c2Vk
IGJ5IHRoZSBjc3MgYW5kIGRhdGEgbW9kdWxlcworICAgIC8vIFN1cHBvcnQ6IElFIDw9OSAtIDEx
LCBFZGdlIDEyIC0gMTMKKyAgICAvLyBNaWNyb3NvZnQgZm9yZ290IHRvIGh1bXAgdGhlaXIgdmVu
ZG9yIHByZWZpeCAoIzk1NzIpCisgICAgY2FtZWxDYXNlOiBmdW5jdGlvbiggc3RyaW5nICkgewor
ICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoIHJtc1ByZWZpeCwgIm1zLSIgKS5yZXBsYWNl
KCByZGFzaEFscGhhLCBmY2FtZWxDYXNlICk7CisgICAgfSwKKworICAgIG5vZGVOYW1lOiBmdW5j
dGlvbiggZWxlbSwgbmFtZSApIHsKKyAgICAgICAgcmV0dXJuIGVsZW0ubm9kZU5hbWUgJiYgZWxl
bS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBuYW1lLnRvTG93ZXJDYXNlKCk7CisgICAgfSwK
KworICAgIGVhY2g6IGZ1bmN0aW9uKCBvYmosIGNhbGxiYWNrICkgeworICAgICAgICB2YXIgbGVu
Z3RoLCBpID0gMDsKKworICAgICAgICBpZiAoIGlzQXJyYXlMaWtlKCBvYmogKSApIHsKKyAgICAg
ICAgICAgIGxlbmd0aCA9IG9iai5sZW5ndGg7CisgICAgICAgICAgICBmb3IgKCA7IGkgPCBsZW5n
dGg7IGkrKyApIHsKKyAgICAgICAgICAgICAgICBpZiAoIGNhbGxiYWNrLmNhbGwoIG9ialsgaSBd
LCBpLCBvYmpbIGkgXSApID09PSBmYWxzZSApIHsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgZm9yICggaSBpbiBvYmogKSB7CisgICAgICAgICAgICAgICAgaWYgKCBjYWxsYmFj
ay5jYWxsKCBvYmpbIGkgXSwgaSwgb2JqWyBpIF0gKSA9PT0gZmFsc2UgKSB7CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorCisgICAgICAgIHJldHVybiBvYmo7CisgICAgfSwKKworICAgIC8vIFN1cHBvcnQ6IEFu
ZHJvaWQgPD00LjAgb25seQorICAgIHRyaW06IGZ1bmN0aW9uKCB0ZXh0ICkgeworICAgICAgICBy
ZXR1cm4gdGV4dCA9PSBudWxsID8KKyAgICAgICAgICAgICIiIDoKKyAgICAgICAgICAgICggdGV4
dCArICIiICkucmVwbGFjZSggcnRyaW0sICIiICk7CisgICAgfSwKKworICAgIC8vIHJlc3VsdHMg
aXMgZm9yIGludGVybmFsIHVzYWdlIG9ubHkKKyAgICBtYWtlQXJyYXk6IGZ1bmN0aW9uKCBhcnIs
IHJlc3VsdHMgKSB7CisgICAgICAgIHZhciByZXQgPSByZXN1bHRzIHx8IFtdOworCisgICAgICAg
IGlmICggYXJyICE9IG51bGwgKSB7CisgICAgICAgICAgICBpZiAoIGlzQXJyYXlMaWtlKCBPYmpl
Y3QoIGFyciApICkgKSB7CisgICAgICAgICAgICAgICAgalF1ZXJ5Lm1lcmdlKCByZXQsCisgICAg
ICAgICAgICAgICAgICAgIHR5cGVvZiBhcnIgPT09ICJzdHJpbmciID8KKyAgICAgICAgICAgICAg
ICAgICAgWyBhcnIgXSA6IGFycgorICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIHB1c2guY2FsbCggcmV0LCBhcnIgKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiByZXQ7CisgICAgfSwKKworICAgIGluQXJy
YXk6IGZ1bmN0aW9uKCBlbGVtLCBhcnIsIGkgKSB7CisgICAgICAgIHJldHVybiBhcnIgPT0gbnVs
bCA/IC0xIDogaW5kZXhPZi5jYWxsKCBhcnIsIGVsZW0sIGkgKTsKKyAgICB9LAorCisgICAgLy8g
U3VwcG9ydDogQW5kcm9pZCA8PTQuMCBvbmx5LCBQaGFudG9tSlMgMSBvbmx5CisgICAgLy8gcHVz
aC5hcHBseShfLCBhcnJheWxpa2UpIHRocm93cyBvbiBhbmNpZW50IFdlYktpdAorICAgIG1lcmdl
OiBmdW5jdGlvbiggZmlyc3QsIHNlY29uZCApIHsKKyAgICAgICAgdmFyIGxlbiA9ICtzZWNvbmQu
bGVuZ3RoLAorICAgICAgICAgICAgaiA9IDAsCisgICAgICAgICAgICBpID0gZmlyc3QubGVuZ3Ro
OworCisgICAgICAgIGZvciAoIDsgaiA8IGxlbjsgaisrICkgeworICAgICAgICAgICAgZmlyc3Rb
IGkrKyBdID0gc2Vjb25kWyBqIF07CisgICAgICAgIH0KKworICAgICAgICBmaXJzdC5sZW5ndGgg
PSBpOworCisgICAgICAgIHJldHVybiBmaXJzdDsKKyAgICB9LAorCisgICAgZ3JlcDogZnVuY3Rp
b24oIGVsZW1zLCBjYWxsYmFjaywgaW52ZXJ0ICkgeworICAgICAgICB2YXIgY2FsbGJhY2tJbnZl
cnNlLAorICAgICAgICAgICAgbWF0Y2hlcyA9IFtdLAorICAgICAgICAgICAgaSA9IDAsCisgICAg
ICAgICAgICBsZW5ndGggPSBlbGVtcy5sZW5ndGgsCisgICAgICAgICAgICBjYWxsYmFja0V4cGVj
dCA9ICFpbnZlcnQ7CisKKyAgICAgICAgLy8gR28gdGhyb3VnaCB0aGUgYXJyYXksIG9ubHkgc2F2
aW5nIHRoZSBpdGVtcworICAgICAgICAvLyB0aGF0IHBhc3MgdGhlIHZhbGlkYXRvciBmdW5jdGlv
bgorICAgICAgICBmb3IgKCA7IGkgPCBsZW5ndGg7IGkrKyApIHsKKyAgICAgICAgICAgIGNhbGxi
YWNrSW52ZXJzZSA9ICFjYWxsYmFjayggZWxlbXNbIGkgXSwgaSApOworICAgICAgICAgICAgaWYg
KCBjYWxsYmFja0ludmVyc2UgIT09IGNhbGxiYWNrRXhwZWN0ICkgeworICAgICAgICAgICAgICAg
IG1hdGNoZXMucHVzaCggZWxlbXNbIGkgXSApOworICAgICAgICAgICAgfQorICAgICAgICB9CisK
KyAgICAgICAgcmV0dXJuIG1hdGNoZXM7CisgICAgfSwKKworICAgIC8vIGFyZyBpcyBmb3IgaW50
ZXJuYWwgdXNhZ2Ugb25seQorICAgIG1hcDogZnVuY3Rpb24oIGVsZW1zLCBjYWxsYmFjaywgYXJn
ICkgeworICAgICAgICB2YXIgbGVuZ3RoLCB2YWx1ZSwKKyAgICAgICAgICAgIGkgPSAwLAorICAg
ICAgICAgICAgcmV0ID0gW107CisKKyAgICAgICAgLy8gR28gdGhyb3VnaCB0aGUgYXJyYXksIHRy
YW5zbGF0aW5nIGVhY2ggb2YgdGhlIGl0ZW1zIHRvIHRoZWlyIG5ldyB2YWx1ZXMKKyAgICAgICAg
aWYgKCBpc0FycmF5TGlrZSggZWxlbXMgKSApIHsKKyAgICAgICAgICAgIGxlbmd0aCA9IGVsZW1z
Lmxlbmd0aDsKKyAgICAgICAgICAgIGZvciAoIDsgaSA8IGxlbmd0aDsgaSsrICkgeworICAgICAg
ICAgICAgICAgIHZhbHVlID0gY2FsbGJhY2soIGVsZW1zWyBpIF0sIGksIGFyZyApOworCisgICAg
ICAgICAgICAgICAgaWYgKCB2YWx1ZSAhPSBudWxsICkgeworICAgICAgICAgICAgICAgICAgICBy
ZXQucHVzaCggdmFsdWUgKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgLy8gR28gdGhyb3VnaCBldmVyeSBrZXkgb24gdGhlIG9iamVjdCwKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIGZvciAoIGkgaW4gZWxlbXMgKSB7CisgICAgICAgICAgICAgICAg
dmFsdWUgPSBjYWxsYmFjayggZWxlbXNbIGkgXSwgaSwgYXJnICk7CisKKyAgICAgICAgICAgICAg
ICBpZiAoIHZhbHVlICE9IG51bGwgKSB7CisgICAgICAgICAgICAgICAgICAgIHJldC5wdXNoKCB2
YWx1ZSApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisg
ICAgICAgIC8vIEZsYXR0ZW4gYW55IG5lc3RlZCBhcnJheXMKKyAgICAgICAgcmV0dXJuIGNvbmNh
dC5hcHBseSggW10sIHJldCApOworICAgIH0sCisKKyAgICAvLyBBIGdsb2JhbCBHVUlEIGNvdW50
ZXIgZm9yIG9iamVjdHMKKyAgICBndWlkOiAxLAorCisgICAgLy8gQmluZCBhIGZ1bmN0aW9uIHRv
IGEgY29udGV4dCwgb3B0aW9uYWxseSBwYXJ0aWFsbHkgYXBwbHlpbmcgYW55CisgICAgLy8gYXJn
dW1lbnRzLgorICAgIHByb3h5OiBmdW5jdGlvbiggZm4sIGNvbnRleHQgKSB7CisgICAgICAgIHZh
ciB0bXAsIGFyZ3MsIHByb3h5OworCisgICAgICAgIGlmICggdHlwZW9mIGNvbnRleHQgPT09ICJz
dHJpbmciICkgeworICAgICAgICAgICAgdG1wID0gZm5bIGNvbnRleHQgXTsKKyAgICAgICAgICAg
IGNvbnRleHQgPSBmbjsKKyAgICAgICAgICAgIGZuID0gdG1wOworICAgICAgICB9CisKKyAgICAg
ICAgLy8gUXVpY2sgY2hlY2sgdG8gZGV0ZXJtaW5lIGlmIHRhcmdldCBpcyBjYWxsYWJsZSwgaW4g
dGhlIHNwZWMKKyAgICAgICAgLy8gdGhpcyB0aHJvd3MgYSBUeXBlRXJyb3IsIGJ1dCB3ZSB3aWxs
IGp1c3QgcmV0dXJuIHVuZGVmaW5lZC4KKyAgICAgICAgaWYgKCAhalF1ZXJ5LmlzRnVuY3Rpb24o
IGZuICkgKSB7CisgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOworICAgICAgICB9CisKKyAg
ICAgICAgLy8gU2ltdWxhdGVkIGJpbmQKKyAgICAgICAgYXJncyA9IHNsaWNlLmNhbGwoIGFyZ3Vt
ZW50cywgMiApOworICAgICAgICBwcm94eSA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcmV0
dXJuIGZuLmFwcGx5KCBjb250ZXh0IHx8IHRoaXMsIGFyZ3MuY29uY2F0KCBzbGljZS5jYWxsKCBh
cmd1bWVudHMgKSApICk7CisgICAgICAgIH07CisKKyAgICAgICAgLy8gU2V0IHRoZSBndWlkIG9m
IHVuaXF1ZSBoYW5kbGVyIHRvIHRoZSBzYW1lIG9mIG9yaWdpbmFsIGhhbmRsZXIsIHNvIGl0IGNh
biBiZSByZW1vdmVkCisgICAgICAgIHByb3h5Lmd1aWQgPSBmbi5ndWlkID0gZm4uZ3VpZCB8fCBq
UXVlcnkuZ3VpZCsrOworCisgICAgICAgIHJldHVybiBwcm94eTsKKyAgICB9LAorCisgICAgbm93
OiBEYXRlLm5vdywKKworICAgIC8vIGpRdWVyeS5zdXBwb3J0IGlzIG5vdCB1c2VkIGluIENvcmUg
YnV0IG90aGVyIHByb2plY3RzIGF0dGFjaCB0aGVpcgorICAgIC8vIHByb3BlcnRpZXMgdG8gaXQg
c28gaXQgbmVlZHMgdG8gZXhpc3QuCisgICAgc3VwcG9ydDogc3VwcG9ydAorfSApOworCitpZiAo
IHR5cGVvZiBTeW1ib2wgPT09ICJmdW5jdGlvbiIgKSB7CisgICAgalF1ZXJ5LmZuWyBTeW1ib2wu
aXRlcmF0b3IgXSA9IGFyclsgU3ltYm9sLml0ZXJhdG9yIF07Cit9CisKKy8vIFBvcHVsYXRlIHRo
ZSBjbGFzczJ0eXBlIG1hcAoralF1ZXJ5LmVhY2goICJCb29sZWFuIE51bWJlciBTdHJpbmcgRnVu
Y3Rpb24gQXJyYXkgRGF0ZSBSZWdFeHAgT2JqZWN0IEVycm9yIFN5bWJvbCIuc3BsaXQoICIgIiAp
LAorZnVuY3Rpb24oIGksIG5hbWUgKSB7CisgICAgY2xhc3MydHlwZVsgIltvYmplY3QgIiArIG5h
bWUgKyAiXSIgXSA9IG5hbWUudG9Mb3dlckNhc2UoKTsKK30gKTsKKworZnVuY3Rpb24gaXNBcnJh
eUxpa2UoIG9iaiApIHsKKworICAgIC8vIFN1cHBvcnQ6IHJlYWwgaU9TIDguMiBvbmx5IChub3Qg
cmVwcm9kdWNpYmxlIGluIHNpbXVsYXRvcikKKyAgICAvLyBgaW5gIGNoZWNrIHVzZWQgdG8gcHJl
dmVudCBKSVQgZXJyb3IgKGdoLTIxNDUpCisgICAgLy8gaGFzT3duIGlzbid0IHVzZWQgaGVyZSBk
dWUgdG8gZmFsc2UgbmVnYXRpdmVzCisgICAgLy8gcmVnYXJkaW5nIE5vZGVsaXN0IGxlbmd0aCBp
biBJRQorICAgIHZhciBsZW5ndGggPSAhIW9iaiAmJiAibGVuZ3RoIiBpbiBvYmogJiYgb2JqLmxl
bmd0aCwKKyAgICAgICAgdHlwZSA9IGpRdWVyeS50eXBlKCBvYmogKTsKKworICAgIGlmICggdHlw
ZSA9PT0gImZ1bmN0aW9uIiB8fCBqUXVlcnkuaXNXaW5kb3coIG9iaiApICkgeworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHR5cGUgPT09ICJhcnJheSIgfHwgbGVu
Z3RoID09PSAwIHx8CisgICAgICAgIHR5cGVvZiBsZW5ndGggPT09ICJudW1iZXIiICYmIGxlbmd0
aCA+IDAgJiYgKCBsZW5ndGggLSAxICkgaW4gb2JqOworfQordmFyIFNpenpsZSA9CisvKiEKKyAq
IFNpenpsZSBDU1MgU2VsZWN0b3IgRW5naW5lIHYyLjMuMworICogaHR0cHM6Ly9zaXp6bGVqcy5j
b20vCisgKgorICogQ29weXJpZ2h0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmli
dXRvcnMKKyAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZQorICogaHR0cDovL2pxdWVy
eS5vcmcvbGljZW5zZQorICoKKyAqIERhdGU6IDIwMTYtMDgtMDgKKyAqLworKGZ1bmN0aW9uKCB3
aW5kb3cgKSB7CisKK3ZhciBpLAorICAgIHN1cHBvcnQsCisgICAgRXhwciwKKyAgICBnZXRUZXh0
LAorICAgIGlzWE1MLAorICAgIHRva2VuaXplLAorICAgIGNvbXBpbGUsCisgICAgc2VsZWN0LAor
ICAgIG91dGVybW9zdENvbnRleHQsCisgICAgc29ydElucHV0LAorICAgIGhhc0R1cGxpY2F0ZSwK
KworICAgIC8vIExvY2FsIGRvY3VtZW50IHZhcnMKKyAgICBzZXREb2N1bWVudCwKKyAgICBkb2N1
bWVudCwKKyAgICBkb2NFbGVtLAorICAgIGRvY3VtZW50SXNIVE1MLAorICAgIHJidWdneVFTQSwK
KyAgICByYnVnZ3lNYXRjaGVzLAorICAgIG1hdGNoZXMsCisgICAgY29udGFpbnMsCisKKyAgICAv
LyBJbnN0YW5jZS1zcGVjaWZpYyBkYXRhCisgICAgZXhwYW5kbyA9ICJzaXp6bGUiICsgMSAqIG5l
dyBEYXRlKCksCisgICAgcHJlZmVycmVkRG9jID0gd2luZG93LmRvY3VtZW50LAorICAgIGRpcnJ1
bnMgPSAwLAorICAgIGRvbmUgPSAwLAorICAgIGNsYXNzQ2FjaGUgPSBjcmVhdGVDYWNoZSgpLAor
ICAgIHRva2VuQ2FjaGUgPSBjcmVhdGVDYWNoZSgpLAorICAgIGNvbXBpbGVyQ2FjaGUgPSBjcmVh
dGVDYWNoZSgpLAorICAgIHNvcnRPcmRlciA9IGZ1bmN0aW9uKCBhLCBiICkgeworICAgICAgICBp
ZiAoIGEgPT09IGIgKSB7CisgICAgICAgICAgICBoYXNEdXBsaWNhdGUgPSB0cnVlOworICAgICAg
ICB9CisgICAgICAgIHJldHVybiAwOworICAgIH0sCisKKyAgICAvLyBJbnN0YW5jZSBtZXRob2Rz
CisgICAgaGFzT3duID0gKHt9KS5oYXNPd25Qcm9wZXJ0eSwKKyAgICBhcnIgPSBbXSwKKyAgICBw
b3AgPSBhcnIucG9wLAorICAgIHB1c2hfbmF0aXZlID0gYXJyLnB1c2gsCisgICAgcHVzaCA9IGFy
ci5wdXNoLAorICAgIHNsaWNlID0gYXJyLnNsaWNlLAorICAgIC8vIFVzZSBhIHN0cmlwcGVkLWRv
d24gaW5kZXhPZiBhcyBpdCdzIGZhc3RlciB0aGFuIG5hdGl2ZQorICAgIC8vIGh0dHBzOi8vanNw
ZXJmLmNvbS90aG9yLWluZGV4b2YtdnMtZm9yLzUKKyAgICBpbmRleE9mID0gZnVuY3Rpb24oIGxp
c3QsIGVsZW0gKSB7CisgICAgICAgIHZhciBpID0gMCwKKyAgICAgICAgICAgIGxlbiA9IGxpc3Qu
bGVuZ3RoOworICAgICAgICBmb3IgKCA7IGkgPCBsZW47IGkrKyApIHsKKyAgICAgICAgICAgIGlm
ICggbGlzdFtpXSA9PT0gZWxlbSApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gaTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gLTE7CisgICAgfSwKKworICAgIGJv
b2xlYW5zID0gImNoZWNrZWR8c2VsZWN0ZWR8YXN5bmN8YXV0b2ZvY3VzfGF1dG9wbGF5fGNvbnRy
b2xzfGRlZmVyfGRpc2FibGVkfGhpZGRlbnxpc21hcHxsb29wfG11bHRpcGxlfG9wZW58cmVhZG9u
bHl8cmVxdWlyZWR8c2NvcGVkIiwKKworICAgIC8vIFJlZ3VsYXIgZXhwcmVzc2lvbnMKKworICAg
IC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtc2VsZWN0b3JzLyN3aGl0ZXNwYWNlCisgICAg
d2hpdGVzcGFjZSA9ICJbXFx4MjBcXHRcXHJcXG5cXGZdIiwKKworICAgIC8vIGh0dHA6Ly93d3cu
dzMub3JnL1RSL0NTUzIxL3N5bmRhdGEuaHRtbCN2YWx1ZS1kZWYtaWRlbnRpZmllcgorICAgIGlk
ZW50aWZpZXIgPSAiKD86XFxcXC58W1xcdy1dfFteXDAtXFx4YTBdKSsiLAorCisgICAgLy8gQXR0
cmlidXRlIHNlbGVjdG9yczogaHR0cDovL3d3dy53My5vcmcvVFIvc2VsZWN0b3JzLyNhdHRyaWJ1
dGUtc2VsZWN0b3JzCisgICAgYXR0cmlidXRlcyA9ICJcXFsiICsgd2hpdGVzcGFjZSArICIqKCIg
KyBpZGVudGlmaWVyICsgIikoPzoiICsgd2hpdGVzcGFjZSArCisgICAgICAgIC8vIE9wZXJhdG9y
IChjYXB0dXJlIDIpCisgICAgICAgICIqKFsqXiR8IX5dPz0pIiArIHdoaXRlc3BhY2UgKworICAg
ICAgICAvLyAiQXR0cmlidXRlIHZhbHVlcyBtdXN0IGJlIENTUyBpZGVudGlmaWVycyBbY2FwdHVy
ZSA1XSBvciBzdHJpbmdzIFtjYXB0dXJlIDMgb3IgY2FwdHVyZSA0XSIKKyAgICAgICAgIiooPzon
KCg/OlxcXFwufFteXFxcXCddKSopJ3xcIigoPzpcXFxcLnxbXlxcXFxcIl0pKilcInwoIiArIGlk
ZW50aWZpZXIgKyAiKSl8KSIgKyB3aGl0ZXNwYWNlICsKKyAgICAgICAgIipcXF0iLAorCisgICAg
cHNldWRvcyA9ICI6KCIgKyBpZGVudGlmaWVyICsgIikoPzpcXCgoIiArCisgICAgICAgIC8vIFRv
IHJlZHVjZSB0aGUgbnVtYmVyIG9mIHNlbGVjdG9ycyBuZWVkaW5nIHRva2VuaXplIGluIHRoZSBw
cmVGaWx0ZXIsIHByZWZlciBhcmd1bWVudHM6CisgICAgICAgIC8vIDEuIHF1b3RlZCAoY2FwdHVy
ZSAzOyBjYXB0dXJlIDQgb3IgY2FwdHVyZSA1KQorICAgICAgICAiKCcoKD86XFxcXC58W15cXFxc
J10pKiknfFwiKCg/OlxcXFwufFteXFxcXFwiXSkqKVwiKXwiICsKKyAgICAgICAgLy8gMi4gc2lt
cGxlIChjYXB0dXJlIDYpCisgICAgICAgICIoKD86XFxcXC58W15cXFxcKClbXFxdXXwiICsgYXR0
cmlidXRlcyArICIpKil8IiArCisgICAgICAgIC8vIDMuIGFueXRoaW5nIGVsc2UgKGNhcHR1cmUg
MikKKyAgICAgICAgIi4qIiArCisgICAgICAgICIpXFwpfCkiLAorCisgICAgLy8gTGVhZGluZyBh
bmQgbm9uLWVzY2FwZWQgdHJhaWxpbmcgd2hpdGVzcGFjZSwgY2FwdHVyaW5nIHNvbWUgbm9uLXdo
aXRlc3BhY2UgY2hhcmFjdGVycyBwcmVjZWRpbmcgdGhlIGxhdHRlcgorICAgIHJ3aGl0ZXNwYWNl
ID0gbmV3IFJlZ0V4cCggd2hpdGVzcGFjZSArICIrIiwgImciICksCisgICAgcnRyaW0gPSBuZXcg
UmVnRXhwKCAiXiIgKyB3aGl0ZXNwYWNlICsgIit8KCg/Ol58W15cXFxcXSkoPzpcXFxcLikqKSIg
KyB3aGl0ZXNwYWNlICsgIiskIiwgImciICksCisKKyAgICByY29tbWEgPSBuZXcgUmVnRXhwKCAi
XiIgKyB3aGl0ZXNwYWNlICsgIiosIiArIHdoaXRlc3BhY2UgKyAiKiIgKSwKKyAgICByY29tYmlu
YXRvcnMgPSBuZXcgUmVnRXhwKCAiXiIgKyB3aGl0ZXNwYWNlICsgIiooWz4rfl18IiArIHdoaXRl
c3BhY2UgKyAiKSIgKyB3aGl0ZXNwYWNlICsgIioiICksCisKKyAgICByYXR0cmlidXRlUXVvdGVz
ID0gbmV3IFJlZ0V4cCggIj0iICsgd2hpdGVzcGFjZSArICIqKFteXFxdJ1wiXSo/KSIgKyB3aGl0
ZXNwYWNlICsgIipcXF0iLCAiZyIgKSwKKworICAgIHJwc2V1ZG8gPSBuZXcgUmVnRXhwKCBwc2V1
ZG9zICksCisgICAgcmlkZW50aWZpZXIgPSBuZXcgUmVnRXhwKCAiXiIgKyBpZGVudGlmaWVyICsg
IiQiICksCisKKyAgICBtYXRjaEV4cHIgPSB7CisgICAgICAgICJJRCI6IG5ldyBSZWdFeHAoICJe
IygiICsgaWRlbnRpZmllciArICIpIiApLAorICAgICAgICAiQ0xBU1MiOiBuZXcgUmVnRXhwKCAi
XlxcLigiICsgaWRlbnRpZmllciArICIpIiApLAorICAgICAgICAiVEFHIjogbmV3IFJlZ0V4cCgg
Il4oIiArIGlkZW50aWZpZXIgKyAifFsqXSkiICksCisgICAgICAgICJBVFRSIjogbmV3IFJlZ0V4
cCggIl4iICsgYXR0cmlidXRlcyApLAorICAgICAgICAiUFNFVURPIjogbmV3IFJlZ0V4cCggIl4i
ICsgcHNldWRvcyApLAorICAgICAgICAiQ0hJTEQiOiBuZXcgUmVnRXhwKCAiXjoob25seXxmaXJz
dHxsYXN0fG50aHxudGgtbGFzdCktKGNoaWxkfG9mLXR5cGUpKD86XFwoIiArIHdoaXRlc3BhY2Ug
KworICAgICAgICAgICAgIiooZXZlbnxvZGR8KChbKy1dfCkoXFxkKilufCkiICsgd2hpdGVzcGFj
ZSArICIqKD86KFsrLV18KSIgKyB3aGl0ZXNwYWNlICsKKyAgICAgICAgICAgICIqKFxcZCspfCkp
IiArIHdoaXRlc3BhY2UgKyAiKlxcKXwpIiwgImkiICksCisgICAgICAgICJib29sIjogbmV3IFJl
Z0V4cCggIl4oPzoiICsgYm9vbGVhbnMgKyAiKSQiLCAiaSIgKSwKKyAgICAgICAgLy8gRm9yIHVz
ZSBpbiBsaWJyYXJpZXMgaW1wbGVtZW50aW5nIC5pcygpCisgICAgICAgIC8vIFdlIHVzZSB0aGlz
IGZvciBQT1MgbWF0Y2hpbmcgaW4gYHNlbGVjdGAKKyAgICAgICAgIm5lZWRzQ29udGV4dCI6IG5l
dyBSZWdFeHAoICJeIiArIHdoaXRlc3BhY2UgKyAiKls+K35dfDooZXZlbnxvZGR8ZXF8Z3R8bHR8
bnRofGZpcnN0fGxhc3QpKD86XFwoIiArCisgICAgICAgICAgICB3aGl0ZXNwYWNlICsgIiooKD86
LVxcZCk/XFxkKikiICsgd2hpdGVzcGFjZSArICIqXFwpfCkoPz1bXi1dfCQpIiwgImkiICkKKyAg
ICB9LAorCisgICAgcmlucHV0cyA9IC9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbikk
L2ksCisgICAgcmhlYWRlciA9IC9eaFxkJC9pLAorCisgICAgcm5hdGl2ZSA9IC9eW157XStce1xz
KlxbbmF0aXZlIFx3LywKKworICAgIC8vIEVhc2lseS1wYXJzZWFibGUvcmV0cmlldmFibGUgSUQg
b3IgVEFHIG9yIENMQVNTIHNlbGVjdG9ycworICAgIHJxdWlja0V4cHIgPSAvXig/OiMoW1x3LV0r
KXwoXHcrKXxcLihbXHctXSspKSQvLAorCisgICAgcnNpYmxpbmcgPSAvWyt+XS8sCisKKyAgICAv
LyBDU1MgZXNjYXBlcworICAgIC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIxL3N5bmRhdGEu
aHRtbCNlc2NhcGVkLWNoYXJhY3RlcnMKKyAgICBydW5lc2NhcGUgPSBuZXcgUmVnRXhwKCAiXFxc
XChbXFxkYS1mXXsxLDZ9IiArIHdoaXRlc3BhY2UgKyAiP3woIiArIHdoaXRlc3BhY2UgKyAiKXwu
KSIsICJpZyIgKSwKKyAgICBmdW5lc2NhcGUgPSBmdW5jdGlvbiggXywgZXNjYXBlZCwgZXNjYXBl
ZFdoaXRlc3BhY2UgKSB7CisgICAgICAgIHZhciBoaWdoID0gIjB4IiArIGVzY2FwZWQgLSAweDEw
MDAwOworICAgICAgICAvLyBOYU4gbWVhbnMgbm9uLWNvZGVwb2ludAorICAgICAgICAvLyBTdXBw
b3J0OiBGaXJlZm94PDI0CisgICAgICAgIC8vIFdvcmthcm91bmQgZXJyb25lb3VzIG51bWVyaWMg
aW50ZXJwcmV0YXRpb24gb2YgKyIweCIKKyAgICAgICAgcmV0dXJuIGhpZ2ggIT09IGhpZ2ggfHwg
ZXNjYXBlZFdoaXRlc3BhY2UgPworICAgICAgICAgICAgZXNjYXBlZCA6CisgICAgICAgICAgICBo
aWdoIDwgMCA/CisgICAgICAgICAgICAgICAgLy8gQk1QIGNvZGVwb2ludAorICAgICAgICAgICAg
ICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoIGhpZ2ggKyAweDEwMDAwICkgOgorICAgICAgICAgICAg
ICAgIC8vIFN1cHBsZW1lbnRhbCBQbGFuZSBjb2RlcG9pbnQgKHN1cnJvZ2F0ZSBwYWlyKQorICAg
ICAgICAgICAgICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoIGhpZ2ggPj4gMTAgfCAweEQ4MDAsIGhp
Z2ggJiAweDNGRiB8IDB4REMwMCApOworICAgIH0sCisKKyAgICAvLyBDU1Mgc3RyaW5nL2lkZW50
aWZpZXIgc2VyaWFsaXphdGlvbgorICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Nv
bS8jY29tbW9uLXNlcmlhbGl6aW5nLWlkaW9tcworICAgIHJjc3Nlc2NhcGUgPSAvKFtcMC1ceDFm
XHg3Zl18Xi0/XGQpfF4tJHxbXlwwLVx4MWZceDdmLVx1RkZGRlx3LV0vZywKKyAgICBmY3NzZXNj
YXBlID0gZnVuY3Rpb24oIGNoLCBhc0NvZGVQb2ludCApIHsKKyAgICAgICAgaWYgKCBhc0NvZGVQ
b2ludCApIHsKKworICAgICAgICAgICAgLy8gVSswMDAwIE5VTEwgYmVjb21lcyBVK0ZGRkQgUkVQ
TEFDRU1FTlQgQ0hBUkFDVEVSCisgICAgICAgICAgICBpZiAoIGNoID09PSAiXDAiICkgeworICAg
ICAgICAgICAgICAgIHJldHVybiAiXHVGRkZEIjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgLy8gQ29udHJvbCBjaGFyYWN0ZXJzIGFuZCAoZGVwZW5kZW50IHVwb24gcG9zaXRpb24pIG51
bWJlcnMgZ2V0IGVzY2FwZWQgYXMgY29kZSBwb2ludHMKKyAgICAgICAgICAgIHJldHVybiBjaC5z
bGljZSggMCwgLTEgKSArICJcXCIgKyBjaC5jaGFyQ29kZUF0KCBjaC5sZW5ndGggLSAxICkudG9T
dHJpbmcoIDE2ICkgKyAiICI7CisgICAgICAgIH0KKworICAgICAgICAvLyBPdGhlciBwb3RlbnRp
YWxseS1zcGVjaWFsIEFTQ0lJIGNoYXJhY3RlcnMgZ2V0IGJhY2tzbGFzaC1lc2NhcGVkCisgICAg
ICAgIHJldHVybiAiXFwiICsgY2g7CisgICAgfSwKKworICAgIC8vIFVzZWQgZm9yIGlmcmFtZXMK
KyAgICAvLyBTZWUgc2V0RG9jdW1lbnQoKQorICAgIC8vIFJlbW92aW5nIHRoZSBmdW5jdGlvbiB3
cmFwcGVyIGNhdXNlcyBhICJQZXJtaXNzaW9uIERlbmllZCIKKyAgICAvLyBlcnJvciBpbiBJRQor
ICAgIHVubG9hZEhhbmRsZXIgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgc2V0RG9jdW1lbnQoKTsK
KyAgICB9LAorCisgICAgZGlzYWJsZWRBbmNlc3RvciA9IGFkZENvbWJpbmF0b3IoCisgICAgICAg
IGZ1bmN0aW9uKCBlbGVtICkgeworICAgICAgICAgICAgcmV0dXJuIGVsZW0uZGlzYWJsZWQgPT09
IHRydWUgJiYgKCJmb3JtIiBpbiBlbGVtIHx8ICJsYWJlbCIgaW4gZWxlbSk7CisgICAgICAgIH0s
CisgICAgICAgIHsgZGlyOiAicGFyZW50Tm9kZSIsIG5leHQ6ICJsZWdlbmQiIH0KKyAgICApOwor
CisvLyBPcHRpbWl6ZSBmb3IgcHVzaC5hcHBseSggXywgTm9kZUxpc3QgKQordHJ5IHsKKyAgICBw
dXNoLmFwcGx5KAorICAgICAgICAoYXJyID0gc2xpY2UuY2FsbCggcHJlZmVycmVkRG9jLmNoaWxk
Tm9kZXMgKSksCisgICAgICAgIHByZWZlcnJlZERvYy5jaGlsZE5vZGVzCisgICAgKTsKKyAgICAv
LyBTdXBwb3J0OiBBbmRyb2lkPDQuMAorICAgIC8vIERldGVjdCBzaWxlbnRseSBmYWlsaW5nIHB1
c2guYXBwbHkKKyAgICBhcnJbIHByZWZlcnJlZERvYy5jaGlsZE5vZGVzLmxlbmd0aCBdLm5vZGVU
eXBlOworfSBjYXRjaCAoIGUgKSB7CisgICAgcHVzaCA9IHsgYXBwbHk6IGFyci5sZW5ndGggPwor
CisgICAgICAgIC8vIExldmVyYWdlIHNsaWNlIGlmIHBvc3NpYmxlCisgICAgICAgIGZ1bmN0aW9u
KCB0YXJnZXQsIGVscyApIHsKKyAgICAgICAgICAgIHB1c2hfbmF0aXZlLmFwcGx5KCB0YXJnZXQs
IHNsaWNlLmNhbGwoZWxzKSApOworICAgICAgICB9IDoKKworICAgICAgICAvLyBTdXBwb3J0OiBJ
RTw5CisgICAgICAgIC8vIE90aGVyd2lzZSBhcHBlbmQgZGlyZWN0bHkKKyAgICAgICAgZnVuY3Rp
b24oIHRhcmdldCwgZWxzICkgeworICAgICAgICAgICAgdmFyIGogPSB0YXJnZXQubGVuZ3RoLAor
ICAgICAgICAgICAgICAgIGkgPSAwOworICAgICAgICAgICAgLy8gQ2FuJ3QgdHJ1c3QgTm9kZUxp
c3QubGVuZ3RoCisgICAgICAgICAgICB3aGlsZSAoICh0YXJnZXRbaisrXSA9IGVsc1tpKytdKSAp
IHt9CisgICAgICAgICAgICB0YXJnZXQubGVuZ3RoID0gaiAtIDE7CisgICAgICAgIH0KKyAgICB9
OworfQorCitmdW5jdGlvbiBTaXp6bGUoIHNlbGVjdG9yLCBjb250ZXh0LCByZXN1bHRzLCBzZWVk
ICkgeworICAgIHZhciBtLCBpLCBlbGVtLCBuaWQsIG1hdGNoLCBncm91cHMsIG5ld1NlbGVjdG9y
LAorICAgICAgICBuZXdDb250ZXh0ID0gY29udGV4dCAmJiBjb250ZXh0Lm93bmVyRG9jdW1lbnQs
CisKKyAgICAgICAgLy8gbm9kZVR5cGUgZGVmYXVsdHMgdG8gOSwgc2luY2UgY29udGV4dCBkZWZh
dWx0cyB0byBkb2N1bWVudAorICAgICAgICBub2RlVHlwZSA9IGNvbnRleHQgPyBjb250ZXh0Lm5v
ZGVUeXBlIDogOTsKKworICAgIHJlc3VsdHMgPSByZXN1bHRzIHx8IFtdOworCisgICAgLy8gUmV0
dXJuIGVhcmx5IGZyb20gY2FsbHMgd2l0aCBpbnZhbGlkIHNlbGVjdG9yIG9yIGNvbnRleHQKKyAg
ICBpZiAoIHR5cGVvZiBzZWxlY3RvciAhPT0gInN0cmluZyIgfHwgIXNlbGVjdG9yIHx8CisgICAg
ICAgIG5vZGVUeXBlICE9PSAxICYmIG5vZGVUeXBlICE9PSA5ICYmIG5vZGVUeXBlICE9PSAxMSAp
IHsKKworICAgICAgICByZXR1cm4gcmVzdWx0czsKKyAgICB9CisKKyAgICAvLyBUcnkgdG8gc2hv
cnRjdXQgZmluZCBvcGVyYXRpb25zIChhcyBvcHBvc2VkIHRvIGZpbHRlcnMpIGluIEhUTUwgZG9j
dW1lbnRzCisgICAgaWYgKCAhc2VlZCApIHsKKworICAgICAgICBpZiAoICggY29udGV4dCA/IGNv
bnRleHQub3duZXJEb2N1bWVudCB8fCBjb250ZXh0IDogcHJlZmVycmVkRG9jICkgIT09IGRvY3Vt
ZW50ICkgeworICAgICAgICAgICAgc2V0RG9jdW1lbnQoIGNvbnRleHQgKTsKKyAgICAgICAgfQor
ICAgICAgICBjb250ZXh0ID0gY29udGV4dCB8fCBkb2N1bWVudDsKKworICAgICAgICBpZiAoIGRv
Y3VtZW50SXNIVE1MICkgeworCisgICAgICAgICAgICAvLyBJZiB0aGUgc2VsZWN0b3IgaXMgc3Vm
ZmljaWVudGx5IHNpbXBsZSwgdHJ5IHVzaW5nIGEgImdldCpCeSoiIERPTSBtZXRob2QKKyAgICAg
ICAgICAgIC8vIChleGNlcHRpbmcgRG9jdW1lbnRGcmFnbWVudCBjb250ZXh0LCB3aGVyZSB0aGUg
bWV0aG9kcyBkb24ndCBleGlzdCkKKyAgICAgICAgICAgIGlmICggbm9kZVR5cGUgIT09IDExICYm
IChtYXRjaCA9IHJxdWlja0V4cHIuZXhlYyggc2VsZWN0b3IgKSkgKSB7CisKKyAgICAgICAgICAg
ICAgICAvLyBJRCBzZWxlY3RvcgorICAgICAgICAgICAgICAgIGlmICggKG0gPSBtYXRjaFsxXSkg
KSB7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gRG9jdW1lbnQgY29udGV4dAorICAgICAgICAg
ICAgICAgICAgICBpZiAoIG5vZGVUeXBlID09PSA5ICkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCAoZWxlbSA9IGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQoIG0gKSkgKSB7CisKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBTdXBwb3J0OiBJRSwgT3BlcmEsIFdlYmtpdAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IGlkZW50aWZ5IHZlcnNpb25zCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2V0RWxlbWVudEJ5SWQgY2FuIG1hdGNoIGVsZW1l
bnRzIGJ5IG5hbWUgaW5zdGVhZCBvZiBJRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICggZWxlbS5pZCA9PT0gbSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVz
dWx0cy5wdXNoKCBlbGVtICk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biByZXN1bHRzOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdHM7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAg
Ly8gRWxlbWVudCBjb250ZXh0CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisKKyAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6IElFLCBPcGVyYSwgV2Via2l0CisgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBUT0RPOiBpZGVudGlmeSB2ZXJzaW9ucworICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gZ2V0RWxlbWVudEJ5SWQgY2FuIG1hdGNoIGVsZW1lbnRzIGJ5IG5hbWUg
aW5zdGVhZCBvZiBJRAorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBuZXdDb250ZXh0ICYm
IChlbGVtID0gbmV3Q29udGV4dC5nZXRFbGVtZW50QnlJZCggbSApKSAmJgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRhaW5zKCBjb250ZXh0LCBlbGVtICkgJiYKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBlbGVtLmlkID09PSBtICkgeworCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0cy5wdXNoKCBlbGVtICk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdHM7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIFR5cGUgc2VsZWN0b3IKKyAgICAgICAg
ICAgICAgICB9IGVsc2UgaWYgKCBtYXRjaFsyXSApIHsKKyAgICAgICAgICAgICAgICAgICAgcHVz
aC5hcHBseSggcmVzdWx0cywgY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSggc2VsZWN0b3Ig
KSApOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0czsKKworICAgICAgICAgICAg
ICAgIC8vIENsYXNzIHNlbGVjdG9yCisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICggKG0gPSBt
YXRjaFszXSkgJiYgc3VwcG9ydC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lICYmCisgICAgICAgICAg
ICAgICAgICAgIGNvbnRleHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSApIHsKKworICAgICAgICAg
ICAgICAgICAgICBwdXNoLmFwcGx5KCByZXN1bHRzLCBjb250ZXh0LmdldEVsZW1lbnRzQnlDbGFz
c05hbWUoIG0gKSApOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0czsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRha2UgYWR2YW50
YWdlIG9mIHF1ZXJ5U2VsZWN0b3JBbGwKKyAgICAgICAgICAgIGlmICggc3VwcG9ydC5xc2EgJiYK
KyAgICAgICAgICAgICAgICAhY29tcGlsZXJDYWNoZVsgc2VsZWN0b3IgKyAiICIgXSAmJgorICAg
ICAgICAgICAgICAgICghcmJ1Z2d5UVNBIHx8ICFyYnVnZ3lRU0EudGVzdCggc2VsZWN0b3IgKSkg
KSB7CisKKyAgICAgICAgICAgICAgICBpZiAoIG5vZGVUeXBlICE9PSAxICkgeworICAgICAgICAg
ICAgICAgICAgICBuZXdDb250ZXh0ID0gY29udGV4dDsKKyAgICAgICAgICAgICAgICAgICAgbmV3
U2VsZWN0b3IgPSBzZWxlY3RvcjsKKworICAgICAgICAgICAgICAgIC8vIHFTQSBsb29rcyBvdXRz
aWRlIEVsZW1lbnQgY29udGV4dCwgd2hpY2ggaXMgbm90IHdoYXQgd2Ugd2FudAorICAgICAgICAg
ICAgICAgIC8vIFRoYW5rcyB0byBBbmRyZXcgRHVwb250IGZvciB0aGlzIHdvcmthcm91bmQgdGVj
aG5pcXVlCisgICAgICAgICAgICAgICAgLy8gU3VwcG9ydDogSUUgPD04CisgICAgICAgICAgICAg
ICAgLy8gRXhjbHVkZSBvYmplY3QgZWxlbWVudHMKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYg
KCBjb250ZXh0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgIT09ICJvYmplY3QiICkgeworCisgICAg
ICAgICAgICAgICAgICAgIC8vIENhcHR1cmUgdGhlIGNvbnRleHQgSUQsIHNldHRpbmcgaXQgZmly
c3QgaWYgbmVjZXNzYXJ5CisgICAgICAgICAgICAgICAgICAgIGlmICggKG5pZCA9IGNvbnRleHQu
Z2V0QXR0cmlidXRlKCAiaWQiICkpICkgeworICAgICAgICAgICAgICAgICAgICAgICAgbmlkID0g
bmlkLnJlcGxhY2UoIHJjc3Nlc2NhcGUsIGZjc3Nlc2NhcGUgKTsKKyAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0QXR0cmlidXRl
KCAiaWQiLCAobmlkID0gZXhwYW5kbykgKTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgICAgIC8vIFByZWZpeCBldmVyeSBzZWxlY3RvciBpbiB0aGUgbGlzdAorICAg
ICAgICAgICAgICAgICAgICBncm91cHMgPSB0b2tlbml6ZSggc2VsZWN0b3IgKTsKKyAgICAgICAg
ICAgICAgICAgICAgaSA9IGdyb3Vwcy5sZW5ndGg7CisgICAgICAgICAgICAgICAgICAgIHdoaWxl
ICggaS0tICkgeworICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBzW2ldID0gIiMiICsgbmlk
ICsgIiAiICsgdG9TZWxlY3RvciggZ3JvdXBzW2ldICk7CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgbmV3U2VsZWN0b3IgPSBncm91cHMuam9pbiggIiwiICk7CisK
KyAgICAgICAgICAgICAgICAgICAgLy8gRXhwYW5kIGNvbnRleHQgZm9yIHNpYmxpbmcgc2VsZWN0
b3JzCisgICAgICAgICAgICAgICAgICAgIG5ld0NvbnRleHQgPSByc2libGluZy50ZXN0KCBzZWxl
Y3RvciApICYmIHRlc3RDb250ZXh0KCBjb250ZXh0LnBhcmVudE5vZGUgKSB8fAorICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGV4dDsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICBpZiAoIG5ld1NlbGVjdG9yICkgeworICAgICAgICAgICAgICAgICAgICB0cnkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgcHVzaC5hcHBseSggcmVzdWx0cywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBuZXdDb250ZXh0LnF1ZXJ5U2VsZWN0b3JBbGwoIG5ld1NlbGVjdG9yICkK
KyAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gcmVzdWx0czsKKyAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoIHFzYUVycm9yICkgewor
ICAgICAgICAgICAgICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCBuaWQgPT09IGV4cGFuZG8gKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
dGV4dC5yZW1vdmVBdHRyaWJ1dGUoICJpZCIgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEFsbCBvdGhlcnMKKyAgICByZXR1cm4gc2VsZWN0
KCBzZWxlY3Rvci5yZXBsYWNlKCBydHJpbSwgIiQxIiApLCBjb250ZXh0LCByZXN1bHRzLCBzZWVk
ICk7Cit9CisKKy8qKgorICogQ3JlYXRlIGtleS12YWx1ZSBjYWNoZXMgb2YgbGltaXRlZCBzaXpl
CisgKiBAcmV0dXJucyB7ZnVuY3Rpb24oc3RyaW5nLCBvYmplY3QpfSBSZXR1cm5zIHRoZSBPYmpl
Y3QgZGF0YSBhZnRlciBzdG9yaW5nIGl0IG9uIGl0c2VsZiB3aXRoCisgKiAgcHJvcGVydHkgbmFt
ZSB0aGUgKHNwYWNlLXN1ZmZpeGVkKSBzdHJpbmcgYW5kIChpZiB0aGUgY2FjaGUgaXMgbGFyZ2Vy
IHRoYW4gRXhwci5jYWNoZUxlbmd0aCkKKyAqICBkZWxldGluZyB0aGUgb2xkZXN0IGVudHJ5Cisg
Ki8KK2Z1bmN0aW9uIGNyZWF0ZUNhY2hlKCkgeworICAgIHZhciBrZXlzID0gW107CisKKyAgICBm
dW5jdGlvbiBjYWNoZSgga2V5LCB2YWx1ZSApIHsKKyAgICAgICAgLy8gVXNlIChrZXkgKyAiICIp
IHRvIGF2b2lkIGNvbGxpc2lvbiB3aXRoIG5hdGl2ZSBwcm90b3R5cGUgcHJvcGVydGllcyAoc2Vl
IElzc3VlICMxNTcpCisgICAgICAgIGlmICgga2V5cy5wdXNoKCBrZXkgKyAiICIgKSA+IEV4cHIu
Y2FjaGVMZW5ndGggKSB7CisgICAgICAgICAgICAvLyBPbmx5IGtlZXAgdGhlIG1vc3QgcmVjZW50
IGVudHJpZXMKKyAgICAgICAgICAgIGRlbGV0ZSBjYWNoZVsga2V5cy5zaGlmdCgpIF07CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIChjYWNoZVsga2V5ICsgIiAiIF0gPSB2YWx1ZSk7CisgICAg
fQorICAgIHJldHVybiBjYWNoZTsKK30KKworLyoqCisgKiBNYXJrIGEgZnVuY3Rpb24gZm9yIHNw
ZWNpYWwgdXNlIGJ5IFNpenpsZQorICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gVGhlIGZ1bmN0aW9u
IHRvIG1hcmsKKyAqLworZnVuY3Rpb24gbWFya0Z1bmN0aW9uKCBmbiApIHsKKyAgICBmblsgZXhw
YW5kbyBdID0gdHJ1ZTsKKyAgICByZXR1cm4gZm47Cit9CisKKy8qKgorICogU3VwcG9ydCB0ZXN0
aW5nIHVzaW5nIGFuIGVsZW1lbnQKKyAqIEBwYXJhbSB7RnVuY3Rpb259IGZuIFBhc3NlZCB0aGUg
Y3JlYXRlZCBlbGVtZW50IGFuZCByZXR1cm5zIGEgYm9vbGVhbiByZXN1bHQKKyAqLworZnVuY3Rp
b24gYXNzZXJ0KCBmbiApIHsKKyAgICB2YXIgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJm
aWVsZHNldCIpOworCisgICAgdHJ5IHsKKyAgICAgICAgcmV0dXJuICEhZm4oIGVsICk7CisgICAg
fSBjYXRjaCAoZSkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfSBmaW5hbGx5IHsKKyAg
ICAgICAgLy8gUmVtb3ZlIGZyb20gaXRzIHBhcmVudCBieSBkZWZhdWx0CisgICAgICAgIGlmICgg
ZWwucGFyZW50Tm9kZSApIHsKKyAgICAgICAgICAgIGVsLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQo
IGVsICk7CisgICAgICAgIH0KKyAgICAgICAgLy8gcmVsZWFzZSBtZW1vcnkgaW4gSUUKKyAgICAg
ICAgZWwgPSBudWxsOworICAgIH0KK30KKworLyoqCisgKiBBZGRzIHRoZSBzYW1lIGhhbmRsZXIg
Zm9yIGFsbCBvZiB0aGUgc3BlY2lmaWVkIGF0dHJzCisgKiBAcGFyYW0ge1N0cmluZ30gYXR0cnMg
UGlwZS1zZXBhcmF0ZWQgbGlzdCBvZiBhdHRyaWJ1dGVzCisgKiBAcGFyYW0ge0Z1bmN0aW9ufSBo
YW5kbGVyIFRoZSBtZXRob2QgdGhhdCB3aWxsIGJlIGFwcGxpZWQKKyAqLworZnVuY3Rpb24gYWRk
SGFuZGxlKCBhdHRycywgaGFuZGxlciApIHsKKyAgICB2YXIgYXJyID0gYXR0cnMuc3BsaXQoInwi
KSwKKyAgICAgICAgaSA9IGFyci5sZW5ndGg7CisKKyAgICB3aGlsZSAoIGktLSApIHsKKyAgICAg
ICAgRXhwci5hdHRySGFuZGxlWyBhcnJbaV0gXSA9IGhhbmRsZXI7CisgICAgfQorfQorCisvKioK
KyAqIENoZWNrcyBkb2N1bWVudCBvcmRlciBvZiB0d28gc2libGluZ3MKKyAqIEBwYXJhbSB7RWxl
bWVudH0gYQorICogQHBhcmFtIHtFbGVtZW50fSBiCisgKiBAcmV0dXJucyB7TnVtYmVyfSBSZXR1
cm5zIGxlc3MgdGhhbiAwIGlmIGEgcHJlY2VkZXMgYiwgZ3JlYXRlciB0aGFuIDAgaWYgYSBmb2xs
b3dzIGIKKyAqLworZnVuY3Rpb24gc2libGluZ0NoZWNrKCBhLCBiICkgeworICAgIHZhciBjdXIg
PSBiICYmIGEsCisgICAgICAgIGRpZmYgPSBjdXIgJiYgYS5ub2RlVHlwZSA9PT0gMSAmJiBiLm5v
ZGVUeXBlID09PSAxICYmCisgICAgICAgICAgICBhLnNvdXJjZUluZGV4IC0gYi5zb3VyY2VJbmRl
eDsKKworICAgIC8vIFVzZSBJRSBzb3VyY2VJbmRleCBpZiBhdmFpbGFibGUgb24gYm90aCBub2Rl
cworICAgIGlmICggZGlmZiApIHsKKyAgICAgICAgcmV0dXJuIGRpZmY7CisgICAgfQorCisgICAg
Ly8gQ2hlY2sgaWYgYiBmb2xsb3dzIGEKKyAgICBpZiAoIGN1ciApIHsKKyAgICAgICAgd2hpbGUg
KCAoY3VyID0gY3VyLm5leHRTaWJsaW5nKSApIHsKKyAgICAgICAgICAgIGlmICggY3VyID09PSBi
ICkgeworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KKworICAgIHJldHVybiBhID8gMSA6IC0xOworfQorCisvKioKKyAqIFJldHVybnMg
YSBmdW5jdGlvbiB0byB1c2UgaW4gcHNldWRvcyBmb3IgaW5wdXQgdHlwZXMKKyAqIEBwYXJhbSB7
U3RyaW5nfSB0eXBlCisgKi8KK2Z1bmN0aW9uIGNyZWF0ZUlucHV0UHNldWRvKCB0eXBlICkgewor
ICAgIHJldHVybiBmdW5jdGlvbiggZWxlbSApIHsKKyAgICAgICAgdmFyIG5hbWUgPSBlbGVtLm5v
ZGVOYW1lLnRvTG93ZXJDYXNlKCk7CisgICAgICAgIHJldHVybiBuYW1lID09PSAiaW5wdXQiICYm
IGVsZW0udHlwZSA9PT0gdHlwZTsKKyAgICB9OworfQorCisvKioKKyAqIFJldHVybnMgYSBmdW5j
dGlvbiB0byB1c2UgaW4gcHNldWRvcyBmb3IgYnV0dG9ucworICogQHBhcmFtIHtTdHJpbmd9IHR5
cGUKKyAqLworZnVuY3Rpb24gY3JlYXRlQnV0dG9uUHNldWRvKCB0eXBlICkgeworICAgIHJldHVy
biBmdW5jdGlvbiggZWxlbSApIHsKKyAgICAgICAgdmFyIG5hbWUgPSBlbGVtLm5vZGVOYW1lLnRv
TG93ZXJDYXNlKCk7CisgICAgICAgIHJldHVybiAobmFtZSA9PT0gImlucHV0IiB8fCBuYW1lID09
PSAiYnV0dG9uIikgJiYgZWxlbS50eXBlID09PSB0eXBlOworICAgIH07Cit9CisKKy8qKgorICog
UmV0dXJucyBhIGZ1bmN0aW9uIHRvIHVzZSBpbiBwc2V1ZG9zIGZvciA6ZW5hYmxlZC86ZGlzYWJs
ZWQKKyAqIEBwYXJhbSB7Qm9vbGVhbn0gZGlzYWJsZWQgdHJ1ZSBmb3IgOmRpc2FibGVkOyBmYWxz
ZSBmb3IgOmVuYWJsZWQKKyAqLworZnVuY3Rpb24gY3JlYXRlRGlzYWJsZWRQc2V1ZG8oIGRpc2Fi
bGVkICkgeworCisgICAgLy8gS25vd24gOmRpc2FibGVkIGZhbHNlIHBvc2l0aXZlczogZmllbGRz
ZXRbZGlzYWJsZWRdID4gbGVnZW5kOm50aC1vZi10eXBlKG4rMikgOmNhbi1kaXNhYmxlCisgICAg
cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkgeworCisgICAgICAgIC8vIE9ubHkgY2VydGFpbiBlbGVt
ZW50cyBjYW4gbWF0Y2ggOmVuYWJsZWQgb3IgOmRpc2FibGVkCisgICAgICAgIC8vIGh0dHBzOi8v
aHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3NjcmlwdGluZy5odG1sI3NlbGVjdG9yLWVu
YWJsZWQKKyAgICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uv
c2NyaXB0aW5nLmh0bWwjc2VsZWN0b3ItZGlzYWJsZWQKKyAgICAgICAgaWYgKCAiZm9ybSIgaW4g
ZWxlbSApIHsKKworICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIGluaGVyaXRlZCBkaXNhYmxlZG5l
c3Mgb24gcmVsZXZhbnQgbm9uLWRpc2FibGVkIGVsZW1lbnRzOgorICAgICAgICAgICAgLy8gKiBs
aXN0ZWQgZm9ybS1hc3NvY2lhdGVkIGVsZW1lbnRzIGluIGEgZGlzYWJsZWQgZmllbGRzZXQKKyAg
ICAgICAgICAgIC8vICAgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZm9y
bXMuaHRtbCNjYXRlZ29yeS1saXN0ZWQKKyAgICAgICAgICAgIC8vICAgaHR0cHM6Ly9odG1sLnNw
ZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZm9ybXMuaHRtbCNjb25jZXB0LWZlLWRpc2FibGVkCisg
ICAgICAgICAgICAvLyAqIG9wdGlvbiBlbGVtZW50cyBpbiBhIGRpc2FibGVkIG9wdGdyb3VwCisg
ICAgICAgICAgICAvLyAgIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2Zv
cm1zLmh0bWwjY29uY2VwdC1vcHRpb24tZGlzYWJsZWQKKyAgICAgICAgICAgIC8vIEFsbCBzdWNo
IGVsZW1lbnRzIGhhdmUgYSAiZm9ybSIgcHJvcGVydHkuCisgICAgICAgICAgICBpZiAoIGVsZW0u
cGFyZW50Tm9kZSAmJiBlbGVtLmRpc2FibGVkID09PSBmYWxzZSApIHsKKworICAgICAgICAgICAg
ICAgIC8vIE9wdGlvbiBlbGVtZW50cyBkZWZlciB0byBhIHBhcmVudCBvcHRncm91cCBpZiBwcmVz
ZW50CisgICAgICAgICAgICAgICAgaWYgKCAibGFiZWwiIGluIGVsZW0gKSB7CisgICAgICAgICAg
ICAgICAgICAgIGlmICggImxhYmVsIiBpbiBlbGVtLnBhcmVudE5vZGUgKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZWxlbS5wYXJlbnROb2RlLmRpc2FibGVkID09PSBkaXNhYmxl
ZDsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBlbGVtLmRpc2FibGVkID09PSBkaXNhYmxlZDsKKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6IElFIDYg
LSAxMQorICAgICAgICAgICAgICAgIC8vIFVzZSB0aGUgaXNEaXNhYmxlZCBzaG9ydGN1dCBwcm9w
ZXJ0eSB0byBjaGVjayBmb3IgZGlzYWJsZWQgZmllbGRzZXQgYW5jZXN0b3JzCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGVsZW0uaXNEaXNhYmxlZCA9PT0gZGlzYWJsZWQgfHwKKworICAgICAgICAg
ICAgICAgICAgICAvLyBXaGVyZSB0aGVyZSBpcyBubyBpc0Rpc2FibGVkLCBjaGVjayBtYW51YWxs
eQorICAgICAgICAgICAgICAgICAgICAvKiBqc2hpbnQgLVcwMTggKi8KKyAgICAgICAgICAgICAg
ICAgICAgZWxlbS5pc0Rpc2FibGVkICE9PSAhZGlzYWJsZWQgJiYKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGRpc2FibGVkQW5jZXN0b3IoIGVsZW0gKSA9PT0gZGlzYWJsZWQ7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHJldHVybiBlbGVtLmRpc2FibGVkID09PSBkaXNhYmxlZDsKKwor
ICAgICAgICAvLyBUcnkgdG8gd2lubm93IG91dCBlbGVtZW50cyB0aGF0IGNhbid0IGJlIGRpc2Fi
bGVkIGJlZm9yZSB0cnVzdGluZyB0aGUgZGlzYWJsZWQgcHJvcGVydHkuCisgICAgICAgIC8vIFNv
bWUgdmljdGltcyBnZXQgY2F1Z2h0IGluIG91ciBuZXQgKGxhYmVsLCBsZWdlbmQsIG1lbnUsIHRy
YWNrKSwgYnV0IGl0IHNob3VsZG4ndAorICAgICAgICAvLyBldmVuIGV4aXN0IG9uIHRoZW0sIGxl
dCBhbG9uZSBoYXZlIGEgYm9vbGVhbiB2YWx1ZS4KKyAgICAgICAgfSBlbHNlIGlmICggImxhYmVs
IiBpbiBlbGVtICkgeworICAgICAgICAgICAgcmV0dXJuIGVsZW0uZGlzYWJsZWQgPT09IGRpc2Fi
bGVkOworICAgICAgICB9CisKKyAgICAgICAgLy8gUmVtYWluaW5nIGVsZW1lbnRzIGFyZSBuZWl0
aGVyIDplbmFibGVkIG5vciA6ZGlzYWJsZWQKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH07
Cit9CisKKy8qKgorICogUmV0dXJucyBhIGZ1bmN0aW9uIHRvIHVzZSBpbiBwc2V1ZG9zIGZvciBw
b3NpdGlvbmFscworICogQHBhcmFtIHtGdW5jdGlvbn0gZm4KKyAqLworZnVuY3Rpb24gY3JlYXRl
UG9zaXRpb25hbFBzZXVkbyggZm4gKSB7CisgICAgcmV0dXJuIG1hcmtGdW5jdGlvbihmdW5jdGlv
biggYXJndW1lbnQgKSB7CisgICAgICAgIGFyZ3VtZW50ID0gK2FyZ3VtZW50OworICAgICAgICBy
ZXR1cm4gbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCBzZWVkLCBtYXRjaGVzICkgeworICAgICAgICAg
ICAgdmFyIGosCisgICAgICAgICAgICAgICAgbWF0Y2hJbmRleGVzID0gZm4oIFtdLCBzZWVkLmxl
bmd0aCwgYXJndW1lbnQgKSwKKyAgICAgICAgICAgICAgICBpID0gbWF0Y2hJbmRleGVzLmxlbmd0
aDsKKworICAgICAgICAgICAgLy8gTWF0Y2ggZWxlbWVudHMgZm91bmQgYXQgdGhlIHNwZWNpZmll
ZCBpbmRleGVzCisgICAgICAgICAgICB3aGlsZSAoIGktLSApIHsKKyAgICAgICAgICAgICAgICBp
ZiAoIHNlZWRbIChqID0gbWF0Y2hJbmRleGVzW2ldKSBdICkgeworICAgICAgICAgICAgICAgICAg
ICBzZWVkW2pdID0gIShtYXRjaGVzW2pdID0gc2VlZFtqXSk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICB9KTsKK30KKworLyoqCisgKiBDaGVja3Mg
YSBub2RlIGZvciB2YWxpZGl0eSBhcyBhIFNpenpsZSBjb250ZXh0CisgKiBAcGFyYW0ge0VsZW1l
bnR8T2JqZWN0PX0gY29udGV4dAorICogQHJldHVybnMge0VsZW1lbnR8T2JqZWN0fEJvb2xlYW59
IFRoZSBpbnB1dCBub2RlIGlmIGFjY2VwdGFibGUsIG90aGVyd2lzZSBhIGZhbHN5IHZhbHVlCisg
Ki8KK2Z1bmN0aW9uIHRlc3RDb250ZXh0KCBjb250ZXh0ICkgeworICAgIHJldHVybiBjb250ZXh0
ICYmIHR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lICE9PSAidW5kZWZpbmVkIiAm
JiBjb250ZXh0OworfQorCisvLyBFeHBvc2Ugc3VwcG9ydCB2YXJzIGZvciBjb252ZW5pZW5jZQor
c3VwcG9ydCA9IFNpenpsZS5zdXBwb3J0ID0ge307CisKKy8qKgorICogRGV0ZWN0cyBYTUwgbm9k
ZXMKKyAqIEBwYXJhbSB7RWxlbWVudHxPYmplY3R9IGVsZW0gQW4gZWxlbWVudCBvciBhIGRvY3Vt
ZW50CisgKiBAcmV0dXJucyB7Qm9vbGVhbn0gVHJ1ZSBpZmYgZWxlbSBpcyBhIG5vbi1IVE1MIFhN
TCBub2RlCisgKi8KK2lzWE1MID0gU2l6emxlLmlzWE1MID0gZnVuY3Rpb24oIGVsZW0gKSB7Cisg
ICAgLy8gZG9jdW1lbnRFbGVtZW50IGlzIHZlcmlmaWVkIGZvciBjYXNlcyB3aGVyZSBpdCBkb2Vz
bid0IHlldCBleGlzdAorICAgIC8vIChzdWNoIGFzIGxvYWRpbmcgaWZyYW1lcyBpbiBJRSAtICM0
ODMzKQorICAgIHZhciBkb2N1bWVudEVsZW1lbnQgPSBlbGVtICYmIChlbGVtLm93bmVyRG9jdW1l
bnQgfHwgZWxlbSkuZG9jdW1lbnRFbGVtZW50OworICAgIHJldHVybiBkb2N1bWVudEVsZW1lbnQg
PyBkb2N1bWVudEVsZW1lbnQubm9kZU5hbWUgIT09ICJIVE1MIiA6IGZhbHNlOworfTsKKworLyoq
CisgKiBTZXRzIGRvY3VtZW50LXJlbGF0ZWQgdmFyaWFibGVzIG9uY2UgYmFzZWQgb24gdGhlIGN1
cnJlbnQgZG9jdW1lbnQKKyAqIEBwYXJhbSB7RWxlbWVudHxPYmplY3R9IFtkb2NdIEFuIGVsZW1l
bnQgb3IgZG9jdW1lbnQgb2JqZWN0IHRvIHVzZSB0byBzZXQgdGhlIGRvY3VtZW50CisgKiBAcmV0
dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjdXJyZW50IGRvY3VtZW50CisgKi8KK3NldERvY3Vt
ZW50ID0gU2l6emxlLnNldERvY3VtZW50ID0gZnVuY3Rpb24oIG5vZGUgKSB7CisgICAgdmFyIGhh
c0NvbXBhcmUsIHN1YldpbmRvdywKKyAgICAgICAgZG9jID0gbm9kZSA/IG5vZGUub3duZXJEb2N1
bWVudCB8fCBub2RlIDogcHJlZmVycmVkRG9jOworCisgICAgLy8gUmV0dXJuIGVhcmx5IGlmIGRv
YyBpcyBpbnZhbGlkIG9yIGFscmVhZHkgc2VsZWN0ZWQKKyAgICBpZiAoIGRvYyA9PT0gZG9jdW1l
bnQgfHwgZG9jLm5vZGVUeXBlICE9PSA5IHx8ICFkb2MuZG9jdW1lbnRFbGVtZW50ICkgeworICAg
ICAgICByZXR1cm4gZG9jdW1lbnQ7CisgICAgfQorCisgICAgLy8gVXBkYXRlIGdsb2JhbCB2YXJp
YWJsZXMKKyAgICBkb2N1bWVudCA9IGRvYzsKKyAgICBkb2NFbGVtID0gZG9jdW1lbnQuZG9jdW1l
bnRFbGVtZW50OworICAgIGRvY3VtZW50SXNIVE1MID0gIWlzWE1MKCBkb2N1bWVudCApOworCisg
ICAgLy8gU3VwcG9ydDogSUUgOS0xMSwgRWRnZQorICAgIC8vIEFjY2Vzc2luZyBpZnJhbWUgZG9j
dW1lbnRzIGFmdGVyIHVubG9hZCB0aHJvd3MgInBlcm1pc3Npb24gZGVuaWVkIiBlcnJvcnMgKGpR
dWVyeSAjMTM5MzYpCisgICAgaWYgKCBwcmVmZXJyZWREb2MgIT09IGRvY3VtZW50ICYmCisgICAg
ICAgIChzdWJXaW5kb3cgPSBkb2N1bWVudC5kZWZhdWx0VmlldykgJiYgc3ViV2luZG93LnRvcCAh
PT0gc3ViV2luZG93ICkgeworCisgICAgICAgIC8vIFN1cHBvcnQ6IElFIDExLCBFZGdlCisgICAg
ICAgIGlmICggc3ViV2luZG93LmFkZEV2ZW50TGlzdGVuZXIgKSB7CisgICAgICAgICAgICBzdWJX
aW5kb3cuYWRkRXZlbnRMaXN0ZW5lciggInVubG9hZCIsIHVubG9hZEhhbmRsZXIsIGZhbHNlICk7
CisKKyAgICAgICAgLy8gU3VwcG9ydDogSUUgOSAtIDEwIG9ubHkKKyAgICAgICAgfSBlbHNlIGlm
ICggc3ViV2luZG93LmF0dGFjaEV2ZW50ICkgeworICAgICAgICAgICAgc3ViV2luZG93LmF0dGFj
aEV2ZW50KCAib251bmxvYWQiLCB1bmxvYWRIYW5kbGVyICk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICAvKiBBdHRyaWJ1dGVzCisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisgICAgLy8gU3VwcG9y
dDogSUU8OAorICAgIC8vIFZlcmlmeSB0aGF0IGdldEF0dHJpYnV0ZSByZWFsbHkgcmV0dXJucyBh
dHRyaWJ1dGVzIGFuZCBub3QgcHJvcGVydGllcworICAgIC8vIChleGNlcHRpbmcgSUU4IGJvb2xl
YW5zKQorICAgIHN1cHBvcnQuYXR0cmlidXRlcyA9IGFzc2VydChmdW5jdGlvbiggZWwgKSB7Cisg
ICAgICAgIGVsLmNsYXNzTmFtZSA9ICJpIjsKKyAgICAgICAgcmV0dXJuICFlbC5nZXRBdHRyaWJ1
dGUoImNsYXNzTmFtZSIpOworICAgIH0pOworCisgICAgLyogZ2V0RWxlbWVudChzKUJ5KgorICAg
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gKi8KKworICAgIC8vIENoZWNrIGlmIGdldEVsZW1lbnRzQnlUYWdOYW1l
KCIqIikgcmV0dXJucyBvbmx5IGVsZW1lbnRzCisgICAgc3VwcG9ydC5nZXRFbGVtZW50c0J5VGFn
TmFtZSA9IGFzc2VydChmdW5jdGlvbiggZWwgKSB7CisgICAgICAgIGVsLmFwcGVuZENoaWxkKCBk
b2N1bWVudC5jcmVhdGVDb21tZW50KCIiKSApOworICAgICAgICByZXR1cm4gIWVsLmdldEVsZW1l
bnRzQnlUYWdOYW1lKCIqIikubGVuZ3RoOworICAgIH0pOworCisgICAgLy8gU3VwcG9ydDogSUU8
OQorICAgIHN1cHBvcnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSA9IHJuYXRpdmUudGVzdCggZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSApOworCisgICAgLy8gU3VwcG9ydDogSUU8MTAK
KyAgICAvLyBDaGVjayBpZiBnZXRFbGVtZW50QnlJZCByZXR1cm5zIGVsZW1lbnRzIGJ5IG5hbWUK
KyAgICAvLyBUaGUgYnJva2VuIGdldEVsZW1lbnRCeUlkIG1ldGhvZHMgZG9uJ3QgcGljayB1cCBw
cm9ncmFtbWF0aWNhbGx5LXNldCBuYW1lcywKKyAgICAvLyBzbyB1c2UgYSByb3VuZGFib3V0IGdl
dEVsZW1lbnRzQnlOYW1lIHRlc3QKKyAgICBzdXBwb3J0LmdldEJ5SWQgPSBhc3NlcnQoZnVuY3Rp
b24oIGVsICkgeworICAgICAgICBkb2NFbGVtLmFwcGVuZENoaWxkKCBlbCApLmlkID0gZXhwYW5k
bzsKKyAgICAgICAgcmV0dXJuICFkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSB8fCAhZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeU5hbWUoIGV4cGFuZG8gKS5sZW5ndGg7CisgICAgfSk7CisKKyAgICAv
LyBJRCBmaWx0ZXIgYW5kIGZpbmQKKyAgICBpZiAoIHN1cHBvcnQuZ2V0QnlJZCApIHsKKyAgICAg
ICAgRXhwci5maWx0ZXJbIklEIl0gPSBmdW5jdGlvbiggaWQgKSB7CisgICAgICAgICAgICB2YXIg
YXR0cklkID0gaWQucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKTsKKyAgICAgICAgICAg
IHJldHVybiBmdW5jdGlvbiggZWxlbSApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZWxlbS5n
ZXRBdHRyaWJ1dGUoImlkIikgPT09IGF0dHJJZDsKKyAgICAgICAgICAgIH07CisgICAgICAgIH07
CisgICAgICAgIEV4cHIuZmluZFsiSUQiXSA9IGZ1bmN0aW9uKCBpZCwgY29udGV4dCApIHsKKyAg
ICAgICAgICAgIGlmICggdHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQgIT09ICJ1bmRlZmlu
ZWQiICYmIGRvY3VtZW50SXNIVE1MICkgeworICAgICAgICAgICAgICAgIHZhciBlbGVtID0gY29u
dGV4dC5nZXRFbGVtZW50QnlJZCggaWQgKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZWxlbSA/
IFsgZWxlbSBdIDogW107CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfSBlbHNlIHsK
KyAgICAgICAgRXhwci5maWx0ZXJbIklEIl0gPSAgZnVuY3Rpb24oIGlkICkgeworICAgICAgICAg
ICAgdmFyIGF0dHJJZCA9IGlkLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICk7CisgICAg
ICAgICAgICByZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7CisgICAgICAgICAgICAgICAgdmFyIG5v
ZGUgPSB0eXBlb2YgZWxlbS5nZXRBdHRyaWJ1dGVOb2RlICE9PSAidW5kZWZpbmVkIiAmJgorICAg
ICAgICAgICAgICAgICAgICBlbGVtLmdldEF0dHJpYnV0ZU5vZGUoImlkIik7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIG5vZGUgJiYgbm9kZS52YWx1ZSA9PT0gYXR0cklkOworICAgICAgICAgICAg
fTsKKyAgICAgICAgfTsKKworICAgICAgICAvLyBTdXBwb3J0OiBJRSA2IC0gNyBvbmx5CisgICAg
ICAgIC8vIGdldEVsZW1lbnRCeUlkIGlzIG5vdCByZWxpYWJsZSBhcyBhIGZpbmQgc2hvcnRjdXQK
KyAgICAgICAgRXhwci5maW5kWyJJRCJdID0gZnVuY3Rpb24oIGlkLCBjb250ZXh0ICkgeworICAg
ICAgICAgICAgaWYgKCB0eXBlb2YgY29udGV4dC5nZXRFbGVtZW50QnlJZCAhPT0gInVuZGVmaW5l
ZCIgJiYgZG9jdW1lbnRJc0hUTUwgKSB7CisgICAgICAgICAgICAgICAgdmFyIG5vZGUsIGksIGVs
ZW1zLAorICAgICAgICAgICAgICAgICAgICBlbGVtID0gY29udGV4dC5nZXRFbGVtZW50QnlJZCgg
aWQgKTsKKworICAgICAgICAgICAgICAgIGlmICggZWxlbSApIHsKKworICAgICAgICAgICAgICAg
ICAgICAvLyBWZXJpZnkgdGhlIGlkIGF0dHJpYnV0ZQorICAgICAgICAgICAgICAgICAgICBub2Rl
ID0gZWxlbS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpOworICAgICAgICAgICAgICAgICAgICBpZiAo
IG5vZGUgJiYgbm9kZS52YWx1ZSA9PT0gaWQgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gWyBlbGVtIF07CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg
ICAgICAvLyBGYWxsIGJhY2sgb24gZ2V0RWxlbWVudHNCeU5hbWUKKyAgICAgICAgICAgICAgICAg
ICAgZWxlbXMgPSBjb250ZXh0LmdldEVsZW1lbnRzQnlOYW1lKCBpZCApOworICAgICAgICAgICAg
ICAgICAgICBpID0gMDsKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCAoZWxlbSA9IGVsZW1z
W2krK10pICkgeworICAgICAgICAgICAgICAgICAgICAgICAgbm9kZSA9IGVsZW0uZ2V0QXR0cmli
dXRlTm9kZSgiaWQiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICggbm9kZSAmJiBub2Rl
LnZhbHVlID09PSBpZCApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWyBl
bGVtIF07CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICByZXR1cm4gW107CisgICAgICAg
ICAgICB9CisgICAgICAgIH07CisgICAgfQorCisgICAgLy8gVGFnCisgICAgRXhwci5maW5kWyJU
QUciXSA9IHN1cHBvcnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUgPworICAgICAgICBmdW5jdGlvbigg
dGFnLCBjb250ZXh0ICkgeworICAgICAgICAgICAgaWYgKCB0eXBlb2YgY29udGV4dC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSAhPT0gInVuZGVmaW5lZCIgKSB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIHRhZyApOworCisgICAgICAgICAgICAvLyBE
b2N1bWVudEZyYWdtZW50IG5vZGVzIGRvbid0IGhhdmUgZ0VCVE4KKyAgICAgICAgICAgIH0gZWxz
ZSBpZiAoIHN1cHBvcnQucXNhICkgeworICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0LnF1
ZXJ5U2VsZWN0b3JBbGwoIHRhZyApOworICAgICAgICAgICAgfQorICAgICAgICB9IDoKKworICAg
ICAgICBmdW5jdGlvbiggdGFnLCBjb250ZXh0ICkgeworICAgICAgICAgICAgdmFyIGVsZW0sCisg
ICAgICAgICAgICAgICAgdG1wID0gW10sCisgICAgICAgICAgICAgICAgaSA9IDAsCisgICAgICAg
ICAgICAgICAgLy8gQnkgaGFwcHkgY29pbmNpZGVuY2UsIGEgKGJyb2tlbikgZ0VCVE4gYXBwZWFy
cyBvbiBEb2N1bWVudEZyYWdtZW50IG5vZGVzIHRvbworICAgICAgICAgICAgICAgIHJlc3VsdHMg
PSBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lKCB0YWcgKTsKKworICAgICAgICAgICAgLy8g
RmlsdGVyIG91dCBwb3NzaWJsZSBjb21tZW50cworICAgICAgICAgICAgaWYgKCB0YWcgPT09ICIq
IiApIHsKKyAgICAgICAgICAgICAgICB3aGlsZSAoIChlbGVtID0gcmVzdWx0c1tpKytdKSApIHsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgdG1wLnB1c2goIGVsZW0gKTsKKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHJldHVybiB0bXA7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0czsKKyAgICAgICAgfTsKKworICAg
IC8vIENsYXNzCisgICAgRXhwci5maW5kWyJDTEFTUyJdID0gc3VwcG9ydC5nZXRFbGVtZW50c0J5
Q2xhc3NOYW1lICYmIGZ1bmN0aW9uKCBjbGFzc05hbWUsIGNvbnRleHQgKSB7CisgICAgICAgIGlm
ICggdHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSAhPT0gInVuZGVmaW5lZCIg
JiYgZG9jdW1lbnRJc0hUTUwgKSB7CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5nZXRFbGVt
ZW50c0J5Q2xhc3NOYW1lKCBjbGFzc05hbWUgKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICAv
KiBRU0EvbWF0Y2hlc1NlbGVjdG9yCisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisgICAgLy8gUVNB
IGFuZCBtYXRjaGVzU2VsZWN0b3Igc3VwcG9ydAorCisgICAgLy8gbWF0Y2hlc1NlbGVjdG9yKDph
Y3RpdmUpIHJlcG9ydHMgZmFsc2Ugd2hlbiB0cnVlIChJRTkvT3BlcmEgMTEuNSkKKyAgICByYnVn
Z3lNYXRjaGVzID0gW107CisKKyAgICAvLyBxU2EoOmZvY3VzKSByZXBvcnRzIGZhbHNlIHdoZW4g
dHJ1ZSAoQ2hyb21lIDIxKQorICAgIC8vIFdlIGFsbG93IHRoaXMgYmVjYXVzZSBvZiBhIGJ1ZyBp
biBJRTgvOSB0aGF0IHRocm93cyBhbiBlcnJvcgorICAgIC8vIHdoZW5ldmVyIGBkb2N1bWVudC5h
Y3RpdmVFbGVtZW50YCBpcyBhY2Nlc3NlZCBvbiBhbiBpZnJhbWUKKyAgICAvLyBTbywgd2UgYWxs
b3cgOmZvY3VzIHRvIHBhc3MgdGhyb3VnaCBRU0EgYWxsIHRoZSB0aW1lIHRvIGF2b2lkIHRoZSBJ
RSBlcnJvcgorICAgIC8vIFNlZSBodHRwczovL2J1Z3MuanF1ZXJ5LmNvbS90aWNrZXQvMTMzNzgK
KyAgICByYnVnZ3lRU0EgPSBbXTsKKworICAgIGlmICggKHN1cHBvcnQucXNhID0gcm5hdGl2ZS50
ZXN0KCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsICkpICkgeworICAgICAgICAvLyBCdWlsZCBR
U0EgcmVnZXgKKyAgICAgICAgLy8gUmVnZXggc3RyYXRlZ3kgYWRvcHRlZCBmcm9tIERpZWdvIFBl
cmluaQorICAgICAgICBhc3NlcnQoZnVuY3Rpb24oIGVsICkgeworICAgICAgICAgICAgLy8gU2Vs
ZWN0IGlzIHNldCB0byBlbXB0eSBzdHJpbmcgb24gcHVycG9zZQorICAgICAgICAgICAgLy8gVGhp
cyBpcyB0byB0ZXN0IElFJ3MgdHJlYXRtZW50IG9mIG5vdCBleHBsaWNpdGx5CisgICAgICAgICAg
ICAvLyBzZXR0aW5nIGEgYm9vbGVhbiBjb250ZW50IGF0dHJpYnV0ZSwKKyAgICAgICAgICAgIC8v
IHNpbmNlIGl0cyBwcmVzZW5jZSBzaG91bGQgYmUgZW5vdWdoCisgICAgICAgICAgICAvLyBodHRw
czovL2J1Z3MuanF1ZXJ5LmNvbS90aWNrZXQvMTIzNTkKKyAgICAgICAgICAgIGRvY0VsZW0uYXBw
ZW5kQ2hpbGQoIGVsICkuaW5uZXJIVE1MID0gIjxhIGlkPSciICsgZXhwYW5kbyArICInPjwvYT4i
ICsKKyAgICAgICAgICAgICAgICAiPHNlbGVjdCBpZD0nIiArIGV4cGFuZG8gKyAiLVxyXFwnIG1z
YWxsb3djYXB0dXJlPScnPiIgKworICAgICAgICAgICAgICAgICI8b3B0aW9uIHNlbGVjdGVkPScn
Pjwvb3B0aW9uPjwvc2VsZWN0PiI7CisKKyAgICAgICAgICAgIC8vIFN1cHBvcnQ6IElFOCwgT3Bl
cmEgMTEtMTIuMTYKKyAgICAgICAgICAgIC8vIE5vdGhpbmcgc2hvdWxkIGJlIHNlbGVjdGVkIHdo
ZW4gZW1wdHkgc3RyaW5ncyBmb2xsb3cgXj0gb3IgJD0gb3IgKj0KKyAgICAgICAgICAgIC8vIFRo
ZSB0ZXN0IGF0dHJpYnV0ZSBtdXN0IGJlIHVua25vd24gaW4gT3BlcmEgYnV0ICJzYWZlIiBmb3Ig
V2luUlQKKyAgICAgICAgICAgIC8vIGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xp
YnJhcnkvaWUvaGg0NjUzODguYXNweCNhdHRyaWJ1dGVfc2VjdGlvbgorICAgICAgICAgICAgaWYg
KCBlbC5xdWVyeVNlbGVjdG9yQWxsKCJbbXNhbGxvd2NhcHR1cmVePScnXSIpLmxlbmd0aCApIHsK
KyAgICAgICAgICAgICAgICByYnVnZ3lRU0EucHVzaCggIlsqXiRdPSIgKyB3aGl0ZXNwYWNlICsg
IiooPzonJ3xcIlwiKSIgKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gU3VwcG9y
dDogSUU4CisgICAgICAgICAgICAvLyBCb29sZWFuIGF0dHJpYnV0ZXMgYW5kICJ2YWx1ZSIgYXJl
IG5vdCB0cmVhdGVkIGNvcnJlY3RseQorICAgICAgICAgICAgaWYgKCAhZWwucXVlcnlTZWxlY3Rv
ckFsbCgiW3NlbGVjdGVkXSIpLmxlbmd0aCApIHsKKyAgICAgICAgICAgICAgICByYnVnZ3lRU0Eu
cHVzaCggIlxcWyIgKyB3aGl0ZXNwYWNlICsgIiooPzp2YWx1ZXwiICsgYm9vbGVhbnMgKyAiKSIg
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gU3VwcG9ydDogQ2hyb21lPDI5LCBB
bmRyb2lkPDQuNCwgU2FmYXJpPDcuMCssIGlPUzw3LjArLCBQaGFudG9tSlM8MS45LjgrCisgICAg
ICAgICAgICBpZiAoICFlbC5xdWVyeVNlbGVjdG9yQWxsKCAiW2lkfj0iICsgZXhwYW5kbyArICIt
XSIgKS5sZW5ndGggKSB7CisgICAgICAgICAgICAgICAgcmJ1Z2d5UVNBLnB1c2goIn49Iik7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFdlYmtpdC9PcGVyYSAtIDpjaGVja2VkIHNo
b3VsZCByZXR1cm4gc2VsZWN0ZWQgb3B0aW9uIGVsZW1lbnRzCisgICAgICAgICAgICAvLyBodHRw
Oi8vd3d3LnczLm9yZy9UUi8yMDExL1JFQy1jc3MzLXNlbGVjdG9ycy0yMDExMDkyOS8jY2hlY2tl
ZAorICAgICAgICAgICAgLy8gSUU4IHRocm93cyBlcnJvciBoZXJlIGFuZCB3aWxsIG5vdCBzZWUg
bGF0ZXIgdGVzdHMKKyAgICAgICAgICAgIGlmICggIWVsLnF1ZXJ5U2VsZWN0b3JBbGwoIjpjaGVj
a2VkIikubGVuZ3RoICkgeworICAgICAgICAgICAgICAgIHJidWdneVFTQS5wdXNoKCI6Y2hlY2tl
ZCIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBTdXBwb3J0OiBTYWZhcmkgOCss
IGlPUyA4KworICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEzNjg1MQorICAgICAgICAgICAgLy8gSW4tcGFnZSBgc2VsZWN0b3IjaWQgc2libGlu
Zy1jb21iaW5hdG9yIHNlbGVjdG9yYCBmYWlscworICAgICAgICAgICAgaWYgKCAhZWwucXVlcnlT
ZWxlY3RvckFsbCggImEjIiArIGV4cGFuZG8gKyAiKyoiICkubGVuZ3RoICkgeworICAgICAgICAg
ICAgICAgIHJidWdneVFTQS5wdXNoKCIuIy4rWyt+XSIpOworICAgICAgICAgICAgfQorICAgICAg
ICB9KTsKKworICAgICAgICBhc3NlcnQoZnVuY3Rpb24oIGVsICkgeworICAgICAgICAgICAgZWwu
aW5uZXJIVE1MID0gIjxhIGhyZWY9JycgZGlzYWJsZWQ9J2Rpc2FibGVkJz48L2E+IiArCisgICAg
ICAgICAgICAgICAgIjxzZWxlY3QgZGlzYWJsZWQ9J2Rpc2FibGVkJz48b3B0aW9uLz48L3NlbGVj
dD4iOworCisgICAgICAgICAgICAvLyBTdXBwb3J0OiBXaW5kb3dzIDggTmF0aXZlIEFwcHMKKyAg
ICAgICAgICAgIC8vIFRoZSB0eXBlIGFuZCBuYW1lIGF0dHJpYnV0ZXMgYXJlIHJlc3RyaWN0ZWQg
ZHVyaW5nIC5pbm5lckhUTUwgYXNzaWdubWVudAorICAgICAgICAgICAgdmFyIGlucHV0ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKKyAgICAgICAgICAgIGlucHV0LnNldEF0dHJp
YnV0ZSggInR5cGUiLCAiaGlkZGVuIiApOworICAgICAgICAgICAgZWwuYXBwZW5kQ2hpbGQoIGlu
cHV0ICkuc2V0QXR0cmlidXRlKCAibmFtZSIsICJEIiApOworCisgICAgICAgICAgICAvLyBTdXBw
b3J0OiBJRTgKKyAgICAgICAgICAgIC8vIEVuZm9yY2UgY2FzZS1zZW5zaXRpdml0eSBvZiBuYW1l
IGF0dHJpYnV0ZQorICAgICAgICAgICAgaWYgKCBlbC5xdWVyeVNlbGVjdG9yQWxsKCJbbmFtZT1k
XSIpLmxlbmd0aCApIHsKKyAgICAgICAgICAgICAgICByYnVnZ3lRU0EucHVzaCggIm5hbWUiICsg
d2hpdGVzcGFjZSArICIqWypeJHwhfl0/PSIgKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgLy8gRkYgMy41IC0gOmVuYWJsZWQvOmRpc2FibGVkIGFuZCBoaWRkZW4gZWxlbWVudHMgKGhp
ZGRlbiBlbGVtZW50cyBhcmUgc3RpbGwgZW5hYmxlZCkKKyAgICAgICAgICAgIC8vIElFOCB0aHJv
d3MgZXJyb3IgaGVyZSBhbmQgd2lsbCBub3Qgc2VlIGxhdGVyIHRlc3RzCisgICAgICAgICAgICBp
ZiAoIGVsLnF1ZXJ5U2VsZWN0b3JBbGwoIjplbmFibGVkIikubGVuZ3RoICE9PSAyICkgeworICAg
ICAgICAgICAgICAgIHJidWdneVFTQS5wdXNoKCAiOmVuYWJsZWQiLCAiOmRpc2FibGVkIiApOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBTdXBwb3J0OiBJRTktMTErCisgICAgICAg
ICAgICAvLyBJRSdzIDpkaXNhYmxlZCBzZWxlY3RvciBkb2VzIG5vdCBwaWNrIHVwIHRoZSBjaGls
ZHJlbiBvZiBkaXNhYmxlZCBmaWVsZHNldHMKKyAgICAgICAgICAgIGRvY0VsZW0uYXBwZW5kQ2hp
bGQoIGVsICkuZGlzYWJsZWQgPSB0cnVlOworICAgICAgICAgICAgaWYgKCBlbC5xdWVyeVNlbGVj
dG9yQWxsKCI6ZGlzYWJsZWQiKS5sZW5ndGggIT09IDIgKSB7CisgICAgICAgICAgICAgICAgcmJ1
Z2d5UVNBLnB1c2goICI6ZW5hYmxlZCIsICI6ZGlzYWJsZWQiICk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIC8vIE9wZXJhIDEwLTExIGRvZXMgbm90IHRocm93IG9uIHBvc3QtY29tbWEg
aW52YWxpZCBwc2V1ZG9zCisgICAgICAgICAgICBlbC5xdWVyeVNlbGVjdG9yQWxsKCIqLDp4Iik7
CisgICAgICAgICAgICByYnVnZ3lRU0EucHVzaCgiLC4qOiIpOworICAgICAgICB9KTsKKyAgICB9
CisKKyAgICBpZiAoIChzdXBwb3J0Lm1hdGNoZXNTZWxlY3RvciA9IHJuYXRpdmUudGVzdCggKG1h
dGNoZXMgPSBkb2NFbGVtLm1hdGNoZXMgfHwKKyAgICAgICAgZG9jRWxlbS53ZWJraXRNYXRjaGVz
U2VsZWN0b3IgfHwKKyAgICAgICAgZG9jRWxlbS5tb3pNYXRjaGVzU2VsZWN0b3IgfHwKKyAgICAg
ICAgZG9jRWxlbS5vTWF0Y2hlc1NlbGVjdG9yIHx8CisgICAgICAgIGRvY0VsZW0ubXNNYXRjaGVz
U2VsZWN0b3IpICkpICkgeworCisgICAgICAgIGFzc2VydChmdW5jdGlvbiggZWwgKSB7CisgICAg
ICAgICAgICAvLyBDaGVjayB0byBzZWUgaWYgaXQncyBwb3NzaWJsZSB0byBkbyBtYXRjaGVzU2Vs
ZWN0b3IKKyAgICAgICAgICAgIC8vIG9uIGEgZGlzY29ubmVjdGVkIG5vZGUgKElFIDkpCisgICAg
ICAgICAgICBzdXBwb3J0LmRpc2Nvbm5lY3RlZE1hdGNoID0gbWF0Y2hlcy5jYWxsKCBlbCwgIioi
ICk7CisKKyAgICAgICAgICAgIC8vIFRoaXMgc2hvdWxkIGZhaWwgd2l0aCBhbiBleGNlcHRpb24K
KyAgICAgICAgICAgIC8vIEdlY2tvIGRvZXMgbm90IGVycm9yLCByZXR1cm5zIGZhbHNlIGluc3Rl
YWQKKyAgICAgICAgICAgIG1hdGNoZXMuY2FsbCggZWwsICJbcyE9JyddOngiICk7CisgICAgICAg
ICAgICByYnVnZ3lNYXRjaGVzLnB1c2goICIhPSIsIHBzZXVkb3MgKTsKKyAgICAgICAgfSk7Cisg
ICAgfQorCisgICAgcmJ1Z2d5UVNBID0gcmJ1Z2d5UVNBLmxlbmd0aCAmJiBuZXcgUmVnRXhwKCBy
YnVnZ3lRU0Euam9pbigifCIpICk7CisgICAgcmJ1Z2d5TWF0Y2hlcyA9IHJidWdneU1hdGNoZXMu
bGVuZ3RoICYmIG5ldyBSZWdFeHAoIHJidWdneU1hdGNoZXMuam9pbigifCIpICk7CisKKyAgICAv
KiBDb250YWlucworICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAgICBoYXNDb21wYXJlID0gcm5hdGl2
ZS50ZXN0KCBkb2NFbGVtLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uICk7CisKKyAgICAvLyBFbGVt
ZW50IGNvbnRhaW5zIGFub3RoZXIKKyAgICAvLyBQdXJwb3NlZnVsbHkgc2VsZi1leGNsdXNpdmUK
KyAgICAvLyBBcyBpbiwgYW4gZWxlbWVudCBkb2VzIG5vdCBjb250YWluIGl0c2VsZgorICAgIGNv
bnRhaW5zID0gaGFzQ29tcGFyZSB8fCBybmF0aXZlLnRlc3QoIGRvY0VsZW0uY29udGFpbnMgKSA/
CisgICAgICAgIGZ1bmN0aW9uKCBhLCBiICkgeworICAgICAgICAgICAgdmFyIGFkb3duID0gYS5u
b2RlVHlwZSA9PT0gOSA/IGEuZG9jdW1lbnRFbGVtZW50IDogYSwKKyAgICAgICAgICAgICAgICBi
dXAgPSBiICYmIGIucGFyZW50Tm9kZTsKKyAgICAgICAgICAgIHJldHVybiBhID09PSBidXAgfHwg
ISEoIGJ1cCAmJiBidXAubm9kZVR5cGUgPT09IDEgJiYgKAorICAgICAgICAgICAgICAgIGFkb3du
LmNvbnRhaW5zID8KKyAgICAgICAgICAgICAgICAgICAgYWRvd24uY29udGFpbnMoIGJ1cCApIDoK
KyAgICAgICAgICAgICAgICAgICAgYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiAmJiBhLmNvbXBh
cmVEb2N1bWVudFBvc2l0aW9uKCBidXAgKSAmIDE2CisgICAgICAgICAgICApKTsKKyAgICAgICAg
fSA6CisgICAgICAgIGZ1bmN0aW9uKCBhLCBiICkgeworICAgICAgICAgICAgaWYgKCBiICkgewor
ICAgICAgICAgICAgICAgIHdoaWxlICggKGIgPSBiLnBhcmVudE5vZGUpICkgeworICAgICAgICAg
ICAgICAgICAgICBpZiAoIGIgPT09IGEgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfTsKKworICAgIC8q
IFNvcnRpbmcKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKyAgICAvLyBEb2N1bWVudCBvcmRlciBz
b3J0aW5nCisgICAgc29ydE9yZGVyID0gaGFzQ29tcGFyZSA/CisgICAgZnVuY3Rpb24oIGEsIGIg
KSB7CisKKyAgICAgICAgLy8gRmxhZyBmb3IgZHVwbGljYXRlIHJlbW92YWwKKyAgICAgICAgaWYg
KCBhID09PSBiICkgeworICAgICAgICAgICAgaGFzRHVwbGljYXRlID0gdHJ1ZTsKKyAgICAgICAg
ICAgIHJldHVybiAwOworICAgICAgICB9CisKKyAgICAgICAgLy8gU29ydCBvbiBtZXRob2QgZXhp
c3RlbmNlIGlmIG9ubHkgb25lIGlucHV0IGhhcyBjb21wYXJlRG9jdW1lbnRQb3NpdGlvbgorICAg
ICAgICB2YXIgY29tcGFyZSA9ICFhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uIC0gIWIuY29tcGFy
ZURvY3VtZW50UG9zaXRpb247CisgICAgICAgIGlmICggY29tcGFyZSApIHsKKyAgICAgICAgICAg
IHJldHVybiBjb21wYXJlOworICAgICAgICB9CisKKyAgICAgICAgLy8gQ2FsY3VsYXRlIHBvc2l0
aW9uIGlmIGJvdGggaW5wdXRzIGJlbG9uZyB0byB0aGUgc2FtZSBkb2N1bWVudAorICAgICAgICBj
b21wYXJlID0gKCBhLm93bmVyRG9jdW1lbnQgfHwgYSApID09PSAoIGIub3duZXJEb2N1bWVudCB8
fCBiICkgPworICAgICAgICAgICAgYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiggYiApIDoKKwor
ICAgICAgICAgICAgLy8gT3RoZXJ3aXNlIHdlIGtub3cgdGhleSBhcmUgZGlzY29ubmVjdGVkCisg
ICAgICAgICAgICAxOworCisgICAgICAgIC8vIERpc2Nvbm5lY3RlZCBub2RlcworICAgICAgICBp
ZiAoIGNvbXBhcmUgJiAxIHx8CisgICAgICAgICAgICAoIXN1cHBvcnQuc29ydERldGFjaGVkICYm
IGIuY29tcGFyZURvY3VtZW50UG9zaXRpb24oIGEgKSA9PT0gY29tcGFyZSkgKSB7CisKKyAgICAg
ICAgICAgIC8vIENob29zZSB0aGUgZmlyc3QgZWxlbWVudCB0aGF0IGlzIHJlbGF0ZWQgdG8gb3Vy
IHByZWZlcnJlZCBkb2N1bWVudAorICAgICAgICAgICAgaWYgKCBhID09PSBkb2N1bWVudCB8fCBh
Lm93bmVyRG9jdW1lbnQgPT09IHByZWZlcnJlZERvYyAmJiBjb250YWlucyhwcmVmZXJyZWREb2Ms
IGEpICkgeworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGlmICggYiA9PT0gZG9jdW1lbnQgfHwgYi5vd25lckRvY3VtZW50ID09PSBwcmVmZXJy
ZWREb2MgJiYgY29udGFpbnMocHJlZmVycmVkRG9jLCBiKSApIHsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gTWFpbnRhaW4gb3JpZ2lu
YWwgb3JkZXIKKyAgICAgICAgICAgIHJldHVybiBzb3J0SW5wdXQgPworICAgICAgICAgICAgICAg
ICggaW5kZXhPZiggc29ydElucHV0LCBhICkgLSBpbmRleE9mKCBzb3J0SW5wdXQsIGIgKSApIDoK
KyAgICAgICAgICAgICAgICAwOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGNvbXBhcmUg
JiA0ID8gLTEgOiAxOworICAgIH0gOgorICAgIGZ1bmN0aW9uKCBhLCBiICkgeworICAgICAgICAv
LyBFeGl0IGVhcmx5IGlmIHRoZSBub2RlcyBhcmUgaWRlbnRpY2FsCisgICAgICAgIGlmICggYSA9
PT0gYiApIHsKKyAgICAgICAgICAgIGhhc0R1cGxpY2F0ZSA9IHRydWU7CisgICAgICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBjdXIsCisgICAgICAgICAgICBpID0g
MCwKKyAgICAgICAgICAgIGF1cCA9IGEucGFyZW50Tm9kZSwKKyAgICAgICAgICAgIGJ1cCA9IGIu
cGFyZW50Tm9kZSwKKyAgICAgICAgICAgIGFwID0gWyBhIF0sCisgICAgICAgICAgICBicCA9IFsg
YiBdOworCisgICAgICAgIC8vIFBhcmVudGxlc3Mgbm9kZXMgYXJlIGVpdGhlciBkb2N1bWVudHMg
b3IgZGlzY29ubmVjdGVkCisgICAgICAgIGlmICggIWF1cCB8fCAhYnVwICkgeworICAgICAgICAg
ICAgcmV0dXJuIGEgPT09IGRvY3VtZW50ID8gLTEgOgorICAgICAgICAgICAgICAgIGIgPT09IGRv
Y3VtZW50ID8gMSA6CisgICAgICAgICAgICAgICAgYXVwID8gLTEgOgorICAgICAgICAgICAgICAg
IGJ1cCA/IDEgOgorICAgICAgICAgICAgICAgIHNvcnRJbnB1dCA/CisgICAgICAgICAgICAgICAg
KCBpbmRleE9mKCBzb3J0SW5wdXQsIGEgKSAtIGluZGV4T2YoIHNvcnRJbnB1dCwgYiApICkgOgor
ICAgICAgICAgICAgICAgIDA7CisKKyAgICAgICAgLy8gSWYgdGhlIG5vZGVzIGFyZSBzaWJsaW5n
cywgd2UgY2FuIGRvIGEgcXVpY2sgY2hlY2sKKyAgICAgICAgfSBlbHNlIGlmICggYXVwID09PSBi
dXAgKSB7CisgICAgICAgICAgICByZXR1cm4gc2libGluZ0NoZWNrKCBhLCBiICk7CisgICAgICAg
IH0KKworICAgICAgICAvLyBPdGhlcndpc2Ugd2UgbmVlZCBmdWxsIGxpc3RzIG9mIHRoZWlyIGFu
Y2VzdG9ycyBmb3IgY29tcGFyaXNvbgorICAgICAgICBjdXIgPSBhOworICAgICAgICB3aGlsZSAo
IChjdXIgPSBjdXIucGFyZW50Tm9kZSkgKSB7CisgICAgICAgICAgICBhcC51bnNoaWZ0KCBjdXIg
KTsKKyAgICAgICAgfQorICAgICAgICBjdXIgPSBiOworICAgICAgICB3aGlsZSAoIChjdXIgPSBj
dXIucGFyZW50Tm9kZSkgKSB7CisgICAgICAgICAgICBicC51bnNoaWZ0KCBjdXIgKTsKKyAgICAg
ICAgfQorCisgICAgICAgIC8vIFdhbGsgZG93biB0aGUgdHJlZSBsb29raW5nIGZvciBhIGRpc2Ny
ZXBhbmN5CisgICAgICAgIHdoaWxlICggYXBbaV0gPT09IGJwW2ldICkgeworICAgICAgICAgICAg
aSsrOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGkgPworICAgICAgICAgICAgLy8gRG8g
YSBzaWJsaW5nIGNoZWNrIGlmIHRoZSBub2RlcyBoYXZlIGEgY29tbW9uIGFuY2VzdG9yCisgICAg
ICAgICAgICBzaWJsaW5nQ2hlY2soIGFwW2ldLCBicFtpXSApIDoKKworICAgICAgICAgICAgLy8g
T3RoZXJ3aXNlIG5vZGVzIGluIG91ciBkb2N1bWVudCBzb3J0IGZpcnN0CisgICAgICAgICAgICBh
cFtpXSA9PT0gcHJlZmVycmVkRG9jID8gLTEgOgorICAgICAgICAgICAgYnBbaV0gPT09IHByZWZl
cnJlZERvYyA/IDEgOgorICAgICAgICAgICAgMDsKKyAgICB9OworCisgICAgcmV0dXJuIGRvY3Vt
ZW50OworfTsKKworU2l6emxlLm1hdGNoZXMgPSBmdW5jdGlvbiggZXhwciwgZWxlbWVudHMgKSB7
CisgICAgcmV0dXJuIFNpenpsZSggZXhwciwgbnVsbCwgbnVsbCwgZWxlbWVudHMgKTsKK307CisK
K1NpenpsZS5tYXRjaGVzU2VsZWN0b3IgPSBmdW5jdGlvbiggZWxlbSwgZXhwciApIHsKKyAgICAv
LyBTZXQgZG9jdW1lbnQgdmFycyBpZiBuZWVkZWQKKyAgICBpZiAoICggZWxlbS5vd25lckRvY3Vt
ZW50IHx8IGVsZW0gKSAhPT0gZG9jdW1lbnQgKSB7CisgICAgICAgIHNldERvY3VtZW50KCBlbGVt
ICk7CisgICAgfQorCisgICAgLy8gTWFrZSBzdXJlIHRoYXQgYXR0cmlidXRlIHNlbGVjdG9ycyBh
cmUgcXVvdGVkCisgICAgZXhwciA9IGV4cHIucmVwbGFjZSggcmF0dHJpYnV0ZVF1b3RlcywgIj0n
JDEnXSIgKTsKKworICAgIGlmICggc3VwcG9ydC5tYXRjaGVzU2VsZWN0b3IgJiYgZG9jdW1lbnRJ
c0hUTUwgJiYKKyAgICAgICAgIWNvbXBpbGVyQ2FjaGVbIGV4cHIgKyAiICIgXSAmJgorICAgICAg
ICAoICFyYnVnZ3lNYXRjaGVzIHx8ICFyYnVnZ3lNYXRjaGVzLnRlc3QoIGV4cHIgKSApICYmCisg
ICAgICAgICggIXJidWdneVFTQSAgICAgfHwgIXJidWdneVFTQS50ZXN0KCBleHByICkgKSApIHsK
KworICAgICAgICB0cnkgeworICAgICAgICAgICAgdmFyIHJldCA9IG1hdGNoZXMuY2FsbCggZWxl
bSwgZXhwciApOworCisgICAgICAgICAgICAvLyBJRSA5J3MgbWF0Y2hlc1NlbGVjdG9yIHJldHVy
bnMgZmFsc2Ugb24gZGlzY29ubmVjdGVkIG5vZGVzCisgICAgICAgICAgICBpZiAoIHJldCB8fCBz
dXBwb3J0LmRpc2Nvbm5lY3RlZE1hdGNoIHx8CisgICAgICAgICAgICAgICAgICAgIC8vIEFzIHdl
bGwsIGRpc2Nvbm5lY3RlZCBub2RlcyBhcmUgc2FpZCB0byBiZSBpbiBhIGRvY3VtZW50CisgICAg
ICAgICAgICAgICAgICAgIC8vIGZyYWdtZW50IGluIElFIDkKKyAgICAgICAgICAgICAgICAgICAg
ZWxlbS5kb2N1bWVudCAmJiBlbGVtLmRvY3VtZW50Lm5vZGVUeXBlICE9PSAxMSApIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gcmV0OworICAgICAgICAgICAgfQorICAgICAgICB9IGNhdGNoIChl
KSB7fQorICAgIH0KKworICAgIHJldHVybiBTaXp6bGUoIGV4cHIsIGRvY3VtZW50LCBudWxsLCBb
IGVsZW0gXSApLmxlbmd0aCA+IDA7Cit9OworCitTaXp6bGUuY29udGFpbnMgPSBmdW5jdGlvbigg
Y29udGV4dCwgZWxlbSApIHsKKyAgICAvLyBTZXQgZG9jdW1lbnQgdmFycyBpZiBuZWVkZWQKKyAg
ICBpZiAoICggY29udGV4dC5vd25lckRvY3VtZW50IHx8IGNvbnRleHQgKSAhPT0gZG9jdW1lbnQg
KSB7CisgICAgICAgIHNldERvY3VtZW50KCBjb250ZXh0ICk7CisgICAgfQorICAgIHJldHVybiBj
b250YWlucyggY29udGV4dCwgZWxlbSApOworfTsKKworU2l6emxlLmF0dHIgPSBmdW5jdGlvbigg
ZWxlbSwgbmFtZSApIHsKKyAgICAvLyBTZXQgZG9jdW1lbnQgdmFycyBpZiBuZWVkZWQKKyAgICBp
ZiAoICggZWxlbS5vd25lckRvY3VtZW50IHx8IGVsZW0gKSAhPT0gZG9jdW1lbnQgKSB7CisgICAg
ICAgIHNldERvY3VtZW50KCBlbGVtICk7CisgICAgfQorCisgICAgdmFyIGZuID0gRXhwci5hdHRy
SGFuZGxlWyBuYW1lLnRvTG93ZXJDYXNlKCkgXSwKKyAgICAgICAgLy8gRG9uJ3QgZ2V0IGZvb2xl
ZCBieSBPYmplY3QucHJvdG90eXBlIHByb3BlcnRpZXMgKGpRdWVyeSAjMTM4MDcpCisgICAgICAg
IHZhbCA9IGZuICYmIGhhc093bi5jYWxsKCBFeHByLmF0dHJIYW5kbGUsIG5hbWUudG9Mb3dlckNh
c2UoKSApID8KKyAgICAgICAgICAgIGZuKCBlbGVtLCBuYW1lLCAhZG9jdW1lbnRJc0hUTUwgKSA6
CisgICAgICAgICAgICB1bmRlZmluZWQ7CisKKyAgICByZXR1cm4gdmFsICE9PSB1bmRlZmluZWQg
PworICAgICAgICB2YWwgOgorICAgICAgICBzdXBwb3J0LmF0dHJpYnV0ZXMgfHwgIWRvY3VtZW50
SXNIVE1MID8KKyAgICAgICAgICAgIGVsZW0uZ2V0QXR0cmlidXRlKCBuYW1lICkgOgorICAgICAg
ICAgICAgKHZhbCA9IGVsZW0uZ2V0QXR0cmlidXRlTm9kZShuYW1lKSkgJiYgdmFsLnNwZWNpZmll
ZCA/CisgICAgICAgICAgICAgICAgdmFsLnZhbHVlIDoKKyAgICAgICAgICAgICAgICBudWxsOwor
fTsKKworU2l6emxlLmVzY2FwZSA9IGZ1bmN0aW9uKCBzZWwgKSB7CisgICAgcmV0dXJuIChzZWwg
KyAiIikucmVwbGFjZSggcmNzc2VzY2FwZSwgZmNzc2VzY2FwZSApOworfTsKKworU2l6emxlLmVy
cm9yID0gZnVuY3Rpb24oIG1zZyApIHsKKyAgICB0aHJvdyBuZXcgRXJyb3IoICJTeW50YXggZXJy
b3IsIHVucmVjb2duaXplZCBleHByZXNzaW9uOiAiICsgbXNnICk7Cit9OworCisvKioKKyAqIERv
Y3VtZW50IHNvcnRpbmcgYW5kIHJlbW92aW5nIGR1cGxpY2F0ZXMKKyAqIEBwYXJhbSB7QXJyYXlM
aWtlfSByZXN1bHRzCisgKi8KK1NpenpsZS51bmlxdWVTb3J0ID0gZnVuY3Rpb24oIHJlc3VsdHMg
KSB7CisgICAgdmFyIGVsZW0sCisgICAgICAgIGR1cGxpY2F0ZXMgPSBbXSwKKyAgICAgICAgaiA9
IDAsCisgICAgICAgIGkgPSAwOworCisgICAgLy8gVW5sZXNzIHdlICprbm93KiB3ZSBjYW4gZGV0
ZWN0IGR1cGxpY2F0ZXMsIGFzc3VtZSB0aGVpciBwcmVzZW5jZQorICAgIGhhc0R1cGxpY2F0ZSA9
ICFzdXBwb3J0LmRldGVjdER1cGxpY2F0ZXM7CisgICAgc29ydElucHV0ID0gIXN1cHBvcnQuc29y
dFN0YWJsZSAmJiByZXN1bHRzLnNsaWNlKCAwICk7CisgICAgcmVzdWx0cy5zb3J0KCBzb3J0T3Jk
ZXIgKTsKKworICAgIGlmICggaGFzRHVwbGljYXRlICkgeworICAgICAgICB3aGlsZSAoIChlbGVt
ID0gcmVzdWx0c1tpKytdKSApIHsKKyAgICAgICAgICAgIGlmICggZWxlbSA9PT0gcmVzdWx0c1sg
aSBdICkgeworICAgICAgICAgICAgICAgIGogPSBkdXBsaWNhdGVzLnB1c2goIGkgKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICB3aGlsZSAoIGotLSApIHsKKyAgICAgICAgICAg
IHJlc3VsdHMuc3BsaWNlKCBkdXBsaWNhdGVzWyBqIF0sIDEgKTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIC8vIENsZWFyIGlucHV0IGFmdGVyIHNvcnRpbmcgdG8gcmVsZWFzZSBvYmplY3RzCisg
ICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9qcXVlcnkvc2l6emxlL3B1bGwvMjI1CisgICAg
c29ydElucHV0ID0gbnVsbDsKKworICAgIHJldHVybiByZXN1bHRzOworfTsKKworLyoqCisgKiBV
dGlsaXR5IGZ1bmN0aW9uIGZvciByZXRyaWV2aW5nIHRoZSB0ZXh0IHZhbHVlIG9mIGFuIGFycmF5
IG9mIERPTSBub2RlcworICogQHBhcmFtIHtBcnJheXxFbGVtZW50fSBlbGVtCisgKi8KK2dldFRl
eHQgPSBTaXp6bGUuZ2V0VGV4dCA9IGZ1bmN0aW9uKCBlbGVtICkgeworICAgIHZhciBub2RlLAor
ICAgICAgICByZXQgPSAiIiwKKyAgICAgICAgaSA9IDAsCisgICAgICAgIG5vZGVUeXBlID0gZWxl
bS5ub2RlVHlwZTsKKworICAgIGlmICggIW5vZGVUeXBlICkgeworICAgICAgICAvLyBJZiBubyBu
b2RlVHlwZSwgdGhpcyBpcyBleHBlY3RlZCB0byBiZSBhbiBhcnJheQorICAgICAgICB3aGlsZSAo
IChub2RlID0gZWxlbVtpKytdKSApIHsKKyAgICAgICAgICAgIC8vIERvIG5vdCB0cmF2ZXJzZSBj
b21tZW50IG5vZGVzCisgICAgICAgICAgICByZXQgKz0gZ2V0VGV4dCggbm9kZSApOworICAgICAg
ICB9CisgICAgfSBlbHNlIGlmICggbm9kZVR5cGUgPT09IDEgfHwgbm9kZVR5cGUgPT09IDkgfHwg
bm9kZVR5cGUgPT09IDExICkgeworICAgICAgICAvLyBVc2UgdGV4dENvbnRlbnQgZm9yIGVsZW1l
bnRzCisgICAgICAgIC8vIGlubmVyVGV4dCB1c2FnZSByZW1vdmVkIGZvciBjb25zaXN0ZW5jeSBv
ZiBuZXcgbGluZXMgKGpRdWVyeSAjMTExNTMpCisgICAgICAgIGlmICggdHlwZW9mIGVsZW0udGV4
dENvbnRlbnQgPT09ICJzdHJpbmciICkgeworICAgICAgICAgICAgcmV0dXJuIGVsZW0udGV4dENv
bnRlbnQ7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBUcmF2ZXJzZSBpdHMgY2hp
bGRyZW4KKyAgICAgICAgICAgIGZvciAoIGVsZW0gPSBlbGVtLmZpcnN0Q2hpbGQ7IGVsZW07IGVs
ZW0gPSBlbGVtLm5leHRTaWJsaW5nICkgeworICAgICAgICAgICAgICAgIHJldCArPSBnZXRUZXh0
KCBlbGVtICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKCBub2Rl
VHlwZSA9PT0gMyB8fCBub2RlVHlwZSA9PT0gNCApIHsKKyAgICAgICAgcmV0dXJuIGVsZW0ubm9k
ZVZhbHVlOworICAgIH0KKyAgICAvLyBEbyBub3QgaW5jbHVkZSBjb21tZW50IG9yIHByb2Nlc3Np
bmcgaW5zdHJ1Y3Rpb24gbm9kZXMKKworICAgIHJldHVybiByZXQ7Cit9OworCitFeHByID0gU2l6
emxlLnNlbGVjdG9ycyA9IHsKKworICAgIC8vIENhbiBiZSBhZGp1c3RlZCBieSB0aGUgdXNlcgor
ICAgIGNhY2hlTGVuZ3RoOiA1MCwKKworICAgIGNyZWF0ZVBzZXVkbzogbWFya0Z1bmN0aW9uLAor
CisgICAgbWF0Y2g6IG1hdGNoRXhwciwKKworICAgIGF0dHJIYW5kbGU6IHt9LAorCisgICAgZmlu
ZDoge30sCisKKyAgICByZWxhdGl2ZTogeworICAgICAgICAiPiI6IHsgZGlyOiAicGFyZW50Tm9k
ZSIsIGZpcnN0OiB0cnVlIH0sCisgICAgICAgICIgIjogeyBkaXI6ICJwYXJlbnROb2RlIiB9LAor
ICAgICAgICAiKyI6IHsgZGlyOiAicHJldmlvdXNTaWJsaW5nIiwgZmlyc3Q6IHRydWUgfSwKKyAg
ICAgICAgIn4iOiB7IGRpcjogInByZXZpb3VzU2libGluZyIgfQorICAgIH0sCisKKyAgICBwcmVG
aWx0ZXI6IHsKKyAgICAgICAgIkFUVFIiOiBmdW5jdGlvbiggbWF0Y2ggKSB7CisgICAgICAgICAg
ICBtYXRjaFsxXSA9IG1hdGNoWzFdLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICk7CisK
KyAgICAgICAgICAgIC8vIE1vdmUgdGhlIGdpdmVuIHZhbHVlIHRvIG1hdGNoWzNdIHdoZXRoZXIg
cXVvdGVkIG9yIHVucXVvdGVkCisgICAgICAgICAgICBtYXRjaFszXSA9ICggbWF0Y2hbM10gfHwg
bWF0Y2hbNF0gfHwgbWF0Y2hbNV0gfHwgIiIgKS5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2Fw
ZSApOworCisgICAgICAgICAgICBpZiAoIG1hdGNoWzJdID09PSAifj0iICkgeworICAgICAgICAg
ICAgICAgIG1hdGNoWzNdID0gIiAiICsgbWF0Y2hbM10gKyAiICI7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHJldHVybiBtYXRjaC5zbGljZSggMCwgNCApOworICAgICAgICB9LAorCisg
ICAgICAgICJDSElMRCI6IGZ1bmN0aW9uKCBtYXRjaCApIHsKKyAgICAgICAgICAgIC8qIG1hdGNo
ZXMgZnJvbSBtYXRjaEV4cHJbIkNISUxEIl0KKyAgICAgICAgICAgICAgICAxIHR5cGUgKG9ubHl8
bnRofC4uLikKKyAgICAgICAgICAgICAgICAyIHdoYXQgKGNoaWxkfG9mLXR5cGUpCisgICAgICAg
ICAgICAgICAgMyBhcmd1bWVudCAoZXZlbnxvZGR8XGQqfFxkKm4oWystXVxkKyk/fC4uLikKKyAg
ICAgICAgICAgICAgICA0IHhuLWNvbXBvbmVudCBvZiB4bit5IGFyZ3VtZW50IChbKy1dP1xkKm58
KQorICAgICAgICAgICAgICAgIDUgc2lnbiBvZiB4bi1jb21wb25lbnQKKyAgICAgICAgICAgICAg
ICA2IHggb2YgeG4tY29tcG9uZW50CisgICAgICAgICAgICAgICAgNyBzaWduIG9mIHktY29tcG9u
ZW50CisgICAgICAgICAgICAgICAgOCB5IG9mIHktY29tcG9uZW50CisgICAgICAgICAgICAqLwor
ICAgICAgICAgICAgbWF0Y2hbMV0gPSBtYXRjaFsxXS50b0xvd2VyQ2FzZSgpOworCisgICAgICAg
ICAgICBpZiAoIG1hdGNoWzFdLnNsaWNlKCAwLCAzICkgPT09ICJudGgiICkgeworICAgICAgICAg
ICAgICAgIC8vIG50aC0qIHJlcXVpcmVzIGFyZ3VtZW50CisgICAgICAgICAgICAgICAgaWYgKCAh
bWF0Y2hbM10gKSB7CisgICAgICAgICAgICAgICAgICAgIFNpenpsZS5lcnJvciggbWF0Y2hbMF0g
KTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBudW1lcmljIHggYW5k
IHkgcGFyYW1ldGVycyBmb3IgRXhwci5maWx0ZXIuQ0hJTEQKKyAgICAgICAgICAgICAgICAvLyBy
ZW1lbWJlciB0aGF0IGZhbHNlL3RydWUgY2FzdCByZXNwZWN0aXZlbHkgdG8gMC8xCisgICAgICAg
ICAgICAgICAgbWF0Y2hbNF0gPSArKCBtYXRjaFs0XSA/IG1hdGNoWzVdICsgKG1hdGNoWzZdIHx8
IDEpIDogMiAqICggbWF0Y2hbM10gPT09ICJldmVuIiB8fCBtYXRjaFszXSA9PT0gIm9kZCIgKSAp
OworICAgICAgICAgICAgICAgIG1hdGNoWzVdID0gKyggKCBtYXRjaFs3XSArIG1hdGNoWzhdICkg
fHwgbWF0Y2hbM10gPT09ICJvZGQiICk7CisKKyAgICAgICAgICAgIC8vIG90aGVyIHR5cGVzIHBy
b2hpYml0IGFyZ3VtZW50cworICAgICAgICAgICAgfSBlbHNlIGlmICggbWF0Y2hbM10gKSB7Cisg
ICAgICAgICAgICAgICAgU2l6emxlLmVycm9yKCBtYXRjaFswXSApOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICByZXR1cm4gbWF0Y2g7CisgICAgICAgIH0sCisKKyAgICAgICAgIlBTRVVE
TyI6IGZ1bmN0aW9uKCBtYXRjaCApIHsKKyAgICAgICAgICAgIHZhciBleGNlc3MsCisgICAgICAg
ICAgICAgICAgdW5xdW90ZWQgPSAhbWF0Y2hbNl0gJiYgbWF0Y2hbMl07CisKKyAgICAgICAgICAg
IGlmICggbWF0Y2hFeHByWyJDSElMRCJdLnRlc3QoIG1hdGNoWzBdICkgKSB7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEFjY2Vw
dCBxdW90ZWQgYXJndW1lbnRzIGFzLWlzCisgICAgICAgICAgICBpZiAoIG1hdGNoWzNdICkgewor
ICAgICAgICAgICAgICAgIG1hdGNoWzJdID0gbWF0Y2hbNF0gfHwgbWF0Y2hbNV0gfHwgIiI7CisK
KyAgICAgICAgICAgIC8vIFN0cmlwIGV4Y2VzcyBjaGFyYWN0ZXJzIGZyb20gdW5xdW90ZWQgYXJn
dW1lbnRzCisgICAgICAgICAgICB9IGVsc2UgaWYgKCB1bnF1b3RlZCAmJiBycHNldWRvLnRlc3Qo
IHVucXVvdGVkICkgJiYKKyAgICAgICAgICAgICAgICAvLyBHZXQgZXhjZXNzIGZyb20gdG9rZW5p
emUgKHJlY3Vyc2l2ZWx5KQorICAgICAgICAgICAgICAgIChleGNlc3MgPSB0b2tlbml6ZSggdW5x
dW90ZWQsIHRydWUgKSkgJiYKKyAgICAgICAgICAgICAgICAvLyBhZHZhbmNlIHRvIHRoZSBuZXh0
IGNsb3NpbmcgcGFyZW50aGVzaXMKKyAgICAgICAgICAgICAgICAoZXhjZXNzID0gdW5xdW90ZWQu
aW5kZXhPZiggIikiLCB1bnF1b3RlZC5sZW5ndGggLSBleGNlc3MgKSAtIHVucXVvdGVkLmxlbmd0
aCkgKSB7CisKKyAgICAgICAgICAgICAgICAvLyBleGNlc3MgaXMgYSBuZWdhdGl2ZSBpbmRleAor
ICAgICAgICAgICAgICAgIG1hdGNoWzBdID0gbWF0Y2hbMF0uc2xpY2UoIDAsIGV4Y2VzcyApOwor
ICAgICAgICAgICAgICAgIG1hdGNoWzJdID0gdW5xdW90ZWQuc2xpY2UoIDAsIGV4Y2VzcyApOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBSZXR1cm4gb25seSBjYXB0dXJlcyBuZWVk
ZWQgYnkgdGhlIHBzZXVkbyBmaWx0ZXIgbWV0aG9kICh0eXBlIGFuZCBhcmd1bWVudCkKKyAgICAg
ICAgICAgIHJldHVybiBtYXRjaC5zbGljZSggMCwgMyApOworICAgICAgICB9CisgICAgfSwKKwor
ICAgIGZpbHRlcjogeworCisgICAgICAgICJUQUciOiBmdW5jdGlvbiggbm9kZU5hbWVTZWxlY3Rv
ciApIHsKKyAgICAgICAgICAgIHZhciBub2RlTmFtZSA9IG5vZGVOYW1lU2VsZWN0b3IucmVwbGFj
ZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKS50b0xvd2VyQ2FzZSgpOworICAgICAgICAgICAgcmV0
dXJuIG5vZGVOYW1lU2VsZWN0b3IgPT09ICIqIiA/CisgICAgICAgICAgICAgICAgZnVuY3Rpb24o
KSB7IHJldHVybiB0cnVlOyB9IDoKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiggZWxlbSApIHsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW0ubm9kZU5hbWUgJiYgZWxlbS5ub2RlTmFt
ZS50b0xvd2VyQ2FzZSgpID09PSBub2RlTmFtZTsKKyAgICAgICAgICAgICAgICB9OworICAgICAg
ICB9LAorCisgICAgICAgICJDTEFTUyI6IGZ1bmN0aW9uKCBjbGFzc05hbWUgKSB7CisgICAgICAg
ICAgICB2YXIgcGF0dGVybiA9IGNsYXNzQ2FjaGVbIGNsYXNzTmFtZSArICIgIiBdOworCisgICAg
ICAgICAgICByZXR1cm4gcGF0dGVybiB8fAorICAgICAgICAgICAgICAgIChwYXR0ZXJuID0gbmV3
IFJlZ0V4cCggIihefCIgKyB3aGl0ZXNwYWNlICsgIikiICsgY2xhc3NOYW1lICsgIigiICsgd2hp
dGVzcGFjZSArICJ8JCkiICkpICYmCisgICAgICAgICAgICAgICAgY2xhc3NDYWNoZSggY2xhc3NO
YW1lLCBmdW5jdGlvbiggZWxlbSApIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhdHRl
cm4udGVzdCggdHlwZW9mIGVsZW0uY2xhc3NOYW1lID09PSAic3RyaW5nIiAmJiBlbGVtLmNsYXNz
TmFtZSB8fCB0eXBlb2YgZWxlbS5nZXRBdHRyaWJ1dGUgIT09ICJ1bmRlZmluZWQiICYmIGVsZW0u
Z2V0QXR0cmlidXRlKCJjbGFzcyIpIHx8ICIiICk7CisgICAgICAgICAgICAgICAgfSk7CisgICAg
ICAgIH0sCisKKyAgICAgICAgIkFUVFIiOiBmdW5jdGlvbiggbmFtZSwgb3BlcmF0b3IsIGNoZWNr
ICkgeworICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkgeworICAgICAgICAgICAg
ICAgIHZhciByZXN1bHQgPSBTaXp6bGUuYXR0ciggZWxlbSwgbmFtZSApOworCisgICAgICAgICAg
ICAgICAgaWYgKCByZXN1bHQgPT0gbnVsbCApIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IG9wZXJhdG9yID09PSAiIT0iOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBp
ZiAoICFvcGVyYXRvciApIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICIiOworCisgICAgICAg
ICAgICAgICAgcmV0dXJuIG9wZXJhdG9yID09PSAiPSIgPyByZXN1bHQgPT09IGNoZWNrIDoKKyAg
ICAgICAgICAgICAgICAgICAgb3BlcmF0b3IgPT09ICIhPSIgPyByZXN1bHQgIT09IGNoZWNrIDoK
KyAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3IgPT09ICJePSIgPyBjaGVjayAmJiByZXN1bHQu
aW5kZXhPZiggY2hlY2sgKSA9PT0gMCA6CisgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yID09
PSAiKj0iID8gY2hlY2sgJiYgcmVzdWx0LmluZGV4T2YoIGNoZWNrICkgPiAtMSA6CisgICAgICAg
ICAgICAgICAgICAgIG9wZXJhdG9yID09PSAiJD0iID8gY2hlY2sgJiYgcmVzdWx0LnNsaWNlKCAt
Y2hlY2subGVuZ3RoICkgPT09IGNoZWNrIDoKKyAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3Ig
PT09ICJ+PSIgPyAoICIgIiArIHJlc3VsdC5yZXBsYWNlKCByd2hpdGVzcGFjZSwgIiAiICkgKyAi
ICIgKS5pbmRleE9mKCBjaGVjayApID4gLTEgOgorICAgICAgICAgICAgICAgICAgICBvcGVyYXRv
ciA9PT0gInw9IiA/IHJlc3VsdCA9PT0gY2hlY2sgfHwgcmVzdWx0LnNsaWNlKCAwLCBjaGVjay5s
ZW5ndGggKyAxICkgPT09IGNoZWNrICsgIi0iIDoKKyAgICAgICAgICAgICAgICAgICAgZmFsc2U7
CisgICAgICAgICAgICB9OworICAgICAgICB9LAorCisgICAgICAgICJDSElMRCI6IGZ1bmN0aW9u
KCB0eXBlLCB3aGF0LCBhcmd1bWVudCwgZmlyc3QsIGxhc3QgKSB7CisgICAgICAgICAgICB2YXIg
c2ltcGxlID0gdHlwZS5zbGljZSggMCwgMyApICE9PSAibnRoIiwKKyAgICAgICAgICAgICAgICBm
b3J3YXJkID0gdHlwZS5zbGljZSggLTQgKSAhPT0gImxhc3QiLAorICAgICAgICAgICAgICAgIG9m
VHlwZSA9IHdoYXQgPT09ICJvZi10eXBlIjsKKworICAgICAgICAgICAgcmV0dXJuIGZpcnN0ID09
PSAxICYmIGxhc3QgPT09IDAgPworCisgICAgICAgICAgICAgICAgLy8gU2hvcnRjdXQgZm9yIDpu
dGgtKihuKQorICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCBlbGVtICkgeworICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gISFlbGVtLnBhcmVudE5vZGU7CisgICAgICAgICAgICAgICAgfSA6CisK
KyAgICAgICAgICAgICAgICBmdW5jdGlvbiggZWxlbSwgY29udGV4dCwgeG1sICkgeworICAgICAg
ICAgICAgICAgICAgICB2YXIgY2FjaGUsIHVuaXF1ZUNhY2hlLCBvdXRlckNhY2hlLCBub2RlLCBu
b2RlSW5kZXgsIHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgZGlyID0gc2ltcGxlICE9
PSBmb3J3YXJkID8gIm5leHRTaWJsaW5nIiA6ICJwcmV2aW91c1NpYmxpbmciLAorICAgICAgICAg
ICAgICAgICAgICAgICAgcGFyZW50ID0gZWxlbS5wYXJlbnROb2RlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgbmFtZSA9IG9mVHlwZSAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCksCisg
ICAgICAgICAgICAgICAgICAgICAgICB1c2VDYWNoZSA9ICF4bWwgJiYgIW9mVHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGRpZmYgPSBmYWxzZTsKKworICAgICAgICAgICAgICAgICAgICBp
ZiAoIHBhcmVudCApIHsKKworICAgICAgICAgICAgICAgICAgICAgICAgLy8gOihmaXJzdHxsYXN0
fG9ubHkpLShjaGlsZHxvZi10eXBlKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBzaW1w
bGUgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCBkaXIgKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUgPSBlbGVtOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB3aGlsZSAoIChub2RlID0gbm9kZVsgZGlyIF0pICkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBvZlR5cGUgPworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9
PT0gbmFtZSA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5u
b2RlVHlwZSA9PT0gMSApIHsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBSZXZlcnNlIGRpcmVjdGlvbiBmb3IgOm9ubHktKiAoaWYgd2UgaGF2ZW4n
dCB5ZXQgZG9uZSBzbykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQgPSBk
aXIgPSB0eXBlID09PSAib25seSIgJiYgIXN0YXJ0ICYmICJuZXh0U2libGluZyI7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAg
ICAgICBzdGFydCA9IFsgZm9yd2FyZCA/IHBhcmVudC5maXJzdENoaWxkIDogcGFyZW50Lmxhc3RD
aGlsZCBdOworCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBub24teG1sIDpudGgtY2hpbGQo
Li4uKSBzdG9yZXMgY2FjaGUgZGF0YSBvbiBgcGFyZW50YAorICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCBmb3J3YXJkICYmIHVzZUNhY2hlICkgeworCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gU2VlayBgZWxlbWAgZnJvbSBhIHByZXZpb3VzbHktY2FjaGVkIGluZGV4CisKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAuLi5pbiBhIGd6aXAtZnJpZW5kbHkgd2F5Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZSA9IHBhcmVudDsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBvdXRlckNhY2hlID0gbm9kZVsgZXhwYW5kbyBdIHx8IChub2RlWyBleHBh
bmRvIF0gPSB7fSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTdXBwb3J0OiBJ
RSA8OSBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGVmZW5kIGFnYWluc3Qg
Y2xvbmVkIGF0dHJvcGVydGllcyAoalF1ZXJ5IGdoLTE3MDkpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5pcXVlQ2FjaGUgPSBvdXRlckNhY2hlWyBub2RlLnVuaXF1ZUlEIF0gfHwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG91dGVyQ2FjaGVbIG5vZGUudW5pcXVlSUQg
XSA9IHt9KTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlID0gdW5pcXVlQ2Fj
aGVbIHR5cGUgXSB8fCBbXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlSW5kZXgg
PSBjYWNoZVsgMCBdID09PSBkaXJydW5zICYmIGNhY2hlWyAxIF07CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGlmZiA9IG5vZGVJbmRleCAmJiBjYWNoZVsgMiBdOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG5vZGUgPSBub2RlSW5kZXggJiYgcGFyZW50LmNoaWxkTm9kZXNbIG5v
ZGVJbmRleCBdOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCAobm9kZSA9
ICsrbm9kZUluZGV4ICYmIG5vZGUgJiYgbm9kZVsgZGlyIF0gfHwKKworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBGYWxsYmFjayB0byBzZWVraW5nIGBlbGVtYCBmcm9tIHRoZSBz
dGFydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGlmZiA9IG5vZGVJbmRleCA9
IDApIHx8IHN0YXJ0LnBvcCgpKSApIHsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBXaGVuIGZvdW5kLCBjYWNoZSBpbmRleGVzIG9uIGBwYXJlbnRgIGFuZCBicmVhaworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIG5vZGUubm9kZVR5cGUgPT09IDEgJiYg
KytkaWZmICYmIG5vZGUgPT09IGVsZW0gKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bmlxdWVDYWNoZVsgdHlwZSBdID0gWyBkaXJydW5zLCBub2RlSW5kZXgsIGRpZmYg
XTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIFVzZSBwcmV2aW91c2x5LWNhY2hlZCBlbGVtZW50IGluZGV4IGlmIGF2YWlsYWJs
ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggdXNlQ2FjaGUgKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIC4uLmluIGEgZ3ppcC1mcmllbmRseSB3YXkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZSA9IGVsZW07CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG91dGVyQ2FjaGUgPSBub2RlWyBleHBhbmRvIF0gfHwgKG5vZGVb
IGV4cGFuZG8gXSA9IHt9KTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBT
dXBwb3J0OiBJRSA8OSBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERl
ZmVuZCBhZ2FpbnN0IGNsb25lZCBhdHRyb3BlcnRpZXMgKGpRdWVyeSBnaC0xNzA5KQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlxdWVDYWNoZSA9IG91dGVyQ2FjaGVbIG5vZGUu
dW5pcXVlSUQgXSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG91dGVy
Q2FjaGVbIG5vZGUudW5pcXVlSUQgXSA9IHt9KTsKKworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjYWNoZSA9IHVuaXF1ZUNhY2hlWyB0eXBlIF0gfHwgW107CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG5vZGVJbmRleCA9IGNhY2hlWyAwIF0gPT09IGRpcnJ1bnMgJiYg
Y2FjaGVbIDEgXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlmZiA9IG5vZGVJ
bmRleDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyB4bWwgOm50aC1jaGlsZCguLi4pCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gb3IgOm50aC1sYXN0LWNoaWxkKC4uLikgb3IgOm50aCgtbGFzdCk/LW9mLXR5cGUo
Li4uKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggZGlmZiA9PT0gZmFsc2UgKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFVzZSB0aGUgc2FtZSBsb29wIGFz
IGFib3ZlIHRvIHNlZWsgYGVsZW1gIGZyb20gdGhlIHN0YXJ0CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHdoaWxlICggKG5vZGUgPSArK25vZGVJbmRleCAmJiBub2RlICYmIG5vZGVb
IGRpciBdIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGlmZiA9IG5v
ZGVJbmRleCA9IDApIHx8IHN0YXJ0LnBvcCgpKSApIHsKKworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKCAoIG9mVHlwZSA/CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBuYW1lIDoKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLm5vZGVUeXBlID09PSAx
ICkgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArK2RpZmYgKSB7
CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDYWNoZSB0aGUg
aW5kZXggb2YgZWFjaCBlbmNvdW50ZXJlZCBlbGVtZW50CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCB1c2VDYWNoZSApIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb3V0ZXJDYWNoZSA9IG5vZGVbIGV4cGFuZG8gXSB8fCAo
bm9kZVsgZXhwYW5kbyBdID0ge30pOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIFN1cHBvcnQ6IElFIDw5IG9ubHkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGVmZW5kIGFnYWluc3QgY2xvbmVkIGF0dHJvcGVy
dGllcyAoalF1ZXJ5IGdoLTE3MDkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuaXF1ZUNhY2hlID0gb3V0ZXJDYWNoZVsgbm9kZS51bmlxdWVJRCBdIHx8Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3V0ZXJDYWNo
ZVsgbm9kZS51bmlxdWVJRCBdID0ge30pOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuaXF1ZUNhY2hlWyB0eXBlIF0gPSBbIGRpcnJ1bnMsIGRpZmYgXTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIG5vZGUgPT09IGVsZW0gKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gSW5jb3Jwb3JhdGUgdGhlIG9mZnNldCwgdGhlbiBjaGVj
ayBhZ2FpbnN0IGN5Y2xlIHNpemUKKyAgICAgICAgICAgICAgICAgICAgICAgIGRpZmYgLT0gbGFz
dDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkaWZmID09PSBmaXJzdCB8fCAoIGRp
ZmYgJSBmaXJzdCA9PT0gMCAmJiBkaWZmIC8gZmlyc3QgPj0gMCApOworICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgfSwKKworICAgICAgICAiUFNFVURP
IjogZnVuY3Rpb24oIHBzZXVkbywgYXJndW1lbnQgKSB7CisgICAgICAgICAgICAvLyBwc2V1ZG8t
Y2xhc3MgbmFtZXMgYXJlIGNhc2UtaW5zZW5zaXRpdmUKKyAgICAgICAgICAgIC8vIGh0dHA6Ly93
d3cudzMub3JnL1RSL3NlbGVjdG9ycy8jcHNldWRvLWNsYXNzZXMKKyAgICAgICAgICAgIC8vIFBy
aW9yaXRpemUgYnkgY2FzZSBzZW5zaXRpdml0eSBpbiBjYXNlIGN1c3RvbSBwc2V1ZG9zIGFyZSBh
ZGRlZCB3aXRoIHVwcGVyY2FzZSBsZXR0ZXJzCisgICAgICAgICAgICAvLyBSZW1lbWJlciB0aGF0
IHNldEZpbHRlcnMgaW5oZXJpdHMgZnJvbSBwc2V1ZG9zCisgICAgICAgICAgICB2YXIgYXJncywK
KyAgICAgICAgICAgICAgICBmbiA9IEV4cHIucHNldWRvc1sgcHNldWRvIF0gfHwgRXhwci5zZXRG
aWx0ZXJzWyBwc2V1ZG8udG9Mb3dlckNhc2UoKSBdIHx8CisgICAgICAgICAgICAgICAgICAgIFNp
enpsZS5lcnJvciggInVuc3VwcG9ydGVkIHBzZXVkbzogIiArIHBzZXVkbyApOworCisgICAgICAg
ICAgICAvLyBUaGUgdXNlciBtYXkgdXNlIGNyZWF0ZVBzZXVkbyB0byBpbmRpY2F0ZSB0aGF0Cisg
ICAgICAgICAgICAvLyBhcmd1bWVudHMgYXJlIG5lZWRlZCB0byBjcmVhdGUgdGhlIGZpbHRlciBm
dW5jdGlvbgorICAgICAgICAgICAgLy8ganVzdCBhcyBTaXp6bGUgZG9lcworICAgICAgICAgICAg
aWYgKCBmblsgZXhwYW5kbyBdICkgeworICAgICAgICAgICAgICAgIHJldHVybiBmbiggYXJndW1l
bnQgKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gQnV0IG1haW50YWluIHN1cHBv
cnQgZm9yIG9sZCBzaWduYXR1cmVzCisgICAgICAgICAgICBpZiAoIGZuLmxlbmd0aCA+IDEgKSB7
CisgICAgICAgICAgICAgICAgYXJncyA9IFsgcHNldWRvLCBwc2V1ZG8sICIiLCBhcmd1bWVudCBd
OworICAgICAgICAgICAgICAgIHJldHVybiBFeHByLnNldEZpbHRlcnMuaGFzT3duUHJvcGVydHko
IHBzZXVkby50b0xvd2VyQ2FzZSgpICkgPworICAgICAgICAgICAgICAgICAgICBtYXJrRnVuY3Rp
b24oZnVuY3Rpb24oIHNlZWQsIG1hdGNoZXMgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB2
YXIgaWR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZWQgPSBmbiggc2VlZCwg
YXJndW1lbnQgKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gbWF0Y2hlZC5sZW5n
dGg7CisgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoIGktLSApIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZHggPSBpbmRleE9mKCBzZWVkLCBtYXRjaGVkW2ldICk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2VlZFsgaWR4IF0gPSAhKCBtYXRjaGVzWyBpZHggXSA9
IG1hdGNoZWRbaV0gKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgfSkgOgorICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiggZWxlbSApIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmbiggZWxlbSwgMCwgYXJncyApOworICAgICAgICAg
ICAgICAgICAgICB9OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gZm47Cisg
ICAgICAgIH0KKyAgICB9LAorCisgICAgcHNldWRvczogeworICAgICAgICAvLyBQb3RlbnRpYWxs
eSBjb21wbGV4IHBzZXVkb3MKKyAgICAgICAgIm5vdCI6IG1hcmtGdW5jdGlvbihmdW5jdGlvbigg
c2VsZWN0b3IgKSB7CisgICAgICAgICAgICAvLyBUcmltIHRoZSBzZWxlY3RvciBwYXNzZWQgdG8g
Y29tcGlsZQorICAgICAgICAgICAgLy8gdG8gYXZvaWQgdHJlYXRpbmcgbGVhZGluZyBhbmQgdHJh
aWxpbmcKKyAgICAgICAgICAgIC8vIHNwYWNlcyBhcyBjb21iaW5hdG9ycworICAgICAgICAgICAg
dmFyIGlucHV0ID0gW10sCisgICAgICAgICAgICAgICAgcmVzdWx0cyA9IFtdLAorICAgICAgICAg
ICAgICAgIG1hdGNoZXIgPSBjb21waWxlKCBzZWxlY3Rvci5yZXBsYWNlKCBydHJpbSwgIiQxIiAp
ICk7CisKKyAgICAgICAgICAgIHJldHVybiBtYXRjaGVyWyBleHBhbmRvIF0gPworICAgICAgICAg
ICAgICAgIG1hcmtGdW5jdGlvbihmdW5jdGlvbiggc2VlZCwgbWF0Y2hlcywgY29udGV4dCwgeG1s
ICkgeworICAgICAgICAgICAgICAgICAgICB2YXIgZWxlbSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHVubWF0Y2hlZCA9IG1hdGNoZXIoIHNlZWQsIG51bGwsIHhtbCwgW10gKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGkgPSBzZWVkLmxlbmd0aDsKKworICAgICAgICAgICAgICAgICAgICAv
LyBNYXRjaCBlbGVtZW50cyB1bm1hdGNoZWQgYnkgYG1hdGNoZXJgCisgICAgICAgICAgICAgICAg
ICAgIHdoaWxlICggaS0tICkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAoZWxlbSA9
IHVubWF0Y2hlZFtpXSkgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VlZFtpXSA9
ICEobWF0Y2hlc1tpXSA9IGVsZW0pOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSkgOgorICAgICAgICAgICAgICAgIGZ1
bmN0aW9uKCBlbGVtLCBjb250ZXh0LCB4bWwgKSB7CisgICAgICAgICAgICAgICAgICAgIGlucHV0
WzBdID0gZWxlbTsKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2hlciggaW5wdXQsIG51bGwsIHht
bCwgcmVzdWx0cyApOworICAgICAgICAgICAgICAgICAgICAvLyBEb24ndCBrZWVwIHRoZSBlbGVt
ZW50IChpc3N1ZSAjMjk5KQorICAgICAgICAgICAgICAgICAgICBpbnB1dFswXSA9IG51bGw7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiAhcmVzdWx0cy5wb3AoKTsKKyAgICAgICAgICAgICAg
ICB9OworICAgICAgICB9KSwKKworICAgICAgICAiaGFzIjogbWFya0Z1bmN0aW9uKGZ1bmN0aW9u
KCBzZWxlY3RvciApIHsKKyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiggZWxlbSApIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gU2l6emxlKCBzZWxlY3RvciwgZWxlbSApLmxlbmd0aCA+IDA7
CisgICAgICAgICAgICB9OworICAgICAgICB9KSwKKworICAgICAgICAiY29udGFpbnMiOiBtYXJr
RnVuY3Rpb24oZnVuY3Rpb24oIHRleHQgKSB7CisgICAgICAgICAgICB0ZXh0ID0gdGV4dC5yZXBs
YWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApOworICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9u
KCBlbGVtICkgeworICAgICAgICAgICAgICAgIHJldHVybiAoIGVsZW0udGV4dENvbnRlbnQgfHwg
ZWxlbS5pbm5lclRleHQgfHwgZ2V0VGV4dCggZWxlbSApICkuaW5kZXhPZiggdGV4dCApID4gLTE7
CisgICAgICAgICAgICB9OworICAgICAgICB9KSwKKworICAgICAgICAvLyAiV2hldGhlciBhbiBl
bGVtZW50IGlzIHJlcHJlc2VudGVkIGJ5IGEgOmxhbmcoKSBzZWxlY3RvcgorICAgICAgICAvLyBp
cyBiYXNlZCBzb2xlbHkgb24gdGhlIGVsZW1lbnQncyBsYW5ndWFnZSB2YWx1ZQorICAgICAgICAv
LyBiZWluZyBlcXVhbCB0byB0aGUgaWRlbnRpZmllciBDLAorICAgICAgICAvLyBvciBiZWdpbm5p
bmcgd2l0aCB0aGUgaWRlbnRpZmllciBDIGltbWVkaWF0ZWx5IGZvbGxvd2VkIGJ5ICItIi4KKyAg
ICAgICAgLy8gVGhlIG1hdGNoaW5nIG9mIEMgYWdhaW5zdCB0aGUgZWxlbWVudCdzIGxhbmd1YWdl
IHZhbHVlIGlzIHBlcmZvcm1lZCBjYXNlLWluc2Vuc2l0aXZlbHkuCisgICAgICAgIC8vIFRoZSBp
ZGVudGlmaWVyIEMgZG9lcyBub3QgaGF2ZSB0byBiZSBhIHZhbGlkIGxhbmd1YWdlIG5hbWUuIgor
ICAgICAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9zZWxlY3RvcnMvI2xhbmctcHNldWRvCisg
ICAgICAgICJsYW5nIjogbWFya0Z1bmN0aW9uKCBmdW5jdGlvbiggbGFuZyApIHsKKyAgICAgICAg
ICAgIC8vIGxhbmcgdmFsdWUgbXVzdCBiZSBhIHZhbGlkIGlkZW50aWZpZXIKKyAgICAgICAgICAg
IGlmICggIXJpZGVudGlmaWVyLnRlc3QobGFuZyB8fCAiIikgKSB7CisgICAgICAgICAgICAgICAg
U2l6emxlLmVycm9yKCAidW5zdXBwb3J0ZWQgbGFuZzogIiArIGxhbmcgKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGxhbmcgPSBsYW5nLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBl
ICkudG9Mb3dlckNhc2UoKTsKKyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiggZWxlbSApIHsK
KyAgICAgICAgICAgICAgICB2YXIgZWxlbUxhbmc7CisgICAgICAgICAgICAgICAgZG8geworICAg
ICAgICAgICAgICAgICAgICBpZiAoIChlbGVtTGFuZyA9IGRvY3VtZW50SXNIVE1MID8KKyAgICAg
ICAgICAgICAgICAgICAgICAgIGVsZW0ubGFuZyA6CisgICAgICAgICAgICAgICAgICAgICAgICBl
bGVtLmdldEF0dHJpYnV0ZSgieG1sOmxhbmciKSB8fCBlbGVtLmdldEF0dHJpYnV0ZSgibGFuZyIp
KSApIHsKKworICAgICAgICAgICAgICAgICAgICAgICAgZWxlbUxhbmcgPSBlbGVtTGFuZy50b0xv
d2VyQ2FzZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1MYW5nID09PSBs
YW5nIHx8IGVsZW1MYW5nLmluZGV4T2YoIGxhbmcgKyAiLSIgKSA9PT0gMDsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gd2hpbGUgKCAoZWxlbSA9IGVsZW0ucGFyZW50
Tm9kZSkgJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSApOworICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgIH07CisgICAgICAgIH0pLAorCisgICAgICAgIC8vIE1pc2NlbGxh
bmVvdXMKKyAgICAgICAgInRhcmdldCI6IGZ1bmN0aW9uKCBlbGVtICkgeworICAgICAgICAgICAg
dmFyIGhhc2ggPSB3aW5kb3cubG9jYXRpb24gJiYgd2luZG93LmxvY2F0aW9uLmhhc2g7CisgICAg
ICAgICAgICByZXR1cm4gaGFzaCAmJiBoYXNoLnNsaWNlKCAxICkgPT09IGVsZW0uaWQ7CisgICAg
ICAgIH0sCisKKyAgICAgICAgInJvb3QiOiBmdW5jdGlvbiggZWxlbSApIHsKKyAgICAgICAgICAg
IHJldHVybiBlbGVtID09PSBkb2NFbGVtOworICAgICAgICB9LAorCisgICAgICAgICJmb2N1cyI6
IGZ1bmN0aW9uKCBlbGVtICkgeworICAgICAgICAgICAgcmV0dXJuIGVsZW0gPT09IGRvY3VtZW50
LmFjdGl2ZUVsZW1lbnQgJiYgKCFkb2N1bWVudC5oYXNGb2N1cyB8fCBkb2N1bWVudC5oYXNGb2N1
cygpKSAmJiAhIShlbGVtLnR5cGUgfHwgZWxlbS5ocmVmIHx8IH5lbGVtLnRhYkluZGV4KTsKKyAg
ICAgICAgfSwKKworICAgICAgICAvLyBCb29sZWFuIHByb3BlcnRpZXMKKyAgICAgICAgImVuYWJs
ZWQiOiBjcmVhdGVEaXNhYmxlZFBzZXVkbyggZmFsc2UgKSwKKyAgICAgICAgImRpc2FibGVkIjog
Y3JlYXRlRGlzYWJsZWRQc2V1ZG8oIHRydWUgKSwKKworICAgICAgICAiY2hlY2tlZCI6IGZ1bmN0
aW9uKCBlbGVtICkgeworICAgICAgICAgICAgLy8gSW4gQ1NTMywgOmNoZWNrZWQgc2hvdWxkIHJl
dHVybiBib3RoIGNoZWNrZWQgYW5kIHNlbGVjdGVkIGVsZW1lbnRzCisgICAgICAgICAgICAvLyBo
dHRwOi8vd3d3LnczLm9yZy9UUi8yMDExL1JFQy1jc3MzLXNlbGVjdG9ycy0yMDExMDkyOS8jY2hl
Y2tlZAorICAgICAgICAgICAgdmFyIG5vZGVOYW1lID0gZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2Fz
ZSgpOworICAgICAgICAgICAgcmV0dXJuIChub2RlTmFtZSA9PT0gImlucHV0IiAmJiAhIWVsZW0u
Y2hlY2tlZCkgfHwgKG5vZGVOYW1lID09PSAib3B0aW9uIiAmJiAhIWVsZW0uc2VsZWN0ZWQpOwor
ICAgICAgICB9LAorCisgICAgICAgICJzZWxlY3RlZCI6IGZ1bmN0aW9uKCBlbGVtICkgeworICAg
ICAgICAgICAgLy8gQWNjZXNzaW5nIHRoaXMgcHJvcGVydHkgbWFrZXMgc2VsZWN0ZWQtYnktZGVm
YXVsdAorICAgICAgICAgICAgLy8gb3B0aW9ucyBpbiBTYWZhcmkgd29yayBwcm9wZXJseQorICAg
ICAgICAgICAgaWYgKCBlbGVtLnBhcmVudE5vZGUgKSB7CisgICAgICAgICAgICAgICAgZWxlbS5w
YXJlbnROb2RlLnNlbGVjdGVkSW5kZXg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJl
dHVybiBlbGVtLnNlbGVjdGVkID09PSB0cnVlOworICAgICAgICB9LAorCisgICAgICAgIC8vIENv
bnRlbnRzCisgICAgICAgICJlbXB0eSI6IGZ1bmN0aW9uKCBlbGVtICkgeworICAgICAgICAgICAg
Ly8gaHR0cDovL3d3dy53My5vcmcvVFIvc2VsZWN0b3JzLyNlbXB0eS1wc2V1ZG8KKyAgICAgICAg
ICAgIC8vIDplbXB0eSBpcyBuZWdhdGVkIGJ5IGVsZW1lbnQgKDEpIG9yIGNvbnRlbnQgbm9kZXMg
KHRleHQ6IDM7IGNkYXRhOiA0OyBlbnRpdHkgcmVmOiA1KSwKKyAgICAgICAgICAgIC8vICAgYnV0
IG5vdCBieSBvdGhlcnMgKGNvbW1lbnQ6IDg7IHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb246IDc7IGV0
Yy4pCisgICAgICAgICAgICAvLyBub2RlVHlwZSA8IDYgd29ya3MgYmVjYXVzZSBhdHRyaWJ1dGVz
ICgyKSBkbyBub3QgYXBwZWFyIGFzIGNoaWxkcmVuCisgICAgICAgICAgICBmb3IgKCBlbGVtID0g
ZWxlbS5maXJzdENoaWxkOyBlbGVtOyBlbGVtID0gZWxlbS5uZXh0U2libGluZyApIHsKKyAgICAg
ICAgICAgICAgICBpZiAoIGVsZW0ubm9kZVR5cGUgPCA2ICkgeworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0sCisKKyAgICAgICAgInBhcmVudCI6IGZ1bmN0
aW9uKCBlbGVtICkgeworICAgICAgICAgICAgcmV0dXJuICFFeHByLnBzZXVkb3NbImVtcHR5Il0o
IGVsZW0gKTsKKyAgICAgICAgfSwKKworICAgICAgICAvLyBFbGVtZW50L2lucHV0IHR5cGVzCisg
ICAgICAgICJoZWFkZXIiOiBmdW5jdGlvbiggZWxlbSApIHsKKyAgICAgICAgICAgIHJldHVybiBy
aGVhZGVyLnRlc3QoIGVsZW0ubm9kZU5hbWUgKTsKKyAgICAgICAgfSwKKworICAgICAgICAiaW5w
dXQiOiBmdW5jdGlvbiggZWxlbSApIHsKKyAgICAgICAgICAgIHJldHVybiByaW5wdXRzLnRlc3Qo
IGVsZW0ubm9kZU5hbWUgKTsKKyAgICAgICAgfSwKKworICAgICAgICAiYnV0dG9uIjogZnVuY3Rp
b24oIGVsZW0gKSB7CisgICAgICAgICAgICB2YXIgbmFtZSA9IGVsZW0ubm9kZU5hbWUudG9Mb3dl
ckNhc2UoKTsKKyAgICAgICAgICAgIHJldHVybiBuYW1lID09PSAiaW5wdXQiICYmIGVsZW0udHlw
ZSA9PT0gImJ1dHRvbiIgfHwgbmFtZSA9PT0gImJ1dHRvbiI7CisgICAgICAgIH0sCisKKyAgICAg
ICAgInRleHQiOiBmdW5jdGlvbiggZWxlbSApIHsKKyAgICAgICAgICAgIHZhciBhdHRyOworICAg
ICAgICAgICAgcmV0dXJuIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gImlucHV0IiAm
JgorICAgICAgICAgICAgICAgIGVsZW0udHlwZSA9PT0gInRleHQiICYmCisKKyAgICAgICAgICAg
ICAgICAvLyBTdXBwb3J0OiBJRTw4CisgICAgICAgICAgICAgICAgLy8gTmV3IEhUTUw1IGF0dHJp
YnV0ZSB2YWx1ZXMgKGUuZy4sICJzZWFyY2giKSBhcHBlYXIgd2l0aCBlbGVtLnR5cGUgPT09ICJ0
ZXh0IgorICAgICAgICAgICAgICAgICggKGF0dHIgPSBlbGVtLmdldEF0dHJpYnV0ZSgidHlwZSIp
KSA9PSBudWxsIHx8IGF0dHIudG9Mb3dlckNhc2UoKSA9PT0gInRleHQiICk7CisgICAgICAgIH0s
CisKKyAgICAgICAgLy8gUG9zaXRpb24taW4tY29sbGVjdGlvbgorICAgICAgICAiZmlyc3QiOiBj
cmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcmV0dXJuIFsg
MCBdOworICAgICAgICB9KSwKKworICAgICAgICAibGFzdCI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1
ZG8oZnVuY3Rpb24oIG1hdGNoSW5kZXhlcywgbGVuZ3RoICkgeworICAgICAgICAgICAgcmV0dXJu
IFsgbGVuZ3RoIC0gMSBdOworICAgICAgICB9KSwKKworICAgICAgICAiZXEiOiBjcmVhdGVQb3Np
dGlvbmFsUHNldWRvKGZ1bmN0aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0aCwgYXJndW1lbnQgKSB7
CisgICAgICAgICAgICByZXR1cm4gWyBhcmd1bWVudCA8IDAgPyBhcmd1bWVudCArIGxlbmd0aCA6
IGFyZ3VtZW50IF07CisgICAgICAgIH0pLAorCisgICAgICAgICJldmVuIjogY3JlYXRlUG9zaXRp
b25hbFBzZXVkbyhmdW5jdGlvbiggbWF0Y2hJbmRleGVzLCBsZW5ndGggKSB7CisgICAgICAgICAg
ICB2YXIgaSA9IDA7CisgICAgICAgICAgICBmb3IgKCA7IGkgPCBsZW5ndGg7IGkgKz0gMiApIHsK
KyAgICAgICAgICAgICAgICBtYXRjaEluZGV4ZXMucHVzaCggaSApOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgcmV0dXJuIG1hdGNoSW5kZXhlczsKKyAgICAgICAgfSksCisKKyAgICAgICAg
Im9kZCI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24oIG1hdGNoSW5kZXhlcywgbGVu
Z3RoICkgeworICAgICAgICAgICAgdmFyIGkgPSAxOworICAgICAgICAgICAgZm9yICggOyBpIDwg
bGVuZ3RoOyBpICs9IDIgKSB7CisgICAgICAgICAgICAgICAgbWF0Y2hJbmRleGVzLnB1c2goIGkg
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBtYXRjaEluZGV4ZXM7CisgICAg
ICAgIH0pLAorCisgICAgICAgICJsdCI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24o
IG1hdGNoSW5kZXhlcywgbGVuZ3RoLCBhcmd1bWVudCApIHsKKyAgICAgICAgICAgIHZhciBpID0g
YXJndW1lbnQgPCAwID8gYXJndW1lbnQgKyBsZW5ndGggOiBhcmd1bWVudDsKKyAgICAgICAgICAg
IGZvciAoIDsgLS1pID49IDA7ICkgeworICAgICAgICAgICAgICAgIG1hdGNoSW5kZXhlcy5wdXNo
KCBpICk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gbWF0Y2hJbmRleGVzOwor
ICAgICAgICB9KSwKKworICAgICAgICAiZ3QiOiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0
aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0aCwgYXJndW1lbnQgKSB7CisgICAgICAgICAgICB2YXIg
aSA9IGFyZ3VtZW50IDwgMCA/IGFyZ3VtZW50ICsgbGVuZ3RoIDogYXJndW1lbnQ7CisgICAgICAg
ICAgICBmb3IgKCA7ICsraSA8IGxlbmd0aDsgKSB7CisgICAgICAgICAgICAgICAgbWF0Y2hJbmRl
eGVzLnB1c2goIGkgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBtYXRjaElu
ZGV4ZXM7CisgICAgICAgIH0pCisgICAgfQorfTsKKworRXhwci5wc2V1ZG9zWyJudGgiXSA9IEV4
cHIucHNldWRvc1siZXEiXTsKKworLy8gQWRkIGJ1dHRvbi9pbnB1dCB0eXBlIHBzZXVkb3MKK2Zv
ciAoIGkgaW4geyByYWRpbzogdHJ1ZSwgY2hlY2tib3g6IHRydWUsIGZpbGU6IHRydWUsIHBhc3N3
b3JkOiB0cnVlLCBpbWFnZTogdHJ1ZSB9ICkgeworICAgIEV4cHIucHNldWRvc1sgaSBdID0gY3Jl
YXRlSW5wdXRQc2V1ZG8oIGkgKTsKK30KK2ZvciAoIGkgaW4geyBzdWJtaXQ6IHRydWUsIHJlc2V0
OiB0cnVlIH0gKSB7CisgICAgRXhwci5wc2V1ZG9zWyBpIF0gPSBjcmVhdGVCdXR0b25Qc2V1ZG8o
IGkgKTsKK30KKworLy8gRWFzeSBBUEkgZm9yIGNyZWF0aW5nIG5ldyBzZXRGaWx0ZXJzCitmdW5j
dGlvbiBzZXRGaWx0ZXJzKCkge30KK3NldEZpbHRlcnMucHJvdG90eXBlID0gRXhwci5maWx0ZXJz
ID0gRXhwci5wc2V1ZG9zOworRXhwci5zZXRGaWx0ZXJzID0gbmV3IHNldEZpbHRlcnMoKTsKKwor
dG9rZW5pemUgPSBTaXp6bGUudG9rZW5pemUgPSBmdW5jdGlvbiggc2VsZWN0b3IsIHBhcnNlT25s
eSApIHsKKyAgICB2YXIgbWF0Y2hlZCwgbWF0Y2gsIHRva2VucywgdHlwZSwKKyAgICAgICAgc29G
YXIsIGdyb3VwcywgcHJlRmlsdGVycywKKyAgICAgICAgY2FjaGVkID0gdG9rZW5DYWNoZVsgc2Vs
ZWN0b3IgKyAiICIgXTsKKworICAgIGlmICggY2FjaGVkICkgeworICAgICAgICByZXR1cm4gcGFy
c2VPbmx5ID8gMCA6IGNhY2hlZC5zbGljZSggMCApOworICAgIH0KKworICAgIHNvRmFyID0gc2Vs
ZWN0b3I7CisgICAgZ3JvdXBzID0gW107CisgICAgcHJlRmlsdGVycyA9IEV4cHIucHJlRmlsdGVy
OworCisgICAgd2hpbGUgKCBzb0ZhciApIHsKKworICAgICAgICAvLyBDb21tYSBhbmQgZmlyc3Qg
cnVuCisgICAgICAgIGlmICggIW1hdGNoZWQgfHwgKG1hdGNoID0gcmNvbW1hLmV4ZWMoIHNvRmFy
ICkpICkgeworICAgICAgICAgICAgaWYgKCBtYXRjaCApIHsKKyAgICAgICAgICAgICAgICAvLyBE
b24ndCBjb25zdW1lIHRyYWlsaW5nIGNvbW1hcyBhcyB2YWxpZAorICAgICAgICAgICAgICAgIHNv
RmFyID0gc29GYXIuc2xpY2UoIG1hdGNoWzBdLmxlbmd0aCApIHx8IHNvRmFyOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgZ3JvdXBzLnB1c2goICh0b2tlbnMgPSBbXSkgKTsKKyAgICAgICAg
fQorCisgICAgICAgIG1hdGNoZWQgPSBmYWxzZTsKKworICAgICAgICAvLyBDb21iaW5hdG9ycwor
ICAgICAgICBpZiAoIChtYXRjaCA9IHJjb21iaW5hdG9ycy5leGVjKCBzb0ZhciApKSApIHsKKyAg
ICAgICAgICAgIG1hdGNoZWQgPSBtYXRjaC5zaGlmdCgpOworICAgICAgICAgICAgdG9rZW5zLnB1
c2goeworICAgICAgICAgICAgICAgIHZhbHVlOiBtYXRjaGVkLAorICAgICAgICAgICAgICAgIC8v
IENhc3QgZGVzY2VuZGFudCBjb21iaW5hdG9ycyB0byBzcGFjZQorICAgICAgICAgICAgICAgIHR5
cGU6IG1hdGNoWzBdLnJlcGxhY2UoIHJ0cmltLCAiICIgKQorICAgICAgICAgICAgfSk7CisgICAg
ICAgICAgICBzb0ZhciA9IHNvRmFyLnNsaWNlKCBtYXRjaGVkLmxlbmd0aCApOworICAgICAgICB9
CisKKyAgICAgICAgLy8gRmlsdGVycworICAgICAgICBmb3IgKCB0eXBlIGluIEV4cHIuZmlsdGVy
ICkgeworICAgICAgICAgICAgaWYgKCAobWF0Y2ggPSBtYXRjaEV4cHJbIHR5cGUgXS5leGVjKCBz
b0ZhciApKSAmJiAoIXByZUZpbHRlcnNbIHR5cGUgXSB8fAorICAgICAgICAgICAgICAgIChtYXRj
aCA9IHByZUZpbHRlcnNbIHR5cGUgXSggbWF0Y2ggKSkpICkgeworICAgICAgICAgICAgICAgIG1h
dGNoZWQgPSBtYXRjaC5zaGlmdCgpOworICAgICAgICAgICAgICAgIHRva2Vucy5wdXNoKHsKKyAg
ICAgICAgICAgICAgICAgICAgdmFsdWU6IG1hdGNoZWQsCisgICAgICAgICAgICAgICAgICAgIHR5
cGU6IHR5cGUsCisgICAgICAgICAgICAgICAgICAgIG1hdGNoZXM6IG1hdGNoCisgICAgICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICAgICAgc29GYXIgPSBzb0Zhci5zbGljZSggbWF0Y2hlZC5s
ZW5ndGggKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmICggIW1hdGNo
ZWQgKSB7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFJl
dHVybiB0aGUgbGVuZ3RoIG9mIHRoZSBpbnZhbGlkIGV4Y2VzcworICAgIC8vIGlmIHdlJ3JlIGp1
c3QgcGFyc2luZworICAgIC8vIE90aGVyd2lzZSwgdGhyb3cgYW4gZXJyb3Igb3IgcmV0dXJuIHRv
a2VucworICAgIHJldHVybiBwYXJzZU9ubHkgPworICAgICAgICBzb0Zhci5sZW5ndGggOgorICAg
ICAgICBzb0ZhciA/CisgICAgICAgICAgICBTaXp6bGUuZXJyb3IoIHNlbGVjdG9yICkgOgorICAg
ICAgICAgICAgLy8gQ2FjaGUgdGhlIHRva2VucworICAgICAgICAgICAgdG9rZW5DYWNoZSggc2Vs
ZWN0b3IsIGdyb3VwcyApLnNsaWNlKCAwICk7Cit9OworCitmdW5jdGlvbiB0b1NlbGVjdG9yKCB0
b2tlbnMgKSB7CisgICAgdmFyIGkgPSAwLAorICAgICAgICBsZW4gPSB0b2tlbnMubGVuZ3RoLAor
ICAgICAgICBzZWxlY3RvciA9ICIiOworICAgIGZvciAoIDsgaSA8IGxlbjsgaSsrICkgeworICAg
ICAgICBzZWxlY3RvciArPSB0b2tlbnNbaV0udmFsdWU7CisgICAgfQorICAgIHJldHVybiBzZWxl
Y3RvcjsKK30KKworZnVuY3Rpb24gYWRkQ29tYmluYXRvciggbWF0Y2hlciwgY29tYmluYXRvciwg
YmFzZSApIHsKKyAgICB2YXIgZGlyID0gY29tYmluYXRvci5kaXIsCisgICAgICAgIHNraXAgPSBj
b21iaW5hdG9yLm5leHQsCisgICAgICAgIGtleSA9IHNraXAgfHwgZGlyLAorICAgICAgICBjaGVj
a05vbkVsZW1lbnRzID0gYmFzZSAmJiBrZXkgPT09ICJwYXJlbnROb2RlIiwKKyAgICAgICAgZG9u
ZU5hbWUgPSBkb25lKys7CisKKyAgICByZXR1cm4gY29tYmluYXRvci5maXJzdCA/CisgICAgICAg
IC8vIENoZWNrIGFnYWluc3QgY2xvc2VzdCBhbmNlc3Rvci9wcmVjZWRpbmcgZWxlbWVudAorICAg
ICAgICBmdW5jdGlvbiggZWxlbSwgY29udGV4dCwgeG1sICkgeworICAgICAgICAgICAgd2hpbGUg
KCAoZWxlbSA9IGVsZW1bIGRpciBdKSApIHsKKyAgICAgICAgICAgICAgICBpZiAoIGVsZW0ubm9k
ZVR5cGUgPT09IDEgfHwgY2hlY2tOb25FbGVtZW50cyApIHsKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIG1hdGNoZXIoIGVsZW0sIGNvbnRleHQsIHhtbCApOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfSA6CisK
KyAgICAgICAgLy8gQ2hlY2sgYWdhaW5zdCBhbGwgYW5jZXN0b3IvcHJlY2VkaW5nIGVsZW1lbnRz
CisgICAgICAgIGZ1bmN0aW9uKCBlbGVtLCBjb250ZXh0LCB4bWwgKSB7CisgICAgICAgICAgICB2
YXIgb2xkQ2FjaGUsIHVuaXF1ZUNhY2hlLCBvdXRlckNhY2hlLAorICAgICAgICAgICAgICAgIG5l
d0NhY2hlID0gWyBkaXJydW5zLCBkb25lTmFtZSBdOworCisgICAgICAgICAgICAvLyBXZSBjYW4n
dCBzZXQgYXJiaXRyYXJ5IGRhdGEgb24gWE1MIG5vZGVzLCBzbyB0aGV5IGRvbid0IGJlbmVmaXQg
ZnJvbSBjb21iaW5hdG9yIGNhY2hpbmcKKyAgICAgICAgICAgIGlmICggeG1sICkgeworICAgICAg
ICAgICAgICAgIHdoaWxlICggKGVsZW0gPSBlbGVtWyBkaXIgXSkgKSB7CisgICAgICAgICAgICAg
ICAgICAgIGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSB8fCBjaGVja05vbkVsZW1lbnRzICkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBtYXRjaGVyKCBlbGVtLCBjb250ZXh0LCB4bWwg
KSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgd2hpbGUgKCAoZWxlbSA9
IGVsZW1bIGRpciBdKSApIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCBlbGVtLm5vZGVUeXBl
ID09PSAxIHx8IGNoZWNrTm9uRWxlbWVudHMgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBv
dXRlckNhY2hlID0gZWxlbVsgZXhwYW5kbyBdIHx8IChlbGVtWyBleHBhbmRvIF0gPSB7fSk7CisK
KyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6IElFIDw5IG9ubHkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIERlZmVuZCBhZ2FpbnN0IGNsb25lZCBhdHRyb3BlcnRpZXMgKGpR
dWVyeSBnaC0xNzA5KQorICAgICAgICAgICAgICAgICAgICAgICAgdW5pcXVlQ2FjaGUgPSBvdXRl
ckNhY2hlWyBlbGVtLnVuaXF1ZUlEIF0gfHwgKG91dGVyQ2FjaGVbIGVsZW0udW5pcXVlSUQgXSA9
IHt9KTsKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBza2lwICYmIHNraXAgPT09IGVs
ZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBlbGVtID0gZWxlbVsgZGlyIF0gfHwgZWxlbTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0g
ZWxzZSBpZiAoIChvbGRDYWNoZSA9IHVuaXF1ZUNhY2hlWyBrZXkgXSkgJiYKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBvbGRDYWNoZVsgMCBdID09PSBkaXJydW5zICYmIG9sZENhY2hlWyAx
IF0gPT09IGRvbmVOYW1lICkgeworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXNz
aWduIHRvIG5ld0NhY2hlIHNvIHJlc3VsdHMgYmFjay1wcm9wYWdhdGUgdG8gcHJldmlvdXMgZWxl
bWVudHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKG5ld0NhY2hlWyAyIF0g
PSBvbGRDYWNoZVsgMiBdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmV1c2UgbmV3Y2FjaGUgc28gcmVzdWx0cyBiYWNr
LXByb3BhZ2F0ZSB0byBwcmV2aW91cyBlbGVtZW50cworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuaXF1ZUNhY2hlWyBrZXkgXSA9IG5ld0NhY2hlOworCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gQSBtYXRjaCBtZWFucyB3ZSdyZSBkb25lOyBhIGZhaWwgbWVhbnMgd2UgaGF2
ZSB0byBrZWVwIGNoZWNraW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAobmV3
Q2FjaGVbIDIgXSA9IG1hdGNoZXIoIGVsZW0sIGNvbnRleHQsIHhtbCApKSApIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICB9OworfQorCitmdW5jdGlvbiBlbGVtZW50TWF0Y2hlciggbWF0Y2hl
cnMgKSB7CisgICAgcmV0dXJuIG1hdGNoZXJzLmxlbmd0aCA+IDEgPworICAgICAgICBmdW5jdGlv
biggZWxlbSwgY29udGV4dCwgeG1sICkgeworICAgICAgICAgICAgdmFyIGkgPSBtYXRjaGVycy5s
ZW5ndGg7CisgICAgICAgICAgICB3aGlsZSAoIGktLSApIHsKKyAgICAgICAgICAgICAgICBpZiAo
ICFtYXRjaGVyc1tpXSggZWxlbSwgY29udGV4dCwgeG1sICkgKSB7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfSA6CisgICAgICAgIG1hdGNoZXJzWzBdOwor
fQorCitmdW5jdGlvbiBtdWx0aXBsZUNvbnRleHRzKCBzZWxlY3RvciwgY29udGV4dHMsIHJlc3Vs
dHMgKSB7CisgICAgdmFyIGkgPSAwLAorICAgICAgICBsZW4gPSBjb250ZXh0cy5sZW5ndGg7Cisg
ICAgZm9yICggOyBpIDwgbGVuOyBpKysgKSB7CisgICAgICAgIFNpenpsZSggc2VsZWN0b3IsIGNv
bnRleHRzW2ldLCByZXN1bHRzICk7CisgICAgfQorICAgIHJldHVybiByZXN1bHRzOworfQorCitm
dW5jdGlvbiBjb25kZW5zZSggdW5tYXRjaGVkLCBtYXAsIGZpbHRlciwgY29udGV4dCwgeG1sICkg
eworICAgIHZhciBlbGVtLAorICAgICAgICBuZXdVbm1hdGNoZWQgPSBbXSwKKyAgICAgICAgaSA9
IDAsCisgICAgICAgIGxlbiA9IHVubWF0Y2hlZC5sZW5ndGgsCisgICAgICAgIG1hcHBlZCA9IG1h
cCAhPSBudWxsOworCisgICAgZm9yICggOyBpIDwgbGVuOyBpKysgKSB7CisgICAgICAgIGlmICgg
KGVsZW0gPSB1bm1hdGNoZWRbaV0pICkgeworICAgICAgICAgICAgaWYgKCAhZmlsdGVyIHx8IGZp
bHRlciggZWxlbSwgY29udGV4dCwgeG1sICkgKSB7CisgICAgICAgICAgICAgICAgbmV3VW5tYXRj
aGVkLnB1c2goIGVsZW0gKTsKKyAgICAgICAgICAgICAgICBpZiAoIG1hcHBlZCApIHsKKyAgICAg
ICAgICAgICAgICAgICAgbWFwLnB1c2goIGkgKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gbmV3VW5tYXRjaGVkOworfQor
CitmdW5jdGlvbiBzZXRNYXRjaGVyKCBwcmVGaWx0ZXIsIHNlbGVjdG9yLCBtYXRjaGVyLCBwb3N0
RmlsdGVyLCBwb3N0RmluZGVyLCBwb3N0U2VsZWN0b3IgKSB7CisgICAgaWYgKCBwb3N0RmlsdGVy
ICYmICFwb3N0RmlsdGVyWyBleHBhbmRvIF0gKSB7CisgICAgICAgIHBvc3RGaWx0ZXIgPSBzZXRN
YXRjaGVyKCBwb3N0RmlsdGVyICk7CisgICAgfQorICAgIGlmICggcG9zdEZpbmRlciAmJiAhcG9z
dEZpbmRlclsgZXhwYW5kbyBdICkgeworICAgICAgICBwb3N0RmluZGVyID0gc2V0TWF0Y2hlcigg
cG9zdEZpbmRlciwgcG9zdFNlbGVjdG9yICk7CisgICAgfQorICAgIHJldHVybiBtYXJrRnVuY3Rp
b24oZnVuY3Rpb24oIHNlZWQsIHJlc3VsdHMsIGNvbnRleHQsIHhtbCApIHsKKyAgICAgICAgdmFy
IHRlbXAsIGksIGVsZW0sCisgICAgICAgICAgICBwcmVNYXAgPSBbXSwKKyAgICAgICAgICAgIHBv
c3RNYXAgPSBbXSwKKyAgICAgICAgICAgIHByZWV4aXN0aW5nID0gcmVzdWx0cy5sZW5ndGgsCisK
KyAgICAgICAgICAgIC8vIEdldCBpbml0aWFsIGVsZW1lbnRzIGZyb20gc2VlZCBvciBjb250ZXh0
CisgICAgICAgICAgICBlbGVtcyA9IHNlZWQgfHwgbXVsdGlwbGVDb250ZXh0cyggc2VsZWN0b3Ig
fHwgIioiLCBjb250ZXh0Lm5vZGVUeXBlID8gWyBjb250ZXh0IF0gOiBjb250ZXh0LCBbXSApLAor
CisgICAgICAgICAgICAvLyBQcmVmaWx0ZXIgdG8gZ2V0IG1hdGNoZXIgaW5wdXQsIHByZXNlcnZp
bmcgYSBtYXAgZm9yIHNlZWQtcmVzdWx0cyBzeW5jaHJvbml6YXRpb24KKyAgICAgICAgICAgIG1h
dGNoZXJJbiA9IHByZUZpbHRlciAmJiAoIHNlZWQgfHwgIXNlbGVjdG9yICkgPworICAgICAgICAg
ICAgICAgIGNvbmRlbnNlKCBlbGVtcywgcHJlTWFwLCBwcmVGaWx0ZXIsIGNvbnRleHQsIHhtbCAp
IDoKKyAgICAgICAgICAgICAgICBlbGVtcywKKworICAgICAgICAgICAgbWF0Y2hlck91dCA9IG1h
dGNoZXIgPworICAgICAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgYSBwb3N0RmluZGVyLCBvciBm
aWx0ZXJlZCBzZWVkLCBvciBub24tc2VlZCBwb3N0RmlsdGVyIG9yIHByZWV4aXN0aW5nIHJlc3Vs
dHMsCisgICAgICAgICAgICAgICAgcG9zdEZpbmRlciB8fCAoIHNlZWQgPyBwcmVGaWx0ZXIgOiBw
cmVleGlzdGluZyB8fCBwb3N0RmlsdGVyICkgPworCisgICAgICAgICAgICAgICAgICAgIC8vIC4u
LmludGVybWVkaWF0ZSBwcm9jZXNzaW5nIGlzIG5lY2Vzc2FyeQorICAgICAgICAgICAgICAgICAg
ICBbXSA6CisKKyAgICAgICAgICAgICAgICAgICAgLy8gLi4ub3RoZXJ3aXNlIHVzZSByZXN1bHRz
IGRpcmVjdGx5CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMgOgorICAgICAgICAgICAgICAg
IG1hdGNoZXJJbjsKKworICAgICAgICAvLyBGaW5kIHByaW1hcnkgbWF0Y2hlcworICAgICAgICBp
ZiAoIG1hdGNoZXIgKSB7CisgICAgICAgICAgICBtYXRjaGVyKCBtYXRjaGVySW4sIG1hdGNoZXJP
dXQsIGNvbnRleHQsIHhtbCApOworICAgICAgICB9CisKKyAgICAgICAgLy8gQXBwbHkgcG9zdEZp
bHRlcgorICAgICAgICBpZiAoIHBvc3RGaWx0ZXIgKSB7CisgICAgICAgICAgICB0ZW1wID0gY29u
ZGVuc2UoIG1hdGNoZXJPdXQsIHBvc3RNYXAgKTsKKyAgICAgICAgICAgIHBvc3RGaWx0ZXIoIHRl
bXAsIFtdLCBjb250ZXh0LCB4bWwgKTsKKworICAgICAgICAgICAgLy8gVW4tbWF0Y2ggZmFpbGlu
ZyBlbGVtZW50cyBieSBtb3ZpbmcgdGhlbSBiYWNrIHRvIG1hdGNoZXJJbgorICAgICAgICAgICAg
aSA9IHRlbXAubGVuZ3RoOworICAgICAgICAgICAgd2hpbGUgKCBpLS0gKSB7CisgICAgICAgICAg
ICAgICAgaWYgKCAoZWxlbSA9IHRlbXBbaV0pICkgeworICAgICAgICAgICAgICAgICAgICBtYXRj
aGVyT3V0WyBwb3N0TWFwW2ldIF0gPSAhKG1hdGNoZXJJblsgcG9zdE1hcFtpXSBdID0gZWxlbSk7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAg
aWYgKCBzZWVkICkgeworICAgICAgICAgICAgaWYgKCBwb3N0RmluZGVyIHx8IHByZUZpbHRlciAp
IHsKKyAgICAgICAgICAgICAgICBpZiAoIHBvc3RGaW5kZXIgKSB7CisgICAgICAgICAgICAgICAg
ICAgIC8vIEdldCB0aGUgZmluYWwgbWF0Y2hlck91dCBieSBjb25kZW5zaW5nIHRoaXMgaW50ZXJt
ZWRpYXRlIGludG8gcG9zdEZpbmRlciBjb250ZXh0cworICAgICAgICAgICAgICAgICAgICB0ZW1w
ID0gW107CisgICAgICAgICAgICAgICAgICAgIGkgPSBtYXRjaGVyT3V0Lmxlbmd0aDsKKyAgICAg
ICAgICAgICAgICAgICAgd2hpbGUgKCBpLS0gKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoIChlbGVtID0gbWF0Y2hlck91dFtpXSkgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gUmVzdG9yZSBtYXRjaGVySW4gc2luY2UgZWxlbSBpcyBub3QgeWV0IGEgZmluYWwgbWF0
Y2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wLnB1c2goIChtYXRjaGVySW5baV0g
PSBlbGVtKSApOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIHBvc3RGaW5kZXIoIG51bGwsIChtYXRjaGVyT3V0ID0g
W10pLCB0ZW1wLCB4bWwgKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAv
LyBNb3ZlIG1hdGNoZWQgZWxlbWVudHMgZnJvbSBzZWVkIHRvIHJlc3VsdHMgdG8ga2VlcCB0aGVt
IHN5bmNocm9uaXplZAorICAgICAgICAgICAgICAgIGkgPSBtYXRjaGVyT3V0Lmxlbmd0aDsKKyAg
ICAgICAgICAgICAgICB3aGlsZSAoIGktLSApIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCAo
ZWxlbSA9IG1hdGNoZXJPdXRbaV0pICYmCisgICAgICAgICAgICAgICAgICAgICAgICAodGVtcCA9
IHBvc3RGaW5kZXIgPyBpbmRleE9mKCBzZWVkLCBlbGVtICkgOiBwcmVNYXBbaV0pID4gLTEgKSB7
CisKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlZWRbdGVtcF0gPSAhKHJlc3VsdHNbdGVtcF0g
PSBlbGVtKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKworICAgICAgICAvLyBBZGQgZWxlbWVudHMgdG8gcmVzdWx0cywgdGhyb3VnaCBw
b3N0RmluZGVyIGlmIGRlZmluZWQKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1hdGNo
ZXJPdXQgPSBjb25kZW5zZSgKKyAgICAgICAgICAgICAgICBtYXRjaGVyT3V0ID09PSByZXN1bHRz
ID8KKyAgICAgICAgICAgICAgICAgICAgbWF0Y2hlck91dC5zcGxpY2UoIHByZWV4aXN0aW5nLCBt
YXRjaGVyT3V0Lmxlbmd0aCApIDoKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2hlck91dAorICAg
ICAgICAgICAgKTsKKyAgICAgICAgICAgIGlmICggcG9zdEZpbmRlciApIHsKKyAgICAgICAgICAg
ICAgICBwb3N0RmluZGVyKCBudWxsLCByZXN1bHRzLCBtYXRjaGVyT3V0LCB4bWwgKTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcHVzaC5hcHBseSggcmVzdWx0cywgbWF0
Y2hlck91dCApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSk7Cit9CisKK2Z1bmN0
aW9uIG1hdGNoZXJGcm9tVG9rZW5zKCB0b2tlbnMgKSB7CisgICAgdmFyIGNoZWNrQ29udGV4dCwg
bWF0Y2hlciwgaiwKKyAgICAgICAgbGVuID0gdG9rZW5zLmxlbmd0aCwKKyAgICAgICAgbGVhZGlu
Z1JlbGF0aXZlID0gRXhwci5yZWxhdGl2ZVsgdG9rZW5zWzBdLnR5cGUgXSwKKyAgICAgICAgaW1w
bGljaXRSZWxhdGl2ZSA9IGxlYWRpbmdSZWxhdGl2ZSB8fCBFeHByLnJlbGF0aXZlWyIgIl0sCisg
ICAgICAgIGkgPSBsZWFkaW5nUmVsYXRpdmUgPyAxIDogMCwKKworICAgICAgICAvLyBUaGUgZm91
bmRhdGlvbmFsIG1hdGNoZXIgZW5zdXJlcyB0aGF0IGVsZW1lbnRzIGFyZSByZWFjaGFibGUgZnJv
bSB0b3AtbGV2ZWwgY29udGV4dChzKQorICAgICAgICBtYXRjaENvbnRleHQgPSBhZGRDb21iaW5h
dG9yKCBmdW5jdGlvbiggZWxlbSApIHsKKyAgICAgICAgICAgIHJldHVybiBlbGVtID09PSBjaGVj
a0NvbnRleHQ7CisgICAgICAgIH0sIGltcGxpY2l0UmVsYXRpdmUsIHRydWUgKSwKKyAgICAgICAg
bWF0Y2hBbnlDb250ZXh0ID0gYWRkQ29tYmluYXRvciggZnVuY3Rpb24oIGVsZW0gKSB7CisgICAg
ICAgICAgICByZXR1cm4gaW5kZXhPZiggY2hlY2tDb250ZXh0LCBlbGVtICkgPiAtMTsKKyAgICAg
ICAgfSwgaW1wbGljaXRSZWxhdGl2ZSwgdHJ1ZSApLAorICAgICAgICBtYXRjaGVycyA9IFsgZnVu
Y3Rpb24oIGVsZW0sIGNvbnRleHQsIHhtbCApIHsKKyAgICAgICAgICAgIHZhciByZXQgPSAoICFs
ZWFkaW5nUmVsYXRpdmUgJiYgKCB4bWwgfHwgY29udGV4dCAhPT0gb3V0ZXJtb3N0Q29udGV4dCAp
ICkgfHwgKAorICAgICAgICAgICAgICAgIChjaGVja0NvbnRleHQgPSBjb250ZXh0KS5ub2RlVHlw
ZSA/CisgICAgICAgICAgICAgICAgICAgIG1hdGNoQ29udGV4dCggZWxlbSwgY29udGV4dCwgeG1s
ICkgOgorICAgICAgICAgICAgICAgICAgICBtYXRjaEFueUNvbnRleHQoIGVsZW0sIGNvbnRleHQs
IHhtbCApICk7CisgICAgICAgICAgICAvLyBBdm9pZCBoYW5naW5nIG9udG8gZWxlbWVudCAoaXNz
dWUgIzI5OSkKKyAgICAgICAgICAgIGNoZWNrQ29udGV4dCA9IG51bGw7CisgICAgICAgICAgICBy
ZXR1cm4gcmV0OworICAgICAgICB9IF07CisKKyAgICBmb3IgKCA7IGkgPCBsZW47IGkrKyApIHsK
KyAgICAgICAgaWYgKCAobWF0Y2hlciA9IEV4cHIucmVsYXRpdmVbIHRva2Vuc1tpXS50eXBlIF0p
ICkgeworICAgICAgICAgICAgbWF0Y2hlcnMgPSBbIGFkZENvbWJpbmF0b3IoZWxlbWVudE1hdGNo
ZXIoIG1hdGNoZXJzICksIG1hdGNoZXIpIF07CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBtYXRjaGVyID0gRXhwci5maWx0ZXJbIHRva2Vuc1tpXS50eXBlIF0uYXBwbHkoIG51bGwsIHRv
a2Vuc1tpXS5tYXRjaGVzICk7CisKKyAgICAgICAgICAgIC8vIFJldHVybiBzcGVjaWFsIHVwb24g
c2VlaW5nIGEgcG9zaXRpb25hbCBtYXRjaGVyCisgICAgICAgICAgICBpZiAoIG1hdGNoZXJbIGV4
cGFuZG8gXSApIHsKKyAgICAgICAgICAgICAgICAvLyBGaW5kIHRoZSBuZXh0IHJlbGF0aXZlIG9w
ZXJhdG9yIChpZiBhbnkpIGZvciBwcm9wZXIgaGFuZGxpbmcKKyAgICAgICAgICAgICAgICBqID0g
KytpOworICAgICAgICAgICAgICAgIGZvciAoIDsgaiA8IGxlbjsgaisrICkgeworICAgICAgICAg
ICAgICAgICAgICBpZiAoIEV4cHIucmVsYXRpdmVbIHRva2Vuc1tqXS50eXBlIF0gKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2V0TWF0Y2hlcigKKyAgICAgICAg
ICAgICAgICAgICAgaSA+IDEgJiYgZWxlbWVudE1hdGNoZXIoIG1hdGNoZXJzICksCisgICAgICAg
ICAgICAgICAgICAgIGkgPiAxICYmIHRvU2VsZWN0b3IoCisgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBJZiB0aGUgcHJlY2VkaW5nIHRva2VuIHdhcyBhIGRlc2NlbmRhbnQgY29tYmluYXRvciwg
aW5zZXJ0IGFuIGltcGxpY2l0IGFueS1lbGVtZW50IGAqYAorICAgICAgICAgICAgICAgICAgICAg
ICAgdG9rZW5zLnNsaWNlKCAwLCBpIC0gMSApLmNvbmNhdCh7IHZhbHVlOiB0b2tlbnNbIGkgLSAy
IF0udHlwZSA9PT0gIiAiID8gIioiIDogIiIgfSkKKyAgICAgICAgICAgICAgICAgICAgKS5yZXBs
YWNlKCBydHJpbSwgIiQxIiApLAorICAgICAgICAgICAgICAgICAgICBtYXRjaGVyLAorICAgICAg
ICAgICAgICAgICAgICBpIDwgaiAmJiBtYXRjaGVyRnJvbVRva2VucyggdG9rZW5zLnNsaWNlKCBp
LCBqICkgKSwKKyAgICAgICAgICAgICAgICAgICAgaiA8IGxlbiAmJiBtYXRjaGVyRnJvbVRva2Vu
cyggKHRva2VucyA9IHRva2Vucy5zbGljZSggaiApKSApLAorICAgICAgICAgICAgICAgICAgICBq
IDwgbGVuICYmIHRvU2VsZWN0b3IoIHRva2VucyApCisgICAgICAgICAgICAgICAgKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIG1hdGNoZXJzLnB1c2goIG1hdGNoZXIgKTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIHJldHVybiBlbGVtZW50TWF0Y2hlciggbWF0Y2hlcnMgKTsKK30KKwor
ZnVuY3Rpb24gbWF0Y2hlckZyb21Hcm91cE1hdGNoZXJzKCBlbGVtZW50TWF0Y2hlcnMsIHNldE1h
dGNoZXJzICkgeworICAgIHZhciBieVNldCA9IHNldE1hdGNoZXJzLmxlbmd0aCA+IDAsCisgICAg
ICAgIGJ5RWxlbWVudCA9IGVsZW1lbnRNYXRjaGVycy5sZW5ndGggPiAwLAorICAgICAgICBzdXBl
ck1hdGNoZXIgPSBmdW5jdGlvbiggc2VlZCwgY29udGV4dCwgeG1sLCByZXN1bHRzLCBvdXRlcm1v
c3QgKSB7CisgICAgICAgICAgICB2YXIgZWxlbSwgaiwgbWF0Y2hlciwKKyAgICAgICAgICAgICAg
ICBtYXRjaGVkQ291bnQgPSAwLAorICAgICAgICAgICAgICAgIGkgPSAiMCIsCisgICAgICAgICAg
ICAgICAgdW5tYXRjaGVkID0gc2VlZCAmJiBbXSwKKyAgICAgICAgICAgICAgICBzZXRNYXRjaGVk
ID0gW10sCisgICAgICAgICAgICAgICAgY29udGV4dEJhY2t1cCA9IG91dGVybW9zdENvbnRleHQs
CisgICAgICAgICAgICAgICAgLy8gV2UgbXVzdCBhbHdheXMgaGF2ZSBlaXRoZXIgc2VlZCBlbGVt
ZW50cyBvciBvdXRlcm1vc3QgY29udGV4dAorICAgICAgICAgICAgICAgIGVsZW1zID0gc2VlZCB8
fCBieUVsZW1lbnQgJiYgRXhwci5maW5kWyJUQUciXSggIioiLCBvdXRlcm1vc3QgKSwKKyAgICAg
ICAgICAgICAgICAvLyBVc2UgaW50ZWdlciBkaXJydW5zIGlmZiB0aGlzIGlzIHRoZSBvdXRlcm1v
c3QgbWF0Y2hlcgorICAgICAgICAgICAgICAgIGRpcnJ1bnNVbmlxdWUgPSAoZGlycnVucyArPSBj
b250ZXh0QmFja3VwID09IG51bGwgPyAxIDogTWF0aC5yYW5kb20oKSB8fCAwLjEpLAorICAgICAg
ICAgICAgICAgIGxlbiA9IGVsZW1zLmxlbmd0aDsKKworICAgICAgICAgICAgaWYgKCBvdXRlcm1v
c3QgKSB7CisgICAgICAgICAgICAgICAgb3V0ZXJtb3N0Q29udGV4dCA9IGNvbnRleHQgPT09IGRv
Y3VtZW50IHx8IGNvbnRleHQgfHwgb3V0ZXJtb3N0OworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAvLyBBZGQgZWxlbWVudHMgcGFzc2luZyBlbGVtZW50TWF0Y2hlcnMgZGlyZWN0bHkgdG8g
cmVzdWx0cworICAgICAgICAgICAgLy8gU3VwcG9ydDogSUU8OSwgU2FmYXJpCisgICAgICAgICAg
ICAvLyBUb2xlcmF0ZSBOb2RlTGlzdCBwcm9wZXJ0aWVzIChJRTogImxlbmd0aCI7IFNhZmFyaTog
PG51bWJlcj4pIG1hdGNoaW5nIGVsZW1lbnRzIGJ5IGlkCisgICAgICAgICAgICBmb3IgKCA7IGkg
IT09IGxlbiAmJiAoZWxlbSA9IGVsZW1zW2ldKSAhPSBudWxsOyBpKysgKSB7CisgICAgICAgICAg
ICAgICAgaWYgKCBieUVsZW1lbnQgJiYgZWxlbSApIHsKKyAgICAgICAgICAgICAgICAgICAgaiA9
IDA7CisgICAgICAgICAgICAgICAgICAgIGlmICggIWNvbnRleHQgJiYgZWxlbS5vd25lckRvY3Vt
ZW50ICE9PSBkb2N1bWVudCApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNldERvY3VtZW50
KCBlbGVtICk7CisgICAgICAgICAgICAgICAgICAgICAgICB4bWwgPSAhZG9jdW1lbnRJc0hUTUw7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCAobWF0
Y2hlciA9IGVsZW1lbnRNYXRjaGVyc1tqKytdKSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGlmICggbWF0Y2hlciggZWxlbSwgY29udGV4dCB8fCBkb2N1bWVudCwgeG1sKSApIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzLnB1c2goIGVsZW0gKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoIG91dGVybW9zdCApIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGRpcnJ1bnMgPSBkaXJydW5zVW5pcXVlOworICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8g
VHJhY2sgdW5tYXRjaGVkIGVsZW1lbnRzIGZvciBzZXQgZmlsdGVycworICAgICAgICAgICAgICAg
IGlmICggYnlTZXQgKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFRoZXkgd2lsbCBoYXZlIGdv
bmUgdGhyb3VnaCBhbGwgcG9zc2libGUgbWF0Y2hlcnMKKyAgICAgICAgICAgICAgICAgICAgaWYg
KCAoZWxlbSA9ICFtYXRjaGVyICYmIGVsZW0pICkgeworICAgICAgICAgICAgICAgICAgICAgICAg
bWF0Y2hlZENvdW50LS07CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg
ICAgICAvLyBMZW5ndGhlbiB0aGUgYXJyYXkgZm9yIGV2ZXJ5IGVsZW1lbnQsIG1hdGNoZWQgb3Ig
bm90CisgICAgICAgICAgICAgICAgICAgIGlmICggc2VlZCApIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHVubWF0Y2hlZC5wdXNoKCBlbGVtICk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIGBpYCBpcyBu
b3cgdGhlIGNvdW50IG9mIGVsZW1lbnRzIHZpc2l0ZWQgYWJvdmUsIGFuZCBhZGRpbmcgaXQgdG8g
YG1hdGNoZWRDb3VudGAKKyAgICAgICAgICAgIC8vIG1ha2VzIHRoZSBsYXR0ZXIgbm9ubmVnYXRp
dmUuCisgICAgICAgICAgICBtYXRjaGVkQ291bnQgKz0gaTsKKworICAgICAgICAgICAgLy8gQXBw
bHkgc2V0IGZpbHRlcnMgdG8gdW5tYXRjaGVkIGVsZW1lbnRzCisgICAgICAgICAgICAvLyBOT1RF
OiBUaGlzIGNhbiBiZSBza2lwcGVkIGlmIHRoZXJlIGFyZSBubyB1bm1hdGNoZWQgZWxlbWVudHMg
KGkuZS4sIGBtYXRjaGVkQ291bnRgCisgICAgICAgICAgICAvLyBlcXVhbHMgYGlgKSwgdW5sZXNz
IHdlIGRpZG4ndCB2aXNpdCBfYW55XyBlbGVtZW50cyBpbiB0aGUgYWJvdmUgbG9vcCBiZWNhdXNl
IHdlIGhhdmUKKyAgICAgICAgICAgIC8vIG5vIGVsZW1lbnQgbWF0Y2hlcnMgYW5kIG5vIHNlZWQu
CisgICAgICAgICAgICAvLyBJbmNyZW1lbnRpbmcgYW4gaW5pdGlhbGx5LXN0cmluZyAiMCIgYGlg
IGFsbG93cyBgaWAgdG8gcmVtYWluIGEgc3RyaW5nIG9ubHkgaW4gdGhhdAorICAgICAgICAgICAg
Ly8gY2FzZSwgd2hpY2ggd2lsbCByZXN1bHQgaW4gYSAiMDAiIGBtYXRjaGVkQ291bnRgIHRoYXQg
ZGlmZmVycyBmcm9tIGBpYCBidXQgaXMgYWxzbworICAgICAgICAgICAgLy8gbnVtZXJpY2FsbHkg
emVyby4KKyAgICAgICAgICAgIGlmICggYnlTZXQgJiYgaSAhPT0gbWF0Y2hlZENvdW50ICkgewor
ICAgICAgICAgICAgICAgIGogPSAwOworICAgICAgICAgICAgICAgIHdoaWxlICggKG1hdGNoZXIg
PSBzZXRNYXRjaGVyc1tqKytdKSApIHsKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2hlciggdW5t
YXRjaGVkLCBzZXRNYXRjaGVkLCBjb250ZXh0LCB4bWwgKTsKKyAgICAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICBpZiAoIHNlZWQgKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFJl
aW50ZWdyYXRlIGVsZW1lbnQgbWF0Y2hlcyB0byBlbGltaW5hdGUgdGhlIG5lZWQgZm9yIHNvcnRp
bmcKKyAgICAgICAgICAgICAgICAgICAgaWYgKCBtYXRjaGVkQ291bnQgPiAwICkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgd2hpbGUgKCBpLS0gKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCAhKHVubWF0Y2hlZFtpXSB8fCBzZXRNYXRjaGVkW2ldKSApIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0TWF0Y2hlZFtpXSA9IHBvcC5jYWxsKCByZXN1bHRz
ICk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgLy8gRGlz
Y2FyZCBpbmRleCBwbGFjZWhvbGRlciB2YWx1ZXMgdG8gZ2V0IG9ubHkgYWN0dWFsIG1hdGNoZXMK
KyAgICAgICAgICAgICAgICAgICAgc2V0TWF0Y2hlZCA9IGNvbmRlbnNlKCBzZXRNYXRjaGVkICk7
CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gQWRkIG1hdGNoZXMgdG8g
cmVzdWx0cworICAgICAgICAgICAgICAgIHB1c2guYXBwbHkoIHJlc3VsdHMsIHNldE1hdGNoZWQg
KTsKKworICAgICAgICAgICAgICAgIC8vIFNlZWRsZXNzIHNldCBtYXRjaGVzIHN1Y2NlZWRpbmcg
bXVsdGlwbGUgc3VjY2Vzc2Z1bCBtYXRjaGVycyBzdGlwdWxhdGUgc29ydGluZworICAgICAgICAg
ICAgICAgIGlmICggb3V0ZXJtb3N0ICYmICFzZWVkICYmIHNldE1hdGNoZWQubGVuZ3RoID4gMCAm
JgorICAgICAgICAgICAgICAgICAgICAoIG1hdGNoZWRDb3VudCArIHNldE1hdGNoZXJzLmxlbmd0
aCApID4gMSApIHsKKworICAgICAgICAgICAgICAgICAgICBTaXp6bGUudW5pcXVlU29ydCggcmVz
dWx0cyApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
Ly8gT3ZlcnJpZGUgbWFuaXB1bGF0aW9uIG9mIGdsb2JhbHMgYnkgbmVzdGVkIG1hdGNoZXJzCisg
ICAgICAgICAgICBpZiAoIG91dGVybW9zdCApIHsKKyAgICAgICAgICAgICAgICBkaXJydW5zID0g
ZGlycnVuc1VuaXF1ZTsKKyAgICAgICAgICAgICAgICBvdXRlcm1vc3RDb250ZXh0ID0gY29udGV4
dEJhY2t1cDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHVubWF0Y2hlZDsK
KyAgICAgICAgfTsKKworICAgIHJldHVybiBieVNldCA/CisgICAgICAgIG1hcmtGdW5jdGlvbigg
c3VwZXJNYXRjaGVyICkgOgorICAgICAgICBzdXBlck1hdGNoZXI7Cit9CisKK2NvbXBpbGUgPSBT
aXp6bGUuY29tcGlsZSA9IGZ1bmN0aW9uKCBzZWxlY3RvciwgbWF0Y2ggLyogSW50ZXJuYWwgVXNl
IE9ubHkgKi8gKSB7CisgICAgdmFyIGksCisgICAgICAgIHNldE1hdGNoZXJzID0gW10sCisgICAg
ICAgIGVsZW1lbnRNYXRjaGVycyA9IFtdLAorICAgICAgICBjYWNoZWQgPSBjb21waWxlckNhY2hl
WyBzZWxlY3RvciArICIgIiBdOworCisgICAgaWYgKCAhY2FjaGVkICkgeworICAgICAgICAvLyBH
ZW5lcmF0ZSBhIGZ1bmN0aW9uIG9mIHJlY3Vyc2l2ZSBmdW5jdGlvbnMgdGhhdCBjYW4gYmUgdXNl
ZCB0byBjaGVjayBlYWNoIGVsZW1lbnQKKyAgICAgICAgaWYgKCAhbWF0Y2ggKSB7CisgICAgICAg
ICAgICBtYXRjaCA9IHRva2VuaXplKCBzZWxlY3RvciApOworICAgICAgICB9CisgICAgICAgIGkg
PSBtYXRjaC5sZW5ndGg7CisgICAgICAgIHdoaWxlICggaS0tICkgeworICAgICAgICAgICAgY2Fj
aGVkID0gbWF0Y2hlckZyb21Ub2tlbnMoIG1hdGNoW2ldICk7CisgICAgICAgICAgICBpZiAoIGNh
Y2hlZFsgZXhwYW5kbyBdICkgeworICAgICAgICAgICAgICAgIHNldE1hdGNoZXJzLnB1c2goIGNh
Y2hlZCApOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBlbGVtZW50TWF0
Y2hlcnMucHVzaCggY2FjaGVkICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAg
ICAvLyBDYWNoZSB0aGUgY29tcGlsZWQgZnVuY3Rpb24KKyAgICAgICAgY2FjaGVkID0gY29tcGls
ZXJDYWNoZSggc2VsZWN0b3IsIG1hdGNoZXJGcm9tR3JvdXBNYXRjaGVycyggZWxlbWVudE1hdGNo
ZXJzLCBzZXRNYXRjaGVycyApICk7CisKKyAgICAgICAgLy8gU2F2ZSBzZWxlY3RvciBhbmQgdG9r
ZW5pemF0aW9uCisgICAgICAgIGNhY2hlZC5zZWxlY3RvciA9IHNlbGVjdG9yOworICAgIH0KKyAg
ICByZXR1cm4gY2FjaGVkOworfTsKKworLyoqCisgKiBBIGxvdy1sZXZlbCBzZWxlY3Rpb24gZnVu
Y3Rpb24gdGhhdCB3b3JrcyB3aXRoIFNpenpsZSdzIGNvbXBpbGVkCisgKiAgc2VsZWN0b3IgZnVu
Y3Rpb25zCisgKiBAcGFyYW0ge1N0cmluZ3xGdW5jdGlvbn0gc2VsZWN0b3IgQSBzZWxlY3RvciBv
ciBhIHByZS1jb21waWxlZAorICogIHNlbGVjdG9yIGZ1bmN0aW9uIGJ1aWx0IHdpdGggU2l6emxl
LmNvbXBpbGUKKyAqIEBwYXJhbSB7RWxlbWVudH0gY29udGV4dAorICogQHBhcmFtIHtBcnJheX0g
W3Jlc3VsdHNdCisgKiBAcGFyYW0ge0FycmF5fSBbc2VlZF0gQSBzZXQgb2YgZWxlbWVudHMgdG8g
bWF0Y2ggYWdhaW5zdAorICovCitzZWxlY3QgPSBTaXp6bGUuc2VsZWN0ID0gZnVuY3Rpb24oIHNl
bGVjdG9yLCBjb250ZXh0LCByZXN1bHRzLCBzZWVkICkgeworICAgIHZhciBpLCB0b2tlbnMsIHRv
a2VuLCB0eXBlLCBmaW5kLAorICAgICAgICBjb21waWxlZCA9IHR5cGVvZiBzZWxlY3RvciA9PT0g
ImZ1bmN0aW9uIiAmJiBzZWxlY3RvciwKKyAgICAgICAgbWF0Y2ggPSAhc2VlZCAmJiB0b2tlbml6
ZSggKHNlbGVjdG9yID0gY29tcGlsZWQuc2VsZWN0b3IgfHwgc2VsZWN0b3IpICk7CisKKyAgICBy
ZXN1bHRzID0gcmVzdWx0cyB8fCBbXTsKKworICAgIC8vIFRyeSB0byBtaW5pbWl6ZSBvcGVyYXRp
b25zIGlmIHRoZXJlIGlzIG9ubHkgb25lIHNlbGVjdG9yIGluIHRoZSBsaXN0IGFuZCBubyBzZWVk
CisgICAgLy8gKHRoZSBsYXR0ZXIgb2Ygd2hpY2ggZ3VhcmFudGVlcyB1cyBjb250ZXh0KQorICAg
IGlmICggbWF0Y2gubGVuZ3RoID09PSAxICkgeworCisgICAgICAgIC8vIFJlZHVjZSBjb250ZXh0
IGlmIHRoZSBsZWFkaW5nIGNvbXBvdW5kIHNlbGVjdG9yIGlzIGFuIElECisgICAgICAgIHRva2Vu
cyA9IG1hdGNoWzBdID0gbWF0Y2hbMF0uc2xpY2UoIDAgKTsKKyAgICAgICAgaWYgKCB0b2tlbnMu
bGVuZ3RoID4gMiAmJiAodG9rZW4gPSB0b2tlbnNbMF0pLnR5cGUgPT09ICJJRCIgJiYKKyAgICAg
ICAgICAgICAgICBjb250ZXh0Lm5vZGVUeXBlID09PSA5ICYmIGRvY3VtZW50SXNIVE1MICYmIEV4
cHIucmVsYXRpdmVbIHRva2Vuc1sxXS50eXBlIF0gKSB7CisKKyAgICAgICAgICAgIGNvbnRleHQg
PSAoIEV4cHIuZmluZFsiSUQiXSggdG9rZW4ubWF0Y2hlc1swXS5yZXBsYWNlKHJ1bmVzY2FwZSwg
ZnVuZXNjYXBlKSwgY29udGV4dCApIHx8IFtdIClbMF07CisgICAgICAgICAgICBpZiAoICFjb250
ZXh0ICkgeworICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRzOworCisgICAgICAgICAgICAv
LyBQcmVjb21waWxlZCBtYXRjaGVycyB3aWxsIHN0aWxsIHZlcmlmeSBhbmNlc3RyeSwgc28gc3Rl
cCB1cCBhIGxldmVsCisgICAgICAgICAgICB9IGVsc2UgaWYgKCBjb21waWxlZCApIHsKKyAgICAg
ICAgICAgICAgICBjb250ZXh0ID0gY29udGV4dC5wYXJlbnROb2RlOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBzZWxlY3RvciA9IHNlbGVjdG9yLnNsaWNlKCB0b2tlbnMuc2hpZnQoKS52
YWx1ZS5sZW5ndGggKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZldGNoIGEgc2VlZCBzZXQg
Zm9yIHJpZ2h0LXRvLWxlZnQgbWF0Y2hpbmcKKyAgICAgICAgaSA9IG1hdGNoRXhwclsibmVlZHND
b250ZXh0Il0udGVzdCggc2VsZWN0b3IgKSA/IDAgOiB0b2tlbnMubGVuZ3RoOworICAgICAgICB3
aGlsZSAoIGktLSApIHsKKyAgICAgICAgICAgIHRva2VuID0gdG9rZW5zW2ldOworCisgICAgICAg
ICAgICAvLyBBYm9ydCBpZiB3ZSBoaXQgYSBjb21iaW5hdG9yCisgICAgICAgICAgICBpZiAoIEV4
cHIucmVsYXRpdmVbICh0eXBlID0gdG9rZW4udHlwZSkgXSApIHsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICggKGZpbmQgPSBFeHByLmZpbmRb
IHR5cGUgXSkgKSB7CisgICAgICAgICAgICAgICAgLy8gU2VhcmNoLCBleHBhbmRpbmcgY29udGV4
dCBmb3IgbGVhZGluZyBzaWJsaW5nIGNvbWJpbmF0b3JzCisgICAgICAgICAgICAgICAgaWYgKCAo
c2VlZCA9IGZpbmQoCisgICAgICAgICAgICAgICAgICAgIHRva2VuLm1hdGNoZXNbMF0ucmVwbGFj
ZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKSwKKyAgICAgICAgICAgICAgICAgICAgcnNpYmxpbmcu
dGVzdCggdG9rZW5zWzBdLnR5cGUgKSAmJiB0ZXN0Q29udGV4dCggY29udGV4dC5wYXJlbnROb2Rl
ICkgfHwgY29udGV4dAorICAgICAgICAgICAgICAgICkpICkgeworCisgICAgICAgICAgICAgICAg
ICAgIC8vIElmIHNlZWQgaXMgZW1wdHkgb3Igbm8gdG9rZW5zIHJlbWFpbiwgd2UgY2FuIHJldHVy
biBlYXJseQorICAgICAgICAgICAgICAgICAgICB0b2tlbnMuc3BsaWNlKCBpLCAxICk7CisgICAg
ICAgICAgICAgICAgICAgIHNlbGVjdG9yID0gc2VlZC5sZW5ndGggJiYgdG9TZWxlY3RvciggdG9r
ZW5zICk7CisgICAgICAgICAgICAgICAgICAgIGlmICggIXNlbGVjdG9yICkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgcHVzaC5hcHBseSggcmVzdWx0cywgc2VlZCApOworICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdHM7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBDb21waWxlIGFuZCBleGVjdXRlIGEgZmlsdGVy
aW5nIGZ1bmN0aW9uIGlmIG9uZSBpcyBub3QgcHJvdmlkZWQKKyAgICAvLyBQcm92aWRlIGBtYXRj
aGAgdG8gYXZvaWQgcmV0b2tlbml6YXRpb24gaWYgd2UgbW9kaWZpZWQgdGhlIHNlbGVjdG9yIGFi
b3ZlCisgICAgKCBjb21waWxlZCB8fCBjb21waWxlKCBzZWxlY3RvciwgbWF0Y2ggKSApKAorICAg
ICAgICBzZWVkLAorICAgICAgICBjb250ZXh0LAorICAgICAgICAhZG9jdW1lbnRJc0hUTUwsCisg
ICAgICAgIHJlc3VsdHMsCisgICAgICAgICFjb250ZXh0IHx8IHJzaWJsaW5nLnRlc3QoIHNlbGVj
dG9yICkgJiYgdGVzdENvbnRleHQoIGNvbnRleHQucGFyZW50Tm9kZSApIHx8IGNvbnRleHQKKyAg
ICApOworICAgIHJldHVybiByZXN1bHRzOworfTsKKworLy8gT25lLXRpbWUgYXNzaWdubWVudHMK
KworLy8gU29ydCBzdGFiaWxpdHkKK3N1cHBvcnQuc29ydFN0YWJsZSA9IGV4cGFuZG8uc3BsaXQo
IiIpLnNvcnQoIHNvcnRPcmRlciApLmpvaW4oIiIpID09PSBleHBhbmRvOworCisvLyBTdXBwb3J0
OiBDaHJvbWUgMTQtMzUrCisvLyBBbHdheXMgYXNzdW1lIGR1cGxpY2F0ZXMgaWYgdGhleSBhcmVu
J3QgcGFzc2VkIHRvIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9uCitzdXBwb3J0LmRldGVjdER1cGxp
Y2F0ZXMgPSAhIWhhc0R1cGxpY2F0ZTsKKworLy8gSW5pdGlhbGl6ZSBhZ2FpbnN0IHRoZSBkZWZh
dWx0IGRvY3VtZW50CitzZXREb2N1bWVudCgpOworCisvLyBTdXBwb3J0OiBXZWJraXQ8NTM3LjMy
IC0gU2FmYXJpIDYuMC4zL0Nocm9tZSAyNSAoZml4ZWQgaW4gQ2hyb21lIDI3KQorLy8gRGV0YWNo
ZWQgbm9kZXMgY29uZm91bmRpbmdseSBmb2xsb3cgKmVhY2ggb3RoZXIqCitzdXBwb3J0LnNvcnRE
ZXRhY2hlZCA9IGFzc2VydChmdW5jdGlvbiggZWwgKSB7CisgICAgLy8gU2hvdWxkIHJldHVybiAx
LCBidXQgcmV0dXJucyA0IChmb2xsb3dpbmcpCisgICAgcmV0dXJuIGVsLmNvbXBhcmVEb2N1bWVu
dFBvc2l0aW9uKCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJmaWVsZHNldCIpICkgJiAxOworfSk7
CisKKy8vIFN1cHBvcnQ6IElFPDgKKy8vIFByZXZlbnQgYXR0cmlidXRlL3Byb3BlcnR5ICJpbnRl
cnBvbGF0aW9uIgorLy8gaHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9t
czUzNjQyOSUyOFZTLjg1JTI5LmFzcHgKK2lmICggIWFzc2VydChmdW5jdGlvbiggZWwgKSB7Cisg
ICAgZWwuaW5uZXJIVE1MID0gIjxhIGhyZWY9JyMnPjwvYT4iOworICAgIHJldHVybiBlbC5maXJz
dENoaWxkLmdldEF0dHJpYnV0ZSgiaHJlZiIpID09PSAiIyIgOworfSkgKSB7CisgICAgYWRkSGFu
ZGxlKCAidHlwZXxocmVmfGhlaWdodHx3aWR0aCIsIGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBpc1hN
TCApIHsKKyAgICAgICAgaWYgKCAhaXNYTUwgKSB7CisgICAgICAgICAgICByZXR1cm4gZWxlbS5n
ZXRBdHRyaWJ1dGUoIG5hbWUsIG5hbWUudG9Mb3dlckNhc2UoKSA9PT0gInR5cGUiID8gMSA6IDIg
KTsKKyAgICAgICAgfQorICAgIH0pOworfQorCisvLyBTdXBwb3J0OiBJRTw5CisvLyBVc2UgZGVm
YXVsdFZhbHVlIGluIHBsYWNlIG9mIGdldEF0dHJpYnV0ZSgidmFsdWUiKQoraWYgKCAhc3VwcG9y
dC5hdHRyaWJ1dGVzIHx8ICFhc3NlcnQoZnVuY3Rpb24oIGVsICkgeworICAgIGVsLmlubmVySFRN
TCA9ICI8aW5wdXQvPiI7CisgICAgZWwuZmlyc3RDaGlsZC5zZXRBdHRyaWJ1dGUoICJ2YWx1ZSIs
ICIiICk7CisgICAgcmV0dXJuIGVsLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCAidmFsdWUiICkg
PT09ICIiOworfSkgKSB7CisgICAgYWRkSGFuZGxlKCAidmFsdWUiLCBmdW5jdGlvbiggZWxlbSwg
bmFtZSwgaXNYTUwgKSB7CisgICAgICAgIGlmICggIWlzWE1MICYmIGVsZW0ubm9kZU5hbWUudG9M
b3dlckNhc2UoKSA9PT0gImlucHV0IiApIHsKKyAgICAgICAgICAgIHJldHVybiBlbGVtLmRlZmF1
bHRWYWx1ZTsKKyAgICAgICAgfQorICAgIH0pOworfQorCisvLyBTdXBwb3J0OiBJRTw5CisvLyBV
c2UgZ2V0QXR0cmlidXRlTm9kZSB0byBmZXRjaCBib29sZWFucyB3aGVuIGdldEF0dHJpYnV0ZSBs
aWVzCitpZiAoICFhc3NlcnQoZnVuY3Rpb24oIGVsICkgeworICAgIHJldHVybiBlbC5nZXRBdHRy
aWJ1dGUoImRpc2FibGVkIikgPT0gbnVsbDsKK30pICkgeworICAgIGFkZEhhbmRsZSggYm9vbGVh
bnMsIGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBpc1hNTCApIHsKKyAgICAgICAgdmFyIHZhbDsKKyAg
ICAgICAgaWYgKCAhaXNYTUwgKSB7CisgICAgICAgICAgICByZXR1cm4gZWxlbVsgbmFtZSBdID09
PSB0cnVlID8gbmFtZS50b0xvd2VyQ2FzZSgpIDoKKyAgICAgICAgICAgICAgICAgICAgKHZhbCA9
IGVsZW0uZ2V0QXR0cmlidXRlTm9kZSggbmFtZSApKSAmJiB2YWwuc3BlY2lmaWVkID8KKyAgICAg
ICAgICAgICAgICAgICAgdmFsLnZhbHVlIDoKKyAgICAgICAgICAgICAgICBudWxsOworICAgICAg
ICB9CisgICAgfSk7Cit9CisKK3JldHVybiBTaXp6bGU7CisKK30pKCB3aW5kb3cgKTsKKworCisK
K2pRdWVyeS5maW5kID0gU2l6emxlOworalF1ZXJ5LmV4cHIgPSBTaXp6bGUuc2VsZWN0b3JzOwor
CisvLyBEZXByZWNhdGVkCitqUXVlcnkuZXhwclsgIjoiIF0gPSBqUXVlcnkuZXhwci5wc2V1ZG9z
OworalF1ZXJ5LnVuaXF1ZVNvcnQgPSBqUXVlcnkudW5pcXVlID0gU2l6emxlLnVuaXF1ZVNvcnQ7
CitqUXVlcnkudGV4dCA9IFNpenpsZS5nZXRUZXh0OworalF1ZXJ5LmlzWE1MRG9jID0gU2l6emxl
LmlzWE1MOworalF1ZXJ5LmNvbnRhaW5zID0gU2l6emxlLmNvbnRhaW5zOworalF1ZXJ5LmVzY2Fw
ZVNlbGVjdG9yID0gU2l6emxlLmVzY2FwZTsKKworCisKKwordmFyIGRpciA9IGZ1bmN0aW9uKCBl
bGVtLCBkaXIsIHVudGlsICkgeworICAgIHZhciBtYXRjaGVkID0gW10sCisgICAgICAgIHRydW5j
YXRlID0gdW50aWwgIT09IHVuZGVmaW5lZDsKKworICAgIHdoaWxlICggKCBlbGVtID0gZWxlbVsg
ZGlyIF0gKSAmJiBlbGVtLm5vZGVUeXBlICE9PSA5ICkgeworICAgICAgICBpZiAoIGVsZW0ubm9k
ZVR5cGUgPT09IDEgKSB7CisgICAgICAgICAgICBpZiAoIHRydW5jYXRlICYmIGpRdWVyeSggZWxl
bSApLmlzKCB1bnRpbCApICkgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgbWF0Y2hlZC5wdXNoKCBlbGVtICk7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgcmV0dXJuIG1hdGNoZWQ7Cit9OworCisKK3ZhciBzaWJsaW5ncyA9IGZ1bmN0aW9uKCBuLCBl
bGVtICkgeworICAgIHZhciBtYXRjaGVkID0gW107CisKKyAgICBmb3IgKCA7IG47IG4gPSBuLm5l
eHRTaWJsaW5nICkgeworICAgICAgICBpZiAoIG4ubm9kZVR5cGUgPT09IDEgJiYgbiAhPT0gZWxl
bSApIHsKKyAgICAgICAgICAgIG1hdGNoZWQucHVzaCggbiApOworICAgICAgICB9CisgICAgfQor
CisgICAgcmV0dXJuIG1hdGNoZWQ7Cit9OworCisKK3ZhciBybmVlZHNDb250ZXh0ID0galF1ZXJ5
LmV4cHIubWF0Y2gubmVlZHNDb250ZXh0OworCit2YXIgcnNpbmdsZVRhZyA9ICggL148KFthLXpd
W15cL1wwPjpceDIwXHRcclxuXGZdKilbXHgyMFx0XHJcblxmXSpcLz8+KD86PFwvXDE+fCkkL2kg
KTsKKworCisKK3ZhciByaXNTaW1wbGUgPSAvXi5bXjojXFtcLixdKiQvOworCisvLyBJbXBsZW1l
bnQgdGhlIGlkZW50aWNhbCBmdW5jdGlvbmFsaXR5IGZvciBmaWx0ZXIgYW5kIG5vdAorZnVuY3Rp
b24gd2lubm93KCBlbGVtZW50cywgcXVhbGlmaWVyLCBub3QgKSB7CisgICAgaWYgKCBqUXVlcnku
aXNGdW5jdGlvbiggcXVhbGlmaWVyICkgKSB7CisgICAgICAgIHJldHVybiBqUXVlcnkuZ3JlcCgg
ZWxlbWVudHMsIGZ1bmN0aW9uKCBlbGVtLCBpICkgeworICAgICAgICAgICAgcmV0dXJuICEhcXVh
bGlmaWVyLmNhbGwoIGVsZW0sIGksIGVsZW0gKSAhPT0gbm90OworICAgICAgICB9ICk7CisgICAg
fQorCisgICAgLy8gU2luZ2xlIGVsZW1lbnQKKyAgICBpZiAoIHF1YWxpZmllci5ub2RlVHlwZSAp
IHsKKyAgICAgICAgcmV0dXJuIGpRdWVyeS5ncmVwKCBlbGVtZW50cywgZnVuY3Rpb24oIGVsZW0g
KSB7CisgICAgICAgICAgICByZXR1cm4gKCBlbGVtID09PSBxdWFsaWZpZXIgKSAhPT0gbm90Owor
ICAgICAgICB9ICk7CisgICAgfQorCisgICAgLy8gQXJyYXlsaWtlIG9mIGVsZW1lbnRzIChqUXVl
cnksIGFyZ3VtZW50cywgQXJyYXkpCisgICAgaWYgKCB0eXBlb2YgcXVhbGlmaWVyICE9PSAic3Ry
aW5nIiApIHsKKyAgICAgICAgcmV0dXJuIGpRdWVyeS5ncmVwKCBlbGVtZW50cywgZnVuY3Rpb24o
IGVsZW0gKSB7CisgICAgICAgICAgICByZXR1cm4gKCBpbmRleE9mLmNhbGwoIHF1YWxpZmllciwg
ZWxlbSApID4gLTEgKSAhPT0gbm90OworICAgICAgICB9ICk7CisgICAgfQorCisgICAgLy8gU2lt
cGxlIHNlbGVjdG9yIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGRpcmVjdGx5LCByZW1vdmluZyBub24t
RWxlbWVudHMKKyAgICBpZiAoIHJpc1NpbXBsZS50ZXN0KCBxdWFsaWZpZXIgKSApIHsKKyAgICAg
ICAgcmV0dXJuIGpRdWVyeS5maWx0ZXIoIHF1YWxpZmllciwgZWxlbWVudHMsIG5vdCApOworICAg
IH0KKworICAgIC8vIENvbXBsZXggc2VsZWN0b3IsIGNvbXBhcmUgdGhlIHR3byBzZXRzLCByZW1v
dmluZyBub24tRWxlbWVudHMKKyAgICBxdWFsaWZpZXIgPSBqUXVlcnkuZmlsdGVyKCBxdWFsaWZp
ZXIsIGVsZW1lbnRzICk7CisgICAgcmV0dXJuIGpRdWVyeS5ncmVwKCBlbGVtZW50cywgZnVuY3Rp
b24oIGVsZW0gKSB7CisgICAgICAgIHJldHVybiAoIGluZGV4T2YuY2FsbCggcXVhbGlmaWVyLCBl
bGVtICkgPiAtMSApICE9PSBub3QgJiYgZWxlbS5ub2RlVHlwZSA9PT0gMTsKKyAgICB9ICk7Cit9
CisKK2pRdWVyeS5maWx0ZXIgPSBmdW5jdGlvbiggZXhwciwgZWxlbXMsIG5vdCApIHsKKyAgICB2
YXIgZWxlbSA9IGVsZW1zWyAwIF07CisKKyAgICBpZiAoIG5vdCApIHsKKyAgICAgICAgZXhwciA9
ICI6bm90KCIgKyBleHByICsgIikiOworICAgIH0KKworICAgIGlmICggZWxlbXMubGVuZ3RoID09
PSAxICYmIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7CisgICAgICAgIHJldHVybiBqUXVlcnkuZmlu
ZC5tYXRjaGVzU2VsZWN0b3IoIGVsZW0sIGV4cHIgKSA/IFsgZWxlbSBdIDogW107CisgICAgfQor
CisgICAgcmV0dXJuIGpRdWVyeS5maW5kLm1hdGNoZXMoIGV4cHIsIGpRdWVyeS5ncmVwKCBlbGVt
cywgZnVuY3Rpb24oIGVsZW0gKSB7CisgICAgICAgIHJldHVybiBlbGVtLm5vZGVUeXBlID09PSAx
OworICAgIH0gKSApOworfTsKKworalF1ZXJ5LmZuLmV4dGVuZCggeworICAgIGZpbmQ6IGZ1bmN0
aW9uKCBzZWxlY3RvciApIHsKKyAgICAgICAgdmFyIGksIHJldCwKKyAgICAgICAgICAgIGxlbiA9
IHRoaXMubGVuZ3RoLAorICAgICAgICAgICAgc2VsZiA9IHRoaXM7CisKKyAgICAgICAgaWYgKCB0
eXBlb2Ygc2VsZWN0b3IgIT09ICJzdHJpbmciICkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMu
cHVzaFN0YWNrKCBqUXVlcnkoIHNlbGVjdG9yICkuZmlsdGVyKCBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgICAgICBmb3IgKCBpID0gMDsgaSA8IGxlbjsgaSsrICkgeworICAgICAgICAgICAgICAg
ICAgICBpZiAoIGpRdWVyeS5jb250YWlucyggc2VsZlsgaSBdLCB0aGlzICkgKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gKSApOworICAgICAgICB9CisKKyAgICAgICAg
cmV0ID0gdGhpcy5wdXNoU3RhY2soIFtdICk7CisKKyAgICAgICAgZm9yICggaSA9IDA7IGkgPCBs
ZW47IGkrKyApIHsKKyAgICAgICAgICAgIGpRdWVyeS5maW5kKCBzZWxlY3Rvciwgc2VsZlsgaSBd
LCByZXQgKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBsZW4gPiAxID8galF1ZXJ5LnVu
aXF1ZVNvcnQoIHJldCApIDogcmV0OworICAgIH0sCisgICAgZmlsdGVyOiBmdW5jdGlvbiggc2Vs
ZWN0b3IgKSB7CisgICAgICAgIHJldHVybiB0aGlzLnB1c2hTdGFjayggd2lubm93KCB0aGlzLCBz
ZWxlY3RvciB8fCBbXSwgZmFsc2UgKSApOworICAgIH0sCisgICAgbm90OiBmdW5jdGlvbiggc2Vs
ZWN0b3IgKSB7CisgICAgICAgIHJldHVybiB0aGlzLnB1c2hTdGFjayggd2lubm93KCB0aGlzLCBz
ZWxlY3RvciB8fCBbXSwgdHJ1ZSApICk7CisgICAgfSwKKyAgICBpczogZnVuY3Rpb24oIHNlbGVj
dG9yICkgeworICAgICAgICByZXR1cm4gISF3aW5ub3coCisgICAgICAgICAgICB0aGlzLAorCisg
ICAgICAgICAgICAvLyBJZiB0aGlzIGlzIGEgcG9zaXRpb25hbC9yZWxhdGl2ZSBzZWxlY3Rvciwg
Y2hlY2sgbWVtYmVyc2hpcCBpbiB0aGUgcmV0dXJuZWQgc2V0CisgICAgICAgICAgICAvLyBzbyAk
KCJwOmZpcnN0IikuaXMoInA6bGFzdCIpIHdvbid0IHJldHVybiB0cnVlIGZvciBhIGRvYyB3aXRo
IHR3byAicCIuCisgICAgICAgICAgICB0eXBlb2Ygc2VsZWN0b3IgPT09ICJzdHJpbmciICYmIHJu
ZWVkc0NvbnRleHQudGVzdCggc2VsZWN0b3IgKSA/CisgICAgICAgICAgICAgICAgalF1ZXJ5KCBz
ZWxlY3RvciApIDoKKyAgICAgICAgICAgICAgICBzZWxlY3RvciB8fCBbXSwKKyAgICAgICAgICAg
IGZhbHNlCisgICAgICAgICkubGVuZ3RoOworICAgIH0KK30gKTsKKworCisvLyBJbml0aWFsaXpl
IGEgalF1ZXJ5IG9iamVjdAorCisKKy8vIEEgY2VudHJhbCByZWZlcmVuY2UgdG8gdGhlIHJvb3Qg
alF1ZXJ5KGRvY3VtZW50KQordmFyIHJvb3RqUXVlcnksCisKKyAgICAvLyBBIHNpbXBsZSB3YXkg
dG8gY2hlY2sgZm9yIEhUTUwgc3RyaW5ncworICAgIC8vIFByaW9yaXRpemUgI2lkIG92ZXIgPHRh
Zz4gdG8gYXZvaWQgWFNTIHZpYSBsb2NhdGlvbi5oYXNoICgjOTUyMSkKKyAgICAvLyBTdHJpY3Qg
SFRNTCByZWNvZ25pdGlvbiAoIzExMjkwOiBtdXN0IHN0YXJ0IHdpdGggPCkKKyAgICAvLyBTaG9y
dGN1dCBzaW1wbGUgI2lkIGNhc2UgZm9yIHNwZWVkCisgICAgcnF1aWNrRXhwciA9IC9eKD86XHMq
KDxbXHdcV10rPilbXj5dKnwjKFtcdy1dKykpJC8sCisKKyAgICBpbml0ID0galF1ZXJ5LmZuLmlu
aXQgPSBmdW5jdGlvbiggc2VsZWN0b3IsIGNvbnRleHQsIHJvb3QgKSB7CisgICAgICAgIHZhciBt
YXRjaCwgZWxlbTsKKworICAgICAgICAvLyBIQU5ETEU6ICQoIiIpLCAkKG51bGwpLCAkKHVuZGVm
aW5lZCksICQoZmFsc2UpCisgICAgICAgIGlmICggIXNlbGVjdG9yICkgeworICAgICAgICAgICAg
cmV0dXJuIHRoaXM7CisgICAgICAgIH0KKworICAgICAgICAvLyBNZXRob2QgaW5pdCgpIGFjY2Vw
dHMgYW4gYWx0ZXJuYXRlIHJvb3RqUXVlcnkKKyAgICAgICAgLy8gc28gbWlncmF0ZSBjYW4gc3Vw
cG9ydCBqUXVlcnkuc3ViIChnaC0yMTAxKQorICAgICAgICByb290ID0gcm9vdCB8fCByb290alF1
ZXJ5OworCisgICAgICAgIC8vIEhhbmRsZSBIVE1MIHN0cmluZ3MKKyAgICAgICAgaWYgKCB0eXBl
b2Ygc2VsZWN0b3IgPT09ICJzdHJpbmciICkgeworICAgICAgICAgICAgaWYgKCBzZWxlY3Rvclsg
MCBdID09PSAiPCIgJiYKKyAgICAgICAgICAgICAgICBzZWxlY3Rvclsgc2VsZWN0b3IubGVuZ3Ro
IC0gMSBdID09PSAiPiIgJiYKKyAgICAgICAgICAgICAgICBzZWxlY3Rvci5sZW5ndGggPj0gMyAp
IHsKKworICAgICAgICAgICAgICAgIC8vIEFzc3VtZSB0aGF0IHN0cmluZ3MgdGhhdCBzdGFydCBh
bmQgZW5kIHdpdGggPD4gYXJlIEhUTUwgYW5kIHNraXAgdGhlIHJlZ2V4IGNoZWNrCisgICAgICAg
ICAgICAgICAgbWF0Y2ggPSBbIG51bGwsIHNlbGVjdG9yLCBudWxsIF07CisKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbWF0Y2ggPSBycXVpY2tFeHByLmV4ZWMoIHNlbGVj
dG9yICk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIE1hdGNoIGh0bWwgb3IgbWFr
ZSBzdXJlIG5vIGNvbnRleHQgaXMgc3BlY2lmaWVkIGZvciAjaWQKKyAgICAgICAgICAgIGlmICgg
bWF0Y2ggJiYgKCBtYXRjaFsgMSBdIHx8ICFjb250ZXh0ICkgKSB7CisKKyAgICAgICAgICAgICAg
ICAvLyBIQU5ETEU6ICQoaHRtbCkgLT4gJChhcnJheSkKKyAgICAgICAgICAgICAgICBpZiAoIG1h
dGNoWyAxIF0gKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQgPSBjb250ZXh0IGluc3Rh
bmNlb2YgalF1ZXJ5ID8gY29udGV4dFsgMCBdIDogY29udGV4dDsKKworICAgICAgICAgICAgICAg
ICAgICAvLyBPcHRpb24gdG8gcnVuIHNjcmlwdHMgaXMgdHJ1ZSBmb3IgYmFjay1jb21wYXQKKyAg
ICAgICAgICAgICAgICAgICAgLy8gSW50ZW50aW9uYWxseSBsZXQgdGhlIGVycm9yIGJlIHRocm93
biBpZiBwYXJzZUhUTUwgaXMgbm90IHByZXNlbnQKKyAgICAgICAgICAgICAgICAgICAgalF1ZXJ5
Lm1lcmdlKCB0aGlzLCBqUXVlcnkucGFyc2VIVE1MKAorICAgICAgICAgICAgICAgICAgICAgICAg
bWF0Y2hbIDEgXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQgJiYgY29udGV4dC5u
b2RlVHlwZSA/IGNvbnRleHQub3duZXJEb2N1bWVudCB8fCBjb250ZXh0IDogZG9jdW1lbnQsCisg
ICAgICAgICAgICAgICAgICAgICAgICB0cnVlCisgICAgICAgICAgICAgICAgICAgICkgKTsKKwor
ICAgICAgICAgICAgICAgICAgICAvLyBIQU5ETEU6ICQoaHRtbCwgcHJvcHMpCisgICAgICAgICAg
ICAgICAgICAgIGlmICggcnNpbmdsZVRhZy50ZXN0KCBtYXRjaFsgMSBdICkgJiYgalF1ZXJ5Lmlz
UGxhaW5PYmplY3QoIGNvbnRleHQgKSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAo
IG1hdGNoIGluIGNvbnRleHQgKSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBQ
cm9wZXJ0aWVzIG9mIGNvbnRleHQgYXJlIGNhbGxlZCBhcyBtZXRob2RzIGlmIHBvc3NpYmxlCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggdGhpc1sg
bWF0Y2ggXSApICkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzWyBtYXRj
aCBdKCBjb250ZXh0WyBtYXRjaCBdICk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyAuLi5hbmQgb3RoZXJ3aXNlIHNldCBhcyBhdHRyaWJ1dGVzCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5h
dHRyKCBtYXRjaCwgY29udGV4dFsgbWF0Y2ggXSApOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOworCisgICAgICAgICAgICAgICAgLy8g
SEFORExFOiAkKCNpZCkKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
ICAgICBlbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIG1hdGNoWyAyIF0gKTsKKworICAg
ICAgICAgICAgICAgICAgICBpZiAoIGVsZW0gKSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAg
IC8vIEluamVjdCB0aGUgZWxlbWVudCBkaXJlY3RseSBpbnRvIHRoZSBqUXVlcnkgb2JqZWN0Cisg
ICAgICAgICAgICAgICAgICAgICAgICB0aGlzWyAwIF0gPSBlbGVtOworICAgICAgICAgICAgICAg
ICAgICAgICAgdGhpcy5sZW5ndGggPSAxOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgLy8gSEFORExFOiAkKGV4cHIsICQoLi4uKSkKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoICFj
b250ZXh0IHx8IGNvbnRleHQuanF1ZXJ5ICkgeworICAgICAgICAgICAgICAgIHJldHVybiAoIGNv
bnRleHQgfHwgcm9vdCApLmZpbmQoIHNlbGVjdG9yICk7CisKKyAgICAgICAgICAgIC8vIEhBTkRM
RTogJChleHByLCBjb250ZXh0KQorICAgICAgICAgICAgLy8gKHdoaWNoIGlzIGp1c3QgZXF1aXZh
bGVudCB0bzogJChjb250ZXh0KS5maW5kKGV4cHIpCisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbnN0cnVjdG9yKCBjb250ZXh0ICkuZmluZCggc2Vs
ZWN0b3IgKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAvLyBIQU5ETEU6ICQoRE9NRWxlbWVu
dCkKKyAgICAgICAgfSBlbHNlIGlmICggc2VsZWN0b3Iubm9kZVR5cGUgKSB7CisgICAgICAgICAg
ICB0aGlzWyAwIF0gPSBzZWxlY3RvcjsKKyAgICAgICAgICAgIHRoaXMubGVuZ3RoID0gMTsKKyAg
ICAgICAgICAgIHJldHVybiB0aGlzOworCisgICAgICAgIC8vIEhBTkRMRTogJChmdW5jdGlvbikK
KyAgICAgICAgLy8gU2hvcnRjdXQgZm9yIGRvY3VtZW50IHJlYWR5CisgICAgICAgIH0gZWxzZSBp
ZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBzZWxlY3RvciApICkgeworICAgICAgICAgICAgcmV0dXJu
IHJvb3QucmVhZHkgIT09IHVuZGVmaW5lZCA/CisgICAgICAgICAgICAgICAgcm9vdC5yZWFkeSgg
c2VsZWN0b3IgKSA6CisKKyAgICAgICAgICAgICAgICAvLyBFeGVjdXRlIGltbWVkaWF0ZWx5IGlm
IHJlYWR5IGlzIG5vdCBwcmVzZW50CisgICAgICAgICAgICAgICAgc2VsZWN0b3IoIGpRdWVyeSAp
OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGpRdWVyeS5tYWtlQXJyYXkoIHNlbGVjdG9y
LCB0aGlzICk7CisgICAgfTsKKworLy8gR2l2ZSB0aGUgaW5pdCBmdW5jdGlvbiB0aGUgalF1ZXJ5
IHByb3RvdHlwZSBmb3IgbGF0ZXIgaW5zdGFudGlhdGlvbgoraW5pdC5wcm90b3R5cGUgPSBqUXVl
cnkuZm47CisKKy8vIEluaXRpYWxpemUgY2VudHJhbCByZWZlcmVuY2UKK3Jvb3RqUXVlcnkgPSBq
UXVlcnkoIGRvY3VtZW50ICk7CisKKwordmFyIHJwYXJlbnRzcHJldiA9IC9eKD86cGFyZW50c3xw
cmV2KD86VW50aWx8QWxsKSkvLAorCisgICAgLy8gTWV0aG9kcyBndWFyYW50ZWVkIHRvIHByb2R1
Y2UgYSB1bmlxdWUgc2V0IHdoZW4gc3RhcnRpbmcgZnJvbSBhIHVuaXF1ZSBzZXQKKyAgICBndWFy
YW50ZWVkVW5pcXVlID0geworICAgICAgICBjaGlsZHJlbjogdHJ1ZSwKKyAgICAgICAgY29udGVu
dHM6IHRydWUsCisgICAgICAgIG5leHQ6IHRydWUsCisgICAgICAgIHByZXY6IHRydWUKKyAgICB9
OworCitqUXVlcnkuZm4uZXh0ZW5kKCB7CisgICAgaGFzOiBmdW5jdGlvbiggdGFyZ2V0ICkgewor
ICAgICAgICB2YXIgdGFyZ2V0cyA9IGpRdWVyeSggdGFyZ2V0LCB0aGlzICksCisgICAgICAgICAg
ICBsID0gdGFyZ2V0cy5sZW5ndGg7CisKKyAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyKCBmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgIHZhciBpID0gMDsKKyAgICAgICAgICAgIGZvciAoIDsgaSA8
IGw7IGkrKyApIHsKKyAgICAgICAgICAgICAgICBpZiAoIGpRdWVyeS5jb250YWlucyggdGhpcywg
dGFyZ2V0c1sgaSBdICkgKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSApOworICAgIH0sCisKKyAg
ICBjbG9zZXN0OiBmdW5jdGlvbiggc2VsZWN0b3JzLCBjb250ZXh0ICkgeworICAgICAgICB2YXIg
Y3VyLAorICAgICAgICAgICAgaSA9IDAsCisgICAgICAgICAgICBsID0gdGhpcy5sZW5ndGgsCisg
ICAgICAgICAgICBtYXRjaGVkID0gW10sCisgICAgICAgICAgICB0YXJnZXRzID0gdHlwZW9mIHNl
bGVjdG9ycyAhPT0gInN0cmluZyIgJiYgalF1ZXJ5KCBzZWxlY3RvcnMgKTsKKworICAgICAgICAv
LyBQb3NpdGlvbmFsIHNlbGVjdG9ycyBuZXZlciBtYXRjaCwgc2luY2UgdGhlcmUncyBubyBfc2Vs
ZWN0aW9uXyBjb250ZXh0CisgICAgICAgIGlmICggIXJuZWVkc0NvbnRleHQudGVzdCggc2VsZWN0
b3JzICkgKSB7CisgICAgICAgICAgICBmb3IgKCA7IGkgPCBsOyBpKysgKSB7CisgICAgICAgICAg
ICAgICAgZm9yICggY3VyID0gdGhpc1sgaSBdOyBjdXIgJiYgY3VyICE9PSBjb250ZXh0OyBjdXIg
PSBjdXIucGFyZW50Tm9kZSApIHsKKworICAgICAgICAgICAgICAgICAgICAvLyBBbHdheXMgc2tp
cCBkb2N1bWVudCBmcmFnbWVudHMKKyAgICAgICAgICAgICAgICAgICAgaWYgKCBjdXIubm9kZVR5
cGUgPCAxMSAmJiAoIHRhcmdldHMgPworICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0cy5p
bmRleCggY3VyICkgPiAtMSA6CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIERvbid0IHBh
c3Mgbm9uLWVsZW1lbnRzIHRvIFNpenpsZQorICAgICAgICAgICAgICAgICAgICAgICAgY3VyLm5v
ZGVUeXBlID09PSAxICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmZpbmQu
bWF0Y2hlc1NlbGVjdG9yKCBjdXIsIHNlbGVjdG9ycyApICkgKSB7CisKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG1hdGNoZWQucHVzaCggY3VyICk7CisgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0aGlzLnB1c2hTdGFjayggbWF0Y2hl
ZC5sZW5ndGggPiAxID8galF1ZXJ5LnVuaXF1ZVNvcnQoIG1hdGNoZWQgKSA6IG1hdGNoZWQgKTsK
KyAgICB9LAorCisgICAgLy8gRGV0ZXJtaW5lIHRoZSBwb3NpdGlvbiBvZiBhbiBlbGVtZW50IHdp
dGhpbiB0aGUgc2V0CisgICAgaW5kZXg6IGZ1bmN0aW9uKCBlbGVtICkgeworCisgICAgICAgIC8v
IE5vIGFyZ3VtZW50LCByZXR1cm4gaW5kZXggaW4gcGFyZW50CisgICAgICAgIGlmICggIWVsZW0g
KSB7CisgICAgICAgICAgICByZXR1cm4gKCB0aGlzWyAwIF0gJiYgdGhpc1sgMCBdLnBhcmVudE5v
ZGUgKSA/IHRoaXMuZmlyc3QoKS5wcmV2QWxsKCkubGVuZ3RoIDogLTE7CisgICAgICAgIH0KKwor
ICAgICAgICAvLyBJbmRleCBpbiBzZWxlY3RvcgorICAgICAgICBpZiAoIHR5cGVvZiBlbGVtID09
PSAic3RyaW5nIiApIHsKKyAgICAgICAgICAgIHJldHVybiBpbmRleE9mLmNhbGwoIGpRdWVyeSgg
ZWxlbSApLCB0aGlzWyAwIF0gKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIExvY2F0ZSB0aGUg
cG9zaXRpb24gb2YgdGhlIGRlc2lyZWQgZWxlbWVudAorICAgICAgICByZXR1cm4gaW5kZXhPZi5j
YWxsKCB0aGlzLAorCisgICAgICAgICAgICAvLyBJZiBpdCByZWNlaXZlcyBhIGpRdWVyeSBvYmpl
Y3QsIHRoZSBmaXJzdCBlbGVtZW50IGlzIHVzZWQKKyAgICAgICAgICAgIGVsZW0uanF1ZXJ5ID8g
ZWxlbVsgMCBdIDogZWxlbQorICAgICAgICApOworICAgIH0sCisKKyAgICBhZGQ6IGZ1bmN0aW9u
KCBzZWxlY3RvciwgY29udGV4dCApIHsKKyAgICAgICAgcmV0dXJuIHRoaXMucHVzaFN0YWNrKAor
ICAgICAgICAgICAgalF1ZXJ5LnVuaXF1ZVNvcnQoCisgICAgICAgICAgICAgICAgalF1ZXJ5Lm1l
cmdlKCB0aGlzLmdldCgpLCBqUXVlcnkoIHNlbGVjdG9yLCBjb250ZXh0ICkgKQorICAgICAgICAg
ICAgKQorICAgICAgICApOworICAgIH0sCisKKyAgICBhZGRCYWNrOiBmdW5jdGlvbiggc2VsZWN0
b3IgKSB7CisgICAgICAgIHJldHVybiB0aGlzLmFkZCggc2VsZWN0b3IgPT0gbnVsbCA/CisgICAg
ICAgICAgICB0aGlzLnByZXZPYmplY3QgOiB0aGlzLnByZXZPYmplY3QuZmlsdGVyKCBzZWxlY3Rv
ciApCisgICAgICAgICk7CisgICAgfQorfSApOworCitmdW5jdGlvbiBzaWJsaW5nKCBjdXIsIGRp
ciApIHsKKyAgICB3aGlsZSAoICggY3VyID0gY3VyWyBkaXIgXSApICYmIGN1ci5ub2RlVHlwZSAh
PT0gMSApIHt9CisgICAgcmV0dXJuIGN1cjsKK30KKworalF1ZXJ5LmVhY2goIHsKKyAgICBwYXJl
bnQ6IGZ1bmN0aW9uKCBlbGVtICkgeworICAgICAgICB2YXIgcGFyZW50ID0gZWxlbS5wYXJlbnRO
b2RlOworICAgICAgICByZXR1cm4gcGFyZW50ICYmIHBhcmVudC5ub2RlVHlwZSAhPT0gMTEgPyBw
YXJlbnQgOiBudWxsOworICAgIH0sCisgICAgcGFyZW50czogZnVuY3Rpb24oIGVsZW0gKSB7Cisg
ICAgICAgIHJldHVybiBkaXIoIGVsZW0sICJwYXJlbnROb2RlIiApOworICAgIH0sCisgICAgcGFy
ZW50c1VudGlsOiBmdW5jdGlvbiggZWxlbSwgaSwgdW50aWwgKSB7CisgICAgICAgIHJldHVybiBk
aXIoIGVsZW0sICJwYXJlbnROb2RlIiwgdW50aWwgKTsKKyAgICB9LAorICAgIG5leHQ6IGZ1bmN0
aW9uKCBlbGVtICkgeworICAgICAgICByZXR1cm4gc2libGluZyggZWxlbSwgIm5leHRTaWJsaW5n
IiApOworICAgIH0sCisgICAgcHJldjogZnVuY3Rpb24oIGVsZW0gKSB7CisgICAgICAgIHJldHVy
biBzaWJsaW5nKCBlbGVtLCAicHJldmlvdXNTaWJsaW5nIiApOworICAgIH0sCisgICAgbmV4dEFs
bDogZnVuY3Rpb24oIGVsZW0gKSB7CisgICAgICAgIHJldHVybiBkaXIoIGVsZW0sICJuZXh0U2li
bGluZyIgKTsKKyAgICB9LAorICAgIHByZXZBbGw6IGZ1bmN0aW9uKCBlbGVtICkgeworICAgICAg
ICByZXR1cm4gZGlyKCBlbGVtLCAicHJldmlvdXNTaWJsaW5nIiApOworICAgIH0sCisgICAgbmV4
dFVudGlsOiBmdW5jdGlvbiggZWxlbSwgaSwgdW50aWwgKSB7CisgICAgICAgIHJldHVybiBkaXIo
IGVsZW0sICJuZXh0U2libGluZyIsIHVudGlsICk7CisgICAgfSwKKyAgICBwcmV2VW50aWw6IGZ1
bmN0aW9uKCBlbGVtLCBpLCB1bnRpbCApIHsKKyAgICAgICAgcmV0dXJuIGRpciggZWxlbSwgInBy
ZXZpb3VzU2libGluZyIsIHVudGlsICk7CisgICAgfSwKKyAgICBzaWJsaW5nczogZnVuY3Rpb24o
IGVsZW0gKSB7CisgICAgICAgIHJldHVybiBzaWJsaW5ncyggKCBlbGVtLnBhcmVudE5vZGUgfHwg
e30gKS5maXJzdENoaWxkLCBlbGVtICk7CisgICAgfSwKKyAgICBjaGlsZHJlbjogZnVuY3Rpb24o
IGVsZW0gKSB7CisgICAgICAgIHJldHVybiBzaWJsaW5ncyggZWxlbS5maXJzdENoaWxkICk7Cisg
ICAgfSwKKyAgICBjb250ZW50czogZnVuY3Rpb24oIGVsZW0gKSB7CisgICAgICAgIHJldHVybiBl
bGVtLmNvbnRlbnREb2N1bWVudCB8fCBqUXVlcnkubWVyZ2UoIFtdLCBlbGVtLmNoaWxkTm9kZXMg
KTsKKyAgICB9Cit9LCBmdW5jdGlvbiggbmFtZSwgZm4gKSB7CisgICAgalF1ZXJ5LmZuWyBuYW1l
IF0gPSBmdW5jdGlvbiggdW50aWwsIHNlbGVjdG9yICkgeworICAgICAgICB2YXIgbWF0Y2hlZCA9
IGpRdWVyeS5tYXAoIHRoaXMsIGZuLCB1bnRpbCApOworCisgICAgICAgIGlmICggbmFtZS5zbGlj
ZSggLTUgKSAhPT0gIlVudGlsIiApIHsKKyAgICAgICAgICAgIHNlbGVjdG9yID0gdW50aWw7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoIHNlbGVjdG9yICYmIHR5cGVvZiBzZWxlY3RvciA9PT0g
InN0cmluZyIgKSB7CisgICAgICAgICAgICBtYXRjaGVkID0galF1ZXJ5LmZpbHRlciggc2VsZWN0
b3IsIG1hdGNoZWQgKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICggdGhpcy5sZW5ndGggPiAx
ICkgeworCisgICAgICAgICAgICAvLyBSZW1vdmUgZHVwbGljYXRlcworICAgICAgICAgICAgaWYg
KCAhZ3VhcmFudGVlZFVuaXF1ZVsgbmFtZSBdICkgeworICAgICAgICAgICAgICAgIGpRdWVyeS51
bmlxdWVTb3J0KCBtYXRjaGVkICk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFJl
dmVyc2Ugb3JkZXIgZm9yIHBhcmVudHMqIGFuZCBwcmV2LWRlcml2YXRpdmVzCisgICAgICAgICAg
ICBpZiAoIHJwYXJlbnRzcHJldi50ZXN0KCBuYW1lICkgKSB7CisgICAgICAgICAgICAgICAgbWF0
Y2hlZC5yZXZlcnNlKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1
cm4gdGhpcy5wdXNoU3RhY2soIG1hdGNoZWQgKTsKKyAgICB9OworfSApOwordmFyIHJub3RodG1s
d2hpdGUgPSAoIC9bXlx4MjBcdFxyXG5cZl0rL2cgKTsKKworCisKKy8vIENvbnZlcnQgU3RyaW5n
LWZvcm1hdHRlZCBvcHRpb25zIGludG8gT2JqZWN0LWZvcm1hdHRlZCBvbmVzCitmdW5jdGlvbiBj
cmVhdGVPcHRpb25zKCBvcHRpb25zICkgeworICAgIHZhciBvYmplY3QgPSB7fTsKKyAgICBqUXVl
cnkuZWFjaCggb3B0aW9ucy5tYXRjaCggcm5vdGh0bWx3aGl0ZSApIHx8IFtdLCBmdW5jdGlvbigg
XywgZmxhZyApIHsKKyAgICAgICAgb2JqZWN0WyBmbGFnIF0gPSB0cnVlOworICAgIH0gKTsKKyAg
ICByZXR1cm4gb2JqZWN0OworfQorCisvKgorICogQ3JlYXRlIGEgY2FsbGJhY2sgbGlzdCB1c2lu
ZyB0aGUgZm9sbG93aW5nIHBhcmFtZXRlcnM6CisgKgorICogIG9wdGlvbnM6IGFuIG9wdGlvbmFs
IGxpc3Qgb2Ygc3BhY2Utc2VwYXJhdGVkIG9wdGlvbnMgdGhhdCB3aWxsIGNoYW5nZSBob3cKKyAq
ICAgICAgICAgIHRoZSBjYWxsYmFjayBsaXN0IGJlaGF2ZXMgb3IgYSBtb3JlIHRyYWRpdGlvbmFs
IG9wdGlvbiBvYmplY3QKKyAqCisgKiBCeSBkZWZhdWx0IGEgY2FsbGJhY2sgbGlzdCB3aWxsIGFj
dCBsaWtlIGFuIGV2ZW50IGNhbGxiYWNrIGxpc3QgYW5kIGNhbiBiZQorICogImZpcmVkIiBtdWx0
aXBsZSB0aW1lcy4KKyAqCisgKiBQb3NzaWJsZSBvcHRpb25zOgorICoKKyAqICBvbmNlOiAgICAg
ICAgICAgd2lsbCBlbnN1cmUgdGhlIGNhbGxiYWNrIGxpc3QgY2FuIG9ubHkgYmUgZmlyZWQgb25j
ZSAobGlrZSBhIERlZmVycmVkKQorICoKKyAqICBtZW1vcnk6ICAgICAgICAgd2lsbCBrZWVwIHRy
YWNrIG9mIHByZXZpb3VzIHZhbHVlcyBhbmQgd2lsbCBjYWxsIGFueSBjYWxsYmFjayBhZGRlZAor
ICogICAgICAgICAgICAgICAgICBhZnRlciB0aGUgbGlzdCBoYXMgYmVlbiBmaXJlZCByaWdodCBh
d2F5IHdpdGggdGhlIGxhdGVzdCAibWVtb3JpemVkIgorICogICAgICAgICAgICAgICAgICB2YWx1
ZXMgKGxpa2UgYSBEZWZlcnJlZCkKKyAqCisgKiAgdW5pcXVlOiAgICAgICAgIHdpbGwgZW5zdXJl
IGEgY2FsbGJhY2sgY2FuIG9ubHkgYmUgYWRkZWQgb25jZSAobm8gZHVwbGljYXRlIGluIHRoZSBs
aXN0KQorICoKKyAqICBzdG9wT25GYWxzZTogICAgaW50ZXJydXB0IGNhbGxpbmdzIHdoZW4gYSBj
YWxsYmFjayByZXR1cm5zIGZhbHNlCisgKgorICovCitqUXVlcnkuQ2FsbGJhY2tzID0gZnVuY3Rp
b24oIG9wdGlvbnMgKSB7CisKKyAgICAvLyBDb252ZXJ0IG9wdGlvbnMgZnJvbSBTdHJpbmctZm9y
bWF0dGVkIHRvIE9iamVjdC1mb3JtYXR0ZWQgaWYgbmVlZGVkCisgICAgLy8gKHdlIGNoZWNrIGlu
IGNhY2hlIGZpcnN0KQorICAgIG9wdGlvbnMgPSB0eXBlb2Ygb3B0aW9ucyA9PT0gInN0cmluZyIg
PworICAgICAgICBjcmVhdGVPcHRpb25zKCBvcHRpb25zICkgOgorICAgICAgICBqUXVlcnkuZXh0
ZW5kKCB7fSwgb3B0aW9ucyApOworCisgICAgdmFyIC8vIEZsYWcgdG8ga25vdyBpZiBsaXN0IGlz
IGN1cnJlbnRseSBmaXJpbmcKKyAgICAgICAgZmlyaW5nLAorCisgICAgICAgIC8vIExhc3QgZmly
ZSB2YWx1ZSBmb3Igbm9uLWZvcmdldHRhYmxlIGxpc3RzCisgICAgICAgIG1lbW9yeSwKKworICAg
ICAgICAvLyBGbGFnIHRvIGtub3cgaWYgbGlzdCB3YXMgYWxyZWFkeSBmaXJlZAorICAgICAgICBm
aXJlZCwKKworICAgICAgICAvLyBGbGFnIHRvIHByZXZlbnQgZmlyaW5nCisgICAgICAgIGxvY2tl
ZCwKKworICAgICAgICAvLyBBY3R1YWwgY2FsbGJhY2sgbGlzdAorICAgICAgICBsaXN0ID0gW10s
CisKKyAgICAgICAgLy8gUXVldWUgb2YgZXhlY3V0aW9uIGRhdGEgZm9yIHJlcGVhdGFibGUgbGlz
dHMKKyAgICAgICAgcXVldWUgPSBbXSwKKworICAgICAgICAvLyBJbmRleCBvZiBjdXJyZW50bHkg
ZmlyaW5nIGNhbGxiYWNrIChtb2RpZmllZCBieSBhZGQvcmVtb3ZlIGFzIG5lZWRlZCkKKyAgICAg
ICAgZmlyaW5nSW5kZXggPSAtMSwKKworICAgICAgICAvLyBGaXJlIGNhbGxiYWNrcworICAgICAg
ICBmaXJlID0gZnVuY3Rpb24oKSB7CisKKyAgICAgICAgICAgIC8vIEVuZm9yY2Ugc2luZ2xlLWZp
cmluZworICAgICAgICAgICAgbG9ja2VkID0gb3B0aW9ucy5vbmNlOworCisgICAgICAgICAgICAv
LyBFeGVjdXRlIGNhbGxiYWNrcyBmb3IgYWxsIHBlbmRpbmcgZXhlY3V0aW9ucywKKyAgICAgICAg
ICAgIC8vIHJlc3BlY3RpbmcgZmlyaW5nSW5kZXggb3ZlcnJpZGVzIGFuZCBydW50aW1lIGNoYW5n
ZXMKKyAgICAgICAgICAgIGZpcmVkID0gZmlyaW5nID0gdHJ1ZTsKKyAgICAgICAgICAgIGZvciAo
IDsgcXVldWUubGVuZ3RoOyBmaXJpbmdJbmRleCA9IC0xICkgeworICAgICAgICAgICAgICAgIG1l
bW9yeSA9IHF1ZXVlLnNoaWZ0KCk7CisgICAgICAgICAgICAgICAgd2hpbGUgKCArK2ZpcmluZ0lu
ZGV4IDwgbGlzdC5sZW5ndGggKSB7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gUnVuIGNhbGxi
YWNrIGFuZCBjaGVjayBmb3IgZWFybHkgdGVybWluYXRpb24KKyAgICAgICAgICAgICAgICAgICAg
aWYgKCBsaXN0WyBmaXJpbmdJbmRleCBdLmFwcGx5KCBtZW1vcnlbIDAgXSwgbWVtb3J5WyAxIF0g
KSA9PT0gZmFsc2UgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuc3RvcE9uRmFs
c2UgKSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIEp1bXAgdG8gZW5kIGFuZCBmb3Jn
ZXQgdGhlIGRhdGEgc28gLmFkZCBkb2Vzbid0IHJlLWZpcmUKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGZpcmluZ0luZGV4ID0gbGlzdC5sZW5ndGg7CisgICAgICAgICAgICAgICAgICAgICAgICBt
ZW1vcnkgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gRm9yZ2V0IHRoZSBkYXRhIGlmIHdlJ3Jl
IGRvbmUgd2l0aCBpdAorICAgICAgICAgICAgaWYgKCAhb3B0aW9ucy5tZW1vcnkgKSB7CisgICAg
ICAgICAgICAgICAgbWVtb3J5ID0gZmFsc2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGZpcmluZyA9IGZhbHNlOworCisgICAgICAgICAgICAvLyBDbGVhbiB1cCBpZiB3ZSdyZSBkb25l
IGZpcmluZyBmb3IgZ29vZAorICAgICAgICAgICAgaWYgKCBsb2NrZWQgKSB7CisKKyAgICAgICAg
ICAgICAgICAvLyBLZWVwIGFuIGVtcHR5IGxpc3QgaWYgd2UgaGF2ZSBkYXRhIGZvciBmdXR1cmUg
YWRkIGNhbGxzCisgICAgICAgICAgICAgICAgaWYgKCBtZW1vcnkgKSB7CisgICAgICAgICAgICAg
ICAgICAgIGxpc3QgPSBbXTsKKworICAgICAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgdGhpcyBv
YmplY3QgaXMgc3BlbnQKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
ICAgICBsaXN0ID0gIiI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAg
ICB9LAorCisgICAgICAgIC8vIEFjdHVhbCBDYWxsYmFja3Mgb2JqZWN0CisgICAgICAgIHNlbGYg
PSB7CisKKyAgICAgICAgICAgIC8vIEFkZCBhIGNhbGxiYWNrIG9yIGEgY29sbGVjdGlvbiBvZiBj
YWxsYmFja3MgdG8gdGhlIGxpc3QKKyAgICAgICAgICAgIGFkZDogZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICAgICAgaWYgKCBsaXN0ICkgeworCisgICAgICAgICAgICAgICAgICAgIC8vIElmIHdl
IGhhdmUgbWVtb3J5IGZyb20gYSBwYXN0IHJ1biwgd2Ugc2hvdWxkIGZpcmUgYWZ0ZXIgYWRkaW5n
CisgICAgICAgICAgICAgICAgICAgIGlmICggbWVtb3J5ICYmICFmaXJpbmcgKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBmaXJpbmdJbmRleCA9IGxpc3QubGVuZ3RoIC0gMTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHF1ZXVlLnB1c2goIG1lbW9yeSApOworICAgICAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICAgICAgKCBmdW5jdGlvbiBhZGQoIGFyZ3MgKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBqUXVlcnkuZWFjaCggYXJncywgZnVuY3Rpb24oIF8sIGFyZyAp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBh
cmcgKSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhb3B0aW9ucy51
bmlxdWUgfHwgIXNlbGYuaGFzKCBhcmcgKSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGxpc3QucHVzaCggYXJnICk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCBhcmcgJiYgYXJn
Lmxlbmd0aCAmJiBqUXVlcnkudHlwZSggYXJnICkgIT09ICJzdHJpbmciICkgeworCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEluc3BlY3QgcmVjdXJzaXZlbHkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYWRkKCBhcmcgKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9ICk7CisgICAgICAgICAgICAgICAg
ICAgIH0gKSggYXJndW1lbnRzICk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKCBtZW1vcnkg
JiYgIWZpcmluZyApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpcmUoKTsKKyAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4g
dGhpczsKKyAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgIC8vIFJlbW92ZSBhIGNhbGxiYWNr
IGZyb20gdGhlIGxpc3QKKyAgICAgICAgICAgIHJlbW92ZTogZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICAgICAgalF1ZXJ5LmVhY2goIGFyZ3VtZW50cywgZnVuY3Rpb24oIF8sIGFyZyApIHsKKyAg
ICAgICAgICAgICAgICAgICAgdmFyIGluZGV4OworICAgICAgICAgICAgICAgICAgICB3aGlsZSAo
ICggaW5kZXggPSBqUXVlcnkuaW5BcnJheSggYXJnLCBsaXN0LCBpbmRleCApICkgPiAtMSApIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Quc3BsaWNlKCBpbmRleCwgMSApOworCisgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBIYW5kbGUgZmlyaW5nIGluZGV4ZXMKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICggaW5kZXggPD0gZmlyaW5nSW5kZXggKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZmlyaW5nSW5kZXgtLTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgIC8vIENoZWNr
IGlmIGEgZ2l2ZW4gY2FsbGJhY2sgaXMgaW4gdGhlIGxpc3QuCisgICAgICAgICAgICAvLyBJZiBu
byBhcmd1bWVudCBpcyBnaXZlbiwgcmV0dXJuIHdoZXRoZXIgb3Igbm90IGxpc3QgaGFzIGNhbGxi
YWNrcyBhdHRhY2hlZC4KKyAgICAgICAgICAgIGhhczogZnVuY3Rpb24oIGZuICkgeworICAgICAg
ICAgICAgICAgIHJldHVybiBmbiA/CisgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5pbkFycmF5
KCBmbiwgbGlzdCApID4gLTEgOgorICAgICAgICAgICAgICAgICAgICBsaXN0Lmxlbmd0aCA+IDA7
CisgICAgICAgICAgICB9LAorCisgICAgICAgICAgICAvLyBSZW1vdmUgYWxsIGNhbGxiYWNrcyBm
cm9tIHRoZSBsaXN0CisgICAgICAgICAgICBlbXB0eTogZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICAgICAgaWYgKCBsaXN0ICkgeworICAgICAgICAgICAgICAgICAgICBsaXN0ID0gW107CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICAgICAg
fSwKKworICAgICAgICAgICAgLy8gRGlzYWJsZSAuZmlyZSBhbmQgLmFkZAorICAgICAgICAgICAg
Ly8gQWJvcnQgYW55IGN1cnJlbnQvcGVuZGluZyBleGVjdXRpb25zCisgICAgICAgICAgICAvLyBD
bGVhciBhbGwgY2FsbGJhY2tzIGFuZCB2YWx1ZXMKKyAgICAgICAgICAgIGRpc2FibGU6IGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgICAgIGxvY2tlZCA9IHF1ZXVlID0gW107CisgICAgICAgICAg
ICAgICAgbGlzdCA9IG1lbW9yeSA9ICIiOworICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOwor
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGRpc2FibGVkOiBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gIWxpc3Q7CisgICAgICAgICAgICB9LAorCisgICAgICAgICAgICAv
LyBEaXNhYmxlIC5maXJlCisgICAgICAgICAgICAvLyBBbHNvIGRpc2FibGUgLmFkZCB1bmxlc3Mg
d2UgaGF2ZSBtZW1vcnkgKHNpbmNlIGl0IHdvdWxkIGhhdmUgbm8gZWZmZWN0KQorICAgICAgICAg
ICAgLy8gQWJvcnQgYW55IHBlbmRpbmcgZXhlY3V0aW9ucworICAgICAgICAgICAgbG9jazogZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICAgICAgbG9ja2VkID0gcXVldWUgPSBbXTsKKyAgICAgICAg
ICAgICAgICBpZiAoICFtZW1vcnkgJiYgIWZpcmluZyApIHsKKyAgICAgICAgICAgICAgICAgICAg
bGlzdCA9IG1lbW9yeSA9ICIiOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBy
ZXR1cm4gdGhpczsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBsb2NrZWQ6IGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgICAgIHJldHVybiAhIWxvY2tlZDsKKyAgICAgICAgICAgIH0sCisK
KyAgICAgICAgICAgIC8vIENhbGwgYWxsIGNhbGxiYWNrcyB3aXRoIHRoZSBnaXZlbiBjb250ZXh0
IGFuZCBhcmd1bWVudHMKKyAgICAgICAgICAgIGZpcmVXaXRoOiBmdW5jdGlvbiggY29udGV4dCwg
YXJncyApIHsKKyAgICAgICAgICAgICAgICBpZiAoICFsb2NrZWQgKSB7CisgICAgICAgICAgICAg
ICAgICAgIGFyZ3MgPSBhcmdzIHx8IFtdOworICAgICAgICAgICAgICAgICAgICBhcmdzID0gWyBj
b250ZXh0LCBhcmdzLnNsaWNlID8gYXJncy5zbGljZSgpIDogYXJncyBdOworICAgICAgICAgICAg
ICAgICAgICBxdWV1ZS5wdXNoKCBhcmdzICk7CisgICAgICAgICAgICAgICAgICAgIGlmICggIWZp
cmluZyApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpcmUoKTsKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsK
KyAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgIC8vIENhbGwgYWxsIHRoZSBjYWxsYmFja3Mg
d2l0aCB0aGUgZ2l2ZW4gYXJndW1lbnRzCisgICAgICAgICAgICBmaXJlOiBmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgICAgICBzZWxmLmZpcmVXaXRoKCB0aGlzLCBhcmd1bWVudHMgKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgIC8v
IFRvIGtub3cgaWYgdGhlIGNhbGxiYWNrcyBoYXZlIGFscmVhZHkgYmVlbiBjYWxsZWQgYXQgbGVh
c3Qgb25jZQorICAgICAgICAgICAgZmlyZWQ6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAg
IHJldHVybiAhIWZpcmVkOworICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgcmV0dXJu
IHNlbGY7Cit9OworCisKK2Z1bmN0aW9uIElkZW50aXR5KCB2ICkgeworICAgIHJldHVybiB2Owor
fQorZnVuY3Rpb24gVGhyb3dlciggZXggKSB7CisgICAgdGhyb3cgZXg7Cit9CisKK2Z1bmN0aW9u
IGFkb3B0VmFsdWUoIHZhbHVlLCByZXNvbHZlLCByZWplY3QgKSB7CisgICAgdmFyIG1ldGhvZDsK
KworICAgIHRyeSB7CisKKyAgICAgICAgLy8gQ2hlY2sgZm9yIHByb21pc2UgYXNwZWN0IGZpcnN0
IHRvIHByaXZpbGVnZSBzeW5jaHJvbm91cyBiZWhhdmlvcgorICAgICAgICBpZiAoIHZhbHVlICYm
IGpRdWVyeS5pc0Z1bmN0aW9uKCAoIG1ldGhvZCA9IHZhbHVlLnByb21pc2UgKSApICkgeworICAg
ICAgICAgICAgbWV0aG9kLmNhbGwoIHZhbHVlICkuZG9uZSggcmVzb2x2ZSApLmZhaWwoIHJlamVj
dCApOworCisgICAgICAgIC8vIE90aGVyIHRoZW5hYmxlcworICAgICAgICB9IGVsc2UgaWYgKCB2
YWx1ZSAmJiBqUXVlcnkuaXNGdW5jdGlvbiggKCBtZXRob2QgPSB2YWx1ZS50aGVuICkgKSApIHsK
KyAgICAgICAgICAgIG1ldGhvZC5jYWxsKCB2YWx1ZSwgcmVzb2x2ZSwgcmVqZWN0ICk7CisKKyAg
ICAgICAgLy8gT3RoZXIgbm9uLXRoZW5hYmxlcworICAgICAgICB9IGVsc2UgeworCisgICAgICAg
ICAgICAvLyBTdXBwb3J0OiBBbmRyb2lkIDQuMCBvbmx5CisgICAgICAgICAgICAvLyBTdHJpY3Qg
bW9kZSBmdW5jdGlvbnMgaW52b2tlZCB3aXRob3V0IC5jYWxsLy5hcHBseSBnZXQgZ2xvYmFsLW9i
amVjdCBjb250ZXh0CisgICAgICAgICAgICByZXNvbHZlLmNhbGwoIHVuZGVmaW5lZCwgdmFsdWUg
KTsKKyAgICAgICAgfQorCisgICAgLy8gRm9yIFByb21pc2VzL0ErLCBjb252ZXJ0IGV4Y2VwdGlv
bnMgaW50byByZWplY3Rpb25zCisgICAgLy8gU2luY2UgalF1ZXJ5LndoZW4gZG9lc24ndCB1bndy
YXAgdGhlbmFibGVzLCB3ZSBjYW4gc2tpcCB0aGUgZXh0cmEgY2hlY2tzIGFwcGVhcmluZyBpbgor
ICAgIC8vIERlZmVycmVkI3RoZW4gdG8gY29uZGl0aW9uYWxseSBzdXBwcmVzcyByZWplY3Rpb24u
CisgICAgfSBjYXRjaCAoIHZhbHVlICkgeworCisgICAgICAgIC8vIFN1cHBvcnQ6IEFuZHJvaWQg
NC4wIG9ubHkKKyAgICAgICAgLy8gU3RyaWN0IG1vZGUgZnVuY3Rpb25zIGludm9rZWQgd2l0aG91
dCAuY2FsbC8uYXBwbHkgZ2V0IGdsb2JhbC1vYmplY3QgY29udGV4dAorICAgICAgICByZWplY3Qu
Y2FsbCggdW5kZWZpbmVkLCB2YWx1ZSApOworICAgIH0KK30KKworalF1ZXJ5LmV4dGVuZCggewor
CisgICAgRGVmZXJyZWQ6IGZ1bmN0aW9uKCBmdW5jICkgeworICAgICAgICB2YXIgdHVwbGVzID0g
WworCisgICAgICAgICAgICAgICAgLy8gYWN0aW9uLCBhZGQgbGlzdGVuZXIsIGNhbGxiYWNrcywK
KyAgICAgICAgICAgICAgICAvLyAuLi4gLnRoZW4gaGFuZGxlcnMsIGFyZ3VtZW50IGluZGV4LCBb
ZmluYWwgc3RhdGVdCisgICAgICAgICAgICAgICAgWyAibm90aWZ5IiwgInByb2dyZXNzIiwgalF1
ZXJ5LkNhbGxiYWNrcyggIm1lbW9yeSIgKSwKKyAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LkNh
bGxiYWNrcyggIm1lbW9yeSIgKSwgMiBdLAorICAgICAgICAgICAgICAgIFsgInJlc29sdmUiLCAi
ZG9uZSIsIGpRdWVyeS5DYWxsYmFja3MoICJvbmNlIG1lbW9yeSIgKSwKKyAgICAgICAgICAgICAg
ICAgICAgalF1ZXJ5LkNhbGxiYWNrcyggIm9uY2UgbWVtb3J5IiApLCAwLCAicmVzb2x2ZWQiIF0s
CisgICAgICAgICAgICAgICAgWyAicmVqZWN0IiwgImZhaWwiLCBqUXVlcnkuQ2FsbGJhY2tzKCAi
b25jZSBtZW1vcnkiICksCisgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5DYWxsYmFja3MoICJv
bmNlIG1lbW9yeSIgKSwgMSwgInJlamVjdGVkIiBdCisgICAgICAgICAgICBdLAorICAgICAgICAg
ICAgc3RhdGUgPSAicGVuZGluZyIsCisgICAgICAgICAgICBwcm9taXNlID0geworICAgICAgICAg
ICAgICAgIHN0YXRlOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0
YXRlOworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgYWx3YXlzOiBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQuZG9uZSggYXJndW1lbnRzICkuZmFp
bCggYXJndW1lbnRzICk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAg
ICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImNhdGNoIjogZnVuY3Rpb24oIGZuICkgewor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJvbWlzZS50aGVuKCBudWxsLCBmbiApOworICAg
ICAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgICAgICAvLyBLZWVwIHBpcGUgZm9yIGJhY2st
Y29tcGF0CisgICAgICAgICAgICAgICAgcGlwZTogZnVuY3Rpb24oIC8qIGZuRG9uZSwgZm5GYWls
LCBmblByb2dyZXNzICovICkgeworICAgICAgICAgICAgICAgICAgICB2YXIgZm5zID0gYXJndW1l
bnRzOworCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBqUXVlcnkuRGVmZXJyZWQoIGZ1bmN0
aW9uKCBuZXdEZWZlciApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5lYWNoKCB0
dXBsZXMsIGZ1bmN0aW9uKCBpLCB0dXBsZSApIHsKKworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIE1hcCB0dXBsZXMgKHByb2dyZXNzLCBkb25lLCBmYWlsKSB0byBhcmd1bWVudHMgKGRv
bmUsIGZhaWwsIHByb2dyZXNzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmbiA9
IGpRdWVyeS5pc0Z1bmN0aW9uKCBmbnNbIHR1cGxlWyA0IF0gXSApICYmIGZuc1sgdHVwbGVbIDQg
XSBdOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGVmZXJyZWQucHJvZ3Jlc3Mo
ZnVuY3Rpb24oKSB7IGJpbmQgdG8gbmV3RGVmZXIgb3IgbmV3RGVmZXIubm90aWZ5IH0pCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGVmZXJyZWQuZG9uZShmdW5jdGlvbigpIHsgYmlu
ZCB0byBuZXdEZWZlciBvciBuZXdEZWZlci5yZXNvbHZlIH0pCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gZGVmZXJyZWQuZmFpbChmdW5jdGlvbigpIHsgYmluZCB0byBuZXdEZWZlciBv
ciBuZXdEZWZlci5yZWplY3QgfSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJl
ZFsgdHVwbGVbIDEgXSBdKCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdmFyIHJldHVybmVkID0gZm4gJiYgZm4uYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHJldHVybmVkICYmIGpRdWVyeS5p
c0Z1bmN0aW9uKCByZXR1cm5lZC5wcm9taXNlICkgKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm5lZC5wcm9taXNlKCkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAucHJvZ3Jlc3MoIG5ld0RlZmVyLm5vdGlmeSApCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmRvbmUoIG5ld0RlZmVyLnJlc29sdmUgKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mYWlsKCBuZXdEZWZlci5y
ZWplY3QgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0RlZmVyWyB0dXBsZVsgMCBdICsgIldp
dGgiIF0oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbiA/IFsgcmV0dXJuZWQgXSA6
IGFyZ3VtZW50cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0gKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGZucyA9IG51bGw7CisgICAgICAgICAgICAgICAgICAgIH0gKS5wcm9taXNlKCk7CisgICAg
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB0aGVuOiBmdW5jdGlvbiggb25GdWxmaWxs
ZWQsIG9uUmVqZWN0ZWQsIG9uUHJvZ3Jlc3MgKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBt
YXhEZXB0aCA9IDA7CisgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHJlc29sdmUoIGRlcHRo
LCBkZWZlcnJlZCwgaGFuZGxlciwgc3BlY2lhbCApIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdGhh
dCA9IHRoaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MgPSBhcmd1bWVu
dHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pZ2h0VGhyb3cgPSBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXR1cm5lZCwg
dGhlbjsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3VwcG9ydDog
UHJvbWlzZXMvQSsgc2VjdGlvbiAyLjMuMy4zLjMKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGh0dHBzOi8vcHJvbWlzZXNhcGx1cy5jb20vI3BvaW50LTU5CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZ25vcmUgZG91YmxlLXJlc29sdXRpb24g
YXR0ZW1wdHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggZGVwdGgg
PCBtYXhEZXB0aCApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybmVkID0gaGFuZGxlci5hcHBseSggdGhh
dCwgYXJncyApOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTdXBw
b3J0OiBQcm9taXNlcy9BKyBzZWN0aW9uIDIuMy4xCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBodHRwczovL3Byb21pc2VzYXBsdXMuY29tLyNwb2ludC00OAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCByZXR1cm5lZCA9PT0gZGVmZXJyZWQu
cHJvbWlzZSgpICkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRo
cm93IG5ldyBUeXBlRXJyb3IoICJUaGVuYWJsZSBzZWxmLXJlc29sdXRpb24iICk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIFN1cHBvcnQ6IFByb21pc2VzL0ErIHNlY3Rpb25zIDIuMy4zLjEsIDMu
NQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9wcm9taXNl
c2FwbHVzLmNvbS8jcG9pbnQtNTQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIGh0dHBzOi8vcHJvbWlzZXNhcGx1cy5jb20vI3BvaW50LTc1CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBSZXRyaWV2ZSBgdGhlbmAgb25seSBvbmNlCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuID0gcmV0dXJuZWQgJiYKKworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6IFByb21pc2VzL0Er
IHNlY3Rpb24gMi4zLjQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBodHRwczovL3Byb21pc2VzYXBsdXMuY29tLyNwb2ludC02NAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIE9ubHkgY2hlY2sgb2JqZWN0cyBhbmQgZnVuY3Rpb25z
IGZvciB0aGVuYWJpbGl0eQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICggdHlwZW9mIHJldHVybmVkID09PSAib2JqZWN0IiB8fAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgcmV0dXJuZWQgPT09ICJmdW5jdGlvbiIgKSAm
JgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybmVkLnRoZW47
CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEhhbmRsZSBhIHJldHVy
bmVkIHRoZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGpR
dWVyeS5pc0Z1bmN0aW9uKCB0aGVuICkgKSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBTcGVjaWFsIHByb2Nlc3NvcnMgKG5vdGlmeSkganVzdCB3YWl0IGZv
ciByZXNvbHV0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCBzcGVjaWFsICkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0aGVuLmNhbGwoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm5lZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlc29sdmUoIG1heERlcHRoLCBkZWZlcnJlZCwgSWRlbnRpdHksIHNwZWNpYWwgKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUo
IG1heERlcHRoLCBkZWZlcnJlZCwgVGhyb3dlciwgc3BlY2lhbCApCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CisKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBOb3JtYWwgcHJvY2Vzc29ycyAocmVzb2x2ZSkgYWxzbyBob29r
IGludG8gcHJvZ3Jlc3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgeworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IC4uLmFuZCBkaXNyZWdhcmQgb2xkZXIgcmVzb2x1dGlvbiB2YWx1ZXMKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4RGVwdGgrKzsKKworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuLmNhbGwoCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5lZCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoIG1heERlcHRoLCBk
ZWZlcnJlZCwgSWRlbnRpdHksIHNwZWNpYWwgKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoIG1heERlcHRoLCBkZWZlcnJlZCwgVGhyb3dl
ciwgc3BlY2lhbCApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVzb2x2ZSggbWF4RGVwdGgsIGRlZmVycmVkLCBJZGVudGl0eSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5ub3RpZnlX
aXRoICkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIEhhbmRsZSBhbGwgb3RoZXIgcmV0dXJuZWQgdmFsdWVz
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gT25seSBzdWJzdGl0dXRlIGhhbmRs
ZXJzIHBhc3Mgb24gY29udGV4dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIGFuZCBtdWx0aXBsZSB2YWx1ZXMgKG5vbi1zcGVjIGJlaGF2aW9yKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggaGFuZGxlciAhPT0gSWRlbnRpdHkg
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgPSB1
bmRlZmluZWQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFy
Z3MgPSBbIHJldHVybmVkIF07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUHJvY2Vz
cyB0aGUgdmFsdWUocykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBEZWZhdWx0IHByb2Nlc3MgaXMgcmVzb2x2ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICggc3BlY2lhbCB8fCBkZWZlcnJlZC5yZXNvbHZlV2l0aCApKCB0aGF0LCBh
cmdzICk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gT25seSBub3JtYWwgcHJvY2Vzc29ycyAocmVzb2x2ZSkgY2F0Y2ggYW5kIHJlamVjdCBl
eGNlcHRpb25zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3MgPSBzcGVj
aWFsID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pZ2h0VGhyb3cgOgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlnaHRUaHJvdygpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKCBlICkgeworCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggalF1ZXJ5LkRlZmVycmVkLmV4Y2Vw
dGlvbkhvb2sgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBqUXVlcnkuRGVmZXJyZWQuZXhjZXB0aW9uSG9vayggZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzLnN0YWNrVHJhY2UgKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6IFByb21pc2Vz
L0ErIHNlY3Rpb24gMi4zLjMuMy40LjEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gaHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8jcG9pbnQtNjEKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWdub3JlIHBvc3QtcmVz
b2x1dGlvbiBleGNlcHRpb25zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICggZGVwdGggKyAxID49IG1heERlcHRoICkgeworCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBPbmx5IHN1YnN0aXR1dGUgaGFuZGxl
cnMgcGFzcyBvbiBjb250ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBhbmQgbXVsdGlwbGUgdmFsdWVzIChub24tc3BlYyBiZWhhdmlvcikKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggaGFuZGxl
ciAhPT0gVGhyb3dlciApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0aGF0ID0gdW5kZWZpbmVkOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MgPSBbIGUgXTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0V2l0aCggdGhhdCwg
YXJncyApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IFN1cHBvcnQ6IFByb21pc2VzL0ErIHNlY3Rpb24gMi4zLjMuMy4xCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gaHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8jcG9pbnQtNTcKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBSZS1yZXNvbHZlIHByb21pc2VzIGltbWVkaWF0ZWx5
IHRvIGRvZGdlIGZhbHNlIHJlamVjdGlvbiBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gc3Vic2VxdWVudCBlcnJvcnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
IGRlcHRoICkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzKCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBDYWxsIGFuIG9wdGlvbmFsIGhvb2sgdG8gcmVjb3JkIHRoZSBzdGFj
aywgaW4gY2FzZSBvZiBleGNlcHRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gc2luY2UgaXQncyBvdGhlcndpc2UgbG9zdCB3aGVuIGV4ZWN1dGlvbiBnb2VzIGFzeW5jCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggalF1ZXJ5LkRlZmVycmVkLmdldFN0
YWNrSG9vayApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3Mu
c3RhY2tUcmFjZSA9IGpRdWVyeS5EZWZlcnJlZC5nZXRTdGFja0hvb2soKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3
aW5kb3cuc2V0VGltZW91dCggcHJvY2VzcyApOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4galF1ZXJ5LkRlZmVycmVkKCBmdW5jdGlvbiggbmV3
RGVmZXIgKSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHByb2dyZXNzX2hhbmRsZXJz
LmFkZCggLi4uICkKKyAgICAgICAgICAgICAgICAgICAgICAgIHR1cGxlc1sgMCBdWyAzIF0uYWRk
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0Rl
ZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkuaXNGdW5jdGlvbigg
b25Qcm9ncmVzcyApID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uUHJv
Z3Jlc3MgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWRlbnRpdHksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0RlZmVyLm5vdGlmeVdpdGgKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgICAgICApOworCisg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBmdWxmaWxsZWRfaGFuZGxlcnMuYWRkKCAuLi4gKQor
ICAgICAgICAgICAgICAgICAgICAgICAgdHVwbGVzWyAxIF1bIDMgXS5hZGQoCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3RGVmZXIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5pc0Z1bmN0aW9uKCBvbkZ1bGZpbGxlZCAp
ID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRnVsZmlsbGVkIDoKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElkZW50aXR5CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICAgICAgKTsKKworICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gcmVqZWN0ZWRfaGFuZGxlcnMuYWRkKCAuLi4gKQorICAgICAgICAg
ICAgICAgICAgICAgICAgdHVwbGVzWyAyIF1bIDMgXS5hZGQoCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzb2x2ZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3RGVmZXIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGpRdWVyeS5pc0Z1bmN0aW9uKCBvblJlamVjdGVkICkgPworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25SZWplY3RlZCA6CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBUaHJvd2VyCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKQorICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICAgICAgfSAp
LnByb21pc2UoKTsKKyAgICAgICAgICAgICAgICB9LAorCisgICAgICAgICAgICAgICAgLy8gR2V0
IGEgcHJvbWlzZSBmb3IgdGhpcyBkZWZlcnJlZAorICAgICAgICAgICAgICAgIC8vIElmIG9iaiBp
cyBwcm92aWRlZCwgdGhlIHByb21pc2UgYXNwZWN0IGlzIGFkZGVkIHRvIHRoZSBvYmplY3QKKyAg
ICAgICAgICAgICAgICBwcm9taXNlOiBmdW5jdGlvbiggb2JqICkgeworICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gb2JqICE9IG51bGwgPyBqUXVlcnkuZXh0ZW5kKCBvYmosIHByb21pc2UgKSA6
IHByb21pc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
IGRlZmVycmVkID0ge307CisKKyAgICAgICAgLy8gQWRkIGxpc3Qtc3BlY2lmaWMgbWV0aG9kcwor
ICAgICAgICBqUXVlcnkuZWFjaCggdHVwbGVzLCBmdW5jdGlvbiggaSwgdHVwbGUgKSB7CisgICAg
ICAgICAgICB2YXIgbGlzdCA9IHR1cGxlWyAyIF0sCisgICAgICAgICAgICAgICAgc3RhdGVTdHJp
bmcgPSB0dXBsZVsgNSBdOworCisgICAgICAgICAgICAvLyBwcm9taXNlLnByb2dyZXNzID0gbGlz
dC5hZGQKKyAgICAgICAgICAgIC8vIHByb21pc2UuZG9uZSA9IGxpc3QuYWRkCisgICAgICAgICAg
ICAvLyBwcm9taXNlLmZhaWwgPSBsaXN0LmFkZAorICAgICAgICAgICAgcHJvbWlzZVsgdHVwbGVb
IDEgXSBdID0gbGlzdC5hZGQ7CisKKyAgICAgICAgICAgIC8vIEhhbmRsZSBzdGF0ZQorICAgICAg
ICAgICAgaWYgKCBzdGF0ZVN0cmluZyApIHsKKyAgICAgICAgICAgICAgICBsaXN0LmFkZCgKKyAg
ICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAg
IC8vIHN0YXRlID0gInJlc29sdmVkIiAoaS5lLiwgZnVsZmlsbGVkKQorICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gc3RhdGUgPSAicmVqZWN0ZWQiCisgICAgICAgICAgICAgICAgICAgICAgICBz
dGF0ZSA9IHN0YXRlU3RyaW5nOworICAgICAgICAgICAgICAgICAgICB9LAorCisgICAgICAgICAg
ICAgICAgICAgIC8vIHJlamVjdGVkX2NhbGxiYWNrcy5kaXNhYmxlCisgICAgICAgICAgICAgICAg
ICAgIC8vIGZ1bGZpbGxlZF9jYWxsYmFja3MuZGlzYWJsZQorICAgICAgICAgICAgICAgICAgICB0
dXBsZXNbIDMgLSBpIF1bIDIgXS5kaXNhYmxlLAorCisgICAgICAgICAgICAgICAgICAgIC8vIHBy
b2dyZXNzX2NhbGxiYWNrcy5sb2NrCisgICAgICAgICAgICAgICAgICAgIHR1cGxlc1sgMCBdWyAy
IF0ubG9jaworICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IC8vIHByb2dyZXNzX2hhbmRsZXJzLmZpcmUKKyAgICAgICAgICAgIC8vIGZ1bGZpbGxlZF9oYW5k
bGVycy5maXJlCisgICAgICAgICAgICAvLyByZWplY3RlZF9oYW5kbGVycy5maXJlCisgICAgICAg
ICAgICBsaXN0LmFkZCggdHVwbGVbIDMgXS5maXJlICk7CisKKyAgICAgICAgICAgIC8vIGRlZmVy
cmVkLm5vdGlmeSA9IGZ1bmN0aW9uKCkgeyBkZWZlcnJlZC5ub3RpZnlXaXRoKC4uLikgfQorICAg
ICAgICAgICAgLy8gZGVmZXJyZWQucmVzb2x2ZSA9IGZ1bmN0aW9uKCkgeyBkZWZlcnJlZC5yZXNv
bHZlV2l0aCguLi4pIH0KKyAgICAgICAgICAgIC8vIGRlZmVycmVkLnJlamVjdCA9IGZ1bmN0aW9u
KCkgeyBkZWZlcnJlZC5yZWplY3RXaXRoKC4uLikgfQorICAgICAgICAgICAgZGVmZXJyZWRbIHR1
cGxlWyAwIF0gXSA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGRlZmVycmVkWyB0dXBs
ZVsgMCBdICsgIldpdGgiIF0oIHRoaXMgPT09IGRlZmVycmVkID8gdW5kZWZpbmVkIDogdGhpcywg
YXJndW1lbnRzICk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgICAgICB9
OworCisgICAgICAgICAgICAvLyBkZWZlcnJlZC5ub3RpZnlXaXRoID0gbGlzdC5maXJlV2l0aAor
ICAgICAgICAgICAgLy8gZGVmZXJyZWQucmVzb2x2ZVdpdGggPSBsaXN0LmZpcmVXaXRoCisgICAg
ICAgICAgICAvLyBkZWZlcnJlZC5yZWplY3RXaXRoID0gbGlzdC5maXJlV2l0aAorICAgICAgICAg
ICAgZGVmZXJyZWRbIHR1cGxlWyAwIF0gKyAiV2l0aCIgXSA9IGxpc3QuZmlyZVdpdGg7CisgICAg
ICAgIH0gKTsKKworICAgICAgICAvLyBNYWtlIHRoZSBkZWZlcnJlZCBhIHByb21pc2UKKyAgICAg
ICAgcHJvbWlzZS5wcm9taXNlKCBkZWZlcnJlZCApOworCisgICAgICAgIC8vIENhbGwgZ2l2ZW4g
ZnVuYyBpZiBhbnkKKyAgICAgICAgaWYgKCBmdW5jICkgeworICAgICAgICAgICAgZnVuYy5jYWxs
KCBkZWZlcnJlZCwgZGVmZXJyZWQgKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEFsbCBkb25l
IQorICAgICAgICByZXR1cm4gZGVmZXJyZWQ7CisgICAgfSwKKworICAgIC8vIERlZmVycmVkIGhl
bHBlcgorICAgIHdoZW46IGZ1bmN0aW9uKCBzaW5nbGVWYWx1ZSApIHsKKyAgICAgICAgdmFyCisK
KyAgICAgICAgICAgIC8vIGNvdW50IG9mIHVuY29tcGxldGVkIHN1Ym9yZGluYXRlcworICAgICAg
ICAgICAgcmVtYWluaW5nID0gYXJndW1lbnRzLmxlbmd0aCwKKworICAgICAgICAgICAgLy8gY291
bnQgb2YgdW5wcm9jZXNzZWQgYXJndW1lbnRzCisgICAgICAgICAgICBpID0gcmVtYWluaW5nLAor
CisgICAgICAgICAgICAvLyBzdWJvcmRpbmF0ZSBmdWxmaWxsbWVudCBkYXRhCisgICAgICAgICAg
ICByZXNvbHZlQ29udGV4dHMgPSBBcnJheSggaSApLAorICAgICAgICAgICAgcmVzb2x2ZVZhbHVl
cyA9IHNsaWNlLmNhbGwoIGFyZ3VtZW50cyApLAorCisgICAgICAgICAgICAvLyB0aGUgbWFzdGVy
IERlZmVycmVkCisgICAgICAgICAgICBtYXN0ZXIgPSBqUXVlcnkuRGVmZXJyZWQoKSwKKworICAg
ICAgICAgICAgLy8gc3Vib3JkaW5hdGUgY2FsbGJhY2sgZmFjdG9yeQorICAgICAgICAgICAgdXBk
YXRlRnVuYyA9IGZ1bmN0aW9uKCBpICkgeworICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlv
biggdmFsdWUgKSB7CisgICAgICAgICAgICAgICAgICAgIHJlc29sdmVDb250ZXh0c1sgaSBdID0g
dGhpczsKKyAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZVZhbHVlc1sgaSBdID0gYXJndW1lbnRz
Lmxlbmd0aCA+IDEgPyBzbGljZS5jYWxsKCBhcmd1bWVudHMgKSA6IHZhbHVlOworICAgICAgICAg
ICAgICAgICAgICBpZiAoICEoIC0tcmVtYWluaW5nICkgKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBtYXN0ZXIucmVzb2x2ZVdpdGgoIHJlc29sdmVDb250ZXh0cywgcmVzb2x2ZVZhbHVlcyAp
OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAg
IH07CisKKyAgICAgICAgLy8gU2luZ2xlLSBhbmQgZW1wdHkgYXJndW1lbnRzIGFyZSBhZG9wdGVk
IGxpa2UgUHJvbWlzZS5yZXNvbHZlCisgICAgICAgIGlmICggcmVtYWluaW5nIDw9IDEgKSB7Cisg
ICAgICAgICAgICBhZG9wdFZhbHVlKCBzaW5nbGVWYWx1ZSwgbWFzdGVyLmRvbmUoIHVwZGF0ZUZ1
bmMoIGkgKSApLnJlc29sdmUsIG1hc3Rlci5yZWplY3QgKTsKKworICAgICAgICAgICAgLy8gVXNl
IC50aGVuKCkgdG8gdW53cmFwIHNlY29uZGFyeSB0aGVuYWJsZXMgKGNmLiBnaC0zMDAwKQorICAg
ICAgICAgICAgaWYgKCBtYXN0ZXIuc3RhdGUoKSA9PT0gInBlbmRpbmciIHx8CisgICAgICAgICAg
ICAgICAgalF1ZXJ5LmlzRnVuY3Rpb24oIHJlc29sdmVWYWx1ZXNbIGkgXSAmJiByZXNvbHZlVmFs
dWVzWyBpIF0udGhlbiApICkgeworCisgICAgICAgICAgICAgICAgcmV0dXJuIG1hc3Rlci50aGVu
KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBNdWx0aXBsZSBhcmd1
bWVudHMgYXJlIGFnZ3JlZ2F0ZWQgbGlrZSBQcm9taXNlLmFsbCBhcnJheSBlbGVtZW50cworICAg
ICAgICB3aGlsZSAoIGktLSApIHsKKyAgICAgICAgICAgIGFkb3B0VmFsdWUoIHJlc29sdmVWYWx1
ZXNbIGkgXSwgdXBkYXRlRnVuYyggaSApLCBtYXN0ZXIucmVqZWN0ICk7CisgICAgICAgIH0KKwor
ICAgICAgICByZXR1cm4gbWFzdGVyLnByb21pc2UoKTsKKyAgICB9Cit9ICk7CisKKworLy8gVGhl
c2UgdXN1YWxseSBpbmRpY2F0ZSBhIHByb2dyYW1tZXIgbWlzdGFrZSBkdXJpbmcgZGV2ZWxvcG1l
bnQsCisvLyB3YXJuIGFib3V0IHRoZW0gQVNBUCByYXRoZXIgdGhhbiBzd2FsbG93aW5nIHRoZW0g
YnkgZGVmYXVsdC4KK3ZhciByZXJyb3JOYW1lcyA9IC9eKEV2YWx8SW50ZXJuYWx8UmFuZ2V8UmVm
ZXJlbmNlfFN5bnRheHxUeXBlfFVSSSlFcnJvciQvOworCitqUXVlcnkuRGVmZXJyZWQuZXhjZXB0
aW9uSG9vayA9IGZ1bmN0aW9uKCBlcnJvciwgc3RhY2sgKSB7CisKKyAgICAvLyBTdXBwb3J0OiBJ
RSA4IC0gOSBvbmx5CisgICAgLy8gQ29uc29sZSBleGlzdHMgd2hlbiBkZXYgdG9vbHMgYXJlIG9w
ZW4sIHdoaWNoIGNhbiBoYXBwZW4gYXQgYW55IHRpbWUKKyAgICBpZiAoIHdpbmRvdy5jb25zb2xl
ICYmIHdpbmRvdy5jb25zb2xlLndhcm4gJiYgZXJyb3IgJiYgcmVycm9yTmFtZXMudGVzdCggZXJy
b3IubmFtZSApICkgeworICAgICAgICB3aW5kb3cuY29uc29sZS53YXJuKCAialF1ZXJ5LkRlZmVy
cmVkIGV4Y2VwdGlvbjogIiArIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBzdGFjayApOwor
ICAgIH0KK307CisKKworCisKK2pRdWVyeS5yZWFkeUV4Y2VwdGlvbiA9IGZ1bmN0aW9uKCBlcnJv
ciApIHsKKyAgICB3aW5kb3cuc2V0VGltZW91dCggZnVuY3Rpb24oKSB7CisgICAgICAgIHRocm93
IGVycm9yOworICAgIH0gKTsKK307CisKKworCisKKy8vIFRoZSBkZWZlcnJlZCB1c2VkIG9uIERP
TSByZWFkeQordmFyIHJlYWR5TGlzdCA9IGpRdWVyeS5EZWZlcnJlZCgpOworCitqUXVlcnkuZm4u
cmVhZHkgPSBmdW5jdGlvbiggZm4gKSB7CisKKyAgICByZWFkeUxpc3QKKyAgICAgICAgLnRoZW4o
IGZuICkKKworICAgICAgICAvLyBXcmFwIGpRdWVyeS5yZWFkeUV4Y2VwdGlvbiBpbiBhIGZ1bmN0
aW9uIHNvIHRoYXQgdGhlIGxvb2t1cAorICAgICAgICAvLyBoYXBwZW5zIGF0IHRoZSB0aW1lIG9m
IGVycm9yIGhhbmRsaW5nIGluc3RlYWQgb2YgY2FsbGJhY2sKKyAgICAgICAgLy8gcmVnaXN0cmF0
aW9uLgorICAgICAgICAuY2F0Y2goIGZ1bmN0aW9uKCBlcnJvciApIHsKKyAgICAgICAgICAgIGpR
dWVyeS5yZWFkeUV4Y2VwdGlvbiggZXJyb3IgKTsKKyAgICAgICAgfSApOworCisgICAgcmV0dXJu
IHRoaXM7Cit9OworCitqUXVlcnkuZXh0ZW5kKCB7CisKKyAgICAvLyBJcyB0aGUgRE9NIHJlYWR5
IHRvIGJlIHVzZWQ/IFNldCB0byB0cnVlIG9uY2UgaXQgb2NjdXJzLgorICAgIGlzUmVhZHk6IGZh
bHNlLAorCisgICAgLy8gQSBjb3VudGVyIHRvIHRyYWNrIGhvdyBtYW55IGl0ZW1zIHRvIHdhaXQg
Zm9yIGJlZm9yZQorICAgIC8vIHRoZSByZWFkeSBldmVudCBmaXJlcy4gU2VlICM2NzgxCisgICAg
cmVhZHlXYWl0OiAxLAorCisgICAgLy8gSG9sZCAob3IgcmVsZWFzZSkgdGhlIHJlYWR5IGV2ZW50
CisgICAgaG9sZFJlYWR5OiBmdW5jdGlvbiggaG9sZCApIHsKKyAgICAgICAgaWYgKCBob2xkICkg
eworICAgICAgICAgICAgalF1ZXJ5LnJlYWR5V2FpdCsrOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgalF1ZXJ5LnJlYWR5KCB0cnVlICk7CisgICAgICAgIH0KKyAgICB9LAorCisgICAg
Ly8gSGFuZGxlIHdoZW4gdGhlIERPTSBpcyByZWFkeQorICAgIHJlYWR5OiBmdW5jdGlvbiggd2Fp
dCApIHsKKworICAgICAgICAvLyBBYm9ydCBpZiB0aGVyZSBhcmUgcGVuZGluZyBob2xkcyBvciB3
ZSdyZSBhbHJlYWR5IHJlYWR5CisgICAgICAgIGlmICggd2FpdCA9PT0gdHJ1ZSA/IC0talF1ZXJ5
LnJlYWR5V2FpdCA6IGpRdWVyeS5pc1JlYWR5ICkgeworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgLy8gUmVtZW1iZXIgdGhhdCB0aGUgRE9NIGlzIHJlYWR5CisgICAg
ICAgIGpRdWVyeS5pc1JlYWR5ID0gdHJ1ZTsKKworICAgICAgICAvLyBJZiBhIG5vcm1hbCBET00g
UmVhZHkgZXZlbnQgZmlyZWQsIGRlY3JlbWVudCwgYW5kIHdhaXQgaWYgbmVlZCBiZQorICAgICAg
ICBpZiAoIHdhaXQgIT09IHRydWUgJiYgLS1qUXVlcnkucmVhZHlXYWl0ID4gMCApIHsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIElmIHRoZXJlIGFyZSBmdW5j
dGlvbnMgYm91bmQsIHRvIGV4ZWN1dGUKKyAgICAgICAgcmVhZHlMaXN0LnJlc29sdmVXaXRoKCBk
b2N1bWVudCwgWyBqUXVlcnkgXSApOworICAgIH0KK30gKTsKKworalF1ZXJ5LnJlYWR5LnRoZW4g
PSByZWFkeUxpc3QudGhlbjsKKworLy8gVGhlIHJlYWR5IGV2ZW50IGhhbmRsZXIgYW5kIHNlbGYg
Y2xlYW51cCBtZXRob2QKK2Z1bmN0aW9uIGNvbXBsZXRlZCgpIHsKKyAgICBkb2N1bWVudC5yZW1v
dmVFdmVudExpc3RlbmVyKCAiRE9NQ29udGVudExvYWRlZCIsIGNvbXBsZXRlZCApOworICAgIHdp
bmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCAibG9hZCIsIGNvbXBsZXRlZCApOworICAgIGpRdWVy
eS5yZWFkeSgpOworfQorCisvLyBDYXRjaCBjYXNlcyB3aGVyZSAkKGRvY3VtZW50KS5yZWFkeSgp
IGlzIGNhbGxlZAorLy8gYWZ0ZXIgdGhlIGJyb3dzZXIgZXZlbnQgaGFzIGFscmVhZHkgb2NjdXJy
ZWQuCisvLyBTdXBwb3J0OiBJRSA8PTkgLSAxMCBvbmx5CisvLyBPbGRlciBJRSBzb21ldGltZXMg
c2lnbmFscyAiaW50ZXJhY3RpdmUiIHRvbyBzb29uCitpZiAoIGRvY3VtZW50LnJlYWR5U3RhdGUg
PT09ICJjb21wbGV0ZSIgfHwKKyAgICAoIGRvY3VtZW50LnJlYWR5U3RhdGUgIT09ICJsb2FkaW5n
IiAmJiAhZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmRvU2Nyb2xsICkgKSB7CisKKyAgICAvLyBI
YW5kbGUgaXQgYXN5bmNocm9ub3VzbHkgdG8gYWxsb3cgc2NyaXB0cyB0aGUgb3Bwb3J0dW5pdHkg
dG8gZGVsYXkgcmVhZHkKKyAgICB3aW5kb3cuc2V0VGltZW91dCggalF1ZXJ5LnJlYWR5ICk7CisK
K30gZWxzZSB7CisKKyAgICAvLyBVc2UgdGhlIGhhbmR5IGV2ZW50IGNhbGxiYWNrCisgICAgZG9j
dW1lbnQuYWRkRXZlbnRMaXN0ZW5lciggIkRPTUNvbnRlbnRMb2FkZWQiLCBjb21wbGV0ZWQgKTsK
KworICAgIC8vIEEgZmFsbGJhY2sgdG8gd2luZG93Lm9ubG9hZCwgdGhhdCB3aWxsIGFsd2F5cyB3
b3JrCisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoICJsb2FkIiwgY29tcGxldGVkICk7Cit9
CisKKworCisKKy8vIE11bHRpZnVuY3Rpb25hbCBtZXRob2QgdG8gZ2V0IGFuZCBzZXQgdmFsdWVz
IG9mIGEgY29sbGVjdGlvbgorLy8gVGhlIHZhbHVlL3MgY2FuIG9wdGlvbmFsbHkgYmUgZXhlY3V0
ZWQgaWYgaXQncyBhIGZ1bmN0aW9uCit2YXIgYWNjZXNzID0gZnVuY3Rpb24oIGVsZW1zLCBmbiwg
a2V5LCB2YWx1ZSwgY2hhaW5hYmxlLCBlbXB0eUdldCwgcmF3ICkgeworICAgIHZhciBpID0gMCwK
KyAgICAgICAgbGVuID0gZWxlbXMubGVuZ3RoLAorICAgICAgICBidWxrID0ga2V5ID09IG51bGw7
CisKKyAgICAvLyBTZXRzIG1hbnkgdmFsdWVzCisgICAgaWYgKCBqUXVlcnkudHlwZSgga2V5ICkg
PT09ICJvYmplY3QiICkgeworICAgICAgICBjaGFpbmFibGUgPSB0cnVlOworICAgICAgICBmb3Ig
KCBpIGluIGtleSApIHsKKyAgICAgICAgICAgIGFjY2VzcyggZWxlbXMsIGZuLCBpLCBrZXlbIGkg
XSwgdHJ1ZSwgZW1wdHlHZXQsIHJhdyApOworICAgICAgICB9CisKKyAgICAvLyBTZXRzIG9uZSB2
YWx1ZQorICAgIH0gZWxzZSBpZiAoIHZhbHVlICE9PSB1bmRlZmluZWQgKSB7CisgICAgICAgIGNo
YWluYWJsZSA9IHRydWU7CisKKyAgICAgICAgaWYgKCAhalF1ZXJ5LmlzRnVuY3Rpb24oIHZhbHVl
ICkgKSB7CisgICAgICAgICAgICByYXcgPSB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KCBidWxrICkgeworCisgICAgICAgICAgICAvLyBCdWxrIG9wZXJhdGlvbnMgcnVuIGFnYWluc3Qg
dGhlIGVudGlyZSBzZXQKKyAgICAgICAgICAgIGlmICggcmF3ICkgeworICAgICAgICAgICAgICAg
IGZuLmNhbGwoIGVsZW1zLCB2YWx1ZSApOworICAgICAgICAgICAgICAgIGZuID0gbnVsbDsKKwor
ICAgICAgICAgICAgLy8gLi4uZXhjZXB0IHdoZW4gZXhlY3V0aW5nIGZ1bmN0aW9uIHZhbHVlcwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBidWxrID0gZm47CisgICAgICAg
ICAgICAgICAgZm4gPSBmdW5jdGlvbiggZWxlbSwga2V5LCB2YWx1ZSApIHsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGJ1bGsuY2FsbCggalF1ZXJ5KCBlbGVtICksIHZhbHVlICk7CisgICAg
ICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmICgg
Zm4gKSB7CisgICAgICAgICAgICBmb3IgKCA7IGkgPCBsZW47IGkrKyApIHsKKyAgICAgICAgICAg
ICAgICBmbigKKyAgICAgICAgICAgICAgICAgICAgZWxlbXNbIGkgXSwga2V5LCByYXcgPworICAg
ICAgICAgICAgICAgICAgICB2YWx1ZSA6CisgICAgICAgICAgICAgICAgICAgIHZhbHVlLmNhbGwo
IGVsZW1zWyBpIF0sIGksIGZuKCBlbGVtc1sgaSBdLCBrZXkgKSApCisgICAgICAgICAgICAgICAg
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICggY2hhaW5hYmxl
ICkgeworICAgICAgICByZXR1cm4gZWxlbXM7CisgICAgfQorCisgICAgLy8gR2V0cworICAgIGlm
ICggYnVsayApIHsKKyAgICAgICAgcmV0dXJuIGZuLmNhbGwoIGVsZW1zICk7CisgICAgfQorCisg
ICAgcmV0dXJuIGxlbiA/IGZuKCBlbGVtc1sgMCBdLCBrZXkgKSA6IGVtcHR5R2V0OworfTsKK3Zh
ciBhY2NlcHREYXRhID0gZnVuY3Rpb24oIG93bmVyICkgeworCisgICAgLy8gQWNjZXB0cyBvbmx5
OgorICAgIC8vICAtIE5vZGUKKyAgICAvLyAgICAtIE5vZGUuRUxFTUVOVF9OT0RFCisgICAgLy8g
ICAgLSBOb2RlLkRPQ1VNRU5UX05PREUKKyAgICAvLyAgLSBPYmplY3QKKyAgICAvLyAgICAtIEFu
eQorICAgIHJldHVybiBvd25lci5ub2RlVHlwZSA9PT0gMSB8fCBvd25lci5ub2RlVHlwZSA9PT0g
OSB8fCAhKCArb3duZXIubm9kZVR5cGUgKTsKK307CisKKworCisKK2Z1bmN0aW9uIERhdGEoKSB7
CisgICAgdGhpcy5leHBhbmRvID0galF1ZXJ5LmV4cGFuZG8gKyBEYXRhLnVpZCsrOworfQorCitE
YXRhLnVpZCA9IDE7CisKK0RhdGEucHJvdG90eXBlID0geworCisgICAgY2FjaGU6IGZ1bmN0aW9u
KCBvd25lciApIHsKKworICAgICAgICAvLyBDaGVjayBpZiB0aGUgb3duZXIgb2JqZWN0IGFscmVh
ZHkgaGFzIGEgY2FjaGUKKyAgICAgICAgdmFyIHZhbHVlID0gb3duZXJbIHRoaXMuZXhwYW5kbyBd
OworCisgICAgICAgIC8vIElmIG5vdCwgY3JlYXRlIG9uZQorICAgICAgICBpZiAoICF2YWx1ZSAp
IHsKKyAgICAgICAgICAgIHZhbHVlID0ge307CisKKyAgICAgICAgICAgIC8vIFdlIGNhbiBhY2Nl
cHQgZGF0YSBmb3Igbm9uLWVsZW1lbnQgbm9kZXMgaW4gbW9kZXJuIGJyb3dzZXJzLAorICAgICAg
ICAgICAgLy8gYnV0IHdlIHNob3VsZCBub3QsIHNlZSAjODMzNS4KKyAgICAgICAgICAgIC8vIEFs
d2F5cyByZXR1cm4gYW4gZW1wdHkgb2JqZWN0LgorICAgICAgICAgICAgaWYgKCBhY2NlcHREYXRh
KCBvd25lciApICkgeworCisgICAgICAgICAgICAgICAgLy8gSWYgaXQgaXMgYSBub2RlIHVubGlr
ZWx5IHRvIGJlIHN0cmluZ2lmeS1lZCBvciBsb29wZWQgb3ZlcgorICAgICAgICAgICAgICAgIC8v
IHVzZSBwbGFpbiBhc3NpZ25tZW50CisgICAgICAgICAgICAgICAgaWYgKCBvd25lci5ub2RlVHlw
ZSApIHsKKyAgICAgICAgICAgICAgICAgICAgb3duZXJbIHRoaXMuZXhwYW5kbyBdID0gdmFsdWU7
CisKKyAgICAgICAgICAgICAgICAvLyBPdGhlcndpc2Ugc2VjdXJlIGl0IGluIGEgbm9uLWVudW1l
cmFibGUgcHJvcGVydHkKKyAgICAgICAgICAgICAgICAvLyBjb25maWd1cmFibGUgbXVzdCBiZSB0
cnVlIHRvIGFsbG93IHRoZSBwcm9wZXJ0eSB0byBiZQorICAgICAgICAgICAgICAgIC8vIGRlbGV0
ZWQgd2hlbiBkYXRhIGlzIHJlbW92ZWQKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoIG93bmVyLCB0aGlzLmV4cGFuZG8s
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZQorICAgICAgICAgICAgICAgICAgICB9ICk7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0
dXJuIHZhbHVlOworICAgIH0sCisgICAgc2V0OiBmdW5jdGlvbiggb3duZXIsIGRhdGEsIHZhbHVl
ICkgeworICAgICAgICB2YXIgcHJvcCwKKyAgICAgICAgICAgIGNhY2hlID0gdGhpcy5jYWNoZSgg
b3duZXIgKTsKKworICAgICAgICAvLyBIYW5kbGU6IFsgb3duZXIsIGtleSwgdmFsdWUgXSBhcmdz
CisgICAgICAgIC8vIEFsd2F5cyB1c2UgY2FtZWxDYXNlIGtleSAoZ2gtMjI1NykKKyAgICAgICAg
aWYgKCB0eXBlb2YgZGF0YSA9PT0gInN0cmluZyIgKSB7CisgICAgICAgICAgICBjYWNoZVsgalF1
ZXJ5LmNhbWVsQ2FzZSggZGF0YSApIF0gPSB2YWx1ZTsKKworICAgICAgICAvLyBIYW5kbGU6IFsg
b3duZXIsIHsgcHJvcGVydGllcyB9IF0gYXJncworICAgICAgICB9IGVsc2UgeworCisgICAgICAg
ICAgICAvLyBDb3B5IHRoZSBwcm9wZXJ0aWVzIG9uZS1ieS1vbmUgdG8gdGhlIGNhY2hlIG9iamVj
dAorICAgICAgICAgICAgZm9yICggcHJvcCBpbiBkYXRhICkgeworICAgICAgICAgICAgICAgIGNh
Y2hlWyBqUXVlcnkuY2FtZWxDYXNlKCBwcm9wICkgXSA9IGRhdGFbIHByb3AgXTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gY2FjaGU7CisgICAgfSwKKyAgICBnZXQ6
IGZ1bmN0aW9uKCBvd25lciwga2V5ICkgeworICAgICAgICByZXR1cm4ga2V5ID09PSB1bmRlZmlu
ZWQgPworICAgICAgICAgICAgdGhpcy5jYWNoZSggb3duZXIgKSA6CisKKyAgICAgICAgICAgIC8v
IEFsd2F5cyB1c2UgY2FtZWxDYXNlIGtleSAoZ2gtMjI1NykKKyAgICAgICAgICAgIG93bmVyWyB0
aGlzLmV4cGFuZG8gXSAmJiBvd25lclsgdGhpcy5leHBhbmRvIF1bIGpRdWVyeS5jYW1lbENhc2Uo
IGtleSApIF07CisgICAgfSwKKyAgICBhY2Nlc3M6IGZ1bmN0aW9uKCBvd25lciwga2V5LCB2YWx1
ZSApIHsKKworICAgICAgICAvLyBJbiBjYXNlcyB3aGVyZSBlaXRoZXI6CisgICAgICAgIC8vCisg
ICAgICAgIC8vICAgMS4gTm8ga2V5IHdhcyBzcGVjaWZpZWQKKyAgICAgICAgLy8gICAyLiBBIHN0
cmluZyBrZXkgd2FzIHNwZWNpZmllZCwgYnV0IG5vIHZhbHVlIHByb3ZpZGVkCisgICAgICAgIC8v
CisgICAgICAgIC8vIFRha2UgdGhlICJyZWFkIiBwYXRoIGFuZCBhbGxvdyB0aGUgZ2V0IG1ldGhv
ZCB0byBkZXRlcm1pbmUKKyAgICAgICAgLy8gd2hpY2ggdmFsdWUgdG8gcmV0dXJuLCByZXNwZWN0
aXZlbHkgZWl0aGVyOgorICAgICAgICAvLworICAgICAgICAvLyAgIDEuIFRoZSBlbnRpcmUgY2Fj
aGUgb2JqZWN0CisgICAgICAgIC8vICAgMi4gVGhlIGRhdGEgc3RvcmVkIGF0IHRoZSBrZXkKKyAg
ICAgICAgLy8KKyAgICAgICAgaWYgKCBrZXkgPT09IHVuZGVmaW5lZCB8fAorICAgICAgICAgICAg
ICAgICggKCBrZXkgJiYgdHlwZW9mIGtleSA9PT0gInN0cmluZyIgKSAmJiB2YWx1ZSA9PT0gdW5k
ZWZpbmVkICkgKSB7CisKKyAgICAgICAgICAgIHJldHVybiB0aGlzLmdldCggb3duZXIsIGtleSAp
OworICAgICAgICB9CisKKyAgICAgICAgLy8gV2hlbiB0aGUga2V5IGlzIG5vdCBhIHN0cmluZywg
b3IgYm90aCBhIGtleSBhbmQgdmFsdWUKKyAgICAgICAgLy8gYXJlIHNwZWNpZmllZCwgc2V0IG9y
IGV4dGVuZCAoZXhpc3Rpbmcgb2JqZWN0cykgd2l0aCBlaXRoZXI6CisgICAgICAgIC8vCisgICAg
ICAgIC8vICAgMS4gQW4gb2JqZWN0IG9mIHByb3BlcnRpZXMKKyAgICAgICAgLy8gICAyLiBBIGtl
eSBhbmQgdmFsdWUKKyAgICAgICAgLy8KKyAgICAgICAgdGhpcy5zZXQoIG93bmVyLCBrZXksIHZh
bHVlICk7CisKKyAgICAgICAgLy8gU2luY2UgdGhlICJzZXQiIHBhdGggY2FuIGhhdmUgdHdvIHBv
c3NpYmxlIGVudHJ5IHBvaW50cworICAgICAgICAvLyByZXR1cm4gdGhlIGV4cGVjdGVkIGRhdGEg
YmFzZWQgb24gd2hpY2ggcGF0aCB3YXMgdGFrZW5bKl0KKyAgICAgICAgcmV0dXJuIHZhbHVlICE9
PSB1bmRlZmluZWQgPyB2YWx1ZSA6IGtleTsKKyAgICB9LAorICAgIHJlbW92ZTogZnVuY3Rpb24o
IG93bmVyLCBrZXkgKSB7CisgICAgICAgIHZhciBpLAorICAgICAgICAgICAgY2FjaGUgPSBvd25l
clsgdGhpcy5leHBhbmRvIF07CisKKyAgICAgICAgaWYgKCBjYWNoZSA9PT0gdW5kZWZpbmVkICkg
eworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCBrZXkgIT09
IHVuZGVmaW5lZCApIHsKKworICAgICAgICAgICAgLy8gU3VwcG9ydCBhcnJheSBvciBzcGFjZSBz
ZXBhcmF0ZWQgc3RyaW5nIG9mIGtleXMKKyAgICAgICAgICAgIGlmICggalF1ZXJ5LmlzQXJyYXko
IGtleSApICkgeworCisgICAgICAgICAgICAgICAgLy8gSWYga2V5IGlzIGFuIGFycmF5IG9mIGtl
eXMuLi4KKyAgICAgICAgICAgICAgICAvLyBXZSBhbHdheXMgc2V0IGNhbWVsQ2FzZSBrZXlzLCBz
byByZW1vdmUgdGhhdC4KKyAgICAgICAgICAgICAgICBrZXkgPSBrZXkubWFwKCBqUXVlcnkuY2Ft
ZWxDYXNlICk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGtleSA9IGpR
dWVyeS5jYW1lbENhc2UoIGtleSApOworCisgICAgICAgICAgICAgICAgLy8gSWYgYSBrZXkgd2l0
aCB0aGUgc3BhY2VzIGV4aXN0cywgdXNlIGl0LgorICAgICAgICAgICAgICAgIC8vIE90aGVyd2lz
ZSwgY3JlYXRlIGFuIGFycmF5IGJ5IG1hdGNoaW5nIG5vbi13aGl0ZXNwYWNlCisgICAgICAgICAg
ICAgICAga2V5ID0ga2V5IGluIGNhY2hlID8KKyAgICAgICAgICAgICAgICAgICAgWyBrZXkgXSA6
CisgICAgICAgICAgICAgICAgICAgICgga2V5Lm1hdGNoKCBybm90aHRtbHdoaXRlICkgfHwgW10g
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaSA9IGtleS5sZW5ndGg7CisKKyAgICAg
ICAgICAgIHdoaWxlICggaS0tICkgeworICAgICAgICAgICAgICAgIGRlbGV0ZSBjYWNoZVsga2V5
WyBpIF0gXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIFJlbW92ZSB0
aGUgZXhwYW5kbyBpZiB0aGVyZSdzIG5vIG1vcmUgZGF0YQorICAgICAgICBpZiAoIGtleSA9PT0g
dW5kZWZpbmVkIHx8IGpRdWVyeS5pc0VtcHR5T2JqZWN0KCBjYWNoZSApICkgeworCisgICAgICAg
ICAgICAvLyBTdXBwb3J0OiBDaHJvbWUgPD0zNSAtIDQ1CisgICAgICAgICAgICAvLyBXZWJraXQg
JiBCbGluayBwZXJmb3JtYW5jZSBzdWZmZXJzIHdoZW4gZGVsZXRpbmcgcHJvcGVydGllcworICAg
ICAgICAgICAgLy8gZnJvbSBET00gbm9kZXMsIHNvIHNldCB0byB1bmRlZmluZWQgaW5zdGVhZAor
ICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vl
cy9kZXRhaWw/aWQ9Mzc4NjA3IChidWcgcmVzdHJpY3RlZCkKKyAgICAgICAgICAgIGlmICggb3du
ZXIubm9kZVR5cGUgKSB7CisgICAgICAgICAgICAgICAgb3duZXJbIHRoaXMuZXhwYW5kbyBdID0g
dW5kZWZpbmVkOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkZWxldGUg
b3duZXJbIHRoaXMuZXhwYW5kbyBdOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSwK
KyAgICBoYXNEYXRhOiBmdW5jdGlvbiggb3duZXIgKSB7CisgICAgICAgIHZhciBjYWNoZSA9IG93
bmVyWyB0aGlzLmV4cGFuZG8gXTsKKyAgICAgICAgcmV0dXJuIGNhY2hlICE9PSB1bmRlZmluZWQg
JiYgIWpRdWVyeS5pc0VtcHR5T2JqZWN0KCBjYWNoZSApOworICAgIH0KK307Cit2YXIgZGF0YVBy
aXYgPSBuZXcgRGF0YSgpOworCit2YXIgZGF0YVVzZXIgPSBuZXcgRGF0YSgpOworCisKKworLy8g
IEltcGxlbWVudGF0aW9uIFN1bW1hcnkKKy8vCisvLyAgMS4gRW5mb3JjZSBBUEkgc3VyZmFjZSBh
bmQgc2VtYW50aWMgY29tcGF0aWJpbGl0eSB3aXRoIDEuOS54IGJyYW5jaAorLy8gIDIuIEltcHJv
dmUgdGhlIG1vZHVsZSdzIG1haW50YWluYWJpbGl0eSBieSByZWR1Y2luZyB0aGUgc3RvcmFnZQor
Ly8gICAgICBwYXRocyB0byBhIHNpbmdsZSBtZWNoYW5pc20uCisvLyAgMy4gVXNlIHRoZSBzYW1l
IHNpbmdsZSBtZWNoYW5pc20gdG8gc3VwcG9ydCAicHJpdmF0ZSIgYW5kICJ1c2VyIiBkYXRhLgor
Ly8gIDQuIF9OZXZlcl8gZXhwb3NlICJwcml2YXRlIiBkYXRhIHRvIHVzZXIgY29kZSAoVE9ETzog
RHJvcCBfZGF0YSwgX3JlbW92ZURhdGEpCisvLyAgNS4gQXZvaWQgZXhwb3NpbmcgaW1wbGVtZW50
YXRpb24gZGV0YWlscyBvbiB1c2VyIG9iamVjdHMgKGVnLiBleHBhbmRvIHByb3BlcnRpZXMpCisv
LyAgNi4gUHJvdmlkZSBhIGNsZWFyIHBhdGggZm9yIGltcGxlbWVudGF0aW9uIHVwZ3JhZGUgdG8g
V2Vha01hcCBpbiAyMDE0CisKK3ZhciByYnJhY2UgPSAvXig/Olx7W1x3XFddKlx9fFxbW1x3XFdd
KlxdKSQvLAorICAgIHJtdWx0aURhc2ggPSAvW0EtWl0vZzsKKworZnVuY3Rpb24gZ2V0RGF0YSgg
ZGF0YSApIHsKKyAgICBpZiAoIGRhdGEgPT09ICJ0cnVlIiApIHsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorCisgICAgaWYgKCBkYXRhID09PSAiZmFsc2UiICkgeworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCBkYXRhID09PSAibnVsbCIgKSB7CisgICAgICAg
IHJldHVybiBudWxsOworICAgIH0KKworICAgIC8vIE9ubHkgY29udmVydCB0byBhIG51bWJlciBp
ZiBpdCBkb2Vzbid0IGNoYW5nZSB0aGUgc3RyaW5nCisgICAgaWYgKCBkYXRhID09PSArZGF0YSAr
ICIiICkgeworICAgICAgICByZXR1cm4gK2RhdGE7CisgICAgfQorCisgICAgaWYgKCByYnJhY2Uu
dGVzdCggZGF0YSApICkgeworICAgICAgICByZXR1cm4gSlNPTi5wYXJzZSggZGF0YSApOworICAg
IH0KKworICAgIHJldHVybiBkYXRhOworfQorCitmdW5jdGlvbiBkYXRhQXR0ciggZWxlbSwga2V5
LCBkYXRhICkgeworICAgIHZhciBuYW1lOworCisgICAgLy8gSWYgbm90aGluZyB3YXMgZm91bmQg
aW50ZXJuYWxseSwgdHJ5IHRvIGZldGNoIGFueQorICAgIC8vIGRhdGEgZnJvbSB0aGUgSFRNTDUg
ZGF0YS0qIGF0dHJpYnV0ZQorICAgIGlmICggZGF0YSA9PT0gdW5kZWZpbmVkICYmIGVsZW0ubm9k
ZVR5cGUgPT09IDEgKSB7CisgICAgICAgIG5hbWUgPSAiZGF0YS0iICsga2V5LnJlcGxhY2UoIHJt
dWx0aURhc2gsICItJCYiICkudG9Mb3dlckNhc2UoKTsKKyAgICAgICAgZGF0YSA9IGVsZW0uZ2V0
QXR0cmlidXRlKCBuYW1lICk7CisKKyAgICAgICAgaWYgKCB0eXBlb2YgZGF0YSA9PT0gInN0cmlu
ZyIgKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIGRhdGEgPSBnZXREYXRh
KCBkYXRhICk7CisgICAgICAgICAgICB9IGNhdGNoICggZSApIHt9CisKKyAgICAgICAgICAgIC8v
IE1ha2Ugc3VyZSB3ZSBzZXQgdGhlIGRhdGEgc28gaXQgaXNuJ3QgY2hhbmdlZCBsYXRlcgorICAg
ICAgICAgICAgZGF0YVVzZXIuc2V0KCBlbGVtLCBrZXksIGRhdGEgKTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIGRhdGEgPSB1bmRlZmluZWQ7CisgICAgICAgIH0KKyAgICB9CisgICAg
cmV0dXJuIGRhdGE7Cit9CisKK2pRdWVyeS5leHRlbmQoIHsKKyAgICBoYXNEYXRhOiBmdW5jdGlv
biggZWxlbSApIHsKKyAgICAgICAgcmV0dXJuIGRhdGFVc2VyLmhhc0RhdGEoIGVsZW0gKSB8fCBk
YXRhUHJpdi5oYXNEYXRhKCBlbGVtICk7CisgICAgfSwKKworICAgIGRhdGE6IGZ1bmN0aW9uKCBl
bGVtLCBuYW1lLCBkYXRhICkgeworICAgICAgICByZXR1cm4gZGF0YVVzZXIuYWNjZXNzKCBlbGVt
LCBuYW1lLCBkYXRhICk7CisgICAgfSwKKworICAgIHJlbW92ZURhdGE6IGZ1bmN0aW9uKCBlbGVt
LCBuYW1lICkgeworICAgICAgICBkYXRhVXNlci5yZW1vdmUoIGVsZW0sIG5hbWUgKTsKKyAgICB9
LAorCisgICAgLy8gVE9ETzogTm93IHRoYXQgYWxsIGNhbGxzIHRvIF9kYXRhIGFuZCBfcmVtb3Zl
RGF0YSBoYXZlIGJlZW4gcmVwbGFjZWQKKyAgICAvLyB3aXRoIGRpcmVjdCBjYWxscyB0byBkYXRh
UHJpdiBtZXRob2RzLCB0aGVzZSBjYW4gYmUgZGVwcmVjYXRlZC4KKyAgICBfZGF0YTogZnVuY3Rp
b24oIGVsZW0sIG5hbWUsIGRhdGEgKSB7CisgICAgICAgIHJldHVybiBkYXRhUHJpdi5hY2Nlc3Mo
IGVsZW0sIG5hbWUsIGRhdGEgKTsKKyAgICB9LAorCisgICAgX3JlbW92ZURhdGE6IGZ1bmN0aW9u
KCBlbGVtLCBuYW1lICkgeworICAgICAgICBkYXRhUHJpdi5yZW1vdmUoIGVsZW0sIG5hbWUgKTsK
KyAgICB9Cit9ICk7CisKK2pRdWVyeS5mbi5leHRlbmQoIHsKKyAgICBkYXRhOiBmdW5jdGlvbigg
a2V5LCB2YWx1ZSApIHsKKyAgICAgICAgdmFyIGksIG5hbWUsIGRhdGEsCisgICAgICAgICAgICBl
bGVtID0gdGhpc1sgMCBdLAorICAgICAgICAgICAgYXR0cnMgPSBlbGVtICYmIGVsZW0uYXR0cmli
dXRlczsKKworICAgICAgICAvLyBHZXRzIGFsbCB2YWx1ZXMKKyAgICAgICAgaWYgKCBrZXkgPT09
IHVuZGVmaW5lZCApIHsKKyAgICAgICAgICAgIGlmICggdGhpcy5sZW5ndGggKSB7CisgICAgICAg
ICAgICAgICAgZGF0YSA9IGRhdGFVc2VyLmdldCggZWxlbSApOworCisgICAgICAgICAgICAgICAg
aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICYmICFkYXRhUHJpdi5nZXQoIGVsZW0sICJoYXNEYXRh
QXR0cnMiICkgKSB7CisgICAgICAgICAgICAgICAgICAgIGkgPSBhdHRycy5sZW5ndGg7CisgICAg
ICAgICAgICAgICAgICAgIHdoaWxlICggaS0tICkgeworCisgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBTdXBwb3J0OiBJRSAxMSBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUg
YXR0cnMgZWxlbWVudHMgY2FuIGJlIG51bGwgKCMxNDg5NCkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICggYXR0cnNbIGkgXSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1l
ID0gYXR0cnNbIGkgXS5uYW1lOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggbmFt
ZS5pbmRleE9mKCAiZGF0YS0iICkgPT09IDAgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG5hbWUgPSBqUXVlcnkuY2FtZWxDYXNlKCBuYW1lLnNsaWNlKCA1ICkgKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUF0dHIoIGVsZW0sIG5hbWUsIGRhdGFbIG5h
bWUgXSApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBkYXRh
UHJpdi5zZXQoIGVsZW0sICJoYXNEYXRhQXR0cnMiLCB0cnVlICk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gZGF0YTsKKyAgICAgICAgfQor
CisgICAgICAgIC8vIFNldHMgbXVsdGlwbGUgdmFsdWVzCisgICAgICAgIGlmICggdHlwZW9mIGtl
eSA9PT0gIm9iamVjdCIgKSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgICAgICBkYXRhVXNlci5zZXQoIHRoaXMsIGtleSApOworICAgICAg
ICAgICAgfSApOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGFjY2VzcyggdGhpcywgZnVu
Y3Rpb24oIHZhbHVlICkgeworICAgICAgICAgICAgdmFyIGRhdGE7CisKKyAgICAgICAgICAgIC8v
IFRoZSBjYWxsaW5nIGpRdWVyeSBvYmplY3QgKGVsZW1lbnQgbWF0Y2hlcykgaXMgbm90IGVtcHR5
CisgICAgICAgICAgICAvLyAoYW5kIHRoZXJlZm9yZSBoYXMgYW4gZWxlbWVudCBhcHBlYXJzIGF0
IHRoaXNbIDAgXSkgYW5kIHRoZQorICAgICAgICAgICAgLy8gYHZhbHVlYCBwYXJhbWV0ZXIgd2Fz
IG5vdCB1bmRlZmluZWQuIEFuIGVtcHR5IGpRdWVyeSBvYmplY3QKKyAgICAgICAgICAgIC8vIHdp
bGwgcmVzdWx0IGluIGB1bmRlZmluZWRgIGZvciBlbGVtID0gdGhpc1sgMCBdIHdoaWNoIHdpbGwK
KyAgICAgICAgICAgIC8vIHRocm93IGFuIGV4Y2VwdGlvbiBpZiBhbiBhdHRlbXB0IHRvIHJlYWQg
YSBkYXRhIGNhY2hlIGlzIG1hZGUuCisgICAgICAgICAgICBpZiAoIGVsZW0gJiYgdmFsdWUgPT09
IHVuZGVmaW5lZCApIHsKKworICAgICAgICAgICAgICAgIC8vIEF0dGVtcHQgdG8gZ2V0IGRhdGEg
ZnJvbSB0aGUgY2FjaGUKKyAgICAgICAgICAgICAgICAvLyBUaGUga2V5IHdpbGwgYWx3YXlzIGJl
IGNhbWVsQ2FzZWQgaW4gRGF0YQorICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhVXNlci5nZXQo
IGVsZW0sIGtleSApOworICAgICAgICAgICAgICAgIGlmICggZGF0YSAhPT0gdW5kZWZpbmVkICkg
eworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF0YTsKKyAgICAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICAvLyBBdHRlbXB0IHRvICJkaXNjb3ZlciIgdGhlIGRhdGEgaW4KKyAg
ICAgICAgICAgICAgICAvLyBIVE1MNSBjdXN0b20gZGF0YS0qIGF0dHJzCisgICAgICAgICAgICAg
ICAgZGF0YSA9IGRhdGFBdHRyKCBlbGVtLCBrZXkgKTsKKyAgICAgICAgICAgICAgICBpZiAoIGRh
dGEgIT09IHVuZGVmaW5lZCApIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGE7Cisg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gV2UgdHJpZWQgcmVhbGx5IGhh
cmQsIGJ1dCB0aGUgZGF0YSBkb2Vzbid0IGV4aXN0LgorICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gU2V0IHRoZSBkYXRhLi4uCisgICAgICAg
ICAgICB0aGlzLmVhY2goIGZ1bmN0aW9uKCkgeworCisgICAgICAgICAgICAgICAgLy8gV2UgYWx3
YXlzIHN0b3JlIHRoZSBjYW1lbENhc2VkIGtleQorICAgICAgICAgICAgICAgIGRhdGFVc2VyLnNl
dCggdGhpcywga2V5LCB2YWx1ZSApOworICAgICAgICAgICAgfSApOworICAgICAgICB9LCBudWxs
LCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDEsIG51bGwsIHRydWUgKTsKKyAgICB9LAorCisg
ICAgcmVtb3ZlRGF0YTogZnVuY3Rpb24oIGtleSApIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZWFj
aCggZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBkYXRhVXNlci5yZW1vdmUoIHRoaXMsIGtleSAp
OworICAgICAgICB9ICk7CisgICAgfQorfSApOworCisKK2pRdWVyeS5leHRlbmQoIHsKKyAgICBx
dWV1ZTogZnVuY3Rpb24oIGVsZW0sIHR5cGUsIGRhdGEgKSB7CisgICAgICAgIHZhciBxdWV1ZTsK
KworICAgICAgICBpZiAoIGVsZW0gKSB7CisgICAgICAgICAgICB0eXBlID0gKCB0eXBlIHx8ICJm
eCIgKSArICJxdWV1ZSI7CisgICAgICAgICAgICBxdWV1ZSA9IGRhdGFQcml2LmdldCggZWxlbSwg
dHlwZSApOworCisgICAgICAgICAgICAvLyBTcGVlZCB1cCBkZXF1ZXVlIGJ5IGdldHRpbmcgb3V0
IHF1aWNrbHkgaWYgdGhpcyBpcyBqdXN0IGEgbG9va3VwCisgICAgICAgICAgICBpZiAoIGRhdGEg
KSB7CisgICAgICAgICAgICAgICAgaWYgKCAhcXVldWUgfHwgalF1ZXJ5LmlzQXJyYXkoIGRhdGEg
KSApIHsKKyAgICAgICAgICAgICAgICAgICAgcXVldWUgPSBkYXRhUHJpdi5hY2Nlc3MoIGVsZW0s
IHR5cGUsIGpRdWVyeS5tYWtlQXJyYXkoIGRhdGEgKSApOworICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgICAgIHF1ZXVlLnB1c2goIGRhdGEgKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gcXVldWUgfHwgW107Cisg
ICAgICAgIH0KKyAgICB9LAorCisgICAgZGVxdWV1ZTogZnVuY3Rpb24oIGVsZW0sIHR5cGUgKSB7
CisgICAgICAgIHR5cGUgPSB0eXBlIHx8ICJmeCI7CisKKyAgICAgICAgdmFyIHF1ZXVlID0galF1
ZXJ5LnF1ZXVlKCBlbGVtLCB0eXBlICksCisgICAgICAgICAgICBzdGFydExlbmd0aCA9IHF1ZXVl
Lmxlbmd0aCwKKyAgICAgICAgICAgIGZuID0gcXVldWUuc2hpZnQoKSwKKyAgICAgICAgICAgIGhv
b2tzID0galF1ZXJ5Ll9xdWV1ZUhvb2tzKCBlbGVtLCB0eXBlICksCisgICAgICAgICAgICBuZXh0
ID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgalF1ZXJ5LmRlcXVldWUoIGVsZW0sIHR5
cGUgKTsKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgLy8gSWYgdGhlIGZ4IHF1ZXVlIGlzIGRl
cXVldWVkLCBhbHdheXMgcmVtb3ZlIHRoZSBwcm9ncmVzcyBzZW50aW5lbAorICAgICAgICBpZiAo
IGZuID09PSAiaW5wcm9ncmVzcyIgKSB7CisgICAgICAgICAgICBmbiA9IHF1ZXVlLnNoaWZ0KCk7
CisgICAgICAgICAgICBzdGFydExlbmd0aC0tOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCBm
biApIHsKKworICAgICAgICAgICAgLy8gQWRkIGEgcHJvZ3Jlc3Mgc2VudGluZWwgdG8gcHJldmVu
dCB0aGUgZnggcXVldWUgZnJvbSBiZWluZworICAgICAgICAgICAgLy8gYXV0b21hdGljYWxseSBk
ZXF1ZXVlZAorICAgICAgICAgICAgaWYgKCB0eXBlID09PSAiZngiICkgeworICAgICAgICAgICAg
ICAgIHF1ZXVlLnVuc2hpZnQoICJpbnByb2dyZXNzIiApOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAvLyBDbGVhciB1cCB0aGUgbGFzdCBxdWV1ZSBzdG9wIGZ1bmN0aW9uCisgICAgICAg
ICAgICBkZWxldGUgaG9va3Muc3RvcDsKKyAgICAgICAgICAgIGZuLmNhbGwoIGVsZW0sIG5leHQs
IGhvb2tzICk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoICFzdGFydExlbmd0aCAmJiBob29r
cyApIHsKKyAgICAgICAgICAgIGhvb2tzLmVtcHR5LmZpcmUoKTsKKyAgICAgICAgfQorICAgIH0s
CisKKyAgICAvLyBOb3QgcHVibGljIC0gZ2VuZXJhdGUgYSBxdWV1ZUhvb2tzIG9iamVjdCwgb3Ig
cmV0dXJuIHRoZSBjdXJyZW50IG9uZQorICAgIF9xdWV1ZUhvb2tzOiBmdW5jdGlvbiggZWxlbSwg
dHlwZSApIHsKKyAgICAgICAgdmFyIGtleSA9IHR5cGUgKyAicXVldWVIb29rcyI7CisgICAgICAg
IHJldHVybiBkYXRhUHJpdi5nZXQoIGVsZW0sIGtleSApIHx8IGRhdGFQcml2LmFjY2VzcyggZWxl
bSwga2V5LCB7CisgICAgICAgICAgICBlbXB0eTogalF1ZXJ5LkNhbGxiYWNrcyggIm9uY2UgbWVt
b3J5IiApLmFkZCggZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgZGF0YVByaXYucmVtb3Zl
KCBlbGVtLCBbIHR5cGUgKyAicXVldWUiLCBrZXkgXSApOworICAgICAgICAgICAgfSApCisgICAg
ICAgIH0gKTsKKyAgICB9Cit9ICk7CisKK2pRdWVyeS5mbi5leHRlbmQoIHsKKyAgICBxdWV1ZTog
ZnVuY3Rpb24oIHR5cGUsIGRhdGEgKSB7CisgICAgICAgIHZhciBzZXR0ZXIgPSAyOworCisgICAg
ICAgIGlmICggdHlwZW9mIHR5cGUgIT09ICJzdHJpbmciICkgeworICAgICAgICAgICAgZGF0YSA9
IHR5cGU7CisgICAgICAgICAgICB0eXBlID0gImZ4IjsKKyAgICAgICAgICAgIHNldHRlci0tOwor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKCBhcmd1bWVudHMubGVuZ3RoIDwgc2V0dGVyICkgewor
ICAgICAgICAgICAgcmV0dXJuIGpRdWVyeS5xdWV1ZSggdGhpc1sgMCBdLCB0eXBlICk7CisgICAg
ICAgIH0KKworICAgICAgICByZXR1cm4gZGF0YSA9PT0gdW5kZWZpbmVkID8KKyAgICAgICAgICAg
IHRoaXMgOgorICAgICAgICAgICAgdGhpcy5lYWNoKCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
ICAgICB2YXIgcXVldWUgPSBqUXVlcnkucXVldWUoIHRoaXMsIHR5cGUsIGRhdGEgKTsKKworICAg
ICAgICAgICAgICAgIC8vIEVuc3VyZSBhIGhvb2tzIGZvciB0aGlzIHF1ZXVlCisgICAgICAgICAg
ICAgICAgalF1ZXJ5Ll9xdWV1ZUhvb2tzKCB0aGlzLCB0eXBlICk7CisKKyAgICAgICAgICAgICAg
ICBpZiAoIHR5cGUgPT09ICJmeCIgJiYgcXVldWVbIDAgXSAhPT0gImlucHJvZ3Jlc3MiICkgewor
ICAgICAgICAgICAgICAgICAgICBqUXVlcnkuZGVxdWV1ZSggdGhpcywgdHlwZSApOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gKTsKKyAgICB9LAorICAgIGRlcXVldWU6IGZ1bmN0
aW9uKCB0eXBlICkgeworICAgICAgICByZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgIGpRdWVyeS5kZXF1ZXVlKCB0aGlzLCB0eXBlICk7CisgICAgICAgIH0gKTsKKyAg
ICB9LAorICAgIGNsZWFyUXVldWU6IGZ1bmN0aW9uKCB0eXBlICkgeworICAgICAgICByZXR1cm4g
dGhpcy5xdWV1ZSggdHlwZSB8fCAiZngiLCBbXSApOworICAgIH0sCisKKyAgICAvLyBHZXQgYSBw
cm9taXNlIHJlc29sdmVkIHdoZW4gcXVldWVzIG9mIGEgY2VydGFpbiB0eXBlCisgICAgLy8gYXJl
IGVtcHRpZWQgKGZ4IGlzIHRoZSB0eXBlIGJ5IGRlZmF1bHQpCisgICAgcHJvbWlzZTogZnVuY3Rp
b24oIHR5cGUsIG9iaiApIHsKKyAgICAgICAgdmFyIHRtcCwKKyAgICAgICAgICAgIGNvdW50ID0g
MSwKKyAgICAgICAgICAgIGRlZmVyID0galF1ZXJ5LkRlZmVycmVkKCksCisgICAgICAgICAgICBl
bGVtZW50cyA9IHRoaXMsCisgICAgICAgICAgICBpID0gdGhpcy5sZW5ndGgsCisgICAgICAgICAg
ICByZXNvbHZlID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgaWYgKCAhKCAtLWNvdW50
ICkgKSB7CisgICAgICAgICAgICAgICAgICAgIGRlZmVyLnJlc29sdmVXaXRoKCBlbGVtZW50cywg
WyBlbGVtZW50cyBdICk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfTsKKworICAg
ICAgICBpZiAoIHR5cGVvZiB0eXBlICE9PSAic3RyaW5nIiApIHsKKyAgICAgICAgICAgIG9iaiA9
IHR5cGU7CisgICAgICAgICAgICB0eXBlID0gdW5kZWZpbmVkOworICAgICAgICB9CisgICAgICAg
IHR5cGUgPSB0eXBlIHx8ICJmeCI7CisKKyAgICAgICAgd2hpbGUgKCBpLS0gKSB7CisgICAgICAg
ICAgICB0bXAgPSBkYXRhUHJpdi5nZXQoIGVsZW1lbnRzWyBpIF0sIHR5cGUgKyAicXVldWVIb29r
cyIgKTsKKyAgICAgICAgICAgIGlmICggdG1wICYmIHRtcC5lbXB0eSApIHsKKyAgICAgICAgICAg
ICAgICBjb3VudCsrOworICAgICAgICAgICAgICAgIHRtcC5lbXB0eS5hZGQoIHJlc29sdmUgKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXNvbHZlKCk7CisgICAgICAgIHJl
dHVybiBkZWZlci5wcm9taXNlKCBvYmogKTsKKyAgICB9Cit9ICk7Cit2YXIgcG51bSA9ICggL1sr
LV0/KD86XGQqXC58KVxkKyg/OltlRV1bKy1dP1xkK3wpLyApLnNvdXJjZTsKKwordmFyIHJjc3NO
dW0gPSBuZXcgUmVnRXhwKCAiXig/OihbKy1dKT18KSgiICsgcG51bSArICIpKFthLXolXSopJCIs
ICJpIiApOworCisKK3ZhciBjc3NFeHBhbmQgPSBbICJUb3AiLCAiUmlnaHQiLCAiQm90dG9tIiwg
IkxlZnQiIF07CisKK3ZhciBpc0hpZGRlbldpdGhpblRyZWUgPSBmdW5jdGlvbiggZWxlbSwgZWwg
KSB7CisKKyAgICAgICAgLy8gaXNIaWRkZW5XaXRoaW5UcmVlIG1pZ2h0IGJlIGNhbGxlZCBmcm9t
IGpRdWVyeSNmaWx0ZXIgZnVuY3Rpb247CisgICAgICAgIC8vIGluIHRoYXQgY2FzZSwgZWxlbWVu
dCB3aWxsIGJlIHNlY29uZCBhcmd1bWVudAorICAgICAgICBlbGVtID0gZWwgfHwgZWxlbTsKKwor
ICAgICAgICAvLyBJbmxpbmUgc3R5bGUgdHJ1bXBzIGFsbAorICAgICAgICByZXR1cm4gZWxlbS5z
dHlsZS5kaXNwbGF5ID09PSAibm9uZSIgfHwKKyAgICAgICAgICAgIGVsZW0uc3R5bGUuZGlzcGxh
eSA9PT0gIiIgJiYKKworICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCBjaGVjayBjb21wdXRlZCBz
dHlsZQorICAgICAgICAgICAgLy8gU3VwcG9ydDogRmlyZWZveCA8PTQzIC0gNDUKKyAgICAgICAg
ICAgIC8vIERpc2Nvbm5lY3RlZCBlbGVtZW50cyBjYW4gaGF2ZSBjb21wdXRlZCBkaXNwbGF5OiBu
b25lLCBzbyBmaXJzdCBjb25maXJtIHRoYXQgZWxlbSBpcworICAgICAgICAgICAgLy8gaW4gdGhl
IGRvY3VtZW50LgorICAgICAgICAgICAgalF1ZXJ5LmNvbnRhaW5zKCBlbGVtLm93bmVyRG9jdW1l
bnQsIGVsZW0gKSAmJgorCisgICAgICAgICAgICBqUXVlcnkuY3NzKCBlbGVtLCAiZGlzcGxheSIg
KSA9PT0gIm5vbmUiOworICAgIH07CisKK3ZhciBzd2FwID0gZnVuY3Rpb24oIGVsZW0sIG9wdGlv
bnMsIGNhbGxiYWNrLCBhcmdzICkgeworICAgIHZhciByZXQsIG5hbWUsCisgICAgICAgIG9sZCA9
IHt9OworCisgICAgLy8gUmVtZW1iZXIgdGhlIG9sZCB2YWx1ZXMsIGFuZCBpbnNlcnQgdGhlIG5l
dyBvbmVzCisgICAgZm9yICggbmFtZSBpbiBvcHRpb25zICkgeworICAgICAgICBvbGRbIG5hbWUg
XSA9IGVsZW0uc3R5bGVbIG5hbWUgXTsKKyAgICAgICAgZWxlbS5zdHlsZVsgbmFtZSBdID0gb3B0
aW9uc1sgbmFtZSBdOworICAgIH0KKworICAgIHJldCA9IGNhbGxiYWNrLmFwcGx5KCBlbGVtLCBh
cmdzIHx8IFtdICk7CisKKyAgICAvLyBSZXZlcnQgdGhlIG9sZCB2YWx1ZXMKKyAgICBmb3IgKCBu
YW1lIGluIG9wdGlvbnMgKSB7CisgICAgICAgIGVsZW0uc3R5bGVbIG5hbWUgXSA9IG9sZFsgbmFt
ZSBdOworICAgIH0KKworICAgIHJldHVybiByZXQ7Cit9OworCisKKworCitmdW5jdGlvbiBhZGp1
c3RDU1MoIGVsZW0sIHByb3AsIHZhbHVlUGFydHMsIHR3ZWVuICkgeworICAgIHZhciBhZGp1c3Rl
ZCwKKyAgICAgICAgc2NhbGUgPSAxLAorICAgICAgICBtYXhJdGVyYXRpb25zID0gMjAsCisgICAg
ICAgIGN1cnJlbnRWYWx1ZSA9IHR3ZWVuID8KKyAgICAgICAgICAgIGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgICAgIHJldHVybiB0d2Vlbi5jdXIoKTsKKyAgICAgICAgICAgIH0gOgorICAgICAg
ICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGpRdWVyeS5jc3MoIGVs
ZW0sIHByb3AsICIiICk7CisgICAgICAgICAgICB9LAorICAgICAgICBpbml0aWFsID0gY3VycmVu
dFZhbHVlKCksCisgICAgICAgIHVuaXQgPSB2YWx1ZVBhcnRzICYmIHZhbHVlUGFydHNbIDMgXSB8
fCAoIGpRdWVyeS5jc3NOdW1iZXJbIHByb3AgXSA/ICIiIDogInB4IiApLAorCisgICAgICAgIC8v
IFN0YXJ0aW5nIHZhbHVlIGNvbXB1dGF0aW9uIGlzIHJlcXVpcmVkIGZvciBwb3RlbnRpYWwgdW5p
dCBtaXNtYXRjaGVzCisgICAgICAgIGluaXRpYWxJblVuaXQgPSAoIGpRdWVyeS5jc3NOdW1iZXJb
IHByb3AgXSB8fCB1bml0ICE9PSAicHgiICYmICtpbml0aWFsICkgJiYKKyAgICAgICAgICAgIHJj
c3NOdW0uZXhlYyggalF1ZXJ5LmNzcyggZWxlbSwgcHJvcCApICk7CisKKyAgICBpZiAoIGluaXRp
YWxJblVuaXQgJiYgaW5pdGlhbEluVW5pdFsgMyBdICE9PSB1bml0ICkgeworCisgICAgICAgIC8v
IFRydXN0IHVuaXRzIHJlcG9ydGVkIGJ5IGpRdWVyeS5jc3MKKyAgICAgICAgdW5pdCA9IHVuaXQg
fHwgaW5pdGlhbEluVW5pdFsgMyBdOworCisgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSB1cGRhdGUg
dGhlIHR3ZWVuIHByb3BlcnRpZXMgbGF0ZXIgb24KKyAgICAgICAgdmFsdWVQYXJ0cyA9IHZhbHVl
UGFydHMgfHwgW107CisKKyAgICAgICAgLy8gSXRlcmF0aXZlbHkgYXBwcm94aW1hdGUgZnJvbSBh
IG5vbnplcm8gc3RhcnRpbmcgcG9pbnQKKyAgICAgICAgaW5pdGlhbEluVW5pdCA9ICtpbml0aWFs
IHx8IDE7CisKKyAgICAgICAgZG8geworCisgICAgICAgICAgICAvLyBJZiBwcmV2aW91cyBpdGVy
YXRpb24gemVyb2VkIG91dCwgZG91YmxlIHVudGlsIHdlIGdldCAqc29tZXRoaW5nKi4KKyAgICAg
ICAgICAgIC8vIFVzZSBzdHJpbmcgZm9yIGRvdWJsaW5nIHNvIHdlIGRvbid0IGFjY2lkZW50YWxs
eSBzZWUgc2NhbGUgYXMgdW5jaGFuZ2VkIGJlbG93CisgICAgICAgICAgICBzY2FsZSA9IHNjYWxl
IHx8ICIuNSI7CisKKyAgICAgICAgICAgIC8vIEFkanVzdCBhbmQgYXBwbHkKKyAgICAgICAgICAg
IGluaXRpYWxJblVuaXQgPSBpbml0aWFsSW5Vbml0IC8gc2NhbGU7CisgICAgICAgICAgICBqUXVl
cnkuc3R5bGUoIGVsZW0sIHByb3AsIGluaXRpYWxJblVuaXQgKyB1bml0ICk7CisKKyAgICAgICAg
Ly8gVXBkYXRlIHNjYWxlLCB0b2xlcmF0aW5nIHplcm8gb3IgTmFOIGZyb20gdHdlZW4uY3VyKCkK
KyAgICAgICAgLy8gQnJlYWsgdGhlIGxvb3AgaWYgc2NhbGUgaXMgdW5jaGFuZ2VkIG9yIHBlcmZl
Y3QsIG9yIGlmIHdlJ3ZlIGp1c3QgaGFkIGVub3VnaC4KKyAgICAgICAgfSB3aGlsZSAoCisgICAg
ICAgICAgICBzY2FsZSAhPT0gKCBzY2FsZSA9IGN1cnJlbnRWYWx1ZSgpIC8gaW5pdGlhbCApICYm
IHNjYWxlICE9PSAxICYmIC0tbWF4SXRlcmF0aW9ucworICAgICAgICApOworICAgIH0KKworICAg
IGlmICggdmFsdWVQYXJ0cyApIHsKKyAgICAgICAgaW5pdGlhbEluVW5pdCA9ICtpbml0aWFsSW5V
bml0IHx8ICtpbml0aWFsIHx8IDA7CisKKyAgICAgICAgLy8gQXBwbHkgcmVsYXRpdmUgb2Zmc2V0
ICgrPS8tPSkgaWYgc3BlY2lmaWVkCisgICAgICAgIGFkanVzdGVkID0gdmFsdWVQYXJ0c1sgMSBd
ID8KKyAgICAgICAgICAgIGluaXRpYWxJblVuaXQgKyAoIHZhbHVlUGFydHNbIDEgXSArIDEgKSAq
IHZhbHVlUGFydHNbIDIgXSA6CisgICAgICAgICAgICArdmFsdWVQYXJ0c1sgMiBdOworICAgICAg
ICBpZiAoIHR3ZWVuICkgeworICAgICAgICAgICAgdHdlZW4udW5pdCA9IHVuaXQ7CisgICAgICAg
ICAgICB0d2Vlbi5zdGFydCA9IGluaXRpYWxJblVuaXQ7CisgICAgICAgICAgICB0d2Vlbi5lbmQg
PSBhZGp1c3RlZDsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gYWRqdXN0ZWQ7Cit9CisK
KwordmFyIGRlZmF1bHREaXNwbGF5TWFwID0ge307CisKK2Z1bmN0aW9uIGdldERlZmF1bHREaXNw
bGF5KCBlbGVtICkgeworICAgIHZhciB0ZW1wLAorICAgICAgICBkb2MgPSBlbGVtLm93bmVyRG9j
dW1lbnQsCisgICAgICAgIG5vZGVOYW1lID0gZWxlbS5ub2RlTmFtZSwKKyAgICAgICAgZGlzcGxh
eSA9IGRlZmF1bHREaXNwbGF5TWFwWyBub2RlTmFtZSBdOworCisgICAgaWYgKCBkaXNwbGF5ICkg
eworICAgICAgICByZXR1cm4gZGlzcGxheTsKKyAgICB9CisKKyAgICB0ZW1wID0gZG9jLmJvZHku
YXBwZW5kQ2hpbGQoIGRvYy5jcmVhdGVFbGVtZW50KCBub2RlTmFtZSApICk7CisgICAgZGlzcGxh
eSA9IGpRdWVyeS5jc3MoIHRlbXAsICJkaXNwbGF5IiApOworCisgICAgdGVtcC5wYXJlbnROb2Rl
LnJlbW92ZUNoaWxkKCB0ZW1wICk7CisKKyAgICBpZiAoIGRpc3BsYXkgPT09ICJub25lIiApIHsK
KyAgICAgICAgZGlzcGxheSA9ICJibG9jayI7CisgICAgfQorICAgIGRlZmF1bHREaXNwbGF5TWFw
WyBub2RlTmFtZSBdID0gZGlzcGxheTsKKworICAgIHJldHVybiBkaXNwbGF5OworfQorCitmdW5j
dGlvbiBzaG93SGlkZSggZWxlbWVudHMsIHNob3cgKSB7CisgICAgdmFyIGRpc3BsYXksIGVsZW0s
CisgICAgICAgIHZhbHVlcyA9IFtdLAorICAgICAgICBpbmRleCA9IDAsCisgICAgICAgIGxlbmd0
aCA9IGVsZW1lbnRzLmxlbmd0aDsKKworICAgIC8vIERldGVybWluZSBuZXcgZGlzcGxheSB2YWx1
ZSBmb3IgZWxlbWVudHMgdGhhdCBuZWVkIHRvIGNoYW5nZQorICAgIGZvciAoIDsgaW5kZXggPCBs
ZW5ndGg7IGluZGV4KysgKSB7CisgICAgICAgIGVsZW0gPSBlbGVtZW50c1sgaW5kZXggXTsKKyAg
ICAgICAgaWYgKCAhZWxlbS5zdHlsZSApIHsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICB9CisKKyAgICAgICAgZGlzcGxheSA9IGVsZW0uc3R5bGUuZGlzcGxheTsKKyAgICAgICAgaWYg
KCBzaG93ICkgeworCisgICAgICAgICAgICAvLyBTaW5jZSB3ZSBmb3JjZSB2aXNpYmlsaXR5IHVw
b24gY2FzY2FkZS1oaWRkZW4gZWxlbWVudHMsIGFuIGltbWVkaWF0ZSAoYW5kIHNsb3cpCisgICAg
ICAgICAgICAvLyBjaGVjayBpcyByZXF1aXJlZCBpbiB0aGlzIGZpcnN0IGxvb3AgdW5sZXNzIHdl
IGhhdmUgYSBub25lbXB0eSBkaXNwbGF5IHZhbHVlIChlaXRoZXIKKyAgICAgICAgICAgIC8vIGlu
bGluZSBvciBhYm91dC10by1iZS1yZXN0b3JlZCkKKyAgICAgICAgICAgIGlmICggZGlzcGxheSA9
PT0gIm5vbmUiICkgeworICAgICAgICAgICAgICAgIHZhbHVlc1sgaW5kZXggXSA9IGRhdGFQcml2
LmdldCggZWxlbSwgImRpc3BsYXkiICkgfHwgbnVsbDsKKyAgICAgICAgICAgICAgICBpZiAoICF2
YWx1ZXNbIGluZGV4IF0gKSB7CisgICAgICAgICAgICAgICAgICAgIGVsZW0uc3R5bGUuZGlzcGxh
eSA9ICIiOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlm
ICggZWxlbS5zdHlsZS5kaXNwbGF5ID09PSAiIiAmJiBpc0hpZGRlbldpdGhpblRyZWUoIGVsZW0g
KSApIHsKKyAgICAgICAgICAgICAgICB2YWx1ZXNbIGluZGV4IF0gPSBnZXREZWZhdWx0RGlzcGxh
eSggZWxlbSApOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
aWYgKCBkaXNwbGF5ICE9PSAibm9uZSIgKSB7CisgICAgICAgICAgICAgICAgdmFsdWVzWyBpbmRl
eCBdID0gIm5vbmUiOworCisgICAgICAgICAgICAgICAgLy8gUmVtZW1iZXIgd2hhdCB3ZSdyZSBv
dmVyd3JpdGluZworICAgICAgICAgICAgICAgIGRhdGFQcml2LnNldCggZWxlbSwgImRpc3BsYXki
LCBkaXNwbGF5ICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBT
ZXQgdGhlIGRpc3BsYXkgb2YgdGhlIGVsZW1lbnRzIGluIGEgc2Vjb25kIGxvb3AgdG8gYXZvaWQg
Y29uc3RhbnQgcmVmbG93CisgICAgZm9yICggaW5kZXggPSAwOyBpbmRleCA8IGxlbmd0aDsgaW5k
ZXgrKyApIHsKKyAgICAgICAgaWYgKCB2YWx1ZXNbIGluZGV4IF0gIT0gbnVsbCApIHsKKyAgICAg
ICAgICAgIGVsZW1lbnRzWyBpbmRleCBdLnN0eWxlLmRpc3BsYXkgPSB2YWx1ZXNbIGluZGV4IF07
CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gZWxlbWVudHM7Cit9CisKK2pRdWVyeS5m
bi5leHRlbmQoIHsKKyAgICBzaG93OiBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHNob3dI
aWRlKCB0aGlzLCB0cnVlICk7CisgICAgfSwKKyAgICBoaWRlOiBmdW5jdGlvbigpIHsKKyAgICAg
ICAgcmV0dXJuIHNob3dIaWRlKCB0aGlzICk7CisgICAgfSwKKyAgICB0b2dnbGU6IGZ1bmN0aW9u
KCBzdGF0ZSApIHsKKyAgICAgICAgaWYgKCB0eXBlb2Ygc3RhdGUgPT09ICJib29sZWFuIiApIHsK
KyAgICAgICAgICAgIHJldHVybiBzdGF0ZSA/IHRoaXMuc2hvdygpIDogdGhpcy5oaWRlKCk7Cisg
ICAgICAgIH0KKworICAgICAgICByZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgIGlmICggaXNIaWRkZW5XaXRoaW5UcmVlKCB0aGlzICkgKSB7CisgICAgICAgICAgICAg
ICAgalF1ZXJ5KCB0aGlzICkuc2hvdygpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBqUXVlcnkoIHRoaXMgKS5oaWRlKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0g
KTsKKyAgICB9Cit9ICk7Cit2YXIgcmNoZWNrYWJsZVR5cGUgPSAoIC9eKD86Y2hlY2tib3h8cmFk
aW8pJC9pICk7CisKK3ZhciBydGFnTmFtZSA9ICggLzwoW2Etel1bXlwvXDA+XHgyMFx0XHJcblxm
XSspL2kgKTsKKwordmFyIHJzY3JpcHRUeXBlID0gKCAvXiR8XC8oPzpqYXZhfGVjbWEpc2NyaXB0
L2kgKTsKKworCisKKy8vIFdlIGhhdmUgdG8gY2xvc2UgdGhlc2UgdGFncyB0byBzdXBwb3J0IFhI
VE1MICgjMTMyMDApCit2YXIgd3JhcE1hcCA9IHsKKworICAgIC8vIFN1cHBvcnQ6IElFIDw9OSBv
bmx5CisgICAgb3B0aW9uOiBbIDEsICI8c2VsZWN0IG11bHRpcGxlPSdtdWx0aXBsZSc+IiwgIjwv
c2VsZWN0PiIgXSwKKworICAgIC8vIFhIVE1MIHBhcnNlcnMgZG8gbm90IG1hZ2ljYWxseSBpbnNl
cnQgZWxlbWVudHMgaW4gdGhlCisgICAgLy8gc2FtZSB3YXkgdGhhdCB0YWcgc291cCBwYXJzZXJz
IGRvLiBTbyB3ZSBjYW5ub3Qgc2hvcnRlbgorICAgIC8vIHRoaXMgYnkgb21pdHRpbmcgPHRib2R5
PiBvciBvdGhlciByZXF1aXJlZCBlbGVtZW50cy4KKyAgICB0aGVhZDogWyAxLCAiPHRhYmxlPiIs
ICI8L3RhYmxlPiIgXSwKKyAgICBjb2w6IFsgMiwgIjx0YWJsZT48Y29sZ3JvdXA+IiwgIjwvY29s
Z3JvdXA+PC90YWJsZT4iIF0sCisgICAgdHI6IFsgMiwgIjx0YWJsZT48dGJvZHk+IiwgIjwvdGJv
ZHk+PC90YWJsZT4iIF0sCisgICAgdGQ6IFsgMywgIjx0YWJsZT48dGJvZHk+PHRyPiIsICI8L3Ry
PjwvdGJvZHk+PC90YWJsZT4iIF0sCisKKyAgICBfZGVmYXVsdDogWyAwLCAiIiwgIiIgXQorfTsK
KworLy8gU3VwcG9ydDogSUUgPD05IG9ubHkKK3dyYXBNYXAub3B0Z3JvdXAgPSB3cmFwTWFwLm9w
dGlvbjsKKword3JhcE1hcC50Ym9keSA9IHdyYXBNYXAudGZvb3QgPSB3cmFwTWFwLmNvbGdyb3Vw
ID0gd3JhcE1hcC5jYXB0aW9uID0gd3JhcE1hcC50aGVhZDsKK3dyYXBNYXAudGggPSB3cmFwTWFw
LnRkOworCisKK2Z1bmN0aW9uIGdldEFsbCggY29udGV4dCwgdGFnICkgeworCisgICAgLy8gU3Vw
cG9ydDogSUUgPD05IC0gMTEgb25seQorICAgIC8vIFVzZSB0eXBlb2YgdG8gYXZvaWQgemVyby1h
cmd1bWVudCBtZXRob2QgaW52b2NhdGlvbiBvbiBob3N0IG9iamVjdHMgKCMxNTE1MSkKKyAgICB2
YXIgcmV0OworCisgICAgaWYgKCB0eXBlb2YgY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSAh
PT0gInVuZGVmaW5lZCIgKSB7CisgICAgICAgIHJldCA9IGNvbnRleHQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoIHRhZyB8fCAiKiIgKTsKKworICAgIH0gZWxzZSBpZiAoIHR5cGVvZiBjb250ZXh0LnF1
ZXJ5U2VsZWN0b3JBbGwgIT09ICJ1bmRlZmluZWQiICkgeworICAgICAgICByZXQgPSBjb250ZXh0
LnF1ZXJ5U2VsZWN0b3JBbGwoIHRhZyB8fCAiKiIgKTsKKworICAgIH0gZWxzZSB7CisgICAgICAg
IHJldCA9IFtdOworICAgIH0KKworICAgIGlmICggdGFnID09PSB1bmRlZmluZWQgfHwgdGFnICYm
IGpRdWVyeS5ub2RlTmFtZSggY29udGV4dCwgdGFnICkgKSB7CisgICAgICAgIHJldHVybiBqUXVl
cnkubWVyZ2UoIFsgY29udGV4dCBdLCByZXQgKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmV0Owor
fQorCisKKy8vIE1hcmsgc2NyaXB0cyBhcyBoYXZpbmcgYWxyZWFkeSBiZWVuIGV2YWx1YXRlZAor
ZnVuY3Rpb24gc2V0R2xvYmFsRXZhbCggZWxlbXMsIHJlZkVsZW1lbnRzICkgeworICAgIHZhciBp
ID0gMCwKKyAgICAgICAgbCA9IGVsZW1zLmxlbmd0aDsKKworICAgIGZvciAoIDsgaSA8IGw7IGkr
KyApIHsKKyAgICAgICAgZGF0YVByaXYuc2V0KAorICAgICAgICAgICAgZWxlbXNbIGkgXSwKKyAg
ICAgICAgICAgICJnbG9iYWxFdmFsIiwKKyAgICAgICAgICAgICFyZWZFbGVtZW50cyB8fCBkYXRh
UHJpdi5nZXQoIHJlZkVsZW1lbnRzWyBpIF0sICJnbG9iYWxFdmFsIiApCisgICAgICAgICk7Cisg
ICAgfQorfQorCisKK3ZhciByaHRtbCA9IC88fCYjP1x3KzsvOworCitmdW5jdGlvbiBidWlsZEZy
YWdtZW50KCBlbGVtcywgY29udGV4dCwgc2NyaXB0cywgc2VsZWN0aW9uLCBpZ25vcmVkICkgewor
ICAgIHZhciBlbGVtLCB0bXAsIHRhZywgd3JhcCwgY29udGFpbnMsIGosCisgICAgICAgIGZyYWdt
ZW50ID0gY29udGV4dC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksCisgICAgICAgIG5vZGVzID0g
W10sCisgICAgICAgIGkgPSAwLAorICAgICAgICBsID0gZWxlbXMubGVuZ3RoOworCisgICAgZm9y
ICggOyBpIDwgbDsgaSsrICkgeworICAgICAgICBlbGVtID0gZWxlbXNbIGkgXTsKKworICAgICAg
ICBpZiAoIGVsZW0gfHwgZWxlbSA9PT0gMCApIHsKKworICAgICAgICAgICAgLy8gQWRkIG5vZGVz
IGRpcmVjdGx5CisgICAgICAgICAgICBpZiAoIGpRdWVyeS50eXBlKCBlbGVtICkgPT09ICJvYmpl
Y3QiICkgeworCisgICAgICAgICAgICAgICAgLy8gU3VwcG9ydDogQW5kcm9pZCA8PTQuMCBvbmx5
LCBQaGFudG9tSlMgMSBvbmx5CisgICAgICAgICAgICAgICAgLy8gcHVzaC5hcHBseShfLCBhcnJh
eWxpa2UpIHRocm93cyBvbiBhbmNpZW50IFdlYktpdAorICAgICAgICAgICAgICAgIGpRdWVyeS5t
ZXJnZSggbm9kZXMsIGVsZW0ubm9kZVR5cGUgPyBbIGVsZW0gXSA6IGVsZW0gKTsKKworICAgICAg
ICAgICAgLy8gQ29udmVydCBub24taHRtbCBpbnRvIGEgdGV4dCBub2RlCisgICAgICAgICAgICB9
IGVsc2UgaWYgKCAhcmh0bWwudGVzdCggZWxlbSApICkgeworICAgICAgICAgICAgICAgIG5vZGVz
LnB1c2goIGNvbnRleHQuY3JlYXRlVGV4dE5vZGUoIGVsZW0gKSApOworCisgICAgICAgICAgICAv
LyBDb252ZXJ0IGh0bWwgaW50byBET00gbm9kZXMKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgdG1wID0gdG1wIHx8IGZyYWdtZW50LmFwcGVuZENoaWxkKCBjb250ZXh0LmNy
ZWF0ZUVsZW1lbnQoICJkaXYiICkgKTsKKworICAgICAgICAgICAgICAgIC8vIERlc2VyaWFsaXpl
IGEgc3RhbmRhcmQgcmVwcmVzZW50YXRpb24KKyAgICAgICAgICAgICAgICB0YWcgPSAoIHJ0YWdO
YW1lLmV4ZWMoIGVsZW0gKSB8fCBbICIiLCAiIiBdIClbIDEgXS50b0xvd2VyQ2FzZSgpOworICAg
ICAgICAgICAgICAgIHdyYXAgPSB3cmFwTWFwWyB0YWcgXSB8fCB3cmFwTWFwLl9kZWZhdWx0Owor
ICAgICAgICAgICAgICAgIHRtcC5pbm5lckhUTUwgPSB3cmFwWyAxIF0gKyBqUXVlcnkuaHRtbFBy
ZWZpbHRlciggZWxlbSApICsgd3JhcFsgMiBdOworCisgICAgICAgICAgICAgICAgLy8gRGVzY2Vu
ZCB0aHJvdWdoIHdyYXBwZXJzIHRvIHRoZSByaWdodCBjb250ZW50CisgICAgICAgICAgICAgICAg
aiA9IHdyYXBbIDAgXTsKKyAgICAgICAgICAgICAgICB3aGlsZSAoIGotLSApIHsKKyAgICAgICAg
ICAgICAgICAgICAgdG1wID0gdG1wLmxhc3RDaGlsZDsKKyAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICAvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4wIG9ubHksIFBoYW50b21KUyAx
IG9ubHkKKyAgICAgICAgICAgICAgICAvLyBwdXNoLmFwcGx5KF8sIGFycmF5bGlrZSkgdGhyb3dz
IG9uIGFuY2llbnQgV2ViS2l0CisgICAgICAgICAgICAgICAgalF1ZXJ5Lm1lcmdlKCBub2Rlcywg
dG1wLmNoaWxkTm9kZXMgKTsKKworICAgICAgICAgICAgICAgIC8vIFJlbWVtYmVyIHRoZSB0b3At
bGV2ZWwgY29udGFpbmVyCisgICAgICAgICAgICAgICAgdG1wID0gZnJhZ21lbnQuZmlyc3RDaGls
ZDsKKworICAgICAgICAgICAgICAgIC8vIEVuc3VyZSB0aGUgY3JlYXRlZCBub2RlcyBhcmUgb3Jw
aGFuZWQgKCMxMjM5MikKKyAgICAgICAgICAgICAgICB0bXAudGV4dENvbnRlbnQgPSAiIjsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFJlbW92ZSB3cmFwcGVyIGZy
b20gZnJhZ21lbnQKKyAgICBmcmFnbWVudC50ZXh0Q29udGVudCA9ICIiOworCisgICAgaSA9IDA7
CisgICAgd2hpbGUgKCAoIGVsZW0gPSBub2Rlc1sgaSsrIF0gKSApIHsKKworICAgICAgICAvLyBT
a2lwIGVsZW1lbnRzIGFscmVhZHkgaW4gdGhlIGNvbnRleHQgY29sbGVjdGlvbiAodHJhYy00MDg3
KQorICAgICAgICBpZiAoIHNlbGVjdGlvbiAmJiBqUXVlcnkuaW5BcnJheSggZWxlbSwgc2VsZWN0
aW9uICkgPiAtMSApIHsKKyAgICAgICAgICAgIGlmICggaWdub3JlZCApIHsKKyAgICAgICAgICAg
ICAgICBpZ25vcmVkLnB1c2goIGVsZW0gKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgY29udGFpbnMgPSBqUXVlcnkuY29udGFpbnMo
IGVsZW0ub3duZXJEb2N1bWVudCwgZWxlbSApOworCisgICAgICAgIC8vIEFwcGVuZCB0byBmcmFn
bWVudAorICAgICAgICB0bXAgPSBnZXRBbGwoIGZyYWdtZW50LmFwcGVuZENoaWxkKCBlbGVtICks
ICJzY3JpcHQiICk7CisKKyAgICAgICAgLy8gUHJlc2VydmUgc2NyaXB0IGV2YWx1YXRpb24gaGlz
dG9yeQorICAgICAgICBpZiAoIGNvbnRhaW5zICkgeworICAgICAgICAgICAgc2V0R2xvYmFsRXZh
bCggdG1wICk7CisgICAgICAgIH0KKworICAgICAgICAvLyBDYXB0dXJlIGV4ZWN1dGFibGVzCisg
ICAgICAgIGlmICggc2NyaXB0cyApIHsKKyAgICAgICAgICAgIGogPSAwOworICAgICAgICAgICAg
d2hpbGUgKCAoIGVsZW0gPSB0bXBbIGorKyBdICkgKSB7CisgICAgICAgICAgICAgICAgaWYgKCBy
c2NyaXB0VHlwZS50ZXN0KCBlbGVtLnR5cGUgfHwgIiIgKSApIHsKKyAgICAgICAgICAgICAgICAg
ICAgc2NyaXB0cy5wdXNoKCBlbGVtICk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGZyYWdtZW50OworfQorCisKKyggZnVu
Y3Rpb24oKSB7CisgICAgdmFyIGZyYWdtZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFn
bWVudCgpLAorICAgICAgICBkaXYgPSBmcmFnbWVudC5hcHBlbmRDaGlsZCggZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCggImRpdiIgKSApLAorICAgICAgICBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoICJpbnB1dCIgKTsKKworICAgIC8vIFN1cHBvcnQ6IEFuZHJvaWQgNC4wIC0gNC4zIG9u
bHkKKyAgICAvLyBDaGVjayBzdGF0ZSBsb3N0IGlmIHRoZSBuYW1lIGlzIHNldCAoIzExMjE3KQor
ICAgIC8vIFN1cHBvcnQ6IFdpbmRvd3MgV2ViIEFwcHMgKFdXQSkKKyAgICAvLyBgbmFtZWAgYW5k
IGB0eXBlYCBtdXN0IHVzZSAuc2V0QXR0cmlidXRlIGZvciBXV0EgKCMxNDkwMSkKKyAgICBpbnB1
dC5zZXRBdHRyaWJ1dGUoICJ0eXBlIiwgInJhZGlvIiApOworICAgIGlucHV0LnNldEF0dHJpYnV0
ZSggImNoZWNrZWQiLCAiY2hlY2tlZCIgKTsKKyAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoICJuYW1l
IiwgInQiICk7CisKKyAgICBkaXYuYXBwZW5kQ2hpbGQoIGlucHV0ICk7CisKKyAgICAvLyBTdXBw
b3J0OiBBbmRyb2lkIDw9NC4xIG9ubHkKKyAgICAvLyBPbGRlciBXZWJLaXQgZG9lc24ndCBjbG9u
ZSBjaGVja2VkIHN0YXRlIGNvcnJlY3RseSBpbiBmcmFnbWVudHMKKyAgICBzdXBwb3J0LmNoZWNr
Q2xvbmUgPSBkaXYuY2xvbmVOb2RlKCB0cnVlICkuY2xvbmVOb2RlKCB0cnVlICkubGFzdENoaWxk
LmNoZWNrZWQ7CisKKyAgICAvLyBTdXBwb3J0OiBJRSA8PTExIG9ubHkKKyAgICAvLyBNYWtlIHN1
cmUgdGV4dGFyZWEgKGFuZCBjaGVja2JveCkgZGVmYXVsdFZhbHVlIGlzIHByb3Blcmx5IGNsb25l
ZAorICAgIGRpdi5pbm5lckhUTUwgPSAiPHRleHRhcmVhPng8L3RleHRhcmVhPiI7CisgICAgc3Vw
cG9ydC5ub0Nsb25lQ2hlY2tlZCA9ICEhZGl2LmNsb25lTm9kZSggdHJ1ZSApLmxhc3RDaGlsZC5k
ZWZhdWx0VmFsdWU7Cit9ICkoKTsKK3ZhciBkb2N1bWVudEVsZW1lbnQgPSBkb2N1bWVudC5kb2N1
bWVudEVsZW1lbnQ7CisKKworCit2YXIKKyAgICBya2V5RXZlbnQgPSAvXmtleS8sCisgICAgcm1v
dXNlRXZlbnQgPSAvXig/Om1vdXNlfHBvaW50ZXJ8Y29udGV4dG1lbnV8ZHJhZ3xkcm9wKXxjbGlj
ay8sCisgICAgcnR5cGVuYW1lc3BhY2UgPSAvXihbXi5dKikoPzpcLiguKyl8KS87CisKK2Z1bmN0
aW9uIHJldHVyblRydWUoKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Z1bmN0aW9uIHJldHVy
bkZhbHNlKCkgeworICAgIHJldHVybiBmYWxzZTsKK30KKworLy8gU3VwcG9ydDogSUUgPD05IG9u
bHkKKy8vIFNlZSAjMTMzOTMgZm9yIG1vcmUgaW5mbworZnVuY3Rpb24gc2FmZUFjdGl2ZUVsZW1l
bnQoKSB7CisgICAgdHJ5IHsKKyAgICAgICAgcmV0dXJuIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7
CisgICAgfSBjYXRjaCAoIGVyciApIHsgfQorfQorCitmdW5jdGlvbiBvbiggZWxlbSwgdHlwZXMs
IHNlbGVjdG9yLCBkYXRhLCBmbiwgb25lICkgeworICAgIHZhciBvcmlnRm4sIHR5cGU7CisKKyAg
ICAvLyBUeXBlcyBjYW4gYmUgYSBtYXAgb2YgdHlwZXMvaGFuZGxlcnMKKyAgICBpZiAoIHR5cGVv
ZiB0eXBlcyA9PT0gIm9iamVjdCIgKSB7CisKKyAgICAgICAgLy8gKCB0eXBlcy1PYmplY3QsIHNl
bGVjdG9yLCBkYXRhICkKKyAgICAgICAgaWYgKCB0eXBlb2Ygc2VsZWN0b3IgIT09ICJzdHJpbmci
ICkgeworCisgICAgICAgICAgICAvLyAoIHR5cGVzLU9iamVjdCwgZGF0YSApCisgICAgICAgICAg
ICBkYXRhID0gZGF0YSB8fCBzZWxlY3RvcjsKKyAgICAgICAgICAgIHNlbGVjdG9yID0gdW5kZWZp
bmVkOworICAgICAgICB9CisgICAgICAgIGZvciAoIHR5cGUgaW4gdHlwZXMgKSB7CisgICAgICAg
ICAgICBvbiggZWxlbSwgdHlwZSwgc2VsZWN0b3IsIGRhdGEsIHR5cGVzWyB0eXBlIF0sIG9uZSAp
OworICAgICAgICB9CisgICAgICAgIHJldHVybiBlbGVtOworICAgIH0KKworICAgIGlmICggZGF0
YSA9PSBudWxsICYmIGZuID09IG51bGwgKSB7CisKKyAgICAgICAgLy8gKCB0eXBlcywgZm4gKQor
ICAgICAgICBmbiA9IHNlbGVjdG9yOworICAgICAgICBkYXRhID0gc2VsZWN0b3IgPSB1bmRlZmlu
ZWQ7CisgICAgfSBlbHNlIGlmICggZm4gPT0gbnVsbCApIHsKKyAgICAgICAgaWYgKCB0eXBlb2Yg
c2VsZWN0b3IgPT09ICJzdHJpbmciICkgeworCisgICAgICAgICAgICAvLyAoIHR5cGVzLCBzZWxl
Y3RvciwgZm4gKQorICAgICAgICAgICAgZm4gPSBkYXRhOworICAgICAgICAgICAgZGF0YSA9IHVu
ZGVmaW5lZDsKKyAgICAgICAgfSBlbHNlIHsKKworICAgICAgICAgICAgLy8gKCB0eXBlcywgZGF0
YSwgZm4gKQorICAgICAgICAgICAgZm4gPSBkYXRhOworICAgICAgICAgICAgZGF0YSA9IHNlbGVj
dG9yOworICAgICAgICAgICAgc2VsZWN0b3IgPSB1bmRlZmluZWQ7CisgICAgICAgIH0KKyAgICB9
CisgICAgaWYgKCBmbiA9PT0gZmFsc2UgKSB7CisgICAgICAgIGZuID0gcmV0dXJuRmFsc2U7Cisg
ICAgfSBlbHNlIGlmICggIWZuICkgeworICAgICAgICByZXR1cm4gZWxlbTsKKyAgICB9CisKKyAg
ICBpZiAoIG9uZSA9PT0gMSApIHsKKyAgICAgICAgb3JpZ0ZuID0gZm47CisgICAgICAgIGZuID0g
ZnVuY3Rpb24oIGV2ZW50ICkgeworCisgICAgICAgICAgICAvLyBDYW4gdXNlIGFuIGVtcHR5IHNl
dCwgc2luY2UgZXZlbnQgY29udGFpbnMgdGhlIGluZm8KKyAgICAgICAgICAgIGpRdWVyeSgpLm9m
ZiggZXZlbnQgKTsKKyAgICAgICAgICAgIHJldHVybiBvcmlnRm4uYXBwbHkoIHRoaXMsIGFyZ3Vt
ZW50cyApOworICAgICAgICB9OworCisgICAgICAgIC8vIFVzZSBzYW1lIGd1aWQgc28gY2FsbGVy
IGNhbiByZW1vdmUgdXNpbmcgb3JpZ0ZuCisgICAgICAgIGZuLmd1aWQgPSBvcmlnRm4uZ3VpZCB8
fCAoIG9yaWdGbi5ndWlkID0galF1ZXJ5Lmd1aWQrKyApOworICAgIH0KKyAgICByZXR1cm4gZWxl
bS5lYWNoKCBmdW5jdGlvbigpIHsKKyAgICAgICAgalF1ZXJ5LmV2ZW50LmFkZCggdGhpcywgdHlw
ZXMsIGZuLCBkYXRhLCBzZWxlY3RvciApOworICAgIH0gKTsKK30KKworLyoKKyAqIEhlbHBlciBm
dW5jdGlvbnMgZm9yIG1hbmFnaW5nIGV2ZW50cyAtLSBub3QgcGFydCBvZiB0aGUgcHVibGljIGlu
dGVyZmFjZS4KKyAqIFByb3BzIHRvIERlYW4gRWR3YXJkcycgYWRkRXZlbnQgbGlicmFyeSBmb3Ig
bWFueSBvZiB0aGUgaWRlYXMuCisgKi8KK2pRdWVyeS5ldmVudCA9IHsKKworICAgIGdsb2JhbDog
e30sCisKKyAgICBhZGQ6IGZ1bmN0aW9uKCBlbGVtLCB0eXBlcywgaGFuZGxlciwgZGF0YSwgc2Vs
ZWN0b3IgKSB7CisKKyAgICAgICAgdmFyIGhhbmRsZU9iakluLCBldmVudEhhbmRsZSwgdG1wLAor
ICAgICAgICAgICAgZXZlbnRzLCB0LCBoYW5kbGVPYmosCisgICAgICAgICAgICBzcGVjaWFsLCBo
YW5kbGVycywgdHlwZSwgbmFtZXNwYWNlcywgb3JpZ1R5cGUsCisgICAgICAgICAgICBlbGVtRGF0
YSA9IGRhdGFQcml2LmdldCggZWxlbSApOworCisgICAgICAgIC8vIERvbid0IGF0dGFjaCBldmVu
dHMgdG8gbm9EYXRhIG9yIHRleHQvY29tbWVudCBub2RlcyAoYnV0IGFsbG93IHBsYWluIG9iamVj
dHMpCisgICAgICAgIGlmICggIWVsZW1EYXRhICkgeworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgLy8gQ2FsbGVyIGNhbiBwYXNzIGluIGFuIG9iamVjdCBvZiBjdXN0
b20gZGF0YSBpbiBsaWV1IG9mIHRoZSBoYW5kbGVyCisgICAgICAgIGlmICggaGFuZGxlci5oYW5k
bGVyICkgeworICAgICAgICAgICAgaGFuZGxlT2JqSW4gPSBoYW5kbGVyOworICAgICAgICAgICAg
aGFuZGxlciA9IGhhbmRsZU9iakluLmhhbmRsZXI7CisgICAgICAgICAgICBzZWxlY3RvciA9IGhh
bmRsZU9iakluLnNlbGVjdG9yOworICAgICAgICB9CisKKyAgICAgICAgLy8gRW5zdXJlIHRoYXQg
aW52YWxpZCBzZWxlY3RvcnMgdGhyb3cgZXhjZXB0aW9ucyBhdCBhdHRhY2ggdGltZQorICAgICAg
ICAvLyBFdmFsdWF0ZSBhZ2FpbnN0IGRvY3VtZW50RWxlbWVudCBpbiBjYXNlIGVsZW0gaXMgYSBu
b24tZWxlbWVudCBub2RlIChlLmcuLCBkb2N1bWVudCkKKyAgICAgICAgaWYgKCBzZWxlY3RvciAp
IHsKKyAgICAgICAgICAgIGpRdWVyeS5maW5kLm1hdGNoZXNTZWxlY3RvciggZG9jdW1lbnRFbGVt
ZW50LCBzZWxlY3RvciApOworICAgICAgICB9CisKKyAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQg
dGhlIGhhbmRsZXIgaGFzIGEgdW5pcXVlIElELCB1c2VkIHRvIGZpbmQvcmVtb3ZlIGl0IGxhdGVy
CisgICAgICAgIGlmICggIWhhbmRsZXIuZ3VpZCApIHsKKyAgICAgICAgICAgIGhhbmRsZXIuZ3Vp
ZCA9IGpRdWVyeS5ndWlkKys7CisgICAgICAgIH0KKworICAgICAgICAvLyBJbml0IHRoZSBlbGVt
ZW50J3MgZXZlbnQgc3RydWN0dXJlIGFuZCBtYWluIGhhbmRsZXIsIGlmIHRoaXMgaXMgdGhlIGZp
cnN0CisgICAgICAgIGlmICggISggZXZlbnRzID0gZWxlbURhdGEuZXZlbnRzICkgKSB7CisgICAg
ICAgICAgICBldmVudHMgPSBlbGVtRGF0YS5ldmVudHMgPSB7fTsKKyAgICAgICAgfQorICAgICAg
ICBpZiAoICEoIGV2ZW50SGFuZGxlID0gZWxlbURhdGEuaGFuZGxlICkgKSB7CisgICAgICAgICAg
ICBldmVudEhhbmRsZSA9IGVsZW1EYXRhLmhhbmRsZSA9IGZ1bmN0aW9uKCBlICkgeworCisgICAg
ICAgICAgICAgICAgLy8gRGlzY2FyZCB0aGUgc2Vjb25kIGV2ZW50IG9mIGEgalF1ZXJ5LmV2ZW50
LnRyaWdnZXIoKSBhbmQKKyAgICAgICAgICAgICAgICAvLyB3aGVuIGFuIGV2ZW50IGlzIGNhbGxl
ZCBhZnRlciBhIHBhZ2UgaGFzIHVubG9hZGVkCisgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVv
ZiBqUXVlcnkgIT09ICJ1bmRlZmluZWQiICYmIGpRdWVyeS5ldmVudC50cmlnZ2VyZWQgIT09IGUu
dHlwZSA/CisgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5ldmVudC5kaXNwYXRjaC5hcHBseSgg
ZWxlbSwgYXJndW1lbnRzICkgOiB1bmRlZmluZWQ7CisgICAgICAgICAgICB9OworICAgICAgICB9
CisKKyAgICAgICAgLy8gSGFuZGxlIG11bHRpcGxlIGV2ZW50cyBzZXBhcmF0ZWQgYnkgYSBzcGFj
ZQorICAgICAgICB0eXBlcyA9ICggdHlwZXMgfHwgIiIgKS5tYXRjaCggcm5vdGh0bWx3aGl0ZSAp
IHx8IFsgIiIgXTsKKyAgICAgICAgdCA9IHR5cGVzLmxlbmd0aDsKKyAgICAgICAgd2hpbGUgKCB0
LS0gKSB7CisgICAgICAgICAgICB0bXAgPSBydHlwZW5hbWVzcGFjZS5leGVjKCB0eXBlc1sgdCBd
ICkgfHwgW107CisgICAgICAgICAgICB0eXBlID0gb3JpZ1R5cGUgPSB0bXBbIDEgXTsKKyAgICAg
ICAgICAgIG5hbWVzcGFjZXMgPSAoIHRtcFsgMiBdIHx8ICIiICkuc3BsaXQoICIuIiApLnNvcnQo
KTsKKworICAgICAgICAgICAgLy8gVGhlcmUgKm11c3QqIGJlIGEgdHlwZSwgbm8gYXR0YWNoaW5n
IG5hbWVzcGFjZS1vbmx5IGhhbmRsZXJzCisgICAgICAgICAgICBpZiAoICF0eXBlICkgeworICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBJ
ZiBldmVudCBjaGFuZ2VzIGl0cyB0eXBlLCB1c2UgdGhlIHNwZWNpYWwgZXZlbnQgaGFuZGxlcnMg
Zm9yIHRoZSBjaGFuZ2VkIHR5cGUKKyAgICAgICAgICAgIHNwZWNpYWwgPSBqUXVlcnkuZXZlbnQu
c3BlY2lhbFsgdHlwZSBdIHx8IHt9OworCisgICAgICAgICAgICAvLyBJZiBzZWxlY3RvciBkZWZp
bmVkLCBkZXRlcm1pbmUgc3BlY2lhbCBldmVudCBhcGkgdHlwZSwgb3RoZXJ3aXNlIGdpdmVuIHR5
cGUKKyAgICAgICAgICAgIHR5cGUgPSAoIHNlbGVjdG9yID8gc3BlY2lhbC5kZWxlZ2F0ZVR5cGUg
OiBzcGVjaWFsLmJpbmRUeXBlICkgfHwgdHlwZTsKKworICAgICAgICAgICAgLy8gVXBkYXRlIHNw
ZWNpYWwgYmFzZWQgb24gbmV3bHkgcmVzZXQgdHlwZQorICAgICAgICAgICAgc3BlY2lhbCA9IGpR
dWVyeS5ldmVudC5zcGVjaWFsWyB0eXBlIF0gfHwge307CisKKyAgICAgICAgICAgIC8vIGhhbmRs
ZU9iaiBpcyBwYXNzZWQgdG8gYWxsIGV2ZW50IGhhbmRsZXJzCisgICAgICAgICAgICBoYW5kbGVP
YmogPSBqUXVlcnkuZXh0ZW5kKCB7CisgICAgICAgICAgICAgICAgdHlwZTogdHlwZSwKKyAgICAg
ICAgICAgICAgICBvcmlnVHlwZTogb3JpZ1R5cGUsCisgICAgICAgICAgICAgICAgZGF0YTogZGF0
YSwKKyAgICAgICAgICAgICAgICBoYW5kbGVyOiBoYW5kbGVyLAorICAgICAgICAgICAgICAgIGd1
aWQ6IGhhbmRsZXIuZ3VpZCwKKyAgICAgICAgICAgICAgICBzZWxlY3Rvcjogc2VsZWN0b3IsCisg
ICAgICAgICAgICAgICAgbmVlZHNDb250ZXh0OiBzZWxlY3RvciAmJiBqUXVlcnkuZXhwci5tYXRj
aC5uZWVkc0NvbnRleHQudGVzdCggc2VsZWN0b3IgKSwKKyAgICAgICAgICAgICAgICBuYW1lc3Bh
Y2U6IG5hbWVzcGFjZXMuam9pbiggIi4iICkKKyAgICAgICAgICAgIH0sIGhhbmRsZU9iakluICk7
CisKKyAgICAgICAgICAgIC8vIEluaXQgdGhlIGV2ZW50IGhhbmRsZXIgcXVldWUgaWYgd2UncmUg
dGhlIGZpcnN0CisgICAgICAgICAgICBpZiAoICEoIGhhbmRsZXJzID0gZXZlbnRzWyB0eXBlIF0g
KSApIHsKKyAgICAgICAgICAgICAgICBoYW5kbGVycyA9IGV2ZW50c1sgdHlwZSBdID0gW107Cisg
ICAgICAgICAgICAgICAgaGFuZGxlcnMuZGVsZWdhdGVDb3VudCA9IDA7CisKKyAgICAgICAgICAg
ICAgICAvLyBPbmx5IHVzZSBhZGRFdmVudExpc3RlbmVyIGlmIHRoZSBzcGVjaWFsIGV2ZW50cyBo
YW5kbGVyIHJldHVybnMgZmFsc2UKKyAgICAgICAgICAgICAgICBpZiAoICFzcGVjaWFsLnNldHVw
IHx8CisgICAgICAgICAgICAgICAgICAgIHNwZWNpYWwuc2V0dXAuY2FsbCggZWxlbSwgZGF0YSwg
bmFtZXNwYWNlcywgZXZlbnRIYW5kbGUgKSA9PT0gZmFsc2UgKSB7CisKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKCBlbGVtLmFkZEV2ZW50TGlzdGVuZXIgKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBlbGVtLmFkZEV2ZW50TGlzdGVuZXIoIHR5cGUsIGV2ZW50SGFuZGxlICk7CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGlmICggc3BlY2lhbC5hZGQgKSB7CisgICAgICAgICAgICAgICAgc3BlY2lhbC5hZGQu
Y2FsbCggZWxlbSwgaGFuZGxlT2JqICk7CisKKyAgICAgICAgICAgICAgICBpZiAoICFoYW5kbGVP
YmouaGFuZGxlci5ndWlkICkgeworICAgICAgICAgICAgICAgICAgICBoYW5kbGVPYmouaGFuZGxl
ci5ndWlkID0gaGFuZGxlci5ndWlkOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgLy8gQWRkIHRvIHRoZSBlbGVtZW50J3MgaGFuZGxlciBsaXN0LCBkZWxl
Z2F0ZXMgaW4gZnJvbnQKKyAgICAgICAgICAgIGlmICggc2VsZWN0b3IgKSB7CisgICAgICAgICAg
ICAgICAgaGFuZGxlcnMuc3BsaWNlKCBoYW5kbGVycy5kZWxlZ2F0ZUNvdW50KyssIDAsIGhhbmRs
ZU9iaiApOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBoYW5kbGVycy5w
dXNoKCBoYW5kbGVPYmogKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gS2VlcCB0
cmFjayBvZiB3aGljaCBldmVudHMgaGF2ZSBldmVyIGJlZW4gdXNlZCwgZm9yIGV2ZW50IG9wdGlt
aXphdGlvbgorICAgICAgICAgICAgalF1ZXJ5LmV2ZW50Lmdsb2JhbFsgdHlwZSBdID0gdHJ1ZTsK
KyAgICAgICAgfQorCisgICAgfSwKKworICAgIC8vIERldGFjaCBhbiBldmVudCBvciBzZXQgb2Yg
ZXZlbnRzIGZyb20gYW4gZWxlbWVudAorICAgIHJlbW92ZTogZnVuY3Rpb24oIGVsZW0sIHR5cGVz
LCBoYW5kbGVyLCBzZWxlY3RvciwgbWFwcGVkVHlwZXMgKSB7CisKKyAgICAgICAgdmFyIGosIG9y
aWdDb3VudCwgdG1wLAorICAgICAgICAgICAgZXZlbnRzLCB0LCBoYW5kbGVPYmosCisgICAgICAg
ICAgICBzcGVjaWFsLCBoYW5kbGVycywgdHlwZSwgbmFtZXNwYWNlcywgb3JpZ1R5cGUsCisgICAg
ICAgICAgICBlbGVtRGF0YSA9IGRhdGFQcml2Lmhhc0RhdGEoIGVsZW0gKSAmJiBkYXRhUHJpdi5n
ZXQoIGVsZW0gKTsKKworICAgICAgICBpZiAoICFlbGVtRGF0YSB8fCAhKCBldmVudHMgPSBlbGVt
RGF0YS5ldmVudHMgKSApIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIC8vIE9uY2UgZm9yIGVhY2ggdHlwZS5uYW1lc3BhY2UgaW4gdHlwZXM7IHR5cGUgbWF5IGJl
IG9taXR0ZWQKKyAgICAgICAgdHlwZXMgPSAoIHR5cGVzIHx8ICIiICkubWF0Y2goIHJub3RodG1s
d2hpdGUgKSB8fCBbICIiIF07CisgICAgICAgIHQgPSB0eXBlcy5sZW5ndGg7CisgICAgICAgIHdo
aWxlICggdC0tICkgeworICAgICAgICAgICAgdG1wID0gcnR5cGVuYW1lc3BhY2UuZXhlYyggdHlw
ZXNbIHQgXSApIHx8IFtdOworICAgICAgICAgICAgdHlwZSA9IG9yaWdUeXBlID0gdG1wWyAxIF07
CisgICAgICAgICAgICBuYW1lc3BhY2VzID0gKCB0bXBbIDIgXSB8fCAiIiApLnNwbGl0KCAiLiIg
KS5zb3J0KCk7CisKKyAgICAgICAgICAgIC8vIFVuYmluZCBhbGwgZXZlbnRzIChvbiB0aGlzIG5h
bWVzcGFjZSwgaWYgcHJvdmlkZWQpIGZvciB0aGUgZWxlbWVudAorICAgICAgICAgICAgaWYgKCAh
dHlwZSApIHsKKyAgICAgICAgICAgICAgICBmb3IgKCB0eXBlIGluIGV2ZW50cyApIHsKKyAgICAg
ICAgICAgICAgICAgICAgalF1ZXJ5LmV2ZW50LnJlbW92ZSggZWxlbSwgdHlwZSArIHR5cGVzWyB0
IF0sIGhhbmRsZXIsIHNlbGVjdG9yLCB0cnVlICk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzcGVjaWFs
ID0galF1ZXJ5LmV2ZW50LnNwZWNpYWxbIHR5cGUgXSB8fCB7fTsKKyAgICAgICAgICAgIHR5cGUg
PSAoIHNlbGVjdG9yID8gc3BlY2lhbC5kZWxlZ2F0ZVR5cGUgOiBzcGVjaWFsLmJpbmRUeXBlICkg
fHwgdHlwZTsKKyAgICAgICAgICAgIGhhbmRsZXJzID0gZXZlbnRzWyB0eXBlIF0gfHwgW107Cisg
ICAgICAgICAgICB0bXAgPSB0bXBbIDIgXSAmJgorICAgICAgICAgICAgICAgIG5ldyBSZWdFeHAo
ICIoXnxcXC4pIiArIG5hbWVzcGFjZXMuam9pbiggIlxcLig/Oi4qXFwufCkiICkgKyAiKFxcLnwk
KSIgKTsKKworICAgICAgICAgICAgLy8gUmVtb3ZlIG1hdGNoaW5nIGV2ZW50cworICAgICAgICAg
ICAgb3JpZ0NvdW50ID0gaiA9IGhhbmRsZXJzLmxlbmd0aDsKKyAgICAgICAgICAgIHdoaWxlICgg
ai0tICkgeworICAgICAgICAgICAgICAgIGhhbmRsZU9iaiA9IGhhbmRsZXJzWyBqIF07CisKKyAg
ICAgICAgICAgICAgICBpZiAoICggbWFwcGVkVHlwZXMgfHwgb3JpZ1R5cGUgPT09IGhhbmRsZU9i
ai5vcmlnVHlwZSApICYmCisgICAgICAgICAgICAgICAgICAgICggIWhhbmRsZXIgfHwgaGFuZGxl
ci5ndWlkID09PSBoYW5kbGVPYmouZ3VpZCApICYmCisgICAgICAgICAgICAgICAgICAgICggIXRt
cCB8fCB0bXAudGVzdCggaGFuZGxlT2JqLm5hbWVzcGFjZSApICkgJiYKKyAgICAgICAgICAgICAg
ICAgICAgKCAhc2VsZWN0b3IgfHwgc2VsZWN0b3IgPT09IGhhbmRsZU9iai5zZWxlY3RvciB8fAor
ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3IgPT09ICIqKiIgJiYgaGFuZGxlT2JqLnNl
bGVjdG9yICkgKSB7CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZXJzLnNwbGljZSggaiwgMSAp
OworCisgICAgICAgICAgICAgICAgICAgIGlmICggaGFuZGxlT2JqLnNlbGVjdG9yICkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcnMuZGVsZWdhdGVDb3VudC0tOworICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmICggc3BlY2lhbC5yZW1vdmUgKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWFsLnJlbW92ZS5jYWxsKCBlbGVtLCBoYW5k
bGVPYmogKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgLy8gUmVtb3ZlIGdlbmVyaWMgZXZlbnQgaGFuZGxlciBp
ZiB3ZSByZW1vdmVkIHNvbWV0aGluZyBhbmQgbm8gbW9yZSBoYW5kbGVycyBleGlzdAorICAgICAg
ICAgICAgLy8gKGF2b2lkcyBwb3RlbnRpYWwgZm9yIGVuZGxlc3MgcmVjdXJzaW9uIGR1cmluZyBy
ZW1vdmFsIG9mIHNwZWNpYWwgZXZlbnQgaGFuZGxlcnMpCisgICAgICAgICAgICBpZiAoIG9yaWdD
b3VudCAmJiAhaGFuZGxlcnMubGVuZ3RoICkgeworICAgICAgICAgICAgICAgIGlmICggIXNwZWNp
YWwudGVhcmRvd24gfHwKKyAgICAgICAgICAgICAgICAgICAgc3BlY2lhbC50ZWFyZG93bi5jYWxs
KCBlbGVtLCBuYW1lc3BhY2VzLCBlbGVtRGF0YS5oYW5kbGUgKSA9PT0gZmFsc2UgKSB7CisKKyAg
ICAgICAgICAgICAgICAgICAgalF1ZXJ5LnJlbW92ZUV2ZW50KCBlbGVtLCB0eXBlLCBlbGVtRGF0
YS5oYW5kbGUgKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBkZWxldGUg
ZXZlbnRzWyB0eXBlIF07CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBS
ZW1vdmUgZGF0YSBhbmQgdGhlIGV4cGFuZG8gaWYgaXQncyBubyBsb25nZXIgdXNlZAorICAgICAg
ICBpZiAoIGpRdWVyeS5pc0VtcHR5T2JqZWN0KCBldmVudHMgKSApIHsKKyAgICAgICAgICAgIGRh
dGFQcml2LnJlbW92ZSggZWxlbSwgImhhbmRsZSBldmVudHMiICk7CisgICAgICAgIH0KKyAgICB9
LAorCisgICAgZGlzcGF0Y2g6IGZ1bmN0aW9uKCBuYXRpdmVFdmVudCApIHsKKworICAgICAgICAv
LyBNYWtlIGEgd3JpdGFibGUgalF1ZXJ5LkV2ZW50IGZyb20gdGhlIG5hdGl2ZSBldmVudCBvYmpl
Y3QKKyAgICAgICAgdmFyIGV2ZW50ID0galF1ZXJ5LmV2ZW50LmZpeCggbmF0aXZlRXZlbnQgKTsK
KworICAgICAgICB2YXIgaSwgaiwgcmV0LCBtYXRjaGVkLCBoYW5kbGVPYmosIGhhbmRsZXJRdWV1
ZSwKKyAgICAgICAgICAgIGFyZ3MgPSBuZXcgQXJyYXkoIGFyZ3VtZW50cy5sZW5ndGggKSwKKyAg
ICAgICAgICAgIGhhbmRsZXJzID0gKCBkYXRhUHJpdi5nZXQoIHRoaXMsICJldmVudHMiICkgfHwg
e30gKVsgZXZlbnQudHlwZSBdIHx8IFtdLAorICAgICAgICAgICAgc3BlY2lhbCA9IGpRdWVyeS5l
dmVudC5zcGVjaWFsWyBldmVudC50eXBlIF0gfHwge307CisKKyAgICAgICAgLy8gVXNlIHRoZSBm
aXgtZWQgalF1ZXJ5LkV2ZW50IHJhdGhlciB0aGFuIHRoZSAocmVhZC1vbmx5KSBuYXRpdmUgZXZl
bnQKKyAgICAgICAgYXJnc1sgMCBdID0gZXZlbnQ7CisKKyAgICAgICAgZm9yICggaSA9IDE7IGkg
PCBhcmd1bWVudHMubGVuZ3RoOyBpKysgKSB7CisgICAgICAgICAgICBhcmdzWyBpIF0gPSBhcmd1
bWVudHNbIGkgXTsKKyAgICAgICAgfQorCisgICAgICAgIGV2ZW50LmRlbGVnYXRlVGFyZ2V0ID0g
dGhpczsKKworICAgICAgICAvLyBDYWxsIHRoZSBwcmVEaXNwYXRjaCBob29rIGZvciB0aGUgbWFw
cGVkIHR5cGUsIGFuZCBsZXQgaXQgYmFpbCBpZiBkZXNpcmVkCisgICAgICAgIGlmICggc3BlY2lh
bC5wcmVEaXNwYXRjaCAmJiBzcGVjaWFsLnByZURpc3BhdGNoLmNhbGwoIHRoaXMsIGV2ZW50ICkg
PT09IGZhbHNlICkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAg
Ly8gRGV0ZXJtaW5lIGhhbmRsZXJzCisgICAgICAgIGhhbmRsZXJRdWV1ZSA9IGpRdWVyeS5ldmVu
dC5oYW5kbGVycy5jYWxsKCB0aGlzLCBldmVudCwgaGFuZGxlcnMgKTsKKworICAgICAgICAvLyBS
dW4gZGVsZWdhdGVzIGZpcnN0OyB0aGV5IG1heSB3YW50IHRvIHN0b3AgcHJvcGFnYXRpb24gYmVu
ZWF0aCB1cworICAgICAgICBpID0gMDsKKyAgICAgICAgd2hpbGUgKCAoIG1hdGNoZWQgPSBoYW5k
bGVyUXVldWVbIGkrKyBdICkgJiYgIWV2ZW50LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkgKSB7Cisg
ICAgICAgICAgICBldmVudC5jdXJyZW50VGFyZ2V0ID0gbWF0Y2hlZC5lbGVtOworCisgICAgICAg
ICAgICBqID0gMDsKKyAgICAgICAgICAgIHdoaWxlICggKCBoYW5kbGVPYmogPSBtYXRjaGVkLmhh
bmRsZXJzWyBqKysgXSApICYmCisgICAgICAgICAgICAgICAgIWV2ZW50LmlzSW1tZWRpYXRlUHJv
cGFnYXRpb25TdG9wcGVkKCkgKSB7CisKKyAgICAgICAgICAgICAgICAvLyBUcmlnZ2VyZWQgZXZl
bnQgbXVzdCBlaXRoZXIgMSkgaGF2ZSBubyBuYW1lc3BhY2UsIG9yIDIpIGhhdmUgbmFtZXNwYWNl
KHMpCisgICAgICAgICAgICAgICAgLy8gYSBzdWJzZXQgb3IgZXF1YWwgdG8gdGhvc2UgaW4gdGhl
IGJvdW5kIGV2ZW50IChib3RoIGNhbiBoYXZlIG5vIG5hbWVzcGFjZSkuCisgICAgICAgICAgICAg
ICAgaWYgKCAhZXZlbnQucm5hbWVzcGFjZSB8fCBldmVudC5ybmFtZXNwYWNlLnRlc3QoIGhhbmRs
ZU9iai5uYW1lc3BhY2UgKSApIHsKKworICAgICAgICAgICAgICAgICAgICBldmVudC5oYW5kbGVP
YmogPSBoYW5kbGVPYmo7CisgICAgICAgICAgICAgICAgICAgIGV2ZW50LmRhdGEgPSBoYW5kbGVP
YmouZGF0YTsKKworICAgICAgICAgICAgICAgICAgICByZXQgPSAoICggalF1ZXJ5LmV2ZW50LnNw
ZWNpYWxbIGhhbmRsZU9iai5vcmlnVHlwZSBdIHx8IHt9ICkuaGFuZGxlIHx8CisgICAgICAgICAg
ICAgICAgICAgICAgICBoYW5kbGVPYmouaGFuZGxlciApLmFwcGx5KCBtYXRjaGVkLmVsZW0sIGFy
Z3MgKTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoIHJldCAhPT0gdW5kZWZpbmVkICkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAoIGV2ZW50LnJlc3VsdCA9IHJldCApID09PSBm
YWxzZSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVs
dCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigp
OworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gQ2Fs
bCB0aGUgcG9zdERpc3BhdGNoIGhvb2sgZm9yIHRoZSBtYXBwZWQgdHlwZQorICAgICAgICBpZiAo
IHNwZWNpYWwucG9zdERpc3BhdGNoICkgeworICAgICAgICAgICAgc3BlY2lhbC5wb3N0RGlzcGF0
Y2guY2FsbCggdGhpcywgZXZlbnQgKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBldmVu
dC5yZXN1bHQ7CisgICAgfSwKKworICAgIGhhbmRsZXJzOiBmdW5jdGlvbiggZXZlbnQsIGhhbmRs
ZXJzICkgeworICAgICAgICB2YXIgaSwgaGFuZGxlT2JqLCBzZWwsIG1hdGNoZWRIYW5kbGVycywg
bWF0Y2hlZFNlbGVjdG9ycywKKyAgICAgICAgICAgIGhhbmRsZXJRdWV1ZSA9IFtdLAorICAgICAg
ICAgICAgZGVsZWdhdGVDb3VudCA9IGhhbmRsZXJzLmRlbGVnYXRlQ291bnQsCisgICAgICAgICAg
ICBjdXIgPSBldmVudC50YXJnZXQ7CisKKyAgICAgICAgLy8gRmluZCBkZWxlZ2F0ZSBoYW5kbGVy
cworICAgICAgICBpZiAoIGRlbGVnYXRlQ291bnQgJiYKKworICAgICAgICAgICAgLy8gU3VwcG9y
dDogSUUgPD05CisgICAgICAgICAgICAvLyBCbGFjay1ob2xlIFNWRyA8dXNlPiBpbnN0YW5jZSB0
cmVlcyAodHJhYy0xMzE4MCkKKyAgICAgICAgICAgIGN1ci5ub2RlVHlwZSAmJgorCisgICAgICAg
ICAgICAvLyBTdXBwb3J0OiBGaXJlZm94IDw9NDIKKyAgICAgICAgICAgIC8vIFN1cHByZXNzIHNw
ZWMtdmlvbGF0aW5nIGNsaWNrcyBpbmRpY2F0aW5nIGEgbm9uLXByaW1hcnkgcG9pbnRlciBidXR0
b24gKHRyYWMtMzg2MSkKKyAgICAgICAgICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9ET00t
TGV2ZWwtMy1FdmVudHMvI2V2ZW50LXR5cGUtY2xpY2sKKyAgICAgICAgICAgIC8vIFN1cHBvcnQ6
IElFIDExIG9ubHkKKyAgICAgICAgICAgIC8vIC4uLmJ1dCBub3QgYXJyb3cga2V5ICJjbGlja3Mi
IG9mIHJhZGlvIGlucHV0cywgd2hpY2ggY2FuIGhhdmUgYGJ1dHRvbmAgLTEgKGdoLTIzNDMpCisg
ICAgICAgICAgICAhKCBldmVudC50eXBlID09PSAiY2xpY2siICYmIGV2ZW50LmJ1dHRvbiA+PSAx
ICkgKSB7CisKKyAgICAgICAgICAgIGZvciAoIDsgY3VyICE9PSB0aGlzOyBjdXIgPSBjdXIucGFy
ZW50Tm9kZSB8fCB0aGlzICkgeworCisgICAgICAgICAgICAgICAgLy8gRG9uJ3QgY2hlY2sgbm9u
LWVsZW1lbnRzICgjMTMyMDgpCisgICAgICAgICAgICAgICAgLy8gRG9uJ3QgcHJvY2VzcyBjbGlj
a3Mgb24gZGlzYWJsZWQgZWxlbWVudHMgKCM2OTExLCAjODE2NSwgIzExMzgyLCAjMTE3NjQpCisg
ICAgICAgICAgICAgICAgaWYgKCBjdXIubm9kZVR5cGUgPT09IDEgJiYgISggZXZlbnQudHlwZSA9
PT0gImNsaWNrIiAmJiBjdXIuZGlzYWJsZWQgPT09IHRydWUgKSApIHsKKyAgICAgICAgICAgICAg
ICAgICAgbWF0Y2hlZEhhbmRsZXJzID0gW107CisgICAgICAgICAgICAgICAgICAgIG1hdGNoZWRT
ZWxlY3RvcnMgPSB7fTsKKyAgICAgICAgICAgICAgICAgICAgZm9yICggaSA9IDA7IGkgPCBkZWxl
Z2F0ZUNvdW50OyBpKysgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVPYmogPSBo
YW5kbGVyc1sgaSBdOworCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBEb24ndCBjb25mbGlj
dCB3aXRoIE9iamVjdC5wcm90b3R5cGUgcHJvcGVydGllcyAoIzEzMjAzKQorICAgICAgICAgICAg
ICAgICAgICAgICAgc2VsID0gaGFuZGxlT2JqLnNlbGVjdG9yICsgIiAiOworCisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoIG1hdGNoZWRTZWxlY3RvcnNbIHNlbCBdID09PSB1bmRlZmluZWQg
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlZFNlbGVjdG9yc1sgc2VsIF0g
PSBoYW5kbGVPYmoubmVlZHNDb250ZXh0ID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgalF1ZXJ5KCBzZWwsIHRoaXMgKS5pbmRleCggY3VyICkgPiAtMSA6CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGpRdWVyeS5maW5kKCBzZWwsIHRoaXMsIG51bGwsIFsgY3VyIF0g
KS5sZW5ndGg7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoIG1hdGNoZWRTZWxlY3RvcnNbIHNlbCBdICkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1hdGNoZWRIYW5kbGVycy5wdXNoKCBoYW5kbGVPYmogKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICBpZiAoIG1hdGNoZWRIYW5kbGVycy5sZW5ndGggKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBoYW5kbGVyUXVldWUucHVzaCggeyBlbGVtOiBjdXIsIGhhbmRsZXJzOiBtYXRjaGVkSGFuZGxl
cnMgfSApOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gQWRkIHRoZSByZW1haW5pbmcgKGRpcmVj
dGx5LWJvdW5kKSBoYW5kbGVycworICAgICAgICBjdXIgPSB0aGlzOworICAgICAgICBpZiAoIGRl
bGVnYXRlQ291bnQgPCBoYW5kbGVycy5sZW5ndGggKSB7CisgICAgICAgICAgICBoYW5kbGVyUXVl
dWUucHVzaCggeyBlbGVtOiBjdXIsIGhhbmRsZXJzOiBoYW5kbGVycy5zbGljZSggZGVsZWdhdGVD
b3VudCApIH0gKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBoYW5kbGVyUXVldWU7Cisg
ICAgfSwKKworICAgIGFkZFByb3A6IGZ1bmN0aW9uKCBuYW1lLCBob29rICkgeworICAgICAgICBP
YmplY3QuZGVmaW5lUHJvcGVydHkoIGpRdWVyeS5FdmVudC5wcm90b3R5cGUsIG5hbWUsIHsKKyAg
ICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsCisgICAgICAgICAgICBjb25maWd1cmFibGU6IHRy
dWUsCisKKyAgICAgICAgICAgIGdldDogalF1ZXJ5LmlzRnVuY3Rpb24oIGhvb2sgKSA/CisgICAg
ICAgICAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICggdGhpcy5v
cmlnaW5hbEV2ZW50ICkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBob29r
KCB0aGlzLm9yaWdpbmFsRXZlbnQgKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIH0gOgorICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAg
ICAgICBpZiAoIHRoaXMub3JpZ2luYWxFdmVudCApIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdGhpcy5vcmlnaW5hbEV2ZW50WyBuYW1lIF07CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICB9LAorCisgICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKCB2
YWx1ZSApIHsKKyAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoIHRoaXMsIG5h
bWUsIHsKKyAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSwKKyAgICAgICAgICAg
ICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLAorICAgICAgICAgICAgICAgICAgICB3cml0YWJs
ZTogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlCisgICAgICAgICAgICAg
ICAgfSApOworICAgICAgICAgICAgfQorICAgICAgICB9ICk7CisgICAgfSwKKworICAgIGZpeDog
ZnVuY3Rpb24oIG9yaWdpbmFsRXZlbnQgKSB7CisgICAgICAgIHJldHVybiBvcmlnaW5hbEV2ZW50
WyBqUXVlcnkuZXhwYW5kbyBdID8KKyAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQgOgorICAgICAg
ICAgICAgbmV3IGpRdWVyeS5FdmVudCggb3JpZ2luYWxFdmVudCApOworICAgIH0sCisKKyAgICBz
cGVjaWFsOiB7CisgICAgICAgIGxvYWQ6IHsKKworICAgICAgICAgICAgLy8gUHJldmVudCB0cmln
Z2VyZWQgaW1hZ2UubG9hZCBldmVudHMgZnJvbSBidWJibGluZyB0byB3aW5kb3cubG9hZAorICAg
ICAgICAgICAgbm9CdWJibGU6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgZm9jdXM6IHsKKwor
ICAgICAgICAgICAgLy8gRmlyZSBuYXRpdmUgZXZlbnQgaWYgcG9zc2libGUgc28gYmx1ci9mb2N1
cyBzZXF1ZW5jZSBpcyBjb3JyZWN0CisgICAgICAgICAgICB0cmlnZ2VyOiBmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgICAgICBpZiAoIHRoaXMgIT09IHNhZmVBY3RpdmVFbGVtZW50KCkgJiYgdGhp
cy5mb2N1cyApIHsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5mb2N1cygpOworICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgIGRlbGVnYXRlVHlwZTogImZvY3VzaW4iCisgICAgICAgIH0sCisgICAg
ICAgIGJsdXI6IHsKKyAgICAgICAgICAgIHRyaWdnZXI6IGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgICAgIGlmICggdGhpcyA9PT0gc2FmZUFjdGl2ZUVsZW1lbnQoKSAmJiB0aGlzLmJsdXIgKSB7
CisgICAgICAgICAgICAgICAgICAgIHRoaXMuYmx1cigpOworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgIGRlbGVnYXRlVHlwZTogImZvY3Vzb3V0IgorICAgICAgICB9LAorICAgICAgICBjbGljazog
eworCisgICAgICAgICAgICAvLyBGb3IgY2hlY2tib3gsIGZpcmUgbmF0aXZlIGV2ZW50IHNvIGNo
ZWNrZWQgc3RhdGUgd2lsbCBiZSByaWdodAorICAgICAgICAgICAgdHJpZ2dlcjogZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICAgICAgaWYgKCB0aGlzLnR5cGUgPT09ICJjaGVja2JveCIgJiYgdGhp
cy5jbGljayAmJiBqUXVlcnkubm9kZU5hbWUoIHRoaXMsICJpbnB1dCIgKSApIHsKKyAgICAgICAg
ICAgICAgICAgICAgdGhpcy5jbGljaygpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgLy8g
Rm9yIGNyb3NzLWJyb3dzZXIgY29uc2lzdGVuY3ksIGRvbid0IGZpcmUgbmF0aXZlIC5jbGljaygp
IG9uIGxpbmtzCisgICAgICAgICAgICBfZGVmYXVsdDogZnVuY3Rpb24oIGV2ZW50ICkgeworICAg
ICAgICAgICAgICAgIHJldHVybiBqUXVlcnkubm9kZU5hbWUoIGV2ZW50LnRhcmdldCwgImEiICk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisKKyAgICAgICAgYmVmb3JldW5sb2FkOiB7Cisg
ICAgICAgICAgICBwb3N0RGlzcGF0Y2g6IGZ1bmN0aW9uKCBldmVudCApIHsKKworICAgICAgICAg
ICAgICAgIC8vIFN1cHBvcnQ6IEZpcmVmb3ggMjArCisgICAgICAgICAgICAgICAgLy8gRmlyZWZv
eCBkb2Vzbid0IGFsZXJ0IGlmIHRoZSByZXR1cm5WYWx1ZSBmaWVsZCBpcyBub3Qgc2V0LgorICAg
ICAgICAgICAgICAgIGlmICggZXZlbnQucmVzdWx0ICE9PSB1bmRlZmluZWQgJiYgZXZlbnQub3Jp
Z2luYWxFdmVudCApIHsKKyAgICAgICAgICAgICAgICAgICAgZXZlbnQub3JpZ2luYWxFdmVudC5y
ZXR1cm5WYWx1ZSA9IGV2ZW50LnJlc3VsdDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9Cit9OworCitqUXVlcnkucmVtb3ZlRXZlbnQgPSBmdW5jdGlv
biggZWxlbSwgdHlwZSwgaGFuZGxlICkgeworCisgICAgLy8gVGhpcyAiaWYiIGlzIG5lZWRlZCBm
b3IgcGxhaW4gb2JqZWN0cworICAgIGlmICggZWxlbS5yZW1vdmVFdmVudExpc3RlbmVyICkgewor
ICAgICAgICBlbGVtLnJlbW92ZUV2ZW50TGlzdGVuZXIoIHR5cGUsIGhhbmRsZSApOworICAgIH0K
K307CisKK2pRdWVyeS5FdmVudCA9IGZ1bmN0aW9uKCBzcmMsIHByb3BzICkgeworCisgICAgLy8g
QWxsb3cgaW5zdGFudGlhdGlvbiB3aXRob3V0IHRoZSAnbmV3JyBrZXl3b3JkCisgICAgaWYgKCAh
KCB0aGlzIGluc3RhbmNlb2YgalF1ZXJ5LkV2ZW50ICkgKSB7CisgICAgICAgIHJldHVybiBuZXcg
alF1ZXJ5LkV2ZW50KCBzcmMsIHByb3BzICk7CisgICAgfQorCisgICAgLy8gRXZlbnQgb2JqZWN0
CisgICAgaWYgKCBzcmMgJiYgc3JjLnR5cGUgKSB7CisgICAgICAgIHRoaXMub3JpZ2luYWxFdmVu
dCA9IHNyYzsKKyAgICAgICAgdGhpcy50eXBlID0gc3JjLnR5cGU7CisKKyAgICAgICAgLy8gRXZl
bnRzIGJ1YmJsaW5nIHVwIHRoZSBkb2N1bWVudCBtYXkgaGF2ZSBiZWVuIG1hcmtlZCBhcyBwcmV2
ZW50ZWQKKyAgICAgICAgLy8gYnkgYSBoYW5kbGVyIGxvd2VyIGRvd24gdGhlIHRyZWU7IHJlZmxl
Y3QgdGhlIGNvcnJlY3QgdmFsdWUuCisgICAgICAgIHRoaXMuaXNEZWZhdWx0UHJldmVudGVkID0g
c3JjLmRlZmF1bHRQcmV2ZW50ZWQgfHwKKyAgICAgICAgICAgICAgICBzcmMuZGVmYXVsdFByZXZl
bnRlZCA9PT0gdW5kZWZpbmVkICYmCisKKyAgICAgICAgICAgICAgICAvLyBTdXBwb3J0OiBBbmRy
b2lkIDw9Mi4zIG9ubHkKKyAgICAgICAgICAgICAgICBzcmMucmV0dXJuVmFsdWUgPT09IGZhbHNl
ID8KKyAgICAgICAgICAgIHJldHVyblRydWUgOgorICAgICAgICAgICAgcmV0dXJuRmFsc2U7CisK
KyAgICAgICAgLy8gQ3JlYXRlIHRhcmdldCBwcm9wZXJ0aWVzCisgICAgICAgIC8vIFN1cHBvcnQ6
IFNhZmFyaSA8PTYgLSA3IG9ubHkKKyAgICAgICAgLy8gVGFyZ2V0IHNob3VsZCBub3QgYmUgYSB0
ZXh0IG5vZGUgKCM1MDQsICMxMzE0MykKKyAgICAgICAgdGhpcy50YXJnZXQgPSAoIHNyYy50YXJn
ZXQgJiYgc3JjLnRhcmdldC5ub2RlVHlwZSA9PT0gMyApID8KKyAgICAgICAgICAgIHNyYy50YXJn
ZXQucGFyZW50Tm9kZSA6CisgICAgICAgICAgICBzcmMudGFyZ2V0OworCisgICAgICAgIHRoaXMu
Y3VycmVudFRhcmdldCA9IHNyYy5jdXJyZW50VGFyZ2V0OworICAgICAgICB0aGlzLnJlbGF0ZWRU
YXJnZXQgPSBzcmMucmVsYXRlZFRhcmdldDsKKworICAgIC8vIEV2ZW50IHR5cGUKKyAgICB9IGVs
c2UgeworICAgICAgICB0aGlzLnR5cGUgPSBzcmM7CisgICAgfQorCisgICAgLy8gUHV0IGV4cGxp
Y2l0bHkgcHJvdmlkZWQgcHJvcGVydGllcyBvbnRvIHRoZSBldmVudCBvYmplY3QKKyAgICBpZiAo
IHByb3BzICkgeworICAgICAgICBqUXVlcnkuZXh0ZW5kKCB0aGlzLCBwcm9wcyApOworICAgIH0K
KworICAgIC8vIENyZWF0ZSBhIHRpbWVzdGFtcCBpZiBpbmNvbWluZyBldmVudCBkb2Vzbid0IGhh
dmUgb25lCisgICAgdGhpcy50aW1lU3RhbXAgPSBzcmMgJiYgc3JjLnRpbWVTdGFtcCB8fCBqUXVl
cnkubm93KCk7CisKKyAgICAvLyBNYXJrIGl0IGFzIGZpeGVkCisgICAgdGhpc1sgalF1ZXJ5LmV4
cGFuZG8gXSA9IHRydWU7Cit9OworCisvLyBqUXVlcnkuRXZlbnQgaXMgYmFzZWQgb24gRE9NMyBF
dmVudHMgYXMgc3BlY2lmaWVkIGJ5IHRoZSBFQ01BU2NyaXB0IExhbmd1YWdlIEJpbmRpbmcKKy8v
IGh0dHBzOi8vd3d3LnczLm9yZy9UUi8yMDAzL1dELURPTS1MZXZlbC0zLUV2ZW50cy0yMDAzMDMz
MS9lY21hLXNjcmlwdC1iaW5kaW5nLmh0bWwKK2pRdWVyeS5FdmVudC5wcm90b3R5cGUgPSB7Cisg
ICAgY29uc3RydWN0b3I6IGpRdWVyeS5FdmVudCwKKyAgICBpc0RlZmF1bHRQcmV2ZW50ZWQ6IHJl
dHVybkZhbHNlLAorICAgIGlzUHJvcGFnYXRpb25TdG9wcGVkOiByZXR1cm5GYWxzZSwKKyAgICBp
c0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZDogcmV0dXJuRmFsc2UsCisgICAgaXNTaW11bGF0
ZWQ6IGZhbHNlLAorCisgICAgcHJldmVudERlZmF1bHQ6IGZ1bmN0aW9uKCkgeworICAgICAgICB2
YXIgZSA9IHRoaXMub3JpZ2luYWxFdmVudDsKKworICAgICAgICB0aGlzLmlzRGVmYXVsdFByZXZl
bnRlZCA9IHJldHVyblRydWU7CisKKyAgICAgICAgaWYgKCBlICYmICF0aGlzLmlzU2ltdWxhdGVk
ICkgeworICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICB9CisgICAgfSwK
KyAgICBzdG9wUHJvcGFnYXRpb246IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgZSA9IHRoaXMu
b3JpZ2luYWxFdmVudDsKKworICAgICAgICB0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkID0gcmV0
dXJuVHJ1ZTsKKworICAgICAgICBpZiAoIGUgJiYgIXRoaXMuaXNTaW11bGF0ZWQgKSB7CisgICAg
ICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpOworICAgICAgICB9CisgICAgfSwKKyAgICBzdG9w
SW1tZWRpYXRlUHJvcGFnYXRpb246IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgZSA9IHRoaXMu
b3JpZ2luYWxFdmVudDsKKworICAgICAgICB0aGlzLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9w
cGVkID0gcmV0dXJuVHJ1ZTsKKworICAgICAgICBpZiAoIGUgJiYgIXRoaXMuaXNTaW11bGF0ZWQg
KSB7CisgICAgICAgICAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpOworICAgICAgICB9
CisKKyAgICAgICAgdGhpcy5zdG9wUHJvcGFnYXRpb24oKTsKKyAgICB9Cit9OworCisvLyBJbmNs
dWRlcyBhbGwgY29tbW9uIGV2ZW50IHByb3BzIGluY2x1ZGluZyBLZXlFdmVudCBhbmQgTW91c2VF
dmVudCBzcGVjaWZpYyBwcm9wcworalF1ZXJ5LmVhY2goIHsKKyAgICBhbHRLZXk6IHRydWUsCisg
ICAgYnViYmxlczogdHJ1ZSwKKyAgICBjYW5jZWxhYmxlOiB0cnVlLAorICAgIGNoYW5nZWRUb3Vj
aGVzOiB0cnVlLAorICAgIGN0cmxLZXk6IHRydWUsCisgICAgZGV0YWlsOiB0cnVlLAorICAgIGV2
ZW50UGhhc2U6IHRydWUsCisgICAgbWV0YUtleTogdHJ1ZSwKKyAgICBwYWdlWDogdHJ1ZSwKKyAg
ICBwYWdlWTogdHJ1ZSwKKyAgICBzaGlmdEtleTogdHJ1ZSwKKyAgICB2aWV3OiB0cnVlLAorICAg
ICJjaGFyIjogdHJ1ZSwKKyAgICBjaGFyQ29kZTogdHJ1ZSwKKyAgICBrZXk6IHRydWUsCisgICAg
a2V5Q29kZTogdHJ1ZSwKKyAgICBidXR0b246IHRydWUsCisgICAgYnV0dG9uczogdHJ1ZSwKKyAg
ICBjbGllbnRYOiB0cnVlLAorICAgIGNsaWVudFk6IHRydWUsCisgICAgb2Zmc2V0WDogdHJ1ZSwK
KyAgICBvZmZzZXRZOiB0cnVlLAorICAgIHBvaW50ZXJJZDogdHJ1ZSwKKyAgICBwb2ludGVyVHlw
ZTogdHJ1ZSwKKyAgICBzY3JlZW5YOiB0cnVlLAorICAgIHNjcmVlblk6IHRydWUsCisgICAgdGFy
Z2V0VG91Y2hlczogdHJ1ZSwKKyAgICB0b0VsZW1lbnQ6IHRydWUsCisgICAgdG91Y2hlczogdHJ1
ZSwKKworICAgIHdoaWNoOiBmdW5jdGlvbiggZXZlbnQgKSB7CisgICAgICAgIHZhciBidXR0b24g
PSBldmVudC5idXR0b247CisKKyAgICAgICAgLy8gQWRkIHdoaWNoIGZvciBrZXkgZXZlbnRzCisg
ICAgICAgIGlmICggZXZlbnQud2hpY2ggPT0gbnVsbCAmJiBya2V5RXZlbnQudGVzdCggZXZlbnQu
dHlwZSApICkgeworICAgICAgICAgICAgcmV0dXJuIGV2ZW50LmNoYXJDb2RlICE9IG51bGwgPyBl
dmVudC5jaGFyQ29kZSA6IGV2ZW50LmtleUNvZGU7CisgICAgICAgIH0KKworICAgICAgICAvLyBB
ZGQgd2hpY2ggZm9yIGNsaWNrOiAxID09PSBsZWZ0OyAyID09PSBtaWRkbGU7IDMgPT09IHJpZ2h0
CisgICAgICAgIGlmICggIWV2ZW50LndoaWNoICYmIGJ1dHRvbiAhPT0gdW5kZWZpbmVkICYmIHJt
b3VzZUV2ZW50LnRlc3QoIGV2ZW50LnR5cGUgKSApIHsKKyAgICAgICAgICAgIGlmICggYnV0dG9u
ICYgMSApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgaWYgKCBidXR0b24gJiAyICkgeworICAgICAgICAgICAgICAgIHJldHVybiAzOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIGJ1dHRvbiAmIDQgKSB7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIDI7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiAw
OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGV2ZW50LndoaWNoOworICAgIH0KK30sIGpR
dWVyeS5ldmVudC5hZGRQcm9wICk7CisKKy8vIENyZWF0ZSBtb3VzZWVudGVyL2xlYXZlIGV2ZW50
cyB1c2luZyBtb3VzZW92ZXIvb3V0IGFuZCBldmVudC10aW1lIGNoZWNrcworLy8gc28gdGhhdCBl
dmVudCBkZWxlZ2F0aW9uIHdvcmtzIGluIGpRdWVyeS4KKy8vIERvIHRoZSBzYW1lIGZvciBwb2lu
dGVyZW50ZXIvcG9pbnRlcmxlYXZlIGFuZCBwb2ludGVyb3Zlci9wb2ludGVyb3V0CisvLworLy8g
U3VwcG9ydDogU2FmYXJpIDcgb25seQorLy8gU2FmYXJpIHNlbmRzIG1vdXNlZW50ZXIgdG9vIG9m
dGVuOyBzZWU6CisvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVz
L2RldGFpbD9pZD00NzAyNTgKKy8vIGZvciB0aGUgZGVzY3JpcHRpb24gb2YgdGhlIGJ1ZyAoaXQg
ZXhpc3RlZCBpbiBvbGRlciBDaHJvbWUgdmVyc2lvbnMgYXMgd2VsbCkuCitqUXVlcnkuZWFjaCgg
eworICAgIG1vdXNlZW50ZXI6ICJtb3VzZW92ZXIiLAorICAgIG1vdXNlbGVhdmU6ICJtb3VzZW91
dCIsCisgICAgcG9pbnRlcmVudGVyOiAicG9pbnRlcm92ZXIiLAorICAgIHBvaW50ZXJsZWF2ZTog
InBvaW50ZXJvdXQiCit9LCBmdW5jdGlvbiggb3JpZywgZml4ICkgeworICAgIGpRdWVyeS5ldmVu
dC5zcGVjaWFsWyBvcmlnIF0gPSB7CisgICAgICAgIGRlbGVnYXRlVHlwZTogZml4LAorICAgICAg
ICBiaW5kVHlwZTogZml4LAorCisgICAgICAgIGhhbmRsZTogZnVuY3Rpb24oIGV2ZW50ICkgewor
ICAgICAgICAgICAgdmFyIHJldCwKKyAgICAgICAgICAgICAgICB0YXJnZXQgPSB0aGlzLAorICAg
ICAgICAgICAgICAgIHJlbGF0ZWQgPSBldmVudC5yZWxhdGVkVGFyZ2V0LAorICAgICAgICAgICAg
ICAgIGhhbmRsZU9iaiA9IGV2ZW50LmhhbmRsZU9iajsKKworICAgICAgICAgICAgLy8gRm9yIG1v
dXNlZW50ZXIvbGVhdmUgY2FsbCB0aGUgaGFuZGxlciBpZiByZWxhdGVkIGlzIG91dHNpZGUgdGhl
IHRhcmdldC4KKyAgICAgICAgICAgIC8vIE5COiBObyByZWxhdGVkVGFyZ2V0IGlmIHRoZSBtb3Vz
ZSBsZWZ0L2VudGVyZWQgdGhlIGJyb3dzZXIgd2luZG93CisgICAgICAgICAgICBpZiAoICFyZWxh
dGVkIHx8ICggcmVsYXRlZCAhPT0gdGFyZ2V0ICYmICFqUXVlcnkuY29udGFpbnMoIHRhcmdldCwg
cmVsYXRlZCApICkgKSB7CisgICAgICAgICAgICAgICAgZXZlbnQudHlwZSA9IGhhbmRsZU9iai5v
cmlnVHlwZTsKKyAgICAgICAgICAgICAgICByZXQgPSBoYW5kbGVPYmouaGFuZGxlci5hcHBseSgg
dGhpcywgYXJndW1lbnRzICk7CisgICAgICAgICAgICAgICAgZXZlbnQudHlwZSA9IGZpeDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiByZXQ7CisgICAgICAgIH0KKyAgICB9Owor
fSApOworCitqUXVlcnkuZm4uZXh0ZW5kKCB7CisKKyAgICBvbjogZnVuY3Rpb24oIHR5cGVzLCBz
ZWxlY3RvciwgZGF0YSwgZm4gKSB7CisgICAgICAgIHJldHVybiBvbiggdGhpcywgdHlwZXMsIHNl
bGVjdG9yLCBkYXRhLCBmbiApOworICAgIH0sCisgICAgb25lOiBmdW5jdGlvbiggdHlwZXMsIHNl
bGVjdG9yLCBkYXRhLCBmbiApIHsKKyAgICAgICAgcmV0dXJuIG9uKCB0aGlzLCB0eXBlcywgc2Vs
ZWN0b3IsIGRhdGEsIGZuLCAxICk7CisgICAgfSwKKyAgICBvZmY6IGZ1bmN0aW9uKCB0eXBlcywg
c2VsZWN0b3IsIGZuICkgeworICAgICAgICB2YXIgaGFuZGxlT2JqLCB0eXBlOworICAgICAgICBp
ZiAoIHR5cGVzICYmIHR5cGVzLnByZXZlbnREZWZhdWx0ICYmIHR5cGVzLmhhbmRsZU9iaiApIHsK
KworICAgICAgICAgICAgLy8gKCBldmVudCApICBkaXNwYXRjaGVkIGpRdWVyeS5FdmVudAorICAg
ICAgICAgICAgaGFuZGxlT2JqID0gdHlwZXMuaGFuZGxlT2JqOworICAgICAgICAgICAgalF1ZXJ5
KCB0eXBlcy5kZWxlZ2F0ZVRhcmdldCApLm9mZigKKyAgICAgICAgICAgICAgICBoYW5kbGVPYmou
bmFtZXNwYWNlID8KKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlT2JqLm9yaWdUeXBlICsgIi4i
ICsgaGFuZGxlT2JqLm5hbWVzcGFjZSA6CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZU9iai5v
cmlnVHlwZSwKKyAgICAgICAgICAgICAgICBoYW5kbGVPYmouc2VsZWN0b3IsCisgICAgICAgICAg
ICAgICAgaGFuZGxlT2JqLmhhbmRsZXIKKyAgICAgICAgICAgICk7CisgICAgICAgICAgICByZXR1
cm4gdGhpczsKKyAgICAgICAgfQorICAgICAgICBpZiAoIHR5cGVvZiB0eXBlcyA9PT0gIm9iamVj
dCIgKSB7CisKKyAgICAgICAgICAgIC8vICggdHlwZXMtb2JqZWN0IFssIHNlbGVjdG9yXSApCisg
ICAgICAgICAgICBmb3IgKCB0eXBlIGluIHR5cGVzICkgeworICAgICAgICAgICAgICAgIHRoaXMu
b2ZmKCB0eXBlLCBzZWxlY3RvciwgdHlwZXNbIHR5cGUgXSApOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCBzZWxlY3RvciA9
PT0gZmFsc2UgfHwgdHlwZW9mIHNlbGVjdG9yID09PSAiZnVuY3Rpb24iICkgeworCisgICAgICAg
ICAgICAvLyAoIHR5cGVzIFssIGZuXSApCisgICAgICAgICAgICBmbiA9IHNlbGVjdG9yOworICAg
ICAgICAgICAgc2VsZWN0b3IgPSB1bmRlZmluZWQ7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCBm
biA9PT0gZmFsc2UgKSB7CisgICAgICAgICAgICBmbiA9IHJldHVybkZhbHNlOworICAgICAgICB9
CisgICAgICAgIHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgalF1
ZXJ5LmV2ZW50LnJlbW92ZSggdGhpcywgdHlwZXMsIGZuLCBzZWxlY3RvciApOworICAgICAgICB9
ICk7CisgICAgfQorfSApOworCisKK3ZhcgorCisgICAgLyogZXNsaW50LWRpc2FibGUgbWF4LWxl
biAqLworCisgICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9lc2xpbnQvZXNsaW50L2lzc3Vl
cy8zMjI5CisgICAgcnhodG1sVGFnID0gLzwoPyFhcmVhfGJyfGNvbHxlbWJlZHxocnxpbWd8aW5w
dXR8bGlua3xtZXRhfHBhcmFtKSgoW2Etel1bXlwvXDA+XHgyMFx0XHJcblxmXSopW14+XSopXC8+
L2dpLAorCisgICAgLyogZXNsaW50LWVuYWJsZSAqLworCisgICAgLy8gU3VwcG9ydDogSUUgPD0x
MCAtIDExLCBFZGdlIDEyIC0gMTMKKyAgICAvLyBJbiBJRS9FZGdlIHVzaW5nIHJlZ2V4IGdyb3Vw
cyBoZXJlIGNhdXNlcyBzZXZlcmUgc2xvd2Rvd25zLgorICAgIC8vIFNlZSBodHRwczovL2Nvbm5l
Y3QubWljcm9zb2Z0LmNvbS9JRS9mZWVkYmFjay9kZXRhaWxzLzE3MzY1MTIvCisgICAgcm5vSW5u
ZXJodG1sID0gLzxzY3JpcHR8PHN0eWxlfDxsaW5rL2ksCisKKyAgICAvLyBjaGVja2VkPSJjaGVj
a2VkIiBvciBjaGVja2VkCisgICAgcmNoZWNrZWQgPSAvY2hlY2tlZFxzKig/OltePV18PVxzKi5j
aGVja2VkLikvaSwKKyAgICByc2NyaXB0VHlwZU1hc2tlZCA9IC9edHJ1ZVwvKC4qKS8sCisgICAg
cmNsZWFuU2NyaXB0ID0gL15ccyo8ISg/OlxbQ0RBVEFcW3wtLSl8KD86XF1cXXwtLSk+XHMqJC9n
OworCitmdW5jdGlvbiBtYW5pcHVsYXRpb25UYXJnZXQoIGVsZW0sIGNvbnRlbnQgKSB7CisgICAg
aWYgKCBqUXVlcnkubm9kZU5hbWUoIGVsZW0sICJ0YWJsZSIgKSAmJgorICAgICAgICBqUXVlcnku
bm9kZU5hbWUoIGNvbnRlbnQubm9kZVR5cGUgIT09IDExID8gY29udGVudCA6IGNvbnRlbnQuZmly
c3RDaGlsZCwgInRyIiApICkgeworCisgICAgICAgIHJldHVybiBlbGVtLmdldEVsZW1lbnRzQnlU
YWdOYW1lKCAidGJvZHkiIClbIDAgXSB8fCBlbGVtOworICAgIH0KKworICAgIHJldHVybiBlbGVt
OworfQorCisvLyBSZXBsYWNlL3Jlc3RvcmUgdGhlIHR5cGUgYXR0cmlidXRlIG9mIHNjcmlwdCBl
bGVtZW50cyBmb3Igc2FmZSBET00gbWFuaXB1bGF0aW9uCitmdW5jdGlvbiBkaXNhYmxlU2NyaXB0
KCBlbGVtICkgeworICAgIGVsZW0udHlwZSA9ICggZWxlbS5nZXRBdHRyaWJ1dGUoICJ0eXBlIiAp
ICE9PSBudWxsICkgKyAiLyIgKyBlbGVtLnR5cGU7CisgICAgcmV0dXJuIGVsZW07Cit9CitmdW5j
dGlvbiByZXN0b3JlU2NyaXB0KCBlbGVtICkgeworICAgIHZhciBtYXRjaCA9IHJzY3JpcHRUeXBl
TWFza2VkLmV4ZWMoIGVsZW0udHlwZSApOworCisgICAgaWYgKCBtYXRjaCApIHsKKyAgICAgICAg
ZWxlbS50eXBlID0gbWF0Y2hbIDEgXTsKKyAgICB9IGVsc2UgeworICAgICAgICBlbGVtLnJlbW92
ZUF0dHJpYnV0ZSggInR5cGUiICk7CisgICAgfQorCisgICAgcmV0dXJuIGVsZW07Cit9CisKK2Z1
bmN0aW9uIGNsb25lQ29weUV2ZW50KCBzcmMsIGRlc3QgKSB7CisgICAgdmFyIGksIGwsIHR5cGUs
IHBkYXRhT2xkLCBwZGF0YUN1ciwgdWRhdGFPbGQsIHVkYXRhQ3VyLCBldmVudHM7CisKKyAgICBp
ZiAoIGRlc3Qubm9kZVR5cGUgIT09IDEgKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICAvLyAxLiBDb3B5IHByaXZhdGUgZGF0YTogZXZlbnRzLCBoYW5kbGVycywgZXRjLgorICAgIGlm
ICggZGF0YVByaXYuaGFzRGF0YSggc3JjICkgKSB7CisgICAgICAgIHBkYXRhT2xkID0gZGF0YVBy
aXYuYWNjZXNzKCBzcmMgKTsKKyAgICAgICAgcGRhdGFDdXIgPSBkYXRhUHJpdi5zZXQoIGRlc3Qs
IHBkYXRhT2xkICk7CisgICAgICAgIGV2ZW50cyA9IHBkYXRhT2xkLmV2ZW50czsKKworICAgICAg
ICBpZiAoIGV2ZW50cyApIHsKKyAgICAgICAgICAgIGRlbGV0ZSBwZGF0YUN1ci5oYW5kbGU7Cisg
ICAgICAgICAgICBwZGF0YUN1ci5ldmVudHMgPSB7fTsKKworICAgICAgICAgICAgZm9yICggdHlw
ZSBpbiBldmVudHMgKSB7CisgICAgICAgICAgICAgICAgZm9yICggaSA9IDAsIGwgPSBldmVudHNb
IHR5cGUgXS5sZW5ndGg7IGkgPCBsOyBpKysgKSB7CisgICAgICAgICAgICAgICAgICAgIGpRdWVy
eS5ldmVudC5hZGQoIGRlc3QsIHR5cGUsIGV2ZW50c1sgdHlwZSBdWyBpIF0gKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyAyLiBD
b3B5IHVzZXIgZGF0YQorICAgIGlmICggZGF0YVVzZXIuaGFzRGF0YSggc3JjICkgKSB7CisgICAg
ICAgIHVkYXRhT2xkID0gZGF0YVVzZXIuYWNjZXNzKCBzcmMgKTsKKyAgICAgICAgdWRhdGFDdXIg
PSBqUXVlcnkuZXh0ZW5kKCB7fSwgdWRhdGFPbGQgKTsKKworICAgICAgICBkYXRhVXNlci5zZXQo
IGRlc3QsIHVkYXRhQ3VyICk7CisgICAgfQorfQorCisvLyBGaXggSUUgYnVncywgc2VlIHN1cHBv
cnQgdGVzdHMKK2Z1bmN0aW9uIGZpeElucHV0KCBzcmMsIGRlc3QgKSB7CisgICAgdmFyIG5vZGVO
YW1lID0gZGVzdC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOworCisgICAgLy8gRmFpbHMgdG8gcGVy
c2lzdCB0aGUgY2hlY2tlZCBzdGF0ZSBvZiBhIGNsb25lZCBjaGVja2JveCBvciByYWRpbyBidXR0
b24uCisgICAgaWYgKCBub2RlTmFtZSA9PT0gImlucHV0IiAmJiByY2hlY2thYmxlVHlwZS50ZXN0
KCBzcmMudHlwZSApICkgeworICAgICAgICBkZXN0LmNoZWNrZWQgPSBzcmMuY2hlY2tlZDsKKwor
ICAgIC8vIEZhaWxzIHRvIHJldHVybiB0aGUgc2VsZWN0ZWQgb3B0aW9uIHRvIHRoZSBkZWZhdWx0
IHNlbGVjdGVkIHN0YXRlIHdoZW4gY2xvbmluZyBvcHRpb25zCisgICAgfSBlbHNlIGlmICggbm9k
ZU5hbWUgPT09ICJpbnB1dCIgfHwgbm9kZU5hbWUgPT09ICJ0ZXh0YXJlYSIgKSB7CisgICAgICAg
IGRlc3QuZGVmYXVsdFZhbHVlID0gc3JjLmRlZmF1bHRWYWx1ZTsKKyAgICB9Cit9CisKK2Z1bmN0
aW9uIGRvbU1hbmlwKCBjb2xsZWN0aW9uLCBhcmdzLCBjYWxsYmFjaywgaWdub3JlZCApIHsKKwor
ICAgIC8vIEZsYXR0ZW4gYW55IG5lc3RlZCBhcnJheXMKKyAgICBhcmdzID0gY29uY2F0LmFwcGx5
KCBbXSwgYXJncyApOworCisgICAgdmFyIGZyYWdtZW50LCBmaXJzdCwgc2NyaXB0cywgaGFzU2Ny
aXB0cywgbm9kZSwgZG9jLAorICAgICAgICBpID0gMCwKKyAgICAgICAgbCA9IGNvbGxlY3Rpb24u
bGVuZ3RoLAorICAgICAgICBpTm9DbG9uZSA9IGwgLSAxLAorICAgICAgICB2YWx1ZSA9IGFyZ3Nb
IDAgXSwKKyAgICAgICAgaXNGdW5jdGlvbiA9IGpRdWVyeS5pc0Z1bmN0aW9uKCB2YWx1ZSApOwor
CisgICAgLy8gV2UgY2FuJ3QgY2xvbmVOb2RlIGZyYWdtZW50cyB0aGF0IGNvbnRhaW4gY2hlY2tl
ZCwgaW4gV2ViS2l0CisgICAgaWYgKCBpc0Z1bmN0aW9uIHx8CisgICAgICAgICAgICAoIGwgPiAx
ICYmIHR5cGVvZiB2YWx1ZSA9PT0gInN0cmluZyIgJiYKKyAgICAgICAgICAgICAgICAhc3VwcG9y
dC5jaGVja0Nsb25lICYmIHJjaGVja2VkLnRlc3QoIHZhbHVlICkgKSApIHsKKyAgICAgICAgcmV0
dXJuIGNvbGxlY3Rpb24uZWFjaCggZnVuY3Rpb24oIGluZGV4ICkgeworICAgICAgICAgICAgdmFy
IHNlbGYgPSBjb2xsZWN0aW9uLmVxKCBpbmRleCApOworICAgICAgICAgICAgaWYgKCBpc0Z1bmN0
aW9uICkgeworICAgICAgICAgICAgICAgIGFyZ3NbIDAgXSA9IHZhbHVlLmNhbGwoIHRoaXMsIGlu
ZGV4LCBzZWxmLmh0bWwoKSApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZG9tTWFuaXAo
IHNlbGYsIGFyZ3MsIGNhbGxiYWNrLCBpZ25vcmVkICk7CisgICAgICAgIH0gKTsKKyAgICB9CisK
KyAgICBpZiAoIGwgKSB7CisgICAgICAgIGZyYWdtZW50ID0gYnVpbGRGcmFnbWVudCggYXJncywg
Y29sbGVjdGlvblsgMCBdLm93bmVyRG9jdW1lbnQsIGZhbHNlLCBjb2xsZWN0aW9uLCBpZ25vcmVk
ICk7CisgICAgICAgIGZpcnN0ID0gZnJhZ21lbnQuZmlyc3RDaGlsZDsKKworICAgICAgICBpZiAo
IGZyYWdtZW50LmNoaWxkTm9kZXMubGVuZ3RoID09PSAxICkgeworICAgICAgICAgICAgZnJhZ21l
bnQgPSBmaXJzdDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFJlcXVpcmUgZWl0aGVyIG5ldyBj
b250ZW50IG9yIGFuIGludGVyZXN0IGluIGlnbm9yZWQgZWxlbWVudHMgdG8gaW52b2tlIHRoZSBj
YWxsYmFjaworICAgICAgICBpZiAoIGZpcnN0IHx8IGlnbm9yZWQgKSB7CisgICAgICAgICAgICBz
Y3JpcHRzID0galF1ZXJ5Lm1hcCggZ2V0QWxsKCBmcmFnbWVudCwgInNjcmlwdCIgKSwgZGlzYWJs
ZVNjcmlwdCApOworICAgICAgICAgICAgaGFzU2NyaXB0cyA9IHNjcmlwdHMubGVuZ3RoOworCisg
ICAgICAgICAgICAvLyBVc2UgdGhlIG9yaWdpbmFsIGZyYWdtZW50IGZvciB0aGUgbGFzdCBpdGVt
CisgICAgICAgICAgICAvLyBpbnN0ZWFkIG9mIHRoZSBmaXJzdCBiZWNhdXNlIGl0IGNhbiBlbmQg
dXAKKyAgICAgICAgICAgIC8vIGJlaW5nIGVtcHRpZWQgaW5jb3JyZWN0bHkgaW4gY2VydGFpbiBz
aXR1YXRpb25zICgjODA3MCkuCisgICAgICAgICAgICBmb3IgKCA7IGkgPCBsOyBpKysgKSB7Cisg
ICAgICAgICAgICAgICAgbm9kZSA9IGZyYWdtZW50OworCisgICAgICAgICAgICAgICAgaWYgKCBp
ICE9PSBpTm9DbG9uZSApIHsKKyAgICAgICAgICAgICAgICAgICAgbm9kZSA9IGpRdWVyeS5jbG9u
ZSggbm9kZSwgdHJ1ZSwgdHJ1ZSApOworCisgICAgICAgICAgICAgICAgICAgIC8vIEtlZXAgcmVm
ZXJlbmNlcyB0byBjbG9uZWQgc2NyaXB0cyBmb3IgbGF0ZXIgcmVzdG9yYXRpb24KKyAgICAgICAg
ICAgICAgICAgICAgaWYgKCBoYXNTY3JpcHRzICkgeworCisgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4wIG9ubHksIFBoYW50b21KUyAxIG9ubHkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIHB1c2guYXBwbHkoXywgYXJyYXlsaWtlKSB0aHJvd3Mgb24g
YW5jaWVudCBXZWJLaXQKKyAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5tZXJnZSggc2Ny
aXB0cywgZ2V0QWxsKCBub2RlLCAic2NyaXB0IiApICk7CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBjYWxsYmFjay5jYWxsKCBjb2xs
ZWN0aW9uWyBpIF0sIG5vZGUsIGkgKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYg
KCBoYXNTY3JpcHRzICkgeworICAgICAgICAgICAgICAgIGRvYyA9IHNjcmlwdHNbIHNjcmlwdHMu
bGVuZ3RoIC0gMSBdLm93bmVyRG9jdW1lbnQ7CisKKyAgICAgICAgICAgICAgICAvLyBSZWVuYWJs
ZSBzY3JpcHRzCisgICAgICAgICAgICAgICAgalF1ZXJ5Lm1hcCggc2NyaXB0cywgcmVzdG9yZVNj
cmlwdCApOworCisgICAgICAgICAgICAgICAgLy8gRXZhbHVhdGUgZXhlY3V0YWJsZSBzY3JpcHRz
IG9uIGZpcnN0IGRvY3VtZW50IGluc2VydGlvbgorICAgICAgICAgICAgICAgIGZvciAoIGkgPSAw
OyBpIDwgaGFzU2NyaXB0czsgaSsrICkgeworICAgICAgICAgICAgICAgICAgICBub2RlID0gc2Ny
aXB0c1sgaSBdOworICAgICAgICAgICAgICAgICAgICBpZiAoIHJzY3JpcHRUeXBlLnRlc3QoIG5v
ZGUudHlwZSB8fCAiIiApICYmCisgICAgICAgICAgICAgICAgICAgICAgICAhZGF0YVByaXYuYWNj
ZXNzKCBub2RlLCAiZ2xvYmFsRXZhbCIgKSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgalF1
ZXJ5LmNvbnRhaW5zKCBkb2MsIG5vZGUgKSApIHsKKworICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCBub2RlLnNyYyApIHsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE9wdGlv
bmFsIEFKQVggZGVwZW5kZW5jeSwgYnV0IHdvbid0IHJ1biBzY3JpcHRzIGlmIG5vdCBwcmVzZW50
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBqUXVlcnkuX2V2YWxVcmwgKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5fZXZhbFVybCggbm9kZS5zcmMg
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIERPTUV2YWwoIG5vZGUudGV4
dENvbnRlbnQucmVwbGFjZSggcmNsZWFuU2NyaXB0LCAiIiApLCBkb2MgKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBjb2xsZWN0aW9u
OworfQorCitmdW5jdGlvbiByZW1vdmUoIGVsZW0sIHNlbGVjdG9yLCBrZWVwRGF0YSApIHsKKyAg
ICB2YXIgbm9kZSwKKyAgICAgICAgbm9kZXMgPSBzZWxlY3RvciA/IGpRdWVyeS5maWx0ZXIoIHNl
bGVjdG9yLCBlbGVtICkgOiBlbGVtLAorICAgICAgICBpID0gMDsKKworICAgIGZvciAoIDsgKCBu
b2RlID0gbm9kZXNbIGkgXSApICE9IG51bGw7IGkrKyApIHsKKyAgICAgICAgaWYgKCAha2VlcERh
dGEgJiYgbm9kZS5ub2RlVHlwZSA9PT0gMSApIHsKKyAgICAgICAgICAgIGpRdWVyeS5jbGVhbkRh
dGEoIGdldEFsbCggbm9kZSApICk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIG5vZGUucGFy
ZW50Tm9kZSApIHsKKyAgICAgICAgICAgIGlmICgga2VlcERhdGEgJiYgalF1ZXJ5LmNvbnRhaW5z
KCBub2RlLm93bmVyRG9jdW1lbnQsIG5vZGUgKSApIHsKKyAgICAgICAgICAgICAgICBzZXRHbG9i
YWxFdmFsKCBnZXRBbGwoIG5vZGUsICJzY3JpcHQiICkgKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIG5vZGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCggbm9kZSApOworICAgICAgICB9Cisg
ICAgfQorCisgICAgcmV0dXJuIGVsZW07Cit9CisKK2pRdWVyeS5leHRlbmQoIHsKKyAgICBodG1s
UHJlZmlsdGVyOiBmdW5jdGlvbiggaHRtbCApIHsKKyAgICAgICAgcmV0dXJuIGh0bWwucmVwbGFj
ZSggcnhodG1sVGFnLCAiPCQxPjwvJDI+IiApOworICAgIH0sCisKKyAgICBjbG9uZTogZnVuY3Rp
b24oIGVsZW0sIGRhdGFBbmRFdmVudHMsIGRlZXBEYXRhQW5kRXZlbnRzICkgeworICAgICAgICB2
YXIgaSwgbCwgc3JjRWxlbWVudHMsIGRlc3RFbGVtZW50cywKKyAgICAgICAgICAgIGNsb25lID0g
ZWxlbS5jbG9uZU5vZGUoIHRydWUgKSwKKyAgICAgICAgICAgIGluUGFnZSA9IGpRdWVyeS5jb250
YWlucyggZWxlbS5vd25lckRvY3VtZW50LCBlbGVtICk7CisKKyAgICAgICAgLy8gRml4IElFIGNs
b25pbmcgaXNzdWVzCisgICAgICAgIGlmICggIXN1cHBvcnQubm9DbG9uZUNoZWNrZWQgJiYgKCBl
bGVtLm5vZGVUeXBlID09PSAxIHx8IGVsZW0ubm9kZVR5cGUgPT09IDExICkgJiYKKyAgICAgICAg
ICAgICAgICAhalF1ZXJ5LmlzWE1MRG9jKCBlbGVtICkgKSB7CisKKyAgICAgICAgICAgIC8vIFdl
IGVzY2hldyBTaXp6bGUgaGVyZSBmb3IgcGVyZm9ybWFuY2UgcmVhc29uczogaHR0cHM6Ly9qc3Bl
cmYuY29tL2dldGFsbC12cy1zaXp6bGUvMgorICAgICAgICAgICAgZGVzdEVsZW1lbnRzID0gZ2V0
QWxsKCBjbG9uZSApOworICAgICAgICAgICAgc3JjRWxlbWVudHMgPSBnZXRBbGwoIGVsZW0gKTsK
KworICAgICAgICAgICAgZm9yICggaSA9IDAsIGwgPSBzcmNFbGVtZW50cy5sZW5ndGg7IGkgPCBs
OyBpKysgKSB7CisgICAgICAgICAgICAgICAgZml4SW5wdXQoIHNyY0VsZW1lbnRzWyBpIF0sIGRl
c3RFbGVtZW50c1sgaSBdICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAv
LyBDb3B5IHRoZSBldmVudHMgZnJvbSB0aGUgb3JpZ2luYWwgdG8gdGhlIGNsb25lCisgICAgICAg
IGlmICggZGF0YUFuZEV2ZW50cyApIHsKKyAgICAgICAgICAgIGlmICggZGVlcERhdGFBbmRFdmVu
dHMgKSB7CisgICAgICAgICAgICAgICAgc3JjRWxlbWVudHMgPSBzcmNFbGVtZW50cyB8fCBnZXRB
bGwoIGVsZW0gKTsKKyAgICAgICAgICAgICAgICBkZXN0RWxlbWVudHMgPSBkZXN0RWxlbWVudHMg
fHwgZ2V0QWxsKCBjbG9uZSApOworCisgICAgICAgICAgICAgICAgZm9yICggaSA9IDAsIGwgPSBz
cmNFbGVtZW50cy5sZW5ndGg7IGkgPCBsOyBpKysgKSB7CisgICAgICAgICAgICAgICAgICAgIGNs
b25lQ29weUV2ZW50KCBzcmNFbGVtZW50c1sgaSBdLCBkZXN0RWxlbWVudHNbIGkgXSApOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgY2xv
bmVDb3B5RXZlbnQoIGVsZW0sIGNsb25lICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwor
ICAgICAgICAvLyBQcmVzZXJ2ZSBzY3JpcHQgZXZhbHVhdGlvbiBoaXN0b3J5CisgICAgICAgIGRl
c3RFbGVtZW50cyA9IGdldEFsbCggY2xvbmUsICJzY3JpcHQiICk7CisgICAgICAgIGlmICggZGVz
dEVsZW1lbnRzLmxlbmd0aCA+IDAgKSB7CisgICAgICAgICAgICBzZXRHbG9iYWxFdmFsKCBkZXN0
RWxlbWVudHMsICFpblBhZ2UgJiYgZ2V0QWxsKCBlbGVtLCAic2NyaXB0IiApICk7CisgICAgICAg
IH0KKworICAgICAgICAvLyBSZXR1cm4gdGhlIGNsb25lZCBzZXQKKyAgICAgICAgcmV0dXJuIGNs
b25lOworICAgIH0sCisKKyAgICBjbGVhbkRhdGE6IGZ1bmN0aW9uKCBlbGVtcyApIHsKKyAgICAg
ICAgdmFyIGRhdGEsIGVsZW0sIHR5cGUsCisgICAgICAgICAgICBzcGVjaWFsID0galF1ZXJ5LmV2
ZW50LnNwZWNpYWwsCisgICAgICAgICAgICBpID0gMDsKKworICAgICAgICBmb3IgKCA7ICggZWxl
bSA9IGVsZW1zWyBpIF0gKSAhPT0gdW5kZWZpbmVkOyBpKysgKSB7CisgICAgICAgICAgICBpZiAo
IGFjY2VwdERhdGEoIGVsZW0gKSApIHsKKyAgICAgICAgICAgICAgICBpZiAoICggZGF0YSA9IGVs
ZW1bIGRhdGFQcml2LmV4cGFuZG8gXSApICkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIGRh
dGEuZXZlbnRzICkgeworICAgICAgICAgICAgICAgICAgICAgICAgZm9yICggdHlwZSBpbiBkYXRh
LmV2ZW50cyApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHNwZWNpYWxbIHR5
cGUgXSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmV2ZW50LnJl
bW92ZSggZWxlbSwgdHlwZSApOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhp
cyBpcyBhIHNob3J0Y3V0IHRvIGF2b2lkIGpRdWVyeS5ldmVudC5yZW1vdmUncyBvdmVyaGVhZAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGpRdWVyeS5yZW1vdmVFdmVudCggZWxlbSwgdHlwZSwgZGF0YS5oYW5kbGUg
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAvLyBTdXBw
b3J0OiBDaHJvbWUgPD0zNSAtIDQ1KworICAgICAgICAgICAgICAgICAgICAvLyBBc3NpZ24gdW5k
ZWZpbmVkIGluc3RlYWQgb2YgdXNpbmcgZGVsZXRlLCBzZWUgRGF0YSNyZW1vdmUKKyAgICAgICAg
ICAgICAgICAgICAgZWxlbVsgZGF0YVByaXYuZXhwYW5kbyBdID0gdW5kZWZpbmVkOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoIGVsZW1bIGRhdGFVc2VyLmV4cGFuZG8g
XSApIHsKKworICAgICAgICAgICAgICAgICAgICAvLyBTdXBwb3J0OiBDaHJvbWUgPD0zNSAtIDQ1
KworICAgICAgICAgICAgICAgICAgICAvLyBBc3NpZ24gdW5kZWZpbmVkIGluc3RlYWQgb2YgdXNp
bmcgZGVsZXRlLCBzZWUgRGF0YSNyZW1vdmUKKyAgICAgICAgICAgICAgICAgICAgZWxlbVsgZGF0
YVVzZXIuZXhwYW5kbyBdID0gdW5kZWZpbmVkOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KK30gKTsKKworalF1ZXJ5LmZuLmV4dGVuZCggeworICAg
IGRldGFjaDogZnVuY3Rpb24oIHNlbGVjdG9yICkgeworICAgICAgICByZXR1cm4gcmVtb3ZlKCB0
aGlzLCBzZWxlY3RvciwgdHJ1ZSApOworICAgIH0sCisKKyAgICByZW1vdmU6IGZ1bmN0aW9uKCBz
ZWxlY3RvciApIHsKKyAgICAgICAgcmV0dXJuIHJlbW92ZSggdGhpcywgc2VsZWN0b3IgKTsKKyAg
ICB9LAorCisgICAgdGV4dDogZnVuY3Rpb24oIHZhbHVlICkgeworICAgICAgICByZXR1cm4gYWNj
ZXNzKCB0aGlzLCBmdW5jdGlvbiggdmFsdWUgKSB7CisgICAgICAgICAgICByZXR1cm4gdmFsdWUg
PT09IHVuZGVmaW5lZCA/CisgICAgICAgICAgICAgICAgalF1ZXJ5LnRleHQoIHRoaXMgKSA6Cisg
ICAgICAgICAgICAgICAgdGhpcy5lbXB0eSgpLmVhY2goIGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgICAgICAgICBpZiAoIHRoaXMubm9kZVR5cGUgPT09IDEgfHwgdGhpcy5ub2RlVHlwZSA9PT0g
MTEgfHwgdGhpcy5ub2RlVHlwZSA9PT0gOSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRo
aXMudGV4dENvbnRlbnQgPSB2YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIH0gKTsKKyAgICAgICAgfSwgbnVsbCwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggKTsK
KyAgICB9LAorCisgICAgYXBwZW5kOiBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIGRvbU1h
bmlwKCB0aGlzLCBhcmd1bWVudHMsIGZ1bmN0aW9uKCBlbGVtICkgeworICAgICAgICAgICAgaWYg
KCB0aGlzLm5vZGVUeXBlID09PSAxIHx8IHRoaXMubm9kZVR5cGUgPT09IDExIHx8IHRoaXMubm9k
ZVR5cGUgPT09IDkgKSB7CisgICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IG1hbmlwdWxhdGlv
blRhcmdldCggdGhpcywgZWxlbSApOworICAgICAgICAgICAgICAgIHRhcmdldC5hcHBlbmRDaGls
ZCggZWxlbSApOworICAgICAgICAgICAgfQorICAgICAgICB9ICk7CisgICAgfSwKKworICAgIHBy
ZXBlbmQ6IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gZG9tTWFuaXAoIHRoaXMsIGFyZ3Vt
ZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7CisgICAgICAgICAgICBpZiAoIHRoaXMubm9kZVR5cGUg
PT09IDEgfHwgdGhpcy5ub2RlVHlwZSA9PT0gMTEgfHwgdGhpcy5ub2RlVHlwZSA9PT0gOSApIHsK
KyAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gbWFuaXB1bGF0aW9uVGFyZ2V0KCB0aGlzLCBl
bGVtICk7CisgICAgICAgICAgICAgICAgdGFyZ2V0Lmluc2VydEJlZm9yZSggZWxlbSwgdGFyZ2V0
LmZpcnN0Q2hpbGQgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSApOworICAgIH0sCisKKyAg
ICBiZWZvcmU6IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gZG9tTWFuaXAoIHRoaXMsIGFy
Z3VtZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7CisgICAgICAgICAgICBpZiAoIHRoaXMucGFyZW50
Tm9kZSApIHsKKyAgICAgICAgICAgICAgICB0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKCBl
bGVtLCB0aGlzICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gKTsKKyAgICB9LAorCisgICAg
YWZ0ZXI6IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gZG9tTWFuaXAoIHRoaXMsIGFyZ3Vt
ZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7CisgICAgICAgICAgICBpZiAoIHRoaXMucGFyZW50Tm9k
ZSApIHsKKyAgICAgICAgICAgICAgICB0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKCBlbGVt
LCB0aGlzLm5leHRTaWJsaW5nICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gKTsKKyAgICB9
LAorCisgICAgZW1wdHk6IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgZWxlbSwKKyAgICAgICAg
ICAgIGkgPSAwOworCisgICAgICAgIGZvciAoIDsgKCBlbGVtID0gdGhpc1sgaSBdICkgIT0gbnVs
bDsgaSsrICkgeworICAgICAgICAgICAgaWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICkgeworCisg
ICAgICAgICAgICAgICAgLy8gUHJldmVudCBtZW1vcnkgbGVha3MKKyAgICAgICAgICAgICAgICBq
UXVlcnkuY2xlYW5EYXRhKCBnZXRBbGwoIGVsZW0sIGZhbHNlICkgKTsKKworICAgICAgICAgICAg
ICAgIC8vIFJlbW92ZSBhbnkgcmVtYWluaW5nIG5vZGVzCisgICAgICAgICAgICAgICAgZWxlbS50
ZXh0Q29udGVudCA9ICIiOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0
dXJuIHRoaXM7CisgICAgfSwKKworICAgIGNsb25lOiBmdW5jdGlvbiggZGF0YUFuZEV2ZW50cywg
ZGVlcERhdGFBbmRFdmVudHMgKSB7CisgICAgICAgIGRhdGFBbmRFdmVudHMgPSBkYXRhQW5kRXZl
bnRzID09IG51bGwgPyBmYWxzZSA6IGRhdGFBbmRFdmVudHM7CisgICAgICAgIGRlZXBEYXRhQW5k
RXZlbnRzID0gZGVlcERhdGFBbmRFdmVudHMgPT0gbnVsbCA/IGRhdGFBbmRFdmVudHMgOiBkZWVw
RGF0YUFuZEV2ZW50czsKKworICAgICAgICByZXR1cm4gdGhpcy5tYXAoIGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgcmV0dXJuIGpRdWVyeS5jbG9uZSggdGhpcywgZGF0YUFuZEV2ZW50cywgZGVl
cERhdGFBbmRFdmVudHMgKTsKKyAgICAgICAgfSApOworICAgIH0sCisKKyAgICBodG1sOiBmdW5j
dGlvbiggdmFsdWUgKSB7CisgICAgICAgIHJldHVybiBhY2Nlc3MoIHRoaXMsIGZ1bmN0aW9uKCB2
YWx1ZSApIHsKKyAgICAgICAgICAgIHZhciBlbGVtID0gdGhpc1sgMCBdIHx8IHt9LAorICAgICAg
ICAgICAgICAgIGkgPSAwLAorICAgICAgICAgICAgICAgIGwgPSB0aGlzLmxlbmd0aDsKKworICAg
ICAgICAgICAgaWYgKCB2YWx1ZSA9PT0gdW5kZWZpbmVkICYmIGVsZW0ubm9kZVR5cGUgPT09IDEg
KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW0uaW5uZXJIVE1MOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAvLyBTZWUgaWYgd2UgY2FuIHRha2UgYSBzaG9ydGN1dCBhbmQganVz
dCB1c2UgaW5uZXJIVE1MCisgICAgICAgICAgICBpZiAoIHR5cGVvZiB2YWx1ZSA9PT0gInN0cmlu
ZyIgJiYgIXJub0lubmVyaHRtbC50ZXN0KCB2YWx1ZSApICYmCisgICAgICAgICAgICAgICAgIXdy
YXBNYXBbICggcnRhZ05hbWUuZXhlYyggdmFsdWUgKSB8fCBbICIiLCAiIiBdIClbIDEgXS50b0xv
d2VyQ2FzZSgpIF0gKSB7CisKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IGpRdWVyeS5odG1sUHJl
ZmlsdGVyKCB2YWx1ZSApOworCisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAg
ICAgICAgZm9yICggOyBpIDwgbDsgaSsrICkgeworICAgICAgICAgICAgICAgICAgICAgICAgZWxl
bSA9IHRoaXNbIGkgXSB8fCB7fTsKKworICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVtb3Zl
IGVsZW1lbnQgbm9kZXMgYW5kIHByZXZlbnQgbWVtb3J5IGxlYWtzCisgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgalF1ZXJ5LmNsZWFuRGF0YSggZ2V0QWxsKCBlbGVtLCBmYWxzZSApICk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZWxlbS5pbm5lckhUTUwgPSB2YWx1ZTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgICAgIGVsZW0gPSAwOworCisgICAgICAgICAgICAgICAgLy8gSWYgdXNpbmcgaW5uZXJIVE1M
IHRocm93cyBhbiBleGNlcHRpb24sIHVzZSB0aGUgZmFsbGJhY2sgbWV0aG9kCisgICAgICAgICAg
ICAgICAgfSBjYXRjaCAoIGUgKSB7fQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAo
IGVsZW0gKSB7CisgICAgICAgICAgICAgICAgdGhpcy5lbXB0eSgpLmFwcGVuZCggdmFsdWUgKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfSwgbnVsbCwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGgg
KTsKKyAgICB9LAorCisgICAgcmVwbGFjZVdpdGg6IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIg
aWdub3JlZCA9IFtdOworCisgICAgICAgIC8vIE1ha2UgdGhlIGNoYW5nZXMsIHJlcGxhY2luZyBl
YWNoIG5vbi1pZ25vcmVkIGNvbnRleHQgZWxlbWVudCB3aXRoIHRoZSBuZXcgY29udGVudAorICAg
ICAgICByZXR1cm4gZG9tTWFuaXAoIHRoaXMsIGFyZ3VtZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7
CisgICAgICAgICAgICB2YXIgcGFyZW50ID0gdGhpcy5wYXJlbnROb2RlOworCisgICAgICAgICAg
ICBpZiAoIGpRdWVyeS5pbkFycmF5KCB0aGlzLCBpZ25vcmVkICkgPCAwICkgeworICAgICAgICAg
ICAgICAgIGpRdWVyeS5jbGVhbkRhdGEoIGdldEFsbCggdGhpcyApICk7CisgICAgICAgICAgICAg
ICAgaWYgKCBwYXJlbnQgKSB7CisgICAgICAgICAgICAgICAgICAgIHBhcmVudC5yZXBsYWNlQ2hp
bGQoIGVsZW0sIHRoaXMgKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgLy8gRm9yY2UgY2FsbGJhY2sgaW52b2NhdGlvbgorICAgICAgICB9LCBpZ25vcmVkICk7
CisgICAgfQorfSApOworCitqUXVlcnkuZWFjaCggeworICAgIGFwcGVuZFRvOiAiYXBwZW5kIiwK
KyAgICBwcmVwZW5kVG86ICJwcmVwZW5kIiwKKyAgICBpbnNlcnRCZWZvcmU6ICJiZWZvcmUiLAor
ICAgIGluc2VydEFmdGVyOiAiYWZ0ZXIiLAorICAgIHJlcGxhY2VBbGw6ICJyZXBsYWNlV2l0aCIK
K30sIGZ1bmN0aW9uKCBuYW1lLCBvcmlnaW5hbCApIHsKKyAgICBqUXVlcnkuZm5bIG5hbWUgXSA9
IGZ1bmN0aW9uKCBzZWxlY3RvciApIHsKKyAgICAgICAgdmFyIGVsZW1zLAorICAgICAgICAgICAg
cmV0ID0gW10sCisgICAgICAgICAgICBpbnNlcnQgPSBqUXVlcnkoIHNlbGVjdG9yICksCisgICAg
ICAgICAgICBsYXN0ID0gaW5zZXJ0Lmxlbmd0aCAtIDEsCisgICAgICAgICAgICBpID0gMDsKKwor
ICAgICAgICBmb3IgKCA7IGkgPD0gbGFzdDsgaSsrICkgeworICAgICAgICAgICAgZWxlbXMgPSBp
ID09PSBsYXN0ID8gdGhpcyA6IHRoaXMuY2xvbmUoIHRydWUgKTsKKyAgICAgICAgICAgIGpRdWVy
eSggaW5zZXJ0WyBpIF0gKVsgb3JpZ2luYWwgXSggZWxlbXMgKTsKKworICAgICAgICAgICAgLy8g
U3VwcG9ydDogQW5kcm9pZCA8PTQuMCBvbmx5LCBQaGFudG9tSlMgMSBvbmx5CisgICAgICAgICAg
ICAvLyAuZ2V0KCkgYmVjYXVzZSBwdXNoLmFwcGx5KF8sIGFycmF5bGlrZSkgdGhyb3dzIG9uIGFu
Y2llbnQgV2ViS2l0CisgICAgICAgICAgICBwdXNoLmFwcGx5KCByZXQsIGVsZW1zLmdldCgpICk7
CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdGhpcy5wdXNoU3RhY2soIHJldCApOworICAg
IH07Cit9ICk7Cit2YXIgcm1hcmdpbiA9ICggL15tYXJnaW4vICk7CisKK3ZhciBybnVtbm9ucHgg
PSBuZXcgUmVnRXhwKCAiXigiICsgcG51bSArICIpKD8hcHgpW2EteiVdKyQiLCAiaSIgKTsKKwor
dmFyIGdldFN0eWxlcyA9IGZ1bmN0aW9uKCBlbGVtICkgeworCisgICAgICAgIC8vIFN1cHBvcnQ6
IElFIDw9MTEgb25seSwgRmlyZWZveCA8PTMwICgjMTUwOTgsICMxNDE1MCkKKyAgICAgICAgLy8g
SUUgdGhyb3dzIG9uIGVsZW1lbnRzIGNyZWF0ZWQgaW4gcG9wdXBzCisgICAgICAgIC8vIEZGIG1l
YW53aGlsZSB0aHJvd3Mgb24gZnJhbWUgZWxlbWVudHMgdGhyb3VnaCAiZGVmYXVsdFZpZXcuZ2V0
Q29tcHV0ZWRTdHlsZSIKKyAgICAgICAgdmFyIHZpZXcgPSBlbGVtLm93bmVyRG9jdW1lbnQuZGVm
YXVsdFZpZXc7CisKKyAgICAgICAgaWYgKCAhdmlldyB8fCAhdmlldy5vcGVuZXIgKSB7CisgICAg
ICAgICAgICB2aWV3ID0gd2luZG93OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHZpZXcu
Z2V0Q29tcHV0ZWRTdHlsZSggZWxlbSApOworICAgIH07CisKKworCisoIGZ1bmN0aW9uKCkgewor
CisgICAgLy8gRXhlY3V0aW5nIGJvdGggcGl4ZWxQb3NpdGlvbiAmIGJveFNpemluZ1JlbGlhYmxl
IHRlc3RzIHJlcXVpcmUgb25seSBvbmUgbGF5b3V0CisgICAgLy8gc28gdGhleSdyZSBleGVjdXRl
ZCBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgdGhlIHNlY29uZCBjb21wdXRhdGlvbi4KKyAgICBm
dW5jdGlvbiBjb21wdXRlU3R5bGVUZXN0cygpIHsKKworICAgICAgICAvLyBUaGlzIGlzIGEgc2lu
Z2xldG9uLCB3ZSBuZWVkIHRvIGV4ZWN1dGUgaXQgb25seSBvbmNlCisgICAgICAgIGlmICggIWRp
diApIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGRpdi5zdHls
ZS5jc3NUZXh0ID0KKyAgICAgICAgICAgICJib3gtc2l6aW5nOmJvcmRlci1ib3g7IiArCisgICAg
ICAgICAgICAicG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpibG9jazsiICsKKyAgICAgICAgICAg
ICJtYXJnaW46YXV0bztib3JkZXI6MXB4O3BhZGRpbmc6MXB4OyIgKworICAgICAgICAgICAgInRv
cDoxJTt3aWR0aDo1MCUiOworICAgICAgICBkaXYuaW5uZXJIVE1MID0gIiI7CisgICAgICAgIGRv
Y3VtZW50RWxlbWVudC5hcHBlbmRDaGlsZCggY29udGFpbmVyICk7CisKKyAgICAgICAgdmFyIGRp
dlN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoIGRpdiApOworICAgICAgICBwaXhlbFBv
c2l0aW9uVmFsID0gZGl2U3R5bGUudG9wICE9PSAiMSUiOworCisgICAgICAgIC8vIFN1cHBvcnQ6
IEFuZHJvaWQgNC4wIC0gNC4zIG9ubHksIEZpcmVmb3ggPD0zIC0gNDQKKyAgICAgICAgcmVsaWFi
bGVNYXJnaW5MZWZ0VmFsID0gZGl2U3R5bGUubWFyZ2luTGVmdCA9PT0gIjJweCI7CisgICAgICAg
IGJveFNpemluZ1JlbGlhYmxlVmFsID0gZGl2U3R5bGUud2lkdGggPT09ICI0cHgiOworCisgICAg
ICAgIC8vIFN1cHBvcnQ6IEFuZHJvaWQgNC4wIC0gNC4zIG9ubHkKKyAgICAgICAgLy8gU29tZSBz
dHlsZXMgY29tZSBiYWNrIHdpdGggcGVyY2VudGFnZSB2YWx1ZXMsIGV2ZW4gdGhvdWdoIHRoZXkg
c2hvdWxkbid0CisgICAgICAgIGRpdi5zdHlsZS5tYXJnaW5SaWdodCA9ICI1MCUiOworICAgICAg
ICBwaXhlbE1hcmdpblJpZ2h0VmFsID0gZGl2U3R5bGUubWFyZ2luUmlnaHQgPT09ICI0cHgiOwor
CisgICAgICAgIGRvY3VtZW50RWxlbWVudC5yZW1vdmVDaGlsZCggY29udGFpbmVyICk7CisKKyAg
ICAgICAgLy8gTnVsbGlmeSB0aGUgZGl2IHNvIGl0IHdvdWxkbid0IGJlIHN0b3JlZCBpbiB0aGUg
bWVtb3J5IGFuZAorICAgICAgICAvLyBpdCB3aWxsIGFsc28gYmUgYSBzaWduIHRoYXQgY2hlY2tz
IGFscmVhZHkgcGVyZm9ybWVkCisgICAgICAgIGRpdiA9IG51bGw7CisgICAgfQorCisgICAgdmFy
IHBpeGVsUG9zaXRpb25WYWwsIGJveFNpemluZ1JlbGlhYmxlVmFsLCBwaXhlbE1hcmdpblJpZ2h0
VmFsLCByZWxpYWJsZU1hcmdpbkxlZnRWYWwsCisgICAgICAgIGNvbnRhaW5lciA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoICJkaXYiICksCisgICAgICAgIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoICJkaXYiICk7CisKKyAgICAvLyBGaW5pc2ggZWFybHkgaW4gbGltaXRlZCAobm9uLWJy
b3dzZXIpIGVudmlyb25tZW50cworICAgIGlmICggIWRpdi5zdHlsZSApIHsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIC8vIFN1cHBvcnQ6IElFIDw9OSAtIDExIG9ubHkKKyAgICAvLyBT
dHlsZSBvZiBjbG9uZWQgZWxlbWVudCBhZmZlY3RzIHNvdXJjZSBlbGVtZW50IGNsb25lZCAoIzg5
MDgpCisgICAgZGl2LnN0eWxlLmJhY2tncm91bmRDbGlwID0gImNvbnRlbnQtYm94IjsKKyAgICBk
aXYuY2xvbmVOb2RlKCB0cnVlICkuc3R5bGUuYmFja2dyb3VuZENsaXAgPSAiIjsKKyAgICBzdXBw
b3J0LmNsZWFyQ2xvbmVTdHlsZSA9IGRpdi5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCA9PT0gImNvbnRl
bnQtYm94IjsKKworICAgIGNvbnRhaW5lci5zdHlsZS5jc3NUZXh0ID0gImJvcmRlcjowO3dpZHRo
OjhweDtoZWlnaHQ6MDt0b3A6MDtsZWZ0Oi05OTk5cHg7IiArCisgICAgICAgICJwYWRkaW5nOjA7
bWFyZ2luLXRvcDoxcHg7cG9zaXRpb246YWJzb2x1dGUiOworICAgIGNvbnRhaW5lci5hcHBlbmRD
aGlsZCggZGl2ICk7CisKKyAgICBqUXVlcnkuZXh0ZW5kKCBzdXBwb3J0LCB7CisgICAgICAgIHBp
eGVsUG9zaXRpb246IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgY29tcHV0ZVN0eWxlVGVzdHMo
KTsKKyAgICAgICAgICAgIHJldHVybiBwaXhlbFBvc2l0aW9uVmFsOworICAgICAgICB9LAorICAg
ICAgICBib3hTaXppbmdSZWxpYWJsZTogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBjb21wdXRl
U3R5bGVUZXN0cygpOworICAgICAgICAgICAgcmV0dXJuIGJveFNpemluZ1JlbGlhYmxlVmFsOwor
ICAgICAgICB9LAorICAgICAgICBwaXhlbE1hcmdpblJpZ2h0OiBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgIGNvbXB1dGVTdHlsZVRlc3RzKCk7CisgICAgICAgICAgICByZXR1cm4gcGl4ZWxNYXJn
aW5SaWdodFZhbDsKKyAgICAgICAgfSwKKyAgICAgICAgcmVsaWFibGVNYXJnaW5MZWZ0OiBmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgIGNvbXB1dGVTdHlsZVRlc3RzKCk7CisgICAgICAgICAgICBy
ZXR1cm4gcmVsaWFibGVNYXJnaW5MZWZ0VmFsOworICAgICAgICB9CisgICAgfSApOworfSApKCk7
CisKKworZnVuY3Rpb24gY3VyQ1NTKCBlbGVtLCBuYW1lLCBjb21wdXRlZCApIHsKKyAgICB2YXIg
d2lkdGgsIG1pbldpZHRoLCBtYXhXaWR0aCwgcmV0LAorICAgICAgICBzdHlsZSA9IGVsZW0uc3R5
bGU7CisKKyAgICBjb21wdXRlZCA9IGNvbXB1dGVkIHx8IGdldFN0eWxlcyggZWxlbSApOworCisg
ICAgLy8gU3VwcG9ydDogSUUgPD05IG9ubHkKKyAgICAvLyBnZXRQcm9wZXJ0eVZhbHVlIGlzIG9u
bHkgbmVlZGVkIGZvciAuY3NzKCdmaWx0ZXInKSAoIzEyNTM3KQorICAgIGlmICggY29tcHV0ZWQg
KSB7CisgICAgICAgIHJldCA9IGNvbXB1dGVkLmdldFByb3BlcnR5VmFsdWUoIG5hbWUgKSB8fCBj
b21wdXRlZFsgbmFtZSBdOworCisgICAgICAgIGlmICggcmV0ID09PSAiIiAmJiAhalF1ZXJ5LmNv
bnRhaW5zKCBlbGVtLm93bmVyRG9jdW1lbnQsIGVsZW0gKSApIHsKKyAgICAgICAgICAgIHJldCA9
IGpRdWVyeS5zdHlsZSggZWxlbSwgbmFtZSApOworICAgICAgICB9CisKKyAgICAgICAgLy8gQSB0
cmlidXRlIHRvIHRoZSAiYXdlc29tZSBoYWNrIGJ5IERlYW4gRWR3YXJkcyIKKyAgICAgICAgLy8g
QW5kcm9pZCBCcm93c2VyIHJldHVybnMgcGVyY2VudGFnZSBmb3Igc29tZSB2YWx1ZXMsCisgICAg
ICAgIC8vIGJ1dCB3aWR0aCBzZWVtcyB0byBiZSByZWxpYWJseSBwaXhlbHMuCisgICAgICAgIC8v
IFRoaXMgaXMgYWdhaW5zdCB0aGUgQ1NTT00gZHJhZnQgc3BlYzoKKyAgICAgICAgLy8gaHR0cHM6
Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzc29tLyNyZXNvbHZlZC12YWx1ZXMKKyAgICAgICAgaWYgKCAh
c3VwcG9ydC5waXhlbE1hcmdpblJpZ2h0KCkgJiYgcm51bW5vbnB4LnRlc3QoIHJldCApICYmIHJt
YXJnaW4udGVzdCggbmFtZSApICkgeworCisgICAgICAgICAgICAvLyBSZW1lbWJlciB0aGUgb3Jp
Z2luYWwgdmFsdWVzCisgICAgICAgICAgICB3aWR0aCA9IHN0eWxlLndpZHRoOworICAgICAgICAg
ICAgbWluV2lkdGggPSBzdHlsZS5taW5XaWR0aDsKKyAgICAgICAgICAgIG1heFdpZHRoID0gc3R5
bGUubWF4V2lkdGg7CisKKyAgICAgICAgICAgIC8vIFB1dCBpbiB0aGUgbmV3IHZhbHVlcyB0byBn
ZXQgYSBjb21wdXRlZCB2YWx1ZSBvdXQKKyAgICAgICAgICAgIHN0eWxlLm1pbldpZHRoID0gc3R5
bGUubWF4V2lkdGggPSBzdHlsZS53aWR0aCA9IHJldDsKKyAgICAgICAgICAgIHJldCA9IGNvbXB1
dGVkLndpZHRoOworCisgICAgICAgICAgICAvLyBSZXZlcnQgdGhlIGNoYW5nZWQgdmFsdWVzCisg
ICAgICAgICAgICBzdHlsZS53aWR0aCA9IHdpZHRoOworICAgICAgICAgICAgc3R5bGUubWluV2lk
dGggPSBtaW5XaWR0aDsKKyAgICAgICAgICAgIHN0eWxlLm1heFdpZHRoID0gbWF4V2lkdGg7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gcmV0ICE9PSB1bmRlZmluZWQgPworCisgICAg
ICAgIC8vIFN1cHBvcnQ6IElFIDw9OSAtIDExIG9ubHkKKyAgICAgICAgLy8gSUUgcmV0dXJucyB6
SW5kZXggdmFsdWUgYXMgYW4gaW50ZWdlci4KKyAgICAgICAgcmV0ICsgIiIgOgorICAgICAgICBy
ZXQ7Cit9CisKKworZnVuY3Rpb24gYWRkR2V0SG9va0lmKCBjb25kaXRpb25GbiwgaG9va0ZuICkg
eworCisgICAgLy8gRGVmaW5lIHRoZSBob29rLCB3ZSdsbCBjaGVjayBvbiB0aGUgZmlyc3QgcnVu
IGlmIGl0J3MgcmVhbGx5IG5lZWRlZC4KKyAgICByZXR1cm4geworICAgICAgICBnZXQ6IGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgaWYgKCBjb25kaXRpb25GbigpICkgeworCisgICAgICAgICAg
ICAgICAgLy8gSG9vayBub3QgbmVlZGVkIChvciBpdCdzIG5vdCBwb3NzaWJsZSB0byB1c2UgaXQg
ZHVlCisgICAgICAgICAgICAgICAgLy8gdG8gbWlzc2luZyBkZXBlbmRlbmN5KSwgcmVtb3ZlIGl0
LgorICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLmdldDsKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEhvb2sgbmVlZGVkOyByZWRlZmlu
ZSBpdCBzbyB0aGF0IHRoZSBzdXBwb3J0IHRlc3QgaXMgbm90IGV4ZWN1dGVkIGFnYWluLgorICAg
ICAgICAgICAgcmV0dXJuICggdGhpcy5nZXQgPSBob29rRm4gKS5hcHBseSggdGhpcywgYXJndW1l
bnRzICk7CisgICAgICAgIH0KKyAgICB9OworfQorCisKK3ZhcgorCisgICAgLy8gU3dhcHBhYmxl
IGlmIGRpc3BsYXkgaXMgbm9uZSBvciBzdGFydHMgd2l0aCB0YWJsZQorICAgIC8vIGV4Y2VwdCAi
dGFibGUiLCAidGFibGUtY2VsbCIsIG9yICJ0YWJsZS1jYXB0aW9uIgorICAgIC8vIFNlZSBoZXJl
IGZvciBkaXNwbGF5IHZhbHVlczogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMv
ZG9jcy9DU1MvZGlzcGxheQorICAgIHJkaXNwbGF5c3dhcCA9IC9eKG5vbmV8dGFibGUoPyEtY1tl
YV0pLispLywKKyAgICBjc3NTaG93ID0geyBwb3NpdGlvbjogImFic29sdXRlIiwgdmlzaWJpbGl0
eTogImhpZGRlbiIsIGRpc3BsYXk6ICJibG9jayIgfSwKKyAgICBjc3NOb3JtYWxUcmFuc2Zvcm0g
PSB7CisgICAgICAgIGxldHRlclNwYWNpbmc6ICIwIiwKKyAgICAgICAgZm9udFdlaWdodDogIjQw
MCIKKyAgICB9LAorCisgICAgY3NzUHJlZml4ZXMgPSBbICJXZWJraXQiLCAiTW96IiwgIm1zIiBd
LAorICAgIGVtcHR5U3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCAiZGl2IiApLnN0eWxl
OworCisvLyBSZXR1cm4gYSBjc3MgcHJvcGVydHkgbWFwcGVkIHRvIGEgcG90ZW50aWFsbHkgdmVu
ZG9yIHByZWZpeGVkIHByb3BlcnR5CitmdW5jdGlvbiB2ZW5kb3JQcm9wTmFtZSggbmFtZSApIHsK
KworICAgIC8vIFNob3J0Y3V0IGZvciBuYW1lcyB0aGF0IGFyZSBub3QgdmVuZG9yIHByZWZpeGVk
CisgICAgaWYgKCBuYW1lIGluIGVtcHR5U3R5bGUgKSB7CisgICAgICAgIHJldHVybiBuYW1lOwor
ICAgIH0KKworICAgIC8vIENoZWNrIGZvciB2ZW5kb3IgcHJlZml4ZWQgbmFtZXMKKyAgICB2YXIg
Y2FwTmFtZSA9IG5hbWVbIDAgXS50b1VwcGVyQ2FzZSgpICsgbmFtZS5zbGljZSggMSApLAorICAg
ICAgICBpID0gY3NzUHJlZml4ZXMubGVuZ3RoOworCisgICAgd2hpbGUgKCBpLS0gKSB7CisgICAg
ICAgIG5hbWUgPSBjc3NQcmVmaXhlc1sgaSBdICsgY2FwTmFtZTsKKyAgICAgICAgaWYgKCBuYW1l
IGluIGVtcHR5U3R5bGUgKSB7CisgICAgICAgICAgICByZXR1cm4gbmFtZTsKKyAgICAgICAgfQor
ICAgIH0KK30KKworZnVuY3Rpb24gc2V0UG9zaXRpdmVOdW1iZXIoIGVsZW0sIHZhbHVlLCBzdWJ0
cmFjdCApIHsKKworICAgIC8vIEFueSByZWxhdGl2ZSAoKy8tKSB2YWx1ZXMgaGF2ZSBhbHJlYWR5
IGJlZW4KKyAgICAvLyBub3JtYWxpemVkIGF0IHRoaXMgcG9pbnQKKyAgICB2YXIgbWF0Y2hlcyA9
IHJjc3NOdW0uZXhlYyggdmFsdWUgKTsKKyAgICByZXR1cm4gbWF0Y2hlcyA/CisKKyAgICAgICAg
Ly8gR3VhcmQgYWdhaW5zdCB1bmRlZmluZWQgInN1YnRyYWN0IiwgZS5nLiwgd2hlbiB1c2VkIGFz
IGluIGNzc0hvb2tzCisgICAgICAgIE1hdGgubWF4KCAwLCBtYXRjaGVzWyAyIF0gLSAoIHN1YnRy
YWN0IHx8IDAgKSApICsgKCBtYXRjaGVzWyAzIF0gfHwgInB4IiApIDoKKyAgICAgICAgdmFsdWU7
Cit9CisKK2Z1bmN0aW9uIGF1Z21lbnRXaWR0aE9ySGVpZ2h0KCBlbGVtLCBuYW1lLCBleHRyYSwg
aXNCb3JkZXJCb3gsIHN0eWxlcyApIHsKKyAgICB2YXIgaSwKKyAgICAgICAgdmFsID0gMDsKKwor
ICAgIC8vIElmIHdlIGFscmVhZHkgaGF2ZSB0aGUgcmlnaHQgbWVhc3VyZW1lbnQsIGF2b2lkIGF1
Z21lbnRhdGlvbgorICAgIGlmICggZXh0cmEgPT09ICggaXNCb3JkZXJCb3ggPyAiYm9yZGVyIiA6
ICJjb250ZW50IiApICkgeworICAgICAgICBpID0gNDsKKworICAgIC8vIE90aGVyd2lzZSBpbml0
aWFsaXplIGZvciBob3Jpem9udGFsIG9yIHZlcnRpY2FsIHByb3BlcnRpZXMKKyAgICB9IGVsc2Ug
eworICAgICAgICBpID0gbmFtZSA9PT0gIndpZHRoIiA/IDEgOiAwOworICAgIH0KKworICAgIGZv
ciAoIDsgaSA8IDQ7IGkgKz0gMiApIHsKKworICAgICAgICAvLyBCb3RoIGJveCBtb2RlbHMgZXhj
bHVkZSBtYXJnaW4sIHNvIGFkZCBpdCBpZiB3ZSB3YW50IGl0CisgICAgICAgIGlmICggZXh0cmEg
PT09ICJtYXJnaW4iICkgeworICAgICAgICAgICAgdmFsICs9IGpRdWVyeS5jc3MoIGVsZW0sIGV4
dHJhICsgY3NzRXhwYW5kWyBpIF0sIHRydWUsIHN0eWxlcyApOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKCBpc0JvcmRlckJveCApIHsKKworICAgICAgICAgICAgLy8gYm9yZGVyLWJveCBpbmNs
dWRlcyBwYWRkaW5nLCBzbyByZW1vdmUgaXQgaWYgd2Ugd2FudCBjb250ZW50CisgICAgICAgICAg
ICBpZiAoIGV4dHJhID09PSAiY29udGVudCIgKSB7CisgICAgICAgICAgICAgICAgdmFsIC09IGpR
dWVyeS5jc3MoIGVsZW0sICJwYWRkaW5nIiArIGNzc0V4cGFuZFsgaSBdLCB0cnVlLCBzdHlsZXMg
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gQXQgdGhpcyBwb2ludCwgZXh0cmEg
aXNuJ3QgYm9yZGVyIG5vciBtYXJnaW4sIHNvIHJlbW92ZSBib3JkZXIKKyAgICAgICAgICAgIGlm
ICggZXh0cmEgIT09ICJtYXJnaW4iICkgeworICAgICAgICAgICAgICAgIHZhbCAtPSBqUXVlcnku
Y3NzKCBlbGVtLCAiYm9yZGVyIiArIGNzc0V4cGFuZFsgaSBdICsgIldpZHRoIiwgdHJ1ZSwgc3R5
bGVzICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisKKyAgICAgICAgICAgIC8v
IEF0IHRoaXMgcG9pbnQsIGV4dHJhIGlzbid0IGNvbnRlbnQsIHNvIGFkZCBwYWRkaW5nCisgICAg
ICAgICAgICB2YWwgKz0galF1ZXJ5LmNzcyggZWxlbSwgInBhZGRpbmciICsgY3NzRXhwYW5kWyBp
IF0sIHRydWUsIHN0eWxlcyApOworCisgICAgICAgICAgICAvLyBBdCB0aGlzIHBvaW50LCBleHRy
YSBpc24ndCBjb250ZW50IG5vciBwYWRkaW5nLCBzbyBhZGQgYm9yZGVyCisgICAgICAgICAgICBp
ZiAoIGV4dHJhICE9PSAicGFkZGluZyIgKSB7CisgICAgICAgICAgICAgICAgdmFsICs9IGpRdWVy
eS5jc3MoIGVsZW0sICJib3JkZXIiICsgY3NzRXhwYW5kWyBpIF0gKyAiV2lkdGgiLCB0cnVlLCBz
dHlsZXMgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiB2
YWw7Cit9CisKK2Z1bmN0aW9uIGdldFdpZHRoT3JIZWlnaHQoIGVsZW0sIG5hbWUsIGV4dHJhICkg
eworCisgICAgLy8gU3RhcnQgd2l0aCBvZmZzZXQgcHJvcGVydHksIHdoaWNoIGlzIGVxdWl2YWxl
bnQgdG8gdGhlIGJvcmRlci1ib3ggdmFsdWUKKyAgICB2YXIgdmFsLAorICAgICAgICB2YWx1ZUlz
Qm9yZGVyQm94ID0gdHJ1ZSwKKyAgICAgICAgc3R5bGVzID0gZ2V0U3R5bGVzKCBlbGVtICksCisg
ICAgICAgIGlzQm9yZGVyQm94ID0galF1ZXJ5LmNzcyggZWxlbSwgImJveFNpemluZyIsIGZhbHNl
LCBzdHlsZXMgKSA9PT0gImJvcmRlci1ib3giOworCisgICAgLy8gU3VwcG9ydDogSUUgPD0xMSBv
bmx5CisgICAgLy8gUnVubmluZyBnZXRCb3VuZGluZ0NsaWVudFJlY3Qgb24gYSBkaXNjb25uZWN0
ZWQgbm9kZQorICAgIC8vIGluIElFIHRocm93cyBhbiBlcnJvci4KKyAgICBpZiAoIGVsZW0uZ2V0
Q2xpZW50UmVjdHMoKS5sZW5ndGggKSB7CisgICAgICAgIHZhbCA9IGVsZW0uZ2V0Qm91bmRpbmdD
bGllbnRSZWN0KClbIG5hbWUgXTsKKyAgICB9CisKKyAgICAvLyBTb21lIG5vbi1odG1sIGVsZW1l
bnRzIHJldHVybiB1bmRlZmluZWQgZm9yIG9mZnNldFdpZHRoLCBzbyBjaGVjayBmb3IgbnVsbC91
bmRlZmluZWQKKyAgICAvLyBzdmcgLSBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3df
YnVnLmNnaT9pZD02NDkyODUKKyAgICAvLyBNYXRoTUwgLSBodHRwczovL2J1Z3ppbGxhLm1vemls
bGEub3JnL3Nob3dfYnVnLmNnaT9pZD00OTE2NjgKKyAgICBpZiAoIHZhbCA8PSAwIHx8IHZhbCA9
PSBudWxsICkgeworCisgICAgICAgIC8vIEZhbGwgYmFjayB0byBjb21wdXRlZCB0aGVuIHVuY29t
cHV0ZWQgY3NzIGlmIG5lY2Vzc2FyeQorICAgICAgICB2YWwgPSBjdXJDU1MoIGVsZW0sIG5hbWUs
IHN0eWxlcyApOworICAgICAgICBpZiAoIHZhbCA8IDAgfHwgdmFsID09IG51bGwgKSB7CisgICAg
ICAgICAgICB2YWwgPSBlbGVtLnN0eWxlWyBuYW1lIF07CisgICAgICAgIH0KKworICAgICAgICAv
LyBDb21wdXRlZCB1bml0IGlzIG5vdCBwaXhlbHMuIFN0b3AgaGVyZSBhbmQgcmV0dXJuLgorICAg
ICAgICBpZiAoIHJudW1ub25weC50ZXN0KCB2YWwgKSApIHsKKyAgICAgICAgICAgIHJldHVybiB2
YWw7CisgICAgICAgIH0KKworICAgICAgICAvLyBDaGVjayBmb3Igc3R5bGUgaW4gY2FzZSBhIGJy
b3dzZXIgd2hpY2ggcmV0dXJucyB1bnJlbGlhYmxlIHZhbHVlcworICAgICAgICAvLyBmb3IgZ2V0
Q29tcHV0ZWRTdHlsZSBzaWxlbnRseSBmYWxscyBiYWNrIHRvIHRoZSByZWxpYWJsZSBlbGVtLnN0
eWxlCisgICAgICAgIHZhbHVlSXNCb3JkZXJCb3ggPSBpc0JvcmRlckJveCAmJgorICAgICAgICAg
ICAgKCBzdXBwb3J0LmJveFNpemluZ1JlbGlhYmxlKCkgfHwgdmFsID09PSBlbGVtLnN0eWxlWyBu
YW1lIF0gKTsKKworICAgICAgICAvLyBOb3JtYWxpemUgIiIsIGF1dG8sIGFuZCBwcmVwYXJlIGZv
ciBleHRyYQorICAgICAgICB2YWwgPSBwYXJzZUZsb2F0KCB2YWwgKSB8fCAwOworICAgIH0KKwor
ICAgIC8vIFVzZSB0aGUgYWN0aXZlIGJveC1zaXppbmcgbW9kZWwgdG8gYWRkL3N1YnRyYWN0IGly
cmVsZXZhbnQgc3R5bGVzCisgICAgcmV0dXJuICggdmFsICsKKyAgICAgICAgYXVnbWVudFdpZHRo
T3JIZWlnaHQoCisgICAgICAgICAgICBlbGVtLAorICAgICAgICAgICAgbmFtZSwKKyAgICAgICAg
ICAgIGV4dHJhIHx8ICggaXNCb3JkZXJCb3ggPyAiYm9yZGVyIiA6ICJjb250ZW50IiApLAorICAg
ICAgICAgICAgdmFsdWVJc0JvcmRlckJveCwKKyAgICAgICAgICAgIHN0eWxlcworICAgICAgICAp
CisgICAgKSArICJweCI7Cit9CisKK2pRdWVyeS5leHRlbmQoIHsKKworICAgIC8vIEFkZCBpbiBz
dHlsZSBwcm9wZXJ0eSBob29rcyBmb3Igb3ZlcnJpZGluZyB0aGUgZGVmYXVsdAorICAgIC8vIGJl
aGF2aW9yIG9mIGdldHRpbmcgYW5kIHNldHRpbmcgYSBzdHlsZSBwcm9wZXJ0eQorICAgIGNzc0hv
b2tzOiB7CisgICAgICAgIG9wYWNpdHk6IHsKKyAgICAgICAgICAgIGdldDogZnVuY3Rpb24oIGVs
ZW0sIGNvbXB1dGVkICkgeworICAgICAgICAgICAgICAgIGlmICggY29tcHV0ZWQgKSB7CisKKyAg
ICAgICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIGFsd2F5cyBnZXQgYSBudW1iZXIgYmFjayBm
cm9tIG9wYWNpdHkKKyAgICAgICAgICAgICAgICAgICAgdmFyIHJldCA9IGN1ckNTUyggZWxlbSwg
Im9wYWNpdHkiICk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQgPT09ICIiID8gIjEi
IDogcmV0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0sCisKKyAgICAvLyBEb24ndCBhdXRvbWF0aWNhbGx5IGFkZCAicHgiIHRvIHRoZXNlIHBvc3Np
Ymx5LXVuaXRsZXNzIHByb3BlcnRpZXMKKyAgICBjc3NOdW1iZXI6IHsKKyAgICAgICAgImFuaW1h
dGlvbkl0ZXJhdGlvbkNvdW50IjogdHJ1ZSwKKyAgICAgICAgImNvbHVtbkNvdW50IjogdHJ1ZSwK
KyAgICAgICAgImZpbGxPcGFjaXR5IjogdHJ1ZSwKKyAgICAgICAgImZsZXhHcm93IjogdHJ1ZSwK
KyAgICAgICAgImZsZXhTaHJpbmsiOiB0cnVlLAorICAgICAgICAiZm9udFdlaWdodCI6IHRydWUs
CisgICAgICAgICJsaW5lSGVpZ2h0IjogdHJ1ZSwKKyAgICAgICAgIm9wYWNpdHkiOiB0cnVlLAor
ICAgICAgICAib3JkZXIiOiB0cnVlLAorICAgICAgICAib3JwaGFucyI6IHRydWUsCisgICAgICAg
ICJ3aWRvd3MiOiB0cnVlLAorICAgICAgICAiekluZGV4IjogdHJ1ZSwKKyAgICAgICAgInpvb20i
OiB0cnVlCisgICAgfSwKKworICAgIC8vIEFkZCBpbiBwcm9wZXJ0aWVzIHdob3NlIG5hbWVzIHlv
dSB3aXNoIHRvIGZpeCBiZWZvcmUKKyAgICAvLyBzZXR0aW5nIG9yIGdldHRpbmcgdGhlIHZhbHVl
CisgICAgY3NzUHJvcHM6IHsKKyAgICAgICAgImZsb2F0IjogImNzc0Zsb2F0IgorICAgIH0sCisK
KyAgICAvLyBHZXQgYW5kIHNldCB0aGUgc3R5bGUgcHJvcGVydHkgb24gYSBET00gTm9kZQorICAg
IHN0eWxlOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgdmFsdWUsIGV4dHJhICkgeworCisgICAgICAg
IC8vIERvbid0IHNldCBzdHlsZXMgb24gdGV4dCBhbmQgY29tbWVudCBub2RlcworICAgICAgICBp
ZiAoICFlbGVtIHx8IGVsZW0ubm9kZVR5cGUgPT09IDMgfHwgZWxlbS5ub2RlVHlwZSA9PT0gOCB8
fCAhZWxlbS5zdHlsZSApIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHdlJ3JlIHdvcmtpbmcgd2l0aCB0aGUgcmlnaHQgbmFtZQor
ICAgICAgICB2YXIgcmV0LCB0eXBlLCBob29rcywKKyAgICAgICAgICAgIG9yaWdOYW1lID0galF1
ZXJ5LmNhbWVsQ2FzZSggbmFtZSApLAorICAgICAgICAgICAgc3R5bGUgPSBlbGVtLnN0eWxlOwor
CisgICAgICAgIG5hbWUgPSBqUXVlcnkuY3NzUHJvcHNbIG9yaWdOYW1lIF0gfHwKKyAgICAgICAg
ICAgICggalF1ZXJ5LmNzc1Byb3BzWyBvcmlnTmFtZSBdID0gdmVuZG9yUHJvcE5hbWUoIG9yaWdO
YW1lICkgfHwgb3JpZ05hbWUgKTsKKworICAgICAgICAvLyBHZXRzIGhvb2sgZm9yIHRoZSBwcmVm
aXhlZCB2ZXJzaW9uLCB0aGVuIHVucHJlZml4ZWQgdmVyc2lvbgorICAgICAgICBob29rcyA9IGpR
dWVyeS5jc3NIb29rc1sgbmFtZSBdIHx8IGpRdWVyeS5jc3NIb29rc1sgb3JpZ05hbWUgXTsKKwor
ICAgICAgICAvLyBDaGVjayBpZiB3ZSdyZSBzZXR0aW5nIGEgdmFsdWUKKyAgICAgICAgaWYgKCB2
YWx1ZSAhPT0gdW5kZWZpbmVkICkgeworICAgICAgICAgICAgdHlwZSA9IHR5cGVvZiB2YWx1ZTsK
KworICAgICAgICAgICAgLy8gQ29udmVydCAiKz0iIG9yICItPSIgdG8gcmVsYXRpdmUgbnVtYmVy
cyAoIzczNDUpCisgICAgICAgICAgICBpZiAoIHR5cGUgPT09ICJzdHJpbmciICYmICggcmV0ID0g
cmNzc051bS5leGVjKCB2YWx1ZSApICkgJiYgcmV0WyAxIF0gKSB7CisgICAgICAgICAgICAgICAg
dmFsdWUgPSBhZGp1c3RDU1MoIGVsZW0sIG5hbWUsIHJldCApOworCisgICAgICAgICAgICAgICAg
Ly8gRml4ZXMgYnVnICM5MjM3CisgICAgICAgICAgICAgICAgdHlwZSA9ICJudW1iZXIiOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCBudWxsIGFuZCBOYU4g
dmFsdWVzIGFyZW4ndCBzZXQgKCM3MTE2KQorICAgICAgICAgICAgaWYgKCB2YWx1ZSA9PSBudWxs
IHx8IHZhbHVlICE9PSB2YWx1ZSApIHsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIC8vIElmIGEgbnVtYmVyIHdhcyBwYXNzZWQgaW4sIGFkZCB0
aGUgdW5pdCAoZXhjZXB0IGZvciBjZXJ0YWluIENTUyBwcm9wZXJ0aWVzKQorICAgICAgICAgICAg
aWYgKCB0eXBlID09PSAibnVtYmVyIiApIHsKKyAgICAgICAgICAgICAgICB2YWx1ZSArPSByZXQg
JiYgcmV0WyAzIF0gfHwgKCBqUXVlcnkuY3NzTnVtYmVyWyBvcmlnTmFtZSBdID8gIiIgOiAicHgi
ICk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIGJhY2tncm91bmQtKiBwcm9wcyBh
ZmZlY3Qgb3JpZ2luYWwgY2xvbmUncyB2YWx1ZXMKKyAgICAgICAgICAgIGlmICggIXN1cHBvcnQu
Y2xlYXJDbG9uZVN0eWxlICYmIHZhbHVlID09PSAiIiAmJiBuYW1lLmluZGV4T2YoICJiYWNrZ3Jv
dW5kIiApID09PSAwICkgeworICAgICAgICAgICAgICAgIHN0eWxlWyBuYW1lIF0gPSAiaW5oZXJp
dCI7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIElmIGEgaG9vayB3YXMgcHJvdmlk
ZWQsIHVzZSB0aGF0IHZhbHVlLCBvdGhlcndpc2UganVzdCBzZXQgdGhlIHNwZWNpZmllZCB2YWx1
ZQorICAgICAgICAgICAgaWYgKCAhaG9va3MgfHwgISggInNldCIgaW4gaG9va3MgKSB8fAorICAg
ICAgICAgICAgICAgICggdmFsdWUgPSBob29rcy5zZXQoIGVsZW0sIHZhbHVlLCBleHRyYSApICkg
IT09IHVuZGVmaW5lZCApIHsKKworICAgICAgICAgICAgICAgIHN0eWxlWyBuYW1lIF0gPSB2YWx1
ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICB9IGVsc2UgeworCisgICAgICAgICAgICAvLyBJ
ZiBhIGhvb2sgd2FzIHByb3ZpZGVkIGdldCB0aGUgbm9uLWNvbXB1dGVkIHZhbHVlIGZyb20gdGhl
cmUKKyAgICAgICAgICAgIGlmICggaG9va3MgJiYgImdldCIgaW4gaG9va3MgJiYKKyAgICAgICAg
ICAgICAgICAoIHJldCA9IGhvb2tzLmdldCggZWxlbSwgZmFsc2UsIGV4dHJhICkgKSAhPT0gdW5k
ZWZpbmVkICkgeworCisgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgLy8gT3RoZXJ3aXNlIGp1c3QgZ2V0IHRoZSB2YWx1ZSBmcm9tIHRoZSBz
dHlsZSBvYmplY3QKKyAgICAgICAgICAgIHJldHVybiBzdHlsZVsgbmFtZSBdOworICAgICAgICB9
CisgICAgfSwKKworICAgIGNzczogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGV4dHJhLCBzdHlsZXMg
KSB7CisgICAgICAgIHZhciB2YWwsIG51bSwgaG9va3MsCisgICAgICAgICAgICBvcmlnTmFtZSA9
IGpRdWVyeS5jYW1lbENhc2UoIG5hbWUgKTsKKworICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCB3
ZSdyZSB3b3JraW5nIHdpdGggdGhlIHJpZ2h0IG5hbWUKKyAgICAgICAgbmFtZSA9IGpRdWVyeS5j
c3NQcm9wc1sgb3JpZ05hbWUgXSB8fAorICAgICAgICAgICAgKCBqUXVlcnkuY3NzUHJvcHNbIG9y
aWdOYW1lIF0gPSB2ZW5kb3JQcm9wTmFtZSggb3JpZ05hbWUgKSB8fCBvcmlnTmFtZSApOworCisg
ICAgICAgIC8vIFRyeSBwcmVmaXhlZCBuYW1lIGZvbGxvd2VkIGJ5IHRoZSB1bnByZWZpeGVkIG5h
bWUKKyAgICAgICAgaG9va3MgPSBqUXVlcnkuY3NzSG9va3NbIG5hbWUgXSB8fCBqUXVlcnkuY3Nz
SG9va3NbIG9yaWdOYW1lIF07CisKKyAgICAgICAgLy8gSWYgYSBob29rIHdhcyBwcm92aWRlZCBn
ZXQgdGhlIGNvbXB1dGVkIHZhbHVlIGZyb20gdGhlcmUKKyAgICAgICAgaWYgKCBob29rcyAmJiAi
Z2V0IiBpbiBob29rcyApIHsKKyAgICAgICAgICAgIHZhbCA9IGhvb2tzLmdldCggZWxlbSwgdHJ1
ZSwgZXh0cmEgKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIE90aGVyd2lzZSwgaWYgYSB3YXkg
dG8gZ2V0IHRoZSBjb21wdXRlZCB2YWx1ZSBleGlzdHMsIHVzZSB0aGF0CisgICAgICAgIGlmICgg
dmFsID09PSB1bmRlZmluZWQgKSB7CisgICAgICAgICAgICB2YWwgPSBjdXJDU1MoIGVsZW0sIG5h
bWUsIHN0eWxlcyApOworICAgICAgICB9CisKKyAgICAgICAgLy8gQ29udmVydCAibm9ybWFsIiB0
byBjb21wdXRlZCB2YWx1ZQorICAgICAgICBpZiAoIHZhbCA9PT0gIm5vcm1hbCIgJiYgbmFtZSBp
biBjc3NOb3JtYWxUcmFuc2Zvcm0gKSB7CisgICAgICAgICAgICB2YWwgPSBjc3NOb3JtYWxUcmFu
c2Zvcm1bIG5hbWUgXTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIE1ha2UgbnVtZXJpYyBpZiBm
b3JjZWQgb3IgYSBxdWFsaWZpZXIgd2FzIHByb3ZpZGVkIGFuZCB2YWwgbG9va3MgbnVtZXJpYwor
ICAgICAgICBpZiAoIGV4dHJhID09PSAiIiB8fCBleHRyYSApIHsKKyAgICAgICAgICAgIG51bSA9
IHBhcnNlRmxvYXQoIHZhbCApOworICAgICAgICAgICAgcmV0dXJuIGV4dHJhID09PSB0cnVlIHx8
IGlzRmluaXRlKCBudW0gKSA/IG51bSB8fCAwIDogdmFsOworICAgICAgICB9CisgICAgICAgIHJl
dHVybiB2YWw7CisgICAgfQorfSApOworCitqUXVlcnkuZWFjaCggWyAiaGVpZ2h0IiwgIndpZHRo
IiBdLCBmdW5jdGlvbiggaSwgbmFtZSApIHsKKyAgICBqUXVlcnkuY3NzSG9va3NbIG5hbWUgXSA9
IHsKKyAgICAgICAgZ2V0OiBmdW5jdGlvbiggZWxlbSwgY29tcHV0ZWQsIGV4dHJhICkgeworICAg
ICAgICAgICAgaWYgKCBjb21wdXRlZCApIHsKKworICAgICAgICAgICAgICAgIC8vIENlcnRhaW4g
ZWxlbWVudHMgY2FuIGhhdmUgZGltZW5zaW9uIGluZm8gaWYgd2UgaW52aXNpYmx5IHNob3cgdGhl
bQorICAgICAgICAgICAgICAgIC8vIGJ1dCBpdCBtdXN0IGhhdmUgYSBjdXJyZW50IGRpc3BsYXkg
c3R5bGUgdGhhdCB3b3VsZCBiZW5lZml0CisgICAgICAgICAgICAgICAgcmV0dXJuIHJkaXNwbGF5
c3dhcC50ZXN0KCBqUXVlcnkuY3NzKCBlbGVtLCAiZGlzcGxheSIgKSApICYmCisKKyAgICAgICAg
ICAgICAgICAgICAgLy8gU3VwcG9ydDogU2FmYXJpIDgrCisgICAgICAgICAgICAgICAgICAgIC8v
IFRhYmxlIGNvbHVtbnMgaW4gU2FmYXJpIGhhdmUgbm9uLXplcm8gb2Zmc2V0V2lkdGggJiB6ZXJv
CisgICAgICAgICAgICAgICAgICAgIC8vIGdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoIHVu
bGVzcyBkaXNwbGF5IGlzIGNoYW5nZWQuCisgICAgICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6
IElFIDw9MTEgb25seQorICAgICAgICAgICAgICAgICAgICAvLyBSdW5uaW5nIGdldEJvdW5kaW5n
Q2xpZW50UmVjdCBvbiBhIGRpc2Nvbm5lY3RlZCBub2RlCisgICAgICAgICAgICAgICAgICAgIC8v
IGluIElFIHRocm93cyBhbiBlcnJvci4KKyAgICAgICAgICAgICAgICAgICAgKCAhZWxlbS5nZXRD
bGllbnRSZWN0cygpLmxlbmd0aCB8fCAhZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0
aCApID8KKyAgICAgICAgICAgICAgICAgICAgICAgIHN3YXAoIGVsZW0sIGNzc1Nob3csIGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBnZXRXaWR0aE9ySGVp
Z2h0KCBlbGVtLCBuYW1lLCBleHRyYSApOworICAgICAgICAgICAgICAgICAgICAgICAgfSApIDoK
KyAgICAgICAgICAgICAgICAgICAgICAgIGdldFdpZHRoT3JIZWlnaHQoIGVsZW0sIG5hbWUsIGV4
dHJhICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisKKyAgICAgICAgc2V0OiBmdW5jdGlv
biggZWxlbSwgdmFsdWUsIGV4dHJhICkgeworICAgICAgICAgICAgdmFyIG1hdGNoZXMsCisgICAg
ICAgICAgICAgICAgc3R5bGVzID0gZXh0cmEgJiYgZ2V0U3R5bGVzKCBlbGVtICksCisgICAgICAg
ICAgICAgICAgc3VidHJhY3QgPSBleHRyYSAmJiBhdWdtZW50V2lkdGhPckhlaWdodCgKKyAgICAg
ICAgICAgICAgICAgICAgZWxlbSwKKyAgICAgICAgICAgICAgICAgICAgbmFtZSwKKyAgICAgICAg
ICAgICAgICAgICAgZXh0cmEsCisgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5jc3MoIGVsZW0s
ICJib3hTaXppbmciLCBmYWxzZSwgc3R5bGVzICkgPT09ICJib3JkZXItYm94IiwKKyAgICAgICAg
ICAgICAgICAgICAgc3R5bGVzCisgICAgICAgICAgICAgICAgKTsKKworICAgICAgICAgICAgLy8g
Q29udmVydCB0byBwaXhlbHMgaWYgdmFsdWUgYWRqdXN0bWVudCBpcyBuZWVkZWQKKyAgICAgICAg
ICAgIGlmICggc3VidHJhY3QgJiYgKCBtYXRjaGVzID0gcmNzc051bS5leGVjKCB2YWx1ZSApICkg
JiYKKyAgICAgICAgICAgICAgICAoIG1hdGNoZXNbIDMgXSB8fCAicHgiICkgIT09ICJweCIgKSB7
CisKKyAgICAgICAgICAgICAgICBlbGVtLnN0eWxlWyBuYW1lIF0gPSB2YWx1ZTsKKyAgICAgICAg
ICAgICAgICB2YWx1ZSA9IGpRdWVyeS5jc3MoIGVsZW0sIG5hbWUgKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgcmV0dXJuIHNldFBvc2l0aXZlTnVtYmVyKCBlbGVtLCB2YWx1ZSwgc3Vi
dHJhY3QgKTsKKyAgICAgICAgfQorICAgIH07Cit9ICk7CisKK2pRdWVyeS5jc3NIb29rcy5tYXJn
aW5MZWZ0ID0gYWRkR2V0SG9va0lmKCBzdXBwb3J0LnJlbGlhYmxlTWFyZ2luTGVmdCwKKyAgICBm
dW5jdGlvbiggZWxlbSwgY29tcHV0ZWQgKSB7CisgICAgICAgIGlmICggY29tcHV0ZWQgKSB7Cisg
ICAgICAgICAgICByZXR1cm4gKCBwYXJzZUZsb2F0KCBjdXJDU1MoIGVsZW0sICJtYXJnaW5MZWZ0
IiApICkgfHwKKyAgICAgICAgICAgICAgICBlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxl
ZnQgLQorICAgICAgICAgICAgICAgICAgICBzd2FwKCBlbGVtLCB7IG1hcmdpbkxlZnQ6IDAgfSwg
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbS5nZXRCb3Vu
ZGluZ0NsaWVudFJlY3QoKS5sZWZ0OworICAgICAgICAgICAgICAgICAgICB9ICkKKyAgICAgICAg
ICAgICAgICApICsgInB4IjsKKyAgICAgICAgfQorICAgIH0KKyk7CisKKy8vIFRoZXNlIGhvb2tz
IGFyZSB1c2VkIGJ5IGFuaW1hdGUgdG8gZXhwYW5kIHByb3BlcnRpZXMKK2pRdWVyeS5lYWNoKCB7
CisgICAgbWFyZ2luOiAiIiwKKyAgICBwYWRkaW5nOiAiIiwKKyAgICBib3JkZXI6ICJXaWR0aCIK
K30sIGZ1bmN0aW9uKCBwcmVmaXgsIHN1ZmZpeCApIHsKKyAgICBqUXVlcnkuY3NzSG9va3NbIHBy
ZWZpeCArIHN1ZmZpeCBdID0geworICAgICAgICBleHBhbmQ6IGZ1bmN0aW9uKCB2YWx1ZSApIHsK
KyAgICAgICAgICAgIHZhciBpID0gMCwKKyAgICAgICAgICAgICAgICBleHBhbmRlZCA9IHt9LAor
CisgICAgICAgICAgICAgICAgLy8gQXNzdW1lcyBhIHNpbmdsZSBudW1iZXIgaWYgbm90IGEgc3Ry
aW5nCisgICAgICAgICAgICAgICAgcGFydHMgPSB0eXBlb2YgdmFsdWUgPT09ICJzdHJpbmciID8g
dmFsdWUuc3BsaXQoICIgIiApIDogWyB2YWx1ZSBdOworCisgICAgICAgICAgICBmb3IgKCA7IGkg
PCA0OyBpKysgKSB7CisgICAgICAgICAgICAgICAgZXhwYW5kZWRbIHByZWZpeCArIGNzc0V4cGFu
ZFsgaSBdICsgc3VmZml4IF0gPQorICAgICAgICAgICAgICAgICAgICBwYXJ0c1sgaSBdIHx8IHBh
cnRzWyBpIC0gMiBdIHx8IHBhcnRzWyAwIF07CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHJldHVybiBleHBhbmRlZDsKKyAgICAgICAgfQorICAgIH07CisKKyAgICBpZiAoICFybWFyZ2lu
LnRlc3QoIHByZWZpeCApICkgeworICAgICAgICBqUXVlcnkuY3NzSG9va3NbIHByZWZpeCArIHN1
ZmZpeCBdLnNldCA9IHNldFBvc2l0aXZlTnVtYmVyOworICAgIH0KK30gKTsKKworalF1ZXJ5LmZu
LmV4dGVuZCggeworICAgIGNzczogZnVuY3Rpb24oIG5hbWUsIHZhbHVlICkgeworICAgICAgICBy
ZXR1cm4gYWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggZWxlbSwgbmFtZSwgdmFsdWUgKSB7CisgICAg
ICAgICAgICB2YXIgc3R5bGVzLCBsZW4sCisgICAgICAgICAgICAgICAgbWFwID0ge30sCisgICAg
ICAgICAgICAgICAgaSA9IDA7CisKKyAgICAgICAgICAgIGlmICggalF1ZXJ5LmlzQXJyYXkoIG5h
bWUgKSApIHsKKyAgICAgICAgICAgICAgICBzdHlsZXMgPSBnZXRTdHlsZXMoIGVsZW0gKTsKKyAg
ICAgICAgICAgICAgICBsZW4gPSBuYW1lLmxlbmd0aDsKKworICAgICAgICAgICAgICAgIGZvciAo
IDsgaSA8IGxlbjsgaSsrICkgeworICAgICAgICAgICAgICAgICAgICBtYXBbIG5hbWVbIGkgXSBd
ID0galF1ZXJ5LmNzcyggZWxlbSwgbmFtZVsgaSBdLCBmYWxzZSwgc3R5bGVzICk7CisgICAgICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgcmV0dXJuIG1hcDsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgcmV0dXJuIHZhbHVlICE9PSB1bmRlZmluZWQgPworICAgICAgICAgICAg
ICAgIGpRdWVyeS5zdHlsZSggZWxlbSwgbmFtZSwgdmFsdWUgKSA6CisgICAgICAgICAgICAgICAg
alF1ZXJ5LmNzcyggZWxlbSwgbmFtZSApOworICAgICAgICB9LCBuYW1lLCB2YWx1ZSwgYXJndW1l
bnRzLmxlbmd0aCA+IDEgKTsKKyAgICB9Cit9ICk7CisKKworLy8gQmFzZWQgb2ZmIG9mIHRoZSBw
bHVnaW4gYnkgQ2xpbnQgSGVsZmVycywgd2l0aCBwZXJtaXNzaW9uLgorLy8gaHR0cHM6Ly93ZWIu
YXJjaGl2ZS5vcmcvd2ViLzIwMTAwMzI0MDE0NzQ3L2h0dHA6Ly9ibGluZHNpZ25hbHMuY29tL2lu
ZGV4LnBocC8yMDA5LzA3L2pxdWVyeS1kZWxheS8KK2pRdWVyeS5mbi5kZWxheSA9IGZ1bmN0aW9u
KCB0aW1lLCB0eXBlICkgeworICAgIHRpbWUgPSBqUXVlcnkuZnggPyBqUXVlcnkuZnguc3BlZWRz
WyB0aW1lIF0gfHwgdGltZSA6IHRpbWU7CisgICAgdHlwZSA9IHR5cGUgfHwgImZ4IjsKKworICAg
IHJldHVybiB0aGlzLnF1ZXVlKCB0eXBlLCBmdW5jdGlvbiggbmV4dCwgaG9va3MgKSB7CisgICAg
ICAgIHZhciB0aW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoIG5leHQsIHRpbWUgKTsKKyAgICAg
ICAgaG9va3Muc3RvcCA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgd2luZG93LmNsZWFyVGlt
ZW91dCggdGltZW91dCApOworICAgICAgICB9OworICAgIH0gKTsKK307CisKKworKCBmdW5jdGlv
bigpIHsKKyAgICB2YXIgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCAiaW5wdXQiICks
CisgICAgICAgIHNlbGVjdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoICJzZWxlY3QiICksCisg
ICAgICAgIG9wdCA9IHNlbGVjdC5hcHBlbmRDaGlsZCggZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgg
Im9wdGlvbiIgKSApOworCisgICAgaW5wdXQudHlwZSA9ICJjaGVja2JveCI7CisKKyAgICAvLyBT
dXBwb3J0OiBBbmRyb2lkIDw9NC4zIG9ubHkKKyAgICAvLyBEZWZhdWx0IHZhbHVlIGZvciBhIGNo
ZWNrYm94IHNob3VsZCBiZSAib24iCisgICAgc3VwcG9ydC5jaGVja09uID0gaW5wdXQudmFsdWUg
IT09ICIiOworCisgICAgLy8gU3VwcG9ydDogSUUgPD0xMSBvbmx5CisgICAgLy8gTXVzdCBhY2Nl
c3Mgc2VsZWN0ZWRJbmRleCB0byBtYWtlIGRlZmF1bHQgb3B0aW9ucyBzZWxlY3QKKyAgICBzdXBw
b3J0Lm9wdFNlbGVjdGVkID0gb3B0LnNlbGVjdGVkOworCisgICAgLy8gU3VwcG9ydDogSUUgPD0x
MSBvbmx5CisgICAgLy8gQW4gaW5wdXQgbG9zZXMgaXRzIHZhbHVlIGFmdGVyIGJlY29taW5nIGEg
cmFkaW8KKyAgICBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoICJpbnB1dCIgKTsKKyAg
ICBpbnB1dC52YWx1ZSA9ICJ0IjsKKyAgICBpbnB1dC50eXBlID0gInJhZGlvIjsKKyAgICBzdXBw
b3J0LnJhZGlvVmFsdWUgPSBpbnB1dC52YWx1ZSA9PT0gInQiOworfSApKCk7CisKKwordmFyIGJv
b2xIb29rLAorICAgIGF0dHJIYW5kbGUgPSBqUXVlcnkuZXhwci5hdHRySGFuZGxlOworCitqUXVl
cnkuZm4uZXh0ZW5kKCB7CisgICAgYXR0cjogZnVuY3Rpb24oIG5hbWUsIHZhbHVlICkgeworICAg
ICAgICByZXR1cm4gYWNjZXNzKCB0aGlzLCBqUXVlcnkuYXR0ciwgbmFtZSwgdmFsdWUsIGFyZ3Vt
ZW50cy5sZW5ndGggPiAxICk7CisgICAgfSwKKworICAgIHJlbW92ZUF0dHI6IGZ1bmN0aW9uKCBu
YW1lICkgeworICAgICAgICByZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgIGpRdWVyeS5yZW1vdmVBdHRyKCB0aGlzLCBuYW1lICk7CisgICAgICAgIH0gKTsKKyAgICB9
Cit9ICk7CisKK2pRdWVyeS5leHRlbmQoIHsKKyAgICBhdHRyOiBmdW5jdGlvbiggZWxlbSwgbmFt
ZSwgdmFsdWUgKSB7CisgICAgICAgIHZhciByZXQsIGhvb2tzLAorICAgICAgICAgICAgblR5cGUg
PSBlbGVtLm5vZGVUeXBlOworCisgICAgICAgIC8vIERvbid0IGdldC9zZXQgYXR0cmlidXRlcyBv
biB0ZXh0LCBjb21tZW50IGFuZCBhdHRyaWJ1dGUgbm9kZXMKKyAgICAgICAgaWYgKCBuVHlwZSA9
PT0gMyB8fCBuVHlwZSA9PT0gOCB8fCBuVHlwZSA9PT0gMiApIHsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZhbGxiYWNrIHRvIHByb3Agd2hlbiBhdHRyaWJ1
dGVzIGFyZSBub3Qgc3VwcG9ydGVkCisgICAgICAgIGlmICggdHlwZW9mIGVsZW0uZ2V0QXR0cmli
dXRlID09PSAidW5kZWZpbmVkIiApIHsKKyAgICAgICAgICAgIHJldHVybiBqUXVlcnkucHJvcCgg
ZWxlbSwgbmFtZSwgdmFsdWUgKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEF0dHJpYnV0ZSBo
b29rcyBhcmUgZGV0ZXJtaW5lZCBieSB0aGUgbG93ZXJjYXNlIHZlcnNpb24KKyAgICAgICAgLy8g
R3JhYiBuZWNlc3NhcnkgaG9vayBpZiBvbmUgaXMgZGVmaW5lZAorICAgICAgICBpZiAoIG5UeXBl
ICE9PSAxIHx8ICFqUXVlcnkuaXNYTUxEb2MoIGVsZW0gKSApIHsKKyAgICAgICAgICAgIGhvb2tz
ID0galF1ZXJ5LmF0dHJIb29rc1sgbmFtZS50b0xvd2VyQ2FzZSgpIF0gfHwKKyAgICAgICAgICAg
ICAgICAoIGpRdWVyeS5leHByLm1hdGNoLmJvb2wudGVzdCggbmFtZSApID8gYm9vbEhvb2sgOiB1
bmRlZmluZWQgKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICggdmFsdWUgIT09IHVuZGVmaW5l
ZCApIHsKKyAgICAgICAgICAgIGlmICggdmFsdWUgPT09IG51bGwgKSB7CisgICAgICAgICAgICAg
ICAgalF1ZXJ5LnJlbW92ZUF0dHIoIGVsZW0sIG5hbWUgKTsKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICggaG9va3MgJiYgInNldCIgaW4g
aG9va3MgJiYKKyAgICAgICAgICAgICAgICAoIHJldCA9IGhvb2tzLnNldCggZWxlbSwgdmFsdWUs
IG5hbWUgKSApICE9PSB1bmRlZmluZWQgKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZWxlbS5zZXRBdHRyaWJ1dGUoIG5hbWUsIHZh
bHVlICsgIiIgKTsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmICggaG9va3MgJiYgImdldCIgaW4gaG9va3MgJiYgKCByZXQgPSBob29rcy5nZXQoIGVs
ZW0sIG5hbWUgKSApICE9PSBudWxsICkgeworICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAgICAg
ICAgfQorCisgICAgICAgIHJldCA9IGpRdWVyeS5maW5kLmF0dHIoIGVsZW0sIG5hbWUgKTsKKwor
ICAgICAgICAvLyBOb24tZXhpc3RlbnQgYXR0cmlidXRlcyByZXR1cm4gbnVsbCwgd2Ugbm9ybWFs
aXplIHRvIHVuZGVmaW5lZAorICAgICAgICByZXR1cm4gcmV0ID09IG51bGwgPyB1bmRlZmluZWQg
OiByZXQ7CisgICAgfSwKKworICAgIGF0dHJIb29rczogeworICAgICAgICB0eXBlOiB7CisgICAg
ICAgICAgICBzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSApIHsKKyAgICAgICAgICAgICAgICBp
ZiAoICFzdXBwb3J0LnJhZGlvVmFsdWUgJiYgdmFsdWUgPT09ICJyYWRpbyIgJiYKKyAgICAgICAg
ICAgICAgICAgICAgalF1ZXJ5Lm5vZGVOYW1lKCBlbGVtLCAiaW5wdXQiICkgKSB7CisgICAgICAg
ICAgICAgICAgICAgIHZhciB2YWwgPSBlbGVtLnZhbHVlOworICAgICAgICAgICAgICAgICAgICBl
bGVtLnNldEF0dHJpYnV0ZSggInR5cGUiLCB2YWx1ZSApOworICAgICAgICAgICAgICAgICAgICBp
ZiAoIHZhbCApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0udmFsdWUgPSB2YWw7Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0sCisKKyAg
ICByZW1vdmVBdHRyOiBmdW5jdGlvbiggZWxlbSwgdmFsdWUgKSB7CisgICAgICAgIHZhciBuYW1l
LAorICAgICAgICAgICAgaSA9IDAsCisKKyAgICAgICAgICAgIC8vIEF0dHJpYnV0ZSBuYW1lcyBj
YW4gY29udGFpbiBub24tSFRNTCB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMKKyAgICAgICAgICAgIC8v
IGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI2F0dHJp
YnV0ZXMtMgorICAgICAgICAgICAgYXR0ck5hbWVzID0gdmFsdWUgJiYgdmFsdWUubWF0Y2goIHJu
b3RodG1sd2hpdGUgKTsKKworICAgICAgICBpZiAoIGF0dHJOYW1lcyAmJiBlbGVtLm5vZGVUeXBl
ID09PSAxICkgeworICAgICAgICAgICAgd2hpbGUgKCAoIG5hbWUgPSBhdHRyTmFtZXNbIGkrKyBd
ICkgKSB7CisgICAgICAgICAgICAgICAgZWxlbS5yZW1vdmVBdHRyaWJ1dGUoIG5hbWUgKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30gKTsKKworLy8gSG9va3MgZm9yIGJvb2xl
YW4gYXR0cmlidXRlcworYm9vbEhvb2sgPSB7CisgICAgc2V0OiBmdW5jdGlvbiggZWxlbSwgdmFs
dWUsIG5hbWUgKSB7CisgICAgICAgIGlmICggdmFsdWUgPT09IGZhbHNlICkgeworCisgICAgICAg
ICAgICAvLyBSZW1vdmUgYm9vbGVhbiBhdHRyaWJ1dGVzIHdoZW4gc2V0IHRvIGZhbHNlCisgICAg
ICAgICAgICBqUXVlcnkucmVtb3ZlQXR0ciggZWxlbSwgbmFtZSApOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgZWxlbS5zZXRBdHRyaWJ1dGUoIG5hbWUsIG5hbWUgKTsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gbmFtZTsKKyAgICB9Cit9OworCitqUXVlcnkuZWFjaCggalF1ZXJ5
LmV4cHIubWF0Y2guYm9vbC5zb3VyY2UubWF0Y2goIC9cdysvZyApLCBmdW5jdGlvbiggaSwgbmFt
ZSApIHsKKyAgICB2YXIgZ2V0dGVyID0gYXR0ckhhbmRsZVsgbmFtZSBdIHx8IGpRdWVyeS5maW5k
LmF0dHI7CisKKyAgICBhdHRySGFuZGxlWyBuYW1lIF0gPSBmdW5jdGlvbiggZWxlbSwgbmFtZSwg
aXNYTUwgKSB7CisgICAgICAgIHZhciByZXQsIGhhbmRsZSwKKyAgICAgICAgICAgIGxvd2VyY2Fz
ZU5hbWUgPSBuYW1lLnRvTG93ZXJDYXNlKCk7CisKKyAgICAgICAgaWYgKCAhaXNYTUwgKSB7CisK
KyAgICAgICAgICAgIC8vIEF2b2lkIGFuIGluZmluaXRlIGxvb3AgYnkgdGVtcG9yYXJpbHkgcmVt
b3ZpbmcgdGhpcyBmdW5jdGlvbiBmcm9tIHRoZSBnZXR0ZXIKKyAgICAgICAgICAgIGhhbmRsZSA9
IGF0dHJIYW5kbGVbIGxvd2VyY2FzZU5hbWUgXTsKKyAgICAgICAgICAgIGF0dHJIYW5kbGVbIGxv
d2VyY2FzZU5hbWUgXSA9IHJldDsKKyAgICAgICAgICAgIHJldCA9IGdldHRlciggZWxlbSwgbmFt
ZSwgaXNYTUwgKSAhPSBudWxsID8KKyAgICAgICAgICAgICAgICBsb3dlcmNhc2VOYW1lIDoKKyAg
ICAgICAgICAgICAgICBudWxsOworICAgICAgICAgICAgYXR0ckhhbmRsZVsgbG93ZXJjYXNlTmFt
ZSBdID0gaGFuZGxlOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXQ7CisgICAgfTsKK30g
KTsKKworCisKKwordmFyIHJmb2N1c2FibGUgPSAvXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxi
dXR0b24pJC9pLAorICAgIHJjbGlja2FibGUgPSAvXig/OmF8YXJlYSkkL2k7CisKK2pRdWVyeS5m
bi5leHRlbmQoIHsKKyAgICBwcm9wOiBmdW5jdGlvbiggbmFtZSwgdmFsdWUgKSB7CisgICAgICAg
IHJldHVybiBhY2Nlc3MoIHRoaXMsIGpRdWVyeS5wcm9wLCBuYW1lLCB2YWx1ZSwgYXJndW1lbnRz
Lmxlbmd0aCA+IDEgKTsKKyAgICB9LAorCisgICAgcmVtb3ZlUHJvcDogZnVuY3Rpb24oIG5hbWUg
KSB7CisgICAgICAgIHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
ZGVsZXRlIHRoaXNbIGpRdWVyeS5wcm9wRml4WyBuYW1lIF0gfHwgbmFtZSBdOworICAgICAgICB9
ICk7CisgICAgfQorfSApOworCitqUXVlcnkuZXh0ZW5kKCB7CisgICAgcHJvcDogZnVuY3Rpb24o
IGVsZW0sIG5hbWUsIHZhbHVlICkgeworICAgICAgICB2YXIgcmV0LCBob29rcywKKyAgICAgICAg
ICAgIG5UeXBlID0gZWxlbS5ub2RlVHlwZTsKKworICAgICAgICAvLyBEb24ndCBnZXQvc2V0IHBy
b3BlcnRpZXMgb24gdGV4dCwgY29tbWVudCBhbmQgYXR0cmlidXRlIG5vZGVzCisgICAgICAgIGlm
ICggblR5cGUgPT09IDMgfHwgblR5cGUgPT09IDggfHwgblR5cGUgPT09IDIgKSB7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoIG5UeXBlICE9PSAxIHx8ICFq
UXVlcnkuaXNYTUxEb2MoIGVsZW0gKSApIHsKKworICAgICAgICAgICAgLy8gRml4IG5hbWUgYW5k
IGF0dGFjaCBob29rcworICAgICAgICAgICAgbmFtZSA9IGpRdWVyeS5wcm9wRml4WyBuYW1lIF0g
fHwgbmFtZTsKKyAgICAgICAgICAgIGhvb2tzID0galF1ZXJ5LnByb3BIb29rc1sgbmFtZSBdOwor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKCB2YWx1ZSAhPT0gdW5kZWZpbmVkICkgeworICAgICAg
ICAgICAgaWYgKCBob29rcyAmJiAic2V0IiBpbiBob29rcyAmJgorICAgICAgICAgICAgICAgICgg
cmV0ID0gaG9va3Muc2V0KCBlbGVtLCB2YWx1ZSwgbmFtZSApICkgIT09IHVuZGVmaW5lZCApIHsK
KyAgICAgICAgICAgICAgICByZXR1cm4gcmV0OworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICByZXR1cm4gKCBlbGVtWyBuYW1lIF0gPSB2YWx1ZSApOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKCBob29rcyAmJiAiZ2V0IiBpbiBob29rcyAmJiAoIHJldCA9IGhvb2tzLmdldCggZWxlbSwg
bmFtZSApICkgIT09IG51bGwgKSB7CisgICAgICAgICAgICByZXR1cm4gcmV0OworICAgICAgICB9
CisKKyAgICAgICAgcmV0dXJuIGVsZW1bIG5hbWUgXTsKKyAgICB9LAorCisgICAgcHJvcEhvb2tz
OiB7CisgICAgICAgIHRhYkluZGV4OiB7CisgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCBlbGVt
ICkgeworCisgICAgICAgICAgICAgICAgLy8gU3VwcG9ydDogSUUgPD05IC0gMTEgb25seQorICAg
ICAgICAgICAgICAgIC8vIGVsZW0udGFiSW5kZXggZG9lc24ndCBhbHdheXMgcmV0dXJuIHRoZQor
ICAgICAgICAgICAgICAgIC8vIGNvcnJlY3QgdmFsdWUgd2hlbiBpdCBoYXNuJ3QgYmVlbiBleHBs
aWNpdGx5IHNldAorICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vd2ViLmFyY2hpdmUub3JnL3dl
Yi8yMDE0MTExNjIzMzM0Ny9odHRwOi8vZmx1aWRwcm9qZWN0Lm9yZy9ibG9nLzIwMDgvMDEvMDkv
Z2V0dGluZy1zZXR0aW5nLWFuZC1yZW1vdmluZy10YWJpbmRleC12YWx1ZXMtd2l0aC1qYXZhc2Ny
aXB0LworICAgICAgICAgICAgICAgIC8vIFVzZSBwcm9wZXIgYXR0cmlidXRlIHJldHJpZXZhbCgj
MTIwNzIpCisgICAgICAgICAgICAgICAgdmFyIHRhYmluZGV4ID0galF1ZXJ5LmZpbmQuYXR0cigg
ZWxlbSwgInRhYmluZGV4IiApOworCisgICAgICAgICAgICAgICAgaWYgKCB0YWJpbmRleCApIHsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50KCB0YWJpbmRleCwgMTAgKTsKKyAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoCisgICAgICAgICAgICAgICAg
ICAgIHJmb2N1c2FibGUudGVzdCggZWxlbS5ub2RlTmFtZSApIHx8CisgICAgICAgICAgICAgICAg
ICAgIHJjbGlja2FibGUudGVzdCggZWxlbS5ub2RlTmFtZSApICYmCisgICAgICAgICAgICAgICAg
ICAgIGVsZW0uaHJlZgorICAgICAgICAgICAgICAgICkgeworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9LAorCisgICAgcHJvcEZpeDogeworICAg
ICAgICAiZm9yIjogImh0bWxGb3IiLAorICAgICAgICAiY2xhc3MiOiAiY2xhc3NOYW1lIgorICAg
IH0KK30gKTsKKworLy8gU3VwcG9ydDogSUUgPD0xMSBvbmx5CisvLyBBY2Nlc3NpbmcgdGhlIHNl
bGVjdGVkSW5kZXggcHJvcGVydHkKKy8vIGZvcmNlcyB0aGUgYnJvd3NlciB0byByZXNwZWN0IHNl
dHRpbmcgc2VsZWN0ZWQKKy8vIG9uIHRoZSBvcHRpb24KKy8vIFRoZSBnZXR0ZXIgZW5zdXJlcyBh
IGRlZmF1bHQgb3B0aW9uIGlzIHNlbGVjdGVkCisvLyB3aGVuIGluIGFuIG9wdGdyb3VwCisvLyBl
c2xpbnQgcnVsZSAibm8tdW51c2VkLWV4cHJlc3Npb25zIiBpcyBkaXNhYmxlZCBmb3IgdGhpcyBj
b2RlCisvLyBzaW5jZSBpdCBjb25zaWRlcnMgc3VjaCBhY2Nlc3Npb25zIG5vb3AKK2lmICggIXN1
cHBvcnQub3B0U2VsZWN0ZWQgKSB7CisgICAgalF1ZXJ5LnByb3BIb29rcy5zZWxlY3RlZCA9IHsK
KyAgICAgICAgZ2V0OiBmdW5jdGlvbiggZWxlbSApIHsKKworICAgICAgICAgICAgLyogZXNsaW50
IG5vLXVudXNlZC1leHByZXNzaW9uczogIm9mZiIgKi8KKworICAgICAgICAgICAgdmFyIHBhcmVu
dCA9IGVsZW0ucGFyZW50Tm9kZTsKKyAgICAgICAgICAgIGlmICggcGFyZW50ICYmIHBhcmVudC5w
YXJlbnROb2RlICkgeworICAgICAgICAgICAgICAgIHBhcmVudC5wYXJlbnROb2RlLnNlbGVjdGVk
SW5kZXg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAg
fSwKKyAgICAgICAgc2V0OiBmdW5jdGlvbiggZWxlbSApIHsKKworICAgICAgICAgICAgLyogZXNs
aW50IG5vLXVudXNlZC1leHByZXNzaW9uczogIm9mZiIgKi8KKworICAgICAgICAgICAgdmFyIHBh
cmVudCA9IGVsZW0ucGFyZW50Tm9kZTsKKyAgICAgICAgICAgIGlmICggcGFyZW50ICkgeworICAg
ICAgICAgICAgICAgIHBhcmVudC5zZWxlY3RlZEluZGV4OworCisgICAgICAgICAgICAgICAgaWYg
KCBwYXJlbnQucGFyZW50Tm9kZSApIHsKKyAgICAgICAgICAgICAgICAgICAgcGFyZW50LnBhcmVu
dE5vZGUuc2VsZWN0ZWRJbmRleDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9OworfQorCitqUXVlcnkuZWFjaCggWworICAgICJ0YWJJbmRleCIsCisg
ICAgInJlYWRPbmx5IiwKKyAgICAibWF4TGVuZ3RoIiwKKyAgICAiY2VsbFNwYWNpbmciLAorICAg
ICJjZWxsUGFkZGluZyIsCisgICAgInJvd1NwYW4iLAorICAgICJjb2xTcGFuIiwKKyAgICAidXNl
TWFwIiwKKyAgICAiZnJhbWVCb3JkZXIiLAorICAgICJjb250ZW50RWRpdGFibGUiCitdLCBmdW5j
dGlvbigpIHsKKyAgICBqUXVlcnkucHJvcEZpeFsgdGhpcy50b0xvd2VyQ2FzZSgpIF0gPSB0aGlz
OworfSApOworCisKKworCisgICAgLy8gU3RyaXAgYW5kIGNvbGxhcHNlIHdoaXRlc3BhY2UgYWNj
b3JkaW5nIHRvIEhUTUwgc3BlYworICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcv
bXVsdGlwYWdlL2luZnJhc3RydWN0dXJlLmh0bWwjc3RyaXAtYW5kLWNvbGxhcHNlLXdoaXRlc3Bh
Y2UKKyAgICBmdW5jdGlvbiBzdHJpcEFuZENvbGxhcHNlKCB2YWx1ZSApIHsKKyAgICAgICAgdmFy
IHRva2VucyA9IHZhbHVlLm1hdGNoKCBybm90aHRtbHdoaXRlICkgfHwgW107CisgICAgICAgIHJl
dHVybiB0b2tlbnMuam9pbiggIiAiICk7CisgICAgfQorCisKK2Z1bmN0aW9uIGdldENsYXNzKCBl
bGVtICkgeworICAgIHJldHVybiBlbGVtLmdldEF0dHJpYnV0ZSAmJiBlbGVtLmdldEF0dHJpYnV0
ZSggImNsYXNzIiApIHx8ICIiOworfQorCitqUXVlcnkuZm4uZXh0ZW5kKCB7CisgICAgYWRkQ2xh
c3M6IGZ1bmN0aW9uKCB2YWx1ZSApIHsKKyAgICAgICAgdmFyIGNsYXNzZXMsIGVsZW0sIGN1ciwg
Y3VyVmFsdWUsIGNsYXp6LCBqLCBmaW5hbFZhbHVlLAorICAgICAgICAgICAgaSA9IDA7CisKKyAg
ICAgICAgaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggdmFsdWUgKSApIHsKKyAgICAgICAgICAgIHJl
dHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCBqICkgeworICAgICAgICAgICAgICAgIGpRdWVyeSgg
dGhpcyApLmFkZENsYXNzKCB2YWx1ZS5jYWxsKCB0aGlzLCBqLCBnZXRDbGFzcyggdGhpcyApICkg
KTsKKyAgICAgICAgICAgIH0gKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICggdHlwZW9mIHZh
bHVlID09PSAic3RyaW5nIiAmJiB2YWx1ZSApIHsKKyAgICAgICAgICAgIGNsYXNzZXMgPSB2YWx1
ZS5tYXRjaCggcm5vdGh0bWx3aGl0ZSApIHx8IFtdOworCisgICAgICAgICAgICB3aGlsZSAoICgg
ZWxlbSA9IHRoaXNbIGkrKyBdICkgKSB7CisgICAgICAgICAgICAgICAgY3VyVmFsdWUgPSBnZXRD
bGFzcyggZWxlbSApOworICAgICAgICAgICAgICAgIGN1ciA9IGVsZW0ubm9kZVR5cGUgPT09IDEg
JiYgKCAiICIgKyBzdHJpcEFuZENvbGxhcHNlKCBjdXJWYWx1ZSApICsgIiAiICk7CisKKyAgICAg
ICAgICAgICAgICBpZiAoIGN1ciApIHsKKyAgICAgICAgICAgICAgICAgICAgaiA9IDA7CisgICAg
ICAgICAgICAgICAgICAgIHdoaWxlICggKCBjbGF6eiA9IGNsYXNzZXNbIGorKyBdICkgKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGN1ci5pbmRleE9mKCAiICIgKyBjbGF6eiArICIg
IiApIDwgMCApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXIgKz0gY2xhenogKyAi
ICI7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgICAgICAgICAvLyBPbmx5IGFzc2lnbiBpZiBkaWZmZXJlbnQgdG8gYXZvaWQg
dW5uZWVkZWQgcmVuZGVyaW5nLgorICAgICAgICAgICAgICAgICAgICBmaW5hbFZhbHVlID0gc3Ry
aXBBbmRDb2xsYXBzZSggY3VyICk7CisgICAgICAgICAgICAgICAgICAgIGlmICggY3VyVmFsdWUg
IT09IGZpbmFsVmFsdWUgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBlbGVtLnNldEF0dHJp
YnV0ZSggImNsYXNzIiwgZmluYWxWYWx1ZSApOworICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJu
IHRoaXM7CisgICAgfSwKKworICAgIHJlbW92ZUNsYXNzOiBmdW5jdGlvbiggdmFsdWUgKSB7Cisg
ICAgICAgIHZhciBjbGFzc2VzLCBlbGVtLCBjdXIsIGN1clZhbHVlLCBjbGF6eiwgaiwgZmluYWxW
YWx1ZSwKKyAgICAgICAgICAgIGkgPSAwOworCisgICAgICAgIGlmICggalF1ZXJ5LmlzRnVuY3Rp
b24oIHZhbHVlICkgKSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigg
aiApIHsKKyAgICAgICAgICAgICAgICBqUXVlcnkoIHRoaXMgKS5yZW1vdmVDbGFzcyggdmFsdWUu
Y2FsbCggdGhpcywgaiwgZ2V0Q2xhc3MoIHRoaXMgKSApICk7CisgICAgICAgICAgICB9ICk7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoICFhcmd1bWVudHMubGVuZ3RoICkgeworICAgICAgICAg
ICAgcmV0dXJuIHRoaXMuYXR0ciggImNsYXNzIiwgIiIgKTsKKyAgICAgICAgfQorCisgICAgICAg
IGlmICggdHlwZW9mIHZhbHVlID09PSAic3RyaW5nIiAmJiB2YWx1ZSApIHsKKyAgICAgICAgICAg
IGNsYXNzZXMgPSB2YWx1ZS5tYXRjaCggcm5vdGh0bWx3aGl0ZSApIHx8IFtdOworCisgICAgICAg
ICAgICB3aGlsZSAoICggZWxlbSA9IHRoaXNbIGkrKyBdICkgKSB7CisgICAgICAgICAgICAgICAg
Y3VyVmFsdWUgPSBnZXRDbGFzcyggZWxlbSApOworCisgICAgICAgICAgICAgICAgLy8gVGhpcyBl
eHByZXNzaW9uIGlzIGhlcmUgZm9yIGJldHRlciBjb21wcmVzc2liaWxpdHkgKHNlZSBhZGRDbGFz
cykKKyAgICAgICAgICAgICAgICBjdXIgPSBlbGVtLm5vZGVUeXBlID09PSAxICYmICggIiAiICsg
c3RyaXBBbmRDb2xsYXBzZSggY3VyVmFsdWUgKSArICIgIiApOworCisgICAgICAgICAgICAgICAg
aWYgKCBjdXIgKSB7CisgICAgICAgICAgICAgICAgICAgIGogPSAwOworICAgICAgICAgICAgICAg
ICAgICB3aGlsZSAoICggY2xhenogPSBjbGFzc2VzWyBqKysgXSApICkgeworCisgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBSZW1vdmUgKmFsbCogaW5zdGFuY2VzCisgICAgICAgICAgICAgICAg
ICAgICAgICB3aGlsZSAoIGN1ci5pbmRleE9mKCAiICIgKyBjbGF6eiArICIgIiApID4gLTEgKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyID0gY3VyLnJlcGxhY2UoICIgIiArIGNs
YXp6ICsgIiAiLCAiICIgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIC8vIE9ubHkgYXNzaWduIGlmIGRpZmZl
cmVudCB0byBhdm9pZCB1bm5lZWRlZCByZW5kZXJpbmcuCisgICAgICAgICAgICAgICAgICAgIGZp
bmFsVmFsdWUgPSBzdHJpcEFuZENvbGxhcHNlKCBjdXIgKTsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKCBjdXJWYWx1ZSAhPT0gZmluYWxWYWx1ZSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGVsZW0uc2V0QXR0cmlidXRlKCAiY2xhc3MiLCBmaW5hbFZhbHVlICk7CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwor
ICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9LAorCisgICAgdG9nZ2xlQ2xhc3M6IGZ1bmN0aW9u
KCB2YWx1ZSwgc3RhdGVWYWwgKSB7CisgICAgICAgIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlOwor
CisgICAgICAgIGlmICggdHlwZW9mIHN0YXRlVmFsID09PSAiYm9vbGVhbiIgJiYgdHlwZSA9PT0g
InN0cmluZyIgKSB7CisgICAgICAgICAgICByZXR1cm4gc3RhdGVWYWwgPyB0aGlzLmFkZENsYXNz
KCB2YWx1ZSApIDogdGhpcy5yZW1vdmVDbGFzcyggdmFsdWUgKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIHZhbHVlICkgKSB7CisgICAgICAgICAgICByZXR1
cm4gdGhpcy5lYWNoKCBmdW5jdGlvbiggaSApIHsKKyAgICAgICAgICAgICAgICBqUXVlcnkoIHRo
aXMgKS50b2dnbGVDbGFzcygKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUuY2FsbCggdGhpcywg
aSwgZ2V0Q2xhc3MoIHRoaXMgKSwgc3RhdGVWYWwgKSwKKyAgICAgICAgICAgICAgICAgICAgc3Rh
dGVWYWwKKyAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgfSApOworICAgICAgICB9CisK
KyAgICAgICAgcmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB2YXIg
Y2xhc3NOYW1lLCBpLCBzZWxmLCBjbGFzc05hbWVzOworCisgICAgICAgICAgICBpZiAoIHR5cGUg
PT09ICJzdHJpbmciICkgeworCisgICAgICAgICAgICAgICAgLy8gVG9nZ2xlIGluZGl2aWR1YWwg
Y2xhc3MgbmFtZXMKKyAgICAgICAgICAgICAgICBpID0gMDsKKyAgICAgICAgICAgICAgICBzZWxm
ID0galF1ZXJ5KCB0aGlzICk7CisgICAgICAgICAgICAgICAgY2xhc3NOYW1lcyA9IHZhbHVlLm1h
dGNoKCBybm90aHRtbHdoaXRlICkgfHwgW107CisKKyAgICAgICAgICAgICAgICB3aGlsZSAoICgg
Y2xhc3NOYW1lID0gY2xhc3NOYW1lc1sgaSsrIF0gKSApIHsKKworICAgICAgICAgICAgICAgICAg
ICAvLyBDaGVjayBlYWNoIGNsYXNzTmFtZSBnaXZlbiwgc3BhY2Ugc2VwYXJhdGVkIGxpc3QKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKCBzZWxmLmhhc0NsYXNzKCBjbGFzc05hbWUgKSApIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVtb3ZlQ2xhc3MoIGNsYXNzTmFtZSApOworICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5h
ZGRDbGFzcyggY2xhc3NOYW1lICk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIC8vIFRvZ2dsZSB3aG9sZSBjbGFzcyBuYW1lCisgICAgICAg
ICAgICB9IGVsc2UgaWYgKCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHR5cGUgPT09ICJib29sZWFu
IiApIHsKKyAgICAgICAgICAgICAgICBjbGFzc05hbWUgPSBnZXRDbGFzcyggdGhpcyApOworICAg
ICAgICAgICAgICAgIGlmICggY2xhc3NOYW1lICkgeworCisgICAgICAgICAgICAgICAgICAgIC8v
IFN0b3JlIGNsYXNzTmFtZSBpZiBzZXQKKyAgICAgICAgICAgICAgICAgICAgZGF0YVByaXYuc2V0
KCB0aGlzLCAiX19jbGFzc05hbWVfXyIsIGNsYXNzTmFtZSApOworICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgIC8vIElmIHRoZSBlbGVtZW50IGhhcyBhIGNsYXNzIG5hbWUgb3Ig
aWYgd2UncmUgcGFzc2VkIGBmYWxzZWAsCisgICAgICAgICAgICAgICAgLy8gdGhlbiByZW1vdmUg
dGhlIHdob2xlIGNsYXNzbmFtZSAoaWYgdGhlcmUgd2FzIG9uZSwgdGhlIGFib3ZlIHNhdmVkIGl0
KS4KKyAgICAgICAgICAgICAgICAvLyBPdGhlcndpc2UgYnJpbmcgYmFjayB3aGF0ZXZlciB3YXMg
cHJldmlvdXNseSBzYXZlZCAoaWYgYW55dGhpbmcpLAorICAgICAgICAgICAgICAgIC8vIGZhbGxp
bmcgYmFjayB0byB0aGUgZW1wdHkgc3RyaW5nIGlmIG5vdGhpbmcgd2FzIHN0b3JlZC4KKyAgICAg
ICAgICAgICAgICBpZiAoIHRoaXMuc2V0QXR0cmlidXRlICkgeworICAgICAgICAgICAgICAgICAg
ICB0aGlzLnNldEF0dHJpYnV0ZSggImNsYXNzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNs
YXNzTmFtZSB8fCB2YWx1ZSA9PT0gZmFsc2UgPworICAgICAgICAgICAgICAgICAgICAgICAgIiIg
OgorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVByaXYuZ2V0KCB0aGlzLCAiX19jbGFzc05h
bWVfXyIgKSB8fCAiIgorICAgICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgfSApOworICAgIH0sCisKKyAgICBoYXNDbGFzczogZnVu
Y3Rpb24oIHNlbGVjdG9yICkgeworICAgICAgICB2YXIgY2xhc3NOYW1lLCBlbGVtLAorICAgICAg
ICAgICAgaSA9IDA7CisKKyAgICAgICAgY2xhc3NOYW1lID0gIiAiICsgc2VsZWN0b3IgKyAiICI7
CisgICAgICAgIHdoaWxlICggKCBlbGVtID0gdGhpc1sgaSsrIF0gKSApIHsKKyAgICAgICAgICAg
IGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSAmJgorICAgICAgICAgICAgICAgICggIiAiICsgc3Ry
aXBBbmRDb2xsYXBzZSggZ2V0Q2xhc3MoIGVsZW0gKSApICsgIiAiICkuaW5kZXhPZiggY2xhc3NO
YW1lICkgPiAtMSApIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfSApOwor
CisKKworCit2YXIgcnJldHVybiA9IC9cci9nOworCitqUXVlcnkuZm4uZXh0ZW5kKCB7CisgICAg
dmFsOiBmdW5jdGlvbiggdmFsdWUgKSB7CisgICAgICAgIHZhciBob29rcywgcmV0LCBpc0Z1bmN0
aW9uLAorICAgICAgICAgICAgZWxlbSA9IHRoaXNbIDAgXTsKKworICAgICAgICBpZiAoICFhcmd1
bWVudHMubGVuZ3RoICkgeworICAgICAgICAgICAgaWYgKCBlbGVtICkgeworICAgICAgICAgICAg
ICAgIGhvb2tzID0galF1ZXJ5LnZhbEhvb2tzWyBlbGVtLnR5cGUgXSB8fAorICAgICAgICAgICAg
ICAgICAgICBqUXVlcnkudmFsSG9va3NbIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSBdOwor
CisgICAgICAgICAgICAgICAgaWYgKCBob29rcyAmJgorICAgICAgICAgICAgICAgICAgICAiZ2V0
IiBpbiBob29rcyAmJgorICAgICAgICAgICAgICAgICAgICAoIHJldCA9IGhvb2tzLmdldCggZWxl
bSwgInZhbHVlIiApICkgIT09IHVuZGVmaW5lZAorICAgICAgICAgICAgICAgICkgeworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gcmV0OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgIHJldCA9IGVsZW0udmFsdWU7CisKKyAgICAgICAgICAgICAgICAvLyBIYW5kbGUgbW9z
dCBjb21tb24gc3RyaW5nIGNhc2VzCisgICAgICAgICAgICAgICAgaWYgKCB0eXBlb2YgcmV0ID09
PSAic3RyaW5nIiApIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldC5yZXBsYWNlKCBy
cmV0dXJuLCAiIiApOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIEhh
bmRsZSBjYXNlcyB3aGVyZSB2YWx1ZSBpcyBudWxsL3VuZGVmIG9yIG51bWJlcgorICAgICAgICAg
ICAgICAgIHJldHVybiByZXQgPT0gbnVsbCA/ICIiIDogcmV0OworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpc0Z1bmN0aW9uID0galF1
ZXJ5LmlzRnVuY3Rpb24oIHZhbHVlICk7CisKKyAgICAgICAgcmV0dXJuIHRoaXMuZWFjaCggZnVu
Y3Rpb24oIGkgKSB7CisgICAgICAgICAgICB2YXIgdmFsOworCisgICAgICAgICAgICBpZiAoIHRo
aXMubm9kZVR5cGUgIT09IDEgKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBpZiAoIGlzRnVuY3Rpb24gKSB7CisgICAgICAgICAgICAgICAg
dmFsID0gdmFsdWUuY2FsbCggdGhpcywgaSwgalF1ZXJ5KCB0aGlzICkudmFsKCkgKTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdmFsID0gdmFsdWU7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIC8vIFRyZWF0IG51bGwvdW5kZWZpbmVkIGFzICIiOyBjb252ZXJ0
IG51bWJlcnMgdG8gc3RyaW5nCisgICAgICAgICAgICBpZiAoIHZhbCA9PSBudWxsICkgeworICAg
ICAgICAgICAgICAgIHZhbCA9ICIiOworCisgICAgICAgICAgICB9IGVsc2UgaWYgKCB0eXBlb2Yg
dmFsID09PSAibnVtYmVyIiApIHsKKyAgICAgICAgICAgICAgICB2YWwgKz0gIiI7CisKKyAgICAg
ICAgICAgIH0gZWxzZSBpZiAoIGpRdWVyeS5pc0FycmF5KCB2YWwgKSApIHsKKyAgICAgICAgICAg
ICAgICB2YWwgPSBqUXVlcnkubWFwKCB2YWwsIGZ1bmN0aW9uKCB2YWx1ZSApIHsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHZhbHVlID09IG51bGwgPyAiIiA6IHZhbHVlICsgIiI7CisgICAg
ICAgICAgICAgICAgfSApOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBob29rcyA9IGpR
dWVyeS52YWxIb29rc1sgdGhpcy50eXBlIF0gfHwgalF1ZXJ5LnZhbEhvb2tzWyB0aGlzLm5vZGVO
YW1lLnRvTG93ZXJDYXNlKCkgXTsKKworICAgICAgICAgICAgLy8gSWYgc2V0IHJldHVybnMgdW5k
ZWZpbmVkLCBmYWxsIGJhY2sgdG8gbm9ybWFsIHNldHRpbmcKKyAgICAgICAgICAgIGlmICggIWhv
b2tzIHx8ICEoICJzZXQiIGluIGhvb2tzICkgfHwgaG9va3Muc2V0KCB0aGlzLCB2YWwsICJ2YWx1
ZSIgKSA9PT0gdW5kZWZpbmVkICkgeworICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSB2YWw7
CisgICAgICAgICAgICB9CisgICAgICAgIH0gKTsKKyAgICB9Cit9ICk7CisKK2pRdWVyeS5leHRl
bmQoIHsKKyAgICB2YWxIb29rczogeworICAgICAgICBvcHRpb246IHsKKyAgICAgICAgICAgIGdl
dDogZnVuY3Rpb24oIGVsZW0gKSB7CisKKyAgICAgICAgICAgICAgICB2YXIgdmFsID0galF1ZXJ5
LmZpbmQuYXR0ciggZWxlbSwgInZhbHVlIiApOworICAgICAgICAgICAgICAgIHJldHVybiB2YWwg
IT0gbnVsbCA/CisgICAgICAgICAgICAgICAgICAgIHZhbCA6CisKKyAgICAgICAgICAgICAgICAg
ICAgLy8gU3VwcG9ydDogSUUgPD0xMCAtIDExIG9ubHkKKyAgICAgICAgICAgICAgICAgICAgLy8g
b3B0aW9uLnRleHQgdGhyb3dzIGV4Y2VwdGlvbnMgKCMxNDY4NiwgIzE0ODU4KQorICAgICAgICAg
ICAgICAgICAgICAvLyBTdHJpcCBhbmQgY29sbGFwc2Ugd2hpdGVzcGFjZQorICAgICAgICAgICAg
ICAgICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyNzdHJpcC1hbmQtY29sbGFw
c2Utd2hpdGVzcGFjZQorICAgICAgICAgICAgICAgICAgICBzdHJpcEFuZENvbGxhcHNlKCBqUXVl
cnkudGV4dCggZWxlbSApICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgIHNl
bGVjdDogeworICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiggZWxlbSApIHsKKyAgICAgICAgICAg
ICAgICB2YXIgdmFsdWUsIG9wdGlvbiwgaSwKKyAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyA9
IGVsZW0ub3B0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBlbGVtLnNlbGVjdGVk
SW5kZXgsCisgICAgICAgICAgICAgICAgICAgIG9uZSA9IGVsZW0udHlwZSA9PT0gInNlbGVjdC1v
bmUiLAorICAgICAgICAgICAgICAgICAgICB2YWx1ZXMgPSBvbmUgPyBudWxsIDogW10sCisgICAg
ICAgICAgICAgICAgICAgIG1heCA9IG9uZSA/IGluZGV4ICsgMSA6IG9wdGlvbnMubGVuZ3RoOwor
CisgICAgICAgICAgICAgICAgaWYgKCBpbmRleCA8IDAgKSB7CisgICAgICAgICAgICAgICAgICAg
IGkgPSBtYXg7CisKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAg
ICBpID0gb25lID8gaW5kZXggOiAwOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ICAgIC8vIExvb3AgdGhyb3VnaCBhbGwgdGhlIHNlbGVjdGVkIG9wdGlvbnMKKyAgICAgICAgICAg
ICAgICBmb3IgKCA7IGkgPCBtYXg7IGkrKyApIHsKKyAgICAgICAgICAgICAgICAgICAgb3B0aW9u
ID0gb3B0aW9uc1sgaSBdOworCisgICAgICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6IElFIDw9
OSBvbmx5CisgICAgICAgICAgICAgICAgICAgIC8vIElFOC05IGRvZXNuJ3QgdXBkYXRlIHNlbGVj
dGVkIGFmdGVyIGZvcm0gcmVzZXQgKCMyNTUxKQorICAgICAgICAgICAgICAgICAgICBpZiAoICgg
b3B0aW9uLnNlbGVjdGVkIHx8IGkgPT09IGluZGV4ICkgJiYKKworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIERvbid0IHJldHVybiBvcHRpb25zIHRoYXQgYXJlIGRpc2FibGVkIG9yIGlu
IGEgZGlzYWJsZWQgb3B0Z3JvdXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAhb3B0aW9u
LmRpc2FibGVkICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAhb3B0aW9uLnBhcmVu
dE5vZGUuZGlzYWJsZWQgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWpRdWVy
eS5ub2RlTmFtZSggb3B0aW9uLnBhcmVudE5vZGUsICJvcHRncm91cCIgKSApICkgeworCisgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBHZXQgdGhlIHNwZWNpZmljIHZhbHVlIGZvciB0aGUgb3B0
aW9uCisgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGpRdWVyeSggb3B0aW9uICkudmFs
KCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgYW4gYXJyYXkg
Zm9yIG9uZSBzZWxlY3RzCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIG9uZSApIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgICAgICAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIE11bHRpLVNlbGVjdHMgcmV0
dXJuIGFuIGFycmF5CisgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXMucHVzaCggdmFsdWUg
KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgIHJldHVybiB2YWx1ZXM7CisgICAgICAgICAgICB9LAorCisgICAgICAgICAgICBzZXQ6
IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSApIHsKKyAgICAgICAgICAgICAgICB2YXIgb3B0aW9uU2V0
LCBvcHRpb24sCisgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMgPSBlbGVtLm9wdGlvbnMsCisg
ICAgICAgICAgICAgICAgICAgIHZhbHVlcyA9IGpRdWVyeS5tYWtlQXJyYXkoIHZhbHVlICksCisg
ICAgICAgICAgICAgICAgICAgIGkgPSBvcHRpb25zLmxlbmd0aDsKKworICAgICAgICAgICAgICAg
IHdoaWxlICggaS0tICkgeworICAgICAgICAgICAgICAgICAgICBvcHRpb24gPSBvcHRpb25zWyBp
IF07CisKKyAgICAgICAgICAgICAgICAgICAgLyogZXNsaW50LWRpc2FibGUgbm8tY29uZC1hc3Np
Z24gKi8KKworICAgICAgICAgICAgICAgICAgICBpZiAoIG9wdGlvbi5zZWxlY3RlZCA9CisgICAg
ICAgICAgICAgICAgICAgICAgICBqUXVlcnkuaW5BcnJheSggalF1ZXJ5LnZhbEhvb2tzLm9wdGlv
bi5nZXQoIG9wdGlvbiApLCB2YWx1ZXMgKSA+IC0xCisgICAgICAgICAgICAgICAgICAgICkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uU2V0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIC8qIGVzbGludC1lbmFibGUgbm8tY29uZC1h
c3NpZ24gKi8KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBGb3JjZSBi
cm93c2VycyB0byBiZWhhdmUgY29uc2lzdGVudGx5IHdoZW4gbm9uLW1hdGNoaW5nIHZhbHVlIGlz
IHNldAorICAgICAgICAgICAgICAgIGlmICggIW9wdGlvblNldCApIHsKKyAgICAgICAgICAgICAg
ICAgICAgZWxlbS5zZWxlY3RlZEluZGV4ID0gLTE7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIHJldHVybiB2YWx1ZXM7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
Cit9ICk7CisKKy8vIFJhZGlvcyBhbmQgY2hlY2tib3hlcyBnZXR0ZXIvc2V0dGVyCitqUXVlcnku
ZWFjaCggWyAicmFkaW8iLCAiY2hlY2tib3giIF0sIGZ1bmN0aW9uKCkgeworICAgIGpRdWVyeS52
YWxIb29rc1sgdGhpcyBdID0geworICAgICAgICBzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSAp
IHsKKyAgICAgICAgICAgIGlmICggalF1ZXJ5LmlzQXJyYXkoIHZhbHVlICkgKSB7CisgICAgICAg
ICAgICAgICAgcmV0dXJuICggZWxlbS5jaGVja2VkID0galF1ZXJ5LmluQXJyYXkoIGpRdWVyeSgg
ZWxlbSApLnZhbCgpLCB2YWx1ZSApID4gLTEgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH07CisgICAgaWYgKCAhc3VwcG9ydC5jaGVja09uICkgeworICAgICAgICBqUXVlcnkudmFs
SG9va3NbIHRoaXMgXS5nZXQgPSBmdW5jdGlvbiggZWxlbSApIHsKKyAgICAgICAgICAgIHJldHVy
biBlbGVtLmdldEF0dHJpYnV0ZSggInZhbHVlIiApID09PSBudWxsID8gIm9uIiA6IGVsZW0udmFs
dWU7CisgICAgICAgIH07CisgICAgfQorfSApOworCisKKworCisvLyBSZXR1cm4galF1ZXJ5IGZv
ciBhdHRyaWJ1dGVzLW9ubHkgaW5jbHVzaW9uCisKKwordmFyIHJmb2N1c01vcnBoID0gL14oPzpm
b2N1c2luZm9jdXN8Zm9jdXNvdXRibHVyKSQvOworCitqUXVlcnkuZXh0ZW5kKCBqUXVlcnkuZXZl
bnQsIHsKKworICAgIHRyaWdnZXI6IGZ1bmN0aW9uKCBldmVudCwgZGF0YSwgZWxlbSwgb25seUhh
bmRsZXJzICkgeworCisgICAgICAgIHZhciBpLCBjdXIsIHRtcCwgYnViYmxlVHlwZSwgb250eXBl
LCBoYW5kbGUsIHNwZWNpYWwsCisgICAgICAgICAgICBldmVudFBhdGggPSBbIGVsZW0gfHwgZG9j
dW1lbnQgXSwKKyAgICAgICAgICAgIHR5cGUgPSBoYXNPd24uY2FsbCggZXZlbnQsICJ0eXBlIiAp
ID8gZXZlbnQudHlwZSA6IGV2ZW50LAorICAgICAgICAgICAgbmFtZXNwYWNlcyA9IGhhc093bi5j
YWxsKCBldmVudCwgIm5hbWVzcGFjZSIgKSA/IGV2ZW50Lm5hbWVzcGFjZS5zcGxpdCggIi4iICkg
OiBbXTsKKworICAgICAgICBjdXIgPSB0bXAgPSBlbGVtID0gZWxlbSB8fCBkb2N1bWVudDsKKwor
ICAgICAgICAvLyBEb24ndCBkbyBldmVudHMgb24gdGV4dCBhbmQgY29tbWVudCBub2RlcworICAg
ICAgICBpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDMgfHwgZWxlbS5ub2RlVHlwZSA9PT0gOCApIHsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIGZvY3VzL2JsdXIg
bW9ycGhzIHRvIGZvY3VzaW4vb3V0OyBlbnN1cmUgd2UncmUgbm90IGZpcmluZyB0aGVtIHJpZ2h0
IG5vdworICAgICAgICBpZiAoIHJmb2N1c01vcnBoLnRlc3QoIHR5cGUgKyBqUXVlcnkuZXZlbnQu
dHJpZ2dlcmVkICkgKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICBpZiAoIHR5cGUuaW5kZXhPZiggIi4iICkgPiAtMSApIHsKKworICAgICAgICAgICAgLy8gTmFt
ZXNwYWNlZCB0cmlnZ2VyOyBjcmVhdGUgYSByZWdleHAgdG8gbWF0Y2ggZXZlbnQgdHlwZSBpbiBo
YW5kbGUoKQorICAgICAgICAgICAgbmFtZXNwYWNlcyA9IHR5cGUuc3BsaXQoICIuIiApOworICAg
ICAgICAgICAgdHlwZSA9IG5hbWVzcGFjZXMuc2hpZnQoKTsKKyAgICAgICAgICAgIG5hbWVzcGFj
ZXMuc29ydCgpOworICAgICAgICB9CisgICAgICAgIG9udHlwZSA9IHR5cGUuaW5kZXhPZiggIjoi
ICkgPCAwICYmICJvbiIgKyB0eXBlOworCisgICAgICAgIC8vIENhbGxlciBjYW4gcGFzcyBpbiBh
IGpRdWVyeS5FdmVudCBvYmplY3QsIE9iamVjdCwgb3IganVzdCBhbiBldmVudCB0eXBlIHN0cmlu
ZworICAgICAgICBldmVudCA9IGV2ZW50WyBqUXVlcnkuZXhwYW5kbyBdID8KKyAgICAgICAgICAg
IGV2ZW50IDoKKyAgICAgICAgICAgIG5ldyBqUXVlcnkuRXZlbnQoIHR5cGUsIHR5cGVvZiBldmVu
dCA9PT0gIm9iamVjdCIgJiYgZXZlbnQgKTsKKworICAgICAgICAvLyBUcmlnZ2VyIGJpdG1hc2s6
ICYgMSBmb3IgbmF0aXZlIGhhbmRsZXJzOyAmIDIgZm9yIGpRdWVyeSAoYWx3YXlzIHRydWUpCisg
ICAgICAgIGV2ZW50LmlzVHJpZ2dlciA9IG9ubHlIYW5kbGVycyA/IDIgOiAzOworICAgICAgICBl
dmVudC5uYW1lc3BhY2UgPSBuYW1lc3BhY2VzLmpvaW4oICIuIiApOworICAgICAgICBldmVudC5y
bmFtZXNwYWNlID0gZXZlbnQubmFtZXNwYWNlID8KKyAgICAgICAgICAgIG5ldyBSZWdFeHAoICIo
XnxcXC4pIiArIG5hbWVzcGFjZXMuam9pbiggIlxcLig/Oi4qXFwufCkiICkgKyAiKFxcLnwkKSIg
KSA6CisgICAgICAgICAgICBudWxsOworCisgICAgICAgIC8vIENsZWFuIHVwIHRoZSBldmVudCBp
biBjYXNlIGl0IGlzIGJlaW5nIHJldXNlZAorICAgICAgICBldmVudC5yZXN1bHQgPSB1bmRlZmlu
ZWQ7CisgICAgICAgIGlmICggIWV2ZW50LnRhcmdldCApIHsKKyAgICAgICAgICAgIGV2ZW50LnRh
cmdldCA9IGVsZW07CisgICAgICAgIH0KKworICAgICAgICAvLyBDbG9uZSBhbnkgaW5jb21pbmcg
ZGF0YSBhbmQgcHJlcGVuZCB0aGUgZXZlbnQsIGNyZWF0aW5nIHRoZSBoYW5kbGVyIGFyZyBsaXN0
CisgICAgICAgIGRhdGEgPSBkYXRhID09IG51bGwgPworICAgICAgICAgICAgWyBldmVudCBdIDoK
KyAgICAgICAgICAgIGpRdWVyeS5tYWtlQXJyYXkoIGRhdGEsIFsgZXZlbnQgXSApOworCisgICAg
ICAgIC8vIEFsbG93IHNwZWNpYWwgZXZlbnRzIHRvIGRyYXcgb3V0c2lkZSB0aGUgbGluZXMKKyAg
ICAgICAgc3BlY2lhbCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsWyB0eXBlIF0gfHwge307CisgICAg
ICAgIGlmICggIW9ubHlIYW5kbGVycyAmJiBzcGVjaWFsLnRyaWdnZXIgJiYgc3BlY2lhbC50cmln
Z2VyLmFwcGx5KCBlbGVtLCBkYXRhICkgPT09IGZhbHNlICkgeworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgLy8gRGV0ZXJtaW5lIGV2ZW50IHByb3BhZ2F0aW9uIHBh
dGggaW4gYWR2YW5jZSwgcGVyIFczQyBldmVudHMgc3BlYyAoIzk5NTEpCisgICAgICAgIC8vIEJ1
YmJsZSB1cCB0byBkb2N1bWVudCwgdGhlbiB0byB3aW5kb3c7IHdhdGNoIGZvciBhIGdsb2JhbCBv
d25lckRvY3VtZW50IHZhciAoIzk3MjQpCisgICAgICAgIGlmICggIW9ubHlIYW5kbGVycyAmJiAh
c3BlY2lhbC5ub0J1YmJsZSAmJiAhalF1ZXJ5LmlzV2luZG93KCBlbGVtICkgKSB7CisKKyAgICAg
ICAgICAgIGJ1YmJsZVR5cGUgPSBzcGVjaWFsLmRlbGVnYXRlVHlwZSB8fCB0eXBlOworICAgICAg
ICAgICAgaWYgKCAhcmZvY3VzTW9ycGgudGVzdCggYnViYmxlVHlwZSArIHR5cGUgKSApIHsKKyAg
ICAgICAgICAgICAgICBjdXIgPSBjdXIucGFyZW50Tm9kZTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGZvciAoIDsgY3VyOyBjdXIgPSBjdXIucGFyZW50Tm9kZSApIHsKKyAgICAgICAgICAg
ICAgICBldmVudFBhdGgucHVzaCggY3VyICk7CisgICAgICAgICAgICAgICAgdG1wID0gY3VyOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBPbmx5IGFkZCB3aW5kb3cgaWYgd2UgZ290
IHRvIGRvY3VtZW50IChlLmcuLCBub3QgcGxhaW4gb2JqIG9yIGRldGFjaGVkIERPTSkKKyAgICAg
ICAgICAgIGlmICggdG1wID09PSAoIGVsZW0ub3duZXJEb2N1bWVudCB8fCBkb2N1bWVudCApICkg
eworICAgICAgICAgICAgICAgIGV2ZW50UGF0aC5wdXNoKCB0bXAuZGVmYXVsdFZpZXcgfHwgdG1w
LnBhcmVudFdpbmRvdyB8fCB3aW5kb3cgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisg
ICAgICAgIC8vIEZpcmUgaGFuZGxlcnMgb24gdGhlIGV2ZW50IHBhdGgKKyAgICAgICAgaSA9IDA7
CisgICAgICAgIHdoaWxlICggKCBjdXIgPSBldmVudFBhdGhbIGkrKyBdICkgJiYgIWV2ZW50Lmlz
UHJvcGFnYXRpb25TdG9wcGVkKCkgKSB7CisKKyAgICAgICAgICAgIGV2ZW50LnR5cGUgPSBpID4g
MSA/CisgICAgICAgICAgICAgICAgYnViYmxlVHlwZSA6CisgICAgICAgICAgICAgICAgc3BlY2lh
bC5iaW5kVHlwZSB8fCB0eXBlOworCisgICAgICAgICAgICAvLyBqUXVlcnkgaGFuZGxlcgorICAg
ICAgICAgICAgaGFuZGxlID0gKCBkYXRhUHJpdi5nZXQoIGN1ciwgImV2ZW50cyIgKSB8fCB7fSAp
WyBldmVudC50eXBlIF0gJiYKKyAgICAgICAgICAgICAgICBkYXRhUHJpdi5nZXQoIGN1ciwgImhh
bmRsZSIgKTsKKyAgICAgICAgICAgIGlmICggaGFuZGxlICkgeworICAgICAgICAgICAgICAgIGhh
bmRsZS5hcHBseSggY3VyLCBkYXRhICk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8v
IE5hdGl2ZSBoYW5kbGVyCisgICAgICAgICAgICBoYW5kbGUgPSBvbnR5cGUgJiYgY3VyWyBvbnR5
cGUgXTsKKyAgICAgICAgICAgIGlmICggaGFuZGxlICYmIGhhbmRsZS5hcHBseSAmJiBhY2NlcHRE
YXRhKCBjdXIgKSApIHsKKyAgICAgICAgICAgICAgICBldmVudC5yZXN1bHQgPSBoYW5kbGUuYXBw
bHkoIGN1ciwgZGF0YSApOworICAgICAgICAgICAgICAgIGlmICggZXZlbnQucmVzdWx0ID09PSBm
YWxzZSApIHsKKyAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZXZlbnQu
dHlwZSA9IHR5cGU7CisKKyAgICAgICAgLy8gSWYgbm9ib2R5IHByZXZlbnRlZCB0aGUgZGVmYXVs
dCBhY3Rpb24sIGRvIGl0IG5vdworICAgICAgICBpZiAoICFvbmx5SGFuZGxlcnMgJiYgIWV2ZW50
LmlzRGVmYXVsdFByZXZlbnRlZCgpICkgeworCisgICAgICAgICAgICBpZiAoICggIXNwZWNpYWwu
X2RlZmF1bHQgfHwKKyAgICAgICAgICAgICAgICBzcGVjaWFsLl9kZWZhdWx0LmFwcGx5KCBldmVu
dFBhdGgucG9wKCksIGRhdGEgKSA9PT0gZmFsc2UgKSAmJgorICAgICAgICAgICAgICAgIGFjY2Vw
dERhdGEoIGVsZW0gKSApIHsKKworICAgICAgICAgICAgICAgIC8vIENhbGwgYSBuYXRpdmUgRE9N
IG1ldGhvZCBvbiB0aGUgdGFyZ2V0IHdpdGggdGhlIHNhbWUgbmFtZSBhcyB0aGUgZXZlbnQuCisg
ICAgICAgICAgICAgICAgLy8gRG9uJ3QgZG8gZGVmYXVsdCBhY3Rpb25zIG9uIHdpbmRvdywgdGhh
dCdzIHdoZXJlIGdsb2JhbCB2YXJpYWJsZXMgYmUgKCM2MTcwKQorICAgICAgICAgICAgICAgIGlm
ICggb250eXBlICYmIGpRdWVyeS5pc0Z1bmN0aW9uKCBlbGVtWyB0eXBlIF0gKSAmJiAhalF1ZXJ5
LmlzV2luZG93KCBlbGVtICkgKSB7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gRG9uJ3QgcmUt
dHJpZ2dlciBhbiBvbkZPTyBldmVudCB3aGVuIHdlIGNhbGwgaXRzIEZPTygpIG1ldGhvZAorICAg
ICAgICAgICAgICAgICAgICB0bXAgPSBlbGVtWyBvbnR5cGUgXTsKKworICAgICAgICAgICAgICAg
ICAgICBpZiAoIHRtcCApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1bIG9udHlwZSBd
ID0gbnVsbDsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIC8v
IFByZXZlbnQgcmUtdHJpZ2dlcmluZyBvZiB0aGUgc2FtZSBldmVudCwgc2luY2Ugd2UgYWxyZWFk
eSBidWJibGVkIGl0IGFib3ZlCisgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5ldmVudC50cmln
Z2VyZWQgPSB0eXBlOworICAgICAgICAgICAgICAgICAgICBlbGVtWyB0eXBlIF0oKTsKKyAgICAg
ICAgICAgICAgICAgICAgalF1ZXJ5LmV2ZW50LnRyaWdnZXJlZCA9IHVuZGVmaW5lZDsKKworICAg
ICAgICAgICAgICAgICAgICBpZiAoIHRtcCApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVs
ZW1bIG9udHlwZSBdID0gdG1wOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGV2ZW50LnJl
c3VsdDsKKyAgICB9LAorCisgICAgLy8gUGlnZ3liYWNrIG9uIGEgZG9ub3IgZXZlbnQgdG8gc2lt
dWxhdGUgYSBkaWZmZXJlbnQgb25lCisgICAgLy8gVXNlZCBvbmx5IGZvciBgZm9jdXMoaW4gfCBv
dXQpYCBldmVudHMKKyAgICBzaW11bGF0ZTogZnVuY3Rpb24oIHR5cGUsIGVsZW0sIGV2ZW50ICkg
eworICAgICAgICB2YXIgZSA9IGpRdWVyeS5leHRlbmQoCisgICAgICAgICAgICBuZXcgalF1ZXJ5
LkV2ZW50KCksCisgICAgICAgICAgICBldmVudCwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICB0eXBlOiB0eXBlLAorICAgICAgICAgICAgICAgIGlzU2ltdWxhdGVkOiB0cnVlCisgICAg
ICAgICAgICB9CisgICAgICAgICk7CisKKyAgICAgICAgalF1ZXJ5LmV2ZW50LnRyaWdnZXIoIGUs
IG51bGwsIGVsZW0gKTsKKyAgICB9CisKK30gKTsKKworalF1ZXJ5LmZuLmV4dGVuZCggeworCisg
ICAgdHJpZ2dlcjogZnVuY3Rpb24oIHR5cGUsIGRhdGEgKSB7CisgICAgICAgIHJldHVybiB0aGlz
LmVhY2goIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgalF1ZXJ5LmV2ZW50LnRyaWdnZXIoIHR5
cGUsIGRhdGEsIHRoaXMgKTsKKyAgICAgICAgfSApOworICAgIH0sCisgICAgdHJpZ2dlckhhbmRs
ZXI6IGZ1bmN0aW9uKCB0eXBlLCBkYXRhICkgeworICAgICAgICB2YXIgZWxlbSA9IHRoaXNbIDAg
XTsKKyAgICAgICAgaWYgKCBlbGVtICkgeworICAgICAgICAgICAgcmV0dXJuIGpRdWVyeS5ldmVu
dC50cmlnZ2VyKCB0eXBlLCBkYXRhLCBlbGVtLCB0cnVlICk7CisgICAgICAgIH0KKyAgICB9Cit9
ICk7CisKKworalF1ZXJ5LmVhY2goICggImJsdXIgZm9jdXMgZm9jdXNpbiBmb2N1c291dCByZXNp
emUgc2Nyb2xsIGNsaWNrIGRibGNsaWNrICIgKworICAgICJtb3VzZWRvd24gbW91c2V1cCBtb3Vz
ZW1vdmUgbW91c2VvdmVyIG1vdXNlb3V0IG1vdXNlZW50ZXIgbW91c2VsZWF2ZSAiICsKKyAgICAi
Y2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBjb250ZXh0bWVudSIg
KS5zcGxpdCggIiAiICksCisgICAgZnVuY3Rpb24oIGksIG5hbWUgKSB7CisKKyAgICAvLyBIYW5k
bGUgZXZlbnQgYmluZGluZworICAgIGpRdWVyeS5mblsgbmFtZSBdID0gZnVuY3Rpb24oIGRhdGEs
IGZuICkgeworICAgICAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA+IDAgPworICAgICAgICAg
ICAgdGhpcy5vbiggbmFtZSwgbnVsbCwgZGF0YSwgZm4gKSA6CisgICAgICAgICAgICB0aGlzLnRy
aWdnZXIoIG5hbWUgKTsKKyAgICB9OworfSApOworCitqUXVlcnkuZm4uZXh0ZW5kKCB7CisgICAg
aG92ZXI6IGZ1bmN0aW9uKCBmbk92ZXIsIGZuT3V0ICkgeworICAgICAgICByZXR1cm4gdGhpcy5t
b3VzZWVudGVyKCBmbk92ZXIgKS5tb3VzZWxlYXZlKCBmbk91dCB8fCBmbk92ZXIgKTsKKyAgICB9
Cit9ICk7CisKKworCisKK3N1cHBvcnQuZm9jdXNpbiA9ICJvbmZvY3VzaW4iIGluIHdpbmRvdzsK
KworCisvLyBTdXBwb3J0OiBGaXJlZm94IDw9NDQKKy8vIEZpcmVmb3ggZG9lc24ndCBoYXZlIGZv
Y3VzKGluIHwgb3V0KSBldmVudHMKKy8vIFJlbGF0ZWQgdGlja2V0IC0gaHR0cHM6Ly9idWd6aWxs
YS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg3Nzg3CisvLworLy8gU3VwcG9ydDogQ2hy
b21lIDw9NDggLSA0OSwgU2FmYXJpIDw9OS4wIC0gOS4xCisvLyBmb2N1cyhpbiB8IG91dCkgZXZl
bnRzIGZpcmUgYWZ0ZXIgZm9jdXMgJiBibHVyIGV2ZW50cywKKy8vIHdoaWNoIGlzIHNwZWMgdmlv
bGF0aW9uIC0gaHR0cDovL3d3dy53My5vcmcvVFIvRE9NLUxldmVsLTMtRXZlbnRzLyNldmVudHMt
Zm9jdXNldmVudC1ldmVudC1vcmRlcgorLy8gUmVsYXRlZCB0aWNrZXQgLSBodHRwczovL2J1Z3Mu
Y2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD00NDk4NTcKK2lmICggIXN1
cHBvcnQuZm9jdXNpbiApIHsKKyAgICBqUXVlcnkuZWFjaCggeyBmb2N1czogImZvY3VzaW4iLCBi
bHVyOiAiZm9jdXNvdXQiIH0sIGZ1bmN0aW9uKCBvcmlnLCBmaXggKSB7CisKKyAgICAgICAgLy8g
QXR0YWNoIGEgc2luZ2xlIGNhcHR1cmluZyBoYW5kbGVyIG9uIHRoZSBkb2N1bWVudCB3aGlsZSBz
b21lb25lIHdhbnRzIGZvY3VzaW4vZm9jdXNvdXQKKyAgICAgICAgdmFyIGhhbmRsZXIgPSBmdW5j
dGlvbiggZXZlbnQgKSB7CisgICAgICAgICAgICBqUXVlcnkuZXZlbnQuc2ltdWxhdGUoIGZpeCwg
ZXZlbnQudGFyZ2V0LCBqUXVlcnkuZXZlbnQuZml4KCBldmVudCApICk7CisgICAgICAgIH07CisK
KyAgICAgICAgalF1ZXJ5LmV2ZW50LnNwZWNpYWxbIGZpeCBdID0geworICAgICAgICAgICAgc2V0
dXA6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHZhciBkb2MgPSB0aGlzLm93bmVyRG9j
dW1lbnQgfHwgdGhpcywKKyAgICAgICAgICAgICAgICAgICAgYXR0YWNoZXMgPSBkYXRhUHJpdi5h
Y2Nlc3MoIGRvYywgZml4ICk7CisKKyAgICAgICAgICAgICAgICBpZiAoICFhdHRhY2hlcyApIHsK
KyAgICAgICAgICAgICAgICAgICAgZG9jLmFkZEV2ZW50TGlzdGVuZXIoIG9yaWcsIGhhbmRsZXIs
IHRydWUgKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZGF0YVByaXYuYWNj
ZXNzKCBkb2MsIGZpeCwgKCBhdHRhY2hlcyB8fCAwICkgKyAxICk7CisgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgdGVhcmRvd246IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHZhciBk
b2MgPSB0aGlzLm93bmVyRG9jdW1lbnQgfHwgdGhpcywKKyAgICAgICAgICAgICAgICAgICAgYXR0
YWNoZXMgPSBkYXRhUHJpdi5hY2Nlc3MoIGRvYywgZml4ICkgLSAxOworCisgICAgICAgICAgICAg
ICAgaWYgKCAhYXR0YWNoZXMgKSB7CisgICAgICAgICAgICAgICAgICAgIGRvYy5yZW1vdmVFdmVu
dExpc3RlbmVyKCBvcmlnLCBoYW5kbGVyLCB0cnVlICk7CisgICAgICAgICAgICAgICAgICAgIGRh
dGFQcml2LnJlbW92ZSggZG9jLCBmaXggKTsKKworICAgICAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgICAgIGRhdGFQcml2LmFjY2VzcyggZG9jLCBmaXgsIGF0dGFjaGVzICk7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0gKTsK
K30KKworCit2YXIKKyAgICByYnJhY2tldCA9IC9cW1xdJC8sCisgICAgckNSTEYgPSAvXHI/XG4v
ZywKKyAgICByc3VibWl0dGVyVHlwZXMgPSAvXig/OnN1Ym1pdHxidXR0b258aW1hZ2V8cmVzZXR8
ZmlsZSkkL2ksCisgICAgcnN1Ym1pdHRhYmxlID0gL14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8
a2V5Z2VuKS9pOworCitmdW5jdGlvbiBidWlsZFBhcmFtcyggcHJlZml4LCBvYmosIHRyYWRpdGlv
bmFsLCBhZGQgKSB7CisgICAgdmFyIG5hbWU7CisKKyAgICBpZiAoIGpRdWVyeS5pc0FycmF5KCBv
YmogKSApIHsKKworICAgICAgICAvLyBTZXJpYWxpemUgYXJyYXkgaXRlbS4KKyAgICAgICAgalF1
ZXJ5LmVhY2goIG9iaiwgZnVuY3Rpb24oIGksIHYgKSB7CisgICAgICAgICAgICBpZiAoIHRyYWRp
dGlvbmFsIHx8IHJicmFja2V0LnRlc3QoIHByZWZpeCApICkgeworCisgICAgICAgICAgICAgICAg
Ly8gVHJlYXQgZWFjaCBhcnJheSBpdGVtIGFzIGEgc2NhbGFyLgorICAgICAgICAgICAgICAgIGFk
ZCggcHJlZml4LCB2ICk7CisKKyAgICAgICAgICAgIH0gZWxzZSB7CisKKyAgICAgICAgICAgICAg
ICAvLyBJdGVtIGlzIG5vbi1zY2FsYXIgKGFycmF5IG9yIG9iamVjdCksIGVuY29kZSBpdHMgbnVt
ZXJpYyBpbmRleC4KKyAgICAgICAgICAgICAgICBidWlsZFBhcmFtcygKKyAgICAgICAgICAgICAg
ICAgICAgcHJlZml4ICsgIlsiICsgKCB0eXBlb2YgdiA9PT0gIm9iamVjdCIgJiYgdiAhPSBudWxs
ID8gaSA6ICIiICkgKyAiXSIsCisgICAgICAgICAgICAgICAgICAgIHYsCisgICAgICAgICAgICAg
ICAgICAgIHRyYWRpdGlvbmFsLAorICAgICAgICAgICAgICAgICAgICBhZGQKKyAgICAgICAgICAg
ICAgICApOworICAgICAgICAgICAgfQorICAgICAgICB9ICk7CisKKyAgICB9IGVsc2UgaWYgKCAh
dHJhZGl0aW9uYWwgJiYgalF1ZXJ5LnR5cGUoIG9iaiApID09PSAib2JqZWN0IiApIHsKKworICAg
ICAgICAvLyBTZXJpYWxpemUgb2JqZWN0IGl0ZW0uCisgICAgICAgIGZvciAoIG5hbWUgaW4gb2Jq
ICkgeworICAgICAgICAgICAgYnVpbGRQYXJhbXMoIHByZWZpeCArICJbIiArIG5hbWUgKyAiXSIs
IG9ialsgbmFtZSBdLCB0cmFkaXRpb25hbCwgYWRkICk7CisgICAgICAgIH0KKworICAgIH0gZWxz
ZSB7CisKKyAgICAgICAgLy8gU2VyaWFsaXplIHNjYWxhciBpdGVtLgorICAgICAgICBhZGQoIHBy
ZWZpeCwgb2JqICk7CisgICAgfQorfQorCisvLyBTZXJpYWxpemUgYW4gYXJyYXkgb2YgZm9ybSBl
bGVtZW50cyBvciBhIHNldCBvZgorLy8ga2V5L3ZhbHVlcyBpbnRvIGEgcXVlcnkgc3RyaW5nCitq
UXVlcnkucGFyYW0gPSBmdW5jdGlvbiggYSwgdHJhZGl0aW9uYWwgKSB7CisgICAgdmFyIHByZWZp
eCwKKyAgICAgICAgcyA9IFtdLAorICAgICAgICBhZGQgPSBmdW5jdGlvbigga2V5LCB2YWx1ZU9y
RnVuY3Rpb24gKSB7CisKKyAgICAgICAgICAgIC8vIElmIHZhbHVlIGlzIGEgZnVuY3Rpb24sIGlu
dm9rZSBpdCBhbmQgdXNlIGl0cyByZXR1cm4gdmFsdWUKKyAgICAgICAgICAgIHZhciB2YWx1ZSA9
IGpRdWVyeS5pc0Z1bmN0aW9uKCB2YWx1ZU9yRnVuY3Rpb24gKSA/CisgICAgICAgICAgICAgICAg
dmFsdWVPckZ1bmN0aW9uKCkgOgorICAgICAgICAgICAgICAgIHZhbHVlT3JGdW5jdGlvbjsKKwor
ICAgICAgICAgICAgc1sgcy5sZW5ndGggXSA9IGVuY29kZVVSSUNvbXBvbmVudCgga2V5ICkgKyAi
PSIgKworICAgICAgICAgICAgICAgIGVuY29kZVVSSUNvbXBvbmVudCggdmFsdWUgPT0gbnVsbCA/
ICIiIDogdmFsdWUgKTsKKyAgICAgICAgfTsKKworICAgIC8vIElmIGFuIGFycmF5IHdhcyBwYXNz
ZWQgaW4sIGFzc3VtZSB0aGF0IGl0IGlzIGFuIGFycmF5IG9mIGZvcm0gZWxlbWVudHMuCisgICAg
aWYgKCBqUXVlcnkuaXNBcnJheSggYSApIHx8ICggYS5qcXVlcnkgJiYgIWpRdWVyeS5pc1BsYWlu
T2JqZWN0KCBhICkgKSApIHsKKworICAgICAgICAvLyBTZXJpYWxpemUgdGhlIGZvcm0gZWxlbWVu
dHMKKyAgICAgICAgalF1ZXJ5LmVhY2goIGEsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYWRk
KCB0aGlzLm5hbWUsIHRoaXMudmFsdWUgKTsKKyAgICAgICAgfSApOworCisgICAgfSBlbHNlIHsK
KworICAgICAgICAvLyBJZiB0cmFkaXRpb25hbCwgZW5jb2RlIHRoZSAib2xkIiB3YXkgKHRoZSB3
YXkgMS4zLjIgb3Igb2xkZXIKKyAgICAgICAgLy8gZGlkIGl0KSwgb3RoZXJ3aXNlIGVuY29kZSBw
YXJhbXMgcmVjdXJzaXZlbHkuCisgICAgICAgIGZvciAoIHByZWZpeCBpbiBhICkgeworICAgICAg
ICAgICAgYnVpbGRQYXJhbXMoIHByZWZpeCwgYVsgcHJlZml4IF0sIHRyYWRpdGlvbmFsLCBhZGQg
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFJldHVybiB0aGUgcmVzdWx0aW5nIHNlcmlh
bGl6YXRpb24KKyAgICByZXR1cm4gcy5qb2luKCAiJiIgKTsKK307CisKK2pRdWVyeS5mbi5leHRl
bmQoIHsKKyAgICBzZXJpYWxpemU6IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4galF1ZXJ5
LnBhcmFtKCB0aGlzLnNlcmlhbGl6ZUFycmF5KCkgKTsKKyAgICB9LAorICAgIHNlcmlhbGl6ZUFy
cmF5OiBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubWFwKCBmdW5jdGlvbigpIHsK
KworICAgICAgICAgICAgLy8gQ2FuIGFkZCBwcm9wSG9vayBmb3IgImVsZW1lbnRzIiB0byBmaWx0
ZXIgb3IgYWRkIGZvcm0gZWxlbWVudHMKKyAgICAgICAgICAgIHZhciBlbGVtZW50cyA9IGpRdWVy
eS5wcm9wKCB0aGlzLCAiZWxlbWVudHMiICk7CisgICAgICAgICAgICByZXR1cm4gZWxlbWVudHMg
PyBqUXVlcnkubWFrZUFycmF5KCBlbGVtZW50cyApIDogdGhpczsKKyAgICAgICAgfSApCisgICAg
ICAgIC5maWx0ZXIoIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdmFyIHR5cGUgPSB0aGlzLnR5
cGU7CisKKyAgICAgICAgICAgIC8vIFVzZSAuaXMoICI6ZGlzYWJsZWQiICkgc28gdGhhdCBmaWVs
ZHNldFtkaXNhYmxlZF0gd29ya3MKKyAgICAgICAgICAgIHJldHVybiB0aGlzLm5hbWUgJiYgIWpR
dWVyeSggdGhpcyApLmlzKCAiOmRpc2FibGVkIiApICYmCisgICAgICAgICAgICAgICAgcnN1Ym1p
dHRhYmxlLnRlc3QoIHRoaXMubm9kZU5hbWUgKSAmJiAhcnN1Ym1pdHRlclR5cGVzLnRlc3QoIHR5
cGUgKSAmJgorICAgICAgICAgICAgICAgICggdGhpcy5jaGVja2VkIHx8ICFyY2hlY2thYmxlVHlw
ZS50ZXN0KCB0eXBlICkgKTsKKyAgICAgICAgfSApCisgICAgICAgIC5tYXAoIGZ1bmN0aW9uKCBp
LCBlbGVtICkgeworICAgICAgICAgICAgdmFyIHZhbCA9IGpRdWVyeSggdGhpcyApLnZhbCgpOwor
CisgICAgICAgICAgICBpZiAoIHZhbCA9PSBudWxsICkgeworICAgICAgICAgICAgICAgIHJldHVy
biBudWxsOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIGpRdWVyeS5pc0FycmF5
KCB2YWwgKSApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4galF1ZXJ5Lm1hcCggdmFsLCBmdW5j
dGlvbiggdmFsICkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBuYW1lOiBlbGVtLm5h
bWUsIHZhbHVlOiB2YWwucmVwbGFjZSggckNSTEYsICJcclxuIiApIH07CisgICAgICAgICAgICAg
ICAgfSApOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4geyBuYW1lOiBlbGVt
Lm5hbWUsIHZhbHVlOiB2YWwucmVwbGFjZSggckNSTEYsICJcclxuIiApIH07CisgICAgICAgIH0g
KS5nZXQoKTsKKyAgICB9Cit9ICk7CisKKworalF1ZXJ5LmZuLmV4dGVuZCggeworICAgIHdyYXBB
bGw6IGZ1bmN0aW9uKCBodG1sICkgeworICAgICAgICB2YXIgd3JhcDsKKworICAgICAgICBpZiAo
IHRoaXNbIDAgXSApIHsKKyAgICAgICAgICAgIGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIGh0bWwg
KSApIHsKKyAgICAgICAgICAgICAgICBodG1sID0gaHRtbC5jYWxsKCB0aGlzWyAwIF0gKTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGVsZW1lbnRzIHRvIHdyYXAgdGhlIHRh
cmdldCBhcm91bmQKKyAgICAgICAgICAgIHdyYXAgPSBqUXVlcnkoIGh0bWwsIHRoaXNbIDAgXS5v
d25lckRvY3VtZW50ICkuZXEoIDAgKS5jbG9uZSggdHJ1ZSApOworCisgICAgICAgICAgICBpZiAo
IHRoaXNbIDAgXS5wYXJlbnROb2RlICkgeworICAgICAgICAgICAgICAgIHdyYXAuaW5zZXJ0QmVm
b3JlKCB0aGlzWyAwIF0gKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgd3JhcC5tYXAo
IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHZhciBlbGVtID0gdGhpczsKKworICAgICAg
ICAgICAgICAgIHdoaWxlICggZWxlbS5maXJzdEVsZW1lbnRDaGlsZCApIHsKKyAgICAgICAgICAg
ICAgICAgICAgZWxlbSA9IGVsZW0uZmlyc3RFbGVtZW50Q2hpbGQ7CisgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW07CisgICAgICAgICAgICB9ICkuYXBwZW5k
KCB0aGlzICk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9LAorCisg
ICAgd3JhcElubmVyOiBmdW5jdGlvbiggaHRtbCApIHsKKyAgICAgICAgaWYgKCBqUXVlcnkuaXNG
dW5jdGlvbiggaHRtbCApICkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rp
b24oIGkgKSB7CisgICAgICAgICAgICAgICAgalF1ZXJ5KCB0aGlzICkud3JhcElubmVyKCBodG1s
LmNhbGwoIHRoaXMsIGkgKSApOworICAgICAgICAgICAgfSApOworICAgICAgICB9CisKKyAgICAg
ICAgcmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB2YXIgc2VsZiA9
IGpRdWVyeSggdGhpcyApLAorICAgICAgICAgICAgICAgIGNvbnRlbnRzID0gc2VsZi5jb250ZW50
cygpOworCisgICAgICAgICAgICBpZiAoIGNvbnRlbnRzLmxlbmd0aCApIHsKKyAgICAgICAgICAg
ICAgICBjb250ZW50cy53cmFwQWxsKCBodG1sICk7CisKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgc2VsZi5hcHBlbmQoIGh0bWwgKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfSApOworICAgIH0sCisKKyAgICB3cmFwOiBmdW5jdGlvbiggaHRtbCApIHsKKyAgICAgICAg
dmFyIGlzRnVuY3Rpb24gPSBqUXVlcnkuaXNGdW5jdGlvbiggaHRtbCApOworCisgICAgICAgIHJl
dHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCBpICkgeworICAgICAgICAgICAgalF1ZXJ5KCB0aGlz
ICkud3JhcEFsbCggaXNGdW5jdGlvbiA/IGh0bWwuY2FsbCggdGhpcywgaSApIDogaHRtbCApOwor
ICAgICAgICB9ICk7CisgICAgfSwKKworICAgIHVud3JhcDogZnVuY3Rpb24oIHNlbGVjdG9yICkg
eworICAgICAgICB0aGlzLnBhcmVudCggc2VsZWN0b3IgKS5ub3QoICJib2R5IiApLmVhY2goIGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgalF1ZXJ5KCB0aGlzICkucmVwbGFjZVdpdGgoIHRoaXMu
Y2hpbGROb2RlcyApOworICAgICAgICB9ICk7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0K
K30gKTsKKworCitqUXVlcnkuZXhwci5wc2V1ZG9zLmhpZGRlbiA9IGZ1bmN0aW9uKCBlbGVtICkg
eworICAgIHJldHVybiAhalF1ZXJ5LmV4cHIucHNldWRvcy52aXNpYmxlKCBlbGVtICk7Cit9Owor
alF1ZXJ5LmV4cHIucHNldWRvcy52aXNpYmxlID0gZnVuY3Rpb24oIGVsZW0gKSB7CisgICAgcmV0
dXJuICEhKCBlbGVtLm9mZnNldFdpZHRoIHx8IGVsZW0ub2Zmc2V0SGVpZ2h0IHx8IGVsZW0uZ2V0
Q2xpZW50UmVjdHMoKS5sZW5ndGggKTsKK307CisKKworCisKKy8vIFN1cHBvcnQ6IFNhZmFyaSA4
IG9ubHkKKy8vIEluIFNhZmFyaSA4IGRvY3VtZW50cyBjcmVhdGVkIHZpYSBkb2N1bWVudC5pbXBs
ZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQKKy8vIGNvbGxhcHNlIHNpYmxpbmcgZm9ybXM6
IHRoZSBzZWNvbmQgb25lIGJlY29tZXMgYSBjaGlsZCBvZiB0aGUgZmlyc3Qgb25lLgorLy8gQmVj
YXVzZSBvZiB0aGF0LCB0aGlzIHNlY3VyaXR5IG1lYXN1cmUgaGFzIHRvIGJlIGRpc2FibGVkIGlu
IFNhZmFyaSA4LgorLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEz
NzMzNworc3VwcG9ydC5jcmVhdGVIVE1MRG9jdW1lbnQgPSAoIGZ1bmN0aW9uKCkgeworICAgIHZh
ciBib2R5ID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCAiIiAp
LmJvZHk7CisgICAgYm9keS5pbm5lckhUTUwgPSAiPGZvcm0+PC9mb3JtPjxmb3JtPjwvZm9ybT4i
OworICAgIHJldHVybiBib2R5LmNoaWxkTm9kZXMubGVuZ3RoID09PSAyOworfSApKCk7CisKKwor
Ly8gQXJndW1lbnQgImRhdGEiIHNob3VsZCBiZSBzdHJpbmcgb2YgaHRtbAorLy8gY29udGV4dCAo
b3B0aW9uYWwpOiBJZiBzcGVjaWZpZWQsIHRoZSBmcmFnbWVudCB3aWxsIGJlIGNyZWF0ZWQgaW4g
dGhpcyBjb250ZXh0LAorLy8gZGVmYXVsdHMgdG8gZG9jdW1lbnQKKy8vIGtlZXBTY3JpcHRzIChv
cHRpb25hbCk6IElmIHRydWUsIHdpbGwgaW5jbHVkZSBzY3JpcHRzIHBhc3NlZCBpbiB0aGUgaHRt
bCBzdHJpbmcKK2pRdWVyeS5wYXJzZUhUTUwgPSBmdW5jdGlvbiggZGF0YSwgY29udGV4dCwga2Vl
cFNjcmlwdHMgKSB7CisgICAgaWYgKCB0eXBlb2YgZGF0YSAhPT0gInN0cmluZyIgKSB7CisgICAg
ICAgIHJldHVybiBbXTsKKyAgICB9CisgICAgaWYgKCB0eXBlb2YgY29udGV4dCA9PT0gImJvb2xl
YW4iICkgeworICAgICAgICBrZWVwU2NyaXB0cyA9IGNvbnRleHQ7CisgICAgICAgIGNvbnRleHQg
PSBmYWxzZTsKKyAgICB9CisKKyAgICB2YXIgYmFzZSwgcGFyc2VkLCBzY3JpcHRzOworCisgICAg
aWYgKCAhY29udGV4dCApIHsKKworICAgICAgICAvLyBTdG9wIHNjcmlwdHMgb3IgaW5saW5lIGV2
ZW50IGhhbmRsZXJzIGZyb20gYmVpbmcgZXhlY3V0ZWQgaW1tZWRpYXRlbHkKKyAgICAgICAgLy8g
YnkgdXNpbmcgZG9jdW1lbnQuaW1wbGVtZW50YXRpb24KKyAgICAgICAgaWYgKCBzdXBwb3J0LmNy
ZWF0ZUhUTUxEb2N1bWVudCApIHsKKyAgICAgICAgICAgIGNvbnRleHQgPSBkb2N1bWVudC5pbXBs
ZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoICIiICk7CisKKyAgICAgICAgICAgIC8vIFNl
dCB0aGUgYmFzZSBocmVmIGZvciB0aGUgY3JlYXRlZCBkb2N1bWVudAorICAgICAgICAgICAgLy8g
c28gYW55IHBhcnNlZCBlbGVtZW50cyB3aXRoIFVSTHMKKyAgICAgICAgICAgIC8vIGFyZSBiYXNl
ZCBvbiB0aGUgZG9jdW1lbnQncyBVUkwgKGdoLTI5NjUpCisgICAgICAgICAgICBiYXNlID0gY29u
dGV4dC5jcmVhdGVFbGVtZW50KCAiYmFzZSIgKTsKKyAgICAgICAgICAgIGJhc2UuaHJlZiA9IGRv
Y3VtZW50LmxvY2F0aW9uLmhyZWY7CisgICAgICAgICAgICBjb250ZXh0LmhlYWQuYXBwZW5kQ2hp
bGQoIGJhc2UgKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNvbnRleHQgPSBkb2N1
bWVudDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHBhcnNlZCA9IHJzaW5nbGVUYWcuZXhlYygg
ZGF0YSApOworICAgIHNjcmlwdHMgPSAha2VlcFNjcmlwdHMgJiYgW107CisKKyAgICAvLyBTaW5n
bGUgdGFnCisgICAgaWYgKCBwYXJzZWQgKSB7CisgICAgICAgIHJldHVybiBbIGNvbnRleHQuY3Jl
YXRlRWxlbWVudCggcGFyc2VkWyAxIF0gKSBdOworICAgIH0KKworICAgIHBhcnNlZCA9IGJ1aWxk
RnJhZ21lbnQoIFsgZGF0YSBdLCBjb250ZXh0LCBzY3JpcHRzICk7CisKKyAgICBpZiAoIHNjcmlw
dHMgJiYgc2NyaXB0cy5sZW5ndGggKSB7CisgICAgICAgIGpRdWVyeSggc2NyaXB0cyApLnJlbW92
ZSgpOworICAgIH0KKworICAgIHJldHVybiBqUXVlcnkubWVyZ2UoIFtdLCBwYXJzZWQuY2hpbGRO
b2RlcyApOworfTsKKworCisvKioKKyAqIEdldHMgYSB3aW5kb3cgZnJvbSBhbiBlbGVtZW50Cisg
Ki8KK2Z1bmN0aW9uIGdldFdpbmRvdyggZWxlbSApIHsKKyAgICByZXR1cm4galF1ZXJ5LmlzV2lu
ZG93KCBlbGVtICkgPyBlbGVtIDogZWxlbS5ub2RlVHlwZSA9PT0gOSAmJiBlbGVtLmRlZmF1bHRW
aWV3OworfQorCitqUXVlcnkub2Zmc2V0ID0geworICAgIHNldE9mZnNldDogZnVuY3Rpb24oIGVs
ZW0sIG9wdGlvbnMsIGkgKSB7CisgICAgICAgIHZhciBjdXJQb3NpdGlvbiwgY3VyTGVmdCwgY3Vy
Q1NTVG9wLCBjdXJUb3AsIGN1ck9mZnNldCwgY3VyQ1NTTGVmdCwgY2FsY3VsYXRlUG9zaXRpb24s
CisgICAgICAgICAgICBwb3NpdGlvbiA9IGpRdWVyeS5jc3MoIGVsZW0sICJwb3NpdGlvbiIgKSwK
KyAgICAgICAgICAgIGN1ckVsZW0gPSBqUXVlcnkoIGVsZW0gKSwKKyAgICAgICAgICAgIHByb3Bz
ID0ge307CisKKyAgICAgICAgLy8gU2V0IHBvc2l0aW9uIGZpcnN0LCBpbi1jYXNlIHRvcC9sZWZ0
IGFyZSBzZXQgZXZlbiBvbiBzdGF0aWMgZWxlbQorICAgICAgICBpZiAoIHBvc2l0aW9uID09PSAi
c3RhdGljIiApIHsKKyAgICAgICAgICAgIGVsZW0uc3R5bGUucG9zaXRpb24gPSAicmVsYXRpdmUi
OworICAgICAgICB9CisKKyAgICAgICAgY3VyT2Zmc2V0ID0gY3VyRWxlbS5vZmZzZXQoKTsKKyAg
ICAgICAgY3VyQ1NTVG9wID0galF1ZXJ5LmNzcyggZWxlbSwgInRvcCIgKTsKKyAgICAgICAgY3Vy
Q1NTTGVmdCA9IGpRdWVyeS5jc3MoIGVsZW0sICJsZWZ0IiApOworICAgICAgICBjYWxjdWxhdGVQ
b3NpdGlvbiA9ICggcG9zaXRpb24gPT09ICJhYnNvbHV0ZSIgfHwgcG9zaXRpb24gPT09ICJmaXhl
ZCIgKSAmJgorICAgICAgICAgICAgKCBjdXJDU1NUb3AgKyBjdXJDU1NMZWZ0ICkuaW5kZXhPZigg
ImF1dG8iICkgPiAtMTsKKworICAgICAgICAvLyBOZWVkIHRvIGJlIGFibGUgdG8gY2FsY3VsYXRl
IHBvc2l0aW9uIGlmIGVpdGhlcgorICAgICAgICAvLyB0b3Agb3IgbGVmdCBpcyBhdXRvIGFuZCBw
b3NpdGlvbiBpcyBlaXRoZXIgYWJzb2x1dGUgb3IgZml4ZWQKKyAgICAgICAgaWYgKCBjYWxjdWxh
dGVQb3NpdGlvbiApIHsKKyAgICAgICAgICAgIGN1clBvc2l0aW9uID0gY3VyRWxlbS5wb3NpdGlv
bigpOworICAgICAgICAgICAgY3VyVG9wID0gY3VyUG9zaXRpb24udG9wOworICAgICAgICAgICAg
Y3VyTGVmdCA9IGN1clBvc2l0aW9uLmxlZnQ7CisKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIGN1clRvcCA9IHBhcnNlRmxvYXQoIGN1ckNTU1RvcCApIHx8IDA7CisgICAgICAgICAgICBj
dXJMZWZ0ID0gcGFyc2VGbG9hdCggY3VyQ1NTTGVmdCApIHx8IDA7CisgICAgICAgIH0KKworICAg
ICAgICBpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBvcHRpb25zICkgKSB7CisKKyAgICAgICAgICAg
IC8vIFVzZSBqUXVlcnkuZXh0ZW5kIGhlcmUgdG8gYWxsb3cgbW9kaWZpY2F0aW9uIG9mIGNvb3Jk
aW5hdGVzIGFyZ3VtZW50IChnaC0xODQ4KQorICAgICAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnMu
Y2FsbCggZWxlbSwgaSwgalF1ZXJ5LmV4dGVuZCgge30sIGN1ck9mZnNldCApICk7CisgICAgICAg
IH0KKworICAgICAgICBpZiAoIG9wdGlvbnMudG9wICE9IG51bGwgKSB7CisgICAgICAgICAgICBw
cm9wcy50b3AgPSAoIG9wdGlvbnMudG9wIC0gY3VyT2Zmc2V0LnRvcCApICsgY3VyVG9wOworICAg
ICAgICB9CisgICAgICAgIGlmICggb3B0aW9ucy5sZWZ0ICE9IG51bGwgKSB7CisgICAgICAgICAg
ICBwcm9wcy5sZWZ0ID0gKCBvcHRpb25zLmxlZnQgLSBjdXJPZmZzZXQubGVmdCApICsgY3VyTGVm
dDsKKyAgICAgICAgfQorCisgICAgICAgIGlmICggInVzaW5nIiBpbiBvcHRpb25zICkgeworICAg
ICAgICAgICAgb3B0aW9ucy51c2luZy5jYWxsKCBlbGVtLCBwcm9wcyApOworCisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBjdXJFbGVtLmNzcyggcHJvcHMgKTsKKyAgICAgICAgfQorICAg
IH0KK307CisKK2pRdWVyeS5mbi5leHRlbmQoIHsKKyAgICBvZmZzZXQ6IGZ1bmN0aW9uKCBvcHRp
b25zICkgeworCisgICAgICAgIC8vIFByZXNlcnZlIGNoYWluaW5nIGZvciBzZXR0ZXIKKyAgICAg
ICAgaWYgKCBhcmd1bWVudHMubGVuZ3RoICkgeworICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMg
PT09IHVuZGVmaW5lZCA/CisgICAgICAgICAgICAgICAgdGhpcyA6CisgICAgICAgICAgICAgICAg
dGhpcy5lYWNoKCBmdW5jdGlvbiggaSApIHsKKyAgICAgICAgICAgICAgICAgICAgalF1ZXJ5Lm9m
ZnNldC5zZXRPZmZzZXQoIHRoaXMsIG9wdGlvbnMsIGkgKTsKKyAgICAgICAgICAgICAgICB9ICk7
CisgICAgICAgIH0KKworICAgICAgICB2YXIgZG9jRWxlbSwgd2luLCByZWN0LCBkb2MsCisgICAg
ICAgICAgICBlbGVtID0gdGhpc1sgMCBdOworCisgICAgICAgIGlmICggIWVsZW0gKSB7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBTdXBwb3J0OiBJRSA8PTEx
IG9ubHkKKyAgICAgICAgLy8gUnVubmluZyBnZXRCb3VuZGluZ0NsaWVudFJlY3Qgb24gYQorICAg
ICAgICAvLyBkaXNjb25uZWN0ZWQgbm9kZSBpbiBJRSB0aHJvd3MgYW4gZXJyb3IKKyAgICAgICAg
aWYgKCAhZWxlbS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCApIHsKKyAgICAgICAgICAgIHJldHVy
biB7IHRvcDogMCwgbGVmdDogMCB9OworICAgICAgICB9CisKKyAgICAgICAgcmVjdCA9IGVsZW0u
Z2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CisKKyAgICAgICAgLy8gTWFrZSBzdXJlIGVsZW1lbnQg
aXMgbm90IGhpZGRlbiAoZGlzcGxheTogbm9uZSkKKyAgICAgICAgaWYgKCByZWN0LndpZHRoIHx8
IHJlY3QuaGVpZ2h0ICkgeworICAgICAgICAgICAgZG9jID0gZWxlbS5vd25lckRvY3VtZW50Owor
ICAgICAgICAgICAgd2luID0gZ2V0V2luZG93KCBkb2MgKTsKKyAgICAgICAgICAgIGRvY0VsZW0g
PSBkb2MuZG9jdW1lbnRFbGVtZW50OworCisgICAgICAgICAgICByZXR1cm4geworICAgICAgICAg
ICAgICAgIHRvcDogcmVjdC50b3AgKyB3aW4ucGFnZVlPZmZzZXQgLSBkb2NFbGVtLmNsaWVudFRv
cCwKKyAgICAgICAgICAgICAgICBsZWZ0OiByZWN0LmxlZnQgKyB3aW4ucGFnZVhPZmZzZXQgLSBk
b2NFbGVtLmNsaWVudExlZnQKKyAgICAgICAgICAgIH07CisgICAgICAgIH0KKworICAgICAgICAv
LyBSZXR1cm4gemVyb3MgZm9yIGRpc2Nvbm5lY3RlZCBhbmQgaGlkZGVuIGVsZW1lbnRzIChnaC0y
MzEwKQorICAgICAgICByZXR1cm4gcmVjdDsKKyAgICB9LAorCisgICAgcG9zaXRpb246IGZ1bmN0
aW9uKCkgeworICAgICAgICBpZiAoICF0aGlzWyAwIF0gKSB7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKworICAgICAgICB2YXIgb2Zmc2V0UGFyZW50LCBvZmZzZXQsCisgICAgICAg
ICAgICBlbGVtID0gdGhpc1sgMCBdLAorICAgICAgICAgICAgcGFyZW50T2Zmc2V0ID0geyB0b3A6
IDAsIGxlZnQ6IDAgfTsKKworICAgICAgICAvLyBGaXhlZCBlbGVtZW50cyBhcmUgb2Zmc2V0IGZy
b20gd2luZG93IChwYXJlbnRPZmZzZXQgPSB7dG9wOjAsIGxlZnQ6IDB9LAorICAgICAgICAvLyBi
ZWNhdXNlIGl0IGlzIGl0cyBvbmx5IG9mZnNldCBwYXJlbnQKKyAgICAgICAgaWYgKCBqUXVlcnku
Y3NzKCBlbGVtLCAicG9zaXRpb24iICkgPT09ICJmaXhlZCIgKSB7CisKKyAgICAgICAgICAgIC8v
IEFzc3VtZSBnZXRCb3VuZGluZ0NsaWVudFJlY3QgaXMgdGhlcmUgd2hlbiBjb21wdXRlZCBwb3Np
dGlvbiBpcyBmaXhlZAorICAgICAgICAgICAgb2Zmc2V0ID0gZWxlbS5nZXRCb3VuZGluZ0NsaWVu
dFJlY3QoKTsKKworICAgICAgICB9IGVsc2UgeworCisgICAgICAgICAgICAvLyBHZXQgKnJlYWwq
IG9mZnNldFBhcmVudAorICAgICAgICAgICAgb2Zmc2V0UGFyZW50ID0gdGhpcy5vZmZzZXRQYXJl
bnQoKTsKKworICAgICAgICAgICAgLy8gR2V0IGNvcnJlY3Qgb2Zmc2V0cworICAgICAgICAgICAg
b2Zmc2V0ID0gdGhpcy5vZmZzZXQoKTsKKyAgICAgICAgICAgIGlmICggIWpRdWVyeS5ub2RlTmFt
ZSggb2Zmc2V0UGFyZW50WyAwIF0sICJodG1sIiApICkgeworICAgICAgICAgICAgICAgIHBhcmVu
dE9mZnNldCA9IG9mZnNldFBhcmVudC5vZmZzZXQoKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgLy8gQWRkIG9mZnNldFBhcmVudCBib3JkZXJzCisgICAgICAgICAgICBwYXJlbnRPZmZz
ZXQgPSB7CisgICAgICAgICAgICAgICAgdG9wOiBwYXJlbnRPZmZzZXQudG9wICsgalF1ZXJ5LmNz
cyggb2Zmc2V0UGFyZW50WyAwIF0sICJib3JkZXJUb3BXaWR0aCIsIHRydWUgKSwKKyAgICAgICAg
ICAgICAgICBsZWZ0OiBwYXJlbnRPZmZzZXQubGVmdCArIGpRdWVyeS5jc3MoIG9mZnNldFBhcmVu
dFsgMCBdLCAiYm9yZGVyTGVmdFdpZHRoIiwgdHJ1ZSApCisgICAgICAgICAgICB9OworICAgICAg
ICB9CisKKyAgICAgICAgLy8gU3VidHJhY3QgcGFyZW50IG9mZnNldHMgYW5kIGVsZW1lbnQgbWFy
Z2lucworICAgICAgICByZXR1cm4geworICAgICAgICAgICAgdG9wOiBvZmZzZXQudG9wIC0gcGFy
ZW50T2Zmc2V0LnRvcCAtIGpRdWVyeS5jc3MoIGVsZW0sICJtYXJnaW5Ub3AiLCB0cnVlICksCisg
ICAgICAgICAgICBsZWZ0OiBvZmZzZXQubGVmdCAtIHBhcmVudE9mZnNldC5sZWZ0IC0galF1ZXJ5
LmNzcyggZWxlbSwgIm1hcmdpbkxlZnQiLCB0cnVlICkKKyAgICAgICAgfTsKKyAgICB9LAorCisg
ICAgLy8gVGhpcyBtZXRob2Qgd2lsbCByZXR1cm4gZG9jdW1lbnRFbGVtZW50IGluIHRoZSBmb2xs
b3dpbmcgY2FzZXM6CisgICAgLy8gMSkgRm9yIHRoZSBlbGVtZW50IGluc2lkZSB0aGUgaWZyYW1l
IHdpdGhvdXQgb2Zmc2V0UGFyZW50LCB0aGlzIG1ldGhvZCB3aWxsIHJldHVybgorICAgIC8vICAg
IGRvY3VtZW50RWxlbWVudCBvZiB0aGUgcGFyZW50IHdpbmRvdworICAgIC8vIDIpIEZvciB0aGUg
aGlkZGVuIG9yIGRldGFjaGVkIGVsZW1lbnQKKyAgICAvLyAzKSBGb3IgYm9keSBvciBodG1sIGVs
ZW1lbnQsIGkuZS4gaW4gY2FzZSBvZiB0aGUgaHRtbCBub2RlIC0gaXQgd2lsbCByZXR1cm4gaXRz
ZWxmCisgICAgLy8KKyAgICAvLyBidXQgdGhvc2UgZXhjZXB0aW9ucyB3ZXJlIG5ldmVyIHByZXNl
bnRlZCBhcyBhIHJlYWwgbGlmZSB1c2UtY2FzZXMKKyAgICAvLyBhbmQgbWlnaHQgYmUgY29uc2lk
ZXJlZCBhcyBtb3JlIHByZWZlcmFibGUgcmVzdWx0cy4KKyAgICAvLworICAgIC8vIFRoaXMgbG9n
aWMsIGhvd2V2ZXIsIGlzIG5vdCBndWFyYW50ZWVkIGFuZCBjYW4gY2hhbmdlIGF0IGFueSBwb2lu
dCBpbiB0aGUgZnV0dXJlCisgICAgb2Zmc2V0UGFyZW50OiBmdW5jdGlvbigpIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMubWFwKCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHZhciBvZmZzZXRQYXJl
bnQgPSB0aGlzLm9mZnNldFBhcmVudDsKKworICAgICAgICAgICAgd2hpbGUgKCBvZmZzZXRQYXJl
bnQgJiYgalF1ZXJ5LmNzcyggb2Zmc2V0UGFyZW50LCAicG9zaXRpb24iICkgPT09ICJzdGF0aWMi
ICkgeworICAgICAgICAgICAgICAgIG9mZnNldFBhcmVudCA9IG9mZnNldFBhcmVudC5vZmZzZXRQ
YXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBvZmZzZXRQYXJlbnQg
fHwgZG9jdW1lbnRFbGVtZW50OworICAgICAgICB9ICk7CisgICAgfQorfSApOworCisvLyBDcmVh
dGUgc2Nyb2xsTGVmdCBhbmQgc2Nyb2xsVG9wIG1ldGhvZHMKK2pRdWVyeS5lYWNoKCB7IHNjcm9s
bExlZnQ6ICJwYWdlWE9mZnNldCIsIHNjcm9sbFRvcDogInBhZ2VZT2Zmc2V0IiB9LCBmdW5jdGlv
biggbWV0aG9kLCBwcm9wICkgeworICAgIHZhciB0b3AgPSAicGFnZVlPZmZzZXQiID09PSBwcm9w
OworCisgICAgalF1ZXJ5LmZuWyBtZXRob2QgXSA9IGZ1bmN0aW9uKCB2YWwgKSB7CisgICAgICAg
IHJldHVybiBhY2Nlc3MoIHRoaXMsIGZ1bmN0aW9uKCBlbGVtLCBtZXRob2QsIHZhbCApIHsKKyAg
ICAgICAgICAgIHZhciB3aW4gPSBnZXRXaW5kb3coIGVsZW0gKTsKKworICAgICAgICAgICAgaWYg
KCB2YWwgPT09IHVuZGVmaW5lZCApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gd2luID8gd2lu
WyBwcm9wIF0gOiBlbGVtWyBtZXRob2QgXTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
aWYgKCB3aW4gKSB7CisgICAgICAgICAgICAgICAgd2luLnNjcm9sbFRvKAorICAgICAgICAgICAg
ICAgICAgICAhdG9wID8gdmFsIDogd2luLnBhZ2VYT2Zmc2V0LAorICAgICAgICAgICAgICAgICAg
ICB0b3AgPyB2YWwgOiB3aW4ucGFnZVlPZmZzZXQKKyAgICAgICAgICAgICAgICApOworCisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGVsZW1bIG1ldGhvZCBdID0gdmFsOwor
ICAgICAgICAgICAgfQorICAgICAgICB9LCBtZXRob2QsIHZhbCwgYXJndW1lbnRzLmxlbmd0aCAp
OworICAgIH07Cit9ICk7CisKKy8vIFN1cHBvcnQ6IFNhZmFyaSA8PTcgLSA5LjEsIENocm9tZSA8
PTM3IC0gNDkKKy8vIEFkZCB0aGUgdG9wL2xlZnQgY3NzSG9va3MgdXNpbmcgalF1ZXJ5LmZuLnBv
c2l0aW9uCisvLyBXZWJraXQgYnVnOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjkwODQKKy8vIEJsaW5rIGJ1ZzogaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2No
cm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9NTg5MzQ3CisvLyBnZXRDb21wdXRlZFN0eWxlIHJldHVy
bnMgcGVyY2VudCB3aGVuIHNwZWNpZmllZCBmb3IgdG9wL2xlZnQvYm90dG9tL3JpZ2h0OworLy8g
cmF0aGVyIHRoYW4gbWFrZSB0aGUgY3NzIG1vZHVsZSBkZXBlbmQgb24gdGhlIG9mZnNldCBtb2R1
bGUsIGp1c3QgY2hlY2sgZm9yIGl0IGhlcmUKK2pRdWVyeS5lYWNoKCBbICJ0b3AiLCAibGVmdCIg
XSwgZnVuY3Rpb24oIGksIHByb3AgKSB7CisgICAgalF1ZXJ5LmNzc0hvb2tzWyBwcm9wIF0gPSBh
ZGRHZXRIb29rSWYoIHN1cHBvcnQucGl4ZWxQb3NpdGlvbiwKKyAgICAgICAgZnVuY3Rpb24oIGVs
ZW0sIGNvbXB1dGVkICkgeworICAgICAgICAgICAgaWYgKCBjb21wdXRlZCApIHsKKyAgICAgICAg
ICAgICAgICBjb21wdXRlZCA9IGN1ckNTUyggZWxlbSwgcHJvcCApOworCisgICAgICAgICAgICAg
ICAgLy8gSWYgY3VyQ1NTIHJldHVybnMgcGVyY2VudGFnZSwgZmFsbGJhY2sgdG8gb2Zmc2V0Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHJudW1ub25weC50ZXN0KCBjb21wdXRlZCApID8KKyAgICAg
ICAgICAgICAgICAgICAgalF1ZXJ5KCBlbGVtICkucG9zaXRpb24oKVsgcHJvcCBdICsgInB4IiA6
CisgICAgICAgICAgICAgICAgICAgIGNvbXB1dGVkOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgKTsKK30gKTsKKworCisvLyBDcmVhdGUgaW5uZXJIZWlnaHQsIGlubmVyV2lkdGgsIGhl
aWdodCwgd2lkdGgsIG91dGVySGVpZ2h0IGFuZCBvdXRlcldpZHRoIG1ldGhvZHMKK2pRdWVyeS5l
YWNoKCB7IEhlaWdodDogImhlaWdodCIsIFdpZHRoOiAid2lkdGgiIH0sIGZ1bmN0aW9uKCBuYW1l
LCB0eXBlICkgeworICAgIGpRdWVyeS5lYWNoKCB7IHBhZGRpbmc6ICJpbm5lciIgKyBuYW1lLCBj
b250ZW50OiB0eXBlLCAiIjogIm91dGVyIiArIG5hbWUgfSwKKyAgICAgICAgZnVuY3Rpb24oIGRl
ZmF1bHRFeHRyYSwgZnVuY05hbWUgKSB7CisKKyAgICAgICAgLy8gTWFyZ2luIGlzIG9ubHkgZm9y
IG91dGVySGVpZ2h0LCBvdXRlcldpZHRoCisgICAgICAgIGpRdWVyeS5mblsgZnVuY05hbWUgXSA9
IGZ1bmN0aW9uKCBtYXJnaW4sIHZhbHVlICkgeworICAgICAgICAgICAgdmFyIGNoYWluYWJsZSA9
IGFyZ3VtZW50cy5sZW5ndGggJiYgKCBkZWZhdWx0RXh0cmEgfHwgdHlwZW9mIG1hcmdpbiAhPT0g
ImJvb2xlYW4iICksCisgICAgICAgICAgICAgICAgZXh0cmEgPSBkZWZhdWx0RXh0cmEgfHwgKCBt
YXJnaW4gPT09IHRydWUgfHwgdmFsdWUgPT09IHRydWUgPyAibWFyZ2luIiA6ICJib3JkZXIiICk7
CisKKyAgICAgICAgICAgIHJldHVybiBhY2Nlc3MoIHRoaXMsIGZ1bmN0aW9uKCBlbGVtLCB0eXBl
LCB2YWx1ZSApIHsKKyAgICAgICAgICAgICAgICB2YXIgZG9jOworCisgICAgICAgICAgICAgICAg
aWYgKCBqUXVlcnkuaXNXaW5kb3coIGVsZW0gKSApIHsKKworICAgICAgICAgICAgICAgICAgICAv
LyAkKCB3aW5kb3cgKS5vdXRlcldpZHRoL0hlaWdodCByZXR1cm4gdy9oIGluY2x1ZGluZyBzY3Jv
bGxiYXJzIChnaC0xNzI5KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY05hbWUuaW5k
ZXhPZiggIm91dGVyIiApID09PSAwID8KKyAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1bICJp
bm5lciIgKyBuYW1lIF0gOgorICAgICAgICAgICAgICAgICAgICAgICAgZWxlbS5kb2N1bWVudC5k
b2N1bWVudEVsZW1lbnRbICJjbGllbnQiICsgbmFtZSBdOworICAgICAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgICAgIC8vIEdldCBkb2N1bWVudCB3aWR0aCBvciBoZWlnaHQKKyAgICAgICAg
ICAgICAgICBpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDkgKSB7CisgICAgICAgICAgICAgICAgICAg
IGRvYyA9IGVsZW0uZG9jdW1lbnRFbGVtZW50OworCisgICAgICAgICAgICAgICAgICAgIC8vIEVp
dGhlciBzY3JvbGxbV2lkdGgvSGVpZ2h0XSBvciBvZmZzZXRbV2lkdGgvSGVpZ2h0XSBvciBjbGll
bnRbV2lkdGgvSGVpZ2h0XSwKKyAgICAgICAgICAgICAgICAgICAgLy8gd2hpY2hldmVyIGlzIGdy
ZWF0ZXN0CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLm1heCgKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGVsZW0uYm9keVsgInNjcm9sbCIgKyBuYW1lIF0sIGRvY1sgInNjcm9sbCIg
KyBuYW1lIF0sCisgICAgICAgICAgICAgICAgICAgICAgICBlbGVtLmJvZHlbICJvZmZzZXQiICsg
bmFtZSBdLCBkb2NbICJvZmZzZXQiICsgbmFtZSBdLAorICAgICAgICAgICAgICAgICAgICAgICAg
ZG9jWyAiY2xpZW50IiArIG5hbWUgXQorICAgICAgICAgICAgICAgICAgICApOworICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkID8K
KworICAgICAgICAgICAgICAgICAgICAvLyBHZXQgd2lkdGggb3IgaGVpZ2h0IG9uIHRoZSBlbGVt
ZW50LCByZXF1ZXN0aW5nIGJ1dCBub3QgZm9yY2luZyBwYXJzZUZsb2F0CisgICAgICAgICAgICAg
ICAgICAgIGpRdWVyeS5jc3MoIGVsZW0sIHR5cGUsIGV4dHJhICkgOgorCisgICAgICAgICAgICAg
ICAgICAgIC8vIFNldCB3aWR0aCBvciBoZWlnaHQgb24gdGhlIGVsZW1lbnQKKyAgICAgICAgICAg
ICAgICAgICAgalF1ZXJ5LnN0eWxlKCBlbGVtLCB0eXBlLCB2YWx1ZSwgZXh0cmEgKTsKKyAgICAg
ICAgICAgIH0sIHR5cGUsIGNoYWluYWJsZSA/IG1hcmdpbiA6IHVuZGVmaW5lZCwgY2hhaW5hYmxl
ICk7CisgICAgICAgIH07CisgICAgfSApOworfSApOworCisKKy8vIFJlZ2lzdGVyIGFzIGEgbmFt
ZWQgQU1EIG1vZHVsZSwgc2luY2UgalF1ZXJ5IGNhbiBiZSBjb25jYXRlbmF0ZWQgd2l0aCBvdGhl
cgorLy8gZmlsZXMgdGhhdCBtYXkgdXNlIGRlZmluZSwgYnV0IG5vdCB2aWEgYSBwcm9wZXIgY29u
Y2F0ZW5hdGlvbiBzY3JpcHQgdGhhdAorLy8gdW5kZXJzdGFuZHMgYW5vbnltb3VzIEFNRCBtb2R1
bGVzLiBBIG5hbWVkIEFNRCBpcyBzYWZlc3QgYW5kIG1vc3Qgcm9idXN0CisvLyB3YXkgdG8gcmVn
aXN0ZXIuIExvd2VyY2FzZSBqcXVlcnkgaXMgdXNlZCBiZWNhdXNlIEFNRCBtb2R1bGUgbmFtZXMg
YXJlCisvLyBkZXJpdmVkIGZyb20gZmlsZSBuYW1lcywgYW5kIGpRdWVyeSBpcyBub3JtYWxseSBk
ZWxpdmVyZWQgaW4gYSBsb3dlcmNhc2UKKy8vIGZpbGUgbmFtZS4gRG8gdGhpcyBhZnRlciBjcmVh
dGluZyB0aGUgZ2xvYmFsIHNvIHRoYXQgaWYgYW4gQU1EIG1vZHVsZSB3YW50cworLy8gdG8gY2Fs
bCBub0NvbmZsaWN0IHRvIGhpZGUgdGhpcyB2ZXJzaW9uIG9mIGpRdWVyeSwgaXQgd2lsbCB3b3Jr
LgorCisvLyBOb3RlIHRoYXQgZm9yIG1heGltdW0gcG9ydGFiaWxpdHksIGxpYnJhcmllcyB0aGF0
IGFyZSBub3QgalF1ZXJ5IHNob3VsZAorLy8gZGVjbGFyZSB0aGVtc2VsdmVzIGFzIGFub255bW91
cyBtb2R1bGVzLCBhbmQgYXZvaWQgc2V0dGluZyBhIGdsb2JhbCBpZiBhbgorLy8gQU1EIGxvYWRl
ciBpcyBwcmVzZW50LiBqUXVlcnkgaXMgYSBzcGVjaWFsIGNhc2UuIEZvciBtb3JlIGluZm9ybWF0
aW9uLCBzZWUKKy8vIGh0dHBzOi8vZ2l0aHViLmNvbS9qcmJ1cmtlL3JlcXVpcmVqcy93aWtpL1Vw
ZGF0aW5nLWV4aXN0aW5nLWxpYnJhcmllcyN3aWtpLWFub24KKworaWYgKCB0eXBlb2YgZGVmaW5l
ID09PSAiZnVuY3Rpb24iICYmIGRlZmluZS5hbWQgKSB7CisgICAgZGVmaW5lKCAianF1ZXJ5Iiwg
W10sIGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4galF1ZXJ5OworICAgIH0gKTsKK30KKwor
CisKKwordmFyCisKKyAgICAvLyBNYXAgb3ZlciBqUXVlcnkgaW4gY2FzZSBvZiBvdmVyd3JpdGUK
KyAgICBfalF1ZXJ5ID0gd2luZG93LmpRdWVyeSwKKworICAgIC8vIE1hcCBvdmVyIHRoZSAkIGlu
IGNhc2Ugb2Ygb3ZlcndyaXRlCisgICAgXyQgPSB3aW5kb3cuJDsKKworalF1ZXJ5Lm5vQ29uZmxp
Y3QgPSBmdW5jdGlvbiggZGVlcCApIHsKKyAgICBpZiAoIHdpbmRvdy4kID09PSBqUXVlcnkgKSB7
CisgICAgICAgIHdpbmRvdy4kID0gXyQ7CisgICAgfQorCisgICAgaWYgKCBkZWVwICYmIHdpbmRv
dy5qUXVlcnkgPT09IGpRdWVyeSApIHsKKyAgICAgICAgd2luZG93LmpRdWVyeSA9IF9qUXVlcnk7
CisgICAgfQorCisgICAgcmV0dXJuIGpRdWVyeTsKK307CisKKy8vIEV4cG9zZSBqUXVlcnkgYW5k
ICQgaWRlbnRpZmllcnMsIGV2ZW4gaW4gQU1ECisvLyAoIzcxMDIjY29tbWVudDoxMCwgaHR0cHM6
Ly9naXRodWIuY29tL2pxdWVyeS9qcXVlcnkvcHVsbC81NTcpCisvLyBhbmQgQ29tbW9uSlMgZm9y
IGJyb3dzZXIgZW11bGF0b3JzICgjMTM1NjYpCitpZiAoICFub0dsb2JhbCApIHsKKyAgICB3aW5k
b3cualF1ZXJ5ID0gd2luZG93LiQgPSBqUXVlcnk7Cit9CisKKworCisKKworcmV0dXJuIGpRdWVy
eTsKK30gKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9q
cXVlcnkvZGlzdC9qcXVlcnkuc2xpbS5taW4uanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2Rl
X21vZHVsZXMvanF1ZXJ5L2Rpc3QvanF1ZXJ5LnNsaW0ubWluLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEyNDBj
YTliMmRjNmExMGMxZDlmMjFhN2NkYTQ3N2ZkNzhhNjBmODMKLS0tIC9kZXYvbnVsbAorKysgYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L2Rpc3QvanF1ZXJ5LnNsaW0u
bWluLmpzCkBAIC0wLDAgKzEsNCBAQAorLyohIGpRdWVyeSB2My4xLjEgLWFqYXgsLWFqYXgvanNv
bnAsLWFqYXgvbG9hZCwtYWpheC9wYXJzZVhNTCwtYWpheC9zY3JpcHQsLWFqYXgvdmFyL2xvY2F0
aW9uLC1hamF4L3Zhci9ub25jZSwtYWpheC92YXIvcnF1ZXJ5LC1hamF4L3hociwtbWFuaXB1bGF0
aW9uL19ldmFsVXJsLC1ldmVudC9hamF4LC1lZmZlY3RzLC1lZmZlY3RzL2FuaW1hdGVkU2VsZWN0
b3IsLWVmZmVjdHMvVHdlZW4sLWRlcHJlY2F0ZWQgfCAoYykgalF1ZXJ5IEZvdW5kYXRpb24gfCBq
cXVlcnkub3JnL2xpY2Vuc2UgKi8KKyFmdW5jdGlvbihhLGIpeyJ1c2Ugc3RyaWN0Ijsib2JqZWN0
Ij09dHlwZW9mIG1vZHVsZSYmIm9iamVjdCI9PXR5cGVvZiBtb2R1bGUuZXhwb3J0cz9tb2R1bGUu
ZXhwb3J0cz1hLmRvY3VtZW50P2IoYSwhMCk6ZnVuY3Rpb24oYSl7aWYoIWEuZG9jdW1lbnQpdGhy
b3cgbmV3IEVycm9yKCJqUXVlcnkgcmVxdWlyZXMgYSB3aW5kb3cgd2l0aCBhIGRvY3VtZW50Iik7
cmV0dXJuIGIoYSl9OmIoYSl9KCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp0aGlz
LGZ1bmN0aW9uKGEsYil7InVzZSBzdHJpY3QiO3ZhciBjPVtdLGQ9YS5kb2N1bWVudCxlPU9iamVj
dC5nZXRQcm90b3R5cGVPZixmPWMuc2xpY2UsZz1jLmNvbmNhdCxoPWMucHVzaCxpPWMuaW5kZXhP
ZixqPXt9LGs9ai50b1N0cmluZyxsPWouaGFzT3duUHJvcGVydHksbT1sLnRvU3RyaW5nLG49bS5j
YWxsKE9iamVjdCksbz17fTtmdW5jdGlvbiBwKGEsYil7Yj1ifHxkO3ZhciBjPWIuY3JlYXRlRWxl
bWVudCgic2NyaXB0Iik7Yy50ZXh0PWEsYi5oZWFkLmFwcGVuZENoaWxkKGMpLnBhcmVudE5vZGUu
cmVtb3ZlQ2hpbGQoYyl9dmFyIHE9IjMuMS4xIC1hamF4LC1hamF4L2pzb25wLC1hamF4L2xvYWQs
LWFqYXgvcGFyc2VYTUwsLWFqYXgvc2NyaXB0LC1hamF4L3Zhci9sb2NhdGlvbiwtYWpheC92YXIv
bm9uY2UsLWFqYXgvdmFyL3JxdWVyeSwtYWpheC94aHIsLW1hbmlwdWxhdGlvbi9fZXZhbFVybCwt
ZXZlbnQvYWpheCwtZWZmZWN0cywtZWZmZWN0cy9hbmltYXRlZFNlbGVjdG9yLC1lZmZlY3RzL1R3
ZWVuLC1kZXByZWNhdGVkIixyPWZ1bmN0aW9uKGEsYil7cmV0dXJuIG5ldyByLmZuLmluaXQoYSxi
KX0scz0vXltcc1x1RkVGRlx4QTBdK3xbXHNcdUZFRkZceEEwXSskL2csdD0vXi1tcy0vLHU9Ly0o
W2Etel0pL2csdj1mdW5jdGlvbihhLGIpe3JldHVybiBiLnRvVXBwZXJDYXNlKCl9O3IuZm49ci5w
cm90b3R5cGU9e2pxdWVyeTpxLGNvbnN0cnVjdG9yOnIsbGVuZ3RoOjAsdG9BcnJheTpmdW5jdGlv
bigpe3JldHVybiBmLmNhbGwodGhpcyl9LGdldDpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09YT9m
LmNhbGwodGhpcyk6YTwwP3RoaXNbYSt0aGlzLmxlbmd0aF06dGhpc1thXX0scHVzaFN0YWNrOmZ1
bmN0aW9uKGEpe3ZhciBiPXIubWVyZ2UodGhpcy5jb25zdHJ1Y3RvcigpLGEpO3JldHVybiBiLnBy
ZXZPYmplY3Q9dGhpcyxifSxlYWNoOmZ1bmN0aW9uKGEpe3JldHVybiByLmVhY2godGhpcyxhKX0s
bWFwOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnB1c2hTdGFjayhyLm1hcCh0aGlzLGZ1bmN0aW9u
KGIsYyl7cmV0dXJuIGEuY2FsbChiLGMsYil9KSl9LHNsaWNlOmZ1bmN0aW9uKCl7cmV0dXJuIHRo
aXMucHVzaFN0YWNrKGYuYXBwbHkodGhpcyxhcmd1bWVudHMpKX0sZmlyc3Q6ZnVuY3Rpb24oKXty
ZXR1cm4gdGhpcy5lcSgwKX0sbGFzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVxKC0xKX0sZXE6
ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5sZW5ndGgsYz0rYSsoYTwwP2I6MCk7cmV0dXJuIHRoaXMu
cHVzaFN0YWNrKGM+PTAmJmM8Yj9bdGhpc1tjXV06W10pfSxlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4g
dGhpcy5wcmV2T2JqZWN0fHx0aGlzLmNvbnN0cnVjdG9yKCl9LHB1c2g6aCxzb3J0OmMuc29ydCxz
cGxpY2U6Yy5zcGxpY2V9LHIuZXh0ZW5kPXIuZm4uZXh0ZW5kPWZ1bmN0aW9uKCl7dmFyIGEsYixj
LGQsZSxmLGc9YXJndW1lbnRzWzBdfHx7fSxoPTEsaT1hcmd1bWVudHMubGVuZ3RoLGo9ITE7Zm9y
KCJib29sZWFuIj09dHlwZW9mIGcmJihqPWcsZz1hcmd1bWVudHNbaF18fHt9LGgrKyksIm9iamVj
dCI9PXR5cGVvZiBnfHxyLmlzRnVuY3Rpb24oZyl8fChnPXt9KSxoPT09aSYmKGc9dGhpcyxoLS0p
O2g8aTtoKyspaWYobnVsbCE9KGE9YXJndW1lbnRzW2hdKSlmb3IoYiBpbiBhKWM9Z1tiXSxkPWFb
Yl0sZyE9PWQmJihqJiZkJiYoci5pc1BsYWluT2JqZWN0KGQpfHwoZT1yLmlzQXJyYXkoZCkpKT8o
ZT8oZT0hMSxmPWMmJnIuaXNBcnJheShjKT9jOltdKTpmPWMmJnIuaXNQbGFpbk9iamVjdChjKT9j
Ont9LGdbYl09ci5leHRlbmQoaixmLGQpKTp2b2lkIDAhPT1kJiYoZ1tiXT1kKSk7cmV0dXJuIGd9
LHIuZXh0ZW5kKHtleHBhbmRvOiJqUXVlcnkiKyhxK01hdGgucmFuZG9tKCkpLnJlcGxhY2UoL1xE
L2csIiIpLGlzUmVhZHk6ITAsZXJyb3I6ZnVuY3Rpb24oYSl7dGhyb3cgbmV3IEVycm9yKGEpfSxu
b29wOmZ1bmN0aW9uKCl7fSxpc0Z1bmN0aW9uOmZ1bmN0aW9uKGEpe3JldHVybiJmdW5jdGlvbiI9
PT1yLnR5cGUoYSl9LGlzQXJyYXk6QXJyYXkuaXNBcnJheSxpc1dpbmRvdzpmdW5jdGlvbihhKXty
ZXR1cm4gbnVsbCE9YSYmYT09PWEud2luZG93fSxpc051bWVyaWM6ZnVuY3Rpb24oYSl7dmFyIGI9
ci50eXBlKGEpO3JldHVybigibnVtYmVyIj09PWJ8fCJzdHJpbmciPT09YikmJiFpc05hTihhLXBh
cnNlRmxvYXQoYSkpfSxpc1BsYWluT2JqZWN0OmZ1bmN0aW9uKGEpe3ZhciBiLGM7cmV0dXJuISgh
YXx8IltvYmplY3QgT2JqZWN0XSIhPT1rLmNhbGwoYSkpJiYoIShiPWUoYSkpfHwoYz1sLmNhbGwo
YiwiY29uc3RydWN0b3IiKSYmYi5jb25zdHJ1Y3RvciwiZnVuY3Rpb24iPT10eXBlb2YgYyYmbS5j
YWxsKGMpPT09bikpfSxpc0VtcHR5T2JqZWN0OmZ1bmN0aW9uKGEpe3ZhciBiO2ZvcihiIGluIGEp
cmV0dXJuITE7cmV0dXJuITB9LHR5cGU6ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWE/YSsiIjoi
b2JqZWN0Ij09dHlwZW9mIGF8fCJmdW5jdGlvbiI9PXR5cGVvZiBhP2pbay5jYWxsKGEpXXx8Im9i
amVjdCI6dHlwZW9mIGF9LGdsb2JhbEV2YWw6ZnVuY3Rpb24oYSl7cChhKX0sY2FtZWxDYXNlOmZ1
bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UodCwibXMtIikucmVwbGFjZSh1LHYpfSxub2RlTmFt
ZTpmdW5jdGlvbihhLGIpe3JldHVybiBhLm5vZGVOYW1lJiZhLm5vZGVOYW1lLnRvTG93ZXJDYXNl
KCk9PT1iLnRvTG93ZXJDYXNlKCl9LGVhY2g6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPTA7aWYodyhh
KSl7Zm9yKGM9YS5sZW5ndGg7ZDxjO2QrKylpZihiLmNhbGwoYVtkXSxkLGFbZF0pPT09ITEpYnJl
YWt9ZWxzZSBmb3IoZCBpbiBhKWlmKGIuY2FsbChhW2RdLGQsYVtkXSk9PT0hMSlicmVhaztyZXR1
cm4gYX0sdHJpbTpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09YT8iIjooYSsiIikucmVwbGFjZShz
LCIiKX0sbWFrZUFycmF5OmZ1bmN0aW9uKGEsYil7dmFyIGM9Ynx8W107cmV0dXJuIG51bGwhPWEm
Jih3KE9iamVjdChhKSk/ci5tZXJnZShjLCJzdHJpbmciPT10eXBlb2YgYT9bYV06YSk6aC5jYWxs
KGMsYSkpLGN9LGluQXJyYXk6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBudWxsPT1iPy0xOmkuY2Fs
bChiLGEsYyl9LG1lcmdlOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPStiLmxlbmd0aCxkPTAsZT1h
Lmxlbmd0aDtkPGM7ZCsrKWFbZSsrXT1iW2RdO3JldHVybiBhLmxlbmd0aD1lLGF9LGdyZXA6ZnVu
Y3Rpb24oYSxiLGMpe2Zvcih2YXIgZCxlPVtdLGY9MCxnPWEubGVuZ3RoLGg9IWM7ZjxnO2YrKylk
PSFiKGFbZl0sZiksZCE9PWgmJmUucHVzaChhW2ZdKTtyZXR1cm4gZX0sbWFwOmZ1bmN0aW9uKGEs
YixjKXt2YXIgZCxlLGY9MCxoPVtdO2lmKHcoYSkpZm9yKGQ9YS5sZW5ndGg7ZjxkO2YrKyllPWIo
YVtmXSxmLGMpLG51bGwhPWUmJmgucHVzaChlKTtlbHNlIGZvcihmIGluIGEpZT1iKGFbZl0sZixj
KSxudWxsIT1lJiZoLnB1c2goZSk7cmV0dXJuIGcuYXBwbHkoW10saCl9LGd1aWQ6MSxwcm94eTpm
dW5jdGlvbihhLGIpe3ZhciBjLGQsZTtpZigic3RyaW5nIj09dHlwZW9mIGImJihjPWFbYl0sYj1h
LGE9Yyksci5pc0Z1bmN0aW9uKGEpKXJldHVybiBkPWYuY2FsbChhcmd1bWVudHMsMiksZT1mdW5j
dGlvbigpe3JldHVybiBhLmFwcGx5KGJ8fHRoaXMsZC5jb25jYXQoZi5jYWxsKGFyZ3VtZW50cykp
KX0sZS5ndWlkPWEuZ3VpZD1hLmd1aWR8fHIuZ3VpZCsrLGV9LG5vdzpEYXRlLm5vdyxzdXBwb3J0
Om99KSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoci5mbltTeW1ib2wuaXRlcmF0b3JdPWNb
U3ltYm9sLml0ZXJhdG9yXSksci5lYWNoKCJCb29sZWFuIE51bWJlciBTdHJpbmcgRnVuY3Rpb24g
QXJyYXkgRGF0ZSBSZWdFeHAgT2JqZWN0IEVycm9yIFN5bWJvbCIuc3BsaXQoIiAiKSxmdW5jdGlv
bihhLGIpe2pbIltvYmplY3QgIitiKyJdIl09Yi50b0xvd2VyQ2FzZSgpfSk7ZnVuY3Rpb24gdyhh
KXt2YXIgYj0hIWEmJiJsZW5ndGgiaW4gYSYmYS5sZW5ndGgsYz1yLnR5cGUoYSk7cmV0dXJuImZ1
bmN0aW9uIiE9PWMmJiFyLmlzV2luZG93KGEpJiYoImFycmF5Ij09PWN8fDA9PT1ifHwibnVtYmVy
Ij09dHlwZW9mIGImJmI+MCYmYi0xIGluIGEpfXZhciB4PWZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxl
LGYsZyxoLGksaixrLGwsbSxuLG8scCxxLHIscyx0LHU9InNpenpsZSIrMSpuZXcgRGF0ZSx2PWEu
ZG9jdW1lbnQsdz0wLHg9MCx5PWhhKCksej1oYSgpLEE9aGEoKSxCPWZ1bmN0aW9uKGEsYil7cmV0
dXJuIGE9PT1iJiYobD0hMCksMH0sQz17fS5oYXNPd25Qcm9wZXJ0eSxEPVtdLEU9RC5wb3AsRj1E
LnB1c2gsRz1ELnB1c2gsSD1ELnNsaWNlLEk9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9MCxkPWEu
bGVuZ3RoO2M8ZDtjKyspaWYoYVtjXT09PWIpcmV0dXJuIGM7cmV0dXJuLTF9LEo9ImNoZWNrZWR8
c2VsZWN0ZWR8YXN5bmN8YXV0b2ZvY3VzfGF1dG9wbGF5fGNvbnRyb2xzfGRlZmVyfGRpc2FibGVk
fGhpZGRlbnxpc21hcHxsb29wfG11bHRpcGxlfG9wZW58cmVhZG9ubHl8cmVxdWlyZWR8c2NvcGVk
IixLPSJbXFx4MjBcXHRcXHJcXG5cXGZdIixMPSIoPzpcXFxcLnxbXFx3LV18W15cMC1cXHhhMF0p
KyIsTT0iXFxbIitLKyIqKCIrTCsiKSg/OiIrSysiKihbKl4kfCF+XT89KSIrSysiKig/OicoKD86
XFxcXC58W15cXFxcJ10pKiknfFwiKCg/OlxcXFwufFteXFxcXFwiXSkqKVwifCgiK0wrIikpfCki
K0srIipcXF0iLE49IjooIitMKyIpKD86XFwoKCgnKCg/OlxcXFwufFteXFxcXCddKSopJ3xcIigo
PzpcXFxcLnxbXlxcXFxcIl0pKilcIil8KCg/OlxcXFwufFteXFxcXCgpW1xcXV18IitNKyIpKil8
LiopXFwpfCkiLE89bmV3IFJlZ0V4cChLKyIrIiwiZyIpLFA9bmV3IFJlZ0V4cCgiXiIrSysiK3wo
KD86XnxbXlxcXFxdKSg/OlxcXFwuKSopIitLKyIrJCIsImciKSxRPW5ldyBSZWdFeHAoIl4iK0sr
IiosIitLKyIqIiksUj1uZXcgUmVnRXhwKCJeIitLKyIqKFs+K35dfCIrSysiKSIrSysiKiIpLFM9
bmV3IFJlZ0V4cCgiPSIrSysiKihbXlxcXSdcIl0qPykiK0srIipcXF0iLCJnIiksVD1uZXcgUmVn
RXhwKE4pLFU9bmV3IFJlZ0V4cCgiXiIrTCsiJCIpLFY9e0lEOm5ldyBSZWdFeHAoIl4jKCIrTCsi
KSIpLENMQVNTOm5ldyBSZWdFeHAoIl5cXC4oIitMKyIpIiksVEFHOm5ldyBSZWdFeHAoIl4oIitM
KyJ8WypdKSIpLEFUVFI6bmV3IFJlZ0V4cCgiXiIrTSksUFNFVURPOm5ldyBSZWdFeHAoIl4iK04p
LENISUxEOm5ldyBSZWdFeHAoIl46KG9ubHl8Zmlyc3R8bGFzdHxudGh8bnRoLWxhc3QpLShjaGls
ZHxvZi10eXBlKSg/OlxcKCIrSysiKihldmVufG9kZHwoKFsrLV18KShcXGQqKW58KSIrSysiKig/
OihbKy1dfCkiK0srIiooXFxkKyl8KSkiK0srIipcXCl8KSIsImkiKSxib29sOm5ldyBSZWdFeHAo
Il4oPzoiK0orIikkIiwiaSIpLG5lZWRzQ29udGV4dDpuZXcgUmVnRXhwKCJeIitLKyIqWz4rfl18
OihldmVufG9kZHxlcXxndHxsdHxudGh8Zmlyc3R8bGFzdCkoPzpcXCgiK0srIiooKD86LVxcZCk/
XFxkKikiK0srIipcXCl8KSg/PVteLV18JCkiLCJpIil9LFc9L14oPzppbnB1dHxzZWxlY3R8dGV4
dGFyZWF8YnV0dG9uKSQvaSxYPS9eaFxkJC9pLFk9L15bXntdK1x7XHMqXFtuYXRpdmUgXHcvLFo9
L14oPzojKFtcdy1dKyl8KFx3Kyl8XC4oW1x3LV0rKSkkLywkPS9bK35dLyxfPW5ldyBSZWdFeHAo
IlxcXFwoW1xcZGEtZl17MSw2fSIrSysiP3woIitLKyIpfC4pIiwiaWciKSxhYT1mdW5jdGlvbihh
LGIsYyl7dmFyIGQ9IjB4IitiLTY1NTM2O3JldHVybiBkIT09ZHx8Yz9iOmQ8MD9TdHJpbmcuZnJv
bUNoYXJDb2RlKGQrNjU1MzYpOlN0cmluZy5mcm9tQ2hhckNvZGUoZD4+MTB8NTUyOTYsMTAyMyZk
fDU2MzIwKX0sYmE9LyhbXDAtXHgxZlx4N2ZdfF4tP1xkKXxeLSR8W15cMC1ceDFmXHg3Zi1cdUZG
RkZcdy1dL2csY2E9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYj8iXDAiPT09YT8iXHVmZmZkIjphLnNs
aWNlKDAsLTEpKyJcXCIrYS5jaGFyQ29kZUF0KGEubGVuZ3RoLTEpLnRvU3RyaW5nKDE2KSsiICI6
IlxcIithfSxkYT1mdW5jdGlvbigpe20oKX0sZWE9dGEoZnVuY3Rpb24oYSl7cmV0dXJuIGEuZGlz
YWJsZWQ9PT0hMCYmKCJmb3JtImluIGF8fCJsYWJlbCJpbiBhKX0se2RpcjoicGFyZW50Tm9kZSIs
bmV4dDoibGVnZW5kIn0pO3RyeXtHLmFwcGx5KEQ9SC5jYWxsKHYuY2hpbGROb2Rlcyksdi5jaGls
ZE5vZGVzKSxEW3YuY2hpbGROb2Rlcy5sZW5ndGhdLm5vZGVUeXBlfWNhdGNoKGZhKXtHPXthcHBs
eTpELmxlbmd0aD9mdW5jdGlvbihhLGIpe0YuYXBwbHkoYSxILmNhbGwoYikpfTpmdW5jdGlvbihh
LGIpe3ZhciBjPWEubGVuZ3RoLGQ9MDt3aGlsZShhW2MrK109YltkKytdKTthLmxlbmd0aD1jLTF9
fX1mdW5jdGlvbiBnYShhLGIsZCxlKXt2YXIgZixoLGosayxsLG8scixzPWImJmIub3duZXJEb2N1
bWVudCx3PWI/Yi5ub2RlVHlwZTo5O2lmKGQ9ZHx8W10sInN0cmluZyIhPXR5cGVvZiBhfHwhYXx8
MSE9PXcmJjkhPT13JiYxMSE9PXcpcmV0dXJuIGQ7aWYoIWUmJigoYj9iLm93bmVyRG9jdW1lbnR8
fGI6dikhPT1uJiZtKGIpLGI9Ynx8bixwKSl7aWYoMTEhPT13JiYobD1aLmV4ZWMoYSkpKWlmKGY9
bFsxXSl7aWYoOT09PXcpe2lmKCEoaj1iLmdldEVsZW1lbnRCeUlkKGYpKSlyZXR1cm4gZDtpZihq
LmlkPT09ZilyZXR1cm4gZC5wdXNoKGopLGR9ZWxzZSBpZihzJiYoaj1zLmdldEVsZW1lbnRCeUlk
KGYpKSYmdChiLGopJiZqLmlkPT09ZilyZXR1cm4gZC5wdXNoKGopLGR9ZWxzZXtpZihsWzJdKXJl
dHVybiBHLmFwcGx5KGQsYi5nZXRFbGVtZW50c0J5VGFnTmFtZShhKSksZDtpZigoZj1sWzNdKSYm
Yy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lJiZiLmdldEVsZW1lbnRzQnlDbGFzc05hbWUpcmV0dXJu
IEcuYXBwbHkoZCxiLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoZikpLGR9aWYoYy5xc2EmJiFBW2Er
IiAiXSYmKCFxfHwhcS50ZXN0KGEpKSl7aWYoMSE9PXcpcz1iLHI9YTtlbHNlIGlmKCJvYmplY3Qi
IT09Yi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKXsoaz1iLmdldEF0dHJpYnV0ZSgiaWQiKSk/az1r
LnJlcGxhY2UoYmEsY2EpOmIuc2V0QXR0cmlidXRlKCJpZCIsaz11KSxvPWcoYSksaD1vLmxlbmd0
aDt3aGlsZShoLS0pb1toXT0iIyIraysiICIrc2Eob1toXSk7cj1vLmpvaW4oIiwiKSxzPSQudGVz
dChhKSYmcWEoYi5wYXJlbnROb2RlKXx8Yn1pZihyKXRyeXtyZXR1cm4gRy5hcHBseShkLHMucXVl
cnlTZWxlY3RvckFsbChyKSksZH1jYXRjaCh4KXt9ZmluYWxseXtrPT09dSYmYi5yZW1vdmVBdHRy
aWJ1dGUoImlkIil9fX1yZXR1cm4gaShhLnJlcGxhY2UoUCwiJDEiKSxiLGQsZSl9ZnVuY3Rpb24g
aGEoKXt2YXIgYT1bXTtmdW5jdGlvbiBiKGMsZSl7cmV0dXJuIGEucHVzaChjKyIgIik+ZC5jYWNo
ZUxlbmd0aCYmZGVsZXRlIGJbYS5zaGlmdCgpXSxiW2MrIiAiXT1lfXJldHVybiBifWZ1bmN0aW9u
IGlhKGEpe3JldHVybiBhW3VdPSEwLGF9ZnVuY3Rpb24gamEoYSl7dmFyIGI9bi5jcmVhdGVFbGVt
ZW50KCJmaWVsZHNldCIpO3RyeXtyZXR1cm4hIWEoYil9Y2F0Y2goYyl7cmV0dXJuITF9ZmluYWxs
eXtiLnBhcmVudE5vZGUmJmIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChiKSxiPW51bGx9fWZ1bmN0
aW9uIGthKGEsYil7dmFyIGM9YS5zcGxpdCgifCIpLGU9Yy5sZW5ndGg7d2hpbGUoZS0tKWQuYXR0
ckhhbmRsZVtjW2VdXT1ifWZ1bmN0aW9uIGxhKGEsYil7dmFyIGM9YiYmYSxkPWMmJjE9PT1hLm5v
ZGVUeXBlJiYxPT09Yi5ub2RlVHlwZSYmYS5zb3VyY2VJbmRleC1iLnNvdXJjZUluZGV4O2lmKGQp
cmV0dXJuIGQ7aWYoYyl3aGlsZShjPWMubmV4dFNpYmxpbmcpaWYoYz09PWIpcmV0dXJuLTE7cmV0
dXJuIGE/MTotMX1mdW5jdGlvbiBtYShhKXtyZXR1cm4gZnVuY3Rpb24oYil7dmFyIGM9Yi5ub2Rl
TmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiJpbnB1dCI9PT1jJiZiLnR5cGU9PT1hfX1mdW5jdGlv
biBuYShhKXtyZXR1cm4gZnVuY3Rpb24oYil7dmFyIGM9Yi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgp
O3JldHVybigiaW5wdXQiPT09Y3x8ImJ1dHRvbiI9PT1jKSYmYi50eXBlPT09YX19ZnVuY3Rpb24g
b2EoYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe3JldHVybiJmb3JtImluIGI/Yi5wYXJlbnROb2RlJiZi
LmRpc2FibGVkPT09ITE/ImxhYmVsImluIGI/ImxhYmVsImluIGIucGFyZW50Tm9kZT9iLnBhcmVu
dE5vZGUuZGlzYWJsZWQ9PT1hOmIuZGlzYWJsZWQ9PT1hOmIuaXNEaXNhYmxlZD09PWF8fGIuaXNE
aXNhYmxlZCE9PSFhJiZlYShiKT09PWE6Yi5kaXNhYmxlZD09PWE6ImxhYmVsImluIGImJmIuZGlz
YWJsZWQ9PT1hfX1mdW5jdGlvbiBwYShhKXtyZXR1cm4gaWEoZnVuY3Rpb24oYil7cmV0dXJuIGI9
K2IsaWEoZnVuY3Rpb24oYyxkKXt2YXIgZSxmPWEoW10sYy5sZW5ndGgsYiksZz1mLmxlbmd0aDt3
aGlsZShnLS0pY1tlPWZbZ11dJiYoY1tlXT0hKGRbZV09Y1tlXSkpfSl9KX1mdW5jdGlvbiBxYShh
KXtyZXR1cm4gYSYmInVuZGVmaW5lZCIhPXR5cGVvZiBhLmdldEVsZW1lbnRzQnlUYWdOYW1lJiZh
fWM9Z2Euc3VwcG9ydD17fSxmPWdhLmlzWE1MPWZ1bmN0aW9uKGEpe3ZhciBiPWEmJihhLm93bmVy
RG9jdW1lbnR8fGEpLmRvY3VtZW50RWxlbWVudDtyZXR1cm4hIWImJiJIVE1MIiE9PWIubm9kZU5h
bWV9LG09Z2Euc2V0RG9jdW1lbnQ9ZnVuY3Rpb24oYSl7dmFyIGIsZSxnPWE/YS5vd25lckRvY3Vt
ZW50fHxhOnY7cmV0dXJuIGchPT1uJiY5PT09Zy5ub2RlVHlwZSYmZy5kb2N1bWVudEVsZW1lbnQ/
KG49ZyxvPW4uZG9jdW1lbnRFbGVtZW50LHA9IWYobiksdiE9PW4mJihlPW4uZGVmYXVsdFZpZXcp
JiZlLnRvcCE9PWUmJihlLmFkZEV2ZW50TGlzdGVuZXI/ZS5hZGRFdmVudExpc3RlbmVyKCJ1bmxv
YWQiLGRhLCExKTplLmF0dGFjaEV2ZW50JiZlLmF0dGFjaEV2ZW50KCJvbnVubG9hZCIsZGEpKSxj
LmF0dHJpYnV0ZXM9amEoZnVuY3Rpb24oYSl7cmV0dXJuIGEuY2xhc3NOYW1lPSJpIiwhYS5nZXRB
dHRyaWJ1dGUoImNsYXNzTmFtZSIpfSksYy5nZXRFbGVtZW50c0J5VGFnTmFtZT1qYShmdW5jdGlv
bihhKXtyZXR1cm4gYS5hcHBlbmRDaGlsZChuLmNyZWF0ZUNvbW1lbnQoIiIpKSwhYS5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgiKiIpLmxlbmd0aH0pLGMuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZT1ZLnRl
c3Qobi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKSxjLmdldEJ5SWQ9amEoZnVuY3Rpb24oYSl7cmV0
dXJuIG8uYXBwZW5kQ2hpbGQoYSkuaWQ9dSwhbi5nZXRFbGVtZW50c0J5TmFtZXx8IW4uZ2V0RWxl
bWVudHNCeU5hbWUodSkubGVuZ3RofSksYy5nZXRCeUlkPyhkLmZpbHRlci5JRD1mdW5jdGlvbihh
KXt2YXIgYj1hLnJlcGxhY2UoXyxhYSk7cmV0dXJuIGZ1bmN0aW9uKGEpe3JldHVybiBhLmdldEF0
dHJpYnV0ZSgiaWQiKT09PWJ9fSxkLmZpbmQuSUQ9ZnVuY3Rpb24oYSxiKXtpZigidW5kZWZpbmVk
IiE9dHlwZW9mIGIuZ2V0RWxlbWVudEJ5SWQmJnApe3ZhciBjPWIuZ2V0RWxlbWVudEJ5SWQoYSk7
cmV0dXJuIGM/W2NdOltdfX0pOihkLmZpbHRlci5JRD1mdW5jdGlvbihhKXt2YXIgYj1hLnJlcGxh
Y2UoXyxhYSk7cmV0dXJuIGZ1bmN0aW9uKGEpe3ZhciBjPSJ1bmRlZmluZWQiIT10eXBlb2YgYS5n
ZXRBdHRyaWJ1dGVOb2RlJiZhLmdldEF0dHJpYnV0ZU5vZGUoImlkIik7cmV0dXJuIGMmJmMudmFs
dWU9PT1ifX0sZC5maW5kLklEPWZ1bmN0aW9uKGEsYil7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBi
LmdldEVsZW1lbnRCeUlkJiZwKXt2YXIgYyxkLGUsZj1iLmdldEVsZW1lbnRCeUlkKGEpO2lmKGYp
e2lmKGM9Zi5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpLGMmJmMudmFsdWU9PT1hKXJldHVybltmXTtl
PWIuZ2V0RWxlbWVudHNCeU5hbWUoYSksZD0wO3doaWxlKGY9ZVtkKytdKWlmKGM9Zi5nZXRBdHRy
aWJ1dGVOb2RlKCJpZCIpLGMmJmMudmFsdWU9PT1hKXJldHVybltmXX1yZXR1cm5bXX19KSxkLmZp
bmQuVEFHPWMuZ2V0RWxlbWVudHNCeVRhZ05hbWU/ZnVuY3Rpb24oYSxiKXtyZXR1cm4idW5kZWZp
bmVkIiE9dHlwZW9mIGIuZ2V0RWxlbWVudHNCeVRhZ05hbWU/Yi5nZXRFbGVtZW50c0J5VGFnTmFt
ZShhKTpjLnFzYT9iLnF1ZXJ5U2VsZWN0b3JBbGwoYSk6dm9pZCAwfTpmdW5jdGlvbihhLGIpe3Zh
ciBjLGQ9W10sZT0wLGY9Yi5nZXRFbGVtZW50c0J5VGFnTmFtZShhKTtpZigiKiI9PT1hKXt3aGls
ZShjPWZbZSsrXSkxPT09Yy5ub2RlVHlwZSYmZC5wdXNoKGMpO3JldHVybiBkfXJldHVybiBmfSxk
LmZpbmQuQ0xBU1M9Yy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lJiZmdW5jdGlvbihhLGIpe2lmKCJ1
bmRlZmluZWQiIT10eXBlb2YgYi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lJiZwKXJldHVybiBiLmdl
dEVsZW1lbnRzQnlDbGFzc05hbWUoYSl9LHI9W10scT1bXSwoYy5xc2E9WS50ZXN0KG4ucXVlcnlT
ZWxlY3RvckFsbCkpJiYoamEoZnVuY3Rpb24oYSl7by5hcHBlbmRDaGlsZChhKS5pbm5lckhUTUw9
IjxhIGlkPSciK3UrIic+PC9hPjxzZWxlY3QgaWQ9JyIrdSsiLVxyXFwnIG1zYWxsb3djYXB0dXJl
PScnPjxvcHRpb24gc2VsZWN0ZWQ9Jyc+PC9vcHRpb24+PC9zZWxlY3Q+IixhLnF1ZXJ5U2VsZWN0
b3JBbGwoIlttc2FsbG93Y2FwdHVyZV49JyddIikubGVuZ3RoJiZxLnB1c2goIlsqXiRdPSIrSysi
Kig/OicnfFwiXCIpIiksYS5xdWVyeVNlbGVjdG9yQWxsKCJbc2VsZWN0ZWRdIikubGVuZ3RofHxx
LnB1c2goIlxcWyIrSysiKig/OnZhbHVlfCIrSisiKSIpLGEucXVlcnlTZWxlY3RvckFsbCgiW2lk
fj0iK3UrIi1dIikubGVuZ3RofHxxLnB1c2goIn49IiksYS5xdWVyeVNlbGVjdG9yQWxsKCI6Y2hl
Y2tlZCIpLmxlbmd0aHx8cS5wdXNoKCI6Y2hlY2tlZCIpLGEucXVlcnlTZWxlY3RvckFsbCgiYSMi
K3UrIisqIikubGVuZ3RofHxxLnB1c2goIi4jLitbK35dIil9KSxqYShmdW5jdGlvbihhKXthLmlu
bmVySFRNTD0iPGEgaHJlZj0nJyBkaXNhYmxlZD0nZGlzYWJsZWQnPjwvYT48c2VsZWN0IGRpc2Fi
bGVkPSdkaXNhYmxlZCc+PG9wdGlvbi8+PC9zZWxlY3Q+Ijt2YXIgYj1uLmNyZWF0ZUVsZW1lbnQo
ImlucHV0Iik7Yi5zZXRBdHRyaWJ1dGUoInR5cGUiLCJoaWRkZW4iKSxhLmFwcGVuZENoaWxkKGIp
LnNldEF0dHJpYnV0ZSgibmFtZSIsIkQiKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoIltuYW1lPWRdIiku
bGVuZ3RoJiZxLnB1c2goIm5hbWUiK0srIipbKl4kfCF+XT89IiksMiE9PWEucXVlcnlTZWxlY3Rv
ckFsbCgiOmVuYWJsZWQiKS5sZW5ndGgmJnEucHVzaCgiOmVuYWJsZWQiLCI6ZGlzYWJsZWQiKSxv
LmFwcGVuZENoaWxkKGEpLmRpc2FibGVkPSEwLDIhPT1hLnF1ZXJ5U2VsZWN0b3JBbGwoIjpkaXNh
YmxlZCIpLmxlbmd0aCYmcS5wdXNoKCI6ZW5hYmxlZCIsIjpkaXNhYmxlZCIpLGEucXVlcnlTZWxl
Y3RvckFsbCgiKiw6eCIpLHEucHVzaCgiLC4qOiIpfSkpLChjLm1hdGNoZXNTZWxlY3Rvcj1ZLnRl
c3Qocz1vLm1hdGNoZXN8fG8ud2Via2l0TWF0Y2hlc1NlbGVjdG9yfHxvLm1vek1hdGNoZXNTZWxl
Y3Rvcnx8by5vTWF0Y2hlc1NlbGVjdG9yfHxvLm1zTWF0Y2hlc1NlbGVjdG9yKSkmJmphKGZ1bmN0
aW9uKGEpe2MuZGlzY29ubmVjdGVkTWF0Y2g9cy5jYWxsKGEsIioiKSxzLmNhbGwoYSwiW3MhPScn
XTp4Iiksci5wdXNoKCIhPSIsTil9KSxxPXEubGVuZ3RoJiZuZXcgUmVnRXhwKHEuam9pbigifCIp
KSxyPXIubGVuZ3RoJiZuZXcgUmVnRXhwKHIuam9pbigifCIpKSxiPVkudGVzdChvLmNvbXBhcmVE
b2N1bWVudFBvc2l0aW9uKSx0PWJ8fFkudGVzdChvLmNvbnRhaW5zKT9mdW5jdGlvbihhLGIpe3Zh
ciBjPTk9PT1hLm5vZGVUeXBlP2EuZG9jdW1lbnRFbGVtZW50OmEsZD1iJiZiLnBhcmVudE5vZGU7
cmV0dXJuIGE9PT1kfHwhKCFkfHwxIT09ZC5ub2RlVHlwZXx8IShjLmNvbnRhaW5zP2MuY29udGFp
bnMoZCk6YS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiYmMTYmYS5jb21wYXJlRG9jdW1lbnRQb3Np
dGlvbihkKSkpfTpmdW5jdGlvbihhLGIpe2lmKGIpd2hpbGUoYj1iLnBhcmVudE5vZGUpaWYoYj09
PWEpcmV0dXJuITA7cmV0dXJuITF9LEI9Yj9mdW5jdGlvbihhLGIpe2lmKGE9PT1iKXJldHVybiBs
PSEwLDA7dmFyIGQ9IWEuY29tcGFyZURvY3VtZW50UG9zaXRpb24tIWIuY29tcGFyZURvY3VtZW50
UG9zaXRpb247cmV0dXJuIGQ/ZDooZD0oYS5vd25lckRvY3VtZW50fHxhKT09PShiLm93bmVyRG9j
dW1lbnR8fGIpP2EuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYik6MSwxJmR8fCFjLnNvcnREZXRh
Y2hlZCYmYi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihhKT09PWQ/YT09PW58fGEub3duZXJEb2N1
bWVudD09PXYmJnQodixhKT8tMTpiPT09bnx8Yi5vd25lckRvY3VtZW50PT09diYmdCh2LGIpPzE6
az9JKGssYSktSShrLGIpOjA6NCZkPy0xOjEpfTpmdW5jdGlvbihhLGIpe2lmKGE9PT1iKXJldHVy
biBsPSEwLDA7dmFyIGMsZD0wLGU9YS5wYXJlbnROb2RlLGY9Yi5wYXJlbnROb2RlLGc9W2FdLGg9
W2JdO2lmKCFlfHwhZilyZXR1cm4gYT09PW4/LTE6Yj09PW4/MTplPy0xOmY/MTprP0koayxhKS1J
KGssYik6MDtpZihlPT09ZilyZXR1cm4gbGEoYSxiKTtjPWE7d2hpbGUoYz1jLnBhcmVudE5vZGUp
Zy51bnNoaWZ0KGMpO2M9Yjt3aGlsZShjPWMucGFyZW50Tm9kZSloLnVuc2hpZnQoYyk7d2hpbGUo
Z1tkXT09PWhbZF0pZCsrO3JldHVybiBkP2xhKGdbZF0saFtkXSk6Z1tkXT09PXY/LTE6aFtkXT09
PXY/MTowfSxuKTpufSxnYS5tYXRjaGVzPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGdhKGEsbnVsbCxu
dWxsLGIpfSxnYS5tYXRjaGVzU2VsZWN0b3I9ZnVuY3Rpb24oYSxiKXtpZigoYS5vd25lckRvY3Vt
ZW50fHxhKSE9PW4mJm0oYSksYj1iLnJlcGxhY2UoUywiPSckMSddIiksYy5tYXRjaGVzU2VsZWN0
b3ImJnAmJiFBW2IrIiAiXSYmKCFyfHwhci50ZXN0KGIpKSYmKCFxfHwhcS50ZXN0KGIpKSl0cnl7
dmFyIGQ9cy5jYWxsKGEsYik7aWYoZHx8Yy5kaXNjb25uZWN0ZWRNYXRjaHx8YS5kb2N1bWVudCYm
MTEhPT1hLmRvY3VtZW50Lm5vZGVUeXBlKXJldHVybiBkfWNhdGNoKGUpe31yZXR1cm4gZ2EoYixu
LG51bGwsW2FdKS5sZW5ndGg+MH0sZ2EuY29udGFpbnM9ZnVuY3Rpb24oYSxiKXtyZXR1cm4oYS5v
d25lckRvY3VtZW50fHxhKSE9PW4mJm0oYSksdChhLGIpfSxnYS5hdHRyPWZ1bmN0aW9uKGEsYil7
KGEub3duZXJEb2N1bWVudHx8YSkhPT1uJiZtKGEpO3ZhciBlPWQuYXR0ckhhbmRsZVtiLnRvTG93
ZXJDYXNlKCldLGY9ZSYmQy5jYWxsKGQuYXR0ckhhbmRsZSxiLnRvTG93ZXJDYXNlKCkpP2UoYSxi
LCFwKTp2b2lkIDA7cmV0dXJuIHZvaWQgMCE9PWY/ZjpjLmF0dHJpYnV0ZXN8fCFwP2EuZ2V0QXR0
cmlidXRlKGIpOihmPWEuZ2V0QXR0cmlidXRlTm9kZShiKSkmJmYuc3BlY2lmaWVkP2YudmFsdWU6
bnVsbH0sZ2EuZXNjYXBlPWZ1bmN0aW9uKGEpe3JldHVybihhKyIiKS5yZXBsYWNlKGJhLGNhKX0s
Z2EuZXJyb3I9ZnVuY3Rpb24oYSl7dGhyb3cgbmV3IEVycm9yKCJTeW50YXggZXJyb3IsIHVucmVj
b2duaXplZCBleHByZXNzaW9uOiAiK2EpfSxnYS51bmlxdWVTb3J0PWZ1bmN0aW9uKGEpe3ZhciBi
LGQ9W10sZT0wLGY9MDtpZihsPSFjLmRldGVjdER1cGxpY2F0ZXMsaz0hYy5zb3J0U3RhYmxlJiZh
LnNsaWNlKDApLGEuc29ydChCKSxsKXt3aGlsZShiPWFbZisrXSliPT09YVtmXSYmKGU9ZC5wdXNo
KGYpKTt3aGlsZShlLS0pYS5zcGxpY2UoZFtlXSwxKX1yZXR1cm4gaz1udWxsLGF9LGU9Z2EuZ2V0
VGV4dD1mdW5jdGlvbihhKXt2YXIgYixjPSIiLGQ9MCxmPWEubm9kZVR5cGU7aWYoZil7aWYoMT09
PWZ8fDk9PT1mfHwxMT09PWYpe2lmKCJzdHJpbmciPT10eXBlb2YgYS50ZXh0Q29udGVudClyZXR1
cm4gYS50ZXh0Q29udGVudDtmb3IoYT1hLmZpcnN0Q2hpbGQ7YTthPWEubmV4dFNpYmxpbmcpYys9
ZShhKX1lbHNlIGlmKDM9PT1mfHw0PT09ZilyZXR1cm4gYS5ub2RlVmFsdWV9ZWxzZSB3aGlsZShi
PWFbZCsrXSljKz1lKGIpO3JldHVybiBjfSxkPWdhLnNlbGVjdG9ycz17Y2FjaGVMZW5ndGg6NTAs
Y3JlYXRlUHNldWRvOmlhLG1hdGNoOlYsYXR0ckhhbmRsZTp7fSxmaW5kOnt9LHJlbGF0aXZlOnsi
PiI6e2RpcjoicGFyZW50Tm9kZSIsZmlyc3Q6ITB9LCIgIjp7ZGlyOiJwYXJlbnROb2RlIn0sIisi
OntkaXI6InByZXZpb3VzU2libGluZyIsZmlyc3Q6ITB9LCJ+Ijp7ZGlyOiJwcmV2aW91c1NpYmxp
bmcifX0scHJlRmlsdGVyOntBVFRSOmZ1bmN0aW9uKGEpe3JldHVybiBhWzFdPWFbMV0ucmVwbGFj
ZShfLGFhKSxhWzNdPShhWzNdfHxhWzRdfHxhWzVdfHwiIikucmVwbGFjZShfLGFhKSwifj0iPT09
YVsyXSYmKGFbM109IiAiK2FbM10rIiAiKSxhLnNsaWNlKDAsNCl9LENISUxEOmZ1bmN0aW9uKGEp
e3JldHVybiBhWzFdPWFbMV0udG9Mb3dlckNhc2UoKSwibnRoIj09PWFbMV0uc2xpY2UoMCwzKT8o
YVszXXx8Z2EuZXJyb3IoYVswXSksYVs0XT0rKGFbNF0/YVs1XSsoYVs2XXx8MSk6MiooImV2ZW4i
PT09YVszXXx8Im9kZCI9PT1hWzNdKSksYVs1XT0rKGFbN10rYVs4XXx8Im9kZCI9PT1hWzNdKSk6
YVszXSYmZ2EuZXJyb3IoYVswXSksYX0sUFNFVURPOmZ1bmN0aW9uKGEpe3ZhciBiLGM9IWFbNl0m
JmFbMl07cmV0dXJuIFYuQ0hJTEQudGVzdChhWzBdKT9udWxsOihhWzNdP2FbMl09YVs0XXx8YVs1
XXx8IiI6YyYmVC50ZXN0KGMpJiYoYj1nKGMsITApKSYmKGI9Yy5pbmRleE9mKCIpIixjLmxlbmd0
aC1iKS1jLmxlbmd0aCkmJihhWzBdPWFbMF0uc2xpY2UoMCxiKSxhWzJdPWMuc2xpY2UoMCxiKSks
YS5zbGljZSgwLDMpKX19LGZpbHRlcjp7VEFHOmZ1bmN0aW9uKGEpe3ZhciBiPWEucmVwbGFjZShf
LGFhKS50b0xvd2VyQ2FzZSgpO3JldHVybiIqIj09PWE/ZnVuY3Rpb24oKXtyZXR1cm4hMH06ZnVu
Y3Rpb24oYSl7cmV0dXJuIGEubm9kZU5hbWUmJmEubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PWJ9
fSxDTEFTUzpmdW5jdGlvbihhKXt2YXIgYj15W2ErIiAiXTtyZXR1cm4gYnx8KGI9bmV3IFJlZ0V4
cCgiKF58IitLKyIpIithKyIoIitLKyJ8JCkiKSkmJnkoYSxmdW5jdGlvbihhKXtyZXR1cm4gYi50
ZXN0KCJzdHJpbmciPT10eXBlb2YgYS5jbGFzc05hbWUmJmEuY2xhc3NOYW1lfHwidW5kZWZpbmVk
IiE9dHlwZW9mIGEuZ2V0QXR0cmlidXRlJiZhLmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiIpfSl9
LEFUVFI6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBmdW5jdGlvbihkKXt2YXIgZT1nYS5hdHRyKGQs
YSk7cmV0dXJuIG51bGw9PWU/IiE9Ij09PWI6IWJ8fChlKz0iIiwiPSI9PT1iP2U9PT1jOiIhPSI9
PT1iP2UhPT1jOiJePSI9PT1iP2MmJjA9PT1lLmluZGV4T2YoYyk6Iio9Ij09PWI/YyYmZS5pbmRl
eE9mKGMpPi0xOiIkPSI9PT1iP2MmJmUuc2xpY2UoLWMubGVuZ3RoKT09PWM6In49Ij09PWI/KCIg
IitlLnJlcGxhY2UoTywiICIpKyIgIikuaW5kZXhPZihjKT4tMToifD0iPT09YiYmKGU9PT1jfHxl
LnNsaWNlKDAsYy5sZW5ndGgrMSk9PT1jKyItIikpfX0sQ0hJTEQ6ZnVuY3Rpb24oYSxiLGMsZCxl
KXt2YXIgZj0ibnRoIiE9PWEuc2xpY2UoMCwzKSxnPSJsYXN0IiE9PWEuc2xpY2UoLTQpLGg9Im9m
LXR5cGUiPT09YjtyZXR1cm4gMT09PWQmJjA9PT1lP2Z1bmN0aW9uKGEpe3JldHVybiEhYS5wYXJl
bnROb2RlfTpmdW5jdGlvbihiLGMsaSl7dmFyIGosayxsLG0sbixvLHA9ZiE9PWc/Im5leHRTaWJs
aW5nIjoicHJldmlvdXNTaWJsaW5nIixxPWIucGFyZW50Tm9kZSxyPWgmJmIubm9kZU5hbWUudG9M
b3dlckNhc2UoKSxzPSFpJiYhaCx0PSExO2lmKHEpe2lmKGYpe3doaWxlKHApe209Yjt3aGlsZSht
PW1bcF0paWYoaD9tLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1yOjE9PT1tLm5vZGVUeXBlKXJl
dHVybiExO289cD0ib25seSI9PT1hJiYhbyYmIm5leHRTaWJsaW5nIn1yZXR1cm4hMH1pZihvPVtn
P3EuZmlyc3RDaGlsZDpxLmxhc3RDaGlsZF0sZyYmcyl7bT1xLGw9bVt1XXx8KG1bdV09e30pLGs9
bFttLnVuaXF1ZUlEXXx8KGxbbS51bmlxdWVJRF09e30pLGo9a1thXXx8W10sbj1qWzBdPT09dyYm
alsxXSx0PW4mJmpbMl0sbT1uJiZxLmNoaWxkTm9kZXNbbl07d2hpbGUobT0rK24mJm0mJm1bcF18
fCh0PW49MCl8fG8ucG9wKCkpaWYoMT09PW0ubm9kZVR5cGUmJisrdCYmbT09PWIpe2tbYV09W3cs
bix0XTticmVha319ZWxzZSBpZihzJiYobT1iLGw9bVt1XXx8KG1bdV09e30pLGs9bFttLnVuaXF1
ZUlEXXx8KGxbbS51bmlxdWVJRF09e30pLGo9a1thXXx8W10sbj1qWzBdPT09dyYmalsxXSx0PW4p
LHQ9PT0hMSl3aGlsZShtPSsrbiYmbSYmbVtwXXx8KHQ9bj0wKXx8by5wb3AoKSlpZigoaD9tLm5v
ZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1yOjE9PT1tLm5vZGVUeXBlKSYmKyt0JiYocyYmKGw9bVt1
XXx8KG1bdV09e30pLGs9bFttLnVuaXF1ZUlEXXx8KGxbbS51bmlxdWVJRF09e30pLGtbYV09W3cs
dF0pLG09PT1iKSlicmVhaztyZXR1cm4gdC09ZSx0PT09ZHx8dCVkPT09MCYmdC9kPj0wfX19LFBT
RVVETzpmdW5jdGlvbihhLGIpe3ZhciBjLGU9ZC5wc2V1ZG9zW2FdfHxkLnNldEZpbHRlcnNbYS50
b0xvd2VyQ2FzZSgpXXx8Z2EuZXJyb3IoInVuc3VwcG9ydGVkIHBzZXVkbzogIithKTtyZXR1cm4g
ZVt1XT9lKGIpOmUubGVuZ3RoPjE/KGM9W2EsYSwiIixiXSxkLnNldEZpbHRlcnMuaGFzT3duUHJv
cGVydHkoYS50b0xvd2VyQ2FzZSgpKT9pYShmdW5jdGlvbihhLGMpe3ZhciBkLGY9ZShhLGIpLGc9
Zi5sZW5ndGg7d2hpbGUoZy0tKWQ9SShhLGZbZ10pLGFbZF09IShjW2RdPWZbZ10pfSk6ZnVuY3Rp
b24oYSl7cmV0dXJuIGUoYSwwLGMpfSk6ZX19LHBzZXVkb3M6e25vdDppYShmdW5jdGlvbihhKXt2
YXIgYj1bXSxjPVtdLGQ9aChhLnJlcGxhY2UoUCwiJDEiKSk7cmV0dXJuIGRbdV0/aWEoZnVuY3Rp
b24oYSxiLGMsZSl7dmFyIGYsZz1kKGEsbnVsbCxlLFtdKSxoPWEubGVuZ3RoO3doaWxlKGgtLSko
Zj1nW2hdKSYmKGFbaF09IShiW2hdPWYpKX0pOmZ1bmN0aW9uKGEsZSxmKXtyZXR1cm4gYlswXT1h
LGQoYixudWxsLGYsYyksYlswXT1udWxsLCFjLnBvcCgpfX0pLGhhczppYShmdW5jdGlvbihhKXty
ZXR1cm4gZnVuY3Rpb24oYil7cmV0dXJuIGdhKGEsYikubGVuZ3RoPjB9fSksY29udGFpbnM6aWEo
ZnVuY3Rpb24oYSl7cmV0dXJuIGE9YS5yZXBsYWNlKF8sYWEpLGZ1bmN0aW9uKGIpe3JldHVybihi
LnRleHRDb250ZW50fHxiLmlubmVyVGV4dHx8ZShiKSkuaW5kZXhPZihhKT4tMX19KSxsYW5nOmlh
KGZ1bmN0aW9uKGEpe3JldHVybiBVLnRlc3QoYXx8IiIpfHxnYS5lcnJvcigidW5zdXBwb3J0ZWQg
bGFuZzogIithKSxhPWEucmVwbGFjZShfLGFhKS50b0xvd2VyQ2FzZSgpLGZ1bmN0aW9uKGIpe3Zh
ciBjO2RvIGlmKGM9cD9iLmxhbmc6Yi5nZXRBdHRyaWJ1dGUoInhtbDpsYW5nIil8fGIuZ2V0QXR0
cmlidXRlKCJsYW5nIikpcmV0dXJuIGM9Yy50b0xvd2VyQ2FzZSgpLGM9PT1hfHwwPT09Yy5pbmRl
eE9mKGErIi0iKTt3aGlsZSgoYj1iLnBhcmVudE5vZGUpJiYxPT09Yi5ub2RlVHlwZSk7cmV0dXJu
ITF9fSksdGFyZ2V0OmZ1bmN0aW9uKGIpe3ZhciBjPWEubG9jYXRpb24mJmEubG9jYXRpb24uaGFz
aDtyZXR1cm4gYyYmYy5zbGljZSgxKT09PWIuaWR9LHJvb3Q6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9
PT1vfSxmb2N1czpmdW5jdGlvbihhKXtyZXR1cm4gYT09PW4uYWN0aXZlRWxlbWVudCYmKCFuLmhh
c0ZvY3VzfHxuLmhhc0ZvY3VzKCkpJiYhIShhLnR5cGV8fGEuaHJlZnx8fmEudGFiSW5kZXgpfSxl
bmFibGVkOm9hKCExKSxkaXNhYmxlZDpvYSghMCksY2hlY2tlZDpmdW5jdGlvbihhKXt2YXIgYj1h
Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PWImJiEhYS5jaGVja2VkfHwi
b3B0aW9uIj09PWImJiEhYS5zZWxlY3RlZH0sc2VsZWN0ZWQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEu
cGFyZW50Tm9kZSYmYS5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXgsYS5zZWxlY3RlZD09PSEwfSxl
bXB0eTpmdW5jdGlvbihhKXtmb3IoYT1hLmZpcnN0Q2hpbGQ7YTthPWEubmV4dFNpYmxpbmcpaWYo
YS5ub2RlVHlwZTw2KXJldHVybiExO3JldHVybiEwfSxwYXJlbnQ6ZnVuY3Rpb24oYSl7cmV0dXJu
IWQucHNldWRvcy5lbXB0eShhKX0saGVhZGVyOmZ1bmN0aW9uKGEpe3JldHVybiBYLnRlc3QoYS5u
b2RlTmFtZSl9LGlucHV0OmZ1bmN0aW9uKGEpe3JldHVybiBXLnRlc3QoYS5ub2RlTmFtZSl9LGJ1
dHRvbjpmdW5jdGlvbihhKXt2YXIgYj1hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlu
cHV0Ij09PWImJiJidXR0b24iPT09YS50eXBlfHwiYnV0dG9uIj09PWJ9LHRleHQ6ZnVuY3Rpb24o
YSl7dmFyIGI7cmV0dXJuImlucHV0Ij09PWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKSYmInRleHQi
PT09YS50eXBlJiYobnVsbD09KGI9YS5nZXRBdHRyaWJ1dGUoInR5cGUiKSl8fCJ0ZXh0Ij09PWIu
dG9Mb3dlckNhc2UoKSl9LGZpcnN0OnBhKGZ1bmN0aW9uKCl7cmV0dXJuWzBdfSksbGFzdDpwYShm
dW5jdGlvbihhLGIpe3JldHVybltiLTFdfSksZXE6cGEoZnVuY3Rpb24oYSxiLGMpe3JldHVybltj
PDA/YytiOmNdfSksZXZlbjpwYShmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0wO2M8YjtjKz0yKWEu
cHVzaChjKTtyZXR1cm4gYX0pLG9kZDpwYShmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0xO2M8Yjtj
Kz0yKWEucHVzaChjKTtyZXR1cm4gYX0pLGx0OnBhKGZ1bmN0aW9uKGEsYixjKXtmb3IodmFyIGQ9
YzwwP2MrYjpjOy0tZD49MDspYS5wdXNoKGQpO3JldHVybiBhfSksZ3Q6cGEoZnVuY3Rpb24oYSxi
LGMpe2Zvcih2YXIgZD1jPDA/YytiOmM7KytkPGI7KWEucHVzaChkKTtyZXR1cm4gYX0pfX0sZC5w
c2V1ZG9zLm50aD1kLnBzZXVkb3MuZXE7Zm9yKGIgaW57cmFkaW86ITAsY2hlY2tib3g6ITAsZmls
ZTohMCxwYXNzd29yZDohMCxpbWFnZTohMH0pZC5wc2V1ZG9zW2JdPW1hKGIpO2ZvcihiIGlue3N1
Ym1pdDohMCxyZXNldDohMH0pZC5wc2V1ZG9zW2JdPW5hKGIpO2Z1bmN0aW9uIHJhKCl7fXJhLnBy
b3RvdHlwZT1kLmZpbHRlcnM9ZC5wc2V1ZG9zLGQuc2V0RmlsdGVycz1uZXcgcmEsZz1nYS50b2tl
bml6ZT1mdW5jdGlvbihhLGIpe3ZhciBjLGUsZixnLGgsaSxqLGs9elthKyIgIl07aWYoaylyZXR1
cm4gYj8wOmsuc2xpY2UoMCk7aD1hLGk9W10saj1kLnByZUZpbHRlcjt3aGlsZShoKXtjJiYhKGU9
US5leGVjKGgpKXx8KGUmJihoPWguc2xpY2UoZVswXS5sZW5ndGgpfHxoKSxpLnB1c2goZj1bXSkp
LGM9ITEsKGU9Ui5leGVjKGgpKSYmKGM9ZS5zaGlmdCgpLGYucHVzaCh7dmFsdWU6Yyx0eXBlOmVb
MF0ucmVwbGFjZShQLCIgIil9KSxoPWguc2xpY2UoYy5sZW5ndGgpKTtmb3IoZyBpbiBkLmZpbHRl
cikhKGU9VltnXS5leGVjKGgpKXx8altnXSYmIShlPWpbZ10oZSkpfHwoYz1lLnNoaWZ0KCksZi5w
dXNoKHt2YWx1ZTpjLHR5cGU6ZyxtYXRjaGVzOmV9KSxoPWguc2xpY2UoYy5sZW5ndGgpKTtpZigh
YylicmVha31yZXR1cm4gYj9oLmxlbmd0aDpoP2dhLmVycm9yKGEpOnooYSxpKS5zbGljZSgwKX07
ZnVuY3Rpb24gc2EoYSl7Zm9yKHZhciBiPTAsYz1hLmxlbmd0aCxkPSIiO2I8YztiKyspZCs9YVti
XS52YWx1ZTtyZXR1cm4gZH1mdW5jdGlvbiB0YShhLGIsYyl7dmFyIGQ9Yi5kaXIsZT1iLm5leHQs
Zj1lfHxkLGc9YyYmInBhcmVudE5vZGUiPT09ZixoPXgrKztyZXR1cm4gYi5maXJzdD9mdW5jdGlv
bihiLGMsZSl7d2hpbGUoYj1iW2RdKWlmKDE9PT1iLm5vZGVUeXBlfHxnKXJldHVybiBhKGIsYyxl
KTtyZXR1cm4hMX06ZnVuY3Rpb24oYixjLGkpe3ZhciBqLGssbCxtPVt3LGhdO2lmKGkpe3doaWxl
KGI9YltkXSlpZigoMT09PWIubm9kZVR5cGV8fGcpJiZhKGIsYyxpKSlyZXR1cm4hMH1lbHNlIHdo
aWxlKGI9YltkXSlpZigxPT09Yi5ub2RlVHlwZXx8ZylpZihsPWJbdV18fChiW3VdPXt9KSxrPWxb
Yi51bmlxdWVJRF18fChsW2IudW5pcXVlSURdPXt9KSxlJiZlPT09Yi5ub2RlTmFtZS50b0xvd2Vy
Q2FzZSgpKWI9YltkXXx8YjtlbHNle2lmKChqPWtbZl0pJiZqWzBdPT09dyYmalsxXT09PWgpcmV0
dXJuIG1bMl09alsyXTtpZihrW2ZdPW0sbVsyXT1hKGIsYyxpKSlyZXR1cm4hMH1yZXR1cm4hMX19
ZnVuY3Rpb24gdWEoYSl7cmV0dXJuIGEubGVuZ3RoPjE/ZnVuY3Rpb24oYixjLGQpe3ZhciBlPWEu
bGVuZ3RoO3doaWxlKGUtLSlpZighYVtlXShiLGMsZCkpcmV0dXJuITE7cmV0dXJuITB9OmFbMF19
ZnVuY3Rpb24gdmEoYSxiLGMpe2Zvcih2YXIgZD0wLGU9Yi5sZW5ndGg7ZDxlO2QrKylnYShhLGJb
ZF0sYyk7cmV0dXJuIGN9ZnVuY3Rpb24gd2EoYSxiLGMsZCxlKXtmb3IodmFyIGYsZz1bXSxoPTAs
aT1hLmxlbmd0aCxqPW51bGwhPWI7aDxpO2grKykoZj1hW2hdKSYmKGMmJiFjKGYsZCxlKXx8KGcu
cHVzaChmKSxqJiZiLnB1c2goaCkpKTtyZXR1cm4gZ31mdW5jdGlvbiB4YShhLGIsYyxkLGUsZil7
cmV0dXJuIGQmJiFkW3VdJiYoZD14YShkKSksZSYmIWVbdV0mJihlPXhhKGUsZikpLGlhKGZ1bmN0
aW9uKGYsZyxoLGkpe3ZhciBqLGssbCxtPVtdLG49W10sbz1nLmxlbmd0aCxwPWZ8fHZhKGJ8fCIq
IixoLm5vZGVUeXBlP1toXTpoLFtdKSxxPSFhfHwhZiYmYj9wOndhKHAsbSxhLGgsaSkscj1jP2V8
fChmP2E6b3x8ZCk/W106ZzpxO2lmKGMmJmMocSxyLGgsaSksZCl7aj13YShyLG4pLGQoaixbXSxo
LGkpLGs9ai5sZW5ndGg7d2hpbGUoay0tKShsPWpba10pJiYocltuW2tdXT0hKHFbbltrXV09bCkp
fWlmKGYpe2lmKGV8fGEpe2lmKGUpe2o9W10saz1yLmxlbmd0aDt3aGlsZShrLS0pKGw9cltrXSkm
JmoucHVzaChxW2tdPWwpO2UobnVsbCxyPVtdLGosaSl9az1yLmxlbmd0aDt3aGlsZShrLS0pKGw9
cltrXSkmJihqPWU/SShmLGwpOm1ba10pPi0xJiYoZltqXT0hKGdbal09bCkpfX1lbHNlIHI9d2Eo
cj09PWc/ci5zcGxpY2UobyxyLmxlbmd0aCk6ciksZT9lKG51bGwsZyxyLGkpOkcuYXBwbHkoZyxy
KX0pfWZ1bmN0aW9uIHlhKGEpe2Zvcih2YXIgYixjLGUsZj1hLmxlbmd0aCxnPWQucmVsYXRpdmVb
YVswXS50eXBlXSxoPWd8fGQucmVsYXRpdmVbIiAiXSxpPWc/MTowLGs9dGEoZnVuY3Rpb24oYSl7
cmV0dXJuIGE9PT1ifSxoLCEwKSxsPXRhKGZ1bmN0aW9uKGEpe3JldHVybiBJKGIsYSk+LTF9LGgs
ITApLG09W2Z1bmN0aW9uKGEsYyxkKXt2YXIgZT0hZyYmKGR8fGMhPT1qKXx8KChiPWMpLm5vZGVU
eXBlP2soYSxjLGQpOmwoYSxjLGQpKTtyZXR1cm4gYj1udWxsLGV9XTtpPGY7aSsrKWlmKGM9ZC5y
ZWxhdGl2ZVthW2ldLnR5cGVdKW09W3RhKHVhKG0pLGMpXTtlbHNle2lmKGM9ZC5maWx0ZXJbYVtp
XS50eXBlXS5hcHBseShudWxsLGFbaV0ubWF0Y2hlcyksY1t1XSl7Zm9yKGU9KytpO2U8ZjtlKysp
aWYoZC5yZWxhdGl2ZVthW2VdLnR5cGVdKWJyZWFrO3JldHVybiB4YShpPjEmJnVhKG0pLGk+MSYm
c2EoYS5zbGljZSgwLGktMSkuY29uY2F0KHt2YWx1ZToiICI9PT1hW2ktMl0udHlwZT8iKiI6IiJ9
KSkucmVwbGFjZShQLCIkMSIpLGMsaTxlJiZ5YShhLnNsaWNlKGksZSkpLGU8ZiYmeWEoYT1hLnNs
aWNlKGUpKSxlPGYmJnNhKGEpKX1tLnB1c2goYyl9cmV0dXJuIHVhKG0pfWZ1bmN0aW9uIHphKGEs
Yil7dmFyIGM9Yi5sZW5ndGg+MCxlPWEubGVuZ3RoPjAsZj1mdW5jdGlvbihmLGcsaCxpLGspe3Zh
ciBsLG8scSxyPTAscz0iMCIsdD1mJiZbXSx1PVtdLHY9aix4PWZ8fGUmJmQuZmluZC5UQUcoIioi
LGspLHk9dys9bnVsbD09dj8xOk1hdGgucmFuZG9tKCl8fC4xLHo9eC5sZW5ndGg7Zm9yKGsmJihq
PWc9PT1ufHxnfHxrKTtzIT09eiYmbnVsbCE9KGw9eFtzXSk7cysrKXtpZihlJiZsKXtvPTAsZ3x8
bC5vd25lckRvY3VtZW50PT09bnx8KG0obCksaD0hcCk7d2hpbGUocT1hW28rK10paWYocShsLGd8
fG4saCkpe2kucHVzaChsKTticmVha31rJiYodz15KX1jJiYoKGw9IXEmJmwpJiZyLS0sZiYmdC5w
dXNoKGwpKX1pZihyKz1zLGMmJnMhPT1yKXtvPTA7d2hpbGUocT1iW28rK10pcSh0LHUsZyxoKTtp
ZihmKXtpZihyPjApd2hpbGUocy0tKXRbc118fHVbc118fCh1W3NdPUUuY2FsbChpKSk7dT13YSh1
KX1HLmFwcGx5KGksdSksayYmIWYmJnUubGVuZ3RoPjAmJnIrYi5sZW5ndGg+MSYmZ2EudW5pcXVl
U29ydChpKX1yZXR1cm4gayYmKHc9eSxqPXYpLHR9O3JldHVybiBjP2lhKGYpOmZ9cmV0dXJuIGg9
Z2EuY29tcGlsZT1mdW5jdGlvbihhLGIpe3ZhciBjLGQ9W10sZT1bXSxmPUFbYSsiICJdO2lmKCFm
KXtifHwoYj1nKGEpKSxjPWIubGVuZ3RoO3doaWxlKGMtLSlmPXlhKGJbY10pLGZbdV0/ZC5wdXNo
KGYpOmUucHVzaChmKTtmPUEoYSx6YShlLGQpKSxmLnNlbGVjdG9yPWF9cmV0dXJuIGZ9LGk9Z2Eu
c2VsZWN0PWZ1bmN0aW9uKGEsYixjLGUpe3ZhciBmLGksaixrLGwsbT0iZnVuY3Rpb24iPT10eXBl
b2YgYSYmYSxuPSFlJiZnKGE9bS5zZWxlY3Rvcnx8YSk7aWYoYz1jfHxbXSwxPT09bi5sZW5ndGgp
e2lmKGk9blswXT1uWzBdLnNsaWNlKDApLGkubGVuZ3RoPjImJiJJRCI9PT0oaj1pWzBdKS50eXBl
JiY5PT09Yi5ub2RlVHlwZSYmcCYmZC5yZWxhdGl2ZVtpWzFdLnR5cGVdKXtpZihiPShkLmZpbmQu
SUQoai5tYXRjaGVzWzBdLnJlcGxhY2UoXyxhYSksYil8fFtdKVswXSwhYilyZXR1cm4gYzttJiYo
Yj1iLnBhcmVudE5vZGUpLGE9YS5zbGljZShpLnNoaWZ0KCkudmFsdWUubGVuZ3RoKX1mPVYubmVl
ZHNDb250ZXh0LnRlc3QoYSk/MDppLmxlbmd0aDt3aGlsZShmLS0pe2lmKGo9aVtmXSxkLnJlbGF0
aXZlW2s9ai50eXBlXSlicmVhaztpZigobD1kLmZpbmRba10pJiYoZT1sKGoubWF0Y2hlc1swXS5y
ZXBsYWNlKF8sYWEpLCQudGVzdChpWzBdLnR5cGUpJiZxYShiLnBhcmVudE5vZGUpfHxiKSkpe2lm
KGkuc3BsaWNlKGYsMSksYT1lLmxlbmd0aCYmc2EoaSksIWEpcmV0dXJuIEcuYXBwbHkoYyxlKSxj
O2JyZWFrfX19cmV0dXJuKG18fGgoYSxuKSkoZSxiLCFwLGMsIWJ8fCQudGVzdChhKSYmcWEoYi5w
YXJlbnROb2RlKXx8YiksY30sYy5zb3J0U3RhYmxlPXUuc3BsaXQoIiIpLnNvcnQoQikuam9pbigi
Iik9PT11LGMuZGV0ZWN0RHVwbGljYXRlcz0hIWwsbSgpLGMuc29ydERldGFjaGVkPWphKGZ1bmN0
aW9uKGEpe3JldHVybiAxJmEuY29tcGFyZURvY3VtZW50UG9zaXRpb24obi5jcmVhdGVFbGVtZW50
KCJmaWVsZHNldCIpKX0pLGphKGZ1bmN0aW9uKGEpe3JldHVybiBhLmlubmVySFRNTD0iPGEgaHJl
Zj0nIyc+PC9hPiIsIiMiPT09YS5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgiaHJlZiIpfSl8fGth
KCJ0eXBlfGhyZWZ8aGVpZ2h0fHdpZHRoIixmdW5jdGlvbihhLGIsYyl7aWYoIWMpcmV0dXJuIGEu
Z2V0QXR0cmlidXRlKGIsInR5cGUiPT09Yi50b0xvd2VyQ2FzZSgpPzE6Mil9KSxjLmF0dHJpYnV0
ZXMmJmphKGZ1bmN0aW9uKGEpe3JldHVybiBhLmlubmVySFRNTD0iPGlucHV0Lz4iLGEuZmlyc3RD
aGlsZC5zZXRBdHRyaWJ1dGUoInZhbHVlIiwiIiksIiI9PT1hLmZpcnN0Q2hpbGQuZ2V0QXR0cmli
dXRlKCJ2YWx1ZSIpfSl8fGthKCJ2YWx1ZSIsZnVuY3Rpb24oYSxiLGMpe2lmKCFjJiYiaW5wdXQi
PT09YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKXJldHVybiBhLmRlZmF1bHRWYWx1ZX0pLGphKGZ1
bmN0aW9uKGEpe3JldHVybiBudWxsPT1hLmdldEF0dHJpYnV0ZSgiZGlzYWJsZWQiKX0pfHxrYShK
LGZ1bmN0aW9uKGEsYixjKXt2YXIgZDtpZighYylyZXR1cm4gYVtiXT09PSEwP2IudG9Mb3dlckNh
c2UoKTooZD1hLmdldEF0dHJpYnV0ZU5vZGUoYikpJiZkLnNwZWNpZmllZD9kLnZhbHVlOm51bGx9
KSxnYX0oYSk7ci5maW5kPXgsci5leHByPXguc2VsZWN0b3JzLHIuZXhwclsiOiJdPXIuZXhwci5w
c2V1ZG9zLHIudW5pcXVlU29ydD1yLnVuaXF1ZT14LnVuaXF1ZVNvcnQsci50ZXh0PXguZ2V0VGV4
dCxyLmlzWE1MRG9jPXguaXNYTUwsci5jb250YWlucz14LmNvbnRhaW5zLHIuZXNjYXBlU2VsZWN0
b3I9eC5lc2NhcGU7dmFyIHk9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPVtdLGU9dm9pZCAwIT09Yzt3
aGlsZSgoYT1hW2JdKSYmOSE9PWEubm9kZVR5cGUpaWYoMT09PWEubm9kZVR5cGUpe2lmKGUmJnIo
YSkuaXMoYykpYnJlYWs7ZC5wdXNoKGEpfXJldHVybiBkfSx6PWZ1bmN0aW9uKGEsYil7Zm9yKHZh
ciBjPVtdO2E7YT1hLm5leHRTaWJsaW5nKTE9PT1hLm5vZGVUeXBlJiZhIT09YiYmYy5wdXNoKGEp
O3JldHVybiBjfSxBPXIuZXhwci5tYXRjaC5uZWVkc0NvbnRleHQsQj0vXjwoW2Etel1bXlwvXDA+
Olx4MjBcdFxyXG5cZl0qKVtceDIwXHRcclxuXGZdKlwvPz4oPzo8XC9cMT58KSQvaSxDPS9eLlte
OiNcW1wuLF0qJC87ZnVuY3Rpb24gRChhLGIsYyl7cmV0dXJuIHIuaXNGdW5jdGlvbihiKT9yLmdy
ZXAoYSxmdW5jdGlvbihhLGQpe3JldHVybiEhYi5jYWxsKGEsZCxhKSE9PWN9KTpiLm5vZGVUeXBl
P3IuZ3JlcChhLGZ1bmN0aW9uKGEpe3JldHVybiBhPT09YiE9PWN9KToic3RyaW5nIiE9dHlwZW9m
IGI/ci5ncmVwKGEsZnVuY3Rpb24oYSl7cmV0dXJuIGkuY2FsbChiLGEpPi0xIT09Y30pOkMudGVz
dChiKT9yLmZpbHRlcihiLGEsYyk6KGI9ci5maWx0ZXIoYixhKSxyLmdyZXAoYSxmdW5jdGlvbihh
KXtyZXR1cm4gaS5jYWxsKGIsYSk+LTEhPT1jJiYxPT09YS5ub2RlVHlwZX0pKX1yLmZpbHRlcj1m
dW5jdGlvbihhLGIsYyl7dmFyIGQ9YlswXTtyZXR1cm4gYyYmKGE9Ijpub3QoIithKyIpIiksMT09
PWIubGVuZ3RoJiYxPT09ZC5ub2RlVHlwZT9yLmZpbmQubWF0Y2hlc1NlbGVjdG9yKGQsYSk/W2Rd
OltdOnIuZmluZC5tYXRjaGVzKGEsci5ncmVwKGIsZnVuY3Rpb24oYSl7cmV0dXJuIDE9PT1hLm5v
ZGVUeXBlfSkpfSxyLmZuLmV4dGVuZCh7ZmluZDpmdW5jdGlvbihhKXt2YXIgYixjLGQ9dGhpcy5s
ZW5ndGgsZT10aGlzO2lmKCJzdHJpbmciIT10eXBlb2YgYSlyZXR1cm4gdGhpcy5wdXNoU3RhY2so
cihhKS5maWx0ZXIoZnVuY3Rpb24oKXtmb3IoYj0wO2I8ZDtiKyspaWYoci5jb250YWlucyhlW2Jd
LHRoaXMpKXJldHVybiEwfSkpO2ZvcihjPXRoaXMucHVzaFN0YWNrKFtdKSxiPTA7YjxkO2IrKyly
LmZpbmQoYSxlW2JdLGMpO3JldHVybiBkPjE/ci51bmlxdWVTb3J0KGMpOmN9LGZpbHRlcjpmdW5j
dGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soRCh0aGlzLGF8fFtdLCExKSl9LG5vdDpmdW5j
dGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soRCh0aGlzLGF8fFtdLCEwKSl9LGlzOmZ1bmN0
aW9uKGEpe3JldHVybiEhRCh0aGlzLCJzdHJpbmciPT10eXBlb2YgYSYmQS50ZXN0KGEpP3IoYSk6
YXx8W10sITEpLmxlbmd0aH19KTt2YXIgRSxGPS9eKD86XHMqKDxbXHdcV10rPilbXj5dKnwjKFtc
dy1dKykpJC8sRz1yLmZuLmluaXQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBlLGY7aWYoIWEpcmV0dXJu
IHRoaXM7aWYoYz1jfHxFLCJzdHJpbmciPT10eXBlb2YgYSl7aWYoZT0iPCI9PT1hWzBdJiYiPiI9
PT1hW2EubGVuZ3RoLTFdJiZhLmxlbmd0aD49Mz9bbnVsbCxhLG51bGxdOkYuZXhlYyhhKSwhZXx8
IWVbMV0mJmIpcmV0dXJuIWJ8fGIuanF1ZXJ5PyhifHxjKS5maW5kKGEpOnRoaXMuY29uc3RydWN0
b3IoYikuZmluZChhKTtpZihlWzFdKXtpZihiPWIgaW5zdGFuY2VvZiByP2JbMF06YixyLm1lcmdl
KHRoaXMsci5wYXJzZUhUTUwoZVsxXSxiJiZiLm5vZGVUeXBlP2Iub3duZXJEb2N1bWVudHx8Yjpk
LCEwKSksQi50ZXN0KGVbMV0pJiZyLmlzUGxhaW5PYmplY3QoYikpZm9yKGUgaW4gYilyLmlzRnVu
Y3Rpb24odGhpc1tlXSk/dGhpc1tlXShiW2VdKTp0aGlzLmF0dHIoZSxiW2VdKTtyZXR1cm4gdGhp
c31yZXR1cm4gZj1kLmdldEVsZW1lbnRCeUlkKGVbMl0pLGYmJih0aGlzWzBdPWYsdGhpcy5sZW5n
dGg9MSksdGhpc31yZXR1cm4gYS5ub2RlVHlwZT8odGhpc1swXT1hLHRoaXMubGVuZ3RoPTEsdGhp
cyk6ci5pc0Z1bmN0aW9uKGEpP3ZvaWQgMCE9PWMucmVhZHk/Yy5yZWFkeShhKTphKHIpOnIubWFr
ZUFycmF5KGEsdGhpcyl9O0cucHJvdG90eXBlPXIuZm4sRT1yKGQpO3ZhciBIPS9eKD86cGFyZW50
c3xwcmV2KD86VW50aWx8QWxsKSkvLEk9e2NoaWxkcmVuOiEwLGNvbnRlbnRzOiEwLG5leHQ6ITAs
cHJldjohMH07ci5mbi5leHRlbmQoe2hhczpmdW5jdGlvbihhKXt2YXIgYj1yKGEsdGhpcyksYz1i
Lmxlbmd0aDtyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oKXtmb3IodmFyIGE9MDthPGM7YSsr
KWlmKHIuY29udGFpbnModGhpcyxiW2FdKSlyZXR1cm4hMH0pfSxjbG9zZXN0OmZ1bmN0aW9uKGEs
Yil7dmFyIGMsZD0wLGU9dGhpcy5sZW5ndGgsZj1bXSxnPSJzdHJpbmciIT10eXBlb2YgYSYmcihh
KTtpZighQS50ZXN0KGEpKWZvcig7ZDxlO2QrKylmb3IoYz10aGlzW2RdO2MmJmMhPT1iO2M9Yy5w
YXJlbnROb2RlKWlmKGMubm9kZVR5cGU8MTEmJihnP2cuaW5kZXgoYyk+LTE6MT09PWMubm9kZVR5
cGUmJnIuZmluZC5tYXRjaGVzU2VsZWN0b3IoYyxhKSkpe2YucHVzaChjKTticmVha31yZXR1cm4g
dGhpcy5wdXNoU3RhY2soZi5sZW5ndGg+MT9yLnVuaXF1ZVNvcnQoZik6Zil9LGluZGV4OmZ1bmN0
aW9uKGEpe3JldHVybiBhPyJzdHJpbmciPT10eXBlb2YgYT9pLmNhbGwocihhKSx0aGlzWzBdKTpp
LmNhbGwodGhpcyxhLmpxdWVyeT9hWzBdOmEpOnRoaXNbMF0mJnRoaXNbMF0ucGFyZW50Tm9kZT90
aGlzLmZpcnN0KCkucHJldkFsbCgpLmxlbmd0aDotMX0sYWRkOmZ1bmN0aW9uKGEsYil7cmV0dXJu
IHRoaXMucHVzaFN0YWNrKHIudW5pcXVlU29ydChyLm1lcmdlKHRoaXMuZ2V0KCkscihhLGIpKSkp
fSxhZGRCYWNrOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmFkZChudWxsPT1hP3RoaXMucHJldk9i
amVjdDp0aGlzLnByZXZPYmplY3QuZmlsdGVyKGEpKX19KTtmdW5jdGlvbiBKKGEsYil7d2hpbGUo
KGE9YVtiXSkmJjEhPT1hLm5vZGVUeXBlKTtyZXR1cm4gYX1yLmVhY2goe3BhcmVudDpmdW5jdGlv
bihhKXt2YXIgYj1hLnBhcmVudE5vZGU7cmV0dXJuIGImJjExIT09Yi5ub2RlVHlwZT9iOm51bGx9
LHBhcmVudHM6ZnVuY3Rpb24oYSl7cmV0dXJuIHkoYSwicGFyZW50Tm9kZSIpfSxwYXJlbnRzVW50
aWw6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiB5KGEsInBhcmVudE5vZGUiLGMpfSxuZXh0OmZ1bmN0
aW9uKGEpe3JldHVybiBKKGEsIm5leHRTaWJsaW5nIil9LHByZXY6ZnVuY3Rpb24oYSl7cmV0dXJu
IEooYSwicHJldmlvdXNTaWJsaW5nIil9LG5leHRBbGw6ZnVuY3Rpb24oYSl7cmV0dXJuIHkoYSwi
bmV4dFNpYmxpbmciKX0scHJldkFsbDpmdW5jdGlvbihhKXtyZXR1cm4geShhLCJwcmV2aW91c1Np
YmxpbmciKX0sbmV4dFVudGlsOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4geShhLCJuZXh0U2libGlu
ZyIsYyl9LHByZXZVbnRpbDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHkoYSwicHJldmlvdXNTaWJs
aW5nIixjKX0sc2libGluZ3M6ZnVuY3Rpb24oYSl7cmV0dXJuIHooKGEucGFyZW50Tm9kZXx8e30p
LmZpcnN0Q2hpbGQsYSl9LGNoaWxkcmVuOmZ1bmN0aW9uKGEpe3JldHVybiB6KGEuZmlyc3RDaGls
ZCl9LGNvbnRlbnRzOmZ1bmN0aW9uKGEpe3JldHVybiBhLmNvbnRlbnREb2N1bWVudHx8ci5tZXJn
ZShbXSxhLmNoaWxkTm9kZXMpfX0sZnVuY3Rpb24oYSxiKXtyLmZuW2FdPWZ1bmN0aW9uKGMsZCl7
dmFyIGU9ci5tYXAodGhpcyxiLGMpO3JldHVybiJVbnRpbCIhPT1hLnNsaWNlKC01KSYmKGQ9Yyks
ZCYmInN0cmluZyI9PXR5cGVvZiBkJiYoZT1yLmZpbHRlcihkLGUpKSx0aGlzLmxlbmd0aD4xJiYo
SVthXXx8ci51bmlxdWVTb3J0KGUpLEgudGVzdChhKSYmZS5yZXZlcnNlKCkpLHRoaXMucHVzaFN0
YWNrKGUpfX0pO3ZhciBLPS9bXlx4MjBcdFxyXG5cZl0rL2c7ZnVuY3Rpb24gTChhKXt2YXIgYj17
fTtyZXR1cm4gci5lYWNoKGEubWF0Y2goSyl8fFtdLGZ1bmN0aW9uKGEsYyl7YltjXT0hMH0pLGJ9
ci5DYWxsYmFja3M9ZnVuY3Rpb24oYSl7YT0ic3RyaW5nIj09dHlwZW9mIGE/TChhKTpyLmV4dGVu
ZCh7fSxhKTt2YXIgYixjLGQsZSxmPVtdLGc9W10saD0tMSxpPWZ1bmN0aW9uKCl7Zm9yKGU9YS5v
bmNlLGQ9Yj0hMDtnLmxlbmd0aDtoPS0xKXtjPWcuc2hpZnQoKTt3aGlsZSgrK2g8Zi5sZW5ndGgp
ZltoXS5hcHBseShjWzBdLGNbMV0pPT09ITEmJmEuc3RvcE9uRmFsc2UmJihoPWYubGVuZ3RoLGM9
ITEpfWEubWVtb3J5fHwoYz0hMSksYj0hMSxlJiYoZj1jP1tdOiIiKX0saj17YWRkOmZ1bmN0aW9u
KCl7cmV0dXJuIGYmJihjJiYhYiYmKGg9Zi5sZW5ndGgtMSxnLnB1c2goYykpLGZ1bmN0aW9uIGQo
Yil7ci5lYWNoKGIsZnVuY3Rpb24oYixjKXtyLmlzRnVuY3Rpb24oYyk/YS51bmlxdWUmJmouaGFz
KGMpfHxmLnB1c2goYyk6YyYmYy5sZW5ndGgmJiJzdHJpbmciIT09ci50eXBlKGMpJiZkKGMpfSl9
KGFyZ3VtZW50cyksYyYmIWImJmkoKSksdGhpc30scmVtb3ZlOmZ1bmN0aW9uKCl7cmV0dXJuIHIu
ZWFjaChhcmd1bWVudHMsZnVuY3Rpb24oYSxiKXt2YXIgYzt3aGlsZSgoYz1yLmluQXJyYXkoYixm
LGMpKT4tMSlmLnNwbGljZShjLDEpLGM8PWgmJmgtLX0pLHRoaXN9LGhhczpmdW5jdGlvbihhKXty
ZXR1cm4gYT9yLmluQXJyYXkoYSxmKT4tMTpmLmxlbmd0aD4wfSxlbXB0eTpmdW5jdGlvbigpe3Jl
dHVybiBmJiYoZj1bXSksdGhpc30sZGlzYWJsZTpmdW5jdGlvbigpe3JldHVybiBlPWc9W10sZj1j
PSIiLHRoaXN9LGRpc2FibGVkOmZ1bmN0aW9uKCl7cmV0dXJuIWZ9LGxvY2s6ZnVuY3Rpb24oKXty
ZXR1cm4gZT1nPVtdLGN8fGJ8fChmPWM9IiIpLHRoaXN9LGxvY2tlZDpmdW5jdGlvbigpe3JldHVy
biEhZX0sZmlyZVdpdGg6ZnVuY3Rpb24oYSxjKXtyZXR1cm4gZXx8KGM9Y3x8W10sYz1bYSxjLnNs
aWNlP2Muc2xpY2UoKTpjXSxnLnB1c2goYyksYnx8aSgpKSx0aGlzfSxmaXJlOmZ1bmN0aW9uKCl7
cmV0dXJuIGouZmlyZVdpdGgodGhpcyxhcmd1bWVudHMpLHRoaXN9LGZpcmVkOmZ1bmN0aW9uKCl7
cmV0dXJuISFkfX07cmV0dXJuIGp9O2Z1bmN0aW9uIE0oYSl7cmV0dXJuIGF9ZnVuY3Rpb24gTihh
KXt0aHJvdyBhfWZ1bmN0aW9uIE8oYSxiLGMpe3ZhciBkO3RyeXthJiZyLmlzRnVuY3Rpb24oZD1h
LnByb21pc2UpP2QuY2FsbChhKS5kb25lKGIpLmZhaWwoYyk6YSYmci5pc0Z1bmN0aW9uKGQ9YS50
aGVuKT9kLmNhbGwoYSxiLGMpOmIuY2FsbCh2b2lkIDAsYSl9Y2F0Y2goYSl7Yy5jYWxsKHZvaWQg
MCxhKX19ci5leHRlbmQoe0RlZmVycmVkOmZ1bmN0aW9uKGIpe3ZhciBjPVtbIm5vdGlmeSIsInBy
b2dyZXNzIixyLkNhbGxiYWNrcygibWVtb3J5Iiksci5DYWxsYmFja3MoIm1lbW9yeSIpLDJdLFsi
cmVzb2x2ZSIsImRvbmUiLHIuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLHIuQ2FsbGJhY2tzKCJv
bmNlIG1lbW9yeSIpLDAsInJlc29sdmVkIl0sWyJyZWplY3QiLCJmYWlsIixyLkNhbGxiYWNrcygi
b25jZSBtZW1vcnkiKSxyLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwxLCJyZWplY3RlZCJdXSxk
PSJwZW5kaW5nIixlPXtzdGF0ZTpmdW5jdGlvbigpe3JldHVybiBkfSxhbHdheXM6ZnVuY3Rpb24o
KXtyZXR1cm4gZi5kb25lKGFyZ3VtZW50cykuZmFpbChhcmd1bWVudHMpLHRoaXN9LCJjYXRjaCI6
ZnVuY3Rpb24oYSl7cmV0dXJuIGUudGhlbihudWxsLGEpfSxwaXBlOmZ1bmN0aW9uKCl7dmFyIGE9
YXJndW1lbnRzO3JldHVybiByLkRlZmVycmVkKGZ1bmN0aW9uKGIpe3IuZWFjaChjLGZ1bmN0aW9u
KGMsZCl7dmFyIGU9ci5pc0Z1bmN0aW9uKGFbZFs0XV0pJiZhW2RbNF1dO2ZbZFsxXV0oZnVuY3Rp
b24oKXt2YXIgYT1lJiZlLmFwcGx5KHRoaXMsYXJndW1lbnRzKTthJiZyLmlzRnVuY3Rpb24oYS5w
cm9taXNlKT9hLnByb21pc2UoKS5wcm9ncmVzcyhiLm5vdGlmeSkuZG9uZShiLnJlc29sdmUpLmZh
aWwoYi5yZWplY3QpOmJbZFswXSsiV2l0aCJdKHRoaXMsZT9bYV06YXJndW1lbnRzKX0pfSksYT1u
dWxsfSkucHJvbWlzZSgpfSx0aGVuOmZ1bmN0aW9uKGIsZCxlKXt2YXIgZj0wO2Z1bmN0aW9uIGco
YixjLGQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGg9dGhpcyxpPWFyZ3VtZW50cyxqPWZ1bmN0
aW9uKCl7dmFyIGEsajtpZighKGI8Zikpe2lmKGE9ZC5hcHBseShoLGkpLGE9PT1jLnByb21pc2Uo
KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJUaGVuYWJsZSBzZWxmLXJlc29sdXRpb24iKTtqPWEmJigi
b2JqZWN0Ij09dHlwZW9mIGF8fCJmdW5jdGlvbiI9PXR5cGVvZiBhKSYmYS50aGVuLHIuaXNGdW5j
dGlvbihqKT9lP2ouY2FsbChhLGcoZixjLE0sZSksZyhmLGMsTixlKSk6KGYrKyxqLmNhbGwoYSxn
KGYsYyxNLGUpLGcoZixjLE4sZSksZyhmLGMsTSxjLm5vdGlmeVdpdGgpKSk6KGQhPT1NJiYoaD12
b2lkIDAsaT1bYV0pLChlfHxjLnJlc29sdmVXaXRoKShoLGkpKX19LGs9ZT9qOmZ1bmN0aW9uKCl7
dHJ5e2ooKX1jYXRjaChhKXtyLkRlZmVycmVkLmV4Y2VwdGlvbkhvb2smJnIuRGVmZXJyZWQuZXhj
ZXB0aW9uSG9vayhhLGsuc3RhY2tUcmFjZSksYisxPj1mJiYoZCE9PU4mJihoPXZvaWQgMCxpPVth
XSksYy5yZWplY3RXaXRoKGgsaSkpfX07Yj9rKCk6KHIuRGVmZXJyZWQuZ2V0U3RhY2tIb29rJiYo
ay5zdGFja1RyYWNlPXIuRGVmZXJyZWQuZ2V0U3RhY2tIb29rKCkpLGEuc2V0VGltZW91dChrKSl9
fXJldHVybiByLkRlZmVycmVkKGZ1bmN0aW9uKGEpe2NbMF1bM10uYWRkKGcoMCxhLHIuaXNGdW5j
dGlvbihlKT9lOk0sYS5ub3RpZnlXaXRoKSksY1sxXVszXS5hZGQoZygwLGEsci5pc0Z1bmN0aW9u
KGIpP2I6TSkpLGNbMl1bM10uYWRkKGcoMCxhLHIuaXNGdW5jdGlvbihkKT9kOk4pKX0pLnByb21p
c2UoKX0scHJvbWlzZTpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbCE9YT9yLmV4dGVuZChhLGUpOmV9
fSxmPXt9O3JldHVybiByLmVhY2goYyxmdW5jdGlvbihhLGIpe3ZhciBnPWJbMl0saD1iWzVdO2Vb
YlsxXV09Zy5hZGQsaCYmZy5hZGQoZnVuY3Rpb24oKXtkPWh9LGNbMy1hXVsyXS5kaXNhYmxlLGNb
MF1bMl0ubG9jayksZy5hZGQoYlszXS5maXJlKSxmW2JbMF1dPWZ1bmN0aW9uKCl7cmV0dXJuIGZb
YlswXSsiV2l0aCJdKHRoaXM9PT1mP3ZvaWQgMDp0aGlzLGFyZ3VtZW50cyksdGhpc30sZltiWzBd
KyJXaXRoIl09Zy5maXJlV2l0aH0pLGUucHJvbWlzZShmKSxiJiZiLmNhbGwoZixmKSxmfSx3aGVu
OmZ1bmN0aW9uKGEpe3ZhciBiPWFyZ3VtZW50cy5sZW5ndGgsYz1iLGQ9QXJyYXkoYyksZT1mLmNh
bGwoYXJndW1lbnRzKSxnPXIuRGVmZXJyZWQoKSxoPWZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlv
bihjKXtkW2FdPXRoaXMsZVthXT1hcmd1bWVudHMubGVuZ3RoPjE/Zi5jYWxsKGFyZ3VtZW50cyk6
YywtLWJ8fGcucmVzb2x2ZVdpdGgoZCxlKX19O2lmKGI8PTEmJihPKGEsZy5kb25lKGgoYykpLnJl
c29sdmUsZy5yZWplY3QpLCJwZW5kaW5nIj09PWcuc3RhdGUoKXx8ci5pc0Z1bmN0aW9uKGVbY10m
JmVbY10udGhlbikpKXJldHVybiBnLnRoZW4oKTt3aGlsZShjLS0pTyhlW2NdLGgoYyksZy5yZWpl
Y3QpO3JldHVybiBnLnByb21pc2UoKX19KTt2YXIgUD0vXihFdmFsfEludGVybmFsfFJhbmdlfFJl
ZmVyZW5jZXxTeW50YXh8VHlwZXxVUkkpRXJyb3IkLztyLkRlZmVycmVkLmV4Y2VwdGlvbkhvb2s9
ZnVuY3Rpb24oYixjKXthLmNvbnNvbGUmJmEuY29uc29sZS53YXJuJiZiJiZQLnRlc3QoYi5uYW1l
KSYmYS5jb25zb2xlLndhcm4oImpRdWVyeS5EZWZlcnJlZCBleGNlcHRpb246ICIrYi5tZXNzYWdl
LGIuc3RhY2ssYyl9LHIucmVhZHlFeGNlcHRpb249ZnVuY3Rpb24oYil7YS5zZXRUaW1lb3V0KGZ1
bmN0aW9uKCl7dGhyb3cgYn0pfTt2YXIgUT1yLkRlZmVycmVkKCk7ci5mbi5yZWFkeT1mdW5jdGlv
bihhKXtyZXR1cm4gUS50aGVuKGEpWyJjYXRjaCJdKGZ1bmN0aW9uKGEpe3IucmVhZHlFeGNlcHRp
b24oYSl9KSx0aGlzfSxyLmV4dGVuZCh7aXNSZWFkeTohMSxyZWFkeVdhaXQ6MSwKK2hvbGRSZWFk
eTpmdW5jdGlvbihhKXthP3IucmVhZHlXYWl0Kys6ci5yZWFkeSghMCl9LHJlYWR5OmZ1bmN0aW9u
KGEpeyhhPT09ITA/LS1yLnJlYWR5V2FpdDpyLmlzUmVhZHkpfHwoci5pc1JlYWR5PSEwLGEhPT0h
MCYmLS1yLnJlYWR5V2FpdD4wfHxRLnJlc29sdmVXaXRoKGQsW3JdKSl9fSksci5yZWFkeS50aGVu
PVEudGhlbjtmdW5jdGlvbiBSKCl7ZC5yZW1vdmVFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9h
ZGVkIixSKSxhLnJlbW92ZUV2ZW50TGlzdGVuZXIoImxvYWQiLFIpLHIucmVhZHkoKX0iY29tcGxl
dGUiPT09ZC5yZWFkeVN0YXRlfHwibG9hZGluZyIhPT1kLnJlYWR5U3RhdGUmJiFkLmRvY3VtZW50
RWxlbWVudC5kb1Njcm9sbD9hLnNldFRpbWVvdXQoci5yZWFkeSk6KGQuYWRkRXZlbnRMaXN0ZW5l
cigiRE9NQ29udGVudExvYWRlZCIsUiksYS5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixSKSk7dmFy
IFM9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyl7dmFyIGg9MCxpPWEubGVuZ3RoLGo9bnVsbD09Yztp
Zigib2JqZWN0Ij09PXIudHlwZShjKSl7ZT0hMDtmb3IoaCBpbiBjKVMoYSxiLGgsY1toXSwhMCxm
LGcpfWVsc2UgaWYodm9pZCAwIT09ZCYmKGU9ITAsci5pc0Z1bmN0aW9uKGQpfHwoZz0hMCksaiYm
KGc/KGIuY2FsbChhLGQpLGI9bnVsbCk6KGo9YixiPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gai5j
YWxsKHIoYSksYyl9KSksYikpZm9yKDtoPGk7aCsrKWIoYVtoXSxjLGc/ZDpkLmNhbGwoYVtoXSxo
LGIoYVtoXSxjKSkpO3JldHVybiBlP2E6aj9iLmNhbGwoYSk6aT9iKGFbMF0sYyk6Zn0sVD1mdW5j
dGlvbihhKXtyZXR1cm4gMT09PWEubm9kZVR5cGV8fDk9PT1hLm5vZGVUeXBlfHwhK2Eubm9kZVR5
cGV9O2Z1bmN0aW9uIFUoKXt0aGlzLmV4cGFuZG89ci5leHBhbmRvK1UudWlkKyt9VS51aWQ9MSxV
LnByb3RvdHlwZT17Y2FjaGU6ZnVuY3Rpb24oYSl7dmFyIGI9YVt0aGlzLmV4cGFuZG9dO3JldHVy
biBifHwoYj17fSxUKGEpJiYoYS5ub2RlVHlwZT9hW3RoaXMuZXhwYW5kb109YjpPYmplY3QuZGVm
aW5lUHJvcGVydHkoYSx0aGlzLmV4cGFuZG8se3ZhbHVlOmIsY29uZmlndXJhYmxlOiEwfSkpKSxi
fSxzZXQ6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGU9dGhpcy5jYWNoZShhKTtpZigic3RyaW5nIj09
dHlwZW9mIGIpZVtyLmNhbWVsQ2FzZShiKV09YztlbHNlIGZvcihkIGluIGIpZVtyLmNhbWVsQ2Fz
ZShkKV09YltkXTtyZXR1cm4gZX0sZ2V0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIHZvaWQgMD09PWI/
dGhpcy5jYWNoZShhKTphW3RoaXMuZXhwYW5kb10mJmFbdGhpcy5leHBhbmRvXVtyLmNhbWVsQ2Fz
ZShiKV19LGFjY2VzczpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHZvaWQgMD09PWJ8fGImJiJzdHJp
bmciPT10eXBlb2YgYiYmdm9pZCAwPT09Yz90aGlzLmdldChhLGIpOih0aGlzLnNldChhLGIsYyks
dm9pZCAwIT09Yz9jOmIpfSxyZW1vdmU6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPWFbdGhpcy5leHBh
bmRvXTtpZih2b2lkIDAhPT1kKXtpZih2b2lkIDAhPT1iKXtyLmlzQXJyYXkoYik/Yj1iLm1hcChy
LmNhbWVsQ2FzZSk6KGI9ci5jYW1lbENhc2UoYiksYj1iIGluIGQ/W2JdOmIubWF0Y2goSyl8fFtd
KSxjPWIubGVuZ3RoO3doaWxlKGMtLSlkZWxldGUgZFtiW2NdXX0odm9pZCAwPT09Ynx8ci5pc0Vt
cHR5T2JqZWN0KGQpKSYmKGEubm9kZVR5cGU/YVt0aGlzLmV4cGFuZG9dPXZvaWQgMDpkZWxldGUg
YVt0aGlzLmV4cGFuZG9dKX19LGhhc0RhdGE6ZnVuY3Rpb24oYSl7dmFyIGI9YVt0aGlzLmV4cGFu
ZG9dO3JldHVybiB2b2lkIDAhPT1iJiYhci5pc0VtcHR5T2JqZWN0KGIpfX07dmFyIFY9bmV3IFUs
Vz1uZXcgVSxYPS9eKD86XHtbXHdcV10qXH18XFtbXHdcV10qXF0pJC8sWT0vW0EtWl0vZztmdW5j
dGlvbiBaKGEpe3JldHVybiJ0cnVlIj09PWF8fCJmYWxzZSIhPT1hJiYoIm51bGwiPT09YT9udWxs
OmE9PT0rYSsiIj8rYTpYLnRlc3QoYSk/SlNPTi5wYXJzZShhKTphKX1mdW5jdGlvbiAkKGEsYixj
KXt2YXIgZDtpZih2b2lkIDA9PT1jJiYxPT09YS5ub2RlVHlwZSlpZihkPSJkYXRhLSIrYi5yZXBs
YWNlKFksIi0kJiIpLnRvTG93ZXJDYXNlKCksYz1hLmdldEF0dHJpYnV0ZShkKSwic3RyaW5nIj09
dHlwZW9mIGMpe3RyeXtjPVooYyl9Y2F0Y2goZSl7fVcuc2V0KGEsYixjKX1lbHNlIGM9dm9pZCAw
O3JldHVybiBjfXIuZXh0ZW5kKHtoYXNEYXRhOmZ1bmN0aW9uKGEpe3JldHVybiBXLmhhc0RhdGEo
YSl8fFYuaGFzRGF0YShhKX0sZGF0YTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIFcuYWNjZXNzKGEs
YixjKX0scmVtb3ZlRGF0YTpmdW5jdGlvbihhLGIpe1cucmVtb3ZlKGEsYil9LF9kYXRhOmZ1bmN0
aW9uKGEsYixjKXtyZXR1cm4gVi5hY2Nlc3MoYSxiLGMpfSxfcmVtb3ZlRGF0YTpmdW5jdGlvbihh
LGIpe1YucmVtb3ZlKGEsYil9fSksci5mbi5leHRlbmQoe2RhdGE6ZnVuY3Rpb24oYSxiKXt2YXIg
YyxkLGUsZj10aGlzWzBdLGc9ZiYmZi5hdHRyaWJ1dGVzO2lmKHZvaWQgMD09PWEpe2lmKHRoaXMu
bGVuZ3RoJiYoZT1XLmdldChmKSwxPT09Zi5ub2RlVHlwZSYmIVYuZ2V0KGYsImhhc0RhdGFBdHRy
cyIpKSl7Yz1nLmxlbmd0aDt3aGlsZShjLS0pZ1tjXSYmKGQ9Z1tjXS5uYW1lLDA9PT1kLmluZGV4
T2YoImRhdGEtIikmJihkPXIuY2FtZWxDYXNlKGQuc2xpY2UoNSkpLCQoZixkLGVbZF0pKSk7Vi5z
ZXQoZiwiaGFzRGF0YUF0dHJzIiwhMCl9cmV0dXJuIGV9cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBh
P3RoaXMuZWFjaChmdW5jdGlvbigpe1cuc2V0KHRoaXMsYSl9KTpTKHRoaXMsZnVuY3Rpb24oYil7
dmFyIGM7aWYoZiYmdm9pZCAwPT09Yil7aWYoYz1XLmdldChmLGEpLHZvaWQgMCE9PWMpcmV0dXJu
IGM7aWYoYz0kKGYsYSksdm9pZCAwIT09YylyZXR1cm4gY31lbHNlIHRoaXMuZWFjaChmdW5jdGlv
bigpe1cuc2V0KHRoaXMsYSxiKX0pfSxudWxsLGIsYXJndW1lbnRzLmxlbmd0aD4xLG51bGwsITAp
fSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtXLnJl
bW92ZSh0aGlzLGEpfSl9fSksci5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9uKGEsYixjKXt2YXIgZDtp
ZihhKXJldHVybiBiPShifHwiZngiKSsicXVldWUiLGQ9Vi5nZXQoYSxiKSxjJiYoIWR8fHIuaXNB
cnJheShjKT9kPVYuYWNjZXNzKGEsYixyLm1ha2VBcnJheShjKSk6ZC5wdXNoKGMpKSxkfHxbXX0s
ZGVxdWV1ZTpmdW5jdGlvbihhLGIpe2I9Ynx8ImZ4Ijt2YXIgYz1yLnF1ZXVlKGEsYiksZD1jLmxl
bmd0aCxlPWMuc2hpZnQoKSxmPXIuX3F1ZXVlSG9va3MoYSxiKSxnPWZ1bmN0aW9uKCl7ci5kZXF1
ZXVlKGEsYil9OyJpbnByb2dyZXNzIj09PWUmJihlPWMuc2hpZnQoKSxkLS0pLGUmJigiZngiPT09
YiYmYy51bnNoaWZ0KCJpbnByb2dyZXNzIiksZGVsZXRlIGYuc3RvcCxlLmNhbGwoYSxnLGYpKSwh
ZCYmZiYmZi5lbXB0eS5maXJlKCl9LF9xdWV1ZUhvb2tzOmZ1bmN0aW9uKGEsYil7dmFyIGM9Yisi
cXVldWVIb29rcyI7cmV0dXJuIFYuZ2V0KGEsYyl8fFYuYWNjZXNzKGEsYyx7ZW1wdHk6ci5DYWxs
YmFja3MoIm9uY2UgbWVtb3J5IikuYWRkKGZ1bmN0aW9uKCl7Vi5yZW1vdmUoYSxbYisicXVldWUi
LGNdKX0pfSl9fSksci5mbi5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9uKGEsYil7dmFyIGM9MjtyZXR1
cm4ic3RyaW5nIiE9dHlwZW9mIGEmJihiPWEsYT0iZngiLGMtLSksYXJndW1lbnRzLmxlbmd0aDxj
P3IucXVldWUodGhpc1swXSxhKTp2b2lkIDA9PT1iP3RoaXM6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7
dmFyIGM9ci5xdWV1ZSh0aGlzLGEsYik7ci5fcXVldWVIb29rcyh0aGlzLGEpLCJmeCI9PT1hJiYi
aW5wcm9ncmVzcyIhPT1jWzBdJiZyLmRlcXVldWUodGhpcyxhKX0pfSxkZXF1ZXVlOmZ1bmN0aW9u
KGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtyLmRlcXVldWUodGhpcyxhKX0pfSxjbGVh
clF1ZXVlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnF1ZXVlKGF8fCJmeCIsW10pfSxwcm9taXNl
OmZ1bmN0aW9uKGEsYil7dmFyIGMsZD0xLGU9ci5EZWZlcnJlZCgpLGY9dGhpcyxnPXRoaXMubGVu
Z3RoLGg9ZnVuY3Rpb24oKXstLWR8fGUucmVzb2x2ZVdpdGgoZixbZl0pfTsic3RyaW5nIiE9dHlw
ZW9mIGEmJihiPWEsYT12b2lkIDApLGE9YXx8ImZ4Ijt3aGlsZShnLS0pYz1WLmdldChmW2ddLGEr
InF1ZXVlSG9va3MiKSxjJiZjLmVtcHR5JiYoZCsrLGMuZW1wdHkuYWRkKGgpKTtyZXR1cm4gaCgp
LGUucHJvbWlzZShiKX19KTt2YXIgXz0vWystXT8oPzpcZCpcLnwpXGQrKD86W2VFXVsrLV0/XGQr
fCkvLnNvdXJjZSxhYT1uZXcgUmVnRXhwKCJeKD86KFsrLV0pPXwpKCIrXysiKShbYS16JV0qKSQi
LCJpIiksYmE9WyJUb3AiLCJSaWdodCIsIkJvdHRvbSIsIkxlZnQiXSxjYT1mdW5jdGlvbihhLGIp
e3JldHVybiBhPWJ8fGEsIm5vbmUiPT09YS5zdHlsZS5kaXNwbGF5fHwiIj09PWEuc3R5bGUuZGlz
cGxheSYmci5jb250YWlucyhhLm93bmVyRG9jdW1lbnQsYSkmJiJub25lIj09PXIuY3NzKGEsImRp
c3BsYXkiKX0sZGE9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGUsZixnPXt9O2ZvcihmIGluIGIpZ1tm
XT1hLnN0eWxlW2ZdLGEuc3R5bGVbZl09YltmXTtlPWMuYXBwbHkoYSxkfHxbXSk7Zm9yKGYgaW4g
YilhLnN0eWxlW2ZdPWdbZl07cmV0dXJuIGV9O2Z1bmN0aW9uIGVhKGEsYixjLGQpe3ZhciBlLGY9
MSxnPTIwLGg9ZD9mdW5jdGlvbigpe3JldHVybiBkLmN1cigpfTpmdW5jdGlvbigpe3JldHVybiBy
LmNzcyhhLGIsIiIpfSxpPWgoKSxqPWMmJmNbM118fChyLmNzc051bWJlcltiXT8iIjoicHgiKSxr
PShyLmNzc051bWJlcltiXXx8InB4IiE9PWomJitpKSYmYWEuZXhlYyhyLmNzcyhhLGIpKTtpZihr
JiZrWzNdIT09ail7aj1qfHxrWzNdLGM9Y3x8W10saz0raXx8MTtkbyBmPWZ8fCIuNSIsay89Zixy
LnN0eWxlKGEsYixrK2opO3doaWxlKGYhPT0oZj1oKCkvaSkmJjEhPT1mJiYtLWcpfXJldHVybiBj
JiYoaz0ra3x8K2l8fDAsZT1jWzFdP2srKGNbMV0rMSkqY1syXTorY1syXSxkJiYoZC51bml0PWos
ZC5zdGFydD1rLGQuZW5kPWUpKSxlfXZhciBmYT17fTtmdW5jdGlvbiBnYShhKXt2YXIgYixjPWEu
b3duZXJEb2N1bWVudCxkPWEubm9kZU5hbWUsZT1mYVtkXTtyZXR1cm4gZT9lOihiPWMuYm9keS5h
cHBlbmRDaGlsZChjLmNyZWF0ZUVsZW1lbnQoZCkpLGU9ci5jc3MoYiwiZGlzcGxheSIpLGIucGFy
ZW50Tm9kZS5yZW1vdmVDaGlsZChiKSwibm9uZSI9PT1lJiYoZT0iYmxvY2siKSxmYVtkXT1lLGUp
fWZ1bmN0aW9uIGhhKGEsYil7Zm9yKHZhciBjLGQsZT1bXSxmPTAsZz1hLmxlbmd0aDtmPGc7Zisr
KWQ9YVtmXSxkLnN0eWxlJiYoYz1kLnN0eWxlLmRpc3BsYXksYj8oIm5vbmUiPT09YyYmKGVbZl09
Vi5nZXQoZCwiZGlzcGxheSIpfHxudWxsLGVbZl18fChkLnN0eWxlLmRpc3BsYXk9IiIpKSwiIj09
PWQuc3R5bGUuZGlzcGxheSYmY2EoZCkmJihlW2ZdPWdhKGQpKSk6Im5vbmUiIT09YyYmKGVbZl09
Im5vbmUiLFYuc2V0KGQsImRpc3BsYXkiLGMpKSk7Zm9yKGY9MDtmPGc7ZisrKW51bGwhPWVbZl0m
JihhW2ZdLnN0eWxlLmRpc3BsYXk9ZVtmXSk7cmV0dXJuIGF9ci5mbi5leHRlbmQoe3Nob3c6ZnVu
Y3Rpb24oKXtyZXR1cm4gaGEodGhpcywhMCl9LGhpZGU6ZnVuY3Rpb24oKXtyZXR1cm4gaGEodGhp
cyl9LHRvZ2dsZTpmdW5jdGlvbihhKXtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiBhP2E/dGhpcy5z
aG93KCk6dGhpcy5oaWRlKCk6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7Y2EodGhpcyk/cih0aGlzKS5z
aG93KCk6cih0aGlzKS5oaWRlKCl9KX19KTt2YXIgaWE9L14oPzpjaGVja2JveHxyYWRpbykkL2ks
amE9LzwoW2Etel1bXlwvXDA+XHgyMFx0XHJcblxmXSspL2ksa2E9L14kfFwvKD86amF2YXxlY21h
KXNjcmlwdC9pLGxhPXtvcHRpb246WzEsIjxzZWxlY3QgbXVsdGlwbGU9J211bHRpcGxlJz4iLCI8
L3NlbGVjdD4iXSx0aGVhZDpbMSwiPHRhYmxlPiIsIjwvdGFibGU+Il0sY29sOlsyLCI8dGFibGU+
PGNvbGdyb3VwPiIsIjwvY29sZ3JvdXA+PC90YWJsZT4iXSx0cjpbMiwiPHRhYmxlPjx0Ym9keT4i
LCI8L3Rib2R5PjwvdGFibGU+Il0sdGQ6WzMsIjx0YWJsZT48dGJvZHk+PHRyPiIsIjwvdHI+PC90
Ym9keT48L3RhYmxlPiJdLF9kZWZhdWx0OlswLCIiLCIiXX07bGEub3B0Z3JvdXA9bGEub3B0aW9u
LGxhLnRib2R5PWxhLnRmb290PWxhLmNvbGdyb3VwPWxhLmNhcHRpb249bGEudGhlYWQsbGEudGg9
bGEudGQ7ZnVuY3Rpb24gbWEoYSxiKXt2YXIgYztyZXR1cm4gYz0idW5kZWZpbmVkIiE9dHlwZW9m
IGEuZ2V0RWxlbWVudHNCeVRhZ05hbWU/YS5nZXRFbGVtZW50c0J5VGFnTmFtZShifHwiKiIpOiJ1
bmRlZmluZWQiIT10eXBlb2YgYS5xdWVyeVNlbGVjdG9yQWxsP2EucXVlcnlTZWxlY3RvckFsbChi
fHwiKiIpOltdLHZvaWQgMD09PWJ8fGImJnIubm9kZU5hbWUoYSxiKT9yLm1lcmdlKFthXSxjKTpj
fWZ1bmN0aW9uIG5hKGEsYil7Zm9yKHZhciBjPTAsZD1hLmxlbmd0aDtjPGQ7YysrKVYuc2V0KGFb
Y10sImdsb2JhbEV2YWwiLCFifHxWLmdldChiW2NdLCJnbG9iYWxFdmFsIikpfXZhciBvYT0vPHwm
Iz9cdys7LztmdW5jdGlvbiBwYShhLGIsYyxkLGUpe2Zvcih2YXIgZixnLGgsaSxqLGssbD1iLmNy
ZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxtPVtdLG49MCxvPWEubGVuZ3RoO248bztuKyspaWYoZj1h
W25dLGZ8fDA9PT1mKWlmKCJvYmplY3QiPT09ci50eXBlKGYpKXIubWVyZ2UobSxmLm5vZGVUeXBl
P1tmXTpmKTtlbHNlIGlmKG9hLnRlc3QoZikpe2c9Z3x8bC5hcHBlbmRDaGlsZChiLmNyZWF0ZUVs
ZW1lbnQoImRpdiIpKSxoPShqYS5leGVjKGYpfHxbIiIsIiJdKVsxXS50b0xvd2VyQ2FzZSgpLGk9
bGFbaF18fGxhLl9kZWZhdWx0LGcuaW5uZXJIVE1MPWlbMV0rci5odG1sUHJlZmlsdGVyKGYpK2lb
Ml0saz1pWzBdO3doaWxlKGstLSlnPWcubGFzdENoaWxkO3IubWVyZ2UobSxnLmNoaWxkTm9kZXMp
LGc9bC5maXJzdENoaWxkLGcudGV4dENvbnRlbnQ9IiJ9ZWxzZSBtLnB1c2goYi5jcmVhdGVUZXh0
Tm9kZShmKSk7bC50ZXh0Q29udGVudD0iIixuPTA7d2hpbGUoZj1tW24rK10paWYoZCYmci5pbkFy
cmF5KGYsZCk+LTEpZSYmZS5wdXNoKGYpO2Vsc2UgaWYoaj1yLmNvbnRhaW5zKGYub3duZXJEb2N1
bWVudCxmKSxnPW1hKGwuYXBwZW5kQ2hpbGQoZiksInNjcmlwdCIpLGomJm5hKGcpLGMpe2s9MDt3
aGlsZShmPWdbaysrXSlrYS50ZXN0KGYudHlwZXx8IiIpJiZjLnB1c2goZil9cmV0dXJuIGx9IWZ1
bmN0aW9uKCl7dmFyIGE9ZC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksYj1hLmFwcGVuZENoaWxk
KGQuY3JlYXRlRWxlbWVudCgiZGl2IikpLGM9ZC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO2Muc2V0
QXR0cmlidXRlKCJ0eXBlIiwicmFkaW8iKSxjLnNldEF0dHJpYnV0ZSgiY2hlY2tlZCIsImNoZWNr
ZWQiKSxjLnNldEF0dHJpYnV0ZSgibmFtZSIsInQiKSxiLmFwcGVuZENoaWxkKGMpLG8uY2hlY2tD
bG9uZT1iLmNsb25lTm9kZSghMCkuY2xvbmVOb2RlKCEwKS5sYXN0Q2hpbGQuY2hlY2tlZCxiLmlu
bmVySFRNTD0iPHRleHRhcmVhPng8L3RleHRhcmVhPiIsby5ub0Nsb25lQ2hlY2tlZD0hIWIuY2xv
bmVOb2RlKCEwKS5sYXN0Q2hpbGQuZGVmYXVsdFZhbHVlfSgpO3ZhciBxYT1kLmRvY3VtZW50RWxl
bWVudCxyYT0vXmtleS8sc2E9L14oPzptb3VzZXxwb2ludGVyfGNvbnRleHRtZW51fGRyYWd8ZHJv
cCl8Y2xpY2svLHRhPS9eKFteLl0qKSg/OlwuKC4rKXwpLztmdW5jdGlvbiB1YSgpe3JldHVybiEw
fWZ1bmN0aW9uIHZhKCl7cmV0dXJuITF9ZnVuY3Rpb24gd2EoKXt0cnl7cmV0dXJuIGQuYWN0aXZl
RWxlbWVudH1jYXRjaChhKXt9fWZ1bmN0aW9uIHhhKGEsYixjLGQsZSxmKXt2YXIgZyxoO2lmKCJv
YmplY3QiPT10eXBlb2YgYil7InN0cmluZyIhPXR5cGVvZiBjJiYoZD1kfHxjLGM9dm9pZCAwKTtm
b3IoaCBpbiBiKXhhKGEsaCxjLGQsYltoXSxmKTtyZXR1cm4gYX1pZihudWxsPT1kJiZudWxsPT1l
PyhlPWMsZD1jPXZvaWQgMCk6bnVsbD09ZSYmKCJzdHJpbmciPT10eXBlb2YgYz8oZT1kLGQ9dm9p
ZCAwKTooZT1kLGQ9YyxjPXZvaWQgMCkpLGU9PT0hMSllPXZhO2Vsc2UgaWYoIWUpcmV0dXJuIGE7
cmV0dXJuIDE9PT1mJiYoZz1lLGU9ZnVuY3Rpb24oYSl7cmV0dXJuIHIoKS5vZmYoYSksZy5hcHBs
eSh0aGlzLGFyZ3VtZW50cyl9LGUuZ3VpZD1nLmd1aWR8fChnLmd1aWQ9ci5ndWlkKyspKSxhLmVh
Y2goZnVuY3Rpb24oKXtyLmV2ZW50LmFkZCh0aGlzLGIsZSxkLGMpfSl9ci5ldmVudD17Z2xvYmFs
Ont9LGFkZDpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmLGcsaCxpLGosayxsLG0sbixvLHAscT1W
LmdldChhKTtpZihxKXtjLmhhbmRsZXImJihmPWMsYz1mLmhhbmRsZXIsZT1mLnNlbGVjdG9yKSxl
JiZyLmZpbmQubWF0Y2hlc1NlbGVjdG9yKHFhLGUpLGMuZ3VpZHx8KGMuZ3VpZD1yLmd1aWQrKyks
KGk9cS5ldmVudHMpfHwoaT1xLmV2ZW50cz17fSksKGc9cS5oYW5kbGUpfHwoZz1xLmhhbmRsZT1m
dW5jdGlvbihiKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIHImJnIuZXZlbnQudHJpZ2dlcmVk
IT09Yi50eXBlP3IuZXZlbnQuZGlzcGF0Y2guYXBwbHkoYSxhcmd1bWVudHMpOnZvaWQgMH0pLGI9
KGJ8fCIiKS5tYXRjaChLKXx8WyIiXSxqPWIubGVuZ3RoO3doaWxlKGotLSloPXRhLmV4ZWMoYltq
XSl8fFtdLG49cD1oWzFdLG89KGhbMl18fCIiKS5zcGxpdCgiLiIpLnNvcnQoKSxuJiYobD1yLmV2
ZW50LnNwZWNpYWxbbl18fHt9LG49KGU/bC5kZWxlZ2F0ZVR5cGU6bC5iaW5kVHlwZSl8fG4sbD1y
LmV2ZW50LnNwZWNpYWxbbl18fHt9LGs9ci5leHRlbmQoe3R5cGU6bixvcmlnVHlwZTpwLGRhdGE6
ZCxoYW5kbGVyOmMsZ3VpZDpjLmd1aWQsc2VsZWN0b3I6ZSxuZWVkc0NvbnRleHQ6ZSYmci5leHBy
Lm1hdGNoLm5lZWRzQ29udGV4dC50ZXN0KGUpLG5hbWVzcGFjZTpvLmpvaW4oIi4iKX0sZiksKG09
aVtuXSl8fChtPWlbbl09W10sbS5kZWxlZ2F0ZUNvdW50PTAsbC5zZXR1cCYmbC5zZXR1cC5jYWxs
KGEsZCxvLGcpIT09ITF8fGEuYWRkRXZlbnRMaXN0ZW5lciYmYS5hZGRFdmVudExpc3RlbmVyKG4s
ZykpLGwuYWRkJiYobC5hZGQuY2FsbChhLGspLGsuaGFuZGxlci5ndWlkfHwoay5oYW5kbGVyLmd1
aWQ9Yy5ndWlkKSksZT9tLnNwbGljZShtLmRlbGVnYXRlQ291bnQrKywwLGspOm0ucHVzaChrKSxy
LmV2ZW50Lmdsb2JhbFtuXT0hMCl9fSxyZW1vdmU6ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZixn
LGgsaSxqLGssbCxtLG4sbyxwLHE9Vi5oYXNEYXRhKGEpJiZWLmdldChhKTtpZihxJiYoaT1xLmV2
ZW50cykpe2I9KGJ8fCIiKS5tYXRjaChLKXx8WyIiXSxqPWIubGVuZ3RoO3doaWxlKGotLSlpZiho
PXRhLmV4ZWMoYltqXSl8fFtdLG49cD1oWzFdLG89KGhbMl18fCIiKS5zcGxpdCgiLiIpLnNvcnQo
KSxuKXtsPXIuZXZlbnQuc3BlY2lhbFtuXXx8e30sbj0oZD9sLmRlbGVnYXRlVHlwZTpsLmJpbmRU
eXBlKXx8bixtPWlbbl18fFtdLGg9aFsyXSYmbmV3IFJlZ0V4cCgiKF58XFwuKSIrby5qb2luKCJc
XC4oPzouKlxcLnwpIikrIihcXC58JCkiKSxnPWY9bS5sZW5ndGg7d2hpbGUoZi0tKWs9bVtmXSwh
ZSYmcCE9PWsub3JpZ1R5cGV8fGMmJmMuZ3VpZCE9PWsuZ3VpZHx8aCYmIWgudGVzdChrLm5hbWVz
cGFjZSl8fGQmJmQhPT1rLnNlbGVjdG9yJiYoIioqIiE9PWR8fCFrLnNlbGVjdG9yKXx8KG0uc3Bs
aWNlKGYsMSksay5zZWxlY3RvciYmbS5kZWxlZ2F0ZUNvdW50LS0sbC5yZW1vdmUmJmwucmVtb3Zl
LmNhbGwoYSxrKSk7ZyYmIW0ubGVuZ3RoJiYobC50ZWFyZG93biYmbC50ZWFyZG93bi5jYWxsKGEs
byxxLmhhbmRsZSkhPT0hMXx8ci5yZW1vdmVFdmVudChhLG4scS5oYW5kbGUpLGRlbGV0ZSBpW25d
KX1lbHNlIGZvcihuIGluIGkpci5ldmVudC5yZW1vdmUoYSxuK2Jbal0sYyxkLCEwKTtyLmlzRW1w
dHlPYmplY3QoaSkmJlYucmVtb3ZlKGEsImhhbmRsZSBldmVudHMiKX19LGRpc3BhdGNoOmZ1bmN0
aW9uKGEpe3ZhciBiPXIuZXZlbnQuZml4KGEpLGMsZCxlLGYsZyxoLGk9bmV3IEFycmF5KGFyZ3Vt
ZW50cy5sZW5ndGgpLGo9KFYuZ2V0KHRoaXMsImV2ZW50cyIpfHx7fSlbYi50eXBlXXx8W10saz1y
LmV2ZW50LnNwZWNpYWxbYi50eXBlXXx8e307Zm9yKGlbMF09YixjPTE7Yzxhcmd1bWVudHMubGVu
Z3RoO2MrKylpW2NdPWFyZ3VtZW50c1tjXTtpZihiLmRlbGVnYXRlVGFyZ2V0PXRoaXMsIWsucHJl
RGlzcGF0Y2h8fGsucHJlRGlzcGF0Y2guY2FsbCh0aGlzLGIpIT09ITEpe2g9ci5ldmVudC5oYW5k
bGVycy5jYWxsKHRoaXMsYixqKSxjPTA7d2hpbGUoKGY9aFtjKytdKSYmIWIuaXNQcm9wYWdhdGlv
blN0b3BwZWQoKSl7Yi5jdXJyZW50VGFyZ2V0PWYuZWxlbSxkPTA7d2hpbGUoKGc9Zi5oYW5kbGVy
c1tkKytdKSYmIWIuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQoKSliLnJuYW1lc3BhY2Um
JiFiLnJuYW1lc3BhY2UudGVzdChnLm5hbWVzcGFjZSl8fChiLmhhbmRsZU9iaj1nLGIuZGF0YT1n
LmRhdGEsZT0oKHIuZXZlbnQuc3BlY2lhbFtnLm9yaWdUeXBlXXx8e30pLmhhbmRsZXx8Zy5oYW5k
bGVyKS5hcHBseShmLmVsZW0saSksdm9pZCAwIT09ZSYmKGIucmVzdWx0PWUpPT09ITEmJihiLnBy
ZXZlbnREZWZhdWx0KCksYi5zdG9wUHJvcGFnYXRpb24oKSkpfXJldHVybiBrLnBvc3REaXNwYXRj
aCYmay5wb3N0RGlzcGF0Y2guY2FsbCh0aGlzLGIpLGIucmVzdWx0fX0saGFuZGxlcnM6ZnVuY3Rp
b24oYSxiKXt2YXIgYyxkLGUsZixnLGg9W10saT1iLmRlbGVnYXRlQ291bnQsaj1hLnRhcmdldDtp
ZihpJiZqLm5vZGVUeXBlJiYhKCJjbGljayI9PT1hLnR5cGUmJmEuYnV0dG9uPj0xKSlmb3IoO2oh
PT10aGlzO2o9ai5wYXJlbnROb2RlfHx0aGlzKWlmKDE9PT1qLm5vZGVUeXBlJiYoImNsaWNrIiE9
PWEudHlwZXx8ai5kaXNhYmxlZCE9PSEwKSl7Zm9yKGY9W10sZz17fSxjPTA7YzxpO2MrKylkPWJb
Y10sZT1kLnNlbGVjdG9yKyIgIix2b2lkIDA9PT1nW2VdJiYoZ1tlXT1kLm5lZWRzQ29udGV4dD9y
KGUsdGhpcykuaW5kZXgoaik+LTE6ci5maW5kKGUsdGhpcyxudWxsLFtqXSkubGVuZ3RoKSxnW2Vd
JiZmLnB1c2goZCk7Zi5sZW5ndGgmJmgucHVzaCh7ZWxlbTpqLGhhbmRsZXJzOmZ9KX1yZXR1cm4g
aj10aGlzLGk8Yi5sZW5ndGgmJmgucHVzaCh7ZWxlbTpqLGhhbmRsZXJzOmIuc2xpY2UoaSl9KSxo
fSxhZGRQcm9wOmZ1bmN0aW9uKGEsYil7T2JqZWN0LmRlZmluZVByb3BlcnR5KHIuRXZlbnQucHJv
dG90eXBlLGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDpyLmlzRnVuY3Rpb24o
Yik/ZnVuY3Rpb24oKXtpZih0aGlzLm9yaWdpbmFsRXZlbnQpcmV0dXJuIGIodGhpcy5vcmlnaW5h
bEV2ZW50KX06ZnVuY3Rpb24oKXtpZih0aGlzLm9yaWdpbmFsRXZlbnQpcmV0dXJuIHRoaXMub3Jp
Z2luYWxFdmVudFthXX0sc2V0OmZ1bmN0aW9uKGIpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlz
LGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmJ9KX19
KX0sZml4OmZ1bmN0aW9uKGEpe3JldHVybiBhW3IuZXhwYW5kb10/YTpuZXcgci5FdmVudChhKX0s
c3BlY2lhbDp7bG9hZDp7bm9CdWJibGU6ITB9LGZvY3VzOnt0cmlnZ2VyOmZ1bmN0aW9uKCl7aWYo
dGhpcyE9PXdhKCkmJnRoaXMuZm9jdXMpcmV0dXJuIHRoaXMuZm9jdXMoKSwhMX0sZGVsZWdhdGVU
eXBlOiJmb2N1c2luIn0sYmx1cjp7dHJpZ2dlcjpmdW5jdGlvbigpe2lmKHRoaXM9PT13YSgpJiZ0
aGlzLmJsdXIpcmV0dXJuIHRoaXMuYmx1cigpLCExfSxkZWxlZ2F0ZVR5cGU6ImZvY3Vzb3V0In0s
Y2xpY2s6e3RyaWdnZXI6ZnVuY3Rpb24oKXtpZigiY2hlY2tib3giPT09dGhpcy50eXBlJiZ0aGlz
LmNsaWNrJiZyLm5vZGVOYW1lKHRoaXMsImlucHV0IikpcmV0dXJuIHRoaXMuY2xpY2soKSwhMX0s
X2RlZmF1bHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIHIubm9kZU5hbWUoYS50YXJnZXQsImEiKX19LGJl
Zm9yZXVubG9hZDp7cG9zdERpc3BhdGNoOmZ1bmN0aW9uKGEpe3ZvaWQgMCE9PWEucmVzdWx0JiZh
Lm9yaWdpbmFsRXZlbnQmJihhLm9yaWdpbmFsRXZlbnQucmV0dXJuVmFsdWU9YS5yZXN1bHQpfX19
fSxyLnJlbW92ZUV2ZW50PWZ1bmN0aW9uKGEsYixjKXthLnJlbW92ZUV2ZW50TGlzdGVuZXImJmEu
cmVtb3ZlRXZlbnRMaXN0ZW5lcihiLGMpfSxyLkV2ZW50PWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRo
aXMgaW5zdGFuY2VvZiByLkV2ZW50PyhhJiZhLnR5cGU/KHRoaXMub3JpZ2luYWxFdmVudD1hLHRo
aXMudHlwZT1hLnR5cGUsdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9YS5kZWZhdWx0UHJldmVudGVk
fHx2b2lkIDA9PT1hLmRlZmF1bHRQcmV2ZW50ZWQmJmEucmV0dXJuVmFsdWU9PT0hMT91YTp2YSx0
aGlzLnRhcmdldD1hLnRhcmdldCYmMz09PWEudGFyZ2V0Lm5vZGVUeXBlP2EudGFyZ2V0LnBhcmVu
dE5vZGU6YS50YXJnZXQsdGhpcy5jdXJyZW50VGFyZ2V0PWEuY3VycmVudFRhcmdldCx0aGlzLnJl
bGF0ZWRUYXJnZXQ9YS5yZWxhdGVkVGFyZ2V0KTp0aGlzLnR5cGU9YSxiJiZyLmV4dGVuZCh0aGlz
LGIpLHRoaXMudGltZVN0YW1wPWEmJmEudGltZVN0YW1wfHxyLm5vdygpLHZvaWQodGhpc1tyLmV4
cGFuZG9dPSEwKSk6bmV3IHIuRXZlbnQoYSxiKX0sci5FdmVudC5wcm90b3R5cGU9e2NvbnN0cnVj
dG9yOnIuRXZlbnQsaXNEZWZhdWx0UHJldmVudGVkOnZhLGlzUHJvcGFnYXRpb25TdG9wcGVkOnZh
LGlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkOnZhLGlzU2ltdWxhdGVkOiExLHByZXZlbnRE
ZWZhdWx0OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNEZWZhdWx0
UHJldmVudGVkPXVhLGEmJiF0aGlzLmlzU2ltdWxhdGVkJiZhLnByZXZlbnREZWZhdWx0KCl9LHN0
b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3ZhciBhPXRoaXMub3JpZ2luYWxFdmVudDt0aGlzLmlz
UHJvcGFnYXRpb25TdG9wcGVkPXVhLGEmJiF0aGlzLmlzU2ltdWxhdGVkJiZhLnN0b3BQcm9wYWdh
dGlvbigpfSxzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9y
aWdpbmFsRXZlbnQ7dGhpcy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZD11YSxhJiYhdGhp
cy5pc1NpbXVsYXRlZCYmYS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSx0aGlzLnN0b3BQcm9w
YWdhdGlvbigpfX0sci5lYWNoKHthbHRLZXk6ITAsYnViYmxlczohMCxjYW5jZWxhYmxlOiEwLGNo
YW5nZWRUb3VjaGVzOiEwLGN0cmxLZXk6ITAsZGV0YWlsOiEwLGV2ZW50UGhhc2U6ITAsbWV0YUtl
eTohMCxwYWdlWDohMCxwYWdlWTohMCxzaGlmdEtleTohMCx2aWV3OiEwLCJjaGFyIjohMCxjaGFy
Q29kZTohMCxrZXk6ITAsa2V5Q29kZTohMCxidXR0b246ITAsYnV0dG9uczohMCxjbGllbnRYOiEw
LGNsaWVudFk6ITAsb2Zmc2V0WDohMCxvZmZzZXRZOiEwLHBvaW50ZXJJZDohMCxwb2ludGVyVHlw
ZTohMCxzY3JlZW5YOiEwLHNjcmVlblk6ITAsdGFyZ2V0VG91Y2hlczohMCx0b0VsZW1lbnQ6ITAs
dG91Y2hlczohMCx3aGljaDpmdW5jdGlvbihhKXt2YXIgYj1hLmJ1dHRvbjtyZXR1cm4gbnVsbD09
YS53aGljaCYmcmEudGVzdChhLnR5cGUpP251bGwhPWEuY2hhckNvZGU/YS5jaGFyQ29kZTphLmtl
eUNvZGU6IWEud2hpY2gmJnZvaWQgMCE9PWImJnNhLnRlc3QoYS50eXBlKT8xJmI/MToyJmI/Mzo0
JmI/MjowOmEud2hpY2h9fSxyLmV2ZW50LmFkZFByb3ApLHIuZWFjaCh7bW91c2VlbnRlcjoibW91
c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCIscG9pbnRlcmVudGVyOiJwb2ludGVyb3ZlciIs
cG9pbnRlcmxlYXZlOiJwb2ludGVyb3V0In0sZnVuY3Rpb24oYSxiKXtyLmV2ZW50LnNwZWNpYWxb
YV09e2RlbGVnYXRlVHlwZTpiLGJpbmRUeXBlOmIsaGFuZGxlOmZ1bmN0aW9uKGEpe3ZhciBjLGQ9
dGhpcyxlPWEucmVsYXRlZFRhcmdldCxmPWEuaGFuZGxlT2JqO3JldHVybiBlJiYoZT09PWR8fHIu
Y29udGFpbnMoZCxlKSl8fChhLnR5cGU9Zi5vcmlnVHlwZSxjPWYuaGFuZGxlci5hcHBseSh0aGlz
LGFyZ3VtZW50cyksYS50eXBlPWIpLGN9fX0pLHIuZm4uZXh0ZW5kKHtvbjpmdW5jdGlvbihhLGIs
YyxkKXtyZXR1cm4geGEodGhpcyxhLGIsYyxkKX0sb25lOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVy
biB4YSh0aGlzLGEsYixjLGQsMSl9LG9mZjpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZTtpZihhJiZh
LnByZXZlbnREZWZhdWx0JiZhLmhhbmRsZU9iailyZXR1cm4gZD1hLmhhbmRsZU9iaixyKGEuZGVs
ZWdhdGVUYXJnZXQpLm9mZihkLm5hbWVzcGFjZT9kLm9yaWdUeXBlKyIuIitkLm5hbWVzcGFjZTpk
Lm9yaWdUeXBlLGQuc2VsZWN0b3IsZC5oYW5kbGVyKSx0aGlzO2lmKCJvYmplY3QiPT10eXBlb2Yg
YSl7Zm9yKGUgaW4gYSl0aGlzLm9mZihlLGIsYVtlXSk7cmV0dXJuIHRoaXN9cmV0dXJuIGIhPT0h
MSYmImZ1bmN0aW9uIiE9dHlwZW9mIGJ8fChjPWIsYj12b2lkIDApLGM9PT0hMSYmKGM9dmEpLHRo
aXMuZWFjaChmdW5jdGlvbigpe3IuZXZlbnQucmVtb3ZlKHRoaXMsYSxjLGIpfSl9fSk7dmFyIHlh
PS88KD8hYXJlYXxicnxjb2x8ZW1iZWR8aHJ8aW1nfGlucHV0fGxpbmt8bWV0YXxwYXJhbSkoKFth
LXpdW15cL1wwPlx4MjBcdFxyXG5cZl0qKVtePl0qKVwvPi9naSx6YT0vPHNjcmlwdHw8c3R5bGV8
PGxpbmsvaSxBYT0vY2hlY2tlZFxzKig/OltePV18PVxzKi5jaGVja2VkLikvaSxCYT0vXnRydWVc
LyguKikvLENhPS9eXHMqPCEoPzpcW0NEQVRBXFt8LS0pfCg/OlxdXF18LS0pPlxzKiQvZztmdW5j
dGlvbiBEYShhLGIpe3JldHVybiByLm5vZGVOYW1lKGEsInRhYmxlIikmJnIubm9kZU5hbWUoMTEh
PT1iLm5vZGVUeXBlP2I6Yi5maXJzdENoaWxkLCJ0ciIpP2EuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InRib2R5IilbMF18fGE6YX1mdW5jdGlvbiBFYShhKXtyZXR1cm4gYS50eXBlPShudWxsIT09YS5n
ZXRBdHRyaWJ1dGUoInR5cGUiKSkrIi8iK2EudHlwZSxhfWZ1bmN0aW9uIEZhKGEpe3ZhciBiPUJh
LmV4ZWMoYS50eXBlKTtyZXR1cm4gYj9hLnR5cGU9YlsxXTphLnJlbW92ZUF0dHJpYnV0ZSgidHlw
ZSIpLGF9ZnVuY3Rpb24gR2EoYSxiKXt2YXIgYyxkLGUsZixnLGgsaSxqO2lmKDE9PT1iLm5vZGVU
eXBlKXtpZihWLmhhc0RhdGEoYSkmJihmPVYuYWNjZXNzKGEpLGc9Vi5zZXQoYixmKSxqPWYuZXZl
bnRzKSl7ZGVsZXRlIGcuaGFuZGxlLGcuZXZlbnRzPXt9O2ZvcihlIGluIGopZm9yKGM9MCxkPWpb
ZV0ubGVuZ3RoO2M8ZDtjKyspci5ldmVudC5hZGQoYixlLGpbZV1bY10pfVcuaGFzRGF0YShhKSYm
KGg9Vy5hY2Nlc3MoYSksaT1yLmV4dGVuZCh7fSxoKSxXLnNldChiLGkpKX19ZnVuY3Rpb24gSGEo
YSxiKXt2YXIgYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7ImlucHV0Ij09PWMmJmlhLnRlc3Qo
YS50eXBlKT9iLmNoZWNrZWQ9YS5jaGVja2VkOiJpbnB1dCIhPT1jJiYidGV4dGFyZWEiIT09Y3x8
KGIuZGVmYXVsdFZhbHVlPWEuZGVmYXVsdFZhbHVlKX1mdW5jdGlvbiBJYShhLGIsYyxkKXtiPWcu
YXBwbHkoW10sYik7dmFyIGUsZixoLGksaixrLGw9MCxtPWEubGVuZ3RoLG49bS0xLHE9YlswXSxz
PXIuaXNGdW5jdGlvbihxKTtpZihzfHxtPjEmJiJzdHJpbmciPT10eXBlb2YgcSYmIW8uY2hlY2tD
bG9uZSYmQWEudGVzdChxKSlyZXR1cm4gYS5lYWNoKGZ1bmN0aW9uKGUpe3ZhciBmPWEuZXEoZSk7
cyYmKGJbMF09cS5jYWxsKHRoaXMsZSxmLmh0bWwoKSkpLElhKGYsYixjLGQpfSk7aWYobSYmKGU9
cGEoYixhWzBdLm93bmVyRG9jdW1lbnQsITEsYSxkKSxmPWUuZmlyc3RDaGlsZCwxPT09ZS5jaGls
ZE5vZGVzLmxlbmd0aCYmKGU9ZiksZnx8ZCkpe2ZvcihoPXIubWFwKG1hKGUsInNjcmlwdCIpLEVh
KSxpPWgubGVuZ3RoO2w8bTtsKyspaj1lLGwhPT1uJiYoaj1yLmNsb25lKGosITAsITApLGkmJnIu
bWVyZ2UoaCxtYShqLCJzY3JpcHQiKSkpLGMuY2FsbChhW2xdLGosbCk7aWYoaSlmb3Ioaz1oW2gu
bGVuZ3RoLTFdLm93bmVyRG9jdW1lbnQsci5tYXAoaCxGYSksbD0wO2w8aTtsKyspaj1oW2xdLGth
LnRlc3Qoai50eXBlfHwiIikmJiFWLmFjY2VzcyhqLCJnbG9iYWxFdmFsIikmJnIuY29udGFpbnMo
ayxqKSYmKGouc3JjP3IuX2V2YWxVcmwmJnIuX2V2YWxVcmwoai5zcmMpOnAoai50ZXh0Q29udGVu
dC5yZXBsYWNlKENhLCIiKSxrKSl9cmV0dXJuIGF9ZnVuY3Rpb24gSmEoYSxiLGMpe2Zvcih2YXIg
ZCxlPWI/ci5maWx0ZXIoYixhKTphLGY9MDtudWxsIT0oZD1lW2ZdKTtmKyspY3x8MSE9PWQubm9k
ZVR5cGV8fHIuY2xlYW5EYXRhKG1hKGQpKSxkLnBhcmVudE5vZGUmJihjJiZyLmNvbnRhaW5zKGQu
b3duZXJEb2N1bWVudCxkKSYmbmEobWEoZCwic2NyaXB0IikpLGQucGFyZW50Tm9kZS5yZW1vdmVD
aGlsZChkKSk7cmV0dXJuIGF9ci5leHRlbmQoe2h0bWxQcmVmaWx0ZXI6ZnVuY3Rpb24oYSl7cmV0
dXJuIGEucmVwbGFjZSh5YSwiPCQxPjwvJDI+Iil9LGNsb25lOmZ1bmN0aW9uKGEsYixjKXt2YXIg
ZCxlLGYsZyxoPWEuY2xvbmVOb2RlKCEwKSxpPXIuY29udGFpbnMoYS5vd25lckRvY3VtZW50LGEp
O2lmKCEoby5ub0Nsb25lQ2hlY2tlZHx8MSE9PWEubm9kZVR5cGUmJjExIT09YS5ub2RlVHlwZXx8
ci5pc1hNTERvYyhhKSkpZm9yKGc9bWEoaCksZj1tYShhKSxkPTAsZT1mLmxlbmd0aDtkPGU7ZCsr
KUhhKGZbZF0sZ1tkXSk7aWYoYilpZihjKWZvcihmPWZ8fG1hKGEpLGc9Z3x8bWEoaCksZD0wLGU9
Zi5sZW5ndGg7ZDxlO2QrKylHYShmW2RdLGdbZF0pO2Vsc2UgR2EoYSxoKTtyZXR1cm4gZz1tYSho
LCJzY3JpcHQiKSxnLmxlbmd0aD4wJiZuYShnLCFpJiZtYShhLCJzY3JpcHQiKSksaH0sY2xlYW5E
YXRhOmZ1bmN0aW9uKGEpe2Zvcih2YXIgYixjLGQsZT1yLmV2ZW50LnNwZWNpYWwsZj0wO3ZvaWQg
MCE9PShjPWFbZl0pO2YrKylpZihUKGMpKXtpZihiPWNbVi5leHBhbmRvXSl7aWYoYi5ldmVudHMp
Zm9yKGQgaW4gYi5ldmVudHMpZVtkXT9yLmV2ZW50LnJlbW92ZShjLGQpOnIucmVtb3ZlRXZlbnQo
YyxkLGIuaGFuZGxlKTtjW1YuZXhwYW5kb109dm9pZCAwfWNbVy5leHBhbmRvXSYmKGNbVy5leHBh
bmRvXT12b2lkIDApfX19KSxyLmZuLmV4dGVuZCh7ZGV0YWNoOmZ1bmN0aW9uKGEpe3JldHVybiBK
YSh0aGlzLGEsITApfSxyZW1vdmU6ZnVuY3Rpb24oYSl7cmV0dXJuIEphKHRoaXMsYSl9LHRleHQ6
ZnVuY3Rpb24oYSl7cmV0dXJuIFModGhpcyxmdW5jdGlvbihhKXtyZXR1cm4gdm9pZCAwPT09YT9y
LnRleHQodGhpcyk6dGhpcy5lbXB0eSgpLmVhY2goZnVuY3Rpb24oKXsxIT09dGhpcy5ub2RlVHlw
ZSYmMTEhPT10aGlzLm5vZGVUeXBlJiY5IT09dGhpcy5ub2RlVHlwZXx8KHRoaXMudGV4dENvbnRl
bnQ9YSl9KX0sbnVsbCxhLGFyZ3VtZW50cy5sZW5ndGgpfSxhcHBlbmQ6ZnVuY3Rpb24oKXtyZXR1
cm4gSWEodGhpcyxhcmd1bWVudHMsZnVuY3Rpb24oYSl7aWYoMT09PXRoaXMubm9kZVR5cGV8fDEx
PT09dGhpcy5ub2RlVHlwZXx8OT09PXRoaXMubm9kZVR5cGUpe3ZhciBiPURhKHRoaXMsYSk7Yi5h
cHBlbmRDaGlsZChhKX19KX0scHJlcGVuZDpmdW5jdGlvbigpe3JldHVybiBJYSh0aGlzLGFyZ3Vt
ZW50cyxmdW5jdGlvbihhKXtpZigxPT09dGhpcy5ub2RlVHlwZXx8MTE9PT10aGlzLm5vZGVUeXBl
fHw5PT09dGhpcy5ub2RlVHlwZSl7dmFyIGI9RGEodGhpcyxhKTtiLmluc2VydEJlZm9yZShhLGIu
Zmlyc3RDaGlsZCl9fSl9LGJlZm9yZTpmdW5jdGlvbigpe3JldHVybiBJYSh0aGlzLGFyZ3VtZW50
cyxmdW5jdGlvbihhKXt0aGlzLnBhcmVudE5vZGUmJnRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZv
cmUoYSx0aGlzKX0pfSxhZnRlcjpmdW5jdGlvbigpe3JldHVybiBJYSh0aGlzLGFyZ3VtZW50cyxm
dW5jdGlvbihhKXt0aGlzLnBhcmVudE5vZGUmJnRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUo
YSx0aGlzLm5leHRTaWJsaW5nKX0pfSxlbXB0eTpmdW5jdGlvbigpe2Zvcih2YXIgYSxiPTA7bnVs
bCE9KGE9dGhpc1tiXSk7YisrKTE9PT1hLm5vZGVUeXBlJiYoci5jbGVhbkRhdGEobWEoYSwhMSkp
LGEudGV4dENvbnRlbnQ9IiIpO3JldHVybiB0aGlzfSxjbG9uZTpmdW5jdGlvbihhLGIpe3JldHVy
biBhPW51bGwhPWEmJmEsYj1udWxsPT1iP2E6Yix0aGlzLm1hcChmdW5jdGlvbigpe3JldHVybiBy
LmNsb25lKHRoaXMsYSxiKX0pfSxodG1sOmZ1bmN0aW9uKGEpe3JldHVybiBTKHRoaXMsZnVuY3Rp
b24oYSl7dmFyIGI9dGhpc1swXXx8e30sYz0wLGQ9dGhpcy5sZW5ndGg7aWYodm9pZCAwPT09YSYm
MT09PWIubm9kZVR5cGUpcmV0dXJuIGIuaW5uZXJIVE1MO2lmKCJzdHJpbmciPT10eXBlb2YgYSYm
IXphLnRlc3QoYSkmJiFsYVsoamEuZXhlYyhhKXx8WyIiLCIiXSlbMV0udG9Mb3dlckNhc2UoKV0p
e2E9ci5odG1sUHJlZmlsdGVyKGEpO3RyeXtmb3IoO2M8ZDtjKyspYj10aGlzW2NdfHx7fSwxPT09
Yi5ub2RlVHlwZSYmKHIuY2xlYW5EYXRhKG1hKGIsITEpKSxiLmlubmVySFRNTD1hKTtiPTB9Y2F0
Y2goZSl7fX1iJiZ0aGlzLmVtcHR5KCkuYXBwZW5kKGEpfSxudWxsLGEsYXJndW1lbnRzLmxlbmd0
aCl9LHJlcGxhY2VXaXRoOmZ1bmN0aW9uKCl7dmFyIGE9W107cmV0dXJuIElhKHRoaXMsYXJndW1l
bnRzLGZ1bmN0aW9uKGIpe3ZhciBjPXRoaXMucGFyZW50Tm9kZTtyLmluQXJyYXkodGhpcyxhKTww
JiYoci5jbGVhbkRhdGEobWEodGhpcykpLGMmJmMucmVwbGFjZUNoaWxkKGIsdGhpcykpfSxhKX19
KSxyLmVhY2goe2FwcGVuZFRvOiJhcHBlbmQiLHByZXBlbmRUbzoicHJlcGVuZCIsaW5zZXJ0QmVm
b3JlOiJiZWZvcmUiLGluc2VydEFmdGVyOiJhZnRlciIscmVwbGFjZUFsbDoicmVwbGFjZVdpdGgi
fSxmdW5jdGlvbihhLGIpe3IuZm5bYV09ZnVuY3Rpb24oYSl7Zm9yKHZhciBjLGQ9W10sZT1yKGEp
LGY9ZS5sZW5ndGgtMSxnPTA7Zzw9ZjtnKyspYz1nPT09Zj90aGlzOnRoaXMuY2xvbmUoITApLHIo
ZVtnXSlbYl0oYyksaC5hcHBseShkLGMuZ2V0KCkpO3JldHVybiB0aGlzLnB1c2hTdGFjayhkKX19
KTt2YXIgS2E9L15tYXJnaW4vLExhPW5ldyBSZWdFeHAoIl4oIitfKyIpKD8hcHgpW2EteiVdKyQi
LCJpIiksTWE9ZnVuY3Rpb24oYil7dmFyIGM9Yi5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3O3Jl
dHVybiBjJiZjLm9wZW5lcnx8KGM9YSksYy5nZXRDb21wdXRlZFN0eWxlKGIpfTshZnVuY3Rpb24o
KXtmdW5jdGlvbiBiKCl7aWYoaSl7aS5zdHlsZS5jc3NUZXh0PSJib3gtc2l6aW5nOmJvcmRlci1i
b3g7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpibG9jazttYXJnaW46YXV0bztib3JkZXI6MXB4
O3BhZGRpbmc6MXB4O3RvcDoxJTt3aWR0aDo1MCUiLGkuaW5uZXJIVE1MPSIiLHFhLmFwcGVuZENo
aWxkKGgpO3ZhciBiPWEuZ2V0Q29tcHV0ZWRTdHlsZShpKTtjPSIxJSIhPT1iLnRvcCxnPSIycHgi
PT09Yi5tYXJnaW5MZWZ0LGU9IjRweCI9PT1iLndpZHRoLGkuc3R5bGUubWFyZ2luUmlnaHQ9IjUw
JSIsZj0iNHB4Ij09PWIubWFyZ2luUmlnaHQscWEucmVtb3ZlQ2hpbGQoaCksaT1udWxsfX12YXIg
YyxlLGYsZyxoPWQuY3JlYXRlRWxlbWVudCgiZGl2IiksaT1kLmNyZWF0ZUVsZW1lbnQoImRpdiIp
O2kuc3R5bGUmJihpLnN0eWxlLmJhY2tncm91bmRDbGlwPSJjb250ZW50LWJveCIsaS5jbG9uZU5v
ZGUoITApLnN0eWxlLmJhY2tncm91bmRDbGlwPSIiLG8uY2xlYXJDbG9uZVN0eWxlPSJjb250ZW50
LWJveCI9PT1pLnN0eWxlLmJhY2tncm91bmRDbGlwLGguc3R5bGUuY3NzVGV4dD0iYm9yZGVyOjA7
d2lkdGg6OHB4O2hlaWdodDowO3RvcDowO2xlZnQ6LTk5OTlweDtwYWRkaW5nOjA7bWFyZ2luLXRv
cDoxcHg7cG9zaXRpb246YWJzb2x1dGUiLGguYXBwZW5kQ2hpbGQoaSksci5leHRlbmQobyx7cGl4
ZWxQb3NpdGlvbjpmdW5jdGlvbigpe3JldHVybiBiKCksY30sYm94U2l6aW5nUmVsaWFibGU6ZnVu
Y3Rpb24oKXtyZXR1cm4gYigpLGV9LHBpeGVsTWFyZ2luUmlnaHQ6ZnVuY3Rpb24oKXtyZXR1cm4g
YigpLGZ9LHJlbGlhYmxlTWFyZ2luTGVmdDpmdW5jdGlvbigpe3JldHVybiBiKCksZ319KSl9KCk7
ZnVuY3Rpb24gTmEoYSxiLGMpe3ZhciBkLGUsZixnLGg9YS5zdHlsZTtyZXR1cm4gYz1jfHxNYShh
KSxjJiYoZz1jLmdldFByb3BlcnR5VmFsdWUoYil8fGNbYl0sIiIhPT1nfHxyLmNvbnRhaW5zKGEu
b3duZXJEb2N1bWVudCxhKXx8KGc9ci5zdHlsZShhLGIpKSwhby5waXhlbE1hcmdpblJpZ2h0KCkm
JkxhLnRlc3QoZykmJkthLnRlc3QoYikmJihkPWgud2lkdGgsZT1oLm1pbldpZHRoLGY9aC5tYXhX
aWR0aCxoLm1pbldpZHRoPWgubWF4V2lkdGg9aC53aWR0aD1nLGc9Yy53aWR0aCxoLndpZHRoPWQs
aC5taW5XaWR0aD1lLGgubWF4V2lkdGg9ZikpLHZvaWQgMCE9PWc/ZysiIjpnfWZ1bmN0aW9uIE9h
KGEsYil7cmV0dXJue2dldDpmdW5jdGlvbigpe3JldHVybiBhKCk/dm9pZCBkZWxldGUgdGhpcy5n
ZXQ6KHRoaXMuZ2V0PWIpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19fXZhciBQYT0vXihub25lfHRh
YmxlKD8hLWNbZWFdKS4rKS8sUWE9e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdmlzaWJpbGl0eToiaGlk
ZGVuIixkaXNwbGF5OiJibG9jayJ9LFJhPXtsZXR0ZXJTcGFjaW5nOiIwIixmb250V2VpZ2h0OiI0
MDAifSxTYT1bIldlYmtpdCIsIk1veiIsIm1zIl0sVGE9ZC5jcmVhdGVFbGVtZW50KCJkaXYiKS5z
dHlsZTtmdW5jdGlvbiBVYShhKXtpZihhIGluIFRhKXJldHVybiBhO3ZhciBiPWFbMF0udG9VcHBl
ckNhc2UoKSthLnNsaWNlKDEpLGM9U2EubGVuZ3RoO3doaWxlKGMtLSlpZihhPVNhW2NdK2IsYSBp
biBUYSlyZXR1cm4gYX1mdW5jdGlvbiBWYShhLGIsYyl7dmFyIGQ9YWEuZXhlYyhiKTtyZXR1cm4g
ZD9NYXRoLm1heCgwLGRbMl0tKGN8fDApKSsoZFszXXx8InB4Iik6Yn1mdW5jdGlvbiBXYShhLGIs
YyxkLGUpe3ZhciBmLGc9MDtmb3IoZj1jPT09KGQ/ImJvcmRlciI6ImNvbnRlbnQiKT80OiJ3aWR0
aCI9PT1iPzE6MDtmPDQ7Zis9MikibWFyZ2luIj09PWMmJihnKz1yLmNzcyhhLGMrYmFbZl0sITAs
ZSkpLGQ/KCJjb250ZW50Ij09PWMmJihnLT1yLmNzcyhhLCJwYWRkaW5nIitiYVtmXSwhMCxlKSks
Im1hcmdpbiIhPT1jJiYoZy09ci5jc3MoYSwiYm9yZGVyIitiYVtmXSsiV2lkdGgiLCEwLGUpKSk6
KGcrPXIuY3NzKGEsInBhZGRpbmciK2JhW2ZdLCEwLGUpLCJwYWRkaW5nIiE9PWMmJihnKz1yLmNz
cyhhLCJib3JkZXIiK2JhW2ZdKyJXaWR0aCIsITAsZSkpKTtyZXR1cm4gZ31mdW5jdGlvbiBYYShh
LGIsYyl7dmFyIGQsZT0hMCxmPU1hKGEpLGc9ImJvcmRlci1ib3giPT09ci5jc3MoYSwiYm94U2l6
aW5nIiwhMSxmKTtpZihhLmdldENsaWVudFJlY3RzKCkubGVuZ3RoJiYoZD1hLmdldEJvdW5kaW5n
Q2xpZW50UmVjdCgpW2JdKSxkPD0wfHxudWxsPT1kKXtpZihkPU5hKGEsYixmKSwoZDwwfHxudWxs
PT1kKSYmKGQ9YS5zdHlsZVtiXSksTGEudGVzdChkKSlyZXR1cm4gZDtlPWcmJihvLmJveFNpemlu
Z1JlbGlhYmxlKCl8fGQ9PT1hLnN0eWxlW2JdKSxkPXBhcnNlRmxvYXQoZCl8fDB9cmV0dXJuIGQr
V2EoYSxiLGN8fChnPyJib3JkZXIiOiJjb250ZW50IiksZSxmKSsicHgifXIuZXh0ZW5kKHtjc3NI
b29rczp7b3BhY2l0eTp7Z2V0OmZ1bmN0aW9uKGEsYil7aWYoYil7dmFyIGM9TmEoYSwib3BhY2l0
eSIpO3JldHVybiIiPT09Yz8iMSI6Y319fX0sY3NzTnVtYmVyOnthbmltYXRpb25JdGVyYXRpb25D
b3VudDohMCxjb2x1bW5Db3VudDohMCxmaWxsT3BhY2l0eTohMCxmbGV4R3JvdzohMCxmbGV4U2hy
aW5rOiEwLGZvbnRXZWlnaHQ6ITAsbGluZUhlaWdodDohMCxvcGFjaXR5OiEwLG9yZGVyOiEwLG9y
cGhhbnM6ITAsd2lkb3dzOiEwLHpJbmRleDohMCx6b29tOiEwfSxjc3NQcm9wczp7ImZsb2F0Ijoi
Y3NzRmxvYXQifSxzdHlsZTpmdW5jdGlvbihhLGIsYyxkKXtpZihhJiYzIT09YS5ub2RlVHlwZSYm
OCE9PWEubm9kZVR5cGUmJmEuc3R5bGUpe3ZhciBlLGYsZyxoPXIuY2FtZWxDYXNlKGIpLGk9YS5z
dHlsZTtyZXR1cm4gYj1yLmNzc1Byb3BzW2hdfHwoci5jc3NQcm9wc1toXT1VYShoKXx8aCksZz1y
LmNzc0hvb2tzW2JdfHxyLmNzc0hvb2tzW2hdLHZvaWQgMD09PWM/ZyYmImdldCJpbiBnJiZ2b2lk
IDAhPT0oZT1nLmdldChhLCExLGQpKT9lOmlbYl06KGY9dHlwZW9mIGMsInN0cmluZyI9PT1mJiYo
ZT1hYS5leGVjKGMpKSYmZVsxXSYmKGM9ZWEoYSxiLGUpLGY9Im51bWJlciIpLG51bGwhPWMmJmM9
PT1jJiYoIm51bWJlciI9PT1mJiYoYys9ZSYmZVszXXx8KHIuY3NzTnVtYmVyW2hdPyIiOiJweCIp
KSxvLmNsZWFyQ2xvbmVTdHlsZXx8IiIhPT1jfHwwIT09Yi5pbmRleE9mKCJiYWNrZ3JvdW5kIil8
fChpW2JdPSJpbmhlcml0IiksZyYmInNldCJpbiBnJiZ2b2lkIDA9PT0oYz1nLnNldChhLGMsZCkp
fHwoaVtiXT1jKSksdm9pZCAwKX19LGNzczpmdW5jdGlvbihhLGIsYyxkKXt2YXIgZSxmLGcsaD1y
LmNhbWVsQ2FzZShiKTtyZXR1cm4gYj1yLmNzc1Byb3BzW2hdfHwoci5jc3NQcm9wc1toXT1VYSho
KXx8aCksZz1yLmNzc0hvb2tzW2JdfHxyLmNzc0hvb2tzW2hdLGcmJiJnZXQiaW4gZyYmKGU9Zy5n
ZXQoYSwhMCxjKSksdm9pZCAwPT09ZSYmKGU9TmEoYSxiLGQpKSwibm9ybWFsIj09PWUmJmIgaW4g
UmEmJihlPVJhW2JdKSwiIj09PWN8fGM/KGY9cGFyc2VGbG9hdChlKSxjPT09ITB8fGlzRmluaXRl
KGYpP2Z8fDA6ZSk6ZX19KSxyLmVhY2goWyJoZWlnaHQiLCJ3aWR0aCJdLGZ1bmN0aW9uKGEsYil7
ci5jc3NIb29rc1tiXT17Z2V0OmZ1bmN0aW9uKGEsYyxkKXtpZihjKXJldHVybiFQYS50ZXN0KHIu
Y3NzKGEsImRpc3BsYXkiKSl8fGEuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGgmJmEuZ2V0Qm91bmRp
bmdDbGllbnRSZWN0KCkud2lkdGg/WGEoYSxiLGQpOmRhKGEsUWEsZnVuY3Rpb24oKXtyZXR1cm4g
WGEoYSxiLGQpfSl9LHNldDpmdW5jdGlvbihhLGMsZCl7dmFyIGUsZj1kJiZNYShhKSxnPWQmJldh
KGEsYixkLCJib3JkZXItYm94Ij09PXIuY3NzKGEsImJveFNpemluZyIsITEsZiksZik7cmV0dXJu
IGcmJihlPWFhLmV4ZWMoYykpJiYicHgiIT09KGVbM118fCJweCIpJiYoYS5zdHlsZVtiXT1jLGM9
ci5jc3MoYSxiKSksVmEoYSxjLGcpfX19KSxyLmNzc0hvb2tzLm1hcmdpbkxlZnQ9T2Eoby5yZWxp
YWJsZU1hcmdpbkxlZnQsZnVuY3Rpb24oYSxiKXtpZihiKXJldHVybihwYXJzZUZsb2F0KE5hKGEs
Im1hcmdpbkxlZnQiKSl8fGEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdC1kYShhLHttYXJn
aW5MZWZ0OjB9LGZ1bmN0aW9uKCl7cmV0dXJuIGEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVm
dH0pKSsicHgifSksci5lYWNoKHttYXJnaW46IiIscGFkZGluZzoiIixib3JkZXI6IldpZHRoIn0s
ZnVuY3Rpb24oYSxiKXtyLmNzc0hvb2tzW2ErYl09e2V4cGFuZDpmdW5jdGlvbihjKXtmb3IodmFy
IGQ9MCxlPXt9LGY9InN0cmluZyI9PXR5cGVvZiBjP2Muc3BsaXQoIiAiKTpbY107ZDw0O2QrKyll
W2ErYmFbZF0rYl09ZltkXXx8ZltkLTJdfHxmWzBdO3JldHVybiBlfX0sS2EudGVzdChhKXx8KHIu
Y3NzSG9va3NbYStiXS5zZXQ9VmEpfSksci5mbi5leHRlbmQoe2NzczpmdW5jdGlvbihhLGIpe3Jl
dHVybiBTKHRoaXMsZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZj17fSxnPTA7aWYoci5pc0FycmF5
KGIpKXtmb3IoZD1NYShhKSxlPWIubGVuZ3RoO2c8ZTtnKyspZltiW2ddXT1yLmNzcyhhLGJbZ10s
ITEsZCk7cmV0dXJuIGZ9cmV0dXJuIHZvaWQgMCE9PWM/ci5zdHlsZShhLGIsYyk6ci5jc3MoYSxi
KX0sYSxiLGFyZ3VtZW50cy5sZW5ndGg+MSl9fSksci5mbi5kZWxheT1mdW5jdGlvbihiLGMpe3Jl
dHVybiBiPXIuZng/ci5meC5zcGVlZHNbYl18fGI6YixjPWN8fCJmeCIsdGhpcy5xdWV1ZShjLGZ1
bmN0aW9uKGMsZCl7dmFyIGU9YS5zZXRUaW1lb3V0KGMsYik7ZC5zdG9wPWZ1bmN0aW9uKCl7YS5j
bGVhclRpbWVvdXQoZSl9fSl9LGZ1bmN0aW9uKCl7dmFyIGE9ZC5jcmVhdGVFbGVtZW50KCJpbnB1
dCIpLGI9ZC5jcmVhdGVFbGVtZW50KCJzZWxlY3QiKSxjPWIuYXBwZW5kQ2hpbGQoZC5jcmVhdGVF
bGVtZW50KCJvcHRpb24iKSk7YS50eXBlPSJjaGVja2JveCIsby5jaGVja09uPSIiIT09YS52YWx1
ZSxvLm9wdFNlbGVjdGVkPWMuc2VsZWN0ZWQsYT1kLmNyZWF0ZUVsZW1lbnQoImlucHV0IiksYS52
YWx1ZT0idCIsYS50eXBlPSJyYWRpbyIsby5yYWRpb1ZhbHVlPSJ0Ij09PWEudmFsdWV9KCk7dmFy
IFlhLFphPXIuZXhwci5hdHRySGFuZGxlO3IuZm4uZXh0ZW5kKHthdHRyOmZ1bmN0aW9uKGEsYil7
cmV0dXJuIFModGhpcyxyLmF0dHIsYSxiLGFyZ3VtZW50cy5sZW5ndGg+MSl9LHJlbW92ZUF0dHI6
ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3IucmVtb3ZlQXR0cih0aGlz
LGEpfSl9fSksci5leHRlbmQoe2F0dHI6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZj1hLm5vZGVU
eXBlO2lmKDMhPT1mJiY4IT09ZiYmMiE9PWYpcmV0dXJuInVuZGVmaW5lZCI9PXR5cGVvZiBhLmdl
dEF0dHJpYnV0ZT9yLnByb3AoYSxiLGMpOigxPT09ZiYmci5pc1hNTERvYyhhKXx8KGU9ci5hdHRy
SG9va3NbYi50b0xvd2VyQ2FzZSgpXXx8KHIuZXhwci5tYXRjaC5ib29sLnRlc3QoYik/WWE6dm9p
ZCAwKSksdm9pZCAwIT09Yz9udWxsPT09Yz92b2lkIHIucmVtb3ZlQXR0cihhLGIpOmUmJiJzZXQi
aW4gZSYmdm9pZCAwIT09KGQ9ZS5zZXQoYSxjLGIpKT9kOihhLnNldEF0dHJpYnV0ZShiLGMrIiIp
LGMpOmUmJiJnZXQiaW4gZSYmbnVsbCE9PShkPWUuZ2V0KGEsYikpP2Q6KGQ9ci5maW5kLmF0dHIo
YSxiKSxudWxsPT1kP3ZvaWQgMDpkKSl9LGF0dHJIb29rczp7dHlwZTp7c2V0OmZ1bmN0aW9uKGEs
Yil7aWYoIW8ucmFkaW9WYWx1ZSYmInJhZGlvIj09PWImJnIubm9kZU5hbWUoYSwiaW5wdXQiKSl7
dmFyIGM9YS52YWx1ZTtyZXR1cm4gYS5zZXRBdHRyaWJ1dGUoInR5cGUiLGIpLGMmJihhLnZhbHVl
PWMpLGJ9fX19LHJlbW92ZUF0dHI6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPTAsZT1iJiZiLm1hdGNo
KEspO2lmKGUmJjE9PT1hLm5vZGVUeXBlKXdoaWxlKGM9ZVtkKytdKWEucmVtb3ZlQXR0cmlidXRl
KGMpfX0pLFlhPXtzZXQ6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBiPT09ITE/ci5yZW1vdmVBdHRy
KGEsYyk6YS5zZXRBdHRyaWJ1dGUoYyxjKSxjfX0sci5lYWNoKHIuZXhwci5tYXRjaC5ib29sLnNv
dXJjZS5tYXRjaCgvXHcrL2cpLGZ1bmN0aW9uKGEsYil7dmFyIGM9WmFbYl18fHIuZmluZC5hdHRy
O1phW2JdPWZ1bmN0aW9uKGEsYixkKXt2YXIgZSxmLGc9Yi50b0xvd2VyQ2FzZSgpO3JldHVybiBk
fHwoZj1aYVtnXSxaYVtnXT1lLGU9bnVsbCE9YyhhLGIsZCk/ZzpudWxsLFphW2ddPWYpLGV9fSk7
dmFyICRhPS9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbikkL2ksX2E9L14oPzphfGFy
ZWEpJC9pO3IuZm4uZXh0ZW5kKHtwcm9wOmZ1bmN0aW9uKGEsYil7cmV0dXJuIFModGhpcyxyLnBy
b3AsYSxiLGFyZ3VtZW50cy5sZW5ndGg+MSl9LHJlbW92ZVByb3A6ZnVuY3Rpb24oYSl7cmV0dXJu
IHRoaXMuZWFjaChmdW5jdGlvbigpe2RlbGV0ZSB0aGlzW3IucHJvcEZpeFthXXx8YV19KX19KSxy
LmV4dGVuZCh7cHJvcDpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmPWEubm9kZVR5cGU7aWYoMyE9
PWYmJjghPT1mJiYyIT09ZilyZXR1cm4gMT09PWYmJnIuaXNYTUxEb2MoYSl8fChiPXIucHJvcEZp
eFtiXXx8YixlPXIucHJvcEhvb2tzW2JdKSx2b2lkIDAhPT1jP2UmJiJzZXQiaW4gZSYmdm9pZCAw
IT09KGQ9ZS5zZXQoYSxjLGIpKT9kOmFbYl09YzplJiYiZ2V0ImluIGUmJm51bGwhPT0oZD1lLmdl
dChhLGIpKT9kOmFbYl19LHByb3BIb29rczp7dGFiSW5kZXg6e2dldDpmdW5jdGlvbihhKXt2YXIg
Yj1yLmZpbmQuYXR0cihhLCJ0YWJpbmRleCIpO3JldHVybiBiP3BhcnNlSW50KGIsMTApOiRhLnRl
c3QoYS5ub2RlTmFtZSl8fF9hLnRlc3QoYS5ub2RlTmFtZSkmJmEuaHJlZj8wOi0xfX19LHByb3BG
aXg6eyJmb3IiOiJodG1sRm9yIiwiY2xhc3MiOiJjbGFzc05hbWUifX0pLG8ub3B0U2VsZWN0ZWR8
fChyLnByb3BIb29rcy5zZWxlY3RlZD17Z2V0OmZ1bmN0aW9uKGEpe3ZhciBiPWEucGFyZW50Tm9k
ZTtyZXR1cm4gYiYmYi5wYXJlbnROb2RlJiZiLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCxudWxs
fSxzZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5wYXJlbnROb2RlO2ImJihiLnNlbGVjdGVkSW5kZXgs
Yi5wYXJlbnROb2RlJiZiLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCl9fSksci5lYWNoKFsidGFi
SW5kZXgiLCJyZWFkT25seSIsIm1heExlbmd0aCIsImNlbGxTcGFjaW5nIiwiY2VsbFBhZGRpbmci
LCJyb3dTcGFuIiwiY29sU3BhbiIsInVzZU1hcCIsImZyYW1lQm9yZGVyIiwiY29udGVudEVkaXRh
YmxlIl0sZnVuY3Rpb24oKXtyLnByb3BGaXhbdGhpcy50b0xvd2VyQ2FzZSgpXT10aGlzfSk7ZnVu
Y3Rpb24gYWIoYSl7dmFyIGI9YS5tYXRjaChLKXx8W107cmV0dXJuIGIuam9pbigiICIpfWZ1bmN0
aW9uIGJiKGEpe3JldHVybiBhLmdldEF0dHJpYnV0ZSYmYS5nZXRBdHRyaWJ1dGUoImNsYXNzIil8
fCIifXIuZm4uZXh0ZW5kKHthZGRDbGFzczpmdW5jdGlvbihhKXt2YXIgYixjLGQsZSxmLGcsaCxp
PTA7aWYoci5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYil7cih0aGlz
KS5hZGRDbGFzcyhhLmNhbGwodGhpcyxiLGJiKHRoaXMpKSl9KTtpZigic3RyaW5nIj09dHlwZW9m
IGEmJmEpe2I9YS5tYXRjaChLKXx8W107d2hpbGUoYz10aGlzW2krK10paWYoZT1iYihjKSxkPTE9
PT1jLm5vZGVUeXBlJiYiICIrYWIoZSkrIiAiKXtnPTA7d2hpbGUoZj1iW2crK10pZC5pbmRleE9m
KCIgIitmKyIgIik8MCYmKGQrPWYrIiAiKTtoPWFiKGQpLGUhPT1oJiZjLnNldEF0dHJpYnV0ZSgi
Y2xhc3MiLGgpfX1yZXR1cm4gdGhpc30scmVtb3ZlQ2xhc3M6ZnVuY3Rpb24oYSl7dmFyIGIsYyxk
LGUsZixnLGgsaT0wO2lmKHIuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9u
KGIpe3IodGhpcykucmVtb3ZlQ2xhc3MoYS5jYWxsKHRoaXMsYixiYih0aGlzKSkpfSk7aWYoIWFy
Z3VtZW50cy5sZW5ndGgpcmV0dXJuIHRoaXMuYXR0cigiY2xhc3MiLCIiKTtpZigic3RyaW5nIj09
dHlwZW9mIGEmJmEpe2I9YS5tYXRjaChLKXx8W107d2hpbGUoYz10aGlzW2krK10paWYoZT1iYihj
KSxkPTE9PT1jLm5vZGVUeXBlJiYiICIrYWIoZSkrIiAiKXtnPTA7d2hpbGUoZj1iW2crK10pd2hp
bGUoZC5pbmRleE9mKCIgIitmKyIgIik+LTEpZD1kLnJlcGxhY2UoIiAiK2YrIiAiLCIgIik7aD1h
YihkKSxlIT09aCYmYy5zZXRBdHRyaWJ1dGUoImNsYXNzIixoKX19cmV0dXJuIHRoaXN9LHRvZ2ds
ZUNsYXNzOmZ1bmN0aW9uKGEsYil7dmFyIGM9dHlwZW9mIGE7cmV0dXJuImJvb2xlYW4iPT10eXBl
b2YgYiYmInN0cmluZyI9PT1jP2I/dGhpcy5hZGRDbGFzcyhhKTp0aGlzLnJlbW92ZUNsYXNzKGEp
OnIuaXNGdW5jdGlvbihhKT90aGlzLmVhY2goZnVuY3Rpb24oYyl7cih0aGlzKS50b2dnbGVDbGFz
cyhhLmNhbGwodGhpcyxjLGJiKHRoaXMpLGIpLGIpfSk6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFy
IGIsZCxlLGY7aWYoInN0cmluZyI9PT1jKXtkPTAsZT1yKHRoaXMpLGY9YS5tYXRjaChLKXx8W107
d2hpbGUoYj1mW2QrK10pZS5oYXNDbGFzcyhiKT9lLnJlbW92ZUNsYXNzKGIpOmUuYWRkQ2xhc3Mo
Yil9ZWxzZSB2b2lkIDAhPT1hJiYiYm9vbGVhbiIhPT1jfHwoYj1iYih0aGlzKSxiJiZWLnNldCh0
aGlzLCJfX2NsYXNzTmFtZV9fIixiKSx0aGlzLnNldEF0dHJpYnV0ZSYmdGhpcy5zZXRBdHRyaWJ1
dGUoImNsYXNzIixifHxhPT09ITE/IiI6Vi5nZXQodGhpcywiX19jbGFzc05hbWVfXyIpfHwiIikp
fSl9LGhhc0NsYXNzOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZD0wO2I9IiAiK2ErIiAiO3doaWxlKGM9
dGhpc1tkKytdKWlmKDE9PT1jLm5vZGVUeXBlJiYoIiAiK2FiKGJiKGMpKSsiICIpLmluZGV4T2Yo
Yik+LTEpcmV0dXJuITA7cmV0dXJuITF9fSk7dmFyIGNiPS9cci9nO3IuZm4uZXh0ZW5kKHt2YWw6
ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGU9dGhpc1swXTt7aWYoYXJndW1lbnRzLmxlbmd0aClyZXR1
cm4gZD1yLmlzRnVuY3Rpb24oYSksdGhpcy5lYWNoKGZ1bmN0aW9uKGMpe3ZhciBlOzE9PT10aGlz
Lm5vZGVUeXBlJiYoZT1kP2EuY2FsbCh0aGlzLGMscih0aGlzKS52YWwoKSk6YSxudWxsPT1lP2U9
IiI6Im51bWJlciI9PXR5cGVvZiBlP2UrPSIiOnIuaXNBcnJheShlKSYmKGU9ci5tYXAoZSxmdW5j
dGlvbihhKXtyZXR1cm4gbnVsbD09YT8iIjphKyIifSkpLGI9ci52YWxIb29rc1t0aGlzLnR5cGVd
fHxyLnZhbEhvb2tzW3RoaXMubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0sYiYmInNldCJpbiBiJiZ2
b2lkIDAhPT1iLnNldCh0aGlzLGUsInZhbHVlIil8fCh0aGlzLnZhbHVlPWUpKX0pO2lmKGUpcmV0
dXJuIGI9ci52YWxIb29rc1tlLnR5cGVdfHxyLnZhbEhvb2tzW2Uubm9kZU5hbWUudG9Mb3dlckNh
c2UoKV0sYiYmImdldCJpbiBiJiZ2b2lkIDAhPT0oYz1iLmdldChlLCJ2YWx1ZSIpKT9jOihjPWUu
dmFsdWUsInN0cmluZyI9PXR5cGVvZiBjP2MucmVwbGFjZShjYiwiIik6bnVsbD09Yz8iIjpjKX19
fSksci5leHRlbmQoe3ZhbEhvb2tzOntvcHRpb246e2dldDpmdW5jdGlvbihhKXt2YXIgYj1yLmZp
bmQuYXR0cihhLCJ2YWx1ZSIpO3JldHVybiBudWxsIT1iP2I6YWIoci50ZXh0KGEpKX19LHNlbGVj
dDp7Z2V0OmZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlPWEub3B0aW9ucyxmPWEuc2VsZWN0ZWRJbmRl
eCxnPSJzZWxlY3Qtb25lIj09PWEudHlwZSxoPWc/bnVsbDpbXSxpPWc/ZisxOmUubGVuZ3RoO2Zv
cihkPWY8MD9pOmc/ZjowO2Q8aTtkKyspaWYoYz1lW2RdLChjLnNlbGVjdGVkfHxkPT09ZikmJiFj
LmRpc2FibGVkJiYoIWMucGFyZW50Tm9kZS5kaXNhYmxlZHx8IXIubm9kZU5hbWUoYy5wYXJlbnRO
b2RlLCJvcHRncm91cCIpKSl7aWYoYj1yKGMpLnZhbCgpLGcpcmV0dXJuIGI7aC5wdXNoKGIpfXJl
dHVybiBofSxzZXQ6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGU9YS5vcHRpb25zLGY9ci5tYWtlQXJy
YXkoYiksZz1lLmxlbmd0aDt3aGlsZShnLS0pZD1lW2ddLChkLnNlbGVjdGVkPXIuaW5BcnJheShy
LnZhbEhvb2tzLm9wdGlvbi5nZXQoZCksZik+LTEpJiYoYz0hMCk7cmV0dXJuIGN8fChhLnNlbGVj
dGVkSW5kZXg9LTEpLGZ9fX19KSxyLmVhY2goWyJyYWRpbyIsImNoZWNrYm94Il0sZnVuY3Rpb24o
KXtyLnZhbEhvb2tzW3RoaXNdPXtzZXQ6ZnVuY3Rpb24oYSxiKXtpZihyLmlzQXJyYXkoYikpcmV0
dXJuIGEuY2hlY2tlZD1yLmluQXJyYXkocihhKS52YWwoKSxiKT4tMX19LG8uY2hlY2tPbnx8KHIu
dmFsSG9va3NbdGhpc10uZ2V0PWZ1bmN0aW9uKGEpe3JldHVybiBudWxsPT09YS5nZXRBdHRyaWJ1
dGUoInZhbHVlIik/Im9uIjphLnZhbHVlfSl9KTt2YXIgZGI9L14oPzpmb2N1c2luZm9jdXN8Zm9j
dXNvdXRibHVyKSQvO3IuZXh0ZW5kKHIuZXZlbnQse3RyaWdnZXI6ZnVuY3Rpb24oYixjLGUsZil7
dmFyIGcsaCxpLGosayxtLG4sbz1bZXx8ZF0scD1sLmNhbGwoYiwidHlwZSIpP2IudHlwZTpiLHE9
bC5jYWxsKGIsIm5hbWVzcGFjZSIpP2IubmFtZXNwYWNlLnNwbGl0KCIuIik6W107aWYoaD1pPWU9
ZXx8ZCwzIT09ZS5ub2RlVHlwZSYmOCE9PWUubm9kZVR5cGUmJiFkYi50ZXN0KHArci5ldmVudC50
cmlnZ2VyZWQpJiYocC5pbmRleE9mKCIuIik+LTEmJihxPXAuc3BsaXQoIi4iKSxwPXEuc2hpZnQo
KSxxLnNvcnQoKSksaz1wLmluZGV4T2YoIjoiKTwwJiYib24iK3AsYj1iW3IuZXhwYW5kb10/Yjpu
ZXcgci5FdmVudChwLCJvYmplY3QiPT10eXBlb2YgYiYmYiksYi5pc1RyaWdnZXI9Zj8yOjMsYi5u
YW1lc3BhY2U9cS5qb2luKCIuIiksYi5ybmFtZXNwYWNlPWIubmFtZXNwYWNlP25ldyBSZWdFeHAo
IihefFxcLikiK3Euam9pbigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIik6bnVsbCxiLnJlc3Vs
dD12b2lkIDAsYi50YXJnZXR8fChiLnRhcmdldD1lKSxjPW51bGw9PWM/W2JdOnIubWFrZUFycmF5
KGMsW2JdKSxuPXIuZXZlbnQuc3BlY2lhbFtwXXx8e30sZnx8IW4udHJpZ2dlcnx8bi50cmlnZ2Vy
LmFwcGx5KGUsYykhPT0hMSkpe2lmKCFmJiYhbi5ub0J1YmJsZSYmIXIuaXNXaW5kb3coZSkpe2Zv
cihqPW4uZGVsZWdhdGVUeXBlfHxwLGRiLnRlc3QoaitwKXx8KGg9aC5wYXJlbnROb2RlKTtoO2g9
aC5wYXJlbnROb2RlKW8ucHVzaChoKSxpPWg7aT09PShlLm93bmVyRG9jdW1lbnR8fGQpJiZvLnB1
c2goaS5kZWZhdWx0Vmlld3x8aS5wYXJlbnRXaW5kb3d8fGEpfWc9MDt3aGlsZSgoaD1vW2crK10p
JiYhYi5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKWIudHlwZT1nPjE/ajpuLmJpbmRUeXBlfHxwLG09
KFYuZ2V0KGgsImV2ZW50cyIpfHx7fSlbYi50eXBlXSYmVi5nZXQoaCwiaGFuZGxlIiksbSYmbS5h
cHBseShoLGMpLG09ayYmaFtrXSxtJiZtLmFwcGx5JiZUKGgpJiYoYi5yZXN1bHQ9bS5hcHBseSho
LGMpLGIucmVzdWx0PT09ITEmJmIucHJldmVudERlZmF1bHQoKSk7cmV0dXJuIGIudHlwZT1wLGZ8
fGIuaXNEZWZhdWx0UHJldmVudGVkKCl8fG4uX2RlZmF1bHQmJm4uX2RlZmF1bHQuYXBwbHkoby5w
b3AoKSxjKSE9PSExfHwhVChlKXx8ayYmci5pc0Z1bmN0aW9uKGVbcF0pJiYhci5pc1dpbmRvdyhl
KSYmKGk9ZVtrXSxpJiYoZVtrXT1udWxsKSxyLmV2ZW50LnRyaWdnZXJlZD1wLGVbcF0oKSxyLmV2
ZW50LnRyaWdnZXJlZD12b2lkIDAsaSYmKGVba109aSkpLGIucmVzdWx0fX0sc2ltdWxhdGU6ZnVu
Y3Rpb24oYSxiLGMpe3ZhciBkPXIuZXh0ZW5kKG5ldyByLkV2ZW50LGMse3R5cGU6YSxpc1NpbXVs
YXRlZDohMH0pO3IuZXZlbnQudHJpZ2dlcihkLG51bGwsYil9fSksci5mbi5leHRlbmQoe3RyaWdn
ZXI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ci5ldmVudC50cmln
Z2VyKGEsYix0aGlzKX0pfSx0cmlnZ2VySGFuZGxlcjpmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXNb
MF07aWYoYylyZXR1cm4gci5ldmVudC50cmlnZ2VyKGEsYixjLCEwKX19KSxyLmVhY2goImJsdXIg
Zm9jdXMgZm9jdXNpbiBmb2N1c291dCByZXNpemUgc2Nyb2xsIGNsaWNrIGRibGNsaWNrIG1vdXNl
ZG93biBtb3VzZXVwIG1vdXNlbW92ZSBtb3VzZW92ZXIgbW91c2VvdXQgbW91c2VlbnRlciBtb3Vz
ZWxlYXZlIGNoYW5nZSBzZWxlY3Qgc3VibWl0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgY29udGV4
dG1lbnUiLnNwbGl0KCIgIiksZnVuY3Rpb24oYSxiKXtyLmZuW2JdPWZ1bmN0aW9uKGEsYyl7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg+MD90aGlzLm9uKGIsbnVsbCxhLGMpOnRoaXMudHJpZ2dlcihi
KX19KSxyLmZuLmV4dGVuZCh7aG92ZXI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5tb3VzZWVu
dGVyKGEpLm1vdXNlbGVhdmUoYnx8YSl9fSksby5mb2N1c2luPSJvbmZvY3VzaW4iaW4gYSxvLmZv
Y3VzaW58fHIuZWFjaCh7Zm9jdXM6ImZvY3VzaW4iLGJsdXI6ImZvY3Vzb3V0In0sZnVuY3Rpb24o
YSxiKXt2YXIgYz1mdW5jdGlvbihhKXtyLmV2ZW50LnNpbXVsYXRlKGIsYS50YXJnZXQsci5ldmVu
dC5maXgoYSkpfTtyLmV2ZW50LnNwZWNpYWxbYl09e3NldHVwOmZ1bmN0aW9uKCl7dmFyIGQ9dGhp
cy5vd25lckRvY3VtZW50fHx0aGlzLGU9Vi5hY2Nlc3MoZCxiKTtlfHxkLmFkZEV2ZW50TGlzdGVu
ZXIoYSxjLCEwKSxWLmFjY2VzcyhkLGIsKGV8fDApKzEpfSx0ZWFyZG93bjpmdW5jdGlvbigpe3Zh
ciBkPXRoaXMub3duZXJEb2N1bWVudHx8dGhpcyxlPVYuYWNjZXNzKGQsYiktMTtlP1YuYWNjZXNz
KGQsYixlKTooZC5yZW1vdmVFdmVudExpc3RlbmVyKGEsYywhMCksVi5yZW1vdmUoZCxiKSl9fX0p
O3ZhciBlYj0vXFtcXSQvLGZiPS9ccj9cbi9nLGdiPS9eKD86c3VibWl0fGJ1dHRvbnxpbWFnZXxy
ZXNldHxmaWxlKSQvaSxoYj0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxrZXlnZW4pL2k7ZnVu
Y3Rpb24gaWIoYSxiLGMsZCl7dmFyIGU7aWYoci5pc0FycmF5KGIpKXIuZWFjaChiLGZ1bmN0aW9u
KGIsZSl7Y3x8ZWIudGVzdChhKT9kKGEsZSk6aWIoYSsiWyIrKCJvYmplY3QiPT10eXBlb2YgZSYm
bnVsbCE9ZT9iOiIiKSsiXSIsZSxjLGQpOworfSk7ZWxzZSBpZihjfHwib2JqZWN0IiE9PXIudHlw
ZShiKSlkKGEsYik7ZWxzZSBmb3IoZSBpbiBiKWliKGErIlsiK2UrIl0iLGJbZV0sYyxkKX1yLnBh
cmFtPWZ1bmN0aW9uKGEsYil7dmFyIGMsZD1bXSxlPWZ1bmN0aW9uKGEsYil7dmFyIGM9ci5pc0Z1
bmN0aW9uKGIpP2IoKTpiO2RbZC5sZW5ndGhdPWVuY29kZVVSSUNvbXBvbmVudChhKSsiPSIrZW5j
b2RlVVJJQ29tcG9uZW50KG51bGw9PWM/IiI6Yyl9O2lmKHIuaXNBcnJheShhKXx8YS5qcXVlcnkm
JiFyLmlzUGxhaW5PYmplY3QoYSkpci5lYWNoKGEsZnVuY3Rpb24oKXtlKHRoaXMubmFtZSx0aGlz
LnZhbHVlKX0pO2Vsc2UgZm9yKGMgaW4gYSlpYihjLGFbY10sYixlKTtyZXR1cm4gZC5qb2luKCIm
Iil9LHIuZm4uZXh0ZW5kKHtzZXJpYWxpemU6ZnVuY3Rpb24oKXtyZXR1cm4gci5wYXJhbSh0aGlz
LnNlcmlhbGl6ZUFycmF5KCkpfSxzZXJpYWxpemVBcnJheTpmdW5jdGlvbigpe3JldHVybiB0aGlz
Lm1hcChmdW5jdGlvbigpe3ZhciBhPXIucHJvcCh0aGlzLCJlbGVtZW50cyIpO3JldHVybiBhP3Iu
bWFrZUFycmF5KGEpOnRoaXN9KS5maWx0ZXIoZnVuY3Rpb24oKXt2YXIgYT10aGlzLnR5cGU7cmV0
dXJuIHRoaXMubmFtZSYmIXIodGhpcykuaXMoIjpkaXNhYmxlZCIpJiZoYi50ZXN0KHRoaXMubm9k
ZU5hbWUpJiYhZ2IudGVzdChhKSYmKHRoaXMuY2hlY2tlZHx8IWlhLnRlc3QoYSkpfSkubWFwKGZ1
bmN0aW9uKGEsYil7dmFyIGM9cih0aGlzKS52YWwoKTtyZXR1cm4gbnVsbD09Yz9udWxsOnIuaXNB
cnJheShjKT9yLm1hcChjLGZ1bmN0aW9uKGEpe3JldHVybntuYW1lOmIubmFtZSx2YWx1ZTphLnJl
cGxhY2UoZmIsIlxyXG4iKX19KTp7bmFtZTpiLm5hbWUsdmFsdWU6Yy5yZXBsYWNlKGZiLCJcclxu
Iil9fSkuZ2V0KCl9fSksci5mbi5leHRlbmQoe3dyYXBBbGw6ZnVuY3Rpb24oYSl7dmFyIGI7cmV0
dXJuIHRoaXNbMF0mJihyLmlzRnVuY3Rpb24oYSkmJihhPWEuY2FsbCh0aGlzWzBdKSksYj1yKGEs
dGhpc1swXS5vd25lckRvY3VtZW50KS5lcSgwKS5jbG9uZSghMCksdGhpc1swXS5wYXJlbnROb2Rl
JiZiLmluc2VydEJlZm9yZSh0aGlzWzBdKSxiLm1hcChmdW5jdGlvbigpe3ZhciBhPXRoaXM7d2hp
bGUoYS5maXJzdEVsZW1lbnRDaGlsZClhPWEuZmlyc3RFbGVtZW50Q2hpbGQ7cmV0dXJuIGF9KS5h
cHBlbmQodGhpcykpLHRoaXN9LHdyYXBJbm5lcjpmdW5jdGlvbihhKXtyZXR1cm4gci5pc0Z1bmN0
aW9uKGEpP3RoaXMuZWFjaChmdW5jdGlvbihiKXtyKHRoaXMpLndyYXBJbm5lcihhLmNhbGwodGhp
cyxiKSl9KTp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYj1yKHRoaXMpLGM9Yi5jb250ZW50cygp
O2MubGVuZ3RoP2Mud3JhcEFsbChhKTpiLmFwcGVuZChhKX0pfSx3cmFwOmZ1bmN0aW9uKGEpe3Zh
ciBiPXIuaXNGdW5jdGlvbihhKTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGMpe3IodGhpcyku
d3JhcEFsbChiP2EuY2FsbCh0aGlzLGMpOmEpfSl9LHVud3JhcDpmdW5jdGlvbihhKXtyZXR1cm4g
dGhpcy5wYXJlbnQoYSkubm90KCJib2R5IikuZWFjaChmdW5jdGlvbigpe3IodGhpcykucmVwbGFj
ZVdpdGgodGhpcy5jaGlsZE5vZGVzKX0pLHRoaXN9fSksci5leHByLnBzZXVkb3MuaGlkZGVuPWZ1
bmN0aW9uKGEpe3JldHVybiFyLmV4cHIucHNldWRvcy52aXNpYmxlKGEpfSxyLmV4cHIucHNldWRv
cy52aXNpYmxlPWZ1bmN0aW9uKGEpe3JldHVybiEhKGEub2Zmc2V0V2lkdGh8fGEub2Zmc2V0SGVp
Z2h0fHxhLmdldENsaWVudFJlY3RzKCkubGVuZ3RoKX0sby5jcmVhdGVIVE1MRG9jdW1lbnQ9ZnVu
Y3Rpb24oKXt2YXIgYT1kLmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgiIikuYm9k
eTtyZXR1cm4gYS5pbm5lckhUTUw9Ijxmb3JtPjwvZm9ybT48Zm9ybT48L2Zvcm0+IiwyPT09YS5j
aGlsZE5vZGVzLmxlbmd0aH0oKSxyLnBhcnNlSFRNTD1mdW5jdGlvbihhLGIsYyl7aWYoInN0cmlu
ZyIhPXR5cGVvZiBhKXJldHVybltdOyJib29sZWFuIj09dHlwZW9mIGImJihjPWIsYj0hMSk7dmFy
IGUsZixnO3JldHVybiBifHwoby5jcmVhdGVIVE1MRG9jdW1lbnQ/KGI9ZC5pbXBsZW1lbnRhdGlv
bi5jcmVhdGVIVE1MRG9jdW1lbnQoIiIpLGU9Yi5jcmVhdGVFbGVtZW50KCJiYXNlIiksZS5ocmVm
PWQubG9jYXRpb24uaHJlZixiLmhlYWQuYXBwZW5kQ2hpbGQoZSkpOmI9ZCksZj1CLmV4ZWMoYSks
Zz0hYyYmW10sZj9bYi5jcmVhdGVFbGVtZW50KGZbMV0pXTooZj1wYShbYV0sYixnKSxnJiZnLmxl
bmd0aCYmcihnKS5yZW1vdmUoKSxyLm1lcmdlKFtdLGYuY2hpbGROb2RlcykpfTtmdW5jdGlvbiBq
YihhKXtyZXR1cm4gci5pc1dpbmRvdyhhKT9hOjk9PT1hLm5vZGVUeXBlJiZhLmRlZmF1bHRWaWV3
fXIub2Zmc2V0PXtzZXRPZmZzZXQ6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZixnLGgsaSxqLGs9
ci5jc3MoYSwicG9zaXRpb24iKSxsPXIoYSksbT17fTsic3RhdGljIj09PWsmJihhLnN0eWxlLnBv
c2l0aW9uPSJyZWxhdGl2ZSIpLGg9bC5vZmZzZXQoKSxmPXIuY3NzKGEsInRvcCIpLGk9ci5jc3Mo
YSwibGVmdCIpLGo9KCJhYnNvbHV0ZSI9PT1rfHwiZml4ZWQiPT09aykmJihmK2kpLmluZGV4T2Yo
ImF1dG8iKT4tMSxqPyhkPWwucG9zaXRpb24oKSxnPWQudG9wLGU9ZC5sZWZ0KTooZz1wYXJzZUZs
b2F0KGYpfHwwLGU9cGFyc2VGbG9hdChpKXx8MCksci5pc0Z1bmN0aW9uKGIpJiYoYj1iLmNhbGwo
YSxjLHIuZXh0ZW5kKHt9LGgpKSksbnVsbCE9Yi50b3AmJihtLnRvcD1iLnRvcC1oLnRvcCtnKSxu
dWxsIT1iLmxlZnQmJihtLmxlZnQ9Yi5sZWZ0LWgubGVmdCtlKSwidXNpbmciaW4gYj9iLnVzaW5n
LmNhbGwoYSxtKTpsLmNzcyhtKX19LHIuZm4uZXh0ZW5kKHtvZmZzZXQ6ZnVuY3Rpb24oYSl7aWYo
YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdm9pZCAwPT09YT90aGlzOnRoaXMuZWFjaChmdW5jdGlv
bihiKXtyLm9mZnNldC5zZXRPZmZzZXQodGhpcyxhLGIpfSk7dmFyIGIsYyxkLGUsZj10aGlzWzBd
O2lmKGYpcmV0dXJuIGYuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGg/KGQ9Zi5nZXRCb3VuZGluZ0Ns
aWVudFJlY3QoKSxkLndpZHRofHxkLmhlaWdodD8oZT1mLm93bmVyRG9jdW1lbnQsYz1qYihlKSxi
PWUuZG9jdW1lbnRFbGVtZW50LHt0b3A6ZC50b3ArYy5wYWdlWU9mZnNldC1iLmNsaWVudFRvcCxs
ZWZ0OmQubGVmdCtjLnBhZ2VYT2Zmc2V0LWIuY2xpZW50TGVmdH0pOmQpOnt0b3A6MCxsZWZ0OjB9
fSxwb3NpdGlvbjpmdW5jdGlvbigpe2lmKHRoaXNbMF0pe3ZhciBhLGIsYz10aGlzWzBdLGQ9e3Rv
cDowLGxlZnQ6MH07cmV0dXJuImZpeGVkIj09PXIuY3NzKGMsInBvc2l0aW9uIik/Yj1jLmdldEJv
dW5kaW5nQ2xpZW50UmVjdCgpOihhPXRoaXMub2Zmc2V0UGFyZW50KCksYj10aGlzLm9mZnNldCgp
LHIubm9kZU5hbWUoYVswXSwiaHRtbCIpfHwoZD1hLm9mZnNldCgpKSxkPXt0b3A6ZC50b3Arci5j
c3MoYVswXSwiYm9yZGVyVG9wV2lkdGgiLCEwKSxsZWZ0OmQubGVmdCtyLmNzcyhhWzBdLCJib3Jk
ZXJMZWZ0V2lkdGgiLCEwKX0pLHt0b3A6Yi50b3AtZC50b3Atci5jc3MoYywibWFyZ2luVG9wIiwh
MCksbGVmdDpiLmxlZnQtZC5sZWZ0LXIuY3NzKGMsIm1hcmdpbkxlZnQiLCEwKX19fSxvZmZzZXRQ
YXJlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9m
ZnNldFBhcmVudDt3aGlsZShhJiYic3RhdGljIj09PXIuY3NzKGEsInBvc2l0aW9uIikpYT1hLm9m
ZnNldFBhcmVudDtyZXR1cm4gYXx8cWF9KX19KSxyLmVhY2goe3Njcm9sbExlZnQ6InBhZ2VYT2Zm
c2V0IixzY3JvbGxUb3A6InBhZ2VZT2Zmc2V0In0sZnVuY3Rpb24oYSxiKXt2YXIgYz0icGFnZVlP
ZmZzZXQiPT09YjtyLmZuW2FdPWZ1bmN0aW9uKGQpe3JldHVybiBTKHRoaXMsZnVuY3Rpb24oYSxk
LGUpe3ZhciBmPWpiKGEpO3JldHVybiB2b2lkIDA9PT1lP2Y/ZltiXTphW2RdOnZvaWQoZj9mLnNj
cm9sbFRvKGM/Zi5wYWdlWE9mZnNldDplLGM/ZTpmLnBhZ2VZT2Zmc2V0KTphW2RdPWUpfSxhLGQs
YXJndW1lbnRzLmxlbmd0aCl9fSksci5lYWNoKFsidG9wIiwibGVmdCJdLGZ1bmN0aW9uKGEsYil7
ci5jc3NIb29rc1tiXT1PYShvLnBpeGVsUG9zaXRpb24sZnVuY3Rpb24oYSxjKXtpZihjKXJldHVy
biBjPU5hKGEsYiksTGEudGVzdChjKT9yKGEpLnBvc2l0aW9uKClbYl0rInB4IjpjfSl9KSxyLmVh
Y2goe0hlaWdodDoiaGVpZ2h0IixXaWR0aDoid2lkdGgifSxmdW5jdGlvbihhLGIpe3IuZWFjaCh7
cGFkZGluZzoiaW5uZXIiK2EsY29udGVudDpiLCIiOiJvdXRlciIrYX0sZnVuY3Rpb24oYyxkKXty
LmZuW2RdPWZ1bmN0aW9uKGUsZil7dmFyIGc9YXJndW1lbnRzLmxlbmd0aCYmKGN8fCJib29sZWFu
IiE9dHlwZW9mIGUpLGg9Y3x8KGU9PT0hMHx8Zj09PSEwPyJtYXJnaW4iOiJib3JkZXIiKTtyZXR1
cm4gUyh0aGlzLGZ1bmN0aW9uKGIsYyxlKXt2YXIgZjtyZXR1cm4gci5pc1dpbmRvdyhiKT8wPT09
ZC5pbmRleE9mKCJvdXRlciIpP2JbImlubmVyIithXTpiLmRvY3VtZW50LmRvY3VtZW50RWxlbWVu
dFsiY2xpZW50IithXTo5PT09Yi5ub2RlVHlwZT8oZj1iLmRvY3VtZW50RWxlbWVudCxNYXRoLm1h
eChiLmJvZHlbInNjcm9sbCIrYV0sZlsic2Nyb2xsIithXSxiLmJvZHlbIm9mZnNldCIrYV0sZlsi
b2Zmc2V0IithXSxmWyJjbGllbnQiK2FdKSk6dm9pZCAwPT09ZT9yLmNzcyhiLGMsaCk6ci5zdHls
ZShiLGMsZSxoKX0sYixnP2U6dm9pZCAwLGcpfX0pfSksImZ1bmN0aW9uIj09dHlwZW9mIGRlZmlu
ZSYmZGVmaW5lLmFtZCYmZGVmaW5lKCJqcXVlcnkiLFtdLGZ1bmN0aW9uKCl7cmV0dXJuIHJ9KTt2
YXIga2I9YS5qUXVlcnksbGI9YS4kO3JldHVybiByLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oYil7cmV0
dXJuIGEuJD09PXImJihhLiQ9bGIpLGImJmEualF1ZXJ5PT09ciYmKGEualF1ZXJ5PWtiKSxyfSxi
fHwoYS5qUXVlcnk9YS4kPXIpLHJ9KTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25l
L25vZGVfbW9kdWxlcy9qcXVlcnkvZGlzdC9qcXVlcnkuc2xpbS5taW4ubWFwIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9kaXN0L2pxdWVyeS5zbGltLm1pbi5tYXAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uODA1NGI5OTg4ZGNiYWE1OThkY2I3NTgzZWQ3YTExODg0NzVjM2VjOAotLS0g
L2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkv
ZGlzdC9qcXVlcnkuc2xpbS5taW4ubWFwCkBAIC0wLDAgKzEgQEAKK3sidmVyc2lvbiI6Mywic291
cmNlcyI6WyJqcXVlcnkuc2xpbS5qcyJdLCJuYW1lcyI6WyJnbG9iYWwiLCJmYWN0b3J5IiwibW9k
dWxlIiwiZXhwb3J0cyIsImRvY3VtZW50IiwidyIsIkVycm9yIiwid2luZG93IiwidGhpcyIsIm5v
R2xvYmFsIiwiYXJyIiwiZ2V0UHJvdG8iLCJPYmplY3QiLCJnZXRQcm90b3R5cGVPZiIsInNsaWNl
IiwiY29uY2F0IiwicHVzaCIsImluZGV4T2YiLCJjbGFzczJ0eXBlIiwidG9TdHJpbmciLCJoYXNP
d24iLCJoYXNPd25Qcm9wZXJ0eSIsImZuVG9TdHJpbmciLCJPYmplY3RGdW5jdGlvblN0cmluZyIs
ImNhbGwiLCJzdXBwb3J0IiwiRE9NRXZhbCIsImNvZGUiLCJkb2MiLCJzY3JpcHQiLCJjcmVhdGVF
bGVtZW50IiwidGV4dCIsImhlYWQiLCJhcHBlbmRDaGlsZCIsInBhcmVudE5vZGUiLCJyZW1vdmVD
aGlsZCIsInZlcnNpb24iLCJqUXVlcnkiLCJzZWxlY3RvciIsImNvbnRleHQiLCJmbiIsImluaXQi
LCJydHJpbSIsInJtc1ByZWZpeCIsInJkYXNoQWxwaGEiLCJmY2FtZWxDYXNlIiwiYWxsIiwibGV0
dGVyIiwidG9VcHBlckNhc2UiLCJwcm90b3R5cGUiLCJqcXVlcnkiLCJjb25zdHJ1Y3RvciIsImxl
bmd0aCIsInRvQXJyYXkiLCJnZXQiLCJudW0iLCJwdXNoU3RhY2siLCJlbGVtcyIsInJldCIsIm1l
cmdlIiwicHJldk9iamVjdCIsImVhY2giLCJjYWxsYmFjayIsIm1hcCIsImVsZW0iLCJpIiwiYXBw
bHkiLCJhcmd1bWVudHMiLCJmaXJzdCIsImVxIiwibGFzdCIsImxlbiIsImoiLCJlbmQiLCJzb3J0
Iiwic3BsaWNlIiwiZXh0ZW5kIiwib3B0aW9ucyIsIm5hbWUiLCJzcmMiLCJjb3B5IiwiY29weUlz
QXJyYXkiLCJjbG9uZSIsInRhcmdldCIsImRlZXAiLCJpc0Z1bmN0aW9uIiwiaXNQbGFpbk9iamVj
dCIsImlzQXJyYXkiLCJ1bmRlZmluZWQiLCJleHBhbmRvIiwiTWF0aCIsInJhbmRvbSIsInJlcGxh
Y2UiLCJpc1JlYWR5IiwiZXJyb3IiLCJtc2ciLCJub29wIiwib2JqIiwidHlwZSIsIkFycmF5Iiwi
aXNXaW5kb3ciLCJpc051bWVyaWMiLCJpc05hTiIsInBhcnNlRmxvYXQiLCJwcm90byIsIkN0b3Ii
LCJpc0VtcHR5T2JqZWN0IiwiZ2xvYmFsRXZhbCIsImNhbWVsQ2FzZSIsInN0cmluZyIsIm5vZGVO
YW1lIiwidG9Mb3dlckNhc2UiLCJpc0FycmF5TGlrZSIsInRyaW0iLCJtYWtlQXJyYXkiLCJyZXN1
bHRzIiwiaW5BcnJheSIsInNlY29uZCIsImdyZXAiLCJpbnZlcnQiLCJjYWxsYmFja0ludmVyc2Ui
LCJtYXRjaGVzIiwiY2FsbGJhY2tFeHBlY3QiLCJhcmciLCJ2YWx1ZSIsImd1aWQiLCJwcm94eSIs
InRtcCIsImFyZ3MiLCJub3ciLCJEYXRlIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJzcGxpdCIsIlNp
enpsZSIsIkV4cHIiLCJnZXRUZXh0IiwiaXNYTUwiLCJ0b2tlbml6ZSIsImNvbXBpbGUiLCJzZWxl
Y3QiLCJvdXRlcm1vc3RDb250ZXh0Iiwic29ydElucHV0IiwiaGFzRHVwbGljYXRlIiwic2V0RG9j
dW1lbnQiLCJkb2NFbGVtIiwiZG9jdW1lbnRJc0hUTUwiLCJyYnVnZ3lRU0EiLCJyYnVnZ3lNYXRj
aGVzIiwiY29udGFpbnMiLCJwcmVmZXJyZWREb2MiLCJkaXJydW5zIiwiZG9uZSIsImNsYXNzQ2Fj
aGUiLCJjcmVhdGVDYWNoZSIsInRva2VuQ2FjaGUiLCJjb21waWxlckNhY2hlIiwic29ydE9yZGVy
IiwiYSIsImIiLCJwb3AiLCJwdXNoX25hdGl2ZSIsImxpc3QiLCJib29sZWFucyIsIndoaXRlc3Bh
Y2UiLCJpZGVudGlmaWVyIiwiYXR0cmlidXRlcyIsInBzZXVkb3MiLCJyd2hpdGVzcGFjZSIsIlJl
Z0V4cCIsInJjb21tYSIsInJjb21iaW5hdG9ycyIsInJhdHRyaWJ1dGVRdW90ZXMiLCJycHNldWRv
IiwicmlkZW50aWZpZXIiLCJtYXRjaEV4cHIiLCJJRCIsIkNMQVNTIiwiVEFHIiwiQVRUUiIsIlBT
RVVETyIsIkNISUxEIiwiYm9vbCIsIm5lZWRzQ29udGV4dCIsInJpbnB1dHMiLCJyaGVhZGVyIiwi
cm5hdGl2ZSIsInJxdWlja0V4cHIiLCJyc2libGluZyIsInJ1bmVzY2FwZSIsImZ1bmVzY2FwZSIs
Il8iLCJlc2NhcGVkIiwiZXNjYXBlZFdoaXRlc3BhY2UiLCJoaWdoIiwiU3RyaW5nIiwiZnJvbUNo
YXJDb2RlIiwicmNzc2VzY2FwZSIsImZjc3Nlc2NhcGUiLCJjaCIsImFzQ29kZVBvaW50IiwiY2hh
ckNvZGVBdCIsInVubG9hZEhhbmRsZXIiLCJkaXNhYmxlZEFuY2VzdG9yIiwiYWRkQ29tYmluYXRv
ciIsImRpc2FibGVkIiwiZGlyIiwibmV4dCIsImNoaWxkTm9kZXMiLCJub2RlVHlwZSIsImUiLCJl
bHMiLCJzZWVkIiwibSIsIm5pZCIsIm1hdGNoIiwiZ3JvdXBzIiwibmV3U2VsZWN0b3IiLCJuZXdD
b250ZXh0Iiwib3duZXJEb2N1bWVudCIsImV4ZWMiLCJnZXRFbGVtZW50QnlJZCIsImlkIiwiZ2V0
RWxlbWVudHNCeVRhZ05hbWUiLCJnZXRFbGVtZW50c0J5Q2xhc3NOYW1lIiwicXNhIiwidGVzdCIs
ImdldEF0dHJpYnV0ZSIsInNldEF0dHJpYnV0ZSIsInRvU2VsZWN0b3IiLCJqb2luIiwidGVzdENv
bnRleHQiLCJxdWVyeVNlbGVjdG9yQWxsIiwicXNhRXJyb3IiLCJyZW1vdmVBdHRyaWJ1dGUiLCJr
ZXlzIiwiY2FjaGUiLCJrZXkiLCJjYWNoZUxlbmd0aCIsInNoaWZ0IiwibWFya0Z1bmN0aW9uIiwi
YXNzZXJ0IiwiZWwiLCJhZGRIYW5kbGUiLCJhdHRycyIsImhhbmRsZXIiLCJhdHRySGFuZGxlIiwi
c2libGluZ0NoZWNrIiwiY3VyIiwiZGlmZiIsInNvdXJjZUluZGV4IiwibmV4dFNpYmxpbmciLCJj
cmVhdGVJbnB1dFBzZXVkbyIsImNyZWF0ZUJ1dHRvblBzZXVkbyIsImNyZWF0ZURpc2FibGVkUHNl
dWRvIiwiaXNEaXNhYmxlZCIsImNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8iLCJhcmd1bWVudCIsIm1h
dGNoSW5kZXhlcyIsImRvY3VtZW50RWxlbWVudCIsIm5vZGUiLCJoYXNDb21wYXJlIiwic3ViV2lu
ZG93IiwiZGVmYXVsdFZpZXciLCJ0b3AiLCJhZGRFdmVudExpc3RlbmVyIiwiYXR0YWNoRXZlbnQi
LCJjbGFzc05hbWUiLCJjcmVhdGVDb21tZW50IiwiZ2V0QnlJZCIsImdldEVsZW1lbnRzQnlOYW1l
IiwiZmlsdGVyIiwiYXR0cklkIiwiZmluZCIsImdldEF0dHJpYnV0ZU5vZGUiLCJ0YWciLCJpbm5l
ckhUTUwiLCJpbnB1dCIsIm1hdGNoZXNTZWxlY3RvciIsIndlYmtpdE1hdGNoZXNTZWxlY3RvciIs
Im1vek1hdGNoZXNTZWxlY3RvciIsIm9NYXRjaGVzU2VsZWN0b3IiLCJtc01hdGNoZXNTZWxlY3Rv
ciIsImRpc2Nvbm5lY3RlZE1hdGNoIiwiY29tcGFyZURvY3VtZW50UG9zaXRpb24iLCJhZG93biIs
ImJ1cCIsImNvbXBhcmUiLCJzb3J0RGV0YWNoZWQiLCJhdXAiLCJhcCIsImJwIiwidW5zaGlmdCIs
ImV4cHIiLCJlbGVtZW50cyIsImF0dHIiLCJ2YWwiLCJzcGVjaWZpZWQiLCJlc2NhcGUiLCJzZWwi
LCJ1bmlxdWVTb3J0IiwiZHVwbGljYXRlcyIsImRldGVjdER1cGxpY2F0ZXMiLCJzb3J0U3RhYmxl
IiwidGV4dENvbnRlbnQiLCJmaXJzdENoaWxkIiwibm9kZVZhbHVlIiwic2VsZWN0b3JzIiwiY3Jl
YXRlUHNldWRvIiwicmVsYXRpdmUiLCI+IiwiICIsIisiLCJ+IiwicHJlRmlsdGVyIiwiZXhjZXNz
IiwidW5xdW90ZWQiLCJub2RlTmFtZVNlbGVjdG9yIiwicGF0dGVybiIsIm9wZXJhdG9yIiwiY2hl
Y2siLCJyZXN1bHQiLCJ3aGF0Iiwic2ltcGxlIiwiZm9yd2FyZCIsIm9mVHlwZSIsInhtbCIsInVu
aXF1ZUNhY2hlIiwib3V0ZXJDYWNoZSIsIm5vZGVJbmRleCIsInN0YXJ0IiwicGFyZW50IiwidXNl
Q2FjaGUiLCJsYXN0Q2hpbGQiLCJ1bmlxdWVJRCIsInBzZXVkbyIsInNldEZpbHRlcnMiLCJpZHgi
LCJtYXRjaGVkIiwibm90IiwibWF0Y2hlciIsInVubWF0Y2hlZCIsImhhcyIsImlubmVyVGV4dCIs
ImxhbmciLCJlbGVtTGFuZyIsImhhc2giLCJsb2NhdGlvbiIsInJvb3QiLCJmb2N1cyIsImFjdGl2
ZUVsZW1lbnQiLCJoYXNGb2N1cyIsImhyZWYiLCJ0YWJJbmRleCIsImVuYWJsZWQiLCJjaGVja2Vk
Iiwic2VsZWN0ZWQiLCJzZWxlY3RlZEluZGV4IiwiZW1wdHkiLCJoZWFkZXIiLCJidXR0b24iLCJl
dmVuIiwib2RkIiwibHQiLCJndCIsInJhZGlvIiwiY2hlY2tib3giLCJmaWxlIiwicGFzc3dvcmQi
LCJpbWFnZSIsInN1Ym1pdCIsInJlc2V0IiwiZmlsdGVycyIsInBhcnNlT25seSIsInRva2VucyIs
InNvRmFyIiwicHJlRmlsdGVycyIsImNhY2hlZCIsImNvbWJpbmF0b3IiLCJiYXNlIiwic2tpcCIs
ImNoZWNrTm9uRWxlbWVudHMiLCJkb25lTmFtZSIsIm9sZENhY2hlIiwibmV3Q2FjaGUiLCJlbGVt
ZW50TWF0Y2hlciIsIm1hdGNoZXJzIiwibXVsdGlwbGVDb250ZXh0cyIsImNvbnRleHRzIiwiY29u
ZGVuc2UiLCJuZXdVbm1hdGNoZWQiLCJtYXBwZWQiLCJzZXRNYXRjaGVyIiwicG9zdEZpbHRlciIs
InBvc3RGaW5kZXIiLCJwb3N0U2VsZWN0b3IiLCJ0ZW1wIiwicHJlTWFwIiwicG9zdE1hcCIsInBy
ZWV4aXN0aW5nIiwibWF0Y2hlckluIiwibWF0Y2hlck91dCIsIm1hdGNoZXJGcm9tVG9rZW5zIiwi
Y2hlY2tDb250ZXh0IiwibGVhZGluZ1JlbGF0aXZlIiwiaW1wbGljaXRSZWxhdGl2ZSIsIm1hdGNo
Q29udGV4dCIsIm1hdGNoQW55Q29udGV4dCIsIm1hdGNoZXJGcm9tR3JvdXBNYXRjaGVycyIsImVs
ZW1lbnRNYXRjaGVycyIsInNldE1hdGNoZXJzIiwiYnlTZXQiLCJieUVsZW1lbnQiLCJzdXBlck1h
dGNoZXIiLCJvdXRlcm1vc3QiLCJtYXRjaGVkQ291bnQiLCJzZXRNYXRjaGVkIiwiY29udGV4dEJh
Y2t1cCIsImRpcnJ1bnNVbmlxdWUiLCJ0b2tlbiIsImNvbXBpbGVkIiwiZGVmYXVsdFZhbHVlIiwi
dW5pcXVlIiwiaXNYTUxEb2MiLCJlc2NhcGVTZWxlY3RvciIsInVudGlsIiwidHJ1bmNhdGUiLCJp
cyIsInNpYmxpbmdzIiwibiIsInJuZWVkc0NvbnRleHQiLCJyc2luZ2xlVGFnIiwicmlzU2ltcGxl
Iiwid2lubm93IiwicXVhbGlmaWVyIiwic2VsZiIsInJvb3RqUXVlcnkiLCJwYXJzZUhUTUwiLCJy
ZWFkeSIsInJwYXJlbnRzcHJldiIsImd1YXJhbnRlZWRVbmlxdWUiLCJjaGlsZHJlbiIsImNvbnRl
bnRzIiwicHJldiIsInRhcmdldHMiLCJsIiwiY2xvc2VzdCIsImluZGV4IiwicHJldkFsbCIsImFk
ZCIsImFkZEJhY2siLCJzaWJsaW5nIiwicGFyZW50cyIsInBhcmVudHNVbnRpbCIsIm5leHRBbGwi
LCJuZXh0VW50aWwiLCJwcmV2VW50aWwiLCJjb250ZW50RG9jdW1lbnQiLCJyZXZlcnNlIiwicm5v
dGh0bWx3aGl0ZSIsImNyZWF0ZU9wdGlvbnMiLCJvYmplY3QiLCJmbGFnIiwiQ2FsbGJhY2tzIiwi
ZmlyaW5nIiwibWVtb3J5IiwiZmlyZWQiLCJsb2NrZWQiLCJxdWV1ZSIsImZpcmluZ0luZGV4Iiwi
ZmlyZSIsIm9uY2UiLCJzdG9wT25GYWxzZSIsInJlbW92ZSIsImRpc2FibGUiLCJsb2NrIiwiZmly
ZVdpdGgiLCJJZGVudGl0eSIsInYiLCJUaHJvd2VyIiwiZXgiLCJhZG9wdFZhbHVlIiwicmVzb2x2
ZSIsInJlamVjdCIsIm1ldGhvZCIsInByb21pc2UiLCJmYWlsIiwidGhlbiIsIkRlZmVycmVkIiwi
ZnVuYyIsInR1cGxlcyIsInN0YXRlIiwiYWx3YXlzIiwiZGVmZXJyZWQiLCJjYXRjaCIsInBpcGUi
LCJmbnMiLCJuZXdEZWZlciIsInR1cGxlIiwicmV0dXJuZWQiLCJwcm9ncmVzcyIsIm5vdGlmeSIs
Im9uRnVsZmlsbGVkIiwib25SZWplY3RlZCIsIm9uUHJvZ3Jlc3MiLCJtYXhEZXB0aCIsImRlcHRo
Iiwic3BlY2lhbCIsInRoYXQiLCJtaWdodFRocm93IiwiVHlwZUVycm9yIiwibm90aWZ5V2l0aCIs
InJlc29sdmVXaXRoIiwicHJvY2VzcyIsImV4Y2VwdGlvbkhvb2siLCJzdGFja1RyYWNlIiwicmVq
ZWN0V2l0aCIsImdldFN0YWNrSG9vayIsInNldFRpbWVvdXQiLCJzdGF0ZVN0cmluZyIsIndoZW4i
LCJzaW5nbGVWYWx1ZSIsInJlbWFpbmluZyIsInJlc29sdmVDb250ZXh0cyIsInJlc29sdmVWYWx1
ZXMiLCJtYXN0ZXIiLCJ1cGRhdGVGdW5jIiwicmVycm9yTmFtZXMiLCJzdGFjayIsImNvbnNvbGUi
LCJ3YXJuIiwibWVzc2FnZSIsInJlYWR5RXhjZXB0aW9uIiwicmVhZHlMaXN0IiwicmVhZHlXYWl0
IiwiaG9sZFJlYWR5IiwiaG9sZCIsIndhaXQiLCJjb21wbGV0ZWQiLCJyZW1vdmVFdmVudExpc3Rl
bmVyIiwicmVhZHlTdGF0ZSIsImRvU2Nyb2xsIiwiYWNjZXNzIiwiY2hhaW5hYmxlIiwiZW1wdHlH
ZXQiLCJyYXciLCJidWxrIiwiYWNjZXB0RGF0YSIsIm93bmVyIiwiRGF0YSIsInVpZCIsImRlZmlu
ZVByb3BlcnR5IiwiY29uZmlndXJhYmxlIiwic2V0IiwiZGF0YSIsInByb3AiLCJoYXNEYXRhIiwi
ZGF0YVByaXYiLCJkYXRhVXNlciIsInJicmFjZSIsInJtdWx0aURhc2giLCJnZXREYXRhIiwiSlNP
TiIsInBhcnNlIiwiZGF0YUF0dHIiLCJyZW1vdmVEYXRhIiwiX2RhdGEiLCJfcmVtb3ZlRGF0YSIs
ImRlcXVldWUiLCJzdGFydExlbmd0aCIsImhvb2tzIiwiX3F1ZXVlSG9va3MiLCJzdG9wIiwic2V0
dGVyIiwiY2xlYXJRdWV1ZSIsImNvdW50IiwiZGVmZXIiLCJwbnVtIiwic291cmNlIiwicmNzc051
bSIsImNzc0V4cGFuZCIsImlzSGlkZGVuV2l0aGluVHJlZSIsInN0eWxlIiwiZGlzcGxheSIsImNz
cyIsInN3YXAiLCJvbGQiLCJhZGp1c3RDU1MiLCJ2YWx1ZVBhcnRzIiwidHdlZW4iLCJhZGp1c3Rl
ZCIsInNjYWxlIiwibWF4SXRlcmF0aW9ucyIsImN1cnJlbnRWYWx1ZSIsImluaXRpYWwiLCJ1bml0
IiwiY3NzTnVtYmVyIiwiaW5pdGlhbEluVW5pdCIsImRlZmF1bHREaXNwbGF5TWFwIiwiZ2V0RGVm
YXVsdERpc3BsYXkiLCJib2R5Iiwic2hvd0hpZGUiLCJzaG93IiwidmFsdWVzIiwiaGlkZSIsInRv
Z2dsZSIsInJjaGVja2FibGVUeXBlIiwicnRhZ05hbWUiLCJyc2NyaXB0VHlwZSIsIndyYXBNYXAi
LCJvcHRpb24iLCJ0aGVhZCIsImNvbCIsInRyIiwidGQiLCJfZGVmYXVsdCIsIm9wdGdyb3VwIiwi
dGJvZHkiLCJ0Zm9vdCIsImNvbGdyb3VwIiwiY2FwdGlvbiIsInRoIiwiZ2V0QWxsIiwic2V0R2xv
YmFsRXZhbCIsInJlZkVsZW1lbnRzIiwicmh0bWwiLCJidWlsZEZyYWdtZW50Iiwic2NyaXB0cyIs
InNlbGVjdGlvbiIsImlnbm9yZWQiLCJ3cmFwIiwiZnJhZ21lbnQiLCJjcmVhdGVEb2N1bWVudEZy
YWdtZW50Iiwibm9kZXMiLCJodG1sUHJlZmlsdGVyIiwiY3JlYXRlVGV4dE5vZGUiLCJkaXYiLCJj
aGVja0Nsb25lIiwiY2xvbmVOb2RlIiwibm9DbG9uZUNoZWNrZWQiLCJya2V5RXZlbnQiLCJybW91
c2VFdmVudCIsInJ0eXBlbmFtZXNwYWNlIiwicmV0dXJuVHJ1ZSIsInJldHVybkZhbHNlIiwic2Fm
ZUFjdGl2ZUVsZW1lbnQiLCJlcnIiLCJvbiIsInR5cGVzIiwib25lIiwib3JpZ0ZuIiwiZXZlbnQi
LCJvZmYiLCJoYW5kbGVPYmpJbiIsImV2ZW50SGFuZGxlIiwiZXZlbnRzIiwidCIsImhhbmRsZU9i
aiIsImhhbmRsZXJzIiwibmFtZXNwYWNlcyIsIm9yaWdUeXBlIiwiZWxlbURhdGEiLCJoYW5kbGUi
LCJ0cmlnZ2VyZWQiLCJkaXNwYXRjaCIsImRlbGVnYXRlVHlwZSIsImJpbmRUeXBlIiwibmFtZXNw
YWNlIiwiZGVsZWdhdGVDb3VudCIsInNldHVwIiwibWFwcGVkVHlwZXMiLCJvcmlnQ291bnQiLCJ0
ZWFyZG93biIsInJlbW92ZUV2ZW50IiwibmF0aXZlRXZlbnQiLCJmaXgiLCJoYW5kbGVyUXVldWUi
LCJkZWxlZ2F0ZVRhcmdldCIsInByZURpc3BhdGNoIiwiaXNQcm9wYWdhdGlvblN0b3BwZWQiLCJj
dXJyZW50VGFyZ2V0IiwiaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQiLCJybmFtZXNwYWNl
IiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJwb3N0RGlzcGF0Y2giLCJtYXRj
aGVkSGFuZGxlcnMiLCJtYXRjaGVkU2VsZWN0b3JzIiwiYWRkUHJvcCIsImhvb2siLCJFdmVudCIs
ImVudW1lcmFibGUiLCJvcmlnaW5hbEV2ZW50Iiwid3JpdGFibGUiLCJsb2FkIiwibm9CdWJibGUi
LCJ0cmlnZ2VyIiwiYmx1ciIsImNsaWNrIiwiYmVmb3JldW5sb2FkIiwicmV0dXJuVmFsdWUiLCJw
cm9wcyIsImlzRGVmYXVsdFByZXZlbnRlZCIsImRlZmF1bHRQcmV2ZW50ZWQiLCJyZWxhdGVkVGFy
Z2V0IiwidGltZVN0YW1wIiwiaXNTaW11bGF0ZWQiLCJzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24i
LCJhbHRLZXkiLCJidWJibGVzIiwiY2FuY2VsYWJsZSIsImNoYW5nZWRUb3VjaGVzIiwiY3RybEtl
eSIsImRldGFpbCIsImV2ZW50UGhhc2UiLCJtZXRhS2V5IiwicGFnZVgiLCJwYWdlWSIsInNoaWZ0
S2V5IiwidmlldyIsImNoYXIiLCJjaGFyQ29kZSIsImtleUNvZGUiLCJidXR0b25zIiwiY2xpZW50
WCIsImNsaWVudFkiLCJvZmZzZXRYIiwib2Zmc2V0WSIsInBvaW50ZXJJZCIsInBvaW50ZXJUeXBl
Iiwic2NyZWVuWCIsInNjcmVlblkiLCJ0YXJnZXRUb3VjaGVzIiwidG9FbGVtZW50IiwidG91Y2hl
cyIsIndoaWNoIiwibW91c2VlbnRlciIsIm1vdXNlbGVhdmUiLCJwb2ludGVyZW50ZXIiLCJwb2lu
dGVybGVhdmUiLCJvcmlnIiwicmVsYXRlZCIsInJ4aHRtbFRhZyIsInJub0lubmVyaHRtbCIsInJj
aGVja2VkIiwicnNjcmlwdFR5cGVNYXNrZWQiLCJyY2xlYW5TY3JpcHQiLCJtYW5pcHVsYXRpb25U
YXJnZXQiLCJjb250ZW50IiwiZGlzYWJsZVNjcmlwdCIsInJlc3RvcmVTY3JpcHQiLCJjbG9uZUNv
cHlFdmVudCIsImRlc3QiLCJwZGF0YU9sZCIsInBkYXRhQ3VyIiwidWRhdGFPbGQiLCJ1ZGF0YUN1
ciIsImZpeElucHV0IiwiZG9tTWFuaXAiLCJjb2xsZWN0aW9uIiwiaGFzU2NyaXB0cyIsImlOb0Ns
b25lIiwiaHRtbCIsIl9ldmFsVXJsIiwia2VlcERhdGEiLCJjbGVhbkRhdGEiLCJkYXRhQW5kRXZl
bnRzIiwiZGVlcERhdGFBbmRFdmVudHMiLCJzcmNFbGVtZW50cyIsImRlc3RFbGVtZW50cyIsImlu
UGFnZSIsImRldGFjaCIsImFwcGVuZCIsInByZXBlbmQiLCJpbnNlcnRCZWZvcmUiLCJiZWZvcmUi
LCJhZnRlciIsInJlcGxhY2VXaXRoIiwicmVwbGFjZUNoaWxkIiwiYXBwZW5kVG8iLCJwcmVwZW5k
VG8iLCJpbnNlcnRBZnRlciIsInJlcGxhY2VBbGwiLCJvcmlnaW5hbCIsImluc2VydCIsInJtYXJn
aW4iLCJybnVtbm9ucHgiLCJnZXRTdHlsZXMiLCJvcGVuZXIiLCJnZXRDb21wdXRlZFN0eWxlIiwi
Y29tcHV0ZVN0eWxlVGVzdHMiLCJjc3NUZXh0IiwiY29udGFpbmVyIiwiZGl2U3R5bGUiLCJwaXhl
bFBvc2l0aW9uVmFsIiwicmVsaWFibGVNYXJnaW5MZWZ0VmFsIiwibWFyZ2luTGVmdCIsImJveFNp
emluZ1JlbGlhYmxlVmFsIiwid2lkdGgiLCJtYXJnaW5SaWdodCIsInBpeGVsTWFyZ2luUmlnaHRW
YWwiLCJiYWNrZ3JvdW5kQ2xpcCIsImNsZWFyQ2xvbmVTdHlsZSIsInBpeGVsUG9zaXRpb24iLCJi
b3hTaXppbmdSZWxpYWJsZSIsInBpeGVsTWFyZ2luUmlnaHQiLCJyZWxpYWJsZU1hcmdpbkxlZnQi
LCJjdXJDU1MiLCJjb21wdXRlZCIsIm1pbldpZHRoIiwibWF4V2lkdGgiLCJnZXRQcm9wZXJ0eVZh
bHVlIiwiYWRkR2V0SG9va0lmIiwiY29uZGl0aW9uRm4iLCJob29rRm4iLCJyZGlzcGxheXN3YXAi
LCJjc3NTaG93IiwicG9zaXRpb24iLCJ2aXNpYmlsaXR5IiwiY3NzTm9ybWFsVHJhbnNmb3JtIiwi
bGV0dGVyU3BhY2luZyIsImZvbnRXZWlnaHQiLCJjc3NQcmVmaXhlcyIsImVtcHR5U3R5bGUiLCJ2
ZW5kb3JQcm9wTmFtZSIsImNhcE5hbWUiLCJzZXRQb3NpdGl2ZU51bWJlciIsInN1YnRyYWN0Iiwi
bWF4IiwiYXVnbWVudFdpZHRoT3JIZWlnaHQiLCJleHRyYSIsImlzQm9yZGVyQm94Iiwic3R5bGVz
IiwiZ2V0V2lkdGhPckhlaWdodCIsInZhbHVlSXNCb3JkZXJCb3giLCJnZXRDbGllbnRSZWN0cyIs
ImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImNzc0hvb2tzIiwib3BhY2l0eSIsImFuaW1hdGlvbkl0
ZXJhdGlvbkNvdW50IiwiY29sdW1uQ291bnQiLCJmaWxsT3BhY2l0eSIsImZsZXhHcm93IiwiZmxl
eFNocmluayIsImxpbmVIZWlnaHQiLCJvcmRlciIsIm9ycGhhbnMiLCJ3aWRvd3MiLCJ6SW5kZXgi
LCJ6b29tIiwiY3NzUHJvcHMiLCJmbG9hdCIsIm9yaWdOYW1lIiwiaXNGaW5pdGUiLCJsZWZ0Iiwi
bWFyZ2luIiwicGFkZGluZyIsImJvcmRlciIsInByZWZpeCIsInN1ZmZpeCIsImV4cGFuZCIsImV4
cGFuZGVkIiwicGFydHMiLCJkZWxheSIsInRpbWUiLCJmeCIsInNwZWVkcyIsInRpbWVvdXQiLCJj
bGVhclRpbWVvdXQiLCJvcHQiLCJjaGVja09uIiwib3B0U2VsZWN0ZWQiLCJyYWRpb1ZhbHVlIiwi
Ym9vbEhvb2siLCJyZW1vdmVBdHRyIiwiblR5cGUiLCJhdHRySG9va3MiLCJhdHRyTmFtZXMiLCJn
ZXR0ZXIiLCJsb3dlcmNhc2VOYW1lIiwicmZvY3VzYWJsZSIsInJjbGlja2FibGUiLCJyZW1vdmVQ
cm9wIiwicHJvcEZpeCIsInByb3BIb29rcyIsInRhYmluZGV4IiwicGFyc2VJbnQiLCJmb3IiLCJj
bGFzcyIsInN0cmlwQW5kQ29sbGFwc2UiLCJnZXRDbGFzcyIsImFkZENsYXNzIiwiY2xhc3NlcyIs
ImN1clZhbHVlIiwiY2xhenoiLCJmaW5hbFZhbHVlIiwicmVtb3ZlQ2xhc3MiLCJ0b2dnbGVDbGFz
cyIsInN0YXRlVmFsIiwiY2xhc3NOYW1lcyIsImhhc0NsYXNzIiwicnJldHVybiIsInZhbEhvb2tz
Iiwib3B0aW9uU2V0IiwicmZvY3VzTW9ycGgiLCJvbmx5SGFuZGxlcnMiLCJidWJibGVUeXBlIiwi
b250eXBlIiwiZXZlbnRQYXRoIiwiaXNUcmlnZ2VyIiwicGFyZW50V2luZG93Iiwic2ltdWxhdGUi
LCJ0cmlnZ2VySGFuZGxlciIsImhvdmVyIiwiZm5PdmVyIiwiZm5PdXQiLCJmb2N1c2luIiwiYXR0
YWNoZXMiLCJyYnJhY2tldCIsInJDUkxGIiwicnN1Ym1pdHRlclR5cGVzIiwicnN1Ym1pdHRhYmxl
IiwiYnVpbGRQYXJhbXMiLCJ0cmFkaXRpb25hbCIsInBhcmFtIiwicyIsInZhbHVlT3JGdW5jdGlv
biIsImVuY29kZVVSSUNvbXBvbmVudCIsInNlcmlhbGl6ZSIsInNlcmlhbGl6ZUFycmF5Iiwid3Jh
cEFsbCIsImZpcnN0RWxlbWVudENoaWxkIiwid3JhcElubmVyIiwidW53cmFwIiwiaGlkZGVuIiwi
dmlzaWJsZSIsIm9mZnNldFdpZHRoIiwib2Zmc2V0SGVpZ2h0IiwiY3JlYXRlSFRNTERvY3VtZW50
IiwiaW1wbGVtZW50YXRpb24iLCJrZWVwU2NyaXB0cyIsInBhcnNlZCIsImdldFdpbmRvdyIsIm9m
ZnNldCIsInNldE9mZnNldCIsImN1clBvc2l0aW9uIiwiY3VyTGVmdCIsImN1ckNTU1RvcCIsImN1
clRvcCIsImN1ck9mZnNldCIsImN1ckNTU0xlZnQiLCJjYWxjdWxhdGVQb3NpdGlvbiIsImN1ckVs
ZW0iLCJ1c2luZyIsIndpbiIsInJlY3QiLCJoZWlnaHQiLCJwYWdlWU9mZnNldCIsImNsaWVudFRv
cCIsInBhZ2VYT2Zmc2V0IiwiY2xpZW50TGVmdCIsIm9mZnNldFBhcmVudCIsInBhcmVudE9mZnNl
dCIsInNjcm9sbExlZnQiLCJzY3JvbGxUb3AiLCJzY3JvbGxUbyIsIkhlaWdodCIsIldpZHRoIiwi
IiwiZGVmYXVsdEV4dHJhIiwiZnVuY05hbWUiLCJkZWZpbmUiLCJhbWQiLCJfalF1ZXJ5IiwiXyQi
LCIkIiwibm9Db25mbGljdCJdLCJtYXBwaW5ncyI6IjtDQWFBLFNBQVlBLEVBQVFDLEdBRW5CLFlB
RXVCLGlCQUFYQyxTQUFpRCxnQkFBbkJBLFFBQU9DLFFBU2hERCxPQUFPQyxRQUFVSCxFQUFPSSxT
QUN2QkgsRUFBU0QsR0FBUSxHQUNqQixTQUFVSyxHQUNULElBQU1BLEVBQUVELFNBQ1AsS0FBTSxJ
QUFJRSxPQUFPLDJDQUVsQixPQUFPTCxHQUFTSSxJQUdsQkosRUFBU0QsSUFJWSxtQkFBWE8sUUFB
eUJBLE9BQVNDLEtBQU0sU0FBVUQsRUFBUUUsR0FNdEUsWUFFQSxJQUFJQyxNQUVBTixFQUFXRyxF
QUFPSCxTQUVsQk8sRUFBV0MsT0FBT0MsZUFFbEJDLEVBQVFKLEVBQUlJLE1BRVpDLEVBQVNMLEVB
QUlLLE9BRWJDLEVBQU9OLEVBQUlNLEtBRVhDLEVBQVVQLEVBQUlPLFFBRWRDLEtBRUFDLEVBQVdE
LEVBQVdDLFNBRXRCQyxFQUFTRixFQUFXRyxlQUVwQkMsRUFBYUYsRUFBT0QsU0FFcEJJLEVBQXVC
RCxFQUFXRSxLQUFNWixRQUV4Q2EsSUFJSCxTQUFTQyxHQUFTQyxFQUFNQyxHQUN2QkEsRUFBTUEs
R0FBT3hCLENBRWIsSUFBSXlCLEdBQVNELEVBQUlFLGNBQWUsU0FFaENELEdBQU9FLEtBQU9KLEVB
Q2RDLEVBQUlJLEtBQUtDLFlBQWFKLEdBQVNLLFdBQVdDLFlBQWFOLEdBUXpELEdBQ0NPLEdBQVUs
Z09BR1ZDLEVBQVMsU0FBVUMsRUFBVUMsR0FJNUIsTUFBTyxJQUFJRixHQUFPRyxHQUFHQyxLQUFN
SCxFQUFVQyxJQUt0Q0csRUFBUSxxQ0FHUkMsRUFBWSxRQUNaQyxFQUFhLFlBR2JDLEVBQWEsU0FB
VUMsRUFBS0MsR0FDM0IsTUFBT0EsR0FBT0MsY0FHaEJYLEdBQU9HLEdBQUtILEVBQU9ZLFdBR2xC
QyxPQUFRZCxFQUVSZSxZQUFhZCxFQUdiZSxPQUFRLEVBRVJDLFFBQVMsV0FDUixNQUFPdkMsR0FB
TVUsS0FBTWhCLE9BS3BCOEMsSUFBSyxTQUFVQyxHQUdkLE1BQVksT0FBUEEsRUFDR3pDLEVBQU1V
LEtBQU1oQixNQUliK0MsRUFBTSxFQUFJL0MsS0FBTStDLEVBQU0vQyxLQUFLNEMsUUFBVzVDLEtB
QU0rQyxJQUtwREMsVUFBVyxTQUFVQyxHQUdwQixHQUFJQyxHQUFNckIsRUFBT3NCLE1BQU9uRCxL
QUFLMkMsY0FBZU0sRUFNNUMsT0FIQUMsR0FBSUUsV0FBYXBELEtBR1ZrRCxHQUlSRyxLQUFNLFNB
QVVDLEdBQ2YsTUFBT3pCLEdBQU93QixLQUFNckQsS0FBTXNELElBRzNCQyxJQUFLLFNBQVVELEdB
Q2QsTUFBT3RELE1BQUtnRCxVQUFXbkIsRUFBTzBCLElBQUt2RCxLQUFNLFNBQVV3RCxFQUFNQyxH
QUN4RCxNQUFPSCxHQUFTdEMsS0FBTXdDLEVBQU1DLEVBQUdELE9BSWpDbEQsTUFBTyxXQUNOLE1B
QU9OLE1BQUtnRCxVQUFXMUMsRUFBTW9ELE1BQU8xRCxLQUFNMkQsYUFHM0NDLE1BQU8sV0FDTixN
QUFPNUQsTUFBSzZELEdBQUksSUFHakJDLEtBQU0sV0FDTCxNQUFPOUQsTUFBSzZELFFBR2JBLEdB
QUksU0FBVUosR0FDYixHQUFJTSxHQUFNL0QsS0FBSzRDLE9BQ2RvQixHQUFLUCxHQUFNQSxFQUFJ
LEVBQUlNLEVBQU0sRUFDMUIsT0FBTy9ELE1BQUtnRCxVQUFXZ0IsR0FBSyxHQUFLQSxFQUFJRCxH
QUFRL0QsS0FBTWdFLFNBR3BEQyxJQUFLLFdBQ0osTUFBT2pFLE1BQUtvRCxZQUFjcEQsS0FBSzJD
LGVBS2hDbkMsS0FBTUEsRUFDTjBELEtBQU1oRSxFQUFJZ0UsS0FDVkMsT0FBUWpFLEVBQUlpRSxR
QUdidEMsRUFBT3VDLE9BQVN2QyxFQUFPRyxHQUFHb0MsT0FBUyxXQUNsQyxHQUFJQyxHQUFTQyxF
QUFNQyxFQUFLQyxFQUFNQyxFQUFhQyxFQUMxQ0MsRUFBU2hCLFVBQVcsT0FDcEJGLEVBQUksRUFD
SmIsRUFBU2UsVUFBVWYsT0FDbkJnQyxHQUFPLENBc0JSLEtBbkJ1QixpQkFBWEQsS0FDWEMsRUFB
T0QsRUFHUEEsRUFBU2hCLFVBQVdGLE9BQ3BCQSxLQUlzQixnQkFBWGtCLElBQXdCOUMsRUFBT2dE
LFdBQVlGLEtBQ3REQSxNQUlJbEIsSUFBTWIsSUFDVitCLEVBQVMzRSxLQUNUeUQsS0FHT0EsRUFB
SWIsRUFBUWEsSUFHbkIsR0FBcUMsT0FBOUJZLEVBQVVWLFVBQVdGLElBRzNCLElBQU1hLElBQVFE
LEdBQ2JFLEVBQU1JLEVBQVFMLEdBQ2RFLEVBQU9ILEVBQVNDLEdBR1hLLElBQVdILElBS1hJLEdB
QVFKLElBQVUzQyxFQUFPaUQsY0FBZU4sS0FDMUNDLEVBQWM1QyxFQUFPa0QsUUFBU1AsTUFFM0JD
LEdBQ0pBLEdBQWMsRUFDZEMsRUFBUUgsR0FBTzFDLEVBQU9rRCxRQUFTUixHQUFRQSxNQUd2Q0cs
RUFBUUgsR0FBTzFDLEVBQU9pRCxjQUFlUCxHQUFRQSxLQUk5Q0ksRUFBUUwsR0FBU3pDLEVBQU91
QyxPQUFRUSxFQUFNRixFQUFPRixJQUd6QlEsU0FBVFIsSUFDWEcsRUFBUUwsR0FBU0UsR0FPckIs
T0FBT0csSUFHUjlDLEVBQU91QyxRQUdOYSxRQUFTLFVBQWFyRCxFQUFVc0QsS0FBS0MsVUFBV0Ms
UUFBUyxNQUFPLElBR2hFQyxTQUFTLEVBRVRDLE1BQU8sU0FBVUMsR0FDaEIsS0FBTSxJQUFJekYs
T0FBT3lGLElBR2xCQyxLQUFNLGFBRU5YLFdBQVksU0FBVVksR0FDckIsTUFBOEIsYUFBdkI1RCxF
QUFPNkQsS0FBTUQsSUFHckJWLFFBQVNZLE1BQU1aLFFBRWZhLFNBQVUsU0FBVUgsR0FDbkIsTUFB
YyxPQUFQQSxHQUFlQSxJQUFRQSxFQUFJMUYsUUFHbkM4RixVQUFXLFNBQVVKLEdBS3BCLEdBQUlD
LEdBQU83RCxFQUFPNkQsS0FBTUQsRUFDeEIsUUFBa0IsV0FBVEMsR0FBOEIsV0FBVEEsS0FLNUJJ
LE1BQU9MLEVBQU1NLFdBQVlOLEtBRzVCWCxjQUFlLFNBQVVXLEdBQ3hCLEdBQUlPLEdBQU9DLENB
SVgsVUFBTVIsR0FBZ0Msb0JBQXpCOUUsRUFBU0ssS0FBTXlFLFFBSTVCTyxFQUFRN0YsRUFBVXNG
LE1BUWxCUSxFQUFPckYsRUFBT0ksS0FBTWdGLEVBQU8sZ0JBQW1CQSxFQUFNckQsWUFDN0Isa0JB
QVRzRCxJQUF1Qm5GLEVBQVdFLEtBQU1pRixLQUFXbEYsS0FHbEVtRixjQUFlLFNBQVVULEdBSXhC
LEdBQUluQixFQUVKLEtBQU1BLElBQVFtQixHQUNiLE9BQU8sQ0FFUixRQUFPLEdBR1JDLEtBQU0s
U0FBVUQsR0FDZixNQUFZLE9BQVBBLEVBQ0dBLEVBQU0sR0FJUSxnQkFBUkEsSUFBbUMsa0JBQVJB
LEdBQ3hDL0UsRUFBWUMsRUFBU0ssS0FBTXlFLEtBQVcsZUFDL0JBLElBSVRVLFdBQVksU0FBVWhG
LEdBQ3JCRCxFQUFTQyxJQU1WaUYsVUFBVyxTQUFVQyxHQUNwQixNQUFPQSxHQUFPakIsUUFBU2pE
LEVBQVcsT0FBUWlELFFBQVNoRCxFQUFZQyxJQUdoRWlFLFNBQVUsU0FBVTlDLEVBQU1jLEdBQ3pC
LE1BQU9kLEdBQUs4QyxVQUFZOUMsRUFBSzhDLFNBQVNDLGdCQUFrQmpDLEVBQUtpQyxlQUc5RGxE
LEtBQU0sU0FBVW9DLEVBQUtuQyxHQUNwQixHQUFJVixHQUFRYSxFQUFJLENBRWhCLElBQUsrQyxF
QUFhZixJQUVqQixJQURBN0MsRUFBUzZDLEVBQUk3QyxPQUNMYSxFQUFJYixFQUFRYSxJQUNuQixH
QUFLSCxFQUFTdEMsS0FBTXlFLEVBQUtoQyxHQUFLQSxFQUFHZ0MsRUFBS2hDLE9BQVUsRUFDL0Ms
VUFJRixLQUFNQSxJQUFLZ0MsR0FDVixHQUFLbkMsRUFBU3RDLEtBQU15RSxFQUFLaEMsR0FBS0Es
RUFBR2dDLEVBQUtoQyxPQUFVLEVBQy9DLEtBS0gsT0FBT2dDLElBSVJnQixLQUFNLFNBQVVsRixH
QUNmLE1BQWUsT0FBUkEsRUFDTixJQUNFQSxFQUFPLElBQUs2RCxRQUFTbEQsRUFBTyxLQUloQ3dF
LFVBQVcsU0FBVXhHLEVBQUt5RyxHQUN6QixHQUFJekQsR0FBTXlELEtBYVYsT0FYWSxPQUFQekcs
SUFDQ3NHLEVBQWFwRyxPQUFRRixJQUN6QjJCLEVBQU9zQixNQUFPRCxFQUNFLGdCQUFSaEQsSUFD
TEEsR0FBUUEsR0FHWE0sRUFBS1EsS0FBTWtDLEVBQUtoRCxJQUlYZ0QsR0FHUjBELFFBQVMsU0FB
VXBELEVBQU10RCxFQUFLdUQsR0FDN0IsTUFBYyxPQUFQdkQsS0FBbUJPLEVBQVFPLEtBQU1kLEVB
QUtzRCxFQUFNQyxJQUtwRE4sTUFBTyxTQUFVUyxFQUFPaUQsR0FLdkIsSUFKQSxHQUFJOUMsSUFB
TzhDLEVBQU9qRSxPQUNqQm9CLEVBQUksRUFDSlAsRUFBSUcsRUFBTWhCLE9BRUhvQixFQUFJRCxF
QUFLQyxJQUNoQkosRUFBT0gsS0FBUW9ELEVBQVE3QyxFQUt4QixPQUZBSixHQUFNaEIsT0FBU2Es
RUFFUkcsR0FHUmtELEtBQU0sU0FBVTdELEVBQU9LLEVBQVV5RCxHQVNoQyxJQVJBLEdBQUlDLEdB
Q0hDLEtBQ0F4RCxFQUFJLEVBQ0piLEVBQVNLLEVBQU1MLE9BQ2ZzRSxHQUFrQkgsRUFJWHRELEVB
QUliLEVBQVFhLElBQ25CdUQsR0FBbUIxRCxFQUFVTCxFQUFPUSxHQUFLQSxHQUNwQ3VELElBQW9C
RSxHQUN4QkQsRUFBUXpHLEtBQU15QyxFQUFPUSxHQUl2QixPQUFPd0QsSUFJUjFELElBQUssU0FB
VU4sRUFBT0ssRUFBVTZELEdBQy9CLEdBQUl2RSxHQUFRd0UsRUFDWDNELEVBQUksRUFDSlAsSUFH
RCxJQUFLc0QsRUFBYXZELEdBRWpCLElBREFMLEVBQVNLLEVBQU1MLE9BQ1BhLEVBQUliLEVBQVFh
LElBQ25CMkQsRUFBUTlELEVBQVVMLEVBQU9RLEdBQUtBLEVBQUcwRCxHQUVuQixNQUFUQyxHQUNK
bEUsRUFBSTFDLEtBQU00RyxPQU1aLEtBQU0zRCxJQUFLUixHQUNWbUUsRUFBUTlELEVBQVVMLEVB
QU9RLEdBQUtBLEVBQUcwRCxHQUVuQixNQUFUQyxHQUNKbEUsRUFBSTFDLEtBQU00RyxFQU1iLE9B
QU83RyxHQUFPbUQsU0FBV1IsSUFJMUJtRSxLQUFNLEVBSU5DLE1BQU8sU0FBVXRGLEVBQUlELEdB
Q3BCLEdBQUl3RixHQUFLQyxFQUFNRixDQVVmLElBUndCLGdCQUFadkYsS0FDWHdGLEVBQU12RixF
QUFJRCxHQUNWQSxFQUFVQyxFQUNWQSxFQUFLdUYsR0FLQTFGLEVBQU9nRCxXQUFZN0MsR0FhekIs
TUFSQXdGLEdBQU9sSCxFQUFNVSxLQUFNMkMsVUFBVyxHQUM5QjJELEVBQVEsV0FDUCxNQUFPdEYs
R0FBRzBCLE1BQU8zQixHQUFXL0IsS0FBTXdILEVBQUtqSCxPQUFRRCxFQUFNVSxLQUFNMkMsY0FJ
NUQyRCxFQUFNRCxLQUFPckYsRUFBR3FGLEtBQU9yRixFQUFHcUYsTUFBUXhGLEVBQU93RixPQUVs
Q0MsR0FHUkcsSUFBS0MsS0FBS0QsSUFJVnhHLFFBQVNBLElBR2Esa0JBQVgwRyxVQUNYOUYsRUFB
T0csR0FBSTJGLE9BQU9DLFVBQWExSCxFQUFLeUgsT0FBT0MsV0FJNUMvRixFQUFPd0IsS0FBTSx1
RUFBdUV3RSxNQUFPLEtBQzNGLFNBQVVwRSxFQUFHYSxHQUNaNUQsRUFBWSxXQUFhNEQsRUFBTyxL
QUFRQSxFQUFLaUMsZUFHOUMsU0FBU0MsR0FBYWYsR0FNckIsR0FBSTdDLEtBQVc2QyxHQUFPLFVB
QVlBLElBQU9BLEVBQUk3QyxPQUM1QzhDLEVBQU83RCxFQUFPNkQsS0FBTUQsRUFFckIsT0FBYyxh
QUFUQyxJQUF1QjdELEVBQU8rRCxTQUFVSCxLQUk3QixVQUFUQyxHQUErQixJQUFYOUMsR0FDUixn
QkFBWEEsSUFBdUJBLEVBQVMsR0FBT0EsRUFBUyxJQUFPNkMsSUFFaEUsR0FBSXFDLEdBV0osU0FB
Vy9ILEdBRVgsR0FBSTBELEdBQ0h4QyxFQUNBOEcsRUFDQUMsRUFDQUMsRUFDQUMsRUFDQUMsRUFD
QUMsRUFDQUMsRUFDQUMsRUFDQUMsRUFHQUMsRUFDQTVJLEVBQ0E2SSxFQUNBQyxFQUNBQyxFQUNB
QyxFQUNBM0IsRUFDQTRCLEVBR0E1RCxFQUFVLFNBQVcsRUFBSSxHQUFJeUMsTUFDN0JvQixFQUFl
L0ksRUFBT0gsU0FDdEJtSixFQUFVLEVBQ1ZDLEVBQU8sRUFDUEMsRUFBYUMsS0FDYkMsRUFBYUQs
S0FDYkUsRUFBZ0JGLEtBQ2hCRyxFQUFZLFNBQVVDLEVBQUdDLEdBSXhCLE1BSEtELEtBQU1DLElB
Q1ZoQixHQUFlLEdBRVQsR0FJUjNILEtBQWNDLGVBQ2RYLEtBQ0FzSixFQUFNdEosRUFBSXNKLElB
Q1ZDLEVBQWN2SixFQUFJTSxLQUNsQkEsRUFBT04sRUFBSU0sS0FDWEYsRUFBUUosRUFBSUksTUFH
WkcsRUFBVSxTQUFVaUosRUFBTWxHLEdBR3pCLElBRkEsR0FBSUMsR0FBSSxFQUNQTSxFQUFNMkYs
RUFBSzlHLE9BQ0phLEVBQUlNLEVBQUtOLElBQ2hCLEdBQUtpRyxFQUFLakcsS0FBT0QsRUFDaEIs
TUFBT0MsRUFHVCxXQUdEa0csRUFBVyw2SEFLWEMsRUFBYSxzQkFHYkMsRUFBYSxnQ0FHYkMsRUFB
YSxNQUFRRixFQUFhLEtBQU9DLEVBQWEsT0FBU0QsRUFFOUQsZ0JBQWtCQSxFQUVsQiwyREFBNkRD
LEVBQWEsT0FBU0QsRUFDbkYsT0FFREcsRUFBVSxLQUFPRixFQUFhLHdGQUtBQyxFQUFhLGVBTTND
RSxFQUFjLEdBQUlDLFFBQVFMLEVBQWEsSUFBSyxLQUM1QzFILEVBQVEsR0FBSStILFFBQVEsSUFB
TUwsRUFBYSw4QkFBZ0NBLEVBQWEsS0FBTSxLQUUxRk0sRUFBUyxHQUFJRCxRQUFRLElBQU1MLEVB
QWEsS0FBT0EsRUFBYSxLQUM1RE8sRUFBZSxHQUFJRixRQUFRLElBQU1MLEVBQWEsV0FBYUEsRUFB
YSxJQUFNQSxFQUFhLEtBRTNGUSxFQUFtQixHQUFJSCxRQUFRLElBQU1MLEVBQWEsaUJBQW1CQSxF
QUFhLE9BQVEsS0FFMUZTLEVBQVUsR0FBSUosUUFBUUYsR0FDdEJPLEVBQWMsR0FBSUwsUUFBUSxJ
QUFNSixFQUFhLEtBRTdDVSxHQUNDQyxHQUFNLEdBQUlQLFFBQVEsTUFBUUosRUFBYSxLQUN2Q1ks
TUFBUyxHQUFJUixRQUFRLFFBQVVKLEVBQWEsS0FDNUNhLElBQU8sR0FBSVQsUUFBUSxLQUFPSixF
QUFhLFNBQ3ZDYyxLQUFRLEdBQUlWLFFBQVEsSUFBTUgsR0FDMUJjLE9BQVUsR0FBSVgsUUFBUSxJ
QUFNRixHQUM1QmMsTUFBUyxHQUFJWixRQUFRLHlEQUEyREwsRUFDL0UsK0JBQWlDQSxFQUFhLGNB
QWdCQSxFQUM5RCxhQUFlQSxFQUFhLFNBQVUsS0FDdkNrQixLQUFRLEdBQUliLFFBQVEsT0FBU04s
RUFBVyxLQUFNLEtBRzlDb0IsYUFBZ0IsR0FBSWQsUUFBUSxJQUFNTCxFQUFhLG1EQUM5Q0EsRUFB
YSxtQkFBcUJBLEVBQWEsbUJBQW9CLE1BR3JFb0IsRUFBVSxzQ0FDVkMsRUFBVSxTQUVWQyxFQUFV
LHlCQUdWQyxFQUFhLG1DQUViQyxFQUFXLE9BSVhDLEVBQVksR0FBSXBCLFFBQVEscUJBQXVCTCxF
QUFhLE1BQVFBLEVBQWEsT0FBUSxNQUN6RjBCLEdBQVksU0FBVUMsRUFBR0MsRUFBU0MsR0FDakMs
R0FBSUMsR0FBTyxLQUFPRixFQUFVLEtBSTVCLE9BQU9FLEtBQVNBLEdBQVFELEVBQ3ZCRCxFQUNB
RSxFQUFPLEVBRU5DLE9BQU9DLGFBQWNGLEVBQU8sT0FFNUJDLE9BQU9DLGFBQWNGLEdBQVEsR0FB
SyxNQUFlLEtBQVBBLEVBQWUsUUFLNURHLEdBQWEsc0RBQ2JDLEdBQWEsU0FBVUMsRUFBSUMsR0FD
MUIsTUFBS0EsR0FHUSxPQUFQRCxFQUNHLFNBSURBLEVBQUd6TCxNQUFPLE1BQVUsS0FBT3lMLEVB
QUdFLFdBQVlGLEVBQUduSixPQUFTLEdBQUlqQyxTQUFVLElBQU8sSUFJNUUsS0FBT29MLEdBT2ZH
LEdBQWdCLFdBQ2YxRCxLQUdEMkQsR0FBbUJDLEdBQ2xCLFNBQVU1SSxHQUNULE1BQU9BLEdBQUs2
SSxZQUFhLElBQVMsUUFBVTdJLElBQVEsU0FBV0EsTUFFOUQ4SSxJQUFLLGFBQWNDLEtBQU0sVUFJ
N0IsS0FDQy9MLEVBQUtrRCxNQUNIeEQsRUFBTUksRUFBTVUsS0FBTThILEVBQWEwRCxZQUNoQzFE
LEVBQWEwRCxZQUlkdE0sRUFBSzRJLEVBQWEwRCxXQUFXNUosUUFBUzZKLFNBQ3JDLE1BQVFDLElB
Q1RsTSxHQUFTa0QsTUFBT3hELEVBQUkwQyxPQUduQixTQUFVK0IsRUFBUWdJLEdBQ2pCbEQsRUFB
WS9GLE1BQU9pQixFQUFRckUsRUFBTVUsS0FBSzJMLEtBS3ZDLFNBQVVoSSxFQUFRZ0ksR0FDakIs
R0FBSTNJLEdBQUlXLEVBQU8vQixPQUNkYSxFQUFJLENBRUwsT0FBU2tCLEVBQU9YLEtBQU8ySSxF
QUFJbEosTUFDM0JrQixFQUFPL0IsT0FBU29CLEVBQUksSUFLdkIsUUFBUzhELElBQVFoRyxFQUFV
QyxFQUFTNEUsRUFBU2lHLEdBQzVDLEdBQUlDLEdBQUdwSixFQUFHRCxFQUFNc0osRUFBS0MsRUFB
T0MsRUFBUUMsRUFDbkNDLEVBQWFuTCxHQUFXQSxFQUFRb0wsY0FHaENWLEVBQVcxSyxFQUFVQSxF
QUFRMEssU0FBVyxDQUt6QyxJQUhBOUYsRUFBVUEsTUFHZSxnQkFBYjdFLEtBQTBCQSxHQUN4QixJ
QUFiMkssR0FBK0IsSUFBYkEsR0FBK0IsS0FBYkEsRUFFcEMsTUFBTzlGLEVBSVIsS0FBTWlHLEtB
RUU3SyxFQUFVQSxFQUFRb0wsZUFBaUJwTCxFQUFVK0csS0FBbUJsSixHQUN0RTRJLEVBQWF6RyxH
QUVkQSxFQUFVQSxHQUFXbkMsRUFFaEI4SSxHQUFpQixDQUlyQixHQUFrQixLQUFiK0QsSUFBb0JN
LEVBQVE1QixFQUFXaUMsS0FBTXRMLElBR2pELEdBQU0rSyxFQUFJRSxFQUFNLElBR2YsR0FBa0Is
SUFBYk4sRUFBaUIsQ0FDckIsS0FBTWpKLEVBQU96QixFQUFRc0wsZUFBZ0JSLElBVXBDLE1BQU9s
RyxFQUxQLElBQUtuRCxFQUFLOEosS0FBT1QsRUFFaEIsTUFEQWxHLEdBQVFuRyxLQUFNZ0QsR0FD
UG1ELE1BWVQsSUFBS3VHLElBQWUxSixFQUFPMEosRUFBV0csZUFBZ0JSLEtBQ3JEaEUsRUFBVTlH
LEVBQVN5QixJQUNuQkEsRUFBSzhKLEtBQU9ULEVBR1osTUFEQWxHLEdBQVFuRyxLQUFNZ0QsR0FD
UG1ELE1BS0gsQ0FBQSxHQUFLb0csRUFBTSxHQUVqQixNQURBdk0sR0FBS2tELE1BQU9pRCxFQUFT
NUUsRUFBUXdMLHFCQUFzQnpMLElBQzVDNkUsQ0FHRCxLQUFNa0csRUFBSUUsRUFBTSxLQUFPOUws
RUFBUXVNLHdCQUNyQ3pMLEVBQVF5TCx1QkFHUixNQURBaE4sR0FBS2tELE1BQU9pRCxFQUFTNUUs
RUFBUXlMLHVCQUF3QlgsSUFDOUNsRyxFQUtULEdBQUsxRixFQUFRd00sTUFDWHJFLEVBQWV0SCxF
QUFXLFFBQ3pCNkcsSUFBY0EsRUFBVStFLEtBQU01TCxJQUFjLENBRTlDLEdBQWtCLElBQWIySyxF
QUNKUyxFQUFhbkwsRUFDYmtMLEVBQWNuTCxNQU1SLElBQXdDLFdBQW5DQyxFQUFRdUUsU0FBU0Ms
Y0FBNkIsRUFHbkR1RyxFQUFNL0ssRUFBUTRMLGFBQWMsT0FDakNiLEVBQU1BLEVBQUkxSCxRQUFT
eUcsR0FBWUMsSUFFL0IvSixFQUFRNkwsYUFBYyxLQUFPZCxFQUFNN0gsR0FJcEMrSCxFQUFTOUUs
RUFBVXBHLEdBQ25CMkIsRUFBSXVKLEVBQU9wSyxNQUNYLE9BQVFhLElBQ1B1SixFQUFPdkosR0FB
SyxJQUFNcUosRUFBTSxJQUFNZSxHQUFZYixFQUFPdkosR0FFbER3SixHQUFjRCxFQUFPYyxLQUFN
LEtBRzNCWixFQUFhOUIsRUFBU3NDLEtBQU01TCxJQUFjaU0sR0FBYWhNLEVBQVFMLGFBQzlESyxF
QUdGLEdBQUtrTCxFQUNKLElBSUMsTUFIQXpNLEdBQUtrRCxNQUFPaUQsRUFDWHVHLEVBQVdjLGlC
QUFrQmYsSUFFdkJ0RyxFQUNOLE1BQVFzSCxJQUNSLFFBQ0luQixJQUFRN0gsR0FDWmxELEVBQVFt
TSxnQkFBaUIsUUFTL0IsTUFBTzlGLEdBQVF0RyxFQUFTc0QsUUFBU2xELEVBQU8sTUFBUUgsRUFB
UzRFLEVBQVNpRyxHQVNuRSxRQUFTMUQsTUFDUixHQUFJaUYsS0FFSixTQUFTQyxHQUFPQyxFQUFL
akgsR0FNcEIsTUFKSytHLEdBQUszTixLQUFNNk4sRUFBTSxLQUFRdEcsRUFBS3VHLG1CQUUzQkYs
R0FBT0QsRUFBS0ksU0FFWkgsRUFBT0MsRUFBTSxLQUFRakgsRUFFOUIsTUFBT2dILEdBT1IsUUFB
U0ksSUFBY3hNLEdBRXRCLE1BREFBLEdBQUlpRCxJQUFZLEVBQ1RqRCxFQU9SLFFBQVN5TSxJQUFR
ek0sR0FDaEIsR0FBSTBNLEdBQUs5TyxFQUFTMEIsY0FBYyxXQUVoQyxLQUNDLFFBQVNVLEVBQUkw
TSxHQUNaLE1BQU9oQyxHQUNSLE9BQU8sRUFDTixRQUVJZ0MsRUFBR2hOLFlBQ1BnTixFQUFHaE4s
V0FBV0MsWUFBYStNLEdBRzVCQSxFQUFLLE1BU1AsUUFBU0MsSUFBV0MsRUFBT0MsR0FDMUIsR0FB
STNPLEdBQU0wTyxFQUFNL0csTUFBTSxLQUNyQnBFLEVBQUl2RCxFQUFJMEMsTUFFVCxPQUFRYSxJ
QUNQc0UsRUFBSytHLFdBQVk1TyxFQUFJdUQsSUFBT29MLEVBVTlCLFFBQVNFLElBQWN6RixFQUFH
QyxHQUN6QixHQUFJeUYsR0FBTXpGLEdBQUtELEVBQ2QyRixFQUFPRCxHQUFzQixJQUFmMUYsRUFB
RW1ELFVBQWlDLElBQWZsRCxFQUFFa0QsVUFDbkNuRCxFQUFFNEYsWUFBYzNGLEVBQUUyRixXQUdw
QixJQUFLRCxFQUNKLE1BQU9BLEVBSVIsSUFBS0QsRUFDSixNQUFTQSxFQUFNQSxFQUFJRyxZQUNs
QixHQUFLSCxJQUFRekYsRUFDWixRQUtILE9BQU9ELEdBQUksS0FPWixRQUFTOEYsSUFBbUIxSixH
QUMzQixNQUFPLFVBQVVsQyxHQUNoQixHQUFJYyxHQUFPZCxFQUFLOEMsU0FBU0MsYUFDekIsT0FB
Z0IsVUFBVGpDLEdBQW9CZCxFQUFLa0MsT0FBU0EsR0FRM0MsUUFBUzJKLElBQW9CM0osR0FDNUIs
TUFBTyxVQUFVbEMsR0FDaEIsR0FBSWMsR0FBT2QsRUFBSzhDLFNBQVNDLGFBQ3pCLFFBQWlCLFVB
QVRqQyxHQUE2QixXQUFUQSxJQUFzQmQsRUFBS2tDLE9BQVNBLEdBUWxFLFFBQVM0SixJQUFzQmpE
LEdBRzlCLE1BQU8sVUFBVTdJLEdBS2hCLE1BQUssUUFBVUEsR0FTVEEsRUFBSzlCLFlBQWM4QixF
QUFLNkksWUFBYSxFQUdwQyxTQUFXN0ksR0FDVixTQUFXQSxHQUFLOUIsV0FDYjhCLEVBQUs5QixX
QUFXMkssV0FBYUEsRUFFN0I3SSxFQUFLNkksV0FBYUEsRUFNcEI3SSxFQUFLK0wsYUFBZWxELEdB
STFCN0ksRUFBSytMLGNBQWdCbEQsR0FDcEJGLEdBQWtCM0ksS0FBVzZJLEVBR3pCN0ksRUFBSzZJ
LFdBQWFBLEVBS2QsU0FBVzdJLElBQ2ZBLEVBQUs2SSxXQUFhQSxHQVk1QixRQUFTbUQsSUFBd0J4
TixHQUNoQyxNQUFPd00sSUFBYSxTQUFVaUIsR0FFN0IsTUFEQUEsSUFBWUEsRUFDTGpCLEdBQWEs
U0FBVTVCLEVBQU0zRixHQUNuQyxHQUFJakQsR0FDSDBMLEVBQWUxTixLQUFRNEssRUFBS2hLLE9B
QVE2TSxHQUNwQ2hNLEVBQUlpTSxFQUFhOU0sTUFHbEIsT0FBUWEsSUFDRm1KLEVBQU81SSxFQUFJ
MEwsRUFBYWpNLE1BQzVCbUosRUFBSzVJLEtBQU9pRCxFQUFRakQsR0FBSzRJLEVBQUs1SSxTQVlu
QyxRQUFTK0osSUFBYWhNLEdBQ3JCLE1BQU9BLElBQW1ELG1CQUFqQ0EsR0FBUXdMLHNCQUF3Q3hM
LEVBSTFFZCxFQUFVNkcsR0FBTzdHLFdBT2pCZ0gsRUFBUUgsR0FBT0csTUFBUSxTQUFVekUsR0FH
aEMsR0FBSW1NLEdBQWtCbk0sSUFBU0EsRUFBSzJKLGVBQWlCM0osR0FBTW1NLGVBQzNELFNBQU9B
LEdBQStDLFNBQTdCQSxFQUFnQnJKLFVBUTFDa0MsRUFBY1YsR0FBT1UsWUFBYyxTQUFVb0gsR0FD
NUMsR0FBSUMsR0FBWUMsRUFDZjFPLEVBQU13TyxFQUFPQSxFQUFLekMsZUFBaUJ5QyxFQUFPOUcs
Q0FHM0MsT0FBSzFILEtBQVF4QixHQUE2QixJQUFqQndCLEVBQUlxTCxVQUFtQnJMLEVBQUl1Tyxp
QkFLcEQvUCxFQUFXd0IsRUFDWHFILEVBQVU3SSxFQUFTK1AsZ0JBQ25CakgsR0FBa0JULEVBQU9y
SSxHQUlwQmtKLElBQWlCbEosSUFDcEJrUSxFQUFZbFEsRUFBU21RLGNBQWdCRCxFQUFVRSxNQUFR
RixJQUduREEsRUFBVUcsaUJBQ2RILEVBQVVHLGlCQUFrQixTQUFVL0QsSUFBZSxHQUcxQzRELEVB
QVVJLGFBQ3JCSixFQUFVSSxZQUFhLFdBQVloRSxLQVVyQ2pMLEVBQVE2SSxXQUFhMkUsR0FBTyxT
QUFVQyxHQUVyQyxNQURBQSxHQUFHeUIsVUFBWSxLQUNQekIsRUFBR2YsYUFBYSxlQU96QjFNLEVB
QVFzTSxxQkFBdUJrQixHQUFPLFNBQVVDLEdBRS9DLE1BREFBLEdBQUdqTixZQUFhN0IsRUFBU3dR
LGNBQWMsTUFDL0IxQixFQUFHbkIscUJBQXFCLEtBQUszSyxTQUl0QzNCLEVBQVF1TSx1QkFBeUJ0
QyxFQUFRd0MsS0FBTTlOLEVBQVM0Tix3QkFNeER2TSxFQUFRb1AsUUFBVTVCLEdBQU8sU0FBVUMs
R0FFbEMsTUFEQWpHLEdBQVFoSCxZQUFhaU4sR0FBS3BCLEdBQUtySSxHQUN2QnJGLEVBQVMwUSxv
QkFBc0IxUSxFQUFTMFEsa0JBQW1CckwsR0FBVXJDLFNBSXpFM0IsRUFBUW9QLFNBQ1p0SSxFQUFL
d0ksT0FBVyxHQUFJLFNBQVVqRCxHQUM3QixHQUFJa0QsR0FBU2xELEVBQUdsSSxRQUFTaUcsRUFB
V0MsR0FDcEMsT0FBTyxVQUFVOUgsR0FDaEIsTUFBT0EsR0FBS21LLGFBQWEsUUFBVTZDLElBR3JD
ekksRUFBSzBJLEtBQVMsR0FBSSxTQUFVbkQsRUFBSXZMLEdBQy9CLEdBQXVDLG1CQUEzQkEsR0FB
UXNMLGdCQUFrQzNFLEVBQWlCLENBQ3RFLEdBQUlsRixHQUFPekIsRUFBUXNMLGVBQWdCQyxFQUNu
QyxPQUFPOUosSUFBU0EsVUFJbEJ1RSxFQUFLd0ksT0FBVyxHQUFLLFNBQVVqRCxHQUM5QixHQUFJ
a0QsR0FBU2xELEVBQUdsSSxRQUFTaUcsRUFBV0MsR0FDcEMsT0FBTyxVQUFVOUgsR0FDaEIsR0FB
SW9NLEdBQXdDLG1CQUExQnBNLEdBQUtrTixrQkFDdEJsTixFQUFLa04saUJBQWlCLEtBQ3ZCLE9B
QU9kLElBQVFBLEVBQUt4SSxRQUFVb0osSUFNaEN6SSxFQUFLMEksS0FBUyxHQUFJLFNBQVVuRCxF
QUFJdkwsR0FDL0IsR0FBdUMsbUJBQTNCQSxHQUFRc0wsZ0JBQWtDM0UsRUFBaUIsQ0FDdEUsR0FB
SWtILEdBQU1uTSxFQUFHUixFQUNaTyxFQUFPekIsRUFBUXNMLGVBQWdCQyxFQUVoQyxJQUFLOUos
RUFBTyxDQUlYLEdBREFvTSxFQUFPcE0sRUFBS2tOLGlCQUFpQixNQUN4QmQsR0FBUUEsRUFBS3hJ
LFFBQVVrRyxFQUMzQixPQUFTOUosRUFJVlAsR0FBUWxCLEVBQVF1TyxrQkFBbUJoRCxHQUNuQzdK
LEVBQUksQ0FDSixPQUFTRCxFQUFPUCxFQUFNUSxLQUVyQixHQURBbU0sRUFBT3BNLEVBQUtrTixp
QkFBaUIsTUFDeEJkLEdBQVFBLEVBQUt4SSxRQUFVa0csRUFDM0IsT0FBUzlKLEdBS1osWUFNSHVF
LEVBQUswSSxLQUFVLElBQUl4UCxFQUFRc00scUJBQzFCLFNBQVVvRCxFQUFLNU8sR0FDZCxNQUE2
QyxtQkFBakNBLEdBQVF3TCxxQkFDWnhMLEVBQVF3TCxxQkFBc0JvRCxHQUcxQjFQLEVBQVF3TSxJ
QUNaMUwsRUFBUWlNLGlCQUFrQjJDLEdBRDNCLFFBS1IsU0FBVUEsRUFBSzVPLEdBQ2QsR0FBSXlC
LEdBQ0grRCxLQUNBOUQsRUFBSSxFQUVKa0QsRUFBVTVFLEVBQVF3TCxxQkFBc0JvRCxFQUd6QyxJ
QUFhLE1BQVJBLEVBQWMsQ0FDbEIsTUFBU25OLEVBQU9tRCxFQUFRbEQsS0FDQSxJQUFsQkQsRUFB
S2lKLFVBQ1RsRixFQUFJL0csS0FBTWdELEVBSVosT0FBTytELEdBRVIsTUFBT1osSUFJVG9CLEVB
QUswSSxLQUFZLE1BQUl4UCxFQUFRdU0sd0JBQTBCLFNBQVUyQyxFQUFXcE8sR0FDM0UsR0FBK0Ms
bUJBQW5DQSxHQUFReUwsd0JBQTBDOUUsRUFDN0QsTUFBTzNHLEdBQVF5TCx1QkFBd0IyQyxJQVV6
Q3ZILEtBT0FELE1BRU0xSCxFQUFRd00sSUFBTXZDLEVBQVF3QyxLQUFNOU4sRUFBU29PLHFCQUcx
Q1MsR0FBTyxTQUFVQyxHQU1oQmpHLEVBQVFoSCxZQUFhaU4sR0FBS2tDLFVBQVksVUFBWTNMLEVB
QVUscUJBQzFDQSxFQUFVLGtFQU92QnlKLEVBQUdWLGlCQUFpQix3QkFBd0JwTCxRQUNoRCtGLEVB
QVVuSSxLQUFNLFNBQVdvSixFQUFhLGdCQUtuQzhFLEVBQUdWLGlCQUFpQixjQUFjcEwsUUFDdkMr
RixFQUFVbkksS0FBTSxNQUFRb0osRUFBYSxhQUFlRCxFQUFXLEtBSTFEK0UsRUFBR1YsaUJBQWtC
LFFBQVUvSSxFQUFVLE1BQU9yQyxRQUNyRCtGLEVBQVVuSSxLQUFLLE1BTVZrTyxFQUFHVixpQkFB
aUIsWUFBWXBMLFFBQ3JDK0YsRUFBVW5JLEtBQUssWUFNVmtPLEVBQUdWLGlCQUFrQixLQUFPL0ks
RUFBVSxNQUFPckMsUUFDbEQrRixFQUFVbkksS0FBSyxjQUlqQmlPLEdBQU8sU0FBVUMsR0FDaEJB
LEVBQUdrQyxVQUFZLG1GQUtmLElBQUlDLEdBQVFqUixFQUFTMEIsY0FBYyxRQUNuQ3VQLEdBQU1q
RCxhQUFjLE9BQVEsVUFDNUJjLEVBQUdqTixZQUFhb1AsR0FBUWpELGFBQWMsT0FBUSxLQUl6Q2Ms
RUFBR1YsaUJBQWlCLFlBQVlwTCxRQUNwQytGLEVBQVVuSSxLQUFNLE9BQVNvSixFQUFhLGVBS1Ms
SUFBM0M4RSxFQUFHVixpQkFBaUIsWUFBWXBMLFFBQ3BDK0YsRUFBVW5JLEtBQU0sV0FBWSxhQUs3
QmlJLEVBQVFoSCxZQUFhaU4sR0FBS3JDLFVBQVcsRUFDWSxJQUE1Q3FDLEVBQUdWLGlCQUFpQixh
QUFhcEwsUUFDckMrRixFQUFVbkksS0FBTSxXQUFZLGFBSTdCa08sRUFBR1YsaUJBQWlCLFFBQ3BC
ckYsRUFBVW5JLEtBQUssWUFJWFMsRUFBUTZQLGdCQUFrQjVGLEVBQVF3QyxLQUFPekcsRUFBVXdC
LEVBQVF4QixTQUNoRXdCLEVBQVFzSSx1QkFDUnRJLEVBQVF1SSxvQkFDUnZJLEVBQVF3SSxrQkFD
UnhJLEVBQVF5SSxxQkFFUnpDLEdBQU8sU0FBVUMsR0FHaEJ6TixFQUFRa1Esa0JBQW9CbEssRUFB
UWpHLEtBQU0wTixFQUFJLEtBSTlDekgsRUFBUWpHLEtBQU0wTixFQUFJLGFBQ2xCOUYsRUFBY3BJ
LEtBQU0sS0FBTXVKLEtBSTVCcEIsRUFBWUEsRUFBVS9GLFFBQVUsR0FBSXFILFFBQVF0QixFQUFV
bUYsS0FBSyxNQUMzRGxGLEVBQWdCQSxFQUFjaEcsUUFBVSxHQUFJcUgsUUFBUXJCLEVBQWNrRixL
QUFLLE1BSXZFK0IsRUFBYTNFLEVBQVF3QyxLQUFNakYsRUFBUTJJLHlCQUtuQ3ZJLEVBQVdnSCxH
QUFjM0UsRUFBUXdDLEtBQU1qRixFQUFRSSxVQUM5QyxTQUFVUyxFQUFHQyxHQUNaLEdBQUk4SCxH
QUF1QixJQUFmL0gsRUFBRW1ELFNBQWlCbkQsRUFBRXFHLGdCQUFrQnJHLEVBQ2xEZ0ksRUFBTS9I
LEdBQUtBLEVBQUU3SCxVQUNkLE9BQU80SCxLQUFNZ0ksTUFBV0EsR0FBd0IsSUFBakJBLEVBQUk3
RSxZQUNsQzRFLEVBQU14SSxTQUNMd0ksRUFBTXhJLFNBQVV5SSxHQUNoQmhJLEVBQUU4SCx5QkFB
OEQsR0FBbkM5SCxFQUFFOEgsd0JBQXlCRSxNQUczRCxTQUFVaEksRUFBR0MsR0FDWixHQUFLQSxF
QUNKLE1BQVNBLEVBQUlBLEVBQUU3SCxXQUNkLEdBQUs2SCxJQUFNRCxFQUNWLE9BQU8sQ0FJVixR
QUFPLEdBT1RELEVBQVl3RyxFQUNaLFNBQVV2RyxFQUFHQyxHQUdaLEdBQUtELElBQU1DLEVBRVYs
TUFEQWhCLElBQWUsRUFDUixDQUlSLElBQUlnSixJQUFXakksRUFBRThILHlCQUEyQjdILEVBQUU2
SCx1QkFDOUMsT0FBS0csR0FDR0EsR0FJUkEsR0FBWWpJLEVBQUU2RCxlQUFpQjdELE1BQVVDLEVB
QUU0RCxlQUFpQjVELEdBQzNERCxFQUFFOEgsd0JBQXlCN0gsR0FHM0IsRUFHYyxFQUFWZ0ksSUFD
RnRRLEVBQVF1USxjQUFnQmpJLEVBQUU2SCx3QkFBeUI5SCxLQUFRaUksRUFHeERqSSxJQUFNMUos
R0FBWTBKLEVBQUU2RCxnQkFBa0JyRSxHQUFnQkQsRUFBU0MsRUFBY1EsTUFHN0VDLElBQU0zSixH
QUFZMkosRUFBRTRELGdCQUFrQnJFLEdBQWdCRCxFQUFTQyxFQUFjUyxHQUMxRSxFQUlEakIsRUFD
SjdILEVBQVM2SCxFQUFXZ0IsR0FBTTdJLEVBQVM2SCxFQUFXaUIsR0FDaEQsRUFHZSxFQUFWZ0ks
S0FBbUIsSUFFM0IsU0FBVWpJLEVBQUdDLEdBRVosR0FBS0QsSUFBTUMsRUFFVixNQURBaEIsSUFB
ZSxFQUNSLENBR1IsSUFBSXlHLEdBQ0h2TCxFQUFJLEVBQ0pnTyxFQUFNbkksRUFBRTVILFdBQ1I0
UCxFQUFNL0gsRUFBRTdILFdBQ1JnUSxHQUFPcEksR0FDUHFJLEdBQU9wSSxFQUdSLEtBQU1rSSxJ
QUFRSCxFQUNiLE1BQU9oSSxLQUFNMUosS0FDWjJKLElBQU0zSixFQUFXLEVBQ2pCNlIsS0FDQUgs
RUFBTSxFQUNOaEosRUFDRTdILEVBQVM2SCxFQUFXZ0IsR0FBTTdJLEVBQVM2SCxFQUFXaUIsR0FD
aEQsQ0FHSyxJQUFLa0ksSUFBUUgsRUFDbkIsTUFBT3ZDLElBQWN6RixFQUFHQyxFQUl6QnlGLEdB
QU0xRixDQUNOLE9BQVMwRixFQUFNQSxFQUFJdE4sV0FDbEJnUSxFQUFHRSxRQUFTNUMsRUFFYkEs
R0FBTXpGLENBQ04sT0FBU3lGLEVBQU1BLEVBQUl0TixXQUNsQmlRLEVBQUdDLFFBQVM1QyxFQUli
LE9BQVEwQyxFQUFHak8sS0FBT2tPLEVBQUdsTyxHQUNwQkEsR0FHRCxPQUFPQSxHQUVOc0wsR0FB
YzJDLEVBQUdqTyxHQUFJa08sRUFBR2xPLElBR3hCaU8sRUFBR2pPLEtBQU9xRixLQUNWNkksRUFB
R2xPLEtBQU9xRixFQUFlLEVBQ3pCLEdBR0tsSixHQTNZQ0EsR0E4WVRrSSxHQUFPYixRQUFVLFNB
QVU0SyxFQUFNQyxHQUNoQyxNQUFPaEssSUFBUStKLEVBQU0sS0FBTSxLQUFNQyxJQUdsQ2hLLEdB
QU9nSixnQkFBa0IsU0FBVXROLEVBQU1xTyxHQVN4QyxJQVBPck8sRUFBSzJKLGVBQWlCM0osS0FB
VzVELEdBQ3ZDNEksRUFBYWhGLEdBSWRxTyxFQUFPQSxFQUFLek0sUUFBU2dGLEVBQWtCLFVBRWxD
bkosRUFBUTZQLGlCQUFtQnBJLElBQzlCVSxFQUFleUksRUFBTyxRQUNwQmpKLElBQWtCQSxFQUFj
OEUsS0FBTW1FLE9BQ3RDbEosSUFBa0JBLEVBQVUrRSxLQUFNbUUsSUFFckMsSUFDQyxHQUFJM08s
R0FBTStELEVBQVFqRyxLQUFNd0MsRUFBTXFPLEVBRzlCLElBQUszTyxHQUFPakMsRUFBUWtRLG1C
QUdsQjNOLEVBQUs1RCxVQUF1QyxLQUEzQjRELEVBQUs1RCxTQUFTNk0sU0FDaEMsTUFBT3ZKLEdB
RVAsTUFBT3dKLElBR1YsTUFBTzVFLElBQVErSixFQUFNalMsRUFBVSxNQUFRNEQsSUFBU1osT0FB
UyxHQUcxRGtGLEdBQU9lLFNBQVcsU0FBVTlHLEVBQVN5QixHQUtwQyxPQUhPekIsRUFBUW9MLGVB
QWlCcEwsS0FBY25DLEdBQzdDNEksRUFBYXpHLEdBRVA4RyxFQUFVOUcsRUFBU3lCLElBRzNCc0Us
R0FBT2lLLEtBQU8sU0FBVXZPLEVBQU1jLElBRXRCZCxFQUFLMkosZUFBaUIzSixLQUFXNUQsR0FD
dkM0SSxFQUFhaEYsRUFHZCxJQUFJeEIsR0FBSytGLEVBQUsrRyxXQUFZeEssRUFBS2lDLGVBRTlC
eUwsRUFBTWhRLEdBQU1wQixFQUFPSSxLQUFNK0csRUFBSytHLFdBQVl4SyxFQUFLaUMsZUFDOUN2
RSxFQUFJd0IsRUFBTWMsR0FBT29FLEdBQ2pCMUQsTUFFRixPQUFlQSxVQUFSZ04sRUFDTkEsRUFD
QS9RLEVBQVE2SSxhQUFlcEIsRUFDdEJsRixFQUFLbUssYUFBY3JKLElBQ2xCME4sRUFBTXhPLEVB
QUtrTixpQkFBaUJwTSxLQUFVME4sRUFBSUMsVUFDMUNELEVBQUk1SyxNQUNKLE1BR0pVLEdBQU9v
SyxPQUFTLFNBQVVDLEdBQ3pCLE9BQVFBLEVBQU0sSUFBSS9NLFFBQVN5RyxHQUFZQyxLQUd4Q2hF
LEdBQU94QyxNQUFRLFNBQVVDLEdBQ3hCLEtBQU0sSUFBSXpGLE9BQU8sMENBQTRDeUYsSUFPOUR1
QyxHQUFPc0ssV0FBYSxTQUFVekwsR0FDN0IsR0FBSW5ELEdBQ0g2TyxLQUNBck8sRUFBSSxFQUNK
UCxFQUFJLENBT0wsSUFKQThFLEdBQWdCdEgsRUFBUXFSLGlCQUN4QmhLLEdBQWFySCxFQUFRc1Is
WUFBYzVMLEVBQVFyRyxNQUFPLEdBQ2xEcUcsRUFBUXpDLEtBQU1tRixHQUVUZCxFQUFlLENBQ25C
LE1BQVMvRSxFQUFPbUQsRUFBUWxELEtBQ2xCRCxJQUFTbUQsRUFBU2xELEtBQ3RCTyxFQUFJcU8s
RUFBVzdSLEtBQU1pRCxHQUd2QixPQUFRTyxJQUNQMkMsRUFBUXhDLE9BQVFrTyxFQUFZck8sR0FB
SyxHQVFuQyxNQUZBc0UsR0FBWSxLQUVMM0IsR0FPUnFCLEVBQVVGLEdBQU9FLFFBQVUsU0FBVXhF
LEdBQ3BDLEdBQUlvTSxHQUNIMU0sRUFBTSxHQUNOTyxFQUFJLEVBQ0pnSixFQUFXakosRUFBS2lK
LFFBRWpCLElBQU1BLEdBTUMsR0FBa0IsSUFBYkEsR0FBK0IsSUFBYkEsR0FBK0IsS0FBYkEsRUFB
a0IsQ0FHakUsR0FBaUMsZ0JBQXJCakosR0FBS2dQLFlBQ2hCLE1BQU9oUCxHQUFLZ1AsV0FHWixL
QUFNaFAsRUFBT0EsRUFBS2lQLFdBQVlqUCxFQUFNQSxFQUFPQSxFQUFLMkwsWUFDL0NqTSxHQUFP
OEUsRUFBU3hFLE9BR1osSUFBa0IsSUFBYmlKLEdBQStCLElBQWJBLEVBQzdCLE1BQU9qSixHQUFL
a1AsY0FoQlosT0FBUzlDLEVBQU9wTSxFQUFLQyxLQUVwQlAsR0FBTzhFLEVBQVM0SCxFQWtCbEIs
T0FBTzFNLElBR1I2RSxFQUFPRCxHQUFPNkssV0FHYnJFLFlBQWEsR0FFYnNFLGFBQWNwRSxHQUVk
ekIsTUFBT3hDLEVBRVB1RSxjQUVBMkIsUUFFQW9DLFVBQ0NDLEtBQU94RyxJQUFLLGFBQWMxSSxP
QUFPLEdBQ2pDbVAsS0FBT3pHLElBQUssY0FDWjBHLEtBQU8xRyxJQUFLLGtCQUFtQjFJLE9BQU8s
R0FDdENxUCxLQUFPM0csSUFBSyxvQkFHYjRHLFdBQ0N2SSxLQUFRLFNBQVVvQyxHQVVqQixNQVRB
QSxHQUFNLEdBQUtBLEVBQU0sR0FBRzNILFFBQVNpRyxFQUFXQyxJQUd4Q3lCLEVBQU0sSUFBT0Es
RUFBTSxJQUFNQSxFQUFNLElBQU1BLEVBQU0sSUFBTSxJQUFLM0gsUUFBU2lHLEVBQVdDLElBRXhE
LE9BQWJ5QixFQUFNLEtBQ1ZBLEVBQU0sR0FBSyxJQUFNQSxFQUFNLEdBQUssS0FHdEJBLEVBQU16
TSxNQUFPLEVBQUcsSUFHeEJ1SyxNQUFTLFNBQVVrQyxHQTZCbEIsTUFsQkFBLEdBQU0sR0FBS0Es
RUFBTSxHQUFHeEcsY0FFWSxRQUEzQndHLEVBQU0sR0FBR3pNLE1BQU8sRUFBRyxJQUVqQnlNLEVB
QU0sSUFDWGpGLEdBQU94QyxNQUFPeUgsRUFBTSxJQUtyQkEsRUFBTSxLQUFRQSxFQUFNLEdBQUtB
LEVBQU0sSUFBTUEsRUFBTSxJQUFNLEdBQUssR0FBbUIsU0FBYkEsRUFBTSxJQUE4QixRQUFiQSxF
QUFNLEtBQ3pGQSxFQUFNLEtBQVVBLEVBQU0sR0FBS0EsRUFBTSxJQUFxQixRQUFiQSxFQUFNLEtB
R3BDQSxFQUFNLElBQ2pCakYsR0FBT3hDLE1BQU95SCxFQUFNLElBR2RBLEdBR1JuQyxPQUFVLFNB
QVVtQyxHQUNuQixHQUFJb0csR0FDSEMsR0FBWXJHLEVBQU0sSUFBTUEsRUFBTSxFQUUvQixPQUFL
eEMsR0FBaUIsTUFBRW1ELEtBQU1YLEVBQU0sSUFDNUIsTUFJSEEsRUFBTSxHQUNWQSxFQUFNLEdB
QUtBLEVBQU0sSUFBTUEsRUFBTSxJQUFNLEdBR3hCcUcsR0FBWS9JLEVBQVFxRCxLQUFNMEYsS0FF
cENELEVBQVNqTCxFQUFVa0wsR0FBVSxNQUU3QkQsRUFBU0MsRUFBUzNTLFFBQVMsSUFBSzJTLEVB
QVN4USxPQUFTdVEsR0FBV0MsRUFBU3hRLFVBR3ZFbUssRUFBTSxHQUFLQSxFQUFNLEdBQUd6TSxN
QUFPLEVBQUc2UyxHQUM5QnBHLEVBQU0sR0FBS3FHLEVBQVM5UyxNQUFPLEVBQUc2UyxJQUl4QnBH
LEVBQU16TSxNQUFPLEVBQUcsTUFJekJpUSxRQUVDN0YsSUFBTyxTQUFVMkksR0FDaEIsR0FBSS9N
LEdBQVcrTSxFQUFpQmpPLFFBQVNpRyxFQUFXQyxJQUFZL0UsYUFDaEUsT0FBNEIsTUFBckI4TSxF
QUNOLFdBQWEsT0FBTyxHQUNwQixTQUFVN1AsR0FDVCxNQUFPQSxHQUFLOEMsVUFBWTlDLEVBQUs4
QyxTQUFTQyxnQkFBa0JELElBSTNEbUUsTUFBUyxTQUFVMEYsR0FDbEIsR0FBSW1ELEdBQVVySyxF
QUFZa0gsRUFBWSxJQUV0QyxPQUFPbUQsS0FDTEEsRUFBVSxHQUFJckosUUFBUSxNQUFRTCxFQUFh
LElBQU11RyxFQUFZLElBQU12RyxFQUFhLFNBQ2pGWCxFQUFZa0gsRUFBVyxTQUFVM00sR0FDaEMs
TUFBTzhQLEdBQVE1RixLQUFnQyxnQkFBbkJsSyxHQUFLMk0sV0FBMEIzTSxFQUFLMk0sV0FBMEMs
bUJBQXRCM00sR0FBS21LLGNBQWdDbkssRUFBS21LLGFBQWEsVUFBWSxPQUkxSmhELEtBQVEsU0FB
VXJHLEVBQU1pUCxFQUFVQyxHQUNqQyxNQUFPLFVBQVVoUSxHQUNoQixHQUFJaVEsR0FBUzNMLEdB
QU9pSyxLQUFNdk8sRUFBTWMsRUFFaEMsT0FBZSxPQUFWbVAsRUFDZ0IsT0FBYkYsR0FFRkEsSUFJ
TkUsR0FBVSxHQUVVLE1BQWJGLEVBQW1CRSxJQUFXRCxFQUN2QixPQUFiRCxFQUFvQkUsSUFBV0Qs
RUFDbEIsT0FBYkQsRUFBb0JDLEdBQXFDLElBQTVCQyxFQUFPaFQsUUFBUytTLEdBQ2hDLE9BQWJE
LEVBQW9CQyxHQUFTQyxFQUFPaFQsUUFBUytTLE1BQ2hDLE9BQWJELEVBQW9CQyxHQUFTQyxFQUFP
blQsT0FBUWtULEVBQU01USxVQUFhNFEsRUFDbEQsT0FBYkQsR0FBc0IsSUFBTUUsRUFBT3JPLFFB
QVM0RSxFQUFhLEtBQVEsS0FBTXZKLFFBQVMrUyxNQUNuRSxPQUFiRCxJQUFvQkUsSUFBV0QsR0FB
U0MsRUFBT25ULE1BQU8sRUFBR2tULEVBQU01USxPQUFTLEtBQVE0USxFQUFRLFFBSzNGM0ksTUFB
UyxTQUFVbkYsRUFBTWdPLEVBQU1qRSxFQUFVN0wsRUFBT0UsR0FDL0MsR0FBSTZQLEdBQWdDLFFB
QXZCak8sRUFBS3BGLE1BQU8sRUFBRyxHQUMzQnNULEVBQStCLFNBQXJCbE8sRUFBS3BGLFVBQ2Z1
VCxFQUFrQixZQUFUSCxDQUVWLE9BQWlCLEtBQVY5UCxHQUF3QixJQUFURSxFQUdyQixTQUFVTixH
QUNULFFBQVNBLEVBQUs5QixZQUdmLFNBQVU4QixFQUFNekIsRUFBUytSLEdBQ3hCLEdBQUkxRixH
QUFPMkYsRUFBYUMsRUFBWXBFLEVBQU1xRSxFQUFXQyxFQUNwRDVILEVBQU1xSCxJQUFXQyxFQUFV
LGNBQWdCLGtCQUMzQ08sRUFBUzNRLEVBQUs5QixXQUNkNEMsRUFBT3VQLEdBQVVyUSxFQUFLOEMs
U0FBU0MsY0FDL0I2TixHQUFZTixJQUFRRCxFQUNwQjVFLEdBQU8sQ0FFUixJQUFLa0YsRUFBUyxD
QUdiLEdBQUtSLEVBQVMsQ0FDYixNQUFRckgsRUFBTSxDQUNic0QsRUFBT3BNLENBQ1AsT0FBU29N
LEVBQU9BLEVBQU10RCxHQUNyQixHQUFLdUgsRUFDSmpFLEVBQUt0SixTQUFTQyxnQkFBa0JqQyxF
QUNkLElBQWxCc0wsRUFBS25ELFNBRUwsT0FBTyxDQUlUeUgsR0FBUTVILEVBQWUsU0FBVDVHLElB
QW9Cd08sR0FBUyxjQUU1QyxPQUFPLEVBTVIsR0FIQUEsR0FBVU4sRUFBVU8sRUFBTzFCLFdBQWEw
QixFQUFPRSxXQUcxQ1QsR0FBV1EsRUFBVyxDQUsxQnhFLEVBQU91RSxFQUNQSCxFQUFhcEUsRUFB
TTNLLEtBQWMySyxFQUFNM0ssT0FJdkM4TyxFQUFjQyxFQUFZcEUsRUFBSzBFLFlBQzdCTixFQUFZ
cEUsRUFBSzBFLGNBRW5CbEcsRUFBUTJGLEVBQWFyTyxPQUNyQnVPLEVBQVk3RixFQUFPLEtBQVFy
RixHQUFXcUYsRUFBTyxHQUM3Q2EsRUFBT2dGLEdBQWE3RixFQUFPLEdBQzNCd0IsRUFBT3FFLEdB
QWFFLEVBQU8zSCxXQUFZeUgsRUFFdkMsT0FBU3JFLElBQVNxRSxHQUFhckUsR0FBUUEsRUFBTXRE
LEtBRzNDMkMsRUFBT2dGLEVBQVksSUFBTUMsRUFBTTFLLE1BR2hDLEdBQXVCLElBQWxCb0csRUFB
S25ELFlBQW9Cd0MsR0FBUVcsSUFBU3BNLEVBQU8sQ0FDckR1USxFQUFhck8sSUFBV3FELEVBQVNr
TCxFQUFXaEYsRUFDNUMsWUF1QkYsSUFqQkttRixJQUVKeEUsRUFBT3BNLEVBQ1B3USxFQUFhcEUs
RUFBTTNLLEtBQWMySyxFQUFNM0ssT0FJdkM4TyxFQUFjQyxFQUFZcEUsRUFBSzBFLFlBQzdCTixF
QUFZcEUsRUFBSzBFLGNBRW5CbEcsRUFBUTJGLEVBQWFyTyxPQUNyQnVPLEVBQVk3RixFQUFPLEtB
QVFyRixHQUFXcUYsRUFBTyxHQUM3Q2EsRUFBT2dGLEdBS0hoRixLQUFTLEVBRWIsTUFBU1csSUFB
U3FFLEdBQWFyRSxHQUFRQSxFQUFNdEQsS0FDM0MyQyxFQUFPZ0YsRUFBWSxJQUFNQyxFQUFNMUss
TUFFaEMsSUFBT3FLLEVBQ05qRSxFQUFLdEosU0FBU0MsZ0JBQWtCakMsRUFDZCxJQUFsQnNMLEVB
QUtuRCxhQUNId0MsSUFHR21GLElBQ0pKLEVBQWFwRSxFQUFNM0ssS0FBYzJLLEVBQU0zSyxPQUl2
QzhPLEVBQWNDLEVBQVlwRSxFQUFLMEUsWUFDN0JOLEVBQVlwRSxFQUFLMEUsY0FFbkJQLEVBQWFy
TyxJQUFXcUQsRUFBU2tHLElBRzdCVyxJQUFTcE0sR0FDYixLQVNMLE9BREF5TCxJQUFRbkwsRUFD
RG1MLElBQVNyTCxHQUFXcUwsRUFBT3JMLElBQVUsR0FBS3FMLEVBQU9yTCxHQUFTLEtBS3JFZ0gs
T0FBVSxTQUFVMkosRUFBUTlFLEdBSzNCLEdBQUlqSSxHQUNIeEYsRUFBSytGLEVBQUtnQyxRQUFT
d0ssSUFBWXhNLEVBQUt5TSxXQUFZRCxFQUFPaE8sZ0JBQ3REdUIsR0FBT3hDLE1BQU8sdUJBQXlC
aVAsRUFLekMsT0FBS3ZTLEdBQUlpRCxHQUNEakQsRUFBSXlOLEdBSVB6TixFQUFHWSxPQUFTLEdB
Q2hCNEUsR0FBUytNLEVBQVFBLEVBQVEsR0FBSTlFLEdBQ3RCMUgsRUFBS3lNLFdBQVczVCxlQUFn
QjBULEVBQU9oTyxlQUM3Q2lJLEdBQWEsU0FBVTVCLEVBQU0zRixHQUM1QixHQUFJd04sR0FDSEMs
RUFBVTFTLEVBQUk0SyxFQUFNNkMsR0FDcEJoTSxFQUFJaVIsRUFBUTlSLE1BQ2IsT0FBUWEsSUFD
UGdSLEVBQU1oVSxFQUFTbU0sRUFBTThILEVBQVFqUixJQUM3Qm1KLEVBQU02SCxLQUFXeE4sRUFB
U3dOLEdBQVFDLEVBQVFqUixNQUc1QyxTQUFVRCxHQUNULE1BQU94QixHQUFJd0IsRUFBTSxFQUFH
Z0UsS0FJaEJ4RixJQUlUK0gsU0FFQzRLLElBQU9uRyxHQUFhLFNBQVUxTSxHQUk3QixHQUFJK08s
TUFDSGxLLEtBQ0FpTyxFQUFVek0sRUFBU3JHLEVBQVNzRCxRQUFTbEQsRUFBTyxNQUU3QyxPQUFP
MFMsR0FBUzNQLEdBQ2Z1SixHQUFhLFNBQVU1QixFQUFNM0YsRUFBU2xGLEVBQVMrUixHQUM5QyxH
QUFJdFEsR0FDSHFSLEVBQVlELEVBQVNoSSxFQUFNLEtBQU1rSCxNQUNqQ3JRLEVBQUltSixFQUFL
aEssTUFHVixPQUFRYSxLQUNERCxFQUFPcVIsRUFBVXBSLE1BQ3RCbUosRUFBS25KLEtBQU93RCxF
QUFReEQsR0FBS0QsTUFJNUIsU0FBVUEsRUFBTXpCLEVBQVMrUixHQUt4QixNQUpBakQsR0FBTSxH
QUFLck4sRUFDWG9SLEVBQVMvRCxFQUFPLEtBQU1pRCxFQUFLbk4sR0FFM0JrSyxFQUFNLEdBQUss
TUFDSGxLLEVBQVE2QyxTQUluQnNMLElBQU90RyxHQUFhLFNBQVUxTSxHQUM3QixNQUFPLFVBQVUw
QixHQUNoQixNQUFPc0UsSUFBUWhHLEVBQVUwQixHQUFPWixPQUFTLEtBSTNDaUcsU0FBWTJGLEdB
QWEsU0FBVWpOLEdBRWxDLE1BREFBLEdBQU9BLEVBQUs2RCxRQUFTaUcsRUFBV0MsSUFDekIsU0FB
VTlILEdBQ2hCLE9BQVNBLEVBQUtnUCxhQUFlaFAsRUFBS3VSLFdBQWEvTSxFQUFTeEUsSUFBUy9D
LFFBQVNjLFNBVzVFeVQsS0FBUXhHLEdBQWMsU0FBVXdHLEdBTS9CLE1BSk0xSyxHQUFZb0QsS0FB
S3NILEdBQVEsS0FDOUJsTixHQUFPeEMsTUFBTyxxQkFBdUIwUCxHQUV0Q0EsRUFBT0EsRUFBSzVQ
LFFBQVNpRyxFQUFXQyxJQUFZL0UsY0FDckMsU0FBVS9DLEdBQ2hCLEdBQUl5UixFQUNKLEdBQ0Ms
SUFBTUEsRUFBV3ZNLEVBQ2hCbEYsRUFBS3dSLEtBQ0x4UixFQUFLbUssYUFBYSxhQUFlbkssRUFB
S21LLGFBQWEsUUFHbkQsTUFEQXNILEdBQVdBLEVBQVMxTyxjQUNiME8sSUFBYUQsR0FBMkMsSUFB
bkNDLEVBQVN4VSxRQUFTdVUsRUFBTyxZQUU1Q3hSLEVBQU9BLEVBQUs5QixhQUFpQyxJQUFsQjhC
LEVBQUtpSixTQUMzQyxRQUFPLEtBS1Q5SCxPQUFVLFNBQVVuQixHQUNuQixHQUFJMFIsR0FBT25W
LEVBQU9vVixVQUFZcFYsRUFBT29WLFNBQVNELElBQzlDLE9BQU9BLElBQVFBLEVBQUs1VSxNQUFP
LEtBQVFrRCxFQUFLOEosSUFHekM4SCxLQUFRLFNBQVU1UixHQUNqQixNQUFPQSxLQUFTaUYsR0FH
akI0TSxNQUFTLFNBQVU3UixHQUNsQixNQUFPQSxLQUFTNUQsRUFBUzBWLGlCQUFtQjFWLEVBQVMy
VixVQUFZM1YsRUFBUzJWLGdCQUFrQi9SLEVBQUtrQyxNQUFRbEMsRUFBS2dTLE9BQVNoUyxFQUFL
aVMsV0FJN0hDLFFBQVdwRyxJQUFzQixHQUNqQ2pELFNBQVlpRCxJQUFzQixHQUVsQ3FHLFFBQVcs
U0FBVW5TLEdBR3BCLEdBQUk4QyxHQUFXOUMsRUFBSzhDLFNBQVNDLGFBQzdCLE9BQXFCLFVBQWJE
LEtBQTBCOUMsRUFBS21TLFNBQTBCLFdBQWJyUCxLQUEyQjlDLEVBQUtvUyxVQUdyRkEsU0FBWSxT
QUFVcFMsR0FPckIsTUFKS0EsR0FBSzlCLFlBQ1Q4QixFQUFLOUIsV0FBV21VLGNBR1ZyUyxFQUFL
b1MsWUFBYSxHQUkxQkUsTUFBUyxTQUFVdFMsR0FLbEIsSUFBTUEsRUFBT0EsRUFBS2lQLFdBQVlq
UCxFQUFNQSxFQUFPQSxFQUFLMkwsWUFDL0MsR0FBSzNMLEVBQUtpSixTQUFXLEVBQ3BCLE9BQU8s
Q0FHVCxRQUFPLEdBR1IwSCxPQUFVLFNBQVUzUSxHQUNuQixPQUFRdUUsRUFBS2dDLFFBQWUsTUFB
R3ZHLElBSWhDdVMsT0FBVSxTQUFVdlMsR0FDbkIsTUFBT3lILEdBQVF5QyxLQUFNbEssRUFBSzhD
LFdBRzNCdUssTUFBUyxTQUFVck4sR0FDbEIsTUFBT3dILEdBQVEwQyxLQUFNbEssRUFBSzhDLFdB
RzNCMFAsT0FBVSxTQUFVeFMsR0FDbkIsR0FBSWMsR0FBT2QsRUFBSzhDLFNBQVNDLGFBQ3pCLE9B
QWdCLFVBQVRqQyxHQUFrQyxXQUFkZCxFQUFLa0MsTUFBOEIsV0FBVHBCLEdBR3REL0MsS0FBUSxT
QUFVaUMsR0FDakIsR0FBSXVPLEVBQ0osT0FBdUMsVUFBaEN2TyxFQUFLOEMsU0FBU0MsZUFDTixT
QUFkL0MsRUFBS2tDLE9BSW1DLE9BQXJDcU0sRUFBT3ZPLEVBQUttSyxhQUFhLFVBQTJDLFNBQXZC
b0UsRUFBS3hMLGdCQUl2RDNDLE1BQVM0TCxHQUF1QixXQUMvQixPQUFTLEtBR1YxTCxLQUFRMEws
R0FBdUIsU0FBVUUsRUFBYzlNLEdBQ3RELE9BQVNBLEVBQVMsS0FHbkJpQixHQUFNMkwsR0FBdUIs
U0FBVUUsRUFBYzlNLEVBQVE2TSxHQUM1RCxPQUFTQSxFQUFXLEVBQUlBLEVBQVc3TSxFQUFTNk0s
S0FHN0N3RyxLQUFRekcsR0FBdUIsU0FBVUUsRUFBYzlNLEdBRXRELElBREEsR0FBSWEsR0FBSSxF
QUNBQSxFQUFJYixFQUFRYSxHQUFLLEVBQ3hCaU0sRUFBYWxQLEtBQU1pRCxFQUVwQixPQUFPaU0s
S0FHUndHLElBQU8xRyxHQUF1QixTQUFVRSxFQUFjOU0sR0FFckQsSUFEQSxHQUFJYSxHQUFJLEVB
Q0FBLEVBQUliLEVBQVFhLEdBQUssRUFDeEJpTSxFQUFhbFAsS0FBTWlELEVBRXBCLE9BQU9pTSxL
QUdSeUcsR0FBTTNHLEdBQXVCLFNBQVVFLEVBQWM5TSxFQUFRNk0sR0FFNUQsSUFEQSxHQUFJaE0s
R0FBSWdNLEVBQVcsRUFBSUEsRUFBVzdNLEVBQVM2TSxJQUNqQ2hNLEdBQUssR0FDZGlNLEVBQWFs
UCxLQUFNaUQsRUFFcEIsT0FBT2lNLEtBR1IwRyxHQUFNNUcsR0FBdUIsU0FBVUUsRUFBYzlNLEVB
QVE2TSxHQUU1RCxJQURBLEdBQUloTSxHQUFJZ00sRUFBVyxFQUFJQSxFQUFXN00sRUFBUzZNLElB
Q2pDaE0sRUFBSWIsR0FDYjhNLEVBQWFsUCxLQUFNaUQsRUFFcEIsT0FBT2lNLE9BS1YzSCxFQUFL
Z0MsUUFBYSxJQUFJaEMsRUFBS2dDLFFBQVksRUFHdkMsS0FBTXRHLEtBQU80UyxPQUFPLEVBQU1D
LFVBQVUsRUFBTUMsTUFBTSxFQUFNQyxVQUFVLEVBQU1DLE9BQU8sR0FDNUUxTyxFQUFLZ0MsUUFB
U3RHLEdBQU0yTCxHQUFtQjNMLEVBRXhDLEtBQU1BLEtBQU9pVCxRQUFRLEVBQU1DLE9BQU8sR0FD
akM1TyxFQUFLZ0MsUUFBU3RHLEdBQU00TCxHQUFvQjVMLEVBSXpDLFNBQVMrUSxPQUNUQSxHQUFX
L1IsVUFBWXNGLEVBQUs2TyxRQUFVN08sRUFBS2dDLFFBQzNDaEMsRUFBS3lNLFdBQWEsR0FBSUEs
SUFFdEJ0TSxFQUFXSixHQUFPSSxTQUFXLFNBQVVwRyxFQUFVK1UsR0FDaEQsR0FBSW5DLEdBQVMz
SCxFQUFPK0osRUFBUXBSLEVBQzNCcVIsRUFBTy9KLEVBQVFnSyxFQUNmQyxFQUFTOU4sRUFBWXJI
LEVBQVcsSUFFakMsSUFBS21WLEVBQ0osTUFBT0osR0FBWSxFQUFJSSxFQUFPM1csTUFBTyxFQUd0
Q3lXLEdBQVFqVixFQUNSa0wsS0FDQWdLLEVBQWFqUCxFQUFLbUwsU0FFbEIsT0FBUTZELEVBQVEs
Q0FHVHJDLEtBQVkzSCxFQUFRN0MsRUFBT2tELEtBQU0ySixNQUNqQ2hLLElBRUpnSyxFQUFRQSxF
QUFNelcsTUFBT3lNLEVBQU0sR0FBR25LLFNBQVltVSxHQUUzQy9KLEVBQU94TSxLQUFPc1csT0FH
ZnBDLEdBQVUsR0FHSjNILEVBQVE1QyxFQUFhaUQsS0FBTTJKLE1BQ2hDckMsRUFBVTNILEVBQU13
QixRQUNoQnVJLEVBQU90VyxNQUNONEcsTUFBT3NOLEVBRVBoUCxLQUFNcUgsRUFBTSxHQUFHM0gs
UUFBU2xELEVBQU8sT0FFaEM2VSxFQUFRQSxFQUFNelcsTUFBT29VLEVBQVE5UixRQUk5QixLQUFN
OEMsSUFBUXFDLEdBQUt3SSxTQUNaeEQsRUFBUXhDLEVBQVc3RSxHQUFPMEgsS0FBTTJKLEtBQWND
LEVBQVl0UixNQUM5RHFILEVBQVFpSyxFQUFZdFIsR0FBUXFILE1BQzdCMkgsRUFBVTNILEVBQU13
QixRQUNoQnVJLEVBQU90VyxNQUNONEcsTUFBT3NOLEVBQ1BoUCxLQUFNQSxFQUNOdUIsUUFBUzhG
LElBRVZnSyxFQUFRQSxFQUFNelcsTUFBT29VLEVBQVE5UixRQUkvQixLQUFNOFIsRUFDTCxNQU9G
LE1BQU9tQyxHQUNORSxFQUFNblUsT0FDTm1VLEVBQ0NqUCxHQUFPeEMsTUFBT3hELEdBRWRxSCxF
QUFZckgsRUFBVWtMLEdBQVMxTSxNQUFPLEdBR3pDLFNBQVN1TixJQUFZaUosR0FJcEIsSUFIQSxH
QUFJclQsR0FBSSxFQUNQTSxFQUFNK1MsRUFBT2xVLE9BQ2JkLEVBQVcsR0FDSjJCLEVBQUlNLEVB
QUtOLElBQ2hCM0IsR0FBWWdWLEVBQU9yVCxHQUFHMkQsS0FFdkIsT0FBT3RGLEdBR1IsUUFBU3NL
LElBQWV3SSxFQUFTc0MsRUFBWUMsR0FDNUMsR0FBSTdLLEdBQU00SyxFQUFXNUssSUFDcEI4SyxF
QUFPRixFQUFXM0ssS0FDbEI4QixFQUFNK0ksR0FBUTlLLEVBQ2QrSyxFQUFtQkYsR0FBZ0IsZUFB
UjlJLEVBQzNCaUosRUFBV3RPLEdBRVosT0FBT2tPLEdBQVd0VCxNQUVqQixTQUFVSixFQUFNekIs
RUFBUytSLEdBQ3hCLE1BQVN0USxFQUFPQSxFQUFNOEksR0FDckIsR0FBdUIsSUFBbEI5SSxFQUFL
aUosVUFBa0I0SyxFQUMzQixNQUFPekMsR0FBU3BSLEVBQU16QixFQUFTK1IsRUFHakMsUUFBTyxH
QUlSLFNBQVV0USxFQUFNekIsRUFBUytSLEdBQ3hCLEdBQUl5RCxHQUFVeEQsRUFBYUMsRUFDMUJ3
RCxHQUFhek8sRUFBU3VPLEVBR3ZCLElBQUt4RCxHQUNKLE1BQVN0USxFQUFPQSxFQUFNOEksR0FD
ckIsSUFBdUIsSUFBbEI5SSxFQUFLaUosVUFBa0I0SyxJQUN0QnpDLEVBQVNwUixFQUFNekIsRUFB
UytSLEdBQzVCLE9BQU8sTUFLVixPQUFTdFEsRUFBT0EsRUFBTThJLEdBQ3JCLEdBQXVCLElBQWxC
OUksRUFBS2lKLFVBQWtCNEssRUFPM0IsR0FOQXJELEVBQWF4USxFQUFNeUIsS0FBY3pCLEVBQU15
QixPQUl2QzhPLEVBQWNDLEVBQVl4USxFQUFLOFEsWUFBZU4sRUFBWXhRLEVBQUs4USxjQUUxRDhD
LEdBQVFBLElBQVM1VCxFQUFLOEMsU0FBU0MsY0FDbkMvQyxFQUFPQSxFQUFNOEksSUFBUzlJLE1B
Q2hCLENBQUEsSUFBTStULEVBQVd4RCxFQUFhMUYsS0FDcENrSixFQUFVLEtBQVF4TyxHQUFXd08s
RUFBVSxLQUFRRCxFQUcvQyxNQUFRRSxHQUFVLEdBQU1ELEVBQVUsRUFNbEMsSUFIQXhELEVBQWEx
RixHQUFRbUosRUFHZkEsRUFBVSxHQUFNNUMsRUFBU3BSLEVBQU16QixFQUFTK1IsR0FDN0MsT0FB
TyxFQU1aLE9BQU8sR0FJVixRQUFTMkQsSUFBZ0JDLEdBQ3hCLE1BQU9BLEdBQVM5VSxPQUFTLEVB
Q3hCLFNBQVVZLEVBQU16QixFQUFTK1IsR0FDeEIsR0FBSXJRLEdBQUlpVSxFQUFTOVUsTUFDakIs
T0FBUWEsSUFDUCxJQUFNaVUsRUFBU2pVLEdBQUlELEVBQU16QixFQUFTK1IsR0FDakMsT0FBTyxD
QUdULFFBQU8sR0FFUjRELEVBQVMsR0FHWCxRQUFTQyxJQUFrQjdWLEVBQVU4VixFQUFValIsR0FH
OUMsSUFGQSxHQUFJbEQsR0FBSSxFQUNQTSxFQUFNNlQsRUFBU2hWLE9BQ1JhLEVBQUlNLEVBQUtO
LElBQ2hCcUUsR0FBUWhHLEVBQVU4VixFQUFTblUsR0FBSWtELEVBRWhDLE9BQU9BLEdBR1IsUUFB
U2tSLElBQVVoRCxFQUFXdFIsRUFBS2dOLEVBQVF4TyxFQUFTK1IsR0FPbkQsSUFOQSxHQUFJdFEs
R0FDSHNVLEtBQ0FyVSxFQUFJLEVBQ0pNLEVBQU04USxFQUFValMsT0FDaEJtVixFQUFnQixNQUFQ
eFUsRUFFRkUsRUFBSU0sRUFBS04sS0FDVkQsRUFBT3FSLEVBQVVwUixNQUNoQjhNLElBQVVBLEVB
QVEvTSxFQUFNekIsRUFBUytSLEtBQ3RDZ0UsRUFBYXRYLEtBQU1nRCxHQUNkdVUsR0FDSnhVLEVB
QUkvQyxLQUFNaUQsSUFNZCxPQUFPcVUsR0FHUixRQUFTRSxJQUFZOUUsRUFBV3BSLEVBQVU4UyxF
QUFTcUQsRUFBWUMsRUFBWUMsR0FPMUUsTUFOS0YsS0FBZUEsRUFBWWhULEtBQy9CZ1QsRUFBYUQs
R0FBWUMsSUFFckJDLElBQWVBLEVBQVlqVCxLQUMvQmlULEVBQWFGLEdBQVlFLEVBQVlDLElBRS9C
M0osR0FBYSxTQUFVNUIsRUFBTWpHLEVBQVM1RSxFQUFTK1IsR0FDckQsR0FBSXNFLEdBQU0zVSxF
QUFHRCxFQUNaNlUsS0FDQUMsS0FDQUMsRUFBYzVSLEVBQVEvRCxPQUd0QkssRUFBUTJKLEdBQVEr
SyxHQUFrQjdWLEdBQVksSUFBS0MsRUFBUTBLLFVBQWExSyxHQUFZQSxNQUdwRnlXLEdBQVl0RixJ
QUFldEcsR0FBUzlLLEVBRW5DbUIsRUFEQTRVLEdBQVU1VSxFQUFPb1YsRUFBUW5GLEVBQVduUixF
QUFTK1IsR0FHOUMyRSxFQUFhN0QsRUFFWnNELElBQWdCdEwsRUFBT3NHLEVBQVlxRixHQUFlTixN
QU1qRHRSLEVBQ0Q2UixDQVFGLElBTEs1RCxHQUNKQSxFQUFTNEQsRUFBV0MsRUFBWTFXLEVBQVMr
UixHQUlyQ21FLEVBQWEsQ0FDakJHLEVBQU9QLEdBQVVZLEVBQVlILEdBQzdCTCxFQUFZRyxLQUFV
clcsRUFBUytSLEdBRy9CclEsRUFBSTJVLEVBQUt4VixNQUNULE9BQVFhLEtBQ0RELEVBQU80VSxF
QUFLM1UsTUFDakJnVixFQUFZSCxFQUFRN1UsTUFBUytVLEVBQVdGLEVBQVE3VSxJQUFPRCxJQUsx
RCxHQUFLb0osR0FDSixHQUFLc0wsR0FBY2hGLEVBQVksQ0FDOUIsR0FBS2dGLEVBQWEsQ0FFakJF
LEtBQ0EzVSxFQUFJZ1YsRUFBVzdWLE1BQ2YsT0FBUWEsS0FDREQsRUFBT2lWLEVBQVdoVixLQUV2
QjJVLEVBQUs1WCxLQUFPZ1ksRUFBVS9VLEdBQUtELEVBRzdCMFUsR0FBWSxLQUFPTyxLQUFrQkws
RUFBTXRFLEdBSTVDclEsRUFBSWdWLEVBQVc3VixNQUNmLE9BQVFhLEtBQ0RELEVBQU9pVixFQUFX
aFYsTUFDdEIyVSxFQUFPRixFQUFhelgsRUFBU21NLEVBQU1wSixHQUFTNlUsRUFBTzVVLFNBRXBE
bUosRUFBS3dMLEtBQVV6UixFQUFReVIsR0FBUTVVLFNBT2xDaVYsR0FBYVosR0FDWlksSUFBZTlS
LEVBQ2Q4UixFQUFXdFUsT0FBUW9VLEVBQWFFLEVBQVc3VixRQUMzQzZWLEdBRUdQLEVBQ0pBLEVB
QVksS0FBTXZSLEVBQVM4UixFQUFZM0UsR0FFdkN0VCxFQUFLa0QsTUFBT2lELEVBQVM4UixLQU16
QixRQUFTQyxJQUFtQjVCLEdBd0IzQixJQXZCQSxHQUFJNkIsR0FBYy9ELEVBQVM1USxFQUMxQkQs
RUFBTStTLEVBQU9sVSxPQUNiZ1csRUFBa0I3USxFQUFLOEssU0FBVWlFLEVBQU8sR0FBR3BSLE1B
QzNDbVQsRUFBbUJELEdBQW1CN1EsRUFBSzhLLFNBQVMsS0FDcERwUCxFQUFJbVYsRUFBa0IsRUFB
SSxFQUcxQkUsRUFBZTFNLEdBQWUsU0FBVTVJLEdBQ3ZDLE1BQU9BLEtBQVNtVixHQUNkRSxHQUFr
QixHQUNyQkUsRUFBa0IzTSxHQUFlLFNBQVU1SSxHQUMxQyxNQUFPL0MsR0FBU2tZLEVBQWNuVixP
QUM1QnFWLEdBQWtCLEdBQ3JCbkIsR0FBYSxTQUFVbFUsRUFBTXpCLEVBQVMrUixHQUNyQyxHQUFJ
NVEsSUFBUzBWLElBQXFCOUUsR0FBTy9SLElBQVlzRyxNQUNuRHNRLEVBQWU1VyxHQUFTMEssU0FD
eEJxTSxFQUFjdFYsRUFBTXpCLEVBQVMrUixHQUM3QmlGLEVBQWlCdlYsRUFBTXpCLEVBQVMrUixH
QUdsQyxPQURBNkUsR0FBZSxLQUNSelYsSUFHRE8sRUFBSU0sRUFBS04sSUFDaEIsR0FBTW1SLEVB
QVU3TSxFQUFLOEssU0FBVWlFLEVBQU9yVCxHQUFHaUMsTUFDeENnUyxHQUFhdEwsR0FBY3FMLEdB
QWdCQyxHQUFZOUMsUUFDakQsQ0FJTixHQUhBQSxFQUFVN00sRUFBS3dJLE9BQVF1RyxFQUFPclQs
R0FBR2lDLE1BQU9oQyxNQUFPLEtBQU1vVCxFQUFPclQsR0FBR3dELFNBRzFEMk4sRUFBUzNQLEdB
QVksQ0FHekIsSUFEQWpCLElBQU1QLEVBQ0VPLEVBQUlELEVBQUtDLElBQ2hCLEdBQUsrRCxFQUFL
OEssU0FBVWlFLEVBQU85UyxHQUFHMEIsTUFDN0IsS0FHRixPQUFPc1MsSUFDTnZVLEVBQUksR0FB
S2dVLEdBQWdCQyxHQUN6QmpVLEVBQUksR0FBS29LLEdBRVJpSixFQUFPeFcsTUFBTyxFQUFHbUQs
RUFBSSxHQUFJbEQsUUFBUzZHLE1BQWdDLE1BQXpCMFAsRUFBUXJULEVBQUksR0FBSWlDLEtBQWUs
SUFBTSxNQUM3RU4sUUFBU2xELEVBQU8sTUFDbEIwUyxFQUNBblIsRUFBSU8sR0FBSzBVLEdBQW1C
NUIsRUFBT3hXLE1BQU9tRCxFQUFHTyxJQUM3Q0EsRUFBSUQsR0FBTzJVLEdBQW9CNUIsRUFBU0Es
RUFBT3hXLE1BQU8wRCxJQUN0REEsRUFBSUQsR0FBTzhKLEdBQVlpSixJQUd6QlksRUFBU2xYLEtB
QU1vVSxHQUlqQixNQUFPNkMsSUFBZ0JDLEdBR3hCLFFBQVNzQixJQUEwQkMsRUFBaUJDLEdBQ25E
LEdBQUlDLEdBQVFELEVBQVl0VyxPQUFTLEVBQ2hDd1csRUFBWUgsRUFBZ0JyVyxPQUFTLEVBQ3JD
eVcsRUFBZSxTQUFVek0sRUFBTTdLLEVBQVMrUixFQUFLbk4sRUFBUzJTLEdBQ3JELEdBQUk5VixH
QUFNUSxFQUFHNFEsRUFDWjJFLEVBQWUsRUFDZjlWLEVBQUksSUFDSm9SLEVBQVlqSSxNQUNaNE0s
S0FDQUMsRUFBZ0JwUixFQUVoQnBGLEVBQVEySixHQUFRd00sR0FBYXJSLEVBQUswSSxLQUFVLElB
QUcsSUFBSzZJLEdBRXBESSxFQUFpQjNRLEdBQTRCLE1BQWpCMFEsRUFBd0IsRUFBSXZVLEtBQUtD
LFVBQVksR0FDekVwQixFQUFNZCxFQUFNTCxNQVNiLEtBUEswVyxJQUNKalIsRUFBbUJ0RyxJQUFZ
bkMsR0FBWW1DLEdBQVd1WCxHQU0vQzdWLElBQU1NLEdBQTRCLE9BQXBCUCxFQUFPUCxFQUFNUSxJ
QUFhQSxJQUFNLENBQ3JELEdBQUsyVixHQUFhNVYsRUFBTyxDQUN4QlEsRUFBSSxFQUNFakMsR0FB
V3lCLEVBQUsySixnQkFBa0J2TixJQUN2QzRJLEVBQWFoRixHQUNic1EsR0FBT3BMLEVBRVIsT0FB
U2tNLEVBQVVxRSxFQUFnQmpWLEtBQ2xDLEdBQUs0USxFQUFTcFIsRUFBTXpCLEdBQVduQyxFQUFV
a1UsR0FBTyxDQUMvQ25OLEVBQVFuRyxLQUFNZ0QsRUFDZCxPQUdHOFYsSUFDSnZRLEVBQVUyUSxH
QUtQUCxLQUVFM1YsR0FBUW9SLEdBQVdwUixJQUN4QitWLElBSUkzTSxHQUNKaUksRUFBVXJVLEtB
QU1nRCxJQWdCbkIsR0FUQStWLEdBQWdCOVYsRUFTWDBWLEdBQVMxVixJQUFNOFYsRUFBZSxDQUNs
Q3ZWLEVBQUksQ0FDSixPQUFTNFEsRUFBVXNFLEVBQVlsVixLQUM5QjRRLEVBQVNDLEVBQVcyRSxF
QUFZelgsRUFBUytSLEVBRzFDLElBQUtsSCxFQUFPLENBRVgsR0FBSzJNLEVBQWUsRUFDbkIsTUFB
UTlWLElBQ0FvUixFQUFVcFIsSUFBTStWLEVBQVcvVixLQUNqQytWLEVBQVcvVixHQUFLK0YsRUFB
SXhJLEtBQU0yRixHQU03QjZTLEdBQWEzQixHQUFVMkIsR0FJeEJoWixFQUFLa0QsTUFBT2lELEVB
QVM2UyxHQUdoQkYsSUFBYzFNLEdBQVE0TSxFQUFXNVcsT0FBUyxHQUM1QzJXLEVBQWVMLEVBQVl0
VyxPQUFXLEdBRXhDa0YsR0FBT3NLLFdBQVl6TCxHQVVyQixNQUxLMlMsS0FDSnZRLEVBQVUyUSxF
QUNWclIsRUFBbUJvUixHQUdiNUUsRUFHVCxPQUFPc0UsR0FDTjNLLEdBQWM2SyxHQUNkQSxFQStL
RixNQTVLQWxSLEdBQVVMLEdBQU9LLFFBQVUsU0FBVXJHLEVBQVVpTCxHQUM5QyxHQUFJdEosR0FD
SHlWLEtBQ0FELEtBQ0FoQyxFQUFTN04sRUFBZXRILEVBQVcsSUFFcEMsS0FBTW1WLEVBQVMsQ0FF
UmxLLElBQ0xBLEVBQVE3RSxFQUFVcEcsSUFFbkIyQixFQUFJc0osRUFBTW5LLE1BQ1YsT0FBUWEs
SUFDUHdULEVBQVN5QixHQUFtQjNMLEVBQU10SixJQUM3QndULEVBQVFoUyxHQUNaaVUsRUFBWTFZ
LEtBQU15VyxHQUVsQmdDLEVBQWdCelksS0FBTXlXLEVBS3hCQSxHQUFTN04sRUFBZXRILEVBQVVr
WCxHQUEwQkMsRUFBaUJDLElBRzdFakMsRUFBT25WLFNBQVdBLEVBRW5CLE1BQU9tVixJQVlSN08s
RUFBU04sR0FBT00sT0FBUyxTQUFVdEcsRUFBVUMsRUFBUzRFLEVBQVNpRyxHQUM5RCxHQUFJbkos
R0FBR3FULEVBQVE2QyxFQUFPalUsRUFBTStLLEVBQzNCbUosRUFBK0Isa0JBQWI5WCxJQUEyQkEs
RUFDN0NpTCxHQUFTSCxHQUFRMUUsRUFBV3BHLEVBQVc4WCxFQUFTOVgsVUFBWUEsRUFNN0QsSUFK
QTZFLEVBQVVBLE1BSVksSUFBakJvRyxFQUFNbkssT0FBZSxDQUl6QixHQURBa1UsRUFBUy9KLEVB
QU0sR0FBS0EsRUFBTSxHQUFHek0sTUFBTyxHQUMvQndXLEVBQU9sVSxPQUFTLEdBQWtDLFFBQTVC
K1csRUFBUTdDLEVBQU8sSUFBSXBSLE1BQ3ZCLElBQXJCM0QsRUFBUTBLLFVBQWtCL0QsR0FBa0JY
LEVBQUs4SyxTQUFVaUUsRUFBTyxHQUFHcFIsTUFBUyxDQUcvRSxHQURBM0QsR0FBWWdHLEVBQUsw
SSxLQUFTLEdBQUdrSixFQUFNMVMsUUFBUSxHQUFHN0IsUUFBUWlHLEVBQVdDLElBQVl2SixRQUFr
QixJQUN6RkEsRUFDTCxNQUFPNEUsRUFHSWlULEtBQ1g3WCxFQUFVQSxFQUFRTCxZQUduQkksRUFB
V0EsRUFBU3hCLE1BQU93VyxFQUFPdkksUUFBUW5ILE1BQU14RSxRQUlqRGEsRUFBSThHLEVBQXdC
LGFBQUVtRCxLQUFNNUwsR0FBYSxFQUFJZ1YsRUFBT2xVLE1BQzVELE9BQVFhLElBQU0sQ0FJYixH
QUhBa1csRUFBUTdDLEVBQU9yVCxHQUdWc0UsRUFBSzhLLFNBQVduTixFQUFPaVUsRUFBTWpVLE1B
Q2pDLEtBRUQsS0FBTStLLEVBQU8xSSxFQUFLMEksS0FBTS9LLE1BRWpCa0gsRUFBTzZELEVBQ1pr
SixFQUFNMVMsUUFBUSxHQUFHN0IsUUFBU2lHLEVBQVdDLElBQ3JDRixFQUFTc0MsS0FBTW9KLEVB
QU8sR0FBR3BSLE9BQVVxSSxHQUFhaE0sRUFBUUwsYUFBZ0JLLElBQ3BFLENBS0osR0FGQStVLEVB
QU8zUyxPQUFRVixFQUFHLEdBQ2xCM0IsRUFBVzhLLEVBQUtoSyxRQUFVaUwsR0FBWWlKLElBQ2hD
aFYsRUFFTCxNQURBdEIsR0FBS2tELE1BQU9pRCxFQUFTaUcsR0FDZGpHLENBR1IsU0FlSixPQVBF
aVQsR0FBWXpSLEVBQVNyRyxFQUFVaUwsSUFDaENILEVBQ0E3SyxHQUNDMkcsRUFDRC9CLEdBQ0M1
RSxHQUFXcUosRUFBU3NDLEtBQU01TCxJQUFjaU0sR0FBYWhNLEVBQVFMLGFBQWdCSyxHQUV4RTRF
LEdBTVIxRixFQUFRc1IsV0FBYXROLEVBQVE0QyxNQUFNLElBQUkzRCxLQUFNbUYsR0FBWXlFLEtB
QUssTUFBUTdJLEVBSXRFaEUsRUFBUXFSLG1CQUFxQi9KLEVBRzdCQyxJQUlBdkgsRUFBUXVRLGFB
QWUvQyxHQUFPLFNBQVVDLEdBRXZDLE1BQTBFLEdBQW5FQSxFQUFHMEMsd0JBQXlCeFIsRUFBUzBC
LGNBQWMsZUFNckRtTixHQUFPLFNBQVVDLEdBRXRCLE1BREFBLEdBQUdrQyxVQUFZLG1CQUMrQixN
QUF2Q2xDLEVBQUcrRCxXQUFXOUUsYUFBYSxXQUVsQ2dCLEdBQVcseUJBQTBCLFNBQVVuTCxFQUFN
YyxFQUFNMkQsR0FDMUQsSUFBTUEsRUFDTCxNQUFPekUsR0FBS21LLGFBQWNySixFQUE2QixTQUF2
QkEsRUFBS2lDLGNBQTJCLEVBQUksS0FPakV0RixFQUFRNkksWUFBZTJFLEdBQU8sU0FBVUMsR0FH
N0MsTUFGQUEsR0FBR2tDLFVBQVksV0FDZmxDLEVBQUcrRCxXQUFXN0UsYUFBYyxRQUFTLElBQ1ks
S0FBMUNjLEVBQUcrRCxXQUFXOUUsYUFBYyxZQUVuQ2dCLEdBQVcsUUFBUyxTQUFVbkwsRUFBTWMs
RUFBTTJELEdBQ3pDLElBQU1BLEdBQXlDLFVBQWhDekUsRUFBSzhDLFNBQVNDLGNBQzVCLE1BQU8v
QyxHQUFLcVcsZUFPVHBMLEdBQU8sU0FBVUMsR0FDdEIsTUFBc0MsT0FBL0JBLEVBQUdmLGFBQWEs
ZUFFdkJnQixHQUFXaEYsRUFBVSxTQUFVbkcsRUFBTWMsRUFBTTJELEdBQzFDLEdBQUkrSixFQUNK
LEtBQU0vSixFQUNMLE1BQU96RSxHQUFNYyxNQUFXLEVBQU9BLEVBQUtpQyxlQUNqQ3lMLEVBQU14
TyxFQUFLa04saUJBQWtCcE0sS0FBVzBOLEVBQUlDLFVBQzdDRCxFQUFJNUssTUFDTCxPQUtHVSxJ
QUVIL0gsRUFJSjhCLEdBQU80TyxLQUFPM0ksRUFDZGpHLEVBQU9nUSxLQUFPL0osRUFBTzZLLFVB
R3JCOVEsRUFBT2dRLEtBQU0sS0FBUWhRLEVBQU9nUSxLQUFLOUgsUUFDakNsSSxFQUFPdVEsV0FB
YXZRLEVBQU9pWSxPQUFTaFMsRUFBT3NLLFdBQzNDdlEsRUFBT04sS0FBT3VHLEVBQU9FLFFBQ3JC
bkcsRUFBT2tZLFNBQVdqUyxFQUFPRyxNQUN6QnBHLEVBQU9nSCxTQUFXZixFQUFPZSxTQUN6QmhI
LEVBQU9tWSxlQUFpQmxTLEVBQU9vSyxNQUsvQixJQUFJNUYsR0FBTSxTQUFVOUksRUFBTThJLEVB
QUsyTixHQUM5QixHQUFJdkYsTUFDSHdGLEVBQXFCbFYsU0FBVmlWLENBRVosUUFBVXpXLEVBQU9B
LEVBQU04SSxLQUE2QixJQUFsQjlJLEVBQUtpSixTQUN0QyxHQUF1QixJQUFsQmpKLEVBQUtpSixT
QUFpQixDQUMxQixHQUFLeU4sR0FBWXJZLEVBQVEyQixHQUFPMlcsR0FBSUYsR0FDbkMsS0FFRHZG
LEdBQVFsVSxLQUFNZ0QsR0FHaEIsTUFBT2tSLElBSUowRixFQUFXLFNBQVVDLEVBQUc3VyxHQUcz
QixJQUZBLEdBQUlrUixNQUVJMkYsRUFBR0EsRUFBSUEsRUFBRWxMLFlBQ0ksSUFBZmtMLEVBQUU1
TixVQUFrQjROLElBQU03VyxHQUM5QmtSLEVBQVFsVSxLQUFNNlosRUFJaEIsT0FBTzNGLElBSUo0
RixFQUFnQnpZLEVBQU9nUSxLQUFLOUUsTUFBTWhDLGFBRWxDd1AsRUFBYSxrRUFJYkMsRUFBWSxn
QkFHaEIsU0FBU0MsR0FBUTNJLEVBQVU0SSxFQUFXL0YsR0FDckMsTUFBSzlTLEdBQU9nRCxXQUFZ
NlYsR0FDaEI3WSxFQUFPaUYsS0FBTWdMLEVBQVUsU0FBVXRPLEVBQU1DLEdBQzdDLFFBQVNpWCxF
QUFVMVosS0FBTXdDLEVBQU1DLEVBQUdELEtBQVdtUixJQUsxQytGLEVBQVVqTyxTQUNQNUssRUFB
T2lGLEtBQU1nTCxFQUFVLFNBQVV0TyxHQUN2QyxNQUFTQSxLQUFTa1gsSUFBZ0IvRixJQUtWLGdC
QUFkK0YsR0FDSjdZLEVBQU9pRixLQUFNZ0wsRUFBVSxTQUFVdE8sR0FDdkMsTUFBUy9DLEdBQVFP
LEtBQU0wWixFQUFXbFgsUUFBa0JtUixJQUtqRDZGLEVBQVU5TSxLQUFNZ04sR0FDYjdZLEVBQU8w
TyxPQUFRbUssRUFBVzVJLEVBQVU2QyxJQUk1QytGLEVBQVk3WSxFQUFPME8sT0FBUW1LLEVBQVc1
SSxHQUMvQmpRLEVBQU9pRixLQUFNZ0wsRUFBVSxTQUFVdE8sR0FDdkMsTUFBUy9DLEdBQVFPLEtB
QU0wWixFQUFXbFgsUUFBa0JtUixHQUF5QixJQUFsQm5SLEVBQUtpSixZQUlsRTVLLEVBQU8wTyxP
QUFTLFNBQVVzQixFQUFNNU8sRUFBTzBSLEdBQ3RDLEdBQUluUixHQUFPUCxFQUFPLEVBTWxCLE9B
SkswUixLQUNKOUMsRUFBTyxRQUFVQSxFQUFPLEtBR0gsSUFBakI1TyxFQUFNTCxRQUFrQyxJQUFs
QlksRUFBS2lKLFNBQ3hCNUssRUFBTzRPLEtBQUtLLGdCQUFpQnROLEVBQU1xTyxJQUFXck8sTUFH
L0MzQixFQUFPNE8sS0FBS3hKLFFBQVM0SyxFQUFNaFEsRUFBT2lGLEtBQU03RCxFQUFPLFNBQVVP
LEdBQy9ELE1BQXlCLEtBQWxCQSxFQUFLaUosYUFJZDVLLEVBQU9HLEdBQUdvQyxRQUNUcU0sS0FB
TSxTQUFVM08sR0FDZixHQUFJMkIsR0FBR1AsRUFDTmEsRUFBTS9ELEtBQUs0QyxPQUNYK1gsRUFB
TzNhLElBRVIsSUFBeUIsZ0JBQWI4QixHQUNYLE1BQU85QixNQUFLZ0QsVUFBV25CLEVBQVFDLEdB
QVd5TyxPQUFRLFdBQ2pELElBQU05TSxFQUFJLEVBQUdBLEVBQUlNLEVBQUtOLElBQ3JCLEdBQUs1
QixFQUFPZ0gsU0FBVThSLEVBQU1sWCxHQUFLekQsTUFDaEMsT0FBTyxJQVFYLEtBRkFrRCxFQUFN
bEQsS0FBS2dELGNBRUxTLEVBQUksRUFBR0EsRUFBSU0sRUFBS04sSUFDckI1QixFQUFPNE8sS0FB
TTNPLEVBQVU2WSxFQUFNbFgsR0FBS1AsRUFHbkMsT0FBT2EsR0FBTSxFQUFJbEMsRUFBT3VRLFdB
QVlsUCxHQUFRQSxHQUU3Q3FOLE9BQVEsU0FBVXpPLEdBQ2pCLE1BQU85QixNQUFLZ0QsVUFBV3lY
LEVBQVF6YSxLQUFNOEIsT0FBZ0IsS0FFdEQ2UyxJQUFLLFNBQVU3UyxHQUNkLE1BQU85QixNQUFL
Z0QsVUFBV3lYLEVBQVF6YSxLQUFNOEIsT0FBZ0IsS0FFdERxWSxHQUFJLFNBQVVyWSxHQUNiLFFB
QVMyWSxFQUNSemEsS0FJb0IsZ0JBQWI4QixJQUF5QndZLEVBQWM1TSxLQUFNNUwsR0FDbkRELEVB
QVFDLEdBQ1JBLE9BQ0QsR0FDQ2MsU0FTSixJQUFJZ1ksR0FNSHpQLEVBQWEsc0NBRWJsSixFQUFP
SixFQUFPRyxHQUFHQyxLQUFPLFNBQVVILEVBQVVDLEVBQVNxVCxHQUNwRCxHQUFJckksR0FBT3ZK
LENBR1gsS0FBTTFCLEVBQ0wsTUFBTzlCLEtBUVIsSUFIQW9WLEVBQU9BLEdBQVF3RixFQUdVLGdC
QUFiOVksR0FBd0IsQ0FhbkMsR0FQQ2lMLEVBTHNCLE1BQWxCakwsRUFBVSxJQUNzQixNQUFwQ0Es
RUFBVUEsRUFBU2MsT0FBUyxJQUM1QmQsRUFBU2MsUUFBVSxHQUdULEtBQU1kLEVBQVUsTUFHbEJx
SixFQUFXaUMsS0FBTXRMLElBSXJCaUwsSUFBV0EsRUFBTyxJQUFRaEwsRUE2Q3hCLE9BQU1BLEdB
QVdBLEVBQVFXLFFBQ3RCWCxHQUFXcVQsR0FBTzNFLEtBQU0zTyxHQUsxQjlCLEtBQUsyQyxZQUFh
WixHQUFVME8sS0FBTTNPLEVBaER6QyxJQUFLaUwsRUFBTyxHQUFNLENBWWpCLEdBWEFoTCxFQUFV
QSxZQUFtQkYsR0FBU0UsRUFBUyxHQUFNQSxFQUlyREYsRUFBT3NCLE1BQU9uRCxLQUFNNkIsRUFB
T2daLFVBQzFCOU4sRUFBTyxHQUNQaEwsR0FBV0EsRUFBUTBLLFNBQVcxSyxFQUFRb0wsZUFBaUJw
TCxFQUFVbkMsR0FDakUsSUFJSTJhLEVBQVc3TSxLQUFNWCxFQUFPLEtBQVNsTCxFQUFPaUQsY0FB
ZS9DLEdBQzNELElBQU1nTCxJQUFTaEwsR0FHVEYsRUFBT2dELFdBQVk3RSxLQUFNK00sSUFDN0Iv
TSxLQUFNK00sR0FBU2hMLEVBQVNnTCxJQUl4Qi9NLEtBQUsrUixLQUFNaEYsRUFBT2hMLEVBQVNn
TCxHQUs5QixPQUFPL00sTUFZUCxNQVJBd0QsR0FBTzVELEVBQVN5TixlQUFnQk4sRUFBTyxJQUVs
Q3ZKLElBR0p4RCxLQUFNLEdBQU13RCxFQUNaeEQsS0FBSzRDLE9BQVMsR0FFUjVDLEtBY0gsTUFB
SzhCLEdBQVMySyxVQUNwQnpNLEtBQU0sR0FBTThCLEVBQ1o5QixLQUFLNEMsT0FBUyxFQUNQNUMs
TUFJSTZCLEVBQU9nRCxXQUFZL0MsR0FDUmtELFNBQWZvUSxFQUFLMEYsTUFDWDFGLEVBQUswRixN
QUFPaFosR0FHWkEsRUFBVUQsR0FHTEEsRUFBTzZFLFVBQVc1RSxFQUFVOUIsTUFJckNpQyxHQUFL
USxVQUFZWixFQUFPRyxHQUd4QjRZLEVBQWEvWSxFQUFRakMsRUFHckIsSUFBSW1iLEdBQWUsaUNB
R2xCQyxHQUNDQyxVQUFVLEVBQ1ZDLFVBQVUsRUFDVjNPLE1BQU0sRUFDTjRPLE1BQU0sRUFHUnRa
LEdBQU9HLEdBQUdvQyxRQUNUMFEsSUFBSyxTQUFVblEsR0FDZCxHQUFJeVcsR0FBVXZaLEVBQVE4
QyxFQUFRM0UsTUFDN0JxYixFQUFJRCxFQUFReFksTUFFYixPQUFPNUMsTUFBS3VRLE9BQVEsV0FF
bkIsSUFEQSxHQUFJOU0sR0FBSSxFQUNBQSxFQUFJNFgsRUFBRzVYLElBQ2QsR0FBSzVCLEVBQU9n
SCxTQUFVN0ksS0FBTW9iLEVBQVMzWCxJQUNwQyxPQUFPLEtBTVg2WCxRQUFTLFNBQVUzSSxFQUFX
NVEsR0FDN0IsR0FBSWlOLEdBQ0h2TCxFQUFJLEVBQ0o0WCxFQUFJcmIsS0FBSzRDLE9BQ1Q4UixL
QUNBMEcsRUFBK0IsZ0JBQWR6SSxJQUEwQjlRLEVBQVE4USxFQUdwRCxLQUFNMkgsRUFBYzVNLEtB
QU1pRixHQUN6QixLQUFRbFAsRUFBSTRYLEVBQUc1WCxJQUNkLElBQU11TCxFQUFNaFAsS0FBTXlE
LEdBQUt1TCxHQUFPQSxJQUFRak4sRUFBU2lOLEVBQU1BLEVBQUl0TixXQUd4RCxHQUFLc04sRUFB
SXZDLFNBQVcsS0FBUTJPLEVBQzNCQSxFQUFRRyxNQUFPdk0sTUFHRSxJQUFqQkEsRUFBSXZDLFVB
Q0g1SyxFQUFPNE8sS0FBS0ssZ0JBQWlCOUIsRUFBSzJELElBQWdCLENBRW5EK0IsRUFBUWxVLEtB
QU13TyxFQUNkLE9BTUosTUFBT2hQLE1BQUtnRCxVQUFXMFIsRUFBUTlSLE9BQVMsRUFBSWYsRUFB
T3VRLFdBQVlzQyxHQUFZQSxJQUk1RTZHLE1BQU8sU0FBVS9YLEdBR2hCLE1BQU1BLEdBS2UsZ0JB
QVRBLEdBQ0ovQyxFQUFRTyxLQUFNYSxFQUFRMkIsR0FBUXhELEtBQU0sSUFJckNTLEVBQVFPLEtB
QU1oQixLQUdwQndELEVBQUtkLE9BQVNjLEVBQU0sR0FBTUEsR0FaakJ4RCxLQUFNLElBQU9BLEtB
QU0sR0FBSTBCLFdBQWUxQixLQUFLNEQsUUFBUTRYLFVBQVU1WSxXQWdCeEU2WSxJQUFLLFNBQVUz
WixFQUFVQyxHQUN4QixNQUFPL0IsTUFBS2dELFVBQ1huQixFQUFPdVEsV0FDTnZRLEVBQU9zQixN
QUFPbkQsS0FBSzhDLE1BQU9qQixFQUFRQyxFQUFVQyxPQUsvQzJaLFFBQVMsU0FBVTVaLEdBQ2xC
LE1BQU85QixNQUFLeWIsSUFBaUIsTUFBWjNaLEVBQ2hCOUIsS0FBS29ELFdBQWFwRCxLQUFLb0Qs
V0FBV21OLE9BQVF6TyxNQUs3QyxTQUFTNlosR0FBUzNNLEVBQUsxQyxHQUN0QixPQUFVMEMsRUFB
TUEsRUFBSzFDLEtBQTRCLElBQWpCMEMsRUFBSXZDLFVBQ3BDLE1BQU91QyxHQUdSbk4sRUFBT3dC
LE1BQ044USxPQUFRLFNBQVUzUSxHQUNqQixHQUFJMlEsR0FBUzNRLEVBQUs5QixVQUNsQixPQUFP
eVMsSUFBOEIsS0FBcEJBLEVBQU8xSCxTQUFrQjBILEVBQVMsTUFFcER5SCxRQUFTLFNBQVVwWSxH
QUNsQixNQUFPOEksR0FBSzlJLEVBQU0sZUFFbkJxWSxhQUFjLFNBQVVyWSxFQUFNQyxFQUFHd1cs
R0FDaEMsTUFBTzNOLEdBQUs5SSxFQUFNLGFBQWN5VyxJQUVqQzFOLEtBQU0sU0FBVS9JLEdBQ2Ys
TUFBT21ZLEdBQVNuWSxFQUFNLGdCQUV2QjJYLEtBQU0sU0FBVTNYLEdBQ2YsTUFBT21ZLEdBQVNu
WSxFQUFNLG9CQUV2QnNZLFFBQVMsU0FBVXRZLEdBQ2xCLE1BQU84SSxHQUFLOUksRUFBTSxnQkFF
bkJnWSxRQUFTLFNBQVVoWSxHQUNsQixNQUFPOEksR0FBSzlJLEVBQU0sb0JBRW5CdVksVUFBVyxT
QUFVdlksRUFBTUMsRUFBR3dXLEdBQzdCLE1BQU8zTixHQUFLOUksRUFBTSxjQUFleVcsSUFFbEMr
QixVQUFXLFNBQVV4WSxFQUFNQyxFQUFHd1csR0FDN0IsTUFBTzNOLEdBQUs5SSxFQUFNLGtCQUFt
QnlXLElBRXRDRyxTQUFVLFNBQVU1VyxHQUNuQixNQUFPNFcsSUFBWTVXLEVBQUs5QixnQkFBbUIr
USxXQUFZalAsSUFFeER5WCxTQUFVLFNBQVV6WCxHQUNuQixNQUFPNFcsR0FBVTVXLEVBQUtpUCxh
QUV2QnlJLFNBQVUsU0FBVTFYLEdBQ25CLE1BQU9BLEdBQUt5WSxpQkFBbUJwYSxFQUFPc0IsU0FB
V0ssRUFBS2dKLGNBRXJELFNBQVVsSSxFQUFNdEMsR0FDbEJILEVBQU9HLEdBQUlzQyxHQUFTLFNB
QVUyVixFQUFPblksR0FDcEMsR0FBSTRTLEdBQVU3UyxFQUFPMEIsSUFBS3ZELEtBQU1nQyxFQUFJ
aVksRUF1QnBDLE9BckIwQixVQUFyQjNWLEVBQUtoRSxZQUNUd0IsRUFBV21ZLEdBR1BuWSxHQUFn
QyxnQkFBYkEsS0FDdkI0UyxFQUFVN1MsRUFBTzBPLE9BQVF6TyxFQUFVNFMsSUFHL0IxVSxLQUFL
NEMsT0FBUyxJQUdab1ksRUFBa0IxVyxJQUN2QnpDLEVBQU91USxXQUFZc0MsR0FJZnFHLEVBQWFy
TixLQUFNcEosSUFDdkJvUSxFQUFRd0gsV0FJSGxjLEtBQUtnRCxVQUFXMFIsS0FHekIsSUFBSXlI
LEdBQWdCLG1CQUtwQixTQUFTQyxHQUFlL1gsR0FDdkIsR0FBSWdZLEtBSUosT0FIQXhhLEdBQU93
QixLQUFNZ0IsRUFBUTBJLE1BQU9vUCxPQUF1QixTQUFVNVEsRUFBRytRLEdBQy9ERCxFQUFRQyxJ
QUFTLElBRVhELEVBeUJSeGEsRUFBTzBhLFVBQVksU0FBVWxZLEdBSTVCQSxFQUE2QixnQkFBWkEs
R0FDaEIrWCxFQUFlL1gsR0FDZnhDLEVBQU91QyxVQUFZQyxFQUVwQixJQUNDbVksR0FHQUMsRUFH
QUMsRUFHQUMsRUFHQWpULEtBR0FrVCxLQUdBQyxLQUdBQyxFQUFPLFdBUU4sSUFMQUgsRUFBU3RZ
LEVBQVEwWSxLQUlqQkwsRUFBUUYsR0FBUyxFQUNUSSxFQUFNaGEsT0FBUWlhLEtBQW1CLENBQ3hD
SixFQUFTRyxFQUFNck8sT0FDZixTQUFVc08sRUFBY25ULEVBQUs5RyxPQUd2QjhHLEVBQU1tVCxH
QUFjblosTUFBTytZLEVBQVEsR0FBS0EsRUFBUSxPQUFVLEdBQzlEcFksRUFBUTJZLGNBR1JILEVB
QWNuVCxFQUFLOUcsT0FDbkI2WixHQUFTLEdBTU5wWSxFQUFRb1ksU0FDYkEsR0FBUyxHQUdWRCxH
QUFTLEVBR0pHLElBSUhqVCxFQURJK1MsS0FLRyxLQU1WOUIsR0FHQ2MsSUFBSyxXQTJCSixNQTFC
Sy9SLEtBR0MrUyxJQUFXRCxJQUNmSyxFQUFjblQsRUFBSzlHLE9BQVMsRUFDNUJnYSxFQUFNcGMs
S0FBTWljLElBR2IsUUFBV2hCLEdBQUtqVSxHQUNmM0YsRUFBT3dCLEtBQU1tRSxFQUFNLFNBQVUr
RCxFQUFHcEUsR0FDMUJ0RixFQUFPZ0QsV0FBWXNDLEdBQ2pCOUMsRUFBUXlWLFFBQVdhLEVBQUs3
RixJQUFLM04sSUFDbEN1QyxFQUFLbEosS0FBTTJHLEdBRURBLEdBQU9BLEVBQUl2RSxRQUFpQyxX
QUF2QmYsRUFBTzZELEtBQU15QixJQUc3Q3NVLEVBQUt0VSxNQUdIeEQsV0FFQThZLElBQVdELEdB
Q2ZNLEtBR0s5YyxNQUlSaWQsT0FBUSxXQVlQLE1BWEFwYixHQUFPd0IsS0FBTU0sVUFBVyxTQUFV
NEgsRUFBR3BFLEdBQ3BDLEdBQUlvVSxFQUNKLFFBQVVBLEVBQVExWixFQUFPK0UsUUFBU08sRUFB
S3VDLEVBQU02UixPQUM1QzdSLEVBQUt2RixPQUFRb1gsRUFBTyxHQUdmQSxHQUFTc0IsR0FDYkEs
TUFJSTdjLE1BS1I4VSxJQUFLLFNBQVU5UyxHQUNkLE1BQU9BLEdBQ05ILEVBQU8rRSxRQUFTNUUs
RUFBSTBILE1BQ3BCQSxFQUFLOUcsT0FBUyxHQUloQmtULE1BQU8sV0FJTixNQUhLcE0sS0FDSkEs
TUFFTTFKLE1BTVJrZCxRQUFTLFdBR1IsTUFGQVAsR0FBU0MsS0FDVGxULEVBQU8rUyxFQUFTLEdB
Q1R6YyxNQUVScU0sU0FBVSxXQUNULE9BQVEzQyxHQU1UeVQsS0FBTSxXQUtMLE1BSkFSLEdBQVND
LEtBQ0hILEdBQVdELElBQ2hCOVMsRUFBTytTLEVBQVMsSUFFVnpjLE1BRVIyYyxPQUFRLFdBQ1As
UUFBU0EsR0FJVlMsU0FBVSxTQUFVcmIsRUFBU3lGLEdBUzVCLE1BUk1tVixLQUNMblYsRUFBT0Es
TUFDUEEsR0FBU3pGLEVBQVN5RixFQUFLbEgsTUFBUWtILEVBQUtsSCxRQUFVa0gsR0FDOUNvVixF
QUFNcGMsS0FBTWdILEdBQ05nVixHQUNMTSxLQUdLOWMsTUFJUjhjLEtBQU0sV0FFTCxNQURBbkMs
R0FBS3lDLFNBQVVwZCxLQUFNMkQsV0FDZDNELE1BSVIwYyxNQUFPLFdBQ04sUUFBU0EsR0FJWixP
QUFPL0IsR0FJUixTQUFTMEMsR0FBVUMsR0FDbEIsTUFBT0EsR0FFUixRQUFTQyxHQUFTQyxHQUNq
QixLQUFNQSxHQUdQLFFBQVNDLEdBQVlyVyxFQUFPc1csRUFBU0MsR0FDcEMsR0FBSUMsRUFFSixL
QUdNeFcsR0FBU3ZGLEVBQU9nRCxXQUFjK1ksRUFBU3hXLEVBQU15VyxTQUNqREQsRUFBTzVjLEtB
QU1vRyxHQUFRNEIsS0FBTTBVLEdBQVVJLEtBQU1ILEdBR2hDdlcsR0FBU3ZGLEVBQU9nRCxXQUFj
K1ksRUFBU3hXLEVBQU0yVyxNQUN4REgsRUFBTzVjLEtBQU1vRyxFQUFPc1csRUFBU0MsR0FPN0JE
LEVBQVExYyxLQUFNZ0UsT0FBV29DLEdBTXpCLE1BQVFBLEdBSVR1VyxFQUFPM2MsS0FBTWdFLE9B
QVdvQyxJQUkxQnZGLEVBQU91QyxRQUVONFosU0FBVSxTQUFVQyxHQUNuQixHQUFJQyxLQUlBLFNB
QVUsV0FBWXJjLEVBQU8wYSxVQUFXLFVBQ3pDMWEsRUFBTzBhLFVBQVcsVUFBWSxJQUM3QixVQUFX
LE9BQVExYSxFQUFPMGEsVUFBVyxlQUN0QzFhLEVBQU8wYSxVQUFXLGVBQWlCLEVBQUcsYUFDckMs
U0FBVSxPQUFRMWEsRUFBTzBhLFVBQVcsZUFDckMxYSxFQUFPMGEsVUFBVyxlQUFpQixFQUFHLGFB
RXhDNEIsRUFBUSxVQUNSTixHQUNDTSxNQUFPLFdBQ04sTUFBT0EsSUFFUkMsT0FBUSxXQUVQLE1B
REFDLEdBQVNyVixLQUFNckYsV0FBWW1hLEtBQU1uYSxXQUMxQjNELE1BRVJzZSxRQUFTLFNBQVV0
YyxHQUNsQixNQUFPNmIsR0FBUUUsS0FBTSxLQUFNL2IsSUFJNUJ1YyxLQUFNLFdBQ0wsR0FBSUMs
R0FBTTdhLFNBRVYsT0FBTzlCLEdBQU9tYyxTQUFVLFNBQVVTLEdBQ2pDNWMsRUFBT3dCLEtBQU02
YSxFQUFRLFNBQVV6YSxFQUFHaWIsR0FHakMsR0FBSTFjLEdBQUtILEVBQU9nRCxXQUFZMlosRUFB
S0UsRUFBTyxNQUFXRixFQUFLRSxFQUFPLEdBSy9ETCxHQUFVSyxFQUFPLElBQU8sV0FDdkIsR0FB
SUMsR0FBVzNjLEdBQU1BLEVBQUcwQixNQUFPMUQsS0FBTTJELFVBQ2hDZ2IsSUFBWTljLEVBQU9n
RCxXQUFZOFosRUFBU2QsU0FDNUNjLEVBQVNkLFVBQ1BlLFNBQVVILEVBQVNJLFFBQ25CN1YsS0FB
TXlWLEVBQVNmLFNBQ2ZJLEtBQU1XLEVBQVNkLFFBRWpCYyxFQUFVQyxFQUFPLEdBQU0sUUFDdEIx
ZSxLQUNBZ0MsR0FBTzJjLEdBQWFoYixlQUt4QjZhLEVBQU0sT0FDSFgsV0FFTEUsS0FBTSxTQUFV
ZSxFQUFhQyxFQUFZQyxHQUN4QyxHQUFJQyxHQUFXLENBQ2YsU0FBU3ZCLEdBQVN3QixFQUFPYixF
QUFVeFAsRUFBU3NRLEdBQzNDLE1BQU8sWUFDTixHQUFJQyxHQUFPcGYsS0FDVndILEVBQU83RCxV
QUNQMGIsRUFBYSxXQUNaLEdBQUlWLEdBQVVaLENBS2QsTUFBS21CLEVBQVFELEdBQWIsQ0FRQSxH
QUpBTixFQUFXOVAsRUFBUW5MLE1BQU8wYixFQUFNNVgsR0FJM0JtWCxJQUFhTixFQUFTUixVQUMx
QixLQUFNLElBQUl5QixXQUFXLDJCQU90QnZCLEdBQU9ZLElBS2dCLGdCQUFiQSxJQUNZLGtCQUFi
QSxLQUNSQSxFQUFTWixLQUdMbGMsRUFBT2dELFdBQVlrWixHQUdsQm9CLEVBQ0pwQixFQUFLL2Ms
S0FDSjJkLEVBQ0FqQixFQUFTdUIsRUFBVVosRUFBVWhCLEVBQVU4QixHQUN2Q3pCLEVBQVN1QixF
QUFVWixFQUFVZCxFQUFTNEIsS0FPdkNGLElBRUFsQixFQUFLL2MsS0FDSjJkLEVBQ0FqQixFQUFT
dUIsRUFBVVosRUFBVWhCLEVBQVU4QixHQUN2Q3pCLEVBQVN1QixFQUFVWixFQUFVZCxFQUFTNEIs
R0FDdEN6QixFQUFTdUIsRUFBVVosRUFBVWhCLEVBQzVCZ0IsRUFBU2tCLGVBU1AxUSxJQUFZd08s
SUFDaEIrQixFQUFPcGEsT0FDUHdDLEdBQVNtWCxLQUtSUSxHQUFXZCxFQUFTbUIsYUFBZUosRUFB
TTVYLE1BSzdDaVksRUFBVU4sRUFDVEUsRUFDQSxXQUNDLElBQ0NBLElBQ0MsTUFBUTNTLEdBRUo3
SyxFQUFPbWMsU0FBUzBCLGVBQ3BCN2QsRUFBT21jLFNBQVMwQixjQUFlaFQsRUFDOUIrUyxFQUFR
RSxZQU1MVCxFQUFRLEdBQUtELElBSVpwUSxJQUFZME8sSUFDaEI2QixFQUFPcGEsT0FDUHdDLEdB
QVNrRixJQUdWMlIsRUFBU3VCLFdBQVlSLEVBQU01WCxLQVMzQjBYLEdBQ0pPLEtBS0s1ZCxFQUFP
bWMsU0FBUzZCLGVBQ3BCSixFQUFRRSxXQUFhOWQsRUFBT21jLFNBQVM2QixnQkFFdEM5ZixFQUFP
K2YsV0FBWUwsS0FLdEIsTUFBTzVkLEdBQU9tYyxTQUFVLFNBQVVTLEdBR2pDUCxFQUFRLEdBQUss
R0FBSXpDLElBQ2hCaUMsRUFDQyxFQUNBZSxFQUNBNWMsRUFBT2dELFdBQVltYSxHQUNsQkEsRUFD
QTNCLEVBQ0RvQixFQUFTYyxhQUtYckIsRUFBUSxHQUFLLEdBQUl6QyxJQUNoQmlDLEVBQ0MsRUFD
QWUsRUFDQTVjLEVBQU9nRCxXQUFZaWEsR0FDbEJBLEVBQ0F6QixJQUtIYSxFQUFRLEdBQUssR0FB
SXpDLElBQ2hCaUMsRUFDQyxFQUNBZSxFQUNBNWMsRUFBT2dELFdBQVlrYSxHQUNsQkEsRUFDQXhC
LE1BR0FNLFdBS0xBLFFBQVMsU0FBVXBZLEdBQ2xCLE1BQWMsT0FBUEEsRUFBYzVELEVBQU91QyxP
QUFRcUIsRUFBS29ZLEdBQVlBLElBR3ZEUSxJQTJERCxPQXhEQXhjLEdBQU93QixLQUFNNmEsRUFB
USxTQUFVemEsRUFBR2liLEdBQ2pDLEdBQUloVixHQUFPZ1YsRUFBTyxHQUNqQnFCLEVBQWNyQixF
QUFPLEVBS3RCYixHQUFTYSxFQUFPLElBQVFoVixFQUFLK1IsSUFHeEJzRSxHQUNKclcsRUFBSytS
LElBQ0osV0FJQzBDLEVBQVE0QixHQUtUN0IsRUFBUSxFQUFJemEsR0FBSyxHQUFJeVosUUFHckJn
QixFQUFRLEdBQUssR0FBSWYsTUFPbkJ6VCxFQUFLK1IsSUFBS2lELEVBQU8sR0FBSTVCLE1BS3JC
dUIsRUFBVUssRUFBTyxJQUFRLFdBRXhCLE1BREFMLEdBQVVLLEVBQU8sR0FBTSxRQUFVMWUsT0FB
U3FlLEVBQVdyWixPQUFZaEYsS0FBTTJELFdBQ2hFM0QsTUFNUnFlLEVBQVVLLEVBQU8sR0FBTSxR
QUFXaFYsRUFBSzBULFdBSXhDUyxFQUFRQSxRQUFTUSxHQUdaSixHQUNKQSxFQUFLamQsS0FBTXFk
LEVBQVVBLEdBSWZBLEdBSVIyQixLQUFNLFNBQVVDLEdBQ2YsR0FHQ0MsR0FBWXZjLFVBQVVmLE9B
R3RCYSxFQUFJeWMsRUFHSkMsRUFBa0J4YSxNQUFPbEMsR0FDekIyYyxFQUFnQjlmLEVBQU1VLEtB
QU0yQyxXQUc1QjBjLEVBQVN4ZSxFQUFPbWMsV0FHaEJzQyxFQUFhLFNBQVU3YyxHQUN0QixNQUFP
LFVBQVUyRCxHQUNoQitZLEVBQWlCMWMsR0FBTXpELEtBQ3ZCb2dCLEVBQWUzYyxHQUFNRSxVQUFV
ZixPQUFTLEVBQUl0QyxFQUFNVSxLQUFNMkMsV0FBY3lELElBQzVEOFksR0FDVEcsRUFBT2IsWUFB
YVcsRUFBaUJDLElBTXpDLElBQUtGLEdBQWEsSUFDakJ6QyxFQUFZd0MsRUFBYUksRUFBT3JYLEtB
QU1zWCxFQUFZN2MsSUFBTWlhLFFBQVMyQyxFQUFPMUMsUUFHaEQsWUFBbkIwQyxFQUFPbEMsU0FD
WHRjLEVBQU9nRCxXQUFZdWIsRUFBZTNjLElBQU8yYyxFQUFlM2MsR0FBSXNhLE9BRTVELE1BQU9z
QyxHQUFPdEMsTUFLaEIsT0FBUXRhLElBQ1BnYSxFQUFZMkMsRUFBZTNjLEdBQUs2YyxFQUFZN2Ms
R0FBSzRjLEVBQU8xQyxPQUd6RCxPQUFPMEMsR0FBT3hDLFlBT2hCLElBQUkwQyxHQUFjLHdEQUVs
QjFlLEdBQU9tYyxTQUFTMEIsY0FBZ0IsU0FBVXBhLEVBQU9rYixHQUkzQ3pnQixFQUFPMGdCLFNB
QVcxZ0IsRUFBTzBnQixRQUFRQyxNQUFRcGIsR0FBU2liLEVBQVk3UyxLQUFNcEksRUFBTWhCLE9B
QzlFdkUsRUFBTzBnQixRQUFRQyxLQUFNLDhCQUFnQ3BiLEVBQU1xYixRQUFTcmIsRUFBTWtiLE1B
QU9BLElBT25GM2UsRUFBTytlLGVBQWlCLFNBQVV0YixHQUNqQ3ZGLEVBQU8rZixXQUFZLFdBQ2xC
LEtBQU14YSxLQVFSLElBQUl1YixHQUFZaGYsRUFBT21jLFVBRXZCbmMsR0FBT0csR0FBRzhZLE1B
QVEsU0FBVTlZLEdBWTNCLE1BVkE2ZSxHQUNFOUMsS0FBTS9iLEdBRFI2ZSxTQU1TLFNBQVV2YixH
QUNqQnpELEVBQU8rZSxlQUFnQnRiLEtBR2xCdEYsTUFHUjZCLEVBQU91QyxRQUdOaUIsU0FBUyxF
QUlUeWIsVUFBVztBQUdYQyxVQUFXLFNBQVVDLEdBQ2ZBLEVBQ0puZixFQUFPaWYsWUFFUGpmLEVB
QU9pWixPQUFPLElBS2hCQSxNQUFPLFNBQVVtRyxJQUdYQSxLQUFTLElBQVNwZixFQUFPaWYsVUFB
WWpmLEVBQU93RCxXQUtqRHhELEVBQU93RCxTQUFVLEVBR1o0YixLQUFTLEtBQVVwZixFQUFPaWYs
VUFBWSxHQUszQ0QsRUFBVXJCLFlBQWE1ZixHQUFZaUMsUUFJckNBLEVBQU9pWixNQUFNaUQsS0FB
TzhDLEVBQVU5QyxJQUc5QixTQUFTbUQsS0FDUnRoQixFQUFTdWhCLG9CQUFxQixtQkFBb0JELEdB
Q2xEbmhCLEVBQU9vaEIsb0JBQXFCLE9BQVFELEdBQ3BDcmYsRUFBT2laLFFBT3FCLGFBQXhCbGIs
RUFBU3doQixZQUNhLFlBQXhCeGhCLEVBQVN3aEIsYUFBNkJ4aEIsRUFBUytQLGdCQUFnQjBSLFNB
R2pFdGhCLEVBQU8rZixXQUFZamUsRUFBT2laLFFBSzFCbGIsRUFBU3FRLGlCQUFrQixtQkFBb0Jp
UixHQUcvQ25oQixFQUFPa1EsaUJBQWtCLE9BQVFpUixHQVFsQyxJQUFJSSxHQUFTLFNBQVVyZSxF
QUFPakIsRUFBSXFNLEVBQUtqSCxFQUFPbWEsRUFBV0MsRUFBVUMsR0FDbEUsR0FBSWhlLEdBQUks
RUFDUE0sRUFBTWQsRUFBTUwsT0FDWjhlLEVBQWMsTUFBUHJULENBR1IsSUFBNEIsV0FBdkJ4TSxF
QUFPNkQsS0FBTTJJLEdBQXFCLENBQ3RDa1QsR0FBWSxDQUNaLEtBQU05ZCxJQUFLNEssR0FDVmlU
LEVBQVFyZSxFQUFPakIsRUFBSXlCLEVBQUc0SyxFQUFLNUssSUFBSyxFQUFNK2QsRUFBVUMsT0FJ
M0MsSUFBZXpjLFNBQVZvQyxJQUNYbWEsR0FBWSxFQUVOMWYsRUFBT2dELFdBQVl1QyxLQUN4QnFh
LEdBQU0sR0FHRkMsSUFHQ0QsR0FDSnpmLEVBQUdoQixLQUFNaUMsRUFBT21FLEdBQ2hCcEYsRUFB
SyxPQUlMMGYsRUFBTzFmLEVBQ1BBLEVBQUssU0FBVXdCLEVBQU02SyxFQUFLakgsR0FDekIsTUFB
T3NhLEdBQUsxZ0IsS0FBTWEsRUFBUTJCLEdBQVE0RCxNQUtoQ3BGLEdBQ0osS0FBUXlCLEVBQUlN
LEVBQUtOLElBQ2hCekIsRUFDQ2lCLEVBQU9RLEdBQUs0SyxFQUFLb1QsRUFDakJyYSxFQUNBQSxF
QUFNcEcsS0FBTWlDLEVBQU9RLEdBQUtBLEVBQUd6QixFQUFJaUIsRUFBT1EsR0FBSzRLLElBTS9D
LE9BQUtrVCxHQUNHdGUsRUFJSHllLEVBQ0cxZixFQUFHaEIsS0FBTWlDLEdBR1ZjLEVBQU0vQixF
QUFJaUIsRUFBTyxHQUFLb0wsR0FBUW1ULEdBRWxDRyxFQUFhLFNBQVVDLEdBUTFCLE1BQTBCLEtB
QW5CQSxFQUFNblYsVUFBcUMsSUFBbkJtVixFQUFNblYsWUFBc0JtVixFQUFNblYsU0FNbEUsU0FB
U29WLEtBQ1I3aEIsS0FBS2lGLFFBQVVwRCxFQUFPb0QsUUFBVTRjLEVBQUtDLE1BR3RDRCxFQUFL
QyxJQUFNLEVBRVhELEVBQUtwZixXQUVKMkwsTUFBTyxTQUFVd1QsR0FHaEIsR0FBSXhhLEdBQVF3
YSxFQUFPNWhCLEtBQUtpRixRQTRCeEIsT0F6Qk1tQyxLQUNMQSxLQUtLdWEsRUFBWUMsS0FJWEEs
RUFBTW5WLFNBQ1ZtVixFQUFPNWhCLEtBQUtpRixTQUFZbUMsRUFNeEJoSCxPQUFPMmhCLGVBQWdC
SCxFQUFPNWhCLEtBQUtpRixTQUNsQ21DLE1BQU9BLEVBQ1A0YSxjQUFjLE1BTVg1YSxHQUVSNmEs
SUFBSyxTQUFVTCxFQUFPTSxFQUFNOWEsR0FDM0IsR0FBSSthLEdBQ0gvVCxFQUFRcE8sS0FBS29P
LE1BQU93VCxFQUlyQixJQUFxQixnQkFBVE0sR0FDWDlULEVBQU92TSxFQUFPdUUsVUFBVzhiLElB
QVc5YSxNQU1wQyxLQUFNK2EsSUFBUUQsR0FDYjlULEVBQU92TSxFQUFPdUUsVUFBVytiLElBQVdE
LEVBQU1DLEVBRzVDLE9BQU8vVCxJQUVSdEwsSUFBSyxTQUFVOGUsRUFBT3ZULEdBQ3JCLE1BQWVy
SixVQUFScUosRUFDTnJPLEtBQUtvTyxNQUFPd1QsR0FHWkEsRUFBTzVoQixLQUFLaUYsVUFBYTJj
LEVBQU81aEIsS0FBS2lGLFNBQVdwRCxFQUFPdUUsVUFBV2lJLEtBRXBFaVQsT0FBUSxTQUFVTSxF
QUFPdlQsRUFBS2pILEdBYTdCLE1BQWFwQyxVQUFScUosR0FDQ0EsR0FBc0IsZ0JBQVJBLElBQWdD
ckosU0FBVm9DLEVBRWxDcEgsS0FBSzhDLElBQUs4ZSxFQUFPdlQsSUFTekJyTyxLQUFLaWlCLElB
QUtMLEVBQU92VCxFQUFLakgsR0FJTHBDLFNBQVZvQyxFQUFzQkEsRUFBUWlILElBRXRDNE8sT0FB
USxTQUFVMkUsRUFBT3ZULEdBQ3hCLEdBQUk1SyxHQUNIMkssRUFBUXdULEVBQU81aEIsS0FBS2lG
LFFBRXJCLElBQWVELFNBQVZvSixFQUFMLENBSUEsR0FBYXBKLFNBQVJxSixFQUFvQixDQUduQnhN
LEVBQU9rRCxRQUFTc0osR0FJcEJBLEVBQU1BLEVBQUk5SyxJQUFLMUIsRUFBT3VFLFlBRXRCaUks
RUFBTXhNLEVBQU91RSxVQUFXaUksR0FJeEJBLEVBQU1BLElBQU9ELElBQ1ZDLEdBQ0FBLEVBQUl0
QixNQUFPb1AsUUFHZjFZLEVBQUk0SyxFQUFJekwsTUFFUixPQUFRYSxVQUNBMkssR0FBT0MsRUFB
SzVLLEtBS1J1QixTQUFScUosR0FBcUJ4TSxFQUFPcUUsY0FBZWtJLE1BTTFDd1QsRUFBTW5WLFNB
Q1ZtVixFQUFPNWhCLEtBQUtpRixTQUFZRCxhQUVqQjRjLEdBQU81aEIsS0FBS2lGLFlBSXRCbWQs
UUFBUyxTQUFVUixHQUNsQixHQUFJeFQsR0FBUXdULEVBQU81aEIsS0FBS2lGLFFBQ3hCLE9BQWlC
RCxVQUFWb0osSUFBd0J2TSxFQUFPcUUsY0FBZWtJLElBR3ZELElBQUlpVSxHQUFXLEdBQUlSLEdB
RWZTLEVBQVcsR0FBSVQsR0FjZlUsRUFBUyxnQ0FDWkMsRUFBYSxRQUVkLFNBQVNDLEdBQVNQLEdB
Q2pCLE1BQWMsU0FBVEEsR0FJUyxVQUFUQSxJQUlTLFNBQVRBLEVBQ0csS0FJSEEsS0FBVUEsRUFB
TyxJQUNiQSxFQUdKSyxFQUFPN1UsS0FBTXdVLEdBQ1ZRLEtBQUtDLE1BQU9ULEdBR2JBLEdBR1Is
UUFBU1UsR0FBVXBmLEVBQU02SyxFQUFLNlQsR0FDN0IsR0FBSTVkLEVBSUosSUFBY1UsU0FBVGtk
LEdBQXdDLElBQWxCMWUsRUFBS2lKLFNBSS9CLEdBSEFuSSxFQUFPLFFBQVUrSixFQUFJakosUUFB
U29kLEVBQVksT0FBUWpjLGNBQ2xEMmIsRUFBTzFlLEVBQUttSyxhQUFjckosR0FFTCxnQkFBVDRk
LEdBQW9CLENBQy9CLElBQ0NBLEVBQU9PLEVBQVNQLEdBQ2YsTUFBUXhWLElBR1Y0VixFQUFTTCxJ
QUFLemUsRUFBTTZLLEVBQUs2VCxPQUV6QkEsR0FBT2xkLE1BR1QsT0FBT2tkLEdBR1JyZ0IsRUFB
T3VDLFFBQ05nZSxRQUFTLFNBQVU1ZSxHQUNsQixNQUFPOGUsR0FBU0YsUUFBUzVlLElBQVU2ZSxF
QUFTRCxRQUFTNWUsSUFHdEQwZSxLQUFNLFNBQVUxZSxFQUFNYyxFQUFNNGQsR0FDM0IsTUFBT0ks
R0FBU2hCLE9BQVE5ZCxFQUFNYyxFQUFNNGQsSUFHckNXLFdBQVksU0FBVXJmLEVBQU1jLEdBQzNC
Z2UsRUFBU3JGLE9BQVF6WixFQUFNYyxJQUt4QndlLE1BQU8sU0FBVXRmLEVBQU1jLEVBQU00ZCxH
QUM1QixNQUFPRyxHQUFTZixPQUFROWQsRUFBTWMsRUFBTTRkLElBR3JDYSxZQUFhLFNBQVV2ZixF
QUFNYyxHQUM1QitkLEVBQVNwRixPQUFRelosRUFBTWMsTUFJekJ6QyxFQUFPRyxHQUFHb0MsUUFD
VDhkLEtBQU0sU0FBVTdULEVBQUtqSCxHQUNwQixHQUFJM0QsR0FBR2EsRUFBTTRkLEVBQ1oxZSxF
QUFPeEQsS0FBTSxHQUNiNE8sRUFBUXBMLEdBQVFBLEVBQUtzRyxVQUd0QixJQUFhOUUsU0FBUnFK
LEVBQW9CLENBQ3hCLEdBQUtyTyxLQUFLNEMsU0FDVHNmLEVBQU9JLEVBQVN4ZixJQUFLVSxHQUVF
LElBQWxCQSxFQUFLaUosV0FBbUI0VixFQUFTdmYsSUFBS1UsRUFBTSxpQkFBbUIsQ0FDbkVDLEVB
QUltTCxFQUFNaE0sTUFDVixPQUFRYSxJQUlGbUwsRUFBT25MLEtBQ1hhLEVBQU9zSyxFQUFPbkws
R0FBSWEsS0FDZSxJQUE1QkEsRUFBSzdELFFBQVMsV0FDbEI2RCxFQUFPekMsRUFBT3VFLFVBQVc5
QixFQUFLaEUsTUFBTyxJQUNyQ3NpQixFQUFVcGYsRUFBTWMsRUFBTTRkLEVBQU01ZCxLQUkvQitk
LEdBQVNKLElBQUt6ZSxFQUFNLGdCQUFnQixHQUl0QyxNQUFPMGUsR0FJUixNQUFvQixnQkFBUjdU
LEdBQ0pyTyxLQUFLcUQsS0FBTSxXQUNqQmlmLEVBQVNMLElBQUtqaUIsS0FBTXFPLEtBSWZpVCxF
QUFRdGhCLEtBQU0sU0FBVW9ILEdBQzlCLEdBQUk4YSxFQU9KLElBQUsxZSxHQUFrQndCLFNBQVZv
QyxFQUFiLENBS0MsR0FEQThhLEVBQU9JLEVBQVN4ZixJQUFLVSxFQUFNNkssR0FDYnJKLFNBQVRr
ZCxFQUNKLE1BQU9BLEVBTVIsSUFEQUEsRUFBT1UsRUFBVXBmLEVBQU02SyxHQUNUckosU0FBVGtk
LEVBQ0osTUFBT0EsT0FRVGxpQixNQUFLcUQsS0FBTSxXQUdWaWYsRUFBU0wsSUFBS2ppQixLQUFN
cU8sRUFBS2pILE1BRXhCLEtBQU1BLEVBQU96RCxVQUFVZixPQUFTLEVBQUcsTUFBTSxJQUc3Q2ln
QixXQUFZLFNBQVV4VSxHQUNyQixNQUFPck8sTUFBS3FELEtBQU0sV0FDakJpZixFQUFTckYsT0FB
UWpkLEtBQU1xTyxRQU0xQnhNLEVBQU91QyxRQUNOd1ksTUFBTyxTQUFVcFosRUFBTWtDLEVBQU13
YyxHQUM1QixHQUFJdEYsRUFFSixJQUFLcFosRUFZSixNQVhBa0MsSUFBU0EsR0FBUSxNQUFTLFFB
QzFCa1gsRUFBUXlGLEVBQVN2ZixJQUFLVSxFQUFNa0MsR0FHdkJ3YyxLQUNFdEYsR0FBUy9hLEVB
QU9rRCxRQUFTbWQsR0FDOUJ0RixFQUFReUYsRUFBU2YsT0FBUTlkLEVBQU1rQyxFQUFNN0QsRUFB
TzZFLFVBQVd3YixJQUV2RHRGLEVBQU1wYyxLQUFNMGhCLElBR1B0RixPQUlUb0csUUFBUyxTQUFV
eGYsRUFBTWtDLEdBQ3hCQSxFQUFPQSxHQUFRLElBRWYsSUFBSWtYLEdBQVEvYSxFQUFPK2EsTUFB
T3BaLEVBQU1rQyxHQUMvQnVkLEVBQWNyRyxFQUFNaGEsT0FDcEJaLEVBQUs0YSxFQUFNck8sUUFD
WDJVLEVBQVFyaEIsRUFBT3NoQixZQUFhM2YsRUFBTWtDLEdBQ2xDNkcsRUFBTyxXQUNOMUssRUFB
T21oQixRQUFTeGYsRUFBTWtDLEdBSVosZ0JBQVAxRCxJQUNKQSxFQUFLNGEsRUFBTXJPLFFBQ1gw
VSxLQUdJamhCLElBSVUsT0FBVDBELEdBQ0prWCxFQUFNaEwsUUFBUyxvQkFJVHNSLEdBQU1FLEtB
Q2JwaEIsRUFBR2hCLEtBQU13QyxFQUFNK0ksRUFBTTJXLEtBR2hCRCxHQUFlQyxHQUNwQkEsRUFB
TXBOLE1BQU1nSCxRQUtkcUcsWUFBYSxTQUFVM2YsRUFBTWtDLEdBQzVCLEdBQUkySSxHQUFNM0ks
RUFBTyxZQUNqQixPQUFPMmMsR0FBU3ZmLElBQUtVLEVBQU02SyxJQUFTZ1UsRUFBU2YsT0FBUTlk
LEVBQU02SyxHQUMxRHlILE1BQU9qVSxFQUFPMGEsVUFBVyxlQUFnQmQsSUFBSyxXQUM3QzRHLEVB
QVNwRixPQUFRelosR0FBUWtDLEVBQU8sUUFBUzJJLFdBTTdDeE0sRUFBT0csR0FBR29DLFFBQ1R3
WSxNQUFPLFNBQVVsWCxFQUFNd2MsR0FDdEIsR0FBSW1CLEdBQVMsQ0FRYixPQU5xQixnQkFBVDNk
LEtBQ1h3YyxFQUFPeGMsRUFDUEEsRUFBTyxLQUNQMmQsS0FHSTFmLFVBQVVmLE9BQVN5Z0IsRUFD
aEJ4aEIsRUFBTythLE1BQU81YyxLQUFNLEdBQUswRixHQUdqQlYsU0FBVGtkLEVBQ05saUIsS0FD
QUEsS0FBS3FELEtBQU0sV0FDVixHQUFJdVosR0FBUS9hLEVBQU8rYSxNQUFPNWMsS0FBTTBGLEVB
QU13YyxFQUd0Q3JnQixHQUFPc2hCLFlBQWFuakIsS0FBTTBGLEdBRVosT0FBVEEsR0FBZ0MsZUFB
ZmtYLEVBQU8sSUFDNUIvYSxFQUFPbWhCLFFBQVNoakIsS0FBTTBGLE1BSTFCc2QsUUFBUyxTQUFV
dGQsR0FDbEIsTUFBTzFGLE1BQUtxRCxLQUFNLFdBQ2pCeEIsRUFBT21oQixRQUFTaGpCLEtBQU0w
RixNQUd4QjRkLFdBQVksU0FBVTVkLEdBQ3JCLE1BQU8xRixNQUFLNGMsTUFBT2xYLEdBQVEsVUFL
NUJtWSxRQUFTLFNBQVVuWSxFQUFNRCxHQUN4QixHQUFJOEIsR0FDSGdjLEVBQVEsRUFDUkMsRUFB
UTNoQixFQUFPbWMsV0FDZmxNLEVBQVc5UixLQUNYeUQsRUFBSXpELEtBQUs0QyxPQUNUOGEsRUFB
VSxhQUNDNkYsR0FDVEMsRUFBTWhFLFlBQWExTixHQUFZQSxJQUliLGlCQUFUcE0sS0FDWEQsRUFB
TUMsRUFDTkEsRUFBT1YsUUFFUlUsRUFBT0EsR0FBUSxJQUVmLE9BQVFqQyxJQUNQOEQsRUFBTThh
LEVBQVN2ZixJQUFLZ1AsRUFBVXJPLEdBQUtpQyxFQUFPLGNBQ3JDNkIsR0FBT0EsRUFBSXVPLFFB
Q2Z5TixJQUNBaGMsRUFBSXVPLE1BQU0yRixJQUFLaUMsR0FJakIsT0FEQUEsS0FDTzhGLEVBQU0z
RixRQUFTcFksS0FHeEIsSUFBSWdlLEdBQU8sc0NBQTBDQyxPQUVqREMsR0FBVSxHQUFJMVosUUFB
USxpQkFBbUJ3WixFQUFPLGNBQWUsS0FHL0RHLElBQWMsTUFBTyxRQUFTLFNBQVUsUUFFeENDLEdB
QXFCLFNBQVVyZ0IsRUFBTWtMLEdBT3ZDLE1BSEFsTCxHQUFPa0wsR0FBTWxMLEVBR2lCLFNBQXZC
QSxFQUFLc2dCLE1BQU1DLFNBQ00sS0FBdkJ2Z0IsRUFBS3NnQixNQUFNQyxTQU1YbGlCLEVBQU9n
SCxTQUFVckYsRUFBSzJKLGNBQWUzSixJQUVILFNBQWxDM0IsRUFBT21pQixJQUFLeGdCLEVBQU0s
WUFHakJ5Z0IsR0FBTyxTQUFVemdCLEVBQU1hLEVBQVNmLEVBQVVrRSxHQUM3QyxHQUFJdEUsR0FB
S29CLEVBQ1I0ZixJQUdELEtBQU01ZixJQUFRRCxHQUNiNmYsRUFBSzVmLEdBQVNkLEVBQUtzZ0Is
TUFBT3hmLEdBQzFCZCxFQUFLc2dCLE1BQU94ZixHQUFTRCxFQUFTQyxFQUcvQnBCLEdBQU1JLEVB
QVNJLE1BQU9GLEVBQU1nRSxNQUc1QixLQUFNbEQsSUFBUUQsR0FDYmIsRUFBS3NnQixNQUFPeGYs
R0FBUzRmLEVBQUs1ZixFQUczQixPQUFPcEIsR0FNUixTQUFTaWhCLElBQVczZ0IsRUFBTTJlLEVB
QU1pQyxFQUFZQyxHQUMzQyxHQUFJQyxHQUNIQyxFQUFRLEVBQ1JDLEVBQWdCLEdBQ2hCQyxFQUFl
SixFQUNkLFdBQ0MsTUFBT0EsR0FBTXJWLE9BRWQsV0FDQyxNQUFPbk4sR0FBT21pQixJQUFLeGdC
LEVBQU0yZSxFQUFNLEtBRWpDdUMsRUFBVUQsSUFDVkUsRUFBT1AsR0FBY0EsRUFBWSxLQUFTdmlC
LEVBQU8raUIsVUFBV3pDLEdBQVMsR0FBSyxNQUcxRTBDLEdBQWtCaGpCLEVBQU8raUIsVUFBV3pD
LElBQW1CLE9BQVR3QyxJQUFrQkQsSUFDL0RmLEdBQVF2VyxLQUFNdkwsRUFBT21pQixJQUFLeGdC
LEVBQU0yZSxHQUVsQyxJQUFLMEMsR0FBaUJBLEVBQWUsS0FBUUYsRUFBTyxDQUduREEsRUFBT0Es
R0FBUUUsRUFBZSxHQUc5QlQsRUFBYUEsTUFHYlMsR0FBaUJILEdBQVcsQ0FFNUIsR0FJQ0gsR0FB
UUEsR0FBUyxLQUdqQk0sR0FBZ0NOLEVBQ2hDMWlCLEVBQU9paUIsTUFBT3RnQixFQUFNMmUsRUFB
TTBDLEVBQWdCRixTQUsxQ0osS0FBWUEsRUFBUUUsSUFBaUJDLElBQXVCLElBQVZILEtBQWlCQyxH
QWlCckUsTUFiS0osS0FDSlMsR0FBaUJBLElBQWtCSCxHQUFXLEVBRzlDSixFQUFXRixFQUFZLEdB
Q3RCUyxHQUFrQlQsRUFBWSxHQUFNLEdBQU1BLEVBQVksSUFDckRBLEVBQVksR0FDVEMsSUFDSkEs
RUFBTU0sS0FBT0EsRUFDYk4sRUFBTW5RLE1BQVEyUSxFQUNkUixFQUFNcGdCLElBQU1xZ0IsSUFH
UEEsRUFJUixHQUFJUSxNQUVKLFNBQVNDLElBQW1CdmhCLEdBQzNCLEdBQUk0VSxHQUNIaFgsRUFB
TW9DLEVBQUsySixjQUNYN0csRUFBVzlDLEVBQUs4QyxTQUNoQnlkLEVBQVVlLEdBQW1CeGUsRUFF
OUIsT0FBS3lkLEdBQ0dBLEdBR1IzTCxFQUFPaFgsRUFBSTRqQixLQUFLdmpCLFlBQWFMLEVBQUlF
LGNBQWVnRixJQUNoRHlkLEVBQVVsaUIsRUFBT21pQixJQUFLNUwsRUFBTSxXQUU1QkEsRUFBSzFX
LFdBQVdDLFlBQWF5VyxHQUVaLFNBQVoyTCxJQUNKQSxFQUFVLFNBRVhlLEdBQW1CeGUsR0FBYXlk
LEVBRXpCQSxHQUdSLFFBQVNrQixJQUFVblQsRUFBVW9ULEdBTzVCLElBTkEsR0FBSW5CLEdBQVN2
Z0IsRUFDWjJoQixLQUNBNUosRUFBUSxFQUNSM1ksRUFBU2tQLEVBQVNsUCxPQUdYMlksRUFBUTNZ
LEVBQVEyWSxJQUN2Qi9YLEVBQU9zTyxFQUFVeUosR0FDWC9YLEVBQUtzZ0IsUUFJWEMsRUFBVXZn
QixFQUFLc2dCLE1BQU1DLFFBQ2hCbUIsR0FLYSxTQUFabkIsSUFDSm9CLEVBQVE1SixHQUFVOEcs
RUFBU3ZmLElBQUtVLEVBQU0sWUFBZSxLQUMvQzJoQixFQUFRNUosS0FDYi9YLEVBQUtzZ0IsTUFB
TUMsUUFBVSxLQUdLLEtBQXZCdmdCLEVBQUtzZ0IsTUFBTUMsU0FBa0JGLEdBQW9CcmdCLEtBQ3JE
MmhCLEVBQVE1SixHQUFVd0osR0FBbUJ2aEIsS0FHckIsU0FBWnVnQixJQUNKb0IsRUFBUTVKLEdB
QVUsT0FHbEI4RyxFQUFTSixJQUFLemUsRUFBTSxVQUFXdWdCLElBTWxDLEtBQU14SSxFQUFRLEVB
QUdBLEVBQVEzWSxFQUFRMlksSUFDUixNQUFuQjRKLEVBQVE1SixLQUNaekosRUFBVXlKLEdBQVF1
SSxNQUFNQyxRQUFVb0IsRUFBUTVKLEdBSTVDLE9BQU96SixHQUdSalEsRUFBT0csR0FBR29DLFFB
Q1Q4Z0IsS0FBTSxXQUNMLE1BQU9ELElBQVVqbEIsTUFBTSxJQUV4Qm9sQixLQUFNLFdBQ0wsTUFB
T0gsSUFBVWpsQixPQUVsQnFsQixPQUFRLFNBQVVsSCxHQUNqQixNQUFzQixpQkFBVkEsR0FDSkEs
RUFBUW5lLEtBQUtrbEIsT0FBU2xsQixLQUFLb2xCLE9BRzVCcGxCLEtBQUtxRCxLQUFNLFdBQ1p3
Z0IsR0FBb0I3akIsTUFDeEI2QixFQUFRN0IsTUFBT2tsQixPQUVmcmpCLEVBQVE3QixNQUFPb2xC
LFdBS25CLElBQUlFLElBQWlCLHdCQUVqQkMsR0FBVyxpQ0FFWEMsR0FBYyw0QkFLZEMsSUFHSEMs
UUFBVSxFQUFHLCtCQUFnQyxhQUs3Q0MsT0FBUyxFQUFHLFVBQVcsWUFDdkJDLEtBQU8sRUFBRyxv
QkFBcUIsdUJBQy9CQyxJQUFNLEVBQUcsaUJBQWtCLG9CQUMzQkMsSUFBTSxFQUFHLHFCQUFzQix5
QkFFL0JDLFVBQVksRUFBRyxHQUFJLElBSXBCTixJQUFRTyxTQUFXUCxHQUFRQyxPQUUzQkQsR0FB
UVEsTUFBUVIsR0FBUVMsTUFBUVQsR0FBUVUsU0FBV1YsR0FBUVcsUUFBVVgsR0FBUUUsTUFDN0VG
LEdBQVFZLEdBQUtaLEdBQVFLLEVBR3JCLFNBQVNRLElBQVF2a0IsRUFBUzRPLEdBSXpCLEdBQUl6
TixFQVlKLE9BVENBLEdBRDRDLG1CQUFqQ25CLEdBQVF3TCxxQkFDYnhMLEVBQVF3TCxxQkFBc0Jv
RCxHQUFPLEtBRUksbUJBQTdCNU8sR0FBUWlNLGlCQUNwQmpNLEVBQVFpTSxpQkFBa0IyQyxHQUFP
LFFBTTNCM0wsU0FBUjJMLEdBQXFCQSxHQUFPOU8sRUFBT3lFLFNBQVV2RSxFQUFTNE8sR0FDbkQ5
TyxFQUFPc0IsT0FBU3BCLEdBQVdtQixHQUc1QkEsRUFLUixRQUFTcWpCLElBQWV0akIsRUFBT3Vq
QixHQUk5QixJQUhBLEdBQUkvaUIsR0FBSSxFQUNQNFgsRUFBSXBZLEVBQU1MLE9BRUhhLEVBQUk0
WCxFQUFHNVgsSUFDZDRlLEVBQVNKLElBQ1JoZixFQUFPUSxHQUNQLGNBQ0MraUIsR0FBZW5FLEVB
QVN2ZixJQUFLMGpCLEVBQWEvaUIsR0FBSyxlQU1uRCxHQUFJZ2pCLElBQVEsV0FFWixTQUFTQyxJ
QUFlempCLEVBQU9sQixFQUFTNGtCLEVBQVNDLEVBQVdDLEdBTzNELElBTkEsR0FBSXJqQixHQUFN
K0QsRUFBS29KLEVBQUttVyxFQUFNamUsRUFBVTdFLEVBQ25DK2lCLEVBQVdobEIsRUFBUWlsQix5
QkFDbkJDLEtBQ0F4akIsRUFBSSxFQUNKNFgsRUFBSXBZLEVBQU1MLE9BRUhhLEVBQUk0WCxFQUFH
NVgsSUFHZCxHQUZBRCxFQUFPUCxFQUFPUSxHQUVURCxHQUFpQixJQUFUQSxFQUdaLEdBQTZCLFdB
QXhCM0IsRUFBTzZELEtBQU1sQyxHQUlqQjNCLEVBQU9zQixNQUFPOGpCLEVBQU96akIsRUFBS2lK
LFVBQWFqSixHQUFTQSxPQUcxQyxJQUFNaWpCLEdBQU0vWSxLQUFNbEssR0FJbEIsQ0FDTitELEVB
QU1BLEdBQU93ZixFQUFTdGxCLFlBQWFNLEVBQVFULGNBQWUsUUFHMURxUCxHQUFRNFUsR0FBU25Z
LEtBQU01SixLQUFZLEdBQUksS0FBUSxHQUFJK0MsY0FDbkR1Z0IsRUFBT3JCLEdBQVM5VSxJQUFT
OFUsR0FBUU0sU0FDakN4ZSxFQUFJcUosVUFBWWtXLEVBQU0sR0FBTWpsQixFQUFPcWxCLGNBQWUx
akIsR0FBU3NqQixFQUFNLEdBR2pFOWlCLEVBQUk4aUIsRUFBTSxFQUNWLE9BQVE5aUIsSUFDUHVE
LEVBQU1BLEVBQUk4TSxTQUtYeFMsR0FBT3NCLE1BQU84akIsRUFBTzFmLEVBQUlpRixZQUd6QmpG
LEVBQU13ZixFQUFTdFUsV0FHZmxMLEVBQUlpTCxZQUFjLE9BekJsQnlVLEdBQU16bUIsS0FBTXVC
LEVBQVFvbEIsZUFBZ0IzakIsR0ErQnZDdWpCLEdBQVN2VSxZQUFjLEdBRXZCL08sRUFBSSxDQUNK
LE9BQVVELEVBQU95akIsRUFBT3hqQixLQUd2QixHQUFLbWpCLEdBQWEva0IsRUFBTytFLFFBQVNw
RCxFQUFNb2pCLE1BQ2xDQyxHQUNKQSxFQUFRcm1CLEtBQU1nRCxPQWdCaEIsSUFYQXFGLEVBQVdo
SCxFQUFPZ0gsU0FBVXJGLEVBQUsySixjQUFlM0osR0FHaEQrRCxFQUFNK2UsR0FBUVMsRUFBU3Rs
QixZQUFhK0IsR0FBUSxVQUd2Q3FGLEdBQ0owZCxHQUFlaGYsR0FJWG9mLEVBQVUsQ0FDZDNpQixF
QUFJLENBQ0osT0FBVVIsRUFBTytELEVBQUt2RCxLQUNoQndoQixHQUFZOVgsS0FBTWxLLEVBQUtr
QyxNQUFRLEtBQ25DaWhCLEVBQVFubUIsS0FBTWdELEdBTWxCLE1BQU91akIsSUFJUixXQUNDLEdB
QUlBLEdBQVdubkIsRUFBU29uQix5QkFDdkJJLEVBQU1MLEVBQVN0bEIsWUFBYTdCLEVBQVMwQixj
QUFlLFFBQ3BEdVAsRUFBUWpSLEVBQVMwQixjQUFlLFFBTWpDdVAsR0FBTWpELGFBQWMsT0FBUSxT
QUM1QmlELEVBQU1qRCxhQUFjLFVBQVcsV0FDL0JpRCxFQUFNakQsYUFBYyxPQUFRLEtBRTVCd1os
RUFBSTNsQixZQUFhb1AsR0FJakI1UCxFQUFRb21CLFdBQWFELEVBQUlFLFdBQVcsR0FBT0EsV0FB
VyxHQUFPalQsVUFBVXNCLFFBSXZFeVIsRUFBSXhXLFVBQVkseUJBQ2hCM1AsRUFBUXNtQixpQkFB
bUJILEVBQUlFLFdBQVcsR0FBT2pULFVBQVV3RixlQUU1RCxJQUFJbEssSUFBa0IvUCxFQUFTK1As
Z0JBSzlCNlgsR0FBWSxPQUNaQyxHQUFjLGlEQUNkQyxHQUFpQixxQkFFbEIsU0FBU0MsTUFDUixP
QUFPLEVBR1IsUUFBU0MsTUFDUixPQUFPLEVBS1IsUUFBU0MsTUFDUixJQUNDLE1BQU9qb0IsR0FB
UzBWLGNBQ2YsTUFBUXdTLEtBR1gsUUFBU0MsSUFBSXZrQixFQUFNd2tCLEVBQU9sbUIsRUFBVW9n
QixFQUFNbGdCLEVBQUlpbUIsR0FDN0MsR0FBSUMsR0FBUXhpQixDQUdaLElBQXNCLGdCQUFWc2lC
LEdBQXFCLENBR1AsZ0JBQWJsbUIsS0FHWG9nQixFQUFPQSxHQUFRcGdCLEVBQ2ZBLEVBQVdrRCxP
QUVaLEtBQU1VLElBQVFzaUIsR0FDYkQsR0FBSXZrQixFQUFNa0MsRUFBTTVELEVBQVVvZ0IsRUFB
TThGLEVBQU90aUIsR0FBUXVpQixFQUVoRCxPQUFPemtCLEdBc0JSLEdBbkJhLE1BQVIwZSxHQUFz
QixNQUFObGdCLEdBR3BCQSxFQUFLRixFQUNMb2dCLEVBQU9wZ0IsRUFBV2tELFFBQ0QsTUFBTmhE
LElBQ2MsZ0JBQWJGLElBR1hFLEVBQUtrZ0IsRUFDTEEsRUFBT2xkLFNBSVBoRCxFQUFLa2dCLEVB
Q0xBLEVBQU9wZ0IsRUFDUEEsRUFBV2tELFNBR1JoRCxLQUFPLEVBQ1hBLEVBQUs0bEIsT0FDQyxL
QUFNNWxCLEVBQ1osTUFBT3dCLEVBZVIsT0FaYSxLQUFSeWtCLElBQ0pDLEVBQVNsbUIsRUFDVEEs
RUFBSyxTQUFVbW1CLEdBSWQsTUFEQXRtQixLQUFTdW1CLElBQUtELEdBQ1BELEVBQU94a0IsTUFB
TzFELEtBQU0yRCxZQUk1QjNCLEVBQUdxRixLQUFPNmdCLEVBQU83Z0IsT0FBVTZnQixFQUFPN2dC
LEtBQU94RixFQUFPd0YsU0FFMUM3RCxFQUFLSCxLQUFNLFdBQ2pCeEIsRUFBT3NtQixNQUFNMU0s
SUFBS3piLEtBQU1nb0IsRUFBT2htQixFQUFJa2dCLEVBQU1wZ0IsS0FRM0NELEVBQU9zbUIsT0FF
TjNvQixVQUVBaWMsSUFBSyxTQUFValksRUFBTXdrQixFQUFPblosRUFBU3FULEVBQU1wZ0IsR0FF
MUMsR0FBSXVtQixHQUFhQyxFQUFhL2dCLEVBQzdCZ2hCLEVBQVFDLEVBQUdDLEVBQ1h0SixFQUFT
dUosRUFBVWhqQixFQUFNaWpCLEVBQVlDLEVBQ3JDQyxFQUFXeEcsRUFBU3ZmLElBQUtVLEVBRzFC
LElBQU1xbEIsRUFBTixDQUtLaGEsRUFBUUEsVUFDWndaLEVBQWN4WixFQUNkQSxFQUFVd1osRUFB
WXhaLFFBQ3RCL00sRUFBV3VtQixFQUFZdm1CLFVBS25CQSxHQUNKRCxFQUFPNE8sS0FBS0ssZ0JB
QWlCbkIsR0FBaUI3TixHQUl6QytNLEVBQVF4SCxPQUNid0gsRUFBUXhILEtBQU94RixFQUFPd0Ys
U0FJZmtoQixFQUFTTSxFQUFTTixVQUN6QkEsRUFBU00sRUFBU04sWUFFWEQsRUFBY08sRUFBU0Ms
VUFDOUJSLEVBQWNPLEVBQVNDLE9BQVMsU0FBVXBjLEdBSXpDLE1BQXlCLG1CQUFYN0ssSUFBMEJB
LEVBQU9zbUIsTUFBTVksWUFBY3JjLEVBQUVoSCxLQUNwRTdELEVBQU9zbUIsTUFBTWEsU0FBU3Rs
QixNQUFPRixFQUFNRyxXQUFjcUIsU0FLcERnakIsR0FBVUEsR0FBUyxJQUFLamIsTUFBT29QLEtB
QXFCLElBQ3BEcU0sRUFBSVIsRUFBTXBsQixNQUNWLE9BQVE0bEIsSUFDUGpoQixFQUFNbWdCLEdB
QWV0YSxLQUFNNGEsRUFBT1EsUUFDbEM5aUIsRUFBT2tqQixFQUFXcmhCLEVBQUssR0FDdkJvaEIs
R0FBZXBoQixFQUFLLElBQU8sSUFBS00sTUFBTyxLQUFNM0QsT0FHdkN3QixJQUtOeVosRUFBVXRk
LEVBQU9zbUIsTUFBTWhKLFFBQVN6WixPQUdoQ0EsR0FBUzVELEVBQVdxZCxFQUFROEosYUFBZTlK
LEVBQVErSixXQUFjeGpCLEVBR2pFeVosRUFBVXRkLEVBQU9zbUIsTUFBTWhKLFFBQVN6WixPQUdo
QytpQixFQUFZNW1CLEVBQU91QyxRQUNsQnNCLEtBQU1BLEVBQ05rakIsU0FBVUEsRUFDVjFHLEtB
QU1BLEVBQ05yVCxRQUFTQSxFQUNUeEgsS0FBTXdILEVBQVF4SCxLQUNkdkYsU0FBVUEsRUFDVmlK
LGFBQWNqSixHQUFZRCxFQUFPZ1EsS0FBSzlFLE1BQU1oQyxhQUFhMkMsS0FBTTVMLEdBQy9EcW5C
LFVBQVdSLEVBQVc3YSxLQUFNLE1BQzFCdWEsSUFHS0ssRUFBV0gsRUFBUTdpQixNQUMxQmdqQixF
QUFXSCxFQUFRN2lCLE1BQ25CZ2pCLEVBQVNVLGNBQWdCLEVBR25CakssRUFBUWtLLE9BQ2JsSyxF
QUFRa0ssTUFBTXJvQixLQUFNd0MsRUFBTTBlLEVBQU15RyxFQUFZTCxNQUFrQixHQUV6RDlrQixF
QUFLeU0sa0JBQ1R6TSxFQUFLeU0saUJBQWtCdkssRUFBTTRpQixJQUszQm5KLEVBQVExRCxNQUNa
MEQsRUFBUTFELElBQUl6YSxLQUFNd0MsRUFBTWlsQixHQUVsQkEsRUFBVTVaLFFBQVF4SCxPQUN2
Qm9oQixFQUFVNVosUUFBUXhILEtBQU93SCxFQUFReEgsT0FLOUJ2RixFQUNKNG1CLEVBQVN2a0Is
T0FBUXVrQixFQUFTVSxnQkFBaUIsRUFBR1gsR0FFOUNDLEVBQVNsb0IsS0FBTWlvQixHQUloQjVt
QixFQUFPc21CLE1BQU0zb0IsT0FBUWtHLElBQVMsS0FNaEN1WCxPQUFRLFNBQVV6WixFQUFNd2tC
LEVBQU9uWixFQUFTL00sRUFBVXduQixHQUVqRCxHQUFJdGxCLEdBQUd1bEIsRUFBV2hpQixFQUNq
QmdoQixFQUFRQyxFQUFHQyxFQUNYdEosRUFBU3VKLEVBQVVoakIsRUFBTWlqQixFQUFZQyxFQUNy
Q0MsRUFBV3hHLEVBQVNELFFBQVM1ZSxJQUFVNmUsRUFBU3ZmLElBQUtVLEVBRXRELElBQU1xbEIs
SUFBZU4sRUFBU00sRUFBU04sUUFBdkMsQ0FLQVAsR0FBVUEsR0FBUyxJQUFLamIsTUFBT29QLEtB
QXFCLElBQ3BEcU0sRUFBSVIsRUFBTXBsQixNQUNWLE9BQVE0bEIsSUFNUCxHQUxBamhCLEVBQU1t
Z0IsR0FBZXRhLEtBQU00YSxFQUFPUSxRQUNsQzlpQixFQUFPa2pCLEVBQVdyaEIsRUFBSyxHQUN2
Qm9oQixHQUFlcGhCLEVBQUssSUFBTyxJQUFLTSxNQUFPLEtBQU0zRCxPQUd2Q3dCLEVBQU4sQ0FP
QXlaLEVBQVV0ZCxFQUFPc21CLE1BQU1oSixRQUFTelosT0FDaENBLEdBQVM1RCxFQUFXcWQsRUFB
UThKLGFBQWU5SixFQUFRK0osV0FBY3hqQixFQUNqRWdqQixFQUFXSCxFQUFRN2lCLE9BQ25CNkIs
RUFBTUEsRUFBSyxJQUNWLEdBQUkwQyxRQUFRLFVBQVkwZSxFQUFXN2EsS0FBTSxpQkFBb0IsV0FH
OUR5YixFQUFZdmxCLEVBQUkwa0IsRUFBUzlsQixNQUN6QixPQUFRb0IsSUFDUHlrQixFQUFZQyxF
QUFVMWtCLElBRWZzbEIsR0FBZVYsSUFBYUgsRUFBVUcsVUFDekMvWixHQUFXQSxFQUFReEgsT0FB
U29oQixFQUFVcGhCLE1BQ3RDRSxJQUFPQSxFQUFJbUcsS0FBTSthLEVBQVVVLFlBQzNCcm5CLEdB
QVlBLElBQWEybUIsRUFBVTNtQixXQUN4QixPQUFiQSxJQUFxQjJtQixFQUFVM21CLFlBQ2hDNG1C
LEVBQVN2a0IsT0FBUUgsRUFBRyxHQUVmeWtCLEVBQVUzbUIsVUFDZDRtQixFQUFTVSxnQkFFTGpL
LEVBQVFsQyxRQUNaa0MsRUFBUWxDLE9BQU9qYyxLQUFNd0MsRUFBTWlsQixHQU96QmMsS0FBY2Is
RUFBUzlsQixTQUNyQnVjLEVBQVFxSyxVQUNickssRUFBUXFLLFNBQVN4b0IsS0FBTXdDLEVBQU1t
bEIsRUFBWUUsRUFBU0MsV0FBYSxHQUUvRGpuQixFQUFPNG5CLFlBQWFqbUIsRUFBTWtDLEVBQU1t
akIsRUFBU0MsY0FHbkNQLEdBQVE3aUIsUUExQ2YsS0FBTUEsSUFBUTZpQixHQUNiMW1CLEVBQU9z
bUIsTUFBTWxMLE9BQVF6WixFQUFNa0MsRUFBT3NpQixFQUFPUSxHQUFLM1osRUFBUy9NLEdBQVUs
RUE4Qy9ERCxHQUFPcUUsY0FBZXFpQixJQUMxQmxHLEVBQVNwRixPQUFRelosRUFBTSxtQkFJekJ3
bEIsU0FBVSxTQUFVVSxHQUduQixHQUFJdkIsR0FBUXRtQixFQUFPc21CLE1BQU13QixJQUFLRCxH
QUUxQmptQixFQUFHTyxFQUFHZCxFQUFLd1IsRUFBUytULEVBQVdtQixFQUNsQ3BpQixFQUFPLEdB
QUk3QixPQUFPaEMsVUFBVWYsUUFDNUI4bEIsR0FBYXJHLEVBQVN2ZixJQUFLOUMsS0FBTSxlQUFv
Qm1vQixFQUFNemlCLFVBQzNEeVosRUFBVXRkLEVBQU9zbUIsTUFBTWhKLFFBQVNnSixFQUFNemlC
LFNBS3ZDLEtBRkE4QixFQUFNLEdBQU0yZ0IsRUFFTjFrQixFQUFJLEVBQUdBLEVBQUlFLFVBQVVm
LE9BQVFhLElBQ2xDK0QsRUFBTS9ELEdBQU1FLFVBQVdGLEVBTXhCLElBSEEwa0IsRUFBTTBCLGVB
QWlCN3BCLE1BR2xCbWYsRUFBUTJLLGFBQWUzSyxFQUFRMkssWUFBWTlvQixLQUFNaEIsS0FBTW1v
QixNQUFZLEVBQXhFLENBS0F5QixFQUFlL25CLEVBQU9zbUIsTUFBTU8sU0FBUzFuQixLQUFNaEIs
S0FBTW1vQixFQUFPTyxHQUd4RGpsQixFQUFJLENBQ0osUUFBVWlSLEVBQVVrVixFQUFjbm1CLFFB
QVkwa0IsRUFBTTRCLHVCQUF5QixDQUM1RTVCLEVBQU02QixjQUFnQnRWLEVBQVFsUixLQUU5QlEs
RUFBSSxDQUNKLFFBQVV5a0IsRUFBWS9ULEVBQVFnVSxTQUFVMWtCLFFBQ3RDbWtCLEVBQU04Qixn
Q0FJRDlCLEVBQU0rQixhQUFjL0IsRUFBTStCLFdBQVd4YyxLQUFNK2EsRUFBVVUsYUFFMURoQixF
QUFNTSxVQUFZQSxFQUNsQk4sRUFBTWpHLEtBQU91RyxFQUFVdkcsS0FFdkJoZixJQUFVckIsRUFB
T3NtQixNQUFNaEosUUFBU3NKLEVBQVVHLGVBQW1CRSxRQUM1REwsRUFBVTVaLFNBQVVuTCxNQUFP
Z1IsRUFBUWxSLEtBQU1nRSxHQUU3QnhDLFNBQVI5QixJQUNHaWxCLEVBQU0xVSxPQUFTdlEsTUFB
VSxJQUMvQmlsQixFQUFNZ0MsaUJBQ05oQyxFQUFNaUMsb0JBWVgsTUFKS2pMLEdBQVFrTCxjQUNa
bEwsRUFBUWtMLGFBQWFycEIsS0FBTWhCLEtBQU1tb0IsR0FHM0JBLEVBQU0xVSxTQUdkaVYsU0FB
VSxTQUFVUCxFQUFPTyxHQUMxQixHQUFJamxCLEdBQUdnbEIsRUFBV3RXLEVBQUttWSxFQUFpQkMs
RUFDdkNYLEtBQ0FSLEVBQWdCVixFQUFTVSxjQUN6QnBhLEVBQU1tWixFQUFNeGpCLE1BR2IsSUFB
S3lrQixHQUlKcGEsRUFBSXZDLFlBT2MsVUFBZjBiLEVBQU16aUIsTUFBb0J5aUIsRUFBTW5TLFFB
QVUsR0FFN0MsS0FBUWhILElBQVFoUCxLQUFNZ1AsRUFBTUEsRUFBSXROLFlBQWMxQixLQUk3QyxH
QUFzQixJQUFqQmdQLEVBQUl2QyxXQUFvQyxVQUFmMGIsRUFBTXppQixNQUFvQnNKLEVBQUkzQyxZ
QUFhLEdBQVMsQ0FHakYsSUFGQWllLEtBQ0FDLEtBQ005bUIsRUFBSSxFQUFHQSxFQUFJMmxCLEVB
QWUzbEIsSUFDL0JnbEIsRUFBWUMsRUFBVWpsQixHQUd0QjBPLEVBQU1zVyxFQUFVM21CLFNBQVcs
SUFFTWtELFNBQTVCdWxCLEVBQWtCcFksS0FDdEJvWSxFQUFrQnBZLEdBQVFzVyxFQUFVMWQsYUFD
bkNsSixFQUFRc1EsRUFBS25TLE1BQU91YixNQUFPdk0sTUFDM0JuTixFQUFPNE8sS0FBTTBCLEVB
QUtuUyxLQUFNLE1BQVFnUCxJQUFRcE0sUUFFckMybkIsRUFBa0JwWSxJQUN0Qm1ZLEVBQWdCOXBC
LEtBQU1pb0IsRUFHbkI2QixHQUFnQjFuQixRQUNwQmduQixFQUFhcHBCLE1BQVFnRCxLQUFNd0ws
RUFBSzBaLFNBQVU0QixJQVk5QyxNQUxBdGIsR0FBTWhQLEtBQ0RvcEIsRUFBZ0JWLEVBQVM5bEIs
UUFDN0JnbkIsRUFBYXBwQixNQUFRZ0QsS0FBTXdMLEVBQUswWixTQUFVQSxFQUFTcG9CLE1BQU84
b0IsS0FHcERRLEdBR1JZLFFBQVMsU0FBVWxtQixFQUFNbW1CLEdBQ3hCcnFCLE9BQU8yaEIsZUFB
Z0JsZ0IsRUFBTzZvQixNQUFNam9CLFVBQVc2QixHQUM5Q3FtQixZQUFZLEVBQ1ozSSxjQUFjLEVB
RWRsZixJQUFLakIsRUFBT2dELFdBQVk0bEIsR0FDdkIsV0FDQyxHQUFLenFCLEtBQUs0cUIsY0FD
UixNQUFPSCxHQUFNenFCLEtBQUs0cUIsZ0JBR3JCLFdBQ0MsR0FBSzVxQixLQUFLNHFCLGNBQ1Is
TUFBTzVxQixNQUFLNHFCLGNBQWV0bUIsSUFJL0IyZCxJQUFLLFNBQVU3YSxHQUNkaEgsT0FBTzJo
QixlQUFnQi9oQixLQUFNc0UsR0FDNUJxbUIsWUFBWSxFQUNaM0ksY0FBYyxFQUNkNkksVUFBVSxF
QUNWempCLE1BQU9BLFFBTVh1aUIsSUFBSyxTQUFVaUIsR0FDZCxNQUFPQSxHQUFlL29CLEVBQU9v
RCxTQUM1QjJsQixFQUNBLEdBQUkvb0IsR0FBTzZvQixNQUFPRSxJQUdwQnpMLFNBQ0MyTCxNQUdD
QyxVQUFVLEdBRVgxVixPQUdDMlYsUUFBUyxXQUNSLEdBQUtockIsT0FBUzZuQixNQUF1QjduQixL
QUFLcVYsTUFFekMsTUFEQXJWLE1BQUtxVixTQUNFLEdBR1Q0VCxhQUFjLFdBRWZnQyxNQUNDRCxR
QUFTLFdBQ1IsR0FBS2hyQixPQUFTNm5CLE1BQXVCN25CLEtBQUtpckIsS0FFekMsTUFEQWpyQixN
QUFLaXJCLFFBQ0UsR0FHVGhDLGFBQWMsWUFFZmlDLE9BR0NGLFFBQVMsV0FDUixHQUFtQixhQUFk
aHJCLEtBQUswRixNQUF1QjFGLEtBQUtrckIsT0FBU3JwQixFQUFPeUUsU0FBVXRHLEtBQU0sU0FF
ckUsTUFEQUEsTUFBS2tyQixTQUNFLEdBS1RuRixTQUFVLFNBQVVvQyxHQUNuQixNQUFPdG1CLEdB
QU95RSxTQUFVNmhCLEVBQU14akIsT0FBUSxPQUl4Q3dtQixjQUNDZCxhQUFjLFNBQVVsQyxHQUlE
bmpCLFNBQWpCbWpCLEVBQU0xVSxRQUF3QjBVLEVBQU15QyxnQkFDeEN6QyxFQUFNeUMsY0FBY1Es
WUFBY2pELEVBQU0xVSxZQU83QzVSLEVBQU80bkIsWUFBYyxTQUFVam1CLEVBQU1rQyxFQUFNb2pC
LEdBR3JDdGxCLEVBQUsyZCxxQkFDVDNkLEVBQUsyZCxvQkFBcUJ6YixFQUFNb2pCLElBSWxDam5C
LEVBQU82b0IsTUFBUSxTQUFVbm1CLEVBQUs4bUIsR0FHN0IsTUFBUXJyQixnQkFBZ0I2QixHQUFP
Nm9CLE9BSzFCbm1CLEdBQU9BLEVBQUltQixNQUNmMUYsS0FBSzRxQixjQUFnQnJtQixFQUNyQnZF
LEtBQUswRixLQUFPbkIsRUFBSW1CLEtBSWhCMUYsS0FBS3NyQixtQkFBcUIvbUIsRUFBSWduQixr
QkFDSHZtQixTQUF6QlQsRUFBSWduQixrQkFHSmhuQixFQUFJNm1CLGVBQWdCLEVBQ3JCekQsR0FD
QUMsR0FLRDVuQixLQUFLMkUsT0FBV0osRUFBSUksUUFBa0MsSUFBeEJKLEVBQUlJLE9BQU84SCxT
QUN4Q2xJLEVBQUlJLE9BQU9qRCxXQUNYNkMsRUFBSUksT0FFTDNFLEtBQUtncUIsY0FBZ0J6bEIs
RUFBSXlsQixjQUN6QmhxQixLQUFLd3JCLGNBQWdCam5CLEVBQUlpbkIsZUFJekJ4ckIsS0FBSzBG
LEtBQU9uQixFQUlSOG1CLEdBQ0p4cEIsRUFBT3VDLE9BQVFwRSxLQUFNcXJCLEdBSXRCcnJCLEtB
QUt5ckIsVUFBWWxuQixHQUFPQSxFQUFJa25CLFdBQWE1cEIsRUFBTzRGLFdBR2hEekgsS0FBTTZC
LEVBQU9vRCxVQUFZLElBMUNqQixHQUFJcEQsR0FBTzZvQixNQUFPbm1CLEVBQUs4bUIsSUErQ2hD
eHBCLEVBQU82b0IsTUFBTWpvQixXQUNaRSxZQUFhZCxFQUFPNm9CLE1BQ3BCWSxtQkFBb0IxRCxH
QUNwQm1DLHFCQUFzQm5DLEdBQ3RCcUMsOEJBQStCckMsR0FDL0I4RCxhQUFhLEVBRWJ2QixlQUFn
QixXQUNmLEdBQUl6ZCxHQUFJMU0sS0FBSzRxQixhQUViNXFCLE1BQUtzckIsbUJBQXFCM0QsR0FF
ckJqYixJQUFNMU0sS0FBSzByQixhQUNmaGYsRUFBRXlkLGtCQUdKQyxnQkFBaUIsV0FDaEIsR0FB
STFkLEdBQUkxTSxLQUFLNHFCLGFBRWI1cUIsTUFBSytwQixxQkFBdUJwQyxHQUV2QmpiLElBQU0x
TSxLQUFLMHJCLGFBQ2ZoZixFQUFFMGQsbUJBR0p1Qix5QkFBMEIsV0FDekIsR0FBSWpmLEdBQUkx
TSxLQUFLNHFCLGFBRWI1cUIsTUFBS2lxQiw4QkFBZ0N0QyxHQUVoQ2piLElBQU0xTSxLQUFLMHJC
LGFBQ2ZoZixFQUFFaWYsMkJBR0gzckIsS0FBS29xQixvQkFLUHZvQixFQUFPd0IsTUFDTnVvQixR
QUFRLEVBQ1JDLFNBQVMsRUFDVEMsWUFBWSxFQUNaQyxnQkFBZ0IsRUFDaEJDLFNBQVMsRUFDVEMs
UUFBUSxFQUNSQyxZQUFZLEVBQ1pDLFNBQVMsRUFDVEMsT0FBTyxFQUNQQyxPQUFPLEVBQ1BDLFVB
QVUsRUFDVkMsTUFBTSxFQUNOQyxRQUFRLEVBQ1JDLFVBQVUsRUFDVnBlLEtBQUssRUFDTHFlLFNB
QVMsRUFDVDFXLFFBQVEsRUFDUjJXLFNBQVMsRUFDVEMsU0FBUyxFQUNUQyxTQUFTLEVBQ1RDLFNB
QVMsRUFDVEMsU0FBUyxFQUNUQyxXQUFXLEVBQ1hDLGFBQWEsRUFDYkMsU0FBUyxFQUNUQyxTQUFT
LEVBQ1RDLGVBQWUsRUFDZkMsV0FBVyxFQUNYQyxTQUFTLEVBRVRDLE1BQU8sU0FBVXBGLEdBQ2hC
LEdBQUluUyxHQUFTbVMsRUFBTW5TLE1BR25CLE9BQW9CLE9BQWZtUyxFQUFNb0YsT0FBaUIvRixH
QUFVOVosS0FBTXlhLEVBQU16aUIsTUFDeEIsTUFBbEJ5aUIsRUFBTXNFLFNBQW1CdEUsRUFBTXNF
LFNBQVd0RSxFQUFNdUUsU0FJbER2RSxFQUFNb0YsT0FBb0J2b0IsU0FBWGdSLEdBQXdCeVIsR0FB
WS9aLEtBQU15YSxFQUFNemlCLE1BQ3RELEVBQVRzUSxFQUNHLEVBR00sRUFBVEEsRUFDRyxFQUdN
LEVBQVRBLEVBQ0csRUFHRCxFQUdEbVMsRUFBTW9GLFFBRVoxckIsRUFBT3NtQixNQUFNcUMsU0FV
aEIzb0IsRUFBT3dCLE1BQ05tcUIsV0FBWSxZQUNaQyxXQUFZLFdBQ1pDLGFBQWMsY0FDZEMsYUFB
YyxjQUNaLFNBQVVDLEVBQU1qRSxHQUNsQjluQixFQUFPc21CLE1BQU1oSixRQUFTeU8sSUFDckIz
RSxhQUFjVSxFQUNkVCxTQUFVUyxFQUVWYixPQUFRLFNBQVVYLEdBQ2pCLEdBQUlqbEIsR0FDSHlC
LEVBQVMzRSxLQUNUNnRCLEVBQVUxRixFQUFNcUQsY0FDaEIvQyxFQUFZTixFQUFNTSxTQVNuQixP
QUxNb0YsS0FBYUEsSUFBWWxwQixHQUFXOUMsRUFBT2dILFNBQVVsRSxFQUFRa3BCLE1BQ2xFMUYs
RUFBTXppQixLQUFPK2lCLEVBQVVHLFNBQ3ZCMWxCLEVBQU11bEIsRUFBVTVaLFFBQVFuTCxNQUFP
MUQsS0FBTTJELFdBQ3JDd2tCLEVBQU16aUIsS0FBT2lrQixHQUVQem1CLE1BS1ZyQixFQUFPRyxH
QUFHb0MsUUFFVDJqQixHQUFJLFNBQVVDLEVBQU9sbUIsRUFBVW9nQixFQUFNbGdCLEdBQ3BDLE1B
QU8rbEIsSUFBSS9uQixLQUFNZ29CLEVBQU9sbUIsRUFBVW9nQixFQUFNbGdCLElBRXpDaW1CLElB
QUssU0FBVUQsRUFBT2xtQixFQUFVb2dCLEVBQU1sZ0IsR0FDckMsTUFBTytsQixJQUFJL25CLEtB
QU1nb0IsRUFBT2xtQixFQUFVb2dCLEVBQU1sZ0IsRUFBSSxJQUU3Q29tQixJQUFLLFNBQVVKLEVB
QU9sbUIsRUFBVUUsR0FDL0IsR0FBSXltQixHQUFXL2lCLENBQ2YsSUFBS3NpQixHQUFTQSxFQUFN
bUMsZ0JBQWtCbkMsRUFBTVMsVUFXM0MsTUFSQUEsR0FBWVQsRUFBTVMsVUFDbEI1bUIsRUFBUW1t
QixFQUFNNkIsZ0JBQWlCekIsSUFDOUJLLEVBQVVVLFVBQ1RWLEVBQVVHLFNBQVcsSUFBTUgsRUFB
VVUsVUFDckNWLEVBQVVHLFNBQ1hILEVBQVUzbUIsU0FDVjJtQixFQUFVNVosU0FFSjdPLElBRVIs
SUFBc0IsZ0JBQVZnb0IsR0FBcUIsQ0FHaEMsSUFBTXRpQixJQUFRc2lCLEdBQ2Job0IsS0FBS29v
QixJQUFLMWlCLEVBQU01RCxFQUFVa21CLEVBQU90aUIsR0FFbEMsT0FBTzFGLE1BV1IsTUFUSzhC
LE1BQWEsR0FBNkIsa0JBQWJBLEtBR2pDRSxFQUFLRixFQUNMQSxFQUFXa0QsUUFFUGhELEtBQU8s
SUFDWEEsRUFBSzRsQixJQUVDNW5CLEtBQUtxRCxLQUFNLFdBQ2pCeEIsRUFBT3NtQixNQUFNbEws
T0FBUWpkLEtBQU1nb0IsRUFBT2htQixFQUFJRixPQU16QyxJQUtDZ3NCLElBQVksOEZBT1pDLEdB
QWUsd0JBR2ZDLEdBQVcsb0NBQ1hDLEdBQW9CLGNBQ3BCQyxHQUFlLDBDQUVoQixTQUFTQyxJQUFv
QjNxQixFQUFNNHFCLEdBQ2xDLE1BQUt2c0IsR0FBT3lFLFNBQVU5QyxFQUFNLFVBQzNCM0IsRUFB
T3lFLFNBQStCLEtBQXJCOG5CLEVBQVEzaEIsU0FBa0IyaEIsRUFBVUEsRUFBUTNiLFdBQVksTUFF
bEVqUCxFQUFLK0oscUJBQXNCLFNBQVcsSUFBTy9KLEVBRzlDQSxFQUlSLFFBQVM2cUIsSUFBZTdx
QixHQUV2QixNQURBQSxHQUFLa0MsTUFBeUMsT0FBaENsQyxFQUFLbUssYUFBYyxTQUFzQixJQUFN
bkssRUFBS2tDLEtBQzNEbEMsRUFFUixRQUFTOHFCLElBQWU5cUIsR0FDdkIsR0FBSXVKLEdBQVFr
aEIsR0FBa0I3Z0IsS0FBTTVKLEVBQUtrQyxLQVF6QyxPQU5LcUgsR0FDSnZKLEVBQUtrQyxLQUFP
cUgsRUFBTyxHQUVuQnZKLEVBQUswSyxnQkFBaUIsUUFHaEIxSyxFQUdSLFFBQVMrcUIsSUFBZ0Jo
cUIsRUFBS2lxQixHQUM3QixHQUFJL3FCLEdBQUc0WCxFQUFHM1YsRUFBTStvQixFQUFVQyxFQUFV
QyxFQUFVQyxFQUFVckcsQ0FFeEQsSUFBdUIsSUFBbEJpRyxFQUFLL2hCLFNBQVYsQ0FLQSxHQUFL
NFYsRUFBU0QsUUFBUzdkLEtBQ3RCa3FCLEVBQVdwTSxFQUFTZixPQUFRL2MsR0FDNUJtcUIsRUFB
V3JNLEVBQVNKLElBQUt1TSxFQUFNQyxHQUMvQmxHLEVBQVNrRyxFQUFTbEcsUUFFSixPQUNObUcs
R0FBUzVGLE9BQ2hCNEYsRUFBU25HLFNBRVQsS0FBTTdpQixJQUFRNmlCLEdBQ2IsSUFBTTlrQixF
QUFJLEVBQUc0WCxFQUFJa04sRUFBUTdpQixHQUFPOUMsT0FBUWEsRUFBSTRYLEVBQUc1WCxJQUM5
QzVCLEVBQU9zbUIsTUFBTTFNLElBQUsrUyxFQUFNOW9CLEVBQU02aUIsRUFBUTdpQixHQUFRakMs
SUFPN0M2ZSxFQUFTRixRQUFTN2QsS0FDdEJvcUIsRUFBV3JNLEVBQVNoQixPQUFRL2MsR0FDNUJx
cUIsRUFBVy9zQixFQUFPdUMsVUFBWXVxQixHQUU5QnJNLEVBQVNMLElBQUt1TSxFQUFNSSxLQUt0
QixRQUFTQyxJQUFVdHFCLEVBQUtpcUIsR0FDdkIsR0FBSWxvQixHQUFXa29CLEVBQUtsb0IsU0FB
U0MsYUFHWCxXQUFiRCxHQUF3QmdmLEdBQWU1WCxLQUFNbkosRUFBSW1CLE1BQ3JEOG9CLEVBQUs3
WSxRQUFVcFIsRUFBSW9SLFFBR0ssVUFBYnJQLEdBQXFDLGFBQWJBLElBQ25Da29CLEVBQUszVSxh
QUFldFYsRUFBSXNWLGNBSTFCLFFBQVNpVixJQUFVQyxFQUFZdm5CLEVBQU1sRSxFQUFVdWpCLEdB
RzlDcmYsRUFBT2pILEVBQU9tRCxTQUFXOEQsRUFFekIsSUFBSXVmLEdBQVVuakIsRUFBTytpQixF
QUFTcUksRUFBWXBmLEVBQU14TyxFQUMvQ3FDLEVBQUksRUFDSjRYLEVBQUkwVCxFQUFXbnNCLE9B
Q2Zxc0IsRUFBVzVULEVBQUksRUFDZmpVLEVBQVFJLEVBQU0sR0FDZDNDLEVBQWFoRCxFQUFPZ0Qs
V0FBWXVDLEVBR2pDLElBQUt2QyxHQUNEd1csRUFBSSxHQUFzQixnQkFBVmpVLEtBQ2hCbkcsRUFB
UW9tQixZQUFjMkcsR0FBU3RnQixLQUFNdEcsR0FDeEMsTUFBTzJuQixHQUFXMXJCLEtBQU0sU0FB
VWtZLEdBQ2pDLEdBQUlaLEdBQU9vVSxFQUFXbHJCLEdBQUkwWCxFQUNyQjFXLEtBQ0oyQyxFQUFN
LEdBQU1KLEVBQU1wRyxLQUFNaEIsS0FBTXViLEVBQU9aLEVBQUt1VSxTQUUzQ0osR0FBVW5VLEVB
QU1uVCxFQUFNbEUsRUFBVXVqQixJQUlsQyxJQUFLeEwsSUFDSjBMLEVBQVdMLEdBQWVsZixFQUFN
dW5CLEVBQVksR0FBSTVoQixlQUFlLEVBQU80aEIsRUFBWWxJLEdBQ2xGampCLEVBQVFtakIsRUFB
U3RVLFdBRW1CLElBQS9Cc1UsRUFBU3ZhLFdBQVc1SixTQUN4Qm1rQixFQUFXbmpCLEdBSVBBLEdB
QVNpakIsR0FBVSxDQU92QixJQU5BRixFQUFVOWtCLEVBQU8wQixJQUFLK2lCLEdBQVFTLEVBQVUs
VUFBWXNILElBQ3BEVyxFQUFhckksRUFBUS9qQixPQUtiYSxFQUFJNFgsRUFBRzVYLElBQ2RtTSxF
QUFPbVgsRUFFRnRqQixJQUFNd3JCLElBQ1ZyZixFQUFPL04sRUFBTzZDLE1BQU9rTCxHQUFNLEdB
QU0sR0FHNUJvZixHQUlKbnRCLEVBQU9zQixNQUFPd2pCLEVBQVNMLEdBQVExVyxFQUFNLFlBSXZD
dE0sRUFBU3RDLEtBQU0rdEIsRUFBWXRyQixHQUFLbU0sRUFBTW5NLEVBR3ZDLElBQUt1ckIsRUFP
SixJQU5BNXRCLEVBQU11bEIsRUFBU0EsRUFBUS9qQixPQUFTLEdBQUl1SyxjQUdwQ3RMLEVBQU8w
QixJQUFLb2pCLEVBQVMySCxJQUdmN3FCLEVBQUksRUFBR0EsRUFBSXVyQixFQUFZdnJCLElBQzVC
bU0sRUFBTytXLEVBQVNsakIsR0FDWCtoQixHQUFZOVgsS0FBTWtDLEVBQUtsSyxNQUFRLE1BQ2xD
MmMsRUFBU2YsT0FBUTFSLEVBQU0sZUFDeEIvTixFQUFPZ0gsU0FBVXpILEVBQUt3TyxLQUVqQkEs
RUFBS3JMLElBR0oxQyxFQUFPc3RCLFVBQ1h0dEIsRUFBT3N0QixTQUFVdmYsRUFBS3JMLEtBR3ZC
ckQsRUFBUzBPLEVBQUs0QyxZQUFZcE4sUUFBUzhvQixHQUFjLElBQU05c0IsSUFRN0QsTUFBTzJ0
QixHQUdSLFFBQVM5UixJQUFRelosRUFBTTFCLEVBQVVzdEIsR0FLaEMsSUFKQSxHQUFJeGYsR0FD
SHFYLEVBQVFubEIsRUFBV0QsRUFBTzBPLE9BQVF6TyxFQUFVMEIsR0FBU0EsRUFDckRDLEVBQUks
RUFFNEIsT0FBdkJtTSxFQUFPcVgsRUFBT3hqQixJQUFlQSxJQUNoQzJyQixHQUE4QixJQUFsQnhm
LEVBQUtuRCxVQUN0QjVLLEVBQU93dEIsVUFBVy9JLEdBQVExVyxJQUd0QkEsRUFBS2xPLGFBQ0ow
dEIsR0FBWXZ0QixFQUFPZ0gsU0FBVStHLEVBQUt6QyxjQUFleUMsSUFDckQyVyxHQUFlRCxHQUFR
MVcsRUFBTSxXQUU5QkEsRUFBS2xPLFdBQVdDLFlBQWFpTyxHQUkvQixPQUFPcE0sR0FHUjNCLEVB
QU91QyxRQUNOOGlCLGNBQWUsU0FBVWdJLEdBQ3hCLE1BQU9BLEdBQUs5cEIsUUFBUzBvQixHQUFX
LGNBR2pDcHBCLE1BQU8sU0FBVWxCLEVBQU04ckIsRUFBZUMsR0FDckMsR0FBSTlyQixHQUFHNFgs
RUFBR21VLEVBQWFDLEVBQ3RCL3FCLEVBQVFsQixFQUFLOGpCLFdBQVcsR0FDeEJvSSxFQUFTN3RC
LEVBQU9nSCxTQUFVckYsRUFBSzJKLGNBQWUzSixFQUcvQyxNQUFNdkMsRUFBUXNtQixnQkFBc0Ms
SUFBbEIvakIsRUFBS2lKLFVBQW9DLEtBQWxCakosRUFBS2lKLFVBQzNENUssRUFBT2tZLFNBQVV2
VyxJQU1uQixJQUhBaXNCLEVBQWVuSixHQUFRNWhCLEdBQ3ZCOHFCLEVBQWNsSixHQUFROWlCLEdB
RWhCQyxFQUFJLEVBQUc0WCxFQUFJbVUsRUFBWTVzQixPQUFRYSxFQUFJNFgsRUFBRzVYLElBQzND
b3JCLEdBQVVXLEVBQWEvckIsR0FBS2dzQixFQUFjaHNCLEdBSzVDLElBQUs2ckIsRUFDSixHQUFL
QyxFQUlKLElBSEFDLEVBQWNBLEdBQWVsSixHQUFROWlCLEdBQ3JDaXNCLEVBQWVBLEdBQWdCbkos
R0FBUTVoQixHQUVqQ2pCLEVBQUksRUFBRzRYLEVBQUltVSxFQUFZNXNCLE9BQVFhLEVBQUk0WCxF
QUFHNVgsSUFDM0M4cUIsR0FBZ0JpQixFQUFhL3JCLEdBQUtnc0IsRUFBY2hzQixRQUdqRDhxQixJ
QUFnQi9xQixFQUFNa0IsRUFXeEIsT0FOQStxQixHQUFlbkosR0FBUTVoQixFQUFPLFVBQ3pCK3FC
LEVBQWE3c0IsT0FBUyxHQUMxQjJqQixHQUFla0osR0FBZUMsR0FBVXBKLEdBQVE5aUIsRUFBTSxX
QUloRGtCLEdBR1IycUIsVUFBVyxTQUFVcHNCLEdBS3BCLElBSkEsR0FBSWlmLEdBQU0xZSxFQUFN
a0MsRUFDZnlaLEVBQVV0ZCxFQUFPc21CLE1BQU1oSixRQUN2QjFiLEVBQUksRUFFNkJ1QixVQUF4
QnhCLEVBQU9QLEVBQU9RLElBQXFCQSxJQUM1QyxHQUFLa2UsRUFBWW5lLEdBQVMsQ0FDekIsR0FB
TzBlLEVBQU8xZSxFQUFNNmUsRUFBU3BkLFNBQWMsQ0FDMUMsR0FBS2lkLEVBQUtxRyxPQUNULElB
QU03aUIsSUFBUXdjLEdBQUtxRyxPQUNicEosRUFBU3paLEdBQ2I3RCxFQUFPc21CLE1BQU1sTCxP
QUFRelosRUFBTWtDLEdBSTNCN0QsRUFBTzRuQixZQUFham1CLEVBQU1rQyxFQUFNd2MsRUFBSzRH
LE9BT3hDdGxCLEdBQU02ZSxFQUFTcGQsU0FBWUQsT0FFdkJ4QixFQUFNOGUsRUFBU3JkLFdBSW5C
ekIsRUFBTThlLEVBQVNyZCxTQUFZRCxZQU9oQ25ELEVBQU9HLEdBQUdvQyxRQUNUdXJCLE9BQVEs
U0FBVTd0QixHQUNqQixNQUFPbWIsSUFBUWpkLEtBQU04QixHQUFVLElBR2hDbWIsT0FBUSxTQUFV
bmIsR0FDakIsTUFBT21iLElBQVFqZCxLQUFNOEIsSUFHdEJQLEtBQU0sU0FBVTZGLEdBQ2YsTUFB
T2thLEdBQVF0aEIsS0FBTSxTQUFVb0gsR0FDOUIsTUFBaUJwQyxVQUFWb0MsRUFDTnZGLEVBQU9O
LEtBQU12QixNQUNiQSxLQUFLOFYsUUFBUXpTLEtBQU0sV0FDSyxJQUFsQnJELEtBQUt5TSxVQUFv
QyxLQUFsQnpNLEtBQUt5TSxVQUFxQyxJQUFsQnpNLEtBQUt5TSxXQUN4RHpNLEtBQUt3UyxZQUFj
cEwsTUFHcEIsS0FBTUEsRUFBT3pELFVBQVVmLFNBRzNCZ3RCLE9BQVEsV0FDUCxNQUFPZCxJQUFV
OXVCLEtBQU0yRCxVQUFXLFNBQVVILEdBQzNDLEdBQXVCLElBQWxCeEQsS0FBS3lNLFVBQW9DLEtB
QWxCek0sS0FBS3lNLFVBQXFDLElBQWxCek0sS0FBS3lNLFNBQWlCLENBQ3pFLEdBQUk5SCxHQUFT
d3BCLEdBQW9CbnVCLEtBQU13RCxFQUN2Q21CLEdBQU9sRCxZQUFhK0IsT0FLdkJxc0IsUUFBUyxX
QUNSLE1BQU9mLElBQVU5dUIsS0FBTTJELFVBQVcsU0FBVUgsR0FDM0MsR0FBdUIsSUFBbEJ4RCxL
QUFLeU0sVUFBb0MsS0FBbEJ6TSxLQUFLeU0sVUFBcUMsSUFBbEJ6TSxLQUFLeU0sU0FBaUIsQ0FD
ekUsR0FBSTlILEdBQVN3cEIsR0FBb0JudUIsS0FBTXdELEVBQ3ZDbUIsR0FBT21yQixhQUFjdHNC
LEVBQU1tQixFQUFPOE4sZ0JBS3JDc2QsT0FBUSxXQUNQLE1BQU9qQixJQUFVOXVCLEtBQU0yRCxV
QUFXLFNBQVVILEdBQ3RDeEQsS0FBSzBCLFlBQ1QxQixLQUFLMEIsV0FBV291QixhQUFjdHNCLEVB
QU14RCxTQUt2Q2d3QixNQUFPLFdBQ04sTUFBT2xCLElBQVU5dUIsS0FBTTJELFVBQVcsU0FBVUgs
R0FDdEN4RCxLQUFLMEIsWUFDVDFCLEtBQUswQixXQUFXb3VCLGFBQWN0c0IsRUFBTXhELEtBQUtt
UCxnQkFLNUMyRyxNQUFPLFdBSU4sSUFIQSxHQUFJdFMsR0FDSEMsRUFBSSxFQUUyQixPQUF0QkQs
RUFBT3hELEtBQU15RCxJQUFlQSxJQUNkLElBQWxCRCxFQUFLaUosV0FHVDVLLEVBQU93dEIsVUFB
Vy9JLEdBQVE5aUIsR0FBTSxJQUdoQ0EsRUFBS2dQLFlBQWMsR0FJckIsT0FBT3hTLE9BR1IwRSxN
QUFPLFNBQVU0cUIsRUFBZUMsR0FJL0IsTUFIQUQsR0FBaUMsTUFBakJBLEdBQWdDQSxFQUNoREMs
RUFBeUMsTUFBckJBLEVBQTRCRCxFQUFnQkMsRUFFekR2dkIsS0FBS3VELElBQUssV0FDaEIsTUFB
TzFCLEdBQU82QyxNQUFPMUUsS0FBTXN2QixFQUFlQyxNQUk1Q0wsS0FBTSxTQUFVOW5CLEdBQ2Ys
TUFBT2thLEdBQVF0aEIsS0FBTSxTQUFVb0gsR0FDOUIsR0FBSTVELEdBQU94RCxLQUFNLE9BQ2hC
eUQsRUFBSSxFQUNKNFgsRUFBSXJiLEtBQUs0QyxNQUVWLElBQWVvQyxTQUFWb0MsR0FBeUMsSUFB
bEI1RCxFQUFLaUosU0FDaEMsTUFBT2pKLEdBQUtvTixTQUliLElBQXNCLGdCQUFWeEosS0FBdUIy
bUIsR0FBYXJnQixLQUFNdEcsS0FDcERxZSxJQUFXRixHQUFTblksS0FBTWhHLEtBQWEsR0FBSSxL
QUFRLEdBQUliLGVBQWtCLENBRTFFYSxFQUFRdkYsRUFBT3FsQixjQUFlOWYsRUFFOUIsS0FDQyxL
QUFRM0QsRUFBSTRYLEVBQUc1WCxJQUNkRCxFQUFPeEQsS0FBTXlELE9BR1UsSUFBbEJELEVBQUtp
SixXQUNUNUssRUFBT3d0QixVQUFXL0ksR0FBUTlpQixHQUFNLElBQ2hDQSxFQUFLb04sVUFBWXhK
LEVBSW5CNUQsR0FBTyxFQUdOLE1BQVFrSixLQUdObEosR0FDSnhELEtBQUs4VixRQUFROFosT0FB
UXhvQixJQUVwQixLQUFNQSxFQUFPekQsVUFBVWYsU0FHM0JxdEIsWUFBYSxXQUNaLEdBQUlwSixL
QUdKLE9BQU9pSSxJQUFVOXVCLEtBQU0yRCxVQUFXLFNBQVVILEdBQzNDLEdBQUkyUSxHQUFTblUs
S0FBSzBCLFVBRWJHLEdBQU8rRSxRQUFTNUcsS0FBTTZtQixHQUFZLElBQ3RDaGxCLEVBQU93dEIs
VUFBVy9JLEdBQVF0bUIsT0FDckJtVSxHQUNKQSxFQUFPK2IsYUFBYzFzQixFQUFNeEQsUUFLM0I2
bUIsTUFJTGhsQixFQUFPd0IsTUFDTjhzQixTQUFVLFNBQ1ZDLFVBQVcsVUFDWE4sYUFBYyxTQUNk
TyxZQUFhLFFBQ2JDLFdBQVksZUFDVixTQUFVaHNCLEVBQU1pc0IsR0FDbEIxdUIsRUFBT0csR0FB
SXNDLEdBQVMsU0FBVXhDLEdBTzdCLElBTkEsR0FBSW1CLEdBQ0hDLEtBQ0FzdEIsRUFBUzN1QixF
QUFRQyxHQUNqQmdDLEVBQU8wc0IsRUFBTzV0QixPQUFTLEVBQ3ZCYSxFQUFJLEVBRUdBLEdBQUtL
LEVBQU1MLElBQ2xCUixFQUFRUSxJQUFNSyxFQUFPOUQsS0FBT0EsS0FBSzBFLE9BQU8sR0FDeEM3
QyxFQUFRMnVCLEVBQVEvc0IsSUFBTzhzQixHQUFZdHRCLEdBSW5DekMsRUFBS2tELE1BQU9SLEVB
QUtELEVBQU1ILE1BR3hCLE9BQU85QyxNQUFLZ0QsVUFBV0UsS0FHekIsSUFBSXV0QixJQUFVLFVB
RVZDLEdBQVksR0FBSXptQixRQUFRLEtBQU93WixFQUFPLGtCQUFtQixLQUV6RGtOLEdBQVksU0FB
VW50QixHQUt4QixHQUFJK29CLEdBQU8vb0IsRUFBSzJKLGNBQWM0QyxXQU05QixPQUpNd2MsSUFB
U0EsRUFBS3FFLFNBQ25CckUsRUFBT3hzQixHQUdEd3NCLEVBQUtzRSxpQkFBa0JydEIsS0FLaEMs
V0FJQyxRQUFTc3RCLEtBR1IsR0FBTTFKLEVBQU4sQ0FJQUEsRUFBSXRELE1BQU1pTixRQUNULDRH
QUlEM0osRUFBSXhXLFVBQVksR0FDaEJqQixHQUFnQmxPLFlBQWF1dkIsRUFFN0IsSUFBSUMsR0FB
V2x4QixFQUFPOHdCLGlCQUFrQnpKLEVBQ3hDOEosR0FBb0MsT0FBakJELEVBQVNqaEIsSUFHNUJt
aEIsRUFBZ0QsUUFBeEJGLEVBQVNHLFdBQ2pDQyxFQUEwQyxRQUFuQkosRUFBU0ssTUFJaENsSyxF
QUFJdEQsTUFBTXlOLFlBQWMsTUFDeEJDLEVBQStDLFFBQXpCUCxFQUFTTSxZQUUvQjVoQixHQUFn
QmhPLFlBQWFxdkIsR0FJN0I1SixFQUFNLE1BR1AsR0FBSThKLEdBQWtCRyxFQUFzQkcsRUFBcUJM
LEVBQ2hFSCxFQUFZcHhCLEVBQVMwQixjQUFlLE9BQ3BDOGxCLEVBQU14bkIsRUFBUzBCLGNBQWUs
TUFHekI4bEIsR0FBSXRELFFBTVZzRCxFQUFJdEQsTUFBTTJOLGVBQWlCLGNBQzNCckssRUFBSUUs
V0FBVyxHQUFPeEQsTUFBTTJOLGVBQWlCLEdBQzdDeHdCLEVBQVF5d0IsZ0JBQStDLGdCQUE3QnRL
LEVBQUl0RCxNQUFNMk4sZUFFcENULEVBQVVsTixNQUFNaU4sUUFBVSw0RkFFMUJDLEVBQVV2dkIs
WUFBYTJsQixHQUV2QnZsQixFQUFPdUMsT0FBUW5ELEdBQ2Qwd0IsY0FBZSxXQUVkLE1BREFiLEtB
Q09JLEdBRVJVLGtCQUFtQixXQUVsQixNQURBZCxLQUNPTyxHQUVSUSxpQkFBa0IsV0FFakIsTUFE
QWYsS0FDT1UsR0FFUk0sbUJBQW9CLFdBRW5CLE1BREFoQixLQUNPSyxRQU1WLFNBQVNZLElBQVF2
dUIsRUFBTWMsRUFBTTB0QixHQUM1QixHQUFJVixHQUFPVyxFQUFVQyxFQUFVaHZCLEVBQzlCNGdC
LEVBQVF0Z0IsRUFBS3NnQixLQW9DZCxPQWxDQWtPLEdBQVdBLEdBQVlyQixHQUFXbnRCLEdBSTdC
d3VCLElBQ0o5dUIsRUFBTTh1QixFQUFTRyxpQkFBa0I3dEIsSUFBVTB0QixFQUFVMXRCLEdBRXhD
LEtBQVJwQixHQUFlckIsRUFBT2dILFNBQVVyRixFQUFLMkosY0FBZTNKLEtBQ3hETixFQUFNckIs
RUFBT2lpQixNQUFPdGdCLEVBQU1jLEtBUXJCckQsRUFBUTR3QixvQkFBc0JuQixHQUFVaGpCLEtB
QU14SyxJQUFTdXRCLEdBQVEvaUIsS0FBTXBKLEtBRzFFZ3RCLEVBQVF4TixFQUFNd04sTUFDZFcs
RUFBV25PLEVBQU1tTyxTQUNqQkMsRUFBV3BPLEVBQU1vTyxTQUdqQnBPLEVBQU1tTyxTQUFXbk8s
RUFBTW9PLFNBQVdwTyxFQUFNd04sTUFBUXB1QixFQUNoREEsRUFBTTh1QixFQUFTVixNQUdmeE4s
RUFBTXdOLE1BQVFBLEVBQ2R4TixFQUFNbU8sU0FBV0EsRUFDakJuTyxFQUFNb08sU0FBV0EsSUFJ
Smx0QixTQUFSOUIsRUFJTkEsRUFBTSxHQUNOQSxFQUlGLFFBQVNrdkIsSUFBY0MsRUFBYUMsR0FH
bkMsT0FDQ3h2QixJQUFLLFdBQ0osTUFBS3V2QixnQkFJR3J5QixNQUFLOEMsS0FLSjlDLEtBQUs4
QyxJQUFNd3ZCLEdBQVM1dUIsTUFBTzFELEtBQU0yRCxhQU03QyxHQUtDNHVCLElBQWUsNEJBQ2ZD
LElBQVlDLFNBQVUsV0FBWUMsV0FBWSxTQUFVM08sUUFBUyxTQUNqRTRPLElBQ0NDLGNBQWUsSUFD
ZkMsV0FBWSxPQUdiQyxJQUFnQixTQUFVLE1BQU8sTUFDakNDLEdBQWFuekIsRUFBUzBCLGNBQWUs
T0FBUXdpQixLQUc5QyxTQUFTa1AsSUFBZ0IxdUIsR0FHeEIsR0FBS0EsSUFBUXl1QixJQUNaLE1B
QU96dUIsRUFJUixJQUFJMnVCLEdBQVUzdUIsRUFBTSxHQUFJOUIsY0FBZ0I4QixFQUFLaEUsTUFB
TyxHQUNuRG1ELEVBQUlxdkIsR0FBWWx3QixNQUVqQixPQUFRYSxJQUVQLEdBREFhLEVBQU93dUIs
R0FBYXJ2QixHQUFNd3ZCLEVBQ3JCM3VCLElBQVF5dUIsSUFDWixNQUFPenVCLEdBS1YsUUFBUzR1
QixJQUFtQjF2QixFQUFNNEQsRUFBTytyQixHQUl4QyxHQUFJbHNCLEdBQVUwYyxHQUFRdlcsS0FB
TWhHLEVBQzVCLE9BQU9ILEdBR04vQixLQUFLa3VCLElBQUssRUFBR25zQixFQUFTLElBQVFrc0Is
R0FBWSxLQUFVbHNCLEVBQVMsSUFBTyxNQUNwRUcsRUFHRixRQUFTaXNCLElBQXNCN3ZCLEVBQU1j
LEVBQU1ndkIsRUFBT0MsRUFBYUMsR0FDOUQsR0FBSS92QixHQUNIdU8sRUFBTSxDQVdQLEtBUEN2
TyxFQURJNnZCLEtBQVlDLEVBQWMsU0FBVyxXQUNyQyxFQUlTLFVBQVRqdkIsRUFBbUIsRUFBSSxF
QUdwQmIsRUFBSSxFQUFHQSxHQUFLLEVBR0osV0FBVjZ2QixJQUNKdGhCLEdBQU9uUSxFQUFPbWlC
LElBQUt4Z0IsRUFBTTh2QixFQUFRMVAsR0FBV25nQixJQUFLLEVBQU0rdkIsSUFHbkRELEdBR1cs
WUFBVkQsSUFDSnRoQixHQUFPblEsRUFBT21pQixJQUFLeGdCLEVBQU0sVUFBWW9nQixHQUFXbmdC
LElBQUssRUFBTSt2QixJQUk3QyxXQUFWRixJQUNKdGhCLEdBQU9uUSxFQUFPbWlCLElBQUt4Z0Is
RUFBTSxTQUFXb2dCLEdBQVduZ0IsR0FBTSxTQUFTLEVBQU0rdkIsTUFLckV4aEIsR0FBT25RLEVB
QU9taUIsSUFBS3hnQixFQUFNLFVBQVlvZ0IsR0FBV25nQixJQUFLLEVBQU0rdkIsR0FHNUMsWUFB
VkYsSUFDSnRoQixHQUFPblEsRUFBT21pQixJQUFLeGdCLEVBQU0sU0FBV29nQixHQUFXbmdCLEdB
QU0sU0FBUyxFQUFNK3ZCLElBS3ZFLE9BQU94aEIsR0FHUixRQUFTeWhCLElBQWtCandCLEVBQU1j
LEVBQU1ndkIsR0FHdEMsR0FBSXRoQixHQUNIMGhCLEdBQW1CLEVBQ25CRixFQUFTN0MsR0FBV250
QixHQUNwQit2QixFQUFpRSxlQUFuRDF4QixFQUFPbWlCLElBQUt4Z0IsRUFBTSxhQUFhLEVBQU9n
d0IsRUFZckQsSUFQS2h3QixFQUFLbXdCLGlCQUFpQi93QixTQUMxQm9QLEVBQU14TyxFQUFLb3dC
LHdCQUF5QnR2QixJQU1oQzBOLEdBQU8sR0FBWSxNQUFQQSxFQUFjLENBUzlCLEdBTkFBLEVBQU0r
ZixHQUFRdnVCLEVBQU1jLEVBQU1rdkIsSUFDckJ4aEIsRUFBTSxHQUFZLE1BQVBBLEtBQ2ZBLEVB
QU14TyxFQUFLc2dCLE1BQU94ZixJQUlkb3NCLEdBQVVoakIsS0FBTXNFLEdBQ3BCLE1BQU9BLEVB
S1IwaEIsR0FBbUJILElBQ2hCdHlCLEVBQVEyd0IscUJBQXVCNWYsSUFBUXhPLEVBQUtzZ0IsTUFB
T3hmLElBR3REME4sRUFBTWpNLFdBQVlpTSxJQUFTLEVBSTVCLE1BQVNBLEdBQ1JxaEIsR0FDQzd2
QixFQUNBYyxFQUNBZ3ZCLElBQVdDLEVBQWMsU0FBVyxXQUNwQ0csRUFDQUYsR0FFRSxLQUdMM3hC
LEVBQU91QyxRQUlOeXZCLFVBQ0NDLFNBQ0NoeEIsSUFBSyxTQUFVVSxFQUFNd3VCLEdBQ3BCLEdB
QUtBLEVBQVcsQ0FHZixHQUFJOXVCLEdBQU02dUIsR0FBUXZ1QixFQUFNLFVBQ3hCLE9BQWUsS0FB
Uk4sRUFBYSxJQUFNQSxNQU85QjBoQixXQUNDbVAseUJBQTJCLEVBQzNCQyxhQUFlLEVBQ2ZDLGFB
QWUsRUFDZkMsVUFBWSxFQUNaQyxZQUFjLEVBQ2R0QixZQUFjLEVBQ2R1QixZQUFjLEVBQ2ROLFNB
QVcsRUFDWE8sT0FBUyxFQUNUQyxTQUFXLEVBQ1hDLFFBQVUsRUFDVkMsUUFBVSxFQUNWQyxNQUFR
LEdBS1RDLFVBQ0NDLFFBQVMsWUFJVjdRLE1BQU8sU0FBVXRnQixFQUFNYyxFQUFNOEMsRUFBT2tz
QixHQUduQyxHQUFNOXZCLEdBQTBCLElBQWxCQSxFQUFLaUosVUFBb0MsSUFBbEJqSixFQUFLaUos
VUFBbUJqSixFQUFLc2dCLE1BQWxFLENBS0EsR0FBSTVnQixHQUFLd0MsRUFBTXdkLEVBQ2QwUixF
QUFXL3lCLEVBQU91RSxVQUFXOUIsR0FDN0J3ZixFQUFRdGdCLEVBQUtzZ0IsS0FTZCxPQVBBeGYs
R0FBT3pDLEVBQU82eUIsU0FBVUUsS0FDckIveUIsRUFBTzZ5QixTQUFVRSxHQUFhNUIsR0FBZ0I0
QixJQUFjQSxHQUcvRDFSLEVBQVFyaEIsRUFBT2d5QixTQUFVdnZCLElBQVV6QyxFQUFPZ3lCLFNB
QVVlLEdBR3JDNXZCLFNBQVZvQyxFQW9DQzhiLEdBQVMsT0FBU0EsSUFDd0JsZSxVQUE1QzlCLEVB
QU1nZ0IsRUFBTXBnQixJQUFLVSxHQUFNLEVBQU84dkIsSUFFekJwd0IsRUFJRDRnQixFQUFPeGYs
SUExQ2RvQixRQUFjMEIsR0FHQSxXQUFUMUIsSUFBdUJ4QyxFQUFNeWdCLEdBQVF2VyxLQUFNaEcs
S0FBYWxFLEVBQUssS0FDakVrRSxFQUFRK2MsR0FBVzNnQixFQUFNYyxFQUFNcEIsR0FHL0J3QyxF
QUFPLFVBSU0sTUFBVDBCLEdBQWlCQSxJQUFVQSxJQUtsQixXQUFUMUIsSUFDSjBCLEdBQVNsRSxH
QUFPQSxFQUFLLEtBQVNyQixFQUFPK2lCLFVBQVdnUSxHQUFhLEdBQUssT0FJN0QzekIsRUFBUXl3
QixpQkFBNkIsS0FBVnRxQixHQUFpRCxJQUFqQzlDLEVBQUs3RCxRQUFTLGdCQUM5RHFqQixFQUFP
eGYsR0FBUyxXQUlYNGUsR0FBWSxPQUFTQSxJQUNzQmxlLFVBQTlDb0MsRUFBUThiLEVBQU1qQixJ
QUFLemUsRUFBTTRELEVBQU9rc0IsTUFFbEN4UCxFQUFPeGYsR0FBUzhDLElBbEJqQixVQW1DRjRj
LElBQUssU0FBVXhnQixFQUFNYyxFQUFNZ3ZCLEVBQU9FLEdBQ2pDLEdBQUl4aEIsR0FBS2pQLEVB
QUttZ0IsRUFDYjBSLEVBQVcveUIsRUFBT3VFLFVBQVc5QixFQXlCOUIsT0F0QkFBLEdBQU96QyxF
QUFPNnlCLFNBQVVFLEtBQ3JCL3lCLEVBQU82eUIsU0FBVUUsR0FBYTVCLEdBQWdCNEIsSUFBY0Es
R0FHL0QxUixFQUFRcmhCLEVBQU9neUIsU0FBVXZ2QixJQUFVekMsRUFBT2d5QixTQUFVZSxHQUcv
QzFSLEdBQVMsT0FBU0EsS0FDdEJsUixFQUFNa1IsRUFBTXBnQixJQUFLVSxHQUFNLEVBQU04dkIs
SUFJakJ0dUIsU0FBUmdOLElBQ0pBLEVBQU0rZixHQUFRdnVCLEVBQU1jLEVBQU1rdkIsSUFJZCxX
QUFSeGhCLEdBQW9CMU4sSUFBUXF1QixNQUNoQzNnQixFQUFNMmdCLEdBQW9CcnVCLElBSVosS0FB
Vmd2QixHQUFnQkEsR0FDcEJ2d0IsRUFBTWdELFdBQVlpTSxHQUNYc2hCLEtBQVUsR0FBUXVCLFNB
QVU5eEIsR0FBUUEsR0FBTyxFQUFJaVAsR0FFaERBLEtBSVRuUSxFQUFPd0IsTUFBUSxTQUFVLFNB
QVcsU0FBVUksRUFBR2EsR0FDaER6QyxFQUFPZ3lCLFNBQVV2dkIsSUFDaEJ4QixJQUFLLFNBQVVV
LEVBQU13dUIsRUFBVXNCLEdBQzlCLEdBQUt0QixFQUlKLE9BQU9PLEdBQWE3a0IsS0FBTTdMLEVB
QU9taUIsSUFBS3hnQixFQUFNLGFBUXhDQSxFQUFLbXdCLGlCQUFpQi93QixRQUFXWSxFQUFLb3dC
LHdCQUF3QnRDLE1BSWhFbUMsR0FBa0Jqd0IsRUFBTWMsRUFBTWd2QixHQUg5QnJQLEdBQU16Z0Is
RUFBTWd2QixHQUFTLFdBQ3BCLE1BQU9pQixJQUFrQmp3QixFQUFNYyxFQUFNZ3ZCLE1BTTFDclIs
SUFBSyxTQUFVemUsRUFBTTRELEVBQU9rc0IsR0FDM0IsR0FBSXJzQixHQUNIdXNCLEVBQVNGLEdB
QVMzQyxHQUFXbnRCLEdBQzdCMnZCLEVBQVdHLEdBQVNELEdBQ25CN3ZCLEVBQ0FjLEVBQ0FndkIs
RUFDbUQsZUFBbkR6eEIsRUFBT21pQixJQUFLeGdCLEVBQU0sYUFBYSxFQUFPZ3dCLEdBQ3RDQSxF
QVdGLE9BUEtMLEtBQWNsc0IsRUFBVTBjLEdBQVF2VyxLQUFNaEcsS0FDYixRQUEzQkgsRUFBUyxJ
QUFPLFFBRWxCekQsRUFBS3NnQixNQUFPeGYsR0FBUzhDLEVBQ3JCQSxFQUFRdkYsRUFBT21pQixJ
QUFLeGdCLEVBQU1jLElBR3BCNHVCLEdBQW1CMXZCLEVBQU00RCxFQUFPK3JCLE9BSzFDdHhCLEVB
QU9neUIsU0FBU3pDLFdBQWFnQixHQUFjbnhCLEVBQVE2d0IsbUJBQ2xELFNBQVV0dUIsRUFBTXd1
QixHQUNmLEdBQUtBLEVBQ0osT0FBU2pzQixXQUFZZ3NCLEdBQVF2dUIsRUFBTSxnQkFDbENBLEVB
QUtvd0Isd0JBQXdCa0IsS0FDNUI3USxHQUFNemdCLEdBQVE0dEIsV0FBWSxHQUFLLFdBQzlCLE1B
QU81dEIsR0FBS293Qix3QkFBd0JrQixRQUVsQyxPQU1SanpCLEVBQU93QixNQUNOMHhCLE9BQVEs
R0FDUkMsUUFBUyxHQUNUQyxPQUFRLFNBQ04sU0FBVUMsRUFBUUMsR0FDcEJ0ekIsRUFBT2d5QixT
QUFVcUIsRUFBU0MsSUFDekJDLE9BQVEsU0FBVWh1QixHQU9qQixJQU5BLEdBQUkzRCxHQUFJLEVB
Q1A0eEIsS0FHQUMsRUFBeUIsZ0JBQVZsdUIsR0FBcUJBLEVBQU1TLE1BQU8sTUFBVVQsR0FFcEQz
RCxFQUFJLEVBQUdBLElBQ2Q0eEIsRUFBVUgsRUFBU3RSLEdBQVduZ0IsR0FBTTB4QixHQUNuQ0cs
RUFBTzd4QixJQUFPNnhCLEVBQU83eEIsRUFBSSxJQUFPNnhCLEVBQU8sRUFHekMsT0FBT0QsS0FJ
SDVFLEdBQVEvaUIsS0FBTXduQixLQUNuQnJ6QixFQUFPZ3lCLFNBQVVxQixFQUFTQyxHQUFTbFQs
SUFBTWlSLE1BSTNDcnhCLEVBQU9HLEdBQUdvQyxRQUNUNGYsSUFBSyxTQUFVMWYsRUFBTThDLEdB
Q3BCLE1BQU9rYSxHQUFRdGhCLEtBQU0sU0FBVXdELEVBQU1jLEVBQU04QyxHQUMxQyxHQUFJb3NC
LEdBQVF6dkIsRUFDWFIsS0FDQUUsRUFBSSxDQUVMLElBQUs1QixFQUFPa0QsUUFBU1QsR0FBUyxD
QUk3QixJQUhBa3ZCLEVBQVM3QyxHQUFXbnRCLEdBQ3BCTyxFQUFNTyxFQUFLMUIsT0FFSGEsRUFB
SU0sRUFBS04sSUFDaEJGLEVBQUtlLEVBQU1iLElBQVE1QixFQUFPbWlCLElBQUt4Z0IsRUFBTWMs
RUFBTWIsSUFBSyxFQUFPK3ZCLEVBR3hELE9BQU9qd0IsR0FHUixNQUFpQnlCLFVBQVZvQyxFQUNO
dkYsRUFBT2lpQixNQUFPdGdCLEVBQU1jLEVBQU04QyxHQUMxQnZGLEVBQU9taUIsSUFBS3hnQixF
QUFNYyxJQUNqQkEsRUFBTThDLEVBQU96RCxVQUFVZixPQUFTLE1BT3JDZixFQUFPRyxHQUFHdXpC
LE1BQVEsU0FBVUMsRUFBTTl2QixHQUlqQyxNQUhBOHZCLEdBQU8zekIsRUFBTzR6QixHQUFLNXpC
LEVBQU80ekIsR0FBR0MsT0FBUUYsSUFBVUEsRUFBT0EsRUFDdEQ5dkIsRUFBT0EsR0FBUSxLQUVS
MUYsS0FBSzRjLE1BQU9sWCxFQUFNLFNBQVU2RyxFQUFNMlcsR0FDeEMsR0FBSXlTLEdBQVU1MUIs
RUFBTytmLFdBQVl2VCxFQUFNaXBCLEVBQ3ZDdFMsR0FBTUUsS0FBTyxXQUNacmpCLEVBQU82MUIs
YUFBY0QsT0FNeEIsV0FDQyxHQUFJOWtCLEdBQVFqUixFQUFTMEIsY0FBZSxTQUNuQzhHLEVBQVN4
SSxFQUFTMEIsY0FBZSxVQUNqQ3UwQixFQUFNenRCLEVBQU8zRyxZQUFhN0IsRUFBUzBCLGNBQWUs
VUFFbkR1UCxHQUFNbkwsS0FBTyxXQUliekUsRUFBUTYwQixRQUEwQixLQUFoQmpsQixFQUFNekos
TUFJeEJuRyxFQUFRODBCLFlBQWNGLEVBQUlqZ0IsU0FJMUIvRSxFQUFRalIsRUFBUzBCLGNBQWUs
U0FDaEN1UCxFQUFNekosTUFBUSxJQUNkeUosRUFBTW5MLEtBQU8sUUFDYnpFLEVBQVErMEIsV0FB
NkIsTUFBaEJubEIsRUFBTXpKLFFBSTVCLElBQUk2dUIsSUFDSG5uQixHQUFhak4sRUFBT2dRLEtB
QUsvQyxVQUUxQmpOLEdBQU9HLEdBQUdvQyxRQUNUMk4sS0FBTSxTQUFVek4sRUFBTThDLEdBQ3JC
LE1BQU9rYSxHQUFRdGhCLEtBQU02QixFQUFPa1EsS0FBTXpOLEVBQU04QyxFQUFPekQsVUFBVWYs
T0FBUyxJQUduRXN6QixXQUFZLFNBQVU1eEIsR0FDckIsTUFBT3RFLE1BQUtxRCxLQUFNLFdBQ2pC
eEIsRUFBT3EwQixXQUFZbDJCLEtBQU1zRSxRQUs1QnpDLEVBQU91QyxRQUNOMk4sS0FBTSxTQUFV
dk8sRUFBTWMsRUFBTThDLEdBQzNCLEdBQUlsRSxHQUFLZ2dCLEVBQ1JpVCxFQUFRM3lCLEVBQUtp
SixRQUdkLElBQWUsSUFBVjBwQixHQUF5QixJQUFWQSxHQUF5QixJQUFWQSxFQUtuQyxNQUFrQyxt
QkFBdEIzeUIsR0FBS21LLGFBQ1Q5TCxFQUFPc2dCLEtBQU0zZSxFQUFNYyxFQUFNOEMsSUFLbEIs
SUFBVit1QixHQUFnQnQwQixFQUFPa1ksU0FBVXZXLEtBQ3JDMGYsRUFBUXJoQixFQUFPdTBCLFVB
QVc5eEIsRUFBS2lDLGlCQUM1QjFFLEVBQU9nUSxLQUFLOUUsTUFBTWpDLEtBQUs0QyxLQUFNcEos
R0FBUzJ4QixHQUFXanhCLFNBR3RDQSxTQUFWb0MsRUFDVyxPQUFWQSxNQUNKdkYsR0FBT3EwQixX
QUFZMXlCLEVBQU1jLEdBSXJCNGUsR0FBUyxPQUFTQSxJQUN1QmxlLFVBQTNDOUIsRUFBTWdnQixF
QUFNakIsSUFBS3plLEVBQU00RCxFQUFPOUMsSUFDekJwQixHQUdSTSxFQUFLb0ssYUFBY3RKLEVB
QU04QyxFQUFRLElBQzFCQSxHQUdIOGIsR0FBUyxPQUFTQSxJQUErQyxRQUFwQ2hnQixFQUFNZ2dC
LEVBQU1wZ0IsSUFBS1UsRUFBTWMsSUFDakRwQixHQUdSQSxFQUFNckIsRUFBTzRPLEtBQUtzQixL
QUFNdk8sRUFBTWMsR0FHaEIsTUFBUHBCLEVBQWM4QixPQUFZOUIsS0FHbENrekIsV0FDQzF3QixN
QUNDdWMsSUFBSyxTQUFVemUsRUFBTTRELEdBQ3BCLElBQU1uRyxFQUFRKzBCLFlBQXdCLFVBQVY1
dUIsR0FDM0J2RixFQUFPeUUsU0FBVTlDLEVBQU0sU0FBWSxDQUNuQyxHQUFJd08sR0FBTXhPLEVB
QUs0RCxLQUtmLE9BSkE1RCxHQUFLb0ssYUFBYyxPQUFReEcsR0FDdEI0SyxJQUNKeE8sRUFBSzRE
LE1BQVE0SyxHQUVQNUssTUFNWDh1QixXQUFZLFNBQVUxeUIsRUFBTTRELEdBQzNCLEdBQUk5QyxH
QUNIYixFQUFJLEVBSUo0eUIsRUFBWWp2QixHQUFTQSxFQUFNMkYsTUFBT29QLEVBRW5DLElBQUtr
YSxHQUErQixJQUFsQjd5QixFQUFLaUosU0FDdEIsTUFBVW5JLEVBQU8reEIsRUFBVzV5QixLQUMz
QkQsRUFBSzBLLGdCQUFpQjVKLE1BTzFCMnhCLElBQ0NoVSxJQUFLLFNBQVV6ZSxFQUFNNEQsRUFB
TzlDLEdBUTNCLE1BUEs4QyxNQUFVLEVBR2R2RixFQUFPcTBCLFdBQVkxeUIsRUFBTWMsR0FFekJk
LEVBQUtvSyxhQUFjdEosRUFBTUEsR0FFbkJBLElBSVR6QyxFQUFPd0IsS0FBTXhCLEVBQU9nUSxL
QUFLOUUsTUFBTWpDLEtBQUs0WSxPQUFPM1csTUFBTyxRQUFVLFNBQVV0SixFQUFHYSxHQUN4RSxH
QUFJZ3lCLEdBQVN4bkIsR0FBWXhLLElBQVV6QyxFQUFPNE8sS0FBS3NCLElBRS9DakQsSUFBWXhL
LEdBQVMsU0FBVWQsRUFBTWMsRUFBTTJELEdBQzFDLEdBQUkvRSxHQUFLNGxCLEVBQ1J5TixFQUFn
Qmp5QixFQUFLaUMsYUFZdEIsT0FWTTBCLEtBR0w2Z0IsRUFBU2hhLEdBQVl5bkIsR0FDckJ6bkIs
R0FBWXluQixHQUFrQnJ6QixFQUM5QkEsRUFBcUMsTUFBL0JvekIsRUFBUTl5QixFQUFNYyxFQUFN
MkQsR0FDekJzdUIsRUFDQSxLQUNEem5CLEdBQVl5bkIsR0FBa0J6TixHQUV4QjVsQixJQU9ULElB
QUlzekIsSUFBYSxzQ0FDaEJDLEdBQWEsZUFFZDUwQixHQUFPRyxHQUFHb0MsUUFDVCtkLEtBQU0s
U0FBVTdkLEVBQU04QyxHQUNyQixNQUFPa2EsR0FBUXRoQixLQUFNNkIsRUFBT3NnQixLQUFNN2Qs
RUFBTThDLEVBQU96RCxVQUFVZixPQUFTLElBR25FOHpCLFdBQVksU0FBVXB5QixHQUNyQixNQUFP
dEUsTUFBS3FELEtBQU0saUJBQ1ZyRCxNQUFNNkIsRUFBTzgwQixRQUFTcnlCLElBQVVBLFFBSzFD
ekMsRUFBT3VDLFFBQ04rZCxLQUFNLFNBQVUzZSxFQUFNYyxFQUFNOEMsR0FDM0IsR0FBSWxFLEdB
QUtnZ0IsRUFDUmlULEVBQVEzeUIsRUFBS2lKLFFBR2QsSUFBZSxJQUFWMHBCLEdBQXlCLElBQVZB
LEdBQXlCLElBQVZBLEVBV25DLE1BUGUsS0FBVkEsR0FBZ0J0MEIsRUFBT2tZLFNBQVV2VyxLQUdy
Q2MsRUFBT3pDLEVBQU84MEIsUUFBU3J5QixJQUFVQSxFQUNqQzRlLEVBQVFyaEIsRUFBTyswQixV
QUFXdHlCLElBR1pVLFNBQVZvQyxFQUNDOGIsR0FBUyxPQUFTQSxJQUN1QmxlLFVBQTNDOUIsRUFB
TWdnQixFQUFNakIsSUFBS3plLEVBQU00RCxFQUFPOUMsSUFDekJwQixFQUdDTSxFQUFNYyxHQUFT
OEMsRUFHcEI4YixHQUFTLE9BQVNBLElBQStDLFFBQXBDaGdCLEVBQU1nZ0IsRUFBTXBnQixJQUFL
VSxFQUFNYyxJQUNqRHBCLEVBR0RNLEVBQU1jLElBR2RzeUIsV0FDQ25oQixVQUNDM1MsSUFBSyxT
QUFVVSxHQU9kLEdBQUlxekIsR0FBV2gxQixFQUFPNE8sS0FBS3NCLEtBQU12TyxFQUFNLFdBRXZD
LE9BQUtxekIsR0FDR0MsU0FBVUQsRUFBVSxJQUkzQkwsR0FBVzlvQixLQUFNbEssRUFBSzhDLFdB
Q3RCbXdCLEdBQVcvb0IsS0FBTWxLLEVBQUs4QyxXQUN0QjlDLEVBQUtnUyxLQUVFLFFBUVhtaEIs
U0FDQ0ksTUFBTyxVQUNQQyxRQUFTLGVBWUwvMUIsRUFBUTgwQixjQUNibDBCLEVBQU8rMEIsVUFB
VWhoQixVQUNoQjlTLElBQUssU0FBVVUsR0FJZCxHQUFJMlEsR0FBUzNRLEVBQUs5QixVQUlsQixP
QUhLeVMsSUFBVUEsRUFBT3pTLFlBQ3JCeVMsRUFBT3pTLFdBQVdtVSxjQUVaLE1BRVJvTSxJQUFL
LFNBQVV6ZSxHQUlkLEdBQUkyUSxHQUFTM1EsRUFBSzlCLFVBQ2J5UyxLQUNKQSxFQUFPMEIsY0FF
RjFCLEVBQU96UyxZQUNYeVMsRUFBT3pTLFdBQVdtVSxrQkFPdkJoVSxFQUFPd0IsTUFDTixXQUNB
LFdBQ0EsWUFDQSxjQUNBLGNBQ0EsVUFDQSxVQUNBLFNBQ0EsY0FDQSxtQkFDRSxXQUNGeEIsRUFB
TzgwQixRQUFTMzJCLEtBQUt1RyxlQUFrQnZHLE1BUXZDLFNBQVNpM0IsSUFBa0I3dkIsR0FDMUIs
R0FBSTBQLEdBQVMxUCxFQUFNMkYsTUFBT29QLE1BQzFCLE9BQU9yRixHQUFPaEosS0FBTSxLQUl0
QixRQUFTb3BCLElBQVUxekIsR0FDbEIsTUFBT0EsR0FBS21LLGNBQWdCbkssRUFBS21LLGFBQWMs
VUFBYSxHQUc3RDlMLEVBQU9HLEdBQUdvQyxRQUNUK3lCLFNBQVUsU0FBVS92QixHQUNuQixHQUFJ
Z3dCLEdBQVM1ekIsRUFBTXdMLEVBQUtxb0IsRUFBVUMsRUFBT3R6QixFQUFHdXpCLEVBQzNDOXpC
LEVBQUksQ0FFTCxJQUFLNUIsRUFBT2dELFdBQVl1QyxHQUN2QixNQUFPcEgsTUFBS3FELEtBQU0s
U0FBVVcsR0FDM0JuQyxFQUFRN0IsTUFBT20zQixTQUFVL3ZCLEVBQU1wRyxLQUFNaEIsS0FBTWdF
LEVBQUdrekIsR0FBVWwzQixTQUkxRCxJQUFzQixnQkFBVm9ILElBQXNCQSxFQUFRLENBQ3pDZ3dC
LEVBQVVod0IsRUFBTTJGLE1BQU9vUCxNQUV2QixPQUFVM1ksRUFBT3hELEtBQU15RCxLQUl0QixH
QUhBNHpCLEVBQVdILEdBQVUxekIsR0FDckJ3TCxFQUF3QixJQUFsQnhMLEVBQUtpSixVQUFvQixJ
QUFNd3FCLEdBQWtCSSxHQUFhLElBRXpELENBQ1ZyekIsRUFBSSxDQUNKLE9BQVVzekIsRUFBUUYs
RUFBU3B6QixLQUNyQmdMLEVBQUl2TyxRQUFTLElBQU02MkIsRUFBUSxLQUFRLElBQ3ZDdG9CLEdB
QU9zb0IsRUFBUSxJQUtqQkMsR0FBYU4sR0FBa0Jqb0IsR0FDMUJxb0IsSUFBYUUsR0FDakIvekIs
RUFBS29LLGFBQWMsUUFBUzJwQixJQU1oQyxNQUFPdjNCLE9BR1J3M0IsWUFBYSxTQUFVcHdCLEdB
Q3RCLEdBQUlnd0IsR0FBUzV6QixFQUFNd0wsRUFBS3FvQixFQUFVQyxFQUFPdHpCLEVBQUd1ekIs
RUFDM0M5ekIsRUFBSSxDQUVMLElBQUs1QixFQUFPZ0QsV0FBWXVDLEdBQ3ZCLE1BQU9wSCxNQUFL
cUQsS0FBTSxTQUFVVyxHQUMzQm5DLEVBQVE3QixNQUFPdzNCLFlBQWFwd0IsRUFBTXBHLEtBQU1o
QixLQUFNZ0UsRUFBR2t6QixHQUFVbDNCLFNBSTdELEtBQU0yRCxVQUFVZixPQUNmLE1BQU81QyxN
QUFLK1IsS0FBTSxRQUFTLEdBRzVCLElBQXNCLGdCQUFWM0ssSUFBc0JBLEVBQVEsQ0FDekNnd0Is
RUFBVWh3QixFQUFNMkYsTUFBT29QLE1BRXZCLE9BQVUzWSxFQUFPeEQsS0FBTXlELEtBTXRCLEdB
TEE0ekIsRUFBV0gsR0FBVTF6QixHQUdyQndMLEVBQXdCLElBQWxCeEwsRUFBS2lKLFVBQW9CLElB
QU13cUIsR0FBa0JJLEdBQWEsSUFFekQsQ0FDVnJ6QixFQUFJLENBQ0osT0FBVXN6QixFQUFRRixF
QUFTcHpCLEtBRzFCLE1BQVFnTCxFQUFJdk8sUUFBUyxJQUFNNjJCLEVBQVEsUUFDbEN0b0IsRUFB
TUEsRUFBSTVKLFFBQVMsSUFBTWt5QixFQUFRLElBQUssSUFLeENDLEdBQWFOLEdBQWtCam9CLEdB
QzFCcW9CLElBQWFFLEdBQ2pCL3pCLEVBQUtvSyxhQUFjLFFBQVMycEIsSUFNaEMsTUFBT3YzQixP
QUdSeTNCLFlBQWEsU0FBVXJ3QixFQUFPc3dCLEdBQzdCLEdBQUloeUIsU0FBYzBCLEVBRWxCLE9B
QXlCLGlCQUFic3dCLElBQW1DLFdBQVRoeUIsRUFDOUJneUIsRUFBVzEzQixLQUFLbTNCLFNBQVUv
dkIsR0FBVXBILEtBQUt3M0IsWUFBYXB3QixHQUd6RHZGLEVBQU9nRCxXQUFZdUMsR0FDaEJwSCxL
QUFLcUQsS0FBTSxTQUFVSSxHQUMzQjVCLEVBQVE3QixNQUFPeTNCLFlBQ2Ryd0IsRUFBTXBHLEtB
QU1oQixLQUFNeUQsRUFBR3l6QixHQUFVbDNCLE1BQVEwM0IsR0FDdkNBLEtBS0kxM0IsS0FBS3FE
LEtBQU0sV0FDakIsR0FBSThNLEdBQVcxTSxFQUFHa1gsRUFBTWdkLENBRXhCLElBQWMsV0FBVGp5
QixFQUFvQixDQUd4QmpDLEVBQUksRUFDSmtYLEVBQU85WSxFQUFRN0IsTUFDZjIzQixFQUFhdndC
LEVBQU0yRixNQUFPb1AsTUFFMUIsT0FBVWhNLEVBQVl3bkIsRUFBWWwwQixLQUc1QmtYLEVBQUtp
ZCxTQUFVem5CLEdBQ25Cd0ssRUFBSzZjLFlBQWFybkIsR0FFbEJ3SyxFQUFLd2MsU0FBVWhuQixP
QUtJbkwsVUFBVm9DLEdBQWdDLFlBQVQxQixJQUNsQ3lLLEVBQVkrbUIsR0FBVWwzQixNQUNqQm1R
LEdBR0prUyxFQUFTSixJQUFLamlCLEtBQU0sZ0JBQWlCbVEsR0FPakNuUSxLQUFLNE4sY0FDVDVO
LEtBQUs0TixhQUFjLFFBQ2xCdUMsR0FBYS9JLEtBQVUsRUFDdkIsR0FDQWliLEVBQVN2ZixJQUFL
OUMsS0FBTSxrQkFBcUIsUUFPOUM0M0IsU0FBVSxTQUFVOTFCLEdBQ25CLEdBQUlxTyxHQUFXM00s
RUFDZEMsRUFBSSxDQUVMME0sR0FBWSxJQUFNck8sRUFBVyxHQUM3QixPQUFVMEIsRUFBT3hELEtB
QU15RCxLQUN0QixHQUF1QixJQUFsQkQsRUFBS2lKLFdBQ1AsSUFBTXdxQixHQUFrQkMsR0FBVTF6
QixJQUFXLEtBQU0vQyxRQUFTMFAsTUFDN0QsT0FBTyxDQUlWLFFBQU8sSUFPVCxJQUFJMG5CLElB
QVUsS0FFZGgyQixHQUFPRyxHQUFHb0MsUUFDVDROLElBQUssU0FBVTVLLEdBQ2QsR0FBSThiLEdB
QU9oZ0IsRUFBSzJCLEVBQ2ZyQixFQUFPeEQsS0FBTSxFQUVkLEVBQUEsR0FBTTJELFVBQVVmLE9B
NEJoQixNQUZBaUMsR0FBYWhELEVBQU9nRCxXQUFZdUMsR0FFekJwSCxLQUFLcUQsS0FBTSxTQUFV
SSxHQUMzQixHQUFJdU8sRUFFbUIsS0FBbEJoUyxLQUFLeU0sV0FLVHVGLEVBREluTixFQUNFdUMs
RUFBTXBHLEtBQU1oQixLQUFNeUQsRUFBRzVCLEVBQVE3QixNQUFPZ1MsT0FFcEM1SyxFQUlLLE1B
QVA0SyxFQUNKQSxFQUFNLEdBRW9CLGdCQUFSQSxHQUNsQkEsR0FBTyxHQUVJblEsRUFBT2tELFFB
QVNpTixLQUMzQkEsRUFBTW5RLEVBQU8wQixJQUFLeU8sRUFBSyxTQUFVNUssR0FDaEMsTUFBZ0Is
T0FBVEEsRUFBZ0IsR0FBS0EsRUFBUSxNQUl0QzhiLEVBQVFyaEIsRUFBT2kyQixTQUFVOTNCLEtB
QUswRixPQUFVN0QsRUFBT2kyQixTQUFVOTNCLEtBQUtzRyxTQUFTQyxlQUdqRTJjLEdBQVksT0FB
U0EsSUFBK0NsZSxTQUFwQ2tlLEVBQU1qQixJQUFLamlCLEtBQU1nUyxFQUFLLFdBQzNEaFMsS0FB
S29ILE1BQVE0SyxLQXpEZCxJQUFLeE8sRUFJSixNQUhBMGYsR0FBUXJoQixFQUFPaTJCLFNBQVV0
MEIsRUFBS2tDLE9BQzdCN0QsRUFBT2kyQixTQUFVdDBCLEVBQUs4QyxTQUFTQyxlQUUzQjJjLEdB
Q0osT0FBU0EsSUFDZ0NsZSxVQUF2QzlCLEVBQU1nZ0IsRUFBTXBnQixJQUFLVSxFQUFNLFVBRWxC
TixHQUdSQSxFQUFNTSxFQUFLNEQsTUFHUyxnQkFBUmxFLEdBQ0pBLEVBQUlrQyxRQUFTeXlCLEdB
QVMsSUFJaEIsTUFBUDMwQixFQUFjLEdBQUtBLE9BNEM5QnJCLEVBQU91QyxRQUNOMHpCLFVBQ0Nw
UyxRQUNDNWlCLElBQUssU0FBVVUsR0FFZCxHQUFJd08sR0FBTW5RLEVBQU80TyxLQUFLc0IsS0FB
TXZPLEVBQU0sUUFDbEMsT0FBYyxPQUFQd08sRUFDTkEsRUFNQWlsQixHQUFrQnAxQixFQUFPTixL
QUFNaUMsTUFHbEM0RSxRQUNDdEYsSUFBSyxTQUFVVSxHQUNkLEdBQUk0RCxHQUFPc2UsRUFBUWpp
QixFQUNsQlksRUFBVWIsRUFBS2EsUUFDZmtYLEVBQVEvWCxFQUFLcVMsY0FDYm9TLEVBQW9CLGVB
QWR6a0IsRUFBS2tDLEtBQ1h5ZixFQUFTOEMsRUFBTSxRQUNmbUwsRUFBTW5MLEVBQU0xTSxFQUFR
LEVBQUlsWCxFQUFRekIsTUFVakMsS0FQQ2EsRUFESThYLEVBQVEsRUFDUjZYLEVBR0FuTCxFQUFN
MU0sRUFBUSxFQUlYOVgsRUFBSTJ2QixFQUFLM3ZCLElBS2hCLEdBSkFpaUIsRUFBU3JoQixFQUFT
WixJQUlYaWlCLEVBQU85UCxVQUFZblMsSUFBTThYLEtBRzdCbUssRUFBT3JaLFlBQ0xxWixFQUFP
aGtCLFdBQVcySyxXQUNuQnhLLEVBQU95RSxTQUFVb2YsRUFBT2hrQixXQUFZLGFBQWlCLENBTXhE
LEdBSEEwRixFQUFRdkYsRUFBUTZqQixHQUFTMVQsTUFHcEJpVyxFQUNKLE1BQU83Z0IsRUFJUitk
LEdBQU8za0IsS0FBTTRHLEdBSWYsTUFBTytkLElBR1JsRCxJQUFLLFNBQVV6ZSxFQUFNNEQsR0FD
cEIsR0FBSTJ3QixHQUFXclMsRUFDZHJoQixFQUFVYixFQUFLYSxRQUNmOGdCLEVBQVN0akIsRUFB
TzZFLFVBQVdVLEdBQzNCM0QsRUFBSVksRUFBUXpCLE1BRWIsT0FBUWEsSUFDUGlpQixFQUFTcmhC
LEVBQVNaLElBSWJpaUIsRUFBTzlQLFNBQ1gvVCxFQUFPK0UsUUFBUy9FLEVBQU9pMkIsU0FBU3BT
LE9BQU81aUIsSUFBSzRpQixHQUFVUCxTQUV0RDRTLEdBQVksRUFVZCxPQUhNQSxLQUNMdjBCLEVB
QUtxUyxrQkFFQ3NQLE9BT1h0akIsRUFBT3dCLE1BQVEsUUFBUyxZQUFjLFdBQ3JDeEIsRUFBT2ky
QixTQUFVOTNCLE9BQ2hCaWlCLElBQUssU0FBVXplLEVBQU00RCxHQUNwQixHQUFLdkYsRUFBT2tE
LFFBQVNxQyxHQUNwQixNQUFTNUQsR0FBS21TLFFBQVU5VCxFQUFPK0UsUUFBUy9FLEVBQVEyQixH
QUFPd08sTUFBTzVLLFFBSTNEbkcsRUFBUTYwQixVQUNiajBCLEVBQU9pMkIsU0FBVTkzQixNQUFP
OEMsSUFBTSxTQUFVVSxHQUN2QyxNQUF3QyxRQUFqQ0EsRUFBS21LLGFBQWMsU0FBcUIsS0FBT25L
LEVBQUs0RCxTQVc5RCxJQUFJNHdCLElBQWMsaUNBRWxCbjJCLEdBQU91QyxPQUFRdkMsRUFBT3Nt
QixPQUVyQjZDLFFBQVMsU0FBVTdDLEVBQU9qRyxFQUFNMWUsRUFBTXkwQixHQUVyQyxHQUFJeDBC
LEdBQUd1TCxFQUFLekgsRUFBSzJ3QixFQUFZQyxFQUFRclAsRUFBUTNKLEVBQzVDaVosR0FBYzUw
QixHQUFRNUQsR0FDdEI4RixFQUFPOUUsRUFBT0ksS0FBTW1uQixFQUFPLFFBQVdBLEVBQU16aUIs
S0FBT3lpQixFQUNuRFEsRUFBYS9uQixFQUFPSSxLQUFNbW5CLEVBQU8sYUFBZ0JBLEVBQU1nQixV
QUFVdGhCLE1BQU8sT0FLekUsSUFIQW1ILEVBQU16SCxFQUFNL0QsRUFBT0EsR0FBUTVELEVBR0os
SUFBbEI0RCxFQUFLaUosVUFBb0MsSUFBbEJqSixFQUFLaUosV0FLNUJ1ckIsR0FBWXRxQixLQUFN
aEksRUFBTzdELEVBQU9zbUIsTUFBTVksYUFJdENyakIsRUFBS2pGLFFBQVMsVUFHbEJrb0IsRUFB
YWpqQixFQUFLbUMsTUFBTyxLQUN6Qm5DLEVBQU9pakIsRUFBV3BhLFFBQ2xCb2EsRUFBV3prQixR
QUVaaTBCLEVBQVN6eUIsRUFBS2pGLFFBQVMsS0FBUSxHQUFLLEtBQU9pRixFQUczQ3lpQixFQUFR
QSxFQUFPdG1CLEVBQU9vRCxTQUNyQmtqQixFQUNBLEdBQUl0bUIsR0FBTzZvQixNQUFPaGxCLEVB
QXVCLGdCQUFWeWlCLElBQXNCQSxHQUd0REEsRUFBTWtRLFVBQVlKLEVBQWUsRUFBSSxFQUNyQzlQ
LEVBQU1nQixVQUFZUixFQUFXN2EsS0FBTSxLQUNuQ3FhLEVBQU0rQixXQUFhL0IsRUFBTWdCLFVB
Q3hCLEdBQUlsZixRQUFRLFVBQVkwZSxFQUFXN2EsS0FBTSxpQkFBb0IsV0FDN0QsS0FHRHFhLEVB
QU0xVSxPQUFTek8sT0FDVG1qQixFQUFNeGpCLFNBQ1h3akIsRUFBTXhqQixPQUFTbkIsR0FJaEIw
ZSxFQUFlLE1BQVJBLEdBQ0ppRyxHQUNGdG1CLEVBQU82RSxVQUFXd2IsR0FBUWlHLElBRzNCaEos
RUFBVXRkLEVBQU9zbUIsTUFBTWhKLFFBQVN6WixPQUMxQnV5QixJQUFnQjlZLEVBQVE2TCxTQUFX
N0wsRUFBUTZMLFFBQVF0bkIsTUFBT0YsRUFBTTBlLE1BQVcsR0FBakYsQ0FNQSxJQUFNK1YsSUFB
aUI5WSxFQUFRNEwsV0FBYWxwQixFQUFPK0QsU0FBVXBDLEdBQVMsQ0FNckUsSUFKQTAwQixFQUFh
L1ksRUFBUThKLGNBQWdCdmpCLEVBQy9Cc3lCLEdBQVl0cUIsS0FBTXdxQixFQUFheHlCLEtBQ3BD
c0osRUFBTUEsRUFBSXROLFlBRUhzTixFQUFLQSxFQUFNQSxFQUFJdE4sV0FDdEIwMkIsRUFBVTUz
QixLQUFNd08sR0FDaEJ6SCxFQUFNeUgsQ0FJRnpILE1BQVUvRCxFQUFLMkosZUFBaUJ2TixJQUNw
Q3c0QixFQUFVNTNCLEtBQU0rRyxFQUFJd0ksYUFBZXhJLEVBQUkrd0IsY0FBZ0J2NEIsR0FLekQw
RCxFQUFJLENBQ0osUUFBVXVMLEVBQU1vcEIsRUFBVzMwQixRQUFZMGtCLEVBQU00Qix1QkFFNUM1
QixFQUFNemlCLEtBQU9qQyxFQUFJLEVBQ2hCeTBCLEVBQ0EvWSxFQUFRK0osVUFBWXhqQixFQUdy
Qm9qQixHQUFXekcsRUFBU3ZmLElBQUtrTSxFQUFLLGVBQW9CbVosRUFBTXppQixPQUN2RDJjLEVB
QVN2ZixJQUFLa00sRUFBSyxVQUNmOFosR0FDSkEsRUFBT3BsQixNQUFPc0wsRUFBS2tULEdBSXBC
NEcsRUFBU3FQLEdBQVVucEIsRUFBS21wQixHQUNuQnJQLEdBQVVBLEVBQU9wbEIsT0FBU2llLEVB
QVkzUyxLQUMxQ21aLEVBQU0xVSxPQUFTcVYsRUFBT3BsQixNQUFPc0wsRUFBS2tULEdBQzdCaUcs
RUFBTTFVLFVBQVcsR0FDckIwVSxFQUFNZ0MsaUJBb0NULE9BaENBaEMsR0FBTXppQixLQUFPQSxF
QUdQdXlCLEdBQWlCOVAsRUFBTW1ELHNCQUVwQm5NLEVBQVE0RyxVQUNmNUcsRUFBUTRHLFNBQVNy
aUIsTUFBTzAwQixFQUFVNXVCLE1BQU8wWSxNQUFXLElBQ3BEUCxFQUFZbmUsSUFJUDIwQixHQUFV
dDJCLEVBQU9nRCxXQUFZckIsRUFBTWtDLE1BQWE3RCxFQUFPK0QsU0FBVXBDLEtBR3JFK0QsRUFB
TS9ELEVBQU0yMEIsR0FFUDV3QixJQUNKL0QsRUFBTTIwQixHQUFXLE1BSWxCdDJCLEVBQU9zbUIs
TUFBTVksVUFBWXJqQixFQUN6QmxDLEVBQU1rQyxLQUNON0QsRUFBT3NtQixNQUFNWSxVQUFZL2pC
LE9BRXBCdUMsSUFDSi9ELEVBQU0yMEIsR0FBVzV3QixJQU1kNGdCLEVBQU0xVSxTQUtkOGtCLFNB
QVUsU0FBVTd5QixFQUFNbEMsRUFBTTJrQixHQUMvQixHQUFJemIsR0FBSTdLLEVBQU91QyxPQUNk
LEdBQUl2QyxHQUFPNm9CLE1BQ1h2QyxHQUVDemlCLEtBQU1BLEVBQ05nbUIsYUFBYSxHQUlmN3BC
LEdBQU9zbUIsTUFBTTZDLFFBQVN0ZSxFQUFHLEtBQU1sSixNQUtqQzNCLEVBQU9HLEdBQUdvQyxR
QUVUNG1CLFFBQVMsU0FBVXRsQixFQUFNd2MsR0FDeEIsTUFBT2xpQixNQUFLcUQsS0FBTSxXQUNq
QnhCLEVBQU9zbUIsTUFBTTZDLFFBQVN0bEIsRUFBTXdjLEVBQU1saUIsU0FHcEN3NEIsZUFBZ0Is
U0FBVTl5QixFQUFNd2MsR0FDL0IsR0FBSTFlLEdBQU94RCxLQUFNLEVBQ2pCLElBQUt3RCxFQUNK
LE1BQU8zQixHQUFPc21CLE1BQU02QyxRQUFTdGxCLEVBQU13YyxFQUFNMWUsR0FBTSxNQU1sRDNC
LEVBQU93QixLQUFNLHdMQUVnRHdFLE1BQU8sS0FDbkUsU0FBVXBFLEVBQUdhLEdBR2J6QyxFQUFP
RyxHQUFJc0MsR0FBUyxTQUFVNGQsRUFBTWxnQixHQUNuQyxNQUFPMkIsV0FBVWYsT0FBUyxFQUN6
QjVDLEtBQUsrbkIsR0FBSXpqQixFQUFNLEtBQU00ZCxFQUFNbGdCLEdBQzNCaEMsS0FBS2dyQixR
QUFTMW1CLE1BSWpCekMsRUFBT0csR0FBR29DLFFBQ1RxMEIsTUFBTyxTQUFVQyxFQUFRQyxHQUN4
QixNQUFPMzRCLE1BQUt3dEIsV0FBWWtMLEdBQVNqTCxXQUFZa0wsR0FBU0QsTUFPeER6M0IsRUFB
UTIzQixRQUFVLGFBQWU3NEIsR0FXM0JrQixFQUFRMjNCLFNBQ2IvMkIsRUFBT3dCLE1BQVFnUyxN
QUFPLFVBQVc0VixLQUFNLFlBQWMsU0FBVTJDLEVBQU1qRSxHQUdwRSxHQUFJOWEsR0FBVSxTQUFV
c1osR0FDdkJ0bUIsRUFBT3NtQixNQUFNb1EsU0FBVTVPLEVBQUt4QixFQUFNeGpCLE9BQVE5QyxF
QUFPc21CLE1BQU13QixJQUFLeEIsSUFHN0R0bUIsR0FBT3NtQixNQUFNaEosUUFBU3dLLElBQ3JC
TixNQUFPLFdBQ04sR0FBSWpvQixHQUFNcEIsS0FBS21OLGVBQWlCbk4sS0FDL0I2NEIsRUFBV3hX
LEVBQVNmLE9BQVFsZ0IsRUFBS3VvQixFQUU1QmtQLElBQ0x6M0IsRUFBSTZPLGlCQUFrQjJkLEVB
QU0vZSxHQUFTLEdBRXRDd1QsRUFBU2YsT0FBUWxnQixFQUFLdW9CLEdBQU9rUCxHQUFZLEdBQU0s
SUFFaERyUCxTQUFVLFdBQ1QsR0FBSXBvQixHQUFNcEIsS0FBS21OLGVBQWlCbk4sS0FDL0I2NEIs
RUFBV3hXLEVBQVNmLE9BQVFsZ0IsRUFBS3VvQixHQUFRLENBRXBDa1AsR0FLTHhXLEVBQVNmLE9B
QVFsZ0IsRUFBS3VvQixFQUFLa1AsSUFKM0J6M0IsRUFBSStmLG9CQUFxQnlNLEVBQU0vZSxHQUFT
LEdBQ3hDd1QsRUFBU3BGLE9BQVE3YixFQUFLdW9CLE9BVzNCLElBQ0NtUCxJQUFXLFFBQ1hDLEdB
QVEsU0FDUkMsR0FBa0Isd0NBQ2xCQyxHQUFlLG9DQUVoQixTQUFTQyxJQUFhaEUsRUFBUXp2QixF
QUFLMHpCLEVBQWExZCxHQUMvQyxHQUFJblgsRUFFSixJQUFLekMsRUFBT2tELFFBQVNVLEdBR3BC
NUQsRUFBT3dCLEtBQU1vQyxFQUFLLFNBQVVoQyxFQUFHNlosR0FDekI2YixHQUFlTCxHQUFTcHJC
LEtBQU13bkIsR0FHbEN6WixFQUFLeVosRUFBUTVYLEdBS2I0YixHQUNDaEUsRUFBUyxLQUFxQixn
QkFBTjVYLElBQXVCLE1BQUxBLEVBQVk3WixFQUFJLElBQU8sSUFDakU2WixFQUNBNmIsRUFDQTFk
O09BS0csSUFBTTBkLEdBQXNDLFdBQXZCdDNCLEVBQU82RCxLQUFNRCxHQVV4Q2dXLEVBQUt5WixF
QUFRenZCLE9BUGIsS0FBTW5CLElBQVFtQixHQUNieXpCLEdBQWFoRSxFQUFTLElBQU01d0IsRUFB
TyxJQUFLbUIsRUFBS25CLEdBQVE2MEIsRUFBYTFkLEdBWXJFNVosRUFBT3UzQixNQUFRLFNBQVU5
dkIsRUFBRzZ2QixHQUMzQixHQUFJakUsR0FDSG1FLEtBQ0E1ZCxFQUFNLFNBQVVwTixFQUFLaXJC
LEdBR3BCLEdBQUlseUIsR0FBUXZGLEVBQU9nRCxXQUFZeTBCLEdBQzlCQSxJQUNBQSxDQUVERCxH
QUFHQSxFQUFFejJCLFFBQVcyMkIsbUJBQW9CbHJCLEdBQVEsSUFDM0NrckIsbUJBQTZCLE1BQVRu
eUIsRUFBZ0IsR0FBS0EsR0FJNUMsSUFBS3ZGLEVBQU9rRCxRQUFTdUUsSUFBU0EsRUFBRTVHLFNB
QVdiLEVBQU9pRCxjQUFld0UsR0FHaEV6SCxFQUFPd0IsS0FBTWlHLEVBQUcsV0FDZm1TLEVBQUt6
YixLQUFLc0UsS0FBTXRFLEtBQUtvSCxhQU90QixLQUFNOHRCLElBQVU1ckIsR0FDZjR2QixHQUFh
aEUsRUFBUTVyQixFQUFHNHJCLEdBQVVpRSxFQUFhMWQsRUFLakQsT0FBTzRkLEdBQUV2ckIsS0FB
TSxNQUdoQmpNLEVBQU9HLEdBQUdvQyxRQUNUbzFCLFVBQVcsV0FDVixNQUFPMzNCLEdBQU91M0Is
TUFBT3A1QixLQUFLeTVCLG1CQUUzQkEsZUFBZ0IsV0FDZixNQUFPejVCLE1BQUt1RCxJQUFLLFdB
R2hCLEdBQUl1TyxHQUFXalEsRUFBT3NnQixLQUFNbmlCLEtBQU0sV0FDbEMsT0FBTzhSLEdBQVdq
USxFQUFPNkUsVUFBV29MLEdBQWE5UixPQUVqRHVRLE9BQVEsV0FDUixHQUFJN0ssR0FBTzFGLEtB
QUswRixJQUdoQixPQUFPMUYsTUFBS3NFLE9BQVN6QyxFQUFRN0IsTUFBT21hLEdBQUksY0FDdkM4
ZSxHQUFhdnJCLEtBQU0xTixLQUFLc0csWUFBZTB5QixHQUFnQnRyQixLQUFNaEksS0FDM0QxRixL
QUFLMlYsVUFBWTJQLEdBQWU1WCxLQUFNaEksTUFFekNuQyxJQUFLLFNBQVVFLEVBQUdELEdBQ2xC
LEdBQUl3TyxHQUFNblEsRUFBUTdCLE1BQU9nUyxLQUV6QixPQUFZLE9BQVBBLEVBQ0csS0FHSG5R
LEVBQU9rRCxRQUFTaU4sR0FDYm5RLEVBQU8wQixJQUFLeU8sRUFBSyxTQUFVQSxHQUNqQyxPQUFT
MU4sS0FBTWQsRUFBS2MsS0FBTThDLE1BQU80SyxFQUFJNU0sUUFBUzJ6QixHQUFPLFlBSTlDejBC
LEtBQU1kLEVBQUtjLEtBQU04QyxNQUFPNEssRUFBSTVNLFFBQVMyekIsR0FBTyxXQUNsRGoyQixT
QUtOakIsRUFBT0csR0FBR29DLFFBQ1RzMUIsUUFBUyxTQUFVeEssR0FDbEIsR0FBSXBJLEVBeUJK
LE9BdkJLOW1CLE1BQU0sS0FDTDZCLEVBQU9nRCxXQUFZcXFCLEtBQ3ZCQSxFQUFPQSxFQUFLbHVC
LEtBQU1oQixLQUFNLEtBSXpCOG1CLEVBQU9qbEIsRUFBUXF0QixFQUFNbHZCLEtBQU0sR0FBSW1O
LGVBQWdCdEosR0FBSSxHQUFJYSxPQUFPLEdBRXpEMUUsS0FBTSxHQUFJMEIsWUFDZG9sQixFQUFL
Z0osYUFBYzl2QixLQUFNLElBRzFCOG1CLEVBQUt2akIsSUFBSyxXQUNULEdBQUlDLEdBQU94RCxJ
QUVYLE9BQVF3RCxFQUFLbTJCLGtCQUNabjJCLEVBQU9BLEVBQUttMkIsaUJBR2IsT0FBT24yQixL
QUNKb3NCLE9BQVE1dkIsT0FHTkEsTUFHUjQ1QixVQUFXLFNBQVUxSyxHQUNwQixNQUFLcnRCLEdB
QU9nRCxXQUFZcXFCLEdBQ2hCbHZCLEtBQUtxRCxLQUFNLFNBQVVJLEdBQzNCNUIsRUFBUTdCLE1B
QU80NUIsVUFBVzFLLEVBQUtsdUIsS0FBTWhCLEtBQU15RCxNQUl0Q3pELEtBQUtxRCxLQUFNLFdB
Q2pCLEdBQUlzWCxHQUFPOVksRUFBUTdCLE1BQ2xCa2IsRUFBV1AsRUFBS08sVUFFWkEsR0FBU3RZ
LE9BQ2JzWSxFQUFTd2UsUUFBU3hLLEdBR2xCdlUsRUFBS2lWLE9BQVFWLE1BS2hCcEksS0FBTSxT
QUFVb0ksR0FDZixHQUFJcnFCLEdBQWFoRCxFQUFPZ0QsV0FBWXFxQixFQUVwQyxPQUFPbHZCLE1B
QUtxRCxLQUFNLFNBQVVJLEdBQzNCNUIsRUFBUTdCLE1BQU8wNUIsUUFBUzcwQixFQUFhcXFCLEVB
QUtsdUIsS0FBTWhCLEtBQU15RCxHQUFNeXJCLE1BSTlEMkssT0FBUSxTQUFVLzNCLEdBSWpCLE1B
SEE5QixNQUFLbVUsT0FBUXJTLEdBQVc2UyxJQUFLLFFBQVN0UixLQUFNLFdBQzNDeEIsRUFBUTdC
LE1BQU9pd0IsWUFBYWp3QixLQUFLd00sY0FFM0J4TSxRQUtUNkIsRUFBT2dRLEtBQUs5SCxRQUFR
K3ZCLE9BQVMsU0FBVXQyQixHQUN0QyxPQUFRM0IsRUFBT2dRLEtBQUs5SCxRQUFRZ3dCLFFBQVN2
MkIsSUFFdEMzQixFQUFPZ1EsS0FBSzlILFFBQVFnd0IsUUFBVSxTQUFVdjJCLEdBQ3ZDLFNBQVdB
LEVBQUt3MkIsYUFBZXgyQixFQUFLeTJCLGNBQWdCejJCLEVBQUttd0IsaUJBQWlCL3dCLFNBVzNF
M0IsRUFBUWk1QixtQkFBcUIsV0FDNUIsR0FBSWxWLEdBQU9wbEIsRUFBU3U2QixlQUFlRCxtQkFB
b0IsSUFBS2xWLElBRTVELE9BREFBLEdBQUtwVSxVQUFZLDZCQUNpQixJQUEzQm9VLEVBQUt4WSxX
QUFXNUosVUFReEJmLEVBQU9nWixVQUFZLFNBQVVxSCxFQUFNbmdCLEVBQVNxNEIsR0FDM0MsR0FB
cUIsZ0JBQVRsWSxHQUNYLFFBRXVCLGtCQUFabmdCLEtBQ1hxNEIsRUFBY3I0QixFQUNkQSxHQUFV
LEVBR1gsSUFBSW9WLEdBQU1rakIsRUFBUTFULENBd0JsQixPQXRCTTVrQixLQUlBZCxFQUFRaTVC
LG9CQUNabjRCLEVBQVVuQyxFQUFTdTZCLGVBQWVELG1CQUFvQixJQUt0RC9pQixFQUFPcFYsRUFB
UVQsY0FBZSxRQUM5QjZWLEVBQUszQixLQUFPNVYsRUFBU3VWLFNBQVNLLEtBQzlCelQsRUFBUVAs
S0FBS0MsWUFBYTBWLElBRTFCcFYsRUFBVW5DLEdBSVp5NkIsRUFBUzlmLEVBQVduTixLQUFNOFUs
R0FDMUJ5RSxHQUFXeVQsTUFHTkMsR0FDS3Q0QixFQUFRVCxjQUFlKzRCLEVBQVEsTUFHekNBLEVB
QVMzVCxJQUFpQnhFLEdBQVFuZ0IsRUFBUzRrQixHQUV0Q0EsR0FBV0EsRUFBUS9qQixRQUN2QmYs
RUFBUThrQixHQUFVMUosU0FHWnBiLEVBQU9zQixTQUFXazNCLEVBQU83dEIsYUFPakMsU0FBUzh0
QixJQUFXOTJCLEdBQ25CLE1BQU8zQixHQUFPK0QsU0FBVXBDLEdBQVNBLEVBQXlCLElBQWxCQSxF
QUFLaUosVUFBa0JqSixFQUFLdU0sWUFHckVsTyxFQUFPMDRCLFFBQ05DLFVBQVcsU0FBVWgzQixF
QUFNYSxFQUFTWixHQUNuQyxHQUFJZzNCLEdBQWFDLEVBQVNDLEVBQVdDLEVBQVFDLEVBQVdDLEVB
QVlDLEVBQ25FdEksRUFBVzV3QixFQUFPbWlCLElBQUt4Z0IsRUFBTSxZQUM3QnczQixFQUFVbjVC
LEVBQVEyQixHQUNsQjZuQixJQUdpQixZQUFib0gsSUFDSmp2QixFQUFLc2dCLE1BQU0yTyxTQUFX
LFlBR3ZCb0ksRUFBWUcsRUFBUVQsU0FDcEJJLEVBQVk5NEIsRUFBT21pQixJQUFLeGdCLEVBQU0s
T0FDOUJzM0IsRUFBYWo1QixFQUFPbWlCLElBQUt4Z0IsRUFBTSxRQUMvQnUzQixHQUFtQyxhQUFi
dEksR0FBd0MsVUFBYkEsS0FDOUNrSSxFQUFZRyxHQUFhcjZCLFFBQVMsV0FJaENzNkIsR0FDSk4s
RUFBY08sRUFBUXZJLFdBQ3RCbUksRUFBU0gsRUFBWXpxQixJQUNyQjBxQixFQUFVRCxFQUFZM0Ys
T0FHdEI4RixFQUFTNzBCLFdBQVk0MEIsSUFBZSxFQUNwQ0QsRUFBVTMwQixXQUFZKzBCLElBQWdC
LEdBR2xDajVCLEVBQU9nRCxXQUFZUixLQUd2QkEsRUFBVUEsRUFBUXJELEtBQU13QyxFQUFNQyxF
QUFHNUIsRUFBT3VDLFVBQVl5MkIsS0FHakMsTUFBZngyQixFQUFRMkwsTUFDWnFiLEVBQU1yYixJ
QUFRM0wsRUFBUTJMLElBQU02cUIsRUFBVTdxQixJQUFRNHFCLEdBRTFCLE1BQWhCdjJCLEVBQVF5
d0IsT0FDWnpKLEVBQU15SixLQUFTendCLEVBQVF5d0IsS0FBTytGLEVBQVUvRixLQUFTNEYsR0FH
N0MsU0FBV3IyQixHQUNmQSxFQUFRNDJCLE1BQU1qNkIsS0FBTXdDLEVBQU02bkIsR0FHMUIyUCxF
QUFRaFgsSUFBS3FILEtBS2hCeHBCLEVBQU9HLEdBQUdvQyxRQUNUbTJCLE9BQVEsU0FBVWwyQixH
QUdqQixHQUFLVixVQUFVZixPQUNkLE1BQW1Cb0MsVUFBWlgsRUFDTnJFLEtBQ0FBLEtBQUtxRCxL
QUFNLFNBQVVJLEdBQ3BCNUIsRUFBTzA0QixPQUFPQyxVQUFXeDZCLEtBQU1xRSxFQUFTWixJQUkz
QyxJQUFJZ0YsR0FBU3l5QixFQUFLQyxFQUFNLzVCLEVBQ3ZCb0MsRUFBT3hELEtBQU0sRUFFZCxJ
QUFNd0QsRUFPTixNQUFNQSxHQUFLbXdCLGlCQUFpQi93QixRQUk1QnU0QixFQUFPMzNCLEVBQUtv
d0Isd0JBR1B1SCxFQUFLN0osT0FBUzZKLEVBQUtDLFFBQ3ZCaDZCLEVBQU1vQyxFQUFLMkosY0FD
WCt0QixFQUFNWixHQUFXbDVCLEdBQ2pCcUgsRUFBVXJILEVBQUl1TyxpQkFHYkssSUFBS21yQixF
QUFLbnJCLElBQU1rckIsRUFBSUcsWUFBYzV5QixFQUFRNnlCLFVBQzFDeEcsS0FBTXFHLEVBQUty
RyxLQUFPb0csRUFBSUssWUFBYzl5QixFQUFRK3lCLGFBS3ZDTCxJQWxCR25yQixJQUFLLEVBQUc4
a0IsS0FBTSxJQXFCekJyQyxTQUFVLFdBQ1QsR0FBTXp5QixLQUFNLEdBQVosQ0FJQSxHQUFJeTdC
LEdBQWNsQixFQUNqQi8yQixFQUFPeEQsS0FBTSxHQUNiMDdCLEdBQWlCMXJCLElBQUssRUFBRzhr
QixLQUFNLEVBNEJoQyxPQXhCd0MsVUFBbkNqekIsRUFBT21pQixJQUFLeGdCLEVBQU0sWUFHdEIr
MkIsRUFBUy8yQixFQUFLb3dCLHlCQUtkNkgsRUFBZXo3QixLQUFLeTdCLGVBR3BCbEIsRUFBU3Y2
QixLQUFLdTZCLFNBQ1IxNEIsRUFBT3lFLFNBQVVtMUIsRUFBYyxHQUFLLFVBQ3pDQyxFQUFlRCxF
QUFhbEIsVUFJN0JtQixHQUNDMXJCLElBQUswckIsRUFBYTFyQixJQUFNbk8sRUFBT21pQixJQUFL
eVgsRUFBYyxHQUFLLGtCQUFrQixHQUN6RTNHLEtBQU00RyxFQUFhNUcsS0FBT2p6QixFQUFPbWlC
LElBQUt5WCxFQUFjLEdBQUssbUJBQW1CLE1BTTdFenJCLElBQUt1cUIsRUFBT3ZxQixJQUFNMHJC
LEVBQWExckIsSUFBTW5PLEVBQU9taUIsSUFBS3hnQixFQUFNLGFBQWEsR0FDcEVzeEIsS0FBTXlG
LEVBQU96RixLQUFPNEcsRUFBYTVHLEtBQU9qekIsRUFBT21pQixJQUFLeGdCLEVBQU0sY0FBYyxN
QWMxRWk0QixhQUFjLFdBQ2IsTUFBT3o3QixNQUFLdUQsSUFBSyxXQUNoQixHQUFJazRCLEdBQWV6
N0IsS0FBS3k3QixZQUV4QixPQUFRQSxHQUEyRCxXQUEzQzU1QixFQUFPbWlCLElBQUt5WCxFQUFj
LFlBQ2pEQSxFQUFlQSxFQUFhQSxZQUc3QixPQUFPQSxJQUFnQjlyQixRQU0xQjlOLEVBQU93QixN
QUFRczRCLFdBQVksY0FBZUMsVUFBVyxlQUFpQixTQUFVaGUsRUFBUXVFLEdBQ3ZGLEdBQUluUyxH
QUFNLGdCQUFrQm1TLENBRTVCdGdCLEdBQU9HLEdBQUk0YixHQUFXLFNBQVU1TCxHQUMvQixNQUFP
c1AsR0FBUXRoQixLQUFNLFNBQVV3RCxFQUFNb2EsRUFBUTVMLEdBQzVDLEdBQUlrcEIsR0FBTVos
R0FBVzkyQixFQUVyQixPQUFhd0IsVUFBUmdOLEVBQ0drcEIsRUFBTUEsRUFBSy9ZLEdBQVMzZSxF
QUFNb2EsUUFHN0JzZCxFQUNKQSxFQUFJVyxTQUNGN3JCLEVBQVlrckIsRUFBSUssWUFBVnZwQixF
QUNQaEMsRUFBTWdDLEVBQU1rcEIsRUFBSUcsYUFJakI3M0IsRUFBTW9hLEdBQVc1TCxJQUVoQjRM
LEVBQVE1TCxFQUFLck8sVUFBVWYsV0FVNUJmLEVBQU93QixNQUFRLE1BQU8sUUFBVSxTQUFVSSxF
QUFHMGUsR0FDNUN0Z0IsRUFBT2d5QixTQUFVMVIsR0FBU2lRLEdBQWNueEIsRUFBUTB3QixjQUMv
QyxTQUFVbnVCLEVBQU13dUIsR0FDZixHQUFLQSxFQUlKLE1BSEFBLEdBQVdELEdBQVF2dUIsRUFB
TTJlLEdBR2xCdU8sR0FBVWhqQixLQUFNc2tCLEdBQ3RCbndCLEVBQVEyQixHQUFPaXZCLFdBQVl0
USxHQUFTLEtBQ3BDNlAsTUFRTG53QixFQUFPd0IsTUFBUXk0QixPQUFRLFNBQVVDLE1BQU8sU0FB
VyxTQUFVejNCLEVBQU1vQixHQUNsRTdELEVBQU93QixNQUFRMnhCLFFBQVMsUUFBVTF3QixFQUFN
OHBCLFFBQVMxb0IsRUFBTXMyQixHQUFJLFFBQVUxM0IsR0FDcEUsU0FBVTIzQixFQUFjQyxHQUd4
QnI2QixFQUFPRyxHQUFJazZCLEdBQWEsU0FBVW5ILEVBQVEzdEIsR0FDekMsR0FBSW1hLEdBQVk1
ZCxVQUFVZixTQUFZcTVCLEdBQWtDLGlCQUFYbEgsSUFDNUR6QixFQUFRMkksSUFBa0JsSCxLQUFX
LEdBQVEzdEIsS0FBVSxFQUFPLFNBQVcsU0FFMUUsT0FBT2thLEdBQVF0aEIsS0FBTSxTQUFVd0Qs
RUFBTWtDLEVBQU0wQixHQUMxQyxHQUFJaEcsRUFFSixPQUFLUyxHQUFPK0QsU0FBVXBDLEdBR2tC
LElBQWhDMDRCLEVBQVN6N0IsUUFBUyxTQUN4QitDLEVBQU0sUUFBVWMsR0FDaEJkLEVBQUs1RCxT
QUFTK1AsZ0JBQWlCLFNBQVdyTCxHQUlyQixJQUFsQmQsRUFBS2lKLFVBQ1RyTCxFQUFNb0MsRUFB
S21NLGdCQUlKekssS0FBS2t1QixJQUNYNXZCLEVBQUt3aEIsS0FBTSxTQUFXMWdCLEdBQVFsRCxF
QUFLLFNBQVdrRCxHQUM5Q2QsRUFBS3doQixLQUFNLFNBQVcxZ0IsR0FBUWxELEVBQUssU0FBV2tE
LEdBQzlDbEQsRUFBSyxTQUFXa0QsS0FJRFUsU0FBVm9DLEVBR052RixFQUFPbWlCLElBQUt4Z0Is
RUFBTWtDLEVBQU00dEIsR0FHeEJ6eEIsRUFBT2lpQixNQUFPdGdCLEVBQU1rQyxFQUFNMEIsRUFB
T2tzQixJQUNoQzV0QixFQUFNNmIsRUFBWXdULEVBQVMvdkIsT0FBV3VjLFFBbUJyQixrQkFBWDRh
LFNBQXlCQSxPQUFPQyxLQUMzQ0QsT0FBUSxZQUFjLFdBQ3JCLE1BQU90NkIsSUFPVCxJQUdDdzZC
LElBQVV0OEIsRUFBTzhCLE9BR2pCeTZCLEdBQUt2OEIsRUFBT3c4QixDQXlCYixPQXZCQTE2QixH
QUFPMjZCLFdBQWEsU0FBVTUzQixHQVM3QixNQVJLN0UsR0FBT3c4QixJQUFNMTZCLElBQ2pCOUIs
RUFBT3c4QixFQUFJRCxJQUdQMTNCLEdBQVE3RSxFQUFPOEIsU0FBV0EsSUFDOUI5QixFQUFPOEIs
T0FBU3c2QixJQUdWeDZCLEdBTUY1QixJQUNMRixFQUFPOEIsT0FBUzlCLEVBQU93OEIsRUFBSTE2
QixHQU9yQkEiLCJmaWxlIjoianF1ZXJ5LnNsaW0ubWluLmpzIn0KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMv
anF1ZXJ5L2V4dGVybmFsL3NpenpsZS9MSUNFTlNFLnR4dCBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25l
L25vZGVfbW9kdWxlcy9qcXVlcnkvZXh0ZXJuYWwvc2l6emxlL0xJQ0VOU0UudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmRkN2NlOTQwMmNjYjhhYmQzMTVmZGUzNmQ3ZDY4N2Q4OWRjNWQ5MDAKLS0tIC9kZXYvbnVs
bAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L2V4dGVybmFs
L3NpenpsZS9MSUNFTlNFLnR4dApAQCAtMCwwICsxLDM2IEBACitDb3B5cmlnaHQgalF1ZXJ5IEZv
dW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycywgaHR0cHM6Ly9qcXVlcnkub3JnLworCitU
aGlzIHNvZnR3YXJlIGNvbnNpc3RzIG9mIHZvbHVudGFyeSBjb250cmlidXRpb25zIG1hZGUgYnkg
bWFueQoraW5kaXZpZHVhbHMuIEZvciBleGFjdCBjb250cmlidXRpb24gaGlzdG9yeSwgc2VlIHRo
ZSByZXZpc2lvbiBoaXN0b3J5CithdmFpbGFibGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL2pxdWVy
eS9zaXp6bGUKKworVGhlIGZvbGxvd2luZyBsaWNlbnNlIGFwcGxpZXMgdG8gYWxsIHBhcnRzIG9m
IHRoaXMgc29mdHdhcmUgZXhjZXB0IGFzCitkb2N1bWVudGVkIGJlbG93OgorCis9PT09CisKK1Bl
cm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29u
IG9idGFpbmluZworYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1l
bnRhdGlvbiBmaWxlcyAodGhlCisiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUg
d2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCit3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJp
Z2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCitkaXN0cmlidXRlLCBz
dWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8KK3Bl
cm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywg
c3ViamVjdCB0bwordGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorCitUaGUgYWJvdmUgY29weXJp
Z2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZQoraW5jbHVkZWQg
aW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisK
K1RIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFO
WSBLSU5ELAorRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRP
IFRIRSBXQVJSQU5USUVTIE9GCitNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFORAorTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
QVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRQorTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERB
TUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTgorT0YgQ09OVFJB
Q1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNU
SU9OCitXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRI
RSBTT0ZUV0FSRS4KKworPT09PQorCitBbGwgZmlsZXMgbG9jYXRlZCBpbiB0aGUgbm9kZV9tb2R1
bGVzIGFuZCBleHRlcm5hbCBkaXJlY3RvcmllcyBhcmUKK2V4dGVybmFsbHkgbWFpbnRhaW5lZCBs
aWJyYXJpZXMgdXNlZCBieSB0aGlzIHNvZnR3YXJlIHdoaWNoIGhhdmUgdGhlaXIKK293biBsaWNl
bnNlczsgd2UgcmVjb21tZW5kIHlvdSByZWFkIHRoZW0sIGFzIHRoZWlyIHRlcm1zIG1heSBkaWZm
ZXIgZnJvbQordGhlIHRlcm1zIGFib3ZlLgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2Jv
bmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9leHRlcm5hbC9zaXp6bGUvZGlzdC9zaXp6bGUuanMgYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L2V4dGVybmFsL3NpenpsZS9k
aXN0L3NpenpsZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YWI5NDg1YWI2NTc5ZTgwNGQwNDE5YWQ3ZDhlNGFi
ODBkNWE5MmU3Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9t
b2R1bGVzL2pxdWVyeS9leHRlcm5hbC9zaXp6bGUvZGlzdC9zaXp6bGUuanMKQEAgLTAsMCArMSwy
MjcyIEBACisvKiEKKyAqIFNpenpsZSBDU1MgU2VsZWN0b3IgRW5naW5lIHYyLjMuMworICogaHR0
cHM6Ly9zaXp6bGVqcy5jb20vCisgKgorICogQ29weXJpZ2h0IGpRdWVyeSBGb3VuZGF0aW9uIGFu
ZCBvdGhlciBjb250cmlidXRvcnMKKyAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZQor
ICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZQorICoKKyAqIERhdGU6IDIwMTYtMDgtMDgKKyAq
LworKGZ1bmN0aW9uKCB3aW5kb3cgKSB7CisKK3ZhciBpLAorICAgIHN1cHBvcnQsCisgICAgRXhw
ciwKKyAgICBnZXRUZXh0LAorICAgIGlzWE1MLAorICAgIHRva2VuaXplLAorICAgIGNvbXBpbGUs
CisgICAgc2VsZWN0LAorICAgIG91dGVybW9zdENvbnRleHQsCisgICAgc29ydElucHV0LAorICAg
IGhhc0R1cGxpY2F0ZSwKKworICAgIC8vIExvY2FsIGRvY3VtZW50IHZhcnMKKyAgICBzZXREb2N1
bWVudCwKKyAgICBkb2N1bWVudCwKKyAgICBkb2NFbGVtLAorICAgIGRvY3VtZW50SXNIVE1MLAor
ICAgIHJidWdneVFTQSwKKyAgICByYnVnZ3lNYXRjaGVzLAorICAgIG1hdGNoZXMsCisgICAgY29u
dGFpbnMsCisKKyAgICAvLyBJbnN0YW5jZS1zcGVjaWZpYyBkYXRhCisgICAgZXhwYW5kbyA9ICJz
aXp6bGUiICsgMSAqIG5ldyBEYXRlKCksCisgICAgcHJlZmVycmVkRG9jID0gd2luZG93LmRvY3Vt
ZW50LAorICAgIGRpcnJ1bnMgPSAwLAorICAgIGRvbmUgPSAwLAorICAgIGNsYXNzQ2FjaGUgPSBj
cmVhdGVDYWNoZSgpLAorICAgIHRva2VuQ2FjaGUgPSBjcmVhdGVDYWNoZSgpLAorICAgIGNvbXBp
bGVyQ2FjaGUgPSBjcmVhdGVDYWNoZSgpLAorICAgIHNvcnRPcmRlciA9IGZ1bmN0aW9uKCBhLCBi
ICkgeworICAgICAgICBpZiAoIGEgPT09IGIgKSB7CisgICAgICAgICAgICBoYXNEdXBsaWNhdGUg
PSB0cnVlOworICAgICAgICB9CisgICAgICAgIHJldHVybiAwOworICAgIH0sCisKKyAgICAvLyBJ
bnN0YW5jZSBtZXRob2RzCisgICAgaGFzT3duID0gKHt9KS5oYXNPd25Qcm9wZXJ0eSwKKyAgICBh
cnIgPSBbXSwKKyAgICBwb3AgPSBhcnIucG9wLAorICAgIHB1c2hfbmF0aXZlID0gYXJyLnB1c2gs
CisgICAgcHVzaCA9IGFyci5wdXNoLAorICAgIHNsaWNlID0gYXJyLnNsaWNlLAorICAgIC8vIFVz
ZSBhIHN0cmlwcGVkLWRvd24gaW5kZXhPZiBhcyBpdCdzIGZhc3RlciB0aGFuIG5hdGl2ZQorICAg
IC8vIGh0dHBzOi8vanNwZXJmLmNvbS90aG9yLWluZGV4b2YtdnMtZm9yLzUKKyAgICBpbmRleE9m
ID0gZnVuY3Rpb24oIGxpc3QsIGVsZW0gKSB7CisgICAgICAgIHZhciBpID0gMCwKKyAgICAgICAg
ICAgIGxlbiA9IGxpc3QubGVuZ3RoOworICAgICAgICBmb3IgKCA7IGkgPCBsZW47IGkrKyApIHsK
KyAgICAgICAgICAgIGlmICggbGlzdFtpXSA9PT0gZWxlbSApIHsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gaTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gLTE7Cisg
ICAgfSwKKworICAgIGJvb2xlYW5zID0gImNoZWNrZWR8c2VsZWN0ZWR8YXN5bmN8YXV0b2ZvY3Vz
fGF1dG9wbGF5fGNvbnRyb2xzfGRlZmVyfGRpc2FibGVkfGhpZGRlbnxpc21hcHxsb29wfG11bHRp
cGxlfG9wZW58cmVhZG9ubHl8cmVxdWlyZWR8c2NvcGVkIiwKKworICAgIC8vIFJlZ3VsYXIgZXhw
cmVzc2lvbnMKKworICAgIC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtc2VsZWN0b3JzLyN3
aGl0ZXNwYWNlCisgICAgd2hpdGVzcGFjZSA9ICJbXFx4MjBcXHRcXHJcXG5cXGZdIiwKKworICAg
IC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIxL3N5bmRhdGEuaHRtbCN2YWx1ZS1kZWYtaWRl
bnRpZmllcgorICAgIGlkZW50aWZpZXIgPSAiKD86XFxcXC58W1xcdy1dfFteXDAtXFx4YTBdKSsi
LAorCisgICAgLy8gQXR0cmlidXRlIHNlbGVjdG9yczogaHR0cDovL3d3dy53My5vcmcvVFIvc2Vs
ZWN0b3JzLyNhdHRyaWJ1dGUtc2VsZWN0b3JzCisgICAgYXR0cmlidXRlcyA9ICJcXFsiICsgd2hp
dGVzcGFjZSArICIqKCIgKyBpZGVudGlmaWVyICsgIikoPzoiICsgd2hpdGVzcGFjZSArCisgICAg
ICAgIC8vIE9wZXJhdG9yIChjYXB0dXJlIDIpCisgICAgICAgICIqKFsqXiR8IX5dPz0pIiArIHdo
aXRlc3BhY2UgKworICAgICAgICAvLyAiQXR0cmlidXRlIHZhbHVlcyBtdXN0IGJlIENTUyBpZGVu
dGlmaWVycyBbY2FwdHVyZSA1XSBvciBzdHJpbmdzIFtjYXB0dXJlIDMgb3IgY2FwdHVyZSA0XSIK
KyAgICAgICAgIiooPzonKCg/OlxcXFwufFteXFxcXCddKSopJ3xcIigoPzpcXFxcLnxbXlxcXFxc
Il0pKilcInwoIiArIGlkZW50aWZpZXIgKyAiKSl8KSIgKyB3aGl0ZXNwYWNlICsKKyAgICAgICAg
IipcXF0iLAorCisgICAgcHNldWRvcyA9ICI6KCIgKyBpZGVudGlmaWVyICsgIikoPzpcXCgoIiAr
CisgICAgICAgIC8vIFRvIHJlZHVjZSB0aGUgbnVtYmVyIG9mIHNlbGVjdG9ycyBuZWVkaW5nIHRv
a2VuaXplIGluIHRoZSBwcmVGaWx0ZXIsIHByZWZlciBhcmd1bWVudHM6CisgICAgICAgIC8vIDEu
IHF1b3RlZCAoY2FwdHVyZSAzOyBjYXB0dXJlIDQgb3IgY2FwdHVyZSA1KQorICAgICAgICAiKCco
KD86XFxcXC58W15cXFxcJ10pKiknfFwiKCg/OlxcXFwufFteXFxcXFwiXSkqKVwiKXwiICsKKyAg
ICAgICAgLy8gMi4gc2ltcGxlIChjYXB0dXJlIDYpCisgICAgICAgICIoKD86XFxcXC58W15cXFxc
KClbXFxdXXwiICsgYXR0cmlidXRlcyArICIpKil8IiArCisgICAgICAgIC8vIDMuIGFueXRoaW5n
IGVsc2UgKGNhcHR1cmUgMikKKyAgICAgICAgIi4qIiArCisgICAgICAgICIpXFwpfCkiLAorCisg
ICAgLy8gTGVhZGluZyBhbmQgbm9uLWVzY2FwZWQgdHJhaWxpbmcgd2hpdGVzcGFjZSwgY2FwdHVy
aW5nIHNvbWUgbm9uLXdoaXRlc3BhY2UgY2hhcmFjdGVycyBwcmVjZWRpbmcgdGhlIGxhdHRlcgor
ICAgIHJ3aGl0ZXNwYWNlID0gbmV3IFJlZ0V4cCggd2hpdGVzcGFjZSArICIrIiwgImciICksCisg
ICAgcnRyaW0gPSBuZXcgUmVnRXhwKCAiXiIgKyB3aGl0ZXNwYWNlICsgIit8KCg/Ol58W15cXFxc
XSkoPzpcXFxcLikqKSIgKyB3aGl0ZXNwYWNlICsgIiskIiwgImciICksCisKKyAgICByY29tbWEg
PSBuZXcgUmVnRXhwKCAiXiIgKyB3aGl0ZXNwYWNlICsgIiosIiArIHdoaXRlc3BhY2UgKyAiKiIg
KSwKKyAgICByY29tYmluYXRvcnMgPSBuZXcgUmVnRXhwKCAiXiIgKyB3aGl0ZXNwYWNlICsgIioo
Wz4rfl18IiArIHdoaXRlc3BhY2UgKyAiKSIgKyB3aGl0ZXNwYWNlICsgIioiICksCisKKyAgICBy
YXR0cmlidXRlUXVvdGVzID0gbmV3IFJlZ0V4cCggIj0iICsgd2hpdGVzcGFjZSArICIqKFteXFxd
J1wiXSo/KSIgKyB3aGl0ZXNwYWNlICsgIipcXF0iLCAiZyIgKSwKKworICAgIHJwc2V1ZG8gPSBu
ZXcgUmVnRXhwKCBwc2V1ZG9zICksCisgICAgcmlkZW50aWZpZXIgPSBuZXcgUmVnRXhwKCAiXiIg
KyBpZGVudGlmaWVyICsgIiQiICksCisKKyAgICBtYXRjaEV4cHIgPSB7CisgICAgICAgICJJRCI6
IG5ldyBSZWdFeHAoICJeIygiICsgaWRlbnRpZmllciArICIpIiApLAorICAgICAgICAiQ0xBU1Mi
OiBuZXcgUmVnRXhwKCAiXlxcLigiICsgaWRlbnRpZmllciArICIpIiApLAorICAgICAgICAiVEFH
IjogbmV3IFJlZ0V4cCggIl4oIiArIGlkZW50aWZpZXIgKyAifFsqXSkiICksCisgICAgICAgICJB
VFRSIjogbmV3IFJlZ0V4cCggIl4iICsgYXR0cmlidXRlcyApLAorICAgICAgICAiUFNFVURPIjog
bmV3IFJlZ0V4cCggIl4iICsgcHNldWRvcyApLAorICAgICAgICAiQ0hJTEQiOiBuZXcgUmVnRXhw
KCAiXjoob25seXxmaXJzdHxsYXN0fG50aHxudGgtbGFzdCktKGNoaWxkfG9mLXR5cGUpKD86XFwo
IiArIHdoaXRlc3BhY2UgKworICAgICAgICAgICAgIiooZXZlbnxvZGR8KChbKy1dfCkoXFxkKilu
fCkiICsgd2hpdGVzcGFjZSArICIqKD86KFsrLV18KSIgKyB3aGl0ZXNwYWNlICsKKyAgICAgICAg
ICAgICIqKFxcZCspfCkpIiArIHdoaXRlc3BhY2UgKyAiKlxcKXwpIiwgImkiICksCisgICAgICAg
ICJib29sIjogbmV3IFJlZ0V4cCggIl4oPzoiICsgYm9vbGVhbnMgKyAiKSQiLCAiaSIgKSwKKyAg
ICAgICAgLy8gRm9yIHVzZSBpbiBsaWJyYXJpZXMgaW1wbGVtZW50aW5nIC5pcygpCisgICAgICAg
IC8vIFdlIHVzZSB0aGlzIGZvciBQT1MgbWF0Y2hpbmcgaW4gYHNlbGVjdGAKKyAgICAgICAgIm5l
ZWRzQ29udGV4dCI6IG5ldyBSZWdFeHAoICJeIiArIHdoaXRlc3BhY2UgKyAiKls+K35dfDooZXZl
bnxvZGR8ZXF8Z3R8bHR8bnRofGZpcnN0fGxhc3QpKD86XFwoIiArCisgICAgICAgICAgICB3aGl0
ZXNwYWNlICsgIiooKD86LVxcZCk/XFxkKikiICsgd2hpdGVzcGFjZSArICIqXFwpfCkoPz1bXi1d
fCQpIiwgImkiICkKKyAgICB9LAorCisgICAgcmlucHV0cyA9IC9eKD86aW5wdXR8c2VsZWN0fHRl
eHRhcmVhfGJ1dHRvbikkL2ksCisgICAgcmhlYWRlciA9IC9eaFxkJC9pLAorCisgICAgcm5hdGl2
ZSA9IC9eW157XStce1xzKlxbbmF0aXZlIFx3LywKKworICAgIC8vIEVhc2lseS1wYXJzZWFibGUv
cmV0cmlldmFibGUgSUQgb3IgVEFHIG9yIENMQVNTIHNlbGVjdG9ycworICAgIHJxdWlja0V4cHIg
PSAvXig/OiMoW1x3LV0rKXwoXHcrKXxcLihbXHctXSspKSQvLAorCisgICAgcnNpYmxpbmcgPSAv
Wyt+XS8sCisKKyAgICAvLyBDU1MgZXNjYXBlcworICAgIC8vIGh0dHA6Ly93d3cudzMub3JnL1RS
L0NTUzIxL3N5bmRhdGEuaHRtbCNlc2NhcGVkLWNoYXJhY3RlcnMKKyAgICBydW5lc2NhcGUgPSBu
ZXcgUmVnRXhwKCAiXFxcXChbXFxkYS1mXXsxLDZ9IiArIHdoaXRlc3BhY2UgKyAiP3woIiArIHdo
aXRlc3BhY2UgKyAiKXwuKSIsICJpZyIgKSwKKyAgICBmdW5lc2NhcGUgPSBmdW5jdGlvbiggXywg
ZXNjYXBlZCwgZXNjYXBlZFdoaXRlc3BhY2UgKSB7CisgICAgICAgIHZhciBoaWdoID0gIjB4IiAr
IGVzY2FwZWQgLSAweDEwMDAwOworICAgICAgICAvLyBOYU4gbWVhbnMgbm9uLWNvZGVwb2ludAor
ICAgICAgICAvLyBTdXBwb3J0OiBGaXJlZm94PDI0CisgICAgICAgIC8vIFdvcmthcm91bmQgZXJy
b25lb3VzIG51bWVyaWMgaW50ZXJwcmV0YXRpb24gb2YgKyIweCIKKyAgICAgICAgcmV0dXJuIGhp
Z2ggIT09IGhpZ2ggfHwgZXNjYXBlZFdoaXRlc3BhY2UgPworICAgICAgICAgICAgZXNjYXBlZCA6
CisgICAgICAgICAgICBoaWdoIDwgMCA/CisgICAgICAgICAgICAgICAgLy8gQk1QIGNvZGVwb2lu
dAorICAgICAgICAgICAgICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoIGhpZ2ggKyAweDEwMDAwICkg
OgorICAgICAgICAgICAgICAgIC8vIFN1cHBsZW1lbnRhbCBQbGFuZSBjb2RlcG9pbnQgKHN1cnJv
Z2F0ZSBwYWlyKQorICAgICAgICAgICAgICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoIGhpZ2ggPj4g
MTAgfCAweEQ4MDAsIGhpZ2ggJiAweDNGRiB8IDB4REMwMCApOworICAgIH0sCisKKyAgICAvLyBD
U1Mgc3RyaW5nL2lkZW50aWZpZXIgc2VyaWFsaXphdGlvbgorICAgIC8vIGh0dHBzOi8vZHJhZnRz
LmNzc3dnLm9yZy9jc3NvbS8jY29tbW9uLXNlcmlhbGl6aW5nLWlkaW9tcworICAgIHJjc3Nlc2Nh
cGUgPSAvKFtcMC1ceDFmXHg3Zl18Xi0/XGQpfF4tJHxbXlwwLVx4MWZceDdmLVx1RkZGRlx3LV0v
ZywKKyAgICBmY3NzZXNjYXBlID0gZnVuY3Rpb24oIGNoLCBhc0NvZGVQb2ludCApIHsKKyAgICAg
ICAgaWYgKCBhc0NvZGVQb2ludCApIHsKKworICAgICAgICAgICAgLy8gVSswMDAwIE5VTEwgYmVj
b21lcyBVK0ZGRkQgUkVQTEFDRU1FTlQgQ0hBUkFDVEVSCisgICAgICAgICAgICBpZiAoIGNoID09
PSAiXDAiICkgeworICAgICAgICAgICAgICAgIHJldHVybiAiXHVGRkZEIjsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgLy8gQ29udHJvbCBjaGFyYWN0ZXJzIGFuZCAoZGVwZW5kZW50IHVw
b24gcG9zaXRpb24pIG51bWJlcnMgZ2V0IGVzY2FwZWQgYXMgY29kZSBwb2ludHMKKyAgICAgICAg
ICAgIHJldHVybiBjaC5zbGljZSggMCwgLTEgKSArICJcXCIgKyBjaC5jaGFyQ29kZUF0KCBjaC5s
ZW5ndGggLSAxICkudG9TdHJpbmcoIDE2ICkgKyAiICI7CisgICAgICAgIH0KKworICAgICAgICAv
LyBPdGhlciBwb3RlbnRpYWxseS1zcGVjaWFsIEFTQ0lJIGNoYXJhY3RlcnMgZ2V0IGJhY2tzbGFz
aC1lc2NhcGVkCisgICAgICAgIHJldHVybiAiXFwiICsgY2g7CisgICAgfSwKKworICAgIC8vIFVz
ZWQgZm9yIGlmcmFtZXMKKyAgICAvLyBTZWUgc2V0RG9jdW1lbnQoKQorICAgIC8vIFJlbW92aW5n
IHRoZSBmdW5jdGlvbiB3cmFwcGVyIGNhdXNlcyBhICJQZXJtaXNzaW9uIERlbmllZCIKKyAgICAv
LyBlcnJvciBpbiBJRQorICAgIHVubG9hZEhhbmRsZXIgPSBmdW5jdGlvbigpIHsKKyAgICAgICAg
c2V0RG9jdW1lbnQoKTsKKyAgICB9LAorCisgICAgZGlzYWJsZWRBbmNlc3RvciA9IGFkZENvbWJp
bmF0b3IoCisgICAgICAgIGZ1bmN0aW9uKCBlbGVtICkgeworICAgICAgICAgICAgcmV0dXJuIGVs
ZW0uZGlzYWJsZWQgPT09IHRydWUgJiYgKCJmb3JtIiBpbiBlbGVtIHx8ICJsYWJlbCIgaW4gZWxl
bSk7CisgICAgICAgIH0sCisgICAgICAgIHsgZGlyOiAicGFyZW50Tm9kZSIsIG5leHQ6ICJsZWdl
bmQiIH0KKyAgICApOworCisvLyBPcHRpbWl6ZSBmb3IgcHVzaC5hcHBseSggXywgTm9kZUxpc3Qg
KQordHJ5IHsKKyAgICBwdXNoLmFwcGx5KAorICAgICAgICAoYXJyID0gc2xpY2UuY2FsbCggcHJl
ZmVycmVkRG9jLmNoaWxkTm9kZXMgKSksCisgICAgICAgIHByZWZlcnJlZERvYy5jaGlsZE5vZGVz
CisgICAgKTsKKyAgICAvLyBTdXBwb3J0OiBBbmRyb2lkPDQuMAorICAgIC8vIERldGVjdCBzaWxl
bnRseSBmYWlsaW5nIHB1c2guYXBwbHkKKyAgICBhcnJbIHByZWZlcnJlZERvYy5jaGlsZE5vZGVz
Lmxlbmd0aCBdLm5vZGVUeXBlOworfSBjYXRjaCAoIGUgKSB7CisgICAgcHVzaCA9IHsgYXBwbHk6
IGFyci5sZW5ndGggPworCisgICAgICAgIC8vIExldmVyYWdlIHNsaWNlIGlmIHBvc3NpYmxlCisg
ICAgICAgIGZ1bmN0aW9uKCB0YXJnZXQsIGVscyApIHsKKyAgICAgICAgICAgIHB1c2hfbmF0aXZl
LmFwcGx5KCB0YXJnZXQsIHNsaWNlLmNhbGwoZWxzKSApOworICAgICAgICB9IDoKKworICAgICAg
ICAvLyBTdXBwb3J0OiBJRTw5CisgICAgICAgIC8vIE90aGVyd2lzZSBhcHBlbmQgZGlyZWN0bHkK
KyAgICAgICAgZnVuY3Rpb24oIHRhcmdldCwgZWxzICkgeworICAgICAgICAgICAgdmFyIGogPSB0
YXJnZXQubGVuZ3RoLAorICAgICAgICAgICAgICAgIGkgPSAwOworICAgICAgICAgICAgLy8gQ2Fu
J3QgdHJ1c3QgTm9kZUxpc3QubGVuZ3RoCisgICAgICAgICAgICB3aGlsZSAoICh0YXJnZXRbaisr
XSA9IGVsc1tpKytdKSApIHt9CisgICAgICAgICAgICB0YXJnZXQubGVuZ3RoID0gaiAtIDE7Cisg
ICAgICAgIH0KKyAgICB9OworfQorCitmdW5jdGlvbiBTaXp6bGUoIHNlbGVjdG9yLCBjb250ZXh0
LCByZXN1bHRzLCBzZWVkICkgeworICAgIHZhciBtLCBpLCBlbGVtLCBuaWQsIG1hdGNoLCBncm91
cHMsIG5ld1NlbGVjdG9yLAorICAgICAgICBuZXdDb250ZXh0ID0gY29udGV4dCAmJiBjb250ZXh0
Lm93bmVyRG9jdW1lbnQsCisKKyAgICAgICAgLy8gbm9kZVR5cGUgZGVmYXVsdHMgdG8gOSwgc2lu
Y2UgY29udGV4dCBkZWZhdWx0cyB0byBkb2N1bWVudAorICAgICAgICBub2RlVHlwZSA9IGNvbnRl
eHQgPyBjb250ZXh0Lm5vZGVUeXBlIDogOTsKKworICAgIHJlc3VsdHMgPSByZXN1bHRzIHx8IFtd
OworCisgICAgLy8gUmV0dXJuIGVhcmx5IGZyb20gY2FsbHMgd2l0aCBpbnZhbGlkIHNlbGVjdG9y
IG9yIGNvbnRleHQKKyAgICBpZiAoIHR5cGVvZiBzZWxlY3RvciAhPT0gInN0cmluZyIgfHwgIXNl
bGVjdG9yIHx8CisgICAgICAgIG5vZGVUeXBlICE9PSAxICYmIG5vZGVUeXBlICE9PSA5ICYmIG5v
ZGVUeXBlICE9PSAxMSApIHsKKworICAgICAgICByZXR1cm4gcmVzdWx0czsKKyAgICB9CisKKyAg
ICAvLyBUcnkgdG8gc2hvcnRjdXQgZmluZCBvcGVyYXRpb25zIChhcyBvcHBvc2VkIHRvIGZpbHRl
cnMpIGluIEhUTUwgZG9jdW1lbnRzCisgICAgaWYgKCAhc2VlZCApIHsKKworICAgICAgICBpZiAo
ICggY29udGV4dCA/IGNvbnRleHQub3duZXJEb2N1bWVudCB8fCBjb250ZXh0IDogcHJlZmVycmVk
RG9jICkgIT09IGRvY3VtZW50ICkgeworICAgICAgICAgICAgc2V0RG9jdW1lbnQoIGNvbnRleHQg
KTsKKyAgICAgICAgfQorICAgICAgICBjb250ZXh0ID0gY29udGV4dCB8fCBkb2N1bWVudDsKKwor
ICAgICAgICBpZiAoIGRvY3VtZW50SXNIVE1MICkgeworCisgICAgICAgICAgICAvLyBJZiB0aGUg
c2VsZWN0b3IgaXMgc3VmZmljaWVudGx5IHNpbXBsZSwgdHJ5IHVzaW5nIGEgImdldCpCeSoiIERP
TSBtZXRob2QKKyAgICAgICAgICAgIC8vIChleGNlcHRpbmcgRG9jdW1lbnRGcmFnbWVudCBjb250
ZXh0LCB3aGVyZSB0aGUgbWV0aG9kcyBkb24ndCBleGlzdCkKKyAgICAgICAgICAgIGlmICggbm9k
ZVR5cGUgIT09IDExICYmIChtYXRjaCA9IHJxdWlja0V4cHIuZXhlYyggc2VsZWN0b3IgKSkgKSB7
CisKKyAgICAgICAgICAgICAgICAvLyBJRCBzZWxlY3RvcgorICAgICAgICAgICAgICAgIGlmICgg
KG0gPSBtYXRjaFsxXSkgKSB7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gRG9jdW1lbnQgY29u
dGV4dAorICAgICAgICAgICAgICAgICAgICBpZiAoIG5vZGVUeXBlID09PSA5ICkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCAoZWxlbSA9IGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQoIG0g
KSkgKSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTdXBwb3J0OiBJRSwgT3Bl
cmEsIFdlYmtpdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IGlkZW50aWZ5
IHZlcnNpb25zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2V0RWxlbWVudEJ5SWQg
Y2FuIG1hdGNoIGVsZW1lbnRzIGJ5IG5hbWUgaW5zdGVhZCBvZiBJRAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICggZWxlbS5pZCA9PT0gbSApIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVzdWx0cy5wdXNoKCBlbGVtICk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiByZXN1bHRzOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdHM7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICAgICAgLy8gRWxlbWVudCBjb250ZXh0CisgICAgICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6IElFLCBPcGVyYSwg
V2Via2l0CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiBpZGVudGlmeSB2ZXJzaW9u
cworICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2V0RWxlbWVudEJ5SWQgY2FuIG1hdGNoIGVs
ZW1lbnRzIGJ5IG5hbWUgaW5zdGVhZCBvZiBJRAorICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCBuZXdDb250ZXh0ICYmIChlbGVtID0gbmV3Q29udGV4dC5nZXRFbGVtZW50QnlJZCggbSApKSAm
JgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5zKCBjb250ZXh0LCBlbGVtICkg
JiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtLmlkID09PSBtICkgeworCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cy5wdXNoKCBlbGVtICk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdHM7CisgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIFR5cGUgc2Vs
ZWN0b3IKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCBtYXRjaFsyXSApIHsKKyAgICAgICAg
ICAgICAgICAgICAgcHVzaC5hcHBseSggcmVzdWx0cywgY29udGV4dC5nZXRFbGVtZW50c0J5VGFn
TmFtZSggc2VsZWN0b3IgKSApOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0czsK
KworICAgICAgICAgICAgICAgIC8vIENsYXNzIHNlbGVjdG9yCisgICAgICAgICAgICAgICAgfSBl
bHNlIGlmICggKG0gPSBtYXRjaFszXSkgJiYgc3VwcG9ydC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1l
ICYmCisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSAp
IHsKKworICAgICAgICAgICAgICAgICAgICBwdXNoLmFwcGx5KCByZXN1bHRzLCBjb250ZXh0Lmdl
dEVsZW1lbnRzQnlDbGFzc05hbWUoIG0gKSApOworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
cmVzdWx0czsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IC8vIFRha2UgYWR2YW50YWdlIG9mIHF1ZXJ5U2VsZWN0b3JBbGwKKyAgICAgICAgICAgIGlmICgg
c3VwcG9ydC5xc2EgJiYKKyAgICAgICAgICAgICAgICAhY29tcGlsZXJDYWNoZVsgc2VsZWN0b3Ig
KyAiICIgXSAmJgorICAgICAgICAgICAgICAgICghcmJ1Z2d5UVNBIHx8ICFyYnVnZ3lRU0EudGVz
dCggc2VsZWN0b3IgKSkgKSB7CisKKyAgICAgICAgICAgICAgICBpZiAoIG5vZGVUeXBlICE9PSAx
ICkgeworICAgICAgICAgICAgICAgICAgICBuZXdDb250ZXh0ID0gY29udGV4dDsKKyAgICAgICAg
ICAgICAgICAgICAgbmV3U2VsZWN0b3IgPSBzZWxlY3RvcjsKKworICAgICAgICAgICAgICAgIC8v
IHFTQSBsb29rcyBvdXRzaWRlIEVsZW1lbnQgY29udGV4dCwgd2hpY2ggaXMgbm90IHdoYXQgd2Ug
d2FudAorICAgICAgICAgICAgICAgIC8vIFRoYW5rcyB0byBBbmRyZXcgRHVwb250IGZvciB0aGlz
IHdvcmthcm91bmQgdGVjaG5pcXVlCisgICAgICAgICAgICAgICAgLy8gU3VwcG9ydDogSUUgPD04
CisgICAgICAgICAgICAgICAgLy8gRXhjbHVkZSBvYmplY3QgZWxlbWVudHMKKyAgICAgICAgICAg
ICAgICB9IGVsc2UgaWYgKCBjb250ZXh0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgIT09ICJvYmpl
Y3QiICkgeworCisgICAgICAgICAgICAgICAgICAgIC8vIENhcHR1cmUgdGhlIGNvbnRleHQgSUQs
IHNldHRpbmcgaXQgZmlyc3QgaWYgbmVjZXNzYXJ5CisgICAgICAgICAgICAgICAgICAgIGlmICgg
KG5pZCA9IGNvbnRleHQuZ2V0QXR0cmlidXRlKCAiaWQiICkpICkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgbmlkID0gbmlkLnJlcGxhY2UoIHJjc3Nlc2NhcGUsIGZjc3Nlc2NhcGUgKTsKKyAg
ICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRl
eHQuc2V0QXR0cmlidXRlKCAiaWQiLCAobmlkID0gZXhwYW5kbykgKTsKKyAgICAgICAgICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIC8vIFByZWZpeCBldmVyeSBzZWxlY3RvciBp
biB0aGUgbGlzdAorICAgICAgICAgICAgICAgICAgICBncm91cHMgPSB0b2tlbml6ZSggc2VsZWN0
b3IgKTsKKyAgICAgICAgICAgICAgICAgICAgaSA9IGdyb3Vwcy5sZW5ndGg7CisgICAgICAgICAg
ICAgICAgICAgIHdoaWxlICggaS0tICkgeworICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBz
W2ldID0gIiMiICsgbmlkICsgIiAiICsgdG9TZWxlY3RvciggZ3JvdXBzW2ldICk7CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgbmV3U2VsZWN0b3IgPSBncm91cHMu
am9pbiggIiwiICk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gRXhwYW5kIGNvbnRleHQgZm9y
IHNpYmxpbmcgc2VsZWN0b3JzCisgICAgICAgICAgICAgICAgICAgIG5ld0NvbnRleHQgPSByc2li
bGluZy50ZXN0KCBzZWxlY3RvciApICYmIHRlc3RDb250ZXh0KCBjb250ZXh0LnBhcmVudE5vZGUg
KSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDsKKyAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICBpZiAoIG5ld1NlbGVjdG9yICkgeworICAgICAgICAgICAgICAg
ICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaC5hcHBseSggcmVzdWx0cywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdDb250ZXh0LnF1ZXJ5U2VsZWN0b3JBbGwo
IG5ld1NlbGVjdG9yICkKKyAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0czsKKyAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAo
IHFzYUVycm9yICkgeworICAgICAgICAgICAgICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKCBuaWQgPT09IGV4cGFuZG8gKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29udGV4dC5yZW1vdmVBdHRyaWJ1dGUoICJpZCIgKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEFsbCBvdGhlcnMKKyAg
ICByZXR1cm4gc2VsZWN0KCBzZWxlY3Rvci5yZXBsYWNlKCBydHJpbSwgIiQxIiApLCBjb250ZXh0
LCByZXN1bHRzLCBzZWVkICk7Cit9CisKKy8qKgorICogQ3JlYXRlIGtleS12YWx1ZSBjYWNoZXMg
b2YgbGltaXRlZCBzaXplCisgKiBAcmV0dXJucyB7ZnVuY3Rpb24oc3RyaW5nLCBvYmplY3QpfSBS
ZXR1cm5zIHRoZSBPYmplY3QgZGF0YSBhZnRlciBzdG9yaW5nIGl0IG9uIGl0c2VsZiB3aXRoCisg
KiAgcHJvcGVydHkgbmFtZSB0aGUgKHNwYWNlLXN1ZmZpeGVkKSBzdHJpbmcgYW5kIChpZiB0aGUg
Y2FjaGUgaXMgbGFyZ2VyIHRoYW4gRXhwci5jYWNoZUxlbmd0aCkKKyAqICBkZWxldGluZyB0aGUg
b2xkZXN0IGVudHJ5CisgKi8KK2Z1bmN0aW9uIGNyZWF0ZUNhY2hlKCkgeworICAgIHZhciBrZXlz
ID0gW107CisKKyAgICBmdW5jdGlvbiBjYWNoZSgga2V5LCB2YWx1ZSApIHsKKyAgICAgICAgLy8g
VXNlIChrZXkgKyAiICIpIHRvIGF2b2lkIGNvbGxpc2lvbiB3aXRoIG5hdGl2ZSBwcm90b3R5cGUg
cHJvcGVydGllcyAoc2VlIElzc3VlICMxNTcpCisgICAgICAgIGlmICgga2V5cy5wdXNoKCBrZXkg
KyAiICIgKSA+IEV4cHIuY2FjaGVMZW5ndGggKSB7CisgICAgICAgICAgICAvLyBPbmx5IGtlZXAg
dGhlIG1vc3QgcmVjZW50IGVudHJpZXMKKyAgICAgICAgICAgIGRlbGV0ZSBjYWNoZVsga2V5cy5z
aGlmdCgpIF07CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIChjYWNoZVsga2V5ICsgIiAiIF0g
PSB2YWx1ZSk7CisgICAgfQorICAgIHJldHVybiBjYWNoZTsKK30KKworLyoqCisgKiBNYXJrIGEg
ZnVuY3Rpb24gZm9yIHNwZWNpYWwgdXNlIGJ5IFNpenpsZQorICogQHBhcmFtIHtGdW5jdGlvbn0g
Zm4gVGhlIGZ1bmN0aW9uIHRvIG1hcmsKKyAqLworZnVuY3Rpb24gbWFya0Z1bmN0aW9uKCBmbiAp
IHsKKyAgICBmblsgZXhwYW5kbyBdID0gdHJ1ZTsKKyAgICByZXR1cm4gZm47Cit9CisKKy8qKgor
ICogU3VwcG9ydCB0ZXN0aW5nIHVzaW5nIGFuIGVsZW1lbnQKKyAqIEBwYXJhbSB7RnVuY3Rpb259
IGZuIFBhc3NlZCB0aGUgY3JlYXRlZCBlbGVtZW50IGFuZCByZXR1cm5zIGEgYm9vbGVhbiByZXN1
bHQKKyAqLworZnVuY3Rpb24gYXNzZXJ0KCBmbiApIHsKKyAgICB2YXIgZWwgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJmaWVsZHNldCIpOworCisgICAgdHJ5IHsKKyAgICAgICAgcmV0dXJuICEh
Zm4oIGVsICk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fSBmaW5hbGx5IHsKKyAgICAgICAgLy8gUmVtb3ZlIGZyb20gaXRzIHBhcmVudCBieSBkZWZhdWx0
CisgICAgICAgIGlmICggZWwucGFyZW50Tm9kZSApIHsKKyAgICAgICAgICAgIGVsLnBhcmVudE5v
ZGUucmVtb3ZlQ2hpbGQoIGVsICk7CisgICAgICAgIH0KKyAgICAgICAgLy8gcmVsZWFzZSBtZW1v
cnkgaW4gSUUKKyAgICAgICAgZWwgPSBudWxsOworICAgIH0KK30KKworLyoqCisgKiBBZGRzIHRo
ZSBzYW1lIGhhbmRsZXIgZm9yIGFsbCBvZiB0aGUgc3BlY2lmaWVkIGF0dHJzCisgKiBAcGFyYW0g
e1N0cmluZ30gYXR0cnMgUGlwZS1zZXBhcmF0ZWQgbGlzdCBvZiBhdHRyaWJ1dGVzCisgKiBAcGFy
YW0ge0Z1bmN0aW9ufSBoYW5kbGVyIFRoZSBtZXRob2QgdGhhdCB3aWxsIGJlIGFwcGxpZWQKKyAq
LworZnVuY3Rpb24gYWRkSGFuZGxlKCBhdHRycywgaGFuZGxlciApIHsKKyAgICB2YXIgYXJyID0g
YXR0cnMuc3BsaXQoInwiKSwKKyAgICAgICAgaSA9IGFyci5sZW5ndGg7CisKKyAgICB3aGlsZSAo
IGktLSApIHsKKyAgICAgICAgRXhwci5hdHRySGFuZGxlWyBhcnJbaV0gXSA9IGhhbmRsZXI7Cisg
ICAgfQorfQorCisvKioKKyAqIENoZWNrcyBkb2N1bWVudCBvcmRlciBvZiB0d28gc2libGluZ3MK
KyAqIEBwYXJhbSB7RWxlbWVudH0gYQorICogQHBhcmFtIHtFbGVtZW50fSBiCisgKiBAcmV0dXJu
cyB7TnVtYmVyfSBSZXR1cm5zIGxlc3MgdGhhbiAwIGlmIGEgcHJlY2VkZXMgYiwgZ3JlYXRlciB0
aGFuIDAgaWYgYSBmb2xsb3dzIGIKKyAqLworZnVuY3Rpb24gc2libGluZ0NoZWNrKCBhLCBiICkg
eworICAgIHZhciBjdXIgPSBiICYmIGEsCisgICAgICAgIGRpZmYgPSBjdXIgJiYgYS5ub2RlVHlw
ZSA9PT0gMSAmJiBiLm5vZGVUeXBlID09PSAxICYmCisgICAgICAgICAgICBhLnNvdXJjZUluZGV4
IC0gYi5zb3VyY2VJbmRleDsKKworICAgIC8vIFVzZSBJRSBzb3VyY2VJbmRleCBpZiBhdmFpbGFi
bGUgb24gYm90aCBub2RlcworICAgIGlmICggZGlmZiApIHsKKyAgICAgICAgcmV0dXJuIGRpZmY7
CisgICAgfQorCisgICAgLy8gQ2hlY2sgaWYgYiBmb2xsb3dzIGEKKyAgICBpZiAoIGN1ciApIHsK
KyAgICAgICAgd2hpbGUgKCAoY3VyID0gY3VyLm5leHRTaWJsaW5nKSApIHsKKyAgICAgICAgICAg
IGlmICggY3VyID09PSBiICkgeworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBhID8gMSA6IC0xOworfQorCisv
KioKKyAqIFJldHVybnMgYSBmdW5jdGlvbiB0byB1c2UgaW4gcHNldWRvcyBmb3IgaW5wdXQgdHlw
ZXMKKyAqIEBwYXJhbSB7U3RyaW5nfSB0eXBlCisgKi8KK2Z1bmN0aW9uIGNyZWF0ZUlucHV0UHNl
dWRvKCB0eXBlICkgeworICAgIHJldHVybiBmdW5jdGlvbiggZWxlbSApIHsKKyAgICAgICAgdmFy
IG5hbWUgPSBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7CisgICAgICAgIHJldHVybiBuYW1l
ID09PSAiaW5wdXQiICYmIGVsZW0udHlwZSA9PT0gdHlwZTsKKyAgICB9OworfQorCisvKioKKyAq
IFJldHVybnMgYSBmdW5jdGlvbiB0byB1c2UgaW4gcHNldWRvcyBmb3IgYnV0dG9ucworICogQHBh
cmFtIHtTdHJpbmd9IHR5cGUKKyAqLworZnVuY3Rpb24gY3JlYXRlQnV0dG9uUHNldWRvKCB0eXBl
ICkgeworICAgIHJldHVybiBmdW5jdGlvbiggZWxlbSApIHsKKyAgICAgICAgdmFyIG5hbWUgPSBl
bGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7CisgICAgICAgIHJldHVybiAobmFtZSA9PT0gImlu
cHV0IiB8fCBuYW1lID09PSAiYnV0dG9uIikgJiYgZWxlbS50eXBlID09PSB0eXBlOworICAgIH07
Cit9CisKKy8qKgorICogUmV0dXJucyBhIGZ1bmN0aW9uIHRvIHVzZSBpbiBwc2V1ZG9zIGZvciA6
ZW5hYmxlZC86ZGlzYWJsZWQKKyAqIEBwYXJhbSB7Qm9vbGVhbn0gZGlzYWJsZWQgdHJ1ZSBmb3Ig
OmRpc2FibGVkOyBmYWxzZSBmb3IgOmVuYWJsZWQKKyAqLworZnVuY3Rpb24gY3JlYXRlRGlzYWJs
ZWRQc2V1ZG8oIGRpc2FibGVkICkgeworCisgICAgLy8gS25vd24gOmRpc2FibGVkIGZhbHNlIHBv
c2l0aXZlczogZmllbGRzZXRbZGlzYWJsZWRdID4gbGVnZW5kOm50aC1vZi10eXBlKG4rMikgOmNh
bi1kaXNhYmxlCisgICAgcmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkgeworCisgICAgICAgIC8vIE9u
bHkgY2VydGFpbiBlbGVtZW50cyBjYW4gbWF0Y2ggOmVuYWJsZWQgb3IgOmRpc2FibGVkCisgICAg
ICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3NjcmlwdGluZy5o
dG1sI3NlbGVjdG9yLWVuYWJsZWQKKyAgICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdn
Lm9yZy9tdWx0aXBhZ2Uvc2NyaXB0aW5nLmh0bWwjc2VsZWN0b3ItZGlzYWJsZWQKKyAgICAgICAg
aWYgKCAiZm9ybSIgaW4gZWxlbSApIHsKKworICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIGluaGVy
aXRlZCBkaXNhYmxlZG5lc3Mgb24gcmVsZXZhbnQgbm9uLWRpc2FibGVkIGVsZW1lbnRzOgorICAg
ICAgICAgICAgLy8gKiBsaXN0ZWQgZm9ybS1hc3NvY2lhdGVkIGVsZW1lbnRzIGluIGEgZGlzYWJs
ZWQgZmllbGRzZXQKKyAgICAgICAgICAgIC8vICAgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9y
Zy9tdWx0aXBhZ2UvZm9ybXMuaHRtbCNjYXRlZ29yeS1saXN0ZWQKKyAgICAgICAgICAgIC8vICAg
aHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZm9ybXMuaHRtbCNjb25jZXB0
LWZlLWRpc2FibGVkCisgICAgICAgICAgICAvLyAqIG9wdGlvbiBlbGVtZW50cyBpbiBhIGRpc2Fi
bGVkIG9wdGdyb3VwCisgICAgICAgICAgICAvLyAgIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5v
cmcvbXVsdGlwYWdlL2Zvcm1zLmh0bWwjY29uY2VwdC1vcHRpb24tZGlzYWJsZWQKKyAgICAgICAg
ICAgIC8vIEFsbCBzdWNoIGVsZW1lbnRzIGhhdmUgYSAiZm9ybSIgcHJvcGVydHkuCisgICAgICAg
ICAgICBpZiAoIGVsZW0ucGFyZW50Tm9kZSAmJiBlbGVtLmRpc2FibGVkID09PSBmYWxzZSApIHsK
KworICAgICAgICAgICAgICAgIC8vIE9wdGlvbiBlbGVtZW50cyBkZWZlciB0byBhIHBhcmVudCBv
cHRncm91cCBpZiBwcmVzZW50CisgICAgICAgICAgICAgICAgaWYgKCAibGFiZWwiIGluIGVsZW0g
KSB7CisgICAgICAgICAgICAgICAgICAgIGlmICggImxhYmVsIiBpbiBlbGVtLnBhcmVudE5vZGUg
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbS5wYXJlbnROb2RlLmRpc2Fi
bGVkID09PSBkaXNhYmxlZDsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBlbGVtLmRpc2FibGVkID09PSBkaXNhYmxlZDsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8v
IFN1cHBvcnQ6IElFIDYgLSAxMQorICAgICAgICAgICAgICAgIC8vIFVzZSB0aGUgaXNEaXNhYmxl
ZCBzaG9ydGN1dCBwcm9wZXJ0eSB0byBjaGVjayBmb3IgZGlzYWJsZWQgZmllbGRzZXQgYW5jZXN0
b3JzCisgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW0uaXNEaXNhYmxlZCA9PT0gZGlzYWJsZWQg
fHwKKworICAgICAgICAgICAgICAgICAgICAvLyBXaGVyZSB0aGVyZSBpcyBubyBpc0Rpc2FibGVk
LCBjaGVjayBtYW51YWxseQorICAgICAgICAgICAgICAgICAgICAvKiBqc2hpbnQgLVcwMTggKi8K
KyAgICAgICAgICAgICAgICAgICAgZWxlbS5pc0Rpc2FibGVkICE9PSAhZGlzYWJsZWQgJiYKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkQW5jZXN0b3IoIGVsZW0gKSA9PT0gZGlzYWJs
ZWQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBlbGVtLmRpc2FibGVkID09
PSBkaXNhYmxlZDsKKworICAgICAgICAvLyBUcnkgdG8gd2lubm93IG91dCBlbGVtZW50cyB0aGF0
IGNhbid0IGJlIGRpc2FibGVkIGJlZm9yZSB0cnVzdGluZyB0aGUgZGlzYWJsZWQgcHJvcGVydHku
CisgICAgICAgIC8vIFNvbWUgdmljdGltcyBnZXQgY2F1Z2h0IGluIG91ciBuZXQgKGxhYmVsLCBs
ZWdlbmQsIG1lbnUsIHRyYWNrKSwgYnV0IGl0IHNob3VsZG4ndAorICAgICAgICAvLyBldmVuIGV4
aXN0IG9uIHRoZW0sIGxldCBhbG9uZSBoYXZlIGEgYm9vbGVhbiB2YWx1ZS4KKyAgICAgICAgfSBl
bHNlIGlmICggImxhYmVsIiBpbiBlbGVtICkgeworICAgICAgICAgICAgcmV0dXJuIGVsZW0uZGlz
YWJsZWQgPT09IGRpc2FibGVkOworICAgICAgICB9CisKKyAgICAgICAgLy8gUmVtYWluaW5nIGVs
ZW1lbnRzIGFyZSBuZWl0aGVyIDplbmFibGVkIG5vciA6ZGlzYWJsZWQKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH07Cit9CisKKy8qKgorICogUmV0dXJucyBhIGZ1bmN0aW9uIHRvIHVzZSBp
biBwc2V1ZG9zIGZvciBwb3NpdGlvbmFscworICogQHBhcmFtIHtGdW5jdGlvbn0gZm4KKyAqLwor
ZnVuY3Rpb24gY3JlYXRlUG9zaXRpb25hbFBzZXVkbyggZm4gKSB7CisgICAgcmV0dXJuIG1hcmtG
dW5jdGlvbihmdW5jdGlvbiggYXJndW1lbnQgKSB7CisgICAgICAgIGFyZ3VtZW50ID0gK2FyZ3Vt
ZW50OworICAgICAgICByZXR1cm4gbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCBzZWVkLCBtYXRjaGVz
ICkgeworICAgICAgICAgICAgdmFyIGosCisgICAgICAgICAgICAgICAgbWF0Y2hJbmRleGVzID0g
Zm4oIFtdLCBzZWVkLmxlbmd0aCwgYXJndW1lbnQgKSwKKyAgICAgICAgICAgICAgICBpID0gbWF0
Y2hJbmRleGVzLmxlbmd0aDsKKworICAgICAgICAgICAgLy8gTWF0Y2ggZWxlbWVudHMgZm91bmQg
YXQgdGhlIHNwZWNpZmllZCBpbmRleGVzCisgICAgICAgICAgICB3aGlsZSAoIGktLSApIHsKKyAg
ICAgICAgICAgICAgICBpZiAoIHNlZWRbIChqID0gbWF0Y2hJbmRleGVzW2ldKSBdICkgeworICAg
ICAgICAgICAgICAgICAgICBzZWVkW2pdID0gIShtYXRjaGVzW2pdID0gc2VlZFtqXSk7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICB9KTsKK30KKwor
LyoqCisgKiBDaGVja3MgYSBub2RlIGZvciB2YWxpZGl0eSBhcyBhIFNpenpsZSBjb250ZXh0Cisg
KiBAcGFyYW0ge0VsZW1lbnR8T2JqZWN0PX0gY29udGV4dAorICogQHJldHVybnMge0VsZW1lbnR8
T2JqZWN0fEJvb2xlYW59IFRoZSBpbnB1dCBub2RlIGlmIGFjY2VwdGFibGUsIG90aGVyd2lzZSBh
IGZhbHN5IHZhbHVlCisgKi8KK2Z1bmN0aW9uIHRlc3RDb250ZXh0KCBjb250ZXh0ICkgeworICAg
IHJldHVybiBjb250ZXh0ICYmIHR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lICE9
PSAidW5kZWZpbmVkIiAmJiBjb250ZXh0OworfQorCisvLyBFeHBvc2Ugc3VwcG9ydCB2YXJzIGZv
ciBjb252ZW5pZW5jZQorc3VwcG9ydCA9IFNpenpsZS5zdXBwb3J0ID0ge307CisKKy8qKgorICog
RGV0ZWN0cyBYTUwgbm9kZXMKKyAqIEBwYXJhbSB7RWxlbWVudHxPYmplY3R9IGVsZW0gQW4gZWxl
bWVudCBvciBhIGRvY3VtZW50CisgKiBAcmV0dXJucyB7Qm9vbGVhbn0gVHJ1ZSBpZmYgZWxlbSBp
cyBhIG5vbi1IVE1MIFhNTCBub2RlCisgKi8KK2lzWE1MID0gU2l6emxlLmlzWE1MID0gZnVuY3Rp
b24oIGVsZW0gKSB7CisgICAgLy8gZG9jdW1lbnRFbGVtZW50IGlzIHZlcmlmaWVkIGZvciBjYXNl
cyB3aGVyZSBpdCBkb2Vzbid0IHlldCBleGlzdAorICAgIC8vIChzdWNoIGFzIGxvYWRpbmcgaWZy
YW1lcyBpbiBJRSAtICM0ODMzKQorICAgIHZhciBkb2N1bWVudEVsZW1lbnQgPSBlbGVtICYmIChl
bGVtLm93bmVyRG9jdW1lbnQgfHwgZWxlbSkuZG9jdW1lbnRFbGVtZW50OworICAgIHJldHVybiBk
b2N1bWVudEVsZW1lbnQgPyBkb2N1bWVudEVsZW1lbnQubm9kZU5hbWUgIT09ICJIVE1MIiA6IGZh
bHNlOworfTsKKworLyoqCisgKiBTZXRzIGRvY3VtZW50LXJlbGF0ZWQgdmFyaWFibGVzIG9uY2Ug
YmFzZWQgb24gdGhlIGN1cnJlbnQgZG9jdW1lbnQKKyAqIEBwYXJhbSB7RWxlbWVudHxPYmplY3R9
IFtkb2NdIEFuIGVsZW1lbnQgb3IgZG9jdW1lbnQgb2JqZWN0IHRvIHVzZSB0byBzZXQgdGhlIGRv
Y3VtZW50CisgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjdXJyZW50IGRvY3VtZW50
CisgKi8KK3NldERvY3VtZW50ID0gU2l6emxlLnNldERvY3VtZW50ID0gZnVuY3Rpb24oIG5vZGUg
KSB7CisgICAgdmFyIGhhc0NvbXBhcmUsIHN1YldpbmRvdywKKyAgICAgICAgZG9jID0gbm9kZSA/
IG5vZGUub3duZXJEb2N1bWVudCB8fCBub2RlIDogcHJlZmVycmVkRG9jOworCisgICAgLy8gUmV0
dXJuIGVhcmx5IGlmIGRvYyBpcyBpbnZhbGlkIG9yIGFscmVhZHkgc2VsZWN0ZWQKKyAgICBpZiAo
IGRvYyA9PT0gZG9jdW1lbnQgfHwgZG9jLm5vZGVUeXBlICE9PSA5IHx8ICFkb2MuZG9jdW1lbnRF
bGVtZW50ICkgeworICAgICAgICByZXR1cm4gZG9jdW1lbnQ7CisgICAgfQorCisgICAgLy8gVXBk
YXRlIGdsb2JhbCB2YXJpYWJsZXMKKyAgICBkb2N1bWVudCA9IGRvYzsKKyAgICBkb2NFbGVtID0g
ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50OworICAgIGRvY3VtZW50SXNIVE1MID0gIWlzWE1MKCBk
b2N1bWVudCApOworCisgICAgLy8gU3VwcG9ydDogSUUgOS0xMSwgRWRnZQorICAgIC8vIEFjY2Vz
c2luZyBpZnJhbWUgZG9jdW1lbnRzIGFmdGVyIHVubG9hZCB0aHJvd3MgInBlcm1pc3Npb24gZGVu
aWVkIiBlcnJvcnMgKGpRdWVyeSAjMTM5MzYpCisgICAgaWYgKCBwcmVmZXJyZWREb2MgIT09IGRv
Y3VtZW50ICYmCisgICAgICAgIChzdWJXaW5kb3cgPSBkb2N1bWVudC5kZWZhdWx0VmlldykgJiYg
c3ViV2luZG93LnRvcCAhPT0gc3ViV2luZG93ICkgeworCisgICAgICAgIC8vIFN1cHBvcnQ6IElF
IDExLCBFZGdlCisgICAgICAgIGlmICggc3ViV2luZG93LmFkZEV2ZW50TGlzdGVuZXIgKSB7Cisg
ICAgICAgICAgICBzdWJXaW5kb3cuYWRkRXZlbnRMaXN0ZW5lciggInVubG9hZCIsIHVubG9hZEhh
bmRsZXIsIGZhbHNlICk7CisKKyAgICAgICAgLy8gU3VwcG9ydDogSUUgOSAtIDEwIG9ubHkKKyAg
ICAgICAgfSBlbHNlIGlmICggc3ViV2luZG93LmF0dGFjaEV2ZW50ICkgeworICAgICAgICAgICAg
c3ViV2luZG93LmF0dGFjaEV2ZW50KCAib251bmxvYWQiLCB1bmxvYWRIYW5kbGVyICk7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICAvKiBBdHRyaWJ1dGVzCisgICAgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwor
CisgICAgLy8gU3VwcG9ydDogSUU8OAorICAgIC8vIFZlcmlmeSB0aGF0IGdldEF0dHJpYnV0ZSBy
ZWFsbHkgcmV0dXJucyBhdHRyaWJ1dGVzIGFuZCBub3QgcHJvcGVydGllcworICAgIC8vIChleGNl
cHRpbmcgSUU4IGJvb2xlYW5zKQorICAgIHN1cHBvcnQuYXR0cmlidXRlcyA9IGFzc2VydChmdW5j
dGlvbiggZWwgKSB7CisgICAgICAgIGVsLmNsYXNzTmFtZSA9ICJpIjsKKyAgICAgICAgcmV0dXJu
ICFlbC5nZXRBdHRyaWJ1dGUoImNsYXNzTmFtZSIpOworICAgIH0pOworCisgICAgLyogZ2V0RWxl
bWVudChzKUJ5KgorICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworICAgIC8vIENoZWNrIGlmIGdldEVs
ZW1lbnRzQnlUYWdOYW1lKCIqIikgcmV0dXJucyBvbmx5IGVsZW1lbnRzCisgICAgc3VwcG9ydC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSA9IGFzc2VydChmdW5jdGlvbiggZWwgKSB7CisgICAgICAgIGVs
LmFwcGVuZENoaWxkKCBkb2N1bWVudC5jcmVhdGVDb21tZW50KCIiKSApOworICAgICAgICByZXR1
cm4gIWVsLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikubGVuZ3RoOworICAgIH0pOworCisgICAg
Ly8gU3VwcG9ydDogSUU8OQorICAgIHN1cHBvcnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSA9IHJu
YXRpdmUudGVzdCggZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSApOworCisgICAgLy8g
U3VwcG9ydDogSUU8MTAKKyAgICAvLyBDaGVjayBpZiBnZXRFbGVtZW50QnlJZCByZXR1cm5zIGVs
ZW1lbnRzIGJ5IG5hbWUKKyAgICAvLyBUaGUgYnJva2VuIGdldEVsZW1lbnRCeUlkIG1ldGhvZHMg
ZG9uJ3QgcGljayB1cCBwcm9ncmFtbWF0aWNhbGx5LXNldCBuYW1lcywKKyAgICAvLyBzbyB1c2Ug
YSByb3VuZGFib3V0IGdldEVsZW1lbnRzQnlOYW1lIHRlc3QKKyAgICBzdXBwb3J0LmdldEJ5SWQg
PSBhc3NlcnQoZnVuY3Rpb24oIGVsICkgeworICAgICAgICBkb2NFbGVtLmFwcGVuZENoaWxkKCBl
bCApLmlkID0gZXhwYW5kbzsKKyAgICAgICAgcmV0dXJuICFkb2N1bWVudC5nZXRFbGVtZW50c0J5
TmFtZSB8fCAhZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoIGV4cGFuZG8gKS5sZW5ndGg7Cisg
ICAgfSk7CisKKyAgICAvLyBJRCBmaWx0ZXIgYW5kIGZpbmQKKyAgICBpZiAoIHN1cHBvcnQuZ2V0
QnlJZCApIHsKKyAgICAgICAgRXhwci5maWx0ZXJbIklEIl0gPSBmdW5jdGlvbiggaWQgKSB7Cisg
ICAgICAgICAgICB2YXIgYXR0cklkID0gaWQucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUg
KTsKKyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiggZWxlbSApIHsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZWxlbS5nZXRBdHRyaWJ1dGUoImlkIikgPT09IGF0dHJJZDsKKyAgICAgICAgICAg
IH07CisgICAgICAgIH07CisgICAgICAgIEV4cHIuZmluZFsiSUQiXSA9IGZ1bmN0aW9uKCBpZCwg
Y29udGV4dCApIHsKKyAgICAgICAgICAgIGlmICggdHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudEJ5
SWQgIT09ICJ1bmRlZmluZWQiICYmIGRvY3VtZW50SXNIVE1MICkgeworICAgICAgICAgICAgICAg
IHZhciBlbGVtID0gY29udGV4dC5nZXRFbGVtZW50QnlJZCggaWQgKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZWxlbSA/IFsgZWxlbSBdIDogW107CisgICAgICAgICAgICB9CisgICAgICAgIH07
CisgICAgfSBlbHNlIHsKKyAgICAgICAgRXhwci5maWx0ZXJbIklEIl0gPSAgZnVuY3Rpb24oIGlk
ICkgeworICAgICAgICAgICAgdmFyIGF0dHJJZCA9IGlkLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVu
ZXNjYXBlICk7CisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7CisgICAgICAg
ICAgICAgICAgdmFyIG5vZGUgPSB0eXBlb2YgZWxlbS5nZXRBdHRyaWJ1dGVOb2RlICE9PSAidW5k
ZWZpbmVkIiAmJgorICAgICAgICAgICAgICAgICAgICBlbGVtLmdldEF0dHJpYnV0ZU5vZGUoImlk
Iik7CisgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGUgJiYgbm9kZS52YWx1ZSA9PT0gYXR0cklk
OworICAgICAgICAgICAgfTsKKyAgICAgICAgfTsKKworICAgICAgICAvLyBTdXBwb3J0OiBJRSA2
IC0gNyBvbmx5CisgICAgICAgIC8vIGdldEVsZW1lbnRCeUlkIGlzIG5vdCByZWxpYWJsZSBhcyBh
IGZpbmQgc2hvcnRjdXQKKyAgICAgICAgRXhwci5maW5kWyJJRCJdID0gZnVuY3Rpb24oIGlkLCBj
b250ZXh0ICkgeworICAgICAgICAgICAgaWYgKCB0eXBlb2YgY29udGV4dC5nZXRFbGVtZW50QnlJ
ZCAhPT0gInVuZGVmaW5lZCIgJiYgZG9jdW1lbnRJc0hUTUwgKSB7CisgICAgICAgICAgICAgICAg
dmFyIG5vZGUsIGksIGVsZW1zLAorICAgICAgICAgICAgICAgICAgICBlbGVtID0gY29udGV4dC5n
ZXRFbGVtZW50QnlJZCggaWQgKTsKKworICAgICAgICAgICAgICAgIGlmICggZWxlbSApIHsKKwor
ICAgICAgICAgICAgICAgICAgICAvLyBWZXJpZnkgdGhlIGlkIGF0dHJpYnV0ZQorICAgICAgICAg
ICAgICAgICAgICBub2RlID0gZWxlbS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpOworICAgICAgICAg
ICAgICAgICAgICBpZiAoIG5vZGUgJiYgbm9kZS52YWx1ZSA9PT0gaWQgKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gWyBlbGVtIF07CisgICAgICAgICAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgICAgICAgICAvLyBGYWxsIGJhY2sgb24gZ2V0RWxlbWVudHNCeU5hbWUKKyAg
ICAgICAgICAgICAgICAgICAgZWxlbXMgPSBjb250ZXh0LmdldEVsZW1lbnRzQnlOYW1lKCBpZCAp
OworICAgICAgICAgICAgICAgICAgICBpID0gMDsKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUg
KCAoZWxlbSA9IGVsZW1zW2krK10pICkgeworICAgICAgICAgICAgICAgICAgICAgICAgbm9kZSA9
IGVsZW0uZ2V0QXR0cmlidXRlTm9kZSgiaWQiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICggbm9kZSAmJiBub2RlLnZhbHVlID09PSBpZCApIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gWyBlbGVtIF07CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICByZXR1
cm4gW107CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorCisgICAgLy8gVGFnCisg
ICAgRXhwci5maW5kWyJUQUciXSA9IHN1cHBvcnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUgPworICAg
ICAgICBmdW5jdGlvbiggdGFnLCBjb250ZXh0ICkgeworICAgICAgICAgICAgaWYgKCB0eXBlb2Yg
Y29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSAhPT0gInVuZGVmaW5lZCIgKSB7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIHRhZyApOworCisg
ICAgICAgICAgICAvLyBEb2N1bWVudEZyYWdtZW50IG5vZGVzIGRvbid0IGhhdmUgZ0VCVE4KKyAg
ICAgICAgICAgIH0gZWxzZSBpZiAoIHN1cHBvcnQucXNhICkgeworICAgICAgICAgICAgICAgIHJl
dHVybiBjb250ZXh0LnF1ZXJ5U2VsZWN0b3JBbGwoIHRhZyApOworICAgICAgICAgICAgfQorICAg
ICAgICB9IDoKKworICAgICAgICBmdW5jdGlvbiggdGFnLCBjb250ZXh0ICkgeworICAgICAgICAg
ICAgdmFyIGVsZW0sCisgICAgICAgICAgICAgICAgdG1wID0gW10sCisgICAgICAgICAgICAgICAg
aSA9IDAsCisgICAgICAgICAgICAgICAgLy8gQnkgaGFwcHkgY29pbmNpZGVuY2UsIGEgKGJyb2tl
bikgZ0VCVE4gYXBwZWFycyBvbiBEb2N1bWVudEZyYWdtZW50IG5vZGVzIHRvbworICAgICAgICAg
ICAgICAgIHJlc3VsdHMgPSBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lKCB0YWcgKTsKKwor
ICAgICAgICAgICAgLy8gRmlsdGVyIG91dCBwb3NzaWJsZSBjb21tZW50cworICAgICAgICAgICAg
aWYgKCB0YWcgPT09ICIqIiApIHsKKyAgICAgICAgICAgICAgICB3aGlsZSAoIChlbGVtID0gcmVz
dWx0c1tpKytdKSApIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCBlbGVtLm5vZGVUeXBlID09
PSAxICkgeworICAgICAgICAgICAgICAgICAgICAgICAgdG1wLnB1c2goIGVsZW0gKTsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHJl
dHVybiB0bXA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0czsKKyAg
ICAgICAgfTsKKworICAgIC8vIENsYXNzCisgICAgRXhwci5maW5kWyJDTEFTUyJdID0gc3VwcG9y
dC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lICYmIGZ1bmN0aW9uKCBjbGFzc05hbWUsIGNvbnRleHQg
KSB7CisgICAgICAgIGlmICggdHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSAh
PT0gInVuZGVmaW5lZCIgJiYgZG9jdW1lbnRJc0hUTUwgKSB7CisgICAgICAgICAgICByZXR1cm4g
Y29udGV4dC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCBjbGFzc05hbWUgKTsKKyAgICAgICAgfQor
ICAgIH07CisKKyAgICAvKiBRU0EvbWF0Y2hlc1NlbGVjdG9yCisgICAgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAq
LworCisgICAgLy8gUVNBIGFuZCBtYXRjaGVzU2VsZWN0b3Igc3VwcG9ydAorCisgICAgLy8gbWF0
Y2hlc1NlbGVjdG9yKDphY3RpdmUpIHJlcG9ydHMgZmFsc2Ugd2hlbiB0cnVlIChJRTkvT3BlcmEg
MTEuNSkKKyAgICByYnVnZ3lNYXRjaGVzID0gW107CisKKyAgICAvLyBxU2EoOmZvY3VzKSByZXBv
cnRzIGZhbHNlIHdoZW4gdHJ1ZSAoQ2hyb21lIDIxKQorICAgIC8vIFdlIGFsbG93IHRoaXMgYmVj
YXVzZSBvZiBhIGJ1ZyBpbiBJRTgvOSB0aGF0IHRocm93cyBhbiBlcnJvcgorICAgIC8vIHdoZW5l
dmVyIGBkb2N1bWVudC5hY3RpdmVFbGVtZW50YCBpcyBhY2Nlc3NlZCBvbiBhbiBpZnJhbWUKKyAg
ICAvLyBTbywgd2UgYWxsb3cgOmZvY3VzIHRvIHBhc3MgdGhyb3VnaCBRU0EgYWxsIHRoZSB0aW1l
IHRvIGF2b2lkIHRoZSBJRSBlcnJvcgorICAgIC8vIFNlZSBodHRwczovL2J1Z3MuanF1ZXJ5LmNv
bS90aWNrZXQvMTMzNzgKKyAgICByYnVnZ3lRU0EgPSBbXTsKKworICAgIGlmICggKHN1cHBvcnQu
cXNhID0gcm5hdGl2ZS50ZXN0KCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsICkpICkgeworICAg
ICAgICAvLyBCdWlsZCBRU0EgcmVnZXgKKyAgICAgICAgLy8gUmVnZXggc3RyYXRlZ3kgYWRvcHRl
ZCBmcm9tIERpZWdvIFBlcmluaQorICAgICAgICBhc3NlcnQoZnVuY3Rpb24oIGVsICkgeworICAg
ICAgICAgICAgLy8gU2VsZWN0IGlzIHNldCB0byBlbXB0eSBzdHJpbmcgb24gcHVycG9zZQorICAg
ICAgICAgICAgLy8gVGhpcyBpcyB0byB0ZXN0IElFJ3MgdHJlYXRtZW50IG9mIG5vdCBleHBsaWNp
dGx5CisgICAgICAgICAgICAvLyBzZXR0aW5nIGEgYm9vbGVhbiBjb250ZW50IGF0dHJpYnV0ZSwK
KyAgICAgICAgICAgIC8vIHNpbmNlIGl0cyBwcmVzZW5jZSBzaG91bGQgYmUgZW5vdWdoCisgICAg
ICAgICAgICAvLyBodHRwczovL2J1Z3MuanF1ZXJ5LmNvbS90aWNrZXQvMTIzNTkKKyAgICAgICAg
ICAgIGRvY0VsZW0uYXBwZW5kQ2hpbGQoIGVsICkuaW5uZXJIVE1MID0gIjxhIGlkPSciICsgZXhw
YW5kbyArICInPjwvYT4iICsKKyAgICAgICAgICAgICAgICAiPHNlbGVjdCBpZD0nIiArIGV4cGFu
ZG8gKyAiLVxyXFwnIG1zYWxsb3djYXB0dXJlPScnPiIgKworICAgICAgICAgICAgICAgICI8b3B0
aW9uIHNlbGVjdGVkPScnPjwvb3B0aW9uPjwvc2VsZWN0PiI7CisKKyAgICAgICAgICAgIC8vIFN1
cHBvcnQ6IElFOCwgT3BlcmEgMTEtMTIuMTYKKyAgICAgICAgICAgIC8vIE5vdGhpbmcgc2hvdWxk
IGJlIHNlbGVjdGVkIHdoZW4gZW1wdHkgc3RyaW5ncyBmb2xsb3cgXj0gb3IgJD0gb3IgKj0KKyAg
ICAgICAgICAgIC8vIFRoZSB0ZXN0IGF0dHJpYnV0ZSBtdXN0IGJlIHVua25vd24gaW4gT3BlcmEg
YnV0ICJzYWZlIiBmb3IgV2luUlQKKyAgICAgICAgICAgIC8vIGh0dHBzOi8vbXNkbi5taWNyb3Nv
ZnQuY29tL2VuLXVzL2xpYnJhcnkvaWUvaGg0NjUzODguYXNweCNhdHRyaWJ1dGVfc2VjdGlvbgor
ICAgICAgICAgICAgaWYgKCBlbC5xdWVyeVNlbGVjdG9yQWxsKCJbbXNhbGxvd2NhcHR1cmVePScn
XSIpLmxlbmd0aCApIHsKKyAgICAgICAgICAgICAgICByYnVnZ3lRU0EucHVzaCggIlsqXiRdPSIg
KyB3aGl0ZXNwYWNlICsgIiooPzonJ3xcIlwiKSIgKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgLy8gU3VwcG9ydDogSUU4CisgICAgICAgICAgICAvLyBCb29sZWFuIGF0dHJpYnV0ZXMg
YW5kICJ2YWx1ZSIgYXJlIG5vdCB0cmVhdGVkIGNvcnJlY3RseQorICAgICAgICAgICAgaWYgKCAh
ZWwucXVlcnlTZWxlY3RvckFsbCgiW3NlbGVjdGVkXSIpLmxlbmd0aCApIHsKKyAgICAgICAgICAg
ICAgICByYnVnZ3lRU0EucHVzaCggIlxcWyIgKyB3aGl0ZXNwYWNlICsgIiooPzp2YWx1ZXwiICsg
Ym9vbGVhbnMgKyAiKSIgKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gU3VwcG9y
dDogQ2hyb21lPDI5LCBBbmRyb2lkPDQuNCwgU2FmYXJpPDcuMCssIGlPUzw3LjArLCBQaGFudG9t
SlM8MS45LjgrCisgICAgICAgICAgICBpZiAoICFlbC5xdWVyeVNlbGVjdG9yQWxsKCAiW2lkfj0i
ICsgZXhwYW5kbyArICItXSIgKS5sZW5ndGggKSB7CisgICAgICAgICAgICAgICAgcmJ1Z2d5UVNB
LnB1c2goIn49Iik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFdlYmtpdC9PcGVy
YSAtIDpjaGVja2VkIHNob3VsZCByZXR1cm4gc2VsZWN0ZWQgb3B0aW9uIGVsZW1lbnRzCisgICAg
ICAgICAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDExL1JFQy1jc3MzLXNlbGVjdG9ycy0y
MDExMDkyOS8jY2hlY2tlZAorICAgICAgICAgICAgLy8gSUU4IHRocm93cyBlcnJvciBoZXJlIGFu
ZCB3aWxsIG5vdCBzZWUgbGF0ZXIgdGVzdHMKKyAgICAgICAgICAgIGlmICggIWVsLnF1ZXJ5U2Vs
ZWN0b3JBbGwoIjpjaGVja2VkIikubGVuZ3RoICkgeworICAgICAgICAgICAgICAgIHJidWdneVFT
QS5wdXNoKCI6Y2hlY2tlZCIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBTdXBw
b3J0OiBTYWZhcmkgOCssIGlPUyA4KworICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjg1MQorICAgICAgICAgICAgLy8gSW4tcGFnZSBgc2Vs
ZWN0b3IjaWQgc2libGluZy1jb21iaW5hdG9yIHNlbGVjdG9yYCBmYWlscworICAgICAgICAgICAg
aWYgKCAhZWwucXVlcnlTZWxlY3RvckFsbCggImEjIiArIGV4cGFuZG8gKyAiKyoiICkubGVuZ3Ro
ICkgeworICAgICAgICAgICAgICAgIHJidWdneVFTQS5wdXNoKCIuIy4rWyt+XSIpOworICAgICAg
ICAgICAgfQorICAgICAgICB9KTsKKworICAgICAgICBhc3NlcnQoZnVuY3Rpb24oIGVsICkgewor
ICAgICAgICAgICAgZWwuaW5uZXJIVE1MID0gIjxhIGhyZWY9JycgZGlzYWJsZWQ9J2Rpc2FibGVk
Jz48L2E+IiArCisgICAgICAgICAgICAgICAgIjxzZWxlY3QgZGlzYWJsZWQ9J2Rpc2FibGVkJz48
b3B0aW9uLz48L3NlbGVjdD4iOworCisgICAgICAgICAgICAvLyBTdXBwb3J0OiBXaW5kb3dzIDgg
TmF0aXZlIEFwcHMKKyAgICAgICAgICAgIC8vIFRoZSB0eXBlIGFuZCBuYW1lIGF0dHJpYnV0ZXMg
YXJlIHJlc3RyaWN0ZWQgZHVyaW5nIC5pbm5lckhUTUwgYXNzaWdubWVudAorICAgICAgICAgICAg
dmFyIGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKKyAgICAgICAgICAg
IGlucHV0LnNldEF0dHJpYnV0ZSggInR5cGUiLCAiaGlkZGVuIiApOworICAgICAgICAgICAgZWwu
YXBwZW5kQ2hpbGQoIGlucHV0ICkuc2V0QXR0cmlidXRlKCAibmFtZSIsICJEIiApOworCisgICAg
ICAgICAgICAvLyBTdXBwb3J0OiBJRTgKKyAgICAgICAgICAgIC8vIEVuZm9yY2UgY2FzZS1zZW5z
aXRpdml0eSBvZiBuYW1lIGF0dHJpYnV0ZQorICAgICAgICAgICAgaWYgKCBlbC5xdWVyeVNlbGVj
dG9yQWxsKCJbbmFtZT1kXSIpLmxlbmd0aCApIHsKKyAgICAgICAgICAgICAgICByYnVnZ3lRU0Eu
cHVzaCggIm5hbWUiICsgd2hpdGVzcGFjZSArICIqWypeJHwhfl0/PSIgKTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgLy8gRkYgMy41IC0gOmVuYWJsZWQvOmRpc2FibGVkIGFuZCBoaWRk
ZW4gZWxlbWVudHMgKGhpZGRlbiBlbGVtZW50cyBhcmUgc3RpbGwgZW5hYmxlZCkKKyAgICAgICAg
ICAgIC8vIElFOCB0aHJvd3MgZXJyb3IgaGVyZSBhbmQgd2lsbCBub3Qgc2VlIGxhdGVyIHRlc3Rz
CisgICAgICAgICAgICBpZiAoIGVsLnF1ZXJ5U2VsZWN0b3JBbGwoIjplbmFibGVkIikubGVuZ3Ro
ICE9PSAyICkgeworICAgICAgICAgICAgICAgIHJidWdneVFTQS5wdXNoKCAiOmVuYWJsZWQiLCAi
OmRpc2FibGVkIiApOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBTdXBwb3J0OiBJ
RTktMTErCisgICAgICAgICAgICAvLyBJRSdzIDpkaXNhYmxlZCBzZWxlY3RvciBkb2VzIG5vdCBw
aWNrIHVwIHRoZSBjaGlsZHJlbiBvZiBkaXNhYmxlZCBmaWVsZHNldHMKKyAgICAgICAgICAgIGRv
Y0VsZW0uYXBwZW5kQ2hpbGQoIGVsICkuZGlzYWJsZWQgPSB0cnVlOworICAgICAgICAgICAgaWYg
KCBlbC5xdWVyeVNlbGVjdG9yQWxsKCI6ZGlzYWJsZWQiKS5sZW5ndGggIT09IDIgKSB7CisgICAg
ICAgICAgICAgICAgcmJ1Z2d5UVNBLnB1c2goICI6ZW5hYmxlZCIsICI6ZGlzYWJsZWQiICk7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIE9wZXJhIDEwLTExIGRvZXMgbm90IHRocm93
IG9uIHBvc3QtY29tbWEgaW52YWxpZCBwc2V1ZG9zCisgICAgICAgICAgICBlbC5xdWVyeVNlbGVj
dG9yQWxsKCIqLDp4Iik7CisgICAgICAgICAgICByYnVnZ3lRU0EucHVzaCgiLC4qOiIpOworICAg
ICAgICB9KTsKKyAgICB9CisKKyAgICBpZiAoIChzdXBwb3J0Lm1hdGNoZXNTZWxlY3RvciA9IHJu
YXRpdmUudGVzdCggKG1hdGNoZXMgPSBkb2NFbGVtLm1hdGNoZXMgfHwKKyAgICAgICAgZG9jRWxl
bS53ZWJraXRNYXRjaGVzU2VsZWN0b3IgfHwKKyAgICAgICAgZG9jRWxlbS5tb3pNYXRjaGVzU2Vs
ZWN0b3IgfHwKKyAgICAgICAgZG9jRWxlbS5vTWF0Y2hlc1NlbGVjdG9yIHx8CisgICAgICAgIGRv
Y0VsZW0ubXNNYXRjaGVzU2VsZWN0b3IpICkpICkgeworCisgICAgICAgIGFzc2VydChmdW5jdGlv
biggZWwgKSB7CisgICAgICAgICAgICAvLyBDaGVjayB0byBzZWUgaWYgaXQncyBwb3NzaWJsZSB0
byBkbyBtYXRjaGVzU2VsZWN0b3IKKyAgICAgICAgICAgIC8vIG9uIGEgZGlzY29ubmVjdGVkIG5v
ZGUgKElFIDkpCisgICAgICAgICAgICBzdXBwb3J0LmRpc2Nvbm5lY3RlZE1hdGNoID0gbWF0Y2hl
cy5jYWxsKCBlbCwgIioiICk7CisKKyAgICAgICAgICAgIC8vIFRoaXMgc2hvdWxkIGZhaWwgd2l0
aCBhbiBleGNlcHRpb24KKyAgICAgICAgICAgIC8vIEdlY2tvIGRvZXMgbm90IGVycm9yLCByZXR1
cm5zIGZhbHNlIGluc3RlYWQKKyAgICAgICAgICAgIG1hdGNoZXMuY2FsbCggZWwsICJbcyE9Jydd
OngiICk7CisgICAgICAgICAgICByYnVnZ3lNYXRjaGVzLnB1c2goICIhPSIsIHBzZXVkb3MgKTsK
KyAgICAgICAgfSk7CisgICAgfQorCisgICAgcmJ1Z2d5UVNBID0gcmJ1Z2d5UVNBLmxlbmd0aCAm
JiBuZXcgUmVnRXhwKCByYnVnZ3lRU0Euam9pbigifCIpICk7CisgICAgcmJ1Z2d5TWF0Y2hlcyA9
IHJidWdneU1hdGNoZXMubGVuZ3RoICYmIG5ldyBSZWdFeHAoIHJidWdneU1hdGNoZXMuam9pbigi
fCIpICk7CisKKyAgICAvKiBDb250YWlucworICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAgICBoYXND
b21wYXJlID0gcm5hdGl2ZS50ZXN0KCBkb2NFbGVtLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uICk7
CisKKyAgICAvLyBFbGVtZW50IGNvbnRhaW5zIGFub3RoZXIKKyAgICAvLyBQdXJwb3NlZnVsbHkg
c2VsZi1leGNsdXNpdmUKKyAgICAvLyBBcyBpbiwgYW4gZWxlbWVudCBkb2VzIG5vdCBjb250YWlu
IGl0c2VsZgorICAgIGNvbnRhaW5zID0gaGFzQ29tcGFyZSB8fCBybmF0aXZlLnRlc3QoIGRvY0Vs
ZW0uY29udGFpbnMgKSA/CisgICAgICAgIGZ1bmN0aW9uKCBhLCBiICkgeworICAgICAgICAgICAg
dmFyIGFkb3duID0gYS5ub2RlVHlwZSA9PT0gOSA/IGEuZG9jdW1lbnRFbGVtZW50IDogYSwKKyAg
ICAgICAgICAgICAgICBidXAgPSBiICYmIGIucGFyZW50Tm9kZTsKKyAgICAgICAgICAgIHJldHVy
biBhID09PSBidXAgfHwgISEoIGJ1cCAmJiBidXAubm9kZVR5cGUgPT09IDEgJiYgKAorICAgICAg
ICAgICAgICAgIGFkb3duLmNvbnRhaW5zID8KKyAgICAgICAgICAgICAgICAgICAgYWRvd24uY29u
dGFpbnMoIGJ1cCApIDoKKyAgICAgICAgICAgICAgICAgICAgYS5jb21wYXJlRG9jdW1lbnRQb3Np
dGlvbiAmJiBhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKCBidXAgKSAmIDE2CisgICAgICAgICAg
ICApKTsKKyAgICAgICAgfSA6CisgICAgICAgIGZ1bmN0aW9uKCBhLCBiICkgeworICAgICAgICAg
ICAgaWYgKCBiICkgeworICAgICAgICAgICAgICAgIHdoaWxlICggKGIgPSBiLnBhcmVudE5vZGUp
ICkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIGIgPT09IGEgKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgfTsKKworICAgIC8qIFNvcnRpbmcKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKyAgICAvLyBE
b2N1bWVudCBvcmRlciBzb3J0aW5nCisgICAgc29ydE9yZGVyID0gaGFzQ29tcGFyZSA/CisgICAg
ZnVuY3Rpb24oIGEsIGIgKSB7CisKKyAgICAgICAgLy8gRmxhZyBmb3IgZHVwbGljYXRlIHJlbW92
YWwKKyAgICAgICAgaWYgKCBhID09PSBiICkgeworICAgICAgICAgICAgaGFzRHVwbGljYXRlID0g
dHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisKKyAgICAgICAgLy8gU29y
dCBvbiBtZXRob2QgZXhpc3RlbmNlIGlmIG9ubHkgb25lIGlucHV0IGhhcyBjb21wYXJlRG9jdW1l
bnRQb3NpdGlvbgorICAgICAgICB2YXIgY29tcGFyZSA9ICFhLmNvbXBhcmVEb2N1bWVudFBvc2l0
aW9uIC0gIWIuY29tcGFyZURvY3VtZW50UG9zaXRpb247CisgICAgICAgIGlmICggY29tcGFyZSAp
IHsKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJlOworICAgICAgICB9CisKKyAgICAgICAgLy8g
Q2FsY3VsYXRlIHBvc2l0aW9uIGlmIGJvdGggaW5wdXRzIGJlbG9uZyB0byB0aGUgc2FtZSBkb2N1
bWVudAorICAgICAgICBjb21wYXJlID0gKCBhLm93bmVyRG9jdW1lbnQgfHwgYSApID09PSAoIGIu
b3duZXJEb2N1bWVudCB8fCBiICkgPworICAgICAgICAgICAgYS5jb21wYXJlRG9jdW1lbnRQb3Np
dGlvbiggYiApIDoKKworICAgICAgICAgICAgLy8gT3RoZXJ3aXNlIHdlIGtub3cgdGhleSBhcmUg
ZGlzY29ubmVjdGVkCisgICAgICAgICAgICAxOworCisgICAgICAgIC8vIERpc2Nvbm5lY3RlZCBu
b2RlcworICAgICAgICBpZiAoIGNvbXBhcmUgJiAxIHx8CisgICAgICAgICAgICAoIXN1cHBvcnQu
c29ydERldGFjaGVkICYmIGIuY29tcGFyZURvY3VtZW50UG9zaXRpb24oIGEgKSA9PT0gY29tcGFy
ZSkgKSB7CisKKyAgICAgICAgICAgIC8vIENob29zZSB0aGUgZmlyc3QgZWxlbWVudCB0aGF0IGlz
IHJlbGF0ZWQgdG8gb3VyIHByZWZlcnJlZCBkb2N1bWVudAorICAgICAgICAgICAgaWYgKCBhID09
PSBkb2N1bWVudCB8fCBhLm93bmVyRG9jdW1lbnQgPT09IHByZWZlcnJlZERvYyAmJiBjb250YWlu
cyhwcmVmZXJyZWREb2MsIGEpICkgeworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGlmICggYiA9PT0gZG9jdW1lbnQgfHwgYi5vd25lckRvY3Vt
ZW50ID09PSBwcmVmZXJyZWREb2MgJiYgY29udGFpbnMocHJlZmVycmVkRG9jLCBiKSApIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8g
TWFpbnRhaW4gb3JpZ2luYWwgb3JkZXIKKyAgICAgICAgICAgIHJldHVybiBzb3J0SW5wdXQgPwor
ICAgICAgICAgICAgICAgICggaW5kZXhPZiggc29ydElucHV0LCBhICkgLSBpbmRleE9mKCBzb3J0
SW5wdXQsIGIgKSApIDoKKyAgICAgICAgICAgICAgICAwOworICAgICAgICB9CisKKyAgICAgICAg
cmV0dXJuIGNvbXBhcmUgJiA0ID8gLTEgOiAxOworICAgIH0gOgorICAgIGZ1bmN0aW9uKCBhLCBi
ICkgeworICAgICAgICAvLyBFeGl0IGVhcmx5IGlmIHRoZSBub2RlcyBhcmUgaWRlbnRpY2FsCisg
ICAgICAgIGlmICggYSA9PT0gYiApIHsKKyAgICAgICAgICAgIGhhc0R1cGxpY2F0ZSA9IHRydWU7
CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBjdXIsCisg
ICAgICAgICAgICBpID0gMCwKKyAgICAgICAgICAgIGF1cCA9IGEucGFyZW50Tm9kZSwKKyAgICAg
ICAgICAgIGJ1cCA9IGIucGFyZW50Tm9kZSwKKyAgICAgICAgICAgIGFwID0gWyBhIF0sCisgICAg
ICAgICAgICBicCA9IFsgYiBdOworCisgICAgICAgIC8vIFBhcmVudGxlc3Mgbm9kZXMgYXJlIGVp
dGhlciBkb2N1bWVudHMgb3IgZGlzY29ubmVjdGVkCisgICAgICAgIGlmICggIWF1cCB8fCAhYnVw
ICkgeworICAgICAgICAgICAgcmV0dXJuIGEgPT09IGRvY3VtZW50ID8gLTEgOgorICAgICAgICAg
ICAgICAgIGIgPT09IGRvY3VtZW50ID8gMSA6CisgICAgICAgICAgICAgICAgYXVwID8gLTEgOgor
ICAgICAgICAgICAgICAgIGJ1cCA/IDEgOgorICAgICAgICAgICAgICAgIHNvcnRJbnB1dCA/Cisg
ICAgICAgICAgICAgICAgKCBpbmRleE9mKCBzb3J0SW5wdXQsIGEgKSAtIGluZGV4T2YoIHNvcnRJ
bnB1dCwgYiApICkgOgorICAgICAgICAgICAgICAgIDA7CisKKyAgICAgICAgLy8gSWYgdGhlIG5v
ZGVzIGFyZSBzaWJsaW5ncywgd2UgY2FuIGRvIGEgcXVpY2sgY2hlY2sKKyAgICAgICAgfSBlbHNl
IGlmICggYXVwID09PSBidXAgKSB7CisgICAgICAgICAgICByZXR1cm4gc2libGluZ0NoZWNrKCBh
LCBiICk7CisgICAgICAgIH0KKworICAgICAgICAvLyBPdGhlcndpc2Ugd2UgbmVlZCBmdWxsIGxp
c3RzIG9mIHRoZWlyIGFuY2VzdG9ycyBmb3IgY29tcGFyaXNvbgorICAgICAgICBjdXIgPSBhOwor
ICAgICAgICB3aGlsZSAoIChjdXIgPSBjdXIucGFyZW50Tm9kZSkgKSB7CisgICAgICAgICAgICBh
cC51bnNoaWZ0KCBjdXIgKTsKKyAgICAgICAgfQorICAgICAgICBjdXIgPSBiOworICAgICAgICB3
aGlsZSAoIChjdXIgPSBjdXIucGFyZW50Tm9kZSkgKSB7CisgICAgICAgICAgICBicC51bnNoaWZ0
KCBjdXIgKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFdhbGsgZG93biB0aGUgdHJlZSBsb29r
aW5nIGZvciBhIGRpc2NyZXBhbmN5CisgICAgICAgIHdoaWxlICggYXBbaV0gPT09IGJwW2ldICkg
eworICAgICAgICAgICAgaSsrOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGkgPworICAg
ICAgICAgICAgLy8gRG8gYSBzaWJsaW5nIGNoZWNrIGlmIHRoZSBub2RlcyBoYXZlIGEgY29tbW9u
IGFuY2VzdG9yCisgICAgICAgICAgICBzaWJsaW5nQ2hlY2soIGFwW2ldLCBicFtpXSApIDoKKwor
ICAgICAgICAgICAgLy8gT3RoZXJ3aXNlIG5vZGVzIGluIG91ciBkb2N1bWVudCBzb3J0IGZpcnN0
CisgICAgICAgICAgICBhcFtpXSA9PT0gcHJlZmVycmVkRG9jID8gLTEgOgorICAgICAgICAgICAg
YnBbaV0gPT09IHByZWZlcnJlZERvYyA/IDEgOgorICAgICAgICAgICAgMDsKKyAgICB9OworCisg
ICAgcmV0dXJuIGRvY3VtZW50OworfTsKKworU2l6emxlLm1hdGNoZXMgPSBmdW5jdGlvbiggZXhw
ciwgZWxlbWVudHMgKSB7CisgICAgcmV0dXJuIFNpenpsZSggZXhwciwgbnVsbCwgbnVsbCwgZWxl
bWVudHMgKTsKK307CisKK1NpenpsZS5tYXRjaGVzU2VsZWN0b3IgPSBmdW5jdGlvbiggZWxlbSwg
ZXhwciApIHsKKyAgICAvLyBTZXQgZG9jdW1lbnQgdmFycyBpZiBuZWVkZWQKKyAgICBpZiAoICgg
ZWxlbS5vd25lckRvY3VtZW50IHx8IGVsZW0gKSAhPT0gZG9jdW1lbnQgKSB7CisgICAgICAgIHNl
dERvY3VtZW50KCBlbGVtICk7CisgICAgfQorCisgICAgLy8gTWFrZSBzdXJlIHRoYXQgYXR0cmli
dXRlIHNlbGVjdG9ycyBhcmUgcXVvdGVkCisgICAgZXhwciA9IGV4cHIucmVwbGFjZSggcmF0dHJp
YnV0ZVF1b3RlcywgIj0nJDEnXSIgKTsKKworICAgIGlmICggc3VwcG9ydC5tYXRjaGVzU2VsZWN0
b3IgJiYgZG9jdW1lbnRJc0hUTUwgJiYKKyAgICAgICAgIWNvbXBpbGVyQ2FjaGVbIGV4cHIgKyAi
ICIgXSAmJgorICAgICAgICAoICFyYnVnZ3lNYXRjaGVzIHx8ICFyYnVnZ3lNYXRjaGVzLnRlc3Qo
IGV4cHIgKSApICYmCisgICAgICAgICggIXJidWdneVFTQSAgICAgfHwgIXJidWdneVFTQS50ZXN0
KCBleHByICkgKSApIHsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgdmFyIHJldCA9IG1h
dGNoZXMuY2FsbCggZWxlbSwgZXhwciApOworCisgICAgICAgICAgICAvLyBJRSA5J3MgbWF0Y2hl
c1NlbGVjdG9yIHJldHVybnMgZmFsc2Ugb24gZGlzY29ubmVjdGVkIG5vZGVzCisgICAgICAgICAg
ICBpZiAoIHJldCB8fCBzdXBwb3J0LmRpc2Nvbm5lY3RlZE1hdGNoIHx8CisgICAgICAgICAgICAg
ICAgICAgIC8vIEFzIHdlbGwsIGRpc2Nvbm5lY3RlZCBub2RlcyBhcmUgc2FpZCB0byBiZSBpbiBh
IGRvY3VtZW50CisgICAgICAgICAgICAgICAgICAgIC8vIGZyYWdtZW50IGluIElFIDkKKyAgICAg
ICAgICAgICAgICAgICAgZWxlbS5kb2N1bWVudCAmJiBlbGVtLmRvY3VtZW50Lm5vZGVUeXBlICE9
PSAxMSApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmV0OworICAgICAgICAgICAgfQorICAg
ICAgICB9IGNhdGNoIChlKSB7fQorICAgIH0KKworICAgIHJldHVybiBTaXp6bGUoIGV4cHIsIGRv
Y3VtZW50LCBudWxsLCBbIGVsZW0gXSApLmxlbmd0aCA+IDA7Cit9OworCitTaXp6bGUuY29udGFp
bnMgPSBmdW5jdGlvbiggY29udGV4dCwgZWxlbSApIHsKKyAgICAvLyBTZXQgZG9jdW1lbnQgdmFy
cyBpZiBuZWVkZWQKKyAgICBpZiAoICggY29udGV4dC5vd25lckRvY3VtZW50IHx8IGNvbnRleHQg
KSAhPT0gZG9jdW1lbnQgKSB7CisgICAgICAgIHNldERvY3VtZW50KCBjb250ZXh0ICk7CisgICAg
fQorICAgIHJldHVybiBjb250YWlucyggY29udGV4dCwgZWxlbSApOworfTsKKworU2l6emxlLmF0
dHIgPSBmdW5jdGlvbiggZWxlbSwgbmFtZSApIHsKKyAgICAvLyBTZXQgZG9jdW1lbnQgdmFycyBp
ZiBuZWVkZWQKKyAgICBpZiAoICggZWxlbS5vd25lckRvY3VtZW50IHx8IGVsZW0gKSAhPT0gZG9j
dW1lbnQgKSB7CisgICAgICAgIHNldERvY3VtZW50KCBlbGVtICk7CisgICAgfQorCisgICAgdmFy
IGZuID0gRXhwci5hdHRySGFuZGxlWyBuYW1lLnRvTG93ZXJDYXNlKCkgXSwKKyAgICAgICAgLy8g
RG9uJ3QgZ2V0IGZvb2xlZCBieSBPYmplY3QucHJvdG90eXBlIHByb3BlcnRpZXMgKGpRdWVyeSAj
MTM4MDcpCisgICAgICAgIHZhbCA9IGZuICYmIGhhc093bi5jYWxsKCBFeHByLmF0dHJIYW5kbGUs
IG5hbWUudG9Mb3dlckNhc2UoKSApID8KKyAgICAgICAgICAgIGZuKCBlbGVtLCBuYW1lLCAhZG9j
dW1lbnRJc0hUTUwgKSA6CisgICAgICAgICAgICB1bmRlZmluZWQ7CisKKyAgICByZXR1cm4gdmFs
ICE9PSB1bmRlZmluZWQgPworICAgICAgICB2YWwgOgorICAgICAgICBzdXBwb3J0LmF0dHJpYnV0
ZXMgfHwgIWRvY3VtZW50SXNIVE1MID8KKyAgICAgICAgICAgIGVsZW0uZ2V0QXR0cmlidXRlKCBu
YW1lICkgOgorICAgICAgICAgICAgKHZhbCA9IGVsZW0uZ2V0QXR0cmlidXRlTm9kZShuYW1lKSkg
JiYgdmFsLnNwZWNpZmllZCA/CisgICAgICAgICAgICAgICAgdmFsLnZhbHVlIDoKKyAgICAgICAg
ICAgICAgICBudWxsOworfTsKKworU2l6emxlLmVzY2FwZSA9IGZ1bmN0aW9uKCBzZWwgKSB7Cisg
ICAgcmV0dXJuIChzZWwgKyAiIikucmVwbGFjZSggcmNzc2VzY2FwZSwgZmNzc2VzY2FwZSApOwor
fTsKKworU2l6emxlLmVycm9yID0gZnVuY3Rpb24oIG1zZyApIHsKKyAgICB0aHJvdyBuZXcgRXJy
b3IoICJTeW50YXggZXJyb3IsIHVucmVjb2duaXplZCBleHByZXNzaW9uOiAiICsgbXNnICk7Cit9
OworCisvKioKKyAqIERvY3VtZW50IHNvcnRpbmcgYW5kIHJlbW92aW5nIGR1cGxpY2F0ZXMKKyAq
IEBwYXJhbSB7QXJyYXlMaWtlfSByZXN1bHRzCisgKi8KK1NpenpsZS51bmlxdWVTb3J0ID0gZnVu
Y3Rpb24oIHJlc3VsdHMgKSB7CisgICAgdmFyIGVsZW0sCisgICAgICAgIGR1cGxpY2F0ZXMgPSBb
XSwKKyAgICAgICAgaiA9IDAsCisgICAgICAgIGkgPSAwOworCisgICAgLy8gVW5sZXNzIHdlICpr
bm93KiB3ZSBjYW4gZGV0ZWN0IGR1cGxpY2F0ZXMsIGFzc3VtZSB0aGVpciBwcmVzZW5jZQorICAg
IGhhc0R1cGxpY2F0ZSA9ICFzdXBwb3J0LmRldGVjdER1cGxpY2F0ZXM7CisgICAgc29ydElucHV0
ID0gIXN1cHBvcnQuc29ydFN0YWJsZSAmJiByZXN1bHRzLnNsaWNlKCAwICk7CisgICAgcmVzdWx0
cy5zb3J0KCBzb3J0T3JkZXIgKTsKKworICAgIGlmICggaGFzRHVwbGljYXRlICkgeworICAgICAg
ICB3aGlsZSAoIChlbGVtID0gcmVzdWx0c1tpKytdKSApIHsKKyAgICAgICAgICAgIGlmICggZWxl
bSA9PT0gcmVzdWx0c1sgaSBdICkgeworICAgICAgICAgICAgICAgIGogPSBkdXBsaWNhdGVzLnB1
c2goIGkgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICB3aGlsZSAoIGotLSAp
IHsKKyAgICAgICAgICAgIHJlc3VsdHMuc3BsaWNlKCBkdXBsaWNhdGVzWyBqIF0sIDEgKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIC8vIENsZWFyIGlucHV0IGFmdGVyIHNvcnRpbmcgdG8gcmVs
ZWFzZSBvYmplY3RzCisgICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9qcXVlcnkvc2l6emxl
L3B1bGwvMjI1CisgICAgc29ydElucHV0ID0gbnVsbDsKKworICAgIHJldHVybiByZXN1bHRzOwor
fTsKKworLyoqCisgKiBVdGlsaXR5IGZ1bmN0aW9uIGZvciByZXRyaWV2aW5nIHRoZSB0ZXh0IHZh
bHVlIG9mIGFuIGFycmF5IG9mIERPTSBub2RlcworICogQHBhcmFtIHtBcnJheXxFbGVtZW50fSBl
bGVtCisgKi8KK2dldFRleHQgPSBTaXp6bGUuZ2V0VGV4dCA9IGZ1bmN0aW9uKCBlbGVtICkgewor
ICAgIHZhciBub2RlLAorICAgICAgICByZXQgPSAiIiwKKyAgICAgICAgaSA9IDAsCisgICAgICAg
IG5vZGVUeXBlID0gZWxlbS5ub2RlVHlwZTsKKworICAgIGlmICggIW5vZGVUeXBlICkgeworICAg
ICAgICAvLyBJZiBubyBub2RlVHlwZSwgdGhpcyBpcyBleHBlY3RlZCB0byBiZSBhbiBhcnJheQor
ICAgICAgICB3aGlsZSAoIChub2RlID0gZWxlbVtpKytdKSApIHsKKyAgICAgICAgICAgIC8vIERv
IG5vdCB0cmF2ZXJzZSBjb21tZW50IG5vZGVzCisgICAgICAgICAgICByZXQgKz0gZ2V0VGV4dCgg
bm9kZSApOworICAgICAgICB9CisgICAgfSBlbHNlIGlmICggbm9kZVR5cGUgPT09IDEgfHwgbm9k
ZVR5cGUgPT09IDkgfHwgbm9kZVR5cGUgPT09IDExICkgeworICAgICAgICAvLyBVc2UgdGV4dENv
bnRlbnQgZm9yIGVsZW1lbnRzCisgICAgICAgIC8vIGlubmVyVGV4dCB1c2FnZSByZW1vdmVkIGZv
ciBjb25zaXN0ZW5jeSBvZiBuZXcgbGluZXMgKGpRdWVyeSAjMTExNTMpCisgICAgICAgIGlmICgg
dHlwZW9mIGVsZW0udGV4dENvbnRlbnQgPT09ICJzdHJpbmciICkgeworICAgICAgICAgICAgcmV0
dXJuIGVsZW0udGV4dENvbnRlbnQ7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBU
cmF2ZXJzZSBpdHMgY2hpbGRyZW4KKyAgICAgICAgICAgIGZvciAoIGVsZW0gPSBlbGVtLmZpcnN0
Q2hpbGQ7IGVsZW07IGVsZW0gPSBlbGVtLm5leHRTaWJsaW5nICkgeworICAgICAgICAgICAgICAg
IHJldCArPSBnZXRUZXh0KCBlbGVtICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
IGVsc2UgaWYgKCBub2RlVHlwZSA9PT0gMyB8fCBub2RlVHlwZSA9PT0gNCApIHsKKyAgICAgICAg
cmV0dXJuIGVsZW0ubm9kZVZhbHVlOworICAgIH0KKyAgICAvLyBEbyBub3QgaW5jbHVkZSBjb21t
ZW50IG9yIHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb24gbm9kZXMKKworICAgIHJldHVybiByZXQ7Cit9
OworCitFeHByID0gU2l6emxlLnNlbGVjdG9ycyA9IHsKKworICAgIC8vIENhbiBiZSBhZGp1c3Rl
ZCBieSB0aGUgdXNlcgorICAgIGNhY2hlTGVuZ3RoOiA1MCwKKworICAgIGNyZWF0ZVBzZXVkbzog
bWFya0Z1bmN0aW9uLAorCisgICAgbWF0Y2g6IG1hdGNoRXhwciwKKworICAgIGF0dHJIYW5kbGU6
IHt9LAorCisgICAgZmluZDoge30sCisKKyAgICByZWxhdGl2ZTogeworICAgICAgICAiPiI6IHsg
ZGlyOiAicGFyZW50Tm9kZSIsIGZpcnN0OiB0cnVlIH0sCisgICAgICAgICIgIjogeyBkaXI6ICJw
YXJlbnROb2RlIiB9LAorICAgICAgICAiKyI6IHsgZGlyOiAicHJldmlvdXNTaWJsaW5nIiwgZmly
c3Q6IHRydWUgfSwKKyAgICAgICAgIn4iOiB7IGRpcjogInByZXZpb3VzU2libGluZyIgfQorICAg
IH0sCisKKyAgICBwcmVGaWx0ZXI6IHsKKyAgICAgICAgIkFUVFIiOiBmdW5jdGlvbiggbWF0Y2gg
KSB7CisgICAgICAgICAgICBtYXRjaFsxXSA9IG1hdGNoWzFdLnJlcGxhY2UoIHJ1bmVzY2FwZSwg
ZnVuZXNjYXBlICk7CisKKyAgICAgICAgICAgIC8vIE1vdmUgdGhlIGdpdmVuIHZhbHVlIHRvIG1h
dGNoWzNdIHdoZXRoZXIgcXVvdGVkIG9yIHVucXVvdGVkCisgICAgICAgICAgICBtYXRjaFszXSA9
ICggbWF0Y2hbM10gfHwgbWF0Y2hbNF0gfHwgbWF0Y2hbNV0gfHwgIiIgKS5yZXBsYWNlKCBydW5l
c2NhcGUsIGZ1bmVzY2FwZSApOworCisgICAgICAgICAgICBpZiAoIG1hdGNoWzJdID09PSAifj0i
ICkgeworICAgICAgICAgICAgICAgIG1hdGNoWzNdID0gIiAiICsgbWF0Y2hbM10gKyAiICI7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBtYXRjaC5zbGljZSggMCwgNCApOwor
ICAgICAgICB9LAorCisgICAgICAgICJDSElMRCI6IGZ1bmN0aW9uKCBtYXRjaCApIHsKKyAgICAg
ICAgICAgIC8qIG1hdGNoZXMgZnJvbSBtYXRjaEV4cHJbIkNISUxEIl0KKyAgICAgICAgICAgICAg
ICAxIHR5cGUgKG9ubHl8bnRofC4uLikKKyAgICAgICAgICAgICAgICAyIHdoYXQgKGNoaWxkfG9m
LXR5cGUpCisgICAgICAgICAgICAgICAgMyBhcmd1bWVudCAoZXZlbnxvZGR8XGQqfFxkKm4oWyst
XVxkKyk/fC4uLikKKyAgICAgICAgICAgICAgICA0IHhuLWNvbXBvbmVudCBvZiB4bit5IGFyZ3Vt
ZW50IChbKy1dP1xkKm58KQorICAgICAgICAgICAgICAgIDUgc2lnbiBvZiB4bi1jb21wb25lbnQK
KyAgICAgICAgICAgICAgICA2IHggb2YgeG4tY29tcG9uZW50CisgICAgICAgICAgICAgICAgNyBz
aWduIG9mIHktY29tcG9uZW50CisgICAgICAgICAgICAgICAgOCB5IG9mIHktY29tcG9uZW50Cisg
ICAgICAgICAgICAqLworICAgICAgICAgICAgbWF0Y2hbMV0gPSBtYXRjaFsxXS50b0xvd2VyQ2Fz
ZSgpOworCisgICAgICAgICAgICBpZiAoIG1hdGNoWzFdLnNsaWNlKCAwLCAzICkgPT09ICJudGgi
ICkgeworICAgICAgICAgICAgICAgIC8vIG50aC0qIHJlcXVpcmVzIGFyZ3VtZW50CisgICAgICAg
ICAgICAgICAgaWYgKCAhbWF0Y2hbM10gKSB7CisgICAgICAgICAgICAgICAgICAgIFNpenpsZS5l
cnJvciggbWF0Y2hbMF0gKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAv
LyBudW1lcmljIHggYW5kIHkgcGFyYW1ldGVycyBmb3IgRXhwci5maWx0ZXIuQ0hJTEQKKyAgICAg
ICAgICAgICAgICAvLyByZW1lbWJlciB0aGF0IGZhbHNlL3RydWUgY2FzdCByZXNwZWN0aXZlbHkg
dG8gMC8xCisgICAgICAgICAgICAgICAgbWF0Y2hbNF0gPSArKCBtYXRjaFs0XSA/IG1hdGNoWzVd
ICsgKG1hdGNoWzZdIHx8IDEpIDogMiAqICggbWF0Y2hbM10gPT09ICJldmVuIiB8fCBtYXRjaFsz
XSA9PT0gIm9kZCIgKSApOworICAgICAgICAgICAgICAgIG1hdGNoWzVdID0gKyggKCBtYXRjaFs3
XSArIG1hdGNoWzhdICkgfHwgbWF0Y2hbM10gPT09ICJvZGQiICk7CisKKyAgICAgICAgICAgIC8v
IG90aGVyIHR5cGVzIHByb2hpYml0IGFyZ3VtZW50cworICAgICAgICAgICAgfSBlbHNlIGlmICgg
bWF0Y2hbM10gKSB7CisgICAgICAgICAgICAgICAgU2l6emxlLmVycm9yKCBtYXRjaFswXSApOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gbWF0Y2g7CisgICAgICAgIH0sCisK
KyAgICAgICAgIlBTRVVETyI6IGZ1bmN0aW9uKCBtYXRjaCApIHsKKyAgICAgICAgICAgIHZhciBl
eGNlc3MsCisgICAgICAgICAgICAgICAgdW5xdW90ZWQgPSAhbWF0Y2hbNl0gJiYgbWF0Y2hbMl07
CisKKyAgICAgICAgICAgIGlmICggbWF0Y2hFeHByWyJDSElMRCJdLnRlc3QoIG1hdGNoWzBdICkg
KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIC8vIEFjY2VwdCBxdW90ZWQgYXJndW1lbnRzIGFzLWlzCisgICAgICAgICAgICBpZiAo
IG1hdGNoWzNdICkgeworICAgICAgICAgICAgICAgIG1hdGNoWzJdID0gbWF0Y2hbNF0gfHwgbWF0
Y2hbNV0gfHwgIiI7CisKKyAgICAgICAgICAgIC8vIFN0cmlwIGV4Y2VzcyBjaGFyYWN0ZXJzIGZy
b20gdW5xdW90ZWQgYXJndW1lbnRzCisgICAgICAgICAgICB9IGVsc2UgaWYgKCB1bnF1b3RlZCAm
JiBycHNldWRvLnRlc3QoIHVucXVvdGVkICkgJiYKKyAgICAgICAgICAgICAgICAvLyBHZXQgZXhj
ZXNzIGZyb20gdG9rZW5pemUgKHJlY3Vyc2l2ZWx5KQorICAgICAgICAgICAgICAgIChleGNlc3Mg
PSB0b2tlbml6ZSggdW5xdW90ZWQsIHRydWUgKSkgJiYKKyAgICAgICAgICAgICAgICAvLyBhZHZh
bmNlIHRvIHRoZSBuZXh0IGNsb3NpbmcgcGFyZW50aGVzaXMKKyAgICAgICAgICAgICAgICAoZXhj
ZXNzID0gdW5xdW90ZWQuaW5kZXhPZiggIikiLCB1bnF1b3RlZC5sZW5ndGggLSBleGNlc3MgKSAt
IHVucXVvdGVkLmxlbmd0aCkgKSB7CisKKyAgICAgICAgICAgICAgICAvLyBleGNlc3MgaXMgYSBu
ZWdhdGl2ZSBpbmRleAorICAgICAgICAgICAgICAgIG1hdGNoWzBdID0gbWF0Y2hbMF0uc2xpY2Uo
IDAsIGV4Y2VzcyApOworICAgICAgICAgICAgICAgIG1hdGNoWzJdID0gdW5xdW90ZWQuc2xpY2Uo
IDAsIGV4Y2VzcyApOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBSZXR1cm4gb25s
eSBjYXB0dXJlcyBuZWVkZWQgYnkgdGhlIHBzZXVkbyBmaWx0ZXIgbWV0aG9kICh0eXBlIGFuZCBh
cmd1bWVudCkKKyAgICAgICAgICAgIHJldHVybiBtYXRjaC5zbGljZSggMCwgMyApOworICAgICAg
ICB9CisgICAgfSwKKworICAgIGZpbHRlcjogeworCisgICAgICAgICJUQUciOiBmdW5jdGlvbigg
bm9kZU5hbWVTZWxlY3RvciApIHsKKyAgICAgICAgICAgIHZhciBub2RlTmFtZSA9IG5vZGVOYW1l
U2VsZWN0b3IucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKS50b0xvd2VyQ2FzZSgpOwor
ICAgICAgICAgICAgcmV0dXJuIG5vZGVOYW1lU2VsZWN0b3IgPT09ICIqIiA/CisgICAgICAgICAg
ICAgICAgZnVuY3Rpb24oKSB7IHJldHVybiB0cnVlOyB9IDoKKyAgICAgICAgICAgICAgICBmdW5j
dGlvbiggZWxlbSApIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW0ubm9kZU5hbWUg
JiYgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBub2RlTmFtZTsKKyAgICAgICAgICAg
ICAgICB9OworICAgICAgICB9LAorCisgICAgICAgICJDTEFTUyI6IGZ1bmN0aW9uKCBjbGFzc05h
bWUgKSB7CisgICAgICAgICAgICB2YXIgcGF0dGVybiA9IGNsYXNzQ2FjaGVbIGNsYXNzTmFtZSAr
ICIgIiBdOworCisgICAgICAgICAgICByZXR1cm4gcGF0dGVybiB8fAorICAgICAgICAgICAgICAg
IChwYXR0ZXJuID0gbmV3IFJlZ0V4cCggIihefCIgKyB3aGl0ZXNwYWNlICsgIikiICsgY2xhc3NO
YW1lICsgIigiICsgd2hpdGVzcGFjZSArICJ8JCkiICkpICYmCisgICAgICAgICAgICAgICAgY2xh
c3NDYWNoZSggY2xhc3NOYW1lLCBmdW5jdGlvbiggZWxlbSApIHsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHBhdHRlcm4udGVzdCggdHlwZW9mIGVsZW0uY2xhc3NOYW1lID09PSAic3RyaW5n
IiAmJiBlbGVtLmNsYXNzTmFtZSB8fCB0eXBlb2YgZWxlbS5nZXRBdHRyaWJ1dGUgIT09ICJ1bmRl
ZmluZWQiICYmIGVsZW0uZ2V0QXR0cmlidXRlKCJjbGFzcyIpIHx8ICIiICk7CisgICAgICAgICAg
ICAgICAgfSk7CisgICAgICAgIH0sCisKKyAgICAgICAgIkFUVFIiOiBmdW5jdGlvbiggbmFtZSwg
b3BlcmF0b3IsIGNoZWNrICkgeworICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkg
eworICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSBTaXp6bGUuYXR0ciggZWxlbSwgbmFtZSAp
OworCisgICAgICAgICAgICAgICAgaWYgKCByZXN1bHQgPT0gbnVsbCApIHsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIG9wZXJhdG9yID09PSAiIT0iOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBpZiAoICFvcGVyYXRvciApIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgcmVzdWx0ICs9
ICIiOworCisgICAgICAgICAgICAgICAgcmV0dXJuIG9wZXJhdG9yID09PSAiPSIgPyByZXN1bHQg
PT09IGNoZWNrIDoKKyAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3IgPT09ICIhPSIgPyByZXN1
bHQgIT09IGNoZWNrIDoKKyAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3IgPT09ICJePSIgPyBj
aGVjayAmJiByZXN1bHQuaW5kZXhPZiggY2hlY2sgKSA9PT0gMCA6CisgICAgICAgICAgICAgICAg
ICAgIG9wZXJhdG9yID09PSAiKj0iID8gY2hlY2sgJiYgcmVzdWx0LmluZGV4T2YoIGNoZWNrICkg
PiAtMSA6CisgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yID09PSAiJD0iID8gY2hlY2sgJiYg
cmVzdWx0LnNsaWNlKCAtY2hlY2subGVuZ3RoICkgPT09IGNoZWNrIDoKKyAgICAgICAgICAgICAg
ICAgICAgb3BlcmF0b3IgPT09ICJ+PSIgPyAoICIgIiArIHJlc3VsdC5yZXBsYWNlKCByd2hpdGVz
cGFjZSwgIiAiICkgKyAiICIgKS5pbmRleE9mKCBjaGVjayApID4gLTEgOgorICAgICAgICAgICAg
ICAgICAgICBvcGVyYXRvciA9PT0gInw9IiA/IHJlc3VsdCA9PT0gY2hlY2sgfHwgcmVzdWx0LnNs
aWNlKCAwLCBjaGVjay5sZW5ndGggKyAxICkgPT09IGNoZWNrICsgIi0iIDoKKyAgICAgICAgICAg
ICAgICAgICAgZmFsc2U7CisgICAgICAgICAgICB9OworICAgICAgICB9LAorCisgICAgICAgICJD
SElMRCI6IGZ1bmN0aW9uKCB0eXBlLCB3aGF0LCBhcmd1bWVudCwgZmlyc3QsIGxhc3QgKSB7Cisg
ICAgICAgICAgICB2YXIgc2ltcGxlID0gdHlwZS5zbGljZSggMCwgMyApICE9PSAibnRoIiwKKyAg
ICAgICAgICAgICAgICBmb3J3YXJkID0gdHlwZS5zbGljZSggLTQgKSAhPT0gImxhc3QiLAorICAg
ICAgICAgICAgICAgIG9mVHlwZSA9IHdoYXQgPT09ICJvZi10eXBlIjsKKworICAgICAgICAgICAg
cmV0dXJuIGZpcnN0ID09PSAxICYmIGxhc3QgPT09IDAgPworCisgICAgICAgICAgICAgICAgLy8g
U2hvcnRjdXQgZm9yIDpudGgtKihuKQorICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCBlbGVtICkg
eworICAgICAgICAgICAgICAgICAgICByZXR1cm4gISFlbGVtLnBhcmVudE5vZGU7CisgICAgICAg
ICAgICAgICAgfSA6CisKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiggZWxlbSwgY29udGV4dCwg
eG1sICkgeworICAgICAgICAgICAgICAgICAgICB2YXIgY2FjaGUsIHVuaXF1ZUNhY2hlLCBvdXRl
ckNhY2hlLCBub2RlLCBub2RlSW5kZXgsIHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ZGlyID0gc2ltcGxlICE9PSBmb3J3YXJkID8gIm5leHRTaWJsaW5nIiA6ICJwcmV2aW91c1NpYmxp
bmciLAorICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50ID0gZWxlbS5wYXJlbnROb2RlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IG9mVHlwZSAmJiBlbGVtLm5vZGVOYW1lLnRv
TG93ZXJDYXNlKCksCisgICAgICAgICAgICAgICAgICAgICAgICB1c2VDYWNoZSA9ICF4bWwgJiYg
IW9mVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRpZmYgPSBmYWxzZTsKKworICAgICAg
ICAgICAgICAgICAgICBpZiAoIHBhcmVudCApIHsKKworICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gOihmaXJzdHxsYXN0fG9ubHkpLShjaGlsZHxvZi10eXBlKQorICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCBzaW1wbGUgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUg
KCBkaXIgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUgPSBlbGVtOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoIChub2RlID0gbm9kZVsgZGly
IF0pICkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBvZlR5cGUg
PworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUubm9kZU5hbWUu
dG9Mb3dlckNhc2UoKSA9PT0gbmFtZSA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbm9kZS5ub2RlVHlwZSA9PT0gMSApIHsKKworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXZlcnNlIGRpcmVjdGlvbiBmb3IgOm9ubHkt
KiAoaWYgd2UgaGF2ZW4ndCB5ZXQgZG9uZSBzbykKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RhcnQgPSBkaXIgPSB0eXBlID09PSAib25seSIgJiYgIXN0YXJ0ICYmICJuZXh0U2li
bGluZyI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgICAgICAgICBzdGFydCA9IFsgZm9yd2FyZCA/IHBhcmVudC5maXJzdENoaWxk
IDogcGFyZW50Lmxhc3RDaGlsZCBdOworCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBub24t
eG1sIDpudGgtY2hpbGQoLi4uKSBzdG9yZXMgY2FjaGUgZGF0YSBvbiBgcGFyZW50YAorICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCBmb3J3YXJkICYmIHVzZUNhY2hlICkgeworCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gU2VlayBgZWxlbWAgZnJvbSBhIHByZXZpb3VzbHktY2Fj
aGVkIGluZGV4CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAuLi5pbiBhIGd6aXAt
ZnJpZW5kbHkgd2F5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZSA9IHBhcmVudDsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRlckNhY2hlID0gbm9kZVsgZXhwYW5kbyBd
IHx8IChub2RlWyBleHBhbmRvIF0gPSB7fSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBTdXBwb3J0OiBJRSA8OSBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
RGVmZW5kIGFnYWluc3QgY2xvbmVkIGF0dHJvcGVydGllcyAoalF1ZXJ5IGdoLTE3MDkpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5pcXVlQ2FjaGUgPSBvdXRlckNhY2hlWyBub2RlLnVu
aXF1ZUlEIF0gfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG91dGVyQ2FjaGVb
IG5vZGUudW5pcXVlSUQgXSA9IHt9KTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNh
Y2hlID0gdW5pcXVlQ2FjaGVbIHR5cGUgXSB8fCBbXTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBub2RlSW5kZXggPSBjYWNoZVsgMCBdID09PSBkaXJydW5zICYmIGNhY2hlWyAxIF07Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlmZiA9IG5vZGVJbmRleCAmJiBjYWNoZVsgMiBd
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUgPSBub2RlSW5kZXggJiYgcGFyZW50
LmNoaWxkTm9kZXNbIG5vZGVJbmRleCBdOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
d2hpbGUgKCAobm9kZSA9ICsrbm9kZUluZGV4ICYmIG5vZGUgJiYgbm9kZVsgZGlyIF0gfHwKKwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGYWxsYmFjayB0byBzZWVraW5nIGBl
bGVtYCBmcm9tIHRoZSBzdGFydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGlm
ZiA9IG5vZGVJbmRleCA9IDApIHx8IHN0YXJ0LnBvcCgpKSApIHsKKworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBXaGVuIGZvdW5kLCBjYWNoZSBpbmRleGVzIG9uIGBwYXJlbnRg
IGFuZCBicmVhaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIG5vZGUubm9k
ZVR5cGUgPT09IDEgJiYgKytkaWZmICYmIG5vZGUgPT09IGVsZW0gKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bmlxdWVDYWNoZVsgdHlwZSBdID0gWyBkaXJydW5zLCBu
b2RlSW5kZXgsIGRpZmYgXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIFVzZSBwcmV2aW91c2x5LWNhY2hlZCBlbGVtZW50IGlu
ZGV4IGlmIGF2YWlsYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggdXNlQ2Fj
aGUgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIC4uLmluIGEgZ3ppcC1m
cmllbmRseSB3YXkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZSA9IGVsZW07
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dGVyQ2FjaGUgPSBub2RlWyBleHBh
bmRvIF0gfHwgKG5vZGVbIGV4cGFuZG8gXSA9IHt9KTsKKworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBTdXBwb3J0OiBJRSA8OSBvbmx5CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIERlZmVuZCBhZ2FpbnN0IGNsb25lZCBhdHRyb3BlcnRpZXMgKGpRdWVyeSBn
aC0xNzA5KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlxdWVDYWNoZSA9IG91
dGVyQ2FjaGVbIG5vZGUudW5pcXVlSUQgXSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKG91dGVyQ2FjaGVbIG5vZGUudW5pcXVlSUQgXSA9IHt9KTsKKworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjYWNoZSA9IHVuaXF1ZUNhY2hlWyB0eXBlIF0gfHwgW107
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVJbmRleCA9IGNhY2hlWyAwIF0g
PT09IGRpcnJ1bnMgJiYgY2FjaGVbIDEgXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGlmZiA9IG5vZGVJbmRleDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB4bWwgOm50aC1jaGlsZCguLi4pCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gb3IgOm50aC1sYXN0LWNoaWxkKC4uLikgb3IgOm50aCgt
bGFzdCk/LW9mLXR5cGUoLi4uKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggZGlm
ZiA9PT0gZmFsc2UgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFVzZSB0
aGUgc2FtZSBsb29wIGFzIGFib3ZlIHRvIHNlZWsgYGVsZW1gIGZyb20gdGhlIHN0YXJ0CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICggKG5vZGUgPSArK25vZGVJbmRleCAm
JiBub2RlICYmIG5vZGVbIGRpciBdIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoZGlmZiA9IG5vZGVJbmRleCA9IDApIHx8IHN0YXJ0LnBvcCgpKSApIHsKKworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAoIG9mVHlwZSA/CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgp
ID09PSBuYW1lIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2Rl
Lm5vZGVUeXBlID09PSAxICkgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICArK2RpZmYgKSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBDYWNoZSB0aGUgaW5kZXggb2YgZWFjaCBlbmNvdW50ZXJlZCBlbGVtZW50CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCB1c2VDYWNoZSApIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ZXJDYWNoZSA9IG5vZGVb
IGV4cGFuZG8gXSB8fCAobm9kZVsgZXhwYW5kbyBdID0ge30pOworCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6IElFIDw5IG9ubHkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGVmZW5kIGFnYWluc3Qg
Y2xvbmVkIGF0dHJvcGVydGllcyAoalF1ZXJ5IGdoLTE3MDkpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXF1ZUNhY2hlID0gb3V0ZXJDYWNoZVsgbm9kZS51
bmlxdWVJRCBdIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAob3V0ZXJDYWNoZVsgbm9kZS51bmlxdWVJRCBdID0ge30pOworCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXF1ZUNhY2hlWyB0eXBlIF0gPSBbIGRp
cnJ1bnMsIGRpZmYgXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIG5vZGUgPT09
IGVsZW0gKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgLy8gSW5jb3Jwb3JhdGUgdGhlIG9m
ZnNldCwgdGhlbiBjaGVjayBhZ2FpbnN0IGN5Y2xlIHNpemUKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGRpZmYgLT0gbGFzdDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkaWZmID09
PSBmaXJzdCB8fCAoIGRpZmYgJSBmaXJzdCA9PT0gMCAmJiBkaWZmIC8gZmlyc3QgPj0gMCApOwor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgfSwKKwor
ICAgICAgICAiUFNFVURPIjogZnVuY3Rpb24oIHBzZXVkbywgYXJndW1lbnQgKSB7CisgICAgICAg
ICAgICAvLyBwc2V1ZG8tY2xhc3MgbmFtZXMgYXJlIGNhc2UtaW5zZW5zaXRpdmUKKyAgICAgICAg
ICAgIC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL3NlbGVjdG9ycy8jcHNldWRvLWNsYXNzZXMKKyAg
ICAgICAgICAgIC8vIFByaW9yaXRpemUgYnkgY2FzZSBzZW5zaXRpdml0eSBpbiBjYXNlIGN1c3Rv
bSBwc2V1ZG9zIGFyZSBhZGRlZCB3aXRoIHVwcGVyY2FzZSBsZXR0ZXJzCisgICAgICAgICAgICAv
LyBSZW1lbWJlciB0aGF0IHNldEZpbHRlcnMgaW5oZXJpdHMgZnJvbSBwc2V1ZG9zCisgICAgICAg
ICAgICB2YXIgYXJncywKKyAgICAgICAgICAgICAgICBmbiA9IEV4cHIucHNldWRvc1sgcHNldWRv
IF0gfHwgRXhwci5zZXRGaWx0ZXJzWyBwc2V1ZG8udG9Mb3dlckNhc2UoKSBdIHx8CisgICAgICAg
ICAgICAgICAgICAgIFNpenpsZS5lcnJvciggInVuc3VwcG9ydGVkIHBzZXVkbzogIiArIHBzZXVk
byApOworCisgICAgICAgICAgICAvLyBUaGUgdXNlciBtYXkgdXNlIGNyZWF0ZVBzZXVkbyB0byBp
bmRpY2F0ZSB0aGF0CisgICAgICAgICAgICAvLyBhcmd1bWVudHMgYXJlIG5lZWRlZCB0byBjcmVh
dGUgdGhlIGZpbHRlciBmdW5jdGlvbgorICAgICAgICAgICAgLy8ganVzdCBhcyBTaXp6bGUgZG9l
cworICAgICAgICAgICAgaWYgKCBmblsgZXhwYW5kbyBdICkgeworICAgICAgICAgICAgICAgIHJl
dHVybiBmbiggYXJndW1lbnQgKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gQnV0
IG1haW50YWluIHN1cHBvcnQgZm9yIG9sZCBzaWduYXR1cmVzCisgICAgICAgICAgICBpZiAoIGZu
Lmxlbmd0aCA+IDEgKSB7CisgICAgICAgICAgICAgICAgYXJncyA9IFsgcHNldWRvLCBwc2V1ZG8s
ICIiLCBhcmd1bWVudCBdOworICAgICAgICAgICAgICAgIHJldHVybiBFeHByLnNldEZpbHRlcnMu
aGFzT3duUHJvcGVydHkoIHBzZXVkby50b0xvd2VyQ2FzZSgpICkgPworICAgICAgICAgICAgICAg
ICAgICBtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIHNlZWQsIG1hdGNoZXMgKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICB2YXIgaWR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNo
ZWQgPSBmbiggc2VlZCwgYXJndW1lbnQgKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ID0gbWF0Y2hlZC5sZW5ndGg7CisgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoIGktLSAp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZHggPSBpbmRleE9mKCBzZWVkLCBtYXRj
aGVkW2ldICk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VlZFsgaWR4IF0gPSAhKCBt
YXRjaGVzWyBpZHggXSA9IG1hdGNoZWRbaV0gKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgfSkgOgorICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigg
ZWxlbSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmbiggZWxlbSwgMCwgYXJn
cyApOworICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICByZXR1cm4gZm47CisgICAgICAgIH0KKyAgICB9LAorCisgICAgcHNldWRvczogeworICAgICAg
ICAvLyBQb3RlbnRpYWxseSBjb21wbGV4IHBzZXVkb3MKKyAgICAgICAgIm5vdCI6IG1hcmtGdW5j
dGlvbihmdW5jdGlvbiggc2VsZWN0b3IgKSB7CisgICAgICAgICAgICAvLyBUcmltIHRoZSBzZWxl
Y3RvciBwYXNzZWQgdG8gY29tcGlsZQorICAgICAgICAgICAgLy8gdG8gYXZvaWQgdHJlYXRpbmcg
bGVhZGluZyBhbmQgdHJhaWxpbmcKKyAgICAgICAgICAgIC8vIHNwYWNlcyBhcyBjb21iaW5hdG9y
cworICAgICAgICAgICAgdmFyIGlucHV0ID0gW10sCisgICAgICAgICAgICAgICAgcmVzdWx0cyA9
IFtdLAorICAgICAgICAgICAgICAgIG1hdGNoZXIgPSBjb21waWxlKCBzZWxlY3Rvci5yZXBsYWNl
KCBydHJpbSwgIiQxIiApICk7CisKKyAgICAgICAgICAgIHJldHVybiBtYXRjaGVyWyBleHBhbmRv
IF0gPworICAgICAgICAgICAgICAgIG1hcmtGdW5jdGlvbihmdW5jdGlvbiggc2VlZCwgbWF0Y2hl
cywgY29udGV4dCwgeG1sICkgeworICAgICAgICAgICAgICAgICAgICB2YXIgZWxlbSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHVubWF0Y2hlZCA9IG1hdGNoZXIoIHNlZWQsIG51bGwsIHhtbCwg
W10gKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBzZWVkLmxlbmd0aDsKKworICAgICAg
ICAgICAgICAgICAgICAvLyBNYXRjaCBlbGVtZW50cyB1bm1hdGNoZWQgYnkgYG1hdGNoZXJgCisg
ICAgICAgICAgICAgICAgICAgIHdoaWxlICggaS0tICkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCAoZWxlbSA9IHVubWF0Y2hlZFtpXSkgKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2VlZFtpXSA9ICEobWF0Y2hlc1tpXSA9IGVsZW0pOworICAgICAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSkgOgorICAg
ICAgICAgICAgICAgIGZ1bmN0aW9uKCBlbGVtLCBjb250ZXh0LCB4bWwgKSB7CisgICAgICAgICAg
ICAgICAgICAgIGlucHV0WzBdID0gZWxlbTsKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2hlcigg
aW5wdXQsIG51bGwsIHhtbCwgcmVzdWx0cyApOworICAgICAgICAgICAgICAgICAgICAvLyBEb24n
dCBrZWVwIHRoZSBlbGVtZW50IChpc3N1ZSAjMjk5KQorICAgICAgICAgICAgICAgICAgICBpbnB1
dFswXSA9IG51bGw7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAhcmVzdWx0cy5wb3AoKTsK
KyAgICAgICAgICAgICAgICB9OworICAgICAgICB9KSwKKworICAgICAgICAiaGFzIjogbWFya0Z1
bmN0aW9uKGZ1bmN0aW9uKCBzZWxlY3RvciApIHsKKyAgICAgICAgICAgIHJldHVybiBmdW5jdGlv
biggZWxlbSApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gU2l6emxlKCBzZWxlY3RvciwgZWxl
bSApLmxlbmd0aCA+IDA7CisgICAgICAgICAgICB9OworICAgICAgICB9KSwKKworICAgICAgICAi
Y29udGFpbnMiOiBtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIHRleHQgKSB7CisgICAgICAgICAgICB0
ZXh0ID0gdGV4dC5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApOworICAgICAgICAgICAg
cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkgeworICAgICAgICAgICAgICAgIHJldHVybiAoIGVsZW0u
dGV4dENvbnRlbnQgfHwgZWxlbS5pbm5lclRleHQgfHwgZ2V0VGV4dCggZWxlbSApICkuaW5kZXhP
ZiggdGV4dCApID4gLTE7CisgICAgICAgICAgICB9OworICAgICAgICB9KSwKKworICAgICAgICAv
LyAiV2hldGhlciBhbiBlbGVtZW50IGlzIHJlcHJlc2VudGVkIGJ5IGEgOmxhbmcoKSBzZWxlY3Rv
cgorICAgICAgICAvLyBpcyBiYXNlZCBzb2xlbHkgb24gdGhlIGVsZW1lbnQncyBsYW5ndWFnZSB2
YWx1ZQorICAgICAgICAvLyBiZWluZyBlcXVhbCB0byB0aGUgaWRlbnRpZmllciBDLAorICAgICAg
ICAvLyBvciBiZWdpbm5pbmcgd2l0aCB0aGUgaWRlbnRpZmllciBDIGltbWVkaWF0ZWx5IGZvbGxv
d2VkIGJ5ICItIi4KKyAgICAgICAgLy8gVGhlIG1hdGNoaW5nIG9mIEMgYWdhaW5zdCB0aGUgZWxl
bWVudCdzIGxhbmd1YWdlIHZhbHVlIGlzIHBlcmZvcm1lZCBjYXNlLWluc2Vuc2l0aXZlbHkuCisg
ICAgICAgIC8vIFRoZSBpZGVudGlmaWVyIEMgZG9lcyBub3QgaGF2ZSB0byBiZSBhIHZhbGlkIGxh
bmd1YWdlIG5hbWUuIgorICAgICAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9zZWxlY3RvcnMv
I2xhbmctcHNldWRvCisgICAgICAgICJsYW5nIjogbWFya0Z1bmN0aW9uKCBmdW5jdGlvbiggbGFu
ZyApIHsKKyAgICAgICAgICAgIC8vIGxhbmcgdmFsdWUgbXVzdCBiZSBhIHZhbGlkIGlkZW50aWZp
ZXIKKyAgICAgICAgICAgIGlmICggIXJpZGVudGlmaWVyLnRlc3QobGFuZyB8fCAiIikgKSB7Cisg
ICAgICAgICAgICAgICAgU2l6emxlLmVycm9yKCAidW5zdXBwb3J0ZWQgbGFuZzogIiArIGxhbmcg
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGxhbmcgPSBsYW5nLnJlcGxhY2UoIHJ1bmVz
Y2FwZSwgZnVuZXNjYXBlICkudG9Mb3dlckNhc2UoKTsKKyAgICAgICAgICAgIHJldHVybiBmdW5j
dGlvbiggZWxlbSApIHsKKyAgICAgICAgICAgICAgICB2YXIgZWxlbUxhbmc7CisgICAgICAgICAg
ICAgICAgZG8geworICAgICAgICAgICAgICAgICAgICBpZiAoIChlbGVtTGFuZyA9IGRvY3VtZW50
SXNIVE1MID8KKyAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0ubGFuZyA6CisgICAgICAgICAg
ICAgICAgICAgICAgICBlbGVtLmdldEF0dHJpYnV0ZSgieG1sOmxhbmciKSB8fCBlbGVtLmdldEF0
dHJpYnV0ZSgibGFuZyIpKSApIHsKKworICAgICAgICAgICAgICAgICAgICAgICAgZWxlbUxhbmcg
PSBlbGVtTGFuZy50b0xvd2VyQ2FzZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGVsZW1MYW5nID09PSBsYW5nIHx8IGVsZW1MYW5nLmluZGV4T2YoIGxhbmcgKyAiLSIgKSA9PT0g
MDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gd2hpbGUgKCAoZWxl
bSA9IGVsZW0ucGFyZW50Tm9kZSkgJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSApOworICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH07CisgICAgICAgIH0pLAorCisgICAg
ICAgIC8vIE1pc2NlbGxhbmVvdXMKKyAgICAgICAgInRhcmdldCI6IGZ1bmN0aW9uKCBlbGVtICkg
eworICAgICAgICAgICAgdmFyIGhhc2ggPSB3aW5kb3cubG9jYXRpb24gJiYgd2luZG93LmxvY2F0
aW9uLmhhc2g7CisgICAgICAgICAgICByZXR1cm4gaGFzaCAmJiBoYXNoLnNsaWNlKCAxICkgPT09
IGVsZW0uaWQ7CisgICAgICAgIH0sCisKKyAgICAgICAgInJvb3QiOiBmdW5jdGlvbiggZWxlbSAp
IHsKKyAgICAgICAgICAgIHJldHVybiBlbGVtID09PSBkb2NFbGVtOworICAgICAgICB9LAorCisg
ICAgICAgICJmb2N1cyI6IGZ1bmN0aW9uKCBlbGVtICkgeworICAgICAgICAgICAgcmV0dXJuIGVs
ZW0gPT09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgJiYgKCFkb2N1bWVudC5oYXNGb2N1cyB8fCBk
b2N1bWVudC5oYXNGb2N1cygpKSAmJiAhIShlbGVtLnR5cGUgfHwgZWxlbS5ocmVmIHx8IH5lbGVt
LnRhYkluZGV4KTsKKyAgICAgICAgfSwKKworICAgICAgICAvLyBCb29sZWFuIHByb3BlcnRpZXMK
KyAgICAgICAgImVuYWJsZWQiOiBjcmVhdGVEaXNhYmxlZFBzZXVkbyggZmFsc2UgKSwKKyAgICAg
ICAgImRpc2FibGVkIjogY3JlYXRlRGlzYWJsZWRQc2V1ZG8oIHRydWUgKSwKKworICAgICAgICAi
Y2hlY2tlZCI6IGZ1bmN0aW9uKCBlbGVtICkgeworICAgICAgICAgICAgLy8gSW4gQ1NTMywgOmNo
ZWNrZWQgc2hvdWxkIHJldHVybiBib3RoIGNoZWNrZWQgYW5kIHNlbGVjdGVkIGVsZW1lbnRzCisg
ICAgICAgICAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDExL1JFQy1jc3MzLXNlbGVjdG9y
cy0yMDExMDkyOS8jY2hlY2tlZAorICAgICAgICAgICAgdmFyIG5vZGVOYW1lID0gZWxlbS5ub2Rl
TmFtZS50b0xvd2VyQ2FzZSgpOworICAgICAgICAgICAgcmV0dXJuIChub2RlTmFtZSA9PT0gImlu
cHV0IiAmJiAhIWVsZW0uY2hlY2tlZCkgfHwgKG5vZGVOYW1lID09PSAib3B0aW9uIiAmJiAhIWVs
ZW0uc2VsZWN0ZWQpOworICAgICAgICB9LAorCisgICAgICAgICJzZWxlY3RlZCI6IGZ1bmN0aW9u
KCBlbGVtICkgeworICAgICAgICAgICAgLy8gQWNjZXNzaW5nIHRoaXMgcHJvcGVydHkgbWFrZXMg
c2VsZWN0ZWQtYnktZGVmYXVsdAorICAgICAgICAgICAgLy8gb3B0aW9ucyBpbiBTYWZhcmkgd29y
ayBwcm9wZXJseQorICAgICAgICAgICAgaWYgKCBlbGVtLnBhcmVudE5vZGUgKSB7CisgICAgICAg
ICAgICAgICAgZWxlbS5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXg7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHJldHVybiBlbGVtLnNlbGVjdGVkID09PSB0cnVlOworICAgICAgICB9LAor
CisgICAgICAgIC8vIENvbnRlbnRzCisgICAgICAgICJlbXB0eSI6IGZ1bmN0aW9uKCBlbGVtICkg
eworICAgICAgICAgICAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIvc2VsZWN0b3JzLyNlbXB0eS1w
c2V1ZG8KKyAgICAgICAgICAgIC8vIDplbXB0eSBpcyBuZWdhdGVkIGJ5IGVsZW1lbnQgKDEpIG9y
IGNvbnRlbnQgbm9kZXMgKHRleHQ6IDM7IGNkYXRhOiA0OyBlbnRpdHkgcmVmOiA1KSwKKyAgICAg
ICAgICAgIC8vICAgYnV0IG5vdCBieSBvdGhlcnMgKGNvbW1lbnQ6IDg7IHByb2Nlc3NpbmcgaW5z
dHJ1Y3Rpb246IDc7IGV0Yy4pCisgICAgICAgICAgICAvLyBub2RlVHlwZSA8IDYgd29ya3MgYmVj
YXVzZSBhdHRyaWJ1dGVzICgyKSBkbyBub3QgYXBwZWFyIGFzIGNoaWxkcmVuCisgICAgICAgICAg
ICBmb3IgKCBlbGVtID0gZWxlbS5maXJzdENoaWxkOyBlbGVtOyBlbGVtID0gZWxlbS5uZXh0U2li
bGluZyApIHsKKyAgICAgICAgICAgICAgICBpZiAoIGVsZW0ubm9kZVR5cGUgPCA2ICkgeworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0sCisKKyAgICAgICAg
InBhcmVudCI6IGZ1bmN0aW9uKCBlbGVtICkgeworICAgICAgICAgICAgcmV0dXJuICFFeHByLnBz
ZXVkb3NbImVtcHR5Il0oIGVsZW0gKTsKKyAgICAgICAgfSwKKworICAgICAgICAvLyBFbGVtZW50
L2lucHV0IHR5cGVzCisgICAgICAgICJoZWFkZXIiOiBmdW5jdGlvbiggZWxlbSApIHsKKyAgICAg
ICAgICAgIHJldHVybiByaGVhZGVyLnRlc3QoIGVsZW0ubm9kZU5hbWUgKTsKKyAgICAgICAgfSwK
KworICAgICAgICAiaW5wdXQiOiBmdW5jdGlvbiggZWxlbSApIHsKKyAgICAgICAgICAgIHJldHVy
biByaW5wdXRzLnRlc3QoIGVsZW0ubm9kZU5hbWUgKTsKKyAgICAgICAgfSwKKworICAgICAgICAi
YnV0dG9uIjogZnVuY3Rpb24oIGVsZW0gKSB7CisgICAgICAgICAgICB2YXIgbmFtZSA9IGVsZW0u
bm9kZU5hbWUudG9Mb3dlckNhc2UoKTsKKyAgICAgICAgICAgIHJldHVybiBuYW1lID09PSAiaW5w
dXQiICYmIGVsZW0udHlwZSA9PT0gImJ1dHRvbiIgfHwgbmFtZSA9PT0gImJ1dHRvbiI7CisgICAg
ICAgIH0sCisKKyAgICAgICAgInRleHQiOiBmdW5jdGlvbiggZWxlbSApIHsKKyAgICAgICAgICAg
IHZhciBhdHRyOworICAgICAgICAgICAgcmV0dXJuIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2Uo
KSA9PT0gImlucHV0IiAmJgorICAgICAgICAgICAgICAgIGVsZW0udHlwZSA9PT0gInRleHQiICYm
CisKKyAgICAgICAgICAgICAgICAvLyBTdXBwb3J0OiBJRTw4CisgICAgICAgICAgICAgICAgLy8g
TmV3IEhUTUw1IGF0dHJpYnV0ZSB2YWx1ZXMgKGUuZy4sICJzZWFyY2giKSBhcHBlYXIgd2l0aCBl
bGVtLnR5cGUgPT09ICJ0ZXh0IgorICAgICAgICAgICAgICAgICggKGF0dHIgPSBlbGVtLmdldEF0
dHJpYnV0ZSgidHlwZSIpKSA9PSBudWxsIHx8IGF0dHIudG9Mb3dlckNhc2UoKSA9PT0gInRleHQi
ICk7CisgICAgICAgIH0sCisKKyAgICAgICAgLy8gUG9zaXRpb24taW4tY29sbGVjdGlvbgorICAg
ICAgICAiZmlyc3QiOiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgcmV0dXJuIFsgMCBdOworICAgICAgICB9KSwKKworICAgICAgICAibGFzdCI6IGNyZWF0
ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24oIG1hdGNoSW5kZXhlcywgbGVuZ3RoICkgeworICAg
ICAgICAgICAgcmV0dXJuIFsgbGVuZ3RoIC0gMSBdOworICAgICAgICB9KSwKKworICAgICAgICAi
ZXEiOiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0
aCwgYXJndW1lbnQgKSB7CisgICAgICAgICAgICByZXR1cm4gWyBhcmd1bWVudCA8IDAgPyBhcmd1
bWVudCArIGxlbmd0aCA6IGFyZ3VtZW50IF07CisgICAgICAgIH0pLAorCisgICAgICAgICJldmVu
IjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbiggbWF0Y2hJbmRleGVzLCBsZW5ndGgg
KSB7CisgICAgICAgICAgICB2YXIgaSA9IDA7CisgICAgICAgICAgICBmb3IgKCA7IGkgPCBsZW5n
dGg7IGkgKz0gMiApIHsKKyAgICAgICAgICAgICAgICBtYXRjaEluZGV4ZXMucHVzaCggaSApOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG1hdGNoSW5kZXhlczsKKyAgICAgICAg
fSksCisKKyAgICAgICAgIm9kZCI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24oIG1h
dGNoSW5kZXhlcywgbGVuZ3RoICkgeworICAgICAgICAgICAgdmFyIGkgPSAxOworICAgICAgICAg
ICAgZm9yICggOyBpIDwgbGVuZ3RoOyBpICs9IDIgKSB7CisgICAgICAgICAgICAgICAgbWF0Y2hJ
bmRleGVzLnB1c2goIGkgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBtYXRj
aEluZGV4ZXM7CisgICAgICAgIH0pLAorCisgICAgICAgICJsdCI6IGNyZWF0ZVBvc2l0aW9uYWxQ
c2V1ZG8oZnVuY3Rpb24oIG1hdGNoSW5kZXhlcywgbGVuZ3RoLCBhcmd1bWVudCApIHsKKyAgICAg
ICAgICAgIHZhciBpID0gYXJndW1lbnQgPCAwID8gYXJndW1lbnQgKyBsZW5ndGggOiBhcmd1bWVu
dDsKKyAgICAgICAgICAgIGZvciAoIDsgLS1pID49IDA7ICkgeworICAgICAgICAgICAgICAgIG1h
dGNoSW5kZXhlcy5wdXNoKCBpICk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4g
bWF0Y2hJbmRleGVzOworICAgICAgICB9KSwKKworICAgICAgICAiZ3QiOiBjcmVhdGVQb3NpdGlv
bmFsUHNldWRvKGZ1bmN0aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0aCwgYXJndW1lbnQgKSB7Cisg
ICAgICAgICAgICB2YXIgaSA9IGFyZ3VtZW50IDwgMCA/IGFyZ3VtZW50ICsgbGVuZ3RoIDogYXJn
dW1lbnQ7CisgICAgICAgICAgICBmb3IgKCA7ICsraSA8IGxlbmd0aDsgKSB7CisgICAgICAgICAg
ICAgICAgbWF0Y2hJbmRleGVzLnB1c2goIGkgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IHJldHVybiBtYXRjaEluZGV4ZXM7CisgICAgICAgIH0pCisgICAgfQorfTsKKworRXhwci5wc2V1
ZG9zWyJudGgiXSA9IEV4cHIucHNldWRvc1siZXEiXTsKKworLy8gQWRkIGJ1dHRvbi9pbnB1dCB0
eXBlIHBzZXVkb3MKK2ZvciAoIGkgaW4geyByYWRpbzogdHJ1ZSwgY2hlY2tib3g6IHRydWUsIGZp
bGU6IHRydWUsIHBhc3N3b3JkOiB0cnVlLCBpbWFnZTogdHJ1ZSB9ICkgeworICAgIEV4cHIucHNl
dWRvc1sgaSBdID0gY3JlYXRlSW5wdXRQc2V1ZG8oIGkgKTsKK30KK2ZvciAoIGkgaW4geyBzdWJt
aXQ6IHRydWUsIHJlc2V0OiB0cnVlIH0gKSB7CisgICAgRXhwci5wc2V1ZG9zWyBpIF0gPSBjcmVh
dGVCdXR0b25Qc2V1ZG8oIGkgKTsKK30KKworLy8gRWFzeSBBUEkgZm9yIGNyZWF0aW5nIG5ldyBz
ZXRGaWx0ZXJzCitmdW5jdGlvbiBzZXRGaWx0ZXJzKCkge30KK3NldEZpbHRlcnMucHJvdG90eXBl
ID0gRXhwci5maWx0ZXJzID0gRXhwci5wc2V1ZG9zOworRXhwci5zZXRGaWx0ZXJzID0gbmV3IHNl
dEZpbHRlcnMoKTsKKwordG9rZW5pemUgPSBTaXp6bGUudG9rZW5pemUgPSBmdW5jdGlvbiggc2Vs
ZWN0b3IsIHBhcnNlT25seSApIHsKKyAgICB2YXIgbWF0Y2hlZCwgbWF0Y2gsIHRva2VucywgdHlw
ZSwKKyAgICAgICAgc29GYXIsIGdyb3VwcywgcHJlRmlsdGVycywKKyAgICAgICAgY2FjaGVkID0g
dG9rZW5DYWNoZVsgc2VsZWN0b3IgKyAiICIgXTsKKworICAgIGlmICggY2FjaGVkICkgeworICAg
ICAgICByZXR1cm4gcGFyc2VPbmx5ID8gMCA6IGNhY2hlZC5zbGljZSggMCApOworICAgIH0KKwor
ICAgIHNvRmFyID0gc2VsZWN0b3I7CisgICAgZ3JvdXBzID0gW107CisgICAgcHJlRmlsdGVycyA9
IEV4cHIucHJlRmlsdGVyOworCisgICAgd2hpbGUgKCBzb0ZhciApIHsKKworICAgICAgICAvLyBD
b21tYSBhbmQgZmlyc3QgcnVuCisgICAgICAgIGlmICggIW1hdGNoZWQgfHwgKG1hdGNoID0gcmNv
bW1hLmV4ZWMoIHNvRmFyICkpICkgeworICAgICAgICAgICAgaWYgKCBtYXRjaCApIHsKKyAgICAg
ICAgICAgICAgICAvLyBEb24ndCBjb25zdW1lIHRyYWlsaW5nIGNvbW1hcyBhcyB2YWxpZAorICAg
ICAgICAgICAgICAgIHNvRmFyID0gc29GYXIuc2xpY2UoIG1hdGNoWzBdLmxlbmd0aCApIHx8IHNv
RmFyOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZ3JvdXBzLnB1c2goICh0b2tlbnMgPSBb
XSkgKTsKKyAgICAgICAgfQorCisgICAgICAgIG1hdGNoZWQgPSBmYWxzZTsKKworICAgICAgICAv
LyBDb21iaW5hdG9ycworICAgICAgICBpZiAoIChtYXRjaCA9IHJjb21iaW5hdG9ycy5leGVjKCBz
b0ZhciApKSApIHsKKyAgICAgICAgICAgIG1hdGNoZWQgPSBtYXRjaC5zaGlmdCgpOworICAgICAg
ICAgICAgdG9rZW5zLnB1c2goeworICAgICAgICAgICAgICAgIHZhbHVlOiBtYXRjaGVkLAorICAg
ICAgICAgICAgICAgIC8vIENhc3QgZGVzY2VuZGFudCBjb21iaW5hdG9ycyB0byBzcGFjZQorICAg
ICAgICAgICAgICAgIHR5cGU6IG1hdGNoWzBdLnJlcGxhY2UoIHJ0cmltLCAiICIgKQorICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICBzb0ZhciA9IHNvRmFyLnNsaWNlKCBtYXRjaGVkLmxlbmd0
aCApOworICAgICAgICB9CisKKyAgICAgICAgLy8gRmlsdGVycworICAgICAgICBmb3IgKCB0eXBl
IGluIEV4cHIuZmlsdGVyICkgeworICAgICAgICAgICAgaWYgKCAobWF0Y2ggPSBtYXRjaEV4cHJb
IHR5cGUgXS5leGVjKCBzb0ZhciApKSAmJiAoIXByZUZpbHRlcnNbIHR5cGUgXSB8fAorICAgICAg
ICAgICAgICAgIChtYXRjaCA9IHByZUZpbHRlcnNbIHR5cGUgXSggbWF0Y2ggKSkpICkgeworICAg
ICAgICAgICAgICAgIG1hdGNoZWQgPSBtYXRjaC5zaGlmdCgpOworICAgICAgICAgICAgICAgIHRv
a2Vucy5wdXNoKHsKKyAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG1hdGNoZWQsCisgICAgICAg
ICAgICAgICAgICAgIHR5cGU6IHR5cGUsCisgICAgICAgICAgICAgICAgICAgIG1hdGNoZXM6IG1h
dGNoCisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgc29GYXIgPSBzb0Zhci5z
bGljZSggbWF0Y2hlZC5sZW5ndGggKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAg
ICAgIGlmICggIW1hdGNoZWQgKSB7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
IH0KKworICAgIC8vIFJldHVybiB0aGUgbGVuZ3RoIG9mIHRoZSBpbnZhbGlkIGV4Y2VzcworICAg
IC8vIGlmIHdlJ3JlIGp1c3QgcGFyc2luZworICAgIC8vIE90aGVyd2lzZSwgdGhyb3cgYW4gZXJy
b3Igb3IgcmV0dXJuIHRva2VucworICAgIHJldHVybiBwYXJzZU9ubHkgPworICAgICAgICBzb0Zh
ci5sZW5ndGggOgorICAgICAgICBzb0ZhciA/CisgICAgICAgICAgICBTaXp6bGUuZXJyb3IoIHNl
bGVjdG9yICkgOgorICAgICAgICAgICAgLy8gQ2FjaGUgdGhlIHRva2VucworICAgICAgICAgICAg
dG9rZW5DYWNoZSggc2VsZWN0b3IsIGdyb3VwcyApLnNsaWNlKCAwICk7Cit9OworCitmdW5jdGlv
biB0b1NlbGVjdG9yKCB0b2tlbnMgKSB7CisgICAgdmFyIGkgPSAwLAorICAgICAgICBsZW4gPSB0
b2tlbnMubGVuZ3RoLAorICAgICAgICBzZWxlY3RvciA9ICIiOworICAgIGZvciAoIDsgaSA8IGxl
bjsgaSsrICkgeworICAgICAgICBzZWxlY3RvciArPSB0b2tlbnNbaV0udmFsdWU7CisgICAgfQor
ICAgIHJldHVybiBzZWxlY3RvcjsKK30KKworZnVuY3Rpb24gYWRkQ29tYmluYXRvciggbWF0Y2hl
ciwgY29tYmluYXRvciwgYmFzZSApIHsKKyAgICB2YXIgZGlyID0gY29tYmluYXRvci5kaXIsCisg
ICAgICAgIHNraXAgPSBjb21iaW5hdG9yLm5leHQsCisgICAgICAgIGtleSA9IHNraXAgfHwgZGly
LAorICAgICAgICBjaGVja05vbkVsZW1lbnRzID0gYmFzZSAmJiBrZXkgPT09ICJwYXJlbnROb2Rl
IiwKKyAgICAgICAgZG9uZU5hbWUgPSBkb25lKys7CisKKyAgICByZXR1cm4gY29tYmluYXRvci5m
aXJzdCA/CisgICAgICAgIC8vIENoZWNrIGFnYWluc3QgY2xvc2VzdCBhbmNlc3Rvci9wcmVjZWRp
bmcgZWxlbWVudAorICAgICAgICBmdW5jdGlvbiggZWxlbSwgY29udGV4dCwgeG1sICkgeworICAg
ICAgICAgICAgd2hpbGUgKCAoZWxlbSA9IGVsZW1bIGRpciBdKSApIHsKKyAgICAgICAgICAgICAg
ICBpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgfHwgY2hlY2tOb25FbGVtZW50cyApIHsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXIoIGVsZW0sIGNvbnRleHQsIHhtbCApOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgfSA6CisKKyAgICAgICAgLy8gQ2hlY2sgYWdhaW5zdCBhbGwgYW5jZXN0b3IvcHJl
Y2VkaW5nIGVsZW1lbnRzCisgICAgICAgIGZ1bmN0aW9uKCBlbGVtLCBjb250ZXh0LCB4bWwgKSB7
CisgICAgICAgICAgICB2YXIgb2xkQ2FjaGUsIHVuaXF1ZUNhY2hlLCBvdXRlckNhY2hlLAorICAg
ICAgICAgICAgICAgIG5ld0NhY2hlID0gWyBkaXJydW5zLCBkb25lTmFtZSBdOworCisgICAgICAg
ICAgICAvLyBXZSBjYW4ndCBzZXQgYXJiaXRyYXJ5IGRhdGEgb24gWE1MIG5vZGVzLCBzbyB0aGV5
IGRvbid0IGJlbmVmaXQgZnJvbSBjb21iaW5hdG9yIGNhY2hpbmcKKyAgICAgICAgICAgIGlmICgg
eG1sICkgeworICAgICAgICAgICAgICAgIHdoaWxlICggKGVsZW0gPSBlbGVtWyBkaXIgXSkgKSB7
CisgICAgICAgICAgICAgICAgICAgIGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSB8fCBjaGVja05v
bkVsZW1lbnRzICkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBtYXRjaGVyKCBlbGVt
LCBjb250ZXh0LCB4bWwgKSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
d2hpbGUgKCAoZWxlbSA9IGVsZW1bIGRpciBdKSApIHsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KCBlbGVtLm5vZGVUeXBlID09PSAxIHx8IGNoZWNrTm9uRWxlbWVudHMgKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBvdXRlckNhY2hlID0gZWxlbVsgZXhwYW5kbyBdIHx8IChlbGVtWyBleHBh
bmRvIF0gPSB7fSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6IElFIDw5
IG9ubHkKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIERlZmVuZCBhZ2FpbnN0IGNsb25lZCBh
dHRyb3BlcnRpZXMgKGpRdWVyeSBnaC0xNzA5KQorICAgICAgICAgICAgICAgICAgICAgICAgdW5p
cXVlQ2FjaGUgPSBvdXRlckNhY2hlWyBlbGVtLnVuaXF1ZUlEIF0gfHwgKG91dGVyQ2FjaGVbIGVs
ZW0udW5pcXVlSUQgXSA9IHt9KTsKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBza2lw
ICYmIHNraXAgPT09IGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSApIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBlbGVtID0gZWxlbVsgZGlyIF0gfHwgZWxlbTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIH0gZWxzZSBpZiAoIChvbGRDYWNoZSA9IHVuaXF1ZUNhY2hlWyBrZXkgXSkg
JiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGRDYWNoZVsgMCBdID09PSBkaXJydW5z
ICYmIG9sZENhY2hlWyAxIF0gPT09IGRvbmVOYW1lICkgeworCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gQXNzaWduIHRvIG5ld0NhY2hlIHNvIHJlc3VsdHMgYmFjay1wcm9wYWdhdGUg
dG8gcHJldmlvdXMgZWxlbWVudHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
KG5ld0NhY2hlWyAyIF0gPSBvbGRDYWNoZVsgMiBdKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmV1c2UgbmV3Y2FjaGUg
c28gcmVzdWx0cyBiYWNrLXByb3BhZ2F0ZSB0byBwcmV2aW91cyBlbGVtZW50cworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVuaXF1ZUNhY2hlWyBrZXkgXSA9IG5ld0NhY2hlOworCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gQSBtYXRjaCBtZWFucyB3ZSdyZSBkb25lOyBhIGZh
aWwgbWVhbnMgd2UgaGF2ZSB0byBrZWVwIGNoZWNraW5nCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCAobmV3Q2FjaGVbIDIgXSA9IG1hdGNoZXIoIGVsZW0sIGNvbnRleHQsIHhtbCAp
KSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9OworfQorCitmdW5jdGlvbiBlbGVtZW50
TWF0Y2hlciggbWF0Y2hlcnMgKSB7CisgICAgcmV0dXJuIG1hdGNoZXJzLmxlbmd0aCA+IDEgPwor
ICAgICAgICBmdW5jdGlvbiggZWxlbSwgY29udGV4dCwgeG1sICkgeworICAgICAgICAgICAgdmFy
IGkgPSBtYXRjaGVycy5sZW5ndGg7CisgICAgICAgICAgICB3aGlsZSAoIGktLSApIHsKKyAgICAg
ICAgICAgICAgICBpZiAoICFtYXRjaGVyc1tpXSggZWxlbSwgY29udGV4dCwgeG1sICkgKSB7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfSA6CisgICAgICAg
IG1hdGNoZXJzWzBdOworfQorCitmdW5jdGlvbiBtdWx0aXBsZUNvbnRleHRzKCBzZWxlY3Rvciwg
Y29udGV4dHMsIHJlc3VsdHMgKSB7CisgICAgdmFyIGkgPSAwLAorICAgICAgICBsZW4gPSBjb250
ZXh0cy5sZW5ndGg7CisgICAgZm9yICggOyBpIDwgbGVuOyBpKysgKSB7CisgICAgICAgIFNpenps
ZSggc2VsZWN0b3IsIGNvbnRleHRzW2ldLCByZXN1bHRzICk7CisgICAgfQorICAgIHJldHVybiBy
ZXN1bHRzOworfQorCitmdW5jdGlvbiBjb25kZW5zZSggdW5tYXRjaGVkLCBtYXAsIGZpbHRlciwg
Y29udGV4dCwgeG1sICkgeworICAgIHZhciBlbGVtLAorICAgICAgICBuZXdVbm1hdGNoZWQgPSBb
XSwKKyAgICAgICAgaSA9IDAsCisgICAgICAgIGxlbiA9IHVubWF0Y2hlZC5sZW5ndGgsCisgICAg
ICAgIG1hcHBlZCA9IG1hcCAhPSBudWxsOworCisgICAgZm9yICggOyBpIDwgbGVuOyBpKysgKSB7
CisgICAgICAgIGlmICggKGVsZW0gPSB1bm1hdGNoZWRbaV0pICkgeworICAgICAgICAgICAgaWYg
KCAhZmlsdGVyIHx8IGZpbHRlciggZWxlbSwgY29udGV4dCwgeG1sICkgKSB7CisgICAgICAgICAg
ICAgICAgbmV3VW5tYXRjaGVkLnB1c2goIGVsZW0gKTsKKyAgICAgICAgICAgICAgICBpZiAoIG1h
cHBlZCApIHsKKyAgICAgICAgICAgICAgICAgICAgbWFwLnB1c2goIGkgKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gbmV3
VW5tYXRjaGVkOworfQorCitmdW5jdGlvbiBzZXRNYXRjaGVyKCBwcmVGaWx0ZXIsIHNlbGVjdG9y
LCBtYXRjaGVyLCBwb3N0RmlsdGVyLCBwb3N0RmluZGVyLCBwb3N0U2VsZWN0b3IgKSB7CisgICAg
aWYgKCBwb3N0RmlsdGVyICYmICFwb3N0RmlsdGVyWyBleHBhbmRvIF0gKSB7CisgICAgICAgIHBv
c3RGaWx0ZXIgPSBzZXRNYXRjaGVyKCBwb3N0RmlsdGVyICk7CisgICAgfQorICAgIGlmICggcG9z
dEZpbmRlciAmJiAhcG9zdEZpbmRlclsgZXhwYW5kbyBdICkgeworICAgICAgICBwb3N0RmluZGVy
ID0gc2V0TWF0Y2hlciggcG9zdEZpbmRlciwgcG9zdFNlbGVjdG9yICk7CisgICAgfQorICAgIHJl
dHVybiBtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIHNlZWQsIHJlc3VsdHMsIGNvbnRleHQsIHhtbCAp
IHsKKyAgICAgICAgdmFyIHRlbXAsIGksIGVsZW0sCisgICAgICAgICAgICBwcmVNYXAgPSBbXSwK
KyAgICAgICAgICAgIHBvc3RNYXAgPSBbXSwKKyAgICAgICAgICAgIHByZWV4aXN0aW5nID0gcmVz
dWx0cy5sZW5ndGgsCisKKyAgICAgICAgICAgIC8vIEdldCBpbml0aWFsIGVsZW1lbnRzIGZyb20g
c2VlZCBvciBjb250ZXh0CisgICAgICAgICAgICBlbGVtcyA9IHNlZWQgfHwgbXVsdGlwbGVDb250
ZXh0cyggc2VsZWN0b3IgfHwgIioiLCBjb250ZXh0Lm5vZGVUeXBlID8gWyBjb250ZXh0IF0gOiBj
b250ZXh0LCBbXSApLAorCisgICAgICAgICAgICAvLyBQcmVmaWx0ZXIgdG8gZ2V0IG1hdGNoZXIg
aW5wdXQsIHByZXNlcnZpbmcgYSBtYXAgZm9yIHNlZWQtcmVzdWx0cyBzeW5jaHJvbml6YXRpb24K
KyAgICAgICAgICAgIG1hdGNoZXJJbiA9IHByZUZpbHRlciAmJiAoIHNlZWQgfHwgIXNlbGVjdG9y
ICkgPworICAgICAgICAgICAgICAgIGNvbmRlbnNlKCBlbGVtcywgcHJlTWFwLCBwcmVGaWx0ZXIs
IGNvbnRleHQsIHhtbCApIDoKKyAgICAgICAgICAgICAgICBlbGVtcywKKworICAgICAgICAgICAg
bWF0Y2hlck91dCA9IG1hdGNoZXIgPworICAgICAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgYSBw
b3N0RmluZGVyLCBvciBmaWx0ZXJlZCBzZWVkLCBvciBub24tc2VlZCBwb3N0RmlsdGVyIG9yIHBy
ZWV4aXN0aW5nIHJlc3VsdHMsCisgICAgICAgICAgICAgICAgcG9zdEZpbmRlciB8fCAoIHNlZWQg
PyBwcmVGaWx0ZXIgOiBwcmVleGlzdGluZyB8fCBwb3N0RmlsdGVyICkgPworCisgICAgICAgICAg
ICAgICAgICAgIC8vIC4uLmludGVybWVkaWF0ZSBwcm9jZXNzaW5nIGlzIG5lY2Vzc2FyeQorICAg
ICAgICAgICAgICAgICAgICBbXSA6CisKKyAgICAgICAgICAgICAgICAgICAgLy8gLi4ub3RoZXJ3
aXNlIHVzZSByZXN1bHRzIGRpcmVjdGx5CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMgOgor
ICAgICAgICAgICAgICAgIG1hdGNoZXJJbjsKKworICAgICAgICAvLyBGaW5kIHByaW1hcnkgbWF0
Y2hlcworICAgICAgICBpZiAoIG1hdGNoZXIgKSB7CisgICAgICAgICAgICBtYXRjaGVyKCBtYXRj
aGVySW4sIG1hdGNoZXJPdXQsIGNvbnRleHQsIHhtbCApOworICAgICAgICB9CisKKyAgICAgICAg
Ly8gQXBwbHkgcG9zdEZpbHRlcgorICAgICAgICBpZiAoIHBvc3RGaWx0ZXIgKSB7CisgICAgICAg
ICAgICB0ZW1wID0gY29uZGVuc2UoIG1hdGNoZXJPdXQsIHBvc3RNYXAgKTsKKyAgICAgICAgICAg
IHBvc3RGaWx0ZXIoIHRlbXAsIFtdLCBjb250ZXh0LCB4bWwgKTsKKworICAgICAgICAgICAgLy8g
VW4tbWF0Y2ggZmFpbGluZyBlbGVtZW50cyBieSBtb3ZpbmcgdGhlbSBiYWNrIHRvIG1hdGNoZXJJ
bgorICAgICAgICAgICAgaSA9IHRlbXAubGVuZ3RoOworICAgICAgICAgICAgd2hpbGUgKCBpLS0g
KSB7CisgICAgICAgICAgICAgICAgaWYgKCAoZWxlbSA9IHRlbXBbaV0pICkgeworICAgICAgICAg
ICAgICAgICAgICBtYXRjaGVyT3V0WyBwb3N0TWFwW2ldIF0gPSAhKG1hdGNoZXJJblsgcG9zdE1h
cFtpXSBdID0gZWxlbSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAg
ICB9CisKKyAgICAgICAgaWYgKCBzZWVkICkgeworICAgICAgICAgICAgaWYgKCBwb3N0RmluZGVy
IHx8IHByZUZpbHRlciApIHsKKyAgICAgICAgICAgICAgICBpZiAoIHBvc3RGaW5kZXIgKSB7Cisg
ICAgICAgICAgICAgICAgICAgIC8vIEdldCB0aGUgZmluYWwgbWF0Y2hlck91dCBieSBjb25kZW5z
aW5nIHRoaXMgaW50ZXJtZWRpYXRlIGludG8gcG9zdEZpbmRlciBjb250ZXh0cworICAgICAgICAg
ICAgICAgICAgICB0ZW1wID0gW107CisgICAgICAgICAgICAgICAgICAgIGkgPSBtYXRjaGVyT3V0
Lmxlbmd0aDsKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCBpLS0gKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoIChlbGVtID0gbWF0Y2hlck91dFtpXSkgKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gUmVzdG9yZSBtYXRjaGVySW4gc2luY2UgZWxlbSBpcyBub3Qg
eWV0IGEgZmluYWwgbWF0Y2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wLnB1c2go
IChtYXRjaGVySW5baV0gPSBlbGVtKSApOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHBvc3RGaW5kZXIoIG51bGws
IChtYXRjaGVyT3V0ID0gW10pLCB0ZW1wLCB4bWwgKTsKKyAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICAvLyBNb3ZlIG1hdGNoZWQgZWxlbWVudHMgZnJvbSBzZWVkIHRvIHJlc3Vs
dHMgdG8ga2VlcCB0aGVtIHN5bmNocm9uaXplZAorICAgICAgICAgICAgICAgIGkgPSBtYXRjaGVy
T3V0Lmxlbmd0aDsKKyAgICAgICAgICAgICAgICB3aGlsZSAoIGktLSApIHsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKCAoZWxlbSA9IG1hdGNoZXJPdXRbaV0pICYmCisgICAgICAgICAgICAgICAg
ICAgICAgICAodGVtcCA9IHBvc3RGaW5kZXIgPyBpbmRleE9mKCBzZWVkLCBlbGVtICkgOiBwcmVN
YXBbaV0pID4gLTEgKSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlZWRbdGVtcF0gPSAh
KHJlc3VsdHNbdGVtcF0gPSBlbGVtKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAvLyBBZGQgZWxlbWVudHMgdG8gcmVz
dWx0cywgdGhyb3VnaCBwb3N0RmluZGVyIGlmIGRlZmluZWQKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIG1hdGNoZXJPdXQgPSBjb25kZW5zZSgKKyAgICAgICAgICAgICAgICBtYXRjaGVy
T3V0ID09PSByZXN1bHRzID8KKyAgICAgICAgICAgICAgICAgICAgbWF0Y2hlck91dC5zcGxpY2Uo
IHByZWV4aXN0aW5nLCBtYXRjaGVyT3V0Lmxlbmd0aCApIDoKKyAgICAgICAgICAgICAgICAgICAg
bWF0Y2hlck91dAorICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIGlmICggcG9zdEZpbmRlciAp
IHsKKyAgICAgICAgICAgICAgICBwb3N0RmluZGVyKCBudWxsLCByZXN1bHRzLCBtYXRjaGVyT3V0
LCB4bWwgKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcHVzaC5hcHBs
eSggcmVzdWx0cywgbWF0Y2hlck91dCApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fSk7Cit9CisKK2Z1bmN0aW9uIG1hdGNoZXJGcm9tVG9rZW5zKCB0b2tlbnMgKSB7CisgICAgdmFy
IGNoZWNrQ29udGV4dCwgbWF0Y2hlciwgaiwKKyAgICAgICAgbGVuID0gdG9rZW5zLmxlbmd0aCwK
KyAgICAgICAgbGVhZGluZ1JlbGF0aXZlID0gRXhwci5yZWxhdGl2ZVsgdG9rZW5zWzBdLnR5cGUg
XSwKKyAgICAgICAgaW1wbGljaXRSZWxhdGl2ZSA9IGxlYWRpbmdSZWxhdGl2ZSB8fCBFeHByLnJl
bGF0aXZlWyIgIl0sCisgICAgICAgIGkgPSBsZWFkaW5nUmVsYXRpdmUgPyAxIDogMCwKKworICAg
ICAgICAvLyBUaGUgZm91bmRhdGlvbmFsIG1hdGNoZXIgZW5zdXJlcyB0aGF0IGVsZW1lbnRzIGFy
ZSByZWFjaGFibGUgZnJvbSB0b3AtbGV2ZWwgY29udGV4dChzKQorICAgICAgICBtYXRjaENvbnRl
eHQgPSBhZGRDb21iaW5hdG9yKCBmdW5jdGlvbiggZWxlbSApIHsKKyAgICAgICAgICAgIHJldHVy
biBlbGVtID09PSBjaGVja0NvbnRleHQ7CisgICAgICAgIH0sIGltcGxpY2l0UmVsYXRpdmUsIHRy
dWUgKSwKKyAgICAgICAgbWF0Y2hBbnlDb250ZXh0ID0gYWRkQ29tYmluYXRvciggZnVuY3Rpb24o
IGVsZW0gKSB7CisgICAgICAgICAgICByZXR1cm4gaW5kZXhPZiggY2hlY2tDb250ZXh0LCBlbGVt
ICkgPiAtMTsKKyAgICAgICAgfSwgaW1wbGljaXRSZWxhdGl2ZSwgdHJ1ZSApLAorICAgICAgICBt
YXRjaGVycyA9IFsgZnVuY3Rpb24oIGVsZW0sIGNvbnRleHQsIHhtbCApIHsKKyAgICAgICAgICAg
IHZhciByZXQgPSAoICFsZWFkaW5nUmVsYXRpdmUgJiYgKCB4bWwgfHwgY29udGV4dCAhPT0gb3V0
ZXJtb3N0Q29udGV4dCApICkgfHwgKAorICAgICAgICAgICAgICAgIChjaGVja0NvbnRleHQgPSBj
b250ZXh0KS5ub2RlVHlwZSA/CisgICAgICAgICAgICAgICAgICAgIG1hdGNoQ29udGV4dCggZWxl
bSwgY29udGV4dCwgeG1sICkgOgorICAgICAgICAgICAgICAgICAgICBtYXRjaEFueUNvbnRleHQo
IGVsZW0sIGNvbnRleHQsIHhtbCApICk7CisgICAgICAgICAgICAvLyBBdm9pZCBoYW5naW5nIG9u
dG8gZWxlbWVudCAoaXNzdWUgIzI5OSkKKyAgICAgICAgICAgIGNoZWNrQ29udGV4dCA9IG51bGw7
CisgICAgICAgICAgICByZXR1cm4gcmV0OworICAgICAgICB9IF07CisKKyAgICBmb3IgKCA7IGkg
PCBsZW47IGkrKyApIHsKKyAgICAgICAgaWYgKCAobWF0Y2hlciA9IEV4cHIucmVsYXRpdmVbIHRv
a2Vuc1tpXS50eXBlIF0pICkgeworICAgICAgICAgICAgbWF0Y2hlcnMgPSBbIGFkZENvbWJpbmF0
b3IoZWxlbWVudE1hdGNoZXIoIG1hdGNoZXJzICksIG1hdGNoZXIpIF07CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBtYXRjaGVyID0gRXhwci5maWx0ZXJbIHRva2Vuc1tpXS50eXBlIF0u
YXBwbHkoIG51bGwsIHRva2Vuc1tpXS5tYXRjaGVzICk7CisKKyAgICAgICAgICAgIC8vIFJldHVy
biBzcGVjaWFsIHVwb24gc2VlaW5nIGEgcG9zaXRpb25hbCBtYXRjaGVyCisgICAgICAgICAgICBp
ZiAoIG1hdGNoZXJbIGV4cGFuZG8gXSApIHsKKyAgICAgICAgICAgICAgICAvLyBGaW5kIHRoZSBu
ZXh0IHJlbGF0aXZlIG9wZXJhdG9yIChpZiBhbnkpIGZvciBwcm9wZXIgaGFuZGxpbmcKKyAgICAg
ICAgICAgICAgICBqID0gKytpOworICAgICAgICAgICAgICAgIGZvciAoIDsgaiA8IGxlbjsgaisr
ICkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIEV4cHIucmVsYXRpdmVbIHRva2Vuc1tqXS50
eXBlIF0gKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2V0TWF0
Y2hlcigKKyAgICAgICAgICAgICAgICAgICAgaSA+IDEgJiYgZWxlbWVudE1hdGNoZXIoIG1hdGNo
ZXJzICksCisgICAgICAgICAgICAgICAgICAgIGkgPiAxICYmIHRvU2VsZWN0b3IoCisgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgcHJlY2VkaW5nIHRva2VuIHdhcyBhIGRlc2NlbmRh
bnQgY29tYmluYXRvciwgaW5zZXJ0IGFuIGltcGxpY2l0IGFueS1lbGVtZW50IGAqYAorICAgICAg
ICAgICAgICAgICAgICAgICAgdG9rZW5zLnNsaWNlKCAwLCBpIC0gMSApLmNvbmNhdCh7IHZhbHVl
OiB0b2tlbnNbIGkgLSAyIF0udHlwZSA9PT0gIiAiID8gIioiIDogIiIgfSkKKyAgICAgICAgICAg
ICAgICAgICAgKS5yZXBsYWNlKCBydHJpbSwgIiQxIiApLAorICAgICAgICAgICAgICAgICAgICBt
YXRjaGVyLAorICAgICAgICAgICAgICAgICAgICBpIDwgaiAmJiBtYXRjaGVyRnJvbVRva2Vucygg
dG9rZW5zLnNsaWNlKCBpLCBqICkgKSwKKyAgICAgICAgICAgICAgICAgICAgaiA8IGxlbiAmJiBt
YXRjaGVyRnJvbVRva2VucyggKHRva2VucyA9IHRva2Vucy5zbGljZSggaiApKSApLAorICAgICAg
ICAgICAgICAgICAgICBqIDwgbGVuICYmIHRvU2VsZWN0b3IoIHRva2VucyApCisgICAgICAgICAg
ICAgICAgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1hdGNoZXJzLnB1c2goIG1hdGNo
ZXIgKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBlbGVtZW50TWF0Y2hlciggbWF0
Y2hlcnMgKTsKK30KKworZnVuY3Rpb24gbWF0Y2hlckZyb21Hcm91cE1hdGNoZXJzKCBlbGVtZW50
TWF0Y2hlcnMsIHNldE1hdGNoZXJzICkgeworICAgIHZhciBieVNldCA9IHNldE1hdGNoZXJzLmxl
bmd0aCA+IDAsCisgICAgICAgIGJ5RWxlbWVudCA9IGVsZW1lbnRNYXRjaGVycy5sZW5ndGggPiAw
LAorICAgICAgICBzdXBlck1hdGNoZXIgPSBmdW5jdGlvbiggc2VlZCwgY29udGV4dCwgeG1sLCBy
ZXN1bHRzLCBvdXRlcm1vc3QgKSB7CisgICAgICAgICAgICB2YXIgZWxlbSwgaiwgbWF0Y2hlciwK
KyAgICAgICAgICAgICAgICBtYXRjaGVkQ291bnQgPSAwLAorICAgICAgICAgICAgICAgIGkgPSAi
MCIsCisgICAgICAgICAgICAgICAgdW5tYXRjaGVkID0gc2VlZCAmJiBbXSwKKyAgICAgICAgICAg
ICAgICBzZXRNYXRjaGVkID0gW10sCisgICAgICAgICAgICAgICAgY29udGV4dEJhY2t1cCA9IG91
dGVybW9zdENvbnRleHQsCisgICAgICAgICAgICAgICAgLy8gV2UgbXVzdCBhbHdheXMgaGF2ZSBl
aXRoZXIgc2VlZCBlbGVtZW50cyBvciBvdXRlcm1vc3QgY29udGV4dAorICAgICAgICAgICAgICAg
IGVsZW1zID0gc2VlZCB8fCBieUVsZW1lbnQgJiYgRXhwci5maW5kWyJUQUciXSggIioiLCBvdXRl
cm1vc3QgKSwKKyAgICAgICAgICAgICAgICAvLyBVc2UgaW50ZWdlciBkaXJydW5zIGlmZiB0aGlz
IGlzIHRoZSBvdXRlcm1vc3QgbWF0Y2hlcgorICAgICAgICAgICAgICAgIGRpcnJ1bnNVbmlxdWUg
PSAoZGlycnVucyArPSBjb250ZXh0QmFja3VwID09IG51bGwgPyAxIDogTWF0aC5yYW5kb20oKSB8
fCAwLjEpLAorICAgICAgICAgICAgICAgIGxlbiA9IGVsZW1zLmxlbmd0aDsKKworICAgICAgICAg
ICAgaWYgKCBvdXRlcm1vc3QgKSB7CisgICAgICAgICAgICAgICAgb3V0ZXJtb3N0Q29udGV4dCA9
IGNvbnRleHQgPT09IGRvY3VtZW50IHx8IGNvbnRleHQgfHwgb3V0ZXJtb3N0OworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAvLyBBZGQgZWxlbWVudHMgcGFzc2luZyBlbGVtZW50TWF0Y2hl
cnMgZGlyZWN0bHkgdG8gcmVzdWx0cworICAgICAgICAgICAgLy8gU3VwcG9ydDogSUU8OSwgU2Fm
YXJpCisgICAgICAgICAgICAvLyBUb2xlcmF0ZSBOb2RlTGlzdCBwcm9wZXJ0aWVzIChJRTogImxl
bmd0aCI7IFNhZmFyaTogPG51bWJlcj4pIG1hdGNoaW5nIGVsZW1lbnRzIGJ5IGlkCisgICAgICAg
ICAgICBmb3IgKCA7IGkgIT09IGxlbiAmJiAoZWxlbSA9IGVsZW1zW2ldKSAhPSBudWxsOyBpKysg
KSB7CisgICAgICAgICAgICAgICAgaWYgKCBieUVsZW1lbnQgJiYgZWxlbSApIHsKKyAgICAgICAg
ICAgICAgICAgICAgaiA9IDA7CisgICAgICAgICAgICAgICAgICAgIGlmICggIWNvbnRleHQgJiYg
ZWxlbS5vd25lckRvY3VtZW50ICE9PSBkb2N1bWVudCApIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHNldERvY3VtZW50KCBlbGVtICk7CisgICAgICAgICAgICAgICAgICAgICAgICB4bWwgPSAh
ZG9jdW1lbnRJc0hUTUw7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgd2hpbGUgKCAobWF0Y2hlciA9IGVsZW1lbnRNYXRjaGVyc1tqKytdKSApIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICggbWF0Y2hlciggZWxlbSwgY29udGV4dCB8fCBkb2N1bWVudCwg
eG1sKSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzLnB1c2goIGVsZW0g
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAo
IG91dGVybW9zdCApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRpcnJ1bnMgPSBkaXJydW5z
VW5pcXVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgLy8gVHJhY2sgdW5tYXRjaGVkIGVsZW1lbnRzIGZvciBzZXQgZmlsdGVycwor
ICAgICAgICAgICAgICAgIGlmICggYnlTZXQgKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFRo
ZXkgd2lsbCBoYXZlIGdvbmUgdGhyb3VnaCBhbGwgcG9zc2libGUgbWF0Y2hlcnMKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKCAoZWxlbSA9ICFtYXRjaGVyICYmIGVsZW0pICkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgbWF0Y2hlZENvdW50LS07CisgICAgICAgICAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgICAgICAgICAvLyBMZW5ndGhlbiB0aGUgYXJyYXkgZm9yIGV2ZXJ5IGVsZW1l
bnQsIG1hdGNoZWQgb3Igbm90CisgICAgICAgICAgICAgICAgICAgIGlmICggc2VlZCApIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHVubWF0Y2hlZC5wdXNoKCBlbGVtICk7CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIC8vIGBpYCBpcyBub3cgdGhlIGNvdW50IG9mIGVsZW1lbnRzIHZpc2l0ZWQgYWJvdmUsIGFu
ZCBhZGRpbmcgaXQgdG8gYG1hdGNoZWRDb3VudGAKKyAgICAgICAgICAgIC8vIG1ha2VzIHRoZSBs
YXR0ZXIgbm9ubmVnYXRpdmUuCisgICAgICAgICAgICBtYXRjaGVkQ291bnQgKz0gaTsKKworICAg
ICAgICAgICAgLy8gQXBwbHkgc2V0IGZpbHRlcnMgdG8gdW5tYXRjaGVkIGVsZW1lbnRzCisgICAg
ICAgICAgICAvLyBOT1RFOiBUaGlzIGNhbiBiZSBza2lwcGVkIGlmIHRoZXJlIGFyZSBubyB1bm1h
dGNoZWQgZWxlbWVudHMgKGkuZS4sIGBtYXRjaGVkQ291bnRgCisgICAgICAgICAgICAvLyBlcXVh
bHMgYGlgKSwgdW5sZXNzIHdlIGRpZG4ndCB2aXNpdCBfYW55XyBlbGVtZW50cyBpbiB0aGUgYWJv
dmUgbG9vcCBiZWNhdXNlIHdlIGhhdmUKKyAgICAgICAgICAgIC8vIG5vIGVsZW1lbnQgbWF0Y2hl
cnMgYW5kIG5vIHNlZWQuCisgICAgICAgICAgICAvLyBJbmNyZW1lbnRpbmcgYW4gaW5pdGlhbGx5
LXN0cmluZyAiMCIgYGlgIGFsbG93cyBgaWAgdG8gcmVtYWluIGEgc3RyaW5nIG9ubHkgaW4gdGhh
dAorICAgICAgICAgICAgLy8gY2FzZSwgd2hpY2ggd2lsbCByZXN1bHQgaW4gYSAiMDAiIGBtYXRj
aGVkQ291bnRgIHRoYXQgZGlmZmVycyBmcm9tIGBpYCBidXQgaXMgYWxzbworICAgICAgICAgICAg
Ly8gbnVtZXJpY2FsbHkgemVyby4KKyAgICAgICAgICAgIGlmICggYnlTZXQgJiYgaSAhPT0gbWF0
Y2hlZENvdW50ICkgeworICAgICAgICAgICAgICAgIGogPSAwOworICAgICAgICAgICAgICAgIHdo
aWxlICggKG1hdGNoZXIgPSBzZXRNYXRjaGVyc1tqKytdKSApIHsKKyAgICAgICAgICAgICAgICAg
ICAgbWF0Y2hlciggdW5tYXRjaGVkLCBzZXRNYXRjaGVkLCBjb250ZXh0LCB4bWwgKTsKKyAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoIHNlZWQgKSB7CisgICAgICAgICAg
ICAgICAgICAgIC8vIFJlaW50ZWdyYXRlIGVsZW1lbnQgbWF0Y2hlcyB0byBlbGltaW5hdGUgdGhl
IG5lZWQgZm9yIHNvcnRpbmcKKyAgICAgICAgICAgICAgICAgICAgaWYgKCBtYXRjaGVkQ291bnQg
PiAwICkgeworICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCBpLS0gKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCAhKHVubWF0Y2hlZFtpXSB8fCBzZXRNYXRjaGVkW2ld
KSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TWF0Y2hlZFtpXSA9IHBv
cC5jYWxsKCByZXN1bHRzICk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICAgICAgLy8gRGlzY2FyZCBpbmRleCBwbGFjZWhvbGRlciB2YWx1ZXMgdG8gZ2V0IG9ubHkg
YWN0dWFsIG1hdGNoZXMKKyAgICAgICAgICAgICAgICAgICAgc2V0TWF0Y2hlZCA9IGNvbmRlbnNl
KCBzZXRNYXRjaGVkICk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8g
QWRkIG1hdGNoZXMgdG8gcmVzdWx0cworICAgICAgICAgICAgICAgIHB1c2guYXBwbHkoIHJlc3Vs
dHMsIHNldE1hdGNoZWQgKTsKKworICAgICAgICAgICAgICAgIC8vIFNlZWRsZXNzIHNldCBtYXRj
aGVzIHN1Y2NlZWRpbmcgbXVsdGlwbGUgc3VjY2Vzc2Z1bCBtYXRjaGVycyBzdGlwdWxhdGUgc29y
dGluZworICAgICAgICAgICAgICAgIGlmICggb3V0ZXJtb3N0ICYmICFzZWVkICYmIHNldE1hdGNo
ZWQubGVuZ3RoID4gMCAmJgorICAgICAgICAgICAgICAgICAgICAoIG1hdGNoZWRDb3VudCArIHNl
dE1hdGNoZXJzLmxlbmd0aCApID4gMSApIHsKKworICAgICAgICAgICAgICAgICAgICBTaXp6bGUu
dW5pcXVlU29ydCggcmVzdWx0cyApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgLy8gT3ZlcnJpZGUgbWFuaXB1bGF0aW9uIG9mIGdsb2JhbHMgYnkgbmVz
dGVkIG1hdGNoZXJzCisgICAgICAgICAgICBpZiAoIG91dGVybW9zdCApIHsKKyAgICAgICAgICAg
ICAgICBkaXJydW5zID0gZGlycnVuc1VuaXF1ZTsKKyAgICAgICAgICAgICAgICBvdXRlcm1vc3RD
b250ZXh0ID0gY29udGV4dEJhY2t1cDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0
dXJuIHVubWF0Y2hlZDsKKyAgICAgICAgfTsKKworICAgIHJldHVybiBieVNldCA/CisgICAgICAg
IG1hcmtGdW5jdGlvbiggc3VwZXJNYXRjaGVyICkgOgorICAgICAgICBzdXBlck1hdGNoZXI7Cit9
CisKK2NvbXBpbGUgPSBTaXp6bGUuY29tcGlsZSA9IGZ1bmN0aW9uKCBzZWxlY3RvciwgbWF0Y2gg
LyogSW50ZXJuYWwgVXNlIE9ubHkgKi8gKSB7CisgICAgdmFyIGksCisgICAgICAgIHNldE1hdGNo
ZXJzID0gW10sCisgICAgICAgIGVsZW1lbnRNYXRjaGVycyA9IFtdLAorICAgICAgICBjYWNoZWQg
PSBjb21waWxlckNhY2hlWyBzZWxlY3RvciArICIgIiBdOworCisgICAgaWYgKCAhY2FjaGVkICkg
eworICAgICAgICAvLyBHZW5lcmF0ZSBhIGZ1bmN0aW9uIG9mIHJlY3Vyc2l2ZSBmdW5jdGlvbnMg
dGhhdCBjYW4gYmUgdXNlZCB0byBjaGVjayBlYWNoIGVsZW1lbnQKKyAgICAgICAgaWYgKCAhbWF0
Y2ggKSB7CisgICAgICAgICAgICBtYXRjaCA9IHRva2VuaXplKCBzZWxlY3RvciApOworICAgICAg
ICB9CisgICAgICAgIGkgPSBtYXRjaC5sZW5ndGg7CisgICAgICAgIHdoaWxlICggaS0tICkgewor
ICAgICAgICAgICAgY2FjaGVkID0gbWF0Y2hlckZyb21Ub2tlbnMoIG1hdGNoW2ldICk7CisgICAg
ICAgICAgICBpZiAoIGNhY2hlZFsgZXhwYW5kbyBdICkgeworICAgICAgICAgICAgICAgIHNldE1h
dGNoZXJzLnB1c2goIGNhY2hlZCApOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBlbGVtZW50TWF0Y2hlcnMucHVzaCggY2FjaGVkICk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKworICAgICAgICAvLyBDYWNoZSB0aGUgY29tcGlsZWQgZnVuY3Rpb24KKyAgICAgICAg
Y2FjaGVkID0gY29tcGlsZXJDYWNoZSggc2VsZWN0b3IsIG1hdGNoZXJGcm9tR3JvdXBNYXRjaGVy
cyggZWxlbWVudE1hdGNoZXJzLCBzZXRNYXRjaGVycyApICk7CisKKyAgICAgICAgLy8gU2F2ZSBz
ZWxlY3RvciBhbmQgdG9rZW5pemF0aW9uCisgICAgICAgIGNhY2hlZC5zZWxlY3RvciA9IHNlbGVj
dG9yOworICAgIH0KKyAgICByZXR1cm4gY2FjaGVkOworfTsKKworLyoqCisgKiBBIGxvdy1sZXZl
bCBzZWxlY3Rpb24gZnVuY3Rpb24gdGhhdCB3b3JrcyB3aXRoIFNpenpsZSdzIGNvbXBpbGVkCisg
KiAgc2VsZWN0b3IgZnVuY3Rpb25zCisgKiBAcGFyYW0ge1N0cmluZ3xGdW5jdGlvbn0gc2VsZWN0
b3IgQSBzZWxlY3RvciBvciBhIHByZS1jb21waWxlZAorICogIHNlbGVjdG9yIGZ1bmN0aW9uIGJ1
aWx0IHdpdGggU2l6emxlLmNvbXBpbGUKKyAqIEBwYXJhbSB7RWxlbWVudH0gY29udGV4dAorICog
QHBhcmFtIHtBcnJheX0gW3Jlc3VsdHNdCisgKiBAcGFyYW0ge0FycmF5fSBbc2VlZF0gQSBzZXQg
b2YgZWxlbWVudHMgdG8gbWF0Y2ggYWdhaW5zdAorICovCitzZWxlY3QgPSBTaXp6bGUuc2VsZWN0
ID0gZnVuY3Rpb24oIHNlbGVjdG9yLCBjb250ZXh0LCByZXN1bHRzLCBzZWVkICkgeworICAgIHZh
ciBpLCB0b2tlbnMsIHRva2VuLCB0eXBlLCBmaW5kLAorICAgICAgICBjb21waWxlZCA9IHR5cGVv
ZiBzZWxlY3RvciA9PT0gImZ1bmN0aW9uIiAmJiBzZWxlY3RvciwKKyAgICAgICAgbWF0Y2ggPSAh
c2VlZCAmJiB0b2tlbml6ZSggKHNlbGVjdG9yID0gY29tcGlsZWQuc2VsZWN0b3IgfHwgc2VsZWN0
b3IpICk7CisKKyAgICByZXN1bHRzID0gcmVzdWx0cyB8fCBbXTsKKworICAgIC8vIFRyeSB0byBt
aW5pbWl6ZSBvcGVyYXRpb25zIGlmIHRoZXJlIGlzIG9ubHkgb25lIHNlbGVjdG9yIGluIHRoZSBs
aXN0IGFuZCBubyBzZWVkCisgICAgLy8gKHRoZSBsYXR0ZXIgb2Ygd2hpY2ggZ3VhcmFudGVlcyB1
cyBjb250ZXh0KQorICAgIGlmICggbWF0Y2gubGVuZ3RoID09PSAxICkgeworCisgICAgICAgIC8v
IFJlZHVjZSBjb250ZXh0IGlmIHRoZSBsZWFkaW5nIGNvbXBvdW5kIHNlbGVjdG9yIGlzIGFuIElE
CisgICAgICAgIHRva2VucyA9IG1hdGNoWzBdID0gbWF0Y2hbMF0uc2xpY2UoIDAgKTsKKyAgICAg
ICAgaWYgKCB0b2tlbnMubGVuZ3RoID4gMiAmJiAodG9rZW4gPSB0b2tlbnNbMF0pLnR5cGUgPT09
ICJJRCIgJiYKKyAgICAgICAgICAgICAgICBjb250ZXh0Lm5vZGVUeXBlID09PSA5ICYmIGRvY3Vt
ZW50SXNIVE1MICYmIEV4cHIucmVsYXRpdmVbIHRva2Vuc1sxXS50eXBlIF0gKSB7CisKKyAgICAg
ICAgICAgIGNvbnRleHQgPSAoIEV4cHIuZmluZFsiSUQiXSggdG9rZW4ubWF0Y2hlc1swXS5yZXBs
YWNlKHJ1bmVzY2FwZSwgZnVuZXNjYXBlKSwgY29udGV4dCApIHx8IFtdIClbMF07CisgICAgICAg
ICAgICBpZiAoICFjb250ZXh0ICkgeworICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRzOwor
CisgICAgICAgICAgICAvLyBQcmVjb21waWxlZCBtYXRjaGVycyB3aWxsIHN0aWxsIHZlcmlmeSBh
bmNlc3RyeSwgc28gc3RlcCB1cCBhIGxldmVsCisgICAgICAgICAgICB9IGVsc2UgaWYgKCBjb21w
aWxlZCApIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0ID0gY29udGV4dC5wYXJlbnROb2RlOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzZWxlY3RvciA9IHNlbGVjdG9yLnNsaWNlKCB0
b2tlbnMuc2hpZnQoKS52YWx1ZS5sZW5ndGggKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZl
dGNoIGEgc2VlZCBzZXQgZm9yIHJpZ2h0LXRvLWxlZnQgbWF0Y2hpbmcKKyAgICAgICAgaSA9IG1h
dGNoRXhwclsibmVlZHNDb250ZXh0Il0udGVzdCggc2VsZWN0b3IgKSA/IDAgOiB0b2tlbnMubGVu
Z3RoOworICAgICAgICB3aGlsZSAoIGktLSApIHsKKyAgICAgICAgICAgIHRva2VuID0gdG9rZW5z
W2ldOworCisgICAgICAgICAgICAvLyBBYm9ydCBpZiB3ZSBoaXQgYSBjb21iaW5hdG9yCisgICAg
ICAgICAgICBpZiAoIEV4cHIucmVsYXRpdmVbICh0eXBlID0gdG9rZW4udHlwZSkgXSApIHsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICggKGZp
bmQgPSBFeHByLmZpbmRbIHR5cGUgXSkgKSB7CisgICAgICAgICAgICAgICAgLy8gU2VhcmNoLCBl
eHBhbmRpbmcgY29udGV4dCBmb3IgbGVhZGluZyBzaWJsaW5nIGNvbWJpbmF0b3JzCisgICAgICAg
ICAgICAgICAgaWYgKCAoc2VlZCA9IGZpbmQoCisgICAgICAgICAgICAgICAgICAgIHRva2VuLm1h
dGNoZXNbMF0ucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKSwKKyAgICAgICAgICAgICAg
ICAgICAgcnNpYmxpbmcudGVzdCggdG9rZW5zWzBdLnR5cGUgKSAmJiB0ZXN0Q29udGV4dCggY29u
dGV4dC5wYXJlbnROb2RlICkgfHwgY29udGV4dAorICAgICAgICAgICAgICAgICkpICkgeworCisg
ICAgICAgICAgICAgICAgICAgIC8vIElmIHNlZWQgaXMgZW1wdHkgb3Igbm8gdG9rZW5zIHJlbWFp
biwgd2UgY2FuIHJldHVybiBlYXJseQorICAgICAgICAgICAgICAgICAgICB0b2tlbnMuc3BsaWNl
KCBpLCAxICk7CisgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yID0gc2VlZC5sZW5ndGggJiYg
dG9TZWxlY3RvciggdG9rZW5zICk7CisgICAgICAgICAgICAgICAgICAgIGlmICggIXNlbGVjdG9y
ICkgeworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaC5hcHBseSggcmVzdWx0cywgc2VlZCAp
OworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdHM7CisgICAgICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBDb21waWxlIGFuZCBl
eGVjdXRlIGEgZmlsdGVyaW5nIGZ1bmN0aW9uIGlmIG9uZSBpcyBub3QgcHJvdmlkZWQKKyAgICAv
LyBQcm92aWRlIGBtYXRjaGAgdG8gYXZvaWQgcmV0b2tlbml6YXRpb24gaWYgd2UgbW9kaWZpZWQg
dGhlIHNlbGVjdG9yIGFib3ZlCisgICAgKCBjb21waWxlZCB8fCBjb21waWxlKCBzZWxlY3Rvciwg
bWF0Y2ggKSApKAorICAgICAgICBzZWVkLAorICAgICAgICBjb250ZXh0LAorICAgICAgICAhZG9j
dW1lbnRJc0hUTUwsCisgICAgICAgIHJlc3VsdHMsCisgICAgICAgICFjb250ZXh0IHx8IHJzaWJs
aW5nLnRlc3QoIHNlbGVjdG9yICkgJiYgdGVzdENvbnRleHQoIGNvbnRleHQucGFyZW50Tm9kZSAp
IHx8IGNvbnRleHQKKyAgICApOworICAgIHJldHVybiByZXN1bHRzOworfTsKKworLy8gT25lLXRp
bWUgYXNzaWdubWVudHMKKworLy8gU29ydCBzdGFiaWxpdHkKK3N1cHBvcnQuc29ydFN0YWJsZSA9
IGV4cGFuZG8uc3BsaXQoIiIpLnNvcnQoIHNvcnRPcmRlciApLmpvaW4oIiIpID09PSBleHBhbmRv
OworCisvLyBTdXBwb3J0OiBDaHJvbWUgMTQtMzUrCisvLyBBbHdheXMgYXNzdW1lIGR1cGxpY2F0
ZXMgaWYgdGhleSBhcmVuJ3QgcGFzc2VkIHRvIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9uCitzdXBw
b3J0LmRldGVjdER1cGxpY2F0ZXMgPSAhIWhhc0R1cGxpY2F0ZTsKKworLy8gSW5pdGlhbGl6ZSBh
Z2FpbnN0IHRoZSBkZWZhdWx0IGRvY3VtZW50CitzZXREb2N1bWVudCgpOworCisvLyBTdXBwb3J0
OiBXZWJraXQ8NTM3LjMyIC0gU2FmYXJpIDYuMC4zL0Nocm9tZSAyNSAoZml4ZWQgaW4gQ2hyb21l
IDI3KQorLy8gRGV0YWNoZWQgbm9kZXMgY29uZm91bmRpbmdseSBmb2xsb3cgKmVhY2ggb3RoZXIq
CitzdXBwb3J0LnNvcnREZXRhY2hlZCA9IGFzc2VydChmdW5jdGlvbiggZWwgKSB7CisgICAgLy8g
U2hvdWxkIHJldHVybiAxLCBidXQgcmV0dXJucyA0IChmb2xsb3dpbmcpCisgICAgcmV0dXJuIGVs
LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJmaWVsZHNl
dCIpICkgJiAxOworfSk7CisKKy8vIFN1cHBvcnQ6IElFPDgKKy8vIFByZXZlbnQgYXR0cmlidXRl
L3Byb3BlcnR5ICJpbnRlcnBvbGF0aW9uIgorLy8gaHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20v
ZW4tdXMvbGlicmFyeS9tczUzNjQyOSUyOFZTLjg1JTI5LmFzcHgKK2lmICggIWFzc2VydChmdW5j
dGlvbiggZWwgKSB7CisgICAgZWwuaW5uZXJIVE1MID0gIjxhIGhyZWY9JyMnPjwvYT4iOworICAg
IHJldHVybiBlbC5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgiaHJlZiIpID09PSAiIyIgOworfSkg
KSB7CisgICAgYWRkSGFuZGxlKCAidHlwZXxocmVmfGhlaWdodHx3aWR0aCIsIGZ1bmN0aW9uKCBl
bGVtLCBuYW1lLCBpc1hNTCApIHsKKyAgICAgICAgaWYgKCAhaXNYTUwgKSB7CisgICAgICAgICAg
ICByZXR1cm4gZWxlbS5nZXRBdHRyaWJ1dGUoIG5hbWUsIG5hbWUudG9Mb3dlckNhc2UoKSA9PT0g
InR5cGUiID8gMSA6IDIgKTsKKyAgICAgICAgfQorICAgIH0pOworfQorCisvLyBTdXBwb3J0OiBJ
RTw5CisvLyBVc2UgZGVmYXVsdFZhbHVlIGluIHBsYWNlIG9mIGdldEF0dHJpYnV0ZSgidmFsdWUi
KQoraWYgKCAhc3VwcG9ydC5hdHRyaWJ1dGVzIHx8ICFhc3NlcnQoZnVuY3Rpb24oIGVsICkgewor
ICAgIGVsLmlubmVySFRNTCA9ICI8aW5wdXQvPiI7CisgICAgZWwuZmlyc3RDaGlsZC5zZXRBdHRy
aWJ1dGUoICJ2YWx1ZSIsICIiICk7CisgICAgcmV0dXJuIGVsLmZpcnN0Q2hpbGQuZ2V0QXR0cmli
dXRlKCAidmFsdWUiICkgPT09ICIiOworfSkgKSB7CisgICAgYWRkSGFuZGxlKCAidmFsdWUiLCBm
dW5jdGlvbiggZWxlbSwgbmFtZSwgaXNYTUwgKSB7CisgICAgICAgIGlmICggIWlzWE1MICYmIGVs
ZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gImlucHV0IiApIHsKKyAgICAgICAgICAgIHJl
dHVybiBlbGVtLmRlZmF1bHRWYWx1ZTsKKyAgICAgICAgfQorICAgIH0pOworfQorCisvLyBTdXBw
b3J0OiBJRTw5CisvLyBVc2UgZ2V0QXR0cmlidXRlTm9kZSB0byBmZXRjaCBib29sZWFucyB3aGVu
IGdldEF0dHJpYnV0ZSBsaWVzCitpZiAoICFhc3NlcnQoZnVuY3Rpb24oIGVsICkgeworICAgIHJl
dHVybiBlbC5nZXRBdHRyaWJ1dGUoImRpc2FibGVkIikgPT0gbnVsbDsKK30pICkgeworICAgIGFk
ZEhhbmRsZSggYm9vbGVhbnMsIGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBpc1hNTCApIHsKKyAgICAg
ICAgdmFyIHZhbDsKKyAgICAgICAgaWYgKCAhaXNYTUwgKSB7CisgICAgICAgICAgICByZXR1cm4g
ZWxlbVsgbmFtZSBdID09PSB0cnVlID8gbmFtZS50b0xvd2VyQ2FzZSgpIDoKKyAgICAgICAgICAg
ICAgICAgICAgKHZhbCA9IGVsZW0uZ2V0QXR0cmlidXRlTm9kZSggbmFtZSApKSAmJiB2YWwuc3Bl
Y2lmaWVkID8KKyAgICAgICAgICAgICAgICAgICAgdmFsLnZhbHVlIDoKKyAgICAgICAgICAgICAg
ICBudWxsOworICAgICAgICB9CisgICAgfSk7Cit9CisKKy8vIEVYUE9TRQordmFyIF9zaXp6bGUg
PSB3aW5kb3cuU2l6emxlOworCitTaXp6bGUubm9Db25mbGljdCA9IGZ1bmN0aW9uKCkgeworICAg
IGlmICggd2luZG93LlNpenpsZSA9PT0gU2l6emxlICkgeworICAgICAgICB3aW5kb3cuU2l6emxl
ID0gX3NpenpsZTsKKyAgICB9CisKKyAgICByZXR1cm4gU2l6emxlOworfTsKKworaWYgKCB0eXBl
b2YgZGVmaW5lID09PSAiZnVuY3Rpb24iICYmIGRlZmluZS5hbWQgKSB7CisgICAgZGVmaW5lKGZ1
bmN0aW9uKCkgeyByZXR1cm4gU2l6emxlOyB9KTsKKy8vIFNpenpsZSByZXF1aXJlcyB0aGF0IHRo
ZXJlIGJlIGEgZ2xvYmFsIHdpbmRvdyBpbiBDb21tb24tSlMgbGlrZSBlbnZpcm9ubWVudHMKK30g
ZWxzZSBpZiAoIHR5cGVvZiBtb2R1bGUgIT09ICJ1bmRlZmluZWQiICYmIG1vZHVsZS5leHBvcnRz
ICkgeworICAgIG1vZHVsZS5leHBvcnRzID0gU2l6emxlOworfSBlbHNlIHsKKyAgICB3aW5kb3cu
U2l6emxlID0gU2l6emxlOworfQorLy8gRVhQT1NFCisKK30pKCB3aW5kb3cgKTsKZGlmZiAtLWdp
dCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvZXh0ZXJuYWwvc2l6
emxlL2Rpc3Qvc2l6emxlLm1pbi5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxl
cy9qcXVlcnkvZXh0ZXJuYWwvc2l6emxlL2Rpc3Qvc2l6emxlLm1pbi5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
ZTAzMjc4OGI2NTlkZTc0M2RmYzA5OTI2ZmFjOWUxMGZhOGQwYjgyCi0tLSAvZGV2L251bGwKKysr
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9leHRlcm5hbC9zaXp6
bGUvZGlzdC9zaXp6bGUubWluLmpzCkBAIC0wLDAgKzEsMyBAQAorLyohIFNpenpsZSB2Mi4zLjMg
fCAoYykgalF1ZXJ5IEZvdW5kYXRpb24sIEluYy4gfCBqcXVlcnkub3JnL2xpY2Vuc2UgKi8KKyFm
dW5jdGlvbihhKXt2YXIgYixjLGQsZSxmLGcsaCxpLGosayxsLG0sbixvLHAscSxyLHMsdCx1PSJz
aXp6bGUiKzEqbmV3IERhdGUsdj1hLmRvY3VtZW50LHc9MCx4PTAseT1oYSgpLHo9aGEoKSxBPWhh
KCksQj1mdW5jdGlvbihhLGIpe3JldHVybiBhPT09YiYmKGw9ITApLDB9LEM9e30uaGFzT3duUHJv
cGVydHksRD1bXSxFPUQucG9wLEY9RC5wdXNoLEc9RC5wdXNoLEg9RC5zbGljZSxJPWZ1bmN0aW9u
KGEsYil7Zm9yKHZhciBjPTAsZD1hLmxlbmd0aDtjPGQ7YysrKWlmKGFbY109PT1iKXJldHVybiBj
O3JldHVybi0xfSxKPSJjaGVja2VkfHNlbGVjdGVkfGFzeW5jfGF1dG9mb2N1c3xhdXRvcGxheXxj
b250cm9sc3xkZWZlcnxkaXNhYmxlZHxoaWRkZW58aXNtYXB8bG9vcHxtdWx0aXBsZXxvcGVufHJl
YWRvbmx5fHJlcXVpcmVkfHNjb3BlZCIsSz0iW1xceDIwXFx0XFxyXFxuXFxmXSIsTD0iKD86XFxc
XC58W1xcdy1dfFteXDAtXFx4YTBdKSsiLE09IlxcWyIrSysiKigiK0wrIikoPzoiK0srIiooWype
JHwhfl0/PSkiK0srIiooPzonKCg/OlxcXFwufFteXFxcXCddKSopJ3xcIigoPzpcXFxcLnxbXlxc
XFxcIl0pKilcInwoIitMKyIpKXwpIitLKyIqXFxdIixOPSI6KCIrTCsiKSg/OlxcKCgoJygoPzpc
XFxcLnxbXlxcXFwnXSkqKSd8XCIoKD86XFxcXC58W15cXFxcXCJdKSopXCIpfCgoPzpcXFxcLnxb
XlxcXFwoKVtcXF1dfCIrTSsiKSopfC4qKVxcKXwpIixPPW5ldyBSZWdFeHAoSysiKyIsImciKSxQ
PW5ldyBSZWdFeHAoIl4iK0srIit8KCg/Ol58W15cXFxcXSkoPzpcXFxcLikqKSIrSysiKyQiLCJn
IiksUT1uZXcgUmVnRXhwKCJeIitLKyIqLCIrSysiKiIpLFI9bmV3IFJlZ0V4cCgiXiIrSysiKihb
Pit+XXwiK0srIikiK0srIioiKSxTPW5ldyBSZWdFeHAoIj0iK0srIiooW15cXF0nXCJdKj8pIitL
KyIqXFxdIiwiZyIpLFQ9bmV3IFJlZ0V4cChOKSxVPW5ldyBSZWdFeHAoIl4iK0wrIiQiKSxWPXtJ
RDpuZXcgUmVnRXhwKCJeIygiK0wrIikiKSxDTEFTUzpuZXcgUmVnRXhwKCJeXFwuKCIrTCsiKSIp
LFRBRzpuZXcgUmVnRXhwKCJeKCIrTCsifFsqXSkiKSxBVFRSOm5ldyBSZWdFeHAoIl4iK00pLFBT
RVVETzpuZXcgUmVnRXhwKCJeIitOKSxDSElMRDpuZXcgUmVnRXhwKCJeOihvbmx5fGZpcnN0fGxh
c3R8bnRofG50aC1sYXN0KS0oY2hpbGR8b2YtdHlwZSkoPzpcXCgiK0srIiooZXZlbnxvZGR8KChb
Ky1dfCkoXFxkKilufCkiK0srIiooPzooWystXXwpIitLKyIqKFxcZCspfCkpIitLKyIqXFwpfCki
LCJpIiksYm9vbDpuZXcgUmVnRXhwKCJeKD86IitKKyIpJCIsImkiKSxuZWVkc0NvbnRleHQ6bmV3
IFJlZ0V4cCgiXiIrSysiKls+K35dfDooZXZlbnxvZGR8ZXF8Z3R8bHR8bnRofGZpcnN0fGxhc3Qp
KD86XFwoIitLKyIqKCg/Oi1cXGQpP1xcZCopIitLKyIqXFwpfCkoPz1bXi1dfCQpIiwiaSIpfSxX
PS9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbikkL2ksWD0vXmhcZCQvaSxZPS9eW157
XStce1xzKlxbbmF0aXZlIFx3LyxaPS9eKD86IyhbXHctXSspfChcdyspfFwuKFtcdy1dKykpJC8s
JD0vWyt+XS8sXz1uZXcgUmVnRXhwKCJcXFxcKFtcXGRhLWZdezEsNn0iK0srIj98KCIrSysiKXwu
KSIsImlnIiksYWE9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPSIweCIrYi02NTUzNjtyZXR1cm4gZCE9
PWR8fGM/YjpkPDA/U3RyaW5nLmZyb21DaGFyQ29kZShkKzY1NTM2KTpTdHJpbmcuZnJvbUNoYXJD
b2RlKGQ+PjEwfDU1Mjk2LDEwMjMmZHw1NjMyMCl9LGJhPS8oW1wwLVx4MWZceDdmXXxeLT9cZCl8
Xi0kfFteXDAtXHgxZlx4N2YtXHVGRkZGXHctXS9nLGNhPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGI/
IlwwIj09PWE/Ilx1ZmZmZCI6YS5zbGljZSgwLC0xKSsiXFwiK2EuY2hhckNvZGVBdChhLmxlbmd0
aC0xKS50b1N0cmluZygxNikrIiAiOiJcXCIrYX0sZGE9ZnVuY3Rpb24oKXttKCl9LGVhPXRhKGZ1
bmN0aW9uKGEpe3JldHVybiBhLmRpc2FibGVkPT09ITAmJigiZm9ybSJpbiBhfHwibGFiZWwiaW4g
YSl9LHtkaXI6InBhcmVudE5vZGUiLG5leHQ6ImxlZ2VuZCJ9KTt0cnl7Ry5hcHBseShEPUguY2Fs
bCh2LmNoaWxkTm9kZXMpLHYuY2hpbGROb2RlcyksRFt2LmNoaWxkTm9kZXMubGVuZ3RoXS5ub2Rl
VHlwZX1jYXRjaChmYSl7Rz17YXBwbHk6RC5sZW5ndGg/ZnVuY3Rpb24oYSxiKXtGLmFwcGx5KGEs
SC5jYWxsKGIpKX06ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmxlbmd0aCxkPTA7d2hpbGUoYVtjKytd
PWJbZCsrXSk7YS5sZW5ndGg9Yy0xfX19ZnVuY3Rpb24gZ2EoYSxiLGQsZSl7dmFyIGYsaCxqLGss
bCxvLHIscz1iJiZiLm93bmVyRG9jdW1lbnQsdz1iP2Iubm9kZVR5cGU6OTtpZihkPWR8fFtdLCJz
dHJpbmciIT10eXBlb2YgYXx8IWF8fDEhPT13JiY5IT09dyYmMTEhPT13KXJldHVybiBkO2lmKCFl
JiYoKGI/Yi5vd25lckRvY3VtZW50fHxiOnYpIT09biYmbShiKSxiPWJ8fG4scCkpe2lmKDExIT09
dyYmKGw9Wi5leGVjKGEpKSlpZihmPWxbMV0pe2lmKDk9PT13KXtpZighKGo9Yi5nZXRFbGVtZW50
QnlJZChmKSkpcmV0dXJuIGQ7aWYoai5pZD09PWYpcmV0dXJuIGQucHVzaChqKSxkfWVsc2UgaWYo
cyYmKGo9cy5nZXRFbGVtZW50QnlJZChmKSkmJnQoYixqKSYmai5pZD09PWYpcmV0dXJuIGQucHVz
aChqKSxkfWVsc2V7aWYobFsyXSlyZXR1cm4gRy5hcHBseShkLGIuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoYSkpLGQ7aWYoKGY9bFszXSkmJmMuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSYmYi5nZXRFbGVt
ZW50c0J5Q2xhc3NOYW1lKXJldHVybiBHLmFwcGx5KGQsYi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1l
KGYpKSxkfWlmKGMucXNhJiYhQVthKyIgIl0mJighcXx8IXEudGVzdChhKSkpe2lmKDEhPT13KXM9
YixyPWE7ZWxzZSBpZigib2JqZWN0IiE9PWIubm9kZU5hbWUudG9Mb3dlckNhc2UoKSl7KGs9Yi5n
ZXRBdHRyaWJ1dGUoImlkIikpP2s9ay5yZXBsYWNlKGJhLGNhKTpiLnNldEF0dHJpYnV0ZSgiaWQi
LGs9dSksbz1nKGEpLGg9by5sZW5ndGg7d2hpbGUoaC0tKW9baF09IiMiK2srIiAiK3NhKG9baF0p
O3I9by5qb2luKCIsIikscz0kLnRlc3QoYSkmJnFhKGIucGFyZW50Tm9kZSl8fGJ9aWYocil0cnl7
cmV0dXJuIEcuYXBwbHkoZCxzLnF1ZXJ5U2VsZWN0b3JBbGwocikpLGR9Y2F0Y2goeCl7fWZpbmFs
bHl7az09PXUmJmIucmVtb3ZlQXR0cmlidXRlKCJpZCIpfX19cmV0dXJuIGkoYS5yZXBsYWNlKFAs
IiQxIiksYixkLGUpfWZ1bmN0aW9uIGhhKCl7dmFyIGE9W107ZnVuY3Rpb24gYihjLGUpe3JldHVy
biBhLnB1c2goYysiICIpPmQuY2FjaGVMZW5ndGgmJmRlbGV0ZSBiW2Euc2hpZnQoKV0sYltjKyIg
Il09ZX1yZXR1cm4gYn1mdW5jdGlvbiBpYShhKXtyZXR1cm4gYVt1XT0hMCxhfWZ1bmN0aW9uIGph
KGEpe3ZhciBiPW4uY3JlYXRlRWxlbWVudCgiZmllbGRzZXQiKTt0cnl7cmV0dXJuISFhKGIpfWNh
dGNoKGMpe3JldHVybiExfWZpbmFsbHl7Yi5wYXJlbnROb2RlJiZiLnBhcmVudE5vZGUucmVtb3Zl
Q2hpbGQoYiksYj1udWxsfX1mdW5jdGlvbiBrYShhLGIpe3ZhciBjPWEuc3BsaXQoInwiKSxlPWMu
bGVuZ3RoO3doaWxlKGUtLSlkLmF0dHJIYW5kbGVbY1tlXV09Yn1mdW5jdGlvbiBsYShhLGIpe3Zh
ciBjPWImJmEsZD1jJiYxPT09YS5ub2RlVHlwZSYmMT09PWIubm9kZVR5cGUmJmEuc291cmNlSW5k
ZXgtYi5zb3VyY2VJbmRleDtpZihkKXJldHVybiBkO2lmKGMpd2hpbGUoYz1jLm5leHRTaWJsaW5n
KWlmKGM9PT1iKXJldHVybi0xO3JldHVybiBhPzE6LTF9ZnVuY3Rpb24gbWEoYSl7cmV0dXJuIGZ1
bmN0aW9uKGIpe3ZhciBjPWIubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4iaW5wdXQiPT09
YyYmYi50eXBlPT09YX19ZnVuY3Rpb24gbmEoYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe3ZhciBjPWIu
bm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4oImlucHV0Ij09PWN8fCJidXR0b24iPT09Yykm
JmIudHlwZT09PWF9fWZ1bmN0aW9uIG9hKGEpe3JldHVybiBmdW5jdGlvbihiKXtyZXR1cm4iZm9y
bSJpbiBiP2IucGFyZW50Tm9kZSYmYi5kaXNhYmxlZD09PSExPyJsYWJlbCJpbiBiPyJsYWJlbCJp
biBiLnBhcmVudE5vZGU/Yi5wYXJlbnROb2RlLmRpc2FibGVkPT09YTpiLmRpc2FibGVkPT09YTpi
LmlzRGlzYWJsZWQ9PT1hfHxiLmlzRGlzYWJsZWQhPT0hYSYmZWEoYik9PT1hOmIuZGlzYWJsZWQ9
PT1hOiJsYWJlbCJpbiBiJiZiLmRpc2FibGVkPT09YX19ZnVuY3Rpb24gcGEoYSl7cmV0dXJuIGlh
KGZ1bmN0aW9uKGIpe3JldHVybiBiPStiLGlhKGZ1bmN0aW9uKGMsZCl7dmFyIGUsZj1hKFtdLGMu
bGVuZ3RoLGIpLGc9Zi5sZW5ndGg7d2hpbGUoZy0tKWNbZT1mW2ddXSYmKGNbZV09IShkW2VdPWNb
ZV0pKX0pfSl9ZnVuY3Rpb24gcWEoYSl7cmV0dXJuIGEmJiJ1bmRlZmluZWQiIT10eXBlb2YgYS5n
ZXRFbGVtZW50c0J5VGFnTmFtZSYmYX1jPWdhLnN1cHBvcnQ9e30sZj1nYS5pc1hNTD1mdW5jdGlv
bihhKXt2YXIgYj1hJiYoYS5vd25lckRvY3VtZW50fHxhKS5kb2N1bWVudEVsZW1lbnQ7cmV0dXJu
ISFiJiYiSFRNTCIhPT1iLm5vZGVOYW1lfSxtPWdhLnNldERvY3VtZW50PWZ1bmN0aW9uKGEpe3Zh
ciBiLGUsZz1hP2Eub3duZXJEb2N1bWVudHx8YTp2O3JldHVybiBnIT09biYmOT09PWcubm9kZVR5
cGUmJmcuZG9jdW1lbnRFbGVtZW50PyhuPWcsbz1uLmRvY3VtZW50RWxlbWVudCxwPSFmKG4pLHYh
PT1uJiYoZT1uLmRlZmF1bHRWaWV3KSYmZS50b3AhPT1lJiYoZS5hZGRFdmVudExpc3RlbmVyP2Uu
YWRkRXZlbnRMaXN0ZW5lcigidW5sb2FkIixkYSwhMSk6ZS5hdHRhY2hFdmVudCYmZS5hdHRhY2hF
dmVudCgib251bmxvYWQiLGRhKSksYy5hdHRyaWJ1dGVzPWphKGZ1bmN0aW9uKGEpe3JldHVybiBh
LmNsYXNzTmFtZT0iaSIsIWEuZ2V0QXR0cmlidXRlKCJjbGFzc05hbWUiKX0pLGMuZ2V0RWxlbWVu
dHNCeVRhZ05hbWU9amEoZnVuY3Rpb24oYSl7cmV0dXJuIGEuYXBwZW5kQ2hpbGQobi5jcmVhdGVD
b21tZW50KCIiKSksIWEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKS5sZW5ndGh9KSxjLmdldEVs
ZW1lbnRzQnlDbGFzc05hbWU9WS50ZXN0KG4uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSksYy5nZXRC
eUlkPWphKGZ1bmN0aW9uKGEpe3JldHVybiBvLmFwcGVuZENoaWxkKGEpLmlkPXUsIW4uZ2V0RWxl
bWVudHNCeU5hbWV8fCFuLmdldEVsZW1lbnRzQnlOYW1lKHUpLmxlbmd0aH0pLGMuZ2V0QnlJZD8o
ZC5maWx0ZXIuSUQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS5yZXBsYWNlKF8sYWEpO3JldHVybiBmdW5j
dGlvbihhKXtyZXR1cm4gYS5nZXRBdHRyaWJ1dGUoImlkIik9PT1ifX0sZC5maW5kLklEPWZ1bmN0
aW9uKGEsYil7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBiLmdldEVsZW1lbnRCeUlkJiZwKXt2YXIg
Yz1iLmdldEVsZW1lbnRCeUlkKGEpO3JldHVybiBjP1tjXTpbXX19KTooZC5maWx0ZXIuSUQ9ZnVu
Y3Rpb24oYSl7dmFyIGI9YS5yZXBsYWNlKF8sYWEpO3JldHVybiBmdW5jdGlvbihhKXt2YXIgYz0i
dW5kZWZpbmVkIiE9dHlwZW9mIGEuZ2V0QXR0cmlidXRlTm9kZSYmYS5nZXRBdHRyaWJ1dGVOb2Rl
KCJpZCIpO3JldHVybiBjJiZjLnZhbHVlPT09Yn19LGQuZmluZC5JRD1mdW5jdGlvbihhLGIpe2lm
KCJ1bmRlZmluZWQiIT10eXBlb2YgYi5nZXRFbGVtZW50QnlJZCYmcCl7dmFyIGMsZCxlLGY9Yi5n
ZXRFbGVtZW50QnlJZChhKTtpZihmKXtpZihjPWYuZ2V0QXR0cmlidXRlTm9kZSgiaWQiKSxjJiZj
LnZhbHVlPT09YSlyZXR1cm5bZl07ZT1iLmdldEVsZW1lbnRzQnlOYW1lKGEpLGQ9MDt3aGlsZShm
PWVbZCsrXSlpZihjPWYuZ2V0QXR0cmlidXRlTm9kZSgiaWQiKSxjJiZjLnZhbHVlPT09YSlyZXR1
cm5bZl19cmV0dXJuW119fSksZC5maW5kLlRBRz1jLmdldEVsZW1lbnRzQnlUYWdOYW1lP2Z1bmN0
aW9uKGEsYil7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBiLmdldEVsZW1lbnRzQnlUYWdOYW1l
P2IuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYSk6Yy5xc2E/Yi5xdWVyeVNlbGVjdG9yQWxsKGEpOnZv
aWQgMH06ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPVtdLGU9MCxmPWIuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoYSk7aWYoIioiPT09YSl7d2hpbGUoYz1mW2UrK10pMT09PWMubm9kZVR5cGUmJmQucHVzaChj
KTtyZXR1cm4gZH1yZXR1cm4gZn0sZC5maW5kLkNMQVNTPWMuZ2V0RWxlbWVudHNCeUNsYXNzTmFt
ZSYmZnVuY3Rpb24oYSxiKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGIuZ2V0RWxlbWVudHNCeUNs
YXNzTmFtZSYmcClyZXR1cm4gYi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGEpfSxyPVtdLHE9W10s
KGMucXNhPVkudGVzdChuLnF1ZXJ5U2VsZWN0b3JBbGwpKSYmKGphKGZ1bmN0aW9uKGEpe28uYXBw
ZW5kQ2hpbGQoYSkuaW5uZXJIVE1MPSI8YSBpZD0nIit1KyInPjwvYT48c2VsZWN0IGlkPSciK3Ur
Ii1cclxcJyBtc2FsbG93Y2FwdHVyZT0nJz48b3B0aW9uIHNlbGVjdGVkPScnPjwvb3B0aW9uPjwv
c2VsZWN0PiIsYS5xdWVyeVNlbGVjdG9yQWxsKCJbbXNhbGxvd2NhcHR1cmVePScnXSIpLmxlbmd0
aCYmcS5wdXNoKCJbKl4kXT0iK0srIiooPzonJ3xcIlwiKSIpLGEucXVlcnlTZWxlY3RvckFsbCgi
W3NlbGVjdGVkXSIpLmxlbmd0aHx8cS5wdXNoKCJcXFsiK0srIiooPzp2YWx1ZXwiK0orIikiKSxh
LnF1ZXJ5U2VsZWN0b3JBbGwoIltpZH49Iit1KyItXSIpLmxlbmd0aHx8cS5wdXNoKCJ+PSIpLGEu
cXVlcnlTZWxlY3RvckFsbCgiOmNoZWNrZWQiKS5sZW5ndGh8fHEucHVzaCgiOmNoZWNrZWQiKSxh
LnF1ZXJ5U2VsZWN0b3JBbGwoImEjIit1KyIrKiIpLmxlbmd0aHx8cS5wdXNoKCIuIy4rWyt+XSIp
fSksamEoZnVuY3Rpb24oYSl7YS5pbm5lckhUTUw9IjxhIGhyZWY9JycgZGlzYWJsZWQ9J2Rpc2Fi
bGVkJz48L2E+PHNlbGVjdCBkaXNhYmxlZD0nZGlzYWJsZWQnPjxvcHRpb24vPjwvc2VsZWN0PiI7
dmFyIGI9bi5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO2Iuc2V0QXR0cmlidXRlKCJ0eXBlIiwiaGlk
ZGVuIiksYS5hcHBlbmRDaGlsZChiKS5zZXRBdHRyaWJ1dGUoIm5hbWUiLCJEIiksYS5xdWVyeVNl
bGVjdG9yQWxsKCJbbmFtZT1kXSIpLmxlbmd0aCYmcS5wdXNoKCJuYW1lIitLKyIqWypeJHwhfl0/
PSIpLDIhPT1hLnF1ZXJ5U2VsZWN0b3JBbGwoIjplbmFibGVkIikubGVuZ3RoJiZxLnB1c2goIjpl
bmFibGVkIiwiOmRpc2FibGVkIiksby5hcHBlbmRDaGlsZChhKS5kaXNhYmxlZD0hMCwyIT09YS5x
dWVyeVNlbGVjdG9yQWxsKCI6ZGlzYWJsZWQiKS5sZW5ndGgmJnEucHVzaCgiOmVuYWJsZWQiLCI6
ZGlzYWJsZWQiKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoIiosOngiKSxxLnB1c2goIiwuKjoiKX0pKSwo
Yy5tYXRjaGVzU2VsZWN0b3I9WS50ZXN0KHM9by5tYXRjaGVzfHxvLndlYmtpdE1hdGNoZXNTZWxl
Y3Rvcnx8by5tb3pNYXRjaGVzU2VsZWN0b3J8fG8ub01hdGNoZXNTZWxlY3Rvcnx8by5tc01hdGNo
ZXNTZWxlY3RvcikpJiZqYShmdW5jdGlvbihhKXtjLmRpc2Nvbm5lY3RlZE1hdGNoPXMuY2FsbChh
LCIqIikscy5jYWxsKGEsIltzIT0nJ106eCIpLHIucHVzaCgiIT0iLE4pfSkscT1xLmxlbmd0aCYm
bmV3IFJlZ0V4cChxLmpvaW4oInwiKSkscj1yLmxlbmd0aCYmbmV3IFJlZ0V4cChyLmpvaW4oInwi
KSksYj1ZLnRlc3Qoby5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiksdD1ifHxZLnRlc3Qoby5jb250
YWlucyk/ZnVuY3Rpb24oYSxiKXt2YXIgYz05PT09YS5ub2RlVHlwZT9hLmRvY3VtZW50RWxlbWVu
dDphLGQ9YiYmYi5wYXJlbnROb2RlO3JldHVybiBhPT09ZHx8ISghZHx8MSE9PWQubm9kZVR5cGV8
fCEoYy5jb250YWlucz9jLmNvbnRhaW5zKGQpOmEuY29tcGFyZURvY3VtZW50UG9zaXRpb24mJjE2
JmEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oZCkpKX06ZnVuY3Rpb24oYSxiKXtpZihiKXdoaWxl
KGI9Yi5wYXJlbnROb2RlKWlmKGI9PT1hKXJldHVybiEwO3JldHVybiExfSxCPWI/ZnVuY3Rpb24o
YSxiKXtpZihhPT09YilyZXR1cm4gbD0hMCwwO3ZhciBkPSFhLmNvbXBhcmVEb2N1bWVudFBvc2l0
aW9uLSFiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uO3JldHVybiBkP2Q6KGQ9KGEub3duZXJEb2N1
bWVudHx8YSk9PT0oYi5vd25lckRvY3VtZW50fHxiKT9hLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9u
KGIpOjEsMSZkfHwhYy5zb3J0RGV0YWNoZWQmJmIuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYSk9
PT1kP2E9PT1ufHxhLm93bmVyRG9jdW1lbnQ9PT12JiZ0KHYsYSk/LTE6Yj09PW58fGIub3duZXJE
b2N1bWVudD09PXYmJnQodixiKT8xOms/SShrLGEpLUkoayxiKTowOjQmZD8tMToxKX06ZnVuY3Rp
b24oYSxiKXtpZihhPT09YilyZXR1cm4gbD0hMCwwO3ZhciBjLGQ9MCxlPWEucGFyZW50Tm9kZSxm
PWIucGFyZW50Tm9kZSxnPVthXSxoPVtiXTtpZighZXx8IWYpcmV0dXJuIGE9PT1uPy0xOmI9PT1u
PzE6ZT8tMTpmPzE6az9JKGssYSktSShrLGIpOjA7aWYoZT09PWYpcmV0dXJuIGxhKGEsYik7Yz1h
O3doaWxlKGM9Yy5wYXJlbnROb2RlKWcudW5zaGlmdChjKTtjPWI7d2hpbGUoYz1jLnBhcmVudE5v
ZGUpaC51bnNoaWZ0KGMpO3doaWxlKGdbZF09PT1oW2RdKWQrKztyZXR1cm4gZD9sYShnW2RdLGhb
ZF0pOmdbZF09PT12Py0xOmhbZF09PT12PzE6MH0sbik6bn0sZ2EubWF0Y2hlcz1mdW5jdGlvbihh
LGIpe3JldHVybiBnYShhLG51bGwsbnVsbCxiKX0sZ2EubWF0Y2hlc1NlbGVjdG9yPWZ1bmN0aW9u
KGEsYil7aWYoKGEub3duZXJEb2N1bWVudHx8YSkhPT1uJiZtKGEpLGI9Yi5yZXBsYWNlKFMsIj0n
JDEnXSIpLGMubWF0Y2hlc1NlbGVjdG9yJiZwJiYhQVtiKyIgIl0mJighcnx8IXIudGVzdChiKSkm
JighcXx8IXEudGVzdChiKSkpdHJ5e3ZhciBkPXMuY2FsbChhLGIpO2lmKGR8fGMuZGlzY29ubmVj
dGVkTWF0Y2h8fGEuZG9jdW1lbnQmJjExIT09YS5kb2N1bWVudC5ub2RlVHlwZSlyZXR1cm4gZH1j
YXRjaChlKXt9cmV0dXJuIGdhKGIsbixudWxsLFthXSkubGVuZ3RoPjB9LGdhLmNvbnRhaW5zPWZ1
bmN0aW9uKGEsYil7cmV0dXJuKGEub3duZXJEb2N1bWVudHx8YSkhPT1uJiZtKGEpLHQoYSxiKX0s
Z2EuYXR0cj1mdW5jdGlvbihhLGIpeyhhLm93bmVyRG9jdW1lbnR8fGEpIT09biYmbShhKTt2YXIg
ZT1kLmF0dHJIYW5kbGVbYi50b0xvd2VyQ2FzZSgpXSxmPWUmJkMuY2FsbChkLmF0dHJIYW5kbGUs
Yi50b0xvd2VyQ2FzZSgpKT9lKGEsYiwhcCk6dm9pZCAwO3JldHVybiB2b2lkIDAhPT1mP2Y6Yy5h
dHRyaWJ1dGVzfHwhcD9hLmdldEF0dHJpYnV0ZShiKTooZj1hLmdldEF0dHJpYnV0ZU5vZGUoYikp
JiZmLnNwZWNpZmllZD9mLnZhbHVlOm51bGx9LGdhLmVzY2FwZT1mdW5jdGlvbihhKXtyZXR1cm4o
YSsiIikucmVwbGFjZShiYSxjYSl9LGdhLmVycm9yPWZ1bmN0aW9uKGEpe3Rocm93IG5ldyBFcnJv
cigiU3ludGF4IGVycm9yLCB1bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogIithKX0sZ2EudW5pcXVl
U29ydD1mdW5jdGlvbihhKXt2YXIgYixkPVtdLGU9MCxmPTA7aWYobD0hYy5kZXRlY3REdXBsaWNh
dGVzLGs9IWMuc29ydFN0YWJsZSYmYS5zbGljZSgwKSxhLnNvcnQoQiksbCl7d2hpbGUoYj1hW2Yr
K10pYj09PWFbZl0mJihlPWQucHVzaChmKSk7d2hpbGUoZS0tKWEuc3BsaWNlKGRbZV0sMSl9cmV0
dXJuIGs9bnVsbCxhfSxlPWdhLmdldFRleHQ9ZnVuY3Rpb24oYSl7dmFyIGIsYz0iIixkPTAsZj1h
Lm5vZGVUeXBlO2lmKGYpe2lmKDE9PT1mfHw5PT09Znx8MTE9PT1mKXtpZigic3RyaW5nIj09dHlw
ZW9mIGEudGV4dENvbnRlbnQpcmV0dXJuIGEudGV4dENvbnRlbnQ7Zm9yKGE9YS5maXJzdENoaWxk
O2E7YT1hLm5leHRTaWJsaW5nKWMrPWUoYSl9ZWxzZSBpZigzPT09Znx8ND09PWYpcmV0dXJuIGEu
bm9kZVZhbHVlfWVsc2Ugd2hpbGUoYj1hW2QrK10pYys9ZShiKTtyZXR1cm4gY30sZD1nYS5zZWxl
Y3RvcnM9e2NhY2hlTGVuZ3RoOjUwLGNyZWF0ZVBzZXVkbzppYSxtYXRjaDpWLGF0dHJIYW5kbGU6
e30sZmluZDp7fSxyZWxhdGl2ZTp7Ij4iOntkaXI6InBhcmVudE5vZGUiLGZpcnN0OiEwfSwiICI6
e2RpcjoicGFyZW50Tm9kZSJ9LCIrIjp7ZGlyOiJwcmV2aW91c1NpYmxpbmciLGZpcnN0OiEwfSwi
fiI6e2RpcjoicHJldmlvdXNTaWJsaW5nIn19LHByZUZpbHRlcjp7QVRUUjpmdW5jdGlvbihhKXty
ZXR1cm4gYVsxXT1hWzFdLnJlcGxhY2UoXyxhYSksYVszXT0oYVszXXx8YVs0XXx8YVs1XXx8IiIp
LnJlcGxhY2UoXyxhYSksIn49Ij09PWFbMl0mJihhWzNdPSIgIithWzNdKyIgIiksYS5zbGljZSgw
LDQpfSxDSElMRDpmdW5jdGlvbihhKXtyZXR1cm4gYVsxXT1hWzFdLnRvTG93ZXJDYXNlKCksIm50
aCI9PT1hWzFdLnNsaWNlKDAsMyk/KGFbM118fGdhLmVycm9yKGFbMF0pLGFbNF09KyhhWzRdP2Fb
NV0rKGFbNl18fDEpOjIqKCJldmVuIj09PWFbM118fCJvZGQiPT09YVszXSkpLGFbNV09KyhhWzdd
K2FbOF18fCJvZGQiPT09YVszXSkpOmFbM10mJmdhLmVycm9yKGFbMF0pLGF9LFBTRVVETzpmdW5j
dGlvbihhKXt2YXIgYixjPSFhWzZdJiZhWzJdO3JldHVybiBWLkNISUxELnRlc3QoYVswXSk/bnVs
bDooYVszXT9hWzJdPWFbNF18fGFbNV18fCIiOmMmJlQudGVzdChjKSYmKGI9ZyhjLCEwKSkmJihi
PWMuaW5kZXhPZigiKSIsYy5sZW5ndGgtYiktYy5sZW5ndGgpJiYoYVswXT1hWzBdLnNsaWNlKDAs
YiksYVsyXT1jLnNsaWNlKDAsYikpLGEuc2xpY2UoMCwzKSl9fSxmaWx0ZXI6e1RBRzpmdW5jdGlv
bihhKXt2YXIgYj1hLnJlcGxhY2UoXyxhYSkudG9Mb3dlckNhc2UoKTtyZXR1cm4iKiI9PT1hP2Z1
bmN0aW9uKCl7cmV0dXJuITB9OmZ1bmN0aW9uKGEpe3JldHVybiBhLm5vZGVOYW1lJiZhLm5vZGVO
YW1lLnRvTG93ZXJDYXNlKCk9PT1ifX0sQ0xBU1M6ZnVuY3Rpb24oYSl7dmFyIGI9eVthKyIgIl07
cmV0dXJuIGJ8fChiPW5ldyBSZWdFeHAoIihefCIrSysiKSIrYSsiKCIrSysifCQpIikpJiZ5KGEs
ZnVuY3Rpb24oYSl7cmV0dXJuIGIudGVzdCgic3RyaW5nIj09dHlwZW9mIGEuY2xhc3NOYW1lJiZh
LmNsYXNzTmFtZXx8InVuZGVmaW5lZCIhPXR5cGVvZiBhLmdldEF0dHJpYnV0ZSYmYS5nZXRBdHRy
aWJ1dGUoImNsYXNzIil8fCIiKX0pfSxBVFRSOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gZnVuY3Rp
b24oZCl7dmFyIGU9Z2EuYXR0cihkLGEpO3JldHVybiBudWxsPT1lPyIhPSI9PT1iOiFifHwoZSs9
IiIsIj0iPT09Yj9lPT09YzoiIT0iPT09Yj9lIT09YzoiXj0iPT09Yj9jJiYwPT09ZS5pbmRleE9m
KGMpOiIqPSI9PT1iP2MmJmUuaW5kZXhPZihjKT4tMToiJD0iPT09Yj9jJiZlLnNsaWNlKC1jLmxl
bmd0aCk9PT1jOiJ+PSI9PT1iPygiICIrZS5yZXBsYWNlKE8sIiAiKSsiICIpLmluZGV4T2YoYyk+
LTE6Inw9Ij09PWImJihlPT09Y3x8ZS5zbGljZSgwLGMubGVuZ3RoKzEpPT09YysiLSIpKX19LENI
SUxEOmZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9Im50aCIhPT1hLnNsaWNlKDAsMyksZz0ibGFz
dCIhPT1hLnNsaWNlKC00KSxoPSJvZi10eXBlIj09PWI7cmV0dXJuIDE9PT1kJiYwPT09ZT9mdW5j
dGlvbihhKXtyZXR1cm4hIWEucGFyZW50Tm9kZX06ZnVuY3Rpb24oYixjLGkpe3ZhciBqLGssbCxt
LG4sbyxwPWYhPT1nPyJuZXh0U2libGluZyI6InByZXZpb3VzU2libGluZyIscT1iLnBhcmVudE5v
ZGUscj1oJiZiLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkscz0haSYmIWgsdD0hMTtpZihxKXtpZihm
KXt3aGlsZShwKXttPWI7d2hpbGUobT1tW3BdKWlmKGg/bS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgp
PT09cjoxPT09bS5ub2RlVHlwZSlyZXR1cm4hMTtvPXA9Im9ubHkiPT09YSYmIW8mJiJuZXh0U2li
bGluZyJ9cmV0dXJuITB9aWYobz1bZz9xLmZpcnN0Q2hpbGQ6cS5sYXN0Q2hpbGRdLGcmJnMpe209
cSxsPW1bdV18fChtW3VdPXt9KSxrPWxbbS51bmlxdWVJRF18fChsW20udW5pcXVlSURdPXt9KSxq
PWtbYV18fFtdLG49alswXT09PXcmJmpbMV0sdD1uJiZqWzJdLG09biYmcS5jaGlsZE5vZGVzW25d
O3doaWxlKG09KytuJiZtJiZtW3BdfHwodD1uPTApfHxvLnBvcCgpKWlmKDE9PT1tLm5vZGVUeXBl
JiYrK3QmJm09PT1iKXtrW2FdPVt3LG4sdF07YnJlYWt9fWVsc2UgaWYocyYmKG09YixsPW1bdV18
fChtW3VdPXt9KSxrPWxbbS51bmlxdWVJRF18fChsW20udW5pcXVlSURdPXt9KSxqPWtbYV18fFtd
LG49alswXT09PXcmJmpbMV0sdD1uKSx0PT09ITEpd2hpbGUobT0rK24mJm0mJm1bcF18fCh0PW49
MCl8fG8ucG9wKCkpaWYoKGg/bS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09cjoxPT09bS5ub2Rl
VHlwZSkmJisrdCYmKHMmJihsPW1bdV18fChtW3VdPXt9KSxrPWxbbS51bmlxdWVJRF18fChsW20u
dW5pcXVlSURdPXt9KSxrW2FdPVt3LHRdKSxtPT09YikpYnJlYWs7cmV0dXJuIHQtPWUsdD09PWR8
fHQlZD09PTAmJnQvZD49MH19fSxQU0VVRE86ZnVuY3Rpb24oYSxiKXt2YXIgYyxlPWQucHNldWRv
c1thXXx8ZC5zZXRGaWx0ZXJzW2EudG9Mb3dlckNhc2UoKV18fGdhLmVycm9yKCJ1bnN1cHBvcnRl
ZCBwc2V1ZG86ICIrYSk7cmV0dXJuIGVbdV0/ZShiKTplLmxlbmd0aD4xPyhjPVthLGEsIiIsYl0s
ZC5zZXRGaWx0ZXJzLmhhc093blByb3BlcnR5KGEudG9Mb3dlckNhc2UoKSk/aWEoZnVuY3Rpb24o
YSxjKXt2YXIgZCxmPWUoYSxiKSxnPWYubGVuZ3RoO3doaWxlKGctLSlkPUkoYSxmW2ddKSxhW2Rd
PSEoY1tkXT1mW2ddKX0pOmZ1bmN0aW9uKGEpe3JldHVybiBlKGEsMCxjKX0pOmV9fSxwc2V1ZG9z
Ontub3Q6aWEoZnVuY3Rpb24oYSl7dmFyIGI9W10sYz1bXSxkPWgoYS5yZXBsYWNlKFAsIiQxIikp
O3JldHVybiBkW3VdP2lhKGZ1bmN0aW9uKGEsYixjLGUpe3ZhciBmLGc9ZChhLG51bGwsZSxbXSks
aD1hLmxlbmd0aDt3aGlsZShoLS0pKGY9Z1toXSkmJihhW2hdPSEoYltoXT1mKSl9KTpmdW5jdGlv
bihhLGUsZil7cmV0dXJuIGJbMF09YSxkKGIsbnVsbCxmLGMpLGJbMF09bnVsbCwhYy5wb3AoKX19
KSxoYXM6aWEoZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe3JldHVybiBnYShhLGIpLmxl
bmd0aD4wfX0pLGNvbnRhaW5zOmlhKGZ1bmN0aW9uKGEpe3JldHVybiBhPWEucmVwbGFjZShfLGFh
KSxmdW5jdGlvbihiKXtyZXR1cm4oYi50ZXh0Q29udGVudHx8Yi5pbm5lclRleHR8fGUoYikpLmlu
ZGV4T2YoYSk+LTF9fSksbGFuZzppYShmdW5jdGlvbihhKXtyZXR1cm4gVS50ZXN0KGF8fCIiKXx8
Z2EuZXJyb3IoInVuc3VwcG9ydGVkIGxhbmc6ICIrYSksYT1hLnJlcGxhY2UoXyxhYSkudG9Mb3dl
ckNhc2UoKSxmdW5jdGlvbihiKXt2YXIgYztkbyBpZihjPXA/Yi5sYW5nOmIuZ2V0QXR0cmlidXRl
KCJ4bWw6bGFuZyIpfHxiLmdldEF0dHJpYnV0ZSgibGFuZyIpKXJldHVybiBjPWMudG9Mb3dlckNh
c2UoKSxjPT09YXx8MD09PWMuaW5kZXhPZihhKyItIik7d2hpbGUoKGI9Yi5wYXJlbnROb2RlKSYm
MT09PWIubm9kZVR5cGUpO3JldHVybiExfX0pLHRhcmdldDpmdW5jdGlvbihiKXt2YXIgYz1hLmxv
Y2F0aW9uJiZhLmxvY2F0aW9uLmhhc2g7cmV0dXJuIGMmJmMuc2xpY2UoMSk9PT1iLmlkfSxyb290
OmZ1bmN0aW9uKGEpe3JldHVybiBhPT09b30sZm9jdXM6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1u
LmFjdGl2ZUVsZW1lbnQmJighbi5oYXNGb2N1c3x8bi5oYXNGb2N1cygpKSYmISEoYS50eXBlfHxh
LmhyZWZ8fH5hLnRhYkluZGV4KX0sZW5hYmxlZDpvYSghMSksZGlzYWJsZWQ6b2EoITApLGNoZWNr
ZWQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiJpbnB1
dCI9PT1iJiYhIWEuY2hlY2tlZHx8Im9wdGlvbiI9PT1iJiYhIWEuc2VsZWN0ZWR9LHNlbGVjdGVk
OmZ1bmN0aW9uKGEpe3JldHVybiBhLnBhcmVudE5vZGUmJmEucGFyZW50Tm9kZS5zZWxlY3RlZElu
ZGV4LGEuc2VsZWN0ZWQ9PT0hMH0sZW1wdHk6ZnVuY3Rpb24oYSl7Zm9yKGE9YS5maXJzdENoaWxk
O2E7YT1hLm5leHRTaWJsaW5nKWlmKGEubm9kZVR5cGU8NilyZXR1cm4hMTtyZXR1cm4hMH0scGFy
ZW50OmZ1bmN0aW9uKGEpe3JldHVybiFkLnBzZXVkb3MuZW1wdHkoYSl9LGhlYWRlcjpmdW5jdGlv
bihhKXtyZXR1cm4gWC50ZXN0KGEubm9kZU5hbWUpfSxpbnB1dDpmdW5jdGlvbihhKXtyZXR1cm4g
Vy50ZXN0KGEubm9kZU5hbWUpfSxidXR0b246ZnVuY3Rpb24oYSl7dmFyIGI9YS5ub2RlTmFtZS50
b0xvd2VyQ2FzZSgpO3JldHVybiJpbnB1dCI9PT1iJiYiYnV0dG9uIj09PWEudHlwZXx8ImJ1dHRv
biI9PT1ifSx0ZXh0OmZ1bmN0aW9uKGEpe3ZhciBiO3JldHVybiJpbnB1dCI9PT1hLm5vZGVOYW1l
LnRvTG93ZXJDYXNlKCkmJiJ0ZXh0Ij09PWEudHlwZSYmKG51bGw9PShiPWEuZ2V0QXR0cmlidXRl
KCJ0eXBlIikpfHwidGV4dCI9PT1iLnRvTG93ZXJDYXNlKCkpfSxmaXJzdDpwYShmdW5jdGlvbigp
e3JldHVyblswXX0pLGxhc3Q6cGEoZnVuY3Rpb24oYSxiKXtyZXR1cm5bYi0xXX0pLGVxOnBhKGZ1
bmN0aW9uKGEsYixjKXtyZXR1cm5bYzwwP2MrYjpjXX0pLGV2ZW46cGEoZnVuY3Rpb24oYSxiKXtm
b3IodmFyIGM9MDtjPGI7Yys9MilhLnB1c2goYyk7cmV0dXJuIGF9KSxvZGQ6cGEoZnVuY3Rpb24o
YSxiKXtmb3IodmFyIGM9MTtjPGI7Yys9MilhLnB1c2goYyk7cmV0dXJuIGF9KSxsdDpwYShmdW5j
dGlvbihhLGIsYyl7Zm9yKHZhciBkPWM8MD9jK2I6YzstLWQ+PTA7KWEucHVzaChkKTtyZXR1cm4g
YX0pLGd0OnBhKGZ1bmN0aW9uKGEsYixjKXtmb3IodmFyIGQ9YzwwP2MrYjpjOysrZDxiOylhLnB1
c2goZCk7cmV0dXJuIGF9KX19LGQucHNldWRvcy5udGg9ZC5wc2V1ZG9zLmVxO2ZvcihiIGlue3Jh
ZGlvOiEwLGNoZWNrYm94OiEwLGZpbGU6ITAscGFzc3dvcmQ6ITAsaW1hZ2U6ITB9KWQucHNldWRv
c1tiXT1tYShiKTtmb3IoYiBpbntzdWJtaXQ6ITAscmVzZXQ6ITB9KWQucHNldWRvc1tiXT1uYShi
KTtmdW5jdGlvbiByYSgpe31yYS5wcm90b3R5cGU9ZC5maWx0ZXJzPWQucHNldWRvcyxkLnNldEZp
bHRlcnM9bmV3IHJhLGc9Z2EudG9rZW5pemU9ZnVuY3Rpb24oYSxiKXt2YXIgYyxlLGYsZyxoLGks
aixrPXpbYSsiICJdO2lmKGspcmV0dXJuIGI/MDprLnNsaWNlKDApO2g9YSxpPVtdLGo9ZC5wcmVG
aWx0ZXI7d2hpbGUoaCl7YyYmIShlPVEuZXhlYyhoKSl8fChlJiYoaD1oLnNsaWNlKGVbMF0ubGVu
Z3RoKXx8aCksaS5wdXNoKGY9W10pKSxjPSExLChlPVIuZXhlYyhoKSkmJihjPWUuc2hpZnQoKSxm
LnB1c2goe3ZhbHVlOmMsdHlwZTplWzBdLnJlcGxhY2UoUCwiICIpfSksaD1oLnNsaWNlKGMubGVu
Z3RoKSk7Zm9yKGcgaW4gZC5maWx0ZXIpIShlPVZbZ10uZXhlYyhoKSl8fGpbZ10mJiEoZT1qW2dd
KGUpKXx8KGM9ZS5zaGlmdCgpLGYucHVzaCh7dmFsdWU6Yyx0eXBlOmcsbWF0Y2hlczplfSksaD1o
LnNsaWNlKGMubGVuZ3RoKSk7aWYoIWMpYnJlYWt9cmV0dXJuIGI/aC5sZW5ndGg6aD9nYS5lcnJv
cihhKTp6KGEsaSkuc2xpY2UoMCl9O2Z1bmN0aW9uIHNhKGEpe2Zvcih2YXIgYj0wLGM9YS5sZW5n
dGgsZD0iIjtiPGM7YisrKWQrPWFbYl0udmFsdWU7cmV0dXJuIGR9ZnVuY3Rpb24gdGEoYSxiLGMp
e3ZhciBkPWIuZGlyLGU9Yi5uZXh0LGY9ZXx8ZCxnPWMmJiJwYXJlbnROb2RlIj09PWYsaD14Kys7
cmV0dXJuIGIuZmlyc3Q/ZnVuY3Rpb24oYixjLGUpe3doaWxlKGI9YltkXSlpZigxPT09Yi5ub2Rl
VHlwZXx8ZylyZXR1cm4gYShiLGMsZSk7cmV0dXJuITF9OmZ1bmN0aW9uKGIsYyxpKXt2YXIgaixr
LGwsbT1bdyxoXTtpZihpKXt3aGlsZShiPWJbZF0paWYoKDE9PT1iLm5vZGVUeXBlfHxnKSYmYShi
LGMsaSkpcmV0dXJuITB9ZWxzZSB3aGlsZShiPWJbZF0paWYoMT09PWIubm9kZVR5cGV8fGcpaWYo
bD1iW3VdfHwoYlt1XT17fSksaz1sW2IudW5pcXVlSURdfHwobFtiLnVuaXF1ZUlEXT17fSksZSYm
ZT09PWIubm9kZU5hbWUudG9Mb3dlckNhc2UoKSliPWJbZF18fGI7ZWxzZXtpZigoaj1rW2ZdKSYm
alswXT09PXcmJmpbMV09PT1oKXJldHVybiBtWzJdPWpbMl07aWYoa1tmXT1tLG1bMl09YShiLGMs
aSkpcmV0dXJuITB9cmV0dXJuITF9fWZ1bmN0aW9uIHVhKGEpe3JldHVybiBhLmxlbmd0aD4xP2Z1
bmN0aW9uKGIsYyxkKXt2YXIgZT1hLmxlbmd0aDt3aGlsZShlLS0paWYoIWFbZV0oYixjLGQpKXJl
dHVybiExO3JldHVybiEwfTphWzBdfWZ1bmN0aW9uIHZhKGEsYixjKXtmb3IodmFyIGQ9MCxlPWIu
bGVuZ3RoO2Q8ZTtkKyspZ2EoYSxiW2RdLGMpO3JldHVybiBjfWZ1bmN0aW9uIHdhKGEsYixjLGQs
ZSl7Zm9yKHZhciBmLGc9W10saD0wLGk9YS5sZW5ndGgsaj1udWxsIT1iO2g8aTtoKyspKGY9YVto
XSkmJihjJiYhYyhmLGQsZSl8fChnLnB1c2goZiksaiYmYi5wdXNoKGgpKSk7cmV0dXJuIGd9ZnVu
Y3Rpb24geGEoYSxiLGMsZCxlLGYpe3JldHVybiBkJiYhZFt1XSYmKGQ9eGEoZCkpLGUmJiFlW3Vd
JiYoZT14YShlLGYpKSxpYShmdW5jdGlvbihmLGcsaCxpKXt2YXIgaixrLGwsbT1bXSxuPVtdLG89
Zy5sZW5ndGgscD1mfHx2YShifHwiKiIsaC5ub2RlVHlwZT9baF06aCxbXSkscT0hYXx8IWYmJmI/
cDp3YShwLG0sYSxoLGkpLHI9Yz9lfHwoZj9hOm98fGQpP1tdOmc6cTtpZihjJiZjKHEscixoLGkp
LGQpe2o9d2EocixuKSxkKGosW10saCxpKSxrPWoubGVuZ3RoO3doaWxlKGstLSkobD1qW2tdKSYm
KHJbbltrXV09IShxW25ba11dPWwpKX1pZihmKXtpZihlfHxhKXtpZihlKXtqPVtdLGs9ci5sZW5n
dGg7d2hpbGUoay0tKShsPXJba10pJiZqLnB1c2gocVtrXT1sKTtlKG51bGwscj1bXSxqLGkpfWs9
ci5sZW5ndGg7d2hpbGUoay0tKShsPXJba10pJiYoaj1lP0koZixsKTptW2tdKT4tMSYmKGZbal09
IShnW2pdPWwpKX19ZWxzZSByPXdhKHI9PT1nP3Iuc3BsaWNlKG8sci5sZW5ndGgpOnIpLGU/ZShu
dWxsLGcscixpKTpHLmFwcGx5KGcscil9KX1mdW5jdGlvbiB5YShhKXtmb3IodmFyIGIsYyxlLGY9
YS5sZW5ndGgsZz1kLnJlbGF0aXZlW2FbMF0udHlwZV0saD1nfHxkLnJlbGF0aXZlWyIgIl0saT1n
PzE6MCxrPXRhKGZ1bmN0aW9uKGEpe3JldHVybiBhPT09Yn0saCwhMCksbD10YShmdW5jdGlvbihh
KXtyZXR1cm4gSShiLGEpPi0xfSxoLCEwKSxtPVtmdW5jdGlvbihhLGMsZCl7dmFyIGU9IWcmJihk
fHxjIT09ail8fCgoYj1jKS5ub2RlVHlwZT9rKGEsYyxkKTpsKGEsYyxkKSk7cmV0dXJuIGI9bnVs
bCxlfV07aTxmO2krKylpZihjPWQucmVsYXRpdmVbYVtpXS50eXBlXSltPVt0YSh1YShtKSxjKV07
ZWxzZXtpZihjPWQuZmlsdGVyW2FbaV0udHlwZV0uYXBwbHkobnVsbCxhW2ldLm1hdGNoZXMpLGNb
dV0pe2ZvcihlPSsraTtlPGY7ZSsrKWlmKGQucmVsYXRpdmVbYVtlXS50eXBlXSlicmVhaztyZXR1
cm4geGEoaT4xJiZ1YShtKSxpPjEmJnNhKGEuc2xpY2UoMCxpLTEpLmNvbmNhdCh7dmFsdWU6IiAi
PT09YVtpLTJdLnR5cGU/IioiOiIifSkpLnJlcGxhY2UoUCwiJDEiKSxjLGk8ZSYmeWEoYS5zbGlj
ZShpLGUpKSxlPGYmJnlhKGE9YS5zbGljZShlKSksZTxmJiZzYShhKSl9bS5wdXNoKGMpfXJldHVy
biB1YShtKX1mdW5jdGlvbiB6YShhLGIpe3ZhciBjPWIubGVuZ3RoPjAsZT1hLmxlbmd0aD4wLGY9
ZnVuY3Rpb24oZixnLGgsaSxrKXt2YXIgbCxvLHEscj0wLHM9IjAiLHQ9ZiYmW10sdT1bXSx2PWos
eD1mfHxlJiZkLmZpbmQuVEFHKCIqIixrKSx5PXcrPW51bGw9PXY/MTpNYXRoLnJhbmRvbSgpfHwu
MSx6PXgubGVuZ3RoO2ZvcihrJiYoaj1nPT09bnx8Z3x8ayk7cyE9PXomJm51bGwhPShsPXhbc10p
O3MrKyl7aWYoZSYmbCl7bz0wLGd8fGwub3duZXJEb2N1bWVudD09PW58fChtKGwpLGg9IXApO3do
aWxlKHE9YVtvKytdKWlmKHEobCxnfHxuLGgpKXtpLnB1c2gobCk7YnJlYWt9ayYmKHc9eSl9YyYm
KChsPSFxJiZsKSYmci0tLGYmJnQucHVzaChsKSl9aWYocis9cyxjJiZzIT09cil7bz0wO3doaWxl
KHE9YltvKytdKXEodCx1LGcsaCk7aWYoZil7aWYocj4wKXdoaWxlKHMtLSl0W3NdfHx1W3NdfHwo
dVtzXT1FLmNhbGwoaSkpO3U9d2EodSl9Ry5hcHBseShpLHUpLGsmJiFmJiZ1Lmxlbmd0aD4wJiZy
K2IubGVuZ3RoPjEmJmdhLnVuaXF1ZVNvcnQoaSl9cmV0dXJuIGsmJih3PXksaj12KSx0fTtyZXR1
cm4gYz9pYShmKTpmfWg9Z2EuY29tcGlsZT1mdW5jdGlvbihhLGIpe3ZhciBjLGQ9W10sZT1bXSxm
PUFbYSsiICJdO2lmKCFmKXtifHwoYj1nKGEpKSxjPWIubGVuZ3RoO3doaWxlKGMtLSlmPXlhKGJb
Y10pLGZbdV0/ZC5wdXNoKGYpOmUucHVzaChmKTtmPUEoYSx6YShlLGQpKSxmLnNlbGVjdG9yPWF9
cmV0dXJuIGZ9LGk9Z2Euc2VsZWN0PWZ1bmN0aW9uKGEsYixjLGUpe3ZhciBmLGksaixrLGwsbT0i
ZnVuY3Rpb24iPT10eXBlb2YgYSYmYSxuPSFlJiZnKGE9bS5zZWxlY3Rvcnx8YSk7aWYoYz1jfHxb
XSwxPT09bi5sZW5ndGgpe2lmKGk9blswXT1uWzBdLnNsaWNlKDApLGkubGVuZ3RoPjImJiJJRCI9
PT0oaj1pWzBdKS50eXBlJiY5PT09Yi5ub2RlVHlwZSYmcCYmZC5yZWxhdGl2ZVtpWzFdLnR5cGVd
KXtpZihiPShkLmZpbmQuSUQoai5tYXRjaGVzWzBdLnJlcGxhY2UoXyxhYSksYil8fFtdKVswXSwh
YilyZXR1cm4gYzttJiYoYj1iLnBhcmVudE5vZGUpLGE9YS5zbGljZShpLnNoaWZ0KCkudmFsdWUu
bGVuZ3RoKX1mPVYubmVlZHNDb250ZXh0LnRlc3QoYSk/MDppLmxlbmd0aDt3aGlsZShmLS0pe2lm
KGo9aVtmXSxkLnJlbGF0aXZlW2s9ai50eXBlXSlicmVhaztpZigobD1kLmZpbmRba10pJiYoZT1s
KGoubWF0Y2hlc1swXS5yZXBsYWNlKF8sYWEpLCQudGVzdChpWzBdLnR5cGUpJiZxYShiLnBhcmVu
dE5vZGUpfHxiKSkpe2lmKGkuc3BsaWNlKGYsMSksYT1lLmxlbmd0aCYmc2EoaSksIWEpcmV0dXJu
IEcuYXBwbHkoYyxlKSxjO2JyZWFrfX19cmV0dXJuKG18fGgoYSxuKSkoZSxiLCFwLGMsIWJ8fCQu
dGVzdChhKSYmcWEoYi5wYXJlbnROb2RlKXx8YiksY30sYy5zb3J0U3RhYmxlPXUuc3BsaXQoIiIp
LnNvcnQoQikuam9pbigiIik9PT11LGMuZGV0ZWN0RHVwbGljYXRlcz0hIWwsbSgpLGMuc29ydERl
dGFjaGVkPWphKGZ1bmN0aW9uKGEpe3JldHVybiAxJmEuY29tcGFyZURvY3VtZW50UG9zaXRpb24o
bi5jcmVhdGVFbGVtZW50KCJmaWVsZHNldCIpKX0pLGphKGZ1bmN0aW9uKGEpe3JldHVybiBhLmlu
bmVySFRNTD0iPGEgaHJlZj0nIyc+PC9hPiIsIiMiPT09YS5maXJzdENoaWxkLmdldEF0dHJpYnV0
ZSgiaHJlZiIpfSl8fGthKCJ0eXBlfGhyZWZ8aGVpZ2h0fHdpZHRoIixmdW5jdGlvbihhLGIsYyl7
aWYoIWMpcmV0dXJuIGEuZ2V0QXR0cmlidXRlKGIsInR5cGUiPT09Yi50b0xvd2VyQ2FzZSgpPzE6
Mil9KSxjLmF0dHJpYnV0ZXMmJmphKGZ1bmN0aW9uKGEpe3JldHVybiBhLmlubmVySFRNTD0iPGlu
cHV0Lz4iLGEuZmlyc3RDaGlsZC5zZXRBdHRyaWJ1dGUoInZhbHVlIiwiIiksIiI9PT1hLmZpcnN0
Q2hpbGQuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpfSl8fGthKCJ2YWx1ZSIsZnVuY3Rpb24oYSxiLGMp
e2lmKCFjJiYiaW5wdXQiPT09YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKXJldHVybiBhLmRlZmF1
bHRWYWx1ZX0pLGphKGZ1bmN0aW9uKGEpe3JldHVybiBudWxsPT1hLmdldEF0dHJpYnV0ZSgiZGlz
YWJsZWQiKX0pfHxrYShKLGZ1bmN0aW9uKGEsYixjKXt2YXIgZDtpZighYylyZXR1cm4gYVtiXT09
PSEwP2IudG9Mb3dlckNhc2UoKTooZD1hLmdldEF0dHJpYnV0ZU5vZGUoYikpJiZkLnNwZWNpZmll
ZD9kLnZhbHVlOm51bGx9KTt2YXIgQWE9YS5TaXp6bGU7Z2Eubm9Db25mbGljdD1mdW5jdGlvbigp
e3JldHVybiBhLlNpenpsZT09PWdhJiYoYS5TaXp6bGU9QWEpLGdhfSwiZnVuY3Rpb24iPT10eXBl
b2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShmdW5jdGlvbigpe3JldHVybiBnYX0pOiJ1bmRl
ZmluZWQiIT10eXBlb2YgbW9kdWxlJiZtb2R1bGUuZXhwb3J0cz9tb2R1bGUuZXhwb3J0cz1nYTph
LlNpenpsZT1nYX0od2luZG93KTsKKy8vIyBzb3VyY2VNYXBwaW5nVVJMPXNpenpsZS5taW4ubWFw
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFj
a2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9leHRlcm5hbC9zaXp6bGUvZGlzdC9zaXp6bGUubWlu
Lm1hcCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvZXh0ZXJuYWwv
c2l6emxlL2Rpc3Qvc2l6emxlLm1pbi5tYXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDMxYzFiNzhmYTYyMzI1MjBi
MTZiOWUwZWQ2YzIzZThjYWRhZTFhNAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2Jh
Y2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvZXh0ZXJuYWwvc2l6emxlL2Rpc3Qvc2l6emxlLm1p
bi5tYXAKQEAgLTAsMCArMSBAQAoreyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNpenpsZS5qcyJd
LCJuYW1lcyI6WyJ3aW5kb3ciLCJpIiwic3VwcG9ydCIsIkV4cHIiLCJnZXRUZXh0IiwiaXNYTUwi
LCJ0b2tlbml6ZSIsImNvbXBpbGUiLCJzZWxlY3QiLCJvdXRlcm1vc3RDb250ZXh0Iiwic29ydElu
cHV0IiwiaGFzRHVwbGljYXRlIiwic2V0RG9jdW1lbnQiLCJkb2N1bWVudCIsImRvY0VsZW0iLCJk
b2N1bWVudElzSFRNTCIsInJidWdneVFTQSIsInJidWdneU1hdGNoZXMiLCJtYXRjaGVzIiwiY29u
dGFpbnMiLCJleHBhbmRvIiwiRGF0ZSIsInByZWZlcnJlZERvYyIsImRpcnJ1bnMiLCJkb25lIiwi
Y2xhc3NDYWNoZSIsImNyZWF0ZUNhY2hlIiwidG9rZW5DYWNoZSIsImNvbXBpbGVyQ2FjaGUiLCJz
b3J0T3JkZXIiLCJhIiwiYiIsImhhc093biIsImhhc093blByb3BlcnR5IiwiYXJyIiwicG9wIiwi
cHVzaF9uYXRpdmUiLCJwdXNoIiwic2xpY2UiLCJpbmRleE9mIiwibGlzdCIsImVsZW0iLCJsZW4i
LCJsZW5ndGgiLCJib29sZWFucyIsIndoaXRlc3BhY2UiLCJpZGVudGlmaWVyIiwiYXR0cmlidXRl
cyIsInBzZXVkb3MiLCJyd2hpdGVzcGFjZSIsIlJlZ0V4cCIsInJ0cmltIiwicmNvbW1hIiwicmNv
bWJpbmF0b3JzIiwicmF0dHJpYnV0ZVF1b3RlcyIsInJwc2V1ZG8iLCJyaWRlbnRpZmllciIsIm1h
dGNoRXhwciIsIklEIiwiQ0xBU1MiLCJUQUciLCJBVFRSIiwiUFNFVURPIiwiQ0hJTEQiLCJib29s
IiwibmVlZHNDb250ZXh0IiwicmlucHV0cyIsInJoZWFkZXIiLCJybmF0aXZlIiwicnF1aWNrRXhw
ciIsInJzaWJsaW5nIiwicnVuZXNjYXBlIiwiZnVuZXNjYXBlIiwiXyIsImVzY2FwZWQiLCJlc2Nh
cGVkV2hpdGVzcGFjZSIsImhpZ2giLCJTdHJpbmciLCJmcm9tQ2hhckNvZGUiLCJyY3NzZXNjYXBl
IiwiZmNzc2VzY2FwZSIsImNoIiwiYXNDb2RlUG9pbnQiLCJjaGFyQ29kZUF0IiwidG9TdHJpbmci
LCJ1bmxvYWRIYW5kbGVyIiwiZGlzYWJsZWRBbmNlc3RvciIsImFkZENvbWJpbmF0b3IiLCJkaXNh
YmxlZCIsImRpciIsIm5leHQiLCJhcHBseSIsImNhbGwiLCJjaGlsZE5vZGVzIiwibm9kZVR5cGUi
LCJlIiwidGFyZ2V0IiwiZWxzIiwiaiIsIlNpenpsZSIsInNlbGVjdG9yIiwiY29udGV4dCIsInJl
c3VsdHMiLCJzZWVkIiwibSIsIm5pZCIsIm1hdGNoIiwiZ3JvdXBzIiwibmV3U2VsZWN0b3IiLCJu
ZXdDb250ZXh0Iiwib3duZXJEb2N1bWVudCIsImV4ZWMiLCJnZXRFbGVtZW50QnlJZCIsImlkIiwi
Z2V0RWxlbWVudHNCeVRhZ05hbWUiLCJnZXRFbGVtZW50c0J5Q2xhc3NOYW1lIiwicXNhIiwidGVz
dCIsIm5vZGVOYW1lIiwidG9Mb3dlckNhc2UiLCJnZXRBdHRyaWJ1dGUiLCJyZXBsYWNlIiwic2V0
QXR0cmlidXRlIiwidG9TZWxlY3RvciIsImpvaW4iLCJ0ZXN0Q29udGV4dCIsInBhcmVudE5vZGUi
LCJxdWVyeVNlbGVjdG9yQWxsIiwicXNhRXJyb3IiLCJyZW1vdmVBdHRyaWJ1dGUiLCJrZXlzIiwi
Y2FjaGUiLCJrZXkiLCJ2YWx1ZSIsImNhY2hlTGVuZ3RoIiwic2hpZnQiLCJtYXJrRnVuY3Rpb24i
LCJmbiIsImFzc2VydCIsImVsIiwiY3JlYXRlRWxlbWVudCIsInJlbW92ZUNoaWxkIiwiYWRkSGFu
ZGxlIiwiYXR0cnMiLCJoYW5kbGVyIiwic3BsaXQiLCJhdHRySGFuZGxlIiwic2libGluZ0NoZWNr
IiwiY3VyIiwiZGlmZiIsInNvdXJjZUluZGV4IiwibmV4dFNpYmxpbmciLCJjcmVhdGVJbnB1dFBz
ZXVkbyIsInR5cGUiLCJuYW1lIiwiY3JlYXRlQnV0dG9uUHNldWRvIiwiY3JlYXRlRGlzYWJsZWRQ
c2V1ZG8iLCJpc0Rpc2FibGVkIiwiY3JlYXRlUG9zaXRpb25hbFBzZXVkbyIsImFyZ3VtZW50Iiwi
bWF0Y2hJbmRleGVzIiwiZG9jdW1lbnRFbGVtZW50Iiwibm9kZSIsImhhc0NvbXBhcmUiLCJzdWJX
aW5kb3ciLCJkb2MiLCJkZWZhdWx0VmlldyIsInRvcCIsImFkZEV2ZW50TGlzdGVuZXIiLCJhdHRh
Y2hFdmVudCIsImNsYXNzTmFtZSIsImFwcGVuZENoaWxkIiwiY3JlYXRlQ29tbWVudCIsImdldEJ5
SWQiLCJnZXRFbGVtZW50c0J5TmFtZSIsImZpbHRlciIsImF0dHJJZCIsImZpbmQiLCJnZXRBdHRy
aWJ1dGVOb2RlIiwiZWxlbXMiLCJ0YWciLCJ0bXAiLCJpbm5lckhUTUwiLCJpbnB1dCIsIm1hdGNo
ZXNTZWxlY3RvciIsIndlYmtpdE1hdGNoZXNTZWxlY3RvciIsIm1vek1hdGNoZXNTZWxlY3RvciIs
Im9NYXRjaGVzU2VsZWN0b3IiLCJtc01hdGNoZXNTZWxlY3RvciIsImRpc2Nvbm5lY3RlZE1hdGNo
IiwiY29tcGFyZURvY3VtZW50UG9zaXRpb24iLCJhZG93biIsImJ1cCIsImNvbXBhcmUiLCJzb3J0
RGV0YWNoZWQiLCJhdXAiLCJhcCIsImJwIiwidW5zaGlmdCIsImV4cHIiLCJlbGVtZW50cyIsInJl
dCIsImF0dHIiLCJ2YWwiLCJ1bmRlZmluZWQiLCJzcGVjaWZpZWQiLCJlc2NhcGUiLCJzZWwiLCJl
cnJvciIsIm1zZyIsIkVycm9yIiwidW5pcXVlU29ydCIsImR1cGxpY2F0ZXMiLCJkZXRlY3REdXBs
aWNhdGVzIiwic29ydFN0YWJsZSIsInNvcnQiLCJzcGxpY2UiLCJ0ZXh0Q29udGVudCIsImZpcnN0
Q2hpbGQiLCJub2RlVmFsdWUiLCJzZWxlY3RvcnMiLCJjcmVhdGVQc2V1ZG8iLCJyZWxhdGl2ZSIs
Ij4iLCJmaXJzdCIsIiAiLCIrIiwifiIsInByZUZpbHRlciIsImV4Y2VzcyIsInVucXVvdGVkIiwi
bm9kZU5hbWVTZWxlY3RvciIsInBhdHRlcm4iLCJvcGVyYXRvciIsImNoZWNrIiwicmVzdWx0Iiwi
d2hhdCIsImxhc3QiLCJzaW1wbGUiLCJmb3J3YXJkIiwib2ZUeXBlIiwieG1sIiwidW5pcXVlQ2Fj
aGUiLCJvdXRlckNhY2hlIiwibm9kZUluZGV4Iiwic3RhcnQiLCJwYXJlbnQiLCJ1c2VDYWNoZSIs
Imxhc3RDaGlsZCIsInVuaXF1ZUlEIiwicHNldWRvIiwiYXJncyIsInNldEZpbHRlcnMiLCJpZHgi
LCJtYXRjaGVkIiwibm90IiwibWF0Y2hlciIsInVubWF0Y2hlZCIsImhhcyIsInRleHQiLCJpbm5l
clRleHQiLCJsYW5nIiwiZWxlbUxhbmciLCJoYXNoIiwibG9jYXRpb24iLCJyb290IiwiZm9jdXMi
LCJhY3RpdmVFbGVtZW50IiwiaGFzRm9jdXMiLCJocmVmIiwidGFiSW5kZXgiLCJlbmFibGVkIiwi
Y2hlY2tlZCIsInNlbGVjdGVkIiwic2VsZWN0ZWRJbmRleCIsImVtcHR5IiwiaGVhZGVyIiwiYnV0
dG9uIiwiZXEiLCJldmVuIiwib2RkIiwibHQiLCJndCIsInJhZGlvIiwiY2hlY2tib3giLCJmaWxl
IiwicGFzc3dvcmQiLCJpbWFnZSIsInN1Ym1pdCIsInJlc2V0IiwicHJvdG90eXBlIiwiZmlsdGVy
cyIsInBhcnNlT25seSIsInRva2VucyIsInNvRmFyIiwicHJlRmlsdGVycyIsImNhY2hlZCIsImNv
bWJpbmF0b3IiLCJiYXNlIiwic2tpcCIsImNoZWNrTm9uRWxlbWVudHMiLCJkb25lTmFtZSIsIm9s
ZENhY2hlIiwibmV3Q2FjaGUiLCJlbGVtZW50TWF0Y2hlciIsIm1hdGNoZXJzIiwibXVsdGlwbGVD
b250ZXh0cyIsImNvbnRleHRzIiwiY29uZGVuc2UiLCJtYXAiLCJuZXdVbm1hdGNoZWQiLCJtYXBw
ZWQiLCJzZXRNYXRjaGVyIiwicG9zdEZpbHRlciIsInBvc3RGaW5kZXIiLCJwb3N0U2VsZWN0b3Ii
LCJ0ZW1wIiwicHJlTWFwIiwicG9zdE1hcCIsInByZWV4aXN0aW5nIiwibWF0Y2hlckluIiwibWF0
Y2hlck91dCIsIm1hdGNoZXJGcm9tVG9rZW5zIiwiY2hlY2tDb250ZXh0IiwibGVhZGluZ1JlbGF0
aXZlIiwiaW1wbGljaXRSZWxhdGl2ZSIsIm1hdGNoQ29udGV4dCIsIm1hdGNoQW55Q29udGV4dCIs
ImNvbmNhdCIsIm1hdGNoZXJGcm9tR3JvdXBNYXRjaGVycyIsImVsZW1lbnRNYXRjaGVycyIsInNl
dE1hdGNoZXJzIiwiYnlTZXQiLCJieUVsZW1lbnQiLCJzdXBlck1hdGNoZXIiLCJvdXRlcm1vc3Qi
LCJtYXRjaGVkQ291bnQiLCJzZXRNYXRjaGVkIiwiY29udGV4dEJhY2t1cCIsImRpcnJ1bnNVbmlx
dWUiLCJNYXRoIiwicmFuZG9tIiwidG9rZW4iLCJjb21waWxlZCIsImRlZmF1bHRWYWx1ZSIsIl9z
aXp6bGUiLCJub0NvbmZsaWN0IiwiZGVmaW5lIiwiYW1kIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJt
YXBwaW5ncyI6IjtDQVVBLFNBQVdBLEdBRVgsR0FBSUMsR0FDSEMsRUFDQUMsRUFDQUMsRUFDQUMs
RUFDQUMsRUFDQUMsRUFDQUMsRUFDQUMsRUFDQUMsRUFDQUMsRUFHQUMsRUFDQUMsRUFDQUMsRUFD
QUMsRUFDQUMsRUFDQUMsRUFDQUMsRUFDQUMsRUFHQUMsRUFBVSxTQUFXLEVBQUksR0FBSUMsTUFD
N0JDLEVBQWV0QixFQUFPYSxTQUN0QlUsRUFBVSxFQUNWQyxFQUFPLEVBQ1BDLEVBQWFDLEtBQ2JD
LEVBQWFELEtBQ2JFLEVBQWdCRixLQUNoQkcsRUFBWSxTQUFVQyxFQUFHQyxHQUl4QixNQUhLRCxL
QUFNQyxJQUNWcEIsR0FBZSxHQUVULEdBSVJxQixLQUFjQyxlQUNkQyxLQUNBQyxFQUFNRCxFQUFJ
QyxJQUNWQyxFQUFjRixFQUFJRyxLQUNsQkEsRUFBT0gsRUFBSUcsS0FDWEMsRUFBUUosRUFBSUks
TUFHWkMsRUFBVSxTQUFVQyxFQUFNQyxHQUd6QixJQUZBLEdBQUl4QyxHQUFJLEVBQ1B5QyxFQUFN
RixFQUFLRyxPQUNKMUMsRUFBSXlDLEVBQUt6QyxJQUNoQixHQUFLdUMsRUFBS3ZDLEtBQU93QyxF
QUNoQixNQUFPeEMsRUFHVCxXQUdEMkMsRUFBVyw2SEFLWEMsRUFBYSxzQkFHYkMsRUFBYSxnQ0FH
YkMsRUFBYSxNQUFRRixFQUFhLEtBQU9DLEVBQWEsT0FBU0QsRUFFOUQsZ0JBQWtCQSxFQUVsQiwy
REFBNkRDLEVBQWEsT0FBU0QsRUFDbkYsT0FFREcsRUFBVSxLQUFPRixFQUFhLHdGQUtBQyxFQUFh
LGVBTTNDRSxFQUFjLEdBQUlDLFFBQVFMLEVBQWEsSUFBSyxLQUM1Q00sRUFBUSxHQUFJRCxRQUFR
LElBQU1MLEVBQWEsOEJBQWdDQSxFQUFhLEtBQU0sS0FFMUZPLEVBQVMsR0FBSUYsUUFBUSxJQUFN
TCxFQUFhLEtBQU9BLEVBQWEsS0FDNURRLEVBQWUsR0FBSUgsUUFBUSxJQUFNTCxFQUFhLFdBQWFB
LEVBQWEsSUFBTUEsRUFBYSxLQUUzRlMsRUFBbUIsR0FBSUosUUFBUSxJQUFNTCxFQUFhLGlCQUFt
QkEsRUFBYSxPQUFRLEtBRTFGVSxFQUFVLEdBQUlMLFFBQVFGLEdBQ3RCUSxFQUFjLEdBQUlOLFFB
QVEsSUFBTUosRUFBYSxLQUU3Q1csR0FDQ0MsR0FBTSxHQUFJUixRQUFRLE1BQVFKLEVBQWEsS0FD
dkNhLE1BQVMsR0FBSVQsUUFBUSxRQUFVSixFQUFhLEtBQzVDYyxJQUFPLEdBQUlWLFFBQVEsS0FB
T0osRUFBYSxTQUN2Q2UsS0FBUSxHQUFJWCxRQUFRLElBQU1ILEdBQzFCZSxPQUFVLEdBQUlaLFFB
QVEsSUFBTUYsR0FDNUJlLE1BQVMsR0FBSWIsUUFBUSx5REFBMkRMLEVBQy9FLCtCQUFpQ0EsRUFB
YSxjQUFnQkEsRUFDOUQsYUFBZUEsRUFBYSxTQUFVLEtBQ3ZDbUIsS0FBUSxHQUFJZCxRQUFRLE9B
QVNOLEVBQVcsS0FBTSxLQUc5Q3FCLGFBQWdCLEdBQUlmLFFBQVEsSUFBTUwsRUFBYSxtREFDOUNB
LEVBQWEsbUJBQXFCQSxFQUFhLG1CQUFvQixNQUdyRXFCLEVBQVUsc0NBQ1ZDLEVBQVUsU0FFVkMs
RUFBVSx5QkFHVkMsRUFBYSxtQ0FFYkMsRUFBVyxPQUlYQyxFQUFZLEdBQUlyQixRQUFRLHFCQUF1
QkwsRUFBYSxNQUFRQSxFQUFhLE9BQVEsTUFDekYyQixHQUFZLFNBQVVDLEVBQUdDLEVBQVNDLEdB
Q2pDLEdBQUlDLEdBQU8sS0FBT0YsRUFBVSxLQUk1QixPQUFPRSxLQUFTQSxHQUFRRCxFQUN2QkQs
RUFDQUUsRUFBTyxFQUVOQyxPQUFPQyxhQUFjRixFQUFPLE9BRTVCQyxPQUFPQyxhQUFjRixHQUFR
LEdBQUssTUFBZSxLQUFQQSxFQUFlLFFBSzVERyxHQUFhLHNEQUNiQyxHQUFhLFNBQVVDLEVBQUlD
LEdBQzFCLE1BQUtBLEdBR1EsT0FBUEQsRUFDRyxTQUlEQSxFQUFHM0MsTUFBTyxNQUFVLEtBQU8y
QyxFQUFHRSxXQUFZRixFQUFHdEMsT0FBUyxHQUFJeUMsU0FBVSxJQUFPLElBSTVFLEtBQU9ILEdB
T2ZJLEdBQWdCLFdBQ2Z6RSxLQUdEMEUsR0FBbUJDLEdBQ2xCLFNBQVU5QyxHQUNULE1BQU9BLEdB
QUsrQyxZQUFhLElBQVMsUUFBVS9DLElBQVEsU0FBV0EsTUFFOURnRCxJQUFLLGFBQWNDLEtBQU0s
VUFJN0IsS0FDQ3JELEVBQUtzRCxNQUNIekQsRUFBTUksRUFBTXNELEtBQU10RSxFQUFhdUUsWUFD
aEN2RSxFQUFhdUUsWUFJZDNELEVBQUtaLEVBQWF1RSxXQUFXbEQsUUFBU21ELFNBQ3JDLE1BQVFD
LElBQ1QxRCxHQUFTc0QsTUFBT3pELEVBQUlTLE9BR25CLFNBQVVxRCxFQUFRQyxHQUNqQjdELEVB
QVl1RCxNQUFPSyxFQUFRMUQsRUFBTXNELEtBQUtLLEtBS3ZDLFNBQVVELEVBQVFDLEdBQ2pCLEdB
QUlDLEdBQUlGLEVBQU9yRCxPQUNkMUMsRUFBSSxDQUVMLE9BQVMrRixFQUFPRSxLQUFPRCxFQUFJ
aEcsTUFDM0IrRixFQUFPckQsT0FBU3VELEVBQUksSUFLdkIsUUFBU0MsSUFBUUMsRUFBVUMsRUFB
U0MsRUFBU0MsR0FDNUMsR0FBSUMsR0FBR3ZHLEVBQUd3QyxFQUFNZ0UsRUFBS0MsRUFBT0MsRUFB
UUMsRUFDbkNDLEVBQWFSLEdBQVdBLEVBQVFTLGNBR2hDaEIsRUFBV08sRUFBVUEsRUFBUVAsU0FB
VyxDQUt6QyxJQUhBUSxFQUFVQSxNQUdlLGdCQUFiRixLQUEwQkEsR0FDeEIsSUFBYk4sR0FBK0Is
SUFBYkEsR0FBK0IsS0FBYkEsRUFFcEMsTUFBT1EsRUFJUixLQUFNQyxLQUVFRixFQUFVQSxFQUFR
UyxlQUFpQlQsRUFBVS9FLEtBQW1CVCxHQUN0RUQsRUFBYXlGLEdBRWRBLEVBQVVBLEdBQVd4RixF
QUVoQkUsR0FBaUIsQ0FJckIsR0FBa0IsS0FBYitFLElBQW9CWSxFQUFRckMsRUFBVzBDLEtBQU1Y
LElBR2pELEdBQU1JLEVBQUlFLEVBQU0sSUFHZixHQUFrQixJQUFiWixFQUFpQixDQUNyQixLQUFN
ckQsRUFBTzRELEVBQVFXLGVBQWdCUixJQVVwQyxNQUFPRixFQUxQLElBQUs3RCxFQUFLd0UsS0FB
T1QsRUFFaEIsTUFEQUYsR0FBUWpFLEtBQU1JLEdBQ1A2RCxNQVlULElBQUtPLElBQWVwRSxFQUFP
b0UsRUFBV0csZUFBZ0JSLEtBQ3JEckYsRUFBVWtGLEVBQVM1RCxJQUNuQkEsRUFBS3dFLEtBQU9U
LEVBR1osTUFEQUYsR0FBUWpFLEtBQU1JLEdBQ1A2RCxNQUtILENBQUEsR0FBS0ksRUFBTSxHQUVq
QixNQURBckUsR0FBS3NELE1BQU9XLEVBQVNELEVBQVFhLHFCQUFzQmQsSUFDNUNFLENBR0QsS0FB
TUUsRUFBSUUsRUFBTSxLQUFPeEcsRUFBUWlILHdCQUNyQ2QsRUFBUWMsdUJBR1IsTUFEQTlFLEdB
QUtzRCxNQUFPVyxFQUFTRCxFQUFRYyx1QkFBd0JYLElBQzlDRixFQUtULEdBQUtwRyxFQUFRa0gs
TUFDWHhGLEVBQWV3RSxFQUFXLFFBQ3pCcEYsSUFBY0EsRUFBVXFHLEtBQU1qQixJQUFjLENBRTlD
LEdBQWtCLElBQWJOLEVBQ0plLEVBQWFSLEVBQ2JPLEVBQWNSLE1BTVIsSUFBd0MsV0FBbkNDLEVB
QVFpQixTQUFTQyxjQUE2QixFQUduRGQsRUFBTUosRUFBUW1CLGFBQWMsT0FDakNmLEVBQU1BLEVB
QUlnQixRQUFTMUMsR0FBWUMsSUFFL0JxQixFQUFRcUIsYUFBYyxLQUFPakIsRUFBTXJGLEdBSXBD
dUYsRUFBU3JHLEVBQVU4RixHQUNuQm5HLEVBQUkwRyxFQUFPaEUsTUFDWCxPQUFRMUMsSUFDUDBH
LEVBQU8xRyxHQUFLLElBQU13RyxFQUFNLElBQU1rQixHQUFZaEIsRUFBTzFHLEdBRWxEMkcsR0FB
Y0QsRUFBT2lCLEtBQU0sS0FHM0JmLEVBQWF2QyxFQUFTK0MsS0FBTWpCLElBQWN5QixHQUFheEIs
RUFBUXlCLGFBQzlEekIsRUFHRixHQUFLTyxFQUNKLElBSUMsTUFIQXZFLEdBQUtzRCxNQUFPVyxF
QUNYTyxFQUFXa0IsaUJBQWtCbkIsSUFFdkJOLEVBQ04sTUFBUTBCLElBQ1IsUUFDSXZCLElBQVFy
RixHQUNaaUYsRUFBUTRCLGdCQUFpQixRQVMvQixNQUFPekgsR0FBUTRGLEVBQVNxQixRQUFTdEUs
RUFBTyxNQUFRa0QsRUFBU0MsRUFBU0MsR0FTbkUsUUFBUzdFLE1BQ1IsR0FBSXdHLEtBRUosU0FB
U0MsR0FBT0MsRUFBS0MsR0FNcEIsTUFKS0gsR0FBSzdGLEtBQU0rRixFQUFNLEtBQVFqSSxFQUFL
bUksbUJBRTNCSCxHQUFPRCxFQUFLSyxTQUVaSixFQUFPQyxFQUFNLEtBQVFDLEVBRTlCLE1BQU9G
LEdBT1IsUUFBU0ssSUFBY0MsR0FFdEIsTUFEQUEsR0FBSXJILElBQVksRUFDVHFILEVBT1IsUUFB
U0MsSUFBUUQsR0FDaEIsR0FBSUUsR0FBSzlILEVBQVMrSCxjQUFjLFdBRWhDLEtBQ0MsUUFBU0gs
RUFBSUUsR0FDWixNQUFPNUMsR0FDUixPQUFPLEVBQ04sUUFFSTRDLEVBQUdiLFlBQ1BhLEVBQUdi
LFdBQVdlLFlBQWFGLEdBRzVCQSxFQUFLLE1BU1AsUUFBU0csSUFBV0MsRUFBT0MsR0FDMUIsR0FB
STlHLEdBQU02RyxFQUFNRSxNQUFNLEtBQ3JCaEosRUFBSWlDLEVBQUlTLE1BRVQsT0FBUTFDLElB
Q1BFLEVBQUsrSSxXQUFZaEgsRUFBSWpDLElBQU8rSSxFQVU5QixRQUFTRyxJQUFjckgsRUFBR0Ms
R0FDekIsR0FBSXFILEdBQU1ySCxHQUFLRCxFQUNkdUgsRUFBT0QsR0FBc0IsSUFBZnRILEVBQUVn
RSxVQUFpQyxJQUFmL0QsRUFBRStELFVBQ25DaEUsRUFBRXdILFlBQWN2SCxFQUFFdUgsV0FHcEIs
SUFBS0QsRUFDSixNQUFPQSxFQUlSLElBQUtELEVBQ0osTUFBU0EsRUFBTUEsRUFBSUcsWUFDbEIs
R0FBS0gsSUFBUXJILEVBQ1osUUFLSCxPQUFPRCxHQUFJLEtBT1osUUFBUzBILElBQW1CQyxHQUMz
QixNQUFPLFVBQVVoSCxHQUNoQixHQUFJaUgsR0FBT2pILEVBQUs2RSxTQUFTQyxhQUN6QixPQUFn
QixVQUFUbUMsR0FBb0JqSCxFQUFLZ0gsT0FBU0EsR0FRM0MsUUFBU0UsSUFBb0JGLEdBQzVCLE1B
QU8sVUFBVWhILEdBQ2hCLEdBQUlpSCxHQUFPakgsRUFBSzZFLFNBQVNDLGFBQ3pCLFFBQWlCLFVB
QVRtQyxHQUE2QixXQUFUQSxJQUFzQmpILEVBQUtnSCxPQUFTQSxHQVFsRSxRQUFTRyxJQUFzQnBF
LEdBRzlCLE1BQU8sVUFBVS9DLEdBS2hCLE1BQUssUUFBVUEsR0FTVEEsRUFBS3FGLFlBQWNyRixF
QUFLK0MsWUFBYSxFQUdwQyxTQUFXL0MsR0FDVixTQUFXQSxHQUFLcUYsV0FDYnJGLEVBQUtxRixX
QUFXdEMsV0FBYUEsRUFFN0IvQyxFQUFLK0MsV0FBYUEsRUFNcEIvQyxFQUFLb0gsYUFBZXJFLEdB
STFCL0MsRUFBS29ILGNBQWdCckUsR0FDcEJGLEdBQWtCN0MsS0FBVytDLEVBR3pCL0MsRUFBSytD
LFdBQWFBLEVBS2QsU0FBVy9DLElBQ2ZBLEVBQUsrQyxXQUFhQSxHQVk1QixRQUFTc0UsSUFBd0Jy
QixHQUNoQyxNQUFPRCxJQUFhLFNBQVV1QixHQUU3QixNQURBQSxJQUFZQSxFQUNMdkIsR0FBYSxT
QUFVakMsRUFBTXJGLEdBQ25DLEdBQUlnRixHQUNIOEQsRUFBZXZCLEtBQVFsQyxFQUFLNUQsT0FB
UW9ILEdBQ3BDOUosRUFBSStKLEVBQWFySCxNQUdsQixPQUFRMUMsSUFDRnNHLEVBQU9MLEVBQUk4
RCxFQUFhL0osTUFDNUJzRyxFQUFLTCxLQUFPaEYsRUFBUWdGLEdBQUtLLEVBQUtMLFNBWW5DLFFB
QVMyQixJQUFheEIsR0FDckIsTUFBT0EsSUFBbUQsbUJBQWpDQSxHQUFRYSxzQkFBd0NiLEVBSTFF
bkcsRUFBVWlHLEdBQU9qRyxXQU9qQkcsRUFBUThGLEdBQU85RixNQUFRLFNBQVVvQyxHQUdoQyxH
QUFJd0gsR0FBa0J4SCxJQUFTQSxFQUFLcUUsZUFBaUJyRSxHQUFNd0gsZUFDM0QsU0FBT0EsR0FB
K0MsU0FBN0JBLEVBQWdCM0MsVUFRMUMxRyxFQUFjdUYsR0FBT3ZGLFlBQWMsU0FBVXNKLEdBQzVD
LEdBQUlDLEdBQVlDLEVBQ2ZDLEVBQU1ILEVBQU9BLEVBQUtwRCxlQUFpQm9ELEVBQU81SSxDQUcz
QyxPQUFLK0ksS0FBUXhKLEdBQTZCLElBQWpCd0osRUFBSXZFLFVBQW1CdUUsRUFBSUosaUJBS3BE
cEosRUFBV3dKLEVBQ1h2SixFQUFVRCxFQUFTb0osZ0JBQ25CbEosR0FBa0JWLEVBQU9RLEdBSXBC
UyxJQUFpQlQsSUFDcEJ1SixFQUFZdkosRUFBU3lKLGNBQWdCRixFQUFVRyxNQUFRSCxJQUduREEs
RUFBVUksaUJBQ2RKLEVBQVVJLGlCQUFrQixTQUFVbkYsSUFBZSxHQUcxQytFLEVBQVVLLGFBQ3JC
TCxFQUFVSyxZQUFhLFdBQVlwRixLQVVyQ25GLEVBQVE2QyxXQUFhMkYsR0FBTyxTQUFVQyxHQUVy
QyxNQURBQSxHQUFHK0IsVUFBWSxLQUNQL0IsRUFBR25CLGFBQWEsZUFPekJ0SCxFQUFRZ0gscUJB
QXVCd0IsR0FBTyxTQUFVQyxHQUUvQyxNQURBQSxHQUFHZ0MsWUFBYTlKLEVBQVMrSixjQUFjLE1B
Qy9CakMsRUFBR3pCLHFCQUFxQixLQUFLdkUsU0FJdEN6QyxFQUFRaUgsdUJBQXlCL0MsRUFBUWlE
LEtBQU14RyxFQUFTc0csd0JBTXhEakgsRUFBUTJLLFFBQVVuQyxHQUFPLFNBQVVDLEdBRWxDLE1B
REE3SCxHQUFRNkosWUFBYWhDLEdBQUsxQixHQUFLN0YsR0FDdkJQLEVBQVNpSyxvQkFBc0JqSyxF
QUFTaUssa0JBQW1CMUosR0FBVXVCLFNBSXpFekMsRUFBUTJLLFNBQ1oxSyxFQUFLNEssT0FBVyxH
QUFJLFNBQVU5RCxHQUM3QixHQUFJK0QsR0FBUy9ELEVBQUdRLFFBQVNsRCxFQUFXQyxHQUNwQyxP
QUFPLFVBQVUvQixHQUNoQixNQUFPQSxHQUFLK0UsYUFBYSxRQUFVd0QsSUFHckM3SyxFQUFLOEss
S0FBUyxHQUFJLFNBQVVoRSxFQUFJWixHQUMvQixHQUF1QyxtQkFBM0JBLEdBQVFXLGdCQUFrQ2pH
LEVBQWlCLENBQ3RFLEdBQUkwQixHQUFPNEQsRUFBUVcsZUFBZ0JDLEVBQ25DLE9BQU94RSxJQUFT
QSxVQUlsQnRDLEVBQUs0SyxPQUFXLEdBQUssU0FBVTlELEdBQzlCLEdBQUkrRCxHQUFTL0QsRUFB
R1EsUUFBU2xELEVBQVdDLEdBQ3BDLE9BQU8sVUFBVS9CLEdBQ2hCLEdBQUl5SCxHQUF3QyxtQkFB
MUJ6SCxHQUFLeUksa0JBQ3RCekksRUFBS3lJLGlCQUFpQixLQUN2QixPQUFPaEIsSUFBUUEsRUFB
SzdCLFFBQVUyQyxJQU1oQzdLLEVBQUs4SyxLQUFTLEdBQUksU0FBVWhFLEVBQUlaLEdBQy9CLEdB
QXVDLG1CQUEzQkEsR0FBUVcsZ0JBQWtDakcsRUFBaUIsQ0FDdEUsR0FBSW1KLEdBQU1qSyxFQUFH
a0wsRUFDWjFJLEVBQU80RCxFQUFRVyxlQUFnQkMsRUFFaEMsSUFBS3hFLEVBQU8sQ0FJWCxHQURB
eUgsRUFBT3pILEVBQUt5SSxpQkFBaUIsTUFDeEJoQixHQUFRQSxFQUFLN0IsUUFBVXBCLEVBQzNC
LE9BQVN4RSxFQUlWMEksR0FBUTlFLEVBQVF5RSxrQkFBbUI3RCxHQUNuQ2hILEVBQUksQ0FDSixP
QUFTd0MsRUFBTzBJLEVBQU1sTCxLQUVyQixHQURBaUssRUFBT3pILEVBQUt5SSxpQkFBaUIsTUFD
eEJoQixHQUFRQSxFQUFLN0IsUUFBVXBCLEVBQzNCLE9BQVN4RSxHQUtaLFlBTUh0QyxFQUFLOEss
S0FBVSxJQUFJL0ssRUFBUWdILHFCQUMxQixTQUFVa0UsRUFBSy9FLEdBQ2QsTUFBNkMsbUJBQWpD
QSxHQUFRYSxxQkFDWmIsRUFBUWEscUJBQXNCa0UsR0FHMUJsTCxFQUFRa0gsSUFDWmYsRUFBUTBC
LGlCQUFrQnFELEdBRDNCLFFBS1IsU0FBVUEsRUFBSy9FLEdBQ2QsR0FBSTVELEdBQ0g0SSxLQUNB
cEwsRUFBSSxFQUVKcUcsRUFBVUQsRUFBUWEscUJBQXNCa0UsRUFHekMsSUFBYSxNQUFSQSxFQUFj
LENBQ2xCLE1BQVMzSSxFQUFPNkQsRUFBUXJHLEtBQ0EsSUFBbEJ3QyxFQUFLcUQsVUFDVHVGLEVB
QUloSixLQUFNSSxFQUlaLE9BQU80SSxHQUVSLE1BQU8vRSxJQUlUbkcsRUFBSzhLLEtBQVksTUFB
SS9LLEVBQVFpSCx3QkFBMEIsU0FBVXVELEVBQVdyRSxHQUMzRSxHQUErQyxtQkFBbkNBLEdBQVFj
LHdCQUEwQ3BHLEVBQzdELE1BQU9zRixHQUFRYyx1QkFBd0J1RCxJQVV6Q3pKLEtBT0FELE1BRU1k
LEVBQVFrSCxJQUFNaEQsRUFBUWlELEtBQU14RyxFQUFTa0gscUJBRzFDVyxHQUFPLFNBQVVDLEdB
TWhCN0gsRUFBUTZKLFlBQWFoQyxHQUFLMkMsVUFBWSxVQUFZbEssRUFBVSxxQkFDMUNBLEVBQVUs
a0VBT3ZCdUgsRUFBR1osaUJBQWlCLHdCQUF3QnBGLFFBQ2hEM0IsRUFBVXFCLEtBQU0sU0FBV1Es
RUFBYSxnQkFLbkM4RixFQUFHWixpQkFBaUIsY0FBY3BGLFFBQ3ZDM0IsRUFBVXFCLEtBQU0sTUFB
UVEsRUFBYSxhQUFlRCxFQUFXLEtBSTFEK0YsRUFBR1osaUJBQWtCLFFBQVUzRyxFQUFVLE1BQU91
QixRQUNyRDNCLEVBQVVxQixLQUFLLE1BTVZzRyxFQUFHWixpQkFBaUIsWUFBWXBGLFFBQ3JDM0Is
RUFBVXFCLEtBQUssWUFNVnNHLEVBQUdaLGlCQUFrQixLQUFPM0csRUFBVSxNQUFPdUIsUUFDbEQz
QixFQUFVcUIsS0FBSyxjQUlqQnFHLEdBQU8sU0FBVUMsR0FDaEJBLEVBQUcyQyxVQUFZLG1GQUtm
LElBQUlDLEdBQVExSyxFQUFTK0gsY0FBYyxRQUNuQzJDLEdBQU03RCxhQUFjLE9BQVEsVUFDNUJp
QixFQUFHZ0MsWUFBYVksR0FBUTdELGFBQWMsT0FBUSxLQUl6Q2lCLEVBQUdaLGlCQUFpQixZQUFZ
cEYsUUFDcEMzQixFQUFVcUIsS0FBTSxPQUFTUSxFQUFhLGVBS1MsSUFBM0M4RixFQUFHWixpQkFB
aUIsWUFBWXBGLFFBQ3BDM0IsRUFBVXFCLEtBQU0sV0FBWSxhQUs3QnZCLEVBQVE2SixZQUFhaEMs
R0FBS25ELFVBQVcsRUFDWSxJQUE1Q21ELEVBQUdaLGlCQUFpQixhQUFhcEYsUUFDckMzQixFQUFV
cUIsS0FBTSxXQUFZLGFBSTdCc0csRUFBR1osaUJBQWlCLFFBQ3BCL0csRUFBVXFCLEtBQUssWUFJ
WG5DLEVBQVFzTCxnQkFBa0JwSCxFQUFRaUQsS0FBT25HLEVBQVVKLEVBQVFJLFNBQ2hFSixFQUFR
MkssdUJBQ1IzSyxFQUFRNEssb0JBQ1I1SyxFQUFRNkssa0JBQ1I3SyxFQUFROEsscUJBRVJsRCxH
QUFPLFNBQVVDLEdBR2hCekksRUFBUTJMLGtCQUFvQjNLLEVBQVEwRSxLQUFNK0MsRUFBSSxLQUk5
Q3pILEVBQVEwRSxLQUFNK0MsRUFBSSxhQUNsQjFILEVBQWNvQixLQUFNLEtBQU1XLEtBSTVCaEMs
RUFBWUEsRUFBVTJCLFFBQVUsR0FBSU8sUUFBUWxDLEVBQVU0RyxLQUFLLE1BQzNEM0csRUFBZ0JB
LEVBQWMwQixRQUFVLEdBQUlPLFFBQVFqQyxFQUFjMkcsS0FBSyxNQUl2RXVDLEVBQWEvRixFQUFR
aUQsS0FBTXZHLEVBQVFnTCx5QkFLbkMzSyxFQUFXZ0osR0FBYy9GLEVBQVFpRCxLQUFNdkcsRUFB
UUssVUFDOUMsU0FBVVcsRUFBR0MsR0FDWixHQUFJZ0ssR0FBdUIsSUFBZmpLLEVBQUVnRSxTQUFp
QmhFLEVBQUVtSSxnQkFBa0JuSSxFQUNsRGtLLEVBQU1qSyxHQUFLQSxFQUFFK0YsVUFDZCxPQUFP
aEcsS0FBTWtLLE1BQVdBLEdBQXdCLElBQWpCQSxFQUFJbEcsWUFDbENpRyxFQUFNNUssU0FDTDRL
LEVBQU01SyxTQUFVNkssR0FDaEJsSyxFQUFFZ0sseUJBQThELEdBQW5DaEssRUFBRWdLLHdCQUF5
QkUsTUFHM0QsU0FBVWxLLEVBQUdDLEdBQ1osR0FBS0EsRUFDSixNQUFTQSxFQUFJQSxFQUFFK0Ys
V0FDZCxHQUFLL0YsSUFBTUQsRUFDVixPQUFPLENBSVYsUUFBTyxHQU9URCxFQUFZc0ksRUFDWixT
QUFVckksRUFBR0MsR0FHWixHQUFLRCxJQUFNQyxFQUVWLE1BREFwQixJQUFlLEVBQ1IsQ0FJUixJ
QUFJc0wsSUFBV25LLEVBQUVnSyx5QkFBMkIvSixFQUFFK0osdUJBQzlDLE9BQUtHLEdBQ0dBLEdB
SVJBLEdBQVluSyxFQUFFZ0YsZUFBaUJoRixNQUFVQyxFQUFFK0UsZUFBaUIvRSxHQUMzREQsRUFB
RWdLLHdCQUF5Qi9KLEdBRzNCLEVBR2MsRUFBVmtLLElBQ0YvTCxFQUFRZ00sY0FBZ0JuSyxFQUFF
K0osd0JBQXlCaEssS0FBUW1LLEVBR3hEbkssSUFBTWpCLEdBQVlpQixFQUFFZ0YsZ0JBQWtCeEYs
R0FBZ0JILEVBQVNHLEVBQWNRLE1BRzdFQyxJQUFNbEIsR0FBWWtCLEVBQUUrRSxnQkFBa0J4RixH
QUFnQkgsRUFBU0csRUFBY1MsR0FDMUUsRUFJRHJCLEVBQ0o2QixFQUFTN0IsRUFBV29CLEdBQU1T
LEVBQVM3QixFQUFXcUIsR0FDaEQsRUFHZSxFQUFWa0ssS0FBbUIsSUFFM0IsU0FBVW5LLEVBQUdD
LEdBRVosR0FBS0QsSUFBTUMsRUFFVixNQURBcEIsSUFBZSxFQUNSLENBR1IsSUFBSXlJLEdBQ0hu
SixFQUFJLEVBQ0prTSxFQUFNckssRUFBRWdHLFdBQ1JrRSxFQUFNakssRUFBRStGLFdBQ1JzRSxH
QUFPdEssR0FDUHVLLEdBQU90SyxFQUdSLEtBQU1vSyxJQUFRSCxFQUNiLE1BQU9sSyxLQUFNakIs
S0FDWmtCLElBQU1sQixFQUFXLEVBQ2pCc0wsS0FDQUgsRUFBTSxFQUNOdEwsRUFDRTZCLEVBQVM3
QixFQUFXb0IsR0FBTVMsRUFBUzdCLEVBQVdxQixHQUNoRCxDQUdLLElBQUtvSyxJQUFRSCxFQUNu
QixNQUFPN0MsSUFBY3JILEVBQUdDLEVBSXpCcUgsR0FBTXRILENBQ04sT0FBU3NILEVBQU1BLEVB
QUl0QixXQUNsQnNFLEVBQUdFLFFBQVNsRCxFQUViQSxHQUFNckgsQ0FDTixPQUFTcUgsRUFBTUEs
RUFBSXRCLFdBQ2xCdUUsRUFBR0MsUUFBU2xELEVBSWIsT0FBUWdELEVBQUduTSxLQUFPb00sRUFB
R3BNLEdBQ3BCQSxHQUdELE9BQU9BLEdBRU5rSixHQUFjaUQsRUFBR25NLEdBQUlvTSxFQUFHcE0s
SUFHeEJtTSxFQUFHbk0sS0FBT3FCLEtBQ1YrSyxFQUFHcE0sS0FBT3FCLEVBQWUsRUFDekIsR0FH
S1QsR0EzWUNBLEdBOFlUc0YsR0FBT2pGLFFBQVUsU0FBVXFMLEVBQU1DLEdBQ2hDLE1BQU9yRyxJ
QUFRb0csRUFBTSxLQUFNLEtBQU1DLElBR2xDckcsR0FBT3FGLGdCQUFrQixTQUFVL0ksRUFBTThK
LEdBU3hDLElBUE85SixFQUFLcUUsZUFBaUJyRSxLQUFXNUIsR0FDdkNELEVBQWE2QixHQUlkOEos
RUFBT0EsRUFBSzlFLFFBQVNuRSxFQUFrQixVQUVsQ3BELEVBQVFzTCxpQkFBbUJ6SyxJQUM5QmEs
RUFBZTJLLEVBQU8sUUFDcEJ0TCxJQUFrQkEsRUFBY29HLEtBQU1rRixPQUN0Q3ZMLElBQWtCQSxF
QUFVcUcsS0FBTWtGLElBRXJDLElBQ0MsR0FBSUUsR0FBTXZMLEVBQVEwRSxLQUFNbkQsRUFBTThK
LEVBRzlCLElBQUtFLEdBQU92TSxFQUFRMkwsbUJBR2xCcEosRUFBSzVCLFVBQXVDLEtBQTNCNEIs
RUFBSzVCLFNBQVNpRixTQUNoQyxNQUFPMkcsR0FFUCxNQUFPMUcsSUFHVixNQUFPSSxJQUFRb0cs
RUFBTTFMLEVBQVUsTUFBUTRCLElBQVNFLE9BQVMsR0FHMUR3RCxHQUFPaEYsU0FBVyxTQUFVa0Ys
RUFBUzVELEdBS3BDLE9BSE80RCxFQUFRUyxlQUFpQlQsS0FBY3hGLEdBQzdDRCxFQUFheUYsR0FF
UGxGLEVBQVVrRixFQUFTNUQsSUFHM0IwRCxHQUFPdUcsS0FBTyxTQUFVakssRUFBTWlILElBRXRC
akgsRUFBS3FFLGVBQWlCckUsS0FBVzVCLEdBQ3ZDRCxFQUFhNkIsRUFHZCxJQUFJZ0csR0FBS3RJ
LEVBQUsrSSxXQUFZUSxFQUFLbkMsZUFFOUJvRixFQUFNbEUsR0FBTXpHLEVBQU80RCxLQUFNekYs
RUFBSytJLFdBQVlRLEVBQUtuQyxlQUM5Q2tCLEVBQUloRyxFQUFNaUgsR0FBTzNJLEdBQ2pCNkws
TUFFRixPQUFlQSxVQUFSRCxFQUNOQSxFQUNBek0sRUFBUTZDLGFBQWVoQyxFQUN0QjBCLEVBQUsr
RSxhQUFja0MsSUFDbEJpRCxFQUFNbEssRUFBS3lJLGlCQUFpQnhCLEtBQVVpRCxFQUFJRSxVQUMx
Q0YsRUFBSXRFLE1BQ0osTUFHSmxDLEdBQU8yRyxPQUFTLFNBQVVDLEdBQ3pCLE9BQVFBLEVBQU0s
SUFBSXRGLFFBQVMxQyxHQUFZQyxLQUd4Q21CLEdBQU82RyxNQUFRLFNBQVVDLEdBQ3hCLEtBQU0s
SUFBSUMsT0FBTywwQ0FBNENELElBTzlEOUcsR0FBT2dILFdBQWEsU0FBVTdHLEdBQzdCLEdBQUk3
RCxHQUNIMkssS0FDQWxILEVBQUksRUFDSmpHLEVBQUksQ0FPTCxJQUpBVSxHQUFnQlQsRUFBUW1O
LGlCQUN4QjNNLEdBQWFSLEVBQVFvTixZQUFjaEgsRUFBUWhFLE1BQU8sR0FDbERnRSxFQUFRaUgs
S0FBTTFMLEdBRVRsQixFQUFlLENBQ25CLE1BQVM4QixFQUFPNkQsRUFBUXJHLEtBQ2xCd0MsSUFB
UzZELEVBQVNyRyxLQUN0QmlHLEVBQUlrSCxFQUFXL0ssS0FBTXBDLEdBR3ZCLE9BQVFpRyxJQUNQ
SSxFQUFRa0gsT0FBUUosRUFBWWxILEdBQUssR0FRbkMsTUFGQXhGLEdBQVksS0FFTDRGLEdBT1Js
RyxFQUFVK0YsR0FBTy9GLFFBQVUsU0FBVXFDLEdBQ3BDLEdBQUl5SCxHQUNIdUMsRUFBTSxHQUNO
eE0sRUFBSSxFQUNKNkYsRUFBV3JELEVBQUtxRCxRQUVqQixJQUFNQSxHQU1DLEdBQWtCLElBQWJB
LEdBQStCLElBQWJBLEdBQStCLEtBQWJBLEVBQWtCLENBR2pFLEdBQWlDLGdCQUFyQnJELEdBQUtn
TCxZQUNoQixNQUFPaEwsR0FBS2dMLFdBR1osS0FBTWhMLEVBQU9BLEVBQUtpTCxXQUFZakwsRUFB
TUEsRUFBT0EsRUFBSzhHLFlBQy9Da0QsR0FBT3JNLEVBQVNxQyxPQUdaLElBQWtCLElBQWJxRCxH
QUErQixJQUFiQSxFQUM3QixNQUFPckQsR0FBS2tMLGNBaEJaLE9BQVN6RCxFQUFPekgsRUFBS3hD
LEtBRXBCd00sR0FBT3JNLEVBQVM4SixFQWtCbEIsT0FBT3VDLElBR1J0TSxFQUFPZ0csR0FBT3lI
LFdBR2J0RixZQUFhLEdBRWJ1RixhQUFjckYsR0FFZDlCLE1BQU9qRCxFQUVQeUYsY0FFQStCLFFB
RUE2QyxVQUNDQyxLQUFPdEksSUFBSyxhQUFjdUksT0FBTyxHQUNqQ0MsS0FBT3hJLElBQUssY0FD
WnlJLEtBQU96SSxJQUFLLGtCQUFtQnVJLE9BQU8sR0FDdENHLEtBQU8xSSxJQUFLLG9CQUdiMkks
V0FDQ3ZLLEtBQVEsU0FBVTZDLEdBVWpCLE1BVEFBLEdBQU0sR0FBS0EsRUFBTSxHQUFHZSxRQUFT
bEQsRUFBV0MsSUFHeENrQyxFQUFNLElBQU9BLEVBQU0sSUFBTUEsRUFBTSxJQUFNQSxFQUFNLElB
QU0sSUFBS2UsUUFBU2xELEVBQVdDLElBRXhELE9BQWJrQyxFQUFNLEtBQ1ZBLEVBQU0sR0FBSyxJ
QUFNQSxFQUFNLEdBQUssS0FHdEJBLEVBQU1wRSxNQUFPLEVBQUcsSUFHeEJ5QixNQUFTLFNBQVUy
QyxHQTZCbEIsTUFsQkFBLEdBQU0sR0FBS0EsRUFBTSxHQUFHYSxjQUVZLFFBQTNCYixFQUFNLEdB
QUdwRSxNQUFPLEVBQUcsSUFFakJvRSxFQUFNLElBQ1hQLEdBQU82RyxNQUFPdEcsRUFBTSxJQUty
QkEsRUFBTSxLQUFRQSxFQUFNLEdBQUtBLEVBQU0sSUFBTUEsRUFBTSxJQUFNLEdBQUssR0FBbUIs
U0FBYkEsRUFBTSxJQUE4QixRQUFiQSxFQUFNLEtBQ3pGQSxFQUFNLEtBQVVBLEVBQU0sR0FBS0Es
RUFBTSxJQUFxQixRQUFiQSxFQUFNLEtBR3BDQSxFQUFNLElBQ2pCUCxHQUFPNkcsTUFBT3RHLEVB
QU0sSUFHZEEsR0FHUjVDLE9BQVUsU0FBVTRDLEdBQ25CLEdBQUkySCxHQUNIQyxHQUFZNUgsRUFB
TSxJQUFNQSxFQUFNLEVBRS9CLE9BQUtqRCxHQUFpQixNQUFFNEQsS0FBTVgsRUFBTSxJQUM1QixN
QUlIQSxFQUFNLEdBQ1ZBLEVBQU0sR0FBS0EsRUFBTSxJQUFNQSxFQUFNLElBQU0sR0FHeEI0SCxH
QUFZL0ssRUFBUThELEtBQU1pSCxLQUVwQ0QsRUFBUy9OLEVBQVVnTyxHQUFVLE1BRTdCRCxFQUFT
QyxFQUFTL0wsUUFBUyxJQUFLK0wsRUFBUzNMLE9BQVMwTCxHQUFXQyxFQUFTM0wsVUFHdkUrRCxF
QUFNLEdBQUtBLEVBQU0sR0FBR3BFLE1BQU8sRUFBRytMLEdBQzlCM0gsRUFBTSxHQUFLNEgsRUFB
U2hNLE1BQU8sRUFBRytMLElBSXhCM0gsRUFBTXBFLE1BQU8sRUFBRyxNQUl6QnlJLFFBRUNuSCxJ
QUFPLFNBQVUySyxHQUNoQixHQUFJakgsR0FBV2lILEVBQWlCOUcsUUFBU2xELEVBQVdDLElBQVkr
QyxhQUNoRSxPQUE0QixNQUFyQmdILEVBQ04sV0FBYSxPQUFPLEdBQ3BCLFNBQVU5TCxHQUNULE1B
QU9BLEdBQUs2RSxVQUFZN0UsRUFBSzZFLFNBQVNDLGdCQUFrQkQsSUFJM0QzRCxNQUFTLFNBQVUr
RyxHQUNsQixHQUFJOEQsR0FBVS9NLEVBQVlpSixFQUFZLElBRXRDLE9BQU84RCxLQUNMQSxFQUFV
LEdBQUl0TCxRQUFRLE1BQVFMLEVBQWEsSUFBTTZILEVBQVksSUFBTTdILEVBQWEsU0FDakZwQixF
QUFZaUosRUFBVyxTQUFVakksR0FDaEMsTUFBTytMLEdBQVFuSCxLQUFnQyxnQkFBbkI1RSxHQUFL
aUksV0FBMEJqSSxFQUFLaUksV0FBMEMsbUJBQXRCakksR0FBSytFLGNBQWdDL0UsRUFBSytFLGFB
QWEsVUFBWSxPQUkxSjNELEtBQVEsU0FBVTZGLEVBQU0rRSxFQUFVQyxHQUNqQyxNQUFPLFVBQVVq
TSxHQUNoQixHQUFJa00sR0FBU3hJLEdBQU91RyxLQUFNakssRUFBTWlILEVBRWhDLE9BQWUsT0FB
VmlGLEVBQ2dCLE9BQWJGLEdBRUZBLElBSU5FLEdBQVUsR0FFVSxNQUFiRixFQUFtQkUsSUFBV0Qs
RUFDdkIsT0FBYkQsRUFBb0JFLElBQVdELEVBQ2xCLE9BQWJELEVBQW9CQyxHQUFxQyxJQUE1QkMs
RUFBT3BNLFFBQVNtTSxHQUNoQyxPQUFiRCxFQUFvQkMsR0FBU0MsRUFBT3BNLFFBQVNtTSxNQUNo
QyxPQUFiRCxFQUFvQkMsR0FBU0MsRUFBT3JNLE9BQVFvTSxFQUFNL0wsVUFBYStMLEVBQ2xELE9B
QWJELEdBQXNCLElBQU1FLEVBQU9sSCxRQUFTeEUsRUFBYSxLQUFRLEtBQU1WLFFBQVNtTSxNQUNu
RSxPQUFiRCxJQUFvQkUsSUFBV0QsR0FBU0MsRUFBT3JNLE1BQU8sRUFBR29NLEVBQU0vTCxPQUFT
LEtBQVErTCxFQUFRLFFBSzNGM0ssTUFBUyxTQUFVMEYsRUFBTW1GLEVBQU03RSxFQUFVaUUsRUFB
T2EsR0FDL0MsR0FBSUMsR0FBZ0MsUUFBdkJyRixFQUFLbkgsTUFBTyxFQUFHLEdBQzNCeU0sRUFB
K0IsU0FBckJ0RixFQUFLbkgsVUFDZjBNLEVBQWtCLFlBQVRKLENBRVYsT0FBaUIsS0FBVlosR0FB
d0IsSUFBVGEsRUFHckIsU0FBVXBNLEdBQ1QsUUFBU0EsRUFBS3FGLFlBR2YsU0FBVXJGLEVBQU00
RCxFQUFTNEksR0FDeEIsR0FBSTlHLEdBQU8rRyxFQUFhQyxFQUFZakYsRUFBTWtGLEVBQVdDLEVB
Q3BENUosRUFBTXFKLElBQVdDLEVBQVUsY0FBZ0Isa0JBQzNDTyxFQUFTN00sRUFBS3FGLFdBQ2Q0
QixFQUFPc0YsR0FBVXZNLEVBQUs2RSxTQUFTQyxjQUMvQmdJLEdBQVlOLElBQVFELEVBQ3BCM0Ys
R0FBTyxDQUVSLElBQUtpRyxFQUFTLENBR2IsR0FBS1IsRUFBUyxDQUNiLE1BQVFySixFQUFNLENB
Q2J5RSxFQUFPekgsQ0FDUCxPQUFTeUgsRUFBT0EsRUFBTXpFLEdBQ3JCLEdBQUt1SixFQUNKOUUs
RUFBSzVDLFNBQVNDLGdCQUFrQm1DLEVBQ2QsSUFBbEJRLEVBQUtwRSxTQUVMLE9BQU8sQ0FJVHVK
LEdBQVE1SixFQUFlLFNBQVRnRSxJQUFvQjRGLEdBQVMsY0FFNUMsT0FBTyxFQU1SLEdBSEFBLEdB
QVVOLEVBQVVPLEVBQU81QixXQUFhNEIsRUFBT0UsV0FHMUNULEdBQVdRLEVBQVcsQ0FLMUJyRixF
QUFPb0YsRUFDUEgsRUFBYWpGLEVBQU05SSxLQUFjOEksRUFBTTlJLE9BSXZDOE4sRUFBY0MsRUFB
WWpGLEVBQUt1RixZQUM3Qk4sRUFBWWpGLEVBQUt1RixjQUVuQnRILEVBQVErRyxFQUFhekYsT0FD
ckIyRixFQUFZakgsRUFBTyxLQUFRNUcsR0FBVzRHLEVBQU8sR0FDN0NrQixFQUFPK0YsR0FBYWpI
LEVBQU8sR0FDM0IrQixFQUFPa0YsR0FBYUUsRUFBT3pKLFdBQVl1SixFQUV2QyxPQUFTbEYsSUFB
U2tGLEdBQWFsRixHQUFRQSxFQUFNekUsS0FHM0M0RCxFQUFPK0YsRUFBWSxJQUFNQyxFQUFNbE4s
TUFHaEMsR0FBdUIsSUFBbEIrSCxFQUFLcEUsWUFBb0J1RCxHQUFRYSxJQUFTekgsRUFBTyxDQUNy
RHlNLEVBQWF6RixJQUFXbEksRUFBUzZOLEVBQVcvRixFQUM1QyxZQXVCRixJQWpCS2tHLElBRUpy
RixFQUFPekgsRUFDUDBNLEVBQWFqRixFQUFNOUksS0FBYzhJLEVBQU05SSxPQUl2QzhOLEVBQWND
LEVBQVlqRixFQUFLdUYsWUFDN0JOLEVBQVlqRixFQUFLdUYsY0FFbkJ0SCxFQUFRK0csRUFBYXpG
LE9BQ3JCMkYsRUFBWWpILEVBQU8sS0FBUTVHLEdBQVc0RyxFQUFPLEdBQzdDa0IsRUFBTytGLEdB
S0gvRixLQUFTLEVBRWIsTUFBU2EsSUFBU2tGLEdBQWFsRixHQUFRQSxFQUFNekUsS0FDM0M0RCxF
QUFPK0YsRUFBWSxJQUFNQyxFQUFNbE4sTUFFaEMsSUFBTzZNLEVBQ045RSxFQUFLNUMsU0FBU0Ms
Z0JBQWtCbUMsRUFDZCxJQUFsQlEsRUFBS3BFLGFBQ0h1RCxJQUdHa0csSUFDSkosRUFBYWpGLEVB
QU05SSxLQUFjOEksRUFBTTlJLE9BSXZDOE4sRUFBY0MsRUFBWWpGLEVBQUt1RixZQUM3Qk4sRUFB
WWpGLEVBQUt1RixjQUVuQlAsRUFBYXpGLElBQVdsSSxFQUFTOEgsSUFHN0JhLElBQVN6SCxHQUNi
LEtBU0wsT0FEQTRHLElBQVF3RixFQUNEeEYsSUFBUzJFLEdBQVczRSxFQUFPMkUsSUFBVSxHQUFL
M0UsRUFBTzJFLEdBQVMsS0FLckVsSyxPQUFVLFNBQVU0TCxFQUFRM0YsR0FLM0IsR0FBSTRGLEdB
Q0hsSCxFQUFLdEksRUFBSzZDLFFBQVMwTSxJQUFZdlAsRUFBS3lQLFdBQVlGLEVBQU9uSSxnQkFD
dERwQixHQUFPNkcsTUFBTyx1QkFBeUIwQyxFQUt6QyxPQUFLakgsR0FBSXJILEdBQ0RxSCxFQUFJ
c0IsR0FJUHRCLEVBQUc5RixPQUFTLEdBQ2hCZ04sR0FBU0QsRUFBUUEsRUFBUSxHQUFJM0YsR0FD
dEI1SixFQUFLeVAsV0FBVzNOLGVBQWdCeU4sRUFBT25JLGVBQzdDaUIsR0FBYSxTQUFVakMsRUFB
TXJGLEdBQzVCLEdBQUkyTyxHQUNIQyxFQUFVckgsRUFBSWxDLEVBQU13RCxHQUNwQjlKLEVBQUk2
UCxFQUFRbk4sTUFDYixPQUFRMUMsSUFDUDRQLEVBQU10TixFQUFTZ0UsRUFBTXVKLEVBQVE3UCxJ
QUM3QnNHLEVBQU1zSixLQUFXM08sRUFBUzJPLEdBQVFDLEVBQVE3UCxNQUc1QyxTQUFVd0MsR0FD
VCxNQUFPZ0csR0FBSWhHLEVBQU0sRUFBR2tOLEtBSWhCbEgsSUFJVHpGLFNBRUMrTSxJQUFPdkgs
R0FBYSxTQUFVcEMsR0FJN0IsR0FBSW1GLE1BQ0hqRixLQUNBMEosRUFBVXpQLEVBQVM2RixFQUFT
cUIsUUFBU3RFLEVBQU8sTUFFN0MsT0FBTzZNLEdBQVM1TyxHQUNmb0gsR0FBYSxTQUFVakMsRUFB
TXJGLEVBQVNtRixFQUFTNEksR0FDOUMsR0FBSXhNLEdBQ0h3TixFQUFZRCxFQUFTekosRUFBTSxL
QUFNMEksTUFDakNoUCxFQUFJc0csRUFBSzVELE1BR1YsT0FBUTFDLEtBQ0R3QyxFQUFPd04sRUFB
VWhRLE1BQ3RCc0csRUFBS3RHLEtBQU9pQixFQUFRakIsR0FBS3dDLE1BSTVCLFNBQVVBLEVBQU00
RCxFQUFTNEksR0FLeEIsTUFKQTFELEdBQU0sR0FBSzlJLEVBQ1h1TixFQUFTekUsRUFBTyxLQUFN
MEQsRUFBSzNJLEdBRTNCaUYsRUFBTSxHQUFLLE1BQ0hqRixFQUFRbkUsU0FJbkIrTixJQUFPMUgs
R0FBYSxTQUFVcEMsR0FDN0IsTUFBTyxVQUFVM0QsR0FDaEIsTUFBTzBELElBQVFDLEVBQVUzRCxH
QUFPRSxPQUFTLEtBSTNDeEIsU0FBWXFILEdBQWEsU0FBVTJILEdBRWxDLE1BREFBLEdBQU9BLEVB
QUsxSSxRQUFTbEQsRUFBV0MsSUFDekIsU0FBVS9CLEdBQ2hCLE9BQVNBLEVBQUtnTCxhQUFlaEws
RUFBSzJOLFdBQWFoUSxFQUFTcUMsSUFBU0YsUUFBUzROLFNBVzVFRSxLQUFRN0gsR0FBYyxTQUFV
NkgsR0FNL0IsTUFKTTdNLEdBQVk2RCxLQUFLZ0osR0FBUSxLQUM5QmxLLEdBQU82RyxNQUFPLHFC
QUF1QnFELEdBRXRDQSxFQUFPQSxFQUFLNUksUUFBU2xELEVBQVdDLElBQVkrQyxjQUNyQyxTQUFV
OUUsR0FDaEIsR0FBSTZOLEVBQ0osR0FDQyxJQUFNQSxFQUFXdlAsRUFDaEIwQixFQUFLNE4sS0FD
TDVOLEVBQUsrRSxhQUFhLGFBQWUvRSxFQUFLK0UsYUFBYSxRQUduRCxNQURBOEksR0FBV0EsRUFB
Uy9JLGNBQ2IrSSxJQUFhRCxHQUEyQyxJQUFuQ0MsRUFBUy9OLFFBQVM4TixFQUFPLFlBRTVDNU4s
RUFBT0EsRUFBS3FGLGFBQWlDLElBQWxCckYsRUFBS3FELFNBQzNDLFFBQU8sS0FLVEUsT0FBVSxT
QUFVdkQsR0FDbkIsR0FBSThOLEdBQU92USxFQUFPd1EsVUFBWXhRLEVBQU93USxTQUFTRCxJQUM5
QyxPQUFPQSxJQUFRQSxFQUFLak8sTUFBTyxLQUFRRyxFQUFLd0UsSUFHekN3SixLQUFRLFNBQVVo
TyxHQUNqQixNQUFPQSxLQUFTM0IsR0FHakI0UCxNQUFTLFNBQVVqTyxHQUNsQixNQUFPQSxLQUFT
NUIsRUFBUzhQLGlCQUFtQjlQLEVBQVMrUCxVQUFZL1AsRUFBUytQLGdCQUFrQm5PLEVBQUtnSCxN
QUFRaEgsRUFBS29PLE9BQVNwTyxFQUFLcU8sV0FJN0hDLFFBQVduSCxJQUFzQixHQUNqQ3BFLFNB
QVlvRSxJQUFzQixHQUVsQ29ILFFBQVcsU0FBVXZPLEdBR3BCLEdBQUk2RSxHQUFXN0UsRUFBSzZF
LFNBQVNDLGFBQzdCLE9BQXFCLFVBQWJELEtBQTBCN0UsRUFBS3VPLFNBQTBCLFdBQWIxSixLQUEy
QjdFLEVBQUt3TyxVQUdyRkEsU0FBWSxTQUFVeE8sR0FPckIsTUFKS0EsR0FBS3FGLFlBQ1RyRixF
QUFLcUYsV0FBV29KLGNBR1Z6TyxFQUFLd08sWUFBYSxHQUkxQkUsTUFBUyxTQUFVMU8sR0FLbEIs
SUFBTUEsRUFBT0EsRUFBS2lMLFdBQVlqTCxFQUFNQSxFQUFPQSxFQUFLOEcsWUFDL0MsR0FBSzlH
LEVBQUtxRCxTQUFXLEVBQ3BCLE9BQU8sQ0FHVCxRQUFPLEdBR1J3SixPQUFVLFNBQVU3TSxHQUNu
QixPQUFRdEMsRUFBSzZDLFFBQWUsTUFBR1AsSUFJaEMyTyxPQUFVLFNBQVUzTyxHQUNuQixNQUFP
MEIsR0FBUWtELEtBQU01RSxFQUFLNkUsV0FHM0JpRSxNQUFTLFNBQVU5SSxHQUNsQixNQUFPeUIs
R0FBUW1ELEtBQU01RSxFQUFLNkUsV0FHM0IrSixPQUFVLFNBQVU1TyxHQUNuQixHQUFJaUgsR0FB
T2pILEVBQUs2RSxTQUFTQyxhQUN6QixPQUFnQixVQUFUbUMsR0FBa0MsV0FBZGpILEVBQUtnSCxN
QUE4QixXQUFUQyxHQUd0RHlHLEtBQVEsU0FBVTFOLEdBQ2pCLEdBQUlpSyxFQUNKLE9BQXVDLFVB
QWhDakssRUFBSzZFLFNBQVNDLGVBQ04sU0FBZDlFLEVBQUtnSCxPQUltQyxPQUFyQ2lELEVBQU9q
SyxFQUFLK0UsYUFBYSxVQUEyQyxTQUF2QmtGLEVBQUtuRixnQkFJdkR5RyxNQUFTbEUsR0FBdUIs
V0FDL0IsT0FBUyxLQUdWK0UsS0FBUS9FLEdBQXVCLFNBQVVFLEVBQWNySCxHQUN0RCxPQUFTQSxF
QUFTLEtBR25CMk8sR0FBTXhILEdBQXVCLFNBQVVFLEVBQWNySCxFQUFRb0gsR0FDNUQsT0FBU0Es
RUFBVyxFQUFJQSxFQUFXcEgsRUFBU29ILEtBRzdDd0gsS0FBUXpILEdBQXVCLFNBQVVFLEVBQWNy
SCxHQUV0RCxJQURBLEdBQUkxQyxHQUFJLEVBQ0FBLEVBQUkwQyxFQUFRMUMsR0FBSyxFQUN4QitK
LEVBQWEzSCxLQUFNcEMsRUFFcEIsT0FBTytKLEtBR1J3SCxJQUFPMUgsR0FBdUIsU0FBVUUsRUFB
Y3JILEdBRXJELElBREEsR0FBSTFDLEdBQUksRUFDQUEsRUFBSTBDLEVBQVExQyxHQUFLLEVBQ3hC
K0osRUFBYTNILEtBQU1wQyxFQUVwQixPQUFPK0osS0FHUnlILEdBQU0zSCxHQUF1QixTQUFVRSxF
QUFjckgsRUFBUW9ILEdBRTVELElBREEsR0FBSTlKLEdBQUk4SixFQUFXLEVBQUlBLEVBQVdwSCxF
QUFTb0gsSUFDakM5SixHQUFLLEdBQ2QrSixFQUFhM0gsS0FBTXBDLEVBRXBCLE9BQU8rSixLQUdS
MEgsR0FBTTVILEdBQXVCLFNBQVVFLEVBQWNySCxFQUFRb0gsR0FFNUQsSUFEQSxHQUFJOUosR0FB
SThKLEVBQVcsRUFBSUEsRUFBV3BILEVBQVNvSCxJQUNqQzlKLEVBQUkwQyxHQUNicUgsRUFBYTNI
LEtBQU1wQyxFQUVwQixPQUFPK0osT0FLVjdKLEVBQUs2QyxRQUFhLElBQUk3QyxFQUFLNkMsUUFB
WSxFQUd2QyxLQUFNL0MsS0FBTzBSLE9BQU8sRUFBTUMsVUFBVSxFQUFNQyxNQUFNLEVBQU1DLFVB
QVUsRUFBTUMsT0FBTyxHQUM1RTVSLEVBQUs2QyxRQUFTL0MsR0FBTXVKLEdBQW1CdkosRUFFeEMs
S0FBTUEsS0FBTytSLFFBQVEsRUFBTUMsT0FBTyxHQUNqQzlSLEVBQUs2QyxRQUFTL0MsR0FBTTBK
LEdBQW9CMUosRUFJekMsU0FBUzJQLE9BQ1RBLEdBQVdzQyxVQUFZL1IsRUFBS2dTLFFBQVVoUyxF
QUFLNkMsUUFDM0M3QyxFQUFLeVAsV0FBYSxHQUFJQSxJQUV0QnRQLEVBQVc2RixHQUFPN0YsU0FB
VyxTQUFVOEYsRUFBVWdNLEdBQ2hELEdBQUl0QyxHQUFTcEosRUFBTzJMLEVBQVE1SSxFQUMzQjZJ
LEVBQU8zTCxFQUFRNEwsRUFDZkMsRUFBUzdRLEVBQVl5RSxFQUFXLElBRWpDLElBQUtvTSxFQUNK
LE1BQU9KLEdBQVksRUFBSUksRUFBT2xRLE1BQU8sRUFHdENnUSxHQUFRbE0sRUFDUk8sS0FDQTRM
LEVBQWFwUyxFQUFLaU8sU0FFbEIsT0FBUWtFLEVBQVEsQ0FHVHhDLEtBQVlwSixFQUFRdEQsRUFB
TzJELEtBQU11TCxNQUNqQzVMLElBRUo0TCxFQUFRQSxFQUFNaFEsTUFBT29FLEVBQU0sR0FBRy9E
LFNBQVkyUCxHQUUzQzNMLEVBQU90RSxLQUFPZ1EsT0FHZnZDLEdBQVUsR0FHSnBKLEVBQVFyRCxF
QUFhMEQsS0FBTXVMLE1BQ2hDeEMsRUFBVXBKLEVBQU02QixRQUNoQjhKLEVBQU9oUSxNQUNOZ0cs
TUFBT3lILEVBRVByRyxLQUFNL0MsRUFBTSxHQUFHZSxRQUFTdEUsRUFBTyxPQUVoQ21QLEVBQVFB
LEVBQU1oUSxNQUFPd04sRUFBUW5OLFFBSTlCLEtBQU04RyxJQUFRdEosR0FBSzRLLFNBQ1pyRSxF
QUFRakQsRUFBV2dHLEdBQU8xQyxLQUFNdUwsS0FBY0MsRUFBWTlJLE1BQzlEL0MsRUFBUTZMLEVB
QVk5SSxHQUFRL0MsTUFDN0JvSixFQUFVcEosRUFBTTZCLFFBQ2hCOEosRUFBT2hRLE1BQ05nRyxN
QUFPeUgsRUFDUHJHLEtBQU1BLEVBQ052SSxRQUFTd0YsSUFFVjRMLEVBQVFBLEVBQU1oUSxNQUFP
d04sRUFBUW5OLFFBSS9CLEtBQU1tTixFQUNMLE1BT0YsTUFBT3NDLEdBQ05FLEVBQU0zUCxPQUNO
MlAsRUFDQ25NLEdBQU82RyxNQUFPNUcsR0FFZHpFLEVBQVl5RSxFQUFVTyxHQUFTckUsTUFBTyxH
QUd6QyxTQUFTcUYsSUFBWTBLLEdBSXBCLElBSEEsR0FBSXBTLEdBQUksRUFDUHlDLEVBQU0yUCxF
QUFPMVAsT0FDYnlELEVBQVcsR0FDSm5HLEVBQUl5QyxFQUFLekMsSUFDaEJtRyxHQUFZaU0sRUFB
T3BTLEdBQUdvSSxLQUV2QixPQUFPakMsR0FHUixRQUFTYixJQUFleUssRUFBU3lDLEVBQVlDLEdB
QzVDLEdBQUlqTixHQUFNZ04sRUFBV2hOLElBQ3BCa04sRUFBT0YsRUFBVy9NLEtBQ2xCMEMsRUFB
TXVLLEdBQVFsTixFQUNkbU4sRUFBbUJGLEdBQWdCLGVBQVJ0SyxFQUMzQnlLLEVBQVdyUixHQUVa
LE9BQU9pUixHQUFXekUsTUFFakIsU0FBVXZMLEVBQU00RCxFQUFTNEksR0FDeEIsTUFBU3hNLEVB
QU9BLEVBQU1nRCxHQUNyQixHQUF1QixJQUFsQmhELEVBQUtxRCxVQUFrQjhNLEVBQzNCLE1BQU81
QyxHQUFTdk4sRUFBTTRELEVBQVM0SSxFQUdqQyxRQUFPLEdBSVIsU0FBVXhNLEVBQU00RCxFQUFT
NEksR0FDeEIsR0FBSTZELEdBQVU1RCxFQUFhQyxFQUMxQjRELEdBQWF4UixFQUFTc1IsRUFHdkIs
SUFBSzVELEdBQ0osTUFBU3hNLEVBQU9BLEVBQU1nRCxHQUNyQixJQUF1QixJQUFsQmhELEVBQUtx
RCxVQUFrQjhNLElBQ3RCNUMsRUFBU3ZOLEVBQU00RCxFQUFTNEksR0FDNUIsT0FBTyxNQUtWLE9B
QVN4TSxFQUFPQSxFQUFNZ0QsR0FDckIsR0FBdUIsSUFBbEJoRCxFQUFLcUQsVUFBa0I4TSxFQU8z
QixHQU5BekQsRUFBYTFNLEVBQU1yQixLQUFjcUIsRUFBTXJCLE9BSXZDOE4sRUFBY0MsRUFBWTFN
LEVBQUtnTixZQUFlTixFQUFZMU0sRUFBS2dOLGNBRTFEa0QsR0FBUUEsSUFBU2xRLEVBQUs2RSxT
QUFTQyxjQUNuQzlFLEVBQU9BLEVBQU1nRCxJQUFTaEQsTUFDaEIsQ0FBQSxJQUFNcVEsRUFBVzVE
LEVBQWE5RyxLQUNwQzBLLEVBQVUsS0FBUXZSLEdBQVd1UixFQUFVLEtBQVFELEVBRy9DLE1BQVFF
LEdBQVUsR0FBTUQsRUFBVSxFQU1sQyxJQUhBNUQsRUFBYTlHLEdBQVEySyxFQUdmQSxFQUFVLEdB
QU0vQyxFQUFTdk4sRUFBTTRELEVBQVM0SSxHQUM3QyxPQUFPLEVBTVosT0FBTyxHQUlWLFFBQVMr
RCxJQUFnQkMsR0FDeEIsTUFBT0EsR0FBU3RRLE9BQVMsRUFDeEIsU0FBVUYsRUFBTTRELEVBQVM0
SSxHQUN4QixHQUFJaFAsR0FBSWdULEVBQVN0USxNQUNqQixPQUFRMUMsSUFDUCxJQUFNZ1QsRUFB
U2hULEdBQUl3QyxFQUFNNEQsRUFBUzRJLEdBQ2pDLE9BQU8sQ0FHVCxRQUFPLEdBRVJnRSxFQUFT
LEdBR1gsUUFBU0MsSUFBa0I5TSxFQUFVK00sRUFBVTdNLEdBRzlDLElBRkEsR0FBSXJHLEdBQUks
RUFDUHlDLEVBQU15USxFQUFTeFEsT0FDUjFDLEVBQUl5QyxFQUFLekMsSUFDaEJrRyxHQUFRQyxF
QUFVK00sRUFBU2xULEdBQUlxRyxFQUVoQyxPQUFPQSxHQUdSLFFBQVM4TSxJQUFVbkQsRUFBV29E
LEVBQUt0SSxFQUFRMUUsRUFBUzRJLEdBT25ELElBTkEsR0FBSXhNLEdBQ0g2USxLQUNBclQsRUFB
SSxFQUNKeUMsRUFBTXVOLEVBQVV0TixPQUNoQjRRLEVBQWdCLE1BQVBGLEVBRUZwVCxFQUFJeUMs
RUFBS3pDLEtBQ1Z3QyxFQUFPd04sRUFBVWhRLE1BQ2hCOEssSUFBVUEsRUFBUXRJLEVBQU00RCxF
QUFTNEksS0FDdENxRSxFQUFhalIsS0FBTUksR0FDZDhRLEdBQ0pGLEVBQUloUixLQUFNcEMsSUFN
ZCxPQUFPcVQsR0FHUixRQUFTRSxJQUFZcEYsRUFBV2hJLEVBQVU0SixFQUFTeUQsRUFBWUMsRUFB
WUMsR0FPMUUsTUFOS0YsS0FBZUEsRUFBWXJTLEtBQy9CcVMsRUFBYUQsR0FBWUMsSUFFckJDLElB
QWVBLEVBQVl0UyxLQUMvQnNTLEVBQWFGLEdBQVlFLEVBQVlDLElBRS9CbkwsR0FBYSxTQUFVakMs
RUFBTUQsRUFBU0QsRUFBUzRJLEdBQ3JELEdBQUkyRSxHQUFNM1QsRUFBR3dDLEVBQ1pvUixLQUNB
QyxLQUNBQyxFQUFjek4sRUFBUTNELE9BR3RCd0ksRUFBUTVFLEdBQVEyTSxHQUFrQjlNLEdBQVks
SUFBS0MsRUFBUVAsVUFBYU8sR0FBWUEsTUFHcEYyTixHQUFZNUYsSUFBZTdILEdBQVNILEVBRW5D
K0UsRUFEQWlJLEdBQVVqSSxFQUFPMEksRUFBUXpGLEVBQVcvSCxFQUFTNEksR0FHOUNnRixFQUFh
akUsRUFFWjBELElBQWdCbk4sRUFBTzZILEVBQVkyRixHQUFlTixNQU1qRG5OLEVBQ0QwTixDQVFG
LElBTEtoRSxHQUNKQSxFQUFTZ0UsRUFBV0MsRUFBWTVOLEVBQVM0SSxHQUlyQ3dFLEVBQWEsQ0FD
akJHLEVBQU9SLEdBQVVhLEVBQVlILEdBQzdCTCxFQUFZRyxLQUFVdk4sRUFBUzRJLEdBRy9CaFAs
RUFBSTJULEVBQUtqUixNQUNULE9BQVExQyxLQUNEd0MsRUFBT21SLEVBQUszVCxNQUNqQmdVLEVB
QVlILEVBQVE3VCxNQUFTK1QsRUFBV0YsRUFBUTdULElBQU93QyxJQUsxRCxHQUFLOEQsR0FDSixH
QUFLbU4sR0FBY3RGLEVBQVksQ0FDOUIsR0FBS3NGLEVBQWEsQ0FFakJFLEtBQ0EzVCxFQUFJZ1Us
RUFBV3RSLE1BQ2YsT0FBUTFDLEtBQ0R3QyxFQUFPd1IsRUFBV2hVLEtBRXZCMlQsRUFBS3ZSLEtB
QU8yUixFQUFVL1QsR0FBS3dDLEVBRzdCaVIsR0FBWSxLQUFPTyxLQUFrQkwsRUFBTTNFLEdBSTVD
aFAsRUFBSWdVLEVBQVd0UixNQUNmLE9BQVExQyxLQUNEd0MsRUFBT3dSLEVBQVdoVSxNQUN0QjJU
LEVBQU9GLEVBQWFuUixFQUFTZ0UsRUFBTTlELEdBQVNvUixFQUFPNVQsU0FFcERzRyxFQUFLcU4s
S0FBVXROLEVBQVFzTixHQUFRblIsU0FPbEN3UixHQUFhYixHQUNaYSxJQUFlM04sRUFDZDJOLEVB
QVd6RyxPQUFRdUcsRUFBYUUsRUFBV3RSLFFBQzNDc1IsR0FFR1AsRUFDSkEsRUFBWSxLQUFNcE4s
RUFBUzJOLEVBQVloRixHQUV2QzVNLEVBQUtzRCxNQUFPVyxFQUFTMk4sS0FNekIsUUFBU0MsSUFB
bUI3QixHQXdCM0IsSUF2QkEsR0FBSThCLEdBQWNuRSxFQUFTOUosRUFDMUJ4RCxFQUFNMlAsRUFB
TzFQLE9BQ2J5UixFQUFrQmpVLEVBQUsyTixTQUFVdUUsRUFBTyxHQUFHNUksTUFDM0M0SyxFQUFt
QkQsR0FBbUJqVSxFQUFLMk4sU0FBUyxLQUNwRDdOLEVBQUltVSxFQUFrQixFQUFJLEVBRzFCRSxF
QUFlL08sR0FBZSxTQUFVOUMsR0FDdkMsTUFBT0EsS0FBUzBSLEdBQ2RFLEdBQWtCLEdBQ3JCRSxF
QUFrQmhQLEdBQWUsU0FBVTlDLEdBQzFDLE1BQU9GLEdBQVM0UixFQUFjMVIsT0FDNUI0UixHQUFr
QixHQUNyQnBCLEdBQWEsU0FBVXhRLEVBQU00RCxFQUFTNEksR0FDckMsR0FBSXhDLElBQVMySCxJ
QUFxQm5GLEdBQU81SSxJQUFZNUYsTUFDbkQwVCxFQUFlOU4sR0FBU1AsU0FDeEJ3TyxFQUFjN1Is
RUFBTTRELEVBQVM0SSxHQUM3QnNGLEVBQWlCOVIsRUFBTTRELEVBQVM0SSxHQUdsQyxPQURBa0Ys
R0FBZSxLQUNSMUgsSUFHRHhNLEVBQUl5QyxFQUFLekMsSUFDaEIsR0FBTStQLEVBQVU3UCxFQUFL
Mk4sU0FBVXVFLEVBQU9wUyxHQUFHd0osTUFDeEN3SixHQUFhMU4sR0FBY3lOLEdBQWdCQyxHQUFZ
akQsUUFDakQsQ0FJTixHQUhBQSxFQUFVN1AsRUFBSzRLLE9BQVFzSCxFQUFPcFMsR0FBR3dKLE1B
QU85RCxNQUFPLEtBQU0wTSxFQUFPcFMsR0FBR2lCLFNBRzFEOE8sRUFBUzVPLEdBQVksQ0FHekIs
SUFEQThFLElBQU1qRyxFQUNFaUcsRUFBSXhELEVBQUt3RCxJQUNoQixHQUFLL0YsRUFBSzJOLFNB
QVV1RSxFQUFPbk0sR0FBR3VELE1BQzdCLEtBR0YsT0FBTytKLElBQ052VCxFQUFJLEdBQUsrUyxH
QUFnQkMsR0FDekJoVCxFQUFJLEdBQUswSCxHQUVSMEssRUFBTy9QLE1BQU8sRUFBR3JDLEVBQUks
R0FBSXVVLFFBQVNuTSxNQUFnQyxNQUF6QmdLLEVBQVFwUyxFQUFJLEdBQUl3SixLQUFlLElBQU0s
TUFDN0VoQyxRQUFTdEUsRUFBTyxNQUNsQjZNLEVBQ0EvUCxFQUFJaUcsR0FBS2dPLEdBQW1CN0Is
RUFBTy9QLE1BQU9yQyxFQUFHaUcsSUFDN0NBLEVBQUl4RCxHQUFPd1IsR0FBb0I3QixFQUFTQSxF
QUFPL1AsTUFBTzRELElBQ3REQSxFQUFJeEQsR0FBT2lGLEdBQVkwSyxJQUd6QlksRUFBUzVRLEtB
QU0yTixHQUlqQixNQUFPZ0QsSUFBZ0JDLEdBR3hCLFFBQVN3QixJQUEwQkMsRUFBaUJDLEdBQ25E
LEdBQUlDLEdBQVFELEVBQVloUyxPQUFTLEVBQ2hDa1MsRUFBWUgsRUFBZ0IvUixPQUFTLEVBQ3JD
bVMsRUFBZSxTQUFVdk8sRUFBTUYsRUFBUzRJLEVBQUszSSxFQUFTeU8sR0FDckQsR0FBSXRTLEdB
QU15RCxFQUFHOEosRUFDWmdGLEVBQWUsRUFDZi9VLEVBQUksSUFDSmdRLEVBQVkxSixNQUNaME8s
S0FDQUMsRUFBZ0J6VSxFQUVoQjBLLEVBQVE1RSxHQUFRc08sR0FBYTFVLEVBQUs4SyxLQUFVLElB
QUcsSUFBSzhKLEdBRXBESSxFQUFpQjVULEdBQTRCLE1BQWpCMlQsRUFBd0IsRUFBSUUsS0FBS0Ms
VUFBWSxHQUN6RTNTLEVBQU15SSxFQUFNeEksTUFTYixLQVBLb1MsSUFDSnRVLEVBQW1CNEYsSUFB
WXhGLEdBQVl3RixHQUFXME8sR0FNL0M5VSxJQUFNeUMsR0FBNEIsT0FBcEJELEVBQU8wSSxFQUFN
bEwsSUFBYUEsSUFBTSxDQUNyRCxHQUFLNFUsR0FBYXBTLEVBQU8sQ0FDeEJ5RCxFQUFJLEVBQ0VH
LEdBQVc1RCxFQUFLcUUsZ0JBQWtCakcsSUFDdkNELEVBQWE2QixHQUNid00sR0FBT2xPLEVBRVIs
T0FBU2lQLEVBQVUwRSxFQUFnQnhPLEtBQ2xDLEdBQUs4SixFQUFTdk4sRUFBTTRELEdBQVd4RixF
QUFVb08sR0FBTyxDQUMvQzNJLEVBQVFqRSxLQUFNSSxFQUNkLE9BR0dzUyxJQUNKeFQsRUFBVTRU
LEdBS1BQLEtBRUVuUyxHQUFRdU4sR0FBV3ZOLElBQ3hCdVMsSUFJSXpPLEdBQ0owSixFQUFVNU4s
S0FBTUksSUFnQm5CLEdBVEF1UyxHQUFnQi9VLEVBU1gyVSxHQUFTM1UsSUFBTStVLEVBQWUsQ0FD
bEM5TyxFQUFJLENBQ0osT0FBUzhKLEVBQVUyRSxFQUFZek8sS0FDOUI4SixFQUFTQyxFQUFXZ0Ys
RUFBWTVPLEVBQVM0SSxFQUcxQyxJQUFLMUksRUFBTyxDQUVYLEdBQUt5TyxFQUFlLEVBQ25CLE1B
QVEvVSxJQUNBZ1EsRUFBVWhRLElBQU1nVixFQUFXaFYsS0FDakNnVixFQUFXaFYsR0FBS2tDLEVB
QUl5RCxLQUFNVSxHQU03QjJPLEdBQWE3QixHQUFVNkIsR0FJeEI1UyxFQUFLc0QsTUFBT1csRUFB
UzJPLEdBR2hCRixJQUFjeE8sR0FBUTBPLEVBQVd0UyxPQUFTLEdBQzVDcVMsRUFBZUwsRUFBWWhT
LE9BQVcsR0FFeEN3RCxHQUFPZ0gsV0FBWTdHLEdBVXJCLE1BTEt5TyxLQUNKeFQsRUFBVTRULEVB
Q1YxVSxFQUFtQnlVLEdBR2JqRixFQUdULE9BQU8yRSxHQUNOcE0sR0FBY3NNLEdBQ2RBLEVBR0Z2
VSxFQUFVNEYsR0FBTzVGLFFBQVUsU0FBVTZGLEVBQVVNLEdBQzlDLEdBQUl6RyxHQUNIMFUsS0FD
QUQsS0FDQWxDLEVBQVM1USxFQUFld0UsRUFBVyxJQUVwQyxLQUFNb00sRUFBUyxDQUVSOUwsSUFD
TEEsRUFBUXBHLEVBQVU4RixJQUVuQm5HLEVBQUl5RyxFQUFNL0QsTUFDVixPQUFRMUMsSUFDUHVT
LEVBQVMwQixHQUFtQnhOLEVBQU16RyxJQUM3QnVTLEVBQVFwUixHQUNadVQsRUFBWXRTLEtBQU1t
USxHQUVsQmtDLEVBQWdCclMsS0FBTW1RLEVBS3hCQSxHQUFTNVEsRUFBZXdFLEVBQVVxTyxHQUEw
QkMsRUFBaUJDLElBRzdFbkMsRUFBT3BNLFNBQVdBLEVBRW5CLE1BQU9vTSxJQVlSaFMsRUFBUzJG
LEdBQU8zRixPQUFTLFNBQVU0RixFQUFVQyxFQUFTQyxFQUFTQyxHQUM5RCxHQUFJdEcsR0FBR29T
LEVBQVFpRCxFQUFPN0wsRUFBTXdCLEVBQzNCc0ssRUFBK0Isa0JBQWJuUCxJQUEyQkEsRUFDN0NN
LEdBQVNILEdBQVFqRyxFQUFXOEYsRUFBV21QLEVBQVNuUCxVQUFZQSxFQU03RCxJQUpBRSxFQUFV
QSxNQUlZLElBQWpCSSxFQUFNL0QsT0FBZSxDQUl6QixHQURBMFAsRUFBUzNMLEVBQU0sR0FBS0Es
RUFBTSxHQUFHcEUsTUFBTyxHQUMvQitQLEVBQU8xUCxPQUFTLEdBQWtDLFFBQTVCMlMsRUFBUWpE
LEVBQU8sSUFBSTVJLE1BQ3ZCLElBQXJCcEQsRUFBUVAsVUFBa0IvRSxHQUFrQlosRUFBSzJOLFNB
QVV1RSxFQUFPLEdBQUc1SSxNQUFTLENBRy9FLEdBREFwRCxHQUFZbEcsRUFBSzhLLEtBQVMsR0FB
R3FLLEVBQU1wVSxRQUFRLEdBQUd1RyxRQUFRbEQsRUFBV0MsSUFBWTZCLFFBQWtCLElBQ3pGQSxF
QUNMLE1BQU9DLEVBR0lpUCxLQUNYbFAsRUFBVUEsRUFBUXlCLFlBR25CMUIsRUFBV0EsRUFBUzlE
LE1BQU8rUCxFQUFPOUosUUFBUUYsTUFBTTFGLFFBSWpEMUMsRUFBSXdELEVBQXdCLGFBQUU0RCxL
QUFNakIsR0FBYSxFQUFJaU0sRUFBTzFQLE1BQzVELE9BQVExQyxJQUFNLENBSWIsR0FIQXFWLEVB
QVFqRCxFQUFPcFMsR0FHVkUsRUFBSzJOLFNBQVdyRSxFQUFPNkwsRUFBTTdMLE1BQ2pDLEtBRUQs
S0FBTXdCLEVBQU85SyxFQUFLOEssS0FBTXhCLE1BRWpCbEQsRUFBTzBFLEVBQ1pxSyxFQUFNcFUs
UUFBUSxHQUFHdUcsUUFBU2xELEVBQVdDLElBQ3JDRixFQUFTK0MsS0FBTWdMLEVBQU8sR0FBRzVJ
LE9BQVU1QixHQUFheEIsRUFBUXlCLGFBQWdCekIsSUFDcEUsQ0FLSixHQUZBZ00sRUFBTzdFLE9B
QVF2TixFQUFHLEdBQ2xCbUcsRUFBV0csRUFBSzVELFFBQVVnRixHQUFZMEssSUFDaENqTSxFQUVM
LE1BREEvRCxHQUFLc0QsTUFBT1csRUFBU0MsR0FDZEQsQ0FHUixTQWVKLE9BUEVpUCxHQUFZaFYs
RUFBUzZGLEVBQVVNLElBQ2hDSCxFQUNBRixHQUNDdEYsRUFDRHVGLEdBQ0NELEdBQVcvQixFQUFT
K0MsS0FBTWpCLElBQWN5QixHQUFheEIsRUFBUXlCLGFBQWdCekIsR0FFeEVDLEdBTVJwRyxFQUFR
b04sV0FBYWxNLEVBQVE2SCxNQUFNLElBQUlzRSxLQUFNMUwsR0FBWStGLEtBQUssTUFBUXhHLEVB
SXRFbEIsRUFBUW1OLG1CQUFxQjFNLEVBRzdCQyxJQUlBVixFQUFRZ00sYUFBZXhELEdBQU8sU0FB
VUMsR0FFdkMsTUFBMEUsR0FBbkVBLEVBQUdtRCx3QkFBeUJqTCxFQUFTK0gsY0FBYyxlQU1yREYs
R0FBTyxTQUFVQyxHQUV0QixNQURBQSxHQUFHMkMsVUFBWSxtQkFDK0IsTUFBdkMzQyxFQUFHK0Us
V0FBV2xHLGFBQWEsV0FFbENzQixHQUFXLHlCQUEwQixTQUFVckcsRUFBTWlILEVBQU1ySixHQUMx
RCxJQUFNQSxFQUNMLE1BQU9vQyxHQUFLK0UsYUFBY2tDLEVBQTZCLFNBQXZCQSxFQUFLbkMsY0FB
MkIsRUFBSSxLQU9qRXJILEVBQVE2QyxZQUFlMkYsR0FBTyxTQUFVQyxHQUc3QyxNQUZBQSxHQUFH
MkMsVUFBWSxXQUNmM0MsRUFBRytFLFdBQVdoRyxhQUFjLFFBQVMsSUFDWSxLQUExQ2lCLEVBQUcr
RSxXQUFXbEcsYUFBYyxZQUVuQ3NCLEdBQVcsUUFBUyxTQUFVckcsRUFBTWlILEVBQU1ySixHQUN6
QyxJQUFNQSxHQUF5QyxVQUFoQ29DLEVBQUs2RSxTQUFTQyxjQUM1QixNQUFPOUUsR0FBSytTLGVB
T1Q5TSxHQUFPLFNBQVVDLEdBQ3RCLE1BQXNDLE9BQS9CQSxFQUFHbkIsYUFBYSxlQUV2QnNCLEdB
QVdsRyxFQUFVLFNBQVVILEVBQU1pSCxFQUFNckosR0FDMUMsR0FBSXNNLEVBQ0osS0FBTXRNLEVB
Q0wsTUFBT29DLEdBQU1pSCxNQUFXLEVBQU9BLEVBQUtuQyxlQUNqQ29GLEVBQU1sSyxFQUFLeUks
aUJBQWtCeEIsS0FBV2lELEVBQUlFLFVBQzdDRixFQUFJdEUsTUFDTCxNQU1KLElBQUlvTixJQUFV
elYsRUFBT21HLE1BRXJCQSxJQUFPdVAsV0FBYSxXQUtuQixNQUpLMVYsR0FBT21HLFNBQVdBLEtB
Q3RCbkcsRUFBT21HLE9BQVNzUCxJQUdWdFAsSUFHZSxrQkFBWHdQLFNBQXlCQSxPQUFPQyxJQUMz
Q0QsT0FBTyxXQUFhLE1BQU94UCxNQUVFLG1CQUFYMFAsU0FBMEJBLE9BQU9DLFFBQ25ERCxPQUFP
QyxRQUFVM1AsR0FFakJuRyxFQUFPbUcsT0FBU0EsSUFJYm5HIiwiZmlsZSI6InNpenpsZS5taW4u
anMifQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvcGFja2FnZS5qc29uIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
YmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9wYWNrYWdlLmpzb24KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWVj
NzIyMWI5YWI3ODhmZjJkN2M4ZmJkMDg3ZDhmODNhYjMwYWEyNAotLS0gL2Rldi9udWxsCisrKyBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvcGFja2FnZS5qc29uCkBA
IC0wLDAgKzEsMTY5IEBACit7CisgICJfYXJncyI6IFsKKyAgICBbCisgICAgICB7CisgICAgICAg
ICJyYXciOiAianF1ZXJ5QF4zLjEuMSIsCisgICAgICAgICJzY29wZSI6IG51bGwsCisgICAgICAg
ICJlc2NhcGVkTmFtZSI6ICJqcXVlcnkiLAorICAgICAgICAibmFtZSI6ICJqcXVlcnkiLAorICAg
ICAgICAicmF3U3BlYyI6ICJeMy4xLjEiLAorICAgICAgICAic3BlYyI6ICI+PTMuMS4xIDw0LjAu
MCIsCisgICAgICAgICJ0eXBlIjogInJhbmdlIgorICAgICAgfSwKKyAgICAgICIvVXNlcnMvYWRk
eW8vcHJvamVjdHMvc3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2JhY2tib25lIgorICAgIF0KKyAgXSwKKyAgIl9mcm9tIjogImpxdWVyeUA+PTMuMS4x
IDw0LjAuMCIsCisgICJfaWQiOiAianF1ZXJ5QDMuMS4xIiwKKyAgIl9pbkNhY2hlIjogdHJ1ZSwK
KyAgIl9sb2NhdGlvbiI6ICIvanF1ZXJ5IiwKKyAgIl9ub2RlVmVyc2lvbiI6ICI2LjYuMCIsCisg
ICJfbnBtT3BlcmF0aW9uYWxJbnRlcm5hbCI6IHsKKyAgICAiaG9zdCI6ICJwYWNrYWdlcy0xMi13
ZXN0LmludGVybmFsLm5wbWpzLmNvbSIsCisgICAgInRtcCI6ICJ0bXAvanF1ZXJ5LTMuMS4xLnRn
el8xNDc0NTgzNTY2OTU3XzAuMTU0NzM0MjAxOTYyMTI4MjgiCisgIH0sCisgICJfbnBtVXNlciI6
IHsKKyAgICAibmFtZSI6ICJ0aW1teXdpbCIsCisgICAgImVtYWlsIjogIjR0aW1teXdpbEBnbWFp
bC5jb20iCisgIH0sCisgICJfbnBtVmVyc2lvbiI6ICIzLjEwLjMiLAorICAiX3BoYW50b21DaGls
ZHJlbiI6IHt9LAorICAiX3JlcXVlc3RlZCI6IHsKKyAgICAicmF3IjogImpxdWVyeUBeMy4xLjEi
LAorICAgICJzY29wZSI6IG51bGwsCisgICAgImVzY2FwZWROYW1lIjogImpxdWVyeSIsCisgICAg
Im5hbWUiOiAianF1ZXJ5IiwKKyAgICAicmF3U3BlYyI6ICJeMy4xLjEiLAorICAgICJzcGVjIjog
Ij49My4xLjEgPDQuMC4wIiwKKyAgICAidHlwZSI6ICJyYW5nZSIKKyAgfSwKKyAgIl9yZXF1aXJl
ZEJ5IjogWworICAgICIvIgorICBdLAorICAiX3Jlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnku
bnBtanMub3JnL2pxdWVyeS8tL2pxdWVyeS0zLjEuMS50Z3oiLAorICAiX3NoYXN1bSI6ICIzNDdj
MWMyMWM3ZTAwNDExNWUwYTRkYTMyY2VjZTA0MWZhZDNjOGEzIiwKKyAgIl9zaHJpbmt3cmFwIjog
bnVsbCwKKyAgIl9zcGVjIjogImpxdWVyeUBeMy4xLjEiLAorICAiX3doZXJlIjogIi9Vc2Vycy9h
ZGR5by9wcm9qZWN0cy9zcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvYmFja2JvbmUiLAorICAiYXV0aG9yIjogeworICAgICJuYW1lIjogImpRdWVyeSBG
b3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnMiLAorICAgICJ1cmwiOiAiaHR0cHM6Ly9n
aXRodWIuY29tL2pxdWVyeS9qcXVlcnkvYmxvYi8zLjEuMS9BVVRIT1JTLnR4dCIKKyAgfSwKKyAg
ImJ1Z3MiOiB7CisgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vanF1ZXJ5L2pxdWVyeS9p
c3N1ZXMiCisgIH0sCisgICJjb21taXRwbGVhc2UiOiB7CisgICAgIm5vaG9vayI6IHRydWUsCisg
ICAgImNvbXBvbmVudHMiOiBbCisgICAgICAiRG9jcyIsCisgICAgICAiVGVzdHMiLAorICAgICAg
IkJ1aWxkIiwKKyAgICAgICJTdXBwb3J0IiwKKyAgICAgICJSZWxlYXNlIiwKKyAgICAgICJDb3Jl
IiwKKyAgICAgICJBamF4IiwKKyAgICAgICJBdHRyaWJ1dGVzIiwKKyAgICAgICJDYWxsYmFja3Mi
LAorICAgICAgIkNTUyIsCisgICAgICAiRGF0YSIsCisgICAgICAiRGVmZXJyZWQiLAorICAgICAg
IkRlcHJlY2F0ZWQiLAorICAgICAgIkRpbWVuc2lvbnMiLAorICAgICAgIkVmZmVjdHMiLAorICAg
ICAgIkV2ZW50IiwKKyAgICAgICJNYW5pcHVsYXRpb24iLAorICAgICAgIk9mZnNldCIsCisgICAg
ICAiUXVldWUiLAorICAgICAgIlNlbGVjdG9yIiwKKyAgICAgICJTZXJpYWxpemUiLAorICAgICAg
IlRyYXZlcnNpbmciLAorICAgICAgIldyYXAiCisgICAgXSwKKyAgICAibWFya2VyUGF0dGVybiI6
ICJeKChjbG9zfGZpeHxyZXNvbHYpKGVbc2RdfGluZykpfChyZWZzPykiLAorICAgICJ0aWNrZXRQ
YXR0ZXJuIjogIl4oKENsb3Nlc3xGaXhlcykgKFthLXpBLVpdezIsfS0pWzAtOV0rKXwoUmVmcz8g
W14jXSkiCisgIH0sCisgICJkZXBlbmRlbmNpZXMiOiB7fSwKKyAgImRlc2NyaXB0aW9uIjogIkph
dmFTY3JpcHQgbGlicmFyeSBmb3IgRE9NIG9wZXJhdGlvbnMiLAorICAiZGV2RGVwZW5kZW5jaWVz
IjogeworICAgICJiYWJlbC1wcmVzZXQtZXMyMDE1IjogIjYuNi4wIiwKKyAgICAiY29tbWl0cGxl
YXNlIjogIjIuNi4xIiwKKyAgICAiY29yZS1qcyI6ICIyLjIuMiIsCisgICAgImNyb3NzLXNwYXdu
IjogIjIuMi4zIiwKKyAgICAiZXNsaW50LWNvbmZpZy1qcXVlcnkiOiAiMS4wLjAiLAorICAgICJn
cnVudCI6ICIxLjAuMSIsCisgICAgImdydW50LWJhYmVsIjogIjYuMC4wIiwKKyAgICAiZ3J1bnQt
Y2xpIjogIjEuMi4wIiwKKyAgICAiZ3J1bnQtY29tcGFyZS1zaXplIjogIjAuNC4yIiwKKyAgICAi
Z3J1bnQtY29udHJpYi11Z2xpZnkiOiAiMS4wLjEiLAorICAgICJncnVudC1jb250cmliLXdhdGNo
IjogIjEuMC4wIiwKKyAgICAiZ3J1bnQtZXNsaW50IjogIjE5LjAuMCIsCisgICAgImdydW50LWdp
dC1hdXRob3JzIjogIjMuMi4wIiwKKyAgICAiZ3J1bnQtanNvbmxpbnQiOiAiMS4wLjciLAorICAg
ICJncnVudC1uZXdlciI6ICIxLjIuMCIsCisgICAgImdydW50LW5wbWNvcHkiOiAiMC4xLjAiLAor
ICAgICJnemlwLWpzIjogIjAuMy4yIiwKKyAgICAiaHVza3kiOiAiMC4xMS40IiwKKyAgICAiaW5z
aWdodCI6ICIwLjguMSIsCisgICAgImpzZG9tIjogIjUuNi4xIiwKKyAgICAibG9hZC1ncnVudC10
YXNrcyI6ICIzLjUuMCIsCisgICAgIm5hdGl2ZS1wcm9taXNlLW9ubHkiOiAiMC44LjEiLAorICAg
ICJwcm9taXNlcy1hcGx1cy10ZXN0cyI6ICIyLjEuMiIsCisgICAgInEiOiAiMS40LjEiLAorICAg
ICJxdW5pdC1hc3NlcnQtc3RlcCI6ICIxLjAuMyIsCisgICAgInF1bml0anMiOiAiMS4yMy4xIiwK
KyAgICAicmVxdWlyZWpzIjogIjIuMi4wIiwKKyAgICAic2lub24iOiAiMS4xNy4zIiwKKyAgICAi
c2l6emxlIjogIjIuMy4zIiwKKyAgICAic3RyaXAtanNvbi1jb21tZW50cyI6ICIyLjAuMSIsCisg
ICAgInRlc3Rzd2FybSI6ICIxLjEuMCIKKyAgfSwKKyAgImRpcmVjdG9yaWVzIjoge30sCisgICJk
aXN0IjogeworICAgICJzaGFzdW0iOiAiMzQ3YzFjMjFjN2UwMDQxMTVlMGE0ZGEzMmNlY2UwNDFm
YWQzYzhhMyIsCisgICAgInRhcmJhbGwiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvanF1
ZXJ5Ly0vanF1ZXJ5LTMuMS4xLnRneiIKKyAgfSwKKyAgImdpdEhlYWQiOiAiMWIzMGYzYWQ0NjZl
YmYyNzE0ZDQ3ZWRhMzRkYmQ3ZmRmNjg0OWZlMyIsCisgICJob21lcGFnZSI6ICJodHRwczovL2px
dWVyeS5jb20iLAorICAia2V5d29yZHMiOiBbCisgICAgImpxdWVyeSIsCisgICAgImphdmFzY3Jp
cHQiLAorICAgICJicm93c2VyIiwKKyAgICAibGlicmFyeSIKKyAgXSwKKyAgImxpY2Vuc2UiOiAi
TUlUIiwKKyAgIm1haW4iOiAiZGlzdC9qcXVlcnkuanMiLAorICAibWFpbnRhaW5lcnMiOiBbCisg
ICAgeworICAgICAgIm5hbWUiOiAiZG1ldGh2aW4iLAorICAgICAgImVtYWlsIjogImRhdmUubWV0
aHZpbkBnbWFpbC5jb20iCisgICAgfSwKKyAgICB7CisgICAgICAibmFtZSI6ICJzY290dC5nb256
YWxleiIsCisgICAgICAiZW1haWwiOiAic2NvdHQuZ29uemFsZXpAZ21haWwuY29tIgorICAgIH0s
CisgICAgeworICAgICAgIm5hbWUiOiAibV9nb2wiLAorICAgICAgImVtYWlsIjogIm0uZ29sZWJA
Z21haWwuY29tIgorICAgIH0sCisgICAgeworICAgICAgIm5hbWUiOiAidGltbXl3aWwiLAorICAg
ICAgImVtYWlsIjogInRpbW15d2lsbGlzbkBnbWFpbC5jb20iCisgICAgfQorICBdLAorICAibmFt
ZSI6ICJqcXVlcnkiLAorICAib3B0aW9uYWxEZXBlbmRlbmNpZXMiOiB7fSwKKyAgInJlYWRtZSI6
ICJFUlJPUjogTm8gUkVBRE1FIGRhdGEgZm91bmQhIiwKKyAgInJlcG9zaXRvcnkiOiB7CisgICAg
InR5cGUiOiAiZ2l0IiwKKyAgICAidXJsIjogImdpdCtodHRwczovL2dpdGh1Yi5jb20vanF1ZXJ5
L2pxdWVyeS5naXQiCisgIH0sCisgICJzY3JpcHRzIjogeworICAgICJidWlsZCI6ICJucG0gaW5z
dGFsbCAmJiBncnVudCIsCisgICAgImNvbW1pdG1zZyI6ICJub2RlIG5vZGVfbW9kdWxlcy9jb21t
aXRwbGVhc2UiLAorICAgICJwcmVjb21taXQiOiAiZ3J1bnQgbGludDpuZXdlciIsCisgICAgInN0
YXJ0IjogImdydW50IHdhdGNoIiwKKyAgICAidGVzdCI6ICJncnVudCAmJiBncnVudCB0ZXN0OnNs
b3ciCisgIH0sCisgICJ0aXRsZSI6ICJqUXVlcnkiLAorICAidmVyc2lvbiI6ICIzLjEuMSIKK30K
ZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3Jj
L2FqYXguanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9h
amF4LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjU2NjMyZTY5NGVjMzhhMWRiNjJiOWI5Yzc3ZjM1OGIzZGU2MmM1
M2YKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMv
anF1ZXJ5L3NyYy9hamF4LmpzCkBAIC0wLDAgKzEsODU1IEBACitkZWZpbmUoIFsKKyAgICAiLi9j
b3JlIiwKKyAgICAiLi92YXIvZG9jdW1lbnQiLAorICAgICIuL3Zhci9ybm90aHRtbHdoaXRlIiwK
KyAgICAiLi9hamF4L3Zhci9sb2NhdGlvbiIsCisgICAgIi4vYWpheC92YXIvbm9uY2UiLAorICAg
ICIuL2FqYXgvdmFyL3JxdWVyeSIsCisKKyAgICAiLi9jb3JlL2luaXQiLAorICAgICIuL2FqYXgv
cGFyc2VYTUwiLAorICAgICIuL2V2ZW50L3RyaWdnZXIiLAorICAgICIuL2RlZmVycmVkIiwKKyAg
ICAiLi9zZXJpYWxpemUiIC8vIGpRdWVyeS5wYXJhbQorXSwgZnVuY3Rpb24oIGpRdWVyeSwgZG9j
dW1lbnQsIHJub3RodG1sd2hpdGUsIGxvY2F0aW9uLCBub25jZSwgcnF1ZXJ5ICkgeworCisidXNl
IHN0cmljdCI7CisKK3ZhcgorICAgIHIyMCA9IC8lMjAvZywKKyAgICByaGFzaCA9IC8jLiokLywK
KyAgICByYW50aUNhY2hlID0gLyhbPyZdKV89W14mXSovLAorICAgIHJoZWFkZXJzID0gL14oLio/
KTpbIFx0XSooW15cclxuXSopJC9tZywKKworICAgIC8vICM3NjUzLCAjODEyNSwgIzgxNTI6IGxv
Y2FsIHByb3RvY29sIGRldGVjdGlvbgorICAgIHJsb2NhbFByb3RvY29sID0gL14oPzphYm91dHxh
cHB8YXBwLXN0b3JhZ2V8ListZXh0ZW5zaW9ufGZpbGV8cmVzfHdpZGdldCk6JC8sCisgICAgcm5v
Q29udGVudCA9IC9eKD86R0VUfEhFQUQpJC8sCisgICAgcnByb3RvY29sID0gL15cL1wvLywKKwor
ICAgIC8qIFByZWZpbHRlcnMKKyAgICAgKiAxKSBUaGV5IGFyZSB1c2VmdWwgdG8gaW50cm9kdWNl
IGN1c3RvbSBkYXRhVHlwZXMgKHNlZSBhamF4L2pzb25wLmpzIGZvciBhbiBleGFtcGxlKQorICAg
ICAqIDIpIFRoZXNlIGFyZSBjYWxsZWQ6CisgICAgICogICAgLSBCRUZPUkUgYXNraW5nIGZvciBh
IHRyYW5zcG9ydAorICAgICAqICAgIC0gQUZURVIgcGFyYW0gc2VyaWFsaXphdGlvbiAocy5kYXRh
IGlzIGEgc3RyaW5nIGlmIHMucHJvY2Vzc0RhdGEgaXMgdHJ1ZSkKKyAgICAgKiAzKSBrZXkgaXMg
dGhlIGRhdGFUeXBlCisgICAgICogNCkgdGhlIGNhdGNoYWxsIHN5bWJvbCAiKiIgY2FuIGJlIHVz
ZWQKKyAgICAgKiA1KSBleGVjdXRpb24gd2lsbCBzdGFydCB3aXRoIHRyYW5zcG9ydCBkYXRhVHlw
ZSBhbmQgVEhFTiBjb250aW51ZSBkb3duIHRvICIqIiBpZiBuZWVkZWQKKyAgICAgKi8KKyAgICBw
cmVmaWx0ZXJzID0ge30sCisKKyAgICAvKiBUcmFuc3BvcnRzIGJpbmRpbmdzCisgICAgICogMSkg
a2V5IGlzIHRoZSBkYXRhVHlwZQorICAgICAqIDIpIHRoZSBjYXRjaGFsbCBzeW1ib2wgIioiIGNh
biBiZSB1c2VkCisgICAgICogMykgc2VsZWN0aW9uIHdpbGwgc3RhcnQgd2l0aCB0cmFuc3BvcnQg
ZGF0YVR5cGUgYW5kIFRIRU4gZ28gdG8gIioiIGlmIG5lZWRlZAorICAgICAqLworICAgIHRyYW5z
cG9ydHMgPSB7fSwKKworICAgIC8vIEF2b2lkIGNvbW1lbnQtcHJvbG9nIGNoYXIgc2VxdWVuY2Ug
KCMxMDA5OCk7IG11c3QgYXBwZWFzZSBsaW50IGFuZCBldmFkZSBjb21wcmVzc2lvbgorICAgIGFs
bFR5cGVzID0gIiovIi5jb25jYXQoICIqIiApLAorCisgICAgLy8gQW5jaG9yIHRhZyBmb3IgcGFy
c2luZyB0aGUgZG9jdW1lbnQgb3JpZ2luCisgICAgb3JpZ2luQW5jaG9yID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCggImEiICk7CisgICAgb3JpZ2luQW5jaG9yLmhyZWYgPSBsb2NhdGlvbi5ocmVm
OworCisvLyBCYXNlICJjb25zdHJ1Y3RvciIgZm9yIGpRdWVyeS5hamF4UHJlZmlsdGVyIGFuZCBq
UXVlcnkuYWpheFRyYW5zcG9ydAorZnVuY3Rpb24gYWRkVG9QcmVmaWx0ZXJzT3JUcmFuc3BvcnRz
KCBzdHJ1Y3R1cmUgKSB7CisKKyAgICAvLyBkYXRhVHlwZUV4cHJlc3Npb24gaXMgb3B0aW9uYWwg
YW5kIGRlZmF1bHRzIHRvICIqIgorICAgIHJldHVybiBmdW5jdGlvbiggZGF0YVR5cGVFeHByZXNz
aW9uLCBmdW5jICkgeworCisgICAgICAgIGlmICggdHlwZW9mIGRhdGFUeXBlRXhwcmVzc2lvbiAh
PT0gInN0cmluZyIgKSB7CisgICAgICAgICAgICBmdW5jID0gZGF0YVR5cGVFeHByZXNzaW9uOwor
ICAgICAgICAgICAgZGF0YVR5cGVFeHByZXNzaW9uID0gIioiOworICAgICAgICB9CisKKyAgICAg
ICAgdmFyIGRhdGFUeXBlLAorICAgICAgICAgICAgaSA9IDAsCisgICAgICAgICAgICBkYXRhVHlw
ZXMgPSBkYXRhVHlwZUV4cHJlc3Npb24udG9Mb3dlckNhc2UoKS5tYXRjaCggcm5vdGh0bWx3aGl0
ZSApIHx8IFtdOworCisgICAgICAgIGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIGZ1bmMgKSApIHsK
KworICAgICAgICAgICAgLy8gRm9yIGVhY2ggZGF0YVR5cGUgaW4gdGhlIGRhdGFUeXBlRXhwcmVz
c2lvbgorICAgICAgICAgICAgd2hpbGUgKCAoIGRhdGFUeXBlID0gZGF0YVR5cGVzWyBpKysgXSAp
ICkgeworCisgICAgICAgICAgICAgICAgLy8gUHJlcGVuZCBpZiByZXF1ZXN0ZWQKKyAgICAgICAg
ICAgICAgICBpZiAoIGRhdGFUeXBlWyAwIF0gPT09ICIrIiApIHsKKyAgICAgICAgICAgICAgICAg
ICAgZGF0YVR5cGUgPSBkYXRhVHlwZS5zbGljZSggMSApIHx8ICIqIjsKKyAgICAgICAgICAgICAg
ICAgICAgKCBzdHJ1Y3R1cmVbIGRhdGFUeXBlIF0gPSBzdHJ1Y3R1cmVbIGRhdGFUeXBlIF0gfHwg
W10gKS51bnNoaWZ0KCBmdW5jICk7CisKKyAgICAgICAgICAgICAgICAvLyBPdGhlcndpc2UgYXBw
ZW5kCisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgKCBzdHJ1
Y3R1cmVbIGRhdGFUeXBlIF0gPSBzdHJ1Y3R1cmVbIGRhdGFUeXBlIF0gfHwgW10gKS5wdXNoKCBm
dW5jICk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fTsKK30KKworLy8gQmFzZSBpbnNwZWN0aW9uIGZ1bmN0aW9uIGZvciBwcmVmaWx0ZXJzIGFuZCB0
cmFuc3BvcnRzCitmdW5jdGlvbiBpbnNwZWN0UHJlZmlsdGVyc09yVHJhbnNwb3J0cyggc3RydWN0
dXJlLCBvcHRpb25zLCBvcmlnaW5hbE9wdGlvbnMsIGpxWEhSICkgeworCisgICAgdmFyIGluc3Bl
Y3RlZCA9IHt9LAorICAgICAgICBzZWVraW5nVHJhbnNwb3J0ID0gKCBzdHJ1Y3R1cmUgPT09IHRy
YW5zcG9ydHMgKTsKKworICAgIGZ1bmN0aW9uIGluc3BlY3QoIGRhdGFUeXBlICkgeworICAgICAg
ICB2YXIgc2VsZWN0ZWQ7CisgICAgICAgIGluc3BlY3RlZFsgZGF0YVR5cGUgXSA9IHRydWU7Cisg
ICAgICAgIGpRdWVyeS5lYWNoKCBzdHJ1Y3R1cmVbIGRhdGFUeXBlIF0gfHwgW10sIGZ1bmN0aW9u
KCBfLCBwcmVmaWx0ZXJPckZhY3RvcnkgKSB7CisgICAgICAgICAgICB2YXIgZGF0YVR5cGVPclRy
YW5zcG9ydCA9IHByZWZpbHRlck9yRmFjdG9yeSggb3B0aW9ucywgb3JpZ2luYWxPcHRpb25zLCBq
cVhIUiApOworICAgICAgICAgICAgaWYgKCB0eXBlb2YgZGF0YVR5cGVPclRyYW5zcG9ydCA9PT0g
InN0cmluZyIgJiYKKyAgICAgICAgICAgICAgICAhc2Vla2luZ1RyYW5zcG9ydCAmJiAhaW5zcGVj
dGVkWyBkYXRhVHlwZU9yVHJhbnNwb3J0IF0gKSB7CisKKyAgICAgICAgICAgICAgICBvcHRpb25z
LmRhdGFUeXBlcy51bnNoaWZ0KCBkYXRhVHlwZU9yVHJhbnNwb3J0ICk7CisgICAgICAgICAgICAg
ICAgaW5zcGVjdCggZGF0YVR5cGVPclRyYW5zcG9ydCApOworICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoIHNlZWtpbmdUcmFuc3BvcnQgKSB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuICEoIHNlbGVjdGVkID0gZGF0YVR5cGVPclRyYW5zcG9ydCAp
OworICAgICAgICAgICAgfQorICAgICAgICB9ICk7CisgICAgICAgIHJldHVybiBzZWxlY3RlZDsK
KyAgICB9CisKKyAgICByZXR1cm4gaW5zcGVjdCggb3B0aW9ucy5kYXRhVHlwZXNbIDAgXSApIHx8
ICFpbnNwZWN0ZWRbICIqIiBdICYmIGluc3BlY3QoICIqIiApOworfQorCisvLyBBIHNwZWNpYWwg
ZXh0ZW5kIGZvciBhamF4IG9wdGlvbnMKKy8vIHRoYXQgdGFrZXMgImZsYXQiIG9wdGlvbnMgKG5v
dCB0byBiZSBkZWVwIGV4dGVuZGVkKQorLy8gRml4ZXMgIzk4ODcKK2Z1bmN0aW9uIGFqYXhFeHRl
bmQoIHRhcmdldCwgc3JjICkgeworICAgIHZhciBrZXksIGRlZXAsCisgICAgICAgIGZsYXRPcHRp
b25zID0galF1ZXJ5LmFqYXhTZXR0aW5ncy5mbGF0T3B0aW9ucyB8fCB7fTsKKworICAgIGZvciAo
IGtleSBpbiBzcmMgKSB7CisgICAgICAgIGlmICggc3JjWyBrZXkgXSAhPT0gdW5kZWZpbmVkICkg
eworICAgICAgICAgICAgKCBmbGF0T3B0aW9uc1sga2V5IF0gPyB0YXJnZXQgOiAoIGRlZXAgfHwg
KCBkZWVwID0ge30gKSApIClbIGtleSBdID0gc3JjWyBrZXkgXTsKKyAgICAgICAgfQorICAgIH0K
KyAgICBpZiAoIGRlZXAgKSB7CisgICAgICAgIGpRdWVyeS5leHRlbmQoIHRydWUsIHRhcmdldCwg
ZGVlcCApOworICAgIH0KKworICAgIHJldHVybiB0YXJnZXQ7Cit9CisKKy8qIEhhbmRsZXMgcmVz
cG9uc2VzIHRvIGFuIGFqYXggcmVxdWVzdDoKKyAqIC0gZmluZHMgdGhlIHJpZ2h0IGRhdGFUeXBl
IChtZWRpYXRlcyBiZXR3ZWVuIGNvbnRlbnQtdHlwZSBhbmQgZXhwZWN0ZWQgZGF0YVR5cGUpCisg
KiAtIHJldHVybnMgdGhlIGNvcnJlc3BvbmRpbmcgcmVzcG9uc2UKKyAqLworZnVuY3Rpb24gYWph
eEhhbmRsZVJlc3BvbnNlcyggcywganFYSFIsIHJlc3BvbnNlcyApIHsKKworICAgIHZhciBjdCwg
dHlwZSwgZmluYWxEYXRhVHlwZSwgZmlyc3REYXRhVHlwZSwKKyAgICAgICAgY29udGVudHMgPSBz
LmNvbnRlbnRzLAorICAgICAgICBkYXRhVHlwZXMgPSBzLmRhdGFUeXBlczsKKworICAgIC8vIFJl
bW92ZSBhdXRvIGRhdGFUeXBlIGFuZCBnZXQgY29udGVudC10eXBlIGluIHRoZSBwcm9jZXNzCisg
ICAgd2hpbGUgKCBkYXRhVHlwZXNbIDAgXSA9PT0gIioiICkgeworICAgICAgICBkYXRhVHlwZXMu
c2hpZnQoKTsKKyAgICAgICAgaWYgKCBjdCA9PT0gdW5kZWZpbmVkICkgeworICAgICAgICAgICAg
Y3QgPSBzLm1pbWVUeXBlIHx8IGpxWEhSLmdldFJlc3BvbnNlSGVhZGVyKCAiQ29udGVudC1UeXBl
IiApOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gQ2hlY2sgaWYgd2UncmUgZGVhbGluZyB3
aXRoIGEga25vd24gY29udGVudC10eXBlCisgICAgaWYgKCBjdCApIHsKKyAgICAgICAgZm9yICgg
dHlwZSBpbiBjb250ZW50cyApIHsKKyAgICAgICAgICAgIGlmICggY29udGVudHNbIHR5cGUgXSAm
JiBjb250ZW50c1sgdHlwZSBdLnRlc3QoIGN0ICkgKSB7CisgICAgICAgICAgICAgICAgZGF0YVR5
cGVzLnVuc2hpZnQoIHR5cGUgKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIENoZWNrIHRvIHNlZSBpZiB3ZSBoYXZlIGEg
cmVzcG9uc2UgZm9yIHRoZSBleHBlY3RlZCBkYXRhVHlwZQorICAgIGlmICggZGF0YVR5cGVzWyAw
IF0gaW4gcmVzcG9uc2VzICkgeworICAgICAgICBmaW5hbERhdGFUeXBlID0gZGF0YVR5cGVzWyAw
IF07CisgICAgfSBlbHNlIHsKKworICAgICAgICAvLyBUcnkgY29udmVydGlibGUgZGF0YVR5cGVz
CisgICAgICAgIGZvciAoIHR5cGUgaW4gcmVzcG9uc2VzICkgeworICAgICAgICAgICAgaWYgKCAh
ZGF0YVR5cGVzWyAwIF0gfHwgcy5jb252ZXJ0ZXJzWyB0eXBlICsgIiAiICsgZGF0YVR5cGVzWyAw
IF0gXSApIHsKKyAgICAgICAgICAgICAgICBmaW5hbERhdGFUeXBlID0gdHlwZTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICggIWZpcnN0RGF0
YVR5cGUgKSB7CisgICAgICAgICAgICAgICAgZmlyc3REYXRhVHlwZSA9IHR5cGU7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBPciBqdXN0IHVzZSBmaXJzdCBvbmUKKyAg
ICAgICAgZmluYWxEYXRhVHlwZSA9IGZpbmFsRGF0YVR5cGUgfHwgZmlyc3REYXRhVHlwZTsKKyAg
ICB9CisKKyAgICAvLyBJZiB3ZSBmb3VuZCBhIGRhdGFUeXBlCisgICAgLy8gV2UgYWRkIHRoZSBk
YXRhVHlwZSB0byB0aGUgbGlzdCBpZiBuZWVkZWQKKyAgICAvLyBhbmQgcmV0dXJuIHRoZSBjb3Jy
ZXNwb25kaW5nIHJlc3BvbnNlCisgICAgaWYgKCBmaW5hbERhdGFUeXBlICkgeworICAgICAgICBp
ZiAoIGZpbmFsRGF0YVR5cGUgIT09IGRhdGFUeXBlc1sgMCBdICkgeworICAgICAgICAgICAgZGF0
YVR5cGVzLnVuc2hpZnQoIGZpbmFsRGF0YVR5cGUgKTsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gcmVzcG9uc2VzWyBmaW5hbERhdGFUeXBlIF07CisgICAgfQorfQorCisvKiBDaGFpbiBjb252
ZXJzaW9ucyBnaXZlbiB0aGUgcmVxdWVzdCBhbmQgdGhlIG9yaWdpbmFsIHJlc3BvbnNlCisgKiBB
bHNvIHNldHMgdGhlIHJlc3BvbnNlWFhYIGZpZWxkcyBvbiB0aGUganFYSFIgaW5zdGFuY2UKKyAq
LworZnVuY3Rpb24gYWpheENvbnZlcnQoIHMsIHJlc3BvbnNlLCBqcVhIUiwgaXNTdWNjZXNzICkg
eworICAgIHZhciBjb252MiwgY3VycmVudCwgY29udiwgdG1wLCBwcmV2LAorICAgICAgICBjb252
ZXJ0ZXJzID0ge30sCisKKyAgICAgICAgLy8gV29yayB3aXRoIGEgY29weSBvZiBkYXRhVHlwZXMg
aW4gY2FzZSB3ZSBuZWVkIHRvIG1vZGlmeSBpdCBmb3IgY29udmVyc2lvbgorICAgICAgICBkYXRh
VHlwZXMgPSBzLmRhdGFUeXBlcy5zbGljZSgpOworCisgICAgLy8gQ3JlYXRlIGNvbnZlcnRlcnMg
bWFwIHdpdGggbG93ZXJjYXNlZCBrZXlzCisgICAgaWYgKCBkYXRhVHlwZXNbIDEgXSApIHsKKyAg
ICAgICAgZm9yICggY29udiBpbiBzLmNvbnZlcnRlcnMgKSB7CisgICAgICAgICAgICBjb252ZXJ0
ZXJzWyBjb252LnRvTG93ZXJDYXNlKCkgXSA9IHMuY29udmVydGVyc1sgY29udiBdOworICAgICAg
ICB9CisgICAgfQorCisgICAgY3VycmVudCA9IGRhdGFUeXBlcy5zaGlmdCgpOworCisgICAgLy8g
Q29udmVydCB0byBlYWNoIHNlcXVlbnRpYWwgZGF0YVR5cGUKKyAgICB3aGlsZSAoIGN1cnJlbnQg
KSB7CisKKyAgICAgICAgaWYgKCBzLnJlc3BvbnNlRmllbGRzWyBjdXJyZW50IF0gKSB7CisgICAg
ICAgICAgICBqcVhIUlsgcy5yZXNwb25zZUZpZWxkc1sgY3VycmVudCBdIF0gPSByZXNwb25zZTsK
KyAgICAgICAgfQorCisgICAgICAgIC8vIEFwcGx5IHRoZSBkYXRhRmlsdGVyIGlmIHByb3ZpZGVk
CisgICAgICAgIGlmICggIXByZXYgJiYgaXNTdWNjZXNzICYmIHMuZGF0YUZpbHRlciApIHsKKyAg
ICAgICAgICAgIHJlc3BvbnNlID0gcy5kYXRhRmlsdGVyKCByZXNwb25zZSwgcy5kYXRhVHlwZSAp
OworICAgICAgICB9CisKKyAgICAgICAgcHJldiA9IGN1cnJlbnQ7CisgICAgICAgIGN1cnJlbnQg
PSBkYXRhVHlwZXMuc2hpZnQoKTsKKworICAgICAgICBpZiAoIGN1cnJlbnQgKSB7CisKKyAgICAg
ICAgICAgIC8vIFRoZXJlJ3Mgb25seSB3b3JrIHRvIGRvIGlmIGN1cnJlbnQgZGF0YVR5cGUgaXMg
bm9uLWF1dG8KKyAgICAgICAgICAgIGlmICggY3VycmVudCA9PT0gIioiICkgeworCisgICAgICAg
ICAgICAgICAgY3VycmVudCA9IHByZXY7CisKKyAgICAgICAgICAgIC8vIENvbnZlcnQgcmVzcG9u
c2UgaWYgcHJldiBkYXRhVHlwZSBpcyBub24tYXV0byBhbmQgZGlmZmVycyBmcm9tIGN1cnJlbnQK
KyAgICAgICAgICAgIH0gZWxzZSBpZiAoIHByZXYgIT09ICIqIiAmJiBwcmV2ICE9PSBjdXJyZW50
ICkgeworCisgICAgICAgICAgICAgICAgLy8gU2VlayBhIGRpcmVjdCBjb252ZXJ0ZXIKKyAgICAg
ICAgICAgICAgICBjb252ID0gY29udmVydGVyc1sgcHJldiArICIgIiArIGN1cnJlbnQgXSB8fCBj
b252ZXJ0ZXJzWyAiKiAiICsgY3VycmVudCBdOworCisgICAgICAgICAgICAgICAgLy8gSWYgbm9u
ZSBmb3VuZCwgc2VlayBhIHBhaXIKKyAgICAgICAgICAgICAgICBpZiAoICFjb252ICkgeworICAg
ICAgICAgICAgICAgICAgICBmb3IgKCBjb252MiBpbiBjb252ZXJ0ZXJzICkgeworCisgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBJZiBjb252MiBvdXRwdXRzIGN1cnJlbnQKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHRtcCA9IGNvbnYyLnNwbGl0KCAiICIgKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICggdG1wWyAxIF0gPT09IGN1cnJlbnQgKSB7CisKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBJZiBwcmV2IGNhbiBiZSBjb252ZXJ0ZWQgdG8gYWNjZXB0ZWQgaW5wdXQK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb252ID0gY29udmVydGVyc1sgcHJldiArICIg
IiArIHRtcFsgMCBdIF0gfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udmVy
dGVyc1sgIiogIiArIHRtcFsgMCBdIF07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCBjb252ICkgeworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENvbmRlbnNl
IGVxdWl2YWxlbmNlIGNvbnZlcnRlcnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCBjb252ID09PSB0cnVlICkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29udiA9IGNvbnZlcnRlcnNbIGNvbnYyIF07CisKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gT3RoZXJ3aXNlLCBpbnNlcnQgdGhlIGludGVybWVkaWF0ZSBkYXRhVHlwZQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCBjb252ZXJ0ZXJzWyBj
b252MiBdICE9PSB0cnVlICkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y3VycmVudCA9IHRtcFsgMCBdOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGF0YVR5cGVzLnVuc2hpZnQoIHRtcFsgMSBdICk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8g
QXBwbHkgY29udmVydGVyIChpZiBub3QgYW4gZXF1aXZhbGVuY2UpCisgICAgICAgICAgICAgICAg
aWYgKCBjb252ICE9PSB0cnVlICkgeworCisgICAgICAgICAgICAgICAgICAgIC8vIFVubGVzcyBl
cnJvcnMgYXJlIGFsbG93ZWQgdG8gYnViYmxlLCBjYXRjaCBhbmQgcmV0dXJuIHRoZW0KKyAgICAg
ICAgICAgICAgICAgICAgaWYgKCBjb252ICYmIHMudGhyb3dzICkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzcG9uc2UgPSBjb252KCByZXNwb25zZSApOworICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXNwb25zZSA9IGNvbnYoIHJlc3BvbnNlICk7CisgICAgICAgICAgICAg
ICAgICAgICAgICB9IGNhdGNoICggZSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZTogInBhcnNlcmVy
cm9yIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGNvbnYgPyBlIDog
Ik5vIGNvbnZlcnNpb24gZnJvbSAiICsgcHJldiArICIgdG8gIiArIGN1cnJlbnQKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorCisgICAgcmV0dXJuIHsgc3RhdGU6ICJzdWNjZXNzIiwgZGF0YTogcmVzcG9u
c2UgfTsKK30KKworalF1ZXJ5LmV4dGVuZCggeworCisgICAgLy8gQ291bnRlciBmb3IgaG9sZGlu
ZyB0aGUgbnVtYmVyIG9mIGFjdGl2ZSBxdWVyaWVzCisgICAgYWN0aXZlOiAwLAorCisgICAgLy8g
TGFzdC1Nb2RpZmllZCBoZWFkZXIgY2FjaGUgZm9yIG5leHQgcmVxdWVzdAorICAgIGxhc3RNb2Rp
ZmllZDoge30sCisgICAgZXRhZzoge30sCisKKyAgICBhamF4U2V0dGluZ3M6IHsKKyAgICAgICAg
dXJsOiBsb2NhdGlvbi5ocmVmLAorICAgICAgICB0eXBlOiAiR0VUIiwKKyAgICAgICAgaXNMb2Nh
bDogcmxvY2FsUHJvdG9jb2wudGVzdCggbG9jYXRpb24ucHJvdG9jb2wgKSwKKyAgICAgICAgZ2xv
YmFsOiB0cnVlLAorICAgICAgICBwcm9jZXNzRGF0YTogdHJ1ZSwKKyAgICAgICAgYXN5bmM6IHRy
dWUsCisgICAgICAgIGNvbnRlbnRUeXBlOiAiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNv
ZGVkOyBjaGFyc2V0PVVURi04IiwKKworICAgICAgICAvKgorICAgICAgICB0aW1lb3V0OiAwLAor
ICAgICAgICBkYXRhOiBudWxsLAorICAgICAgICBkYXRhVHlwZTogbnVsbCwKKyAgICAgICAgdXNl
cm5hbWU6IG51bGwsCisgICAgICAgIHBhc3N3b3JkOiBudWxsLAorICAgICAgICBjYWNoZTogbnVs
bCwKKyAgICAgICAgdGhyb3dzOiBmYWxzZSwKKyAgICAgICAgdHJhZGl0aW9uYWw6IGZhbHNlLAor
ICAgICAgICBoZWFkZXJzOiB7fSwKKyAgICAgICAgKi8KKworICAgICAgICBhY2NlcHRzOiB7Cisg
ICAgICAgICAgICAiKiI6IGFsbFR5cGVzLAorICAgICAgICAgICAgdGV4dDogInRleHQvcGxhaW4i
LAorICAgICAgICAgICAgaHRtbDogInRleHQvaHRtbCIsCisgICAgICAgICAgICB4bWw6ICJhcHBs
aWNhdGlvbi94bWwsIHRleHQveG1sIiwKKyAgICAgICAgICAgIGpzb246ICJhcHBsaWNhdGlvbi9q
c29uLCB0ZXh0L2phdmFzY3JpcHQiCisgICAgICAgIH0sCisKKyAgICAgICAgY29udGVudHM6IHsK
KyAgICAgICAgICAgIHhtbDogL1xieG1sXGIvLAorICAgICAgICAgICAgaHRtbDogL1xiaHRtbC8s
CisgICAgICAgICAgICBqc29uOiAvXGJqc29uXGIvCisgICAgICAgIH0sCisKKyAgICAgICAgcmVz
cG9uc2VGaWVsZHM6IHsKKyAgICAgICAgICAgIHhtbDogInJlc3BvbnNlWE1MIiwKKyAgICAgICAg
ICAgIHRleHQ6ICJyZXNwb25zZVRleHQiLAorICAgICAgICAgICAganNvbjogInJlc3BvbnNlSlNP
TiIKKyAgICAgICAgfSwKKworICAgICAgICAvLyBEYXRhIGNvbnZlcnRlcnMKKyAgICAgICAgLy8g
S2V5cyBzZXBhcmF0ZSBzb3VyY2UgKG9yIGNhdGNoYWxsICIqIikgYW5kIGRlc3RpbmF0aW9uIHR5
cGVzIHdpdGggYSBzaW5nbGUgc3BhY2UKKyAgICAgICAgY29udmVydGVyczogeworCisgICAgICAg
ICAgICAvLyBDb252ZXJ0IGFueXRoaW5nIHRvIHRleHQKKyAgICAgICAgICAgICIqIHRleHQiOiBT
dHJpbmcsCisKKyAgICAgICAgICAgIC8vIFRleHQgdG8gaHRtbCAodHJ1ZSA9IG5vIHRyYW5zZm9y
bWF0aW9uKQorICAgICAgICAgICAgInRleHQgaHRtbCI6IHRydWUsCisKKyAgICAgICAgICAgIC8v
IEV2YWx1YXRlIHRleHQgYXMgYSBqc29uIGV4cHJlc3Npb24KKyAgICAgICAgICAgICJ0ZXh0IGpz
b24iOiBKU09OLnBhcnNlLAorCisgICAgICAgICAgICAvLyBQYXJzZSB0ZXh0IGFzIHhtbAorICAg
ICAgICAgICAgInRleHQgeG1sIjogalF1ZXJ5LnBhcnNlWE1MCisgICAgICAgIH0sCisKKyAgICAg
ICAgLy8gRm9yIG9wdGlvbnMgdGhhdCBzaG91bGRuJ3QgYmUgZGVlcCBleHRlbmRlZDoKKyAgICAg
ICAgLy8geW91IGNhbiBhZGQgeW91ciBvd24gY3VzdG9tIG9wdGlvbnMgaGVyZSBpZgorICAgICAg
ICAvLyBhbmQgd2hlbiB5b3UgY3JlYXRlIG9uZSB0aGF0IHNob3VsZG4ndCBiZQorICAgICAgICAv
LyBkZWVwIGV4dGVuZGVkIChzZWUgYWpheEV4dGVuZCkKKyAgICAgICAgZmxhdE9wdGlvbnM6IHsK
KyAgICAgICAgICAgIHVybDogdHJ1ZSwKKyAgICAgICAgICAgIGNvbnRleHQ6IHRydWUKKyAgICAg
ICAgfQorICAgIH0sCisKKyAgICAvLyBDcmVhdGVzIGEgZnVsbCBmbGVkZ2VkIHNldHRpbmdzIG9i
amVjdCBpbnRvIHRhcmdldAorICAgIC8vIHdpdGggYm90aCBhamF4U2V0dGluZ3MgYW5kIHNldHRp
bmdzIGZpZWxkcy4KKyAgICAvLyBJZiB0YXJnZXQgaXMgb21pdHRlZCwgd3JpdGVzIGludG8gYWph
eFNldHRpbmdzLgorICAgIGFqYXhTZXR1cDogZnVuY3Rpb24oIHRhcmdldCwgc2V0dGluZ3MgKSB7
CisgICAgICAgIHJldHVybiBzZXR0aW5ncyA/CisKKyAgICAgICAgICAgIC8vIEJ1aWxkaW5nIGEg
c2V0dGluZ3Mgb2JqZWN0CisgICAgICAgICAgICBhamF4RXh0ZW5kKCBhamF4RXh0ZW5kKCB0YXJn
ZXQsIGpRdWVyeS5hamF4U2V0dGluZ3MgKSwgc2V0dGluZ3MgKSA6CisKKyAgICAgICAgICAgIC8v
IEV4dGVuZGluZyBhamF4U2V0dGluZ3MKKyAgICAgICAgICAgIGFqYXhFeHRlbmQoIGpRdWVyeS5h
amF4U2V0dGluZ3MsIHRhcmdldCApOworICAgIH0sCisKKyAgICBhamF4UHJlZmlsdGVyOiBhZGRU
b1ByZWZpbHRlcnNPclRyYW5zcG9ydHMoIHByZWZpbHRlcnMgKSwKKyAgICBhamF4VHJhbnNwb3J0
OiBhZGRUb1ByZWZpbHRlcnNPclRyYW5zcG9ydHMoIHRyYW5zcG9ydHMgKSwKKworICAgIC8vIE1h
aW4gbWV0aG9kCisgICAgYWpheDogZnVuY3Rpb24oIHVybCwgb3B0aW9ucyApIHsKKworICAgICAg
ICAvLyBJZiB1cmwgaXMgYW4gb2JqZWN0LCBzaW11bGF0ZSBwcmUtMS41IHNpZ25hdHVyZQorICAg
ICAgICBpZiAoIHR5cGVvZiB1cmwgPT09ICJvYmplY3QiICkgeworICAgICAgICAgICAgb3B0aW9u
cyA9IHVybDsKKyAgICAgICAgICAgIHVybCA9IHVuZGVmaW5lZDsKKyAgICAgICAgfQorCisgICAg
ICAgIC8vIEZvcmNlIG9wdGlvbnMgdG8gYmUgYW4gb2JqZWN0CisgICAgICAgIG9wdGlvbnMgPSBv
cHRpb25zIHx8IHt9OworCisgICAgICAgIHZhciB0cmFuc3BvcnQsCisKKyAgICAgICAgICAgIC8v
IFVSTCB3aXRob3V0IGFudGktY2FjaGUgcGFyYW0KKyAgICAgICAgICAgIGNhY2hlVVJMLAorCisg
ICAgICAgICAgICAvLyBSZXNwb25zZSBoZWFkZXJzCisgICAgICAgICAgICByZXNwb25zZUhlYWRl
cnNTdHJpbmcsCisgICAgICAgICAgICByZXNwb25zZUhlYWRlcnMsCisKKyAgICAgICAgICAgIC8v
IHRpbWVvdXQgaGFuZGxlCisgICAgICAgICAgICB0aW1lb3V0VGltZXIsCisKKyAgICAgICAgICAg
IC8vIFVybCBjbGVhbnVwIHZhcgorICAgICAgICAgICAgdXJsQW5jaG9yLAorCisgICAgICAgICAg
ICAvLyBSZXF1ZXN0IHN0YXRlIChiZWNvbWVzIGZhbHNlIHVwb24gc2VuZCBhbmQgdHJ1ZSB1cG9u
IGNvbXBsZXRpb24pCisgICAgICAgICAgICBjb21wbGV0ZWQsCisKKyAgICAgICAgICAgIC8vIFRv
IGtub3cgaWYgZ2xvYmFsIGV2ZW50cyBhcmUgdG8gYmUgZGlzcGF0Y2hlZAorICAgICAgICAgICAg
ZmlyZUdsb2JhbHMsCisKKyAgICAgICAgICAgIC8vIExvb3AgdmFyaWFibGUKKyAgICAgICAgICAg
IGksCisKKyAgICAgICAgICAgIC8vIHVuY2FjaGVkIHBhcnQgb2YgdGhlIHVybAorICAgICAgICAg
ICAgdW5jYWNoZWQsCisKKyAgICAgICAgICAgIC8vIENyZWF0ZSB0aGUgZmluYWwgb3B0aW9ucyBv
YmplY3QKKyAgICAgICAgICAgIHMgPSBqUXVlcnkuYWpheFNldHVwKCB7fSwgb3B0aW9ucyApLAor
CisgICAgICAgICAgICAvLyBDYWxsYmFja3MgY29udGV4dAorICAgICAgICAgICAgY2FsbGJhY2tD
b250ZXh0ID0gcy5jb250ZXh0IHx8IHMsCisKKyAgICAgICAgICAgIC8vIENvbnRleHQgZm9yIGds
b2JhbCBldmVudHMgaXMgY2FsbGJhY2tDb250ZXh0IGlmIGl0IGlzIGEgRE9NIG5vZGUgb3IgalF1
ZXJ5IGNvbGxlY3Rpb24KKyAgICAgICAgICAgIGdsb2JhbEV2ZW50Q29udGV4dCA9IHMuY29udGV4
dCAmJgorICAgICAgICAgICAgICAgICggY2FsbGJhY2tDb250ZXh0Lm5vZGVUeXBlIHx8IGNhbGxi
YWNrQ29udGV4dC5qcXVlcnkgKSA/CisgICAgICAgICAgICAgICAgICAgIGpRdWVyeSggY2FsbGJh
Y2tDb250ZXh0ICkgOgorICAgICAgICAgICAgICAgICAgICBqUXVlcnkuZXZlbnQsCisKKyAgICAg
ICAgICAgIC8vIERlZmVycmVkcworICAgICAgICAgICAgZGVmZXJyZWQgPSBqUXVlcnkuRGVmZXJy
ZWQoKSwKKyAgICAgICAgICAgIGNvbXBsZXRlRGVmZXJyZWQgPSBqUXVlcnkuQ2FsbGJhY2tzKCAi
b25jZSBtZW1vcnkiICksCisKKyAgICAgICAgICAgIC8vIFN0YXR1cy1kZXBlbmRlbnQgY2FsbGJh
Y2tzCisgICAgICAgICAgICBzdGF0dXNDb2RlID0gcy5zdGF0dXNDb2RlIHx8IHt9LAorCisgICAg
ICAgICAgICAvLyBIZWFkZXJzICh0aGV5IGFyZSBzZW50IGFsbCBhdCBvbmNlKQorICAgICAgICAg
ICAgcmVxdWVzdEhlYWRlcnMgPSB7fSwKKyAgICAgICAgICAgIHJlcXVlc3RIZWFkZXJzTmFtZXMg
PSB7fSwKKworICAgICAgICAgICAgLy8gRGVmYXVsdCBhYm9ydCBtZXNzYWdlCisgICAgICAgICAg
ICBzdHJBYm9ydCA9ICJjYW5jZWxlZCIsCisKKyAgICAgICAgICAgIC8vIEZha2UgeGhyCisgICAg
ICAgICAgICBqcVhIUiA9IHsKKyAgICAgICAgICAgICAgICByZWFkeVN0YXRlOiAwLAorCisgICAg
ICAgICAgICAgICAgLy8gQnVpbGRzIGhlYWRlcnMgaGFzaHRhYmxlIGlmIG5lZWRlZAorICAgICAg
ICAgICAgICAgIGdldFJlc3BvbnNlSGVhZGVyOiBmdW5jdGlvbigga2V5ICkgeworICAgICAgICAg
ICAgICAgICAgICB2YXIgbWF0Y2g7CisgICAgICAgICAgICAgICAgICAgIGlmICggY29tcGxldGVk
ICkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhcmVzcG9uc2VIZWFkZXJzICkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlSGVhZGVycyA9IHt9OworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICggKCBtYXRjaCA9IHJoZWFkZXJzLmV4ZWMoIHJl
c3BvbnNlSGVhZGVyc1N0cmluZyApICkgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlc3BvbnNlSGVhZGVyc1sgbWF0Y2hbIDEgXS50b0xvd2VyQ2FzZSgpIF0gPSBtYXRjaFsg
MiBdOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoID0gcmVzcG9uc2VIZWFkZXJzWyBr
ZXkudG9Mb3dlckNhc2UoKSBdOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBtYXRjaCA9PSBudWxsID8gbnVsbCA6IG1hdGNoOworICAgICAgICAgICAg
ICAgIH0sCisKKyAgICAgICAgICAgICAgICAvLyBSYXcgc3RyaW5nCisgICAgICAgICAgICAgICAg
Z2V0QWxsUmVzcG9uc2VIZWFkZXJzOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGNvbXBsZXRlZCA/IHJlc3BvbnNlSGVhZGVyc1N0cmluZyA6IG51bGw7CisgICAgICAg
ICAgICAgICAgfSwKKworICAgICAgICAgICAgICAgIC8vIENhY2hlcyB0aGUgaGVhZGVyCisgICAg
ICAgICAgICAgICAgc2V0UmVxdWVzdEhlYWRlcjogZnVuY3Rpb24oIG5hbWUsIHZhbHVlICkgewor
ICAgICAgICAgICAgICAgICAgICBpZiAoIGNvbXBsZXRlZCA9PSBudWxsICkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgbmFtZSA9IHJlcXVlc3RIZWFkZXJzTmFtZXNbIG5hbWUudG9Mb3dlckNh
c2UoKSBdID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SGVhZGVyc05hbWVz
WyBuYW1lLnRvTG93ZXJDYXNlKCkgXSB8fCBuYW1lOworICAgICAgICAgICAgICAgICAgICAgICAg
cmVxdWVzdEhlYWRlcnNbIG5hbWUgXSA9IHZhbHVlOworICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICAgICAgICAgIH0sCisKKyAg
ICAgICAgICAgICAgICAvLyBPdmVycmlkZXMgcmVzcG9uc2UgY29udGVudC10eXBlIGhlYWRlcgor
ICAgICAgICAgICAgICAgIG92ZXJyaWRlTWltZVR5cGU6IGZ1bmN0aW9uKCB0eXBlICkgeworICAg
ICAgICAgICAgICAgICAgICBpZiAoIGNvbXBsZXRlZCA9PSBudWxsICkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgcy5taW1lVHlwZSA9IHR5cGU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgICAgICAgICAgfSwKKworICAg
ICAgICAgICAgICAgIC8vIFN0YXR1cy1kZXBlbmRlbnQgY2FsbGJhY2tzCisgICAgICAgICAgICAg
ICAgc3RhdHVzQ29kZTogZnVuY3Rpb24oIG1hcCApIHsKKyAgICAgICAgICAgICAgICAgICAgdmFy
IGNvZGU7CisgICAgICAgICAgICAgICAgICAgIGlmICggbWFwICkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCBjb21wbGV0ZWQgKSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBFeGVjdXRlIHRoZSBhcHByb3ByaWF0ZSBjYWxsYmFja3MKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBqcVhIUi5hbHdheXMoIG1hcFsganFYSFIuc3RhdHVzIF0gKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBMYXp5LWFkZCB0aGUgbmV3IGNhbGxiYWNrcyBpbiBhIHdheSB0aGF0IHByZXNlcnZlcyBvbGQg
b25lcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoIGNvZGUgaW4gbWFwICkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXNDb2RlWyBjb2RlIF0gPSBbIHN0
YXR1c0NvZGVbIGNvZGUgXSwgbWFwWyBjb2RlIF0gXTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgICAgICAgICAgfSwKKwor
ICAgICAgICAgICAgICAgIC8vIENhbmNlbCB0aGUgcmVxdWVzdAorICAgICAgICAgICAgICAgIGFi
b3J0OiBmdW5jdGlvbiggc3RhdHVzVGV4dCApIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGZp
bmFsVGV4dCA9IHN0YXR1c1RleHQgfHwgc3RyQWJvcnQ7CisgICAgICAgICAgICAgICAgICAgIGlm
ICggdHJhbnNwb3J0ICkgeworICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3J0LmFib3J0
KCBmaW5hbFRleHQgKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICBkb25lKCAwLCBmaW5hbFRleHQgKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfTsKKworICAgICAgICAvLyBBdHRhY2gg
ZGVmZXJyZWRzCisgICAgICAgIGRlZmVycmVkLnByb21pc2UoIGpxWEhSICk7CisKKyAgICAgICAg
Ly8gQWRkIHByb3RvY29sIGlmIG5vdCBwcm92aWRlZCAocHJlZmlsdGVycyBtaWdodCBleHBlY3Qg
aXQpCisgICAgICAgIC8vIEhhbmRsZSBmYWxzeSB1cmwgaW4gdGhlIHNldHRpbmdzIG9iamVjdCAo
IzEwMDkzOiBjb25zaXN0ZW5jeSB3aXRoIG9sZCBzaWduYXR1cmUpCisgICAgICAgIC8vIFdlIGFs
c28gdXNlIHRoZSB1cmwgcGFyYW1ldGVyIGlmIGF2YWlsYWJsZQorICAgICAgICBzLnVybCA9ICgg
KCB1cmwgfHwgcy51cmwgfHwgbG9jYXRpb24uaHJlZiApICsgIiIgKQorICAgICAgICAgICAgLnJl
cGxhY2UoIHJwcm90b2NvbCwgbG9jYXRpb24ucHJvdG9jb2wgKyAiLy8iICk7CisKKyAgICAgICAg
Ly8gQWxpYXMgbWV0aG9kIG9wdGlvbiB0byB0eXBlIGFzIHBlciB0aWNrZXQgIzEyMDA0CisgICAg
ICAgIHMudHlwZSA9IG9wdGlvbnMubWV0aG9kIHx8IG9wdGlvbnMudHlwZSB8fCBzLm1ldGhvZCB8
fCBzLnR5cGU7CisKKyAgICAgICAgLy8gRXh0cmFjdCBkYXRhVHlwZXMgbGlzdAorICAgICAgICBz
LmRhdGFUeXBlcyA9ICggcy5kYXRhVHlwZSB8fCAiKiIgKS50b0xvd2VyQ2FzZSgpLm1hdGNoKCBy
bm90aHRtbHdoaXRlICkgfHwgWyAiIiBdOworCisgICAgICAgIC8vIEEgY3Jvc3MtZG9tYWluIHJl
cXVlc3QgaXMgaW4gb3JkZXIgd2hlbiB0aGUgb3JpZ2luIGRvZXNuJ3QgbWF0Y2ggdGhlIGN1cnJl
bnQgb3JpZ2luLgorICAgICAgICBpZiAoIHMuY3Jvc3NEb21haW4gPT0gbnVsbCApIHsKKyAgICAg
ICAgICAgIHVybEFuY2hvciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoICJhIiApOworCisgICAg
ICAgICAgICAvLyBTdXBwb3J0OiBJRSA8PTggLSAxMSwgRWRnZSAxMiAtIDEzCisgICAgICAgICAg
ICAvLyBJRSB0aHJvd3MgZXhjZXB0aW9uIG9uIGFjY2Vzc2luZyB0aGUgaHJlZiBwcm9wZXJ0eSBp
ZiB1cmwgaXMgbWFsZm9ybWVkLAorICAgICAgICAgICAgLy8gZS5nLiBodHRwOi8vZXhhbXBsZS5j
b206ODB4LworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICB1cmxBbmNob3IuaHJl
ZiA9IHMudXJsOworCisgICAgICAgICAgICAgICAgLy8gU3VwcG9ydDogSUUgPD04IC0gMTEgb25s
eQorICAgICAgICAgICAgICAgIC8vIEFuY2hvcidzIGhvc3QgcHJvcGVydHkgaXNuJ3QgY29ycmVj
dGx5IHNldCB3aGVuIHMudXJsIGlzIHJlbGF0aXZlCisgICAgICAgICAgICAgICAgdXJsQW5jaG9y
LmhyZWYgPSB1cmxBbmNob3IuaHJlZjsKKyAgICAgICAgICAgICAgICBzLmNyb3NzRG9tYWluID0g
b3JpZ2luQW5jaG9yLnByb3RvY29sICsgIi8vIiArIG9yaWdpbkFuY2hvci5ob3N0ICE9PQorICAg
ICAgICAgICAgICAgICAgICB1cmxBbmNob3IucHJvdG9jb2wgKyAiLy8iICsgdXJsQW5jaG9yLmhv
c3Q7CisgICAgICAgICAgICB9IGNhdGNoICggZSApIHsKKworICAgICAgICAgICAgICAgIC8vIElm
IHRoZXJlIGlzIGFuIGVycm9yIHBhcnNpbmcgdGhlIFVSTCwgYXNzdW1lIGl0IGlzIGNyb3NzRG9t
YWluLAorICAgICAgICAgICAgICAgIC8vIGl0IGNhbiBiZSByZWplY3RlZCBieSB0aGUgdHJhbnNw
b3J0IGlmIGl0IGlzIGludmFsaWQKKyAgICAgICAgICAgICAgICBzLmNyb3NzRG9tYWluID0gdHJ1
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIENvbnZlcnQgZGF0YSBp
ZiBub3QgYWxyZWFkeSBhIHN0cmluZworICAgICAgICBpZiAoIHMuZGF0YSAmJiBzLnByb2Nlc3NE
YXRhICYmIHR5cGVvZiBzLmRhdGEgIT09ICJzdHJpbmciICkgeworICAgICAgICAgICAgcy5kYXRh
ID0galF1ZXJ5LnBhcmFtKCBzLmRhdGEsIHMudHJhZGl0aW9uYWwgKTsKKyAgICAgICAgfQorCisg
ICAgICAgIC8vIEFwcGx5IHByZWZpbHRlcnMKKyAgICAgICAgaW5zcGVjdFByZWZpbHRlcnNPclRy
YW5zcG9ydHMoIHByZWZpbHRlcnMsIHMsIG9wdGlvbnMsIGpxWEhSICk7CisKKyAgICAgICAgLy8g
SWYgcmVxdWVzdCB3YXMgYWJvcnRlZCBpbnNpZGUgYSBwcmVmaWx0ZXIsIHN0b3AgdGhlcmUKKyAg
ICAgICAgaWYgKCBjb21wbGV0ZWQgKSB7CisgICAgICAgICAgICByZXR1cm4ganFYSFI7CisgICAg
ICAgIH0KKworICAgICAgICAvLyBXZSBjYW4gZmlyZSBnbG9iYWwgZXZlbnRzIGFzIG9mIG5vdyBp
ZiBhc2tlZCB0bworICAgICAgICAvLyBEb24ndCBmaXJlIGV2ZW50cyBpZiBqUXVlcnkuZXZlbnQg
aXMgdW5kZWZpbmVkIGluIGFuIEFNRC11c2FnZSBzY2VuYXJpbyAoIzE1MTE4KQorICAgICAgICBm
aXJlR2xvYmFscyA9IGpRdWVyeS5ldmVudCAmJiBzLmdsb2JhbDsKKworICAgICAgICAvLyBXYXRj
aCBmb3IgYSBuZXcgc2V0IG9mIHJlcXVlc3RzCisgICAgICAgIGlmICggZmlyZUdsb2JhbHMgJiYg
alF1ZXJ5LmFjdGl2ZSsrID09PSAwICkgeworICAgICAgICAgICAgalF1ZXJ5LmV2ZW50LnRyaWdn
ZXIoICJhamF4U3RhcnQiICk7CisgICAgICAgIH0KKworICAgICAgICAvLyBVcHBlcmNhc2UgdGhl
IHR5cGUKKyAgICAgICAgcy50eXBlID0gcy50eXBlLnRvVXBwZXJDYXNlKCk7CisKKyAgICAgICAg
Ly8gRGV0ZXJtaW5lIGlmIHJlcXVlc3QgaGFzIGNvbnRlbnQKKyAgICAgICAgcy5oYXNDb250ZW50
ID0gIXJub0NvbnRlbnQudGVzdCggcy50eXBlICk7CisKKyAgICAgICAgLy8gU2F2ZSB0aGUgVVJM
IGluIGNhc2Ugd2UncmUgdG95aW5nIHdpdGggdGhlIElmLU1vZGlmaWVkLVNpbmNlCisgICAgICAg
IC8vIGFuZC9vciBJZi1Ob25lLU1hdGNoIGhlYWRlciBsYXRlciBvbgorICAgICAgICAvLyBSZW1v
dmUgaGFzaCB0byBzaW1wbGlmeSB1cmwgbWFuaXB1bGF0aW9uCisgICAgICAgIGNhY2hlVVJMID0g
cy51cmwucmVwbGFjZSggcmhhc2gsICIiICk7CisKKyAgICAgICAgLy8gTW9yZSBvcHRpb25zIGhh
bmRsaW5nIGZvciByZXF1ZXN0cyB3aXRoIG5vIGNvbnRlbnQKKyAgICAgICAgaWYgKCAhcy5oYXND
b250ZW50ICkgeworCisgICAgICAgICAgICAvLyBSZW1lbWJlciB0aGUgaGFzaCBzbyB3ZSBjYW4g
cHV0IGl0IGJhY2sKKyAgICAgICAgICAgIHVuY2FjaGVkID0gcy51cmwuc2xpY2UoIGNhY2hlVVJM
Lmxlbmd0aCApOworCisgICAgICAgICAgICAvLyBJZiBkYXRhIGlzIGF2YWlsYWJsZSwgYXBwZW5k
IGRhdGEgdG8gdXJsCisgICAgICAgICAgICBpZiAoIHMuZGF0YSApIHsKKyAgICAgICAgICAgICAg
ICBjYWNoZVVSTCArPSAoIHJxdWVyeS50ZXN0KCBjYWNoZVVSTCApID8gIiYiIDogIj8iICkgKyBz
LmRhdGE7CisKKyAgICAgICAgICAgICAgICAvLyAjOTY4MjogcmVtb3ZlIGRhdGEgc28gdGhhdCBp
dCdzIG5vdCB1c2VkIGluIGFuIGV2ZW50dWFsIHJldHJ5CisgICAgICAgICAgICAgICAgZGVsZXRl
IHMuZGF0YTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gQWRkIG9yIHVwZGF0ZSBh
bnRpLWNhY2hlIHBhcmFtIGlmIG5lZWRlZAorICAgICAgICAgICAgaWYgKCBzLmNhY2hlID09PSBm
YWxzZSApIHsKKyAgICAgICAgICAgICAgICBjYWNoZVVSTCA9IGNhY2hlVVJMLnJlcGxhY2UoIHJh
bnRpQ2FjaGUsICIkMSIgKTsKKyAgICAgICAgICAgICAgICB1bmNhY2hlZCA9ICggcnF1ZXJ5LnRl
c3QoIGNhY2hlVVJMICkgPyAiJiIgOiAiPyIgKSArICJfPSIgKyAoIG5vbmNlKysgKSArIHVuY2Fj
aGVkOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBQdXQgaGFzaCBhbmQgYW50aS1j
YWNoZSBvbiB0aGUgVVJMIHRoYXQgd2lsbCBiZSByZXF1ZXN0ZWQgKGdoLTE3MzIpCisgICAgICAg
ICAgICBzLnVybCA9IGNhY2hlVVJMICsgdW5jYWNoZWQ7CisKKyAgICAgICAgLy8gQ2hhbmdlICcl
MjAnIHRvICcrJyBpZiB0aGlzIGlzIGVuY29kZWQgZm9ybSBib2R5IGNvbnRlbnQgKGdoLTI2NTgp
CisgICAgICAgIH0gZWxzZSBpZiAoIHMuZGF0YSAmJiBzLnByb2Nlc3NEYXRhICYmCisgICAgICAg
ICAgICAoIHMuY29udGVudFR5cGUgfHwgIiIgKS5pbmRleE9mKCAiYXBwbGljYXRpb24veC13d3ct
Zm9ybS11cmxlbmNvZGVkIiApID09PSAwICkgeworICAgICAgICAgICAgcy5kYXRhID0gcy5kYXRh
LnJlcGxhY2UoIHIyMCwgIisiICk7CisgICAgICAgIH0KKworICAgICAgICAvLyBTZXQgdGhlIElm
LU1vZGlmaWVkLVNpbmNlIGFuZC9vciBJZi1Ob25lLU1hdGNoIGhlYWRlciwgaWYgaW4gaWZNb2Rp
ZmllZCBtb2RlLgorICAgICAgICBpZiAoIHMuaWZNb2RpZmllZCApIHsKKyAgICAgICAgICAgIGlm
ICggalF1ZXJ5Lmxhc3RNb2RpZmllZFsgY2FjaGVVUkwgXSApIHsKKyAgICAgICAgICAgICAgICBq
cVhIUi5zZXRSZXF1ZXN0SGVhZGVyKCAiSWYtTW9kaWZpZWQtU2luY2UiLCBqUXVlcnkubGFzdE1v
ZGlmaWVkWyBjYWNoZVVSTCBdICk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIGpR
dWVyeS5ldGFnWyBjYWNoZVVSTCBdICkgeworICAgICAgICAgICAgICAgIGpxWEhSLnNldFJlcXVl
c3RIZWFkZXIoICJJZi1Ob25lLU1hdGNoIiwgalF1ZXJ5LmV0YWdbIGNhY2hlVVJMIF0gKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIFNldCB0aGUgY29ycmVjdCBoZWFk
ZXIsIGlmIGRhdGEgaXMgYmVpbmcgc2VudAorICAgICAgICBpZiAoIHMuZGF0YSAmJiBzLmhhc0Nv
bnRlbnQgJiYgcy5jb250ZW50VHlwZSAhPT0gZmFsc2UgfHwgb3B0aW9ucy5jb250ZW50VHlwZSAp
IHsKKyAgICAgICAgICAgIGpxWEhSLnNldFJlcXVlc3RIZWFkZXIoICJDb250ZW50LVR5cGUiLCBz
LmNvbnRlbnRUeXBlICk7CisgICAgICAgIH0KKworICAgICAgICAvLyBTZXQgdGhlIEFjY2VwdHMg
aGVhZGVyIGZvciB0aGUgc2VydmVyLCBkZXBlbmRpbmcgb24gdGhlIGRhdGFUeXBlCisgICAgICAg
IGpxWEhSLnNldFJlcXVlc3RIZWFkZXIoCisgICAgICAgICAgICAiQWNjZXB0IiwKKyAgICAgICAg
ICAgIHMuZGF0YVR5cGVzWyAwIF0gJiYgcy5hY2NlcHRzWyBzLmRhdGFUeXBlc1sgMCBdIF0gPwor
ICAgICAgICAgICAgICAgIHMuYWNjZXB0c1sgcy5kYXRhVHlwZXNbIDAgXSBdICsKKyAgICAgICAg
ICAgICAgICAgICAgKCBzLmRhdGFUeXBlc1sgMCBdICE9PSAiKiIgPyAiLCAiICsgYWxsVHlwZXMg
KyAiOyBxPTAuMDEiIDogIiIgKSA6CisgICAgICAgICAgICAgICAgcy5hY2NlcHRzWyAiKiIgXQor
ICAgICAgICApOworCisgICAgICAgIC8vIENoZWNrIGZvciBoZWFkZXJzIG9wdGlvbgorICAgICAg
ICBmb3IgKCBpIGluIHMuaGVhZGVycyApIHsKKyAgICAgICAgICAgIGpxWEhSLnNldFJlcXVlc3RI
ZWFkZXIoIGksIHMuaGVhZGVyc1sgaSBdICk7CisgICAgICAgIH0KKworICAgICAgICAvLyBBbGxv
dyBjdXN0b20gaGVhZGVycy9taW1ldHlwZXMgYW5kIGVhcmx5IGFib3J0CisgICAgICAgIGlmICgg
cy5iZWZvcmVTZW5kICYmCisgICAgICAgICAgICAoIHMuYmVmb3JlU2VuZC5jYWxsKCBjYWxsYmFj
a0NvbnRleHQsIGpxWEhSLCBzICkgPT09IGZhbHNlIHx8IGNvbXBsZXRlZCApICkgeworCisgICAg
ICAgICAgICAvLyBBYm9ydCBpZiBub3QgZG9uZSBhbHJlYWR5IGFuZCByZXR1cm4KKyAgICAgICAg
ICAgIHJldHVybiBqcVhIUi5hYm9ydCgpOworICAgICAgICB9CisKKyAgICAgICAgLy8gQWJvcnRp
bmcgaXMgbm8gbG9uZ2VyIGEgY2FuY2VsbGF0aW9uCisgICAgICAgIHN0ckFib3J0ID0gImFib3J0
IjsKKworICAgICAgICAvLyBJbnN0YWxsIGNhbGxiYWNrcyBvbiBkZWZlcnJlZHMKKyAgICAgICAg
Y29tcGxldGVEZWZlcnJlZC5hZGQoIHMuY29tcGxldGUgKTsKKyAgICAgICAganFYSFIuZG9uZSgg
cy5zdWNjZXNzICk7CisgICAgICAgIGpxWEhSLmZhaWwoIHMuZXJyb3IgKTsKKworICAgICAgICAv
LyBHZXQgdHJhbnNwb3J0CisgICAgICAgIHRyYW5zcG9ydCA9IGluc3BlY3RQcmVmaWx0ZXJzT3JU
cmFuc3BvcnRzKCB0cmFuc3BvcnRzLCBzLCBvcHRpb25zLCBqcVhIUiApOworCisgICAgICAgIC8v
IElmIG5vIHRyYW5zcG9ydCwgd2UgYXV0by1hYm9ydAorICAgICAgICBpZiAoICF0cmFuc3BvcnQg
KSB7CisgICAgICAgICAgICBkb25lKCAtMSwgIk5vIFRyYW5zcG9ydCIgKTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIGpxWEhSLnJlYWR5U3RhdGUgPSAxOworCisgICAgICAgICAgICAv
LyBTZW5kIGdsb2JhbCBldmVudAorICAgICAgICAgICAgaWYgKCBmaXJlR2xvYmFscyApIHsKKyAg
ICAgICAgICAgICAgICBnbG9iYWxFdmVudENvbnRleHQudHJpZ2dlciggImFqYXhTZW5kIiwgWyBq
cVhIUiwgcyBdICk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIElmIHJlcXVlc3Qg
d2FzIGFib3J0ZWQgaW5zaWRlIGFqYXhTZW5kLCBzdG9wIHRoZXJlCisgICAgICAgICAgICBpZiAo
IGNvbXBsZXRlZCApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4ganFYSFI7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIC8vIFRpbWVvdXQKKyAgICAgICAgICAgIGlmICggcy5hc3luYyAm
JiBzLnRpbWVvdXQgPiAwICkgeworICAgICAgICAgICAgICAgIHRpbWVvdXRUaW1lciA9IHdpbmRv
dy5zZXRUaW1lb3V0KCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAganFYSFIuYWJv
cnQoICJ0aW1lb3V0IiApOworICAgICAgICAgICAgICAgIH0sIHMudGltZW91dCApOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIGNvbXBsZXRlZCA9
IGZhbHNlOworICAgICAgICAgICAgICAgIHRyYW5zcG9ydC5zZW5kKCByZXF1ZXN0SGVhZGVycywg
ZG9uZSApOworICAgICAgICAgICAgfSBjYXRjaCAoIGUgKSB7CisKKyAgICAgICAgICAgICAgICAv
LyBSZXRocm93IHBvc3QtY29tcGxldGlvbiBleGNlcHRpb25zCisgICAgICAgICAgICAgICAgaWYg
KCBjb21wbGV0ZWQgKSB7CisgICAgICAgICAgICAgICAgICAgIHRocm93IGU7CisgICAgICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gUHJvcGFnYXRlIG90aGVycyBhcyByZXN1bHRz
CisgICAgICAgICAgICAgICAgZG9uZSggLTEsIGUgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorCisgICAgICAgIC8vIENhbGxiYWNrIGZvciB3aGVuIGV2ZXJ5dGhpbmcgaXMgZG9uZQorICAg
ICAgICBmdW5jdGlvbiBkb25lKCBzdGF0dXMsIG5hdGl2ZVN0YXR1c1RleHQsIHJlc3BvbnNlcywg
aGVhZGVycyApIHsKKyAgICAgICAgICAgIHZhciBpc1N1Y2Nlc3MsIHN1Y2Nlc3MsIGVycm9yLCBy
ZXNwb25zZSwgbW9kaWZpZWQsCisgICAgICAgICAgICAgICAgc3RhdHVzVGV4dCA9IG5hdGl2ZVN0
YXR1c1RleHQ7CisKKyAgICAgICAgICAgIC8vIElnbm9yZSByZXBlYXQgaW52b2NhdGlvbnMKKyAg
ICAgICAgICAgIGlmICggY29tcGxldGVkICkgeworICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgY29tcGxldGVkID0gdHJ1ZTsKKworICAgICAgICAg
ICAgLy8gQ2xlYXIgdGltZW91dCBpZiBpdCBleGlzdHMKKyAgICAgICAgICAgIGlmICggdGltZW91
dFRpbWVyICkgeworICAgICAgICAgICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQoIHRpbWVvdXRU
aW1lciApOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBEZXJlZmVyZW5jZSB0cmFu
c3BvcnQgZm9yIGVhcmx5IGdhcmJhZ2UgY29sbGVjdGlvbgorICAgICAgICAgICAgLy8gKG5vIG1h
dHRlciBob3cgbG9uZyB0aGUganFYSFIgb2JqZWN0IHdpbGwgYmUgdXNlZCkKKyAgICAgICAgICAg
IHRyYW5zcG9ydCA9IHVuZGVmaW5lZDsKKworICAgICAgICAgICAgLy8gQ2FjaGUgcmVzcG9uc2Ug
aGVhZGVycworICAgICAgICAgICAgcmVzcG9uc2VIZWFkZXJzU3RyaW5nID0gaGVhZGVycyB8fCAi
IjsKKworICAgICAgICAgICAgLy8gU2V0IHJlYWR5U3RhdGUKKyAgICAgICAgICAgIGpxWEhSLnJl
YWR5U3RhdGUgPSBzdGF0dXMgPiAwID8gNCA6IDA7CisKKyAgICAgICAgICAgIC8vIERldGVybWlu
ZSBpZiBzdWNjZXNzZnVsCisgICAgICAgICAgICBpc1N1Y2Nlc3MgPSBzdGF0dXMgPj0gMjAwICYm
IHN0YXR1cyA8IDMwMCB8fCBzdGF0dXMgPT09IDMwNDsKKworICAgICAgICAgICAgLy8gR2V0IHJl
c3BvbnNlIGRhdGEKKyAgICAgICAgICAgIGlmICggcmVzcG9uc2VzICkgeworICAgICAgICAgICAg
ICAgIHJlc3BvbnNlID0gYWpheEhhbmRsZVJlc3BvbnNlcyggcywganFYSFIsIHJlc3BvbnNlcyAp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBDb252ZXJ0IG5vIG1hdHRlciB3aGF0
ICh0aGF0IHdheSByZXNwb25zZVhYWCBmaWVsZHMgYXJlIGFsd2F5cyBzZXQpCisgICAgICAgICAg
ICByZXNwb25zZSA9IGFqYXhDb252ZXJ0KCBzLCByZXNwb25zZSwganFYSFIsIGlzU3VjY2VzcyAp
OworCisgICAgICAgICAgICAvLyBJZiBzdWNjZXNzZnVsLCBoYW5kbGUgdHlwZSBjaGFpbmluZwor
ICAgICAgICAgICAgaWYgKCBpc1N1Y2Nlc3MgKSB7CisKKyAgICAgICAgICAgICAgICAvLyBTZXQg
dGhlIElmLU1vZGlmaWVkLVNpbmNlIGFuZC9vciBJZi1Ob25lLU1hdGNoIGhlYWRlciwgaWYgaW4g
aWZNb2RpZmllZCBtb2RlLgorICAgICAgICAgICAgICAgIGlmICggcy5pZk1vZGlmaWVkICkgewor
ICAgICAgICAgICAgICAgICAgICBtb2RpZmllZCA9IGpxWEhSLmdldFJlc3BvbnNlSGVhZGVyKCAi
TGFzdC1Nb2RpZmllZCIgKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCBtb2RpZmllZCApIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5sYXN0TW9kaWZpZWRbIGNhY2hlVVJMIF0g
PSBtb2RpZmllZDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBt
b2RpZmllZCA9IGpxWEhSLmdldFJlc3BvbnNlSGVhZGVyKCAiZXRhZyIgKTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKCBtb2RpZmllZCApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVy
eS5ldGFnWyBjYWNoZVVSTCBdID0gbW9kaWZpZWQ7CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBpZiBubyBjb250ZW50CisgICAg
ICAgICAgICAgICAgaWYgKCBzdGF0dXMgPT09IDIwNCB8fCBzLnR5cGUgPT09ICJIRUFEIiApIHsK
KyAgICAgICAgICAgICAgICAgICAgc3RhdHVzVGV4dCA9ICJub2NvbnRlbnQiOworCisgICAgICAg
ICAgICAgICAgLy8gaWYgbm90IG1vZGlmaWVkCisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgg
c3RhdHVzID09PSAzMDQgKSB7CisgICAgICAgICAgICAgICAgICAgIHN0YXR1c1RleHQgPSAibm90
bW9kaWZpZWQiOworCisgICAgICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSBkYXRhLCBsZXQncyBj
b252ZXJ0IGl0CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAg
c3RhdHVzVGV4dCA9IHJlc3BvbnNlLnN0YXRlOworICAgICAgICAgICAgICAgICAgICBzdWNjZXNz
ID0gcmVzcG9uc2UuZGF0YTsKKyAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSByZXNwb25zZS5l
cnJvcjsKKyAgICAgICAgICAgICAgICAgICAgaXNTdWNjZXNzID0gIWVycm9yOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisKKyAgICAgICAgICAgICAgICAvLyBFeHRy
YWN0IGVycm9yIGZyb20gc3RhdHVzVGV4dCBhbmQgbm9ybWFsaXplIGZvciBub24tYWJvcnRzCisg
ICAgICAgICAgICAgICAgZXJyb3IgPSBzdGF0dXNUZXh0OworICAgICAgICAgICAgICAgIGlmICgg
c3RhdHVzIHx8ICFzdGF0dXNUZXh0ICkgeworICAgICAgICAgICAgICAgICAgICBzdGF0dXNUZXh0
ID0gImVycm9yIjsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCBzdGF0dXMgPCAwICkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0gMDsKKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gU2V0IGRh
dGEgZm9yIHRoZSBmYWtlIHhociBvYmplY3QKKyAgICAgICAgICAgIGpxWEhSLnN0YXR1cyA9IHN0
YXR1czsKKyAgICAgICAgICAgIGpxWEhSLnN0YXR1c1RleHQgPSAoIG5hdGl2ZVN0YXR1c1RleHQg
fHwgc3RhdHVzVGV4dCApICsgIiI7CisKKyAgICAgICAgICAgIC8vIFN1Y2Nlc3MvRXJyb3IKKyAg
ICAgICAgICAgIGlmICggaXNTdWNjZXNzICkgeworICAgICAgICAgICAgICAgIGRlZmVycmVkLnJl
c29sdmVXaXRoKCBjYWxsYmFja0NvbnRleHQsIFsgc3VjY2Vzcywgc3RhdHVzVGV4dCwganFYSFIg
XSApOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWpl
Y3RXaXRoKCBjYWxsYmFja0NvbnRleHQsIFsganFYSFIsIHN0YXR1c1RleHQsIGVycm9yIF0gKTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gU3RhdHVzLWRlcGVuZGVudCBjYWxsYmFj
a3MKKyAgICAgICAgICAgIGpxWEhSLnN0YXR1c0NvZGUoIHN0YXR1c0NvZGUgKTsKKyAgICAgICAg
ICAgIHN0YXR1c0NvZGUgPSB1bmRlZmluZWQ7CisKKyAgICAgICAgICAgIGlmICggZmlyZUdsb2Jh
bHMgKSB7CisgICAgICAgICAgICAgICAgZ2xvYmFsRXZlbnRDb250ZXh0LnRyaWdnZXIoIGlzU3Vj
Y2VzcyA/ICJhamF4U3VjY2VzcyIgOiAiYWpheEVycm9yIiwKKyAgICAgICAgICAgICAgICAgICAg
WyBqcVhIUiwgcywgaXNTdWNjZXNzID8gc3VjY2VzcyA6IGVycm9yIF0gKTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgLy8gQ29tcGxldGUKKyAgICAgICAgICAgIGNvbXBsZXRlRGVmZXJy
ZWQuZmlyZVdpdGgoIGNhbGxiYWNrQ29udGV4dCwgWyBqcVhIUiwgc3RhdHVzVGV4dCBdICk7CisK
KyAgICAgICAgICAgIGlmICggZmlyZUdsb2JhbHMgKSB7CisgICAgICAgICAgICAgICAgZ2xvYmFs
RXZlbnRDb250ZXh0LnRyaWdnZXIoICJhamF4Q29tcGxldGUiLCBbIGpxWEhSLCBzIF0gKTsKKwor
ICAgICAgICAgICAgICAgIC8vIEhhbmRsZSB0aGUgZ2xvYmFsIEFKQVggY291bnRlcgorICAgICAg
ICAgICAgICAgIGlmICggISggLS1qUXVlcnkuYWN0aXZlICkgKSB7CisgICAgICAgICAgICAgICAg
ICAgIGpRdWVyeS5ldmVudC50cmlnZ2VyKCAiYWpheFN0b3AiICk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGpxWEhSOworICAg
IH0sCisKKyAgICBnZXRKU09OOiBmdW5jdGlvbiggdXJsLCBkYXRhLCBjYWxsYmFjayApIHsKKyAg
ICAgICAgcmV0dXJuIGpRdWVyeS5nZXQoIHVybCwgZGF0YSwgY2FsbGJhY2ssICJqc29uIiApOwor
ICAgIH0sCisKKyAgICBnZXRTY3JpcHQ6IGZ1bmN0aW9uKCB1cmwsIGNhbGxiYWNrICkgeworICAg
ICAgICByZXR1cm4galF1ZXJ5LmdldCggdXJsLCB1bmRlZmluZWQsIGNhbGxiYWNrLCAic2NyaXB0
IiApOworICAgIH0KK30gKTsKKworalF1ZXJ5LmVhY2goIFsgImdldCIsICJwb3N0IiBdLCBmdW5j
dGlvbiggaSwgbWV0aG9kICkgeworICAgIGpRdWVyeVsgbWV0aG9kIF0gPSBmdW5jdGlvbiggdXJs
LCBkYXRhLCBjYWxsYmFjaywgdHlwZSApIHsKKworICAgICAgICAvLyBTaGlmdCBhcmd1bWVudHMg
aWYgZGF0YSBhcmd1bWVudCB3YXMgb21pdHRlZAorICAgICAgICBpZiAoIGpRdWVyeS5pc0Z1bmN0
aW9uKCBkYXRhICkgKSB7CisgICAgICAgICAgICB0eXBlID0gdHlwZSB8fCBjYWxsYmFjazsKKyAg
ICAgICAgICAgIGNhbGxiYWNrID0gZGF0YTsKKyAgICAgICAgICAgIGRhdGEgPSB1bmRlZmluZWQ7
CisgICAgICAgIH0KKworICAgICAgICAvLyBUaGUgdXJsIGNhbiBiZSBhbiBvcHRpb25zIG9iamVj
dCAod2hpY2ggdGhlbiBtdXN0IGhhdmUgLnVybCkKKyAgICAgICAgcmV0dXJuIGpRdWVyeS5hamF4
KCBqUXVlcnkuZXh0ZW5kKCB7CisgICAgICAgICAgICB1cmw6IHVybCwKKyAgICAgICAgICAgIHR5
cGU6IG1ldGhvZCwKKyAgICAgICAgICAgIGRhdGFUeXBlOiB0eXBlLAorICAgICAgICAgICAgZGF0
YTogZGF0YSwKKyAgICAgICAgICAgIHN1Y2Nlc3M6IGNhbGxiYWNrCisgICAgICAgIH0sIGpRdWVy
eS5pc1BsYWluT2JqZWN0KCB1cmwgKSAmJiB1cmwgKSApOworICAgIH07Cit9ICk7CisKK3JldHVy
biBqUXVlcnk7Cit9ICk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21v
ZHVsZXMvanF1ZXJ5L3NyYy9hamF4L2pzb25wLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9k
ZV9tb2R1bGVzL2pxdWVyeS9zcmMvYWpheC9qc29ucC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YzQ3ZTE4MDhl
ZDEwOTQ5Y2VhMTczNGZiMjI5MmRkMWZhMTMyZDhhCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvYWpheC9qc29ucC5qcwpAQCAt
MCwwICsxLDEwMiBAQAorZGVmaW5lKCBbCisgICAgIi4uL2NvcmUiLAorICAgICIuL3Zhci9ub25j
ZSIsCisgICAgIi4vdmFyL3JxdWVyeSIsCisgICAgIi4uL2FqYXgiCitdLCBmdW5jdGlvbiggalF1
ZXJ5LCBub25jZSwgcnF1ZXJ5ICkgeworCisidXNlIHN0cmljdCI7CisKK3ZhciBvbGRDYWxsYmFj
a3MgPSBbXSwKKyAgICByanNvbnAgPSAvKD0pXD8oPz0mfCQpfFw/XD8vOworCisvLyBEZWZhdWx0
IGpzb25wIHNldHRpbmdzCitqUXVlcnkuYWpheFNldHVwKCB7CisgICAganNvbnA6ICJjYWxsYmFj
ayIsCisgICAganNvbnBDYWxsYmFjazogZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBjYWxsYmFj
ayA9IG9sZENhbGxiYWNrcy5wb3AoKSB8fCAoIGpRdWVyeS5leHBhbmRvICsgIl8iICsgKCBub25j
ZSsrICkgKTsKKyAgICAgICAgdGhpc1sgY2FsbGJhY2sgXSA9IHRydWU7CisgICAgICAgIHJldHVy
biBjYWxsYmFjazsKKyAgICB9Cit9ICk7CisKKy8vIERldGVjdCwgbm9ybWFsaXplIG9wdGlvbnMg
YW5kIGluc3RhbGwgY2FsbGJhY2tzIGZvciBqc29ucCByZXF1ZXN0cworalF1ZXJ5LmFqYXhQcmVm
aWx0ZXIoICJqc29uIGpzb25wIiwgZnVuY3Rpb24oIHMsIG9yaWdpbmFsU2V0dGluZ3MsIGpxWEhS
ICkgeworCisgICAgdmFyIGNhbGxiYWNrTmFtZSwgb3ZlcndyaXR0ZW4sIHJlc3BvbnNlQ29udGFp
bmVyLAorICAgICAgICBqc29uUHJvcCA9IHMuanNvbnAgIT09IGZhbHNlICYmICggcmpzb25wLnRl
c3QoIHMudXJsICkgPworICAgICAgICAgICAgInVybCIgOgorICAgICAgICAgICAgdHlwZW9mIHMu
ZGF0YSA9PT0gInN0cmluZyIgJiYKKyAgICAgICAgICAgICAgICAoIHMuY29udGVudFR5cGUgfHwg
IiIgKQorICAgICAgICAgICAgICAgICAgICAuaW5kZXhPZiggImFwcGxpY2F0aW9uL3gtd3d3LWZv
cm0tdXJsZW5jb2RlZCIgKSA9PT0gMCAmJgorICAgICAgICAgICAgICAgIHJqc29ucC50ZXN0KCBz
LmRhdGEgKSAmJiAiZGF0YSIKKyAgICAgICAgKTsKKworICAgIC8vIEhhbmRsZSBpZmYgdGhlIGV4
cGVjdGVkIGRhdGEgdHlwZSBpcyAianNvbnAiIG9yIHdlIGhhdmUgYSBwYXJhbWV0ZXIgdG8gc2V0
CisgICAgaWYgKCBqc29uUHJvcCB8fCBzLmRhdGFUeXBlc1sgMCBdID09PSAianNvbnAiICkgewor
CisgICAgICAgIC8vIEdldCBjYWxsYmFjayBuYW1lLCByZW1lbWJlcmluZyBwcmVleGlzdGluZyB2
YWx1ZSBhc3NvY2lhdGVkIHdpdGggaXQKKyAgICAgICAgY2FsbGJhY2tOYW1lID0gcy5qc29ucENh
bGxiYWNrID0galF1ZXJ5LmlzRnVuY3Rpb24oIHMuanNvbnBDYWxsYmFjayApID8KKyAgICAgICAg
ICAgIHMuanNvbnBDYWxsYmFjaygpIDoKKyAgICAgICAgICAgIHMuanNvbnBDYWxsYmFjazsKKwor
ICAgICAgICAvLyBJbnNlcnQgY2FsbGJhY2sgaW50byB1cmwgb3IgZm9ybSBkYXRhCisgICAgICAg
IGlmICgganNvblByb3AgKSB7CisgICAgICAgICAgICBzWyBqc29uUHJvcCBdID0gc1sganNvblBy
b3AgXS5yZXBsYWNlKCByanNvbnAsICIkMSIgKyBjYWxsYmFja05hbWUgKTsKKyAgICAgICAgfSBl
bHNlIGlmICggcy5qc29ucCAhPT0gZmFsc2UgKSB7CisgICAgICAgICAgICBzLnVybCArPSAoIHJx
dWVyeS50ZXN0KCBzLnVybCApID8gIiYiIDogIj8iICkgKyBzLmpzb25wICsgIj0iICsgY2FsbGJh
Y2tOYW1lOworICAgICAgICB9CisKKyAgICAgICAgLy8gVXNlIGRhdGEgY29udmVydGVyIHRvIHJl
dHJpZXZlIGpzb24gYWZ0ZXIgc2NyaXB0IGV4ZWN1dGlvbgorICAgICAgICBzLmNvbnZlcnRlcnNb
ICJzY3JpcHQganNvbiIgXSA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgaWYgKCAhcmVzcG9u
c2VDb250YWluZXIgKSB7CisgICAgICAgICAgICAgICAgalF1ZXJ5LmVycm9yKCBjYWxsYmFja05h
bWUgKyAiIHdhcyBub3QgY2FsbGVkIiApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0
dXJuIHJlc3BvbnNlQ29udGFpbmVyWyAwIF07CisgICAgICAgIH07CisKKyAgICAgICAgLy8gRm9y
Y2UganNvbiBkYXRhVHlwZQorICAgICAgICBzLmRhdGFUeXBlc1sgMCBdID0gImpzb24iOworCisg
ICAgICAgIC8vIEluc3RhbGwgY2FsbGJhY2sKKyAgICAgICAgb3ZlcndyaXR0ZW4gPSB3aW5kb3db
IGNhbGxiYWNrTmFtZSBdOworICAgICAgICB3aW5kb3dbIGNhbGxiYWNrTmFtZSBdID0gZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICByZXNwb25zZUNvbnRhaW5lciA9IGFyZ3VtZW50czsKKyAgICAg
ICAgfTsKKworICAgICAgICAvLyBDbGVhbi11cCBmdW5jdGlvbiAoZmlyZXMgYWZ0ZXIgY29udmVy
dGVycykKKyAgICAgICAganFYSFIuYWx3YXlzKCBmdW5jdGlvbigpIHsKKworICAgICAgICAgICAg
Ly8gSWYgcHJldmlvdXMgdmFsdWUgZGlkbid0IGV4aXN0IC0gcmVtb3ZlIGl0CisgICAgICAgICAg
ICBpZiAoIG92ZXJ3cml0dGVuID09PSB1bmRlZmluZWQgKSB7CisgICAgICAgICAgICAgICAgalF1
ZXJ5KCB3aW5kb3cgKS5yZW1vdmVQcm9wKCBjYWxsYmFja05hbWUgKTsKKworICAgICAgICAgICAg
Ly8gT3RoZXJ3aXNlIHJlc3RvcmUgcHJlZXhpc3RpbmcgdmFsdWUKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgd2luZG93WyBjYWxsYmFja05hbWUgXSA9IG92ZXJ3cml0dGVu
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBTYXZlIGJhY2sgYXMgZnJlZQorICAg
ICAgICAgICAgaWYgKCBzWyBjYWxsYmFja05hbWUgXSApIHsKKworICAgICAgICAgICAgICAgIC8v
IE1ha2Ugc3VyZSB0aGF0IHJlLXVzaW5nIHRoZSBvcHRpb25zIGRvZXNuJ3Qgc2NyZXcgdGhpbmdz
IGFyb3VuZAorICAgICAgICAgICAgICAgIHMuanNvbnBDYWxsYmFjayA9IG9yaWdpbmFsU2V0dGlu
Z3MuanNvbnBDYWxsYmFjazsKKworICAgICAgICAgICAgICAgIC8vIFNhdmUgdGhlIGNhbGxiYWNr
IG5hbWUgZm9yIGZ1dHVyZSB1c2UKKyAgICAgICAgICAgICAgICBvbGRDYWxsYmFja3MucHVzaCgg
Y2FsbGJhY2tOYW1lICk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIENhbGwgaWYg
aXQgd2FzIGEgZnVuY3Rpb24gYW5kIHdlIGhhdmUgYSByZXNwb25zZQorICAgICAgICAgICAgaWYg
KCByZXNwb25zZUNvbnRhaW5lciAmJiBqUXVlcnkuaXNGdW5jdGlvbiggb3ZlcndyaXR0ZW4gKSAp
IHsKKyAgICAgICAgICAgICAgICBvdmVyd3JpdHRlbiggcmVzcG9uc2VDb250YWluZXJbIDAgXSAp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXNwb25zZUNvbnRhaW5lciA9IG92ZXJ3
cml0dGVuID0gdW5kZWZpbmVkOworICAgICAgICB9ICk7CisKKyAgICAgICAgLy8gRGVsZWdhdGUg
dG8gc2NyaXB0CisgICAgICAgIHJldHVybiAic2NyaXB0IjsKKyAgICB9Cit9ICk7CisKK30gKTsK
ZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3Jj
L2FqYXgvbG9hZC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkv
c3JjL2FqYXgvbG9hZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMzZmZjllMTU4MjA5YjkwNWU5NmE5ZTJlZTc1
ZjZmY2QwNGNiZWI1Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9k
ZV9tb2R1bGVzL2pxdWVyeS9zcmMvYWpheC9sb2FkLmpzCkBAIC0wLDAgKzEsNzYgQEAKK2RlZmlu
ZSggWworICAgICIuLi9jb3JlIiwKKyAgICAiLi4vY29yZS9zdHJpcEFuZENvbGxhcHNlIiwKKyAg
ICAiLi4vY29yZS9wYXJzZUhUTUwiLAorICAgICIuLi9hamF4IiwKKyAgICAiLi4vdHJhdmVyc2lu
ZyIsCisgICAgIi4uL21hbmlwdWxhdGlvbiIsCisgICAgIi4uL3NlbGVjdG9yIgorXSwgZnVuY3Rp
b24oIGpRdWVyeSwgc3RyaXBBbmRDb2xsYXBzZSApIHsKKworInVzZSBzdHJpY3QiOworCisvKioK
KyAqIExvYWQgYSB1cmwgaW50byBhIHBhZ2UKKyAqLworalF1ZXJ5LmZuLmxvYWQgPSBmdW5jdGlv
biggdXJsLCBwYXJhbXMsIGNhbGxiYWNrICkgeworICAgIHZhciBzZWxlY3RvciwgdHlwZSwgcmVz
cG9uc2UsCisgICAgICAgIHNlbGYgPSB0aGlzLAorICAgICAgICBvZmYgPSB1cmwuaW5kZXhPZigg
IiAiICk7CisKKyAgICBpZiAoIG9mZiA+IC0xICkgeworICAgICAgICBzZWxlY3RvciA9IHN0cmlw
QW5kQ29sbGFwc2UoIHVybC5zbGljZSggb2ZmICkgKTsKKyAgICAgICAgdXJsID0gdXJsLnNsaWNl
KCAwLCBvZmYgKTsKKyAgICB9CisKKyAgICAvLyBJZiBpdCdzIGEgZnVuY3Rpb24KKyAgICBpZiAo
IGpRdWVyeS5pc0Z1bmN0aW9uKCBwYXJhbXMgKSApIHsKKworICAgICAgICAvLyBXZSBhc3N1bWUg
dGhhdCBpdCdzIHRoZSBjYWxsYmFjaworICAgICAgICBjYWxsYmFjayA9IHBhcmFtczsKKyAgICAg
ICAgcGFyYW1zID0gdW5kZWZpbmVkOworCisgICAgLy8gT3RoZXJ3aXNlLCBidWlsZCBhIHBhcmFt
IHN0cmluZworICAgIH0gZWxzZSBpZiAoIHBhcmFtcyAmJiB0eXBlb2YgcGFyYW1zID09PSAib2Jq
ZWN0IiApIHsKKyAgICAgICAgdHlwZSA9ICJQT1NUIjsKKyAgICB9CisKKyAgICAvLyBJZiB3ZSBo
YXZlIGVsZW1lbnRzIHRvIG1vZGlmeSwgbWFrZSB0aGUgcmVxdWVzdAorICAgIGlmICggc2VsZi5s
ZW5ndGggPiAwICkgeworICAgICAgICBqUXVlcnkuYWpheCggeworICAgICAgICAgICAgdXJsOiB1
cmwsCisKKyAgICAgICAgICAgIC8vIElmICJ0eXBlIiB2YXJpYWJsZSBpcyB1bmRlZmluZWQsIHRo
ZW4gIkdFVCIgbWV0aG9kIHdpbGwgYmUgdXNlZC4KKyAgICAgICAgICAgIC8vIE1ha2UgdmFsdWUg
b2YgdGhpcyBmaWVsZCBleHBsaWNpdCBzaW5jZQorICAgICAgICAgICAgLy8gdXNlciBjYW4gb3Zl
cnJpZGUgaXQgdGhyb3VnaCBhamF4U2V0dXAgbWV0aG9kCisgICAgICAgICAgICB0eXBlOiB0eXBl
IHx8ICJHRVQiLAorICAgICAgICAgICAgZGF0YVR5cGU6ICJodG1sIiwKKyAgICAgICAgICAgIGRh
dGE6IHBhcmFtcworICAgICAgICB9ICkuZG9uZSggZnVuY3Rpb24oIHJlc3BvbnNlVGV4dCApIHsK
KworICAgICAgICAgICAgLy8gU2F2ZSByZXNwb25zZSBmb3IgdXNlIGluIGNvbXBsZXRlIGNhbGxi
YWNrCisgICAgICAgICAgICByZXNwb25zZSA9IGFyZ3VtZW50czsKKworICAgICAgICAgICAgc2Vs
Zi5odG1sKCBzZWxlY3RvciA/CisKKyAgICAgICAgICAgICAgICAvLyBJZiBhIHNlbGVjdG9yIHdh
cyBzcGVjaWZpZWQsIGxvY2F0ZSB0aGUgcmlnaHQgZWxlbWVudHMgaW4gYSBkdW1teSBkaXYKKyAg
ICAgICAgICAgICAgICAvLyBFeGNsdWRlIHNjcmlwdHMgdG8gYXZvaWQgSUUgJ1Blcm1pc3Npb24g
RGVuaWVkJyBlcnJvcnMKKyAgICAgICAgICAgICAgICBqUXVlcnkoICI8ZGl2PiIgKS5hcHBlbmQo
IGpRdWVyeS5wYXJzZUhUTUwoIHJlc3BvbnNlVGV4dCApICkuZmluZCggc2VsZWN0b3IgKSA6CisK
KyAgICAgICAgICAgICAgICAvLyBPdGhlcndpc2UgdXNlIHRoZSBmdWxsIHJlc3VsdAorICAgICAg
ICAgICAgICAgIHJlc3BvbnNlVGV4dCApOworCisgICAgICAgIC8vIElmIHRoZSByZXF1ZXN0IHN1
Y2NlZWRzLCB0aGlzIGZ1bmN0aW9uIGdldHMgImRhdGEiLCAic3RhdHVzIiwgImpxWEhSIgorICAg
ICAgICAvLyBidXQgdGhleSBhcmUgaWdub3JlZCBiZWNhdXNlIHJlc3BvbnNlIHdhcyBzZXQgYWJv
dmUuCisgICAgICAgIC8vIElmIGl0IGZhaWxzLCB0aGlzIGZ1bmN0aW9uIGdldHMgImpxWEhSIiwg
InN0YXR1cyIsICJlcnJvciIKKyAgICAgICAgfSApLmFsd2F5cyggY2FsbGJhY2sgJiYgZnVuY3Rp
b24oIGpxWEhSLCBzdGF0dXMgKSB7CisgICAgICAgICAgICBzZWxmLmVhY2goIGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgICAgIGNhbGxiYWNrLmFwcGx5KCB0aGlzLCByZXNwb25zZSB8fCBbIGpx
WEhSLnJlc3BvbnNlVGV4dCwgc3RhdHVzLCBqcVhIUiBdICk7CisgICAgICAgICAgICB9ICk7Cisg
ICAgICAgIH0gKTsKKyAgICB9CisKKyAgICByZXR1cm4gdGhpczsKK307CisKK30gKTsKZGlmZiAt
LWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2FqYXgv
cGFyc2VYTUwuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3Ny
Yy9hamF4L3BhcnNlWE1MLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRkZmEzZWI2N2RkNzA1ZDUwNGJlMjQwYzFj
OTM1MzgwY2E2NDllMGYKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9u
b2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9hamF4L3BhcnNlWE1MLmpzCkBAIC0wLDAgKzEsMzAgQEAK
K2RlZmluZSggWworICAgICIuLi9jb3JlIgorXSwgZnVuY3Rpb24oIGpRdWVyeSApIHsKKworInVz
ZSBzdHJpY3QiOworCisvLyBDcm9zcy1icm93c2VyIHhtbCBwYXJzaW5nCitqUXVlcnkucGFyc2VY
TUwgPSBmdW5jdGlvbiggZGF0YSApIHsKKyAgICB2YXIgeG1sOworICAgIGlmICggIWRhdGEgfHwg
dHlwZW9mIGRhdGEgIT09ICJzdHJpbmciICkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9
CisKKyAgICAvLyBTdXBwb3J0OiBJRSA5IC0gMTEgb25seQorICAgIC8vIElFIHRocm93cyBvbiBw
YXJzZUZyb21TdHJpbmcgd2l0aCBpbnZhbGlkIGlucHV0LgorICAgIHRyeSB7CisgICAgICAgIHht
bCA9ICggbmV3IHdpbmRvdy5ET01QYXJzZXIoKSApLnBhcnNlRnJvbVN0cmluZyggZGF0YSwgInRl
eHQveG1sIiApOworICAgIH0gY2F0Y2ggKCBlICkgeworICAgICAgICB4bWwgPSB1bmRlZmluZWQ7
CisgICAgfQorCisgICAgaWYgKCAheG1sIHx8IHhtbC5nZXRFbGVtZW50c0J5VGFnTmFtZSggInBh
cnNlcmVycm9yIiApLmxlbmd0aCApIHsKKyAgICAgICAgalF1ZXJ5LmVycm9yKCAiSW52YWxpZCBY
TUw6ICIgKyBkYXRhICk7CisgICAgfQorICAgIHJldHVybiB4bWw7Cit9OworCityZXR1cm4galF1
ZXJ5LnBhcnNlWE1MOworCit9ICk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9u
b2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9hamF4L3NjcmlwdC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2ti
b25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2FqYXgvc2NyaXB0LmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdh
MTAwYjJhMTViNzEyYWJkMWViZWUxYjc0Zjk1YjRkNDUyYjQ1YWEKLS0tIC9kZXYvbnVsbAorKysg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9hamF4L3Njcmlw
dC5qcwpAQCAtMCwwICsxLDc3IEBACitkZWZpbmUoIFsKKyAgICAiLi4vY29yZSIsCisgICAgIi4u
L3Zhci9kb2N1bWVudCIsCisgICAgIi4uL2FqYXgiCitdLCBmdW5jdGlvbiggalF1ZXJ5LCBkb2N1
bWVudCApIHsKKworInVzZSBzdHJpY3QiOworCisvLyBQcmV2ZW50IGF1dG8tZXhlY3V0aW9uIG9m
IHNjcmlwdHMgd2hlbiBubyBleHBsaWNpdCBkYXRhVHlwZSB3YXMgcHJvdmlkZWQgKFNlZSBnaC0y
NDMyKQoralF1ZXJ5LmFqYXhQcmVmaWx0ZXIoIGZ1bmN0aW9uKCBzICkgeworICAgIGlmICggcy5j
cm9zc0RvbWFpbiApIHsKKyAgICAgICAgcy5jb250ZW50cy5zY3JpcHQgPSBmYWxzZTsKKyAgICB9
Cit9ICk7CisKKy8vIEluc3RhbGwgc2NyaXB0IGRhdGFUeXBlCitqUXVlcnkuYWpheFNldHVwKCB7
CisgICAgYWNjZXB0czogeworICAgICAgICBzY3JpcHQ6ICJ0ZXh0L2phdmFzY3JpcHQsIGFwcGxp
Y2F0aW9uL2phdmFzY3JpcHQsICIgKworICAgICAgICAgICAgImFwcGxpY2F0aW9uL2VjbWFzY3Jp
cHQsIGFwcGxpY2F0aW9uL3gtZWNtYXNjcmlwdCIKKyAgICB9LAorICAgIGNvbnRlbnRzOiB7Cisg
ICAgICAgIHNjcmlwdDogL1xiKD86amF2YXxlY21hKXNjcmlwdFxiLworICAgIH0sCisgICAgY29u
dmVydGVyczogeworICAgICAgICAidGV4dCBzY3JpcHQiOiBmdW5jdGlvbiggdGV4dCApIHsKKyAg
ICAgICAgICAgIGpRdWVyeS5nbG9iYWxFdmFsKCB0ZXh0ICk7CisgICAgICAgICAgICByZXR1cm4g
dGV4dDsKKyAgICAgICAgfQorICAgIH0KK30gKTsKKworLy8gSGFuZGxlIGNhY2hlJ3Mgc3BlY2lh
bCBjYXNlIGFuZCBjcm9zc0RvbWFpbgoralF1ZXJ5LmFqYXhQcmVmaWx0ZXIoICJzY3JpcHQiLCBm
dW5jdGlvbiggcyApIHsKKyAgICBpZiAoIHMuY2FjaGUgPT09IHVuZGVmaW5lZCApIHsKKyAgICAg
ICAgcy5jYWNoZSA9IGZhbHNlOworICAgIH0KKyAgICBpZiAoIHMuY3Jvc3NEb21haW4gKSB7Cisg
ICAgICAgIHMudHlwZSA9ICJHRVQiOworICAgIH0KK30gKTsKKworLy8gQmluZCBzY3JpcHQgdGFn
IGhhY2sgdHJhbnNwb3J0CitqUXVlcnkuYWpheFRyYW5zcG9ydCggInNjcmlwdCIsIGZ1bmN0aW9u
KCBzICkgeworCisgICAgLy8gVGhpcyB0cmFuc3BvcnQgb25seSBkZWFscyB3aXRoIGNyb3NzIGRv
bWFpbiByZXF1ZXN0cworICAgIGlmICggcy5jcm9zc0RvbWFpbiApIHsKKyAgICAgICAgdmFyIHNj
cmlwdCwgY2FsbGJhY2s7CisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICBzZW5kOiBmdW5j
dGlvbiggXywgY29tcGxldGUgKSB7CisgICAgICAgICAgICAgICAgc2NyaXB0ID0galF1ZXJ5KCAi
PHNjcmlwdD4iICkucHJvcCggeworICAgICAgICAgICAgICAgICAgICBjaGFyc2V0OiBzLnNjcmlw
dENoYXJzZXQsCisgICAgICAgICAgICAgICAgICAgIHNyYzogcy51cmwKKyAgICAgICAgICAgICAg
ICB9ICkub24oCisgICAgICAgICAgICAgICAgICAgICJsb2FkIGVycm9yIiwKKyAgICAgICAgICAg
ICAgICAgICAgY2FsbGJhY2sgPSBmdW5jdGlvbiggZXZ0ICkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgc2NyaXB0LnJlbW92ZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sg
PSBudWxsOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBldnQgKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29tcGxldGUoIGV2dC50eXBlID09PSAiZXJyb3IiID8gNDA0IDog
MjAwLCBldnQudHlwZSApOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgKTsKKworICAgICAgICAgICAgICAgIC8vIFVzZSBu
YXRpdmUgRE9NIG1hbmlwdWxhdGlvbiB0byBhdm9pZCBvdXIgZG9tTWFuaXAgQUpBWCB0cmlja2Vy
eQorICAgICAgICAgICAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoIHNjcmlwdFsgMCBd
ICk7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgYWJvcnQ6IGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgICAgIGlmICggY2FsbGJhY2sgKSB7CisgICAgICAgICAgICAgICAgICAgIGNhbGxi
YWNrKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9OworICAg
IH0KK30gKTsKKworfSApOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9t
b2R1bGVzL2pxdWVyeS9zcmMvYWpheC92YXIvbG9jYXRpb24uanMgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNr
Ym9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9hamF4L3Zhci9sb2NhdGlvbi5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jYTljZTUyOGQ3NTEwMzM2YTU5YTBhMTc5ZTJmZGJhOTBhYTc3NmU4Ci0tLSAvZGV2L251
bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvYWph
eC92YXIvbG9jYXRpb24uanMKQEAgLTAsMCArMSw1IEBACitkZWZpbmUoIGZ1bmN0aW9uKCkgewor
ICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHJldHVybiB3aW5kb3cubG9jYXRpb247Cit9ICk7CmRp
ZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9h
amF4L3Zhci9ub25jZS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVl
cnkvc3JjL2FqYXgvdmFyL25vbmNlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRmYmJmMzY1MGJiZTcxODRlNmI5
NWZjNzcxOWVlYmRmYWQ5MWVhZWYKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNr
Ym9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9hamF4L3Zhci9ub25jZS5qcwpAQCAtMCwwICsx
LDcgQEAKK2RlZmluZSggWworICAgICIuLi8uLi9jb3JlIgorXSwgZnVuY3Rpb24oIGpRdWVyeSAp
IHsKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICByZXR1cm4galF1ZXJ5Lm5vdygpOworfSApOwpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMv
YWpheC92YXIvcnF1ZXJ5LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2px
dWVyeS9zcmMvYWpheC92YXIvcnF1ZXJ5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmNDQ0YmYwZDY3YTdlZDdm
ZWI3NThlNWU0NTEyMTQwZjg1OWVhYmYKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9i
YWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9hamF4L3Zhci9ycXVlcnkuanMKQEAgLTAs
MCArMSw1IEBACitkZWZpbmUoIGZ1bmN0aW9uKCkgeworICAgICJ1c2Ugc3RyaWN0IjsKKworICAg
IHJldHVybiAoIC9cPy8gKTsKK30gKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25l
L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2FqYXgveGhyLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2Jv
bmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvYWpheC94aHIuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjEzMjkz
YTg4ZTM0MjVlNjk5MjI2ZjM4ZWZiMTlhNzc1OGE1YzEzMAotLS0gL2Rldi9udWxsCisrKyBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2FqYXgveGhyLmpzCkBA
IC0wLDAgKzEsMTY5IEBACitkZWZpbmUoIFsKKyAgICAiLi4vY29yZSIsCisgICAgIi4uL3Zhci9z
dXBwb3J0IiwKKyAgICAiLi4vYWpheCIKK10sIGZ1bmN0aW9uKCBqUXVlcnksIHN1cHBvcnQgKSB7
CisKKyJ1c2Ugc3RyaWN0IjsKKworalF1ZXJ5LmFqYXhTZXR0aW5ncy54aHIgPSBmdW5jdGlvbigp
IHsKKyAgICB0cnkgeworICAgICAgICByZXR1cm4gbmV3IHdpbmRvdy5YTUxIdHRwUmVxdWVzdCgp
OworICAgIH0gY2F0Y2ggKCBlICkge30KK307CisKK3ZhciB4aHJTdWNjZXNzU3RhdHVzID0gewor
CisgICAgICAgIC8vIEZpbGUgcHJvdG9jb2wgYWx3YXlzIHlpZWxkcyBzdGF0dXMgY29kZSAwLCBh
c3N1bWUgMjAwCisgICAgICAgIDA6IDIwMCwKKworICAgICAgICAvLyBTdXBwb3J0OiBJRSA8PTkg
b25seQorICAgICAgICAvLyAjMTQ1MDogc29tZXRpbWVzIElFIHJldHVybnMgMTIyMyB3aGVuIGl0
IHNob3VsZCBiZSAyMDQKKyAgICAgICAgMTIyMzogMjA0CisgICAgfSwKKyAgICB4aHJTdXBwb3J0
ZWQgPSBqUXVlcnkuYWpheFNldHRpbmdzLnhocigpOworCitzdXBwb3J0LmNvcnMgPSAhIXhoclN1
cHBvcnRlZCAmJiAoICJ3aXRoQ3JlZGVudGlhbHMiIGluIHhoclN1cHBvcnRlZCApOworc3VwcG9y
dC5hamF4ID0geGhyU3VwcG9ydGVkID0gISF4aHJTdXBwb3J0ZWQ7CisKK2pRdWVyeS5hamF4VHJh
bnNwb3J0KCBmdW5jdGlvbiggb3B0aW9ucyApIHsKKyAgICB2YXIgY2FsbGJhY2ssIGVycm9yQ2Fs
bGJhY2s7CisKKyAgICAvLyBDcm9zcyBkb21haW4gb25seSBhbGxvd2VkIGlmIHN1cHBvcnRlZCB0
aHJvdWdoIFhNTEh0dHBSZXF1ZXN0CisgICAgaWYgKCBzdXBwb3J0LmNvcnMgfHwgeGhyU3VwcG9y
dGVkICYmICFvcHRpb25zLmNyb3NzRG9tYWluICkgeworICAgICAgICByZXR1cm4geworICAgICAg
ICAgICAgc2VuZDogZnVuY3Rpb24oIGhlYWRlcnMsIGNvbXBsZXRlICkgeworICAgICAgICAgICAg
ICAgIHZhciBpLAorICAgICAgICAgICAgICAgICAgICB4aHIgPSBvcHRpb25zLnhocigpOworCisg
ICAgICAgICAgICAgICAgeGhyLm9wZW4oCisgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMudHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy51cmwsCisgICAgICAgICAgICAgICAgICAg
IG9wdGlvbnMuYXN5bmMsCisgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMudXNlcm5hbWUsCisg
ICAgICAgICAgICAgICAgICAgIG9wdGlvbnMucGFzc3dvcmQKKyAgICAgICAgICAgICAgICApOwor
CisgICAgICAgICAgICAgICAgLy8gQXBwbHkgY3VzdG9tIGZpZWxkcyBpZiBwcm92aWRlZAorICAg
ICAgICAgICAgICAgIGlmICggb3B0aW9ucy54aHJGaWVsZHMgKSB7CisgICAgICAgICAgICAgICAg
ICAgIGZvciAoIGkgaW4gb3B0aW9ucy54aHJGaWVsZHMgKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICB4aHJbIGkgXSA9IG9wdGlvbnMueGhyRmllbGRzWyBpIF07CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBPdmVycmlkZSBt
aW1lIHR5cGUgaWYgbmVlZGVkCisgICAgICAgICAgICAgICAgaWYgKCBvcHRpb25zLm1pbWVUeXBl
ICYmIHhoci5vdmVycmlkZU1pbWVUeXBlICkgeworICAgICAgICAgICAgICAgICAgICB4aHIub3Zl
cnJpZGVNaW1lVHlwZSggb3B0aW9ucy5taW1lVHlwZSApOworICAgICAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgICAgIC8vIFgtUmVxdWVzdGVkLVdpdGggaGVhZGVyCisgICAgICAgICAgICAg
ICAgLy8gRm9yIGNyb3NzLWRvbWFpbiByZXF1ZXN0cywgc2VlaW5nIGFzIGNvbmRpdGlvbnMgZm9y
IGEgcHJlZmxpZ2h0IGFyZQorICAgICAgICAgICAgICAgIC8vIGFraW4gdG8gYSBqaWdzYXcgcHV6
emxlLCB3ZSBzaW1wbHkgbmV2ZXIgc2V0IGl0IHRvIGJlIHN1cmUuCisgICAgICAgICAgICAgICAg
Ly8gKGl0IGNhbiBhbHdheXMgYmUgc2V0IG9uIGEgcGVyLXJlcXVlc3QgYmFzaXMgb3IgZXZlbiB1
c2luZyBhamF4U2V0dXApCisgICAgICAgICAgICAgICAgLy8gRm9yIHNhbWUtZG9tYWluIHJlcXVl
c3RzLCB3b24ndCBjaGFuZ2UgaGVhZGVyIGlmIGFscmVhZHkgcHJvdmlkZWQuCisgICAgICAgICAg
ICAgICAgaWYgKCAhb3B0aW9ucy5jcm9zc0RvbWFpbiAmJiAhaGVhZGVyc1sgIlgtUmVxdWVzdGVk
LVdpdGgiIF0gKSB7CisgICAgICAgICAgICAgICAgICAgIGhlYWRlcnNbICJYLVJlcXVlc3RlZC1X
aXRoIiBdID0gIlhNTEh0dHBSZXF1ZXN0IjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICAgICAvLyBTZXQgaGVhZGVycworICAgICAgICAgICAgICAgIGZvciAoIGkgaW4gaGVhZGVy
cyApIHsKKyAgICAgICAgICAgICAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoIGksIGhlYWRl
cnNbIGkgXSApOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIENhbGxi
YWNrCisgICAgICAgICAgICAgICAgY2FsbGJhY2sgPSBmdW5jdGlvbiggdHlwZSApIHsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCBjYWxsYmFjayApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFj
ayA9IGVycm9yQ2FsbGJhY2sgPSB4aHIub25sb2FkID0KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgeGhyLm9uZXJyb3IgPSB4aHIub25hYm9ydCA9IHhoci5vbnJlYWR5c3RhdGVjaGFu
Z2UgPSBudWxsOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCB0eXBlID09PSAi
YWJvcnQiICkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4aHIuYWJvcnQoKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCB0eXBlID09PSAiZXJyb3Ii
ICkgeworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6IElFIDw9
OSBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE9uIGEgbWFudWFsIG5h
dGl2ZSBhYm9ydCwgSUU5IHRocm93cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBlcnJvcnMgb24gYW55IHByb3BlcnR5IGFjY2VzcyB0aGF0IGlzIG5vdCByZWFkeVN0YXRlCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggdHlwZW9mIHhoci5zdGF0dXMgIT09
ICJudW1iZXIiICkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxl
dGUoIDAsICJlcnJvciIgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlKAorCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRmlsZTogcHJvdG9jb2wgYWx3
YXlzIHlpZWxkcyBzdGF0dXMgMDsgc2VlICM4NjA1LCAjMTQyMDcKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB4aHIuc3RhdHVzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHhoci5zdGF0dXNUZXh0CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29tcGxldGUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4
aHJTdWNjZXNzU3RhdHVzWyB4aHIuc3RhdHVzIF0gfHwgeGhyLnN0YXR1cywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHhoci5zdGF0dXNUZXh0LAorCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBTdXBwb3J0OiBJRSA8PTkgb25seQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSUU5IGhhcyBubyBYSFIyIGJ1dCB0aHJvd3Mg
b24gYmluYXJ5ICh0cmFjLTExNDI2KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gRm9yIFhIUjIgbm9uLXRleHQsIGxldCB0aGUgY2FsbGVyIGhhbmRsZSBpdCAoZ2gtMjQ5
OCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeGhyLnJlc3BvbnNlVHlw
ZSB8fCAidGV4dCIgKSAhPT0gInRleHQiICB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdHlwZW9mIHhoci5yZXNwb25zZVRleHQgIT09ICJzdHJpbmciID8KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGJpbmFyeTogeGhyLnJlc3BvbnNlIH0g
OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgdGV4dDogeGhyLnJl
c3BvbnNlVGV4dCB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGhyLmdl
dEFsbFJlc3BvbnNlSGVhZGVycygpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAg
ICAgICAgICAvLyBMaXN0ZW4gdG8gZXZlbnRzCisgICAgICAgICAgICAgICAgeGhyLm9ubG9hZCA9
IGNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgZXJyb3JDYWxsYmFjayA9IHhoci5vbmVycm9y
ID0gY2FsbGJhY2soICJlcnJvciIgKTsKKworICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6IElF
IDkgb25seQorICAgICAgICAgICAgICAgIC8vIFVzZSBvbnJlYWR5c3RhdGVjaGFuZ2UgdG8gcmVw
bGFjZSBvbmFib3J0CisgICAgICAgICAgICAgICAgLy8gdG8gaGFuZGxlIHVuY2F1Z2h0IGFib3J0
cworICAgICAgICAgICAgICAgIGlmICggeGhyLm9uYWJvcnQgIT09IHVuZGVmaW5lZCApIHsKKyAg
ICAgICAgICAgICAgICAgICAgeGhyLm9uYWJvcnQgPSBlcnJvckNhbGxiYWNrOworICAgICAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHhoci5vbnJlYWR5c3RhdGVjaGFu
Z2UgPSBmdW5jdGlvbigpIHsKKworICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgcmVh
ZHlTdGF0ZSBiZWZvcmUgdGltZW91dCBhcyBpdCBjaGFuZ2VzCisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoIHhoci5yZWFkeVN0YXRlID09PSA0ICkgeworCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gQWxsb3cgb25lcnJvciB0byBiZSBjYWxsZWQgZmlyc3QsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gYnV0IHRoYXQgd2lsbCBub3QgaGFuZGxlIGEgbmF0aXZlIGFi
b3J0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQWxzbywgc2F2ZSBlcnJvckNhbGxi
YWNrIHRvIGEgdmFyaWFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcyB4aHIu
b25lcnJvciBjYW5ub3QgYmUgYWNjZXNzZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3
aW5kb3cuc2V0VGltZW91dCggZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICggY2FsbGJhY2sgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlcnJvckNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7CisgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgICAgLy8gQ3JlYXRlIHRoZSBhYm9ydCBjYWxsYmFjaworICAgICAgICAgICAgICAgIGNh
bGxiYWNrID0gY2FsbGJhY2soICJhYm9ydCIgKTsKKworICAgICAgICAgICAgICAgIHRyeSB7CisK
KyAgICAgICAgICAgICAgICAgICAgLy8gRG8gc2VuZCB0aGUgcmVxdWVzdCAodGhpcyBtYXkgcmFp
c2UgYW4gZXhjZXB0aW9uKQorICAgICAgICAgICAgICAgICAgICB4aHIuc2VuZCggb3B0aW9ucy5o
YXNDb250ZW50ICYmIG9wdGlvbnMuZGF0YSB8fCBudWxsICk7CisgICAgICAgICAgICAgICAgfSBj
YXRjaCAoIGUgKSB7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gIzE0NjgzOiBPbmx5IHJldGhy
b3cgaWYgdGhpcyBoYXNuJ3QgYmVlbiBub3RpZmllZCBhcyBhbiBlcnJvciB5ZXQKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKCBjYWxsYmFjayApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRo
cm93IGU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9LAorCisgICAgICAgICAgICBhYm9ydDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAg
ICAgaWYgKCBjYWxsYmFjayApIHsKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorfSApOwor
Cit9ICk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1
ZXJ5L3NyYy9hdHRyaWJ1dGVzLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVz
L2pxdWVyeS9zcmMvYXR0cmlidXRlcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lM2FiMzhlZjA5Y2NjNzZhYTA2
YmFlYWRmYjAyZTYyMWYyMjQwZDdjCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFj
a2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvYXR0cmlidXRlcy5qcwpAQCAtMCwwICsxLDEz
IEBACitkZWZpbmUoIFsKKyAgICAiLi9jb3JlIiwKKyAgICAiLi9hdHRyaWJ1dGVzL2F0dHIiLAor
ICAgICIuL2F0dHJpYnV0ZXMvcHJvcCIsCisgICAgIi4vYXR0cmlidXRlcy9jbGFzc2VzIiwKKyAg
ICAiLi9hdHRyaWJ1dGVzL3ZhbCIKK10sIGZ1bmN0aW9uKCBqUXVlcnkgKSB7CisKKyJ1c2Ugc3Ry
aWN0IjsKKworLy8gUmV0dXJuIGpRdWVyeSBmb3IgYXR0cmlidXRlcy1vbmx5IGluY2x1c2lvbgor
cmV0dXJuIGpRdWVyeTsKK30gKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25v
ZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2F0dHJpYnV0ZXMvYXR0ci5qcyBiL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2Jh
Y2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2F0dHJpYnV0ZXMvYXR0ci5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45NDQ2OGMxN2QyNWU2OGE0N2FkMjIxZWI1OTk2ZDZmZjgyZGRmZDM1Ci0tLSAvZGV2L251
bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvYXR0
cmlidXRlcy9hdHRyLmpzCkBAIC0wLDAgKzEsMTQwIEBACitkZWZpbmUoIFsKKyAgICAiLi4vY29y
ZSIsCisgICAgIi4uL2NvcmUvYWNjZXNzIiwKKyAgICAiLi9zdXBwb3J0IiwKKyAgICAiLi4vdmFy
L3Jub3RodG1sd2hpdGUiLAorICAgICIuLi9zZWxlY3RvciIKK10sIGZ1bmN0aW9uKCBqUXVlcnks
IGFjY2Vzcywgc3VwcG9ydCwgcm5vdGh0bWx3aGl0ZSApIHsKKworInVzZSBzdHJpY3QiOworCit2
YXIgYm9vbEhvb2ssCisgICAgYXR0ckhhbmRsZSA9IGpRdWVyeS5leHByLmF0dHJIYW5kbGU7CisK
K2pRdWVyeS5mbi5leHRlbmQoIHsKKyAgICBhdHRyOiBmdW5jdGlvbiggbmFtZSwgdmFsdWUgKSB7
CisgICAgICAgIHJldHVybiBhY2Nlc3MoIHRoaXMsIGpRdWVyeS5hdHRyLCBuYW1lLCB2YWx1ZSwg
YXJndW1lbnRzLmxlbmd0aCA+IDEgKTsKKyAgICB9LAorCisgICAgcmVtb3ZlQXR0cjogZnVuY3Rp
b24oIG5hbWUgKSB7CisgICAgICAgIHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgalF1ZXJ5LnJlbW92ZUF0dHIoIHRoaXMsIG5hbWUgKTsKKyAgICAgICAgfSApOwor
ICAgIH0KK30gKTsKKworalF1ZXJ5LmV4dGVuZCggeworICAgIGF0dHI6IGZ1bmN0aW9uKCBlbGVt
LCBuYW1lLCB2YWx1ZSApIHsKKyAgICAgICAgdmFyIHJldCwgaG9va3MsCisgICAgICAgICAgICBu
VHlwZSA9IGVsZW0ubm9kZVR5cGU7CisKKyAgICAgICAgLy8gRG9uJ3QgZ2V0L3NldCBhdHRyaWJ1
dGVzIG9uIHRleHQsIGNvbW1lbnQgYW5kIGF0dHJpYnV0ZSBub2RlcworICAgICAgICBpZiAoIG5U
eXBlID09PSAzIHx8IG5UeXBlID09PSA4IHx8IG5UeXBlID09PSAyICkgeworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gRmFsbGJhY2sgdG8gcHJvcCB3aGVuIGF0
dHJpYnV0ZXMgYXJlIG5vdCBzdXBwb3J0ZWQKKyAgICAgICAgaWYgKCB0eXBlb2YgZWxlbS5nZXRB
dHRyaWJ1dGUgPT09ICJ1bmRlZmluZWQiICkgeworICAgICAgICAgICAgcmV0dXJuIGpRdWVyeS5w
cm9wKCBlbGVtLCBuYW1lLCB2YWx1ZSApOworICAgICAgICB9CisKKyAgICAgICAgLy8gQXR0cmli
dXRlIGhvb2tzIGFyZSBkZXRlcm1pbmVkIGJ5IHRoZSBsb3dlcmNhc2UgdmVyc2lvbgorICAgICAg
ICAvLyBHcmFiIG5lY2Vzc2FyeSBob29rIGlmIG9uZSBpcyBkZWZpbmVkCisgICAgICAgIGlmICgg
blR5cGUgIT09IDEgfHwgIWpRdWVyeS5pc1hNTERvYyggZWxlbSApICkgeworICAgICAgICAgICAg
aG9va3MgPSBqUXVlcnkuYXR0ckhvb2tzWyBuYW1lLnRvTG93ZXJDYXNlKCkgXSB8fAorICAgICAg
ICAgICAgICAgICggalF1ZXJ5LmV4cHIubWF0Y2guYm9vbC50ZXN0KCBuYW1lICkgPyBib29sSG9v
ayA6IHVuZGVmaW5lZCApOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCB2YWx1ZSAhPT0gdW5k
ZWZpbmVkICkgeworICAgICAgICAgICAgaWYgKCB2YWx1ZSA9PT0gbnVsbCApIHsKKyAgICAgICAg
ICAgICAgICBqUXVlcnkucmVtb3ZlQXR0ciggZWxlbSwgbmFtZSApOworICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCBob29rcyAmJiAic2V0
IiBpbiBob29rcyAmJgorICAgICAgICAgICAgICAgICggcmV0ID0gaG9va3Muc2V0KCBlbGVtLCB2
YWx1ZSwgbmFtZSApICkgIT09IHVuZGVmaW5lZCApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
cmV0OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBlbGVtLnNldEF0dHJpYnV0ZSggbmFt
ZSwgdmFsdWUgKyAiIiApOworICAgICAgICAgICAgcmV0dXJuIHZhbHVlOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKCBob29rcyAmJiAiZ2V0IiBpbiBob29rcyAmJiAoIHJldCA9IGhvb2tzLmdl
dCggZWxlbSwgbmFtZSApICkgIT09IG51bGwgKSB7CisgICAgICAgICAgICByZXR1cm4gcmV0Owor
ICAgICAgICB9CisKKyAgICAgICAgcmV0ID0galF1ZXJ5LmZpbmQuYXR0ciggZWxlbSwgbmFtZSAp
OworCisgICAgICAgIC8vIE5vbi1leGlzdGVudCBhdHRyaWJ1dGVzIHJldHVybiBudWxsLCB3ZSBu
b3JtYWxpemUgdG8gdW5kZWZpbmVkCisgICAgICAgIHJldHVybiByZXQgPT0gbnVsbCA/IHVuZGVm
aW5lZCA6IHJldDsKKyAgICB9LAorCisgICAgYXR0ckhvb2tzOiB7CisgICAgICAgIHR5cGU6IHsK
KyAgICAgICAgICAgIHNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlICkgeworICAgICAgICAgICAg
ICAgIGlmICggIXN1cHBvcnQucmFkaW9WYWx1ZSAmJiB2YWx1ZSA9PT0gInJhZGlvIiAmJgorICAg
ICAgICAgICAgICAgICAgICBqUXVlcnkubm9kZU5hbWUoIGVsZW0sICJpbnB1dCIgKSApIHsKKyAg
ICAgICAgICAgICAgICAgICAgdmFyIHZhbCA9IGVsZW0udmFsdWU7CisgICAgICAgICAgICAgICAg
ICAgIGVsZW0uc2V0QXR0cmlidXRlKCAidHlwZSIsIHZhbHVlICk7CisgICAgICAgICAgICAgICAg
ICAgIGlmICggdmFsICkgeworICAgICAgICAgICAgICAgICAgICAgICAgZWxlbS52YWx1ZSA9IHZh
bDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFs
dWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSwK
KworICAgIHJlbW92ZUF0dHI6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSApIHsKKyAgICAgICAgdmFy
IG5hbWUsCisgICAgICAgICAgICBpID0gMCwKKworICAgICAgICAgICAgLy8gQXR0cmlidXRlIG5h
bWVzIGNhbiBjb250YWluIG5vbi1IVE1MIHdoaXRlc3BhY2UgY2hhcmFjdGVycworICAgICAgICAg
ICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwj
YXR0cmlidXRlcy0yCisgICAgICAgICAgICBhdHRyTmFtZXMgPSB2YWx1ZSAmJiB2YWx1ZS5tYXRj
aCggcm5vdGh0bWx3aGl0ZSApOworCisgICAgICAgIGlmICggYXR0ck5hbWVzICYmIGVsZW0ubm9k
ZVR5cGUgPT09IDEgKSB7CisgICAgICAgICAgICB3aGlsZSAoICggbmFtZSA9IGF0dHJOYW1lc1sg
aSsrIF0gKSApIHsKKyAgICAgICAgICAgICAgICBlbGVtLnJlbW92ZUF0dHJpYnV0ZSggbmFtZSAp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfSApOworCisvLyBIb29rcyBmb3Ig
Ym9vbGVhbiBhdHRyaWJ1dGVzCitib29sSG9vayA9IHsKKyAgICBzZXQ6IGZ1bmN0aW9uKCBlbGVt
LCB2YWx1ZSwgbmFtZSApIHsKKyAgICAgICAgaWYgKCB2YWx1ZSA9PT0gZmFsc2UgKSB7CisKKyAg
ICAgICAgICAgIC8vIFJlbW92ZSBib29sZWFuIGF0dHJpYnV0ZXMgd2hlbiBzZXQgdG8gZmFsc2UK
KyAgICAgICAgICAgIGpRdWVyeS5yZW1vdmVBdHRyKCBlbGVtLCBuYW1lICk7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBlbGVtLnNldEF0dHJpYnV0ZSggbmFtZSwgbmFtZSApOworICAg
ICAgICB9CisgICAgICAgIHJldHVybiBuYW1lOworICAgIH0KK307CisKK2pRdWVyeS5lYWNoKCBq
UXVlcnkuZXhwci5tYXRjaC5ib29sLnNvdXJjZS5tYXRjaCggL1x3Ky9nICksIGZ1bmN0aW9uKCBp
LCBuYW1lICkgeworICAgIHZhciBnZXR0ZXIgPSBhdHRySGFuZGxlWyBuYW1lIF0gfHwgalF1ZXJ5
LmZpbmQuYXR0cjsKKworICAgIGF0dHJIYW5kbGVbIG5hbWUgXSA9IGZ1bmN0aW9uKCBlbGVtLCBu
YW1lLCBpc1hNTCApIHsKKyAgICAgICAgdmFyIHJldCwgaGFuZGxlLAorICAgICAgICAgICAgbG93
ZXJjYXNlTmFtZSA9IG5hbWUudG9Mb3dlckNhc2UoKTsKKworICAgICAgICBpZiAoICFpc1hNTCAp
IHsKKworICAgICAgICAgICAgLy8gQXZvaWQgYW4gaW5maW5pdGUgbG9vcCBieSB0ZW1wb3Jhcmls
eSByZW1vdmluZyB0aGlzIGZ1bmN0aW9uIGZyb20gdGhlIGdldHRlcgorICAgICAgICAgICAgaGFu
ZGxlID0gYXR0ckhhbmRsZVsgbG93ZXJjYXNlTmFtZSBdOworICAgICAgICAgICAgYXR0ckhhbmRs
ZVsgbG93ZXJjYXNlTmFtZSBdID0gcmV0OworICAgICAgICAgICAgcmV0ID0gZ2V0dGVyKCBlbGVt
LCBuYW1lLCBpc1hNTCApICE9IG51bGwgPworICAgICAgICAgICAgICAgIGxvd2VyY2FzZU5hbWUg
OgorICAgICAgICAgICAgICAgIG51bGw7CisgICAgICAgICAgICBhdHRySGFuZGxlWyBsb3dlcmNh
c2VOYW1lIF0gPSBoYW5kbGU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJldDsKKyAgICB9
OworfSApOworCit9ICk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21v
ZHVsZXMvanF1ZXJ5L3NyYy9hdHRyaWJ1dGVzL2NsYXNzZXMuanMgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNr
Ym9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9hdHRyaWJ1dGVzL2NsYXNzZXMuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNDlkYjE1MThmM2I0YjIxMDYyODI1N2JhYTVmYmEwYzY1MjQ1MjQ1YwotLS0gL2Rldi9u
dWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2F0
dHJpYnV0ZXMvY2xhc3Nlcy5qcwpAQCAtMCwwICsxLDE3NCBAQAorZGVmaW5lKCBbCisgICAgIi4u
L2NvcmUiLAorICAgICIuLi9jb3JlL3N0cmlwQW5kQ29sbGFwc2UiLAorICAgICIuLi92YXIvcm5v
dGh0bWx3aGl0ZSIsCisgICAgIi4uL2RhdGEvdmFyL2RhdGFQcml2IiwKKyAgICAiLi4vY29yZS9p
bml0IgorXSwgZnVuY3Rpb24oIGpRdWVyeSwgc3RyaXBBbmRDb2xsYXBzZSwgcm5vdGh0bWx3aGl0
ZSwgZGF0YVByaXYgKSB7CisKKyJ1c2Ugc3RyaWN0IjsKKworZnVuY3Rpb24gZ2V0Q2xhc3MoIGVs
ZW0gKSB7CisgICAgcmV0dXJuIGVsZW0uZ2V0QXR0cmlidXRlICYmIGVsZW0uZ2V0QXR0cmlidXRl
KCAiY2xhc3MiICkgfHwgIiI7Cit9CisKK2pRdWVyeS5mbi5leHRlbmQoIHsKKyAgICBhZGRDbGFz
czogZnVuY3Rpb24oIHZhbHVlICkgeworICAgICAgICB2YXIgY2xhc3NlcywgZWxlbSwgY3VyLCBj
dXJWYWx1ZSwgY2xhenosIGosIGZpbmFsVmFsdWUsCisgICAgICAgICAgICBpID0gMDsKKworICAg
ICAgICBpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCB2YWx1ZSApICkgeworICAgICAgICAgICAgcmV0
dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oIGogKSB7CisgICAgICAgICAgICAgICAgalF1ZXJ5KCB0
aGlzICkuYWRkQ2xhc3MoIHZhbHVlLmNhbGwoIHRoaXMsIGosIGdldENsYXNzKCB0aGlzICkgKSAp
OworICAgICAgICAgICAgfSApOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCB0eXBlb2YgdmFs
dWUgPT09ICJzdHJpbmciICYmIHZhbHVlICkgeworICAgICAgICAgICAgY2xhc3NlcyA9IHZhbHVl
Lm1hdGNoKCBybm90aHRtbHdoaXRlICkgfHwgW107CisKKyAgICAgICAgICAgIHdoaWxlICggKCBl
bGVtID0gdGhpc1sgaSsrIF0gKSApIHsKKyAgICAgICAgICAgICAgICBjdXJWYWx1ZSA9IGdldENs
YXNzKCBlbGVtICk7CisgICAgICAgICAgICAgICAgY3VyID0gZWxlbS5ub2RlVHlwZSA9PT0gMSAm
JiAoICIgIiArIHN0cmlwQW5kQ29sbGFwc2UoIGN1clZhbHVlICkgKyAiICIgKTsKKworICAgICAg
ICAgICAgICAgIGlmICggY3VyICkgeworICAgICAgICAgICAgICAgICAgICBqID0gMDsKKyAgICAg
ICAgICAgICAgICAgICAgd2hpbGUgKCAoIGNsYXp6ID0gY2xhc3Nlc1sgaisrIF0gKSApIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICggY3VyLmluZGV4T2YoICIgIiArIGNsYXp6ICsgIiAi
ICkgPCAwICkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1ciArPSBjbGF6eiArICIg
IjsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAgICAgICAgIC8vIE9ubHkgYXNzaWduIGlmIGRpZmZlcmVudCB0byBhdm9pZCB1
bm5lZWRlZCByZW5kZXJpbmcuCisgICAgICAgICAgICAgICAgICAgIGZpbmFsVmFsdWUgPSBzdHJp
cEFuZENvbGxhcHNlKCBjdXIgKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCBjdXJWYWx1ZSAh
PT0gZmluYWxWYWx1ZSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0uc2V0QXR0cmli
dXRlKCAiY2xhc3MiLCBmaW5hbFZhbHVlICk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4g
dGhpczsKKyAgICB9LAorCisgICAgcmVtb3ZlQ2xhc3M6IGZ1bmN0aW9uKCB2YWx1ZSApIHsKKyAg
ICAgICAgdmFyIGNsYXNzZXMsIGVsZW0sIGN1ciwgY3VyVmFsdWUsIGNsYXp6LCBqLCBmaW5hbFZh
bHVlLAorICAgICAgICAgICAgaSA9IDA7CisKKyAgICAgICAgaWYgKCBqUXVlcnkuaXNGdW5jdGlv
biggdmFsdWUgKSApIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCBq
ICkgeworICAgICAgICAgICAgICAgIGpRdWVyeSggdGhpcyApLnJlbW92ZUNsYXNzKCB2YWx1ZS5j
YWxsKCB0aGlzLCBqLCBnZXRDbGFzcyggdGhpcyApICkgKTsKKyAgICAgICAgICAgIH0gKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmICggIWFyZ3VtZW50cy5sZW5ndGggKSB7CisgICAgICAgICAg
ICByZXR1cm4gdGhpcy5hdHRyKCAiY2xhc3MiLCAiIiApOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKCB0eXBlb2YgdmFsdWUgPT09ICJzdHJpbmciICYmIHZhbHVlICkgeworICAgICAgICAgICAg
Y2xhc3NlcyA9IHZhbHVlLm1hdGNoKCBybm90aHRtbHdoaXRlICkgfHwgW107CisKKyAgICAgICAg
ICAgIHdoaWxlICggKCBlbGVtID0gdGhpc1sgaSsrIF0gKSApIHsKKyAgICAgICAgICAgICAgICBj
dXJWYWx1ZSA9IGdldENsYXNzKCBlbGVtICk7CisKKyAgICAgICAgICAgICAgICAvLyBUaGlzIGV4
cHJlc3Npb24gaXMgaGVyZSBmb3IgYmV0dGVyIGNvbXByZXNzaWJpbGl0eSAoc2VlIGFkZENsYXNz
KQorICAgICAgICAgICAgICAgIGN1ciA9IGVsZW0ubm9kZVR5cGUgPT09IDEgJiYgKCAiICIgKyBz
dHJpcEFuZENvbGxhcHNlKCBjdXJWYWx1ZSApICsgIiAiICk7CisKKyAgICAgICAgICAgICAgICBp
ZiAoIGN1ciApIHsKKyAgICAgICAgICAgICAgICAgICAgaiA9IDA7CisgICAgICAgICAgICAgICAg
ICAgIHdoaWxlICggKCBjbGF6eiA9IGNsYXNzZXNbIGorKyBdICkgKSB7CisKKyAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIFJlbW92ZSAqYWxsKiBpbnN0YW5jZXMKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHdoaWxlICggY3VyLmluZGV4T2YoICIgIiArIGNsYXp6ICsgIiAiICkgPiAtMSApIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXIgPSBjdXIucmVwbGFjZSggIiAiICsgY2xh
enogKyAiICIsICIgIiApOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgLy8gT25seSBhc3NpZ24gaWYgZGlmZmVy
ZW50IHRvIGF2b2lkIHVubmVlZGVkIHJlbmRlcmluZy4KKyAgICAgICAgICAgICAgICAgICAgZmlu
YWxWYWx1ZSA9IHN0cmlwQW5kQ29sbGFwc2UoIGN1ciApOworICAgICAgICAgICAgICAgICAgICBp
ZiAoIGN1clZhbHVlICE9PSBmaW5hbFZhbHVlICkgeworICAgICAgICAgICAgICAgICAgICAgICAg
ZWxlbS5zZXRBdHRyaWJ1dGUoICJjbGFzcyIsIGZpbmFsVmFsdWUgKTsKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisg
ICAgICAgIHJldHVybiB0aGlzOworICAgIH0sCisKKyAgICB0b2dnbGVDbGFzczogZnVuY3Rpb24o
IHZhbHVlLCBzdGF0ZVZhbCApIHsKKyAgICAgICAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7CisK
KyAgICAgICAgaWYgKCB0eXBlb2Ygc3RhdGVWYWwgPT09ICJib29sZWFuIiAmJiB0eXBlID09PSAi
c3RyaW5nIiApIHsKKyAgICAgICAgICAgIHJldHVybiBzdGF0ZVZhbCA/IHRoaXMuYWRkQ2xhc3Mo
IHZhbHVlICkgOiB0aGlzLnJlbW92ZUNsYXNzKCB2YWx1ZSApOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggdmFsdWUgKSApIHsKKyAgICAgICAgICAgIHJldHVy
biB0aGlzLmVhY2goIGZ1bmN0aW9uKCBpICkgeworICAgICAgICAgICAgICAgIGpRdWVyeSggdGhp
cyApLnRvZ2dsZUNsYXNzKAorICAgICAgICAgICAgICAgICAgICB2YWx1ZS5jYWxsKCB0aGlzLCBp
LCBnZXRDbGFzcyggdGhpcyApLCBzdGF0ZVZhbCApLAorICAgICAgICAgICAgICAgICAgICBzdGF0
ZVZhbAorICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICB9ICk7CisgICAgICAgIH0KKwor
ICAgICAgICByZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHZhciBj
bGFzc05hbWUsIGksIHNlbGYsIGNsYXNzTmFtZXM7CisKKyAgICAgICAgICAgIGlmICggdHlwZSA9
PT0gInN0cmluZyIgKSB7CisKKyAgICAgICAgICAgICAgICAvLyBUb2dnbGUgaW5kaXZpZHVhbCBj
bGFzcyBuYW1lcworICAgICAgICAgICAgICAgIGkgPSAwOworICAgICAgICAgICAgICAgIHNlbGYg
PSBqUXVlcnkoIHRoaXMgKTsKKyAgICAgICAgICAgICAgICBjbGFzc05hbWVzID0gdmFsdWUubWF0
Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbXTsKKworICAgICAgICAgICAgICAgIHdoaWxlICggKCBj
bGFzc05hbWUgPSBjbGFzc05hbWVzWyBpKysgXSApICkgeworCisgICAgICAgICAgICAgICAgICAg
IC8vIENoZWNrIGVhY2ggY2xhc3NOYW1lIGdpdmVuLCBzcGFjZSBzZXBhcmF0ZWQgbGlzdAorICAg
ICAgICAgICAgICAgICAgICBpZiAoIHNlbGYuaGFzQ2xhc3MoIGNsYXNzTmFtZSApICkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZW1vdmVDbGFzcyggY2xhc3NOYW1lICk7CisgICAg
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFk
ZENsYXNzKCBjbGFzc05hbWUgKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgLy8gVG9nZ2xlIHdob2xlIGNsYXNzIG5hbWUKKyAgICAgICAg
ICAgIH0gZWxzZSBpZiAoIHZhbHVlID09PSB1bmRlZmluZWQgfHwgdHlwZSA9PT0gImJvb2xlYW4i
ICkgeworICAgICAgICAgICAgICAgIGNsYXNzTmFtZSA9IGdldENsYXNzKCB0aGlzICk7CisgICAg
ICAgICAgICAgICAgaWYgKCBjbGFzc05hbWUgKSB7CisKKyAgICAgICAgICAgICAgICAgICAgLy8g
U3RvcmUgY2xhc3NOYW1lIGlmIHNldAorICAgICAgICAgICAgICAgICAgICBkYXRhUHJpdi5zZXQo
IHRoaXMsICJfX2NsYXNzTmFtZV9fIiwgY2xhc3NOYW1lICk7CisgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGVsZW1lbnQgaGFzIGEgY2xhc3MgbmFtZSBvciBp
ZiB3ZSdyZSBwYXNzZWQgYGZhbHNlYCwKKyAgICAgICAgICAgICAgICAvLyB0aGVuIHJlbW92ZSB0
aGUgd2hvbGUgY2xhc3NuYW1lIChpZiB0aGVyZSB3YXMgb25lLCB0aGUgYWJvdmUgc2F2ZWQgaXQp
LgorICAgICAgICAgICAgICAgIC8vIE90aGVyd2lzZSBicmluZyBiYWNrIHdoYXRldmVyIHdhcyBw
cmV2aW91c2x5IHNhdmVkIChpZiBhbnl0aGluZyksCisgICAgICAgICAgICAgICAgLy8gZmFsbGlu
ZyBiYWNrIHRvIHRoZSBlbXB0eSBzdHJpbmcgaWYgbm90aGluZyB3YXMgc3RvcmVkLgorICAgICAg
ICAgICAgICAgIGlmICggdGhpcy5zZXRBdHRyaWJ1dGUgKSB7CisgICAgICAgICAgICAgICAgICAg
IHRoaXMuc2V0QXR0cmlidXRlKCAiY2xhc3MiLAorICAgICAgICAgICAgICAgICAgICAgICAgY2xh
c3NOYW1lIHx8IHZhbHVlID09PSBmYWxzZSA/CisgICAgICAgICAgICAgICAgICAgICAgICAiIiA6
CisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhUHJpdi5nZXQoIHRoaXMsICJfX2NsYXNzTmFt
ZV9fIiApIHx8ICIiCisgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICB9ICk7CisgICAgfSwKKworICAgIGhhc0NsYXNzOiBmdW5j
dGlvbiggc2VsZWN0b3IgKSB7CisgICAgICAgIHZhciBjbGFzc05hbWUsIGVsZW0sCisgICAgICAg
ICAgICBpID0gMDsKKworICAgICAgICBjbGFzc05hbWUgPSAiICIgKyBzZWxlY3RvciArICIgIjsK
KyAgICAgICAgd2hpbGUgKCAoIGVsZW0gPSB0aGlzWyBpKysgXSApICkgeworICAgICAgICAgICAg
aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICYmCisgICAgICAgICAgICAgICAgKCAiICIgKyBzdHJp
cEFuZENvbGxhcHNlKCBnZXRDbGFzcyggZWxlbSApICkgKyAiICIgKS5pbmRleE9mKCBjbGFzc05h
bWUgKSA+IC0xICkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9ICk7CisK
K30gKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVl
cnkvc3JjL2F0dHJpYnV0ZXMvcHJvcC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9k
dWxlcy9qcXVlcnkvc3JjL2F0dHJpYnV0ZXMvcHJvcC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iODZlZmNiOGQz
YTYyODZhMzcyNDU2NWNkYWJhYTMzNmJkYzJhYmQ2Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvYXR0cmlidXRlcy9wcm9wLmpz
CkBAIC0wLDAgKzEsMTQzIEBACitkZWZpbmUoIFsKKyAgICAiLi4vY29yZSIsCisgICAgIi4uL2Nv
cmUvYWNjZXNzIiwKKyAgICAiLi9zdXBwb3J0IiwKKyAgICAiLi4vc2VsZWN0b3IiCitdLCBmdW5j
dGlvbiggalF1ZXJ5LCBhY2Nlc3MsIHN1cHBvcnQgKSB7CisKKyJ1c2Ugc3RyaWN0IjsKKwordmFy
IHJmb2N1c2FibGUgPSAvXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pLAorICAg
IHJjbGlja2FibGUgPSAvXig/OmF8YXJlYSkkL2k7CisKK2pRdWVyeS5mbi5leHRlbmQoIHsKKyAg
ICBwcm9wOiBmdW5jdGlvbiggbmFtZSwgdmFsdWUgKSB7CisgICAgICAgIHJldHVybiBhY2Nlc3Mo
IHRoaXMsIGpRdWVyeS5wcm9wLCBuYW1lLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDEgKTsK
KyAgICB9LAorCisgICAgcmVtb3ZlUHJvcDogZnVuY3Rpb24oIG5hbWUgKSB7CisgICAgICAgIHJl
dHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZGVsZXRlIHRoaXNbIGpR
dWVyeS5wcm9wRml4WyBuYW1lIF0gfHwgbmFtZSBdOworICAgICAgICB9ICk7CisgICAgfQorfSAp
OworCitqUXVlcnkuZXh0ZW5kKCB7CisgICAgcHJvcDogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIHZh
bHVlICkgeworICAgICAgICB2YXIgcmV0LCBob29rcywKKyAgICAgICAgICAgIG5UeXBlID0gZWxl
bS5ub2RlVHlwZTsKKworICAgICAgICAvLyBEb24ndCBnZXQvc2V0IHByb3BlcnRpZXMgb24gdGV4
dCwgY29tbWVudCBhbmQgYXR0cmlidXRlIG5vZGVzCisgICAgICAgIGlmICggblR5cGUgPT09IDMg
fHwgblR5cGUgPT09IDggfHwgblR5cGUgPT09IDIgKSB7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoIG5UeXBlICE9PSAxIHx8ICFqUXVlcnkuaXNYTUxEb2Mo
IGVsZW0gKSApIHsKKworICAgICAgICAgICAgLy8gRml4IG5hbWUgYW5kIGF0dGFjaCBob29rcwor
ICAgICAgICAgICAgbmFtZSA9IGpRdWVyeS5wcm9wRml4WyBuYW1lIF0gfHwgbmFtZTsKKyAgICAg
ICAgICAgIGhvb2tzID0galF1ZXJ5LnByb3BIb29rc1sgbmFtZSBdOworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKCB2YWx1ZSAhPT0gdW5kZWZpbmVkICkgeworICAgICAgICAgICAgaWYgKCBob29r
cyAmJiAic2V0IiBpbiBob29rcyAmJgorICAgICAgICAgICAgICAgICggcmV0ID0gaG9va3Muc2V0
KCBlbGVtLCB2YWx1ZSwgbmFtZSApICkgIT09IHVuZGVmaW5lZCApIHsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gcmV0OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gKCBlbGVt
WyBuYW1lIF0gPSB2YWx1ZSApOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCBob29rcyAmJiAi
Z2V0IiBpbiBob29rcyAmJiAoIHJldCA9IGhvb2tzLmdldCggZWxlbSwgbmFtZSApICkgIT09IG51
bGwgKSB7CisgICAgICAgICAgICByZXR1cm4gcmV0OworICAgICAgICB9CisKKyAgICAgICAgcmV0
dXJuIGVsZW1bIG5hbWUgXTsKKyAgICB9LAorCisgICAgcHJvcEhvb2tzOiB7CisgICAgICAgIHRh
YkluZGV4OiB7CisgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCBlbGVtICkgeworCisgICAgICAg
ICAgICAgICAgLy8gU3VwcG9ydDogSUUgPD05IC0gMTEgb25seQorICAgICAgICAgICAgICAgIC8v
IGVsZW0udGFiSW5kZXggZG9lc24ndCBhbHdheXMgcmV0dXJuIHRoZQorICAgICAgICAgICAgICAg
IC8vIGNvcnJlY3QgdmFsdWUgd2hlbiBpdCBoYXNuJ3QgYmVlbiBleHBsaWNpdGx5IHNldAorICAg
ICAgICAgICAgICAgIC8vIGh0dHBzOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8yMDE0MTExNjIzMzM0
Ny9odHRwOi8vZmx1aWRwcm9qZWN0Lm9yZy9ibG9nLzIwMDgvMDEvMDkvZ2V0dGluZy1zZXR0aW5n
LWFuZC1yZW1vdmluZy10YWJpbmRleC12YWx1ZXMtd2l0aC1qYXZhc2NyaXB0LworICAgICAgICAg
ICAgICAgIC8vIFVzZSBwcm9wZXIgYXR0cmlidXRlIHJldHJpZXZhbCgjMTIwNzIpCisgICAgICAg
ICAgICAgICAgdmFyIHRhYmluZGV4ID0galF1ZXJ5LmZpbmQuYXR0ciggZWxlbSwgInRhYmluZGV4
IiApOworCisgICAgICAgICAgICAgICAgaWYgKCB0YWJpbmRleCApIHsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHBhcnNlSW50KCB0YWJpbmRleCwgMTAgKTsKKyAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICBpZiAoCisgICAgICAgICAgICAgICAgICAgIHJmb2N1c2FibGUu
dGVzdCggZWxlbS5ub2RlTmFtZSApIHx8CisgICAgICAgICAgICAgICAgICAgIHJjbGlja2FibGUu
dGVzdCggZWxlbS5ub2RlTmFtZSApICYmCisgICAgICAgICAgICAgICAgICAgIGVsZW0uaHJlZgor
ICAgICAgICAgICAgICAgICkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9LAorCisgICAgcHJvcEZpeDogeworICAgICAgICAiZm9yIjogImh0
bWxGb3IiLAorICAgICAgICAiY2xhc3MiOiAiY2xhc3NOYW1lIgorICAgIH0KK30gKTsKKworLy8g
U3VwcG9ydDogSUUgPD0xMSBvbmx5CisvLyBBY2Nlc3NpbmcgdGhlIHNlbGVjdGVkSW5kZXggcHJv
cGVydHkKKy8vIGZvcmNlcyB0aGUgYnJvd3NlciB0byByZXNwZWN0IHNldHRpbmcgc2VsZWN0ZWQK
Ky8vIG9uIHRoZSBvcHRpb24KKy8vIFRoZSBnZXR0ZXIgZW5zdXJlcyBhIGRlZmF1bHQgb3B0aW9u
IGlzIHNlbGVjdGVkCisvLyB3aGVuIGluIGFuIG9wdGdyb3VwCisvLyBlc2xpbnQgcnVsZSAibm8t
dW51c2VkLWV4cHJlc3Npb25zIiBpcyBkaXNhYmxlZCBmb3IgdGhpcyBjb2RlCisvLyBzaW5jZSBp
dCBjb25zaWRlcnMgc3VjaCBhY2Nlc3Npb25zIG5vb3AKK2lmICggIXN1cHBvcnQub3B0U2VsZWN0
ZWQgKSB7CisgICAgalF1ZXJ5LnByb3BIb29rcy5zZWxlY3RlZCA9IHsKKyAgICAgICAgZ2V0OiBm
dW5jdGlvbiggZWxlbSApIHsKKworICAgICAgICAgICAgLyogZXNsaW50IG5vLXVudXNlZC1leHBy
ZXNzaW9uczogIm9mZiIgKi8KKworICAgICAgICAgICAgdmFyIHBhcmVudCA9IGVsZW0ucGFyZW50
Tm9kZTsKKyAgICAgICAgICAgIGlmICggcGFyZW50ICYmIHBhcmVudC5wYXJlbnROb2RlICkgewor
ICAgICAgICAgICAgICAgIHBhcmVudC5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXg7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfSwKKyAgICAgICAgc2V0
OiBmdW5jdGlvbiggZWxlbSApIHsKKworICAgICAgICAgICAgLyogZXNsaW50IG5vLXVudXNlZC1l
eHByZXNzaW9uczogIm9mZiIgKi8KKworICAgICAgICAgICAgdmFyIHBhcmVudCA9IGVsZW0ucGFy
ZW50Tm9kZTsKKyAgICAgICAgICAgIGlmICggcGFyZW50ICkgeworICAgICAgICAgICAgICAgIHBh
cmVudC5zZWxlY3RlZEluZGV4OworCisgICAgICAgICAgICAgICAgaWYgKCBwYXJlbnQucGFyZW50
Tm9kZSApIHsKKyAgICAgICAgICAgICAgICAgICAgcGFyZW50LnBhcmVudE5vZGUuc2VsZWN0ZWRJ
bmRleDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
OworfQorCitqUXVlcnkuZWFjaCggWworICAgICJ0YWJJbmRleCIsCisgICAgInJlYWRPbmx5IiwK
KyAgICAibWF4TGVuZ3RoIiwKKyAgICAiY2VsbFNwYWNpbmciLAorICAgICJjZWxsUGFkZGluZyIs
CisgICAgInJvd1NwYW4iLAorICAgICJjb2xTcGFuIiwKKyAgICAidXNlTWFwIiwKKyAgICAiZnJh
bWVCb3JkZXIiLAorICAgICJjb250ZW50RWRpdGFibGUiCitdLCBmdW5jdGlvbigpIHsKKyAgICBq
UXVlcnkucHJvcEZpeFsgdGhpcy50b0xvd2VyQ2FzZSgpIF0gPSB0aGlzOworfSApOworCit9ICk7
CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3Ny
Yy9hdHRyaWJ1dGVzL3N1cHBvcnQuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVs
ZXMvanF1ZXJ5L3NyYy9hdHRyaWJ1dGVzL3N1cHBvcnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTY3ZDQ5YWZi
N2FlZDNkNzk5ZGMwMzQwODYwMmI1ZTFkMGZjM2Q0NwotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2F0dHJpYnV0ZXMvc3VwcG9y
dC5qcwpAQCAtMCwwICsxLDMzIEBACitkZWZpbmUoIFsKKyAgICAiLi4vdmFyL2RvY3VtZW50IiwK
KyAgICAiLi4vdmFyL3N1cHBvcnQiCitdLCBmdW5jdGlvbiggZG9jdW1lbnQsIHN1cHBvcnQgKSB7
CisKKyJ1c2Ugc3RyaWN0IjsKKworKCBmdW5jdGlvbigpIHsKKyAgICB2YXIgaW5wdXQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCAiaW5wdXQiICksCisgICAgICAgIHNlbGVjdCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoICJzZWxlY3QiICksCisgICAgICAgIG9wdCA9IHNlbGVjdC5hcHBlbmRD
aGlsZCggZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggIm9wdGlvbiIgKSApOworCisgICAgaW5wdXQu
dHlwZSA9ICJjaGVja2JveCI7CisKKyAgICAvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4zIG9ubHkK
KyAgICAvLyBEZWZhdWx0IHZhbHVlIGZvciBhIGNoZWNrYm94IHNob3VsZCBiZSAib24iCisgICAg
c3VwcG9ydC5jaGVja09uID0gaW5wdXQudmFsdWUgIT09ICIiOworCisgICAgLy8gU3VwcG9ydDog
SUUgPD0xMSBvbmx5CisgICAgLy8gTXVzdCBhY2Nlc3Mgc2VsZWN0ZWRJbmRleCB0byBtYWtlIGRl
ZmF1bHQgb3B0aW9ucyBzZWxlY3QKKyAgICBzdXBwb3J0Lm9wdFNlbGVjdGVkID0gb3B0LnNlbGVj
dGVkOworCisgICAgLy8gU3VwcG9ydDogSUUgPD0xMSBvbmx5CisgICAgLy8gQW4gaW5wdXQgbG9z
ZXMgaXRzIHZhbHVlIGFmdGVyIGJlY29taW5nIGEgcmFkaW8KKyAgICBpbnB1dCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoICJpbnB1dCIgKTsKKyAgICBpbnB1dC52YWx1ZSA9ICJ0IjsKKyAgICBp
bnB1dC50eXBlID0gInJhZGlvIjsKKyAgICBzdXBwb3J0LnJhZGlvVmFsdWUgPSBpbnB1dC52YWx1
ZSA9PT0gInQiOworfSApKCk7CisKK3JldHVybiBzdXBwb3J0OworCit9ICk7CmRpZmYgLS1naXQg
YS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9hdHRyaWJ1dGVz
L3ZhbC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2F0
dHJpYnV0ZXMvdmFsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhkZjc4Mzc4MDg3YThjOWU2OGNhMTI3MjE2NDU2
NTVmNzA5OGVmNjkKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2Rl
X21vZHVsZXMvanF1ZXJ5L3NyYy9hdHRyaWJ1dGVzL3ZhbC5qcwpAQCAtMCwwICsxLDE4OCBAQAor
ZGVmaW5lKCBbCisgICAgIi4uL2NvcmUiLAorICAgICIuLi9jb3JlL3N0cmlwQW5kQ29sbGFwc2Ui
LAorICAgICIuL3N1cHBvcnQiLAorICAgICIuLi9jb3JlL2luaXQiCitdLCBmdW5jdGlvbiggalF1
ZXJ5LCBzdHJpcEFuZENvbGxhcHNlLCBzdXBwb3J0ICkgeworCisidXNlIHN0cmljdCI7CisKK3Zh
ciBycmV0dXJuID0gL1xyL2c7CisKK2pRdWVyeS5mbi5leHRlbmQoIHsKKyAgICB2YWw6IGZ1bmN0
aW9uKCB2YWx1ZSApIHsKKyAgICAgICAgdmFyIGhvb2tzLCByZXQsIGlzRnVuY3Rpb24sCisgICAg
ICAgICAgICBlbGVtID0gdGhpc1sgMCBdOworCisgICAgICAgIGlmICggIWFyZ3VtZW50cy5sZW5n
dGggKSB7CisgICAgICAgICAgICBpZiAoIGVsZW0gKSB7CisgICAgICAgICAgICAgICAgaG9va3Mg
PSBqUXVlcnkudmFsSG9va3NbIGVsZW0udHlwZSBdIHx8CisgICAgICAgICAgICAgICAgICAgIGpR
dWVyeS52YWxIb29rc1sgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpIF07CisKKyAgICAgICAg
ICAgICAgICBpZiAoIGhvb2tzICYmCisgICAgICAgICAgICAgICAgICAgICJnZXQiIGluIGhvb2tz
ICYmCisgICAgICAgICAgICAgICAgICAgICggcmV0ID0gaG9va3MuZ2V0KCBlbGVtLCAidmFsdWUi
ICkgKSAhPT0gdW5kZWZpbmVkCisgICAgICAgICAgICAgICAgKSB7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiByZXQ7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgcmV0
ID0gZWxlbS52YWx1ZTsKKworICAgICAgICAgICAgICAgIC8vIEhhbmRsZSBtb3N0IGNvbW1vbiBz
dHJpbmcgY2FzZXMKKyAgICAgICAgICAgICAgICBpZiAoIHR5cGVvZiByZXQgPT09ICJzdHJpbmci
ICkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0LnJlcGxhY2UoIHJyZXR1cm4sICIi
ICk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gSGFuZGxlIGNhc2Vz
IHdoZXJlIHZhbHVlIGlzIG51bGwvdW5kZWYgb3IgbnVtYmVyCisgICAgICAgICAgICAgICAgcmV0
dXJuIHJldCA9PSBudWxsID8gIiIgOiByZXQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlzRnVuY3Rpb24gPSBqUXVlcnkuaXNGdW5j
dGlvbiggdmFsdWUgKTsKKworICAgICAgICByZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbiggaSAp
IHsKKyAgICAgICAgICAgIHZhciB2YWw7CisKKyAgICAgICAgICAgIGlmICggdGhpcy5ub2RlVHlw
ZSAhPT0gMSApIHsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGlmICggaXNGdW5jdGlvbiApIHsKKyAgICAgICAgICAgICAgICB2YWwgPSB2YWx1
ZS5jYWxsKCB0aGlzLCBpLCBqUXVlcnkoIHRoaXMgKS52YWwoKSApOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICB2YWwgPSB2YWx1ZTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgLy8gVHJlYXQgbnVsbC91bmRlZmluZWQgYXMgIiI7IGNvbnZlcnQgbnVtYmVycyB0
byBzdHJpbmcKKyAgICAgICAgICAgIGlmICggdmFsID09IG51bGwgKSB7CisgICAgICAgICAgICAg
ICAgdmFsID0gIiI7CisKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoIHR5cGVvZiB2YWwgPT09ICJu
dW1iZXIiICkgeworICAgICAgICAgICAgICAgIHZhbCArPSAiIjsKKworICAgICAgICAgICAgfSBl
bHNlIGlmICggalF1ZXJ5LmlzQXJyYXkoIHZhbCApICkgeworICAgICAgICAgICAgICAgIHZhbCA9
IGpRdWVyeS5tYXAoIHZhbCwgZnVuY3Rpb24oIHZhbHVlICkgeworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdmFsdWUgPT0gbnVsbCA/ICIiIDogdmFsdWUgKyAiIjsKKyAgICAgICAgICAgICAg
ICB9ICk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGhvb2tzID0galF1ZXJ5LnZhbEhv
b2tzWyB0aGlzLnR5cGUgXSB8fCBqUXVlcnkudmFsSG9va3NbIHRoaXMubm9kZU5hbWUudG9Mb3dl
ckNhc2UoKSBdOworCisgICAgICAgICAgICAvLyBJZiBzZXQgcmV0dXJucyB1bmRlZmluZWQsIGZh
bGwgYmFjayB0byBub3JtYWwgc2V0dGluZworICAgICAgICAgICAgaWYgKCAhaG9va3MgfHwgISgg
InNldCIgaW4gaG9va3MgKSB8fCBob29rcy5zZXQoIHRoaXMsIHZhbCwgInZhbHVlIiApID09PSB1
bmRlZmluZWQgKSB7CisgICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHZhbDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfSApOworICAgIH0KK30gKTsKKworalF1ZXJ5LmV4dGVuZCggeworICAg
IHZhbEhvb2tzOiB7CisgICAgICAgIG9wdGlvbjogeworICAgICAgICAgICAgZ2V0OiBmdW5jdGlv
biggZWxlbSApIHsKKworICAgICAgICAgICAgICAgIHZhciB2YWwgPSBqUXVlcnkuZmluZC5hdHRy
KCBlbGVtLCAidmFsdWUiICk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHZhbCAhPSBudWxsID8K
KyAgICAgICAgICAgICAgICAgICAgdmFsIDoKKworICAgICAgICAgICAgICAgICAgICAvLyBTdXBw
b3J0OiBJRSA8PTEwIC0gMTEgb25seQorICAgICAgICAgICAgICAgICAgICAvLyBvcHRpb24udGV4
dCB0aHJvd3MgZXhjZXB0aW9ucyAoIzE0Njg2LCAjMTQ4NTgpCisgICAgICAgICAgICAgICAgICAg
IC8vIFN0cmlwIGFuZCBjb2xsYXBzZSB3aGl0ZXNwYWNlCisgICAgICAgICAgICAgICAgICAgIC8v
IGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI3N0cmlwLWFuZC1jb2xsYXBzZS13aGl0ZXNw
YWNlCisgICAgICAgICAgICAgICAgICAgIHN0cmlwQW5kQ29sbGFwc2UoIGpRdWVyeS50ZXh0KCBl
bGVtICkgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgc2VsZWN0OiB7Cisg
ICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCBlbGVtICkgeworICAgICAgICAgICAgICAgIHZhciB2
YWx1ZSwgb3B0aW9uLCBpLAorICAgICAgICAgICAgICAgICAgICBvcHRpb25zID0gZWxlbS5vcHRp
b25zLAorICAgICAgICAgICAgICAgICAgICBpbmRleCA9IGVsZW0uc2VsZWN0ZWRJbmRleCwKKyAg
ICAgICAgICAgICAgICAgICAgb25lID0gZWxlbS50eXBlID09PSAic2VsZWN0LW9uZSIsCisgICAg
ICAgICAgICAgICAgICAgIHZhbHVlcyA9IG9uZSA/IG51bGwgOiBbXSwKKyAgICAgICAgICAgICAg
ICAgICAgbWF4ID0gb25lID8gaW5kZXggKyAxIDogb3B0aW9ucy5sZW5ndGg7CisKKyAgICAgICAg
ICAgICAgICBpZiAoIGluZGV4IDwgMCApIHsKKyAgICAgICAgICAgICAgICAgICAgaSA9IG1heDsK
KworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGkgPSBvbmUg
PyBpbmRleCA6IDA7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gTG9v
cCB0aHJvdWdoIGFsbCB0aGUgc2VsZWN0ZWQgb3B0aW9ucworICAgICAgICAgICAgICAgIGZvciAo
IDsgaSA8IG1heDsgaSsrICkgeworICAgICAgICAgICAgICAgICAgICBvcHRpb24gPSBvcHRpb25z
WyBpIF07CisKKyAgICAgICAgICAgICAgICAgICAgLy8gU3VwcG9ydDogSUUgPD05IG9ubHkKKyAg
ICAgICAgICAgICAgICAgICAgLy8gSUU4LTkgZG9lc24ndCB1cGRhdGUgc2VsZWN0ZWQgYWZ0ZXIg
Zm9ybSByZXNldCAoIzI1NTEpCisgICAgICAgICAgICAgICAgICAgIGlmICggKCBvcHRpb24uc2Vs
ZWN0ZWQgfHwgaSA9PT0gaW5kZXggKSAmJgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gRG9uJ3QgcmV0dXJuIG9wdGlvbnMgdGhhdCBhcmUgZGlzYWJsZWQgb3IgaW4gYSBkaXNhYmxl
ZCBvcHRncm91cAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICFvcHRpb24uZGlzYWJsZWQg
JiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICFvcHRpb24ucGFyZW50Tm9kZS5kaXNh
YmxlZCB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhalF1ZXJ5Lm5vZGVOYW1l
KCBvcHRpb24ucGFyZW50Tm9kZSwgIm9wdGdyb3VwIiApICkgKSB7CisKKyAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIEdldCB0aGUgc3BlY2lmaWMgdmFsdWUgZm9yIHRoZSBvcHRpb24KKyAgICAg
ICAgICAgICAgICAgICAgICAgIHZhbHVlID0galF1ZXJ5KCBvcHRpb24gKS52YWwoKTsKKworICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCBhbiBhcnJheSBmb3Igb25lIHNl
bGVjdHMKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICggb25lICkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgICAgICAgICAgLy8gTXVsdGktU2VsZWN0cyByZXR1cm4gYW4gYXJy
YXkKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcy5wdXNoKCB2YWx1ZSApOworICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgcmV0
dXJuIHZhbHVlczsKKyAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgIHNldDogZnVuY3Rpb24o
IGVsZW0sIHZhbHVlICkgeworICAgICAgICAgICAgICAgIHZhciBvcHRpb25TZXQsIG9wdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyA9IGVsZW0ub3B0aW9ucywKKyAgICAgICAgICAg
ICAgICAgICAgdmFsdWVzID0galF1ZXJ5Lm1ha2VBcnJheSggdmFsdWUgKSwKKyAgICAgICAgICAg
ICAgICAgICAgaSA9IG9wdGlvbnMubGVuZ3RoOworCisgICAgICAgICAgICAgICAgd2hpbGUgKCBp
LS0gKSB7CisgICAgICAgICAgICAgICAgICAgIG9wdGlvbiA9IG9wdGlvbnNbIGkgXTsKKworICAg
ICAgICAgICAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25kLWFzc2lnbiAqLworCisg
ICAgICAgICAgICAgICAgICAgIGlmICggb3B0aW9uLnNlbGVjdGVkID0KKyAgICAgICAgICAgICAg
ICAgICAgICAgIGpRdWVyeS5pbkFycmF5KCBqUXVlcnkudmFsSG9va3Mub3B0aW9uLmdldCggb3B0
aW9uICksIHZhbHVlcyApID4gLTEKKyAgICAgICAgICAgICAgICAgICAgKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBvcHRpb25TZXQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICAgICAgLyogZXNsaW50LWVuYWJsZSBuby1jb25kLWFzc2lnbiAqLwor
ICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIEZvcmNlIGJyb3dzZXJzIHRv
IGJlaGF2ZSBjb25zaXN0ZW50bHkgd2hlbiBub24tbWF0Y2hpbmcgdmFsdWUgaXMgc2V0CisgICAg
ICAgICAgICAgICAgaWYgKCAhb3B0aW9uU2V0ICkgeworICAgICAgICAgICAgICAgICAgICBlbGVt
LnNlbGVjdGVkSW5kZXggPSAtMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
cmV0dXJuIHZhbHVlczsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30gKTsKKwor
Ly8gUmFkaW9zIGFuZCBjaGVja2JveGVzIGdldHRlci9zZXR0ZXIKK2pRdWVyeS5lYWNoKCBbICJy
YWRpbyIsICJjaGVja2JveCIgXSwgZnVuY3Rpb24oKSB7CisgICAgalF1ZXJ5LnZhbEhvb2tzWyB0
aGlzIF0gPSB7CisgICAgICAgIHNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlICkgeworICAgICAg
ICAgICAgaWYgKCBqUXVlcnkuaXNBcnJheSggdmFsdWUgKSApIHsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gKCBlbGVtLmNoZWNrZWQgPSBqUXVlcnkuaW5BcnJheSggalF1ZXJ5KCBlbGVtICkudmFs
KCksIHZhbHVlICkgPiAtMSApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfTsKKyAg
ICBpZiAoICFzdXBwb3J0LmNoZWNrT24gKSB7CisgICAgICAgIGpRdWVyeS52YWxIb29rc1sgdGhp
cyBdLmdldCA9IGZ1bmN0aW9uKCBlbGVtICkgeworICAgICAgICAgICAgcmV0dXJuIGVsZW0uZ2V0
QXR0cmlidXRlKCAidmFsdWUiICkgPT09IG51bGwgPyAib24iIDogZWxlbS52YWx1ZTsKKyAgICAg
ICAgfTsKKyAgICB9Cit9ICk7CisKK30gKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2ti
b25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2NhbGxiYWNrcy5qcyBiL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2Jh
Y2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2NhbGxiYWNrcy5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
MzUwNWE1NjA2NzVlNjQyNmY0NjgzYWU2OTRhOTM2ODY2Y2JiYjhiCi0tLSAvZGV2L251bGwKKysr
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvY2FsbGJhY2tz
LmpzCkBAIC0wLDAgKzEsMjM0IEBACitkZWZpbmUoIFsKKyAgICAiLi9jb3JlIiwKKyAgICAiLi92
YXIvcm5vdGh0bWx3aGl0ZSIKK10sIGZ1bmN0aW9uKCBqUXVlcnksIHJub3RodG1sd2hpdGUgKSB7
CisKKyJ1c2Ugc3RyaWN0IjsKKworLy8gQ29udmVydCBTdHJpbmctZm9ybWF0dGVkIG9wdGlvbnMg
aW50byBPYmplY3QtZm9ybWF0dGVkIG9uZXMKK2Z1bmN0aW9uIGNyZWF0ZU9wdGlvbnMoIG9wdGlv
bnMgKSB7CisgICAgdmFyIG9iamVjdCA9IHt9OworICAgIGpRdWVyeS5lYWNoKCBvcHRpb25zLm1h
dGNoKCBybm90aHRtbHdoaXRlICkgfHwgW10sIGZ1bmN0aW9uKCBfLCBmbGFnICkgeworICAgICAg
ICBvYmplY3RbIGZsYWcgXSA9IHRydWU7CisgICAgfSApOworICAgIHJldHVybiBvYmplY3Q7Cit9
CisKKy8qCisgKiBDcmVhdGUgYSBjYWxsYmFjayBsaXN0IHVzaW5nIHRoZSBmb2xsb3dpbmcgcGFy
YW1ldGVyczoKKyAqCisgKiAgb3B0aW9uczogYW4gb3B0aW9uYWwgbGlzdCBvZiBzcGFjZS1zZXBh
cmF0ZWQgb3B0aW9ucyB0aGF0IHdpbGwgY2hhbmdlIGhvdworICogICAgICAgICAgdGhlIGNhbGxi
YWNrIGxpc3QgYmVoYXZlcyBvciBhIG1vcmUgdHJhZGl0aW9uYWwgb3B0aW9uIG9iamVjdAorICoK
KyAqIEJ5IGRlZmF1bHQgYSBjYWxsYmFjayBsaXN0IHdpbGwgYWN0IGxpa2UgYW4gZXZlbnQgY2Fs
bGJhY2sgbGlzdCBhbmQgY2FuIGJlCisgKiAiZmlyZWQiIG11bHRpcGxlIHRpbWVzLgorICoKKyAq
IFBvc3NpYmxlIG9wdGlvbnM6CisgKgorICogIG9uY2U6ICAgICAgICAgICB3aWxsIGVuc3VyZSB0
aGUgY2FsbGJhY2sgbGlzdCBjYW4gb25seSBiZSBmaXJlZCBvbmNlIChsaWtlIGEgRGVmZXJyZWQp
CisgKgorICogIG1lbW9yeTogICAgICAgICB3aWxsIGtlZXAgdHJhY2sgb2YgcHJldmlvdXMgdmFs
dWVzIGFuZCB3aWxsIGNhbGwgYW55IGNhbGxiYWNrIGFkZGVkCisgKiAgICAgICAgICAgICAgICAg
IGFmdGVyIHRoZSBsaXN0IGhhcyBiZWVuIGZpcmVkIHJpZ2h0IGF3YXkgd2l0aCB0aGUgbGF0ZXN0
ICJtZW1vcml6ZWQiCisgKiAgICAgICAgICAgICAgICAgIHZhbHVlcyAobGlrZSBhIERlZmVycmVk
KQorICoKKyAqICB1bmlxdWU6ICAgICAgICAgd2lsbCBlbnN1cmUgYSBjYWxsYmFjayBjYW4gb25s
eSBiZSBhZGRlZCBvbmNlIChubyBkdXBsaWNhdGUgaW4gdGhlIGxpc3QpCisgKgorICogIHN0b3BP
bkZhbHNlOiAgICBpbnRlcnJ1cHQgY2FsbGluZ3Mgd2hlbiBhIGNhbGxiYWNrIHJldHVybnMgZmFs
c2UKKyAqCisgKi8KK2pRdWVyeS5DYWxsYmFja3MgPSBmdW5jdGlvbiggb3B0aW9ucyApIHsKKwor
ICAgIC8vIENvbnZlcnQgb3B0aW9ucyBmcm9tIFN0cmluZy1mb3JtYXR0ZWQgdG8gT2JqZWN0LWZv
cm1hdHRlZCBpZiBuZWVkZWQKKyAgICAvLyAod2UgY2hlY2sgaW4gY2FjaGUgZmlyc3QpCisgICAg
b3B0aW9ucyA9IHR5cGVvZiBvcHRpb25zID09PSAic3RyaW5nIiA/CisgICAgICAgIGNyZWF0ZU9w
dGlvbnMoIG9wdGlvbnMgKSA6CisgICAgICAgIGpRdWVyeS5leHRlbmQoIHt9LCBvcHRpb25zICk7
CisKKyAgICB2YXIgLy8gRmxhZyB0byBrbm93IGlmIGxpc3QgaXMgY3VycmVudGx5IGZpcmluZwor
ICAgICAgICBmaXJpbmcsCisKKyAgICAgICAgLy8gTGFzdCBmaXJlIHZhbHVlIGZvciBub24tZm9y
Z2V0dGFibGUgbGlzdHMKKyAgICAgICAgbWVtb3J5LAorCisgICAgICAgIC8vIEZsYWcgdG8ga25v
dyBpZiBsaXN0IHdhcyBhbHJlYWR5IGZpcmVkCisgICAgICAgIGZpcmVkLAorCisgICAgICAgIC8v
IEZsYWcgdG8gcHJldmVudCBmaXJpbmcKKyAgICAgICAgbG9ja2VkLAorCisgICAgICAgIC8vIEFj
dHVhbCBjYWxsYmFjayBsaXN0CisgICAgICAgIGxpc3QgPSBbXSwKKworICAgICAgICAvLyBRdWV1
ZSBvZiBleGVjdXRpb24gZGF0YSBmb3IgcmVwZWF0YWJsZSBsaXN0cworICAgICAgICBxdWV1ZSA9
IFtdLAorCisgICAgICAgIC8vIEluZGV4IG9mIGN1cnJlbnRseSBmaXJpbmcgY2FsbGJhY2sgKG1v
ZGlmaWVkIGJ5IGFkZC9yZW1vdmUgYXMgbmVlZGVkKQorICAgICAgICBmaXJpbmdJbmRleCA9IC0x
LAorCisgICAgICAgIC8vIEZpcmUgY2FsbGJhY2tzCisgICAgICAgIGZpcmUgPSBmdW5jdGlvbigp
IHsKKworICAgICAgICAgICAgLy8gRW5mb3JjZSBzaW5nbGUtZmlyaW5nCisgICAgICAgICAgICBs
b2NrZWQgPSBvcHRpb25zLm9uY2U7CisKKyAgICAgICAgICAgIC8vIEV4ZWN1dGUgY2FsbGJhY2tz
IGZvciBhbGwgcGVuZGluZyBleGVjdXRpb25zLAorICAgICAgICAgICAgLy8gcmVzcGVjdGluZyBm
aXJpbmdJbmRleCBvdmVycmlkZXMgYW5kIHJ1bnRpbWUgY2hhbmdlcworICAgICAgICAgICAgZmly
ZWQgPSBmaXJpbmcgPSB0cnVlOworICAgICAgICAgICAgZm9yICggOyBxdWV1ZS5sZW5ndGg7IGZp
cmluZ0luZGV4ID0gLTEgKSB7CisgICAgICAgICAgICAgICAgbWVtb3J5ID0gcXVldWUuc2hpZnQo
KTsKKyAgICAgICAgICAgICAgICB3aGlsZSAoICsrZmlyaW5nSW5kZXggPCBsaXN0Lmxlbmd0aCAp
IHsKKworICAgICAgICAgICAgICAgICAgICAvLyBSdW4gY2FsbGJhY2sgYW5kIGNoZWNrIGZvciBl
YXJseSB0ZXJtaW5hdGlvbgorICAgICAgICAgICAgICAgICAgICBpZiAoIGxpc3RbIGZpcmluZ0lu
ZGV4IF0uYXBwbHkoIG1lbW9yeVsgMCBdLCBtZW1vcnlbIDEgXSApID09PSBmYWxzZSAmJgorICAg
ICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5zdG9wT25GYWxzZSApIHsKKworICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gSnVtcCB0byBlbmQgYW5kIGZvcmdldCB0aGUgZGF0YSBzbyAuYWRk
IGRvZXNuJ3QgcmUtZmlyZQorICAgICAgICAgICAgICAgICAgICAgICAgZmlyaW5nSW5kZXggPSBs
aXN0Lmxlbmd0aDsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1lbW9yeSA9IGZhbHNlOworICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAvLyBGb3JnZXQgdGhlIGRhdGEgaWYgd2UncmUgZG9uZSB3aXRoIGl0CisgICAg
ICAgICAgICBpZiAoICFvcHRpb25zLm1lbW9yeSApIHsKKyAgICAgICAgICAgICAgICBtZW1vcnkg
PSBmYWxzZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZmlyaW5nID0gZmFsc2U7CisK
KyAgICAgICAgICAgIC8vIENsZWFuIHVwIGlmIHdlJ3JlIGRvbmUgZmlyaW5nIGZvciBnb29kCisg
ICAgICAgICAgICBpZiAoIGxvY2tlZCApIHsKKworICAgICAgICAgICAgICAgIC8vIEtlZXAgYW4g
ZW1wdHkgbGlzdCBpZiB3ZSBoYXZlIGRhdGEgZm9yIGZ1dHVyZSBhZGQgY2FsbHMKKyAgICAgICAg
ICAgICAgICBpZiAoIG1lbW9yeSApIHsKKyAgICAgICAgICAgICAgICAgICAgbGlzdCA9IFtdOwor
CisgICAgICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCB0aGlzIG9iamVjdCBpcyBzcGVudAorICAg
ICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGxpc3QgPSAiIjsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisKKyAgICAgICAgLy8g
QWN0dWFsIENhbGxiYWNrcyBvYmplY3QKKyAgICAgICAgc2VsZiA9IHsKKworICAgICAgICAgICAg
Ly8gQWRkIGEgY2FsbGJhY2sgb3IgYSBjb2xsZWN0aW9uIG9mIGNhbGxiYWNrcyB0byB0aGUgbGlz
dAorICAgICAgICAgICAgYWRkOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBpZiAoIGxp
c3QgKSB7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSBtZW1vcnkgZnJvbSBh
IHBhc3QgcnVuLCB3ZSBzaG91bGQgZmlyZSBhZnRlciBhZGRpbmcKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKCBtZW1vcnkgJiYgIWZpcmluZyApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZp
cmluZ0luZGV4ID0gbGlzdC5sZW5ndGggLSAxOworICAgICAgICAgICAgICAgICAgICAgICAgcXVl
dWUucHVzaCggbWVtb3J5ICk7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ICAgICAgICAoIGZ1bmN0aW9uIGFkZCggYXJncyApIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGpRdWVyeS5lYWNoKCBhcmdzLCBmdW5jdGlvbiggXywgYXJnICkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIGFyZyApICkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoICFvcHRpb25zLnVuaXF1ZSB8fCAhc2VsZi5oYXMo
IGFyZyApICkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC5wdXNo
KCBhcmcgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIGFyZyAmJiBhcmcubGVuZ3RoICYmIGpRdWVyeS50
eXBlKCBhcmcgKSAhPT0gInN0cmluZyIgKSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gSW5zcGVjdCByZWN1cnNpdmVseQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhZGQoIGFyZyApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0gKTsKKyAgICAgICAgICAgICAgICAgICAgfSApKCBhcmd1bWVudHMg
KTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoIG1lbW9yeSAmJiAhZmlyaW5nICkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgZmlyZSgpOworICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICAgICAg
fSwKKworICAgICAgICAgICAgLy8gUmVtb3ZlIGEgY2FsbGJhY2sgZnJvbSB0aGUgbGlzdAorICAg
ICAgICAgICAgcmVtb3ZlOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBqUXVlcnkuZWFj
aCggYXJndW1lbnRzLCBmdW5jdGlvbiggXywgYXJnICkgeworICAgICAgICAgICAgICAgICAgICB2
YXIgaW5kZXg7CisgICAgICAgICAgICAgICAgICAgIHdoaWxlICggKCBpbmRleCA9IGpRdWVyeS5p
bkFycmF5KCBhcmcsIGxpc3QsIGluZGV4ICkgKSA+IC0xICkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgbGlzdC5zcGxpY2UoIGluZGV4LCAxICk7CisKKyAgICAgICAgICAgICAgICAgICAgICAg
IC8vIEhhbmRsZSBmaXJpbmcgaW5kZXhlcworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBp
bmRleCA8PSBmaXJpbmdJbmRleCApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJp
bmdJbmRleC0tOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgfSApOworICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOwor
ICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgLy8gQ2hlY2sgaWYgYSBnaXZlbiBjYWxsYmFj
ayBpcyBpbiB0aGUgbGlzdC4KKyAgICAgICAgICAgIC8vIElmIG5vIGFyZ3VtZW50IGlzIGdpdmVu
LCByZXR1cm4gd2hldGhlciBvciBub3QgbGlzdCBoYXMgY2FsbGJhY2tzIGF0dGFjaGVkLgorICAg
ICAgICAgICAgaGFzOiBmdW5jdGlvbiggZm4gKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZu
ID8KKyAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmluQXJyYXkoIGZuLCBsaXN0ICkgPiAtMSA6
CisgICAgICAgICAgICAgICAgICAgIGxpc3QubGVuZ3RoID4gMDsKKyAgICAgICAgICAgIH0sCisK
KyAgICAgICAgICAgIC8vIFJlbW92ZSBhbGwgY2FsbGJhY2tzIGZyb20gdGhlIGxpc3QKKyAgICAg
ICAgICAgIGVtcHR5OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBpZiAoIGxpc3QgKSB7
CisgICAgICAgICAgICAgICAgICAgIGxpc3QgPSBbXTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgICAgICB9LAorCisgICAgICAgICAgICAv
LyBEaXNhYmxlIC5maXJlIGFuZCAuYWRkCisgICAgICAgICAgICAvLyBBYm9ydCBhbnkgY3VycmVu
dC9wZW5kaW5nIGV4ZWN1dGlvbnMKKyAgICAgICAgICAgIC8vIENsZWFyIGFsbCBjYWxsYmFja3Mg
YW5kIHZhbHVlcworICAgICAgICAgICAgZGlzYWJsZTogZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICAgICAgbG9ja2VkID0gcXVldWUgPSBbXTsKKyAgICAgICAgICAgICAgICBsaXN0ID0gbWVtb3J5
ID0gIiI7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgZGlzYWJsZWQ6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHJldHVybiAh
bGlzdDsKKyAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgIC8vIERpc2FibGUgLmZpcmUKKyAg
ICAgICAgICAgIC8vIEFsc28gZGlzYWJsZSAuYWRkIHVubGVzcyB3ZSBoYXZlIG1lbW9yeSAoc2lu
Y2UgaXQgd291bGQgaGF2ZSBubyBlZmZlY3QpCisgICAgICAgICAgICAvLyBBYm9ydCBhbnkgcGVu
ZGluZyBleGVjdXRpb25zCisgICAgICAgICAgICBsb2NrOiBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgICAgICBsb2NrZWQgPSBxdWV1ZSA9IFtdOworICAgICAgICAgICAgICAgIGlmICggIW1lbW9y
eSAmJiAhZmlyaW5nICkgeworICAgICAgICAgICAgICAgICAgICBsaXN0ID0gbWVtb3J5ID0gIiI7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAg
ICAgICAgfSwKKyAgICAgICAgICAgIGxvY2tlZDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuICEhbG9ja2VkOworICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgLy8gQ2Fs
bCBhbGwgY2FsbGJhY2tzIHdpdGggdGhlIGdpdmVuIGNvbnRleHQgYW5kIGFyZ3VtZW50cworICAg
ICAgICAgICAgZmlyZVdpdGg6IGZ1bmN0aW9uKCBjb250ZXh0LCBhcmdzICkgeworICAgICAgICAg
ICAgICAgIGlmICggIWxvY2tlZCApIHsKKyAgICAgICAgICAgICAgICAgICAgYXJncyA9IGFyZ3Mg
fHwgW107CisgICAgICAgICAgICAgICAgICAgIGFyZ3MgPSBbIGNvbnRleHQsIGFyZ3Muc2xpY2Ug
PyBhcmdzLnNsaWNlKCkgOiBhcmdzIF07CisgICAgICAgICAgICAgICAgICAgIHF1ZXVlLnB1c2go
IGFyZ3MgKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCAhZmlyaW5nICkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgZmlyZSgpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICAgICAgfSwKKwor
ICAgICAgICAgICAgLy8gQ2FsbCBhbGwgdGhlIGNhbGxiYWNrcyB3aXRoIHRoZSBnaXZlbiBhcmd1
bWVudHMKKyAgICAgICAgICAgIGZpcmU6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHNl
bGYuZmlyZVdpdGgoIHRoaXMsIGFyZ3VtZW50cyApOworICAgICAgICAgICAgICAgIHJldHVybiB0
aGlzOworICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgLy8gVG8ga25vdyBpZiB0aGUgY2Fs
bGJhY2tzIGhhdmUgYWxyZWFkeSBiZWVuIGNhbGxlZCBhdCBsZWFzdCBvbmNlCisgICAgICAgICAg
ICBmaXJlZDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuICEhZmlyZWQ7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICByZXR1cm4gc2VsZjsKK307CisKK3JldHVy
biBqUXVlcnk7Cit9ICk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21v
ZHVsZXMvanF1ZXJ5L3NyYy9jb3JlLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1
bGVzL2pxdWVyeS9zcmMvY29yZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42OTAwYjJlNGJlNDE2YWQzZDRjYWJj
NDAzMjVjNzQ5MDE3ZjcxNDM2Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2Jv
bmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvY29yZS5qcwpAQCAtMCwwICsxLDQ4MiBAQAorLyog
Z2xvYmFsIFN5bWJvbCAqLworLy8gRGVmaW5pbmcgdGhpcyBnbG9iYWwgaW4gLmVzbGludHJjLmpz
b24gd291bGQgY3JlYXRlIGEgZGFuZ2VyIG9mIHVzaW5nIHRoZSBnbG9iYWwKKy8vIHVuZ3VhcmRl
ZCBpbiBhbm90aGVyIHBsYWNlLCBpdCBzZWVtcyBzYWZlciB0byBkZWZpbmUgZ2xvYmFsIG9ubHkg
Zm9yIHRoaXMgbW9kdWxlCisKK2RlZmluZSggWworICAgICIuL3Zhci9hcnIiLAorICAgICIuL3Zh
ci9kb2N1bWVudCIsCisgICAgIi4vdmFyL2dldFByb3RvIiwKKyAgICAiLi92YXIvc2xpY2UiLAor
ICAgICIuL3Zhci9jb25jYXQiLAorICAgICIuL3Zhci9wdXNoIiwKKyAgICAiLi92YXIvaW5kZXhP
ZiIsCisgICAgIi4vdmFyL2NsYXNzMnR5cGUiLAorICAgICIuL3Zhci90b1N0cmluZyIsCisgICAg
Ii4vdmFyL2hhc093biIsCisgICAgIi4vdmFyL2ZuVG9TdHJpbmciLAorICAgICIuL3Zhci9PYmpl
Y3RGdW5jdGlvblN0cmluZyIsCisgICAgIi4vdmFyL3N1cHBvcnQiLAorICAgICIuL2NvcmUvRE9N
RXZhbCIKK10sIGZ1bmN0aW9uKCBhcnIsIGRvY3VtZW50LCBnZXRQcm90bywgc2xpY2UsIGNvbmNh
dCwgcHVzaCwgaW5kZXhPZiwKKyAgICBjbGFzczJ0eXBlLCB0b1N0cmluZywgaGFzT3duLCBmblRv
U3RyaW5nLCBPYmplY3RGdW5jdGlvblN0cmluZywKKyAgICBzdXBwb3J0LCBET01FdmFsICkgewor
CisidXNlIHN0cmljdCI7CisKK3ZhcgorICAgIHZlcnNpb24gPSAiMy4xLjEiLAorCisgICAgLy8g
RGVmaW5lIGEgbG9jYWwgY29weSBvZiBqUXVlcnkKKyAgICBqUXVlcnkgPSBmdW5jdGlvbiggc2Vs
ZWN0b3IsIGNvbnRleHQgKSB7CisKKyAgICAgICAgLy8gVGhlIGpRdWVyeSBvYmplY3QgaXMgYWN0
dWFsbHkganVzdCB0aGUgaW5pdCBjb25zdHJ1Y3RvciAnZW5oYW5jZWQnCisgICAgICAgIC8vIE5l
ZWQgaW5pdCBpZiBqUXVlcnkgaXMgY2FsbGVkIChqdXN0IGFsbG93IGVycm9yIHRvIGJlIHRocm93
biBpZiBub3QgaW5jbHVkZWQpCisgICAgICAgIHJldHVybiBuZXcgalF1ZXJ5LmZuLmluaXQoIHNl
bGVjdG9yLCBjb250ZXh0ICk7CisgICAgfSwKKworICAgIC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00
LjAgb25seQorICAgIC8vIE1ha2Ugc3VyZSB3ZSB0cmltIEJPTSBhbmQgTkJTUAorICAgIHJ0cmlt
ID0gL15bXHNcdUZFRkZceEEwXSt8W1xzXHVGRUZGXHhBMF0rJC9nLAorCisgICAgLy8gTWF0Y2hl
cyBkYXNoZWQgc3RyaW5nIGZvciBjYW1lbGl6aW5nCisgICAgcm1zUHJlZml4ID0gL14tbXMtLywK
KyAgICByZGFzaEFscGhhID0gLy0oW2Etel0pL2csCisKKyAgICAvLyBVc2VkIGJ5IGpRdWVyeS5j
YW1lbENhc2UgYXMgY2FsbGJhY2sgdG8gcmVwbGFjZSgpCisgICAgZmNhbWVsQ2FzZSA9IGZ1bmN0
aW9uKCBhbGwsIGxldHRlciApIHsKKyAgICAgICAgcmV0dXJuIGxldHRlci50b1VwcGVyQ2FzZSgp
OworICAgIH07CisKK2pRdWVyeS5mbiA9IGpRdWVyeS5wcm90b3R5cGUgPSB7CisKKyAgICAvLyBU
aGUgY3VycmVudCB2ZXJzaW9uIG9mIGpRdWVyeSBiZWluZyB1c2VkCisgICAganF1ZXJ5OiB2ZXJz
aW9uLAorCisgICAgY29uc3RydWN0b3I6IGpRdWVyeSwKKworICAgIC8vIFRoZSBkZWZhdWx0IGxl
bmd0aCBvZiBhIGpRdWVyeSBvYmplY3QgaXMgMAorICAgIGxlbmd0aDogMCwKKworICAgIHRvQXJy
YXk6IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gc2xpY2UuY2FsbCggdGhpcyApOworICAg
IH0sCisKKyAgICAvLyBHZXQgdGhlIE50aCBlbGVtZW50IGluIHRoZSBtYXRjaGVkIGVsZW1lbnQg
c2V0IE9SCisgICAgLy8gR2V0IHRoZSB3aG9sZSBtYXRjaGVkIGVsZW1lbnQgc2V0IGFzIGEgY2xl
YW4gYXJyYXkKKyAgICBnZXQ6IGZ1bmN0aW9uKCBudW0gKSB7CisKKyAgICAgICAgLy8gUmV0dXJu
IGFsbCB0aGUgZWxlbWVudHMgaW4gYSBjbGVhbiBhcnJheQorICAgICAgICBpZiAoIG51bSA9PSBu
dWxsICkgeworICAgICAgICAgICAgcmV0dXJuIHNsaWNlLmNhbGwoIHRoaXMgKTsKKyAgICAgICAg
fQorCisgICAgICAgIC8vIFJldHVybiBqdXN0IHRoZSBvbmUgZWxlbWVudCBmcm9tIHRoZSBzZXQK
KyAgICAgICAgcmV0dXJuIG51bSA8IDAgPyB0aGlzWyBudW0gKyB0aGlzLmxlbmd0aCBdIDogdGhp
c1sgbnVtIF07CisgICAgfSwKKworICAgIC8vIFRha2UgYW4gYXJyYXkgb2YgZWxlbWVudHMgYW5k
IHB1c2ggaXQgb250byB0aGUgc3RhY2sKKyAgICAvLyAocmV0dXJuaW5nIHRoZSBuZXcgbWF0Y2hl
ZCBlbGVtZW50IHNldCkKKyAgICBwdXNoU3RhY2s6IGZ1bmN0aW9uKCBlbGVtcyApIHsKKworICAg
ICAgICAvLyBCdWlsZCBhIG5ldyBqUXVlcnkgbWF0Y2hlZCBlbGVtZW50IHNldAorICAgICAgICB2
YXIgcmV0ID0galF1ZXJ5Lm1lcmdlKCB0aGlzLmNvbnN0cnVjdG9yKCksIGVsZW1zICk7CisKKyAg
ICAgICAgLy8gQWRkIHRoZSBvbGQgb2JqZWN0IG9udG8gdGhlIHN0YWNrIChhcyBhIHJlZmVyZW5j
ZSkKKyAgICAgICAgcmV0LnByZXZPYmplY3QgPSB0aGlzOworCisgICAgICAgIC8vIFJldHVybiB0
aGUgbmV3bHktZm9ybWVkIGVsZW1lbnQgc2V0CisgICAgICAgIHJldHVybiByZXQ7CisgICAgfSwK
KworICAgIC8vIEV4ZWN1dGUgYSBjYWxsYmFjayBmb3IgZXZlcnkgZWxlbWVudCBpbiB0aGUgbWF0
Y2hlZCBzZXQuCisgICAgZWFjaDogZnVuY3Rpb24oIGNhbGxiYWNrICkgeworICAgICAgICByZXR1
cm4galF1ZXJ5LmVhY2goIHRoaXMsIGNhbGxiYWNrICk7CisgICAgfSwKKworICAgIG1hcDogZnVu
Y3Rpb24oIGNhbGxiYWNrICkgeworICAgICAgICByZXR1cm4gdGhpcy5wdXNoU3RhY2soIGpRdWVy
eS5tYXAoIHRoaXMsIGZ1bmN0aW9uKCBlbGVtLCBpICkgeworICAgICAgICAgICAgcmV0dXJuIGNh
bGxiYWNrLmNhbGwoIGVsZW0sIGksIGVsZW0gKTsKKyAgICAgICAgfSApICk7CisgICAgfSwKKwor
ICAgIHNsaWNlOiBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMucHVzaFN0YWNrKCBz
bGljZS5hcHBseSggdGhpcywgYXJndW1lbnRzICkgKTsKKyAgICB9LAorCisgICAgZmlyc3Q6IGZ1
bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gdGhpcy5lcSggMCApOworICAgIH0sCisKKyAgICBs
YXN0OiBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZXEoIC0xICk7CisgICAgfSwK
KworICAgIGVxOiBmdW5jdGlvbiggaSApIHsKKyAgICAgICAgdmFyIGxlbiA9IHRoaXMubGVuZ3Ro
LAorICAgICAgICAgICAgaiA9ICtpICsgKCBpIDwgMCA/IGxlbiA6IDAgKTsKKyAgICAgICAgcmV0
dXJuIHRoaXMucHVzaFN0YWNrKCBqID49IDAgJiYgaiA8IGxlbiA/IFsgdGhpc1sgaiBdIF0gOiBb
XSApOworICAgIH0sCisKKyAgICBlbmQ6IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gdGhp
cy5wcmV2T2JqZWN0IHx8IHRoaXMuY29uc3RydWN0b3IoKTsKKyAgICB9LAorCisgICAgLy8gRm9y
IGludGVybmFsIHVzZSBvbmx5LgorICAgIC8vIEJlaGF2ZXMgbGlrZSBhbiBBcnJheSdzIG1ldGhv
ZCwgbm90IGxpa2UgYSBqUXVlcnkgbWV0aG9kLgorICAgIHB1c2g6IHB1c2gsCisgICAgc29ydDog
YXJyLnNvcnQsCisgICAgc3BsaWNlOiBhcnIuc3BsaWNlCit9OworCitqUXVlcnkuZXh0ZW5kID0g
alF1ZXJ5LmZuLmV4dGVuZCA9IGZ1bmN0aW9uKCkgeworICAgIHZhciBvcHRpb25zLCBuYW1lLCBz
cmMsIGNvcHksIGNvcHlJc0FycmF5LCBjbG9uZSwKKyAgICAgICAgdGFyZ2V0ID0gYXJndW1lbnRz
WyAwIF0gfHwge30sCisgICAgICAgIGkgPSAxLAorICAgICAgICBsZW5ndGggPSBhcmd1bWVudHMu
bGVuZ3RoLAorICAgICAgICBkZWVwID0gZmFsc2U7CisKKyAgICAvLyBIYW5kbGUgYSBkZWVwIGNv
cHkgc2l0dWF0aW9uCisgICAgaWYgKCB0eXBlb2YgdGFyZ2V0ID09PSAiYm9vbGVhbiIgKSB7Cisg
ICAgICAgIGRlZXAgPSB0YXJnZXQ7CisKKyAgICAgICAgLy8gU2tpcCB0aGUgYm9vbGVhbiBhbmQg
dGhlIHRhcmdldAorICAgICAgICB0YXJnZXQgPSBhcmd1bWVudHNbIGkgXSB8fCB7fTsKKyAgICAg
ICAgaSsrOworICAgIH0KKworICAgIC8vIEhhbmRsZSBjYXNlIHdoZW4gdGFyZ2V0IGlzIGEgc3Ry
aW5nIG9yIHNvbWV0aGluZyAocG9zc2libGUgaW4gZGVlcCBjb3B5KQorICAgIGlmICggdHlwZW9m
IHRhcmdldCAhPT0gIm9iamVjdCIgJiYgIWpRdWVyeS5pc0Z1bmN0aW9uKCB0YXJnZXQgKSApIHsK
KyAgICAgICAgdGFyZ2V0ID0ge307CisgICAgfQorCisgICAgLy8gRXh0ZW5kIGpRdWVyeSBpdHNl
bGYgaWYgb25seSBvbmUgYXJndW1lbnQgaXMgcGFzc2VkCisgICAgaWYgKCBpID09PSBsZW5ndGgg
KSB7CisgICAgICAgIHRhcmdldCA9IHRoaXM7CisgICAgICAgIGktLTsKKyAgICB9CisKKyAgICBm
b3IgKCA7IGkgPCBsZW5ndGg7IGkrKyApIHsKKworICAgICAgICAvLyBPbmx5IGRlYWwgd2l0aCBu
b24tbnVsbC91bmRlZmluZWQgdmFsdWVzCisgICAgICAgIGlmICggKCBvcHRpb25zID0gYXJndW1l
bnRzWyBpIF0gKSAhPSBudWxsICkgeworCisgICAgICAgICAgICAvLyBFeHRlbmQgdGhlIGJhc2Ug
b2JqZWN0CisgICAgICAgICAgICBmb3IgKCBuYW1lIGluIG9wdGlvbnMgKSB7CisgICAgICAgICAg
ICAgICAgc3JjID0gdGFyZ2V0WyBuYW1lIF07CisgICAgICAgICAgICAgICAgY29weSA9IG9wdGlv
bnNbIG5hbWUgXTsKKworICAgICAgICAgICAgICAgIC8vIFByZXZlbnQgbmV2ZXItZW5kaW5nIGxv
b3AKKyAgICAgICAgICAgICAgICBpZiAoIHRhcmdldCA9PT0gY29weSApIHsKKyAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
Ly8gUmVjdXJzZSBpZiB3ZSdyZSBtZXJnaW5nIHBsYWluIG9iamVjdHMgb3IgYXJyYXlzCisgICAg
ICAgICAgICAgICAgaWYgKCBkZWVwICYmIGNvcHkgJiYgKCBqUXVlcnkuaXNQbGFpbk9iamVjdCgg
Y29weSApIHx8CisgICAgICAgICAgICAgICAgICAgICggY29weUlzQXJyYXkgPSBqUXVlcnkuaXNB
cnJheSggY29weSApICkgKSApIHsKKworICAgICAgICAgICAgICAgICAgICBpZiAoIGNvcHlJc0Fy
cmF5ICkgeworICAgICAgICAgICAgICAgICAgICAgICAgY29weUlzQXJyYXkgPSBmYWxzZTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNsb25lID0gc3JjICYmIGpRdWVyeS5pc0FycmF5KCBzcmMg
KSA/IHNyYyA6IFtdOworCisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBjbG9uZSA9IHNyYyAmJiBqUXVlcnkuaXNQbGFpbk9iamVjdCggc3JjICkg
PyBzcmMgOiB7fTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAg
IC8vIE5ldmVyIG1vdmUgb3JpZ2luYWwgb2JqZWN0cywgY2xvbmUgdGhlbQorICAgICAgICAgICAg
ICAgICAgICB0YXJnZXRbIG5hbWUgXSA9IGpRdWVyeS5leHRlbmQoIGRlZXAsIGNsb25lLCBjb3B5
ICk7CisKKyAgICAgICAgICAgICAgICAvLyBEb24ndCBicmluZyBpbiB1bmRlZmluZWQgdmFsdWVz
CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICggY29weSAhPT0gdW5kZWZpbmVkICkgeworICAg
ICAgICAgICAgICAgICAgICB0YXJnZXRbIG5hbWUgXSA9IGNvcHk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLy8gUmV0dXJuIHRoZSBt
b2RpZmllZCBvYmplY3QKKyAgICByZXR1cm4gdGFyZ2V0OworfTsKKworalF1ZXJ5LmV4dGVuZCgg
eworCisgICAgLy8gVW5pcXVlIGZvciBlYWNoIGNvcHkgb2YgalF1ZXJ5IG9uIHRoZSBwYWdlCisg
ICAgZXhwYW5kbzogImpRdWVyeSIgKyAoIHZlcnNpb24gKyBNYXRoLnJhbmRvbSgpICkucmVwbGFj
ZSggL1xEL2csICIiICksCisKKyAgICAvLyBBc3N1bWUgalF1ZXJ5IGlzIHJlYWR5IHdpdGhvdXQg
dGhlIHJlYWR5IG1vZHVsZQorICAgIGlzUmVhZHk6IHRydWUsCisKKyAgICBlcnJvcjogZnVuY3Rp
b24oIG1zZyApIHsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCBtc2cgKTsKKyAgICB9LAorCisg
ICAgbm9vcDogZnVuY3Rpb24oKSB7fSwKKworICAgIGlzRnVuY3Rpb246IGZ1bmN0aW9uKCBvYmog
KSB7CisgICAgICAgIHJldHVybiBqUXVlcnkudHlwZSggb2JqICkgPT09ICJmdW5jdGlvbiI7Cisg
ICAgfSwKKworICAgIGlzQXJyYXk6IEFycmF5LmlzQXJyYXksCisKKyAgICBpc1dpbmRvdzogZnVu
Y3Rpb24oIG9iaiApIHsKKyAgICAgICAgcmV0dXJuIG9iaiAhPSBudWxsICYmIG9iaiA9PT0gb2Jq
LndpbmRvdzsKKyAgICB9LAorCisgICAgaXNOdW1lcmljOiBmdW5jdGlvbiggb2JqICkgeworCisg
ICAgICAgIC8vIEFzIG9mIGpRdWVyeSAzLjAsIGlzTnVtZXJpYyBpcyBsaW1pdGVkIHRvCisgICAg
ICAgIC8vIHN0cmluZ3MgYW5kIG51bWJlcnMgKHByaW1pdGl2ZXMgb3Igb2JqZWN0cykKKyAgICAg
ICAgLy8gdGhhdCBjYW4gYmUgY29lcmNlZCB0byBmaW5pdGUgbnVtYmVycyAoZ2gtMjY2MikKKyAg
ICAgICAgdmFyIHR5cGUgPSBqUXVlcnkudHlwZSggb2JqICk7CisgICAgICAgIHJldHVybiAoIHR5
cGUgPT09ICJudW1iZXIiIHx8IHR5cGUgPT09ICJzdHJpbmciICkgJiYKKworICAgICAgICAgICAg
Ly8gcGFyc2VGbG9hdCBOYU5zIG51bWVyaWMtY2FzdCBmYWxzZSBwb3NpdGl2ZXMgKCIiKQorICAg
ICAgICAgICAgLy8gLi4uYnV0IG1pc2ludGVycHJldHMgbGVhZGluZy1udW1iZXIgc3RyaW5ncywg
cGFydGljdWxhcmx5IGhleCBsaXRlcmFscyAoIjB4Li4uIikKKyAgICAgICAgICAgIC8vIHN1YnRy
YWN0aW9uIGZvcmNlcyBpbmZpbml0aWVzIHRvIE5hTgorICAgICAgICAgICAgIWlzTmFOKCBvYmog
LSBwYXJzZUZsb2F0KCBvYmogKSApOworICAgIH0sCisKKyAgICBpc1BsYWluT2JqZWN0OiBmdW5j
dGlvbiggb2JqICkgeworICAgICAgICB2YXIgcHJvdG8sIEN0b3I7CisKKyAgICAgICAgLy8gRGV0
ZWN0IG9idmlvdXMgbmVnYXRpdmVzCisgICAgICAgIC8vIFVzZSB0b1N0cmluZyBpbnN0ZWFkIG9m
IGpRdWVyeS50eXBlIHRvIGNhdGNoIGhvc3Qgb2JqZWN0cworICAgICAgICBpZiAoICFvYmogfHwg
dG9TdHJpbmcuY2FsbCggb2JqICkgIT09ICJbb2JqZWN0IE9iamVjdF0iICkgeworICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgcHJvdG8gPSBnZXRQcm90bygg
b2JqICk7CisKKyAgICAgICAgLy8gT2JqZWN0cyB3aXRoIG5vIHByb3RvdHlwZSAoZS5nLiwgYE9i
amVjdC5jcmVhdGUoIG51bGwgKWApIGFyZSBwbGFpbgorICAgICAgICBpZiAoICFwcm90byApIHsK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgLy8gT2JqZWN0
cyB3aXRoIHByb3RvdHlwZSBhcmUgcGxhaW4gaWZmIHRoZXkgd2VyZSBjb25zdHJ1Y3RlZCBieSBh
IGdsb2JhbCBPYmplY3QgZnVuY3Rpb24KKyAgICAgICAgQ3RvciA9IGhhc093bi5jYWxsKCBwcm90
bywgImNvbnN0cnVjdG9yIiApICYmIHByb3RvLmNvbnN0cnVjdG9yOworICAgICAgICByZXR1cm4g
dHlwZW9mIEN0b3IgPT09ICJmdW5jdGlvbiIgJiYgZm5Ub1N0cmluZy5jYWxsKCBDdG9yICkgPT09
IE9iamVjdEZ1bmN0aW9uU3RyaW5nOworICAgIH0sCisKKyAgICBpc0VtcHR5T2JqZWN0OiBmdW5j
dGlvbiggb2JqICkgeworCisgICAgICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJz
ICovCisgICAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZXNsaW50L2VzbGludC9pc3N1
ZXMvNjEyNQorICAgICAgICB2YXIgbmFtZTsKKworICAgICAgICBmb3IgKCBuYW1lIGluIG9iaiAp
IHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9LAorCisgICAgdHlwZTogZnVuY3Rpb24oIG9iaiApIHsKKyAgICAgICAgaWYg
KCBvYmogPT0gbnVsbCApIHsKKyAgICAgICAgICAgIHJldHVybiBvYmogKyAiIjsKKyAgICAgICAg
fQorCisgICAgICAgIC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD0yLjMgb25seSAoZnVuY3Rpb25pc2gg
UmVnRXhwKQorICAgICAgICByZXR1cm4gdHlwZW9mIG9iaiA9PT0gIm9iamVjdCIgfHwgdHlwZW9m
IG9iaiA9PT0gImZ1bmN0aW9uIiA/CisgICAgICAgICAgICBjbGFzczJ0eXBlWyB0b1N0cmluZy5j
YWxsKCBvYmogKSBdIHx8ICJvYmplY3QiIDoKKyAgICAgICAgICAgIHR5cGVvZiBvYmo7CisgICAg
fSwKKworICAgIC8vIEV2YWx1YXRlcyBhIHNjcmlwdCBpbiBhIGdsb2JhbCBjb250ZXh0CisgICAg
Z2xvYmFsRXZhbDogZnVuY3Rpb24oIGNvZGUgKSB7CisgICAgICAgIERPTUV2YWwoIGNvZGUgKTsK
KyAgICB9LAorCisgICAgLy8gQ29udmVydCBkYXNoZWQgdG8gY2FtZWxDYXNlOyB1c2VkIGJ5IHRo
ZSBjc3MgYW5kIGRhdGEgbW9kdWxlcworICAgIC8vIFN1cHBvcnQ6IElFIDw9OSAtIDExLCBFZGdl
IDEyIC0gMTMKKyAgICAvLyBNaWNyb3NvZnQgZm9yZ290IHRvIGh1bXAgdGhlaXIgdmVuZG9yIHBy
ZWZpeCAoIzk1NzIpCisgICAgY2FtZWxDYXNlOiBmdW5jdGlvbiggc3RyaW5nICkgeworICAgICAg
ICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoIHJtc1ByZWZpeCwgIm1zLSIgKS5yZXBsYWNlKCByZGFz
aEFscGhhLCBmY2FtZWxDYXNlICk7CisgICAgfSwKKworICAgIG5vZGVOYW1lOiBmdW5jdGlvbigg
ZWxlbSwgbmFtZSApIHsKKyAgICAgICAgcmV0dXJuIGVsZW0ubm9kZU5hbWUgJiYgZWxlbS5ub2Rl
TmFtZS50b0xvd2VyQ2FzZSgpID09PSBuYW1lLnRvTG93ZXJDYXNlKCk7CisgICAgfSwKKworICAg
IGVhY2g6IGZ1bmN0aW9uKCBvYmosIGNhbGxiYWNrICkgeworICAgICAgICB2YXIgbGVuZ3RoLCBp
ID0gMDsKKworICAgICAgICBpZiAoIGlzQXJyYXlMaWtlKCBvYmogKSApIHsKKyAgICAgICAgICAg
IGxlbmd0aCA9IG9iai5sZW5ndGg7CisgICAgICAgICAgICBmb3IgKCA7IGkgPCBsZW5ndGg7IGkr
KyApIHsKKyAgICAgICAgICAgICAgICBpZiAoIGNhbGxiYWNrLmNhbGwoIG9ialsgaSBdLCBpLCBv
YmpbIGkgXSApID09PSBmYWxzZSApIHsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgZm9yICggaSBpbiBvYmogKSB7CisgICAgICAgICAgICAgICAgaWYgKCBjYWxsYmFjay5jYWxs
KCBvYmpbIGkgXSwgaSwgb2JqWyBpIF0gKSA9PT0gZmFsc2UgKSB7CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
CisgICAgICAgIHJldHVybiBvYmo7CisgICAgfSwKKworICAgIC8vIFN1cHBvcnQ6IEFuZHJvaWQg
PD00LjAgb25seQorICAgIHRyaW06IGZ1bmN0aW9uKCB0ZXh0ICkgeworICAgICAgICByZXR1cm4g
dGV4dCA9PSBudWxsID8KKyAgICAgICAgICAgICIiIDoKKyAgICAgICAgICAgICggdGV4dCArICIi
ICkucmVwbGFjZSggcnRyaW0sICIiICk7CisgICAgfSwKKworICAgIC8vIHJlc3VsdHMgaXMgZm9y
IGludGVybmFsIHVzYWdlIG9ubHkKKyAgICBtYWtlQXJyYXk6IGZ1bmN0aW9uKCBhcnIsIHJlc3Vs
dHMgKSB7CisgICAgICAgIHZhciByZXQgPSByZXN1bHRzIHx8IFtdOworCisgICAgICAgIGlmICgg
YXJyICE9IG51bGwgKSB7CisgICAgICAgICAgICBpZiAoIGlzQXJyYXlMaWtlKCBPYmplY3QoIGFy
ciApICkgKSB7CisgICAgICAgICAgICAgICAgalF1ZXJ5Lm1lcmdlKCByZXQsCisgICAgICAgICAg
ICAgICAgICAgIHR5cGVvZiBhcnIgPT09ICJzdHJpbmciID8KKyAgICAgICAgICAgICAgICAgICAg
WyBhcnIgXSA6IGFycgorICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIHB1c2guY2FsbCggcmV0LCBhcnIgKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorCisgICAgICAgIHJldHVybiByZXQ7CisgICAgfSwKKworICAgIGluQXJyYXk6IGZ1
bmN0aW9uKCBlbGVtLCBhcnIsIGkgKSB7CisgICAgICAgIHJldHVybiBhcnIgPT0gbnVsbCA/IC0x
IDogaW5kZXhPZi5jYWxsKCBhcnIsIGVsZW0sIGkgKTsKKyAgICB9LAorCisgICAgLy8gU3VwcG9y
dDogQW5kcm9pZCA8PTQuMCBvbmx5LCBQaGFudG9tSlMgMSBvbmx5CisgICAgLy8gcHVzaC5hcHBs
eShfLCBhcnJheWxpa2UpIHRocm93cyBvbiBhbmNpZW50IFdlYktpdAorICAgIG1lcmdlOiBmdW5j
dGlvbiggZmlyc3QsIHNlY29uZCApIHsKKyAgICAgICAgdmFyIGxlbiA9ICtzZWNvbmQubGVuZ3Ro
LAorICAgICAgICAgICAgaiA9IDAsCisgICAgICAgICAgICBpID0gZmlyc3QubGVuZ3RoOworCisg
ICAgICAgIGZvciAoIDsgaiA8IGxlbjsgaisrICkgeworICAgICAgICAgICAgZmlyc3RbIGkrKyBd
ID0gc2Vjb25kWyBqIF07CisgICAgICAgIH0KKworICAgICAgICBmaXJzdC5sZW5ndGggPSBpOwor
CisgICAgICAgIHJldHVybiBmaXJzdDsKKyAgICB9LAorCisgICAgZ3JlcDogZnVuY3Rpb24oIGVs
ZW1zLCBjYWxsYmFjaywgaW52ZXJ0ICkgeworICAgICAgICB2YXIgY2FsbGJhY2tJbnZlcnNlLAor
ICAgICAgICAgICAgbWF0Y2hlcyA9IFtdLAorICAgICAgICAgICAgaSA9IDAsCisgICAgICAgICAg
ICBsZW5ndGggPSBlbGVtcy5sZW5ndGgsCisgICAgICAgICAgICBjYWxsYmFja0V4cGVjdCA9ICFp
bnZlcnQ7CisKKyAgICAgICAgLy8gR28gdGhyb3VnaCB0aGUgYXJyYXksIG9ubHkgc2F2aW5nIHRo
ZSBpdGVtcworICAgICAgICAvLyB0aGF0IHBhc3MgdGhlIHZhbGlkYXRvciBmdW5jdGlvbgorICAg
ICAgICBmb3IgKCA7IGkgPCBsZW5ndGg7IGkrKyApIHsKKyAgICAgICAgICAgIGNhbGxiYWNrSW52
ZXJzZSA9ICFjYWxsYmFjayggZWxlbXNbIGkgXSwgaSApOworICAgICAgICAgICAgaWYgKCBjYWxs
YmFja0ludmVyc2UgIT09IGNhbGxiYWNrRXhwZWN0ICkgeworICAgICAgICAgICAgICAgIG1hdGNo
ZXMucHVzaCggZWxlbXNbIGkgXSApOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAg
ICAgcmV0dXJuIG1hdGNoZXM7CisgICAgfSwKKworICAgIC8vIGFyZyBpcyBmb3IgaW50ZXJuYWwg
dXNhZ2Ugb25seQorICAgIG1hcDogZnVuY3Rpb24oIGVsZW1zLCBjYWxsYmFjaywgYXJnICkgewor
ICAgICAgICB2YXIgbGVuZ3RoLCB2YWx1ZSwKKyAgICAgICAgICAgIGkgPSAwLAorICAgICAgICAg
ICAgcmV0ID0gW107CisKKyAgICAgICAgLy8gR28gdGhyb3VnaCB0aGUgYXJyYXksIHRyYW5zbGF0
aW5nIGVhY2ggb2YgdGhlIGl0ZW1zIHRvIHRoZWlyIG5ldyB2YWx1ZXMKKyAgICAgICAgaWYgKCBp
c0FycmF5TGlrZSggZWxlbXMgKSApIHsKKyAgICAgICAgICAgIGxlbmd0aCA9IGVsZW1zLmxlbmd0
aDsKKyAgICAgICAgICAgIGZvciAoIDsgaSA8IGxlbmd0aDsgaSsrICkgeworICAgICAgICAgICAg
ICAgIHZhbHVlID0gY2FsbGJhY2soIGVsZW1zWyBpIF0sIGksIGFyZyApOworCisgICAgICAgICAg
ICAgICAgaWYgKCB2YWx1ZSAhPSBudWxsICkgeworICAgICAgICAgICAgICAgICAgICByZXQucHVz
aCggdmFsdWUgKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAg
Ly8gR28gdGhyb3VnaCBldmVyeSBrZXkgb24gdGhlIG9iamVjdCwKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIGZvciAoIGkgaW4gZWxlbXMgKSB7CisgICAgICAgICAgICAgICAgdmFsdWUg
PSBjYWxsYmFjayggZWxlbXNbIGkgXSwgaSwgYXJnICk7CisKKyAgICAgICAgICAgICAgICBpZiAo
IHZhbHVlICE9IG51bGwgKSB7CisgICAgICAgICAgICAgICAgICAgIHJldC5wdXNoKCB2YWx1ZSAp
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAg
IC8vIEZsYXR0ZW4gYW55IG5lc3RlZCBhcnJheXMKKyAgICAgICAgcmV0dXJuIGNvbmNhdC5hcHBs
eSggW10sIHJldCApOworICAgIH0sCisKKyAgICAvLyBBIGdsb2JhbCBHVUlEIGNvdW50ZXIgZm9y
IG9iamVjdHMKKyAgICBndWlkOiAxLAorCisgICAgLy8gQmluZCBhIGZ1bmN0aW9uIHRvIGEgY29u
dGV4dCwgb3B0aW9uYWxseSBwYXJ0aWFsbHkgYXBwbHlpbmcgYW55CisgICAgLy8gYXJndW1lbnRz
LgorICAgIHByb3h5OiBmdW5jdGlvbiggZm4sIGNvbnRleHQgKSB7CisgICAgICAgIHZhciB0bXAs
IGFyZ3MsIHByb3h5OworCisgICAgICAgIGlmICggdHlwZW9mIGNvbnRleHQgPT09ICJzdHJpbmci
ICkgeworICAgICAgICAgICAgdG1wID0gZm5bIGNvbnRleHQgXTsKKyAgICAgICAgICAgIGNvbnRl
eHQgPSBmbjsKKyAgICAgICAgICAgIGZuID0gdG1wOworICAgICAgICB9CisKKyAgICAgICAgLy8g
UXVpY2sgY2hlY2sgdG8gZGV0ZXJtaW5lIGlmIHRhcmdldCBpcyBjYWxsYWJsZSwgaW4gdGhlIHNw
ZWMKKyAgICAgICAgLy8gdGhpcyB0aHJvd3MgYSBUeXBlRXJyb3IsIGJ1dCB3ZSB3aWxsIGp1c3Qg
cmV0dXJuIHVuZGVmaW5lZC4KKyAgICAgICAgaWYgKCAhalF1ZXJ5LmlzRnVuY3Rpb24oIGZuICkg
KSB7CisgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOworICAgICAgICB9CisKKyAgICAgICAg
Ly8gU2ltdWxhdGVkIGJpbmQKKyAgICAgICAgYXJncyA9IHNsaWNlLmNhbGwoIGFyZ3VtZW50cywg
MiApOworICAgICAgICBwcm94eSA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcmV0dXJuIGZu
LmFwcGx5KCBjb250ZXh0IHx8IHRoaXMsIGFyZ3MuY29uY2F0KCBzbGljZS5jYWxsKCBhcmd1bWVu
dHMgKSApICk7CisgICAgICAgIH07CisKKyAgICAgICAgLy8gU2V0IHRoZSBndWlkIG9mIHVuaXF1
ZSBoYW5kbGVyIHRvIHRoZSBzYW1lIG9mIG9yaWdpbmFsIGhhbmRsZXIsIHNvIGl0IGNhbiBiZSBy
ZW1vdmVkCisgICAgICAgIHByb3h5Lmd1aWQgPSBmbi5ndWlkID0gZm4uZ3VpZCB8fCBqUXVlcnku
Z3VpZCsrOworCisgICAgICAgIHJldHVybiBwcm94eTsKKyAgICB9LAorCisgICAgbm93OiBEYXRl
Lm5vdywKKworICAgIC8vIGpRdWVyeS5zdXBwb3J0IGlzIG5vdCB1c2VkIGluIENvcmUgYnV0IG90
aGVyIHByb2plY3RzIGF0dGFjaCB0aGVpcgorICAgIC8vIHByb3BlcnRpZXMgdG8gaXQgc28gaXQg
bmVlZHMgdG8gZXhpc3QuCisgICAgc3VwcG9ydDogc3VwcG9ydAorfSApOworCitpZiAoIHR5cGVv
ZiBTeW1ib2wgPT09ICJmdW5jdGlvbiIgKSB7CisgICAgalF1ZXJ5LmZuWyBTeW1ib2wuaXRlcmF0
b3IgXSA9IGFyclsgU3ltYm9sLml0ZXJhdG9yIF07Cit9CisKKy8vIFBvcHVsYXRlIHRoZSBjbGFz
czJ0eXBlIG1hcAoralF1ZXJ5LmVhY2goICJCb29sZWFuIE51bWJlciBTdHJpbmcgRnVuY3Rpb24g
QXJyYXkgRGF0ZSBSZWdFeHAgT2JqZWN0IEVycm9yIFN5bWJvbCIuc3BsaXQoICIgIiApLAorZnVu
Y3Rpb24oIGksIG5hbWUgKSB7CisgICAgY2xhc3MydHlwZVsgIltvYmplY3QgIiArIG5hbWUgKyAi
XSIgXSA9IG5hbWUudG9Mb3dlckNhc2UoKTsKK30gKTsKKworZnVuY3Rpb24gaXNBcnJheUxpa2Uo
IG9iaiApIHsKKworICAgIC8vIFN1cHBvcnQ6IHJlYWwgaU9TIDguMiBvbmx5IChub3QgcmVwcm9k
dWNpYmxlIGluIHNpbXVsYXRvcikKKyAgICAvLyBgaW5gIGNoZWNrIHVzZWQgdG8gcHJldmVudCBK
SVQgZXJyb3IgKGdoLTIxNDUpCisgICAgLy8gaGFzT3duIGlzbid0IHVzZWQgaGVyZSBkdWUgdG8g
ZmFsc2UgbmVnYXRpdmVzCisgICAgLy8gcmVnYXJkaW5nIE5vZGVsaXN0IGxlbmd0aCBpbiBJRQor
ICAgIHZhciBsZW5ndGggPSAhIW9iaiAmJiAibGVuZ3RoIiBpbiBvYmogJiYgb2JqLmxlbmd0aCwK
KyAgICAgICAgdHlwZSA9IGpRdWVyeS50eXBlKCBvYmogKTsKKworICAgIGlmICggdHlwZSA9PT0g
ImZ1bmN0aW9uIiB8fCBqUXVlcnkuaXNXaW5kb3coIG9iaiApICkgeworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHR5cGUgPT09ICJhcnJheSIgfHwgbGVuZ3RoID09
PSAwIHx8CisgICAgICAgIHR5cGVvZiBsZW5ndGggPT09ICJudW1iZXIiICYmIGxlbmd0aCA+IDAg
JiYgKCBsZW5ndGggLSAxICkgaW4gb2JqOworfQorCityZXR1cm4galF1ZXJ5OworfSApOwpkaWZm
IC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvY29y
ZS9ET01FdmFsLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9z
cmMvY29yZS9ET01FdmFsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY2MzAxMDEyNjA2YWEyNWEzZWFmMzVjZTNk
ZDdhMDkyZDM2OGFkMTUKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9u
b2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9jb3JlL0RPTUV2YWwuanMKQEAgLTAsMCArMSwxNiBAQAor
ZGVmaW5lKCBbCisgICAgIi4uL3Zhci9kb2N1bWVudCIKK10sIGZ1bmN0aW9uKCBkb2N1bWVudCAp
IHsKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBmdW5jdGlvbiBET01FdmFsKCBjb2RlLCBkb2Mg
KSB7CisgICAgICAgIGRvYyA9IGRvYyB8fCBkb2N1bWVudDsKKworICAgICAgICB2YXIgc2NyaXB0
ID0gZG9jLmNyZWF0ZUVsZW1lbnQoICJzY3JpcHQiICk7CisKKyAgICAgICAgc2NyaXB0LnRleHQg
PSBjb2RlOworICAgICAgICBkb2MuaGVhZC5hcHBlbmRDaGlsZCggc2NyaXB0ICkucGFyZW50Tm9k
ZS5yZW1vdmVDaGlsZCggc2NyaXB0ICk7CisgICAgfQorCisgICAgcmV0dXJuIERPTUV2YWw7Cit9
ICk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5
L3NyYy9jb3JlL2FjY2Vzcy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9q
cXVlcnkvc3JjL2NvcmUvYWNjZXNzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3NDYzNTI1MzAxMmI1NjE5OWEx
OTI0OGE1MDkxZGRlM2EwYjM4OGEKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNr
Ym9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9jb3JlL2FjY2Vzcy5qcwpAQCAtMCwwICsxLDcw
IEBACitkZWZpbmUoIFsKKyAgICAiLi4vY29yZSIKK10sIGZ1bmN0aW9uKCBqUXVlcnkgKSB7CisK
KyJ1c2Ugc3RyaWN0IjsKKworLy8gTXVsdGlmdW5jdGlvbmFsIG1ldGhvZCB0byBnZXQgYW5kIHNl
dCB2YWx1ZXMgb2YgYSBjb2xsZWN0aW9uCisvLyBUaGUgdmFsdWUvcyBjYW4gb3B0aW9uYWxseSBi
ZSBleGVjdXRlZCBpZiBpdCdzIGEgZnVuY3Rpb24KK3ZhciBhY2Nlc3MgPSBmdW5jdGlvbiggZWxl
bXMsIGZuLCBrZXksIHZhbHVlLCBjaGFpbmFibGUsIGVtcHR5R2V0LCByYXcgKSB7CisgICAgdmFy
IGkgPSAwLAorICAgICAgICBsZW4gPSBlbGVtcy5sZW5ndGgsCisgICAgICAgIGJ1bGsgPSBrZXkg
PT0gbnVsbDsKKworICAgIC8vIFNldHMgbWFueSB2YWx1ZXMKKyAgICBpZiAoIGpRdWVyeS50eXBl
KCBrZXkgKSA9PT0gIm9iamVjdCIgKSB7CisgICAgICAgIGNoYWluYWJsZSA9IHRydWU7CisgICAg
ICAgIGZvciAoIGkgaW4ga2V5ICkgeworICAgICAgICAgICAgYWNjZXNzKCBlbGVtcywgZm4sIGks
IGtleVsgaSBdLCB0cnVlLCBlbXB0eUdldCwgcmF3ICk7CisgICAgICAgIH0KKworICAgIC8vIFNl
dHMgb25lIHZhbHVlCisgICAgfSBlbHNlIGlmICggdmFsdWUgIT09IHVuZGVmaW5lZCApIHsKKyAg
ICAgICAgY2hhaW5hYmxlID0gdHJ1ZTsKKworICAgICAgICBpZiAoICFqUXVlcnkuaXNGdW5jdGlv
biggdmFsdWUgKSApIHsKKyAgICAgICAgICAgIHJhdyA9IHRydWU7CisgICAgICAgIH0KKworICAg
ICAgICBpZiAoIGJ1bGsgKSB7CisKKyAgICAgICAgICAgIC8vIEJ1bGsgb3BlcmF0aW9ucyBydW4g
YWdhaW5zdCB0aGUgZW50aXJlIHNldAorICAgICAgICAgICAgaWYgKCByYXcgKSB7CisgICAgICAg
ICAgICAgICAgZm4uY2FsbCggZWxlbXMsIHZhbHVlICk7CisgICAgICAgICAgICAgICAgZm4gPSBu
dWxsOworCisgICAgICAgICAgICAvLyAuLi5leGNlcHQgd2hlbiBleGVjdXRpbmcgZnVuY3Rpb24g
dmFsdWVzCisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGJ1bGsgPSBmbjsK
KyAgICAgICAgICAgICAgICBmbiA9IGZ1bmN0aW9uKCBlbGVtLCBrZXksIHZhbHVlICkgeworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gYnVsay5jYWxsKCBqUXVlcnkoIGVsZW0gKSwgdmFsdWUg
KTsKKyAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAg
ICAgaWYgKCBmbiApIHsKKyAgICAgICAgICAgIGZvciAoIDsgaSA8IGxlbjsgaSsrICkgeworICAg
ICAgICAgICAgICAgIGZuKAorICAgICAgICAgICAgICAgICAgICBlbGVtc1sgaSBdLCBrZXksIHJh
dyA/CisgICAgICAgICAgICAgICAgICAgIHZhbHVlIDoKKyAgICAgICAgICAgICAgICAgICAgdmFs
dWUuY2FsbCggZWxlbXNbIGkgXSwgaSwgZm4oIGVsZW1zWyBpIF0sIGtleSApICkKKyAgICAgICAg
ICAgICAgICApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCBj
aGFpbmFibGUgKSB7CisgICAgICAgIHJldHVybiBlbGVtczsKKyAgICB9CisKKyAgICAvLyBHZXRz
CisgICAgaWYgKCBidWxrICkgeworICAgICAgICByZXR1cm4gZm4uY2FsbCggZWxlbXMgKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gbGVuID8gZm4oIGVsZW1zWyAwIF0sIGtleSApIDogZW1wdHlHZXQ7
Cit9OworCityZXR1cm4gYWNjZXNzOworCit9ICk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9i
YWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9jb3JlL2luaXQuanMgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9jb3JlL2luaXQuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZWM0ZmMxZmZlODU2ZmU4YzM2YzZjOTdhZWE1YmFmYjVhN2E3ZjIxNgotLS0gL2Rldi9udWxs
CisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2NvcmUv
aW5pdC5qcwpAQCAtMCwwICsxLDEyNyBAQAorLy8gSW5pdGlhbGl6ZSBhIGpRdWVyeSBvYmplY3QK
K2RlZmluZSggWworICAgICIuLi9jb3JlIiwKKyAgICAiLi4vdmFyL2RvY3VtZW50IiwKKyAgICAi
Li92YXIvcnNpbmdsZVRhZyIsCisgICAgIi4uL3RyYXZlcnNpbmcvZmluZEZpbHRlciIKK10sIGZ1
bmN0aW9uKCBqUXVlcnksIGRvY3VtZW50LCByc2luZ2xlVGFnICkgeworCisidXNlIHN0cmljdCI7
CisKKy8vIEEgY2VudHJhbCByZWZlcmVuY2UgdG8gdGhlIHJvb3QgalF1ZXJ5KGRvY3VtZW50KQor
dmFyIHJvb3RqUXVlcnksCisKKyAgICAvLyBBIHNpbXBsZSB3YXkgdG8gY2hlY2sgZm9yIEhUTUwg
c3RyaW5ncworICAgIC8vIFByaW9yaXRpemUgI2lkIG92ZXIgPHRhZz4gdG8gYXZvaWQgWFNTIHZp
YSBsb2NhdGlvbi5oYXNoICgjOTUyMSkKKyAgICAvLyBTdHJpY3QgSFRNTCByZWNvZ25pdGlvbiAo
IzExMjkwOiBtdXN0IHN0YXJ0IHdpdGggPCkKKyAgICAvLyBTaG9ydGN1dCBzaW1wbGUgI2lkIGNh
c2UgZm9yIHNwZWVkCisgICAgcnF1aWNrRXhwciA9IC9eKD86XHMqKDxbXHdcV10rPilbXj5dKnwj
KFtcdy1dKykpJC8sCisKKyAgICBpbml0ID0galF1ZXJ5LmZuLmluaXQgPSBmdW5jdGlvbiggc2Vs
ZWN0b3IsIGNvbnRleHQsIHJvb3QgKSB7CisgICAgICAgIHZhciBtYXRjaCwgZWxlbTsKKworICAg
ICAgICAvLyBIQU5ETEU6ICQoIiIpLCAkKG51bGwpLCAkKHVuZGVmaW5lZCksICQoZmFsc2UpCisg
ICAgICAgIGlmICggIXNlbGVjdG9yICkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAg
ICAgIH0KKworICAgICAgICAvLyBNZXRob2QgaW5pdCgpIGFjY2VwdHMgYW4gYWx0ZXJuYXRlIHJv
b3RqUXVlcnkKKyAgICAgICAgLy8gc28gbWlncmF0ZSBjYW4gc3VwcG9ydCBqUXVlcnkuc3ViIChn
aC0yMTAxKQorICAgICAgICByb290ID0gcm9vdCB8fCByb290alF1ZXJ5OworCisgICAgICAgIC8v
IEhhbmRsZSBIVE1MIHN0cmluZ3MKKyAgICAgICAgaWYgKCB0eXBlb2Ygc2VsZWN0b3IgPT09ICJz
dHJpbmciICkgeworICAgICAgICAgICAgaWYgKCBzZWxlY3RvclsgMCBdID09PSAiPCIgJiYKKyAg
ICAgICAgICAgICAgICBzZWxlY3Rvclsgc2VsZWN0b3IubGVuZ3RoIC0gMSBdID09PSAiPiIgJiYK
KyAgICAgICAgICAgICAgICBzZWxlY3Rvci5sZW5ndGggPj0gMyApIHsKKworICAgICAgICAgICAg
ICAgIC8vIEFzc3VtZSB0aGF0IHN0cmluZ3MgdGhhdCBzdGFydCBhbmQgZW5kIHdpdGggPD4gYXJl
IEhUTUwgYW5kIHNraXAgdGhlIHJlZ2V4IGNoZWNrCisgICAgICAgICAgICAgICAgbWF0Y2ggPSBb
IG51bGwsIHNlbGVjdG9yLCBudWxsIF07CisKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgbWF0Y2ggPSBycXVpY2tFeHByLmV4ZWMoIHNlbGVjdG9yICk7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIC8vIE1hdGNoIGh0bWwgb3IgbWFrZSBzdXJlIG5vIGNvbnRleHQg
aXMgc3BlY2lmaWVkIGZvciAjaWQKKyAgICAgICAgICAgIGlmICggbWF0Y2ggJiYgKCBtYXRjaFsg
MSBdIHx8ICFjb250ZXh0ICkgKSB7CisKKyAgICAgICAgICAgICAgICAvLyBIQU5ETEU6ICQoaHRt
bCkgLT4gJChhcnJheSkKKyAgICAgICAgICAgICAgICBpZiAoIG1hdGNoWyAxIF0gKSB7CisgICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQgPSBjb250ZXh0IGluc3RhbmNlb2YgalF1ZXJ5ID8gY29u
dGV4dFsgMCBdIDogY29udGV4dDsKKworICAgICAgICAgICAgICAgICAgICAvLyBPcHRpb24gdG8g
cnVuIHNjcmlwdHMgaXMgdHJ1ZSBmb3IgYmFjay1jb21wYXQKKyAgICAgICAgICAgICAgICAgICAg
Ly8gSW50ZW50aW9uYWxseSBsZXQgdGhlIGVycm9yIGJlIHRocm93biBpZiBwYXJzZUhUTUwgaXMg
bm90IHByZXNlbnQKKyAgICAgICAgICAgICAgICAgICAgalF1ZXJ5Lm1lcmdlKCB0aGlzLCBqUXVl
cnkucGFyc2VIVE1MKAorICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hbIDEgXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnRleHQgJiYgY29udGV4dC5ub2RlVHlwZSA/IGNvbnRleHQu
b3duZXJEb2N1bWVudCB8fCBjb250ZXh0IDogZG9jdW1lbnQsCisgICAgICAgICAgICAgICAgICAg
ICAgICB0cnVlCisgICAgICAgICAgICAgICAgICAgICkgKTsKKworICAgICAgICAgICAgICAgICAg
ICAvLyBIQU5ETEU6ICQoaHRtbCwgcHJvcHMpCisgICAgICAgICAgICAgICAgICAgIGlmICggcnNp
bmdsZVRhZy50ZXN0KCBtYXRjaFsgMSBdICkgJiYgalF1ZXJ5LmlzUGxhaW5PYmplY3QoIGNvbnRl
eHQgKSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoIG1hdGNoIGluIGNvbnRleHQg
KSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBQcm9wZXJ0aWVzIG9mIGNvbnRl
eHQgYXJlIGNhbGxlZCBhcyBtZXRob2RzIGlmIHBvc3NpYmxlCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggdGhpc1sgbWF0Y2ggXSApICkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzWyBtYXRjaCBdKCBjb250ZXh0WyBtYXRj
aCBdICk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAuLi5hbmQgb3RoZXJ3aXNl
IHNldCBhcyBhdHRyaWJ1dGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hdHRyKCBtYXRjaCwgY29udGV4
dFsgbWF0Y2ggXSApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB0aGlzOworCisgICAgICAgICAgICAgICAgLy8gSEFORExFOiAkKCNpZCkKKyAg
ICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBlbGVtID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoIG1hdGNoWyAyIF0gKTsKKworICAgICAgICAgICAgICAgICAgICBp
ZiAoIGVsZW0gKSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIEluamVjdCB0aGUgZWxl
bWVudCBkaXJlY3RseSBpbnRvIHRoZSBqUXVlcnkgb2JqZWN0CisgICAgICAgICAgICAgICAgICAg
ICAgICB0aGlzWyAwIF0gPSBlbGVtOworICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sZW5n
dGggPSAxOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0aGlzOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gSEFORExFOiAkKGV4
cHIsICQoLi4uKSkKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoICFjb250ZXh0IHx8IGNvbnRleHQu
anF1ZXJ5ICkgeworICAgICAgICAgICAgICAgIHJldHVybiAoIGNvbnRleHQgfHwgcm9vdCApLmZp
bmQoIHNlbGVjdG9yICk7CisKKyAgICAgICAgICAgIC8vIEhBTkRMRTogJChleHByLCBjb250ZXh0
KQorICAgICAgICAgICAgLy8gKHdoaWNoIGlzIGp1c3QgZXF1aXZhbGVudCB0bzogJChjb250ZXh0
KS5maW5kKGV4cHIpCisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVy
biB0aGlzLmNvbnN0cnVjdG9yKCBjb250ZXh0ICkuZmluZCggc2VsZWN0b3IgKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAvLyBIQU5ETEU6ICQoRE9NRWxlbWVudCkKKyAgICAgICAgfSBlbHNl
IGlmICggc2VsZWN0b3Iubm9kZVR5cGUgKSB7CisgICAgICAgICAgICB0aGlzWyAwIF0gPSBzZWxl
Y3RvcjsKKyAgICAgICAgICAgIHRoaXMubGVuZ3RoID0gMTsKKyAgICAgICAgICAgIHJldHVybiB0
aGlzOworCisgICAgICAgIC8vIEhBTkRMRTogJChmdW5jdGlvbikKKyAgICAgICAgLy8gU2hvcnRj
dXQgZm9yIGRvY3VtZW50IHJlYWR5CisgICAgICAgIH0gZWxzZSBpZiAoIGpRdWVyeS5pc0Z1bmN0
aW9uKCBzZWxlY3RvciApICkgeworICAgICAgICAgICAgcmV0dXJuIHJvb3QucmVhZHkgIT09IHVu
ZGVmaW5lZCA/CisgICAgICAgICAgICAgICAgcm9vdC5yZWFkeSggc2VsZWN0b3IgKSA6CisKKyAg
ICAgICAgICAgICAgICAvLyBFeGVjdXRlIGltbWVkaWF0ZWx5IGlmIHJlYWR5IGlzIG5vdCBwcmVz
ZW50CisgICAgICAgICAgICAgICAgc2VsZWN0b3IoIGpRdWVyeSApOworICAgICAgICB9CisKKyAg
ICAgICAgcmV0dXJuIGpRdWVyeS5tYWtlQXJyYXkoIHNlbGVjdG9yLCB0aGlzICk7CisgICAgfTsK
KworLy8gR2l2ZSB0aGUgaW5pdCBmdW5jdGlvbiB0aGUgalF1ZXJ5IHByb3RvdHlwZSBmb3IgbGF0
ZXIgaW5zdGFudGlhdGlvbgoraW5pdC5wcm90b3R5cGUgPSBqUXVlcnkuZm47CisKKy8vIEluaXRp
YWxpemUgY2VudHJhbCByZWZlcmVuY2UKK3Jvb3RqUXVlcnkgPSBqUXVlcnkoIGRvY3VtZW50ICk7
CisKK3JldHVybiBpbml0OworCit9ICk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9u
ZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9jb3JlL3BhcnNlSFRNTC5qcyBiL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2NvcmUvcGFyc2VIVE1MLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjBkOGU3ZjFlZWQwZmQ4MTI3ODRhOTY0MmJlMGRhN2YwZjcxMDgwMDkKLS0tIC9kZXYv
bnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9j
b3JlL3BhcnNlSFRNTC5qcwpAQCAtMCwwICsxLDY1IEBACitkZWZpbmUoIFsKKyAgICAiLi4vY29y
ZSIsCisgICAgIi4uL3Zhci9kb2N1bWVudCIsCisgICAgIi4vdmFyL3JzaW5nbGVUYWciLAorICAg
ICIuLi9tYW5pcHVsYXRpb24vYnVpbGRGcmFnbWVudCIsCisKKyAgICAvLyBUaGlzIGlzIHRoZSBv
bmx5IG1vZHVsZSB0aGF0IG5lZWRzIGNvcmUvc3VwcG9ydAorICAgICIuL3N1cHBvcnQiCitdLCBm
dW5jdGlvbiggalF1ZXJ5LCBkb2N1bWVudCwgcnNpbmdsZVRhZywgYnVpbGRGcmFnbWVudCwgc3Vw
cG9ydCApIHsKKworInVzZSBzdHJpY3QiOworCisvLyBBcmd1bWVudCAiZGF0YSIgc2hvdWxkIGJl
IHN0cmluZyBvZiBodG1sCisvLyBjb250ZXh0IChvcHRpb25hbCk6IElmIHNwZWNpZmllZCwgdGhl
IGZyYWdtZW50IHdpbGwgYmUgY3JlYXRlZCBpbiB0aGlzIGNvbnRleHQsCisvLyBkZWZhdWx0cyB0
byBkb2N1bWVudAorLy8ga2VlcFNjcmlwdHMgKG9wdGlvbmFsKTogSWYgdHJ1ZSwgd2lsbCBpbmNs
dWRlIHNjcmlwdHMgcGFzc2VkIGluIHRoZSBodG1sIHN0cmluZworalF1ZXJ5LnBhcnNlSFRNTCA9
IGZ1bmN0aW9uKCBkYXRhLCBjb250ZXh0LCBrZWVwU2NyaXB0cyApIHsKKyAgICBpZiAoIHR5cGVv
ZiBkYXRhICE9PSAic3RyaW5nIiApIHsKKyAgICAgICAgcmV0dXJuIFtdOworICAgIH0KKyAgICBp
ZiAoIHR5cGVvZiBjb250ZXh0ID09PSAiYm9vbGVhbiIgKSB7CisgICAgICAgIGtlZXBTY3JpcHRz
ID0gY29udGV4dDsKKyAgICAgICAgY29udGV4dCA9IGZhbHNlOworICAgIH0KKworICAgIHZhciBi
YXNlLCBwYXJzZWQsIHNjcmlwdHM7CisKKyAgICBpZiAoICFjb250ZXh0ICkgeworCisgICAgICAg
IC8vIFN0b3Agc2NyaXB0cyBvciBpbmxpbmUgZXZlbnQgaGFuZGxlcnMgZnJvbSBiZWluZyBleGVj
dXRlZCBpbW1lZGlhdGVseQorICAgICAgICAvLyBieSB1c2luZyBkb2N1bWVudC5pbXBsZW1lbnRh
dGlvbgorICAgICAgICBpZiAoIHN1cHBvcnQuY3JlYXRlSFRNTERvY3VtZW50ICkgeworICAgICAg
ICAgICAgY29udGV4dCA9IGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVu
dCggIiIgKTsKKworICAgICAgICAgICAgLy8gU2V0IHRoZSBiYXNlIGhyZWYgZm9yIHRoZSBjcmVh
dGVkIGRvY3VtZW50CisgICAgICAgICAgICAvLyBzbyBhbnkgcGFyc2VkIGVsZW1lbnRzIHdpdGgg
VVJMcworICAgICAgICAgICAgLy8gYXJlIGJhc2VkIG9uIHRoZSBkb2N1bWVudCdzIFVSTCAoZ2gt
Mjk2NSkKKyAgICAgICAgICAgIGJhc2UgPSBjb250ZXh0LmNyZWF0ZUVsZW1lbnQoICJiYXNlIiAp
OworICAgICAgICAgICAgYmFzZS5ocmVmID0gZG9jdW1lbnQubG9jYXRpb24uaHJlZjsKKyAgICAg
ICAgICAgIGNvbnRleHQuaGVhZC5hcHBlbmRDaGlsZCggYmFzZSApOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgY29udGV4dCA9IGRvY3VtZW50OworICAgICAgICB9CisgICAgfQorCisg
ICAgcGFyc2VkID0gcnNpbmdsZVRhZy5leGVjKCBkYXRhICk7CisgICAgc2NyaXB0cyA9ICFrZWVw
U2NyaXB0cyAmJiBbXTsKKworICAgIC8vIFNpbmdsZSB0YWcKKyAgICBpZiAoIHBhcnNlZCApIHsK
KyAgICAgICAgcmV0dXJuIFsgY29udGV4dC5jcmVhdGVFbGVtZW50KCBwYXJzZWRbIDEgXSApIF07
CisgICAgfQorCisgICAgcGFyc2VkID0gYnVpbGRGcmFnbWVudCggWyBkYXRhIF0sIGNvbnRleHQs
IHNjcmlwdHMgKTsKKworICAgIGlmICggc2NyaXB0cyAmJiBzY3JpcHRzLmxlbmd0aCApIHsKKyAg
ICAgICAgalF1ZXJ5KCBzY3JpcHRzICkucmVtb3ZlKCk7CisgICAgfQorCisgICAgcmV0dXJuIGpR
dWVyeS5tZXJnZSggW10sIHBhcnNlZC5jaGlsZE5vZGVzICk7Cit9OworCityZXR1cm4galF1ZXJ5
LnBhcnNlSFRNTDsKKworfSApOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9k
ZV9tb2R1bGVzL2pxdWVyeS9zcmMvY29yZS9yZWFkeS1uby1kZWZlcnJlZC5qcyBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2NvcmUvcmVhZHktbm8tZGVmZXJy
ZWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYjI2ZTc3ZTUyYmRlZTI5NjViYzhkOTM4M2IzMDk3NjY0NTliZDc5
ZgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9q
cXVlcnkvc3JjL2NvcmUvcmVhZHktbm8tZGVmZXJyZWQuanMKQEAgLTAsMCArMSwxMDUgQEAKK2Rl
ZmluZSggWworICAgICIuLi9jb3JlIiwKKyAgICAiLi4vdmFyL2RvY3VtZW50IgorXSwgZnVuY3Rp
b24oIGpRdWVyeSwgZG9jdW1lbnQgKSB7CisKKyJ1c2Ugc3RyaWN0IjsKKwordmFyIHJlYWR5Q2Fs
bGJhY2tzID0gW10sCisgICAgd2hlblJlYWR5ID0gZnVuY3Rpb24oIGZuICkgeworICAgICAgICBy
ZWFkeUNhbGxiYWNrcy5wdXNoKCBmbiApOworICAgIH0sCisgICAgZXhlY3V0ZVJlYWR5ID0gZnVu
Y3Rpb24oIGZuICkgeworCisgICAgICAgIC8vIFByZXZlbnQgZXJyb3JzIGZyb20gZnJlZXppbmcg
ZnV0dXJlIGNhbGxiYWNrIGV4ZWN1dGlvbiAoZ2gtMTgyMykKKyAgICAgICAgLy8gTm90IGJhY2t3
YXJkcy1jb21wYXRpYmxlIGFzIHRoaXMgZG9lcyBub3QgZXhlY3V0ZSBzeW5jCisgICAgICAgIHdp
bmRvdy5zZXRUaW1lb3V0KCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGZuLmNhbGwoIGRvY3Vt
ZW50LCBqUXVlcnkgKTsKKyAgICAgICAgfSApOworICAgIH07CisKK2pRdWVyeS5mbi5yZWFkeSA9
IGZ1bmN0aW9uKCBmbiApIHsKKyAgICB3aGVuUmVhZHkoIGZuICk7CisgICAgcmV0dXJuIHRoaXM7
Cit9OworCitqUXVlcnkuZXh0ZW5kKCB7CisKKyAgICAvLyBJcyB0aGUgRE9NIHJlYWR5IHRvIGJl
IHVzZWQ/IFNldCB0byB0cnVlIG9uY2UgaXQgb2NjdXJzLgorICAgIGlzUmVhZHk6IGZhbHNlLAor
CisgICAgLy8gQSBjb3VudGVyIHRvIHRyYWNrIGhvdyBtYW55IGl0ZW1zIHRvIHdhaXQgZm9yIGJl
Zm9yZQorICAgIC8vIHRoZSByZWFkeSBldmVudCBmaXJlcy4gU2VlICM2NzgxCisgICAgcmVhZHlX
YWl0OiAxLAorCisgICAgLy8gSG9sZCAob3IgcmVsZWFzZSkgdGhlIHJlYWR5IGV2ZW50CisgICAg
aG9sZFJlYWR5OiBmdW5jdGlvbiggaG9sZCApIHsKKyAgICAgICAgaWYgKCBob2xkICkgeworICAg
ICAgICAgICAgalF1ZXJ5LnJlYWR5V2FpdCsrOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgalF1ZXJ5LnJlYWR5KCB0cnVlICk7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgcmVhZHk6
IGZ1bmN0aW9uKCB3YWl0ICkgeworCisgICAgICAgIC8vIEFib3J0IGlmIHRoZXJlIGFyZSBwZW5k
aW5nIGhvbGRzIG9yIHdlJ3JlIGFscmVhZHkgcmVhZHkKKyAgICAgICAgaWYgKCB3YWl0ID09PSB0
cnVlID8gLS1qUXVlcnkucmVhZHlXYWl0IDogalF1ZXJ5LmlzUmVhZHkgKSB7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBSZW1lbWJlciB0aGF0IHRoZSBET00g
aXMgcmVhZHkKKyAgICAgICAgalF1ZXJ5LmlzUmVhZHkgPSB0cnVlOworCisgICAgICAgIC8vIElm
IGEgbm9ybWFsIERPTSBSZWFkeSBldmVudCBmaXJlZCwgZGVjcmVtZW50LCBhbmQgd2FpdCBpZiBu
ZWVkIGJlCisgICAgICAgIGlmICggd2FpdCAhPT0gdHJ1ZSAmJiAtLWpRdWVyeS5yZWFkeVdhaXQg
PiAwICkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgd2hlblJl
YWR5ID0gZnVuY3Rpb24oIGZuICkgeworICAgICAgICAgICAgcmVhZHlDYWxsYmFja3MucHVzaCgg
Zm4gKTsKKworICAgICAgICAgICAgd2hpbGUgKCByZWFkeUNhbGxiYWNrcy5sZW5ndGggKSB7Cisg
ICAgICAgICAgICAgICAgZm4gPSByZWFkeUNhbGxiYWNrcy5zaGlmdCgpOworICAgICAgICAgICAg
ICAgIGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIGZuICkgKSB7CisgICAgICAgICAgICAgICAgICAg
IGV4ZWN1dGVSZWFkeSggZm4gKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg
ICAgICAgIH07CisKKyAgICAgICAgd2hlblJlYWR5KCk7CisgICAgfQorfSApOworCisvLyBNYWtl
IGpRdWVyeS5yZWFkeSBQcm9taXNlIGNvbnN1bWFibGUgKGdoLTE3NzgpCitqUXVlcnkucmVhZHku
dGhlbiA9IGpRdWVyeS5mbi5yZWFkeTsKKworLyoqCisgKiBUaGUgcmVhZHkgZXZlbnQgaGFuZGxl
ciBhbmQgc2VsZiBjbGVhbnVwIG1ldGhvZAorICovCitmdW5jdGlvbiBjb21wbGV0ZWQoKSB7Cisg
ICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lciggIkRPTUNvbnRlbnRMb2FkZWQiLCBjb21w
bGV0ZWQgKTsKKyAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lciggImxvYWQiLCBjb21wbGV0
ZWQgKTsKKyAgICBqUXVlcnkucmVhZHkoKTsKK30KKworLy8gQ2F0Y2ggY2FzZXMgd2hlcmUgJChk
b2N1bWVudCkucmVhZHkoKSBpcyBjYWxsZWQKKy8vIGFmdGVyIHRoZSBicm93c2VyIGV2ZW50IGhh
cyBhbHJlYWR5IG9jY3VycmVkLgorLy8gU3VwcG9ydDogSUU5LTEwIG9ubHkKKy8vIE9sZGVyIElF
IHNvbWV0aW1lcyBzaWduYWxzICJpbnRlcmFjdGl2ZSIgdG9vIHNvb24KK2lmICggZG9jdW1lbnQu
cmVhZHlTdGF0ZSA9PT0gImNvbXBsZXRlIiB8fAorICAgICggZG9jdW1lbnQucmVhZHlTdGF0ZSAh
PT0gImxvYWRpbmciICYmICFkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZG9TY3JvbGwgKSApIHsK
KworICAgIC8vIEhhbmRsZSBpdCBhc3luY2hyb25vdXNseSB0byBhbGxvdyBzY3JpcHRzIHRoZSBv
cHBvcnR1bml0eSB0byBkZWxheSByZWFkeQorICAgIHdpbmRvdy5zZXRUaW1lb3V0KCBqUXVlcnku
cmVhZHkgKTsKKworfSBlbHNlIHsKKworICAgIC8vIFVzZSB0aGUgaGFuZHkgZXZlbnQgY2FsbGJh
Y2sKKyAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCAiRE9NQ29udGVudExvYWRlZCIsIGNv
bXBsZXRlZCApOworCisgICAgLy8gQSBmYWxsYmFjayB0byB3aW5kb3cub25sb2FkLCB0aGF0IHdp
bGwgYWx3YXlzIHdvcmsKKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lciggImxvYWQiLCBjb21w
bGV0ZWQgKTsKK30KKworfSApOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9k
ZV9tb2R1bGVzL2pxdWVyeS9zcmMvY29yZS9yZWFkeS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25l
L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2NvcmUvcmVhZHkuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVjYjc0
NDYxMGNkZDFhZDMzMGM5NmJlYjk5YWFhNDJmODkwMWMwYgotLS0gL2Rldi9udWxsCisrKyBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2NvcmUvcmVhZHkuanMK
QEAgLTAsMCArMSw5NSBAQAorZGVmaW5lKCBbCisgICAgIi4uL2NvcmUiLAorICAgICIuLi92YXIv
ZG9jdW1lbnQiLAorICAgICIuLi9jb3JlL3JlYWR5RXhjZXB0aW9uIiwKKyAgICAiLi4vZGVmZXJy
ZWQiCitdLCBmdW5jdGlvbiggalF1ZXJ5LCBkb2N1bWVudCApIHsKKworInVzZSBzdHJpY3QiOwor
CisvLyBUaGUgZGVmZXJyZWQgdXNlZCBvbiBET00gcmVhZHkKK3ZhciByZWFkeUxpc3QgPSBqUXVl
cnkuRGVmZXJyZWQoKTsKKworalF1ZXJ5LmZuLnJlYWR5ID0gZnVuY3Rpb24oIGZuICkgeworCisg
ICAgcmVhZHlMaXN0CisgICAgICAgIC50aGVuKCBmbiApCisKKyAgICAgICAgLy8gV3JhcCBqUXVl
cnkucmVhZHlFeGNlcHRpb24gaW4gYSBmdW5jdGlvbiBzbyB0aGF0IHRoZSBsb29rdXAKKyAgICAg
ICAgLy8gaGFwcGVucyBhdCB0aGUgdGltZSBvZiBlcnJvciBoYW5kbGluZyBpbnN0ZWFkIG9mIGNh
bGxiYWNrCisgICAgICAgIC8vIHJlZ2lzdHJhdGlvbi4KKyAgICAgICAgLmNhdGNoKCBmdW5jdGlv
biggZXJyb3IgKSB7CisgICAgICAgICAgICBqUXVlcnkucmVhZHlFeGNlcHRpb24oIGVycm9yICk7
CisgICAgICAgIH0gKTsKKworICAgIHJldHVybiB0aGlzOworfTsKKworalF1ZXJ5LmV4dGVuZCgg
eworCisgICAgLy8gSXMgdGhlIERPTSByZWFkeSB0byBiZSB1c2VkPyBTZXQgdG8gdHJ1ZSBvbmNl
IGl0IG9jY3Vycy4KKyAgICBpc1JlYWR5OiBmYWxzZSwKKworICAgIC8vIEEgY291bnRlciB0byB0
cmFjayBob3cgbWFueSBpdGVtcyB0byB3YWl0IGZvciBiZWZvcmUKKyAgICAvLyB0aGUgcmVhZHkg
ZXZlbnQgZmlyZXMuIFNlZSAjNjc4MQorICAgIHJlYWR5V2FpdDogMSwKKworICAgIC8vIEhvbGQg
KG9yIHJlbGVhc2UpIHRoZSByZWFkeSBldmVudAorICAgIGhvbGRSZWFkeTogZnVuY3Rpb24oIGhv
bGQgKSB7CisgICAgICAgIGlmICggaG9sZCApIHsKKyAgICAgICAgICAgIGpRdWVyeS5yZWFkeVdh
aXQrKzsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGpRdWVyeS5yZWFkeSggdHJ1ZSAp
OworICAgICAgICB9CisgICAgfSwKKworICAgIC8vIEhhbmRsZSB3aGVuIHRoZSBET00gaXMgcmVh
ZHkKKyAgICByZWFkeTogZnVuY3Rpb24oIHdhaXQgKSB7CisKKyAgICAgICAgLy8gQWJvcnQgaWYg
dGhlcmUgYXJlIHBlbmRpbmcgaG9sZHMgb3Igd2UncmUgYWxyZWFkeSByZWFkeQorICAgICAgICBp
ZiAoIHdhaXQgPT09IHRydWUgPyAtLWpRdWVyeS5yZWFkeVdhaXQgOiBqUXVlcnkuaXNSZWFkeSAp
IHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFJlbWVtYmVy
IHRoYXQgdGhlIERPTSBpcyByZWFkeQorICAgICAgICBqUXVlcnkuaXNSZWFkeSA9IHRydWU7CisK
KyAgICAgICAgLy8gSWYgYSBub3JtYWwgRE9NIFJlYWR5IGV2ZW50IGZpcmVkLCBkZWNyZW1lbnQs
IGFuZCB3YWl0IGlmIG5lZWQgYmUKKyAgICAgICAgaWYgKCB3YWl0ICE9PSB0cnVlICYmIC0talF1
ZXJ5LnJlYWR5V2FpdCA+IDAgKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICAvLyBJZiB0aGVyZSBhcmUgZnVuY3Rpb25zIGJvdW5kLCB0byBleGVjdXRlCisgICAg
ICAgIHJlYWR5TGlzdC5yZXNvbHZlV2l0aCggZG9jdW1lbnQsIFsgalF1ZXJ5IF0gKTsKKyAgICB9
Cit9ICk7CisKK2pRdWVyeS5yZWFkeS50aGVuID0gcmVhZHlMaXN0LnRoZW47CisKKy8vIFRoZSBy
ZWFkeSBldmVudCBoYW5kbGVyIGFuZCBzZWxmIGNsZWFudXAgbWV0aG9kCitmdW5jdGlvbiBjb21w
bGV0ZWQoKSB7CisgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lciggIkRPTUNvbnRlbnRM
b2FkZWQiLCBjb21wbGV0ZWQgKTsKKyAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lciggImxv
YWQiLCBjb21wbGV0ZWQgKTsKKyAgICBqUXVlcnkucmVhZHkoKTsKK30KKworLy8gQ2F0Y2ggY2Fz
ZXMgd2hlcmUgJChkb2N1bWVudCkucmVhZHkoKSBpcyBjYWxsZWQKKy8vIGFmdGVyIHRoZSBicm93
c2VyIGV2ZW50IGhhcyBhbHJlYWR5IG9jY3VycmVkLgorLy8gU3VwcG9ydDogSUUgPD05IC0gMTAg
b25seQorLy8gT2xkZXIgSUUgc29tZXRpbWVzIHNpZ25hbHMgImludGVyYWN0aXZlIiB0b28gc29v
bgoraWYgKCBkb2N1bWVudC5yZWFkeVN0YXRlID09PSAiY29tcGxldGUiIHx8CisgICAgKCBkb2N1
bWVudC5yZWFkeVN0YXRlICE9PSAibG9hZGluZyIgJiYgIWRvY3VtZW50LmRvY3VtZW50RWxlbWVu
dC5kb1Njcm9sbCApICkgeworCisgICAgLy8gSGFuZGxlIGl0IGFzeW5jaHJvbm91c2x5IHRvIGFs
bG93IHNjcmlwdHMgdGhlIG9wcG9ydHVuaXR5IHRvIGRlbGF5IHJlYWR5CisgICAgd2luZG93LnNl
dFRpbWVvdXQoIGpRdWVyeS5yZWFkeSApOworCit9IGVsc2UgeworCisgICAgLy8gVXNlIHRoZSBo
YW5keSBldmVudCBjYWxsYmFjaworICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoICJET01D
b250ZW50TG9hZGVkIiwgY29tcGxldGVkICk7CisKKyAgICAvLyBBIGZhbGxiYWNrIHRvIHdpbmRv
dy5vbmxvYWQsIHRoYXQgd2lsbCBhbHdheXMgd29yaworICAgIHdpbmRvdy5hZGRFdmVudExpc3Rl
bmVyKCAibG9hZCIsIGNvbXBsZXRlZCApOworfQorCit9ICk7CmRpZmYgLS1naXQgYS9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9jb3JlL3JlYWR5RXhjZXB0aW9u
LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvY29yZS9y
ZWFkeUV4Y2VwdGlvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NGMzZTQzYzUxY2IyYWVkMTgzZWM1NmNhMjUy
NDZjZGVhZjdkYjAzCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9k
ZV9tb2R1bGVzL2pxdWVyeS9zcmMvY29yZS9yZWFkeUV4Y2VwdGlvbi5qcwpAQCAtMCwwICsxLDEz
IEBACitkZWZpbmUoIFsKKyAgICAiLi4vY29yZSIKK10sIGZ1bmN0aW9uKCBqUXVlcnkgKSB7CisK
KyJ1c2Ugc3RyaWN0IjsKKworalF1ZXJ5LnJlYWR5RXhjZXB0aW9uID0gZnVuY3Rpb24oIGVycm9y
ICkgeworICAgIHdpbmRvdy5zZXRUaW1lb3V0KCBmdW5jdGlvbigpIHsKKyAgICAgICAgdGhyb3cg
ZXJyb3I7CisgICAgfSApOworfTsKKworfSApOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFj
a2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvY29yZS9zdHJpcEFuZENvbGxhcHNlLmpzIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvY29yZS9zdHJpcEFu
ZENvbGxhcHNlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQzNWY1MmZhN2RmMjhhMjIwNzRkZDMyMDAwOGE0MDVi
ZmZkYjQ2NzUKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21v
ZHVsZXMvanF1ZXJ5L3NyYy9jb3JlL3N0cmlwQW5kQ29sbGFwc2UuanMKQEAgLTAsMCArMSwxNCBA
QAorZGVmaW5lKCBbCisgICAgIi4uL3Zhci9ybm90aHRtbHdoaXRlIgorXSwgZnVuY3Rpb24oIHJu
b3RodG1sd2hpdGUgKSB7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgLy8gU3RyaXAgYW5kIGNv
bGxhcHNlIHdoaXRlc3BhY2UgYWNjb3JkaW5nIHRvIEhUTUwgc3BlYworICAgIC8vIGh0dHBzOi8v
aHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2luZnJhc3RydWN0dXJlLmh0bWwjc3RyaXAt
YW5kLWNvbGxhcHNlLXdoaXRlc3BhY2UKKyAgICBmdW5jdGlvbiBzdHJpcEFuZENvbGxhcHNlKCB2
YWx1ZSApIHsKKyAgICAgICAgdmFyIHRva2VucyA9IHZhbHVlLm1hdGNoKCBybm90aHRtbHdoaXRl
ICkgfHwgW107CisgICAgICAgIHJldHVybiB0b2tlbnMuam9pbiggIiAiICk7CisgICAgfQorCisg
ICAgcmV0dXJuIHN0cmlwQW5kQ29sbGFwc2U7Cit9ICk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9jb3JlL3N1cHBvcnQuanMgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9jb3JlL3N1cHBvcnQuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZTA3MTlhYjljYmE5YWEyNThhNmQxMmNiMzRlMjVlM2RiODE2M2U1NQotLS0g
L2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkv
c3JjL2NvcmUvc3VwcG9ydC5qcwpAQCAtMCwwICsxLDIwIEBACitkZWZpbmUoIFsKKyAgICAiLi4v
dmFyL2RvY3VtZW50IiwKKyAgICAiLi4vdmFyL3N1cHBvcnQiCitdLCBmdW5jdGlvbiggZG9jdW1l
bnQsIHN1cHBvcnQgKSB7CisKKyJ1c2Ugc3RyaWN0IjsKKworLy8gU3VwcG9ydDogU2FmYXJpIDgg
b25seQorLy8gSW4gU2FmYXJpIDggZG9jdW1lbnRzIGNyZWF0ZWQgdmlhIGRvY3VtZW50LmltcGxl
bWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudAorLy8gY29sbGFwc2Ugc2libGluZyBmb3Jtczog
dGhlIHNlY29uZCBvbmUgYmVjb21lcyBhIGNoaWxkIG9mIHRoZSBmaXJzdCBvbmUuCisvLyBCZWNh
dXNlIG9mIHRoYXQsIHRoaXMgc2VjdXJpdHkgbWVhc3VyZSBoYXMgdG8gYmUgZGlzYWJsZWQgaW4g
U2FmYXJpIDguCisvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3
MzM3CitzdXBwb3J0LmNyZWF0ZUhUTUxEb2N1bWVudCA9ICggZnVuY3Rpb24oKSB7CisgICAgdmFy
IGJvZHkgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoICIiICku
Ym9keTsKKyAgICBib2R5LmlubmVySFRNTCA9ICI8Zm9ybT48L2Zvcm0+PGZvcm0+PC9mb3JtPiI7
CisgICAgcmV0dXJuIGJvZHkuY2hpbGROb2Rlcy5sZW5ndGggPT09IDI7Cit9ICkoKTsKKworcmV0
dXJuIHN1cHBvcnQ7Cit9ICk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2Rl
X21vZHVsZXMvanF1ZXJ5L3NyYy9jb3JlL3Zhci9yc2luZ2xlVGFnLmpzIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
YmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvY29yZS92YXIvcnNpbmdsZVRhZy5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wZWY4MGI0OTFjMjI5YjRjZDE0MDEwMDhhZmEyMjE3YWM1NjRkZjQwCi0tLSAv
ZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9z
cmMvY29yZS92YXIvcnNpbmdsZVRhZy5qcwpAQCAtMCwwICsxLDYgQEAKK2RlZmluZSggZnVuY3Rp
b24oKSB7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgLy8gTWF0Y2ggYSBzdGFuZGFsb25lIHRh
ZworICAgIHJldHVybiAoIC9ePChbYS16XVteXC9cMD46XHgyMFx0XHJcblxmXSopW1x4MjBcdFxy
XG5cZl0qXC8/Pig/OjxcL1wxPnwpJC9pICk7Cit9ICk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9jc3MuanMgYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9i
YWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9jc3MuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWM0MmFm
OWJmZDdiMDYzNjQ4NmIxNjRkNzM2NjQ4ZjM4NDhkZDBkMQotLS0gL2Rldi9udWxsCisrKyBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2Nzcy5qcwpAQCAtMCww
ICsxLDQyNiBAQAorZGVmaW5lKCBbCisgICAgIi4vY29yZSIsCisgICAgIi4vdmFyL3BudW0iLAor
ICAgICIuL2NvcmUvYWNjZXNzIiwKKyAgICAiLi9jc3MvdmFyL3JtYXJnaW4iLAorICAgICIuL3Zh
ci9kb2N1bWVudCIsCisgICAgIi4vdmFyL3Jjc3NOdW0iLAorICAgICIuL2Nzcy92YXIvcm51bW5v
bnB4IiwKKyAgICAiLi9jc3MvdmFyL2Nzc0V4cGFuZCIsCisgICAgIi4vY3NzL3Zhci9nZXRTdHls
ZXMiLAorICAgICIuL2Nzcy92YXIvc3dhcCIsCisgICAgIi4vY3NzL2N1ckNTUyIsCisgICAgIi4v
Y3NzL2FkanVzdENTUyIsCisgICAgIi4vY3NzL2FkZEdldEhvb2tJZiIsCisgICAgIi4vY3NzL3N1
cHBvcnQiLAorCisgICAgIi4vY29yZS9pbml0IiwKKyAgICAiLi9jb3JlL3JlYWR5IiwKKyAgICAi
Li9zZWxlY3RvciIgLy8gY29udGFpbnMKK10sIGZ1bmN0aW9uKCBqUXVlcnksIHBudW0sIGFjY2Vz
cywgcm1hcmdpbiwgZG9jdW1lbnQsIHJjc3NOdW0sIHJudW1ub25weCwgY3NzRXhwYW5kLAorICAg
IGdldFN0eWxlcywgc3dhcCwgY3VyQ1NTLCBhZGp1c3RDU1MsIGFkZEdldEhvb2tJZiwgc3VwcG9y
dCApIHsKKworInVzZSBzdHJpY3QiOworCit2YXIKKworICAgIC8vIFN3YXBwYWJsZSBpZiBkaXNw
bGF5IGlzIG5vbmUgb3Igc3RhcnRzIHdpdGggdGFibGUKKyAgICAvLyBleGNlcHQgInRhYmxlIiwg
InRhYmxlLWNlbGwiLCBvciAidGFibGUtY2FwdGlvbiIKKyAgICAvLyBTZWUgaGVyZSBmb3IgZGlz
cGxheSB2YWx1ZXM6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvQ1NT
L2Rpc3BsYXkKKyAgICByZGlzcGxheXN3YXAgPSAvXihub25lfHRhYmxlKD8hLWNbZWFdKS4rKS8s
CisgICAgY3NzU2hvdyA9IHsgcG9zaXRpb246ICJhYnNvbHV0ZSIsIHZpc2liaWxpdHk6ICJoaWRk
ZW4iLCBkaXNwbGF5OiAiYmxvY2siIH0sCisgICAgY3NzTm9ybWFsVHJhbnNmb3JtID0geworICAg
ICAgICBsZXR0ZXJTcGFjaW5nOiAiMCIsCisgICAgICAgIGZvbnRXZWlnaHQ6ICI0MDAiCisgICAg
fSwKKworICAgIGNzc1ByZWZpeGVzID0gWyAiV2Via2l0IiwgIk1veiIsICJtcyIgXSwKKyAgICBl
bXB0eVN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggImRpdiIgKS5zdHlsZTsKKworLy8g
UmV0dXJuIGEgY3NzIHByb3BlcnR5IG1hcHBlZCB0byBhIHBvdGVudGlhbGx5IHZlbmRvciBwcmVm
aXhlZCBwcm9wZXJ0eQorZnVuY3Rpb24gdmVuZG9yUHJvcE5hbWUoIG5hbWUgKSB7CisKKyAgICAv
LyBTaG9ydGN1dCBmb3IgbmFtZXMgdGhhdCBhcmUgbm90IHZlbmRvciBwcmVmaXhlZAorICAgIGlm
ICggbmFtZSBpbiBlbXB0eVN0eWxlICkgeworICAgICAgICByZXR1cm4gbmFtZTsKKyAgICB9CisK
KyAgICAvLyBDaGVjayBmb3IgdmVuZG9yIHByZWZpeGVkIG5hbWVzCisgICAgdmFyIGNhcE5hbWUg
PSBuYW1lWyAwIF0udG9VcHBlckNhc2UoKSArIG5hbWUuc2xpY2UoIDEgKSwKKyAgICAgICAgaSA9
IGNzc1ByZWZpeGVzLmxlbmd0aDsKKworICAgIHdoaWxlICggaS0tICkgeworICAgICAgICBuYW1l
ID0gY3NzUHJlZml4ZXNbIGkgXSArIGNhcE5hbWU7CisgICAgICAgIGlmICggbmFtZSBpbiBlbXB0
eVN0eWxlICkgeworICAgICAgICAgICAgcmV0dXJuIG5hbWU7CisgICAgICAgIH0KKyAgICB9Cit9
CisKK2Z1bmN0aW9uIHNldFBvc2l0aXZlTnVtYmVyKCBlbGVtLCB2YWx1ZSwgc3VidHJhY3QgKSB7
CisKKyAgICAvLyBBbnkgcmVsYXRpdmUgKCsvLSkgdmFsdWVzIGhhdmUgYWxyZWFkeSBiZWVuCisg
ICAgLy8gbm9ybWFsaXplZCBhdCB0aGlzIHBvaW50CisgICAgdmFyIG1hdGNoZXMgPSByY3NzTnVt
LmV4ZWMoIHZhbHVlICk7CisgICAgcmV0dXJuIG1hdGNoZXMgPworCisgICAgICAgIC8vIEd1YXJk
IGFnYWluc3QgdW5kZWZpbmVkICJzdWJ0cmFjdCIsIGUuZy4sIHdoZW4gdXNlZCBhcyBpbiBjc3NI
b29rcworICAgICAgICBNYXRoLm1heCggMCwgbWF0Y2hlc1sgMiBdIC0gKCBzdWJ0cmFjdCB8fCAw
ICkgKSArICggbWF0Y2hlc1sgMyBdIHx8ICJweCIgKSA6CisgICAgICAgIHZhbHVlOworfQorCitm
dW5jdGlvbiBhdWdtZW50V2lkdGhPckhlaWdodCggZWxlbSwgbmFtZSwgZXh0cmEsIGlzQm9yZGVy
Qm94LCBzdHlsZXMgKSB7CisgICAgdmFyIGksCisgICAgICAgIHZhbCA9IDA7CisKKyAgICAvLyBJ
ZiB3ZSBhbHJlYWR5IGhhdmUgdGhlIHJpZ2h0IG1lYXN1cmVtZW50LCBhdm9pZCBhdWdtZW50YXRp
b24KKyAgICBpZiAoIGV4dHJhID09PSAoIGlzQm9yZGVyQm94ID8gImJvcmRlciIgOiAiY29udGVu
dCIgKSApIHsKKyAgICAgICAgaSA9IDQ7CisKKyAgICAvLyBPdGhlcndpc2UgaW5pdGlhbGl6ZSBm
b3IgaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCBwcm9wZXJ0aWVzCisgICAgfSBlbHNlIHsKKyAgICAg
ICAgaSA9IG5hbWUgPT09ICJ3aWR0aCIgPyAxIDogMDsKKyAgICB9CisKKyAgICBmb3IgKCA7IGkg
PCA0OyBpICs9IDIgKSB7CisKKyAgICAgICAgLy8gQm90aCBib3ggbW9kZWxzIGV4Y2x1ZGUgbWFy
Z2luLCBzbyBhZGQgaXQgaWYgd2Ugd2FudCBpdAorICAgICAgICBpZiAoIGV4dHJhID09PSAibWFy
Z2luIiApIHsKKyAgICAgICAgICAgIHZhbCArPSBqUXVlcnkuY3NzKCBlbGVtLCBleHRyYSArIGNz
c0V4cGFuZFsgaSBdLCB0cnVlLCBzdHlsZXMgKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICgg
aXNCb3JkZXJCb3ggKSB7CisKKyAgICAgICAgICAgIC8vIGJvcmRlci1ib3ggaW5jbHVkZXMgcGFk
ZGluZywgc28gcmVtb3ZlIGl0IGlmIHdlIHdhbnQgY29udGVudAorICAgICAgICAgICAgaWYgKCBl
eHRyYSA9PT0gImNvbnRlbnQiICkgeworICAgICAgICAgICAgICAgIHZhbCAtPSBqUXVlcnkuY3Nz
KCBlbGVtLCAicGFkZGluZyIgKyBjc3NFeHBhbmRbIGkgXSwgdHJ1ZSwgc3R5bGVzICk7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEF0IHRoaXMgcG9pbnQsIGV4dHJhIGlzbid0IGJv
cmRlciBub3IgbWFyZ2luLCBzbyByZW1vdmUgYm9yZGVyCisgICAgICAgICAgICBpZiAoIGV4dHJh
ICE9PSAibWFyZ2luIiApIHsKKyAgICAgICAgICAgICAgICB2YWwgLT0galF1ZXJ5LmNzcyggZWxl
bSwgImJvcmRlciIgKyBjc3NFeHBhbmRbIGkgXSArICJXaWR0aCIsIHRydWUsIHN0eWxlcyApOwor
ICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworCisgICAgICAgICAgICAvLyBBdCB0aGlz
IHBvaW50LCBleHRyYSBpc24ndCBjb250ZW50LCBzbyBhZGQgcGFkZGluZworICAgICAgICAgICAg
dmFsICs9IGpRdWVyeS5jc3MoIGVsZW0sICJwYWRkaW5nIiArIGNzc0V4cGFuZFsgaSBdLCB0cnVl
LCBzdHlsZXMgKTsKKworICAgICAgICAgICAgLy8gQXQgdGhpcyBwb2ludCwgZXh0cmEgaXNuJ3Qg
Y29udGVudCBub3IgcGFkZGluZywgc28gYWRkIGJvcmRlcgorICAgICAgICAgICAgaWYgKCBleHRy
YSAhPT0gInBhZGRpbmciICkgeworICAgICAgICAgICAgICAgIHZhbCArPSBqUXVlcnkuY3NzKCBl
bGVtLCAiYm9yZGVyIiArIGNzc0V4cGFuZFsgaSBdICsgIldpZHRoIiwgdHJ1ZSwgc3R5bGVzICk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gdmFsOworfQor
CitmdW5jdGlvbiBnZXRXaWR0aE9ySGVpZ2h0KCBlbGVtLCBuYW1lLCBleHRyYSApIHsKKworICAg
IC8vIFN0YXJ0IHdpdGggb2Zmc2V0IHByb3BlcnR5LCB3aGljaCBpcyBlcXVpdmFsZW50IHRvIHRo
ZSBib3JkZXItYm94IHZhbHVlCisgICAgdmFyIHZhbCwKKyAgICAgICAgdmFsdWVJc0JvcmRlckJv
eCA9IHRydWUsCisgICAgICAgIHN0eWxlcyA9IGdldFN0eWxlcyggZWxlbSApLAorICAgICAgICBp
c0JvcmRlckJveCA9IGpRdWVyeS5jc3MoIGVsZW0sICJib3hTaXppbmciLCBmYWxzZSwgc3R5bGVz
ICkgPT09ICJib3JkZXItYm94IjsKKworICAgIC8vIFN1cHBvcnQ6IElFIDw9MTEgb25seQorICAg
IC8vIFJ1bm5pbmcgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IG9uIGEgZGlzY29ubmVjdGVkIG5vZGUK
KyAgICAvLyBpbiBJRSB0aHJvd3MgYW4gZXJyb3IuCisgICAgaWYgKCBlbGVtLmdldENsaWVudFJl
Y3RzKCkubGVuZ3RoICkgeworICAgICAgICB2YWwgPSBlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVj
dCgpWyBuYW1lIF07CisgICAgfQorCisgICAgLy8gU29tZSBub24taHRtbCBlbGVtZW50cyByZXR1
cm4gdW5kZWZpbmVkIGZvciBvZmZzZXRXaWR0aCwgc28gY2hlY2sgZm9yIG51bGwvdW5kZWZpbmVk
CisgICAgLy8gc3ZnIC0gaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NjQ5Mjg1CisgICAgLy8gTWF0aE1MIC0gaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NDkxNjY4CisgICAgaWYgKCB2YWwgPD0gMCB8fCB2YWwgPT0gbnVsbCAp
IHsKKworICAgICAgICAvLyBGYWxsIGJhY2sgdG8gY29tcHV0ZWQgdGhlbiB1bmNvbXB1dGVkIGNz
cyBpZiBuZWNlc3NhcnkKKyAgICAgICAgdmFsID0gY3VyQ1NTKCBlbGVtLCBuYW1lLCBzdHlsZXMg
KTsKKyAgICAgICAgaWYgKCB2YWwgPCAwIHx8IHZhbCA9PSBudWxsICkgeworICAgICAgICAgICAg
dmFsID0gZWxlbS5zdHlsZVsgbmFtZSBdOworICAgICAgICB9CisKKyAgICAgICAgLy8gQ29tcHV0
ZWQgdW5pdCBpcyBub3QgcGl4ZWxzLiBTdG9wIGhlcmUgYW5kIHJldHVybi4KKyAgICAgICAgaWYg
KCBybnVtbm9ucHgudGVzdCggdmFsICkgKSB7CisgICAgICAgICAgICByZXR1cm4gdmFsOworICAg
ICAgICB9CisKKyAgICAgICAgLy8gQ2hlY2sgZm9yIHN0eWxlIGluIGNhc2UgYSBicm93c2VyIHdo
aWNoIHJldHVybnMgdW5yZWxpYWJsZSB2YWx1ZXMKKyAgICAgICAgLy8gZm9yIGdldENvbXB1dGVk
U3R5bGUgc2lsZW50bHkgZmFsbHMgYmFjayB0byB0aGUgcmVsaWFibGUgZWxlbS5zdHlsZQorICAg
ICAgICB2YWx1ZUlzQm9yZGVyQm94ID0gaXNCb3JkZXJCb3ggJiYKKyAgICAgICAgICAgICggc3Vw
cG9ydC5ib3hTaXppbmdSZWxpYWJsZSgpIHx8IHZhbCA9PT0gZWxlbS5zdHlsZVsgbmFtZSBdICk7
CisKKyAgICAgICAgLy8gTm9ybWFsaXplICIiLCBhdXRvLCBhbmQgcHJlcGFyZSBmb3IgZXh0cmEK
KyAgICAgICAgdmFsID0gcGFyc2VGbG9hdCggdmFsICkgfHwgMDsKKyAgICB9CisKKyAgICAvLyBV
c2UgdGhlIGFjdGl2ZSBib3gtc2l6aW5nIG1vZGVsIHRvIGFkZC9zdWJ0cmFjdCBpcnJlbGV2YW50
IHN0eWxlcworICAgIHJldHVybiAoIHZhbCArCisgICAgICAgIGF1Z21lbnRXaWR0aE9ySGVpZ2h0
KAorICAgICAgICAgICAgZWxlbSwKKyAgICAgICAgICAgIG5hbWUsCisgICAgICAgICAgICBleHRy
YSB8fCAoIGlzQm9yZGVyQm94ID8gImJvcmRlciIgOiAiY29udGVudCIgKSwKKyAgICAgICAgICAg
IHZhbHVlSXNCb3JkZXJCb3gsCisgICAgICAgICAgICBzdHlsZXMKKyAgICAgICAgKQorICAgICkg
KyAicHgiOworfQorCitqUXVlcnkuZXh0ZW5kKCB7CisKKyAgICAvLyBBZGQgaW4gc3R5bGUgcHJv
cGVydHkgaG9va3MgZm9yIG92ZXJyaWRpbmcgdGhlIGRlZmF1bHQKKyAgICAvLyBiZWhhdmlvciBv
ZiBnZXR0aW5nIGFuZCBzZXR0aW5nIGEgc3R5bGUgcHJvcGVydHkKKyAgICBjc3NIb29rczogewor
ICAgICAgICBvcGFjaXR5OiB7CisgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCBlbGVtLCBjb21w
dXRlZCApIHsKKyAgICAgICAgICAgICAgICBpZiAoIGNvbXB1dGVkICkgeworCisgICAgICAgICAg
ICAgICAgICAgIC8vIFdlIHNob3VsZCBhbHdheXMgZ2V0IGEgbnVtYmVyIGJhY2sgZnJvbSBvcGFj
aXR5CisgICAgICAgICAgICAgICAgICAgIHZhciByZXQgPSBjdXJDU1MoIGVsZW0sICJvcGFjaXR5
IiApOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0ID09PSAiIiA/ICIxIiA6IHJldDsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9LAorCisg
ICAgLy8gRG9uJ3QgYXV0b21hdGljYWxseSBhZGQgInB4IiB0byB0aGVzZSBwb3NzaWJseS11bml0
bGVzcyBwcm9wZXJ0aWVzCisgICAgY3NzTnVtYmVyOiB7CisgICAgICAgICJhbmltYXRpb25JdGVy
YXRpb25Db3VudCI6IHRydWUsCisgICAgICAgICJjb2x1bW5Db3VudCI6IHRydWUsCisgICAgICAg
ICJmaWxsT3BhY2l0eSI6IHRydWUsCisgICAgICAgICJmbGV4R3JvdyI6IHRydWUsCisgICAgICAg
ICJmbGV4U2hyaW5rIjogdHJ1ZSwKKyAgICAgICAgImZvbnRXZWlnaHQiOiB0cnVlLAorICAgICAg
ICAibGluZUhlaWdodCI6IHRydWUsCisgICAgICAgICJvcGFjaXR5IjogdHJ1ZSwKKyAgICAgICAg
Im9yZGVyIjogdHJ1ZSwKKyAgICAgICAgIm9ycGhhbnMiOiB0cnVlLAorICAgICAgICAid2lkb3dz
IjogdHJ1ZSwKKyAgICAgICAgInpJbmRleCI6IHRydWUsCisgICAgICAgICJ6b29tIjogdHJ1ZQor
ICAgIH0sCisKKyAgICAvLyBBZGQgaW4gcHJvcGVydGllcyB3aG9zZSBuYW1lcyB5b3Ugd2lzaCB0
byBmaXggYmVmb3JlCisgICAgLy8gc2V0dGluZyBvciBnZXR0aW5nIHRoZSB2YWx1ZQorICAgIGNz
c1Byb3BzOiB7CisgICAgICAgICJmbG9hdCI6ICJjc3NGbG9hdCIKKyAgICB9LAorCisgICAgLy8g
R2V0IGFuZCBzZXQgdGhlIHN0eWxlIHByb3BlcnR5IG9uIGEgRE9NIE5vZGUKKyAgICBzdHlsZTog
ZnVuY3Rpb24oIGVsZW0sIG5hbWUsIHZhbHVlLCBleHRyYSApIHsKKworICAgICAgICAvLyBEb24n
dCBzZXQgc3R5bGVzIG9uIHRleHQgYW5kIGNvbW1lbnQgbm9kZXMKKyAgICAgICAgaWYgKCAhZWxl
bSB8fCBlbGVtLm5vZGVUeXBlID09PSAzIHx8IGVsZW0ubm9kZVR5cGUgPT09IDggfHwgIWVsZW0u
c3R5bGUgKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBN
YWtlIHN1cmUgdGhhdCB3ZSdyZSB3b3JraW5nIHdpdGggdGhlIHJpZ2h0IG5hbWUKKyAgICAgICAg
dmFyIHJldCwgdHlwZSwgaG9va3MsCisgICAgICAgICAgICBvcmlnTmFtZSA9IGpRdWVyeS5jYW1l
bENhc2UoIG5hbWUgKSwKKyAgICAgICAgICAgIHN0eWxlID0gZWxlbS5zdHlsZTsKKworICAgICAg
ICBuYW1lID0galF1ZXJ5LmNzc1Byb3BzWyBvcmlnTmFtZSBdIHx8CisgICAgICAgICAgICAoIGpR
dWVyeS5jc3NQcm9wc1sgb3JpZ05hbWUgXSA9IHZlbmRvclByb3BOYW1lKCBvcmlnTmFtZSApIHx8
IG9yaWdOYW1lICk7CisKKyAgICAgICAgLy8gR2V0cyBob29rIGZvciB0aGUgcHJlZml4ZWQgdmVy
c2lvbiwgdGhlbiB1bnByZWZpeGVkIHZlcnNpb24KKyAgICAgICAgaG9va3MgPSBqUXVlcnkuY3Nz
SG9va3NbIG5hbWUgXSB8fCBqUXVlcnkuY3NzSG9va3NbIG9yaWdOYW1lIF07CisKKyAgICAgICAg
Ly8gQ2hlY2sgaWYgd2UncmUgc2V0dGluZyBhIHZhbHVlCisgICAgICAgIGlmICggdmFsdWUgIT09
IHVuZGVmaW5lZCApIHsKKyAgICAgICAgICAgIHR5cGUgPSB0eXBlb2YgdmFsdWU7CisKKyAgICAg
ICAgICAgIC8vIENvbnZlcnQgIis9IiBvciAiLT0iIHRvIHJlbGF0aXZlIG51bWJlcnMgKCM3MzQ1
KQorICAgICAgICAgICAgaWYgKCB0eXBlID09PSAic3RyaW5nIiAmJiAoIHJldCA9IHJjc3NOdW0u
ZXhlYyggdmFsdWUgKSApICYmIHJldFsgMSBdICkgeworICAgICAgICAgICAgICAgIHZhbHVlID0g
YWRqdXN0Q1NTKCBlbGVtLCBuYW1lLCByZXQgKTsKKworICAgICAgICAgICAgICAgIC8vIEZpeGVz
IGJ1ZyAjOTIzNworICAgICAgICAgICAgICAgIHR5cGUgPSAibnVtYmVyIjsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgbnVsbCBhbmQgTmFOIHZhbHVlcyBh
cmVuJ3Qgc2V0ICgjNzExNikKKyAgICAgICAgICAgIGlmICggdmFsdWUgPT0gbnVsbCB8fCB2YWx1
ZSAhPT0gdmFsdWUgKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAvLyBJZiBhIG51bWJlciB3YXMgcGFzc2VkIGluLCBhZGQgdGhlIHVuaXQg
KGV4Y2VwdCBmb3IgY2VydGFpbiBDU1MgcHJvcGVydGllcykKKyAgICAgICAgICAgIGlmICggdHlw
ZSA9PT0gIm51bWJlciIgKSB7CisgICAgICAgICAgICAgICAgdmFsdWUgKz0gcmV0ICYmIHJldFsg
MyBdIHx8ICggalF1ZXJ5LmNzc051bWJlclsgb3JpZ05hbWUgXSA/ICIiIDogInB4IiApOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBiYWNrZ3JvdW5kLSogcHJvcHMgYWZmZWN0IG9y
aWdpbmFsIGNsb25lJ3MgdmFsdWVzCisgICAgICAgICAgICBpZiAoICFzdXBwb3J0LmNsZWFyQ2xv
bmVTdHlsZSAmJiB2YWx1ZSA9PT0gIiIgJiYgbmFtZS5pbmRleE9mKCAiYmFja2dyb3VuZCIgKSA9
PT0gMCApIHsKKyAgICAgICAgICAgICAgICBzdHlsZVsgbmFtZSBdID0gImluaGVyaXQiOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBJZiBhIGhvb2sgd2FzIHByb3ZpZGVkLCB1c2Ug
dGhhdCB2YWx1ZSwgb3RoZXJ3aXNlIGp1c3Qgc2V0IHRoZSBzcGVjaWZpZWQgdmFsdWUKKyAgICAg
ICAgICAgIGlmICggIWhvb2tzIHx8ICEoICJzZXQiIGluIGhvb2tzICkgfHwKKyAgICAgICAgICAg
ICAgICAoIHZhbHVlID0gaG9va3Muc2V0KCBlbGVtLCB2YWx1ZSwgZXh0cmEgKSApICE9PSB1bmRl
ZmluZWQgKSB7CisKKyAgICAgICAgICAgICAgICBzdHlsZVsgbmFtZSBdID0gdmFsdWU7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgfSBlbHNlIHsKKworICAgICAgICAgICAgLy8gSWYgYSBob29r
IHdhcyBwcm92aWRlZCBnZXQgdGhlIG5vbi1jb21wdXRlZCB2YWx1ZSBmcm9tIHRoZXJlCisgICAg
ICAgICAgICBpZiAoIGhvb2tzICYmICJnZXQiIGluIGhvb2tzICYmCisgICAgICAgICAgICAgICAg
KCByZXQgPSBob29rcy5nZXQoIGVsZW0sIGZhbHNlLCBleHRyYSApICkgIT09IHVuZGVmaW5lZCAp
IHsKKworICAgICAgICAgICAgICAgIHJldHVybiByZXQ7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIC8vIE90aGVyd2lzZSBqdXN0IGdldCB0aGUgdmFsdWUgZnJvbSB0aGUgc3R5bGUgb2Jq
ZWN0CisgICAgICAgICAgICByZXR1cm4gc3R5bGVbIG5hbWUgXTsKKyAgICAgICAgfQorICAgIH0s
CisKKyAgICBjc3M6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBleHRyYSwgc3R5bGVzICkgeworICAg
ICAgICB2YXIgdmFsLCBudW0sIGhvb2tzLAorICAgICAgICAgICAgb3JpZ05hbWUgPSBqUXVlcnku
Y2FtZWxDYXNlKCBuYW1lICk7CisKKyAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgd2UncmUgd29y
a2luZyB3aXRoIHRoZSByaWdodCBuYW1lCisgICAgICAgIG5hbWUgPSBqUXVlcnkuY3NzUHJvcHNb
IG9yaWdOYW1lIF0gfHwKKyAgICAgICAgICAgICggalF1ZXJ5LmNzc1Byb3BzWyBvcmlnTmFtZSBd
ID0gdmVuZG9yUHJvcE5hbWUoIG9yaWdOYW1lICkgfHwgb3JpZ05hbWUgKTsKKworICAgICAgICAv
LyBUcnkgcHJlZml4ZWQgbmFtZSBmb2xsb3dlZCBieSB0aGUgdW5wcmVmaXhlZCBuYW1lCisgICAg
ICAgIGhvb2tzID0galF1ZXJ5LmNzc0hvb2tzWyBuYW1lIF0gfHwgalF1ZXJ5LmNzc0hvb2tzWyBv
cmlnTmFtZSBdOworCisgICAgICAgIC8vIElmIGEgaG9vayB3YXMgcHJvdmlkZWQgZ2V0IHRoZSBj
b21wdXRlZCB2YWx1ZSBmcm9tIHRoZXJlCisgICAgICAgIGlmICggaG9va3MgJiYgImdldCIgaW4g
aG9va3MgKSB7CisgICAgICAgICAgICB2YWwgPSBob29rcy5nZXQoIGVsZW0sIHRydWUsIGV4dHJh
ICk7CisgICAgICAgIH0KKworICAgICAgICAvLyBPdGhlcndpc2UsIGlmIGEgd2F5IHRvIGdldCB0
aGUgY29tcHV0ZWQgdmFsdWUgZXhpc3RzLCB1c2UgdGhhdAorICAgICAgICBpZiAoIHZhbCA9PT0g
dW5kZWZpbmVkICkgeworICAgICAgICAgICAgdmFsID0gY3VyQ1NTKCBlbGVtLCBuYW1lLCBzdHls
ZXMgKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIENvbnZlcnQgIm5vcm1hbCIgdG8gY29tcHV0
ZWQgdmFsdWUKKyAgICAgICAgaWYgKCB2YWwgPT09ICJub3JtYWwiICYmIG5hbWUgaW4gY3NzTm9y
bWFsVHJhbnNmb3JtICkgeworICAgICAgICAgICAgdmFsID0gY3NzTm9ybWFsVHJhbnNmb3JtWyBu
YW1lIF07CisgICAgICAgIH0KKworICAgICAgICAvLyBNYWtlIG51bWVyaWMgaWYgZm9yY2VkIG9y
IGEgcXVhbGlmaWVyIHdhcyBwcm92aWRlZCBhbmQgdmFsIGxvb2tzIG51bWVyaWMKKyAgICAgICAg
aWYgKCBleHRyYSA9PT0gIiIgfHwgZXh0cmEgKSB7CisgICAgICAgICAgICBudW0gPSBwYXJzZUZs
b2F0KCB2YWwgKTsKKyAgICAgICAgICAgIHJldHVybiBleHRyYSA9PT0gdHJ1ZSB8fCBpc0Zpbml0
ZSggbnVtICkgPyBudW0gfHwgMCA6IHZhbDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdmFs
OworICAgIH0KK30gKTsKKworalF1ZXJ5LmVhY2goIFsgImhlaWdodCIsICJ3aWR0aCIgXSwgZnVu
Y3Rpb24oIGksIG5hbWUgKSB7CisgICAgalF1ZXJ5LmNzc0hvb2tzWyBuYW1lIF0gPSB7CisgICAg
ICAgIGdldDogZnVuY3Rpb24oIGVsZW0sIGNvbXB1dGVkLCBleHRyYSApIHsKKyAgICAgICAgICAg
IGlmICggY29tcHV0ZWQgKSB7CisKKyAgICAgICAgICAgICAgICAvLyBDZXJ0YWluIGVsZW1lbnRz
IGNhbiBoYXZlIGRpbWVuc2lvbiBpbmZvIGlmIHdlIGludmlzaWJseSBzaG93IHRoZW0KKyAgICAg
ICAgICAgICAgICAvLyBidXQgaXQgbXVzdCBoYXZlIGEgY3VycmVudCBkaXNwbGF5IHN0eWxlIHRo
YXQgd291bGQgYmVuZWZpdAorICAgICAgICAgICAgICAgIHJldHVybiByZGlzcGxheXN3YXAudGVz
dCggalF1ZXJ5LmNzcyggZWxlbSwgImRpc3BsYXkiICkgKSAmJgorCisgICAgICAgICAgICAgICAg
ICAgIC8vIFN1cHBvcnQ6IFNhZmFyaSA4KworICAgICAgICAgICAgICAgICAgICAvLyBUYWJsZSBj
b2x1bW5zIGluIFNhZmFyaSBoYXZlIG5vbi16ZXJvIG9mZnNldFdpZHRoICYgemVybworICAgICAg
ICAgICAgICAgICAgICAvLyBnZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCB1bmxlc3MgZGlz
cGxheSBpcyBjaGFuZ2VkLgorICAgICAgICAgICAgICAgICAgICAvLyBTdXBwb3J0OiBJRSA8PTEx
IG9ubHkKKyAgICAgICAgICAgICAgICAgICAgLy8gUnVubmluZyBnZXRCb3VuZGluZ0NsaWVudFJl
Y3Qgb24gYSBkaXNjb25uZWN0ZWQgbm9kZQorICAgICAgICAgICAgICAgICAgICAvLyBpbiBJRSB0
aHJvd3MgYW4gZXJyb3IuCisgICAgICAgICAgICAgICAgICAgICggIWVsZW0uZ2V0Q2xpZW50UmVj
dHMoKS5sZW5ndGggfHwgIWVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggKSA/Cisg
ICAgICAgICAgICAgICAgICAgICAgICBzd2FwKCBlbGVtLCBjc3NTaG93LCBmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0V2lkdGhPckhlaWdodCggZWxl
bSwgbmFtZSwgZXh0cmEgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gKSA6CisgICAgICAg
ICAgICAgICAgICAgICAgICBnZXRXaWR0aE9ySGVpZ2h0KCBlbGVtLCBuYW1lLCBleHRyYSApOwor
ICAgICAgICAgICAgfQorICAgICAgICB9LAorCisgICAgICAgIHNldDogZnVuY3Rpb24oIGVsZW0s
IHZhbHVlLCBleHRyYSApIHsKKyAgICAgICAgICAgIHZhciBtYXRjaGVzLAorICAgICAgICAgICAg
ICAgIHN0eWxlcyA9IGV4dHJhICYmIGdldFN0eWxlcyggZWxlbSApLAorICAgICAgICAgICAgICAg
IHN1YnRyYWN0ID0gZXh0cmEgJiYgYXVnbWVudFdpZHRoT3JIZWlnaHQoCisgICAgICAgICAgICAg
ICAgICAgIGVsZW0sCisgICAgICAgICAgICAgICAgICAgIG5hbWUsCisgICAgICAgICAgICAgICAg
ICAgIGV4dHJhLAorICAgICAgICAgICAgICAgICAgICBqUXVlcnkuY3NzKCBlbGVtLCAiYm94U2l6
aW5nIiwgZmFsc2UsIHN0eWxlcyApID09PSAiYm9yZGVyLWJveCIsCisgICAgICAgICAgICAgICAg
ICAgIHN0eWxlcworICAgICAgICAgICAgICAgICk7CisKKyAgICAgICAgICAgIC8vIENvbnZlcnQg
dG8gcGl4ZWxzIGlmIHZhbHVlIGFkanVzdG1lbnQgaXMgbmVlZGVkCisgICAgICAgICAgICBpZiAo
IHN1YnRyYWN0ICYmICggbWF0Y2hlcyA9IHJjc3NOdW0uZXhlYyggdmFsdWUgKSApICYmCisgICAg
ICAgICAgICAgICAgKCBtYXRjaGVzWyAzIF0gfHwgInB4IiApICE9PSAicHgiICkgeworCisgICAg
ICAgICAgICAgICAgZWxlbS5zdHlsZVsgbmFtZSBdID0gdmFsdWU7CisgICAgICAgICAgICAgICAg
dmFsdWUgPSBqUXVlcnkuY3NzKCBlbGVtLCBuYW1lICk7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHJldHVybiBzZXRQb3NpdGl2ZU51bWJlciggZWxlbSwgdmFsdWUsIHN1YnRyYWN0ICk7
CisgICAgICAgIH0KKyAgICB9OworfSApOworCitqUXVlcnkuY3NzSG9va3MubWFyZ2luTGVmdCA9
IGFkZEdldEhvb2tJZiggc3VwcG9ydC5yZWxpYWJsZU1hcmdpbkxlZnQsCisgICAgZnVuY3Rpb24o
IGVsZW0sIGNvbXB1dGVkICkgeworICAgICAgICBpZiAoIGNvbXB1dGVkICkgeworICAgICAgICAg
ICAgcmV0dXJuICggcGFyc2VGbG9hdCggY3VyQ1NTKCBlbGVtLCAibWFyZ2luTGVmdCIgKSApIHx8
CisgICAgICAgICAgICAgICAgZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0IC0KKyAg
ICAgICAgICAgICAgICAgICAgc3dhcCggZWxlbSwgeyBtYXJnaW5MZWZ0OiAwIH0sIGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW0uZ2V0Qm91bmRpbmdDbGll
bnRSZWN0KCkubGVmdDsKKyAgICAgICAgICAgICAgICAgICAgfSApCisgICAgICAgICAgICAgICAg
KSArICJweCI7CisgICAgICAgIH0KKyAgICB9CispOworCisvLyBUaGVzZSBob29rcyBhcmUgdXNl
ZCBieSBhbmltYXRlIHRvIGV4cGFuZCBwcm9wZXJ0aWVzCitqUXVlcnkuZWFjaCggeworICAgIG1h
cmdpbjogIiIsCisgICAgcGFkZGluZzogIiIsCisgICAgYm9yZGVyOiAiV2lkdGgiCit9LCBmdW5j
dGlvbiggcHJlZml4LCBzdWZmaXggKSB7CisgICAgalF1ZXJ5LmNzc0hvb2tzWyBwcmVmaXggKyBz
dWZmaXggXSA9IHsKKyAgICAgICAgZXhwYW5kOiBmdW5jdGlvbiggdmFsdWUgKSB7CisgICAgICAg
ICAgICB2YXIgaSA9IDAsCisgICAgICAgICAgICAgICAgZXhwYW5kZWQgPSB7fSwKKworICAgICAg
ICAgICAgICAgIC8vIEFzc3VtZXMgYSBzaW5nbGUgbnVtYmVyIGlmIG5vdCBhIHN0cmluZworICAg
ICAgICAgICAgICAgIHBhcnRzID0gdHlwZW9mIHZhbHVlID09PSAic3RyaW5nIiA/IHZhbHVlLnNw
bGl0KCAiICIgKSA6IFsgdmFsdWUgXTsKKworICAgICAgICAgICAgZm9yICggOyBpIDwgNDsgaSsr
ICkgeworICAgICAgICAgICAgICAgIGV4cGFuZGVkWyBwcmVmaXggKyBjc3NFeHBhbmRbIGkgXSAr
IHN1ZmZpeCBdID0KKyAgICAgICAgICAgICAgICAgICAgcGFydHNbIGkgXSB8fCBwYXJ0c1sgaSAt
IDIgXSB8fCBwYXJ0c1sgMCBdOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4g
ZXhwYW5kZWQ7CisgICAgICAgIH0KKyAgICB9OworCisgICAgaWYgKCAhcm1hcmdpbi50ZXN0KCBw
cmVmaXggKSApIHsKKyAgICAgICAgalF1ZXJ5LmNzc0hvb2tzWyBwcmVmaXggKyBzdWZmaXggXS5z
ZXQgPSBzZXRQb3NpdGl2ZU51bWJlcjsKKyAgICB9Cit9ICk7CisKK2pRdWVyeS5mbi5leHRlbmQo
IHsKKyAgICBjc3M6IGZ1bmN0aW9uKCBuYW1lLCB2YWx1ZSApIHsKKyAgICAgICAgcmV0dXJuIGFj
Y2VzcyggdGhpcywgZnVuY3Rpb24oIGVsZW0sIG5hbWUsIHZhbHVlICkgeworICAgICAgICAgICAg
dmFyIHN0eWxlcywgbGVuLAorICAgICAgICAgICAgICAgIG1hcCA9IHt9LAorICAgICAgICAgICAg
ICAgIGkgPSAwOworCisgICAgICAgICAgICBpZiAoIGpRdWVyeS5pc0FycmF5KCBuYW1lICkgKSB7
CisgICAgICAgICAgICAgICAgc3R5bGVzID0gZ2V0U3R5bGVzKCBlbGVtICk7CisgICAgICAgICAg
ICAgICAgbGVuID0gbmFtZS5sZW5ndGg7CisKKyAgICAgICAgICAgICAgICBmb3IgKCA7IGkgPCBs
ZW47IGkrKyApIHsKKyAgICAgICAgICAgICAgICAgICAgbWFwWyBuYW1lWyBpIF0gXSA9IGpRdWVy
eS5jc3MoIGVsZW0sIG5hbWVbIGkgXSwgZmFsc2UsIHN0eWxlcyApOworICAgICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgICAgIHJldHVybiBtYXA7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHJldHVybiB2YWx1ZSAhPT0gdW5kZWZpbmVkID8KKyAgICAgICAgICAgICAgICBqUXVl
cnkuc3R5bGUoIGVsZW0sIG5hbWUsIHZhbHVlICkgOgorICAgICAgICAgICAgICAgIGpRdWVyeS5j
c3MoIGVsZW0sIG5hbWUgKTsKKyAgICAgICAgfSwgbmFtZSwgdmFsdWUsIGFyZ3VtZW50cy5sZW5n
dGggPiAxICk7CisgICAgfQorfSApOworCityZXR1cm4galF1ZXJ5OworfSApOwpkaWZmIC0tZ2l0
IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvY3NzL2FkZEdl
dEhvb2tJZi5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3Jj
L2Nzcy9hZGRHZXRIb29rSWYuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODM1MmVlMTM3NTJmOGRjMzY0ODQ5M2Fl
NWUzNWNmN2ZlYmNlMWRmMQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25l
L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2Nzcy9hZGRHZXRIb29rSWYuanMKQEAgLTAsMCArMSwy
NiBAQAorZGVmaW5lKCBmdW5jdGlvbigpIHsKKworInVzZSBzdHJpY3QiOworCitmdW5jdGlvbiBh
ZGRHZXRIb29rSWYoIGNvbmRpdGlvbkZuLCBob29rRm4gKSB7CisKKyAgICAvLyBEZWZpbmUgdGhl
IGhvb2ssIHdlJ2xsIGNoZWNrIG9uIHRoZSBmaXJzdCBydW4gaWYgaXQncyByZWFsbHkgbmVlZGVk
LgorICAgIHJldHVybiB7CisgICAgICAgIGdldDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBp
ZiAoIGNvbmRpdGlvbkZuKCkgKSB7CisKKyAgICAgICAgICAgICAgICAvLyBIb29rIG5vdCBuZWVk
ZWQgKG9yIGl0J3Mgbm90IHBvc3NpYmxlIHRvIHVzZSBpdCBkdWUKKyAgICAgICAgICAgICAgICAv
LyB0byBtaXNzaW5nIGRlcGVuZGVuY3kpLCByZW1vdmUgaXQuCisgICAgICAgICAgICAgICAgZGVs
ZXRlIHRoaXMuZ2V0OworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgLy8gSG9vayBuZWVkZWQ7IHJlZGVmaW5lIGl0IHNvIHRoYXQgdGhlIHN1cHBv
cnQgdGVzdCBpcyBub3QgZXhlY3V0ZWQgYWdhaW4uCisgICAgICAgICAgICByZXR1cm4gKCB0aGlz
LmdldCA9IGhvb2tGbiApLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKTsKKyAgICAgICAgfQorICAg
IH07Cit9CisKK3JldHVybiBhZGRHZXRIb29rSWY7CisKK30gKTsKZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2Nzcy9hZGp1c3RDU1MuanMg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9jc3MvYWRqdXN0
Q1NTLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjEwZjlkODFlOGM3MDM5MWI3MGU4NzE5MzBmY2MyMTQ3OTQ2NDY3
NDYKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMv
anF1ZXJ5L3NyYy9jc3MvYWRqdXN0Q1NTLmpzCkBAIC0wLDAgKzEsNzEgQEAKK2RlZmluZSggWwor
ICAgICIuLi9jb3JlIiwKKyAgICAiLi4vdmFyL3Jjc3NOdW0iCitdLCBmdW5jdGlvbiggalF1ZXJ5
LCByY3NzTnVtICkgeworCisidXNlIHN0cmljdCI7CisKK2Z1bmN0aW9uIGFkanVzdENTUyggZWxl
bSwgcHJvcCwgdmFsdWVQYXJ0cywgdHdlZW4gKSB7CisgICAgdmFyIGFkanVzdGVkLAorICAgICAg
ICBzY2FsZSA9IDEsCisgICAgICAgIG1heEl0ZXJhdGlvbnMgPSAyMCwKKyAgICAgICAgY3VycmVu
dFZhbHVlID0gdHdlZW4gPworICAgICAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHR3ZWVuLmN1cigpOworICAgICAgICAgICAgfSA6CisgICAgICAgICAgICBmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4galF1ZXJ5LmNzcyggZWxlbSwgcHJvcCwg
IiIgKTsKKyAgICAgICAgICAgIH0sCisgICAgICAgIGluaXRpYWwgPSBjdXJyZW50VmFsdWUoKSwK
KyAgICAgICAgdW5pdCA9IHZhbHVlUGFydHMgJiYgdmFsdWVQYXJ0c1sgMyBdIHx8ICggalF1ZXJ5
LmNzc051bWJlclsgcHJvcCBdID8gIiIgOiAicHgiICksCisKKyAgICAgICAgLy8gU3RhcnRpbmcg
dmFsdWUgY29tcHV0YXRpb24gaXMgcmVxdWlyZWQgZm9yIHBvdGVudGlhbCB1bml0IG1pc21hdGNo
ZXMKKyAgICAgICAgaW5pdGlhbEluVW5pdCA9ICggalF1ZXJ5LmNzc051bWJlclsgcHJvcCBdIHx8
IHVuaXQgIT09ICJweCIgJiYgK2luaXRpYWwgKSAmJgorICAgICAgICAgICAgcmNzc051bS5leGVj
KCBqUXVlcnkuY3NzKCBlbGVtLCBwcm9wICkgKTsKKworICAgIGlmICggaW5pdGlhbEluVW5pdCAm
JiBpbml0aWFsSW5Vbml0WyAzIF0gIT09IHVuaXQgKSB7CisKKyAgICAgICAgLy8gVHJ1c3QgdW5p
dHMgcmVwb3J0ZWQgYnkgalF1ZXJ5LmNzcworICAgICAgICB1bml0ID0gdW5pdCB8fCBpbml0aWFs
SW5Vbml0WyAzIF07CisKKyAgICAgICAgLy8gTWFrZSBzdXJlIHdlIHVwZGF0ZSB0aGUgdHdlZW4g
cHJvcGVydGllcyBsYXRlciBvbgorICAgICAgICB2YWx1ZVBhcnRzID0gdmFsdWVQYXJ0cyB8fCBb
XTsKKworICAgICAgICAvLyBJdGVyYXRpdmVseSBhcHByb3hpbWF0ZSBmcm9tIGEgbm9uemVybyBz
dGFydGluZyBwb2ludAorICAgICAgICBpbml0aWFsSW5Vbml0ID0gK2luaXRpYWwgfHwgMTsKKwor
ICAgICAgICBkbyB7CisKKyAgICAgICAgICAgIC8vIElmIHByZXZpb3VzIGl0ZXJhdGlvbiB6ZXJv
ZWQgb3V0LCBkb3VibGUgdW50aWwgd2UgZ2V0ICpzb21ldGhpbmcqLgorICAgICAgICAgICAgLy8g
VXNlIHN0cmluZyBmb3IgZG91Ymxpbmcgc28gd2UgZG9uJ3QgYWNjaWRlbnRhbGx5IHNlZSBzY2Fs
ZSBhcyB1bmNoYW5nZWQgYmVsb3cKKyAgICAgICAgICAgIHNjYWxlID0gc2NhbGUgfHwgIi41IjsK
KworICAgICAgICAgICAgLy8gQWRqdXN0IGFuZCBhcHBseQorICAgICAgICAgICAgaW5pdGlhbElu
VW5pdCA9IGluaXRpYWxJblVuaXQgLyBzY2FsZTsKKyAgICAgICAgICAgIGpRdWVyeS5zdHlsZSgg
ZWxlbSwgcHJvcCwgaW5pdGlhbEluVW5pdCArIHVuaXQgKTsKKworICAgICAgICAvLyBVcGRhdGUg
c2NhbGUsIHRvbGVyYXRpbmcgemVybyBvciBOYU4gZnJvbSB0d2Vlbi5jdXIoKQorICAgICAgICAv
LyBCcmVhayB0aGUgbG9vcCBpZiBzY2FsZSBpcyB1bmNoYW5nZWQgb3IgcGVyZmVjdCwgb3IgaWYg
d2UndmUganVzdCBoYWQgZW5vdWdoLgorICAgICAgICB9IHdoaWxlICgKKyAgICAgICAgICAgIHNj
YWxlICE9PSAoIHNjYWxlID0gY3VycmVudFZhbHVlKCkgLyBpbml0aWFsICkgJiYgc2NhbGUgIT09
IDEgJiYgLS1tYXhJdGVyYXRpb25zCisgICAgICAgICk7CisgICAgfQorCisgICAgaWYgKCB2YWx1
ZVBhcnRzICkgeworICAgICAgICBpbml0aWFsSW5Vbml0ID0gK2luaXRpYWxJblVuaXQgfHwgK2lu
aXRpYWwgfHwgMDsKKworICAgICAgICAvLyBBcHBseSByZWxhdGl2ZSBvZmZzZXQgKCs9Ly09KSBp
ZiBzcGVjaWZpZWQKKyAgICAgICAgYWRqdXN0ZWQgPSB2YWx1ZVBhcnRzWyAxIF0gPworICAgICAg
ICAgICAgaW5pdGlhbEluVW5pdCArICggdmFsdWVQYXJ0c1sgMSBdICsgMSApICogdmFsdWVQYXJ0
c1sgMiBdIDoKKyAgICAgICAgICAgICt2YWx1ZVBhcnRzWyAyIF07CisgICAgICAgIGlmICggdHdl
ZW4gKSB7CisgICAgICAgICAgICB0d2Vlbi51bml0ID0gdW5pdDsKKyAgICAgICAgICAgIHR3ZWVu
LnN0YXJ0ID0gaW5pdGlhbEluVW5pdDsKKyAgICAgICAgICAgIHR3ZWVuLmVuZCA9IGFkanVzdGVk
OworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBhZGp1c3RlZDsKK30KKworcmV0dXJuIGFk
anVzdENTUzsKK30gKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9k
dWxlcy9qcXVlcnkvc3JjL2Nzcy9jdXJDU1MuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2Rl
X21vZHVsZXMvanF1ZXJ5L3NyYy9jc3MvY3VyQ1NTLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3MzliN2ViOTE3
MmUwNjI2OTljODc4MjY5MjgzZmE3MzI0N2NiMDgKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9jc3MvY3VyQ1NTLmpzCkBAIC0w
LDAgKzEsNTkgQEAKK2RlZmluZSggWworICAgICIuLi9jb3JlIiwKKyAgICAiLi92YXIvcm51bW5v
bnB4IiwKKyAgICAiLi92YXIvcm1hcmdpbiIsCisgICAgIi4vdmFyL2dldFN0eWxlcyIsCisgICAg
Ii4vc3VwcG9ydCIsCisgICAgIi4uL3NlbGVjdG9yIiAvLyBHZXQgalF1ZXJ5LmNvbnRhaW5zCitd
LCBmdW5jdGlvbiggalF1ZXJ5LCBybnVtbm9ucHgsIHJtYXJnaW4sIGdldFN0eWxlcywgc3VwcG9y
dCApIHsKKworInVzZSBzdHJpY3QiOworCitmdW5jdGlvbiBjdXJDU1MoIGVsZW0sIG5hbWUsIGNv
bXB1dGVkICkgeworICAgIHZhciB3aWR0aCwgbWluV2lkdGgsIG1heFdpZHRoLCByZXQsCisgICAg
ICAgIHN0eWxlID0gZWxlbS5zdHlsZTsKKworICAgIGNvbXB1dGVkID0gY29tcHV0ZWQgfHwgZ2V0
U3R5bGVzKCBlbGVtICk7CisKKyAgICAvLyBTdXBwb3J0OiBJRSA8PTkgb25seQorICAgIC8vIGdl
dFByb3BlcnR5VmFsdWUgaXMgb25seSBuZWVkZWQgZm9yIC5jc3MoJ2ZpbHRlcicpICgjMTI1Mzcp
CisgICAgaWYgKCBjb21wdXRlZCApIHsKKyAgICAgICAgcmV0ID0gY29tcHV0ZWQuZ2V0UHJvcGVy
dHlWYWx1ZSggbmFtZSApIHx8IGNvbXB1dGVkWyBuYW1lIF07CisKKyAgICAgICAgaWYgKCByZXQg
PT09ICIiICYmICFqUXVlcnkuY29udGFpbnMoIGVsZW0ub3duZXJEb2N1bWVudCwgZWxlbSApICkg
eworICAgICAgICAgICAgcmV0ID0galF1ZXJ5LnN0eWxlKCBlbGVtLCBuYW1lICk7CisgICAgICAg
IH0KKworICAgICAgICAvLyBBIHRyaWJ1dGUgdG8gdGhlICJhd2Vzb21lIGhhY2sgYnkgRGVhbiBF
ZHdhcmRzIgorICAgICAgICAvLyBBbmRyb2lkIEJyb3dzZXIgcmV0dXJucyBwZXJjZW50YWdlIGZv
ciBzb21lIHZhbHVlcywKKyAgICAgICAgLy8gYnV0IHdpZHRoIHNlZW1zIHRvIGJlIHJlbGlhYmx5
IHBpeGVscy4KKyAgICAgICAgLy8gVGhpcyBpcyBhZ2FpbnN0IHRoZSBDU1NPTSBkcmFmdCBzcGVj
OgorICAgICAgICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3Nzb20vI3Jlc29sdmVkLXZh
bHVlcworICAgICAgICBpZiAoICFzdXBwb3J0LnBpeGVsTWFyZ2luUmlnaHQoKSAmJiBybnVtbm9u
cHgudGVzdCggcmV0ICkgJiYgcm1hcmdpbi50ZXN0KCBuYW1lICkgKSB7CisKKyAgICAgICAgICAg
IC8vIFJlbWVtYmVyIHRoZSBvcmlnaW5hbCB2YWx1ZXMKKyAgICAgICAgICAgIHdpZHRoID0gc3R5
bGUud2lkdGg7CisgICAgICAgICAgICBtaW5XaWR0aCA9IHN0eWxlLm1pbldpZHRoOworICAgICAg
ICAgICAgbWF4V2lkdGggPSBzdHlsZS5tYXhXaWR0aDsKKworICAgICAgICAgICAgLy8gUHV0IGlu
IHRoZSBuZXcgdmFsdWVzIHRvIGdldCBhIGNvbXB1dGVkIHZhbHVlIG91dAorICAgICAgICAgICAg
c3R5bGUubWluV2lkdGggPSBzdHlsZS5tYXhXaWR0aCA9IHN0eWxlLndpZHRoID0gcmV0OworICAg
ICAgICAgICAgcmV0ID0gY29tcHV0ZWQud2lkdGg7CisKKyAgICAgICAgICAgIC8vIFJldmVydCB0
aGUgY2hhbmdlZCB2YWx1ZXMKKyAgICAgICAgICAgIHN0eWxlLndpZHRoID0gd2lkdGg7CisgICAg
ICAgICAgICBzdHlsZS5taW5XaWR0aCA9IG1pbldpZHRoOworICAgICAgICAgICAgc3R5bGUubWF4
V2lkdGggPSBtYXhXaWR0aDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiByZXQgIT09
IHVuZGVmaW5lZCA/CisKKyAgICAgICAgLy8gU3VwcG9ydDogSUUgPD05IC0gMTEgb25seQorICAg
ICAgICAvLyBJRSByZXR1cm5zIHpJbmRleCB2YWx1ZSBhcyBhbiBpbnRlZ2VyLgorICAgICAgICBy
ZXQgKyAiIiA6CisgICAgICAgIHJldDsKK30KKworcmV0dXJuIGN1ckNTUzsKK30gKTsKZGlmZiAt
LWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2Nzcy9o
aWRkZW5WaXNpYmxlU2VsZWN0b3JzLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1
bGVzL2pxdWVyeS9zcmMvY3NzL2hpZGRlblZpc2libGVTZWxlY3RvcnMuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YmVjZGQ1Mzk3Y2IxZGI4NDA2MTU3M2ZhYWI3ZTY4OTAyZjFkMWRkMwotLS0gL2Rldi9udWxsCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2Nzcy9oaWRk
ZW5WaXNpYmxlU2VsZWN0b3JzLmpzCkBAIC0wLDAgKzEsMTUgQEAKK2RlZmluZSggWworICAgICIu
Li9jb3JlIiwKKyAgICAiLi4vc2VsZWN0b3IiCitdLCBmdW5jdGlvbiggalF1ZXJ5ICkgeworCisi
dXNlIHN0cmljdCI7CisKK2pRdWVyeS5leHByLnBzZXVkb3MuaGlkZGVuID0gZnVuY3Rpb24oIGVs
ZW0gKSB7CisgICAgcmV0dXJuICFqUXVlcnkuZXhwci5wc2V1ZG9zLnZpc2libGUoIGVsZW0gKTsK
K307CitqUXVlcnkuZXhwci5wc2V1ZG9zLnZpc2libGUgPSBmdW5jdGlvbiggZWxlbSApIHsKKyAg
ICByZXR1cm4gISEoIGVsZW0ub2Zmc2V0V2lkdGggfHwgZWxlbS5vZmZzZXRIZWlnaHQgfHwgZWxl
bS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCApOworfTsKKworfSApOwpkaWZmIC0tZ2l0IGEvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvY3NzL3Nob3dIaWRlLmpz
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvY3NzL3Nob3dI
aWRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjczMWUwMjYwZGIxZjU2OTFkOGQzMGY2NzczMmE1ODUxZTE0YzAz
N2IKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMv
anF1ZXJ5L3NyYy9jc3Mvc2hvd0hpZGUuanMKQEAgLTAsMCArMSwxMDUgQEAKK2RlZmluZSggWwor
ICAgICIuLi9jb3JlIiwKKyAgICAiLi4vZGF0YS92YXIvZGF0YVByaXYiLAorICAgICIuLi9jc3Mv
dmFyL2lzSGlkZGVuV2l0aGluVHJlZSIKK10sIGZ1bmN0aW9uKCBqUXVlcnksIGRhdGFQcml2LCBp
c0hpZGRlbldpdGhpblRyZWUgKSB7CisKKyJ1c2Ugc3RyaWN0IjsKKwordmFyIGRlZmF1bHREaXNw
bGF5TWFwID0ge307CisKK2Z1bmN0aW9uIGdldERlZmF1bHREaXNwbGF5KCBlbGVtICkgeworICAg
IHZhciB0ZW1wLAorICAgICAgICBkb2MgPSBlbGVtLm93bmVyRG9jdW1lbnQsCisgICAgICAgIG5v
ZGVOYW1lID0gZWxlbS5ub2RlTmFtZSwKKyAgICAgICAgZGlzcGxheSA9IGRlZmF1bHREaXNwbGF5
TWFwWyBub2RlTmFtZSBdOworCisgICAgaWYgKCBkaXNwbGF5ICkgeworICAgICAgICByZXR1cm4g
ZGlzcGxheTsKKyAgICB9CisKKyAgICB0ZW1wID0gZG9jLmJvZHkuYXBwZW5kQ2hpbGQoIGRvYy5j
cmVhdGVFbGVtZW50KCBub2RlTmFtZSApICk7CisgICAgZGlzcGxheSA9IGpRdWVyeS5jc3MoIHRl
bXAsICJkaXNwbGF5IiApOworCisgICAgdGVtcC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKCB0ZW1w
ICk7CisKKyAgICBpZiAoIGRpc3BsYXkgPT09ICJub25lIiApIHsKKyAgICAgICAgZGlzcGxheSA9
ICJibG9jayI7CisgICAgfQorICAgIGRlZmF1bHREaXNwbGF5TWFwWyBub2RlTmFtZSBdID0gZGlz
cGxheTsKKworICAgIHJldHVybiBkaXNwbGF5OworfQorCitmdW5jdGlvbiBzaG93SGlkZSggZWxl
bWVudHMsIHNob3cgKSB7CisgICAgdmFyIGRpc3BsYXksIGVsZW0sCisgICAgICAgIHZhbHVlcyA9
IFtdLAorICAgICAgICBpbmRleCA9IDAsCisgICAgICAgIGxlbmd0aCA9IGVsZW1lbnRzLmxlbmd0
aDsKKworICAgIC8vIERldGVybWluZSBuZXcgZGlzcGxheSB2YWx1ZSBmb3IgZWxlbWVudHMgdGhh
dCBuZWVkIHRvIGNoYW5nZQorICAgIGZvciAoIDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7
CisgICAgICAgIGVsZW0gPSBlbGVtZW50c1sgaW5kZXggXTsKKyAgICAgICAgaWYgKCAhZWxlbS5z
dHlsZSApIHsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgZGlz
cGxheSA9IGVsZW0uc3R5bGUuZGlzcGxheTsKKyAgICAgICAgaWYgKCBzaG93ICkgeworCisgICAg
ICAgICAgICAvLyBTaW5jZSB3ZSBmb3JjZSB2aXNpYmlsaXR5IHVwb24gY2FzY2FkZS1oaWRkZW4g
ZWxlbWVudHMsIGFuIGltbWVkaWF0ZSAoYW5kIHNsb3cpCisgICAgICAgICAgICAvLyBjaGVjayBp
cyByZXF1aXJlZCBpbiB0aGlzIGZpcnN0IGxvb3AgdW5sZXNzIHdlIGhhdmUgYSBub25lbXB0eSBk
aXNwbGF5IHZhbHVlIChlaXRoZXIKKyAgICAgICAgICAgIC8vIGlubGluZSBvciBhYm91dC10by1i
ZS1yZXN0b3JlZCkKKyAgICAgICAgICAgIGlmICggZGlzcGxheSA9PT0gIm5vbmUiICkgeworICAg
ICAgICAgICAgICAgIHZhbHVlc1sgaW5kZXggXSA9IGRhdGFQcml2LmdldCggZWxlbSwgImRpc3Bs
YXkiICkgfHwgbnVsbDsKKyAgICAgICAgICAgICAgICBpZiAoICF2YWx1ZXNbIGluZGV4IF0gKSB7
CisgICAgICAgICAgICAgICAgICAgIGVsZW0uc3R5bGUuZGlzcGxheSA9ICIiOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICggZWxlbS5zdHlsZS5kaXNw
bGF5ID09PSAiIiAmJiBpc0hpZGRlbldpdGhpblRyZWUoIGVsZW0gKSApIHsKKyAgICAgICAgICAg
ICAgICB2YWx1ZXNbIGluZGV4IF0gPSBnZXREZWZhdWx0RGlzcGxheSggZWxlbSApOworICAgICAg
ICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKCBkaXNwbGF5ICE9PSAi
bm9uZSIgKSB7CisgICAgICAgICAgICAgICAgdmFsdWVzWyBpbmRleCBdID0gIm5vbmUiOworCisg
ICAgICAgICAgICAgICAgLy8gUmVtZW1iZXIgd2hhdCB3ZSdyZSBvdmVyd3JpdGluZworICAgICAg
ICAgICAgICAgIGRhdGFQcml2LnNldCggZWxlbSwgImRpc3BsYXkiLCBkaXNwbGF5ICk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBTZXQgdGhlIGRpc3BsYXkgb2Yg
dGhlIGVsZW1lbnRzIGluIGEgc2Vjb25kIGxvb3AgdG8gYXZvaWQgY29uc3RhbnQgcmVmbG93Cisg
ICAgZm9yICggaW5kZXggPSAwOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHsKKyAgICAgICAg
aWYgKCB2YWx1ZXNbIGluZGV4IF0gIT0gbnVsbCApIHsKKyAgICAgICAgICAgIGVsZW1lbnRzWyBp
bmRleCBdLnN0eWxlLmRpc3BsYXkgPSB2YWx1ZXNbIGluZGV4IF07CisgICAgICAgIH0KKyAgICB9
CisKKyAgICByZXR1cm4gZWxlbWVudHM7Cit9CisKK2pRdWVyeS5mbi5leHRlbmQoIHsKKyAgICBz
aG93OiBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHNob3dIaWRlKCB0aGlzLCB0cnVlICk7
CisgICAgfSwKKyAgICBoaWRlOiBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHNob3dIaWRl
KCB0aGlzICk7CisgICAgfSwKKyAgICB0b2dnbGU6IGZ1bmN0aW9uKCBzdGF0ZSApIHsKKyAgICAg
ICAgaWYgKCB0eXBlb2Ygc3RhdGUgPT09ICJib29sZWFuIiApIHsKKyAgICAgICAgICAgIHJldHVy
biBzdGF0ZSA/IHRoaXMuc2hvdygpIDogdGhpcy5oaWRlKCk7CisgICAgICAgIH0KKworICAgICAg
ICByZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGlmICggaXNIaWRk
ZW5XaXRoaW5UcmVlKCB0aGlzICkgKSB7CisgICAgICAgICAgICAgICAgalF1ZXJ5KCB0aGlzICku
c2hvdygpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBqUXVlcnkoIHRo
aXMgKS5oaWRlKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gKTsKKyAgICB9Cit9ICk7CisK
K3JldHVybiBzaG93SGlkZTsKK30gKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25l
L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2Nzcy9zdXBwb3J0LmpzIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFj
a2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvY3NzL3N1cHBvcnQuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Zjk5OWVjOWE2YzQ3YmM1ODcyNzdkMThlYjM2YzMwNjNiYzg5MTkwYgotLS0gL2Rldi9udWxsCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2Nzcy9zdXBw
b3J0LmpzCkBAIC0wLDAgKzEsODkgQEAKK2RlZmluZSggWworICAgICIuLi9jb3JlIiwKKyAgICAi
Li4vdmFyL2RvY3VtZW50IiwKKyAgICAiLi4vdmFyL2RvY3VtZW50RWxlbWVudCIsCisgICAgIi4u
L3Zhci9zdXBwb3J0IgorXSwgZnVuY3Rpb24oIGpRdWVyeSwgZG9jdW1lbnQsIGRvY3VtZW50RWxl
bWVudCwgc3VwcG9ydCApIHsKKworInVzZSBzdHJpY3QiOworCisoIGZ1bmN0aW9uKCkgeworCisg
ICAgLy8gRXhlY3V0aW5nIGJvdGggcGl4ZWxQb3NpdGlvbiAmIGJveFNpemluZ1JlbGlhYmxlIHRl
c3RzIHJlcXVpcmUgb25seSBvbmUgbGF5b3V0CisgICAgLy8gc28gdGhleSdyZSBleGVjdXRlZCBh
dCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgdGhlIHNlY29uZCBjb21wdXRhdGlvbi4KKyAgICBmdW5j
dGlvbiBjb21wdXRlU3R5bGVUZXN0cygpIHsKKworICAgICAgICAvLyBUaGlzIGlzIGEgc2luZ2xl
dG9uLCB3ZSBuZWVkIHRvIGV4ZWN1dGUgaXQgb25seSBvbmNlCisgICAgICAgIGlmICggIWRpdiAp
IHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGRpdi5zdHlsZS5j
c3NUZXh0ID0KKyAgICAgICAgICAgICJib3gtc2l6aW5nOmJvcmRlci1ib3g7IiArCisgICAgICAg
ICAgICAicG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpibG9jazsiICsKKyAgICAgICAgICAgICJt
YXJnaW46YXV0bztib3JkZXI6MXB4O3BhZGRpbmc6MXB4OyIgKworICAgICAgICAgICAgInRvcDox
JTt3aWR0aDo1MCUiOworICAgICAgICBkaXYuaW5uZXJIVE1MID0gIiI7CisgICAgICAgIGRvY3Vt
ZW50RWxlbWVudC5hcHBlbmRDaGlsZCggY29udGFpbmVyICk7CisKKyAgICAgICAgdmFyIGRpdlN0
eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoIGRpdiApOworICAgICAgICBwaXhlbFBvc2l0
aW9uVmFsID0gZGl2U3R5bGUudG9wICE9PSAiMSUiOworCisgICAgICAgIC8vIFN1cHBvcnQ6IEFu
ZHJvaWQgNC4wIC0gNC4zIG9ubHksIEZpcmVmb3ggPD0zIC0gNDQKKyAgICAgICAgcmVsaWFibGVN
YXJnaW5MZWZ0VmFsID0gZGl2U3R5bGUubWFyZ2luTGVmdCA9PT0gIjJweCI7CisgICAgICAgIGJv
eFNpemluZ1JlbGlhYmxlVmFsID0gZGl2U3R5bGUud2lkdGggPT09ICI0cHgiOworCisgICAgICAg
IC8vIFN1cHBvcnQ6IEFuZHJvaWQgNC4wIC0gNC4zIG9ubHkKKyAgICAgICAgLy8gU29tZSBzdHls
ZXMgY29tZSBiYWNrIHdpdGggcGVyY2VudGFnZSB2YWx1ZXMsIGV2ZW4gdGhvdWdoIHRoZXkgc2hv
dWxkbid0CisgICAgICAgIGRpdi5zdHlsZS5tYXJnaW5SaWdodCA9ICI1MCUiOworICAgICAgICBw
aXhlbE1hcmdpblJpZ2h0VmFsID0gZGl2U3R5bGUubWFyZ2luUmlnaHQgPT09ICI0cHgiOworCisg
ICAgICAgIGRvY3VtZW50RWxlbWVudC5yZW1vdmVDaGlsZCggY29udGFpbmVyICk7CisKKyAgICAg
ICAgLy8gTnVsbGlmeSB0aGUgZGl2IHNvIGl0IHdvdWxkbid0IGJlIHN0b3JlZCBpbiB0aGUgbWVt
b3J5IGFuZAorICAgICAgICAvLyBpdCB3aWxsIGFsc28gYmUgYSBzaWduIHRoYXQgY2hlY2tzIGFs
cmVhZHkgcGVyZm9ybWVkCisgICAgICAgIGRpdiA9IG51bGw7CisgICAgfQorCisgICAgdmFyIHBp
eGVsUG9zaXRpb25WYWwsIGJveFNpemluZ1JlbGlhYmxlVmFsLCBwaXhlbE1hcmdpblJpZ2h0VmFs
LCByZWxpYWJsZU1hcmdpbkxlZnRWYWwsCisgICAgICAgIGNvbnRhaW5lciA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoICJkaXYiICksCisgICAgICAgIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoICJkaXYiICk7CisKKyAgICAvLyBGaW5pc2ggZWFybHkgaW4gbGltaXRlZCAobm9uLWJyb3dz
ZXIpIGVudmlyb25tZW50cworICAgIGlmICggIWRpdi5zdHlsZSApIHsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIC8vIFN1cHBvcnQ6IElFIDw9OSAtIDExIG9ubHkKKyAgICAvLyBTdHls
ZSBvZiBjbG9uZWQgZWxlbWVudCBhZmZlY3RzIHNvdXJjZSBlbGVtZW50IGNsb25lZCAoIzg5MDgp
CisgICAgZGl2LnN0eWxlLmJhY2tncm91bmRDbGlwID0gImNvbnRlbnQtYm94IjsKKyAgICBkaXYu
Y2xvbmVOb2RlKCB0cnVlICkuc3R5bGUuYmFja2dyb3VuZENsaXAgPSAiIjsKKyAgICBzdXBwb3J0
LmNsZWFyQ2xvbmVTdHlsZSA9IGRpdi5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCA9PT0gImNvbnRlbnQt
Ym94IjsKKworICAgIGNvbnRhaW5lci5zdHlsZS5jc3NUZXh0ID0gImJvcmRlcjowO3dpZHRoOjhw
eDtoZWlnaHQ6MDt0b3A6MDtsZWZ0Oi05OTk5cHg7IiArCisgICAgICAgICJwYWRkaW5nOjA7bWFy
Z2luLXRvcDoxcHg7cG9zaXRpb246YWJzb2x1dGUiOworICAgIGNvbnRhaW5lci5hcHBlbmRDaGls
ZCggZGl2ICk7CisKKyAgICBqUXVlcnkuZXh0ZW5kKCBzdXBwb3J0LCB7CisgICAgICAgIHBpeGVs
UG9zaXRpb246IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgY29tcHV0ZVN0eWxlVGVzdHMoKTsK
KyAgICAgICAgICAgIHJldHVybiBwaXhlbFBvc2l0aW9uVmFsOworICAgICAgICB9LAorICAgICAg
ICBib3hTaXppbmdSZWxpYWJsZTogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBjb21wdXRlU3R5
bGVUZXN0cygpOworICAgICAgICAgICAgcmV0dXJuIGJveFNpemluZ1JlbGlhYmxlVmFsOworICAg
ICAgICB9LAorICAgICAgICBwaXhlbE1hcmdpblJpZ2h0OiBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgIGNvbXB1dGVTdHlsZVRlc3RzKCk7CisgICAgICAgICAgICByZXR1cm4gcGl4ZWxNYXJnaW5S
aWdodFZhbDsKKyAgICAgICAgfSwKKyAgICAgICAgcmVsaWFibGVNYXJnaW5MZWZ0OiBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgIGNvbXB1dGVTdHlsZVRlc3RzKCk7CisgICAgICAgICAgICByZXR1
cm4gcmVsaWFibGVNYXJnaW5MZWZ0VmFsOworICAgICAgICB9CisgICAgfSApOworfSApKCk7CisK
K3JldHVybiBzdXBwb3J0OworCit9ICk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9u
ZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9jc3MvdmFyL2Nzc0V4cGFuZC5qcyBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2Nzcy92YXIvY3NzRXhwYW5kLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjYzY2VjNzIwMzBiNDRjNTI0NjM3ZmJjNjBhZGE1NWZjZmE5NzVmYjIKLS0t
IC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5
L3NyYy9jc3MvdmFyL2Nzc0V4cGFuZC5qcwpAQCAtMCwwICsxLDUgQEAKK2RlZmluZSggZnVuY3Rp
b24oKSB7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgcmV0dXJuIFsgIlRvcCIsICJSaWdodCIs
ICJCb3R0b20iLCAiTGVmdCIgXTsKK30gKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2ti
b25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2Nzcy92YXIvZ2V0U3R5bGVzLmpzIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvY3NzL3Zhci9nZXRTdHlsZXMu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMGQyOTI4MzRmNGZlY2NhMDMxOTMyYjc4ZDk0NGJhYWRiZTFkMDIxNQot
LS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVl
cnkvc3JjL2Nzcy92YXIvZ2V0U3R5bGVzLmpzCkBAIC0wLDAgKzEsMTcgQEAKK2RlZmluZSggZnVu
Y3Rpb24oKSB7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgcmV0dXJuIGZ1bmN0aW9uKCBlbGVt
ICkgeworCisgICAgICAgIC8vIFN1cHBvcnQ6IElFIDw9MTEgb25seSwgRmlyZWZveCA8PTMwICgj
MTUwOTgsICMxNDE1MCkKKyAgICAgICAgLy8gSUUgdGhyb3dzIG9uIGVsZW1lbnRzIGNyZWF0ZWQg
aW4gcG9wdXBzCisgICAgICAgIC8vIEZGIG1lYW53aGlsZSB0aHJvd3Mgb24gZnJhbWUgZWxlbWVu
dHMgdGhyb3VnaCAiZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSIKKyAgICAgICAgdmFyIHZp
ZXcgPSBlbGVtLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXc7CisKKyAgICAgICAgaWYgKCAhdmll
dyB8fCAhdmlldy5vcGVuZXIgKSB7CisgICAgICAgICAgICB2aWV3ID0gd2luZG93OworICAgICAg
ICB9CisKKyAgICAgICAgcmV0dXJuIHZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSggZWxlbSApOworICAg
IH07Cit9ICk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMv
anF1ZXJ5L3NyYy9jc3MvdmFyL2lzSGlkZGVuV2l0aGluVHJlZS5qcyBiL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2Jh
Y2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2Nzcy92YXIvaXNIaWRkZW5XaXRoaW5UcmVl
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjdkYzYwNmJhYjU3ZmQ2Nzc1NGM5NWIxNzk4ZjJlZDgyMjUyYzFjMzQK
LS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1
ZXJ5L3NyYy9jc3MvdmFyL2lzSGlkZGVuV2l0aGluVHJlZS5qcwpAQCAtMCwwICsxLDM0IEBACitk
ZWZpbmUoIFsKKyAgICAiLi4vLi4vY29yZSIsCisgICAgIi4uLy4uL3NlbGVjdG9yIgorCisgICAg
Ly8gY3NzIGlzIGFzc3VtZWQKK10sIGZ1bmN0aW9uKCBqUXVlcnkgKSB7CisgICAgInVzZSBzdHJp
Y3QiOworCisgICAgLy8gaXNIaWRkZW5XaXRoaW5UcmVlIHJlcG9ydHMgaWYgYW4gZWxlbWVudCBo
YXMgYSBub24tIm5vbmUiIGRpc3BsYXkgc3R5bGUgKGlubGluZSBhbmQvb3IKKyAgICAvLyB0aHJv
dWdoIHRoZSBDU1MgY2FzY2FkZSksIHdoaWNoIGlzIHVzZWZ1bCBpbiBkZWNpZGluZyB3aGV0aGVy
IG9yIG5vdCB0byBtYWtlIGl0IHZpc2libGUuCisgICAgLy8gSXQgZGlmZmVycyBmcm9tIHRoZSA6
aGlkZGVuIHNlbGVjdG9yIChqUXVlcnkuZXhwci5wc2V1ZG9zLmhpZGRlbikgaW4gdHdvIGltcG9y
dGFudCB3YXlzOgorICAgIC8vICogQSBoaWRkZW4gYW5jZXN0b3IgZG9lcyBub3QgZm9yY2UgYW4g
ZWxlbWVudCB0byBiZSBjbGFzc2lmaWVkIGFzIGhpZGRlbi4KKyAgICAvLyAqIEJlaW5nIGRpc2Nv
bm5lY3RlZCBmcm9tIHRoZSBkb2N1bWVudCBkb2VzIG5vdCBmb3JjZSBhbiBlbGVtZW50IHRvIGJl
IGNsYXNzaWZpZWQgYXMgaGlkZGVuLgorICAgIC8vIFRoZXNlIGRpZmZlcmVuY2VzIGltcHJvdmUg
dGhlIGJlaGF2aW9yIG9mIC50b2dnbGUoKSBldCBhbC4gd2hlbiBhcHBsaWVkIHRvIGVsZW1lbnRz
IHRoYXQgYXJlCisgICAgLy8gZGV0YWNoZWQgb3IgY29udGFpbmVkIHdpdGhpbiBoaWRkZW4gYW5j
ZXN0b3JzIChnaC0yNDA0LCBnaC0yODYzKS4KKyAgICByZXR1cm4gZnVuY3Rpb24oIGVsZW0sIGVs
ICkgeworCisgICAgICAgIC8vIGlzSGlkZGVuV2l0aGluVHJlZSBtaWdodCBiZSBjYWxsZWQgZnJv
bSBqUXVlcnkjZmlsdGVyIGZ1bmN0aW9uOworICAgICAgICAvLyBpbiB0aGF0IGNhc2UsIGVsZW1l
bnQgd2lsbCBiZSBzZWNvbmQgYXJndW1lbnQKKyAgICAgICAgZWxlbSA9IGVsIHx8IGVsZW07CisK
KyAgICAgICAgLy8gSW5saW5lIHN0eWxlIHRydW1wcyBhbGwKKyAgICAgICAgcmV0dXJuIGVsZW0u
c3R5bGUuZGlzcGxheSA9PT0gIm5vbmUiIHx8CisgICAgICAgICAgICBlbGVtLnN0eWxlLmRpc3Bs
YXkgPT09ICIiICYmCisKKyAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgY2hlY2sgY29tcHV0ZWQg
c3R5bGUKKyAgICAgICAgICAgIC8vIFN1cHBvcnQ6IEZpcmVmb3ggPD00MyAtIDQ1CisgICAgICAg
ICAgICAvLyBEaXNjb25uZWN0ZWQgZWxlbWVudHMgY2FuIGhhdmUgY29tcHV0ZWQgZGlzcGxheTog
bm9uZSwgc28gZmlyc3QgY29uZmlybSB0aGF0IGVsZW0gaXMKKyAgICAgICAgICAgIC8vIGluIHRo
ZSBkb2N1bWVudC4KKyAgICAgICAgICAgIGpRdWVyeS5jb250YWlucyggZWxlbS5vd25lckRvY3Vt
ZW50LCBlbGVtICkgJiYKKworICAgICAgICAgICAgalF1ZXJ5LmNzcyggZWxlbSwgImRpc3BsYXki
ICkgPT09ICJub25lIjsKKyAgICB9OworfSApOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFj
a2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvY3NzL3Zhci9ybWFyZ2luLmpzIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvY3NzL3Zhci9ybWFyZ2luLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjI0MDhhNGI2NDQxZTg1YTZiNGRlY2NkYmQ2NDdhNDMzZDQ4NDRkZDIKLS0t
IC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5
L3NyYy9jc3MvdmFyL3JtYXJnaW4uanMKQEAgLTAsMCArMSw1IEBACitkZWZpbmUoIGZ1bmN0aW9u
KCkgeworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHJldHVybiAoIC9ebWFyZ2luLyApOworfSAp
OwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9z
cmMvY3NzL3Zhci9ybnVtbm9ucHguanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVs
ZXMvanF1ZXJ5L3NyYy9jc3MvdmFyL3JudW1ub25weC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NWZlYzI2Yjkz
MWQ4NDZiOTYwNzEwM2NiNjc3ODc0ODcwNTA4ZjU4Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvY3NzL3Zhci9ybnVtbm9ucHgu
anMKQEAgLTAsMCArMSw3IEBACitkZWZpbmUoIFsKKyAgICAiLi4vLi4vdmFyL3BudW0iCitdLCBm
dW5jdGlvbiggcG51bSApIHsKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICByZXR1cm4gbmV3IFJl
Z0V4cCggIl4oIiArIHBudW0gKyAiKSg/IXB4KVthLXolXSskIiwgImkiICk7Cit9ICk7CmRpZmYg
LS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9jc3Mv
dmFyL3N3YXAuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3Ny
Yy9jc3MvdmFyL3N3YXAuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjA0MzM5NWFmMDY1ZmEyOWYxZjBhM2Y4OWQ5
OTliMzVhZDExMTNiOAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25v
ZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2Nzcy92YXIvc3dhcC5qcwpAQCAtMCwwICsxLDI2IEBACitk
ZWZpbmUoIGZ1bmN0aW9uKCkgeworCisidXNlIHN0cmljdCI7CisKKy8vIEEgbWV0aG9kIGZvciBx
dWlja2x5IHN3YXBwaW5nIGluL291dCBDU1MgcHJvcGVydGllcyB0byBnZXQgY29ycmVjdCBjYWxj
dWxhdGlvbnMuCityZXR1cm4gZnVuY3Rpb24oIGVsZW0sIG9wdGlvbnMsIGNhbGxiYWNrLCBhcmdz
ICkgeworICAgIHZhciByZXQsIG5hbWUsCisgICAgICAgIG9sZCA9IHt9OworCisgICAgLy8gUmVt
ZW1iZXIgdGhlIG9sZCB2YWx1ZXMsIGFuZCBpbnNlcnQgdGhlIG5ldyBvbmVzCisgICAgZm9yICgg
bmFtZSBpbiBvcHRpb25zICkgeworICAgICAgICBvbGRbIG5hbWUgXSA9IGVsZW0uc3R5bGVbIG5h
bWUgXTsKKyAgICAgICAgZWxlbS5zdHlsZVsgbmFtZSBdID0gb3B0aW9uc1sgbmFtZSBdOworICAg
IH0KKworICAgIHJldCA9IGNhbGxiYWNrLmFwcGx5KCBlbGVtLCBhcmdzIHx8IFtdICk7CisKKyAg
ICAvLyBSZXZlcnQgdGhlIG9sZCB2YWx1ZXMKKyAgICBmb3IgKCBuYW1lIGluIG9wdGlvbnMgKSB7
CisgICAgICAgIGVsZW0uc3R5bGVbIG5hbWUgXSA9IG9sZFsgbmFtZSBdOworICAgIH0KKworICAg
IHJldHVybiByZXQ7Cit9OworCit9ICk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9u
ZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9kYXRhLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUv
bm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvZGF0YS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mM2UyMjE2OWQxOWI4
YjI4ZDE5YWUxNjcwMWIxNmNhMjNhNmUxZjcwCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvZGF0YS5qcwpAQCAtMCwwICsxLDE3
OSBAQAorZGVmaW5lKCBbCisgICAgIi4vY29yZSIsCisgICAgIi4vY29yZS9hY2Nlc3MiLAorICAg
ICIuL2RhdGEvdmFyL2RhdGFQcml2IiwKKyAgICAiLi9kYXRhL3Zhci9kYXRhVXNlciIKK10sIGZ1
bmN0aW9uKCBqUXVlcnksIGFjY2VzcywgZGF0YVByaXYsIGRhdGFVc2VyICkgeworCisidXNlIHN0
cmljdCI7CisKKy8vICBJbXBsZW1lbnRhdGlvbiBTdW1tYXJ5CisvLworLy8gIDEuIEVuZm9yY2Ug
QVBJIHN1cmZhY2UgYW5kIHNlbWFudGljIGNvbXBhdGliaWxpdHkgd2l0aCAxLjkueCBicmFuY2gK
Ky8vICAyLiBJbXByb3ZlIHRoZSBtb2R1bGUncyBtYWludGFpbmFiaWxpdHkgYnkgcmVkdWNpbmcg
dGhlIHN0b3JhZ2UKKy8vICAgICAgcGF0aHMgdG8gYSBzaW5nbGUgbWVjaGFuaXNtLgorLy8gIDMu
IFVzZSB0aGUgc2FtZSBzaW5nbGUgbWVjaGFuaXNtIHRvIHN1cHBvcnQgInByaXZhdGUiIGFuZCAi
dXNlciIgZGF0YS4KKy8vICA0LiBfTmV2ZXJfIGV4cG9zZSAicHJpdmF0ZSIgZGF0YSB0byB1c2Vy
IGNvZGUgKFRPRE86IERyb3AgX2RhdGEsIF9yZW1vdmVEYXRhKQorLy8gIDUuIEF2b2lkIGV4cG9z
aW5nIGltcGxlbWVudGF0aW9uIGRldGFpbHMgb24gdXNlciBvYmplY3RzIChlZy4gZXhwYW5kbyBw
cm9wZXJ0aWVzKQorLy8gIDYuIFByb3ZpZGUgYSBjbGVhciBwYXRoIGZvciBpbXBsZW1lbnRhdGlv
biB1cGdyYWRlIHRvIFdlYWtNYXAgaW4gMjAxNAorCit2YXIgcmJyYWNlID0gL14oPzpce1tcd1xX
XSpcfXxcW1tcd1xXXSpcXSkkLywKKyAgICBybXVsdGlEYXNoID0gL1tBLVpdL2c7CisKK2Z1bmN0
aW9uIGdldERhdGEoIGRhdGEgKSB7CisgICAgaWYgKCBkYXRhID09PSAidHJ1ZSIgKSB7CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGlmICggZGF0YSA9PT0gImZhbHNlIiApIHsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICggZGF0YSA9PT0gIm51bGwi
ICkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICAvLyBPbmx5IGNvbnZlcnQg
dG8gYSBudW1iZXIgaWYgaXQgZG9lc24ndCBjaGFuZ2UgdGhlIHN0cmluZworICAgIGlmICggZGF0
YSA9PT0gK2RhdGEgKyAiIiApIHsKKyAgICAgICAgcmV0dXJuICtkYXRhOworICAgIH0KKworICAg
IGlmICggcmJyYWNlLnRlc3QoIGRhdGEgKSApIHsKKyAgICAgICAgcmV0dXJuIEpTT04ucGFyc2Uo
IGRhdGEgKTsKKyAgICB9CisKKyAgICByZXR1cm4gZGF0YTsKK30KKworZnVuY3Rpb24gZGF0YUF0
dHIoIGVsZW0sIGtleSwgZGF0YSApIHsKKyAgICB2YXIgbmFtZTsKKworICAgIC8vIElmIG5vdGhp
bmcgd2FzIGZvdW5kIGludGVybmFsbHksIHRyeSB0byBmZXRjaCBhbnkKKyAgICAvLyBkYXRhIGZy
b20gdGhlIEhUTUw1IGRhdGEtKiBhdHRyaWJ1dGUKKyAgICBpZiAoIGRhdGEgPT09IHVuZGVmaW5l
ZCAmJiBlbGVtLm5vZGVUeXBlID09PSAxICkgeworICAgICAgICBuYW1lID0gImRhdGEtIiArIGtl
eS5yZXBsYWNlKCBybXVsdGlEYXNoLCAiLSQmIiApLnRvTG93ZXJDYXNlKCk7CisgICAgICAgIGRh
dGEgPSBlbGVtLmdldEF0dHJpYnV0ZSggbmFtZSApOworCisgICAgICAgIGlmICggdHlwZW9mIGRh
dGEgPT09ICJzdHJpbmciICkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBk
YXRhID0gZ2V0RGF0YSggZGF0YSApOworICAgICAgICAgICAgfSBjYXRjaCAoIGUgKSB7fQorCisg
ICAgICAgICAgICAvLyBNYWtlIHN1cmUgd2Ugc2V0IHRoZSBkYXRhIHNvIGl0IGlzbid0IGNoYW5n
ZWQgbGF0ZXIKKyAgICAgICAgICAgIGRhdGFVc2VyLnNldCggZWxlbSwga2V5LCBkYXRhICk7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBkYXRhID0gdW5kZWZpbmVkOworICAgICAgICB9
CisgICAgfQorICAgIHJldHVybiBkYXRhOworfQorCitqUXVlcnkuZXh0ZW5kKCB7CisgICAgaGFz
RGF0YTogZnVuY3Rpb24oIGVsZW0gKSB7CisgICAgICAgIHJldHVybiBkYXRhVXNlci5oYXNEYXRh
KCBlbGVtICkgfHwgZGF0YVByaXYuaGFzRGF0YSggZWxlbSApOworICAgIH0sCisKKyAgICBkYXRh
OiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgZGF0YSApIHsKKyAgICAgICAgcmV0dXJuIGRhdGFVc2Vy
LmFjY2VzcyggZWxlbSwgbmFtZSwgZGF0YSApOworICAgIH0sCisKKyAgICByZW1vdmVEYXRhOiBm
dW5jdGlvbiggZWxlbSwgbmFtZSApIHsKKyAgICAgICAgZGF0YVVzZXIucmVtb3ZlKCBlbGVtLCBu
YW1lICk7CisgICAgfSwKKworICAgIC8vIFRPRE86IE5vdyB0aGF0IGFsbCBjYWxscyB0byBfZGF0
YSBhbmQgX3JlbW92ZURhdGEgaGF2ZSBiZWVuIHJlcGxhY2VkCisgICAgLy8gd2l0aCBkaXJlY3Qg
Y2FsbHMgdG8gZGF0YVByaXYgbWV0aG9kcywgdGhlc2UgY2FuIGJlIGRlcHJlY2F0ZWQuCisgICAg
X2RhdGE6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBkYXRhICkgeworICAgICAgICByZXR1cm4gZGF0
YVByaXYuYWNjZXNzKCBlbGVtLCBuYW1lLCBkYXRhICk7CisgICAgfSwKKworICAgIF9yZW1vdmVE
YXRhOiBmdW5jdGlvbiggZWxlbSwgbmFtZSApIHsKKyAgICAgICAgZGF0YVByaXYucmVtb3ZlKCBl
bGVtLCBuYW1lICk7CisgICAgfQorfSApOworCitqUXVlcnkuZm4uZXh0ZW5kKCB7CisgICAgZGF0
YTogZnVuY3Rpb24oIGtleSwgdmFsdWUgKSB7CisgICAgICAgIHZhciBpLCBuYW1lLCBkYXRhLAor
ICAgICAgICAgICAgZWxlbSA9IHRoaXNbIDAgXSwKKyAgICAgICAgICAgIGF0dHJzID0gZWxlbSAm
JiBlbGVtLmF0dHJpYnV0ZXM7CisKKyAgICAgICAgLy8gR2V0cyBhbGwgdmFsdWVzCisgICAgICAg
IGlmICgga2V5ID09PSB1bmRlZmluZWQgKSB7CisgICAgICAgICAgICBpZiAoIHRoaXMubGVuZ3Ro
ICkgeworICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhVXNlci5nZXQoIGVsZW0gKTsKKworICAg
ICAgICAgICAgICAgIGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSAmJiAhZGF0YVByaXYuZ2V0KCBl
bGVtLCAiaGFzRGF0YUF0dHJzIiApICkgeworICAgICAgICAgICAgICAgICAgICBpID0gYXR0cnMu
bGVuZ3RoOworICAgICAgICAgICAgICAgICAgICB3aGlsZSAoIGktLSApIHsKKworICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gU3VwcG9ydDogSUUgMTEgb25seQorICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gVGhlIGF0dHJzIGVsZW1lbnRzIGNhbiBiZSBudWxsICgjMTQ4OTQpCisgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoIGF0dHJzWyBpIF0gKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbmFtZSA9IGF0dHJzWyBpIF0ubmFtZTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoIG5hbWUuaW5kZXhPZiggImRhdGEtIiApID09PSAwICkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBuYW1lID0galF1ZXJ5LmNhbWVsQ2FzZSggbmFtZS5zbGljZSgg
NSApICk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFBdHRyKCBlbGVtLCBu
YW1lLCBkYXRhWyBuYW1lIF0gKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgZGF0YVByaXYuc2V0KCBlbGVtLCAiaGFzRGF0YUF0dHJzIiwgdHJ1ZSApOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIGRhdGE7
CisgICAgICAgIH0KKworICAgICAgICAvLyBTZXRzIG11bHRpcGxlIHZhbHVlcworICAgICAgICBp
ZiAoIHR5cGVvZiBrZXkgPT09ICJvYmplY3QiICkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMu
ZWFjaCggZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgZGF0YVVzZXIuc2V0KCB0aGlzLCBr
ZXkgKTsKKyAgICAgICAgICAgIH0gKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBhY2Nl
c3MoIHRoaXMsIGZ1bmN0aW9uKCB2YWx1ZSApIHsKKyAgICAgICAgICAgIHZhciBkYXRhOworCisg
ICAgICAgICAgICAvLyBUaGUgY2FsbGluZyBqUXVlcnkgb2JqZWN0IChlbGVtZW50IG1hdGNoZXMp
IGlzIG5vdCBlbXB0eQorICAgICAgICAgICAgLy8gKGFuZCB0aGVyZWZvcmUgaGFzIGFuIGVsZW1l
bnQgYXBwZWFycyBhdCB0aGlzWyAwIF0pIGFuZCB0aGUKKyAgICAgICAgICAgIC8vIGB2YWx1ZWAg
cGFyYW1ldGVyIHdhcyBub3QgdW5kZWZpbmVkLiBBbiBlbXB0eSBqUXVlcnkgb2JqZWN0CisgICAg
ICAgICAgICAvLyB3aWxsIHJlc3VsdCBpbiBgdW5kZWZpbmVkYCBmb3IgZWxlbSA9IHRoaXNbIDAg
XSB3aGljaCB3aWxsCisgICAgICAgICAgICAvLyB0aHJvdyBhbiBleGNlcHRpb24gaWYgYW4gYXR0
ZW1wdCB0byByZWFkIGEgZGF0YSBjYWNoZSBpcyBtYWRlLgorICAgICAgICAgICAgaWYgKCBlbGVt
ICYmIHZhbHVlID09PSB1bmRlZmluZWQgKSB7CisKKyAgICAgICAgICAgICAgICAvLyBBdHRlbXB0
IHRvIGdldCBkYXRhIGZyb20gdGhlIGNhY2hlCisgICAgICAgICAgICAgICAgLy8gVGhlIGtleSB3
aWxsIGFsd2F5cyBiZSBjYW1lbENhc2VkIGluIERhdGEKKyAgICAgICAgICAgICAgICBkYXRhID0g
ZGF0YVVzZXIuZ2V0KCBlbGVtLCBrZXkgKTsKKyAgICAgICAgICAgICAgICBpZiAoIGRhdGEgIT09
IHVuZGVmaW5lZCApIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGE7CisgICAgICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gQXR0ZW1wdCB0byAiZGlzY292ZXIiIHRo
ZSBkYXRhIGluCisgICAgICAgICAgICAgICAgLy8gSFRNTDUgY3VzdG9tIGRhdGEtKiBhdHRycwor
ICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhQXR0ciggZWxlbSwga2V5ICk7CisgICAgICAgICAg
ICAgICAgaWYgKCBkYXRhICE9PSB1bmRlZmluZWQgKSB7CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBkYXRhOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIFdlIHRy
aWVkIHJlYWxseSBoYXJkLCBidXQgdGhlIGRhdGEgZG9lc24ndCBleGlzdC4KKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFNldCB0aGUgZGF0
YS4uLgorICAgICAgICAgICAgdGhpcy5lYWNoKCBmdW5jdGlvbigpIHsKKworICAgICAgICAgICAg
ICAgIC8vIFdlIGFsd2F5cyBzdG9yZSB0aGUgY2FtZWxDYXNlZCBrZXkKKyAgICAgICAgICAgICAg
ICBkYXRhVXNlci5zZXQoIHRoaXMsIGtleSwgdmFsdWUgKTsKKyAgICAgICAgICAgIH0gKTsKKyAg
ICAgICAgfSwgbnVsbCwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggPiAxLCBudWxsLCB0cnVlICk7
CisgICAgfSwKKworICAgIHJlbW92ZURhdGE6IGZ1bmN0aW9uKCBrZXkgKSB7CisgICAgICAgIHJl
dHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZGF0YVVzZXIucmVtb3Zl
KCB0aGlzLCBrZXkgKTsKKyAgICAgICAgfSApOworICAgIH0KK30gKTsKKworcmV0dXJuIGpRdWVy
eTsKK30gKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9q
cXVlcnkvc3JjL2RhdGEvRGF0YS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxl
cy9qcXVlcnkvc3JjL2RhdGEvRGF0YS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZWI4MmY2NTJiYWRmZmNhY2Qz
ZTYyMGVkOWFhMmZkMjg4NzQwYWY0Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFj
a2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvZGF0YS9EYXRhLmpzCkBAIC0wLDAgKzEsMTYx
IEBACitkZWZpbmUoIFsKKyAgICAiLi4vY29yZSIsCisgICAgIi4uL3Zhci9ybm90aHRtbHdoaXRl
IiwKKyAgICAiLi92YXIvYWNjZXB0RGF0YSIKK10sIGZ1bmN0aW9uKCBqUXVlcnksIHJub3RodG1s
d2hpdGUsIGFjY2VwdERhdGEgKSB7CisKKyJ1c2Ugc3RyaWN0IjsKKworZnVuY3Rpb24gRGF0YSgp
IHsKKyAgICB0aGlzLmV4cGFuZG8gPSBqUXVlcnkuZXhwYW5kbyArIERhdGEudWlkKys7Cit9CisK
K0RhdGEudWlkID0gMTsKKworRGF0YS5wcm90b3R5cGUgPSB7CisKKyAgICBjYWNoZTogZnVuY3Rp
b24oIG93bmVyICkgeworCisgICAgICAgIC8vIENoZWNrIGlmIHRoZSBvd25lciBvYmplY3QgYWxy
ZWFkeSBoYXMgYSBjYWNoZQorICAgICAgICB2YXIgdmFsdWUgPSBvd25lclsgdGhpcy5leHBhbmRv
IF07CisKKyAgICAgICAgLy8gSWYgbm90LCBjcmVhdGUgb25lCisgICAgICAgIGlmICggIXZhbHVl
ICkgeworICAgICAgICAgICAgdmFsdWUgPSB7fTsKKworICAgICAgICAgICAgLy8gV2UgY2FuIGFj
Y2VwdCBkYXRhIGZvciBub24tZWxlbWVudCBub2RlcyBpbiBtb2Rlcm4gYnJvd3NlcnMsCisgICAg
ICAgICAgICAvLyBidXQgd2Ugc2hvdWxkIG5vdCwgc2VlICM4MzM1LgorICAgICAgICAgICAgLy8g
QWx3YXlzIHJldHVybiBhbiBlbXB0eSBvYmplY3QuCisgICAgICAgICAgICBpZiAoIGFjY2VwdERh
dGEoIG93bmVyICkgKSB7CisKKyAgICAgICAgICAgICAgICAvLyBJZiBpdCBpcyBhIG5vZGUgdW5s
aWtlbHkgdG8gYmUgc3RyaW5naWZ5LWVkIG9yIGxvb3BlZCBvdmVyCisgICAgICAgICAgICAgICAg
Ly8gdXNlIHBsYWluIGFzc2lnbm1lbnQKKyAgICAgICAgICAgICAgICBpZiAoIG93bmVyLm5vZGVU
eXBlICkgeworICAgICAgICAgICAgICAgICAgICBvd25lclsgdGhpcy5leHBhbmRvIF0gPSB2YWx1
ZTsKKworICAgICAgICAgICAgICAgIC8vIE90aGVyd2lzZSBzZWN1cmUgaXQgaW4gYSBub24tZW51
bWVyYWJsZSBwcm9wZXJ0eQorICAgICAgICAgICAgICAgIC8vIGNvbmZpZ3VyYWJsZSBtdXN0IGJl
IHRydWUgdG8gYWxsb3cgdGhlIHByb3BlcnR5IHRvIGJlCisgICAgICAgICAgICAgICAgLy8gZGVs
ZXRlZCB3aGVuIGRhdGEgaXMgcmVtb3ZlZAorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSggb3duZXIsIHRoaXMuZXhwYW5k
bywgeworICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlCisgICAgICAgICAgICAgICAgICAgIH0gKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBy
ZXR1cm4gdmFsdWU7CisgICAgfSwKKyAgICBzZXQ6IGZ1bmN0aW9uKCBvd25lciwgZGF0YSwgdmFs
dWUgKSB7CisgICAgICAgIHZhciBwcm9wLAorICAgICAgICAgICAgY2FjaGUgPSB0aGlzLmNhY2hl
KCBvd25lciApOworCisgICAgICAgIC8vIEhhbmRsZTogWyBvd25lciwga2V5LCB2YWx1ZSBdIGFy
Z3MKKyAgICAgICAgLy8gQWx3YXlzIHVzZSBjYW1lbENhc2Uga2V5IChnaC0yMjU3KQorICAgICAg
ICBpZiAoIHR5cGVvZiBkYXRhID09PSAic3RyaW5nIiApIHsKKyAgICAgICAgICAgIGNhY2hlWyBq
UXVlcnkuY2FtZWxDYXNlKCBkYXRhICkgXSA9IHZhbHVlOworCisgICAgICAgIC8vIEhhbmRsZTog
WyBvd25lciwgeyBwcm9wZXJ0aWVzIH0gXSBhcmdzCisgICAgICAgIH0gZWxzZSB7CisKKyAgICAg
ICAgICAgIC8vIENvcHkgdGhlIHByb3BlcnRpZXMgb25lLWJ5LW9uZSB0byB0aGUgY2FjaGUgb2Jq
ZWN0CisgICAgICAgICAgICBmb3IgKCBwcm9wIGluIGRhdGEgKSB7CisgICAgICAgICAgICAgICAg
Y2FjaGVbIGpRdWVyeS5jYW1lbENhc2UoIHByb3AgKSBdID0gZGF0YVsgcHJvcCBdOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBjYWNoZTsKKyAgICB9LAorICAgIGdl
dDogZnVuY3Rpb24oIG93bmVyLCBrZXkgKSB7CisgICAgICAgIHJldHVybiBrZXkgPT09IHVuZGVm
aW5lZCA/CisgICAgICAgICAgICB0aGlzLmNhY2hlKCBvd25lciApIDoKKworICAgICAgICAgICAg
Ly8gQWx3YXlzIHVzZSBjYW1lbENhc2Uga2V5IChnaC0yMjU3KQorICAgICAgICAgICAgb3duZXJb
IHRoaXMuZXhwYW5kbyBdICYmIG93bmVyWyB0aGlzLmV4cGFuZG8gXVsgalF1ZXJ5LmNhbWVsQ2Fz
ZSgga2V5ICkgXTsKKyAgICB9LAorICAgIGFjY2VzczogZnVuY3Rpb24oIG93bmVyLCBrZXksIHZh
bHVlICkgeworCisgICAgICAgIC8vIEluIGNhc2VzIHdoZXJlIGVpdGhlcjoKKyAgICAgICAgLy8K
KyAgICAgICAgLy8gICAxLiBObyBrZXkgd2FzIHNwZWNpZmllZAorICAgICAgICAvLyAgIDIuIEEg
c3RyaW5nIGtleSB3YXMgc3BlY2lmaWVkLCBidXQgbm8gdmFsdWUgcHJvdmlkZWQKKyAgICAgICAg
Ly8KKyAgICAgICAgLy8gVGFrZSB0aGUgInJlYWQiIHBhdGggYW5kIGFsbG93IHRoZSBnZXQgbWV0
aG9kIHRvIGRldGVybWluZQorICAgICAgICAvLyB3aGljaCB2YWx1ZSB0byByZXR1cm4sIHJlc3Bl
Y3RpdmVseSBlaXRoZXI6CisgICAgICAgIC8vCisgICAgICAgIC8vICAgMS4gVGhlIGVudGlyZSBj
YWNoZSBvYmplY3QKKyAgICAgICAgLy8gICAyLiBUaGUgZGF0YSBzdG9yZWQgYXQgdGhlIGtleQor
ICAgICAgICAvLworICAgICAgICBpZiAoIGtleSA9PT0gdW5kZWZpbmVkIHx8CisgICAgICAgICAg
ICAgICAgKCAoIGtleSAmJiB0eXBlb2Yga2V5ID09PSAic3RyaW5nIiApICYmIHZhbHVlID09PSB1
bmRlZmluZWQgKSApIHsKKworICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KCBvd25lciwga2V5
ICk7CisgICAgICAgIH0KKworICAgICAgICAvLyBXaGVuIHRoZSBrZXkgaXMgbm90IGEgc3RyaW5n
LCBvciBib3RoIGEga2V5IGFuZCB2YWx1ZQorICAgICAgICAvLyBhcmUgc3BlY2lmaWVkLCBzZXQg
b3IgZXh0ZW5kIChleGlzdGluZyBvYmplY3RzKSB3aXRoIGVpdGhlcjoKKyAgICAgICAgLy8KKyAg
ICAgICAgLy8gICAxLiBBbiBvYmplY3Qgb2YgcHJvcGVydGllcworICAgICAgICAvLyAgIDIuIEEg
a2V5IGFuZCB2YWx1ZQorICAgICAgICAvLworICAgICAgICB0aGlzLnNldCggb3duZXIsIGtleSwg
dmFsdWUgKTsKKworICAgICAgICAvLyBTaW5jZSB0aGUgInNldCIgcGF0aCBjYW4gaGF2ZSB0d28g
cG9zc2libGUgZW50cnkgcG9pbnRzCisgICAgICAgIC8vIHJldHVybiB0aGUgZXhwZWN0ZWQgZGF0
YSBiYXNlZCBvbiB3aGljaCBwYXRoIHdhcyB0YWtlblsqXQorICAgICAgICByZXR1cm4gdmFsdWUg
IT09IHVuZGVmaW5lZCA/IHZhbHVlIDoga2V5OworICAgIH0sCisgICAgcmVtb3ZlOiBmdW5jdGlv
biggb3duZXIsIGtleSApIHsKKyAgICAgICAgdmFyIGksCisgICAgICAgICAgICBjYWNoZSA9IG93
bmVyWyB0aGlzLmV4cGFuZG8gXTsKKworICAgICAgICBpZiAoIGNhY2hlID09PSB1bmRlZmluZWQg
KSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoIGtleSAh
PT0gdW5kZWZpbmVkICkgeworCisgICAgICAgICAgICAvLyBTdXBwb3J0IGFycmF5IG9yIHNwYWNl
IHNlcGFyYXRlZCBzdHJpbmcgb2Yga2V5cworICAgICAgICAgICAgaWYgKCBqUXVlcnkuaXNBcnJh
eSgga2V5ICkgKSB7CisKKyAgICAgICAgICAgICAgICAvLyBJZiBrZXkgaXMgYW4gYXJyYXkgb2Yg
a2V5cy4uLgorICAgICAgICAgICAgICAgIC8vIFdlIGFsd2F5cyBzZXQgY2FtZWxDYXNlIGtleXMs
IHNvIHJlbW92ZSB0aGF0LgorICAgICAgICAgICAgICAgIGtleSA9IGtleS5tYXAoIGpRdWVyeS5j
YW1lbENhc2UgKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAga2V5ID0g
alF1ZXJ5LmNhbWVsQ2FzZSgga2V5ICk7CisKKyAgICAgICAgICAgICAgICAvLyBJZiBhIGtleSB3
aXRoIHRoZSBzcGFjZXMgZXhpc3RzLCB1c2UgaXQuCisgICAgICAgICAgICAgICAgLy8gT3RoZXJ3
aXNlLCBjcmVhdGUgYW4gYXJyYXkgYnkgbWF0Y2hpbmcgbm9uLXdoaXRlc3BhY2UKKyAgICAgICAg
ICAgICAgICBrZXkgPSBrZXkgaW4gY2FjaGUgPworICAgICAgICAgICAgICAgICAgICBbIGtleSBd
IDoKKyAgICAgICAgICAgICAgICAgICAgKCBrZXkubWF0Y2goIHJub3RodG1sd2hpdGUgKSB8fCBb
XSApOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpID0ga2V5Lmxlbmd0aDsKKworICAg
ICAgICAgICAgd2hpbGUgKCBpLS0gKSB7CisgICAgICAgICAgICAgICAgZGVsZXRlIGNhY2hlWyBr
ZXlbIGkgXSBdOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gUmVtb3Zl
IHRoZSBleHBhbmRvIGlmIHRoZXJlJ3Mgbm8gbW9yZSBkYXRhCisgICAgICAgIGlmICgga2V5ID09
PSB1bmRlZmluZWQgfHwgalF1ZXJ5LmlzRW1wdHlPYmplY3QoIGNhY2hlICkgKSB7CisKKyAgICAg
ICAgICAgIC8vIFN1cHBvcnQ6IENocm9tZSA8PTM1IC0gNDUKKyAgICAgICAgICAgIC8vIFdlYmtp
dCAmIEJsaW5rIHBlcmZvcm1hbmNlIHN1ZmZlcnMgd2hlbiBkZWxldGluZyBwcm9wZXJ0aWVzCisg
ICAgICAgICAgICAvLyBmcm9tIERPTSBub2Rlcywgc28gc2V0IHRvIHVuZGVmaW5lZCBpbnN0ZWFk
CisgICAgICAgICAgICAvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNz
dWVzL2RldGFpbD9pZD0zNzg2MDcgKGJ1ZyByZXN0cmljdGVkKQorICAgICAgICAgICAgaWYgKCBv
d25lci5ub2RlVHlwZSApIHsKKyAgICAgICAgICAgICAgICBvd25lclsgdGhpcy5leHBhbmRvIF0g
PSB1bmRlZmluZWQ7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRlbGV0
ZSBvd25lclsgdGhpcy5leHBhbmRvIF07CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
LAorICAgIGhhc0RhdGE6IGZ1bmN0aW9uKCBvd25lciApIHsKKyAgICAgICAgdmFyIGNhY2hlID0g
b3duZXJbIHRoaXMuZXhwYW5kbyBdOworICAgICAgICByZXR1cm4gY2FjaGUgIT09IHVuZGVmaW5l
ZCAmJiAhalF1ZXJ5LmlzRW1wdHlPYmplY3QoIGNhY2hlICk7CisgICAgfQorfTsKKworcmV0dXJu
IERhdGE7Cit9ICk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVs
ZXMvanF1ZXJ5L3NyYy9kYXRhL3Zhci9hY2NlcHREYXRhLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2Jv
bmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvZGF0YS92YXIvYWNjZXB0RGF0YS5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43MGY4YmZjYTk4NWZmMWM2YzVkZDRiYjFkZGYzYjZmZWM3YzY3NjdjCi0tLSAvZGV2L251
bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvZGF0
YS92YXIvYWNjZXB0RGF0YS5qcwpAQCAtMCwwICsxLDE5IEBACitkZWZpbmUoIGZ1bmN0aW9uKCkg
eworCisidXNlIHN0cmljdCI7CisKKy8qKgorICogRGV0ZXJtaW5lcyB3aGV0aGVyIGFuIG9iamVj
dCBjYW4gaGF2ZSBkYXRhCisgKi8KK3JldHVybiBmdW5jdGlvbiggb3duZXIgKSB7CisKKyAgICAv
LyBBY2NlcHRzIG9ubHk6CisgICAgLy8gIC0gTm9kZQorICAgIC8vICAgIC0gTm9kZS5FTEVNRU5U
X05PREUKKyAgICAvLyAgICAtIE5vZGUuRE9DVU1FTlRfTk9ERQorICAgIC8vICAtIE9iamVjdAor
ICAgIC8vICAgIC0gQW55CisgICAgcmV0dXJuIG93bmVyLm5vZGVUeXBlID09PSAxIHx8IG93bmVy
Lm5vZGVUeXBlID09PSA5IHx8ICEoICtvd25lci5ub2RlVHlwZSApOworfTsKKworfSApOwpkaWZm
IC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvZGF0
YS92YXIvZGF0YVByaXYuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1
ZXJ5L3NyYy9kYXRhL3Zhci9kYXRhUHJpdi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YmY1MzdiMTA3MmY4MWYz
NTljZmNiY2FmODk3OTI2ODQ3MWNkNWViCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
YmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvZGF0YS92YXIvZGF0YVByaXYuanMKQEAg
LTAsMCArMSw3IEBACitkZWZpbmUoIFsKKyAgICAiLi4vRGF0YSIKK10sIGZ1bmN0aW9uKCBEYXRh
ICkgeworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHJldHVybiBuZXcgRGF0YSgpOworfSApOwpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMv
ZGF0YS92YXIvZGF0YVVzZXIuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMv
anF1ZXJ5L3NyYy9kYXRhL3Zhci9kYXRhVXNlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YmY1MzdiMTA3MmY4
MWYzNTljZmNiY2FmODk3OTI2ODQ3MWNkNWViCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvZGF0YS92YXIvZGF0YVVzZXIuanMK
QEAgLTAsMCArMSw3IEBACitkZWZpbmUoIFsKKyAgICAiLi4vRGF0YSIKK10sIGZ1bmN0aW9uKCBE
YXRhICkgeworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHJldHVybiBuZXcgRGF0YSgpOworfSAp
OwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9z
cmMvZGVmZXJyZWQuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5
L3NyYy9kZWZlcnJlZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lODRmNDgwYzE0NWJkMDRkMzJjNTUzNmQ4YWMz
ZDczYmM2ZDUxZDE5Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9k
ZV9tb2R1bGVzL2pxdWVyeS9zcmMvZGVmZXJyZWQuanMKQEAgLTAsMCArMSwzODkgQEAKK2RlZmlu
ZSggWworICAgICIuL2NvcmUiLAorICAgICIuL3Zhci9zbGljZSIsCisgICAgIi4vY2FsbGJhY2tz
IgorXSwgZnVuY3Rpb24oIGpRdWVyeSwgc2xpY2UgKSB7CisKKyJ1c2Ugc3RyaWN0IjsKKworZnVu
Y3Rpb24gSWRlbnRpdHkoIHYgKSB7CisgICAgcmV0dXJuIHY7Cit9CitmdW5jdGlvbiBUaHJvd2Vy
KCBleCApIHsKKyAgICB0aHJvdyBleDsKK30KKworZnVuY3Rpb24gYWRvcHRWYWx1ZSggdmFsdWUs
IHJlc29sdmUsIHJlamVjdCApIHsKKyAgICB2YXIgbWV0aG9kOworCisgICAgdHJ5IHsKKworICAg
ICAgICAvLyBDaGVjayBmb3IgcHJvbWlzZSBhc3BlY3QgZmlyc3QgdG8gcHJpdmlsZWdlIHN5bmNo
cm9ub3VzIGJlaGF2aW9yCisgICAgICAgIGlmICggdmFsdWUgJiYgalF1ZXJ5LmlzRnVuY3Rpb24o
ICggbWV0aG9kID0gdmFsdWUucHJvbWlzZSApICkgKSB7CisgICAgICAgICAgICBtZXRob2QuY2Fs
bCggdmFsdWUgKS5kb25lKCByZXNvbHZlICkuZmFpbCggcmVqZWN0ICk7CisKKyAgICAgICAgLy8g
T3RoZXIgdGhlbmFibGVzCisgICAgICAgIH0gZWxzZSBpZiAoIHZhbHVlICYmIGpRdWVyeS5pc0Z1
bmN0aW9uKCAoIG1ldGhvZCA9IHZhbHVlLnRoZW4gKSApICkgeworICAgICAgICAgICAgbWV0aG9k
LmNhbGwoIHZhbHVlLCByZXNvbHZlLCByZWplY3QgKTsKKworICAgICAgICAvLyBPdGhlciBub24t
dGhlbmFibGVzCisgICAgICAgIH0gZWxzZSB7CisKKyAgICAgICAgICAgIC8vIFN1cHBvcnQ6IEFu
ZHJvaWQgNC4wIG9ubHkKKyAgICAgICAgICAgIC8vIFN0cmljdCBtb2RlIGZ1bmN0aW9ucyBpbnZv
a2VkIHdpdGhvdXQgLmNhbGwvLmFwcGx5IGdldCBnbG9iYWwtb2JqZWN0IGNvbnRleHQKKyAgICAg
ICAgICAgIHJlc29sdmUuY2FsbCggdW5kZWZpbmVkLCB2YWx1ZSApOworICAgICAgICB9CisKKyAg
ICAvLyBGb3IgUHJvbWlzZXMvQSssIGNvbnZlcnQgZXhjZXB0aW9ucyBpbnRvIHJlamVjdGlvbnMK
KyAgICAvLyBTaW5jZSBqUXVlcnkud2hlbiBkb2Vzbid0IHVud3JhcCB0aGVuYWJsZXMsIHdlIGNh
biBza2lwIHRoZSBleHRyYSBjaGVja3MgYXBwZWFyaW5nIGluCisgICAgLy8gRGVmZXJyZWQjdGhl
biB0byBjb25kaXRpb25hbGx5IHN1cHByZXNzIHJlamVjdGlvbi4KKyAgICB9IGNhdGNoICggdmFs
dWUgKSB7CisKKyAgICAgICAgLy8gU3VwcG9ydDogQW5kcm9pZCA0LjAgb25seQorICAgICAgICAv
LyBTdHJpY3QgbW9kZSBmdW5jdGlvbnMgaW52b2tlZCB3aXRob3V0IC5jYWxsLy5hcHBseSBnZXQg
Z2xvYmFsLW9iamVjdCBjb250ZXh0CisgICAgICAgIHJlamVjdC5jYWxsKCB1bmRlZmluZWQsIHZh
bHVlICk7CisgICAgfQorfQorCitqUXVlcnkuZXh0ZW5kKCB7CisKKyAgICBEZWZlcnJlZDogZnVu
Y3Rpb24oIGZ1bmMgKSB7CisgICAgICAgIHZhciB0dXBsZXMgPSBbCisKKyAgICAgICAgICAgICAg
ICAvLyBhY3Rpb24sIGFkZCBsaXN0ZW5lciwgY2FsbGJhY2tzLAorICAgICAgICAgICAgICAgIC8v
IC4uLiAudGhlbiBoYW5kbGVycywgYXJndW1lbnQgaW5kZXgsIFtmaW5hbCBzdGF0ZV0KKyAgICAg
ICAgICAgICAgICBbICJub3RpZnkiLCAicHJvZ3Jlc3MiLCBqUXVlcnkuQ2FsbGJhY2tzKCAibWVt
b3J5IiApLAorICAgICAgICAgICAgICAgICAgICBqUXVlcnkuQ2FsbGJhY2tzKCAibWVtb3J5IiAp
LCAyIF0sCisgICAgICAgICAgICAgICAgWyAicmVzb2x2ZSIsICJkb25lIiwgalF1ZXJ5LkNhbGxi
YWNrcyggIm9uY2UgbWVtb3J5IiApLAorICAgICAgICAgICAgICAgICAgICBqUXVlcnkuQ2FsbGJh
Y2tzKCAib25jZSBtZW1vcnkiICksIDAsICJyZXNvbHZlZCIgXSwKKyAgICAgICAgICAgICAgICBb
ICJyZWplY3QiLCAiZmFpbCIsIGpRdWVyeS5DYWxsYmFja3MoICJvbmNlIG1lbW9yeSIgKSwKKyAg
ICAgICAgICAgICAgICAgICAgalF1ZXJ5LkNhbGxiYWNrcyggIm9uY2UgbWVtb3J5IiApLCAxLCAi
cmVqZWN0ZWQiIF0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICBzdGF0ZSA9ICJwZW5kaW5n
IiwKKyAgICAgICAgICAgIHByb21pc2UgPSB7CisgICAgICAgICAgICAgICAgc3RhdGU6IGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGU7CisgICAgICAgICAgICAg
ICAgfSwKKyAgICAgICAgICAgICAgICBhbHdheXM6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
ICAgICAgICBkZWZlcnJlZC5kb25lKCBhcmd1bWVudHMgKS5mYWlsKCBhcmd1bWVudHMgKTsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgICAgICAiY2F0Y2giOiBmdW5jdGlvbiggZm4gKSB7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBwcm9taXNlLnRoZW4oIG51bGwsIGZuICk7CisgICAgICAgICAgICAgICAgfSwKKwor
ICAgICAgICAgICAgICAgIC8vIEtlZXAgcGlwZSBmb3IgYmFjay1jb21wYXQKKyAgICAgICAgICAg
ICAgICBwaXBlOiBmdW5jdGlvbiggLyogZm5Eb25lLCBmbkZhaWwsIGZuUHJvZ3Jlc3MgKi8gKSB7
CisgICAgICAgICAgICAgICAgICAgIHZhciBmbnMgPSBhcmd1bWVudHM7CisKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGpRdWVyeS5EZWZlcnJlZCggZnVuY3Rpb24oIG5ld0RlZmVyICkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmVhY2goIHR1cGxlcywgZnVuY3Rpb24oIGks
IHR1cGxlICkgeworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTWFwIHR1cGxlcyAo
cHJvZ3Jlc3MsIGRvbmUsIGZhaWwpIHRvIGFyZ3VtZW50cyAoZG9uZSwgZmFpbCwgcHJvZ3Jlc3Mp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGZuID0galF1ZXJ5LmlzRnVuY3Rpb24o
IGZuc1sgdHVwbGVbIDQgXSBdICkgJiYgZm5zWyB0dXBsZVsgNCBdIF07CisKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBkZWZlcnJlZC5wcm9ncmVzcyhmdW5jdGlvbigpIHsgYmluZCB0
byBuZXdEZWZlciBvciBuZXdEZWZlci5ub3RpZnkgfSkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBkZWZlcnJlZC5kb25lKGZ1bmN0aW9uKCkgeyBiaW5kIHRvIG5ld0RlZmVyIG9yIG5l
d0RlZmVyLnJlc29sdmUgfSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkZWZlcnJl
ZC5mYWlsKGZ1bmN0aW9uKCkgeyBiaW5kIHRvIG5ld0RlZmVyIG9yIG5ld0RlZmVyLnJlamVjdCB9
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkWyB0dXBsZVsgMSBdIF0oIGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmV0dXJuZWQg
PSBmbiAmJiBmbi5hcHBseSggdGhpcywgYXJndW1lbnRzICk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICggcmV0dXJuZWQgJiYgalF1ZXJ5LmlzRnVuY3Rpb24oIHJldHVybmVk
LnByb21pc2UgKSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
bmVkLnByb21pc2UoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5w
cm9ncmVzcyggbmV3RGVmZXIubm90aWZ5ICkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAuZG9uZSggbmV3RGVmZXIucmVzb2x2ZSApCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLmZhaWwoIG5ld0RlZmVyLnJlamVjdCApOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbmV3RGVmZXJbIHR1cGxlWyAwIF0gKyAiV2l0aCIgXSgKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZuID8gWyByZXR1cm5lZCBdIDogYXJndW1lbnRzCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApOworICAgICAgICAgICAg
ICAgICAgICAgICAgfSApOworICAgICAgICAgICAgICAgICAgICAgICAgZm5zID0gbnVsbDsKKyAg
ICAgICAgICAgICAgICAgICAgfSApLnByb21pc2UoKTsKKyAgICAgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgICAgIHRoZW46IGZ1bmN0aW9uKCBvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCwgb25Q
cm9ncmVzcyApIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIG1heERlcHRoID0gMDsKKyAgICAg
ICAgICAgICAgICAgICAgZnVuY3Rpb24gcmVzb2x2ZSggZGVwdGgsIGRlZmVycmVkLCBoYW5kbGVy
LCBzcGVjaWFsICkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0aGF0ID0gdGhpcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYXJncyA9IGFyZ3VtZW50cywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbWlnaHRUaHJvdyA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJldHVybmVkLCB0aGVuOworCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTdXBwb3J0OiBQcm9taXNlcy9BKyBzZWN0aW9u
IDIuMy4zLjMuMworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaHR0cHM6
Ly9wcm9taXNlc2FwbHVzLmNvbS8jcG9pbnQtNTkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIElnbm9yZSBkb3VibGUtcmVzb2x1dGlvbiBhdHRlbXB0cworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBkZXB0aCA8IG1heERlcHRoICkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuZWQgPSBoYW5kbGVyLmFwcGx5KCB0aGF0LCBhcmdzICk7CisKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6IFByb21pc2VzL0ErIHNl
Y3Rpb24gMi4zLjEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGh0dHBz
Oi8vcHJvbWlzZXNhcGx1cy5jb20vI3BvaW50LTQ4CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoIHJldHVybmVkID09PSBkZWZlcnJlZC5wcm9taXNlKCkgKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigg
IlRoZW5hYmxlIHNlbGYtcmVzb2x1dGlvbiIgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3Vw
cG9ydDogUHJvbWlzZXMvQSsgc2VjdGlvbnMgMi4zLjMuMSwgMy41CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBodHRwczovL3Byb21pc2VzYXBsdXMuY29tLyNwb2ludC01
NAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9wcm9taXNl
c2FwbHVzLmNvbS8jcG9pbnQtNzUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIFJldHJpZXZlIGB0aGVuYCBvbmx5IG9uY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRoZW4gPSByZXR1cm5lZCAmJgorCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gU3VwcG9ydDogUHJvbWlzZXMvQSsgc2VjdGlvbiAyLjMuNAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vcHJvbWlzZXNh
cGx1cy5jb20vI3BvaW50LTY0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gT25seSBjaGVjayBvYmplY3RzIGFuZCBmdW5jdGlvbnMgZm9yIHRoZW5hYmlsaXR5Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB0eXBlb2YgcmV0dXJuZWQg
PT09ICJvYmplY3QiIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHR5cGVvZiByZXR1cm5lZCA9PT0gImZ1bmN0aW9uIiApICYmCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuZWQudGhlbjsKKworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gSGFuZGxlIGEgcmV0dXJuZWQgdGhlbmFibGUKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIHRo
ZW4gKSApIHsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNw
ZWNpYWwgcHJvY2Vzc29ycyAobm90aWZ5KSBqdXN0IHdhaXQgZm9yIHJlc29sdXRpb24KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHNwZWNpYWwgKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4uY2FsbCgKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybmVkLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSggbWF4
RGVwdGgsIGRlZmVycmVkLCBJZGVudGl0eSwgc3BlY2lhbCApLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSggbWF4RGVwdGgsIGRlZmVycmVk
LCBUaHJvd2VyLCBzcGVjaWFsICkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IE5vcm1hbCBwcm9jZXNzb3JzIChyZXNvbHZlKSBhbHNvIGhvb2sgaW50byBwcm9ncmVzcworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLi4uYW5kIGRpc3JlZ2FyZCBv
bGRlciByZXNvbHV0aW9uIHZhbHVlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtYXhEZXB0aCsrOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRoZW4uY2FsbCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybmVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVzb2x2ZSggbWF4RGVwdGgsIGRlZmVycmVkLCBJZGVudGl0eSwg
c3BlY2lhbCApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVzb2x2ZSggbWF4RGVwdGgsIGRlZmVycmVkLCBUaHJvd2VyLCBzcGVjaWFsICksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCBtYXhE
ZXB0aCwgZGVmZXJyZWQsIElkZW50aXR5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLm5vdGlmeVdpdGggKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gSGFuZGxlIGFsbCBvdGhlciByZXR1cm5lZCB2YWx1ZXMKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBPbmx5IHN1YnN0aXR1dGUgaGFuZGxlcnMgcGFzcyBvbiBjb250ZXh0
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIG11bHRpcGxl
IHZhbHVlcyAobm9uLXNwZWMgYmVoYXZpb3IpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCBoYW5kbGVyICE9PSBJZGVudGl0eSApIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCA9IHVuZGVmaW5lZDsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncyA9IFsgcmV0dXJuZWQgXTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBQcm9jZXNzIHRoZSB2YWx1ZShzKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERlZmF1bHQgcHJvY2VzcyBp
cyByZXNvbHZlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBzcGVj
aWFsIHx8IGRlZmVycmVkLnJlc29sdmVXaXRoICkoIHRoYXQsIGFyZ3MgKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfSwKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBPbmx5IG5vcm1hbCBw
cm9jZXNzb3JzIChyZXNvbHZlKSBjYXRjaCBhbmQgcmVqZWN0IGV4Y2VwdGlvbnMKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2VzcyA9IHNwZWNpYWwgPworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbWlnaHRUaHJvdyA6CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtaWdodFRocm93KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfSBjYXRjaCAoIGUgKSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCBqUXVlcnkuRGVmZXJyZWQuZXhjZXB0aW9uSG9vayApIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5EZWZlcnJl
ZC5leGNlcHRpb25Ib29rKCBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHByb2Nlc3Muc3RhY2tUcmFjZSApOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gU3VwcG9ydDogUHJvbWlzZXMvQSsgc2VjdGlvbiAyLjMuMy4z
LjQuMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBodHRw
czovL3Byb21pc2VzYXBsdXMuY29tLyNwb2ludC02MQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBJZ25vcmUgcG9zdC1yZXNvbHV0aW9uIGV4Y2VwdGlvbnMK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBkZXB0aCAr
IDEgPj0gbWF4RGVwdGggKSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIE9ubHkgc3Vic3RpdHV0ZSBoYW5kbGVycyBwYXNzIG9uIGNvbnRleHQK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBt
dWx0aXBsZSB2YWx1ZXMgKG5vbi1zcGVjIGJlaGF2aW9yKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBoYW5kbGVyICE9PSBUaHJvd2VyICkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQg
PSB1bmRlZmluZWQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYXJncyA9IFsgZSBdOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkZWZlcnJlZC5yZWplY3RXaXRoKCB0aGF0LCBhcmdzICk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9OworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3VwcG9ydDogUHJvbWlzZXMv
QSsgc2VjdGlvbiAyLjMuMy4zLjEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBodHRw
czovL3Byb21pc2VzYXBsdXMuY29tLyNwb2ludC01NworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIFJlLXJlc29sdmUgcHJvbWlzZXMgaW1tZWRpYXRlbHkgdG8gZG9kZ2UgZmFsc2UgcmVq
ZWN0aW9uIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdWJzZXF1ZW50IGVy
cm9ycworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggZGVwdGggKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3MoKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UgeworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENh
bGwgYW4gb3B0aW9uYWwgaG9vayB0byByZWNvcmQgdGhlIHN0YWNrLCBpbiBjYXNlIG9mIGV4Y2Vw
dGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzaW5jZSBpdCdzIG90aGVy
d2lzZSBsb3N0IHdoZW4gZXhlY3V0aW9uIGdvZXMgYXN5bmMKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCBqUXVlcnkuRGVmZXJyZWQuZ2V0U3RhY2tIb29rICkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzcy5zdGFja1RyYWNlID0galF1ZXJ5
LkRlZmVycmVkLmdldFN0YWNrSG9vaygpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCBw
cm9jZXNzICk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBqUXVlcnkuRGVmZXJyZWQoIGZ1bmN0aW9uKCBuZXdEZWZlciApIHsKKworICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gcHJvZ3Jlc3NfaGFuZGxlcnMuYWRkKCAuLi4gKQorICAgICAg
ICAgICAgICAgICAgICAgICAgdHVwbGVzWyAwIF1bIDMgXS5hZGQoCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVzb2x2ZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3RGVmZXIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGpRdWVyeS5pc0Z1bmN0aW9uKCBvblByb2dyZXNzICkgPworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Qcm9ncmVzcyA6CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBJZGVudGl0eSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbmV3RGVmZXIubm90aWZ5V2l0aAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICkKKyAgICAgICAgICAgICAgICAgICAgICAgICk7CisKKyAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIGZ1bGZpbGxlZF9oYW5kbGVycy5hZGQoIC4uLiApCisgICAgICAgICAgICAgICAgICAg
ICAgICB0dXBsZXNbIDEgXVsgMyBdLmFkZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXNvbHZlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBuZXdEZWZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgalF1ZXJ5LmlzRnVuY3Rpb24oIG9uRnVsZmlsbGVkICkgPworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb25GdWxmaWxsZWQgOgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgSWRlbnRpdHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisg
ICAgICAgICAgICAgICAgICAgICAgICApOworCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBy
ZWplY3RlZF9oYW5kbGVycy5hZGQoIC4uLiApCisgICAgICAgICAgICAgICAgICAgICAgICB0dXBs
ZXNbIDIgXVsgMyBdLmFkZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBuZXdEZWZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1
ZXJ5LmlzRnVuY3Rpb24oIG9uUmVqZWN0ZWQgKSA/CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBvblJlamVjdGVkIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFRocm93ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAg
ICAgICAgICAgICApOworICAgICAgICAgICAgICAgICAgICB9ICkucHJvbWlzZSgpOworICAgICAg
ICAgICAgICAgIH0sCisKKyAgICAgICAgICAgICAgICAvLyBHZXQgYSBwcm9taXNlIGZvciB0aGlz
IGRlZmVycmVkCisgICAgICAgICAgICAgICAgLy8gSWYgb2JqIGlzIHByb3ZpZGVkLCB0aGUgcHJv
bWlzZSBhc3BlY3QgaXMgYWRkZWQgdG8gdGhlIG9iamVjdAorICAgICAgICAgICAgICAgIHByb21p
c2U6IGZ1bmN0aW9uKCBvYmogKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBvYmogIT0g
bnVsbCA/IGpRdWVyeS5leHRlbmQoIG9iaiwgcHJvbWlzZSApIDogcHJvbWlzZTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgZGVmZXJyZWQgPSB7fTsKKwor
ICAgICAgICAvLyBBZGQgbGlzdC1zcGVjaWZpYyBtZXRob2RzCisgICAgICAgIGpRdWVyeS5lYWNo
KCB0dXBsZXMsIGZ1bmN0aW9uKCBpLCB0dXBsZSApIHsKKyAgICAgICAgICAgIHZhciBsaXN0ID0g
dHVwbGVbIDIgXSwKKyAgICAgICAgICAgICAgICBzdGF0ZVN0cmluZyA9IHR1cGxlWyA1IF07CisK
KyAgICAgICAgICAgIC8vIHByb21pc2UucHJvZ3Jlc3MgPSBsaXN0LmFkZAorICAgICAgICAgICAg
Ly8gcHJvbWlzZS5kb25lID0gbGlzdC5hZGQKKyAgICAgICAgICAgIC8vIHByb21pc2UuZmFpbCA9
IGxpc3QuYWRkCisgICAgICAgICAgICBwcm9taXNlWyB0dXBsZVsgMSBdIF0gPSBsaXN0LmFkZDsK
KworICAgICAgICAgICAgLy8gSGFuZGxlIHN0YXRlCisgICAgICAgICAgICBpZiAoIHN0YXRlU3Ry
aW5nICkgeworICAgICAgICAgICAgICAgIGxpc3QuYWRkKAorICAgICAgICAgICAgICAgICAgICBm
dW5jdGlvbigpIHsKKworICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhdGUgPSAicmVzb2x2
ZWQiIChpLmUuLCBmdWxmaWxsZWQpCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGF0ZSA9
ICJyZWplY3RlZCIKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gc3RhdGVTdHJpbmc7
CisgICAgICAgICAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgICAgICAgICAgLy8gcmVqZWN0
ZWRfY2FsbGJhY2tzLmRpc2FibGUKKyAgICAgICAgICAgICAgICAgICAgLy8gZnVsZmlsbGVkX2Nh
bGxiYWNrcy5kaXNhYmxlCisgICAgICAgICAgICAgICAgICAgIHR1cGxlc1sgMyAtIGkgXVsgMiBd
LmRpc2FibGUsCisKKyAgICAgICAgICAgICAgICAgICAgLy8gcHJvZ3Jlc3NfY2FsbGJhY2tzLmxv
Y2sKKyAgICAgICAgICAgICAgICAgICAgdHVwbGVzWyAwIF1bIDIgXS5sb2NrCisgICAgICAgICAg
ICAgICAgKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gcHJvZ3Jlc3NfaGFuZGxl
cnMuZmlyZQorICAgICAgICAgICAgLy8gZnVsZmlsbGVkX2hhbmRsZXJzLmZpcmUKKyAgICAgICAg
ICAgIC8vIHJlamVjdGVkX2hhbmRsZXJzLmZpcmUKKyAgICAgICAgICAgIGxpc3QuYWRkKCB0dXBs
ZVsgMyBdLmZpcmUgKTsKKworICAgICAgICAgICAgLy8gZGVmZXJyZWQubm90aWZ5ID0gZnVuY3Rp
b24oKSB7IGRlZmVycmVkLm5vdGlmeVdpdGgoLi4uKSB9CisgICAgICAgICAgICAvLyBkZWZlcnJl
ZC5yZXNvbHZlID0gZnVuY3Rpb24oKSB7IGRlZmVycmVkLnJlc29sdmVXaXRoKC4uLikgfQorICAg
ICAgICAgICAgLy8gZGVmZXJyZWQucmVqZWN0ID0gZnVuY3Rpb24oKSB7IGRlZmVycmVkLnJlamVj
dFdpdGgoLi4uKSB9CisgICAgICAgICAgICBkZWZlcnJlZFsgdHVwbGVbIDAgXSBdID0gZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICAgICAgZGVmZXJyZWRbIHR1cGxlWyAwIF0gKyAiV2l0aCIgXSgg
dGhpcyA9PT0gZGVmZXJyZWQgPyB1bmRlZmluZWQgOiB0aGlzLCBhcmd1bWVudHMgKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIC8v
IGRlZmVycmVkLm5vdGlmeVdpdGggPSBsaXN0LmZpcmVXaXRoCisgICAgICAgICAgICAvLyBkZWZl
cnJlZC5yZXNvbHZlV2l0aCA9IGxpc3QuZmlyZVdpdGgKKyAgICAgICAgICAgIC8vIGRlZmVycmVk
LnJlamVjdFdpdGggPSBsaXN0LmZpcmVXaXRoCisgICAgICAgICAgICBkZWZlcnJlZFsgdHVwbGVb
IDAgXSArICJXaXRoIiBdID0gbGlzdC5maXJlV2l0aDsKKyAgICAgICAgfSApOworCisgICAgICAg
IC8vIE1ha2UgdGhlIGRlZmVycmVkIGEgcHJvbWlzZQorICAgICAgICBwcm9taXNlLnByb21pc2Uo
IGRlZmVycmVkICk7CisKKyAgICAgICAgLy8gQ2FsbCBnaXZlbiBmdW5jIGlmIGFueQorICAgICAg
ICBpZiAoIGZ1bmMgKSB7CisgICAgICAgICAgICBmdW5jLmNhbGwoIGRlZmVycmVkLCBkZWZlcnJl
ZCApOworICAgICAgICB9CisKKyAgICAgICAgLy8gQWxsIGRvbmUhCisgICAgICAgIHJldHVybiBk
ZWZlcnJlZDsKKyAgICB9LAorCisgICAgLy8gRGVmZXJyZWQgaGVscGVyCisgICAgd2hlbjogZnVu
Y3Rpb24oIHNpbmdsZVZhbHVlICkgeworICAgICAgICB2YXIKKworICAgICAgICAgICAgLy8gY291
bnQgb2YgdW5jb21wbGV0ZWQgc3Vib3JkaW5hdGVzCisgICAgICAgICAgICByZW1haW5pbmcgPSBh
cmd1bWVudHMubGVuZ3RoLAorCisgICAgICAgICAgICAvLyBjb3VudCBvZiB1bnByb2Nlc3NlZCBh
cmd1bWVudHMKKyAgICAgICAgICAgIGkgPSByZW1haW5pbmcsCisKKyAgICAgICAgICAgIC8vIHN1
Ym9yZGluYXRlIGZ1bGZpbGxtZW50IGRhdGEKKyAgICAgICAgICAgIHJlc29sdmVDb250ZXh0cyA9
IEFycmF5KCBpICksCisgICAgICAgICAgICByZXNvbHZlVmFsdWVzID0gc2xpY2UuY2FsbCggYXJn
dW1lbnRzICksCisKKyAgICAgICAgICAgIC8vIHRoZSBtYXN0ZXIgRGVmZXJyZWQKKyAgICAgICAg
ICAgIG1hc3RlciA9IGpRdWVyeS5EZWZlcnJlZCgpLAorCisgICAgICAgICAgICAvLyBzdWJvcmRp
bmF0ZSBjYWxsYmFjayBmYWN0b3J5CisgICAgICAgICAgICB1cGRhdGVGdW5jID0gZnVuY3Rpb24o
IGkgKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCB2YWx1ZSApIHsKKyAgICAg
ICAgICAgICAgICAgICAgcmVzb2x2ZUNvbnRleHRzWyBpIF0gPSB0aGlzOworICAgICAgICAgICAg
ICAgICAgICByZXNvbHZlVmFsdWVzWyBpIF0gPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IHNsaWNl
LmNhbGwoIGFyZ3VtZW50cyApIDogdmFsdWU7CisgICAgICAgICAgICAgICAgICAgIGlmICggISgg
LS1yZW1haW5pbmcgKSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hc3Rlci5yZXNvbHZl
V2l0aCggcmVzb2x2ZUNvbnRleHRzLCByZXNvbHZlVmFsdWVzICk7CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgfTsKKworICAgICAgICAvLyBT
aW5nbGUtIGFuZCBlbXB0eSBhcmd1bWVudHMgYXJlIGFkb3B0ZWQgbGlrZSBQcm9taXNlLnJlc29s
dmUKKyAgICAgICAgaWYgKCByZW1haW5pbmcgPD0gMSApIHsKKyAgICAgICAgICAgIGFkb3B0VmFs
dWUoIHNpbmdsZVZhbHVlLCBtYXN0ZXIuZG9uZSggdXBkYXRlRnVuYyggaSApICkucmVzb2x2ZSwg
bWFzdGVyLnJlamVjdCApOworCisgICAgICAgICAgICAvLyBVc2UgLnRoZW4oKSB0byB1bndyYXAg
c2Vjb25kYXJ5IHRoZW5hYmxlcyAoY2YuIGdoLTMwMDApCisgICAgICAgICAgICBpZiAoIG1hc3Rl
ci5zdGF0ZSgpID09PSAicGVuZGluZyIgfHwKKyAgICAgICAgICAgICAgICBqUXVlcnkuaXNGdW5j
dGlvbiggcmVzb2x2ZVZhbHVlc1sgaSBdICYmIHJlc29sdmVWYWx1ZXNbIGkgXS50aGVuICkgKSB7
CisKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFzdGVyLnRoZW4oKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorCisgICAgICAgIC8vIE11bHRpcGxlIGFyZ3VtZW50cyBhcmUgYWdncmVnYXRl
ZCBsaWtlIFByb21pc2UuYWxsIGFycmF5IGVsZW1lbnRzCisgICAgICAgIHdoaWxlICggaS0tICkg
eworICAgICAgICAgICAgYWRvcHRWYWx1ZSggcmVzb2x2ZVZhbHVlc1sgaSBdLCB1cGRhdGVGdW5j
KCBpICksIG1hc3Rlci5yZWplY3QgKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBtYXN0
ZXIucHJvbWlzZSgpOworICAgIH0KK30gKTsKKworcmV0dXJuIGpRdWVyeTsKK30gKTsKZGlmZiAt
LWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2RlZmVy
cmVkL2V4Y2VwdGlvbkhvb2suanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMv
anF1ZXJ5L3NyYy9kZWZlcnJlZC9leGNlcHRpb25Ib29rLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhMWIzODY2
ZjMxM2Y3Mjk5ZTRjZDFmYzhiMDRjMmE2ZGVkNDFmMzgKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9kZWZlcnJlZC9leGNlcHRp
b25Ib29rLmpzCkBAIC0wLDAgKzEsMjEgQEAKK2RlZmluZSggWworICAgICIuLi9jb3JlIiwKKyAg
ICAiLi4vZGVmZXJyZWQiCitdLCBmdW5jdGlvbiggalF1ZXJ5ICkgeworCisidXNlIHN0cmljdCI7
CisKKy8vIFRoZXNlIHVzdWFsbHkgaW5kaWNhdGUgYSBwcm9ncmFtbWVyIG1pc3Rha2UgZHVyaW5n
IGRldmVsb3BtZW50LAorLy8gd2FybiBhYm91dCB0aGVtIEFTQVAgcmF0aGVyIHRoYW4gc3dhbGxv
d2luZyB0aGVtIGJ5IGRlZmF1bHQuCit2YXIgcmVycm9yTmFtZXMgPSAvXihFdmFsfEludGVybmFs
fFJhbmdlfFJlZmVyZW5jZXxTeW50YXh8VHlwZXxVUkkpRXJyb3IkLzsKKworalF1ZXJ5LkRlZmVy
cmVkLmV4Y2VwdGlvbkhvb2sgPSBmdW5jdGlvbiggZXJyb3IsIHN0YWNrICkgeworCisgICAgLy8g
U3VwcG9ydDogSUUgOCAtIDkgb25seQorICAgIC8vIENvbnNvbGUgZXhpc3RzIHdoZW4gZGV2IHRv
b2xzIGFyZSBvcGVuLCB3aGljaCBjYW4gaGFwcGVuIGF0IGFueSB0aW1lCisgICAgaWYgKCB3aW5k
b3cuY29uc29sZSAmJiB3aW5kb3cuY29uc29sZS53YXJuICYmIGVycm9yICYmIHJlcnJvck5hbWVz
LnRlc3QoIGVycm9yLm5hbWUgKSApIHsKKyAgICAgICAgd2luZG93LmNvbnNvbGUud2FybiggImpR
dWVyeS5EZWZlcnJlZCBleGNlcHRpb246ICIgKyBlcnJvci5tZXNzYWdlLCBlcnJvci5zdGFjaywg
c3RhY2sgKTsKKyAgICB9Cit9OworCit9ICk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNr
Ym9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9kZXByZWNhdGVkLmpzIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
YmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvZGVwcmVjYXRlZC5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wN2FkODA1ZThiZDUzZjU1MWM1YjY4NDQ1M2I0ZjNlMjI2ODUxYjA1Ci0tLSAvZGV2L251bGwK
KysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvZGVwcmVj
YXRlZC5qcwpAQCAtMCwwICsxLDMwIEBACitkZWZpbmUoIFsKKyAgICAiLi9jb3JlIgorXSwgZnVu
Y3Rpb24oIGpRdWVyeSApIHsKKworInVzZSBzdHJpY3QiOworCitqUXVlcnkuZm4uZXh0ZW5kKCB7
CisKKyAgICBiaW5kOiBmdW5jdGlvbiggdHlwZXMsIGRhdGEsIGZuICkgeworICAgICAgICByZXR1
cm4gdGhpcy5vbiggdHlwZXMsIG51bGwsIGRhdGEsIGZuICk7CisgICAgfSwKKyAgICB1bmJpbmQ6
IGZ1bmN0aW9uKCB0eXBlcywgZm4gKSB7CisgICAgICAgIHJldHVybiB0aGlzLm9mZiggdHlwZXMs
IG51bGwsIGZuICk7CisgICAgfSwKKworICAgIGRlbGVnYXRlOiBmdW5jdGlvbiggc2VsZWN0b3Is
IHR5cGVzLCBkYXRhLCBmbiApIHsKKyAgICAgICAgcmV0dXJuIHRoaXMub24oIHR5cGVzLCBzZWxl
Y3RvciwgZGF0YSwgZm4gKTsKKyAgICB9LAorICAgIHVuZGVsZWdhdGU6IGZ1bmN0aW9uKCBzZWxl
Y3RvciwgdHlwZXMsIGZuICkgeworCisgICAgICAgIC8vICggbmFtZXNwYWNlICkgb3IgKCBzZWxl
Y3RvciwgdHlwZXMgWywgZm5dICkKKyAgICAgICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPT09
IDEgPworICAgICAgICAgICAgdGhpcy5vZmYoIHNlbGVjdG9yLCAiKioiICkgOgorICAgICAgICAg
ICAgdGhpcy5vZmYoIHR5cGVzLCBzZWxlY3RvciB8fCAiKioiLCBmbiApOworICAgIH0KK30gKTsK
KworalF1ZXJ5LnBhcnNlSlNPTiA9IEpTT04ucGFyc2U7CisKK30gKTsKZGlmZiAtLWdpdCBhL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2RpbWVuc2lvbnMuanMg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9kaW1lbnNpb25z
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjdjMmM4NzFlYWIwYWQ5M2I4MTU4ZGM3NjBkZDBlNDY3MWM3ZTE2NzEK
LS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1
ZXJ5L3NyYy9kaW1lbnNpb25zLmpzCkBAIC0wLDAgKzEsNTYgQEAKK2RlZmluZSggWworICAgICIu
L2NvcmUiLAorICAgICIuL2NvcmUvYWNjZXNzIiwKKyAgICAiLi9jc3MiCitdLCBmdW5jdGlvbigg
alF1ZXJ5LCBhY2Nlc3MgKSB7CisKKyJ1c2Ugc3RyaWN0IjsKKworLy8gQ3JlYXRlIGlubmVySGVp
Z2h0LCBpbm5lcldpZHRoLCBoZWlnaHQsIHdpZHRoLCBvdXRlckhlaWdodCBhbmQgb3V0ZXJXaWR0
aCBtZXRob2RzCitqUXVlcnkuZWFjaCggeyBIZWlnaHQ6ICJoZWlnaHQiLCBXaWR0aDogIndpZHRo
IiB9LCBmdW5jdGlvbiggbmFtZSwgdHlwZSApIHsKKyAgICBqUXVlcnkuZWFjaCggeyBwYWRkaW5n
OiAiaW5uZXIiICsgbmFtZSwgY29udGVudDogdHlwZSwgIiI6ICJvdXRlciIgKyBuYW1lIH0sCisg
ICAgICAgIGZ1bmN0aW9uKCBkZWZhdWx0RXh0cmEsIGZ1bmNOYW1lICkgeworCisgICAgICAgIC8v
IE1hcmdpbiBpcyBvbmx5IGZvciBvdXRlckhlaWdodCwgb3V0ZXJXaWR0aAorICAgICAgICBqUXVl
cnkuZm5bIGZ1bmNOYW1lIF0gPSBmdW5jdGlvbiggbWFyZ2luLCB2YWx1ZSApIHsKKyAgICAgICAg
ICAgIHZhciBjaGFpbmFibGUgPSBhcmd1bWVudHMubGVuZ3RoICYmICggZGVmYXVsdEV4dHJhIHx8
IHR5cGVvZiBtYXJnaW4gIT09ICJib29sZWFuIiApLAorICAgICAgICAgICAgICAgIGV4dHJhID0g
ZGVmYXVsdEV4dHJhIHx8ICggbWFyZ2luID09PSB0cnVlIHx8IHZhbHVlID09PSB0cnVlID8gIm1h
cmdpbiIgOiAiYm9yZGVyIiApOworCisgICAgICAgICAgICByZXR1cm4gYWNjZXNzKCB0aGlzLCBm
dW5jdGlvbiggZWxlbSwgdHlwZSwgdmFsdWUgKSB7CisgICAgICAgICAgICAgICAgdmFyIGRvYzsK
KworICAgICAgICAgICAgICAgIGlmICggalF1ZXJ5LmlzV2luZG93KCBlbGVtICkgKSB7CisKKyAg
ICAgICAgICAgICAgICAgICAgLy8gJCggd2luZG93ICkub3V0ZXJXaWR0aC9IZWlnaHQgcmV0dXJu
IHcvaCBpbmNsdWRpbmcgc2Nyb2xsYmFycyAoZ2gtMTcyOSkKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZ1bmNOYW1lLmluZGV4T2YoICJvdXRlciIgKSA9PT0gMCA/CisgICAgICAgICAgICAg
ICAgICAgICAgICBlbGVtWyAiaW5uZXIiICsgbmFtZSBdIDoKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGVsZW0uZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50WyAiY2xpZW50IiArIG5hbWUgXTsKKyAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBHZXQgZG9jdW1lbnQgd2lkdGgg
b3IgaGVpZ2h0CisgICAgICAgICAgICAgICAgaWYgKCBlbGVtLm5vZGVUeXBlID09PSA5ICkgewor
ICAgICAgICAgICAgICAgICAgICBkb2MgPSBlbGVtLmRvY3VtZW50RWxlbWVudDsKKworICAgICAg
ICAgICAgICAgICAgICAvLyBFaXRoZXIgc2Nyb2xsW1dpZHRoL0hlaWdodF0gb3Igb2Zmc2V0W1dp
ZHRoL0hlaWdodF0gb3IgY2xpZW50W1dpZHRoL0hlaWdodF0sCisgICAgICAgICAgICAgICAgICAg
IC8vIHdoaWNoZXZlciBpcyBncmVhdGVzdAorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTWF0
aC5tYXgoCisgICAgICAgICAgICAgICAgICAgICAgICBlbGVtLmJvZHlbICJzY3JvbGwiICsgbmFt
ZSBdLCBkb2NbICJzY3JvbGwiICsgbmFtZSBdLAorICAgICAgICAgICAgICAgICAgICAgICAgZWxl
bS5ib2R5WyAib2Zmc2V0IiArIG5hbWUgXSwgZG9jWyAib2Zmc2V0IiArIG5hbWUgXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGRvY1sgImNsaWVudCIgKyBuYW1lIF0KKyAgICAgICAgICAgICAg
ICAgICAgKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICByZXR1cm4gdmFs
dWUgPT09IHVuZGVmaW5lZCA/CisKKyAgICAgICAgICAgICAgICAgICAgLy8gR2V0IHdpZHRoIG9y
IGhlaWdodCBvbiB0aGUgZWxlbWVudCwgcmVxdWVzdGluZyBidXQgbm90IGZvcmNpbmcgcGFyc2VG
bG9hdAorICAgICAgICAgICAgICAgICAgICBqUXVlcnkuY3NzKCBlbGVtLCB0eXBlLCBleHRyYSAp
IDoKKworICAgICAgICAgICAgICAgICAgICAvLyBTZXQgd2lkdGggb3IgaGVpZ2h0IG9uIHRoZSBl
bGVtZW50CisgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5zdHlsZSggZWxlbSwgdHlwZSwgdmFs
dWUsIGV4dHJhICk7CisgICAgICAgICAgICB9LCB0eXBlLCBjaGFpbmFibGUgPyBtYXJnaW4gOiB1
bmRlZmluZWQsIGNoYWluYWJsZSApOworICAgICAgICB9OworICAgIH0gKTsKK30gKTsKKworcmV0
dXJuIGpRdWVyeTsKK30gKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVf
bW9kdWxlcy9qcXVlcnkvc3JjL2VmZmVjdHMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2Rl
X21vZHVsZXMvanF1ZXJ5L3NyYy9lZmZlY3RzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQzZjJhMDQ5MTMyZGM4
Y2Y2MmFlYThmYzU2ODJjMTEyZjJhNDQ3NGIKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9lZmZlY3RzLmpzCkBAIC0wLDAgKzEs
NjkzIEBACitkZWZpbmUoIFsKKyAgICAiLi9jb3JlIiwKKyAgICAiLi92YXIvZG9jdW1lbnQiLAor
ICAgICIuL3Zhci9yY3NzTnVtIiwKKyAgICAiLi92YXIvcm5vdGh0bWx3aGl0ZSIsCisgICAgIi4v
Y3NzL3Zhci9jc3NFeHBhbmQiLAorICAgICIuL2Nzcy92YXIvaXNIaWRkZW5XaXRoaW5UcmVlIiwK
KyAgICAiLi9jc3MvdmFyL3N3YXAiLAorICAgICIuL2Nzcy9hZGp1c3RDU1MiLAorICAgICIuL2Rh
dGEvdmFyL2RhdGFQcml2IiwKKyAgICAiLi9jc3Mvc2hvd0hpZGUiLAorCisgICAgIi4vY29yZS9p
bml0IiwKKyAgICAiLi9xdWV1ZSIsCisgICAgIi4vZGVmZXJyZWQiLAorICAgICIuL3RyYXZlcnNp
bmciLAorICAgICIuL21hbmlwdWxhdGlvbiIsCisgICAgIi4vY3NzIiwKKyAgICAiLi9lZmZlY3Rz
L1R3ZWVuIgorXSwgZnVuY3Rpb24oIGpRdWVyeSwgZG9jdW1lbnQsIHJjc3NOdW0sIHJub3RodG1s
d2hpdGUsIGNzc0V4cGFuZCwgaXNIaWRkZW5XaXRoaW5UcmVlLCBzd2FwLAorICAgIGFkanVzdENT
UywgZGF0YVByaXYsIHNob3dIaWRlICkgeworCisidXNlIHN0cmljdCI7CisKK3ZhcgorICAgIGZ4
Tm93LCB0aW1lcklkLAorICAgIHJmeHR5cGVzID0gL14oPzp0b2dnbGV8c2hvd3xoaWRlKSQvLAor
ICAgIHJydW4gPSAvcXVldWVIb29rcyQvOworCitmdW5jdGlvbiByYWYoKSB7CisgICAgaWYgKCB0
aW1lcklkICkgeworICAgICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCByYWYgKTsK
KyAgICAgICAgalF1ZXJ5LmZ4LnRpY2soKTsKKyAgICB9Cit9CisKKy8vIEFuaW1hdGlvbnMgY3Jl
YXRlZCBzeW5jaHJvbm91c2x5IHdpbGwgcnVuIHN5bmNocm9ub3VzbHkKK2Z1bmN0aW9uIGNyZWF0
ZUZ4Tm93KCkgeworICAgIHdpbmRvdy5zZXRUaW1lb3V0KCBmdW5jdGlvbigpIHsKKyAgICAgICAg
ZnhOb3cgPSB1bmRlZmluZWQ7CisgICAgfSApOworICAgIHJldHVybiAoIGZ4Tm93ID0galF1ZXJ5
Lm5vdygpICk7Cit9CisKKy8vIEdlbmVyYXRlIHBhcmFtZXRlcnMgdG8gY3JlYXRlIGEgc3RhbmRh
cmQgYW5pbWF0aW9uCitmdW5jdGlvbiBnZW5GeCggdHlwZSwgaW5jbHVkZVdpZHRoICkgeworICAg
IHZhciB3aGljaCwKKyAgICAgICAgaSA9IDAsCisgICAgICAgIGF0dHJzID0geyBoZWlnaHQ6IHR5
cGUgfTsKKworICAgIC8vIElmIHdlIGluY2x1ZGUgd2lkdGgsIHN0ZXAgdmFsdWUgaXMgMSB0byBk
byBhbGwgY3NzRXhwYW5kIHZhbHVlcywKKyAgICAvLyBvdGhlcndpc2Ugc3RlcCB2YWx1ZSBpcyAy
IHRvIHNraXAgb3ZlciBMZWZ0IGFuZCBSaWdodAorICAgIGluY2x1ZGVXaWR0aCA9IGluY2x1ZGVX
aWR0aCA/IDEgOiAwOworICAgIGZvciAoIDsgaSA8IDQ7IGkgKz0gMiAtIGluY2x1ZGVXaWR0aCAp
IHsKKyAgICAgICAgd2hpY2ggPSBjc3NFeHBhbmRbIGkgXTsKKyAgICAgICAgYXR0cnNbICJtYXJn
aW4iICsgd2hpY2ggXSA9IGF0dHJzWyAicGFkZGluZyIgKyB3aGljaCBdID0gdHlwZTsKKyAgICB9
CisKKyAgICBpZiAoIGluY2x1ZGVXaWR0aCApIHsKKyAgICAgICAgYXR0cnMub3BhY2l0eSA9IGF0
dHJzLndpZHRoID0gdHlwZTsKKyAgICB9CisKKyAgICByZXR1cm4gYXR0cnM7Cit9CisKK2Z1bmN0
aW9uIGNyZWF0ZVR3ZWVuKCB2YWx1ZSwgcHJvcCwgYW5pbWF0aW9uICkgeworICAgIHZhciB0d2Vl
biwKKyAgICAgICAgY29sbGVjdGlvbiA9ICggQW5pbWF0aW9uLnR3ZWVuZXJzWyBwcm9wIF0gfHwg
W10gKS5jb25jYXQoIEFuaW1hdGlvbi50d2VlbmVyc1sgIioiIF0gKSwKKyAgICAgICAgaW5kZXgg
PSAwLAorICAgICAgICBsZW5ndGggPSBjb2xsZWN0aW9uLmxlbmd0aDsKKyAgICBmb3IgKCA7IGlu
ZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkgeworICAgICAgICBpZiAoICggdHdlZW4gPSBjb2xsZWN0
aW9uWyBpbmRleCBdLmNhbGwoIGFuaW1hdGlvbiwgcHJvcCwgdmFsdWUgKSApICkgeworCisgICAg
ICAgICAgICAvLyBXZSdyZSBkb25lIHdpdGggdGhpcyBwcm9wZXJ0eQorICAgICAgICAgICAgcmV0
dXJuIHR3ZWVuOworICAgICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiBkZWZhdWx0UHJlZmls
dGVyKCBlbGVtLCBwcm9wcywgb3B0cyApIHsKKyAgICB2YXIgcHJvcCwgdmFsdWUsIHRvZ2dsZSwg
aG9va3MsIG9sZGZpcmUsIHByb3BUd2VlbiwgcmVzdG9yZURpc3BsYXksIGRpc3BsYXksCisgICAg
ICAgIGlzQm94ID0gIndpZHRoIiBpbiBwcm9wcyB8fCAiaGVpZ2h0IiBpbiBwcm9wcywKKyAgICAg
ICAgYW5pbSA9IHRoaXMsCisgICAgICAgIG9yaWcgPSB7fSwKKyAgICAgICAgc3R5bGUgPSBlbGVt
LnN0eWxlLAorICAgICAgICBoaWRkZW4gPSBlbGVtLm5vZGVUeXBlICYmIGlzSGlkZGVuV2l0aGlu
VHJlZSggZWxlbSApLAorICAgICAgICBkYXRhU2hvdyA9IGRhdGFQcml2LmdldCggZWxlbSwgImZ4
c2hvdyIgKTsKKworICAgIC8vIFF1ZXVlLXNraXBwaW5nIGFuaW1hdGlvbnMgaGlqYWNrIHRoZSBm
eCBob29rcworICAgIGlmICggIW9wdHMucXVldWUgKSB7CisgICAgICAgIGhvb2tzID0galF1ZXJ5
Ll9xdWV1ZUhvb2tzKCBlbGVtLCAiZngiICk7CisgICAgICAgIGlmICggaG9va3MudW5xdWV1ZWQg
PT0gbnVsbCApIHsKKyAgICAgICAgICAgIGhvb2tzLnVucXVldWVkID0gMDsKKyAgICAgICAgICAg
IG9sZGZpcmUgPSBob29rcy5lbXB0eS5maXJlOworICAgICAgICAgICAgaG9va3MuZW1wdHkuZmly
ZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGlmICggIWhvb2tzLnVucXVldWVkICkg
eworICAgICAgICAgICAgICAgICAgICBvbGRmaXJlKCk7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfTsKKyAgICAgICAgfQorICAgICAgICBob29rcy51bnF1ZXVlZCsrOworCisgICAg
ICAgIGFuaW0uYWx3YXlzKCBmdW5jdGlvbigpIHsKKworICAgICAgICAgICAgLy8gRW5zdXJlIHRo
ZSBjb21wbGV0ZSBoYW5kbGVyIGlzIGNhbGxlZCBiZWZvcmUgdGhpcyBjb21wbGV0ZXMKKyAgICAg
ICAgICAgIGFuaW0uYWx3YXlzKCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBob29rcy51
bnF1ZXVlZC0tOworICAgICAgICAgICAgICAgIGlmICggIWpRdWVyeS5xdWV1ZSggZWxlbSwgImZ4
IiApLmxlbmd0aCApIHsKKyAgICAgICAgICAgICAgICAgICAgaG9va3MuZW1wdHkuZmlyZSgpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gKTsKKyAgICAgICAgfSApOworICAgIH0K
KworICAgIC8vIERldGVjdCBzaG93L2hpZGUgYW5pbWF0aW9ucworICAgIGZvciAoIHByb3AgaW4g
cHJvcHMgKSB7CisgICAgICAgIHZhbHVlID0gcHJvcHNbIHByb3AgXTsKKyAgICAgICAgaWYgKCBy
Znh0eXBlcy50ZXN0KCB2YWx1ZSApICkgeworICAgICAgICAgICAgZGVsZXRlIHByb3BzWyBwcm9w
IF07CisgICAgICAgICAgICB0b2dnbGUgPSB0b2dnbGUgfHwgdmFsdWUgPT09ICJ0b2dnbGUiOwor
ICAgICAgICAgICAgaWYgKCB2YWx1ZSA9PT0gKCBoaWRkZW4gPyAiaGlkZSIgOiAic2hvdyIgKSAp
IHsKKworICAgICAgICAgICAgICAgIC8vIFByZXRlbmQgdG8gYmUgaGlkZGVuIGlmIHRoaXMgaXMg
YSAic2hvdyIgYW5kCisgICAgICAgICAgICAgICAgLy8gdGhlcmUgaXMgc3RpbGwgZGF0YSBmcm9t
IGEgc3RvcHBlZCBzaG93L2hpZGUKKyAgICAgICAgICAgICAgICBpZiAoIHZhbHVlID09PSAic2hv
dyIgJiYgZGF0YVNob3cgJiYgZGF0YVNob3dbIHByb3AgXSAhPT0gdW5kZWZpbmVkICkgeworICAg
ICAgICAgICAgICAgICAgICBoaWRkZW4gPSB0cnVlOworCisgICAgICAgICAgICAgICAgLy8gSWdu
b3JlIGFsbCBvdGhlciBuby1vcCBzaG93L2hpZGUgZGF0YQorICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIG9yaWdbIHByb3AgXSA9IGRhdGFTaG93ICYmIGRhdGFT
aG93WyBwcm9wIF0gfHwgalF1ZXJ5LnN0eWxlKCBlbGVtLCBwcm9wICk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICAvLyBCYWlsIG91dCBpZiB0aGlzIGlzIGEgbm8tb3AgbGlrZSAuaGlkZSgpLmhp
ZGUoKQorICAgIHByb3BUd2VlbiA9ICFqUXVlcnkuaXNFbXB0eU9iamVjdCggcHJvcHMgKTsKKyAg
ICBpZiAoICFwcm9wVHdlZW4gJiYgalF1ZXJ5LmlzRW1wdHlPYmplY3QoIG9yaWcgKSApIHsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFJlc3RyaWN0ICJvdmVyZmxvdyIgYW5kICJk
aXNwbGF5IiBzdHlsZXMgZHVyaW5nIGJveCBhbmltYXRpb25zCisgICAgaWYgKCBpc0JveCAmJiBl
bGVtLm5vZGVUeXBlID09PSAxICkgeworCisgICAgICAgIC8vIFN1cHBvcnQ6IElFIDw9OSAtIDEx
LCBFZGdlIDEyIC0gMTMKKyAgICAgICAgLy8gUmVjb3JkIGFsbCAzIG92ZXJmbG93IGF0dHJpYnV0
ZXMgYmVjYXVzZSBJRSBkb2VzIG5vdCBpbmZlciB0aGUgc2hvcnRoYW5kCisgICAgICAgIC8vIGZy
b20gaWRlbnRpY2FsbHktdmFsdWVkIG92ZXJmbG93WCBhbmQgb3ZlcmZsb3dZCisgICAgICAgIG9w
dHMub3ZlcmZsb3cgPSBbIHN0eWxlLm92ZXJmbG93LCBzdHlsZS5vdmVyZmxvd1gsIHN0eWxlLm92
ZXJmbG93WSBdOworCisgICAgICAgIC8vIElkZW50aWZ5IGEgZGlzcGxheSB0eXBlLCBwcmVmZXJy
aW5nIG9sZCBzaG93L2hpZGUgZGF0YSBvdmVyIHRoZSBDU1MgY2FzY2FkZQorICAgICAgICByZXN0
b3JlRGlzcGxheSA9IGRhdGFTaG93ICYmIGRhdGFTaG93LmRpc3BsYXk7CisgICAgICAgIGlmICgg
cmVzdG9yZURpc3BsYXkgPT0gbnVsbCApIHsKKyAgICAgICAgICAgIHJlc3RvcmVEaXNwbGF5ID0g
ZGF0YVByaXYuZ2V0KCBlbGVtLCAiZGlzcGxheSIgKTsKKyAgICAgICAgfQorICAgICAgICBkaXNw
bGF5ID0galF1ZXJ5LmNzcyggZWxlbSwgImRpc3BsYXkiICk7CisgICAgICAgIGlmICggZGlzcGxh
eSA9PT0gIm5vbmUiICkgeworICAgICAgICAgICAgaWYgKCByZXN0b3JlRGlzcGxheSApIHsKKyAg
ICAgICAgICAgICAgICBkaXNwbGF5ID0gcmVzdG9yZURpc3BsYXk7CisgICAgICAgICAgICB9IGVs
c2UgeworCisgICAgICAgICAgICAgICAgLy8gR2V0IG5vbmVtcHR5IHZhbHVlKHMpIGJ5IHRlbXBv
cmFyaWx5IGZvcmNpbmcgdmlzaWJpbGl0eQorICAgICAgICAgICAgICAgIHNob3dIaWRlKCBbIGVs
ZW0gXSwgdHJ1ZSApOworICAgICAgICAgICAgICAgIHJlc3RvcmVEaXNwbGF5ID0gZWxlbS5zdHls
ZS5kaXNwbGF5IHx8IHJlc3RvcmVEaXNwbGF5OworICAgICAgICAgICAgICAgIGRpc3BsYXkgPSBq
UXVlcnkuY3NzKCBlbGVtLCAiZGlzcGxheSIgKTsKKyAgICAgICAgICAgICAgICBzaG93SGlkZSgg
WyBlbGVtIF0gKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIEFuaW1h
dGUgaW5saW5lIGVsZW1lbnRzIGFzIGlubGluZS1ibG9jaworICAgICAgICBpZiAoIGRpc3BsYXkg
PT09ICJpbmxpbmUiIHx8IGRpc3BsYXkgPT09ICJpbmxpbmUtYmxvY2siICYmIHJlc3RvcmVEaXNw
bGF5ICE9IG51bGwgKSB7CisgICAgICAgICAgICBpZiAoIGpRdWVyeS5jc3MoIGVsZW0sICJmbG9h
dCIgKSA9PT0gIm5vbmUiICkgeworCisgICAgICAgICAgICAgICAgLy8gUmVzdG9yZSB0aGUgb3Jp
Z2luYWwgZGlzcGxheSB2YWx1ZSBhdCB0aGUgZW5kIG9mIHB1cmUgc2hvdy9oaWRlIGFuaW1hdGlv
bnMKKyAgICAgICAgICAgICAgICBpZiAoICFwcm9wVHdlZW4gKSB7CisgICAgICAgICAgICAgICAg
ICAgIGFuaW0uZG9uZSggZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzdHls
ZS5kaXNwbGF5ID0gcmVzdG9yZURpc3BsYXk7CisgICAgICAgICAgICAgICAgICAgIH0gKTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKCByZXN0b3JlRGlzcGxheSA9PSBudWxsICkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgZGlzcGxheSA9IHN0eWxlLmRpc3BsYXk7CisgICAgICAgICAgICAg
ICAgICAgICAgICByZXN0b3JlRGlzcGxheSA9IGRpc3BsYXkgPT09ICJub25lIiA/ICIiIDogZGlz
cGxheTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBzdHlsZS5kaXNwbGF5ID0gImlubGluZS1ibG9jayI7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIG9wdHMub3ZlcmZsb3cgKSB7CisgICAgICAgIHN0
eWxlLm92ZXJmbG93ID0gImhpZGRlbiI7CisgICAgICAgIGFuaW0uYWx3YXlzKCBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgIHN0eWxlLm92ZXJmbG93ID0gb3B0cy5vdmVyZmxvd1sgMCBdOworICAg
ICAgICAgICAgc3R5bGUub3ZlcmZsb3dYID0gb3B0cy5vdmVyZmxvd1sgMSBdOworICAgICAgICAg
ICAgc3R5bGUub3ZlcmZsb3dZID0gb3B0cy5vdmVyZmxvd1sgMiBdOworICAgICAgICB9ICk7Cisg
ICAgfQorCisgICAgLy8gSW1wbGVtZW50IHNob3cvaGlkZSBhbmltYXRpb25zCisgICAgcHJvcFR3
ZWVuID0gZmFsc2U7CisgICAgZm9yICggcHJvcCBpbiBvcmlnICkgeworCisgICAgICAgIC8vIEdl
bmVyYWwgc2hvdy9oaWRlIHNldHVwIGZvciB0aGlzIGVsZW1lbnQgYW5pbWF0aW9uCisgICAgICAg
IGlmICggIXByb3BUd2VlbiApIHsKKyAgICAgICAgICAgIGlmICggZGF0YVNob3cgKSB7CisgICAg
ICAgICAgICAgICAgaWYgKCAiaGlkZGVuIiBpbiBkYXRhU2hvdyApIHsKKyAgICAgICAgICAgICAg
ICAgICAgaGlkZGVuID0gZGF0YVNob3cuaGlkZGVuOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGF0YVNob3cgPSBkYXRhUHJpdi5hY2Nl
c3MoIGVsZW0sICJmeHNob3ciLCB7IGRpc3BsYXk6IHJlc3RvcmVEaXNwbGF5IH0gKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgLy8gU3RvcmUgaGlkZGVuL3Zpc2libGUgZm9yIHRvZ2ds
ZSBzbyBgLnN0b3AoKS50b2dnbGUoKWAgInJldmVyc2VzIgorICAgICAgICAgICAgaWYgKCB0b2dn
bGUgKSB7CisgICAgICAgICAgICAgICAgZGF0YVNob3cuaGlkZGVuID0gIWhpZGRlbjsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgLy8gU2hvdyBlbGVtZW50cyBiZWZvcmUgYW5pbWF0aW5n
IHRoZW0KKyAgICAgICAgICAgIGlmICggaGlkZGVuICkgeworICAgICAgICAgICAgICAgIHNob3dI
aWRlKCBbIGVsZW0gXSwgdHJ1ZSApOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBl
c2xpbnQtZGlzYWJsZSBuby1sb29wLWZ1bmMgKi8KKworICAgICAgICAgICAgYW5pbS5kb25lKCBm
dW5jdGlvbigpIHsKKworICAgICAgICAgICAgLyogZXNsaW50LWVuYWJsZSBuby1sb29wLWZ1bmMg
Ki8KKworICAgICAgICAgICAgICAgIC8vIFRoZSBmaW5hbCBzdGVwIG9mIGEgImhpZGUiIGFuaW1h
dGlvbiBpcyBhY3R1YWxseSBoaWRpbmcgdGhlIGVsZW1lbnQKKyAgICAgICAgICAgICAgICBpZiAo
ICFoaWRkZW4gKSB7CisgICAgICAgICAgICAgICAgICAgIHNob3dIaWRlKCBbIGVsZW0gXSApOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkYXRhUHJpdi5yZW1vdmUoIGVsZW0s
ICJmeHNob3ciICk7CisgICAgICAgICAgICAgICAgZm9yICggcHJvcCBpbiBvcmlnICkgeworICAg
ICAgICAgICAgICAgICAgICBqUXVlcnkuc3R5bGUoIGVsZW0sIHByb3AsIG9yaWdbIHByb3AgXSAp
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gKTsKKyAgICAgICAgfQorCisgICAg
ICAgIC8vIFBlci1wcm9wZXJ0eSBzZXR1cAorICAgICAgICBwcm9wVHdlZW4gPSBjcmVhdGVUd2Vl
biggaGlkZGVuID8gZGF0YVNob3dbIHByb3AgXSA6IDAsIHByb3AsIGFuaW0gKTsKKyAgICAgICAg
aWYgKCAhKCBwcm9wIGluIGRhdGFTaG93ICkgKSB7CisgICAgICAgICAgICBkYXRhU2hvd1sgcHJv
cCBdID0gcHJvcFR3ZWVuLnN0YXJ0OworICAgICAgICAgICAgaWYgKCBoaWRkZW4gKSB7CisgICAg
ICAgICAgICAgICAgcHJvcFR3ZWVuLmVuZCA9IHByb3BUd2Vlbi5zdGFydDsKKyAgICAgICAgICAg
ICAgICBwcm9wVHdlZW4uc3RhcnQgPSAwOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorfQorCitmdW5jdGlvbiBwcm9wRmlsdGVyKCBwcm9wcywgc3BlY2lhbEVhc2luZyApIHsKKyAg
ICB2YXIgaW5kZXgsIG5hbWUsIGVhc2luZywgdmFsdWUsIGhvb2tzOworCisgICAgLy8gY2FtZWxD
YXNlLCBzcGVjaWFsRWFzaW5nIGFuZCBleHBhbmQgY3NzSG9vayBwYXNzCisgICAgZm9yICggaW5k
ZXggaW4gcHJvcHMgKSB7CisgICAgICAgIG5hbWUgPSBqUXVlcnkuY2FtZWxDYXNlKCBpbmRleCAp
OworICAgICAgICBlYXNpbmcgPSBzcGVjaWFsRWFzaW5nWyBuYW1lIF07CisgICAgICAgIHZhbHVl
ID0gcHJvcHNbIGluZGV4IF07CisgICAgICAgIGlmICggalF1ZXJ5LmlzQXJyYXkoIHZhbHVlICkg
KSB7CisgICAgICAgICAgICBlYXNpbmcgPSB2YWx1ZVsgMSBdOworICAgICAgICAgICAgdmFsdWUg
PSBwcm9wc1sgaW5kZXggXSA9IHZhbHVlWyAwIF07CisgICAgICAgIH0KKworICAgICAgICBpZiAo
IGluZGV4ICE9PSBuYW1lICkgeworICAgICAgICAgICAgcHJvcHNbIG5hbWUgXSA9IHZhbHVlOwor
ICAgICAgICAgICAgZGVsZXRlIHByb3BzWyBpbmRleCBdOworICAgICAgICB9CisKKyAgICAgICAg
aG9va3MgPSBqUXVlcnkuY3NzSG9va3NbIG5hbWUgXTsKKyAgICAgICAgaWYgKCBob29rcyAmJiAi
ZXhwYW5kIiBpbiBob29rcyApIHsKKyAgICAgICAgICAgIHZhbHVlID0gaG9va3MuZXhwYW5kKCB2
YWx1ZSApOworICAgICAgICAgICAgZGVsZXRlIHByb3BzWyBuYW1lIF07CisKKyAgICAgICAgICAg
IC8vIE5vdCBxdWl0ZSAkLmV4dGVuZCwgdGhpcyB3b24ndCBvdmVyd3JpdGUgZXhpc3Rpbmcga2V5
cy4KKyAgICAgICAgICAgIC8vIFJldXNpbmcgJ2luZGV4JyBiZWNhdXNlIHdlIGhhdmUgdGhlIGNv
cnJlY3QgIm5hbWUiCisgICAgICAgICAgICBmb3IgKCBpbmRleCBpbiB2YWx1ZSApIHsKKyAgICAg
ICAgICAgICAgICBpZiAoICEoIGluZGV4IGluIHByb3BzICkgKSB7CisgICAgICAgICAgICAgICAg
ICAgIHByb3BzWyBpbmRleCBdID0gdmFsdWVbIGluZGV4IF07CisgICAgICAgICAgICAgICAgICAg
IHNwZWNpYWxFYXNpbmdbIGluZGV4IF0gPSBlYXNpbmc7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc3BlY2lhbEVhc2luZ1sg
bmFtZSBdID0gZWFzaW5nOworICAgICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiBBbmltYXRp
b24oIGVsZW0sIHByb3BlcnRpZXMsIG9wdGlvbnMgKSB7CisgICAgdmFyIHJlc3VsdCwKKyAgICAg
ICAgc3RvcHBlZCwKKyAgICAgICAgaW5kZXggPSAwLAorICAgICAgICBsZW5ndGggPSBBbmltYXRp
b24ucHJlZmlsdGVycy5sZW5ndGgsCisgICAgICAgIGRlZmVycmVkID0galF1ZXJ5LkRlZmVycmVk
KCkuYWx3YXlzKCBmdW5jdGlvbigpIHsKKworICAgICAgICAgICAgLy8gRG9uJ3QgbWF0Y2ggZWxl
bSBpbiB0aGUgOmFuaW1hdGVkIHNlbGVjdG9yCisgICAgICAgICAgICBkZWxldGUgdGljay5lbGVt
OworICAgICAgICB9ICksCisgICAgICAgIHRpY2sgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
IGlmICggc3RvcHBlZCApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICB2YXIgY3VycmVudFRpbWUgPSBmeE5vdyB8fCBjcmVhdGVGeE5v
dygpLAorICAgICAgICAgICAgICAgIHJlbWFpbmluZyA9IE1hdGgubWF4KCAwLCBhbmltYXRpb24u
c3RhcnRUaW1lICsgYW5pbWF0aW9uLmR1cmF0aW9uIC0gY3VycmVudFRpbWUgKSwKKworICAgICAg
ICAgICAgICAgIC8vIFN1cHBvcnQ6IEFuZHJvaWQgMi4zIG9ubHkKKyAgICAgICAgICAgICAgICAv
LyBBcmNoYWljIGNyYXNoIGJ1ZyB3b24ndCBhbGxvdyB1cyB0byB1c2UgYDEgLSAoIDAuNSB8fCAw
IClgICgjMTI0OTcpCisgICAgICAgICAgICAgICAgdGVtcCA9IHJlbWFpbmluZyAvIGFuaW1hdGlv
bi5kdXJhdGlvbiB8fCAwLAorICAgICAgICAgICAgICAgIHBlcmNlbnQgPSAxIC0gdGVtcCwKKyAg
ICAgICAgICAgICAgICBpbmRleCA9IDAsCisgICAgICAgICAgICAgICAgbGVuZ3RoID0gYW5pbWF0
aW9uLnR3ZWVucy5sZW5ndGg7CisKKyAgICAgICAgICAgIGZvciAoIDsgaW5kZXggPCBsZW5ndGg7
IGluZGV4KysgKSB7CisgICAgICAgICAgICAgICAgYW5pbWF0aW9uLnR3ZWVuc1sgaW5kZXggXS5y
dW4oIHBlcmNlbnQgKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZGVmZXJyZWQubm90
aWZ5V2l0aCggZWxlbSwgWyBhbmltYXRpb24sIHBlcmNlbnQsIHJlbWFpbmluZyBdICk7CisKKyAg
ICAgICAgICAgIGlmICggcGVyY2VudCA8IDEgJiYgbGVuZ3RoICkgeworICAgICAgICAgICAgICAg
IHJldHVybiByZW1haW5pbmc7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IGRlZmVycmVkLnJlc29sdmVXaXRoKCBlbGVtLCBbIGFuaW1hdGlvbiBdICk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICBh
bmltYXRpb24gPSBkZWZlcnJlZC5wcm9taXNlKCB7CisgICAgICAgICAgICBlbGVtOiBlbGVtLAor
ICAgICAgICAgICAgcHJvcHM6IGpRdWVyeS5leHRlbmQoIHt9LCBwcm9wZXJ0aWVzICksCisgICAg
ICAgICAgICBvcHRzOiBqUXVlcnkuZXh0ZW5kKCB0cnVlLCB7CisgICAgICAgICAgICAgICAgc3Bl
Y2lhbEVhc2luZzoge30sCisgICAgICAgICAgICAgICAgZWFzaW5nOiBqUXVlcnkuZWFzaW5nLl9k
ZWZhdWx0CisgICAgICAgICAgICB9LCBvcHRpb25zICksCisgICAgICAgICAgICBvcmlnaW5hbFBy
b3BlcnRpZXM6IHByb3BlcnRpZXMsCisgICAgICAgICAgICBvcmlnaW5hbE9wdGlvbnM6IG9wdGlv
bnMsCisgICAgICAgICAgICBzdGFydFRpbWU6IGZ4Tm93IHx8IGNyZWF0ZUZ4Tm93KCksCisgICAg
ICAgICAgICBkdXJhdGlvbjogb3B0aW9ucy5kdXJhdGlvbiwKKyAgICAgICAgICAgIHR3ZWVuczog
W10sCisgICAgICAgICAgICBjcmVhdGVUd2VlbjogZnVuY3Rpb24oIHByb3AsIGVuZCApIHsKKyAg
ICAgICAgICAgICAgICB2YXIgdHdlZW4gPSBqUXVlcnkuVHdlZW4oIGVsZW0sIGFuaW1hdGlvbi5v
cHRzLCBwcm9wLCBlbmQsCisgICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpb24ub3B0cy5z
cGVjaWFsRWFzaW5nWyBwcm9wIF0gfHwgYW5pbWF0aW9uLm9wdHMuZWFzaW5nICk7CisgICAgICAg
ICAgICAgICAgYW5pbWF0aW9uLnR3ZWVucy5wdXNoKCB0d2VlbiApOworICAgICAgICAgICAgICAg
IHJldHVybiB0d2VlbjsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBzdG9wOiBmdW5jdGlv
biggZ290b0VuZCApIHsKKyAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSAwLAorCisgICAgICAg
ICAgICAgICAgICAgIC8vIElmIHdlIGFyZSBnb2luZyB0byB0aGUgZW5kLCB3ZSB3YW50IHRvIHJ1
biBhbGwgdGhlIHR3ZWVucworICAgICAgICAgICAgICAgICAgICAvLyBvdGhlcndpc2Ugd2Ugc2tp
cCB0aGlzIHBhcnQKKyAgICAgICAgICAgICAgICAgICAgbGVuZ3RoID0gZ290b0VuZCA/IGFuaW1h
dGlvbi50d2VlbnMubGVuZ3RoIDogMDsKKyAgICAgICAgICAgICAgICBpZiAoIHN0b3BwZWQgKSB7
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBzdG9wcGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBmb3IgKCA7IGlu
ZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkgeworICAgICAgICAgICAgICAgICAgICBhbmltYXRpb24u
dHdlZW5zWyBpbmRleCBdLnJ1biggMSApOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgIC8vIFJlc29sdmUgd2hlbiB3ZSBwbGF5ZWQgdGhlIGxhc3QgZnJhbWU7IG90aGVyd2lz
ZSwgcmVqZWN0CisgICAgICAgICAgICAgICAgaWYgKCBnb3RvRW5kICkgeworICAgICAgICAgICAg
ICAgICAgICBkZWZlcnJlZC5ub3RpZnlXaXRoKCBlbGVtLCBbIGFuaW1hdGlvbiwgMSwgMCBdICk7
CisgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmVXaXRoKCBlbGVtLCBbIGFuaW1h
dGlvbiwgZ290b0VuZCBdICk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAgICAgZGVmZXJyZWQucmVqZWN0V2l0aCggZWxlbSwgWyBhbmltYXRpb24sIGdvdG9FbmQg
XSApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfSApLAorICAgICAgICBwcm9wcyA9IGFuaW1hdGlvbi5wcm9w
czsKKworICAgIHByb3BGaWx0ZXIoIHByb3BzLCBhbmltYXRpb24ub3B0cy5zcGVjaWFsRWFzaW5n
ICk7CisKKyAgICBmb3IgKCA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkgeworICAgICAgICBy
ZXN1bHQgPSBBbmltYXRpb24ucHJlZmlsdGVyc1sgaW5kZXggXS5jYWxsKCBhbmltYXRpb24sIGVs
ZW0sIHByb3BzLCBhbmltYXRpb24ub3B0cyApOworICAgICAgICBpZiAoIHJlc3VsdCApIHsKKyAg
ICAgICAgICAgIGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIHJlc3VsdC5zdG9wICkgKSB7CisgICAg
ICAgICAgICAgICAgalF1ZXJ5Ll9xdWV1ZUhvb2tzKCBhbmltYXRpb24uZWxlbSwgYW5pbWF0aW9u
Lm9wdHMucXVldWUgKS5zdG9wID0KKyAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LnByb3h5KCBy
ZXN1bHQuc3RvcCwgcmVzdWx0ICk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4g
cmVzdWx0OworICAgICAgICB9CisgICAgfQorCisgICAgalF1ZXJ5Lm1hcCggcHJvcHMsIGNyZWF0
ZVR3ZWVuLCBhbmltYXRpb24gKTsKKworICAgIGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIGFuaW1h
dGlvbi5vcHRzLnN0YXJ0ICkgKSB7CisgICAgICAgIGFuaW1hdGlvbi5vcHRzLnN0YXJ0LmNhbGwo
IGVsZW0sIGFuaW1hdGlvbiApOworICAgIH0KKworICAgIGpRdWVyeS5meC50aW1lcigKKyAgICAg
ICAgalF1ZXJ5LmV4dGVuZCggdGljaywgeworICAgICAgICAgICAgZWxlbTogZWxlbSwKKyAgICAg
ICAgICAgIGFuaW06IGFuaW1hdGlvbiwKKyAgICAgICAgICAgIHF1ZXVlOiBhbmltYXRpb24ub3B0
cy5xdWV1ZQorICAgICAgICB9ICkKKyAgICApOworCisgICAgLy8gYXR0YWNoIGNhbGxiYWNrcyBm
cm9tIG9wdGlvbnMKKyAgICByZXR1cm4gYW5pbWF0aW9uLnByb2dyZXNzKCBhbmltYXRpb24ub3B0
cy5wcm9ncmVzcyApCisgICAgICAgIC5kb25lKCBhbmltYXRpb24ub3B0cy5kb25lLCBhbmltYXRp
b24ub3B0cy5jb21wbGV0ZSApCisgICAgICAgIC5mYWlsKCBhbmltYXRpb24ub3B0cy5mYWlsICkK
KyAgICAgICAgLmFsd2F5cyggYW5pbWF0aW9uLm9wdHMuYWx3YXlzICk7Cit9CisKK2pRdWVyeS5B
bmltYXRpb24gPSBqUXVlcnkuZXh0ZW5kKCBBbmltYXRpb24sIHsKKworICAgIHR3ZWVuZXJzOiB7
CisgICAgICAgICIqIjogWyBmdW5jdGlvbiggcHJvcCwgdmFsdWUgKSB7CisgICAgICAgICAgICB2
YXIgdHdlZW4gPSB0aGlzLmNyZWF0ZVR3ZWVuKCBwcm9wLCB2YWx1ZSApOworICAgICAgICAgICAg
YWRqdXN0Q1NTKCB0d2Vlbi5lbGVtLCBwcm9wLCByY3NzTnVtLmV4ZWMoIHZhbHVlICksIHR3ZWVu
ICk7CisgICAgICAgICAgICByZXR1cm4gdHdlZW47CisgICAgICAgIH0gXQorICAgIH0sCisKKyAg
ICB0d2VlbmVyOiBmdW5jdGlvbiggcHJvcHMsIGNhbGxiYWNrICkgeworICAgICAgICBpZiAoIGpR
dWVyeS5pc0Z1bmN0aW9uKCBwcm9wcyApICkgeworICAgICAgICAgICAgY2FsbGJhY2sgPSBwcm9w
czsKKyAgICAgICAgICAgIHByb3BzID0gWyAiKiIgXTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIHByb3BzID0gcHJvcHMubWF0Y2goIHJub3RodG1sd2hpdGUgKTsKKyAgICAgICAgfQor
CisgICAgICAgIHZhciBwcm9wLAorICAgICAgICAgICAgaW5kZXggPSAwLAorICAgICAgICAgICAg
bGVuZ3RoID0gcHJvcHMubGVuZ3RoOworCisgICAgICAgIGZvciAoIDsgaW5kZXggPCBsZW5ndGg7
IGluZGV4KysgKSB7CisgICAgICAgICAgICBwcm9wID0gcHJvcHNbIGluZGV4IF07CisgICAgICAg
ICAgICBBbmltYXRpb24udHdlZW5lcnNbIHByb3AgXSA9IEFuaW1hdGlvbi50d2VlbmVyc1sgcHJv
cCBdIHx8IFtdOworICAgICAgICAgICAgQW5pbWF0aW9uLnR3ZWVuZXJzWyBwcm9wIF0udW5zaGlm
dCggY2FsbGJhY2sgKTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICBwcmVmaWx0ZXJzOiBbIGRl
ZmF1bHRQcmVmaWx0ZXIgXSwKKworICAgIHByZWZpbHRlcjogZnVuY3Rpb24oIGNhbGxiYWNrLCBw
cmVwZW5kICkgeworICAgICAgICBpZiAoIHByZXBlbmQgKSB7CisgICAgICAgICAgICBBbmltYXRp
b24ucHJlZmlsdGVycy51bnNoaWZ0KCBjYWxsYmFjayApOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgQW5pbWF0aW9uLnByZWZpbHRlcnMucHVzaCggY2FsbGJhY2sgKTsKKyAgICAgICAg
fQorICAgIH0KK30gKTsKKworalF1ZXJ5LnNwZWVkID0gZnVuY3Rpb24oIHNwZWVkLCBlYXNpbmcs
IGZuICkgeworICAgIHZhciBvcHQgPSBzcGVlZCAmJiB0eXBlb2Ygc3BlZWQgPT09ICJvYmplY3Qi
ID8galF1ZXJ5LmV4dGVuZCgge30sIHNwZWVkICkgOiB7CisgICAgICAgIGNvbXBsZXRlOiBmbiB8
fCAhZm4gJiYgZWFzaW5nIHx8CisgICAgICAgICAgICBqUXVlcnkuaXNGdW5jdGlvbiggc3BlZWQg
KSAmJiBzcGVlZCwKKyAgICAgICAgZHVyYXRpb246IHNwZWVkLAorICAgICAgICBlYXNpbmc6IGZu
ICYmIGVhc2luZyB8fCBlYXNpbmcgJiYgIWpRdWVyeS5pc0Z1bmN0aW9uKCBlYXNpbmcgKSAmJiBl
YXNpbmcKKyAgICB9OworCisgICAgLy8gR28gdG8gdGhlIGVuZCBzdGF0ZSBpZiBmeCBhcmUgb2Zm
IG9yIGlmIGRvY3VtZW50IGlzIGhpZGRlbgorICAgIGlmICggalF1ZXJ5LmZ4Lm9mZiB8fCBkb2N1
bWVudC5oaWRkZW4gKSB7CisgICAgICAgIG9wdC5kdXJhdGlvbiA9IDA7CisKKyAgICB9IGVsc2Ug
eworICAgICAgICBpZiAoIHR5cGVvZiBvcHQuZHVyYXRpb24gIT09ICJudW1iZXIiICkgeworICAg
ICAgICAgICAgaWYgKCBvcHQuZHVyYXRpb24gaW4galF1ZXJ5LmZ4LnNwZWVkcyApIHsKKyAgICAg
ICAgICAgICAgICBvcHQuZHVyYXRpb24gPSBqUXVlcnkuZnguc3BlZWRzWyBvcHQuZHVyYXRpb24g
XTsKKworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBvcHQuZHVyYXRpb24g
PSBqUXVlcnkuZnguc3BlZWRzLl9kZWZhdWx0OworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfQorCisgICAgLy8gTm9ybWFsaXplIG9wdC5xdWV1ZSAtIHRydWUvdW5kZWZpbmVkL251bGwg
LT4gImZ4IgorICAgIGlmICggb3B0LnF1ZXVlID09IG51bGwgfHwgb3B0LnF1ZXVlID09PSB0cnVl
ICkgeworICAgICAgICBvcHQucXVldWUgPSAiZngiOworICAgIH0KKworICAgIC8vIFF1ZXVlaW5n
CisgICAgb3B0Lm9sZCA9IG9wdC5jb21wbGV0ZTsKKworICAgIG9wdC5jb21wbGV0ZSA9IGZ1bmN0
aW9uKCkgeworICAgICAgICBpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBvcHQub2xkICkgKSB7Cisg
ICAgICAgICAgICBvcHQub2xkLmNhbGwoIHRoaXMgKTsKKyAgICAgICAgfQorCisgICAgICAgIGlm
ICggb3B0LnF1ZXVlICkgeworICAgICAgICAgICAgalF1ZXJ5LmRlcXVldWUoIHRoaXMsIG9wdC5x
dWV1ZSApOworICAgICAgICB9CisgICAgfTsKKworICAgIHJldHVybiBvcHQ7Cit9OworCitqUXVl
cnkuZm4uZXh0ZW5kKCB7CisgICAgZmFkZVRvOiBmdW5jdGlvbiggc3BlZWQsIHRvLCBlYXNpbmcs
IGNhbGxiYWNrICkgeworCisgICAgICAgIC8vIFNob3cgYW55IGhpZGRlbiBlbGVtZW50cyBhZnRl
ciBzZXR0aW5nIG9wYWNpdHkgdG8gMAorICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXIoIGlzSGlk
ZGVuV2l0aGluVHJlZSApLmNzcyggIm9wYWNpdHkiLCAwICkuc2hvdygpCisKKyAgICAgICAgICAg
IC8vIEFuaW1hdGUgdG8gdGhlIHZhbHVlIHNwZWNpZmllZAorICAgICAgICAgICAgLmVuZCgpLmFu
aW1hdGUoIHsgb3BhY2l0eTogdG8gfSwgc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKTsKKyAgICB9
LAorICAgIGFuaW1hdGU6IGZ1bmN0aW9uKCBwcm9wLCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayAp
IHsKKyAgICAgICAgdmFyIGVtcHR5ID0galF1ZXJ5LmlzRW1wdHlPYmplY3QoIHByb3AgKSwKKyAg
ICAgICAgICAgIG9wdGFsbCA9IGpRdWVyeS5zcGVlZCggc3BlZWQsIGVhc2luZywgY2FsbGJhY2sg
KSwKKyAgICAgICAgICAgIGRvQW5pbWF0aW9uID0gZnVuY3Rpb24oKSB7CisKKyAgICAgICAgICAg
ICAgICAvLyBPcGVyYXRlIG9uIGEgY29weSBvZiBwcm9wIHNvIHBlci1wcm9wZXJ0eSBlYXNpbmcg
d29uJ3QgYmUgbG9zdAorICAgICAgICAgICAgICAgIHZhciBhbmltID0gQW5pbWF0aW9uKCB0aGlz
LCBqUXVlcnkuZXh0ZW5kKCB7fSwgcHJvcCApLCBvcHRhbGwgKTsKKworICAgICAgICAgICAgICAg
IC8vIEVtcHR5IGFuaW1hdGlvbnMsIG9yIGZpbmlzaGluZyByZXNvbHZlcyBpbW1lZGlhdGVseQor
ICAgICAgICAgICAgICAgIGlmICggZW1wdHkgfHwgZGF0YVByaXYuZ2V0KCB0aGlzLCAiZmluaXNo
IiApICkgeworICAgICAgICAgICAgICAgICAgICBhbmltLnN0b3AoIHRydWUgKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9OworICAgICAgICAgICAgZG9BbmltYXRpb24uZmluaXNo
ID0gZG9BbmltYXRpb247CisKKyAgICAgICAgcmV0dXJuIGVtcHR5IHx8IG9wdGFsbC5xdWV1ZSA9
PT0gZmFsc2UgPworICAgICAgICAgICAgdGhpcy5lYWNoKCBkb0FuaW1hdGlvbiApIDoKKyAgICAg
ICAgICAgIHRoaXMucXVldWUoIG9wdGFsbC5xdWV1ZSwgZG9BbmltYXRpb24gKTsKKyAgICB9LAor
ICAgIHN0b3A6IGZ1bmN0aW9uKCB0eXBlLCBjbGVhclF1ZXVlLCBnb3RvRW5kICkgeworICAgICAg
ICB2YXIgc3RvcFF1ZXVlID0gZnVuY3Rpb24oIGhvb2tzICkgeworICAgICAgICAgICAgdmFyIHN0
b3AgPSBob29rcy5zdG9wOworICAgICAgICAgICAgZGVsZXRlIGhvb2tzLnN0b3A7CisgICAgICAg
ICAgICBzdG9wKCBnb3RvRW5kICk7CisgICAgICAgIH07CisKKyAgICAgICAgaWYgKCB0eXBlb2Yg
dHlwZSAhPT0gInN0cmluZyIgKSB7CisgICAgICAgICAgICBnb3RvRW5kID0gY2xlYXJRdWV1ZTsK
KyAgICAgICAgICAgIGNsZWFyUXVldWUgPSB0eXBlOworICAgICAgICAgICAgdHlwZSA9IHVuZGVm
aW5lZDsKKyAgICAgICAgfQorICAgICAgICBpZiAoIGNsZWFyUXVldWUgJiYgdHlwZSAhPT0gZmFs
c2UgKSB7CisgICAgICAgICAgICB0aGlzLnF1ZXVlKCB0eXBlIHx8ICJmeCIsIFtdICk7CisgICAg
ICAgIH0KKworICAgICAgICByZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgIHZhciBkZXF1ZXVlID0gdHJ1ZSwKKyAgICAgICAgICAgICAgICBpbmRleCA9IHR5cGUgIT0g
bnVsbCAmJiB0eXBlICsgInF1ZXVlSG9va3MiLAorICAgICAgICAgICAgICAgIHRpbWVycyA9IGpR
dWVyeS50aW1lcnMsCisgICAgICAgICAgICAgICAgZGF0YSA9IGRhdGFQcml2LmdldCggdGhpcyAp
OworCisgICAgICAgICAgICBpZiAoIGluZGV4ICkgeworICAgICAgICAgICAgICAgIGlmICggZGF0
YVsgaW5kZXggXSAmJiBkYXRhWyBpbmRleCBdLnN0b3AgKSB7CisgICAgICAgICAgICAgICAgICAg
IHN0b3BRdWV1ZSggZGF0YVsgaW5kZXggXSApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZm9yICggaW5kZXggaW4gZGF0YSApIHsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKCBkYXRhWyBpbmRleCBdICYmIGRhdGFbIGluZGV4IF0uc3Rv
cCAmJiBycnVuLnRlc3QoIGluZGV4ICkgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzdG9w
UXVldWUoIGRhdGFbIGluZGV4IF0gKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZm9yICggaW5kZXggPSB0aW1l
cnMubGVuZ3RoOyBpbmRleC0tOyApIHsKKyAgICAgICAgICAgICAgICBpZiAoIHRpbWVyc1sgaW5k
ZXggXS5lbGVtID09PSB0aGlzICYmCisgICAgICAgICAgICAgICAgICAgICggdHlwZSA9PSBudWxs
IHx8IHRpbWVyc1sgaW5kZXggXS5xdWV1ZSA9PT0gdHlwZSApICkgeworCisgICAgICAgICAgICAg
ICAgICAgIHRpbWVyc1sgaW5kZXggXS5hbmltLnN0b3AoIGdvdG9FbmQgKTsKKyAgICAgICAgICAg
ICAgICAgICAgZGVxdWV1ZSA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICB0aW1lcnMuc3Bs
aWNlKCBpbmRleCwgMSApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgLy8gU3RhcnQgdGhlIG5leHQgaW4gdGhlIHF1ZXVlIGlmIHRoZSBsYXN0IHN0ZXAg
d2Fzbid0IGZvcmNlZC4KKyAgICAgICAgICAgIC8vIFRpbWVycyBjdXJyZW50bHkgd2lsbCBjYWxs
IHRoZWlyIGNvbXBsZXRlIGNhbGxiYWNrcywgd2hpY2gKKyAgICAgICAgICAgIC8vIHdpbGwgZGVx
dWV1ZSBidXQgb25seSBpZiB0aGV5IHdlcmUgZ290b0VuZC4KKyAgICAgICAgICAgIGlmICggZGVx
dWV1ZSB8fCAhZ290b0VuZCApIHsKKyAgICAgICAgICAgICAgICBqUXVlcnkuZGVxdWV1ZSggdGhp
cywgdHlwZSApOworICAgICAgICAgICAgfQorICAgICAgICB9ICk7CisgICAgfSwKKyAgICBmaW5p
c2g6IGZ1bmN0aW9uKCB0eXBlICkgeworICAgICAgICBpZiAoIHR5cGUgIT09IGZhbHNlICkgewor
ICAgICAgICAgICAgdHlwZSA9IHR5cGUgfHwgImZ4IjsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHZhciBpbmRleCwKKyAgICAg
ICAgICAgICAgICBkYXRhID0gZGF0YVByaXYuZ2V0KCB0aGlzICksCisgICAgICAgICAgICAgICAg
cXVldWUgPSBkYXRhWyB0eXBlICsgInF1ZXVlIiBdLAorICAgICAgICAgICAgICAgIGhvb2tzID0g
ZGF0YVsgdHlwZSArICJxdWV1ZUhvb2tzIiBdLAorICAgICAgICAgICAgICAgIHRpbWVycyA9IGpR
dWVyeS50aW1lcnMsCisgICAgICAgICAgICAgICAgbGVuZ3RoID0gcXVldWUgPyBxdWV1ZS5sZW5n
dGggOiAwOworCisgICAgICAgICAgICAvLyBFbmFibGUgZmluaXNoaW5nIGZsYWcgb24gcHJpdmF0
ZSBkYXRhCisgICAgICAgICAgICBkYXRhLmZpbmlzaCA9IHRydWU7CisKKyAgICAgICAgICAgIC8v
IEVtcHR5IHRoZSBxdWV1ZSBmaXJzdAorICAgICAgICAgICAgalF1ZXJ5LnF1ZXVlKCB0aGlzLCB0
eXBlLCBbXSApOworCisgICAgICAgICAgICBpZiAoIGhvb2tzICYmIGhvb2tzLnN0b3AgKSB7Cisg
ICAgICAgICAgICAgICAgaG9va3Muc3RvcC5jYWxsKCB0aGlzLCB0cnVlICk7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIC8vIExvb2sgZm9yIGFueSBhY3RpdmUgYW5pbWF0aW9ucywgYW5k
IGZpbmlzaCB0aGVtCisgICAgICAgICAgICBmb3IgKCBpbmRleCA9IHRpbWVycy5sZW5ndGg7IGlu
ZGV4LS07ICkgeworICAgICAgICAgICAgICAgIGlmICggdGltZXJzWyBpbmRleCBdLmVsZW0gPT09
IHRoaXMgJiYgdGltZXJzWyBpbmRleCBdLnF1ZXVlID09PSB0eXBlICkgeworICAgICAgICAgICAg
ICAgICAgICB0aW1lcnNbIGluZGV4IF0uYW5pbS5zdG9wKCB0cnVlICk7CisgICAgICAgICAgICAg
ICAgICAgIHRpbWVycy5zcGxpY2UoIGluZGV4LCAxICk7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBMb29rIGZvciBhbnkgYW5pbWF0aW9ucyBpbiB0
aGUgb2xkIHF1ZXVlIGFuZCBmaW5pc2ggdGhlbQorICAgICAgICAgICAgZm9yICggaW5kZXggPSAw
OyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHsKKyAgICAgICAgICAgICAgICBpZiAoIHF1ZXVl
WyBpbmRleCBdICYmIHF1ZXVlWyBpbmRleCBdLmZpbmlzaCApIHsKKyAgICAgICAgICAgICAgICAg
ICAgcXVldWVbIGluZGV4IF0uZmluaXNoLmNhbGwoIHRoaXMgKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFR1cm4gb2ZmIGZpbmlzaGluZyBmbGFn
CisgICAgICAgICAgICBkZWxldGUgZGF0YS5maW5pc2g7CisgICAgICAgIH0gKTsKKyAgICB9Cit9
ICk7CisKK2pRdWVyeS5lYWNoKCBbICJ0b2dnbGUiLCAic2hvdyIsICJoaWRlIiBdLCBmdW5jdGlv
biggaSwgbmFtZSApIHsKKyAgICB2YXIgY3NzRm4gPSBqUXVlcnkuZm5bIG5hbWUgXTsKKyAgICBq
UXVlcnkuZm5bIG5hbWUgXSA9IGZ1bmN0aW9uKCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApIHsK
KyAgICAgICAgcmV0dXJuIHNwZWVkID09IG51bGwgfHwgdHlwZW9mIHNwZWVkID09PSAiYm9vbGVh
biIgPworICAgICAgICAgICAgY3NzRm4uYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApIDoKKyAgICAg
ICAgICAgIHRoaXMuYW5pbWF0ZSggZ2VuRngoIG5hbWUsIHRydWUgKSwgc3BlZWQsIGVhc2luZywg
Y2FsbGJhY2sgKTsKKyAgICB9OworfSApOworCisvLyBHZW5lcmF0ZSBzaG9ydGN1dHMgZm9yIGN1
c3RvbSBhbmltYXRpb25zCitqUXVlcnkuZWFjaCggeworICAgIHNsaWRlRG93bjogZ2VuRngoICJz
aG93IiApLAorICAgIHNsaWRlVXA6IGdlbkZ4KCAiaGlkZSIgKSwKKyAgICBzbGlkZVRvZ2dsZTog
Z2VuRngoICJ0b2dnbGUiICksCisgICAgZmFkZUluOiB7IG9wYWNpdHk6ICJzaG93IiB9LAorICAg
IGZhZGVPdXQ6IHsgb3BhY2l0eTogImhpZGUiIH0sCisgICAgZmFkZVRvZ2dsZTogeyBvcGFjaXR5
OiAidG9nZ2xlIiB9Cit9LCBmdW5jdGlvbiggbmFtZSwgcHJvcHMgKSB7CisgICAgalF1ZXJ5LmZu
WyBuYW1lIF0gPSBmdW5jdGlvbiggc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKSB7CisgICAgICAg
IHJldHVybiB0aGlzLmFuaW1hdGUoIHByb3BzLCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApOwor
ICAgIH07Cit9ICk7CisKK2pRdWVyeS50aW1lcnMgPSBbXTsKK2pRdWVyeS5meC50aWNrID0gZnVu
Y3Rpb24oKSB7CisgICAgdmFyIHRpbWVyLAorICAgICAgICBpID0gMCwKKyAgICAgICAgdGltZXJz
ID0galF1ZXJ5LnRpbWVyczsKKworICAgIGZ4Tm93ID0galF1ZXJ5Lm5vdygpOworCisgICAgZm9y
ICggOyBpIDwgdGltZXJzLmxlbmd0aDsgaSsrICkgeworICAgICAgICB0aW1lciA9IHRpbWVyc1sg
aSBdOworCisgICAgICAgIC8vIENoZWNrcyB0aGUgdGltZXIgaGFzIG5vdCBhbHJlYWR5IGJlZW4g
cmVtb3ZlZAorICAgICAgICBpZiAoICF0aW1lcigpICYmIHRpbWVyc1sgaSBdID09PSB0aW1lciAp
IHsKKyAgICAgICAgICAgIHRpbWVycy5zcGxpY2UoIGktLSwgMSApOworICAgICAgICB9CisgICAg
fQorCisgICAgaWYgKCAhdGltZXJzLmxlbmd0aCApIHsKKyAgICAgICAgalF1ZXJ5LmZ4LnN0b3Ao
KTsKKyAgICB9CisgICAgZnhOb3cgPSB1bmRlZmluZWQ7Cit9OworCitqUXVlcnkuZngudGltZXIg
PSBmdW5jdGlvbiggdGltZXIgKSB7CisgICAgalF1ZXJ5LnRpbWVycy5wdXNoKCB0aW1lciApOwor
ICAgIGlmICggdGltZXIoKSApIHsKKyAgICAgICAgalF1ZXJ5LmZ4LnN0YXJ0KCk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgalF1ZXJ5LnRpbWVycy5wb3AoKTsKKyAgICB9Cit9OworCitqUXVlcnku
ZnguaW50ZXJ2YWwgPSAxMzsKK2pRdWVyeS5meC5zdGFydCA9IGZ1bmN0aW9uKCkgeworICAgIGlm
ICggIXRpbWVySWQgKSB7CisgICAgICAgIHRpbWVySWQgPSB3aW5kb3cucmVxdWVzdEFuaW1hdGlv
bkZyYW1lID8KKyAgICAgICAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoIHJhZiAp
IDoKKyAgICAgICAgICAgIHdpbmRvdy5zZXRJbnRlcnZhbCggalF1ZXJ5LmZ4LnRpY2ssIGpRdWVy
eS5meC5pbnRlcnZhbCApOworICAgIH0KK307CisKK2pRdWVyeS5meC5zdG9wID0gZnVuY3Rpb24o
KSB7CisgICAgaWYgKCB3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUgKSB7CisgICAgICAgIHdp
bmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSggdGltZXJJZCApOworICAgIH0gZWxzZSB7CisgICAg
ICAgIHdpbmRvdy5jbGVhckludGVydmFsKCB0aW1lcklkICk7CisgICAgfQorCisgICAgdGltZXJJ
ZCA9IG51bGw7Cit9OworCitqUXVlcnkuZnguc3BlZWRzID0geworICAgIHNsb3c6IDYwMCwKKyAg
ICBmYXN0OiAyMDAsCisKKyAgICAvLyBEZWZhdWx0IHNwZWVkCisgICAgX2RlZmF1bHQ6IDQwMAor
fTsKKworcmV0dXJuIGpRdWVyeTsKK30gKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2ti
b25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2VmZmVjdHMvVHdlZW4uanMgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9lZmZlY3RzL1R3ZWVuLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjM3MDY1Y2EzMTViNGQ0YzBjNzRmOTA4YTg2NmMxMTk3ZGUxZmI2ZjQKLS0tIC9kZXYv
bnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9l
ZmZlY3RzL1R3ZWVuLmpzCkBAIC0wLDAgKzEsMTIzIEBACitkZWZpbmUoIFsKKyAgICAiLi4vY29y
ZSIsCisgICAgIi4uL2NzcyIKK10sIGZ1bmN0aW9uKCBqUXVlcnkgKSB7CisKKyJ1c2Ugc3RyaWN0
IjsKKworZnVuY3Rpb24gVHdlZW4oIGVsZW0sIG9wdGlvbnMsIHByb3AsIGVuZCwgZWFzaW5nICkg
eworICAgIHJldHVybiBuZXcgVHdlZW4ucHJvdG90eXBlLmluaXQoIGVsZW0sIG9wdGlvbnMsIHBy
b3AsIGVuZCwgZWFzaW5nICk7Cit9CitqUXVlcnkuVHdlZW4gPSBUd2VlbjsKKworVHdlZW4ucHJv
dG90eXBlID0geworICAgIGNvbnN0cnVjdG9yOiBUd2VlbiwKKyAgICBpbml0OiBmdW5jdGlvbigg
ZWxlbSwgb3B0aW9ucywgcHJvcCwgZW5kLCBlYXNpbmcsIHVuaXQgKSB7CisgICAgICAgIHRoaXMu
ZWxlbSA9IGVsZW07CisgICAgICAgIHRoaXMucHJvcCA9IHByb3A7CisgICAgICAgIHRoaXMuZWFz
aW5nID0gZWFzaW5nIHx8IGpRdWVyeS5lYXNpbmcuX2RlZmF1bHQ7CisgICAgICAgIHRoaXMub3B0
aW9ucyA9IG9wdGlvbnM7CisgICAgICAgIHRoaXMuc3RhcnQgPSB0aGlzLm5vdyA9IHRoaXMuY3Vy
KCk7CisgICAgICAgIHRoaXMuZW5kID0gZW5kOworICAgICAgICB0aGlzLnVuaXQgPSB1bml0IHx8
ICggalF1ZXJ5LmNzc051bWJlclsgcHJvcCBdID8gIiIgOiAicHgiICk7CisgICAgfSwKKyAgICBj
dXI6IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgaG9va3MgPSBUd2Vlbi5wcm9wSG9va3NbIHRo
aXMucHJvcCBdOworCisgICAgICAgIHJldHVybiBob29rcyAmJiBob29rcy5nZXQgPworICAgICAg
ICAgICAgaG9va3MuZ2V0KCB0aGlzICkgOgorICAgICAgICAgICAgVHdlZW4ucHJvcEhvb2tzLl9k
ZWZhdWx0LmdldCggdGhpcyApOworICAgIH0sCisgICAgcnVuOiBmdW5jdGlvbiggcGVyY2VudCAp
IHsKKyAgICAgICAgdmFyIGVhc2VkLAorICAgICAgICAgICAgaG9va3MgPSBUd2Vlbi5wcm9wSG9v
a3NbIHRoaXMucHJvcCBdOworCisgICAgICAgIGlmICggdGhpcy5vcHRpb25zLmR1cmF0aW9uICkg
eworICAgICAgICAgICAgdGhpcy5wb3MgPSBlYXNlZCA9IGpRdWVyeS5lYXNpbmdbIHRoaXMuZWFz
aW5nIF0oCisgICAgICAgICAgICAgICAgcGVyY2VudCwgdGhpcy5vcHRpb25zLmR1cmF0aW9uICog
cGVyY2VudCwgMCwgMSwgdGhpcy5vcHRpb25zLmR1cmF0aW9uCisgICAgICAgICAgICApOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhpcy5wb3MgPSBlYXNlZCA9IHBlcmNlbnQ7Cisg
ICAgICAgIH0KKyAgICAgICAgdGhpcy5ub3cgPSAoIHRoaXMuZW5kIC0gdGhpcy5zdGFydCApICog
ZWFzZWQgKyB0aGlzLnN0YXJ0OworCisgICAgICAgIGlmICggdGhpcy5vcHRpb25zLnN0ZXAgKSB7
CisgICAgICAgICAgICB0aGlzLm9wdGlvbnMuc3RlcC5jYWxsKCB0aGlzLmVsZW0sIHRoaXMubm93
LCB0aGlzICk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIGhvb2tzICYmIGhvb2tzLnNldCAp
IHsKKyAgICAgICAgICAgIGhvb2tzLnNldCggdGhpcyApOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgVHdlZW4ucHJvcEhvb2tzLl9kZWZhdWx0LnNldCggdGhpcyApOworICAgICAgICB9
CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KK307CisKK1R3ZWVuLnByb3RvdHlwZS5pbml0
LnByb3RvdHlwZSA9IFR3ZWVuLnByb3RvdHlwZTsKKworVHdlZW4ucHJvcEhvb2tzID0geworICAg
IF9kZWZhdWx0OiB7CisgICAgICAgIGdldDogZnVuY3Rpb24oIHR3ZWVuICkgeworICAgICAgICAg
ICAgdmFyIHJlc3VsdDsKKworICAgICAgICAgICAgLy8gVXNlIGEgcHJvcGVydHkgb24gdGhlIGVs
ZW1lbnQgZGlyZWN0bHkgd2hlbiBpdCBpcyBub3QgYSBET00gZWxlbWVudCwKKyAgICAgICAgICAg
IC8vIG9yIHdoZW4gdGhlcmUgaXMgbm8gbWF0Y2hpbmcgc3R5bGUgcHJvcGVydHkgdGhhdCBleGlz
dHMuCisgICAgICAgICAgICBpZiAoIHR3ZWVuLmVsZW0ubm9kZVR5cGUgIT09IDEgfHwKKyAgICAg
ICAgICAgICAgICB0d2Vlbi5lbGVtWyB0d2Vlbi5wcm9wIF0gIT0gbnVsbCAmJiB0d2Vlbi5lbGVt
LnN0eWxlWyB0d2Vlbi5wcm9wIF0gPT0gbnVsbCApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
dHdlZW4uZWxlbVsgdHdlZW4ucHJvcCBdOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAv
LyBQYXNzaW5nIGFuIGVtcHR5IHN0cmluZyBhcyBhIDNyZCBwYXJhbWV0ZXIgdG8gLmNzcyB3aWxs
IGF1dG9tYXRpY2FsbHkKKyAgICAgICAgICAgIC8vIGF0dGVtcHQgYSBwYXJzZUZsb2F0IGFuZCBm
YWxsYmFjayB0byBhIHN0cmluZyBpZiB0aGUgcGFyc2UgZmFpbHMuCisgICAgICAgICAgICAvLyBT
aW1wbGUgdmFsdWVzIHN1Y2ggYXMgIjEwcHgiIGFyZSBwYXJzZWQgdG8gRmxvYXQ7CisgICAgICAg
ICAgICAvLyBjb21wbGV4IHZhbHVlcyBzdWNoIGFzICJyb3RhdGUoMXJhZCkiIGFyZSByZXR1cm5l
ZCBhcy1pcy4KKyAgICAgICAgICAgIHJlc3VsdCA9IGpRdWVyeS5jc3MoIHR3ZWVuLmVsZW0sIHR3
ZWVuLnByb3AsICIiICk7CisKKyAgICAgICAgICAgIC8vIEVtcHR5IHN0cmluZ3MsIG51bGwsIHVu
ZGVmaW5lZCBhbmQgImF1dG8iIGFyZSBjb252ZXJ0ZWQgdG8gMC4KKyAgICAgICAgICAgIHJldHVy
biAhcmVzdWx0IHx8IHJlc3VsdCA9PT0gImF1dG8iID8gMCA6IHJlc3VsdDsKKyAgICAgICAgfSwK
KyAgICAgICAgc2V0OiBmdW5jdGlvbiggdHdlZW4gKSB7CisKKyAgICAgICAgICAgIC8vIFVzZSBz
dGVwIGhvb2sgZm9yIGJhY2sgY29tcGF0LgorICAgICAgICAgICAgLy8gVXNlIGNzc0hvb2sgaWYg
aXRzIHRoZXJlLgorICAgICAgICAgICAgLy8gVXNlIC5zdHlsZSBpZiBhdmFpbGFibGUgYW5kIHVz
ZSBwbGFpbiBwcm9wZXJ0aWVzIHdoZXJlIGF2YWlsYWJsZS4KKyAgICAgICAgICAgIGlmICggalF1
ZXJ5LmZ4LnN0ZXBbIHR3ZWVuLnByb3AgXSApIHsKKyAgICAgICAgICAgICAgICBqUXVlcnkuZngu
c3RlcFsgdHdlZW4ucHJvcCBdKCB0d2VlbiApOworICAgICAgICAgICAgfSBlbHNlIGlmICggdHdl
ZW4uZWxlbS5ub2RlVHlwZSA9PT0gMSAmJgorICAgICAgICAgICAgICAgICggdHdlZW4uZWxlbS5z
dHlsZVsgalF1ZXJ5LmNzc1Byb3BzWyB0d2Vlbi5wcm9wIF0gXSAhPSBudWxsIHx8CisgICAgICAg
ICAgICAgICAgICAgIGpRdWVyeS5jc3NIb29rc1sgdHdlZW4ucHJvcCBdICkgKSB7CisgICAgICAg
ICAgICAgICAgalF1ZXJ5LnN0eWxlKCB0d2Vlbi5lbGVtLCB0d2Vlbi5wcm9wLCB0d2Vlbi5ub3cg
KyB0d2Vlbi51bml0ICk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHR3
ZWVuLmVsZW1bIHR3ZWVuLnByb3AgXSA9IHR3ZWVuLm5vdzsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KK307CisKKy8vIFN1cHBvcnQ6IElFIDw9OSBvbmx5CisvLyBQYW5pYyBiYXNl
ZCBhcHByb2FjaCB0byBzZXR0aW5nIHRoaW5ncyBvbiBkaXNjb25uZWN0ZWQgbm9kZXMKK1R3ZWVu
LnByb3BIb29rcy5zY3JvbGxUb3AgPSBUd2Vlbi5wcm9wSG9va3Muc2Nyb2xsTGVmdCA9IHsKKyAg
ICBzZXQ6IGZ1bmN0aW9uKCB0d2VlbiApIHsKKyAgICAgICAgaWYgKCB0d2Vlbi5lbGVtLm5vZGVU
eXBlICYmIHR3ZWVuLmVsZW0ucGFyZW50Tm9kZSApIHsKKyAgICAgICAgICAgIHR3ZWVuLmVsZW1b
IHR3ZWVuLnByb3AgXSA9IHR3ZWVuLm5vdzsKKyAgICAgICAgfQorICAgIH0KK307CisKK2pRdWVy
eS5lYXNpbmcgPSB7CisgICAgbGluZWFyOiBmdW5jdGlvbiggcCApIHsKKyAgICAgICAgcmV0dXJu
IHA7CisgICAgfSwKKyAgICBzd2luZzogZnVuY3Rpb24oIHAgKSB7CisgICAgICAgIHJldHVybiAw
LjUgLSBNYXRoLmNvcyggcCAqIE1hdGguUEkgKSAvIDI7CisgICAgfSwKKyAgICBfZGVmYXVsdDog
InN3aW5nIgorfTsKKworalF1ZXJ5LmZ4ID0gVHdlZW4ucHJvdG90eXBlLmluaXQ7CisKKy8vIEJh
Y2sgY29tcGF0IDwxLjggZXh0ZW5zaW9uIHBvaW50CitqUXVlcnkuZnguc3RlcCA9IHt9OworCit9
ICk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5
L3NyYy9lZmZlY3RzL2FuaW1hdGVkU2VsZWN0b3IuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9u
b2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9lZmZlY3RzL2FuaW1hdGVkU2VsZWN0b3IuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uN2YyYWRmN2M5OGZlZmEzZGFhNDk5NmI2M2YyMzRiM2M5MmJhMzM3NwotLS0gL2Rldi9u
dWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2Vm
ZmVjdHMvYW5pbWF0ZWRTZWxlY3Rvci5qcwpAQCAtMCwwICsxLDE1IEBACitkZWZpbmUoIFsKKyAg
ICAiLi4vY29yZSIsCisgICAgIi4uL3NlbGVjdG9yIiwKKyAgICAiLi4vZWZmZWN0cyIKK10sIGZ1
bmN0aW9uKCBqUXVlcnkgKSB7CisKKyJ1c2Ugc3RyaWN0IjsKKworalF1ZXJ5LmV4cHIucHNldWRv
cy5hbmltYXRlZCA9IGZ1bmN0aW9uKCBlbGVtICkgeworICAgIHJldHVybiBqUXVlcnkuZ3JlcCgg
alF1ZXJ5LnRpbWVycywgZnVuY3Rpb24oIGZuICkgeworICAgICAgICByZXR1cm4gZWxlbSA9PT0g
Zm4uZWxlbTsKKyAgICB9ICkubGVuZ3RoOworfTsKKworfSApOwpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvZXZlbnQuanMgYi9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9ldmVudC5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZGJiZDYxNTc0NmUwNzg5NDZjYjJiNDA0NmRhZjAwNDJkNDQ1MjEzCi0tLSAvZGV2L251bGwK
KysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvZXZlbnQu
anMKQEAgLTAsMCArMSw3NDUgQEAKK2RlZmluZSggWworICAgICIuL2NvcmUiLAorICAgICIuL3Zh
ci9kb2N1bWVudCIsCisgICAgIi4vdmFyL2RvY3VtZW50RWxlbWVudCIsCisgICAgIi4vdmFyL3Ju
b3RodG1sd2hpdGUiLAorICAgICIuL3Zhci9zbGljZSIsCisgICAgIi4vZGF0YS92YXIvZGF0YVBy
aXYiLAorCisgICAgIi4vY29yZS9pbml0IiwKKyAgICAiLi9zZWxlY3RvciIKK10sIGZ1bmN0aW9u
KCBqUXVlcnksIGRvY3VtZW50LCBkb2N1bWVudEVsZW1lbnQsIHJub3RodG1sd2hpdGUsIHNsaWNl
LCBkYXRhUHJpdiApIHsKKworInVzZSBzdHJpY3QiOworCit2YXIKKyAgICBya2V5RXZlbnQgPSAv
XmtleS8sCisgICAgcm1vdXNlRXZlbnQgPSAvXig/Om1vdXNlfHBvaW50ZXJ8Y29udGV4dG1lbnV8
ZHJhZ3xkcm9wKXxjbGljay8sCisgICAgcnR5cGVuYW1lc3BhY2UgPSAvXihbXi5dKikoPzpcLigu
Kyl8KS87CisKK2Z1bmN0aW9uIHJldHVyblRydWUoKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K2Z1bmN0aW9uIHJldHVybkZhbHNlKCkgeworICAgIHJldHVybiBmYWxzZTsKK30KKworLy8gU3Vw
cG9ydDogSUUgPD05IG9ubHkKKy8vIFNlZSAjMTMzOTMgZm9yIG1vcmUgaW5mbworZnVuY3Rpb24g
c2FmZUFjdGl2ZUVsZW1lbnQoKSB7CisgICAgdHJ5IHsKKyAgICAgICAgcmV0dXJuIGRvY3VtZW50
LmFjdGl2ZUVsZW1lbnQ7CisgICAgfSBjYXRjaCAoIGVyciApIHsgfQorfQorCitmdW5jdGlvbiBv
biggZWxlbSwgdHlwZXMsIHNlbGVjdG9yLCBkYXRhLCBmbiwgb25lICkgeworICAgIHZhciBvcmln
Rm4sIHR5cGU7CisKKyAgICAvLyBUeXBlcyBjYW4gYmUgYSBtYXAgb2YgdHlwZXMvaGFuZGxlcnMK
KyAgICBpZiAoIHR5cGVvZiB0eXBlcyA9PT0gIm9iamVjdCIgKSB7CisKKyAgICAgICAgLy8gKCB0
eXBlcy1PYmplY3QsIHNlbGVjdG9yLCBkYXRhICkKKyAgICAgICAgaWYgKCB0eXBlb2Ygc2VsZWN0
b3IgIT09ICJzdHJpbmciICkgeworCisgICAgICAgICAgICAvLyAoIHR5cGVzLU9iamVjdCwgZGF0
YSApCisgICAgICAgICAgICBkYXRhID0gZGF0YSB8fCBzZWxlY3RvcjsKKyAgICAgICAgICAgIHNl
bGVjdG9yID0gdW5kZWZpbmVkOworICAgICAgICB9CisgICAgICAgIGZvciAoIHR5cGUgaW4gdHlw
ZXMgKSB7CisgICAgICAgICAgICBvbiggZWxlbSwgdHlwZSwgc2VsZWN0b3IsIGRhdGEsIHR5cGVz
WyB0eXBlIF0sIG9uZSApOworICAgICAgICB9CisgICAgICAgIHJldHVybiBlbGVtOworICAgIH0K
KworICAgIGlmICggZGF0YSA9PSBudWxsICYmIGZuID09IG51bGwgKSB7CisKKyAgICAgICAgLy8g
KCB0eXBlcywgZm4gKQorICAgICAgICBmbiA9IHNlbGVjdG9yOworICAgICAgICBkYXRhID0gc2Vs
ZWN0b3IgPSB1bmRlZmluZWQ7CisgICAgfSBlbHNlIGlmICggZm4gPT0gbnVsbCApIHsKKyAgICAg
ICAgaWYgKCB0eXBlb2Ygc2VsZWN0b3IgPT09ICJzdHJpbmciICkgeworCisgICAgICAgICAgICAv
LyAoIHR5cGVzLCBzZWxlY3RvciwgZm4gKQorICAgICAgICAgICAgZm4gPSBkYXRhOworICAgICAg
ICAgICAgZGF0YSA9IHVuZGVmaW5lZDsKKyAgICAgICAgfSBlbHNlIHsKKworICAgICAgICAgICAg
Ly8gKCB0eXBlcywgZGF0YSwgZm4gKQorICAgICAgICAgICAgZm4gPSBkYXRhOworICAgICAgICAg
ICAgZGF0YSA9IHNlbGVjdG9yOworICAgICAgICAgICAgc2VsZWN0b3IgPSB1bmRlZmluZWQ7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgaWYgKCBmbiA9PT0gZmFsc2UgKSB7CisgICAgICAgIGZuID0g
cmV0dXJuRmFsc2U7CisgICAgfSBlbHNlIGlmICggIWZuICkgeworICAgICAgICByZXR1cm4gZWxl
bTsKKyAgICB9CisKKyAgICBpZiAoIG9uZSA9PT0gMSApIHsKKyAgICAgICAgb3JpZ0ZuID0gZm47
CisgICAgICAgIGZuID0gZnVuY3Rpb24oIGV2ZW50ICkgeworCisgICAgICAgICAgICAvLyBDYW4g
dXNlIGFuIGVtcHR5IHNldCwgc2luY2UgZXZlbnQgY29udGFpbnMgdGhlIGluZm8KKyAgICAgICAg
ICAgIGpRdWVyeSgpLm9mZiggZXZlbnQgKTsKKyAgICAgICAgICAgIHJldHVybiBvcmlnRm4uYXBw
bHkoIHRoaXMsIGFyZ3VtZW50cyApOworICAgICAgICB9OworCisgICAgICAgIC8vIFVzZSBzYW1l
IGd1aWQgc28gY2FsbGVyIGNhbiByZW1vdmUgdXNpbmcgb3JpZ0ZuCisgICAgICAgIGZuLmd1aWQg
PSBvcmlnRm4uZ3VpZCB8fCAoIG9yaWdGbi5ndWlkID0galF1ZXJ5Lmd1aWQrKyApOworICAgIH0K
KyAgICByZXR1cm4gZWxlbS5lYWNoKCBmdW5jdGlvbigpIHsKKyAgICAgICAgalF1ZXJ5LmV2ZW50
LmFkZCggdGhpcywgdHlwZXMsIGZuLCBkYXRhLCBzZWxlY3RvciApOworICAgIH0gKTsKK30KKwor
LyoKKyAqIEhlbHBlciBmdW5jdGlvbnMgZm9yIG1hbmFnaW5nIGV2ZW50cyAtLSBub3QgcGFydCBv
ZiB0aGUgcHVibGljIGludGVyZmFjZS4KKyAqIFByb3BzIHRvIERlYW4gRWR3YXJkcycgYWRkRXZl
bnQgbGlicmFyeSBmb3IgbWFueSBvZiB0aGUgaWRlYXMuCisgKi8KK2pRdWVyeS5ldmVudCA9IHsK
KworICAgIGdsb2JhbDoge30sCisKKyAgICBhZGQ6IGZ1bmN0aW9uKCBlbGVtLCB0eXBlcywgaGFu
ZGxlciwgZGF0YSwgc2VsZWN0b3IgKSB7CisKKyAgICAgICAgdmFyIGhhbmRsZU9iakluLCBldmVu
dEhhbmRsZSwgdG1wLAorICAgICAgICAgICAgZXZlbnRzLCB0LCBoYW5kbGVPYmosCisgICAgICAg
ICAgICBzcGVjaWFsLCBoYW5kbGVycywgdHlwZSwgbmFtZXNwYWNlcywgb3JpZ1R5cGUsCisgICAg
ICAgICAgICBlbGVtRGF0YSA9IGRhdGFQcml2LmdldCggZWxlbSApOworCisgICAgICAgIC8vIERv
bid0IGF0dGFjaCBldmVudHMgdG8gbm9EYXRhIG9yIHRleHQvY29tbWVudCBub2RlcyAoYnV0IGFs
bG93IHBsYWluIG9iamVjdHMpCisgICAgICAgIGlmICggIWVsZW1EYXRhICkgeworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gQ2FsbGVyIGNhbiBwYXNzIGluIGFu
IG9iamVjdCBvZiBjdXN0b20gZGF0YSBpbiBsaWV1IG9mIHRoZSBoYW5kbGVyCisgICAgICAgIGlm
ICggaGFuZGxlci5oYW5kbGVyICkgeworICAgICAgICAgICAgaGFuZGxlT2JqSW4gPSBoYW5kbGVy
OworICAgICAgICAgICAgaGFuZGxlciA9IGhhbmRsZU9iakluLmhhbmRsZXI7CisgICAgICAgICAg
ICBzZWxlY3RvciA9IGhhbmRsZU9iakluLnNlbGVjdG9yOworICAgICAgICB9CisKKyAgICAgICAg
Ly8gRW5zdXJlIHRoYXQgaW52YWxpZCBzZWxlY3RvcnMgdGhyb3cgZXhjZXB0aW9ucyBhdCBhdHRh
Y2ggdGltZQorICAgICAgICAvLyBFdmFsdWF0ZSBhZ2FpbnN0IGRvY3VtZW50RWxlbWVudCBpbiBj
YXNlIGVsZW0gaXMgYSBub24tZWxlbWVudCBub2RlIChlLmcuLCBkb2N1bWVudCkKKyAgICAgICAg
aWYgKCBzZWxlY3RvciApIHsKKyAgICAgICAgICAgIGpRdWVyeS5maW5kLm1hdGNoZXNTZWxlY3Rv
ciggZG9jdW1lbnRFbGVtZW50LCBzZWxlY3RvciApOworICAgICAgICB9CisKKyAgICAgICAgLy8g
TWFrZSBzdXJlIHRoYXQgdGhlIGhhbmRsZXIgaGFzIGEgdW5pcXVlIElELCB1c2VkIHRvIGZpbmQv
cmVtb3ZlIGl0IGxhdGVyCisgICAgICAgIGlmICggIWhhbmRsZXIuZ3VpZCApIHsKKyAgICAgICAg
ICAgIGhhbmRsZXIuZ3VpZCA9IGpRdWVyeS5ndWlkKys7CisgICAgICAgIH0KKworICAgICAgICAv
LyBJbml0IHRoZSBlbGVtZW50J3MgZXZlbnQgc3RydWN0dXJlIGFuZCBtYWluIGhhbmRsZXIsIGlm
IHRoaXMgaXMgdGhlIGZpcnN0CisgICAgICAgIGlmICggISggZXZlbnRzID0gZWxlbURhdGEuZXZl
bnRzICkgKSB7CisgICAgICAgICAgICBldmVudHMgPSBlbGVtRGF0YS5ldmVudHMgPSB7fTsKKyAg
ICAgICAgfQorICAgICAgICBpZiAoICEoIGV2ZW50SGFuZGxlID0gZWxlbURhdGEuaGFuZGxlICkg
KSB7CisgICAgICAgICAgICBldmVudEhhbmRsZSA9IGVsZW1EYXRhLmhhbmRsZSA9IGZ1bmN0aW9u
KCBlICkgeworCisgICAgICAgICAgICAgICAgLy8gRGlzY2FyZCB0aGUgc2Vjb25kIGV2ZW50IG9m
IGEgalF1ZXJ5LmV2ZW50LnRyaWdnZXIoKSBhbmQKKyAgICAgICAgICAgICAgICAvLyB3aGVuIGFu
IGV2ZW50IGlzIGNhbGxlZCBhZnRlciBhIHBhZ2UgaGFzIHVubG9hZGVkCisgICAgICAgICAgICAg
ICAgcmV0dXJuIHR5cGVvZiBqUXVlcnkgIT09ICJ1bmRlZmluZWQiICYmIGpRdWVyeS5ldmVudC50
cmlnZ2VyZWQgIT09IGUudHlwZSA/CisgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5ldmVudC5k
aXNwYXRjaC5hcHBseSggZWxlbSwgYXJndW1lbnRzICkgOiB1bmRlZmluZWQ7CisgICAgICAgICAg
ICB9OworICAgICAgICB9CisKKyAgICAgICAgLy8gSGFuZGxlIG11bHRpcGxlIGV2ZW50cyBzZXBh
cmF0ZWQgYnkgYSBzcGFjZQorICAgICAgICB0eXBlcyA9ICggdHlwZXMgfHwgIiIgKS5tYXRjaCgg
cm5vdGh0bWx3aGl0ZSApIHx8IFsgIiIgXTsKKyAgICAgICAgdCA9IHR5cGVzLmxlbmd0aDsKKyAg
ICAgICAgd2hpbGUgKCB0LS0gKSB7CisgICAgICAgICAgICB0bXAgPSBydHlwZW5hbWVzcGFjZS5l
eGVjKCB0eXBlc1sgdCBdICkgfHwgW107CisgICAgICAgICAgICB0eXBlID0gb3JpZ1R5cGUgPSB0
bXBbIDEgXTsKKyAgICAgICAgICAgIG5hbWVzcGFjZXMgPSAoIHRtcFsgMiBdIHx8ICIiICkuc3Bs
aXQoICIuIiApLnNvcnQoKTsKKworICAgICAgICAgICAgLy8gVGhlcmUgKm11c3QqIGJlIGEgdHlw
ZSwgbm8gYXR0YWNoaW5nIG5hbWVzcGFjZS1vbmx5IGhhbmRsZXJzCisgICAgICAgICAgICBpZiAo
ICF0eXBlICkgeworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAvLyBJZiBldmVudCBjaGFuZ2VzIGl0cyB0eXBlLCB1c2UgdGhlIHNwZWNpYWwg
ZXZlbnQgaGFuZGxlcnMgZm9yIHRoZSBjaGFuZ2VkIHR5cGUKKyAgICAgICAgICAgIHNwZWNpYWwg
PSBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgdHlwZSBdIHx8IHt9OworCisgICAgICAgICAgICAvLyBJ
ZiBzZWxlY3RvciBkZWZpbmVkLCBkZXRlcm1pbmUgc3BlY2lhbCBldmVudCBhcGkgdHlwZSwgb3Ro
ZXJ3aXNlIGdpdmVuIHR5cGUKKyAgICAgICAgICAgIHR5cGUgPSAoIHNlbGVjdG9yID8gc3BlY2lh
bC5kZWxlZ2F0ZVR5cGUgOiBzcGVjaWFsLmJpbmRUeXBlICkgfHwgdHlwZTsKKworICAgICAgICAg
ICAgLy8gVXBkYXRlIHNwZWNpYWwgYmFzZWQgb24gbmV3bHkgcmVzZXQgdHlwZQorICAgICAgICAg
ICAgc3BlY2lhbCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsWyB0eXBlIF0gfHwge307CisKKyAgICAg
ICAgICAgIC8vIGhhbmRsZU9iaiBpcyBwYXNzZWQgdG8gYWxsIGV2ZW50IGhhbmRsZXJzCisgICAg
ICAgICAgICBoYW5kbGVPYmogPSBqUXVlcnkuZXh0ZW5kKCB7CisgICAgICAgICAgICAgICAgdHlw
ZTogdHlwZSwKKyAgICAgICAgICAgICAgICBvcmlnVHlwZTogb3JpZ1R5cGUsCisgICAgICAgICAg
ICAgICAgZGF0YTogZGF0YSwKKyAgICAgICAgICAgICAgICBoYW5kbGVyOiBoYW5kbGVyLAorICAg
ICAgICAgICAgICAgIGd1aWQ6IGhhbmRsZXIuZ3VpZCwKKyAgICAgICAgICAgICAgICBzZWxlY3Rv
cjogc2VsZWN0b3IsCisgICAgICAgICAgICAgICAgbmVlZHNDb250ZXh0OiBzZWxlY3RvciAmJiBq
UXVlcnkuZXhwci5tYXRjaC5uZWVkc0NvbnRleHQudGVzdCggc2VsZWN0b3IgKSwKKyAgICAgICAg
ICAgICAgICBuYW1lc3BhY2U6IG5hbWVzcGFjZXMuam9pbiggIi4iICkKKyAgICAgICAgICAgIH0s
IGhhbmRsZU9iakluICk7CisKKyAgICAgICAgICAgIC8vIEluaXQgdGhlIGV2ZW50IGhhbmRsZXIg
cXVldWUgaWYgd2UncmUgdGhlIGZpcnN0CisgICAgICAgICAgICBpZiAoICEoIGhhbmRsZXJzID0g
ZXZlbnRzWyB0eXBlIF0gKSApIHsKKyAgICAgICAgICAgICAgICBoYW5kbGVycyA9IGV2ZW50c1sg
dHlwZSBdID0gW107CisgICAgICAgICAgICAgICAgaGFuZGxlcnMuZGVsZWdhdGVDb3VudCA9IDA7
CisKKyAgICAgICAgICAgICAgICAvLyBPbmx5IHVzZSBhZGRFdmVudExpc3RlbmVyIGlmIHRoZSBz
cGVjaWFsIGV2ZW50cyBoYW5kbGVyIHJldHVybnMgZmFsc2UKKyAgICAgICAgICAgICAgICBpZiAo
ICFzcGVjaWFsLnNldHVwIHx8CisgICAgICAgICAgICAgICAgICAgIHNwZWNpYWwuc2V0dXAuY2Fs
bCggZWxlbSwgZGF0YSwgbmFtZXNwYWNlcywgZXZlbnRIYW5kbGUgKSA9PT0gZmFsc2UgKSB7CisK
KyAgICAgICAgICAgICAgICAgICAgaWYgKCBlbGVtLmFkZEV2ZW50TGlzdGVuZXIgKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBlbGVtLmFkZEV2ZW50TGlzdGVuZXIoIHR5cGUsIGV2ZW50SGFu
ZGxlICk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGlmICggc3BlY2lhbC5hZGQgKSB7CisgICAgICAgICAgICAg
ICAgc3BlY2lhbC5hZGQuY2FsbCggZWxlbSwgaGFuZGxlT2JqICk7CisKKyAgICAgICAgICAgICAg
ICBpZiAoICFoYW5kbGVPYmouaGFuZGxlci5ndWlkICkgeworICAgICAgICAgICAgICAgICAgICBo
YW5kbGVPYmouaGFuZGxlci5ndWlkID0gaGFuZGxlci5ndWlkOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gQWRkIHRvIHRoZSBlbGVtZW50J3MgaGFu
ZGxlciBsaXN0LCBkZWxlZ2F0ZXMgaW4gZnJvbnQKKyAgICAgICAgICAgIGlmICggc2VsZWN0b3Ig
KSB7CisgICAgICAgICAgICAgICAgaGFuZGxlcnMuc3BsaWNlKCBoYW5kbGVycy5kZWxlZ2F0ZUNv
dW50KyssIDAsIGhhbmRsZU9iaiApOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBoYW5kbGVycy5wdXNoKCBoYW5kbGVPYmogKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgLy8gS2VlcCB0cmFjayBvZiB3aGljaCBldmVudHMgaGF2ZSBldmVyIGJlZW4gdXNlZCwg
Zm9yIGV2ZW50IG9wdGltaXphdGlvbgorICAgICAgICAgICAgalF1ZXJ5LmV2ZW50Lmdsb2JhbFsg
dHlwZSBdID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgfSwKKworICAgIC8vIERldGFjaCBhbiBl
dmVudCBvciBzZXQgb2YgZXZlbnRzIGZyb20gYW4gZWxlbWVudAorICAgIHJlbW92ZTogZnVuY3Rp
b24oIGVsZW0sIHR5cGVzLCBoYW5kbGVyLCBzZWxlY3RvciwgbWFwcGVkVHlwZXMgKSB7CisKKyAg
ICAgICAgdmFyIGosIG9yaWdDb3VudCwgdG1wLAorICAgICAgICAgICAgZXZlbnRzLCB0LCBoYW5k
bGVPYmosCisgICAgICAgICAgICBzcGVjaWFsLCBoYW5kbGVycywgdHlwZSwgbmFtZXNwYWNlcywg
b3JpZ1R5cGUsCisgICAgICAgICAgICBlbGVtRGF0YSA9IGRhdGFQcml2Lmhhc0RhdGEoIGVsZW0g
KSAmJiBkYXRhUHJpdi5nZXQoIGVsZW0gKTsKKworICAgICAgICBpZiAoICFlbGVtRGF0YSB8fCAh
KCBldmVudHMgPSBlbGVtRGF0YS5ldmVudHMgKSApIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIC8vIE9uY2UgZm9yIGVhY2ggdHlwZS5uYW1lc3BhY2UgaW4gdHlw
ZXM7IHR5cGUgbWF5IGJlIG9taXR0ZWQKKyAgICAgICAgdHlwZXMgPSAoIHR5cGVzIHx8ICIiICku
bWF0Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbICIiIF07CisgICAgICAgIHQgPSB0eXBlcy5sZW5n
dGg7CisgICAgICAgIHdoaWxlICggdC0tICkgeworICAgICAgICAgICAgdG1wID0gcnR5cGVuYW1l
c3BhY2UuZXhlYyggdHlwZXNbIHQgXSApIHx8IFtdOworICAgICAgICAgICAgdHlwZSA9IG9yaWdU
eXBlID0gdG1wWyAxIF07CisgICAgICAgICAgICBuYW1lc3BhY2VzID0gKCB0bXBbIDIgXSB8fCAi
IiApLnNwbGl0KCAiLiIgKS5zb3J0KCk7CisKKyAgICAgICAgICAgIC8vIFVuYmluZCBhbGwgZXZl
bnRzIChvbiB0aGlzIG5hbWVzcGFjZSwgaWYgcHJvdmlkZWQpIGZvciB0aGUgZWxlbWVudAorICAg
ICAgICAgICAgaWYgKCAhdHlwZSApIHsKKyAgICAgICAgICAgICAgICBmb3IgKCB0eXBlIGluIGV2
ZW50cyApIHsKKyAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmV2ZW50LnJlbW92ZSggZWxlbSwg
dHlwZSArIHR5cGVzWyB0IF0sIGhhbmRsZXIsIHNlbGVjdG9yLCB0cnVlICk7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBzcGVjaWFsID0galF1ZXJ5LmV2ZW50LnNwZWNpYWxbIHR5cGUgXSB8fCB7fTsKKyAg
ICAgICAgICAgIHR5cGUgPSAoIHNlbGVjdG9yID8gc3BlY2lhbC5kZWxlZ2F0ZVR5cGUgOiBzcGVj
aWFsLmJpbmRUeXBlICkgfHwgdHlwZTsKKyAgICAgICAgICAgIGhhbmRsZXJzID0gZXZlbnRzWyB0
eXBlIF0gfHwgW107CisgICAgICAgICAgICB0bXAgPSB0bXBbIDIgXSAmJgorICAgICAgICAgICAg
ICAgIG5ldyBSZWdFeHAoICIoXnxcXC4pIiArIG5hbWVzcGFjZXMuam9pbiggIlxcLig/Oi4qXFwu
fCkiICkgKyAiKFxcLnwkKSIgKTsKKworICAgICAgICAgICAgLy8gUmVtb3ZlIG1hdGNoaW5nIGV2
ZW50cworICAgICAgICAgICAgb3JpZ0NvdW50ID0gaiA9IGhhbmRsZXJzLmxlbmd0aDsKKyAgICAg
ICAgICAgIHdoaWxlICggai0tICkgeworICAgICAgICAgICAgICAgIGhhbmRsZU9iaiA9IGhhbmRs
ZXJzWyBqIF07CisKKyAgICAgICAgICAgICAgICBpZiAoICggbWFwcGVkVHlwZXMgfHwgb3JpZ1R5
cGUgPT09IGhhbmRsZU9iai5vcmlnVHlwZSApICYmCisgICAgICAgICAgICAgICAgICAgICggIWhh
bmRsZXIgfHwgaGFuZGxlci5ndWlkID09PSBoYW5kbGVPYmouZ3VpZCApICYmCisgICAgICAgICAg
ICAgICAgICAgICggIXRtcCB8fCB0bXAudGVzdCggaGFuZGxlT2JqLm5hbWVzcGFjZSApICkgJiYK
KyAgICAgICAgICAgICAgICAgICAgKCAhc2VsZWN0b3IgfHwgc2VsZWN0b3IgPT09IGhhbmRsZU9i
ai5zZWxlY3RvciB8fAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3IgPT09ICIqKiIg
JiYgaGFuZGxlT2JqLnNlbGVjdG9yICkgKSB7CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZXJz
LnNwbGljZSggaiwgMSApOworCisgICAgICAgICAgICAgICAgICAgIGlmICggaGFuZGxlT2JqLnNl
bGVjdG9yICkgeworICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcnMuZGVsZWdhdGVDb3Vu
dC0tOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmICggc3Bl
Y2lhbC5yZW1vdmUgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWFsLnJlbW92ZS5j
YWxsKCBlbGVtLCBoYW5kbGVPYmogKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gUmVtb3ZlIGdlbmVyaWMg
ZXZlbnQgaGFuZGxlciBpZiB3ZSByZW1vdmVkIHNvbWV0aGluZyBhbmQgbm8gbW9yZSBoYW5kbGVy
cyBleGlzdAorICAgICAgICAgICAgLy8gKGF2b2lkcyBwb3RlbnRpYWwgZm9yIGVuZGxlc3MgcmVj
dXJzaW9uIGR1cmluZyByZW1vdmFsIG9mIHNwZWNpYWwgZXZlbnQgaGFuZGxlcnMpCisgICAgICAg
ICAgICBpZiAoIG9yaWdDb3VudCAmJiAhaGFuZGxlcnMubGVuZ3RoICkgeworICAgICAgICAgICAg
ICAgIGlmICggIXNwZWNpYWwudGVhcmRvd24gfHwKKyAgICAgICAgICAgICAgICAgICAgc3BlY2lh
bC50ZWFyZG93bi5jYWxsKCBlbGVtLCBuYW1lc3BhY2VzLCBlbGVtRGF0YS5oYW5kbGUgKSA9PT0g
ZmFsc2UgKSB7CisKKyAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LnJlbW92ZUV2ZW50KCBlbGVt
LCB0eXBlLCBlbGVtRGF0YS5oYW5kbGUgKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICAgICBkZWxldGUgZXZlbnRzWyB0eXBlIF07CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KworICAgICAgICAvLyBSZW1vdmUgZGF0YSBhbmQgdGhlIGV4cGFuZG8gaWYgaXQncyBubyBsb25n
ZXIgdXNlZAorICAgICAgICBpZiAoIGpRdWVyeS5pc0VtcHR5T2JqZWN0KCBldmVudHMgKSApIHsK
KyAgICAgICAgICAgIGRhdGFQcml2LnJlbW92ZSggZWxlbSwgImhhbmRsZSBldmVudHMiICk7Cisg
ICAgICAgIH0KKyAgICB9LAorCisgICAgZGlzcGF0Y2g6IGZ1bmN0aW9uKCBuYXRpdmVFdmVudCAp
IHsKKworICAgICAgICAvLyBNYWtlIGEgd3JpdGFibGUgalF1ZXJ5LkV2ZW50IGZyb20gdGhlIG5h
dGl2ZSBldmVudCBvYmplY3QKKyAgICAgICAgdmFyIGV2ZW50ID0galF1ZXJ5LmV2ZW50LmZpeCgg
bmF0aXZlRXZlbnQgKTsKKworICAgICAgICB2YXIgaSwgaiwgcmV0LCBtYXRjaGVkLCBoYW5kbGVP
YmosIGhhbmRsZXJRdWV1ZSwKKyAgICAgICAgICAgIGFyZ3MgPSBuZXcgQXJyYXkoIGFyZ3VtZW50
cy5sZW5ndGggKSwKKyAgICAgICAgICAgIGhhbmRsZXJzID0gKCBkYXRhUHJpdi5nZXQoIHRoaXMs
ICJldmVudHMiICkgfHwge30gKVsgZXZlbnQudHlwZSBdIHx8IFtdLAorICAgICAgICAgICAgc3Bl
Y2lhbCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsWyBldmVudC50eXBlIF0gfHwge307CisKKyAgICAg
ICAgLy8gVXNlIHRoZSBmaXgtZWQgalF1ZXJ5LkV2ZW50IHJhdGhlciB0aGFuIHRoZSAocmVhZC1v
bmx5KSBuYXRpdmUgZXZlbnQKKyAgICAgICAgYXJnc1sgMCBdID0gZXZlbnQ7CisKKyAgICAgICAg
Zm9yICggaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKysgKSB7CisgICAgICAgICAgICBh
cmdzWyBpIF0gPSBhcmd1bWVudHNbIGkgXTsKKyAgICAgICAgfQorCisgICAgICAgIGV2ZW50LmRl
bGVnYXRlVGFyZ2V0ID0gdGhpczsKKworICAgICAgICAvLyBDYWxsIHRoZSBwcmVEaXNwYXRjaCBo
b29rIGZvciB0aGUgbWFwcGVkIHR5cGUsIGFuZCBsZXQgaXQgYmFpbCBpZiBkZXNpcmVkCisgICAg
ICAgIGlmICggc3BlY2lhbC5wcmVEaXNwYXRjaCAmJiBzcGVjaWFsLnByZURpc3BhdGNoLmNhbGwo
IHRoaXMsIGV2ZW50ICkgPT09IGZhbHNlICkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgLy8gRGV0ZXJtaW5lIGhhbmRsZXJzCisgICAgICAgIGhhbmRsZXJRdWV1
ZSA9IGpRdWVyeS5ldmVudC5oYW5kbGVycy5jYWxsKCB0aGlzLCBldmVudCwgaGFuZGxlcnMgKTsK
KworICAgICAgICAvLyBSdW4gZGVsZWdhdGVzIGZpcnN0OyB0aGV5IG1heSB3YW50IHRvIHN0b3Ag
cHJvcGFnYXRpb24gYmVuZWF0aCB1cworICAgICAgICBpID0gMDsKKyAgICAgICAgd2hpbGUgKCAo
IG1hdGNoZWQgPSBoYW5kbGVyUXVldWVbIGkrKyBdICkgJiYgIWV2ZW50LmlzUHJvcGFnYXRpb25T
dG9wcGVkKCkgKSB7CisgICAgICAgICAgICBldmVudC5jdXJyZW50VGFyZ2V0ID0gbWF0Y2hlZC5l
bGVtOworCisgICAgICAgICAgICBqID0gMDsKKyAgICAgICAgICAgIHdoaWxlICggKCBoYW5kbGVP
YmogPSBtYXRjaGVkLmhhbmRsZXJzWyBqKysgXSApICYmCisgICAgICAgICAgICAgICAgIWV2ZW50
LmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkKCkgKSB7CisKKyAgICAgICAgICAgICAgICAv
LyBUcmlnZ2VyZWQgZXZlbnQgbXVzdCBlaXRoZXIgMSkgaGF2ZSBubyBuYW1lc3BhY2UsIG9yIDIp
IGhhdmUgbmFtZXNwYWNlKHMpCisgICAgICAgICAgICAgICAgLy8gYSBzdWJzZXQgb3IgZXF1YWwg
dG8gdGhvc2UgaW4gdGhlIGJvdW5kIGV2ZW50IChib3RoIGNhbiBoYXZlIG5vIG5hbWVzcGFjZSku
CisgICAgICAgICAgICAgICAgaWYgKCAhZXZlbnQucm5hbWVzcGFjZSB8fCBldmVudC5ybmFtZXNw
YWNlLnRlc3QoIGhhbmRsZU9iai5uYW1lc3BhY2UgKSApIHsKKworICAgICAgICAgICAgICAgICAg
ICBldmVudC5oYW5kbGVPYmogPSBoYW5kbGVPYmo7CisgICAgICAgICAgICAgICAgICAgIGV2ZW50
LmRhdGEgPSBoYW5kbGVPYmouZGF0YTsKKworICAgICAgICAgICAgICAgICAgICByZXQgPSAoICgg
alF1ZXJ5LmV2ZW50LnNwZWNpYWxbIGhhbmRsZU9iai5vcmlnVHlwZSBdIHx8IHt9ICkuaGFuZGxl
IHx8CisgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVPYmouaGFuZGxlciApLmFwcGx5KCBt
YXRjaGVkLmVsZW0sIGFyZ3MgKTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoIHJldCAhPT0g
dW5kZWZpbmVkICkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAoIGV2ZW50LnJlc3Vs
dCA9IHJldCApID09PSBmYWxzZSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVu
dC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0
b3BQcm9wYWdhdGlvbigpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisK
KyAgICAgICAgLy8gQ2FsbCB0aGUgcG9zdERpc3BhdGNoIGhvb2sgZm9yIHRoZSBtYXBwZWQgdHlw
ZQorICAgICAgICBpZiAoIHNwZWNpYWwucG9zdERpc3BhdGNoICkgeworICAgICAgICAgICAgc3Bl
Y2lhbC5wb3N0RGlzcGF0Y2guY2FsbCggdGhpcywgZXZlbnQgKTsKKyAgICAgICAgfQorCisgICAg
ICAgIHJldHVybiBldmVudC5yZXN1bHQ7CisgICAgfSwKKworICAgIGhhbmRsZXJzOiBmdW5jdGlv
biggZXZlbnQsIGhhbmRsZXJzICkgeworICAgICAgICB2YXIgaSwgaGFuZGxlT2JqLCBzZWwsIG1h
dGNoZWRIYW5kbGVycywgbWF0Y2hlZFNlbGVjdG9ycywKKyAgICAgICAgICAgIGhhbmRsZXJRdWV1
ZSA9IFtdLAorICAgICAgICAgICAgZGVsZWdhdGVDb3VudCA9IGhhbmRsZXJzLmRlbGVnYXRlQ291
bnQsCisgICAgICAgICAgICBjdXIgPSBldmVudC50YXJnZXQ7CisKKyAgICAgICAgLy8gRmluZCBk
ZWxlZ2F0ZSBoYW5kbGVycworICAgICAgICBpZiAoIGRlbGVnYXRlQ291bnQgJiYKKworICAgICAg
ICAgICAgLy8gU3VwcG9ydDogSUUgPD05CisgICAgICAgICAgICAvLyBCbGFjay1ob2xlIFNWRyA8
dXNlPiBpbnN0YW5jZSB0cmVlcyAodHJhYy0xMzE4MCkKKyAgICAgICAgICAgIGN1ci5ub2RlVHlw
ZSAmJgorCisgICAgICAgICAgICAvLyBTdXBwb3J0OiBGaXJlZm94IDw9NDIKKyAgICAgICAgICAg
IC8vIFN1cHByZXNzIHNwZWMtdmlvbGF0aW5nIGNsaWNrcyBpbmRpY2F0aW5nIGEgbm9uLXByaW1h
cnkgcG9pbnRlciBidXR0b24gKHRyYWMtMzg2MSkKKyAgICAgICAgICAgIC8vIGh0dHBzOi8vd3d3
LnczLm9yZy9UUi9ET00tTGV2ZWwtMy1FdmVudHMvI2V2ZW50LXR5cGUtY2xpY2sKKyAgICAgICAg
ICAgIC8vIFN1cHBvcnQ6IElFIDExIG9ubHkKKyAgICAgICAgICAgIC8vIC4uLmJ1dCBub3QgYXJy
b3cga2V5ICJjbGlja3MiIG9mIHJhZGlvIGlucHV0cywgd2hpY2ggY2FuIGhhdmUgYGJ1dHRvbmAg
LTEgKGdoLTIzNDMpCisgICAgICAgICAgICAhKCBldmVudC50eXBlID09PSAiY2xpY2siICYmIGV2
ZW50LmJ1dHRvbiA+PSAxICkgKSB7CisKKyAgICAgICAgICAgIGZvciAoIDsgY3VyICE9PSB0aGlz
OyBjdXIgPSBjdXIucGFyZW50Tm9kZSB8fCB0aGlzICkgeworCisgICAgICAgICAgICAgICAgLy8g
RG9uJ3QgY2hlY2sgbm9uLWVsZW1lbnRzICgjMTMyMDgpCisgICAgICAgICAgICAgICAgLy8gRG9u
J3QgcHJvY2VzcyBjbGlja3Mgb24gZGlzYWJsZWQgZWxlbWVudHMgKCM2OTExLCAjODE2NSwgIzEx
MzgyLCAjMTE3NjQpCisgICAgICAgICAgICAgICAgaWYgKCBjdXIubm9kZVR5cGUgPT09IDEgJiYg
ISggZXZlbnQudHlwZSA9PT0gImNsaWNrIiAmJiBjdXIuZGlzYWJsZWQgPT09IHRydWUgKSApIHsK
KyAgICAgICAgICAgICAgICAgICAgbWF0Y2hlZEhhbmRsZXJzID0gW107CisgICAgICAgICAgICAg
ICAgICAgIG1hdGNoZWRTZWxlY3RvcnMgPSB7fTsKKyAgICAgICAgICAgICAgICAgICAgZm9yICgg
aSA9IDA7IGkgPCBkZWxlZ2F0ZUNvdW50OyBpKysgKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBoYW5kbGVPYmogPSBoYW5kbGVyc1sgaSBdOworCisgICAgICAgICAgICAgICAgICAgICAgICAv
LyBEb24ndCBjb25mbGljdCB3aXRoIE9iamVjdC5wcm90b3R5cGUgcHJvcGVydGllcyAoIzEzMjAz
KQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsID0gaGFuZGxlT2JqLnNlbGVjdG9yICsgIiAi
OworCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIG1hdGNoZWRTZWxlY3RvcnNbIHNlbCBd
ID09PSB1bmRlZmluZWQgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlZFNl
bGVjdG9yc1sgc2VsIF0gPSBoYW5kbGVPYmoubmVlZHNDb250ZXh0ID8KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgalF1ZXJ5KCBzZWwsIHRoaXMgKS5pbmRleCggY3VyICkgPiAtMSA6
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5maW5kKCBzZWwsIHRoaXMs
IG51bGwsIFsgY3VyIF0gKS5sZW5ndGg7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoIG1hdGNoZWRTZWxlY3RvcnNbIHNlbCBdICkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZWRIYW5kbGVycy5wdXNoKCBoYW5kbGVPYmog
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICBpZiAoIG1hdGNoZWRIYW5kbGVycy5sZW5ndGggKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBoYW5kbGVyUXVldWUucHVzaCggeyBlbGVtOiBjdXIsIGhhbmRsZXJz
OiBtYXRjaGVkSGFuZGxlcnMgfSApOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gQWRkIHRoZSBy
ZW1haW5pbmcgKGRpcmVjdGx5LWJvdW5kKSBoYW5kbGVycworICAgICAgICBjdXIgPSB0aGlzOwor
ICAgICAgICBpZiAoIGRlbGVnYXRlQ291bnQgPCBoYW5kbGVycy5sZW5ndGggKSB7CisgICAgICAg
ICAgICBoYW5kbGVyUXVldWUucHVzaCggeyBlbGVtOiBjdXIsIGhhbmRsZXJzOiBoYW5kbGVycy5z
bGljZSggZGVsZWdhdGVDb3VudCApIH0gKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBo
YW5kbGVyUXVldWU7CisgICAgfSwKKworICAgIGFkZFByb3A6IGZ1bmN0aW9uKCBuYW1lLCBob29r
ICkgeworICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoIGpRdWVyeS5FdmVudC5wcm90b3R5
cGUsIG5hbWUsIHsKKyAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsCisgICAgICAgICAgICBj
b25maWd1cmFibGU6IHRydWUsCisKKyAgICAgICAgICAgIGdldDogalF1ZXJ5LmlzRnVuY3Rpb24o
IGhvb2sgKSA/CisgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAg
ICAgIGlmICggdGhpcy5vcmlnaW5hbEV2ZW50ICkgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBob29rKCB0aGlzLm9yaWdpbmFsRXZlbnQgKTsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIH0gOgorICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgICAgICAgICBpZiAoIHRoaXMub3JpZ2luYWxFdmVudCApIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcmlnaW5hbEV2ZW50WyBuYW1lIF07Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9LAorCisgICAgICAgICAgICBz
ZXQ6IGZ1bmN0aW9uKCB2YWx1ZSApIHsKKyAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJv
cGVydHkoIHRoaXMsIG5hbWUsIHsKKyAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1
ZSwKKyAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLAorICAgICAgICAgICAg
ICAgICAgICB3cml0YWJsZTogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVl
CisgICAgICAgICAgICAgICAgfSApOworICAgICAgICAgICAgfQorICAgICAgICB9ICk7CisgICAg
fSwKKworICAgIGZpeDogZnVuY3Rpb24oIG9yaWdpbmFsRXZlbnQgKSB7CisgICAgICAgIHJldHVy
biBvcmlnaW5hbEV2ZW50WyBqUXVlcnkuZXhwYW5kbyBdID8KKyAgICAgICAgICAgIG9yaWdpbmFs
RXZlbnQgOgorICAgICAgICAgICAgbmV3IGpRdWVyeS5FdmVudCggb3JpZ2luYWxFdmVudCApOwor
ICAgIH0sCisKKyAgICBzcGVjaWFsOiB7CisgICAgICAgIGxvYWQ6IHsKKworICAgICAgICAgICAg
Ly8gUHJldmVudCB0cmlnZ2VyZWQgaW1hZ2UubG9hZCBldmVudHMgZnJvbSBidWJibGluZyB0byB3
aW5kb3cubG9hZAorICAgICAgICAgICAgbm9CdWJibGU6IHRydWUKKyAgICAgICAgfSwKKyAgICAg
ICAgZm9jdXM6IHsKKworICAgICAgICAgICAgLy8gRmlyZSBuYXRpdmUgZXZlbnQgaWYgcG9zc2li
bGUgc28gYmx1ci9mb2N1cyBzZXF1ZW5jZSBpcyBjb3JyZWN0CisgICAgICAgICAgICB0cmlnZ2Vy
OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBpZiAoIHRoaXMgIT09IHNhZmVBY3RpdmVF
bGVtZW50KCkgJiYgdGhpcy5mb2N1cyApIHsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5mb2N1
cygpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGRlbGVnYXRlVHlwZTogImZvY3VzaW4iCisg
ICAgICAgIH0sCisgICAgICAgIGJsdXI6IHsKKyAgICAgICAgICAgIHRyaWdnZXI6IGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgICAgIGlmICggdGhpcyA9PT0gc2FmZUFjdGl2ZUVsZW1lbnQoKSAm
JiB0aGlzLmJsdXIgKSB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuYmx1cigpOworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfSwKKyAgICAgICAgICAgIGRlbGVnYXRlVHlwZTogImZvY3Vzb3V0IgorICAgICAgICB9LAor
ICAgICAgICBjbGljazogeworCisgICAgICAgICAgICAvLyBGb3IgY2hlY2tib3gsIGZpcmUgbmF0
aXZlIGV2ZW50IHNvIGNoZWNrZWQgc3RhdGUgd2lsbCBiZSByaWdodAorICAgICAgICAgICAgdHJp
Z2dlcjogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgaWYgKCB0aGlzLnR5cGUgPT09ICJj
aGVja2JveCIgJiYgdGhpcy5jbGljayAmJiBqUXVlcnkubm9kZU5hbWUoIHRoaXMsICJpbnB1dCIg
KSApIHsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5jbGljaygpOworICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKwor
ICAgICAgICAgICAgLy8gRm9yIGNyb3NzLWJyb3dzZXIgY29uc2lzdGVuY3ksIGRvbid0IGZpcmUg
bmF0aXZlIC5jbGljaygpIG9uIGxpbmtzCisgICAgICAgICAgICBfZGVmYXVsdDogZnVuY3Rpb24o
IGV2ZW50ICkgeworICAgICAgICAgICAgICAgIHJldHVybiBqUXVlcnkubm9kZU5hbWUoIGV2ZW50
LnRhcmdldCwgImEiICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisKKyAgICAgICAgYmVm
b3JldW5sb2FkOiB7CisgICAgICAgICAgICBwb3N0RGlzcGF0Y2g6IGZ1bmN0aW9uKCBldmVudCAp
IHsKKworICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6IEZpcmVmb3ggMjArCisgICAgICAgICAg
ICAgICAgLy8gRmlyZWZveCBkb2Vzbid0IGFsZXJ0IGlmIHRoZSByZXR1cm5WYWx1ZSBmaWVsZCBp
cyBub3Qgc2V0LgorICAgICAgICAgICAgICAgIGlmICggZXZlbnQucmVzdWx0ICE9PSB1bmRlZmlu
ZWQgJiYgZXZlbnQub3JpZ2luYWxFdmVudCApIHsKKyAgICAgICAgICAgICAgICAgICAgZXZlbnQu
b3JpZ2luYWxFdmVudC5yZXR1cm5WYWx1ZSA9IGV2ZW50LnJlc3VsdDsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9OworCitqUXVlcnkucmVtb3Zl
RXZlbnQgPSBmdW5jdGlvbiggZWxlbSwgdHlwZSwgaGFuZGxlICkgeworCisgICAgLy8gVGhpcyAi
aWYiIGlzIG5lZWRlZCBmb3IgcGxhaW4gb2JqZWN0cworICAgIGlmICggZWxlbS5yZW1vdmVFdmVu
dExpc3RlbmVyICkgeworICAgICAgICBlbGVtLnJlbW92ZUV2ZW50TGlzdGVuZXIoIHR5cGUsIGhh
bmRsZSApOworICAgIH0KK307CisKK2pRdWVyeS5FdmVudCA9IGZ1bmN0aW9uKCBzcmMsIHByb3Bz
ICkgeworCisgICAgLy8gQWxsb3cgaW5zdGFudGlhdGlvbiB3aXRob3V0IHRoZSAnbmV3JyBrZXl3
b3JkCisgICAgaWYgKCAhKCB0aGlzIGluc3RhbmNlb2YgalF1ZXJ5LkV2ZW50ICkgKSB7CisgICAg
ICAgIHJldHVybiBuZXcgalF1ZXJ5LkV2ZW50KCBzcmMsIHByb3BzICk7CisgICAgfQorCisgICAg
Ly8gRXZlbnQgb2JqZWN0CisgICAgaWYgKCBzcmMgJiYgc3JjLnR5cGUgKSB7CisgICAgICAgIHRo
aXMub3JpZ2luYWxFdmVudCA9IHNyYzsKKyAgICAgICAgdGhpcy50eXBlID0gc3JjLnR5cGU7CisK
KyAgICAgICAgLy8gRXZlbnRzIGJ1YmJsaW5nIHVwIHRoZSBkb2N1bWVudCBtYXkgaGF2ZSBiZWVu
IG1hcmtlZCBhcyBwcmV2ZW50ZWQKKyAgICAgICAgLy8gYnkgYSBoYW5kbGVyIGxvd2VyIGRvd24g
dGhlIHRyZWU7IHJlZmxlY3QgdGhlIGNvcnJlY3QgdmFsdWUuCisgICAgICAgIHRoaXMuaXNEZWZh
dWx0UHJldmVudGVkID0gc3JjLmRlZmF1bHRQcmV2ZW50ZWQgfHwKKyAgICAgICAgICAgICAgICBz
cmMuZGVmYXVsdFByZXZlbnRlZCA9PT0gdW5kZWZpbmVkICYmCisKKyAgICAgICAgICAgICAgICAv
LyBTdXBwb3J0OiBBbmRyb2lkIDw9Mi4zIG9ubHkKKyAgICAgICAgICAgICAgICBzcmMucmV0dXJu
VmFsdWUgPT09IGZhbHNlID8KKyAgICAgICAgICAgIHJldHVyblRydWUgOgorICAgICAgICAgICAg
cmV0dXJuRmFsc2U7CisKKyAgICAgICAgLy8gQ3JlYXRlIHRhcmdldCBwcm9wZXJ0aWVzCisgICAg
ICAgIC8vIFN1cHBvcnQ6IFNhZmFyaSA8PTYgLSA3IG9ubHkKKyAgICAgICAgLy8gVGFyZ2V0IHNo
b3VsZCBub3QgYmUgYSB0ZXh0IG5vZGUgKCM1MDQsICMxMzE0MykKKyAgICAgICAgdGhpcy50YXJn
ZXQgPSAoIHNyYy50YXJnZXQgJiYgc3JjLnRhcmdldC5ub2RlVHlwZSA9PT0gMyApID8KKyAgICAg
ICAgICAgIHNyYy50YXJnZXQucGFyZW50Tm9kZSA6CisgICAgICAgICAgICBzcmMudGFyZ2V0Owor
CisgICAgICAgIHRoaXMuY3VycmVudFRhcmdldCA9IHNyYy5jdXJyZW50VGFyZ2V0OworICAgICAg
ICB0aGlzLnJlbGF0ZWRUYXJnZXQgPSBzcmMucmVsYXRlZFRhcmdldDsKKworICAgIC8vIEV2ZW50
IHR5cGUKKyAgICB9IGVsc2UgeworICAgICAgICB0aGlzLnR5cGUgPSBzcmM7CisgICAgfQorCisg
ICAgLy8gUHV0IGV4cGxpY2l0bHkgcHJvdmlkZWQgcHJvcGVydGllcyBvbnRvIHRoZSBldmVudCBv
YmplY3QKKyAgICBpZiAoIHByb3BzICkgeworICAgICAgICBqUXVlcnkuZXh0ZW5kKCB0aGlzLCBw
cm9wcyApOworICAgIH0KKworICAgIC8vIENyZWF0ZSBhIHRpbWVzdGFtcCBpZiBpbmNvbWluZyBl
dmVudCBkb2Vzbid0IGhhdmUgb25lCisgICAgdGhpcy50aW1lU3RhbXAgPSBzcmMgJiYgc3JjLnRp
bWVTdGFtcCB8fCBqUXVlcnkubm93KCk7CisKKyAgICAvLyBNYXJrIGl0IGFzIGZpeGVkCisgICAg
dGhpc1sgalF1ZXJ5LmV4cGFuZG8gXSA9IHRydWU7Cit9OworCisvLyBqUXVlcnkuRXZlbnQgaXMg
YmFzZWQgb24gRE9NMyBFdmVudHMgYXMgc3BlY2lmaWVkIGJ5IHRoZSBFQ01BU2NyaXB0IExhbmd1
YWdlIEJpbmRpbmcKKy8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi8yMDAzL1dELURPTS1MZXZlbC0z
LUV2ZW50cy0yMDAzMDMzMS9lY21hLXNjcmlwdC1iaW5kaW5nLmh0bWwKK2pRdWVyeS5FdmVudC5w
cm90b3R5cGUgPSB7CisgICAgY29uc3RydWN0b3I6IGpRdWVyeS5FdmVudCwKKyAgICBpc0RlZmF1
bHRQcmV2ZW50ZWQ6IHJldHVybkZhbHNlLAorICAgIGlzUHJvcGFnYXRpb25TdG9wcGVkOiByZXR1
cm5GYWxzZSwKKyAgICBpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZDogcmV0dXJuRmFsc2Us
CisgICAgaXNTaW11bGF0ZWQ6IGZhbHNlLAorCisgICAgcHJldmVudERlZmF1bHQ6IGZ1bmN0aW9u
KCkgeworICAgICAgICB2YXIgZSA9IHRoaXMub3JpZ2luYWxFdmVudDsKKworICAgICAgICB0aGlz
LmlzRGVmYXVsdFByZXZlbnRlZCA9IHJldHVyblRydWU7CisKKyAgICAgICAgaWYgKCBlICYmICF0
aGlzLmlzU2ltdWxhdGVkICkgeworICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOworICAg
ICAgICB9CisgICAgfSwKKyAgICBzdG9wUHJvcGFnYXRpb246IGZ1bmN0aW9uKCkgeworICAgICAg
ICB2YXIgZSA9IHRoaXMub3JpZ2luYWxFdmVudDsKKworICAgICAgICB0aGlzLmlzUHJvcGFnYXRp
b25TdG9wcGVkID0gcmV0dXJuVHJ1ZTsKKworICAgICAgICBpZiAoIGUgJiYgIXRoaXMuaXNTaW11
bGF0ZWQgKSB7CisgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpOworICAgICAgICB9Cisg
ICAgfSwKKyAgICBzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246IGZ1bmN0aW9uKCkgeworICAgICAg
ICB2YXIgZSA9IHRoaXMub3JpZ2luYWxFdmVudDsKKworICAgICAgICB0aGlzLmlzSW1tZWRpYXRl
UHJvcGFnYXRpb25TdG9wcGVkID0gcmV0dXJuVHJ1ZTsKKworICAgICAgICBpZiAoIGUgJiYgIXRo
aXMuaXNTaW11bGF0ZWQgKSB7CisgICAgICAgICAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlv
bigpOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5zdG9wUHJvcGFnYXRpb24oKTsKKyAgICB9
Cit9OworCisvLyBJbmNsdWRlcyBhbGwgY29tbW9uIGV2ZW50IHByb3BzIGluY2x1ZGluZyBLZXlF
dmVudCBhbmQgTW91c2VFdmVudCBzcGVjaWZpYyBwcm9wcworalF1ZXJ5LmVhY2goIHsKKyAgICBh
bHRLZXk6IHRydWUsCisgICAgYnViYmxlczogdHJ1ZSwKKyAgICBjYW5jZWxhYmxlOiB0cnVlLAor
ICAgIGNoYW5nZWRUb3VjaGVzOiB0cnVlLAorICAgIGN0cmxLZXk6IHRydWUsCisgICAgZGV0YWls
OiB0cnVlLAorICAgIGV2ZW50UGhhc2U6IHRydWUsCisgICAgbWV0YUtleTogdHJ1ZSwKKyAgICBw
YWdlWDogdHJ1ZSwKKyAgICBwYWdlWTogdHJ1ZSwKKyAgICBzaGlmdEtleTogdHJ1ZSwKKyAgICB2
aWV3OiB0cnVlLAorICAgICJjaGFyIjogdHJ1ZSwKKyAgICBjaGFyQ29kZTogdHJ1ZSwKKyAgICBr
ZXk6IHRydWUsCisgICAga2V5Q29kZTogdHJ1ZSwKKyAgICBidXR0b246IHRydWUsCisgICAgYnV0
dG9uczogdHJ1ZSwKKyAgICBjbGllbnRYOiB0cnVlLAorICAgIGNsaWVudFk6IHRydWUsCisgICAg
b2Zmc2V0WDogdHJ1ZSwKKyAgICBvZmZzZXRZOiB0cnVlLAorICAgIHBvaW50ZXJJZDogdHJ1ZSwK
KyAgICBwb2ludGVyVHlwZTogdHJ1ZSwKKyAgICBzY3JlZW5YOiB0cnVlLAorICAgIHNjcmVlblk6
IHRydWUsCisgICAgdGFyZ2V0VG91Y2hlczogdHJ1ZSwKKyAgICB0b0VsZW1lbnQ6IHRydWUsCisg
ICAgdG91Y2hlczogdHJ1ZSwKKworICAgIHdoaWNoOiBmdW5jdGlvbiggZXZlbnQgKSB7CisgICAg
ICAgIHZhciBidXR0b24gPSBldmVudC5idXR0b247CisKKyAgICAgICAgLy8gQWRkIHdoaWNoIGZv
ciBrZXkgZXZlbnRzCisgICAgICAgIGlmICggZXZlbnQud2hpY2ggPT0gbnVsbCAmJiBya2V5RXZl
bnQudGVzdCggZXZlbnQudHlwZSApICkgeworICAgICAgICAgICAgcmV0dXJuIGV2ZW50LmNoYXJD
b2RlICE9IG51bGwgPyBldmVudC5jaGFyQ29kZSA6IGV2ZW50LmtleUNvZGU7CisgICAgICAgIH0K
KworICAgICAgICAvLyBBZGQgd2hpY2ggZm9yIGNsaWNrOiAxID09PSBsZWZ0OyAyID09PSBtaWRk
bGU7IDMgPT09IHJpZ2h0CisgICAgICAgIGlmICggIWV2ZW50LndoaWNoICYmIGJ1dHRvbiAhPT0g
dW5kZWZpbmVkICYmIHJtb3VzZUV2ZW50LnRlc3QoIGV2ZW50LnR5cGUgKSApIHsKKyAgICAgICAg
ICAgIGlmICggYnV0dG9uICYgMSApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCBidXR0b24gJiAyICkgeworICAgICAgICAgICAg
ICAgIHJldHVybiAzOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIGJ1dHRvbiAm
IDQgKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIDI7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHJldHVybiAwOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGV2ZW50LndoaWNo
OworICAgIH0KK30sIGpRdWVyeS5ldmVudC5hZGRQcm9wICk7CisKKy8vIENyZWF0ZSBtb3VzZWVu
dGVyL2xlYXZlIGV2ZW50cyB1c2luZyBtb3VzZW92ZXIvb3V0IGFuZCBldmVudC10aW1lIGNoZWNr
cworLy8gc28gdGhhdCBldmVudCBkZWxlZ2F0aW9uIHdvcmtzIGluIGpRdWVyeS4KKy8vIERvIHRo
ZSBzYW1lIGZvciBwb2ludGVyZW50ZXIvcG9pbnRlcmxlYXZlIGFuZCBwb2ludGVyb3Zlci9wb2lu
dGVyb3V0CisvLworLy8gU3VwcG9ydDogU2FmYXJpIDcgb25seQorLy8gU2FmYXJpIHNlbmRzIG1v
dXNlZW50ZXIgdG9vIG9mdGVuOyBzZWU6CisvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3Av
Y2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD00NzAyNTgKKy8vIGZvciB0aGUgZGVzY3JpcHRpb24g
b2YgdGhlIGJ1ZyAoaXQgZXhpc3RlZCBpbiBvbGRlciBDaHJvbWUgdmVyc2lvbnMgYXMgd2VsbCku
CitqUXVlcnkuZWFjaCggeworICAgIG1vdXNlZW50ZXI6ICJtb3VzZW92ZXIiLAorICAgIG1vdXNl
bGVhdmU6ICJtb3VzZW91dCIsCisgICAgcG9pbnRlcmVudGVyOiAicG9pbnRlcm92ZXIiLAorICAg
IHBvaW50ZXJsZWF2ZTogInBvaW50ZXJvdXQiCit9LCBmdW5jdGlvbiggb3JpZywgZml4ICkgewor
ICAgIGpRdWVyeS5ldmVudC5zcGVjaWFsWyBvcmlnIF0gPSB7CisgICAgICAgIGRlbGVnYXRlVHlw
ZTogZml4LAorICAgICAgICBiaW5kVHlwZTogZml4LAorCisgICAgICAgIGhhbmRsZTogZnVuY3Rp
b24oIGV2ZW50ICkgeworICAgICAgICAgICAgdmFyIHJldCwKKyAgICAgICAgICAgICAgICB0YXJn
ZXQgPSB0aGlzLAorICAgICAgICAgICAgICAgIHJlbGF0ZWQgPSBldmVudC5yZWxhdGVkVGFyZ2V0
LAorICAgICAgICAgICAgICAgIGhhbmRsZU9iaiA9IGV2ZW50LmhhbmRsZU9iajsKKworICAgICAg
ICAgICAgLy8gRm9yIG1vdXNlZW50ZXIvbGVhdmUgY2FsbCB0aGUgaGFuZGxlciBpZiByZWxhdGVk
IGlzIG91dHNpZGUgdGhlIHRhcmdldC4KKyAgICAgICAgICAgIC8vIE5COiBObyByZWxhdGVkVGFy
Z2V0IGlmIHRoZSBtb3VzZSBsZWZ0L2VudGVyZWQgdGhlIGJyb3dzZXIgd2luZG93CisgICAgICAg
ICAgICBpZiAoICFyZWxhdGVkIHx8ICggcmVsYXRlZCAhPT0gdGFyZ2V0ICYmICFqUXVlcnkuY29u
dGFpbnMoIHRhcmdldCwgcmVsYXRlZCApICkgKSB7CisgICAgICAgICAgICAgICAgZXZlbnQudHlw
ZSA9IGhhbmRsZU9iai5vcmlnVHlwZTsKKyAgICAgICAgICAgICAgICByZXQgPSBoYW5kbGVPYmou
aGFuZGxlci5hcHBseSggdGhpcywgYXJndW1lbnRzICk7CisgICAgICAgICAgICAgICAgZXZlbnQu
dHlwZSA9IGZpeDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiByZXQ7CisgICAg
ICAgIH0KKyAgICB9OworfSApOworCitqUXVlcnkuZm4uZXh0ZW5kKCB7CisKKyAgICBvbjogZnVu
Y3Rpb24oIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4gKSB7CisgICAgICAgIHJldHVybiBvbigg
dGhpcywgdHlwZXMsIHNlbGVjdG9yLCBkYXRhLCBmbiApOworICAgIH0sCisgICAgb25lOiBmdW5j
dGlvbiggdHlwZXMsIHNlbGVjdG9yLCBkYXRhLCBmbiApIHsKKyAgICAgICAgcmV0dXJuIG9uKCB0
aGlzLCB0eXBlcywgc2VsZWN0b3IsIGRhdGEsIGZuLCAxICk7CisgICAgfSwKKyAgICBvZmY6IGZ1
bmN0aW9uKCB0eXBlcywgc2VsZWN0b3IsIGZuICkgeworICAgICAgICB2YXIgaGFuZGxlT2JqLCB0
eXBlOworICAgICAgICBpZiAoIHR5cGVzICYmIHR5cGVzLnByZXZlbnREZWZhdWx0ICYmIHR5cGVz
LmhhbmRsZU9iaiApIHsKKworICAgICAgICAgICAgLy8gKCBldmVudCApICBkaXNwYXRjaGVkIGpR
dWVyeS5FdmVudAorICAgICAgICAgICAgaGFuZGxlT2JqID0gdHlwZXMuaGFuZGxlT2JqOworICAg
ICAgICAgICAgalF1ZXJ5KCB0eXBlcy5kZWxlZ2F0ZVRhcmdldCApLm9mZigKKyAgICAgICAgICAg
ICAgICBoYW5kbGVPYmoubmFtZXNwYWNlID8KKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlT2Jq
Lm9yaWdUeXBlICsgIi4iICsgaGFuZGxlT2JqLm5hbWVzcGFjZSA6CisgICAgICAgICAgICAgICAg
ICAgIGhhbmRsZU9iai5vcmlnVHlwZSwKKyAgICAgICAgICAgICAgICBoYW5kbGVPYmouc2VsZWN0
b3IsCisgICAgICAgICAgICAgICAgaGFuZGxlT2JqLmhhbmRsZXIKKyAgICAgICAgICAgICk7Cisg
ICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgfQorICAgICAgICBpZiAoIHR5cGVvZiB0
eXBlcyA9PT0gIm9iamVjdCIgKSB7CisKKyAgICAgICAgICAgIC8vICggdHlwZXMtb2JqZWN0IFss
IHNlbGVjdG9yXSApCisgICAgICAgICAgICBmb3IgKCB0eXBlIGluIHR5cGVzICkgeworICAgICAg
ICAgICAgICAgIHRoaXMub2ZmKCB0eXBlLCBzZWxlY3RvciwgdHlwZXNbIHR5cGUgXSApOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0KKyAgICAgICAg
aWYgKCBzZWxlY3RvciA9PT0gZmFsc2UgfHwgdHlwZW9mIHNlbGVjdG9yID09PSAiZnVuY3Rpb24i
ICkgeworCisgICAgICAgICAgICAvLyAoIHR5cGVzIFssIGZuXSApCisgICAgICAgICAgICBmbiA9
IHNlbGVjdG9yOworICAgICAgICAgICAgc2VsZWN0b3IgPSB1bmRlZmluZWQ7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKCBmbiA9PT0gZmFsc2UgKSB7CisgICAgICAgICAgICBmbiA9IHJldHVybkZh
bHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgalF1ZXJ5LmV2ZW50LnJlbW92ZSggdGhpcywgdHlwZXMsIGZuLCBzZWxlY3Rv
ciApOworICAgICAgICB9ICk7CisgICAgfQorfSApOworCityZXR1cm4galF1ZXJ5OworfSApOwpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMv
ZXZlbnQvYWpheC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkv
c3JjL2V2ZW50L2FqYXguanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDAwYjE1NzdhZjcxYjU3MmYyM2QzYmNlNGU0
OTc5ZTBhZDM3MDU4MAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25v
ZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2V2ZW50L2FqYXguanMKQEAgLTAsMCArMSwyMiBAQAorZGVm
aW5lKCBbCisgICAgIi4uL2NvcmUiLAorICAgICIuLi9ldmVudCIKK10sIGZ1bmN0aW9uKCBqUXVl
cnkgKSB7CisKKyJ1c2Ugc3RyaWN0IjsKKworLy8gQXR0YWNoIGEgYnVuY2ggb2YgZnVuY3Rpb25z
IGZvciBoYW5kbGluZyBjb21tb24gQUpBWCBldmVudHMKK2pRdWVyeS5lYWNoKCBbCisgICAgImFq
YXhTdGFydCIsCisgICAgImFqYXhTdG9wIiwKKyAgICAiYWpheENvbXBsZXRlIiwKKyAgICAiYWph
eEVycm9yIiwKKyAgICAiYWpheFN1Y2Nlc3MiLAorICAgICJhamF4U2VuZCIKK10sIGZ1bmN0aW9u
KCBpLCB0eXBlICkgeworICAgIGpRdWVyeS5mblsgdHlwZSBdID0gZnVuY3Rpb24oIGZuICkgewor
ICAgICAgICByZXR1cm4gdGhpcy5vbiggdHlwZSwgZm4gKTsKKyAgICB9OworfSApOworCit9ICk7
CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3Ny
Yy9ldmVudC9hbGlhcy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVl
cnkvc3JjL2V2ZW50L2FsaWFzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE1YmQ5NjA0ZDdmOTQxZDBlNmEyN2Ex
YjUyMjViNDJjYWI5YzJlOTcKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9u
ZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9ldmVudC9hbGlhcy5qcwpAQCAtMCwwICsxLDI5IEBA
CitkZWZpbmUoIFsKKyAgICAiLi4vY29yZSIsCisKKyAgICAiLi4vZXZlbnQiLAorICAgICIuL3Ry
aWdnZXIiCitdLCBmdW5jdGlvbiggalF1ZXJ5ICkgeworCisidXNlIHN0cmljdCI7CisKK2pRdWVy
eS5lYWNoKCAoICJibHVyIGZvY3VzIGZvY3VzaW4gZm9jdXNvdXQgcmVzaXplIHNjcm9sbCBjbGlj
ayBkYmxjbGljayAiICsKKyAgICAibW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3Zl
ciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgIiArCisgICAgImNoYW5nZSBzZWxlY3Qg
c3VibWl0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgY29udGV4dG1lbnUiICkuc3BsaXQoICIgIiAp
LAorICAgIGZ1bmN0aW9uKCBpLCBuYW1lICkgeworCisgICAgLy8gSGFuZGxlIGV2ZW50IGJpbmRp
bmcKKyAgICBqUXVlcnkuZm5bIG5hbWUgXSA9IGZ1bmN0aW9uKCBkYXRhLCBmbiApIHsKKyAgICAg
ICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPiAwID8KKyAgICAgICAgICAgIHRoaXMub24oIG5h
bWUsIG51bGwsIGRhdGEsIGZuICkgOgorICAgICAgICAgICAgdGhpcy50cmlnZ2VyKCBuYW1lICk7
CisgICAgfTsKK30gKTsKKworalF1ZXJ5LmZuLmV4dGVuZCggeworICAgIGhvdmVyOiBmdW5jdGlv
biggZm5PdmVyLCBmbk91dCApIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubW91c2VlbnRlciggZm5P
dmVyICkubW91c2VsZWF2ZSggZm5PdXQgfHwgZm5PdmVyICk7CisgICAgfQorfSApOworCit9ICk7
CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3Ny
Yy9ldmVudC9mb2N1c2luLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2px
dWVyeS9zcmMvZXZlbnQvZm9jdXNpbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNWU5NTA3ZTFjZWQ5YWNjNjc3
OWU3MGUzMTc4YmU0ZjNkZjgxNDEyCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFj
a2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvZXZlbnQvZm9jdXNpbi5qcwpAQCAtMCwwICsx
LDU1IEBACitkZWZpbmUoIFsKKyAgICAiLi4vY29yZSIsCisgICAgIi4uL2RhdGEvdmFyL2RhdGFQ
cml2IiwKKyAgICAiLi9zdXBwb3J0IiwKKworICAgICIuLi9ldmVudCIsCisgICAgIi4vdHJpZ2dl
ciIKK10sIGZ1bmN0aW9uKCBqUXVlcnksIGRhdGFQcml2LCBzdXBwb3J0ICkgeworCisidXNlIHN0
cmljdCI7CisKKy8vIFN1cHBvcnQ6IEZpcmVmb3ggPD00NAorLy8gRmlyZWZveCBkb2Vzbid0IGhh
dmUgZm9jdXMoaW4gfCBvdXQpIGV2ZW50cworLy8gUmVsYXRlZCB0aWNrZXQgLSBodHRwczovL2J1
Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD02ODc3ODcKKy8vCisvLyBTdXBwb3J0
OiBDaHJvbWUgPD00OCAtIDQ5LCBTYWZhcmkgPD05LjAgLSA5LjEKKy8vIGZvY3VzKGluIHwgb3V0
KSBldmVudHMgZmlyZSBhZnRlciBmb2N1cyAmIGJsdXIgZXZlbnRzLAorLy8gd2hpY2ggaXMgc3Bl
YyB2aW9sYXRpb24gLSBodHRwOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2ZWwtMy1FdmVudHMvI2V2
ZW50cy1mb2N1c2V2ZW50LWV2ZW50LW9yZGVyCisvLyBSZWxhdGVkIHRpY2tldCAtIGh0dHBzOi8v
YnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTQ0OTg1NworaWYg
KCAhc3VwcG9ydC5mb2N1c2luICkgeworICAgIGpRdWVyeS5lYWNoKCB7IGZvY3VzOiAiZm9jdXNp
biIsIGJsdXI6ICJmb2N1c291dCIgfSwgZnVuY3Rpb24oIG9yaWcsIGZpeCApIHsKKworICAgICAg
ICAvLyBBdHRhY2ggYSBzaW5nbGUgY2FwdHVyaW5nIGhhbmRsZXIgb24gdGhlIGRvY3VtZW50IHdo
aWxlIHNvbWVvbmUgd2FudHMgZm9jdXNpbi9mb2N1c291dAorICAgICAgICB2YXIgaGFuZGxlciA9
IGZ1bmN0aW9uKCBldmVudCApIHsKKyAgICAgICAgICAgIGpRdWVyeS5ldmVudC5zaW11bGF0ZSgg
Zml4LCBldmVudC50YXJnZXQsIGpRdWVyeS5ldmVudC5maXgoIGV2ZW50ICkgKTsKKyAgICAgICAg
fTsKKworICAgICAgICBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgZml4IF0gPSB7CisgICAgICAgICAg
ICBzZXR1cDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgdmFyIGRvYyA9IHRoaXMub3du
ZXJEb2N1bWVudCB8fCB0aGlzLAorICAgICAgICAgICAgICAgICAgICBhdHRhY2hlcyA9IGRhdGFQ
cml2LmFjY2VzcyggZG9jLCBmaXggKTsKKworICAgICAgICAgICAgICAgIGlmICggIWF0dGFjaGVz
ICkgeworICAgICAgICAgICAgICAgICAgICBkb2MuYWRkRXZlbnRMaXN0ZW5lciggb3JpZywgaGFu
ZGxlciwgdHJ1ZSApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkYXRhUHJp
di5hY2Nlc3MoIGRvYywgZml4LCAoIGF0dGFjaGVzIHx8IDAgKSArIDEgKTsKKyAgICAgICAgICAg
IH0sCisgICAgICAgICAgICB0ZWFyZG93bjogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAg
dmFyIGRvYyA9IHRoaXMub3duZXJEb2N1bWVudCB8fCB0aGlzLAorICAgICAgICAgICAgICAgICAg
ICBhdHRhY2hlcyA9IGRhdGFQcml2LmFjY2VzcyggZG9jLCBmaXggKSAtIDE7CisKKyAgICAgICAg
ICAgICAgICBpZiAoICFhdHRhY2hlcyApIHsKKyAgICAgICAgICAgICAgICAgICAgZG9jLnJlbW92
ZUV2ZW50TGlzdGVuZXIoIG9yaWcsIGhhbmRsZXIsIHRydWUgKTsKKyAgICAgICAgICAgICAgICAg
ICAgZGF0YVByaXYucmVtb3ZlKCBkb2MsIGZpeCApOworCisgICAgICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgZGF0YVByaXYuYWNjZXNzKCBkb2MsIGZpeCwgYXR0YWNo
ZXMgKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAg
fSApOworfQorCityZXR1cm4galF1ZXJ5OworfSApOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
YmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvZXZlbnQvc3VwcG9ydC5qcyBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2V2ZW50L3N1cHBvcnQuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMzAxMzAyYjUwYmUwNDg1M2UzZjUwZTI4MjkxMDNjMjllYjBjZTNlMgotLS0g
L2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkv
c3JjL2V2ZW50L3N1cHBvcnQuanMKQEAgLTAsMCArMSwxMSBAQAorZGVmaW5lKCBbCisgICAgIi4u
L3Zhci9zdXBwb3J0IgorXSwgZnVuY3Rpb24oIHN1cHBvcnQgKSB7CisKKyJ1c2Ugc3RyaWN0IjsK
Kworc3VwcG9ydC5mb2N1c2luID0gIm9uZm9jdXNpbiIgaW4gd2luZG93OworCityZXR1cm4gc3Vw
cG9ydDsKKworfSApOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1
bGVzL2pxdWVyeS9zcmMvZXZlbnQvdHJpZ2dlci5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25v
ZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2V2ZW50L3RyaWdnZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWY4Mzkw
YWI4NTQwZDE4MDcwYmQ4ZWViYjUxOWQ2Y2I2NTU5ZDY2MQotLS0gL2Rldi9udWxsCisrKyBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2V2ZW50L3RyaWdnZXIu
anMKQEAgLTAsMCArMSwxODUgQEAKK2RlZmluZSggWworICAgICIuLi9jb3JlIiwKKyAgICAiLi4v
dmFyL2RvY3VtZW50IiwKKyAgICAiLi4vZGF0YS92YXIvZGF0YVByaXYiLAorICAgICIuLi9kYXRh
L3Zhci9hY2NlcHREYXRhIiwKKyAgICAiLi4vdmFyL2hhc093biIsCisKKyAgICAiLi4vZXZlbnQi
CitdLCBmdW5jdGlvbiggalF1ZXJ5LCBkb2N1bWVudCwgZGF0YVByaXYsIGFjY2VwdERhdGEsIGhh
c093biApIHsKKworInVzZSBzdHJpY3QiOworCit2YXIgcmZvY3VzTW9ycGggPSAvXig/OmZvY3Vz
aW5mb2N1c3xmb2N1c291dGJsdXIpJC87CisKK2pRdWVyeS5leHRlbmQoIGpRdWVyeS5ldmVudCwg
eworCisgICAgdHJpZ2dlcjogZnVuY3Rpb24oIGV2ZW50LCBkYXRhLCBlbGVtLCBvbmx5SGFuZGxl
cnMgKSB7CisKKyAgICAgICAgdmFyIGksIGN1ciwgdG1wLCBidWJibGVUeXBlLCBvbnR5cGUsIGhh
bmRsZSwgc3BlY2lhbCwKKyAgICAgICAgICAgIGV2ZW50UGF0aCA9IFsgZWxlbSB8fCBkb2N1bWVu
dCBdLAorICAgICAgICAgICAgdHlwZSA9IGhhc093bi5jYWxsKCBldmVudCwgInR5cGUiICkgPyBl
dmVudC50eXBlIDogZXZlbnQsCisgICAgICAgICAgICBuYW1lc3BhY2VzID0gaGFzT3duLmNhbGwo
IGV2ZW50LCAibmFtZXNwYWNlIiApID8gZXZlbnQubmFtZXNwYWNlLnNwbGl0KCAiLiIgKSA6IFtd
OworCisgICAgICAgIGN1ciA9IHRtcCA9IGVsZW0gPSBlbGVtIHx8IGRvY3VtZW50OworCisgICAg
ICAgIC8vIERvbid0IGRvIGV2ZW50cyBvbiB0ZXh0IGFuZCBjb21tZW50IG5vZGVzCisgICAgICAg
IGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMyB8fCBlbGVtLm5vZGVUeXBlID09PSA4ICkgeworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gZm9jdXMvYmx1ciBtb3Jw
aHMgdG8gZm9jdXNpbi9vdXQ7IGVuc3VyZSB3ZSdyZSBub3QgZmlyaW5nIHRoZW0gcmlnaHQgbm93
CisgICAgICAgIGlmICggcmZvY3VzTW9ycGgudGVzdCggdHlwZSArIGpRdWVyeS5ldmVudC50cmln
Z2VyZWQgKSApIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlm
ICggdHlwZS5pbmRleE9mKCAiLiIgKSA+IC0xICkgeworCisgICAgICAgICAgICAvLyBOYW1lc3Bh
Y2VkIHRyaWdnZXI7IGNyZWF0ZSBhIHJlZ2V4cCB0byBtYXRjaCBldmVudCB0eXBlIGluIGhhbmRs
ZSgpCisgICAgICAgICAgICBuYW1lc3BhY2VzID0gdHlwZS5zcGxpdCggIi4iICk7CisgICAgICAg
ICAgICB0eXBlID0gbmFtZXNwYWNlcy5zaGlmdCgpOworICAgICAgICAgICAgbmFtZXNwYWNlcy5z
b3J0KCk7CisgICAgICAgIH0KKyAgICAgICAgb250eXBlID0gdHlwZS5pbmRleE9mKCAiOiIgKSA8
IDAgJiYgIm9uIiArIHR5cGU7CisKKyAgICAgICAgLy8gQ2FsbGVyIGNhbiBwYXNzIGluIGEgalF1
ZXJ5LkV2ZW50IG9iamVjdCwgT2JqZWN0LCBvciBqdXN0IGFuIGV2ZW50IHR5cGUgc3RyaW5nCisg
ICAgICAgIGV2ZW50ID0gZXZlbnRbIGpRdWVyeS5leHBhbmRvIF0gPworICAgICAgICAgICAgZXZl
bnQgOgorICAgICAgICAgICAgbmV3IGpRdWVyeS5FdmVudCggdHlwZSwgdHlwZW9mIGV2ZW50ID09
PSAib2JqZWN0IiAmJiBldmVudCApOworCisgICAgICAgIC8vIFRyaWdnZXIgYml0bWFzazogJiAx
IGZvciBuYXRpdmUgaGFuZGxlcnM7ICYgMiBmb3IgalF1ZXJ5IChhbHdheXMgdHJ1ZSkKKyAgICAg
ICAgZXZlbnQuaXNUcmlnZ2VyID0gb25seUhhbmRsZXJzID8gMiA6IDM7CisgICAgICAgIGV2ZW50
Lm5hbWVzcGFjZSA9IG5hbWVzcGFjZXMuam9pbiggIi4iICk7CisgICAgICAgIGV2ZW50LnJuYW1l
c3BhY2UgPSBldmVudC5uYW1lc3BhY2UgPworICAgICAgICAgICAgbmV3IFJlZ0V4cCggIihefFxc
LikiICsgbmFtZXNwYWNlcy5qb2luKCAiXFwuKD86LipcXC58KSIgKSArICIoXFwufCQpIiApIDoK
KyAgICAgICAgICAgIG51bGw7CisKKyAgICAgICAgLy8gQ2xlYW4gdXAgdGhlIGV2ZW50IGluIGNh
c2UgaXQgaXMgYmVpbmcgcmV1c2VkCisgICAgICAgIGV2ZW50LnJlc3VsdCA9IHVuZGVmaW5lZDsK
KyAgICAgICAgaWYgKCAhZXZlbnQudGFyZ2V0ICkgeworICAgICAgICAgICAgZXZlbnQudGFyZ2V0
ID0gZWxlbTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIENsb25lIGFueSBpbmNvbWluZyBkYXRh
IGFuZCBwcmVwZW5kIHRoZSBldmVudCwgY3JlYXRpbmcgdGhlIGhhbmRsZXIgYXJnIGxpc3QKKyAg
ICAgICAgZGF0YSA9IGRhdGEgPT0gbnVsbCA/CisgICAgICAgICAgICBbIGV2ZW50IF0gOgorICAg
ICAgICAgICAgalF1ZXJ5Lm1ha2VBcnJheSggZGF0YSwgWyBldmVudCBdICk7CisKKyAgICAgICAg
Ly8gQWxsb3cgc3BlY2lhbCBldmVudHMgdG8gZHJhdyBvdXRzaWRlIHRoZSBsaW5lcworICAgICAg
ICBzcGVjaWFsID0galF1ZXJ5LmV2ZW50LnNwZWNpYWxbIHR5cGUgXSB8fCB7fTsKKyAgICAgICAg
aWYgKCAhb25seUhhbmRsZXJzICYmIHNwZWNpYWwudHJpZ2dlciAmJiBzcGVjaWFsLnRyaWdnZXIu
YXBwbHkoIGVsZW0sIGRhdGEgKSA9PT0gZmFsc2UgKSB7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICAvLyBEZXRlcm1pbmUgZXZlbnQgcHJvcGFnYXRpb24gcGF0aCBp
biBhZHZhbmNlLCBwZXIgVzNDIGV2ZW50cyBzcGVjICgjOTk1MSkKKyAgICAgICAgLy8gQnViYmxl
IHVwIHRvIGRvY3VtZW50LCB0aGVuIHRvIHdpbmRvdzsgd2F0Y2ggZm9yIGEgZ2xvYmFsIG93bmVy
RG9jdW1lbnQgdmFyICgjOTcyNCkKKyAgICAgICAgaWYgKCAhb25seUhhbmRsZXJzICYmICFzcGVj
aWFsLm5vQnViYmxlICYmICFqUXVlcnkuaXNXaW5kb3coIGVsZW0gKSApIHsKKworICAgICAgICAg
ICAgYnViYmxlVHlwZSA9IHNwZWNpYWwuZGVsZWdhdGVUeXBlIHx8IHR5cGU7CisgICAgICAgICAg
ICBpZiAoICFyZm9jdXNNb3JwaC50ZXN0KCBidWJibGVUeXBlICsgdHlwZSApICkgeworICAgICAg
ICAgICAgICAgIGN1ciA9IGN1ci5wYXJlbnROb2RlOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgZm9yICggOyBjdXI7IGN1ciA9IGN1ci5wYXJlbnROb2RlICkgeworICAgICAgICAgICAgICAg
IGV2ZW50UGF0aC5wdXNoKCBjdXIgKTsKKyAgICAgICAgICAgICAgICB0bXAgPSBjdXI7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIE9ubHkgYWRkIHdpbmRvdyBpZiB3ZSBnb3QgdG8g
ZG9jdW1lbnQgKGUuZy4sIG5vdCBwbGFpbiBvYmogb3IgZGV0YWNoZWQgRE9NKQorICAgICAgICAg
ICAgaWYgKCB0bXAgPT09ICggZWxlbS5vd25lckRvY3VtZW50IHx8IGRvY3VtZW50ICkgKSB7Cisg
ICAgICAgICAgICAgICAgZXZlbnRQYXRoLnB1c2goIHRtcC5kZWZhdWx0VmlldyB8fCB0bXAucGFy
ZW50V2luZG93IHx8IHdpbmRvdyApOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAg
ICAgLy8gRmlyZSBoYW5kbGVycyBvbiB0aGUgZXZlbnQgcGF0aAorICAgICAgICBpID0gMDsKKyAg
ICAgICAgd2hpbGUgKCAoIGN1ciA9IGV2ZW50UGF0aFsgaSsrIF0gKSAmJiAhZXZlbnQuaXNQcm9w
YWdhdGlvblN0b3BwZWQoKSApIHsKKworICAgICAgICAgICAgZXZlbnQudHlwZSA9IGkgPiAxID8K
KyAgICAgICAgICAgICAgICBidWJibGVUeXBlIDoKKyAgICAgICAgICAgICAgICBzcGVjaWFsLmJp
bmRUeXBlIHx8IHR5cGU7CisKKyAgICAgICAgICAgIC8vIGpRdWVyeSBoYW5kbGVyCisgICAgICAg
ICAgICBoYW5kbGUgPSAoIGRhdGFQcml2LmdldCggY3VyLCAiZXZlbnRzIiApIHx8IHt9IClbIGV2
ZW50LnR5cGUgXSAmJgorICAgICAgICAgICAgICAgIGRhdGFQcml2LmdldCggY3VyLCAiaGFuZGxl
IiApOworICAgICAgICAgICAgaWYgKCBoYW5kbGUgKSB7CisgICAgICAgICAgICAgICAgaGFuZGxl
LmFwcGx5KCBjdXIsIGRhdGEgKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gTmF0
aXZlIGhhbmRsZXIKKyAgICAgICAgICAgIGhhbmRsZSA9IG9udHlwZSAmJiBjdXJbIG9udHlwZSBd
OworICAgICAgICAgICAgaWYgKCBoYW5kbGUgJiYgaGFuZGxlLmFwcGx5ICYmIGFjY2VwdERhdGEo
IGN1ciApICkgeworICAgICAgICAgICAgICAgIGV2ZW50LnJlc3VsdCA9IGhhbmRsZS5hcHBseSgg
Y3VyLCBkYXRhICk7CisgICAgICAgICAgICAgICAgaWYgKCBldmVudC5yZXN1bHQgPT09IGZhbHNl
ICkgeworICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBldmVudC50eXBl
ID0gdHlwZTsKKworICAgICAgICAvLyBJZiBub2JvZHkgcHJldmVudGVkIHRoZSBkZWZhdWx0IGFj
dGlvbiwgZG8gaXQgbm93CisgICAgICAgIGlmICggIW9ubHlIYW5kbGVycyAmJiAhZXZlbnQuaXNE
ZWZhdWx0UHJldmVudGVkKCkgKSB7CisKKyAgICAgICAgICAgIGlmICggKCAhc3BlY2lhbC5fZGVm
YXVsdCB8fAorICAgICAgICAgICAgICAgIHNwZWNpYWwuX2RlZmF1bHQuYXBwbHkoIGV2ZW50UGF0
aC5wb3AoKSwgZGF0YSApID09PSBmYWxzZSApICYmCisgICAgICAgICAgICAgICAgYWNjZXB0RGF0
YSggZWxlbSApICkgeworCisgICAgICAgICAgICAgICAgLy8gQ2FsbCBhIG5hdGl2ZSBET00gbWV0
aG9kIG9uIHRoZSB0YXJnZXQgd2l0aCB0aGUgc2FtZSBuYW1lIGFzIHRoZSBldmVudC4KKyAgICAg
ICAgICAgICAgICAvLyBEb24ndCBkbyBkZWZhdWx0IGFjdGlvbnMgb24gd2luZG93LCB0aGF0J3Mg
d2hlcmUgZ2xvYmFsIHZhcmlhYmxlcyBiZSAoIzYxNzApCisgICAgICAgICAgICAgICAgaWYgKCBv
bnR5cGUgJiYgalF1ZXJ5LmlzRnVuY3Rpb24oIGVsZW1bIHR5cGUgXSApICYmICFqUXVlcnkuaXNX
aW5kb3coIGVsZW0gKSApIHsKKworICAgICAgICAgICAgICAgICAgICAvLyBEb24ndCByZS10cmln
Z2VyIGFuIG9uRk9PIGV2ZW50IHdoZW4gd2UgY2FsbCBpdHMgRk9PKCkgbWV0aG9kCisgICAgICAg
ICAgICAgICAgICAgIHRtcCA9IGVsZW1bIG9udHlwZSBdOworCisgICAgICAgICAgICAgICAgICAg
IGlmICggdG1wICkgeworICAgICAgICAgICAgICAgICAgICAgICAgZWxlbVsgb250eXBlIF0gPSBu
dWxsOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgLy8gUHJl
dmVudCByZS10cmlnZ2VyaW5nIG9mIHRoZSBzYW1lIGV2ZW50LCBzaW5jZSB3ZSBhbHJlYWR5IGJ1
YmJsZWQgaXQgYWJvdmUKKyAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmV2ZW50LnRyaWdnZXJl
ZCA9IHR5cGU7CisgICAgICAgICAgICAgICAgICAgIGVsZW1bIHR5cGUgXSgpOworICAgICAgICAg
ICAgICAgICAgICBqUXVlcnkuZXZlbnQudHJpZ2dlcmVkID0gdW5kZWZpbmVkOworCisgICAgICAg
ICAgICAgICAgICAgIGlmICggdG1wICkgeworICAgICAgICAgICAgICAgICAgICAgICAgZWxlbVsg
b250eXBlIF0gPSB0bXA7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZXZlbnQucmVzdWx0
OworICAgIH0sCisKKyAgICAvLyBQaWdneWJhY2sgb24gYSBkb25vciBldmVudCB0byBzaW11bGF0
ZSBhIGRpZmZlcmVudCBvbmUKKyAgICAvLyBVc2VkIG9ubHkgZm9yIGBmb2N1cyhpbiB8IG91dClg
IGV2ZW50cworICAgIHNpbXVsYXRlOiBmdW5jdGlvbiggdHlwZSwgZWxlbSwgZXZlbnQgKSB7Cisg
ICAgICAgIHZhciBlID0galF1ZXJ5LmV4dGVuZCgKKyAgICAgICAgICAgIG5ldyBqUXVlcnkuRXZl
bnQoKSwKKyAgICAgICAgICAgIGV2ZW50LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHR5cGU6IHR5cGUsCisgICAgICAgICAgICAgICAgaXNTaW11bGF0ZWQ6IHRydWUKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgKTsKKworICAgICAgICBqUXVlcnkuZXZlbnQudHJpZ2dlciggZSwgbnVs
bCwgZWxlbSApOworICAgIH0KKworfSApOworCitqUXVlcnkuZm4uZXh0ZW5kKCB7CisKKyAgICB0
cmlnZ2VyOiBmdW5jdGlvbiggdHlwZSwgZGF0YSApIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZWFj
aCggZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBqUXVlcnkuZXZlbnQudHJpZ2dlciggdHlwZSwg
ZGF0YSwgdGhpcyApOworICAgICAgICB9ICk7CisgICAgfSwKKyAgICB0cmlnZ2VySGFuZGxlcjog
ZnVuY3Rpb24oIHR5cGUsIGRhdGEgKSB7CisgICAgICAgIHZhciBlbGVtID0gdGhpc1sgMCBdOwor
ICAgICAgICBpZiAoIGVsZW0gKSB7CisgICAgICAgICAgICByZXR1cm4galF1ZXJ5LmV2ZW50LnRy
aWdnZXIoIHR5cGUsIGRhdGEsIGVsZW0sIHRydWUgKTsKKyAgICAgICAgfQorICAgIH0KK30gKTsK
KworcmV0dXJuIGpRdWVyeTsKK30gKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25l
L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2V4cG9ydHMvYW1kLmpzIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFj
a2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvZXhwb3J0cy9hbWQuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ODRkMjBkODE4ZTYzMzNkNDg4MDRiMWVmY2Y3ZDQ4OWUyZDMzZjY2NgotLS0gL2Rldi9udWxsCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2V4cG9ydHMv
YW1kLmpzCkBAIC0wLDAgKzEsMjYgQEAKK2RlZmluZSggWworICAgICIuLi9jb3JlIgorXSwgZnVu
Y3Rpb24oIGpRdWVyeSApIHsKKworInVzZSBzdHJpY3QiOworCisvLyBSZWdpc3RlciBhcyBhIG5h
bWVkIEFNRCBtb2R1bGUsIHNpbmNlIGpRdWVyeSBjYW4gYmUgY29uY2F0ZW5hdGVkIHdpdGggb3Ro
ZXIKKy8vIGZpbGVzIHRoYXQgbWF5IHVzZSBkZWZpbmUsIGJ1dCBub3QgdmlhIGEgcHJvcGVyIGNv
bmNhdGVuYXRpb24gc2NyaXB0IHRoYXQKKy8vIHVuZGVyc3RhbmRzIGFub255bW91cyBBTUQgbW9k
dWxlcy4gQSBuYW1lZCBBTUQgaXMgc2FmZXN0IGFuZCBtb3N0IHJvYnVzdAorLy8gd2F5IHRvIHJl
Z2lzdGVyLiBMb3dlcmNhc2UganF1ZXJ5IGlzIHVzZWQgYmVjYXVzZSBBTUQgbW9kdWxlIG5hbWVz
IGFyZQorLy8gZGVyaXZlZCBmcm9tIGZpbGUgbmFtZXMsIGFuZCBqUXVlcnkgaXMgbm9ybWFsbHkg
ZGVsaXZlcmVkIGluIGEgbG93ZXJjYXNlCisvLyBmaWxlIG5hbWUuIERvIHRoaXMgYWZ0ZXIgY3Jl
YXRpbmcgdGhlIGdsb2JhbCBzbyB0aGF0IGlmIGFuIEFNRCBtb2R1bGUgd2FudHMKKy8vIHRvIGNh
bGwgbm9Db25mbGljdCB0byBoaWRlIHRoaXMgdmVyc2lvbiBvZiBqUXVlcnksIGl0IHdpbGwgd29y
ay4KKworLy8gTm90ZSB0aGF0IGZvciBtYXhpbXVtIHBvcnRhYmlsaXR5LCBsaWJyYXJpZXMgdGhh
dCBhcmUgbm90IGpRdWVyeSBzaG91bGQKKy8vIGRlY2xhcmUgdGhlbXNlbHZlcyBhcyBhbm9ueW1v
dXMgbW9kdWxlcywgYW5kIGF2b2lkIHNldHRpbmcgYSBnbG9iYWwgaWYgYW4KKy8vIEFNRCBsb2Fk
ZXIgaXMgcHJlc2VudC4galF1ZXJ5IGlzIGEgc3BlY2lhbCBjYXNlLiBGb3IgbW9yZSBpbmZvcm1h
dGlvbiwgc2VlCisvLyBodHRwczovL2dpdGh1Yi5jb20vanJidXJrZS9yZXF1aXJlanMvd2lraS9V
cGRhdGluZy1leGlzdGluZy1saWJyYXJpZXMjd2lraS1hbm9uCisKK2lmICggdHlwZW9mIGRlZmlu
ZSA9PT0gImZ1bmN0aW9uIiAmJiBkZWZpbmUuYW1kICkgeworICAgIGRlZmluZSggImpxdWVyeSIs
IFtdLCBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIGpRdWVyeTsKKyAgICB9ICk7Cit9CisK
K30gKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVl
cnkvc3JjL2V4cG9ydHMvZ2xvYmFsLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1
bGVzL2pxdWVyeS9zcmMvZXhwb3J0cy9nbG9iYWwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmE4ZjA1YWM3NDNi
M2Q0MTA3Y2RlNDA0YzQxNGVhODg3MzVmZjg4ZgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2V4cG9ydHMvZ2xvYmFsLmpzCkBA
IC0wLDAgKzEsMzQgQEAKK2RlZmluZSggWworICAgICIuLi9jb3JlIgorXSwgZnVuY3Rpb24oIGpR
dWVyeSwgbm9HbG9iYWwgKSB7CisKKyJ1c2Ugc3RyaWN0IjsKKwordmFyCisKKyAgICAvLyBNYXAg
b3ZlciBqUXVlcnkgaW4gY2FzZSBvZiBvdmVyd3JpdGUKKyAgICBfalF1ZXJ5ID0gd2luZG93LmpR
dWVyeSwKKworICAgIC8vIE1hcCBvdmVyIHRoZSAkIGluIGNhc2Ugb2Ygb3ZlcndyaXRlCisgICAg
XyQgPSB3aW5kb3cuJDsKKworalF1ZXJ5Lm5vQ29uZmxpY3QgPSBmdW5jdGlvbiggZGVlcCApIHsK
KyAgICBpZiAoIHdpbmRvdy4kID09PSBqUXVlcnkgKSB7CisgICAgICAgIHdpbmRvdy4kID0gXyQ7
CisgICAgfQorCisgICAgaWYgKCBkZWVwICYmIHdpbmRvdy5qUXVlcnkgPT09IGpRdWVyeSApIHsK
KyAgICAgICAgd2luZG93LmpRdWVyeSA9IF9qUXVlcnk7CisgICAgfQorCisgICAgcmV0dXJuIGpR
dWVyeTsKK307CisKKy8vIEV4cG9zZSBqUXVlcnkgYW5kICQgaWRlbnRpZmllcnMsIGV2ZW4gaW4g
QU1ECisvLyAoIzcxMDIjY29tbWVudDoxMCwgaHR0cHM6Ly9naXRodWIuY29tL2pxdWVyeS9qcXVl
cnkvcHVsbC81NTcpCisvLyBhbmQgQ29tbW9uSlMgZm9yIGJyb3dzZXIgZW11bGF0b3JzICgjMTM1
NjYpCitpZiAoICFub0dsb2JhbCApIHsKKyAgICB3aW5kb3cualF1ZXJ5ID0gd2luZG93LiQgPSBq
UXVlcnk7Cit9CisKK30gKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVf
bW9kdWxlcy9qcXVlcnkvc3JjL2pxdWVyeS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVf
bW9kdWxlcy9qcXVlcnkvc3JjL2pxdWVyeS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMTRmNmI1MzM3NWRjZDFh
NzM3NTk5ZWRhODIzYjU4Njc0MDViZjc5Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
YmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvanF1ZXJ5LmpzCkBAIC0wLDAgKzEsNDEg
QEAKK2RlZmluZSggWworICAgICIuL2NvcmUiLAorICAgICIuL3NlbGVjdG9yIiwKKyAgICAiLi90
cmF2ZXJzaW5nIiwKKyAgICAiLi9jYWxsYmFja3MiLAorICAgICIuL2RlZmVycmVkIiwKKyAgICAi
Li9kZWZlcnJlZC9leGNlcHRpb25Ib29rIiwKKyAgICAiLi9jb3JlL3JlYWR5IiwKKyAgICAiLi9k
YXRhIiwKKyAgICAiLi9xdWV1ZSIsCisgICAgIi4vcXVldWUvZGVsYXkiLAorICAgICIuL2F0dHJp
YnV0ZXMiLAorICAgICIuL2V2ZW50IiwKKyAgICAiLi9ldmVudC9hbGlhcyIsCisgICAgIi4vZXZl
bnQvZm9jdXNpbiIsCisgICAgIi4vbWFuaXB1bGF0aW9uIiwKKyAgICAiLi9tYW5pcHVsYXRpb24v
X2V2YWxVcmwiLAorICAgICIuL3dyYXAiLAorICAgICIuL2NzcyIsCisgICAgIi4vY3NzL2hpZGRl
blZpc2libGVTZWxlY3RvcnMiLAorICAgICIuL3NlcmlhbGl6ZSIsCisgICAgIi4vYWpheCIsCisg
ICAgIi4vYWpheC94aHIiLAorICAgICIuL2FqYXgvc2NyaXB0IiwKKyAgICAiLi9hamF4L2pzb25w
IiwKKyAgICAiLi9hamF4L2xvYWQiLAorICAgICIuL2V2ZW50L2FqYXgiLAorICAgICIuL2VmZmVj
dHMiLAorICAgICIuL2VmZmVjdHMvYW5pbWF0ZWRTZWxlY3RvciIsCisgICAgIi4vb2Zmc2V0IiwK
KyAgICAiLi9kaW1lbnNpb25zIiwKKyAgICAiLi9kZXByZWNhdGVkIiwKKyAgICAiLi9leHBvcnRz
L2FtZCIsCisgICAgIi4vZXhwb3J0cy9nbG9iYWwiCitdLCBmdW5jdGlvbiggalF1ZXJ5ICkgewor
CisidXNlIHN0cmljdCI7CisKK3JldHVybiBqUXVlcnk7CisKK30gKTsKZGlmZiAtLWdpdCBhL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL21hbmlwdWxhdGlvbi5q
cyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL21hbmlwdWxh
dGlvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40NGQ5NDBiMDY5OWI2YTkxODJjMzg1NTQ0YmQ3ZWM2M2FmYmZj
OTI5Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVz
L2pxdWVyeS9zcmMvbWFuaXB1bGF0aW9uLmpzCkBAIC0wLDAgKzEsNDg2IEBACitkZWZpbmUoIFsK
KyAgICAiLi9jb3JlIiwKKyAgICAiLi92YXIvY29uY2F0IiwKKyAgICAiLi92YXIvcHVzaCIsCisg
ICAgIi4vY29yZS9hY2Nlc3MiLAorICAgICIuL21hbmlwdWxhdGlvbi92YXIvcmNoZWNrYWJsZVR5
cGUiLAorICAgICIuL21hbmlwdWxhdGlvbi92YXIvcnRhZ05hbWUiLAorICAgICIuL21hbmlwdWxh
dGlvbi92YXIvcnNjcmlwdFR5cGUiLAorICAgICIuL21hbmlwdWxhdGlvbi93cmFwTWFwIiwKKyAg
ICAiLi9tYW5pcHVsYXRpb24vZ2V0QWxsIiwKKyAgICAiLi9tYW5pcHVsYXRpb24vc2V0R2xvYmFs
RXZhbCIsCisgICAgIi4vbWFuaXB1bGF0aW9uL2J1aWxkRnJhZ21lbnQiLAorICAgICIuL21hbmlw
dWxhdGlvbi9zdXBwb3J0IiwKKworICAgICIuL2RhdGEvdmFyL2RhdGFQcml2IiwKKyAgICAiLi9k
YXRhL3Zhci9kYXRhVXNlciIsCisgICAgIi4vZGF0YS92YXIvYWNjZXB0RGF0YSIsCisgICAgIi4v
Y29yZS9ET01FdmFsIiwKKworICAgICIuL2NvcmUvaW5pdCIsCisgICAgIi4vdHJhdmVyc2luZyIs
CisgICAgIi4vc2VsZWN0b3IiLAorICAgICIuL2V2ZW50IgorXSwgZnVuY3Rpb24oIGpRdWVyeSwg
Y29uY2F0LCBwdXNoLCBhY2Nlc3MsCisgICAgcmNoZWNrYWJsZVR5cGUsIHJ0YWdOYW1lLCByc2Ny
aXB0VHlwZSwKKyAgICB3cmFwTWFwLCBnZXRBbGwsIHNldEdsb2JhbEV2YWwsIGJ1aWxkRnJhZ21l
bnQsIHN1cHBvcnQsCisgICAgZGF0YVByaXYsIGRhdGFVc2VyLCBhY2NlcHREYXRhLCBET01FdmFs
ICkgeworCisidXNlIHN0cmljdCI7CisKK3ZhcgorCisgICAgLyogZXNsaW50LWRpc2FibGUgbWF4
LWxlbiAqLworCisgICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9lc2xpbnQvZXNsaW50L2lz
c3Vlcy8zMjI5CisgICAgcnhodG1sVGFnID0gLzwoPyFhcmVhfGJyfGNvbHxlbWJlZHxocnxpbWd8
aW5wdXR8bGlua3xtZXRhfHBhcmFtKSgoW2Etel1bXlwvXDA+XHgyMFx0XHJcblxmXSopW14+XSop
XC8+L2dpLAorCisgICAgLyogZXNsaW50LWVuYWJsZSAqLworCisgICAgLy8gU3VwcG9ydDogSUUg
PD0xMCAtIDExLCBFZGdlIDEyIC0gMTMKKyAgICAvLyBJbiBJRS9FZGdlIHVzaW5nIHJlZ2V4IGdy
b3VwcyBoZXJlIGNhdXNlcyBzZXZlcmUgc2xvd2Rvd25zLgorICAgIC8vIFNlZSBodHRwczovL2Nv
bm5lY3QubWljcm9zb2Z0LmNvbS9JRS9mZWVkYmFjay9kZXRhaWxzLzE3MzY1MTIvCisgICAgcm5v
SW5uZXJodG1sID0gLzxzY3JpcHR8PHN0eWxlfDxsaW5rL2ksCisKKyAgICAvLyBjaGVja2VkPSJj
aGVja2VkIiBvciBjaGVja2VkCisgICAgcmNoZWNrZWQgPSAvY2hlY2tlZFxzKig/OltePV18PVxz
Ki5jaGVja2VkLikvaSwKKyAgICByc2NyaXB0VHlwZU1hc2tlZCA9IC9edHJ1ZVwvKC4qKS8sCisg
ICAgcmNsZWFuU2NyaXB0ID0gL15ccyo8ISg/OlxbQ0RBVEFcW3wtLSl8KD86XF1cXXwtLSk+XHMq
JC9nOworCitmdW5jdGlvbiBtYW5pcHVsYXRpb25UYXJnZXQoIGVsZW0sIGNvbnRlbnQgKSB7Cisg
ICAgaWYgKCBqUXVlcnkubm9kZU5hbWUoIGVsZW0sICJ0YWJsZSIgKSAmJgorICAgICAgICBqUXVl
cnkubm9kZU5hbWUoIGNvbnRlbnQubm9kZVR5cGUgIT09IDExID8gY29udGVudCA6IGNvbnRlbnQu
Zmlyc3RDaGlsZCwgInRyIiApICkgeworCisgICAgICAgIHJldHVybiBlbGVtLmdldEVsZW1lbnRz
QnlUYWdOYW1lKCAidGJvZHkiIClbIDAgXSB8fCBlbGVtOworICAgIH0KKworICAgIHJldHVybiBl
bGVtOworfQorCisvLyBSZXBsYWNlL3Jlc3RvcmUgdGhlIHR5cGUgYXR0cmlidXRlIG9mIHNjcmlw
dCBlbGVtZW50cyBmb3Igc2FmZSBET00gbWFuaXB1bGF0aW9uCitmdW5jdGlvbiBkaXNhYmxlU2Ny
aXB0KCBlbGVtICkgeworICAgIGVsZW0udHlwZSA9ICggZWxlbS5nZXRBdHRyaWJ1dGUoICJ0eXBl
IiApICE9PSBudWxsICkgKyAiLyIgKyBlbGVtLnR5cGU7CisgICAgcmV0dXJuIGVsZW07Cit9Citm
dW5jdGlvbiByZXN0b3JlU2NyaXB0KCBlbGVtICkgeworICAgIHZhciBtYXRjaCA9IHJzY3JpcHRU
eXBlTWFza2VkLmV4ZWMoIGVsZW0udHlwZSApOworCisgICAgaWYgKCBtYXRjaCApIHsKKyAgICAg
ICAgZWxlbS50eXBlID0gbWF0Y2hbIDEgXTsKKyAgICB9IGVsc2UgeworICAgICAgICBlbGVtLnJl
bW92ZUF0dHJpYnV0ZSggInR5cGUiICk7CisgICAgfQorCisgICAgcmV0dXJuIGVsZW07Cit9CisK
K2Z1bmN0aW9uIGNsb25lQ29weUV2ZW50KCBzcmMsIGRlc3QgKSB7CisgICAgdmFyIGksIGwsIHR5
cGUsIHBkYXRhT2xkLCBwZGF0YUN1ciwgdWRhdGFPbGQsIHVkYXRhQ3VyLCBldmVudHM7CisKKyAg
ICBpZiAoIGRlc3Qubm9kZVR5cGUgIT09IDEgKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICAvLyAxLiBDb3B5IHByaXZhdGUgZGF0YTogZXZlbnRzLCBoYW5kbGVycywgZXRjLgorICAg
IGlmICggZGF0YVByaXYuaGFzRGF0YSggc3JjICkgKSB7CisgICAgICAgIHBkYXRhT2xkID0gZGF0
YVByaXYuYWNjZXNzKCBzcmMgKTsKKyAgICAgICAgcGRhdGFDdXIgPSBkYXRhUHJpdi5zZXQoIGRl
c3QsIHBkYXRhT2xkICk7CisgICAgICAgIGV2ZW50cyA9IHBkYXRhT2xkLmV2ZW50czsKKworICAg
ICAgICBpZiAoIGV2ZW50cyApIHsKKyAgICAgICAgICAgIGRlbGV0ZSBwZGF0YUN1ci5oYW5kbGU7
CisgICAgICAgICAgICBwZGF0YUN1ci5ldmVudHMgPSB7fTsKKworICAgICAgICAgICAgZm9yICgg
dHlwZSBpbiBldmVudHMgKSB7CisgICAgICAgICAgICAgICAgZm9yICggaSA9IDAsIGwgPSBldmVu
dHNbIHR5cGUgXS5sZW5ndGg7IGkgPCBsOyBpKysgKSB7CisgICAgICAgICAgICAgICAgICAgIGpR
dWVyeS5ldmVudC5hZGQoIGRlc3QsIHR5cGUsIGV2ZW50c1sgdHlwZSBdWyBpIF0gKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyAy
LiBDb3B5IHVzZXIgZGF0YQorICAgIGlmICggZGF0YVVzZXIuaGFzRGF0YSggc3JjICkgKSB7Cisg
ICAgICAgIHVkYXRhT2xkID0gZGF0YVVzZXIuYWNjZXNzKCBzcmMgKTsKKyAgICAgICAgdWRhdGFD
dXIgPSBqUXVlcnkuZXh0ZW5kKCB7fSwgdWRhdGFPbGQgKTsKKworICAgICAgICBkYXRhVXNlci5z
ZXQoIGRlc3QsIHVkYXRhQ3VyICk7CisgICAgfQorfQorCisvLyBGaXggSUUgYnVncywgc2VlIHN1
cHBvcnQgdGVzdHMKK2Z1bmN0aW9uIGZpeElucHV0KCBzcmMsIGRlc3QgKSB7CisgICAgdmFyIG5v
ZGVOYW1lID0gZGVzdC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOworCisgICAgLy8gRmFpbHMgdG8g
cGVyc2lzdCB0aGUgY2hlY2tlZCBzdGF0ZSBvZiBhIGNsb25lZCBjaGVja2JveCBvciByYWRpbyBi
dXR0b24uCisgICAgaWYgKCBub2RlTmFtZSA9PT0gImlucHV0IiAmJiByY2hlY2thYmxlVHlwZS50
ZXN0KCBzcmMudHlwZSApICkgeworICAgICAgICBkZXN0LmNoZWNrZWQgPSBzcmMuY2hlY2tlZDsK
KworICAgIC8vIEZhaWxzIHRvIHJldHVybiB0aGUgc2VsZWN0ZWQgb3B0aW9uIHRvIHRoZSBkZWZh
dWx0IHNlbGVjdGVkIHN0YXRlIHdoZW4gY2xvbmluZyBvcHRpb25zCisgICAgfSBlbHNlIGlmICgg
bm9kZU5hbWUgPT09ICJpbnB1dCIgfHwgbm9kZU5hbWUgPT09ICJ0ZXh0YXJlYSIgKSB7CisgICAg
ICAgIGRlc3QuZGVmYXVsdFZhbHVlID0gc3JjLmRlZmF1bHRWYWx1ZTsKKyAgICB9Cit9CisKK2Z1
bmN0aW9uIGRvbU1hbmlwKCBjb2xsZWN0aW9uLCBhcmdzLCBjYWxsYmFjaywgaWdub3JlZCApIHsK
KworICAgIC8vIEZsYXR0ZW4gYW55IG5lc3RlZCBhcnJheXMKKyAgICBhcmdzID0gY29uY2F0LmFw
cGx5KCBbXSwgYXJncyApOworCisgICAgdmFyIGZyYWdtZW50LCBmaXJzdCwgc2NyaXB0cywgaGFz
U2NyaXB0cywgbm9kZSwgZG9jLAorICAgICAgICBpID0gMCwKKyAgICAgICAgbCA9IGNvbGxlY3Rp
b24ubGVuZ3RoLAorICAgICAgICBpTm9DbG9uZSA9IGwgLSAxLAorICAgICAgICB2YWx1ZSA9IGFy
Z3NbIDAgXSwKKyAgICAgICAgaXNGdW5jdGlvbiA9IGpRdWVyeS5pc0Z1bmN0aW9uKCB2YWx1ZSAp
OworCisgICAgLy8gV2UgY2FuJ3QgY2xvbmVOb2RlIGZyYWdtZW50cyB0aGF0IGNvbnRhaW4gY2hl
Y2tlZCwgaW4gV2ViS2l0CisgICAgaWYgKCBpc0Z1bmN0aW9uIHx8CisgICAgICAgICAgICAoIGwg
PiAxICYmIHR5cGVvZiB2YWx1ZSA9PT0gInN0cmluZyIgJiYKKyAgICAgICAgICAgICAgICAhc3Vw
cG9ydC5jaGVja0Nsb25lICYmIHJjaGVja2VkLnRlc3QoIHZhbHVlICkgKSApIHsKKyAgICAgICAg
cmV0dXJuIGNvbGxlY3Rpb24uZWFjaCggZnVuY3Rpb24oIGluZGV4ICkgeworICAgICAgICAgICAg
dmFyIHNlbGYgPSBjb2xsZWN0aW9uLmVxKCBpbmRleCApOworICAgICAgICAgICAgaWYgKCBpc0Z1
bmN0aW9uICkgeworICAgICAgICAgICAgICAgIGFyZ3NbIDAgXSA9IHZhbHVlLmNhbGwoIHRoaXMs
IGluZGV4LCBzZWxmLmh0bWwoKSApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZG9tTWFu
aXAoIHNlbGYsIGFyZ3MsIGNhbGxiYWNrLCBpZ25vcmVkICk7CisgICAgICAgIH0gKTsKKyAgICB9
CisKKyAgICBpZiAoIGwgKSB7CisgICAgICAgIGZyYWdtZW50ID0gYnVpbGRGcmFnbWVudCggYXJn
cywgY29sbGVjdGlvblsgMCBdLm93bmVyRG9jdW1lbnQsIGZhbHNlLCBjb2xsZWN0aW9uLCBpZ25v
cmVkICk7CisgICAgICAgIGZpcnN0ID0gZnJhZ21lbnQuZmlyc3RDaGlsZDsKKworICAgICAgICBp
ZiAoIGZyYWdtZW50LmNoaWxkTm9kZXMubGVuZ3RoID09PSAxICkgeworICAgICAgICAgICAgZnJh
Z21lbnQgPSBmaXJzdDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFJlcXVpcmUgZWl0aGVyIG5l
dyBjb250ZW50IG9yIGFuIGludGVyZXN0IGluIGlnbm9yZWQgZWxlbWVudHMgdG8gaW52b2tlIHRo
ZSBjYWxsYmFjaworICAgICAgICBpZiAoIGZpcnN0IHx8IGlnbm9yZWQgKSB7CisgICAgICAgICAg
ICBzY3JpcHRzID0galF1ZXJ5Lm1hcCggZ2V0QWxsKCBmcmFnbWVudCwgInNjcmlwdCIgKSwgZGlz
YWJsZVNjcmlwdCApOworICAgICAgICAgICAgaGFzU2NyaXB0cyA9IHNjcmlwdHMubGVuZ3RoOwor
CisgICAgICAgICAgICAvLyBVc2UgdGhlIG9yaWdpbmFsIGZyYWdtZW50IGZvciB0aGUgbGFzdCBp
dGVtCisgICAgICAgICAgICAvLyBpbnN0ZWFkIG9mIHRoZSBmaXJzdCBiZWNhdXNlIGl0IGNhbiBl
bmQgdXAKKyAgICAgICAgICAgIC8vIGJlaW5nIGVtcHRpZWQgaW5jb3JyZWN0bHkgaW4gY2VydGFp
biBzaXR1YXRpb25zICgjODA3MCkuCisgICAgICAgICAgICBmb3IgKCA7IGkgPCBsOyBpKysgKSB7
CisgICAgICAgICAgICAgICAgbm9kZSA9IGZyYWdtZW50OworCisgICAgICAgICAgICAgICAgaWYg
KCBpICE9PSBpTm9DbG9uZSApIHsKKyAgICAgICAgICAgICAgICAgICAgbm9kZSA9IGpRdWVyeS5j
bG9uZSggbm9kZSwgdHJ1ZSwgdHJ1ZSApOworCisgICAgICAgICAgICAgICAgICAgIC8vIEtlZXAg
cmVmZXJlbmNlcyB0byBjbG9uZWQgc2NyaXB0cyBmb3IgbGF0ZXIgcmVzdG9yYXRpb24KKyAgICAg
ICAgICAgICAgICAgICAgaWYgKCBoYXNTY3JpcHRzICkgeworCisgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4wIG9ubHksIFBoYW50b21KUyAxIG9ubHkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIHB1c2guYXBwbHkoXywgYXJyYXlsaWtlKSB0aHJvd3Mg
b24gYW5jaWVudCBXZWJLaXQKKyAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5tZXJnZSgg
c2NyaXB0cywgZ2V0QWxsKCBub2RlLCAic2NyaXB0IiApICk7CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBjYWxsYmFjay5jYWxsKCBj
b2xsZWN0aW9uWyBpIF0sIG5vZGUsIGkgKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
aWYgKCBoYXNTY3JpcHRzICkgeworICAgICAgICAgICAgICAgIGRvYyA9IHNjcmlwdHNbIHNjcmlw
dHMubGVuZ3RoIC0gMSBdLm93bmVyRG9jdW1lbnQ7CisKKyAgICAgICAgICAgICAgICAvLyBSZWVu
YWJsZSBzY3JpcHRzCisgICAgICAgICAgICAgICAgalF1ZXJ5Lm1hcCggc2NyaXB0cywgcmVzdG9y
ZVNjcmlwdCApOworCisgICAgICAgICAgICAgICAgLy8gRXZhbHVhdGUgZXhlY3V0YWJsZSBzY3Jp
cHRzIG9uIGZpcnN0IGRvY3VtZW50IGluc2VydGlvbgorICAgICAgICAgICAgICAgIGZvciAoIGkg
PSAwOyBpIDwgaGFzU2NyaXB0czsgaSsrICkgeworICAgICAgICAgICAgICAgICAgICBub2RlID0g
c2NyaXB0c1sgaSBdOworICAgICAgICAgICAgICAgICAgICBpZiAoIHJzY3JpcHRUeXBlLnRlc3Qo
IG5vZGUudHlwZSB8fCAiIiApICYmCisgICAgICAgICAgICAgICAgICAgICAgICAhZGF0YVByaXYu
YWNjZXNzKCBub2RlLCAiZ2xvYmFsRXZhbCIgKSAmJgorICAgICAgICAgICAgICAgICAgICAgICAg
alF1ZXJ5LmNvbnRhaW5zKCBkb2MsIG5vZGUgKSApIHsKKworICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCBub2RlLnNyYyApIHsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE9w
dGlvbmFsIEFKQVggZGVwZW5kZW5jeSwgYnV0IHdvbid0IHJ1biBzY3JpcHRzIGlmIG5vdCBwcmVz
ZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBqUXVlcnkuX2V2YWxVcmwgKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5fZXZhbFVybCggbm9kZS5z
cmMgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIERPTUV2YWwoIG5vZGUu
dGV4dENvbnRlbnQucmVwbGFjZSggcmNsZWFuU2NyaXB0LCAiIiApLCBkb2MgKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBjb2xsZWN0
aW9uOworfQorCitmdW5jdGlvbiByZW1vdmUoIGVsZW0sIHNlbGVjdG9yLCBrZWVwRGF0YSApIHsK
KyAgICB2YXIgbm9kZSwKKyAgICAgICAgbm9kZXMgPSBzZWxlY3RvciA/IGpRdWVyeS5maWx0ZXIo
IHNlbGVjdG9yLCBlbGVtICkgOiBlbGVtLAorICAgICAgICBpID0gMDsKKworICAgIGZvciAoIDsg
KCBub2RlID0gbm9kZXNbIGkgXSApICE9IG51bGw7IGkrKyApIHsKKyAgICAgICAgaWYgKCAha2Vl
cERhdGEgJiYgbm9kZS5ub2RlVHlwZSA9PT0gMSApIHsKKyAgICAgICAgICAgIGpRdWVyeS5jbGVh
bkRhdGEoIGdldEFsbCggbm9kZSApICk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIG5vZGUu
cGFyZW50Tm9kZSApIHsKKyAgICAgICAgICAgIGlmICgga2VlcERhdGEgJiYgalF1ZXJ5LmNvbnRh
aW5zKCBub2RlLm93bmVyRG9jdW1lbnQsIG5vZGUgKSApIHsKKyAgICAgICAgICAgICAgICBzZXRH
bG9iYWxFdmFsKCBnZXRBbGwoIG5vZGUsICJzY3JpcHQiICkgKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIG5vZGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCggbm9kZSApOworICAgICAgICB9
CisgICAgfQorCisgICAgcmV0dXJuIGVsZW07Cit9CisKK2pRdWVyeS5leHRlbmQoIHsKKyAgICBo
dG1sUHJlZmlsdGVyOiBmdW5jdGlvbiggaHRtbCApIHsKKyAgICAgICAgcmV0dXJuIGh0bWwucmVw
bGFjZSggcnhodG1sVGFnLCAiPCQxPjwvJDI+IiApOworICAgIH0sCisKKyAgICBjbG9uZTogZnVu
Y3Rpb24oIGVsZW0sIGRhdGFBbmRFdmVudHMsIGRlZXBEYXRhQW5kRXZlbnRzICkgeworICAgICAg
ICB2YXIgaSwgbCwgc3JjRWxlbWVudHMsIGRlc3RFbGVtZW50cywKKyAgICAgICAgICAgIGNsb25l
ID0gZWxlbS5jbG9uZU5vZGUoIHRydWUgKSwKKyAgICAgICAgICAgIGluUGFnZSA9IGpRdWVyeS5j
b250YWlucyggZWxlbS5vd25lckRvY3VtZW50LCBlbGVtICk7CisKKyAgICAgICAgLy8gRml4IElF
IGNsb25pbmcgaXNzdWVzCisgICAgICAgIGlmICggIXN1cHBvcnQubm9DbG9uZUNoZWNrZWQgJiYg
KCBlbGVtLm5vZGVUeXBlID09PSAxIHx8IGVsZW0ubm9kZVR5cGUgPT09IDExICkgJiYKKyAgICAg
ICAgICAgICAgICAhalF1ZXJ5LmlzWE1MRG9jKCBlbGVtICkgKSB7CisKKyAgICAgICAgICAgIC8v
IFdlIGVzY2hldyBTaXp6bGUgaGVyZSBmb3IgcGVyZm9ybWFuY2UgcmVhc29uczogaHR0cHM6Ly9q
c3BlcmYuY29tL2dldGFsbC12cy1zaXp6bGUvMgorICAgICAgICAgICAgZGVzdEVsZW1lbnRzID0g
Z2V0QWxsKCBjbG9uZSApOworICAgICAgICAgICAgc3JjRWxlbWVudHMgPSBnZXRBbGwoIGVsZW0g
KTsKKworICAgICAgICAgICAgZm9yICggaSA9IDAsIGwgPSBzcmNFbGVtZW50cy5sZW5ndGg7IGkg
PCBsOyBpKysgKSB7CisgICAgICAgICAgICAgICAgZml4SW5wdXQoIHNyY0VsZW1lbnRzWyBpIF0s
IGRlc3RFbGVtZW50c1sgaSBdICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAg
ICAvLyBDb3B5IHRoZSBldmVudHMgZnJvbSB0aGUgb3JpZ2luYWwgdG8gdGhlIGNsb25lCisgICAg
ICAgIGlmICggZGF0YUFuZEV2ZW50cyApIHsKKyAgICAgICAgICAgIGlmICggZGVlcERhdGFBbmRF
dmVudHMgKSB7CisgICAgICAgICAgICAgICAgc3JjRWxlbWVudHMgPSBzcmNFbGVtZW50cyB8fCBn
ZXRBbGwoIGVsZW0gKTsKKyAgICAgICAgICAgICAgICBkZXN0RWxlbWVudHMgPSBkZXN0RWxlbWVu
dHMgfHwgZ2V0QWxsKCBjbG9uZSApOworCisgICAgICAgICAgICAgICAgZm9yICggaSA9IDAsIGwg
PSBzcmNFbGVtZW50cy5sZW5ndGg7IGkgPCBsOyBpKysgKSB7CisgICAgICAgICAgICAgICAgICAg
IGNsb25lQ29weUV2ZW50KCBzcmNFbGVtZW50c1sgaSBdLCBkZXN0RWxlbWVudHNbIGkgXSApOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
Y2xvbmVDb3B5RXZlbnQoIGVsZW0sIGNsb25lICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KworICAgICAgICAvLyBQcmVzZXJ2ZSBzY3JpcHQgZXZhbHVhdGlvbiBoaXN0b3J5CisgICAgICAg
IGRlc3RFbGVtZW50cyA9IGdldEFsbCggY2xvbmUsICJzY3JpcHQiICk7CisgICAgICAgIGlmICgg
ZGVzdEVsZW1lbnRzLmxlbmd0aCA+IDAgKSB7CisgICAgICAgICAgICBzZXRHbG9iYWxFdmFsKCBk
ZXN0RWxlbWVudHMsICFpblBhZ2UgJiYgZ2V0QWxsKCBlbGVtLCAic2NyaXB0IiApICk7CisgICAg
ICAgIH0KKworICAgICAgICAvLyBSZXR1cm4gdGhlIGNsb25lZCBzZXQKKyAgICAgICAgcmV0dXJu
IGNsb25lOworICAgIH0sCisKKyAgICBjbGVhbkRhdGE6IGZ1bmN0aW9uKCBlbGVtcyApIHsKKyAg
ICAgICAgdmFyIGRhdGEsIGVsZW0sIHR5cGUsCisgICAgICAgICAgICBzcGVjaWFsID0galF1ZXJ5
LmV2ZW50LnNwZWNpYWwsCisgICAgICAgICAgICBpID0gMDsKKworICAgICAgICBmb3IgKCA7ICgg
ZWxlbSA9IGVsZW1zWyBpIF0gKSAhPT0gdW5kZWZpbmVkOyBpKysgKSB7CisgICAgICAgICAgICBp
ZiAoIGFjY2VwdERhdGEoIGVsZW0gKSApIHsKKyAgICAgICAgICAgICAgICBpZiAoICggZGF0YSA9
IGVsZW1bIGRhdGFQcml2LmV4cGFuZG8gXSApICkgeworICAgICAgICAgICAgICAgICAgICBpZiAo
IGRhdGEuZXZlbnRzICkgeworICAgICAgICAgICAgICAgICAgICAgICAgZm9yICggdHlwZSBpbiBk
YXRhLmV2ZW50cyApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHNwZWNpYWxb
IHR5cGUgXSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmV2ZW50
LnJlbW92ZSggZWxlbSwgdHlwZSApOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
VGhpcyBpcyBhIHNob3J0Y3V0IHRvIGF2b2lkIGpRdWVyeS5ldmVudC5yZW1vdmUncyBvdmVyaGVh
ZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGpRdWVyeS5yZW1vdmVFdmVudCggZWxlbSwgdHlwZSwgZGF0YS5oYW5k
bGUgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAvLyBT
dXBwb3J0OiBDaHJvbWUgPD0zNSAtIDQ1KworICAgICAgICAgICAgICAgICAgICAvLyBBc3NpZ24g
dW5kZWZpbmVkIGluc3RlYWQgb2YgdXNpbmcgZGVsZXRlLCBzZWUgRGF0YSNyZW1vdmUKKyAgICAg
ICAgICAgICAgICAgICAgZWxlbVsgZGF0YVByaXYuZXhwYW5kbyBdID0gdW5kZWZpbmVkOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoIGVsZW1bIGRhdGFVc2VyLmV4cGFu
ZG8gXSApIHsKKworICAgICAgICAgICAgICAgICAgICAvLyBTdXBwb3J0OiBDaHJvbWUgPD0zNSAt
IDQ1KworICAgICAgICAgICAgICAgICAgICAvLyBBc3NpZ24gdW5kZWZpbmVkIGluc3RlYWQgb2Yg
dXNpbmcgZGVsZXRlLCBzZWUgRGF0YSNyZW1vdmUKKyAgICAgICAgICAgICAgICAgICAgZWxlbVsg
ZGF0YVVzZXIuZXhwYW5kbyBdID0gdW5kZWZpbmVkOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30gKTsKKworalF1ZXJ5LmZuLmV4dGVuZCggewor
ICAgIGRldGFjaDogZnVuY3Rpb24oIHNlbGVjdG9yICkgeworICAgICAgICByZXR1cm4gcmVtb3Zl
KCB0aGlzLCBzZWxlY3RvciwgdHJ1ZSApOworICAgIH0sCisKKyAgICByZW1vdmU6IGZ1bmN0aW9u
KCBzZWxlY3RvciApIHsKKyAgICAgICAgcmV0dXJuIHJlbW92ZSggdGhpcywgc2VsZWN0b3IgKTsK
KyAgICB9LAorCisgICAgdGV4dDogZnVuY3Rpb24oIHZhbHVlICkgeworICAgICAgICByZXR1cm4g
YWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggdmFsdWUgKSB7CisgICAgICAgICAgICByZXR1cm4gdmFs
dWUgPT09IHVuZGVmaW5lZCA/CisgICAgICAgICAgICAgICAgalF1ZXJ5LnRleHQoIHRoaXMgKSA6
CisgICAgICAgICAgICAgICAgdGhpcy5lbXB0eSgpLmVhY2goIGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgICAgICAgICBpZiAoIHRoaXMubm9kZVR5cGUgPT09IDEgfHwgdGhpcy5ub2RlVHlwZSA9
PT0gMTEgfHwgdGhpcy5ub2RlVHlwZSA9PT0gOSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHRoaXMudGV4dENvbnRlbnQgPSB2YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIH0gKTsKKyAgICAgICAgfSwgbnVsbCwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGgg
KTsKKyAgICB9LAorCisgICAgYXBwZW5kOiBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIGRv
bU1hbmlwKCB0aGlzLCBhcmd1bWVudHMsIGZ1bmN0aW9uKCBlbGVtICkgeworICAgICAgICAgICAg
aWYgKCB0aGlzLm5vZGVUeXBlID09PSAxIHx8IHRoaXMubm9kZVR5cGUgPT09IDExIHx8IHRoaXMu
bm9kZVR5cGUgPT09IDkgKSB7CisgICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IG1hbmlwdWxh
dGlvblRhcmdldCggdGhpcywgZWxlbSApOworICAgICAgICAgICAgICAgIHRhcmdldC5hcHBlbmRD
aGlsZCggZWxlbSApOworICAgICAgICAgICAgfQorICAgICAgICB9ICk7CisgICAgfSwKKworICAg
IHByZXBlbmQ6IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gZG9tTWFuaXAoIHRoaXMsIGFy
Z3VtZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7CisgICAgICAgICAgICBpZiAoIHRoaXMubm9kZVR5
cGUgPT09IDEgfHwgdGhpcy5ub2RlVHlwZSA9PT0gMTEgfHwgdGhpcy5ub2RlVHlwZSA9PT0gOSAp
IHsKKyAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gbWFuaXB1bGF0aW9uVGFyZ2V0KCB0aGlz
LCBlbGVtICk7CisgICAgICAgICAgICAgICAgdGFyZ2V0Lmluc2VydEJlZm9yZSggZWxlbSwgdGFy
Z2V0LmZpcnN0Q2hpbGQgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSApOworICAgIH0sCisK
KyAgICBiZWZvcmU6IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gZG9tTWFuaXAoIHRoaXMs
IGFyZ3VtZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7CisgICAgICAgICAgICBpZiAoIHRoaXMucGFy
ZW50Tm9kZSApIHsKKyAgICAgICAgICAgICAgICB0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3Jl
KCBlbGVtLCB0aGlzICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gKTsKKyAgICB9LAorCisg
ICAgYWZ0ZXI6IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gZG9tTWFuaXAoIHRoaXMsIGFy
Z3VtZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7CisgICAgICAgICAgICBpZiAoIHRoaXMucGFyZW50
Tm9kZSApIHsKKyAgICAgICAgICAgICAgICB0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKCBl
bGVtLCB0aGlzLm5leHRTaWJsaW5nICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gKTsKKyAg
ICB9LAorCisgICAgZW1wdHk6IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgZWxlbSwKKyAgICAg
ICAgICAgIGkgPSAwOworCisgICAgICAgIGZvciAoIDsgKCBlbGVtID0gdGhpc1sgaSBdICkgIT0g
bnVsbDsgaSsrICkgeworICAgICAgICAgICAgaWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICkgewor
CisgICAgICAgICAgICAgICAgLy8gUHJldmVudCBtZW1vcnkgbGVha3MKKyAgICAgICAgICAgICAg
ICBqUXVlcnkuY2xlYW5EYXRhKCBnZXRBbGwoIGVsZW0sIGZhbHNlICkgKTsKKworICAgICAgICAg
ICAgICAgIC8vIFJlbW92ZSBhbnkgcmVtYWluaW5nIG5vZGVzCisgICAgICAgICAgICAgICAgZWxl
bS50ZXh0Q29udGVudCA9ICIiOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAg
cmV0dXJuIHRoaXM7CisgICAgfSwKKworICAgIGNsb25lOiBmdW5jdGlvbiggZGF0YUFuZEV2ZW50
cywgZGVlcERhdGFBbmRFdmVudHMgKSB7CisgICAgICAgIGRhdGFBbmRFdmVudHMgPSBkYXRhQW5k
RXZlbnRzID09IG51bGwgPyBmYWxzZSA6IGRhdGFBbmRFdmVudHM7CisgICAgICAgIGRlZXBEYXRh
QW5kRXZlbnRzID0gZGVlcERhdGFBbmRFdmVudHMgPT0gbnVsbCA/IGRhdGFBbmRFdmVudHMgOiBk
ZWVwRGF0YUFuZEV2ZW50czsKKworICAgICAgICByZXR1cm4gdGhpcy5tYXAoIGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgcmV0dXJuIGpRdWVyeS5jbG9uZSggdGhpcywgZGF0YUFuZEV2ZW50cywg
ZGVlcERhdGFBbmRFdmVudHMgKTsKKyAgICAgICAgfSApOworICAgIH0sCisKKyAgICBodG1sOiBm
dW5jdGlvbiggdmFsdWUgKSB7CisgICAgICAgIHJldHVybiBhY2Nlc3MoIHRoaXMsIGZ1bmN0aW9u
KCB2YWx1ZSApIHsKKyAgICAgICAgICAgIHZhciBlbGVtID0gdGhpc1sgMCBdIHx8IHt9LAorICAg
ICAgICAgICAgICAgIGkgPSAwLAorICAgICAgICAgICAgICAgIGwgPSB0aGlzLmxlbmd0aDsKKwor
ICAgICAgICAgICAgaWYgKCB2YWx1ZSA9PT0gdW5kZWZpbmVkICYmIGVsZW0ubm9kZVR5cGUgPT09
IDEgKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW0uaW5uZXJIVE1MOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAvLyBTZWUgaWYgd2UgY2FuIHRha2UgYSBzaG9ydGN1dCBhbmQg
anVzdCB1c2UgaW5uZXJIVE1MCisgICAgICAgICAgICBpZiAoIHR5cGVvZiB2YWx1ZSA9PT0gInN0
cmluZyIgJiYgIXJub0lubmVyaHRtbC50ZXN0KCB2YWx1ZSApICYmCisgICAgICAgICAgICAgICAg
IXdyYXBNYXBbICggcnRhZ05hbWUuZXhlYyggdmFsdWUgKSB8fCBbICIiLCAiIiBdIClbIDEgXS50
b0xvd2VyQ2FzZSgpIF0gKSB7CisKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IGpRdWVyeS5odG1s
UHJlZmlsdGVyKCB2YWx1ZSApOworCisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAg
ICAgICAgICAgZm9yICggOyBpIDwgbDsgaSsrICkgeworICAgICAgICAgICAgICAgICAgICAgICAg
ZWxlbSA9IHRoaXNbIGkgXSB8fCB7fTsKKworICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVt
b3ZlIGVsZW1lbnQgbm9kZXMgYW5kIHByZXZlbnQgbWVtb3J5IGxlYWtzCisgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgalF1ZXJ5LmNsZWFuRGF0YSggZ2V0QWxsKCBlbGVtLCBmYWxzZSApICk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbS5pbm5lckhUTUwgPSB2YWx1ZTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgICAgIGVsZW0gPSAwOworCisgICAgICAgICAgICAgICAgLy8gSWYgdXNpbmcgaW5uZXJI
VE1MIHRocm93cyBhbiBleGNlcHRpb24sIHVzZSB0aGUgZmFsbGJhY2sgbWV0aG9kCisgICAgICAg
ICAgICAgICAgfSBjYXRjaCAoIGUgKSB7fQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBp
ZiAoIGVsZW0gKSB7CisgICAgICAgICAgICAgICAgdGhpcy5lbXB0eSgpLmFwcGVuZCggdmFsdWUg
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwgbnVsbCwgdmFsdWUsIGFyZ3VtZW50cy5sZW5n
dGggKTsKKyAgICB9LAorCisgICAgcmVwbGFjZVdpdGg6IGZ1bmN0aW9uKCkgeworICAgICAgICB2
YXIgaWdub3JlZCA9IFtdOworCisgICAgICAgIC8vIE1ha2UgdGhlIGNoYW5nZXMsIHJlcGxhY2lu
ZyBlYWNoIG5vbi1pZ25vcmVkIGNvbnRleHQgZWxlbWVudCB3aXRoIHRoZSBuZXcgY29udGVudAor
ICAgICAgICByZXR1cm4gZG9tTWFuaXAoIHRoaXMsIGFyZ3VtZW50cywgZnVuY3Rpb24oIGVsZW0g
KSB7CisgICAgICAgICAgICB2YXIgcGFyZW50ID0gdGhpcy5wYXJlbnROb2RlOworCisgICAgICAg
ICAgICBpZiAoIGpRdWVyeS5pbkFycmF5KCB0aGlzLCBpZ25vcmVkICkgPCAwICkgeworICAgICAg
ICAgICAgICAgIGpRdWVyeS5jbGVhbkRhdGEoIGdldEFsbCggdGhpcyApICk7CisgICAgICAgICAg
ICAgICAgaWYgKCBwYXJlbnQgKSB7CisgICAgICAgICAgICAgICAgICAgIHBhcmVudC5yZXBsYWNl
Q2hpbGQoIGVsZW0sIHRoaXMgKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisK
KyAgICAgICAgLy8gRm9yY2UgY2FsbGJhY2sgaW52b2NhdGlvbgorICAgICAgICB9LCBpZ25vcmVk
ICk7CisgICAgfQorfSApOworCitqUXVlcnkuZWFjaCggeworICAgIGFwcGVuZFRvOiAiYXBwZW5k
IiwKKyAgICBwcmVwZW5kVG86ICJwcmVwZW5kIiwKKyAgICBpbnNlcnRCZWZvcmU6ICJiZWZvcmUi
LAorICAgIGluc2VydEFmdGVyOiAiYWZ0ZXIiLAorICAgIHJlcGxhY2VBbGw6ICJyZXBsYWNlV2l0
aCIKK30sIGZ1bmN0aW9uKCBuYW1lLCBvcmlnaW5hbCApIHsKKyAgICBqUXVlcnkuZm5bIG5hbWUg
XSA9IGZ1bmN0aW9uKCBzZWxlY3RvciApIHsKKyAgICAgICAgdmFyIGVsZW1zLAorICAgICAgICAg
ICAgcmV0ID0gW10sCisgICAgICAgICAgICBpbnNlcnQgPSBqUXVlcnkoIHNlbGVjdG9yICksCisg
ICAgICAgICAgICBsYXN0ID0gaW5zZXJ0Lmxlbmd0aCAtIDEsCisgICAgICAgICAgICBpID0gMDsK
KworICAgICAgICBmb3IgKCA7IGkgPD0gbGFzdDsgaSsrICkgeworICAgICAgICAgICAgZWxlbXMg
PSBpID09PSBsYXN0ID8gdGhpcyA6IHRoaXMuY2xvbmUoIHRydWUgKTsKKyAgICAgICAgICAgIGpR
dWVyeSggaW5zZXJ0WyBpIF0gKVsgb3JpZ2luYWwgXSggZWxlbXMgKTsKKworICAgICAgICAgICAg
Ly8gU3VwcG9ydDogQW5kcm9pZCA8PTQuMCBvbmx5LCBQaGFudG9tSlMgMSBvbmx5CisgICAgICAg
ICAgICAvLyAuZ2V0KCkgYmVjYXVzZSBwdXNoLmFwcGx5KF8sIGFycmF5bGlrZSkgdGhyb3dzIG9u
IGFuY2llbnQgV2ViS2l0CisgICAgICAgICAgICBwdXNoLmFwcGx5KCByZXQsIGVsZW1zLmdldCgp
ICk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdGhpcy5wdXNoU3RhY2soIHJldCApOwor
ICAgIH07Cit9ICk7CisKK3JldHVybiBqUXVlcnk7Cit9ICk7CmRpZmYgLS1naXQgYS9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9tYW5pcHVsYXRpb24vX2V2YWxV
cmwuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9tYW5p
cHVsYXRpb24vX2V2YWxVcmwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTVjNTE3N2Q5ODE0YzI2ZDlkM2YwYmRh
M2NiODgwZTUyYTljNWE0NgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25l
L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL21hbmlwdWxhdGlvbi9fZXZhbFVybC5qcwpAQCAtMCww
ICsxLDIzIEBACitkZWZpbmUoIFsKKyAgICAiLi4vYWpheCIKK10sIGZ1bmN0aW9uKCBqUXVlcnkg
KSB7CisKKyJ1c2Ugc3RyaWN0IjsKKworalF1ZXJ5Ll9ldmFsVXJsID0gZnVuY3Rpb24oIHVybCAp
IHsKKyAgICByZXR1cm4galF1ZXJ5LmFqYXgoIHsKKyAgICAgICAgdXJsOiB1cmwsCisKKyAgICAg
ICAgLy8gTWFrZSB0aGlzIGV4cGxpY2l0LCBzaW5jZSB1c2VyIGNhbiBvdmVycmlkZSB0aGlzIHRo
cm91Z2ggYWpheFNldHVwICgjMTEyNjQpCisgICAgICAgIHR5cGU6ICJHRVQiLAorICAgICAgICBk
YXRhVHlwZTogInNjcmlwdCIsCisgICAgICAgIGNhY2hlOiB0cnVlLAorICAgICAgICBhc3luYzog
ZmFsc2UsCisgICAgICAgIGdsb2JhbDogZmFsc2UsCisgICAgICAgICJ0aHJvd3MiOiB0cnVlCisg
ICAgfSApOworfTsKKworcmV0dXJuIGpRdWVyeS5fZXZhbFVybDsKKworfSApOwpkaWZmIC0tZ2l0
IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvbWFuaXB1bGF0
aW9uL2J1aWxkRnJhZ21lbnQuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMv
anF1ZXJ5L3NyYy9tYW5pcHVsYXRpb24vYnVpbGRGcmFnbWVudC5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NDlm
ZmZhZGY3YWFjNWVmOTM0NjBiYTM2ZjMzNDlmMmZjOTI3M2FkCi0tLSAvZGV2L251bGwKKysrIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvbWFuaXB1bGF0aW9u
L2J1aWxkRnJhZ21lbnQuanMKQEAgLTAsMCArMSwxMDQgQEAKK2RlZmluZSggWworICAgICIuLi9j
b3JlIiwKKyAgICAiLi92YXIvcnRhZ05hbWUiLAorICAgICIuL3Zhci9yc2NyaXB0VHlwZSIsCisg
ICAgIi4vd3JhcE1hcCIsCisgICAgIi4vZ2V0QWxsIiwKKyAgICAiLi9zZXRHbG9iYWxFdmFsIgor
XSwgZnVuY3Rpb24oIGpRdWVyeSwgcnRhZ05hbWUsIHJzY3JpcHRUeXBlLCB3cmFwTWFwLCBnZXRB
bGwsIHNldEdsb2JhbEV2YWwgKSB7CisKKyJ1c2Ugc3RyaWN0IjsKKwordmFyIHJodG1sID0gLzx8
JiM/XHcrOy87CisKK2Z1bmN0aW9uIGJ1aWxkRnJhZ21lbnQoIGVsZW1zLCBjb250ZXh0LCBzY3Jp
cHRzLCBzZWxlY3Rpb24sIGlnbm9yZWQgKSB7CisgICAgdmFyIGVsZW0sIHRtcCwgdGFnLCB3cmFw
LCBjb250YWlucywgaiwKKyAgICAgICAgZnJhZ21lbnQgPSBjb250ZXh0LmNyZWF0ZURvY3VtZW50
RnJhZ21lbnQoKSwKKyAgICAgICAgbm9kZXMgPSBbXSwKKyAgICAgICAgaSA9IDAsCisgICAgICAg
IGwgPSBlbGVtcy5sZW5ndGg7CisKKyAgICBmb3IgKCA7IGkgPCBsOyBpKysgKSB7CisgICAgICAg
IGVsZW0gPSBlbGVtc1sgaSBdOworCisgICAgICAgIGlmICggZWxlbSB8fCBlbGVtID09PSAwICkg
eworCisgICAgICAgICAgICAvLyBBZGQgbm9kZXMgZGlyZWN0bHkKKyAgICAgICAgICAgIGlmICgg
alF1ZXJ5LnR5cGUoIGVsZW0gKSA9PT0gIm9iamVjdCIgKSB7CisKKyAgICAgICAgICAgICAgICAv
LyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4wIG9ubHksIFBoYW50b21KUyAxIG9ubHkKKyAgICAgICAg
ICAgICAgICAvLyBwdXNoLmFwcGx5KF8sIGFycmF5bGlrZSkgdGhyb3dzIG9uIGFuY2llbnQgV2Vi
S2l0CisgICAgICAgICAgICAgICAgalF1ZXJ5Lm1lcmdlKCBub2RlcywgZWxlbS5ub2RlVHlwZSA/
IFsgZWxlbSBdIDogZWxlbSApOworCisgICAgICAgICAgICAvLyBDb252ZXJ0IG5vbi1odG1sIGlu
dG8gYSB0ZXh0IG5vZGUKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoICFyaHRtbC50ZXN0KCBlbGVt
ICkgKSB7CisgICAgICAgICAgICAgICAgbm9kZXMucHVzaCggY29udGV4dC5jcmVhdGVUZXh0Tm9k
ZSggZWxlbSApICk7CisKKyAgICAgICAgICAgIC8vIENvbnZlcnQgaHRtbCBpbnRvIERPTSBub2Rl
cworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB0bXAgPSB0bXAgfHwgZnJh
Z21lbnQuYXBwZW5kQ2hpbGQoIGNvbnRleHQuY3JlYXRlRWxlbWVudCggImRpdiIgKSApOworCisg
ICAgICAgICAgICAgICAgLy8gRGVzZXJpYWxpemUgYSBzdGFuZGFyZCByZXByZXNlbnRhdGlvbgor
ICAgICAgICAgICAgICAgIHRhZyA9ICggcnRhZ05hbWUuZXhlYyggZWxlbSApIHx8IFsgIiIsICIi
IF0gKVsgMSBdLnRvTG93ZXJDYXNlKCk7CisgICAgICAgICAgICAgICAgd3JhcCA9IHdyYXBNYXBb
IHRhZyBdIHx8IHdyYXBNYXAuX2RlZmF1bHQ7CisgICAgICAgICAgICAgICAgdG1wLmlubmVySFRN
TCA9IHdyYXBbIDEgXSArIGpRdWVyeS5odG1sUHJlZmlsdGVyKCBlbGVtICkgKyB3cmFwWyAyIF07
CisKKyAgICAgICAgICAgICAgICAvLyBEZXNjZW5kIHRocm91Z2ggd3JhcHBlcnMgdG8gdGhlIHJp
Z2h0IGNvbnRlbnQKKyAgICAgICAgICAgICAgICBqID0gd3JhcFsgMCBdOworICAgICAgICAgICAg
ICAgIHdoaWxlICggai0tICkgeworICAgICAgICAgICAgICAgICAgICB0bXAgPSB0bXAubGFzdENo
aWxkOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6IEFu
ZHJvaWQgPD00LjAgb25seSwgUGhhbnRvbUpTIDEgb25seQorICAgICAgICAgICAgICAgIC8vIHB1
c2guYXBwbHkoXywgYXJyYXlsaWtlKSB0aHJvd3Mgb24gYW5jaWVudCBXZWJLaXQKKyAgICAgICAg
ICAgICAgICBqUXVlcnkubWVyZ2UoIG5vZGVzLCB0bXAuY2hpbGROb2RlcyApOworCisgICAgICAg
ICAgICAgICAgLy8gUmVtZW1iZXIgdGhlIHRvcC1sZXZlbCBjb250YWluZXIKKyAgICAgICAgICAg
ICAgICB0bXAgPSBmcmFnbWVudC5maXJzdENoaWxkOworCisgICAgICAgICAgICAgICAgLy8gRW5z
dXJlIHRoZSBjcmVhdGVkIG5vZGVzIGFyZSBvcnBoYW5lZCAoIzEyMzkyKQorICAgICAgICAgICAg
ICAgIHRtcC50ZXh0Q29udGVudCA9ICIiOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorCisgICAgLy8gUmVtb3ZlIHdyYXBwZXIgZnJvbSBmcmFnbWVudAorICAgIGZyYWdtZW50LnRl
eHRDb250ZW50ID0gIiI7CisKKyAgICBpID0gMDsKKyAgICB3aGlsZSAoICggZWxlbSA9IG5vZGVz
WyBpKysgXSApICkgeworCisgICAgICAgIC8vIFNraXAgZWxlbWVudHMgYWxyZWFkeSBpbiB0aGUg
Y29udGV4dCBjb2xsZWN0aW9uICh0cmFjLTQwODcpCisgICAgICAgIGlmICggc2VsZWN0aW9uICYm
IGpRdWVyeS5pbkFycmF5KCBlbGVtLCBzZWxlY3Rpb24gKSA+IC0xICkgeworICAgICAgICAgICAg
aWYgKCBpZ25vcmVkICkgeworICAgICAgICAgICAgICAgIGlnbm9yZWQucHVzaCggZWxlbSApOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAg
ICBjb250YWlucyA9IGpRdWVyeS5jb250YWlucyggZWxlbS5vd25lckRvY3VtZW50LCBlbGVtICk7
CisKKyAgICAgICAgLy8gQXBwZW5kIHRvIGZyYWdtZW50CisgICAgICAgIHRtcCA9IGdldEFsbCgg
ZnJhZ21lbnQuYXBwZW5kQ2hpbGQoIGVsZW0gKSwgInNjcmlwdCIgKTsKKworICAgICAgICAvLyBQ
cmVzZXJ2ZSBzY3JpcHQgZXZhbHVhdGlvbiBoaXN0b3J5CisgICAgICAgIGlmICggY29udGFpbnMg
KSB7CisgICAgICAgICAgICBzZXRHbG9iYWxFdmFsKCB0bXAgKTsKKyAgICAgICAgfQorCisgICAg
ICAgIC8vIENhcHR1cmUgZXhlY3V0YWJsZXMKKyAgICAgICAgaWYgKCBzY3JpcHRzICkgeworICAg
ICAgICAgICAgaiA9IDA7CisgICAgICAgICAgICB3aGlsZSAoICggZWxlbSA9IHRtcFsgaisrIF0g
KSApIHsKKyAgICAgICAgICAgICAgICBpZiAoIHJzY3JpcHRUeXBlLnRlc3QoIGVsZW0udHlwZSB8
fCAiIiApICkgeworICAgICAgICAgICAgICAgICAgICBzY3JpcHRzLnB1c2goIGVsZW0gKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBy
ZXR1cm4gZnJhZ21lbnQ7Cit9CisKK3JldHVybiBidWlsZEZyYWdtZW50OworfSApOwpkaWZmIC0t
Z2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvbWFuaXB1
bGF0aW9uL2dldEFsbC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVl
cnkvc3JjL21hbmlwdWxhdGlvbi9nZXRBbGwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjc1ZTYxNGFmMmI1ODZl
NDkyNjI3NTI1YmY3MTlmOWE4YThjYWU5ZgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL21hbmlwdWxhdGlvbi9nZXRBbGwuanMK
QEAgLTAsMCArMSwzMSBAQAorZGVmaW5lKCBbCisgICAgIi4uL2NvcmUiCitdLCBmdW5jdGlvbigg
alF1ZXJ5ICkgeworCisidXNlIHN0cmljdCI7CisKK2Z1bmN0aW9uIGdldEFsbCggY29udGV4dCwg
dGFnICkgeworCisgICAgLy8gU3VwcG9ydDogSUUgPD05IC0gMTEgb25seQorICAgIC8vIFVzZSB0
eXBlb2YgdG8gYXZvaWQgemVyby1hcmd1bWVudCBtZXRob2QgaW52b2NhdGlvbiBvbiBob3N0IG9i
amVjdHMgKCMxNTE1MSkKKyAgICB2YXIgcmV0OworCisgICAgaWYgKCB0eXBlb2YgY29udGV4dC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSAhPT0gInVuZGVmaW5lZCIgKSB7CisgICAgICAgIHJldCA9IGNv
bnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIHRhZyB8fCAiKiIgKTsKKworICAgIH0gZWxzZSBp
ZiAoIHR5cGVvZiBjb250ZXh0LnF1ZXJ5U2VsZWN0b3JBbGwgIT09ICJ1bmRlZmluZWQiICkgewor
ICAgICAgICByZXQgPSBjb250ZXh0LnF1ZXJ5U2VsZWN0b3JBbGwoIHRhZyB8fCAiKiIgKTsKKwor
ICAgIH0gZWxzZSB7CisgICAgICAgIHJldCA9IFtdOworICAgIH0KKworICAgIGlmICggdGFnID09
PSB1bmRlZmluZWQgfHwgdGFnICYmIGpRdWVyeS5ub2RlTmFtZSggY29udGV4dCwgdGFnICkgKSB7
CisgICAgICAgIHJldHVybiBqUXVlcnkubWVyZ2UoIFsgY29udGV4dCBdLCByZXQgKTsKKyAgICB9
CisKKyAgICByZXR1cm4gcmV0OworfQorCityZXR1cm4gZ2V0QWxsOworfSApOwpkaWZmIC0tZ2l0
IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvbWFuaXB1bGF0
aW9uL3NldEdsb2JhbEV2YWwuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMv
anF1ZXJ5L3NyYy9tYW5pcHVsYXRpb24vc2V0R2xvYmFsRXZhbC5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMWYx
YzdiYjAxYmZiMDE4YWRjYzdkOGQ4MWQxNzZmYjI2MDcwMTg5Ci0tLSAvZGV2L251bGwKKysrIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvbWFuaXB1bGF0aW9u
L3NldEdsb2JhbEV2YWwuanMKQEAgLTAsMCArMSwyMiBAQAorZGVmaW5lKCBbCisgICAgIi4uL2Rh
dGEvdmFyL2RhdGFQcml2IgorXSwgZnVuY3Rpb24oIGRhdGFQcml2ICkgeworCisidXNlIHN0cmlj
dCI7CisKKy8vIE1hcmsgc2NyaXB0cyBhcyBoYXZpbmcgYWxyZWFkeSBiZWVuIGV2YWx1YXRlZAor
ZnVuY3Rpb24gc2V0R2xvYmFsRXZhbCggZWxlbXMsIHJlZkVsZW1lbnRzICkgeworICAgIHZhciBp
ID0gMCwKKyAgICAgICAgbCA9IGVsZW1zLmxlbmd0aDsKKworICAgIGZvciAoIDsgaSA8IGw7IGkr
KyApIHsKKyAgICAgICAgZGF0YVByaXYuc2V0KAorICAgICAgICAgICAgZWxlbXNbIGkgXSwKKyAg
ICAgICAgICAgICJnbG9iYWxFdmFsIiwKKyAgICAgICAgICAgICFyZWZFbGVtZW50cyB8fCBkYXRh
UHJpdi5nZXQoIHJlZkVsZW1lbnRzWyBpIF0sICJnbG9iYWxFdmFsIiApCisgICAgICAgICk7Cisg
ICAgfQorfQorCityZXR1cm4gc2V0R2xvYmFsRXZhbDsKK30gKTsKZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL21hbmlwdWxhdGlvbi9zdXBw
b3J0LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvbWFu
aXB1bGF0aW9uL3N1cHBvcnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2M5NjJlZjkwOTI3M2MyMTFmOGE0ZjU5
NjYxZWZlNjU4ZTIwNDZlNgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25l
L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL21hbmlwdWxhdGlvbi9zdXBwb3J0LmpzCkBAIC0wLDAg
KzEsMzUgQEAKK2RlZmluZSggWworICAgICIuLi92YXIvZG9jdW1lbnQiLAorICAgICIuLi92YXIv
c3VwcG9ydCIKK10sIGZ1bmN0aW9uKCBkb2N1bWVudCwgc3VwcG9ydCApIHsKKworInVzZSBzdHJp
Y3QiOworCisoIGZ1bmN0aW9uKCkgeworICAgIHZhciBmcmFnbWVudCA9IGRvY3VtZW50LmNyZWF0
ZURvY3VtZW50RnJhZ21lbnQoKSwKKyAgICAgICAgZGl2ID0gZnJhZ21lbnQuYXBwZW5kQ2hpbGQo
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoICJkaXYiICkgKSwKKyAgICAgICAgaW5wdXQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCAiaW5wdXQiICk7CisKKyAgICAvLyBTdXBwb3J0OiBBbmRyb2lk
IDQuMCAtIDQuMyBvbmx5CisgICAgLy8gQ2hlY2sgc3RhdGUgbG9zdCBpZiB0aGUgbmFtZSBpcyBz
ZXQgKCMxMTIxNykKKyAgICAvLyBTdXBwb3J0OiBXaW5kb3dzIFdlYiBBcHBzIChXV0EpCisgICAg
Ly8gYG5hbWVgIGFuZCBgdHlwZWAgbXVzdCB1c2UgLnNldEF0dHJpYnV0ZSBmb3IgV1dBICgjMTQ5
MDEpCisgICAgaW5wdXQuc2V0QXR0cmlidXRlKCAidHlwZSIsICJyYWRpbyIgKTsKKyAgICBpbnB1
dC5zZXRBdHRyaWJ1dGUoICJjaGVja2VkIiwgImNoZWNrZWQiICk7CisgICAgaW5wdXQuc2V0QXR0
cmlidXRlKCAibmFtZSIsICJ0IiApOworCisgICAgZGl2LmFwcGVuZENoaWxkKCBpbnB1dCApOwor
CisgICAgLy8gU3VwcG9ydDogQW5kcm9pZCA8PTQuMSBvbmx5CisgICAgLy8gT2xkZXIgV2ViS2l0
IGRvZXNuJ3QgY2xvbmUgY2hlY2tlZCBzdGF0ZSBjb3JyZWN0bHkgaW4gZnJhZ21lbnRzCisgICAg
c3VwcG9ydC5jaGVja0Nsb25lID0gZGl2LmNsb25lTm9kZSggdHJ1ZSApLmNsb25lTm9kZSggdHJ1
ZSApLmxhc3RDaGlsZC5jaGVja2VkOworCisgICAgLy8gU3VwcG9ydDogSUUgPD0xMSBvbmx5Cisg
ICAgLy8gTWFrZSBzdXJlIHRleHRhcmVhIChhbmQgY2hlY2tib3gpIGRlZmF1bHRWYWx1ZSBpcyBw
cm9wZXJseSBjbG9uZWQKKyAgICBkaXYuaW5uZXJIVE1MID0gIjx0ZXh0YXJlYT54PC90ZXh0YXJl
YT4iOworICAgIHN1cHBvcnQubm9DbG9uZUNoZWNrZWQgPSAhIWRpdi5jbG9uZU5vZGUoIHRydWUg
KS5sYXN0Q2hpbGQuZGVmYXVsdFZhbHVlOworfSApKCk7CisKK3JldHVybiBzdXBwb3J0OworCit9
ICk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5
L3NyYy9tYW5pcHVsYXRpb24vdmFyL3JjaGVja2FibGVUeXBlLmpzIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFj
a2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvbWFuaXB1bGF0aW9uL3Zhci9yY2hlY2thYmxl
VHlwZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xMmE5NDA4N2E4MTI2ODRkNzJjMDFmNDIwOWE2NDE0NTk1OGU3
YTVkCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVz
L2pxdWVyeS9zcmMvbWFuaXB1bGF0aW9uL3Zhci9yY2hlY2thYmxlVHlwZS5qcwpAQCAtMCwwICsx
LDUgQEAKK2RlZmluZSggZnVuY3Rpb24oKSB7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgcmV0
dXJuICggL14oPzpjaGVja2JveHxyYWRpbykkL2kgKTsKK30gKTsKZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL21hbmlwdWxhdGlvbi92YXIv
cnNjcmlwdFR5cGUuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5
L3NyYy9tYW5pcHVsYXRpb24vdmFyL3JzY3JpcHRUeXBlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUxZDMyN2Iy
OWRhMzBmZWQ0YmMxMGY4NzJhNGFjMzk4Yjk1ZjI3NjMKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9tYW5pcHVsYXRpb24vdmFy
L3JzY3JpcHRUeXBlLmpzCkBAIC0wLDAgKzEsNSBAQAorZGVmaW5lKCBmdW5jdGlvbigpIHsKKyAg
ICAidXNlIHN0cmljdCI7CisKKyAgICByZXR1cm4gKCAvXiR8XC8oPzpqYXZhfGVjbWEpc2NyaXB0
L2kgKTsKK30gKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxl
cy9qcXVlcnkvc3JjL21hbmlwdWxhdGlvbi92YXIvcnRhZ05hbWUuanMgYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9i
YWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9tYW5pcHVsYXRpb24vdmFyL3J0YWdOYW1l
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRiOWYwNzZkNjE0ZTRiMTRlZjgyMzkwMTRlODFlNDRmOWE2ZWYwNTMK
LS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1
ZXJ5L3NyYy9tYW5pcHVsYXRpb24vdmFyL3J0YWdOYW1lLmpzCkBAIC0wLDAgKzEsNSBAQAorZGVm
aW5lKCBmdW5jdGlvbigpIHsKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICByZXR1cm4gKCAvPChb
YS16XVteXC9cMD5ceDIwXHRcclxuXGZdKykvaSApOworfSApOwpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvbWFuaXB1bGF0aW9uL3dyYXBN
YXAuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9tYW5p
cHVsYXRpb24vd3JhcE1hcC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNTY3NzJkOTlmZDYzZjJmZjdkYzFmMmRm
ZmZkOWI5MDRlYTg0Y2RkCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUv
bm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvbWFuaXB1bGF0aW9uL3dyYXBNYXAuanMKQEAgLTAsMCAr
MSwyOSBAQAorZGVmaW5lKCBmdW5jdGlvbigpIHsKKworInVzZSBzdHJpY3QiOworCisvLyBXZSBo
YXZlIHRvIGNsb3NlIHRoZXNlIHRhZ3MgdG8gc3VwcG9ydCBYSFRNTCAoIzEzMjAwKQordmFyIHdy
YXBNYXAgPSB7CisKKyAgICAvLyBTdXBwb3J0OiBJRSA8PTkgb25seQorICAgIG9wdGlvbjogWyAx
LCAiPHNlbGVjdCBtdWx0aXBsZT0nbXVsdGlwbGUnPiIsICI8L3NlbGVjdD4iIF0sCisKKyAgICAv
LyBYSFRNTCBwYXJzZXJzIGRvIG5vdCBtYWdpY2FsbHkgaW5zZXJ0IGVsZW1lbnRzIGluIHRoZQor
ICAgIC8vIHNhbWUgd2F5IHRoYXQgdGFnIHNvdXAgcGFyc2VycyBkby4gU28gd2UgY2Fubm90IHNo
b3J0ZW4KKyAgICAvLyB0aGlzIGJ5IG9taXR0aW5nIDx0Ym9keT4gb3Igb3RoZXIgcmVxdWlyZWQg
ZWxlbWVudHMuCisgICAgdGhlYWQ6IFsgMSwgIjx0YWJsZT4iLCAiPC90YWJsZT4iIF0sCisgICAg
Y29sOiBbIDIsICI8dGFibGU+PGNvbGdyb3VwPiIsICI8L2NvbGdyb3VwPjwvdGFibGU+IiBdLAor
ICAgIHRyOiBbIDIsICI8dGFibGU+PHRib2R5PiIsICI8L3Rib2R5PjwvdGFibGU+IiBdLAorICAg
IHRkOiBbIDMsICI8dGFibGU+PHRib2R5Pjx0cj4iLCAiPC90cj48L3Rib2R5PjwvdGFibGU+IiBd
LAorCisgICAgX2RlZmF1bHQ6IFsgMCwgIiIsICIiIF0KK307CisKKy8vIFN1cHBvcnQ6IElFIDw9
OSBvbmx5Cit3cmFwTWFwLm9wdGdyb3VwID0gd3JhcE1hcC5vcHRpb247CisKK3dyYXBNYXAudGJv
ZHkgPSB3cmFwTWFwLnRmb290ID0gd3JhcE1hcC5jb2xncm91cCA9IHdyYXBNYXAuY2FwdGlvbiA9
IHdyYXBNYXAudGhlYWQ7Cit3cmFwTWFwLnRoID0gd3JhcE1hcC50ZDsKKworcmV0dXJuIHdyYXBN
YXA7Cit9ICk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMv
anF1ZXJ5L3NyYy9vZmZzZXQuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMv
anF1ZXJ5L3NyYy9vZmZzZXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWEyZWNlODVkNWE3ZTNhMmZhODQ1ZTkw
MzlhZDM4YWZhZmYzMmNiMwotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25l
L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL29mZnNldC5qcwpAQCAtMCwwICsxLDIzMiBAQAorZGVm
aW5lKCBbCisgICAgIi4vY29yZSIsCisgICAgIi4vY29yZS9hY2Nlc3MiLAorICAgICIuL3Zhci9k
b2N1bWVudCIsCisgICAgIi4vdmFyL2RvY3VtZW50RWxlbWVudCIsCisgICAgIi4vY3NzL3Zhci9y
bnVtbm9ucHgiLAorICAgICIuL2Nzcy9jdXJDU1MiLAorICAgICIuL2Nzcy9hZGRHZXRIb29rSWYi
LAorICAgICIuL2Nzcy9zdXBwb3J0IiwKKworICAgICIuL2NvcmUvaW5pdCIsCisgICAgIi4vY3Nz
IiwKKyAgICAiLi9zZWxlY3RvciIgLy8gY29udGFpbnMKK10sIGZ1bmN0aW9uKCBqUXVlcnksIGFj
Y2VzcywgZG9jdW1lbnQsIGRvY3VtZW50RWxlbWVudCwgcm51bW5vbnB4LCBjdXJDU1MsIGFkZEdl
dEhvb2tJZiwgc3VwcG9ydCApIHsKKworInVzZSBzdHJpY3QiOworCisvKioKKyAqIEdldHMgYSB3
aW5kb3cgZnJvbSBhbiBlbGVtZW50CisgKi8KK2Z1bmN0aW9uIGdldFdpbmRvdyggZWxlbSApIHsK
KyAgICByZXR1cm4galF1ZXJ5LmlzV2luZG93KCBlbGVtICkgPyBlbGVtIDogZWxlbS5ub2RlVHlw
ZSA9PT0gOSAmJiBlbGVtLmRlZmF1bHRWaWV3OworfQorCitqUXVlcnkub2Zmc2V0ID0geworICAg
IHNldE9mZnNldDogZnVuY3Rpb24oIGVsZW0sIG9wdGlvbnMsIGkgKSB7CisgICAgICAgIHZhciBj
dXJQb3NpdGlvbiwgY3VyTGVmdCwgY3VyQ1NTVG9wLCBjdXJUb3AsIGN1ck9mZnNldCwgY3VyQ1NT
TGVmdCwgY2FsY3VsYXRlUG9zaXRpb24sCisgICAgICAgICAgICBwb3NpdGlvbiA9IGpRdWVyeS5j
c3MoIGVsZW0sICJwb3NpdGlvbiIgKSwKKyAgICAgICAgICAgIGN1ckVsZW0gPSBqUXVlcnkoIGVs
ZW0gKSwKKyAgICAgICAgICAgIHByb3BzID0ge307CisKKyAgICAgICAgLy8gU2V0IHBvc2l0aW9u
IGZpcnN0LCBpbi1jYXNlIHRvcC9sZWZ0IGFyZSBzZXQgZXZlbiBvbiBzdGF0aWMgZWxlbQorICAg
ICAgICBpZiAoIHBvc2l0aW9uID09PSAic3RhdGljIiApIHsKKyAgICAgICAgICAgIGVsZW0uc3R5
bGUucG9zaXRpb24gPSAicmVsYXRpdmUiOworICAgICAgICB9CisKKyAgICAgICAgY3VyT2Zmc2V0
ID0gY3VyRWxlbS5vZmZzZXQoKTsKKyAgICAgICAgY3VyQ1NTVG9wID0galF1ZXJ5LmNzcyggZWxl
bSwgInRvcCIgKTsKKyAgICAgICAgY3VyQ1NTTGVmdCA9IGpRdWVyeS5jc3MoIGVsZW0sICJsZWZ0
IiApOworICAgICAgICBjYWxjdWxhdGVQb3NpdGlvbiA9ICggcG9zaXRpb24gPT09ICJhYnNvbHV0
ZSIgfHwgcG9zaXRpb24gPT09ICJmaXhlZCIgKSAmJgorICAgICAgICAgICAgKCBjdXJDU1NUb3Ag
KyBjdXJDU1NMZWZ0ICkuaW5kZXhPZiggImF1dG8iICkgPiAtMTsKKworICAgICAgICAvLyBOZWVk
IHRvIGJlIGFibGUgdG8gY2FsY3VsYXRlIHBvc2l0aW9uIGlmIGVpdGhlcgorICAgICAgICAvLyB0
b3Agb3IgbGVmdCBpcyBhdXRvIGFuZCBwb3NpdGlvbiBpcyBlaXRoZXIgYWJzb2x1dGUgb3IgZml4
ZWQKKyAgICAgICAgaWYgKCBjYWxjdWxhdGVQb3NpdGlvbiApIHsKKyAgICAgICAgICAgIGN1clBv
c2l0aW9uID0gY3VyRWxlbS5wb3NpdGlvbigpOworICAgICAgICAgICAgY3VyVG9wID0gY3VyUG9z
aXRpb24udG9wOworICAgICAgICAgICAgY3VyTGVmdCA9IGN1clBvc2l0aW9uLmxlZnQ7CisKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGN1clRvcCA9IHBhcnNlRmxvYXQoIGN1ckNTU1Rv
cCApIHx8IDA7CisgICAgICAgICAgICBjdXJMZWZ0ID0gcGFyc2VGbG9hdCggY3VyQ1NTTGVmdCAp
IHx8IDA7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBvcHRp
b25zICkgKSB7CisKKyAgICAgICAgICAgIC8vIFVzZSBqUXVlcnkuZXh0ZW5kIGhlcmUgdG8gYWxs
b3cgbW9kaWZpY2F0aW9uIG9mIGNvb3JkaW5hdGVzIGFyZ3VtZW50IChnaC0xODQ4KQorICAgICAg
ICAgICAgb3B0aW9ucyA9IG9wdGlvbnMuY2FsbCggZWxlbSwgaSwgalF1ZXJ5LmV4dGVuZCgge30s
IGN1ck9mZnNldCApICk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIG9wdGlvbnMudG9wICE9
IG51bGwgKSB7CisgICAgICAgICAgICBwcm9wcy50b3AgPSAoIG9wdGlvbnMudG9wIC0gY3VyT2Zm
c2V0LnRvcCApICsgY3VyVG9wOworICAgICAgICB9CisgICAgICAgIGlmICggb3B0aW9ucy5sZWZ0
ICE9IG51bGwgKSB7CisgICAgICAgICAgICBwcm9wcy5sZWZ0ID0gKCBvcHRpb25zLmxlZnQgLSBj
dXJPZmZzZXQubGVmdCApICsgY3VyTGVmdDsKKyAgICAgICAgfQorCisgICAgICAgIGlmICggInVz
aW5nIiBpbiBvcHRpb25zICkgeworICAgICAgICAgICAgb3B0aW9ucy51c2luZy5jYWxsKCBlbGVt
LCBwcm9wcyApOworCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjdXJFbGVtLmNzcygg
cHJvcHMgKTsKKyAgICAgICAgfQorICAgIH0KK307CisKK2pRdWVyeS5mbi5leHRlbmQoIHsKKyAg
ICBvZmZzZXQ6IGZ1bmN0aW9uKCBvcHRpb25zICkgeworCisgICAgICAgIC8vIFByZXNlcnZlIGNo
YWluaW5nIGZvciBzZXR0ZXIKKyAgICAgICAgaWYgKCBhcmd1bWVudHMubGVuZ3RoICkgeworICAg
ICAgICAgICAgcmV0dXJuIG9wdGlvbnMgPT09IHVuZGVmaW5lZCA/CisgICAgICAgICAgICAgICAg
dGhpcyA6CisgICAgICAgICAgICAgICAgdGhpcy5lYWNoKCBmdW5jdGlvbiggaSApIHsKKyAgICAg
ICAgICAgICAgICAgICAgalF1ZXJ5Lm9mZnNldC5zZXRPZmZzZXQoIHRoaXMsIG9wdGlvbnMsIGkg
KTsKKyAgICAgICAgICAgICAgICB9ICk7CisgICAgICAgIH0KKworICAgICAgICB2YXIgZG9jRWxl
bSwgd2luLCByZWN0LCBkb2MsCisgICAgICAgICAgICBlbGVtID0gdGhpc1sgMCBdOworCisgICAg
ICAgIGlmICggIWVsZW0gKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICAvLyBTdXBwb3J0OiBJRSA8PTExIG9ubHkKKyAgICAgICAgLy8gUnVubmluZyBnZXRCb3Vu
ZGluZ0NsaWVudFJlY3Qgb24gYQorICAgICAgICAvLyBkaXNjb25uZWN0ZWQgbm9kZSBpbiBJRSB0
aHJvd3MgYW4gZXJyb3IKKyAgICAgICAgaWYgKCAhZWxlbS5nZXRDbGllbnRSZWN0cygpLmxlbmd0
aCApIHsKKyAgICAgICAgICAgIHJldHVybiB7IHRvcDogMCwgbGVmdDogMCB9OworICAgICAgICB9
CisKKyAgICAgICAgcmVjdCA9IGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CisKKyAgICAg
ICAgLy8gTWFrZSBzdXJlIGVsZW1lbnQgaXMgbm90IGhpZGRlbiAoZGlzcGxheTogbm9uZSkKKyAg
ICAgICAgaWYgKCByZWN0LndpZHRoIHx8IHJlY3QuaGVpZ2h0ICkgeworICAgICAgICAgICAgZG9j
ID0gZWxlbS5vd25lckRvY3VtZW50OworICAgICAgICAgICAgd2luID0gZ2V0V2luZG93KCBkb2Mg
KTsKKyAgICAgICAgICAgIGRvY0VsZW0gPSBkb2MuZG9jdW1lbnRFbGVtZW50OworCisgICAgICAg
ICAgICByZXR1cm4geworICAgICAgICAgICAgICAgIHRvcDogcmVjdC50b3AgKyB3aW4ucGFnZVlP
ZmZzZXQgLSBkb2NFbGVtLmNsaWVudFRvcCwKKyAgICAgICAgICAgICAgICBsZWZ0OiByZWN0Lmxl
ZnQgKyB3aW4ucGFnZVhPZmZzZXQgLSBkb2NFbGVtLmNsaWVudExlZnQKKyAgICAgICAgICAgIH07
CisgICAgICAgIH0KKworICAgICAgICAvLyBSZXR1cm4gemVyb3MgZm9yIGRpc2Nvbm5lY3RlZCBh
bmQgaGlkZGVuIGVsZW1lbnRzIChnaC0yMzEwKQorICAgICAgICByZXR1cm4gcmVjdDsKKyAgICB9
LAorCisgICAgcG9zaXRpb246IGZ1bmN0aW9uKCkgeworICAgICAgICBpZiAoICF0aGlzWyAwIF0g
KSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB2YXIgb2Zmc2V0
UGFyZW50LCBvZmZzZXQsCisgICAgICAgICAgICBlbGVtID0gdGhpc1sgMCBdLAorICAgICAgICAg
ICAgcGFyZW50T2Zmc2V0ID0geyB0b3A6IDAsIGxlZnQ6IDAgfTsKKworICAgICAgICAvLyBGaXhl
ZCBlbGVtZW50cyBhcmUgb2Zmc2V0IGZyb20gd2luZG93IChwYXJlbnRPZmZzZXQgPSB7dG9wOjAs
IGxlZnQ6IDB9LAorICAgICAgICAvLyBiZWNhdXNlIGl0IGlzIGl0cyBvbmx5IG9mZnNldCBwYXJl
bnQKKyAgICAgICAgaWYgKCBqUXVlcnkuY3NzKCBlbGVtLCAicG9zaXRpb24iICkgPT09ICJmaXhl
ZCIgKSB7CisKKyAgICAgICAgICAgIC8vIEFzc3VtZSBnZXRCb3VuZGluZ0NsaWVudFJlY3QgaXMg
dGhlcmUgd2hlbiBjb21wdXRlZCBwb3NpdGlvbiBpcyBmaXhlZAorICAgICAgICAgICAgb2Zmc2V0
ID0gZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKKworICAgICAgICB9IGVsc2UgeworCisg
ICAgICAgICAgICAvLyBHZXQgKnJlYWwqIG9mZnNldFBhcmVudAorICAgICAgICAgICAgb2Zmc2V0
UGFyZW50ID0gdGhpcy5vZmZzZXRQYXJlbnQoKTsKKworICAgICAgICAgICAgLy8gR2V0IGNvcnJl
Y3Qgb2Zmc2V0cworICAgICAgICAgICAgb2Zmc2V0ID0gdGhpcy5vZmZzZXQoKTsKKyAgICAgICAg
ICAgIGlmICggIWpRdWVyeS5ub2RlTmFtZSggb2Zmc2V0UGFyZW50WyAwIF0sICJodG1sIiApICkg
eworICAgICAgICAgICAgICAgIHBhcmVudE9mZnNldCA9IG9mZnNldFBhcmVudC5vZmZzZXQoKTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gQWRkIG9mZnNldFBhcmVudCBib3JkZXJz
CisgICAgICAgICAgICBwYXJlbnRPZmZzZXQgPSB7CisgICAgICAgICAgICAgICAgdG9wOiBwYXJl
bnRPZmZzZXQudG9wICsgalF1ZXJ5LmNzcyggb2Zmc2V0UGFyZW50WyAwIF0sICJib3JkZXJUb3BX
aWR0aCIsIHRydWUgKSwKKyAgICAgICAgICAgICAgICBsZWZ0OiBwYXJlbnRPZmZzZXQubGVmdCAr
IGpRdWVyeS5jc3MoIG9mZnNldFBhcmVudFsgMCBdLCAiYm9yZGVyTGVmdFdpZHRoIiwgdHJ1ZSAp
CisgICAgICAgICAgICB9OworICAgICAgICB9CisKKyAgICAgICAgLy8gU3VidHJhY3QgcGFyZW50
IG9mZnNldHMgYW5kIGVsZW1lbnQgbWFyZ2lucworICAgICAgICByZXR1cm4geworICAgICAgICAg
ICAgdG9wOiBvZmZzZXQudG9wIC0gcGFyZW50T2Zmc2V0LnRvcCAtIGpRdWVyeS5jc3MoIGVsZW0s
ICJtYXJnaW5Ub3AiLCB0cnVlICksCisgICAgICAgICAgICBsZWZ0OiBvZmZzZXQubGVmdCAtIHBh
cmVudE9mZnNldC5sZWZ0IC0galF1ZXJ5LmNzcyggZWxlbSwgIm1hcmdpbkxlZnQiLCB0cnVlICkK
KyAgICAgICAgfTsKKyAgICB9LAorCisgICAgLy8gVGhpcyBtZXRob2Qgd2lsbCByZXR1cm4gZG9j
dW1lbnRFbGVtZW50IGluIHRoZSBmb2xsb3dpbmcgY2FzZXM6CisgICAgLy8gMSkgRm9yIHRoZSBl
bGVtZW50IGluc2lkZSB0aGUgaWZyYW1lIHdpdGhvdXQgb2Zmc2V0UGFyZW50LCB0aGlzIG1ldGhv
ZCB3aWxsIHJldHVybgorICAgIC8vICAgIGRvY3VtZW50RWxlbWVudCBvZiB0aGUgcGFyZW50IHdp
bmRvdworICAgIC8vIDIpIEZvciB0aGUgaGlkZGVuIG9yIGRldGFjaGVkIGVsZW1lbnQKKyAgICAv
LyAzKSBGb3IgYm9keSBvciBodG1sIGVsZW1lbnQsIGkuZS4gaW4gY2FzZSBvZiB0aGUgaHRtbCBu
b2RlIC0gaXQgd2lsbCByZXR1cm4gaXRzZWxmCisgICAgLy8KKyAgICAvLyBidXQgdGhvc2UgZXhj
ZXB0aW9ucyB3ZXJlIG5ldmVyIHByZXNlbnRlZCBhcyBhIHJlYWwgbGlmZSB1c2UtY2FzZXMKKyAg
ICAvLyBhbmQgbWlnaHQgYmUgY29uc2lkZXJlZCBhcyBtb3JlIHByZWZlcmFibGUgcmVzdWx0cy4K
KyAgICAvLworICAgIC8vIFRoaXMgbG9naWMsIGhvd2V2ZXIsIGlzIG5vdCBndWFyYW50ZWVkIGFu
ZCBjYW4gY2hhbmdlIGF0IGFueSBwb2ludCBpbiB0aGUgZnV0dXJlCisgICAgb2Zmc2V0UGFyZW50
OiBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubWFwKCBmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgIHZhciBvZmZzZXRQYXJlbnQgPSB0aGlzLm9mZnNldFBhcmVudDsKKworICAgICAg
ICAgICAgd2hpbGUgKCBvZmZzZXRQYXJlbnQgJiYgalF1ZXJ5LmNzcyggb2Zmc2V0UGFyZW50LCAi
cG9zaXRpb24iICkgPT09ICJzdGF0aWMiICkgeworICAgICAgICAgICAgICAgIG9mZnNldFBhcmVu
dCA9IG9mZnNldFBhcmVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHJldHVybiBvZmZzZXRQYXJlbnQgfHwgZG9jdW1lbnRFbGVtZW50OworICAgICAgICB9ICk7
CisgICAgfQorfSApOworCisvLyBDcmVhdGUgc2Nyb2xsTGVmdCBhbmQgc2Nyb2xsVG9wIG1ldGhv
ZHMKK2pRdWVyeS5lYWNoKCB7IHNjcm9sbExlZnQ6ICJwYWdlWE9mZnNldCIsIHNjcm9sbFRvcDog
InBhZ2VZT2Zmc2V0IiB9LCBmdW5jdGlvbiggbWV0aG9kLCBwcm9wICkgeworICAgIHZhciB0b3Ag
PSAicGFnZVlPZmZzZXQiID09PSBwcm9wOworCisgICAgalF1ZXJ5LmZuWyBtZXRob2QgXSA9IGZ1
bmN0aW9uKCB2YWwgKSB7CisgICAgICAgIHJldHVybiBhY2Nlc3MoIHRoaXMsIGZ1bmN0aW9uKCBl
bGVtLCBtZXRob2QsIHZhbCApIHsKKyAgICAgICAgICAgIHZhciB3aW4gPSBnZXRXaW5kb3coIGVs
ZW0gKTsKKworICAgICAgICAgICAgaWYgKCB2YWwgPT09IHVuZGVmaW5lZCApIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gd2luID8gd2luWyBwcm9wIF0gOiBlbGVtWyBtZXRob2QgXTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCB3aW4gKSB7CisgICAgICAgICAgICAgICAgd2lu
LnNjcm9sbFRvKAorICAgICAgICAgICAgICAgICAgICAhdG9wID8gdmFsIDogd2luLnBhZ2VYT2Zm
c2V0LAorICAgICAgICAgICAgICAgICAgICB0b3AgPyB2YWwgOiB3aW4ucGFnZVlPZmZzZXQKKyAg
ICAgICAgICAgICAgICApOworCisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IGVsZW1bIG1ldGhvZCBdID0gdmFsOworICAgICAgICAgICAgfQorICAgICAgICB9LCBtZXRob2Qs
IHZhbCwgYXJndW1lbnRzLmxlbmd0aCApOworICAgIH07Cit9ICk7CisKKy8vIFN1cHBvcnQ6IFNh
ZmFyaSA8PTcgLSA5LjEsIENocm9tZSA8PTM3IC0gNDkKKy8vIEFkZCB0aGUgdG9wL2xlZnQgY3Nz
SG9va3MgdXNpbmcgalF1ZXJ5LmZuLnBvc2l0aW9uCisvLyBXZWJraXQgYnVnOiBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjkwODQKKy8vIEJsaW5rIGJ1ZzogaHR0cHM6
Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9NTg5MzQ3Cisv
LyBnZXRDb21wdXRlZFN0eWxlIHJldHVybnMgcGVyY2VudCB3aGVuIHNwZWNpZmllZCBmb3IgdG9w
L2xlZnQvYm90dG9tL3JpZ2h0OworLy8gcmF0aGVyIHRoYW4gbWFrZSB0aGUgY3NzIG1vZHVsZSBk
ZXBlbmQgb24gdGhlIG9mZnNldCBtb2R1bGUsIGp1c3QgY2hlY2sgZm9yIGl0IGhlcmUKK2pRdWVy
eS5lYWNoKCBbICJ0b3AiLCAibGVmdCIgXSwgZnVuY3Rpb24oIGksIHByb3AgKSB7CisgICAgalF1
ZXJ5LmNzc0hvb2tzWyBwcm9wIF0gPSBhZGRHZXRIb29rSWYoIHN1cHBvcnQucGl4ZWxQb3NpdGlv
biwKKyAgICAgICAgZnVuY3Rpb24oIGVsZW0sIGNvbXB1dGVkICkgeworICAgICAgICAgICAgaWYg
KCBjb21wdXRlZCApIHsKKyAgICAgICAgICAgICAgICBjb21wdXRlZCA9IGN1ckNTUyggZWxlbSwg
cHJvcCApOworCisgICAgICAgICAgICAgICAgLy8gSWYgY3VyQ1NTIHJldHVybnMgcGVyY2VudGFn
ZSwgZmFsbGJhY2sgdG8gb2Zmc2V0CisgICAgICAgICAgICAgICAgcmV0dXJuIHJudW1ub25weC50
ZXN0KCBjb21wdXRlZCApID8KKyAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KCBlbGVtICkucG9z
aXRpb24oKVsgcHJvcCBdICsgInB4IiA6CisgICAgICAgICAgICAgICAgICAgIGNvbXB1dGVkOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgKTsKK30gKTsKKworcmV0dXJuIGpRdWVyeTsK
K30gKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVl
cnkvc3JjL3F1ZXVlLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVy
eS9zcmMvcXVldWUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmJhZjJjOGVlZGMxM2Q3MTg5Yjg2NjY0Njg1NTZk
MzY5OTA1ZmE3MAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVf
bW9kdWxlcy9qcXVlcnkvc3JjL3F1ZXVlLmpzCkBAIC0wLDAgKzEsMTQ1IEBACitkZWZpbmUoIFsK
KyAgICAiLi9jb3JlIiwKKyAgICAiLi9kYXRhL3Zhci9kYXRhUHJpdiIsCisgICAgIi4vZGVmZXJy
ZWQiLAorICAgICIuL2NhbGxiYWNrcyIKK10sIGZ1bmN0aW9uKCBqUXVlcnksIGRhdGFQcml2ICkg
eworCisidXNlIHN0cmljdCI7CisKK2pRdWVyeS5leHRlbmQoIHsKKyAgICBxdWV1ZTogZnVuY3Rp
b24oIGVsZW0sIHR5cGUsIGRhdGEgKSB7CisgICAgICAgIHZhciBxdWV1ZTsKKworICAgICAgICBp
ZiAoIGVsZW0gKSB7CisgICAgICAgICAgICB0eXBlID0gKCB0eXBlIHx8ICJmeCIgKSArICJxdWV1
ZSI7CisgICAgICAgICAgICBxdWV1ZSA9IGRhdGFQcml2LmdldCggZWxlbSwgdHlwZSApOworCisg
ICAgICAgICAgICAvLyBTcGVlZCB1cCBkZXF1ZXVlIGJ5IGdldHRpbmcgb3V0IHF1aWNrbHkgaWYg
dGhpcyBpcyBqdXN0IGEgbG9va3VwCisgICAgICAgICAgICBpZiAoIGRhdGEgKSB7CisgICAgICAg
ICAgICAgICAgaWYgKCAhcXVldWUgfHwgalF1ZXJ5LmlzQXJyYXkoIGRhdGEgKSApIHsKKyAgICAg
ICAgICAgICAgICAgICAgcXVldWUgPSBkYXRhUHJpdi5hY2Nlc3MoIGVsZW0sIHR5cGUsIGpRdWVy
eS5tYWtlQXJyYXkoIGRhdGEgKSApOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgICAgIHF1ZXVlLnB1c2goIGRhdGEgKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gcXVldWUgfHwgW107CisgICAgICAgIH0KKyAg
ICB9LAorCisgICAgZGVxdWV1ZTogZnVuY3Rpb24oIGVsZW0sIHR5cGUgKSB7CisgICAgICAgIHR5
cGUgPSB0eXBlIHx8ICJmeCI7CisKKyAgICAgICAgdmFyIHF1ZXVlID0galF1ZXJ5LnF1ZXVlKCBl
bGVtLCB0eXBlICksCisgICAgICAgICAgICBzdGFydExlbmd0aCA9IHF1ZXVlLmxlbmd0aCwKKyAg
ICAgICAgICAgIGZuID0gcXVldWUuc2hpZnQoKSwKKyAgICAgICAgICAgIGhvb2tzID0galF1ZXJ5
Ll9xdWV1ZUhvb2tzKCBlbGVtLCB0eXBlICksCisgICAgICAgICAgICBuZXh0ID0gZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICAgICAgalF1ZXJ5LmRlcXVldWUoIGVsZW0sIHR5cGUgKTsKKyAgICAg
ICAgICAgIH07CisKKyAgICAgICAgLy8gSWYgdGhlIGZ4IHF1ZXVlIGlzIGRlcXVldWVkLCBhbHdh
eXMgcmVtb3ZlIHRoZSBwcm9ncmVzcyBzZW50aW5lbAorICAgICAgICBpZiAoIGZuID09PSAiaW5w
cm9ncmVzcyIgKSB7CisgICAgICAgICAgICBmbiA9IHF1ZXVlLnNoaWZ0KCk7CisgICAgICAgICAg
ICBzdGFydExlbmd0aC0tOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCBmbiApIHsKKworICAg
ICAgICAgICAgLy8gQWRkIGEgcHJvZ3Jlc3Mgc2VudGluZWwgdG8gcHJldmVudCB0aGUgZnggcXVl
dWUgZnJvbSBiZWluZworICAgICAgICAgICAgLy8gYXV0b21hdGljYWxseSBkZXF1ZXVlZAorICAg
ICAgICAgICAgaWYgKCB0eXBlID09PSAiZngiICkgeworICAgICAgICAgICAgICAgIHF1ZXVlLnVu
c2hpZnQoICJpbnByb2dyZXNzIiApOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBD
bGVhciB1cCB0aGUgbGFzdCBxdWV1ZSBzdG9wIGZ1bmN0aW9uCisgICAgICAgICAgICBkZWxldGUg
aG9va3Muc3RvcDsKKyAgICAgICAgICAgIGZuLmNhbGwoIGVsZW0sIG5leHQsIGhvb2tzICk7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoICFzdGFydExlbmd0aCAmJiBob29rcyApIHsKKyAgICAg
ICAgICAgIGhvb2tzLmVtcHR5LmZpcmUoKTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICAvLyBO
b3QgcHVibGljIC0gZ2VuZXJhdGUgYSBxdWV1ZUhvb2tzIG9iamVjdCwgb3IgcmV0dXJuIHRoZSBj
dXJyZW50IG9uZQorICAgIF9xdWV1ZUhvb2tzOiBmdW5jdGlvbiggZWxlbSwgdHlwZSApIHsKKyAg
ICAgICAgdmFyIGtleSA9IHR5cGUgKyAicXVldWVIb29rcyI7CisgICAgICAgIHJldHVybiBkYXRh
UHJpdi5nZXQoIGVsZW0sIGtleSApIHx8IGRhdGFQcml2LmFjY2VzcyggZWxlbSwga2V5LCB7Cisg
ICAgICAgICAgICBlbXB0eTogalF1ZXJ5LkNhbGxiYWNrcyggIm9uY2UgbWVtb3J5IiApLmFkZCgg
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgZGF0YVByaXYucmVtb3ZlKCBlbGVtLCBbIHR5
cGUgKyAicXVldWUiLCBrZXkgXSApOworICAgICAgICAgICAgfSApCisgICAgICAgIH0gKTsKKyAg
ICB9Cit9ICk7CisKK2pRdWVyeS5mbi5leHRlbmQoIHsKKyAgICBxdWV1ZTogZnVuY3Rpb24oIHR5
cGUsIGRhdGEgKSB7CisgICAgICAgIHZhciBzZXR0ZXIgPSAyOworCisgICAgICAgIGlmICggdHlw
ZW9mIHR5cGUgIT09ICJzdHJpbmciICkgeworICAgICAgICAgICAgZGF0YSA9IHR5cGU7CisgICAg
ICAgICAgICB0eXBlID0gImZ4IjsKKyAgICAgICAgICAgIHNldHRlci0tOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKCBhcmd1bWVudHMubGVuZ3RoIDwgc2V0dGVyICkgeworICAgICAgICAgICAg
cmV0dXJuIGpRdWVyeS5xdWV1ZSggdGhpc1sgMCBdLCB0eXBlICk7CisgICAgICAgIH0KKworICAg
ICAgICByZXR1cm4gZGF0YSA9PT0gdW5kZWZpbmVkID8KKyAgICAgICAgICAgIHRoaXMgOgorICAg
ICAgICAgICAgdGhpcy5lYWNoKCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICB2YXIgcXVl
dWUgPSBqUXVlcnkucXVldWUoIHRoaXMsIHR5cGUsIGRhdGEgKTsKKworICAgICAgICAgICAgICAg
IC8vIEVuc3VyZSBhIGhvb2tzIGZvciB0aGlzIHF1ZXVlCisgICAgICAgICAgICAgICAgalF1ZXJ5
Ll9xdWV1ZUhvb2tzKCB0aGlzLCB0eXBlICk7CisKKyAgICAgICAgICAgICAgICBpZiAoIHR5cGUg
PT09ICJmeCIgJiYgcXVldWVbIDAgXSAhPT0gImlucHJvZ3Jlc3MiICkgeworICAgICAgICAgICAg
ICAgICAgICBqUXVlcnkuZGVxdWV1ZSggdGhpcywgdHlwZSApOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0gKTsKKyAgICB9LAorICAgIGRlcXVldWU6IGZ1bmN0aW9uKCB0eXBlICkg
eworICAgICAgICByZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGpR
dWVyeS5kZXF1ZXVlKCB0aGlzLCB0eXBlICk7CisgICAgICAgIH0gKTsKKyAgICB9LAorICAgIGNs
ZWFyUXVldWU6IGZ1bmN0aW9uKCB0eXBlICkgeworICAgICAgICByZXR1cm4gdGhpcy5xdWV1ZSgg
dHlwZSB8fCAiZngiLCBbXSApOworICAgIH0sCisKKyAgICAvLyBHZXQgYSBwcm9taXNlIHJlc29s
dmVkIHdoZW4gcXVldWVzIG9mIGEgY2VydGFpbiB0eXBlCisgICAgLy8gYXJlIGVtcHRpZWQgKGZ4
IGlzIHRoZSB0eXBlIGJ5IGRlZmF1bHQpCisgICAgcHJvbWlzZTogZnVuY3Rpb24oIHR5cGUsIG9i
aiApIHsKKyAgICAgICAgdmFyIHRtcCwKKyAgICAgICAgICAgIGNvdW50ID0gMSwKKyAgICAgICAg
ICAgIGRlZmVyID0galF1ZXJ5LkRlZmVycmVkKCksCisgICAgICAgICAgICBlbGVtZW50cyA9IHRo
aXMsCisgICAgICAgICAgICBpID0gdGhpcy5sZW5ndGgsCisgICAgICAgICAgICByZXNvbHZlID0g
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgaWYgKCAhKCAtLWNvdW50ICkgKSB7CisgICAg
ICAgICAgICAgICAgICAgIGRlZmVyLnJlc29sdmVXaXRoKCBlbGVtZW50cywgWyBlbGVtZW50cyBd
ICk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfTsKKworICAgICAgICBpZiAoIHR5
cGVvZiB0eXBlICE9PSAic3RyaW5nIiApIHsKKyAgICAgICAgICAgIG9iaiA9IHR5cGU7CisgICAg
ICAgICAgICB0eXBlID0gdW5kZWZpbmVkOworICAgICAgICB9CisgICAgICAgIHR5cGUgPSB0eXBl
IHx8ICJmeCI7CisKKyAgICAgICAgd2hpbGUgKCBpLS0gKSB7CisgICAgICAgICAgICB0bXAgPSBk
YXRhUHJpdi5nZXQoIGVsZW1lbnRzWyBpIF0sIHR5cGUgKyAicXVldWVIb29rcyIgKTsKKyAgICAg
ICAgICAgIGlmICggdG1wICYmIHRtcC5lbXB0eSApIHsKKyAgICAgICAgICAgICAgICBjb3VudCsr
OworICAgICAgICAgICAgICAgIHRtcC5lbXB0eS5hZGQoIHJlc29sdmUgKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICByZXNvbHZlKCk7CisgICAgICAgIHJldHVybiBkZWZlci5w
cm9taXNlKCBvYmogKTsKKyAgICB9Cit9ICk7CisKK3JldHVybiBqUXVlcnk7Cit9ICk7CmRpZmYg
LS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9xdWV1
ZS9kZWxheS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3Jj
L3F1ZXVlL2RlbGF5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFjOTczM2FlMGJlMzhmZjZlNmVjYjU0OWRjMjNl
MmE3ODQyODhhMTIKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2Rl
X21vZHVsZXMvanF1ZXJ5L3NyYy9xdWV1ZS9kZWxheS5qcwpAQCAtMCwwICsxLDI0IEBACitkZWZp
bmUoIFsKKyAgICAiLi4vY29yZSIsCisgICAgIi4uL3F1ZXVlIiwKKyAgICAiLi4vZWZmZWN0cyIg
Ly8gRGVsYXkgaXMgb3B0aW9uYWwgYmVjYXVzZSBvZiB0aGlzIGRlcGVuZGVuY3kKK10sIGZ1bmN0
aW9uKCBqUXVlcnkgKSB7CisKKyJ1c2Ugc3RyaWN0IjsKKworLy8gQmFzZWQgb2ZmIG9mIHRoZSBw
bHVnaW4gYnkgQ2xpbnQgSGVsZmVycywgd2l0aCBwZXJtaXNzaW9uLgorLy8gaHR0cHM6Ly93ZWIu
YXJjaGl2ZS5vcmcvd2ViLzIwMTAwMzI0MDE0NzQ3L2h0dHA6Ly9ibGluZHNpZ25hbHMuY29tL2lu
ZGV4LnBocC8yMDA5LzA3L2pxdWVyeS1kZWxheS8KK2pRdWVyeS5mbi5kZWxheSA9IGZ1bmN0aW9u
KCB0aW1lLCB0eXBlICkgeworICAgIHRpbWUgPSBqUXVlcnkuZnggPyBqUXVlcnkuZnguc3BlZWRz
WyB0aW1lIF0gfHwgdGltZSA6IHRpbWU7CisgICAgdHlwZSA9IHR5cGUgfHwgImZ4IjsKKworICAg
IHJldHVybiB0aGlzLnF1ZXVlKCB0eXBlLCBmdW5jdGlvbiggbmV4dCwgaG9va3MgKSB7CisgICAg
ICAgIHZhciB0aW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoIG5leHQsIHRpbWUgKTsKKyAgICAg
ICAgaG9va3Muc3RvcCA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgd2luZG93LmNsZWFyVGlt
ZW91dCggdGltZW91dCApOworICAgICAgICB9OworICAgIH0gKTsKK307CisKK3JldHVybiBqUXVl
cnkuZm4uZGVsYXk7Cit9ICk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2Rl
X21vZHVsZXMvanF1ZXJ5L3NyYy9zZWxlY3Rvci1uYXRpdmUuanMgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNr
Ym9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9zZWxlY3Rvci1uYXRpdmUuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNzY2NjMyNDBmMmM5YjM4NWY3NzdjNmE5MWExOGIyZWJiY2NhZjk2NQotLS0gL2Rldi9udWxs
CisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL3NlbGVj
dG9yLW5hdGl2ZS5qcwpAQCAtMCwwICsxLDIzNyBAQAorZGVmaW5lKCBbCisgICAgIi4vY29yZSIs
CisgICAgIi4vdmFyL2RvY3VtZW50IiwKKyAgICAiLi92YXIvZG9jdW1lbnRFbGVtZW50IiwKKyAg
ICAiLi92YXIvaGFzT3duIiwKKyAgICAiLi92YXIvaW5kZXhPZiIKK10sIGZ1bmN0aW9uKCBqUXVl
cnksIGRvY3VtZW50LCBkb2N1bWVudEVsZW1lbnQsIGhhc093biwgaW5kZXhPZiApIHsKKworInVz
ZSBzdHJpY3QiOworCisvKgorICogT3B0aW9uYWwgKG5vbi1TaXp6bGUpIHNlbGVjdG9yIG1vZHVs
ZSBmb3IgY3VzdG9tIGJ1aWxkcy4KKyAqCisgKiBOb3RlIHRoYXQgdGhpcyBET0VTIE5PVCBTVVBQ
T1JUIG1hbnkgZG9jdW1lbnRlZCBqUXVlcnkKKyAqIGZlYXR1cmVzIGluIGV4Y2hhbmdlIGZvciBp
dHMgc21hbGxlciBzaXplOgorICoKKyAqIEF0dHJpYnV0ZSBub3QgZXF1YWwgc2VsZWN0b3IKKyAq
IFBvc2l0aW9uYWwgc2VsZWN0b3JzICg6Zmlyc3Q7IDplcShuKTsgOm9kZDsgZXRjLikKKyAqIFR5
cGUgc2VsZWN0b3JzICg6aW5wdXQ7IDpjaGVja2JveDsgOmJ1dHRvbjsgZXRjLikKKyAqIFN0YXRl
LWJhc2VkIHNlbGVjdG9ycyAoOmFuaW1hdGVkOyA6dmlzaWJsZTsgOmhpZGRlbjsgZXRjLikKKyAq
IDpoYXMoc2VsZWN0b3IpCisgKiA6bm90KGNvbXBsZXggc2VsZWN0b3IpCisgKiBjdXN0b20gc2Vs
ZWN0b3JzIHZpYSBTaXp6bGUgZXh0ZW5zaW9ucworICogTGVhZGluZyBjb21iaW5hdG9ycyAoZS5n
LiwgJGNvbGxlY3Rpb24uZmluZCgiPiAqIikpCisgKiBSZWxpYWJsZSBmdW5jdGlvbmFsaXR5IG9u
IFhNTCBmcmFnbWVudHMKKyAqIFJlcXVpcmluZyBhbGwgcGFydHMgb2YgYSBzZWxlY3RvciB0byBt
YXRjaCBlbGVtZW50cyB1bmRlciBjb250ZXh0CisgKiAgIChlLmcuLCAkZGl2LmZpbmQoImRpdiA+
ICoiKSBub3cgbWF0Y2hlcyBjaGlsZHJlbiBvZiAkZGl2KQorICogTWF0Y2hpbmcgYWdhaW5zdCBu
b24tZWxlbWVudHMKKyAqIFJlbGlhYmxlIHNvcnRpbmcgb2YgZGlzY29ubmVjdGVkIG5vZGVzCisg
KiBxdWVyeVNlbGVjdG9yQWxsIGJ1ZyBmaXhlcyAoZS5nLiwgdW5yZWxpYWJsZSA6Zm9jdXMgb24g
V2ViS2l0KQorICoKKyAqIElmIGFueSBvZiB0aGVzZSBhcmUgdW5hY2NlcHRhYmxlIHRyYWRlb2Zm
cywgZWl0aGVyIHVzZSBTaXp6bGUgb3IKKyAqIGN1c3RvbWl6ZSB0aGlzIHN0dWIgZm9yIHRoZSBw
cm9qZWN0J3Mgc3BlY2lmaWMgbmVlZHMuCisgKi8KKwordmFyIGhhc0R1cGxpY2F0ZSwgc29ydElu
cHV0LAorICAgIHNvcnRTdGFibGUgPSBqUXVlcnkuZXhwYW5kby5zcGxpdCggIiIgKS5zb3J0KCBz
b3J0T3JkZXIgKS5qb2luKCAiIiApID09PSBqUXVlcnkuZXhwYW5kbywKKyAgICBtYXRjaGVzID0g
ZG9jdW1lbnRFbGVtZW50Lm1hdGNoZXMgfHwKKyAgICAgICAgZG9jdW1lbnRFbGVtZW50LndlYmtp
dE1hdGNoZXNTZWxlY3RvciB8fAorICAgICAgICBkb2N1bWVudEVsZW1lbnQubW96TWF0Y2hlc1Nl
bGVjdG9yIHx8CisgICAgICAgIGRvY3VtZW50RWxlbWVudC5vTWF0Y2hlc1NlbGVjdG9yIHx8Cisg
ICAgICAgIGRvY3VtZW50RWxlbWVudC5tc01hdGNoZXNTZWxlY3RvciwKKworICAgIC8vIENTUyBz
dHJpbmcvaWRlbnRpZmllciBzZXJpYWxpemF0aW9uCisgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nz
d2cub3JnL2Nzc29tLyNjb21tb24tc2VyaWFsaXppbmctaWRpb21zCisgICAgcmNzc2VzY2FwZSA9
IC8oW1wwLVx4MWZceDdmXXxeLT9cZCl8Xi0kfFteXHg4MC1cdUZGRkZcdy1dL2csCisgICAgZmNz
c2VzY2FwZSA9IGZ1bmN0aW9uKCBjaCwgYXNDb2RlUG9pbnQgKSB7CisgICAgICAgIGlmICggYXND
b2RlUG9pbnQgKSB7CisKKyAgICAgICAgICAgIC8vIFUrMDAwMCBOVUxMIGJlY29tZXMgVStGRkZE
IFJFUExBQ0VNRU5UIENIQVJBQ1RFUgorICAgICAgICAgICAgaWYgKCBjaCA9PT0gIlwwIiApIHsK
KyAgICAgICAgICAgICAgICByZXR1cm4gIlx1RkZGRCI7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIC8vIENvbnRyb2wgY2hhcmFjdGVycyBhbmQgKGRlcGVuZGVudCB1cG9uIHBvc2l0aW9u
KSBudW1iZXJzIGdldCBlc2NhcGVkIGFzIGNvZGUgcG9pbnRzCisgICAgICAgICAgICByZXR1cm4g
Y2guc2xpY2UoIDAsIC0xICkgKyAiXFwiICsgY2guY2hhckNvZGVBdCggY2gubGVuZ3RoIC0gMSAp
LnRvU3RyaW5nKCAxNiApICsgIiAiOworICAgICAgICB9CisKKyAgICAgICAgLy8gT3RoZXIgcG90
ZW50aWFsbHktc3BlY2lhbCBBU0NJSSBjaGFyYWN0ZXJzIGdldCBiYWNrc2xhc2gtZXNjYXBlZAor
ICAgICAgICByZXR1cm4gIlxcIiArIGNoOworICAgIH07CisKK2Z1bmN0aW9uIHNvcnRPcmRlcigg
YSwgYiApIHsKKworICAgIC8vIEZsYWcgZm9yIGR1cGxpY2F0ZSByZW1vdmFsCisgICAgaWYgKCBh
ID09PSBiICkgeworICAgICAgICBoYXNEdXBsaWNhdGUgPSB0cnVlOworICAgICAgICByZXR1cm4g
MDsKKyAgICB9CisKKyAgICAvLyBTb3J0IG9uIG1ldGhvZCBleGlzdGVuY2UgaWYgb25seSBvbmUg
aW5wdXQgaGFzIGNvbXBhcmVEb2N1bWVudFBvc2l0aW9uCisgICAgdmFyIGNvbXBhcmUgPSAhYS5j
b21wYXJlRG9jdW1lbnRQb3NpdGlvbiAtICFiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uOworICAg
IGlmICggY29tcGFyZSApIHsKKyAgICAgICAgcmV0dXJuIGNvbXBhcmU7CisgICAgfQorCisgICAg
Ly8gQ2FsY3VsYXRlIHBvc2l0aW9uIGlmIGJvdGggaW5wdXRzIGJlbG9uZyB0byB0aGUgc2FtZSBk
b2N1bWVudAorICAgIGNvbXBhcmUgPSAoIGEub3duZXJEb2N1bWVudCB8fCBhICkgPT09ICggYi5v
d25lckRvY3VtZW50IHx8IGIgKSA/CisgICAgICAgIGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24o
IGIgKSA6CisKKyAgICAgICAgLy8gT3RoZXJ3aXNlIHdlIGtub3cgdGhleSBhcmUgZGlzY29ubmVj
dGVkCisgICAgICAgIDE7CisKKyAgICAvLyBEaXNjb25uZWN0ZWQgbm9kZXMKKyAgICBpZiAoIGNv
bXBhcmUgJiAxICkgeworCisgICAgICAgIC8vIENob29zZSB0aGUgZmlyc3QgZWxlbWVudCB0aGF0
IGlzIHJlbGF0ZWQgdG8gb3VyIHByZWZlcnJlZCBkb2N1bWVudAorICAgICAgICBpZiAoIGEgPT09
IGRvY3VtZW50IHx8IGEub3duZXJEb2N1bWVudCA9PT0gZG9jdW1lbnQgJiYKKyAgICAgICAgICAg
IGpRdWVyeS5jb250YWlucyggZG9jdW1lbnQsIGEgKSApIHsKKyAgICAgICAgICAgIHJldHVybiAt
MTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIGIgPT09IGRvY3VtZW50IHx8IGIub3duZXJEb2N1
bWVudCA9PT0gZG9jdW1lbnQgJiYKKyAgICAgICAgICAgIGpRdWVyeS5jb250YWlucyggZG9jdW1l
bnQsIGIgKSApIHsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisKKyAgICAgICAg
Ly8gTWFpbnRhaW4gb3JpZ2luYWwgb3JkZXIKKyAgICAgICAgcmV0dXJuIHNvcnRJbnB1dCA/Cisg
ICAgICAgICAgICAoIGluZGV4T2YuY2FsbCggc29ydElucHV0LCBhICkgLSBpbmRleE9mLmNhbGwo
IHNvcnRJbnB1dCwgYiApICkgOgorICAgICAgICAgICAgMDsKKyAgICB9CisKKyAgICByZXR1cm4g
Y29tcGFyZSAmIDQgPyAtMSA6IDE7Cit9CisKK2Z1bmN0aW9uIHVuaXF1ZVNvcnQoIHJlc3VsdHMg
KSB7CisgICAgdmFyIGVsZW0sCisgICAgICAgIGR1cGxpY2F0ZXMgPSBbXSwKKyAgICAgICAgaiA9
IDAsCisgICAgICAgIGkgPSAwOworCisgICAgaGFzRHVwbGljYXRlID0gZmFsc2U7CisgICAgc29y
dElucHV0ID0gIXNvcnRTdGFibGUgJiYgcmVzdWx0cy5zbGljZSggMCApOworICAgIHJlc3VsdHMu
c29ydCggc29ydE9yZGVyICk7CisKKyAgICBpZiAoIGhhc0R1cGxpY2F0ZSApIHsKKyAgICAgICAg
d2hpbGUgKCAoIGVsZW0gPSByZXN1bHRzWyBpKysgXSApICkgeworICAgICAgICAgICAgaWYgKCBl
bGVtID09PSByZXN1bHRzWyBpIF0gKSB7CisgICAgICAgICAgICAgICAgaiA9IGR1cGxpY2F0ZXMu
cHVzaCggaSApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHdoaWxlICggai0t
ICkgeworICAgICAgICAgICAgcmVzdWx0cy5zcGxpY2UoIGR1cGxpY2F0ZXNbIGogXSwgMSApOwor
ICAgICAgICB9CisgICAgfQorCisgICAgLy8gQ2xlYXIgaW5wdXQgYWZ0ZXIgc29ydGluZyB0byBy
ZWxlYXNlIG9iamVjdHMKKyAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2pxdWVyeS9zaXp6
bGUvcHVsbC8yMjUKKyAgICBzb3J0SW5wdXQgPSBudWxsOworCisgICAgcmV0dXJuIHJlc3VsdHM7
Cit9CisKK2Z1bmN0aW9uIGVzY2FwZSggc2VsICkgeworICAgIHJldHVybiAoIHNlbCArICIiICku
cmVwbGFjZSggcmNzc2VzY2FwZSwgZmNzc2VzY2FwZSApOworfQorCitqUXVlcnkuZXh0ZW5kKCB7
CisgICAgdW5pcXVlU29ydDogdW5pcXVlU29ydCwKKyAgICB1bmlxdWU6IHVuaXF1ZVNvcnQsCisg
ICAgZXNjYXBlU2VsZWN0b3I6IGVzY2FwZSwKKyAgICBmaW5kOiBmdW5jdGlvbiggc2VsZWN0b3Is
IGNvbnRleHQsIHJlc3VsdHMsIHNlZWQgKSB7CisgICAgICAgIHZhciBlbGVtLCBub2RlVHlwZSwK
KyAgICAgICAgICAgIGkgPSAwOworCisgICAgICAgIHJlc3VsdHMgPSByZXN1bHRzIHx8IFtdOwor
ICAgICAgICBjb250ZXh0ID0gY29udGV4dCB8fCBkb2N1bWVudDsKKworICAgICAgICAvLyBTYW1l
IGJhc2ljIHNhZmVndWFyZCBhcyBTaXp6bGUKKyAgICAgICAgaWYgKCAhc2VsZWN0b3IgfHwgdHlw
ZW9mIHNlbGVjdG9yICE9PSAic3RyaW5nIiApIHsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHRz
OworICAgICAgICB9CisKKyAgICAgICAgLy8gRWFybHkgcmV0dXJuIGlmIGNvbnRleHQgaXMgbm90
IGFuIGVsZW1lbnQgb3IgZG9jdW1lbnQKKyAgICAgICAgaWYgKCAoIG5vZGVUeXBlID0gY29udGV4
dC5ub2RlVHlwZSApICE9PSAxICYmIG5vZGVUeXBlICE9PSA5ICkgeworICAgICAgICAgICAgcmV0
dXJuIFtdOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCBzZWVkICkgeworICAgICAgICAgICAg
d2hpbGUgKCAoIGVsZW0gPSBzZWVkWyBpKysgXSApICkgeworICAgICAgICAgICAgICAgIGlmICgg
alF1ZXJ5LmZpbmQubWF0Y2hlc1NlbGVjdG9yKCBlbGVtLCBzZWxlY3RvciApICkgeworICAgICAg
ICAgICAgICAgICAgICByZXN1bHRzLnB1c2goIGVsZW0gKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBqUXVlcnkubWVyZ2Uo
IHJlc3VsdHMsIGNvbnRleHQucXVlcnlTZWxlY3RvckFsbCggc2VsZWN0b3IgKSApOworICAgICAg
ICB9CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdHM7CisgICAgfSwKKyAgICB0ZXh0OiBmdW5jdGlv
biggZWxlbSApIHsKKyAgICAgICAgdmFyIG5vZGUsCisgICAgICAgICAgICByZXQgPSAiIiwKKyAg
ICAgICAgICAgIGkgPSAwLAorICAgICAgICAgICAgbm9kZVR5cGUgPSBlbGVtLm5vZGVUeXBlOwor
CisgICAgICAgIGlmICggIW5vZGVUeXBlICkgeworCisgICAgICAgICAgICAvLyBJZiBubyBub2Rl
VHlwZSwgdGhpcyBpcyBleHBlY3RlZCB0byBiZSBhbiBhcnJheQorICAgICAgICAgICAgd2hpbGUg
KCAoIG5vZGUgPSBlbGVtWyBpKysgXSApICkgeworCisgICAgICAgICAgICAgICAgLy8gRG8gbm90
IHRyYXZlcnNlIGNvbW1lbnQgbm9kZXMKKyAgICAgICAgICAgICAgICByZXQgKz0galF1ZXJ5LnRl
eHQoIG5vZGUgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmICggbm9kZVR5cGUg
PT09IDEgfHwgbm9kZVR5cGUgPT09IDkgfHwgbm9kZVR5cGUgPT09IDExICkgeworCisgICAgICAg
ICAgICAvLyBVc2UgdGV4dENvbnRlbnQgZm9yIGVsZW1lbnRzCisgICAgICAgICAgICByZXR1cm4g
ZWxlbS50ZXh0Q29udGVudDsKKyAgICAgICAgfSBlbHNlIGlmICggbm9kZVR5cGUgPT09IDMgfHwg
bm9kZVR5cGUgPT09IDQgKSB7CisgICAgICAgICAgICByZXR1cm4gZWxlbS5ub2RlVmFsdWU7Cisg
ICAgICAgIH0KKworICAgICAgICAvLyBEbyBub3QgaW5jbHVkZSBjb21tZW50IG9yIHByb2Nlc3Np
bmcgaW5zdHJ1Y3Rpb24gbm9kZXMKKworICAgICAgICByZXR1cm4gcmV0OworICAgIH0sCisgICAg
Y29udGFpbnM6IGZ1bmN0aW9uKCBhLCBiICkgeworICAgICAgICB2YXIgYWRvd24gPSBhLm5vZGVU
eXBlID09PSA5ID8gYS5kb2N1bWVudEVsZW1lbnQgOiBhLAorICAgICAgICAgICAgYnVwID0gYiAm
JiBiLnBhcmVudE5vZGU7CisgICAgICAgIHJldHVybiBhID09PSBidXAgfHwgISEoIGJ1cCAmJiBi
dXAubm9kZVR5cGUgPT09IDEgJiYgYWRvd24uY29udGFpbnMoIGJ1cCApICk7CisgICAgfSwKKyAg
ICBpc1hNTERvYzogZnVuY3Rpb24oIGVsZW0gKSB7CisKKyAgICAgICAgLy8gZG9jdW1lbnRFbGVt
ZW50IGlzIHZlcmlmaWVkIGZvciBjYXNlcyB3aGVyZSBpdCBkb2Vzbid0IHlldCBleGlzdAorICAg
ICAgICAvLyAoc3VjaCBhcyBsb2FkaW5nIGlmcmFtZXMgaW4gSUUgLSAjNDgzMykKKyAgICAgICAg
dmFyIGRvY3VtZW50RWxlbWVudCA9IGVsZW0gJiYgKCBlbGVtLm93bmVyRG9jdW1lbnQgfHwgZWxl
bSApLmRvY3VtZW50RWxlbWVudDsKKyAgICAgICAgcmV0dXJuIGRvY3VtZW50RWxlbWVudCA/IGRv
Y3VtZW50RWxlbWVudC5ub2RlTmFtZSAhPT0gIkhUTUwiIDogZmFsc2U7CisgICAgfSwKKyAgICBl
eHByOiB7CisgICAgICAgIGF0dHJIYW5kbGU6IHt9LAorICAgICAgICBtYXRjaDogeworICAgICAg
ICAgICAgYm9vbDogbmV3IFJlZ0V4cCggIl4oPzpjaGVja2VkfHNlbGVjdGVkfGFzeW5jfGF1dG9m
b2N1c3xhdXRvcGxheXxjb250cm9sc3xkZWZlciIgKworICAgICAgICAgICAgICAgICJ8ZGlzYWJs
ZWR8aGlkZGVufGlzbWFwfGxvb3B8bXVsdGlwbGV8b3BlbnxyZWFkb25seXxyZXF1aXJlZHxzY29w
ZWQpJCIsICJpIiApLAorICAgICAgICAgICAgbmVlZHNDb250ZXh0OiAvXltceDIwXHRcclxuXGZd
Kls+K35dLworICAgICAgICB9CisgICAgfQorfSApOworCitqUXVlcnkuZXh0ZW5kKCBqUXVlcnku
ZmluZCwgeworICAgIG1hdGNoZXM6IGZ1bmN0aW9uKCBleHByLCBlbGVtZW50cyApIHsKKyAgICAg
ICAgcmV0dXJuIGpRdWVyeS5maW5kKCBleHByLCBudWxsLCBudWxsLCBlbGVtZW50cyApOworICAg
IH0sCisgICAgbWF0Y2hlc1NlbGVjdG9yOiBmdW5jdGlvbiggZWxlbSwgZXhwciApIHsKKyAgICAg
ICAgcmV0dXJuIG1hdGNoZXMuY2FsbCggZWxlbSwgZXhwciApOworICAgIH0sCisgICAgYXR0cjog
ZnVuY3Rpb24oIGVsZW0sIG5hbWUgKSB7CisgICAgICAgIHZhciBmbiA9IGpRdWVyeS5leHByLmF0
dHJIYW5kbGVbIG5hbWUudG9Mb3dlckNhc2UoKSBdLAorCisgICAgICAgICAgICAvLyBEb24ndCBn
ZXQgZm9vbGVkIGJ5IE9iamVjdC5wcm90b3R5cGUgcHJvcGVydGllcyAoalF1ZXJ5ICMxMzgwNykK
KyAgICAgICAgICAgIHZhbHVlID0gZm4gJiYgaGFzT3duLmNhbGwoIGpRdWVyeS5leHByLmF0dHJI
YW5kbGUsIG5hbWUudG9Mb3dlckNhc2UoKSApID8KKyAgICAgICAgICAgICAgICBmbiggZWxlbSwg
bmFtZSwgalF1ZXJ5LmlzWE1MRG9jKCBlbGVtICkgKSA6CisgICAgICAgICAgICAgICAgdW5kZWZp
bmVkOworICAgICAgICByZXR1cm4gdmFsdWUgIT09IHVuZGVmaW5lZCA/IHZhbHVlIDogZWxlbS5n
ZXRBdHRyaWJ1dGUoIG5hbWUgKTsKKyAgICB9Cit9ICk7CisKK30gKTsKZGlmZiAtLWdpdCBhL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL3NlbGVjdG9yLXNpenps
ZS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL3NlbGVj
dG9yLXNpenpsZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZGMxYjc0OTAwMGI1NTg4NTJmYzcxZWFmNGE1MTk2
NGZiODI2ZTUyCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9t
b2R1bGVzL2pxdWVyeS9zcmMvc2VsZWN0b3Itc2l6emxlLmpzCkBAIC0wLDAgKzEsMTkgQEAKK2Rl
ZmluZSggWworICAgICIuL2NvcmUiLAorICAgICIuLi9leHRlcm5hbC9zaXp6bGUvZGlzdC9zaXp6
bGUiCitdLCBmdW5jdGlvbiggalF1ZXJ5LCBTaXp6bGUgKSB7CisKKyJ1c2Ugc3RyaWN0IjsKKwor
alF1ZXJ5LmZpbmQgPSBTaXp6bGU7CitqUXVlcnkuZXhwciA9IFNpenpsZS5zZWxlY3RvcnM7CisK
Ky8vIERlcHJlY2F0ZWQKK2pRdWVyeS5leHByWyAiOiIgXSA9IGpRdWVyeS5leHByLnBzZXVkb3M7
CitqUXVlcnkudW5pcXVlU29ydCA9IGpRdWVyeS51bmlxdWUgPSBTaXp6bGUudW5pcXVlU29ydDsK
K2pRdWVyeS50ZXh0ID0gU2l6emxlLmdldFRleHQ7CitqUXVlcnkuaXNYTUxEb2MgPSBTaXp6bGUu
aXNYTUw7CitqUXVlcnkuY29udGFpbnMgPSBTaXp6bGUuY29udGFpbnM7CitqUXVlcnkuZXNjYXBl
U2VsZWN0b3IgPSBTaXp6bGUuZXNjYXBlOworCit9ICk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9zZWxlY3Rvci5qcyBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL3NlbGVjdG9yLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmFkMzk3YjBlOTRmMjk2ZGIwNzkxODY2ZjY4NjU3MWEzYzA3NjgyOTkKLS0tIC9kZXYvbnVs
bAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9zZWxl
Y3Rvci5qcwpAQCAtMCwwICsxLDMgQEAKK2RlZmluZSggWyAiLi9zZWxlY3Rvci1zaXp6bGUiIF0s
IGZ1bmN0aW9uKCkgeworICAgICJ1c2Ugc3RyaWN0IjsKK30gKTsKZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL3NlcmlhbGl6ZS5qcyBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL3NlcmlhbGl6ZS5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43MjZlOGJiNjA4ODRjMmUyODNiMTM3NTgyMzhjOWQxNTcxMmRmMDYwCi0tLSAv
ZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9z
cmMvc2VyaWFsaXplLmpzCkBAIC0wLDAgKzEsMTMwIEBACitkZWZpbmUoIFsKKyAgICAiLi9jb3Jl
IiwKKyAgICAiLi9tYW5pcHVsYXRpb24vdmFyL3JjaGVja2FibGVUeXBlIiwKKyAgICAiLi9jb3Jl
L2luaXQiLAorICAgICIuL3RyYXZlcnNpbmciLCAvLyBmaWx0ZXIKKyAgICAiLi9hdHRyaWJ1dGVz
L3Byb3AiCitdLCBmdW5jdGlvbiggalF1ZXJ5LCByY2hlY2thYmxlVHlwZSApIHsKKworInVzZSBz
dHJpY3QiOworCit2YXIKKyAgICByYnJhY2tldCA9IC9cW1xdJC8sCisgICAgckNSTEYgPSAvXHI/
XG4vZywKKyAgICByc3VibWl0dGVyVHlwZXMgPSAvXig/OnN1Ym1pdHxidXR0b258aW1hZ2V8cmVz
ZXR8ZmlsZSkkL2ksCisgICAgcnN1Ym1pdHRhYmxlID0gL14oPzppbnB1dHxzZWxlY3R8dGV4dGFy
ZWF8a2V5Z2VuKS9pOworCitmdW5jdGlvbiBidWlsZFBhcmFtcyggcHJlZml4LCBvYmosIHRyYWRp
dGlvbmFsLCBhZGQgKSB7CisgICAgdmFyIG5hbWU7CisKKyAgICBpZiAoIGpRdWVyeS5pc0FycmF5
KCBvYmogKSApIHsKKworICAgICAgICAvLyBTZXJpYWxpemUgYXJyYXkgaXRlbS4KKyAgICAgICAg
alF1ZXJ5LmVhY2goIG9iaiwgZnVuY3Rpb24oIGksIHYgKSB7CisgICAgICAgICAgICBpZiAoIHRy
YWRpdGlvbmFsIHx8IHJicmFja2V0LnRlc3QoIHByZWZpeCApICkgeworCisgICAgICAgICAgICAg
ICAgLy8gVHJlYXQgZWFjaCBhcnJheSBpdGVtIGFzIGEgc2NhbGFyLgorICAgICAgICAgICAgICAg
IGFkZCggcHJlZml4LCB2ICk7CisKKyAgICAgICAgICAgIH0gZWxzZSB7CisKKyAgICAgICAgICAg
ICAgICAvLyBJdGVtIGlzIG5vbi1zY2FsYXIgKGFycmF5IG9yIG9iamVjdCksIGVuY29kZSBpdHMg
bnVtZXJpYyBpbmRleC4KKyAgICAgICAgICAgICAgICBidWlsZFBhcmFtcygKKyAgICAgICAgICAg
ICAgICAgICAgcHJlZml4ICsgIlsiICsgKCB0eXBlb2YgdiA9PT0gIm9iamVjdCIgJiYgdiAhPSBu
dWxsID8gaSA6ICIiICkgKyAiXSIsCisgICAgICAgICAgICAgICAgICAgIHYsCisgICAgICAgICAg
ICAgICAgICAgIHRyYWRpdGlvbmFsLAorICAgICAgICAgICAgICAgICAgICBhZGQKKyAgICAgICAg
ICAgICAgICApOworICAgICAgICAgICAgfQorICAgICAgICB9ICk7CisKKyAgICB9IGVsc2UgaWYg
KCAhdHJhZGl0aW9uYWwgJiYgalF1ZXJ5LnR5cGUoIG9iaiApID09PSAib2JqZWN0IiApIHsKKwor
ICAgICAgICAvLyBTZXJpYWxpemUgb2JqZWN0IGl0ZW0uCisgICAgICAgIGZvciAoIG5hbWUgaW4g
b2JqICkgeworICAgICAgICAgICAgYnVpbGRQYXJhbXMoIHByZWZpeCArICJbIiArIG5hbWUgKyAi
XSIsIG9ialsgbmFtZSBdLCB0cmFkaXRpb25hbCwgYWRkICk7CisgICAgICAgIH0KKworICAgIH0g
ZWxzZSB7CisKKyAgICAgICAgLy8gU2VyaWFsaXplIHNjYWxhciBpdGVtLgorICAgICAgICBhZGQo
IHByZWZpeCwgb2JqICk7CisgICAgfQorfQorCisvLyBTZXJpYWxpemUgYW4gYXJyYXkgb2YgZm9y
bSBlbGVtZW50cyBvciBhIHNldCBvZgorLy8ga2V5L3ZhbHVlcyBpbnRvIGEgcXVlcnkgc3RyaW5n
CitqUXVlcnkucGFyYW0gPSBmdW5jdGlvbiggYSwgdHJhZGl0aW9uYWwgKSB7CisgICAgdmFyIHBy
ZWZpeCwKKyAgICAgICAgcyA9IFtdLAorICAgICAgICBhZGQgPSBmdW5jdGlvbigga2V5LCB2YWx1
ZU9yRnVuY3Rpb24gKSB7CisKKyAgICAgICAgICAgIC8vIElmIHZhbHVlIGlzIGEgZnVuY3Rpb24s
IGludm9rZSBpdCBhbmQgdXNlIGl0cyByZXR1cm4gdmFsdWUKKyAgICAgICAgICAgIHZhciB2YWx1
ZSA9IGpRdWVyeS5pc0Z1bmN0aW9uKCB2YWx1ZU9yRnVuY3Rpb24gKSA/CisgICAgICAgICAgICAg
ICAgdmFsdWVPckZ1bmN0aW9uKCkgOgorICAgICAgICAgICAgICAgIHZhbHVlT3JGdW5jdGlvbjsK
KworICAgICAgICAgICAgc1sgcy5sZW5ndGggXSA9IGVuY29kZVVSSUNvbXBvbmVudCgga2V5ICkg
KyAiPSIgKworICAgICAgICAgICAgICAgIGVuY29kZVVSSUNvbXBvbmVudCggdmFsdWUgPT0gbnVs
bCA/ICIiIDogdmFsdWUgKTsKKyAgICAgICAgfTsKKworICAgIC8vIElmIGFuIGFycmF5IHdhcyBw
YXNzZWQgaW4sIGFzc3VtZSB0aGF0IGl0IGlzIGFuIGFycmF5IG9mIGZvcm0gZWxlbWVudHMuCisg
ICAgaWYgKCBqUXVlcnkuaXNBcnJheSggYSApIHx8ICggYS5qcXVlcnkgJiYgIWpRdWVyeS5pc1Bs
YWluT2JqZWN0KCBhICkgKSApIHsKKworICAgICAgICAvLyBTZXJpYWxpemUgdGhlIGZvcm0gZWxl
bWVudHMKKyAgICAgICAgalF1ZXJ5LmVhY2goIGEsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
YWRkKCB0aGlzLm5hbWUsIHRoaXMudmFsdWUgKTsKKyAgICAgICAgfSApOworCisgICAgfSBlbHNl
IHsKKworICAgICAgICAvLyBJZiB0cmFkaXRpb25hbCwgZW5jb2RlIHRoZSAib2xkIiB3YXkgKHRo
ZSB3YXkgMS4zLjIgb3Igb2xkZXIKKyAgICAgICAgLy8gZGlkIGl0KSwgb3RoZXJ3aXNlIGVuY29k
ZSBwYXJhbXMgcmVjdXJzaXZlbHkuCisgICAgICAgIGZvciAoIHByZWZpeCBpbiBhICkgeworICAg
ICAgICAgICAgYnVpbGRQYXJhbXMoIHByZWZpeCwgYVsgcHJlZml4IF0sIHRyYWRpdGlvbmFsLCBh
ZGQgKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFJldHVybiB0aGUgcmVzdWx0aW5nIHNl
cmlhbGl6YXRpb24KKyAgICByZXR1cm4gcy5qb2luKCAiJiIgKTsKK307CisKK2pRdWVyeS5mbi5l
eHRlbmQoIHsKKyAgICBzZXJpYWxpemU6IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4galF1
ZXJ5LnBhcmFtKCB0aGlzLnNlcmlhbGl6ZUFycmF5KCkgKTsKKyAgICB9LAorICAgIHNlcmlhbGl6
ZUFycmF5OiBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubWFwKCBmdW5jdGlvbigp
IHsKKworICAgICAgICAgICAgLy8gQ2FuIGFkZCBwcm9wSG9vayBmb3IgImVsZW1lbnRzIiB0byBm
aWx0ZXIgb3IgYWRkIGZvcm0gZWxlbWVudHMKKyAgICAgICAgICAgIHZhciBlbGVtZW50cyA9IGpR
dWVyeS5wcm9wKCB0aGlzLCAiZWxlbWVudHMiICk7CisgICAgICAgICAgICByZXR1cm4gZWxlbWVu
dHMgPyBqUXVlcnkubWFrZUFycmF5KCBlbGVtZW50cyApIDogdGhpczsKKyAgICAgICAgfSApCisg
ICAgICAgIC5maWx0ZXIoIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdmFyIHR5cGUgPSB0aGlz
LnR5cGU7CisKKyAgICAgICAgICAgIC8vIFVzZSAuaXMoICI6ZGlzYWJsZWQiICkgc28gdGhhdCBm
aWVsZHNldFtkaXNhYmxlZF0gd29ya3MKKyAgICAgICAgICAgIHJldHVybiB0aGlzLm5hbWUgJiYg
IWpRdWVyeSggdGhpcyApLmlzKCAiOmRpc2FibGVkIiApICYmCisgICAgICAgICAgICAgICAgcnN1
Ym1pdHRhYmxlLnRlc3QoIHRoaXMubm9kZU5hbWUgKSAmJiAhcnN1Ym1pdHRlclR5cGVzLnRlc3Qo
IHR5cGUgKSAmJgorICAgICAgICAgICAgICAgICggdGhpcy5jaGVja2VkIHx8ICFyY2hlY2thYmxl
VHlwZS50ZXN0KCB0eXBlICkgKTsKKyAgICAgICAgfSApCisgICAgICAgIC5tYXAoIGZ1bmN0aW9u
KCBpLCBlbGVtICkgeworICAgICAgICAgICAgdmFyIHZhbCA9IGpRdWVyeSggdGhpcyApLnZhbCgp
OworCisgICAgICAgICAgICBpZiAoIHZhbCA9PSBudWxsICkgeworICAgICAgICAgICAgICAgIHJl
dHVybiBudWxsOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIGpRdWVyeS5pc0Fy
cmF5KCB2YWwgKSApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4galF1ZXJ5Lm1hcCggdmFsLCBm
dW5jdGlvbiggdmFsICkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBuYW1lOiBlbGVt
Lm5hbWUsIHZhbHVlOiB2YWwucmVwbGFjZSggckNSTEYsICJcclxuIiApIH07CisgICAgICAgICAg
ICAgICAgfSApOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4geyBuYW1lOiBl
bGVtLm5hbWUsIHZhbHVlOiB2YWwucmVwbGFjZSggckNSTEYsICJcclxuIiApIH07CisgICAgICAg
IH0gKS5nZXQoKTsKKyAgICB9Cit9ICk7CisKK3JldHVybiBqUXVlcnk7Cit9ICk7CmRpZmYgLS1n
aXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy90cmF2ZXJz
aW5nLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvdHJh
dmVyc2luZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYTIyNWIwMTgzZjhjNDUzODRlMDhjODFiMzRkNDZiYWRk
NzI4MGUxCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1
bGVzL2pxdWVyeS9zcmMvdHJhdmVyc2luZy5qcwpAQCAtMCwwICsxLDE3OCBAQAorZGVmaW5lKCBb
CisgICAgIi4vY29yZSIsCisgICAgIi4vdmFyL2luZGV4T2YiLAorICAgICIuL3RyYXZlcnNpbmcv
dmFyL2RpciIsCisgICAgIi4vdHJhdmVyc2luZy92YXIvc2libGluZ3MiLAorICAgICIuL3RyYXZl
cnNpbmcvdmFyL3JuZWVkc0NvbnRleHQiLAorICAgICIuL2NvcmUvaW5pdCIsCisgICAgIi4vdHJh
dmVyc2luZy9maW5kRmlsdGVyIiwKKyAgICAiLi9zZWxlY3RvciIKK10sIGZ1bmN0aW9uKCBqUXVl
cnksIGluZGV4T2YsIGRpciwgc2libGluZ3MsIHJuZWVkc0NvbnRleHQgKSB7CisKKyJ1c2Ugc3Ry
aWN0IjsKKwordmFyIHJwYXJlbnRzcHJldiA9IC9eKD86cGFyZW50c3xwcmV2KD86VW50aWx8QWxs
KSkvLAorCisgICAgLy8gTWV0aG9kcyBndWFyYW50ZWVkIHRvIHByb2R1Y2UgYSB1bmlxdWUgc2V0
IHdoZW4gc3RhcnRpbmcgZnJvbSBhIHVuaXF1ZSBzZXQKKyAgICBndWFyYW50ZWVkVW5pcXVlID0g
eworICAgICAgICBjaGlsZHJlbjogdHJ1ZSwKKyAgICAgICAgY29udGVudHM6IHRydWUsCisgICAg
ICAgIG5leHQ6IHRydWUsCisgICAgICAgIHByZXY6IHRydWUKKyAgICB9OworCitqUXVlcnkuZm4u
ZXh0ZW5kKCB7CisgICAgaGFzOiBmdW5jdGlvbiggdGFyZ2V0ICkgeworICAgICAgICB2YXIgdGFy
Z2V0cyA9IGpRdWVyeSggdGFyZ2V0LCB0aGlzICksCisgICAgICAgICAgICBsID0gdGFyZ2V0cy5s
ZW5ndGg7CisKKyAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyKCBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgIHZhciBpID0gMDsKKyAgICAgICAgICAgIGZvciAoIDsgaSA8IGw7IGkrKyApIHsKKyAg
ICAgICAgICAgICAgICBpZiAoIGpRdWVyeS5jb250YWlucyggdGhpcywgdGFyZ2V0c1sgaSBdICkg
KSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgfSApOworICAgIH0sCisKKyAgICBjbG9zZXN0OiBmdW5j
dGlvbiggc2VsZWN0b3JzLCBjb250ZXh0ICkgeworICAgICAgICB2YXIgY3VyLAorICAgICAgICAg
ICAgaSA9IDAsCisgICAgICAgICAgICBsID0gdGhpcy5sZW5ndGgsCisgICAgICAgICAgICBtYXRj
aGVkID0gW10sCisgICAgICAgICAgICB0YXJnZXRzID0gdHlwZW9mIHNlbGVjdG9ycyAhPT0gInN0
cmluZyIgJiYgalF1ZXJ5KCBzZWxlY3RvcnMgKTsKKworICAgICAgICAvLyBQb3NpdGlvbmFsIHNl
bGVjdG9ycyBuZXZlciBtYXRjaCwgc2luY2UgdGhlcmUncyBubyBfc2VsZWN0aW9uXyBjb250ZXh0
CisgICAgICAgIGlmICggIXJuZWVkc0NvbnRleHQudGVzdCggc2VsZWN0b3JzICkgKSB7CisgICAg
ICAgICAgICBmb3IgKCA7IGkgPCBsOyBpKysgKSB7CisgICAgICAgICAgICAgICAgZm9yICggY3Vy
ID0gdGhpc1sgaSBdOyBjdXIgJiYgY3VyICE9PSBjb250ZXh0OyBjdXIgPSBjdXIucGFyZW50Tm9k
ZSApIHsKKworICAgICAgICAgICAgICAgICAgICAvLyBBbHdheXMgc2tpcCBkb2N1bWVudCBmcmFn
bWVudHMKKyAgICAgICAgICAgICAgICAgICAgaWYgKCBjdXIubm9kZVR5cGUgPCAxMSAmJiAoIHRh
cmdldHMgPworICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0cy5pbmRleCggY3VyICkgPiAt
MSA6CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIERvbid0IHBhc3Mgbm9uLWVsZW1lbnRz
IHRvIFNpenpsZQorICAgICAgICAgICAgICAgICAgICAgICAgY3VyLm5vZGVUeXBlID09PSAxICYm
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmZpbmQubWF0Y2hlc1NlbGVjdG9y
KCBjdXIsIHNlbGVjdG9ycyApICkgKSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNo
ZWQucHVzaCggY3VyICk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorCisgICAgICAgIHJldHVybiB0aGlzLnB1c2hTdGFjayggbWF0Y2hlZC5sZW5ndGggPiAxID8g
alF1ZXJ5LnVuaXF1ZVNvcnQoIG1hdGNoZWQgKSA6IG1hdGNoZWQgKTsKKyAgICB9LAorCisgICAg
Ly8gRGV0ZXJtaW5lIHRoZSBwb3NpdGlvbiBvZiBhbiBlbGVtZW50IHdpdGhpbiB0aGUgc2V0Cisg
ICAgaW5kZXg6IGZ1bmN0aW9uKCBlbGVtICkgeworCisgICAgICAgIC8vIE5vIGFyZ3VtZW50LCBy
ZXR1cm4gaW5kZXggaW4gcGFyZW50CisgICAgICAgIGlmICggIWVsZW0gKSB7CisgICAgICAgICAg
ICByZXR1cm4gKCB0aGlzWyAwIF0gJiYgdGhpc1sgMCBdLnBhcmVudE5vZGUgKSA/IHRoaXMuZmly
c3QoKS5wcmV2QWxsKCkubGVuZ3RoIDogLTE7CisgICAgICAgIH0KKworICAgICAgICAvLyBJbmRl
eCBpbiBzZWxlY3RvcgorICAgICAgICBpZiAoIHR5cGVvZiBlbGVtID09PSAic3RyaW5nIiApIHsK
KyAgICAgICAgICAgIHJldHVybiBpbmRleE9mLmNhbGwoIGpRdWVyeSggZWxlbSApLCB0aGlzWyAw
IF0gKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIExvY2F0ZSB0aGUgcG9zaXRpb24gb2YgdGhl
IGRlc2lyZWQgZWxlbWVudAorICAgICAgICByZXR1cm4gaW5kZXhPZi5jYWxsKCB0aGlzLAorCisg
ICAgICAgICAgICAvLyBJZiBpdCByZWNlaXZlcyBhIGpRdWVyeSBvYmplY3QsIHRoZSBmaXJzdCBl
bGVtZW50IGlzIHVzZWQKKyAgICAgICAgICAgIGVsZW0uanF1ZXJ5ID8gZWxlbVsgMCBdIDogZWxl
bQorICAgICAgICApOworICAgIH0sCisKKyAgICBhZGQ6IGZ1bmN0aW9uKCBzZWxlY3RvciwgY29u
dGV4dCApIHsKKyAgICAgICAgcmV0dXJuIHRoaXMucHVzaFN0YWNrKAorICAgICAgICAgICAgalF1
ZXJ5LnVuaXF1ZVNvcnQoCisgICAgICAgICAgICAgICAgalF1ZXJ5Lm1lcmdlKCB0aGlzLmdldCgp
LCBqUXVlcnkoIHNlbGVjdG9yLCBjb250ZXh0ICkgKQorICAgICAgICAgICAgKQorICAgICAgICAp
OworICAgIH0sCisKKyAgICBhZGRCYWNrOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7CisgICAgICAg
IHJldHVybiB0aGlzLmFkZCggc2VsZWN0b3IgPT0gbnVsbCA/CisgICAgICAgICAgICB0aGlzLnBy
ZXZPYmplY3QgOiB0aGlzLnByZXZPYmplY3QuZmlsdGVyKCBzZWxlY3RvciApCisgICAgICAgICk7
CisgICAgfQorfSApOworCitmdW5jdGlvbiBzaWJsaW5nKCBjdXIsIGRpciApIHsKKyAgICB3aGls
ZSAoICggY3VyID0gY3VyWyBkaXIgXSApICYmIGN1ci5ub2RlVHlwZSAhPT0gMSApIHt9CisgICAg
cmV0dXJuIGN1cjsKK30KKworalF1ZXJ5LmVhY2goIHsKKyAgICBwYXJlbnQ6IGZ1bmN0aW9uKCBl
bGVtICkgeworICAgICAgICB2YXIgcGFyZW50ID0gZWxlbS5wYXJlbnROb2RlOworICAgICAgICBy
ZXR1cm4gcGFyZW50ICYmIHBhcmVudC5ub2RlVHlwZSAhPT0gMTEgPyBwYXJlbnQgOiBudWxsOwor
ICAgIH0sCisgICAgcGFyZW50czogZnVuY3Rpb24oIGVsZW0gKSB7CisgICAgICAgIHJldHVybiBk
aXIoIGVsZW0sICJwYXJlbnROb2RlIiApOworICAgIH0sCisgICAgcGFyZW50c1VudGlsOiBmdW5j
dGlvbiggZWxlbSwgaSwgdW50aWwgKSB7CisgICAgICAgIHJldHVybiBkaXIoIGVsZW0sICJwYXJl
bnROb2RlIiwgdW50aWwgKTsKKyAgICB9LAorICAgIG5leHQ6IGZ1bmN0aW9uKCBlbGVtICkgewor
ICAgICAgICByZXR1cm4gc2libGluZyggZWxlbSwgIm5leHRTaWJsaW5nIiApOworICAgIH0sCisg
ICAgcHJldjogZnVuY3Rpb24oIGVsZW0gKSB7CisgICAgICAgIHJldHVybiBzaWJsaW5nKCBlbGVt
LCAicHJldmlvdXNTaWJsaW5nIiApOworICAgIH0sCisgICAgbmV4dEFsbDogZnVuY3Rpb24oIGVs
ZW0gKSB7CisgICAgICAgIHJldHVybiBkaXIoIGVsZW0sICJuZXh0U2libGluZyIgKTsKKyAgICB9
LAorICAgIHByZXZBbGw6IGZ1bmN0aW9uKCBlbGVtICkgeworICAgICAgICByZXR1cm4gZGlyKCBl
bGVtLCAicHJldmlvdXNTaWJsaW5nIiApOworICAgIH0sCisgICAgbmV4dFVudGlsOiBmdW5jdGlv
biggZWxlbSwgaSwgdW50aWwgKSB7CisgICAgICAgIHJldHVybiBkaXIoIGVsZW0sICJuZXh0U2li
bGluZyIsIHVudGlsICk7CisgICAgfSwKKyAgICBwcmV2VW50aWw6IGZ1bmN0aW9uKCBlbGVtLCBp
LCB1bnRpbCApIHsKKyAgICAgICAgcmV0dXJuIGRpciggZWxlbSwgInByZXZpb3VzU2libGluZyIs
IHVudGlsICk7CisgICAgfSwKKyAgICBzaWJsaW5nczogZnVuY3Rpb24oIGVsZW0gKSB7CisgICAg
ICAgIHJldHVybiBzaWJsaW5ncyggKCBlbGVtLnBhcmVudE5vZGUgfHwge30gKS5maXJzdENoaWxk
LCBlbGVtICk7CisgICAgfSwKKyAgICBjaGlsZHJlbjogZnVuY3Rpb24oIGVsZW0gKSB7CisgICAg
ICAgIHJldHVybiBzaWJsaW5ncyggZWxlbS5maXJzdENoaWxkICk7CisgICAgfSwKKyAgICBjb250
ZW50czogZnVuY3Rpb24oIGVsZW0gKSB7CisgICAgICAgIHJldHVybiBlbGVtLmNvbnRlbnREb2N1
bWVudCB8fCBqUXVlcnkubWVyZ2UoIFtdLCBlbGVtLmNoaWxkTm9kZXMgKTsKKyAgICB9Cit9LCBm
dW5jdGlvbiggbmFtZSwgZm4gKSB7CisgICAgalF1ZXJ5LmZuWyBuYW1lIF0gPSBmdW5jdGlvbigg
dW50aWwsIHNlbGVjdG9yICkgeworICAgICAgICB2YXIgbWF0Y2hlZCA9IGpRdWVyeS5tYXAoIHRo
aXMsIGZuLCB1bnRpbCApOworCisgICAgICAgIGlmICggbmFtZS5zbGljZSggLTUgKSAhPT0gIlVu
dGlsIiApIHsKKyAgICAgICAgICAgIHNlbGVjdG9yID0gdW50aWw7CisgICAgICAgIH0KKworICAg
ICAgICBpZiAoIHNlbGVjdG9yICYmIHR5cGVvZiBzZWxlY3RvciA9PT0gInN0cmluZyIgKSB7Cisg
ICAgICAgICAgICBtYXRjaGVkID0galF1ZXJ5LmZpbHRlciggc2VsZWN0b3IsIG1hdGNoZWQgKTsK
KyAgICAgICAgfQorCisgICAgICAgIGlmICggdGhpcy5sZW5ndGggPiAxICkgeworCisgICAgICAg
ICAgICAvLyBSZW1vdmUgZHVwbGljYXRlcworICAgICAgICAgICAgaWYgKCAhZ3VhcmFudGVlZFVu
aXF1ZVsgbmFtZSBdICkgeworICAgICAgICAgICAgICAgIGpRdWVyeS51bmlxdWVTb3J0KCBtYXRj
aGVkICk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFJldmVyc2Ugb3JkZXIgZm9y
IHBhcmVudHMqIGFuZCBwcmV2LWRlcml2YXRpdmVzCisgICAgICAgICAgICBpZiAoIHJwYXJlbnRz
cHJldi50ZXN0KCBuYW1lICkgKSB7CisgICAgICAgICAgICAgICAgbWF0Y2hlZC5yZXZlcnNlKCk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdGhpcy5wdXNoU3Rh
Y2soIG1hdGNoZWQgKTsKKyAgICB9OworfSApOworCityZXR1cm4galF1ZXJ5OworfSApOwpkaWZm
IC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvdHJh
dmVyc2luZy9maW5kRmlsdGVyLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVz
L2pxdWVyeS9zcmMvdHJhdmVyc2luZy9maW5kRmlsdGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ5NWM4NzVj
ODk3MDRhNGE4NTlkNGNjODc5OWVjZDZjMjA0Y2I4NmYKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy90cmF2ZXJzaW5nL2ZpbmRG
aWx0ZXIuanMKQEAgLTAsMCArMSwxMDYgQEAKK2RlZmluZSggWworICAgICIuLi9jb3JlIiwKKyAg
ICAiLi4vdmFyL2luZGV4T2YiLAorICAgICIuL3Zhci9ybmVlZHNDb250ZXh0IiwKKyAgICAiLi4v
c2VsZWN0b3IiCitdLCBmdW5jdGlvbiggalF1ZXJ5LCBpbmRleE9mLCBybmVlZHNDb250ZXh0ICkg
eworCisidXNlIHN0cmljdCI7CisKK3ZhciByaXNTaW1wbGUgPSAvXi5bXjojXFtcLixdKiQvOwor
CisvLyBJbXBsZW1lbnQgdGhlIGlkZW50aWNhbCBmdW5jdGlvbmFsaXR5IGZvciBmaWx0ZXIgYW5k
IG5vdAorZnVuY3Rpb24gd2lubm93KCBlbGVtZW50cywgcXVhbGlmaWVyLCBub3QgKSB7CisgICAg
aWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggcXVhbGlmaWVyICkgKSB7CisgICAgICAgIHJldHVybiBq
UXVlcnkuZ3JlcCggZWxlbWVudHMsIGZ1bmN0aW9uKCBlbGVtLCBpICkgeworICAgICAgICAgICAg
cmV0dXJuICEhcXVhbGlmaWVyLmNhbGwoIGVsZW0sIGksIGVsZW0gKSAhPT0gbm90OworICAgICAg
ICB9ICk7CisgICAgfQorCisgICAgLy8gU2luZ2xlIGVsZW1lbnQKKyAgICBpZiAoIHF1YWxpZmll
ci5ub2RlVHlwZSApIHsKKyAgICAgICAgcmV0dXJuIGpRdWVyeS5ncmVwKCBlbGVtZW50cywgZnVu
Y3Rpb24oIGVsZW0gKSB7CisgICAgICAgICAgICByZXR1cm4gKCBlbGVtID09PSBxdWFsaWZpZXIg
KSAhPT0gbm90OworICAgICAgICB9ICk7CisgICAgfQorCisgICAgLy8gQXJyYXlsaWtlIG9mIGVs
ZW1lbnRzIChqUXVlcnksIGFyZ3VtZW50cywgQXJyYXkpCisgICAgaWYgKCB0eXBlb2YgcXVhbGlm
aWVyICE9PSAic3RyaW5nIiApIHsKKyAgICAgICAgcmV0dXJuIGpRdWVyeS5ncmVwKCBlbGVtZW50
cywgZnVuY3Rpb24oIGVsZW0gKSB7CisgICAgICAgICAgICByZXR1cm4gKCBpbmRleE9mLmNhbGwo
IHF1YWxpZmllciwgZWxlbSApID4gLTEgKSAhPT0gbm90OworICAgICAgICB9ICk7CisgICAgfQor
CisgICAgLy8gU2ltcGxlIHNlbGVjdG9yIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGRpcmVjdGx5LCBy
ZW1vdmluZyBub24tRWxlbWVudHMKKyAgICBpZiAoIHJpc1NpbXBsZS50ZXN0KCBxdWFsaWZpZXIg
KSApIHsKKyAgICAgICAgcmV0dXJuIGpRdWVyeS5maWx0ZXIoIHF1YWxpZmllciwgZWxlbWVudHMs
IG5vdCApOworICAgIH0KKworICAgIC8vIENvbXBsZXggc2VsZWN0b3IsIGNvbXBhcmUgdGhlIHR3
byBzZXRzLCByZW1vdmluZyBub24tRWxlbWVudHMKKyAgICBxdWFsaWZpZXIgPSBqUXVlcnkuZmls
dGVyKCBxdWFsaWZpZXIsIGVsZW1lbnRzICk7CisgICAgcmV0dXJuIGpRdWVyeS5ncmVwKCBlbGVt
ZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7CisgICAgICAgIHJldHVybiAoIGluZGV4T2YuY2FsbCgg
cXVhbGlmaWVyLCBlbGVtICkgPiAtMSApICE9PSBub3QgJiYgZWxlbS5ub2RlVHlwZSA9PT0gMTsK
KyAgICB9ICk7Cit9CisKK2pRdWVyeS5maWx0ZXIgPSBmdW5jdGlvbiggZXhwciwgZWxlbXMsIG5v
dCApIHsKKyAgICB2YXIgZWxlbSA9IGVsZW1zWyAwIF07CisKKyAgICBpZiAoIG5vdCApIHsKKyAg
ICAgICAgZXhwciA9ICI6bm90KCIgKyBleHByICsgIikiOworICAgIH0KKworICAgIGlmICggZWxl
bXMubGVuZ3RoID09PSAxICYmIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7CisgICAgICAgIHJldHVy
biBqUXVlcnkuZmluZC5tYXRjaGVzU2VsZWN0b3IoIGVsZW0sIGV4cHIgKSA/IFsgZWxlbSBdIDog
W107CisgICAgfQorCisgICAgcmV0dXJuIGpRdWVyeS5maW5kLm1hdGNoZXMoIGV4cHIsIGpRdWVy
eS5ncmVwKCBlbGVtcywgZnVuY3Rpb24oIGVsZW0gKSB7CisgICAgICAgIHJldHVybiBlbGVtLm5v
ZGVUeXBlID09PSAxOworICAgIH0gKSApOworfTsKKworalF1ZXJ5LmZuLmV4dGVuZCggeworICAg
IGZpbmQ6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHsKKyAgICAgICAgdmFyIGksIHJldCwKKyAgICAg
ICAgICAgIGxlbiA9IHRoaXMubGVuZ3RoLAorICAgICAgICAgICAgc2VsZiA9IHRoaXM7CisKKyAg
ICAgICAgaWYgKCB0eXBlb2Ygc2VsZWN0b3IgIT09ICJzdHJpbmciICkgeworICAgICAgICAgICAg
cmV0dXJuIHRoaXMucHVzaFN0YWNrKCBqUXVlcnkoIHNlbGVjdG9yICkuZmlsdGVyKCBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgICAgICBmb3IgKCBpID0gMDsgaSA8IGxlbjsgaSsrICkgeworICAg
ICAgICAgICAgICAgICAgICBpZiAoIGpRdWVyeS5jb250YWlucyggc2VsZlsgaSBdLCB0aGlzICkg
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gKSApOworICAgICAgICB9
CisKKyAgICAgICAgcmV0ID0gdGhpcy5wdXNoU3RhY2soIFtdICk7CisKKyAgICAgICAgZm9yICgg
aSA9IDA7IGkgPCBsZW47IGkrKyApIHsKKyAgICAgICAgICAgIGpRdWVyeS5maW5kKCBzZWxlY3Rv
ciwgc2VsZlsgaSBdLCByZXQgKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBsZW4gPiAx
ID8galF1ZXJ5LnVuaXF1ZVNvcnQoIHJldCApIDogcmV0OworICAgIH0sCisgICAgZmlsdGVyOiBm
dW5jdGlvbiggc2VsZWN0b3IgKSB7CisgICAgICAgIHJldHVybiB0aGlzLnB1c2hTdGFjayggd2lu
bm93KCB0aGlzLCBzZWxlY3RvciB8fCBbXSwgZmFsc2UgKSApOworICAgIH0sCisgICAgbm90OiBm
dW5jdGlvbiggc2VsZWN0b3IgKSB7CisgICAgICAgIHJldHVybiB0aGlzLnB1c2hTdGFjayggd2lu
bm93KCB0aGlzLCBzZWxlY3RvciB8fCBbXSwgdHJ1ZSApICk7CisgICAgfSwKKyAgICBpczogZnVu
Y3Rpb24oIHNlbGVjdG9yICkgeworICAgICAgICByZXR1cm4gISF3aW5ub3coCisgICAgICAgICAg
ICB0aGlzLAorCisgICAgICAgICAgICAvLyBJZiB0aGlzIGlzIGEgcG9zaXRpb25hbC9yZWxhdGl2
ZSBzZWxlY3RvciwgY2hlY2sgbWVtYmVyc2hpcCBpbiB0aGUgcmV0dXJuZWQgc2V0CisgICAgICAg
ICAgICAvLyBzbyAkKCJwOmZpcnN0IikuaXMoInA6bGFzdCIpIHdvbid0IHJldHVybiB0cnVlIGZv
ciBhIGRvYyB3aXRoIHR3byAicCIuCisgICAgICAgICAgICB0eXBlb2Ygc2VsZWN0b3IgPT09ICJz
dHJpbmciICYmIHJuZWVkc0NvbnRleHQudGVzdCggc2VsZWN0b3IgKSA/CisgICAgICAgICAgICAg
ICAgalF1ZXJ5KCBzZWxlY3RvciApIDoKKyAgICAgICAgICAgICAgICBzZWxlY3RvciB8fCBbXSwK
KyAgICAgICAgICAgIGZhbHNlCisgICAgICAgICkubGVuZ3RoOworICAgIH0KK30gKTsKKworfSAp
OwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9z
cmMvdHJhdmVyc2luZy92YXIvZGlyLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1
bGVzL2pxdWVyeS9zcmMvdHJhdmVyc2luZy92YXIvZGlyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNlMDI1MWI5
OGRlOTczZmI3OGQ0NjczNzUwYWVkNzQyNGY3YzI5NTAKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy90cmF2ZXJzaW5nL3Zhci9k
aXIuanMKQEAgLTAsMCArMSwyMiBAQAorZGVmaW5lKCBbCisgICAgIi4uLy4uL2NvcmUiCitdLCBm
dW5jdGlvbiggalF1ZXJ5ICkgeworCisidXNlIHN0cmljdCI7CisKK3JldHVybiBmdW5jdGlvbigg
ZWxlbSwgZGlyLCB1bnRpbCApIHsKKyAgICB2YXIgbWF0Y2hlZCA9IFtdLAorICAgICAgICB0cnVu
Y2F0ZSA9IHVudGlsICE9PSB1bmRlZmluZWQ7CisKKyAgICB3aGlsZSAoICggZWxlbSA9IGVsZW1b
IGRpciBdICkgJiYgZWxlbS5ub2RlVHlwZSAhPT0gOSApIHsKKyAgICAgICAgaWYgKCBlbGVtLm5v
ZGVUeXBlID09PSAxICkgeworICAgICAgICAgICAgaWYgKCB0cnVuY2F0ZSAmJiBqUXVlcnkoIGVs
ZW0gKS5pcyggdW50aWwgKSApIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIG1hdGNoZWQucHVzaCggZWxlbSApOworICAgICAgICB9CisgICAgfQor
ICAgIHJldHVybiBtYXRjaGVkOworfTsKKworfSApOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
YmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvdHJhdmVyc2luZy92YXIvcm5lZWRzQ29u
dGV4dC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL3Ry
YXZlcnNpbmcvdmFyL3JuZWVkc0NvbnRleHQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2NlNDVjOWE0NmE4YTI0
ZmU1OWMzZDI2ZDg4YmU4M2I1MWQ4YWFkNwotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL3RyYXZlcnNpbmcvdmFyL3JuZWVkc0Nv
bnRleHQuanMKQEAgLTAsMCArMSw4IEBACitkZWZpbmUoIFsKKyAgICAiLi4vLi4vY29yZSIsCisg
ICAgIi4uLy4uL3NlbGVjdG9yIgorXSwgZnVuY3Rpb24oIGpRdWVyeSApIHsKKyAgICAidXNlIHN0
cmljdCI7CisKKyAgICByZXR1cm4galF1ZXJ5LmV4cHIubWF0Y2gubmVlZHNDb250ZXh0OworfSAp
OwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9z
cmMvdHJhdmVyc2luZy92YXIvc2libGluZ3MuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2Rl
X21vZHVsZXMvanF1ZXJ5L3NyYy90cmF2ZXJzaW5nL3Zhci9zaWJsaW5ncy5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45YzdhNDE0MTVmOTQxMzgyOTY3NDg4MDE1NmMyZTU4ZDVhNDlkZmY1Ci0tLSAvZGV2L251bGwK
KysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvdHJhdmVy
c2luZy92YXIvc2libGluZ3MuanMKQEAgLTAsMCArMSwxNyBAQAorZGVmaW5lKCBmdW5jdGlvbigp
IHsKKworInVzZSBzdHJpY3QiOworCityZXR1cm4gZnVuY3Rpb24oIG4sIGVsZW0gKSB7CisgICAg
dmFyIG1hdGNoZWQgPSBbXTsKKworICAgIGZvciAoIDsgbjsgbiA9IG4ubmV4dFNpYmxpbmcgKSB7
CisgICAgICAgIGlmICggbi5ub2RlVHlwZSA9PT0gMSAmJiBuICE9PSBlbGVtICkgeworICAgICAg
ICAgICAgbWF0Y2hlZC5wdXNoKCBuICk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4g
bWF0Y2hlZDsKK307CisKK30gKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25v
ZGVfbW9kdWxlcy9qcXVlcnkvc3JjL3Zhci9PYmplY3RGdW5jdGlvblN0cmluZy5qcyBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL3Zhci9PYmplY3RGdW5jdGlv
blN0cmluZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NGU1OTBmYTVhNGIyNGJhMThhODlhNmJiNGVkNWRkNmEw
N2FkNjI4Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1
bGVzL2pxdWVyeS9zcmMvdmFyL09iamVjdEZ1bmN0aW9uU3RyaW5nLmpzCkBAIC0wLDAgKzEsNyBA
QAorZGVmaW5lKCBbCisgICAgIi4vZm5Ub1N0cmluZyIKK10sIGZ1bmN0aW9uKCBmblRvU3RyaW5n
ICkgeworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHJldHVybiBmblRvU3RyaW5nLmNhbGwoIE9i
amVjdCApOworfSApOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1
bGVzL2pxdWVyeS9zcmMvdmFyL2Fyci5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9k
dWxlcy9qcXVlcnkvc3JjL3Zhci9hcnIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmM5N2E3YmVlMTY2ZDM2ODE5
NGMxZDQ1YTZiZjZkNmE3NDdjMWMwZgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2Jh
Y2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL3Zhci9hcnIuanMKQEAgLTAsMCArMSw1IEBA
CitkZWZpbmUoIGZ1bmN0aW9uKCkgeworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHJldHVybiBb
XTsKK30gKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9q
cXVlcnkvc3JjL3Zhci9jbGFzczJ0eXBlLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9t
b2R1bGVzL2pxdWVyeS9zcmMvdmFyL2NsYXNzMnR5cGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWI0NWM2MDM0
MDNmYmQ1OTUyMWE4ZDhiMWU1NGE5MzM5NDk2ZDJhYwotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL3Zhci9jbGFzczJ0eXBlLmpz
CkBAIC0wLDAgKzEsNiBAQAorZGVmaW5lKCBmdW5jdGlvbigpIHsKKyAgICAidXNlIHN0cmljdCI7
CisKKyAgICAvLyBbW0NsYXNzXV0gLT4gdHlwZSBwYWlycworICAgIHJldHVybiB7fTsKK30gKTsK
ZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3Jj
L3Zhci9jb25jYXQuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5
L3NyYy92YXIvY29uY2F0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ0ZDZiM2U2NGE1OTk0NzBhZTQ2YjUxMjBk
NWFkOGU1MzExYWU2YTQKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9u
b2RlX21vZHVsZXMvanF1ZXJ5L3NyYy92YXIvY29uY2F0LmpzCkBAIC0wLDAgKzEsNyBAQAorZGVm
aW5lKCBbCisgICAgIi4vYXJyIgorXSwgZnVuY3Rpb24oIGFyciApIHsKKyAgICAidXNlIHN0cmlj
dCI7CisKKyAgICByZXR1cm4gYXJyLmNvbmNhdDsKK30gKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL3Zhci9kb2N1bWVudC5qcyBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL3Zhci9kb2N1bWVudC5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zM2VhOTYzYTZhOGEwMmMyZjcwZmUzYmQ4YjNhN2M1MWM0YjY0YjhjCi0t
LSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVy
eS9zcmMvdmFyL2RvY3VtZW50LmpzCkBAIC0wLDAgKzEsNSBAQAorZGVmaW5lKCBmdW5jdGlvbigp
IHsKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICByZXR1cm4gd2luZG93LmRvY3VtZW50OworfSAp
OwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9z
cmMvdmFyL2RvY3VtZW50RWxlbWVudC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9k
dWxlcy9qcXVlcnkvc3JjL3Zhci9kb2N1bWVudEVsZW1lbnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDdmNzQy
NjUzNWM5YTliODYyZWE0OGYwOTE3YTExZjI4YTNmMWVmYgotLS0gL2Rldi9udWxsCisrKyBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL3Zhci9kb2N1bWVudEVs
ZW1lbnQuanMKQEAgLTAsMCArMSw3IEBACitkZWZpbmUoIFsKKyAgICAiLi9kb2N1bWVudCIKK10s
IGZ1bmN0aW9uKCBkb2N1bWVudCApIHsKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICByZXR1cm4g
ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50OworfSApOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
YmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvdmFyL2ZuVG9TdHJpbmcuanMgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy92YXIvZm5Ub1N0cmluZy5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wNGM5ODI0Yjg1NzAxYjQ5OWYzYmQxZDkwZTkyYTdkYTAxNjk3YzdkCi0t
LSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVy
eS9zcmMvdmFyL2ZuVG9TdHJpbmcuanMKQEAgLTAsMCArMSw3IEBACitkZWZpbmUoIFsKKyAgICAi
Li9oYXNPd24iCitdLCBmdW5jdGlvbiggaGFzT3duICkgeworICAgICJ1c2Ugc3RyaWN0IjsKKwor
ICAgIHJldHVybiBoYXNPd24udG9TdHJpbmc7Cit9ICk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy92YXIvZ2V0UHJvdG8uanMgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy92YXIvZ2V0UHJvdG8uanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYzExNzA4NWUzMmVkNWRmODM2MTZlYjgyMjFiYTE3N2EyZTlkMjhlNgotLS0g
L2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkv
c3JjL3Zhci9nZXRQcm90by5qcwpAQCAtMCwwICsxLDUgQEAKK2RlZmluZSggZnVuY3Rpb24oKSB7
CisgICAgInVzZSBzdHJpY3QiOworCisgICAgcmV0dXJuIE9iamVjdC5nZXRQcm90b3R5cGVPZjsK
K30gKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVl
cnkvc3JjL3Zhci9oYXNPd24uanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMv
anF1ZXJ5L3NyYy92YXIvaGFzT3duLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2YjBkYzMyNWEyNzEwYjgxOTA2
ODQ3MjYzZTc4ZTVhYWNmMWViMTcKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNr
Ym9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy92YXIvaGFzT3duLmpzCkBAIC0wLDAgKzEsNyBA
QAorZGVmaW5lKCBbCisgICAgIi4vY2xhc3MydHlwZSIKK10sIGZ1bmN0aW9uKCBjbGFzczJ0eXBl
ICkgeworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHJldHVybiBjbGFzczJ0eXBlLmhhc093blBy
b3BlcnR5OworfSApOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1
bGVzL2pxdWVyeS9zcmMvdmFyL2luZGV4T2YuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2Rl
X21vZHVsZXMvanF1ZXJ5L3NyYy92YXIvaW5kZXhPZi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYTBiNzMyYmRj
MGEyOWMyNmZmNzJkMjdmZGQ1ZWJmMjBiNjE4N2IyCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvdmFyL2luZGV4T2YuanMKQEAg
LTAsMCArMSw3IEBACitkZWZpbmUoIFsKKyAgICAiLi9hcnIiCitdLCBmdW5jdGlvbiggYXJyICkg
eworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHJldHVybiBhcnIuaW5kZXhPZjsKK30gKTsKZGlm
ZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL3Zh
ci9wbnVtLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMv
dmFyL3BudW0uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTRjYzQ5OGNkZDVkYzMyN2QzYTE4YTU0ZWE4MWQyMGEw
MzkyNWYzYQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9k
dWxlcy9qcXVlcnkvc3JjL3Zhci9wbnVtLmpzCkBAIC0wLDAgKzEsNSBAQAorZGVmaW5lKCBmdW5j
dGlvbigpIHsKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICByZXR1cm4gKCAvWystXT8oPzpcZCpc
LnwpXGQrKD86W2VFXVsrLV0/XGQrfCkvICkuc291cmNlOworfSApOwpkaWZmIC0tZ2l0IGEvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvdmFyL3B1c2guanMgYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy92YXIvcHVzaC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41NmYyOWQxNzNmYTU4OTlhMDRiZTI3MjFhZTk2MjA4Y2EzM2MwNThmCi0tLSAv
ZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9z
cmMvdmFyL3B1c2guanMKQEAgLTAsMCArMSw3IEBACitkZWZpbmUoIFsKKyAgICAiLi9hcnIiCitd
LCBmdW5jdGlvbiggYXJyICkgeworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHJldHVybiBhcnIu
cHVzaDsKK30gKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxl
cy9qcXVlcnkvc3JjL3Zhci9yY3NzTnVtLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9t
b2R1bGVzL2pxdWVyeS9zcmMvdmFyL3Jjc3NOdW0uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGMwNDU4NDVlMzg2
YzdiNTA1OGE2NTZhZmVkNmEzYmUyNDZkMjNjYQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL3Zhci9yY3NzTnVtLmpzCkBAIC0w
LDAgKzEsOSBAQAorZGVmaW5lKCBbCisgICAgIi4uL3Zhci9wbnVtIgorXSwgZnVuY3Rpb24oIHBu
dW0gKSB7CisKKyJ1c2Ugc3RyaWN0IjsKKworcmV0dXJuIG5ldyBSZWdFeHAoICJeKD86KFsrLV0p
PXwpKCIgKyBwbnVtICsgIikoW2EteiVdKikkIiwgImkiICk7CisKK30gKTsKZGlmZiAtLWdpdCBh
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL3Zhci9ybm90aHRt
bHdoaXRlLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMv
dmFyL3Jub3RodG1sd2hpdGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzJlNjY5ZjIxNTZlNDdmMWM1YTAzNDVm
OTVhNzgzMDU1MGI2NTIyMgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25l
L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL3Zhci9ybm90aHRtbHdoaXRlLmpzCkBAIC0wLDAgKzEs
OCBAQAorZGVmaW5lKCBmdW5jdGlvbigpIHsKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICAvLyBP
bmx5IGNvdW50IEhUTUwgd2hpdGVzcGFjZQorICAgIC8vIE90aGVyIHdoaXRlc3BhY2Ugc2hvdWxk
IGNvdW50IGluIHZhbHVlcworICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVs
dGlwYWdlL2luZnJhc3RydWN0dXJlLmh0bWwjc3BhY2UtY2hhcmFjdGVyCisgICAgcmV0dXJuICgg
L1teXHgyMFx0XHJcblxmXSsvZyApOworfSApOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFj
a2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvdmFyL3NsaWNlLmpzIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
YmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvdmFyL3NsaWNlLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjMyNDk4NGM1NTc0NDE5MTE4MWExMzY3NDQ0OGU5OTQ3YTE2ZTUxNWMKLS0tIC9kZXYvbnVsbAor
KysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy92YXIvc2xp
Y2UuanMKQEAgLTAsMCArMSw3IEBACitkZWZpbmUoIFsKKyAgICAiLi9hcnIiCitdLCBmdW5jdGlv
biggYXJyICkgeworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHJldHVybiBhcnIuc2xpY2U7Cit9
ICk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5
L3NyYy92YXIvc3VwcG9ydC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9q
cXVlcnkvc3JjL3Zhci9zdXBwb3J0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRlNWE0NzdmZWM1NTNkY2E2NDQ0
NzdmMTc3MTZmNzkxYmQwZGY1ZmIKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNr
Ym9uZS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy92YXIvc3VwcG9ydC5qcwpAQCAtMCwwICsxLDYg
QEAKK2RlZmluZSggZnVuY3Rpb24oKSB7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgLy8gQWxs
IHN1cHBvcnQgdGVzdHMgYXJlIGRlZmluZWQgaW4gdGhlaXIgcmVzcGVjdGl2ZSBtb2R1bGVzLgor
ICAgIHJldHVybiB7fTsKK30gKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25v
ZGVfbW9kdWxlcy9qcXVlcnkvc3JjL3Zhci90b1N0cmluZy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2ti
b25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL3Zhci90b1N0cmluZy5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
NWY5ZWI3MjE2NGM1M2VmZTg2ZTQ1NTUxMjBkMDgzNGE1NTc0MzliCi0tLSAvZGV2L251bGwKKysr
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvdmFyL3RvU3Ry
aW5nLmpzCkBAIC0wLDAgKzEsNyBAQAorZGVmaW5lKCBbCisgICAgIi4vY2xhc3MydHlwZSIKK10s
IGZ1bmN0aW9uKCBjbGFzczJ0eXBlICkgeworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHJldHVy
biBjbGFzczJ0eXBlLnRvU3RyaW5nOworfSApOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFj
a2JvbmUvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvd3JhcC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2ti
b25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL3dyYXAuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWVjMTEyMWQ2
YTg3ZDY1ZjNjMmY3MjBmNWU2MGQ1YzYxY2U0ZjUzMAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL3dyYXAuanMKQEAgLTAsMCAr
MSw3NyBAQAorZGVmaW5lKCBbCisgICAgIi4vY29yZSIsCisgICAgIi4vY29yZS9pbml0IiwKKyAg
ICAiLi9tYW5pcHVsYXRpb24iLCAvLyBjbG9uZQorICAgICIuL3RyYXZlcnNpbmciIC8vIHBhcmVu
dCwgY29udGVudHMKK10sIGZ1bmN0aW9uKCBqUXVlcnkgKSB7CisKKyJ1c2Ugc3RyaWN0IjsKKwor
alF1ZXJ5LmZuLmV4dGVuZCggeworICAgIHdyYXBBbGw6IGZ1bmN0aW9uKCBodG1sICkgeworICAg
ICAgICB2YXIgd3JhcDsKKworICAgICAgICBpZiAoIHRoaXNbIDAgXSApIHsKKyAgICAgICAgICAg
IGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIGh0bWwgKSApIHsKKyAgICAgICAgICAgICAgICBodG1s
ID0gaHRtbC5jYWxsKCB0aGlzWyAwIF0gKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
Ly8gVGhlIGVsZW1lbnRzIHRvIHdyYXAgdGhlIHRhcmdldCBhcm91bmQKKyAgICAgICAgICAgIHdy
YXAgPSBqUXVlcnkoIGh0bWwsIHRoaXNbIDAgXS5vd25lckRvY3VtZW50ICkuZXEoIDAgKS5jbG9u
ZSggdHJ1ZSApOworCisgICAgICAgICAgICBpZiAoIHRoaXNbIDAgXS5wYXJlbnROb2RlICkgewor
ICAgICAgICAgICAgICAgIHdyYXAuaW5zZXJ0QmVmb3JlKCB0aGlzWyAwIF0gKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgd3JhcC5tYXAoIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
ICAgIHZhciBlbGVtID0gdGhpczsKKworICAgICAgICAgICAgICAgIHdoaWxlICggZWxlbS5maXJz
dEVsZW1lbnRDaGlsZCApIHsKKyAgICAgICAgICAgICAgICAgICAgZWxlbSA9IGVsZW0uZmlyc3RF
bGVtZW50Q2hpbGQ7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgcmV0dXJu
IGVsZW07CisgICAgICAgICAgICB9ICkuYXBwZW5kKCB0aGlzICk7CisgICAgICAgIH0KKworICAg
ICAgICByZXR1cm4gdGhpczsKKyAgICB9LAorCisgICAgd3JhcElubmVyOiBmdW5jdGlvbiggaHRt
bCApIHsKKyAgICAgICAgaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggaHRtbCApICkgeworICAgICAg
ICAgICAgcmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oIGkgKSB7CisgICAgICAgICAgICAgICAg
alF1ZXJ5KCB0aGlzICkud3JhcElubmVyKCBodG1sLmNhbGwoIHRoaXMsIGkgKSApOworICAgICAg
ICAgICAgfSApOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICB2YXIgc2VsZiA9IGpRdWVyeSggdGhpcyApLAorICAgICAgICAg
ICAgICAgIGNvbnRlbnRzID0gc2VsZi5jb250ZW50cygpOworCisgICAgICAgICAgICBpZiAoIGNv
bnRlbnRzLmxlbmd0aCApIHsKKyAgICAgICAgICAgICAgICBjb250ZW50cy53cmFwQWxsKCBodG1s
ICk7CisKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgc2VsZi5hcHBlbmQo
IGh0bWwgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSApOworICAgIH0sCisKKyAgICB3cmFw
OiBmdW5jdGlvbiggaHRtbCApIHsKKyAgICAgICAgdmFyIGlzRnVuY3Rpb24gPSBqUXVlcnkuaXNG
dW5jdGlvbiggaHRtbCApOworCisgICAgICAgIHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCBp
ICkgeworICAgICAgICAgICAgalF1ZXJ5KCB0aGlzICkud3JhcEFsbCggaXNGdW5jdGlvbiA/IGh0
bWwuY2FsbCggdGhpcywgaSApIDogaHRtbCApOworICAgICAgICB9ICk7CisgICAgfSwKKworICAg
IHVud3JhcDogZnVuY3Rpb24oIHNlbGVjdG9yICkgeworICAgICAgICB0aGlzLnBhcmVudCggc2Vs
ZWN0b3IgKS5ub3QoICJib2R5IiApLmVhY2goIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgalF1
ZXJ5KCB0aGlzICkucmVwbGFjZVdpdGgoIHRoaXMuY2hpbGROb2RlcyApOworICAgICAgICB9ICk7
CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KK30gKTsKKworcmV0dXJuIGpRdWVyeTsKK30g
KTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy90b2RvbXZj
LWFwcC1jc3MvaW5kZXguY3NzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL3Rv
ZG9tdmMtYXBwLWNzcy9pbmRleC5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTBlM2QyZjZiNzkzZDQyY2I0ZTIw
YWVlYTQ4YTNiNWNlYjQ4NmVlNQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2ti
b25lL25vZGVfbW9kdWxlcy90b2RvbXZjLWFwcC1jc3MvaW5kZXguY3NzCkBAIC0wLDAgKzEsMzcw
IEBACitodG1sLAorYm9keSB7CisgICAgbWFyZ2luOiAwOworICAgIHBhZGRpbmc6IDA7Cit9CisK
K2J1dHRvbiB7CisgICAgbWFyZ2luOiAwOworICAgIHBhZGRpbmc6IDA7CisgICAgYm9yZGVyOiAw
OworICAgIGJhY2tncm91bmQ6IG5vbmU7CisgICAgZm9udC1zaXplOiAxMDAlOworICAgIHZlcnRp
Y2FsLWFsaWduOiBiYXNlbGluZTsKKyAgICBmb250LWZhbWlseTogaW5oZXJpdDsKKyAgICBmb250
LXdlaWdodDogaW5oZXJpdDsKKyAgICBjb2xvcjogaW5oZXJpdDsKKyAgICAtd2Via2l0LWFwcGVh
cmFuY2U6IG5vbmU7CisgICAgYXBwZWFyYW5jZTogbm9uZTsKKyAgICAtd2Via2l0LWZvbnQtc21v
b3RoaW5nOiBhbnRpYWxpYXNlZDsKKyAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNj
YWxlOworfQorCitib2R5IHsKKyAgICBmb250OiAxNHB4ICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZl
dGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7CisgICAgbGluZS1oZWlnaHQ6IDEuNGVtOworICAgIGJh
Y2tncm91bmQ6ICNmNWY1ZjU7CisgICAgY29sb3I6ICM0ZDRkNGQ7CisgICAgbWluLXdpZHRoOiAy
MzBweDsKKyAgICBtYXgtd2lkdGg6IDU1MHB4OworICAgIG1hcmdpbjogMCBhdXRvOworICAgIC13
ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOworICAgIC1tb3otb3N4LWZvbnQtc21v
b3RoaW5nOiBncmF5c2NhbGU7CisgICAgZm9udC13ZWlnaHQ6IDMwMDsKK30KKworOmZvY3VzIHsK
KyAgICBvdXRsaW5lOiAwOworfQorCisuaGlkZGVuIHsKKyAgICBkaXNwbGF5OiBub25lOworfQor
CisudG9kb2FwcCB7CisgICAgYmFja2dyb3VuZDogI2ZmZjsKKyAgICBtYXJnaW46IDEzMHB4IDAg
NDBweCAwOworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICBib3gtc2hhZG93OiAwIDJweCA0
cHggMCByZ2JhKDAsIDAsIDAsIDAuMiksCisgICAgICAgICAgICAgICAgMCAyNXB4IDUwcHggMCBy
Z2JhKDAsIDAsIDAsIDAuMSk7Cit9CisKKy50b2RvYXBwIGlucHV0Ojotd2Via2l0LWlucHV0LXBs
YWNlaG9sZGVyIHsKKyAgICBmb250LXN0eWxlOiBpdGFsaWM7CisgICAgZm9udC13ZWlnaHQ6IDMw
MDsKKyAgICBjb2xvcjogI2U2ZTZlNjsKK30KKworLnRvZG9hcHAgaW5wdXQ6Oi1tb3otcGxhY2Vo
b2xkZXIgeworICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKKyAgICBmb250LXdlaWdodDogMzAwOwor
ICAgIGNvbG9yOiAjZTZlNmU2OworfQorCisudG9kb2FwcCBpbnB1dDo6aW5wdXQtcGxhY2Vob2xk
ZXIgeworICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKKyAgICBmb250LXdlaWdodDogMzAwOworICAg
IGNvbG9yOiAjZTZlNmU2OworfQorCisudG9kb2FwcCBoMSB7CisgICAgcG9zaXRpb246IGFic29s
dXRlOworICAgIHRvcDogLTE1NXB4OworICAgIHdpZHRoOiAxMDAlOworICAgIGZvbnQtc2l6ZTog
MTAwcHg7CisgICAgZm9udC13ZWlnaHQ6IDEwMDsKKyAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cisg
ICAgY29sb3I6IHJnYmEoMTc1LCA0NywgNDcsIDAuMTUpOworICAgIC13ZWJraXQtdGV4dC1yZW5k
ZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTsKKyAgICAtbW96LXRleHQtcmVuZGVyaW5nOiBvcHRp
bWl6ZUxlZ2liaWxpdHk7CisgICAgdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTsK
K30KKworLm5ldy10b2RvLAorLmVkaXQgeworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICBt
YXJnaW46IDA7CisgICAgd2lkdGg6IDEwMCU7CisgICAgZm9udC1zaXplOiAyNHB4OworICAgIGZv
bnQtZmFtaWx5OiBpbmhlcml0OworICAgIGZvbnQtd2VpZ2h0OiBpbmhlcml0OworICAgIGxpbmUt
aGVpZ2h0OiAxLjRlbTsKKyAgICBib3JkZXI6IDA7CisgICAgY29sb3I6IGluaGVyaXQ7CisgICAg
cGFkZGluZzogNnB4OworICAgIGJvcmRlcjogMXB4IHNvbGlkICM5OTk7CisgICAgYm94LXNoYWRv
dzogaW5zZXQgMCAtMXB4IDVweCAwIHJnYmEoMCwgMCwgMCwgMC4yKTsKKyAgICBib3gtc2l6aW5n
OiBib3JkZXItYm94OworICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwor
ICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7Cit9CisKKy5uZXctdG9kbyB7
CisgICAgcGFkZGluZzogMTZweCAxNnB4IDE2cHggNjBweDsKKyAgICBib3JkZXI6IG5vbmU7Cisg
ICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjAwMyk7CisgICAgYm94LXNoYWRvdzogaW5z
ZXQgMCAtMnB4IDFweCByZ2JhKDAsMCwwLDAuMDMpOworfQorCisubWFpbiB7CisgICAgcG9zaXRp
b246IHJlbGF0aXZlOworICAgIHotaW5kZXg6IDI7CisgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlk
ICNlNmU2ZTY7Cit9CisKK2xhYmVsW2Zvcj0ndG9nZ2xlLWFsbCddIHsKKyAgICBkaXNwbGF5OiBu
b25lOworfQorCisudG9nZ2xlLWFsbCB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRv
cDogLTU1cHg7CisgICAgbGVmdDogLTEycHg7CisgICAgd2lkdGg6IDYwcHg7CisgICAgaGVpZ2h0
OiAzNHB4OworICAgIHRleHQtYWxpZ246IGNlbnRlcjsKKyAgICBib3JkZXI6IG5vbmU7IC8qIE1v
YmlsZSBTYWZhcmkgKi8KK30KKworLnRvZ2dsZS1hbGw6YmVmb3JlIHsKKyAgICBjb250ZW50OiAn
4p2vJzsKKyAgICBmb250LXNpemU6IDIycHg7CisgICAgY29sb3I6ICNlNmU2ZTY7CisgICAgcGFk
ZGluZzogMTBweCAyN3B4IDEwcHggMjdweDsKK30KKworLnRvZ2dsZS1hbGw6Y2hlY2tlZDpiZWZv
cmUgeworICAgIGNvbG9yOiAjNzM3MzczOworfQorCisudG9kby1saXN0IHsKKyAgICBtYXJnaW46
IDA7CisgICAgcGFkZGluZzogMDsKKyAgICBsaXN0LXN0eWxlOiBub25lOworfQorCisudG9kby1s
aXN0IGxpIHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgZm9udC1zaXplOiAyNHB4Owor
ICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWRlZGVkOworfQorCisudG9kby1saXN0IGxp
Omxhc3QtY2hpbGQgeworICAgIGJvcmRlci1ib3R0b206IG5vbmU7Cit9CisKKy50b2RvLWxpc3Qg
bGkuZWRpdGluZyB7CisgICAgYm9yZGVyLWJvdHRvbTogbm9uZTsKKyAgICBwYWRkaW5nOiAwOwor
fQorCisudG9kby1saXN0IGxpLmVkaXRpbmcgLmVkaXQgeworICAgIGRpc3BsYXk6IGJsb2NrOwor
ICAgIHdpZHRoOiA1MDZweDsKKyAgICBwYWRkaW5nOiAxMnB4IDE2cHg7CisgICAgbWFyZ2luOiAw
IDAgMCA0M3B4OworfQorCisudG9kby1saXN0IGxpLmVkaXRpbmcgLnZpZXcgeworICAgIGRpc3Bs
YXk6IG5vbmU7Cit9CisKKy50b2RvLWxpc3QgbGkgLnRvZ2dsZSB7CisgICAgdGV4dC1hbGlnbjog
Y2VudGVyOworICAgIHdpZHRoOiA0MHB4OworICAgIC8qIGF1dG8sIHNpbmNlIG5vbi1XZWJLaXQg
YnJvd3NlcnMgZG9lc24ndCBzdXBwb3J0IGlucHV0IHN0eWxpbmcgKi8KKyAgICBoZWlnaHQ6IGF1
dG87CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDogMDsKKyAgICBib3R0b206IDA7
CisgICAgbWFyZ2luOiBhdXRvIDA7CisgICAgYm9yZGVyOiBub25lOyAvKiBNb2JpbGUgU2FmYXJp
ICovCisgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOworICAgIGFwcGVhcmFuY2U6IG5vbmU7
Cit9CisKKy50b2RvLWxpc3QgbGkgLnRvZ2dsZTphZnRlciB7CisgICAgY29udGVudDogdXJsKCdk
YXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgd2lkdGg9IjQwIiBoZWlnaHQ9IjQwIiB2aWV3Qm94PSItMTAgLTE4IDEwMCAxMzUiPjxj
aXJjbGUgY3g9IjUwIiBjeT0iNTAiIHI9IjUwIiBmaWxsPSJub25lIiBzdHJva2U9IiNlZGVkZWQi
IHN0cm9rZS13aWR0aD0iMyIvPjwvc3ZnPicpOworfQorCisudG9kby1saXN0IGxpIC50b2dnbGU6
Y2hlY2tlZDphZnRlciB7CisgICAgY29udGVudDogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWw7dXRm
OCw8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjQwIiBoZWln
aHQ9IjQwIiB2aWV3Qm94PSItMTAgLTE4IDEwMCAxMzUiPjxjaXJjbGUgY3g9IjUwIiBjeT0iNTAi
IHI9IjUwIiBmaWxsPSJub25lIiBzdHJva2U9IiNiZGRhZDUiIHN0cm9rZS13aWR0aD0iMyIvPjxw
YXRoIGZpbGw9IiM1ZGMyYWYiIGQ9Ik03MiAyNUw0MiA3MSAyNyA1NmwtNCA0IDIwIDIwIDM0LTUy
eiIvPjwvc3ZnPicpOworfQorCisudG9kby1saXN0IGxpIGxhYmVsIHsKKyAgICB3b3JkLWJyZWFr
OiBicmVhay1hbGw7CisgICAgcGFkZGluZzogMTVweCA2MHB4IDE1cHggMTVweDsKKyAgICBtYXJn
aW4tbGVmdDogNDVweDsKKyAgICBkaXNwbGF5OiBibG9jazsKKyAgICBsaW5lLWhlaWdodDogMS4y
OworICAgIHRyYW5zaXRpb246IGNvbG9yIDAuNHM7Cit9CisKKy50b2RvLWxpc3QgbGkuY29tcGxl
dGVkIGxhYmVsIHsKKyAgICBjb2xvcjogI2Q5ZDlkOTsKKyAgICB0ZXh0LWRlY29yYXRpb246IGxp
bmUtdGhyb3VnaDsKK30KKworLnRvZG8tbGlzdCBsaSAuZGVzdHJveSB7CisgICAgZGlzcGxheTog
bm9uZTsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiAwOworICAgIHJpZ2h0OiAx
MHB4OworICAgIGJvdHRvbTogMDsKKyAgICB3aWR0aDogNDBweDsKKyAgICBoZWlnaHQ6IDQwcHg7
CisgICAgbWFyZ2luOiBhdXRvIDA7CisgICAgZm9udC1zaXplOiAzMHB4OworICAgIGNvbG9yOiAj
Y2M5YTlhOworICAgIG1hcmdpbi1ib3R0b206IDExcHg7CisgICAgdHJhbnNpdGlvbjogY29sb3Ig
MC4ycyBlYXNlLW91dDsKK30KKworLnRvZG8tbGlzdCBsaSAuZGVzdHJveTpob3ZlciB7CisgICAg
Y29sb3I6ICNhZjViNWU7Cit9CisKKy50b2RvLWxpc3QgbGkgLmRlc3Ryb3k6YWZ0ZXIgeworICAg
IGNvbnRlbnQ6ICfDlyc7Cit9CisKKy50b2RvLWxpc3QgbGk6aG92ZXIgLmRlc3Ryb3kgeworICAg
IGRpc3BsYXk6IGJsb2NrOworfQorCisudG9kby1saXN0IGxpIC5lZGl0IHsKKyAgICBkaXNwbGF5
OiBub25lOworfQorCisudG9kby1saXN0IGxpLmVkaXRpbmc6bGFzdC1jaGlsZCB7CisgICAgbWFy
Z2luLWJvdHRvbTogLTFweDsKK30KKworLmZvb3RlciB7CisgICAgY29sb3I6ICM3Nzc7CisgICAg
cGFkZGluZzogMTBweCAxNXB4OworICAgIGhlaWdodDogMjBweDsKKyAgICB0ZXh0LWFsaWduOiBj
ZW50ZXI7CisgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlNmU2ZTY7Cit9CisKKy5mb290ZXI6
YmVmb3JlIHsKKyAgICBjb250ZW50OiAnJzsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAg
cmlnaHQ6IDA7CisgICAgYm90dG9tOiAwOworICAgIGxlZnQ6IDA7CisgICAgaGVpZ2h0OiA1MHB4
OworICAgIG92ZXJmbG93OiBoaWRkZW47CisgICAgYm94LXNoYWRvdzogMCAxcHggMXB4IHJnYmEo
MCwgMCwgMCwgMC4yKSwKKyAgICAgICAgICAgICAgICAwIDhweCAwIC0zcHggI2Y2ZjZmNiwKKyAg
ICAgICAgICAgICAgICAwIDlweCAxcHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksCisgICAgICAg
ICAgICAgICAgMCAxNnB4IDAgLTZweCAjZjZmNmY2LAorICAgICAgICAgICAgICAgIDAgMTdweCAy
cHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMik7Cit9CisKKy50b2RvLWNvdW50IHsKKyAgICBmbG9h
dDogbGVmdDsKKyAgICB0ZXh0LWFsaWduOiBsZWZ0OworfQorCisudG9kby1jb3VudCBzdHJvbmcg
eworICAgIGZvbnQtd2VpZ2h0OiAzMDA7Cit9CisKKy5maWx0ZXJzIHsKKyAgICBtYXJnaW46IDA7
CisgICAgcGFkZGluZzogMDsKKyAgICBsaXN0LXN0eWxlOiBub25lOworICAgIHBvc2l0aW9uOiBh
YnNvbHV0ZTsKKyAgICByaWdodDogMDsKKyAgICBsZWZ0OiAwOworfQorCisuZmlsdGVycyBsaSB7
CisgICAgZGlzcGxheTogaW5saW5lOworfQorCisuZmlsdGVycyBsaSBhIHsKKyAgICBjb2xvcjog
aW5oZXJpdDsKKyAgICBtYXJnaW46IDNweDsKKyAgICBwYWRkaW5nOiAzcHggN3B4OworICAgIHRl
eHQtZGVjb3JhdGlvbjogbm9uZTsKKyAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsK
KyAgICBib3JkZXItcmFkaXVzOiAzcHg7Cit9CisKKy5maWx0ZXJzIGxpIGE6aG92ZXIgeworICAg
IGJvcmRlci1jb2xvcjogcmdiYSgxNzUsIDQ3LCA0NywgMC4xKTsKK30KKworLmZpbHRlcnMgbGkg
YS5zZWxlY3RlZCB7CisgICAgYm9yZGVyLWNvbG9yOiByZ2JhKDE3NSwgNDcsIDQ3LCAwLjIpOwor
fQorCisuY2xlYXItY29tcGxldGVkLAoraHRtbCAuY2xlYXItY29tcGxldGVkOmFjdGl2ZSB7Cisg
ICAgZmxvYXQ6IHJpZ2h0OworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICBsaW5lLWhlaWdo
dDogMjBweDsKKyAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CisgICAgY3Vyc29yOiBwb2ludGVy
OworfQorCisuY2xlYXItY29tcGxldGVkOmhvdmVyIHsKKyAgICB0ZXh0LWRlY29yYXRpb246IHVu
ZGVybGluZTsKK30KKworLmluZm8geworICAgIG1hcmdpbjogNjVweCBhdXRvIDA7CisgICAgY29s
b3I6ICNiZmJmYmY7CisgICAgZm9udC1zaXplOiAxMHB4OworICAgIHRleHQtc2hhZG93OiAwIDFw
eCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTsKKyAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cit9
CisKKy5pbmZvIHAgeworICAgIGxpbmUtaGVpZ2h0OiAxOworfQorCisuaW5mbyBhIHsKKyAgICBj
b2xvcjogaW5oZXJpdDsKKyAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CisgICAgZm9udC13ZWln
aHQ6IDQwMDsKK30KKworLmluZm8gYTpob3ZlciB7CisgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRl
cmxpbmU7Cit9CisKKy8qCisgICAgSGFjayB0byByZW1vdmUgYmFja2dyb3VuZCBmcm9tIE1vYmls
ZSBTYWZhcmkuCisgICAgQ2FuJ3QgdXNlIGl0IGdsb2JhbGx5IHNpbmNlIGl0IGRlc3Ryb3lzIGNo
ZWNrYm94ZXMgaW4gRmlyZWZveAorKi8KK0BtZWRpYSBzY3JlZW4gYW5kICgtd2Via2l0LW1pbi1k
ZXZpY2UtcGl4ZWwtcmF0aW86MCkgeworICAgIC50b2dnbGUtYWxsLAorICAgIC50b2RvLWxpc3Qg
bGkgLnRvZ2dsZSB7CisgICAgICAgIGJhY2tncm91bmQ6IG5vbmU7CisgICAgfQorCisgICAgLnRv
ZG8tbGlzdCBsaSAudG9nZ2xlIHsKKyAgICAgICAgaGVpZ2h0OiA0MHB4OworICAgIH0KKworICAg
IC50b2dnbGUtYWxsIHsKKyAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7
CisgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsKKyAgICAgICAgLXdlYmtpdC1hcHBl
YXJhbmNlOiBub25lOworICAgICAgICBhcHBlYXJhbmNlOiBub25lOworICAgIH0KK30KKworQG1l
ZGlhIChtYXgtd2lkdGg6IDQzMHB4KSB7CisgICAgLmZvb3RlciB7CisgICAgICAgIGhlaWdodDog
NTBweDsKKyAgICB9CisKKyAgICAuZmlsdGVycyB7CisgICAgICAgIGJvdHRvbTogMTBweDsKKyAg
ICB9Cit9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvdG9k
b212Yy1hcHAtY3NzL3BhY2thZ2UuanNvbiBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9k
dWxlcy90b2RvbXZjLWFwcC1jc3MvcGFja2FnZS5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMzNmJlZDMyMDFh
ZTU3ZGFiNzQ3ZWY5ZmY3M2Y5YmZlYmQ4ZGYxZDEKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvdG9kb212Yy1hcHAtY3NzL3BhY2thZ2UuanNvbgpA
QCAtMCwwICsxLDEwOCBAQAoreworICAiX2FyZ3MiOiBbCisgICAgWworICAgICAgeworICAgICAg
ICAicmF3IjogInRvZG9tdmMtYXBwLWNzc0BeMi4wLjAiLAorICAgICAgICAic2NvcGUiOiBudWxs
LAorICAgICAgICAiZXNjYXBlZE5hbWUiOiAidG9kb212Yy1hcHAtY3NzIiwKKyAgICAgICAgIm5h
bWUiOiAidG9kb212Yy1hcHAtY3NzIiwKKyAgICAgICAgInJhd1NwZWMiOiAiXjIuMC4wIiwKKyAg
ICAgICAgInNwZWMiOiAiPj0yLjAuMCA8My4wLjAiLAorICAgICAgICAidHlwZSI6ICJyYW5nZSIK
KyAgICAgIH0sCisgICAgICAiL1VzZXJzL2FkZHlvL3Byb2plY3RzL3NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZSIKKyAgICBdCisgIF0s
CisgICJfZnJvbSI6ICJ0b2RvbXZjLWFwcC1jc3NAPj0yLjAuMCA8My4wLjAiLAorICAiX2lkIjog
InRvZG9tdmMtYXBwLWNzc0AyLjAuNiIsCisgICJfaW5DYWNoZSI6IHRydWUsCisgICJfbG9jYXRp
b24iOiAiL3RvZG9tdmMtYXBwLWNzcyIsCisgICJfbm9kZVZlcnNpb24iOiAiNC40LjIiLAorICAi
X25wbU9wZXJhdGlvbmFsSW50ZXJuYWwiOiB7CisgICAgImhvc3QiOiAicGFja2FnZXMtMTYtZWFz
dC5pbnRlcm5hbC5ucG1qcy5jb20iLAorICAgICJ0bXAiOiAidG1wL3RvZG9tdmMtYXBwLWNzcy0y
LjAuNi50Z3pfMTQ2MzM5NDQ0MDY4Nl8wLjcwNTUwNDI1MDI0NzAzMTUiCisgIH0sCisgICJfbnBt
VXNlciI6IHsKKyAgICAibmFtZSI6ICJzaW5kcmVzb3JodXMiLAorICAgICJlbWFpbCI6ICJzaW5k
cmVzb3JodXNAZ21haWwuY29tIgorICB9LAorICAiX25wbVZlcnNpb24iOiAiMi4xNS4wIiwKKyAg
Il9waGFudG9tQ2hpbGRyZW4iOiB7fSwKKyAgIl9yZXF1ZXN0ZWQiOiB7CisgICAgInJhdyI6ICJ0
b2RvbXZjLWFwcC1jc3NAXjIuMC4wIiwKKyAgICAic2NvcGUiOiBudWxsLAorICAgICJlc2NhcGVk
TmFtZSI6ICJ0b2RvbXZjLWFwcC1jc3MiLAorICAgICJuYW1lIjogInRvZG9tdmMtYXBwLWNzcyIs
CisgICAgInJhd1NwZWMiOiAiXjIuMC4wIiwKKyAgICAic3BlYyI6ICI+PTIuMC4wIDwzLjAuMCIs
CisgICAgInR5cGUiOiAicmFuZ2UiCisgIH0sCisgICJfcmVxdWlyZWRCeSI6IFsKKyAgICAiLyIK
KyAgXSwKKyAgIl9yZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy90b2RvbXZj
LWFwcC1jc3MvLS90b2RvbXZjLWFwcC1jc3MtMi4wLjYudGd6IiwKKyAgIl9zaGFzdW0iOiAiMGIz
NjY3YzVlMTg5ZjE1NjhkOWE5YmY3OTQ3ZWJkOTI4NDA2OTYxZCIsCisgICJfc2hyaW5rd3JhcCI6
IG51bGwsCisgICJfc3BlYyI6ICJ0b2RvbXZjLWFwcC1jc3NAXjIuMC4wIiwKKyAgIl93aGVyZSI6
ICIvVXNlcnMvYWRkeW8vcHJvamVjdHMvc3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lIiwKKyAgImF1dGhvciI6IHsKKyAgICAibmFtZSI6
ICJTaW5kcmUgU29yaHVzIiwKKyAgICAiZW1haWwiOiAic2luZHJlc29yaHVzQGdtYWlsLmNvbSIs
CisgICAgInVybCI6ICJzaW5kcmVzb3JodXMuY29tIgorICB9LAorICAiYnVncyI6IHsKKyAgICAi
dXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS90YXN0ZWpzL3RvZG9tdmMtYXBwLWNzcy9pc3N1ZXMi
CisgIH0sCisgICJkZXBlbmRlbmNpZXMiOiB7fSwKKyAgImRlc2NyaXB0aW9uIjogIkNTUyBmb3Ig
VG9kb01WQyBhcHBzIiwKKyAgImRldkRlcGVuZGVuY2llcyI6IHt9LAorICAiZGlyZWN0b3JpZXMi
OiB7fSwKKyAgImRpc3QiOiB7CisgICAgInNoYXN1bSI6ICIwYjM2NjdjNWUxODlmMTU2OGQ5YTli
Zjc5NDdlYmQ5Mjg0MDY5NjFkIiwKKyAgICAidGFyYmFsbCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5w
bWpzLm9yZy90b2RvbXZjLWFwcC1jc3MvLS90b2RvbXZjLWFwcC1jc3MtMi4wLjYudGd6IgorICB9
LAorICAiZmlsZXMiOiBbCisgICAgImluZGV4LmNzcyIKKyAgXSwKKyAgImdpdEhlYWQiOiAiNzE1
ZDYyOWQ4NWNmMWUwMmRlMDk3OTcxMjU2ZTBjY2U2MzM2MDc5OSIsCisgICJob21lcGFnZSI6ICJo
dHRwczovL2dpdGh1Yi5jb20vdGFzdGVqcy90b2RvbXZjLWFwcC1jc3MjcmVhZG1lIiwKKyAgImtl
eXdvcmRzIjogWworICAgICJ0b2RvbXZjIiwKKyAgICAidGFzdGVqcyIsCisgICAgImFwcCIsCisg
ICAgInRvZG8iLAorICAgICJ0ZW1wbGF0ZSIsCisgICAgImNzcyIsCisgICAgInN0eWxlIiwKKyAg
ICAic3R5bGVzaGVldCIKKyAgXSwKKyAgImxpY2Vuc2UiOiAiQ0MtQlktNC4wIiwKKyAgIm1haW50
YWluZXJzIjogWworICAgIHsKKyAgICAgICJuYW1lIjogInNpbmRyZXNvcmh1cyIsCisgICAgICAi
ZW1haWwiOiAic2luZHJlc29yaHVzQGdtYWlsLmNvbSIKKyAgICB9LAorICAgIHsKKyAgICAgICJu
YW1lIjogImFkZHlvc21hbmkiLAorICAgICAgImVtYWlsIjogImFkZHlvc21hbmlAZ21haWwuY29t
IgorICAgIH0sCisgICAgeworICAgICAgIm5hbWUiOiAicGFzc3kiLAorICAgICAgImVtYWlsIjog
InBoYXJ0aWdAcmRyZWkubmV0IgorICAgIH0sCisgICAgeworICAgICAgIm5hbWUiOiAic3RlcGhl
bnBsdXNwbHVzIiwKKyAgICAgICJlbWFpbCI6ICJzYXdjaHVrQGdtYWlsLmNvbSIKKyAgICB9Cisg
IF0sCisgICJuYW1lIjogInRvZG9tdmMtYXBwLWNzcyIsCisgICJvcHRpb25hbERlcGVuZGVuY2ll
cyI6IHt9LAorICAicmVhZG1lIjogIkVSUk9SOiBObyBSRUFETUUgZGF0YSBmb3VuZCEiLAorICAi
cmVwb3NpdG9yeSI6IHsKKyAgICAidHlwZSI6ICJnaXQiLAorICAgICJ1cmwiOiAiZ2l0K2h0dHBz
Oi8vZ2l0aHViLmNvbS90YXN0ZWpzL3RvZG9tdmMtYXBwLWNzcy5naXQiCisgIH0sCisgICJzY3Jp
cHRzIjoge30sCisgICJzdHlsZSI6ICJpbmRleC5jc3MiLAorICAidmVyc2lvbiI6ICIyLjAuNiIK
K30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy90b2RvbXZj
LWFwcC1jc3MvcmVhZG1lLm1kIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL3Rv
ZG9tdmMtYXBwLWNzcy9yZWFkbWUubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmRkYmViZjAyNGMwNGFlYjYwMjBj
YWYxMzFhMmVkMDMxODkwODBhNQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2ti
b25lL25vZGVfbW9kdWxlcy90b2RvbXZjLWFwcC1jc3MvcmVhZG1lLm1kCkBAIC0wLDAgKzEsMjgg
QEAKKyMgdG9kb212Yy1hcHAtY3NzCisKKz4gQ1NTIGZvciBUb2RvTVZDIGFwcHMKKworIVtdKHNj
cmVlbnNob3QucG5nKQorCisKKyMjIEluc3RhbGwKKworCitgYGAKKyQgbnBtIGluc3RhbGwgLS1z
YXZlIHRvZG9tdmMtYXBwLWNzcworYGBgCisKKworIyMgR2V0dGluZyBzdGFydGVkCisKK2BgYGh0
bWwKKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ibm9kZV9tb2R1bGVzL3RvZG9tdmMtYXBw
LWNzcy9pbmRleC5jc3MiPgorYGBgCisKK1NlZSB0aGUgW1RvZG9NVkMgYXBwIHRlbXBsYXRlXSho
dHRwczovL2dpdGh1Yi5jb20vdGFzdGVqcy90b2RvbXZjLWFwcC10ZW1wbGF0ZSkuCisKKworCisj
IyBMaWNlbnNlCisKKzxhIHJlbD0ibGljZW5zZSIgaHJlZj0iaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvbGljZW5zZXMvYnkvNC4wL2RlZWQuZW5fVVMiPjxpbWcgYWx0PSJDcmVhdGl2ZSBDb21t
b25zIExpY2Vuc2UiIHN0eWxlPSJib3JkZXItd2lkdGg6MCIgc3JjPSJodHRwOi8vaS5jcmVhdGl2
ZWNvbW1vbnMub3JnL2wvYnkvNC4wLzgweDE1LnBuZyIgLz48L2E+PGJyIC8+VGhpcyA8c3BhbiB4
bWxuczpkY3Q9Imh0dHA6Ly9wdXJsLm9yZy9kYy90ZXJtcy8iIGhyZWY9Imh0dHA6Ly9wdXJsLm9y
Zy9kYy9kY21pdHlwZS9JbnRlcmFjdGl2ZVJlc291cmNlIiByZWw9ImRjdDp0eXBlIj53b3JrPC9z
cGFuPiBieSA8YSB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIiBocmVm
PSJodHRwOi8vc2luZHJlc29yaHVzLmNvbSIgcHJvcGVydHk9ImNjOmF0dHJpYnV0aW9uTmFtZSIg
cmVsPSJjYzphdHRyaWJ1dGlvblVSTCI+U2luZHJlIFNvcmh1czwvYT4gaXMgbGljZW5zZWQgdW5k
ZXIgYSA8YSByZWw9ImxpY2Vuc2UiIGhyZWY9Imh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xp
Y2Vuc2VzL2J5LzQuMC9kZWVkLmVuX1VTIj5DcmVhdGl2ZSBDb21tb25zIEF0dHJpYnV0aW9uIDQu
MCBJbnRlcm5hdGlvbmFsIExpY2Vuc2U8L2E+LgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFj
a2JvbmUvbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jhc2UuY3NzIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
YmFja2JvbmUvbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jhc2UuY3NzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMjVkM2M4NGFjNmM2YWVmMjZiOTY4M2EyYmMxMGM2MWY5NjBjOGYKLS0tIC9kZXYvbnVsbAor
KysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvdG9kb212Yy1jb21tb24vYmFz
ZS5jc3MKQEAgLTAsMCArMSwxNDEgQEAKK2hyIHsKKyAgICBtYXJnaW46IDIwcHggMDsKKyAgICBi
b3JkZXI6IDA7CisgICAgYm9yZGVyLXRvcDogMXB4IGRhc2hlZCAjYzVjNWM1OworICAgIGJvcmRl
ci1ib3R0b206IDFweCBkYXNoZWQgI2Y3ZjdmNzsKK30KKworLmxlYXJuIGEgeworICAgIGZvbnQt
d2VpZ2h0OiBub3JtYWw7CisgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOworICAgIGNvbG9yOiAj
YjgzZjQ1OworfQorCisubGVhcm4gYTpob3ZlciB7CisgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRl
cmxpbmU7CisgICAgY29sb3I6ICM3ODdlN2U7Cit9CisKKy5sZWFybiBoMywKKy5sZWFybiBoNCwK
Ky5sZWFybiBoNSB7CisgICAgbWFyZ2luOiAxMHB4IDA7CisgICAgZm9udC13ZWlnaHQ6IDUwMDsK
KyAgICBsaW5lLWhlaWdodDogMS4yOworICAgIGNvbG9yOiAjMDAwOworfQorCisubGVhcm4gaDMg
eworICAgIGZvbnQtc2l6ZTogMjRweDsKK30KKworLmxlYXJuIGg0IHsKKyAgICBmb250LXNpemU6
IDE4cHg7Cit9CisKKy5sZWFybiBoNSB7CisgICAgbWFyZ2luLWJvdHRvbTogMDsKKyAgICBmb250
LXNpemU6IDE0cHg7Cit9CisKKy5sZWFybiB1bCB7CisgICAgcGFkZGluZzogMDsKKyAgICBtYXJn
aW46IDAgMCAzMHB4IDI1cHg7Cit9CisKKy5sZWFybiBsaSB7CisgICAgbGluZS1oZWlnaHQ6IDIw
cHg7Cit9CisKKy5sZWFybiBwIHsKKyAgICBmb250LXNpemU6IDE1cHg7CisgICAgZm9udC13ZWln
aHQ6IDMwMDsKKyAgICBsaW5lLWhlaWdodDogMS4zOworICAgIG1hcmdpbi10b3A6IDA7CisgICAg
bWFyZ2luLWJvdHRvbTogMDsKK30KKworI2lzc3VlLWNvdW50IHsKKyAgICBkaXNwbGF5OiBub25l
OworfQorCisucXVvdGUgeworICAgIGJvcmRlcjogbm9uZTsKKyAgICBtYXJnaW46IDIwcHggMCA2
MHB4IDA7Cit9CisKKy5xdW90ZSBwIHsKKyAgICBmb250LXN0eWxlOiBpdGFsaWM7Cit9CisKKy5x
dW90ZSBwOmJlZm9yZSB7CisgICAgY29udGVudDogJ+KAnCc7CisgICAgZm9udC1zaXplOiA1MHB4
OworICAgIG9wYWNpdHk6IC4xNTsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiAt
MjBweDsKKyAgICBsZWZ0OiAzcHg7Cit9CisKKy5xdW90ZSBwOmFmdGVyIHsKKyAgICBjb250ZW50
OiAn4oCdJzsKKyAgICBmb250LXNpemU6IDUwcHg7CisgICAgb3BhY2l0eTogLjE1OworICAgIHBv
c2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBib3R0b206IC00MnB4OworICAgIHJpZ2h0OiAzcHg7Cit9
CisKKy5xdW90ZSBmb290ZXIgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBib3R0b206
IC00MHB4OworICAgIHJpZ2h0OiAwOworfQorCisucXVvdGUgZm9vdGVyIGltZyB7CisgICAgYm9y
ZGVyLXJhZGl1czogM3B4OworfQorCisucXVvdGUgZm9vdGVyIGEgeworICAgIG1hcmdpbi1sZWZ0
OiA1cHg7CisgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKK30KKworLnNwZWVjaC1idWJibGUg
eworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICBwYWRkaW5nOiAxMHB4OworICAgIGJhY2tn
cm91bmQ6IHJnYmEoMCwgMCwgMCwgLjA0KTsKKyAgICBib3JkZXItcmFkaXVzOiA1cHg7Cit9CisK
Ky5zcGVlY2gtYnViYmxlOmFmdGVyIHsKKyAgICBjb250ZW50OiAnJzsKKyAgICBwb3NpdGlvbjog
YWJzb2x1dGU7CisgICAgdG9wOiAxMDAlOworICAgIHJpZ2h0OiAzMHB4OworICAgIGJvcmRlcjog
MTNweCBzb2xpZCB0cmFuc3BhcmVudDsKKyAgICBib3JkZXItdG9wLWNvbG9yOiByZ2JhKDAsIDAs
IDAsIC4wNCk7Cit9CisKKy5sZWFybi1iYXIgPiAubGVhcm4geworICAgIHBvc2l0aW9uOiBhYnNv
bHV0ZTsKKyAgICB3aWR0aDogMjcycHg7CisgICAgdG9wOiA4cHg7CisgICAgbGVmdDogLTMwMHB4
OworICAgIHBhZGRpbmc6IDEwcHg7CisgICAgYm9yZGVyLXJhZGl1czogNXB4OworICAgIGJhY2tn
cm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgLjYpOworICAgIHRyYW5zaXRpb24tcHJv
cGVydHk6IGxlZnQ7CisgICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogNTAwbXM7Cit9CisKK0BtZWRp
YSAobWluLXdpZHRoOiA4OTlweCkgeworICAgIC5sZWFybi1iYXIgeworICAgICAgICB3aWR0aDog
YXV0bzsKKyAgICAgICAgcGFkZGluZy1sZWZ0OiAzMDBweDsKKyAgICB9CisKKyAgICAubGVhcm4t
YmFyID4gLmxlYXJuIHsKKyAgICAgICAgbGVmdDogOHB4OworICAgIH0KK30KZGlmZiAtLWdpdCBh
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1vbi9iYXNlLmpz
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jhc2Uu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uODFlMDA2YmM1MDJkZGM0Yzc0ZjQ3YmQxM2E4MzkyMjc3ZjgzMGRiOAot
LS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy90b2Rv
bXZjLWNvbW1vbi9iYXNlLmpzCkBAIC0wLDAgKzEsMjQ5IEBACisvKiBnbG9iYWwgXyAqLworKGZ1
bmN0aW9uICgpIHsKKyAgICAndXNlIHN0cmljdCc7CisKKyAgICAvKiBqc2hpbnQgaWdub3JlOnN0
YXJ0ICovCisgICAgLy8gVW5kZXJzY29yZSdzIFRlbXBsYXRlIE1vZHVsZQorICAgIC8vIENvdXJ0
ZXN5IG9mIHVuZGVyc2NvcmVqcy5vcmcKKyAgICB2YXIgXyA9IChmdW5jdGlvbiAoXykgeworICAg
ICAgICBfLmRlZmF1bHRzID0gZnVuY3Rpb24gKG9iamVjdCkgeworICAgICAgICAgICAgaWYgKCFv
YmplY3QpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gb2JqZWN0OworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgZm9yICh2YXIgYXJnc0luZGV4ID0gMSwgYXJnc0xlbmd0aCA9IGFyZ3VtZW50
cy5sZW5ndGg7IGFyZ3NJbmRleCA8IGFyZ3NMZW5ndGg7IGFyZ3NJbmRleCsrKSB7CisgICAgICAg
ICAgICAgICAgdmFyIGl0ZXJhYmxlID0gYXJndW1lbnRzW2FyZ3NJbmRleF07CisgICAgICAgICAg
ICAgICAgaWYgKGl0ZXJhYmxlKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGtleSBp
biBpdGVyYWJsZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9iamVjdFtrZXldID09
IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3Rba2V5XSA9IGl0ZXJh
YmxlW2tleV07CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4g
b2JqZWN0OworICAgICAgICB9CisKKyAgICAgICAgLy8gQnkgZGVmYXVsdCwgVW5kZXJzY29yZSB1
c2VzIEVSQi1zdHlsZSB0ZW1wbGF0ZSBkZWxpbWl0ZXJzLCBjaGFuZ2UgdGhlCisgICAgICAgIC8v
IGZvbGxvd2luZyB0ZW1wbGF0ZSBzZXR0aW5ncyB0byB1c2UgYWx0ZXJuYXRpdmUgZGVsaW1pdGVy
cy4KKyAgICAgICAgXy50ZW1wbGF0ZVNldHRpbmdzID0geworICAgICAgICAgICAgZXZhbHVhdGUg
ICAgOiAvPCUoW1xzXFNdKz8pJT4vZywKKyAgICAgICAgICAgIGludGVycG9sYXRlIDogLzwlPShb
XHNcU10rPyklPi9nLAorICAgICAgICAgICAgZXNjYXBlICAgICAgOiAvPCUtKFtcc1xTXSs/KSU+
L2cKKyAgICAgICAgfTsKKworICAgICAgICAvLyBXaGVuIGN1c3RvbWl6aW5nIGB0ZW1wbGF0ZVNl
dHRpbmdzYCwgaWYgeW91IGRvbid0IHdhbnQgdG8gZGVmaW5lIGFuCisgICAgICAgIC8vIGludGVy
cG9sYXRpb24sIGV2YWx1YXRpb24gb3IgZXNjYXBpbmcgcmVnZXgsIHdlIG5lZWQgb25lIHRoYXQg
aXMKKyAgICAgICAgLy8gZ3VhcmFudGVlZCBub3QgdG8gbWF0Y2guCisgICAgICAgIHZhciBub01h
dGNoID0gLyguKV4vOworCisgICAgICAgIC8vIENlcnRhaW4gY2hhcmFjdGVycyBuZWVkIHRvIGJl
IGVzY2FwZWQgc28gdGhhdCB0aGV5IGNhbiBiZSBwdXQgaW50byBhCisgICAgICAgIC8vIHN0cmlu
ZyBsaXRlcmFsLgorICAgICAgICB2YXIgZXNjYXBlcyA9IHsKKyAgICAgICAgICAgICInIjogICAg
ICAiJyIsCisgICAgICAgICAgICAnXFwnOiAgICAgJ1xcJywKKyAgICAgICAgICAgICdccic6ICAg
ICAncicsCisgICAgICAgICAgICAnXG4nOiAgICAgJ24nLAorICAgICAgICAgICAgJ1x0JzogICAg
ICd0JywKKyAgICAgICAgICAgICdcdTIwMjgnOiAndTIwMjgnLAorICAgICAgICAgICAgJ1x1MjAy
OSc6ICd1MjAyOScKKyAgICAgICAgfTsKKworICAgICAgICB2YXIgZXNjYXBlciA9IC9cXHwnfFxy
fFxufFx0fFx1MjAyOHxcdTIwMjkvZzsKKworICAgICAgICAvLyBKYXZhU2NyaXB0IG1pY3JvLXRl
bXBsYXRpbmcsIHNpbWlsYXIgdG8gSm9obiBSZXNpZydzIGltcGxlbWVudGF0aW9uLgorICAgICAg
ICAvLyBVbmRlcnNjb3JlIHRlbXBsYXRpbmcgaGFuZGxlcyBhcmJpdHJhcnkgZGVsaW1pdGVycywg
cHJlc2VydmVzIHdoaXRlc3BhY2UsCisgICAgICAgIC8vIGFuZCBjb3JyZWN0bHkgZXNjYXBlcyBx
dW90ZXMgd2l0aGluIGludGVycG9sYXRlZCBjb2RlLgorICAgICAgICBfLnRlbXBsYXRlID0gZnVu
Y3Rpb24odGV4dCwgZGF0YSwgc2V0dGluZ3MpIHsKKyAgICAgICAgICAgIHZhciByZW5kZXI7Cisg
ICAgICAgICAgICBzZXR0aW5ncyA9IF8uZGVmYXVsdHMoe30sIHNldHRpbmdzLCBfLnRlbXBsYXRl
U2V0dGluZ3MpOworCisgICAgICAgICAgICAvLyBDb21iaW5lIGRlbGltaXRlcnMgaW50byBvbmUg
cmVndWxhciBleHByZXNzaW9uIHZpYSBhbHRlcm5hdGlvbi4KKyAgICAgICAgICAgIHZhciBtYXRj
aGVyID0gbmV3IFJlZ0V4cChbCisgICAgICAgICAgICAgICAgKHNldHRpbmdzLmVzY2FwZSB8fCBu
b01hdGNoKS5zb3VyY2UsCisgICAgICAgICAgICAgICAgKHNldHRpbmdzLmludGVycG9sYXRlIHx8
IG5vTWF0Y2gpLnNvdXJjZSwKKyAgICAgICAgICAgICAgICAoc2V0dGluZ3MuZXZhbHVhdGUgfHwg
bm9NYXRjaCkuc291cmNlCisgICAgICAgICAgICBdLmpvaW4oJ3wnKSArICd8JCcsICdnJyk7CisK
KyAgICAgICAgICAgIC8vIENvbXBpbGUgdGhlIHRlbXBsYXRlIHNvdXJjZSwgZXNjYXBpbmcgc3Ry
aW5nIGxpdGVyYWxzIGFwcHJvcHJpYXRlbHkuCisgICAgICAgICAgICB2YXIgaW5kZXggPSAwOwor
ICAgICAgICAgICAgdmFyIHNvdXJjZSA9ICJfX3ArPSciOworICAgICAgICAgICAgdGV4dC5yZXBs
YWNlKG1hdGNoZXIsIGZ1bmN0aW9uKG1hdGNoLCBlc2NhcGUsIGludGVycG9sYXRlLCBldmFsdWF0
ZSwgb2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgc291cmNlICs9IHRleHQuc2xpY2UoaW5kZXgs
IG9mZnNldCkKKyAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoZXNjYXBlciwgZnVuY3Rpb24o
bWF0Y2gpIHsgcmV0dXJuICdcXCcgKyBlc2NhcGVzW21hdGNoXTsgfSk7CisKKyAgICAgICAgICAg
ICAgICBpZiAoZXNjYXBlKSB7CisgICAgICAgICAgICAgICAgICAgIHNvdXJjZSArPSAiJytcbigo
X190PSgiICsgZXNjYXBlICsgIikpPT1udWxsPycnOl8uZXNjYXBlKF9fdCkpK1xuJyI7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChpbnRlcnBvbGF0ZSkgeworICAgICAg
ICAgICAgICAgICAgICBzb3VyY2UgKz0gIicrXG4oKF9fdD0oIiArIGludGVycG9sYXRlICsgIikp
PT1udWxsPycnOl9fdCkrXG4nIjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
aWYgKGV2YWx1YXRlKSB7CisgICAgICAgICAgICAgICAgICAgIHNvdXJjZSArPSAiJztcbiIgKyBl
dmFsdWF0ZSArICJcbl9fcCs9JyI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGluZGV4ID0gb2Zmc2V0ICsgbWF0Y2gubGVuZ3RoOworICAgICAgICAgICAgICAgIHJldHVybiBt
YXRjaDsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgc291cmNlICs9ICInO1xuIjsKKwor
ICAgICAgICAgICAgLy8gSWYgYSB2YXJpYWJsZSBpcyBub3Qgc3BlY2lmaWVkLCBwbGFjZSBkYXRh
IHZhbHVlcyBpbiBsb2NhbCBzY29wZS4KKyAgICAgICAgICAgIGlmICghc2V0dGluZ3MudmFyaWFi
bGUpIHNvdXJjZSA9ICd3aXRoKG9ianx8e30pe1xuJyArIHNvdXJjZSArICd9XG4nOworCisgICAg
ICAgICAgICBzb3VyY2UgPSAidmFyIF9fdCxfX3A9JycsX19qPUFycmF5LnByb3RvdHlwZS5qb2lu
LCIgKworICAgICAgICAgICAgICAgICJwcmludD1mdW5jdGlvbigpe19fcCs9X19qLmNhbGwoYXJn
dW1lbnRzLCcnKTt9O1xuIiArCisgICAgICAgICAgICAgICAgc291cmNlICsgInJldHVybiBfX3A7
XG4iOworCisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIHJlbmRlciA9IG5ldyBG
dW5jdGlvbihzZXR0aW5ncy52YXJpYWJsZSB8fCAnb2JqJywgJ18nLCBzb3VyY2UpOworICAgICAg
ICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgICAgIGUuc291cmNlID0gc291cmNlOwor
ICAgICAgICAgICAgICAgIHRocm93IGU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlm
IChkYXRhKSByZXR1cm4gcmVuZGVyKGRhdGEsIF8pOworICAgICAgICAgICAgdmFyIHRlbXBsYXRl
ID0gZnVuY3Rpb24oZGF0YSkgeworICAgICAgICAgICAgICAgIHJldHVybiByZW5kZXIuY2FsbCh0
aGlzLCBkYXRhLCBfKTsKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIC8vIFByb3ZpZGUg
dGhlIGNvbXBpbGVkIGZ1bmN0aW9uIHNvdXJjZSBhcyBhIGNvbnZlbmllbmNlIGZvciBwcmVjb21w
aWxhdGlvbi4KKyAgICAgICAgICAgIHRlbXBsYXRlLnNvdXJjZSA9ICdmdW5jdGlvbignICsgKHNl
dHRpbmdzLnZhcmlhYmxlIHx8ICdvYmonKSArICcpe1xuJyArIHNvdXJjZSArICd9JzsKKworICAg
ICAgICAgICAgcmV0dXJuIHRlbXBsYXRlOworICAgICAgICB9OworCisgICAgICAgIHJldHVybiBf
OworICAgIH0pKHt9KTsKKworICAgIGlmIChsb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ3RvZG9tdmMu
Y29tJykgeworICAgICAgICAoZnVuY3Rpb24oaSxzLG8sZyxyLGEsbSl7aVsnR29vZ2xlQW5hbHl0
aWNzT2JqZWN0J109cjtpW3JdPWlbcl18fGZ1bmN0aW9uKCl7CisgICAgICAgIChpW3JdLnE9aVty
XS5xfHxbXSkucHVzaChhcmd1bWVudHMpfSxpW3JdLmw9MSpuZXcgRGF0ZSgpO2E9cy5jcmVhdGVF
bGVtZW50KG8pLAorICAgICAgICBtPXMuZ2V0RWxlbWVudHNCeVRhZ05hbWUobylbMF07YS5hc3lu
Yz0xO2Euc3JjPWc7bS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShhLG0pCisgICAgICAgIH0pKHdp
bmRvdyxkb2N1bWVudCwnc2NyaXB0JywnaHR0cHM6Ly93d3cuZ29vZ2xlLWFuYWx5dGljcy5jb20v
YW5hbHl0aWNzLmpzJywnZ2EnKTsKKyAgICAgICAgZ2EoJ2NyZWF0ZScsICdVQS0zMTA4MTA2Mi0x
JywgJ2F1dG8nKTsKKyAgICAgICAgZ2EoJ3NlbmQnLCAncGFnZXZpZXcnKTsKKyAgICB9CisgICAg
LyoganNoaW50IGlnbm9yZTplbmQgKi8KKworICAgIGZ1bmN0aW9uIHJlZGlyZWN0KCkgeworICAg
ICAgICBpZiAobG9jYXRpb24uaG9zdG5hbWUgPT09ICd0YXN0ZWpzLmdpdGh1Yi5pbycpIHsKKyAg
ICAgICAgICAgIGxvY2F0aW9uLmhyZWYgPSBsb2NhdGlvbi5ocmVmLnJlcGxhY2UoJ3Rhc3RlanMu
Z2l0aHViLmlvL3RvZG9tdmMnLCAndG9kb212Yy5jb20nKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGZ1bmN0aW9uIGZpbmRSb290KCkgeworICAgICAgICB2YXIgYmFzZSA9IGxvY2F0aW9uLmhy
ZWYuaW5kZXhPZignZXhhbXBsZXMvJyk7CisgICAgICAgIHJldHVybiBsb2NhdGlvbi5ocmVmLnN1
YnN0cigwLCBiYXNlKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBnZXRGaWxlKGZpbGUsIGNhbGxi
YWNrKSB7CisgICAgICAgIGlmICghbG9jYXRpb24uaG9zdCkgeworICAgICAgICAgICAgcmV0dXJu
IGNvbnNvbGUuaW5mbygnTWlzcyB0aGUgaW5mbyBiYXI/IFJ1biBUb2RvTVZDIGZyb20gYSBzZXJ2
ZXIgdG8gYXZvaWQgYSBjcm9zcy1vcmlnaW4gZXJyb3IuJyk7CisgICAgICAgIH0KKworICAgICAg
ICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CisKKyAgICAgICAgeGhyLm9wZW4oJ0dF
VCcsIGZpbmRSb290KCkgKyBmaWxlLCB0cnVlKTsKKyAgICAgICAgeGhyLnNlbmQoKTsKKworICAg
ICAgICB4aHIub25sb2FkID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgaWYgKHhoci5zdGF0
dXMgPT09IDIwMCAmJiBjYWxsYmFjaykgeworICAgICAgICAgICAgICAgIGNhbGxiYWNrKHhoci5y
ZXNwb25zZVRleHQpOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0KKworICAgIGZ1
bmN0aW9uIExlYXJuKGxlYXJuSlNPTiwgY29uZmlnKSB7CisgICAgICAgIGlmICghKHRoaXMgaW5z
dGFuY2VvZiBMZWFybikpIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgTGVhcm4obGVhcm5KU09O
LCBjb25maWcpOworICAgICAgICB9CisKKyAgICAgICAgdmFyIHRlbXBsYXRlLCBmcmFtZXdvcms7
CisKKyAgICAgICAgaWYgKHR5cGVvZiBsZWFybkpTT04gIT09ICdvYmplY3QnKSB7CisgICAgICAg
ICAgICB0cnkgeworICAgICAgICAgICAgICAgIGxlYXJuSlNPTiA9IEpTT04ucGFyc2UobGVhcm5K
U09OKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoY29uZmlnKSB7CisgICAg
ICAgICAgICB0ZW1wbGF0ZSA9IGNvbmZpZy50ZW1wbGF0ZTsKKyAgICAgICAgICAgIGZyYW1ld29y
ayA9IGNvbmZpZy5mcmFtZXdvcms7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXRlbXBsYXRl
ICYmIGxlYXJuSlNPTi50ZW1wbGF0ZXMpIHsKKyAgICAgICAgICAgIHRlbXBsYXRlID0gbGVhcm5K
U09OLnRlbXBsYXRlcy50b2RvbXZjOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFmcmFtZXdv
cmsgJiYgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW2RhdGEtZnJhbWV3b3JrXScpKSB7CisgICAg
ICAgICAgICBmcmFtZXdvcmsgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbZGF0YS1mcmFtZXdv
cmtdJykuZGF0YXNldC5mcmFtZXdvcms7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLnRlbXBs
YXRlID0gdGVtcGxhdGU7CisKKyAgICAgICAgaWYgKGxlYXJuSlNPTi5iYWNrZW5kKSB7CisgICAg
ICAgICAgICB0aGlzLmZyYW1ld29ya0pTT04gPSBsZWFybkpTT04uYmFja2VuZDsKKyAgICAgICAg
ICAgIHRoaXMuZnJhbWV3b3JrSlNPTi5pc3N1ZUxhYmVsID0gZnJhbWV3b3JrOworICAgICAgICAg
ICAgdGhpcy5hcHBlbmQoeworICAgICAgICAgICAgICAgIGJhY2tlbmQ6IHRydWUKKyAgICAgICAg
ICAgIH0pOworICAgICAgICB9IGVsc2UgaWYgKGxlYXJuSlNPTltmcmFtZXdvcmtdKSB7CisgICAg
ICAgICAgICB0aGlzLmZyYW1ld29ya0pTT04gPSBsZWFybkpTT05bZnJhbWV3b3JrXTsKKyAgICAg
ICAgICAgIHRoaXMuZnJhbWV3b3JrSlNPTi5pc3N1ZUxhYmVsID0gZnJhbWV3b3JrOworICAgICAg
ICAgICAgdGhpcy5hcHBlbmQoKTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuZmV0Y2hJc3N1
ZUNvdW50KCk7CisgICAgfQorCisgICAgTGVhcm4ucHJvdG90eXBlLmFwcGVuZCA9IGZ1bmN0aW9u
IChvcHRzKSB7CisgICAgICAgIHZhciBhc2lkZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Fz
aWRlJyk7CisgICAgICAgIGFzaWRlLmlubmVySFRNTCA9IF8udGVtcGxhdGUodGhpcy50ZW1wbGF0
ZSwgdGhpcy5mcmFtZXdvcmtKU09OKTsKKyAgICAgICAgYXNpZGUuY2xhc3NOYW1lID0gJ2xlYXJu
JzsKKworICAgICAgICBpZiAob3B0cyAmJiBvcHRzLmJhY2tlbmQpIHsKKyAgICAgICAgICAgIC8v
IFJlbW92ZSBkZW1vIGxpbmsKKyAgICAgICAgICAgIHZhciBzb3VyY2VMaW5rcyA9IGFzaWRlLnF1
ZXJ5U2VsZWN0b3IoJy5zb3VyY2UtbGlua3MnKTsKKyAgICAgICAgICAgIHZhciBoZWFkaW5nID0g
c291cmNlTGlua3MuZmlyc3RFbGVtZW50Q2hpbGQ7CisgICAgICAgICAgICB2YXIgc291cmNlTGlu
ayA9IHNvdXJjZUxpbmtzLmxhc3RFbGVtZW50Q2hpbGQ7CisgICAgICAgICAgICAvLyBDb3JyZWN0
IGxpbmsgcGF0aAorICAgICAgICAgICAgdmFyIGhyZWYgPSBzb3VyY2VMaW5rLmdldEF0dHJpYnV0
ZSgnaHJlZicpOworICAgICAgICAgICAgc291cmNlTGluay5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBo
cmVmLnN1YnN0cihocmVmLmxhc3RJbmRleE9mKCdodHRwJykpKTsKKyAgICAgICAgICAgIHNvdXJj
ZUxpbmtzLmlubmVySFRNTCA9IGhlYWRpbmcub3V0ZXJIVE1MICsgc291cmNlTGluay5vdXRlckhU
TUw7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBMb2NhbGl6ZSBkZW1vIGxpbmtz
CisgICAgICAgICAgICB2YXIgZGVtb0xpbmtzID0gYXNpZGUucXVlcnlTZWxlY3RvckFsbCgnLmRl
bW8tbGluaycpOworICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChkZW1v
TGlua3MsIGZ1bmN0aW9uIChkZW1vTGluaykgeworICAgICAgICAgICAgICAgIGlmIChkZW1vTGlu
ay5nZXRBdHRyaWJ1dGUoJ2hyZWYnKS5zdWJzdHIoMCwgNCkgIT09ICdodHRwJykgeworICAgICAg
ICAgICAgICAgICAgICBkZW1vTGluay5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBmaW5kUm9vdCgpICsg
ZGVtb0xpbmsuZ2V0QXR0cmlidXRlKCdocmVmJykpOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0pOworICAgICAgICB9CisKKyAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc05hbWUg
PSAoZG9jdW1lbnQuYm9keS5jbGFzc05hbWUgKyAnIGxlYXJuLWJhcicpLnRyaW0oKTsKKyAgICAg
ICAgZG9jdW1lbnQuYm9keS5pbnNlcnRBZGphY2VudEhUTUwoJ2FmdGVyQmVnaW4nLCBhc2lkZS5v
dXRlckhUTUwpOworICAgIH07CisKKyAgICBMZWFybi5wcm90b3R5cGUuZmV0Y2hJc3N1ZUNvdW50
ID0gZnVuY3Rpb24gKCkgeworICAgICAgICB2YXIgaXNzdWVMaW5rID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2lzc3VlLWNvdW50LWxpbmsnKTsKKyAgICAgICAgaWYgKGlzc3VlTGluaykgewor
ICAgICAgICAgICAgdmFyIHVybCA9IGlzc3VlTGluay5ocmVmLnJlcGxhY2UoJ2h0dHBzOi8vZ2l0
aHViLmNvbScsICdodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zJyk7CisgICAgICAgICAgICB2
YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CisgICAgICAgICAgICB4aHIub3BlbignR0VU
JywgdXJsLCB0cnVlKTsKKyAgICAgICAgICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbiAoZSkgewor
ICAgICAgICAgICAgICAgIHZhciBwYXJzZWRSZXNwb25zZSA9IEpTT04ucGFyc2UoZS50YXJnZXQu
cmVzcG9uc2VUZXh0KTsKKyAgICAgICAgICAgICAgICBpZiAocGFyc2VkUmVzcG9uc2UgaW5zdGFu
Y2VvZiBBcnJheSkgeworICAgICAgICAgICAgICAgICAgICB2YXIgY291bnQgPSBwYXJzZWRSZXNw
b25zZS5sZW5ndGg7CisgICAgICAgICAgICAgICAgICAgIGlmIChjb3VudCAhPT0gMCkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgaXNzdWVMaW5rLmlubmVySFRNTCA9ICdUaGlzIGFwcCBoYXMg
JyArIGNvdW50ICsgJyBvcGVuIGlzc3Vlcyc7CisgICAgICAgICAgICAgICAgICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnaXNzdWUtY291bnQnKS5zdHlsZS5kaXNwbGF5ID0gJ2lubGlu
ZSc7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9OworICAgICAgICAgICAgeGhyLnNlbmQoKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICBy
ZWRpcmVjdCgpOworICAgIGdldEZpbGUoJ2xlYXJuLmpzb24nLCBMZWFybik7Cit9KSgpOwpkaWZm
IC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9u
L3BhY2thZ2UuanNvbiBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy90b2RvbXZj
LWNvbW1vbi9wYWNrYWdlLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDNjZGUzNmM5MWYxNmNkMDU2NTZhMzk0
YzJjN2E2ZWE2NTk4ZTY2YgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25l
L25vZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1vbi9wYWNrYWdlLmpzb24KQEAgLTAsMCArMSwxMDQg
QEAKK3sKKyAgIl9hcmdzIjogWworICAgIFsKKyAgICAgIHsKKyAgICAgICAgInJhdyI6ICJ0b2Rv
bXZjLWNvbW1vbkBeMS4wLjEiLAorICAgICAgICAic2NvcGUiOiBudWxsLAorICAgICAgICAiZXNj
YXBlZE5hbWUiOiAidG9kb212Yy1jb21tb24iLAorICAgICAgICAibmFtZSI6ICJ0b2RvbXZjLWNv
bW1vbiIsCisgICAgICAgICJyYXdTcGVjIjogIl4xLjAuMSIsCisgICAgICAgICJzcGVjIjogIj49
MS4wLjEgPDIuMC4wIiwKKyAgICAgICAgInR5cGUiOiAicmFuZ2UiCisgICAgICB9LAorICAgICAg
Ii9Vc2Vycy9hZGR5by9wcm9qZWN0cy9zcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUiCisgICAgXQorICBdLAorICAiX2Zyb20iOiAidG9k
b212Yy1jb21tb25APj0xLjAuMSA8Mi4wLjAiLAorICAiX2lkIjogInRvZG9tdmMtY29tbW9uQDEu
MC4zIiwKKyAgIl9pbkNhY2hlIjogdHJ1ZSwKKyAgIl9sb2NhdGlvbiI6ICIvdG9kb212Yy1jb21t
b24iLAorICAiX25vZGVWZXJzaW9uIjogIjcuMS4wIiwKKyAgIl9ucG1PcGVyYXRpb25hbEludGVy
bmFsIjogeworICAgICJob3N0IjogInBhY2thZ2VzLTE4LWVhc3QuaW50ZXJuYWwubnBtanMuY29t
IiwKKyAgICAidG1wIjogInRtcC90b2RvbXZjLWNvbW1vbi0xLjAuMy50Z3pfMTQ3OTI3NjM2MTIy
N18wLjUxMTI0ODgwMTM2OTIyIgorICB9LAorICAiX25wbVVzZXIiOiB7CisgICAgIm5hbWUiOiAi
c2luZHJlc29yaHVzIiwKKyAgICAiZW1haWwiOiAic2luZHJlc29yaHVzQGdtYWlsLmNvbSIKKyAg
fSwKKyAgIl9ucG1WZXJzaW9uIjogIjMuMTAuOSIsCisgICJfcGhhbnRvbUNoaWxkcmVuIjoge30s
CisgICJfcmVxdWVzdGVkIjogeworICAgICJyYXciOiAidG9kb212Yy1jb21tb25AXjEuMC4xIiwK
KyAgICAic2NvcGUiOiBudWxsLAorICAgICJlc2NhcGVkTmFtZSI6ICJ0b2RvbXZjLWNvbW1vbiIs
CisgICAgIm5hbWUiOiAidG9kb212Yy1jb21tb24iLAorICAgICJyYXdTcGVjIjogIl4xLjAuMSIs
CisgICAgInNwZWMiOiAiPj0xLjAuMSA8Mi4wLjAiLAorICAgICJ0eXBlIjogInJhbmdlIgorICB9
LAorICAiX3JlcXVpcmVkQnkiOiBbCisgICAgIi8iCisgIF0sCisgICJfcmVzb2x2ZWQiOiAiaHR0
cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvdG9kb212Yy1jb21tb24vLS90b2RvbXZjLWNvbW1vbi0x
LjAuMy50Z3oiLAorICAiX3NoYXN1bSI6ICJjYmExODY4MTA5Y2FhNDAxYjkwOGViZjc3Nzk0Y2Mx
MDE0Yjc0ODczIiwKKyAgIl9zaHJpbmt3cmFwIjogbnVsbCwKKyAgIl9zcGVjIjogInRvZG9tdmMt
Y29tbW9uQF4xLjAuMSIsCisgICJfd2hlcmUiOiAiL1VzZXJzL2FkZHlvL3Byb2plY3RzL3NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZSIs
CisgICJhdXRob3IiOiB7CisgICAgIm5hbWUiOiAiVGFzdGVKUyIKKyAgfSwKKyAgImJ1Z3MiOiB7
CisgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vdGFzdGVqcy90b2RvbXZjLWNvbW1vbi9p
c3N1ZXMiCisgIH0sCisgICJkZXBlbmRlbmNpZXMiOiB7fSwKKyAgImRlc2NyaXB0aW9uIjogIkNv
bW1vbiBUb2RvTVZDIHV0aWxpdGllcyB1c2VkIGJ5IG91ciBhcHBzIiwKKyAgImRldkRlcGVuZGVu
Y2llcyI6IHt9LAorICAiZGlyZWN0b3JpZXMiOiB7fSwKKyAgImRpc3QiOiB7CisgICAgInNoYXN1
bSI6ICJjYmExODY4MTA5Y2FhNDAxYjkwOGViZjc3Nzk0Y2MxMDE0Yjc0ODczIiwKKyAgICAidGFy
YmFsbCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy90b2RvbXZjLWNvbW1vbi8tL3RvZG9t
dmMtY29tbW9uLTEuMC4zLnRneiIKKyAgfSwKKyAgImZpbGVzIjogWworICAgICJiYXNlLmpzIiwK
KyAgICAiYmFzZS5jc3MiCisgIF0sCisgICJnaXRIZWFkIjogImU3NDI1YmFmYjk1NjFkNzY2Yjc2
OTg0NDgxMGUwNDk2NzM0ZmZlOGMiLAorICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29t
L3Rhc3RlanMvdG9kb212Yy1jb21tb24jcmVhZG1lIiwKKyAgImtleXdvcmRzIjogWworICAgICJ0
b2RvbXZjIiwKKyAgICAidGFzdGVqcyIsCisgICAgInV0aWwiLAorICAgICJ1dGlsaXRpZXMiCisg
IF0sCisgICJsaWNlbnNlIjogIk1JVCIsCisgICJtYWluIjogImJhc2UuanMiLAorICAibWFpbnRh
aW5lcnMiOiBbCisgICAgeworICAgICAgIm5hbWUiOiAic2luZHJlc29yaHVzIiwKKyAgICAgICJl
bWFpbCI6ICJzaW5kcmVzb3JodXNAZ21haWwuY29tIgorICAgIH0sCisgICAgeworICAgICAgIm5h
bWUiOiAiYWRkeW9zbWFuaSIsCisgICAgICAiZW1haWwiOiAiYWRkeW9zbWFuaUBnbWFpbC5jb20i
CisgICAgfSwKKyAgICB7CisgICAgICAibmFtZSI6ICJwYXNzeSIsCisgICAgICAiZW1haWwiOiAi
cGhhcnRpZ0ByZHJlaS5uZXQiCisgICAgfSwKKyAgICB7CisgICAgICAibmFtZSI6ICJzdGVwaGVu
cGx1c3BsdXMiLAorICAgICAgImVtYWlsIjogInNhd2NodWtAZ21haWwuY29tIgorICAgIH0KKyAg
XSwKKyAgIm5hbWUiOiAidG9kb212Yy1jb21tb24iLAorICAib3B0aW9uYWxEZXBlbmRlbmNpZXMi
OiB7fSwKKyAgInJlYWRtZSI6ICJFUlJPUjogTm8gUkVBRE1FIGRhdGEgZm91bmQhIiwKKyAgInJl
cG9zaXRvcnkiOiB7CisgICAgInR5cGUiOiAiZ2l0IiwKKyAgICAidXJsIjogImdpdCtodHRwczov
L2dpdGh1Yi5jb20vdGFzdGVqcy90b2RvbXZjLWNvbW1vbi5naXQiCisgIH0sCisgICJzY3JpcHRz
Ijoge30sCisgICJzdHlsZSI6ICJiYXNlLmNzcyIsCisgICJ2ZXJzaW9uIjogIjEuMC4zIgorfQpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29t
bW9uL3JlYWRtZS5tZCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy90b2RvbXZj
LWNvbW1vbi9yZWFkbWUubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2E1ZGU1MTE4ZjNmYzc3NThlOGRkYzBhNjg2
ODc0OWNlZTljYWY5NQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25v
ZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1vbi9yZWFkbWUubWQKQEAgLTAsMCArMSwxNSBAQAorIyB0
b2RvbXZjLWNvbW1vbgorCis+IENvbW1vbiBUb2RvTVZDIHV0aWxpdGllcyB1c2VkIGJ5IG91ciBh
cHBzCisKKworIyMgSW5zdGFsbAorCitgYGAKKyQgbnBtIGluc3RhbGwgLS1zYXZlIHRvZG9tdmMt
Y29tbW9uCitgYGAKKworCisjIyBMaWNlbnNlCisKK01JVCDCqSBbVGFzdGVKU10oaHR0cDovL3Rh
c3RlanMuY29tKQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVz
L3VuZGVyc2NvcmUvTElDRU5TRSBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy91
bmRlcnNjb3JlL0xJQ0VOU0UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWQwZTcxYmM0YmFhYjQ5NWI1NzQyNTBjYTky
OTA4N2I4NjkyYmIzNgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25v
ZGVfbW9kdWxlcy91bmRlcnNjb3JlL0xJQ0VOU0UKQEAgLTAsMCArMSwyMyBAQAorQ29weXJpZ2h0
IChjKSAyMDA5LTIwMTUgSmVyZW15IEFzaGtlbmFzLCBEb2N1bWVudENsb3VkIGFuZCBJbnZlc3Rp
Z2F0aXZlCitSZXBvcnRlcnMgJiBFZGl0b3JzCisKK1Blcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50
ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uCitvYnRhaW5pbmcgYSBjb3B5IG9mIHRo
aXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbgorZmlsZXMgKHRoZSAiU29m
dHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dAorcmVzdHJpY3Rpb24sIGlu
Y2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsCitjb3B5LCBtb2Rp
ZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAor
Y29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhl
CitTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2lu
ZworY29uZGl0aW9uczoKKworVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVy
bWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUKK2luY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3Rh
bnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorCitUSEUgU09GVFdBUkUgSVMgUFJPVklE
RUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKK0VYUFJFU1MgT1IgSU1Q
TElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUworT0YgTUVS
Q0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQKK05PTklO
RlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUCitI
T0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElU
WSwKK1dIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwg
QVJJU0lORworRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUg
T1IgVEhFIFVTRSBPUgorT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgpkaWZmIC0tZ2l0
IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL3VuZGVyc2NvcmUvUkVBRE1FLm1k
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL3VuZGVyc2NvcmUvUkVBRE1FLm1k
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmMyYmEyNTkwYzYyM2U4YTUxYTcxOWI1NmZmMDJhMTlhNmQ5N2RmZWUKLS0t
IC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvdW5kZXJz
Y29yZS9SRUFETUUubWQKQEAgLTAsMCArMSwyMiBAQAorICAgICAgICAgICAgICAgICAgICAgICBf
XworICAgICAgICAgICAgICAgICAgICAgIC9cIFwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfXworICAgICBfXyAgX18gICAgX19fICAgIFxf
XCBcICAgICBfXyAgIF8gX18gICBfX19fICAgIF9fXyAgICBfX18gICBfIF9fICAgIF9fICAgICAg
IC9cX1wgICAgX19fXworICAgIC9cIFwvXCBcIC8nIF8gYFwgIC8nXyAgXCAgLydfX2BcL1wgIF9f
XC8gLF9fXCAgLyBfX19cIC8gX19gXC9cICBfX1wvJ19fYFwgICAgIFwvXCBcICAvJyxfX1wKKyAg
ICBcIFwgXF9cIFwvXCBcL1wgXC9cIFwgXCBcL1wgIF9fL1wgXCBcLy9cX18sIGBcL1wgXF9fLy9c
IFwgXCBcIFwgXC8vXCAgX18vICBfXyAgXCBcIFwvXF9fLCBgXAorICAgICBcIFxfX19fL1wgXF9c
IFxfXCBcX19fLF9cIFxfX19fXFwgXF9cXC9cX19fXy9cIFxfX19fXCBcX19fXy9cIFxfXFwgXF9f
X19cL1xfXCBfXCBcIFwvXF9fX18vCisgICAgICBcL19fXy8gIFwvXy9cL18vXC9fXyxfIC9cL19f
X18vIFwvXy8gXC9fX18vICBcL19fX18vXC9fX18vICBcL18vIFwvX19fXy9cL18vL1wgXF9cIFwv
X19fLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwgXF9fX18vCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwvX19fLworCitVbmRlcnNjb3JlLmpzIGlzIGEgdXRpbGl0eS1iZWx0IGxpYnJh
cnkgZm9yIEphdmFTY3JpcHQgdGhhdCBwcm92aWRlcworc3VwcG9ydCBmb3IgdGhlIHVzdWFsIGZ1
bmN0aW9uYWwgc3VzcGVjdHMgKGVhY2gsIG1hcCwgcmVkdWNlLCBmaWx0ZXIuLi4pCit3aXRob3V0
IGV4dGVuZGluZyBhbnkgY29yZSBKYXZhU2NyaXB0IG9iamVjdHMuCisKK0ZvciBEb2NzLCBMaWNl
bnNlLCBUZXN0cywgYW5kIHByZS1wYWNrZWQgZG93bmxvYWRzLCBzZWU6CitodHRwOi8vdW5kZXJz
Y29yZWpzLm9yZworCitVbmRlcnNjb3JlIGlzIGFuIG9wZW4tc291cmNlZCBjb21wb25lbnQgb2Yg
RG9jdW1lbnRDbG91ZDoKK2h0dHBzOi8vZ2l0aHViLmNvbS9kb2N1bWVudGNsb3VkCisKK01hbnkg
dGhhbmtzIHRvIG91ciBjb250cmlidXRvcnM6CitodHRwczovL2dpdGh1Yi5jb20vamFzaGtlbmFz
L3VuZGVyc2NvcmUvY29udHJpYnV0b3JzCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9u
ZS9ub2RlX21vZHVsZXMvdW5kZXJzY29yZS9wYWNrYWdlLmpzb24gYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNr
Ym9uZS9ub2RlX21vZHVsZXMvdW5kZXJzY29yZS9wYWNrYWdlLmpzb24KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzQ2
NmJjOWRiZDQ3ZGRiYjE1NzFmMzc0NDlkYTYwNGFkNDhmMTI4OQotLS0gL2Rldi9udWxsCisrKyBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy91bmRlcnNjb3JlL3BhY2thZ2UuanNv
bgpAQCAtMCwwICsxLDEwNSBAQAoreworICAiX2FyZ3MiOiBbCisgICAgWworICAgICAgeworICAg
ICAgICAicmF3IjogInVuZGVyc2NvcmVAXjEuNy4wIiwKKyAgICAgICAgInNjb3BlIjogbnVsbCwK
KyAgICAgICAgImVzY2FwZWROYW1lIjogInVuZGVyc2NvcmUiLAorICAgICAgICAibmFtZSI6ICJ1
bmRlcnNjb3JlIiwKKyAgICAgICAgInJhd1NwZWMiOiAiXjEuNy4wIiwKKyAgICAgICAgInNwZWMi
OiAiPj0xLjcuMCA8Mi4wLjAiLAorICAgICAgICAidHlwZSI6ICJyYW5nZSIKKyAgICAgIH0sCisg
ICAgICAiL1VzZXJzL2FkZHlvL3Byb2plY3RzL3NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZSIKKyAgICBdCisgIF0sCisgICJfZnJvbSI6
ICJ1bmRlcnNjb3JlQD49MS43LjAgPDIuMC4wIiwKKyAgIl9pZCI6ICJ1bmRlcnNjb3JlQDEuOC4z
IiwKKyAgIl9pbkNhY2hlIjogdHJ1ZSwKKyAgIl9sb2NhdGlvbiI6ICIvdW5kZXJzY29yZSIsCisg
ICJfbnBtVXNlciI6IHsKKyAgICAibmFtZSI6ICJqYXNoa2VuYXMiLAorICAgICJlbWFpbCI6ICJq
YXNoa2VuYXNAZ21haWwuY29tIgorICB9LAorICAiX25wbVZlcnNpb24iOiAiMS40LjI4IiwKKyAg
Il9waGFudG9tQ2hpbGRyZW4iOiB7fSwKKyAgIl9yZXF1ZXN0ZWQiOiB7CisgICAgInJhdyI6ICJ1
bmRlcnNjb3JlQF4xLjcuMCIsCisgICAgInNjb3BlIjogbnVsbCwKKyAgICAiZXNjYXBlZE5hbWUi
OiAidW5kZXJzY29yZSIsCisgICAgIm5hbWUiOiAidW5kZXJzY29yZSIsCisgICAgInJhd1NwZWMi
OiAiXjEuNy4wIiwKKyAgICAic3BlYyI6ICI+PTEuNy4wIDwyLjAuMCIsCisgICAgInR5cGUiOiAi
cmFuZ2UiCisgIH0sCisgICJfcmVxdWlyZWRCeSI6IFsKKyAgICAiLyIsCisgICAgIi9iYWNrYm9u
ZSIKKyAgXSwKKyAgIl9yZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy91bmRl
cnNjb3JlLy0vdW5kZXJzY29yZS0xLjguMy50Z3oiLAorICAiX3NoYXN1bSI6ICI0ZjNmYjUzYjEw
NmU2MDk3ZmNmOWNiNDEwOWYyYTVlOWJkZmE1MDIyIiwKKyAgIl9zaHJpbmt3cmFwIjogbnVsbCwK
KyAgIl9zcGVjIjogInVuZGVyc2NvcmVAXjEuNy4wIiwKKyAgIl93aGVyZSI6ICIvVXNlcnMvYWRk
eW8vcHJvamVjdHMvc3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2JhY2tib25lIiwKKyAgImF1dGhvciI6IHsKKyAgICAibmFtZSI6ICJKZXJlbXkgQXNo
a2VuYXMiLAorICAgICJlbWFpbCI6ICJqZXJlbXlAZG9jdW1lbnRjbG91ZC5vcmciCisgIH0sCisg
ICJidWdzIjogeworICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2phc2hrZW5hcy91bmRl
cnNjb3JlL2lzc3VlcyIKKyAgfSwKKyAgImRlcGVuZGVuY2llcyI6IHt9LAorICAiZGVzY3JpcHRp
b24iOiAiSmF2YVNjcmlwdCdzIGZ1bmN0aW9uYWwgcHJvZ3JhbW1pbmcgaGVscGVyIGxpYnJhcnku
IiwKKyAgImRldkRlcGVuZGVuY2llcyI6IHsKKyAgICAiZG9jY28iOiAiKiIsCisgICAgImVzbGlu
dCI6ICIwLjYueCIsCisgICAgImthcm1hIjogIn4wLjEyLjMxIiwKKyAgICAia2FybWEtcXVuaXQi
OiAifjAuMS40IiwKKyAgICAicXVuaXQtY2xpIjogIn4wLjIuMCIsCisgICAgInVnbGlmeS1qcyI6
ICIyLjQueCIKKyAgfSwKKyAgImRpcmVjdG9yaWVzIjoge30sCisgICJkaXN0IjogeworICAgICJz
aGFzdW0iOiAiNGYzZmI1M2IxMDZlNjA5N2ZjZjljYjQxMDlmMmE1ZTliZGZhNTAyMiIsCisgICAg
InRhcmJhbGwiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvdW5kZXJzY29yZS8tL3VuZGVy
c2NvcmUtMS44LjMudGd6IgorICB9LAorICAiZmlsZXMiOiBbCisgICAgInVuZGVyc2NvcmUuanMi
LAorICAgICJ1bmRlcnNjb3JlLW1pbi5qcyIsCisgICAgInVuZGVyc2NvcmUtbWluLm1hcCIsCisg
ICAgIkxJQ0VOU0UiCisgIF0sCisgICJnaXRIZWFkIjogImU0NzQzYWI3MTJiOGFiNDJhZDRjY2I0
OGIxNTUwMzRkMDIzOTRlNGQiLAorICAiaG9tZXBhZ2UiOiAiaHR0cDovL3VuZGVyc2NvcmVqcy5v
cmciLAorICAia2V5d29yZHMiOiBbCisgICAgInV0aWwiLAorICAgICJmdW5jdGlvbmFsIiwKKyAg
ICAic2VydmVyIiwKKyAgICAiY2xpZW50IiwKKyAgICAiYnJvd3NlciIKKyAgXSwKKyAgImxpY2Vu
c2UiOiAiTUlUIiwKKyAgIm1haW4iOiAidW5kZXJzY29yZS5qcyIsCisgICJtYWludGFpbmVycyI6
IFsKKyAgICB7CisgICAgICAibmFtZSI6ICJqYXNoa2VuYXMiLAorICAgICAgImVtYWlsIjogImph
c2hrZW5hc0BnbWFpbC5jb20iCisgICAgfQorICBdLAorICAibmFtZSI6ICJ1bmRlcnNjb3JlIiwK
KyAgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjoge30sCisgICJyZWFkbWUiOiAiRVJST1I6IE5vIFJF
QURNRSBkYXRhIGZvdW5kISIsCisgICJyZXBvc2l0b3J5IjogeworICAgICJ0eXBlIjogImdpdCIs
CisgICAgInVybCI6ICJnaXQ6Ly9naXRodWIuY29tL2phc2hrZW5hcy91bmRlcnNjb3JlLmdpdCIK
KyAgfSwKKyAgInNjcmlwdHMiOiB7CisgICAgImJ1aWxkIjogInVnbGlmeWpzIHVuZGVyc2NvcmUu
anMgLWMgXCJldmFsdWF0ZT1mYWxzZVwiIC0tY29tbWVudHMgXCIvICAgIC4qL1wiIC1tIC0tc291
cmNlLW1hcCB1bmRlcnNjb3JlLW1pbi5tYXAgLW8gdW5kZXJzY29yZS1taW4uanMiLAorICAgICJk
b2MiOiAiZG9jY28gdW5kZXJzY29yZS5qcyIsCisgICAgImxpbnQiOiAiZXNsaW50IHVuZGVyc2Nv
cmUuanMgdGVzdC8qLmpzIiwKKyAgICAidGVzdCI6ICJucG0gcnVuIHRlc3Qtbm9kZSAmJiBucG0g
cnVuIGxpbnQiLAorICAgICJ0ZXN0LWJyb3dzZXIiOiAibnBtIGkga2FybWEtcGhhbnRvbWpzLWxh
dW5jaGVyICYmIC4vbm9kZV9tb2R1bGVzL2thcm1hL2Jpbi9rYXJtYSBzdGFydCIsCisgICAgInRl
c3Qtbm9kZSI6ICJxdW5pdC1jbGkgdGVzdC8qLmpzIgorICB9LAorICAidmVyc2lvbiI6ICIxLjgu
MyIKK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy91bmRl
cnNjb3JlL3VuZGVyc2NvcmUtbWluLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1
bGVzL3VuZGVyc2NvcmUvdW5kZXJzY29yZS1taW4uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjAxMDI1YjdiY2Fh
YjE4ZTZiNjk4MTQxYzg1NGY5NTY2OWE1OTc1YwotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy91bmRlcnNjb3JlL3VuZGVyc2NvcmUtbWluLmpzCkBA
IC0wLDAgKzEsNiBAQAorLy8gICAgIFVuZGVyc2NvcmUuanMgMS44LjMKKy8vICAgICBodHRwOi8v
dW5kZXJzY29yZWpzLm9yZworLy8gICAgIChjKSAyMDA5LTIwMTUgSmVyZW15IEFzaGtlbmFzLCBE
b2N1bWVudENsb3VkIGFuZCBJbnZlc3RpZ2F0aXZlIFJlcG9ydGVycyAmIEVkaXRvcnMKKy8vICAg
ICBVbmRlcnNjb3JlIG1heSBiZSBmcmVlbHkgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIE1JVCBsaWNl
bnNlLgorKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihuKXtmdW5jdGlvbiB0KHQscixlLHUsaSxvKXtm
b3IoO2k+PTAmJm8+aTtpKz1uKXt2YXIgYT11P3VbaV06aTtlPXIoZSx0W2FdLGEsdCl9cmV0dXJu
IGV9cmV0dXJuIGZ1bmN0aW9uKHIsZSx1LGkpe2U9YihlLGksNCk7dmFyIG89IWsocikmJm0ua2V5
cyhyKSxhPShvfHxyKS5sZW5ndGgsYz1uPjA/MDphLTE7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8
MyYmKHU9cltvP29bY106Y10sYys9biksdChyLGUsdSxvLGMsYSl9fWZ1bmN0aW9uIHQobil7cmV0
dXJuIGZ1bmN0aW9uKHQscixlKXtyPXgocixlKTtmb3IodmFyIHU9Tyh0KSxpPW4+MD8wOnUtMTtp
Pj0wJiZ1Pmk7aSs9bilpZihyKHRbaV0saSx0KSlyZXR1cm4gaTtyZXR1cm4tMX19ZnVuY3Rpb24g
cihuLHQscil7cmV0dXJuIGZ1bmN0aW9uKGUsdSxpKXt2YXIgbz0wLGE9TyhlKTtpZigibnVtYmVy
Ij09dHlwZW9mIGkpbj4wP289aT49MD9pOk1hdGgubWF4KGkrYSxvKTphPWk+PTA/TWF0aC5taW4o
aSsxLGEpOmkrYSsxO2Vsc2UgaWYociYmaSYmYSlyZXR1cm4gaT1yKGUsdSksZVtpXT09PXU/aTot
MTtpZih1IT09dSlyZXR1cm4gaT10KGwuY2FsbChlLG8sYSksbS5pc05hTiksaT49MD9pK286LTE7
Zm9yKGk9bj4wP286YS0xO2k+PTAmJmE+aTtpKz1uKWlmKGVbaV09PT11KXJldHVybiBpO3JldHVy
bi0xfX1mdW5jdGlvbiBlKG4sdCl7dmFyIHI9SS5sZW5ndGgsZT1uLmNvbnN0cnVjdG9yLHU9bS5p
c0Z1bmN0aW9uKGUpJiZlLnByb3RvdHlwZXx8YSxpPSJjb25zdHJ1Y3RvciI7Zm9yKG0uaGFzKG4s
aSkmJiFtLmNvbnRhaW5zKHQsaSkmJnQucHVzaChpKTtyLS07KWk9SVtyXSxpIGluIG4mJm5baV0h
PT11W2ldJiYhbS5jb250YWlucyh0LGkpJiZ0LnB1c2goaSl9dmFyIHU9dGhpcyxpPXUuXyxvPUFy
cmF5LnByb3RvdHlwZSxhPU9iamVjdC5wcm90b3R5cGUsYz1GdW5jdGlvbi5wcm90b3R5cGUsZj1v
LnB1c2gsbD1vLnNsaWNlLHM9YS50b1N0cmluZyxwPWEuaGFzT3duUHJvcGVydHksaD1BcnJheS5p
c0FycmF5LHY9T2JqZWN0LmtleXMsZz1jLmJpbmQseT1PYmplY3QuY3JlYXRlLGQ9ZnVuY3Rpb24o
KXt9LG09ZnVuY3Rpb24obil7cmV0dXJuIG4gaW5zdGFuY2VvZiBtP246dGhpcyBpbnN0YW5jZW9m
IG0/dm9pZCh0aGlzLl93cmFwcGVkPW4pOm5ldyBtKG4pfTsidW5kZWZpbmVkIiE9dHlwZW9mIGV4
cG9ydHM/KCJ1bmRlZmluZWQiIT10eXBlb2YgbW9kdWxlJiZtb2R1bGUuZXhwb3J0cyYmKGV4cG9y
dHM9bW9kdWxlLmV4cG9ydHM9bSksZXhwb3J0cy5fPW0pOnUuXz1tLG0uVkVSU0lPTj0iMS44LjMi
O3ZhciBiPWZ1bmN0aW9uKG4sdCxyKXtpZih0PT09dm9pZCAwKXJldHVybiBuO3N3aXRjaChudWxs
PT1yPzM6cil7Y2FzZSAxOnJldHVybiBmdW5jdGlvbihyKXtyZXR1cm4gbi5jYWxsKHQscil9O2Nh
c2UgMjpyZXR1cm4gZnVuY3Rpb24ocixlKXtyZXR1cm4gbi5jYWxsKHQscixlKX07Y2FzZSAzOnJl
dHVybiBmdW5jdGlvbihyLGUsdSl7cmV0dXJuIG4uY2FsbCh0LHIsZSx1KX07Y2FzZSA0OnJldHVy
biBmdW5jdGlvbihyLGUsdSxpKXtyZXR1cm4gbi5jYWxsKHQscixlLHUsaSl9fXJldHVybiBmdW5j
dGlvbigpe3JldHVybiBuLmFwcGx5KHQsYXJndW1lbnRzKX19LHg9ZnVuY3Rpb24obix0LHIpe3Jl
dHVybiBudWxsPT1uP20uaWRlbnRpdHk6bS5pc0Z1bmN0aW9uKG4pP2Iobix0LHIpOm0uaXNPYmpl
Y3Qobik/bS5tYXRjaGVyKG4pOm0ucHJvcGVydHkobil9O20uaXRlcmF0ZWU9ZnVuY3Rpb24obix0
KXtyZXR1cm4geChuLHQsMS8wKX07dmFyIF89ZnVuY3Rpb24obix0KXtyZXR1cm4gZnVuY3Rpb24o
cil7dmFyIGU9YXJndW1lbnRzLmxlbmd0aDtpZigyPmV8fG51bGw9PXIpcmV0dXJuIHI7Zm9yKHZh
ciB1PTE7ZT51O3UrKylmb3IodmFyIGk9YXJndW1lbnRzW3VdLG89bihpKSxhPW8ubGVuZ3RoLGM9
MDthPmM7YysrKXt2YXIgZj1vW2NdO3QmJnJbZl0hPT12b2lkIDB8fChyW2ZdPWlbZl0pfXJldHVy
biByfX0saj1mdW5jdGlvbihuKXtpZighbS5pc09iamVjdChuKSlyZXR1cm57fTtpZih5KXJldHVy
biB5KG4pO2QucHJvdG90eXBlPW47dmFyIHQ9bmV3IGQ7cmV0dXJuIGQucHJvdG90eXBlPW51bGws
dH0sdz1mdW5jdGlvbihuKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dm9pZCAw
OnRbbl19fSxBPU1hdGgucG93KDIsNTMpLTEsTz13KCJsZW5ndGgiKSxrPWZ1bmN0aW9uKG4pe3Zh
ciB0PU8obik7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0JiZ0Pj0wJiZBPj10fTttLmVhY2g9bS5m
b3JFYWNoPWZ1bmN0aW9uKG4sdCxyKXt0PWIodCxyKTt2YXIgZSx1O2lmKGsobikpZm9yKGU9MCx1
PW4ubGVuZ3RoO3U+ZTtlKyspdChuW2VdLGUsbik7ZWxzZXt2YXIgaT1tLmtleXMobik7Zm9yKGU9
MCx1PWkubGVuZ3RoO3U+ZTtlKyspdChuW2lbZV1dLGlbZV0sbil9cmV0dXJuIG59LG0ubWFwPW0u
Y29sbGVjdD1mdW5jdGlvbihuLHQscil7dD14KHQscik7Zm9yKHZhciBlPSFrKG4pJiZtLmtleXMo
biksdT0oZXx8bikubGVuZ3RoLGk9QXJyYXkodSksbz0wO3U+bztvKyspe3ZhciBhPWU/ZVtvXTpv
O2lbb109dChuW2FdLGEsbil9cmV0dXJuIGl9LG0ucmVkdWNlPW0uZm9sZGw9bS5pbmplY3Q9bigx
KSxtLnJlZHVjZVJpZ2h0PW0uZm9sZHI9bigtMSksbS5maW5kPW0uZGV0ZWN0PWZ1bmN0aW9uKG4s
dCxyKXt2YXIgZTtyZXR1cm4gZT1rKG4pP20uZmluZEluZGV4KG4sdCxyKTptLmZpbmRLZXkobix0
LHIpLGUhPT12b2lkIDAmJmUhPT0tMT9uW2VdOnZvaWQgMH0sbS5maWx0ZXI9bS5zZWxlY3Q9ZnVu
Y3Rpb24obix0LHIpe3ZhciBlPVtdO3JldHVybiB0PXgodCxyKSxtLmVhY2gobixmdW5jdGlvbihu
LHIsdSl7dChuLHIsdSkmJmUucHVzaChuKX0pLGV9LG0ucmVqZWN0PWZ1bmN0aW9uKG4sdCxyKXty
ZXR1cm4gbS5maWx0ZXIobixtLm5lZ2F0ZSh4KHQpKSxyKX0sbS5ldmVyeT1tLmFsbD1mdW5jdGlv
bihuLHQscil7dD14KHQscik7Zm9yKHZhciBlPSFrKG4pJiZtLmtleXMobiksdT0oZXx8bikubGVu
Z3RoLGk9MDt1Pmk7aSsrKXt2YXIgbz1lP2VbaV06aTtpZighdChuW29dLG8sbikpcmV0dXJuITF9
cmV0dXJuITB9LG0uc29tZT1tLmFueT1mdW5jdGlvbihuLHQscil7dD14KHQscik7Zm9yKHZhciBl
PSFrKG4pJiZtLmtleXMobiksdT0oZXx8bikubGVuZ3RoLGk9MDt1Pmk7aSsrKXt2YXIgbz1lP2Vb
aV06aTtpZih0KG5bb10sbyxuKSlyZXR1cm4hMH1yZXR1cm4hMX0sbS5jb250YWlucz1tLmluY2x1
ZGVzPW0uaW5jbHVkZT1mdW5jdGlvbihuLHQscixlKXtyZXR1cm4gayhuKXx8KG49bS52YWx1ZXMo
bikpLCgibnVtYmVyIiE9dHlwZW9mIHJ8fGUpJiYocj0wKSxtLmluZGV4T2Yobix0LHIpPj0wfSxt
Lmludm9rZT1mdW5jdGlvbihuLHQpe3ZhciByPWwuY2FsbChhcmd1bWVudHMsMiksZT1tLmlzRnVu
Y3Rpb24odCk7cmV0dXJuIG0ubWFwKG4sZnVuY3Rpb24obil7dmFyIHU9ZT90Om5bdF07cmV0dXJu
IG51bGw9PXU/dTp1LmFwcGx5KG4scil9KX0sbS5wbHVjaz1mdW5jdGlvbihuLHQpe3JldHVybiBt
Lm1hcChuLG0ucHJvcGVydHkodCkpfSxtLndoZXJlPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIG0uZmls
dGVyKG4sbS5tYXRjaGVyKHQpKX0sbS5maW5kV2hlcmU9ZnVuY3Rpb24obix0KXtyZXR1cm4gbS5m
aW5kKG4sbS5tYXRjaGVyKHQpKX0sbS5tYXg9ZnVuY3Rpb24obix0LHIpe3ZhciBlLHUsaT0tMS8w
LG89LTEvMDtpZihudWxsPT10JiZudWxsIT1uKXtuPWsobik/bjptLnZhbHVlcyhuKTtmb3IodmFy
IGE9MCxjPW4ubGVuZ3RoO2M+YTthKyspZT1uW2FdLGU+aSYmKGk9ZSl9ZWxzZSB0PXgodCxyKSxt
LmVhY2gobixmdW5jdGlvbihuLHIsZSl7dT10KG4scixlKSwodT5vfHx1PT09LTEvMCYmaT09PS0x
LzApJiYoaT1uLG89dSl9KTtyZXR1cm4gaX0sbS5taW49ZnVuY3Rpb24obix0LHIpe3ZhciBlLHUs
aT0xLzAsbz0xLzA7aWYobnVsbD09dCYmbnVsbCE9bil7bj1rKG4pP246bS52YWx1ZXMobik7Zm9y
KHZhciBhPTAsYz1uLmxlbmd0aDtjPmE7YSsrKWU9blthXSxpPmUmJihpPWUpfWVsc2UgdD14KHQs
ciksbS5lYWNoKG4sZnVuY3Rpb24obixyLGUpe3U9dChuLHIsZSksKG8+dXx8MS8wPT09dSYmMS8w
PT09aSkmJihpPW4sbz11KX0pO3JldHVybiBpfSxtLnNodWZmbGU9ZnVuY3Rpb24obil7Zm9yKHZh
ciB0LHI9ayhuKT9uOm0udmFsdWVzKG4pLGU9ci5sZW5ndGgsdT1BcnJheShlKSxpPTA7ZT5pO2kr
Kyl0PW0ucmFuZG9tKDAsaSksdCE9PWkmJih1W2ldPXVbdF0pLHVbdF09cltpXTtyZXR1cm4gdX0s
bS5zYW1wbGU9ZnVuY3Rpb24obix0LHIpe3JldHVybiBudWxsPT10fHxyPyhrKG4pfHwobj1tLnZh
bHVlcyhuKSksblttLnJhbmRvbShuLmxlbmd0aC0xKV0pOm0uc2h1ZmZsZShuKS5zbGljZSgwLE1h
dGgubWF4KDAsdCkpfSxtLnNvcnRCeT1mdW5jdGlvbihuLHQscil7cmV0dXJuIHQ9eCh0LHIpLG0u
cGx1Y2sobS5tYXAobixmdW5jdGlvbihuLHIsZSl7cmV0dXJue3ZhbHVlOm4saW5kZXg6cixjcml0
ZXJpYTp0KG4scixlKX19KS5zb3J0KGZ1bmN0aW9uKG4sdCl7dmFyIHI9bi5jcml0ZXJpYSxlPXQu
Y3JpdGVyaWE7aWYociE9PWUpe2lmKHI+ZXx8cj09PXZvaWQgMClyZXR1cm4gMTtpZihlPnJ8fGU9
PT12b2lkIDApcmV0dXJuLTF9cmV0dXJuIG4uaW5kZXgtdC5pbmRleH0pLCJ2YWx1ZSIpfTt2YXIg
Rj1mdW5jdGlvbihuKXtyZXR1cm4gZnVuY3Rpb24odCxyLGUpe3ZhciB1PXt9O3JldHVybiByPXgo
cixlKSxtLmVhY2godCxmdW5jdGlvbihlLGkpe3ZhciBvPXIoZSxpLHQpO24odSxlLG8pfSksdX19
O20uZ3JvdXBCeT1GKGZ1bmN0aW9uKG4sdCxyKXttLmhhcyhuLHIpP25bcl0ucHVzaCh0KTpuW3Jd
PVt0XX0pLG0uaW5kZXhCeT1GKGZ1bmN0aW9uKG4sdCxyKXtuW3JdPXR9KSxtLmNvdW50Qnk9Rihm
dW5jdGlvbihuLHQscil7bS5oYXMobixyKT9uW3JdKys6bltyXT0xfSksbS50b0FycmF5PWZ1bmN0
aW9uKG4pe3JldHVybiBuP20uaXNBcnJheShuKT9sLmNhbGwobik6ayhuKT9tLm1hcChuLG0uaWRl
bnRpdHkpOm0udmFsdWVzKG4pOltdfSxtLnNpemU9ZnVuY3Rpb24obil7cmV0dXJuIG51bGw9PW4/
MDprKG4pP24ubGVuZ3RoOm0ua2V5cyhuKS5sZW5ndGh9LG0ucGFydGl0aW9uPWZ1bmN0aW9uKG4s
dCxyKXt0PXgodCxyKTt2YXIgZT1bXSx1PVtdO3JldHVybiBtLmVhY2gobixmdW5jdGlvbihuLHIs
aSl7KHQobixyLGkpP2U6dSkucHVzaChuKX0pLFtlLHVdfSxtLmZpcnN0PW0uaGVhZD1tLnRha2U9
ZnVuY3Rpb24obix0LHIpe3JldHVybiBudWxsPT1uP3ZvaWQgMDpudWxsPT10fHxyP25bMF06bS5p
bml0aWFsKG4sbi5sZW5ndGgtdCl9LG0uaW5pdGlhbD1mdW5jdGlvbihuLHQscil7cmV0dXJuIGwu
Y2FsbChuLDAsTWF0aC5tYXgoMCxuLmxlbmd0aC0obnVsbD09dHx8cj8xOnQpKSl9LG0ubGFzdD1m
dW5jdGlvbihuLHQscil7cmV0dXJuIG51bGw9PW4/dm9pZCAwOm51bGw9PXR8fHI/bltuLmxlbmd0
aC0xXTptLnJlc3QobixNYXRoLm1heCgwLG4ubGVuZ3RoLXQpKX0sbS5yZXN0PW0udGFpbD1tLmRy
b3A9ZnVuY3Rpb24obix0LHIpe3JldHVybiBsLmNhbGwobixudWxsPT10fHxyPzE6dCl9LG0uY29t
cGFjdD1mdW5jdGlvbihuKXtyZXR1cm4gbS5maWx0ZXIobixtLmlkZW50aXR5KX07dmFyIFM9ZnVu
Y3Rpb24obix0LHIsZSl7Zm9yKHZhciB1PVtdLGk9MCxvPWV8fDAsYT1PKG4pO2E+bztvKyspe3Zh
ciBjPW5bb107aWYoayhjKSYmKG0uaXNBcnJheShjKXx8bS5pc0FyZ3VtZW50cyhjKSkpe3R8fChj
PVMoYyx0LHIpKTt2YXIgZj0wLGw9Yy5sZW5ndGg7Zm9yKHUubGVuZ3RoKz1sO2w+ZjspdVtpKytd
PWNbZisrXX1lbHNlIHJ8fCh1W2krK109Yyl9cmV0dXJuIHV9O20uZmxhdHRlbj1mdW5jdGlvbihu
LHQpe3JldHVybiBTKG4sdCwhMSl9LG0ud2l0aG91dD1mdW5jdGlvbihuKXtyZXR1cm4gbS5kaWZm
ZXJlbmNlKG4sbC5jYWxsKGFyZ3VtZW50cywxKSl9LG0udW5pcT1tLnVuaXF1ZT1mdW5jdGlvbihu
LHQscixlKXttLmlzQm9vbGVhbih0KXx8KGU9cixyPXQsdD0hMSksbnVsbCE9ciYmKHI9eChyLGUp
KTtmb3IodmFyIHU9W10saT1bXSxvPTAsYT1PKG4pO2E+bztvKyspe3ZhciBjPW5bb10sZj1yP3Io
YyxvLG4pOmM7dD8obyYmaT09PWZ8fHUucHVzaChjKSxpPWYpOnI/bS5jb250YWlucyhpLGYpfHwo
aS5wdXNoKGYpLHUucHVzaChjKSk6bS5jb250YWlucyh1LGMpfHx1LnB1c2goYyl9cmV0dXJuIHV9
LG0udW5pb249ZnVuY3Rpb24oKXtyZXR1cm4gbS51bmlxKFMoYXJndW1lbnRzLCEwLCEwKSl9LG0u
aW50ZXJzZWN0aW9uPWZ1bmN0aW9uKG4pe2Zvcih2YXIgdD1bXSxyPWFyZ3VtZW50cy5sZW5ndGgs
ZT0wLHU9TyhuKTt1PmU7ZSsrKXt2YXIgaT1uW2VdO2lmKCFtLmNvbnRhaW5zKHQsaSkpe2Zvcih2
YXIgbz0xO3I+byYmbS5jb250YWlucyhhcmd1bWVudHNbb10saSk7bysrKTtvPT09ciYmdC5wdXNo
KGkpfX1yZXR1cm4gdH0sbS5kaWZmZXJlbmNlPWZ1bmN0aW9uKG4pe3ZhciB0PVMoYXJndW1lbnRz
LCEwLCEwLDEpO3JldHVybiBtLmZpbHRlcihuLGZ1bmN0aW9uKG4pe3JldHVybiFtLmNvbnRhaW5z
KHQsbil9KX0sbS56aXA9ZnVuY3Rpb24oKXtyZXR1cm4gbS51bnppcChhcmd1bWVudHMpfSxtLnVu
emlwPWZ1bmN0aW9uKG4pe2Zvcih2YXIgdD1uJiZtLm1heChuLE8pLmxlbmd0aHx8MCxyPUFycmF5
KHQpLGU9MDt0PmU7ZSsrKXJbZV09bS5wbHVjayhuLGUpO3JldHVybiByfSxtLm9iamVjdD1mdW5j
dGlvbihuLHQpe2Zvcih2YXIgcj17fSxlPTAsdT1PKG4pO3U+ZTtlKyspdD9yW25bZV1dPXRbZV06
cltuW2VdWzBdXT1uW2VdWzFdO3JldHVybiByfSxtLmZpbmRJbmRleD10KDEpLG0uZmluZExhc3RJ
bmRleD10KC0xKSxtLnNvcnRlZEluZGV4PWZ1bmN0aW9uKG4sdCxyLGUpe3I9eChyLGUsMSk7Zm9y
KHZhciB1PXIodCksaT0wLG89TyhuKTtvPmk7KXt2YXIgYT1NYXRoLmZsb29yKChpK28pLzIpO3Io
blthXSk8dT9pPWErMTpvPWF9cmV0dXJuIGl9LG0uaW5kZXhPZj1yKDEsbS5maW5kSW5kZXgsbS5z
b3J0ZWRJbmRleCksbS5sYXN0SW5kZXhPZj1yKC0xLG0uZmluZExhc3RJbmRleCksbS5yYW5nZT1m
dW5jdGlvbihuLHQscil7bnVsbD09dCYmKHQ9bnx8MCxuPTApLHI9cnx8MTtmb3IodmFyIGU9TWF0
aC5tYXgoTWF0aC5jZWlsKCh0LW4pL3IpLDApLHU9QXJyYXkoZSksaT0wO2U+aTtpKyssbis9cil1
W2ldPW47cmV0dXJuIHV9O3ZhciBFPWZ1bmN0aW9uKG4sdCxyLGUsdSl7aWYoIShlIGluc3RhbmNl
b2YgdCkpcmV0dXJuIG4uYXBwbHkocix1KTt2YXIgaT1qKG4ucHJvdG90eXBlKSxvPW4uYXBwbHko
aSx1KTtyZXR1cm4gbS5pc09iamVjdChvKT9vOml9O20uYmluZD1mdW5jdGlvbihuLHQpe2lmKGcm
Jm4uYmluZD09PWcpcmV0dXJuIGcuYXBwbHkobixsLmNhbGwoYXJndW1lbnRzLDEpKTtpZighbS5p
c0Z1bmN0aW9uKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoIkJpbmQgbXVzdCBiZSBjYWxsZWQgb24g
YSBmdW5jdGlvbiIpO3ZhciByPWwuY2FsbChhcmd1bWVudHMsMiksZT1mdW5jdGlvbigpe3JldHVy
biBFKG4sZSx0LHRoaXMsci5jb25jYXQobC5jYWxsKGFyZ3VtZW50cykpKX07cmV0dXJuIGV9LG0u
cGFydGlhbD1mdW5jdGlvbihuKXt2YXIgdD1sLmNhbGwoYXJndW1lbnRzLDEpLHI9ZnVuY3Rpb24o
KXtmb3IodmFyIGU9MCx1PXQubGVuZ3RoLGk9QXJyYXkodSksbz0wO3U+bztvKyspaVtvXT10W29d
PT09bT9hcmd1bWVudHNbZSsrXTp0W29dO2Zvcig7ZTxhcmd1bWVudHMubGVuZ3RoOylpLnB1c2go
YXJndW1lbnRzW2UrK10pO3JldHVybiBFKG4scix0aGlzLHRoaXMsaSl9O3JldHVybiByfSxtLmJp
bmRBbGw9ZnVuY3Rpb24obil7dmFyIHQscixlPWFyZ3VtZW50cy5sZW5ndGg7aWYoMT49ZSl0aHJv
dyBuZXcgRXJyb3IoImJpbmRBbGwgbXVzdCBiZSBwYXNzZWQgZnVuY3Rpb24gbmFtZXMiKTtmb3Io
dD0xO2U+dDt0Kyspcj1hcmd1bWVudHNbdF0sbltyXT1tLmJpbmQobltyXSxuKTtyZXR1cm4gbn0s
bS5tZW1vaXplPWZ1bmN0aW9uKG4sdCl7dmFyIHI9ZnVuY3Rpb24oZSl7dmFyIHU9ci5jYWNoZSxp
PSIiKyh0P3QuYXBwbHkodGhpcyxhcmd1bWVudHMpOmUpO3JldHVybiBtLmhhcyh1LGkpfHwodVtp
XT1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKSksdVtpXX07cmV0dXJuIHIuY2FjaGU9e30scn0sbS5k
ZWxheT1mdW5jdGlvbihuLHQpe3ZhciByPWwuY2FsbChhcmd1bWVudHMsMik7cmV0dXJuIHNldFRp
bWVvdXQoZnVuY3Rpb24oKXtyZXR1cm4gbi5hcHBseShudWxsLHIpfSx0KX0sbS5kZWZlcj1tLnBh
cnRpYWwobS5kZWxheSxtLDEpLG0udGhyb3R0bGU9ZnVuY3Rpb24obix0LHIpe3ZhciBlLHUsaSxv
PW51bGwsYT0wO3J8fChyPXt9KTt2YXIgYz1mdW5jdGlvbigpe2E9ci5sZWFkaW5nPT09ITE/MDpt
Lm5vdygpLG89bnVsbCxpPW4uYXBwbHkoZSx1KSxvfHwoZT11PW51bGwpfTtyZXR1cm4gZnVuY3Rp
b24oKXt2YXIgZj1tLm5vdygpO2F8fHIubGVhZGluZyE9PSExfHwoYT1mKTt2YXIgbD10LShmLWEp
O3JldHVybiBlPXRoaXMsdT1hcmd1bWVudHMsMD49bHx8bD50PyhvJiYoY2xlYXJUaW1lb3V0KG8p
LG89bnVsbCksYT1mLGk9bi5hcHBseShlLHUpLG98fChlPXU9bnVsbCkpOm98fHIudHJhaWxpbmc9
PT0hMXx8KG89c2V0VGltZW91dChjLGwpKSxpfX0sbS5kZWJvdW5jZT1mdW5jdGlvbihuLHQscil7
dmFyIGUsdSxpLG8sYSxjPWZ1bmN0aW9uKCl7dmFyIGY9bS5ub3coKS1vO3Q+ZiYmZj49MD9lPXNl
dFRpbWVvdXQoYyx0LWYpOihlPW51bGwscnx8KGE9bi5hcHBseShpLHUpLGV8fChpPXU9bnVsbCkp
KX07cmV0dXJuIGZ1bmN0aW9uKCl7aT10aGlzLHU9YXJndW1lbnRzLG89bS5ub3coKTt2YXIgZj1y
JiYhZTtyZXR1cm4gZXx8KGU9c2V0VGltZW91dChjLHQpKSxmJiYoYT1uLmFwcGx5KGksdSksaT11
PW51bGwpLGF9fSxtLndyYXA9ZnVuY3Rpb24obix0KXtyZXR1cm4gbS5wYXJ0aWFsKHQsbil9LG0u
bmVnYXRlPWZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbigpe3JldHVybiFuLmFwcGx5KHRoaXMs
YXJndW1lbnRzKX19LG0uY29tcG9zZT1mdW5jdGlvbigpe3ZhciBuPWFyZ3VtZW50cyx0PW4ubGVu
Z3RoLTE7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciByPXQsZT1uW3RdLmFwcGx5KHRoaXMsYXJn
dW1lbnRzKTtyLS07KWU9bltyXS5jYWxsKHRoaXMsZSk7cmV0dXJuIGV9fSxtLmFmdGVyPWZ1bmN0
aW9uKG4sdCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuLS1uPDE/dC5hcHBseSh0aGlzLGFyZ3Vt
ZW50cyk6dm9pZCAwfX0sbS5iZWZvcmU9ZnVuY3Rpb24obix0KXt2YXIgcjtyZXR1cm4gZnVuY3Rp
b24oKXtyZXR1cm4tLW4+MCYmKHI9dC5hcHBseSh0aGlzLGFyZ3VtZW50cykpLDE+PW4mJih0PW51
bGwpLHJ9fSxtLm9uY2U9bS5wYXJ0aWFsKG0uYmVmb3JlLDIpO3ZhciBNPSF7dG9TdHJpbmc6bnVs
bH0ucHJvcGVydHlJc0VudW1lcmFibGUoInRvU3RyaW5nIiksST1bInZhbHVlT2YiLCJpc1Byb3Rv
dHlwZU9mIiwidG9TdHJpbmciLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImhhc093blByb3BlcnR5
IiwidG9Mb2NhbGVTdHJpbmciXTttLmtleXM9ZnVuY3Rpb24obil7aWYoIW0uaXNPYmplY3Qobikp
cmV0dXJuW107aWYodilyZXR1cm4gdihuKTt2YXIgdD1bXTtmb3IodmFyIHIgaW4gbiltLmhhcyhu
LHIpJiZ0LnB1c2gocik7cmV0dXJuIE0mJmUobix0KSx0fSxtLmFsbEtleXM9ZnVuY3Rpb24obil7
aWYoIW0uaXNPYmplY3QobikpcmV0dXJuW107dmFyIHQ9W107Zm9yKHZhciByIGluIG4pdC5wdXNo
KHIpO3JldHVybiBNJiZlKG4sdCksdH0sbS52YWx1ZXM9ZnVuY3Rpb24obil7Zm9yKHZhciB0PW0u
a2V5cyhuKSxyPXQubGVuZ3RoLGU9QXJyYXkociksdT0wO3I+dTt1KyspZVt1XT1uW3RbdV1dO3Jl
dHVybiBlfSxtLm1hcE9iamVjdD1mdW5jdGlvbihuLHQscil7dD14KHQscik7Zm9yKHZhciBlLHU9
bS5rZXlzKG4pLGk9dS5sZW5ndGgsbz17fSxhPTA7aT5hO2ErKyllPXVbYV0sb1tlXT10KG5bZV0s
ZSxuKTtyZXR1cm4gb30sbS5wYWlycz1mdW5jdGlvbihuKXtmb3IodmFyIHQ9bS5rZXlzKG4pLHI9
dC5sZW5ndGgsZT1BcnJheShyKSx1PTA7cj51O3UrKyllW3VdPVt0W3VdLG5bdFt1XV1dO3JldHVy
biBlfSxtLmludmVydD1mdW5jdGlvbihuKXtmb3IodmFyIHQ9e30scj1tLmtleXMobiksZT0wLHU9
ci5sZW5ndGg7dT5lO2UrKyl0W25bcltlXV1dPXJbZV07cmV0dXJuIHR9LG0uZnVuY3Rpb25zPW0u
bWV0aG9kcz1mdW5jdGlvbihuKXt2YXIgdD1bXTtmb3IodmFyIHIgaW4gbiltLmlzRnVuY3Rpb24o
bltyXSkmJnQucHVzaChyKTtyZXR1cm4gdC5zb3J0KCl9LG0uZXh0ZW5kPV8obS5hbGxLZXlzKSxt
LmV4dGVuZE93bj1tLmFzc2lnbj1fKG0ua2V5cyksbS5maW5kS2V5PWZ1bmN0aW9uKG4sdCxyKXt0
PXgodCxyKTtmb3IodmFyIGUsdT1tLmtleXMobiksaT0wLG89dS5sZW5ndGg7bz5pO2krKylpZihl
PXVbaV0sdChuW2VdLGUsbikpcmV0dXJuIGV9LG0ucGljaz1mdW5jdGlvbihuLHQscil7dmFyIGUs
dSxpPXt9LG89bjtpZihudWxsPT1vKXJldHVybiBpO20uaXNGdW5jdGlvbih0KT8odT1tLmFsbEtl
eXMobyksZT1iKHQscikpOih1PVMoYXJndW1lbnRzLCExLCExLDEpLGU9ZnVuY3Rpb24obix0LHIp
e3JldHVybiB0IGluIHJ9LG89T2JqZWN0KG8pKTtmb3IodmFyIGE9MCxjPXUubGVuZ3RoO2M+YTth
Kyspe3ZhciBmPXVbYV0sbD1vW2ZdO2UobCxmLG8pJiYoaVtmXT1sKX1yZXR1cm4gaX0sbS5vbWl0
PWZ1bmN0aW9uKG4sdCxyKXtpZihtLmlzRnVuY3Rpb24odCkpdD1tLm5lZ2F0ZSh0KTtlbHNle3Zh
ciBlPW0ubWFwKFMoYXJndW1lbnRzLCExLCExLDEpLFN0cmluZyk7dD1mdW5jdGlvbihuLHQpe3Jl
dHVybiFtLmNvbnRhaW5zKGUsdCl9fXJldHVybiBtLnBpY2sobix0LHIpfSxtLmRlZmF1bHRzPV8o
bS5hbGxLZXlzLCEwKSxtLmNyZWF0ZT1mdW5jdGlvbihuLHQpe3ZhciByPWoobik7cmV0dXJuIHQm
Jm0uZXh0ZW5kT3duKHIsdCkscn0sbS5jbG9uZT1mdW5jdGlvbihuKXtyZXR1cm4gbS5pc09iamVj
dChuKT9tLmlzQXJyYXkobik/bi5zbGljZSgpOm0uZXh0ZW5kKHt9LG4pOm59LG0udGFwPWZ1bmN0
aW9uKG4sdCl7cmV0dXJuIHQobiksbn0sbS5pc01hdGNoPWZ1bmN0aW9uKG4sdCl7dmFyIHI9bS5r
ZXlzKHQpLGU9ci5sZW5ndGg7aWYobnVsbD09bilyZXR1cm4hZTtmb3IodmFyIHU9T2JqZWN0KG4p
LGk9MDtlPmk7aSsrKXt2YXIgbz1yW2ldO2lmKHRbb10hPT11W29dfHwhKG8gaW4gdSkpcmV0dXJu
ITF9cmV0dXJuITB9O3ZhciBOPWZ1bmN0aW9uKG4sdCxyLGUpe2lmKG49PT10KXJldHVybiAwIT09
bnx8MS9uPT09MS90O2lmKG51bGw9PW58fG51bGw9PXQpcmV0dXJuIG49PT10O24gaW5zdGFuY2Vv
ZiBtJiYobj1uLl93cmFwcGVkKSx0IGluc3RhbmNlb2YgbSYmKHQ9dC5fd3JhcHBlZCk7dmFyIHU9
cy5jYWxsKG4pO2lmKHUhPT1zLmNhbGwodCkpcmV0dXJuITE7c3dpdGNoKHUpe2Nhc2UiW29iamVj
dCBSZWdFeHBdIjpjYXNlIltvYmplY3QgU3RyaW5nXSI6cmV0dXJuIiIrbj09IiIrdDtjYXNlIltv
YmplY3QgTnVtYmVyXSI6cmV0dXJuK24hPT0rbj8rdCE9PSt0OjA9PT0rbj8xLytuPT09MS90Oitu
PT09K3Q7Y2FzZSJbb2JqZWN0IERhdGVdIjpjYXNlIltvYmplY3QgQm9vbGVhbl0iOnJldHVybitu
PT09K3R9dmFyIGk9IltvYmplY3QgQXJyYXldIj09PXU7aWYoIWkpe2lmKCJvYmplY3QiIT10eXBl
b2Ygbnx8Im9iamVjdCIhPXR5cGVvZiB0KXJldHVybiExO3ZhciBvPW4uY29uc3RydWN0b3IsYT10
LmNvbnN0cnVjdG9yO2lmKG8hPT1hJiYhKG0uaXNGdW5jdGlvbihvKSYmbyBpbnN0YW5jZW9mIG8m
Jm0uaXNGdW5jdGlvbihhKSYmYSBpbnN0YW5jZW9mIGEpJiYiY29uc3RydWN0b3IiaW4gbiYmImNv
bnN0cnVjdG9yImluIHQpcmV0dXJuITF9cj1yfHxbXSxlPWV8fFtdO2Zvcih2YXIgYz1yLmxlbmd0
aDtjLS07KWlmKHJbY109PT1uKXJldHVybiBlW2NdPT09dDtpZihyLnB1c2gobiksZS5wdXNoKHQp
LGkpe2lmKGM9bi5sZW5ndGgsYyE9PXQubGVuZ3RoKXJldHVybiExO2Zvcig7Yy0tOylpZighTihu
W2NdLHRbY10scixlKSlyZXR1cm4hMX1lbHNle3ZhciBmLGw9bS5rZXlzKG4pO2lmKGM9bC5sZW5n
dGgsbS5rZXlzKHQpLmxlbmd0aCE9PWMpcmV0dXJuITE7Zm9yKDtjLS07KWlmKGY9bFtjXSwhbS5o
YXModCxmKXx8IU4obltmXSx0W2ZdLHIsZSkpcmV0dXJuITF9cmV0dXJuIHIucG9wKCksZS5wb3Ao
KSwhMH07bS5pc0VxdWFsPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIE4obix0KX0sbS5pc0VtcHR5PWZ1
bmN0aW9uKG4pe3JldHVybiBudWxsPT1uPyEwOmsobikmJihtLmlzQXJyYXkobil8fG0uaXNTdHJp
bmcobil8fG0uaXNBcmd1bWVudHMobikpPzA9PT1uLmxlbmd0aDowPT09bS5rZXlzKG4pLmxlbmd0
aH0sbS5pc0VsZW1lbnQ9ZnVuY3Rpb24obil7cmV0dXJuISghbnx8MSE9PW4ubm9kZVR5cGUpfSxt
LmlzQXJyYXk9aHx8ZnVuY3Rpb24obil7cmV0dXJuIltvYmplY3QgQXJyYXldIj09PXMuY2FsbChu
KX0sbS5pc09iamVjdD1mdW5jdGlvbihuKXt2YXIgdD10eXBlb2YgbjtyZXR1cm4iZnVuY3Rpb24i
PT09dHx8Im9iamVjdCI9PT10JiYhIW59LG0uZWFjaChbIkFyZ3VtZW50cyIsIkZ1bmN0aW9uIiwi
U3RyaW5nIiwiTnVtYmVyIiwiRGF0ZSIsIlJlZ0V4cCIsIkVycm9yIl0sZnVuY3Rpb24obil7bVsi
aXMiK25dPWZ1bmN0aW9uKHQpe3JldHVybiBzLmNhbGwodCk9PT0iW29iamVjdCAiK24rIl0ifX0p
LG0uaXNBcmd1bWVudHMoYXJndW1lbnRzKXx8KG0uaXNBcmd1bWVudHM9ZnVuY3Rpb24obil7cmV0
dXJuIG0uaGFzKG4sImNhbGxlZSIpfSksImZ1bmN0aW9uIiE9dHlwZW9mLy4vJiYib2JqZWN0IiE9
dHlwZW9mIEludDhBcnJheSYmKG0uaXNGdW5jdGlvbj1mdW5jdGlvbihuKXtyZXR1cm4iZnVuY3Rp
b24iPT10eXBlb2Ygbnx8ITF9KSxtLmlzRmluaXRlPWZ1bmN0aW9uKG4pe3JldHVybiBpc0Zpbml0
ZShuKSYmIWlzTmFOKHBhcnNlRmxvYXQobikpfSxtLmlzTmFOPWZ1bmN0aW9uKG4pe3JldHVybiBt
LmlzTnVtYmVyKG4pJiZuIT09K259LG0uaXNCb29sZWFuPWZ1bmN0aW9uKG4pe3JldHVybiBuPT09
ITB8fG49PT0hMXx8IltvYmplY3QgQm9vbGVhbl0iPT09cy5jYWxsKG4pfSxtLmlzTnVsbD1mdW5j
dGlvbihuKXtyZXR1cm4gbnVsbD09PW59LG0uaXNVbmRlZmluZWQ9ZnVuY3Rpb24obil7cmV0dXJu
IG49PT12b2lkIDB9LG0uaGFzPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIG51bGwhPW4mJnAuY2FsbChu
LHQpfSxtLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdS5fPWksdGhpc30sbS5pZGVudGl0
eT1mdW5jdGlvbihuKXtyZXR1cm4gbn0sbS5jb25zdGFudD1mdW5jdGlvbihuKXtyZXR1cm4gZnVu
Y3Rpb24oKXtyZXR1cm4gbn19LG0ubm9vcD1mdW5jdGlvbigpe30sbS5wcm9wZXJ0eT13LG0ucHJv
cGVydHlPZj1mdW5jdGlvbihuKXtyZXR1cm4gbnVsbD09bj9mdW5jdGlvbigpe306ZnVuY3Rpb24o
dCl7cmV0dXJuIG5bdF19fSxtLm1hdGNoZXI9bS5tYXRjaGVzPWZ1bmN0aW9uKG4pe3JldHVybiBu
PW0uZXh0ZW5kT3duKHt9LG4pLGZ1bmN0aW9uKHQpe3JldHVybiBtLmlzTWF0Y2godCxuKX19LG0u
dGltZXM9ZnVuY3Rpb24obix0LHIpe3ZhciBlPUFycmF5KE1hdGgubWF4KDAsbikpO3Q9Yih0LHIs
MSk7Zm9yKHZhciB1PTA7bj51O3UrKyllW3VdPXQodSk7cmV0dXJuIGV9LG0ucmFuZG9tPWZ1bmN0
aW9uKG4sdCl7cmV0dXJuIG51bGw9PXQmJih0PW4sbj0wKSxuK01hdGguZmxvb3IoTWF0aC5yYW5k
b20oKSoodC1uKzEpKX0sbS5ub3c9RGF0ZS5ub3d8fGZ1bmN0aW9uKCl7cmV0dXJuKG5ldyBEYXRl
KS5nZXRUaW1lKCl9O3ZhciBCPXsiJiI6IiZhbXA7IiwiPCI6IiZsdDsiLCI+IjoiJmd0OyIsJyIn
OiImcXVvdDsiLCInIjoiJiN4Mjc7IiwiYCI6IiYjeDYwOyJ9LFQ9bS5pbnZlcnQoQiksUj1mdW5j
dGlvbihuKXt2YXIgdD1mdW5jdGlvbih0KXtyZXR1cm4gblt0XX0scj0iKD86IittLmtleXMobiku
am9pbigifCIpKyIpIixlPVJlZ0V4cChyKSx1PVJlZ0V4cChyLCJnIik7cmV0dXJuIGZ1bmN0aW9u
KG4pe3JldHVybiBuPW51bGw9PW4/IiI6IiIrbixlLnRlc3Qobik/bi5yZXBsYWNlKHUsdCk6bn19
O20uZXNjYXBlPVIoQiksbS51bmVzY2FwZT1SKFQpLG0ucmVzdWx0PWZ1bmN0aW9uKG4sdCxyKXt2
YXIgZT1udWxsPT1uP3ZvaWQgMDpuW3RdO3JldHVybiBlPT09dm9pZCAwJiYoZT1yKSxtLmlzRnVu
Y3Rpb24oZSk/ZS5jYWxsKG4pOmV9O3ZhciBxPTA7bS51bmlxdWVJZD1mdW5jdGlvbihuKXt2YXIg
dD0rK3ErIiI7cmV0dXJuIG4/bit0OnR9LG0udGVtcGxhdGVTZXR0aW5ncz17ZXZhbHVhdGU6Lzwl
KFtcc1xTXSs/KSU+L2csaW50ZXJwb2xhdGU6LzwlPShbXHNcU10rPyklPi9nLGVzY2FwZTovPCUt
KFtcc1xTXSs/KSU+L2d9O3ZhciBLPS8oLileLyx6PXsiJyI6IiciLCJcXCI6IlxcIiwiXHIiOiJy
IiwiXG4iOiJuIiwiXHUyMDI4IjoidTIwMjgiLCJcdTIwMjkiOiJ1MjAyOSJ9LEQ9L1xcfCd8XHJ8
XG58XHUyMDI4fFx1MjAyOS9nLEw9ZnVuY3Rpb24obil7cmV0dXJuIlxcIit6W25dfTttLnRlbXBs
YXRlPWZ1bmN0aW9uKG4sdCxyKXshdCYmciYmKHQ9ciksdD1tLmRlZmF1bHRzKHt9LHQsbS50ZW1w
bGF0ZVNldHRpbmdzKTt2YXIgZT1SZWdFeHAoWyh0LmVzY2FwZXx8Sykuc291cmNlLCh0LmludGVy
cG9sYXRlfHxLKS5zb3VyY2UsKHQuZXZhbHVhdGV8fEspLnNvdXJjZV0uam9pbigifCIpKyJ8JCIs
ImciKSx1PTAsaT0iX19wKz0nIjtuLnJlcGxhY2UoZSxmdW5jdGlvbih0LHIsZSxvLGEpe3JldHVy
biBpKz1uLnNsaWNlKHUsYSkucmVwbGFjZShELEwpLHU9YSt0Lmxlbmd0aCxyP2krPSInK1xuKChf
X3Q9KCIrcisiKSk9PW51bGw/Jyc6Xy5lc2NhcGUoX190KSkrXG4nIjplP2krPSInK1xuKChfX3Q9
KCIrZSsiKSk9PW51bGw/Jyc6X190KStcbiciOm8mJihpKz0iJztcbiIrbysiXG5fX3ArPSciKSx0
fSksaSs9Iic7XG4iLHQudmFyaWFibGV8fChpPSJ3aXRoKG9ianx8e30pe1xuIitpKyJ9XG4iKSxp
PSJ2YXIgX190LF9fcD0nJyxfX2o9QXJyYXkucHJvdG90eXBlLmpvaW4sIisicHJpbnQ9ZnVuY3Rp
b24oKXtfX3ArPV9fai5jYWxsKGFyZ3VtZW50cywnJyk7fTtcbiIraSsicmV0dXJuIF9fcDtcbiI7
dHJ5e3ZhciBvPW5ldyBGdW5jdGlvbih0LnZhcmlhYmxlfHwib2JqIiwiXyIsaSl9Y2F0Y2goYSl7
dGhyb3cgYS5zb3VyY2U9aSxhfXZhciBjPWZ1bmN0aW9uKG4pe3JldHVybiBvLmNhbGwodGhpcyxu
LG0pfSxmPXQudmFyaWFibGV8fCJvYmoiO3JldHVybiBjLnNvdXJjZT0iZnVuY3Rpb24oIitmKyIp
e1xuIitpKyJ9IixjfSxtLmNoYWluPWZ1bmN0aW9uKG4pe3ZhciB0PW0obik7cmV0dXJuIHQuX2No
YWluPSEwLHR9O3ZhciBQPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIG4uX2NoYWluP20odCkuY2hhaW4o
KTp0fTttLm1peGluPWZ1bmN0aW9uKG4pe20uZWFjaChtLmZ1bmN0aW9ucyhuKSxmdW5jdGlvbih0
KXt2YXIgcj1tW3RdPW5bdF07bS5wcm90b3R5cGVbdF09ZnVuY3Rpb24oKXt2YXIgbj1bdGhpcy5f
d3JhcHBlZF07cmV0dXJuIGYuYXBwbHkobixhcmd1bWVudHMpLFAodGhpcyxyLmFwcGx5KG0sbikp
fX0pfSxtLm1peGluKG0pLG0uZWFjaChbInBvcCIsInB1c2giLCJyZXZlcnNlIiwic2hpZnQiLCJz
b3J0Iiwic3BsaWNlIiwidW5zaGlmdCJdLGZ1bmN0aW9uKG4pe3ZhciB0PW9bbl07bS5wcm90b3R5
cGVbbl09ZnVuY3Rpb24oKXt2YXIgcj10aGlzLl93cmFwcGVkO3JldHVybiB0LmFwcGx5KHIsYXJn
dW1lbnRzKSwic2hpZnQiIT09biYmInNwbGljZSIhPT1ufHwwIT09ci5sZW5ndGh8fGRlbGV0ZSBy
WzBdLFAodGhpcyxyKX19KSxtLmVhY2goWyJjb25jYXQiLCJqb2luIiwic2xpY2UiXSxmdW5jdGlv
bihuKXt2YXIgdD1vW25dO20ucHJvdG90eXBlW25dPWZ1bmN0aW9uKCl7cmV0dXJuIFAodGhpcyx0
LmFwcGx5KHRoaXMuX3dyYXBwZWQsYXJndW1lbnRzKSl9fSksbS5wcm90b3R5cGUudmFsdWU9ZnVu
Y3Rpb24oKXtyZXR1cm4gdGhpcy5fd3JhcHBlZH0sbS5wcm90b3R5cGUudmFsdWVPZj1tLnByb3Rv
dHlwZS50b0pTT049bS5wcm90b3R5cGUudmFsdWUsbS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rp
b24oKXtyZXR1cm4iIit0aGlzLl93cmFwcGVkfSwiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZk
ZWZpbmUuYW1kJiZkZWZpbmUoInVuZGVyc2NvcmUiLFtdLGZ1bmN0aW9uKCl7cmV0dXJuIG19KX0p
LmNhbGwodGhpcyk7CisvLyMgc291cmNlTWFwcGluZ1VSTD11bmRlcnNjb3JlLW1pbi5tYXAKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9u
ZS9ub2RlX21vZHVsZXMvdW5kZXJzY29yZS91bmRlcnNjb3JlLW1pbi5tYXAgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9iYWNrYm9uZS9ub2RlX21vZHVsZXMvdW5kZXJzY29yZS91bmRlcnNjb3JlLW1pbi5tYXAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uY2YzNTZiZjlhYmU5YjdiOWQ3NzIyNTZhNjA2OTdiOWFlMTg0N2M1NAotLS0gL2Rl
di9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxlcy91bmRlcnNjb3Jl
L3VuZGVyc2NvcmUtbWluLm1hcApAQCAtMCwwICsxIEBACit7InZlcnNpb24iOjMsImZpbGUiOiJ1
bmRlcnNjb3JlLW1pbi5qcyIsInNvdXJjZXMiOlsidW5kZXJzY29yZS5qcyJdLCJuYW1lcyI6WyJj
cmVhdGVSZWR1Y2UiLCJkaXIiLCJpdGVyYXRvciIsIm9iaiIsIml0ZXJhdGVlIiwibWVtbyIsImtl
eXMiLCJpbmRleCIsImxlbmd0aCIsImN1cnJlbnRLZXkiLCJjb250ZXh0Iiwib3B0aW1pemVDYiIs
ImlzQXJyYXlMaWtlIiwiXyIsImFyZ3VtZW50cyIsImNyZWF0ZVByZWRpY2F0ZUluZGV4RmluZGVy
IiwiYXJyYXkiLCJwcmVkaWNhdGUiLCJjYiIsImdldExlbmd0aCIsImNyZWF0ZUluZGV4RmluZGVy
IiwicHJlZGljYXRlRmluZCIsInNvcnRlZEluZGV4IiwiaXRlbSIsImlkeCIsImkiLCJNYXRoIiwi
bWF4IiwibWluIiwic2xpY2UiLCJjYWxsIiwiaXNOYU4iLCJjb2xsZWN0Tm9uRW51bVByb3BzIiwi
bm9uRW51bUlkeCIsIm5vbkVudW1lcmFibGVQcm9wcyIsImNvbnN0cnVjdG9yIiwicHJvdG8iLCJp
c0Z1bmN0aW9uIiwicHJvdG90eXBlIiwiT2JqUHJvdG8iLCJwcm9wIiwiaGFzIiwiY29udGFpbnMi
LCJwdXNoIiwicm9vdCIsInRoaXMiLCJwcmV2aW91c1VuZGVyc2NvcmUiLCJBcnJheVByb3RvIiwi
QXJyYXkiLCJPYmplY3QiLCJGdW5jUHJvdG8iLCJGdW5jdGlvbiIsInRvU3RyaW5nIiwiaGFzT3du
UHJvcGVydHkiLCJuYXRpdmVJc0FycmF5IiwiaXNBcnJheSIsIm5hdGl2ZUtleXMiLCJuYXRpdmVC
aW5kIiwiYmluZCIsIm5hdGl2ZUNyZWF0ZSIsImNyZWF0ZSIsIkN0b3IiLCJfd3JhcHBlZCIsImV4
cG9ydHMiLCJtb2R1bGUiLCJWRVJTSU9OIiwiZnVuYyIsImFyZ0NvdW50IiwidmFsdWUiLCJvdGhl
ciIsImNvbGxlY3Rpb24iLCJhY2N1bXVsYXRvciIsImFwcGx5IiwiaWRlbnRpdHkiLCJpc09iamVj
dCIsIm1hdGNoZXIiLCJwcm9wZXJ0eSIsIkluZmluaXR5IiwiY3JlYXRlQXNzaWduZXIiLCJrZXlz
RnVuYyIsInVuZGVmaW5lZE9ubHkiLCJzb3VyY2UiLCJsIiwia2V5IiwiYmFzZUNyZWF0ZSIsInJl
c3VsdCIsIk1BWF9BUlJBWV9JTkRFWCIsInBvdyIsImVhY2giLCJmb3JFYWNoIiwibWFwIiwiY29s
bGVjdCIsInJlc3VsdHMiLCJyZWR1Y2UiLCJmb2xkbCIsImluamVjdCIsInJlZHVjZVJpZ2h0Iiwi
Zm9sZHIiLCJmaW5kIiwiZGV0ZWN0IiwiZmluZEluZGV4IiwiZmluZEtleSIsImZpbHRlciIsInNl
bGVjdCIsImxpc3QiLCJyZWplY3QiLCJuZWdhdGUiLCJldmVyeSIsImFsbCIsInNvbWUiLCJhbnki
LCJpbmNsdWRlcyIsImluY2x1ZGUiLCJmcm9tSW5kZXgiLCJndWFyZCIsInZhbHVlcyIsImluZGV4
T2YiLCJpbnZva2UiLCJtZXRob2QiLCJhcmdzIiwiaXNGdW5jIiwicGx1Y2siLCJ3aGVyZSIsImF0
dHJzIiwiZmluZFdoZXJlIiwiY29tcHV0ZWQiLCJsYXN0Q29tcHV0ZWQiLCJzaHVmZmxlIiwicmFu
ZCIsInNldCIsInNodWZmbGVkIiwicmFuZG9tIiwic2FtcGxlIiwibiIsInNvcnRCeSIsImNyaXRl
cmlhIiwic29ydCIsImxlZnQiLCJyaWdodCIsImEiLCJiIiwiZ3JvdXAiLCJiZWhhdmlvciIsImdy
b3VwQnkiLCJpbmRleEJ5IiwiY291bnRCeSIsInRvQXJyYXkiLCJzaXplIiwicGFydGl0aW9uIiwi
cGFzcyIsImZhaWwiLCJmaXJzdCIsImhlYWQiLCJ0YWtlIiwiaW5pdGlhbCIsImxhc3QiLCJyZXN0
IiwidGFpbCIsImRyb3AiLCJjb21wYWN0IiwiZmxhdHRlbiIsImlucHV0Iiwic2hhbGxvdyIsInN0
cmljdCIsInN0YXJ0SW5kZXgiLCJvdXRwdXQiLCJpc0FyZ3VtZW50cyIsImoiLCJsZW4iLCJ3aXRo
b3V0IiwiZGlmZmVyZW5jZSIsInVuaXEiLCJ1bmlxdWUiLCJpc1NvcnRlZCIsImlzQm9vbGVhbiIs
InNlZW4iLCJ1bmlvbiIsImludGVyc2VjdGlvbiIsImFyZ3NMZW5ndGgiLCJ6aXAiLCJ1bnppcCIs
Im9iamVjdCIsImZpbmRMYXN0SW5kZXgiLCJsb3ciLCJoaWdoIiwibWlkIiwiZmxvb3IiLCJsYXN0
SW5kZXhPZiIsInJhbmdlIiwic3RhcnQiLCJzdG9wIiwic3RlcCIsImNlaWwiLCJleGVjdXRlQm91
bmQiLCJzb3VyY2VGdW5jIiwiYm91bmRGdW5jIiwiY2FsbGluZ0NvbnRleHQiLCJzZWxmIiwiVHlw
ZUVycm9yIiwiYm91bmQiLCJjb25jYXQiLCJwYXJ0aWFsIiwiYm91bmRBcmdzIiwicG9zaXRpb24i
LCJiaW5kQWxsIiwiRXJyb3IiLCJtZW1vaXplIiwiaGFzaGVyIiwiY2FjaGUiLCJhZGRyZXNzIiwi
ZGVsYXkiLCJ3YWl0Iiwic2V0VGltZW91dCIsImRlZmVyIiwidGhyb3R0bGUiLCJvcHRpb25zIiwi
dGltZW91dCIsInByZXZpb3VzIiwibGF0ZXIiLCJsZWFkaW5nIiwibm93IiwicmVtYWluaW5nIiwi
Y2xlYXJUaW1lb3V0IiwidHJhaWxpbmciLCJkZWJvdW5jZSIsImltbWVkaWF0ZSIsInRpbWVzdGFt
cCIsImNhbGxOb3ciLCJ3cmFwIiwid3JhcHBlciIsImNvbXBvc2UiLCJhZnRlciIsInRpbWVzIiwi
YmVmb3JlIiwib25jZSIsImhhc0VudW1CdWciLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImFsbEtl
eXMiLCJtYXBPYmplY3QiLCJwYWlycyIsImludmVydCIsImZ1bmN0aW9ucyIsIm1ldGhvZHMiLCJu
YW1lcyIsImV4dGVuZCIsImV4dGVuZE93biIsImFzc2lnbiIsInBpY2siLCJvaXRlcmF0ZWUiLCJv
bWl0IiwiU3RyaW5nIiwiZGVmYXVsdHMiLCJwcm9wcyIsImNsb25lIiwidGFwIiwiaW50ZXJjZXB0
b3IiLCJpc01hdGNoIiwiZXEiLCJhU3RhY2siLCJiU3RhY2siLCJjbGFzc05hbWUiLCJhcmVBcnJh
eXMiLCJhQ3RvciIsImJDdG9yIiwicG9wIiwiaXNFcXVhbCIsImlzRW1wdHkiLCJpc1N0cmluZyIs
ImlzRWxlbWVudCIsIm5vZGVUeXBlIiwidHlwZSIsIm5hbWUiLCJJbnQ4QXJyYXkiLCJpc0Zpbml0
ZSIsInBhcnNlRmxvYXQiLCJpc051bWJlciIsImlzTnVsbCIsImlzVW5kZWZpbmVkIiwibm9Db25m
bGljdCIsImNvbnN0YW50Iiwibm9vcCIsInByb3BlcnR5T2YiLCJtYXRjaGVzIiwiYWNjdW0iLCJE
YXRlIiwiZ2V0VGltZSIsImVzY2FwZU1hcCIsIiYiLCI8IiwiPiIsIlwiIiwiJyIsImAiLCJ1bmVz
Y2FwZU1hcCIsImNyZWF0ZUVzY2FwZXIiLCJlc2NhcGVyIiwibWF0Y2giLCJqb2luIiwidGVzdFJl
Z2V4cCIsIlJlZ0V4cCIsInJlcGxhY2VSZWdleHAiLCJzdHJpbmciLCJ0ZXN0IiwicmVwbGFjZSIs
ImVzY2FwZSIsInVuZXNjYXBlIiwiZmFsbGJhY2siLCJpZENvdW50ZXIiLCJ1bmlxdWVJZCIsInBy
ZWZpeCIsImlkIiwidGVtcGxhdGVTZXR0aW5ncyIsImV2YWx1YXRlIiwiaW50ZXJwb2xhdGUiLCJu
b01hdGNoIiwiZXNjYXBlcyIsIlxcIiwiXHIiLCJcbiIsIuKAqCIsIuKAqSIsImVzY2FwZUNoYXIi
LCJ0ZW1wbGF0ZSIsInRleHQiLCJzZXR0aW5ncyIsIm9sZFNldHRpbmdzIiwib2Zmc2V0IiwidmFy
aWFibGUiLCJyZW5kZXIiLCJlIiwiZGF0YSIsImFyZ3VtZW50IiwiY2hhaW4iLCJpbnN0YW5jZSIs
Il9jaGFpbiIsIm1peGluIiwidmFsdWVPZiIsInRvSlNPTiIsImRlZmluZSIsImFtZCJdLCJtYXBw
aW5ncyI6Ijs7OztDQUtDLFdBNEtDLFFBQVNBLEdBQWFDLEdBR3BCLFFBQVNDLEdBQVNDLEVBQUtD
LEVBQVVDLEVBQU1DLEVBQU1DLEVBQU9DLEdBQ2xELEtBQU9ELEdBQVMsR0FBYUMsRUFBUkQsRUFB
Z0JBLEdBQVNOLEVBQUssQ0FDakQsR0FBSVEsR0FBYUgsRUFBT0EsRUFBS0MsR0FBU0EsQ0FDdENG
LEdBQU9ELEVBQVNDLEVBQU1GLEVBQUlNLEdBQWFBLEVBQVlOLEdBRXJELE1BQU9FLEdBR1QsTUFB
TyxVQUFTRixFQUFLQyxFQUFVQyxFQUFNSyxHQUNuQ04sRUFBV08sRUFBV1AsRUFBVU0sRUFBUyxF
QUN6QyxJQUFJSixJQUFRTSxFQUFZVCxJQUFRVSxFQUFFUCxLQUFLSCxHQUNuQ0ssR0FBVUYsR0FB
UUgsR0FBS0ssT0FDdkJELEVBQVFOLEVBQU0sRUFBSSxFQUFJTyxFQUFTLENBTW5DLE9BSklNLFdB
QVVOLE9BQVMsSUFDckJILEVBQU9GLEVBQUlHLEVBQU9BLEVBQUtDLEdBQVNBLEdBQ2hDQSxHQUFT
TixHQUVKQyxFQUFTQyxFQUFLQyxFQUFVQyxFQUFNQyxFQUFNQyxFQUFPQyxJQStadEQsUUFBU08s
R0FBMkJkLEdBQ2xDLE1BQU8sVUFBU2UsRUFBT0MsRUFBV1AsR0FDaENPLEVBQVlDLEVBQUdELEVB
QVdQLEVBRzFCLEtBRkEsR0FBSUYsR0FBU1csRUFBVUgsR0FDbkJULEVBQVFOLEVBQU0sRUFBSSxF
QUFJTyxFQUFTLEVBQzVCRCxHQUFTLEdBQWFDLEVBQVJELEVBQWdCQSxHQUFTTixFQUM1QyxHQUFJ
Z0IsRUFBVUQsRUFBTVQsR0FBUUEsRUFBT1MsR0FBUSxNQUFPVCxFQUVwRCxRQUFRLEdBc0JaLFFB
QVNhLEdBQWtCbkIsRUFBS29CLEVBQWVDLEdBQzdDLE1BQU8sVUFBU04sRUFBT08sRUFBTUMsR0FD
M0IsR0FBSUMsR0FBSSxFQUFHakIsRUFBU1csRUFBVUgsRUFDOUIsSUFBa0IsZ0JBQVBRLEdBQ0x2
QixFQUFNLEVBQ053QixFQUFJRCxHQUFPLEVBQUlBLEVBQU1FLEtBQUtDLElBQUlILEVBQU1oQixF
QUFRaUIsR0FFNUNqQixFQUFTZ0IsR0FBTyxFQUFJRSxLQUFLRSxJQUFJSixFQUFNLEVBQUdoQixH
QUFVZ0IsRUFBTWhCLEVBQVMsTUFFOUQsSUFBSWMsR0FBZUUsR0FBT2hCLEVBRS9CLE1BREFnQixH
QUFNRixFQUFZTixFQUFPTyxHQUNsQlAsRUFBTVEsS0FBU0QsRUFBT0MsR0FBTyxDQUV0QyxJQUFJ
RCxJQUFTQSxFQUVYLE1BREFDLEdBQU1ILEVBQWNRLEVBQU1DLEtBQUtkLEVBQU9TLEVBQUdqQixH
QUFTSyxFQUFFa0IsT0FDN0NQLEdBQU8sRUFBSUEsRUFBTUMsR0FBSyxDQUUvQixLQUFLRCxFQUFN
dkIsRUFBTSxFQUFJd0IsRUFBSWpCLEVBQVMsRUFBR2dCLEdBQU8sR0FBV2hCLEVBQU5nQixFQUFj
QSxHQUFPdkIsRUFDcEUsR0FBSWUsRUFBTVEsS0FBU0QsRUFBTSxNQUFPQyxFQUVsQyxRQUFRLEdB
cVBaLFFBQVNRLEdBQW9CN0IsRUFBS0csR0FDaEMsR0FBSTJCLEdBQWFDLEVBQW1CMUIsT0FDaEMy
QixFQUFjaEMsRUFBSWdDLFlBQ2xCQyxFQUFTdkIsRUFBRXdCLFdBQVdGLElBQWdCQSxFQUFZRyxX
QUFjQyxFQUdoRUMsRUFBTyxhQUdYLEtBRkkzQixFQUFFNEIsSUFBSXRDLEVBQUtxQyxLQUFVM0Is
RUFBRTZCLFNBQVNwQyxFQUFNa0MsSUFBT2xDLEVBQUtxQyxLQUFLSCxHQUVwRFAsS0FDTE8sRUFB
T04sRUFBbUJELEdBQ3RCTyxJQUFRckMsSUFBT0EsRUFBSXFDLEtBQVVKLEVBQU1JLEtBQVUzQixF
QUFFNkIsU0FBU3BDLEVBQU1rQyxJQUNoRWxDLEVBQUtxQyxLQUFLSCxHQTc0QmhCLEdBQUlJLEdB
QU9DLEtBR1BDLEVBQXFCRixFQUFLL0IsRUFHMUJrQyxFQUFhQyxNQUFNVixVQUFXQyxFQUFXVSxP
QUFPWCxVQUFXWSxFQUFZQyxTQUFTYixVQUlsRkssRUFBbUJJLEVBQVdKLEtBQzlCZCxFQUFtQmtC
LEVBQVdsQixNQUM5QnVCLEVBQW1CYixFQUFTYSxTQUM1QkMsRUFBbUJkLEVBQVNjLGVBSzVCQyxF
QUFxQk4sTUFBTU8sUUFDM0JDLEVBQXFCUCxPQUFPM0MsS0FDNUJtRCxFQUFxQlAsRUFBVVEsS0FD
L0JDLEVBQXFCVixPQUFPVyxPQUcxQkMsRUFBTyxhQUdQaEQsRUFBSSxTQUFTVixHQUNmLE1BQUlB
LGFBQWVVLEdBQVVWLEVBQ3ZCMEMsZUFBZ0JoQyxRQUN0QmdDLEtBQUtpQixTQUFXM0QsR0FEaUIs
R0FBSVUsR0FBRVYsR0FPbEIsb0JBQVo0RCxVQUNhLG1CQUFYQyxTQUEwQkEsT0FBT0QsVUFDMUNB
LFFBQVVDLE9BQU9ELFFBQVVsRCxHQUU3QmtELFFBQVFsRCxFQUFJQSxHQUVaK0IsRUFBSy9CLEVB
QUlBLEVBSVhBLEVBQUVvRCxRQUFVLE9BS1osSUFBSXRELEdBQWEsU0FBU3VELEVBQU14RCxFQUFT
eUQsR0FDdkMsR0FBSXpELFFBQWlCLEdBQUcsTUFBT3dELEVBQy9CLFFBQW9CLE1BQVpDLEVBQW1C
LEVBQUlBLEdBQzdCLElBQUssR0FBRyxNQUFPLFVBQVNDLEdBQ3RCLE1BQU9GLEdBQUtwQyxLQUFL
cEIsRUFBUzBELEdBRTVCLEtBQUssR0FBRyxNQUFPLFVBQVNBLEVBQU9DLEdBQzdCLE1BQU9ILEdB
QUtwQyxLQUFLcEIsRUFBUzBELEVBQU9DLEdBRW5DLEtBQUssR0FBRyxNQUFPLFVBQVNELEVBQU83
RCxFQUFPK0QsR0FDcEMsTUFBT0osR0FBS3BDLEtBQUtwQixFQUFTMEQsRUFBTzdELEVBQU8rRCxH
QUUxQyxLQUFLLEdBQUcsTUFBTyxVQUFTQyxFQUFhSCxFQUFPN0QsRUFBTytELEdBQ2pELE1BQU9K
LEdBQUtwQyxLQUFLcEIsRUFBUzZELEVBQWFILEVBQU83RCxFQUFPK0QsSUFHekQsTUFBTyxZQUNM
LE1BQU9KLEdBQUtNLE1BQU05RCxFQUFTSSxhQU8zQkksRUFBSyxTQUFTa0QsRUFBTzFELEVBQVN5
RCxHQUNoQyxNQUFhLE9BQVRDLEVBQXNCdkQsRUFBRTRELFNBQ3hCNUQsRUFBRXdCLFdBQVcrQixH
QUFlekQsRUFBV3lELEVBQU8xRCxFQUFTeUQsR0FDdkR0RCxFQUFFNkQsU0FBU04sR0FBZXZELEVB
QUU4RCxRQUFRUCxHQUNqQ3ZELEVBQUUrRCxTQUFTUixHQUVwQnZELEdBQUVULFNBQVcsU0FBU2dF
LEVBQU8xRCxHQUMzQixNQUFPUSxHQUFHa0QsRUFBTzFELEVBQVNtRSxLQUk1QixJQUFJQyxHQUFp
QixTQUFTQyxFQUFVQyxHQUN0QyxNQUFPLFVBQVM3RSxHQUNkLEdBQUlLLEdBQVNNLFVBQVVOLE1B
Q3ZCLElBQWEsRUFBVEEsR0FBcUIsTUFBUEwsRUFBYSxNQUFPQSxFQUN0QyxLQUFLLEdBQUlJLEdB
QVEsRUFBV0MsRUFBUkQsRUFBZ0JBLElBSWxDLElBQUssR0FIRDBFLEdBQVNuRSxVQUFVUCxHQUNu
QkQsRUFBT3lFLEVBQVNFLEdBQ2hCQyxFQUFJNUUsRUFBS0UsT0FDSmlCLEVBQUksRUFBT3lELEVB
QUp6RCxFQUFPQSxJQUFLLENBQzFCLEdBQUkwRCxHQUFNN0UsRUFBS21CLEVBQ1Z1RCxJQUFpQjdF
LEVBQUlnRixTQUFjLEtBQUdoRixFQUFJZ0YsR0FBT0YsRUFBT0UsSUFHakUsTUFBT2hGLEtBS1Bp
RixFQUFhLFNBQVM5QyxHQUN4QixJQUFLekIsRUFBRTZELFNBQVNwQyxHQUFZLFFBQzVCLElBQUlx
QixFQUFjLE1BQU9BLEdBQWFyQixFQUN0Q3VCLEdBQUt2QixVQUFZQSxDQUNqQixJQUFJK0MsR0FB
UyxHQUFJeEIsRUFFakIsT0FEQUEsR0FBS3ZCLFVBQVksS0FDVitDLEdBR0xULEVBQVcsU0FBU08s
R0FDdEIsTUFBTyxVQUFTaEYsR0FDZCxNQUFjLE9BQVBBLE1BQW1CLEdBQUlBLEVBQUlnRixLQVFs
Q0csRUFBa0I1RCxLQUFLNkQsSUFBSSxFQUFHLElBQU0sRUFDcENwRSxFQUFZeUQsRUFBUyxVQUNy
QmhFLEVBQWMsU0FBUzBELEdBQ3pCLEdBQUk5RCxHQUFTVyxFQUFVbUQsRUFDdkIsT0FBd0IsZ0JB
QVY5RCxJQUFzQkEsR0FBVSxHQUFlOEUsR0FBVjlFLEVBU3JESyxHQUFFMkUsS0FBTzNFLEVBQUU0
RSxRQUFVLFNBQVN0RixFQUFLQyxFQUFVTSxHQUMzQ04sRUFBV08sRUFBV1AsRUFBVU0sRUFDaEMs
SUFBSWUsR0FBR2pCLENBQ1AsSUFBSUksRUFBWVQsR0FDZCxJQUFLc0IsRUFBSSxFQUFHakIsRUFB
U0wsRUFBSUssT0FBWUEsRUFBSmlCLEVBQVlBLElBQzNDckIsRUFBU0QsRUFBSXNCLEdBQUlBLEVB
QUd0QixPQUVqQixDQUNMLEdBQUlHLEdBQU9PLEVBQUVQLEtBQUtILEVBQ2xCLEtBQUtzQixFQUFJ
LEVBQUdqQixFQUFTRixFQUFLRSxPQUFZQSxFQUFKaUIsRUFBWUEsSUFDNUNyQixFQUFTRCxFQUFJ
RyxFQUFLbUIsSUFBS25CLEVBQUttQixHQUFJdEIsR0FHcEMsTUFBT0EsSUFJVFUsRUFBRTZFLElB
QU03RSxFQUFFOEUsUUFBVSxTQUFTeEYsRUFBS0MsRUFBVU0sR0FDMUNOLEVBQVdjLEVBQUdkLEVB
QVVNLEVBSXhCLEtBQUssR0FIREosSUFBUU0sRUFBWVQsSUFBUVUsRUFBRVAsS0FBS0gsR0FDbkNL
LEdBQVVGLEdBQVFILEdBQUtLLE9BQ3ZCb0YsRUFBVTVDLE1BQU14QyxHQUNYRCxFQUFRLEVBQVdD
LEVBQVJELEVBQWdCQSxJQUFTLENBQzNDLEdBQUlFLEdBQWFILEVBQU9BLEVBQUtDLEdBQVNBLENB
Q3RDcUYsR0FBUXJGLEdBQVNILEVBQVNELEVBQUlNLEdBQWFBLEVBQVlOLEdBRXpELE1BQU95RixJ
QStCVC9FLEVBQUVnRixPQUFTaEYsRUFBRWlGLE1BQVFqRixFQUFFa0YsT0FBUy9GLEVBQWEsR0FH
N0NhLEVBQUVtRixZQUFjbkYsRUFBRW9GLE1BQVFqRyxHQUFjLEdBR3hDYSxFQUFFcUYsS0FBT3JG
LEVBQUVzRixPQUFTLFNBQVNoRyxFQUFLYyxFQUFXUCxHQUMzQyxHQUFJeUUsRUFNSixPQUpFQSxH
QURFdkUsRUFBWVQsR0FDUlUsRUFBRXVGLFVBQVVqRyxFQUFLYyxFQUFXUCxHQUU1QkcsRUFBRXdG
LFFBQVFsRyxFQUFLYyxFQUFXUCxHQUU5QnlFLFFBQWEsSUFBS0EsS0FBUyxFQUFVaEYsRUFBSWdG
LEdBQTdDLFFBS0Z0RSxFQUFFeUYsT0FBU3pGLEVBQUUwRixPQUFTLFNBQVNwRyxFQUFLYyxFQUFX
UCxHQUM3QyxHQUFJa0YsS0FLSixPQUpBM0UsR0FBWUMsRUFBR0QsRUFBV1AsR0FDMUJHLEVBQUUy
RSxLQUFLckYsRUFBSyxTQUFTaUUsRUFBTzdELEVBQU9pRyxHQUM3QnZGLEVBQVVtRCxFQUFPN0Qs
RUFBT2lHLElBQU9aLEVBQVFqRCxLQUFLeUIsS0FFM0N3QixHQUlUL0UsRUFBRTRGLE9BQVMsU0FB
U3RHLEVBQUtjLEVBQVdQLEdBQ2xDLE1BQU9HLEdBQUV5RixPQUFPbkcsRUFBS1UsRUFBRTZGLE9B
QU94RixFQUFHRCxJQUFhUCxJQUtoREcsRUFBRThGLE1BQVE5RixFQUFFK0YsSUFBTSxTQUFTekcs
RUFBS2MsRUFBV1AsR0FDekNPLEVBQVlDLEVBQUdELEVBQVdQLEVBRzFCLEtBQUssR0FGREosSUFB
UU0sRUFBWVQsSUFBUVUsRUFBRVAsS0FBS0gsR0FDbkNLLEdBQVVGLEdBQVFILEdBQUtLLE9BQ2xC
RCxFQUFRLEVBQVdDLEVBQVJELEVBQWdCQSxJQUFTLENBQzNDLEdBQUlFLEdBQWFILEVBQU9BLEVB
QUtDLEdBQVNBLENBQ3RDLEtBQUtVLEVBQVVkLEVBQUlNLEdBQWFBLEVBQVlOLEdBQU0sT0FBTyxF
QUUzRCxPQUFPLEdBS1RVLEVBQUVnRyxLQUFPaEcsRUFBRWlHLElBQU0sU0FBUzNHLEVBQUtjLEVB
QVdQLEdBQ3hDTyxFQUFZQyxFQUFHRCxFQUFXUCxFQUcxQixLQUFLLEdBRkRKLElBQVFNLEVBQVlU
LElBQVFVLEVBQUVQLEtBQUtILEdBQ25DSyxHQUFVRixHQUFRSCxHQUFLSyxPQUNsQkQsRUFBUSxF
QUFXQyxFQUFSRCxFQUFnQkEsSUFBUyxDQUMzQyxHQUFJRSxHQUFhSCxFQUFPQSxFQUFLQyxHQUFT
QSxDQUN0QyxJQUFJVSxFQUFVZCxFQUFJTSxHQUFhQSxFQUFZTixHQUFNLE9BQU8sRUFFMUQsT0FB
TyxHQUtUVSxFQUFFNkIsU0FBVzdCLEVBQUVrRyxTQUFXbEcsRUFBRW1HLFFBQVUsU0FBUzdHLEVB
QUtvQixFQUFNMEYsRUFBV0MsR0FHbkUsTUFGS3RHLEdBQVlULEtBQU1BLEVBQU1VLEVBQUVzRyxP
QUFPaEgsS0FDZCxnQkFBYjhHLElBQXlCQyxLQUFPRCxFQUFZLEdBQ2hEcEcsRUFBRXVHLFFBQVFq
SCxFQUFLb0IsRUFBTTBGLElBQWMsR0FJNUNwRyxFQUFFd0csT0FBUyxTQUFTbEgsRUFBS21ILEdB
Q3ZCLEdBQUlDLEdBQU8xRixFQUFNQyxLQUFLaEIsVUFBVyxHQUM3QjBHLEVBQVMzRyxFQUFFd0Is
V0FBV2lGLEVBQzFCLE9BQU96RyxHQUFFNkUsSUFBSXZGLEVBQUssU0FBU2lFLEdBQ3pCLEdBQUlG
LEdBQU9zRCxFQUFTRixFQUFTbEQsRUFBTWtELEVBQ25DLE9BQWUsT0FBUnBELEVBQWVBLEVBQU9B
LEVBQUtNLE1BQU1KLEVBQU9tRCxNQUtuRDFHLEVBQUU0RyxNQUFRLFNBQVN0SCxFQUFLZ0YsR0FD
dEIsTUFBT3RFLEdBQUU2RSxJQUFJdkYsRUFBS1UsRUFBRStELFNBQVNPLEtBSy9CdEUsRUFBRTZH
LE1BQVEsU0FBU3ZILEVBQUt3SCxHQUN0QixNQUFPOUcsR0FBRXlGLE9BQU9uRyxFQUFLVSxFQUFF
OEQsUUFBUWdELEtBS2pDOUcsRUFBRStHLFVBQVksU0FBU3pILEVBQUt3SCxHQUMxQixNQUFPOUcs
R0FBRXFGLEtBQUsvRixFQUFLVSxFQUFFOEQsUUFBUWdELEtBSS9COUcsRUFBRWMsSUFBTSxTQUFT
eEIsRUFBS0MsRUFBVU0sR0FDOUIsR0FDSTBELEdBQU95RCxFQURQeEMsR0FBVVIsSUFBVWlELEdB
QWdCakQsR0FFeEMsSUFBZ0IsTUFBWnpFLEdBQTJCLE1BQVBELEVBQWEsQ0FDbkNBLEVBQU1TLEVB
QVlULEdBQU9BLEVBQU1VLEVBQUVzRyxPQUFPaEgsRUFDeEMsS0FBSyxHQUFJc0IsR0FBSSxFQUFH
akIsRUFBU0wsRUFBSUssT0FBWUEsRUFBSmlCLEVBQVlBLElBQy9DMkMsRUFBUWpFLEVBQUlzQixH
QUNSMkMsRUFBUWlCLElBQ1ZBLEVBQVNqQixPQUliaEUsR0FBV2MsRUFBR2QsRUFBVU0sR0FDeEJH
LEVBQUUyRSxLQUFLckYsRUFBSyxTQUFTaUUsRUFBTzdELEVBQU9pRyxHQUNqQ3FCLEVBQVd6SCxF
QUFTZ0UsRUFBTzdELEVBQU9pRyxJQUM5QnFCLEVBQVdDLEdBQWdCRCxLQUFjaEQsS0FBWVEsS0FB
WVIsT0FDbkVRLEVBQVNqQixFQUNUMEQsRUFBZUQsSUFJckIsT0FBT3hDLElBSVR4RSxFQUFFZSxJ
QUFNLFNBQVN6QixFQUFLQyxFQUFVTSxHQUM5QixHQUNJMEQsR0FBT3lELEVBRFB4QyxFQUFTUixJ
QUFVaUQsRUFBZWpELEdBRXRDLElBQWdCLE1BQVp6RSxHQUEyQixNQUFQRCxFQUFhLENBQ25DQSxF
QUFNUyxFQUFZVCxHQUFPQSxFQUFNVSxFQUFFc0csT0FBT2hILEVBQ3hDLEtBQUssR0FBSXNCLEdB
QUksRUFBR2pCLEVBQVNMLEVBQUlLLE9BQVlBLEVBQUppQixFQUFZQSxJQUMvQzJDLEVBQVFqRSxF
QUFJc0IsR0FDQTRELEVBQVJqQixJQUNGaUIsRUFBU2pCLE9BSWJoRSxHQUFXYyxFQUFHZCxFQUFV
TSxHQUN4QkcsRUFBRTJFLEtBQUtyRixFQUFLLFNBQVNpRSxFQUFPN0QsRUFBT2lHLEdBQ2pDcUIs
RUFBV3pILEVBQVNnRSxFQUFPN0QsRUFBT2lHLElBQ25Cc0IsRUFBWEQsR0FBd0NoRCxNQUFiZ0Qs
R0FBb0NoRCxNQUFYUSxLQUN0REEsRUFBU2pCLEVBQ1QwRCxFQUFlRCxJQUlyQixPQUFPeEMsSUFL
VHhFLEVBQUVrSCxRQUFVLFNBQVM1SCxHQUluQixJQUFLLEdBQWU2SCxHQUhoQkMsRUFBTXJILEVB
QVlULEdBQU9BLEVBQU1VLEVBQUVzRyxPQUFPaEgsR0FDeENLLEVBQVN5SCxFQUFJekgsT0FDYjBI
LEVBQVdsRixNQUFNeEMsR0FDWkQsRUFBUSxFQUFpQkMsRUFBUkQsRUFBZ0JBLElBQ3hDeUgsRUFB
T25ILEVBQUVzSCxPQUFPLEVBQUc1SCxHQUNmeUgsSUFBU3pILElBQU8ySCxFQUFTM0gsR0FBUzJI
LEVBQVNGLElBQy9DRSxFQUFTRixHQUFRQyxFQUFJMUgsRUFFdkIsT0FBTzJILElBTVRySCxFQUFF
dUgsT0FBUyxTQUFTakksRUFBS2tJLEVBQUduQixHQUMxQixNQUFTLE9BQUxtQixHQUFhbkIsR0FD
VnRHLEVBQVlULEtBQU1BLEVBQU1VLEVBQUVzRyxPQUFPaEgsSUFDL0JBLEVBQUlVLEVBQUVzSCxP
QUFPaEksRUFBSUssT0FBUyxLQUU1QkssRUFBRWtILFFBQVE1SCxHQUFLMEIsTUFBTSxFQUFHSCxL
QUFLQyxJQUFJLEVBQUcwRyxLQUk3Q3hILEVBQUV5SCxPQUFTLFNBQVNuSSxFQUFLQyxFQUFVTSxH
QUVqQyxNQURBTixHQUFXYyxFQUFHZCxFQUFVTSxHQUNqQkcsRUFBRTRHLE1BQU01RyxFQUFFNkUs
SUFBSXZGLEVBQUssU0FBU2lFLEVBQU83RCxFQUFPaUcsR0FDL0MsT0FDRXBDLE1BQU9BLEVBQ1A3
RCxNQUFPQSxFQUNQZ0ksU0FBVW5JLEVBQVNnRSxFQUFPN0QsRUFBT2lHLE1BRWxDZ0MsS0FBSyxT
QUFTQyxFQUFNQyxHQUNyQixHQUFJQyxHQUFJRixFQUFLRixTQUNUSyxFQUFJRixFQUFNSCxRQUNk
LElBQUlJLElBQU1DLEVBQUcsQ0FDWCxHQUFJRCxFQUFJQyxHQUFLRCxRQUFXLEdBQUcsTUFBTyxF
QUNsQyxJQUFRQyxFQUFKRCxHQUFTQyxRQUFXLEdBQUcsT0FBUSxFQUVyQyxNQUFPSCxHQUFLbEks
TUFBUW1JLEVBQU1uSSxRQUN4QixTQUlOLElBQUlzSSxHQUFRLFNBQVNDLEdBQ25CLE1BQU8sVUFB
UzNJLEVBQUtDLEVBQVVNLEdBQzdCLEdBQUkyRSxLQU1KLE9BTEFqRixHQUFXYyxFQUFHZCxFQUFV
TSxHQUN4QkcsRUFBRTJFLEtBQUtyRixFQUFLLFNBQVNpRSxFQUFPN0QsR0FDMUIsR0FBSTRFLEdB
QU0vRSxFQUFTZ0UsRUFBTzdELEVBQU9KLEVBQ2pDMkksR0FBU3pELEVBQVFqQixFQUFPZSxLQUVu
QkUsR0FNWHhFLEdBQUVrSSxRQUFVRixFQUFNLFNBQVN4RCxFQUFRakIsRUFBT2UsR0FDcEN0RSxF
QUFFNEIsSUFBSTRDLEVBQVFGLEdBQU1FLEVBQU9GLEdBQUt4QyxLQUFLeUIsR0FBYWlCLEVBQU9G
LElBQVFmLEtBS3ZFdkQsRUFBRW1JLFFBQVVILEVBQU0sU0FBU3hELEVBQVFqQixFQUFPZSxHQUN4
Q0UsRUFBT0YsR0FBT2YsSUFNaEJ2RCxFQUFFb0ksUUFBVUosRUFBTSxTQUFTeEQsRUFBUWpCLEVB
QU9lLEdBQ3BDdEUsRUFBRTRCLElBQUk0QyxFQUFRRixHQUFNRSxFQUFPRixLQUFhRSxFQUFPRixH
QUFPLElBSTVEdEUsRUFBRXFJLFFBQVUsU0FBUy9JLEdBQ25CLE1BQUtBLEdBQ0RVLEVBQUUwQyxR
QUFRcEQsR0FBYTBCLEVBQU1DLEtBQUszQixHQUNsQ1MsRUFBWVQsR0FBYVUsRUFBRTZFLElBQUl2
RixFQUFLVSxFQUFFNEQsVUFDbkM1RCxFQUFFc0csT0FBT2hILE9BSWxCVSxFQUFFc0ksS0FBTyxT
QUFTaEosR0FDaEIsTUFBVyxPQUFQQSxFQUFvQixFQUNqQlMsRUFBWVQsR0FBT0EsRUFBSUssT0FB
U0ssRUFBRVAsS0FBS0gsR0FBS0ssUUFLckRLLEVBQUV1SSxVQUFZLFNBQVNqSixFQUFLYyxFQUFX
UCxHQUNyQ08sRUFBWUMsRUFBR0QsRUFBV1AsRUFDMUIsSUFBSTJJLE1BQVdDLElBSWYsT0FIQXpJ
LEdBQUUyRSxLQUFLckYsRUFBSyxTQUFTaUUsRUFBT2UsRUFBS2hGLElBQzlCYyxFQUFVbUQsRUFB
T2UsRUFBS2hGLEdBQU9rSixFQUFPQyxHQUFNM0csS0FBS3lCLE1BRTFDaUYsRUFBTUMsSUFTaEJ6
SSxFQUFFMEksTUFBUTFJLEVBQUUySSxLQUFPM0ksRUFBRTRJLEtBQU8sU0FBU3pJLEVBQU9xSCxF
QUFHbkIsR0FDN0MsTUFBYSxPQUFUbEcsTUFBMkIsR0FDdEIsTUFBTHFILEdBQWFuQixFQUFjbEcs
RUFBTSxHQUM5QkgsRUFBRTZJLFFBQVExSSxFQUFPQSxFQUFNUixPQUFTNkgsSUFNekN4SCxFQUFF
NkksUUFBVSxTQUFTMUksRUFBT3FILEVBQUduQixHQUM3QixNQUFPckYsR0FBTUMsS0FBS2QsRUFB
TyxFQUFHVSxLQUFLQyxJQUFJLEVBQUdYLEVBQU1SLFFBQWUsTUFBTDZILEdBQWFuQixFQUFRLEVB
QUltQixNQUtuRnhILEVBQUU4SSxLQUFPLFNBQVMzSSxFQUFPcUgsRUFBR25CLEdBQzFCLE1BQWEs
T0FBVGxHLE1BQTJCLEdBQ3RCLE1BQUxxSCxHQUFhbkIsRUFBY2xHLEVBQU1BLEVBQU1SLE9BQVMs
R0FDN0NLLEVBQUUrSSxLQUFLNUksRUFBT1UsS0FBS0MsSUFBSSxFQUFHWCxFQUFNUixPQUFTNkgs
S0FNbER4SCxFQUFFK0ksS0FBTy9JLEVBQUVnSixLQUFPaEosRUFBRWlKLEtBQU8sU0FBUzlJLEVB
QU9xSCxFQUFHbkIsR0FDNUMsTUFBT3JGLEdBQU1DLEtBQUtkLEVBQVksTUFBTHFILEdBQWFuQixF
QUFRLEVBQUltQixJQUlwRHhILEVBQUVrSixRQUFVLFNBQVMvSSxHQUNuQixNQUFPSCxHQUFFeUYs
T0FBT3RGLEVBQU9ILEVBQUU0RCxVQUkzQixJQUFJdUYsR0FBVSxTQUFTQyxFQUFPQyxFQUFTQyxF
QUFRQyxHQUU3QyxJQUFLLEdBRERDLE1BQWE3SSxFQUFNLEVBQ2RDLEVBQUkySSxHQUFjLEVBQUc1
SixFQUFTVyxFQUFVOEksR0FBWXpKLEVBQUppQixFQUFZQSxJQUFLLENBQ3hFLEdBQUkyQyxHQUFR
NkYsRUFBTXhJLEVBQ2xCLElBQUliLEVBQVl3RCxLQUFXdkQsRUFBRTBDLFFBQVFhLElBQVV2RCxF
QUFFeUosWUFBWWxHLElBQVMsQ0FFL0Q4RixJQUFTOUYsRUFBUTRGLEVBQVE1RixFQUFPOEYsRUFB
U0MsR0FDOUMsSUFBSUksR0FBSSxFQUFHQyxFQUFNcEcsRUFBTTVELE1BRXZCLEtBREE2SixFQUFP
N0osUUFBVWdLLEVBQ05BLEVBQUpELEdBQ0xGLEVBQU83SSxLQUFTNEMsRUFBTW1HLFNBRWRKLEtB
Q1ZFLEVBQU83SSxLQUFTNEMsR0FHcEIsTUFBT2lHLEdBSVR4SixHQUFFbUosUUFBVSxTQUFTaEos
RUFBT2tKLEdBQzFCLE1BQU9GLEdBQVFoSixFQUFPa0osR0FBUyxJQUlqQ3JKLEVBQUU0SixRQUFV
LFNBQVN6SixHQUNuQixNQUFPSCxHQUFFNkosV0FBVzFKLEVBQU9hLEVBQU1DLEtBQUtoQixVQUFX
LEtBTW5ERCxFQUFFOEosS0FBTzlKLEVBQUUrSixPQUFTLFNBQVM1SixFQUFPNkosRUFBVXpLLEVB
QVVNLEdBQ2pERyxFQUFFaUssVUFBVUQsS0FDZm5LLEVBQVVOLEVBQ1ZBLEVBQVd5SyxFQUNYQSxH
QUFXLEdBRUcsTUFBWnpLLElBQWtCQSxFQUFXYyxFQUFHZCxFQUFVTSxHQUc5QyxLQUFLLEdBRkQy
RSxNQUNBMEYsS0FDS3RKLEVBQUksRUFBR2pCLEVBQVNXLEVBQVVILEdBQVlSLEVBQUppQixFQUFZ
QSxJQUFLLENBQzFELEdBQUkyQyxHQUFRcEQsRUFBTVMsR0FDZG9HLEVBQVd6SCxFQUFXQSxFQUFT
Z0UsRUFBTzNDLEVBQUdULEdBQVNvRCxDQUNsRHlHLElBQ0dwSixHQUFLc0osSUFBU2xELEdBQVV4
QyxFQUFPMUMsS0FBS3lCLEdBQ3pDMkcsRUFBT2xELEdBQ0V6SCxFQUNKUyxFQUFFNkIsU0FBU3FJ
LEVBQU1sRCxLQUNwQmtELEVBQUtwSSxLQUFLa0YsR0FDVnhDLEVBQU8xQyxLQUFLeUIsSUFFSnZE
LEVBQUU2QixTQUFTMkMsRUFBUWpCLElBQzdCaUIsRUFBTzFDLEtBQUt5QixHQUdoQixNQUFPaUIs
SUFLVHhFLEVBQUVtSyxNQUFRLFdBQ1IsTUFBT25LLEdBQUU4SixLQUFLWCxFQUFRbEosV0FBVyxH
QUFNLEtBS3pDRCxFQUFFb0ssYUFBZSxTQUFTakssR0FHeEIsSUFBSyxHQUZEcUUsTUFDQTZGLEVB
QWFwSyxVQUFVTixPQUNsQmlCLEVBQUksRUFBR2pCLEVBQVNXLEVBQVVILEdBQVlSLEVBQUppQixF
QUFZQSxJQUFLLENBQzFELEdBQUlGLEdBQU9QLEVBQU1TLEVBQ2pCLEtBQUlaLEVBQUU2QixTQUFT
MkMsRUFBUTlELEdBQXZCLENBQ0EsSUFBSyxHQUFJZ0osR0FBSSxFQUFPVyxFQUFKWCxHQUNUMUos
RUFBRTZCLFNBQVM1QixVQUFVeUosR0FBSWhKLEdBREFnSixLQUc1QkEsSUFBTVcsR0FBWTdGLEVB
QU8xQyxLQUFLcEIsSUFFcEMsTUFBTzhELElBS1R4RSxFQUFFNkosV0FBYSxTQUFTMUosR0FDdEIs
R0FBSTRJLEdBQU9JLEVBQVFsSixXQUFXLEdBQU0sRUFBTSxFQUMxQyxPQUFPRCxHQUFFeUYsT0FB
T3RGLEVBQU8sU0FBU29ELEdBQzlCLE9BQVF2RCxFQUFFNkIsU0FBU2tILEVBQU14RixNQU03QnZE
LEVBQUVzSyxJQUFNLFdBQ04sTUFBT3RLLEdBQUV1SyxNQUFNdEssWUFLakJELEVBQUV1SyxNQUFR
LFNBQVNwSyxHQUlqQixJQUFLLEdBSERSLEdBQVNRLEdBQVNILEVBQUVjLElBQUlYLEVBQU9HLEdB
QVdYLFFBQVUsRUFDcEQ2RSxFQUFTckMsTUFBTXhDLEdBRVZELEVBQVEsRUFBV0MsRUFBUkQsRUFB
Z0JBLElBQ2xDOEUsRUFBTzlFLEdBQVNNLEVBQUU0RyxNQUFNekcsRUFBT1QsRUFFakMsT0FBTzhF
LElBTVR4RSxFQUFFd0ssT0FBUyxTQUFTN0UsRUFBTVcsR0FFeEIsSUFBSyxHQUREOUIsTUFDSzVE
LEVBQUksRUFBR2pCLEVBQVNXLEVBQVVxRixHQUFXaEcsRUFBSmlCLEVBQVlBLElBQ2hEMEYsRUFD
RjlCLEVBQU9tQixFQUFLL0UsSUFBTTBGLEVBQU8xRixHQUV6QjRELEVBQU9tQixFQUFLL0UsR0FB
RyxJQUFNK0UsRUFBSy9FLEdBQUcsRUFHakMsT0FBTzRELElBaUJUeEUsRUFBRXVGLFVBQVlyRixF
QUEyQixHQUN6Q0YsRUFBRXlLLGNBQWdCdkssR0FBNEIsR0FJOUNGLEVBQUVTLFlBQWMsU0FBU04s
RUFBT2IsRUFBS0MsRUFBVU0sR0FDN0NOLEVBQVdjLEVBQUdkLEVBQVVNLEVBQVMsRUFHakMsS0FG
QSxHQUFJMEQsR0FBUWhFLEVBQVNELEdBQ2pCb0wsRUFBTSxFQUFHQyxFQUFPckssRUFBVUgsR0FD
akJ3SyxFQUFORCxHQUFZLENBQ2pCLEdBQUlFLEdBQU0vSixLQUFLZ0ssT0FBT0gsRUFBTUMsR0FB
USxFQUNoQ3BMLEdBQVNZLEVBQU15SyxJQUFRckgsRUFBT21ILEVBQU1FLEVBQU0sRUFBUUQsRUFB
T0MsRUFFL0QsTUFBT0YsSUFnQ1QxSyxFQUFFdUcsUUFBVWhHLEVBQWtCLEVBQUdQLEVBQUV1RixV
QUFXdkYsRUFBRVMsYUFDaERULEVBQUU4SyxZQUFjdkssR0FBbUIsRUFBR1AsRUFBRXlLLGVBS3hD
ekssRUFBRStLLE1BQVEsU0FBU0MsRUFBT0MsRUFBTUMsR0FDbEIsTUFBUkQsSUFDRkEsRUFBT0Qs
R0FBUyxFQUNoQkEsRUFBUSxHQUVWRSxFQUFPQSxHQUFRLENBS2YsS0FBSyxHQUhEdkwsR0FBU2tC
LEtBQUtDLElBQUlELEtBQUtzSyxNQUFNRixFQUFPRCxHQUFTRSxHQUFPLEdBQ3BESCxFQUFRNUks
TUFBTXhDLEdBRVRnQixFQUFNLEVBQVNoQixFQUFOZ0IsRUFBY0EsSUFBT3FLLEdBQVNFLEVBQzlD
SCxFQUFNcEssR0FBT3FLLENBR2YsT0FBT0QsR0FRVCxJQUFJSyxHQUFlLFNBQVNDLEVBQVlDLEVB
QVd6TCxFQUFTMEwsRUFBZ0I3RSxHQUMxRSxLQUFNNkUsWUFBMEJELElBQVksTUFBT0QsR0FBVzFI
LE1BQU05RCxFQUFTNkcsRUFDN0UsSUFBSThFLEdBQU9qSCxFQUFXOEcsRUFBVzVKLFdBQzdCK0Ms
RUFBUzZHLEVBQVcxSCxNQUFNNkgsRUFBTTlFLEVBQ3BDLE9BQUkxRyxHQUFFNkQsU0FBU1csR0FB
Z0JBLEVBQ3hCZ0gsRUFNVHhMLEdBQUU2QyxLQUFPLFNBQVNRLEVBQU14RCxHQUN0QixHQUFJK0Ms
R0FBY1MsRUFBS1IsT0FBU0QsRUFBWSxNQUFPQSxHQUFXZSxNQUFNTixFQUFNckMsRUFBTUMsS0FB
S2hCLFVBQVcsR0FDaEcsS0FBS0QsRUFBRXdCLFdBQVc2QixHQUFPLEtBQU0sSUFBSW9JLFdBQVUs
b0NBQzdDLElBQUkvRSxHQUFPMUYsRUFBTUMsS0FBS2hCLFVBQVcsR0FDN0J5TCxFQUFRLFdBQ1Ys
TUFBT04sR0FBYS9ILEVBQU1xSSxFQUFPN0wsRUFBU21DLEtBQU0wRSxFQUFLaUYsT0FBTzNLLEVB
QU1DLEtBQUtoQixhQUV6RSxPQUFPeUwsSUFNVDFMLEVBQUU0TCxRQUFVLFNBQVN2SSxHQUNuQixH
QUFJd0ksR0FBWTdLLEVBQU1DLEtBQUtoQixVQUFXLEdBQ2xDeUwsRUFBUSxXQUdWLElBQUssR0FG
REksR0FBVyxFQUFHbk0sRUFBU2tNLEVBQVVsTSxPQUNqQytHLEVBQU92RSxNQUFNeEMsR0FDUmlC
LEVBQUksRUFBT2pCLEVBQUppQixFQUFZQSxJQUMxQjhGLEVBQUs5RixHQUFLaUwsRUFBVWpMLEtB
QU9aLEVBQUlDLFVBQVU2TCxLQUFjRCxFQUFVakwsRUFFbkUsTUFBT2tMLEVBQVc3TCxVQUFVTixR
QUFRK0csRUFBSzVFLEtBQUs3QixVQUFVNkwsS0FDeEQsT0FBT1YsR0FBYS9ILEVBQU1xSSxFQUFP
MUosS0FBTUEsS0FBTTBFLEdBRS9DLE9BQU9nRixJQU1UMUwsRUFBRStMLFFBQVUsU0FBU3pNLEdB
Q25CLEdBQUlzQixHQUE4QjBELEVBQTNCM0UsRUFBU00sVUFBVU4sTUFDMUIsSUFBYyxHQUFWQSxF
QUFhLEtBQU0sSUFBSXFNLE9BQU0sd0NBQ2pDLEtBQUtwTCxFQUFJLEVBQU9qQixFQUFKaUIsRUFB
WUEsSUFDdEIwRCxFQUFNckUsVUFBVVcsR0FDaEJ0QixFQUFJZ0YsR0FBT3RFLEVBQUU2QyxLQUFL
dkQsRUFBSWdGLEdBQU1oRixFQUU5QixPQUFPQSxJQUlUVSxFQUFFaU0sUUFBVSxTQUFTNUksRUFB
TTZJLEdBQ3pCLEdBQUlELEdBQVUsU0FBUzNILEdBQ3JCLEdBQUk2SCxHQUFRRixFQUFRRSxNQUNo
QkMsRUFBVSxJQUFNRixFQUFTQSxFQUFPdkksTUFBTTNCLEtBQU0vQixXQUFhcUUsRUFFN0QsT0FE
S3RFLEdBQUU0QixJQUFJdUssRUFBT0MsS0FBVUQsRUFBTUMsR0FBVy9JLEVBQUtNLE1BQU0zQixL
QUFNL0IsWUFDdkRrTSxFQUFNQyxHQUdmLE9BREFILEdBQVFFLFNBQ0RGLEdBS1RqTSxFQUFFcU0s
TUFBUSxTQUFTaEosRUFBTWlKLEdBQ3ZCLEdBQUk1RixHQUFPMUYsRUFBTUMsS0FBS2hCLFVBQVcs
RUFDakMsT0FBT3NNLFlBQVcsV0FDaEIsTUFBT2xKLEdBQUtNLE1BQU0sS0FBTStDLElBQ3ZCNEYs
SUFLTHRNLEVBQUV3TSxNQUFReE0sRUFBRTRMLFFBQVE1TCxFQUFFcU0sTUFBT3JNLEVBQUcsR0FP
aENBLEVBQUV5TSxTQUFXLFNBQVNwSixFQUFNaUosRUFBTUksR0FDaEMsR0FBSTdNLEdBQVM2RyxF
QUFNbEMsRUFDZm1JLEVBQVUsS0FDVkMsRUFBVyxDQUNWRixLQUFTQSxLQUNkLElBQUlHLEdBQVEs
V0FDVkQsRUFBV0YsRUFBUUksV0FBWSxFQUFRLEVBQUk5TSxFQUFFK00sTUFDN0NKLEVBQVUsS0FD
Vm5JLEVBQVNuQixFQUFLTSxNQUFNOUQsRUFBUzZHLEdBQ3hCaUcsSUFBUzlNLEVBQVU2RyxFQUFP
LE1BRWpDLE9BQU8sWUFDTCxHQUFJcUcsR0FBTS9NLEVBQUUrTSxLQUNQSCxJQUFZRixFQUFRSSxX
QUFZLElBQU9GLEVBQVdHLEVBQ3ZELElBQUlDLEdBQVlWLEdBQVFTLEVBQU1ILEVBYzlCLE9BYkEv
TSxHQUFVbUMsS0FDVjBFLEVBQU96RyxVQUNVLEdBQWIrTSxHQUFrQkEsRUFBWVYsR0FDNUJLLElB
Q0ZNLGFBQWFOLEdBQ2JBLEVBQVUsTUFFWkMsRUFBV0csRUFDWHZJLEVBQVNuQixFQUFLTSxNQUFN
OUQsRUFBUzZHLEdBQ3hCaUcsSUFBUzlNLEVBQVU2RyxFQUFPLE9BQ3JCaUcsR0FBV0QsRUFBUVEs
WUFBYSxJQUMxQ1AsRUFBVUosV0FBV00sRUFBT0csSUFFdkJ4SSxJQVFYeEUsRUFBRW1OLFNBQVcs
U0FBUzlKLEVBQU1pSixFQUFNYyxHQUNoQyxHQUFJVCxHQUFTakcsRUFBTTdHLEVBQVN3TixFQUFX
N0ksRUFFbkNxSSxFQUFRLFdBQ1YsR0FBSS9ELEdBQU85SSxFQUFFK00sTUFBUU0sQ0FFVmYsR0FB
UHhELEdBQWVBLEdBQVEsRUFDekI2RCxFQUFVSixXQUFXTSxFQUFPUCxFQUFPeEQsSUFFbkM2RCxF
QUFVLEtBQ0xTLElBQ0g1SSxFQUFTbkIsRUFBS00sTUFBTTlELEVBQVM2RyxHQUN4QmlHLElBQVM5
TSxFQUFVNkcsRUFBTyxRQUtyQyxPQUFPLFlBQ0w3RyxFQUFVbUMsS0FDVjBFLEVBQU96RyxVQUNQ
b04sRUFBWXJOLEVBQUUrTSxLQUNkLElBQUlPLEdBQVVGLElBQWNULENBTzVCLE9BTktBLEtBQVNB
LEVBQVVKLFdBQVdNLEVBQU9QLElBQ3RDZ0IsSUFDRjlJLEVBQVNuQixFQUFLTSxNQUFNOUQsRUFB
UzZHLEdBQzdCN0csRUFBVTZHLEVBQU8sTUFHWmxDLElBT1h4RSxFQUFFdU4sS0FBTyxTQUFTbEss
RUFBTW1LLEdBQ3RCLE1BQU94TixHQUFFNEwsUUFBUTRCLEVBQVNuSyxJQUk1QnJELEVBQUU2RixP
QUFTLFNBQVN6RixHQUNsQixNQUFPLFlBQ0wsT0FBUUEsRUFBVXVELE1BQU0zQixLQUFNL0IsYUFN
bENELEVBQUV5TixRQUFVLFdBQ1YsR0FBSS9HLEdBQU96RyxVQUNQK0ssRUFBUXRFLEVBQUsvRyxP
QUFTLENBQzFCLE9BQU8sWUFHTCxJQUZBLEdBQUlpQixHQUFJb0ssRUFDSnhHLEVBQVNrQyxFQUFL
c0UsR0FBT3JILE1BQU0zQixLQUFNL0IsV0FDOUJXLEtBQUs0RCxFQUFTa0MsRUFBSzlGLEdBQUdL
LEtBQUtlLEtBQU13QyxFQUN4QyxPQUFPQSxLQUtYeEUsRUFBRTBOLE1BQVEsU0FBU0MsRUFBT3RL
LEdBQ3hCLE1BQU8sWUFDTCxRQUFNc0ssRUFBUSxFQUNMdEssRUFBS00sTUFBTTNCLEtBQU0vQixX
QUQxQixTQU9KRCxFQUFFNE4sT0FBUyxTQUFTRCxFQUFPdEssR0FDekIsR0FBSTdELEVBQ0osT0FB
TyxZQUtMLFFBSk1tTyxFQUFRLElBQ1puTyxFQUFPNkQsRUFBS00sTUFBTTNCLEtBQU0vQixZQUVi
LEdBQVQwTixJQUFZdEssRUFBTyxNQUNoQjdELElBTVhRLEVBQUU2TixLQUFPN04sRUFBRTRMLFFB
QVE1TCxFQUFFNE4sT0FBUSxFQU03QixJQUFJRSxLQUFldkwsU0FBVSxNQUFNd0wscUJBQXFCLFlB
Q3BEMU0sR0FBc0IsVUFBVyxnQkFBaUIsV0FDbEMsdUJBQXdCLGlCQUFrQixpQkFxQjlEckIsR0FB
RVAsS0FBTyxTQUFTSCxHQUNoQixJQUFLVSxFQUFFNkQsU0FBU3ZFLEdBQU0sUUFDdEIsSUFBSXFE
LEVBQVksTUFBT0EsR0FBV3JELEVBQ2xDLElBQUlHLEtBQ0osS0FBSyxHQUFJNkUsS0FBT2hGLEdB
QVNVLEVBQUU0QixJQUFJdEMsRUFBS2dGLElBQU03RSxFQUFLcUMsS0FBS3dDLEVBR3BELE9BREl3
SixJQUFZM00sRUFBb0I3QixFQUFLRyxHQUNsQ0EsR0FJVE8sRUFBRWdPLFFBQVUsU0FBUzFPLEdB
Q25CLElBQUtVLEVBQUU2RCxTQUFTdkUsR0FBTSxRQUN0QixJQUFJRyxLQUNKLEtBQUssR0FBSTZF
LEtBQU9oRixHQUFLRyxFQUFLcUMsS0FBS3dDLEVBRy9CLE9BREl3SixJQUFZM00sRUFBb0I3QixF
QUFLRyxHQUNsQ0EsR0FJVE8sRUFBRXNHLE9BQVMsU0FBU2hILEdBSWxCLElBQUssR0FIREcsR0FB
T08sRUFBRVAsS0FBS0gsR0FDZEssRUFBU0YsRUFBS0UsT0FDZDJHLEVBQVNuRSxNQUFNeEMsR0FD
VmlCLEVBQUksRUFBT2pCLEVBQUppQixFQUFZQSxJQUMxQjBGLEVBQU8xRixHQUFLdEIsRUFBSUcs
RUFBS21CLEdBRXZCLE9BQU8wRixJQUtUdEcsRUFBRWlPLFVBQVksU0FBUzNPLEVBQUtDLEVBQVVN
LEdBQ3BDTixFQUFXYyxFQUFHZCxFQUFVTSxFQUt0QixLQUFLLEdBRERELEdBSEZILEVBQVFPLEVB
QUVQLEtBQUtILEdBQ2JLLEVBQVNGLEVBQUtFLE9BQ2RvRixLQUVLckYsRUFBUSxFQUFXQyxFQUFS
RCxFQUFnQkEsSUFDbENFLEVBQWFILEVBQUtDLEdBQ2xCcUYsRUFBUW5GLEdBQWNMLEVBQVNELEVB
QUlNLEdBQWFBLEVBQVlOLEVBRTlELE9BQU95RixJQUlYL0UsRUFBRWtPLE1BQVEsU0FBUzVPLEdB
SWpCLElBQUssR0FIREcsR0FBT08sRUFBRVAsS0FBS0gsR0FDZEssRUFBU0YsRUFBS0UsT0FDZHVP
LEVBQVEvTCxNQUFNeEMsR0FDVGlCLEVBQUksRUFBT2pCLEVBQUppQixFQUFZQSxJQUMxQnNOLEVB
QU10TixJQUFNbkIsRUFBS21CLEdBQUl0QixFQUFJRyxFQUFLbUIsSUFFaEMsT0FBT3NOLElBSVRs
TyxFQUFFbU8sT0FBUyxTQUFTN08sR0FHbEIsSUFBSyxHQUZEa0YsTUFDQS9FLEVBQU9PLEVBQUVQ
LEtBQUtILEdBQ1RzQixFQUFJLEVBQUdqQixFQUFTRixFQUFLRSxPQUFZQSxFQUFKaUIsRUFBWUEs
SUFDaEQ0RCxFQUFPbEYsRUFBSUcsRUFBS21CLEtBQU9uQixFQUFLbUIsRUFFOUIsT0FBTzRELElB
S1R4RSxFQUFFb08sVUFBWXBPLEVBQUVxTyxRQUFVLFNBQVMvTyxHQUNqQyxHQUFJZ1AsS0FDSixL
QUFLLEdBQUloSyxLQUFPaEYsR0FDVlUsRUFBRXdCLFdBQVdsQyxFQUFJZ0YsS0FBT2dLLEVBQU14
TSxLQUFLd0MsRUFFekMsT0FBT2dLLEdBQU0zRyxRQUlmM0gsRUFBRXVPLE9BQVN0SyxFQUFlakUs
RUFBRWdPLFNBSTVCaE8sRUFBRXdPLFVBQVl4TyxFQUFFeU8sT0FBU3hLLEVBQWVqRSxFQUFFUCxN
QUcxQ08sRUFBRXdGLFFBQVUsU0FBU2xHLEVBQUtjLEVBQVdQLEdBQ25DTyxFQUFZQyxFQUFHRCxF
QUFXUCxFQUUxQixLQUFLLEdBRG1CeUUsR0FBcEI3RSxFQUFPTyxFQUFFUCxLQUFLSCxHQUNUc0Is
RUFBSSxFQUFHakIsRUFBU0YsRUFBS0UsT0FBWUEsRUFBSmlCLEVBQVlBLElBRWhELEdBREEwRCxF
QUFNN0UsRUFBS21CLEdBQ1BSLEVBQVVkLEVBQUlnRixHQUFNQSxFQUFLaEYsR0FBTSxNQUFPZ0Ys
SUFLOUN0RSxFQUFFME8sS0FBTyxTQUFTbEUsRUFBUW1FLEVBQVc5TyxHQUNuQyxHQUErQk4sR0FB
VUUsRUFBckMrRSxLQUFhbEYsRUFBTWtMLENBQ3ZCLElBQVcsTUFBUGxMLEVBQWEsTUFBT2tGLEVB
Q3BCeEUsR0FBRXdCLFdBQVdtTixJQUNmbFAsRUFBT08sRUFBRWdPLFFBQVExTyxHQUNqQkMsRUFB
V08sRUFBVzZPLEVBQVc5TyxLQUVqQ0osRUFBTzBKLEVBQVFsSixXQUFXLEdBQU8sRUFBTyxHQUN4
Q1YsRUFBVyxTQUFTZ0UsRUFBT2UsRUFBS2hGLEdBQU8sTUFBT2dGLEtBQU9oRixJQUNyREEsRUFB
TThDLE9BQU85QyxHQUVmLEtBQUssR0FBSXNCLEdBQUksRUFBR2pCLEVBQVNGLEVBQUtFLE9BQVlB
LEVBQUppQixFQUFZQSxJQUFLLENBQ3JELEdBQUkwRCxHQUFNN0UsRUFBS21CLEdBQ1gyQyxFQUFR
akUsRUFBSWdGLEVBQ1ovRSxHQUFTZ0UsRUFBT2UsRUFBS2hGLEtBQU1rRixFQUFPRixHQUFPZixH
QUUvQyxNQUFPaUIsSUFJVHhFLEVBQUU0TyxLQUFPLFNBQVN0UCxFQUFLQyxFQUFVTSxHQUMvQixH
QUFJRyxFQUFFd0IsV0FBV2pDLEdBQ2ZBLEVBQVdTLEVBQUU2RixPQUFPdEcsT0FDZixDQUNMLEdB
QUlFLEdBQU9PLEVBQUU2RSxJQUFJc0UsRUFBUWxKLFdBQVcsR0FBTyxFQUFPLEdBQUk0TyxPQUN0
RHRQLEdBQVcsU0FBU2dFLEVBQU9lLEdBQ3pCLE9BQVF0RSxFQUFFNkIsU0FBU3BDLEVBQU02RSxJ
QUc3QixNQUFPdEUsR0FBRTBPLEtBQUtwUCxFQUFLQyxFQUFVTSxJQUkvQkcsRUFBRThPLFNBQVc3
SyxFQUFlakUsRUFBRWdPLFNBQVMsR0FLdkNoTyxFQUFFK0MsT0FBUyxTQUFTdEIsRUFBV3NOLEdB
QzdCLEdBQUl2SyxHQUFTRCxFQUFXOUMsRUFFeEIsT0FESXNOLElBQU8vTyxFQUFFd08sVUFBVWhL
LEVBQVF1SyxHQUN4QnZLLEdBSVR4RSxFQUFFZ1AsTUFBUSxTQUFTMVAsR0FDakIsTUFBS1UsR0FB
RTZELFNBQVN2RSxHQUNUVSxFQUFFMEMsUUFBUXBELEdBQU9BLEVBQUkwQixRQUFVaEIsRUFBRXVP
LFVBQVdqUCxHQUR0QkEsR0FPL0JVLEVBQUVpUCxJQUFNLFNBQVMzUCxFQUFLNFAsR0FFcEIsTUFE
QUEsR0FBWTVQLEdBQ0xBLEdBSVRVLEVBQUVtUCxRQUFVLFNBQVMzRSxFQUFRMUQsR0FDM0IsR0FB
SXJILEdBQU9PLEVBQUVQLEtBQUtxSCxHQUFRbkgsRUFBU0YsRUFBS0UsTUFDeEMsSUFBYyxNQUFW
NkssRUFBZ0IsT0FBUTdLLENBRTVCLEtBQUssR0FEREwsR0FBTThDLE9BQU9vSSxHQUNSNUosRUFB
SSxFQUFPakIsRUFBSmlCLEVBQVlBLElBQUssQ0FDL0IsR0FBSTBELEdBQU03RSxFQUFLbUIsRUFD
ZixJQUFJa0csRUFBTXhDLEtBQVNoRixFQUFJZ0YsTUFBVUEsSUFBT2hGLElBQU0sT0FBTyxFQUV2
RCxPQUFPLEVBS1QsSUFBSThQLEdBQUssU0FBU3RILEVBQUdDLEVBQUdzSCxFQUFRQyxHQUc5QixH
QUFJeEgsSUFBTUMsRUFBRyxNQUFhLEtBQU5ELEdBQVcsRUFBSUEsSUFBTSxFQUFJQyxDQUU3QyxJ
QUFTLE1BQUxELEdBQWtCLE1BQUxDLEVBQVcsTUFBT0QsS0FBTUMsQ0FFckNELGFBQWE5SCxLQUFH
OEgsRUFBSUEsRUFBRTdFLFVBQ3RCOEUsWUFBYS9ILEtBQUcrSCxFQUFJQSxFQUFFOUUsU0FFMUIs
SUFBSXNNLEdBQVloTixFQUFTdEIsS0FBSzZHLEVBQzlCLElBQUl5SCxJQUFjaE4sRUFBU3RCLEtB
QUs4RyxHQUFJLE9BQU8sQ0FDM0MsUUFBUXdILEdBRU4sSUFBSyxrQkFFTCxJQUFLLGtCQUdILE1B
QU8sR0FBS3pILEdBQU0sR0FBS0MsQ0FDekIsS0FBSyxrQkFHSCxPQUFLRCxLQUFPQSxHQUFXQyxL
QUFPQSxFQUVoQixLQUFORCxFQUFVLEdBQUtBLElBQU0sRUFBSUMsR0FBS0QsS0FBT0MsQ0FDL0Ms
S0FBSyxnQkFDTCxJQUFLLG1CQUlILE9BQVFELEtBQU9DLEVBR25CLEdBQUl5SCxHQUEwQixtQkFB
ZEQsQ0FDaEIsS0FBS0MsRUFBVyxDQUNkLEdBQWdCLGdCQUFMMUgsSUFBNkIsZ0JBQUxDLEdBQWUs
T0FBTyxDQUl6RCxJQUFJMEgsR0FBUTNILEVBQUV4RyxZQUFhb08sRUFBUTNILEVBQUV6RyxXQUNy
QyxJQUFJbU8sSUFBVUMsS0FBVzFQLEVBQUV3QixXQUFXaU8sSUFBVUEsWUFBaUJBLElBQ3hDelAs
RUFBRXdCLFdBQVdrTyxJQUFVQSxZQUFpQkEsS0FDekMsZUFBaUI1SCxJQUFLLGVBQWlCQyxHQUM3
RCxPQUFPLEVBUVhzSCxFQUFTQSxNQUNUQyxFQUFTQSxLQUVULEtBREEsR0FBSTNQLEdBQVMwUCxF
QUFPMVAsT0FDYkEsS0FHTCxHQUFJMFAsRUFBTzFQLEtBQVltSSxFQUFHLE1BQU93SCxHQUFPM1As
S0FBWW9JLENBUXRELElBSkFzSCxFQUFPdk4sS0FBS2dHLEdBQ1p3SCxFQUFPeE4sS0FBS2lHLEdB
R1J5SCxFQUFXLENBR2IsR0FEQTdQLEVBQVNtSSxFQUFFbkksT0FDUEEsSUFBV29JLEVBQUVwSSxP
QUFRLE9BQU8sQ0FFaEMsTUFBT0EsS0FDTCxJQUFLeVAsRUFBR3RILEVBQUVuSSxHQUFTb0ksRUFB
RXBJLEdBQVMwUCxFQUFRQyxHQUFTLE9BQU8sTUFFbkQsQ0FFTCxHQUFzQmhMLEdBQWxCN0UsRUFB
T08sRUFBRVAsS0FBS3FJLEVBR2xCLElBRkFuSSxFQUFTRixFQUFLRSxPQUVWSyxFQUFFUCxLQUFL
c0ksR0FBR3BJLFNBQVdBLEVBQVEsT0FBTyxDQUN4QyxNQUFPQSxLQUdMLEdBREEyRSxFQUFNN0Us
RUFBS0UsSUFDTEssRUFBRTRCLElBQUltRyxFQUFHekQsS0FBUThLLEVBQUd0SCxFQUFFeEQsR0FB
TXlELEVBQUV6RCxHQUFNK0ssRUFBUUMsR0FBVSxPQUFPLEVBTXZFLE1BRkFELEdBQU9NLE1BQ1BM
LEVBQU9LLE9BQ0EsRUFJVDNQLEdBQUU0UCxRQUFVLFNBQVM5SCxFQUFHQyxHQUN0QixNQUFPcUgs
R0FBR3RILEVBQUdDLElBS2YvSCxFQUFFNlAsUUFBVSxTQUFTdlEsR0FDbkIsTUFBVyxPQUFQQSxH
QUFvQixFQUNwQlMsRUFBWVQsS0FBU1UsRUFBRTBDLFFBQVFwRCxJQUFRVSxFQUFFOFAsU0FBU3hR
LElBQVFVLEVBQUV5SixZQUFZbkssSUFBNkIsSUFBZkEsRUFBSUssT0FDaEUsSUFBdkJLLEVBQUVQ
LEtBQUtILEdBQUtLLFFBSXJCSyxFQUFFK1AsVUFBWSxTQUFTelEsR0FDckIsU0FBVUEsR0FBd0Is
SUFBakJBLEVBQUkwUSxXQUt2QmhRLEVBQUUwQyxRQUFVRCxHQUFpQixTQUFTbkQsR0FDcEMsTUFB
OEIsbUJBQXZCaUQsRUFBU3RCLEtBQUszQixJQUl2QlUsRUFBRTZELFNBQVcsU0FBU3ZFLEdBQ3BC
LEdBQUkyUSxTQUFjM1EsRUFDbEIsT0FBZ0IsYUFBVDJRLEdBQWdDLFdBQVRBLEtBQXVCM1EsR0FJ
dkRVLEVBQUUyRSxNQUFNLFlBQWEsV0FBWSxTQUFVLFNBQVUsT0FBUSxTQUFVLFNBQVUsU0FBU3VM
LEdBQ3hGbFEsRUFBRSxLQUFPa1EsR0FBUSxTQUFTNVEsR0FDeEIsTUFBT2lELEdBQVN0QixLQUFL
M0IsS0FBUyxXQUFhNFEsRUFBTyxPQU1qRGxRLEVBQUV5SixZQUFZeEosYUFDakJELEVBQUV5SixZ
QUFjLFNBQVNuSyxHQUN2QixNQUFPVSxHQUFFNEIsSUFBSXRDLEVBQUssWUFNSixrQkFBUCxLQUF5
QyxnQkFBYjZRLGFBQ3JDblEsRUFBRXdCLFdBQWEsU0FBU2xDLEdBQ3RCLE1BQXFCLGtCQUFQQSxL
QUFxQixJQUt2Q1UsRUFBRW9RLFNBQVcsU0FBUzlRLEdBQ3BCLE1BQU84USxVQUFTOVEsS0FBUzRC
LE1BQU1tUCxXQUFXL1EsS0FJNUNVLEVBQUVrQixNQUFRLFNBQVM1QixHQUNqQixNQUFPVSxHQUFF
c1EsU0FBU2hSLElBQVFBLEtBQVNBLEdBSXJDVSxFQUFFaUssVUFBWSxTQUFTM0ssR0FDckIsTUFB
T0EsTUFBUSxHQUFRQSxLQUFRLEdBQWdDLHFCQUF2QmlELEVBQVN0QixLQUFLM0IsSUFJeERVLEVB
QUV1USxPQUFTLFNBQVNqUixHQUNsQixNQUFlLFFBQVJBLEdBSVRVLEVBQUV3USxZQUFjLFNBQVNs
UixHQUN2QixNQUFPQSxTQUFhLElBS3RCVSxFQUFFNEIsSUFBTSxTQUFTdEMsRUFBS2dGLEdBQ3BC
LE1BQWMsT0FBUGhGLEdBQWVrRCxFQUFldkIsS0FBSzNCLEVBQUtnRixJQVFqRHRFLEVBQUV5USxX
QUFhLFdBRWIsTUFEQTFPLEdBQUsvQixFQUFJaUMsRUFDRkQsTUFJVGhDLEVBQUU0RCxTQUFXLFNB
QVNMLEdBQ3BCLE1BQU9BLElBSVR2RCxFQUFFMFEsU0FBVyxTQUFTbk4sR0FDcEIsTUFBTyxZQUNM
LE1BQU9BLEtBSVh2RCxFQUFFMlEsS0FBTyxhQUVUM1EsRUFBRStELFNBQVdBLEVBR2IvRCxFQUFF
NFEsV0FBYSxTQUFTdFIsR0FDdEIsTUFBYyxPQUFQQSxFQUFjLGFBQWUsU0FBU2dGLEdBQzNDLE1B
QU9oRixHQUFJZ0YsS0FNZnRFLEVBQUU4RCxRQUFVOUQsRUFBRTZRLFFBQVUsU0FBUy9KLEdBRS9C
LE1BREFBLEdBQVE5RyxFQUFFd08sYUFBYzFILEdBQ2pCLFNBQVN4SCxHQUNkLE1BQU9VLEdBQUVt
UCxRQUFRN1AsRUFBS3dILEtBSzFCOUcsRUFBRTJOLE1BQVEsU0FBU25HLEVBQUdqSSxFQUFVTSxH
QUM5QixHQUFJaVIsR0FBUTNPLE1BQU10QixLQUFLQyxJQUFJLEVBQUcwRyxHQUM5QmpJLEdBQVdP
LEVBQVdQLEVBQVVNLEVBQVMsRUFDekMsS0FBSyxHQUFJZSxHQUFJLEVBQU80RyxFQUFKNUcsRUFB
T0EsSUFBS2tRLEVBQU1sUSxHQUFLckIsRUFBU3FCLEVBQ2hELE9BQU9rUSxJQUlUOVEsRUFBRXNI
LE9BQVMsU0FBU3ZHLEVBQUtELEdBS3ZCLE1BSlcsT0FBUEEsSUFDRkEsRUFBTUMsRUFDTkEsRUFB
TSxHQUVEQSxFQUFNRixLQUFLZ0ssTUFBTWhLLEtBQUt5RyxVQUFZeEcsRUFBTUMsRUFBTSxLQUl2
RGYsRUFBRStNLElBQU1nRSxLQUFLaEUsS0FBTyxXQUNsQixPQUFPLEdBQUlnRSxPQUFPQyxVQUlw
QixJQUFJQyxJQUNGQyxJQUFLLFFBQ0xDLElBQUssT0FDTEMsSUFBSyxPQUNMQyxJQUFLLFNBQ0xD
LElBQUssU0FDTEMsSUFBSyxVQUVIQyxFQUFjeFIsRUFBRW1PLE9BQU84QyxHQUd2QlEsRUFBZ0Is
U0FBUzVNLEdBQzNCLEdBQUk2TSxHQUFVLFNBQVNDLEdBQ3JCLE1BQU85TSxHQUFJOE0sSUFHVHZO
LEVBQVMsTUFBUXBFLEVBQUVQLEtBQUtvRixHQUFLK00sS0FBSyxLQUFPLElBQ3pDQyxFQUFhQyxP
QUFPMU4sR0FDcEIyTixFQUFnQkQsT0FBTzFOLEVBQVEsSUFDbkMsT0FBTyxVQUFTNE4sR0FFZCxN
QURBQSxHQUFtQixNQUFWQSxFQUFpQixHQUFLLEdBQUtBLEVBQzdCSCxFQUFXSSxLQUFLRCxHQUFV
QSxFQUFPRSxRQUFRSCxFQUFlTCxHQUFXTSxHQUc5RWhTLEdBQUVtUyxPQUFTVixFQUFjUixHQUN6
QmpSLEVBQUVvUyxTQUFXWCxFQUFjRCxHQUkzQnhSLEVBQUV3RSxPQUFTLFNBQVNnRyxFQUFRekcs
RUFBVXNPLEdBQ3BDLEdBQUk5TyxHQUFrQixNQUFWaUgsTUFBc0IsR0FBSUEsRUFBT3pHLEVBSTdD
LE9BSElSLFNBQWUsS0FDakJBLEVBQVE4TyxHQUVIclMsRUFBRXdCLFdBQVcrQixHQUFTQSxFQUFN
dEMsS0FBS3VKLEdBQVVqSCxFQUtwRCxJQUFJK08sR0FBWSxDQUNoQnRTLEdBQUV1UyxTQUFXLFNB
QVNDLEdBQ3BCLEdBQUlDLEtBQU9ILEVBQVksRUFDdkIsT0FBT0UsR0FBU0EsRUFBU0MsRUFBS0Es
R0FLaEN6UyxFQUFFMFMsa0JBQ0FDLFNBQWMsa0JBQ2RDLFlBQWMsbUJBQ2RULE9BQWMsbUJBTWhC
LElBQUlVLEdBQVUsT0FJVkMsR0FDRnhCLElBQVUsSUFDVnlCLEtBQVUsS0FDVkMsS0FBVSxJQUNW
QyxLQUFVLElBQ1ZDLFNBQVUsUUFDVkMsU0FBVSxTQUdSekIsRUFBVSw0QkFFVjBCLEVBQWEsU0FB
U3pCLEdBQ3hCLE1BQU8sS0FBT21CLEVBQVFuQixHQU94QjNSLEdBQUVxVCxTQUFXLFNBQVNDLEVB
QU1DLEVBQVVDLElBQy9CRCxHQUFZQyxJQUFhRCxFQUFXQyxHQUN6Q0QsRUFBV3ZULEVBQUU4TyxZ
QUFheUUsRUFBVXZULEVBQUUwUyxpQkFHdEMsSUFBSTVPLEdBQVVnTyxTQUNYeUIsRUFBU3BCLFFB
QVVVLEdBQVN6TyxRQUM1Qm1QLEVBQVNYLGFBQWVDLEdBQVN6TyxRQUNqQ21QLEVBQVNaLFVBQVlF
LEdBQVN6TyxRQUMvQndOLEtBQUssS0FBTyxLQUFNLEtBR2hCbFMsRUFBUSxFQUNSMEUsRUFBUyxR
QUNia1AsR0FBS3BCLFFBQVFwTyxFQUFTLFNBQVM2TixFQUFPUSxFQUFRUyxFQUFhRCxFQUFVYyxH
QWFuRSxNQVpBclAsSUFBVWtQLEVBQUt0UyxNQUFNdEIsRUFBTytULEdBQVF2QixRQUFRUixFQUFT
MEIsR0FDckQxVCxFQUFRK1QsRUFBUzlCLEVBQU1oUyxPQUVuQndTLEVBQ0YvTixHQUFVLGNBQWdC
K04sRUFBUyxpQ0FDMUJTLEVBQ1R4TyxHQUFVLGNBQWdCd08sRUFBYyx1QkFDL0JELElBQ1R2TyxH
QUFVLE9BQVN1TyxFQUFXLFlBSXpCaEIsSUFFVHZOLEdBQVUsT0FHTG1QLEVBQVNHLFdBQVV0UCxF
QUFTLG1CQUFxQkEsRUFBUyxPQUUvREEsRUFBUywyQ0FDUCxvREFDQUEsRUFBUyxlQUVYLEtBQ0Us
R0FBSXVQLEdBQVMsR0FBSXJSLFVBQVNpUixFQUFTRyxVQUFZLE1BQU8sSUFBS3RQLEdBQzNELE1B
QU93UCxHQUVQLEtBREFBLEdBQUV4UCxPQUFTQSxFQUNMd1AsRUFHUixHQUFJUCxHQUFXLFNBQVNR
LEdBQ3RCLE1BQU9GLEdBQU8xUyxLQUFLZSxLQUFNNlIsRUFBTTdULElBSTdCOFQsRUFBV1AsRUFB
U0csVUFBWSxLQUdwQyxPQUZBTCxHQUFTalAsT0FBUyxZQUFjMFAsRUFBVyxPQUFTMVAsRUFBUyxJ
QUV0RGlQLEdBSVRyVCxFQUFFK1QsTUFBUSxTQUFTelUsR0FDakIsR0FBSTBVLEdBQVdoVSxFQUFF
VixFQUVqQixPQURBMFUsR0FBU0MsUUFBUyxFQUNYRCxFQVVULElBQUl4UCxHQUFTLFNBQVN3UCxF
QUFVMVUsR0FDOUIsTUFBTzBVLEdBQVNDLE9BQVNqVSxFQUFFVixHQUFLeVUsUUFBVXpVLEVBSTVD
VSxHQUFFa1UsTUFBUSxTQUFTNVUsR0FDakJVLEVBQUUyRSxLQUFLM0UsRUFBRW9PLFVBQVU5TyxH
QUFNLFNBQVM0USxHQUNoQyxHQUFJN00sR0FBT3JELEVBQUVrUSxHQUFRNVEsRUFBSTRRLEVBQ3pC
bFEsR0FBRXlCLFVBQVV5TyxHQUFRLFdBQ2xCLEdBQUl4SixJQUFRMUUsS0FBS2lCLFNBRWpCLE9B
REFuQixHQUFLNkIsTUFBTStDLEVBQU16RyxXQUNWdUUsRUFBT3hDLEtBQU1xQixFQUFLTSxNQUFN
M0QsRUFBRzBHLFFBTXhDMUcsRUFBRWtVLE1BQU1sVSxHQUdSQSxFQUFFMkUsTUFBTSxNQUFPLE9B
QVEsVUFBVyxRQUFTLE9BQVEsU0FBVSxXQUFZLFNBQVN1TCxHQUNoRixHQUFJekosR0FBU3ZFLEVB
QVdnTyxFQUN4QmxRLEdBQUV5QixVQUFVeU8sR0FBUSxXQUNsQixHQUFJNVEsR0FBTTBDLEtBQUtp
QixRQUdmLE9BRkF3RCxHQUFPOUMsTUFBTXJFLEVBQUtXLFdBQ0osVUFBVGlRLEdBQTZCLFdBQVRB
LEdBQXFDLElBQWY1USxFQUFJSyxjQUFxQkwsR0FBSSxHQUNyRWtGLEVBQU94QyxLQUFNMUMsTUFL
eEJVLEVBQUUyRSxNQUFNLFNBQVUsT0FBUSxTQUFVLFNBQVN1TCxHQUMzQyxHQUFJekosR0FBU3ZF
LEVBQVdnTyxFQUN4QmxRLEdBQUV5QixVQUFVeU8sR0FBUSxXQUNsQixNQUFPMUwsR0FBT3hDLEtB
QU15RSxFQUFPOUMsTUFBTTNCLEtBQUtpQixTQUFVaEQsZUFLcERELEVBQUV5QixVQUFVOEIsTUFB
USxXQUNsQixNQUFPdkIsTUFBS2lCLFVBS2RqRCxFQUFFeUIsVUFBVTBTLFFBQVVuVSxFQUFFeUIs
VUFBVTJTLE9BQVNwVSxFQUFFeUIsVUFBVThCLE1BRXZEdkQsRUFBRXlCLFVBQVVjLFNBQVcsV0FD
ckIsTUFBTyxHQUFLUCxLQUFLaUIsVUFVRyxrQkFBWG9SLFNBQXlCQSxPQUFPQyxLQUN6Q0QsT0FB
TyxnQkFBa0IsV0FDdkIsTUFBT3JVLE9BR1hpQixLQUFLZSJ9ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvbm9kZV9tb2R1bGVzL3Vu
ZGVyc2NvcmUvdW5kZXJzY29yZS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL25vZGVfbW9kdWxl
cy91bmRlcnNjb3JlL3VuZGVyc2NvcmUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjI5MzMyZjk0NWI4NTljZWEw
MDc1YmI2OWU4YmQ1YzFjMTEzZjA1YwotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2Jh
Y2tib25lL25vZGVfbW9kdWxlcy91bmRlcnNjb3JlL3VuZGVyc2NvcmUuanMKQEAgLTAsMCArMSwx
NTQ4IEBACisvLyAgICAgVW5kZXJzY29yZS5qcyAxLjguMworLy8gICAgIGh0dHA6Ly91bmRlcnNj
b3JlanMub3JnCisvLyAgICAgKGMpIDIwMDktMjAxNSBKZXJlbXkgQXNoa2VuYXMsIERvY3VtZW50
Q2xvdWQgYW5kIEludmVzdGlnYXRpdmUgUmVwb3J0ZXJzICYgRWRpdG9ycworLy8gICAgIFVuZGVy
c2NvcmUgbWF5IGJlIGZyZWVseSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuCisK
KyhmdW5jdGlvbigpIHsKKworICAvLyBCYXNlbGluZSBzZXR1cAorICAvLyAtLS0tLS0tLS0tLS0t
LQorCisgIC8vIEVzdGFibGlzaCB0aGUgcm9vdCBvYmplY3QsIGB3aW5kb3dgIGluIHRoZSBicm93
c2VyLCBvciBgZXhwb3J0c2Agb24gdGhlIHNlcnZlci4KKyAgdmFyIHJvb3QgPSB0aGlzOworCisg
IC8vIFNhdmUgdGhlIHByZXZpb3VzIHZhbHVlIG9mIHRoZSBgX2AgdmFyaWFibGUuCisgIHZhciBw
cmV2aW91c1VuZGVyc2NvcmUgPSByb290Ll87CisKKyAgLy8gU2F2ZSBieXRlcyBpbiB0aGUgbWlu
aWZpZWQgKGJ1dCBub3QgZ3ppcHBlZCkgdmVyc2lvbjoKKyAgdmFyIEFycmF5UHJvdG8gPSBBcnJh
eS5wcm90b3R5cGUsIE9ialByb3RvID0gT2JqZWN0LnByb3RvdHlwZSwgRnVuY1Byb3RvID0gRnVu
Y3Rpb24ucHJvdG90eXBlOworCisgIC8vIENyZWF0ZSBxdWljayByZWZlcmVuY2UgdmFyaWFibGVz
IGZvciBzcGVlZCBhY2Nlc3MgdG8gY29yZSBwcm90b3R5cGVzLgorICB2YXIKKyAgICBwdXNoICAg
ICAgICAgICAgID0gQXJyYXlQcm90by5wdXNoLAorICAgIHNsaWNlICAgICAgICAgICAgPSBBcnJh
eVByb3RvLnNsaWNlLAorICAgIHRvU3RyaW5nICAgICAgICAgPSBPYmpQcm90by50b1N0cmluZywK
KyAgICBoYXNPd25Qcm9wZXJ0eSAgID0gT2JqUHJvdG8uaGFzT3duUHJvcGVydHk7CisKKyAgLy8g
QWxsICoqRUNNQVNjcmlwdCA1KiogbmF0aXZlIGZ1bmN0aW9uIGltcGxlbWVudGF0aW9ucyB0aGF0
IHdlIGhvcGUgdG8gdXNlCisgIC8vIGFyZSBkZWNsYXJlZCBoZXJlLgorICB2YXIKKyAgICBuYXRp
dmVJc0FycmF5ICAgICAgPSBBcnJheS5pc0FycmF5LAorICAgIG5hdGl2ZUtleXMgICAgICAgICA9
IE9iamVjdC5rZXlzLAorICAgIG5hdGl2ZUJpbmQgICAgICAgICA9IEZ1bmNQcm90by5iaW5kLAor
ICAgIG5hdGl2ZUNyZWF0ZSAgICAgICA9IE9iamVjdC5jcmVhdGU7CisKKyAgLy8gTmFrZWQgZnVu
Y3Rpb24gcmVmZXJlbmNlIGZvciBzdXJyb2dhdGUtcHJvdG90eXBlLXN3YXBwaW5nLgorICB2YXIg
Q3RvciA9IGZ1bmN0aW9uKCl7fTsKKworICAvLyBDcmVhdGUgYSBzYWZlIHJlZmVyZW5jZSB0byB0
aGUgVW5kZXJzY29yZSBvYmplY3QgZm9yIHVzZSBiZWxvdy4KKyAgdmFyIF8gPSBmdW5jdGlvbihv
YmopIHsKKyAgICBpZiAob2JqIGluc3RhbmNlb2YgXykgcmV0dXJuIG9iajsKKyAgICBpZiAoISh0
aGlzIGluc3RhbmNlb2YgXykpIHJldHVybiBuZXcgXyhvYmopOworICAgIHRoaXMuX3dyYXBwZWQg
PSBvYmo7CisgIH07CisKKyAgLy8gRXhwb3J0IHRoZSBVbmRlcnNjb3JlIG9iamVjdCBmb3IgKipO
b2RlLmpzKiosIHdpdGgKKyAgLy8gYmFja3dhcmRzLWNvbXBhdGliaWxpdHkgZm9yIHRoZSBvbGQg
YHJlcXVpcmUoKWAgQVBJLiBJZiB3ZSdyZSBpbgorICAvLyB0aGUgYnJvd3NlciwgYWRkIGBfYCBh
cyBhIGdsb2JhbCBvYmplY3QuCisgIGlmICh0eXBlb2YgZXhwb3J0cyAhPT0gJ3VuZGVmaW5lZCcp
IHsKKyAgICBpZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgJiYgbW9kdWxlLmV4cG9y
dHMpIHsKKyAgICAgIGV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IF87CisgICAgfQorICAgIGV4
cG9ydHMuXyA9IF87CisgIH0gZWxzZSB7CisgICAgcm9vdC5fID0gXzsKKyAgfQorCisgIC8vIEN1
cnJlbnQgdmVyc2lvbi4KKyAgXy5WRVJTSU9OID0gJzEuOC4zJzsKKworICAvLyBJbnRlcm5hbCBm
dW5jdGlvbiB0aGF0IHJldHVybnMgYW4gZWZmaWNpZW50IChmb3IgY3VycmVudCBlbmdpbmVzKSB2
ZXJzaW9uCisgIC8vIG9mIHRoZSBwYXNzZWQtaW4gY2FsbGJhY2ssIHRvIGJlIHJlcGVhdGVkbHkg
YXBwbGllZCBpbiBvdGhlciBVbmRlcnNjb3JlCisgIC8vIGZ1bmN0aW9ucy4KKyAgdmFyIG9wdGlt
aXplQ2IgPSBmdW5jdGlvbihmdW5jLCBjb250ZXh0LCBhcmdDb3VudCkgeworICAgIGlmIChjb250
ZXh0ID09PSB2b2lkIDApIHJldHVybiBmdW5jOworICAgIHN3aXRjaCAoYXJnQ291bnQgPT0gbnVs
bCA/IDMgOiBhcmdDb3VudCkgeworICAgICAgY2FzZSAxOiByZXR1cm4gZnVuY3Rpb24odmFsdWUp
IHsKKyAgICAgICAgcmV0dXJuIGZ1bmMuY2FsbChjb250ZXh0LCB2YWx1ZSk7CisgICAgICB9Owor
ICAgICAgY2FzZSAyOiByZXR1cm4gZnVuY3Rpb24odmFsdWUsIG90aGVyKSB7CisgICAgICAgIHJl
dHVybiBmdW5jLmNhbGwoY29udGV4dCwgdmFsdWUsIG90aGVyKTsKKyAgICAgIH07CisgICAgICBj
YXNlIDM6IHJldHVybiBmdW5jdGlvbih2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pIHsKKyAgICAg
ICAgcmV0dXJuIGZ1bmMuY2FsbChjb250ZXh0LCB2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pOwor
ICAgICAgfTsKKyAgICAgIGNhc2UgNDogcmV0dXJuIGZ1bmN0aW9uKGFjY3VtdWxhdG9yLCB2YWx1
ZSwgaW5kZXgsIGNvbGxlY3Rpb24pIHsKKyAgICAgICAgcmV0dXJuIGZ1bmMuY2FsbChjb250ZXh0
LCBhY2N1bXVsYXRvciwgdmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKTsKKyAgICAgIH07CisgICAg
fQorICAgIHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgIHJldHVybiBmdW5jLmFwcGx5KGNvbnRl
eHQsIGFyZ3VtZW50cyk7CisgICAgfTsKKyAgfTsKKworICAvLyBBIG1vc3RseS1pbnRlcm5hbCBm
dW5jdGlvbiB0byBnZW5lcmF0ZSBjYWxsYmFja3MgdGhhdCBjYW4gYmUgYXBwbGllZAorICAvLyB0
byBlYWNoIGVsZW1lbnQgaW4gYSBjb2xsZWN0aW9uLCByZXR1cm5pbmcgdGhlIGRlc2lyZWQgcmVz
dWx0IOKAlCBlaXRoZXIKKyAgLy8gaWRlbnRpdHksIGFuIGFyYml0cmFyeSBjYWxsYmFjaywgYSBw
cm9wZXJ0eSBtYXRjaGVyLCBvciBhIHByb3BlcnR5IGFjY2Vzc29yLgorICB2YXIgY2IgPSBmdW5j
dGlvbih2YWx1ZSwgY29udGV4dCwgYXJnQ291bnQpIHsKKyAgICBpZiAodmFsdWUgPT0gbnVsbCkg
cmV0dXJuIF8uaWRlbnRpdHk7CisgICAgaWYgKF8uaXNGdW5jdGlvbih2YWx1ZSkpIHJldHVybiBv
cHRpbWl6ZUNiKHZhbHVlLCBjb250ZXh0LCBhcmdDb3VudCk7CisgICAgaWYgKF8uaXNPYmplY3Qo
dmFsdWUpKSByZXR1cm4gXy5tYXRjaGVyKHZhbHVlKTsKKyAgICByZXR1cm4gXy5wcm9wZXJ0eSh2
YWx1ZSk7CisgIH07CisgIF8uaXRlcmF0ZWUgPSBmdW5jdGlvbih2YWx1ZSwgY29udGV4dCkgewor
ICAgIHJldHVybiBjYih2YWx1ZSwgY29udGV4dCwgSW5maW5pdHkpOworICB9OworCisgIC8vIEFu
IGludGVybmFsIGZ1bmN0aW9uIGZvciBjcmVhdGluZyBhc3NpZ25lciBmdW5jdGlvbnMuCisgIHZh
ciBjcmVhdGVBc3NpZ25lciA9IGZ1bmN0aW9uKGtleXNGdW5jLCB1bmRlZmluZWRPbmx5KSB7Cisg
ICAgcmV0dXJuIGZ1bmN0aW9uKG9iaikgeworICAgICAgdmFyIGxlbmd0aCA9IGFyZ3VtZW50cy5s
ZW5ndGg7CisgICAgICBpZiAobGVuZ3RoIDwgMiB8fCBvYmogPT0gbnVsbCkgcmV0dXJuIG9iajsK
KyAgICAgIGZvciAodmFyIGluZGV4ID0gMTsgaW5kZXggPCBsZW5ndGg7IGluZGV4KyspIHsKKyAg
ICAgICAgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpbmRleF0sCisgICAgICAgICAgICBrZXlzID0g
a2V5c0Z1bmMoc291cmNlKSwKKyAgICAgICAgICAgIGwgPSBrZXlzLmxlbmd0aDsKKyAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIHsKKyAgICAgICAgICB2YXIga2V5ID0ga2V5c1tp
XTsKKyAgICAgICAgICBpZiAoIXVuZGVmaW5lZE9ubHkgfHwgb2JqW2tleV0gPT09IHZvaWQgMCkg
b2JqW2tleV0gPSBzb3VyY2Vba2V5XTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgcmV0dXJu
IG9iajsKKyAgICB9OworICB9OworCisgIC8vIEFuIGludGVybmFsIGZ1bmN0aW9uIGZvciBjcmVh
dGluZyBhIG5ldyBvYmplY3QgdGhhdCBpbmhlcml0cyBmcm9tIGFub3RoZXIuCisgIHZhciBiYXNl
Q3JlYXRlID0gZnVuY3Rpb24ocHJvdG90eXBlKSB7CisgICAgaWYgKCFfLmlzT2JqZWN0KHByb3Rv
dHlwZSkpIHJldHVybiB7fTsKKyAgICBpZiAobmF0aXZlQ3JlYXRlKSByZXR1cm4gbmF0aXZlQ3Jl
YXRlKHByb3RvdHlwZSk7CisgICAgQ3Rvci5wcm90b3R5cGUgPSBwcm90b3R5cGU7CisgICAgdmFy
IHJlc3VsdCA9IG5ldyBDdG9yOworICAgIEN0b3IucHJvdG90eXBlID0gbnVsbDsKKyAgICByZXR1
cm4gcmVzdWx0OworICB9OworCisgIHZhciBwcm9wZXJ0eSA9IGZ1bmN0aW9uKGtleSkgeworICAg
IHJldHVybiBmdW5jdGlvbihvYmopIHsKKyAgICAgIHJldHVybiBvYmogPT0gbnVsbCA/IHZvaWQg
MCA6IG9ialtrZXldOworICAgIH07CisgIH07CisKKyAgLy8gSGVscGVyIGZvciBjb2xsZWN0aW9u
IG1ldGhvZHMgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSBjb2xsZWN0aW9uCisgIC8vIHNob3VsZCBi
ZSBpdGVyYXRlZCBhcyBhbiBhcnJheSBvciBhcyBhbiBvYmplY3QKKyAgLy8gUmVsYXRlZDogaHR0
cDovL3Blb3BsZS5tb3ppbGxhLm9yZy9+am9yZW5kb3JmZi9lczYtZHJhZnQuaHRtbCNzZWMtdG9s
ZW5ndGgKKyAgLy8gQXZvaWRzIGEgdmVyeSBuYXN0eSBpT1MgOCBKSVQgYnVnIG9uIEFSTS02NC4g
IzIwOTQKKyAgdmFyIE1BWF9BUlJBWV9JTkRFWCA9IE1hdGgucG93KDIsIDUzKSAtIDE7CisgIHZh
ciBnZXRMZW5ndGggPSBwcm9wZXJ0eSgnbGVuZ3RoJyk7CisgIHZhciBpc0FycmF5TGlrZSA9IGZ1
bmN0aW9uKGNvbGxlY3Rpb24pIHsKKyAgICB2YXIgbGVuZ3RoID0gZ2V0TGVuZ3RoKGNvbGxlY3Rp
b24pOworICAgIHJldHVybiB0eXBlb2YgbGVuZ3RoID09ICdudW1iZXInICYmIGxlbmd0aCA+PSAw
ICYmIGxlbmd0aCA8PSBNQVhfQVJSQVlfSU5ERVg7CisgIH07CisKKyAgLy8gQ29sbGVjdGlvbiBG
dW5jdGlvbnMKKyAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAvLyBUaGUgY29ybmVyc3Rv
bmUsIGFuIGBlYWNoYCBpbXBsZW1lbnRhdGlvbiwgYWthIGBmb3JFYWNoYC4KKyAgLy8gSGFuZGxl
cyByYXcgb2JqZWN0cyBpbiBhZGRpdGlvbiB0byBhcnJheS1saWtlcy4gVHJlYXRzIGFsbAorICAv
LyBzcGFyc2UgYXJyYXktbGlrZXMgYXMgaWYgdGhleSB3ZXJlIGRlbnNlLgorICBfLmVhY2ggPSBf
LmZvckVhY2ggPSBmdW5jdGlvbihvYmosIGl0ZXJhdGVlLCBjb250ZXh0KSB7CisgICAgaXRlcmF0
ZWUgPSBvcHRpbWl6ZUNiKGl0ZXJhdGVlLCBjb250ZXh0KTsKKyAgICB2YXIgaSwgbGVuZ3RoOwor
ICAgIGlmIChpc0FycmF5TGlrZShvYmopKSB7CisgICAgICBmb3IgKGkgPSAwLCBsZW5ndGggPSBv
YmoubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaXRlcmF0ZWUob2JqW2ldLCBp
LCBvYmopOworICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICB2YXIga2V5cyA9IF8ua2V5cyhv
YmopOworICAgICAgZm9yIChpID0gMCwgbGVuZ3RoID0ga2V5cy5sZW5ndGg7IGkgPCBsZW5ndGg7
IGkrKykgeworICAgICAgICBpdGVyYXRlZShvYmpba2V5c1tpXV0sIGtleXNbaV0sIG9iaik7Cisg
ICAgICB9CisgICAgfQorICAgIHJldHVybiBvYmo7CisgIH07CisKKyAgLy8gUmV0dXJuIHRoZSBy
ZXN1bHRzIG9mIGFwcGx5aW5nIHRoZSBpdGVyYXRlZSB0byBlYWNoIGVsZW1lbnQuCisgIF8ubWFw
ID0gXy5jb2xsZWN0ID0gZnVuY3Rpb24ob2JqLCBpdGVyYXRlZSwgY29udGV4dCkgeworICAgIGl0
ZXJhdGVlID0gY2IoaXRlcmF0ZWUsIGNvbnRleHQpOworICAgIHZhciBrZXlzID0gIWlzQXJyYXlM
aWtlKG9iaikgJiYgXy5rZXlzKG9iaiksCisgICAgICAgIGxlbmd0aCA9IChrZXlzIHx8IG9iaiku
bGVuZ3RoLAorICAgICAgICByZXN1bHRzID0gQXJyYXkobGVuZ3RoKTsKKyAgICBmb3IgKHZhciBp
bmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrKSB7CisgICAgICB2YXIgY3VycmVudEtl
eSA9IGtleXMgPyBrZXlzW2luZGV4XSA6IGluZGV4OworICAgICAgcmVzdWx0c1tpbmRleF0gPSBp
dGVyYXRlZShvYmpbY3VycmVudEtleV0sIGN1cnJlbnRLZXksIG9iaik7CisgICAgfQorICAgIHJl
dHVybiByZXN1bHRzOworICB9OworCisgIC8vIENyZWF0ZSBhIHJlZHVjaW5nIGZ1bmN0aW9uIGl0
ZXJhdGluZyBsZWZ0IG9yIHJpZ2h0LgorICBmdW5jdGlvbiBjcmVhdGVSZWR1Y2UoZGlyKSB7Cisg
ICAgLy8gT3B0aW1pemVkIGl0ZXJhdG9yIGZ1bmN0aW9uIGFzIHVzaW5nIGFyZ3VtZW50cy5sZW5n
dGgKKyAgICAvLyBpbiB0aGUgbWFpbiBmdW5jdGlvbiB3aWxsIGRlb3B0aW1pemUgdGhlLCBzZWUg
IzE5OTEuCisgICAgZnVuY3Rpb24gaXRlcmF0b3Iob2JqLCBpdGVyYXRlZSwgbWVtbywga2V5cywg
aW5kZXgsIGxlbmd0aCkgeworICAgICAgZm9yICg7IGluZGV4ID49IDAgJiYgaW5kZXggPCBsZW5n
dGg7IGluZGV4ICs9IGRpcikgeworICAgICAgICB2YXIgY3VycmVudEtleSA9IGtleXMgPyBrZXlz
W2luZGV4XSA6IGluZGV4OworICAgICAgICBtZW1vID0gaXRlcmF0ZWUobWVtbywgb2JqW2N1cnJl
bnRLZXldLCBjdXJyZW50S2V5LCBvYmopOworICAgICAgfQorICAgICAgcmV0dXJuIG1lbW87Cisg
ICAgfQorCisgICAgcmV0dXJuIGZ1bmN0aW9uKG9iaiwgaXRlcmF0ZWUsIG1lbW8sIGNvbnRleHQp
IHsKKyAgICAgIGl0ZXJhdGVlID0gb3B0aW1pemVDYihpdGVyYXRlZSwgY29udGV4dCwgNCk7Cisg
ICAgICB2YXIga2V5cyA9ICFpc0FycmF5TGlrZShvYmopICYmIF8ua2V5cyhvYmopLAorICAgICAg
ICAgIGxlbmd0aCA9IChrZXlzIHx8IG9iaikubGVuZ3RoLAorICAgICAgICAgIGluZGV4ID0gZGly
ID4gMCA/IDAgOiBsZW5ndGggLSAxOworICAgICAgLy8gRGV0ZXJtaW5lIHRoZSBpbml0aWFsIHZh
bHVlIGlmIG5vbmUgaXMgcHJvdmlkZWQuCisgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDMp
IHsKKyAgICAgICAgbWVtbyA9IG9ialtrZXlzID8ga2V5c1tpbmRleF0gOiBpbmRleF07CisgICAg
ICAgIGluZGV4ICs9IGRpcjsKKyAgICAgIH0KKyAgICAgIHJldHVybiBpdGVyYXRvcihvYmosIGl0
ZXJhdGVlLCBtZW1vLCBrZXlzLCBpbmRleCwgbGVuZ3RoKTsKKyAgICB9OworICB9CisKKyAgLy8g
KipSZWR1Y2UqKiBidWlsZHMgdXAgYSBzaW5nbGUgcmVzdWx0IGZyb20gYSBsaXN0IG9mIHZhbHVl
cywgYWthIGBpbmplY3RgLAorICAvLyBvciBgZm9sZGxgLgorICBfLnJlZHVjZSA9IF8uZm9sZGwg
PSBfLmluamVjdCA9IGNyZWF0ZVJlZHVjZSgxKTsKKworICAvLyBUaGUgcmlnaHQtYXNzb2NpYXRp
dmUgdmVyc2lvbiBvZiByZWR1Y2UsIGFsc28ga25vd24gYXMgYGZvbGRyYC4KKyAgXy5yZWR1Y2VS
aWdodCA9IF8uZm9sZHIgPSBjcmVhdGVSZWR1Y2UoLTEpOworCisgIC8vIFJldHVybiB0aGUgZmly
c3QgdmFsdWUgd2hpY2ggcGFzc2VzIGEgdHJ1dGggdGVzdC4gQWxpYXNlZCBhcyBgZGV0ZWN0YC4K
KyAgXy5maW5kID0gXy5kZXRlY3QgPSBmdW5jdGlvbihvYmosIHByZWRpY2F0ZSwgY29udGV4dCkg
eworICAgIHZhciBrZXk7CisgICAgaWYgKGlzQXJyYXlMaWtlKG9iaikpIHsKKyAgICAgIGtleSA9
IF8uZmluZEluZGV4KG9iaiwgcHJlZGljYXRlLCBjb250ZXh0KTsKKyAgICB9IGVsc2UgeworICAg
ICAga2V5ID0gXy5maW5kS2V5KG9iaiwgcHJlZGljYXRlLCBjb250ZXh0KTsKKyAgICB9CisgICAg
aWYgKGtleSAhPT0gdm9pZCAwICYmIGtleSAhPT0gLTEpIHJldHVybiBvYmpba2V5XTsKKyAgfTsK
KworICAvLyBSZXR1cm4gYWxsIHRoZSBlbGVtZW50cyB0aGF0IHBhc3MgYSB0cnV0aCB0ZXN0Lgor
ICAvLyBBbGlhc2VkIGFzIGBzZWxlY3RgLgorICBfLmZpbHRlciA9IF8uc2VsZWN0ID0gZnVuY3Rp
b24ob2JqLCBwcmVkaWNhdGUsIGNvbnRleHQpIHsKKyAgICB2YXIgcmVzdWx0cyA9IFtdOworICAg
IHByZWRpY2F0ZSA9IGNiKHByZWRpY2F0ZSwgY29udGV4dCk7CisgICAgXy5lYWNoKG9iaiwgZnVu
Y3Rpb24odmFsdWUsIGluZGV4LCBsaXN0KSB7CisgICAgICBpZiAocHJlZGljYXRlKHZhbHVlLCBp
bmRleCwgbGlzdCkpIHJlc3VsdHMucHVzaCh2YWx1ZSk7CisgICAgfSk7CisgICAgcmV0dXJuIHJl
c3VsdHM7CisgIH07CisKKyAgLy8gUmV0dXJuIGFsbCB0aGUgZWxlbWVudHMgZm9yIHdoaWNoIGEg
dHJ1dGggdGVzdCBmYWlscy4KKyAgXy5yZWplY3QgPSBmdW5jdGlvbihvYmosIHByZWRpY2F0ZSwg
Y29udGV4dCkgeworICAgIHJldHVybiBfLmZpbHRlcihvYmosIF8ubmVnYXRlKGNiKHByZWRpY2F0
ZSkpLCBjb250ZXh0KTsKKyAgfTsKKworICAvLyBEZXRlcm1pbmUgd2hldGhlciBhbGwgb2YgdGhl
IGVsZW1lbnRzIG1hdGNoIGEgdHJ1dGggdGVzdC4KKyAgLy8gQWxpYXNlZCBhcyBgYWxsYC4KKyAg
Xy5ldmVyeSA9IF8uYWxsID0gZnVuY3Rpb24ob2JqLCBwcmVkaWNhdGUsIGNvbnRleHQpIHsKKyAg
ICBwcmVkaWNhdGUgPSBjYihwcmVkaWNhdGUsIGNvbnRleHQpOworICAgIHZhciBrZXlzID0gIWlz
QXJyYXlMaWtlKG9iaikgJiYgXy5rZXlzKG9iaiksCisgICAgICAgIGxlbmd0aCA9IChrZXlzIHx8
IG9iaikubGVuZ3RoOworICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGlu
ZGV4KyspIHsKKyAgICAgIHZhciBjdXJyZW50S2V5ID0ga2V5cyA/IGtleXNbaW5kZXhdIDogaW5k
ZXg7CisgICAgICBpZiAoIXByZWRpY2F0ZShvYmpbY3VycmVudEtleV0sIGN1cnJlbnRLZXksIG9i
aikpIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7CisgIH07CisKKyAgLy8g
RGV0ZXJtaW5lIGlmIGF0IGxlYXN0IG9uZSBlbGVtZW50IGluIHRoZSBvYmplY3QgbWF0Y2hlcyBh
IHRydXRoIHRlc3QuCisgIC8vIEFsaWFzZWQgYXMgYGFueWAuCisgIF8uc29tZSA9IF8uYW55ID0g
ZnVuY3Rpb24ob2JqLCBwcmVkaWNhdGUsIGNvbnRleHQpIHsKKyAgICBwcmVkaWNhdGUgPSBjYihw
cmVkaWNhdGUsIGNvbnRleHQpOworICAgIHZhciBrZXlzID0gIWlzQXJyYXlMaWtlKG9iaikgJiYg
Xy5rZXlzKG9iaiksCisgICAgICAgIGxlbmd0aCA9IChrZXlzIHx8IG9iaikubGVuZ3RoOworICAg
IGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KyspIHsKKyAgICAgIHZh
ciBjdXJyZW50S2V5ID0ga2V5cyA/IGtleXNbaW5kZXhdIDogaW5kZXg7CisgICAgICBpZiAocHJl
ZGljYXRlKG9ialtjdXJyZW50S2V5XSwgY3VycmVudEtleSwgb2JqKSkgcmV0dXJuIHRydWU7Cisg
ICAgfQorICAgIHJldHVybiBmYWxzZTsKKyAgfTsKKworICAvLyBEZXRlcm1pbmUgaWYgdGhlIGFy
cmF5IG9yIG9iamVjdCBjb250YWlucyBhIGdpdmVuIGl0ZW0gKHVzaW5nIGA9PT1gKS4KKyAgLy8g
QWxpYXNlZCBhcyBgaW5jbHVkZXNgIGFuZCBgaW5jbHVkZWAuCisgIF8uY29udGFpbnMgPSBfLmlu
Y2x1ZGVzID0gXy5pbmNsdWRlID0gZnVuY3Rpb24ob2JqLCBpdGVtLCBmcm9tSW5kZXgsIGd1YXJk
KSB7CisgICAgaWYgKCFpc0FycmF5TGlrZShvYmopKSBvYmogPSBfLnZhbHVlcyhvYmopOworICAg
IGlmICh0eXBlb2YgZnJvbUluZGV4ICE9ICdudW1iZXInIHx8IGd1YXJkKSBmcm9tSW5kZXggPSAw
OworICAgIHJldHVybiBfLmluZGV4T2Yob2JqLCBpdGVtLCBmcm9tSW5kZXgpID49IDA7CisgIH07
CisKKyAgLy8gSW52b2tlIGEgbWV0aG9kICh3aXRoIGFyZ3VtZW50cykgb24gZXZlcnkgaXRlbSBp
biBhIGNvbGxlY3Rpb24uCisgIF8uaW52b2tlID0gZnVuY3Rpb24ob2JqLCBtZXRob2QpIHsKKyAg
ICB2YXIgYXJncyA9IHNsaWNlLmNhbGwoYXJndW1lbnRzLCAyKTsKKyAgICB2YXIgaXNGdW5jID0g
Xy5pc0Z1bmN0aW9uKG1ldGhvZCk7CisgICAgcmV0dXJuIF8ubWFwKG9iaiwgZnVuY3Rpb24odmFs
dWUpIHsKKyAgICAgIHZhciBmdW5jID0gaXNGdW5jID8gbWV0aG9kIDogdmFsdWVbbWV0aG9kXTsK
KyAgICAgIHJldHVybiBmdW5jID09IG51bGwgPyBmdW5jIDogZnVuYy5hcHBseSh2YWx1ZSwgYXJn
cyk7CisgICAgfSk7CisgIH07CisKKyAgLy8gQ29udmVuaWVuY2UgdmVyc2lvbiBvZiBhIGNvbW1v
biB1c2UgY2FzZSBvZiBgbWFwYDogZmV0Y2hpbmcgYSBwcm9wZXJ0eS4KKyAgXy5wbHVjayA9IGZ1
bmN0aW9uKG9iaiwga2V5KSB7CisgICAgcmV0dXJuIF8ubWFwKG9iaiwgXy5wcm9wZXJ0eShrZXkp
KTsKKyAgfTsKKworICAvLyBDb252ZW5pZW5jZSB2ZXJzaW9uIG9mIGEgY29tbW9uIHVzZSBjYXNl
IG9mIGBmaWx0ZXJgOiBzZWxlY3Rpbmcgb25seSBvYmplY3RzCisgIC8vIGNvbnRhaW5pbmcgc3Bl
Y2lmaWMgYGtleTp2YWx1ZWAgcGFpcnMuCisgIF8ud2hlcmUgPSBmdW5jdGlvbihvYmosIGF0dHJz
KSB7CisgICAgcmV0dXJuIF8uZmlsdGVyKG9iaiwgXy5tYXRjaGVyKGF0dHJzKSk7CisgIH07CisK
KyAgLy8gQ29udmVuaWVuY2UgdmVyc2lvbiBvZiBhIGNvbW1vbiB1c2UgY2FzZSBvZiBgZmluZGA6
IGdldHRpbmcgdGhlIGZpcnN0IG9iamVjdAorICAvLyBjb250YWluaW5nIHNwZWNpZmljIGBrZXk6
dmFsdWVgIHBhaXJzLgorICBfLmZpbmRXaGVyZSA9IGZ1bmN0aW9uKG9iaiwgYXR0cnMpIHsKKyAg
ICByZXR1cm4gXy5maW5kKG9iaiwgXy5tYXRjaGVyKGF0dHJzKSk7CisgIH07CisKKyAgLy8gUmV0
dXJuIHRoZSBtYXhpbXVtIGVsZW1lbnQgKG9yIGVsZW1lbnQtYmFzZWQgY29tcHV0YXRpb24pLgor
ICBfLm1heCA9IGZ1bmN0aW9uKG9iaiwgaXRlcmF0ZWUsIGNvbnRleHQpIHsKKyAgICB2YXIgcmVz
dWx0ID0gLUluZmluaXR5LCBsYXN0Q29tcHV0ZWQgPSAtSW5maW5pdHksCisgICAgICAgIHZhbHVl
LCBjb21wdXRlZDsKKyAgICBpZiAoaXRlcmF0ZWUgPT0gbnVsbCAmJiBvYmogIT0gbnVsbCkgewor
ICAgICAgb2JqID0gaXNBcnJheUxpa2Uob2JqKSA/IG9iaiA6IF8udmFsdWVzKG9iaik7CisgICAg
ICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gb2JqLmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7
CisgICAgICAgIHZhbHVlID0gb2JqW2ldOworICAgICAgICBpZiAodmFsdWUgPiByZXN1bHQpIHsK
KyAgICAgICAgICByZXN1bHQgPSB2YWx1ZTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0gZWxz
ZSB7CisgICAgICBpdGVyYXRlZSA9IGNiKGl0ZXJhdGVlLCBjb250ZXh0KTsKKyAgICAgIF8uZWFj
aChvYmosIGZ1bmN0aW9uKHZhbHVlLCBpbmRleCwgbGlzdCkgeworICAgICAgICBjb21wdXRlZCA9
IGl0ZXJhdGVlKHZhbHVlLCBpbmRleCwgbGlzdCk7CisgICAgICAgIGlmIChjb21wdXRlZCA+IGxh
c3RDb21wdXRlZCB8fCBjb21wdXRlZCA9PT0gLUluZmluaXR5ICYmIHJlc3VsdCA9PT0gLUluZmlu
aXR5KSB7CisgICAgICAgICAgcmVzdWx0ID0gdmFsdWU7CisgICAgICAgICAgbGFzdENvbXB1dGVk
ID0gY29tcHV0ZWQ7CisgICAgICAgIH0KKyAgICAgIH0pOworICAgIH0KKyAgICByZXR1cm4gcmVz
dWx0OworICB9OworCisgIC8vIFJldHVybiB0aGUgbWluaW11bSBlbGVtZW50IChvciBlbGVtZW50
LWJhc2VkIGNvbXB1dGF0aW9uKS4KKyAgXy5taW4gPSBmdW5jdGlvbihvYmosIGl0ZXJhdGVlLCBj
b250ZXh0KSB7CisgICAgdmFyIHJlc3VsdCA9IEluZmluaXR5LCBsYXN0Q29tcHV0ZWQgPSBJbmZp
bml0eSwKKyAgICAgICAgdmFsdWUsIGNvbXB1dGVkOworICAgIGlmIChpdGVyYXRlZSA9PSBudWxs
ICYmIG9iaiAhPSBudWxsKSB7CisgICAgICBvYmogPSBpc0FycmF5TGlrZShvYmopID8gb2JqIDog
Xy52YWx1ZXMob2JqKTsKKyAgICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBvYmoubGVuZ3Ro
OyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgdmFsdWUgPSBvYmpbaV07CisgICAgICAgIGlm
ICh2YWx1ZSA8IHJlc3VsdCkgeworICAgICAgICAgIHJlc3VsdCA9IHZhbHVlOworICAgICAgICB9
CisgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgIGl0ZXJhdGVlID0gY2IoaXRlcmF0ZWUsIGNv
bnRleHQpOworICAgICAgXy5lYWNoKG9iaiwgZnVuY3Rpb24odmFsdWUsIGluZGV4LCBsaXN0KSB7
CisgICAgICAgIGNvbXB1dGVkID0gaXRlcmF0ZWUodmFsdWUsIGluZGV4LCBsaXN0KTsKKyAgICAg
ICAgaWYgKGNvbXB1dGVkIDwgbGFzdENvbXB1dGVkIHx8IGNvbXB1dGVkID09PSBJbmZpbml0eSAm
JiByZXN1bHQgPT09IEluZmluaXR5KSB7CisgICAgICAgICAgcmVzdWx0ID0gdmFsdWU7CisgICAg
ICAgICAgbGFzdENvbXB1dGVkID0gY29tcHV0ZWQ7CisgICAgICAgIH0KKyAgICAgIH0pOworICAg
IH0KKyAgICByZXR1cm4gcmVzdWx0OworICB9OworCisgIC8vIFNodWZmbGUgYSBjb2xsZWN0aW9u
LCB1c2luZyB0aGUgbW9kZXJuIHZlcnNpb24gb2YgdGhlCisgIC8vIFtGaXNoZXItWWF0ZXMgc2h1
ZmZsZV0oaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GaXNoZXLigJNZYXRlc19zaHVmZmxl
KS4KKyAgXy5zaHVmZmxlID0gZnVuY3Rpb24ob2JqKSB7CisgICAgdmFyIHNldCA9IGlzQXJyYXlM
aWtlKG9iaikgPyBvYmogOiBfLnZhbHVlcyhvYmopOworICAgIHZhciBsZW5ndGggPSBzZXQubGVu
Z3RoOworICAgIHZhciBzaHVmZmxlZCA9IEFycmF5KGxlbmd0aCk7CisgICAgZm9yICh2YXIgaW5k
ZXggPSAwLCByYW5kOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKykgeworICAgICAgcmFuZCA9IF8u
cmFuZG9tKDAsIGluZGV4KTsKKyAgICAgIGlmIChyYW5kICE9PSBpbmRleCkgc2h1ZmZsZWRbaW5k
ZXhdID0gc2h1ZmZsZWRbcmFuZF07CisgICAgICBzaHVmZmxlZFtyYW5kXSA9IHNldFtpbmRleF07
CisgICAgfQorICAgIHJldHVybiBzaHVmZmxlZDsKKyAgfTsKKworICAvLyBTYW1wbGUgKipuKiog
cmFuZG9tIHZhbHVlcyBmcm9tIGEgY29sbGVjdGlvbi4KKyAgLy8gSWYgKipuKiogaXMgbm90IHNw
ZWNpZmllZCwgcmV0dXJucyBhIHNpbmdsZSByYW5kb20gZWxlbWVudC4KKyAgLy8gVGhlIGludGVy
bmFsIGBndWFyZGAgYXJndW1lbnQgYWxsb3dzIGl0IHRvIHdvcmsgd2l0aCBgbWFwYC4KKyAgXy5z
YW1wbGUgPSBmdW5jdGlvbihvYmosIG4sIGd1YXJkKSB7CisgICAgaWYgKG4gPT0gbnVsbCB8fCBn
dWFyZCkgeworICAgICAgaWYgKCFpc0FycmF5TGlrZShvYmopKSBvYmogPSBfLnZhbHVlcyhvYmop
OworICAgICAgcmV0dXJuIG9ialtfLnJhbmRvbShvYmoubGVuZ3RoIC0gMSldOworICAgIH0KKyAg
ICByZXR1cm4gXy5zaHVmZmxlKG9iaikuc2xpY2UoMCwgTWF0aC5tYXgoMCwgbikpOworICB9Owor
CisgIC8vIFNvcnQgdGhlIG9iamVjdCdzIHZhbHVlcyBieSBhIGNyaXRlcmlvbiBwcm9kdWNlZCBi
eSBhbiBpdGVyYXRlZS4KKyAgXy5zb3J0QnkgPSBmdW5jdGlvbihvYmosIGl0ZXJhdGVlLCBjb250
ZXh0KSB7CisgICAgaXRlcmF0ZWUgPSBjYihpdGVyYXRlZSwgY29udGV4dCk7CisgICAgcmV0dXJu
IF8ucGx1Y2soXy5tYXAob2JqLCBmdW5jdGlvbih2YWx1ZSwgaW5kZXgsIGxpc3QpIHsKKyAgICAg
IHJldHVybiB7CisgICAgICAgIHZhbHVlOiB2YWx1ZSwKKyAgICAgICAgaW5kZXg6IGluZGV4LAor
ICAgICAgICBjcml0ZXJpYTogaXRlcmF0ZWUodmFsdWUsIGluZGV4LCBsaXN0KQorICAgICAgfTsK
KyAgICB9KS5zb3J0KGZ1bmN0aW9uKGxlZnQsIHJpZ2h0KSB7CisgICAgICB2YXIgYSA9IGxlZnQu
Y3JpdGVyaWE7CisgICAgICB2YXIgYiA9IHJpZ2h0LmNyaXRlcmlhOworICAgICAgaWYgKGEgIT09
IGIpIHsKKyAgICAgICAgaWYgKGEgPiBiIHx8IGEgPT09IHZvaWQgMCkgcmV0dXJuIDE7CisgICAg
ICAgIGlmIChhIDwgYiB8fCBiID09PSB2b2lkIDApIHJldHVybiAtMTsKKyAgICAgIH0KKyAgICAg
IHJldHVybiBsZWZ0LmluZGV4IC0gcmlnaHQuaW5kZXg7CisgICAgfSksICd2YWx1ZScpOworICB9
OworCisgIC8vIEFuIGludGVybmFsIGZ1bmN0aW9uIHVzZWQgZm9yIGFnZ3JlZ2F0ZSAiZ3JvdXAg
YnkiIG9wZXJhdGlvbnMuCisgIHZhciBncm91cCA9IGZ1bmN0aW9uKGJlaGF2aW9yKSB7CisgICAg
cmV0dXJuIGZ1bmN0aW9uKG9iaiwgaXRlcmF0ZWUsIGNvbnRleHQpIHsKKyAgICAgIHZhciByZXN1
bHQgPSB7fTsKKyAgICAgIGl0ZXJhdGVlID0gY2IoaXRlcmF0ZWUsIGNvbnRleHQpOworICAgICAg
Xy5lYWNoKG9iaiwgZnVuY3Rpb24odmFsdWUsIGluZGV4KSB7CisgICAgICAgIHZhciBrZXkgPSBp
dGVyYXRlZSh2YWx1ZSwgaW5kZXgsIG9iaik7CisgICAgICAgIGJlaGF2aW9yKHJlc3VsdCwgdmFs
dWUsIGtleSk7CisgICAgICB9KTsKKyAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfTsKKyAgfTsK
KworICAvLyBHcm91cHMgdGhlIG9iamVjdCdzIHZhbHVlcyBieSBhIGNyaXRlcmlvbi4gUGFzcyBl
aXRoZXIgYSBzdHJpbmcgYXR0cmlidXRlCisgIC8vIHRvIGdyb3VwIGJ5LCBvciBhIGZ1bmN0aW9u
IHRoYXQgcmV0dXJucyB0aGUgY3JpdGVyaW9uLgorICBfLmdyb3VwQnkgPSBncm91cChmdW5jdGlv
bihyZXN1bHQsIHZhbHVlLCBrZXkpIHsKKyAgICBpZiAoXy5oYXMocmVzdWx0LCBrZXkpKSByZXN1
bHRba2V5XS5wdXNoKHZhbHVlKTsgZWxzZSByZXN1bHRba2V5XSA9IFt2YWx1ZV07CisgIH0pOwor
CisgIC8vIEluZGV4ZXMgdGhlIG9iamVjdCdzIHZhbHVlcyBieSBhIGNyaXRlcmlvbiwgc2ltaWxh
ciB0byBgZ3JvdXBCeWAsIGJ1dCBmb3IKKyAgLy8gd2hlbiB5b3Uga25vdyB0aGF0IHlvdXIgaW5k
ZXggdmFsdWVzIHdpbGwgYmUgdW5pcXVlLgorICBfLmluZGV4QnkgPSBncm91cChmdW5jdGlvbihy
ZXN1bHQsIHZhbHVlLCBrZXkpIHsKKyAgICByZXN1bHRba2V5XSA9IHZhbHVlOworICB9KTsKKwor
ICAvLyBDb3VudHMgaW5zdGFuY2VzIG9mIGFuIG9iamVjdCB0aGF0IGdyb3VwIGJ5IGEgY2VydGFp
biBjcml0ZXJpb24uIFBhc3MKKyAgLy8gZWl0aGVyIGEgc3RyaW5nIGF0dHJpYnV0ZSB0byBjb3Vu
dCBieSwgb3IgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlCisgIC8vIGNyaXRlcmlvbi4KKyAg
Xy5jb3VudEJ5ID0gZ3JvdXAoZnVuY3Rpb24ocmVzdWx0LCB2YWx1ZSwga2V5KSB7CisgICAgaWYg
KF8uaGFzKHJlc3VsdCwga2V5KSkgcmVzdWx0W2tleV0rKzsgZWxzZSByZXN1bHRba2V5XSA9IDE7
CisgIH0pOworCisgIC8vIFNhZmVseSBjcmVhdGUgYSByZWFsLCBsaXZlIGFycmF5IGZyb20gYW55
dGhpbmcgaXRlcmFibGUuCisgIF8udG9BcnJheSA9IGZ1bmN0aW9uKG9iaikgeworICAgIGlmICgh
b2JqKSByZXR1cm4gW107CisgICAgaWYgKF8uaXNBcnJheShvYmopKSByZXR1cm4gc2xpY2UuY2Fs
bChvYmopOworICAgIGlmIChpc0FycmF5TGlrZShvYmopKSByZXR1cm4gXy5tYXAob2JqLCBfLmlk
ZW50aXR5KTsKKyAgICByZXR1cm4gXy52YWx1ZXMob2JqKTsKKyAgfTsKKworICAvLyBSZXR1cm4g
dGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiBhbiBvYmplY3QuCisgIF8uc2l6ZSA9IGZ1bmN0aW9u
KG9iaikgeworICAgIGlmIChvYmogPT0gbnVsbCkgcmV0dXJuIDA7CisgICAgcmV0dXJuIGlzQXJy
YXlMaWtlKG9iaikgPyBvYmoubGVuZ3RoIDogXy5rZXlzKG9iaikubGVuZ3RoOworICB9OworCisg
IC8vIFNwbGl0IGEgY29sbGVjdGlvbiBpbnRvIHR3byBhcnJheXM6IG9uZSB3aG9zZSBlbGVtZW50
cyBhbGwgc2F0aXNmeSB0aGUgZ2l2ZW4KKyAgLy8gcHJlZGljYXRlLCBhbmQgb25lIHdob3NlIGVs
ZW1lbnRzIGFsbCBkbyBub3Qgc2F0aXNmeSB0aGUgcHJlZGljYXRlLgorICBfLnBhcnRpdGlvbiA9
IGZ1bmN0aW9uKG9iaiwgcHJlZGljYXRlLCBjb250ZXh0KSB7CisgICAgcHJlZGljYXRlID0gY2Io
cHJlZGljYXRlLCBjb250ZXh0KTsKKyAgICB2YXIgcGFzcyA9IFtdLCBmYWlsID0gW107CisgICAg
Xy5lYWNoKG9iaiwgZnVuY3Rpb24odmFsdWUsIGtleSwgb2JqKSB7CisgICAgICAocHJlZGljYXRl
KHZhbHVlLCBrZXksIG9iaikgPyBwYXNzIDogZmFpbCkucHVzaCh2YWx1ZSk7CisgICAgfSk7Cisg
ICAgcmV0dXJuIFtwYXNzLCBmYWlsXTsKKyAgfTsKKworICAvLyBBcnJheSBGdW5jdGlvbnMKKyAg
Ly8gLS0tLS0tLS0tLS0tLS0tCisKKyAgLy8gR2V0IHRoZSBmaXJzdCBlbGVtZW50IG9mIGFuIGFy
cmF5LiBQYXNzaW5nICoqbioqIHdpbGwgcmV0dXJuIHRoZSBmaXJzdCBOCisgIC8vIHZhbHVlcyBp
biB0aGUgYXJyYXkuIEFsaWFzZWQgYXMgYGhlYWRgIGFuZCBgdGFrZWAuIFRoZSAqKmd1YXJkKiog
Y2hlY2sKKyAgLy8gYWxsb3dzIGl0IHRvIHdvcmsgd2l0aCBgXy5tYXBgLgorICBfLmZpcnN0ID0g
Xy5oZWFkID0gXy50YWtlID0gZnVuY3Rpb24oYXJyYXksIG4sIGd1YXJkKSB7CisgICAgaWYgKGFy
cmF5ID09IG51bGwpIHJldHVybiB2b2lkIDA7CisgICAgaWYgKG4gPT0gbnVsbCB8fCBndWFyZCkg
cmV0dXJuIGFycmF5WzBdOworICAgIHJldHVybiBfLmluaXRpYWwoYXJyYXksIGFycmF5Lmxlbmd0
aCAtIG4pOworICB9OworCisgIC8vIFJldHVybnMgZXZlcnl0aGluZyBidXQgdGhlIGxhc3QgZW50
cnkgb2YgdGhlIGFycmF5LiBFc3BlY2lhbGx5IHVzZWZ1bCBvbgorICAvLyB0aGUgYXJndW1lbnRz
IG9iamVjdC4gUGFzc2luZyAqKm4qKiB3aWxsIHJldHVybiBhbGwgdGhlIHZhbHVlcyBpbgorICAv
LyB0aGUgYXJyYXksIGV4Y2x1ZGluZyB0aGUgbGFzdCBOLgorICBfLmluaXRpYWwgPSBmdW5jdGlv
bihhcnJheSwgbiwgZ3VhcmQpIHsKKyAgICByZXR1cm4gc2xpY2UuY2FsbChhcnJheSwgMCwgTWF0
aC5tYXgoMCwgYXJyYXkubGVuZ3RoIC0gKG4gPT0gbnVsbCB8fCBndWFyZCA/IDEgOiBuKSkpOwor
ICB9OworCisgIC8vIEdldCB0aGUgbGFzdCBlbGVtZW50IG9mIGFuIGFycmF5LiBQYXNzaW5nICoq
bioqIHdpbGwgcmV0dXJuIHRoZSBsYXN0IE4KKyAgLy8gdmFsdWVzIGluIHRoZSBhcnJheS4KKyAg
Xy5sYXN0ID0gZnVuY3Rpb24oYXJyYXksIG4sIGd1YXJkKSB7CisgICAgaWYgKGFycmF5ID09IG51
bGwpIHJldHVybiB2b2lkIDA7CisgICAgaWYgKG4gPT0gbnVsbCB8fCBndWFyZCkgcmV0dXJuIGFy
cmF5W2FycmF5Lmxlbmd0aCAtIDFdOworICAgIHJldHVybiBfLnJlc3QoYXJyYXksIE1hdGgubWF4
KDAsIGFycmF5Lmxlbmd0aCAtIG4pKTsKKyAgfTsKKworICAvLyBSZXR1cm5zIGV2ZXJ5dGhpbmcg
YnV0IHRoZSBmaXJzdCBlbnRyeSBvZiB0aGUgYXJyYXkuIEFsaWFzZWQgYXMgYHRhaWxgIGFuZCBg
ZHJvcGAuCisgIC8vIEVzcGVjaWFsbHkgdXNlZnVsIG9uIHRoZSBhcmd1bWVudHMgb2JqZWN0LiBQ
YXNzaW5nIGFuICoqbioqIHdpbGwgcmV0dXJuCisgIC8vIHRoZSByZXN0IE4gdmFsdWVzIGluIHRo
ZSBhcnJheS4KKyAgXy5yZXN0ID0gXy50YWlsID0gXy5kcm9wID0gZnVuY3Rpb24oYXJyYXksIG4s
IGd1YXJkKSB7CisgICAgcmV0dXJuIHNsaWNlLmNhbGwoYXJyYXksIG4gPT0gbnVsbCB8fCBndWFy
ZCA/IDEgOiBuKTsKKyAgfTsKKworICAvLyBUcmltIG91dCBhbGwgZmFsc3kgdmFsdWVzIGZyb20g
YW4gYXJyYXkuCisgIF8uY29tcGFjdCA9IGZ1bmN0aW9uKGFycmF5KSB7CisgICAgcmV0dXJuIF8u
ZmlsdGVyKGFycmF5LCBfLmlkZW50aXR5KTsKKyAgfTsKKworICAvLyBJbnRlcm5hbCBpbXBsZW1l
bnRhdGlvbiBvZiBhIHJlY3Vyc2l2ZSBgZmxhdHRlbmAgZnVuY3Rpb24uCisgIHZhciBmbGF0dGVu
ID0gZnVuY3Rpb24oaW5wdXQsIHNoYWxsb3csIHN0cmljdCwgc3RhcnRJbmRleCkgeworICAgIHZh
ciBvdXRwdXQgPSBbXSwgaWR4ID0gMDsKKyAgICBmb3IgKHZhciBpID0gc3RhcnRJbmRleCB8fCAw
LCBsZW5ndGggPSBnZXRMZW5ndGgoaW5wdXQpOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciB2YWx1ZSA9IGlucHV0W2ldOworICAgICAgaWYgKGlzQXJyYXlMaWtlKHZhbHVlKSAmJiAoXy5p
c0FycmF5KHZhbHVlKSB8fCBfLmlzQXJndW1lbnRzKHZhbHVlKSkpIHsKKyAgICAgICAgLy9mbGF0
dGVuIGN1cnJlbnQgbGV2ZWwgb2YgYXJyYXkgb3IgYXJndW1lbnRzIG9iamVjdAorICAgICAgICBp
ZiAoIXNoYWxsb3cpIHZhbHVlID0gZmxhdHRlbih2YWx1ZSwgc2hhbGxvdywgc3RyaWN0KTsKKyAg
ICAgICAgdmFyIGogPSAwLCBsZW4gPSB2YWx1ZS5sZW5ndGg7CisgICAgICAgIG91dHB1dC5sZW5n
dGggKz0gbGVuOworICAgICAgICB3aGlsZSAoaiA8IGxlbikgeworICAgICAgICAgIG91dHB1dFtp
ZHgrK10gPSB2YWx1ZVtqKytdOworICAgICAgICB9CisgICAgICB9IGVsc2UgaWYgKCFzdHJpY3Qp
IHsKKyAgICAgICAgb3V0cHV0W2lkeCsrXSA9IHZhbHVlOworICAgICAgfQorICAgIH0KKyAgICBy
ZXR1cm4gb3V0cHV0OworICB9OworCisgIC8vIEZsYXR0ZW4gb3V0IGFuIGFycmF5LCBlaXRoZXIg
cmVjdXJzaXZlbHkgKGJ5IGRlZmF1bHQpLCBvciBqdXN0IG9uZSBsZXZlbC4KKyAgXy5mbGF0dGVu
ID0gZnVuY3Rpb24oYXJyYXksIHNoYWxsb3cpIHsKKyAgICByZXR1cm4gZmxhdHRlbihhcnJheSwg
c2hhbGxvdywgZmFsc2UpOworICB9OworCisgIC8vIFJldHVybiBhIHZlcnNpb24gb2YgdGhlIGFy
cmF5IHRoYXQgZG9lcyBub3QgY29udGFpbiB0aGUgc3BlY2lmaWVkIHZhbHVlKHMpLgorICBfLndp
dGhvdXQgPSBmdW5jdGlvbihhcnJheSkgeworICAgIHJldHVybiBfLmRpZmZlcmVuY2UoYXJyYXks
IHNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKSk7CisgIH07CisKKyAgLy8gUHJvZHVjZSBhIGR1cGxp
Y2F0ZS1mcmVlIHZlcnNpb24gb2YgdGhlIGFycmF5LiBJZiB0aGUgYXJyYXkgaGFzIGFscmVhZHkK
KyAgLy8gYmVlbiBzb3J0ZWQsIHlvdSBoYXZlIHRoZSBvcHRpb24gb2YgdXNpbmcgYSBmYXN0ZXIg
YWxnb3JpdGhtLgorICAvLyBBbGlhc2VkIGFzIGB1bmlxdWVgLgorICBfLnVuaXEgPSBfLnVuaXF1
ZSA9IGZ1bmN0aW9uKGFycmF5LCBpc1NvcnRlZCwgaXRlcmF0ZWUsIGNvbnRleHQpIHsKKyAgICBp
ZiAoIV8uaXNCb29sZWFuKGlzU29ydGVkKSkgeworICAgICAgY29udGV4dCA9IGl0ZXJhdGVlOwor
ICAgICAgaXRlcmF0ZWUgPSBpc1NvcnRlZDsKKyAgICAgIGlzU29ydGVkID0gZmFsc2U7CisgICAg
fQorICAgIGlmIChpdGVyYXRlZSAhPSBudWxsKSBpdGVyYXRlZSA9IGNiKGl0ZXJhdGVlLCBjb250
ZXh0KTsKKyAgICB2YXIgcmVzdWx0ID0gW107CisgICAgdmFyIHNlZW4gPSBbXTsKKyAgICBmb3Ig
KHZhciBpID0gMCwgbGVuZ3RoID0gZ2V0TGVuZ3RoKGFycmF5KTsgaSA8IGxlbmd0aDsgaSsrKSB7
CisgICAgICB2YXIgdmFsdWUgPSBhcnJheVtpXSwKKyAgICAgICAgICBjb21wdXRlZCA9IGl0ZXJh
dGVlID8gaXRlcmF0ZWUodmFsdWUsIGksIGFycmF5KSA6IHZhbHVlOworICAgICAgaWYgKGlzU29y
dGVkKSB7CisgICAgICAgIGlmICghaSB8fCBzZWVuICE9PSBjb21wdXRlZCkgcmVzdWx0LnB1c2go
dmFsdWUpOworICAgICAgICBzZWVuID0gY29tcHV0ZWQ7CisgICAgICB9IGVsc2UgaWYgKGl0ZXJh
dGVlKSB7CisgICAgICAgIGlmICghXy5jb250YWlucyhzZWVuLCBjb21wdXRlZCkpIHsKKyAgICAg
ICAgICBzZWVuLnB1c2goY29tcHV0ZWQpOworICAgICAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTsK
KyAgICAgICAgfQorICAgICAgfSBlbHNlIGlmICghXy5jb250YWlucyhyZXN1bHQsIHZhbHVlKSkg
eworICAgICAgICByZXN1bHQucHVzaCh2YWx1ZSk7CisgICAgICB9CisgICAgfQorICAgIHJldHVy
biByZXN1bHQ7CisgIH07CisKKyAgLy8gUHJvZHVjZSBhbiBhcnJheSB0aGF0IGNvbnRhaW5zIHRo
ZSB1bmlvbjogZWFjaCBkaXN0aW5jdCBlbGVtZW50IGZyb20gYWxsIG9mCisgIC8vIHRoZSBwYXNz
ZWQtaW4gYXJyYXlzLgorICBfLnVuaW9uID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIF8udW5p
cShmbGF0dGVuKGFyZ3VtZW50cywgdHJ1ZSwgdHJ1ZSkpOworICB9OworCisgIC8vIFByb2R1Y2Ug
YW4gYXJyYXkgdGhhdCBjb250YWlucyBldmVyeSBpdGVtIHNoYXJlZCBiZXR3ZWVuIGFsbCB0aGUK
KyAgLy8gcGFzc2VkLWluIGFycmF5cy4KKyAgXy5pbnRlcnNlY3Rpb24gPSBmdW5jdGlvbihhcnJh
eSkgeworICAgIHZhciByZXN1bHQgPSBbXTsKKyAgICB2YXIgYXJnc0xlbmd0aCA9IGFyZ3VtZW50
cy5sZW5ndGg7CisgICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IGdldExlbmd0aChhcnJheSk7
IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgdmFyIGl0ZW0gPSBhcnJheVtpXTsKKyAgICAgIGlm
IChfLmNvbnRhaW5zKHJlc3VsdCwgaXRlbSkpIGNvbnRpbnVlOworICAgICAgZm9yICh2YXIgaiA9
IDE7IGogPCBhcmdzTGVuZ3RoOyBqKyspIHsKKyAgICAgICAgaWYgKCFfLmNvbnRhaW5zKGFyZ3Vt
ZW50c1tqXSwgaXRlbSkpIGJyZWFrOworICAgICAgfQorICAgICAgaWYgKGogPT09IGFyZ3NMZW5n
dGgpIHJlc3VsdC5wdXNoKGl0ZW0pOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworICB9Owor
CisgIC8vIFRha2UgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBvbmUgYXJyYXkgYW5kIGEgbnVtYmVy
IG9mIG90aGVyIGFycmF5cy4KKyAgLy8gT25seSB0aGUgZWxlbWVudHMgcHJlc2VudCBpbiBqdXN0
IHRoZSBmaXJzdCBhcnJheSB3aWxsIHJlbWFpbi4KKyAgXy5kaWZmZXJlbmNlID0gZnVuY3Rpb24o
YXJyYXkpIHsKKyAgICB2YXIgcmVzdCA9IGZsYXR0ZW4oYXJndW1lbnRzLCB0cnVlLCB0cnVlLCAx
KTsKKyAgICByZXR1cm4gXy5maWx0ZXIoYXJyYXksIGZ1bmN0aW9uKHZhbHVlKXsKKyAgICAgIHJl
dHVybiAhXy5jb250YWlucyhyZXN0LCB2YWx1ZSk7CisgICAgfSk7CisgIH07CisKKyAgLy8gWmlw
IHRvZ2V0aGVyIG11bHRpcGxlIGxpc3RzIGludG8gYSBzaW5nbGUgYXJyYXkgLS0gZWxlbWVudHMg
dGhhdCBzaGFyZQorICAvLyBhbiBpbmRleCBnbyB0b2dldGhlci4KKyAgXy56aXAgPSBmdW5jdGlv
bigpIHsKKyAgICByZXR1cm4gXy51bnppcChhcmd1bWVudHMpOworICB9OworCisgIC8vIENvbXBs
ZW1lbnQgb2YgXy56aXAuIFVuemlwIGFjY2VwdHMgYW4gYXJyYXkgb2YgYXJyYXlzIGFuZCBncm91
cHMKKyAgLy8gZWFjaCBhcnJheSdzIGVsZW1lbnRzIG9uIHNoYXJlZCBpbmRpY2VzCisgIF8udW56
aXAgPSBmdW5jdGlvbihhcnJheSkgeworICAgIHZhciBsZW5ndGggPSBhcnJheSAmJiBfLm1heChh
cnJheSwgZ2V0TGVuZ3RoKS5sZW5ndGggfHwgMDsKKyAgICB2YXIgcmVzdWx0ID0gQXJyYXkobGVu
Z3RoKTsKKworICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4Kysp
IHsKKyAgICAgIHJlc3VsdFtpbmRleF0gPSBfLnBsdWNrKGFycmF5LCBpbmRleCk7CisgICAgfQor
ICAgIHJldHVybiByZXN1bHQ7CisgIH07CisKKyAgLy8gQ29udmVydHMgbGlzdHMgaW50byBvYmpl
Y3RzLiBQYXNzIGVpdGhlciBhIHNpbmdsZSBhcnJheSBvZiBgW2tleSwgdmFsdWVdYAorICAvLyBw
YWlycywgb3IgdHdvIHBhcmFsbGVsIGFycmF5cyBvZiB0aGUgc2FtZSBsZW5ndGggLS0gb25lIG9m
IGtleXMsIGFuZCBvbmUgb2YKKyAgLy8gdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWVzLgorICBfLm9i
amVjdCA9IGZ1bmN0aW9uKGxpc3QsIHZhbHVlcykgeworICAgIHZhciByZXN1bHQgPSB7fTsKKyAg
ICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gZ2V0TGVuZ3RoKGxpc3QpOyBpIDwgbGVuZ3RoOyBp
KyspIHsKKyAgICAgIGlmICh2YWx1ZXMpIHsKKyAgICAgICAgcmVzdWx0W2xpc3RbaV1dID0gdmFs
dWVzW2ldOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcmVzdWx0W2xpc3RbaV1bMF1dID0gbGlz
dFtpXVsxXTsKKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfTsKKworICAv
LyBHZW5lcmF0b3IgZnVuY3Rpb24gdG8gY3JlYXRlIHRoZSBmaW5kSW5kZXggYW5kIGZpbmRMYXN0
SW5kZXggZnVuY3Rpb25zCisgIGZ1bmN0aW9uIGNyZWF0ZVByZWRpY2F0ZUluZGV4RmluZGVyKGRp
cikgeworICAgIHJldHVybiBmdW5jdGlvbihhcnJheSwgcHJlZGljYXRlLCBjb250ZXh0KSB7Cisg
ICAgICBwcmVkaWNhdGUgPSBjYihwcmVkaWNhdGUsIGNvbnRleHQpOworICAgICAgdmFyIGxlbmd0
aCA9IGdldExlbmd0aChhcnJheSk7CisgICAgICB2YXIgaW5kZXggPSBkaXIgPiAwID8gMCA6IGxl
bmd0aCAtIDE7CisgICAgICBmb3IgKDsgaW5kZXggPj0gMCAmJiBpbmRleCA8IGxlbmd0aDsgaW5k
ZXggKz0gZGlyKSB7CisgICAgICAgIGlmIChwcmVkaWNhdGUoYXJyYXlbaW5kZXhdLCBpbmRleCwg
YXJyYXkpKSByZXR1cm4gaW5kZXg7CisgICAgICB9CisgICAgICByZXR1cm4gLTE7CisgICAgfTsK
KyAgfQorCisgIC8vIFJldHVybnMgdGhlIGZpcnN0IGluZGV4IG9uIGFuIGFycmF5LWxpa2UgdGhh
dCBwYXNzZXMgYSBwcmVkaWNhdGUgdGVzdAorICBfLmZpbmRJbmRleCA9IGNyZWF0ZVByZWRpY2F0
ZUluZGV4RmluZGVyKDEpOworICBfLmZpbmRMYXN0SW5kZXggPSBjcmVhdGVQcmVkaWNhdGVJbmRl
eEZpbmRlcigtMSk7CisKKyAgLy8gVXNlIGEgY29tcGFyYXRvciBmdW5jdGlvbiB0byBmaWd1cmUg
b3V0IHRoZSBzbWFsbGVzdCBpbmRleCBhdCB3aGljaAorICAvLyBhbiBvYmplY3Qgc2hvdWxkIGJl
IGluc2VydGVkIHNvIGFzIHRvIG1haW50YWluIG9yZGVyLiBVc2VzIGJpbmFyeSBzZWFyY2guCisg
IF8uc29ydGVkSW5kZXggPSBmdW5jdGlvbihhcnJheSwgb2JqLCBpdGVyYXRlZSwgY29udGV4dCkg
eworICAgIGl0ZXJhdGVlID0gY2IoaXRlcmF0ZWUsIGNvbnRleHQsIDEpOworICAgIHZhciB2YWx1
ZSA9IGl0ZXJhdGVlKG9iaik7CisgICAgdmFyIGxvdyA9IDAsIGhpZ2ggPSBnZXRMZW5ndGgoYXJy
YXkpOworICAgIHdoaWxlIChsb3cgPCBoaWdoKSB7CisgICAgICB2YXIgbWlkID0gTWF0aC5mbG9v
cigobG93ICsgaGlnaCkgLyAyKTsKKyAgICAgIGlmIChpdGVyYXRlZShhcnJheVttaWRdKSA8IHZh
bHVlKSBsb3cgPSBtaWQgKyAxOyBlbHNlIGhpZ2ggPSBtaWQ7CisgICAgfQorICAgIHJldHVybiBs
b3c7CisgIH07CisKKyAgLy8gR2VuZXJhdG9yIGZ1bmN0aW9uIHRvIGNyZWF0ZSB0aGUgaW5kZXhP
ZiBhbmQgbGFzdEluZGV4T2YgZnVuY3Rpb25zCisgIGZ1bmN0aW9uIGNyZWF0ZUluZGV4RmluZGVy
KGRpciwgcHJlZGljYXRlRmluZCwgc29ydGVkSW5kZXgpIHsKKyAgICByZXR1cm4gZnVuY3Rpb24o
YXJyYXksIGl0ZW0sIGlkeCkgeworICAgICAgdmFyIGkgPSAwLCBsZW5ndGggPSBnZXRMZW5ndGgo
YXJyYXkpOworICAgICAgaWYgKHR5cGVvZiBpZHggPT0gJ251bWJlcicpIHsKKyAgICAgICAgaWYg
KGRpciA+IDApIHsKKyAgICAgICAgICAgIGkgPSBpZHggPj0gMCA/IGlkeCA6IE1hdGgubWF4KGlk
eCArIGxlbmd0aCwgaSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBsZW5ndGggPSBp
ZHggPj0gMCA/IE1hdGgubWluKGlkeCArIDEsIGxlbmd0aCkgOiBpZHggKyBsZW5ndGggKyAxOwor
ICAgICAgICB9CisgICAgICB9IGVsc2UgaWYgKHNvcnRlZEluZGV4ICYmIGlkeCAmJiBsZW5ndGgp
IHsKKyAgICAgICAgaWR4ID0gc29ydGVkSW5kZXgoYXJyYXksIGl0ZW0pOworICAgICAgICByZXR1
cm4gYXJyYXlbaWR4XSA9PT0gaXRlbSA/IGlkeCA6IC0xOworICAgICAgfQorICAgICAgaWYgKGl0
ZW0gIT09IGl0ZW0pIHsKKyAgICAgICAgaWR4ID0gcHJlZGljYXRlRmluZChzbGljZS5jYWxsKGFy
cmF5LCBpLCBsZW5ndGgpLCBfLmlzTmFOKTsKKyAgICAgICAgcmV0dXJuIGlkeCA+PSAwID8gaWR4
ICsgaSA6IC0xOworICAgICAgfQorICAgICAgZm9yIChpZHggPSBkaXIgPiAwID8gaSA6IGxlbmd0
aCAtIDE7IGlkeCA+PSAwICYmIGlkeCA8IGxlbmd0aDsgaWR4ICs9IGRpcikgeworICAgICAgICBp
ZiAoYXJyYXlbaWR4XSA9PT0gaXRlbSkgcmV0dXJuIGlkeDsKKyAgICAgIH0KKyAgICAgIHJldHVy
biAtMTsKKyAgICB9OworICB9CisKKyAgLy8gUmV0dXJuIHRoZSBwb3NpdGlvbiBvZiB0aGUgZmly
c3Qgb2NjdXJyZW5jZSBvZiBhbiBpdGVtIGluIGFuIGFycmF5LAorICAvLyBvciAtMSBpZiB0aGUg
aXRlbSBpcyBub3QgaW5jbHVkZWQgaW4gdGhlIGFycmF5LgorICAvLyBJZiB0aGUgYXJyYXkgaXMg
bGFyZ2UgYW5kIGFscmVhZHkgaW4gc29ydCBvcmRlciwgcGFzcyBgdHJ1ZWAKKyAgLy8gZm9yICoq
aXNTb3J0ZWQqKiB0byB1c2UgYmluYXJ5IHNlYXJjaC4KKyAgXy5pbmRleE9mID0gY3JlYXRlSW5k
ZXhGaW5kZXIoMSwgXy5maW5kSW5kZXgsIF8uc29ydGVkSW5kZXgpOworICBfLmxhc3RJbmRleE9m
ID0gY3JlYXRlSW5kZXhGaW5kZXIoLTEsIF8uZmluZExhc3RJbmRleCk7CisKKyAgLy8gR2VuZXJh
dGUgYW4gaW50ZWdlciBBcnJheSBjb250YWluaW5nIGFuIGFyaXRobWV0aWMgcHJvZ3Jlc3Npb24u
IEEgcG9ydCBvZgorICAvLyB0aGUgbmF0aXZlIFB5dGhvbiBgcmFuZ2UoKWAgZnVuY3Rpb24uIFNl
ZQorICAvLyBbdGhlIFB5dGhvbiBkb2N1bWVudGF0aW9uXShodHRwOi8vZG9jcy5weXRob24ub3Jn
L2xpYnJhcnkvZnVuY3Rpb25zLmh0bWwjcmFuZ2UpLgorICBfLnJhbmdlID0gZnVuY3Rpb24oc3Rh
cnQsIHN0b3AsIHN0ZXApIHsKKyAgICBpZiAoc3RvcCA9PSBudWxsKSB7CisgICAgICBzdG9wID0g
c3RhcnQgfHwgMDsKKyAgICAgIHN0YXJ0ID0gMDsKKyAgICB9CisgICAgc3RlcCA9IHN0ZXAgfHwg
MTsKKworICAgIHZhciBsZW5ndGggPSBNYXRoLm1heChNYXRoLmNlaWwoKHN0b3AgLSBzdGFydCkg
LyBzdGVwKSwgMCk7CisgICAgdmFyIHJhbmdlID0gQXJyYXkobGVuZ3RoKTsKKworICAgIGZvciAo
dmFyIGlkeCA9IDA7IGlkeCA8IGxlbmd0aDsgaWR4KyssIHN0YXJ0ICs9IHN0ZXApIHsKKyAgICAg
IHJhbmdlW2lkeF0gPSBzdGFydDsKKyAgICB9CisKKyAgICByZXR1cm4gcmFuZ2U7CisgIH07CisK
KyAgLy8gRnVuY3Rpb24gKGFoZW0pIEZ1bmN0aW9ucworICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0K
KworICAvLyBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gZXhlY3V0ZSBhIGZ1bmN0aW9uIGFzIGEgY29u
c3RydWN0b3IKKyAgLy8gb3IgYSBub3JtYWwgZnVuY3Rpb24gd2l0aCB0aGUgcHJvdmlkZWQgYXJn
dW1lbnRzCisgIHZhciBleGVjdXRlQm91bmQgPSBmdW5jdGlvbihzb3VyY2VGdW5jLCBib3VuZEZ1
bmMsIGNvbnRleHQsIGNhbGxpbmdDb250ZXh0LCBhcmdzKSB7CisgICAgaWYgKCEoY2FsbGluZ0Nv
bnRleHQgaW5zdGFuY2VvZiBib3VuZEZ1bmMpKSByZXR1cm4gc291cmNlRnVuYy5hcHBseShjb250
ZXh0LCBhcmdzKTsKKyAgICB2YXIgc2VsZiA9IGJhc2VDcmVhdGUoc291cmNlRnVuYy5wcm90b3R5
cGUpOworICAgIHZhciByZXN1bHQgPSBzb3VyY2VGdW5jLmFwcGx5KHNlbGYsIGFyZ3MpOworICAg
IGlmIChfLmlzT2JqZWN0KHJlc3VsdCkpIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIHNlbGY7
CisgIH07CisKKyAgLy8gQ3JlYXRlIGEgZnVuY3Rpb24gYm91bmQgdG8gYSBnaXZlbiBvYmplY3Qg
KGFzc2lnbmluZyBgdGhpc2AsIGFuZCBhcmd1bWVudHMsCisgIC8vIG9wdGlvbmFsbHkpLiBEZWxl
Z2F0ZXMgdG8gKipFQ01BU2NyaXB0IDUqKidzIG5hdGl2ZSBgRnVuY3Rpb24uYmluZGAgaWYKKyAg
Ly8gYXZhaWxhYmxlLgorICBfLmJpbmQgPSBmdW5jdGlvbihmdW5jLCBjb250ZXh0KSB7CisgICAg
aWYgKG5hdGl2ZUJpbmQgJiYgZnVuYy5iaW5kID09PSBuYXRpdmVCaW5kKSByZXR1cm4gbmF0aXZl
QmluZC5hcHBseShmdW5jLCBzbGljZS5jYWxsKGFyZ3VtZW50cywgMSkpOworICAgIGlmICghXy5p
c0Z1bmN0aW9uKGZ1bmMpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdCaW5kIG11c3QgYmUgY2FsbGVk
IG9uIGEgZnVuY3Rpb24nKTsKKyAgICB2YXIgYXJncyA9IHNsaWNlLmNhbGwoYXJndW1lbnRzLCAy
KTsKKyAgICB2YXIgYm91bmQgPSBmdW5jdGlvbigpIHsKKyAgICAgIHJldHVybiBleGVjdXRlQm91
bmQoZnVuYywgYm91bmQsIGNvbnRleHQsIHRoaXMsIGFyZ3MuY29uY2F0KHNsaWNlLmNhbGwoYXJn
dW1lbnRzKSkpOworICAgIH07CisgICAgcmV0dXJuIGJvdW5kOworICB9OworCisgIC8vIFBhcnRp
YWxseSBhcHBseSBhIGZ1bmN0aW9uIGJ5IGNyZWF0aW5nIGEgdmVyc2lvbiB0aGF0IGhhcyBoYWQg
c29tZSBvZiBpdHMKKyAgLy8gYXJndW1lbnRzIHByZS1maWxsZWQsIHdpdGhvdXQgY2hhbmdpbmcg
aXRzIGR5bmFtaWMgYHRoaXNgIGNvbnRleHQuIF8gYWN0cworICAvLyBhcyBhIHBsYWNlaG9sZGVy
LCBhbGxvd2luZyBhbnkgY29tYmluYXRpb24gb2YgYXJndW1lbnRzIHRvIGJlIHByZS1maWxsZWQu
CisgIF8ucGFydGlhbCA9IGZ1bmN0aW9uKGZ1bmMpIHsKKyAgICB2YXIgYm91bmRBcmdzID0gc2xp
Y2UuY2FsbChhcmd1bWVudHMsIDEpOworICAgIHZhciBib3VuZCA9IGZ1bmN0aW9uKCkgeworICAg
ICAgdmFyIHBvc2l0aW9uID0gMCwgbGVuZ3RoID0gYm91bmRBcmdzLmxlbmd0aDsKKyAgICAgIHZh
ciBhcmdzID0gQXJyYXkobGVuZ3RoKTsKKyAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3Ro
OyBpKyspIHsKKyAgICAgICAgYXJnc1tpXSA9IGJvdW5kQXJnc1tpXSA9PT0gXyA/IGFyZ3VtZW50
c1twb3NpdGlvbisrXSA6IGJvdW5kQXJnc1tpXTsKKyAgICAgIH0KKyAgICAgIHdoaWxlIChwb3Np
dGlvbiA8IGFyZ3VtZW50cy5sZW5ndGgpIGFyZ3MucHVzaChhcmd1bWVudHNbcG9zaXRpb24rK10p
OworICAgICAgcmV0dXJuIGV4ZWN1dGVCb3VuZChmdW5jLCBib3VuZCwgdGhpcywgdGhpcywgYXJn
cyk7CisgICAgfTsKKyAgICByZXR1cm4gYm91bmQ7CisgIH07CisKKyAgLy8gQmluZCBhIG51bWJl
ciBvZiBhbiBvYmplY3QncyBtZXRob2RzIHRvIHRoYXQgb2JqZWN0LiBSZW1haW5pbmcgYXJndW1l
bnRzCisgIC8vIGFyZSB0aGUgbWV0aG9kIG5hbWVzIHRvIGJlIGJvdW5kLiBVc2VmdWwgZm9yIGVu
c3VyaW5nIHRoYXQgYWxsIGNhbGxiYWNrcworICAvLyBkZWZpbmVkIG9uIGFuIG9iamVjdCBiZWxv
bmcgdG8gaXQuCisgIF8uYmluZEFsbCA9IGZ1bmN0aW9uKG9iaikgeworICAgIHZhciBpLCBsZW5n
dGggPSBhcmd1bWVudHMubGVuZ3RoLCBrZXk7CisgICAgaWYgKGxlbmd0aCA8PSAxKSB0aHJvdyBu
ZXcgRXJyb3IoJ2JpbmRBbGwgbXVzdCBiZSBwYXNzZWQgZnVuY3Rpb24gbmFtZXMnKTsKKyAgICBm
b3IgKGkgPSAxOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgIGtleSA9IGFyZ3VtZW50c1tpXTsK
KyAgICAgIG9ialtrZXldID0gXy5iaW5kKG9ialtrZXldLCBvYmopOworICAgIH0KKyAgICByZXR1
cm4gb2JqOworICB9OworCisgIC8vIE1lbW9pemUgYW4gZXhwZW5zaXZlIGZ1bmN0aW9uIGJ5IHN0
b3JpbmcgaXRzIHJlc3VsdHMuCisgIF8ubWVtb2l6ZSA9IGZ1bmN0aW9uKGZ1bmMsIGhhc2hlcikg
eworICAgIHZhciBtZW1vaXplID0gZnVuY3Rpb24oa2V5KSB7CisgICAgICB2YXIgY2FjaGUgPSBt
ZW1vaXplLmNhY2hlOworICAgICAgdmFyIGFkZHJlc3MgPSAnJyArIChoYXNoZXIgPyBoYXNoZXIu
YXBwbHkodGhpcywgYXJndW1lbnRzKSA6IGtleSk7CisgICAgICBpZiAoIV8uaGFzKGNhY2hlLCBh
ZGRyZXNzKSkgY2FjaGVbYWRkcmVzc10gPSBmdW5jLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7Cisg
ICAgICByZXR1cm4gY2FjaGVbYWRkcmVzc107CisgICAgfTsKKyAgICBtZW1vaXplLmNhY2hlID0g
e307CisgICAgcmV0dXJuIG1lbW9pemU7CisgIH07CisKKyAgLy8gRGVsYXlzIGEgZnVuY3Rpb24g
Zm9yIHRoZSBnaXZlbiBudW1iZXIgb2YgbWlsbGlzZWNvbmRzLCBhbmQgdGhlbiBjYWxscworICAv
LyBpdCB3aXRoIHRoZSBhcmd1bWVudHMgc3VwcGxpZWQuCisgIF8uZGVsYXkgPSBmdW5jdGlvbihm
dW5jLCB3YWl0KSB7CisgICAgdmFyIGFyZ3MgPSBzbGljZS5jYWxsKGFyZ3VtZW50cywgMik7Cisg
ICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuY3Rpb24oKXsKKyAgICAgIHJldHVybiBmdW5jLmFwcGx5
KG51bGwsIGFyZ3MpOworICAgIH0sIHdhaXQpOworICB9OworCisgIC8vIERlZmVycyBhIGZ1bmN0
aW9uLCBzY2hlZHVsaW5nIGl0IHRvIHJ1biBhZnRlciB0aGUgY3VycmVudCBjYWxsIHN0YWNrIGhh
cworICAvLyBjbGVhcmVkLgorICBfLmRlZmVyID0gXy5wYXJ0aWFsKF8uZGVsYXksIF8sIDEpOwor
CisgIC8vIFJldHVybnMgYSBmdW5jdGlvbiwgdGhhdCwgd2hlbiBpbnZva2VkLCB3aWxsIG9ubHkg
YmUgdHJpZ2dlcmVkIGF0IG1vc3Qgb25jZQorICAvLyBkdXJpbmcgYSBnaXZlbiB3aW5kb3cgb2Yg
dGltZS4gTm9ybWFsbHksIHRoZSB0aHJvdHRsZWQgZnVuY3Rpb24gd2lsbCBydW4KKyAgLy8gYXMg
bXVjaCBhcyBpdCBjYW4sIHdpdGhvdXQgZXZlciBnb2luZyBtb3JlIHRoYW4gb25jZSBwZXIgYHdh
aXRgIGR1cmF0aW9uOworICAvLyBidXQgaWYgeW91J2QgbGlrZSB0byBkaXNhYmxlIHRoZSBleGVj
dXRpb24gb24gdGhlIGxlYWRpbmcgZWRnZSwgcGFzcworICAvLyBge2xlYWRpbmc6IGZhbHNlfWAu
IFRvIGRpc2FibGUgZXhlY3V0aW9uIG9uIHRoZSB0cmFpbGluZyBlZGdlLCBkaXR0by4KKyAgXy50
aHJvdHRsZSA9IGZ1bmN0aW9uKGZ1bmMsIHdhaXQsIG9wdGlvbnMpIHsKKyAgICB2YXIgY29udGV4
dCwgYXJncywgcmVzdWx0OworICAgIHZhciB0aW1lb3V0ID0gbnVsbDsKKyAgICB2YXIgcHJldmlv
dXMgPSAwOworICAgIGlmICghb3B0aW9ucykgb3B0aW9ucyA9IHt9OworICAgIHZhciBsYXRlciA9
IGZ1bmN0aW9uKCkgeworICAgICAgcHJldmlvdXMgPSBvcHRpb25zLmxlYWRpbmcgPT09IGZhbHNl
ID8gMCA6IF8ubm93KCk7CisgICAgICB0aW1lb3V0ID0gbnVsbDsKKyAgICAgIHJlc3VsdCA9IGZ1
bmMuYXBwbHkoY29udGV4dCwgYXJncyk7CisgICAgICBpZiAoIXRpbWVvdXQpIGNvbnRleHQgPSBh
cmdzID0gbnVsbDsKKyAgICB9OworICAgIHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgIHZhciBu
b3cgPSBfLm5vdygpOworICAgICAgaWYgKCFwcmV2aW91cyAmJiBvcHRpb25zLmxlYWRpbmcgPT09
IGZhbHNlKSBwcmV2aW91cyA9IG5vdzsKKyAgICAgIHZhciByZW1haW5pbmcgPSB3YWl0IC0gKG5v
dyAtIHByZXZpb3VzKTsKKyAgICAgIGNvbnRleHQgPSB0aGlzOworICAgICAgYXJncyA9IGFyZ3Vt
ZW50czsKKyAgICAgIGlmIChyZW1haW5pbmcgPD0gMCB8fCByZW1haW5pbmcgPiB3YWl0KSB7Cisg
ICAgICAgIGlmICh0aW1lb3V0KSB7CisgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpOwor
ICAgICAgICAgIHRpbWVvdXQgPSBudWxsOworICAgICAgICB9CisgICAgICAgIHByZXZpb3VzID0g
bm93OworICAgICAgICByZXN1bHQgPSBmdW5jLmFwcGx5KGNvbnRleHQsIGFyZ3MpOworICAgICAg
ICBpZiAoIXRpbWVvdXQpIGNvbnRleHQgPSBhcmdzID0gbnVsbDsKKyAgICAgIH0gZWxzZSBpZiAo
IXRpbWVvdXQgJiYgb3B0aW9ucy50cmFpbGluZyAhPT0gZmFsc2UpIHsKKyAgICAgICAgdGltZW91
dCA9IHNldFRpbWVvdXQobGF0ZXIsIHJlbWFpbmluZyk7CisgICAgICB9CisgICAgICByZXR1cm4g
cmVzdWx0OworICAgIH07CisgIH07CisKKyAgLy8gUmV0dXJucyBhIGZ1bmN0aW9uLCB0aGF0LCBh
cyBsb25nIGFzIGl0IGNvbnRpbnVlcyB0byBiZSBpbnZva2VkLCB3aWxsIG5vdAorICAvLyBiZSB0
cmlnZ2VyZWQuIFRoZSBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCBhZnRlciBpdCBzdG9wcyBiZWlu
ZyBjYWxsZWQgZm9yCisgIC8vIE4gbWlsbGlzZWNvbmRzLiBJZiBgaW1tZWRpYXRlYCBpcyBwYXNz
ZWQsIHRyaWdnZXIgdGhlIGZ1bmN0aW9uIG9uIHRoZQorICAvLyBsZWFkaW5nIGVkZ2UsIGluc3Rl
YWQgb2YgdGhlIHRyYWlsaW5nLgorICBfLmRlYm91bmNlID0gZnVuY3Rpb24oZnVuYywgd2FpdCwg
aW1tZWRpYXRlKSB7CisgICAgdmFyIHRpbWVvdXQsIGFyZ3MsIGNvbnRleHQsIHRpbWVzdGFtcCwg
cmVzdWx0OworCisgICAgdmFyIGxhdGVyID0gZnVuY3Rpb24oKSB7CisgICAgICB2YXIgbGFzdCA9
IF8ubm93KCkgLSB0aW1lc3RhbXA7CisKKyAgICAgIGlmIChsYXN0IDwgd2FpdCAmJiBsYXN0ID49
IDApIHsKKyAgICAgICAgdGltZW91dCA9IHNldFRpbWVvdXQobGF0ZXIsIHdhaXQgLSBsYXN0KTsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHRpbWVvdXQgPSBudWxsOworICAgICAgICBpZiAoIWlt
bWVkaWF0ZSkgeworICAgICAgICAgIHJlc3VsdCA9IGZ1bmMuYXBwbHkoY29udGV4dCwgYXJncyk7
CisgICAgICAgICAgaWYgKCF0aW1lb3V0KSBjb250ZXh0ID0gYXJncyA9IG51bGw7CisgICAgICAg
IH0KKyAgICAgIH0KKyAgICB9OworCisgICAgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAgICAgY29u
dGV4dCA9IHRoaXM7CisgICAgICBhcmdzID0gYXJndW1lbnRzOworICAgICAgdGltZXN0YW1wID0g
Xy5ub3coKTsKKyAgICAgIHZhciBjYWxsTm93ID0gaW1tZWRpYXRlICYmICF0aW1lb3V0OworICAg
ICAgaWYgKCF0aW1lb3V0KSB0aW1lb3V0ID0gc2V0VGltZW91dChsYXRlciwgd2FpdCk7CisgICAg
ICBpZiAoY2FsbE5vdykgeworICAgICAgICByZXN1bHQgPSBmdW5jLmFwcGx5KGNvbnRleHQsIGFy
Z3MpOworICAgICAgICBjb250ZXh0ID0gYXJncyA9IG51bGw7CisgICAgICB9CisKKyAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgfTsKKyAgfTsKKworICAvLyBSZXR1cm5zIHRoZSBmaXJzdCBmdW5j
dGlvbiBwYXNzZWQgYXMgYW4gYXJndW1lbnQgdG8gdGhlIHNlY29uZCwKKyAgLy8gYWxsb3dpbmcg
eW91IHRvIGFkanVzdCBhcmd1bWVudHMsIHJ1biBjb2RlIGJlZm9yZSBhbmQgYWZ0ZXIsIGFuZAor
ICAvLyBjb25kaXRpb25hbGx5IGV4ZWN1dGUgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uLgorICBfLndy
YXAgPSBmdW5jdGlvbihmdW5jLCB3cmFwcGVyKSB7CisgICAgcmV0dXJuIF8ucGFydGlhbCh3cmFw
cGVyLCBmdW5jKTsKKyAgfTsKKworICAvLyBSZXR1cm5zIGEgbmVnYXRlZCB2ZXJzaW9uIG9mIHRo
ZSBwYXNzZWQtaW4gcHJlZGljYXRlLgorICBfLm5lZ2F0ZSA9IGZ1bmN0aW9uKHByZWRpY2F0ZSkg
eworICAgIHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgIHJldHVybiAhcHJlZGljYXRlLmFwcGx5
KHRoaXMsIGFyZ3VtZW50cyk7CisgICAgfTsKKyAgfTsKKworICAvLyBSZXR1cm5zIGEgZnVuY3Rp
b24gdGhhdCBpcyB0aGUgY29tcG9zaXRpb24gb2YgYSBsaXN0IG9mIGZ1bmN0aW9ucywgZWFjaAor
ICAvLyBjb25zdW1pbmcgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgZnVuY3Rpb24gdGhhdCBmb2xs
b3dzLgorICBfLmNvbXBvc2UgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgYXJncyA9IGFyZ3VtZW50
czsKKyAgICB2YXIgc3RhcnQgPSBhcmdzLmxlbmd0aCAtIDE7CisgICAgcmV0dXJuIGZ1bmN0aW9u
KCkgeworICAgICAgdmFyIGkgPSBzdGFydDsKKyAgICAgIHZhciByZXN1bHQgPSBhcmdzW3N0YXJ0
XS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOworICAgICAgd2hpbGUgKGktLSkgcmVzdWx0ID0gYXJn
c1tpXS5jYWxsKHRoaXMsIHJlc3VsdCk7CisgICAgICByZXR1cm4gcmVzdWx0OworICAgIH07Cisg
IH07CisKKyAgLy8gUmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgd2lsbCBvbmx5IGJlIGV4ZWN1dGVk
IG9uIGFuZCBhZnRlciB0aGUgTnRoIGNhbGwuCisgIF8uYWZ0ZXIgPSBmdW5jdGlvbih0aW1lcywg
ZnVuYykgeworICAgIHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgIGlmICgtLXRpbWVzIDwgMSkg
eworICAgICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOworICAgICAgfQor
ICAgIH07CisgIH07CisKKyAgLy8gUmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgd2lsbCBvbmx5IGJl
IGV4ZWN1dGVkIHVwIHRvIChidXQgbm90IGluY2x1ZGluZykgdGhlIE50aCBjYWxsLgorICBfLmJl
Zm9yZSA9IGZ1bmN0aW9uKHRpbWVzLCBmdW5jKSB7CisgICAgdmFyIG1lbW87CisgICAgcmV0dXJu
IGZ1bmN0aW9uKCkgeworICAgICAgaWYgKC0tdGltZXMgPiAwKSB7CisgICAgICAgIG1lbW8gPSBm
dW5jLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CisgICAgICB9CisgICAgICBpZiAodGltZXMgPD0g
MSkgZnVuYyA9IG51bGw7CisgICAgICByZXR1cm4gbWVtbzsKKyAgICB9OworICB9OworCisgIC8v
IFJldHVybnMgYSBmdW5jdGlvbiB0aGF0IHdpbGwgYmUgZXhlY3V0ZWQgYXQgbW9zdCBvbmUgdGlt
ZSwgbm8gbWF0dGVyIGhvdworICAvLyBvZnRlbiB5b3UgY2FsbCBpdC4gVXNlZnVsIGZvciBsYXp5
IGluaXRpYWxpemF0aW9uLgorICBfLm9uY2UgPSBfLnBhcnRpYWwoXy5iZWZvcmUsIDIpOworCisg
IC8vIE9iamVjdCBGdW5jdGlvbnMKKyAgLy8gLS0tLS0tLS0tLS0tLS0tLQorCisgIC8vIEtleXMg
aW4gSUUgPCA5IHRoYXQgd29uJ3QgYmUgaXRlcmF0ZWQgYnkgYGZvciBrZXkgaW4gLi4uYCBhbmQg
dGh1cyBtaXNzZWQuCisgIHZhciBoYXNFbnVtQnVnID0gIXt0b1N0cmluZzogbnVsbH0ucHJvcGVy
dHlJc0VudW1lcmFibGUoJ3RvU3RyaW5nJyk7CisgIHZhciBub25FbnVtZXJhYmxlUHJvcHMgPSBb
J3ZhbHVlT2YnLCAnaXNQcm90b3R5cGVPZicsICd0b1N0cmluZycsCisgICAgICAgICAgICAgICAg
ICAgICAgJ3Byb3BlcnR5SXNFbnVtZXJhYmxlJywgJ2hhc093blByb3BlcnR5JywgJ3RvTG9jYWxl
U3RyaW5nJ107CisKKyAgZnVuY3Rpb24gY29sbGVjdE5vbkVudW1Qcm9wcyhvYmosIGtleXMpIHsK
KyAgICB2YXIgbm9uRW51bUlkeCA9IG5vbkVudW1lcmFibGVQcm9wcy5sZW5ndGg7CisgICAgdmFy
IGNvbnN0cnVjdG9yID0gb2JqLmNvbnN0cnVjdG9yOworICAgIHZhciBwcm90byA9IChfLmlzRnVu
Y3Rpb24oY29uc3RydWN0b3IpICYmIGNvbnN0cnVjdG9yLnByb3RvdHlwZSkgfHwgT2JqUHJvdG87
CisKKyAgICAvLyBDb25zdHJ1Y3RvciBpcyBhIHNwZWNpYWwgY2FzZS4KKyAgICB2YXIgcHJvcCA9
ICdjb25zdHJ1Y3Rvcic7CisgICAgaWYgKF8uaGFzKG9iaiwgcHJvcCkgJiYgIV8uY29udGFpbnMo
a2V5cywgcHJvcCkpIGtleXMucHVzaChwcm9wKTsKKworICAgIHdoaWxlIChub25FbnVtSWR4LS0p
IHsKKyAgICAgIHByb3AgPSBub25FbnVtZXJhYmxlUHJvcHNbbm9uRW51bUlkeF07CisgICAgICBp
ZiAocHJvcCBpbiBvYmogJiYgb2JqW3Byb3BdICE9PSBwcm90b1twcm9wXSAmJiAhXy5jb250YWlu
cyhrZXlzLCBwcm9wKSkgeworICAgICAgICBrZXlzLnB1c2gocHJvcCk7CisgICAgICB9CisgICAg
fQorICB9CisKKyAgLy8gUmV0cmlldmUgdGhlIG5hbWVzIG9mIGFuIG9iamVjdCdzIG93biBwcm9w
ZXJ0aWVzLgorICAvLyBEZWxlZ2F0ZXMgdG8gKipFQ01BU2NyaXB0IDUqKidzIG5hdGl2ZSBgT2Jq
ZWN0LmtleXNgCisgIF8ua2V5cyA9IGZ1bmN0aW9uKG9iaikgeworICAgIGlmICghXy5pc09iamVj
dChvYmopKSByZXR1cm4gW107CisgICAgaWYgKG5hdGl2ZUtleXMpIHJldHVybiBuYXRpdmVLZXlz
KG9iaik7CisgICAgdmFyIGtleXMgPSBbXTsKKyAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSBpZiAo
Xy5oYXMob2JqLCBrZXkpKSBrZXlzLnB1c2goa2V5KTsKKyAgICAvLyBBaGVtLCBJRSA8IDkuCisg
ICAgaWYgKGhhc0VudW1CdWcpIGNvbGxlY3ROb25FbnVtUHJvcHMob2JqLCBrZXlzKTsKKyAgICBy
ZXR1cm4ga2V5czsKKyAgfTsKKworICAvLyBSZXRyaWV2ZSBhbGwgdGhlIHByb3BlcnR5IG5hbWVz
IG9mIGFuIG9iamVjdC4KKyAgXy5hbGxLZXlzID0gZnVuY3Rpb24ob2JqKSB7CisgICAgaWYgKCFf
LmlzT2JqZWN0KG9iaikpIHJldHVybiBbXTsKKyAgICB2YXIga2V5cyA9IFtdOworICAgIGZvciAo
dmFyIGtleSBpbiBvYmopIGtleXMucHVzaChrZXkpOworICAgIC8vIEFoZW0sIElFIDwgOS4KKyAg
ICBpZiAoaGFzRW51bUJ1ZykgY29sbGVjdE5vbkVudW1Qcm9wcyhvYmosIGtleXMpOworICAgIHJl
dHVybiBrZXlzOworICB9OworCisgIC8vIFJldHJpZXZlIHRoZSB2YWx1ZXMgb2YgYW4gb2JqZWN0
J3MgcHJvcGVydGllcy4KKyAgXy52YWx1ZXMgPSBmdW5jdGlvbihvYmopIHsKKyAgICB2YXIga2V5
cyA9IF8ua2V5cyhvYmopOworICAgIHZhciBsZW5ndGggPSBrZXlzLmxlbmd0aDsKKyAgICB2YXIg
dmFsdWVzID0gQXJyYXkobGVuZ3RoKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsg
aSsrKSB7CisgICAgICB2YWx1ZXNbaV0gPSBvYmpba2V5c1tpXV07CisgICAgfQorICAgIHJldHVy
biB2YWx1ZXM7CisgIH07CisKKyAgLy8gUmV0dXJucyB0aGUgcmVzdWx0cyBvZiBhcHBseWluZyB0
aGUgaXRlcmF0ZWUgdG8gZWFjaCBlbGVtZW50IG9mIHRoZSBvYmplY3QKKyAgLy8gSW4gY29udHJh
c3QgdG8gXy5tYXAgaXQgcmV0dXJucyBhbiBvYmplY3QKKyAgXy5tYXBPYmplY3QgPSBmdW5jdGlv
bihvYmosIGl0ZXJhdGVlLCBjb250ZXh0KSB7CisgICAgaXRlcmF0ZWUgPSBjYihpdGVyYXRlZSwg
Y29udGV4dCk7CisgICAgdmFyIGtleXMgPSAgXy5rZXlzKG9iaiksCisgICAgICAgICAgbGVuZ3Ro
ID0ga2V5cy5sZW5ndGgsCisgICAgICAgICAgcmVzdWx0cyA9IHt9LAorICAgICAgICAgIGN1cnJl
bnRLZXk7CisgICAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsr
KSB7CisgICAgICAgIGN1cnJlbnRLZXkgPSBrZXlzW2luZGV4XTsKKyAgICAgICAgcmVzdWx0c1tj
dXJyZW50S2V5XSA9IGl0ZXJhdGVlKG9ialtjdXJyZW50S2V5XSwgY3VycmVudEtleSwgb2JqKTsK
KyAgICAgIH0KKyAgICAgIHJldHVybiByZXN1bHRzOworICB9OworCisgIC8vIENvbnZlcnQgYW4g
b2JqZWN0IGludG8gYSBsaXN0IG9mIGBba2V5LCB2YWx1ZV1gIHBhaXJzLgorICBfLnBhaXJzID0g
ZnVuY3Rpb24ob2JqKSB7CisgICAgdmFyIGtleXMgPSBfLmtleXMob2JqKTsKKyAgICB2YXIgbGVu
Z3RoID0ga2V5cy5sZW5ndGg7CisgICAgdmFyIHBhaXJzID0gQXJyYXkobGVuZ3RoKTsKKyAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICBwYWlyc1tpXSA9IFtrZXlz
W2ldLCBvYmpba2V5c1tpXV1dOworICAgIH0KKyAgICByZXR1cm4gcGFpcnM7CisgIH07CisKKyAg
Ly8gSW52ZXJ0IHRoZSBrZXlzIGFuZCB2YWx1ZXMgb2YgYW4gb2JqZWN0LiBUaGUgdmFsdWVzIG11
c3QgYmUgc2VyaWFsaXphYmxlLgorICBfLmludmVydCA9IGZ1bmN0aW9uKG9iaikgeworICAgIHZh
ciByZXN1bHQgPSB7fTsKKyAgICB2YXIga2V5cyA9IF8ua2V5cyhvYmopOworICAgIGZvciAodmFy
IGkgPSAwLCBsZW5ndGggPSBrZXlzLmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICBy
ZXN1bHRbb2JqW2tleXNbaV1dXSA9IGtleXNbaV07CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7
CisgIH07CisKKyAgLy8gUmV0dXJuIGEgc29ydGVkIGxpc3Qgb2YgdGhlIGZ1bmN0aW9uIG5hbWVz
IGF2YWlsYWJsZSBvbiB0aGUgb2JqZWN0LgorICAvLyBBbGlhc2VkIGFzIGBtZXRob2RzYAorICBf
LmZ1bmN0aW9ucyA9IF8ubWV0aG9kcyA9IGZ1bmN0aW9uKG9iaikgeworICAgIHZhciBuYW1lcyA9
IFtdOworICAgIGZvciAodmFyIGtleSBpbiBvYmopIHsKKyAgICAgIGlmIChfLmlzRnVuY3Rpb24o
b2JqW2tleV0pKSBuYW1lcy5wdXNoKGtleSk7CisgICAgfQorICAgIHJldHVybiBuYW1lcy5zb3J0
KCk7CisgIH07CisKKyAgLy8gRXh0ZW5kIGEgZ2l2ZW4gb2JqZWN0IHdpdGggYWxsIHRoZSBwcm9w
ZXJ0aWVzIGluIHBhc3NlZC1pbiBvYmplY3QocykuCisgIF8uZXh0ZW5kID0gY3JlYXRlQXNzaWdu
ZXIoXy5hbGxLZXlzKTsKKworICAvLyBBc3NpZ25zIGEgZ2l2ZW4gb2JqZWN0IHdpdGggYWxsIHRo
ZSBvd24gcHJvcGVydGllcyBpbiB0aGUgcGFzc2VkLWluIG9iamVjdChzKQorICAvLyAoaHR0cHM6
Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xv
YmFsX09iamVjdHMvT2JqZWN0L2Fzc2lnbikKKyAgXy5leHRlbmRPd24gPSBfLmFzc2lnbiA9IGNy
ZWF0ZUFzc2lnbmVyKF8ua2V5cyk7CisKKyAgLy8gUmV0dXJucyB0aGUgZmlyc3Qga2V5IG9uIGFu
IG9iamVjdCB0aGF0IHBhc3NlcyBhIHByZWRpY2F0ZSB0ZXN0CisgIF8uZmluZEtleSA9IGZ1bmN0
aW9uKG9iaiwgcHJlZGljYXRlLCBjb250ZXh0KSB7CisgICAgcHJlZGljYXRlID0gY2IocHJlZGlj
YXRlLCBjb250ZXh0KTsKKyAgICB2YXIga2V5cyA9IF8ua2V5cyhvYmopLCBrZXk7CisgICAgZm9y
ICh2YXIgaSA9IDAsIGxlbmd0aCA9IGtleXMubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAg
ICAgIGtleSA9IGtleXNbaV07CisgICAgICBpZiAocHJlZGljYXRlKG9ialtrZXldLCBrZXksIG9i
aikpIHJldHVybiBrZXk7CisgICAgfQorICB9OworCisgIC8vIFJldHVybiBhIGNvcHkgb2YgdGhl
IG9iamVjdCBvbmx5IGNvbnRhaW5pbmcgdGhlIHdoaXRlbGlzdGVkIHByb3BlcnRpZXMuCisgIF8u
cGljayA9IGZ1bmN0aW9uKG9iamVjdCwgb2l0ZXJhdGVlLCBjb250ZXh0KSB7CisgICAgdmFyIHJl
c3VsdCA9IHt9LCBvYmogPSBvYmplY3QsIGl0ZXJhdGVlLCBrZXlzOworICAgIGlmIChvYmogPT0g
bnVsbCkgcmV0dXJuIHJlc3VsdDsKKyAgICBpZiAoXy5pc0Z1bmN0aW9uKG9pdGVyYXRlZSkpIHsK
KyAgICAgIGtleXMgPSBfLmFsbEtleXMob2JqKTsKKyAgICAgIGl0ZXJhdGVlID0gb3B0aW1pemVD
YihvaXRlcmF0ZWUsIGNvbnRleHQpOworICAgIH0gZWxzZSB7CisgICAgICBrZXlzID0gZmxhdHRl
bihhcmd1bWVudHMsIGZhbHNlLCBmYWxzZSwgMSk7CisgICAgICBpdGVyYXRlZSA9IGZ1bmN0aW9u
KHZhbHVlLCBrZXksIG9iaikgeyByZXR1cm4ga2V5IGluIG9iajsgfTsKKyAgICAgIG9iaiA9IE9i
amVjdChvYmopOworICAgIH0KKyAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0ga2V5cy5sZW5n
dGg7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgdmFyIGtleSA9IGtleXNbaV07CisgICAgICB2
YXIgdmFsdWUgPSBvYmpba2V5XTsKKyAgICAgIGlmIChpdGVyYXRlZSh2YWx1ZSwga2V5LCBvYmop
KSByZXN1bHRba2V5XSA9IHZhbHVlOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworICB9Owor
CisgICAvLyBSZXR1cm4gYSBjb3B5IG9mIHRoZSBvYmplY3Qgd2l0aG91dCB0aGUgYmxhY2tsaXN0
ZWQgcHJvcGVydGllcy4KKyAgXy5vbWl0ID0gZnVuY3Rpb24ob2JqLCBpdGVyYXRlZSwgY29udGV4
dCkgeworICAgIGlmIChfLmlzRnVuY3Rpb24oaXRlcmF0ZWUpKSB7CisgICAgICBpdGVyYXRlZSA9
IF8ubmVnYXRlKGl0ZXJhdGVlKTsKKyAgICB9IGVsc2UgeworICAgICAgdmFyIGtleXMgPSBfLm1h
cChmbGF0dGVuKGFyZ3VtZW50cywgZmFsc2UsIGZhbHNlLCAxKSwgU3RyaW5nKTsKKyAgICAgIGl0
ZXJhdGVlID0gZnVuY3Rpb24odmFsdWUsIGtleSkgeworICAgICAgICByZXR1cm4gIV8uY29udGFp
bnMoa2V5cywga2V5KTsKKyAgICAgIH07CisgICAgfQorICAgIHJldHVybiBfLnBpY2sob2JqLCBp
dGVyYXRlZSwgY29udGV4dCk7CisgIH07CisKKyAgLy8gRmlsbCBpbiBhIGdpdmVuIG9iamVjdCB3
aXRoIGRlZmF1bHQgcHJvcGVydGllcy4KKyAgXy5kZWZhdWx0cyA9IGNyZWF0ZUFzc2lnbmVyKF8u
YWxsS2V5cywgdHJ1ZSk7CisKKyAgLy8gQ3JlYXRlcyBhbiBvYmplY3QgdGhhdCBpbmhlcml0cyBm
cm9tIHRoZSBnaXZlbiBwcm90b3R5cGUgb2JqZWN0LgorICAvLyBJZiBhZGRpdGlvbmFsIHByb3Bl
cnRpZXMgYXJlIHByb3ZpZGVkIHRoZW4gdGhleSB3aWxsIGJlIGFkZGVkIHRvIHRoZQorICAvLyBj
cmVhdGVkIG9iamVjdC4KKyAgXy5jcmVhdGUgPSBmdW5jdGlvbihwcm90b3R5cGUsIHByb3BzKSB7
CisgICAgdmFyIHJlc3VsdCA9IGJhc2VDcmVhdGUocHJvdG90eXBlKTsKKyAgICBpZiAocHJvcHMp
IF8uZXh0ZW5kT3duKHJlc3VsdCwgcHJvcHMpOworICAgIHJldHVybiByZXN1bHQ7CisgIH07CisK
KyAgLy8gQ3JlYXRlIGEgKHNoYWxsb3ctY2xvbmVkKSBkdXBsaWNhdGUgb2YgYW4gb2JqZWN0Lgor
ICBfLmNsb25lID0gZnVuY3Rpb24ob2JqKSB7CisgICAgaWYgKCFfLmlzT2JqZWN0KG9iaikpIHJl
dHVybiBvYmo7CisgICAgcmV0dXJuIF8uaXNBcnJheShvYmopID8gb2JqLnNsaWNlKCkgOiBfLmV4
dGVuZCh7fSwgb2JqKTsKKyAgfTsKKworICAvLyBJbnZva2VzIGludGVyY2VwdG9yIHdpdGggdGhl
IG9iaiwgYW5kIHRoZW4gcmV0dXJucyBvYmouCisgIC8vIFRoZSBwcmltYXJ5IHB1cnBvc2Ugb2Yg
dGhpcyBtZXRob2QgaXMgdG8gInRhcCBpbnRvIiBhIG1ldGhvZCBjaGFpbiwgaW4KKyAgLy8gb3Jk
ZXIgdG8gcGVyZm9ybSBvcGVyYXRpb25zIG9uIGludGVybWVkaWF0ZSByZXN1bHRzIHdpdGhpbiB0
aGUgY2hhaW4uCisgIF8udGFwID0gZnVuY3Rpb24ob2JqLCBpbnRlcmNlcHRvcikgeworICAgIGlu
dGVyY2VwdG9yKG9iaik7CisgICAgcmV0dXJuIG9iajsKKyAgfTsKKworICAvLyBSZXR1cm5zIHdo
ZXRoZXIgYW4gb2JqZWN0IGhhcyBhIGdpdmVuIHNldCBvZiBga2V5OnZhbHVlYCBwYWlycy4KKyAg
Xy5pc01hdGNoID0gZnVuY3Rpb24ob2JqZWN0LCBhdHRycykgeworICAgIHZhciBrZXlzID0gXy5r
ZXlzKGF0dHJzKSwgbGVuZ3RoID0ga2V5cy5sZW5ndGg7CisgICAgaWYgKG9iamVjdCA9PSBudWxs
KSByZXR1cm4gIWxlbmd0aDsKKyAgICB2YXIgb2JqID0gT2JqZWN0KG9iamVjdCk7CisgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgdmFyIGtleSA9IGtleXNbaV07
CisgICAgICBpZiAoYXR0cnNba2V5XSAhPT0gb2JqW2tleV0gfHwgIShrZXkgaW4gb2JqKSkgcmV0
dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKKyAgfTsKKworCisgIC8vIEludGVy
bmFsIHJlY3Vyc2l2ZSBjb21wYXJpc29uIGZ1bmN0aW9uIGZvciBgaXNFcXVhbGAuCisgIHZhciBl
cSA9IGZ1bmN0aW9uKGEsIGIsIGFTdGFjaywgYlN0YWNrKSB7CisgICAgLy8gSWRlbnRpY2FsIG9i
amVjdHMgYXJlIGVxdWFsLiBgMCA9PT0gLTBgLCBidXQgdGhleSBhcmVuJ3QgaWRlbnRpY2FsLgor
ICAgIC8vIFNlZSB0aGUgW0hhcm1vbnkgYGVnYWxgIHByb3Bvc2FsXShodHRwOi8vd2lraS5lY21h
c2NyaXB0Lm9yZy9kb2t1LnBocD9pZD1oYXJtb255OmVnYWwpLgorICAgIGlmIChhID09PSBiKSBy
ZXR1cm4gYSAhPT0gMCB8fCAxIC8gYSA9PT0gMSAvIGI7CisgICAgLy8gQSBzdHJpY3QgY29tcGFy
aXNvbiBpcyBuZWNlc3NhcnkgYmVjYXVzZSBgbnVsbCA9PSB1bmRlZmluZWRgLgorICAgIGlmIChh
ID09IG51bGwgfHwgYiA9PSBudWxsKSByZXR1cm4gYSA9PT0gYjsKKyAgICAvLyBVbndyYXAgYW55
IHdyYXBwZWQgb2JqZWN0cy4KKyAgICBpZiAoYSBpbnN0YW5jZW9mIF8pIGEgPSBhLl93cmFwcGVk
OworICAgIGlmIChiIGluc3RhbmNlb2YgXykgYiA9IGIuX3dyYXBwZWQ7CisgICAgLy8gQ29tcGFy
ZSBgW1tDbGFzc11dYCBuYW1lcy4KKyAgICB2YXIgY2xhc3NOYW1lID0gdG9TdHJpbmcuY2FsbChh
KTsKKyAgICBpZiAoY2xhc3NOYW1lICE9PSB0b1N0cmluZy5jYWxsKGIpKSByZXR1cm4gZmFsc2U7
CisgICAgc3dpdGNoIChjbGFzc05hbWUpIHsKKyAgICAgIC8vIFN0cmluZ3MsIG51bWJlcnMsIHJl
Z3VsYXIgZXhwcmVzc2lvbnMsIGRhdGVzLCBhbmQgYm9vbGVhbnMgYXJlIGNvbXBhcmVkIGJ5IHZh
bHVlLgorICAgICAgY2FzZSAnW29iamVjdCBSZWdFeHBdJzoKKyAgICAgIC8vIFJlZ0V4cHMgYXJl
IGNvZXJjZWQgdG8gc3RyaW5ncyBmb3IgY29tcGFyaXNvbiAoTm90ZTogJycgKyAvYS9pID09PSAn
L2EvaScpCisgICAgICBjYXNlICdbb2JqZWN0IFN0cmluZ10nOgorICAgICAgICAvLyBQcmltaXRp
dmVzIGFuZCB0aGVpciBjb3JyZXNwb25kaW5nIG9iamVjdCB3cmFwcGVycyBhcmUgZXF1aXZhbGVu
dDsgdGh1cywgYCI1ImAgaXMKKyAgICAgICAgLy8gZXF1aXZhbGVudCB0byBgbmV3IFN0cmluZygi
NSIpYC4KKyAgICAgICAgcmV0dXJuICcnICsgYSA9PT0gJycgKyBiOworICAgICAgY2FzZSAnW29i
amVjdCBOdW1iZXJdJzoKKyAgICAgICAgLy8gYE5hTmBzIGFyZSBlcXVpdmFsZW50LCBidXQgbm9u
LXJlZmxleGl2ZS4KKyAgICAgICAgLy8gT2JqZWN0KE5hTikgaXMgZXF1aXZhbGVudCB0byBOYU4K
KyAgICAgICAgaWYgKCthICE9PSArYSkgcmV0dXJuICtiICE9PSArYjsKKyAgICAgICAgLy8gQW4g
YGVnYWxgIGNvbXBhcmlzb24gaXMgcGVyZm9ybWVkIGZvciBvdGhlciBudW1lcmljIHZhbHVlcy4K
KyAgICAgICAgcmV0dXJuICthID09PSAwID8gMSAvICthID09PSAxIC8gYiA6ICthID09PSArYjsK
KyAgICAgIGNhc2UgJ1tvYmplY3QgRGF0ZV0nOgorICAgICAgY2FzZSAnW29iamVjdCBCb29sZWFu
XSc6CisgICAgICAgIC8vIENvZXJjZSBkYXRlcyBhbmQgYm9vbGVhbnMgdG8gbnVtZXJpYyBwcmlt
aXRpdmUgdmFsdWVzLiBEYXRlcyBhcmUgY29tcGFyZWQgYnkgdGhlaXIKKyAgICAgICAgLy8gbWls
bGlzZWNvbmQgcmVwcmVzZW50YXRpb25zLiBOb3RlIHRoYXQgaW52YWxpZCBkYXRlcyB3aXRoIG1p
bGxpc2Vjb25kIHJlcHJlc2VudGF0aW9ucworICAgICAgICAvLyBvZiBgTmFOYCBhcmUgbm90IGVx
dWl2YWxlbnQuCisgICAgICAgIHJldHVybiArYSA9PT0gK2I7CisgICAgfQorCisgICAgdmFyIGFy
ZUFycmF5cyA9IGNsYXNzTmFtZSA9PT0gJ1tvYmplY3QgQXJyYXldJzsKKyAgICBpZiAoIWFyZUFy
cmF5cykgeworICAgICAgaWYgKHR5cGVvZiBhICE9ICdvYmplY3QnIHx8IHR5cGVvZiBiICE9ICdv
YmplY3QnKSByZXR1cm4gZmFsc2U7CisKKyAgICAgIC8vIE9iamVjdHMgd2l0aCBkaWZmZXJlbnQg
Y29uc3RydWN0b3JzIGFyZSBub3QgZXF1aXZhbGVudCwgYnV0IGBPYmplY3RgcyBvciBgQXJyYXlg
cworICAgICAgLy8gZnJvbSBkaWZmZXJlbnQgZnJhbWVzIGFyZS4KKyAgICAgIHZhciBhQ3RvciA9
IGEuY29uc3RydWN0b3IsIGJDdG9yID0gYi5jb25zdHJ1Y3RvcjsKKyAgICAgIGlmIChhQ3RvciAh
PT0gYkN0b3IgJiYgIShfLmlzRnVuY3Rpb24oYUN0b3IpICYmIGFDdG9yIGluc3RhbmNlb2YgYUN0
b3IgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfLmlzRnVuY3Rpb24oYkN0b3Ip
ICYmIGJDdG9yIGluc3RhbmNlb2YgYkN0b3IpCisgICAgICAgICAgICAgICAgICAgICAgICAgICYm
ICgnY29uc3RydWN0b3InIGluIGEgJiYgJ2NvbnN0cnVjdG9yJyBpbiBiKSkgeworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICB9CisgICAgfQorICAgIC8vIEFzc3VtZSBlcXVhbGl0eSBmb3Ig
Y3ljbGljIHN0cnVjdHVyZXMuIFRoZSBhbGdvcml0aG0gZm9yIGRldGVjdGluZyBjeWNsaWMKKyAg
ICAvLyBzdHJ1Y3R1cmVzIGlzIGFkYXB0ZWQgZnJvbSBFUyA1LjEgc2VjdGlvbiAxNS4xMi4zLCBh
YnN0cmFjdCBvcGVyYXRpb24gYEpPYC4KKworICAgIC8vIEluaXRpYWxpemluZyBzdGFjayBvZiB0
cmF2ZXJzZWQgb2JqZWN0cy4KKyAgICAvLyBJdCdzIGRvbmUgaGVyZSBzaW5jZSB3ZSBvbmx5IG5l
ZWQgdGhlbSBmb3Igb2JqZWN0cyBhbmQgYXJyYXlzIGNvbXBhcmlzb24uCisgICAgYVN0YWNrID0g
YVN0YWNrIHx8IFtdOworICAgIGJTdGFjayA9IGJTdGFjayB8fCBbXTsKKyAgICB2YXIgbGVuZ3Ro
ID0gYVN0YWNrLmxlbmd0aDsKKyAgICB3aGlsZSAobGVuZ3RoLS0pIHsKKyAgICAgIC8vIExpbmVh
ciBzZWFyY2guIFBlcmZvcm1hbmNlIGlzIGludmVyc2VseSBwcm9wb3J0aW9uYWwgdG8gdGhlIG51
bWJlciBvZgorICAgICAgLy8gdW5pcXVlIG5lc3RlZCBzdHJ1Y3R1cmVzLgorICAgICAgaWYgKGFT
dGFja1tsZW5ndGhdID09PSBhKSByZXR1cm4gYlN0YWNrW2xlbmd0aF0gPT09IGI7CisgICAgfQor
CisgICAgLy8gQWRkIHRoZSBmaXJzdCBvYmplY3QgdG8gdGhlIHN0YWNrIG9mIHRyYXZlcnNlZCBv
YmplY3RzLgorICAgIGFTdGFjay5wdXNoKGEpOworICAgIGJTdGFjay5wdXNoKGIpOworCisgICAg
Ly8gUmVjdXJzaXZlbHkgY29tcGFyZSBvYmplY3RzIGFuZCBhcnJheXMuCisgICAgaWYgKGFyZUFy
cmF5cykgeworICAgICAgLy8gQ29tcGFyZSBhcnJheSBsZW5ndGhzIHRvIGRldGVybWluZSBpZiBh
IGRlZXAgY29tcGFyaXNvbiBpcyBuZWNlc3NhcnkuCisgICAgICBsZW5ndGggPSBhLmxlbmd0aDsK
KyAgICAgIGlmIChsZW5ndGggIT09IGIubGVuZ3RoKSByZXR1cm4gZmFsc2U7CisgICAgICAvLyBE
ZWVwIGNvbXBhcmUgdGhlIGNvbnRlbnRzLCBpZ25vcmluZyBub24tbnVtZXJpYyBwcm9wZXJ0aWVz
LgorICAgICAgd2hpbGUgKGxlbmd0aC0tKSB7CisgICAgICAgIGlmICghZXEoYVtsZW5ndGhdLCBi
W2xlbmd0aF0sIGFTdGFjaywgYlN0YWNrKSkgcmV0dXJuIGZhbHNlOworICAgICAgfQorICAgIH0g
ZWxzZSB7CisgICAgICAvLyBEZWVwIGNvbXBhcmUgb2JqZWN0cy4KKyAgICAgIHZhciBrZXlzID0g
Xy5rZXlzKGEpLCBrZXk7CisgICAgICBsZW5ndGggPSBrZXlzLmxlbmd0aDsKKyAgICAgIC8vIEVu
c3VyZSB0aGF0IGJvdGggb2JqZWN0cyBjb250YWluIHRoZSBzYW1lIG51bWJlciBvZiBwcm9wZXJ0
aWVzIGJlZm9yZSBjb21wYXJpbmcgZGVlcCBlcXVhbGl0eS4KKyAgICAgIGlmIChfLmtleXMoYiku
bGVuZ3RoICE9PSBsZW5ndGgpIHJldHVybiBmYWxzZTsKKyAgICAgIHdoaWxlIChsZW5ndGgtLSkg
eworICAgICAgICAvLyBEZWVwIGNvbXBhcmUgZWFjaCBtZW1iZXIKKyAgICAgICAga2V5ID0ga2V5
c1tsZW5ndGhdOworICAgICAgICBpZiAoIShfLmhhcyhiLCBrZXkpICYmIGVxKGFba2V5XSwgYltr
ZXldLCBhU3RhY2ssIGJTdGFjaykpKSByZXR1cm4gZmFsc2U7CisgICAgICB9CisgICAgfQorICAg
IC8vIFJlbW92ZSB0aGUgZmlyc3Qgb2JqZWN0IGZyb20gdGhlIHN0YWNrIG9mIHRyYXZlcnNlZCBv
YmplY3RzLgorICAgIGFTdGFjay5wb3AoKTsKKyAgICBiU3RhY2sucG9wKCk7CisgICAgcmV0dXJu
IHRydWU7CisgIH07CisKKyAgLy8gUGVyZm9ybSBhIGRlZXAgY29tcGFyaXNvbiB0byBjaGVjayBp
ZiB0d28gb2JqZWN0cyBhcmUgZXF1YWwuCisgIF8uaXNFcXVhbCA9IGZ1bmN0aW9uKGEsIGIpIHsK
KyAgICByZXR1cm4gZXEoYSwgYik7CisgIH07CisKKyAgLy8gSXMgYSBnaXZlbiBhcnJheSwgc3Ry
aW5nLCBvciBvYmplY3QgZW1wdHk/CisgIC8vIEFuICJlbXB0eSIgb2JqZWN0IGhhcyBubyBlbnVt
ZXJhYmxlIG93bi1wcm9wZXJ0aWVzLgorICBfLmlzRW1wdHkgPSBmdW5jdGlvbihvYmopIHsKKyAg
ICBpZiAob2JqID09IG51bGwpIHJldHVybiB0cnVlOworICAgIGlmIChpc0FycmF5TGlrZShvYmop
ICYmIChfLmlzQXJyYXkob2JqKSB8fCBfLmlzU3RyaW5nKG9iaikgfHwgXy5pc0FyZ3VtZW50cyhv
YmopKSkgcmV0dXJuIG9iai5sZW5ndGggPT09IDA7CisgICAgcmV0dXJuIF8ua2V5cyhvYmopLmxl
bmd0aCA9PT0gMDsKKyAgfTsKKworICAvLyBJcyBhIGdpdmVuIHZhbHVlIGEgRE9NIGVsZW1lbnQ/
CisgIF8uaXNFbGVtZW50ID0gZnVuY3Rpb24ob2JqKSB7CisgICAgcmV0dXJuICEhKG9iaiAmJiBv
Ymoubm9kZVR5cGUgPT09IDEpOworICB9OworCisgIC8vIElzIGEgZ2l2ZW4gdmFsdWUgYW4gYXJy
YXk/CisgIC8vIERlbGVnYXRlcyB0byBFQ01BNSdzIG5hdGl2ZSBBcnJheS5pc0FycmF5CisgIF8u
aXNBcnJheSA9IG5hdGl2ZUlzQXJyYXkgfHwgZnVuY3Rpb24ob2JqKSB7CisgICAgcmV0dXJuIHRv
U3RyaW5nLmNhbGwob2JqKSA9PT0gJ1tvYmplY3QgQXJyYXldJzsKKyAgfTsKKworICAvLyBJcyBh
IGdpdmVuIHZhcmlhYmxlIGFuIG9iamVjdD8KKyAgXy5pc09iamVjdCA9IGZ1bmN0aW9uKG9iaikg
eworICAgIHZhciB0eXBlID0gdHlwZW9mIG9iajsKKyAgICByZXR1cm4gdHlwZSA9PT0gJ2Z1bmN0
aW9uJyB8fCB0eXBlID09PSAnb2JqZWN0JyAmJiAhIW9iajsKKyAgfTsKKworICAvLyBBZGQgc29t
ZSBpc1R5cGUgbWV0aG9kczogaXNBcmd1bWVudHMsIGlzRnVuY3Rpb24sIGlzU3RyaW5nLCBpc051
bWJlciwgaXNEYXRlLCBpc1JlZ0V4cCwgaXNFcnJvci4KKyAgXy5lYWNoKFsnQXJndW1lbnRzJywg
J0Z1bmN0aW9uJywgJ1N0cmluZycsICdOdW1iZXInLCAnRGF0ZScsICdSZWdFeHAnLCAnRXJyb3In
XSwgZnVuY3Rpb24obmFtZSkgeworICAgIF9bJ2lzJyArIG5hbWVdID0gZnVuY3Rpb24ob2JqKSB7
CisgICAgICByZXR1cm4gdG9TdHJpbmcuY2FsbChvYmopID09PSAnW29iamVjdCAnICsgbmFtZSAr
ICddJzsKKyAgICB9OworICB9KTsKKworICAvLyBEZWZpbmUgYSBmYWxsYmFjayB2ZXJzaW9uIG9m
IHRoZSBtZXRob2QgaW4gYnJvd3NlcnMgKGFoZW0sIElFIDwgOSksIHdoZXJlCisgIC8vIHRoZXJl
IGlzbid0IGFueSBpbnNwZWN0YWJsZSAiQXJndW1lbnRzIiB0eXBlLgorICBpZiAoIV8uaXNBcmd1
bWVudHMoYXJndW1lbnRzKSkgeworICAgIF8uaXNBcmd1bWVudHMgPSBmdW5jdGlvbihvYmopIHsK
KyAgICAgIHJldHVybiBfLmhhcyhvYmosICdjYWxsZWUnKTsKKyAgICB9OworICB9CisKKyAgLy8g
T3B0aW1pemUgYGlzRnVuY3Rpb25gIGlmIGFwcHJvcHJpYXRlLiBXb3JrIGFyb3VuZCBzb21lIHR5
cGVvZiBidWdzIGluIG9sZCB2OCwKKyAgLy8gSUUgMTEgKCMxNjIxKSwgYW5kIGluIFNhZmFyaSA4
ICgjMTkyOSkuCisgIGlmICh0eXBlb2YgLy4vICE9ICdmdW5jdGlvbicgJiYgdHlwZW9mIEludDhB
cnJheSAhPSAnb2JqZWN0JykgeworICAgIF8uaXNGdW5jdGlvbiA9IGZ1bmN0aW9uKG9iaikgewor
ICAgICAgcmV0dXJuIHR5cGVvZiBvYmogPT0gJ2Z1bmN0aW9uJyB8fCBmYWxzZTsKKyAgICB9Owor
ICB9CisKKyAgLy8gSXMgYSBnaXZlbiBvYmplY3QgYSBmaW5pdGUgbnVtYmVyPworICBfLmlzRmlu
aXRlID0gZnVuY3Rpb24ob2JqKSB7CisgICAgcmV0dXJuIGlzRmluaXRlKG9iaikgJiYgIWlzTmFO
KHBhcnNlRmxvYXQob2JqKSk7CisgIH07CisKKyAgLy8gSXMgdGhlIGdpdmVuIHZhbHVlIGBOYU5g
PyAoTmFOIGlzIHRoZSBvbmx5IG51bWJlciB3aGljaCBkb2VzIG5vdCBlcXVhbCBpdHNlbGYpLgor
ICBfLmlzTmFOID0gZnVuY3Rpb24ob2JqKSB7CisgICAgcmV0dXJuIF8uaXNOdW1iZXIob2JqKSAm
JiBvYmogIT09ICtvYmo7CisgIH07CisKKyAgLy8gSXMgYSBnaXZlbiB2YWx1ZSBhIGJvb2xlYW4/
CisgIF8uaXNCb29sZWFuID0gZnVuY3Rpb24ob2JqKSB7CisgICAgcmV0dXJuIG9iaiA9PT0gdHJ1
ZSB8fCBvYmogPT09IGZhbHNlIHx8IHRvU3RyaW5nLmNhbGwob2JqKSA9PT0gJ1tvYmplY3QgQm9v
bGVhbl0nOworICB9OworCisgIC8vIElzIGEgZ2l2ZW4gdmFsdWUgZXF1YWwgdG8gbnVsbD8KKyAg
Xy5pc051bGwgPSBmdW5jdGlvbihvYmopIHsKKyAgICByZXR1cm4gb2JqID09PSBudWxsOworICB9
OworCisgIC8vIElzIGEgZ2l2ZW4gdmFyaWFibGUgdW5kZWZpbmVkPworICBfLmlzVW5kZWZpbmVk
ID0gZnVuY3Rpb24ob2JqKSB7CisgICAgcmV0dXJuIG9iaiA9PT0gdm9pZCAwOworICB9OworCisg
IC8vIFNob3J0Y3V0IGZ1bmN0aW9uIGZvciBjaGVja2luZyBpZiBhbiBvYmplY3QgaGFzIGEgZ2l2
ZW4gcHJvcGVydHkgZGlyZWN0bHkKKyAgLy8gb24gaXRzZWxmIChpbiBvdGhlciB3b3Jkcywgbm90
IG9uIGEgcHJvdG90eXBlKS4KKyAgXy5oYXMgPSBmdW5jdGlvbihvYmosIGtleSkgeworICAgIHJl
dHVybiBvYmogIT0gbnVsbCAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KTsKKyAgfTsK
KworICAvLyBVdGlsaXR5IEZ1bmN0aW9ucworICAvLyAtLS0tLS0tLS0tLS0tLS0tLQorCisgIC8v
IFJ1biBVbmRlcnNjb3JlLmpzIGluICpub0NvbmZsaWN0KiBtb2RlLCByZXR1cm5pbmcgdGhlIGBf
YCB2YXJpYWJsZSB0byBpdHMKKyAgLy8gcHJldmlvdXMgb3duZXIuIFJldHVybnMgYSByZWZlcmVu
Y2UgdG8gdGhlIFVuZGVyc2NvcmUgb2JqZWN0LgorICBfLm5vQ29uZmxpY3QgPSBmdW5jdGlvbigp
IHsKKyAgICByb290Ll8gPSBwcmV2aW91c1VuZGVyc2NvcmU7CisgICAgcmV0dXJuIHRoaXM7Cisg
IH07CisKKyAgLy8gS2VlcCB0aGUgaWRlbnRpdHkgZnVuY3Rpb24gYXJvdW5kIGZvciBkZWZhdWx0
IGl0ZXJhdGVlcy4KKyAgXy5pZGVudGl0eSA9IGZ1bmN0aW9uKHZhbHVlKSB7CisgICAgcmV0dXJu
IHZhbHVlOworICB9OworCisgIC8vIFByZWRpY2F0ZS1nZW5lcmF0aW5nIGZ1bmN0aW9ucy4gT2Z0
ZW4gdXNlZnVsIG91dHNpZGUgb2YgVW5kZXJzY29yZS4KKyAgXy5jb25zdGFudCA9IGZ1bmN0aW9u
KHZhbHVlKSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAgICAgcmV0dXJuIHZhbHVlOwor
ICAgIH07CisgIH07CisKKyAgXy5ub29wID0gZnVuY3Rpb24oKXt9OworCisgIF8ucHJvcGVydHkg
PSBwcm9wZXJ0eTsKKworICAvLyBHZW5lcmF0ZXMgYSBmdW5jdGlvbiBmb3IgYSBnaXZlbiBvYmpl
Y3QgdGhhdCByZXR1cm5zIGEgZ2l2ZW4gcHJvcGVydHkuCisgIF8ucHJvcGVydHlPZiA9IGZ1bmN0
aW9uKG9iaikgeworICAgIHJldHVybiBvYmogPT0gbnVsbCA/IGZ1bmN0aW9uKCl7fSA6IGZ1bmN0
aW9uKGtleSkgeworICAgICAgcmV0dXJuIG9ialtrZXldOworICAgIH07CisgIH07CisKKyAgLy8g
UmV0dXJucyBhIHByZWRpY2F0ZSBmb3IgY2hlY2tpbmcgd2hldGhlciBhbiBvYmplY3QgaGFzIGEg
Z2l2ZW4gc2V0IG9mCisgIC8vIGBrZXk6dmFsdWVgIHBhaXJzLgorICBfLm1hdGNoZXIgPSBfLm1h
dGNoZXMgPSBmdW5jdGlvbihhdHRycykgeworICAgIGF0dHJzID0gXy5leHRlbmRPd24oe30sIGF0
dHJzKTsKKyAgICByZXR1cm4gZnVuY3Rpb24ob2JqKSB7CisgICAgICByZXR1cm4gXy5pc01hdGNo
KG9iaiwgYXR0cnMpOworICAgIH07CisgIH07CisKKyAgLy8gUnVuIGEgZnVuY3Rpb24gKipuKiog
dGltZXMuCisgIF8udGltZXMgPSBmdW5jdGlvbihuLCBpdGVyYXRlZSwgY29udGV4dCkgeworICAg
IHZhciBhY2N1bSA9IEFycmF5KE1hdGgubWF4KDAsIG4pKTsKKyAgICBpdGVyYXRlZSA9IG9wdGlt
aXplQ2IoaXRlcmF0ZWUsIGNvbnRleHQsIDEpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsg
aSsrKSBhY2N1bVtpXSA9IGl0ZXJhdGVlKGkpOworICAgIHJldHVybiBhY2N1bTsKKyAgfTsKKwor
ICAvLyBSZXR1cm4gYSByYW5kb20gaW50ZWdlciBiZXR3ZWVuIG1pbiBhbmQgbWF4IChpbmNsdXNp
dmUpLgorICBfLnJhbmRvbSA9IGZ1bmN0aW9uKG1pbiwgbWF4KSB7CisgICAgaWYgKG1heCA9PSBu
dWxsKSB7CisgICAgICBtYXggPSBtaW47CisgICAgICBtaW4gPSAwOworICAgIH0KKyAgICByZXR1
cm4gbWluICsgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKG1heCAtIG1pbiArIDEpKTsKKyAg
fTsKKworICAvLyBBIChwb3NzaWJseSBmYXN0ZXIpIHdheSB0byBnZXQgdGhlIGN1cnJlbnQgdGlt
ZXN0YW1wIGFzIGFuIGludGVnZXIuCisgIF8ubm93ID0gRGF0ZS5ub3cgfHwgZnVuY3Rpb24oKSB7
CisgICAgcmV0dXJuIG5ldyBEYXRlKCkuZ2V0VGltZSgpOworICB9OworCisgICAvLyBMaXN0IG9m
IEhUTUwgZW50aXRpZXMgZm9yIGVzY2FwaW5nLgorICB2YXIgZXNjYXBlTWFwID0geworICAgICcm
JzogJyZhbXA7JywKKyAgICAnPCc6ICcmbHQ7JywKKyAgICAnPic6ICcmZ3Q7JywKKyAgICAnIic6
ICcmcXVvdDsnLAorICAgICInIjogJyYjeDI3OycsCisgICAgJ2AnOiAnJiN4NjA7JworICB9Owor
ICB2YXIgdW5lc2NhcGVNYXAgPSBfLmludmVydChlc2NhcGVNYXApOworCisgIC8vIEZ1bmN0aW9u
cyBmb3IgZXNjYXBpbmcgYW5kIHVuZXNjYXBpbmcgc3RyaW5ncyB0by9mcm9tIEhUTUwgaW50ZXJw
b2xhdGlvbi4KKyAgdmFyIGNyZWF0ZUVzY2FwZXIgPSBmdW5jdGlvbihtYXApIHsKKyAgICB2YXIg
ZXNjYXBlciA9IGZ1bmN0aW9uKG1hdGNoKSB7CisgICAgICByZXR1cm4gbWFwW21hdGNoXTsKKyAg
ICB9OworICAgIC8vIFJlZ2V4ZXMgZm9yIGlkZW50aWZ5aW5nIGEga2V5IHRoYXQgbmVlZHMgdG8g
YmUgZXNjYXBlZAorICAgIHZhciBzb3VyY2UgPSAnKD86JyArIF8ua2V5cyhtYXApLmpvaW4oJ3wn
KSArICcpJzsKKyAgICB2YXIgdGVzdFJlZ2V4cCA9IFJlZ0V4cChzb3VyY2UpOworICAgIHZhciBy
ZXBsYWNlUmVnZXhwID0gUmVnRXhwKHNvdXJjZSwgJ2cnKTsKKyAgICByZXR1cm4gZnVuY3Rpb24o
c3RyaW5nKSB7CisgICAgICBzdHJpbmcgPSBzdHJpbmcgPT0gbnVsbCA/ICcnIDogJycgKyBzdHJp
bmc7CisgICAgICByZXR1cm4gdGVzdFJlZ2V4cC50ZXN0KHN0cmluZykgPyBzdHJpbmcucmVwbGFj
ZShyZXBsYWNlUmVnZXhwLCBlc2NhcGVyKSA6IHN0cmluZzsKKyAgICB9OworICB9OworICBfLmVz
Y2FwZSA9IGNyZWF0ZUVzY2FwZXIoZXNjYXBlTWFwKTsKKyAgXy51bmVzY2FwZSA9IGNyZWF0ZUVz
Y2FwZXIodW5lc2NhcGVNYXApOworCisgIC8vIElmIHRoZSB2YWx1ZSBvZiB0aGUgbmFtZWQgYHBy
b3BlcnR5YCBpcyBhIGZ1bmN0aW9uIHRoZW4gaW52b2tlIGl0IHdpdGggdGhlCisgIC8vIGBvYmpl
Y3RgIGFzIGNvbnRleHQ7IG90aGVyd2lzZSwgcmV0dXJuIGl0LgorICBfLnJlc3VsdCA9IGZ1bmN0
aW9uKG9iamVjdCwgcHJvcGVydHksIGZhbGxiYWNrKSB7CisgICAgdmFyIHZhbHVlID0gb2JqZWN0
ID09IG51bGwgPyB2b2lkIDAgOiBvYmplY3RbcHJvcGVydHldOworICAgIGlmICh2YWx1ZSA9PT0g
dm9pZCAwKSB7CisgICAgICB2YWx1ZSA9IGZhbGxiYWNrOworICAgIH0KKyAgICByZXR1cm4gXy5p
c0Z1bmN0aW9uKHZhbHVlKSA/IHZhbHVlLmNhbGwob2JqZWN0KSA6IHZhbHVlOworICB9OworCisg
IC8vIEdlbmVyYXRlIGEgdW5pcXVlIGludGVnZXIgaWQgKHVuaXF1ZSB3aXRoaW4gdGhlIGVudGly
ZSBjbGllbnQgc2Vzc2lvbikuCisgIC8vIFVzZWZ1bCBmb3IgdGVtcG9yYXJ5IERPTSBpZHMuCisg
IHZhciBpZENvdW50ZXIgPSAwOworICBfLnVuaXF1ZUlkID0gZnVuY3Rpb24ocHJlZml4KSB7Cisg
ICAgdmFyIGlkID0gKytpZENvdW50ZXIgKyAnJzsKKyAgICByZXR1cm4gcHJlZml4ID8gcHJlZml4
ICsgaWQgOiBpZDsKKyAgfTsKKworICAvLyBCeSBkZWZhdWx0LCBVbmRlcnNjb3JlIHVzZXMgRVJC
LXN0eWxlIHRlbXBsYXRlIGRlbGltaXRlcnMsIGNoYW5nZSB0aGUKKyAgLy8gZm9sbG93aW5nIHRl
bXBsYXRlIHNldHRpbmdzIHRvIHVzZSBhbHRlcm5hdGl2ZSBkZWxpbWl0ZXJzLgorICBfLnRlbXBs
YXRlU2V0dGluZ3MgPSB7CisgICAgZXZhbHVhdGUgICAgOiAvPCUoW1xzXFNdKz8pJT4vZywKKyAg
ICBpbnRlcnBvbGF0ZSA6IC88JT0oW1xzXFNdKz8pJT4vZywKKyAgICBlc2NhcGUgICAgICA6IC88
JS0oW1xzXFNdKz8pJT4vZworICB9OworCisgIC8vIFdoZW4gY3VzdG9taXppbmcgYHRlbXBsYXRl
U2V0dGluZ3NgLCBpZiB5b3UgZG9uJ3Qgd2FudCB0byBkZWZpbmUgYW4KKyAgLy8gaW50ZXJwb2xh
dGlvbiwgZXZhbHVhdGlvbiBvciBlc2NhcGluZyByZWdleCwgd2UgbmVlZCBvbmUgdGhhdCBpcwor
ICAvLyBndWFyYW50ZWVkIG5vdCB0byBtYXRjaC4KKyAgdmFyIG5vTWF0Y2ggPSAvKC4pXi87CisK
KyAgLy8gQ2VydGFpbiBjaGFyYWN0ZXJzIG5lZWQgdG8gYmUgZXNjYXBlZCBzbyB0aGF0IHRoZXkg
Y2FuIGJlIHB1dCBpbnRvIGEKKyAgLy8gc3RyaW5nIGxpdGVyYWwuCisgIHZhciBlc2NhcGVzID0g
eworICAgICInIjogICAgICAiJyIsCisgICAgJ1xcJzogICAgICdcXCcsCisgICAgJ1xyJzogICAg
ICdyJywKKyAgICAnXG4nOiAgICAgJ24nLAorICAgICdcdTIwMjgnOiAndTIwMjgnLAorICAgICdc
dTIwMjknOiAndTIwMjknCisgIH07CisKKyAgdmFyIGVzY2FwZXIgPSAvXFx8J3xccnxcbnxcdTIw
Mjh8XHUyMDI5L2c7CisKKyAgdmFyIGVzY2FwZUNoYXIgPSBmdW5jdGlvbihtYXRjaCkgeworICAg
IHJldHVybiAnXFwnICsgZXNjYXBlc1ttYXRjaF07CisgIH07CisKKyAgLy8gSmF2YVNjcmlwdCBt
aWNyby10ZW1wbGF0aW5nLCBzaW1pbGFyIHRvIEpvaG4gUmVzaWcncyBpbXBsZW1lbnRhdGlvbi4K
KyAgLy8gVW5kZXJzY29yZSB0ZW1wbGF0aW5nIGhhbmRsZXMgYXJiaXRyYXJ5IGRlbGltaXRlcnMs
IHByZXNlcnZlcyB3aGl0ZXNwYWNlLAorICAvLyBhbmQgY29ycmVjdGx5IGVzY2FwZXMgcXVvdGVz
IHdpdGhpbiBpbnRlcnBvbGF0ZWQgY29kZS4KKyAgLy8gTkI6IGBvbGRTZXR0aW5nc2Agb25seSBl
eGlzdHMgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LgorICBfLnRlbXBsYXRlID0gZnVuY3Rp
b24odGV4dCwgc2V0dGluZ3MsIG9sZFNldHRpbmdzKSB7CisgICAgaWYgKCFzZXR0aW5ncyAmJiBv
bGRTZXR0aW5ncykgc2V0dGluZ3MgPSBvbGRTZXR0aW5nczsKKyAgICBzZXR0aW5ncyA9IF8uZGVm
YXVsdHMoe30sIHNldHRpbmdzLCBfLnRlbXBsYXRlU2V0dGluZ3MpOworCisgICAgLy8gQ29tYmlu
ZSBkZWxpbWl0ZXJzIGludG8gb25lIHJlZ3VsYXIgZXhwcmVzc2lvbiB2aWEgYWx0ZXJuYXRpb24u
CisgICAgdmFyIG1hdGNoZXIgPSBSZWdFeHAoWworICAgICAgKHNldHRpbmdzLmVzY2FwZSB8fCBu
b01hdGNoKS5zb3VyY2UsCisgICAgICAoc2V0dGluZ3MuaW50ZXJwb2xhdGUgfHwgbm9NYXRjaCku
c291cmNlLAorICAgICAgKHNldHRpbmdzLmV2YWx1YXRlIHx8IG5vTWF0Y2gpLnNvdXJjZQorICAg
IF0uam9pbignfCcpICsgJ3wkJywgJ2cnKTsKKworICAgIC8vIENvbXBpbGUgdGhlIHRlbXBsYXRl
IHNvdXJjZSwgZXNjYXBpbmcgc3RyaW5nIGxpdGVyYWxzIGFwcHJvcHJpYXRlbHkuCisgICAgdmFy
IGluZGV4ID0gMDsKKyAgICB2YXIgc291cmNlID0gIl9fcCs9JyI7CisgICAgdGV4dC5yZXBsYWNl
KG1hdGNoZXIsIGZ1bmN0aW9uKG1hdGNoLCBlc2NhcGUsIGludGVycG9sYXRlLCBldmFsdWF0ZSwg
b2Zmc2V0KSB7CisgICAgICBzb3VyY2UgKz0gdGV4dC5zbGljZShpbmRleCwgb2Zmc2V0KS5yZXBs
YWNlKGVzY2FwZXIsIGVzY2FwZUNoYXIpOworICAgICAgaW5kZXggPSBvZmZzZXQgKyBtYXRjaC5s
ZW5ndGg7CisKKyAgICAgIGlmIChlc2NhcGUpIHsKKyAgICAgICAgc291cmNlICs9ICInK1xuKChf
X3Q9KCIgKyBlc2NhcGUgKyAiKSk9PW51bGw/Jyc6Xy5lc2NhcGUoX190KSkrXG4nIjsKKyAgICAg
IH0gZWxzZSBpZiAoaW50ZXJwb2xhdGUpIHsKKyAgICAgICAgc291cmNlICs9ICInK1xuKChfX3Q9
KCIgKyBpbnRlcnBvbGF0ZSArICIpKT09bnVsbD8nJzpfX3QpK1xuJyI7CisgICAgICB9IGVsc2Ug
aWYgKGV2YWx1YXRlKSB7CisgICAgICAgIHNvdXJjZSArPSAiJztcbiIgKyBldmFsdWF0ZSArICJc
bl9fcCs9JyI7CisgICAgICB9CisKKyAgICAgIC8vIEFkb2JlIFZNcyBuZWVkIHRoZSBtYXRjaCBy
ZXR1cm5lZCB0byBwcm9kdWNlIHRoZSBjb3JyZWN0IG9mZmVzdC4KKyAgICAgIHJldHVybiBtYXRj
aDsKKyAgICB9KTsKKyAgICBzb3VyY2UgKz0gIic7XG4iOworCisgICAgLy8gSWYgYSB2YXJpYWJs
ZSBpcyBub3Qgc3BlY2lmaWVkLCBwbGFjZSBkYXRhIHZhbHVlcyBpbiBsb2NhbCBzY29wZS4KKyAg
ICBpZiAoIXNldHRpbmdzLnZhcmlhYmxlKSBzb3VyY2UgPSAnd2l0aChvYmp8fHt9KXtcbicgKyBz
b3VyY2UgKyAnfVxuJzsKKworICAgIHNvdXJjZSA9ICJ2YXIgX190LF9fcD0nJyxfX2o9QXJyYXku
cHJvdG90eXBlLmpvaW4sIiArCisgICAgICAicHJpbnQ9ZnVuY3Rpb24oKXtfX3ArPV9fai5jYWxs
KGFyZ3VtZW50cywnJyk7fTtcbiIgKworICAgICAgc291cmNlICsgJ3JldHVybiBfX3A7XG4nOwor
CisgICAgdHJ5IHsKKyAgICAgIHZhciByZW5kZXIgPSBuZXcgRnVuY3Rpb24oc2V0dGluZ3MudmFy
aWFibGUgfHwgJ29iaicsICdfJywgc291cmNlKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICBl
LnNvdXJjZSA9IHNvdXJjZTsKKyAgICAgIHRocm93IGU7CisgICAgfQorCisgICAgdmFyIHRlbXBs
YXRlID0gZnVuY3Rpb24oZGF0YSkgeworICAgICAgcmV0dXJuIHJlbmRlci5jYWxsKHRoaXMsIGRh
dGEsIF8pOworICAgIH07CisKKyAgICAvLyBQcm92aWRlIHRoZSBjb21waWxlZCBzb3VyY2UgYXMg
YSBjb252ZW5pZW5jZSBmb3IgcHJlY29tcGlsYXRpb24uCisgICAgdmFyIGFyZ3VtZW50ID0gc2V0
dGluZ3MudmFyaWFibGUgfHwgJ29iaic7CisgICAgdGVtcGxhdGUuc291cmNlID0gJ2Z1bmN0aW9u
KCcgKyBhcmd1bWVudCArICcpe1xuJyArIHNvdXJjZSArICd9JzsKKworICAgIHJldHVybiB0ZW1w
bGF0ZTsKKyAgfTsKKworICAvLyBBZGQgYSAiY2hhaW4iIGZ1bmN0aW9uLiBTdGFydCBjaGFpbmlu
ZyBhIHdyYXBwZWQgVW5kZXJzY29yZSBvYmplY3QuCisgIF8uY2hhaW4gPSBmdW5jdGlvbihvYmop
IHsKKyAgICB2YXIgaW5zdGFuY2UgPSBfKG9iaik7CisgICAgaW5zdGFuY2UuX2NoYWluID0gdHJ1
ZTsKKyAgICByZXR1cm4gaW5zdGFuY2U7CisgIH07CisKKyAgLy8gT09QCisgIC8vIC0tLS0tLS0t
LS0tLS0tLQorICAvLyBJZiBVbmRlcnNjb3JlIGlzIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLCBpdCBy
ZXR1cm5zIGEgd3JhcHBlZCBvYmplY3QgdGhhdAorICAvLyBjYW4gYmUgdXNlZCBPTy1zdHlsZS4g
VGhpcyB3cmFwcGVyIGhvbGRzIGFsdGVyZWQgdmVyc2lvbnMgb2YgYWxsIHRoZQorICAvLyB1bmRl
cnNjb3JlIGZ1bmN0aW9ucy4gV3JhcHBlZCBvYmplY3RzIG1heSBiZSBjaGFpbmVkLgorCisgIC8v
IEhlbHBlciBmdW5jdGlvbiB0byBjb250aW51ZSBjaGFpbmluZyBpbnRlcm1lZGlhdGUgcmVzdWx0
cy4KKyAgdmFyIHJlc3VsdCA9IGZ1bmN0aW9uKGluc3RhbmNlLCBvYmopIHsKKyAgICByZXR1cm4g
aW5zdGFuY2UuX2NoYWluID8gXyhvYmopLmNoYWluKCkgOiBvYmo7CisgIH07CisKKyAgLy8gQWRk
IHlvdXIgb3duIGN1c3RvbSBmdW5jdGlvbnMgdG8gdGhlIFVuZGVyc2NvcmUgb2JqZWN0LgorICBf
Lm1peGluID0gZnVuY3Rpb24ob2JqKSB7CisgICAgXy5lYWNoKF8uZnVuY3Rpb25zKG9iaiksIGZ1
bmN0aW9uKG5hbWUpIHsKKyAgICAgIHZhciBmdW5jID0gX1tuYW1lXSA9IG9ialtuYW1lXTsKKyAg
ICAgIF8ucHJvdG90eXBlW25hbWVdID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBhcmdzID0g
W3RoaXMuX3dyYXBwZWRdOworICAgICAgICBwdXNoLmFwcGx5KGFyZ3MsIGFyZ3VtZW50cyk7Cisg
ICAgICAgIHJldHVybiByZXN1bHQodGhpcywgZnVuYy5hcHBseShfLCBhcmdzKSk7CisgICAgICB9
OworICAgIH0pOworICB9OworCisgIC8vIEFkZCBhbGwgb2YgdGhlIFVuZGVyc2NvcmUgZnVuY3Rp
b25zIHRvIHRoZSB3cmFwcGVyIG9iamVjdC4KKyAgXy5taXhpbihfKTsKKworICAvLyBBZGQgYWxs
IG11dGF0b3IgQXJyYXkgZnVuY3Rpb25zIHRvIHRoZSB3cmFwcGVyLgorICBfLmVhY2goWydwb3An
LCAncHVzaCcsICdyZXZlcnNlJywgJ3NoaWZ0JywgJ3NvcnQnLCAnc3BsaWNlJywgJ3Vuc2hpZnQn
XSwgZnVuY3Rpb24obmFtZSkgeworICAgIHZhciBtZXRob2QgPSBBcnJheVByb3RvW25hbWVdOwor
ICAgIF8ucHJvdG90eXBlW25hbWVdID0gZnVuY3Rpb24oKSB7CisgICAgICB2YXIgb2JqID0gdGhp
cy5fd3JhcHBlZDsKKyAgICAgIG1ldGhvZC5hcHBseShvYmosIGFyZ3VtZW50cyk7CisgICAgICBp
ZiAoKG5hbWUgPT09ICdzaGlmdCcgfHwgbmFtZSA9PT0gJ3NwbGljZScpICYmIG9iai5sZW5ndGgg
PT09IDApIGRlbGV0ZSBvYmpbMF07CisgICAgICByZXR1cm4gcmVzdWx0KHRoaXMsIG9iaik7Cisg
ICAgfTsKKyAgfSk7CisKKyAgLy8gQWRkIGFsbCBhY2Nlc3NvciBBcnJheSBmdW5jdGlvbnMgdG8g
dGhlIHdyYXBwZXIuCisgIF8uZWFjaChbJ2NvbmNhdCcsICdqb2luJywgJ3NsaWNlJ10sIGZ1bmN0
aW9uKG5hbWUpIHsKKyAgICB2YXIgbWV0aG9kID0gQXJyYXlQcm90b1tuYW1lXTsKKyAgICBfLnBy
b3RvdHlwZVtuYW1lXSA9IGZ1bmN0aW9uKCkgeworICAgICAgcmV0dXJuIHJlc3VsdCh0aGlzLCBt
ZXRob2QuYXBwbHkodGhpcy5fd3JhcHBlZCwgYXJndW1lbnRzKSk7CisgICAgfTsKKyAgfSk7CisK
KyAgLy8gRXh0cmFjdHMgdGhlIHJlc3VsdCBmcm9tIGEgd3JhcHBlZCBhbmQgY2hhaW5lZCBvYmpl
Y3QuCisgIF8ucHJvdG90eXBlLnZhbHVlID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHRoaXMu
X3dyYXBwZWQ7CisgIH07CisKKyAgLy8gUHJvdmlkZSB1bndyYXBwaW5nIHByb3h5IGZvciBzb21l
IG1ldGhvZHMgdXNlZCBpbiBlbmdpbmUgb3BlcmF0aW9ucworICAvLyBzdWNoIGFzIGFyaXRobWV0
aWMgYW5kIEpTT04gc3RyaW5naWZpY2F0aW9uLgorICBfLnByb3RvdHlwZS52YWx1ZU9mID0gXy5w
cm90b3R5cGUudG9KU09OID0gXy5wcm90b3R5cGUudmFsdWU7CisKKyAgXy5wcm90b3R5cGUudG9T
dHJpbmcgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gJycgKyB0aGlzLl93cmFwcGVkOworICB9
OworCisgIC8vIEFNRCByZWdpc3RyYXRpb24gaGFwcGVucyBhdCB0aGUgZW5kIGZvciBjb21wYXRp
YmlsaXR5IHdpdGggQU1EIGxvYWRlcnMKKyAgLy8gdGhhdCBtYXkgbm90IGVuZm9yY2UgbmV4dC10
dXJuIHNlbWFudGljcyBvbiBtb2R1bGVzLiBFdmVuIHRob3VnaCBnZW5lcmFsCisgIC8vIHByYWN0
aWNlIGZvciBBTUQgcmVnaXN0cmF0aW9uIGlzIHRvIGJlIGFub255bW91cywgdW5kZXJzY29yZSBy
ZWdpc3RlcnMKKyAgLy8gYXMgYSBuYW1lZCBtb2R1bGUgYmVjYXVzZSwgbGlrZSBqUXVlcnksIGl0
IGlzIGEgYmFzZSBsaWJyYXJ5IHRoYXQgaXMKKyAgLy8gcG9wdWxhciBlbm91Z2ggdG8gYmUgYnVu
ZGxlZCBpbiBhIHRoaXJkIHBhcnR5IGxpYiwgYnV0IG5vdCBiZSBwYXJ0IG9mCisgIC8vIGFuIEFN
RCBsb2FkIHJlcXVlc3QuIFRob3NlIGNhc2VzIGNvdWxkIGdlbmVyYXRlIGFuIGVycm9yIHdoZW4g
YW4KKyAgLy8gYW5vbnltb3VzIGRlZmluZSgpIGlzIGNhbGxlZCBvdXRzaWRlIG9mIGEgbG9hZGVy
IHJlcXVlc3QuCisgIGlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5h
bWQpIHsKKyAgICBkZWZpbmUoJ3VuZGVyc2NvcmUnLCBbXSwgZnVuY3Rpb24oKSB7CisgICAgICBy
ZXR1cm4gXzsKKyAgICB9KTsKKyAgfQorfS5jYWxsKHRoaXMpKTsKZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2JhY2tib25lL3BhY2thZ2UuanNvbiBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL3BhY2th
Z2UuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44MjM2NmNmYzYzZTk2MzYzNTllZWZiZDgxM2M0MmQ4ZmM1ODgz
Y2JiCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvcGFja2FnZS5qc29u
CkBAIC0wLDAgKzEsMTAgQEAKK3sKKyAgInByaXZhdGUiOiB0cnVlLAorICAiZGVwZW5kZW5jaWVz
IjogeworICAgICJiYWNrYm9uZSI6ICJeMS4zLjMiLAorICAgICJqcXVlcnkiOiAiXjMuMS4xIiwK
KyAgICAidG9kb212Yy1hcHAtY3NzIjogIl4yLjAuMCIsCisgICAgInRvZG9tdmMtY29tbW9uIjog
Il4xLjAuMSIsCisgICAgInVuZGVyc2NvcmUiOiAiXjEuNy4wIgorICB9Cit9CmRpZmYgLS1naXQg
YS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9lbWJlcmpzL2Fzc2V0cy90b2RvbXZjLWQ0MWQ4Y2Q5OGYwMGIyMDRlOTgw
MDk5OGVjZjg0MjdlLmNzcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvYXNzZXRzL3RvZG9tdmMtZDQx
ZDhjZDk4ZjAwYjIwNGU5ODAwOTk4ZWNmODQyN2UuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2OWRlMjliYjJk
MWQ2NDM0YjhiMjlhZTc3NWFkOGMyZTQ4YzUzOTEKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2Vt
YmVyanMvYXNzZXRzL3RvZG9tdmMtZmRkMmM0OGNmNjc1NzUzZGU0YTc5Yzg1NzM0M2UyM2YuanMg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9lbWJlcmpzL2Fzc2V0cy90b2RvbXZjLWZkZDJjNDhjZjY3NTc1M2RlNGE3
OWM4NTczNDNlMjNmLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUxNDM2MmY1NjE3MDJmNTZjZjdhZDBjYzIwMzZl
YmYyY2U5NTRkNzIKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL2Fzc2V0
cy90b2RvbXZjLWZkZDJjNDhjZjY3NTc1M2RlNGE3OWM4NTczNDNlMjNmLmpzCkBAIC0wLDAgKzEg
QEAKKyJ1c2Ugc3RyaWN0IjtkZWZpbmUoInRvZG9tdmMvYXBwIixbImV4cG9ydHMiLCJlbWJlciIs
InRvZG9tdmMvcmVzb2x2ZXIiLCJlbWJlci1sb2FkLWluaXRpYWxpemVycyIsInRvZG9tdmMvY29u
ZmlnL2Vudmlyb25tZW50Il0sZnVuY3Rpb24oZSx0LG4scixhKXt2YXIgbz12b2lkIDA7dC5kZWZh
dWx0Lk1PREVMX0ZBQ1RPUllfSU5KRUNUSU9OUz0hMCx3aW5kb3cuQXBwPW89dC5kZWZhdWx0LkFw
cGxpY2F0aW9uLmV4dGVuZCh7bW9kdWxlUHJlZml4OmEuZGVmYXVsdC5tb2R1bGVQcmVmaXgscG9k
TW9kdWxlUHJlZml4OmEuZGVmYXVsdC5wb2RNb2R1bGVQcmVmaXgsUmVzb2x2ZXI6bi5kZWZhdWx0
fSksKDAsci5kZWZhdWx0KShvLGEuZGVmYXVsdC5tb2R1bGVQcmVmaXgpLGUuZGVmYXVsdD1vfSks
ZGVmaW5lKCJ0b2RvbXZjL2NvbXBvbmVudHMvYXBwLXZlcnNpb24iLFsiZXhwb3J0cyIsImVtYmVy
LWNsaS1hcHAtdmVyc2lvbi9jb21wb25lbnRzL2FwcC12ZXJzaW9uIiwidG9kb212Yy9jb25maWcv
ZW52aXJvbm1lbnQiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9bi5kZWZhdWx0LkFQUC5uYW1lLGE9
bi5kZWZhdWx0LkFQUC52ZXJzaW9uO2UuZGVmYXVsdD10LmRlZmF1bHQuZXh0ZW5kKHt2ZXJzaW9u
OmEsbmFtZTpyfSl9KSxkZWZpbmUoInRvZG9tdmMvY29tcG9uZW50cy90b2RvLWl0ZW0iLFsiZXhw
b3J0cyIsImVtYmVyIl0sZnVuY3Rpb24oZSx0KXtlLmRlZmF1bHQ9dC5kZWZhdWx0LkNvbXBvbmVu
dC5leHRlbmQoe3JlcG86dC5kZWZhdWx0LmluamVjdC5zZXJ2aWNlKCksdGFnTmFtZToibGkiLGVk
aXRpbmc6ITEsY2xhc3NOYW1lQmluZGluZ3M6WyJ0b2RvLmNvbXBsZXRlZCIsImVkaXRpbmciXSxh
Y3Rpb25zOntzdGFydEVkaXRpbmc6ZnVuY3Rpb24oKXt0aGlzLmdldCgib25TdGFydEVkaXQiKSgp
LHRoaXMuc2V0KCJlZGl0aW5nIiwhMCksdC5kZWZhdWx0LnJ1bi5zY2hlZHVsZU9uY2UoImFmdGVy
UmVuZGVyIix0aGlzLCJmb2N1c0lucHV0Iil9LGRvbmVFZGl0aW5nOmZ1bmN0aW9uKGUpe3RoaXMu
Z2V0KCJlZGl0aW5nIikmJih0LmRlZmF1bHQuaXNCbGFuayhlKT90aGlzLnNlbmQoInJlbW92ZVRv
ZG8iKToodGhpcy5zZXQoInRvZG8udGl0bGUiLGUudHJpbSgpKSx0aGlzLnNldCgiZWRpdGluZyIs
ITEpLHRoaXMuZ2V0KCJvbkVuZEVkaXQiKSgpKSl9LGhhbmRsZUtleWRvd246ZnVuY3Rpb24oZSl7
MTM9PT1lLmtleUNvZGU/ZS50YXJnZXQuYmx1cigpOjI3PT09ZS5rZXlDb2RlJiZ0aGlzLnNldCgi
ZWRpdGluZyIsITEpfSx0b2dnbGVDb21wbGV0ZWQ6ZnVuY3Rpb24oZSl7dmFyIG49dGhpcy5nZXQo
InRvZG8iKTt0LmRlZmF1bHQuc2V0KG4sImNvbXBsZXRlZCIsZS50YXJnZXQuY2hlY2tlZCksdGhp
cy5nZXQoInJlcG8iKS5wZXJzaXN0KCl9LHJlbW92ZVRvZG86ZnVuY3Rpb24oKXt0aGlzLmdldCgi
cmVwbyIpLmRlbGV0ZSh0aGlzLmdldCgidG9kbyIpKX19LGZvY3VzSW5wdXQ6ZnVuY3Rpb24oKXt0
aGlzLmVsZW1lbnQucXVlcnlTZWxlY3RvcigiaW5wdXQuZWRpdCIpLmZvY3VzKCl9fSl9KSxkZWZp
bmUoInRvZG9tdmMvY29tcG9uZW50cy90b2RvLWxpc3QiLFsiZXhwb3J0cyIsImVtYmVyIl0sZnVu
Y3Rpb24oZSx0KXtlLmRlZmF1bHQ9dC5kZWZhdWx0LkNvbXBvbmVudC5leHRlbmQoe3JlcG86dC5k
ZWZhdWx0LmluamVjdC5zZXJ2aWNlKCksdGFnTmFtZToic2VjdGlvbiIsZWxlbWVudElkOiJtYWlu
IixjYW5Ub2dnbGU6ITAsYWxsQ29tcGxldGVkOnQuZGVmYXVsdC5jb21wdXRlZCgidG9kb3MuQGVh
Y2guY29tcGxldGVkIixmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldCgidG9kb3MiKS5pc0V2ZXJ5
KCJjb21wbGV0ZWQiKX0pLGFjdGlvbnM6e2VuYWJsZVRvZ2dsZTpmdW5jdGlvbigpe3RoaXMuc2V0
KCJjYW5Ub2dnbGUiLCEwKX0sZGlzYWJsZVRvZ2dsZTpmdW5jdGlvbigpe3RoaXMuc2V0KCJjYW5U
b2dnbGUiLCExKX0sdG9nZ2xlQWxsOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5nZXQoImFsbENvbXBs
ZXRlZCIpO3RoaXMuZ2V0KCJ0b2RvcyIpLmZvckVhY2goZnVuY3Rpb24obil7cmV0dXJuIHQuZGVm
YXVsdC5zZXQobiwiY29tcGxldGVkIiwhZSl9KSx0aGlzLmdldCgicmVwbyIpLnBlcnNpc3QoKX19
fSl9KSxkZWZpbmUoInRvZG9tdmMvY29udHJvbGxlcnMvYWN0aXZlIixbImV4cG9ydHMiLCJlbWJl
ciJdLGZ1bmN0aW9uKGUsdCl7ZS5kZWZhdWx0PXQuZGVmYXVsdC5Db250cm9sbGVyLmV4dGVuZCh7
dG9kb3M6dC5kZWZhdWx0LmNvbXB1dGVkLmZpbHRlckJ5KCJtb2RlbCIsImNvbXBsZXRlZCIsITEp
fSl9KSxkZWZpbmUoInRvZG9tdmMvY29udHJvbGxlcnMvYXBwbGljYXRpb24iLFsiZXhwb3J0cyIs
ImVtYmVyIl0sZnVuY3Rpb24oZSx0KXtlLmRlZmF1bHQ9dC5kZWZhdWx0LkNvbnRyb2xsZXIuZXh0
ZW5kKHtyZXBvOnQuZGVmYXVsdC5pbmplY3Quc2VydmljZSgpLHJlbWFpbmluZzp0LmRlZmF1bHQu
Y29tcHV0ZWQuZmlsdGVyQnkoIm1vZGVsIiwiY29tcGxldGVkIiwhMSksY29tcGxldGVkOnQuZGVm
YXVsdC5jb21wdXRlZC5maWx0ZXJCeSgibW9kZWwiLCJjb21wbGV0ZWQiKSxhY3Rpb25zOntjcmVh
dGVUb2RvOmZ1bmN0aW9uKGUpezEzIT09ZS5rZXlDb2RlfHx0LmRlZmF1bHQuaXNCbGFuayhlLnRh
cmdldC52YWx1ZSl8fCh0aGlzLmdldCgicmVwbyIpLmFkZCh7dGl0bGU6ZS50YXJnZXQudmFsdWUu
dHJpbSgpLGNvbXBsZXRlZDohMX0pLGUudGFyZ2V0LnZhbHVlPSIiKX0sY2xlYXJDb21wbGV0ZWQ6
ZnVuY3Rpb24oKXt0aGlzLmdldCgibW9kZWwiKS5yZW1vdmVPYmplY3RzKHRoaXMuZ2V0KCJjb21w
bGV0ZWQiKSksdGhpcy5nZXQoInJlcG8iKS5wZXJzaXN0KCl9fX0pfSksZGVmaW5lKCJ0b2RvbXZj
L2NvbnRyb2xsZXJzL2NvbXBsZXRlZCIsWyJleHBvcnRzIiwiZW1iZXIiXSxmdW5jdGlvbihlLHQp
e2UuZGVmYXVsdD10LmRlZmF1bHQuQ29udHJvbGxlci5leHRlbmQoe3RvZG9zOnQuZGVmYXVsdC5j
b21wdXRlZC5maWx0ZXJCeSgibW9kZWwiLCJjb21wbGV0ZWQiLCEwKX0pfSksZGVmaW5lKCJ0b2Rv
bXZjL2hlbHBlcnMvZ3QiLFsiZXhwb3J0cyIsImVtYmVyIl0sZnVuY3Rpb24oZSx0KXtmdW5jdGlv
biBuKGUpe3ZhciB0PXIoZSwyKSxuPXRbMF0sYT10WzFdO3JldHVybiBuPmF9dmFyIHI9ZnVuY3Rp
b24oKXtmdW5jdGlvbiBlKGUsdCl7dmFyIG49W10scj0hMCxhPSExLG89dm9pZCAwO3RyeXtmb3Io
dmFyIGwsaT1lW1N5bWJvbC5pdGVyYXRvcl0oKTshKHI9KGw9aS5uZXh0KCkpLmRvbmUpJiYobi5w
dXNoKGwudmFsdWUpLCF0fHxuLmxlbmd0aCE9PXQpO3I9ITApO31jYXRjaChlKXthPSEwLG89ZX1m
aW5hbGx5e3RyeXshciYmaS5yZXR1cm4mJmkucmV0dXJuKCl9ZmluYWxseXtpZihhKXRocm93IG99
fXJldHVybiBufXJldHVybiBmdW5jdGlvbih0LG4pe2lmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJu
IHQ7aWYoU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdCh0KSlyZXR1cm4gZSh0LG4pO3Rocm93IG5l
dyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUg
aW5zdGFuY2UiKX19KCk7ZS5ndD1uLGUuZGVmYXVsdD10LmRlZmF1bHQuSGVscGVyLmhlbHBlcihu
KX0pLGRlZmluZSgidG9kb212Yy9oZWxwZXJzL3BsdXJhbGl6ZSIsWyJleHBvcnRzIiwiZW1iZXIi
LCJlbWJlci1pbmZsZWN0b3IiXSxmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gcihlKXt2YXIgdD1h
KGUsMikscj10WzBdLG89dFsxXTtyZXR1cm4gMT09PW8/cjooMCxuLnBsdXJhbGl6ZSkocil9dmFy
IGE9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7dmFyIG49W10scj0hMCxhPSExLG89dm9pZCAw
O3RyeXtmb3IodmFyIGwsaT1lW1N5bWJvbC5pdGVyYXRvcl0oKTshKHI9KGw9aS5uZXh0KCkpLmRv
bmUpJiYobi5wdXNoKGwudmFsdWUpLCF0fHxuLmxlbmd0aCE9PXQpO3I9ITApO31jYXRjaChlKXth
PSEwLG89ZX1maW5hbGx5e3RyeXshciYmaS5yZXR1cm4mJmkucmV0dXJuKCl9ZmluYWxseXtpZihh
KXRocm93IG99fXJldHVybiBufXJldHVybiBmdW5jdGlvbih0LG4pe2lmKEFycmF5LmlzQXJyYXko
dCkpcmV0dXJuIHQ7aWYoU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdCh0KSlyZXR1cm4gZSh0LG4p
O3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24t
aXRlcmFibGUgaW5zdGFuY2UiKX19KCk7ZS5wbHVyYWxpemVIZWxwZXI9cixlLmRlZmF1bHQ9dC5k
ZWZhdWx0LkhlbHBlci5oZWxwZXIocil9KSxkZWZpbmUoInRvZG9tdmMvaGVscGVycy9zaW5ndWxh
cml6ZSIsWyJleHBvcnRzIiwiZW1iZXItaW5mbGVjdG9yL2xpYi9oZWxwZXJzL3Npbmd1bGFyaXpl
Il0sZnVuY3Rpb24oZSx0KXtlLmRlZmF1bHQ9dC5kZWZhdWx0fSksZGVmaW5lKCJ0b2RvbXZjL2lu
aXRpYWxpemVycy9hcHAtdmVyc2lvbiIsWyJleHBvcnRzIiwiZW1iZXItY2xpLWFwcC12ZXJzaW9u
L2luaXRpYWxpemVyLWZhY3RvcnkiLCJ0b2RvbXZjL2NvbmZpZy9lbnZpcm9ubWVudCJdLGZ1bmN0
aW9uKGUsdCxuKXtlLmRlZmF1bHQ9e25hbWU6IkFwcCBWZXJzaW9uIixpbml0aWFsaXplOigwLHQu
ZGVmYXVsdCkobi5kZWZhdWx0LkFQUC5uYW1lLG4uZGVmYXVsdC5BUFAudmVyc2lvbil9fSksZGVm
aW5lKCJ0b2RvbXZjL2luaXRpYWxpemVycy9jb250YWluZXItZGVidWctYWRhcHRlciIsWyJleHBv
cnRzIiwiZW1iZXItcmVzb2x2ZXIvY29udGFpbmVyLWRlYnVnLWFkYXB0ZXIiXSxmdW5jdGlvbihl
LHQpe2UuZGVmYXVsdD17bmFtZToiY29udGFpbmVyLWRlYnVnLWFkYXB0ZXIiLGluaXRpYWxpemU6
ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHNbMV18fGFyZ3VtZW50c1swXTtlLnJlZ2lzdGVyKCJj
b250YWluZXItZGVidWctYWRhcHRlcjptYWluIix0LmRlZmF1bHQpLGUuaW5qZWN0KCJjb250YWlu
ZXItZGVidWctYWRhcHRlcjptYWluIiwibmFtZXNwYWNlIiwiYXBwbGljYXRpb246bWFpbiIpfX19
KSxkZWZpbmUoInRvZG9tdmMvaW5pdGlhbGl6ZXJzL2V4cG9ydC1hcHBsaWNhdGlvbi1nbG9iYWwi
LFsiZXhwb3J0cyIsImVtYmVyIiwidG9kb212Yy9jb25maWcvZW52aXJvbm1lbnQiXSxmdW5jdGlv
bihlLHQsbil7ZnVuY3Rpb24gcigpe3ZhciBlPWFyZ3VtZW50c1sxXXx8YXJndW1lbnRzWzBdO2lm
KG4uZGVmYXVsdC5leHBvcnRBcHBsaWNhdGlvbkdsb2JhbCE9PSExKXt2YXIgcjtpZigidW5kZWZp
bmVkIiE9dHlwZW9mIHdpbmRvdylyPXdpbmRvdztlbHNlIGlmKCJ1bmRlZmluZWQiIT10eXBlb2Yg
Z2xvYmFsKXI9Z2xvYmFsO2Vsc2V7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBzZWxmKXJldHVybjty
PXNlbGZ9dmFyIGEsbz1uLmRlZmF1bHQuZXhwb3J0QXBwbGljYXRpb25HbG9iYWw7YT0ic3RyaW5n
Ij09dHlwZW9mIG8/bzp0LmRlZmF1bHQuU3RyaW5nLmNsYXNzaWZ5KG4uZGVmYXVsdC5tb2R1bGVQ
cmVmaXgpLHJbYV18fChyW2FdPWUsZS5yZW9wZW4oe3dpbGxEZXN0cm95OmZ1bmN0aW9uKCl7dGhp
cy5fc3VwZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpLGRlbGV0ZSByW2FdfX0pKX19ZS5pbml0aWFs
aXplPXIsZS5kZWZhdWx0PXtuYW1lOiJleHBvcnQtYXBwbGljYXRpb24tZ2xvYmFsIixpbml0aWFs
aXplOnJ9fSksZGVmaW5lKCJ0b2RvbXZjL2luc3RhbmNlLWluaXRpYWxpemVycy9nbG9iYWwiLFsi
ZXhwb3J0cyJdLGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSl7d2luZG93LkFwcD1lfWUuaW5pdGlh
bGl6ZT10LGUuZGVmYXVsdD17bmFtZToiZ2xvYmFsIixpbml0aWFsaXplOnR9fSksZGVmaW5lKCJ0
b2RvbXZjL3Jlc29sdmVyIixbImV4cG9ydHMiLCJlbWJlci1yZXNvbHZlciJdLGZ1bmN0aW9uKGUs
dCl7ZS5kZWZhdWx0PXQuZGVmYXVsdH0pLGRlZmluZSgidG9kb212Yy9yb3V0ZXIiLFsiZXhwb3J0
cyIsImVtYmVyIiwidG9kb212Yy9jb25maWcvZW52aXJvbm1lbnQiXSxmdW5jdGlvbihlLHQsbil7
dmFyIHI9dC5kZWZhdWx0LlJvdXRlci5leHRlbmQoe2xvY2F0aW9uOm4uZGVmYXVsdC5sb2NhdGlv
blR5cGV9KTtyLm1hcChmdW5jdGlvbigpe3RoaXMucm91dGUoImFjdGl2ZSIpLHRoaXMucm91dGUo
ImNvbXBsZXRlZCIpfSksZS5kZWZhdWx0PXJ9KSxkZWZpbmUoInRvZG9tdmMvcm91dGVzL2FwcGxp
Y2F0aW9uIixbImV4cG9ydHMiLCJlbWJlciJdLGZ1bmN0aW9uKGUsdCl7ZS5kZWZhdWx0PXQuZGVm
YXVsdC5Sb3V0ZS5leHRlbmQoe3JlcG86dC5kZWZhdWx0LmluamVjdC5zZXJ2aWNlKCksbW9kZWw6
ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXQoInJlcG8iKS5maW5kQWxsKCl9fSl9KSxkZWZpbmUo
InRvZG9tdmMvc2VydmljZXMvYWpheCIsWyJleHBvcnRzIiwiZW1iZXItYWpheC9zZXJ2aWNlcy9h
amF4Il0sZnVuY3Rpb24oZSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiZGVmYXVsdCIse2Vu
dW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHQuZGVmYXVsdH19KX0pLGRlZmluZSgi
dG9kb212Yy9zZXJ2aWNlcy9yZXBvIixbImV4cG9ydHMiLCJlbWJlciJdLGZ1bmN0aW9uKGUsdCl7
ZS5kZWZhdWx0PXQuZGVmYXVsdC5TZXJ2aWNlLmV4dGVuZCh7bGFzdElkOjAsZGF0YTpudWxsLGZp
bmRBbGw6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXQoImRhdGEiKXx8dGhpcy5zZXQoImRhdGEi
LEpTT04ucGFyc2Uod2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKCJ0b2RvcyIpfHwiW10iKSl9
LGFkZDpmdW5jdGlvbihlKXt2YXIgdD1PYmplY3QuYXNzaWduKHtpZDp0aGlzLmluY3JlbWVudFBy
b3BlcnR5KCJsYXN0SWQiKX0sZSk7cmV0dXJuIHRoaXMuZ2V0KCJkYXRhIikucHVzaE9iamVjdCh0
KSx0aGlzLnBlcnNpc3QoKSx0fSxkZWxldGU6ZnVuY3Rpb24oZSl7dGhpcy5nZXQoImRhdGEiKS5y
ZW1vdmVPYmplY3QoZSksdGhpcy5wZXJzaXN0KCl9LHBlcnNpc3Q6ZnVuY3Rpb24oKXt3aW5kb3cu
bG9jYWxTdG9yYWdlLnNldEl0ZW0oInRvZG9zIixKU09OLnN0cmluZ2lmeSh0aGlzLmdldCgiZGF0
YSIpKSl9fSl9KSxkZWZpbmUoInRvZG9tdmMvdGVtcGxhdGVzL2FjdGl2ZSIsWyJleHBvcnRzIl0s
ZnVuY3Rpb24oZSl7ZS5kZWZhdWx0PUVtYmVyLkhUTUxCYXJzLnRlbXBsYXRlKGZ1bmN0aW9uKCl7
cmV0dXJue21ldGE6e2ZyYWdtZW50UmVhc29uOntuYW1lOiJtaXNzaW5nLXdyYXBwZXIiLHByb2Js
ZW1zOlsid3JvbmctdHlwZSJdfSxyZXZpc2lvbjoiRW1iZXJAMi42LjIiLGxvYzp7c291cmNlOm51
bGwsc3RhcnQ6e2xpbmU6MSxjb2x1bW46MH0sZW5kOntsaW5lOjEsY29sdW1uOjI1fX0sbW9kdWxl
TmFtZToidG9kb212Yy90ZW1wbGF0ZXMvYWN0aXZlLmhicyJ9LGlzRW1wdHk6ITEsYXJpdHk6MCxj
YWNoZWRGcmFnbWVudDpudWxsLGhhc1JlbmRlcmVkOiExLGJ1aWxkRnJhZ21lbnQ6ZnVuY3Rpb24o
ZSl7dmFyIHQ9ZS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksbj1lLmNyZWF0ZUNvbW1lbnQoIiIp
O3JldHVybiBlLmFwcGVuZENoaWxkKHQsbiksdH0sYnVpbGRSZW5kZXJOb2RlczpmdW5jdGlvbihl
LHQsbil7dmFyIHI9bmV3IEFycmF5KDEpO3JldHVybiByWzBdPWUuY3JlYXRlTW9ycGhBdCh0LDAs
MCxuKSxlLmluc2VydEJvdW5kYXJ5KHQsMCksZS5pbnNlcnRCb3VuZGFyeSh0LG51bGwpLHJ9LHN0
YXRlbWVudHM6W1siaW5saW5lIiwidG9kby1saXN0IixbXSxbInRvZG9zIixbInN1YmV4cHIiLCJA
bXV0IixbWyJnZXQiLCJ0b2RvcyIsWyJsb2MiLFtudWxsLFsxLDE4XSxbMSwyM11dXV1dLFtdLFtd
XV0sWyJsb2MiLFtudWxsLFsxLDBdLFsxLDI1XV1dXV0sbG9jYWxzOltdLHRlbXBsYXRlczpbXX19
KCkpfSksZGVmaW5lKCJ0b2RvbXZjL3RlbXBsYXRlcy9hcHBsaWNhdGlvbiIsWyJleHBvcnRzIl0s
ZnVuY3Rpb24oZSl7ZS5kZWZhdWx0PUVtYmVyLkhUTUxCYXJzLnRlbXBsYXRlKGZ1bmN0aW9uKCl7
dmFyIGU9ZnVuY3Rpb24oKXt2YXIgZT1mdW5jdGlvbigpe3JldHVybnttZXRhOntmcmFnbWVudFJl
YXNvbjohMSxyZXZpc2lvbjoiRW1iZXJAMi42LjIiLGxvYzp7c291cmNlOm51bGwsc3RhcnQ6e2xp
bmU6MTEsY29sdW1uOjE0fSxlbmQ6e2xpbmU6MTEsY29sdW1uOjYwfX0sbW9kdWxlTmFtZToidG9k
b212Yy90ZW1wbGF0ZXMvYXBwbGljYXRpb24uaGJzIn0saXNFbXB0eTohMSxhcml0eTowLGNhY2hl
ZEZyYWdtZW50Om51bGwsaGFzUmVuZGVyZWQ6ITEsYnVpbGRGcmFnbWVudDpmdW5jdGlvbihlKXt2
YXIgdD1lLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxuPWUuY3JlYXRlVGV4dE5vZGUoIkFsbCIp
O3JldHVybiBlLmFwcGVuZENoaWxkKHQsbiksdH0sYnVpbGRSZW5kZXJOb2RlczpmdW5jdGlvbigp
e3JldHVybltdfSxzdGF0ZW1lbnRzOltdLGxvY2FsczpbXSx0ZW1wbGF0ZXM6W119fSgpLHQ9ZnVu
Y3Rpb24oKXtyZXR1cm57bWV0YTp7ZnJhZ21lbnRSZWFzb246ITEscmV2aXNpb246IkVtYmVyQDIu
Ni4yIixsb2M6e3NvdXJjZTpudWxsLHN0YXJ0OntsaW5lOjEyLGNvbHVtbjoxNH0sZW5kOntsaW5l
OjEyLGNvbHVtbjo2NH19LG1vZHVsZU5hbWU6InRvZG9tdmMvdGVtcGxhdGVzL2FwcGxpY2F0aW9u
LmhicyJ9LGlzRW1wdHk6ITEsYXJpdHk6MCxjYWNoZWRGcmFnbWVudDpudWxsLGhhc1JlbmRlcmVk
OiExLGJ1aWxkRnJhZ21lbnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jcmVhdGVEb2N1bWVudEZyYWdt
ZW50KCksbj1lLmNyZWF0ZVRleHROb2RlKCJBY3RpdmUiKTtyZXR1cm4gZS5hcHBlbmRDaGlsZCh0
LG4pLHR9LGJ1aWxkUmVuZGVyTm9kZXM6ZnVuY3Rpb24oKXtyZXR1cm5bXX0sc3RhdGVtZW50czpb
XSxsb2NhbHM6W10sdGVtcGxhdGVzOltdfX0oKSxuPWZ1bmN0aW9uKCl7cmV0dXJue21ldGE6e2Zy
YWdtZW50UmVhc29uOiExLHJldmlzaW9uOiJFbWJlckAyLjYuMiIsbG9jOntzb3VyY2U6bnVsbCxz
dGFydDp7bGluZToxMyxjb2x1bW46MTR9LGVuZDp7bGluZToxMyxjb2x1bW46NzB9fSxtb2R1bGVO
YW1lOiJ0b2RvbXZjL3RlbXBsYXRlcy9hcHBsaWNhdGlvbi5oYnMifSxpc0VtcHR5OiExLGFyaXR5
OjAsY2FjaGVkRnJhZ21lbnQ6bnVsbCxoYXNSZW5kZXJlZDohMSxidWlsZEZyYWdtZW50OmZ1bmN0
aW9uKGUpe3ZhciB0PWUuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLG49ZS5jcmVhdGVUZXh0Tm9k
ZSgiQ29tcGxldGVkIik7cmV0dXJuIGUuYXBwZW5kQ2hpbGQodCxuKSx0fSxidWlsZFJlbmRlck5v
ZGVzOmZ1bmN0aW9uKCl7cmV0dXJuW119LHN0YXRlbWVudHM6W10sbG9jYWxzOltdLHRlbXBsYXRl
czpbXX19KCkscj1mdW5jdGlvbigpe3JldHVybnttZXRhOntmcmFnbWVudFJlYXNvbjohMSxyZXZp
c2lvbjoiRW1iZXJAMi42LjIiLGxvYzp7c291cmNlOm51bGwsc3RhcnQ6e2xpbmU6MTUsY29sdW1u
Ojh9LGVuZDp7bGluZToxNyxjb2x1bW46OH19LG1vZHVsZU5hbWU6InRvZG9tdmMvdGVtcGxhdGVz
L2FwcGxpY2F0aW9uLmhicyJ9LGlzRW1wdHk6ITEsYXJpdHk6MCxjYWNoZWRGcmFnbWVudDpudWxs
LGhhc1JlbmRlcmVkOiExLGJ1aWxkRnJhZ21lbnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jcmVhdGVE
b2N1bWVudEZyYWdtZW50KCksbj1lLmNyZWF0ZVRleHROb2RlKCIgICAgICAgICAgIik7ZS5hcHBl
bmRDaGlsZCh0LG4pO3ZhciBuPWUuY3JlYXRlRWxlbWVudCgiYnV0dG9uIik7ZS5zZXRBdHRyaWJ1
dGUobiwiaWQiLCJjbGVhci1jb21wbGV0ZWQiKTt2YXIgcj1lLmNyZWF0ZVRleHROb2RlKCJDbGVh
ciBjb21wbGV0ZWQiKTtlLmFwcGVuZENoaWxkKG4sciksZS5hcHBlbmRDaGlsZCh0LG4pO3ZhciBu
PWUuY3JlYXRlVGV4dE5vZGUoIlxuIik7cmV0dXJuIGUuYXBwZW5kQ2hpbGQodCxuKSx0fSxidWls
ZFJlbmRlck5vZGVzOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lLmNoaWxkQXQodCxbMV0pLGE9bmV3
IEFycmF5KDEpO3JldHVybiBhWzBdPWUuY3JlYXRlQXR0ck1vcnBoKHIsIm9uY2xpY2siKSxhfSxz
dGF0ZW1lbnRzOltbImF0dHJpYnV0ZSIsIm9uY2xpY2siLFsic3ViZXhwciIsImFjdGlvbiIsWyJj
bGVhckNvbXBsZXRlZCJdLFtdLFsibG9jIixbbnVsbCxbMTYsNDddLFsxNiw3NF1dXV1dXSxsb2Nh
bHM6W10sdGVtcGxhdGVzOltdfX0oKTtyZXR1cm57bWV0YTp7ZnJhZ21lbnRSZWFzb246ITEscmV2
aXNpb246IkVtYmVyQDIuNi4yIixsb2M6e3NvdXJjZTpudWxsLHN0YXJ0OntsaW5lOjcsY29sdW1u
OjR9LGVuZDp7bGluZToxOSxjb2x1bW46NH19LG1vZHVsZU5hbWU6InRvZG9tdmMvdGVtcGxhdGVz
L2FwcGxpY2F0aW9uLmhicyJ9LGlzRW1wdHk6ITEsYXJpdHk6MCxjYWNoZWRGcmFnbWVudDpudWxs
LGhhc1JlbmRlcmVkOiExLGJ1aWxkRnJhZ21lbnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jcmVhdGVE
b2N1bWVudEZyYWdtZW50KCksbj1lLmNyZWF0ZVRleHROb2RlKCIgICAgICAiKTtlLmFwcGVuZENo
aWxkKHQsbik7dmFyIG49ZS5jcmVhdGVFbGVtZW50KCJmb290ZXIiKTtlLnNldEF0dHJpYnV0ZShu
LCJpZCIsImZvb3RlciIpO3ZhciByPWUuY3JlYXRlVGV4dE5vZGUoIlxuICAgICAgICAiKTtlLmFw
cGVuZENoaWxkKG4scik7dmFyIHI9ZS5jcmVhdGVFbGVtZW50KCJzcGFuIik7ZS5zZXRBdHRyaWJ1
dGUociwiaWQiLCJ0b2RvLWNvdW50Iik7dmFyIGE9ZS5jcmVhdGVFbGVtZW50KCJzdHJvbmciKSxv
PWUuY3JlYXRlQ29tbWVudCgiIik7ZS5hcHBlbmRDaGlsZChhLG8pLGUuYXBwZW5kQ2hpbGQocixh
KTt2YXIgYT1lLmNyZWF0ZVRleHROb2RlKCIgIik7ZS5hcHBlbmRDaGlsZChyLGEpO3ZhciBhPWUu
Y3JlYXRlQ29tbWVudCgiIik7ZS5hcHBlbmRDaGlsZChyLGEpO3ZhciBhPWUuY3JlYXRlVGV4dE5v
ZGUoIiBsZWZ0Iik7ZS5hcHBlbmRDaGlsZChyLGEpLGUuYXBwZW5kQ2hpbGQobixyKTt2YXIgcj1l
LmNyZWF0ZVRleHROb2RlKCJcbiAgICAgICAgIik7ZS5hcHBlbmRDaGlsZChuLHIpO3ZhciByPWUu
Y3JlYXRlRWxlbWVudCgidWwiKTtlLnNldEF0dHJpYnV0ZShyLCJpZCIsImZpbHRlcnMiKTt2YXIg
YT1lLmNyZWF0ZVRleHROb2RlKCJcbiAgICAgICAgICAiKTtlLmFwcGVuZENoaWxkKHIsYSk7dmFy
IGE9ZS5jcmVhdGVFbGVtZW50KCJsaSIpLG89ZS5jcmVhdGVDb21tZW50KCIiKTtlLmFwcGVuZENo
aWxkKGEsbyksZS5hcHBlbmRDaGlsZChyLGEpO3ZhciBhPWUuY3JlYXRlVGV4dE5vZGUoIlxuICAg
ICAgICAgICIpO2UuYXBwZW5kQ2hpbGQocixhKTt2YXIgYT1lLmNyZWF0ZUVsZW1lbnQoImxpIiks
bz1lLmNyZWF0ZUNvbW1lbnQoIiIpO2UuYXBwZW5kQ2hpbGQoYSxvKSxlLmFwcGVuZENoaWxkKHIs
YSk7dmFyIGE9ZS5jcmVhdGVUZXh0Tm9kZSgiXG4gICAgICAgICAgIik7ZS5hcHBlbmRDaGlsZChy
LGEpO3ZhciBhPWUuY3JlYXRlRWxlbWVudCgibGkiKSxvPWUuY3JlYXRlQ29tbWVudCgiIik7ZS5h
cHBlbmRDaGlsZChhLG8pLGUuYXBwZW5kQ2hpbGQocixhKTt2YXIgYT1lLmNyZWF0ZVRleHROb2Rl
KCJcbiAgICAgICAgIik7ZS5hcHBlbmRDaGlsZChyLGEpLGUuYXBwZW5kQ2hpbGQobixyKTt2YXIg
cj1lLmNyZWF0ZVRleHROb2RlKCJcbiIpO2UuYXBwZW5kQ2hpbGQobixyKTt2YXIgcj1lLmNyZWF0
ZUNvbW1lbnQoIiIpO2UuYXBwZW5kQ2hpbGQobixyKTt2YXIgcj1lLmNyZWF0ZVRleHROb2RlKCIg
ICAgICAiKTtlLmFwcGVuZENoaWxkKG4sciksZS5hcHBlbmRDaGlsZCh0LG4pO3ZhciBuPWUuY3Jl
YXRlVGV4dE5vZGUoIlxuIik7cmV0dXJuIGUuYXBwZW5kQ2hpbGQodCxuKSx0fSxidWlsZFJlbmRl
ck5vZGVzOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lLmNoaWxkQXQodCxbMV0pLGE9ZS5jaGlsZEF0
KHIsWzFdKSxvPWUuY2hpbGRBdChyLFszXSksbD1uZXcgQXJyYXkoNik7cmV0dXJuIGxbMF09ZS5j
cmVhdGVNb3JwaEF0KGUuY2hpbGRBdChhLFswXSksMCwwKSxsWzFdPWUuY3JlYXRlTW9ycGhBdChh
LDIsMiksbFsyXT1lLmNyZWF0ZU1vcnBoQXQoZS5jaGlsZEF0KG8sWzFdKSwwLDApLGxbM109ZS5j
cmVhdGVNb3JwaEF0KGUuY2hpbGRBdChvLFszXSksMCwwKSxsWzRdPWUuY3JlYXRlTW9ycGhBdChl
LmNoaWxkQXQobyxbNV0pLDAsMCksbFs1XT1lLmNyZWF0ZU1vcnBoQXQociw1LDUpLGx9LHN0YXRl
bWVudHM6W1siY29udGVudCIsInJlbWFpbmluZy5sZW5ndGgiLFsibG9jIixbbnVsbCxbOSwzOF0s
WzksNThdXV1dLFsiaW5saW5lIiwicGx1cmFsaXplIixbIml0ZW0iLFsiZ2V0IiwicmVtYWluaW5n
Lmxlbmd0aCIsWyJsb2MiLFtudWxsLFs5LDg3XSxbOSwxMDNdXV1dXSxbXSxbImxvYyIsW251bGws
WzksNjhdLFs5LDEwNV1dXV0sWyJibG9jayIsImxpbmstdG8iLFsiaW5kZXgiXSxbImFjdGl2ZUNs
YXNzIiwic2VsZWN0ZWQiXSwwLG51bGwsWyJsb2MiLFtudWxsLFsxMSwxNF0sWzExLDcyXV1dXSxb
ImJsb2NrIiwibGluay10byIsWyJhY3RpdmUiXSxbImFjdGl2ZUNsYXNzIiwic2VsZWN0ZWQiXSwx
LG51bGwsWyJsb2MiLFtudWxsLFsxMiwxNF0sWzEyLDc2XV1dXSxbImJsb2NrIiwibGluay10byIs
WyJjb21wbGV0ZWQiXSxbImFjdGl2ZUNsYXNzIiwic2VsZWN0ZWQiXSwyLG51bGwsWyJsb2MiLFtu
dWxsLFsxMywxNF0sWzEzLDgyXV1dXSxbImJsb2NrIiwiaWYiLFtbImdldCIsImNvbXBsZXRlZC5s
ZW5ndGgiLFsibG9jIixbbnVsbCxbMTUsMTRdLFsxNSwzMF1dXV1dLFtdLDMsbnVsbCxbImxvYyIs
W251bGwsWzE1LDhdLFsxNywxNV1dXV1dLGxvY2FsczpbXSx0ZW1wbGF0ZXM6W2UsdCxuLHJdfX0o
KTtyZXR1cm57bWV0YTp7ZnJhZ21lbnRSZWFzb246e25hbWU6Im1pc3Npbmctd3JhcHBlciIscHJv
YmxlbXM6WyJtdWx0aXBsZS1ub2RlcyJdfSxyZXZpc2lvbjoiRW1iZXJAMi42LjIiLGxvYzp7c291
cmNlOm51bGwsc3RhcnQ6e2xpbmU6MSxjb2x1bW46MH0sZW5kOntsaW5lOjI5LGNvbHVtbjo5fX0s
bW9kdWxlTmFtZToidG9kb212Yy90ZW1wbGF0ZXMvYXBwbGljYXRpb24uaGJzIn0saXNFbXB0eToh
MSxhcml0eTowLGNhY2hlZEZyYWdtZW50Om51bGwsaGFzUmVuZGVyZWQ6ITEsYnVpbGRGcmFnbWVu
dDpmdW5jdGlvbihlKXt2YXIgdD1lLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxuPWUuY3JlYXRl
RWxlbWVudCgic2VjdGlvbiIpO2Uuc2V0QXR0cmlidXRlKG4sImlkIiwidG9kb2FwcCIpO3ZhciBy
PWUuY3JlYXRlVGV4dE5vZGUoIlxuICAiKTtlLmFwcGVuZENoaWxkKG4scik7dmFyIHI9ZS5jcmVh
dGVFbGVtZW50KCJoZWFkZXIiKTtlLnNldEF0dHJpYnV0ZShyLCJpZCIsImhlYWRlciIpO3ZhciBh
PWUuY3JlYXRlVGV4dE5vZGUoIlxuICAgICIpO2UuYXBwZW5kQ2hpbGQocixhKTt2YXIgYT1lLmNy
ZWF0ZUVsZW1lbnQoImgxIiksbz1lLmNyZWF0ZVRleHROb2RlKCJ0b2RvcyIpO2UuYXBwZW5kQ2hp
bGQoYSxvKSxlLmFwcGVuZENoaWxkKHIsYSk7dmFyIGE9ZS5jcmVhdGVUZXh0Tm9kZSgiXG4gICAg
Iik7ZS5hcHBlbmRDaGlsZChyLGEpO3ZhciBhPWUuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTtlLnNl
dEF0dHJpYnV0ZShhLCJ0eXBlIiwidGV4dCIpLGUuc2V0QXR0cmlidXRlKGEsImlkIiwibmV3LXRv
ZG8iKSxlLnNldEF0dHJpYnV0ZShhLCJwbGFjZWhvbGRlciIsIldoYXQgbmVlZHMgdG8gYmUgZG9u
ZT8iKSxlLnNldEF0dHJpYnV0ZShhLCJhdXRvZm9jdXMiLCIiKSxlLmFwcGVuZENoaWxkKHIsYSk7
dmFyIGE9ZS5jcmVhdGVUZXh0Tm9kZSgiXG4gICIpO2UuYXBwZW5kQ2hpbGQocixhKSxlLmFwcGVu
ZENoaWxkKG4scik7dmFyIHI9ZS5jcmVhdGVUZXh0Tm9kZSgiXG4gICAgIik7ZS5hcHBlbmRDaGls
ZChuLHIpO3ZhciByPWUuY3JlYXRlQ29tbWVudCgiIik7ZS5hcHBlbmRDaGlsZChuLHIpO3ZhciBy
PWUuY3JlYXRlVGV4dE5vZGUoIlxuIik7ZS5hcHBlbmRDaGlsZChuLHIpO3ZhciByPWUuY3JlYXRl
Q29tbWVudCgiIik7ZS5hcHBlbmRDaGlsZChuLHIpLGUuYXBwZW5kQ2hpbGQodCxuKTt2YXIgbj1l
LmNyZWF0ZVRleHROb2RlKCJcbiIpO2UuYXBwZW5kQ2hpbGQodCxuKTt2YXIgbj1lLmNyZWF0ZUVs
ZW1lbnQoImZvb3RlciIpO2Uuc2V0QXR0cmlidXRlKG4sImlkIiwiaW5mbyIpO3ZhciByPWUuY3Jl
YXRlVGV4dE5vZGUoIlxuICAiKTtlLmFwcGVuZENoaWxkKG4scik7dmFyIHI9ZS5jcmVhdGVFbGVt
ZW50KCJwIiksYT1lLmNyZWF0ZVRleHROb2RlKCJEb3VibGUtY2xpY2sgdG8gZWRpdCBhIHRvZG8i
KTtlLmFwcGVuZENoaWxkKHIsYSksZS5hcHBlbmRDaGlsZChuLHIpO3ZhciByPWUuY3JlYXRlVGV4
dE5vZGUoIlxuICAiKTtlLmFwcGVuZENoaWxkKG4scik7dmFyIHI9ZS5jcmVhdGVFbGVtZW50KCJw
IiksYT1lLmNyZWF0ZVRleHROb2RlKCJcbiAgICBDcmVhdGVkIGJ5XG4gICAgIik7ZS5hcHBlbmRD
aGlsZChyLGEpO3ZhciBhPWUuY3JlYXRlRWxlbWVudCgiYSIpO2Uuc2V0QXR0cmlidXRlKGEsImhy
ZWYiLCJodHRwOi8vZ2l0aHViLmNvbS9jaWJlcm5veCIpO3ZhciBvPWUuY3JlYXRlVGV4dE5vZGUo
Ik1pZ3VlbCBDYW1iYSIpO2UuYXBwZW5kQ2hpbGQoYSxvKSxlLmFwcGVuZENoaWxkKHIsYSk7dmFy
IGE9ZS5jcmVhdGVUZXh0Tm9kZSgiLFxuICAgICIpO2UuYXBwZW5kQ2hpbGQocixhKTt2YXIgYT1l
LmNyZWF0ZUVsZW1lbnQoImEiKTtlLnNldEF0dHJpYnV0ZShhLCJocmVmIiwiaHR0cDovL2dpdGh1
Yi5jb20vYWRkeW9zbWFuaSIpO3ZhciBvPWUuY3JlYXRlVGV4dE5vZGUoIkFkZHkgT3NtYW5pIik7
ZS5hcHBlbmRDaGlsZChhLG8pLGUuYXBwZW5kQ2hpbGQocixhKTt2YXIgYT1lLmNyZWF0ZVRleHRO
b2RlKCJcbiAgIik7ZS5hcHBlbmRDaGlsZChyLGEpLGUuYXBwZW5kQ2hpbGQobixyKTt2YXIgcj1l
LmNyZWF0ZVRleHROb2RlKCJcbiAgIik7ZS5hcHBlbmRDaGlsZChuLHIpO3ZhciByPWUuY3JlYXRl
RWxlbWVudCgicCIpLGE9ZS5jcmVhdGVUZXh0Tm9kZSgiUGFydCBvZiAiKTtlLmFwcGVuZENoaWxk
KHIsYSk7dmFyIGE9ZS5jcmVhdGVFbGVtZW50KCJhIik7ZS5zZXRBdHRyaWJ1dGUoYSwiaHJlZiIs
Imh0dHA6Ly90b2RvbXZjLmNvbSIpO3ZhciBvPWUuY3JlYXRlVGV4dE5vZGUoIlRvZG9NVkMiKTtl
LmFwcGVuZENoaWxkKGEsbyksZS5hcHBlbmRDaGlsZChyLGEpLGUuYXBwZW5kQ2hpbGQobixyKTt2
YXIgcj1lLmNyZWF0ZVRleHROb2RlKCJcbiIpO3JldHVybiBlLmFwcGVuZENoaWxkKG4sciksZS5h
cHBlbmRDaGlsZCh0LG4pLHR9LGJ1aWxkUmVuZGVyTm9kZXM6ZnVuY3Rpb24oZSx0LG4pe3ZhciBy
PWUuY2hpbGRBdCh0LFswXSksYT1lLmNoaWxkQXQocixbMSwzXSksbz1uZXcgQXJyYXkoMyk7cmV0
dXJuIG9bMF09ZS5jcmVhdGVBdHRyTW9ycGgoYSwib25rZXlkb3duIiksb1sxXT1lLmNyZWF0ZU1v
cnBoQXQociwzLDMpLG9bMl09ZS5jcmVhdGVNb3JwaEF0KHIsNSw1KSxvfSxzdGF0ZW1lbnRzOltb
ImF0dHJpYnV0ZSIsIm9ua2V5ZG93biIsWyJzdWJleHByIiwiYWN0aW9uIixbImNyZWF0ZVRvZG8i
XSxbXSxbImxvYyIsW251bGwsWzQsNDddLFs0LDcwXV1dXV0sWyJjb250ZW50Iiwib3V0bGV0Iixb
ImxvYyIsW251bGwsWzYsNF0sWzYsMTRdXV1dLFsiYmxvY2siLCJpZiIsW1sic3ViZXhwciIsImd0
IixbWyJnZXQiLCJtb2RlbC5sZW5ndGgiLFsibG9jIixbbnVsbCxbNywxNF0sWzcsMjZdXV1dLDBd
LFtdLFsibG9jIixbbnVsbCxbNywxMF0sWzcsMjldXV1dXSxbXSwwLG51bGwsWyJsb2MiLFtudWxs
LFs3LDRdLFsxOSwxMV1dXV1dLGxvY2FsczpbXSx0ZW1wbGF0ZXM6W2VdfX0oKSl9KSxkZWZpbmUo
InRvZG9tdmMvdGVtcGxhdGVzL2NvbXBsZXRlZCIsWyJleHBvcnRzIl0sZnVuY3Rpb24oZSl7ZS5k
ZWZhdWx0PUVtYmVyLkhUTUxCYXJzLnRlbXBsYXRlKGZ1bmN0aW9uKCl7cmV0dXJue21ldGE6e2Zy
YWdtZW50UmVhc29uOntuYW1lOiJtaXNzaW5nLXdyYXBwZXIiLHByb2JsZW1zOlsid3JvbmctdHlw
ZSJdfSxyZXZpc2lvbjoiRW1iZXJAMi42LjIiLGxvYzp7c291cmNlOm51bGwsc3RhcnQ6e2xpbmU6
MSxjb2x1bW46MH0sZW5kOntsaW5lOjEsY29sdW1uOjI1fX0sbW9kdWxlTmFtZToidG9kb212Yy90
ZW1wbGF0ZXMvY29tcGxldGVkLmhicyJ9LGlzRW1wdHk6ITEsYXJpdHk6MCxjYWNoZWRGcmFnbWVu
dDpudWxsLGhhc1JlbmRlcmVkOiExLGJ1aWxkRnJhZ21lbnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5j
cmVhdGVEb2N1bWVudEZyYWdtZW50KCksbj1lLmNyZWF0ZUNvbW1lbnQoIiIpO3JldHVybiBlLmFw
cGVuZENoaWxkKHQsbiksdH0sYnVpbGRSZW5kZXJOb2RlczpmdW5jdGlvbihlLHQsbil7dmFyIHI9
bmV3IEFycmF5KDEpO3JldHVybiByWzBdPWUuY3JlYXRlTW9ycGhBdCh0LDAsMCxuKSxlLmluc2Vy
dEJvdW5kYXJ5KHQsMCksZS5pbnNlcnRCb3VuZGFyeSh0LG51bGwpLHJ9LHN0YXRlbWVudHM6W1si
aW5saW5lIiwidG9kby1saXN0IixbXSxbInRvZG9zIixbInN1YmV4cHIiLCJAbXV0IixbWyJnZXQi
LCJ0b2RvcyIsWyJsb2MiLFtudWxsLFsxLDE4XSxbMSwyM11dXV1dLFtdLFtdXV0sWyJsb2MiLFtu
dWxsLFsxLDBdLFsxLDI1XV1dXV0sbG9jYWxzOltdLHRlbXBsYXRlczpbXX19KCkpfSksZGVmaW5l
KCJ0b2RvbXZjL3RlbXBsYXRlcy9jb21wb25lbnRzL3RvZG8taXRlbSIsWyJleHBvcnRzIl0sZnVu
Y3Rpb24oZSl7ZS5kZWZhdWx0PUVtYmVyLkhUTUxCYXJzLnRlbXBsYXRlKGZ1bmN0aW9uKCl7cmV0
dXJue21ldGE6e2ZyYWdtZW50UmVhc29uOntuYW1lOiJtaXNzaW5nLXdyYXBwZXIiLHByb2JsZW1z
OlsibXVsdGlwbGUtbm9kZXMiXX0scmV2aXNpb246IkVtYmVyQDIuNi4yIixsb2M6e3NvdXJjZTpu
dWxsLHN0YXJ0OntsaW5lOjEsY29sdW1uOjB9LGVuZDp7bGluZTo2LGNvbHVtbjoxNTN9fSxtb2R1
bGVOYW1lOiJ0b2RvbXZjL3RlbXBsYXRlcy9jb21wb25lbnRzL3RvZG8taXRlbS5oYnMifSxpc0Vt
cHR5OiExLGFyaXR5OjAsY2FjaGVkRnJhZ21lbnQ6bnVsbCxoYXNSZW5kZXJlZDohMSxidWlsZEZy
YWdtZW50OmZ1bmN0aW9uKGUpe3ZhciB0PWUuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLG49ZS5j
cmVhdGVFbGVtZW50KCJkaXYiKTtlLnNldEF0dHJpYnV0ZShuLCJjbGFzcyIsInZpZXciKTt2YXIg
cj1lLmNyZWF0ZVRleHROb2RlKCJcbiAgIik7ZS5hcHBlbmRDaGlsZChuLHIpO3ZhciByPWUuY3Jl
YXRlRWxlbWVudCgiaW5wdXQiKTtlLnNldEF0dHJpYnV0ZShyLCJ0eXBlIiwiY2hlY2tib3giKSxl
LnNldEF0dHJpYnV0ZShyLCJjbGFzcyIsInRvZ2dsZSIpLGUuYXBwZW5kQ2hpbGQobixyKTt2YXIg
cj1lLmNyZWF0ZVRleHROb2RlKCJcbiAgIik7ZS5hcHBlbmRDaGlsZChuLHIpO3ZhciByPWUuY3Jl
YXRlRWxlbWVudCgibGFiZWwiKSxhPWUuY3JlYXRlQ29tbWVudCgiIik7ZS5hcHBlbmRDaGlsZChy
LGEpLGUuYXBwZW5kQ2hpbGQobixyKTt2YXIgcj1lLmNyZWF0ZVRleHROb2RlKCJcbiAgIik7ZS5h
cHBlbmRDaGlsZChuLHIpO3ZhciByPWUuY3JlYXRlRWxlbWVudCgiYnV0dG9uIik7ZS5zZXRBdHRy
aWJ1dGUociwiY2xhc3MiLCJkZXN0cm95IiksZS5hcHBlbmRDaGlsZChuLHIpO3ZhciByPWUuY3Jl
YXRlVGV4dE5vZGUoIlxuIik7ZS5hcHBlbmRDaGlsZChuLHIpLGUuYXBwZW5kQ2hpbGQodCxuKTt2
YXIgbj1lLmNyZWF0ZVRleHROb2RlKCJcbiIpO2UuYXBwZW5kQ2hpbGQodCxuKTt2YXIgbj1lLmNy
ZWF0ZUVsZW1lbnQoImlucHV0Iik7cmV0dXJuIGUuc2V0QXR0cmlidXRlKG4sInR5cGUiLCJ0ZXh0
IiksZS5zZXRBdHRyaWJ1dGUobiwiY2xhc3MiLCJlZGl0IiksZS5zZXRBdHRyaWJ1dGUobiwiYXV0
b2ZvY3VzIiwiIiksZS5hcHBlbmRDaGlsZCh0LG4pLHR9LGJ1aWxkUmVuZGVyTm9kZXM6ZnVuY3Rp
b24oZSx0LG4pe3ZhciByPWUuY2hpbGRBdCh0LFswXSksYT1lLmNoaWxkQXQocixbMV0pO3RoaXMu
Y2FjaGVkRnJhZ21lbnQmJmUucmVwYWlyQ2xvbmVkTm9kZShhLFtdLCEwKTt2YXIgbz1lLmNoaWxk
QXQocixbM10pLGw9ZS5jaGlsZEF0KHIsWzVdKSxpPWUuY2hpbGRBdCh0LFsyXSksZD1uZXcgQXJy
YXkoOCk7cmV0dXJuIGRbMF09ZS5jcmVhdGVBdHRyTW9ycGgoYSwiY2hlY2tlZCIpLGRbMV09ZS5j
cmVhdGVBdHRyTW9ycGgoYSwib25jaGFuZ2UiKSxkWzJdPWUuY3JlYXRlQXR0ck1vcnBoKG8sIm9u
ZGJsY2xpY2siKSxkWzNdPWUuY3JlYXRlTW9ycGhBdChvLDAsMCksZFs0XT1lLmNyZWF0ZUF0dHJN
b3JwaChsLCJvbmNsaWNrIiksZFs1XT1lLmNyZWF0ZUF0dHJNb3JwaChpLCJ2YWx1ZSIpLGRbNl09
ZS5jcmVhdGVBdHRyTW9ycGgoaSwib25ibHVyIiksZFs3XT1lLmNyZWF0ZUF0dHJNb3JwaChpLCJv
bmtleWRvd24iKSxkfSxzdGF0ZW1lbnRzOltbImF0dHJpYnV0ZSIsImNoZWNrZWQiLFsiZ2V0Iiwi
dG9kby5jb21wbGV0ZWQiLFsibG9jIixbbnVsbCxbMiw1MF0sWzIsNjRdXV1dXSxbImF0dHJpYnV0
ZSIsIm9uY2hhbmdlIixbInN1YmV4cHIiLCJhY3Rpb24iLFsidG9nZ2xlQ29tcGxldGVkIl0sW10s
WyJsb2MiLFtudWxsLFsyLDc2XSxbMiwxMDRdXV1dXSxbImF0dHJpYnV0ZSIsIm9uZGJsY2xpY2si
LFsic3ViZXhwciIsImFjdGlvbiIsWyJzdGFydEVkaXRpbmciXSxbXSxbImxvYyIsW251bGwsWzMs
MjBdLFszLDQ1XV1dXV0sWyJjb250ZW50IiwidG9kby50aXRsZSIsWyJsb2MiLFtudWxsLFszLDQ2
XSxbMyw2MF1dXV0sWyJhdHRyaWJ1dGUiLCJvbmNsaWNrIixbInN1YmV4cHIiLCJhY3Rpb24iLFsi
cmVtb3ZlVG9kbyJdLFtdLFsibG9jIixbbnVsbCxbNCwxOF0sWzQsNDFdXV1dXSxbImF0dHJpYnV0
ZSIsInZhbHVlIixbImdldCIsInRvZG8udGl0bGUiLFsibG9jIixbbnVsbCxbNiw0MF0sWzYsNTBd
XV1dXSxbImF0dHJpYnV0ZSIsIm9uYmx1ciIsWyJzdWJleHByIiwiYWN0aW9uIixbImRvbmVFZGl0
aW5nIl0sWyJ2YWx1ZSIsInRhcmdldC52YWx1ZSJdLFsibG9jIixbbnVsbCxbNiw2MF0sWzYsMTA1
XV1dXV0sWyJhdHRyaWJ1dGUiLCJvbmtleWRvd24iLFsic3ViZXhwciIsImFjdGlvbiIsWyJoYW5k
bGVLZXlkb3duIl0sW10sWyJsb2MiLFtudWxsLFs2LDExNl0sWzYsMTQyXV1dXV1dLGxvY2Fsczpb
XSx0ZW1wbGF0ZXM6W119fSgpKX0pLGRlZmluZSgidG9kb212Yy90ZW1wbGF0ZXMvY29tcG9uZW50
cy90b2RvLWxpc3QiLFsiZXhwb3J0cyJdLGZ1bmN0aW9uKGUpe2UuZGVmYXVsdD1FbWJlci5IVE1M
QmFycy50ZW1wbGF0ZShmdW5jdGlvbigpe3ZhciBlPWZ1bmN0aW9uKCl7dmFyIGU9ZnVuY3Rpb24o
KXtyZXR1cm57bWV0YTp7ZnJhZ21lbnRSZWFzb246ITEscmV2aXNpb246IkVtYmVyQDIuNi4yIixs
b2M6e3NvdXJjZTpudWxsLHN0YXJ0OntsaW5lOjIsY29sdW1uOjJ9LGVuZDp7bGluZTo0LGNvbHVt
bjoyfX0sbW9kdWxlTmFtZToidG9kb212Yy90ZW1wbGF0ZXMvY29tcG9uZW50cy90b2RvLWxpc3Qu
aGJzIn0saXNFbXB0eTohMSxhcml0eTowLGNhY2hlZEZyYWdtZW50Om51bGwsaGFzUmVuZGVyZWQ6
ITEsYnVpbGRGcmFnbWVudDpmdW5jdGlvbihlKXt2YXIgdD1lLmNyZWF0ZURvY3VtZW50RnJhZ21l
bnQoKSxuPWUuY3JlYXRlVGV4dE5vZGUoIiAgICAiKTtlLmFwcGVuZENoaWxkKHQsbik7dmFyIG49
ZS5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO2Uuc2V0QXR0cmlidXRlKG4sInR5cGUiLCJjaGVja2Jv
eCIpLGUuc2V0QXR0cmlidXRlKG4sImlkIiwidG9nZ2xlLWFsbCIpLGUuYXBwZW5kQ2hpbGQodCxu
KTt2YXIgbj1lLmNyZWF0ZVRleHROb2RlKCJcbiIpO3JldHVybiBlLmFwcGVuZENoaWxkKHQsbiks
dH0sYnVpbGRSZW5kZXJOb2RlczpmdW5jdGlvbihlLHQsbil7dmFyIHI9ZS5jaGlsZEF0KHQsWzFd
KTt0aGlzLmNhY2hlZEZyYWdtZW50JiZlLnJlcGFpckNsb25lZE5vZGUocixbXSwhMCk7dmFyIGE9
bmV3IEFycmF5KDIpO3JldHVybiBhWzBdPWUuY3JlYXRlQXR0ck1vcnBoKHIsImNoZWNrZWQiKSxh
WzFdPWUuY3JlYXRlQXR0ck1vcnBoKHIsIm9uY2hhbmdlIiksYX0sc3RhdGVtZW50czpbWyJhdHRy
aWJ1dGUiLCJjaGVja2VkIixbImdldCIsImFsbENvbXBsZXRlZCIsWyJsb2MiLFtudWxsLFszLDUz
XSxbMyw2NV1dXV1dLFsiYXR0cmlidXRlIiwib25jaGFuZ2UiLFsic3ViZXhwciIsImFjdGlvbiIs
WyJ0b2dnbGVBbGwiXSxbXSxbImxvYyIsW251bGwsWzMsNzddLFszLDk5XV1dXV1dLGxvY2Fsczpb
XSx0ZW1wbGF0ZXM6W119fSgpLHQ9ZnVuY3Rpb24oKXtyZXR1cm57bWV0YTp7ZnJhZ21lbnRSZWFz
b246ITEscmV2aXNpb246IkVtYmVyQDIuNi4yIixsb2M6e3NvdXJjZTpudWxsLHN0YXJ0OntsaW5l
OjYsY29sdW1uOjR9LGVuZDp7bGluZTo4LGNvbHVtbjo0fX0sbW9kdWxlTmFtZToidG9kb212Yy90
ZW1wbGF0ZXMvY29tcG9uZW50cy90b2RvLWxpc3QuaGJzIn0saXNFbXB0eTohMSxhcml0eToxLGNh
Y2hlZEZyYWdtZW50Om51bGwsaGFzUmVuZGVyZWQ6ITEsYnVpbGRGcmFnbWVudDpmdW5jdGlvbihl
KXt2YXIgdD1lLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxuPWUuY3JlYXRlVGV4dE5vZGUoIiAg
ICAgICIpO2UuYXBwZW5kQ2hpbGQodCxuKTt2YXIgbj1lLmNyZWF0ZUNvbW1lbnQoIiIpO2UuYXBw
ZW5kQ2hpbGQodCxuKTt2YXIgbj1lLmNyZWF0ZVRleHROb2RlKCJcbiIpO3JldHVybiBlLmFwcGVu
ZENoaWxkKHQsbiksdH0sYnVpbGRSZW5kZXJOb2RlczpmdW5jdGlvbihlLHQsbil7dmFyIHI9bmV3
IEFycmF5KDEpO3JldHVybiByWzBdPWUuY3JlYXRlTW9ycGhBdCh0LDEsMSxuKSxyfSxzdGF0ZW1l
bnRzOltbImlubGluZSIsInRvZG8taXRlbSIsW10sWyJ0b2RvIixbInN1YmV4cHIiLCJAbXV0Iixb
WyJnZXQiLCJ0b2RvIixbImxvYyIsW251bGwsWzcsMjNdLFs3LDI3XV1dXV0sW10sW11dLCJvblN0
YXJ0RWRpdCIsWyJzdWJleHByIiwiYWN0aW9uIixbImRpc2FibGVUb2dnbGUiXSxbXSxbImxvYyIs
W251bGwsWzcsNDBdLFs3LDY0XV1dXSwib25FbmRFZGl0IixbInN1YmV4cHIiLCJhY3Rpb24iLFsi
ZW5hYmxlVG9nZ2xlIl0sW10sWyJsb2MiLFtudWxsLFs3LDc1XSxbNyw5OF1dXV1dLFsibG9jIixb
bnVsbCxbNyw2XSxbNywxMDBdXV1dXSxsb2NhbHM6WyJ0b2RvIl0sdGVtcGxhdGVzOltdfX0oKTty
ZXR1cm57bWV0YTp7ZnJhZ21lbnRSZWFzb246e25hbWU6Im1pc3Npbmctd3JhcHBlciIscHJvYmxl
bXM6WyJ3cm9uZy10eXBlIiwibXVsdGlwbGUtbm9kZXMiXX0scmV2aXNpb246IkVtYmVyQDIuNi4y
Iixsb2M6e3NvdXJjZTpudWxsLHN0YXJ0OntsaW5lOjEsY29sdW1uOjB9LGVuZDp7bGluZToxMCxj
b2x1bW46MH19LG1vZHVsZU5hbWU6InRvZG9tdmMvdGVtcGxhdGVzL2NvbXBvbmVudHMvdG9kby1s
aXN0LmhicyJ9LGlzRW1wdHk6ITEsYXJpdHk6MCxjYWNoZWRGcmFnbWVudDpudWxsLGhhc1JlbmRl
cmVkOiExLGJ1aWxkRnJhZ21lbnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jcmVhdGVEb2N1bWVudEZy
YWdtZW50KCksbj1lLmNyZWF0ZUNvbW1lbnQoIiIpO2UuYXBwZW5kQ2hpbGQodCxuKTt2YXIgbj1l
LmNyZWF0ZVRleHROb2RlKCIgICIpO2UuYXBwZW5kQ2hpbGQodCxuKTt2YXIgbj1lLmNyZWF0ZUVs
ZW1lbnQoInVsIik7ZS5zZXRBdHRyaWJ1dGUobiwiaWQiLCJ0b2RvLWxpc3QiKSxlLnNldEF0dHJp
YnV0ZShuLCJjbGFzcyIsInRvZG8tbGlzdCIpO3ZhciByPWUuY3JlYXRlVGV4dE5vZGUoIlxuIik7
ZS5hcHBlbmRDaGlsZChuLHIpO3ZhciByPWUuY3JlYXRlQ29tbWVudCgiIik7ZS5hcHBlbmRDaGls
ZChuLHIpO3ZhciByPWUuY3JlYXRlVGV4dE5vZGUoIiAgIik7ZS5hcHBlbmRDaGlsZChuLHIpLGUu
YXBwZW5kQ2hpbGQodCxuKTt2YXIgbj1lLmNyZWF0ZVRleHROb2RlKCJcbiIpO3JldHVybiBlLmFw
cGVuZENoaWxkKHQsbiksdH0sYnVpbGRSZW5kZXJOb2RlczpmdW5jdGlvbihlLHQsbil7dmFyIHI9
bmV3IEFycmF5KDIpO3JldHVybiByWzBdPWUuY3JlYXRlTW9ycGhBdCh0LDAsMCxuKSxyWzFdPWUu
Y3JlYXRlTW9ycGhBdChlLmNoaWxkQXQodCxbMl0pLDEsMSksZS5pbnNlcnRCb3VuZGFyeSh0LDAp
LHJ9LHN0YXRlbWVudHM6W1siYmxvY2siLCJpZiIsW1siZ2V0IiwiY2FuVG9nZ2xlIixbImxvYyIs
W251bGwsWzIsOF0sWzIsMTddXV1dXSxbXSwwLG51bGwsWyJsb2MiLFtudWxsLFsyLDJdLFs0LDld
XV1dLFsiYmxvY2siLCJlYWNoIixbWyJnZXQiLCJ0b2RvcyIsWyJsb2MiLFtudWxsLFs2LDEyXSxb
NiwxN11dXV1dLFtdLDEsbnVsbCxbImxvYyIsW251bGwsWzYsNF0sWzgsMTNdXV1dXSxsb2NhbHM6
W10sdGVtcGxhdGVzOltlLHRdfX0oKTtyZXR1cm57bWV0YTp7ZnJhZ21lbnRSZWFzb246e25hbWU6
Im1pc3Npbmctd3JhcHBlciIscHJvYmxlbXM6WyJ3cm9uZy10eXBlIl19LHJldmlzaW9uOiJFbWJl
ckAyLjYuMiIsbG9jOntzb3VyY2U6bnVsbCxzdGFydDp7bGluZToxLGNvbHVtbjowfSxlbmQ6e2xp
bmU6MTEsY29sdW1uOjB9fSxtb2R1bGVOYW1lOiJ0b2RvbXZjL3RlbXBsYXRlcy9jb21wb25lbnRz
L3RvZG8tbGlzdC5oYnMifSxpc0VtcHR5OiExLGFyaXR5OjAsY2FjaGVkRnJhZ21lbnQ6bnVsbCxo
YXNSZW5kZXJlZDohMSxidWlsZEZyYWdtZW50OmZ1bmN0aW9uKGUpe3ZhciB0PWUuY3JlYXRlRG9j
dW1lbnRGcmFnbWVudCgpLG49ZS5jcmVhdGVDb21tZW50KCIiKTtyZXR1cm4gZS5hcHBlbmRDaGls
ZCh0LG4pLHR9LGJ1aWxkUmVuZGVyTm9kZXM6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW5ldyBBcnJh
eSgxKTtyZXR1cm4gclswXT1lLmNyZWF0ZU1vcnBoQXQodCwwLDAsbiksZS5pbnNlcnRCb3VuZGFy
eSh0LDApLGUuaW5zZXJ0Qm91bmRhcnkodCxudWxsKSxyfSxzdGF0ZW1lbnRzOltbImJsb2NrIiwi
aWYiLFtbImdldCIsInRvZG9zLmxlbmd0aCIsWyJsb2MiLFtudWxsLFsxLDZdLFsxLDE4XV1dXV0s
W10sMCxudWxsLFsibG9jIixbbnVsbCxbMSwwXSxbMTAsN11dXV1dLGxvY2FsczpbXSx0ZW1wbGF0
ZXM6W2VdfX0oKSl9KSxkZWZpbmUoInRvZG9tdmMvdGVtcGxhdGVzL2luZGV4IixbImV4cG9ydHMi
XSxmdW5jdGlvbihlKXtlLmRlZmF1bHQ9RW1iZXIuSFRNTEJhcnMudGVtcGxhdGUoZnVuY3Rpb24o
KXt2YXIgZT1mdW5jdGlvbigpe3JldHVybnttZXRhOntmcmFnbWVudFJlYXNvbjp7bmFtZToibWlz
c2luZy13cmFwcGVyIixwcm9ibGVtczpbIndyb25nLXR5cGUiXX0scmV2aXNpb246IkVtYmVyQDIu
Ni4yIixsb2M6e3NvdXJjZTpudWxsLHN0YXJ0OntsaW5lOjEsY29sdW1uOjB9LGVuZDp7bGluZToz
LGNvbHVtbjowfX0sbW9kdWxlTmFtZToidG9kb212Yy90ZW1wbGF0ZXMvaW5kZXguaGJzIn0saXNF
bXB0eTohMSxhcml0eTowLGNhY2hlZEZyYWdtZW50Om51bGwsaGFzUmVuZGVyZWQ6ITEsYnVpbGRG
cmFnbWVudDpmdW5jdGlvbihlKXt2YXIgdD1lLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxuPWUu
Y3JlYXRlVGV4dE5vZGUoIiAgIik7ZS5hcHBlbmRDaGlsZCh0LG4pO3ZhciBuPWUuY3JlYXRlQ29t
bWVudCgiIik7ZS5hcHBlbmRDaGlsZCh0LG4pO3ZhciBuPWUuY3JlYXRlVGV4dE5vZGUoIlxuIik7
cmV0dXJuIGUuYXBwZW5kQ2hpbGQodCxuKSx0fSxidWlsZFJlbmRlck5vZGVzOmZ1bmN0aW9uKGUs
dCxuKXt2YXIgcj1uZXcgQXJyYXkoMSk7cmV0dXJuIHJbMF09ZS5jcmVhdGVNb3JwaEF0KHQsMSwx
LG4pLHJ9LHN0YXRlbWVudHM6W1siaW5saW5lIiwidG9kby1saXN0IixbXSxbInRvZG9zIixbInN1
YmV4cHIiLCJAbXV0IixbWyJnZXQiLCJtb2RlbCIsWyJsb2MiLFtudWxsLFsyLDIwXSxbMiwyNV1d
XV1dLFtdLFtdXV0sWyJsb2MiLFtudWxsLFsyLDJdLFsyLDI3XV1dXV0sbG9jYWxzOltdLHRlbXBs
YXRlczpbXX19KCk7cmV0dXJue21ldGE6e2ZyYWdtZW50UmVhc29uOntuYW1lOiJtaXNzaW5nLXdy
YXBwZXIiLHByb2JsZW1zOlsid3JvbmctdHlwZSJdfSxyZXZpc2lvbjoiRW1iZXJAMi42LjIiLGxv
Yzp7c291cmNlOm51bGwsc3RhcnQ6e2xpbmU6MSxjb2x1bW46MH0sZW5kOntsaW5lOjQsY29sdW1u
OjB9fSxtb2R1bGVOYW1lOiJ0b2RvbXZjL3RlbXBsYXRlcy9pbmRleC5oYnMifSxpc0VtcHR5OiEx
LGFyaXR5OjAsY2FjaGVkRnJhZ21lbnQ6bnVsbCxoYXNSZW5kZXJlZDohMSxidWlsZEZyYWdtZW50
OmZ1bmN0aW9uKGUpe3ZhciB0PWUuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLG49ZS5jcmVhdGVD
b21tZW50KCIiKTtyZXR1cm4gZS5hcHBlbmRDaGlsZCh0LG4pLHR9LGJ1aWxkUmVuZGVyTm9kZXM6
ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW5ldyBBcnJheSgxKTtyZXR1cm4gclswXT1lLmNyZWF0ZU1v
cnBoQXQodCwwLDAsbiksZS5pbnNlcnRCb3VuZGFyeSh0LDApLGUuaW5zZXJ0Qm91bmRhcnkodCxu
dWxsKSxyfSxzdGF0ZW1lbnRzOltbImJsb2NrIiwiaWYiLFtbImdldCIsIm1vZGVsLmxlbmd0aCIs
WyJsb2MiLFtudWxsLFsxLDZdLFsxLDE4XV1dXV0sW10sMCxudWxsLFsibG9jIixbbnVsbCxbMSww
XSxbMyw3XV1dXV0sbG9jYWxzOltdLHRlbXBsYXRlczpbZV19fSgpKX0pLGRlZmluZSgidG9kb212
Yy9jb25maWcvZW52aXJvbm1lbnQiLFsiZW1iZXIiXSxmdW5jdGlvbihlKXt2YXIgdD0idG9kb212
YyI7dHJ5e3ZhciBuPXQrIi9jb25maWcvZW52aXJvbm1lbnQiLHI9ZS5kZWZhdWx0LiQoJ21ldGFb
bmFtZT0iJytuKyciXScpLmF0dHIoImNvbnRlbnQiKSxhPUpTT04ucGFyc2UodW5lc2NhcGUocikp
O3JldHVybntkZWZhdWx0OmF9fWNhdGNoKGUpe3Rocm93IG5ldyBFcnJvcignQ291bGQgbm90IHJl
YWQgY29uZmlnIGZyb20gbWV0YSB0YWcgd2l0aCBuYW1lICInK24rJyIuJyl9fSkscnVubmluZ1Rl
c3RzfHxyZXF1aXJlKCJ0b2RvbXZjL2FwcCIpLmRlZmF1bHQuY3JlYXRlKHtuYW1lOiJ0b2RvbXZj
Iix2ZXJzaW9uOiIwLjAuMCs1MGQ0NmI0YyJ9KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL2Fzc2V0cy92ZW5kb3ItN2I1Yzk4NTIw
OTEwYWZhNThkNzRlMDVlYzg2Y2Q4NzMuY3NzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9hc3NldHMv
dmVuZG9yLTdiNWM5ODUyMDkxMGFmYTU4ZDc0ZTA1ZWM4NmNkODczLmNzcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
ZjVjZmY5OGNmZGM0OTljNjVlNTgyYzMzMzViZTNjNDVhODFhZDg3Ci0tLSAvZGV2L251bGwKKysr
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9hc3NldHMvdmVuZG9yLTdiNWM5ODUyMDkxMGFmYTU4ZDc0
ZTA1ZWM4NmNkODczLmNzcwpAQCAtMCwwICsxIEBACisjaXNzdWUtY291bnQsLmhpZGRlbixsYWJl
bFtmb3I9dG9nZ2xlLWFsbF17ZGlzcGxheTpub25lfSNmb290ZXIsI2luZm8sI3RvZG9hcHAgaDEs
I3RvZ2dsZS1hbGx7dGV4dC1hbGlnbjpjZW50ZXJ9aHJ7bWFyZ2luOjIwcHggMDtib3JkZXI6MDti
b3JkZXItdG9wOjFweCBkYXNoZWQgI2M1YzVjNTtib3JkZXItYm90dG9tOjFweCBkYXNoZWQgI2Y3
ZjdmN30ubGVhcm4gYXtmb250LXdlaWdodDo0MDA7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Y29sb3I6
I2I4M2Y0NX0ubGVhcm4gYTpob3Zlcnt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO2NvbG9yOiM3
ODdlN2V9LmxlYXJuIGgzLC5sZWFybiBoNCwubGVhcm4gaDV7bWFyZ2luOjEwcHggMDtmb250LXdl
aWdodDo1MDA7bGluZS1oZWlnaHQ6MS4yO2NvbG9yOiMwMDB9LmxlYXJuIGgze2ZvbnQtc2l6ZToy
NHB4fS5sZWFybiBoNHtmb250LXNpemU6MThweH0ubGVhcm4gaDV7bWFyZ2luLWJvdHRvbTowO2Zv
bnQtc2l6ZToxNHB4fS5sZWFybiB1bHtwYWRkaW5nOjA7bWFyZ2luOjAgMCAzMHB4IDI1cHh9Lmxl
YXJuIGxpe2xpbmUtaGVpZ2h0OjIwcHh9LmxlYXJuIHB7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWln
aHQ6MzAwO2xpbmUtaGVpZ2h0OjEuMzttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbTowfS5xdW90
ZSBwOmFmdGVyLC5xdW90ZSBwOmJlZm9yZXtmb250LXNpemU6NTBweDtvcGFjaXR5Oi4xNTtwb3Np
dGlvbjphYnNvbHV0ZX0ucXVvdGV7Ym9yZGVyOm5vbmU7bWFyZ2luOjIwcHggMCA2MHB4fS5xdW90
ZSBwe2ZvbnQtc3R5bGU6aXRhbGljfS5xdW90ZSBwOmJlZm9yZXtjb250ZW50OifigJwnO3RvcDot
MjBweDtsZWZ0OjNweH0ucXVvdGUgcDphZnRlcntjb250ZW50OifigJ0nO2JvdHRvbTotNDJweDty
aWdodDozcHh9LnF1b3RlIGZvb3Rlcntwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206LTQwcHg7cmln
aHQ6MH0ucXVvdGUgZm9vdGVyIGltZ3tib3JkZXItcmFkaXVzOjNweH0ucXVvdGUgZm9vdGVyIGF7
bWFyZ2luLWxlZnQ6NXB4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uc3BlZWNoLWJ1YmJsZXtwb3Np
dGlvbjpyZWxhdGl2ZTtwYWRkaW5nOjEwcHg7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wNCk7Ym9y
ZGVyLXJhZGl1czo1cHh9LnNwZWVjaC1idWJibGU6YWZ0ZXJ7Y29udGVudDonJztwb3NpdGlvbjph
YnNvbHV0ZTt0b3A6MTAwJTtyaWdodDozMHB4O2JvcmRlcjoxM3B4IHNvbGlkIHRyYW5zcGFyZW50
O2JvcmRlci10b3AtY29sb3I6cmdiYSgwLDAsMCwuMDQpfS5sZWFybi1iYXI+LmxlYXJue3Bvc2l0
aW9uOmFic29sdXRlO3dpZHRoOjI3MnB4O3RvcDo4cHg7bGVmdDotMzAwcHg7cGFkZGluZzoxMHB4
O2JvcmRlci1yYWRpdXM6NXB4O2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNik7
dHJhbnNpdGlvbi1wcm9wZXJ0eTpsZWZ0O3RyYW5zaXRpb24tZHVyYXRpb246LjVzfSNtYWluLCNu
ZXctdG9kbywjdG9kby1saXN0IGxpLCN0b2RvYXBwLC5lZGl0e3Bvc2l0aW9uOnJlbGF0aXZlfUBt
ZWRpYSAobWluLXdpZHRoOjg5OXB4KXsubGVhcm4tYmFye3dpZHRoOmF1dG87cGFkZGluZy1sZWZ0
OjMwMHB4fS5sZWFybi1iYXI+LmxlYXJue2xlZnQ6OHB4fX1ib2R5LGJ1dHRvbixodG1se3BhZGRp
bmc6MDttYXJnaW46MH1idXR0b257Ym9yZGVyOjA7YmFja2dyb3VuZDowIDA7Zm9udC1zaXplOjEw
MCU7dmVydGljYWwtYWxpZ246YmFzZWxpbmU7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXdlaWdo
dDppbmhlcml0O2NvbG9yOmluaGVyaXQ7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7YXBwZWFyYW5j
ZTpub25lOy13ZWJraXQtZm9udC1zbW9vdGhpbmc6YW50aWFsaWFzZWQ7LW1vei1mb250LXNtb290
aGluZzphbnRpYWxpYXNlZDtmb250LXNtb290aGluZzphbnRpYWxpYXNlZH1ib2R5e2ZvbnQ6MTRw
eCAnSGVsdmV0aWNhIE5ldWUnLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmO2xpbmUtaGVpZ2h0
OjEuNGVtO2JhY2tncm91bmQ6I2Y1ZjVmNTtjb2xvcjojNGQ0ZDRkO21pbi13aWR0aDoyMzBweDtt
YXgtd2lkdGg6NTUwcHg7bWFyZ2luOjAgYXV0bzstd2Via2l0LWZvbnQtc21vb3RoaW5nOmFudGlh
bGlhc2VkOy1tb3otZm9udC1zbW9vdGhpbmc6YW50aWFsaWFzZWQ7Zm9udC1zbW9vdGhpbmc6YW50
aWFsaWFzZWQ7Zm9udC13ZWlnaHQ6MzAwfWJ1dHRvbixpbnB1dFt0eXBlPWNoZWNrYm94XXtvdXRs
aW5lOjB9I3RvZG9hcHB7YmFja2dyb3VuZDojZmZmO21hcmdpbjoxMzBweCAwIDQwcHg7Ym94LXNo
YWRvdzowIDJweCA0cHggMCByZ2JhKDAsMCwwLC4yKSwwIDI1cHggNTBweCAwIHJnYmEoMCwwLDAs
LjEpfSN0b2RvYXBwIGlucHV0Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVye2ZvbnQtc3R5bGU6
aXRhbGljO2ZvbnQtd2VpZ2h0OjMwMDtjb2xvcjojZTZlNmU2fSN0b2RvYXBwIGlucHV0OjotbW96
LXBsYWNlaG9sZGVye2ZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtd2VpZ2h0OjMwMDtjb2xvcjojZTZl
NmU2fSN0b2RvYXBwIGlucHV0OjppbnB1dC1wbGFjZWhvbGRlcntmb250LXN0eWxlOml0YWxpYztm
b250LXdlaWdodDozMDA7Y29sb3I6I2U2ZTZlNn0jdG9kb2FwcCBoMXtwb3NpdGlvbjphYnNvbHV0
ZTt0b3A6LTE1NXB4O3dpZHRoOjEwMCU7Zm9udC1zaXplOjEwMHB4O2ZvbnQtd2VpZ2h0OjEwMDtj
b2xvcjpyZ2JhKDE3NSw0Nyw0NywuMTUpOy13ZWJraXQtdGV4dC1yZW5kZXJpbmc6b3B0aW1pemVM
ZWdpYmlsaXR5Oy1tb3otdGV4dC1yZW5kZXJpbmc6b3B0aW1pemVMZWdpYmlsaXR5O3RleHQtcmVu
ZGVyaW5nOm9wdGltaXplTGVnaWJpbGl0eX0jbmV3LXRvZG8sLmVkaXR7bWFyZ2luOjA7d2lkdGg6
MTAwJTtmb250LXNpemU6MjRweDtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtd2VpZ2h0OmluaGVy
aXQ7bGluZS1oZWlnaHQ6MS40ZW07b3V0bGluZTowO2NvbG9yOmluaGVyaXQ7cGFkZGluZzo2cHg7
Ym9yZGVyOjFweCBzb2xpZCAjOTk5O2JveC1zaGFkb3c6aW5zZXQgMCAtMXB4IDVweCAwIHJnYmEo
MCwwLDAsLjIpO2JveC1zaXppbmc6Ym9yZGVyLWJveDstd2Via2l0LWZvbnQtc21vb3RoaW5nOmFu
dGlhbGlhc2VkOy1tb3otZm9udC1zbW9vdGhpbmc6YW50aWFsaWFzZWQ7Zm9udC1zbW9vdGhpbmc6
YW50aWFsaWFzZWR9I25ldy10b2Rve3BhZGRpbmc6MTZweCAxNnB4IDE2cHggNjBweDtib3JkZXI6
bm9uZTtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjAwMyk7Ym94LXNoYWRvdzppbnNldCAwIC0ycHgg
MXB4IHJnYmEoMCwwLDAsLjAzKX0jbWFpbnt6LWluZGV4OjI7Ym9yZGVyLXRvcDoxcHggc29saWQg
I2U2ZTZlNn0jdG9nZ2xlLWFsbHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6LTU1cHg7bGVmdDotMTJw
eDt3aWR0aDo2MHB4O2hlaWdodDozNHB4O2JvcmRlcjpub25lfSN0b2dnbGUtYWxsOmJlZm9yZXtj
b250ZW50Oifina8nO2ZvbnQtc2l6ZToyMnB4O2NvbG9yOiNlNmU2ZTY7cGFkZGluZzoxMHB4IDI3
cHh9I3RvZ2dsZS1hbGw6Y2hlY2tlZDpiZWZvcmV7Y29sb3I6IzczNzM3M30jdG9kby1saXN0e21h
cmdpbjowO3BhZGRpbmc6MDtsaXN0LXN0eWxlOm5vbmV9I3RvZG8tbGlzdCBsaXtmb250LXNpemU6
MjRweDtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZWRlZGVkfSN0b2RvLWxpc3QgbGk6bGFzdC1j
aGlsZHtib3JkZXItYm90dG9tOm5vbmV9I3RvZG8tbGlzdCBsaS5lZGl0aW5ne2JvcmRlci1ib3R0
b206bm9uZTtwYWRkaW5nOjB9I3RvZG8tbGlzdCBsaS5lZGl0aW5nIC5lZGl0e2Rpc3BsYXk6Ymxv
Y2s7d2lkdGg6NTA2cHg7cGFkZGluZzoxM3B4IDE3cHggMTJweDttYXJnaW46MCAwIDAgNDNweH0j
dG9kby1saXN0IGxpLmVkaXRpbmcgLnZpZXd7ZGlzcGxheTpub25lfSN0b2RvLWxpc3QgbGkgLnRv
Z2dsZXt0ZXh0LWFsaWduOmNlbnRlcjt3aWR0aDo0MHB4O2hlaWdodDphdXRvO3Bvc2l0aW9uOmFi
c29sdXRlO3RvcDowO2JvdHRvbTowO21hcmdpbjphdXRvIDA7Ym9yZGVyOm5vbmU7LXdlYmtpdC1h
cHBlYXJhbmNlOm5vbmU7YXBwZWFyYW5jZTpub25lfSN0b2RvLWxpc3QgbGkgLnRvZ2dsZTphZnRl
cntjb250ZW50OnVybCgnZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgdmlld0JveD0iLTEw
IC0xOCAxMDAgMTM1Ij48Y2lyY2xlIGN4PSI1MCIgY3k9IjUwIiByPSI1MCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSIjZWRlZGVkIiBzdHJva2Utd2lkdGg9IjMiLz48L3N2Zz4nKX0jdG9kby1saXN0IGxp
IC50b2dnbGU6Y2hlY2tlZDphZnRlcntjb250ZW50OnVybCgnZGF0YTppbWFnZS9zdmcreG1sO3V0
ZjgsPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0MCIgaGVp
Z2h0PSI0MCIgdmlld0JveD0iLTEwIC0xOCAxMDAgMTM1Ij48Y2lyY2xlIGN4PSI1MCIgY3k9IjUw
IiByPSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYmRkYWQ1IiBzdHJva2Utd2lkdGg9IjMiLz48
cGF0aCBmaWxsPSIjNWRjMmFmIiBkPSJNNzIgMjVMNDIgNzEgMjcgNTZsLTQgNCAyMCAyMCAzNC01
MnoiLz48L3N2Zz4nKX0jdG9kby1saXN0IGxpIGxhYmVse3doaXRlLXNwYWNlOnByZTt3b3JkLWJy
ZWFrOmJyZWFrLXdvcmQ7cGFkZGluZzoxNXB4IDYwcHggMTVweCAxNXB4O21hcmdpbi1sZWZ0OjQ1
cHg7ZGlzcGxheTpibG9jaztsaW5lLWhlaWdodDoxLjI7dHJhbnNpdGlvbjpjb2xvciAuNHN9I3Rv
ZG8tbGlzdCBsaS5jb21wbGV0ZWQgbGFiZWx7Y29sb3I6I2Q5ZDlkOTt0ZXh0LWRlY29yYXRpb246
bGluZS10aHJvdWdofSN0b2RvLWxpc3QgbGkgLmRlc3Ryb3l7ZGlzcGxheTpub25lO3Bvc2l0aW9u
OmFic29sdXRlO3RvcDowO3JpZ2h0OjEwcHg7Ym90dG9tOjA7d2lkdGg6NDBweDtoZWlnaHQ6NDBw
eDttYXJnaW46YXV0byAwIDExcHg7Zm9udC1zaXplOjMwcHg7Y29sb3I6I2NjOWE5YTt0cmFuc2l0
aW9uOmNvbG9yIC4ycyBlYXNlLW91dH0jZmlsdGVycywjZm9vdGVyOmJlZm9yZXtwb3NpdGlvbjph
YnNvbHV0ZTtyaWdodDowO2xlZnQ6MH0jdG9kby1saXN0IGxpIC5kZXN0cm95OmhvdmVye2NvbG9y
OiNhZjViNWV9I2ZpbHRlcnMgbGkgYSwjaW5mbyBhe2NvbG9yOmluaGVyaXQ7dGV4dC1kZWNvcmF0
aW9uOm5vbmV9I3RvZG8tbGlzdCBsaSAuZGVzdHJveTphZnRlcntjb250ZW50OifDlyd9I3RvZG8t
bGlzdCBsaTpob3ZlciAuZGVzdHJveXtkaXNwbGF5OmJsb2NrfSN0b2RvLWxpc3QgbGkgLmVkaXR7
ZGlzcGxheTpub25lfSN0b2RvLWxpc3QgbGkuZWRpdGluZzpsYXN0LWNoaWxke21hcmdpbi1ib3R0
b206LTFweH0jZm9vdGVye2NvbG9yOiM3Nzc7cGFkZGluZzoxMHB4IDE1cHg7aGVpZ2h0OjIwcHg7
Ym9yZGVyLXRvcDoxcHggc29saWQgI2U2ZTZlNn0jZm9vdGVyOmJlZm9yZXtjb250ZW50OicnO2Jv
dHRvbTowO2hlaWdodDo1MHB4O292ZXJmbG93OmhpZGRlbjtib3gtc2hhZG93OjAgMXB4IDFweCBy
Z2JhKDAsMCwwLC4yKSwwIDhweCAwIC0zcHggI2Y2ZjZmNiwwIDlweCAxcHggLTNweCByZ2JhKDAs
MCwwLC4yKSwwIDE2cHggMCAtNnB4ICNmNmY2ZjYsMCAxN3B4IDJweCAtNnB4IHJnYmEoMCwwLDAs
LjIpfSN0b2RvLWNvdW50e2Zsb2F0OmxlZnQ7dGV4dC1hbGlnbjpsZWZ0fSN0b2RvLWNvdW50IHN0
cm9uZ3tmb250LXdlaWdodDozMDB9I2ZpbHRlcnN7bWFyZ2luOjA7cGFkZGluZzowO2xpc3Qtc3R5
bGU6bm9uZX0jZmlsdGVycyBsaXtkaXNwbGF5OmlubGluZX0jZmlsdGVycyBsaSBhe21hcmdpbjoz
cHg7cGFkZGluZzozcHggN3B4O2JvcmRlcjoxcHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJh
ZGl1czozcHh9I2ZpbHRlcnMgbGkgYS5zZWxlY3RlZCwjZmlsdGVycyBsaSBhOmhvdmVye2JvcmRl
ci1jb2xvcjpyZ2JhKDE3NSw0Nyw0NywuMSl9I2ZpbHRlcnMgbGkgYS5zZWxlY3RlZHtib3JkZXIt
Y29sb3I6cmdiYSgxNzUsNDcsNDcsLjIpfSNjbGVhci1jb21wbGV0ZWQsaHRtbCAjY2xlYXItY29t
cGxldGVkOmFjdGl2ZXtmbG9hdDpyaWdodDtsaW5lLWhlaWdodDoyMHB4O3RleHQtZGVjb3JhdGlv
bjpub25lO2N1cnNvcjpwb2ludGVyO3Bvc2l0aW9uOnJlbGF0aXZlfSNjbGVhci1jb21wbGV0ZWQ6
aG92ZXIsI2luZm8gYTpob3Zlcnt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfSNpbmZve21hcmdp
bjo2NXB4IGF1dG8gMDtjb2xvcjojYmZiZmJmO2ZvbnQtc2l6ZToxMHB4O3RleHQtc2hhZG93OjAg
MXB4IDAgcmdiYSgyNTUsMjU1LDI1NSwuNSl9I2luZm8gcHtsaW5lLWhlaWdodDoxfSNpbmZvIGF7
Zm9udC13ZWlnaHQ6NDAwfUBtZWRpYSBzY3JlZW4gYW5kICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4
ZWwtcmF0aW86MCl7I3RvZG8tbGlzdCBsaSAudG9nZ2xlLCN0b2dnbGUtYWxse2JhY2tncm91bmQ6
MCAwfSN0b2RvLWxpc3QgbGkgLnRvZ2dsZXtoZWlnaHQ6NDBweH0jdG9nZ2xlLWFsbHstd2Via2l0
LXRyYW5zZm9ybTpyb3RhdGUoOTBkZWcpO3RyYW5zZm9ybTpyb3RhdGUoOTBkZWcpOy13ZWJraXQt
YXBwZWFyYW5jZTpub25lO2FwcGVhcmFuY2U6bm9uZX19QG1lZGlhIChtYXgtd2lkdGg6NDMwcHgp
eyNmb290ZXJ7aGVpZ2h0OjUwcHh9I2ZpbHRlcnN7Ym90dG9tOjEwcHh9fQpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvYXNzZXRzL3Zl
bmRvci05ODM2YWM4YjAxNmZjZWE2Zjg5Y2NmOTI5MTc3NzJmNi5qcyBiL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2Vt
YmVyanMvYXNzZXRzL3ZlbmRvci05ODM2YWM4YjAxNmZjZWE2Zjg5Y2NmOTI5MTc3NzJmNi5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kNDJiYTIwYjBkOTE4NTBhMzAyMzQ4MTY0ZWE5YTllM2UzODQxZTgzCi0tLSAv
ZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9hc3NldHMvdmVuZG9yLTk4MzZhYzhi
MDE2ZmNlYTZmODljY2Y5MjkxNzc3MmY2LmpzCkBAIC0wLDAgKzEsMTggQEAKK2Z1bmN0aW9uIGNy
ZWF0ZURlcHJlY2F0ZWRNb2R1bGUoZSl7ZGVmaW5lKGUsWyJleHBvcnRzIiwiZW1iZXItcmVzb2x2
ZXIvcmVzb2x2ZXIiLCJlbWJlciJdLGZ1bmN0aW9uKHQscixuKXtuLmRlZmF1bHQuZGVwcmVjYXRl
KCJVc2FnZSBvZiBgIitlKyJgIG1vZHVsZSBpcyBkZXByZWNhdGVkLCBwbGVhc2UgdXBkYXRlIHRv
IGBlbWJlci1yZXNvbHZlcmAuIiwhMSx7aWQ6ImVtYmVyLXJlc29sdmVyLmxlZ2FjeS1zaGltcyIs
dW50aWw6IjMuMC4wIn0pLHQuZGVmYXVsdD1yLmRlZmF1bHR9KX13aW5kb3cuRW1iZXJFTlY9e0ZF
QVRVUkVTOnt9fTt2YXIgcnVubmluZ1Rlc3RzPSExLGxvYWRlcixkZWZpbmUscmVxdWlyZU1vZHVs
ZSxyZXF1aXJlLHJlcXVpcmVqczshZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHQo
KXtsPXtkZWZpbmU6MCxyZXF1aXJlOjAscmVpZnk6MCxmaW5kRGVwczowLG1vZHVsZXM6MCxleHBv
cnRzOjAscmVzb2x2ZTowLHJlc29sdmVSZWxhdGl2ZTowLGZpbmRNb2R1bGU6MCxwZW5kaW5nUXVl
dWVMZW5ndGg6MH0scmVxdWlyZWpzLl9zdGF0cz1sfWZ1bmN0aW9uIHIoZSl7dGhyb3cgbmV3IEVy
cm9yKCJhbiB1bnN1cHBvcnRlZCBtb2R1bGUgd2FzIGRlZmluZWQsIGV4cGVjdGVkIGBkZWZpbmUo
bmFtZSwgZGVwcywgbW9kdWxlKWAgaW5zdGVhZCBnb3Q6IGAiK2UrImAgYXJndW1lbnRzIHRvIGRl
ZmluZWAiKX1mdW5jdGlvbiBuKGUsdCxyLG4pe2wubW9kdWxlcysrLHRoaXMuaWQ9aCsrLHRoaXMu
bmFtZT1lLHRoaXMuZGVwcz0hdC5sZW5ndGgmJnIubGVuZ3RoP206dCx0aGlzLm1vZHVsZT17ZXhw
b3J0czp7fX0sdGhpcy5jYWxsYmFjaz1yLHRoaXMuZmluYWxpemVkPSExLHRoaXMuaGFzRXhwb3J0
c0FzRGVwPSExLHRoaXMuaXNBbGlhcz1uLHRoaXMucmVpZmllZD1uZXcgQXJyYXkodC5sZW5ndGgp
LHRoaXMuX2ZvdW5kRGVwcz0hMSx0aGlzLmlzUGVuZGluZz0hMX1mdW5jdGlvbiBpKGUpe3RoaXMu
bmFtZT1lfWZ1bmN0aW9uIG8oZSx0KXt0aHJvdyBuZXcgRXJyb3IoIkNvdWxkIG5vdCBmaW5kIG1v
ZHVsZSBgIitlKyJgIGltcG9ydGVkIGZyb20gYCIrdCsiYCIpfWZ1bmN0aW9uIGEoZSx0LHIpe2wu
ZmluZE1vZHVsZSsrO2Zvcih2YXIgbj1kW2VdfHxkW2UrIi9pbmRleCJdO24mJm4uaXNBbGlhczsp
bj1kW24ubmFtZV07cmV0dXJuIG58fG8oZSx0KSwhcnx8bi5maW5hbGl6ZWR8fG4uaXNQZW5kaW5n
fHwobi5maW5kRGVwcyhyKSxyLnB1c2gobiksbC5wZW5kaW5nUXVldWVMZW5ndGgrKyksbn1mdW5j
dGlvbiBzKGUsdCl7aWYobC5yZXNvbHZlKyssIi4iIT09ZS5jaGFyQXQoMCkpcmV0dXJuIGU7bC5y
ZXNvbHZlUmVsYXRpdmUrKztmb3IodmFyIHI9ZS5zcGxpdCgiLyIpLG49dC5zcGxpdCgiLyIpLGk9
bi5zbGljZSgwLC0xKSxvPTAsYT1yLmxlbmd0aDtvPGE7bysrKXt2YXIgcz1yW29dO2lmKCIuLiI9
PT1zKXtpZigwPT09aS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgYWNjZXNzIHBhcmVu
dCBtb2R1bGUgb2Ygcm9vdCIpO2kucG9wKCl9ZWxzZXtpZigiLiI9PT1zKWNvbnRpbnVlO2kucHVz
aChzKX19cmV0dXJuIGkuam9pbigiLyIpfWZ1bmN0aW9uIHUoZSl7cmV0dXJuISghZFtlXSYmIWRb
ZSsiL2luZGV4Il0pfXZhciBsLGM9e2xvYWRlcjpsb2FkZXIsZGVmaW5lOmRlZmluZSxyZXF1aXJl
TW9kdWxlOnJlcXVpcmVNb2R1bGUscmVxdWlyZTpyZXF1aXJlLHJlcXVpcmVqczpyZXF1aXJlanN9
O3JlcXVpcmVqcz1yZXF1aXJlPXJlcXVpcmVNb2R1bGU9ZnVuY3Rpb24oZSl7bC5yZXF1aXJlKys7
Zm9yKHZhciB0PVtdLHI9YShlLCIocmVxdWlyZSkiLHQpLG49dC5sZW5ndGgtMTtuPj0wO24tLSl0
W25dLmV4cG9ydHMoKTtyZXR1cm4gci5tb2R1bGUuZXhwb3J0c30sdCgpLGxvYWRlcj17bm9Db25m
bGljdDpmdW5jdGlvbih0KXt2YXIgcixuO2ZvcihyIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShyKSYm
Yy5oYXNPd25Qcm9wZXJ0eShyKSYmKG49dFtyXSxlW25dPWVbcl0sZVtyXT1jW3JdKX19O3ZhciBm
O2Y9QXJyYXkuaXNBcnJheT9BcnJheS5pc0FycmF5OmZ1bmN0aW9uKGUpe3JldHVybiJbb2JqZWN0
IEFycmF5XSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSl9O3ZhciBkPXt9LHA9
e30saD0wLG09WyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSJdO24ucHJvdG90eXBlLm1ha2VE
ZWZhdWx0RXhwb3J0PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5tb2R1bGUuZXhwb3J0cztudWxsPT09
ZXx8Im9iamVjdCIhPXR5cGVvZiBlJiYiZnVuY3Rpb24iIT10eXBlb2YgZXx8dm9pZCAwIT09ZS5k
ZWZhdWx0fHwoZS5kZWZhdWx0PWUpfSxuLnByb3RvdHlwZS5leHBvcnRzPWZ1bmN0aW9uKCl7aWYo
dGhpcy5maW5hbGl6ZWQpcmV0dXJuIHRoaXMubW9kdWxlLmV4cG9ydHM7bC5leHBvcnRzKyssdGhp
cy5maW5hbGl6ZWQ9ITAsdGhpcy5pc1BlbmRpbmc9ITEsbG9hZGVyLndyYXBNb2R1bGVzJiYodGhp
cy5jYWxsYmFjaz1sb2FkZXIud3JhcE1vZHVsZXModGhpcy5uYW1lLHRoaXMuY2FsbGJhY2spKSx0
aGlzLnJlaWZ5KCk7dmFyIGU9dGhpcy5jYWxsYmFjay5hcHBseSh0aGlzLHRoaXMucmVpZmllZCk7
cmV0dXJuIHRoaXMuaGFzRXhwb3J0c0FzRGVwJiZ2b2lkIDA9PT1lfHwodGhpcy5tb2R1bGUuZXhw
b3J0cz1lKSx0aGlzLm1ha2VEZWZhdWx0RXhwb3J0KCksdGhpcy5tb2R1bGUuZXhwb3J0c30sbi5w
cm90b3R5cGUudW5zZWU9ZnVuY3Rpb24oKXt0aGlzLmZpbmFsaXplZD0hMSx0aGlzLl9mb3VuZERl
cHM9ITEsdGhpcy5pc1BlbmRpbmc9ITEsdGhpcy5tb2R1bGU9e2V4cG9ydHM6e319fSxuLnByb3Rv
dHlwZS5yZWlmeT1mdW5jdGlvbigpe2wucmVpZnkrKztmb3IodmFyIGU9dGhpcy5yZWlmaWVkLHQ9
MDt0PGUubGVuZ3RoO3QrKyl7dmFyIHI9ZVt0XTtlW3RdPXIuZXhwb3J0cz9yLmV4cG9ydHM6ci5t
b2R1bGUuZXhwb3J0cygpfX0sbi5wcm90b3R5cGUuZmluZERlcHM9ZnVuY3Rpb24oZSl7aWYoIXRo
aXMuX2ZvdW5kRGVwcyl7bC5maW5kRGVwcysrLHRoaXMuX2ZvdW5kRGVwcz0hMCx0aGlzLmlzUGVu
ZGluZz0hMDtmb3IodmFyIHQ9dGhpcy5kZXBzLHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIG49dFty
XSxpPXRoaXMucmVpZmllZFtyXT17ZXhwb3J0czp2b2lkIDAsbW9kdWxlOnZvaWQgMH07ImV4cG9y
dHMiPT09bj8odGhpcy5oYXNFeHBvcnRzQXNEZXA9ITAsaS5leHBvcnRzPXRoaXMubW9kdWxlLmV4
cG9ydHMpOiJyZXF1aXJlIj09PW4/aS5leHBvcnRzPXRoaXMubWFrZVJlcXVpcmUoKToibW9kdWxl
Ij09PW4/aS5leHBvcnRzPXRoaXMubW9kdWxlOmkubW9kdWxlPWEocyhuLHRoaXMubmFtZSksdGhp
cy5uYW1lLGUpfX19LG4ucHJvdG90eXBlLm1ha2VSZXF1aXJlPWZ1bmN0aW9uKCl7dmFyIGU9dGhp
cy5uYW1lLHQ9ZnVuY3Rpb24odCl7cmV0dXJuIHJlcXVpcmUocyh0LGUpKX07cmV0dXJuIHQuZGVm
YXVsdD10LHQuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiB1KHModCxlKSl9LHR9LGRlZmluZT1mdW5j
dGlvbihlLHQsbyl7bC5kZWZpbmUrKyxhcmd1bWVudHMubGVuZ3RoPDImJnIoYXJndW1lbnRzLmxl
bmd0aCksZih0KXx8KG89dCx0PVtdKSxvIGluc3RhbmNlb2YgaT9kW2VdPW5ldyBuKG8ubmFtZSx0
LG8sITApOmRbZV09bmV3IG4oZSx0LG8sITEpfSxkZWZpbmUucGV0YWw9e30sZGVmaW5lLmFsaWFz
PWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgaShlKX0scmVxdWlyZWpzLmVudHJpZXM9cmVxdWlyZWpz
Ll9lYWtfc2Vlbj1kLHJlcXVpcmVqcy5oYXM9dSxyZXF1aXJlanMudW5zZWU9ZnVuY3Rpb24oZSl7
YShlLCIodW5zZWUpIiwhMSkudW5zZWUoKX0scmVxdWlyZWpzLmNsZWFyPWZ1bmN0aW9uKCl7dCgp
LHJlcXVpcmVqcy5lbnRyaWVzPXJlcXVpcmVqcy5fZWFrX3NlZW49ZD17fSxwPXt9fSxkZWZpbmUo
ImZvbyIsZnVuY3Rpb24oKXt9KSxkZWZpbmUoImZvby9iYXIiLFtdLGZ1bmN0aW9uKCl7fSksZGVm
aW5lKCJmb28vYXNkZiIsWyJtb2R1bGUiLCJleHBvcnRzIiwicmVxdWlyZSJdLGZ1bmN0aW9uKGUs
dCxyKXtyLmhhcygiZm9vL2JhciIpJiZyKCJmb28vYmFyIil9KSxkZWZpbmUoImZvby9iYXoiLFtd
LGRlZmluZS5hbGlhcygiZm9vIikpLGRlZmluZSgiZm9vL3F1eiIsZGVmaW5lLmFsaWFzKCJmb28i
KSksZGVmaW5lKCJmb28vYmFyIixbImZvbyIsIi4vcXV6IiwiLi9iYXoiLCIuL2FzZGYiLCIuL2Jh
ciIsIi4uL2ZvbyJdLGZ1bmN0aW9uKCl7fSksZGVmaW5lKCJmb28vbWFpbiIsWyJmb28vYmFyIl0s
ZnVuY3Rpb24oKXt9KSxyZXF1aXJlKCJmb28vbWFpbiIpLHJlcXVpcmUudW5zZWUoImZvby9iYXIi
KSxyZXF1aXJlanMuY2xlYXIoKSwib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHMmJiJvYmplY3QiPT10
eXBlb2YgbW9kdWxlJiZtb2R1bGUuZXhwb3J0cyYmKG1vZHVsZS5leHBvcnRzPXtyZXF1aXJlOnJl
cXVpcmUsZGVmaW5lOmRlZmluZX0pfSh0aGlzKSxmdW5jdGlvbihlLHQpeyJvYmplY3QiPT10eXBl
b2YgbW9kdWxlJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZS5leHBvcnRzP21vZHVsZS5leHBvcnRz
PWUuZG9jdW1lbnQ/dChlLCEwKTpmdW5jdGlvbihlKXtpZighZS5kb2N1bWVudCl0aHJvdyBuZXcg
RXJyb3IoImpRdWVyeSByZXF1aXJlcyBhIHdpbmRvdyB3aXRoIGEgZG9jdW1lbnQiKTtyZXR1cm4g
dChlKX06dChlKX0oInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OnRoaXMsZnVuY3Rp
b24oZSx0KXtmdW5jdGlvbiByKGUpe3ZhciB0PSEhZSYmImxlbmd0aCJpbiBlJiZlLmxlbmd0aCxy
PW9lLnR5cGUoZSk7cmV0dXJuImZ1bmN0aW9uIiE9PXImJiFvZS5pc1dpbmRvdyhlKSYmKCJhcnJh
eSI9PT1yfHwwPT09dHx8Im51bWJlciI9PXR5cGVvZiB0JiZ0PjAmJnQtMSBpbiBlKX1mdW5jdGlv
biBuKGUsdCxyKXtpZihvZS5pc0Z1bmN0aW9uKHQpKXJldHVybiBvZS5ncmVwKGUsZnVuY3Rpb24o
ZSxuKXtyZXR1cm4hIXQuY2FsbChlLG4sZSkhPT1yfSk7aWYodC5ub2RlVHlwZSlyZXR1cm4gb2Uu
Z3JlcChlLGZ1bmN0aW9uKGUpe3JldHVybiBlPT09dCE9PXJ9KTtpZigic3RyaW5nIj09dHlwZW9m
IHQpe2lmKG1lLnRlc3QodCkpcmV0dXJuIG9lLmZpbHRlcih0LGUscik7dD1vZS5maWx0ZXIodCxl
KX1yZXR1cm4gb2UuZ3JlcChlLGZ1bmN0aW9uKGUpe3JldHVybiBaLmNhbGwodCxlKT4tMSE9PXJ9
KX1mdW5jdGlvbiBpKGUsdCl7Zm9yKDsoZT1lW3RdKSYmMSE9PWUubm9kZVR5cGU7KTtyZXR1cm4g
ZX1mdW5jdGlvbiBvKGUpe3ZhciB0PXt9O3JldHVybiBvZS5lYWNoKGUubWF0Y2god2UpfHxbXSxm
dW5jdGlvbihlLHIpe3Rbcl09ITB9KSx0fWZ1bmN0aW9uIGEoKXtHLnJlbW92ZUV2ZW50TGlzdGVu
ZXIoIkRPTUNvbnRlbnRMb2FkZWQiLGEpLGUucmVtb3ZlRXZlbnRMaXN0ZW5lcigibG9hZCIsYSks
b2UucmVhZHkoKX1mdW5jdGlvbiBzKCl7dGhpcy5leHBhbmRvPW9lLmV4cGFuZG8rcy51aWQrK31m
dW5jdGlvbiB1KGUsdCxyKXt2YXIgbjtpZih2b2lkIDA9PT1yJiYxPT09ZS5ub2RlVHlwZSlpZihu
PSJkYXRhLSIrdC5yZXBsYWNlKE5lLCItJCYiKS50b0xvd2VyQ2FzZSgpLHI9ZS5nZXRBdHRyaWJ1
dGUobiksInN0cmluZyI9PXR5cGVvZiByKXt0cnl7cj0idHJ1ZSI9PT1yfHwiZmFsc2UiIT09ciYm
KCJudWxsIj09PXI/bnVsbDorcisiIj09PXI/K3I6VGUudGVzdChyKT9vZS5wYXJzZUpTT04ocik6
cil9Y2F0Y2goZSl7fU9lLnNldChlLHQscil9ZWxzZSByPXZvaWQgMDtyZXR1cm4gcn1mdW5jdGlv
biBsKGUsdCxyLG4pe3ZhciBpLG89MSxhPTIwLHM9bj9mdW5jdGlvbigpe3JldHVybiBuLmN1cigp
fTpmdW5jdGlvbigpe3JldHVybiBvZS5jc3MoZSx0LCIiKX0sdT1zKCksbD1yJiZyWzNdfHwob2Uu
Y3NzTnVtYmVyW3RdPyIiOiJweCIpLGM9KG9lLmNzc051bWJlclt0XXx8InB4IiE9PWwmJit1KSYm
QWUuZXhlYyhvZS5jc3MoZSx0KSk7aWYoYyYmY1szXSE9PWwpe2w9bHx8Y1szXSxyPXJ8fFtdLGM9
K3V8fDE7ZG8gbz1vfHwiLjUiLGMvPW8sb2Uuc3R5bGUoZSx0LGMrbCk7d2hpbGUobyE9PShvPXMo
KS91KSYmMSE9PW8mJi0tYSl9cmV0dXJuIHImJihjPStjfHwrdXx8MCxpPXJbMV0/YysoclsxXSsx
KSpyWzJdOityWzJdLG4mJihuLnVuaXQ9bCxuLnN0YXJ0PWMsbi5lbmQ9aSkpLGl9ZnVuY3Rpb24g
YyhlLHQpe3ZhciByPSJ1bmRlZmluZWQiIT10eXBlb2YgZS5nZXRFbGVtZW50c0J5VGFnTmFtZT9l
LmdldEVsZW1lbnRzQnlUYWdOYW1lKHR8fCIqIik6InVuZGVmaW5lZCIhPXR5cGVvZiBlLnF1ZXJ5
U2VsZWN0b3JBbGw/ZS5xdWVyeVNlbGVjdG9yQWxsKHR8fCIqIik6W107cmV0dXJuIHZvaWQgMD09
PXR8fHQmJm9lLm5vZGVOYW1lKGUsdCk/b2UubWVyZ2UoW2VdLHIpOnJ9ZnVuY3Rpb24gZihlLHQp
e2Zvcih2YXIgcj0wLG49ZS5sZW5ndGg7cjxuO3IrKylFZS5zZXQoZVtyXSwiZ2xvYmFsRXZhbCIs
IXR8fEVlLmdldCh0W3JdLCJnbG9iYWxFdmFsIikpfWZ1bmN0aW9uIGQoZSx0LHIsbixpKXtmb3Io
dmFyIG8sYSxzLHUsbCxkLHA9dC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksaD1bXSxtPTAsdj1l
Lmxlbmd0aDttPHY7bSsrKWlmKG89ZVttXSxvfHwwPT09bylpZigib2JqZWN0Ij09PW9lLnR5cGUo
bykpb2UubWVyZ2UoaCxvLm5vZGVUeXBlP1tvXTpvKTtlbHNlIGlmKEllLnRlc3Qobykpe2Zvcihh
PWF8fHAuYXBwZW5kQ2hpbGQodC5jcmVhdGVFbGVtZW50KCJkaXYiKSkscz0oTGUuZXhlYyhvKXx8
WyIiLCIiXSlbMV0udG9Mb3dlckNhc2UoKSx1PU1lW3NdfHxNZS5fZGVmYXVsdCxhLmlubmVySFRN
TD11WzFdK29lLmh0bWxQcmVmaWx0ZXIobykrdVsyXSxkPXVbMF07ZC0tOylhPWEubGFzdENoaWxk
O29lLm1lcmdlKGgsYS5jaGlsZE5vZGVzKSxhPXAuZmlyc3RDaGlsZCxhLnRleHRDb250ZW50PSIi
fWVsc2UgaC5wdXNoKHQuY3JlYXRlVGV4dE5vZGUobykpO2ZvcihwLnRleHRDb250ZW50PSIiLG09
MDtvPWhbbSsrXTspaWYobiYmb2UuaW5BcnJheShvLG4pPi0xKWkmJmkucHVzaChvKTtlbHNlIGlm
KGw9b2UuY29udGFpbnMoby5vd25lckRvY3VtZW50LG8pLGE9YyhwLmFwcGVuZENoaWxkKG8pLCJz
Y3JpcHQiKSxsJiZmKGEpLHIpZm9yKGQ9MDtvPWFbZCsrXTspRGUudGVzdChvLnR5cGV8fCIiKSYm
ci5wdXNoKG8pO3JldHVybiBwfWZ1bmN0aW9uIHAoKXtyZXR1cm4hMH1mdW5jdGlvbiBoKCl7cmV0
dXJuITF9ZnVuY3Rpb24gbSgpe3RyeXtyZXR1cm4gRy5hY3RpdmVFbGVtZW50fWNhdGNoKGUpe319
ZnVuY3Rpb24gdihlLHQscixuLGksbyl7dmFyIGEscztpZigib2JqZWN0Ij09dHlwZW9mIHQpeyJz
dHJpbmciIT10eXBlb2YgciYmKG49bnx8cixyPXZvaWQgMCk7Zm9yKHMgaW4gdCl2KGUscyxyLG4s
dFtzXSxvKTtyZXR1cm4gZX1pZihudWxsPT1uJiZudWxsPT1pPyhpPXIsbj1yPXZvaWQgMCk6bnVs
bD09aSYmKCJzdHJpbmciPT10eXBlb2Ygcj8oaT1uLG49dm9pZCAwKTooaT1uLG49cixyPXZvaWQg
MCkpLGk9PT0hMSlpPWg7ZWxzZSBpZighaSlyZXR1cm4gZTtyZXR1cm4gMT09PW8mJihhPWksaT1m
dW5jdGlvbihlKXtyZXR1cm4gb2UoKS5vZmYoZSksYS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGku
Z3VpZD1hLmd1aWR8fChhLmd1aWQ9b2UuZ3VpZCsrKSksZS5lYWNoKGZ1bmN0aW9uKCl7b2UuZXZl
bnQuYWRkKHRoaXMsdCxpLG4scil9KX1mdW5jdGlvbiBiKGUsdCl7cmV0dXJuIG9lLm5vZGVOYW1l
KGUsInRhYmxlIikmJm9lLm5vZGVOYW1lKDExIT09dC5ub2RlVHlwZT90OnQuZmlyc3RDaGlsZCwi
dHIiKT9lLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0Ym9keSIpWzBdfHxlLmFwcGVuZENoaWxkKGUu
b3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0Ym9keSIpKTplfWZ1bmN0aW9uIGcoZSl7cmV0
dXJuIGUudHlwZT0obnVsbCE9PWUuZ2V0QXR0cmlidXRlKCJ0eXBlIikpKyIvIitlLnR5cGUsZX1m
dW5jdGlvbiB5KGUpe3ZhciB0PVVlLmV4ZWMoZS50eXBlKTtyZXR1cm4gdD9lLnR5cGU9dFsxXTpl
LnJlbW92ZUF0dHJpYnV0ZSgidHlwZSIpLGV9ZnVuY3Rpb24gXyhlLHQpe3ZhciByLG4saSxvLGEs
cyx1LGw7aWYoMT09PXQubm9kZVR5cGUpe2lmKEVlLmhhc0RhdGEoZSkmJihvPUVlLmFjY2Vzcyhl
KSxhPUVlLnNldCh0LG8pLGw9by5ldmVudHMpKXtkZWxldGUgYS5oYW5kbGUsYS5ldmVudHM9e307
Zm9yKGkgaW4gbClmb3Iocj0wLG49bFtpXS5sZW5ndGg7cjxuO3IrKylvZS5ldmVudC5hZGQodCxp
LGxbaV1bcl0pfU9lLmhhc0RhdGEoZSkmJihzPU9lLmFjY2VzcyhlKSx1PW9lLmV4dGVuZCh7fSxz
KSxPZS5zZXQodCx1KSl9fWZ1bmN0aW9uIHcoZSx0KXt2YXIgcj10Lm5vZGVOYW1lLnRvTG93ZXJD
YXNlKCk7ImlucHV0Ij09PXImJlJlLnRlc3QoZS50eXBlKT90LmNoZWNrZWQ9ZS5jaGVja2VkOiJp
bnB1dCIhPT1yJiYidGV4dGFyZWEiIT09cnx8KHQuZGVmYXVsdFZhbHVlPWUuZGVmYXVsdFZhbHVl
KX1mdW5jdGlvbiB4KGUsdCxyLG4pe3Q9WC5hcHBseShbXSx0KTt2YXIgaSxvLGEscyx1LGwsZj0w
LHA9ZS5sZW5ndGgsaD1wLTEsbT10WzBdLHY9b2UuaXNGdW5jdGlvbihtKTtpZih2fHxwPjEmJiJz
dHJpbmciPT10eXBlb2YgbSYmIW5lLmNoZWNrQ2xvbmUmJkJlLnRlc3QobSkpcmV0dXJuIGUuZWFj
aChmdW5jdGlvbihpKXt2YXIgbz1lLmVxKGkpO3YmJih0WzBdPW0uY2FsbCh0aGlzLGksby5odG1s
KCkpKSx4KG8sdCxyLG4pfSk7aWYocCYmKGk9ZCh0LGVbMF0ub3duZXJEb2N1bWVudCwhMSxlLG4p
LG89aS5maXJzdENoaWxkLDE9PT1pLmNoaWxkTm9kZXMubGVuZ3RoJiYoaT1vKSxvfHxuKSl7Zm9y
KGE9b2UubWFwKGMoaSwic2NyaXB0IiksZykscz1hLmxlbmd0aDtmPHA7ZisrKXU9aSxmIT09aCYm
KHU9b2UuY2xvbmUodSwhMCwhMCkscyYmb2UubWVyZ2UoYSxjKHUsInNjcmlwdCIpKSksci5jYWxs
KGVbZl0sdSxmKTtpZihzKWZvcihsPWFbYS5sZW5ndGgtMV0ub3duZXJEb2N1bWVudCxvZS5tYXAo
YSx5KSxmPTA7ZjxzO2YrKyl1PWFbZl0sRGUudGVzdCh1LnR5cGV8fCIiKSYmIUVlLmFjY2Vzcyh1
LCJnbG9iYWxFdmFsIikmJm9lLmNvbnRhaW5zKGwsdSkmJih1LnNyYz9vZS5fZXZhbFVybCYmb2Uu
X2V2YWxVcmwodS5zcmMpOm9lLmdsb2JhbEV2YWwodS50ZXh0Q29udGVudC5yZXBsYWNlKFdlLCIi
KSkpfXJldHVybiBlfWZ1bmN0aW9uIGsoZSx0LHIpe2Zvcih2YXIgbixpPXQ/b2UuZmlsdGVyKHQs
ZSk6ZSxvPTA7bnVsbCE9KG49aVtvXSk7bysrKXJ8fDEhPT1uLm5vZGVUeXBlfHxvZS5jbGVhbkRh
dGEoYyhuKSksbi5wYXJlbnROb2RlJiYociYmb2UuY29udGFpbnMobi5vd25lckRvY3VtZW50LG4p
JiZmKGMobiwic2NyaXB0IikpLG4ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChuKSk7cmV0dXJuIGV9
ZnVuY3Rpb24gQyhlLHQpe3ZhciByPW9lKHQuY3JlYXRlRWxlbWVudChlKSkuYXBwZW5kVG8odC5i
b2R5KSxuPW9lLmNzcyhyWzBdLCJkaXNwbGF5Iik7cmV0dXJuIHIuZGV0YWNoKCksbn1mdW5jdGlv
biBFKGUpe3ZhciB0PUcscj1LZVtlXTtyZXR1cm4gcnx8KHI9QyhlLHQpLCJub25lIiE9PXImJnJ8
fCgkZT0oJGV8fG9lKCI8aWZyYW1lIGZyYW1lYm9yZGVyPScwJyB3aWR0aD0nMCcgaGVpZ2h0PScw
Jy8+IikpLmFwcGVuZFRvKHQuZG9jdW1lbnRFbGVtZW50KSx0PSRlWzBdLmNvbnRlbnREb2N1bWVu
dCx0LndyaXRlKCksdC5jbG9zZSgpLHI9QyhlLHQpLCRlLmRldGFjaCgpKSxLZVtlXT1yKSxyfWZ1
bmN0aW9uIE8oZSx0LHIpe3ZhciBuLGksbyxhLHM9ZS5zdHlsZTtyZXR1cm4gcj1yfHxZZShlKSxh
PXI/ci5nZXRQcm9wZXJ0eVZhbHVlKHQpfHxyW3RdOnZvaWQgMCwiIiE9PWEmJnZvaWQgMCE9PWF8
fG9lLmNvbnRhaW5zKGUub3duZXJEb2N1bWVudCxlKXx8KGE9b2Uuc3R5bGUoZSx0KSksciYmIW5l
LnBpeGVsTWFyZ2luUmlnaHQoKSYmR2UudGVzdChhKSYmUWUudGVzdCh0KSYmKG49cy53aWR0aCxp
PXMubWluV2lkdGgsbz1zLm1heFdpZHRoLHMubWluV2lkdGg9cy5tYXhXaWR0aD1zLndpZHRoPWEs
YT1yLndpZHRoLHMud2lkdGg9bixzLm1pbldpZHRoPWkscy5tYXhXaWR0aD1vKSx2b2lkIDAhPT1h
P2ErIiI6YX1mdW5jdGlvbiBUKGUsdCl7cmV0dXJue2dldDpmdW5jdGlvbigpe3JldHVybiBlKCk/
dm9pZCBkZWxldGUgdGhpcy5nZXQ6KHRoaXMuZ2V0PXQpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19
fWZ1bmN0aW9uIE4oZSl7aWYoZSBpbiBudClyZXR1cm4gZTtmb3IodmFyIHQ9ZVswXS50b1VwcGVy
Q2FzZSgpK2Uuc2xpY2UoMSkscj1ydC5sZW5ndGg7ci0tOylpZihlPXJ0W3JdK3QsZSBpbiBudCly
ZXR1cm4gZX1mdW5jdGlvbiBTKGUsdCxyKXt2YXIgbj1BZS5leGVjKHQpO3JldHVybiBuP01hdGgu
bWF4KDAsblsyXS0ocnx8MCkpKyhuWzNdfHwicHgiKTp0fWZ1bmN0aW9uIEEoZSx0LHIsbixpKXtm
b3IodmFyIG89cj09PShuPyJib3JkZXIiOiJjb250ZW50Iik/NDoid2lkdGgiPT09dD8xOjAsYT0w
O288NDtvKz0yKSJtYXJnaW4iPT09ciYmKGErPW9lLmNzcyhlLHIrUGVbb10sITAsaSkpLG4/KCJj
b250ZW50Ij09PXImJihhLT1vZS5jc3MoZSwicGFkZGluZyIrUGVbb10sITAsaSkpLCJtYXJnaW4i
IT09ciYmKGEtPW9lLmNzcyhlLCJib3JkZXIiK1BlW29dKyJXaWR0aCIsITAsaSkpKTooYSs9b2Uu
Y3NzKGUsInBhZGRpbmciK1BlW29dLCEwLGkpLCJwYWRkaW5nIiE9PXImJihhKz1vZS5jc3MoZSwi
Ym9yZGVyIitQZVtvXSsiV2lkdGgiLCEwLGkpKSk7cmV0dXJuIGF9ZnVuY3Rpb24gUChlLHQscil7
dmFyIG49ITAsaT0id2lkdGgiPT09dD9lLm9mZnNldFdpZHRoOmUub2Zmc2V0SGVpZ2h0LG89WWUo
ZSksYT0iYm9yZGVyLWJveCI9PT1vZS5jc3MoZSwiYm94U2l6aW5nIiwhMSxvKTtpZihpPD0wfHxu
dWxsPT1pKXtpZihpPU8oZSx0LG8pLChpPDB8fG51bGw9PWkpJiYoaT1lLnN0eWxlW3RdKSxHZS50
ZXN0KGkpKXJldHVybiBpO249YSYmKG5lLmJveFNpemluZ1JlbGlhYmxlKCl8fGk9PT1lLnN0eWxl
W3RdKSxpPXBhcnNlRmxvYXQoaSl8fDB9cmV0dXJuIGkrQShlLHQscnx8KGE/ImJvcmRlciI6ImNv
bnRlbnQiKSxuLG8pKyJweCJ9ZnVuY3Rpb24gaihlLHQpe2Zvcih2YXIgcixuLGksbz1bXSxhPTAs
cz1lLmxlbmd0aDthPHM7YSsrKW49ZVthXSxuLnN0eWxlJiYob1thXT1FZS5nZXQobiwib2xkZGlz
cGxheSIpLHI9bi5zdHlsZS5kaXNwbGF5LHQ/KG9bYV18fCJub25lIiE9PXJ8fChuLnN0eWxlLmRp
c3BsYXk9IiIpLCIiPT09bi5zdHlsZS5kaXNwbGF5JiZqZShuKSYmKG9bYV09RWUuYWNjZXNzKG4s
Im9sZGRpc3BsYXkiLEUobi5ub2RlTmFtZSkpKSk6KGk9amUobiksIm5vbmUiPT09ciYmaXx8RWUu
c2V0KG4sIm9sZGRpc3BsYXkiLGk/cjpvZS5jc3MobiwiZGlzcGxheSIpKSkpO2ZvcihhPTA7YTxz
O2ErKyluPWVbYV0sbi5zdHlsZSYmKHQmJiJub25lIiE9PW4uc3R5bGUuZGlzcGxheSYmIiIhPT1u
LnN0eWxlLmRpc3BsYXl8fChuLnN0eWxlLmRpc3BsYXk9dD9vW2FdfHwiIjoibm9uZSIpKTtyZXR1
cm4gZX1mdW5jdGlvbiBSKGUsdCxyLG4saSl7cmV0dXJuIG5ldyBSLnByb3RvdHlwZS5pbml0KGUs
dCxyLG4saSl9ZnVuY3Rpb24gTCgpe3JldHVybiBlLnNldFRpbWVvdXQoZnVuY3Rpb24oKXtpdD12
b2lkIDB9KSxpdD1vZS5ub3coKX1mdW5jdGlvbiBEKGUsdCl7dmFyIHIsbj0wLGk9e2hlaWdodDpl
fTtmb3IodD10PzE6MDtuPDQ7bis9Mi10KXI9UGVbbl0saVsibWFyZ2luIityXT1pWyJwYWRkaW5n
IityXT1lO3JldHVybiB0JiYoaS5vcGFjaXR5PWkud2lkdGg9ZSksaX1mdW5jdGlvbiBNKGUsdCxy
KXtmb3IodmFyIG4saT0oSC50d2VlbmVyc1t0XXx8W10pLmNvbmNhdChILnR3ZWVuZXJzWyIqIl0p
LG89MCxhPWkubGVuZ3RoO288YTtvKyspaWYobj1pW29dLmNhbGwocix0LGUpKXJldHVybiBufWZ1
bmN0aW9uIEkoZSx0LHIpe3ZhciBuLGksbyxhLHMsdSxsLGMsZj10aGlzLGQ9e30scD1lLnN0eWxl
LGg9ZS5ub2RlVHlwZSYmamUoZSksbT1FZS5nZXQoZSwiZnhzaG93Iik7ci5xdWV1ZXx8KHM9b2Uu
X3F1ZXVlSG9va3MoZSwiZngiKSxudWxsPT1zLnVucXVldWVkJiYocy51bnF1ZXVlZD0wLHU9cy5l
bXB0eS5maXJlLHMuZW1wdHkuZmlyZT1mdW5jdGlvbigpe3MudW5xdWV1ZWR8fHUoKX0pLHMudW5x
dWV1ZWQrKyxmLmFsd2F5cyhmdW5jdGlvbigpe2YuYWx3YXlzKGZ1bmN0aW9uKCl7cy51bnF1ZXVl
ZC0tLG9lLnF1ZXVlKGUsImZ4IikubGVuZ3RofHxzLmVtcHR5LmZpcmUoKX0pfSkpLDE9PT1lLm5v
ZGVUeXBlJiYoImhlaWdodCJpbiB0fHwid2lkdGgiaW4gdCkmJihyLm92ZXJmbG93PVtwLm92ZXJm
bG93LHAub3ZlcmZsb3dYLHAub3ZlcmZsb3dZXSxsPW9lLmNzcyhlLCJkaXNwbGF5IiksYz0ibm9u
ZSI9PT1sP0VlLmdldChlLCJvbGRkaXNwbGF5Iil8fEUoZS5ub2RlTmFtZSk6bCwiaW5saW5lIj09
PWMmJiJub25lIj09PW9lLmNzcyhlLCJmbG9hdCIpJiYocC5kaXNwbGF5PSJpbmxpbmUtYmxvY2si
KSksci5vdmVyZmxvdyYmKHAub3ZlcmZsb3c9ImhpZGRlbiIsZi5hbHdheXMoZnVuY3Rpb24oKXtw
Lm92ZXJmbG93PXIub3ZlcmZsb3dbMF0scC5vdmVyZmxvd1g9ci5vdmVyZmxvd1sxXSxwLm92ZXJm
bG93WT1yLm92ZXJmbG93WzJdfSkpO2ZvcihuIGluIHQpaWYoaT10W25dLGF0LmV4ZWMoaSkpe2lm
KGRlbGV0ZSB0W25dLG89b3x8InRvZ2dsZSI9PT1pLGk9PT0oaD8iaGlkZSI6InNob3ciKSl7aWYo
InNob3ciIT09aXx8IW18fHZvaWQgMD09PW1bbl0pY29udGludWU7aD0hMH1kW25dPW0mJm1bbl18
fG9lLnN0eWxlKGUsbil9ZWxzZSBsPXZvaWQgMDtpZihvZS5pc0VtcHR5T2JqZWN0KGQpKSJpbmxp
bmUiPT09KCJub25lIj09PWw/RShlLm5vZGVOYW1lKTpsKSYmKHAuZGlzcGxheT1sKTtlbHNle20/
ImhpZGRlbiJpbiBtJiYoaD1tLmhpZGRlbik6bT1FZS5hY2Nlc3MoZSwiZnhzaG93Iix7fSksbyYm
KG0uaGlkZGVuPSFoKSxoP29lKGUpLnNob3coKTpmLmRvbmUoZnVuY3Rpb24oKXtvZShlKS5oaWRl
KCl9KSxmLmRvbmUoZnVuY3Rpb24oKXt2YXIgdDtFZS5yZW1vdmUoZSwiZnhzaG93Iik7Zm9yKHQg
aW4gZClvZS5zdHlsZShlLHQsZFt0XSl9KTtmb3IobiBpbiBkKWE9TShoP21bbl06MCxuLGYpLG4g
aW4gbXx8KG1bbl09YS5zdGFydCxoJiYoYS5lbmQ9YS5zdGFydCxhLnN0YXJ0PSJ3aWR0aCI9PT1u
fHwiaGVpZ2h0Ij09PW4/MTowKSl9fWZ1bmN0aW9uIEYoZSx0KXt2YXIgcixuLGksbyxhO2Zvcihy
IGluIGUpaWYobj1vZS5jYW1lbENhc2UociksaT10W25dLG89ZVtyXSxvZS5pc0FycmF5KG8pJiYo
aT1vWzFdLG89ZVtyXT1vWzBdKSxyIT09biYmKGVbbl09byxkZWxldGUgZVtyXSksYT1vZS5jc3NI
b29rc1tuXSxhJiYiZXhwYW5kImluIGEpe289YS5leHBhbmQobyksZGVsZXRlIGVbbl07Zm9yKHIg
aW4gbylyIGluIGV8fChlW3JdPW9bcl0sdFtyXT1pKX1lbHNlIHRbbl09aX1mdW5jdGlvbiBIKGUs
dCxyKXt2YXIgbixpLG89MCxhPUgucHJlZmlsdGVycy5sZW5ndGgscz1vZS5EZWZlcnJlZCgpLmFs
d2F5cyhmdW5jdGlvbigpe2RlbGV0ZSB1LmVsZW19KSx1PWZ1bmN0aW9uKCl7aWYoaSlyZXR1cm4h
MTtmb3IodmFyIHQ9aXR8fEwoKSxyPU1hdGgubWF4KDAsbC5zdGFydFRpbWUrbC5kdXJhdGlvbi10
KSxuPXIvbC5kdXJhdGlvbnx8MCxvPTEtbixhPTAsdT1sLnR3ZWVucy5sZW5ndGg7YTx1O2ErKyls
LnR3ZWVuc1thXS5ydW4obyk7cmV0dXJuIHMubm90aWZ5V2l0aChlLFtsLG8scl0pLG88MSYmdT9y
OihzLnJlc29sdmVXaXRoKGUsW2xdKSwhMSl9LGw9cy5wcm9taXNlKHtlbGVtOmUscHJvcHM6b2Uu
ZXh0ZW5kKHt9LHQpLG9wdHM6b2UuZXh0ZW5kKCEwLHtzcGVjaWFsRWFzaW5nOnt9LGVhc2luZzpv
ZS5lYXNpbmcuX2RlZmF1bHR9LHIpLG9yaWdpbmFsUHJvcGVydGllczp0LG9yaWdpbmFsT3B0aW9u
czpyLHN0YXJ0VGltZTppdHx8TCgpLGR1cmF0aW9uOnIuZHVyYXRpb24sdHdlZW5zOltdLGNyZWF0
ZVR3ZWVuOmZ1bmN0aW9uKHQscil7dmFyIG49b2UuVHdlZW4oZSxsLm9wdHMsdCxyLGwub3B0cy5z
cGVjaWFsRWFzaW5nW3RdfHxsLm9wdHMuZWFzaW5nKTtyZXR1cm4gbC50d2VlbnMucHVzaChuKSxu
fSxzdG9wOmZ1bmN0aW9uKHQpe3ZhciByPTAsbj10P2wudHdlZW5zLmxlbmd0aDowO2lmKGkpcmV0
dXJuIHRoaXM7Zm9yKGk9ITA7cjxuO3IrKylsLnR3ZWVuc1tyXS5ydW4oMSk7cmV0dXJuIHQ/KHMu
bm90aWZ5V2l0aChlLFtsLDEsMF0pLHMucmVzb2x2ZVdpdGgoZSxbbCx0XSkpOnMucmVqZWN0V2l0
aChlLFtsLHRdKSx0aGlzfX0pLGM9bC5wcm9wcztmb3IoRihjLGwub3B0cy5zcGVjaWFsRWFzaW5n
KTtvPGE7bysrKWlmKG49SC5wcmVmaWx0ZXJzW29dLmNhbGwobCxlLGMsbC5vcHRzKSlyZXR1cm4g
b2UuaXNGdW5jdGlvbihuLnN0b3ApJiYob2UuX3F1ZXVlSG9va3MobC5lbGVtLGwub3B0cy5xdWV1
ZSkuc3RvcD1vZS5wcm94eShuLnN0b3AsbikpLG47cmV0dXJuIG9lLm1hcChjLE0sbCksb2UuaXNG
dW5jdGlvbihsLm9wdHMuc3RhcnQpJiZsLm9wdHMuc3RhcnQuY2FsbChlLGwpLG9lLmZ4LnRpbWVy
KG9lLmV4dGVuZCh1LHtlbGVtOmUsYW5pbTpsLHF1ZXVlOmwub3B0cy5xdWV1ZX0pKSxsLnByb2dy
ZXNzKGwub3B0cy5wcm9ncmVzcykuZG9uZShsLm9wdHMuZG9uZSxsLm9wdHMuY29tcGxldGUpLmZh
aWwobC5vcHRzLmZhaWwpLmFsd2F5cyhsLm9wdHMuYWx3YXlzKX1mdW5jdGlvbiBWKGUpe3JldHVy
biBlLmdldEF0dHJpYnV0ZSYmZS5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIifWZ1bmN0aW9uIHEo
ZSl7cmV0dXJuIGZ1bmN0aW9uKHQscil7InN0cmluZyIhPXR5cGVvZiB0JiYocj10LHQ9IioiKTt2
YXIgbixpPTAsbz10LnRvTG93ZXJDYXNlKCkubWF0Y2god2UpfHxbXTtpZihvZS5pc0Z1bmN0aW9u
KHIpKWZvcig7bj1vW2krK107KSIrIj09PW5bMF0/KG49bi5zbGljZSgxKXx8IioiLChlW25dPWVb
bl18fFtdKS51bnNoaWZ0KHIpKTooZVtuXT1lW25dfHxbXSkucHVzaChyKX19ZnVuY3Rpb24geihl
LHQscixuKXtmdW5jdGlvbiBpKHMpe3ZhciB1O3JldHVybiBvW3NdPSEwLG9lLmVhY2goZVtzXXx8
W10sZnVuY3Rpb24oZSxzKXt2YXIgbD1zKHQscixuKTtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGx8
fGF8fG9bbF0/YT8hKHU9bCk6dm9pZCAwOih0LmRhdGFUeXBlcy51bnNoaWZ0KGwpLGkobCksITEp
fSksdX12YXIgbz17fSxhPWU9PT1PdDtyZXR1cm4gaSh0LmRhdGFUeXBlc1swXSl8fCFvWyIqIl0m
JmkoIioiKX1mdW5jdGlvbiBCKGUsdCl7dmFyIHIsbixpPW9lLmFqYXhTZXR0aW5ncy5mbGF0T3B0
aW9uc3x8e307Zm9yKHIgaW4gdCl2b2lkIDAhPT10W3JdJiYoKGlbcl0/ZTpufHwobj17fSkpW3Jd
PXRbcl0pO3JldHVybiBuJiZvZS5leHRlbmQoITAsZSxuKSxlfWZ1bmN0aW9uIFUoZSx0LHIpe2Zv
cih2YXIgbixpLG8sYSxzPWUuY29udGVudHMsdT1lLmRhdGFUeXBlczsiKiI9PT11WzBdOyl1LnNo
aWZ0KCksdm9pZCAwPT09biYmKG49ZS5taW1lVHlwZXx8dC5nZXRSZXNwb25zZUhlYWRlcigiQ29u
dGVudC1UeXBlIikpO2lmKG4pZm9yKGkgaW4gcylpZihzW2ldJiZzW2ldLnRlc3Qobikpe3UudW5z
aGlmdChpKTticmVha31pZih1WzBdaW4gcilvPXVbMF07ZWxzZXtmb3IoaSBpbiByKXtpZighdVsw
XXx8ZS5jb252ZXJ0ZXJzW2krIiAiK3VbMF1dKXtvPWk7YnJlYWt9YXx8KGE9aSl9bz1vfHxhfWlm
KG8pcmV0dXJuIG8hPT11WzBdJiZ1LnVuc2hpZnQobykscltvXX1mdW5jdGlvbiBXKGUsdCxyLG4p
e3ZhciBpLG8sYSxzLHUsbD17fSxjPWUuZGF0YVR5cGVzLnNsaWNlKCk7aWYoY1sxXSlmb3IoYSBp
biBlLmNvbnZlcnRlcnMpbFthLnRvTG93ZXJDYXNlKCldPWUuY29udmVydGVyc1thXTtmb3Iobz1j
LnNoaWZ0KCk7bzspaWYoZS5yZXNwb25zZUZpZWxkc1tvXSYmKHJbZS5yZXNwb25zZUZpZWxkc1tv
XV09dCksIXUmJm4mJmUuZGF0YUZpbHRlciYmKHQ9ZS5kYXRhRmlsdGVyKHQsZS5kYXRhVHlwZSkp
LHU9byxvPWMuc2hpZnQoKSlpZigiKiI9PT1vKW89dTtlbHNlIGlmKCIqIiE9PXUmJnUhPT1vKXtp
ZihhPWxbdSsiICIrb118fGxbIiogIitvXSwhYSlmb3IoaSBpbiBsKWlmKHM9aS5zcGxpdCgiICIp
LHNbMV09PT1vJiYoYT1sW3UrIiAiK3NbMF1dfHxsWyIqICIrc1swXV0pKXthPT09ITA/YT1sW2ld
OmxbaV0hPT0hMCYmKG89c1swXSxjLnVuc2hpZnQoc1sxXSkpO2JyZWFrfWlmKGEhPT0hMClpZihh
JiZlLnRocm93cyl0PWEodCk7ZWxzZSB0cnl7dD1hKHQpfWNhdGNoKGUpe3JldHVybntzdGF0ZToi
cGFyc2VyZXJyb3IiLGVycm9yOmE/ZToiTm8gY29udmVyc2lvbiBmcm9tICIrdSsiIHRvICIrb319
fXJldHVybntzdGF0ZToic3VjY2VzcyIsZGF0YTp0fX1mdW5jdGlvbiAkKGUsdCxyLG4pe3ZhciBp
O2lmKG9lLmlzQXJyYXkodCkpb2UuZWFjaCh0LGZ1bmN0aW9uKHQsaSl7cnx8QXQudGVzdChlKT9u
KGUsaSk6JChlKyJbIisoIm9iamVjdCI9PXR5cGVvZiBpJiZudWxsIT1pP3Q6IiIpKyJdIixpLHIs
bil9KTtlbHNlIGlmKHJ8fCJvYmplY3QiIT09b2UudHlwZSh0KSluKGUsdCk7ZWxzZSBmb3IoaSBp
biB0KSQoZSsiWyIraSsiXSIsdFtpXSxyLG4pfWZ1bmN0aW9uIEsoZSl7cmV0dXJuIG9lLmlzV2lu
ZG93KGUpP2U6OT09PWUubm9kZVR5cGUmJmUuZGVmYXVsdFZpZXd9dmFyIFE9W10sRz1lLmRvY3Vt
ZW50LFk9US5zbGljZSxYPVEuY29uY2F0LEo9US5wdXNoLFo9US5pbmRleE9mLGVlPXt9LHRlPWVl
LnRvU3RyaW5nLHJlPWVlLmhhc093blByb3BlcnR5LG5lPXt9LGllPSIyLjIuNCIsb2U9ZnVuY3Rp
b24oZSx0KXtyZXR1cm4gbmV3IG9lLmZuLmluaXQoZSx0KX0sYWU9L15bXHNcdUZFRkZceEEwXSt8
W1xzXHVGRUZGXHhBMF0rJC9nLHNlPS9eLW1zLS8sdWU9Ly0oW1xkYS16XSkvZ2ksbGU9ZnVuY3Rp
b24oZSx0KXtyZXR1cm4gdC50b1VwcGVyQ2FzZSgpfTtvZS5mbj1vZS5wcm90b3R5cGU9e2pxdWVy
eTppZSxjb25zdHJ1Y3RvcjpvZSxzZWxlY3RvcjoiIixsZW5ndGg6MCx0b0FycmF5OmZ1bmN0aW9u
KCl7cmV0dXJuIFkuY2FsbCh0aGlzKX0sZ2V0OmZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT1lP2U8
MD90aGlzW2UrdGhpcy5sZW5ndGhdOnRoaXNbZV06WS5jYWxsKHRoaXMpfSxwdXNoU3RhY2s6ZnVu
Y3Rpb24oZSl7dmFyIHQ9b2UubWVyZ2UodGhpcy5jb25zdHJ1Y3RvcigpLGUpO3JldHVybiB0LnBy
ZXZPYmplY3Q9dGhpcyx0LmNvbnRleHQ9dGhpcy5jb250ZXh0LHR9LGVhY2g6ZnVuY3Rpb24oZSl7
cmV0dXJuIG9lLmVhY2godGhpcyxlKX0sbWFwOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnB1c2hT
dGFjayhvZS5tYXAodGhpcyxmdW5jdGlvbih0LHIpe3JldHVybiBlLmNhbGwodCxyLHQpfSkpfSxz
bGljZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB1c2hTdGFjayhZLmFwcGx5KHRoaXMsYXJndW1l
bnRzKSl9LGZpcnN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXEoMCl9LGxhc3Q6ZnVuY3Rpb24o
KXtyZXR1cm4gdGhpcy5lcSgtMSl9LGVxOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMubGVuZ3RoLHI9
K2UrKGU8MD90OjApO3JldHVybiB0aGlzLnB1c2hTdGFjayhyPj0wJiZyPHQ/W3RoaXNbcl1dOltd
KX0sZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJldk9iamVjdHx8dGhpcy5jb25zdHJ1Y3Rv
cigpfSxwdXNoOkosc29ydDpRLnNvcnQsc3BsaWNlOlEuc3BsaWNlfSxvZS5leHRlbmQ9b2UuZm4u
ZXh0ZW5kPWZ1bmN0aW9uKCl7dmFyIGUsdCxyLG4saSxvLGE9YXJndW1lbnRzWzBdfHx7fSxzPTEs
dT1hcmd1bWVudHMubGVuZ3RoLGw9ITE7Zm9yKCJib29sZWFuIj09dHlwZW9mIGEmJihsPWEsYT1h
cmd1bWVudHNbc118fHt9LHMrKyksIm9iamVjdCI9PXR5cGVvZiBhfHxvZS5pc0Z1bmN0aW9uKGEp
fHwoYT17fSkscz09PXUmJihhPXRoaXMscy0tKTtzPHU7cysrKWlmKG51bGwhPShlPWFyZ3VtZW50
c1tzXSkpZm9yKHQgaW4gZSlyPWFbdF0sbj1lW3RdLGEhPT1uJiYobCYmbiYmKG9lLmlzUGxhaW5P
YmplY3Qobil8fChpPW9lLmlzQXJyYXkobikpKT8oaT8oaT0hMSxvPXImJm9lLmlzQXJyYXkocik/
cjpbXSk6bz1yJiZvZS5pc1BsYWluT2JqZWN0KHIpP3I6e30sYVt0XT1vZS5leHRlbmQobCxvLG4p
KTp2b2lkIDAhPT1uJiYoYVt0XT1uKSk7cmV0dXJuIGF9LG9lLmV4dGVuZCh7ZXhwYW5kbzoialF1
ZXJ5IisoaWUrTWF0aC5yYW5kb20oKSkucmVwbGFjZSgvXEQvZywiIiksaXNSZWFkeTohMCxlcnJv
cjpmdW5jdGlvbihlKXt0aHJvdyBuZXcgRXJyb3IoZSl9LG5vb3A6ZnVuY3Rpb24oKXt9LGlzRnVu
Y3Rpb246ZnVuY3Rpb24oZSl7cmV0dXJuImZ1bmN0aW9uIj09PW9lLnR5cGUoZSl9LGlzQXJyYXk6
QXJyYXkuaXNBcnJheSxpc1dpbmRvdzpmdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9ZSYmZT09PWUu
d2luZG93fSxpc051bWVyaWM6ZnVuY3Rpb24oZSl7dmFyIHQ9ZSYmZS50b1N0cmluZygpO3JldHVy
biFvZS5pc0FycmF5KGUpJiZ0LXBhcnNlRmxvYXQodCkrMT49MH0saXNQbGFpbk9iamVjdDpmdW5j
dGlvbihlKXt2YXIgdDtpZigib2JqZWN0IiE9PW9lLnR5cGUoZSl8fGUubm9kZVR5cGV8fG9lLmlz
V2luZG93KGUpKXJldHVybiExO2lmKGUuY29uc3RydWN0b3ImJiFyZS5jYWxsKGUsImNvbnN0cnVj
dG9yIikmJiFyZS5jYWxsKGUuY29uc3RydWN0b3IucHJvdG90eXBlfHx7fSwiaXNQcm90b3R5cGVP
ZiIpKXJldHVybiExO2Zvcih0IGluIGUpO3JldHVybiB2b2lkIDA9PT10fHxyZS5jYWxsKGUsdCl9
LGlzRW1wdHlPYmplY3Q6ZnVuY3Rpb24oZSl7dmFyIHQ7Zm9yKHQgaW4gZSlyZXR1cm4hMTtyZXR1
cm4hMH0sdHlwZTpmdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZT9lKyIiOiJvYmplY3QiPT10eXBl
b2YgZXx8ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZWVbdGUuY2FsbChlKV18fCJvYmplY3QiOnR5cGVv
ZiBlfSxnbG9iYWxFdmFsOmZ1bmN0aW9uKGUpe3ZhciB0LHI9ZXZhbDtlPW9lLnRyaW0oZSksZSYm
KDE9PT1lLmluZGV4T2YoInVzZSBzdHJpY3QiKT8odD1HLmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIp
LHQudGV4dD1lLEcuaGVhZC5hcHBlbmRDaGlsZCh0KS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHQp
KTpyKGUpKX0sY2FtZWxDYXNlOmZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2Uoc2UsIm1zLSIp
LnJlcGxhY2UodWUsbGUpfSxub2RlTmFtZTpmdW5jdGlvbihlLHQpe3JldHVybiBlLm5vZGVOYW1l
JiZlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT10LnRvTG93ZXJDYXNlKCl9LGVhY2g6ZnVuY3Rp
b24oZSx0KXt2YXIgbixpPTA7aWYocihlKSlmb3Iobj1lLmxlbmd0aDtpPG4mJnQuY2FsbChlW2ld
LGksZVtpXSkhPT0hMTtpKyspO2Vsc2UgZm9yKGkgaW4gZSlpZih0LmNhbGwoZVtpXSxpLGVbaV0p
PT09ITEpYnJlYWs7cmV0dXJuIGV9LHRyaW06ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWU/IiI6
KGUrIiIpLnJlcGxhY2UoYWUsIiIpfSxtYWtlQXJyYXk6ZnVuY3Rpb24oZSx0KXt2YXIgbj10fHxb
XTtyZXR1cm4gbnVsbCE9ZSYmKHIoT2JqZWN0KGUpKT9vZS5tZXJnZShuLCJzdHJpbmciPT10eXBl
b2YgZT9bZV06ZSk6Si5jYWxsKG4sZSkpLG59LGluQXJyYXk6ZnVuY3Rpb24oZSx0LHIpe3JldHVy
biBudWxsPT10Py0xOlouY2FsbCh0LGUscil9LG1lcmdlOmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBy
PSt0Lmxlbmd0aCxuPTAsaT1lLmxlbmd0aDtuPHI7bisrKWVbaSsrXT10W25dO3JldHVybiBlLmxl
bmd0aD1pLGV9LGdyZXA6ZnVuY3Rpb24oZSx0LHIpe2Zvcih2YXIgbixpPVtdLG89MCxhPWUubGVu
Z3RoLHM9IXI7bzxhO28rKyluPSF0KGVbb10sbyksbiE9PXMmJmkucHVzaChlW29dKTtyZXR1cm4g
aX0sbWFwOmZ1bmN0aW9uKGUsdCxuKXt2YXIgaSxvLGE9MCxzPVtdO2lmKHIoZSkpZm9yKGk9ZS5s
ZW5ndGg7YTxpO2ErKylvPXQoZVthXSxhLG4pLG51bGwhPW8mJnMucHVzaChvKTtlbHNlIGZvcihh
IGluIGUpbz10KGVbYV0sYSxuKSxudWxsIT1vJiZzLnB1c2gobyk7cmV0dXJuIFguYXBwbHkoW10s
cyl9LGd1aWQ6MSxwcm94eTpmdW5jdGlvbihlLHQpe3ZhciByLG4saTtpZigic3RyaW5nIj09dHlw
ZW9mIHQmJihyPWVbdF0sdD1lLGU9ciksb2UuaXNGdW5jdGlvbihlKSlyZXR1cm4gbj1ZLmNhbGwo
YXJndW1lbnRzLDIpLGk9ZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0fHx0aGlzLG4uY29uY2F0
KFkuY2FsbChhcmd1bWVudHMpKSl9LGkuZ3VpZD1lLmd1aWQ9ZS5ndWlkfHxvZS5ndWlkKyssaX0s
bm93OkRhdGUubm93LHN1cHBvcnQ6bmV9KSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYob2Uu
Zm5bU3ltYm9sLml0ZXJhdG9yXT1RW1N5bWJvbC5pdGVyYXRvcl0pLG9lLmVhY2goIkJvb2xlYW4g
TnVtYmVyIFN0cmluZyBGdW5jdGlvbiBBcnJheSBEYXRlIFJlZ0V4cCBPYmplY3QgRXJyb3IgU3lt
Ym9sIi5zcGxpdCgiICIpLGZ1bmN0aW9uKGUsdCl7ZWVbIltvYmplY3QgIit0KyJdIl09dC50b0xv
d2VyQ2FzZSgpfSk7dmFyIGNlPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSx0LHIsbil7dmFyIGks
byxhLHMsdSxsLGYscCxoPXQmJnQub3duZXJEb2N1bWVudCxtPXQ/dC5ub2RlVHlwZTo5O2lmKHI9
cnx8W10sInN0cmluZyIhPXR5cGVvZiBlfHwhZXx8MSE9PW0mJjkhPT1tJiYxMSE9PW0pcmV0dXJu
IHI7aWYoIW4mJigodD90Lm93bmVyRG9jdW1lbnR8fHQ6VikhPT1qJiZQKHQpLHQ9dHx8aixMKSl7
aWYoMTEhPT1tJiYobD1iZS5leGVjKGUpKSlpZihpPWxbMV0pe2lmKDk9PT1tKXtpZighKGE9dC5n
ZXRFbGVtZW50QnlJZChpKSkpcmV0dXJuIHI7aWYoYS5pZD09PWkpcmV0dXJuIHIucHVzaChhKSxy
fWVsc2UgaWYoaCYmKGE9aC5nZXRFbGVtZW50QnlJZChpKSkmJkYodCxhKSYmYS5pZD09PWkpcmV0
dXJuIHIucHVzaChhKSxyfWVsc2V7aWYobFsyXSlyZXR1cm4gSi5hcHBseShyLHQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoZSkpLHI7aWYoKGk9bFszXSkmJncuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSYm
dC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKXJldHVybiBKLmFwcGx5KHIsdC5nZXRFbGVtZW50c0J5
Q2xhc3NOYW1lKGkpKSxyfWlmKHcucXNhJiYhV1tlKyIgIl0mJighRHx8IUQudGVzdChlKSkpe2lm
KDEhPT1tKWg9dCxwPWU7ZWxzZSBpZigib2JqZWN0IiE9PXQubm9kZU5hbWUudG9Mb3dlckNhc2Uo
KSl7Zm9yKChzPXQuZ2V0QXR0cmlidXRlKCJpZCIpKT9zPXMucmVwbGFjZSh5ZSwiXFwkJiIpOnQu
c2V0QXR0cmlidXRlKCJpZCIscz1IKSxmPUUoZSksbz1mLmxlbmd0aCx1PWRlLnRlc3Qocyk/IiMi
K3M6IltpZD0nIitzKyInXSI7by0tOylmW29dPXUrIiAiK2QoZltvXSk7cD1mLmpvaW4oIiwiKSxo
PWdlLnRlc3QoZSkmJmModC5wYXJlbnROb2RlKXx8dH1pZihwKXRyeXtyZXR1cm4gSi5hcHBseShy
LGgucXVlcnlTZWxlY3RvckFsbChwKSkscn1jYXRjaChlKXt9ZmluYWxseXtzPT09SCYmdC5yZW1v
dmVBdHRyaWJ1dGUoImlkIil9fX1yZXR1cm4gVChlLnJlcGxhY2Uoc2UsIiQxIiksdCxyLG4pfWZ1
bmN0aW9uIHIoKXtmdW5jdGlvbiBlKHIsbil7cmV0dXJuIHQucHVzaChyKyIgIik+eC5jYWNoZUxl
bmd0aCYmZGVsZXRlIGVbdC5zaGlmdCgpXSxlW3IrIiAiXT1ufXZhciB0PVtdO3JldHVybiBlfWZ1
bmN0aW9uIG4oZSl7cmV0dXJuIGVbSF09ITAsZX1mdW5jdGlvbiBpKGUpe3ZhciB0PWouY3JlYXRl
RWxlbWVudCgiZGl2Iik7dHJ5e3JldHVybiEhZSh0KX1jYXRjaChlKXtyZXR1cm4hMX1maW5hbGx5
e3QucGFyZW50Tm9kZSYmdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHQpLHQ9bnVsbH19ZnVuY3Rp
b24gbyhlLHQpe2Zvcih2YXIgcj1lLnNwbGl0KCJ8Iiksbj1yLmxlbmd0aDtuLS07KXguYXR0ckhh
bmRsZVtyW25dXT10fWZ1bmN0aW9uIGEoZSx0KXt2YXIgcj10JiZlLG49ciYmMT09PWUubm9kZVR5
cGUmJjE9PT10Lm5vZGVUeXBlJiYofnQuc291cmNlSW5kZXh8fEspLSh+ZS5zb3VyY2VJbmRleHx8
Syk7aWYobilyZXR1cm4gbjtpZihyKWZvcig7cj1yLm5leHRTaWJsaW5nOylpZihyPT09dClyZXR1
cm4tMTtyZXR1cm4gZT8xOi0xfWZ1bmN0aW9uIHMoZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBy
PXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4iaW5wdXQiPT09ciYmdC50eXBlPT09ZX19
ZnVuY3Rpb24gdShlKXtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIHI9dC5ub2RlTmFtZS50b0xvd2Vy
Q2FzZSgpO3JldHVybigiaW5wdXQiPT09cnx8ImJ1dHRvbiI9PT1yKSYmdC50eXBlPT09ZX19ZnVu
Y3Rpb24gbChlKXtyZXR1cm4gbihmdW5jdGlvbih0KXtyZXR1cm4gdD0rdCxuKGZ1bmN0aW9uKHIs
bil7Zm9yKHZhciBpLG89ZShbXSxyLmxlbmd0aCx0KSxhPW8ubGVuZ3RoO2EtLTspcltpPW9bYV1d
JiYocltpXT0hKG5baV09cltpXSkpfSl9KX1mdW5jdGlvbiBjKGUpe3JldHVybiBlJiYidW5kZWZp
bmVkIiE9dHlwZW9mIGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUmJmV9ZnVuY3Rpb24gZigpe31mdW5j
dGlvbiBkKGUpe2Zvcih2YXIgdD0wLHI9ZS5sZW5ndGgsbj0iIjt0PHI7dCsrKW4rPWVbdF0udmFs
dWU7cmV0dXJuIG59ZnVuY3Rpb24gcChlLHQscil7dmFyIG49dC5kaXIsaT1yJiYicGFyZW50Tm9k
ZSI9PT1uLG89eisrO3JldHVybiB0LmZpcnN0P2Z1bmN0aW9uKHQscixvKXtmb3IoO3Q9dFtuXTsp
aWYoMT09PXQubm9kZVR5cGV8fGkpcmV0dXJuIGUodCxyLG8pfTpmdW5jdGlvbih0LHIsYSl7dmFy
IHMsdSxsLGM9W3Esb107aWYoYSl7Zm9yKDt0PXRbbl07KWlmKCgxPT09dC5ub2RlVHlwZXx8aSkm
JmUodCxyLGEpKXJldHVybiEwfWVsc2UgZm9yKDt0PXRbbl07KWlmKDE9PT10Lm5vZGVUeXBlfHxp
KXtpZihsPXRbSF18fCh0W0hdPXt9KSx1PWxbdC51bmlxdWVJRF18fChsW3QudW5pcXVlSURdPXt9
KSwocz11W25dKSYmc1swXT09PXEmJnNbMV09PT1vKXJldHVybiBjWzJdPXNbMl07aWYodVtuXT1j
LGNbMl09ZSh0LHIsYSkpcmV0dXJuITB9fX1mdW5jdGlvbiBoKGUpe3JldHVybiBlLmxlbmd0aD4x
P2Z1bmN0aW9uKHQscixuKXtmb3IodmFyIGk9ZS5sZW5ndGg7aS0tOylpZighZVtpXSh0LHIsbikp
cmV0dXJuITE7cmV0dXJuITB9OmVbMF19ZnVuY3Rpb24gbShlLHIsbil7Zm9yKHZhciBpPTAsbz1y
Lmxlbmd0aDtpPG87aSsrKXQoZSxyW2ldLG4pO3JldHVybiBufWZ1bmN0aW9uIHYoZSx0LHIsbixp
KXtmb3IodmFyIG8sYT1bXSxzPTAsdT1lLmxlbmd0aCxsPW51bGwhPXQ7czx1O3MrKykobz1lW3Nd
KSYmKHImJiFyKG8sbixpKXx8KGEucHVzaChvKSxsJiZ0LnB1c2gocykpKTtyZXR1cm4gYX1mdW5j
dGlvbiBiKGUsdCxyLGksbyxhKXtyZXR1cm4gaSYmIWlbSF0mJihpPWIoaSkpLG8mJiFvW0hdJiYo
bz1iKG8sYSkpLG4oZnVuY3Rpb24obixhLHMsdSl7dmFyIGwsYyxmLGQ9W10scD1bXSxoPWEubGVu
Z3RoLGI9bnx8bSh0fHwiKiIscy5ub2RlVHlwZT9bc106cyxbXSksZz0hZXx8IW4mJnQ/Yjp2KGIs
ZCxlLHMsdSkseT1yP298fChuP2U6aHx8aSk/W106YTpnO2lmKHImJnIoZyx5LHMsdSksaSlmb3Io
bD12KHkscCksaShsLFtdLHMsdSksYz1sLmxlbmd0aDtjLS07KShmPWxbY10pJiYoeVtwW2NdXT0h
KGdbcFtjXV09ZikpO2lmKG4pe2lmKG98fGUpe2lmKG8pe2ZvcihsPVtdLGM9eS5sZW5ndGg7Yy0t
OykoZj15W2NdKSYmbC5wdXNoKGdbY109Zik7byhudWxsLHk9W10sbCx1KX1mb3IoYz15Lmxlbmd0
aDtjLS07KShmPXlbY10pJiYobD1vP2VlKG4sZik6ZFtjXSk+LTEmJihuW2xdPSEoYVtsXT1mKSl9
fWVsc2UgeT12KHk9PT1hP3kuc3BsaWNlKGgseS5sZW5ndGgpOnkpLG8/byhudWxsLGEseSx1KTpK
LmFwcGx5KGEseSl9KX1mdW5jdGlvbiBnKGUpe2Zvcih2YXIgdCxyLG4saT1lLmxlbmd0aCxvPXgu
cmVsYXRpdmVbZVswXS50eXBlXSxhPW98fHgucmVsYXRpdmVbIiAiXSxzPW8/MTowLHU9cChmdW5j
dGlvbihlKXtyZXR1cm4gZT09PXR9LGEsITApLGw9cChmdW5jdGlvbihlKXtyZXR1cm4gZWUodCxl
KT4tMX0sYSwhMCksYz1bZnVuY3Rpb24oZSxyLG4pe3ZhciBpPSFvJiYobnx8ciE9PU4pfHwoKHQ9
cikubm9kZVR5cGU/dShlLHIsbik6bChlLHIsbikpO3JldHVybiB0PW51bGwsaX1dO3M8aTtzKysp
aWYocj14LnJlbGF0aXZlW2Vbc10udHlwZV0pYz1bcChoKGMpLHIpXTtlbHNle2lmKHI9eC5maWx0
ZXJbZVtzXS50eXBlXS5hcHBseShudWxsLGVbc10ubWF0Y2hlcykscltIXSl7Zm9yKG49KytzO248
aSYmIXgucmVsYXRpdmVbZVtuXS50eXBlXTtuKyspO3JldHVybiBiKHM+MSYmaChjKSxzPjEmJmQo
ZS5zbGljZSgwLHMtMSkuY29uY2F0KHt2YWx1ZToiICI9PT1lW3MtMl0udHlwZT8iKiI6IiJ9KSku
cmVwbGFjZShzZSwiJDEiKSxyLHM8biYmZyhlLnNsaWNlKHMsbikpLG48aSYmZyhlPWUuc2xpY2Uo
bikpLG48aSYmZChlKSl9Yy5wdXNoKHIpfXJldHVybiBoKGMpfWZ1bmN0aW9uIHkoZSxyKXt2YXIg
aT1yLmxlbmd0aD4wLG89ZS5sZW5ndGg+MCxhPWZ1bmN0aW9uKG4sYSxzLHUsbCl7dmFyIGMsZixk
LHA9MCxoPSIwIixtPW4mJltdLGI9W10sZz1OLHk9bnx8byYmeC5maW5kLlRBRygiKiIsbCksXz1x
Kz1udWxsPT1nPzE6TWF0aC5yYW5kb20oKXx8LjEsdz15Lmxlbmd0aDtmb3IobCYmKE49YT09PWp8
fGF8fGwpO2ghPT13JiZudWxsIT0oYz15W2hdKTtoKyspe2lmKG8mJmMpe2ZvcihmPTAsYXx8Yy5v
d25lckRvY3VtZW50PT09anx8KFAoYykscz0hTCk7ZD1lW2YrK107KWlmKGQoYyxhfHxqLHMpKXt1
LnB1c2goYyk7YnJlYWt9bCYmKHE9Xyl9aSYmKChjPSFkJiZjKSYmcC0tLG4mJm0ucHVzaChjKSl9
aWYocCs9aCxpJiZoIT09cCl7Zm9yKGY9MDtkPXJbZisrXTspZChtLGIsYSxzKTtpZihuKXtpZihw
PjApZm9yKDtoLS07KW1baF18fGJbaF18fChiW2hdPVkuY2FsbCh1KSk7Yj12KGIpfUouYXBwbHko
dSxiKSxsJiYhbiYmYi5sZW5ndGg+MCYmcCtyLmxlbmd0aD4xJiZ0LnVuaXF1ZVNvcnQodSl9cmV0
dXJuIGwmJihxPV8sTj1nKSxtfTtyZXR1cm4gaT9uKGEpOmF9dmFyIF8sdyx4LGssQyxFLE8sVCxO
LFMsQSxQLGosUixMLEQsTSxJLEYsSD0ic2l6emxlIisxKm5ldyBEYXRlLFY9ZS5kb2N1bWVudCxx
PTAsej0wLEI9cigpLFU9cigpLFc9cigpLCQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT09PXQmJihB
PSEwKSwwfSxLPTE8PDMxLFE9e30uaGFzT3duUHJvcGVydHksRz1bXSxZPUcucG9wLFg9Ry5wdXNo
LEo9Ry5wdXNoLFo9Ry5zbGljZSxlZT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcj0wLG49ZS5sZW5n
dGg7cjxuO3IrKylpZihlW3JdPT09dClyZXR1cm4gcjtyZXR1cm4tMX0sdGU9ImNoZWNrZWR8c2Vs
ZWN0ZWR8YXN5bmN8YXV0b2ZvY3VzfGF1dG9wbGF5fGNvbnRyb2xzfGRlZmVyfGRpc2FibGVkfGhp
ZGRlbnxpc21hcHxsb29wfG11bHRpcGxlfG9wZW58cmVhZG9ubHl8cmVxdWlyZWR8c2NvcGVkIixy
ZT0iW1xceDIwXFx0XFxyXFxuXFxmXSIsbmU9Iig/OlxcXFwufFtcXHctXXxbXlxceDAwLVxceGEw
XSkrIixpZT0iXFxbIityZSsiKigiK25lKyIpKD86IityZSsiKihbKl4kfCF+XT89KSIrcmUrIioo
PzonKCg/OlxcXFwufFteXFxcXCddKSopJ3xcIigoPzpcXFxcLnxbXlxcXFxcIl0pKilcInwoIitu
ZSsiKSl8KSIrcmUrIipcXF0iLG9lPSI6KCIrbmUrIikoPzpcXCgoKCcoKD86XFxcXC58W15cXFxc
J10pKiknfFwiKCg/OlxcXFwufFteXFxcXFwiXSkqKVwiKXwoKD86XFxcXC58W15cXFxcKClbXFxd
XXwiK2llKyIpKil8LiopXFwpfCkiLGFlPW5ldyBSZWdFeHAocmUrIisiLCJnIiksc2U9bmV3IFJl
Z0V4cCgiXiIrcmUrIit8KCg/Ol58W15cXFxcXSkoPzpcXFxcLikqKSIrcmUrIiskIiwiZyIpLHVl
PW5ldyBSZWdFeHAoIl4iK3JlKyIqLCIrcmUrIioiKSxsZT1uZXcgUmVnRXhwKCJeIityZSsiKihb
Pit+XXwiK3JlKyIpIityZSsiKiIpLGNlPW5ldyBSZWdFeHAoIj0iK3JlKyIqKFteXFxdJ1wiXSo/
KSIrcmUrIipcXF0iLCJnIiksZmU9bmV3IFJlZ0V4cChvZSksZGU9bmV3IFJlZ0V4cCgiXiIrbmUr
IiQiKSxwZT17SUQ6bmV3IFJlZ0V4cCgiXiMoIituZSsiKSIpLENMQVNTOm5ldyBSZWdFeHAoIl5c
XC4oIituZSsiKSIpLFRBRzpuZXcgUmVnRXhwKCJeKCIrbmUrInxbKl0pIiksQVRUUjpuZXcgUmVn
RXhwKCJeIitpZSksUFNFVURPOm5ldyBSZWdFeHAoIl4iK29lKSxDSElMRDpuZXcgUmVnRXhwKCJe
Oihvbmx5fGZpcnN0fGxhc3R8bnRofG50aC1sYXN0KS0oY2hpbGR8b2YtdHlwZSkoPzpcXCgiK3Jl
KyIqKGV2ZW58b2RkfCgoWystXXwpKFxcZCopbnwpIityZSsiKig/OihbKy1dfCkiK3JlKyIqKFxc
ZCspfCkpIityZSsiKlxcKXwpIiwiaSIpLGJvb2w6bmV3IFJlZ0V4cCgiXig/OiIrdGUrIikkIiwi
aSIpLG5lZWRzQ29udGV4dDpuZXcgUmVnRXhwKCJeIityZSsiKls+K35dfDooZXZlbnxvZGR8ZXF8
Z3R8bHR8bnRofGZpcnN0fGxhc3QpKD86XFwoIityZSsiKigoPzotXFxkKT9cXGQqKSIrcmUrIipc
XCl8KSg/PVteLV18JCkiLCJpIil9LGhlPS9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRv
bikkL2ksbWU9L15oXGQkL2ksdmU9L15bXntdK1x7XHMqXFtuYXRpdmUgXHcvLGJlPS9eKD86Iyhb
XHctXSspfChcdyspfFwuKFtcdy1dKykpJC8sZ2U9L1srfl0vLHllPS8nfFxcL2csX2U9bmV3IFJl
Z0V4cCgiXFxcXChbXFxkYS1mXXsxLDZ9IityZSsiP3woIityZSsiKXwuKSIsImlnIiksd2U9ZnVu
Y3Rpb24oZSx0LHIpe3ZhciBuPSIweCIrdC02NTUzNjtyZXR1cm4gbiE9PW58fHI/dDpuPDA/U3Ry
aW5nLmZyb21DaGFyQ29kZShuKzY1NTM2KTpTdHJpbmcuZnJvbUNoYXJDb2RlKG4+PjEwfDU1Mjk2
LDEwMjMmbnw1NjMyMCl9LHhlPWZ1bmN0aW9uKCl7UCgpfTt0cnl7Si5hcHBseShHPVouY2FsbChW
LmNoaWxkTm9kZXMpLFYuY2hpbGROb2RlcyksR1tWLmNoaWxkTm9kZXMubGVuZ3RoXS5ub2RlVHlw
ZX1jYXRjaChlKXtKPXthcHBseTpHLmxlbmd0aD9mdW5jdGlvbihlLHQpe1guYXBwbHkoZSxaLmNh
bGwodCkpfTpmdW5jdGlvbihlLHQpe2Zvcih2YXIgcj1lLmxlbmd0aCxuPTA7ZVtyKytdPXRbbisr
XTspO2UubGVuZ3RoPXItMX19fXc9dC5zdXBwb3J0PXt9LEM9dC5pc1hNTD1mdW5jdGlvbihlKXt2
YXIgdD1lJiYoZS5vd25lckRvY3VtZW50fHxlKS5kb2N1bWVudEVsZW1lbnQ7cmV0dXJuISF0JiYi
SFRNTCIhPT10Lm5vZGVOYW1lfSxQPXQuc2V0RG9jdW1lbnQ9ZnVuY3Rpb24oZSl7dmFyIHQscixu
PWU/ZS5vd25lckRvY3VtZW50fHxlOlY7cmV0dXJuIG4hPT1qJiY5PT09bi5ub2RlVHlwZSYmbi5k
b2N1bWVudEVsZW1lbnQ/KGo9bixSPWouZG9jdW1lbnRFbGVtZW50LEw9IUMoaiksKHI9ai5kZWZh
dWx0VmlldykmJnIudG9wIT09ciYmKHIuYWRkRXZlbnRMaXN0ZW5lcj9yLmFkZEV2ZW50TGlzdGVu
ZXIoInVubG9hZCIseGUsITEpOnIuYXR0YWNoRXZlbnQmJnIuYXR0YWNoRXZlbnQoIm9udW5sb2Fk
Iix4ZSkpLHcuYXR0cmlidXRlcz1pKGZ1bmN0aW9uKGUpe3JldHVybiBlLmNsYXNzTmFtZT0iaSIs
IWUuZ2V0QXR0cmlidXRlKCJjbGFzc05hbWUiKX0pLHcuZ2V0RWxlbWVudHNCeVRhZ05hbWU9aShm
dW5jdGlvbihlKXtyZXR1cm4gZS5hcHBlbmRDaGlsZChqLmNyZWF0ZUNvbW1lbnQoIiIpKSwhZS5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLmxlbmd0aH0pLHcuZ2V0RWxlbWVudHNCeUNsYXNzTmFt
ZT12ZS50ZXN0KGouZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSksdy5nZXRCeUlkPWkoZnVuY3Rpb24o
ZSl7cmV0dXJuIFIuYXBwZW5kQ2hpbGQoZSkuaWQ9SCwhai5nZXRFbGVtZW50c0J5TmFtZXx8IWou
Z2V0RWxlbWVudHNCeU5hbWUoSCkubGVuZ3RofSksdy5nZXRCeUlkPyh4LmZpbmQuSUQ9ZnVuY3Rp
b24oZSx0KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIHQuZ2V0RWxlbWVudEJ5SWQmJkwpe3ZhciBy
PXQuZ2V0RWxlbWVudEJ5SWQoZSk7cmV0dXJuIHI/W3JdOltdfX0seC5maWx0ZXIuSUQ9ZnVuY3Rp
b24oZSl7dmFyIHQ9ZS5yZXBsYWNlKF9lLHdlKTtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGUu
Z2V0QXR0cmlidXRlKCJpZCIpPT09dH19KTooZGVsZXRlIHguZmluZC5JRCx4LmZpbHRlci5JRD1m
dW5jdGlvbihlKXt2YXIgdD1lLnJlcGxhY2UoX2Usd2UpO3JldHVybiBmdW5jdGlvbihlKXt2YXIg
cj0idW5kZWZpbmVkIiE9dHlwZW9mIGUuZ2V0QXR0cmlidXRlTm9kZSYmZS5nZXRBdHRyaWJ1dGVO
b2RlKCJpZCIpO3JldHVybiByJiZyLnZhbHVlPT09dH19KSx4LmZpbmQuVEFHPXcuZ2V0RWxlbWVu
dHNCeVRhZ05hbWU/ZnVuY3Rpb24oZSx0KXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIHQuZ2V0
RWxlbWVudHNCeVRhZ05hbWU/dC5nZXRFbGVtZW50c0J5VGFnTmFtZShlKTp3LnFzYT90LnF1ZXJ5
U2VsZWN0b3JBbGwoZSk6dm9pZCAwfTpmdW5jdGlvbihlLHQpe3ZhciByLG49W10saT0wLG89dC5n
ZXRFbGVtZW50c0J5VGFnTmFtZShlKTtpZigiKiI9PT1lKXtmb3IoO3I9b1tpKytdOykxPT09ci5u
b2RlVHlwZSYmbi5wdXNoKHIpO3JldHVybiBufXJldHVybiBvfSx4LmZpbmQuQ0xBU1M9dy5nZXRF
bGVtZW50c0J5Q2xhc3NOYW1lJiZmdW5jdGlvbihlLHQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2Yg
dC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lJiZMKXJldHVybiB0LmdldEVsZW1lbnRzQnlDbGFzc05h
bWUoZSl9LE09W10sRD1bXSwody5xc2E9dmUudGVzdChqLnF1ZXJ5U2VsZWN0b3JBbGwpKSYmKGko
ZnVuY3Rpb24oZSl7Ui5hcHBlbmRDaGlsZChlKS5pbm5lckhUTUw9IjxhIGlkPSciK0grIic+PC9h
PjxzZWxlY3QgaWQ9JyIrSCsiLVxyXFwnIG1zYWxsb3djYXB0dXJlPScnPjxvcHRpb24gc2VsZWN0
ZWQ9Jyc+PC9vcHRpb24+PC9zZWxlY3Q+IixlLnF1ZXJ5U2VsZWN0b3JBbGwoIlttc2FsbG93Y2Fw
dHVyZV49JyddIikubGVuZ3RoJiZELnB1c2goIlsqXiRdPSIrcmUrIiooPzonJ3xcIlwiKSIpLGUu
cXVlcnlTZWxlY3RvckFsbCgiW3NlbGVjdGVkXSIpLmxlbmd0aHx8RC5wdXNoKCJcXFsiK3JlKyIq
KD86dmFsdWV8Iit0ZSsiKSIpLGUucXVlcnlTZWxlY3RvckFsbCgiW2lkfj0iK0grIi1dIikubGVu
Z3RofHxELnB1c2goIn49IiksZS5xdWVyeVNlbGVjdG9yQWxsKCI6Y2hlY2tlZCIpLmxlbmd0aHx8
RC5wdXNoKCI6Y2hlY2tlZCIpLGUucXVlcnlTZWxlY3RvckFsbCgiYSMiK0grIisqIikubGVuZ3Ro
fHxELnB1c2goIi4jLitbK35dIil9KSxpKGZ1bmN0aW9uKGUpe3ZhciB0PWouY3JlYXRlRWxlbWVu
dCgiaW5wdXQiKTt0LnNldEF0dHJpYnV0ZSgidHlwZSIsImhpZGRlbiIpLGUuYXBwZW5kQ2hpbGQo
dCkuc2V0QXR0cmlidXRlKCJuYW1lIiwiRCIpLGUucXVlcnlTZWxlY3RvckFsbCgiW25hbWU9ZF0i
KS5sZW5ndGgmJkQucHVzaCgibmFtZSIrcmUrIipbKl4kfCF+XT89IiksZS5xdWVyeVNlbGVjdG9y
QWxsKCI6ZW5hYmxlZCIpLmxlbmd0aHx8RC5wdXNoKCI6ZW5hYmxlZCIsIjpkaXNhYmxlZCIpLGUu
cXVlcnlTZWxlY3RvckFsbCgiKiw6eCIpLEQucHVzaCgiLC4qOiIpfSkpLCh3Lm1hdGNoZXNTZWxl
Y3Rvcj12ZS50ZXN0KEk9Ui5tYXRjaGVzfHxSLndlYmtpdE1hdGNoZXNTZWxlY3Rvcnx8Ui5tb3pN
YXRjaGVzU2VsZWN0b3J8fFIub01hdGNoZXNTZWxlY3Rvcnx8Ui5tc01hdGNoZXNTZWxlY3Rvcikp
JiZpKGZ1bmN0aW9uKGUpe3cuZGlzY29ubmVjdGVkTWF0Y2g9SS5jYWxsKGUsImRpdiIpLEkuY2Fs
bChlLCJbcyE9JyddOngiKSxNLnB1c2goIiE9IixvZSl9KSxEPUQubGVuZ3RoJiZuZXcgUmVnRXhw
KEQuam9pbigifCIpKSxNPU0ubGVuZ3RoJiZuZXcgUmVnRXhwKE0uam9pbigifCIpKSx0PXZlLnRl
c3QoUi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiksRj10fHx2ZS50ZXN0KFIuY29udGFpbnMpP2Z1
bmN0aW9uKGUsdCl7dmFyIHI9OT09PWUubm9kZVR5cGU/ZS5kb2N1bWVudEVsZW1lbnQ6ZSxuPXQm
JnQucGFyZW50Tm9kZTtyZXR1cm4gZT09PW58fCEoIW58fDEhPT1uLm5vZGVUeXBlfHwhKHIuY29u
dGFpbnM/ci5jb250YWlucyhuKTplLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uJiYxNiZlLmNvbXBh
cmVEb2N1bWVudFBvc2l0aW9uKG4pKSl9OmZ1bmN0aW9uKGUsdCl7aWYodClmb3IoO3Q9dC5wYXJl
bnROb2RlOylpZih0PT09ZSlyZXR1cm4hMDtyZXR1cm4hMX0sJD10P2Z1bmN0aW9uKGUsdCl7aWYo
ZT09PXQpcmV0dXJuIEE9ITAsMDt2YXIgcj0hZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbi0hdC5j
b21wYXJlRG9jdW1lbnRQb3NpdGlvbjtyZXR1cm4gcj9yOihyPShlLm93bmVyRG9jdW1lbnR8fGUp
PT09KHQub3duZXJEb2N1bWVudHx8dCk/ZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0KToxLDEm
cnx8IXcuc29ydERldGFjaGVkJiZ0LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGUpPT09cj9lPT09
anx8ZS5vd25lckRvY3VtZW50PT09ViYmRihWLGUpPy0xOnQ9PT1qfHx0Lm93bmVyRG9jdW1lbnQ9
PT1WJiZGKFYsdCk/MTpTP2VlKFMsZSktZWUoUyx0KTowOjQmcj8tMToxKX06ZnVuY3Rpb24oZSx0
KXtpZihlPT09dClyZXR1cm4gQT0hMCwwO3ZhciByLG49MCxpPWUucGFyZW50Tm9kZSxvPXQucGFy
ZW50Tm9kZSxzPVtlXSx1PVt0XTtpZighaXx8IW8pcmV0dXJuIGU9PT1qPy0xOnQ9PT1qPzE6aT8t
MTpvPzE6Uz9lZShTLGUpLWVlKFMsdCk6MDtpZihpPT09bylyZXR1cm4gYShlLHQpO2ZvcihyPWU7
cj1yLnBhcmVudE5vZGU7KXMudW5zaGlmdChyKTtmb3Iocj10O3I9ci5wYXJlbnROb2RlOyl1LnVu
c2hpZnQocik7Zm9yKDtzW25dPT09dVtuXTspbisrO3JldHVybiBuP2Eoc1tuXSx1W25dKTpzW25d
PT09Vj8tMTp1W25dPT09Vj8xOjB9LGopOmp9LHQubWF0Y2hlcz1mdW5jdGlvbihlLHIpe3JldHVy
biB0KGUsbnVsbCxudWxsLHIpfSx0Lm1hdGNoZXNTZWxlY3Rvcj1mdW5jdGlvbihlLHIpe2lmKChl
Lm93bmVyRG9jdW1lbnR8fGUpIT09aiYmUChlKSxyPXIucmVwbGFjZShjZSwiPSckMSddIiksdy5t
YXRjaGVzU2VsZWN0b3ImJkwmJiFXW3IrIiAiXSYmKCFNfHwhTS50ZXN0KHIpKSYmKCFEfHwhRC50
ZXN0KHIpKSl0cnl7dmFyIG49SS5jYWxsKGUscik7aWYobnx8dy5kaXNjb25uZWN0ZWRNYXRjaHx8
ZS5kb2N1bWVudCYmMTEhPT1lLmRvY3VtZW50Lm5vZGVUeXBlKXJldHVybiBufWNhdGNoKGUpe31y
ZXR1cm4gdChyLGosbnVsbCxbZV0pLmxlbmd0aD4wfSx0LmNvbnRhaW5zPWZ1bmN0aW9uKGUsdCl7
cmV0dXJuKGUub3duZXJEb2N1bWVudHx8ZSkhPT1qJiZQKGUpLEYoZSx0KX0sdC5hdHRyPWZ1bmN0
aW9uKGUsdCl7KGUub3duZXJEb2N1bWVudHx8ZSkhPT1qJiZQKGUpO3ZhciByPXguYXR0ckhhbmRs
ZVt0LnRvTG93ZXJDYXNlKCldLG49ciYmUS5jYWxsKHguYXR0ckhhbmRsZSx0LnRvTG93ZXJDYXNl
KCkpP3IoZSx0LCFMKTp2b2lkIDA7cmV0dXJuIHZvaWQgMCE9PW4/bjp3LmF0dHJpYnV0ZXN8fCFM
P2UuZ2V0QXR0cmlidXRlKHQpOihuPWUuZ2V0QXR0cmlidXRlTm9kZSh0KSkmJm4uc3BlY2lmaWVk
P24udmFsdWU6bnVsbH0sdC5lcnJvcj1mdW5jdGlvbihlKXt0aHJvdyBuZXcgRXJyb3IoIlN5bnRh
eCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246ICIrZSl9LHQudW5pcXVlU29ydD1mdW5j
dGlvbihlKXt2YXIgdCxyPVtdLG49MCxpPTA7aWYoQT0hdy5kZXRlY3REdXBsaWNhdGVzLFM9IXcu
c29ydFN0YWJsZSYmZS5zbGljZSgwKSxlLnNvcnQoJCksQSl7Zm9yKDt0PWVbaSsrXTspdD09PWVb
aV0mJihuPXIucHVzaChpKSk7Zm9yKDtuLS07KWUuc3BsaWNlKHJbbl0sMSl9cmV0dXJuIFM9bnVs
bCxlfSxrPXQuZ2V0VGV4dD1mdW5jdGlvbihlKXt2YXIgdCxyPSIiLG49MCxpPWUubm9kZVR5cGU7
aWYoaSl7aWYoMT09PWl8fDk9PT1pfHwxMT09PWkpe2lmKCJzdHJpbmciPT10eXBlb2YgZS50ZXh0
Q29udGVudClyZXR1cm4gZS50ZXh0Q29udGVudDtmb3IoZT1lLmZpcnN0Q2hpbGQ7ZTtlPWUubmV4
dFNpYmxpbmcpcis9ayhlKX1lbHNlIGlmKDM9PT1pfHw0PT09aSlyZXR1cm4gZS5ub2RlVmFsdWV9
ZWxzZSBmb3IoO3Q9ZVtuKytdOylyKz1rKHQpO3JldHVybiByfSx4PXQuc2VsZWN0b3JzPXtjYWNo
ZUxlbmd0aDo1MCxjcmVhdGVQc2V1ZG86bixtYXRjaDpwZSxhdHRySGFuZGxlOnt9LGZpbmQ6e30s
cmVsYXRpdmU6eyI+Ijp7ZGlyOiJwYXJlbnROb2RlIixmaXJzdDohMH0sIiAiOntkaXI6InBhcmVu
dE5vZGUifSwiKyI6e2RpcjoicHJldmlvdXNTaWJsaW5nIixmaXJzdDohMH0sIn4iOntkaXI6InBy
ZXZpb3VzU2libGluZyJ9fSxwcmVGaWx0ZXI6e0FUVFI6ZnVuY3Rpb24oZSl7cmV0dXJuIGVbMV09
ZVsxXS5yZXBsYWNlKF9lLHdlKSwKK2VbM109KGVbM118fGVbNF18fGVbNV18fCIiKS5yZXBsYWNl
KF9lLHdlKSwifj0iPT09ZVsyXSYmKGVbM109IiAiK2VbM10rIiAiKSxlLnNsaWNlKDAsNCl9LENI
SUxEOmZ1bmN0aW9uKGUpe3JldHVybiBlWzFdPWVbMV0udG9Mb3dlckNhc2UoKSwibnRoIj09PWVb
MV0uc2xpY2UoMCwzKT8oZVszXXx8dC5lcnJvcihlWzBdKSxlWzRdPSsoZVs0XT9lWzVdKyhlWzZd
fHwxKToyKigiZXZlbiI9PT1lWzNdfHwib2RkIj09PWVbM10pKSxlWzVdPSsoZVs3XStlWzhdfHwi
b2RkIj09PWVbM10pKTplWzNdJiZ0LmVycm9yKGVbMF0pLGV9LFBTRVVETzpmdW5jdGlvbihlKXt2
YXIgdCxyPSFlWzZdJiZlWzJdO3JldHVybiBwZS5DSElMRC50ZXN0KGVbMF0pP251bGw6KGVbM10/
ZVsyXT1lWzRdfHxlWzVdfHwiIjpyJiZmZS50ZXN0KHIpJiYodD1FKHIsITApKSYmKHQ9ci5pbmRl
eE9mKCIpIixyLmxlbmd0aC10KS1yLmxlbmd0aCkmJihlWzBdPWVbMF0uc2xpY2UoMCx0KSxlWzJd
PXIuc2xpY2UoMCx0KSksZS5zbGljZSgwLDMpKX19LGZpbHRlcjp7VEFHOmZ1bmN0aW9uKGUpe3Zh
ciB0PWUucmVwbGFjZShfZSx3ZSkudG9Mb3dlckNhc2UoKTtyZXR1cm4iKiI9PT1lP2Z1bmN0aW9u
KCl7cmV0dXJuITB9OmZ1bmN0aW9uKGUpe3JldHVybiBlLm5vZGVOYW1lJiZlLm5vZGVOYW1lLnRv
TG93ZXJDYXNlKCk9PT10fX0sQ0xBU1M6ZnVuY3Rpb24oZSl7dmFyIHQ9QltlKyIgIl07cmV0dXJu
IHR8fCh0PW5ldyBSZWdFeHAoIihefCIrcmUrIikiK2UrIigiK3JlKyJ8JCkiKSkmJkIoZSxmdW5j
dGlvbihlKXtyZXR1cm4gdC50ZXN0KCJzdHJpbmciPT10eXBlb2YgZS5jbGFzc05hbWUmJmUuY2xh
c3NOYW1lfHwidW5kZWZpbmVkIiE9dHlwZW9mIGUuZ2V0QXR0cmlidXRlJiZlLmdldEF0dHJpYnV0
ZSgiY2xhc3MiKXx8IiIpfSl9LEFUVFI6ZnVuY3Rpb24oZSxyLG4pe3JldHVybiBmdW5jdGlvbihp
KXt2YXIgbz10LmF0dHIoaSxlKTtyZXR1cm4gbnVsbD09bz8iIT0iPT09cjohcnx8KG8rPSIiLCI9
Ij09PXI/bz09PW46IiE9Ij09PXI/byE9PW46Il49Ij09PXI/biYmMD09PW8uaW5kZXhPZihuKToi
Kj0iPT09cj9uJiZvLmluZGV4T2Yobik+LTE6IiQ9Ij09PXI/biYmby5zbGljZSgtbi5sZW5ndGgp
PT09bjoifj0iPT09cj8oIiAiK28ucmVwbGFjZShhZSwiICIpKyIgIikuaW5kZXhPZihuKT4tMToi
fD0iPT09ciYmKG89PT1ufHxvLnNsaWNlKDAsbi5sZW5ndGgrMSk9PT1uKyItIikpfX0sQ0hJTEQ6
ZnVuY3Rpb24oZSx0LHIsbixpKXt2YXIgbz0ibnRoIiE9PWUuc2xpY2UoMCwzKSxhPSJsYXN0IiE9
PWUuc2xpY2UoLTQpLHM9Im9mLXR5cGUiPT09dDtyZXR1cm4gMT09PW4mJjA9PT1pP2Z1bmN0aW9u
KGUpe3JldHVybiEhZS5wYXJlbnROb2RlfTpmdW5jdGlvbih0LHIsdSl7dmFyIGwsYyxmLGQscCxo
LG09byE9PWE/Im5leHRTaWJsaW5nIjoicHJldmlvdXNTaWJsaW5nIix2PXQucGFyZW50Tm9kZSxi
PXMmJnQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSxnPSF1JiYhcyx5PSExO2lmKHYpe2lmKG8pe2Zv
cig7bTspe2ZvcihkPXQ7ZD1kW21dOylpZihzP2Qubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PWI6
MT09PWQubm9kZVR5cGUpcmV0dXJuITE7aD1tPSJvbmx5Ij09PWUmJiFoJiYibmV4dFNpYmxpbmci
fXJldHVybiEwfWlmKGg9W2E/di5maXJzdENoaWxkOnYubGFzdENoaWxkXSxhJiZnKXtmb3IoZD12
LGY9ZFtIXXx8KGRbSF09e30pLGM9ZltkLnVuaXF1ZUlEXXx8KGZbZC51bmlxdWVJRF09e30pLGw9
Y1tlXXx8W10scD1sWzBdPT09cSYmbFsxXSx5PXAmJmxbMl0sZD1wJiZ2LmNoaWxkTm9kZXNbcF07
ZD0rK3AmJmQmJmRbbV18fCh5PXA9MCl8fGgucG9wKCk7KWlmKDE9PT1kLm5vZGVUeXBlJiYrK3km
JmQ9PT10KXtjW2VdPVtxLHAseV07YnJlYWt9fWVsc2UgaWYoZyYmKGQ9dCxmPWRbSF18fChkW0hd
PXt9KSxjPWZbZC51bmlxdWVJRF18fChmW2QudW5pcXVlSURdPXt9KSxsPWNbZV18fFtdLHA9bFsw
XT09PXEmJmxbMV0seT1wKSx5PT09ITEpZm9yKDsoZD0rK3AmJmQmJmRbbV18fCh5PXA9MCl8fGgu
cG9wKCkpJiYoKHM/ZC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpIT09YjoxIT09ZC5ub2RlVHlwZSl8
fCErK3l8fChnJiYoZj1kW0hdfHwoZFtIXT17fSksYz1mW2QudW5pcXVlSURdfHwoZltkLnVuaXF1
ZUlEXT17fSksY1tlXT1bcSx5XSksZCE9PXQpKTspO3JldHVybiB5LT1pLHk9PT1ufHx5JW49PT0w
JiZ5L24+PTB9fX0sUFNFVURPOmZ1bmN0aW9uKGUscil7dmFyIGksbz14LnBzZXVkb3NbZV18fHgu
c2V0RmlsdGVyc1tlLnRvTG93ZXJDYXNlKCldfHx0LmVycm9yKCJ1bnN1cHBvcnRlZCBwc2V1ZG86
ICIrZSk7cmV0dXJuIG9bSF0/byhyKTpvLmxlbmd0aD4xPyhpPVtlLGUsIiIscl0seC5zZXRGaWx0
ZXJzLmhhc093blByb3BlcnR5KGUudG9Mb3dlckNhc2UoKSk/bihmdW5jdGlvbihlLHQpe2Zvcih2
YXIgbixpPW8oZSxyKSxhPWkubGVuZ3RoO2EtLTspbj1lZShlLGlbYV0pLGVbbl09ISh0W25dPWlb
YV0pfSk6ZnVuY3Rpb24oZSl7cmV0dXJuIG8oZSwwLGkpfSk6b319LHBzZXVkb3M6e25vdDpuKGZ1
bmN0aW9uKGUpe3ZhciB0PVtdLHI9W10saT1PKGUucmVwbGFjZShzZSwiJDEiKSk7cmV0dXJuIGlb
SF0/bihmdW5jdGlvbihlLHQscixuKXtmb3IodmFyIG8sYT1pKGUsbnVsbCxuLFtdKSxzPWUubGVu
Z3RoO3MtLTspKG89YVtzXSkmJihlW3NdPSEodFtzXT1vKSl9KTpmdW5jdGlvbihlLG4sbyl7cmV0
dXJuIHRbMF09ZSxpKHQsbnVsbCxvLHIpLHRbMF09bnVsbCwhci5wb3AoKX19KSxoYXM6bihmdW5j
dGlvbihlKXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIHQoZSxyKS5sZW5ndGg+MH19KSxjb250
YWluczpuKGZ1bmN0aW9uKGUpe3JldHVybiBlPWUucmVwbGFjZShfZSx3ZSksZnVuY3Rpb24odCl7
cmV0dXJuKHQudGV4dENvbnRlbnR8fHQuaW5uZXJUZXh0fHxrKHQpKS5pbmRleE9mKGUpPi0xfX0p
LGxhbmc6bihmdW5jdGlvbihlKXtyZXR1cm4gZGUudGVzdChlfHwiIil8fHQuZXJyb3IoInVuc3Vw
cG9ydGVkIGxhbmc6ICIrZSksZT1lLnJlcGxhY2UoX2Usd2UpLnRvTG93ZXJDYXNlKCksZnVuY3Rp
b24odCl7dmFyIHI7ZG8gaWYocj1MP3QubGFuZzp0LmdldEF0dHJpYnV0ZSgieG1sOmxhbmciKXx8
dC5nZXRBdHRyaWJ1dGUoImxhbmciKSlyZXR1cm4gcj1yLnRvTG93ZXJDYXNlKCkscj09PWV8fDA9
PT1yLmluZGV4T2YoZSsiLSIpO3doaWxlKCh0PXQucGFyZW50Tm9kZSkmJjE9PT10Lm5vZGVUeXBl
KTtyZXR1cm4hMX19KSx0YXJnZXQ6ZnVuY3Rpb24odCl7dmFyIHI9ZS5sb2NhdGlvbiYmZS5sb2Nh
dGlvbi5oYXNoO3JldHVybiByJiZyLnNsaWNlKDEpPT09dC5pZH0scm9vdDpmdW5jdGlvbihlKXty
ZXR1cm4gZT09PVJ9LGZvY3VzOmZ1bmN0aW9uKGUpe3JldHVybiBlPT09ai5hY3RpdmVFbGVtZW50
JiYoIWouaGFzRm9jdXN8fGouaGFzRm9jdXMoKSkmJiEhKGUudHlwZXx8ZS5ocmVmfHx+ZS50YWJJ
bmRleCl9LGVuYWJsZWQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZGlzYWJsZWQ9PT0hMX0sZGlzYWJs
ZWQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZGlzYWJsZWQ9PT0hMH0sY2hlY2tlZDpmdW5jdGlvbihl
KXt2YXIgdD1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PXQmJiEhZS5j
aGVja2VkfHwib3B0aW9uIj09PXQmJiEhZS5zZWxlY3RlZH0sc2VsZWN0ZWQ6ZnVuY3Rpb24oZSl7
cmV0dXJuIGUucGFyZW50Tm9kZSYmZS5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXgsZS5zZWxlY3Rl
ZD09PSEwfSxlbXB0eTpmdW5jdGlvbihlKXtmb3IoZT1lLmZpcnN0Q2hpbGQ7ZTtlPWUubmV4dFNp
YmxpbmcpaWYoZS5ub2RlVHlwZTw2KXJldHVybiExO3JldHVybiEwfSxwYXJlbnQ6ZnVuY3Rpb24o
ZSl7cmV0dXJuIXgucHNldWRvcy5lbXB0eShlKX0saGVhZGVyOmZ1bmN0aW9uKGUpe3JldHVybiBt
ZS50ZXN0KGUubm9kZU5hbWUpfSxpbnB1dDpmdW5jdGlvbihlKXtyZXR1cm4gaGUudGVzdChlLm5v
ZGVOYW1lKX0sYnV0dG9uOmZ1bmN0aW9uKGUpe3ZhciB0PWUubm9kZU5hbWUudG9Mb3dlckNhc2Uo
KTtyZXR1cm4iaW5wdXQiPT09dCYmImJ1dHRvbiI9PT1lLnR5cGV8fCJidXR0b24iPT09dH0sdGV4
dDpmdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4iaW5wdXQiPT09ZS5ub2RlTmFtZS50b0xvd2VyQ2Fz
ZSgpJiYidGV4dCI9PT1lLnR5cGUmJihudWxsPT0odD1lLmdldEF0dHJpYnV0ZSgidHlwZSIpKXx8
InRleHQiPT09dC50b0xvd2VyQ2FzZSgpKX0sZmlyc3Q6bChmdW5jdGlvbigpe3JldHVyblswXX0p
LGxhc3Q6bChmdW5jdGlvbihlLHQpe3JldHVyblt0LTFdfSksZXE6bChmdW5jdGlvbihlLHQscil7
cmV0dXJuW3I8MD9yK3Q6cl19KSxldmVuOmwoZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9MDtyPHQ7
cis9MillLnB1c2gocik7cmV0dXJuIGV9KSxvZGQ6bChmdW5jdGlvbihlLHQpe2Zvcih2YXIgcj0x
O3I8dDtyKz0yKWUucHVzaChyKTtyZXR1cm4gZX0pLGx0OmwoZnVuY3Rpb24oZSx0LHIpe2Zvcih2
YXIgbj1yPDA/cit0OnI7LS1uPj0wOyllLnB1c2gobik7cmV0dXJuIGV9KSxndDpsKGZ1bmN0aW9u
KGUsdCxyKXtmb3IodmFyIG49cjwwP3IrdDpyOysrbjx0OyllLnB1c2gobik7cmV0dXJuIGV9KX19
LHgucHNldWRvcy5udGg9eC5wc2V1ZG9zLmVxO2ZvcihfIGlue3JhZGlvOiEwLGNoZWNrYm94OiEw
LGZpbGU6ITAscGFzc3dvcmQ6ITAsaW1hZ2U6ITB9KXgucHNldWRvc1tfXT1zKF8pO2ZvcihfIGlu
e3N1Ym1pdDohMCxyZXNldDohMH0peC5wc2V1ZG9zW19dPXUoXyk7cmV0dXJuIGYucHJvdG90eXBl
PXguZmlsdGVycz14LnBzZXVkb3MseC5zZXRGaWx0ZXJzPW5ldyBmLEU9dC50b2tlbml6ZT1mdW5j
dGlvbihlLHIpe3ZhciBuLGksbyxhLHMsdSxsLGM9VVtlKyIgIl07aWYoYylyZXR1cm4gcj8wOmMu
c2xpY2UoMCk7Zm9yKHM9ZSx1PVtdLGw9eC5wcmVGaWx0ZXI7czspe24mJiEoaT11ZS5leGVjKHMp
KXx8KGkmJihzPXMuc2xpY2UoaVswXS5sZW5ndGgpfHxzKSx1LnB1c2gobz1bXSkpLG49ITEsKGk9
bGUuZXhlYyhzKSkmJihuPWkuc2hpZnQoKSxvLnB1c2goe3ZhbHVlOm4sdHlwZTppWzBdLnJlcGxh
Y2Uoc2UsIiAiKX0pLHM9cy5zbGljZShuLmxlbmd0aCkpO2ZvcihhIGluIHguZmlsdGVyKSEoaT1w
ZVthXS5leGVjKHMpKXx8bFthXSYmIShpPWxbYV0oaSkpfHwobj1pLnNoaWZ0KCksby5wdXNoKHt2
YWx1ZTpuLHR5cGU6YSxtYXRjaGVzOml9KSxzPXMuc2xpY2Uobi5sZW5ndGgpKTtpZighbilicmVh
a31yZXR1cm4gcj9zLmxlbmd0aDpzP3QuZXJyb3IoZSk6VShlLHUpLnNsaWNlKDApfSxPPXQuY29t
cGlsZT1mdW5jdGlvbihlLHQpe3ZhciByLG49W10saT1bXSxvPVdbZSsiICJdO2lmKCFvKXtmb3Io
dHx8KHQ9RShlKSkscj10Lmxlbmd0aDtyLS07KW89Zyh0W3JdKSxvW0hdP24ucHVzaChvKTppLnB1
c2gobyk7bz1XKGUseShpLG4pKSxvLnNlbGVjdG9yPWV9cmV0dXJuIG99LFQ9dC5zZWxlY3Q9ZnVu
Y3Rpb24oZSx0LHIsbil7dmFyIGksbyxhLHMsdSxsPSJmdW5jdGlvbiI9PXR5cGVvZiBlJiZlLGY9
IW4mJkUoZT1sLnNlbGVjdG9yfHxlKTtpZihyPXJ8fFtdLDE9PT1mLmxlbmd0aCl7aWYobz1mWzBd
PWZbMF0uc2xpY2UoMCksby5sZW5ndGg+MiYmIklEIj09PShhPW9bMF0pLnR5cGUmJncuZ2V0QnlJ
ZCYmOT09PXQubm9kZVR5cGUmJkwmJngucmVsYXRpdmVbb1sxXS50eXBlXSl7aWYodD0oeC5maW5k
LklEKGEubWF0Y2hlc1swXS5yZXBsYWNlKF9lLHdlKSx0KXx8W10pWzBdLCF0KXJldHVybiByO2wm
Jih0PXQucGFyZW50Tm9kZSksZT1lLnNsaWNlKG8uc2hpZnQoKS52YWx1ZS5sZW5ndGgpfWZvcihp
PXBlLm5lZWRzQ29udGV4dC50ZXN0KGUpPzA6by5sZW5ndGg7aS0tJiYoYT1vW2ldLCF4LnJlbGF0
aXZlW3M9YS50eXBlXSk7KWlmKCh1PXguZmluZFtzXSkmJihuPXUoYS5tYXRjaGVzWzBdLnJlcGxh
Y2UoX2Usd2UpLGdlLnRlc3Qob1swXS50eXBlKSYmYyh0LnBhcmVudE5vZGUpfHx0KSkpe2lmKG8u
c3BsaWNlKGksMSksZT1uLmxlbmd0aCYmZChvKSwhZSlyZXR1cm4gSi5hcHBseShyLG4pLHI7YnJl
YWt9fXJldHVybihsfHxPKGUsZikpKG4sdCwhTCxyLCF0fHxnZS50ZXN0KGUpJiZjKHQucGFyZW50
Tm9kZSl8fHQpLHJ9LHcuc29ydFN0YWJsZT1ILnNwbGl0KCIiKS5zb3J0KCQpLmpvaW4oIiIpPT09
SCx3LmRldGVjdER1cGxpY2F0ZXM9ISFBLFAoKSx3LnNvcnREZXRhY2hlZD1pKGZ1bmN0aW9uKGUp
e3JldHVybiAxJmUuY29tcGFyZURvY3VtZW50UG9zaXRpb24oai5jcmVhdGVFbGVtZW50KCJkaXYi
KSl9KSxpKGZ1bmN0aW9uKGUpe3JldHVybiBlLmlubmVySFRNTD0iPGEgaHJlZj0nIyc+PC9hPiIs
IiMiPT09ZS5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgiaHJlZiIpfSl8fG8oInR5cGV8aHJlZnxo
ZWlnaHR8d2lkdGgiLGZ1bmN0aW9uKGUsdCxyKXtpZighcilyZXR1cm4gZS5nZXRBdHRyaWJ1dGUo
dCwidHlwZSI9PT10LnRvTG93ZXJDYXNlKCk/MToyKX0pLHcuYXR0cmlidXRlcyYmaShmdW5jdGlv
bihlKXtyZXR1cm4gZS5pbm5lckhUTUw9IjxpbnB1dC8+IixlLmZpcnN0Q2hpbGQuc2V0QXR0cmli
dXRlKCJ2YWx1ZSIsIiIpLCIiPT09ZS5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgidmFsdWUiKX0p
fHxvKCJ2YWx1ZSIsZnVuY3Rpb24oZSx0LHIpe2lmKCFyJiYiaW5wdXQiPT09ZS5ub2RlTmFtZS50
b0xvd2VyQ2FzZSgpKXJldHVybiBlLmRlZmF1bHRWYWx1ZX0pLGkoZnVuY3Rpb24oZSl7cmV0dXJu
IG51bGw9PWUuZ2V0QXR0cmlidXRlKCJkaXNhYmxlZCIpfSl8fG8odGUsZnVuY3Rpb24oZSx0LHIp
e3ZhciBuO2lmKCFyKXJldHVybiBlW3RdPT09ITA/dC50b0xvd2VyQ2FzZSgpOihuPWUuZ2V0QXR0
cmlidXRlTm9kZSh0KSkmJm4uc3BlY2lmaWVkP24udmFsdWU6bnVsbH0pLHR9KGUpO29lLmZpbmQ9
Y2Usb2UuZXhwcj1jZS5zZWxlY3RvcnMsb2UuZXhwclsiOiJdPW9lLmV4cHIucHNldWRvcyxvZS51
bmlxdWVTb3J0PW9lLnVuaXF1ZT1jZS51bmlxdWVTb3J0LG9lLnRleHQ9Y2UuZ2V0VGV4dCxvZS5p
c1hNTERvYz1jZS5pc1hNTCxvZS5jb250YWlucz1jZS5jb250YWluczt2YXIgZmU9ZnVuY3Rpb24o
ZSx0LHIpe2Zvcih2YXIgbj1bXSxpPXZvaWQgMCE9PXI7KGU9ZVt0XSkmJjkhPT1lLm5vZGVUeXBl
OylpZigxPT09ZS5ub2RlVHlwZSl7aWYoaSYmb2UoZSkuaXMocikpYnJlYWs7bi5wdXNoKGUpfXJl
dHVybiBufSxkZT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcj1bXTtlO2U9ZS5uZXh0U2libGluZykx
PT09ZS5ub2RlVHlwZSYmZSE9PXQmJnIucHVzaChlKTtyZXR1cm4gcn0scGU9b2UuZXhwci5tYXRj
aC5uZWVkc0NvbnRleHQsaGU9L148KFtcdy1dKylccypcLz8+KD86PFwvXDE+fCkkLyxtZT0vXi5b
XjojXFtcLixdKiQvO29lLmZpbHRlcj1mdW5jdGlvbihlLHQscil7dmFyIG49dFswXTtyZXR1cm4g
ciYmKGU9Ijpub3QoIitlKyIpIiksMT09PXQubGVuZ3RoJiYxPT09bi5ub2RlVHlwZT9vZS5maW5k
Lm1hdGNoZXNTZWxlY3RvcihuLGUpP1tuXTpbXTpvZS5maW5kLm1hdGNoZXMoZSxvZS5ncmVwKHQs
ZnVuY3Rpb24oZSl7cmV0dXJuIDE9PT1lLm5vZGVUeXBlfSkpfSxvZS5mbi5leHRlbmQoe2ZpbmQ6
ZnVuY3Rpb24oZSl7dmFyIHQscj10aGlzLmxlbmd0aCxuPVtdLGk9dGhpcztpZigic3RyaW5nIiE9
dHlwZW9mIGUpcmV0dXJuIHRoaXMucHVzaFN0YWNrKG9lKGUpLmZpbHRlcihmdW5jdGlvbigpe2Zv
cih0PTA7dDxyO3QrKylpZihvZS5jb250YWlucyhpW3RdLHRoaXMpKXJldHVybiEwfSkpO2Zvcih0
PTA7dDxyO3QrKylvZS5maW5kKGUsaVt0XSxuKTtyZXR1cm4gbj10aGlzLnB1c2hTdGFjayhyPjE/
b2UudW5pcXVlKG4pOm4pLG4uc2VsZWN0b3I9dGhpcy5zZWxlY3Rvcj90aGlzLnNlbGVjdG9yKyIg
IitlOmUsbn0sZmlsdGVyOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnB1c2hTdGFjayhuKHRoaXMs
ZXx8W10sITEpKX0sbm90OmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnB1c2hTdGFjayhuKHRoaXMs
ZXx8W10sITApKX0saXM6ZnVuY3Rpb24oZSl7cmV0dXJuISFuKHRoaXMsInN0cmluZyI9PXR5cGVv
ZiBlJiZwZS50ZXN0KGUpP29lKGUpOmV8fFtdLCExKS5sZW5ndGh9fSk7dmFyIHZlLGJlPS9eKD86
XHMqKDxbXHdcV10rPilbXj5dKnwjKFtcdy1dKikpJC8sZ2U9b2UuZm4uaW5pdD1mdW5jdGlvbihl
LHQscil7dmFyIG4saTtpZighZSlyZXR1cm4gdGhpcztpZihyPXJ8fHZlLCJzdHJpbmciPT10eXBl
b2YgZSl7aWYobj0iPCI9PT1lWzBdJiYiPiI9PT1lW2UubGVuZ3RoLTFdJiZlLmxlbmd0aD49Mz9b
bnVsbCxlLG51bGxdOmJlLmV4ZWMoZSksIW58fCFuWzFdJiZ0KXJldHVybiF0fHx0LmpxdWVyeT8o
dHx8cikuZmluZChlKTp0aGlzLmNvbnN0cnVjdG9yKHQpLmZpbmQoZSk7aWYoblsxXSl7aWYodD10
IGluc3RhbmNlb2Ygb2U/dFswXTp0LG9lLm1lcmdlKHRoaXMsb2UucGFyc2VIVE1MKG5bMV0sdCYm
dC5ub2RlVHlwZT90Lm93bmVyRG9jdW1lbnR8fHQ6RywhMCkpLGhlLnRlc3QoblsxXSkmJm9lLmlz
UGxhaW5PYmplY3QodCkpZm9yKG4gaW4gdClvZS5pc0Z1bmN0aW9uKHRoaXNbbl0pP3RoaXNbbl0o
dFtuXSk6dGhpcy5hdHRyKG4sdFtuXSk7cmV0dXJuIHRoaXN9cmV0dXJuIGk9Ry5nZXRFbGVtZW50
QnlJZChuWzJdKSxpJiZpLnBhcmVudE5vZGUmJih0aGlzLmxlbmd0aD0xLHRoaXNbMF09aSksdGhp
cy5jb250ZXh0PUcsdGhpcy5zZWxlY3Rvcj1lLHRoaXN9cmV0dXJuIGUubm9kZVR5cGU/KHRoaXMu
Y29udGV4dD10aGlzWzBdPWUsdGhpcy5sZW5ndGg9MSx0aGlzKTpvZS5pc0Z1bmN0aW9uKGUpP3Zv
aWQgMCE9PXIucmVhZHk/ci5yZWFkeShlKTplKG9lKToodm9pZCAwIT09ZS5zZWxlY3RvciYmKHRo
aXMuc2VsZWN0b3I9ZS5zZWxlY3Rvcix0aGlzLmNvbnRleHQ9ZS5jb250ZXh0KSxvZS5tYWtlQXJy
YXkoZSx0aGlzKSl9O2dlLnByb3RvdHlwZT1vZS5mbix2ZT1vZShHKTt2YXIgeWU9L14oPzpwYXJl
bnRzfHByZXYoPzpVbnRpbHxBbGwpKS8sX2U9e2NoaWxkcmVuOiEwLGNvbnRlbnRzOiEwLG5leHQ6
ITAscHJldjohMH07b2UuZm4uZXh0ZW5kKHtoYXM6ZnVuY3Rpb24oZSl7dmFyIHQ9b2UoZSx0aGlz
KSxyPXQubGVuZ3RoO3JldHVybiB0aGlzLmZpbHRlcihmdW5jdGlvbigpe2Zvcih2YXIgZT0wO2U8
cjtlKyspaWYob2UuY29udGFpbnModGhpcyx0W2VdKSlyZXR1cm4hMH0pfSxjbG9zZXN0OmZ1bmN0
aW9uKGUsdCl7Zm9yKHZhciByLG49MCxpPXRoaXMubGVuZ3RoLG89W10sYT1wZS50ZXN0KGUpfHwi
c3RyaW5nIiE9dHlwZW9mIGU/b2UoZSx0fHx0aGlzLmNvbnRleHQpOjA7bjxpO24rKylmb3Iocj10
aGlzW25dO3ImJnIhPT10O3I9ci5wYXJlbnROb2RlKWlmKHIubm9kZVR5cGU8MTEmJihhP2EuaW5k
ZXgocik+LTE6MT09PXIubm9kZVR5cGUmJm9lLmZpbmQubWF0Y2hlc1NlbGVjdG9yKHIsZSkpKXtv
LnB1c2gocik7YnJlYWt9cmV0dXJuIHRoaXMucHVzaFN0YWNrKG8ubGVuZ3RoPjE/b2UudW5pcXVl
U29ydChvKTpvKX0saW5kZXg6ZnVuY3Rpb24oZSl7cmV0dXJuIGU/InN0cmluZyI9PXR5cGVvZiBl
P1ouY2FsbChvZShlKSx0aGlzWzBdKTpaLmNhbGwodGhpcyxlLmpxdWVyeT9lWzBdOmUpOnRoaXNb
MF0mJnRoaXNbMF0ucGFyZW50Tm9kZT90aGlzLmZpcnN0KCkucHJldkFsbCgpLmxlbmd0aDotMX0s
YWRkOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKG9lLnVuaXF1ZVNvcnQob2Uu
bWVyZ2UodGhpcy5nZXQoKSxvZShlLHQpKSkpfSxhZGRCYWNrOmZ1bmN0aW9uKGUpe3JldHVybiB0
aGlzLmFkZChudWxsPT1lP3RoaXMucHJldk9iamVjdDp0aGlzLnByZXZPYmplY3QuZmlsdGVyKGUp
KX19KSxvZS5lYWNoKHtwYXJlbnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5wYXJlbnROb2RlO3JldHVy
biB0JiYxMSE9PXQubm9kZVR5cGU/dDpudWxsfSxwYXJlbnRzOmZ1bmN0aW9uKGUpe3JldHVybiBm
ZShlLCJwYXJlbnROb2RlIil9LHBhcmVudHNVbnRpbDpmdW5jdGlvbihlLHQscil7cmV0dXJuIGZl
KGUsInBhcmVudE5vZGUiLHIpfSxuZXh0OmZ1bmN0aW9uKGUpe3JldHVybiBpKGUsIm5leHRTaWJs
aW5nIil9LHByZXY6ZnVuY3Rpb24oZSl7cmV0dXJuIGkoZSwicHJldmlvdXNTaWJsaW5nIil9LG5l
eHRBbGw6ZnVuY3Rpb24oZSl7cmV0dXJuIGZlKGUsIm5leHRTaWJsaW5nIil9LHByZXZBbGw6ZnVu
Y3Rpb24oZSl7cmV0dXJuIGZlKGUsInByZXZpb3VzU2libGluZyIpfSxuZXh0VW50aWw6ZnVuY3Rp
b24oZSx0LHIpe3JldHVybiBmZShlLCJuZXh0U2libGluZyIscil9LHByZXZVbnRpbDpmdW5jdGlv
bihlLHQscil7cmV0dXJuIGZlKGUsInByZXZpb3VzU2libGluZyIscil9LHNpYmxpbmdzOmZ1bmN0
aW9uKGUpe3JldHVybiBkZSgoZS5wYXJlbnROb2RlfHx7fSkuZmlyc3RDaGlsZCxlKX0sY2hpbGRy
ZW46ZnVuY3Rpb24oZSl7cmV0dXJuIGRlKGUuZmlyc3RDaGlsZCl9LGNvbnRlbnRzOmZ1bmN0aW9u
KGUpe3JldHVybiBlLmNvbnRlbnREb2N1bWVudHx8b2UubWVyZ2UoW10sZS5jaGlsZE5vZGVzKX19
LGZ1bmN0aW9uKGUsdCl7b2UuZm5bZV09ZnVuY3Rpb24ocixuKXt2YXIgaT1vZS5tYXAodGhpcyx0
LHIpO3JldHVybiJVbnRpbCIhPT1lLnNsaWNlKC01KSYmKG49ciksbiYmInN0cmluZyI9PXR5cGVv
ZiBuJiYoaT1vZS5maWx0ZXIobixpKSksdGhpcy5sZW5ndGg+MSYmKF9lW2VdfHxvZS51bmlxdWVT
b3J0KGkpLHllLnRlc3QoZSkmJmkucmV2ZXJzZSgpKSx0aGlzLnB1c2hTdGFjayhpKX19KTt2YXIg
d2U9L1xTKy9nO29lLkNhbGxiYWNrcz1mdW5jdGlvbihlKXtlPSJzdHJpbmciPT10eXBlb2YgZT9v
KGUpOm9lLmV4dGVuZCh7fSxlKTt2YXIgdCxyLG4saSxhPVtdLHM9W10sdT0tMSxsPWZ1bmN0aW9u
KCl7Zm9yKGk9ZS5vbmNlLG49dD0hMDtzLmxlbmd0aDt1PS0xKWZvcihyPXMuc2hpZnQoKTsrK3U8
YS5sZW5ndGg7KWFbdV0uYXBwbHkoclswXSxyWzFdKT09PSExJiZlLnN0b3BPbkZhbHNlJiYodT1h
Lmxlbmd0aCxyPSExKTtlLm1lbW9yeXx8KHI9ITEpLHQ9ITEsaSYmKGE9cj9bXToiIil9LGM9e2Fk
ZDpmdW5jdGlvbigpe3JldHVybiBhJiYociYmIXQmJih1PWEubGVuZ3RoLTEscy5wdXNoKHIpKSxm
dW5jdGlvbiB0KHIpe29lLmVhY2gocixmdW5jdGlvbihyLG4pe29lLmlzRnVuY3Rpb24obik/ZS51
bmlxdWUmJmMuaGFzKG4pfHxhLnB1c2gobik6biYmbi5sZW5ndGgmJiJzdHJpbmciIT09b2UudHlw
ZShuKSYmdChuKX0pfShhcmd1bWVudHMpLHImJiF0JiZsKCkpLHRoaXN9LHJlbW92ZTpmdW5jdGlv
bigpe3JldHVybiBvZS5lYWNoKGFyZ3VtZW50cyxmdW5jdGlvbihlLHQpe2Zvcih2YXIgcjsocj1v
ZS5pbkFycmF5KHQsYSxyKSk+LTE7KWEuc3BsaWNlKHIsMSkscjw9dSYmdS0tfSksdGhpc30saGFz
OmZ1bmN0aW9uKGUpe3JldHVybiBlP29lLmluQXJyYXkoZSxhKT4tMTphLmxlbmd0aD4wfSxlbXB0
eTpmdW5jdGlvbigpe3JldHVybiBhJiYoYT1bXSksdGhpc30sZGlzYWJsZTpmdW5jdGlvbigpe3Jl
dHVybiBpPXM9W10sYT1yPSIiLHRoaXN9LGRpc2FibGVkOmZ1bmN0aW9uKCl7cmV0dXJuIWF9LGxv
Y2s6ZnVuY3Rpb24oKXtyZXR1cm4gaT1zPVtdLHJ8fChhPXI9IiIpLHRoaXN9LGxvY2tlZDpmdW5j
dGlvbigpe3JldHVybiEhaX0sZmlyZVdpdGg6ZnVuY3Rpb24oZSxyKXtyZXR1cm4gaXx8KHI9cnx8
W10scj1bZSxyLnNsaWNlP3Iuc2xpY2UoKTpyXSxzLnB1c2gociksdHx8bCgpKSx0aGlzfSxmaXJl
OmZ1bmN0aW9uKCl7cmV0dXJuIGMuZmlyZVdpdGgodGhpcyxhcmd1bWVudHMpLHRoaXN9LGZpcmVk
OmZ1bmN0aW9uKCl7cmV0dXJuISFufX07cmV0dXJuIGN9LG9lLmV4dGVuZCh7RGVmZXJyZWQ6ZnVu
Y3Rpb24oZSl7dmFyIHQ9W1sicmVzb2x2ZSIsImRvbmUiLG9lLkNhbGxiYWNrcygib25jZSBtZW1v
cnkiKSwicmVzb2x2ZWQiXSxbInJlamVjdCIsImZhaWwiLG9lLkNhbGxiYWNrcygib25jZSBtZW1v
cnkiKSwicmVqZWN0ZWQiXSxbIm5vdGlmeSIsInByb2dyZXNzIixvZS5DYWxsYmFja3MoIm1lbW9y
eSIpXV0scj0icGVuZGluZyIsbj17c3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gcn0sYWx3YXlzOmZ1
bmN0aW9uKCl7cmV0dXJuIGkuZG9uZShhcmd1bWVudHMpLmZhaWwoYXJndW1lbnRzKSx0aGlzfSx0
aGVuOmZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzO3JldHVybiBvZS5EZWZlcnJlZChmdW5jdGlv
bihyKXtvZS5lYWNoKHQsZnVuY3Rpb24odCxvKXt2YXIgYT1vZS5pc0Z1bmN0aW9uKGVbdF0pJiZl
W3RdO2lbb1sxXV0oZnVuY3Rpb24oKXt2YXIgZT1hJiZhLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtl
JiZvZS5pc0Z1bmN0aW9uKGUucHJvbWlzZSk/ZS5wcm9taXNlKCkucHJvZ3Jlc3Moci5ub3RpZnkp
LmRvbmUoci5yZXNvbHZlKS5mYWlsKHIucmVqZWN0KTpyW29bMF0rIldpdGgiXSh0aGlzPT09bj9y
LnByb21pc2UoKTp0aGlzLGE/W2VdOmFyZ3VtZW50cyl9KX0pLGU9bnVsbH0pLnByb21pc2UoKX0s
cHJvbWlzZTpmdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9ZT9vZS5leHRlbmQoZSxuKTpufX0saT17
fTtyZXR1cm4gbi5waXBlPW4udGhlbixvZS5lYWNoKHQsZnVuY3Rpb24oZSxvKXt2YXIgYT1vWzJd
LHM9b1szXTtuW29bMV1dPWEuYWRkLHMmJmEuYWRkKGZ1bmN0aW9uKCl7cj1zfSx0WzFeZV1bMl0u
ZGlzYWJsZSx0WzJdWzJdLmxvY2spLGlbb1swXV09ZnVuY3Rpb24oKXtyZXR1cm4gaVtvWzBdKyJX
aXRoIl0odGhpcz09PWk/bjp0aGlzLGFyZ3VtZW50cyksdGhpc30saVtvWzBdKyJXaXRoIl09YS5m
aXJlV2l0aH0pLG4ucHJvbWlzZShpKSxlJiZlLmNhbGwoaSxpKSxpfSx3aGVuOmZ1bmN0aW9uKGUp
e3ZhciB0LHIsbixpPTAsbz1ZLmNhbGwoYXJndW1lbnRzKSxhPW8ubGVuZ3RoLHM9MSE9PWF8fGUm
Jm9lLmlzRnVuY3Rpb24oZS5wcm9taXNlKT9hOjAsdT0xPT09cz9lOm9lLkRlZmVycmVkKCksbD1m
dW5jdGlvbihlLHIsbil7cmV0dXJuIGZ1bmN0aW9uKGkpe3JbZV09dGhpcyxuW2VdPWFyZ3VtZW50
cy5sZW5ndGg+MT9ZLmNhbGwoYXJndW1lbnRzKTppLG49PT10P3Uubm90aWZ5V2l0aChyLG4pOi0t
c3x8dS5yZXNvbHZlV2l0aChyLG4pfX07aWYoYT4xKWZvcih0PW5ldyBBcnJheShhKSxyPW5ldyBB
cnJheShhKSxuPW5ldyBBcnJheShhKTtpPGE7aSsrKW9baV0mJm9lLmlzRnVuY3Rpb24ob1tpXS5w
cm9taXNlKT9vW2ldLnByb21pc2UoKS5wcm9ncmVzcyhsKGkscix0KSkuZG9uZShsKGksbixvKSku
ZmFpbCh1LnJlamVjdCk6LS1zO3JldHVybiBzfHx1LnJlc29sdmVXaXRoKG4sbyksdS5wcm9taXNl
KCl9fSk7dmFyIHhlO29lLmZuLnJlYWR5PWZ1bmN0aW9uKGUpe3JldHVybiBvZS5yZWFkeS5wcm9t
aXNlKCkuZG9uZShlKSx0aGlzfSxvZS5leHRlbmQoe2lzUmVhZHk6ITEscmVhZHlXYWl0OjEsaG9s
ZFJlYWR5OmZ1bmN0aW9uKGUpe2U/b2UucmVhZHlXYWl0Kys6b2UucmVhZHkoITApfSxyZWFkeTpm
dW5jdGlvbihlKXsoZT09PSEwPy0tb2UucmVhZHlXYWl0Om9lLmlzUmVhZHkpfHwob2UuaXNSZWFk
eT0hMCxlIT09ITAmJi0tb2UucmVhZHlXYWl0PjB8fCh4ZS5yZXNvbHZlV2l0aChHLFtvZV0pLG9l
LmZuLnRyaWdnZXJIYW5kbGVyJiYob2UoRykudHJpZ2dlckhhbmRsZXIoInJlYWR5Iiksb2UoRyku
b2ZmKCJyZWFkeSIpKSkpfX0pLG9lLnJlYWR5LnByb21pc2U9ZnVuY3Rpb24odCl7cmV0dXJuIHhl
fHwoeGU9b2UuRGVmZXJyZWQoKSwiY29tcGxldGUiPT09Ry5yZWFkeVN0YXRlfHwibG9hZGluZyIh
PT1HLnJlYWR5U3RhdGUmJiFHLmRvY3VtZW50RWxlbWVudC5kb1Njcm9sbD9lLnNldFRpbWVvdXQo
b2UucmVhZHkpOihHLmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLGEpLGUuYWRk
RXZlbnRMaXN0ZW5lcigibG9hZCIsYSkpKSx4ZS5wcm9taXNlKHQpfSxvZS5yZWFkeS5wcm9taXNl
KCk7dmFyIGtlPWZ1bmN0aW9uKGUsdCxyLG4saSxvLGEpe3ZhciBzPTAsdT1lLmxlbmd0aCxsPW51
bGw9PXI7aWYoIm9iamVjdCI9PT1vZS50eXBlKHIpKXtpPSEwO2ZvcihzIGluIHIpa2UoZSx0LHMs
cltzXSwhMCxvLGEpfWVsc2UgaWYodm9pZCAwIT09biYmKGk9ITAsb2UuaXNGdW5jdGlvbihuKXx8
KGE9ITApLGwmJihhPyh0LmNhbGwoZSxuKSx0PW51bGwpOihsPXQsdD1mdW5jdGlvbihlLHQscil7
cmV0dXJuIGwuY2FsbChvZShlKSxyKX0pKSx0KSlmb3IoO3M8dTtzKyspdChlW3NdLHIsYT9uOm4u
Y2FsbChlW3NdLHMsdChlW3NdLHIpKSk7cmV0dXJuIGk/ZTpsP3QuY2FsbChlKTp1P3QoZVswXSxy
KTpvfSxDZT1mdW5jdGlvbihlKXtyZXR1cm4gMT09PWUubm9kZVR5cGV8fDk9PT1lLm5vZGVUeXBl
fHwhK2Uubm9kZVR5cGV9O3MudWlkPTEscy5wcm90b3R5cGU9e3JlZ2lzdGVyOmZ1bmN0aW9uKGUs
dCl7dmFyIHI9dHx8e307cmV0dXJuIGUubm9kZVR5cGU/ZVt0aGlzLmV4cGFuZG9dPXI6T2JqZWN0
LmRlZmluZVByb3BlcnR5KGUsdGhpcy5leHBhbmRvLHt2YWx1ZTpyLHdyaXRhYmxlOiEwLGNvbmZp
Z3VyYWJsZTohMH0pLGVbdGhpcy5leHBhbmRvXX0sY2FjaGU6ZnVuY3Rpb24oZSl7aWYoIUNlKGUp
KXJldHVybnt9O3ZhciB0PWVbdGhpcy5leHBhbmRvXTtyZXR1cm4gdHx8KHQ9e30sQ2UoZSkmJihl
Lm5vZGVUeXBlP2VbdGhpcy5leHBhbmRvXT10Ok9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHRoaXMu
ZXhwYW5kbyx7dmFsdWU6dCxjb25maWd1cmFibGU6ITB9KSkpLHR9LHNldDpmdW5jdGlvbihlLHQs
cil7dmFyIG4saT10aGlzLmNhY2hlKGUpO2lmKCJzdHJpbmciPT10eXBlb2YgdClpW3RdPXI7ZWxz
ZSBmb3IobiBpbiB0KWlbbl09dFtuXTtyZXR1cm4gaX0sZ2V0OmZ1bmN0aW9uKGUsdCl7cmV0dXJu
IHZvaWQgMD09PXQ/dGhpcy5jYWNoZShlKTplW3RoaXMuZXhwYW5kb10mJmVbdGhpcy5leHBhbmRv
XVt0XX0sYWNjZXNzOmZ1bmN0aW9uKGUsdCxyKXt2YXIgbjtyZXR1cm4gdm9pZCAwPT09dHx8dCYm
InN0cmluZyI9PXR5cGVvZiB0JiZ2b2lkIDA9PT1yPyhuPXRoaXMuZ2V0KGUsdCksdm9pZCAwIT09
bj9uOnRoaXMuZ2V0KGUsb2UuY2FtZWxDYXNlKHQpKSk6KHRoaXMuc2V0KGUsdCxyKSx2b2lkIDAh
PT1yP3I6dCl9LHJlbW92ZTpmdW5jdGlvbihlLHQpe3ZhciByLG4saSxvPWVbdGhpcy5leHBhbmRv
XTtpZih2b2lkIDAhPT1vKXtpZih2b2lkIDA9PT10KXRoaXMucmVnaXN0ZXIoZSk7ZWxzZXtvZS5p
c0FycmF5KHQpP249dC5jb25jYXQodC5tYXAob2UuY2FtZWxDYXNlKSk6KGk9b2UuY2FtZWxDYXNl
KHQpLHQgaW4gbz9uPVt0LGldOihuPWksbj1uIGluIG8/W25dOm4ubWF0Y2god2UpfHxbXSkpLHI9
bi5sZW5ndGg7Zm9yKDtyLS07KWRlbGV0ZSBvW25bcl1dfSh2b2lkIDA9PT10fHxvZS5pc0VtcHR5
T2JqZWN0KG8pKSYmKGUubm9kZVR5cGU/ZVt0aGlzLmV4cGFuZG9dPXZvaWQgMDpkZWxldGUgZVt0
aGlzLmV4cGFuZG9dKX19LGhhc0RhdGE6ZnVuY3Rpb24oZSl7dmFyIHQ9ZVt0aGlzLmV4cGFuZG9d
O3JldHVybiB2b2lkIDAhPT10JiYhb2UuaXNFbXB0eU9iamVjdCh0KX19O3ZhciBFZT1uZXcgcyxP
ZT1uZXcgcyxUZT0vXig/Olx7W1x3XFddKlx9fFxbW1x3XFddKlxdKSQvLE5lPS9bQS1aXS9nO29l
LmV4dGVuZCh7aGFzRGF0YTpmdW5jdGlvbihlKXtyZXR1cm4gT2UuaGFzRGF0YShlKXx8RWUuaGFz
RGF0YShlKX0sZGF0YTpmdW5jdGlvbihlLHQscil7cmV0dXJuIE9lLmFjY2VzcyhlLHQscil9LHJl
bW92ZURhdGE6ZnVuY3Rpb24oZSx0KXtPZS5yZW1vdmUoZSx0KX0sX2RhdGE6ZnVuY3Rpb24oZSx0
LHIpe3JldHVybiBFZS5hY2Nlc3MoZSx0LHIpfSxfcmVtb3ZlRGF0YTpmdW5jdGlvbihlLHQpe0Vl
LnJlbW92ZShlLHQpfX0pLG9lLmZuLmV4dGVuZCh7ZGF0YTpmdW5jdGlvbihlLHQpe3ZhciByLG4s
aSxvPXRoaXNbMF0sYT1vJiZvLmF0dHJpYnV0ZXM7aWYodm9pZCAwPT09ZSl7aWYodGhpcy5sZW5n
dGgmJihpPU9lLmdldChvKSwxPT09by5ub2RlVHlwZSYmIUVlLmdldChvLCJoYXNEYXRhQXR0cnMi
KSkpe2ZvcihyPWEubGVuZ3RoO3ItLTspYVtyXSYmKG49YVtyXS5uYW1lLDA9PT1uLmluZGV4T2Yo
ImRhdGEtIikmJihuPW9lLmNhbWVsQ2FzZShuLnNsaWNlKDUpKSx1KG8sbixpW25dKSkpO0VlLnNl
dChvLCJoYXNEYXRhQXR0cnMiLCEwKX1yZXR1cm4gaX1yZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGU/
dGhpcy5lYWNoKGZ1bmN0aW9uKCl7T2Uuc2V0KHRoaXMsZSl9KTprZSh0aGlzLGZ1bmN0aW9uKHQp
e3ZhciByLG47aWYobyYmdm9pZCAwPT09dCl7aWYocj1PZS5nZXQobyxlKXx8T2UuZ2V0KG8sZS5y
ZXBsYWNlKE5lLCItJCYiKS50b0xvd2VyQ2FzZSgpKSx2b2lkIDAhPT1yKXJldHVybiByO2lmKG49
b2UuY2FtZWxDYXNlKGUpLHI9T2UuZ2V0KG8sbiksdm9pZCAwIT09cilyZXR1cm4gcjtpZihyPXUo
byxuLHZvaWQgMCksdm9pZCAwIT09cilyZXR1cm4gcn1lbHNlIG49b2UuY2FtZWxDYXNlKGUpLHRo
aXMuZWFjaChmdW5jdGlvbigpe3ZhciByPU9lLmdldCh0aGlzLG4pO09lLnNldCh0aGlzLG4sdCks
ZS5pbmRleE9mKCItIik+LTEmJnZvaWQgMCE9PXImJk9lLnNldCh0aGlzLGUsdCl9KX0sbnVsbCx0
LGFyZ3VtZW50cy5sZW5ndGg+MSxudWxsLCEwKX0scmVtb3ZlRGF0YTpmdW5jdGlvbihlKXtyZXR1
cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7T2UucmVtb3ZlKHRoaXMsZSl9KX19KSxvZS5leHRlbmQo
e3F1ZXVlOmZ1bmN0aW9uKGUsdCxyKXt2YXIgbjtpZihlKXJldHVybiB0PSh0fHwiZngiKSsicXVl
dWUiLG49RWUuZ2V0KGUsdCksciYmKCFufHxvZS5pc0FycmF5KHIpP249RWUuYWNjZXNzKGUsdCxv
ZS5tYWtlQXJyYXkocikpOm4ucHVzaChyKSksbnx8W119LGRlcXVldWU6ZnVuY3Rpb24oZSx0KXt0
PXR8fCJmeCI7dmFyIHI9b2UucXVldWUoZSx0KSxuPXIubGVuZ3RoLGk9ci5zaGlmdCgpLG89b2Uu
X3F1ZXVlSG9va3MoZSx0KSxhPWZ1bmN0aW9uKCl7b2UuZGVxdWV1ZShlLHQpfTsiaW5wcm9ncmVz
cyI9PT1pJiYoaT1yLnNoaWZ0KCksbi0tKSxpJiYoImZ4Ij09PXQmJnIudW5zaGlmdCgiaW5wcm9n
cmVzcyIpLGRlbGV0ZSBvLnN0b3AsaS5jYWxsKGUsYSxvKSksIW4mJm8mJm8uZW1wdHkuZmlyZSgp
fSxfcXVldWVIb29rczpmdW5jdGlvbihlLHQpe3ZhciByPXQrInF1ZXVlSG9va3MiO3JldHVybiBF
ZS5nZXQoZSxyKXx8RWUuYWNjZXNzKGUscix7ZW1wdHk6b2UuQ2FsbGJhY2tzKCJvbmNlIG1lbW9y
eSIpLmFkZChmdW5jdGlvbigpe0VlLnJlbW92ZShlLFt0KyJxdWV1ZSIscl0pfSl9KX19KSxvZS5m
bi5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9uKGUsdCl7dmFyIHI9MjtyZXR1cm4ic3RyaW5nIiE9dHlw
ZW9mIGUmJih0PWUsZT0iZngiLHItLSksYXJndW1lbnRzLmxlbmd0aDxyP29lLnF1ZXVlKHRoaXNb
MF0sZSk6dm9pZCAwPT09dD90aGlzOnRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciByPW9lLnF1ZXVl
KHRoaXMsZSx0KTtvZS5fcXVldWVIb29rcyh0aGlzLGUpLCJmeCI9PT1lJiYiaW5wcm9ncmVzcyIh
PT1yWzBdJiZvZS5kZXF1ZXVlKHRoaXMsZSl9KX0sZGVxdWV1ZTpmdW5jdGlvbihlKXtyZXR1cm4g
dGhpcy5lYWNoKGZ1bmN0aW9uKCl7b2UuZGVxdWV1ZSh0aGlzLGUpfSl9LGNsZWFyUXVldWU6ZnVu
Y3Rpb24oZSl7cmV0dXJuIHRoaXMucXVldWUoZXx8ImZ4IixbXSl9LHByb21pc2U6ZnVuY3Rpb24o
ZSx0KXt2YXIgcixuPTEsaT1vZS5EZWZlcnJlZCgpLG89dGhpcyxhPXRoaXMubGVuZ3RoLHM9ZnVu
Y3Rpb24oKXstLW58fGkucmVzb2x2ZVdpdGgobyxbb10pfTtmb3IoInN0cmluZyIhPXR5cGVvZiBl
JiYodD1lLGU9dm9pZCAwKSxlPWV8fCJmeCI7YS0tOylyPUVlLmdldChvW2FdLGUrInF1ZXVlSG9v
a3MiKSxyJiZyLmVtcHR5JiYobisrLHIuZW1wdHkuYWRkKHMpKTtyZXR1cm4gcygpLGkucHJvbWlz
ZSh0KX19KTt2YXIgU2U9L1srLV0/KD86XGQqXC58KVxkKyg/OltlRV1bKy1dP1xkK3wpLy5zb3Vy
Y2UsQWU9bmV3IFJlZ0V4cCgiXig/OihbKy1dKT18KSgiK1NlKyIpKFthLXolXSopJCIsImkiKSxQ
ZT1bIlRvcCIsIlJpZ2h0IiwiQm90dG9tIiwiTGVmdCJdLGplPWZ1bmN0aW9uKGUsdCl7cmV0dXJu
IGU9dHx8ZSwibm9uZSI9PT1vZS5jc3MoZSwiZGlzcGxheSIpfHwhb2UuY29udGFpbnMoZS5vd25l
ckRvY3VtZW50LGUpfSxSZT0vXig/OmNoZWNrYm94fHJhZGlvKSQvaSxMZT0vPChbXHc6LV0rKS8s
RGU9L14kfFwvKD86amF2YXxlY21hKXNjcmlwdC9pLE1lPXtvcHRpb246WzEsIjxzZWxlY3QgbXVs
dGlwbGU9J211bHRpcGxlJz4iLCI8L3NlbGVjdD4iXSx0aGVhZDpbMSwiPHRhYmxlPiIsIjwvdGFi
bGU+Il0sY29sOlsyLCI8dGFibGU+PGNvbGdyb3VwPiIsIjwvY29sZ3JvdXA+PC90YWJsZT4iXSx0
cjpbMiwiPHRhYmxlPjx0Ym9keT4iLCI8L3Rib2R5PjwvdGFibGU+Il0sdGQ6WzMsIjx0YWJsZT48
dGJvZHk+PHRyPiIsIjwvdHI+PC90Ym9keT48L3RhYmxlPiJdLF9kZWZhdWx0OlswLCIiLCIiXX07
TWUub3B0Z3JvdXA9TWUub3B0aW9uLE1lLnRib2R5PU1lLnRmb290PU1lLmNvbGdyb3VwPU1lLmNh
cHRpb249TWUudGhlYWQsTWUudGg9TWUudGQ7dmFyIEllPS88fCYjP1x3KzsvOyFmdW5jdGlvbigp
e3ZhciBlPUcuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLHQ9ZS5hcHBlbmRDaGlsZChHLmNyZWF0
ZUVsZW1lbnQoImRpdiIpKSxyPUcuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTtyLnNldEF0dHJpYnV0
ZSgidHlwZSIsInJhZGlvIiksci5zZXRBdHRyaWJ1dGUoImNoZWNrZWQiLCJjaGVja2VkIiksci5z
ZXRBdHRyaWJ1dGUoIm5hbWUiLCJ0IiksdC5hcHBlbmRDaGlsZChyKSxuZS5jaGVja0Nsb25lPXQu
Y2xvbmVOb2RlKCEwKS5jbG9uZU5vZGUoITApLmxhc3RDaGlsZC5jaGVja2VkLHQuaW5uZXJIVE1M
PSI8dGV4dGFyZWE+eDwvdGV4dGFyZWE+IixuZS5ub0Nsb25lQ2hlY2tlZD0hIXQuY2xvbmVOb2Rl
KCEwKS5sYXN0Q2hpbGQuZGVmYXVsdFZhbHVlfSgpO3ZhciBGZT0vXmtleS8sSGU9L14oPzptb3Vz
ZXxwb2ludGVyfGNvbnRleHRtZW51fGRyYWd8ZHJvcCl8Y2xpY2svLFZlPS9eKFteLl0qKSg/Olwu
KC4rKXwpLztvZS5ldmVudD17Z2xvYmFsOnt9LGFkZDpmdW5jdGlvbihlLHQscixuLGkpe3ZhciBv
LGEscyx1LGwsYyxmLGQscCxoLG0sdj1FZS5nZXQoZSk7aWYodilmb3Ioci5oYW5kbGVyJiYobz1y
LHI9by5oYW5kbGVyLGk9by5zZWxlY3Rvciksci5ndWlkfHwoci5ndWlkPW9lLmd1aWQrKyksKHU9
di5ldmVudHMpfHwodT12LmV2ZW50cz17fSksKGE9di5oYW5kbGUpfHwoYT12LmhhbmRsZT1mdW5j
dGlvbih0KXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIG9lJiZvZS5ldmVudC50cmlnZ2VyZWQh
PT10LnR5cGU/b2UuZXZlbnQuZGlzcGF0Y2guYXBwbHkoZSxhcmd1bWVudHMpOnZvaWQgMH0pLHQ9
KHR8fCIiKS5tYXRjaCh3ZSl8fFsiIl0sbD10Lmxlbmd0aDtsLS07KXM9VmUuZXhlYyh0W2xdKXx8
W10scD1tPXNbMV0saD0oc1syXXx8IiIpLnNwbGl0KCIuIikuc29ydCgpLHAmJihmPW9lLmV2ZW50
LnNwZWNpYWxbcF18fHt9LHA9KGk/Zi5kZWxlZ2F0ZVR5cGU6Zi5iaW5kVHlwZSl8fHAsZj1vZS5l
dmVudC5zcGVjaWFsW3BdfHx7fSxjPW9lLmV4dGVuZCh7dHlwZTpwLG9yaWdUeXBlOm0sZGF0YTpu
LGhhbmRsZXI6cixndWlkOnIuZ3VpZCxzZWxlY3RvcjppLG5lZWRzQ29udGV4dDppJiZvZS5leHBy
Lm1hdGNoLm5lZWRzQ29udGV4dC50ZXN0KGkpLG5hbWVzcGFjZTpoLmpvaW4oIi4iKX0sbyksKGQ9
dVtwXSl8fChkPXVbcF09W10sZC5kZWxlZ2F0ZUNvdW50PTAsZi5zZXR1cCYmZi5zZXR1cC5jYWxs
KGUsbixoLGEpIT09ITF8fGUuYWRkRXZlbnRMaXN0ZW5lciYmZS5hZGRFdmVudExpc3RlbmVyKHAs
YSkpLGYuYWRkJiYoZi5hZGQuY2FsbChlLGMpLGMuaGFuZGxlci5ndWlkfHwoYy5oYW5kbGVyLmd1
aWQ9ci5ndWlkKSksaT9kLnNwbGljZShkLmRlbGVnYXRlQ291bnQrKywwLGMpOmQucHVzaChjKSxv
ZS5ldmVudC5nbG9iYWxbcF09ITApfSxyZW1vdmU6ZnVuY3Rpb24oZSx0LHIsbixpKXt2YXIgbyxh
LHMsdSxsLGMsZixkLHAsaCxtLHY9RWUuaGFzRGF0YShlKSYmRWUuZ2V0KGUpO2lmKHYmJih1PXYu
ZXZlbnRzKSl7Zm9yKHQ9KHR8fCIiKS5tYXRjaCh3ZSl8fFsiIl0sbD10Lmxlbmd0aDtsLS07KWlm
KHM9VmUuZXhlYyh0W2xdKXx8W10scD1tPXNbMV0saD0oc1syXXx8IiIpLnNwbGl0KCIuIikuc29y
dCgpLHApe2ZvcihmPW9lLmV2ZW50LnNwZWNpYWxbcF18fHt9LHA9KG4/Zi5kZWxlZ2F0ZVR5cGU6
Zi5iaW5kVHlwZSl8fHAsZD11W3BdfHxbXSxzPXNbMl0mJm5ldyBSZWdFeHAoIihefFxcLikiK2gu
am9pbigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIiksYT1vPWQubGVuZ3RoO28tLTspYz1kW29d
LCFpJiZtIT09Yy5vcmlnVHlwZXx8ciYmci5ndWlkIT09Yy5ndWlkfHxzJiYhcy50ZXN0KGMubmFt
ZXNwYWNlKXx8biYmbiE9PWMuc2VsZWN0b3ImJigiKioiIT09bnx8IWMuc2VsZWN0b3IpfHwoZC5z
cGxpY2UobywxKSxjLnNlbGVjdG9yJiZkLmRlbGVnYXRlQ291bnQtLSxmLnJlbW92ZSYmZi5yZW1v
dmUuY2FsbChlLGMpKTthJiYhZC5sZW5ndGgmJihmLnRlYXJkb3duJiZmLnRlYXJkb3duLmNhbGwo
ZSxoLHYuaGFuZGxlKSE9PSExfHxvZS5yZW1vdmVFdmVudChlLHAsdi5oYW5kbGUpLGRlbGV0ZSB1
W3BdKX1lbHNlIGZvcihwIGluIHUpb2UuZXZlbnQucmVtb3ZlKGUscCt0W2xdLHIsbiwhMCk7b2Uu
aXNFbXB0eU9iamVjdCh1KSYmRWUucmVtb3ZlKGUsImhhbmRsZSBldmVudHMiKX19LGRpc3BhdGNo
OmZ1bmN0aW9uKGUpe2U9b2UuZXZlbnQuZml4KGUpO3ZhciB0LHIsbixpLG8sYT1bXSxzPVkuY2Fs
bChhcmd1bWVudHMpLHU9KEVlLmdldCh0aGlzLCJldmVudHMiKXx8e30pW2UudHlwZV18fFtdLGw9
b2UuZXZlbnQuc3BlY2lhbFtlLnR5cGVdfHx7fTtpZihzWzBdPWUsZS5kZWxlZ2F0ZVRhcmdldD10
aGlzLCFsLnByZURpc3BhdGNofHxsLnByZURpc3BhdGNoLmNhbGwodGhpcyxlKSE9PSExKXtmb3Io
YT1vZS5ldmVudC5oYW5kbGVycy5jYWxsKHRoaXMsZSx1KSx0PTA7KGk9YVt0KytdKSYmIWUuaXNQ
cm9wYWdhdGlvblN0b3BwZWQoKTspZm9yKGUuY3VycmVudFRhcmdldD1pLmVsZW0scj0wOyhvPWku
aGFuZGxlcnNbcisrXSkmJiFlLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkKCk7KWUucm5h
bWVzcGFjZSYmIWUucm5hbWVzcGFjZS50ZXN0KG8ubmFtZXNwYWNlKXx8KGUuaGFuZGxlT2JqPW8s
ZS5kYXRhPW8uZGF0YSxuPSgob2UuZXZlbnQuc3BlY2lhbFtvLm9yaWdUeXBlXXx8e30pLmhhbmRs
ZXx8by5oYW5kbGVyKS5hcHBseShpLmVsZW0scyksdm9pZCAwIT09biYmKGUucmVzdWx0PW4pPT09
ITEmJihlLnByZXZlbnREZWZhdWx0KCksZS5zdG9wUHJvcGFnYXRpb24oKSkpO3JldHVybiBsLnBv
c3REaXNwYXRjaCYmbC5wb3N0RGlzcGF0Y2guY2FsbCh0aGlzLGUpLGUucmVzdWx0fX0saGFuZGxl
cnM6ZnVuY3Rpb24oZSx0KXt2YXIgcixuLGksbyxhPVtdLHM9dC5kZWxlZ2F0ZUNvdW50LHU9ZS50
YXJnZXQ7aWYocyYmdS5ub2RlVHlwZSYmKCJjbGljayIhPT1lLnR5cGV8fGlzTmFOKGUuYnV0dG9u
KXx8ZS5idXR0b248MSkpZm9yKDt1IT09dGhpczt1PXUucGFyZW50Tm9kZXx8dGhpcylpZigxPT09
dS5ub2RlVHlwZSYmKHUuZGlzYWJsZWQhPT0hMHx8ImNsaWNrIiE9PWUudHlwZSkpe2ZvcihuPVtd
LHI9MDtyPHM7cisrKW89dFtyXSxpPW8uc2VsZWN0b3IrIiAiLHZvaWQgMD09PW5baV0mJihuW2ld
PW8ubmVlZHNDb250ZXh0P29lKGksdGhpcykuaW5kZXgodSk+LTE6b2UuZmluZChpLHRoaXMsbnVs
bCxbdV0pLmxlbmd0aCksbltpXSYmbi5wdXNoKG8pO24ubGVuZ3RoJiZhLnB1c2goe2VsZW06dSxo
YW5kbGVyczpufSl9cmV0dXJuIHM8dC5sZW5ndGgmJmEucHVzaCh7ZWxlbTp0aGlzLGhhbmRsZXJz
OnQuc2xpY2Uocyl9KSxhfSxwcm9wczoiYWx0S2V5IGJ1YmJsZXMgY2FuY2VsYWJsZSBjdHJsS2V5
IGN1cnJlbnRUYXJnZXQgZGV0YWlsIGV2ZW50UGhhc2UgbWV0YUtleSByZWxhdGVkVGFyZ2V0IHNo
aWZ0S2V5IHRhcmdldCB0aW1lU3RhbXAgdmlldyB3aGljaCIuc3BsaXQoIiAiKSxmaXhIb29rczp7
fSxrZXlIb29rczp7cHJvcHM6ImNoYXIgY2hhckNvZGUga2V5IGtleUNvZGUiLnNwbGl0KCIgIiks
ZmlsdGVyOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIG51bGw9PWUud2hpY2gmJihlLndoaWNoPW51bGwh
PXQuY2hhckNvZGU/dC5jaGFyQ29kZTp0LmtleUNvZGUpLGV9fSxtb3VzZUhvb2tzOntwcm9wczoi
YnV0dG9uIGJ1dHRvbnMgY2xpZW50WCBjbGllbnRZIG9mZnNldFggb2Zmc2V0WSBwYWdlWCBwYWdl
WSBzY3JlZW5YIHNjcmVlblkgdG9FbGVtZW50Ii5zcGxpdCgiICIpLGZpbHRlcjpmdW5jdGlvbihl
LHQpe3ZhciByLG4saSxvPXQuYnV0dG9uO3JldHVybiBudWxsPT1lLnBhZ2VYJiZudWxsIT10LmNs
aWVudFgmJihyPWUudGFyZ2V0Lm93bmVyRG9jdW1lbnR8fEcsbj1yLmRvY3VtZW50RWxlbWVudCxp
PXIuYm9keSxlLnBhZ2VYPXQuY2xpZW50WCsobiYmbi5zY3JvbGxMZWZ0fHxpJiZpLnNjcm9sbExl
ZnR8fDApLShuJiZuLmNsaWVudExlZnR8fGkmJmkuY2xpZW50TGVmdHx8MCksZS5wYWdlWT10LmNs
aWVudFkrKG4mJm4uc2Nyb2xsVG9wfHxpJiZpLnNjcm9sbFRvcHx8MCktKG4mJm4uY2xpZW50VG9w
fHxpJiZpLmNsaWVudFRvcHx8MCkpLGUud2hpY2h8fHZvaWQgMD09PW98fChlLndoaWNoPTEmbz8x
OjImbz8zOjQmbz8yOjApLGV9fSxmaXg6ZnVuY3Rpb24oZSl7aWYoZVtvZS5leHBhbmRvXSlyZXR1
cm4gZTt2YXIgdCxyLG4saT1lLnR5cGUsbz1lLGE9dGhpcy5maXhIb29rc1tpXTtmb3IoYXx8KHRo
aXMuZml4SG9va3NbaV09YT1IZS50ZXN0KGkpP3RoaXMubW91c2VIb29rczpGZS50ZXN0KGkpP3Ro
aXMua2V5SG9va3M6e30pLG49YS5wcm9wcz90aGlzLnByb3BzLmNvbmNhdChhLnByb3BzKTp0aGlz
LnByb3BzLGU9bmV3IG9lLkV2ZW50KG8pLHQ9bi5sZW5ndGg7dC0tOylyPW5bdF0sZVtyXT1vW3Jd
O3JldHVybiBlLnRhcmdldHx8KGUudGFyZ2V0PUcpLDM9PT1lLnRhcmdldC5ub2RlVHlwZSYmKGUu
dGFyZ2V0PWUudGFyZ2V0LnBhcmVudE5vZGUpLGEuZmlsdGVyP2EuZmlsdGVyKGUsbyk6ZX0sc3Bl
Y2lhbDp7bG9hZDp7bm9CdWJibGU6ITB9LGZvY3VzOnt0cmlnZ2VyOmZ1bmN0aW9uKCl7aWYodGhp
cyE9PW0oKSYmdGhpcy5mb2N1cylyZXR1cm4gdGhpcy5mb2N1cygpLCExfSxkZWxlZ2F0ZVR5cGU6
ImZvY3VzaW4ifSxibHVyOnt0cmlnZ2VyOmZ1bmN0aW9uKCl7aWYodGhpcz09PW0oKSYmdGhpcy5i
bHVyKXJldHVybiB0aGlzLmJsdXIoKSwhMX0sZGVsZWdhdGVUeXBlOiJmb2N1c291dCJ9LGNsaWNr
Ont0cmlnZ2VyOmZ1bmN0aW9uKCl7aWYoImNoZWNrYm94Ij09PXRoaXMudHlwZSYmdGhpcy5jbGlj
ayYmb2Uubm9kZU5hbWUodGhpcywiaW5wdXQiKSlyZXR1cm4gdGhpcy5jbGljaygpLCExfSxfZGVm
YXVsdDpmdW5jdGlvbihlKXtyZXR1cm4gb2Uubm9kZU5hbWUoZS50YXJnZXQsImEiKX19LGJlZm9y
ZXVubG9hZDp7cG9zdERpc3BhdGNoOmZ1bmN0aW9uKGUpe3ZvaWQgMCE9PWUucmVzdWx0JiZlLm9y
aWdpbmFsRXZlbnQmJihlLm9yaWdpbmFsRXZlbnQucmV0dXJuVmFsdWU9ZS5yZXN1bHQpfX19fSxv
ZS5yZW1vdmVFdmVudD1mdW5jdGlvbihlLHQscil7ZS5yZW1vdmVFdmVudExpc3RlbmVyJiZlLnJl
bW92ZUV2ZW50TGlzdGVuZXIodCxyKX0sb2UuRXZlbnQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhp
cyBpbnN0YW5jZW9mIG9lLkV2ZW50PyhlJiZlLnR5cGU/KHRoaXMub3JpZ2luYWxFdmVudD1lLHRo
aXMudHlwZT1lLnR5cGUsdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9ZS5kZWZhdWx0UHJldmVudGVk
fHx2b2lkIDA9PT1lLmRlZmF1bHRQcmV2ZW50ZWQmJmUucmV0dXJuVmFsdWU9PT0hMT9wOmgpOnRo
aXMudHlwZT1lLHQmJm9lLmV4dGVuZCh0aGlzLHQpLHRoaXMudGltZVN0YW1wPWUmJmUudGltZVN0
YW1wfHxvZS5ub3coKSx2b2lkKHRoaXNbb2UuZXhwYW5kb109ITApKTpuZXcgb2UuRXZlbnQoZSx0
KX0sb2UuRXZlbnQucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpvZS5FdmVudCxpc0RlZmF1bHRQcmV2
ZW50ZWQ6aCxpc1Byb3BhZ2F0aW9uU3RvcHBlZDpoLGlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9w
cGVkOmgsaXNTaW11bGF0ZWQ6ITEscHJldmVudERlZmF1bHQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlz
Lm9yaWdpbmFsRXZlbnQ7dGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9cCxlJiYhdGhpcy5pc1NpbXVs
YXRlZCYmZS5wcmV2ZW50RGVmYXVsdCgpfSxzdG9wUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIg
ZT10aGlzLm9yaWdpbmFsRXZlbnQ7dGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1wLGUmJiF0aGlz
LmlzU2ltdWxhdGVkJiZlLnN0b3BQcm9wYWdhdGlvbigpfSxzdG9wSW1tZWRpYXRlUHJvcGFnYXRp
b246ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9yaWdpbmFsRXZlbnQ7dGhpcy5pc0ltbWVkaWF0ZVBy
b3BhZ2F0aW9uU3RvcHBlZD1wLGUmJiF0aGlzLmlzU2ltdWxhdGVkJiZlLnN0b3BJbW1lZGlhdGVQ
cm9wYWdhdGlvbigpLHRoaXMuc3RvcFByb3BhZ2F0aW9uKCl9fSxvZS5lYWNoKHttb3VzZWVudGVy
OiJtb3VzZW92ZXIiLG1vdXNlbGVhdmU6Im1vdXNlb3V0Iixwb2ludGVyZW50ZXI6InBvaW50ZXJv
dmVyIixwb2ludGVybGVhdmU6InBvaW50ZXJvdXQifSxmdW5jdGlvbihlLHQpe29lLmV2ZW50LnNw
ZWNpYWxbZV09e2RlbGVnYXRlVHlwZTp0LGJpbmRUeXBlOnQsaGFuZGxlOmZ1bmN0aW9uKGUpe3Zh
ciByLG49dGhpcyxpPWUucmVsYXRlZFRhcmdldCxvPWUuaGFuZGxlT2JqO3JldHVybiBpJiYoaT09
PW58fG9lLmNvbnRhaW5zKG4saSkpfHwoZS50eXBlPW8ub3JpZ1R5cGUscj1vLmhhbmRsZXIuYXBw
bHkodGhpcyxhcmd1bWVudHMpLGUudHlwZT10KSxyfX19KSxvZS5mbi5leHRlbmQoe29uOmZ1bmN0
aW9uKGUsdCxyLG4pe3JldHVybiB2KHRoaXMsZSx0LHIsbil9LG9uZTpmdW5jdGlvbihlLHQscixu
KXtyZXR1cm4gdih0aGlzLGUsdCxyLG4sMSl9LG9mZjpmdW5jdGlvbihlLHQscil7dmFyIG4saTtp
ZihlJiZlLnByZXZlbnREZWZhdWx0JiZlLmhhbmRsZU9iailyZXR1cm4gbj1lLmhhbmRsZU9iaixv
ZShlLmRlbGVnYXRlVGFyZ2V0KS5vZmYobi5uYW1lc3BhY2U/bi5vcmlnVHlwZSsiLiIrbi5uYW1l
c3BhY2U6bi5vcmlnVHlwZSxuLnNlbGVjdG9yLG4uaGFuZGxlciksdGhpcztpZigib2JqZWN0Ij09
dHlwZW9mIGUpe2ZvcihpIGluIGUpdGhpcy5vZmYoaSx0LGVbaV0pO3JldHVybiB0aGlzfXJldHVy
biB0IT09ITEmJiJmdW5jdGlvbiIhPXR5cGVvZiB0fHwocj10LHQ9dm9pZCAwKSxyPT09ITEmJihy
PWgpLHRoaXMuZWFjaChmdW5jdGlvbigpe29lLmV2ZW50LnJlbW92ZSh0aGlzLGUscix0KX0pfX0p
O3ZhciBxZT0vPCg/IWFyZWF8YnJ8Y29sfGVtYmVkfGhyfGltZ3xpbnB1dHxsaW5rfG1ldGF8cGFy
YW0pKChbXHc6LV0rKVtePl0qKVwvPi9naSx6ZT0vPHNjcmlwdHw8c3R5bGV8PGxpbmsvaSxCZT0v
Y2hlY2tlZFxzKig/OltePV18PVxzKi5jaGVja2VkLikvaSxVZT0vXnRydWVcLyguKikvLFdlPS9e
XHMqPCEoPzpcW0NEQVRBXFt8LS0pfCg/OlxdXF18LS0pPlxzKiQvZztvZS5leHRlbmQoe2h0bWxQ
cmVmaWx0ZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZShxZSwiPCQxPjwvJDI+Iil9LGNs
b25lOmZ1bmN0aW9uKGUsdCxyKXt2YXIgbixpLG8sYSxzPWUuY2xvbmVOb2RlKCEwKSx1PW9lLmNv
bnRhaW5zKGUub3duZXJEb2N1bWVudCxlKTtpZighKG5lLm5vQ2xvbmVDaGVja2VkfHwxIT09ZS5u
b2RlVHlwZSYmMTEhPT1lLm5vZGVUeXBlfHxvZS5pc1hNTERvYyhlKSkpZm9yKGE9YyhzKSxvPWMo
ZSksbj0wLGk9by5sZW5ndGg7bjxpO24rKyl3KG9bbl0sYVtuXSk7aWYodClpZihyKWZvcihvPW98
fGMoZSksYT1hfHxjKHMpLG49MCxpPW8ubGVuZ3RoO248aTtuKyspXyhvW25dLGFbbl0pO2Vsc2Ug
XyhlLHMpO3JldHVybiBhPWMocywic2NyaXB0IiksYS5sZW5ndGg+MCYmZihhLCF1JiZjKGUsInNj
cmlwdCIpKSxzfSxjbGVhbkRhdGE6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LHIsbixpPW9lLmV2ZW50
LnNwZWNpYWwsbz0wO3ZvaWQgMCE9PShyPWVbb10pO28rKylpZihDZShyKSl7aWYodD1yW0VlLmV4
cGFuZG9dKXtpZih0LmV2ZW50cylmb3IobiBpbiB0LmV2ZW50cylpW25dP29lLmV2ZW50LnJlbW92
ZShyLG4pOm9lLnJlbW92ZUV2ZW50KHIsbix0LmhhbmRsZSk7cltFZS5leHBhbmRvXT12b2lkIDB9
cltPZS5leHBhbmRvXSYmKHJbT2UuZXhwYW5kb109dm9pZCAwKX19fSksb2UuZm4uZXh0ZW5kKHtk
b21NYW5pcDp4LGRldGFjaDpmdW5jdGlvbihlKXtyZXR1cm4gayh0aGlzLGUsITApfSxyZW1vdmU6
ZnVuY3Rpb24oZSl7cmV0dXJuIGsodGhpcyxlKX0sdGV4dDpmdW5jdGlvbihlKXtyZXR1cm4ga2Uo
dGhpcyxmdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZT9vZS50ZXh0KHRoaXMpOnRoaXMuZW1w
dHkoKS5lYWNoKGZ1bmN0aW9uKCl7MSE9PXRoaXMubm9kZVR5cGUmJjExIT09dGhpcy5ub2RlVHlw
ZSYmOSE9PXRoaXMubm9kZVR5cGV8fCh0aGlzLnRleHRDb250ZW50PWUpfSl9LG51bGwsZSxhcmd1
bWVudHMubGVuZ3RoKX0sYXBwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHgodGhpcyxhcmd1bWVudHMs
ZnVuY3Rpb24oZSl7aWYoMT09PXRoaXMubm9kZVR5cGV8fDExPT09dGhpcy5ub2RlVHlwZXx8OT09
PXRoaXMubm9kZVR5cGUpe3ZhciB0PWIodGhpcyxlKTt0LmFwcGVuZENoaWxkKGUpfX0pfSxwcmVw
ZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHgodGhpcyxhcmd1bWVudHMsZnVuY3Rpb24oZSl7aWYoMT09
PXRoaXMubm9kZVR5cGV8fDExPT09dGhpcy5ub2RlVHlwZXx8OT09PXRoaXMubm9kZVR5cGUpe3Zh
ciB0PWIodGhpcyxlKTt0Lmluc2VydEJlZm9yZShlLHQuZmlyc3RDaGlsZCl9fSl9LGJlZm9yZTpm
dW5jdGlvbigpe3JldHVybiB4KHRoaXMsYXJndW1lbnRzLGZ1bmN0aW9uKGUpe3RoaXMucGFyZW50
Tm9kZSYmdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShlLHRoaXMpfSl9LGFmdGVyOmZ1bmN0
aW9uKCl7cmV0dXJuIHgodGhpcyxhcmd1bWVudHMsZnVuY3Rpb24oZSl7dGhpcy5wYXJlbnROb2Rl
JiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGUsdGhpcy5uZXh0U2libGluZyl9KX0sZW1w
dHk6ZnVuY3Rpb24oKXtmb3IodmFyIGUsdD0wO251bGwhPShlPXRoaXNbdF0pO3QrKykxPT09ZS5u
b2RlVHlwZSYmKG9lLmNsZWFuRGF0YShjKGUsITEpKSxlLnRleHRDb250ZW50PSIiKTtyZXR1cm4g
dGhpc30sY2xvbmU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT1udWxsIT1lJiZlLHQ9bnVsbD09dD9l
OnQsdGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gb2UuY2xvbmUodGhpcyxlLHQpfSl9LGh0bWw6
ZnVuY3Rpb24oZSl7cmV0dXJuIGtlKHRoaXMsZnVuY3Rpb24oZSl7dmFyIHQ9dGhpc1swXXx8e30s
cj0wLG49dGhpcy5sZW5ndGg7aWYodm9pZCAwPT09ZSYmMT09PXQubm9kZVR5cGUpcmV0dXJuIHQu
aW5uZXJIVE1MO2lmKCJzdHJpbmciPT10eXBlb2YgZSYmIXplLnRlc3QoZSkmJiFNZVsoTGUuZXhl
YyhlKXx8WyIiLCIiXSlbMV0udG9Mb3dlckNhc2UoKV0pe2U9b2UuaHRtbFByZWZpbHRlcihlKTt0
cnl7Zm9yKDtyPG47cisrKXQ9dGhpc1tyXXx8e30sMT09PXQubm9kZVR5cGUmJihvZS5jbGVhbkRh
dGEoYyh0LCExKSksdC5pbm5lckhUTUw9ZSk7dD0wfWNhdGNoKGUpe319dCYmdGhpcy5lbXB0eSgp
LmFwcGVuZChlKX0sbnVsbCxlLGFyZ3VtZW50cy5sZW5ndGgpfSxyZXBsYWNlV2l0aDpmdW5jdGlv
bigpe3ZhciBlPVtdO3JldHVybiB4KHRoaXMsYXJndW1lbnRzLGZ1bmN0aW9uKHQpe3ZhciByPXRo
aXMucGFyZW50Tm9kZTtvZS5pbkFycmF5KHRoaXMsZSk8MCYmKG9lLmNsZWFuRGF0YShjKHRoaXMp
KSxyJiZyLnJlcGxhY2VDaGlsZCh0LHRoaXMpKX0sZSl9fSksb2UuZWFjaCh7YXBwZW5kVG86ImFw
cGVuZCIscHJlcGVuZFRvOiJwcmVwZW5kIixpbnNlcnRCZWZvcmU6ImJlZm9yZSIsaW5zZXJ0QWZ0
ZXI6ImFmdGVyIixyZXBsYWNlQWxsOiJyZXBsYWNlV2l0aCJ9LGZ1bmN0aW9uKGUsdCl7b2UuZm5b
ZV09ZnVuY3Rpb24oZSl7Zm9yKHZhciByLG49W10saT1vZShlKSxvPWkubGVuZ3RoLTEsYT0wO2E8
PW87YSsrKXI9YT09PW8/dGhpczp0aGlzLmNsb25lKCEwKSxvZShpW2FdKVt0XShyKSxKLmFwcGx5
KG4sci5nZXQoKSk7cmV0dXJuIHRoaXMucHVzaFN0YWNrKG4pfX0pO3ZhciAkZSxLZT17SFRNTDoi
YmxvY2siLEJPRFk6ImJsb2NrIn0sUWU9L15tYXJnaW4vLEdlPW5ldyBSZWdFeHAoIl4oIitTZSsi
KSg/IXB4KVthLXolXSskIiwiaSIpLFllPWZ1bmN0aW9uKHQpe3ZhciByPXQub3duZXJEb2N1bWVu
dC5kZWZhdWx0VmlldztyZXR1cm4gciYmci5vcGVuZXJ8fChyPWUpLHIuZ2V0Q29tcHV0ZWRTdHls
ZSh0KX0sWGU9ZnVuY3Rpb24oZSx0LHIsbil7dmFyIGksbyxhPXt9O2ZvcihvIGluIHQpYVtvXT1l
LnN0eWxlW29dLGUuc3R5bGVbb109dFtvXTtpPXIuYXBwbHkoZSxufHxbXSk7Zm9yKG8gaW4gdCll
LnN0eWxlW29dPWFbb107cmV0dXJuIGl9LEplPUcuZG9jdW1lbnRFbGVtZW50OyFmdW5jdGlvbigp
e2Z1bmN0aW9uIHQoKXtzLnN0eWxlLmNzc1RleHQ9Ii13ZWJraXQtYm94LXNpemluZzpib3JkZXIt
Ym94Oy1tb3otYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDtwb3Np
dGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmJsb2NrO21hcmdpbjphdXRvO2JvcmRlcjoxcHg7cGFkZGlu
ZzoxcHg7dG9wOjElO3dpZHRoOjUwJSIscy5pbm5lckhUTUw9IiIsSmUuYXBwZW5kQ2hpbGQoYSk7
dmFyIHQ9ZS5nZXRDb21wdXRlZFN0eWxlKHMpO3I9IjElIiE9PXQudG9wLG89IjJweCI9PT10Lm1h
cmdpbkxlZnQsbj0iNHB4Ij09PXQud2lkdGgscy5zdHlsZS5tYXJnaW5SaWdodD0iNTAlIixpPSI0
cHgiPT09dC5tYXJnaW5SaWdodCxKZS5yZW1vdmVDaGlsZChhKX12YXIgcixuLGksbyxhPUcuY3Jl
YXRlRWxlbWVudCgiZGl2Iikscz1HLmNyZWF0ZUVsZW1lbnQoImRpdiIpO3Muc3R5bGUmJihzLnN0
eWxlLmJhY2tncm91bmRDbGlwPSJjb250ZW50LWJveCIscy5jbG9uZU5vZGUoITApLnN0eWxlLmJh
Y2tncm91bmRDbGlwPSIiLG5lLmNsZWFyQ2xvbmVTdHlsZT0iY29udGVudC1ib3giPT09cy5zdHls
ZS5iYWNrZ3JvdW5kQ2xpcCxhLnN0eWxlLmNzc1RleHQ9ImJvcmRlcjowO3dpZHRoOjhweDtoZWln
aHQ6MDt0b3A6MDtsZWZ0Oi05OTk5cHg7cGFkZGluZzowO21hcmdpbi10b3A6MXB4O3Bvc2l0aW9u
OmFic29sdXRlIixhLmFwcGVuZENoaWxkKHMpLG9lLmV4dGVuZChuZSx7cGl4ZWxQb3NpdGlvbjpm
dW5jdGlvbigpe3JldHVybiB0KCkscn0sYm94U2l6aW5nUmVsaWFibGU6ZnVuY3Rpb24oKXtyZXR1
cm4gbnVsbD09biYmdCgpLG59LHBpeGVsTWFyZ2luUmlnaHQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVs
bD09biYmdCgpLGl9LHJlbGlhYmxlTWFyZ2luTGVmdDpmdW5jdGlvbigpe3JldHVybiBudWxsPT1u
JiZ0KCksb30scmVsaWFibGVNYXJnaW5SaWdodDpmdW5jdGlvbigpe3ZhciB0LHI9cy5hcHBlbmRD
aGlsZChHLmNyZWF0ZUVsZW1lbnQoImRpdiIpKTtyZXR1cm4gci5zdHlsZS5jc3NUZXh0PXMuc3R5
bGUuY3NzVGV4dD0iLXdlYmtpdC1ib3gtc2l6aW5nOmNvbnRlbnQtYm94O2JveC1zaXppbmc6Y29u
dGVudC1ib3g7ZGlzcGxheTpibG9jazttYXJnaW46MDtib3JkZXI6MDtwYWRkaW5nOjAiLHIuc3R5
bGUubWFyZ2luUmlnaHQ9ci5zdHlsZS53aWR0aD0iMCIscy5zdHlsZS53aWR0aD0iMXB4IixKZS5h
cHBlbmRDaGlsZChhKSx0PSFwYXJzZUZsb2F0KGUuZ2V0Q29tcHV0ZWRTdHlsZShyKS5tYXJnaW5S
aWdodCksSmUucmVtb3ZlQ2hpbGQoYSkscy5yZW1vdmVDaGlsZChyKSx0fX0pKX0oKTt2YXIgWmU9
L14obm9uZXx0YWJsZSg/IS1jW2VhXSkuKykvLGV0PXtwb3NpdGlvbjoiYWJzb2x1dGUiLHZpc2li
aWxpdHk6ImhpZGRlbiIsZGlzcGxheToiYmxvY2sifSx0dD17bGV0dGVyU3BhY2luZzoiMCIsZm9u
dFdlaWdodDoiNDAwIn0scnQ9WyJXZWJraXQiLCJPIiwiTW96IiwibXMiXSxudD1HLmNyZWF0ZUVs
ZW1lbnQoImRpdiIpLnN0eWxlO29lLmV4dGVuZCh7Y3NzSG9va3M6e29wYWNpdHk6e2dldDpmdW5j
dGlvbihlLHQpe2lmKHQpe3ZhciByPU8oZSwib3BhY2l0eSIpO3JldHVybiIiPT09cj8iMSI6cn19
fX0sY3NzTnVtYmVyOnthbmltYXRpb25JdGVyYXRpb25Db3VudDohMCxjb2x1bW5Db3VudDohMCxm
aWxsT3BhY2l0eTohMCxmbGV4R3JvdzohMCxmbGV4U2hyaW5rOiEwLGZvbnRXZWlnaHQ6ITAsbGlu
ZUhlaWdodDohMCxvcGFjaXR5OiEwLG9yZGVyOiEwLG9ycGhhbnM6ITAsd2lkb3dzOiEwLHpJbmRl
eDohMCx6b29tOiEwfSxjc3NQcm9wczp7ZmxvYXQ6ImNzc0Zsb2F0In0sc3R5bGU6ZnVuY3Rpb24o
ZSx0LHIsbil7aWYoZSYmMyE9PWUubm9kZVR5cGUmJjghPT1lLm5vZGVUeXBlJiZlLnN0eWxlKXt2
YXIgaSxvLGEscz1vZS5jYW1lbENhc2UodCksdT1lLnN0eWxlO3JldHVybiB0PW9lLmNzc1Byb3Bz
W3NdfHwob2UuY3NzUHJvcHNbc109TihzKXx8cyksYT1vZS5jc3NIb29rc1t0XXx8b2UuY3NzSG9v
a3Nbc10sdm9pZCAwPT09cj9hJiYiZ2V0ImluIGEmJnZvaWQgMCE9PShpPWEuZ2V0KGUsITEsbikp
P2k6dVt0XToobz10eXBlb2Ygciwic3RyaW5nIj09PW8mJihpPUFlLmV4ZWMocikpJiZpWzFdJiYo
cj1sKGUsdCxpKSxvPSJudW1iZXIiKSxudWxsIT1yJiZyPT09ciYmKCJudW1iZXIiPT09byYmKHIr
PWkmJmlbM118fChvZS5jc3NOdW1iZXJbc10/IiI6InB4IikpLG5lLmNsZWFyQ2xvbmVTdHlsZXx8
IiIhPT1yfHwwIT09dC5pbmRleE9mKCJiYWNrZ3JvdW5kIil8fCh1W3RdPSJpbmhlcml0IiksYSYm
InNldCJpbiBhJiZ2b2lkIDA9PT0ocj1hLnNldChlLHIsbikpfHwodVt0XT1yKSksdm9pZCAwKX19
LGNzczpmdW5jdGlvbihlLHQscixuKXt2YXIgaSxvLGEscz1vZS5jYW1lbENhc2UodCk7cmV0dXJu
IHQ9b2UuY3NzUHJvcHNbc118fChvZS5jc3NQcm9wc1tzXT1OKHMpfHxzKSxhPW9lLmNzc0hvb2tz
W3RdfHxvZS5jc3NIb29rc1tzXSxhJiYiZ2V0ImluIGEmJihpPWEuZ2V0KGUsITAscikpLHZvaWQg
MD09PWkmJihpPU8oZSx0LG4pKSwibm9ybWFsIj09PWkmJnQgaW4gdHQmJihpPXR0W3RdKSwiIj09
PXJ8fHI/KG89cGFyc2VGbG9hdChpKSxyPT09ITB8fGlzRmluaXRlKG8pP298fDA6aSk6aX19KSxv
ZS5lYWNoKFsiaGVpZ2h0Iiwid2lkdGgiXSxmdW5jdGlvbihlLHQpe29lLmNzc0hvb2tzW3RdPXtn
ZXQ6ZnVuY3Rpb24oZSxyLG4pe2lmKHIpcmV0dXJuIFplLnRlc3Qob2UuY3NzKGUsImRpc3BsYXki
KSkmJjA9PT1lLm9mZnNldFdpZHRoP1hlKGUsZXQsZnVuY3Rpb24oKXtyZXR1cm4gUChlLHQsbil9
KTpQKGUsdCxuKX0sc2V0OmZ1bmN0aW9uKGUscixuKXt2YXIgaSxvPW4mJlllKGUpLGE9biYmQShl
LHQsbiwiYm9yZGVyLWJveCI9PT1vZS5jc3MoZSwiYm94U2l6aW5nIiwhMSxvKSxvKTtyZXR1cm4g
YSYmKGk9QWUuZXhlYyhyKSkmJiJweCIhPT0oaVszXXx8InB4IikmJihlLnN0eWxlW3RdPXIscj1v
ZS5jc3MoZSx0KSksUyhlLHIsYSl9fX0pLG9lLmNzc0hvb2tzLm1hcmdpbkxlZnQ9VChuZS5yZWxp
YWJsZU1hcmdpbkxlZnQsZnVuY3Rpb24oZSx0KXtpZih0KXJldHVybihwYXJzZUZsb2F0KE8oZSwi
bWFyZ2luTGVmdCIpKXx8ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0LVhlKGUse21hcmdp
bkxlZnQ6MH0sZnVuY3Rpb24oKXtyZXR1cm4gZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0
fSkpKyJweCJ9KSxvZS5jc3NIb29rcy5tYXJnaW5SaWdodD1UKG5lLnJlbGlhYmxlTWFyZ2luUmln
aHQsZnVuY3Rpb24oZSx0KXtpZih0KXJldHVybiBYZShlLHtkaXNwbGF5OiJpbmxpbmUtYmxvY2si
fSxPLFtlLCJtYXJnaW5SaWdodCJdKX0pLG9lLmVhY2goe21hcmdpbjoiIixwYWRkaW5nOiIiLGJv
cmRlcjoiV2lkdGgifSxmdW5jdGlvbihlLHQpe29lLmNzc0hvb2tzW2UrdF09e2V4cGFuZDpmdW5j
dGlvbihyKXtmb3IodmFyIG49MCxpPXt9LG89InN0cmluZyI9PXR5cGVvZiByP3Iuc3BsaXQoIiAi
KTpbcl07bjw0O24rKylpW2UrUGVbbl0rdF09b1tuXXx8b1tuLTJdfHxvWzBdO3JldHVybiBpfX0s
UWUudGVzdChlKXx8KG9lLmNzc0hvb2tzW2UrdF0uc2V0PVMpfSksb2UuZm4uZXh0ZW5kKHsKK2Nz
czpmdW5jdGlvbihlLHQpe3JldHVybiBrZSh0aGlzLGZ1bmN0aW9uKGUsdCxyKXt2YXIgbixpLG89
e30sYT0wO2lmKG9lLmlzQXJyYXkodCkpe2ZvcihuPVllKGUpLGk9dC5sZW5ndGg7YTxpO2ErKylv
W3RbYV1dPW9lLmNzcyhlLHRbYV0sITEsbik7cmV0dXJuIG99cmV0dXJuIHZvaWQgMCE9PXI/b2Uu
c3R5bGUoZSx0LHIpOm9lLmNzcyhlLHQpfSxlLHQsYXJndW1lbnRzLmxlbmd0aD4xKX0sc2hvdzpm
dW5jdGlvbigpe3JldHVybiBqKHRoaXMsITApfSxoaWRlOmZ1bmN0aW9uKCl7cmV0dXJuIGoodGhp
cyl9LHRvZ2dsZTpmdW5jdGlvbihlKXtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiBlP2U/dGhpcy5z
aG93KCk6dGhpcy5oaWRlKCk6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7amUodGhpcyk/b2UodGhpcyku
c2hvdygpOm9lKHRoaXMpLmhpZGUoKX0pfX0pLG9lLlR3ZWVuPVIsUi5wcm90b3R5cGU9e2NvbnN0
cnVjdG9yOlIsaW5pdDpmdW5jdGlvbihlLHQscixuLGksbyl7dGhpcy5lbGVtPWUsdGhpcy5wcm9w
PXIsdGhpcy5lYXNpbmc9aXx8b2UuZWFzaW5nLl9kZWZhdWx0LHRoaXMub3B0aW9ucz10LHRoaXMu
c3RhcnQ9dGhpcy5ub3c9dGhpcy5jdXIoKSx0aGlzLmVuZD1uLHRoaXMudW5pdD1vfHwob2UuY3Nz
TnVtYmVyW3JdPyIiOiJweCIpfSxjdXI6ZnVuY3Rpb24oKXt2YXIgZT1SLnByb3BIb29rc1t0aGlz
LnByb3BdO3JldHVybiBlJiZlLmdldD9lLmdldCh0aGlzKTpSLnByb3BIb29rcy5fZGVmYXVsdC5n
ZXQodGhpcyl9LHJ1bjpmdW5jdGlvbihlKXt2YXIgdCxyPVIucHJvcEhvb2tzW3RoaXMucHJvcF07
cmV0dXJuIHRoaXMub3B0aW9ucy5kdXJhdGlvbj90aGlzLnBvcz10PW9lLmVhc2luZ1t0aGlzLmVh
c2luZ10oZSx0aGlzLm9wdGlvbnMuZHVyYXRpb24qZSwwLDEsdGhpcy5vcHRpb25zLmR1cmF0aW9u
KTp0aGlzLnBvcz10PWUsdGhpcy5ub3c9KHRoaXMuZW5kLXRoaXMuc3RhcnQpKnQrdGhpcy5zdGFy
dCx0aGlzLm9wdGlvbnMuc3RlcCYmdGhpcy5vcHRpb25zLnN0ZXAuY2FsbCh0aGlzLmVsZW0sdGhp
cy5ub3csdGhpcyksciYmci5zZXQ/ci5zZXQodGhpcyk6Ui5wcm9wSG9va3MuX2RlZmF1bHQuc2V0
KHRoaXMpLHRoaXN9fSxSLnByb3RvdHlwZS5pbml0LnByb3RvdHlwZT1SLnByb3RvdHlwZSxSLnBy
b3BIb29rcz17X2RlZmF1bHQ6e2dldDpmdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4gMSE9PWUuZWxl
bS5ub2RlVHlwZXx8bnVsbCE9ZS5lbGVtW2UucHJvcF0mJm51bGw9PWUuZWxlbS5zdHlsZVtlLnBy
b3BdP2UuZWxlbVtlLnByb3BdOih0PW9lLmNzcyhlLmVsZW0sZS5wcm9wLCIiKSx0JiYiYXV0byIh
PT10P3Q6MCl9LHNldDpmdW5jdGlvbihlKXtvZS5meC5zdGVwW2UucHJvcF0/b2UuZnguc3RlcFtl
LnByb3BdKGUpOjEhPT1lLmVsZW0ubm9kZVR5cGV8fG51bGw9PWUuZWxlbS5zdHlsZVtvZS5jc3NQ
cm9wc1tlLnByb3BdXSYmIW9lLmNzc0hvb2tzW2UucHJvcF0/ZS5lbGVtW2UucHJvcF09ZS5ub3c6
b2Uuc3R5bGUoZS5lbGVtLGUucHJvcCxlLm5vdytlLnVuaXQpfX19LFIucHJvcEhvb2tzLnNjcm9s
bFRvcD1SLnByb3BIb29rcy5zY3JvbGxMZWZ0PXtzZXQ6ZnVuY3Rpb24oZSl7ZS5lbGVtLm5vZGVU
eXBlJiZlLmVsZW0ucGFyZW50Tm9kZSYmKGUuZWxlbVtlLnByb3BdPWUubm93KX19LG9lLmVhc2lu
Zz17bGluZWFyOmZ1bmN0aW9uKGUpe3JldHVybiBlfSxzd2luZzpmdW5jdGlvbihlKXtyZXR1cm4u
NS1NYXRoLmNvcyhlKk1hdGguUEkpLzJ9LF9kZWZhdWx0OiJzd2luZyJ9LG9lLmZ4PVIucHJvdG90
eXBlLmluaXQsb2UuZnguc3RlcD17fTt2YXIgaXQsb3QsYXQ9L14oPzp0b2dnbGV8c2hvd3xoaWRl
KSQvLHN0PS9xdWV1ZUhvb2tzJC87b2UuQW5pbWF0aW9uPW9lLmV4dGVuZChILHt0d2VlbmVyczp7
IioiOltmdW5jdGlvbihlLHQpe3ZhciByPXRoaXMuY3JlYXRlVHdlZW4oZSx0KTtyZXR1cm4gbChy
LmVsZW0sZSxBZS5leGVjKHQpLHIpLHJ9XX0sdHdlZW5lcjpmdW5jdGlvbihlLHQpe29lLmlzRnVu
Y3Rpb24oZSk/KHQ9ZSxlPVsiKiJdKTplPWUubWF0Y2god2UpO2Zvcih2YXIgcixuPTAsaT1lLmxl
bmd0aDtuPGk7bisrKXI9ZVtuXSxILnR3ZWVuZXJzW3JdPUgudHdlZW5lcnNbcl18fFtdLEgudHdl
ZW5lcnNbcl0udW5zaGlmdCh0KX0scHJlZmlsdGVyczpbSV0scHJlZmlsdGVyOmZ1bmN0aW9uKGUs
dCl7dD9ILnByZWZpbHRlcnMudW5zaGlmdChlKTpILnByZWZpbHRlcnMucHVzaChlKX19KSxvZS5z
cGVlZD1mdW5jdGlvbihlLHQscil7dmFyIG49ZSYmIm9iamVjdCI9PXR5cGVvZiBlP29lLmV4dGVu
ZCh7fSxlKTp7Y29tcGxldGU6cnx8IXImJnR8fG9lLmlzRnVuY3Rpb24oZSkmJmUsZHVyYXRpb246
ZSxlYXNpbmc6ciYmdHx8dCYmIW9lLmlzRnVuY3Rpb24odCkmJnR9O3JldHVybiBuLmR1cmF0aW9u
PW9lLmZ4Lm9mZj8wOiJudW1iZXIiPT10eXBlb2Ygbi5kdXJhdGlvbj9uLmR1cmF0aW9uOm4uZHVy
YXRpb24gaW4gb2UuZnguc3BlZWRzP29lLmZ4LnNwZWVkc1tuLmR1cmF0aW9uXTpvZS5meC5zcGVl
ZHMuX2RlZmF1bHQsbnVsbCE9bi5xdWV1ZSYmbi5xdWV1ZSE9PSEwfHwobi5xdWV1ZT0iZngiKSxu
Lm9sZD1uLmNvbXBsZXRlLG4uY29tcGxldGU9ZnVuY3Rpb24oKXtvZS5pc0Z1bmN0aW9uKG4ub2xk
KSYmbi5vbGQuY2FsbCh0aGlzKSxuLnF1ZXVlJiZvZS5kZXF1ZXVlKHRoaXMsbi5xdWV1ZSl9LG59
LG9lLmZuLmV4dGVuZCh7ZmFkZVRvOmZ1bmN0aW9uKGUsdCxyLG4pe3JldHVybiB0aGlzLmZpbHRl
cihqZSkuY3NzKCJvcGFjaXR5IiwwKS5zaG93KCkuZW5kKCkuYW5pbWF0ZSh7b3BhY2l0eTp0fSxl
LHIsbil9LGFuaW1hdGU6ZnVuY3Rpb24oZSx0LHIsbil7dmFyIGk9b2UuaXNFbXB0eU9iamVjdChl
KSxvPW9lLnNwZWVkKHQscixuKSxhPWZ1bmN0aW9uKCl7dmFyIHQ9SCh0aGlzLG9lLmV4dGVuZCh7
fSxlKSxvKTsoaXx8RWUuZ2V0KHRoaXMsImZpbmlzaCIpKSYmdC5zdG9wKCEwKX07cmV0dXJuIGEu
ZmluaXNoPWEsaXx8by5xdWV1ZT09PSExP3RoaXMuZWFjaChhKTp0aGlzLnF1ZXVlKG8ucXVldWUs
YSl9LHN0b3A6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuc3RvcDtk
ZWxldGUgZS5zdG9wLHQocil9O3JldHVybiJzdHJpbmciIT10eXBlb2YgZSYmKHI9dCx0PWUsZT12
b2lkIDApLHQmJmUhPT0hMSYmdGhpcy5xdWV1ZShlfHwiZngiLFtdKSx0aGlzLmVhY2goZnVuY3Rp
b24oKXt2YXIgdD0hMCxpPW51bGwhPWUmJmUrInF1ZXVlSG9va3MiLG89b2UudGltZXJzLGE9RWUu
Z2V0KHRoaXMpO2lmKGkpYVtpXSYmYVtpXS5zdG9wJiZuKGFbaV0pO2Vsc2UgZm9yKGkgaW4gYSlh
W2ldJiZhW2ldLnN0b3AmJnN0LnRlc3QoaSkmJm4oYVtpXSk7Zm9yKGk9by5sZW5ndGg7aS0tOylv
W2ldLmVsZW0hPT10aGlzfHxudWxsIT1lJiZvW2ldLnF1ZXVlIT09ZXx8KG9baV0uYW5pbS5zdG9w
KHIpLHQ9ITEsby5zcGxpY2UoaSwxKSk7IXQmJnJ8fG9lLmRlcXVldWUodGhpcyxlKX0pfSxmaW5p
c2g6ZnVuY3Rpb24oZSl7cmV0dXJuIGUhPT0hMSYmKGU9ZXx8ImZ4IiksdGhpcy5lYWNoKGZ1bmN0
aW9uKCl7dmFyIHQscj1FZS5nZXQodGhpcyksbj1yW2UrInF1ZXVlIl0saT1yW2UrInF1ZXVlSG9v
a3MiXSxvPW9lLnRpbWVycyxhPW4/bi5sZW5ndGg6MDtmb3Ioci5maW5pc2g9ITAsb2UucXVldWUo
dGhpcyxlLFtdKSxpJiZpLnN0b3AmJmkuc3RvcC5jYWxsKHRoaXMsITApLHQ9by5sZW5ndGg7dC0t
OylvW3RdLmVsZW09PT10aGlzJiZvW3RdLnF1ZXVlPT09ZSYmKG9bdF0uYW5pbS5zdG9wKCEwKSxv
LnNwbGljZSh0LDEpKTtmb3IodD0wO3Q8YTt0Kyspblt0XSYmblt0XS5maW5pc2gmJm5bdF0uZmlu
aXNoLmNhbGwodGhpcyk7ZGVsZXRlIHIuZmluaXNofSl9fSksb2UuZWFjaChbInRvZ2dsZSIsInNo
b3ciLCJoaWRlIl0sZnVuY3Rpb24oZSx0KXt2YXIgcj1vZS5mblt0XTtvZS5mblt0XT1mdW5jdGlv
bihlLG4saSl7cmV0dXJuIG51bGw9PWV8fCJib29sZWFuIj09dHlwZW9mIGU/ci5hcHBseSh0aGlz
LGFyZ3VtZW50cyk6dGhpcy5hbmltYXRlKEQodCwhMCksZSxuLGkpfX0pLG9lLmVhY2goe3NsaWRl
RG93bjpEKCJzaG93Iiksc2xpZGVVcDpEKCJoaWRlIiksc2xpZGVUb2dnbGU6RCgidG9nZ2xlIiks
ZmFkZUluOntvcGFjaXR5OiJzaG93In0sZmFkZU91dDp7b3BhY2l0eToiaGlkZSJ9LGZhZGVUb2dn
bGU6e29wYWNpdHk6InRvZ2dsZSJ9fSxmdW5jdGlvbihlLHQpe29lLmZuW2VdPWZ1bmN0aW9uKGUs
cixuKXtyZXR1cm4gdGhpcy5hbmltYXRlKHQsZSxyLG4pfX0pLG9lLnRpbWVycz1bXSxvZS5meC50
aWNrPWZ1bmN0aW9uKCl7dmFyIGUsdD0wLHI9b2UudGltZXJzO2ZvcihpdD1vZS5ub3coKTt0PHIu
bGVuZ3RoO3QrKyllPXJbdF0sZSgpfHxyW3RdIT09ZXx8ci5zcGxpY2UodC0tLDEpO3IubGVuZ3Ro
fHxvZS5meC5zdG9wKCksaXQ9dm9pZCAwfSxvZS5meC50aW1lcj1mdW5jdGlvbihlKXtvZS50aW1l
cnMucHVzaChlKSxlKCk/b2UuZnguc3RhcnQoKTpvZS50aW1lcnMucG9wKCl9LG9lLmZ4LmludGVy
dmFsPTEzLG9lLmZ4LnN0YXJ0PWZ1bmN0aW9uKCl7b3R8fChvdD1lLnNldEludGVydmFsKG9lLmZ4
LnRpY2ssb2UuZnguaW50ZXJ2YWwpKX0sb2UuZnguc3RvcD1mdW5jdGlvbigpe2UuY2xlYXJJbnRl
cnZhbChvdCksb3Q9bnVsbH0sb2UuZnguc3BlZWRzPXtzbG93OjYwMCxmYXN0OjIwMCxfZGVmYXVs
dDo0MDB9LG9lLmZuLmRlbGF5PWZ1bmN0aW9uKHQscil7cmV0dXJuIHQ9b2UuZng/b2UuZnguc3Bl
ZWRzW3RdfHx0OnQscj1yfHwiZngiLHRoaXMucXVldWUocixmdW5jdGlvbihyLG4pe3ZhciBpPWUu
c2V0VGltZW91dChyLHQpO24uc3RvcD1mdW5jdGlvbigpe2UuY2xlYXJUaW1lb3V0KGkpfX0pfSxm
dW5jdGlvbigpe3ZhciBlPUcuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSx0PUcuY3JlYXRlRWxlbWVu
dCgic2VsZWN0Iikscj10LmFwcGVuZENoaWxkKEcuY3JlYXRlRWxlbWVudCgib3B0aW9uIikpO2Uu
dHlwZT0iY2hlY2tib3giLG5lLmNoZWNrT249IiIhPT1lLnZhbHVlLG5lLm9wdFNlbGVjdGVkPXIu
c2VsZWN0ZWQsdC5kaXNhYmxlZD0hMCxuZS5vcHREaXNhYmxlZD0hci5kaXNhYmxlZCxlPUcuY3Jl
YXRlRWxlbWVudCgiaW5wdXQiKSxlLnZhbHVlPSJ0IixlLnR5cGU9InJhZGlvIixuZS5yYWRpb1Zh
bHVlPSJ0Ij09PWUudmFsdWV9KCk7dmFyIHV0LGx0PW9lLmV4cHIuYXR0ckhhbmRsZTtvZS5mbi5l
eHRlbmQoe2F0dHI6ZnVuY3Rpb24oZSx0KXtyZXR1cm4ga2UodGhpcyxvZS5hdHRyLGUsdCxhcmd1
bWVudHMubGVuZ3RoPjEpfSxyZW1vdmVBdHRyOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmVhY2go
ZnVuY3Rpb24oKXtvZS5yZW1vdmVBdHRyKHRoaXMsZSl9KX19KSxvZS5leHRlbmQoe2F0dHI6ZnVu
Y3Rpb24oZSx0LHIpe3ZhciBuLGksbz1lLm5vZGVUeXBlO2lmKDMhPT1vJiY4IT09byYmMiE9PW8p
cmV0dXJuInVuZGVmaW5lZCI9PXR5cGVvZiBlLmdldEF0dHJpYnV0ZT9vZS5wcm9wKGUsdCxyKToo
MT09PW8mJm9lLmlzWE1MRG9jKGUpfHwodD10LnRvTG93ZXJDYXNlKCksaT1vZS5hdHRySG9va3Nb
dF18fChvZS5leHByLm1hdGNoLmJvb2wudGVzdCh0KT91dDp2b2lkIDApKSx2b2lkIDAhPT1yP251
bGw9PT1yP3ZvaWQgb2UucmVtb3ZlQXR0cihlLHQpOmkmJiJzZXQiaW4gaSYmdm9pZCAwIT09KG49
aS5zZXQoZSxyLHQpKT9uOihlLnNldEF0dHJpYnV0ZSh0LHIrIiIpLHIpOmkmJiJnZXQiaW4gaSYm
bnVsbCE9PShuPWkuZ2V0KGUsdCkpP246KG49b2UuZmluZC5hdHRyKGUsdCksbnVsbD09bj92b2lk
IDA6bikpfSxhdHRySG9va3M6e3R5cGU6e3NldDpmdW5jdGlvbihlLHQpe2lmKCFuZS5yYWRpb1Zh
bHVlJiYicmFkaW8iPT09dCYmb2Uubm9kZU5hbWUoZSwiaW5wdXQiKSl7dmFyIHI9ZS52YWx1ZTty
ZXR1cm4gZS5zZXRBdHRyaWJ1dGUoInR5cGUiLHQpLHImJihlLnZhbHVlPXIpLHR9fX19LHJlbW92
ZUF0dHI6ZnVuY3Rpb24oZSx0KXt2YXIgcixuLGk9MCxvPXQmJnQubWF0Y2god2UpO2lmKG8mJjE9
PT1lLm5vZGVUeXBlKWZvcig7cj1vW2krK107KW49b2UucHJvcEZpeFtyXXx8cixvZS5leHByLm1h
dGNoLmJvb2wudGVzdChyKSYmKGVbbl09ITEpLGUucmVtb3ZlQXR0cmlidXRlKHIpfX0pLHV0PXtz
ZXQ6ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB0PT09ITE/b2UucmVtb3ZlQXR0cihlLHIpOmUuc2V0
QXR0cmlidXRlKHIscikscn19LG9lLmVhY2gob2UuZXhwci5tYXRjaC5ib29sLnNvdXJjZS5tYXRj
aCgvXHcrL2cpLGZ1bmN0aW9uKGUsdCl7dmFyIHI9bHRbdF18fG9lLmZpbmQuYXR0cjtsdFt0XT1m
dW5jdGlvbihlLHQsbil7dmFyIGksbztyZXR1cm4gbnx8KG89bHRbdF0sbHRbdF09aSxpPW51bGwh
PXIoZSx0LG4pP3QudG9Mb3dlckNhc2UoKTpudWxsLGx0W3RdPW8pLGl9fSk7dmFyIGN0PS9eKD86
aW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbikkL2ksZnQ9L14oPzphfGFyZWEpJC9pO29lLmZu
LmV4dGVuZCh7cHJvcDpmdW5jdGlvbihlLHQpe3JldHVybiBrZSh0aGlzLG9lLnByb3AsZSx0LGFy
Z3VtZW50cy5sZW5ndGg+MSl9LHJlbW92ZVByb3A6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZWFj
aChmdW5jdGlvbigpe2RlbGV0ZSB0aGlzW29lLnByb3BGaXhbZV18fGVdfSl9fSksb2UuZXh0ZW5k
KHtwcm9wOmZ1bmN0aW9uKGUsdCxyKXt2YXIgbixpLG89ZS5ub2RlVHlwZTtpZigzIT09byYmOCE9
PW8mJjIhPT1vKXJldHVybiAxPT09byYmb2UuaXNYTUxEb2MoZSl8fCh0PW9lLnByb3BGaXhbdF18
fHQsaT1vZS5wcm9wSG9va3NbdF0pLHZvaWQgMCE9PXI/aSYmInNldCJpbiBpJiZ2b2lkIDAhPT0o
bj1pLnNldChlLHIsdCkpP246ZVt0XT1yOmkmJiJnZXQiaW4gaSYmbnVsbCE9PShuPWkuZ2V0KGUs
dCkpP246ZVt0XX0scHJvcEhvb2tzOnt0YWJJbmRleDp7Z2V0OmZ1bmN0aW9uKGUpe3ZhciB0PW9l
LmZpbmQuYXR0cihlLCJ0YWJpbmRleCIpO3JldHVybiB0P3BhcnNlSW50KHQsMTApOmN0LnRlc3Qo
ZS5ub2RlTmFtZSl8fGZ0LnRlc3QoZS5ub2RlTmFtZSkmJmUuaHJlZj8wOi0xfX19LHByb3BGaXg6
e2ZvcjoiaHRtbEZvciIsY2xhc3M6ImNsYXNzTmFtZSJ9fSksbmUub3B0U2VsZWN0ZWR8fChvZS5w
cm9wSG9va3Muc2VsZWN0ZWQ9e2dldDpmdW5jdGlvbihlKXt2YXIgdD1lLnBhcmVudE5vZGU7cmV0
dXJuIHQmJnQucGFyZW50Tm9kZSYmdC5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXgsbnVsbH0sc2V0
OmZ1bmN0aW9uKGUpe3ZhciB0PWUucGFyZW50Tm9kZTt0JiYodC5zZWxlY3RlZEluZGV4LHQucGFy
ZW50Tm9kZSYmdC5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXgpfX0pLG9lLmVhY2goWyJ0YWJJbmRl
eCIsInJlYWRPbmx5IiwibWF4TGVuZ3RoIiwiY2VsbFNwYWNpbmciLCJjZWxsUGFkZGluZyIsInJv
d1NwYW4iLCJjb2xTcGFuIiwidXNlTWFwIiwiZnJhbWVCb3JkZXIiLCJjb250ZW50RWRpdGFibGUi
XSxmdW5jdGlvbigpe29lLnByb3BGaXhbdGhpcy50b0xvd2VyQ2FzZSgpXT10aGlzfSk7dmFyIGR0
PS9bXHRcclxuXGZdL2c7b2UuZm4uZXh0ZW5kKHthZGRDbGFzczpmdW5jdGlvbihlKXt2YXIgdCxy
LG4saSxvLGEscyx1PTA7aWYob2UuaXNGdW5jdGlvbihlKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0
aW9uKHQpe29lKHRoaXMpLmFkZENsYXNzKGUuY2FsbCh0aGlzLHQsVih0aGlzKSkpfSk7aWYoInN0
cmluZyI9PXR5cGVvZiBlJiZlKWZvcih0PWUubWF0Y2god2UpfHxbXTtyPXRoaXNbdSsrXTspaWYo
aT1WKHIpLG49MT09PXIubm9kZVR5cGUmJigiICIraSsiICIpLnJlcGxhY2UoZHQsIiAiKSl7Zm9y
KGE9MDtvPXRbYSsrXTspbi5pbmRleE9mKCIgIitvKyIgIik8MCYmKG4rPW8rIiAiKTtzPW9lLnRy
aW0obiksaSE9PXMmJnIuc2V0QXR0cmlidXRlKCJjbGFzcyIscyl9cmV0dXJuIHRoaXN9LHJlbW92
ZUNsYXNzOmZ1bmN0aW9uKGUpe3ZhciB0LHIsbixpLG8sYSxzLHU9MDtpZihvZS5pc0Z1bmN0aW9u
KGUpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24odCl7b2UodGhpcykucmVtb3ZlQ2xhc3MoZS5j
YWxsKHRoaXMsdCxWKHRoaXMpKSl9KTtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdGhpcy5h
dHRyKCJjbGFzcyIsIiIpO2lmKCJzdHJpbmciPT10eXBlb2YgZSYmZSlmb3IodD1lLm1hdGNoKHdl
KXx8W107cj10aGlzW3UrK107KWlmKGk9VihyKSxuPTE9PT1yLm5vZGVUeXBlJiYoIiAiK2krIiAi
KS5yZXBsYWNlKGR0LCIgIikpe2ZvcihhPTA7bz10W2ErK107KWZvcig7bi5pbmRleE9mKCIgIitv
KyIgIik+LTE7KW49bi5yZXBsYWNlKCIgIitvKyIgIiwiICIpO3M9b2UudHJpbShuKSxpIT09cyYm
ci5zZXRBdHRyaWJ1dGUoImNsYXNzIixzKX1yZXR1cm4gdGhpc30sdG9nZ2xlQ2xhc3M6ZnVuY3Rp
b24oZSx0KXt2YXIgcj10eXBlb2YgZTtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiB0JiYic3RyaW5n
Ij09PXI/dD90aGlzLmFkZENsYXNzKGUpOnRoaXMucmVtb3ZlQ2xhc3MoZSk6b2UuaXNGdW5jdGlv
bihlKT90aGlzLmVhY2goZnVuY3Rpb24ocil7b2UodGhpcykudG9nZ2xlQ2xhc3MoZS5jYWxsKHRo
aXMscixWKHRoaXMpLHQpLHQpfSk6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIHQsbixpLG87aWYo
InN0cmluZyI9PT1yKWZvcihuPTAsaT1vZSh0aGlzKSxvPWUubWF0Y2god2UpfHxbXTt0PW9bbisr
XTspaS5oYXNDbGFzcyh0KT9pLnJlbW92ZUNsYXNzKHQpOmkuYWRkQ2xhc3ModCk7ZWxzZSB2b2lk
IDAhPT1lJiYiYm9vbGVhbiIhPT1yfHwodD1WKHRoaXMpLHQmJkVlLnNldCh0aGlzLCJfX2NsYXNz
TmFtZV9fIix0KSx0aGlzLnNldEF0dHJpYnV0ZSYmdGhpcy5zZXRBdHRyaWJ1dGUoImNsYXNzIix0
fHxlPT09ITE/IiI6RWUuZ2V0KHRoaXMsIl9fY2xhc3NOYW1lX18iKXx8IiIpKX0pfSxoYXNDbGFz
czpmdW5jdGlvbihlKXt2YXIgdCxyLG49MDtmb3IodD0iICIrZSsiICI7cj10aGlzW24rK107KWlm
KDE9PT1yLm5vZGVUeXBlJiYoIiAiK1YocikrIiAiKS5yZXBsYWNlKGR0LCIgIikuaW5kZXhPZih0
KT4tMSlyZXR1cm4hMDtyZXR1cm4hMX19KTt2YXIgcHQ9L1xyL2csaHQ9L1tceDIwXHRcclxuXGZd
Ky9nO29lLmZuLmV4dGVuZCh7dmFsOmZ1bmN0aW9uKGUpe3ZhciB0LHIsbixpPXRoaXNbMF07e2lm
KGFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIG49b2UuaXNGdW5jdGlvbihlKSx0aGlzLmVhY2goZnVu
Y3Rpb24ocil7dmFyIGk7MT09PXRoaXMubm9kZVR5cGUmJihpPW4/ZS5jYWxsKHRoaXMscixvZSh0
aGlzKS52YWwoKSk6ZSxudWxsPT1pP2k9IiI6Im51bWJlciI9PXR5cGVvZiBpP2krPSIiOm9lLmlz
QXJyYXkoaSkmJihpPW9lLm1hcChpLGZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lPyIiOmUrIiJ9
KSksdD1vZS52YWxIb29rc1t0aGlzLnR5cGVdfHxvZS52YWxIb29rc1t0aGlzLm5vZGVOYW1lLnRv
TG93ZXJDYXNlKCldLHQmJiJzZXQiaW4gdCYmdm9pZCAwIT09dC5zZXQodGhpcyxpLCJ2YWx1ZSIp
fHwodGhpcy52YWx1ZT1pKSl9KTtpZihpKXJldHVybiB0PW9lLnZhbEhvb2tzW2kudHlwZV18fG9l
LnZhbEhvb2tzW2kubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0sdCYmImdldCJpbiB0JiZ2b2lkIDAh
PT0ocj10LmdldChpLCJ2YWx1ZSIpKT9yOihyPWkudmFsdWUsInN0cmluZyI9PXR5cGVvZiByP3Iu
cmVwbGFjZShwdCwiIik6bnVsbD09cj8iIjpyKX19fSksb2UuZXh0ZW5kKHt2YWxIb29rczp7b3B0
aW9uOntnZXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9b2UuZmluZC5hdHRyKGUsInZhbHVlIik7cmV0dXJu
IG51bGwhPXQ/dDpvZS50cmltKG9lLnRleHQoZSkpLnJlcGxhY2UoaHQsIiAiKX19LHNlbGVjdDp7
Z2V0OmZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyLG49ZS5vcHRpb25zLGk9ZS5zZWxlY3RlZEluZGV4
LG89InNlbGVjdC1vbmUiPT09ZS50eXBlfHxpPDAsYT1vP251bGw6W10scz1vP2krMTpuLmxlbmd0
aCx1PWk8MD9zOm8/aTowO3U8czt1KyspaWYocj1uW3VdLChyLnNlbGVjdGVkfHx1PT09aSkmJihu
ZS5vcHREaXNhYmxlZD8hci5kaXNhYmxlZDpudWxsPT09ci5nZXRBdHRyaWJ1dGUoImRpc2FibGVk
IikpJiYoIXIucGFyZW50Tm9kZS5kaXNhYmxlZHx8IW9lLm5vZGVOYW1lKHIucGFyZW50Tm9kZSwi
b3B0Z3JvdXAiKSkpe2lmKHQ9b2UocikudmFsKCksbylyZXR1cm4gdDthLnB1c2godCl9cmV0dXJu
IGF9LHNldDpmdW5jdGlvbihlLHQpe2Zvcih2YXIgcixuLGk9ZS5vcHRpb25zLG89b2UubWFrZUFy
cmF5KHQpLGE9aS5sZW5ndGg7YS0tOyluPWlbYV0sKG4uc2VsZWN0ZWQ9b2UuaW5BcnJheShvZS52
YWxIb29rcy5vcHRpb24uZ2V0KG4pLG8pPi0xKSYmKHI9ITApO3JldHVybiByfHwoZS5zZWxlY3Rl
ZEluZGV4PS0xKSxvfX19fSksb2UuZWFjaChbInJhZGlvIiwiY2hlY2tib3giXSxmdW5jdGlvbigp
e29lLnZhbEhvb2tzW3RoaXNdPXtzZXQ6ZnVuY3Rpb24oZSx0KXtpZihvZS5pc0FycmF5KHQpKXJl
dHVybiBlLmNoZWNrZWQ9b2UuaW5BcnJheShvZShlKS52YWwoKSx0KT4tMX19LG5lLmNoZWNrT258
fChvZS52YWxIb29rc1t0aGlzXS5nZXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PT1lLmdldEF0
dHJpYnV0ZSgidmFsdWUiKT8ib24iOmUudmFsdWV9KX0pO3ZhciBtdD0vXig/OmZvY3VzaW5mb2N1
c3xmb2N1c291dGJsdXIpJC87b2UuZXh0ZW5kKG9lLmV2ZW50LHt0cmlnZ2VyOmZ1bmN0aW9uKHQs
cixuLGkpe3ZhciBvLGEscyx1LGwsYyxmLGQ9W258fEddLHA9cmUuY2FsbCh0LCJ0eXBlIik/dC50
eXBlOnQsaD1yZS5jYWxsKHQsIm5hbWVzcGFjZSIpP3QubmFtZXNwYWNlLnNwbGl0KCIuIik6W107
aWYoYT1zPW49bnx8RywzIT09bi5ub2RlVHlwZSYmOCE9PW4ubm9kZVR5cGUmJiFtdC50ZXN0KHAr
b2UuZXZlbnQudHJpZ2dlcmVkKSYmKHAuaW5kZXhPZigiLiIpPi0xJiYoaD1wLnNwbGl0KCIuIiks
cD1oLnNoaWZ0KCksaC5zb3J0KCkpLGw9cC5pbmRleE9mKCI6Iik8MCYmIm9uIitwLHQ9dFtvZS5l
eHBhbmRvXT90Om5ldyBvZS5FdmVudChwLCJvYmplY3QiPT10eXBlb2YgdCYmdCksdC5pc1RyaWdn
ZXI9aT8yOjMsdC5uYW1lc3BhY2U9aC5qb2luKCIuIiksdC5ybmFtZXNwYWNlPXQubmFtZXNwYWNl
P25ldyBSZWdFeHAoIihefFxcLikiK2guam9pbigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIik6
bnVsbCx0LnJlc3VsdD12b2lkIDAsdC50YXJnZXR8fCh0LnRhcmdldD1uKSxyPW51bGw9PXI/W3Rd
Om9lLm1ha2VBcnJheShyLFt0XSksZj1vZS5ldmVudC5zcGVjaWFsW3BdfHx7fSxpfHwhZi50cmln
Z2VyfHxmLnRyaWdnZXIuYXBwbHkobixyKSE9PSExKSl7aWYoIWkmJiFmLm5vQnViYmxlJiYhb2Uu
aXNXaW5kb3cobikpe2Zvcih1PWYuZGVsZWdhdGVUeXBlfHxwLG10LnRlc3QodStwKXx8KGE9YS5w
YXJlbnROb2RlKTthO2E9YS5wYXJlbnROb2RlKWQucHVzaChhKSxzPWE7cz09PShuLm93bmVyRG9j
dW1lbnR8fEcpJiZkLnB1c2gocy5kZWZhdWx0Vmlld3x8cy5wYXJlbnRXaW5kb3d8fGUpfWZvcihv
PTA7KGE9ZFtvKytdKSYmIXQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKTspdC50eXBlPW8+MT91OmYu
YmluZFR5cGV8fHAsYz0oRWUuZ2V0KGEsImV2ZW50cyIpfHx7fSlbdC50eXBlXSYmRWUuZ2V0KGEs
ImhhbmRsZSIpLGMmJmMuYXBwbHkoYSxyKSxjPWwmJmFbbF0sYyYmYy5hcHBseSYmQ2UoYSkmJih0
LnJlc3VsdD1jLmFwcGx5KGEsciksdC5yZXN1bHQ9PT0hMSYmdC5wcmV2ZW50RGVmYXVsdCgpKTty
ZXR1cm4gdC50eXBlPXAsaXx8dC5pc0RlZmF1bHRQcmV2ZW50ZWQoKXx8Zi5fZGVmYXVsdCYmZi5f
ZGVmYXVsdC5hcHBseShkLnBvcCgpLHIpIT09ITF8fCFDZShuKXx8bCYmb2UuaXNGdW5jdGlvbihu
W3BdKSYmIW9lLmlzV2luZG93KG4pJiYocz1uW2xdLHMmJihuW2xdPW51bGwpLG9lLmV2ZW50LnRy
aWdnZXJlZD1wLG5bcF0oKSxvZS5ldmVudC50cmlnZ2VyZWQ9dm9pZCAwLHMmJihuW2xdPXMpKSx0
LnJlc3VsdH19LHNpbXVsYXRlOmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1vZS5leHRlbmQobmV3IG9l
LkV2ZW50LHIse3R5cGU6ZSxpc1NpbXVsYXRlZDohMH0pO29lLmV2ZW50LnRyaWdnZXIobixudWxs
LHQpfX0pLG9lLmZuLmV4dGVuZCh7dHJpZ2dlcjpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmVh
Y2goZnVuY3Rpb24oKXtvZS5ldmVudC50cmlnZ2VyKGUsdCx0aGlzKX0pfSx0cmlnZ2VySGFuZGxl
cjpmdW5jdGlvbihlLHQpe3ZhciByPXRoaXNbMF07aWYocilyZXR1cm4gb2UuZXZlbnQudHJpZ2dl
cihlLHQsciwhMCl9fSksb2UuZWFjaCgiYmx1ciBmb2N1cyBmb2N1c2luIGZvY3Vzb3V0IGxvYWQg
cmVzaXplIHNjcm9sbCB1bmxvYWQgY2xpY2sgZGJsY2xpY2sgbW91c2Vkb3duIG1vdXNldXAgbW91
c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgY2hhbmdlIHNl
bGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBlcnJvciBjb250ZXh0bWVudSIuc3Bs
aXQoIiAiKSxmdW5jdGlvbihlLHQpe29lLmZuW3RdPWZ1bmN0aW9uKGUscil7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg+MD90aGlzLm9uKHQsbnVsbCxlLHIpOnRoaXMudHJpZ2dlcih0KX19KSxvZS5m
bi5leHRlbmQoe2hvdmVyOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMubW91c2VlbnRlcihlKS5t
b3VzZWxlYXZlKHR8fGUpfX0pLG5lLmZvY3VzaW49Im9uZm9jdXNpbiJpbiBlLG5lLmZvY3VzaW58
fG9lLmVhY2goe2ZvY3VzOiJmb2N1c2luIixibHVyOiJmb2N1c291dCJ9LGZ1bmN0aW9uKGUsdCl7
dmFyIHI9ZnVuY3Rpb24oZSl7b2UuZXZlbnQuc2ltdWxhdGUodCxlLnRhcmdldCxvZS5ldmVudC5m
aXgoZSkpfTtvZS5ldmVudC5zcGVjaWFsW3RdPXtzZXR1cDpmdW5jdGlvbigpe3ZhciBuPXRoaXMu
b3duZXJEb2N1bWVudHx8dGhpcyxpPUVlLmFjY2VzcyhuLHQpO2l8fG4uYWRkRXZlbnRMaXN0ZW5l
cihlLHIsITApLEVlLmFjY2VzcyhuLHQsKGl8fDApKzEpfSx0ZWFyZG93bjpmdW5jdGlvbigpe3Zh
ciBuPXRoaXMub3duZXJEb2N1bWVudHx8dGhpcyxpPUVlLmFjY2VzcyhuLHQpLTE7aT9FZS5hY2Nl
c3Mobix0LGkpOihuLnJlbW92ZUV2ZW50TGlzdGVuZXIoZSxyLCEwKSxFZS5yZW1vdmUobix0KSl9
fX0pO3ZhciB2dD1lLmxvY2F0aW9uLGJ0PW9lLm5vdygpLGd0PS9cPy87b2UucGFyc2VKU09OPWZ1
bmN0aW9uKGUpe3JldHVybiBKU09OLnBhcnNlKGUrIiIpfSxvZS5wYXJzZVhNTD1mdW5jdGlvbih0
KXt2YXIgcjtpZighdHx8InN0cmluZyIhPXR5cGVvZiB0KXJldHVybiBudWxsO3RyeXtyPShuZXcg
ZS5ET01QYXJzZXIpLnBhcnNlRnJvbVN0cmluZyh0LCJ0ZXh0L3htbCIpfWNhdGNoKGUpe3I9dm9p
ZCAwfXJldHVybiByJiYhci5nZXRFbGVtZW50c0J5VGFnTmFtZSgicGFyc2VyZXJyb3IiKS5sZW5n
dGh8fG9lLmVycm9yKCJJbnZhbGlkIFhNTDogIit0KSxyfTt2YXIgeXQ9LyMuKiQvLF90PS8oWz8m
XSlfPVteJl0qLyx3dD0vXiguKj8pOlsgXHRdKihbXlxyXG5dKikkL2dtLHh0PS9eKD86YWJvdXR8
YXBwfGFwcC1zdG9yYWdlfC4rLWV4dGVuc2lvbnxmaWxlfHJlc3x3aWRnZXQpOiQvLGt0PS9eKD86
R0VUfEhFQUQpJC8sQ3Q9L15cL1wvLyxFdD17fSxPdD17fSxUdD0iKi8iLmNvbmNhdCgiKiIpLE50
PUcuY3JlYXRlRWxlbWVudCgiYSIpO050LmhyZWY9dnQuaHJlZixvZS5leHRlbmQoe2FjdGl2ZTow
LGxhc3RNb2RpZmllZDp7fSxldGFnOnt9LGFqYXhTZXR0aW5nczp7dXJsOnZ0LmhyZWYsdHlwZToi
R0VUIixpc0xvY2FsOnh0LnRlc3QodnQucHJvdG9jb2wpLGdsb2JhbDohMCxwcm9jZXNzRGF0YToh
MCxhc3luYzohMCxjb250ZW50VHlwZToiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVk
OyBjaGFyc2V0PVVURi04IixhY2NlcHRzOnsiKiI6VHQsdGV4dDoidGV4dC9wbGFpbiIsaHRtbDoi
dGV4dC9odG1sIix4bWw6ImFwcGxpY2F0aW9uL3htbCwgdGV4dC94bWwiLGpzb246ImFwcGxpY2F0
aW9uL2pzb24sIHRleHQvamF2YXNjcmlwdCJ9LGNvbnRlbnRzOnt4bWw6L1xieG1sXGIvLGh0bWw6
L1xiaHRtbC8sanNvbjovXGJqc29uXGIvfSxyZXNwb25zZUZpZWxkczp7eG1sOiJyZXNwb25zZVhN
TCIsdGV4dDoicmVzcG9uc2VUZXh0Iixqc29uOiJyZXNwb25zZUpTT04ifSxjb252ZXJ0ZXJzOnsi
KiB0ZXh0IjpTdHJpbmcsInRleHQgaHRtbCI6ITAsInRleHQganNvbiI6b2UucGFyc2VKU09OLCJ0
ZXh0IHhtbCI6b2UucGFyc2VYTUx9LGZsYXRPcHRpb25zOnt1cmw6ITAsY29udGV4dDohMH19LGFq
YXhTZXR1cDpmdW5jdGlvbihlLHQpe3JldHVybiB0P0IoQihlLG9lLmFqYXhTZXR0aW5ncyksdCk6
QihvZS5hamF4U2V0dGluZ3MsZSl9LGFqYXhQcmVmaWx0ZXI6cShFdCksYWpheFRyYW5zcG9ydDpx
KE90KSxhamF4OmZ1bmN0aW9uKHQscil7ZnVuY3Rpb24gbih0LHIsbixzKXt2YXIgbCxmLGcseSx3
LGs9cjsyIT09XyYmKF89Mix1JiZlLmNsZWFyVGltZW91dCh1KSxpPXZvaWQgMCxhPXN8fCIiLHgu
cmVhZHlTdGF0ZT10PjA/NDowLGw9dD49MjAwJiZ0PDMwMHx8MzA0PT09dCxuJiYoeT1VKGQseCxu
KSkseT1XKGQseSx4LGwpLGw/KGQuaWZNb2RpZmllZCYmKHc9eC5nZXRSZXNwb25zZUhlYWRlcigi
TGFzdC1Nb2RpZmllZCIpLHcmJihvZS5sYXN0TW9kaWZpZWRbb109dyksdz14LmdldFJlc3BvbnNl
SGVhZGVyKCJldGFnIiksdyYmKG9lLmV0YWdbb109dykpLDIwND09PXR8fCJIRUFEIj09PWQudHlw
ZT9rPSJub2NvbnRlbnQiOjMwND09PXQ/az0ibm90bW9kaWZpZWQiOihrPXkuc3RhdGUsZj15LmRh
dGEsZz15LmVycm9yLGw9IWcpKTooZz1rLCF0JiZrfHwoaz0iZXJyb3IiLHQ8MCYmKHQ9MCkpKSx4
LnN0YXR1cz10LHguc3RhdHVzVGV4dD0ocnx8aykrIiIsbD9tLnJlc29sdmVXaXRoKHAsW2Ysayx4
XSk6bS5yZWplY3RXaXRoKHAsW3gsayxnXSkseC5zdGF0dXNDb2RlKGIpLGI9dm9pZCAwLGMmJmgu
dHJpZ2dlcihsPyJhamF4U3VjY2VzcyI6ImFqYXhFcnJvciIsW3gsZCxsP2Y6Z10pLHYuZmlyZVdp
dGgocCxbeCxrXSksYyYmKGgudHJpZ2dlcigiYWpheENvbXBsZXRlIixbeCxkXSksLS1vZS5hY3Rp
dmV8fG9lLmV2ZW50LnRyaWdnZXIoImFqYXhTdG9wIikpKX0ib2JqZWN0Ij09dHlwZW9mIHQmJihy
PXQsdD12b2lkIDApLHI9cnx8e307dmFyIGksbyxhLHMsdSxsLGMsZixkPW9lLmFqYXhTZXR1cCh7
fSxyKSxwPWQuY29udGV4dHx8ZCxoPWQuY29udGV4dCYmKHAubm9kZVR5cGV8fHAuanF1ZXJ5KT9v
ZShwKTpvZS5ldmVudCxtPW9lLkRlZmVycmVkKCksdj1vZS5DYWxsYmFja3MoIm9uY2UgbWVtb3J5
IiksYj1kLnN0YXR1c0NvZGV8fHt9LGc9e30seT17fSxfPTAsdz0iY2FuY2VsZWQiLHg9e3JlYWR5
U3RhdGU6MCxnZXRSZXNwb25zZUhlYWRlcjpmdW5jdGlvbihlKXt2YXIgdDtpZigyPT09Xyl7aWYo
IXMpZm9yKHM9e307dD13dC5leGVjKGEpOylzW3RbMV0udG9Mb3dlckNhc2UoKV09dFsyXTt0PXNb
ZS50b0xvd2VyQ2FzZSgpXX1yZXR1cm4gbnVsbD09dD9udWxsOnR9LGdldEFsbFJlc3BvbnNlSGVh
ZGVyczpmdW5jdGlvbigpe3JldHVybiAyPT09Xz9hOm51bGx9LHNldFJlcXVlc3RIZWFkZXI6ZnVu
Y3Rpb24oZSx0KXt2YXIgcj1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuIF98fChlPXlbcl09eVtyXXx8
ZSxnW2VdPXQpLHRoaXN9LG92ZXJyaWRlTWltZVR5cGU6ZnVuY3Rpb24oZSl7cmV0dXJuIF98fChk
Lm1pbWVUeXBlPWUpLHRoaXN9LHN0YXR1c0NvZGU6ZnVuY3Rpb24oZSl7dmFyIHQ7aWYoZSlpZihf
PDIpZm9yKHQgaW4gZSliW3RdPVtiW3RdLGVbdF1dO2Vsc2UgeC5hbHdheXMoZVt4LnN0YXR1c10p
O3JldHVybiB0aGlzfSxhYm9ydDpmdW5jdGlvbihlKXt2YXIgdD1lfHx3O3JldHVybiBpJiZpLmFi
b3J0KHQpLG4oMCx0KSx0aGlzfX07aWYobS5wcm9taXNlKHgpLmNvbXBsZXRlPXYuYWRkLHguc3Vj
Y2Vzcz14LmRvbmUseC5lcnJvcj14LmZhaWwsZC51cmw9KCh0fHxkLnVybHx8dnQuaHJlZikrIiIp
LnJlcGxhY2UoeXQsIiIpLnJlcGxhY2UoQ3QsdnQucHJvdG9jb2wrIi8vIiksZC50eXBlPXIubWV0
aG9kfHxyLnR5cGV8fGQubWV0aG9kfHxkLnR5cGUsZC5kYXRhVHlwZXM9b2UudHJpbShkLmRhdGFU
eXBlfHwiKiIpLnRvTG93ZXJDYXNlKCkubWF0Y2god2UpfHxbIiJdLG51bGw9PWQuY3Jvc3NEb21h
aW4pe2w9Ry5jcmVhdGVFbGVtZW50KCJhIik7dHJ5e2wuaHJlZj1kLnVybCxsLmhyZWY9bC5ocmVm
LGQuY3Jvc3NEb21haW49TnQucHJvdG9jb2wrIi8vIitOdC5ob3N0IT1sLnByb3RvY29sKyIvLyIr
bC5ob3N0fWNhdGNoKGUpe2QuY3Jvc3NEb21haW49ITB9fWlmKGQuZGF0YSYmZC5wcm9jZXNzRGF0
YSYmInN0cmluZyIhPXR5cGVvZiBkLmRhdGEmJihkLmRhdGE9b2UucGFyYW0oZC5kYXRhLGQudHJh
ZGl0aW9uYWwpKSx6KEV0LGQscix4KSwyPT09XylyZXR1cm4geDtjPW9lLmV2ZW50JiZkLmdsb2Jh
bCxjJiYwPT09b2UuYWN0aXZlKysmJm9lLmV2ZW50LnRyaWdnZXIoImFqYXhTdGFydCIpLGQudHlw
ZT1kLnR5cGUudG9VcHBlckNhc2UoKSxkLmhhc0NvbnRlbnQ9IWt0LnRlc3QoZC50eXBlKSxvPWQu
dXJsLGQuaGFzQ29udGVudHx8KGQuZGF0YSYmKG89ZC51cmwrPShndC50ZXN0KG8pPyImIjoiPyIp
K2QuZGF0YSxkZWxldGUgZC5kYXRhKSxkLmNhY2hlPT09ITEmJihkLnVybD1fdC50ZXN0KG8pP28u
cmVwbGFjZShfdCwiJDFfPSIrYnQrKyk6bysoZ3QudGVzdChvKT8iJiI6Ij8iKSsiXz0iK2J0Kysp
KSxkLmlmTW9kaWZpZWQmJihvZS5sYXN0TW9kaWZpZWRbb10mJnguc2V0UmVxdWVzdEhlYWRlcigi
SWYtTW9kaWZpZWQtU2luY2UiLG9lLmxhc3RNb2RpZmllZFtvXSksb2UuZXRhZ1tvXSYmeC5zZXRS
ZXF1ZXN0SGVhZGVyKCJJZi1Ob25lLU1hdGNoIixvZS5ldGFnW29dKSksKGQuZGF0YSYmZC5oYXND
b250ZW50JiZkLmNvbnRlbnRUeXBlIT09ITF8fHIuY29udGVudFR5cGUpJiZ4LnNldFJlcXVlc3RI
ZWFkZXIoIkNvbnRlbnQtVHlwZSIsZC5jb250ZW50VHlwZSkseC5zZXRSZXF1ZXN0SGVhZGVyKCJB
Y2NlcHQiLGQuZGF0YVR5cGVzWzBdJiZkLmFjY2VwdHNbZC5kYXRhVHlwZXNbMF1dP2QuYWNjZXB0
c1tkLmRhdGFUeXBlc1swXV0rKCIqIiE9PWQuZGF0YVR5cGVzWzBdPyIsICIrVHQrIjsgcT0wLjAx
IjoiIik6ZC5hY2NlcHRzWyIqIl0pO2ZvcihmIGluIGQuaGVhZGVycyl4LnNldFJlcXVlc3RIZWFk
ZXIoZixkLmhlYWRlcnNbZl0pO2lmKGQuYmVmb3JlU2VuZCYmKGQuYmVmb3JlU2VuZC5jYWxsKHAs
eCxkKT09PSExfHwyPT09XykpcmV0dXJuIHguYWJvcnQoKTt3PSJhYm9ydCI7Zm9yKGYgaW57c3Vj
Y2VzczoxLGVycm9yOjEsY29tcGxldGU6MX0peFtmXShkW2ZdKTtpZihpPXooT3QsZCxyLHgpKXtp
Zih4LnJlYWR5U3RhdGU9MSxjJiZoLnRyaWdnZXIoImFqYXhTZW5kIixbeCxkXSksMj09PV8pcmV0
dXJuIHg7ZC5hc3luYyYmZC50aW1lb3V0PjAmJih1PWUuc2V0VGltZW91dChmdW5jdGlvbigpe3gu
YWJvcnQoInRpbWVvdXQiKX0sZC50aW1lb3V0KSk7dHJ5e189MSxpLnNlbmQoZyxuKX1jYXRjaChl
KXtpZighKF88MikpdGhyb3cgZTtuKC0xLGUpfX1lbHNlIG4oLTEsIk5vIFRyYW5zcG9ydCIpO3Jl
dHVybiB4fSxnZXRKU09OOmZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gb2UuZ2V0KGUsdCxyLCJqc29u
Iil9LGdldFNjcmlwdDpmdW5jdGlvbihlLHQpe3JldHVybiBvZS5nZXQoZSx2b2lkIDAsdCwic2Ny
aXB0Iil9fSksb2UuZWFjaChbImdldCIsInBvc3QiXSxmdW5jdGlvbihlLHQpe29lW3RdPWZ1bmN0
aW9uKGUscixuLGkpe3JldHVybiBvZS5pc0Z1bmN0aW9uKHIpJiYoaT1pfHxuLG49cixyPXZvaWQg
MCksb2UuYWpheChvZS5leHRlbmQoe3VybDplLHR5cGU6dCxkYXRhVHlwZTppLGRhdGE6cixzdWNj
ZXNzOm59LG9lLmlzUGxhaW5PYmplY3QoZSkmJmUpKX19KSxvZS5fZXZhbFVybD1mdW5jdGlvbihl
KXtyZXR1cm4gb2UuYWpheCh7dXJsOmUsdHlwZToiR0VUIixkYXRhVHlwZToic2NyaXB0Iixhc3lu
YzohMSxnbG9iYWw6ITEsdGhyb3dzOiEwfSl9LG9lLmZuLmV4dGVuZCh7d3JhcEFsbDpmdW5jdGlv
bihlKXt2YXIgdDtyZXR1cm4gb2UuaXNGdW5jdGlvbihlKT90aGlzLmVhY2goZnVuY3Rpb24odCl7
b2UodGhpcykud3JhcEFsbChlLmNhbGwodGhpcyx0KSl9KToodGhpc1swXSYmKHQ9b2UoZSx0aGlz
WzBdLm93bmVyRG9jdW1lbnQpLmVxKDApLmNsb25lKCEwKSx0aGlzWzBdLnBhcmVudE5vZGUmJnQu
aW5zZXJ0QmVmb3JlKHRoaXNbMF0pLHQubWFwKGZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXM7ZS5m
aXJzdEVsZW1lbnRDaGlsZDspZT1lLmZpcnN0RWxlbWVudENoaWxkO3JldHVybiBlfSkuYXBwZW5k
KHRoaXMpKSx0aGlzKX0sd3JhcElubmVyOmZ1bmN0aW9uKGUpe3JldHVybiBvZS5pc0Z1bmN0aW9u
KGUpP3RoaXMuZWFjaChmdW5jdGlvbih0KXtvZSh0aGlzKS53cmFwSW5uZXIoZS5jYWxsKHRoaXMs
dCkpfSk6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIHQ9b2UodGhpcykscj10LmNvbnRlbnRzKCk7
ci5sZW5ndGg/ci53cmFwQWxsKGUpOnQuYXBwZW5kKGUpfSl9LHdyYXA6ZnVuY3Rpb24oZSl7dmFy
IHQ9b2UuaXNGdW5jdGlvbihlKTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKHIpe29lKHRoaXMp
LndyYXBBbGwodD9lLmNhbGwodGhpcyxyKTplKX0pfSx1bndyYXA6ZnVuY3Rpb24oKXtyZXR1cm4g
dGhpcy5wYXJlbnQoKS5lYWNoKGZ1bmN0aW9uKCl7b2Uubm9kZU5hbWUodGhpcywiYm9keSIpfHxv
ZSh0aGlzKS5yZXBsYWNlV2l0aCh0aGlzLmNoaWxkTm9kZXMpfSkuZW5kKCl9fSksb2UuZXhwci5m
aWx0ZXJzLmhpZGRlbj1mdW5jdGlvbihlKXtyZXR1cm4hb2UuZXhwci5maWx0ZXJzLnZpc2libGUo
ZSl9LG9lLmV4cHIuZmlsdGVycy52aXNpYmxlPWZ1bmN0aW9uKGUpe3JldHVybiBlLm9mZnNldFdp
ZHRoPjB8fGUub2Zmc2V0SGVpZ2h0PjB8fGUuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGg+MH07dmFy
IFN0PS8lMjAvZyxBdD0vXFtcXSQvLFB0PS9ccj9cbi9nLGp0PS9eKD86c3VibWl0fGJ1dHRvbnxp
bWFnZXxyZXNldHxmaWxlKSQvaSxSdD0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxrZXlnZW4p
L2k7b2UucGFyYW09ZnVuY3Rpb24oZSx0KXt2YXIgcixuPVtdLGk9ZnVuY3Rpb24oZSx0KXt0PW9l
LmlzRnVuY3Rpb24odCk/dCgpOm51bGw9PXQ/IiI6dCxuW24ubGVuZ3RoXT1lbmNvZGVVUklDb21w
b25lbnQoZSkrIj0iK2VuY29kZVVSSUNvbXBvbmVudCh0KX07aWYodm9pZCAwPT09dCYmKHQ9b2Uu
YWpheFNldHRpbmdzJiZvZS5hamF4U2V0dGluZ3MudHJhZGl0aW9uYWwpLG9lLmlzQXJyYXkoZSl8
fGUuanF1ZXJ5JiYhb2UuaXNQbGFpbk9iamVjdChlKSlvZS5lYWNoKGUsZnVuY3Rpb24oKXtpKHRo
aXMubmFtZSx0aGlzLnZhbHVlKX0pO2Vsc2UgZm9yKHIgaW4gZSkkKHIsZVtyXSx0LGkpO3JldHVy
biBuLmpvaW4oIiYiKS5yZXBsYWNlKFN0LCIrIil9LG9lLmZuLmV4dGVuZCh7c2VyaWFsaXplOmZ1
bmN0aW9uKCl7cmV0dXJuIG9lLnBhcmFtKHRoaXMuc2VyaWFsaXplQXJyYXkoKSl9LHNlcmlhbGl6
ZUFycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7dmFyIGU9b2UucHJv
cCh0aGlzLCJlbGVtZW50cyIpO3JldHVybiBlP29lLm1ha2VBcnJheShlKTp0aGlzfSkuZmlsdGVy
KGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy50eXBlO3JldHVybiB0aGlzLm5hbWUmJiFvZSh0aGlzKS5p
cygiOmRpc2FibGVkIikmJlJ0LnRlc3QodGhpcy5ub2RlTmFtZSkmJiFqdC50ZXN0KGUpJiYodGhp
cy5jaGVja2VkfHwhUmUudGVzdChlKSl9KS5tYXAoZnVuY3Rpb24oZSx0KXt2YXIgcj1vZSh0aGlz
KS52YWwoKTtyZXR1cm4gbnVsbD09cj9udWxsOm9lLmlzQXJyYXkocik/b2UubWFwKHIsZnVuY3Rp
b24oZSl7cmV0dXJue25hbWU6dC5uYW1lLHZhbHVlOmUucmVwbGFjZShQdCwiXHJcbiIpfX0pOntu
YW1lOnQubmFtZSx2YWx1ZTpyLnJlcGxhY2UoUHQsIlxyXG4iKX19KS5nZXQoKX19KSxvZS5hamF4
U2V0dGluZ3MueGhyPWZ1bmN0aW9uKCl7dHJ5e3JldHVybiBuZXcgZS5YTUxIdHRwUmVxdWVzdH1j
YXRjaChlKXt9fTt2YXIgTHQ9ezA6MjAwLDEyMjM6MjA0fSxEdD1vZS5hamF4U2V0dGluZ3MueGhy
KCk7bmUuY29ycz0hIUR0JiYid2l0aENyZWRlbnRpYWxzImluIER0LG5lLmFqYXg9RHQ9ISFEdCxv
ZS5hamF4VHJhbnNwb3J0KGZ1bmN0aW9uKHQpe3ZhciByLG47aWYobmUuY29yc3x8RHQmJiF0LmNy
b3NzRG9tYWluKXJldHVybntzZW5kOmZ1bmN0aW9uKGksbyl7dmFyIGEscz10LnhocigpO2lmKHMu
b3Blbih0LnR5cGUsdC51cmwsdC5hc3luYyx0LnVzZXJuYW1lLHQucGFzc3dvcmQpLHQueGhyRmll
bGRzKWZvcihhIGluIHQueGhyRmllbGRzKXNbYV09dC54aHJGaWVsZHNbYV07dC5taW1lVHlwZSYm
cy5vdmVycmlkZU1pbWVUeXBlJiZzLm92ZXJyaWRlTWltZVR5cGUodC5taW1lVHlwZSksdC5jcm9z
c0RvbWFpbnx8aVsiWC1SZXF1ZXN0ZWQtV2l0aCJdfHwoaVsiWC1SZXF1ZXN0ZWQtV2l0aCJdPSJY
TUxIdHRwUmVxdWVzdCIpO2ZvcihhIGluIGkpcy5zZXRSZXF1ZXN0SGVhZGVyKGEsaVthXSk7cj1m
dW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyJiYocj1uPXMub25sb2FkPXMub25lcnJvcj1z
Lm9uYWJvcnQ9cy5vbnJlYWR5c3RhdGVjaGFuZ2U9bnVsbCwiYWJvcnQiPT09ZT9zLmFib3J0KCk6
ImVycm9yIj09PWU/Im51bWJlciIhPXR5cGVvZiBzLnN0YXR1cz9vKDAsImVycm9yIik6byhzLnN0
YXR1cyxzLnN0YXR1c1RleHQpOm8oTHRbcy5zdGF0dXNdfHxzLnN0YXR1cyxzLnN0YXR1c1RleHQs
InRleHQiIT09KHMucmVzcG9uc2VUeXBlfHwidGV4dCIpfHwic3RyaW5nIiE9dHlwZW9mIHMucmVz
cG9uc2VUZXh0P3tiaW5hcnk6cy5yZXNwb25zZX06e3RleHQ6cy5yZXNwb25zZVRleHR9LHMuZ2V0
QWxsUmVzcG9uc2VIZWFkZXJzKCkpKX19LHMub25sb2FkPXIoKSxuPXMub25lcnJvcj1yKCJlcnJv
ciIpLHZvaWQgMCE9PXMub25hYm9ydD9zLm9uYWJvcnQ9bjpzLm9ucmVhZHlzdGF0ZWNoYW5nZT1m
dW5jdGlvbigpezQ9PT1zLnJlYWR5U3RhdGUmJmUuc2V0VGltZW91dChmdW5jdGlvbigpe3ImJm4o
KX0pfSxyPXIoImFib3J0Iik7dHJ5e3Muc2VuZCh0Lmhhc0NvbnRlbnQmJnQuZGF0YXx8bnVsbCl9
Y2F0Y2goZSl7aWYocil0aHJvdyBlfX0sYWJvcnQ6ZnVuY3Rpb24oKXtyJiZyKCl9fX0pLG9lLmFq
YXhTZXR1cCh7YWNjZXB0czp7c2NyaXB0OiJ0ZXh0L2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2ph
dmFzY3JpcHQsIGFwcGxpY2F0aW9uL2VjbWFzY3JpcHQsIGFwcGxpY2F0aW9uL3gtZWNtYXNjcmlw
dCJ9LGNvbnRlbnRzOntzY3JpcHQ6L1xiKD86amF2YXxlY21hKXNjcmlwdFxiL30sY29udmVydGVy
czp7InRleHQgc2NyaXB0IjpmdW5jdGlvbihlKXtyZXR1cm4gb2UuZ2xvYmFsRXZhbChlKSxlfX19
KSxvZS5hamF4UHJlZmlsdGVyKCJzY3JpcHQiLGZ1bmN0aW9uKGUpe3ZvaWQgMD09PWUuY2FjaGUm
JihlLmNhY2hlPSExKSxlLmNyb3NzRG9tYWluJiYoZS50eXBlPSJHRVQiKX0pLG9lLmFqYXhUcmFu
c3BvcnQoInNjcmlwdCIsZnVuY3Rpb24oZSl7aWYoZS5jcm9zc0RvbWFpbil7dmFyIHQscjtyZXR1
cm57c2VuZDpmdW5jdGlvbihuLGkpe3Q9b2UoIjxzY3JpcHQ+IikucHJvcCh7Y2hhcnNldDplLnNj
cmlwdENoYXJzZXQsc3JjOmUudXJsfSkub24oImxvYWQgZXJyb3IiLHI9ZnVuY3Rpb24oZSl7dC5y
ZW1vdmUoKSxyPW51bGwsZSYmaSgiZXJyb3IiPT09ZS50eXBlPzQwNDoyMDAsZS50eXBlKX0pLEcu
aGVhZC5hcHBlbmRDaGlsZCh0WzBdKX0sYWJvcnQ6ZnVuY3Rpb24oKXtyJiZyKCl9fX19KTt2YXIg
TXQ9W10sSXQ9Lyg9KVw/KD89JnwkKXxcP1w/LztvZS5hamF4U2V0dXAoe2pzb25wOiJjYWxsYmFj
ayIsanNvbnBDYWxsYmFjazpmdW5jdGlvbigpe3ZhciBlPU10LnBvcCgpfHxvZS5leHBhbmRvKyJf
IitidCsrO3JldHVybiB0aGlzW2VdPSEwLGV9fSksb2UuYWpheFByZWZpbHRlcigianNvbiBqc29u
cCIsZnVuY3Rpb24odCxyLG4pe3ZhciBpLG8sYSxzPXQuanNvbnAhPT0hMSYmKEl0LnRlc3QodC51
cmwpPyJ1cmwiOiJzdHJpbmciPT10eXBlb2YgdC5kYXRhJiYwPT09KHQuY29udGVudFR5cGV8fCIi
KS5pbmRleE9mKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKSYmSXQudGVzdCh0
LmRhdGEpJiYiZGF0YSIpO2lmKHN8fCJqc29ucCI9PT10LmRhdGFUeXBlc1swXSlyZXR1cm4gaT10
Lmpzb25wQ2FsbGJhY2s9b2UuaXNGdW5jdGlvbih0Lmpzb25wQ2FsbGJhY2spP3QuanNvbnBDYWxs
YmFjaygpOnQuanNvbnBDYWxsYmFjayxzP3Rbc109dFtzXS5yZXBsYWNlKEl0LCIkMSIraSk6dC5q
c29ucCE9PSExJiYodC51cmwrPShndC50ZXN0KHQudXJsKT8iJiI6Ij8iKSt0Lmpzb25wKyI9Iitp
KSx0LmNvbnZlcnRlcnNbInNjcmlwdCBqc29uIl09ZnVuY3Rpb24oKXtyZXR1cm4gYXx8b2UuZXJy
b3IoaSsiIHdhcyBub3QgY2FsbGVkIiksYVswXX0sdC5kYXRhVHlwZXNbMF09Impzb24iLG89ZVtp
XSxlW2ldPWZ1bmN0aW9uKCl7YT1hcmd1bWVudHN9LG4uYWx3YXlzKGZ1bmN0aW9uKCl7dm9pZCAw
PT09bz9vZShlKS5yZW1vdmVQcm9wKGkpOmVbaV09byx0W2ldJiYodC5qc29ucENhbGxiYWNrPXIu
anNvbnBDYWxsYmFjayxNdC5wdXNoKGkpKSxhJiZvZS5pc0Z1bmN0aW9uKG8pJiZvKGFbMF0pLGE9
bz12b2lkIDB9KSwic2NyaXB0In0pLG9lLnBhcnNlSFRNTD1mdW5jdGlvbihlLHQscil7aWYoIWV8
fCJzdHJpbmciIT10eXBlb2YgZSlyZXR1cm4gbnVsbDsiYm9vbGVhbiI9PXR5cGVvZiB0JiYocj10
LHQ9ITEpLHQ9dHx8Rzt2YXIgbj1oZS5leGVjKGUpLGk9IXImJltdO3JldHVybiBuP1t0LmNyZWF0
ZUVsZW1lbnQoblsxXSldOihuPWQoW2VdLHQsaSksaSYmaS5sZW5ndGgmJm9lKGkpLnJlbW92ZSgp
LG9lLm1lcmdlKFtdLG4uY2hpbGROb2RlcykpfTt2YXIgRnQ9b2UuZm4ubG9hZDtvZS5mbi5sb2Fk
PWZ1bmN0aW9uKGUsdCxyKXtpZigic3RyaW5nIiE9dHlwZW9mIGUmJkZ0KXJldHVybiBGdC5hcHBs
eSh0aGlzLGFyZ3VtZW50cyk7dmFyIG4saSxvLGE9dGhpcyxzPWUuaW5kZXhPZigiICIpO3JldHVy
biBzPi0xJiYobj1vZS50cmltKGUuc2xpY2UocykpLGU9ZS5zbGljZSgwLHMpKSxvZS5pc0Z1bmN0
aW9uKHQpPyhyPXQsdD12b2lkIDApOnQmJiJvYmplY3QiPT10eXBlb2YgdCYmKGk9IlBPU1QiKSxh
Lmxlbmd0aD4wJiZvZS5hamF4KHt1cmw6ZSx0eXBlOml8fCJHRVQiLGRhdGFUeXBlOiJodG1sIixk
YXRhOnR9KS5kb25lKGZ1bmN0aW9uKGUpe289YXJndW1lbnRzLGEuaHRtbChuP29lKCI8ZGl2PiIp
LmFwcGVuZChvZS5wYXJzZUhUTUwoZSkpLmZpbmQobik6ZSl9KS5hbHdheXMociYmZnVuY3Rpb24o
ZSx0KXthLmVhY2goZnVuY3Rpb24oKXtyLmFwcGx5KHRoaXMsb3x8W2UucmVzcG9uc2VUZXh0LHQs
ZV0pfSl9KSx0aGlzfSxvZS5lYWNoKFsiYWpheFN0YXJ0IiwiYWpheFN0b3AiLCJhamF4Q29tcGxl
dGUiLCJhamF4RXJyb3IiLCJhamF4U3VjY2VzcyIsImFqYXhTZW5kIl0sZnVuY3Rpb24oZSx0KXtv
ZS5mblt0XT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5vbih0LGUpfX0pLG9lLmV4cHIuZmlsdGVy
cy5hbmltYXRlZD1mdW5jdGlvbihlKXtyZXR1cm4gb2UuZ3JlcChvZS50aW1lcnMsZnVuY3Rpb24o
dCl7cmV0dXJuIGU9PT10LmVsZW19KS5sZW5ndGh9LG9lLm9mZnNldD17c2V0T2Zmc2V0OmZ1bmN0
aW9uKGUsdCxyKXt2YXIgbixpLG8sYSxzLHUsbCxjPW9lLmNzcyhlLCJwb3NpdGlvbiIpLGY9b2Uo
ZSksZD17fTsic3RhdGljIj09PWMmJihlLnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2ZSIpLHM9Zi5v
ZmZzZXQoKSxvPW9lLmNzcyhlLCJ0b3AiKSx1PW9lLmNzcyhlLCJsZWZ0IiksbD0oImFic29sdXRl
Ij09PWN8fCJmaXhlZCI9PT1jKSYmKG8rdSkuaW5kZXhPZigiYXV0byIpPi0xLGw/KG49Zi5wb3Np
dGlvbigpLGE9bi50b3AsaT1uLmxlZnQpOihhPXBhcnNlRmxvYXQobyl8fDAsaT1wYXJzZUZsb2F0
KHUpfHwwKSxvZS5pc0Z1bmN0aW9uKHQpJiYodD10LmNhbGwoZSxyLG9lLmV4dGVuZCh7fSxzKSkp
LG51bGwhPXQudG9wJiYoZC50b3A9dC50b3Atcy50b3ArYSksbnVsbCE9dC5sZWZ0JiYoZC5sZWZ0
PXQubGVmdC1zLmxlZnQraSksInVzaW5nImluIHQ/dC51c2luZy5jYWxsKGUsZCk6Zi5jc3MoZCl9
fSxvZS5mbi5leHRlbmQoe29mZnNldDpmdW5jdGlvbihlKXtpZihhcmd1bWVudHMubGVuZ3RoKXJl
dHVybiB2b2lkIDA9PT1lP3RoaXM6dGhpcy5lYWNoKGZ1bmN0aW9uKHQpe29lLm9mZnNldC5zZXRP
ZmZzZXQodGhpcyxlLHQpfSk7dmFyIHQscixuPXRoaXNbMF0saT17dG9wOjAsbGVmdDowfSxvPW4m
Jm4ub3duZXJEb2N1bWVudDtpZihvKXJldHVybiB0PW8uZG9jdW1lbnRFbGVtZW50LG9lLmNvbnRh
aW5zKHQsbik/KGk9bi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxyPUsobykse3RvcDppLnRvcCty
LnBhZ2VZT2Zmc2V0LXQuY2xpZW50VG9wLGxlZnQ6aS5sZWZ0K3IucGFnZVhPZmZzZXQtdC5jbGll
bnRMZWZ0fSk6aX0scG9zaXRpb246ZnVuY3Rpb24oKXtpZih0aGlzWzBdKXt2YXIgZSx0LHI9dGhp
c1swXSxuPXt0b3A6MCxsZWZ0OjB9O3JldHVybiJmaXhlZCI9PT1vZS5jc3MociwicG9zaXRpb24i
KT90PXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk6KGU9dGhpcy5vZmZzZXRQYXJlbnQoKSx0PXRo
aXMub2Zmc2V0KCksb2Uubm9kZU5hbWUoZVswXSwiaHRtbCIpfHwobj1lLm9mZnNldCgpKSxuLnRv
cCs9b2UuY3NzKGVbMF0sImJvcmRlclRvcFdpZHRoIiwhMCksbi5sZWZ0Kz1vZS5jc3MoZVswXSwi
Ym9yZGVyTGVmdFdpZHRoIiwhMCkpLHt0b3A6dC50b3Atbi50b3Atb2UuY3NzKHIsIm1hcmdpblRv
cCIsITApLGxlZnQ6dC5sZWZ0LW4ubGVmdC1vZS5jc3MociwibWFyZ2luTGVmdCIsITApfX19LG9m
ZnNldFBhcmVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe2Zvcih2YXIg
ZT10aGlzLm9mZnNldFBhcmVudDtlJiYic3RhdGljIj09PW9lLmNzcyhlLCJwb3NpdGlvbiIpOyll
PWUub2Zmc2V0UGFyZW50O3JldHVybiBlfHxKZX0pfX0pLG9lLmVhY2goe3Njcm9sbExlZnQ6InBh
Z2VYT2Zmc2V0IixzY3JvbGxUb3A6InBhZ2VZT2Zmc2V0In0sZnVuY3Rpb24oZSx0KXt2YXIgcj0i
cGFnZVlPZmZzZXQiPT09dDtvZS5mbltlXT1mdW5jdGlvbihuKXtyZXR1cm4ga2UodGhpcyxmdW5j
dGlvbihlLG4saSl7dmFyIG89SyhlKTtyZXR1cm4gdm9pZCAwPT09aT9vP29bdF06ZVtuXTp2b2lk
KG8/by5zY3JvbGxUbyhyP28ucGFnZVhPZmZzZXQ6aSxyP2k6by5wYWdlWU9mZnNldCk6ZVtuXT1p
KX0sZSxuLGFyZ3VtZW50cy5sZW5ndGgpfX0pLG9lLmVhY2goWyJ0b3AiLCJsZWZ0Il0sZnVuY3Rp
b24oZSx0KXtvZS5jc3NIb29rc1t0XT1UKG5lLnBpeGVsUG9zaXRpb24sZnVuY3Rpb24oZSxyKXtp
ZihyKXJldHVybiByPU8oZSx0KSxHZS50ZXN0KHIpP29lKGUpLnBvc2l0aW9uKClbdF0rInB4Ijpy
fSl9KSxvZS5lYWNoKHtIZWlnaHQ6ImhlaWdodCIsV2lkdGg6IndpZHRoIn0sZnVuY3Rpb24oZSx0
KXtvZS5lYWNoKHtwYWRkaW5nOiJpbm5lciIrZSxjb250ZW50OnQsIiI6Im91dGVyIitlfSxmdW5j
dGlvbihyLG4pe29lLmZuW25dPWZ1bmN0aW9uKG4saSl7dmFyIG89YXJndW1lbnRzLmxlbmd0aCYm
KHJ8fCJib29sZWFuIiE9dHlwZW9mIG4pLGE9cnx8KG49PT0hMHx8aT09PSEwPyJtYXJnaW4iOiJi
b3JkZXIiKTtyZXR1cm4ga2UodGhpcyxmdW5jdGlvbih0LHIsbil7dmFyIGk7cmV0dXJuIG9lLmlz
V2luZG93KHQpP3QuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50WyJjbGllbnQiK2VdOjk9PT10Lm5v
ZGVUeXBlPyhpPXQuZG9jdW1lbnRFbGVtZW50LE1hdGgubWF4KHQuYm9keVsic2Nyb2xsIitlXSxp
WyJzY3JvbGwiK2VdLHQuYm9keVsib2Zmc2V0IitlXSxpWyJvZmZzZXQiK2VdLGlbImNsaWVudCIr
ZV0pKTp2b2lkIDA9PT1uP29lLmNzcyh0LHIsYSk6b2Uuc3R5bGUodCxyLG4sYSl9LHQsbz9uOnZv
aWQgMCxvLG51bGwpfX0pfSksb2UuZm4uZXh0ZW5kKHtiaW5kOmZ1bmN0aW9uKGUsdCxyKXtyZXR1
cm4gdGhpcy5vbihlLG51bGwsdCxyKX0sdW5iaW5kOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMu
b2ZmKGUsbnVsbCx0KX0sZGVsZWdhdGU6ZnVuY3Rpb24oZSx0LHIsbil7cmV0dXJuIHRoaXMub24o
dCxlLHIsbil9LHVuZGVsZWdhdGU6ZnVuY3Rpb24oZSx0LHIpe3JldHVybiAxPT09YXJndW1lbnRz
Lmxlbmd0aD90aGlzLm9mZihlLCIqKiIpOnRoaXMub2ZmKHQsZXx8IioqIixyKX0sc2l6ZTpmdW5j
dGlvbigpe3JldHVybiB0aGlzLmxlbmd0aH19KSxvZS5mbi5hbmRTZWxmPW9lLmZuLmFkZEJhY2ss
ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZCYmZGVmaW5lKCJqcXVlcnkiLFtd
LGZ1bmN0aW9uKCl7cmV0dXJuIG9lfSk7dmFyIEh0PWUualF1ZXJ5LFZ0PWUuJDtyZXR1cm4gb2Uu
bm9Db25mbGljdD1mdW5jdGlvbih0KXtyZXR1cm4gZS4kPT09b2UmJihlLiQ9VnQpLHQmJmUualF1
ZXJ5PT09b2UmJihlLmpRdWVyeT1IdCksb2V9LHR8fChlLmpRdWVyeT1lLiQ9b2UpLG9lfSksZnVu
Y3Rpb24oKXt2YXIgZSx0LHIsbixpPXRoaXM7IWZ1bmN0aW9uKCl7ZnVuY3Rpb24gaShlLHQpe3Ro
cm93IHQ/bmV3IEVycm9yKCJDb3VsZCBub3QgZmluZCBtb2R1bGUgIitlKyIgcmVxdWlyZWQgYnk6
ICIrdCk6bmV3IEVycm9yKCJDb3VsZCBub3QgZmluZCBtb2R1bGUgIitlKX1mdW5jdGlvbiBvKGUs
dCl7dmFyIG49ZSxhPXNbbl07YXx8KG4rPSIvaW5kZXgiLGE9c1tuXSk7dmFyIGw9dVtuXTtpZih2
b2lkIDAhPT1sKXJldHVybiBsO2w9dVtuXT17fSxhfHxpKGUsdCk7Zm9yKHZhciBjPWEuZGVwcyxm
PWEuY2FsbGJhY2ssZD1jLmxlbmd0aCxwPW5ldyBBcnJheShkKSxoPTA7aDxkO2grKykiZXhwb3J0
cyI9PT1jW2hdP3BbaF09bDoicmVxdWlyZSI9PT1jW2hdP3BbaF09cjpwW2hdPW8oY1toXSxuKTty
ZXR1cm4gZi5hcHBseSh0aGlzLHApLGx9dmFyIGE9InVuZGVmaW5lZCI9PXR5cGVvZiB3aW5kb3cm
JiJ1bmRlZmluZWQiIT10eXBlb2YgcHJvY2VzcyYmIltvYmplY3QgcHJvY2Vzc10iPT09e30udG9T
dHJpbmcuY2FsbChwcm9jZXNzKTtpZihhfHwobj10aGlzLkVtYmVyPXRoaXMuRW1iZXJ8fHt9KSwi
dW5kZWZpbmVkIj09dHlwZW9mIG4mJihuPXt9KSwidW5kZWZpbmVkIj09dHlwZW9mIG4uX19sb2Fk
ZXIpe3ZhciBzPXt9LHU9e307ZT1mdW5jdGlvbihlLHQscil7dmFyIG49e307cj8obi5kZXBzPXQs
bi5jYWxsYmFjaz1yKToobi5kZXBzPVtdLG4uY2FsbGJhY2s9dCksc1tlXT1ufSxyPXQ9ZnVuY3Rp
b24oZSl7cmV0dXJuIG8oZSxudWxsKX0sci5kZWZhdWx0PXIsci5oYXM9ZnVuY3Rpb24oZSl7cmV0
dXJuISFzW2VdfHwhIXNbZSsiL2luZGV4Il19LHQuX2Vha19zZWVuPXMsbi5fX2xvYWRlcj17ZGVm
aW5lOmUscmVxdWlyZTpyLHJlZ2lzdHJ5OnN9fWVsc2UgZT1uLl9fbG9hZGVyLmRlZmluZSxyPXQ9
bi5fX2xvYWRlci5yZXF1aXJlfSgpLGUoImJhY2tidXJuZXIiLFsiZXhwb3J0cyIsImJhY2tidXJu
ZXIvdXRpbHMiLCJiYWNrYnVybmVyL3BsYXRmb3JtIiwiYmFja2J1cm5lci9iaW5hcnktc2VhcmNo
IiwiYmFja2J1cm5lci9kZWZlcnJlZC1hY3Rpb24tcXVldWVzIl0sZnVuY3Rpb24oZSx0LHIsbixp
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbyhlLHQpe3RoaXMucXVldWVOYW1lcz1lLHRoaXMub3B0
aW9ucz10fHx7fSx0aGlzLm9wdGlvbnMuZGVmYXVsdFF1ZXVlfHwodGhpcy5vcHRpb25zLmRlZmF1
bHRRdWV1ZT1lWzBdKSx0aGlzLmluc3RhbmNlU3RhY2s9W10sdGhpcy5fZGVib3VuY2Vlcz1bXSx0
aGlzLl90aHJvdHRsZXJzPVtdLHRoaXMuX2V2ZW50Q2FsbGJhY2tzPXtlbmQ6W10sYmVnaW46W119
O3ZhciBuPXRoaXM7dGhpcy5fYm91bmRDbGVhckl0ZW1zPWZ1bmN0aW9uKCl7ZigpfSx0aGlzLl90
aW1lclRpbWVvdXRJZD12b2lkIDAsdGhpcy5fdGltZXJzPVtdLHRoaXMuX3BsYXRmb3JtPXRoaXMu
b3B0aW9ucy5fcGxhdGZvcm18fHIuZGVmYXVsdCx0aGlzLl9ib3VuZFJ1bkV4cGlyZWRUaW1lcnM9
ZnVuY3Rpb24oKXtuLl9ydW5FeHBpcmVkVGltZXJzKCl9fWZ1bmN0aW9uIGEoZSl7cmV0dXJuIGUu
b25FcnJvcnx8ZS5vbkVycm9yVGFyZ2V0JiZlLm9uRXJyb3JUYXJnZXRbZS5vbkVycm9yTWV0aG9k
XX1mdW5jdGlvbiBzKGUpe2UuYmVnaW4oKSxlLl9hdXRvcnVuPWUuX3BsYXRmb3JtLnNldFRpbWVv
dXQoZnVuY3Rpb24oKXtlLl9hdXRvcnVuPW51bGwsZS5lbmQoKX0pfWZ1bmN0aW9uIHUoZSx0LHIp
e3JldHVybiBjKGUsdCxyKX1mdW5jdGlvbiBsKGUsdCxyKXtyZXR1cm4gYyhlLHQscil9ZnVuY3Rp
b24gYyhlLHQscil7Zm9yKHZhciBuLGk9LTEsbz0wLGE9ci5sZW5ndGg7bzxhO28rKylpZihuPXJb
b10sblswXT09PWUmJm5bMV09PT10KXtpPW87YnJlYWt9cmV0dXJuIGl9ZnVuY3Rpb24gZihlKXt0
aGlzLl9wbGF0Zm9ybS5jbGVhclRpbWVvdXQoZVsyXSl9ZS5kZWZhdWx0PW8sby5wcm90b3R5cGU9
e2JlZ2luOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcHRpb25zLHQ9ZSYmZS5vbkJlZ2luLHI9dGhp
cy5jdXJyZW50SW5zdGFuY2U7ciYmdGhpcy5pbnN0YW5jZVN0YWNrLnB1c2gociksdGhpcy5jdXJy
ZW50SW5zdGFuY2U9bmV3IGkuZGVmYXVsdCh0aGlzLnF1ZXVlTmFtZXMsZSksdGhpcy5fdHJpZ2dl
cigiYmVnaW4iLHRoaXMuY3VycmVudEluc3RhbmNlLHIpLHQmJnQodGhpcy5jdXJyZW50SW5zdGFu
Y2Uscil9LGVuZDpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3B0aW9ucyx0PWUmJmUub25FbmQscj10
aGlzLmN1cnJlbnRJbnN0YW5jZSxuPW51bGwsaT0hMTt0cnl7ci5mbHVzaCgpfWZpbmFsbHl7aXx8
KGk9ITAsdGhpcy5jdXJyZW50SW5zdGFuY2U9bnVsbCx0aGlzLmluc3RhbmNlU3RhY2subGVuZ3Ro
JiYobj10aGlzLmluc3RhbmNlU3RhY2sucG9wKCksdGhpcy5jdXJyZW50SW5zdGFuY2U9biksdGhp
cy5fdHJpZ2dlcigiZW5kIixyLG4pLHQmJnQocixuKSl9fSxfdHJpZ2dlcjpmdW5jdGlvbihlLHQs
cil7dmFyIG49dGhpcy5fZXZlbnRDYWxsYmFja3NbZV07aWYobilmb3IodmFyIGk9MDtpPG4ubGVu
Z3RoO2krKyluW2ldKHQscil9LG9uOmZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9m
IHQpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uIik7dmFy
IHI9dGhpcy5fZXZlbnRDYWxsYmFja3NbZV07aWYoIXIpdGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fu
bm90IG9uKCkgZXZlbnQgIicrZSsnIiBiZWNhdXNlIGl0IGRvZXMgbm90IGV4aXN0Jyk7ci5wdXNo
KHQpfSxvZmY6ZnVuY3Rpb24oZSx0KXtpZighZSl0aHJvdyBuZXcgVHlwZUVycm9yKCdDYW5ub3Qg
b2ZmKCkgZXZlbnQgIicrZSsnIiBiZWNhdXNlIGl0IGRvZXMgbm90IGV4aXN0Jyk7dmFyIHI9dGhp
cy5fZXZlbnRDYWxsYmFja3NbZV0sbj0hMTtpZihyKXtpZih0KWZvcih2YXIgaT0wO2k8ci5sZW5n
dGg7aSsrKXJbaV09PT10JiYobj0hMCxyLnNwbGljZShpLDEpLGktLSk7aWYoIW4pdGhyb3cgbmV3
IFR5cGVFcnJvcigiQ2Fubm90IG9mZigpIGNhbGxiYWNrIHRoYXQgZG9lcyBub3QgZXhpc3QiKX19
LHJ1bjpmdW5jdGlvbigpe3ZhciBlLHIsbixpPWFyZ3VtZW50cy5sZW5ndGg7aWYoMT09PWk/KGU9
YXJndW1lbnRzWzBdLHI9bnVsbCk6KHI9YXJndW1lbnRzWzBdLGU9YXJndW1lbnRzWzFdKSx0Lmlz
U3RyaW5nKGUpJiYoZT1yW2VdKSxpPjIpe249bmV3IEFycmF5KGktMik7Zm9yKHZhciBvPTAscz1p
LTI7bzxzO28rKyluW29dPWFyZ3VtZW50c1tvKzJdfWVsc2Ugbj1bXTt2YXIgdT1hKHRoaXMub3B0
aW9ucyk7dGhpcy5iZWdpbigpO3ZhciBsPSExO2lmKHUpdHJ5e3JldHVybiBlLmFwcGx5KHIsbil9
Y2F0Y2goZSl7dShlKX1maW5hbGx5e2x8fChsPSEwLHRoaXMuZW5kKCkpfWVsc2UgdHJ5e3JldHVy
biBlLmFwcGx5KHIsbil9ZmluYWxseXtsfHwobD0hMCx0aGlzLmVuZCgpKX19LGpvaW46ZnVuY3Rp
b24oKXtpZighdGhpcy5jdXJyZW50SW5zdGFuY2UpcmV0dXJuIHRoaXMucnVuLmFwcGx5KHRoaXMs
YXJndW1lbnRzKTt2YXIgZSxyLG49YXJndW1lbnRzLmxlbmd0aDtpZigxPT09bj8oZT1hcmd1bWVu
dHNbMF0scj1udWxsKToocj1hcmd1bWVudHNbMF0sZT1hcmd1bWVudHNbMV0pLHQuaXNTdHJpbmco
ZSkmJihlPXJbZV0pLDE9PT1uKXJldHVybiBlKCk7aWYoMj09PW4pcmV0dXJuIGUuY2FsbChyKTtm
b3IodmFyIGk9bmV3IEFycmF5KG4tMiksbz0wLGE9bi0yO288YTtvKyspaVtvXT1hcmd1bWVudHNb
bysyXTtyZXR1cm4gZS5hcHBseShyLGkpfSxkZWZlcjpmdW5jdGlvbihlKXt2YXIgcixuLGksbz1h
cmd1bWVudHMubGVuZ3RoOzI9PT1vPyhyPWFyZ3VtZW50c1sxXSxuPW51bGwpOihuPWFyZ3VtZW50
c1sxXSxyPWFyZ3VtZW50c1syXSksdC5pc1N0cmluZyhyKSYmKHI9bltyXSk7dmFyIGE9dGhpcy5E
RUJVRz9uZXcgRXJyb3I6dm9pZCAwO2lmKG8+Myl7aT1uZXcgQXJyYXkoby0zKTtmb3IodmFyIHU9
Mzt1PG87dSsrKWlbdS0zXT1hcmd1bWVudHNbdV19ZWxzZSBpPXZvaWQgMDtyZXR1cm4gdGhpcy5j
dXJyZW50SW5zdGFuY2V8fHModGhpcyksdGhpcy5jdXJyZW50SW5zdGFuY2Uuc2NoZWR1bGUoZSxu
LHIsaSwhMSxhKX0sZGVmZXJPbmNlOmZ1bmN0aW9uKGUpe3ZhciByLG4saSxvPWFyZ3VtZW50cy5s
ZW5ndGg7Mj09PW8/KHI9YXJndW1lbnRzWzFdLG49bnVsbCk6KG49YXJndW1lbnRzWzFdLHI9YXJn
dW1lbnRzWzJdKSx0LmlzU3RyaW5nKHIpJiYocj1uW3JdKTt2YXIgYT10aGlzLkRFQlVHP25ldyBF
cnJvcjp2b2lkIDA7aWYobz4zKXtpPW5ldyBBcnJheShvLTMpO2Zvcih2YXIgdT0zO3U8bzt1Kysp
aVt1LTNdPWFyZ3VtZW50c1t1XX1lbHNlIGk9dm9pZCAwO3JldHVybiB0aGlzLmN1cnJlbnRJbnN0
YW5jZXx8cyh0aGlzKSx0aGlzLmN1cnJlbnRJbnN0YW5jZS5zY2hlZHVsZShlLG4scixpLCEwLGEp
fSxzZXRUaW1lb3V0OmZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe2lmKG0pdHJ5e28uYXBwbHkodSxu
KX1jYXRjaChlKXttKGUpfWVsc2Ugby5hcHBseSh1LG4pfWZvcih2YXIgcj1hcmd1bWVudHMubGVu
Z3RoLG49bmV3IEFycmF5KHIpLGk9MDtpPHI7aSsrKW5baV09YXJndW1lbnRzW2ldO3ZhciBvLHMs
dSxsLGMsZixkPW4ubGVuZ3RoO2lmKDAhPT1kKXtpZigxPT09ZClvPW4uc2hpZnQoKSxzPTA7ZWxz
ZSBpZigyPT09ZClsPW5bMF0sYz1uWzFdLHQuaXNGdW5jdGlvbihjKXx8dC5pc0Z1bmN0aW9uKGxb
Y10pPyh1PW4uc2hpZnQoKSxvPW4uc2hpZnQoKSxzPTApOnQuaXNDb2VyY2FibGVOdW1iZXIoYyk/
KG89bi5zaGlmdCgpLHM9bi5zaGlmdCgpKToobz1uLnNoaWZ0KCkscz0wKTtlbHNle3ZhciBwPW5b
bi5sZW5ndGgtMV07cz10LmlzQ29lcmNhYmxlTnVtYmVyKHApP24ucG9wKCk6MCxsPW5bMF0sZj1u
WzFdLHQuaXNGdW5jdGlvbihmKXx8dC5pc1N0cmluZyhmKSYmbnVsbCE9PWwmJmYgaW4gbD8odT1u
LnNoaWZ0KCksbz1uLnNoaWZ0KCkpOm89bi5zaGlmdCgpfXZhciBoPURhdGUubm93KCkrcGFyc2VJ
bnQocyE9PXM/MDpzLDEwKTt0LmlzU3RyaW5nKG8pJiYobz11W29dKTt2YXIgbT1hKHRoaXMub3B0
aW9ucyk7cmV0dXJuIHRoaXMuX3NldFRpbWVvdXQoZSxoKX19LF9zZXRUaW1lb3V0OmZ1bmN0aW9u
KGUsdCl7aWYoMD09PXRoaXMuX3RpbWVycy5sZW5ndGgpcmV0dXJuIHRoaXMuX3RpbWVycy5wdXNo
KHQsZSksdGhpcy5faW5zdGFsbFRpbWVyVGltZW91dCgpLGU7dmFyIHI9bi5kZWZhdWx0KHQsdGhp
cy5fdGltZXJzKTtyZXR1cm4gdGhpcy5fdGltZXJzLnNwbGljZShyLDAsdCxlKSwwPT09ciYmdGhp
cy5fcmVpbnN0YWxsVGltZXJUaW1lb3V0KCksZX0sdGhyb3R0bGU6ZnVuY3Rpb24oZSxyKXtmb3Io
dmFyIG49dGhpcyxpPW5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoKSxvPTA7bzxhcmd1bWVudHMu
bGVuZ3RoO28rKylpW29dPWFyZ3VtZW50c1tvXTt2YXIgYSxzLHUsYyxmPWkucG9wKCk7cmV0dXJu
IHQuaXNOdW1iZXIoZil8fHQuaXNTdHJpbmcoZik/KGE9ZixmPSEwKTphPWkucG9wKCksYT1wYXJz
ZUludChhLDEwKSx1PWwoZSxyLHRoaXMuX3Rocm90dGxlcnMpLHU+LTE/dGhpcy5fdGhyb3R0bGVy
c1t1XTooYz10aGlzLl9wbGF0Zm9ybS5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Znx8bi5ydW4uYXBw
bHkobixpKTt2YXIgdD1sKGUscixuLl90aHJvdHRsZXJzKTsKK3Q+LTEmJm4uX3Rocm90dGxlcnMu
c3BsaWNlKHQsMSl9LGEpLGYmJnRoaXMucnVuLmFwcGx5KHRoaXMsaSkscz1bZSxyLGNdLHRoaXMu
X3Rocm90dGxlcnMucHVzaChzKSxzKX0sZGVib3VuY2U6ZnVuY3Rpb24oZSxyKXtmb3IodmFyIG49
dGhpcyxpPW5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoKSxvPTA7bzxhcmd1bWVudHMubGVuZ3Ro
O28rKylpW29dPWFyZ3VtZW50c1tvXTt2YXIgYSxzLGwsYyxmPWkucG9wKCk7cmV0dXJuIHQuaXNO
dW1iZXIoZil8fHQuaXNTdHJpbmcoZik/KGE9ZixmPSExKTphPWkucG9wKCksYT1wYXJzZUludChh
LDEwKSxzPXUoZSxyLHRoaXMuX2RlYm91bmNlZXMpLHM+LTEmJihsPXRoaXMuX2RlYm91bmNlZXNb
c10sdGhpcy5fZGVib3VuY2Vlcy5zcGxpY2UocywxKSx0aGlzLl9wbGF0Zm9ybS5jbGVhclRpbWVv
dXQobFsyXSkpLGM9dGhpcy5fcGxhdGZvcm0uc2V0VGltZW91dChmdW5jdGlvbigpe2Z8fG4ucnVu
LmFwcGx5KG4saSk7dmFyIHQ9dShlLHIsbi5fZGVib3VuY2Vlcyk7dD4tMSYmbi5fZGVib3VuY2Vl
cy5zcGxpY2UodCwxKX0sYSksZiYmcz09PS0xJiZuLnJ1bi5hcHBseShuLGkpLGw9W2UscixjXSxu
Ll9kZWJvdW5jZWVzLnB1c2gobCksbH0sY2FuY2VsVGltZXJzOmZ1bmN0aW9uKCl7dC5lYWNoKHRo
aXMuX3Rocm90dGxlcnMsdGhpcy5fYm91bmRDbGVhckl0ZW1zKSx0aGlzLl90aHJvdHRsZXJzPVtd
LHQuZWFjaCh0aGlzLl9kZWJvdW5jZWVzLHRoaXMuX2JvdW5kQ2xlYXJJdGVtcyksdGhpcy5fZGVi
b3VuY2Vlcz1bXSx0aGlzLl9jbGVhclRpbWVyVGltZW91dCgpLHRoaXMuX3RpbWVycz1bXSx0aGlz
Ll9hdXRvcnVuJiYodGhpcy5fcGxhdGZvcm0uY2xlYXJUaW1lb3V0KHRoaXMuX2F1dG9ydW4pLHRo
aXMuX2F1dG9ydW49bnVsbCl9LGhhc1RpbWVyczpmdW5jdGlvbigpe3JldHVybiEhdGhpcy5fdGlt
ZXJzLmxlbmd0aHx8ISF0aGlzLl9kZWJvdW5jZWVzLmxlbmd0aHx8ISF0aGlzLl90aHJvdHRsZXJz
Lmxlbmd0aHx8dGhpcy5fYXV0b3J1bn0sY2FuY2VsOmZ1bmN0aW9uKGUpe3ZhciB0PXR5cGVvZiBl
O2lmKGUmJiJvYmplY3QiPT09dCYmZS5xdWV1ZSYmZS5tZXRob2QpcmV0dXJuIGUucXVldWUuY2Fu
Y2VsKGUpO2lmKCJmdW5jdGlvbiIhPT10KXJldHVybiJbb2JqZWN0IEFycmF5XSI9PT1PYmplY3Qu
cHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSk/dGhpcy5fY2FuY2VsSXRlbShsLHRoaXMuX3Rocm90
dGxlcnMsZSl8fHRoaXMuX2NhbmNlbEl0ZW0odSx0aGlzLl9kZWJvdW5jZWVzLGUpOnZvaWQgMDtm
b3IodmFyIHI9MCxuPXRoaXMuX3RpbWVycy5sZW5ndGg7cjxuO3IrPTIpaWYodGhpcy5fdGltZXJz
W3IrMV09PT1lKXJldHVybiB0aGlzLl90aW1lcnMuc3BsaWNlKHIsMiksMD09PXImJnRoaXMuX3Jl
aW5zdGFsbFRpbWVyVGltZW91dCgpLCEwfSxfY2FuY2VsSXRlbTpmdW5jdGlvbihlLHQscil7dmFy
IG4saTtyZXR1cm4hKHIubGVuZ3RoPDMpJiYoaT1lKHJbMF0sclsxXSx0KSxpPi0xJiYobj10W2ld
LG5bMl09PT1yWzJdKSYmKHQuc3BsaWNlKGksMSksdGhpcy5fcGxhdGZvcm0uY2xlYXJUaW1lb3V0
KHJbMl0pLCEwKSl9LF9ydW5FeHBpcmVkVGltZXJzOmZ1bmN0aW9uKCl7dGhpcy5fdGltZXJUaW1l
b3V0SWQ9dm9pZCAwLHRoaXMucnVuKHRoaXMsdGhpcy5fc2NoZWR1bGVFeHBpcmVkVGltZXJzKX0s
X3NjaGVkdWxlRXhwaXJlZFRpbWVyczpmdW5jdGlvbigpe2Zvcih2YXIgZT1EYXRlLm5vdygpLHQ9
dGhpcy5fdGltZXJzLHI9MCxuPXQubGVuZ3RoO3I8bjtyKz0yKXt2YXIgaT10W3JdLG89dFtyKzFd
O2lmKCEoaTw9ZSkpYnJlYWs7dGhpcy5zY2hlZHVsZSh0aGlzLm9wdGlvbnMuZGVmYXVsdFF1ZXVl
LG51bGwsbyl9dC5zcGxpY2UoMCxyKSx0aGlzLl9pbnN0YWxsVGltZXJUaW1lb3V0KCl9LF9yZWlu
c3RhbGxUaW1lclRpbWVvdXQ6ZnVuY3Rpb24oKXt0aGlzLl9jbGVhclRpbWVyVGltZW91dCgpLHRo
aXMuX2luc3RhbGxUaW1lclRpbWVvdXQoKX0sX2NsZWFyVGltZXJUaW1lb3V0OmZ1bmN0aW9uKCl7
dGhpcy5fdGltZXJUaW1lb3V0SWQmJih0aGlzLl9wbGF0Zm9ybS5jbGVhclRpbWVvdXQodGhpcy5f
dGltZXJUaW1lb3V0SWQpLHRoaXMuX3RpbWVyVGltZW91dElkPXZvaWQgMCl9LF9pbnN0YWxsVGlt
ZXJUaW1lb3V0OmZ1bmN0aW9uKCl7aWYodGhpcy5fdGltZXJzLmxlbmd0aCl7dmFyIGU9dGhpcy5f
dGltZXJzWzBdLHQ9RGF0ZS5ub3coKSxyPU1hdGgubWF4KDAsZS10KTt0aGlzLl90aW1lclRpbWVv
dXRJZD10aGlzLl9wbGF0Zm9ybS5zZXRUaW1lb3V0KHRoaXMuX2JvdW5kUnVuRXhwaXJlZFRpbWVy
cyxyKX19fSxvLnByb3RvdHlwZS5zY2hlZHVsZT1vLnByb3RvdHlwZS5kZWZlcixvLnByb3RvdHlw
ZS5zY2hlZHVsZU9uY2U9by5wcm90b3R5cGUuZGVmZXJPbmNlLG8ucHJvdG90eXBlLmxhdGVyPW8u
cHJvdG90eXBlLnNldFRpbWVvdXR9KSxlKCJiYWNrYnVybmVyL2JpbmFyeS1zZWFyY2giLFsiZXhw
b3J0cyJdLGZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB0KGUsdCl7Zm9yKHZhciBy
LG4saT0wLG89dC5sZW5ndGgtMjtpPG87KW49KG8taSkvMixyPWkrbi1uJTIsZT49dFtyXT9pPXIr
MjpvPXI7cmV0dXJuIGU+PXRbaV0/aSsyOml9ZS5kZWZhdWx0PXR9KSxlKCJiYWNrYnVybmVyL2Rl
ZmVycmVkLWFjdGlvbi1xdWV1ZXMiLFsiZXhwb3J0cyIsImJhY2tidXJuZXIvdXRpbHMiLCJiYWNr
YnVybmVyL3F1ZXVlIl0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUs
bil7dmFyIGk9dGhpcy5xdWV1ZXM9e307dGhpcy5xdWV1ZU5hbWVzPWU9ZXx8W10sdGhpcy5vcHRp
b25zPW4sdC5lYWNoKGUsZnVuY3Rpb24oZSl7aVtlXT1uZXcgci5kZWZhdWx0KGUsbltlXSxuKX0p
fWZ1bmN0aW9uIGkoZSl7dGhyb3cgbmV3IEVycm9yKCJZb3UgYXR0ZW1wdGVkIHRvIHNjaGVkdWxl
IGFuIGFjdGlvbiBpbiBhIHF1ZXVlICgiK2UrIikgdGhhdCBkb2Vzbid0IGV4aXN0Iil9ZnVuY3Rp
b24gbyhlKXt0aHJvdyBuZXcgRXJyb3IoIllvdSBhdHRlbXB0ZWQgdG8gc2NoZWR1bGUgYW4gYWN0
aW9uIGluIGEgcXVldWUgKCIrZSsiKSBmb3IgYSBtZXRob2QgdGhhdCBkb2Vzbid0IGV4aXN0Iil9
ZS5kZWZhdWx0PW4sbi5wcm90b3R5cGU9e3NjaGVkdWxlOmZ1bmN0aW9uKGUsdCxyLG4sYSxzKXt2
YXIgdT10aGlzLnF1ZXVlcyxsPXVbZV07cmV0dXJuIGx8fGkoZSkscnx8byhlKSxhP2wucHVzaFVu
aXF1ZSh0LHIsbixzKTpsLnB1c2godCxyLG4scyl9LGZsdXNoOmZ1bmN0aW9uKCl7Zm9yKHZhciBl
LHQscj10aGlzLnF1ZXVlcyxuPXRoaXMucXVldWVOYW1lcyxpPTAsbz1uLmxlbmd0aDtpPG87KXtl
PW5baV0sdD1yW2VdO3ZhciBhPXQuX3F1ZXVlLmxlbmd0aDswPT09YT9pKys6KHQuZmx1c2goITEp
LGk9MCl9fX19KSxlKCJiYWNrYnVybmVyL3BsYXRmb3JtIixbImV4cG9ydHMiXSxmdW5jdGlvbihl
KXsidXNlIHN0cmljdCI7dmFyIHQ7aWYoIm9iamVjdCI9PXR5cGVvZiBzZWxmKXQ9c2VsZjtlbHNl
IGlmKCJvYmplY3QiPT10eXBlb2YgZ2xvYmFsKXQ9Z2xvYmFsO2Vsc2V7aWYoIm9iamVjdCIhPXR5
cGVvZiB3aW5kb3cpdGhyb3cgbmV3IEVycm9yKCJubyBnbG9iYWw6IGBzZWxmYCwgYGdsb2JhbGAg
bm9yIGB3aW5kb3dgIHdhcyBmb3VuZCIpO3Q9d2luZG93fWUuZGVmYXVsdD10fSksZSgiYmFja2J1
cm5lci9xdWV1ZSIsWyJleHBvcnRzIiwiYmFja2J1cm5lci91dGlscyJdLGZ1bmN0aW9uKGUsdCl7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LHIpe3RoaXMubmFtZT1lLHRoaXMuZ2xvYmFsT3B0
aW9ucz1yfHx7fSx0aGlzLm9wdGlvbnM9dCx0aGlzLl9xdWV1ZT1bXSx0aGlzLnRhcmdldFF1ZXVl
cz17fSx0aGlzLl9xdWV1ZUJlaW5nRmx1c2hlZD12b2lkIDB9ZS5kZWZhdWx0PXIsci5wcm90b3R5
cGU9e3B1c2g6ZnVuY3Rpb24oZSx0LHIsbil7dmFyIGk9dGhpcy5fcXVldWU7cmV0dXJuIGkucHVz
aChlLHQscixuKSx7cXVldWU6dGhpcyx0YXJnZXQ6ZSxtZXRob2Q6dH19LHB1c2hVbmlxdWVXaXRo
b3V0R3VpZDpmdW5jdGlvbihlLHQscixuKXtmb3IodmFyIGk9dGhpcy5fcXVldWUsbz0wLGE9aS5s
ZW5ndGg7bzxhO28rPTQpe3ZhciBzPWlbb10sdT1pW28rMV07aWYocz09PWUmJnU9PT10KXJldHVy
biBpW28rMl09cix2b2lkKGlbbyszXT1uKX1pLnB1c2goZSx0LHIsbil9LHRhcmdldFF1ZXVlOmZ1
bmN0aW9uKGUsdCxyLG4saSl7Zm9yKHZhciBvPXRoaXMuX3F1ZXVlLGE9MCxzPWUubGVuZ3RoO2E8
czthKz0yKXt2YXIgdT1lW2FdLGw9ZVthKzFdO2lmKHU9PT1yKXJldHVybiBvW2wrMl09bix2b2lk
KG9bbCszXT1pKX1lLnB1c2gocixvLnB1c2godCxyLG4saSktNCl9LHB1c2hVbmlxdWVXaXRoR3Vp
ZDpmdW5jdGlvbihlLHQscixuLGkpe3ZhciBvPXRoaXMudGFyZ2V0UXVldWVzW2VdO3JldHVybiBv
P3RoaXMudGFyZ2V0UXVldWUobyx0LHIsbixpKTp0aGlzLnRhcmdldFF1ZXVlc1tlXT1bcix0aGlz
Ll9xdWV1ZS5wdXNoKHQscixuLGkpLTRdLHtxdWV1ZTp0aGlzLHRhcmdldDp0LG1ldGhvZDpyfX0s
cHVzaFVuaXF1ZTpmdW5jdGlvbihlLHQscixuKXt2YXIgaT10aGlzLmdsb2JhbE9wdGlvbnMuR1VJ
RF9LRVk7aWYoZSYmaSl7dmFyIG89ZVtpXTtpZihvKXJldHVybiB0aGlzLnB1c2hVbmlxdWVXaXRo
R3VpZChvLGUsdCxyLG4pfXJldHVybiB0aGlzLnB1c2hVbmlxdWVXaXRob3V0R3VpZChlLHQscixu
KSx7cXVldWU6dGhpcyx0YXJnZXQ6ZSxtZXRob2Q6dH19LGludm9rZTpmdW5jdGlvbihlLHQscixu
LGkpe3ImJnIubGVuZ3RoPjA/dC5hcHBseShlLHIpOnQuY2FsbChlKX0saW52b2tlV2l0aE9uRXJy
b3I6ZnVuY3Rpb24oZSx0LHIsbixpKXt0cnl7ciYmci5sZW5ndGg+MD90LmFwcGx5KGUscik6dC5j
YWxsKGUpfWNhdGNoKGUpe24oZSxpKX19LGZsdXNoOmZ1bmN0aW9uKGUpe3ZhciByPXRoaXMuX3F1
ZXVlLG49ci5sZW5ndGg7aWYoMCE9PW4pe3ZhciBpLG8sYSxzLHU9dGhpcy5nbG9iYWxPcHRpb25z
LGw9dGhpcy5vcHRpb25zLGM9bCYmbC5iZWZvcmUsZj1sJiZsLmFmdGVyLGQ9dS5vbkVycm9yfHx1
Lm9uRXJyb3JUYXJnZXQmJnUub25FcnJvclRhcmdldFt1Lm9uRXJyb3JNZXRob2RdLHA9ZD90aGlz
Lmludm9rZVdpdGhPbkVycm9yOnRoaXMuaW52b2tlO3RoaXMudGFyZ2V0UXVldWVzPU9iamVjdC5j
cmVhdGUobnVsbCk7dmFyIGg9dGhpcy5fcXVldWVCZWluZ0ZsdXNoZWQ9dGhpcy5fcXVldWUuc2xp
Y2UoKTt0aGlzLl9xdWV1ZT1bXSxjJiZjKCk7Zm9yKHZhciBtPTA7bTxuO20rPTQpaT1oW21dLG89
aFttKzFdLGE9aFttKzJdLHM9aFttKzNdLHQuaXNTdHJpbmcobykmJihvPWlbb10pLG8mJnAoaSxv
LGEsZCxzKTtmJiZmKCksdGhpcy5fcXVldWVCZWluZ0ZsdXNoZWQ9dm9pZCAwLGUhPT0hMSYmdGhp
cy5fcXVldWUubGVuZ3RoPjAmJnRoaXMuZmx1c2goITApfX0sY2FuY2VsOmZ1bmN0aW9uKGUpe3Zh
ciB0LHIsbixpLG89dGhpcy5fcXVldWUsYT1lLnRhcmdldCxzPWUubWV0aG9kLHU9dGhpcy5nbG9i
YWxPcHRpb25zLkdVSURfS0VZO2lmKHUmJnRoaXMudGFyZ2V0UXVldWVzJiZhKXt2YXIgbD10aGlz
LnRhcmdldFF1ZXVlc1thW3VdXTtpZihsKWZvcihuPTAsaT1sLmxlbmd0aDtuPGk7bisrKWxbbl09
PT1zJiZsLnNwbGljZShuLDEpfWZvcihuPTAsaT1vLmxlbmd0aDtuPGk7bis9NClpZih0PW9bbl0s
cj1vW24rMV0sdD09PWEmJnI9PT1zKXJldHVybiBvLnNwbGljZShuLDQpLCEwO2lmKG89dGhpcy5f
cXVldWVCZWluZ0ZsdXNoZWQpZm9yKG49MCxpPW8ubGVuZ3RoO248aTtuKz00KWlmKHQ9b1tuXSxy
PW9bbisxXSx0PT09YSYmcj09PXMpcmV0dXJuIG9bbisxXT1udWxsLCEwfX19KSxlKCJiYWNrYnVy
bmVyL3V0aWxzIixbImV4cG9ydHMiXSxmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
dChlLHQpe2Zvcih2YXIgcj0wO3I8ZS5sZW5ndGg7cisrKXQoZVtyXSl9ZnVuY3Rpb24gcihlKXty
ZXR1cm4ic3RyaW5nIj09dHlwZW9mIGV9ZnVuY3Rpb24gbihlKXtyZXR1cm4iZnVuY3Rpb24iPT10
eXBlb2YgZX1mdW5jdGlvbiBpKGUpe3JldHVybiJudW1iZXIiPT10eXBlb2YgZX1mdW5jdGlvbiBv
KGUpe3JldHVybiBpKGUpfHxhLnRlc3QoZSl9ZS5lYWNoPXQsZS5pc1N0cmluZz1yLGUuaXNGdW5j
dGlvbj1uLGUuaXNOdW1iZXI9aSxlLmlzQ29lcmNhYmxlTnVtYmVyPW87dmFyIGE9L1xkKy99KSxl
KCJjb250YWluZXIvY29udGFpbmVyIixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9jb3JlIiwiZW1i
ZXItbWV0YWwvZGVidWciLCJlbWJlci1tZXRhbC9kaWN0aW9uYXJ5IiwiZW1iZXItbWV0YWwvZmVh
dHVyZXMiLCJjb250YWluZXIvb3duZXIiLCJlbWJlci1ydW50aW1lL21peGlucy9jb250YWluZXJf
cHJveHkiLCJlbWJlci1tZXRhbC9zeW1ib2wiXSxmdW5jdGlvbihlLHQscixuLGksbyxhLHMpeyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiB1KGUsdCl7dGhpcy5yZWdpc3RyeT1lLHRoaXMub3duZXI9dCYm
dC5vd25lcj90Lm93bmVyOm51bGwsdGhpcy5jYWNoZT1uLmRlZmF1bHQodCYmdC5jYWNoZT90LmNh
Y2hlOm51bGwpLHRoaXMuZmFjdG9yeUNhY2hlPW4uZGVmYXVsdCh0JiZ0LmZhY3RvcnlDYWNoZT90
LmZhY3RvcnlDYWNoZTpudWxsKSx0aGlzLnZhbGlkYXRpb25DYWNoZT1uLmRlZmF1bHQodCYmdC52
YWxpZGF0aW9uQ2FjaGU/dC52YWxpZGF0aW9uQ2FjaGU6bnVsbCksdGhpcy5fZmFrZUNvbnRhaW5l
clRvSW5qZWN0PWEuYnVpbGRGYWtlQ29udGFpbmVyV2l0aERlcHJlY2F0aW9ucyh0aGlzKSx0aGlz
W3hdPXZvaWQgMH1mdW5jdGlvbiBsKGUsdCl7cmV0dXJuIGUucmVnaXN0cnkuZ2V0T3B0aW9uKHQs
InNpbmdsZXRvbiIpIT09ITF9ZnVuY3Rpb24gYyhlLHQpe3ZhciByPWFyZ3VtZW50cy5sZW5ndGg8
PTJ8fHZvaWQgMD09PWFyZ3VtZW50c1syXT97fTphcmd1bWVudHNbMl07aWYoIXIuc291cmNlfHwo
dD1lLnJlZ2lzdHJ5LmV4cGFuZExvY2FsTG9va3VwKHQscikpKXtpZih2b2lkIDAhPT1lLmNhY2hl
W3RdJiZyLnNpbmdsZXRvbiE9PSExKXJldHVybiBlLmNhY2hlW3RdO3ZhciBuPWIoZSx0KTtpZih2
b2lkIDAhPT1uKXJldHVybiBsKGUsdCkmJnIuc2luZ2xldG9uIT09ITEmJihlLmNhY2hlW3RdPW4p
LG59fWZ1bmN0aW9uIGYoZSl7ZS5fZHluYW1pYz0hMH1mdW5jdGlvbiBkKGUpe3JldHVybiEhZS5f
ZHluYW1pY31mdW5jdGlvbiBwKCl7dmFyIGU9e307aWYoYXJndW1lbnRzLmxlbmd0aD4xKXtmb3Io
dmFyIHQscj1hcmd1bWVudHNbMF0sbj1bXSxpPTEsbz1hcmd1bWVudHMubGVuZ3RoO2k8bztpKysp
YXJndW1lbnRzW2ldJiYobj1uLmNvbmNhdChhcmd1bWVudHNbaV0pKTtmb3Ioci5yZWdpc3RyeS52
YWxpZGF0ZUluamVjdGlvbnMobiksaT0wLG89bi5sZW5ndGg7aTxvO2krKyl0PW5baV0sZVt0LnBy
b3BlcnR5XT1jKHIsdC5mdWxsTmFtZSksbChyLHQuZnVsbE5hbWUpfHxmKGUpfXJldHVybiBlfWZ1
bmN0aW9uIGgoZSxyKXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPD0yfHx2b2lkIDA9PT1hcmd1bWVu
dHNbMl0/e306YXJndW1lbnRzWzJdLGk9ZS5yZWdpc3RyeTtpZighbi5zb3VyY2V8fChyPWkuZXhw
YW5kTG9jYWxMb29rdXAocixuKSkpe3ZhciBvPWUuZmFjdG9yeUNhY2hlO2lmKG9bcl0pcmV0dXJu
IG9bcl07dmFyIGE9aS5yZXNvbHZlKHIpO2lmKHZvaWQgMCE9PWEpe3ZhciBzPXIuc3BsaXQoIjoi
KVswXTtpZighYXx8ImZ1bmN0aW9uIiE9dHlwZW9mIGEuZXh0ZW5kfHwhdC5kZWZhdWx0Lk1PREVM
X0ZBQ1RPUllfSU5KRUNUSU9OUyYmIm1vZGVsIj09PXMpcmV0dXJuIGEmJiJmdW5jdGlvbiI9PXR5
cGVvZiBhLl9vbkxvb2t1cCYmYS5fb25Mb29rdXAociksb1tyXT1hLGE7dmFyIHU9bShlLHIpLGw9
dihlLHIpLGM9IWQodSkmJiFkKGwpO2wuX3RvU3RyaW5nPWkubWFrZVRvU3RyaW5nKGEscik7dmFy
IGY9YS5leHRlbmQodSk7cmV0dXJuIGcoZi5wcm90b3R5cGUsZSksZi5yZW9wZW5DbGFzcyhsKSxh
JiYiZnVuY3Rpb24iPT10eXBlb2YgYS5fb25Mb29rdXAmJmEuX29uTG9va3VwKHIpLGMmJihvW3Jd
PWYpLGZ9fX1mdW5jdGlvbiBtKGUsdCl7dmFyIHI9ZS5yZWdpc3RyeSxuPXQuc3BsaXQoIjoiKSxp
PW5bMF0sYT1wKGUsci5nZXRUeXBlSW5qZWN0aW9ucyhpKSxyLmdldEluamVjdGlvbnModCkpO3Jl
dHVybiBhLl9kZWJ1Z0NvbnRhaW5lcktleT10LG8uc2V0T3duZXIoYSxlLm93bmVyKSxhfWZ1bmN0
aW9uIHYoZSx0KXt2YXIgcj1lLnJlZ2lzdHJ5LG49dC5zcGxpdCgiOiIpLGk9blswXSxvPXAoZSxy
LmdldEZhY3RvcnlUeXBlSW5qZWN0aW9ucyhpKSxyLmdldEZhY3RvcnlJbmplY3Rpb25zKHQpKTty
ZXR1cm4gby5fZGVidWdDb250YWluZXJLZXk9dCxvfWZ1bmN0aW9uIGIoZSx0KXt2YXIgcixuPWgo
ZSx0KTtpZihlLnJlZ2lzdHJ5LmdldE9wdGlvbih0LCJpbnN0YW50aWF0ZSIpPT09ITEpcmV0dXJu
IG47aWYobil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG4uY3JlYXRlKXRocm93IG5ldyBFcnJvcigi
RmFpbGVkIHRvIGNyZWF0ZSBhbiBpbnN0YW5jZSBvZiAnIit0KyInLiBNb3N0IGxpa2VseSBhbiBp
bXByb3Blcmx5IGRlZmluZWQgY2xhc3Mgb3IgYW4gaW52YWxpZCBtb2R1bGUgZXhwb3J0LiIpO3I9
ZS52YWxpZGF0aW9uQ2FjaGUsclt0XT0hMDt2YXIgaT12b2lkIDA7aWYoImZ1bmN0aW9uIj09dHlw
ZW9mIG4uZXh0ZW5kKWk9bi5jcmVhdGUoKTtlbHNle3ZhciBvPW0oZSx0KTtvLmNvbnRhaW5lcj1l
Ll9mYWtlQ29udGFpbmVyVG9JbmplY3QsaT1uLmNyZWF0ZShvKSwhT2JqZWN0LmlzRnJvemVuKGkp
JiYiY29udGFpbmVyImluIGkmJmcoaSxlKX1yZXR1cm4gaX19ZnVuY3Rpb24gZyhlLHQpe09iamVj
dC5kZWZpbmVQcm9wZXJ0eShlLCJjb250YWluZXIiLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJs
ZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1t4XXx8dH0sc2V0OmZ1bmN0aW9uKGUpe3Jl
dHVybiB0aGlzW3hdPWUsZX19KX1mdW5jdGlvbiB5KGUsdCl7Zm9yKHZhciByLG4saT1lLmNhY2hl
LG89T2JqZWN0LmtleXMoaSksYT0wLHM9by5sZW5ndGg7YTxzO2ErKylyPW9bYV0sbj1pW3JdLGUu
cmVnaXN0cnkuZ2V0T3B0aW9uKHIsImluc3RhbnRpYXRlIikhPT0hMSYmdChuKX1mdW5jdGlvbiBf
KGUpe3koZSxmdW5jdGlvbihlKXtlLmRlc3Ryb3kmJmUuZGVzdHJveSgpfSksZS5jYWNoZS5kaWN0
PW4uZGVmYXVsdChudWxsKX1mdW5jdGlvbiB3KGUsdCl7dmFyIHI9ZS5jYWNoZVt0XTtkZWxldGUg
ZS5mYWN0b3J5Q2FjaGVbdF0sciYmKGRlbGV0ZSBlLmNhY2hlW3RdLHIuZGVzdHJveSYmci5kZXN0
cm95KCkpfXZhciB4PXMuZGVmYXVsdCgiQ09OVEFJTkVSX09WRVJSSURFIik7dS5wcm90b3R5cGU9
e293bmVyOm51bGwscmVnaXN0cnk6bnVsbCxjYWNoZTpudWxsLGZhY3RvcnlDYWNoZTpudWxsLHZh
bGlkYXRpb25DYWNoZTpudWxsLGxvb2t1cDpmdW5jdGlvbihlLHQpe3JldHVybiBjKHRoaXMsdGhp
cy5yZWdpc3RyeS5ub3JtYWxpemUoZSksdCl9LGxvb2t1cEZhY3Rvcnk6ZnVuY3Rpb24oZSx0KXty
ZXR1cm4gaCh0aGlzLHRoaXMucmVnaXN0cnkubm9ybWFsaXplKGUpLHQpfSxkZXN0cm95OmZ1bmN0
aW9uKCl7eSh0aGlzLGZ1bmN0aW9uKGUpe2UuZGVzdHJveSYmZS5kZXN0cm95KCl9KSx0aGlzLmlz
RGVzdHJveWVkPSEwfSxyZXNldDpmdW5jdGlvbihlKXthcmd1bWVudHMubGVuZ3RoPjA/dyh0aGlz
LHRoaXMucmVnaXN0cnkubm9ybWFsaXplKGUpKTpfKHRoaXMpfSxvd25lckluamVjdGlvbjpmdW5j
dGlvbigpe3ZhciBlO3JldHVybiBlPXt9LGVbby5PV05FUl09dGhpcy5vd25lcixlfX0sZS5kZWZh
dWx0PXV9KSxlKCJjb250YWluZXIvaW5kZXgiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL2NvcmUi
LCJjb250YWluZXIvcmVnaXN0cnkiLCJjb250YWluZXIvY29udGFpbmVyIiwiY29udGFpbmVyL293
bmVyIl0sZnVuY3Rpb24oZSx0LHIsbixpKXsidXNlIHN0cmljdCI7dC5kZWZhdWx0Lk1PREVMX0ZB
Q1RPUllfSU5KRUNUSU9OUz0hMSx0LmRlZmF1bHQuRU5WJiYidW5kZWZpbmVkIiE9dHlwZW9mIHQu
ZGVmYXVsdC5FTlYuTU9ERUxfRkFDVE9SWV9JTkpFQ1RJT05TJiYodC5kZWZhdWx0Lk1PREVMX0ZB
Q1RPUllfSU5KRUNUSU9OUz0hIXQuZGVmYXVsdC5FTlYuTU9ERUxfRkFDVE9SWV9JTkpFQ1RJT05T
KSxlLlJlZ2lzdHJ5PXIuZGVmYXVsdCxlLkNvbnRhaW5lcj1uLmRlZmF1bHQsZS5nZXRPd25lcj1p
LmdldE93bmVyLGUuc2V0T3duZXI9aS5zZXRPd25lcn0pLGUoImNvbnRhaW5lci9vd25lciIsWyJl
eHBvcnRzIiwiZW1iZXItbWV0YWwvc3ltYm9sIl0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gcihlKXtyZXR1cm4gZVtpXX1mdW5jdGlvbiBuKGUsdCl7ZVtpXT10fWUuZ2V0T3du
ZXI9cixlLnNldE93bmVyPW47dmFyIGk9dC5kZWZhdWx0KCJPV05FUiIpO2UuT1dORVI9aX0pLGUo
ImNvbnRhaW5lci9yZWdpc3RyeSIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvZmVhdHVyZXMiLCJl
bWJlci1tZXRhbC9kZWJ1ZyIsImVtYmVyLW1ldGFsL2RpY3Rpb25hcnkiLCJlbWJlci1tZXRhbC9l
bXB0eV9vYmplY3QiLCJlbWJlci1tZXRhbC9hc3NpZ24iLCJjb250YWluZXIvY29udGFpbmVyIiwi
ZW1iZXItbWV0YWwvdXRpbHMiXSxmdW5jdGlvbihlLHQscixuLGksbyxhLHMpeyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiB1KGUpe3RoaXMuZmFsbGJhY2s9ZSYmZS5mYWxsYmFjaz9lLmZhbGxiYWNrOm51
bGwsZSYmZS5yZXNvbHZlciYmKHRoaXMucmVzb2x2ZXI9ZS5yZXNvbHZlciwiZnVuY3Rpb24iPT10
eXBlb2YgdGhpcy5yZXNvbHZlciYmbCh0aGlzKSksdGhpcy5yZWdpc3RyYXRpb25zPW4uZGVmYXVs
dChlJiZlLnJlZ2lzdHJhdGlvbnM/ZS5yZWdpc3RyYXRpb25zOm51bGwpLHRoaXMuX3R5cGVJbmpl
Y3Rpb25zPW4uZGVmYXVsdChudWxsKSx0aGlzLl9pbmplY3Rpb25zPW4uZGVmYXVsdChudWxsKSx0
aGlzLl9mYWN0b3J5VHlwZUluamVjdGlvbnM9bi5kZWZhdWx0KG51bGwpLHRoaXMuX2ZhY3RvcnlJ
bmplY3Rpb25zPW4uZGVmYXVsdChudWxsKSx0aGlzLl9sb2NhbExvb2t1cENhY2hlPW5ldyBpLmRl
ZmF1bHQsdGhpcy5fbm9ybWFsaXplQ2FjaGU9bi5kZWZhdWx0KG51bGwpLHRoaXMuX3Jlc29sdmVD
YWNoZT1uLmRlZmF1bHQobnVsbCksdGhpcy5fZmFpbENhY2hlPW4uZGVmYXVsdChudWxsKSx0aGlz
Ll9vcHRpb25zPW4uZGVmYXVsdChudWxsKSx0aGlzLl90eXBlT3B0aW9ucz1uLmRlZmF1bHQobnVs
bCl9ZnVuY3Rpb24gbChlKXtlLnJlc29sdmVyPXtyZXNvbHZlOmUucmVzb2x2ZXJ9fWZ1bmN0aW9u
IGMoZSx0LHIpe3ZhciBuPWUuX2xvY2FsTG9va3VwQ2FjaGUsbz1uW3RdO298fChvPW5bdF09bmV3
IGkuZGVmYXVsdCk7dmFyIGE9b1tyXTtpZih2b2lkIDAhPT1hKXJldHVybiBhO3ZhciBzPWUucmVz
b2x2ZXIuZXhwYW5kTG9jYWxMb29rdXAodCxyKTtyZXR1cm4gb1tyXT1zfWZ1bmN0aW9uIGYoZSx0
LHIpe2lmKCFyfHwhci5zb3VyY2V8fCh0PWUuZXhwYW5kTG9jYWxMb29rdXAodCxyKSkpe3ZhciBu
PWUuX3Jlc29sdmVDYWNoZVt0XTtpZih2b2lkIDAhPT1uKXJldHVybiBuO2lmKCFlLl9mYWlsQ2Fj
aGVbdF0pe3ZhciBpPXZvaWQgMDtyZXR1cm4gZS5yZXNvbHZlciYmKGk9ZS5yZXNvbHZlci5yZXNv
bHZlKHQpKSx2b2lkIDA9PT1pJiYoaT1lLnJlZ2lzdHJhdGlvbnNbdF0pLHZvaWQgMD09PWk/ZS5f
ZmFpbENhY2hlW3RdPSEwOmUuX3Jlc29sdmVDYWNoZVt0XT1pLGl9fX1mdW5jdGlvbiBkKGUsdCxy
KXtyZXR1cm4gdm9pZCAwIT09ZS5yZXNvbHZlKHQse3NvdXJjZTpyfSl9ZnVuY3Rpb24gcChlKXt2
YXIgdD1lWzBdLHI9bVt0XTtpZihyKXJldHVybiByO3ZhciBuPXQuc3BsaXQoIjoiKSxpPW5bMF0s
bz1uWzFdO3JldHVybiBtW3RdPXMuaW50ZXJuKGkrIjoiK28rIi0iK3YpfWUucHJpdmF0aXplPXA7
dmFyIGg9L15bXjpdKzpbXjpdKyQvO3UucHJvdG90eXBlPXtmYWxsYmFjazpudWxsLHJlc29sdmVy
Om51bGwscmVnaXN0cmF0aW9uczpudWxsLF90eXBlSW5qZWN0aW9uczpudWxsLF9pbmplY3Rpb25z
Om51bGwsX2ZhY3RvcnlUeXBlSW5qZWN0aW9uczpudWxsLF9mYWN0b3J5SW5qZWN0aW9uczpudWxs
LF9ub3JtYWxpemVDYWNoZTpudWxsLF9yZXNvbHZlQ2FjaGU6bnVsbCxfb3B0aW9uczpudWxsLF90
eXBlT3B0aW9uczpudWxsLGNvbnRhaW5lcjpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IGEuZGVmYXVs
dCh0aGlzLGUpfSxyZWdpc3RlcjpmdW5jdGlvbihlLHQpe3ZhciByPWFyZ3VtZW50cy5sZW5ndGg8
PTJ8fHZvaWQgMD09PWFyZ3VtZW50c1syXT97fTphcmd1bWVudHNbMl07aWYodm9pZCAwPT09dCl0
aHJvdyBuZXcgVHlwZUVycm9yKCJBdHRlbXB0aW5nIHRvIHJlZ2lzdGVyIGFuIHVua25vd24gZmFj
dG9yeTogYCIrZSsiYCIpO3ZhciBuPXRoaXMubm9ybWFsaXplKGUpO2lmKHRoaXMuX3Jlc29sdmVD
YWNoZVtuXSl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCByZS1yZWdpc3RlcjogYCIrZSsiYCwgYXMg
aXQgaGFzIGFscmVhZHkgYmVlbiByZXNvbHZlZC4iKTtkZWxldGUgdGhpcy5fZmFpbENhY2hlW25d
LHRoaXMucmVnaXN0cmF0aW9uc1tuXT10LHRoaXMuX29wdGlvbnNbbl09cn0sdW5yZWdpc3Rlcjpm
dW5jdGlvbihlKXt2YXIgdD10aGlzLm5vcm1hbGl6ZShlKTt0aGlzLl9sb2NhbExvb2t1cENhY2hl
PW5ldyBpLmRlZmF1bHQsZGVsZXRlIHRoaXMucmVnaXN0cmF0aW9uc1t0XSxkZWxldGUgdGhpcy5f
cmVzb2x2ZUNhY2hlW3RdLGRlbGV0ZSB0aGlzLl9mYWlsQ2FjaGVbdF0sZGVsZXRlIHRoaXMuX29w
dGlvbnNbdF19LHJlc29sdmU6ZnVuY3Rpb24oZSx0KXt2YXIgcj1mKHRoaXMsdGhpcy5ub3JtYWxp
emUoZSksdCk7aWYodm9pZCAwPT09ciYmdGhpcy5mYWxsYmFjayl7dmFyIG47cj0obj10aGlzLmZh
bGxiYWNrKS5yZXNvbHZlLmFwcGx5KG4sYXJndW1lbnRzKX1yZXR1cm4gcn0sZGVzY3JpYmU6ZnVu
Y3Rpb24oZSl7cmV0dXJuIHRoaXMucmVzb2x2ZXImJnRoaXMucmVzb2x2ZXIubG9va3VwRGVzY3Jp
cHRpb24/dGhpcy5yZXNvbHZlci5sb29rdXBEZXNjcmlwdGlvbihlKTp0aGlzLmZhbGxiYWNrP3Ro
aXMuZmFsbGJhY2suZGVzY3JpYmUoZSk6ZX0sbm9ybWFsaXplRnVsbE5hbWU6ZnVuY3Rpb24oZSl7
cmV0dXJuIHRoaXMucmVzb2x2ZXImJnRoaXMucmVzb2x2ZXIubm9ybWFsaXplP3RoaXMucmVzb2x2
ZXIubm9ybWFsaXplKGUpOnRoaXMuZmFsbGJhY2s/dGhpcy5mYWxsYmFjay5ub3JtYWxpemVGdWxs
TmFtZShlKTplfSxub3JtYWxpemU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX25vcm1hbGl6ZUNh
Y2hlW2VdfHwodGhpcy5fbm9ybWFsaXplQ2FjaGVbZV09dGhpcy5ub3JtYWxpemVGdWxsTmFtZShl
KSl9LG1ha2VUb1N0cmluZzpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLnJlc29sdmVyJiZ0aGlz
LnJlc29sdmVyLm1ha2VUb1N0cmluZz90aGlzLnJlc29sdmVyLm1ha2VUb1N0cmluZyhlLHQpOnRo
aXMuZmFsbGJhY2s/dGhpcy5mYWxsYmFjay5tYWtlVG9TdHJpbmcoZSx0KTplLnRvU3RyaW5nKCl9
LGhhczpmdW5jdGlvbihlLHQpe2lmKCF0aGlzLmlzVmFsaWRGdWxsTmFtZShlKSlyZXR1cm4hMTt2
YXIgcj12b2lkIDA7cmV0dXJuIHI9dCYmdC5zb3VyY2UmJnRoaXMubm9ybWFsaXplKHQuc291cmNl
KSxkKHRoaXMsdGhpcy5ub3JtYWxpemUoZSkscil9LG9wdGlvbnNGb3JUeXBlOmZ1bmN0aW9uKGUs
dCl7dGhpcy5fdHlwZU9wdGlvbnNbZV09dH0sZ2V0T3B0aW9uc0ZvclR5cGU6ZnVuY3Rpb24oZSl7
dmFyIHQ9dGhpcy5fdHlwZU9wdGlvbnNbZV07cmV0dXJuIHZvaWQgMD09PXQmJnRoaXMuZmFsbGJh
Y2smJih0PXRoaXMuZmFsbGJhY2suZ2V0T3B0aW9uc0ZvclR5cGUoZSkpLHR9LG9wdGlvbnM6ZnVu
Y3Rpb24oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aDw9MXx8dm9pZCAwPT09YXJndW1lbnRzWzFd
P3t9OmFyZ3VtZW50c1sxXSxyPXRoaXMubm9ybWFsaXplKGUpO3RoaXMuX29wdGlvbnNbcl09dH0s
Z2V0T3B0aW9uczpmdW5jdGlvbihlKXt2YXIgdD10aGlzLm5vcm1hbGl6ZShlKSxyPXRoaXMuX29w
dGlvbnNbdF07cmV0dXJuIHZvaWQgMD09PXImJnRoaXMuZmFsbGJhY2smJihyPXRoaXMuZmFsbGJh
Y2suZ2V0T3B0aW9ucyhlKSkscn0sZ2V0T3B0aW9uOmZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcy5f
b3B0aW9uc1tlXTtpZihyJiZ2b2lkIDAhPT1yW3RdKXJldHVybiByW3RdO3ZhciBuPWUuc3BsaXQo
IjoiKVswXTtyZXR1cm4gcj10aGlzLl90eXBlT3B0aW9uc1tuXSxyJiZ2b2lkIDAhPT1yW3RdP3Jb
dF06dGhpcy5mYWxsYmFjaz90aGlzLmZhbGxiYWNrLmdldE9wdGlvbihlLHQpOnZvaWQgMH0sdHlw
ZUluamVjdGlvbjpmdW5jdGlvbihlLHQscil7dmFyIG49ci5zcGxpdCgiOiIpWzBdO2lmKG49PT1l
KXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGluamVjdCBhIGAiK3IrImAgb24gb3RoZXIgIitlKyIo
cykuIik7dmFyIGk9dGhpcy5fdHlwZUluamVjdGlvbnNbZV18fCh0aGlzLl90eXBlSW5qZWN0aW9u
c1tlXT1bXSk7aS5wdXNoKHtwcm9wZXJ0eTp0LGZ1bGxOYW1lOnJ9KX0saW5qZWN0aW9uOmZ1bmN0
aW9uKGUsdCxyKXt0aGlzLnZhbGlkYXRlRnVsbE5hbWUocik7dmFyIG49dGhpcy5ub3JtYWxpemUo
cik7aWYoZS5pbmRleE9mKCI6Iik9PT0tMSlyZXR1cm4gdGhpcy50eXBlSW5qZWN0aW9uKGUsdCxu
KTt2YXIgaT10aGlzLm5vcm1hbGl6ZShlKSxvPXRoaXMuX2luamVjdGlvbnNbaV18fCh0aGlzLl9p
bmplY3Rpb25zW2ldPVtdKTtvLnB1c2goe3Byb3BlcnR5OnQsZnVsbE5hbWU6bn0pfSxmYWN0b3J5
VHlwZUluamVjdGlvbjpmdW5jdGlvbihlLHQscil7dmFyIG49dGhpcy5fZmFjdG9yeVR5cGVJbmpl
Y3Rpb25zW2VdfHwodGhpcy5fZmFjdG9yeVR5cGVJbmplY3Rpb25zW2VdPVtdKTtuLnB1c2goe3By
b3BlcnR5OnQsZnVsbE5hbWU6dGhpcy5ub3JtYWxpemUocil9KX0sZmFjdG9yeUluamVjdGlvbjpm
dW5jdGlvbihlLHQscil7dmFyIG49dGhpcy5ub3JtYWxpemUoZSksaT10aGlzLm5vcm1hbGl6ZShy
KTtpZih0aGlzLnZhbGlkYXRlRnVsbE5hbWUociksZS5pbmRleE9mKCI6Iik9PT0tMSlyZXR1cm4g
dGhpcy5mYWN0b3J5VHlwZUluamVjdGlvbihuLHQsaSk7dmFyIG89dGhpcy5fZmFjdG9yeUluamVj
dGlvbnNbbl18fCh0aGlzLl9mYWN0b3J5SW5qZWN0aW9uc1tuXT1bXSk7by5wdXNoKHtwcm9wZXJ0
eTp0LGZ1bGxOYW1lOml9KX0sa25vd25Gb3JUeXBlOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD12b2lk
IDAscj12b2lkIDAsaT1uLmRlZmF1bHQobnVsbCksYT1PYmplY3Qua2V5cyh0aGlzLnJlZ2lzdHJh
dGlvbnMpLHM9MCx1PWEubGVuZ3RoO3M8dTtzKyspe3ZhciBsPWFbc10sYz1sLnNwbGl0KCI6Iilb
MF07Yz09PWUmJihpW2xdPSEwKX1yZXR1cm4gdGhpcy5mYWxsYmFjayYmKHQ9dGhpcy5mYWxsYmFj
ay5rbm93bkZvclR5cGUoZSkpLHRoaXMucmVzb2x2ZXImJnRoaXMucmVzb2x2ZXIua25vd25Gb3JU
eXBlJiYocj10aGlzLnJlc29sdmVyLmtub3duRm9yVHlwZShlKSksby5kZWZhdWx0KHt9LHQsaSxy
KX0sdmFsaWRhdGVGdWxsTmFtZTpmdW5jdGlvbihlKXtpZighdGhpcy5pc1ZhbGlkRnVsbE5hbWUo
ZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBGdWxsbmFtZSwgZXhwZWN0ZWQ6IGB0eXBl
Om5hbWVgIGdvdDogIitlKTtyZXR1cm4hMH0saXNWYWxpZEZ1bGxOYW1lOmZ1bmN0aW9uKGUpe3Jl
dHVybiEhaC50ZXN0KGUpfSx2YWxpZGF0ZUluamVjdGlvbnM6ZnVuY3Rpb24oZSl7aWYoZSlmb3Io
dmFyIHQscj0wLG49ZS5sZW5ndGg7cjxuO3IrKylpZih0PWVbcl0uZnVsbE5hbWUsIXRoaXMuaGFz
KHQpKXRocm93IG5ldyBFcnJvcigiQXR0ZW1wdGluZyB0byBpbmplY3QgYW4gdW5rbm93biBpbmpl
Y3Rpb246IGAiK3QrImAiKX0sbm9ybWFsaXplSW5qZWN0aW9uc0hhc2g6ZnVuY3Rpb24oZSl7dmFy
IHQ9W107Zm9yKHZhciByIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShyKSYmdC5wdXNoKHtwcm9wZXJ0
eTpyLGZ1bGxOYW1lOmVbcl19KTtyZXR1cm4gdH0sZ2V0SW5qZWN0aW9uczpmdW5jdGlvbihlKXt2
YXIgdD10aGlzLl9pbmplY3Rpb25zW2VdfHxbXTtyZXR1cm4gdGhpcy5mYWxsYmFjayYmKHQ9dC5j
b25jYXQodGhpcy5mYWxsYmFjay5nZXRJbmplY3Rpb25zKGUpKSksdH0sZ2V0VHlwZUluamVjdGlv
bnM6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fdHlwZUluamVjdGlvbnNbZV18fFtdO3JldHVybiB0
aGlzLmZhbGxiYWNrJiYodD10LmNvbmNhdCh0aGlzLmZhbGxiYWNrLmdldFR5cGVJbmplY3Rpb25z
KGUpKSksdH0sZ2V0RmFjdG9yeUluamVjdGlvbnM6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fZmFj
dG9yeUluamVjdGlvbnNbZV18fFtdO3JldHVybiB0aGlzLmZhbGxiYWNrJiYodD10LmNvbmNhdCh0
aGlzLmZhbGxiYWNrLmdldEZhY3RvcnlJbmplY3Rpb25zKGUpKSksdH0sZ2V0RmFjdG9yeVR5cGVJ
bmplY3Rpb25zOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX2ZhY3RvcnlUeXBlSW5qZWN0aW9uc1tl
XXx8W107cmV0dXJuIHRoaXMuZmFsbGJhY2smJih0PXQuY29uY2F0KHRoaXMuZmFsbGJhY2suZ2V0
RmFjdG9yeVR5cGVJbmplY3Rpb25zKGUpKSksdH19LHUucHJvdG90eXBlLmV4cGFuZExvY2FsTG9v
a3VwPWZ1bmN0aW9uKGUsdCl7aWYodGhpcy5yZXNvbHZlciYmdGhpcy5yZXNvbHZlci5leHBhbmRM
b2NhbExvb2t1cCl7dmFyIHI9dGhpcy5ub3JtYWxpemUoZSksbj10aGlzLm5vcm1hbGl6ZSh0LnNv
dXJjZSk7cmV0dXJuIGModGhpcyxyLG4pfXJldHVybiB0aGlzLmZhbGxiYWNrP3RoaXMuZmFsbGJh
Y2suZXhwYW5kTG9jYWxMb29rdXAoZSx0KTpudWxsfTt2YXIgbT1uLmRlZmF1bHQobnVsbCksdj1N
YXRoLmZsb29yKE1hdGgucmFuZG9tKCkqbmV3IERhdGUpKyIiO2UuZGVmYXVsdD11fSksZSgiZGFn
LW1hcCIsWyJleHBvcnRzIiwidmVydGV4IiwidmlzaXQiXSxmdW5jdGlvbihlLHQscil7InVzZSBz
dHJpY3QiO2Z1bmN0aW9uIG4oKXt0aGlzLm5hbWVzPVtdLHRoaXMudmVydGljZXM9T2JqZWN0LmNy
ZWF0ZShudWxsKX1lLmRlZmF1bHQ9bixuLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oZSl7aWYoIWUp
dGhyb3cgbmV3IEVycm9yKCJDYW4ndCBhZGQgVmVydGV4IHdpdGhvdXQgbmFtZSIpO2lmKHZvaWQg
MCE9PXRoaXMudmVydGljZXNbZV0pcmV0dXJuIHRoaXMudmVydGljZXNbZV07dmFyIHI9bmV3IHQu
ZGVmYXVsdChlKTtyZXR1cm4gdGhpcy52ZXJ0aWNlc1tlXT1yLHRoaXMubmFtZXMucHVzaChlKSxy
fSxuLnByb3RvdHlwZS5tYXA9ZnVuY3Rpb24oZSx0KXt0aGlzLmFkZChlKS52YWx1ZT10fSxuLnBy
b3RvdHlwZS5hZGRFZGdlPWZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gbihlLHIpe2lmKGUubmFtZT09
PXQpdGhyb3cgbmV3IEVycm9yKCJjeWNsZSBkZXRlY3RlZDogIit0KyIgPC0gIityLmpvaW4oIiA8
LSAiKSl9aWYoZSYmdCYmZSE9PXQpe3ZhciBpPXRoaXMuYWRkKGUpLG89dGhpcy5hZGQodCk7by5p
bmNvbWluZy5oYXNPd25Qcm9wZXJ0eShlKXx8KHIuZGVmYXVsdChpLG4pLGkuaGFzT3V0Z29pbmc9
ITAsby5pbmNvbWluZ1tlXT1pLG8uaW5jb21pbmdOYW1lcy5wdXNoKGUpKX19LG4ucHJvdG90eXBl
LnRvcHNvcnQ9ZnVuY3Rpb24oZSl7dmFyIHQsbixpPXt9LG89dGhpcy52ZXJ0aWNlcyxhPXRoaXMu
bmFtZXMscz1hLmxlbmd0aDtmb3IodD0wO3Q8czt0Kyspbj1vW2FbdF1dLG4uaGFzT3V0Z29pbmd8
fHIuZGVmYXVsdChuLGUsaSl9LG4ucHJvdG90eXBlLmFkZEVkZ2VzPWZ1bmN0aW9uKGUsdCxyLG4p
e3ZhciBpO2lmKHRoaXMubWFwKGUsdCkscilpZigic3RyaW5nIj09dHlwZW9mIHIpdGhpcy5hZGRF
ZGdlKGUscik7ZWxzZSBmb3IoaT0wO2k8ci5sZW5ndGg7aSsrKXRoaXMuYWRkRWRnZShlLHJbaV0p
O2lmKG4paWYoInN0cmluZyI9PXR5cGVvZiBuKXRoaXMuYWRkRWRnZShuLGUpO2Vsc2UgZm9yKGk9
MDtpPG4ubGVuZ3RoO2krKyl0aGlzLmFkZEVkZ2UobltpXSxlKX19KSxlKCJkYWctbWFwLnVtZCIs
WyJleHBvcnRzIiwiZGFnLW1hcC9wbGF0Zm9ybSIsImRhZy1tYXAiXSxmdW5jdGlvbihlLHQscil7
InVzZSBzdHJpY3QiOyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5l
KGZ1bmN0aW9uKCl7cmV0dXJuIHIuZGVmYXVsdH0pOiJ1bmRlZmluZWQiIT10eXBlb2YgbW9kdWxl
JiZtb2R1bGUuZXhwb3J0cz9tb2R1bGUuZXhwb3J0cz1yLmRlZmF1bHQ6InVuZGVmaW5lZCIhPXR5
cGVvZiB0LmRlZmF1bHQmJih0LmRlZmF1bHQuREFHPXIuZGVmYXVsdCl9KSxlKCJkYWctbWFwL3Bs
YXRmb3JtIixbImV4cG9ydHMiXSxmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7dmFyIHQ7aWYoIm9i
amVjdCI9PXR5cGVvZiBzZWxmKXQ9c2VsZjtlbHNle2lmKCJvYmplY3QiIT10eXBlb2YgZ2xvYmFs
KXRocm93IG5ldyBFcnJvcigibm8gZ2xvYmFsOiBgc2VsZmAgb3IgYGdsb2JhbGAgZm91bmQiKTt0
PWdsb2JhbH1lLmRlZmF1bHQ9dH0pLGUoImRvbS1oZWxwZXIiLFsiZXhwb3J0cyIsImh0bWxiYXJz
LXJ1bnRpbWUvbW9ycGgiLCJtb3JwaC1hdHRyIiwiZG9tLWhlbHBlci9idWlsZC1odG1sLWRvbSIs
ImRvbS1oZWxwZXIvY2xhc3NlcyIsImRvbS1oZWxwZXIvcHJvcCJdLGZ1bmN0aW9uKGUsdCxyLG4s
aSxvKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYShlKXtyZXR1cm4gZSYmZS5uYW1lc3BhY2VVUkk9
PT1uLnN2Z05hbWVzcGFjZSYmIW4uc3ZnSFRNTEludGVncmF0aW9uUG9pbnRzW2UudGFnTmFtZV0/
bi5zdmdOYW1lc3BhY2U6bnVsbH1mdW5jdGlvbiBzKGUsdCl7aWYoIlRBQkxFIj09PXQudGFnTmFt
ZSl7dmFyIHI9Xy5leGVjKGUpO2lmKHIpe3ZhciBuPXJbMV07cmV0dXJuInRyIj09PW58fCJjb2wi
PT09bn19fWZ1bmN0aW9uIHUoZSx0KXt2YXIgcj10LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpO3JldHVybiByLmlubmVySFRNTD0iPHN2Zz4iK2UrIjwvc3ZnPiIsci5maXJzdENoaWxkLmNo
aWxkTm9kZXN9ZnVuY3Rpb24gbChlLHQscil7dGhpcy5lbGVtZW50PWUsdGhpcy5kb209dCx0aGlz
Lm5hbWVzcGFjZT1yLHRoaXMuZ3VpZD0iZWxlbWVudCIrdysrLHRoaXMuX3N0YXRlPXZvaWQgMCx0
aGlzLmlzRGlydHk9ITB9ZnVuY3Rpb24gYyhlKXtpZih0aGlzLmRvY3VtZW50PWV8fGRvY3VtZW50
LCF0aGlzLmRvY3VtZW50KXRocm93IG5ldyBFcnJvcigiQSBkb2N1bWVudCBvYmplY3QgbXVzdCBi
ZSBwYXNzZWQgdG8gdGhlIERPTUhlbHBlciwgb3IgYXZhaWxhYmxlIG9uIHRoZSBnbG9iYWwgc2Nv
cGUiKTt0aGlzLmNhbkNsb25lPXksdGhpcy5uYW1lc3BhY2U9bnVsbCxmKHRoaXMpfWZ1bmN0aW9u
IGYoZSl7dmFyIHQ9cC5jYWxsKGUsImZvb2JhcjpiYXoiKTtpZigiZm9vYmFyOiI9PT10KWUucHJv
dG9jb2xGb3JVUkw9cDtlbHNlIGlmKCJvYmplY3QiPT10eXBlb2YgVVJMKUM9VVJMLGUucHJvdG9j
b2xGb3JVUkw9aDtlbHNle2lmKCJvYmplY3QiIT10eXBlb2YgbW9kdWxlfHwiZnVuY3Rpb24iIT10
eXBlb2YgbW9kdWxlLnJlcXVpcmUpdGhyb3cgbmV3IEVycm9yKCJET00gSGVscGVyIGNvdWxkIG5v
dCBmaW5kIHZhbGlkIFVSTCBwYXJzaW5nIG1lY2hhbmlzbSIpO0M9bW9kdWxlLnJlcXVpcmUoInVy
bCIpLGUucHJvdG9jb2xGb3JVUkw9aH1lLmRvY3VtZW50LmNyZWF0ZVJhd0hUTUxTZWN0aW9uJiYo
ZS5zZXRNb3JwaEhUTUw9ZCl9ZnVuY3Rpb24gZChlLHQpe3ZhciByPXRoaXMuZG9jdW1lbnQuY3Jl
YXRlUmF3SFRNTFNlY3Rpb24odCk7ZS5zZXROb2RlKHIpfWZ1bmN0aW9uIHAoZSl7cmV0dXJuIEV8
fChFPXRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpKSxFLmhyZWY9ZSxFLnByb3RvY29s
fWZ1bmN0aW9uIGgoZSl7dmFyIHQ9Qy5wYXJzZShlKS5wcm90b2NvbDtyZXR1cm4gbnVsbD09PXQ/
IjoiOnR9dmFyIG09InVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudCYmZG9jdW1lbnQsdj1tJiZm
dW5jdGlvbihlKXt2YXIgdD1lLmNyZWF0ZUVsZW1lbnQoImRpdiIpO3QuYXBwZW5kQ2hpbGQoZS5j
cmVhdGVUZXh0Tm9kZSgiIikpO3ZhciByPXQuY2xvbmVOb2RlKCEwKTtyZXR1cm4gMD09PXIuY2hp
bGROb2Rlcy5sZW5ndGh9KG0pLGI9bSYmZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jcmVhdGVFbGVtZW50
KCJpbnB1dCIpO3Quc2V0QXR0cmlidXRlKCJjaGVja2VkIiwiY2hlY2tlZCIpO3ZhciByPXQuY2xv
bmVOb2RlKCExKTtyZXR1cm4hci5jaGVja2VkfShtKSxnPW0mJighbS5jcmVhdGVFbGVtZW50TlN8
fGZ1bmN0aW9uKGUpe3ZhciB0PWUuY3JlYXRlRWxlbWVudE5TKG4uc3ZnTmFtZXNwYWNlLCJzdmci
KTtyZXR1cm4gdC5zZXRBdHRyaWJ1dGUoInZpZXdCb3giLCIwIDAgMTAwIDEwMCIpLHQucmVtb3Zl
QXR0cmlidXRlKCJ2aWV3Qm94IiksIXQuZ2V0QXR0cmlidXRlKCJ2aWV3Qm94Iil9KG0pKSx5PW0m
JmZ1bmN0aW9uKGUpe3ZhciB0PWUuY3JlYXRlRWxlbWVudCgiZGl2Iik7dC5hcHBlbmRDaGlsZChl
LmNyZWF0ZVRleHROb2RlKCIgIikpLHQuYXBwZW5kQ2hpbGQoZS5jcmVhdGVUZXh0Tm9kZSgiICIp
KTt2YXIgcj10LmNsb25lTm9kZSghMCk7cmV0dXJuIiAiPT09ci5jaGlsZE5vZGVzWzBdLm5vZGVW
YWx1ZX0obSksXz0vPChbXHc6XSspLyx3PTE7bC5wcm90b3R5cGUuZ2V0U3RhdGU9ZnVuY3Rpb24o
KXtyZXR1cm4gdGhpcy5fc3RhdGV8fCh0aGlzLl9zdGF0ZT17fSksdGhpcy5fc3RhdGV9LGwucHJv
dG90eXBlLnNldFN0YXRlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9zdGF0ZT1lfSxsLnByb3Rv
dHlwZS5jbGVhcj1mdW5jdGlvbigpe30sbC5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3Ro
aXMuZWxlbWVudD1udWxsLHRoaXMuZG9tPW51bGx9O3ZhciB4PWMucHJvdG90eXBlO3guY29uc3Ry
dWN0b3I9Yyx4LmdldEVsZW1lbnRCeUlkPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ9dHx8dGhpcy5k
b2N1bWVudCx0LmdldEVsZW1lbnRCeUlkKGUpfSx4Lmluc2VydEJlZm9yZT1mdW5jdGlvbihlLHQs
cil7cmV0dXJuIGUuaW5zZXJ0QmVmb3JlKHQscil9LHguYXBwZW5kQ2hpbGQ9ZnVuY3Rpb24oZSx0
KXtyZXR1cm4gZS5hcHBlbmRDaGlsZCh0KX07dmFyIGs7az0idW5kZWZpbmVkIiE9dHlwZW9mIG5h
dmlnYXRvciYmbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCJQaGFudG9tSlMiKT9mdW5jdGlv
bihlLHQpe3JldHVybiBlW3RdfTpmdW5jdGlvbihlLHQpe3JldHVybiBlLml0ZW0odCl9LHguY2hp
bGRBdD1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcj1lLG49MDtuPHQubGVuZ3RoO24rKylyPWsoci5j
aGlsZE5vZGVzLHRbbl0pO3JldHVybiByfSx4LmNoaWxkQXRJbmRleD1mdW5jdGlvbihlLHQpe2Zv
cih2YXIgcj1lLmZpcnN0Q2hpbGQsbj0wO3ImJm48dDtuKyspcj1yLm5leHRTaWJsaW5nO3JldHVy
biByfSx4LmFwcGVuZFRleHQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5hcHBlbmRDaGlsZCh0aGlz
LmRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHQpKX0seC5zZXRBdHRyaWJ1dGU9ZnVuY3Rpb24oZSx0
LHIpe2Uuc2V0QXR0cmlidXRlKHQsU3RyaW5nKHIpKX0seC5nZXRBdHRyaWJ1dGU9ZnVuY3Rpb24o
ZSx0KXtyZXR1cm4gZS5nZXRBdHRyaWJ1dGUodCl9LHguc2V0QXR0cmlidXRlTlM9ZnVuY3Rpb24o
ZSx0LHIsbil7ZS5zZXRBdHRyaWJ1dGVOUyh0LHIsU3RyaW5nKG4pKX0seC5nZXRBdHRyaWJ1dGVO
Uz1mdW5jdGlvbihlLHQscil7cmV0dXJuIGUuZ2V0QXR0cmlidXRlTlModCxyKX0sZz94LnJlbW92
ZUF0dHJpYnV0ZT1mdW5jdGlvbihlLHQpe2UucmVtb3ZlQXR0cmlidXRlKHQpfTp4LnJlbW92ZUF0
dHJpYnV0ZT1mdW5jdGlvbihlLHQpeyJzdmciPT09ZS50YWdOYW1lJiYidmlld0JveCI9PT10P2Uu
c2V0QXR0cmlidXRlKHQsbnVsbCk6ZS5yZW1vdmVBdHRyaWJ1dGUodCl9LHguc2V0UHJvcGVydHlT
dHJpY3Q9ZnVuY3Rpb24oZSx0LHIpe3ZvaWQgMD09PXImJihyPW51bGwpLG51bGwhPT1yfHwidmFs
dWUiIT09dCYmInR5cGUiIT09dCYmInNyYyIhPT10fHwocj0iIiksZVt0XT1yfSx4LmdldFByb3Bl
cnR5U3RyaWN0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGVbdF19LHguc2V0UHJvcGVydHk9ZnVuY3Rp
b24oZSx0LHIsaSl7aWYoZS5uYW1lc3BhY2VVUkk9PT1uLnN2Z05hbWVzcGFjZSlvLmlzQXR0clJl
bW92YWxWYWx1ZShyKT9lLnJlbW92ZUF0dHJpYnV0ZSh0KTppP2Uuc2V0QXR0cmlidXRlTlMoaSx0
LHIpOmUuc2V0QXR0cmlidXRlKHQscik7ZWxzZXt2YXIgYT1vLm5vcm1hbGl6ZVByb3BlcnR5KGUs
dCkscz1hLm5vcm1hbGl6ZWQsdT1hLnR5cGU7InByb3AiPT09dT9lW3NdPXI6by5pc0F0dHJSZW1v
dmFsVmFsdWUocik/ZS5yZW1vdmVBdHRyaWJ1dGUodCk6aSYmZS5zZXRBdHRyaWJ1dGVOUz9lLnNl
dEF0dHJpYnV0ZU5TKGksdCxyKTplLnNldEF0dHJpYnV0ZSh0LHIpfX0sbSYmbS5jcmVhdGVFbGVt
ZW50TlM/KHguY3JlYXRlRWxlbWVudD1mdW5jdGlvbihlLHQpe3ZhciByPXRoaXMubmFtZXNwYWNl
O3JldHVybiB0JiYocj0ic3ZnIj09PWU/bi5zdmdOYW1lc3BhY2U6YSh0KSkscj90aGlzLmRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUyhyLGUpOnRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudChlKX0s
eC5zZXRBdHRyaWJ1dGVOUz1mdW5jdGlvbihlLHQscixuKXtlLnNldEF0dHJpYnV0ZU5TKHQscixT
dHJpbmcobikpfSk6KHguY3JlYXRlRWxlbWVudD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5kb2N1
bWVudC5jcmVhdGVFbGVtZW50KGUpfSx4LnNldEF0dHJpYnV0ZU5TPWZ1bmN0aW9uKGUsdCxyLG4p
e2Uuc2V0QXR0cmlidXRlKHIsU3RyaW5nKG4pKX0pLHguYWRkQ2xhc3Nlcz1pLmFkZENsYXNzZXMs
eC5yZW1vdmVDbGFzc2VzPWkucmVtb3ZlQ2xhc3Nlcyx4LnNldE5hbWVzcGFjZT1mdW5jdGlvbihl
KXt0aGlzLm5hbWVzcGFjZT1lfSx4LmRldGVjdE5hbWVzcGFjZT1mdW5jdGlvbihlKXt0aGlzLm5h
bWVzcGFjZT1hKGUpfSx4LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQ9ZnVuY3Rpb24oKXtyZXR1cm4g
dGhpcy5kb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCl9LHguY3JlYXRlVGV4dE5vZGU9
ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZSl9LHguY3Jl
YXRlQ29tbWVudD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5kb2N1bWVudC5jcmVhdGVDb21tZW50
KGUpfSx4LnJlcGFpckNsb25lZE5vZGU9ZnVuY3Rpb24oZSx0LHIpe2lmKHYmJnQubGVuZ3RoPjAp
Zm9yKHZhciBuPTAsaT10Lmxlbmd0aDtuPGk7bisrKXt2YXIgbz10aGlzLmRvY3VtZW50LmNyZWF0
ZVRleHROb2RlKCIiKSxhPXRbbl0scz10aGlzLmNoaWxkQXRJbmRleChlLGEpO3M/ZS5pbnNlcnRC
ZWZvcmUobyxzKTplLmFwcGVuZENoaWxkKG8pfWImJnImJmUuc2V0QXR0cmlidXRlKCJjaGVja2Vk
IiwiY2hlY2tlZCIpfSx4LmNsb25lTm9kZT1mdW5jdGlvbihlLHQpe3ZhciByPWUuY2xvbmVOb2Rl
KCEhdCk7cmV0dXJuIHJ9LHguQXR0ck1vcnBoQ2xhc3M9ci5kZWZhdWx0LHguY3JlYXRlQXR0ck1v
cnBoPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gdGhpcy5BdHRyTW9ycGhDbGFzcy5jcmVhdGUoZSx0
LHRoaXMscil9LHguRWxlbWVudE1vcnBoQ2xhc3M9bCx4LmNyZWF0ZUVsZW1lbnRNb3JwaD1mdW5j
dGlvbihlLHQpe3JldHVybiBuZXcgdGhpcy5FbGVtZW50TW9ycGhDbGFzcyhlLHRoaXMsdCl9LHgu
Y3JlYXRlVW5zYWZlQXR0ck1vcnBoPWZ1bmN0aW9uKGUsdCxyKXt2YXIgbj10aGlzLmNyZWF0ZUF0
dHJNb3JwaChlLHQscik7cmV0dXJuIG4uZXNjYXBlZD0hMSxufSx4Lk1vcnBoQ2xhc3M9dC5kZWZh
dWx0LHguY3JlYXRlTW9ycGg9ZnVuY3Rpb24oZSx0LHIsbil7aWYobiYmMTE9PT1uLm5vZGVUeXBl
KXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHBhc3MgYSBmcmFnbWVudCBhcyB0aGUgY29udGV4dHVh
bCBlbGVtZW50IHRvIGNyZWF0ZU1vcnBoIik7IW4mJmUmJjE9PT1lLm5vZGVUeXBlJiYobj1lKTt2
YXIgaT1uZXcgdGhpcy5Nb3JwaENsYXNzKHRoaXMsbik7cmV0dXJuIGkuZmlyc3ROb2RlPXQsaS5s
YXN0Tm9kZT1yLGl9LHguY3JlYXRlRnJhZ21lbnRNb3JwaD1mdW5jdGlvbihlKXtpZihlJiYxMT09
PWUubm9kZVR5cGUpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgcGFzcyBhIGZyYWdtZW50IGFzIHRo
ZSBjb250ZXh0dWFsIGVsZW1lbnQgdG8gY3JlYXRlTW9ycGgiKTt2YXIgcj10aGlzLmNyZWF0ZURv
Y3VtZW50RnJhZ21lbnQoKTtyZXR1cm4gdC5kZWZhdWx0LmNyZWF0ZSh0aGlzLGUscil9LHgucmVw
bGFjZUNvbnRlbnRXaXRoTW9ycGg9ZnVuY3Rpb24oZSl7dmFyIHI9ZS5maXJzdENoaWxkO2lmKHIp
e3ZhciBuPXQuZGVmYXVsdC5hdHRhY2godGhpcyxlLHIsZS5sYXN0Q2hpbGQpO3JldHVybiBuLmNs
ZWFyKCksbn12YXIgaT10aGlzLmNyZWF0ZUNvbW1lbnQoIiIpO3JldHVybiB0aGlzLmFwcGVuZENo
aWxkKGUsaSksdC5kZWZhdWx0LmNyZWF0ZSh0aGlzLGUsaSl9LHguY3JlYXRlVW5zYWZlTW9ycGg9
ZnVuY3Rpb24oZSx0LHIsbil7dmFyIGk9dGhpcy5jcmVhdGVNb3JwaChlLHQscixuKTtyZXR1cm4g
aS5wYXJzZVRleHRBc0hUTUw9ITAsaX0seC5jcmVhdGVNb3JwaEF0PWZ1bmN0aW9uKGUsdCxyLG4p
e3ZhciBpPXQ9PT1yLG89dGhpcy5jaGlsZEF0SW5kZXgoZSx0KSxhPWk/bzp0aGlzLmNoaWxkQXRJ
bmRleChlLHIpO3JldHVybiB0aGlzLmNyZWF0ZU1vcnBoKGUsbyxhLG4pfSx4LmNyZWF0ZVVuc2Fm
ZU1vcnBoQXQ9ZnVuY3Rpb24oZSx0LHIsbil7dmFyIGk9dGhpcy5jcmVhdGVNb3JwaEF0KGUsdCxy
LG4pO3JldHVybiBpLnBhcnNlVGV4dEFzSFRNTD0hMCxpfSx4Lmluc2VydE1vcnBoQmVmb3JlPWZ1
bmN0aW9uKGUsdCxyKXt2YXIgbj10aGlzLmRvY3VtZW50LmNyZWF0ZUNvbW1lbnQoIiIpO3JldHVy
biBlLmluc2VydEJlZm9yZShuLHQpLHRoaXMuY3JlYXRlTW9ycGgoZSxuLG4scil9LHguYXBwZW5k
TW9ycGg9ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLmRvY3VtZW50LmNyZWF0ZUNvbW1lbnQoIiIp
O3JldHVybiBlLmFwcGVuZENoaWxkKHIpLHRoaXMuY3JlYXRlTW9ycGgoZSxyLHIsdCl9LHguaW5z
ZXJ0Qm91bmRhcnk9ZnVuY3Rpb24oZSx0KXt2YXIgcj1udWxsPT09dD9udWxsOnRoaXMuY2hpbGRB
dEluZGV4KGUsdCk7dGhpcy5pbnNlcnRCZWZvcmUoZSx0aGlzLmNyZWF0ZVRleHROb2RlKCIiKSxy
KX0seC5zZXRNb3JwaEhUTUw9ZnVuY3Rpb24oZSx0KXtlLnNldEhUTUwodCl9LHgucGFyc2VIVE1M
PWZ1bmN0aW9uKGUsdCl7dmFyIHI7aWYoYSh0KT09PW4uc3ZnTmFtZXNwYWNlKXI9dShlLHRoaXMp
O2Vsc2V7dmFyIGk9bi5idWlsZEhUTUxET00oZSx0LHRoaXMpO2lmKHMoZSx0KSl7Zm9yKHZhciBv
PWlbMF07byYmMSE9PW8ubm9kZVR5cGU7KW89by5uZXh0U2libGluZztyPW8uY2hpbGROb2Rlc31l
bHNlIHI9aX12YXIgbD10aGlzLmRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtpZihy
JiZyLmxlbmd0aD4wKXt2YXIgYz1yWzBdO2ZvcigiU0VMRUNUIj09PXQudGFnTmFtZSYmKGM9Yy5u
ZXh0U2libGluZyk7Yzspe3ZhciBmPWM7Yz1jLm5leHRTaWJsaW5nLGwuYXBwZW5kQ2hpbGQoZil9
fXJldHVybiBsfTt2YXIgQyxFO2UuZGVmYXVsdD1jfSksZSgiZG9tLWhlbHBlci9idWlsZC1odG1s
LWRvbSIsWyJleHBvcnRzIl0sZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHQoZSx0
KXt0PSImc2h5OyIrdCxlLmlubmVySFRNTD10O2Zvcih2YXIgcj1lLmNoaWxkTm9kZXMsbj1yWzBd
OzE9PT1uLm5vZGVUeXBlJiYhbi5ub2RlTmFtZTspbj1uLmZpcnN0Q2hpbGQ7aWYoMz09PW4ubm9k
ZVR5cGUmJiLCrSI9PT1uLm5vZGVWYWx1ZS5jaGFyQXQoMCkpe3ZhciBpPW4ubm9kZVZhbHVlLnNs
aWNlKDEpO2kubGVuZ3RoP24ubm9kZVZhbHVlPW4ubm9kZVZhbHVlLnNsaWNlKDEpOm4ucGFyZW50
Tm9kZS5yZW1vdmVDaGlsZChuKX1yZXR1cm4gcn1mdW5jdGlvbiByKGUscil7dmFyIGk9ci50YWdO
YW1lLG89ci5vdXRlckhUTUx8fChuZXcgWE1MU2VyaWFsaXplcikuc2VyaWFsaXplVG9TdHJpbmco
cik7aWYoIW8pdGhyb3ciQ2FuJ3Qgc2V0IGlubmVySFRNTCBvbiAiK2krIiBpbiB0aGlzIGJyb3dz
ZXIiO2U9bihlLHIpO2Zvcih2YXIgYT1mW2kudG9Mb3dlckNhc2UoKV0scz1vLm1hdGNoKG5ldyBS
ZWdFeHAoIjwiK2krIihbXj5dKik+IiwiaSIpKVswXSx1PSI8LyIraSsiPiIsbD1bcyxlLHVdLGM9
YS5sZW5ndGgsZD0xK2M7Yy0tOylsLnVuc2hpZnQoIjwiK2FbY10rIj4iKSxsLnB1c2goIjwvIith
W2NdKyI+Iik7dmFyIHA9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7dChwLGwuam9pbigi
IikpO2Zvcih2YXIgaD1wO2QtLTspZm9yKGg9aC5maXJzdENoaWxkO2gmJjEhPT1oLm5vZGVUeXBl
OyloPWgubmV4dFNpYmxpbmc7Zm9yKDtoJiZoLnRhZ05hbWUhPT1pOyloPWgubmV4dFNpYmxpbmc7
cmV0dXJuIGg/aC5jaGlsZE5vZGVzOltdfWZ1bmN0aW9uIG4oZSx0KXtyZXR1cm4iU0VMRUNUIj09
PXQudGFnTmFtZSYmKGU9IjxvcHRpb24+PC9vcHRpb24+IitlKSxlfXZhciBpPXtmb3JlaWduT2Jq
ZWN0OjEsZGVzYzoxLHRpdGxlOjF9O2Uuc3ZnSFRNTEludGVncmF0aW9uUG9pbnRzPWk7dmFyIG89
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIjtlLnN2Z05hbWVzcGFjZT1vO3ZhciBhLHM9InVu
ZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudCYmZG9jdW1lbnQsdT1zJiZmdW5jdGlvbihlKXtpZih2
b2lkIDAhPT1lLmNyZWF0ZUVsZW1lbnROUyl7dmFyIHQ9ZS5jcmVhdGVFbGVtZW50TlMobywidGl0
bGUiKTtyZXR1cm4gdC5pbm5lckhUTUw9IjxkaXY+PC9kaXY+IiwwPT09dC5jaGlsZE5vZGVzLmxl
bmd0aHx8MSE9PXQuY2hpbGROb2Rlc1swXS5ub2RlVHlwZX19KHMpLGw9cyYmZnVuY3Rpb24oZSl7
dmFyIHQ9ZS5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gdC5pbm5lckhUTUw9IjxkaXY+PC9k
aXY+Iix0LmZpcnN0Q2hpbGQuaW5uZXJIVE1MPSI8c2NyaXB0Pjwvc2NyaXB0PiIsIiI9PT10LmZp
cnN0Q2hpbGQuaW5uZXJIVE1MfShzKSxjPXMmJmZ1bmN0aW9uKGUpe3ZhciB0PWUuY3JlYXRlRWxl
bWVudCgiZGl2Iik7cmV0dXJuIHQuaW5uZXJIVE1MPSJUZXN0OiA8c2NyaXB0IHR5cGU9J3RleHQv
eC1wbGFjZWhvbGRlcic+PC9zY3JpcHQ+VmFsdWUiLCJUZXN0OiI9PT10LmNoaWxkTm9kZXNbMF0u
bm9kZVZhbHVlJiYiIFZhbHVlIj09PXQuY2hpbGROb2Rlc1syXS5ub2RlVmFsdWV9KHMpLGY9cyYm
ZnVuY3Rpb24oZSl7dmFyIHQscixuPWUuY3JlYXRlRWxlbWVudCgidGFibGUiKTt0cnl7bi5pbm5l
ckhUTUw9Ijx0Ym9keT48L3Rib2R5PiJ9Y2F0Y2goZSl7fWZpbmFsbHl7cj0wPT09bi5jaGlsZE5v
ZGVzLmxlbmd0aH1yJiYodD17Y29sZ3JvdXA6WyJ0YWJsZSJdLHRhYmxlOltdLHRib2R5OlsidGFi
bGUiXSx0Zm9vdDpbInRhYmxlIl0sdGhlYWQ6WyJ0YWJsZSJdLHRyOlsidGFibGUiLCJ0Ym9keSJd
fSk7dmFyIGk9ZS5jcmVhdGVFbGVtZW50KCJzZWxlY3QiKTtyZXR1cm4gaS5pbm5lckhUTUw9Ijxv
cHRpb24+PC9vcHRpb24+IixpLmNoaWxkTm9kZXNbMF18fCh0PXR8fHt9LHQuc2VsZWN0PVtdKSx0
fShzKTthPWw/ZnVuY3Rpb24oZSxyLGkpe3JldHVybiBlPW4oZSxyKSxyPWkuY2xvbmVOb2RlKHIs
ITEpLHQocixlKSxyLmNoaWxkTm9kZXN9OmZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT1uKGUsdCks
dD1yLmNsb25lTm9kZSh0LCExKSx0LmlubmVySFRNTD1lLHQuY2hpbGROb2Rlc307dmFyIGQ7ZD1m
fHxjP2Z1bmN0aW9uKGUsdCxuKXt2YXIgaT1bXSxvPVtdOyJzdHJpbmciPT10eXBlb2YgZSYmKGU9
ZS5yZXBsYWNlKC8oXHMqKSg8c2NyaXB0KS9nLGZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gaS5wdXNo
KHQpLHJ9KSxlPWUucmVwbGFjZSgvKDxcL3NjcmlwdD4pKFxzKikvZyxmdW5jdGlvbihlLHQscil7
cmV0dXJuIG8ucHVzaChyKSx0fSkpO3ZhciBzO3M9Zlt0LnRhZ05hbWUudG9Mb3dlckNhc2UoKV0/
cihlLHQpOmEoZSx0LG4pO3ZhciB1LGwsYyxkLHA9W107Zm9yKHU9MDt1PHMubGVuZ3RoO3UrKylp
ZihjPXNbdV0sMT09PWMubm9kZVR5cGUpaWYoIlNDUklQVCI9PT1jLnRhZ05hbWUpcC5wdXNoKGMp
O2Vsc2UgZm9yKGQ9Yy5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0IiksbD0wO2w8ZC5sZW5n
dGg7bCsrKXAucHVzaChkW2xdKTt2YXIgaCxtLHYsYjtmb3IodT0wO3U8cC5sZW5ndGg7dSsrKWg9
cFt1XSx2PWlbdV0sdiYmdi5sZW5ndGg+MCYmKG09bi5kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh2
KSxoLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKG0saCkpLGI9b1t1XSxiJiZiLmxlbmd0aD4wJiYo
bT1uLmRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGIpLGgucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUo
bSxoLm5leHRTaWJsaW5nKSk7cmV0dXJuIHN9OmE7dmFyIHA7dT9lLmJ1aWxkSFRNTERPTT1wPWZ1
bmN0aW9uKGUsdCxyKXtyZXR1cm4gaVt0LnRhZ05hbWVdP2QoZSxkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKSxyKTpkKGUsdCxyKX06ZS5idWlsZEhUTUxET009cD1kLGUuYnVpbGRIVE1MRE9N
PXB9KSxlKCJkb20taGVscGVyL2NsYXNzZXMiLFsiZXhwb3J0cyJdLGZ1bmN0aW9uKGUpeyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiB0KGUpe3ZhciB0PWUuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIjty
ZXR1cm4iIiE9PXQmJiIgIiE9PXQ/dC5zcGxpdCgiICIpOltdfWZ1bmN0aW9uIHIoZSx0KXtmb3Io
dmFyIHI9MCxuPWUubGVuZ3RoLGk9MCxvPXQubGVuZ3RoLGE9bmV3IEFycmF5KG8pO3I8bjtyKysp
Zm9yKGk9MDtpPG87aSsrKWlmKHRbaV09PT1lW3JdKXthW2ldPXI7YnJlYWt9cmV0dXJuIGF9ZnVu
Y3Rpb24gbihlLG4pe2Zvcih2YXIgaT10KGUpLG89cihpLG4pLGE9ITEscz0wLHU9bi5sZW5ndGg7
czx1O3MrKyl2b2lkIDA9PT1vW3NdJiYoYT0hMCxpLnB1c2gobltzXSkpO2EmJmUuc2V0QXR0cmli
dXRlKCJjbGFzcyIsaS5sZW5ndGg+MD9pLmpvaW4oIiAiKToiIil9ZnVuY3Rpb24gaShlLG4pe2Zv
cih2YXIgaT10KGUpLG89cihuLGkpLGE9ITEscz1bXSx1PTAsbD1pLmxlbmd0aDt1PGw7dSsrKXZv
aWQgMD09PW9bdV0/cy5wdXNoKGlbdV0pOmE9ITA7YSYmZS5zZXRBdHRyaWJ1dGUoImNsYXNzIixz
Lmxlbmd0aD4wP3Muam9pbigiICIpOiIiKX12YXIgbyxhLHM9InVuZGVmaW5lZCIhPXR5cGVvZiBk
b2N1bWVudCYmZG9jdW1lbnQsdT1zJiZmdW5jdGlvbigpe3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpO3JldHVybiEhZS5jbGFzc0xpc3QmJihlLmNsYXNzTGlzdC5hZGQoImJvbyIp
LGUuY2xhc3NMaXN0LmFkZCgiYm9vIiwiYmF6IiksImJvbyBiYXoiPT09ZS5jbGFzc05hbWUpfSgp
O3U/KGUuYWRkQ2xhc3Nlcz1vPWZ1bmN0aW9uKGUsdCl7ZS5jbGFzc0xpc3Q/MT09PXQubGVuZ3Ro
P2UuY2xhc3NMaXN0LmFkZCh0WzBdKToyPT09dC5sZW5ndGg/ZS5jbGFzc0xpc3QuYWRkKHRbMF0s
dFsxXSk6ZS5jbGFzc0xpc3QuYWRkLmFwcGx5KGUuY2xhc3NMaXN0LHQpOm4oZSx0KX0sZS5yZW1v
dmVDbGFzc2VzPWE9ZnVuY3Rpb24oZSx0KXtlLmNsYXNzTGlzdD8xPT09dC5sZW5ndGg/ZS5jbGFz
c0xpc3QucmVtb3ZlKHRbMF0pOjI9PT10Lmxlbmd0aD9lLmNsYXNzTGlzdC5yZW1vdmUodFswXSx0
WzFdKTplLmNsYXNzTGlzdC5yZW1vdmUuYXBwbHkoZS5jbGFzc0xpc3QsdCk6aShlLHQpfSk6KGUu
YWRkQ2xhc3Nlcz1vPW4sZS5yZW1vdmVDbGFzc2VzPWE9aSksZS5hZGRDbGFzc2VzPW8sZS5yZW1v
dmVDbGFzc2VzPWF9KSxlKCJkb20taGVscGVyL3Byb3AiLFsiZXhwb3J0cyJdLGZ1bmN0aW9uKGUp
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB0KGUpe3JldHVybiBudWxsPT09ZXx8dm9pZCAwPT09ZX1m
dW5jdGlvbiByKGUsdCl7dmFyIHIsaTtpZih0IGluIGUpaT10LHI9InByb3AiO2Vsc2V7dmFyIG89
dC50b0xvd2VyQ2FzZSgpO28gaW4gZT8ocj0icHJvcCIsaT1vKToocj0iYXR0ciIsaT10KX1yZXR1
cm4icHJvcCIhPT1yfHwic3R5bGUiIT09aS50b0xvd2VyQ2FzZSgpJiYhbihlLnRhZ05hbWUsaSl8
fChyPSJhdHRyIikse25vcm1hbGl6ZWQ6aSx0eXBlOnJ9fWZ1bmN0aW9uIG4oZSx0KXt2YXIgcj1p
W2UudG9VcHBlckNhc2UoKV07cmV0dXJuIHImJnJbdC50b0xvd2VyQ2FzZSgpXXx8ITF9ZS5pc0F0
dHJSZW1vdmFsVmFsdWU9dCxlLm5vcm1hbGl6ZVByb3BlcnR5PXI7dmFyIGk9e0JVVFRPTjp7dHlw
ZTohMCxmb3JtOiEwfSxJTlBVVDp7bGlzdDohMCx0eXBlOiEwLGZvcm06ITAsYXV0b2NvcnJlY3Q6
ITB9LFNFTEVDVDp7Zm9ybTohMH0sT1BUSU9OOntmb3JtOiEwfSxURVhUQVJFQTp7Zm9ybTohMH0s
TEFCRUw6e2Zvcm06ITB9LEZJRUxEU0VUOntmb3JtOiEwfSxMRUdFTkQ6e2Zvcm06ITB9LE9CSkVD
VDp7Zm9ybTohMH19fSksZSgiZW1iZXItYXBwbGljYXRpb24vaW5kZXgiLFsiZXhwb3J0cyIsImVt
YmVyLW1ldGFsL2NvcmUiLCJlbWJlci1tZXRhbC9mZWF0dXJlcyIsImVtYmVyLXJ1bnRpbWUvc3lz
dGVtL2xhenlfbG9hZCIsImVtYmVyLWFwcGxpY2F0aW9uL3N5c3RlbS9yZXNvbHZlciIsImVtYmVy
LWFwcGxpY2F0aW9uL3N5c3RlbS9hcHBsaWNhdGlvbiIsImVtYmVyLWFwcGxpY2F0aW9uL3N5c3Rl
bS9hcHBsaWNhdGlvbi1pbnN0YW5jZSIsImVtYmVyLWFwcGxpY2F0aW9uL3N5c3RlbS9lbmdpbmUi
LCJlbWJlci1hcHBsaWNhdGlvbi9zeXN0ZW0vZW5naW5lLWluc3RhbmNlIl0sZnVuY3Rpb24oZSx0
LHIsbixpLG8sYSxzLHUpeyJ1c2Ugc3RyaWN0Ijt0LmRlZmF1bHQuQXBwbGljYXRpb249by5kZWZh
dWx0LHQuZGVmYXVsdC5SZXNvbHZlcj1pLlJlc29sdmVyLHQuZGVmYXVsdC5EZWZhdWx0UmVzb2x2
ZXI9aS5kZWZhdWx0LG4ucnVuTG9hZEhvb2tzKCJFbWJlci5BcHBsaWNhdGlvbiIsby5kZWZhdWx0
KX0pLGUoImVtYmVyLWFwcGxpY2F0aW9uL3N5c3RlbS9hcHBsaWNhdGlvbi1pbnN0YW5jZSIsWyJl
eHBvcnRzIiwiZW1iZXItbWV0YWwvZGVidWciLCJlbWJlci1tZXRhbC9wcm9wZXJ0eV9nZXQiLCJl
bWJlci1tZXRhbC9wcm9wZXJ0eV9zZXQiLCJlbWJlci1tZXRhbC9zeW1ib2wiLCJlbWJlci1tZXRh
bC9ydW5fbG9vcCIsImVtYmVyLW1ldGFsL2NvbXB1dGVkIiwiZW1iZXItcnVudGltZS9taXhpbnMv
cmVnaXN0cnlfcHJveHkiLCJlbWJlci1tZXRhbC9hc3NpZ24iLCJlbWJlci1tZXRhbC9lbnZpcm9u
bWVudCIsImVtYmVyLXJ1bnRpbWUvZXh0L3JzdnAiLCJlbWJlci12aWV3cy9zeXN0ZW0vanF1ZXJ5
IiwiZW1iZXItYXBwbGljYXRpb24vc3lzdGVtL2VuZ2luZS1pbnN0YW5jZSJdLGZ1bmN0aW9uKGUs
dCxyLG4saSxvLGEscyx1LGwsYyxmLGQpeyJ1c2Ugc3RyaWN0Ijt2YXIgcD1pLmRlZmF1bHQoIklO
VEVSTkFMX0JPT1RfT1BUSU9OUyIpO2UuSU5URVJOQUxfQk9PVF9PUFRJT05TPXA7dmFyIGg9dm9p
ZCAwLG09ZC5kZWZhdWx0LmV4dGVuZCh7YXBwbGljYXRpb246bnVsbCxjdXN0b21FdmVudHM6bnVs
bCxyb290RWxlbWVudDpudWxsLGluaXQ6ZnVuY3Rpb24oKXt0aGlzLl9zdXBlci5hcHBseSh0aGlz
LGFyZ3VtZW50cyksdGhpcy5yZWdpc3RlcigiLWFwcGxpY2F0aW9uLWluc3RhbmNlOm1haW4iLHRo
aXMse2luc3RhbnRpYXRlOiExfSksdGhpcy5fYm9vdGVkPSExfSxib290OmZ1bmN0aW9uKCl7dmFy
IGU9dGhpcyx0PWFyZ3VtZW50cy5sZW5ndGg8PTB8fHZvaWQgMD09PWFyZ3VtZW50c1swXT97fTph
cmd1bWVudHNbMF07cmV0dXJuIHRoaXMuX2Jvb3RQcm9taXNlP3RoaXMuX2Jvb3RQcm9taXNlOih0
aGlzLl9ib290UHJvbWlzZT1uZXcgYy5kZWZhdWx0LlByb21pc2UoZnVuY3Rpb24ocil7cmV0dXJu
IHIoZS5fYm9vdFN5bmModCkpfSksdGhpcy5fYm9vdFByb21pc2UpfSxfYm9vdFN5bmM6ZnVuY3Rp
b24oZSl7aWYodGhpcy5fYm9vdGVkKXJldHVybiB0aGlzO2U9bmV3IGgoZSk7dmFyIHQ9dGhpcy5f
X3JlZ2lzdHJ5X187aWYodC5yZWdpc3RlcigiLWVudmlyb25tZW50Om1haW4iLGUudG9FbnZpcm9u
bWVudCgpLHtpbnN0YW50aWF0ZTohMX0pLHQuaW5qZWN0aW9uKCJ2aWV3IiwiX2Vudmlyb25tZW50
IiwiLWVudmlyb25tZW50Om1haW4iKSx0LmluamVjdGlvbigicm91dGUiLCJfZW52aXJvbm1lbnQi
LCItZW52aXJvbm1lbnQ6bWFpbiIpLHQucmVnaXN0ZXIoInNlcnZpY2U6LWRvY3VtZW50IixlLmRv
Y3VtZW50LHsKK2luc3RhbnRpYXRlOiExfSksZS5pc0ludGVyYWN0aXZlPyh0LmluamVjdGlvbigi
dmlldyIsInJlbmRlcmVyIiwicmVuZGVyZXI6LWRvbSIpLHQuaW5qZWN0aW9uKCJjb21wb25lbnQi
LCJyZW5kZXJlciIsInJlbmRlcmVyOi1kb20iKSk6KHQuaW5qZWN0aW9uKCJ2aWV3IiwicmVuZGVy
ZXIiLCJyZW5kZXJlcjotaW5lcnQiKSx0LmluamVjdGlvbigiY29tcG9uZW50IiwicmVuZGVyZXIi
LCJyZW5kZXJlcjotaW5lcnQiKSksZS5yb290RWxlbWVudD90aGlzLnJvb3RFbGVtZW50PWUucm9v
dEVsZW1lbnQ6dGhpcy5yb290RWxlbWVudD10aGlzLmFwcGxpY2F0aW9uLnJvb3RFbGVtZW50LGUu
bG9jYXRpb24pe3ZhciBpPXIuZ2V0KHRoaXMsInJvdXRlciIpO24uc2V0KGksImxvY2F0aW9uIixl
LmxvY2F0aW9uKX1yZXR1cm4gdGhpcy5hcHBsaWNhdGlvbi5ydW5JbnN0YW5jZUluaXRpYWxpemVy
cyh0aGlzKSxlLmlzSW50ZXJhY3RpdmUmJnRoaXMuc2V0dXBFdmVudERpc3BhdGNoZXIoKSx0aGlz
Ll9ib290ZWQ9ITAsdGhpc30scm91dGVyOmEuY29tcHV0ZWQoZnVuY3Rpb24oKXtyZXR1cm4gdGhp
cy5sb29rdXAoInJvdXRlcjptYWluIil9KS5yZWFkT25seSgpLGRpZENyZWF0ZVJvb3RWaWV3OmZ1
bmN0aW9uKGUpe2UuYXBwZW5kVG8odGhpcy5yb290RWxlbWVudCl9LHN0YXJ0Um91dGluZzpmdW5j
dGlvbigpe3ZhciBlPXIuZ2V0KHRoaXMsInJvdXRlciIpO2Uuc3RhcnRSb3V0aW5nKCksdGhpcy5f
ZGlkU2V0dXBSb3V0ZXI9ITB9LHNldHVwUm91dGVyOmZ1bmN0aW9uKCl7aWYoIXRoaXMuX2RpZFNl
dHVwUm91dGVyKXt0aGlzLl9kaWRTZXR1cFJvdXRlcj0hMDt2YXIgZT1yLmdldCh0aGlzLCJyb3V0
ZXIiKTtlLnNldHVwUm91dGVyKCl9fSxoYW5kbGVVUkw6ZnVuY3Rpb24oZSl7dmFyIHQ9ci5nZXQo
dGhpcywicm91dGVyIik7cmV0dXJuIHRoaXMuc2V0dXBSb3V0ZXIoKSx0LmhhbmRsZVVSTChlKX0s
c2V0dXBFdmVudERpc3BhdGNoZXI6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmxvb2t1cCgiZXZlbnRf
ZGlzcGF0Y2hlcjptYWluIiksdD1yLmdldCh0aGlzLmFwcGxpY2F0aW9uLCJjdXN0b21FdmVudHMi
KSxuPXIuZ2V0KHRoaXMsImN1c3RvbUV2ZW50cyIpLGk9dS5kZWZhdWx0KHt9LHQsbik7cmV0dXJu
IGUuc2V0dXAoaSx0aGlzLnJvb3RFbGVtZW50KSxlfSxnZXRVUkw6ZnVuY3Rpb24oKXt2YXIgZT1y
LmdldCh0aGlzLCJyb3V0ZXIiKTtyZXR1cm4gci5nZXQoZSwidXJsIil9LHZpc2l0OmZ1bmN0aW9u
KGUpe3ZhciB0PXRoaXM7dGhpcy5zZXR1cFJvdXRlcigpO3ZhciBuPXIuZ2V0KHRoaXMsInJvdXRl
ciIpLGk9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGMuZGVmYXVsdC5Qcm9taXNlKGZ1bmN0aW9uKGUp
e28uZGVmYXVsdC5uZXh0KG51bGwsZSx0KX0pfSxhPWZ1bmN0aW9uKGUpe2lmKGUuZXJyb3IpdGhy
b3cgZS5lcnJvcjtpZigiVHJhbnNpdGlvbkFib3J0ZWQiPT09ZS5uYW1lJiZuLnJvdXRlci5hY3Rp
dmVUcmFuc2l0aW9uKXJldHVybiBuLnJvdXRlci5hY3RpdmVUcmFuc2l0aW9uLnRoZW4oaSxhKTt0
aHJvdyJUcmFuc2l0aW9uQWJvcnRlZCI9PT1lLm5hbWU/bmV3IEVycm9yKGUubWVzc2FnZSk6ZX0s
cz1yLmdldChuLCJsb2NhdGlvbiIpO3JldHVybiBzLnNldFVSTChlKSxuLmhhbmRsZVVSTChzLmdl
dFVSTCgpKS50aGVuKGksYSl9fSk7aD1mdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg8
PTB8fHZvaWQgMD09PWFyZ3VtZW50c1swXT97fTphcmd1bWVudHNbMF07dGhpcy5qUXVlcnk9Zi5k
ZWZhdWx0LHRoaXMuaXNJbnRlcmFjdGl2ZT1sLmRlZmF1bHQuaGFzRE9NLHZvaWQgMCE9PWUuaXNC
cm93c2VyP3RoaXMuaXNCcm93c2VyPSEhZS5pc0Jyb3dzZXI6dGhpcy5pc0Jyb3dzZXI9bC5kZWZh
dWx0Lmhhc0RPTSx0aGlzLmlzQnJvd3Nlcnx8KHRoaXMualF1ZXJ5PW51bGwsdGhpcy5pc0ludGVy
YWN0aXZlPSExLHRoaXMubG9jYXRpb249Im5vbmUiKSx2b2lkIDAhPT1lLnNob3VsZFJlbmRlcj90
aGlzLnNob3VsZFJlbmRlcj0hIWUuc2hvdWxkUmVuZGVyOnRoaXMuc2hvdWxkUmVuZGVyPSEwLHRo
aXMuc2hvdWxkUmVuZGVyfHwodGhpcy5qUXVlcnk9bnVsbCx0aGlzLmlzSW50ZXJhY3RpdmU9ITEp
LGUuZG9jdW1lbnQ/dGhpcy5kb2N1bWVudD1lLmRvY3VtZW50OnRoaXMuZG9jdW1lbnQ9InVuZGVm
aW5lZCIhPXR5cGVvZiBkb2N1bWVudD9kb2N1bWVudDpudWxsLGUucm9vdEVsZW1lbnQmJih0aGlz
LnJvb3RFbGVtZW50PWUucm9vdEVsZW1lbnQpLHZvaWQgMCE9PWUubG9jYXRpb24mJih0aGlzLmxv
Y2F0aW9uPWUubG9jYXRpb24pLHZvaWQgMCE9PWUualF1ZXJ5JiYodGhpcy5qUXVlcnk9ZS5qUXVl
cnkpLHZvaWQgMCE9PWUuaXNJbnRlcmFjdGl2ZSYmKHRoaXMuaXNJbnRlcmFjdGl2ZT0hIWUuaXNJ
bnRlcmFjdGl2ZSl9LGgucHJvdG90eXBlLnRvRW52aXJvbm1lbnQ9ZnVuY3Rpb24oKXt2YXIgZT11
LmRlZmF1bHQoe30sbC5kZWZhdWx0KTtyZXR1cm4gZS5oYXNET009dGhpcy5pc0Jyb3dzZXIsZS5v
cHRpb25zPXRoaXMsZX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KG0ucHJvdG90eXBlLCJjb250YWlu
ZXIiLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXt2YXIgZT10
aGlzO3JldHVybntsb29rdXA6ZnVuY3Rpb24oKXtyZXR1cm4gZS5sb29rdXAuYXBwbHkoZSxhcmd1
bWVudHMpfX19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KG0ucHJvdG90eXBlLCJyZWdpc3RyeSIs
e2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiBzLmJ1
aWxkRmFrZVJlZ2lzdHJ5V2l0aERlcHJlY2F0aW9ucyh0aGlzLCJBcHBsaWNhdGlvbkluc3RhbmNl
Iil9fSksZS5kZWZhdWx0PW19KSxlKCJlbWJlci1hcHBsaWNhdGlvbi9zeXN0ZW0vYXBwbGljYXRp
b24iLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsIiwiZW1iZXItbWV0YWwvZGVidWciLCJlbWJlci1t
ZXRhbC9wcm9wZXJ0eV9nZXQiLCJlbWJlci1ydW50aW1lL3N5c3RlbS9sYXp5X2xvYWQiLCJlbWJl
ci1tZXRhbC9ydW5fbG9vcCIsImVtYmVyLXJ1bnRpbWUvY29udHJvbGxlcnMvY29udHJvbGxlciIs
ImVtYmVyLWh0bWxiYXJzL3N5c3RlbS9kb20taGVscGVyIiwiZW1iZXItbWV0YWwtdmlld3MiLCJl
bWJlci1odG1sYmFycy90ZW1wbGF0ZXMvdG9wLWxldmVsLXZpZXciLCJlbWJlci1yb3V0aW5nLXZp
ZXdzL3ZpZXdzL291dGxldCIsImVtYmVyLXZpZXdzL3ZpZXdzL3ZpZXciLCJlbWJlci12aWV3cy9z
eXN0ZW0vZXZlbnRfZGlzcGF0Y2hlciIsImVtYmVyLXZpZXdzL3N5c3RlbS9qcXVlcnkiLCJlbWJl
ci1yb3V0aW5nL3N5c3RlbS9yb3V0ZSIsImVtYmVyLXJvdXRpbmcvc3lzdGVtL3JvdXRlciIsImVt
YmVyLXJvdXRpbmcvbG9jYXRpb24vaGFzaF9sb2NhdGlvbiIsImVtYmVyLXJvdXRpbmcvbG9jYXRp
b24vaGlzdG9yeV9sb2NhdGlvbiIsImVtYmVyLXJvdXRpbmcvbG9jYXRpb24vYXV0b19sb2NhdGlv
biIsImVtYmVyLXJvdXRpbmcvbG9jYXRpb24vbm9uZV9sb2NhdGlvbiIsImVtYmVyLXJvdXRpbmcv
c3lzdGVtL2NhY2hlIiwiZW1iZXItYXBwbGljYXRpb24vc3lzdGVtL2FwcGxpY2F0aW9uLWluc3Rh
bmNlIiwiZW1iZXItdmlld3Mvdmlld3MvdGV4dF9maWVsZCIsImVtYmVyLXZpZXdzL3ZpZXdzL3Rl
eHRfYXJlYSIsImVtYmVyLXZpZXdzL3ZpZXdzL2NoZWNrYm94IiwiZW1iZXItcm91dGluZy12aWV3
cy9jb21wb25lbnRzL2xpbmstdG8iLCJlbWJlci1yb3V0aW5nL3NlcnZpY2VzL3JvdXRpbmciLCJl
bWJlci1leHRlbnNpb24tc3VwcG9ydC9jb250YWluZXJfZGVidWdfYWRhcHRlciIsImVtYmVyLXJ1
bnRpbWUvbWl4aW5zL3JlZ2lzdHJ5X3Byb3h5IiwiY29udGFpbmVyL3JlZ2lzdHJ5IiwiZW1iZXIt
bWV0YWwvZW52aXJvbm1lbnQiLCJlbWJlci1ydW50aW1lL2V4dC9yc3ZwIiwiZW1iZXItYXBwbGlj
YXRpb24vc3lzdGVtL2VuZ2luZSIsInJlcXVpcmUiXSxmdW5jdGlvbihlLHQscixuLGksbyxhLHMs
dSxsLGMsZixkLHAsaCxtLHYsYixnLHksXyx3LHgsayxDLEUsTyxULE4sUyxBLFAsaixSKXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gTChlLHQpe3JldHVybiBlLnJhdz10LGV9ZnVuY3Rpb24gRCgpe1U9
ITEsVz0hMX1mdW5jdGlvbiBNKGUpe2Uub3B0aW9uc0ZvclR5cGUoImNvbXBvbmVudCIse3Npbmds
ZXRvbjohMX0pLGUub3B0aW9uc0ZvclR5cGUoInZpZXciLHtzaW5nbGV0b246ITF9KSxlLmluamVj
dGlvbigicmVuZGVyZXIiLCJkb20iLCJzZXJ2aWNlOi1kb20taGVscGVyIiksZS5yZWdpc3Rlcigi
Y29udHJvbGxlcjpiYXNpYyIsYS5kZWZhdWx0LHtpbnN0YW50aWF0ZTohMX0pLGUuaW5qZWN0aW9u
KCJzZXJ2aWNlOi1kb20taGVscGVyIiwiZG9jdW1lbnQiLCJzZXJ2aWNlOi1kb2N1bWVudCIpLGUu
cmVnaXN0ZXIoIi12aWV3LXJlZ2lzdHJ5Om1haW4iLHtjcmVhdGU6ZnVuY3Rpb24oKXtyZXR1cm57
fX19KSxlLmluamVjdGlvbigidmlldyIsIl92aWV3UmVnaXN0cnkiLCItdmlldy1yZWdpc3RyeTpt
YWluIiksZS5pbmplY3Rpb24oInJvdXRlIiwiX3RvcExldmVsVmlld1RlbXBsYXRlIiwidGVtcGxh
dGU6LW91dGxldCIpLGUucmVnaXN0ZXIoInJvdXRlOmJhc2ljIixoLmRlZmF1bHQpLGUucmVnaXN0
ZXIoImV2ZW50X2Rpc3BhdGNoZXI6bWFpbiIsZC5kZWZhdWx0KSxlLmluamVjdGlvbigicm91dGVy
Om1haW4iLCJuYW1lc3BhY2UiLCJhcHBsaWNhdGlvbjptYWluIiksZS5pbmplY3Rpb24oInZpZXc6
LW91dGxldCIsIm5hbWVzcGFjZSIsImFwcGxpY2F0aW9uOm1haW4iKSxlLnJlZ2lzdGVyKCJsb2Nh
dGlvbjphdXRvIixnLmRlZmF1bHQpLGUucmVnaXN0ZXIoImxvY2F0aW9uOmhhc2giLHYuZGVmYXVs
dCksZS5yZWdpc3RlcigibG9jYXRpb246aGlzdG9yeSIsYi5kZWZhdWx0KSxlLnJlZ2lzdGVyKCJs
b2NhdGlvbjpub25lIix5LmRlZmF1bHQpLGUuaW5qZWN0aW9uKCJjb250cm9sbGVyIiwidGFyZ2V0
Iiwicm91dGVyOm1haW4iKSxlLmluamVjdGlvbigiY29udHJvbGxlciIsIm5hbWVzcGFjZSIsImFw
cGxpY2F0aW9uOm1haW4iKSxlLnJlZ2lzdGVyKFMucHJpdmF0aXplKHEpLF8uZGVmYXVsdCksZS5p
bmplY3Rpb24oInJvdXRlciIsIl9idWNrZXRDYWNoZSIsUy5wcml2YXRpemUocSkpLGUuaW5qZWN0
aW9uKCJyb3V0ZSIsIl9idWNrZXRDYWNoZSIsUy5wcml2YXRpemUocSkpLGUuaW5qZWN0aW9uKCJj
b250cm9sbGVyIiwiX2J1Y2tldENhY2hlIixTLnByaXZhdGl6ZShxKSksZS5pbmplY3Rpb24oInJv
dXRlIiwicm91dGVyIiwicm91dGVyOm1haW4iKSxlLnJlZ2lzdGVyKCJjb21wb25lbnQ6LXRleHQt
ZmllbGQiLHguZGVmYXVsdCksZS5yZWdpc3RlcigiY29tcG9uZW50Oi10ZXh0LWFyZWEiLGsuZGVm
YXVsdCksZS5yZWdpc3RlcigiY29tcG9uZW50Oi1jaGVja2JveCIsQy5kZWZhdWx0KSxlLnJlZ2lz
dGVyKCJjb21wb25lbnQ6bGluay10byIsRS5kZWZhdWx0KSxlLnJlZ2lzdGVyKCJzZXJ2aWNlOi1y
b3V0aW5nIixPLmRlZmF1bHQpLGUuaW5qZWN0aW9uKCJzZXJ2aWNlOi1yb3V0aW5nIiwicm91dGVy
Iiwicm91dGVyOm1haW4iKSxlLnJlZ2lzdGVyKCJyZXNvbHZlci1mb3ItZGVidWdnaW5nOm1haW4i
LGUucmVzb2x2ZXIse2luc3RhbnRpYXRlOiExfSksZS5pbmplY3Rpb24oImNvbnRhaW5lci1kZWJ1
Zy1hZGFwdGVyOm1haW4iLCJyZXNvbHZlciIsInJlc29sdmVyLWZvci1kZWJ1Z2dpbmc6bWFpbiIp
LGUuaW5qZWN0aW9uKCJkYXRhLWFkYXB0ZXI6bWFpbiIsImNvbnRhaW5lckRlYnVnQWRhcHRlciIs
ImNvbnRhaW5lci1kZWJ1Zy1hZGFwdGVyOm1haW4iKSxlLnJlZ2lzdGVyKCJjb250YWluZXItZGVi
dWctYWRhcHRlcjptYWluIixULmRlZmF1bHQpfWZ1bmN0aW9uIEkoZSl7TShlKTt2YXIgdD1SLmRl
ZmF1bHQoImVtYmVyLWdsaW1tZXIvZW52aXJvbm1lbnQiKS5kZWZhdWx0O2UucmVnaXN0ZXIoInNl
cnZpY2U6LWdsaW1tZXItZW52aXJvbm1lbnQiLHQpLGUuaW5qZWN0aW9uKCJzZXJ2aWNlOi1nbGlt
bWVyLWVudmlyb25tZW50IiwiZG9tIiwic2VydmljZTotZG9tLWhlbHBlciIpLGUuaW5qZWN0aW9u
KCJyZW5kZXJlciIsImVudiIsInNlcnZpY2U6LWdsaW1tZXItZW52aXJvbm1lbnQiKTt2YXIgcj1S
LmRlZmF1bHQoImVtYmVyLWdsaW1tZXIvZW1iZXItcm91dGluZy12aWV3IikuT3V0bGV0Vmlldztl
LnJlZ2lzdGVyKCJ2aWV3Oi1vdXRsZXQiLHIpO3ZhciBuPVIuZGVmYXVsdCgiZW1iZXItZ2xpbW1l
ci9lbWJlci1tZXRhbC12aWV3cyIpLGk9bi5JbnRlcmFjdGl2ZVJlbmRlcmVyLG89bi5JbmVydFJl
bmRlcmVyO2UucmVnaXN0ZXIoInJlbmRlcmVyOi1kb20iLGkpLGUucmVnaXN0ZXIoInJlbmRlcmVy
Oi1pbmVydCIsbyk7dmFyIGE9Ui5kZWZhdWx0KCJlbWJlci1nbGltbWVyL2RvbSIpLmRlZmF1bHQ7
ZS5yZWdpc3Rlcigic2VydmljZTotZG9tLWhlbHBlciIse2NyZWF0ZTpmdW5jdGlvbihlKXt2YXIg
dD1lLmRvY3VtZW50O3JldHVybiBuZXcgYSh0KX19KTt2YXIgcz1SLmRlZmF1bHQoImVtYmVyLWds
aW1tZXIvdGVtcGxhdGVzL291dGxldCIpLmRlZmF1bHQsdT1SLmRlZmF1bHQoImVtYmVyLWdsaW1t
ZXIvdGVtcGxhdGVzL2NvbXBvbmVudCIpLmRlZmF1bHQ7ZS5yZWdpc3RlcihTLnByaXZhdGl6ZSh6
KSx1KSxlLnJlZ2lzdGVyKCJ0ZW1wbGF0ZTotb3V0bGV0IixzKSxlLmluamVjdGlvbigidmlldzot
b3V0bGV0IiwidGVtcGxhdGUiLCJ0ZW1wbGF0ZTotb3V0bGV0IiksZS5pbmplY3Rpb24oInRlbXBs
YXRlIiwiZW52Iiwic2VydmljZTotZ2xpbW1lci1lbnZpcm9ubWVudCIpLGUub3B0aW9uc0ZvclR5
cGUoImhlbHBlciIse2luc3RhbnRpYXRlOiExfSl9ZnVuY3Rpb24gRihlKXtNKGUpLGUub3B0aW9u
c0ZvclR5cGUoInRlbXBsYXRlIix7aW5zdGFudGlhdGU6ITF9KSxlLnJlZ2lzdGVyKCJ2aWV3Oi1v
dXRsZXQiLGMuT3V0bGV0Vmlldyk7dmFyIHQ9dS5JbnRlcmFjdGl2ZVJlbmRlcmVyLHI9dS5JbmVy
dFJlbmRlcmVyO2UucmVnaXN0ZXIoInJlbmRlcmVyOi1kb20iLHQpLGUucmVnaXN0ZXIoInJlbmRl
cmVyOi1pbmVydCIsciksZS5yZWdpc3Rlcigic2VydmljZTotZG9tLWhlbHBlciIse2NyZWF0ZTpm
dW5jdGlvbihlKXt2YXIgdD1lLmRvY3VtZW50O3JldHVybiBuZXcgcy5kZWZhdWx0KHQpfX0pLGUu
cmVnaXN0ZXIoInRlbXBsYXRlOi1vdXRsZXQiLGwuZGVmYXVsdCksZS5yZWdpc3Rlcigidmlldzp0
b3BsZXZlbCIsZi5kZWZhdWx0LmV4dGVuZCgpKX1mdW5jdGlvbiBIKCl7Qnx8KEI9ITAsQS5kZWZh
dWx0Lmhhc0RPTSYmdC5kZWZhdWx0LmxpYnJhcmllcy5yZWdpc3RlckNvcmVMaWJyYXJ5KCJqUXVl
cnkiLHAuZGVmYXVsdCgpLmpxdWVyeSkpfWZ1bmN0aW9uIFYoKXtpZih0LmRlZmF1bHQuTE9HX1ZF
UlNJT04pe3QuZGVmYXVsdC5MT0dfVkVSU0lPTj0hMTtmb3IodmFyIGU9dC5kZWZhdWx0LmxpYnJh
cmllcy5fcmVnaXN0cnkscj1lLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gbi5nZXQoZSwibmFtZS5s
ZW5ndGgiKX0pLGk9TWF0aC5tYXguYXBwbHkodGhpcyxyKSxvPTAsYT1lLmxlbmd0aDtvPGE7bysr
KXt2YXIgcz1lW29dO25ldyBBcnJheShpLXMubmFtZS5sZW5ndGgrMSkuam9pbigiICIpfX19ZS5f
cmVzZXRMZWdhY3lBZGRvbldhcm5pbmdzPUQ7dmFyIHE9TChbIi1idWNrZXQtY2FjaGU6bWFpbiJd
LFsiLWJ1Y2tldC1jYWNoZTptYWluIl0pLHo9TChbInRlbXBsYXRlOmNvbXBvbmVudHMvLWRlZmF1
bHQiXSxbInRlbXBsYXRlOmNvbXBvbmVudHMvLWRlZmF1bHQiXSksQj0hMSxVPSExLFc9ITEsJD1q
LmRlZmF1bHQuZXh0ZW5kKHtfc3VwcHJlc3NEZWZlcnJlZERlcHJlY2F0aW9uOiEwLHJvb3RFbGVt
ZW50OiJib2R5IixldmVudERpc3BhdGNoZXI6bnVsbCxjdXN0b21FdmVudHM6bnVsbCxhdXRvYm9v
dDohMCxfZ2xvYmFsc01vZGU6ITAsaW5pdDpmdW5jdGlvbihlKXt0aGlzLl9zdXBlci5hcHBseSh0
aGlzLGFyZ3VtZW50cyksdGhpcy4kfHwodGhpcy4kPXAuZGVmYXVsdCksSCgpLFYoKSx0aGlzLl9y
ZWFkaW5lc3NEZWZlcnJhbHM9MSx0aGlzLl9ib290ZWQ9ITEsdGhpcy5hdXRvYm9vdD10aGlzLl9n
bG9iYWxzTW9kZT0hIXRoaXMuYXV0b2Jvb3QsdGhpcy5fZ2xvYmFsc01vZGUmJnRoaXMuX3ByZXBh
cmVGb3JHbG9iYWxzTW9kZSgpLHRoaXMuYXV0b2Jvb3QmJnRoaXMud2FpdEZvckRPTVJlYWR5KCl9
LGJ1aWxkSW5zdGFuY2U6ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPD0wfHx2b2lk
IDA9PT1hcmd1bWVudHNbMF0/e306YXJndW1lbnRzWzBdO3JldHVybiBlLmJhc2U9dGhpcyxlLmFw
cGxpY2F0aW9uPXRoaXMsdy5kZWZhdWx0LmNyZWF0ZShlKX0sX3ByZXBhcmVGb3JHbG9iYWxzTW9k
ZTpmdW5jdGlvbigpe3RoaXMuUm91dGVyPSh0aGlzLlJvdXRlcnx8bS5kZWZhdWx0KS5leHRlbmQo
KSx0aGlzLl9idWlsZERlcHJlY2F0ZWRJbnN0YW5jZSgpfSxfYnVpbGREZXByZWNhdGVkSW5zdGFu
Y2U6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmJ1aWxkSW5zdGFuY2UoKTt0aGlzLl9fZGVwcmVjYXRl
ZEluc3RhbmNlX189ZSx0aGlzLl9fY29udGFpbmVyX189ZS5fX2NvbnRhaW5lcl9fLGYuZGVmYXVs
dC52aWV3cz1lLmxvb2t1cCgiLXZpZXctcmVnaXN0cnk6bWFpbiIpfSx3YWl0Rm9yRE9NUmVhZHk6
ZnVuY3Rpb24oKXshdGhpcy4kfHx0aGlzLiQuaXNSZWFkeT9vLmRlZmF1bHQuc2NoZWR1bGUoImFj
dGlvbnMiLHRoaXMsImRvbVJlYWR5Iik6dGhpcy4kKCkucmVhZHkoby5kZWZhdWx0LmJpbmQodGhp
cywiZG9tUmVhZHkiKSl9LGRvbVJlYWR5OmZ1bmN0aW9uKCl7dGhpcy5pc0Rlc3Ryb3llZHx8dGhp
cy5fYm9vdFN5bmMoKX0sZGVmZXJSZWFkaW5lc3M6ZnVuY3Rpb24oKXt0aGlzLl9yZWFkaW5lc3NE
ZWZlcnJhbHMrK30sYWR2YW5jZVJlYWRpbmVzczpmdW5jdGlvbigpe3RoaXMuX3JlYWRpbmVzc0Rl
ZmVycmFscy0tLDA9PT10aGlzLl9yZWFkaW5lc3NEZWZlcnJhbHMmJm8uZGVmYXVsdC5vbmNlKHRo
aXMsdGhpcy5kaWRCZWNvbWVSZWFkeSl9LGJvb3Q6ZnVuY3Rpb24oKXtpZih0aGlzLl9ib290UHJv
bWlzZSlyZXR1cm4gdGhpcy5fYm9vdFByb21pc2U7dHJ5e3RoaXMuX2Jvb3RTeW5jKCl9Y2F0Y2go
ZSl7fXJldHVybiB0aGlzLl9ib290UHJvbWlzZX0sX2Jvb3RTeW5jOmZ1bmN0aW9uKCl7aWYoIXRo
aXMuX2Jvb3RlZCl7dC5kZWZhdWx0LkVOVi5fRU5BQkxFX0xFR0FDWV9WSUVXX1NVUFBPUlQmJiFV
JiYoVT0hMCksdC5kZWZhdWx0LkVOVi5fRU5BQkxFX0xFR0FDWV9DT05UUk9MTEVSX1NVUFBPUlQm
JiFXJiYoVz0hMCk7dmFyIGU9dGhpcy5fYm9vdFJlc29sdmVyPW5ldyBQLmRlZmF1bHQuZGVmZXI7
dGhpcy5fYm9vdFByb21pc2U9ZS5wcm9taXNlO3RyeXt0aGlzLnJ1bkluaXRpYWxpemVycygpLGku
cnVuTG9hZEhvb2tzKCJhcHBsaWNhdGlvbiIsdGhpcyksdGhpcy5hZHZhbmNlUmVhZGluZXNzKCl9
Y2F0Y2godCl7dGhyb3cgZS5yZWplY3QodCksdH19fSxyZXNldDpmdW5jdGlvbigpe2Z1bmN0aW9u
IGUoKXtvLmRlZmF1bHQodCwiZGVzdHJveSIpLHRoaXMuX2J1aWxkRGVwcmVjYXRlZEluc3RhbmNl
KCksby5kZWZhdWx0LnNjaGVkdWxlKCJhY3Rpb25zIix0aGlzLCJfYm9vdFN5bmMiKX12YXIgdD10
aGlzLl9fZGVwcmVjYXRlZEluc3RhbmNlX187dGhpcy5fcmVhZGluZXNzRGVmZXJyYWxzPTEsdGhp
cy5fYm9vdFByb21pc2U9bnVsbCx0aGlzLl9ib290UmVzb2x2ZXI9bnVsbCx0aGlzLl9ib290ZWQ9
ITEsby5kZWZhdWx0LmpvaW4odGhpcyxlKX0sZGlkQmVjb21lUmVhZHk6ZnVuY3Rpb24oKXt0cnl7
aWYodC5kZWZhdWx0LnRlc3Rpbmd8fCh0LmRlZmF1bHQuTmFtZXNwYWNlLnByb2Nlc3NBbGwoKSx0
LmRlZmF1bHQuQk9PVEVEPSEwKSx0aGlzLmF1dG9ib290KXt2YXIgZT12b2lkIDA7ZT10aGlzLl9n
bG9iYWxzTW9kZT90aGlzLl9fZGVwcmVjYXRlZEluc3RhbmNlX186dGhpcy5idWlsZEluc3RhbmNl
KCksZS5fYm9vdFN5bmMoKSx0aGlzLnJlYWR5KCksZS5zdGFydFJvdXRpbmcoKX10aGlzLl9ib290
UmVzb2x2ZXIucmVzb2x2ZSh0aGlzKSx0aGlzLl9ib290ZWQ9ITB9Y2F0Y2goZSl7dGhyb3cgdGhp
cy5fYm9vdFJlc29sdmVyLnJlamVjdChlKSxlfX0scmVhZHk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhp
c30sd2lsbERlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLl9zdXBlci5hcHBseSh0aGlzLGFyZ3VtZW50
cyksdC5kZWZhdWx0LkJPT1RFRD0hMSx0aGlzLl9ib290ZWQ9ITEsdGhpcy5fYm9vdFByb21pc2U9
bnVsbCx0aGlzLl9ib290UmVzb2x2ZXI9bnVsbCxpLl9sb2FkZWQuYXBwbGljYXRpb249PT10aGlz
JiYoaS5fbG9hZGVkLmFwcGxpY2F0aW9uPXZvaWQgMCksdGhpcy5fZ2xvYmFsc01vZGUmJnRoaXMu
X19kZXByZWNhdGVkSW5zdGFuY2VfXyYmdGhpcy5fX2RlcHJlY2F0ZWRJbnN0YW5jZV9fLmRlc3Ry
b3koKX0sdmlzaXQ6ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzO3JldHVybiB0aGlzLmJvb3QoKS50
aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIHIuYnVpbGRJbnN0YW5jZSgpLmJvb3QodCkudGhlbihmdW5j
dGlvbih0KXtyZXR1cm4gdC52aXNpdChlKX0pfSl9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KCQu
cHJvdG90eXBlLCJyZWdpc3RyeSIse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiExLGdldDpm
dW5jdGlvbigpe3JldHVybiBOLmJ1aWxkRmFrZVJlZ2lzdHJ5V2l0aERlcHJlY2F0aW9ucyh0aGlz
LCJBcHBsaWNhdGlvbiIpfX0pLCQucmVvcGVuQ2xhc3Moe2J1aWxkUmVnaXN0cnk6ZnVuY3Rpb24o
ZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aDw9MXx8dm9pZCAwPT09YXJndW1lbnRzWzFdP3t9OmFy
Z3VtZW50c1sxXSxyPXRoaXMuX3N1cGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gci5y
ZWdpc3RlcigiYXBwbGljYXRpb246bWFpbiIsZSx7aW5zdGFudGlhdGU6ITF9KSx0W2ouR0xJTU1F
Ul0/SShyKTpGKHIpLHJ9fSksZS5kZWZhdWx0PSR9KSxlKCJlbWJlci1hcHBsaWNhdGlvbi9zeXN0
ZW0vZW5naW5lLWluc3RhbmNlIixbImV4cG9ydHMiLCJlbWJlci1ydW50aW1lL3N5c3RlbS9vYmpl
Y3QiLCJjb250YWluZXIvcmVnaXN0cnkiLCJlbWJlci1ydW50aW1lL21peGlucy9jb250YWluZXJf
cHJveHkiLCJlbWJlci1ydW50aW1lL21peGlucy9yZWdpc3RyeV9wcm94eSIsImVtYmVyLW1ldGFs
L3J1bl9sb29wIl0sZnVuY3Rpb24oZSx0LHIsbixpLG8peyJ1c2Ugc3RyaWN0Ijt2YXIgYT10LmRl
ZmF1bHQuZXh0ZW5kKGkuZGVmYXVsdCxuLmRlZmF1bHQse2Jhc2U6bnVsbCxpbml0OmZ1bmN0aW9u
KCl7dGhpcy5fc3VwZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpO3ZhciBlPXRoaXMuYmFzZTtlfHwo
ZT10aGlzLmFwcGxpY2F0aW9uLHRoaXMuYmFzZT1lKTt2YXIgdD10aGlzLl9fcmVnaXN0cnlfXz1u
ZXcgci5kZWZhdWx0KHtmYWxsYmFjazplLl9fcmVnaXN0cnlfX30pO3RoaXMuX19jb250YWluZXJf
Xz10LmNvbnRhaW5lcih7b3duZXI6dGhpc30pfSx1bnJlZ2lzdGVyOmZ1bmN0aW9uKGUpe3RoaXMu
X19jb250YWluZXJfXy5yZXNldChlKSx0aGlzLl9zdXBlci5hcHBseSh0aGlzLGFyZ3VtZW50cyl9
LHdpbGxEZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5fc3VwZXIuYXBwbHkodGhpcyxhcmd1bWVudHMp
LG8uZGVmYXVsdCh0aGlzLl9fY29udGFpbmVyX18sImRlc3Ryb3kiKX19KTtlLmRlZmF1bHQ9YX0p
LGUoImVtYmVyLWFwcGxpY2F0aW9uL3N5c3RlbS9lbmdpbmUiLFsiZXhwb3J0cyIsImVtYmVyLXJ1
bnRpbWUvc3lzdGVtL25hbWVzcGFjZSIsImNvbnRhaW5lci9yZWdpc3RyeSIsImVtYmVyLXJ1bnRp
bWUvbWl4aW5zL3JlZ2lzdHJ5X3Byb3h5IiwiZGFnLW1hcCIsImVtYmVyLW1ldGFsL3Byb3BlcnR5
X2dldCIsImVtYmVyLW1ldGFsL3Byb3BlcnR5X3NldCIsImVtYmVyLW1ldGFsL2RlYnVnIiwiZW1i
ZXItbWV0YWwvdXRpbHMiLCJlbWJlci1tZXRhbC9lbXB0eV9vYmplY3QiLCJlbWJlci1hcHBsaWNh
dGlvbi9zeXN0ZW0vcmVzb2x2ZXIiLCJlbWJlci1hcHBsaWNhdGlvbi9zeXN0ZW0vZW5naW5lLWlu
c3RhbmNlIiwiZW1iZXItbWV0YWwvZmVhdHVyZXMiLCJlbWJlci1tZXRhbC9zeW1ib2wiXSxmdW5j
dGlvbihlLHQscixuLGksbyxhLHMsdSxsLGMsZixkLHApeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBo
KGUpe3ZhciB0PVtdO2Zvcih2YXIgciBpbiBlKXQucHVzaChyKTtyZXR1cm4gdH1mdW5jdGlvbiBt
KGUpe3ZhciB0PWUuZ2V0KCJSZXNvbHZlciIpfHxjLmRlZmF1bHQ7cmV0dXJuIHQuY3JlYXRlKHtu
YW1lc3BhY2U6ZX0pfWZ1bmN0aW9uIHYoZSx0KXtyZXR1cm4gZnVuY3Rpb24odCl7aWYodm9pZCAw
IT09dGhpcy5zdXBlcmNsYXNzW2VdJiZ0aGlzLnN1cGVyY2xhc3NbZV09PT10aGlzW2VdKXt2YXIg
cj17fTtyW2VdPU9iamVjdC5jcmVhdGUodGhpc1tlXSksdGhpcy5yZW9wZW5DbGFzcyhyKX10aGlz
W2VdW3QubmFtZV09dH19dmFyIGI9cC5kZWZhdWx0KCJHTElNTUVSIik7ZS5HTElNTUVSPWI7dmFy
IGc9dC5kZWZhdWx0LmV4dGVuZChuLmRlZmF1bHQse2luaXQ6ZnVuY3Rpb24oKXt0aGlzLl9zdXBl
ci5hcHBseSh0aGlzLGFyZ3VtZW50cyksdm9pZCAwPT09dGhpc1tiXSYmKHRoaXNbYl09ZC5kZWZh
dWx0KCJlbWJlci1nbGltbWVyIikpLHRoaXMuYnVpbGRSZWdpc3RyeSgpfSxidWlsZEluc3RhbmNl
OmZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aDw9MHx8dm9pZCAwPT09YXJndW1lbnRz
WzBdP3t9OmFyZ3VtZW50c1swXTtyZXR1cm4gZS5iYXNlPXRoaXMsZi5kZWZhdWx0LmNyZWF0ZShl
KX0sYnVpbGRSZWdpc3RyeTpmdW5jdGlvbigpe3ZhciBlLHQ9dGhpcy5fX3JlZ2lzdHJ5X189dGhp
cy5jb25zdHJ1Y3Rvci5idWlsZFJlZ2lzdHJ5KHRoaXMsKGU9e30sZVtiXT10aGlzW2JdLGUpKTty
ZXR1cm4gdH0saW5pdGlhbGl6ZXI6ZnVuY3Rpb24oZSl7dGhpcy5jb25zdHJ1Y3Rvci5pbml0aWFs
aXplcihlKX0saW5zdGFuY2VJbml0aWFsaXplcjpmdW5jdGlvbihlKXt0aGlzLmNvbnN0cnVjdG9y
Lmluc3RhbmNlSW5pdGlhbGl6ZXIoZSl9LHJ1bkluaXRpYWxpemVyczpmdW5jdGlvbigpe3ZhciBl
PXRoaXM7dGhpcy5fcnVuSW5pdGlhbGl6ZXIoImluaXRpYWxpemVycyIsZnVuY3Rpb24odCxyKXsy
PT09ci5pbml0aWFsaXplLmxlbmd0aD9yLmluaXRpYWxpemUoZS5fX3JlZ2lzdHJ5X18sZSk6ci5p
bml0aWFsaXplKGUpfSl9LHJ1bkluc3RhbmNlSW5pdGlhbGl6ZXJzOmZ1bmN0aW9uKGUpe3RoaXMu
X3J1bkluaXRpYWxpemVyKCJpbnN0YW5jZUluaXRpYWxpemVycyIsZnVuY3Rpb24odCxyKXtyLmlu
aXRpYWxpemUoZSl9KX0sX3J1bkluaXRpYWxpemVyOmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByLG49
by5nZXQodGhpcy5jb25zdHJ1Y3RvcixlKSxhPWgobikscz1uZXcgaS5kZWZhdWx0LHU9MDt1PGEu
bGVuZ3RoO3UrKylyPW5bYVt1XV0scy5hZGRFZGdlcyhyLm5hbWUscixyLmJlZm9yZSxyLmFmdGVy
KTtzLnRvcHNvcnQoZnVuY3Rpb24oZSl7dChlLm5hbWUsZS52YWx1ZSl9KX19KTtnLnJlb3BlbkNs
YXNzKHtpbml0aWFsaXplcnM6bmV3IGwuZGVmYXVsdCxpbnN0YW5jZUluaXRpYWxpemVyczpuZXcg
bC5kZWZhdWx0LGluaXRpYWxpemVyOnYoImluaXRpYWxpemVycyIsImluaXRpYWxpemVyIiksaW5z
dGFuY2VJbml0aWFsaXplcjp2KCJpbnN0YW5jZUluaXRpYWxpemVycyIsImluc3RhbmNlIGluaXRp
YWxpemVyIiksYnVpbGRSZWdpc3RyeTpmdW5jdGlvbihlKXt2YXIgdD1uZXcgci5kZWZhdWx0KHty
ZXNvbHZlcjptKGUpfSk7cmV0dXJuIHQuc2V0PWEuc2V0LHR9LHJlc29sdmVyOm51bGwsUmVzb2x2
ZXI6bnVsbH0pLGUuZGVmYXVsdD1nfSksZSgiZW1iZXItYXBwbGljYXRpb24vc3lzdGVtL3Jlc29s
dmVyIixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9kZWJ1ZyIsImVtYmVyLW1ldGFsL3Byb3BlcnR5
X2dldCIsImVtYmVyLXJ1bnRpbWUvc3lzdGVtL3N0cmluZyIsImVtYmVyLXJ1bnRpbWUvc3lzdGVt
L29iamVjdCIsImVtYmVyLXJ1bnRpbWUvc3lzdGVtL25hbWVzcGFjZSIsImVtYmVyLWh0bWxiYXJz
L2hlbHBlcnMiLCJlbWJlci1hcHBsaWNhdGlvbi91dGlscy92YWxpZGF0ZS10eXBlIiwiZW1iZXIt
bWV0YWwvZGljdGlvbmFyeSIsImVtYmVyLWh0bWxiYXJzL3RlbXBsYXRlX3JlZ2lzdHJ5Il0sZnVu
Y3Rpb24oZSx0LHIsbixpLG8sYSxzLHUsbCl7InVzZSBzdHJpY3QiO3ZhciBjPWkuZGVmYXVsdC5l
eHRlbmQoe25hbWVzcGFjZTpudWxsLG5vcm1hbGl6ZTpudWxsLHJlc29sdmU6bnVsbCxwYXJzZU5h
bWU6bnVsbCxsb29rdXBEZXNjcmlwdGlvbjpudWxsLG1ha2VUb1N0cmluZzpudWxsLHJlc29sdmVP
dGhlcjpudWxsLF9sb2dMb29rdXA6bnVsbH0pO2UuUmVzb2x2ZXI9YyxlLmRlZmF1bHQ9aS5kZWZh
dWx0LmV4dGVuZCh7bmFtZXNwYWNlOm51bGwsaW5pdDpmdW5jdGlvbigpe3RoaXMuX3BhcnNlTmFt
ZUNhY2hlPXUuZGVmYXVsdChudWxsKX0sbm9ybWFsaXplOmZ1bmN0aW9uKGUpe3ZhciB0PWUuc3Bs
aXQoIjoiLDIpLHI9dFswXSxuPXRbMV07aWYoInRlbXBsYXRlIiE9PXIpe3ZhciBpPW47cmV0dXJu
IGkuaW5kZXhPZigiLiIpPi0xJiYoaT1pLnJlcGxhY2UoL1wuKC4pL2csZnVuY3Rpb24oZSl7cmV0
dXJuIGUuY2hhckF0KDEpLnRvVXBwZXJDYXNlKCl9KSksbi5pbmRleE9mKCJfIik+LTEmJihpPWku
cmVwbGFjZSgvXyguKS9nLGZ1bmN0aW9uKGUpe3JldHVybiBlLmNoYXJBdCgxKS50b1VwcGVyQ2Fz
ZSgpfSkpLG4uaW5kZXhPZigiLSIpPi0xJiYoaT1pLnJlcGxhY2UoLy0oLikvZyxmdW5jdGlvbihl
KXtyZXR1cm4gZS5jaGFyQXQoMSkudG9VcHBlckNhc2UoKX0pKSxyKyI6IitpfXJldHVybiBlfSxy
ZXNvbHZlOmZ1bmN0aW9uKGUpe3ZhciB0LHI9dGhpcy5wYXJzZU5hbWUoZSksbj1yLnJlc29sdmVN
ZXRob2ROYW1lO3JldHVybiB0aGlzW25dJiYodD10aGlzW25dKHIpKSx0PXR8fHRoaXMucmVzb2x2
ZU90aGVyKHIpLHIucm9vdCYmci5yb290LkxPR19SRVNPTFZFUiYmdGhpcy5fbG9nTG9va3VwKHQs
ciksdCYmcy5kZWZhdWx0KHQsciksdH0scGFyc2VOYW1lOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlz
Ll9wYXJzZU5hbWVDYWNoZVtlXXx8KHRoaXMuX3BhcnNlTmFtZUNhY2hlW2VdPXRoaXMuX3BhcnNl
TmFtZShlKSl9LF9wYXJzZU5hbWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5zcGxpdCgiOiIpLGk9dFsw
XSxhPXRbMV0scz1hLHU9ci5nZXQodGhpcywibmFtZXNwYWNlIiksbD11LGM9cy5sYXN0SW5kZXhP
ZigiLyIpLGY9YyE9PS0xP3Muc2xpY2UoMCxjKTpudWxsO2lmKCJ0ZW1wbGF0ZSIhPT1pJiZjIT09
LTEpe3ZhciBkPXMuc3BsaXQoIi8iKTtzPWRbZC5sZW5ndGgtMV07dmFyIHA9bi5jYXBpdGFsaXpl
KGQuc2xpY2UoMCwtMSkuam9pbigiLiIpKTtsPW8uZGVmYXVsdC5ieU5hbWUocCl9dmFyIGg9Im1h
aW4iPT09YT8iTWFpbiI6bi5jbGFzc2lmeShpKTtpZighc3x8IWkpdGhyb3cgbmV3IFR5cGVFcnJv
cigiSW52YWxpZCBmdWxsTmFtZTogYCIrZSsiYCwgbXVzdCBiZSBvZiB0aGUgZm9ybSBgdHlwZTpu
YW1lYCAiKTtyZXR1cm57ZnVsbE5hbWU6ZSx0eXBlOmksZnVsbE5hbWVXaXRob3V0VHlwZTphLGRp
cm5hbWU6ZixuYW1lOnMscm9vdDpsLHJlc29sdmVNZXRob2ROYW1lOiJyZXNvbHZlIitofX0sbG9v
a3VwRGVzY3JpcHRpb246ZnVuY3Rpb24oZSl7dmFyIHQscj10aGlzLnBhcnNlTmFtZShlKTtyZXR1
cm4idGVtcGxhdGUiPT09ci50eXBlPyJ0ZW1wbGF0ZSBhdCAiK3IuZnVsbE5hbWVXaXRob3V0VHlw
ZS5yZXBsYWNlKC9cLi9nLCIvIik6KHQ9ci5yb290KyIuIituLmNsYXNzaWZ5KHIubmFtZSkucmVw
bGFjZSgvXC4vZywiIiksIm1vZGVsIiE9PXIudHlwZSYmKHQrPW4uY2xhc3NpZnkoci50eXBlKSks
dCl9LG1ha2VUb1N0cmluZzpmdW5jdGlvbihlLHQpe3JldHVybiBlLnRvU3RyaW5nKCl9LHVzZVJv
dXRlck5hbWluZzpmdW5jdGlvbihlKXtlLm5hbWU9ZS5uYW1lLnJlcGxhY2UoL1wuL2csIl8iKSwi
YmFzaWMiPT09ZS5uYW1lJiYoZS5uYW1lPSIiKX0scmVzb2x2ZVRlbXBsYXRlOmZ1bmN0aW9uKGUp
e3ZhciB0PWUuZnVsbE5hbWVXaXRob3V0VHlwZS5yZXBsYWNlKC9cLi9nLCIvIik7cmV0dXJuIGwu
Z2V0KHQpfHxsLmdldChuLmRlY2FtZWxpemUodCkpfSxyZXNvbHZlVmlldzpmdW5jdGlvbihlKXty
ZXR1cm4gdGhpcy51c2VSb3V0ZXJOYW1pbmcoZSksdGhpcy5yZXNvbHZlT3RoZXIoZSl9LHJlc29s
dmVDb250cm9sbGVyOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnVzZVJvdXRlck5hbWluZyhlKSx0
aGlzLnJlc29sdmVPdGhlcihlKX0scmVzb2x2ZVJvdXRlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlz
LnVzZVJvdXRlck5hbWluZyhlKSx0aGlzLnJlc29sdmVPdGhlcihlKX0scmVzb2x2ZU1vZGVsOmZ1
bmN0aW9uKGUpe3ZhciB0PW4uY2xhc3NpZnkoZS5uYW1lKSxpPXIuZ2V0KGUucm9vdCx0KTtpZihp
KXJldHVybiBpfSxyZXNvbHZlSGVscGVyOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnJlc29sdmVP
dGhlcihlKXx8YS5kZWZhdWx0W2UuZnVsbE5hbWVXaXRob3V0VHlwZV19LHJlc29sdmVPdGhlcjpm
dW5jdGlvbihlKXt2YXIgdD1uLmNsYXNzaWZ5KGUubmFtZSkrbi5jbGFzc2lmeShlLnR5cGUpLGk9
ci5nZXQoZS5yb290LHQpO2lmKGkpcmV0dXJuIGl9LHJlc29sdmVNYWluOmZ1bmN0aW9uKGUpe3Zh
ciB0PW4uY2xhc3NpZnkoZS50eXBlKTtyZXR1cm4gci5nZXQoZS5yb290LHQpfSxfbG9nTG9va3Vw
OmZ1bmN0aW9uKGUsdCl7dmFyIHIsbjtyPWU/IlvinJNdIjoiWyBdIixuPXQuZnVsbE5hbWUubGVu
Z3RoPjYwPyIuIjpuZXcgQXJyYXkoNjAtdC5mdWxsTmFtZS5sZW5ndGgpLmpvaW4oIi4iKX0sa25v
d25Gb3JUeXBlOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1yLmdldCh0aGlzLCJuYW1lc3BhY2UiKSxp
PW4uY2xhc3NpZnkoZSksbz1uZXcgUmVnRXhwKGkrIiQiKSxhPXUuZGVmYXVsdChudWxsKSxzPU9i
amVjdC5rZXlzKHQpLGw9MCxjPXMubGVuZ3RoO2w8YztsKyspe3ZhciBmPXNbbF07aWYoby50ZXN0
KGYpKXt2YXIgZD10aGlzLnRyYW5zbGF0ZVRvQ29udGFpbmVyRnVsbG5hbWUoZSxmKTthW2RdPSEw
fX1yZXR1cm4gYX0sdHJhbnNsYXRlVG9Db250YWluZXJGdWxsbmFtZTpmdW5jdGlvbihlLHQpe3Zh
ciByPW4uY2xhc3NpZnkoZSksaT10LnNsaWNlKDAsci5sZW5ndGgqLTEpLG89bi5kYXNoZXJpemUo
aSk7cmV0dXJuIGUrIjoiK299fSl9KSxlKCJlbWJlci1hcHBsaWNhdGlvbi91dGlscy92YWxpZGF0
ZS10eXBlIixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9kZWJ1ZyJdLGZ1bmN0aW9uKGUsdCl7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXt2YXIgcj1uW3QudHlwZV07aWYocil7clswXSxyWzFd
LHJbMl19fWUuZGVmYXVsdD1yO3ZhciBuPXtyb3V0ZTpbImFzc2VydCIsImlzUm91dGVGYWN0b3J5
IiwiRW1iZXIuUm91dGUiXSxjb21wb25lbnQ6WyJkZXByZWNhdGUiLCJpc0NvbXBvbmVudEZhY3Rv
cnkiLCJFbWJlci5Db21wb25lbnQiXSx2aWV3OlsiZGVwcmVjYXRlIiwiaXNWaWV3RmFjdG9yeSIs
IkVtYmVyLlZpZXciXSxzZXJ2aWNlOlsiZGVwcmVjYXRlIiwiaXNTZXJ2aWNlRmFjdG9yeSIsIkVt
YmVyLlNlcnZpY2UiXX19KSxlKCJlbWJlci1leHRlbnNpb24tc3VwcG9ydC9jb250YWluZXJfZGVi
dWdfYWRhcHRlciIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvY29yZSIsImVtYmVyLXJ1bnRpbWUv
c3lzdGVtL25hdGl2ZV9hcnJheSIsImVtYmVyLXJ1bnRpbWUvdXRpbHMiLCJlbWJlci1ydW50aW1l
L3N5c3RlbS9zdHJpbmciLCJlbWJlci1ydW50aW1lL3N5c3RlbS9uYW1lc3BhY2UiLCJlbWJlci1y
dW50aW1lL3N5c3RlbS9vYmplY3QiXSxmdW5jdGlvbihlLHQscixuLGksbyxhKXsidXNlIHN0cmlj
dCI7ZS5kZWZhdWx0PWEuZGVmYXVsdC5leHRlbmQoe3Jlc29sdmVyOm51bGwsY2FuQ2F0YWxvZ0Vu
dHJpZXNCeVR5cGU6ZnVuY3Rpb24oZSl7cmV0dXJuIm1vZGVsIiE9PWUmJiJ0ZW1wbGF0ZSIhPT1l
fSxjYXRhbG9nRW50cmllc0J5VHlwZTpmdW5jdGlvbihlKXt2YXIgYT1yLkEoby5kZWZhdWx0Lk5B
TUVTUEFDRVMpLHM9ci5BKCksdT1uZXcgUmVnRXhwKGkuY2xhc3NpZnkoZSkrIiQiKTtyZXR1cm4g
YS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2lmKGUhPT10LmRlZmF1bHQpZm9yKHZhciByIGluIGUpaWYo
ZS5oYXNPd25Qcm9wZXJ0eShyKSYmdS50ZXN0KHIpKXt2YXIgbz1lW3JdOyJjbGFzcyI9PT1uLnR5
cGVPZihvKSYmcy5wdXNoKGkuZGFzaGVyaXplKHIucmVwbGFjZSh1LCIiKSkpfX0pLHN9fSl9KSxl
KCJlbWJlci1leHRlbnNpb24tc3VwcG9ydC9kYXRhX2FkYXB0ZXIiLFsiZXhwb3J0cyIsImVtYmVy
LW1ldGFsL3Byb3BlcnR5X2dldCIsImVtYmVyLW1ldGFsL3J1bl9sb29wIiwiZW1iZXItcnVudGlt
ZS9zeXN0ZW0vc3RyaW5nIiwiZW1iZXItcnVudGltZS9zeXN0ZW0vbmFtZXNwYWNlIiwiZW1iZXIt
cnVudGltZS9zeXN0ZW0vb2JqZWN0IiwiZW1iZXItcnVudGltZS9zeXN0ZW0vbmF0aXZlX2FycmF5
IiwiZW1iZXItYXBwbGljYXRpb24vc3lzdGVtL2FwcGxpY2F0aW9uIiwiY29udGFpbmVyL293bmVy
IiwiZW1iZXItcnVudGltZS9taXhpbnMvYXJyYXkiXSxmdW5jdGlvbihlLHQscixuLGksbyxhLHMs
dSxsKXsidXNlIHN0cmljdCI7ZS5kZWZhdWx0PW8uZGVmYXVsdC5leHRlbmQoe2luaXQ6ZnVuY3Rp
b24oKXt0aGlzLl9zdXBlci5hcHBseSh0aGlzLGFyZ3VtZW50cyksdGhpcy5yZWxlYXNlTWV0aG9k
cz1hLkEoKX0sY29udGFpbmVyRGVidWdBZGFwdGVyOnZvaWQgMCxhdHRyaWJ1dGVMaW1pdDozLGFj
Y2VwdHNNb2RlbE5hbWU6ITAscmVsZWFzZU1ldGhvZHM6YS5BKCksZ2V0RmlsdGVyczpmdW5jdGlv
bigpe3JldHVybiBhLkEoKX0sd2F0Y2hNb2RlbFR5cGVzOmZ1bmN0aW9uKGUsdCl7dmFyIHIsbj10
aGlzLGk9dGhpcy5nZXRNb2RlbFR5cGVzKCksbz1hLkEoKTtyPWkubWFwKGZ1bmN0aW9uKGUpe3Zh
ciByPWUua2xhc3MsaT1uLndyYXBNb2RlbFR5cGUocixlLm5hbWUpO3JldHVybiBvLnB1c2gobi5v
YnNlcnZlTW9kZWxUeXBlKGUubmFtZSx0KSksaX0pLGUocik7dmFyIHM9ZnVuY3Rpb24oKXtvLmZv
ckVhY2goZnVuY3Rpb24oZSl7cmV0dXJuIGUoKX0pLG4ucmVsZWFzZU1ldGhvZHMucmVtb3ZlT2Jq
ZWN0KHMpfTtyZXR1cm4gdGhpcy5yZWxlYXNlTWV0aG9kcy5wdXNoT2JqZWN0KHMpLHN9LF9uYW1l
VG9DbGFzczpmdW5jdGlvbihlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGUmJihlPXUuZ2V0T3du
ZXIodGhpcykuX2xvb2t1cEZhY3RvcnkoIm1vZGVsOiIrZSkpLGV9LHdhdGNoUmVjb3JkczpmdW5j
dGlvbihlLHQscixuKXt2YXIgaSxvPXRoaXMscz1hLkEoKSx1PXRoaXMuX25hbWVUb0NsYXNzKGUp
LGM9dGhpcy5nZXRSZWNvcmRzKHUsZSksZj1mdW5jdGlvbihlKXtyKFtlXSl9LGQ9Yy5tYXAoZnVu
Y3Rpb24oZSl7cmV0dXJuIHMucHVzaChvLm9ic2VydmVSZWNvcmQoZSxmKSksby53cmFwUmVjb3Jk
KGUpfSkscD1mdW5jdGlvbihlLHIsaSxhKXtmb3IodmFyIHU9cjt1PHIrYTt1Kyspe3ZhciBjPWwu
b2JqZWN0QXQoZSx1KSxkPW8ud3JhcFJlY29yZChjKTtzLnB1c2goby5vYnNlcnZlUmVjb3JkKGMs
ZikpLHQoW2RdKX1pJiZuKHIsaSl9LGg9e2RpZENoYW5nZTpwLHdpbGxDaGFuZ2U6ZnVuY3Rpb24o
KXtyZXR1cm4gdGhpc319O3JldHVybiBsLmFkZEFycmF5T2JzZXJ2ZXIoYyx0aGlzLGgpLGk9ZnVu
Y3Rpb24oKXtzLmZvckVhY2goZnVuY3Rpb24oZSl7ZSgpfSksbC5yZW1vdmVBcnJheU9ic2VydmVy
KGMsbyxoKSxvLnJlbGVhc2VNZXRob2RzLnJlbW92ZU9iamVjdChpKX0sdChkKSx0aGlzLnJlbGVh
c2VNZXRob2RzLnB1c2hPYmplY3QoaSksaX0sd2lsbERlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLl9z
dXBlci5hcHBseSh0aGlzLGFyZ3VtZW50cyksdGhpcy5yZWxlYXNlTWV0aG9kcy5mb3JFYWNoKGZ1
bmN0aW9uKGUpe2UoKX0pfSxkZXRlY3Q6ZnVuY3Rpb24oZSl7cmV0dXJuITF9LGNvbHVtbnNGb3JU
eXBlOmZ1bmN0aW9uKGUpe3JldHVybiBhLkEoKX0sb2JzZXJ2ZU1vZGVsVHlwZTpmdW5jdGlvbihl
LHQpe3ZhciBuPXRoaXMsaT10aGlzLl9uYW1lVG9DbGFzcyhlKSxvPXRoaXMuZ2V0UmVjb3Jkcyhp
LGUpLGE9ZnVuY3Rpb24oKXt0KFtuLndyYXBNb2RlbFR5cGUoaSxlKV0pfSxzPXtkaWRDaGFuZ2U6
ZnVuY3Rpb24oKXtyLmRlZmF1bHQuc2NoZWR1bGVPbmNlKCJhY3Rpb25zIix0aGlzLGEpfSx3aWxs
Q2hhbmdlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9fTtsLmFkZEFycmF5T2JzZXJ2ZXIobyx0aGlz
LHMpO3ZhciB1PWZ1bmN0aW9uKCl7bC5yZW1vdmVBcnJheU9ic2VydmVyKG8sbixzKX07cmV0dXJu
IHV9LHdyYXBNb2RlbFR5cGU6ZnVuY3Rpb24oZSxyKXt2YXIgbixpPXRoaXMuZ2V0UmVjb3Jkcyhl
LHIpO3JldHVybiBuPXtuYW1lOnIsY291bnQ6dC5nZXQoaSwibGVuZ3RoIiksY29sdW1uczp0aGlz
LmNvbHVtbnNGb3JUeXBlKGUpLG9iamVjdDplfX0sZ2V0TW9kZWxUeXBlczpmdW5jdGlvbigpe3Zh
ciBlLHQ9dGhpcyxyPXRoaXMuZ2V0KCJjb250YWluZXJEZWJ1Z0FkYXB0ZXIiKTtyZXR1cm4gZT1y
LmNhbkNhdGFsb2dFbnRyaWVzQnlUeXBlKCJtb2RlbCIpP3IuY2F0YWxvZ0VudHJpZXNCeVR5cGUo
Im1vZGVsIik6dGhpcy5fZ2V0T2JqZWN0c09uTmFtZXNwYWNlcygpLGU9YS5BKGUpLm1hcChmdW5j
dGlvbihlKXtyZXR1cm57a2xhc3M6dC5fbmFtZVRvQ2xhc3MoZSksbmFtZTplfX0pLGU9YS5BKGUp
LmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gdC5kZXRlY3QoZS5rbGFzcyl9KSxhLkEoZSl9LF9n
ZXRPYmplY3RzT25OYW1lc3BhY2VzOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PWEuQShpLmRlZmF1
bHQuTkFNRVNQQUNFUykscj1hLkEoKTtyZXR1cm4gdC5mb3JFYWNoKGZ1bmN0aW9uKHQpe2Zvcih2
YXIgaSBpbiB0KWlmKHQuaGFzT3duUHJvcGVydHkoaSkmJmUuZGV0ZWN0KHRbaV0pKXt2YXIgbz1u
LmRhc2hlcml6ZShpKTt0IGluc3RhbmNlb2Ygcy5kZWZhdWx0fHwhdC50b1N0cmluZygpfHwobz10
KyIvIitvKSxyLnB1c2gobyl9fSkscn0sZ2V0UmVjb3JkczpmdW5jdGlvbihlKXtyZXR1cm4gYS5B
KCl9LHdyYXBSZWNvcmQ6ZnVuY3Rpb24oZSl7dmFyIHQ9e29iamVjdDplfTtyZXR1cm4gdC5jb2x1
bW5WYWx1ZXM9dGhpcy5nZXRSZWNvcmRDb2x1bW5WYWx1ZXMoZSksdC5zZWFyY2hLZXl3b3Jkcz10
aGlzLmdldFJlY29yZEtleXdvcmRzKGUpLHQuZmlsdGVyVmFsdWVzPXRoaXMuZ2V0UmVjb3JkRmls
dGVyVmFsdWVzKGUpLHQuY29sb3I9dGhpcy5nZXRSZWNvcmRDb2xvcihlKSx0fSxnZXRSZWNvcmRD
b2x1bW5WYWx1ZXM6ZnVuY3Rpb24oZSl7cmV0dXJue319LGdldFJlY29yZEtleXdvcmRzOmZ1bmN0
aW9uKGUpe3JldHVybiBhLkEoKX0sZ2V0UmVjb3JkRmlsdGVyVmFsdWVzOmZ1bmN0aW9uKGUpe3Jl
dHVybnt9fSxnZXRSZWNvcmRDb2xvcjpmdW5jdGlvbihlKXtyZXR1cm4gbnVsbH0sb2JzZXJ2ZVJl
Y29yZDpmdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbigpe319fSl9KSxlKCJlbWJlci1leHRl
bnNpb24tc3VwcG9ydC9pbmRleCIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvY29yZSIsImVtYmVy
LWV4dGVuc2lvbi1zdXBwb3J0L2RhdGFfYWRhcHRlciIsImVtYmVyLWV4dGVuc2lvbi1zdXBwb3J0
L2NvbnRhaW5lcl9kZWJ1Z19hZGFwdGVyIl0sZnVuY3Rpb24oZSx0LHIsbil7InVzZSBzdHJpY3Qi
O3QuZGVmYXVsdC5EYXRhQWRhcHRlcj1yLmRlZmF1bHQsdC5kZWZhdWx0LkNvbnRhaW5lckRlYnVn
QWRhcHRlcj1uLmRlZmF1bHR9KSxlKCJlbWJlci1odG1sYmFycy9jb21wYXQiLFsiZXhwb3J0cyIs
ImVtYmVyLW1ldGFsL2NvcmUiLCJlbWJlci1odG1sYmFycy91dGlscy9zdHJpbmciXSxmdW5jdGlv
bihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXQuZGVmYXVsdC5IYW5kbGViYXJzPXQuZGVmYXVs
dC5IYW5kbGViYXJzfHx7fTtuLlNhZmVTdHJpbmc9ci5TYWZlU3RyaW5nLG4uVXRpbHM9e2VzY2Fw
ZUV4cHJlc3Npb246ci5lc2NhcGVFeHByZXNzaW9ufSxlLmRlZmF1bHQ9bn0pLGUoImVtYmVyLWh0
bWxiYXJzL2VudiIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwiLCJlbWJlci1tZXRhbC9lbnZpcm9u
bWVudCIsImh0bWxiYXJzLXJ1bnRpbWUiLCJlbWJlci1tZXRhbC9hc3NpZ24iLCJlbWJlci1odG1s
YmFycy9ob29rcy9zdWJleHByIiwiZW1iZXItaHRtbGJhcnMvaG9va3MvY29uY2F0IiwiZW1iZXIt
aHRtbGJhcnMvaG9va3MvbGluay1yZW5kZXItbm9kZSIsImVtYmVyLWh0bWxiYXJzL2hvb2tzL2Ny
ZWF0ZS1mcmVzaC1zY29wZSIsImVtYmVyLWh0bWxiYXJzL2hvb2tzL2JpbmQtc2hhZG93LXNjb3Bl
IiwiZW1iZXItaHRtbGJhcnMvaG9va3MvYmluZC1zZWxmIiwiZW1iZXItaHRtbGJhcnMvaG9va3Mv
YmluZC1zY29wZSIsImVtYmVyLWh0bWxiYXJzL2hvb2tzL2JpbmQtbG9jYWwiLCJlbWJlci1odG1s
YmFycy9ob29rcy9iaW5kLWJsb2NrIiwiZW1iZXItaHRtbGJhcnMvaG9va3MvdXBkYXRlLXNlbGYi
LCJlbWJlci1odG1sYmFycy9ob29rcy9nZXQtcm9vdCIsImVtYmVyLWh0bWxiYXJzL2hvb2tzL2dl
dC1jaGlsZCIsImVtYmVyLWh0bWxiYXJzL2hvb2tzL2dldC1ibG9jayIsImVtYmVyLWh0bWxiYXJz
L2hvb2tzL2dldC12YWx1ZSIsImVtYmVyLWh0bWxiYXJzL2hvb2tzL2dldC1jZWxsLW9yLXZhbHVl
IiwiZW1iZXItaHRtbGJhcnMvaG9va3MvY2xlYW51cC1yZW5kZXItbm9kZSIsImVtYmVyLWh0bWxi
YXJzL2hvb2tzL2Rlc3Ryb3ktcmVuZGVyLW5vZGUiLCJlbWJlci1odG1sYmFycy9ob29rcy9kaWQt
cmVuZGVyLW5vZGUiLCJlbWJlci1odG1sYmFycy9ob29rcy93aWxsLWNsZWFudXAtdHJlZSIsImVt
YmVyLWh0bWxiYXJzL2hvb2tzL2RpZC1jbGVhbnVwLXRyZWUiLCJlbWJlci1odG1sYmFycy9ob29r
cy9jbGFzc2lmeSIsImVtYmVyLWh0bWxiYXJzL2hvb2tzL2NvbXBvbmVudCIsImVtYmVyLWh0bWxi
YXJzL2hvb2tzL2xvb2t1cC1oZWxwZXIiLCJlbWJlci1odG1sYmFycy9ob29rcy9oYXMtaGVscGVy
IiwiZW1iZXItaHRtbGJhcnMvaG9va3MvaW52b2tlLWhlbHBlciIsImVtYmVyLWh0bWxiYXJzL2hv
b2tzL2VsZW1lbnQiLCJlbWJlci1odG1sYmFycy9oZWxwZXJzIiwiZW1iZXItaHRtbGJhcnMva2V5
d29yZHMiLCJlbWJlci1odG1sYmFycy9zeXN0ZW0vZG9tLWhlbHBlciIsImVtYmVyLWh0bWxiYXJz
L2tleXdvcmRzL2RlYnVnZ2VyIiwiZW1iZXItaHRtbGJhcnMva2V5d29yZHMvd2l0aCIsImVtYmVy
LWh0bWxiYXJzL2tleXdvcmRzL291dGxldCIsImVtYmVyLWh0bWxiYXJzL2tleXdvcmRzL3VuYm91
bmQiLCJlbWJlci1odG1sYmFycy9rZXl3b3Jkcy92aWV3IiwiZW1iZXItaHRtbGJhcnMva2V5d29y
ZHMvY29tcG9uZW50IiwiZW1iZXItaHRtbGJhcnMva2V5d29yZHMvZWxlbWVudC1jb21wb25lbnQi
LCJlbWJlci1odG1sYmFycy9rZXl3b3Jkcy9wYXJ0aWFsIiwiZW1iZXItaHRtbGJhcnMva2V5d29y
ZHMvaW5wdXQiLCJlbWJlci1odG1sYmFycy9rZXl3b3Jkcy90ZXh0YXJlYSIsImVtYmVyLWh0bWxi
YXJzL2tleXdvcmRzL3lpZWxkIiwiZW1iZXItaHRtbGJhcnMva2V5d29yZHMvbXV0IiwiZW1iZXIt
aHRtbGJhcnMva2V5d29yZHMvcmVhZG9ubHkiLCJlbWJlci1odG1sYmFycy9rZXl3b3Jkcy9nZXQi
XSxmdW5jdGlvbihlLHQscixuLGksbyxhLHMsdSxsLGMsZixkLHAsaCxtLHYsYixnLHksXyx3LHgs
ayxDLEUsTyxULE4sUyxBLFAsaixSLEwsRCxNLEksRixILFYscSx6LEIsVSxXLCQsSyl7InVzZSBz
dHJpY3QiO3ZhciBRPWkuZGVmYXVsdCh7fSxuLmhvb2tzKTtRLmtleXdvcmRzPWouZGVmYXVsdCxp
LmRlZmF1bHQoUSx7bGlua1JlbmRlck5vZGU6cy5kZWZhdWx0LGNyZWF0ZUZyZXNoU2NvcGU6dS5k
ZWZhdWx0LGNyZWF0ZUNoaWxkU2NvcGU6dS5jcmVhdGVDaGlsZFNjb3BlLGJpbmRTaGFkb3dTY29w
ZTpsLmRlZmF1bHQsYmluZFNlbGY6Yy5kZWZhdWx0LGJpbmRTY29wZTpmLmRlZmF1bHQsYmluZExv
Y2FsOmQuZGVmYXVsdCxiaW5kQmxvY2s6cC5kZWZhdWx0LHVwZGF0ZVNlbGY6aC5kZWZhdWx0LGdl
dEJsb2NrOmIuZGVmYXVsdCxnZXRSb290Om0uZGVmYXVsdCxnZXRDaGlsZDp2LmRlZmF1bHQsZ2V0
VmFsdWU6Zy5kZWZhdWx0LGdldENlbGxPclZhbHVlOnkuZGVmYXVsdCxzdWJleHByOm8uZGVmYXVs
dCxjb25jYXQ6YS5kZWZhdWx0LGNsZWFudXBSZW5kZXJOb2RlOl8uZGVmYXVsdCxkZXN0cm95UmVu
ZGVyTm9kZTp3LmRlZmF1bHQsd2lsbENsZWFudXBUcmVlOmsuZGVmYXVsdCxkaWRDbGVhbnVwVHJl
ZTpDLmRlZmF1bHQsZGlkUmVuZGVyTm9kZTp4LmRlZmF1bHQsY2xhc3NpZnk6RS5kZWZhdWx0LGNv
bXBvbmVudDpPLmRlZmF1bHQsbG9va3VwSGVscGVyOlQuZGVmYXVsdCxoYXNIZWxwZXI6Ti5kZWZh
dWx0LGludm9rZUhlbHBlcjpTLmRlZmF1bHQsZWxlbWVudDpBLmRlZmF1bHR9KSxqLnJlZ2lzdGVy
S2V5d29yZCgiZGVidWdnZXIiLEwuZGVmYXVsdCksai5yZWdpc3RlcktleXdvcmQoIndpdGgiLEQu
ZGVmYXVsdCksai5yZWdpc3RlcktleXdvcmQoIm91dGxldCIsTS5kZWZhdWx0KSxqLnJlZ2lzdGVy
S2V5d29yZCgidW5ib3VuZCIsSS5kZWZhdWx0KSxqLnJlZ2lzdGVyS2V5d29yZCgiY29tcG9uZW50
IixILmRlZmF1bHQpLGoucmVnaXN0ZXJLZXl3b3JkKCJAZWxlbWVudF9jb21wb25lbnQiLFYuZGVm
YXVsdCksai5yZWdpc3RlcktleXdvcmQoInBhcnRpYWwiLHEuZGVmYXVsdCksai5yZWdpc3Rlcktl
eXdvcmQoImlucHV0Iix6LmRlZmF1bHQpLGoucmVnaXN0ZXJLZXl3b3JkKCJ0ZXh0YXJlYSIsQi5k
ZWZhdWx0KSxqLnJlZ2lzdGVyS2V5d29yZCgieWllbGQiLFUuZGVmYXVsdCksai5yZWdpc3Rlcktl
eXdvcmQoIm11dCIsVy5kZWZhdWx0KSxqLnJlZ2lzdGVyS2V5d29yZCgiQG11dCIsVy5wcml2YXRl
TXV0KSxqLnJlZ2lzdGVyS2V5d29yZCgicmVhZG9ubHkiLCQuZGVmYXVsdCksai5yZWdpc3Rlcktl
eXdvcmQoImdldCIsSy5kZWZhdWx0KSx0LmRlZmF1bHQuRU5WLl9FTkFCTEVfTEVHQUNZX1ZJRVdf
U1VQUE9SVCYmai5yZWdpc3RlcktleXdvcmQoInZpZXciLEYuZGVmYXVsdCksZS5kZWZhdWx0PXto
b29rczpRLGhlbHBlcnM6UC5kZWZhdWx0LHVzZUZyYWdtZW50Q2FjaGU6ITB9O3ZhciBHPXIuZGVm
YXVsdC5oYXNET00/bmV3IFIuZGVmYXVsdDpudWxsO2UuZG9tSGVscGVyPUd9KSxlKCJlbWJlci1o
dG1sYmFycy9nbGltbWVyLWNvbXBvbmVudCIsWyJleHBvcnRzIiwiZW1iZXItdmlld3Mvdmlld3Mv
Y29yZV92aWV3IiwiZW1iZXItdmlld3MvbWl4aW5zL3ZpZXdfY2hpbGRfdmlld3Nfc3VwcG9ydCIs
ImVtYmVyLXZpZXdzL21peGlucy92aWV3X3N0YXRlX3N1cHBvcnQiLCJlbWJlci12aWV3cy9taXhp
bnMvdGVtcGxhdGVfcmVuZGVyaW5nX3N1cHBvcnQiLCJlbWJlci12aWV3cy9taXhpbnMvY2xhc3Nf
bmFtZXNfc3VwcG9ydCIsImVtYmVyLXZpZXdzL21peGlucy9pbnN0cnVtZW50YXRpb25fc3VwcG9y
dCIsImVtYmVyLXZpZXdzL21peGlucy9hcmlhX3JvbGVfc3VwcG9ydCIsImVtYmVyLXZpZXdzL21p
eGlucy92aWV3X3N1cHBvcnQiLCJlbWJlci12aWV3cy92aWV3cy92aWV3Il0sZnVuY3Rpb24oZSx0
LHIsbixpLG8sYSxzLHUsbCl7InVzZSBzdHJpY3QiO2UuZGVmYXVsdD10LmRlZmF1bHQuZXh0ZW5k
KHIuZGVmYXVsdCxuLmRlZmF1bHQsaS5kZWZhdWx0LG8uZGVmYXVsdCxhLmRlZmF1bHQscy5kZWZh
dWx0LHUuZGVmYXVsdCx7aXNDb21wb25lbnQ6ITAsaXNHbGltbWVyQ29tcG9uZW50OiEwLGluaXQ6
ZnVuY3Rpb24oKXt0aGlzLl9zdXBlci5hcHBseSh0aGlzLGFyZ3VtZW50cyksdGhpcy5fdmlld1Jl
Z2lzdHJ5PXRoaXMuX3ZpZXdSZWdpc3RyeXx8bC5kZWZhdWx0LnZpZXdzfX0pfSksZSgiZW1iZXIt
aHRtbGJhcnMvaGVscGVyIixbImV4cG9ydHMiLCJlbWJlci1ydW50aW1lL3N5c3RlbS9vYmplY3Qi
XSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybntpc0hlbHBl
ckluc3RhbmNlOiEwLGNvbXB1dGU6ZX19ZS5oZWxwZXI9cjt2YXIgbj10LmRlZmF1bHQuZXh0ZW5k
KHtpc0hlbHBlckluc3RhbmNlOiEwLHJlY29tcHV0ZTpmdW5jdGlvbigpe3RoaXMuX3N0cmVhbS5u
b3RpZnkoKX19KTtuLnJlb3BlbkNsYXNzKHtpc0hlbHBlckZhY3Rvcnk6ITB9KSxlLmRlZmF1bHQ9
bn0pLGUoImVtYmVyLWh0bWxiYXJzL2hlbHBlcnMiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL2Vt
cHR5X29iamVjdCJdLGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXtu
W2VdPXR9ZS5yZWdpc3RlckhlbHBlcj1yO3ZhciBuPW5ldyB0LmRlZmF1bHQ7ZS5kZWZhdWx0PW59
KSxlKCJlbWJlci1odG1sYmFycy9oZWxwZXJzLy1odG1sLXNhZmUiLFsiZXhwb3J0cyIsImh0bWxi
YXJzLXV0aWwvc2FmZS1zdHJpbmciXSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biByKGUpe3ZhciByPWVbMF07cmV0dXJuIG5ldyB0LmRlZmF1bHQocil9ZS5kZWZhdWx0PXJ9KSxl
KCJlbWJlci1odG1sYmFycy9oZWxwZXJzLy1qb2luLWNsYXNzZXMiLFsiZXhwb3J0cyJdLGZ1bmN0
aW9uKGUpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB0KGUpe2Zvcih2YXIgdD1bXSxyPTAsbj1lLmxl
bmd0aDtyPG47cisrKXt2YXIgaT1lW3JdO2kmJnQucHVzaChpKX1yZXR1cm4gdC5qb2luKCIgIil9
ZS5kZWZhdWx0PXR9KSxlKCJlbWJlci1odG1sYmFycy9oZWxwZXJzLy1ub3JtYWxpemUtY2xhc3Mi
LFsiZXhwb3J0cyIsImVtYmVyLXJ1bnRpbWUvc3lzdGVtL3N0cmluZyIsImVtYmVyLW1ldGFsL3Bh
dGhfY2FjaGUiXSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSxuKXt2
YXIgaT1lWzBdLG89ZVsxXSxhPW4uYWN0aXZlQ2xhc3Mscz1uLmluYWN0aXZlQ2xhc3M7aWYoYXx8
cylyZXR1cm4gbz9hOnM7aWYobz09PSEwKXtpZihpJiZyLmlzUGF0aChpKSl7dmFyIHU9aS5zcGxp
dCgiLiIpO2k9dVt1Lmxlbmd0aC0xXX1yZXR1cm4gdC5kYXNoZXJpemUoaSl9cmV0dXJuIG8hPT0h
MSYmbnVsbCE9bz9vOm51bGx9ZS5kZWZhdWx0PW59KSxlKCJlbWJlci1odG1sYmFycy9oZWxwZXJz
L2NvbmNhdCIsWyJleHBvcnRzIl0sZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHQo
ZSl7cmV0dXJuIGUuam9pbigiIil9ZS5kZWZhdWx0PXR9KSxlKCJlbWJlci1odG1sYmFycy9oZWxw
ZXJzL2VhY2gtaW4iLFsiZXhwb3J0cyIsImVtYmVyLXZpZXdzL3N0cmVhbXMvc2hvdWxkX2Rpc3Bs
YXkiXSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgcj1mdW5jdGlvbihlLHIsbil7dmFy
IGksbyxhLHM9ZVswXTtpZihpPXM/T2JqZWN0LmtleXMocyk6W10sdC5kZWZhdWx0KGkpKWZvcihh
PTA7YTxpLmxlbmd0aDthKyspbz1pW2FdLG4udGVtcGxhdGUueWllbGRJdGVtKG8sW28sc1tvXV0p
O2Vsc2Ugbi5pbnZlcnNlLnlpZWxkJiZuLmludmVyc2UueWllbGQoKX07ZS5kZWZhdWx0PXJ9KSxl
KCJlbWJlci1odG1sYmFycy9oZWxwZXJzL2VhY2giLFsiZXhwb3J0cyIsImVtYmVyLXZpZXdzL3N0
cmVhbXMvc2hvdWxkX2Rpc3BsYXkiLCJlbWJlci1odG1sYmFycy91dGlscy9kZWNvZGUtZWFjaC1r
ZXkiXSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSxuLG8pe3ZhciBh
PWVbMF0scz1uLmtleTt0LmRlZmF1bHQoYSk/aShhLGZ1bmN0aW9uKGUsdCl7dmFyIG49ci5kZWZh
dWx0KGUscyx0KTtvLnRlbXBsYXRlLnlpZWxkSXRlbShuLFtlLHRdKX0pOm8uaW52ZXJzZS55aWVs
ZCYmby5pbnZlcnNlLnlpZWxkKCl9ZnVuY3Rpb24gaShlLHQpe3JldHVybiBlLmZvckVhY2g/ZS5m
b3JFYWNoKHQpOkFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoZSx0KX1lLmRlZmF1bHQ9bn0p
LGUoImVtYmVyLWh0bWxiYXJzL2hlbHBlcnMvaGFzaCIsWyJleHBvcnRzIl0sZnVuY3Rpb24oZSl7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHQoZSx0LHIpe3JldHVybiB0fWUuZGVmYXVsdD10fSksZSgi
ZW1iZXItaHRtbGJhcnMvaGVscGVycy9pZl91bmxlc3MiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFs
L2RlYnVnIiwiZW1iZXItdmlld3Mvc3RyZWFtcy9zaG91bGRfZGlzcGxheSJdLGZ1bmN0aW9uKGUs
dCxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlLHQsbil7cmV0dXJuIG8oZSx0LG4sci5kZWZh
dWx0KGVbMF0pKX1mdW5jdGlvbiBpKGUsdCxuKXtyZXR1cm4gbyhlLHQsbiwhci5kZWZhdWx0KGVb
MF0pKX1mdW5jdGlvbiBvKGUsdCxyLG4pe2lmKG4pe2lmKCFyLnRlbXBsYXRlLnlpZWxkKXJldHVy
biBlWzFdO3IudGVtcGxhdGUueWllbGQoKX1lbHNle2lmKCFyLmludmVyc2UueWllbGQpcmV0dXJu
IGVbMl07ci5pbnZlcnNlLnlpZWxkKCl9fWUuaWZIZWxwZXI9bixlLnVubGVzc0hlbHBlcj1pfSks
ZSgiZW1iZXItaHRtbGJhcnMvaGVscGVycy9sb2MiLFsiZXhwb3J0cyIsImVtYmVyLWh0bWxiYXJz
L2hlbHBlciIsImVtYmVyLXJ1bnRpbWUvc3lzdGVtL3N0cmluZyJdLGZ1bmN0aW9uKGUsdCxyKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlKXtyZXR1cm4gci5sb2MuYXBwbHkobnVsbCxlKX1lLmRl
ZmF1bHQ9dC5oZWxwZXIobil9KSxlKCJlbWJlci1odG1sYmFycy9oZWxwZXJzL2xvZyIsWyJleHBv
cnRzIiwiZW1iZXItbWV0YWwvbG9nZ2VyIl0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gcihlKXt0LmRlZmF1bHQubG9nLmFwcGx5KG51bGwsZSl9ZS5kZWZhdWx0PXJ9KSxlKCJl
bWJlci1odG1sYmFycy9oZWxwZXJzL3dpdGgiLFsiZXhwb3J0cyIsImVtYmVyLXZpZXdzL3N0cmVh
bXMvc2hvdWxkX2Rpc3BsYXkiXSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBy
KGUscixuKXt0LmRlZmF1bHQoZVswXSk/bi50ZW1wbGF0ZS55aWVsZChbZVswXV0pOm4uaW52ZXJz
ZSYmbi5pbnZlcnNlLnlpZWxkJiZuLmludmVyc2UueWllbGQoW10pfWUuZGVmYXVsdD1yfSksZSgi
ZW1iZXItaHRtbGJhcnMvaG9va3MvYmluZC1ibG9jayIsWyJleHBvcnRzIl0sZnVuY3Rpb24oZSl7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHQoZSx0LHIpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg8PTN8
fHZvaWQgMD09PWFyZ3VtZW50c1szXT8iZGVmYXVsdCI6YXJndW1lbnRzWzNdO3QuYmluZEJsb2Nr
KG4scil9ZS5kZWZhdWx0PXR9KSxlKCJlbWJlci1odG1sYmFycy9ob29rcy9iaW5kLWxvY2FsIixb
ImV4cG9ydHMiLCJlbWJlci1tZXRhbC9zdHJlYW1zL3N0cmVhbSIsImVtYmVyLW1ldGFsL3N0cmVh
bXMvcHJveHktc3RyZWFtIl0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBu
KGUsbixpLG8pe2lmKG4uaGFzT3duTG9jYWwoaSkpe3ZhciBhPW4uZ2V0TG9jYWwoaSk7YSE9PW8m
JmEuc2V0U291cmNlKG8pfWVsc2V7dmFyIHM9dC53cmFwKG8sci5kZWZhdWx0LGkpO24uYmluZExv
Y2FsKGkscyl9fWUuZGVmYXVsdD1ufSksZSgiZW1iZXItaHRtbGJhcnMvaG9va3MvYmluZC1zY29w
ZSIsWyJleHBvcnRzIl0sZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHQoZSx0KXt9
ZS5kZWZhdWx0PXR9KSxlKCJlbWJlci1odG1sYmFycy9ob29rcy9iaW5kLXNlbGYiLFsiZXhwb3J0
cyIsImVtYmVyLW1ldGFsIiwiZW1iZXItbWV0YWwvc3RyZWFtcy9wcm94eS1zdHJlYW0iXSxmdW5j
dGlvbihlLHQscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSxyLG4pe2lmKG4mJm4uaXNWaWV3
KXt0LmRlZmF1bHQuRU5WLl9FTkFCTEVfTEVHQUNZX1ZJRVdfU1VQUE9SVCYmci5iaW5kTG9jYWwo
InZpZXciLGkobiwidmlldyIpKTt2YXIgbz1pKG4sIiIpO3JldHVybiB2b2lkKG4uaXNHbGltbWVy
Q29tcG9uZW50P3IuYmluZFNlbGYobyk6ci5iaW5kU2VsZihpKG8uZ2V0S2V5KCJjb250ZXh0Iiks
IiIpKSl9dmFyIGE9aShuLCIiKTtyLmJpbmRTZWxmKGEpfWZ1bmN0aW9uIGkoZSx0KXtyZXR1cm4g
bmV3IHIuZGVmYXVsdChlLHQpfWUuZGVmYXVsdD1ufSksZSgiZW1iZXItaHRtbGJhcnMvaG9va3Mv
YmluZC1zaGFkb3ctc2NvcGUiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL3N0cmVhbXMvcHJveHkt
c3RyZWFtIl0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQscixpKXtp
ZihpKXt2YXIgbz1pLnZpZXc7cmV0dXJuIG8mJiFvLmlzQ29tcG9uZW50JiYoci5iaW5kTG9jYWwo
InZpZXciLG4obywidmlldyIpKSxvLmlzVmlldyYmci5iaW5kU2VsZihuKHIuZ2V0TG9jYWwoInZp
ZXciKS5nZXRLZXkoImNvbnRleHQiKSwiIikpKSxyLmJpbmRWaWV3KG8pLG8mJmkuYXR0cnMmJnIu
YmluZENvbXBvbmVudChvKSwiYXR0cnMiaW4gaSYmci5iaW5kQXR0cnMoaS5hdHRycykscn19ZnVu
Y3Rpb24gbihlLHIpe3JldHVybiBuZXcgdC5kZWZhdWx0KGUscil9ZS5kZWZhdWx0PXJ9KSxlKCJl
bWJlci1odG1sYmFycy9ob29rcy9jbGFzc2lmeSIsWyJleHBvcnRzIiwiZW1iZXItaHRtbGJhcnMv
dXRpbHMvaXMtY29tcG9uZW50Il0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
cihlLHIsbil7cmV0dXJuIHQuZGVmYXVsdChlLHIsbik/ImNvbXBvbmVudCI6bnVsbH1lLmRlZmF1
bHQ9cn0pLGUoImVtYmVyLWh0bWxiYXJzL2hvb2tzL2NsZWFudXAtcmVuZGVyLW5vZGUiLFsiZXhw
b3J0cyJdLGZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB0KGUpe2UuY2xlYW51cCYm
ZS5jbGVhbnVwKCl9ZS5kZWZhdWx0PXR9KSxlKCJlbWJlci1odG1sYmFycy9ob29rcy9jb21wb25l
bnQiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL2ZlYXR1cmVzIiwiZW1iZXItbWV0YWwvZGVidWci
LCJlbWJlci1odG1sYmFycy9ub2RlLW1hbmFnZXJzL2NvbXBvbmVudC1ub2RlLW1hbmFnZXIiLCJl
bWJlci12aWV3cy9zeXN0ZW0vYnVpbGQtY29tcG9uZW50LXRlbXBsYXRlIiwiZW1iZXItaHRtbGJh
cnMvdXRpbHMvbG9va3VwLWNvbXBvbmVudCIsImVtYmVyLW1ldGFsL2Fzc2lnbiIsImVtYmVyLW1l
dGFsL2VtcHR5X29iamVjdCIsImVtYmVyLW1ldGFsL2NhY2hlIiwiZW1iZXItaHRtbGJhcnMvc3lz
dGVtL2xvb2t1cC1oZWxwZXIiLCJlbWJlci1odG1sYmFycy91dGlscy9leHRyYWN0LXBvc2l0aW9u
YWwtcGFyYW1zIiwiZW1iZXItaHRtbGJhcnMva2V5d29yZHMvY2xvc3VyZS1jb21wb25lbnQiXSxm
dW5jdGlvbihlLHQscixuLGksbyxhLHMsdSxsLGMsZil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGQo
ZSx0LHIsdSxkLGgsbSx2KXt2YXIgYj1lLmdldFN0YXRlKCksZz11O2lmKGwuQ09OVEFJTlNfRE9U
X0NBQ0hFLmdldChnKSl7dmFyIHk9dC5ob29rcy5nZXQodCxyLGcpLF89eS52YWx1ZSgpO2lmKGYu
aXNDb21wb25lbnRDZWxsKF8pKXtnPV9bZi5DT01QT05FTlRfUEFUSF07dmFyIHc9YS5kZWZhdWx0
KG5ldyBzLmRlZmF1bHQsaCk7Zi5wcm9jZXNzUG9zaXRpb25hbFBhcmFtc0Zyb21DZWxsKF8sZCx3
KSxkPVtdLGg9Zi5tZXJnZUluTmV3SGFzaChfW2YuQ09NUE9ORU5UX0hBU0hdLHcpfX1pZihiLm1h
bmFnZXIpe3ZhciB4PWIubWFuYWdlcixrPW51bGw7cmV0dXJuIHguYmxvY2s/az14LmJsb2NrLnRl
bXBsYXRlLm1ldGE6eC5zY29wZSYmeC5zY29wZS5fdmlldyYmKGs9eC5zY29wZS5fdmlldy50ZW1w
bGF0ZS5tZXRhKSx0Lm1ldGEubW9kdWxlTmFtZT1rJiZrLm1vZHVsZU5hbWV8fHQubWV0YSYmdC5t
ZXRhLm1vZHVsZU5hbWUsYy5kZWZhdWx0KGUseC5jb21wb25lbnQuY29uc3RydWN0b3IsZCxoLCEx
KSx2b2lkIGIubWFuYWdlci5yZXJlbmRlcih0LGgsdil9dmFyIEM9ITEsRT0hMSxPPSExLFQ9cC5n
ZXQoZyk7VCYmKGc9VFsyXSxDPSEwLEU9ISFUWzFdKSxsLkNPTlRBSU5TX0RBU0hfQ0FDSEUuZ2V0
KGcpJiYoTz0hMCk7dmFyIE49dC52aWV3LFM9dC52aWV3LEE9UyYmUy5faXNBbmdsZUJyYWNrZXQs
UD1TJiYhUy5faXNBbmdsZUJyYWNrZXQsaj1DJiYhTyYmQSxSPUMmJkUmJmc9PT10LnZpZXcudGFn
TmFtZSxMPUMmJiFPJiZQLEQ9dm9pZCAwLE09dm9pZCAwO2lmKE98fCFDKXt2YXIgST17fSxGPXQu
bWV0YSYmdC5tZXRhLm1vZHVsZU5hbWU7RiYmKEkuc291cmNlPSJ0ZW1wbGF0ZToiK0YpO3ZhciBI
PW8uZGVmYXVsdCh0Lm93bmVyLGcsSSk7RD1ILmNvbXBvbmVudCxNPUgubGF5b3V0LEMmJk8mJiFE
JiYhTSYmKGo9ITApfWlmKFJ8fGope3ZhciBWPXtjb21wb25lbnQ6UywKK3RhZ05hbWU6Zyxpc0Fu
Z2xlQnJhY2tldDohMCxpc0NvbXBvbmVudEVsZW1lbnQ6ITAsb3V0ZXJBdHRyczpyLmdldEF0dHJz
KCkscGFyZW50U2NvcGU6cn0scT17dGVtcGxhdGVzOm0sc2NvcGU6cn0sej1pLmRlZmF1bHQoVixo
LHEpLEI9ei5ibG9jaztCLmludm9rZSh0LFtdLHZvaWQgMCxlLHIsdil9ZWxzZSBpZihMKXt2YXIg
Qj1pLmJ1aWxkSFRNTFRlbXBsYXRlKGcsaCx7dGVtcGxhdGVzOm0sc2NvcGU6cn0pO0IuaW52b2tl
KHQsW10sdm9pZCAwLGUscix2KX1lbHNle3ZhciBVPW4uZGVmYXVsdC5jcmVhdGUoZSx0LHt0YWdO
YW1lOmcscGFyYW1zOmQsYXR0cnM6aCxwYXJlbnRWaWV3Ok4sdGVtcGxhdGVzOm0saXNBbmdsZUJy
YWNrZXQ6Qyxpc1RvcExldmVsOkUsY29tcG9uZW50OkQsbGF5b3V0Ok0scGFyZW50U2NvcGU6cn0p
O2IubWFuYWdlcj1VLFUucmVuZGVyKHQsdil9fWUuZGVmYXVsdD1kO3ZhciBwPW5ldyB1LmRlZmF1
bHQoMWUzLGZ1bmN0aW9uKGUpe3JldHVybiBlLm1hdGNoKC9eKEA/KTwoLiopPiQvKX0pfSksZSgi
ZW1iZXItaHRtbGJhcnMvaG9va3MvY29uY2F0IixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9zdHJl
YW1zL3V0aWxzIl0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHIpe3Jl
dHVybiB0LmNvbmNhdChyLCIiKX1lLmRlZmF1bHQ9cn0pLGUoImVtYmVyLWh0bWxiYXJzL2hvb2tz
L2NyZWF0ZS1mcmVzaC1zY29wZSIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvc3RyZWFtcy9wcm94
eS1zdHJlYW0iLCJlbWJlci1tZXRhbC9lbXB0eV9vYmplY3QiXSxmdW5jdGlvbihlLHQscil7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7dGhpcy5fc2VsZj12b2lkIDAsdGhpcy5fYmxvY2tzPXZv
aWQgMCx0aGlzLl9jb21wb25lbnQ9dm9pZCAwLHRoaXMuX3ZpZXc9dm9pZCAwLHRoaXMuX2F0dHJz
PXZvaWQgMCx0aGlzLl9sb2NhbHM9dm9pZCAwLHRoaXMuX2xvY2FsUHJlc2VudD12b2lkIDAsdGhp
cy5vdmVycmlkZUNvbnRyb2xsZXI9dm9pZCAwLHRoaXMucGFyZW50PWV9ZnVuY3Rpb24gaSgpe3Jl
dHVybiBuZXcgbihzKX1mdW5jdGlvbiBvKGUpe3JldHVybiBuZXcgbihlKX1lLmRlZmF1bHQ9aSxl
LmNyZWF0ZUNoaWxkU2NvcGU9bzt2YXIgYT1uLnByb3RvdHlwZTthLmdldFNlbGY9ZnVuY3Rpb24o
KXtyZXR1cm4gdGhpcy5fc2VsZnx8dGhpcy5wYXJlbnQuZ2V0U2VsZigpfSxhLmJpbmRTZWxmPWZ1
bmN0aW9uKGUpe3RoaXMuX3NlbGY9ZX0sYS51cGRhdGVTZWxmPWZ1bmN0aW9uKGUscil7dmFyIG49
dGhpcy5fc2VsZjtuP24uc2V0U291cmNlKGUpOnRoaXMuX3NlbGY9bmV3IHQuZGVmYXVsdChlLHIp
fSxhLmdldEJsb2NrPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9ibG9ja3M/dGhpcy5fYmxvY2tz
W2VdfHx0aGlzLnBhcmVudC5nZXRCbG9jayhlKTp0aGlzLnBhcmVudC5nZXRCbG9jayhlKX0sYS5o
YXNCbG9jaz1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fYmxvY2tzPyEoIXRoaXMuX2Jsb2Nrc1tl
XSYmIXRoaXMucGFyZW50Lmhhc0Jsb2NrKGUpKTp0aGlzLnBhcmVudC5oYXNCbG9jayhlKX0sYS5i
aW5kQmxvY2s9ZnVuY3Rpb24oZSx0KXt0aGlzLl9ibG9ja3N8fCh0aGlzLl9ibG9ja3M9bmV3IHIu
ZGVmYXVsdCksdGhpcy5fYmxvY2tzW2VdPXR9LGEuZ2V0Q29tcG9uZW50PWZ1bmN0aW9uKCl7cmV0
dXJuIHRoaXMuX2NvbXBvbmVudHx8dGhpcy5wYXJlbnQuZ2V0Q29tcG9uZW50KCl9LGEuYmluZENv
bXBvbmVudD1mdW5jdGlvbihlKXt0aGlzLl9jb21wb25lbnQ9ZX0sYS5nZXRWaWV3PWZ1bmN0aW9u
KCl7cmV0dXJuIHRoaXMuX3ZpZXd8fHRoaXMucGFyZW50LmdldFZpZXcoKX0sYS5iaW5kVmlldz1m
dW5jdGlvbihlKXt0aGlzLl92aWV3PWV9LGEuZ2V0QXR0cnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhp
cy5fYXR0cnN8fHRoaXMucGFyZW50LmdldEF0dHJzKCl9LGEuYmluZEF0dHJzPWZ1bmN0aW9uKGUp
e3RoaXMuX2F0dHJzPWV9LGEuaGFzTG9jYWw9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2xvY2Fs
UHJlc2VudD90aGlzLl9sb2NhbFByZXNlbnRbZV18fHRoaXMucGFyZW50Lmhhc0xvY2FsKGUpOnRo
aXMucGFyZW50Lmhhc0xvY2FsKGUpfSxhLmhhc093bkxvY2FsPWZ1bmN0aW9uKGUpe3JldHVybiB0
aGlzLl9sb2NhbFByZXNlbnQmJnRoaXMuX2xvY2FsUHJlc2VudFtlXX0sYS5nZXRMb2NhbD1mdW5j
dGlvbihlKXtyZXR1cm4gdGhpcy5fbG9jYWxQcmVzZW50JiZ0aGlzLl9sb2NhbFByZXNlbnRbZV0/
dGhpcy5fbG9jYWxzW2VdOnRoaXMucGFyZW50LmdldExvY2FsKGUpfSxhLmJpbmRMb2NhbD1mdW5j
dGlvbihlLHQpe3RoaXMuX2xvY2FsUHJlc2VudHx8KHRoaXMuX2xvY2FsUHJlc2VudD1uZXcgci5k
ZWZhdWx0LHRoaXMuX2xvY2Fscz1uZXcgci5kZWZhdWx0KSx0aGlzLl9sb2NhbFByZXNlbnRbZV09
ITAsdGhpcy5fbG9jYWxzW2VdPXR9O3ZhciBzPXtfc2VsZjp2b2lkIDAsX2Jsb2Nrczp2b2lkIDAs
X2NvbXBvbmVudDp2b2lkIDAsX3ZpZXc6dm9pZCAwLF9hdHRyczp2b2lkIDAsX2xvY2Fsczp2b2lk
IDAsX2xvY2FsUHJlc2VudDp2b2lkIDAsb3ZlcnJpZGVDb250cm9sbGVyOnZvaWQgMCxnZXRTZWxm
OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LGJpbmRTZWxmOmZ1bmN0aW9uKGUpe3JldHVybiBudWxs
fSx1cGRhdGVTZWxmOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIG51bGx9LGdldEJsb2NrOmZ1bmN0aW9u
KGUpe3JldHVybiBudWxsfSxiaW5kQmxvY2s6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbH0saGFz
QmxvY2s6ZnVuY3Rpb24oZSl7cmV0dXJuITF9LGdldENvbXBvbmVudDpmdW5jdGlvbigpe3JldHVy
biBudWxsfSxiaW5kQ29tcG9uZW50OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LGdldFZpZXc6ZnVu
Y3Rpb24oKXtyZXR1cm4gbnVsbH0sYmluZFZpZXc6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGx9LGdl
dEF0dHJzOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LGJpbmRBdHRyczpmdW5jdGlvbihlKXtyZXR1
cm4gbnVsbH0saGFzTG9jYWw6ZnVuY3Rpb24oZSl7cmV0dXJuITF9LGhhc093bkxvY2FsOmZ1bmN0
aW9uKGUpe3JldHVybiExfSxnZXRMb2NhbDpmdW5jdGlvbihlKXtyZXR1cm4gbnVsbH0sYmluZExv
Y2FsOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIG51bGx9fX0pLGUoImVtYmVyLWh0bWxiYXJzL2hvb2tz
L2Rlc3Ryb3ktcmVuZGVyLW5vZGUiLFsiZXhwb3J0cyJdLGZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiB0KGUpe2UuZW1iZXJWaWV3JiZlLmVtYmVyVmlldy5kZXN0cm95KCk7dmFyIHQ9
ZS5zdHJlYW1VbnN1YnNjcmliZXJzO2lmKHQpZm9yKHZhciByPTAsbj10Lmxlbmd0aDtyPG47cisr
KXRbcl0oKX1lLmRlZmF1bHQ9dH0pLGUoImVtYmVyLWh0bWxiYXJzL2hvb2tzL2RpZC1jbGVhbnVw
LXRyZWUiLFsiZXhwb3J0cyJdLGZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB0KGUp
e2Uudmlldy5vd25lclZpZXcuX2Rlc3Ryb3lpbmdTdWJ0cmVlRm9yVmlldz1udWxsfWUuZGVmYXVs
dD10fSksZSgiZW1iZXItaHRtbGJhcnMvaG9va3MvZGlkLXJlbmRlci1ub2RlIixbImV4cG9ydHMi
XSxmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gdChlLHQpe3QucmVuZGVyZWROb2Rl
cy5hZGQoZSl9ZS5kZWZhdWx0PXR9KSxlKCJlbWJlci1odG1sYmFycy9ob29rcy9lbGVtZW50Iixb
ImV4cG9ydHMiLCJlbWJlci1odG1sYmFycy9zeXN0ZW0vbG9va3VwLWhlbHBlciIsImh0bWxiYXJz
LXJ1bnRpbWUvaG9va3MiLCJlbWJlci1odG1sYmFycy9zeXN0ZW0vaW52b2tlLWhlbHBlciJdLGZ1
bmN0aW9uKGUsdCxyLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUsaSxvLGEscyx1LGwpe2lm
KCFyLmhhbmRsZVJlZGlyZWN0KGUsaSxvLGEscyx1LG51bGwsbnVsbCxsKSl7dmFyIGMsZj10LmZp
bmRIZWxwZXIoYSxvLmdldFNlbGYoKSxpKTtpZihmKXt2YXIgZD1uLmJ1aWxkSGVscGVyU3RyZWFt
KGYscyx1LHtlbGVtZW50OmUuZWxlbWVudH0saSxvLGEpO2M9ZC52YWx1ZSgpfWVsc2UgYz1pLmhv
b2tzLmdldChpLG8sYSk7aS5ob29rcy5nZXRWYWx1ZShjKX19ZS5kZWZhdWx0PWl9KSxlKCJlbWJl
ci1odG1sYmFycy9ob29rcy9nZXQtYmxvY2siLFsiZXhwb3J0cyJdLGZ1bmN0aW9uKGUpeyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiB0KGUsdCl7cmV0dXJuIGUuZ2V0QmxvY2sodCl9ZS5kZWZhdWx0PXR9
KSxlKCJlbWJlci1odG1sYmFycy9ob29rcy9nZXQtY2VsbC1vci12YWx1ZSIsWyJleHBvcnRzIiwi
ZW1iZXItbWV0YWwvc3RyZWFtcy91dGlscyIsImVtYmVyLWh0bWxiYXJzL2tleXdvcmRzL211dCJd
LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlKXtyZXR1cm4gZSYmZVty
Lk1VVEFCTEVfUkVGRVJFTkNFXT9lLmNlbGwoKTp0LnJlYWQoZSl9ZS5kZWZhdWx0PW59KSxlKCJl
bWJlci1odG1sYmFycy9ob29rcy9nZXQtY2hpbGQiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL3N0
cmVhbXMvdXRpbHMiXSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUscil7
cmV0dXJuIHQuaXNTdHJlYW0oZSk/ZS5nZXRLZXkocik6ZVtyXX1lLmRlZmF1bHQ9cn0pLGUoImVt
YmVyLWh0bWxiYXJzL2hvb2tzL2dldC1yb290IixbImV4cG9ydHMiXSxmdW5jdGlvbihlKXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gdChlLHQpe2lmKCJ0aGlzIj09PXQpcmV0dXJuW2UuZ2V0U2VsZigp
XTtpZigiaGFzQmxvY2siPT09dClyZXR1cm5bISFlLmhhc0Jsb2NrKCJkZWZhdWx0IildO2lmKCJo
YXNCbG9ja1BhcmFtcyI9PT10KXt2YXIgbj1lLmdldEJsb2NrKCJkZWZhdWx0Iik7cmV0dXJuWyEh
biYmbi5hcml0eV19cmV0dXJuIGUuaGFzTG9jYWwodCk/W2UuZ2V0TG9jYWwodCldOltyKGUsdCld
fWZ1bmN0aW9uIHIoZSx0KXtpZigiYXR0cnMiPT09dCl7dmFyIHI9ZS5nZXRBdHRycygpO2lmKHIp
cmV0dXJuIHJ9dmFyIG49ZS5nZXRTZWxmKCl8fGUuZ2V0TG9jYWwoInZpZXciKTtpZihuKXJldHVy
biBuLmdldEtleSh0KTt2YXIgaT1lLmdldEF0dHJzKCk7cmV0dXJuIGkmJnQgaW4gaT9pW3RdOnZv
aWQgMH1lLmRlZmF1bHQ9dH0pLGUoImVtYmVyLWh0bWxiYXJzL2hvb2tzL2dldC12YWx1ZSIsWyJl
eHBvcnRzIiwiZW1iZXItbWV0YWwvc3RyZWFtcy91dGlscyIsImVtYmVyLXZpZXdzL2NvbXBhdC9h
dHRycy1wcm94eSJdLGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlKXt2
YXIgbj10LnJlYWQoZSk7cmV0dXJuIG4mJm5bci5NVVRBQkxFX0NFTExdP24udmFsdWU6bn1lLmRl
ZmF1bHQ9bn0pLGUoImVtYmVyLWh0bWxiYXJzL2hvb2tzL2hhcy1oZWxwZXIiLFsiZXhwb3J0cyIs
ImVtYmVyLWh0bWxiYXJzL3N5c3RlbS9sb29rdXAtaGVscGVyIl0sZnVuY3Rpb24oZSx0KXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gcihlLHIsbil7aWYoZS5oZWxwZXJzW25dKXJldHVybiEwO3ZhciBp
PWUub3duZXI7aWYodC52YWxpZGF0ZUxhenlIZWxwZXJOYW1lKG4saSxlLmhvb2tzLmtleXdvcmRz
KSl7dmFyIG89ImhlbHBlcjoiK247aWYoaS5oYXNSZWdpc3RyYXRpb24obykpcmV0dXJuITA7dmFy
IGE9e30scz1lLm1ldGEmJmUubWV0YS5tb2R1bGVOYW1lO2lmKHMmJihhLnNvdXJjZT0idGVtcGxh
dGU6IitzKSxpLmhhc1JlZ2lzdHJhdGlvbihvLGEpKXJldHVybiEwfXJldHVybiExfWUuZGVmYXVs
dD1yfSksZSgiZW1iZXItaHRtbGJhcnMvaG9va3MvaW52b2tlLWhlbHBlciIsWyJleHBvcnRzIiwi
ZW1iZXItaHRtbGJhcnMvc3lzdGVtL2ludm9rZS1oZWxwZXIiLCJlbWJlci1odG1sYmFycy91dGls
cy9zdWJzY3JpYmUiXSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSxu
LGksbyxhLHMsdSxsLGMpe3ZhciBmPXQuYnVpbGRIZWxwZXJTdHJlYW0odSxhLHMsbCxuLGkpO2lm
KGYubGlua2FibGUpe2lmKGUpe2Zvcih2YXIgZD0hMSxwPTAsaD1hLmxlbmd0aDtwPGg7cCsrKWQ9
ITAsZi5hZGREZXBlbmRlbmN5KGFbcF0pO2Zvcih2YXIgbSBpbiBzKWQ9ITAsZi5hZGREZXBlbmRl
bmN5KHNbbV0pO2QmJnIuZGVmYXVsdChlLG4saSxmKX1yZXR1cm57bGluazohMCx2YWx1ZTpmfX1y
ZXR1cm57dmFsdWU6Zi52YWx1ZSgpfX1lLmRlZmF1bHQ9bn0pLGUoImVtYmVyLWh0bWxiYXJzL2hv
b2tzL2xpbmstcmVuZGVyLW5vZGUiLFsiZXhwb3J0cyIsImVtYmVyLWh0bWxiYXJzL3V0aWxzL3N1
YnNjcmliZSIsImVtYmVyLXJ1bnRpbWUvdXRpbHMiLCJlbWJlci1tZXRhbC9zdHJlYW1zL3V0aWxz
IiwiZW1iZXItaHRtbGJhcnMvc3lzdGVtL2xvb2t1cC1oZWxwZXIiLCJlbWJlci1odG1sYmFycy9r
ZXl3b3Jkcy9jbG9zdXJlLWNvbXBvbmVudCJdLGZ1bmN0aW9uKGUsdCxyLG4saSxvKXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gYShlLHIsbixhLHUsbCl7aWYoZS5zdHJlYW1VbnN1YnNjcmliZXJzKXJl
dHVybiEwO3ZhciBjPXIuaG9va3Mua2V5d29yZHNbYV07aWYoYyYmYy5saW5rKWMubGluayhlLmdl
dFN0YXRlKCksdSxsKTtlbHNle2lmKCJ1bmJvdW5kIj09PWEpcmV0dXJuITA7cyhhLHUpfWlmKGku
Q09OVEFJTlNfRE9UX0NBQ0hFLmdldChhKSl7dmFyIGY9ci5ob29rcy5nZXQocixuLGEpLGQ9Zi52
YWx1ZSgpO2lmKG8uaXNDb21wb25lbnRDZWxsKGQpKXt2YXIgcD1vLm1lcmdlSW5OZXdIYXNoKGRb
by5DT01QT05FTlRfSEFTSF0sbCk7Zm9yKHZhciBoIGluIHApdC5kZWZhdWx0KGUscixuLHBbaF0p
fX1pZih1JiZ1Lmxlbmd0aClmb3IodmFyIG09MDttPHUubGVuZ3RoO20rKyl0LmRlZmF1bHQoZSxy
LG4sdVttXSk7aWYobClmb3IodmFyIGggaW4gbCl0LmRlZmF1bHQoZSxyLG4sbFtoXSk7cmV0dXJu
ITB9ZnVuY3Rpb24gcyhlLHQpe3N3aXRjaChlKXtjYXNlInVubGVzcyI6Y2FzZSJpZiI6dFswXT1s
KHRbMF0sYyk7YnJlYWs7Y2FzZSJlYWNoIjp0WzBdPXUodFswXSk7YnJlYWs7Y2FzZSJ3aXRoIjp0
WzBdPWwodFswXSxmKX19ZnVuY3Rpb24gdShlKXt2YXIgdD1kKGUsIltdIikscj1uLmNoYWluKGUs
ZnVuY3Rpb24oKXtyZXR1cm4gbi5yZWFkKHQpLG4ucmVhZChlKX0sImVhY2giKTtyZXR1cm4gci5h
ZGREZXBlbmRlbmN5KHQpLHJ9ZnVuY3Rpb24gbChlLHQpe3ZhciBpPWQoZSwibGVuZ3RoIiksbz1k
KGUsImlzVHJ1dGh5IiksYT1uLmNoYWluKGUsZnVuY3Rpb24oKXt2YXIgYT1uLnJlYWQoZSkscz1u
LnJlYWQoaSksdT1uLnJlYWQobyk7cmV0dXJuIHIuaXNBcnJheShhKT9zPjAmJnQoYSk6ImJvb2xl
YW4iPT10eXBlb2YgdT8hIXUmJnQoYSk6dChhKX0sIlNob3VsZERpc3BsYXkiKTtyZXR1cm4gbi5h
ZGREZXBlbmRlbmN5KGEsaSksbi5hZGREZXBlbmRlbmN5KGEsbyksYX1mdW5jdGlvbiBjKGUpe3Jl
dHVybiEhZX1mdW5jdGlvbiBmKGUpe3JldHVybiBlfWZ1bmN0aW9uIGQoZSx0KXtyZXR1cm4gbi5p
c1N0cmVhbShlKT9lLmdldEtleSh0KTplJiZlW3RdfWUuZGVmYXVsdD1hLGUubGlua1BhcmFtc0Zv
cj1zfSksZSgiZW1iZXItaHRtbGJhcnMvaG9va3MvbG9va3VwLWhlbHBlciIsWyJleHBvcnRzIiwi
ZW1iZXItaHRtbGJhcnMvc3lzdGVtL2xvb2t1cC1oZWxwZXIiXSxmdW5jdGlvbihlLHQpeyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiByKGUscixuKXtyZXR1cm4gdC5kZWZhdWx0KG4sci5nZXRTZWxmKCks
ZSl9ZS5kZWZhdWx0PXJ9KSxlKCJlbWJlci1odG1sYmFycy9ob29rcy9zdWJleHByIixbImV4cG9y
dHMiLCJlbWJlci1odG1sYmFycy9zeXN0ZW0vbG9va3VwLWhlbHBlciIsImVtYmVyLWh0bWxiYXJz
L3N5c3RlbS9pbnZva2UtaGVscGVyIiwiZW1iZXItbWV0YWwvc3RyZWFtcy91dGlscyIsImVtYmVy
LWh0bWxiYXJzL2hvb2tzL2xpbmstcmVuZGVyLW5vZGUiXSxmdW5jdGlvbihlLHQscixuLGkpeyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiBvKGUsbixvLHMsdSl7dmFyIGw9ZS5ob29rcy5rZXl3b3Jkc1tv
XTtpZihsKXJldHVybiBsKG51bGwsZSxuLHMsdSxudWxsLG51bGwpO2kubGlua1BhcmFtc0Zvcihv
LHMpO2Zvcih2YXIgYz1hKHMsdSxvKSxmPXQuZGVmYXVsdChvLG4uZ2V0U2VsZigpLGUpLGQ9ci5i
dWlsZEhlbHBlclN0cmVhbShmLHMsdSxudWxsLGUsbixjKSxwPTAsaD1zLmxlbmd0aDtwPGg7cCsr
KWQuYWRkRGVwZW5kZW5jeShzW3BdKTtmb3IodmFyIG0gaW4gdSlkLmFkZERlcGVuZGVuY3kodVtt
XSk7cmV0dXJuIGR9ZnVuY3Rpb24gYShlLHQscil7dmFyIG49cyhlKSxpPXUodCksbz0iKCIrcjty
ZXR1cm4gbiYmKG8rPSIgIituKSxpJiYobys9IiAiK2kpLG8rIikifWZ1bmN0aW9uIHMoZSl7cmV0
dXJuIG4ubGFiZWxzRm9yKGUpLmpvaW4oIiAiKX1mdW5jdGlvbiB1KGUpe3ZhciB0PVtdO2Zvcih2
YXIgciBpbiBlKXQucHVzaChyKyI9IituLmxhYmVsRm9yKGVbcl0pKTtyZXR1cm4gdC5qb2luKCIg
Iil9ZS5kZWZhdWx0PW8sZS5sYWJlbEZvclN1YmV4cHI9YX0pLGUoImVtYmVyLWh0bWxiYXJzL2hv
b2tzL3VwZGF0ZS1zZWxmIixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9kZWJ1ZyIsImVtYmVyLW1l
dGFsL3Byb3BlcnR5X2dldCJdLGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
bihlLHQsbil7dmFyIGk9bjtpZihpJiZpLmhhc0JvdW5kQ29udHJvbGxlcil7dmFyIG89aSxhPW8u
Y29udHJvbGxlcjtpPWkuc2VsZix0LnVwZGF0ZUxvY2FsKCJjb250cm9sbGVyIixhfHxpKX1yZXR1
cm4gaSYmaS5pc1ZpZXc/KHQudXBkYXRlTG9jYWwoInZpZXciLGkpLHZvaWQgdC51cGRhdGVTZWxm
KHIuZ2V0KGksImNvbnRleHQiKSwiIikpOnZvaWQgdC51cGRhdGVTZWxmKGkpfWUuZGVmYXVsdD1u
fSksZSgiZW1iZXItaHRtbGJhcnMvaG9va3Mvd2lsbC1jbGVhbnVwLXRyZWUiLFsiZXhwb3J0cyJd
LGZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB0KGUpe3ZhciB0PWUudmlldzt0Lm93
bmVyVmlldy5fZGVzdHJveWluZ1N1YnRyZWVGb3JWaWV3PXR9ZS5kZWZhdWx0PXR9KSxlKCJlbWJl
ci1odG1sYmFycy9pbmRleCIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvY29yZSIsImVtYmVyLXRl
bXBsYXRlLWNvbXBpbGVyIiwiZW1iZXItaHRtbGJhcnMvc3lzdGVtL21ha2VfYm91bmRfaGVscGVy
IiwiZW1iZXItaHRtbGJhcnMvaGVscGVycyIsImVtYmVyLWh0bWxiYXJzL2hlbHBlcnMvaWZfdW5s
ZXNzIiwiZW1iZXItaHRtbGJhcnMvaGVscGVycy93aXRoIiwiZW1iZXItaHRtbGJhcnMvaGVscGVy
cy9sb2MiLCJlbWJlci1odG1sYmFycy9oZWxwZXJzL2xvZyIsImVtYmVyLWh0bWxiYXJzL2hlbHBl
cnMvZWFjaCIsImVtYmVyLWh0bWxiYXJzL2hlbHBlcnMvZWFjaC1pbiIsImVtYmVyLWh0bWxiYXJz
L2hlbHBlcnMvLW5vcm1hbGl6ZS1jbGFzcyIsImVtYmVyLWh0bWxiYXJzL2hlbHBlcnMvY29uY2F0
IiwiZW1iZXItaHRtbGJhcnMvaGVscGVycy8tam9pbi1jbGFzc2VzIiwiZW1iZXItaHRtbGJhcnMv
aGVscGVycy8taHRtbC1zYWZlIiwiZW1iZXItaHRtbGJhcnMvaGVscGVycy9oYXNoIiwiZW1iZXIt
aHRtbGJhcnMvc3lzdGVtL2RvbS1oZWxwZXIiLCJlbWJlci1odG1sYmFycy9oZWxwZXIiLCJlbWJl
ci1odG1sYmFycy90ZW1wbGF0ZV9yZWdpc3RyeSIsImVtYmVyLWh0bWxiYXJzL3N5c3RlbS9ib290
c3RyYXAiLCJlbWJlci1odG1sYmFycy9jb21wYXQiXSxmdW5jdGlvbihlLHQscixuLGksbyxhLHMs
dSxsLGMsZixkLHAsaCxtLHYsYixnLHksXyl7InVzZSBzdHJpY3QiO2kucmVnaXN0ZXJIZWxwZXIo
ImlmIixvLmlmSGVscGVyKSxpLnJlZ2lzdGVySGVscGVyKCJ1bmxlc3MiLG8udW5sZXNzSGVscGVy
KSxpLnJlZ2lzdGVySGVscGVyKCJ3aXRoIixhLmRlZmF1bHQpLGkucmVnaXN0ZXJIZWxwZXIoImxv
YyIscy5kZWZhdWx0KSxpLnJlZ2lzdGVySGVscGVyKCJsb2ciLHUuZGVmYXVsdCksaS5yZWdpc3Rl
ckhlbHBlcigiZWFjaCIsbC5kZWZhdWx0KSxpLnJlZ2lzdGVySGVscGVyKCJlYWNoLWluIixjLmRl
ZmF1bHQpLGkucmVnaXN0ZXJIZWxwZXIoIi1ub3JtYWxpemUtY2xhc3MiLGYuZGVmYXVsdCksaS5y
ZWdpc3RlckhlbHBlcigiY29uY2F0IixkLmRlZmF1bHQpLGkucmVnaXN0ZXJIZWxwZXIoIi1qb2lu
LWNsYXNzZXMiLHAuZGVmYXVsdCksaS5yZWdpc3RlckhlbHBlcigiLWh0bWwtc2FmZSIsaC5kZWZh
dWx0KSxpLnJlZ2lzdGVySGVscGVyKCJoYXNoIixtLmRlZmF1bHQpLHQuZGVmYXVsdC5IVE1MQmFy
cz17dGVtcGxhdGU6ci50ZW1wbGF0ZSxjb21waWxlOnIuY29tcGlsZSxwcmVjb21waWxlOnIucHJl
Y29tcGlsZSxtYWtlQm91bmRIZWxwZXI6bi5kZWZhdWx0LHJlZ2lzdGVyUGx1Z2luOnIucmVnaXN0
ZXJQbHVnaW4sRE9NSGVscGVyOnYuZGVmYXVsdH0sYi5kZWZhdWx0LmhlbHBlcj1iLmhlbHBlcix0
LmRlZmF1bHQuSGVscGVyPWIuZGVmYXVsdCxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5kZWZhdWx0
LCJURU1QTEFURVMiLHtjb25maWd1cmFibGU6ITEsZ2V0OmcuZ2V0VGVtcGxhdGVzLHNldDpnLnNl
dFRlbXBsYXRlc30pfSksZSgiZW1iZXItaHRtbGJhcnMva2V5d29yZHMiLFsiZXhwb3J0cyIsImh0
bWxiYXJzLXJ1bnRpbWUiXSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUs
dCl7bltlXT10fWUucmVnaXN0ZXJLZXl3b3JkPXI7dmFyIG49T2JqZWN0LmNyZWF0ZSh0Lmhvb2tz
LmtleXdvcmRzKTtlLmRlZmF1bHQ9bn0pLGUoImVtYmVyLWh0bWxiYXJzL2tleXdvcmRzL2Nsb3N1
cmUtY29tcG9uZW50IixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9kZWJ1ZyIsImVtYmVyLW1ldGFs
L2lzX25vbmUiLCJlbWJlci1tZXRhbC9zeW1ib2wiLCJlbWJlci1tZXRhbC9zdHJlYW1zL3N0cmVh
bSIsImVtYmVyLW1ldGFsL2VtcHR5X29iamVjdCIsImVtYmVyLW1ldGFsL3N0cmVhbXMvdXRpbHMi
LCJlbWJlci1odG1sYmFycy9ob29rcy9zdWJleHByIiwiZW1iZXItbWV0YWwvYXNzaWduIiwiZW1i
ZXItaHRtbGJhcnMvdXRpbHMvZXh0cmFjdC1wb3NpdGlvbmFsLXBhcmFtcyIsImVtYmVyLWh0bWxi
YXJzL3V0aWxzL2xvb2t1cC1jb21wb25lbnQiXSxmdW5jdGlvbihlLHQscixuLGksbyxhLHMsdSxs
LGMpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBmKGUsdCxyKXt2YXIgbj10WzBdLGk9dC5zbGljZSgx
KSxvPW5ldyBDKGUsbixpLHIpO3JldHVybiBvLmFkZERlcGVuZGVuY3kobiksaS5mb3JFYWNoKGZ1
bmN0aW9uKGUpe3JldHVybiBvLmFkZERlcGVuZGVuY3koZSl9KSxPYmplY3Qua2V5cyhyKS5mb3JF
YWNoKGZ1bmN0aW9uKGUpe3JldHVybiBvLmFkZERlcGVuZGVuY3kocltlXSl9KSxvfWZ1bmN0aW9u
IGQoZSx0LHIsbixpKXt2YXIgcz1hLnJlYWQodCksbD11LmRlZmF1bHQobmV3IG8uZGVmYXVsdCxu
KTtyZXR1cm4gcChzKT9oKHMscixsKTp2KGUscyxyLGwpfWZ1bmN0aW9uIHAoZSl7cmV0dXJuIGUm
JmVbX119ZnVuY3Rpb24gaChlLHQscil7dmFyIG47cmV0dXJuIG0oZSx0LHIpLG49e30sblt3XT1l
W3ddLG5ba109ZyhlW2tdLHIpLG5beF09ZVt4XSxuW19dPSEwLG59ZnVuY3Rpb24gbShlLHQscil7
dmFyIG49ZVt4XTtsLnByb2Nlc3NQb3NpdGlvbmFsUGFyYW1zKG51bGwsbix0LHIpfWZ1bmN0aW9u
IHYoZSx0LHIsbil7dmFyIGksbz1iKGUub3duZXIsdCk7cmV0dXJuIGwucHJvY2Vzc1Bvc2l0aW9u
YWxQYXJhbXMobnVsbCxvLHIsbiksaT17fSxpW3ddPXQsaVtrXT1uLGlbeF09byxpW19dPSEwLGl9
ZnVuY3Rpb24gYihlLHQpe2lmKCF0KXJldHVybltdO3ZhciByPWMuZGVmYXVsdChlLHQpLG49ci5j
b21wb25lbnQ7cmV0dXJuIG4mJm4ucG9zaXRpb25hbFBhcmFtcz9uLnBvc2l0aW9uYWxQYXJhbXM6
W119ZnVuY3Rpb24gZyhlLHQpe3JldHVybiB1LmRlZmF1bHQoe30sZSx0KX1lLmRlZmF1bHQ9Zixl
LmlzQ29tcG9uZW50Q2VsbD1wLGUucHJvY2Vzc1Bvc2l0aW9uYWxQYXJhbXNGcm9tQ2VsbD1tLGUu
bWVyZ2VJbk5ld0hhc2g9Zzt2YXIgeT1uLmRlZmF1bHQoIkNPTVBPTkVOVF9SRUZFUkVOQ0UiKTtl
LkNPTVBPTkVOVF9SRUZFUkVOQ0U9eTt2YXIgXz1uLmRlZmF1bHQoIkNPTVBPTkVOVF9DRUxMIik7
ZS5DT01QT05FTlRfQ0VMTD1fO3ZhciB3PW4uZGVmYXVsdCgiQ09NUE9ORU5UX1BBVEgiKTtlLkNP
TVBPTkVOVF9QQVRIPXc7dmFyIHg9bi5kZWZhdWx0KCJDT01QT05FTlRfUE9TSVRJT05BTF9QQVJB
TVMiKTtlLkNPTVBPTkVOVF9QT1NJVElPTkFMX1BBUkFNUz14O3ZhciBrPW4uZGVmYXVsdCgiQ09N
UE9ORU5UX0hBU0giKTtlLkNPTVBPTkVOVF9IQVNIPWs7dmFyIEM9aS5kZWZhdWx0LmV4dGVuZCh7
aW5pdDpmdW5jdGlvbihlLHQscixuKXt0aGlzLl9lbnY9ZSx0aGlzLl9wYXRoPXQsdGhpcy5fcGFy
YW1zPXIsdGhpcy5faGFzaD1uLHRoaXMubGFiZWw9cy5sYWJlbEZvclN1YmV4cHIoW3RdLmNvbmNh
dChyKSxuLCJjb21wb25lbnQiKSx0aGlzW3ldPSEwfSxjb21wdXRlOmZ1bmN0aW9uKCl7cmV0dXJu
IGQodGhpcy5fZW52LHRoaXMuX3BhdGgsdGhpcy5fcGFyYW1zLHRoaXMuX2hhc2gsdGhpcy5sYWJl
bCl9fSl9KSxlKCJlbWJlci1odG1sYmFycy9rZXl3b3Jkcy9jb21wb25lbnQiLFsiZXhwb3J0cyIs
Imh0bWxiYXJzLXJ1bnRpbWUvaG9va3MiLCJlbWJlci1odG1sYmFycy9rZXl3b3Jkcy9jbG9zdXJl
LWNvbXBvbmVudCIsImVtYmVyLW1ldGFsL2VtcHR5X29iamVjdCIsImVtYmVyLW1ldGFsL2Fzc2ln
biJdLGZ1bmN0aW9uKGUsdCxyLG4saSl7InVzZSBzdHJpY3QiO2UuZGVmYXVsdD1mdW5jdGlvbihl
LG8sYSxzLHUsbCxjLGYpe2lmKCFlKXJldHVybiByLmRlZmF1bHQobyxzLHUpO3ZhciBkPWkuZGVm
YXVsdChuZXcgbi5kZWZhdWx0LHUpO3JldHVybiB0LmtleXdvcmQoIkBlbGVtZW50X2NvbXBvbmVu
dCIsZSxvLGEscyxkLGwsYyxmKSwhMH19KSxlKCJlbWJlci1odG1sYmFycy9rZXl3b3Jkcy9kZWJ1
Z2dlciIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvZGVidWciXSxmdW5jdGlvbihlLHQpeyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiByKGUsdCxyKXt0Lmhvb2tzLmdldFZhbHVlKHIuZ2V0TG9jYWwoInZp
ZXciKSksdC5ob29rcy5nZXRWYWx1ZShyLmdldFNlbGYoKSk7cmV0dXJuITB9ZS5kZWZhdWx0PXJ9
KSxlKCJlbWJlci1odG1sYmFycy9rZXl3b3Jkcy9lbGVtZW50LWNvbXBvbmVudCIsWyJleHBvcnRz
IiwiZW1iZXItbWV0YWwvYXNzaWduIiwiZW1iZXItaHRtbGJhcnMva2V5d29yZHMvY2xvc3VyZS1j
b21wb25lbnQiLCJlbWJlci1odG1sYmFycy91dGlscy9sb29rdXAtY29tcG9uZW50IiwiZW1iZXIt
aHRtbGJhcnMvdXRpbHMvZXh0cmFjdC1wb3NpdGlvbmFsLXBhcmFtcyJdLGZ1bmN0aW9uKGUsdCxy
LG4saSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG8oZSx0KXt2YXIgbj10Lmhvb2tzLmdldFZhbHVl
KGUpO3JldHVybiByLmlzQ29tcG9uZW50Q2VsbChuKSYmKG49bltyLkNPTVBPTkVOVF9QQVRIXSks
bn1mdW5jdGlvbiBhKGUsdCxvLGEscyx1LGwsYyl7dmFyIGY9YVswXSxkPWEuc2xpY2UoMSkscD0h
KGFyZ3VtZW50cy5sZW5ndGg8PTh8fHZvaWQgMD09PWFyZ3VtZW50c1s4XSkmJmFyZ3VtZW50c1s4
XSxoPWUuZ2V0U3RhdGUoKSxtPWguY29tcG9uZW50UGF0aDtpZih2b2lkIDAhPT1tJiZudWxsIT09
bSl7aWYoZj10Lmhvb2tzLmdldFZhbHVlKGYpLHApe3ZhciB2PW4uZGVmYXVsdCh0Lm93bmVyLG0p
LGI9di5jb21wb25lbnQ7aS5kZWZhdWx0KG51bGwsYixkLHMpfWlmKHIuaXNDb21wb25lbnRDZWxs
KGYpKXt2YXIgZz10Lmhvb2tzLmdldFZhbHVlKGYpO3IucHJvY2Vzc1Bvc2l0aW9uYWxQYXJhbXNG
cm9tQ2VsbChnLGQscyksZD1bXSxzPXIubWVyZ2VJbk5ld0hhc2goZ1tyLkNPTVBPTkVOVF9IQVNI
XSxzKX12YXIgeT17ZGVmYXVsdDp1LGludmVyc2U6bH07dC5ob29rcy5jb21wb25lbnQoZSx0LG8s
bSxkLHMseSxjKX19ZS5kZWZhdWx0PXtzZXR1cFN0YXRlOmZ1bmN0aW9uKGUscixuLGksYSl7dmFy
IHM9byhpWzBdLHIpO3JldHVybiB0LmRlZmF1bHQoe30sZSx7Y29tcG9uZW50UGF0aDpzLGlzQ29t
cG9uZW50SGVscGVyOiEwfSl9LHJlbmRlcjpmdW5jdGlvbihlKXt2YXIgdD1lLmdldFN0YXRlKCk7
dC5tYW5hZ2VyJiZ0Lm1hbmFnZXIuZGVzdHJveSgpLHQubWFuYWdlcj1udWxsO2Zvcih2YXIgcj1h
cmd1bWVudHMubGVuZ3RoLG49QXJyYXkocj4xP3ItMTowKSxpPTE7aTxyO2krKyluW2ktMV09YXJn
dW1lbnRzW2ldO2EuYXBwbHkodm9pZCAwLFtlXS5jb25jYXQobikpfSxyZXJlbmRlcjphfX0pLGUo
ImVtYmVyLWh0bWxiYXJzL2tleXdvcmRzL2dldCIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvZGVi
dWciLCJlbWJlci1tZXRhbC9zdHJlYW1zL3N0cmVhbSIsImVtYmVyLW1ldGFsL3N0cmVhbXMvdXRp
bHMiLCJlbWJlci1odG1sYmFycy91dGlscy9zdWJzY3JpYmUiLCJlbWJlci1tZXRhbC9wcm9wZXJ0
eV9nZXQiLCJlbWJlci1tZXRhbC9wcm9wZXJ0eV9zZXQiLCJlbWJlci1tZXRhbC9vYnNlcnZlciJd
LGZ1bmN0aW9uKGUsdCxyLG4saSxvLGEscyl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHUoZSx0KXt2
YXIgcj1lLmxhYmVsP2UubGFiZWw6IiIsbj10LmxhYmVsP3QubGFiZWw6IiI7cmV0dXJuIihnZXQg
IityKyIgIituKyIpIn1mdW5jdGlvbiBsKGUsdCl7cmV0dXJuIG4uaXNTdHJlYW0odCk/bmV3IGYo
ZSx0KTplLmdldCh0KX1mdW5jdGlvbiBjKGUsdCxyLG4sbyxhLHMsdSl7aWYobnVsbD09PWUpcmV0
dXJuIGQobik7dmFyIGw9dm9pZCAwO3JldHVybiBlLmxpbmtlZFJlc3VsdD9sPWUubGlua2VkUmVz
dWx0OihsPWQobiksaS5kZWZhdWx0KGUsdCxyLGwpLHQuaG9va3MubGlua1JlbmRlck5vZGUoZSx0
LHIsbnVsbCxuLG8pLGUubGlua2VkUmVzdWx0PWwpLHQuaG9va3MucmFuZ2UoZSx0LHIsbnVsbCxs
LHUpLCEwfXZhciBmPXIuZGVmYXVsdC5leHRlbmQoe2luaXQ6ZnVuY3Rpb24oZSx0KXt2YXIgcj11
KGUsdCk7dGhpcy5sYWJlbD1yLHRoaXMucGF0aD1yLHRoaXMuc291cmNlRGVwPXRoaXMuYWRkTXV0
YWJsZURlcGVuZGVuY3koZSksdGhpcy5rZXlEZXA9dGhpcy5hZGRNdXRhYmxlRGVwZW5kZW5jeSh0
KSx0aGlzLm9ic2VydmVkT2JqZWN0PW51bGwsdGhpcy5vYnNlcnZlZEtleT1udWxsfSxrZXk6ZnVu
Y3Rpb24oKXt2YXIgZT10aGlzLmtleURlcC5nZXRWYWx1ZSgpO2lmKCJzdHJpbmciPT10eXBlb2Yg
ZSlyZXR1cm4gZX0sY29tcHV0ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuc291cmNlRGVwLmdldFZh
bHVlKCksdD10aGlzLmtleSgpO2lmKGUmJnQpcmV0dXJuIG8uZ2V0KGUsdCl9LHNldFZhbHVlOmZ1
bmN0aW9uKGUpe3ZhciB0PXRoaXMuc291cmNlRGVwLmdldFZhbHVlKCkscj10aGlzLmtleSgpO3Qm
JmEuc2V0KHQscixlKX0sX3N1cGVyJHJldmFsaWRhdGU6ci5kZWZhdWx0LnByb3RvdHlwZS5yZXZh
bGlkYXRlLHJldmFsaWRhdGU6ZnVuY3Rpb24oZSl7dGhpcy5fc3VwZXIkcmV2YWxpZGF0ZShlKTt2
YXIgdD10aGlzLnNvdXJjZURlcC5nZXRWYWx1ZSgpLHI9dGhpcy5rZXkoKTt0PT09dGhpcy5vYnNl
cnZlZE9iamVjdCYmcj09PXRoaXMub2JzZXJ2ZWRLZXl8fCh0aGlzLl9jbGVhck9ic2VydmVkT2Jq
ZWN0KCksdCYmIm9iamVjdCI9PXR5cGVvZiB0JiZyJiYocy5hZGRPYnNlcnZlcih0LHIsdGhpcyx0
aGlzLm5vdGlmeSksdGhpcy5vYnNlcnZlZE9iamVjdD10LHRoaXMub2JzZXJ2ZWRLZXk9cikpfSxf
Y2xlYXJPYnNlcnZlZE9iamVjdDpmdW5jdGlvbigpe3RoaXMub2JzZXJ2ZWRPYmplY3QmJihzLnJl
bW92ZU9ic2VydmVyKHRoaXMub2JzZXJ2ZWRPYmplY3QsdGhpcy5vYnNlcnZlZEtleSx0aGlzLHRo
aXMubm90aWZ5KSx0aGlzLm9ic2VydmVkT2JqZWN0PW51bGwsdGhpcy5vYnNlcnZlZEtleT1udWxs
KX19KSxkPWZ1bmN0aW9uKGUpe3ZhciB0PWVbMF0scj1lWzFdLG49bCh0LHIpO3JldHVybiBufTtl
LmRlZmF1bHQ9Y30pLGUoImVtYmVyLWh0bWxiYXJzL2tleXdvcmRzL2lucHV0IixbImV4cG9ydHMi
LCJlbWJlci1tZXRhbC9kZWJ1ZyIsImVtYmVyLW1ldGFsL2Fzc2lnbiJdLGZ1bmN0aW9uKGUsdCxy
KXsidXNlIHN0cmljdCI7ZS5kZWZhdWx0PXtzZXR1cFN0YXRlOmZ1bmN0aW9uKGUsdCxvLGEscyl7
dmFyIHU9dC5ob29rcy5nZXRWYWx1ZShzLnR5cGUpLGw9aVt1XXx8bjtyZXR1cm4gci5kZWZhdWx0
KHt9LGUse2NvbXBvbmVudE5hbWU6bH0pfSxyZW5kZXI6ZnVuY3Rpb24oZSx0LHIsbixpLG8sYSxz
KXt0Lmhvb2tzLmNvbXBvbmVudChlLHQscixlLmdldFN0YXRlKCkuY29tcG9uZW50TmFtZSxuLGks
e2RlZmF1bHQ6byxpbnZlcnNlOmF9LHMpfSxyZXJlbmRlcjpmdW5jdGlvbigpe3RoaXMucmVuZGVy
LmFwcGx5KHRoaXMsYXJndW1lbnRzKX19O3ZhciBuPSItdGV4dC1maWVsZCIsaT17Y2hlY2tib3g6
Ii1jaGVja2JveCJ9fSksZSgiZW1iZXItaHRtbGJhcnMva2V5d29yZHMvbXV0IixbImV4cG9ydHMi
LCJlbWJlci1tZXRhbC9kZWJ1ZyIsImVtYmVyLW1ldGFsL3N5bWJvbCIsImVtYmVyLW1ldGFsL3N0
cmVhbXMvcHJveHktc3RyZWFtIiwiZW1iZXItbWV0YWwvc3RyZWFtcy9zdHJlYW0iLCJlbWJlci1t
ZXRhbC9zdHJlYW1zL3V0aWxzIiwiZW1iZXItdmlld3MvY29tcGF0L2F0dHJzLXByb3h5IiwiZW1i
ZXItcm91dGluZy1odG1sYmFycy9rZXl3b3Jkcy9jbG9zdXJlLWFjdGlvbiJdLGZ1bmN0aW9uKGUs
dCxyLG4saSxvLGEscyl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHUoZSx0LHIsbixpLG8sYSl7aWYo
bnVsbD09PWUpe3ZhciBzPW5bMF07cmV0dXJuIGModC5ob29rcy5nZXRWYWx1ZSxzKX1yZXR1cm4h
MH1mdW5jdGlvbiBsKGUsdCxyLG4saSxvLGEpe2lmKG51bGw9PT1lKXt2YXIgcz1uWzBdO3JldHVy
biBjKHQuaG9va3MuZ2V0VmFsdWUscywhMCl9cmV0dXJuITB9ZnVuY3Rpb24gYyhlLHQscil7aWYo
ciYmIW8uaXNTdHJlYW0odCkpe3ZhciBuPXQ7dD1uZXcgaChuKX1yZXR1cm4gdFtkXT90Om5ldyBw
KHQpfXZhciBmO2UuZGVmYXVsdD11LGUucHJpdmF0ZU11dD1sO3ZhciBkPXIuZGVmYXVsdCgiTVVU
QUJMRV9SRUZFUkVOQ0UiKTtlLk1VVEFCTEVfUkVGRVJFTkNFPWQ7dmFyIHA9bi5kZWZhdWx0LmV4
dGVuZCgoZj17aW5pdDpmdW5jdGlvbihlKXt0aGlzLmxhYmVsPSIobXV0ICIrZS5sYWJlbCsiKSIs
dGhpcy5wYXRoPWUucGF0aCx0aGlzLnNvdXJjZURlcD10aGlzLmFkZE11dGFibGVEZXBlbmRlbmN5
KGUpLHRoaXNbZF09ITB9LGNlbGw6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9ZS52YWx1ZSgpO2lm
KHQmJnRbcy5BQ1RJT05dKXJldHVybiB0O3ZhciByPXt2YWx1ZTp0LHVwZGF0ZTpmdW5jdGlvbih0
KXtlLnNldFZhbHVlKHQpfX07cmV0dXJuIHJbYS5NVVRBQkxFX0NFTExdPSEwLHJ9fSxmW3MuSU5W
T0tFXT1mdW5jdGlvbihlKXt0aGlzLnNldFZhbHVlKGUpfSxmKSksaD1pLmRlZmF1bHQuZXh0ZW5k
KHtpbml0OmZ1bmN0aW9uKGUpe3RoaXMubGl0ZXJhbD1lLHRoaXMubGFiZWw9IihsaXRlcmFsICIr
ZSsiKSJ9LGNvbXB1dGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5saXRlcmFsfSxzZXRWYWx1ZTpm
dW5jdGlvbihlKXt0aGlzLmxpdGVyYWw9ZSx0aGlzLm5vdGlmeSgpfX0pfSksZSgiZW1iZXItaHRt
bGJhcnMva2V5d29yZHMvb3V0bGV0IixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9kZWJ1ZyIsImVt
YmVyLW1ldGFsL3Byb3BlcnR5X2dldCIsImVtYmVyLWh0bWxiYXJzL25vZGUtbWFuYWdlcnMvdmll
dy1ub2RlLW1hbmFnZXIiLCJlbWJlci1odG1sYmFycy90ZW1wbGF0ZXMvdG9wLWxldmVsLXZpZXci
LCJlbWJlci1tZXRhbC9mZWF0dXJlcyJdLGZ1bmN0aW9uKGUsdCxyLG4saSxvKXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gYShlKXtyZXR1cm4hZXx8IWUucmVuZGVyLlZpZXdDbGFzcyYmIWUucmVuZGVy
LnRlbXBsYXRlfWZ1bmN0aW9uIHMoZSx0KXtpZighZSYmIXQpcmV0dXJuITA7aWYoIWV8fCF0KXJl
dHVybiExO2U9ZS5yZW5kZXIsdD10LnJlbmRlcjtmb3IodmFyIHIgaW4gZSlpZihlLmhhc093blBy
b3BlcnR5KHIpJiZlW3JdIT09dFtyXSYmIm5hbWUiIT09cilyZXR1cm4hMTtyZXR1cm4hMH1pLmRl
ZmF1bHQubWV0YS5yZXZpc2lvbj0iRW1iZXJAMi42LjIiLGUuZGVmYXVsdD17d2lsbFJlbmRlcjpm
dW5jdGlvbihlLHQpe3Qudmlldy5vd25lclZpZXcuX291dGxldHMucHVzaChlKX0sc2V0dXBTdGF0
ZTpmdW5jdGlvbihlLHQscixuLGkpe3ZhciBvPXQub3V0bGV0U3RhdGUsYT10Lmhvb2tzLmdldFZh
bHVlLHM9YShuWzBdKXx8Im1haW4iLHU9b1tzXTtyZXR1cm57b3V0bGV0U3RhdGU6dSxoYXNQYXJl
bnRPdXRsZXQ6dC5oYXNQYXJlbnRPdXRsZXQsbWFuYWdlcjplLm1hbmFnZXJ9fSxjaGlsZEVudjpm
dW5jdGlvbihlLHQpe3ZhciByPWUub3V0bGV0U3RhdGUsbj1yJiZyLnJlbmRlcixpPW4mJm4udGVt
cGxhdGUmJm4udGVtcGxhdGUubWV0YTtyZXR1cm4gdC5jaGlsZFdpdGhPdXRsZXRTdGF0ZShyJiZy
Lm91dGxldHMsITAsaSl9LGlzU3RhYmxlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHMoZS5vdXRsZXRT
dGF0ZSx0Lm91dGxldFN0YXRlKX0saXNFbXB0eTpmdW5jdGlvbihlKXtyZXR1cm4gYShlLm91dGxl
dFN0YXRlKX0scmVuZGVyOmZ1bmN0aW9uKGUsdCxpLG8sYSxzLHUsbCl7dmFyIGM9ZS5nZXRTdGF0
ZSgpLGY9dC52aWV3LGQ9Yy5vdXRsZXRTdGF0ZSxwPWQucmVuZGVyLGg9dC5vd25lci5sb29rdXAo
ImFwcGxpY2F0aW9uOm1haW4iKSxtPShyLmdldChoLCJMT0dfVklFV19MT09LVVBTIiksZC5yZW5k
ZXIuVmlld0NsYXNzKTtjLmhhc1BhcmVudE91dGxldHx8bXx8KG09dC5vd25lci5fbG9va3VwRmFj
dG9yeSgidmlldzp0b3BsZXZlbCIpKTt2YXIgdixiLGc9e307dj8oYj17Y29tcG9uZW50OnZ9LGc9
cC5hdHRycyk6KGI9e2NvbXBvbmVudDptLHNlbGY6cC5jb250cm9sbGVyLGNyZWF0ZU9wdGlvbnM6
e2NvbnRyb2xsZXI6cC5jb250cm9sbGVyfX0scz1zfHxwLnRlbXBsYXRlJiZwLnRlbXBsYXRlLnJh
dyksYy5tYW5hZ2VyJiYoYy5tYW5hZ2VyLmRlc3Ryb3koKSxjLm1hbmFnZXI9bnVsbCk7dmFyIHk9
bi5kZWZhdWx0LmNyZWF0ZShlLHQsZyxiLGYsbnVsbCxudWxsLHMpO2MubWFuYWdlcj15LHkucmVu
ZGVyKHQsYSxsKX19fSksZSgiZW1iZXItaHRtbGJhcnMva2V5d29yZHMvcGFydGlhbCIsWyJleHBv
cnRzIiwiZW1iZXItdmlld3Mvc3lzdGVtL2xvb2t1cF9wYXJ0aWFsIiwiaHRtbGJhcnMtcnVudGlt
ZSJdLGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7ZS5kZWZhdWx0PXtzZXR1cFN0YXRlOmZ1
bmN0aW9uKGUsdCxyLG4saSl7cmV0dXJue3BhcnRpYWxOYW1lOnQuaG9va3MuZ2V0VmFsdWUoblsw
XSl9fSxyZW5kZXI6ZnVuY3Rpb24oZSxuLGksbyxhLHMsdSxsKXt2YXIgYz1lLmdldFN0YXRlKCk7
aWYoIWMucGFydGlhbE5hbWUpcmV0dXJuITA7dmFyIGY9dC5kZWZhdWx0KG4sYy5wYXJ0aWFsTmFt
ZSk7cmV0dXJuIWZ8fHZvaWQgci5pbnRlcm5hbC5ob3N0QmxvY2soZSxuLGksZi5yYXcsbnVsbCxu
dWxsLGwsZnVuY3Rpb24oZSl7ZS50ZW1wbGF0ZXMudGVtcGxhdGUueWllbGQoKX0pfX19KSxlKCJl
bWJlci1odG1sYmFycy9rZXl3b3Jkcy9yZWFkb25seSIsWyJleHBvcnRzIiwiZW1iZXItaHRtbGJh
cnMva2V5d29yZHMvbXV0Il0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihl
LHIsbixpLG8sYSxzKXtpZihudWxsPT09ZSl7dmFyIHU9aVswXTtyZXR1cm4gdSYmdVt0Lk1VVEFC
TEVfUkVGRVJFTkNFXT91LnNvdXJjZURlcC5kZXBlbmRlZTp1fXJldHVybiEwfWUuZGVmYXVsdD1y
fSksZSgiZW1iZXItaHRtbGJhcnMva2V5d29yZHMvdGV4dGFyZWEiLFsiZXhwb3J0cyJdLGZ1bmN0
aW9uKGUpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB0KGUsdCxyLG4saSxvLGEscyl7cmV0dXJuIHQu
aG9va3MuY29tcG9uZW50KGUsdCxyLCItdGV4dC1hcmVhIixuLGkse2RlZmF1bHQ6byxpbnZlcnNl
OmF9LHMpLCEwfWUuZGVmYXVsdD10fSksZSgiZW1iZXItaHRtbGJhcnMva2V5d29yZHMvdW5ib3Vu
ZCIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvZGVidWciLCJlbWJlci1tZXRhbC9zdHJlYW1zL3N0
cmVhbSIsImVtYmVyLW1ldGFsL3N0cmVhbXMvdXRpbHMiXSxmdW5jdGlvbihlLHQscixuKXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gaShlLHQscixuLGksYSxzLHUpe2lmKG51bGw9PT1lKXJldHVybiBu
ZXcgbyhuWzBdKTt2YXIgbD12b2lkIDA7cmV0dXJuIGUubGlua2VkUmVzdWx0P2w9ZS5saW5rZWRS
ZXN1bHQ6KGw9bmV3IG8oblswXSksZS5saW5rZWRSZXN1bHQ9bCksdC5ob29rcy5yYW5nZShlLHQs
cixudWxsLGwsdSksITB9ZS5kZWZhdWx0PWk7dmFyIG89ci5kZWZhdWx0LmV4dGVuZCh7aW5pdDpm
dW5jdGlvbihlKXt0aGlzLmxhYmVsPSIodm9sYXRpbGUgIitlLmxhYmVsKyIpIix0aGlzLnNvdXJj
ZT1lLHRoaXMuYWRkRGVwZW5kZW5jeShlKX0sdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gbi5yZWFk
KHRoaXMuc291cmNlKX0sbm90aWZ5OmZ1bmN0aW9uKCl7fX0pfSksZSgiZW1iZXItaHRtbGJhcnMv
a2V5d29yZHMvdmlldyIsWyJleHBvcnRzIiwiZW1iZXItdmlld3Mvc3RyZWFtcy91dGlscyIsImVt
YmVyLXZpZXdzL3ZpZXdzL3ZpZXciLCJlbWJlci1odG1sYmFycy9ub2RlLW1hbmFnZXJzL3ZpZXct
bm9kZS1tYW5hZ2VyIl0sZnVuY3Rpb24oZSx0LHIsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGko
ZSxuKXt2YXIgaTtyZXR1cm4gaT1lP3QucmVhZFZpZXdGYWN0b3J5KGUsbik6bj9uLl9sb29rdXBG
YWN0b3J5KCJ2aWV3OnRvcGxldmVsIik6ci5kZWZhdWx0fWZ1bmN0aW9uIG8oZSx0LHIpe3ZhciBu
PXt9O2Zvcih2YXIgaSBpbiBlKWk9PT10P25bcl09ZVtpXTpuW2ldPWVbaV07cmV0dXJuIG59ZS5k
ZWZhdWx0PXtzZXR1cFN0YXRlOmZ1bmN0aW9uKGUsdCxyLG4sbyl7dmFyIGE9dC5ob29rcy5nZXRW
YWx1ZSxzPWEoci5nZXRTZWxmKCkpLHU9ZS52aWV3Q2xhc3NPckluc3RhbmNlO3V8fCh1PWkoYShu
WzBdKSx0Lm93bmVyKSk7dmFyIGw9ci5oYXNMb2NhbCgidmlldyIpP251bGw6YShyLmdldFNlbGYo
KSk7cmV0dXJue21hbmFnZXI6ZS5tYW5hZ2VyLHBhcmVudFZpZXc6dC52aWV3LGNvbnRyb2xsZXI6
bCx0YXJnZXRPYmplY3Q6cyx2aWV3Q2xhc3NPckluc3RhbmNlOnV9fSxyZXJlbmRlcjpmdW5jdGlv
bihlLHQscixuLGksbyxhLHMpe2lmKE9iamVjdC5rZXlzKGkpLmxlbmd0aClyZXR1cm4gZS5nZXRT
dGF0ZSgpLm1hbmFnZXIucmVyZW5kZXIodCxpLHMsITApfSxyZW5kZXI6ZnVuY3Rpb24oZSx0LHIs
aSxhLHMsdSxsKXthLnRhZyYmKGE9byhhLCJ0YWciLCJ0YWdOYW1lIikpLGEuY2xhc3NOYW1lQmlu
ZGluZ3MmJihhLmNsYXNzTmFtZUJpbmRpbmdzPWEuY2xhc3NOYW1lQmluZGluZ3Muc3BsaXQoIiAi
KSk7dmFyIGM9ZS5nZXRTdGF0ZSgpLGY9Yy5wYXJlbnRWaWV3LGQ9e2NvbXBvbmVudDpjLnZpZXdD
bGFzc09ySW5zdGFuY2UsbGF5b3V0Om51bGx9O2QuY3JlYXRlT3B0aW9ucz17fSxjLmNvbnRyb2xs
ZXImJihkLmNyZWF0ZU9wdGlvbnMuX2NvbnRyb2xsZXI9Yy5jb250cm9sbGVyKSxjLnRhcmdldE9i
amVjdCYmKGQuY3JlYXRlT3B0aW9ucy5fdGFyZ2V0T2JqZWN0PWMudGFyZ2V0T2JqZWN0KSxjLm1h
bmFnZXImJihjLm1hbmFnZXIuZGVzdHJveSgpLGMubWFuYWdlcj1udWxsKTt2YXIgcD1uLmRlZmF1
bHQuY3JlYXRlKGUsdCxhLGQsZixudWxsLHIscyk7Yy5tYW5hZ2VyPXAscC5yZW5kZXIodCxhLGwp
fX19KSxlKCJlbWJlci1odG1sYmFycy9rZXl3b3Jkcy93aXRoIixbImV4cG9ydHMiLCJlbWJlci1t
ZXRhbC9kZWJ1ZyIsImh0bWxiYXJzLXJ1bnRpbWUiXSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJp
Y3QiO2UuZGVmYXVsdD17aXNTdGFibGU6ZnVuY3Rpb24oKXtyZXR1cm4hMH0saXNFbXB0eTpmdW5j
dGlvbihlKXtyZXR1cm4hMX0scmVuZGVyOmZ1bmN0aW9uKGUsdCxuLGksbyxhLHMsdSl7ci5pbnRl
cm5hbC5jb250aW51ZUJsb2NrKGUsdCxuLCJ3aXRoIixpLG8sYSxzLHUpfSxyZXJlbmRlcjpmdW5j
dGlvbihlLHQsbixpLG8sYSxzLHUpe3IuaW50ZXJuYWwuY29udGludWVCbG9jayhlLHQsbiwid2l0
aCIsaSxvLGEscyx1KX19fSksZSgiZW1iZXItaHRtbGJhcnMva2V5d29yZHMveWllbGQiLFsiZXhw
b3J0cyJdLGZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB0KGUsdCxyLG4saSxvLGEs
cyl7dmFyIHU9dC5ob29rcy5nZXRWYWx1ZShpLnRvKXx8ImRlZmF1bHQiLGw9ci5nZXRCbG9jayh1
KTtyZXR1cm4gbCYmbC5pbnZva2UodCxuLGkuc2VsZixlLHIscyksITB9ZS5kZWZhdWx0PXR9KSxl
KCJlbWJlci1odG1sYmFycy9tb3JwaHMvYXR0ci1tb3JwaCIsWyJleHBvcnRzIiwiZW1iZXItbWV0
YWwvZGVidWciLCJkb20taGVscGVyIiwiZW1iZXItbWV0YWwvaXNfbm9uZSJdLGZ1bmN0aW9uKGUs
dCxyLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUsdCl7fXZhciBvPXIuZGVmYXVsdC5wcm90
b3R5cGUuQXR0ck1vcnBoQ2xhc3MsYT0iQmluZGluZyBzdHlsZSBhdHRyaWJ1dGVzIG1heSBpbnRy
b2R1Y2UgY3Jvc3Mtc2l0ZSBzY3JpcHRpbmcgdnVsbmVyYWJpbGl0aWVzOyBwbGVhc2UgZW5zdXJl
IHRoYXQgdmFsdWVzIGJlaW5nIGJvdW5kIGFyZSBwcm9wZXJseSBlc2NhcGVkLiBGb3IgbW9yZSBp
bmZvcm1hdGlvbiwgaW5jbHVkaW5nIGhvdyB0byBkaXNhYmxlIHRoaXMgd2FybmluZywgc2VlIGh0
dHA6Ly9lbWJlcmpzLmNvbS9kZXByZWNhdGlvbnMvdjEueC8jdG9jX2JpbmRpbmctc3R5bGUtYXR0
cmlidXRlcy4iO2Uuc3R5bGVXYXJuaW5nPWE7dmFyIHM9by5wcm90b3R5cGU7cy5kaWRJbml0PWZ1
bmN0aW9uKCl7dGhpcy5zdHJlYW1VbnN1YnNjcmliZXJzPW51bGx9LHMud2lsbFNldENvbnRlbnQ9
ZnVuY3Rpb24oZSl7aSh0aGlzLGUpfSxlLmRlZmF1bHQ9b30pLGUoImVtYmVyLWh0bWxiYXJzL21v
cnBocy9tb3JwaCIsWyJleHBvcnRzIiwiZG9tLWhlbHBlciIsImVtYmVyLW1ldGFsL2RlYnVnIl0s
ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUsdCl7dGhpcy5IVE1MQmFy
c01vcnBoJGNvbnN0cnVjdG9yKGUsdCksdGhpcy5lbWJlclZpZXc9bnVsbCx0aGlzLmVtYmVyVG9E
ZXN0cm95PW51bGwsdGhpcy5zdHJlYW1VbnN1YnNjcmliZXJzPW51bGwsdGhpcy5ndWlkPW8rKyx0
aGlzLnNob3VsZFJlY2VpdmVBdHRycz0hMX12YXIgaT10LmRlZmF1bHQucHJvdG90eXBlLk1vcnBo
Q2xhc3Msbz0xLGE9bi5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShpLnByb3RvdHlwZSk7YS5IVE1M
QmFyc01vcnBoJGNvbnN0cnVjdG9yPWksYS5IVE1MQmFyc01vcnBoJGNsZWFyPWkucHJvdG90eXBl
LmNsZWFyLGEuYWRkRGVzdHJ1Y3Rpb249ZnVuY3Rpb24oZSl7dGhpcy5lbWJlclRvRGVzdHJveT10
aGlzLmVtYmVyVG9EZXN0cm95fHxbXSx0aGlzLmVtYmVyVG9EZXN0cm95LnB1c2goZSl9LGEuY2xl
YW51cD1mdW5jdGlvbigpe3ZhciBlPXRoaXMuZW1iZXJWaWV3O2lmKGUpe3ZhciB0PWUucGFyZW50
Vmlldzt0JiZlLm93bmVyVmlldy5fZGVzdHJveWluZ1N1YnRyZWVGb3JWaWV3PT09dCYmdC5yZW1v
dmVDaGlsZChlKX12YXIgcj10aGlzLmVtYmVyVG9EZXN0cm95O2lmKHIpe2Zvcih2YXIgbj0wLGk9
ci5sZW5ndGg7bjxpO24rKylyW25dLmRlc3Ryb3koKTt0aGlzLmVtYmVyVG9EZXN0cm95PW51bGx9
fSxhLmRpZFJlbmRlcj1mdW5jdGlvbihlLHQpe2UucmVuZGVyZWROb2Rlcy5hZGQodGhpcyl9LGUu
ZGVmYXVsdD1ufSksZSgiZW1iZXItaHRtbGJhcnMvbm9kZS1tYW5hZ2Vycy9jb21wb25lbnQtbm9k
ZS1tYW5hZ2VyIixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9kZWJ1ZyIsImVtYmVyLXZpZXdzL3N5
c3RlbS9idWlsZC1jb21wb25lbnQtdGVtcGxhdGUiLCJlbWJlci1odG1sYmFycy9ob29rcy9nZXQt
Y2VsbC1vci12YWx1ZSIsImVtYmVyLW1ldGFsL3Byb3BlcnR5X2dldCIsImVtYmVyLW1ldGFsL3By
b3BlcnR5X3NldCIsImVtYmVyLXZpZXdzL2NvbXBhdC9hdHRycy1wcm94eSIsImVtYmVyLWh0bWxi
YXJzL3N5c3RlbS9pbnN0cnVtZW50YXRpb24tc3VwcG9ydCIsImVtYmVyLXZpZXdzL2NvbXBvbmVu
dHMvY29tcG9uZW50IiwiZW1iZXItaHRtbGJhcnMvZ2xpbW1lci1jb21wb25lbnQiLCJlbWJlci1o
dG1sYmFycy91dGlscy9leHRyYWN0LXBvc2l0aW9uYWwtcGFyYW1zIiwiZW1iZXItbWV0YWwvc3lt
Ym9sIiwiY29udGFpbmVyL293bmVyIiwiZW1iZXItaHRtbGJhcnMvaG9va3MvZ2V0LXZhbHVlIl0s
ZnVuY3Rpb24oZSx0LHIsbixpLG8sYSxzLHUsbCxjLGYsZCxwKXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gaChlLHQscixuLGksbyxhKXt0aGlzLmNvbXBvbmVudD1lLHRoaXMuaXNBbmdsZUJyYWNrZXQ9
dCx0aGlzLnNjb3BlPXIsdGhpcy5yZW5kZXJOb2RlPW4sdGhpcy5hdHRycz1pLHRoaXMuYmxvY2s9
byx0aGlzLmV4cGVjdEVsZW1lbnQ9YX1mdW5jdGlvbiBtKGUsdCxyLG4saSl7bj9pLnRhZ05hbWU9
dDplLnRhZ05hbWUmJihpLnRhZ05hbWU9cC5kZWZhdWx0KGUudGFnTmFtZSkpfWZ1bmN0aW9uIHYo
ZSx0KXtlLmlkJiYodC5lbGVtZW50SWQ9cC5kZWZhdWx0KGUuaWQpKSxlLl9kZWZhdWx0VGFnTmFt
ZSYmKHQuX2RlZmF1bHRUYWdOYW1lPXAuZGVmYXVsdChlLl9kZWZhdWx0VGFnTmFtZSkpLGUudmll
d05hbWUmJih0LnZpZXdOYW1lPXAuZGVmYXVsdChlLnZpZXdOYW1lKSl9ZnVuY3Rpb24gYihlKXtm
b3IodmFyIHQ9ZTt0Oyl7aWYoMT09PXQubm9kZVR5cGUpcmV0dXJuIHQ7dD1lLm5leHRTaWJsaW5n
fX1mdW5jdGlvbiBnKGUsdCxyLG4saSl7dmFyIGE9YXJndW1lbnRzLmxlbmd0aDw9NXx8dm9pZCAw
PT09YXJndW1lbnRzWzVdP3t9OmFyZ3VtZW50c1s1XTt0PyhyLmF0dHJzPXkoYSksci5faXNBbmds
ZUJyYWNrZXQ9ITApOncoYSxyKSxkLnNldE93bmVyKHIsaS5vd25lciksci5yZW5kZXJlcj1yLnBh
cmVudFZpZXc/ci5wYXJlbnRWaWV3LnJlbmRlcmVyOmkub3duZXIubG9va3VwKCJyZW5kZXJlcjot
ZG9tIiksci5fdmlld1JlZ2lzdHJ5PXIucGFyZW50Vmlldz9yLnBhcmVudFZpZXcuX3ZpZXdSZWdp
c3RyeTppLm93bmVyLmxvb2t1cCgiLXZpZXctcmVnaXN0cnk6bWFpbiIpO3ZhciBzPWUuY3JlYXRl
KHIpO3JldHVybiByLnBhcmVudFZpZXcmJihyLnBhcmVudFZpZXcuYXBwZW5kQ2hpbGQocyksci52
aWV3TmFtZSYmby5zZXQoci5wYXJlbnRWaWV3LHIudmlld05hbWUscykpLHMuX3JlbmRlck5vZGU9
bixuLmVtYmVyVmlldz1zLG4uYnVpbGRDaGlsZEVudj14LHN9ZnVuY3Rpb24geShlKXt2YXIgdD17
fTtmb3IodmFyIHIgaW4gZSl0W3JdPW4uZGVmYXVsdChlW3JdKTtyZXR1cm4gdH1mdW5jdGlvbiBf
KGUpe3ZhciB0PXt9O2Zvcih2YXIgciBpbiBlKXRbcl09cC5kZWZhdWx0KGVbcl0pO3JldHVybiB0
fWZ1bmN0aW9uIHcoZSx0KXt2YXIgcj17fTtmb3IodmFyIGkgaW4gZSl7dmFyIG89bi5kZWZhdWx0
KGVbaV0pO3JbaV09bywiYXR0cnMiIT09aSYmKG8mJm9bYS5NVVRBQkxFX0NFTExdJiYobz1vLnZh
bHVlKSx0W2ldPW8pfXJldHVybiB0LmF0dHJzPXJ9ZnVuY3Rpb24geChlLHQpe3JldHVybiB0LmNo
aWxkV2l0aFZpZXcodGhpcy5lbWJlclZpZXcpfWUuY3JlYXRlQ29tcG9uZW50PWcsZS50YWtlTGVn
YWN5U25hcHNob3Q9Xzt2YXIgaz1mLmRlZmF1bHQoIkhBU19CTE9DSyIpO2UuSEFTX0JMT0NLPWss
ZS5kZWZhdWx0PWgsaC5jcmVhdGU9ZnVuY3Rpb24oZSx0LG4pe3ZhciBvLGE9bi50YWdOYW1lLHM9
bi5wYXJhbXMsZj1uLmF0dHJzLGQ9dm9pZCAwPT09Zj97fTpmLGI9bi5wYXJlbnRWaWV3LHk9bi5w
YXJlbnRTY29wZSxfPW4uaXNBbmdsZUJyYWNrZXQsdz1uLmNvbXBvbmVudCx4PW4ubGF5b3V0LEM9
bi50ZW1wbGF0ZXM7dz13fHwoXz9sLmRlZmF1bHQ6dS5kZWZhdWx0KTt2YXIgRT0obz17cGFyZW50
VmlldzpifSxvW2tdPSEhQy5kZWZhdWx0LG8pO20oZCxhLHcsXyxFKSx2KGQsRSkseS5oYXNMb2Nh
bCgiY29udHJvbGxlciIpP0UuX2NvbnRyb2xsZXI9cC5kZWZhdWx0KHkuZ2V0TG9jYWwoImNvbnRy
b2xsZXIiKSk6RS5fdGFyZ2V0T2JqZWN0PXAuZGVmYXVsdCh5LmdldFNlbGYoKSksYy5kZWZhdWx0
KGUsdyxzLGQpLHc9Zyh3LF8sRSxlLHQsZCkseHx8KHg9aS5nZXQodywibGF5b3V0IikpO3ZhciBP
PXIuZGVmYXVsdCh7bGF5b3V0OngsY29tcG9uZW50OncsaXNBbmdsZUJyYWNrZXQ6X30sZCx7dGVt
cGxhdGVzOkMsc2NvcGU6eX0pO3JldHVybiBuZXcgaCh3LF8seSxlLGQsTy5ibG9jayxPLmNyZWF0
ZWRFbGVtZW50KX0saC5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcy5j
b21wb25lbnQ7cmV0dXJuIHMuaW5zdHJ1bWVudChyLGZ1bmN0aW9uKCl7dmFyIG49dGhpcy5ibG9j
ayYmdGhpcy5ibG9jay50ZW1wbGF0ZS5tZXRhLGk9ZS5jaGlsZFdpdGhWaWV3KHIsbik7aS5yZW5k
ZXJlci5jb21wb25lbnRXaWxsUmVuZGVyKHIpLGkucmVuZGVyZWRWaWV3cy5wdXNoKHIuZWxlbWVu
dElkKSx0aGlzLmJsb2NrJiZ0aGlzLmJsb2NrLmludm9rZShpLFtdLHZvaWQgMCx0aGlzLnJlbmRl
ck5vZGUsdGhpcy5zY29wZSx0KTt2YXIgbz12b2lkIDA7KHRoaXMuZXhwZWN0RWxlbWVudHx8ci5p
c0dsaW1tZXJDb21wb25lbnQpJiYobz10aGlzLnJlbmRlck5vZGUuZmlyc3ROb2RlLG8mJjEhPT1v
Lm5vZGVUeXBlJiYobz1iKG8pKSksaS5kZXN0aW5lZEZvckRPTSYmKGkucmVuZGVyZXIuZGlkQ3Jl
YXRlRWxlbWVudChyLG8pLGkucmVuZGVyZXIud2lsbEluc2VydEVsZW1lbnQocixvKSxpLmxpZmVj
eWNsZUhvb2tzLnB1c2goe3R5cGU6ImRpZEluc2VydEVsZW1lbnQiLHZpZXc6cn0pKX0sdGhpcyl9
LGgucHJvdG90eXBlLnJlcmVuZGVyPWZ1bmN0aW9uKGUsdCxyKXt2YXIgbj10aGlzLmNvbXBvbmVu
dDtyZXR1cm4gcy5pbnN0cnVtZW50KG4sZnVuY3Rpb24oKXt2YXIgaT1lLmNoaWxkV2l0aFZpZXco
biksbz15KHQpO3JldHVybiBuLl9yZW5kZXJOb2RlLnNob3VsZFJlY2VpdmVBdHRycyYmKG4uX3By
b3BhZ2F0ZUF0dHJzVG9UaGlzJiZuLl9wcm9wYWdhdGVBdHRyc1RvVGhpcyhfKHQpKSxpLnJlbmRl
cmVyLmNvbXBvbmVudFVwZGF0ZUF0dHJzKG4sbyksbi5fcmVuZGVyTm9kZS5zaG91bGRSZWNlaXZl
QXR0cnM9ITEpLGkucmVuZGVyZXIuY29tcG9uZW50V2lsbFVwZGF0ZShuLG8pLGkucmVuZGVyZXIu
Y29tcG9uZW50V2lsbFJlbmRlcihuKSxpLnJlbmRlcmVkVmlld3MucHVzaChuLmVsZW1lbnRJZCks
dGhpcy5ibG9jayYmdGhpcy5ibG9jay5pbnZva2UoaSxbXSx2b2lkIDAsdGhpcy5yZW5kZXJOb2Rl
LHRoaXMuc2NvcGUsciksaS5saWZlY3ljbGVIb29rcy5wdXNoKHt0eXBlOiJkaWRVcGRhdGUiLHZp
ZXc6bn0pLGl9LHRoaXMpfSxoLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dmFyIGU9dGhp
cy5jb21wb25lbnQ7ZS5fcmVuZGVyTm9kZT1udWxsLGUuZGVzdHJveSgpfX0pLGUoImVtYmVyLWh0
bWxiYXJzL25vZGUtbWFuYWdlcnMvdmlldy1ub2RlLW1hbmFnZXIiLFsiZXhwb3J0cyIsImVtYmVy
LW1ldGFsL2Fzc2lnbiIsImVtYmVyLW1ldGFsL2RlYnVnIiwiZW1iZXItdmlld3Mvc3lzdGVtL2J1
aWxkLWNvbXBvbmVudC10ZW1wbGF0ZSIsImVtYmVyLW1ldGFsL3Byb3BlcnR5X2dldCIsImVtYmVy
LW1ldGFsL3Byb3BlcnR5X3NldCIsImVtYmVyLW1ldGFsL3NldF9wcm9wZXJ0aWVzIiwiZW1iZXIt
dmlld3Mvdmlld3MvdmlldyIsImVtYmVyLXZpZXdzL2NvbXBhdC9hdHRycy1wcm94eSIsImVtYmVy
LWh0bWxiYXJzL2hvb2tzL2dldC1jZWxsLW9yLXZhbHVlIiwiZW1iZXItaHRtbGJhcnMvc3lzdGVt
L2luc3RydW1lbnRhdGlvbi1zdXBwb3J0IiwiZW1iZXItaHRtbGJhcnMvbm9kZS1tYW5hZ2Vycy9j
b21wb25lbnQtbm9kZS1tYW5hZ2VyIiwiY29udGFpbmVyL293bmVyIiwiZW1iZXItaHRtbGJhcnMv
aG9va3MvZ2V0LXZhbHVlIl0sZnVuY3Rpb24oZSx0LHIsbixpLG8sYSxzLHUsbCxjLGYsZCxwKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gaChlLHQscixuLGkpe3RoaXMuY29tcG9uZW50PWUsdGhpcy5z
Y29wZT10LHRoaXMucmVuZGVyTm9kZT1yLHRoaXMuYmxvY2s9bix0aGlzLmV4cGVjdEVsZW1lbnQ9
aX1mdW5jdGlvbiBtKGUpe3JldHVybiBlLmlzQ29tcG9uZW50P251bGw6aS5nZXQoZSwidGVtcGxh
dGUiKX1mdW5jdGlvbiB2KGUscixuLGksdSl7dmFyIGw9YXJndW1lbnRzLmxlbmd0aDw9NXx8dm9p
ZCAwPT09YXJndW1lbnRzWzVdP3t9OmFyZ3VtZW50c1s1XSxjPWIobCkscD10LmRlZmF1bHQoe30s
ciksaD1zLmRlZmF1bHQucHJvdG8oKS5jb250cm9sbGVyLG09ImNvbnRyb2xsZXIiaW4gbHx8ImNv
bnRyb2xsZXIiaW4gcDtpZighcC5vd25lclZpZXcmJnIucGFyZW50VmlldyYmKHAub3duZXJWaWV3
PXIucGFyZW50Vmlldy5vd25lclZpZXcpLHAuYXR0cnM9YyxlLmNyZWF0ZSl7dmFyIHY9ZS5wcm90
bygpO24mJnQuZGVmYXVsdChwLG4pLGcocCxjKTt2YXIgeT11Lm93bmVyO2Quc2V0T3duZXIocCx5
KSxwLnJlbmRlcmVyPXIucGFyZW50Vmlldz9yLnBhcmVudFZpZXcucmVuZGVyZXI6eSYmeS5sb29r
dXAoInJlbmRlcmVyOi1kb20iKSxwLl92aWV3UmVnaXN0cnk9ci5wYXJlbnRWaWV3P3IucGFyZW50
Vmlldy5fdmlld1JlZ2lzdHJ5OnkmJnkubG9va3VwKCItdmlldy1yZWdpc3RyeTptYWluIiksKHYu
Y29udHJvbGxlciE9PWh8fG0pJiZkZWxldGUgcC5fY29udGV4dCxlPWUuY3JlYXRlKHApfWVsc2Ug
dS5yZW5kZXJlci5jb21wb25lbnRVcGRhdGVBdHRycyhlLGMpLGEuZGVmYXVsdChlLHApLGUuX3By
b3BhZ2F0ZUF0dHJzVG9UaGlzJiZlLl9wcm9wYWdhdGVBdHRyc1RvVGhpcyhmLnRha2VMZWdhY3lT
bmFwc2hvdChsKSk7cmV0dXJuIHIucGFyZW50VmlldyYmKHIucGFyZW50Vmlldy5hcHBlbmRDaGls
ZChlKSxyLnZpZXdOYW1lJiZvLnNldChyLnBhcmVudFZpZXcsci52aWV3TmFtZSxlKSksZS5fcmVu
ZGVyTm9kZT1pLGkuZW1iZXJWaWV3PWUsZX1mdW5jdGlvbiBiKGUpe3ZhciB0PXt9O2Zvcih2YXIg
ciBpbiBlKXRbcl09bC5kZWZhdWx0KGVbcl0pO3JldHVybiB0fWZ1bmN0aW9uIGcoZSx0KXtmb3Io
dmFyIHIgaW4gdClpZih0Lmhhc093blByb3BlcnR5KHIpJiYiYXR0cnMiIT09cil7dmFyIG49dFty
XTtuJiZuW3UuTVVUQUJMRV9DRUxMXT9lW3JdPW4udmFsdWU6ZVtyXT1ufXJldHVybiBlfWUuY3Jl
YXRlT3JVcGRhdGVDb21wb25lbnQ9dixlLmRlZmF1bHQ9aCxoLmNyZWF0ZT1mdW5jdGlvbihlLHQs
cixvLGEscyx1LGwpe3ZhciBjLGY9e2xheW91dDpvLmxheW91dH07aWYoby5jb21wb25lbnQpe3Zh
ciBkPXtwYXJlbnRWaWV3OmF9O2lmKHImJnIuaWQmJihkLmVsZW1lbnRJZD1wLmRlZmF1bHQoci5p
ZCkpLHImJnIudGFnTmFtZSYmKGQudGFnTmFtZT1wLmRlZmF1bHQoci50YWdOYW1lKSksciYmci5f
ZGVmYXVsdFRhZ05hbWUmJihkLl9kZWZhdWx0VGFnTmFtZT1wLmRlZmF1bHQoci5fZGVmYXVsdFRh
Z05hbWUpKSxyJiZyLnZpZXdOYW1lJiYoZC52aWV3TmFtZT1wLmRlZmF1bHQoci52aWV3TmFtZSkp
LG8uY29tcG9uZW50LmNyZWF0ZSYmdSl7dmFyIGI9dS5nZXRTZWxmKCk7YiYmKGQuX2NvbnRleHQ9
cC5kZWZhdWx0KHUuZ2V0U2VsZigpKSl9by5zZWxmJiYoZC5fY29udGV4dD1wLmRlZmF1bHQoby5z
ZWxmKSksYz1mLmNvbXBvbmVudD12KG8uY29tcG9uZW50LGQsby5jcmVhdGVPcHRpb25zLGUsdCxy
KTt2YXIgZz1pLmdldChjLCJsYXlvdXQiKTtnP2YubGF5b3V0PWc6Zi5sYXlvdXQ9bShjKXx8Zi5s
YXlvdXQsZS5lbWJlclZpZXc9Y312YXIgeT1uLmRlZmF1bHQoZixyLHt0ZW1wbGF0ZXM6e2RlZmF1
bHQ6bH0sc2NvcGU6dSxzZWxmOm8uc2VsZn0pO3JldHVybiBuZXcgaChjLHUsZSx5LmJsb2NrLHku
Y3JlYXRlZEVsZW1lbnQpfSxoLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oZSx0LHIpe3ZhciBu
PXRoaXMuY29tcG9uZW50O3JldHVybiBjLmluc3RydW1lbnQobixmdW5jdGlvbigpe3ZhciB0PWU7
aWYobil0PWUuY2hpbGRXaXRoVmlldyhuKTtlbHNle3ZhciBpPXRoaXMuYmxvY2smJnRoaXMuYmxv
Y2sudGVtcGxhdGUubWV0YTt0PWUuY2hpbGRXaXRoTWV0YShpKX1pZihuJiYoZS5yZW5kZXJlci53
aWxsUmVuZGVyKG4pLGUucmVuZGVyZWRWaWV3cy5wdXNoKG4uZWxlbWVudElkKSksdGhpcy5ibG9j
ayYmdGhpcy5ibG9jay5pbnZva2UodCxbXSx2b2lkIDAsdGhpcy5yZW5kZXJOb2RlLHRoaXMuc2Nv
cGUsciksbil7dmFyIG89dGhpcy5leHBlY3RFbGVtZW50JiZ0aGlzLnJlbmRlck5vZGUuZmlyc3RO
b2RlO2UuZGVzdGluZWRGb3JET00mJihlLnJlbmRlcmVyLmRpZENyZWF0ZUVsZW1lbnQobixvKSxl
LnJlbmRlcmVyLndpbGxJbnNlcnRFbGVtZW50KG4sbyksZS5saWZlY3ljbGVIb29rcy5wdXNoKHt0
eXBlOiJkaWRJbnNlcnRFbGVtZW50Iix2aWV3Om59KSl9fSx0aGlzKX0saC5wcm90b3R5cGUucmVy
ZW5kZXI9ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXRoaXMuY29tcG9uZW50O3JldHVybiBjLmluc3Ry
dW1lbnQobixmdW5jdGlvbigpe3ZhciBpPWU7aWYobil7aT1lLmNoaWxkV2l0aFZpZXcobik7dmFy
IG89Yih0KTtlLnJlbmRlcmVyLndpbGxVcGRhdGUobixvKSxuLl9yZW5kZXJOb2RlLnNob3VsZFJl
Y2VpdmVBdHRycyYmKG4uX3Byb3BhZ2F0ZUF0dHJzVG9UaGlzJiZuLl9wcm9wYWdhdGVBdHRyc1Rv
VGhpcyhmLnRha2VMZWdhY3lTbmFwc2hvdCh0KSksZS5yZW5kZXJlci5jb21wb25lbnRVcGRhdGVB
dHRycyhuLG8pLG4uX3JlbmRlck5vZGUuc2hvdWxkUmVjZWl2ZUF0dHJzPSExKSxlLnJlbmRlcmVy
LndpbGxSZW5kZXIobiksZS5yZW5kZXJlZFZpZXdzLnB1c2gobi5lbGVtZW50SWQpfWVsc2V7dmFy
IGE9dGhpcy5ibG9jayYmdGhpcy5ibG9jay50ZW1wbGF0ZS5tZXRhO2k9ZS5jaGlsZFdpdGhNZXRh
KGEpfXJldHVybiB0aGlzLmJsb2NrJiZ0aGlzLmJsb2NrLmludm9rZShpLFtdLHZvaWQgMCx0aGlz
LnJlbmRlck5vZGUsdGhpcy5zY29wZSxyKSxpfSx0aGlzKX0saC5wcm90b3R5cGUuZGVzdHJveT1m
dW5jdGlvbigpe3RoaXMuY29tcG9uZW50JiYodGhpcy5jb21wb25lbnQuZGVzdHJveSgpLHRoaXMu
Y29tcG9uZW50PW51bGwpfX0pLGUoImVtYmVyLWh0bWxiYXJzL3N0cmVhbXMvYnVpbHQtaW4taGVs
cGVyIixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9zdHJlYW1zL3N0cmVhbSIsImVtYmVyLWh0bWxi
YXJzL3N0cmVhbXMvdXRpbHMiXSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXQu
ZGVmYXVsdC5leHRlbmQoe2luaXQ6ZnVuY3Rpb24oZSx0LHIsbixpLG8sYSl7dGhpcy5oZWxwZXI9
ZSx0aGlzLnBhcmFtcz10LHRoaXMudGVtcGxhdGVzPW4sdGhpcy5lbnY9aSx0aGlzLnNjb3BlPW8s
dGhpcy5oYXNoPXIsdGhpcy5sYWJlbD1hfSxjb21wdXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu
aGVscGVyKHIuZ2V0QXJyYXlWYWx1ZXModGhpcy5wYXJhbXMpLHIuZ2V0SGFzaFZhbHVlcyh0aGlz
Lmhhc2gpLHRoaXMudGVtcGxhdGVzLHRoaXMuZW52LHRoaXMuc2NvcGUpfX0pO2UuZGVmYXVsdD1u
fSksZSgiZW1iZXItaHRtbGJhcnMvc3RyZWFtcy9oZWxwZXItZmFjdG9yeSIsWyJleHBvcnRzIiwi
ZW1iZXItbWV0YWwvc3RyZWFtcy9zdHJlYW0iLCJlbWJlci1odG1sYmFycy9zdHJlYW1zL3V0aWxz
Il0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10LmRlZmF1bHQuZXh0ZW5kKHtp
bml0OmZ1bmN0aW9uKGUsdCxyLG4pe3RoaXMuaGVscGVyRmFjdG9yeT1lLHRoaXMucGFyYW1zPXQs
dGhpcy5oYXNoPXIsdGhpcy5saW5rYWJsZT0hMCx0aGlzLmhlbHBlcj1udWxsLHRoaXMubGFiZWw9
bn0sY29tcHV0ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmhlbHBlcnx8KHRoaXMuaGVscGVyPXRo
aXMuaGVscGVyRmFjdG9yeS5jcmVhdGUoe19zdHJlYW06dGhpc30pKSx0aGlzLmhlbHBlci5jb21w
dXRlKHIuZ2V0QXJyYXlWYWx1ZXModGhpcy5wYXJhbXMpLHIuZ2V0SGFzaFZhbHVlcyh0aGlzLmhh
c2gpKX0sZGVhY3RpdmF0ZTpmdW5jdGlvbigpe3RoaXMuc3VwZXIkZGVhY3RpdmF0ZSgpLHRoaXMu
aGVscGVyJiYodGhpcy5oZWxwZXIuZGVzdHJveSgpLHRoaXMuaGVscGVyPW51bGwpfSxzdXBlciRk
ZWFjdGl2YXRlOnQuZGVmYXVsdC5wcm90b3R5cGUuZGVhY3RpdmF0ZX0pO2UuZGVmYXVsdD1ufSks
ZSgiZW1iZXItaHRtbGJhcnMvc3RyZWFtcy9oZWxwZXItaW5zdGFuY2UiLFsiZXhwb3J0cyIsImVt
YmVyLW1ldGFsL3N0cmVhbXMvc3RyZWFtIiwiZW1iZXItaHRtbGJhcnMvc3RyZWFtcy91dGlscyJd
LGZ1bmN0aW9uKGUsdCxyKXsKKyJ1c2Ugc3RyaWN0Ijt2YXIgbj10LmRlZmF1bHQuZXh0ZW5kKHtp
bml0OmZ1bmN0aW9uKGUsdCxyLG4pe3RoaXMuaGVscGVyPWUsdGhpcy5wYXJhbXM9dCx0aGlzLmhh
c2g9cix0aGlzLmxpbmthYmxlPSEwLHRoaXMubGFiZWw9bn0sY29tcHV0ZTpmdW5jdGlvbigpe3Jl
dHVybiB0aGlzLmhlbHBlci5jb21wdXRlKHIuZ2V0QXJyYXlWYWx1ZXModGhpcy5wYXJhbXMpLHIu
Z2V0SGFzaFZhbHVlcyh0aGlzLmhhc2gpKX19KTtlLmRlZmF1bHQ9bn0pLGUoImVtYmVyLWh0bWxi
YXJzL3N0cmVhbXMvdXRpbHMiLFsiZXhwb3J0cyIsImVtYmVyLWh0bWxiYXJzL2hvb2tzL2dldC12
YWx1ZSJdLGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7Zm9yKHZhciBy
PWUubGVuZ3RoLG49bmV3IEFycmF5KHIpLGk9MDtpPHI7aSsrKW5baV09dC5kZWZhdWx0KGVbaV0p
O3JldHVybiBufWZ1bmN0aW9uIG4oZSl7dmFyIHI9e307Zm9yKHZhciBuIGluIGUpcltuXT10LmRl
ZmF1bHQoZVtuXSk7cmV0dXJuIHJ9ZS5nZXRBcnJheVZhbHVlcz1yLGUuZ2V0SGFzaFZhbHVlcz1u
fSksZSgiZW1iZXItaHRtbGJhcnMvc3lzdGVtL2FwcGVuZC10ZW1wbGF0ZWQtdmlldyIsWyJleHBv
cnRzIiwiZW1iZXItbWV0YWwvZGVidWciLCJlbWJlci1tZXRhbC9wcm9wZXJ0eV9nZXQiLCJlbWJl
ci12aWV3cy92aWV3cy92aWV3Il0sZnVuY3Rpb24oZSx0LHIsbil7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIGkoZSx0LGksbyl7dmFyIGE7YT1uLmRlZmF1bHQuZGV0ZWN0SW5zdGFuY2UoaSk/aTppLnBy
b3RvKCk7dmFyIHM9IWEuY29udHJvbGxlcjtyZXR1cm4gYS5jb250cm9sbGVyJiZhLmNvbnRyb2xs
ZXIuaXNEZXNjcmlwdG9yJiYocz0hMCksIXN8fGEuY29udHJvbGxlckJpbmRpbmd8fG8uY29udHJv
bGxlcnx8by5jb250cm9sbGVyQmluZGluZ3x8KG8uX2NvbnRleHQ9ci5nZXQoZSwiY29udGV4dCIp
KSxvLl9tb3JwaD10LGUuYXBwZW5kQ2hpbGQoaSxvKX1lLmRlZmF1bHQ9aX0pLGUoImVtYmVyLWh0
bWxiYXJzL3N5c3RlbS9ib290c3RyYXAiLFsiZXhwb3J0cyIsImVtYmVyLXZpZXdzL2NvbXBvbmVu
dF9sb29rdXAiLCJlbWJlci12aWV3cy9zeXN0ZW0vanF1ZXJ5IiwiZW1iZXItbWV0YWwvZXJyb3Ii
LCJlbWJlci1ydW50aW1lL3N5c3RlbS9sYXp5X2xvYWQiLCJlbWJlci10ZW1wbGF0ZS1jb21waWxl
ci9zeXN0ZW0vY29tcGlsZSIsImVtYmVyLW1ldGFsL2Vudmlyb25tZW50IiwiZW1iZXItaHRtbGJh
cnMvdGVtcGxhdGVfcmVnaXN0cnkiXSxmdW5jdGlvbihlLHQscixuLGksbyxhLHMpeyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiB1KGUpe3ZhciB0PSdzY3JpcHRbdHlwZT0idGV4dC94LWhhbmRsZWJhcnMi
XSwgc2NyaXB0W3R5cGU9InRleHQveC1yYXctaGFuZGxlYmFycyJdJztyLmRlZmF1bHQodCxlKS5l
YWNoKGZ1bmN0aW9uKCl7dmFyIGUsdCxpPXIuZGVmYXVsdCh0aGlzKSxhPWkuYXR0cigiZGF0YS10
ZW1wbGF0ZS1uYW1lIil8fGkuYXR0cigiaWQiKXx8ImFwcGxpY2F0aW9uIjtpZigidGV4dC94LXJh
dy1oYW5kbGViYXJzIj09PWkuYXR0cigidHlwZSIpPyh0PXIuZGVmYXVsdC5wcm94eShIYW5kbGVi
YXJzLmNvbXBpbGUsSGFuZGxlYmFycyksZT10KGkuaHRtbCgpKSk6ZT1vLmRlZmF1bHQoaS5odG1s
KCkse21vZHVsZU5hbWU6YX0pLHMuaGFzKGEpKXRocm93IG5ldyBuLmRlZmF1bHQoJ1RlbXBsYXRl
IG5hbWVkICInK2ErJyIgYWxyZWFkeSBleGlzdHMuJyk7cy5zZXQoYSxlKSxpLnJlbW92ZSgpfSl9
ZnVuY3Rpb24gbCgpe3Uoci5kZWZhdWx0KGRvY3VtZW50KSl9ZnVuY3Rpb24gYyhlKXtlLnJlZ2lz
dGVyKCJjb21wb25lbnQtbG9va3VwOm1haW4iLHQuZGVmYXVsdCl9aS5vbkxvYWQoIkVtYmVyLkFw
cGxpY2F0aW9uIixmdW5jdGlvbihlKXtlLmluaXRpYWxpemVyKHtuYW1lOiJkb21UZW1wbGF0ZXMi
LGluaXRpYWxpemU6YS5kZWZhdWx0Lmhhc0RPTT9sOmZ1bmN0aW9uKCl7fX0pLGUuaW5zdGFuY2VJ
bml0aWFsaXplcih7bmFtZToicmVnaXN0ZXJDb21wb25lbnRMb29rdXAiLGluaXRpYWxpemU6Y30p
fSksZS5kZWZhdWx0PXV9KSxlKCJlbWJlci1odG1sYmFycy9zeXN0ZW0vZG9tLWhlbHBlciIsWyJl
eHBvcnRzIiwiZG9tLWhlbHBlciIsImVtYmVyLWh0bWxiYXJzL21vcnBocy9tb3JwaCIsImVtYmVy
LWh0bWxiYXJzL21vcnBocy9hdHRyLW1vcnBoIl0sZnVuY3Rpb24oZSx0LHIsbil7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIGkoZSl7dC5kZWZhdWx0LmNhbGwodGhpcyxlKX12YXIgbz1pLnByb3RvdHlw
ZT1PYmplY3QuY3JlYXRlKHQuZGVmYXVsdC5wcm90b3R5cGUpO28uTW9ycGhDbGFzcz1yLmRlZmF1
bHQsby5BdHRyTW9ycGhDbGFzcz1uLmRlZmF1bHQsZS5kZWZhdWx0PWl9KSxlKCJlbWJlci1odG1s
YmFycy9zeXN0ZW0vaW5zdHJ1bWVudGF0aW9uLXN1cHBvcnQiLFsiZXhwb3J0cyIsImVtYmVyLW1l
dGFsL2luc3RydW1lbnRhdGlvbiJdLGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IHIoZSxyLG4pe3ZhciBpLG8sYSxzO3JldHVybiB0LnN1YnNjcmliZXJzLmxlbmd0aD8oaT1lP2Uu
aW5zdHJ1bWVudE5hbWU6Im5vZGUiLGE9e30sZSYmZS5pbnN0cnVtZW50RGV0YWlscyhhKSxzPXQu
X2luc3RydW1lbnRTdGFydCgicmVuZGVyLiIraSxmdW5jdGlvbigpe3JldHVybiBhfSksbz1yLmNh
bGwobikscyYmcygpLG8pOnIuY2FsbChuKX1lLmluc3RydW1lbnQ9cn0pLGUoImVtYmVyLWh0bWxi
YXJzL3N5c3RlbS9pbnZva2UtaGVscGVyIixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9kZWJ1ZyIs
ImVtYmVyLWh0bWxiYXJzL3N0cmVhbXMvaGVscGVyLWluc3RhbmNlIiwiZW1iZXItaHRtbGJhcnMv
c3RyZWFtcy9oZWxwZXItZmFjdG9yeSIsImVtYmVyLWh0bWxiYXJzL3N0cmVhbXMvYnVpbHQtaW4t
aGVscGVyIl0sZnVuY3Rpb24oZSx0LHIsbixpKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbyhlLHQs
byxhLHMsdSxsKXtlLmlzSGVscGVySW5zdGFuY2V8fGUuaXNIZWxwZXJGYWN0b3J5O3JldHVybiBl
LmlzSGVscGVyRmFjdG9yeT9uZXcgbi5kZWZhdWx0KGUsdCxvLGwpOmUuaXNIZWxwZXJJbnN0YW5j
ZT9uZXcgci5kZWZhdWx0KGUsdCxvLGwpOihhPWF8fHt0ZW1wbGF0ZTp7fSxpbnZlcnNlOnt9fSxu
ZXcgaS5kZWZhdWx0KGUsdCxvLGEscyx1LGwpKX1lLmJ1aWxkSGVscGVyU3RyZWFtPW99KSxlKCJl
bWJlci1odG1sYmFycy9zeXN0ZW0vbG9va3VwLWhlbHBlciIsWyJleHBvcnRzIiwiZW1iZXItbWV0
YWwvZGVidWciLCJlbWJlci1tZXRhbC9jYWNoZSJdLGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gbihlLHQscil7cmV0dXJuIHQmJiEoZSBpbiByKX1mdW5jdGlvbiBpKGUsdCxy
LGkpe3ZhciBvPXIuaGVscGVyc1tlXTtpZighbyl7dmFyIGE9ci5vd25lcjtpZihuKGUsYSxyLmhv
b2tzLmtleXdvcmRzKSl7dmFyIHM9ImhlbHBlcjoiK2UsdT1hLmhhc1JlZ2lzdHJhdGlvbihzLGkp
O3UmJihvPWEuX2xvb2t1cEZhY3RvcnkocyxpKSl9fXJldHVybiBvfWZ1bmN0aW9uIG8oZSx0LHIp
e3ZhciBuPXt9LG89ci5tZXRhJiZyLm1ldGEubW9kdWxlTmFtZTtvJiYobi5zb3VyY2U9InRlbXBs
YXRlOiIrbyk7dmFyIGE9aShlLHQscixuKTtyZXR1cm4gYT9hOmkoZSx0LHIpfWZ1bmN0aW9uIGEo
ZSx0LHIpe3ZhciBuPW8oZSx0LHIpO3JldHVybiBufWUudmFsaWRhdGVMYXp5SGVscGVyTmFtZT1u
LGUuZmluZEhlbHBlcj1vLGUuZGVmYXVsdD1hO3ZhciBzPW5ldyByLmRlZmF1bHQoMWUzLGZ1bmN0
aW9uKGUpe3JldHVybiBlLmluZGV4T2YoIi0iKSE9PS0xfSk7ZS5DT05UQUlOU19EQVNIX0NBQ0hF
PXM7dmFyIHU9bmV3IHIuZGVmYXVsdCgxZTMsZnVuY3Rpb24oZSl7cmV0dXJuIGUuaW5kZXhPZigi
LiIpIT09LTF9KTtlLkNPTlRBSU5TX0RPVF9DQUNIRT11fSksZSgiZW1iZXItaHRtbGJhcnMvc3lz
dGVtL21ha2VfYm91bmRfaGVscGVyIixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9kZWJ1ZyIsImVt
YmVyLWh0bWxiYXJzL2hlbHBlciJdLGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gbihlKXtyZXR1cm4gci5oZWxwZXIoZSl9ZS5kZWZhdWx0PW59KSxlKCJlbWJlci1odG1sYmFy
cy9zeXN0ZW0vcmVuZGVyLWVudiIsWyJleHBvcnRzIiwiZW1iZXItaHRtbGJhcnMvZW52IiwiZW1i
ZXItbWV0YWwtdmlld3MiLCJjb250YWluZXIvb3duZXIiXSxmdW5jdGlvbihlLHQscixuKXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gaShlKXt0aGlzLmxpZmVjeWNsZUhvb2tzPWUubGlmZWN5Y2xlSG9v
a3N8fFtdLHRoaXMucmVuZGVyZWRWaWV3cz1lLnJlbmRlcmVkVmlld3N8fFtdLHRoaXMucmVuZGVy
ZWROb2Rlcz1lLnJlbmRlcmVkTm9kZXN8fG5ldyByLk1vcnBoU2V0LHRoaXMuaGFzUGFyZW50T3V0
bGV0PWUuaGFzUGFyZW50T3V0bGV0fHwhMSx0aGlzLnZpZXc9ZS52aWV3LHRoaXMub3V0bGV0U3Rh
dGU9ZS5vdXRsZXRTdGF0ZSx0aGlzLm93bmVyPWUub3duZXIsdGhpcy5yZW5kZXJlcj1lLnJlbmRl
cmVyLHRoaXMuZG9tPWUuZG9tLHRoaXMubWV0YT1lLm1ldGEsdGhpcy5ob29rcz10LmRlZmF1bHQu
aG9va3MsdGhpcy5oZWxwZXJzPXQuZGVmYXVsdC5oZWxwZXJzLHRoaXMudXNlRnJhZ21lbnRDYWNo
ZT10LmRlZmF1bHQudXNlRnJhZ21lbnRDYWNoZSx0aGlzLmRlc3RpbmVkRm9yRE9NPXRoaXMucmVu
ZGVyZXIuX2Rlc3RpbmVkRm9yRE9NfWUuZGVmYXVsdD1pLGkuYnVpbGQ9ZnVuY3Rpb24oZSx0KXty
ZXR1cm4gbmV3IGkoe3ZpZXc6ZSxvdXRsZXRTdGF0ZTplLm91dGxldFN0YXRlLG93bmVyOm4uZ2V0
T3duZXIoZSkscmVuZGVyZXI6ZS5yZW5kZXJlcixkb206ZS5yZW5kZXJlci5fZG9tLG1ldGE6dH0p
fSxpLnByb3RvdHlwZS5jaGlsZFdpdGhNZXRhPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgaSh7dmll
dzp0aGlzLnZpZXcsb3V0bGV0U3RhdGU6dGhpcy5vdXRsZXRTdGF0ZSxvd25lcjp0aGlzLm93bmVy
LHJlbmRlcmVyOnRoaXMucmVuZGVyZXIsZG9tOnRoaXMuZG9tLGxpZmVjeWNsZUhvb2tzOnRoaXMu
bGlmZWN5Y2xlSG9va3MscmVuZGVyZWRWaWV3czp0aGlzLnJlbmRlcmVkVmlld3MscmVuZGVyZWRO
b2Rlczp0aGlzLnJlbmRlcmVkTm9kZXMsaGFzUGFyZW50T3V0bGV0OnRoaXMuaGFzUGFyZW50T3V0
bGV0LG1ldGE6ZX0pfSxpLnByb3RvdHlwZS5jaGlsZFdpdGhWaWV3PWZ1bmN0aW9uKGUpe3ZhciB0
PWFyZ3VtZW50cy5sZW5ndGg8PTF8fHZvaWQgMD09PWFyZ3VtZW50c1sxXT90aGlzLm1ldGE6YXJn
dW1lbnRzWzFdO3JldHVybiBuZXcgaSh7dmlldzplLG91dGxldFN0YXRlOnRoaXMub3V0bGV0U3Rh
dGUsb3duZXI6dGhpcy5vd25lcixyZW5kZXJlcjp0aGlzLnJlbmRlcmVyLGRvbTp0aGlzLmRvbSxs
aWZlY3ljbGVIb29rczp0aGlzLmxpZmVjeWNsZUhvb2tzLHJlbmRlcmVkVmlld3M6dGhpcy5yZW5k
ZXJlZFZpZXdzLHJlbmRlcmVkTm9kZXM6dGhpcy5yZW5kZXJlZE5vZGVzLGhhc1BhcmVudE91dGxl
dDp0aGlzLmhhc1BhcmVudE91dGxldCxtZXRhOnR9KX0saS5wcm90b3R5cGUuY2hpbGRXaXRoT3V0
bGV0U3RhdGU9ZnVuY3Rpb24oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aDw9MXx8dm9pZCAwPT09
YXJndW1lbnRzWzFdP3RoaXMuaGFzUGFyZW50T3V0bGV0OmFyZ3VtZW50c1sxXSxyPWFyZ3VtZW50
cy5sZW5ndGg8PTJ8fHZvaWQgMD09PWFyZ3VtZW50c1syXT90aGlzLm1ldGE6YXJndW1lbnRzWzJd
O3JldHVybiBuZXcgaSh7dmlldzp0aGlzLnZpZXcsb3V0bGV0U3RhdGU6ZSxvd25lcjp0aGlzLm93
bmVyLHJlbmRlcmVyOnRoaXMucmVuZGVyZXIsZG9tOnRoaXMuZG9tLGxpZmVjeWNsZUhvb2tzOnRo
aXMubGlmZWN5Y2xlSG9va3MscmVuZGVyZWRWaWV3czp0aGlzLnJlbmRlcmVkVmlld3MscmVuZGVy
ZWROb2Rlczp0aGlzLnJlbmRlcmVkTm9kZXMsaGFzUGFyZW50T3V0bGV0OnQsbWV0YTpyfSl9fSks
ZSgiZW1iZXItaHRtbGJhcnMvc3lzdGVtL3JlbmRlci12aWV3IixbImV4cG9ydHMiLCJlbWJlci1o
dG1sYmFycy9ub2RlLW1hbmFnZXJzL3ZpZXctbm9kZS1tYW5hZ2VyIiwiZW1iZXItaHRtbGJhcnMv
c3lzdGVtL3JlbmRlci1lbnYiXSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IG4oZSxuLGkpe3ZhciBvPW4mJm4udGVtcGxhdGUmJm4udGVtcGxhdGUubWV0YSxhPXIuZGVmYXVs
dC5idWlsZChlLG8pO2UuZW52PWEsdC5jcmVhdGVPclVwZGF0ZUNvbXBvbmVudChlLHt9LG51bGws
aSxhKTt2YXIgcz1uZXcgdC5kZWZhdWx0KGUsbnVsbCxpLG4sIiIhPT1lLnRhZ05hbWUpO3MucmVu
ZGVyKGEse30pfWUucmVuZGVySFRNTEJhcnNCbG9jaz1ufSksZSgiZW1iZXItaHRtbGJhcnMvdGVt
cGxhdGVfcmVnaXN0cnkiLFsiZXhwb3J0cyJdLGZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiB0KGUpe2E9ZX1mdW5jdGlvbiByKCl7cmV0dXJuIGF9ZnVuY3Rpb24gbihlKXtpZihhLmhh
c093blByb3BlcnR5KGUpKXJldHVybiBhW2VdfWZ1bmN0aW9uIGkoZSl7cmV0dXJuIGEuaGFzT3du
UHJvcGVydHkoZSl9ZnVuY3Rpb24gbyhlLHQpe3JldHVybiBhW2VdPXR9ZS5zZXRUZW1wbGF0ZXM9
dCxlLmdldFRlbXBsYXRlcz1yLGUuZ2V0PW4sZS5oYXM9aSxlLnNldD1vO3ZhciBhPXt9fSksZSgi
ZW1iZXItaHRtbGJhcnMvdGVtcGxhdGVzL2NvbXBvbmVudCIsWyJleHBvcnRzIiwiZW1iZXItdGVt
cGxhdGUtY29tcGlsZXIvc3lzdGVtL3RlbXBsYXRlIl0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmlj
dCI7ZS5kZWZhdWx0PXQuZGVmYXVsdChmdW5jdGlvbigpe3JldHVybnttZXRhOnt9LGlzRW1wdHk6
ITEsYXJpdHk6MCxjYWNoZWRGcmFnbWVudDpudWxsLGhhc1JlbmRlcmVkOiExLGJ1aWxkRnJhZ21l
bnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkscj1lLmNyZWF0
ZUNvbW1lbnQoIiIpO3JldHVybiBlLmFwcGVuZENoaWxkKHQsciksdH0sYnVpbGRSZW5kZXJOb2Rl
czpmdW5jdGlvbihlLHQscil7dmFyIG49bmV3IEFycmF5KDEpO3JldHVybiBuWzBdPWUuY3JlYXRl
TW9ycGhBdCh0LDAsMCxyKSxlLmluc2VydEJvdW5kYXJ5KHQsMCksZS5pbnNlcnRCb3VuZGFyeSh0
LG51bGwpLG59LHN0YXRlbWVudHM6W1siY29udGVudCIsInlpZWxkIixbImxvYyIsW251bGwsWzEs
MF0sWzEsOV1dXV1dLGxvY2FsczpbXSx0ZW1wbGF0ZXM6W119fSgpKX0pLGUoImVtYmVyLWh0bWxi
YXJzL3RlbXBsYXRlcy9lbXB0eSIsWyJleHBvcnRzIiwiZW1iZXItdGVtcGxhdGUtY29tcGlsZXIv
c3lzdGVtL3RlbXBsYXRlIl0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZS5kZWZhdWx0PXQu
ZGVmYXVsdChmdW5jdGlvbigpe3JldHVybnttZXRhOnt9LGlzRW1wdHk6ITAsYXJpdHk6MCxjYWNo
ZWRGcmFnbWVudDpudWxsLGhhc1JlbmRlcmVkOiExLGJ1aWxkRnJhZ21lbnQ6ZnVuY3Rpb24oZSl7
dmFyIHQ9ZS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7cmV0dXJuIHR9LGJ1aWxkUmVuZGVyTm9k
ZXM6ZnVuY3Rpb24oKXtyZXR1cm5bXX0sc3RhdGVtZW50czpbXSxsb2NhbHM6W10sdGVtcGxhdGVz
OltdfX0oKSl9KSxlKCJlbWJlci1odG1sYmFycy90ZW1wbGF0ZXMvbGluay10byIsWyJleHBvcnRz
IiwiZW1iZXItdGVtcGxhdGUtY29tcGlsZXIvc3lzdGVtL3RlbXBsYXRlIl0sZnVuY3Rpb24oZSx0
KXsidXNlIHN0cmljdCI7ZS5kZWZhdWx0PXQuZGVmYXVsdChmdW5jdGlvbigpe3ZhciBlPWZ1bmN0
aW9uKCl7cmV0dXJue21ldGE6e30saXNFbXB0eTohMSxhcml0eTowLGNhY2hlZEZyYWdtZW50Om51
bGwsaGFzUmVuZGVyZWQ6ITEsYnVpbGRGcmFnbWVudDpmdW5jdGlvbihlKXt2YXIgdD1lLmNyZWF0
ZURvY3VtZW50RnJhZ21lbnQoKSxyPWUuY3JlYXRlQ29tbWVudCgiIik7cmV0dXJuIGUuYXBwZW5k
Q2hpbGQodCxyKSx0fSxidWlsZFJlbmRlck5vZGVzOmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1uZXcg
QXJyYXkoMSk7cmV0dXJuIG5bMF09ZS5jcmVhdGVNb3JwaEF0KHQsMCwwLHIpLGUuaW5zZXJ0Qm91
bmRhcnkodCwwKSxlLmluc2VydEJvdW5kYXJ5KHQsbnVsbCksbn0sc3RhdGVtZW50czpbWyJjb250
ZW50IiwibGlua1RpdGxlIixbImxvYyIsW251bGwsWzEsMTddLFsxLDMwXV1dXV0sbG9jYWxzOltd
LHRlbXBsYXRlczpbXX19KCksdD1mdW5jdGlvbigpe3JldHVybnttZXRhOnt9LGlzRW1wdHk6ITEs
YXJpdHk6MCxjYWNoZWRGcmFnbWVudDpudWxsLGhhc1JlbmRlcmVkOiExLGJ1aWxkRnJhZ21lbnQ6
ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkscj1lLmNyZWF0ZUNv
bW1lbnQoIiIpO3JldHVybiBlLmFwcGVuZENoaWxkKHQsciksdH0sYnVpbGRSZW5kZXJOb2Rlczpm
dW5jdGlvbihlLHQscil7dmFyIG49bmV3IEFycmF5KDEpO3JldHVybiBuWzBdPWUuY3JlYXRlTW9y
cGhBdCh0LDAsMCxyKSxlLmluc2VydEJvdW5kYXJ5KHQsMCksZS5pbnNlcnRCb3VuZGFyeSh0LG51
bGwpLG59LHN0YXRlbWVudHM6W1siY29udGVudCIsInlpZWxkIixbImxvYyIsW251bGwsWzEsMzhd
LFsxLDQ3XV1dXV0sbG9jYWxzOltdLHRlbXBsYXRlczpbXX19KCk7cmV0dXJue21ldGE6e30saXNF
bXB0eTohMSxhcml0eTowLGNhY2hlZEZyYWdtZW50Om51bGwsaGFzUmVuZGVyZWQ6ITEsYnVpbGRG
cmFnbWVudDpmdW5jdGlvbihlKXt2YXIgdD1lLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxyPWUu
Y3JlYXRlQ29tbWVudCgiIik7cmV0dXJuIGUuYXBwZW5kQ2hpbGQodCxyKSx0fSxidWlsZFJlbmRl
ck5vZGVzOmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1uZXcgQXJyYXkoMSk7cmV0dXJuIG5bMF09ZS5j
cmVhdGVNb3JwaEF0KHQsMCwwLHIpLGUuaW5zZXJ0Qm91bmRhcnkodCwwKSxlLmluc2VydEJvdW5k
YXJ5KHQsbnVsbCksbn0sc3RhdGVtZW50czpbWyJibG9jayIsImlmIixbWyJnZXQiLCJsaW5rVGl0
bGUiLFsibG9jIixbbnVsbCxbMSw2XSxbMSwxNV1dXV1dLFtdLDAsMSxbImxvYyIsW251bGwsWzEs
MF0sWzEsNTRdXV1dXSxsb2NhbHM6W10sdGVtcGxhdGVzOltlLHRdfX0oKSl9KSxlKCJlbWJlci1o
dG1sYmFycy90ZW1wbGF0ZXMvdG9wLWxldmVsLXZpZXciLFsiZXhwb3J0cyIsImVtYmVyLXRlbXBs
YXRlLWNvbXBpbGVyL3N5c3RlbS90ZW1wbGF0ZSJdLGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3Qi
O2UuZGVmYXVsdD10LmRlZmF1bHQoZnVuY3Rpb24oKXtyZXR1cm57bWV0YTp7fSxpc0VtcHR5OiEx
LGFyaXR5OjAsY2FjaGVkRnJhZ21lbnQ6bnVsbCxoYXNSZW5kZXJlZDohMSxidWlsZEZyYWdtZW50
OmZ1bmN0aW9uKGUpe3ZhciB0PWUuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLHI9ZS5jcmVhdGVD
b21tZW50KCIiKTtyZXR1cm4gZS5hcHBlbmRDaGlsZCh0LHIpLHR9LGJ1aWxkUmVuZGVyTm9kZXM6
ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPW5ldyBBcnJheSgxKTtyZXR1cm4gblswXT1lLmNyZWF0ZU1v
cnBoQXQodCwwLDAsciksZS5pbnNlcnRCb3VuZGFyeSh0LDApLGUuaW5zZXJ0Qm91bmRhcnkodCxu
dWxsKSxufSxzdGF0ZW1lbnRzOltbImNvbnRlbnQiLCJvdXRsZXQiLFsibG9jIixbbnVsbCxbMSww
XSxbMSwxMF1dXV1dLGxvY2FsczpbXSx0ZW1wbGF0ZXM6W119fSgpKX0pLGUoImVtYmVyLWh0bWxi
YXJzL3V0aWxzL2RlY29kZS1lYWNoLWtleSIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvcHJvcGVy
dHlfZ2V0IiwiZW1iZXItbWV0YWwvdXRpbHMiXSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIG4oZSl7dmFyIHQ9dm9pZCAwLG49dHlwZW9mIGU7cmV0dXJuIHQ9InN0cmluZyI9
PT1ufHwibnVtYmVyIj09PW4/ZTpyLmd1aWRGb3IoZSl9ZnVuY3Rpb24gaShlLHIsaSl7dmFyIG87
c3dpdGNoKHIpe2Nhc2UiQGluZGV4IjpvPWk7YnJlYWs7Y2FzZSJAaWRlbnRpdHkiOm89bihlKTti
cmVhaztkZWZhdWx0Om89cj90LmdldChlLHIpOm4oZSl9cmV0dXJuIm51bWJlciI9PXR5cGVvZiBv
JiYobz1TdHJpbmcobykpLG99ZS5kZWZhdWx0PWl9KSxlKCJlbWJlci1odG1sYmFycy91dGlscy9l
eHRyYWN0LXBvc2l0aW9uYWwtcGFyYW1zIixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9kZWJ1ZyIs
ImVtYmVyLW1ldGFsL3N0cmVhbXMvc3RyZWFtIiwiZW1iZXItbWV0YWwvc3RyZWFtcy91dGlscyJd
LGZ1bmN0aW9uKGUsdCxyLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUsdCxyLG4pe3ZhciBp
PWFyZ3VtZW50cy5sZW5ndGg8PTR8fHZvaWQgMD09PWFyZ3VtZW50c1s0XXx8YXJndW1lbnRzWzRd
LGE9dC5wb3NpdGlvbmFsUGFyYW1zO2EmJm8oZSxhLHIsbixpKX1mdW5jdGlvbiBvKGUsdCxyLG4p
e3ZhciBpPWFyZ3VtZW50cy5sZW5ndGg8PTR8fHZvaWQgMD09PWFyZ3VtZW50c1s0XXx8YXJndW1l
bnRzWzRdLG89InN0cmluZyI9PXR5cGVvZiB0O28/cyhlLHQscixuLGkpOmEoZSx0LHIsbixpKX1m
dW5jdGlvbiBhKGUsdCxyLG4saSl7Zm9yKHZhciBvPU1hdGgubWluKHIubGVuZ3RoLHQubGVuZ3Ro
KSxhPTA7YTxvO2ErKyl7dmFyIHM9clthXTtuW3RbYV1dPXN9fWZ1bmN0aW9uIHMoZSx0LGksbyxh
KXt2YXIgcz10IGluIG87aWYoMCE9PWkubGVuZ3RofHwhcyl7dmFyIHU9bmV3IHIuU3RyZWFtKGZ1
bmN0aW9uKCl7cmV0dXJuIG4ucmVhZEFycmF5KGkuc2xpY2UoMCkpfSwicGFyYW1zIik7b1t0XT11
O2Zvcih2YXIgbD0wO2w8aS5sZW5ndGg7bCsrKXt2YXIgYz1pW2xdO3UuYWRkRGVwZW5kZW5jeShj
KX19fWUuZGVmYXVsdD1pLGUucHJvY2Vzc1Bvc2l0aW9uYWxQYXJhbXM9b30pLGUoImVtYmVyLWh0
bWxiYXJzL3V0aWxzL2lzLWNvbXBvbmVudCIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvZmVhdHVy
ZXMiLCJlbWJlci1odG1sYmFycy9zeXN0ZW0vbG9va3VwLWhlbHBlciIsImVtYmVyLWh0bWxiYXJz
L2tleXdvcmRzL2Nsb3N1cmUtY29tcG9uZW50IiwiZW1iZXItbWV0YWwvc3RyZWFtcy91dGlscyJd
LGZ1bmN0aW9uKGUsdCxyLG4saSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG8oZSx0LHIpe3JldHVy
biBlLmhhc1JlZ2lzdHJhdGlvbigiY29tcG9uZW50OiIrdCxyKXx8ZS5oYXNSZWdpc3RyYXRpb24o
InRlbXBsYXRlOmNvbXBvbmVudHMvIit0LHIpfWZ1bmN0aW9uIGEoZSx0LGEpe3ZhciBzPWUub3du
ZXI7aWYoIXMpcmV0dXJuITE7aWYoInN0cmluZyI9PXR5cGVvZiBhKXtpZihyLkNPTlRBSU5TX0RP
VF9DQUNIRS5nZXQoYSkpe3ZhciB1PWUuaG9va3MuZ2V0KGUsdCxhKTtpZihpLmlzU3RyZWFtKHUp
KXt2YXIgbD11LnZhbHVlKCk7aWYobi5pc0NvbXBvbmVudENlbGwobCkpcmV0dXJuITB9fWlmKCFy
LkNPTlRBSU5TX0RBU0hfQ0FDSEUuZ2V0KGEpKXJldHVybiExO2lmKG8ocyxhKSlyZXR1cm4hMDt2
YXIgYz1lLm1ldGEmJmUubWV0YS5tb2R1bGVOYW1lO2lmKCFjKXJldHVybiExO3ZhciBmPXtzb3Vy
Y2U6InRlbXBsYXRlOiIrY307cmV0dXJuIG8ocyxhLGYpfX1lLmRlZmF1bHQ9YX0pLGUoImVtYmVy
LWh0bWxiYXJzL3V0aWxzL2xvb2t1cC1jb21wb25lbnQiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFs
L2ZlYXR1cmVzIl0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQscixu
KXtyZXR1cm57Y29tcG9uZW50OmUuY29tcG9uZW50Rm9yKHIsdCxuKSxsYXlvdXQ6ZS5sYXlvdXRG
b3Iocix0LG4pfX1mdW5jdGlvbiBuKGUsdCxuKXt2YXIgaT1lLmxvb2t1cCgiY29tcG9uZW50LWxv
b2t1cDptYWluIiksbz1uJiZuLnNvdXJjZTtpZihvKXt2YXIgYT1yKGksZSx0LG4pO2lmKGEuY29t
cG9uZW50fHxhLmxheW91dClyZXR1cm4gYX1yZXR1cm4gcihpLGUsdCl9ZS5kZWZhdWx0PW59KSxl
KCJlbWJlci1odG1sYmFycy91dGlscy9uZXctc3RyZWFtIixbImV4cG9ydHMiLCJlbWJlci1tZXRh
bC9zdHJlYW1zL3Byb3h5LXN0cmVhbSIsImVtYmVyLWh0bWxiYXJzL3V0aWxzL3N1YnNjcmliZSJd
LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlLG4saSxvLGEpe3ZhciBz
PW5ldyB0LmRlZmF1bHQoaSxhPyIiOm4pO28mJnIuZGVmYXVsdChvLGUscyksZVtuXT1zfWUuZGVm
YXVsdD1ufSksZSgiZW1iZXItaHRtbGJhcnMvdXRpbHMvbm9ybWFsaXplLXNlbGYiLFsiZXhwb3J0
cyJdLGZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB0KGUpe3JldHVybiB2b2lkIDA9
PT1lP251bGw6ZX1lLmRlZmF1bHQ9dH0pLGUoImVtYmVyLWh0bWxiYXJzL3V0aWxzL3N0cmluZyIs
WyJleHBvcnRzIiwiZW1iZXItbWV0YWwvY29yZSIsImVtYmVyLXJ1bnRpbWUvc3lzdGVtL3N0cmlu
ZyIsImh0bWxiYXJzLXV0aWwiXSxmdW5jdGlvbihlLHQscixuKXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gaShlKXtyZXR1cm4gbnVsbD09PWV8fHZvaWQgMD09PWU/ZT0iIjoic3RyaW5nIiE9dHlwZW9m
IGUmJihlPSIiK2UpLG5ldyBuLlNhZmVTdHJpbmcoZSl9ci5kZWZhdWx0Lmh0bWxTYWZlPWksKHQu
ZGVmYXVsdC5FWFRFTkRfUFJPVE9UWVBFUz09PSEwfHx0LmRlZmF1bHQuRVhURU5EX1BST1RPVFlQ
RVMuU3RyaW5nKSYmKFN0cmluZy5wcm90b3R5cGUuaHRtbFNhZmU9ZnVuY3Rpb24oKXtyZXR1cm4g
aSh0aGlzKX0pLGUuU2FmZVN0cmluZz1uLlNhZmVTdHJpbmcsZS5odG1sU2FmZT1pLGUuZXNjYXBl
RXhwcmVzc2lvbj1uLmVzY2FwZUV4cHJlc3Npb259KSxlKCJlbWJlci1odG1sYmFycy91dGlscy9z
dWJzY3JpYmUiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL3N0cmVhbXMvdXRpbHMiXSxmdW5jdGlv
bihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUscixuLGkpe2lmKHQuaXNTdHJlYW0oaSkp
e3ZhciBvPW4uZ2V0Q29tcG9uZW50KCksYT1lLnN0cmVhbVVuc3Vic2NyaWJlcnM9ZS5zdHJlYW1V
bnN1YnNjcmliZXJzfHxbXTthLnB1c2goaS5zdWJzY3JpYmUoZnVuY3Rpb24oKXtlLmlzRGlydHk9
ITAsbyYmby5fcmVuZGVyTm9kZSYmKG8uX3JlbmRlck5vZGUuaXNEaXJ0eT0hMCksZS5nZXRTdGF0
ZSgpLm1hbmFnZXImJihlLnNob3VsZFJlY2VpdmVBdHRycz0hMCksZS5vd25lck5vZGUuZW1iZXJW
aWV3LnNjaGVkdWxlUmV2YWxpZGF0ZShlLHQubGFiZWxGb3IoaSkpfSkpfX1lLmRlZmF1bHQ9cn0p
LGUoImVtYmVyLWh0bWxiYXJzL3V0aWxzL3VwZGF0ZS1zY29wZSIsWyJleHBvcnRzIiwiZW1iZXIt
bWV0YWwvc3RyZWFtcy9wcm94eS1zdHJlYW0iLCJlbWJlci1odG1sYmFycy91dGlscy9zdWJzY3Jp
YmUiXSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSxuLGksbyxhKXt2
YXIgcz1lW25dO2lmKHMpcy5zZXRTb3VyY2UoaSk7ZWxzZXt2YXIgdT1uZXcgdC5kZWZhdWx0KGks
YT9udWxsOm4pO28mJnIuZGVmYXVsdChvLGUsdSksZVtuXT11fX1lLmRlZmF1bHQ9bn0pLGUoImVt
YmVyLW1ldGFsLXZpZXdzL2h0bWxiYXJzLXJlbmRlcmVyIixbImV4cG9ydHMiLCJlbWJlci1tZXRh
bC9ydW5fbG9vcCIsImVtYmVyLW1ldGFsL3Byb3BlcnR5X2dldCIsImVtYmVyLW1ldGFsL3Byb3Bl
cnR5X3NldCIsImVtYmVyLW1ldGFsL2Fzc2lnbiIsImVtYmVyLW1ldGFsL3NldF9wcm9wZXJ0aWVz
IiwiZW1iZXItdmlld3Mvc3lzdGVtL2J1aWxkLWNvbXBvbmVudC10ZW1wbGF0ZSIsImVtYmVyLW1l
dGFsL2Vudmlyb25tZW50IiwiaHRtbGJhcnMtcnVudGltZSJdLGZ1bmN0aW9uKGUsdCxyLG4saSxv
LGEscyx1KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbChlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3Ro
PD0xfHx2b2lkIDA9PT1hcmd1bWVudHNbMV0/e306YXJndW1lbnRzWzFdLHI9dC5kZXN0aW5lZEZv
ckRPTTt0aGlzLl9kb209ZSx0aGlzLl9kZXN0aW5lZEZvckRPTT12b2lkIDA9PT1yP3MuZGVmYXVs
dC5oYXNET006cn1mdW5jdGlvbiBjKCl7dGhpcy5tb3JwaHM9W119ZS5SZW5kZXJlcj1sLGUuTW9y
cGhTZXQ9YyxsLnByb3RvdHlwZS5wcmVyZW5kZXJUb3BMZXZlbFZpZXc9ZnVuY3Rpb24oZSx0KXtp
ZigiaW5ET00iPT09ZS5fc3RhdGUpdGhyb3cgbmV3IEVycm9yKCJZb3UgY2Fubm90IGluc2VydCBh
IFZpZXcgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIHJlbmRlcmVkIik7ZS5vd25lclZpZXc9dC5lbWJl
clZpZXc9ZSxlLl9yZW5kZXJOb2RlPXQ7dmFyIG49ci5nZXQoZSwibGF5b3V0IiksaT1yLmdldChl
LCJ0ZW1wbGF0ZSIpLG89e2NvbXBvbmVudDplLGxheW91dDpufSxzPWEuZGVmYXVsdChvLHt9LHtz
ZWxmOmUsdGVtcGxhdGVzOmk/e2RlZmF1bHQ6aS5yYXd9OnZvaWQgMH0pLmJsb2NrO2UucmVuZGVy
QmxvY2socyx0KSxlLmxhc3RSZXN1bHQ9dC5sYXN0UmVzdWx0LHRoaXMuY2xlYXJSZW5kZXJlZFZp
ZXdzKGUuZW52KX0sbC5wcm90b3R5cGUucmVuZGVyVG9wTGV2ZWxWaWV3PWZ1bmN0aW9uKGUsdCl7
ZS5fd2lsbEluc2VydCYmKGUuX3dpbGxJbnNlcnQ9ITEsdGhpcy5wcmVyZW5kZXJUb3BMZXZlbFZp
ZXcoZSx0KSx0aGlzLmRpc3BhdGNoTGlmZWN5Y2xlSG9va3MoZS5lbnYpKX0sbC5wcm90b3R5cGUu
cmV2YWxpZGF0ZVRvcExldmVsVmlldz1mdW5jdGlvbihlKXtlLl9yZW5kZXJOb2RlLmxhc3RSZXN1
bHQmJihlLl9yZW5kZXJOb2RlLmxhc3RSZXN1bHQucmV2YWxpZGF0ZShlLmVudiksImluRE9NIj09
PWUuX3N0YXRlJiZ0aGlzLmRpc3BhdGNoTGlmZWN5Y2xlSG9va3MoZS5lbnYpLHRoaXMuY2xlYXJS
ZW5kZXJlZFZpZXdzKGUuZW52KSl9LGwucHJvdG90eXBlLmRpc3BhdGNoTGlmZWN5Y2xlSG9va3M9
ZnVuY3Rpb24oZSl7dmFyIHQscixuPWUudmlldyxpPWUubGlmZWN5Y2xlSG9va3M7Zm9yKHQ9MDt0
PGkubGVuZ3RoO3QrKyl7c3dpdGNoKHI9aVt0XSxuLl9kaXNwYXRjaGluZz1yLnR5cGUsci50eXBl
KXtjYXNlImRpZEluc2VydEVsZW1lbnQiOnRoaXMuZGlkSW5zZXJ0RWxlbWVudChyLnZpZXcpO2Jy
ZWFrO2Nhc2UiZGlkVXBkYXRlIjp0aGlzLmRpZFVwZGF0ZShyLnZpZXcpfXRoaXMuZGlkUmVuZGVy
KHIudmlldyl9bi5fZGlzcGF0Y2hpbmc9bnVsbCxlLmxpZmVjeWNsZUhvb2tzLmxlbmd0aD0wfSxs
LnByb3RvdHlwZS5lbnN1cmVWaWV3Tm90UmVuZGVyaW5nPWZ1bmN0aW9uKGUpe3ZhciB0PWUub3du
ZXJWaWV3LmVudjtpZih0JiZ0LnJlbmRlcmVkVmlld3MuaW5kZXhPZihlLmVsZW1lbnRJZCkhPT0t
MSl0aHJvdyBuZXcgRXJyb3IoIlNvbWV0aGluZyB5b3UgZGlkIGNhdXNlZCBhIHZpZXcgdG8gcmUt
cmVuZGVyIGFmdGVyIGl0IHJlbmRlcmVkIGJ1dCBiZWZvcmUgaXQgd2FzIGluc2VydGVkIGludG8g
dGhlIERPTS4iKX0sYy5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGUpe3RoaXMubW9ycGhzLnB1c2go
ZSksZS5zZWVuPSEwfSxjLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuc2Vlbn0s
Yy5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXtmb3IodmFyIGU9dGhpcy5tb3JwaHMsdD0wLHI9
ZS5sZW5ndGg7dDxyO3QrKyllW3RdLnNlZW49ITE7dGhpcy5tb3JwaHM9W119LGwucHJvdG90eXBl
LmNsZWFyUmVuZGVyZWRWaWV3cz1mdW5jdGlvbihlKXtlLnJlbmRlcmVkTm9kZXMuY2xlYXIoKSxl
LnJlbmRlcmVkVmlld3MubGVuZ3RoPTB9LGwucHJvdG90eXBlLmFwcGVuZFRvPWZ1bmN0aW9uKGUs
cil7dmFyIG49dGhpcy5fZG9tLmFwcGVuZE1vcnBoKHIpO24ub3duZXJOb2RlPW4sZS5fd2lsbElu
c2VydD0hMCx0LmRlZmF1bHQuc2NoZWR1bGUoInJlbmRlciIsdGhpcyx0aGlzLnJlbmRlclRvcExl
dmVsVmlldyxlLG4pfSxsLnByb3RvdHlwZS5yZXBsYWNlSW49ZnVuY3Rpb24oZSxyKXt2YXIgbj10
aGlzLl9kb20ucmVwbGFjZUNvbnRlbnRXaXRoTW9ycGgocik7bi5vd25lck5vZGU9bixlLl93aWxs
SW5zZXJ0PSEwLHQuZGVmYXVsdC5zY2hlZHVsZU9uY2UoInJlbmRlciIsdGhpcyx0aGlzLnJlbmRl
clRvcExldmVsVmlldyxlLG4pfSxsLnByb3RvdHlwZS5jcmVhdGVFbGVtZW50PWZ1bmN0aW9uKGUp
e3ZhciB0PXRoaXMuX2RvbS5jcmVhdGVGcmFnbWVudE1vcnBoKCk7dC5vd25lck5vZGU9dCx0aGlz
LnByZXJlbmRlclRvcExldmVsVmlldyhlLHQpfSxsLnByb3RvdHlwZS5kaWRDcmVhdGVFbGVtZW50
PWZ1bmN0aW9uKGUsdCl7dCYmKGUuZWxlbWVudD10KSxlLl90cmFuc2l0aW9uVG8mJmUuX3RyYW5z
aXRpb25UbygiaGFzRWxlbWVudCIpfSxsLnByb3RvdHlwZS53aWxsSW5zZXJ0RWxlbWVudD1mdW5j
dGlvbihlKXtlLnRyaWdnZXImJmUudHJpZ2dlcigid2lsbEluc2VydEVsZW1lbnQiKX0sbC5wcm90
b3R5cGUuc2V0QXR0cnM9ZnVuY3Rpb24oZSx0KXtuLnNldChlLCJhdHRycyIsdCl9LGwucHJvdG90
eXBlLmNvbXBvbmVudEluaXRBdHRycz1mdW5jdGlvbihlLHQpe2UudHJpZ2dlcigiZGlkSW5pdEF0
dHJzIix7YXR0cnM6dH0pLGUudHJpZ2dlcigiZGlkUmVjZWl2ZUF0dHJzIix7bmV3QXR0cnM6dH0p
fSxsLnByb3RvdHlwZS5kaWRJbnNlcnRFbGVtZW50PWZ1bmN0aW9uKGUpe2UuX3RyYW5zaXRpb25U
byYmZS5fdHJhbnNpdGlvblRvKCJpbkRPTSIpLGUudHJpZ2dlciYmZS50cmlnZ2VyKCJkaWRJbnNl
cnRFbGVtZW50Iil9LGwucHJvdG90eXBlLmRpZFVwZGF0ZT1mdW5jdGlvbihlKXtlLnRyaWdnZXIm
JmUudHJpZ2dlcigiZGlkVXBkYXRlIil9LGwucHJvdG90eXBlLmRpZFJlbmRlcj1mdW5jdGlvbihl
KXtlLnRyaWdnZXImJmUudHJpZ2dlcigiZGlkUmVuZGVyIil9LGwucHJvdG90eXBlLnVwZGF0ZUF0
dHJzPWZ1bmN0aW9uKGUsdCl7dGhpcy5zZXRBdHRycyhlLHQpfSxsLnByb3RvdHlwZS5jb21wb25l
bnRVcGRhdGVBdHRycz1mdW5jdGlvbihlLHQpe3ZhciByPW51bGw7ZS5hdHRycz8ocj1pLmRlZmF1
bHQoe30sZS5hdHRycyksby5kZWZhdWx0KGUuYXR0cnMsdCkpOm4uc2V0KGUsImF0dHJzIix0KSxl
LnRyaWdnZXIoImRpZFVwZGF0ZUF0dHJzIix7b2xkQXR0cnM6cixuZXdBdHRyczp0fSksZS50cmln
Z2VyKCJkaWRSZWNlaXZlQXR0cnMiLHtvbGRBdHRyczpyLG5ld0F0dHJzOnR9KX0sbC5wcm90b3R5
cGUud2lsbFVwZGF0ZT1mdW5jdGlvbihlLHQpe2UuX3dpbGxVcGRhdGUmJmUuX3dpbGxVcGRhdGUo
dCl9LGwucHJvdG90eXBlLmNvbXBvbmVudFdpbGxVcGRhdGU9ZnVuY3Rpb24oZSl7ZS50cmlnZ2Vy
KCJ3aWxsVXBkYXRlIil9LGwucHJvdG90eXBlLndpbGxSZW5kZXI9ZnVuY3Rpb24oZSl7ZS5fd2ls
bFJlbmRlciYmZS5fd2lsbFJlbmRlcigpfSxsLnByb3RvdHlwZS5jb21wb25lbnRXaWxsUmVuZGVy
PWZ1bmN0aW9uKGUpe2UudHJpZ2dlcigid2lsbFJlbmRlciIpfSxsLnByb3RvdHlwZS5yZXJlbmRl
cj1mdW5jdGlvbihlKXt2YXIgdD1lLl9yZW5kZXJOb2RlO3QuaXNEaXJ0eT0hMCx1LmludGVybmFs
LnZpc2l0Q2hpbGRyZW4odC5jaGlsZE5vZGVzLGZ1bmN0aW9uKGUpe2UuZ2V0U3RhdGUoKS5tYW5h
Z2VyJiYoZS5zaG91bGRSZWNlaXZlQXR0cnM9ITApLGUuaXNEaXJ0eT0hMH0pLHQub3duZXJOb2Rl
LmVtYmVyVmlldy5zY2hlZHVsZVJldmFsaWRhdGUodCxlLnRvU3RyaW5nKCksInJlcmVuZGVyaW5n
Iil9LGwucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbihlLHIpe3RoaXMud2lsbERlc3Ryb3lFbGVt
ZW50KGUpLGUuX3dpbGxSZW1vdmVFbGVtZW50PSEwLHQuZGVmYXVsdC5zY2hlZHVsZSgicmVuZGVy
Iix0aGlzLHRoaXMucmVuZGVyRWxlbWVudFJlbW92YWwsZSl9LGwucHJvdG90eXBlLnJlbmRlckVs
ZW1lbnRSZW1vdmFsPWZ1bmN0aW9uKGUpe2UuX3dpbGxSZW1vdmVFbGVtZW50JiYoZS5fd2lsbFJl
bW92ZUVsZW1lbnQ9ITEsZS5fcmVuZGVyTm9kZSYmZS5lbGVtZW50JiZlLmVsZW1lbnQucGFyZW50
Tm9kZSYmZS5fcmVuZGVyTm9kZS5jbGVhcigpLHRoaXMuZGlkRGVzdHJveUVsZW1lbnQoZSkpfSxs
LnByb3RvdHlwZS53aWxsUmVtb3ZlRWxlbWVudD1mdW5jdGlvbigpe30sbC5wcm90b3R5cGUud2ls
bERlc3Ryb3lFbGVtZW50PWZ1bmN0aW9uKGUpe2UuX3dpbGxEZXN0cm95RWxlbWVudCYmZS5fd2ls
bERlc3Ryb3lFbGVtZW50KCksZS50cmlnZ2VyJiYoZS50cmlnZ2VyKCJ3aWxsRGVzdHJveUVsZW1l
bnQiKSxlLnRyaWdnZXIoIndpbGxDbGVhclJlbmRlciIpKSxlLl90cmFuc2l0aW9uVG8mJmUuX3Ry
YW5zaXRpb25UbygiZGVzdHJveWluZyIpfSxsLnByb3RvdHlwZS5kaWREZXN0cm95RWxlbWVudD1m
dW5jdGlvbihlKXtlLmVsZW1lbnQ9bnVsbCwiZGVzdHJveWluZyIhPT1lLl9zdGF0ZSYmZS5fdHJh
bnNpdGlvblRvJiZlLl90cmFuc2l0aW9uVG8oInByZVJlbmRlciIpLGUudHJpZ2dlciYmZS50cmln
Z2VyKCJkaWREZXN0cm95RWxlbWVudCIpfTt2YXIgZj17Y3JlYXRlOmZ1bmN0aW9uKGUpe3ZhciB0
PWUuZG9tO3JldHVybiBuZXcgbCh0LHtkZXN0aW5lZEZvckRPTTohMX0pfX07ZS5JbmVydFJlbmRl
cmVyPWY7dmFyIGQ9e2NyZWF0ZTpmdW5jdGlvbihlKXt2YXIgdD1lLmRvbTtyZXR1cm4gbmV3IGwo
dCx7ZGVzdGluZWRGb3JET006ITB9KX19O2UuSW50ZXJhY3RpdmVSZW5kZXJlcj1kfSksZSgiZW1i
ZXItbWV0YWwtdmlld3MvaW5kZXgiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsLXZpZXdzL2h0bWxi
YXJzLXJlbmRlcmVyIl0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQp
e3ZhciByPXQoe30sZSk7cmV0dXJuIGRlbGV0ZSByLmRlZmF1bHQscn1mdW5jdGlvbiBuKGUsdCl7
Zm9yKHZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHQpLG49MDtuPHIubGVuZ3RoO24r
Kyl7dmFyIGk9cltuXSxvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxpKTtvJiZv
LmNvbmZpZ3VyYWJsZSYmdm9pZCAwPT09ZVtpXSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsaSxv
KX1yZXR1cm4gZX1uKGUscih0LG4pKX0pLGUoImVtYmVyLW1ldGFsL2FsaWFzIixbImV4cG9ydHMi
LCJlbWJlci1tZXRhbC9kZWJ1ZyIsImVtYmVyLW1ldGFsL3Byb3BlcnR5X2dldCIsImVtYmVyLW1l
dGFsL3Byb3BlcnR5X3NldCIsImVtYmVyLW1ldGFsL2Vycm9yIiwiZW1iZXItbWV0YWwvcHJvcGVy
dGllcyIsImVtYmVyLW1ldGFsL2NvbXB1dGVkIiwiZW1iZXItbWV0YWwvdXRpbHMiLCJlbWJlci1t
ZXRhbC9tZXRhIiwiZW1iZXItbWV0YWwvZGVwZW5kZW50X2tleXMiXSxmdW5jdGlvbihlLHQscixu
LGksbyxhLHMsdSxsKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYyhlKXtyZXR1cm4gbmV3IGYoZSl9
ZnVuY3Rpb24gZihlKXt0aGlzLmlzRGVzY3JpcHRvcj0hMCx0aGlzLmFsdEtleT1lLHRoaXMuX2Rl
cGVuZGVudEtleXM9W2VdfWZ1bmN0aW9uIGQoZSx0LHIpe3Rocm93IG5ldyBpLmRlZmF1bHQoIkNh
bm5vdCBzZXQgcmVhZC1vbmx5IHByb3BlcnR5ICciK3QrIicgb24gb2JqZWN0OiAiK3MuaW5zcGVj
dChlKSl9ZnVuY3Rpb24gcChlLHQscil7cmV0dXJuIG8uZGVmaW5lUHJvcGVydHkoZSx0LG51bGwp
LG4uc2V0KGUsdCxyKX1lLmRlZmF1bHQ9YyxlLkFsaWFzZWRQcm9wZXJ0eT1mLGYucHJvdG90eXBl
PU9iamVjdC5jcmVhdGUoby5EZXNjcmlwdG9yLnByb3RvdHlwZSksZi5wcm90b3R5cGUuZ2V0PWZ1
bmN0aW9uKGUsdCl7cmV0dXJuIHIuZ2V0KGUsdGhpcy5hbHRLZXkpfSxmLnByb3RvdHlwZS5zZXQ9
ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBuLnNldChlLHRoaXMuYWx0S2V5LHIpfSxmLnByb3RvdHlw
ZS53aWxsV2F0Y2g9ZnVuY3Rpb24oZSx0KXtsLmFkZERlcGVuZGVudEtleXModGhpcyxlLHQsdS5t
ZXRhKGUpKX0sZi5wcm90b3R5cGUuZGlkVW53YXRjaD1mdW5jdGlvbihlLHQpe2wucmVtb3ZlRGVw
ZW5kZW50S2V5cyh0aGlzLGUsdCx1Lm1ldGEoZSkpfSxmLnByb3RvdHlwZS5zZXR1cD1mdW5jdGlv
bihlLHQpe3ZhciByPXUubWV0YShlKTtyLnBlZWtXYXRjaGluZyh0KSYmbC5hZGREZXBlbmRlbnRL
ZXlzKHRoaXMsZSx0LHIpfSxmLnByb3RvdHlwZS50ZWFyZG93bj1mdW5jdGlvbihlLHQpe3ZhciBy
PXUubWV0YShlKTtyLnBlZWtXYXRjaGluZyh0KSYmbC5yZW1vdmVEZXBlbmRlbnRLZXlzKHRoaXMs
ZSx0LHIpfSxmLnByb3RvdHlwZS5yZWFkT25seT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnNldD1k
LHRoaXN9LGYucHJvdG90eXBlLm9uZVdheT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnNldD1wLHRo
aXN9LGYucHJvdG90eXBlLl9tZXRhPXZvaWQgMCxmLnByb3RvdHlwZS5tZXRhPWEuQ29tcHV0ZWRQ
cm9wZXJ0eS5wcm90b3R5cGUubWV0YX0pLGUoImVtYmVyLW1ldGFsL2Fzc2lnbiIsWyJleHBvcnRz
Il0sZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHQoZSl7Zm9yKHZhciB0PWFyZ3Vt
ZW50cy5sZW5ndGgscj1BcnJheSh0PjE/dC0xOjApLG49MTtuPHQ7bisrKXJbbi0xXT1hcmd1bWVu
dHNbbl07Zm9yKHZhciBpPTAsbz1yLmxlbmd0aDtpPG87aSsrKXt2YXIgYT1yW2ldO2lmKGEpZm9y
KHZhciBzPU9iamVjdC5rZXlzKGEpLHU9MCxsPXMubGVuZ3RoO3U8bDt1Kyspe3ZhciBjPXNbdV07
ZVtjXT1hW2NdfX1yZXR1cm4gZX1lLmRlZmF1bHQ9dH0pLGUoImVtYmVyLW1ldGFsL2JpbmRpbmci
LFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL2NvcmUiLCJlbWJlci1tZXRhbC9sb2dnZXIiLCJlbWJl
ci1tZXRhbC9ydW5fbG9vcCIsImVtYmVyLW1ldGFsL2RlYnVnIiwiZW1iZXItbWV0YWwvcHJvcGVy
dHlfZ2V0IiwiZW1iZXItbWV0YWwvcHJvcGVydHlfc2V0IiwiZW1iZXItbWV0YWwvdXRpbHMiLCJl
bWJlci1tZXRhbC9ldmVudHMiLCJlbWJlci1tZXRhbC9vYnNlcnZlciIsImVtYmVyLW1ldGFsL3Bh
dGhfY2FjaGUiXSxmdW5jdGlvbihlLHQscixuLGksbyxhLHMsdSxsLGMpeyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiBmKGUsdCl7dGhpcy5fZnJvbT10LHRoaXMuX3RvPWUsdGhpcy5fb25lV2F5PXZvaWQg
MCx0aGlzLl9kaXJlY3Rpb249dm9pZCAwLHRoaXMuX3JlYWR5VG9TeW5jPXZvaWQgMCx0aGlzLl9m
cm9tT2JqPXZvaWQgMCx0aGlzLl9mcm9tUGF0aD12b2lkIDAsdGhpcy5fdG9PYmo9dm9pZCAwfWZ1
bmN0aW9uIGQoZSx0KXtmb3IodmFyIHIgaW4gdCl0Lmhhc093blByb3BlcnR5KHIpJiYoZVtyXT10
W3JdKX1mdW5jdGlvbiBwKGUsdCxyKXtyZXR1cm4gbmV3IGYodCxyKS5jb25uZWN0KGUpfWUuYmlu
ZD1wLHQuZGVmYXVsdC5MT0dfQklORElOR1M9ISF0LmRlZmF1bHQuRU5WLkxPR19CSU5ESU5HUyxm
LnByb3RvdHlwZT17Y29weTpmdW5jdGlvbigpe3ZhciBlPW5ldyBmKHRoaXMuX3RvLHRoaXMuX2Zy
b20pO3JldHVybiB0aGlzLl9vbmVXYXkmJihlLl9vbmVXYXk9ITApLGV9LGZyb206ZnVuY3Rpb24o
ZSl7cmV0dXJuIHRoaXMuX2Zyb209ZSx0aGlzfSx0bzpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5f
dG89ZSx0aGlzfSxvbmVXYXk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb25lV2F5PSEwLHRoaXN9
LHRvU3RyaW5nOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fb25lV2F5PyJbb25lV2F5XSI6IiI7cmV0
dXJuIkVtYmVyLkJpbmRpbmc8IitzLmd1aWRGb3IodGhpcykrIj4oIit0aGlzLl9mcm9tKyIgLT4g
Iit0aGlzLl90bysiKSIrZX0sY29ubmVjdDpmdW5jdGlvbihlKXt2YXIgcj12b2lkIDAsbj12b2lk
IDA7aWYoYy5pc0dsb2JhbFBhdGgodGhpcy5fZnJvbSkpe3ZhciBpPWMuZ2V0Rmlyc3RLZXkodGhp
cy5fZnJvbSkscz10LmRlZmF1bHQubG9va3VwW2ldO3MmJihyPXMsbj1jLmdldFRhaWxQYXRoKHRo
aXMuX2Zyb20pKX1yZXR1cm4gdm9pZCAwPT09ciYmKHI9ZSxuPXRoaXMuX2Zyb20pLGEudHJ5U2V0
KGUsdGhpcy5fdG8sby5nZXQocixuKSksbC5hZGRPYnNlcnZlcihyLG4sdGhpcywiZnJvbURpZENo
YW5nZSIpLHRoaXMuX29uZVdheXx8bC5hZGRPYnNlcnZlcihlLHRoaXMuX3RvLHRoaXMsInRvRGlk
Q2hhbmdlIiksdS5hZGRMaXN0ZW5lcihlLCJ3aWxsRGVzdHJveSIsdGhpcywiZGlzY29ubmVjdCIp
LHRoaXMuX3JlYWR5VG9TeW5jPSEwLHRoaXMuX2Zyb21PYmo9cix0aGlzLl9mcm9tUGF0aD1uLHRo
aXMuX3RvT2JqPWUsdGhpc30sZGlzY29ubmVjdDpmdW5jdGlvbigpe3JldHVybiBsLnJlbW92ZU9i
c2VydmVyKHRoaXMuX2Zyb21PYmosdGhpcy5fZnJvbVBhdGgsdGhpcywiZnJvbURpZENoYW5nZSIp
LHRoaXMuX29uZVdheXx8bC5yZW1vdmVPYnNlcnZlcih0aGlzLl90b09iaix0aGlzLl90byx0aGlz
LCJ0b0RpZENoYW5nZSIpLHRoaXMuX3JlYWR5VG9TeW5jPSExLHRoaXN9LGZyb21EaWRDaGFuZ2U6
ZnVuY3Rpb24oZSl7dGhpcy5fc2NoZWR1bGVTeW5jKCJmd2QiKX0sdG9EaWRDaGFuZ2U6ZnVuY3Rp
b24oZSl7dGhpcy5fc2NoZWR1bGVTeW5jKCJiYWNrIil9LF9zY2hlZHVsZVN5bmM6ZnVuY3Rpb24o
ZSl7dmFyIHQ9dGhpcy5fZGlyZWN0aW9uO3ZvaWQgMD09PXQmJihuLmRlZmF1bHQuc2NoZWR1bGUo
InN5bmMiLHRoaXMsIl9zeW5jIiksdGhpcy5fZGlyZWN0aW9uPWUpLCJiYWNrIj09PXQmJiJmd2Qi
PT09ZSYmKHRoaXMuX2RpcmVjdGlvbj0iZndkIil9LF9zeW5jOmZ1bmN0aW9uKCl7dmFyIGU9dC5k
ZWZhdWx0LkxPR19CSU5ESU5HUyxuPXRoaXMuX3RvT2JqO2lmKCFuLmlzRGVzdHJveWVkJiZ0aGlz
Ll9yZWFkeVRvU3luYyl7dmFyIGk9dGhpcy5fZGlyZWN0aW9uLHM9dGhpcy5fZnJvbU9iaix1PXRo
aXMuX2Zyb21QYXRoO2lmKHRoaXMuX2RpcmVjdGlvbj12b2lkIDAsImZ3ZCI9PT1pKXt2YXIgYz1v
LmdldChzLHUpO2UmJnIuZGVmYXVsdC5sb2coIiAiLHRoaXMudG9TdHJpbmcoKSwiLT4iLGMscyks
dGhpcy5fb25lV2F5P2EudHJ5U2V0KG4sdGhpcy5fdG8sYyk6bC5fc3VzcGVuZE9ic2VydmVyKG4s
dGhpcy5fdG8sdGhpcywidG9EaWRDaGFuZ2UiLGZ1bmN0aW9uKCl7YS50cnlTZXQobix0aGlzLl90
byxjKX0pfWVsc2UgaWYoImJhY2siPT09aSl7dmFyIGY9by5nZXQobix0aGlzLl90byk7ZSYmci5k
ZWZhdWx0LmxvZygiICIsdGhpcy50b1N0cmluZygpLCI8LSIsZixuKSxsLl9zdXNwZW5kT2JzZXJ2
ZXIocyx1LHRoaXMsImZyb21EaWRDaGFuZ2UiLGZ1bmN0aW9uKCl7YS50cnlTZXQocyx1LGYpfSl9
fX19LGQoZix7ZnJvbTpmdW5jdGlvbihlKXt2YXIgdD10aGlzO3JldHVybiBuZXcgdCh2b2lkIDAs
ZSl9LHRvOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7cmV0dXJuIG5ldyB0KGUsdm9pZCAwKX19KSxl
LkJpbmRpbmc9Zn0pLGUoImVtYmVyLW1ldGFsL2NhY2hlIixbImV4cG9ydHMiLCJlbWJlci1tZXRh
bC9lbXB0eV9vYmplY3QiXSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUs
cil7dGhpcy5zdG9yZT1uZXcgdC5kZWZhdWx0LHRoaXMuc2l6ZT0wLHRoaXMubWlzc2VzPTAsdGhp
cy5oaXRzPTAsdGhpcy5saW1pdD1lLHRoaXMuZnVuYz1yfWUuZGVmYXVsdD1yO3ZhciBuPWZ1bmN0
aW9uKCl7fTtyLnByb3RvdHlwZT17c2V0OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMubGltaXQ+
dGhpcy5zaXplJiYodGhpcy5zaXplKyssdm9pZCAwPT09dD90aGlzLnN0b3JlW2VdPW46dGhpcy5z
dG9yZVtlXT10KSx0fSxnZXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5zdG9yZVtlXTtyZXR1cm4g
dm9pZCAwPT09dD8odGhpcy5taXNzZXMrKyx0PXRoaXMuc2V0KGUsdGhpcy5mdW5jKGUpKSk6dD09
PW4/KHRoaXMuaGl0cysrLHQ9dm9pZCAwKTp0aGlzLmhpdHMrKyx0fSxwdXJnZTpmdW5jdGlvbigp
e3RoaXMuc3RvcmU9bmV3IHQuZGVmYXVsdCx0aGlzLnNpemU9MCx0aGlzLmhpdHM9MCx0aGlzLm1p
c3Nlcz0wfX19KSxlKCJlbWJlci1tZXRhbC9jaGFpbnMiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFs
L3Byb3BlcnR5X2dldCIsImVtYmVyLW1ldGFsL21ldGEiLCJlbWJlci1tZXRhbC93YXRjaF9rZXki
LCJlbWJlci1tZXRhbC9lbXB0eV9vYmplY3QiXSxmdW5jdGlvbihlLHQscixuLGkpeyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiBvKGUpe3JldHVybiBlLm1hdGNoKG0pWzBdfWZ1bmN0aW9uIGEoZSl7cmV0
dXJuIGUmJiJvYmplY3QiPT10eXBlb2YgZX1mdW5jdGlvbiBzKGUpe3JldHVybiEoYShlKSYmZS5p
c0Rlc2NyaXB0b3ImJmUuX3ZvbGF0aWxlPT09ITEpfWZ1bmN0aW9uIHUoKXt0aGlzLmNoYWlucz1u
ZXcgaS5kZWZhdWx0fWZ1bmN0aW9uIGwoKXtyZXR1cm4gbmV3IHV9ZnVuY3Rpb24gYyhlLHQsaSl7
aWYoYShlKSl7dmFyIG89ci5tZXRhKGUpO28ud3JpdGFibGVDaGFpbldhdGNoZXJzKGwpLmFkZCh0
LGkpLG4ud2F0Y2hLZXkoZSx0LG8pfX1mdW5jdGlvbiBmKGUsdCxpKXtpZihhKGUpKXt2YXIgbz1y
LnBlZWtNZXRhKGUpO28mJm8ucmVhZGFibGVDaGFpbldhdGNoZXJzKCkmJihvPXIubWV0YShlKSxv
LnJlYWRhYmxlQ2hhaW5XYXRjaGVycygpLnJlbW92ZSh0LGkpLG4udW53YXRjaEtleShlLHQsbykp
fX1mdW5jdGlvbiBkKGUsdCxyKXt0aGlzLl9wYXJlbnQ9ZSx0aGlzLl9rZXk9dCx0aGlzLl93YXRj
aGluZz12b2lkIDA9PT1yLHRoaXMuX2NoYWlucz12b2lkIDAsdGhpcy5fb2JqZWN0PXZvaWQgMCx0
aGlzLmNvdW50PTAsdGhpcy5fdmFsdWU9cix0aGlzLl9wYXRocz17fSx0aGlzLl93YXRjaGluZyYm
KHRoaXMuX29iamVjdD1lLnZhbHVlKCksdGhpcy5fb2JqZWN0JiZjKHRoaXMuX29iamVjdCx0aGlz
Ll9rZXksdGhpcykpfWZ1bmN0aW9uIHAoZSxuKXtpZihlKXt2YXIgaT1yLnBlZWtNZXRhKGUpO2lm
KCFpfHxpLnByb3RvIT09ZSl7aWYocyhlW25dKSlyZXR1cm4gdC5nZXQoZSxuKTt2YXIgbz1pLnJl
YWRhYmxlQ2FjaGUoKTtyZXR1cm4gbyYmbiBpbiBvP29bbl06dm9pZCAwfX19ZnVuY3Rpb24gaChl
KXt2YXIgdD1yLnBlZWtNZXRhKGUpO2lmKHQpe3Q9ci5tZXRhKGUpO3ZhciBuPXQucmVhZGFibGVD
aGFpbldhdGNoZXJzKCk7biYmbi5yZXZhbGlkYXRlQWxsKCksdC5yZWFkYWJsZUNoYWlucygpJiZ0
LndyaXRhYmxlQ2hhaW5zKCl9fWUuZmluaXNoQ2hhaW5zPWg7dmFyIG09L14oW15cLl0rKS87dS5w
cm90b3R5cGU9e2FkZDpmdW5jdGlvbihlLHQpe3ZhciByPXRoaXMuY2hhaW5zW2VdO3ZvaWQgMD09
PXI/dGhpcy5jaGFpbnNbZV09W3RdOnIucHVzaCh0KX0scmVtb3ZlOmZ1bmN0aW9uKGUsdCl7dmFy
IHI9dGhpcy5jaGFpbnNbZV07aWYocilmb3IodmFyIG49MCxpPXIubGVuZ3RoO248aTtuKyspaWYo
cltuXT09PXQpe3Iuc3BsaWNlKG4sMSk7YnJlYWt9fSxoYXM6ZnVuY3Rpb24oZSx0KXt2YXIgcj10
aGlzLmNoYWluc1tlXTtpZihyKWZvcih2YXIgbj0wLGk9ci5sZW5ndGg7bjxpO24rKylpZihyW25d
PT09dClyZXR1cm4hMDtyZXR1cm4hMX0scmV2YWxpZGF0ZUFsbDpmdW5jdGlvbigpe2Zvcih2YXIg
ZSBpbiB0aGlzLmNoYWlucyl0aGlzLm5vdGlmeShlLCEwLHZvaWQgMCl9LHJldmFsaWRhdGU6ZnVu
Y3Rpb24oZSl7dGhpcy5ub3RpZnkoZSwhMCx2b2lkIDApfSxub3RpZnk6ZnVuY3Rpb24oZSx0LHIp
e3ZhciBuPXRoaXMuY2hhaW5zW2VdO2lmKHZvaWQgMCE9PW4mJjAhPT1uLmxlbmd0aCl7dmFyIGk9
dm9pZCAwO3ImJihpPVtdKTtmb3IodmFyIG89MCxhPW4ubGVuZ3RoO288YTtvKyspbltvXS5ub3Rp
ZnkodCxpKTtpZih2b2lkIDAhPT1yKWZvcih2YXIgbz0wLGE9aS5sZW5ndGg7bzxhO28rPTIpe3Zh
ciBzPWlbb10sdT1pW28rMV07cihzLHUpfX19fSxkLnByb3RvdHlwZT17dmFsdWU6ZnVuY3Rpb24o
KXtpZih2b2lkIDA9PT10aGlzLl92YWx1ZSYmdGhpcy5fd2F0Y2hpbmcpe3ZhciBlPXRoaXMuX3Bh
cmVudC52YWx1ZSgpO3RoaXMuX3ZhbHVlPXAoZSx0aGlzLl9rZXkpfXJldHVybiB0aGlzLl92YWx1
ZX0sZGVzdHJveTpmdW5jdGlvbigpe2lmKHRoaXMuX3dhdGNoaW5nKXt2YXIgZT10aGlzLl9vYmpl
Y3Q7ZSYmZihlLHRoaXMuX2tleSx0aGlzKSx0aGlzLl93YXRjaGluZz0hMX19LGNvcHk6ZnVuY3Rp
b24oZSl7dmFyIHQscj1uZXcgZChudWxsLG51bGwsZSksbj10aGlzLl9wYXRocztmb3IodCBpbiBu
KW5bdF08PTB8fHIuYWRkKHQpO3JldHVybiByfSxhZGQ6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5f
cGF0aHM7dFtlXT0odFtlXXx8MCkrMTt2YXIgcj1vKGUpLG49ZS5zbGljZShyLmxlbmd0aCsxKTt0
aGlzLmNoYWluKHIsbil9LHJlbW92ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLl9wYXRoczt0W2Vd
PjAmJnRbZV0tLTt2YXIgcj1vKGUpLG49ZS5zbGljZShyLmxlbmd0aCsxKTt0aGlzLnVuY2hhaW4o
cixuKX0sY2hhaW46ZnVuY3Rpb24oZSx0KXt2YXIgcixuPXRoaXMuX2NoYWluczt2b2lkIDA9PT1u
P249dGhpcy5fY2hhaW5zPW5ldyBpLmRlZmF1bHQ6cj1uW2VdLHZvaWQgMD09PXImJihyPW5bZV09
bmV3IGQodGhpcyxlLHZvaWQgMCkpLHIuY291bnQrKyx0JiYoZT1vKHQpLHQ9dC5zbGljZShlLmxl
bmd0aCsxKSxyLmNoYWluKGUsdCkpfSx1bmNoYWluOmZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcy5f
Y2hhaW5zLG49cltlXTtpZih0JiZ0Lmxlbmd0aD4xKXt2YXIgaT1vKHQpLGE9dC5zbGljZShpLmxl
bmd0aCsxKTtuLnVuY2hhaW4oaSxhKX1uLmNvdW50LS0sbi5jb3VudDw9MCYmKHJbbi5fa2V5XT12
b2lkIDAsbi5kZXN0cm95KCkpfSxub3RpZnk6ZnVuY3Rpb24oZSx0KXtpZihlJiZ0aGlzLl93YXRj
aGluZyl7dmFyIHI9dGhpcy5fcGFyZW50LnZhbHVlKCk7ciE9PXRoaXMuX29iamVjdCYmKGYodGhp
cy5fb2JqZWN0LHRoaXMuX2tleSx0aGlzKSx0aGlzLl9vYmplY3Q9cixjKHIsdGhpcy5fa2V5LHRo
aXMpKSx0aGlzLl92YWx1ZT12b2lkIDB9dmFyIG4saT10aGlzLl9jaGFpbnM7aWYoaSlmb3IodmFy
IG8gaW4gaSluPWlbb10sdm9pZCAwIT09biYmbi5ub3RpZnkoZSx0KTt0JiZ0aGlzLl9wYXJlbnQm
JnRoaXMuX3BhcmVudC5wb3B1bGF0ZUFmZmVjdGVkKHRoaXMuX2tleSwxLHQpfSxwb3B1bGF0ZUFm
ZmVjdGVkOmZ1bmN0aW9uKGUsdCxyKXt0aGlzLl9rZXkmJihlPXRoaXMuX2tleSsiLiIrZSksdGhp
cy5fcGFyZW50P3RoaXMuX3BhcmVudC5wb3B1bGF0ZUFmZmVjdGVkKGUsdCsxLHIpOnQ+MSYmci5w
dXNoKHRoaXMudmFsdWUoKSxlKX19LGUucmVtb3ZlQ2hhaW5XYXRjaGVyPWYsZS5DaGFpbk5vZGU9
ZH0pLGUoImVtYmVyLW1ldGFsL2NvbXB1dGVkIixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9kZWJ1
ZyIsImVtYmVyLW1ldGFsL3Byb3BlcnR5X3NldCIsImVtYmVyLW1ldGFsL3V0aWxzIiwiZW1iZXIt
bWV0YWwvbWV0YSIsImVtYmVyLW1ldGFsL2V4cGFuZF9wcm9wZXJ0aWVzIiwiZW1iZXItbWV0YWwv
ZXJyb3IiLCJlbWJlci1tZXRhbC9wcm9wZXJ0aWVzIiwiZW1iZXItbWV0YWwvcHJvcGVydHlfZXZl
bnRzIiwiZW1iZXItbWV0YWwvZGVwZW5kZW50X2tleXMiXSxmdW5jdGlvbihlLHQscixuLGksbyxh
LHMsdSxsKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYygpe31mdW5jdGlvbiBmKGUsdCl7dGhpcy5p
c0Rlc2NyaXB0b3I9ITAsImZ1bmN0aW9uIj09dHlwZW9mIGU/dGhpcy5fZ2V0dGVyPWU6KHRoaXMu
X2dldHRlcj1lLmdldCx0aGlzLl9zZXR0ZXI9ZS5zZXQpLHRoaXMuX2RlcGVuZGVudEtleXM9dm9p
ZCAwLHRoaXMuX3N1c3BlbmRlZD12b2lkIDAsdGhpcy5fbWV0YT12b2lkIDAsdGhpcy5fdm9sYXRp
bGU9ITEsdGhpcy5fZGVwZW5kZW50S2V5cz10JiZ0LmRlcGVuZGVudEtleXMsdGhpcy5fcmVhZE9u
bHk9ITF9ZnVuY3Rpb24gZChlKXt2YXIgdDthcmd1bWVudHMubGVuZ3RoPjEmJih0PVtdLnNsaWNl
LmNhbGwoYXJndW1lbnRzKSxlPXQucG9wKCkpO3ZhciByPW5ldyBmKGUpO3JldHVybiB0JiZyLnBy
b3BlcnR5LmFwcGx5KHIsdCkscn1mdW5jdGlvbiBwKGUsdCl7dmFyIHI9aS5wZWVrTWV0YShlKSxu
PXImJnIuc291cmNlPT09ZSYmci5yZWFkYWJsZUNhY2hlKCksbz1uJiZuW3RdO2lmKG8hPT1jKXJl
dHVybiBvfWUuZGVmYXVsdD1kO2YucHJvdG90eXBlPW5ldyBzLkRlc2NyaXB0b3I7dmFyIGg9Zi5w
cm90b3R5cGU7aC52b2xhdGlsZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl92b2xhdGlsZT0hMCx0
aGlzfSxoLnJlYWRPbmx5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JlYWRPbmx5PSEwLHRoaXN9
LGgucHJvcGVydHk9ZnVuY3Rpb24oKXt2YXIgZSx0PWZ1bmN0aW9uKHQpe2UucHVzaCh0KX07ZT1b
XTtmb3IodmFyIHI9MCxuPWFyZ3VtZW50cy5sZW5ndGg7cjxuO3IrKylvLmRlZmF1bHQoYXJndW1l
bnRzW3JdLHQpO3JldHVybiB0aGlzLl9kZXBlbmRlbnRLZXlzPWUsdGhpc30saC5tZXRhPWZ1bmN0
aW9uKGUpe3JldHVybiAwPT09YXJndW1lbnRzLmxlbmd0aD90aGlzLl9tZXRhfHx7fToodGhpcy5f
bWV0YT1lLHRoaXMpfSxoLmRpZENoYW5nZT1mdW5jdGlvbihlLHQpe2lmKCF0aGlzLl92b2xhdGls
ZSYmdGhpcy5fc3VzcGVuZGVkIT09ZSl7dmFyIHI9aS5wZWVrTWV0YShlKTtpZihyJiZyLnNvdXJj
ZT09PWUpe3ZhciBuPXIucmVhZGFibGVDYWNoZSgpO24mJnZvaWQgMCE9PW5bdF0mJihuW3RdPXZv
aWQgMCxsLnJlbW92ZURlcGVuZGVudEtleXModGhpcyxlLHQscikpfX19LGguZ2V0PWZ1bmN0aW9u
KGUsdCl7aWYodGhpcy5fdm9sYXRpbGUpcmV0dXJuIHRoaXMuX2dldHRlci5jYWxsKGUsdCk7dmFy
IHI9aS5tZXRhKGUpLG49ci53cml0YWJsZUNhY2hlKCksbz1uW3RdO2lmKG8hPT1jKXtpZih2b2lk
IDAhPT1vKXJldHVybiBvO3ZhciBhPXRoaXMuX2dldHRlci5jYWxsKGUsdCk7dm9pZCAwPT09YT9u
W3RdPWM6blt0XT1hO3ZhciBzPXIucmVhZGFibGVDaGFpbldhdGNoZXJzKCk7cmV0dXJuIHMmJnMu
cmV2YWxpZGF0ZSh0KSxsLmFkZERlcGVuZGVudEtleXModGhpcyxlLHQsciksYX19LGguc2V0PWZ1
bmN0aW9uKGUsdCxyKXtyZXR1cm4gdGhpcy5fcmVhZE9ubHkmJnRoaXMuX3Rocm93UmVhZE9ubHlF
cnJvcihlLHQpLHRoaXMuX3NldHRlcj90aGlzLl92b2xhdGlsZT90aGlzLnZvbGF0aWxlU2V0KGUs
dCxyKTp0aGlzLnNldFdpdGhTdXNwZW5kKGUsdCxyKTp0aGlzLmNsb2JiZXJTZXQoZSx0LHIpfSxo
Ll90aHJvd1JlYWRPbmx5RXJyb3I9ZnVuY3Rpb24oZSx0KXt0aHJvdyBuZXcgYS5kZWZhdWx0KCdD
YW5ub3Qgc2V0IHJlYWQtb25seSBwcm9wZXJ0eSAiJyt0KyciIG9uIG9iamVjdDogJytuLmluc3Bl
Y3QoZSkpfSxoLmNsb2JiZXJTZXQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciBpPXAoZSx0KTtyZXR1cm4g
cy5kZWZpbmVQcm9wZXJ0eShlLHQsbnVsbCxpKSxyLnNldChlLHQsbiksbn0saC52b2xhdGlsZVNl
dD1mdW5jdGlvbihlLHQscil7cmV0dXJuIHRoaXMuX3NldHRlci5jYWxsKGUsdCxyKX0saC5zZXRX
aXRoU3VzcGVuZD1mdW5jdGlvbihlLHQscil7dmFyIG49dGhpcy5fc3VzcGVuZGVkO3RoaXMuX3N1
c3BlbmRlZD1lO3RyeXtyZXR1cm4gdGhpcy5fc2V0KGUsdCxyKX1maW5hbGx5e3RoaXMuX3N1c3Bl
bmRlZD1ufX0saC5fc2V0PWZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1pLm1ldGEoZSksbz1uLndyaXRh
YmxlQ2FjaGUoKSxhPSExLHM9dm9pZCAwO3ZvaWQgMCE9PW9bdF0mJihvW3RdIT09YyYmKHM9b1t0
XSksYT0hMCk7dmFyIGY9dGhpcy5fc2V0dGVyLmNhbGwoZSx0LHIscyk7aWYoYSYmcz09PWYpcmV0
dXJuIGY7dmFyIGQ9bi5wZWVrV2F0Y2hpbmcodCk7cmV0dXJuIGQmJnUucHJvcGVydHlXaWxsQ2hh
bmdlKGUsdCksYSYmKG9bdF09dm9pZCAwKSxhfHxsLmFkZERlcGVuZGVudEtleXModGhpcyxlLHQs
biksdm9pZCAwPT09Zj9vW3RdPWM6b1t0XT1mLGQmJnUucHJvcGVydHlEaWRDaGFuZ2UoZSx0KSxm
fSxoLnRlYXJkb3duPWZ1bmN0aW9uKGUsdCl7aWYoIXRoaXMuX3ZvbGF0aWxlKXt2YXIgcj1pLm1l
dGEoZSksbj1yLnJlYWRhYmxlQ2FjaGUoKTtuJiZ2b2lkIDAhPT1uW3RdJiYobC5yZW1vdmVEZXBl
bmRlbnRLZXlzKHRoaXMsZSx0LHIpLG5bdF09dm9pZCAwKX19LHAuc2V0PWZ1bmN0aW9uKGUsdCxy
KXt2b2lkIDA9PT1yP2VbdF09YzplW3RdPXJ9LHAuZ2V0PWZ1bmN0aW9uKGUsdCl7dmFyIHI9ZVt0
XTtpZihyIT09YylyZXR1cm4gcn0scC5yZW1vdmU9ZnVuY3Rpb24oZSx0KXtlW3RdPXZvaWQgMH0s
ZS5Db21wdXRlZFByb3BlcnR5PWYsZS5jb21wdXRlZD1kLGUuY2FjaGVGb3I9cH0pLGUoImVtYmVy
LW1ldGFsL2NvbXB1dGVkX21hY3JvcyIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvZGVidWciLCJl
bWJlci1tZXRhbC9wcm9wZXJ0eV9nZXQiLCJlbWJlci1tZXRhbC9wcm9wZXJ0eV9zZXQiLCJlbWJl
ci1tZXRhbC9jb21wdXRlZCIsImVtYmVyLW1ldGFsL2lzX2VtcHR5IiwiZW1iZXItbWV0YWwvaXNf
bm9uZSIsImVtYmVyLW1ldGFsL2FsaWFzIiwiZW1iZXItbWV0YWwvZXhwYW5kX3Byb3BlcnRpZXMi
XSxmdW5jdGlvbihlLHQscixuLGksbyxhLHMsdSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGwoZSx0
KXtmb3IodmFyIG49e30saT0wO2k8dC5sZW5ndGg7aSsrKW5bdFtpXV09ci5nZXQoZSx0W2ldKTty
ZXR1cm4gbn1mdW5jdGlvbiBjKGUpe3JldHVybiBmdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7ci5w
dXNoKGUpfWZvcih2YXIgcj1bXSxuPWkuY29tcHV0ZWQoZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBs
eSh0aGlzLFtsKHRoaXMscildKX0pLG89YXJndW1lbnRzLmxlbmd0aCxhPUFycmF5KG8pLHM9MDtz
PG87cysrKWFbc109YXJndW1lbnRzW3NdO2Zvcih2YXIgYz0wO2M8YS5sZW5ndGg7YysrKXUuZGVm
YXVsdChhW2NdLHQpO3JldHVybiBuLnByb3BlcnR5LmFwcGx5KG4scil9fWZ1bmN0aW9uIGYoZSl7
cmV0dXJuIGkuY29tcHV0ZWQoZSsiLmxlbmd0aCIsZnVuY3Rpb24oKXtyZXR1cm4gby5kZWZhdWx0
KHIuZ2V0KHRoaXMsZSkpfSl9ZnVuY3Rpb24gZChlKXtyZXR1cm4gaS5jb21wdXRlZChlKyIubGVu
Z3RoIixmdW5jdGlvbigpe3JldHVybiFvLmRlZmF1bHQoci5nZXQodGhpcyxlKSl9KX1mdW5jdGlv
biBwKGUpe3JldHVybiBpLmNvbXB1dGVkKGUsZnVuY3Rpb24oKXtyZXR1cm4gYS5kZWZhdWx0KHIu
Z2V0KHRoaXMsZSkpfSl9ZnVuY3Rpb24gaChlKXtyZXR1cm4gaS5jb21wdXRlZChlLGZ1bmN0aW9u
KCl7cmV0dXJuIXIuZ2V0KHRoaXMsZSl9KX1mdW5jdGlvbiBtKGUpe3JldHVybiBpLmNvbXB1dGVk
KGUsZnVuY3Rpb24oKXtyZXR1cm4hIXIuZ2V0KHRoaXMsZSl9KX1mdW5jdGlvbiB2KGUsdCl7cmV0
dXJuIGkuY29tcHV0ZWQoZSxmdW5jdGlvbigpe3ZhciBuPXIuZ2V0KHRoaXMsZSk7cmV0dXJuInN0
cmluZyI9PXR5cGVvZiBuJiZ0LnRlc3Qobil9KX1mdW5jdGlvbiBiKGUsdCl7cmV0dXJuIGkuY29t
cHV0ZWQoZSxmdW5jdGlvbigpe3JldHVybiByLmdldCh0aGlzLGUpPT09dH0pfWZ1bmN0aW9uIGco
ZSx0KXtyZXR1cm4gaS5jb21wdXRlZChlLGZ1bmN0aW9uKCl7cmV0dXJuIHIuZ2V0KHRoaXMsZSk+
dH0pfWZ1bmN0aW9uIHkoZSx0KXtyZXR1cm4gaS5jb21wdXRlZChlLGZ1bmN0aW9uKCl7cmV0dXJu
IHIuZ2V0KHRoaXMsZSk+PXR9KX1mdW5jdGlvbiBfKGUsdCl7cmV0dXJuIGkuY29tcHV0ZWQoZSxm
dW5jdGlvbigpe3JldHVybiByLmdldCh0aGlzLGUpPHR9KX1mdW5jdGlvbiB3KGUsdCl7cmV0dXJu
IGkuY29tcHV0ZWQoZSxmdW5jdGlvbigpe3JldHVybiByLmdldCh0aGlzLGUpPD10fSl9ZnVuY3Rp
b24geChlKXtyZXR1cm4gcy5kZWZhdWx0KGUpLm9uZVdheSgpfWZ1bmN0aW9uIGsoZSl7cmV0dXJu
IHMuZGVmYXVsdChlKS5yZWFkT25seSgpfWZ1bmN0aW9uIEMoZSx0KXtyZXR1cm4gaS5jb21wdXRl
ZChlLHtnZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHIuZ2V0KHRoaXMsZSl9LHNldDpmdW5jdGlvbih0
LHIpe3JldHVybiBuLnNldCh0aGlzLGUscikscn19KX1lLmVtcHR5PWYsZS5ub3RFbXB0eT1kLGUu
bm9uZT1wLGUubm90PWgsZS5ib29sPW0sZS5tYXRjaD12LGUuZXF1YWw9YixlLmd0PWcsZS5ndGU9
eSxlLmx0PV8sZS5sdGU9dyxlLm9uZVdheT14LGUucmVhZE9ubHk9ayxlLmRlcHJlY2F0aW5nQWxp
YXM9Qzt2YXIgRT1jKGZ1bmN0aW9uKGUpe3ZhciB0O2Zvcih2YXIgciBpbiBlKWlmKHQ9ZVtyXSxl
Lmhhc093blByb3BlcnR5KHIpJiYhdClyZXR1cm4gdDtyZXR1cm4gdH0pO2UuYW5kPUU7dmFyIE89
YyhmdW5jdGlvbihlKXt2YXIgdDtmb3IodmFyIHIgaW4gZSlpZih0PWVbcl0sZS5oYXNPd25Qcm9w
ZXJ0eShyKSYmdClyZXR1cm4gdDtyZXR1cm4gdH0pO2Uub3I9T30pLGUoImVtYmVyLW1ldGFsL2Nv
cmUiLFsiZXhwb3J0cyIsInJlcXVpcmUiXSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiByKCl7cmV0dXJuIHRoaXN9InVuZGVmaW5lZCI9PXR5cGVvZiBuJiYobj17fSk7dmFyIG89
aXx8e307bi5pbXBvcnRzPW4uaW1wb3J0c3x8byxuLmxvb2t1cD1uLmxvb2t1cHx8bzt2YXIgYT1u
LmV4cG9ydHM9bi5leHBvcnRzfHxvO2EuRW09YS5FbWJlcj1uLG4uaXNOYW1lc3BhY2U9ITAsbi50
b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJFbWJlciJ9O3ZhciBzPXQuZGVmYXVsdCgiZW1iZXIt
bWV0YWwvZGVidWciKTtuLmFzc2VydD1zLmFzc2VydCxuLndhcm49cy53YXJuLAorbi5kZWJ1Zz1z
LmRlYnVnLG4uZGVwcmVjYXRlPXMuZGVwcmVjYXRlLG4uZGVwcmVjYXRlRnVuYz1zLmRlcHJlY2F0
ZUZ1bmMsbi5ydW5JbkRlYnVnPXMucnVuSW5EZWJ1ZyxuLlZFUlNJT049IjIuNi4yIixuLkVOVj9u
LmFzc2VydCgiRW1iZXIuRU5WIHNob3VsZCBiZSBhbiBvYmplY3QuIiwib2JqZWN0IiE9dHlwZW9m
IG4uRU5WKToidW5kZWZpbmVkIiE9dHlwZW9mIEVtYmVyRU5WP24uRU5WPUVtYmVyRU5WOiJ1bmRl
ZmluZWQiIT10eXBlb2YgRU5WP24uRU5WPUVOVjpuLkVOVj17fSxuLkVOVi5FTkFCTEVfQUxMX0ZF
QVRVUkVTJiYobi5FTlYuRU5BQkxFX09QVElPTkFMX0ZFQVRVUkVTPW4uRU5WLkVOQUJMRV9BTExf
RkVBVFVSRVMpLG4uY29uZmlnPW4uY29uZmlnfHx7fSxuLkVYVEVORF9QUk9UT1RZUEVTPW4uRU5W
LkVYVEVORF9QUk9UT1RZUEVTLCJ1bmRlZmluZWQiPT10eXBlb2Ygbi5FWFRFTkRfUFJPVE9UWVBF
UyYmKG4uRVhURU5EX1BST1RPVFlQRVM9ITApLG4uTE9HX1NUQUNLVFJBQ0VfT05fREVQUkVDQVRJ
T049bi5FTlYuTE9HX1NUQUNLVFJBQ0VfT05fREVQUkVDQVRJT04hPT0hMSxuLkxPR19WRVJTSU9O
PW4uRU5WLkxPR19WRVJTSU9OIT09ITEsZS5LPXIsbi5LPXIsZS5kZWZhdWx0PW59KSxlKCJlbWJl
ci1tZXRhbC9kZWJ1ZyIsWyJleHBvcnRzIl0sZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHQoZSl7cmV0dXJuIGZbZV19ZnVuY3Rpb24gcihlLHQpe2ZbZV09dH1mdW5jdGlvbiBuKCl7
cmV0dXJuIGYuYXNzZXJ0LmFwcGx5KHZvaWQgMCxhcmd1bWVudHMpfWZ1bmN0aW9uIGkoKXtyZXR1
cm4gZi5pbmZvLmFwcGx5KHZvaWQgMCxhcmd1bWVudHMpfWZ1bmN0aW9uIG8oKXtyZXR1cm4gZi53
YXJuLmFwcGx5KHZvaWQgMCxhcmd1bWVudHMpfWZ1bmN0aW9uIGEoKXtyZXR1cm4gZi5kZWJ1Zy5h
cHBseSh2b2lkIDAsYXJndW1lbnRzKX1mdW5jdGlvbiBzKCl7cmV0dXJuIGYuZGVwcmVjYXRlLmFw
cGx5KHZvaWQgMCxhcmd1bWVudHMpfWZ1bmN0aW9uIHUoKXtyZXR1cm4gZi5kZXByZWNhdGVGdW5j
LmFwcGx5KHZvaWQgMCxhcmd1bWVudHMpfWZ1bmN0aW9uIGwoKXtyZXR1cm4gZi5ydW5JbkRlYnVn
LmFwcGx5KHZvaWQgMCxhcmd1bWVudHMpfWZ1bmN0aW9uIGMoKXtyZXR1cm4gZi5kZWJ1Z1NlYWwu
YXBwbHkodm9pZCAwLGFyZ3VtZW50cyl9ZS5nZXREZWJ1Z0Z1bmN0aW9uPXQsZS5zZXREZWJ1Z0Z1
bmN0aW9uPXIsZS5hc3NlcnQ9bixlLmluZm89aSxlLndhcm49byxlLmRlYnVnPWEsZS5kZXByZWNh
dGU9cyxlLmRlcHJlY2F0ZUZ1bmM9dSxlLnJ1bkluRGVidWc9bCxlLmRlYnVnU2VhbD1jO3ZhciBm
PXthc3NlcnQ6ZnVuY3Rpb24oKXt9LGluZm86ZnVuY3Rpb24oKXt9LHdhcm46ZnVuY3Rpb24oKXt9
LGRlYnVnOmZ1bmN0aW9uKCl7fSxkZXByZWNhdGU6ZnVuY3Rpb24oKXt9LGRlcHJlY2F0ZUZ1bmM6
ZnVuY3Rpb24oKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCx0PUFycmF5KGUpLHI9MDtyPGU7
cisrKXRbcl09YXJndW1lbnRzW3JdO3JldHVybiB0W3QubGVuZ3RoLTFdfSxydW5JbkRlYnVnOmZ1
bmN0aW9uKCl7fSxkZWJ1Z1NlYWw6ZnVuY3Rpb24oKXt9fTtlLmRlYnVnRnVuY3Rpb25zPWZ9KSxl
KCJlbWJlci1tZXRhbC9kZXBlbmRlbnRfa2V5cyIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvd2F0
Y2hpbmciXSxmdW5jdGlvbihlLHQpeyJubyB1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUscixuLGkp
e3ZhciBvLGEscyx1PWUuX2RlcGVuZGVudEtleXM7aWYodSlmb3Iobz0wLGE9dS5sZW5ndGg7bzxh
O28rKylzPXVbb10saS53cml0ZURlcHMocyxuLChpLnBlZWtEZXBzKHMsbil8fDApKzEpLHQud2F0
Y2gocixzLGkpfWZ1bmN0aW9uIG4oZSxyLG4saSl7dmFyIG8sYSxzLHU9ZS5fZGVwZW5kZW50S2V5
cztpZih1KWZvcihvPTAsYT11Lmxlbmd0aDtvPGE7bysrKXM9dVtvXSxpLndyaXRlRGVwcyhzLG4s
KGkucGVla0RlcHMocyxuKXx8MCktMSksdC51bndhdGNoKHIscyxpKX1lLmFkZERlcGVuZGVudEtl
eXM9cixlLnJlbW92ZURlcGVuZGVudEtleXM9bn0pLGUoImVtYmVyLW1ldGFsL2RlcHJlY2F0ZV9w
cm9wZXJ0eSIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvZGVidWciLCJlbWJlci1tZXRhbC9wcm9w
ZXJ0eV9nZXQiLCJlbWJlci1tZXRhbC9wcm9wZXJ0eV9zZXQiXSxmdW5jdGlvbihlLHQscixuKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlLHQsaSxvKXtmdW5jdGlvbiBhKCl7fU9iamVjdC5kZWZp
bmVQcm9wZXJ0eShlLHQse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiExLHNldDpmdW5jdGlv
bihlKXthKCksbi5zZXQodGhpcyxpLGUpfSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYSgpLHIuZ2V0
KHRoaXMsaSl9fSl9ZS5kZXByZWNhdGVQcm9wZXJ0eT1pfSksZSgiZW1iZXItbWV0YWwvZGljdGlv
bmFyeSIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvZW1wdHlfb2JqZWN0Il0sZnVuY3Rpb24oZSx0
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIgcjtyZXR1cm4gcj1udWxsPT09ZT9uZXcg
dC5kZWZhdWx0Ok9iamVjdC5jcmVhdGUoZSksci5fZGljdD1udWxsLGRlbGV0ZSByLl9kaWN0LHJ9
ZS5kZWZhdWx0PXJ9KSxlKCJlbWJlci1tZXRhbC9lbXB0eV9vYmplY3QiLFsiZXhwb3J0cyJdLGZ1
bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB0KCl7fXZhciByPU9iamVjdC5jcmVhdGUo
bnVsbCx7Y29uc3RydWN0b3I6e3ZhbHVlOnZvaWQgMCxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEw
fX0pO3QucHJvdG90eXBlPXIsZS5kZWZhdWx0PXR9KSxlKCJlbWJlci1tZXRhbC9lbnZpcm9ubWVu
dCIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvY29yZSJdLGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJp
Y3QiO3ZhciByLG49InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJiJ1bmRlZmluZWQiIT10eXBl
b2YgZG9jdW1lbnQmJiJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCYm
IXQuZGVmYXVsdC5FTlYuZGlzYWJsZUJyb3dzZXJFbnZpcm9ubWVudDtyPW4/e2hhc0RPTTohMCxp
c0Nocm9tZTohIXdpbmRvdy5jaHJvbWUmJiF3aW5kb3cub3BlcmEsaXNGaXJlZm94OiJ1bmRlZmlu
ZWQiIT10eXBlb2YgSW5zdGFsbFRyaWdnZXIsaXNQaGFudG9tOiEhd2luZG93LmNhbGxQaGFudG9t
LGxvY2F0aW9uOndpbmRvdy5sb2NhdGlvbixoaXN0b3J5OndpbmRvdy5oaXN0b3J5LHVzZXJBZ2Vu
dDp3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudCxnbG9iYWw6d2luZG93fTp7aGFzRE9NOiExLGlz
Q2hyb21lOiExLGlzRmlyZWZveDohMSxpc1BoYW50b206ITEsbG9jYXRpb246bnVsbCxoaXN0b3J5
Om51bGwsdXNlckFnZW50OiJMeW54ICh0ZXh0bW9kZSkiLGdsb2JhbDpudWxsfSxlLmRlZmF1bHQ9
cn0pLGUoImVtYmVyLW1ldGFsL2Vycm9yIixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9jb3JlIl0s
ZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe3ZhciBlPUVycm9yLmFwcGx5
KHRoaXMsYXJndW1lbnRzKTtFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSYmRXJyb3IuY2FwdHVyZVN0
YWNrVHJhY2UodGhpcyx0LmRlZmF1bHQuRXJyb3IpO2Zvcih2YXIgcj0wO3I8bi5sZW5ndGg7cisr
KXRoaXNbbltyXV09ZVtuW3JdXX1lLmRlZmF1bHQ9cjt2YXIgbj1bImRlc2NyaXB0aW9uIiwiZmls
ZU5hbWUiLCJsaW5lTnVtYmVyIiwibWVzc2FnZSIsIm5hbWUiLCJudW1iZXIiLCJzdGFjayJdO3Iu
cHJvdG90eXBlPU9iamVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKX0pLGUoImVtYmVyLW1ldGFs
L2V2ZW50cyIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvZGVidWciLCJlbWJlci1tZXRhbC91dGls
cyIsImVtYmVyLW1ldGFsL21ldGEiLCJlbWJlci1tZXRhbC9tZXRhX2xpc3RlbmVycyJdLGZ1bmN0
aW9uKGUsdCxyLG4saSl7Im5vIHVzZSBzdHJpY3QiO2Z1bmN0aW9uIG8oZSx0LHIpe2Zvcih2YXIg
bj0tMSxpPWUubGVuZ3RoLTM7aT49MDtpLT0zKWlmKHQ9PT1lW2ldJiZyPT09ZVtpKzFdKXtuPWk7
YnJlYWt9cmV0dXJuIG59ZnVuY3Rpb24gYShlLHQscil7dmFyIGk9bi5wZWVrTWV0YShlKTtpZihp
KXtmb3IodmFyIGE9aS5tYXRjaGluZ0xpc3RlbmVycyh0KSxzPVtdLHU9YS5sZW5ndGgtMzt1Pj0w
O3UtPTMpe3ZhciBsPWFbdV0sYz1hW3UrMV0sZj1hW3UrMl0sZD1vKHIsbCxjKTtkPT09LTEmJihy
LnB1c2gobCxjLGYpLHMucHVzaChsLGMsZikpfXJldHVybiBzfX1mdW5jdGlvbiBzKGUsdCxyLG8s
YSl7b3x8ImZ1bmN0aW9uIiE9dHlwZW9mIHJ8fChvPXIscj1udWxsKTt2YXIgcz0wO2EmJihzfD1p
Lk9OQ0UpLG4ubWV0YShlKS5hZGRUb0xpc3RlbmVycyh0LHIsbyxzKSwiZnVuY3Rpb24iPT10eXBl
b2YgZS5kaWRBZGRMaXN0ZW5lciYmZS5kaWRBZGRMaXN0ZW5lcih0LHIsbyl9ZnVuY3Rpb24gdShl
LHQscixpKXtpfHwiZnVuY3Rpb24iIT10eXBlb2Ygcnx8KGk9cixyPW51bGwpLG4ubWV0YShlKS5y
ZW1vdmVGcm9tTGlzdGVuZXJzKHQscixpLGZ1bmN0aW9uKCl7ImZ1bmN0aW9uIj09dHlwZW9mIGUu
ZGlkUmVtb3ZlTGlzdGVuZXImJmUuZGlkUmVtb3ZlTGlzdGVuZXIuYXBwbHkoZSxhcmd1bWVudHMp
fSl9ZnVuY3Rpb24gbChlLHQscixuLGkpe3JldHVybiBjKGUsW3RdLHIsbixpKX1mdW5jdGlvbiBj
KGUsdCxyLGksbyl7cmV0dXJuIGl8fCJmdW5jdGlvbiIhPXR5cGVvZiByfHwoaT1yLHI9bnVsbCks
bi5tZXRhKGUpLnN1c3BlbmRMaXN0ZW5lcnModCxyLGksbyl9ZnVuY3Rpb24gZihlKXtyZXR1cm4g
bi5tZXRhKGUpLndhdGNoZWRFdmVudHMoKX1mdW5jdGlvbiBkKGUsdCxvLGEpe2lmKCFhKXt2YXIg
cz1uLnBlZWtNZXRhKGUpO2E9cyYmcy5tYXRjaGluZ0xpc3RlbmVycyh0KX1pZihhJiYwIT09YS5s
ZW5ndGgpe2Zvcih2YXIgbD1hLmxlbmd0aC0zO2w+PTA7bC09Myl7dmFyIGM9YVtsXSxmPWFbbCsx
XSxkPWFbbCsyXTtmJiYoZCZpLlNVU1BFTkRFRHx8KGQmaS5PTkNFJiZ1KGUsdCxjLGYpLGN8fChj
PWUpLCJzdHJpbmciPT10eXBlb2YgZj9vP3IuYXBwbHlTdHIoYyxmLG8pOmNbZl0oKTpvP2YuYXBw
bHkoYyxvKTpmLmNhbGwoYykpKX1yZXR1cm4hMH19ZnVuY3Rpb24gcChlLHQpe3ZhciByPW4ucGVl
a01ldGEoZSk7cmV0dXJuISFyJiZyLm1hdGNoaW5nTGlzdGVuZXJzKHQpLmxlbmd0aD4wfWZ1bmN0
aW9uIGgoZSx0KXt2YXIgcj1bXSxpPW4ucGVla01ldGEoZSksbz1pJiZpLm1hdGNoaW5nTGlzdGVu
ZXJzKHQpO2lmKCFvKXJldHVybiByO2Zvcih2YXIgYT0wLHM9by5sZW5ndGg7YTxzO2ErPTMpe3Zh
ciB1PW9bYV0sbD1vW2ErMV07ci5wdXNoKFt1LGxdKX1yZXR1cm4gcn1mdW5jdGlvbiBtKCl7Zm9y
KHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsdD1BcnJheShlKSxyPTA7cjxlO3IrKyl0W3JdPWFyZ3Vt
ZW50c1tyXTt2YXIgbj10LnBvcCgpLGk9dDtyZXR1cm4gbi5fX2VtYmVyX2xpc3RlbnNfXz1pLG59
ZS5hY2N1bXVsYXRlTGlzdGVuZXJzPWEsZS5hZGRMaXN0ZW5lcj1zLGUucmVtb3ZlTGlzdGVuZXI9
dSxlLnN1c3BlbmRMaXN0ZW5lcj1sLGUuc3VzcGVuZExpc3RlbmVycz1jLGUud2F0Y2hlZEV2ZW50
cz1mLGUuc2VuZEV2ZW50PWQsZS5oYXNMaXN0ZW5lcnM9cCxlLmxpc3RlbmVyc0Zvcj1oLGUub249
bX0pLGUoImVtYmVyLW1ldGFsL2V4cGFuZF9wcm9wZXJ0aWVzIixbImV4cG9ydHMiLCJlbWJlci1t
ZXRhbC9kZWJ1ZyJdLGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXtm
b3IodmFyIHI9ZS5zcGxpdChpKSxhPVtyXSxzPTA7czxyLmxlbmd0aDtzKyspe3ZhciB1PXJbc107
dS5pbmRleE9mKCIsIik+PTAmJihhPW4oYSx1LnNwbGl0KCIsIikscykpfWZvcih2YXIgcz0wO3M8
YS5sZW5ndGg7cysrKXQoYVtzXS5qb2luKCIiKS5yZXBsYWNlKG8sIi5bXSIpKX1mdW5jdGlvbiBu
KGUsdCxyKXt2YXIgbj1bXTtyZXR1cm4gZS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3QuZm9yRWFjaChm
dW5jdGlvbih0KXt2YXIgaT1lLnNsaWNlKDApO2lbcl09dCxuLnB1c2goaSl9KX0pLG59ZS5kZWZh
dWx0PXI7dmFyIGk9L1x7fFx9LyxvPS9cLkBlYWNoJC99KSxlKCJlbWJlci1tZXRhbC9mZWF0dXJl
cyIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvY29yZSIsImVtYmVyLW1ldGFsL2Fzc2lnbiJdLGZ1
bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlKXt2YXIgcj1vW2VdO3JldHVy
biByPT09ITB8fHI9PT0hMXx8dm9pZCAwPT09cj9yOiEhdC5kZWZhdWx0LkVOVi5FTkFCTEVfT1BU
SU9OQUxfRkVBVFVSRVN9ZS5kZWZhdWx0PW47dmFyIGk9e307ZS5LTk9XTl9GRUFUVVJFUz1pO3Zh
ciBvPXIuZGVmYXVsdChpLHQuZGVmYXVsdC5FTlYuRkVBVFVSRVMpO2UuRkVBVFVSRVM9b30pLGUo
ImVtYmVyLW1ldGFsL2dldF9wcm9wZXJ0aWVzIixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9wcm9w
ZXJ0eV9nZXQiXSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3ZhciBy
PXt9LG49YXJndW1lbnRzLGk9MTsyPT09YXJndW1lbnRzLmxlbmd0aCYmQXJyYXkuaXNBcnJheShh
cmd1bWVudHNbMV0pJiYoaT0wLG49YXJndW1lbnRzWzFdKTtmb3IodmFyIG89bi5sZW5ndGg7aTxv
O2krKylyW25baV1dPXQuZ2V0KGUsbltpXSk7cmV0dXJuIHJ9ZS5kZWZhdWx0PXJ9KSxlKCJlbWJl
ci1tZXRhbC9pbmRleCIsWyJleHBvcnRzIiwicmVxdWlyZSIsImVtYmVyLW1ldGFsL2NvcmUiLCJl
bWJlci1tZXRhbC9kZWJ1ZyIsImVtYmVyLW1ldGFsL2ZlYXR1cmVzIiwiZW1iZXItbWV0YWwvYXNz
aWduIiwiZW1iZXItbWV0YWwvbWVyZ2UiLCJlbWJlci1tZXRhbC9pbnN0cnVtZW50YXRpb24iLCJl
bWJlci1tZXRhbC91dGlscyIsImVtYmVyLW1ldGFsL21ldGEiLCJlbWJlci1tZXRhbC9lcnJvciIs
ImVtYmVyLW1ldGFsL2NhY2hlIiwiZW1iZXItbWV0YWwvbG9nZ2VyIiwiZW1iZXItbWV0YWwvcHJv
cGVydHlfZ2V0IiwiZW1iZXItbWV0YWwvZXZlbnRzIiwiZW1iZXItbWV0YWwvb2JzZXJ2ZXJfc2V0
IiwiZW1iZXItbWV0YWwvcHJvcGVydHlfZXZlbnRzIiwiZW1iZXItbWV0YWwvcHJvcGVydGllcyIs
ImVtYmVyLW1ldGFsL3Byb3BlcnR5X3NldCIsImVtYmVyLW1ldGFsL21hcCIsImVtYmVyLW1ldGFs
L2dldF9wcm9wZXJ0aWVzIiwiZW1iZXItbWV0YWwvc2V0X3Byb3BlcnRpZXMiLCJlbWJlci1tZXRh
bC93YXRjaF9rZXkiLCJlbWJlci1tZXRhbC9jaGFpbnMiLCJlbWJlci1tZXRhbC93YXRjaF9wYXRo
IiwiZW1iZXItbWV0YWwvd2F0Y2hpbmciLCJlbWJlci1tZXRhbC9leHBhbmRfcHJvcGVydGllcyIs
ImVtYmVyLW1ldGFsL2NvbXB1dGVkIiwiZW1iZXItbWV0YWwvYWxpYXMiLCJlbWJlci1tZXRhbC9j
b21wdXRlZF9tYWNyb3MiLCJlbWJlci1tZXRhbC9vYnNlcnZlciIsImVtYmVyLW1ldGFsL21peGlu
IiwiZW1iZXItbWV0YWwvYmluZGluZyIsImVtYmVyLW1ldGFsL3BhdGhfY2FjaGUiLCJlbWJlci1t
ZXRhbC9ydW5fbG9vcCIsImVtYmVyLW1ldGFsL2xpYnJhcmllcyIsImVtYmVyLW1ldGFsL2lzX25v
bmUiLCJlbWJlci1tZXRhbC9pc19lbXB0eSIsImVtYmVyLW1ldGFsL2lzX2JsYW5rIiwiZW1iZXIt
bWV0YWwvaXNfcHJlc2VudCIsImJhY2tidXJuZXIiXSxmdW5jdGlvbihlLHQscixuLGksbyxhLHMs
dSxsLGMsZixkLHAsaCxtLHYsYixnLHksXyx3LHgsayxDLEUsTyxULE4sUyxBLFAsaixSLEwsRCxN
LEksRixILFYpeyJ1c2Ugc3RyaWN0IjtULmNvbXB1dGVkLmVtcHR5PVMuZW1wdHksVC5jb21wdXRl
ZC5ub3RFbXB0eT1TLm5vdEVtcHR5LFQuY29tcHV0ZWQubm9uZT1TLm5vbmUsVC5jb21wdXRlZC5u
b3Q9Uy5ub3QsVC5jb21wdXRlZC5ib29sPVMuYm9vbCxULmNvbXB1dGVkLm1hdGNoPVMubWF0Y2gs
VC5jb21wdXRlZC5lcXVhbD1TLmVxdWFsLFQuY29tcHV0ZWQuZ3Q9Uy5ndCxULmNvbXB1dGVkLmd0
ZT1TLmd0ZSxULmNvbXB1dGVkLmx0PVMubHQsVC5jb21wdXRlZC5sdGU9Uy5sdGUsVC5jb21wdXRl
ZC5hbGlhcz1OLmRlZmF1bHQsVC5jb21wdXRlZC5vbmVXYXk9Uy5vbmVXYXksVC5jb21wdXRlZC5y
ZWFkcz1TLm9uZVdheSxULmNvbXB1dGVkLnJlYWRPbmx5PVMucmVhZE9ubHksVC5jb21wdXRlZC5k
ZWZhdWx0VG89Uy5kZWZhdWx0VG8sVC5jb21wdXRlZC5kZXByZWNhdGluZ0FsaWFzPVMuZGVwcmVj
YXRpbmdBbGlhcyxULmNvbXB1dGVkLmFuZD1TLmFuZCxULmNvbXB1dGVkLm9yPVMub3IsVC5jb21w
dXRlZC5hbnk9Uy5hbnk7dmFyIHE9ci5kZWZhdWx0Lkluc3RydW1lbnRhdGlvbj17fTtxLmluc3Ry
dW1lbnQ9cy5pbnN0cnVtZW50LHEuc3Vic2NyaWJlPXMuc3Vic2NyaWJlLHEudW5zdWJzY3JpYmU9
cy51bnN1YnNjcmliZSxxLnJlc2V0PXMucmVzZXQsci5kZWZhdWx0Lmluc3RydW1lbnQ9cy5pbnN0
cnVtZW50LHIuZGVmYXVsdC5zdWJzY3JpYmU9cy5zdWJzY3JpYmUsci5kZWZhdWx0Ll9DYWNoZT1m
LmRlZmF1bHQsci5kZWZhdWx0LmdlbmVyYXRlR3VpZD11LmdlbmVyYXRlR3VpZCxyLmRlZmF1bHQu
R1VJRF9LRVk9dS5HVUlEX0tFWSxyLmRlZmF1bHQucGxhdGZvcm09e2RlZmluZVByb3BlcnR5OiEw
LGhhc1Byb3BlcnR5QWNjZXNzb3JzOiEwfSxyLmRlZmF1bHQuRXJyb3I9Yy5kZWZhdWx0LHIuZGVm
YXVsdC5ndWlkRm9yPXUuZ3VpZEZvcixyLmRlZmF1bHQuTUVUQV9ERVNDPWwuTUVUQV9ERVNDLHIu
ZGVmYXVsdC5tZXRhPWwubWV0YSxyLmRlZmF1bHQuaW5zcGVjdD11Lmluc3BlY3Qsci5kZWZhdWx0
LnRyeUNhdGNoRmluYWxseT11LmRlcHJlY2F0ZWRUcnlDYXRjaEZpbmFsbHksci5kZWZhdWx0Lm1h
a2VBcnJheT11Lm1ha2VBcnJheSxyLmRlZmF1bHQuY2FuSW52b2tlPXUuY2FuSW52b2tlLHIuZGVm
YXVsdC50cnlJbnZva2U9dS50cnlJbnZva2Usci5kZWZhdWx0LndyYXA9dS53cmFwLHIuZGVmYXVs
dC5hcHBseT11LmFwcGx5LHIuZGVmYXVsdC5hcHBseVN0cj11LmFwcGx5U3RyLHIuZGVmYXVsdC51
dWlkPXUudXVpZCxyLmRlZmF1bHQuTG9nZ2VyPWQuZGVmYXVsdCxyLmRlZmF1bHQuZ2V0PXAuZ2V0
LHIuZGVmYXVsdC5nZXRXaXRoRGVmYXVsdD1wLmdldFdpdGhEZWZhdWx0LHIuZGVmYXVsdC5fZ2V0
UGF0aD1wLl9nZXRQYXRoLHIuZGVmYXVsdC5vbj1oLm9uLHIuZGVmYXVsdC5hZGRMaXN0ZW5lcj1o
LmFkZExpc3RlbmVyLHIuZGVmYXVsdC5yZW1vdmVMaXN0ZW5lcj1oLnJlbW92ZUxpc3RlbmVyLHIu
ZGVmYXVsdC5fc3VzcGVuZExpc3RlbmVyPWguc3VzcGVuZExpc3RlbmVyLHIuZGVmYXVsdC5fc3Vz
cGVuZExpc3RlbmVycz1oLnN1c3BlbmRMaXN0ZW5lcnMsci5kZWZhdWx0LnNlbmRFdmVudD1oLnNl
bmRFdmVudCxyLmRlZmF1bHQuaGFzTGlzdGVuZXJzPWguaGFzTGlzdGVuZXJzLHIuZGVmYXVsdC53
YXRjaGVkRXZlbnRzPWgud2F0Y2hlZEV2ZW50cyxyLmRlZmF1bHQubGlzdGVuZXJzRm9yPWgubGlz
dGVuZXJzRm9yLHIuZGVmYXVsdC5hY2N1bXVsYXRlTGlzdGVuZXJzPWguYWNjdW11bGF0ZUxpc3Rl
bmVycyxyLmRlZmF1bHQuX09ic2VydmVyU2V0PW0uZGVmYXVsdCxyLmRlZmF1bHQucHJvcGVydHlX
aWxsQ2hhbmdlPXYucHJvcGVydHlXaWxsQ2hhbmdlLHIuZGVmYXVsdC5wcm9wZXJ0eURpZENoYW5n
ZT12LnByb3BlcnR5RGlkQ2hhbmdlLHIuZGVmYXVsdC5vdmVycmlkZUNoYWlucz12Lm92ZXJyaWRl
Q2hhaW5zLHIuZGVmYXVsdC5iZWdpblByb3BlcnR5Q2hhbmdlcz12LmJlZ2luUHJvcGVydHlDaGFu
Z2VzLHIuZGVmYXVsdC5lbmRQcm9wZXJ0eUNoYW5nZXM9di5lbmRQcm9wZXJ0eUNoYW5nZXMsci5k
ZWZhdWx0LmNoYW5nZVByb3BlcnRpZXM9di5jaGFuZ2VQcm9wZXJ0aWVzLHIuZGVmYXVsdC5kZWZp
bmVQcm9wZXJ0eT1iLmRlZmluZVByb3BlcnR5LHIuZGVmYXVsdC5zZXQ9Zy5zZXQsci5kZWZhdWx0
LnRyeVNldD1nLnRyeVNldCxyLmRlZmF1bHQuT3JkZXJlZFNldD15Lk9yZGVyZWRTZXQsci5kZWZh
dWx0Lk1hcD15Lk1hcCxyLmRlZmF1bHQuTWFwV2l0aERlZmF1bHQ9eS5NYXBXaXRoRGVmYXVsdCxy
LmRlZmF1bHQuZ2V0UHJvcGVydGllcz1fLmRlZmF1bHQsci5kZWZhdWx0LnNldFByb3BlcnRpZXM9
dy5kZWZhdWx0LHIuZGVmYXVsdC53YXRjaEtleT14LndhdGNoS2V5LHIuZGVmYXVsdC51bndhdGNo
S2V5PXgudW53YXRjaEtleSxyLmRlZmF1bHQucmVtb3ZlQ2hhaW5XYXRjaGVyPWsucmVtb3ZlQ2hh
aW5XYXRjaGVyLHIuZGVmYXVsdC5fQ2hhaW5Ob2RlPWsuQ2hhaW5Ob2RlLHIuZGVmYXVsdC5maW5p
c2hDaGFpbnM9ay5maW5pc2hDaGFpbnMsci5kZWZhdWx0LndhdGNoUGF0aD1DLndhdGNoUGF0aCxy
LmRlZmF1bHQudW53YXRjaFBhdGg9Qy51bndhdGNoUGF0aCxyLmRlZmF1bHQud2F0Y2g9RS53YXRj
aCxyLmRlZmF1bHQuaXNXYXRjaGluZz1FLmlzV2F0Y2hpbmcsci5kZWZhdWx0LnVud2F0Y2g9RS51
bndhdGNoLHIuZGVmYXVsdC5yZXdhdGNoPUUucmV3YXRjaCxyLmRlZmF1bHQuZGVzdHJveT1FLmRl
c3Ryb3ksci5kZWZhdWx0LmV4cGFuZFByb3BlcnRpZXM9Ty5kZWZhdWx0LHIuZGVmYXVsdC5Db21w
dXRlZFByb3BlcnR5PVQuQ29tcHV0ZWRQcm9wZXJ0eSxyLmRlZmF1bHQuY29tcHV0ZWQ9VC5jb21w
dXRlZCxyLmRlZmF1bHQuY2FjaGVGb3I9VC5jYWNoZUZvcixyLmRlZmF1bHQuYWRkT2JzZXJ2ZXI9
QS5hZGRPYnNlcnZlcixyLmRlZmF1bHQub2JzZXJ2ZXJzRm9yPUEub2JzZXJ2ZXJzRm9yLHIuZGVm
YXVsdC5yZW1vdmVPYnNlcnZlcj1BLnJlbW92ZU9ic2VydmVyLHIuZGVmYXVsdC5fc3VzcGVuZE9i
c2VydmVyPUEuX3N1c3BlbmRPYnNlcnZlcixyLmRlZmF1bHQuX3N1c3BlbmRPYnNlcnZlcnM9QS5f
c3VzcGVuZE9ic2VydmVycyxyLmRlZmF1bHQuSVNfQklORElORz1QLklTX0JJTkRJTkcsci5kZWZh
dWx0LnJlcXVpcmVkPVAucmVxdWlyZWQsci5kZWZhdWx0LmFsaWFzTWV0aG9kPVAuYWxpYXNNZXRo
b2Qsci5kZWZhdWx0Lm9ic2VydmVyPVAub2JzZXJ2ZXIsci5kZWZhdWx0LmltbWVkaWF0ZU9ic2Vy
dmVyPVAuX2ltbWVkaWF0ZU9ic2VydmVyLHIuZGVmYXVsdC5taXhpbj1QLm1peGluLHIuZGVmYXVs
dC5NaXhpbj1QLk1peGluLHIuZGVmYXVsdC5iaW5kPWouYmluZCxyLmRlZmF1bHQuQmluZGluZz1q
LkJpbmRpbmcsci5kZWZhdWx0LmlzR2xvYmFsUGF0aD1SLmlzR2xvYmFsUGF0aCxyLmRlZmF1bHQu
cnVuPUwuZGVmYXVsdCxyLmRlZmF1bHQuQmFja2J1cm5lcj1WLmRlZmF1bHQsci5kZWZhdWx0Ll9C
YWNrYnVybmVyPVYuZGVmYXVsdCxyLmRlZmF1bHQubGlicmFyaWVzPW5ldyBELmRlZmF1bHQsci5k
ZWZhdWx0LmxpYnJhcmllcy5yZWdpc3RlckNvcmVMaWJyYXJ5KCJFbWJlciIsci5kZWZhdWx0LlZF
UlNJT04pLHIuZGVmYXVsdC5pc05vbmU9TS5kZWZhdWx0LHIuZGVmYXVsdC5pc0VtcHR5PUkuZGVm
YXVsdCxyLmRlZmF1bHQuaXNCbGFuaz1GLmRlZmF1bHQsci5kZWZhdWx0LmlzUHJlc2VudD1ILmRl
ZmF1bHQsci5kZWZhdWx0LmFzc2lnbj1PYmplY3QuYXNzaWdufHxvLmRlZmF1bHQsci5kZWZhdWx0
Lm1lcmdlPWEuZGVmYXVsdCxyLmRlZmF1bHQuRkVBVFVSRVM9aS5GRUFUVVJFUyxyLmRlZmF1bHQu
RkVBVFVSRVMuaXNFbmFibGVkPWkuZGVmYXVsdCxyLmRlZmF1bHQub25lcnJvcj1udWxsLHQuaGFz
KCJlbWJlci1kZWJ1ZyIpP3QuZGVmYXVsdCgiZW1iZXItZGVidWciKTooci5kZWZhdWx0LkRlYnVn
PXt9LHIuZGVmYXVsdC5EZWJ1Zy5yZWdpc3RlckRlcHJlY2F0aW9uSGFuZGxlcj1mdW5jdGlvbigp
e30sci5kZWZhdWx0LkRlYnVnLnJlZ2lzdGVyV2FybkhhbmRsZXI9ZnVuY3Rpb24oKXt9KSxyLmRl
ZmF1bHQuY3JlYXRlPW4uZGVwcmVjYXRlRnVuYygiRW1iZXIuY3JlYXRlIGlzIGRlcHJlY2F0ZWQg
aW4gZmF2b3Igb2YgT2JqZWN0LmNyZWF0ZSIse2lkOiJlbWJlci1tZXRhbC5lbWJlci1jcmVhdGUi
LHVudGlsOiIzLjAuMCJ9LE9iamVjdC5jcmVhdGUpLHIuZGVmYXVsdC5rZXlzPW4uZGVwcmVjYXRl
RnVuYygiRW1iZXIua2V5cyBpcyBkZXByZWNhdGVkIGluIGZhdm9yIG9mIE9iamVjdC5rZXlzIix7
aWQ6ImVtYmVyLW1ldGFsLmVtYmVyLmtleXMiLHVudGlsOiIzLjAuMCJ9LE9iamVjdC5rZXlzKSxl
LmRlZmF1bHQ9ci5kZWZhdWx0fSksZSgiZW1iZXItbWV0YWwvaW5qZWN0ZWRfcHJvcGVydHkiLFsi
ZXhwb3J0cyIsImVtYmVyLW1ldGFsL2RlYnVnIiwiZW1iZXItbWV0YWwvY29tcHV0ZWQiLCJlbWJl
ci1tZXRhbC9hbGlhcyIsImVtYmVyLW1ldGFsL3Byb3BlcnRpZXMiLCJjb250YWluZXIvb3duZXIi
XSxmdW5jdGlvbihlLHQscixuLGksbyl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGEoZSx0KXt0aGlz
LnR5cGU9ZSx0aGlzLm5hbWU9dCx0aGlzLl9zdXBlciRDb25zdHJ1Y3RvcihzKSxjLm9uZVdheS5j
YWxsKHRoaXMpfWZ1bmN0aW9uIHMoZSl7dmFyIHQ9dGhpc1tlXSxyPW8uZ2V0T3duZXIodGhpcyl8
fHRoaXMuY29udGFpbmVyO3JldHVybiByLmxvb2t1cCh0LnR5cGUrIjoiKyh0Lm5hbWV8fGUpKX1h
LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGkuRGVzY3JpcHRvci5wcm90b3R5cGUpO3ZhciB1PWEu
cHJvdG90eXBlLGw9ci5Db21wdXRlZFByb3BlcnR5LnByb3RvdHlwZSxjPW4uQWxpYXNlZFByb3Bl
cnR5LnByb3RvdHlwZTt1Ll9zdXBlciRDb25zdHJ1Y3Rvcj1yLkNvbXB1dGVkUHJvcGVydHksdS5n
ZXQ9bC5nZXQsdS5yZWFkT25seT1sLnJlYWRPbmx5LHUudGVhcmRvd249bC50ZWFyZG93bixlLmRl
ZmF1bHQ9YX0pLGUoImVtYmVyLW1ldGFsL2luc3RydW1lbnRhdGlvbiIsWyJleHBvcnRzIiwiZW1i
ZXItbWV0YWwvY29yZSIsImVtYmVyLW1ldGFsL2ZlYXR1cmVzIl0sZnVuY3Rpb24oZSx0LHIpeyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUsdCxyLG4pe2lmKGFyZ3VtZW50cy5sZW5ndGg8PTMmJiJm
dW5jdGlvbiI9PXR5cGVvZiB0JiYobj1yLHI9dCx0PXZvaWQgMCksMD09PWwubGVuZ3RoKXJldHVy
biByLmNhbGwobik7dmFyIGE9dHx8e30scz1vKGUsZnVuY3Rpb24oKXtyZXR1cm4gYX0pO3JldHVy
biBzP2kocixzLGEsbik6ci5jYWxsKG4pfWZ1bmN0aW9uIGkoZSx0LHIsbil7dmFyIGk9dm9pZCAw
O3RyeXtpPWUuY2FsbChuKX1jYXRjaChlKXtyLmV4Y2VwdGlvbj1lLGk9cn1maW5hbGx5e3JldHVy
biB0KCksaX19ZnVuY3Rpb24gbyhlLHIpe3ZhciBuPWZbZV07aWYobnx8KG49ZChlKSksMCE9PW4u
bGVuZ3RoKXt2YXIgaSxvPXIoKSxhPXQuZGVmYXVsdC5TVFJVQ1RVUkVEX1BST0ZJTEU7YSYmKGk9
ZSsiOiAiK28ub2JqZWN0LGNvbnNvbGUudGltZShpKSk7dmFyIHMsdSxsPW4ubGVuZ3RoLGM9bmV3
IEFycmF5KGwpLGg9cCgpO2ZvcihzPTA7czxsO3MrKyl1PW5bc10sY1tzXT11LmJlZm9yZShlLGgs
byk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQscixzLHU9cCgpO2Zvcih0PTAscj1uLmxlbmd0aDt0
PHI7dCsrKXM9blt0XSwiZnVuY3Rpb24iPT10eXBlb2Ygcy5hZnRlciYmcy5hZnRlcihlLHUsbyxj
W3RdKTthJiZjb25zb2xlLnRpbWVFbmQoaSl9fX1mdW5jdGlvbiBhKGUsdCl7Zm9yKHZhciByLG49
ZS5zcGxpdCgiLiIpLGk9W10sbz0wLGE9bi5sZW5ndGg7bzxhO28rKylyPW5bb10sIioiPT09cj9p
LnB1c2goIlteXFwuXSoiKTppLnB1c2gocik7aT1pLmpvaW4oIlxcLiIpLGkrPSIoXFwuLiopPyI7
dmFyIHM9e3BhdHRlcm46ZSxyZWdleDpuZXcgUmVnRXhwKCJeIitpKyIkIiksb2JqZWN0OnR9O3Jl
dHVybiBsLnB1c2gocyksZj17fSxzfWZ1bmN0aW9uIHMoZSl7Zm9yKHZhciB0LHI9MCxuPWwubGVu
Z3RoO3I8bjtyKyspbFtyXT09PWUmJih0PXIpO2wuc3BsaWNlKHQsMSksZj17fX1mdW5jdGlvbiB1
KCl7bC5sZW5ndGg9MCxmPXt9fWUuaW5zdHJ1bWVudD1uLGUuX2luc3RydW1lbnRTdGFydD1vLGUu
c3Vic2NyaWJlPWEsZS51bnN1YnNjcmliZT1zLGUucmVzZXQ9dTt2YXIgbD1bXTtlLnN1YnNjcmli
ZXJzPWw7dmFyIGMsZj17fSxkPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyPVtdLG49MCxpPWwubGVu
Z3RoO248aTtuKyspdD1sW25dLHQucmVnZXgudGVzdChlKSYmci5wdXNoKHQub2JqZWN0KTtyZXR1
cm4gZltlXT1yLHJ9LHA9ZnVuY3Rpb24oKXt2YXIgZT0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRv
dz93aW5kb3cucGVyZm9ybWFuY2V8fHt9Ont9LHQ9ZS5ub3d8fGUubW96Tm93fHxlLndlYmtpdE5v
d3x8ZS5tc05vd3x8ZS5vTm93O3JldHVybiB0P3QuYmluZChlKTpmdW5jdGlvbigpe3JldHVybitu
ZXcgRGF0ZX19KCk7ZS5mbGFnZ2VkSW5zdHJ1bWVudD1jPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4g
cigpfSxlLmZsYWdnZWRJbnN0cnVtZW50PWN9KSxlKCJlbWJlci1tZXRhbC9pc19ibGFuayIsWyJl
eHBvcnRzIiwiZW1iZXItbWV0YWwvaXNfZW1wdHkiXSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiByKGUpe3JldHVybiB0LmRlZmF1bHQoZSl8fCJzdHJpbmciPT10eXBlb2YgZSYm
bnVsbD09PWUubWF0Y2goL1xTLyl9ZS5kZWZhdWx0PXJ9KSxlKCJlbWJlci1tZXRhbC9pc19lbXB0
eSIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvcHJvcGVydHlfZ2V0IiwiZW1iZXItbWV0YWwvaXNf
bm9uZSJdLGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlKXt2YXIgbj1y
LmRlZmF1bHQoZSk7aWYobilyZXR1cm4gbjtpZigibnVtYmVyIj09dHlwZW9mIGUuc2l6ZSlyZXR1
cm4hZS5zaXplO3ZhciBpPXR5cGVvZiBlO2lmKCJvYmplY3QiPT09aSl7dmFyIG89dC5nZXQoZSwi
c2l6ZSIpO2lmKCJudW1iZXIiPT10eXBlb2YgbylyZXR1cm4hb31pZigibnVtYmVyIj09dHlwZW9m
IGUubGVuZ3RoJiYiZnVuY3Rpb24iIT09aSlyZXR1cm4hZS5sZW5ndGg7aWYoIm9iamVjdCI9PT1p
KXt2YXIgYT10LmdldChlLCJsZW5ndGgiKTtpZigibnVtYmVyIj09dHlwZW9mIGEpcmV0dXJuIWF9
cmV0dXJuITF9ZS5kZWZhdWx0PW59KSxlKCJlbWJlci1tZXRhbC9pc19ub25lIixbImV4cG9ydHMi
XSxmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gdChlKXtyZXR1cm4gbnVsbD09PWV8
fHZvaWQgMD09PWV9ZS5kZWZhdWx0PXR9KSxlKCJlbWJlci1tZXRhbC9pc19wcmVzZW50IixbImV4
cG9ydHMiLCJlbWJlci1tZXRhbC9pc19ibGFuayJdLGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIHIoZSl7cmV0dXJuIXQuZGVmYXVsdChlKX1lLmRlZmF1bHQ9cn0pLGUoImVtYmVy
LW1ldGFsL2xpYnJhcmllcyIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvZGVidWciLCJlbWJlci1t
ZXRhbC9mZWF0dXJlcyJdLGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbigp
e3RoaXMuX3JlZ2lzdHJ5PVtdLHRoaXMuX2NvcmVMaWJJbmRleD0wfW4ucHJvdG90eXBlPXtjb25z
dHJ1Y3RvcjpuLF9nZXRMaWJyYXJ5QnlOYW1lOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLl9y
ZWdpc3RyeSxyPXQubGVuZ3RoLG49MDtuPHI7bisrKWlmKHRbbl0ubmFtZT09PWUpcmV0dXJuIHRb
bl19LHJlZ2lzdGVyOmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj10aGlzLl9yZWdpc3RyeS5sZW5ndGg7
dGhpcy5fZ2V0TGlicmFyeUJ5TmFtZShlKXx8KHImJihuPXRoaXMuX2NvcmVMaWJJbmRleCsrKSx0
aGlzLl9yZWdpc3RyeS5zcGxpY2UobiwwLHtuYW1lOmUsdmVyc2lvbjp0fSkpfSxyZWdpc3RlckNv
cmVMaWJyYXJ5OmZ1bmN0aW9uKGUsdCl7dGhpcy5yZWdpc3RlcihlLHQsITApfSxkZVJlZ2lzdGVy
OmZ1bmN0aW9uKGUpe3ZhciB0LHI9dGhpcy5fZ2V0TGlicmFyeUJ5TmFtZShlKTtyJiYodD10aGlz
Ll9yZWdpc3RyeS5pbmRleE9mKHIpLHRoaXMuX3JlZ2lzdHJ5LnNwbGljZSh0LDEpKX19LGUuZGVm
YXVsdD1ufSksZSgiZW1iZXItbWV0YWwvbG9nZ2VyIixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9j
b3JlIiwiZW1iZXItbWV0YWwvZXJyb3IiXSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIG4oKXtyZXR1cm4gdGhpc31mdW5jdGlvbiBpKGUpe3ZhciByLG47dC5kZWZhdWx0Lmlt
cG9ydHMuY29uc29sZT9yPXQuZGVmYXVsdC5pbXBvcnRzLmNvbnNvbGU6InVuZGVmaW5lZCIhPXR5
cGVvZiBjb25zb2xlJiYocj1jb25zb2xlKTt2YXIgaT0ib2JqZWN0Ij09dHlwZW9mIHI/cltlXTpu
dWxsO2lmKGkpcmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGkuYmluZD8obj1pLmJpbmQociksbi5k
aXNwbGF5TmFtZT0iY29uc29sZS4iK2Usbik6ImZ1bmN0aW9uIj09dHlwZW9mIGkuYXBwbHk/KG49
ZnVuY3Rpb24oKXtpLmFwcGx5KHIsYXJndW1lbnRzKX0sbi5kaXNwbGF5TmFtZT0iY29uc29sZS4i
K2Usbik6ZnVuY3Rpb24oKXt2YXIgZT1BcnJheS5wcm90b3R5cGUuam9pbi5jYWxsKGFyZ3VtZW50
cywiLCAiKTtpKGUpfX1mdW5jdGlvbiBvKGUsdCl7aWYoIWUpdHJ5e3Rocm93IG5ldyByLmRlZmF1
bHQoImFzc2VydGlvbiBmYWlsZWQ6ICIrdCl9Y2F0Y2goZSl7c2V0VGltZW91dChmdW5jdGlvbigp
e3Rocm93IGV9LDApfX1lLmRlZmF1bHQ9e2xvZzppKCJsb2ciKXx8bix3YXJuOmkoIndhcm4iKXx8
bixlcnJvcjppKCJlcnJvciIpfHxuLGluZm86aSgiaW5mbyIpfHxuLGRlYnVnOmkoImRlYnVnIil8
fGkoImluZm8iKXx8bixhc3NlcnQ6aSgiYXNzZXJ0Iil8fG99fSksZSgiZW1iZXItbWV0YWwvbWFw
IixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9jb3JlIiwiZW1iZXItbWV0YWwvdXRpbHMiLCJlbWJl
ci1tZXRhbC9lbXB0eV9vYmplY3QiXSxmdW5jdGlvbihlLHQscixuKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gaShlKXt0aHJvdyBuZXcgVHlwZUVycm9yKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcu
Y2FsbChlKSsiIGlzIG5vdCBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gbyhlKXt0aHJvdyBuZXcgVHlw
ZUVycm9yKCJDb25zdHJ1Y3RvciAiK2UrIiByZXF1aXJlcyAnbmV3JyIpfWZ1bmN0aW9uIGEoZSl7
dmFyIHQ9bmV3IG4uZGVmYXVsdDtmb3IodmFyIHIgaW4gZSl0W3JdPWVbcl07cmV0dXJuIHR9ZnVu
Y3Rpb24gcyhlLHQpe3ZhciByPWUuX2tleXMuY29weSgpLG49YShlLl92YWx1ZXMpO3JldHVybiB0
Ll9rZXlzPXIsdC5fdmFsdWVzPW4sdC5zaXplPWUuc2l6ZSx0fWZ1bmN0aW9uIHUoKXt0aGlzIGlu
c3RhbmNlb2YgdT8odGhpcy5jbGVhcigpLHRoaXMuX3NpbGVuY2VSZW1vdmVEZXByZWNhdGlvbj0h
MSk6bygiT3JkZXJlZFNldCIpfWZ1bmN0aW9uIGwoKXt0aGlzIGluc3RhbmNlb2YgdGhpcy5jb25z
dHJ1Y3Rvcj8odGhpcy5fa2V5cz11LmNyZWF0ZSgpLHRoaXMuX2tleXMuX3NpbGVuY2VSZW1vdmVE
ZXByZWNhdGlvbj0hMCx0aGlzLl92YWx1ZXM9bmV3IG4uZGVmYXVsdCx0aGlzLnNpemU9MCk6bygi
T3JkZXJlZFNldCIpfWZ1bmN0aW9uIGMoZSl7dGhpcy5fc3VwZXIkY29uc3RydWN0b3IoKSx0aGlz
LmRlZmF1bHRWYWx1ZT1lLmRlZmF1bHRWYWx1ZX11LmNyZWF0ZT1mdW5jdGlvbigpe3ZhciBlPXRo
aXM7cmV0dXJuIG5ldyBlfSx1LnByb3RvdHlwZT17Y29uc3RydWN0b3I6dSxjbGVhcjpmdW5jdGlv
bigpe3RoaXMucHJlc2VuY2VTZXQ9bmV3IG4uZGVmYXVsdCx0aGlzLmxpc3Q9W10sdGhpcy5zaXpl
PTB9LGFkZDpmdW5jdGlvbihlLHQpe3ZhciBuPXR8fHIuZ3VpZEZvcihlKSxpPXRoaXMucHJlc2Vu
Y2VTZXQsbz10aGlzLmxpc3Q7cmV0dXJuIGlbbl0hPT0hMCYmKGlbbl09ITAsdGhpcy5zaXplPW8u
cHVzaChlKSksdGhpc30sZGVsZXRlOmZ1bmN0aW9uKGUsdCl7dmFyIG49dHx8ci5ndWlkRm9yKGUp
LGk9dGhpcy5wcmVzZW5jZVNldCxvPXRoaXMubGlzdDtpZihpW25dPT09ITApe2RlbGV0ZSBpW25d
O3ZhciBhPW8uaW5kZXhPZihlKTtyZXR1cm4gYT4tMSYmby5zcGxpY2UoYSwxKSx0aGlzLnNpemU9
by5sZW5ndGgsITB9cmV0dXJuITF9LGlzRW1wdHk6ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMu
c2l6ZX0saGFzOmZ1bmN0aW9uKGUpe2lmKDA9PT10aGlzLnNpemUpcmV0dXJuITE7dmFyIHQ9ci5n
dWlkRm9yKGUpLG49dGhpcy5wcmVzZW5jZVNldDtyZXR1cm4gblt0XT09PSEwfSxmb3JFYWNoOmZ1
bmN0aW9uKGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlJiZpKGUpLDAhPT10aGlzLnNpemUpe3Zh
ciB0LHI9dGhpcy5saXN0LG49YXJndW1lbnRzLmxlbmd0aDtpZigyPT09bilmb3IodD0wO3Q8ci5s
ZW5ndGg7dCsrKWUuY2FsbChhcmd1bWVudHNbMV0sclt0XSk7ZWxzZSBmb3IodD0wO3Q8ci5sZW5n
dGg7dCsrKWUoclt0XSl9fSx0b0FycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGlzdC5zbGlj
ZSgpfSxjb3B5OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5jb25zdHJ1Y3Rvcix0PW5ldyBlO3JldHVy
biB0Ll9zaWxlbmNlUmVtb3ZlRGVwcmVjYXRpb249dGhpcy5fc2lsZW5jZVJlbW92ZURlcHJlY2F0
aW9uLHQucHJlc2VuY2VTZXQ9YSh0aGlzLnByZXNlbmNlU2V0KSx0Lmxpc3Q9dGhpcy50b0FycmF5
KCksdC5zaXplPXRoaXMuc2l6ZSx0fX0sdC5kZWZhdWx0Lk1hcD1sLGwuY3JlYXRlPWZ1bmN0aW9u
KCl7dmFyIGU9dGhpcztyZXR1cm4gbmV3IGV9LGwucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpsLHNp
emU6MCxnZXQ6ZnVuY3Rpb24oZSl7aWYoMCE9PXRoaXMuc2l6ZSl7dmFyIHQ9dGhpcy5fdmFsdWVz
LG49ci5ndWlkRm9yKGUpO3JldHVybiB0W25dfX0sc2V0OmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhp
cy5fa2V5cyxpPXRoaXMuX3ZhbHVlcyxvPXIuZ3VpZEZvcihlKSxhPWU9PT0tMD8wOmU7cmV0dXJu
IG4uYWRkKGEsbyksaVtvXT10LHRoaXMuc2l6ZT1uLnNpemUsdGhpc30sZGVsZXRlOmZ1bmN0aW9u
KGUpe2lmKDA9PT10aGlzLnNpemUpcmV0dXJuITE7dmFyIHQ9dGhpcy5fa2V5cyxuPXRoaXMuX3Zh
bHVlcyxpPXIuZ3VpZEZvcihlKTtyZXR1cm4hIXQuZGVsZXRlKGUsaSkmJihkZWxldGUgbltpXSx0
aGlzLnNpemU9dC5zaXplLCEwKX0saGFzOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9rZXlzLmhh
cyhlKX0sZm9yRWFjaDpmdW5jdGlvbihlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSYmaShlKSww
IT09dGhpcy5zaXplKXt2YXIgdCxyLG49YXJndW1lbnRzLmxlbmd0aCxvPXRoaXM7Mj09PW4/KHI9
YXJndW1lbnRzWzFdLHQ9ZnVuY3Rpb24odCl7ZS5jYWxsKHIsby5nZXQodCksdCxvKX0pOnQ9ZnVu
Y3Rpb24odCl7ZShvLmdldCh0KSx0LG8pfSx0aGlzLl9rZXlzLmZvckVhY2godCl9fSxjbGVhcjpm
dW5jdGlvbigpe3RoaXMuX2tleXMuY2xlYXIoKSx0aGlzLl92YWx1ZXM9bmV3IG4uZGVmYXVsdCx0
aGlzLnNpemU9MH0sY29weTpmdW5jdGlvbigpe3JldHVybiBzKHRoaXMsbmV3IGwpfX0sYy5jcmVh
dGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGU/bmV3IGMoZSk6bmV3IGx9LGMucHJvdG90eXBlPU9iamVj
dC5jcmVhdGUobC5wcm90b3R5cGUpLGMucHJvdG90eXBlLmNvbnN0cnVjdG9yPWMsYy5wcm90b3R5
cGUuX3N1cGVyJGNvbnN0cnVjdG9yPWwsYy5wcm90b3R5cGUuX3N1cGVyJGdldD1sLnByb3RvdHlw
ZS5nZXQsYy5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuaGFzKGUpO2lmKHQp
cmV0dXJuIHRoaXMuX3N1cGVyJGdldChlKTt2YXIgcj10aGlzLmRlZmF1bHRWYWx1ZShlKTtyZXR1
cm4gdGhpcy5zZXQoZSxyKSxyfSxjLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKCl7dmFyIGU9dGhp
cy5jb25zdHJ1Y3RvcjtyZXR1cm4gcyh0aGlzLG5ldyBlKHtkZWZhdWx0VmFsdWU6dGhpcy5kZWZh
dWx0VmFsdWV9KSl9LGUuZGVmYXVsdD1sLGUuT3JkZXJlZFNldD11LGUuTWFwPWwsZS5NYXBXaXRo
RGVmYXVsdD1jfSksZSgiZW1iZXItbWV0YWwvbWVyZ2UiLFsiZXhwb3J0cyJdLGZ1bmN0aW9uKGUp
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB0KGUsdCl7aWYoIXR8fCJvYmplY3QiIT10eXBlb2YgdCly
ZXR1cm4gZTtmb3IodmFyIHIsbj1PYmplY3Qua2V5cyh0KSxpPW4ubGVuZ3RoLG89MDtvPGk7bysr
KXI9bltvXSxlW3JdPXRbcl07cmV0dXJuIGV9ZS5kZWZhdWx0PXR9KSxlKCJlbWJlci1tZXRhbC9t
ZXRhIixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9tZXRhX2xpc3RlbmVycyIsImVtYmVyLW1ldGFs
L2VtcHR5X29iamVjdCJdLGZ1bmN0aW9uKGUsdCxyKXsibm8gdXNlIHN0cmljdCI7ZnVuY3Rpb24g
bihlLHQpe3RoaXMuX2NhY2hlPXZvaWQgMCx0aGlzLl93ZWFrPXZvaWQgMCx0aGlzLl93YXRjaGlu
Zz12b2lkIDAsdGhpcy5fbWl4aW5zPXZvaWQgMCx0aGlzLl9iaW5kaW5ncz12b2lkIDAsdGhpcy5f
dmFsdWVzPXZvaWQgMCx0aGlzLl9kZXBzPXZvaWQgMCx0aGlzLl9jaGFpbldhdGNoZXJzPXZvaWQg
MCx0aGlzLl9jaGFpbnM9dm9pZCAwLHRoaXMuX3RhZz12b2lkIDAsdGhpcy5zb3VyY2U9ZSx0aGlz
LnByb3RvPXZvaWQgMCx0aGlzLnBhcmVudD10LHRoaXMuX2luaXRpYWxpemVMaXN0ZW5lcnMoKX1m
dW5jdGlvbiBpKGUsdCl7dmFyIHI9bChlKSxuPWMoZSk7dC5wcm90b3R5cGVbIndyaXRhYmxlIitu
XT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9nZXRPckNyZWF0ZU93bk1hcChyKX0sdC5wcm90b3R5
cGVbInJlYWRhYmxlIituXT1mdW5jdGlvbigpe3JldHVybiB0aGlzW3JdfX1mdW5jdGlvbiBvKGUs
dCl7dmFyIG49bChlKSxpPWMoZSk7dC5wcm90b3R5cGVbIndyaXRlIitpXT1mdW5jdGlvbihlLHQp
e3ZhciByPXRoaXMuX2dldE9yQ3JlYXRlT3duTWFwKG4pO3JbZV09dH0sdC5wcm90b3R5cGVbInBl
ZWsiK2ldPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9maW5kSW5oZXJpdGVkKG4sZSl9LHQucHJv
dG90eXBlWyJmb3JFYWNoIitpXT1mdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcyxpPW5ldyByLmRl
ZmF1bHQ7dm9pZCAwIT09dDspe3ZhciBvPXRbbl07aWYobylmb3IodmFyIGEgaW4gbylpW2FdfHwo
aVthXT0hMCxlKGEsb1thXSkpO3Q9dC5wYXJlbnR9fSx0LnByb3RvdHlwZVsiY2xlYXIiK2ldPWZ1
bmN0aW9uKCl7dGhpc1tuXT12b2lkIDB9LHQucHJvdG90eXBlWyJkZWxldGVGcm9tIitpXT1mdW5j
dGlvbihlKXtkZWxldGUgdGhpcy5fZ2V0T3JDcmVhdGVPd25NYXAobilbZV19LHQucHJvdG90eXBl
WyJoYXNJbiIraV09ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMCE9PXRoaXMuX2ZpbmRJbmhlcml0
ZWQobixlKX19ZnVuY3Rpb24gYShlLHQpe3ZhciBuPWwoZSksaT1jKGUpO3QucHJvdG90eXBlWyJ3
cml0ZSIraV09ZnVuY3Rpb24oZSx0LGkpe3ZhciBvPXRoaXMuX2dldE9yQ3JlYXRlT3duTWFwKG4p
LGE9b1tlXTthfHwoYT1vW2VdPW5ldyByLmRlZmF1bHQpLGFbdF09aX0sdC5wcm90b3R5cGVbInBl
ZWsiK2ldPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPXRoaXM7dm9pZCAwIT09cjspe3ZhciBpPXJb
bl07aWYoaSl7dmFyIG89aVtlXTtpZihvJiZ2b2lkIDAhPT1vW3RdKXJldHVybiBvW3RdfXI9ci5w
YXJlbnR9fSx0LnByb3RvdHlwZVsiaGFzIitpXT1mdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpczt2
b2lkIDAhPT10Oyl7aWYodFtuXSYmdFtuXVtlXSlyZXR1cm4hMDt0PXQucGFyZW50fXJldHVybiEx
fSx0LnByb3RvdHlwZVsiZm9yRWFjaEluIitpXT1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLl9m
b3JFYWNoSW4obixlLHQpfX1mdW5jdGlvbiBzKGUsdCl7dmFyIHI9bChlKSxuPWMoZSk7dC5wcm90
b3R5cGVbIndyaXRhYmxlIituXT1mdW5jdGlvbihlKXt2YXIgdD10aGlzW3JdO3JldHVybiB0fHwo
dD10aGlzW3JdPWUodGhpcy5zb3VyY2UpKSx0fSx0LnByb3RvdHlwZVsicmVhZGFibGUiK25dPWZ1
bmN0aW9uKCl7cmV0dXJuIHRoaXNbcl19fWZ1bmN0aW9uIHUoZSx0KXt2YXIgcj1sKGUpLG49Yyhl
KTt0LnByb3RvdHlwZVsid3JpdGFibGUiK25dPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXNbcl07cmV0
dXJuIHR8fCh0PXRoaXMucGFyZW50P3RoaXNbcl09dGhpcy5wYXJlbnRbIndyaXRhYmxlIituXShl
KS5jb3B5KHRoaXMuc291cmNlKTp0aGlzW3JdPWUodGhpcy5zb3VyY2UpKSx0fSx0LnByb3RvdHlw
ZVsicmVhZGFibGUiK25dPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2dldEluaGVyaXRlZChyKX19
ZnVuY3Rpb24gbChlKXtyZXR1cm4iXyIrZX1mdW5jdGlvbiBjKGUpe3JldHVybiBlLnJlcGxhY2Uo
L15cdy8sZnVuY3Rpb24oZSl7cmV0dXJuIGUudG9VcHBlckNhc2UoKX0pfWZ1bmN0aW9uIGYoZSl7
dmFyIHQ9ZChlKSxyPXZvaWQgMDtpZih0KXtpZih0LnNvdXJjZT09PWUpcmV0dXJuIHQ7cj10fXZh
ciBpPW5ldyBuKGUscik7cmV0dXJuIF8oZSxpKSxpfWZ1bmN0aW9uIGQoZSl7cmV0dXJuIGVbdl19
ZnVuY3Rpb24gcChlKXsib2JqZWN0Ij09dHlwZW9mIGVbdl0mJihlW3ZdPW51bGwpfWUubWV0YT1m
LGUucGVla01ldGE9ZCxlLmRlbGV0ZU1ldGE9cDt2YXIgaD17Y2FjaGU6aSx3ZWFrOmksd2F0Y2hp
bmc6byxtaXhpbnM6byxiaW5kaW5nczpvLHZhbHVlczpvLGRlcHM6YSxjaGFpbldhdGNoZXJzOnMs
Y2hhaW5zOnUsdGFnOnN9LG09T2JqZWN0LmtleXMoaCksdj0iX19lbWJlcl9tZXRhX18iO2Zvcih2
YXIgYiBpbiB0LnByb3RvTWV0aG9kcyluLnByb3RvdHlwZVtiXT10LnByb3RvTWV0aG9kc1tiXTtt
LmZvckVhY2goZnVuY3Rpb24oZSl7cmV0dXJuIGhbZV0oZSxuKX0pLG4ucHJvdG90eXBlLl9nZXRP
ckNyZWF0ZU93bk1hcD1mdW5jdGlvbihlKXt2YXIgdD10aGlzW2VdO3JldHVybiB0fHwodD10aGlz
W2VdPW5ldyByLmRlZmF1bHQpLHR9LG4ucHJvdG90eXBlLl9nZXRJbmhlcml0ZWQ9ZnVuY3Rpb24o
ZSl7Zm9yKHZhciB0PXRoaXM7dm9pZCAwIT09dDspe2lmKHRbZV0pcmV0dXJuIHRbZV07dD10LnBh
cmVudH19LG4ucHJvdG90eXBlLl9maW5kSW5oZXJpdGVkPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBy
PXRoaXM7dm9pZCAwIT09cjspe3ZhciBuPXJbZV07aWYobil7dmFyIGk9blt0XTtpZih2b2lkIDAh
PT1pKXJldHVybiBpfXI9ci5wYXJlbnR9fSxuLnByb3RvdHlwZS5fZm9yRWFjaEluPWZ1bmN0aW9u
KGUsdCxuKXtmb3IodmFyIGk9dGhpcyxvPW5ldyByLmRlZmF1bHQsYT1bXTt2b2lkIDAhPT1pOyl7
dmFyIHM9aVtlXTtpZihzKXt2YXIgdT1zW3RdO2lmKHUpZm9yKHZhciBsIGluIHUpb1tsXXx8KG9b
bF09ITAsYS5wdXNoKFtsLHVbbF1dKSl9aT1pLnBhcmVudH1mb3IodmFyIGM9MDtjPGEubGVuZ3Ro
O2MrKyl7dmFyIGY9YVtjXSxsPWZbMF0sZD1mWzFdO24obCxkKX19O3ZhciBnPXt3cml0YWJsZToh
MCxjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMSx2YWx1ZTpudWxsfTtlLk1FVEFfREVTQz1n
O3ZhciB5PXtuYW1lOnYsZGVzY3JpcHRvcjpnfSxfPWZ1bmN0aW9uKGUsdCl7bnVsbCE9PWVbdl0m
JihlLl9fZGVmaW5lTm9uRW51bWVyYWJsZT9lLl9fZGVmaW5lTm9uRW51bWVyYWJsZSh5KTpPYmpl
Y3QuZGVmaW5lUHJvcGVydHkoZSx2LGcpKSxlW3ZdPXR9fSksZSgiZW1iZXItbWV0YWwvbWV0YV9s
aXN0ZW5lcnMiLFsiZXhwb3J0cyJdLGZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB0
KGUsdCxyKXtmb3IodmFyIG49dFtyKzFdLGk9dFtyKzJdLG89MDtvPGUubGVuZ3RoLTI7bys9Mylp
ZihlW29dPT09biYmZVtvKzFdPT09aSlyZXR1cm47ZS5wdXNoKG4saSx0W3IrM10pfXZhciByPTE7
ZS5PTkNFPXI7dmFyIG49MjtlLlNVU1BFTkRFRD1uO3ZhciBpPXthZGRUb0xpc3RlbmVyczpmdW5j
dGlvbihlLHQscixuKXt0aGlzLl9saXN0ZW5lcnN8fCh0aGlzLl9saXN0ZW5lcnM9W10pLHRoaXMu
X2xpc3RlbmVycy5wdXNoKGUsdCxyLG4pfSxfZmluYWxpemVMaXN0ZW5lcnM6ZnVuY3Rpb24oKXtp
ZighdGhpcy5fbGlzdGVuZXJzRmluYWxpemVkKXt0aGlzLl9saXN0ZW5lcnN8fCh0aGlzLl9saXN0
ZW5lcnM9W10pO2Zvcih2YXIgZT10aGlzLnBhcmVudDtlOyl7dmFyIHQ9ZS5fbGlzdGVuZXJzO2lm
KHQmJih0aGlzLl9saXN0ZW5lcnM9dGhpcy5fbGlzdGVuZXJzLmNvbmNhdCh0KSksZS5fbGlzdGVu
ZXJzRmluYWxpemVkKWJyZWFrO2U9ZS5wYXJlbnR9dGhpcy5fbGlzdGVuZXJzRmluYWxpemVkPSEw
fX0scmVtb3ZlRnJvbUxpc3RlbmVyczpmdW5jdGlvbihlLHQscixuKXtmb3IodmFyIGk9dGhpcztp
Oyl7dmFyIG89aS5fbGlzdGVuZXJzO2lmKG8pZm9yKHZhciBhPW8ubGVuZ3RoLTQ7YT49MDthLT00
KWlmKG9bYV09PT1lJiYoIXJ8fG9bYSsxXT09PXQmJm9bYSsyXT09PXIpKXtpZihpIT09dGhpcyly
ZXR1cm4gdGhpcy5fZmluYWxpemVMaXN0ZW5lcnMoKSx0aGlzLnJlbW92ZUZyb21MaXN0ZW5lcnMo
ZSx0LHIpOyJmdW5jdGlvbiI9PXR5cGVvZiBuJiZuKGUsdCxvW2ErMl0pLG8uc3BsaWNlKGEsNCl9
aWYoaS5fbGlzdGVuZXJzRmluYWxpemVkKWJyZWFrO2k9aS5wYXJlbnR9fSxtYXRjaGluZ0xpc3Rl
bmVyczpmdW5jdGlvbihlKXtmb3IodmFyIHI9dGhpcyxpPVtdO3I7KXt2YXIgbz1yLl9saXN0ZW5l
cnM7aWYobylmb3IodmFyIGE9MDthPG8ubGVuZ3RoLTM7YSs9NClvW2FdPT09ZSYmdChpLG8sYSk7
aWYoci5fbGlzdGVuZXJzRmluYWxpemVkKWJyZWFrO3I9ci5wYXJlbnR9dmFyIHM9dGhpcy5fc3Vz
cGVuZGVkTGlzdGVuZXJzO2lmKHMpZm9yKHZhciB1PTA7dTxzLmxlbmd0aC0yO3UrPTMpaWYoZT09
PXNbdV0pZm9yKHZhciBsPTA7bDxpLmxlbmd0aC0yO2wrPTMpaVtsXT09PXNbdSsxXSYmaVtsKzFd
PT09c1t1KzJdJiYoaVtsKzJdfD1uKTtyZXR1cm4gaX0sc3VzcGVuZExpc3RlbmVyczpmdW5jdGlv
bihlLHQscixuKXt2YXIgaT10aGlzLl9zdXNwZW5kZWRMaXN0ZW5lcnM7aXx8KGk9dGhpcy5fc3Vz
cGVuZGVkTGlzdGVuZXJzPVtdKTtmb3IodmFyIG89MDtvPGUubGVuZ3RoO28rKylpLnB1c2goZVtv
XSx0LHIpO3RyeXtyZXR1cm4gbi5jYWxsKHQpfWZpbmFsbHl7aWYoaS5sZW5ndGg9PT1lLmxlbmd0
aCl0aGlzLl9zdXNwZW5kZWRMaXN0ZW5lcnM9dm9pZCAwO2Vsc2UgZm9yKHZhciBvPWkubGVuZ3Ro
LTM7bz49MDtvLT0zKWlbbysxXT09PXQmJmlbbysyXT09PXImJmUuaW5kZXhPZihpW29dKSE9PS0x
JiZpLnNwbGljZShvLDMpfX0sd2F0Y2hlZEV2ZW50czpmdW5jdGlvbigpe2Zvcih2YXIgZT10aGlz
LHQ9e307ZTspe3ZhciByPWUuX2xpc3RlbmVycztpZihyKWZvcih2YXIgbj0wO248ci5sZW5ndGgt
MztuKz00KXRbcltuXV09ITA7aWYoZS5fbGlzdGVuZXJzRmluYWxpemVkKWJyZWFrO2U9ZS5wYXJl
bnR9cmV0dXJuIE9iamVjdC5rZXlzKHQpfSxfaW5pdGlhbGl6ZUxpc3RlbmVyczpmdW5jdGlvbigp
e3RoaXMuX2xpc3RlbmVycz12b2lkIDAsdGhpcy5fbGlzdGVuZXJzRmluYWxpemVkPXZvaWQgMCx0
aGlzLl9zdXNwZW5kZWRMaXN0ZW5lcnM9dm9pZCAwfX07ZS5wcm90b01ldGhvZHM9aX0pLGUoImVt
YmVyLW1ldGFsL21peGluIixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9jb3JlIiwiZW1iZXItbWV0
YWwvZXJyb3IiLCJlbWJlci1tZXRhbC9kZWJ1ZyIsImVtYmVyLW1ldGFsL2Fzc2lnbiIsImVtYmVy
LW1ldGFsL2VtcHR5X29iamVjdCIsImVtYmVyLW1ldGFsL3Byb3BlcnR5X2dldCIsImVtYmVyLW1l
dGFsL3Byb3BlcnR5X3NldCIsImVtYmVyLW1ldGFsL3V0aWxzIiwiZW1iZXItbWV0YWwvbWV0YSIs
ImVtYmVyLW1ldGFsL2V4cGFuZF9wcm9wZXJ0aWVzIiwiZW1iZXItbWV0YWwvcHJvcGVydGllcyIs
ImVtYmVyLW1ldGFsL2NvbXB1dGVkIiwiZW1iZXItbWV0YWwvYmluZGluZyIsImVtYmVyLW1ldGFs
L29ic2VydmVyIiwiZW1iZXItbWV0YWwvZXZlbnRzIiwiZW1iZXItbWV0YWwvc3RyZWFtcy91dGls
cyJdLGZ1bmN0aW9uKGUsdCxyLG4saSxvLGEscyx1LGwsYyxmLGQscCxoLG0sdil7Im5vIHVzZSBz
dHJpY3QiO2Z1bmN0aW9uIGIoKXt9ZnVuY3Rpb24gZyhlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBl
b2YgZSYmZS5pc01ldGhvZCE9PSExJiZlIT09Qm9vbGVhbiYmZSE9PU9iamVjdCYmZSE9PU51bWJl
ciYmZSE9PUFycmF5JiZlIT09RGF0ZSYmZSE9PVN0cmluZ31mdW5jdGlvbiB5KGUsdCl7dmFyIHI7
cmV0dXJuIHQgaW5zdGFuY2VvZiBNPyhyPXUuZ3VpZEZvcih0KSxlLnBlZWtNaXhpbnMocik/Szoo
ZS53cml0ZU1peGlucyhyLHQpLHQucHJvcGVydGllcykpOnR9ZnVuY3Rpb24gXyhlLHQscixuKXt2
YXIgaTtyZXR1cm4gaT1yW2VdfHxuW2VdLHRbZV0mJihpPWk/aS5jb25jYXQodFtlXSk6dFtlXSks
aX1mdW5jdGlvbiB3KGUsdCxyLG4saSxvKXt2YXIgYTtpZih2b2lkIDA9PT1uW3RdJiYoYT1pW3Rd
KSwhYSl7dmFyIHM9b1t0XSxsPW51bGwhPT1zJiYib2JqZWN0Ij09dHlwZW9mIHMmJnMuaXNEZXNj
cmlwdG9yP3M6dm9pZCAwO2E9bH1yZXR1cm4gdm9pZCAwIT09YSYmYSBpbnN0YW5jZW9mIGQuQ29t
cHV0ZWRQcm9wZXJ0eT8ocj1PYmplY3QuY3JlYXRlKHIpLHIuX2dldHRlcj11LndyYXAoci5fZ2V0
dGVyLGEuX2dldHRlciksYS5fc2V0dGVyJiYoci5fc2V0dGVyP3IuX3NldHRlcj11LndyYXAoci5f
c2V0dGVyLGEuX3NldHRlcik6ci5fc2V0dGVyPWEuX3NldHRlcikscik6cn1mdW5jdGlvbiB4KGUs
dCxyLG4saSl7dmFyIG87cmV0dXJuIHZvaWQgMD09PWlbdF0mJihvPW5bdF0pLG89b3x8ZVt0XSx2
b2lkIDA9PT1vfHwiZnVuY3Rpb24iIT10eXBlb2Ygbz9yOnUud3JhcChyLG8pfWZ1bmN0aW9uIGso
ZSx0LHIsbil7dmFyIGk9blt0XXx8ZVt0XTtyZXR1cm4gaT8iZnVuY3Rpb24iPT10eXBlb2YgaS5j
b25jYXQ/bnVsbD09PXJ8fHZvaWQgMD09PXI/aTppLmNvbmNhdChyKTp1Lm1ha2VBcnJheShpKS5j
b25jYXQocik6dS5tYWtlQXJyYXkocil9ZnVuY3Rpb24gQyhlLHQscixuKXt2YXIgbz1uW3RdfHxl
W3RdO2lmKCFvKXJldHVybiByO3ZhciBhPWkuZGVmYXVsdCh7fSxvKSxzPSExO2Zvcih2YXIgdSBp
biByKWlmKHIuaGFzT3duUHJvcGVydHkodSkpe3ZhciBsPXJbdV07ZyhsKT8ocz0hMCxhW3VdPXgo
ZSx1LGwsbyx7fSkpOmFbdV09bH1yZXR1cm4gcyYmKGEuX3N1cGVyPWIpLGF9ZnVuY3Rpb24gRShl
LHQscixuLGksbyxhLHMpe2lmKHIgaW5zdGFuY2VvZiBmLkRlc2NyaXB0b3Ipe2lmKHI9PT1XJiZp
W3RdKXJldHVybiBLO3IuX2dldHRlciYmKHI9dyhuLHQscixvLGksZSkpLGlbdF09cixvW3RdPXZv
aWQgMH1lbHNlIGEmJmEuaW5kZXhPZih0KT49MHx8ImNvbmNhdGVuYXRlZFByb3BlcnRpZXMiPT09
dHx8Im1lcmdlZFByb3BlcnRpZXMiPT09dD9yPWsoZSx0LHIsbyk6cyYmcy5pbmRleE9mKHQpPj0w
P3I9QyhlLHQscixvKTpnKHIpJiYocj14KGUsdCxyLG8saSkpLGlbdF09dm9pZCAwLG9bdF09cn1m
dW5jdGlvbiBPKGUsdCxyLG4saSxvKXtmdW5jdGlvbiBhKGUpe2RlbGV0ZSByW2VdLGRlbGV0ZSBu
W2VdfWZvcih2YXIgcyx1LGMsZixkLHAsaD0wLG09ZS5sZW5ndGg7aDxtO2grKylpZihzPWVbaF0s
dT15KHQscyksdSE9PUspaWYodSl7cD1sLm1ldGEoaSksaS53aWxsTWVyZ2VNaXhpbiYmaS53aWxs
TWVyZ2VNaXhpbih1KSxmPV8oImNvbmNhdGVuYXRlZFByb3BlcnRpZXMiLHUsbixpKSxkPV8oIm1l
cmdlZFByb3BlcnRpZXMiLHUsbixpKTtmb3IoYyBpbiB1KXUuaGFzT3duUHJvcGVydHkoYykmJihv
LnB1c2goYyksRShpLGMsdVtjXSxwLHIsbixmLGQpKTt1Lmhhc093blByb3BlcnR5KCJ0b1N0cmlu
ZyIpJiYoaS50b1N0cmluZz11LnRvU3RyaW5nKX1lbHNlIHMubWl4aW5zJiYoTyhzLm1peGlucyx0
LHIsbixpLG8pLHMuX3dpdGhvdXQmJnMuX3dpdGhvdXQuZm9yRWFjaChhKSl9ZnVuY3Rpb24gVChl
LHQscixuKXtRLnRlc3QodCkmJm4ud3JpdGVCaW5kaW5ncyh0LHIpfWZ1bmN0aW9uIE4oZSx0LHIp
e3ZhciBuPWZ1bmN0aW9uKHIpe2guX3N1c3BlbmRPYnNlcnZlcihlLHQsbnVsbCxpLGZ1bmN0aW9u
KCl7cy50cnlTZXQoZSx0LHIudmFsdWUoKSl9KX0saT1mdW5jdGlvbigpe3Iuc2V0VmFsdWUoYS5n
ZXQoZSx0KSxuKX07cy5zZXQoZSx0LHIudmFsdWUoKSksaC5hZGRPYnNlcnZlcihlLHQsbnVsbCxp
KSxyLnN1YnNjcmliZShuKSx2b2lkIDA9PT1lLl9zdHJlYW1CaW5kaW5nU3Vic2NyaXB0aW9ucyYm
KGUuX3N0cmVhbUJpbmRpbmdTdWJzY3JpcHRpb25zPW5ldyBvLmRlZmF1bHQpLGUuX3N0cmVhbUJp
bmRpbmdTdWJzY3JpcHRpb25zW3RdPW59ZnVuY3Rpb24gUyhlLHQpe3QuZm9yRWFjaEJpbmRpbmdz
KGZ1bmN0aW9uKHQscil7aWYocil7dmFyIG49dC5zbGljZSgwLC03KTtpZih2LmlzU3RyZWFtKHIp
KXJldHVybiB2b2lkIE4oZSxuLHIpO3IgaW5zdGFuY2VvZiBwLkJpbmRpbmc/KHI9ci5jb3B5KCks
ci50byhuKSk6cj1uZXcgcC5CaW5kaW5nKG4sciksci5jb25uZWN0KGUpLGVbdF09cn19KSx0LmNs
ZWFyQmluZGluZ3MoKX1mdW5jdGlvbiBBKGUsdCl7cmV0dXJuIFMoZSx0fHxsLm1ldGEoZSkpLGV9
ZnVuY3Rpb24gUChlLHQscixuLGkpe3ZhciBvLGEscz10Lm1ldGhvZE5hbWU7cmV0dXJuIG5bc118
fGlbc10/KG89aVtzXSx0PW5bc10pOihhPWVbc10pJiZudWxsIT09YSYmIm9iamVjdCI9PXR5cGVv
ZiBhJiZhLmlzRGVzY3JpcHRvcj8odD1hLG89dm9pZCAwKToodD12b2lkIDAsbz1lW3NdKSx7ZGVz
Yzp0LHZhbHVlOm99fWZ1bmN0aW9uIGooZSx0LHIsbixpKXt2YXIgbz1yW25dO2lmKG8pZm9yKHZh
ciBhPTAscz1vLmxlbmd0aDthPHM7YSsrKWkoZSxvW2FdLG51bGwsdCl9ZnVuY3Rpb24gUihlLHQs
cil7dmFyIG49ZVt0XTsiZnVuY3Rpb24iPT10eXBlb2YgbiYmKGooZSx0LG4sIl9fZW1iZXJfb2Jz
ZXJ2ZXNCZWZvcmVfXyIsaC5fcmVtb3ZlQmVmb3JlT2JzZXJ2ZXIpLGooZSx0LG4sIl9fZW1iZXJf
b2JzZXJ2ZXNfXyIsaC5yZW1vdmVPYnNlcnZlciksaihlLHQsbiwiX19lbWJlcl9saXN0ZW5zX18i
LG0ucmVtb3ZlTGlzdGVuZXIpKSwiZnVuY3Rpb24iPT10eXBlb2YgciYmKGooZSx0LHIsIl9fZW1i
ZXJfb2JzZXJ2ZXNCZWZvcmVfXyIsaC5fYWRkQmVmb3JlT2JzZXJ2ZXIpLGooZSx0LHIsIl9fZW1i
ZXJfb2JzZXJ2ZXNfXyIsaC5hZGRPYnNlcnZlciksaihlLHQsciwiX19lbWJlcl9saXN0ZW5zX18i
LG0uYWRkTGlzdGVuZXIpKX1mdW5jdGlvbiBMKGUsdCxyKXt2YXIgbixpLG8sYT17fSxzPXt9LHU9
bC5tZXRhKGUpLGM9W107ZS5fc3VwZXI9YixPKHQsdSxhLHMsZSxjKTtmb3IodmFyIGQ9MCxwPWMu
bGVuZ3RoO2Q8cDtkKyspaWYobj1jW2RdLCJjb25zdHJ1Y3RvciIhPT1uJiZzLmhhc093blByb3Bl
cnR5KG4pJiYobz1hW25dLGk9c1tuXSxvIT09Vykpe2Zvcig7byYmbyBpbnN0YW5jZW9mIFY7KXt2
YXIgaD1QKGUsbyx1LGEscyk7bz1oLmRlc2MsaT1oLnZhbHVlfXZvaWQgMD09PW8mJnZvaWQgMD09
PWl8fChSKGUsbixpKSxUKGUsbixpLHUpLGYuZGVmaW5lUHJvcGVydHkoZSxuLG8saSx1KSl9cmV0
dXJuIHJ8fEEoZSx1KSxlfWZ1bmN0aW9uIEQoZSl7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgs
cj1BcnJheSh0PjE/dC0xOjApLG49MTtuPHQ7bisrKXJbbi0xXT1hcmd1bWVudHNbbl07cmV0dXJu
IEwoZSxyLCExKSxlfWZ1bmN0aW9uIE0oZSx0KXt0aGlzLnByb3BlcnRpZXM9dDt2YXIgcj1lJiZl
Lmxlbmd0aDtpZihyPjApe2Zvcih2YXIgbj1uZXcgQXJyYXkociksaT0wO2k8cjtpKyspe3ZhciBv
PWVbaV07byBpbnN0YW5jZW9mIE0/bltpXT1vOm5baV09bmV3IE0odm9pZCAwLG8pfXRoaXMubWl4
aW5zPW59ZWxzZSB0aGlzLm1peGlucz12b2lkIDA7dGhpcy5vd25lckNvbnN0cnVjdG9yPXZvaWQg
MCx0aGlzLl93aXRob3V0PXZvaWQgMCx0aGlzW3UuR1VJRF9LRVldPW51bGwsdGhpc1t1LkdVSURf
S0VZKyJfbmFtZSJdPW51bGx9ZnVuY3Rpb24gSShlLHQscil7dmFyIG49dS5ndWlkRm9yKGUpO2lm
KHJbbl0pcmV0dXJuITE7aWYocltuXT0hMCxlPT09dClyZXR1cm4hMDtmb3IodmFyIGk9ZS5taXhp
bnMsbz1pP2kubGVuZ3RoOjA7LS1vPj0wOylpZihJKGlbb10sdCxyKSlyZXR1cm4hMDtyZXR1cm4h
MX1mdW5jdGlvbiBGKGUsdCxyKXtpZighclt1Lmd1aWRGb3IodCldKWlmKHJbdS5ndWlkRm9yKHQp
XT0hMCx0LnByb3BlcnRpZXMpZm9yKHZhciBuPU9iamVjdC5rZXlzKHQucHJvcGVydGllcyksaT0w
O2k8bi5sZW5ndGg7aSsrKXt2YXIgbz1uW2ldO2Vbb109ITB9ZWxzZSB0Lm1peGlucyYmdC5taXhp
bnMuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4gRihlLHQscil9KX1mdW5jdGlvbiBIKCl7cmV0
dXJuIFd9ZnVuY3Rpb24gVihlKXt0aGlzLmlzRGVzY3JpcHRvcj0hMCx0aGlzLm1ldGhvZE5hbWU9
ZX1mdW5jdGlvbiBxKGUpe3JldHVybiBuZXcgVihlKX1mdW5jdGlvbiB6KCl7Zm9yKHZhciBlPWFy
Z3VtZW50cy5sZW5ndGgsdD1BcnJheShlKSxuPTA7bjxlO24rKyl0W25dPWFyZ3VtZW50c1tuXTt2
YXIgaSxvPXQuc2xpY2UoLTEpWzBdLGE9ZnVuY3Rpb24oZSl7aS5wdXNoKGUpfSxzPXQuc2xpY2Uo
MCwtMSk7ImZ1bmN0aW9uIiE9dHlwZW9mIG8mJihvPXRbMF0scz10LnNsaWNlKDEpKSxpPVtdO2Zv
cih2YXIgdT0wO3U8cy5sZW5ndGg7Kyt1KWMuZGVmYXVsdChzW3VdLGEpO2lmKCJmdW5jdGlvbiIh
PXR5cGVvZiBvKXRocm93IG5ldyByLmRlZmF1bHQoIkVtYmVyLm9ic2VydmVyIGNhbGxlZCB3aXRo
b3V0IGEgZnVuY3Rpb24iKTtyZXR1cm4gby5fX2VtYmVyX29ic2VydmVzX189aSxvfWZ1bmN0aW9u
IEIoKXtmb3IodmFyIGU9MCx0PWFyZ3VtZW50cy5sZW5ndGg7ZTx0O2UrKyl7YXJndW1lbnRzW2Vd
fXJldHVybiB6LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBVKCl7Zm9yKHZhciBlPWFy
Z3VtZW50cy5sZW5ndGgscj1BcnJheShlKSxuPTA7bjxlO24rKylyW25dPWFyZ3VtZW50c1tuXTt2
YXIgaSxvPXIuc2xpY2UoLTEpWzBdLGE9ZnVuY3Rpb24oZSl7aS5wdXNoKGUpfSxzPXIuc2xpY2Uo
MCwtMSk7ImZ1bmN0aW9uIiE9dHlwZW9mIG8mJihvPXJbMF0scz1yLnNsaWNlKDEpKSxpPVtdO2Zv
cih2YXIgdT0wO3U8cy5sZW5ndGg7Kyt1KWMuZGVmYXVsdChzW3VdLGEpO2lmKCJmdW5jdGlvbiIh
PXR5cGVvZiBvKXRocm93IG5ldyB0LmRlZmF1bHQuRXJyb3IoIkVtYmVyLmJlZm9yZU9ic2VydmVy
IGNhbGxlZCB3aXRob3V0IGEgZnVuY3Rpb24iKTtyZXR1cm4gby5fX2VtYmVyX29ic2VydmVzQmVm
b3JlX189aSxvfWUubWl4aW49RCxlLmRlZmF1bHQ9TSxlLnJlcXVpcmVkPUgsZS5hbGlhc01ldGhv
ZD1xLGUub2JzZXJ2ZXI9eixlLl9pbW1lZGlhdGVPYnNlcnZlcj1CLGUuX2JlZm9yZU9ic2VydmVy
PVUsYi5fX2hhc1N1cGVyPSExO3ZhciBXLCQ9W10uc2xpY2UsSz17fSxRPS9eLitCaW5kaW5nJC87
TS5fYXBwbHk9TCxNLmFwcGx5UGFydGlhbD1mdW5jdGlvbihlKXt2YXIgdD0kLmNhbGwoYXJndW1l
bnRzLDEpO3JldHVybiBMKGUsdCwhMCl9LE0uZmluaXNoUGFydGlhbD1BLHQuZGVmYXVsdC5hbnlV
bnByb2Nlc3NlZE1peGlucz0hMSxNLmNyZWF0ZT1mdW5jdGlvbigpe3QuZGVmYXVsdC5hbnlVbnBy
b2Nlc3NlZE1peGlucz0hMDtmb3IodmFyIGU9dGhpcyxyPWFyZ3VtZW50cy5sZW5ndGgsbj1BcnJh
eShyKSxpPTA7aTxyO2krKyluW2ldPWFyZ3VtZW50c1tpXTtyZXR1cm4gbmV3IGUobix2b2lkIDAp
fTt2YXIgRz1NLnByb3RvdHlwZTtHLnJlb3Blbj1mdW5jdGlvbigpe3ZhciBlO3RoaXMucHJvcGVy
dGllcz8oZT1uZXcgTSh2b2lkIDAsdGhpcy5wcm9wZXJ0aWVzKSx0aGlzLnByb3BlcnRpZXM9dm9p
ZCAwLHRoaXMubWl4aW5zPVtlXSk6dGhpcy5taXhpbnN8fCh0aGlzLm1peGlucz1bXSk7dmFyIHQs
cj1hcmd1bWVudHMubGVuZ3RoLG49dGhpcy5taXhpbnM7Zm9yKHQ9MDt0PHI7dCsrKWU9YXJndW1l
bnRzW3RdLGUgaW5zdGFuY2VvZiBNP24ucHVzaChlKTpuLnB1c2gobmV3IE0odm9pZCAwLGUpKTty
ZXR1cm4gdGhpc30sRy5hcHBseT1mdW5jdGlvbihlKXtyZXR1cm4gTChlLFt0aGlzXSwhMSl9LEcu
YXBwbHlQYXJ0aWFsPWZ1bmN0aW9uKGUpe3JldHVybiBMKGUsW3RoaXNdLCEwKX0sRy50b1N0cmlu
Zz1mdW5jdGlvbigpe3JldHVybiIodW5rbm93biBtaXhpbikifSxHLmRldGVjdD1mdW5jdGlvbihl
KXtpZighZSlyZXR1cm4hMTtpZihlIGluc3RhbmNlb2YgTSlyZXR1cm4gSShlLHRoaXMse30pO3Zh
ciB0PWwucGVla01ldGEoZSk7cmV0dXJuISF0JiYhIXQucGVla01peGlucyh1Lmd1aWRGb3IodGhp
cykpfSxHLndpdGhvdXQ9ZnVuY3Rpb24oKXtmb3IodmFyIGU9bmV3IE0oW3RoaXNdKSx0PWFyZ3Vt
ZW50cy5sZW5ndGgscj1BcnJheSh0KSxuPTA7bjx0O24rKylyW25dPWFyZ3VtZW50c1tuXTtyZXR1
cm4gZS5fd2l0aG91dD1yLGV9LEcua2V5cz1mdW5jdGlvbigpe3ZhciBlPXt9LHQ9e307RihlLHRo
aXMsdCk7dmFyIHI9T2JqZWN0LmtleXMoZSk7cmV0dXJuIHJ9LE0ubWl4aW5zPWZ1bmN0aW9uKGUp
e3ZhciB0PWwucGVla01ldGEoZSkscj1bXTtyZXR1cm4gdD8odC5mb3JFYWNoTWl4aW5zKGZ1bmN0
aW9uKGUsdCl7dC5wcm9wZXJ0aWVzfHxyLnB1c2godCk7Cit9KSxyKTpyfSxlLlJFUVVJUkVEPVc9
bmV3IGYuRGVzY3JpcHRvcixXLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIihSZXF1aXJlZCBQ
cm9wZXJ0eSkifSxWLnByb3RvdHlwZT1uZXcgZi5EZXNjcmlwdG9yLGUuSVNfQklORElORz1RLGUu
TWl4aW49TSxlLnJlcXVpcmVkPUgsZS5SRVFVSVJFRD1XfSksZSgiZW1iZXItbWV0YWwvb2JzZXJ2
ZXIiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL3dhdGNoaW5nIiwiZW1iZXItbWV0YWwvZXZlbnRz
Il0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe3JldHVybiBlK2R9
ZnVuY3Rpb24gaShlKXtyZXR1cm4gZStwfWZ1bmN0aW9uIG8oZSxpLG8sYSl7cmV0dXJuIHIuYWRk
TGlzdGVuZXIoZSxuKGkpLG8sYSksdC53YXRjaChlLGkpLHRoaXN9ZnVuY3Rpb24gYShlLHQpe3Jl
dHVybiByLmxpc3RlbmVyc0ZvcihlLG4odCkpfWZ1bmN0aW9uIHMoZSxpLG8sYSl7cmV0dXJuIHQu
dW53YXRjaChlLGkpLHIucmVtb3ZlTGlzdGVuZXIoZSxuKGkpLG8sYSksdGhpc31mdW5jdGlvbiB1
KGUsbixvLGEpe3JldHVybiByLmFkZExpc3RlbmVyKGUsaShuKSxvLGEpLHQud2F0Y2goZSxuKSx0
aGlzfWZ1bmN0aW9uIGwoZSx0LGksbyxhKXtyZXR1cm4gci5zdXNwZW5kTGlzdGVuZXIoZSxuKHQp
LGksbyxhKX1mdW5jdGlvbiBjKGUsdCxpLG8sYSl7dmFyIHM9dC5tYXAobik7cmV0dXJuIHIuc3Vz
cGVuZExpc3RlbmVycyhlLHMsaSxvLGEpfWZ1bmN0aW9uIGYoZSxuLG8sYSl7cmV0dXJuIHQudW53
YXRjaChlLG4pLHIucmVtb3ZlTGlzdGVuZXIoZSxpKG4pLG8sYSksdGhpc31lLmFkZE9ic2VydmVy
PW8sZS5vYnNlcnZlcnNGb3I9YSxlLnJlbW92ZU9ic2VydmVyPXMsZS5fYWRkQmVmb3JlT2JzZXJ2
ZXI9dSxlLl9zdXNwZW5kT2JzZXJ2ZXI9bCxlLl9zdXNwZW5kT2JzZXJ2ZXJzPWMsZS5fcmVtb3Zl
QmVmb3JlT2JzZXJ2ZXI9Zjt2YXIgZD0iOmNoYW5nZSIscD0iOmJlZm9yZSJ9KSxlKCJlbWJlci1t
ZXRhbC9vYnNlcnZlcl9zZXQiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL3V0aWxzIiwiZW1iZXIt
bWV0YWwvZXZlbnRzIl0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKCl7
dGhpcy5jbGVhcigpfWUuZGVmYXVsdD1uLG4ucHJvdG90eXBlLmFkZD1mdW5jdGlvbihlLHIsbil7
dmFyIGksbz10aGlzLm9ic2VydmVyU2V0LGE9dGhpcy5vYnNlcnZlcnMscz10Lmd1aWRGb3IoZSks
dT1vW3NdO3JldHVybiB1fHwob1tzXT11PXt9KSxpPXVbcl0sdm9pZCAwPT09aSYmKGk9YS5wdXNo
KHtzZW5kZXI6ZSxrZXlOYW1lOnIsZXZlbnROYW1lOm4sbGlzdGVuZXJzOltdfSktMSx1W3JdPWkp
LGFbaV0ubGlzdGVuZXJzfSxuLnByb3RvdHlwZS5mbHVzaD1mdW5jdGlvbigpe3ZhciBlLHQsbixp
LG89dGhpcy5vYnNlcnZlcnM7Zm9yKHRoaXMuY2xlYXIoKSxlPTAsdD1vLmxlbmd0aDtlPHQ7Kytl
KW49b1tlXSxpPW4uc2VuZGVyLGkuaXNEZXN0cm95aW5nfHxpLmlzRGVzdHJveWVkfHxyLnNlbmRF
dmVudChpLG4uZXZlbnROYW1lLFtpLG4ua2V5TmFtZV0sbi5saXN0ZW5lcnMpfSxuLnByb3RvdHlw
ZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMub2JzZXJ2ZXJTZXQ9e30sdGhpcy5vYnNlcnZlcnM9W119
fSksZSgiZW1iZXItbWV0YWwvcGF0aF9jYWNoZSIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvY2Fj
aGUiXSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBmLmdl
dChlKX1mdW5jdGlvbiBuKGUpe3JldHVybiBkLmdldChlKX1mdW5jdGlvbiBpKGUpe3JldHVybiBw
LmdldChlKX1mdW5jdGlvbiBvKGUpe3JldHVybiBoLmdldChlKSE9PS0xfWZ1bmN0aW9uIGEoZSl7
cmV0dXJuIG0uZ2V0KGUpfWZ1bmN0aW9uIHMoZSl7cmV0dXJuIHYuZ2V0KGUpfWUuaXNHbG9iYWw9
cixlLmlzR2xvYmFsUGF0aD1uLGUuaGFzVGhpcz1pLGUuaXNQYXRoPW8sZS5nZXRGaXJzdEtleT1h
LGUuZ2V0VGFpbFBhdGg9czt2YXIgdT0vXltBLVokXS8sbD0vXltBLVokXS4qW1wuXS8sYz0idGhp
cy4iLGY9bmV3IHQuZGVmYXVsdCgxZTMsZnVuY3Rpb24oZSl7cmV0dXJuIHUudGVzdChlKX0pLGQ9
bmV3IHQuZGVmYXVsdCgxZTMsZnVuY3Rpb24oZSl7cmV0dXJuIGwudGVzdChlKX0pLHA9bmV3IHQu
ZGVmYXVsdCgxZTMsZnVuY3Rpb24oZSl7cmV0dXJuIDA9PT1lLmxhc3RJbmRleE9mKGMsMCl9KSxo
PW5ldyB0LmRlZmF1bHQoMWUzLGZ1bmN0aW9uKGUpe3JldHVybiBlLmluZGV4T2YoIi4iKX0pLG09
bmV3IHQuZGVmYXVsdCgxZTMsZnVuY3Rpb24oZSl7dmFyIHQ9aC5nZXQoZSk7cmV0dXJuIHQ9PT0t
MT9lOmUuc2xpY2UoMCx0KX0pLHY9bmV3IHQuZGVmYXVsdCgxZTMsZnVuY3Rpb24oZSl7dmFyIHQ9
aC5nZXQoZSk7aWYodCE9PS0xKXJldHVybiBlLnNsaWNlKHQrMSl9KSxiPXtpc0dsb2JhbENhY2hl
OmYsaXNHbG9iYWxQYXRoQ2FjaGU6ZCxoYXNUaGlzQ2FjaGU6cCxmaXJzdERvdEluZGV4Q2FjaGU6
aCxmaXJzdEtleUNhY2hlOm0sdGFpbFBhdGhDYWNoZTp2fTtlLmNhY2hlcz1ifSksZSgiZW1iZXIt
bWV0YWwvcHJvcGVydGllcyIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvZGVidWciLCJlbWJlci1t
ZXRhbC9mZWF0dXJlcyIsImVtYmVyLW1ldGFsL21ldGEiLCJlbWJlci1tZXRhbC9wcm9wZXJ0eV9l
dmVudHMiXSxmdW5jdGlvbihlLHQscixuLGkpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBvKCl7dGhp
cy5pc0Rlc2NyaXB0b3I9ITB9ZnVuY3Rpb24gYShlKXtmdW5jdGlvbiB0KGUpe31yZXR1cm4gdC5p
c01hbmRhdG9yeVNldHRlcj0hMCx0fWZ1bmN0aW9uIHMoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFy
IHQ9dGhpcy5fX2VtYmVyX21ldGFfXztyZXR1cm4gdCYmdC5wZWVrVmFsdWVzKGUpfX1mdW5jdGlv
biB1KGUpe2Z1bmN0aW9uIHQoKXt2YXIgdD1PYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcyk7cmV0
dXJuIHQmJnRbZV19cmV0dXJuIHQuaXNJbmhlcml0aW5nR2V0dGVyPSEwLHR9ZnVuY3Rpb24gbChl
LHQscixhLHMpe3ZhciB1LGwsYyxmO3N8fChzPW4ubWV0YShlKSk7dmFyIGQ9cy5wZWVrV2F0Y2hp
bmcodCk7cmV0dXJuIHU9ZVt0XSxsPW51bGwhPT11JiYib2JqZWN0Ij09dHlwZW9mIHUmJnUuaXNE
ZXNjcmlwdG9yP3U6dm9pZCAwLGM9dm9pZCAwIT09ZCYmZD4wLGwmJmwudGVhcmRvd24oZSx0KSxy
IGluc3RhbmNlb2Ygbz8oZj1yLGVbdF09ZixyLnNldHVwJiZyLnNldHVwKGUsdCkpOm51bGw9PXI/
KGY9YSxlW3RdPWEpOihmPXIsT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxyKSksYyYmaS5vdmVy
cmlkZUNoYWlucyhlLHQscyksZS5kaWREZWZpbmVQcm9wZXJ0eSYmZS5kaWREZWZpbmVQcm9wZXJ0
eShlLHQsZiksdGhpc31lLkRlc2NyaXB0b3I9byxlLk1BTkRBVE9SWV9TRVRURVJfRlVOQ1RJT049
YSxlLkRFRkFVTFRfR0VUVEVSX0ZVTkNUSU9OPXMsZS5JTkhFUklUSU5HX0dFVFRFUl9GVU5DVElP
Tj11LGUuZGVmaW5lUHJvcGVydHk9bDsoZnVuY3Rpb24oKXt2YXIgZT1PYmplY3QuY3JlYXRlKE9i
amVjdC5wcm90b3R5cGUse3Byb3A6e2NvbmZpZ3VyYWJsZTohMCx2YWx1ZToxfX0pO3JldHVybiBP
YmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvcCIse2NvbmZpZ3VyYWJsZTohMCx2YWx1ZToyfSks
Mj09PWUucHJvcH0pKCl9KSxlKCJlbWJlci1tZXRhbC9wcm9wZXJ0eV9ldmVudHMiLFsiZXhwb3J0
cyIsImVtYmVyLW1ldGFsL3V0aWxzIiwiZW1iZXItbWV0YWwvbWV0YSIsImVtYmVyLW1ldGFsL2V2
ZW50cyIsImVtYmVyLW1ldGFsL29ic2VydmVyX3NldCIsImVtYmVyLW1ldGFsL3N5bWJvbCJdLGZ1
bmN0aW9uKGUsdCxyLG4saSxvKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYShlLHQpe3ZhciBuPXIu
cGVla01ldGEoZSksaT1uJiZuLnBlZWtXYXRjaGluZyh0KT4wfHwibGVuZ3RoIj09PXQsbz1uJiZu
LnByb3RvLGE9ZVt0XSxzPW51bGwhPT1hJiYib2JqZWN0Ij09dHlwZW9mIGEmJmEuaXNEZXNjcmlw
dG9yP2E6dm9pZCAwO2kmJm8hPT1lJiYocyYmcy53aWxsQ2hhbmdlJiZzLndpbGxDaGFuZ2UoZSx0
KSx1KGUsdCxuKSxmKGUsdCxuKSxiKGUsdCkpfWZ1bmN0aW9uIHMoZSx0KXt2YXIgbj1yLnBlZWtN
ZXRhKGUpLGk9biYmbi5wZWVrV2F0Y2hpbmcodCk+MHx8Imxlbmd0aCI9PT10LG89biYmbi5wcm90
byxhPWVbdF0scz1udWxsIT09YSYmIm9iamVjdCI9PXR5cGVvZiBhJiZhLmlzRGVzY3JpcHRvcj9h
OnZvaWQgMDtvIT09ZSYmKHMmJnMuZGlkQ2hhbmdlJiZzLmRpZENoYW5nZShlLHQpLGVbeV0mJmVb
eV0odCksKGl8fCJsZW5ndGgiPT09dCkmJihuJiZuLmhhc0RlcHModCkmJmwoZSx0LG4pLGQoZSx0
LG4sITEpLGcoZSx0KSkpfWZ1bmN0aW9uIHUoZSx0LHIpe2lmKCFlLmlzRGVzdHJveWluZyYmciYm
ci5oYXNEZXBzKHQpKXt2YXIgbj1fLGk9IW47aSYmKG49Xz17fSksYyhhLGUsdCxuLHIpLGkmJihf
PW51bGwpfX1mdW5jdGlvbiBsKGUsdCxyKXtpZighZS5pc0Rlc3Ryb3lpbmcmJnImJnIuaGFzRGVw
cyh0KSl7dmFyIG49dyxpPSFuO2kmJihuPXc9e30pLGMocyxlLHQsbixyKSxpJiYodz1udWxsKX19
ZnVuY3Rpb24gYyhlLHIsbixpLG8pe3ZhciBhLHMsdT10Lmd1aWRGb3IociksbD1pW3VdO2x8fChs
PWlbdV09e30pLGxbbl18fChsW25dPSEwLG8uZm9yRWFjaEluRGVwcyhuLGZ1bmN0aW9uKHQsbil7
biYmKGE9clt0XSxzPW51bGwhPT1hJiYib2JqZWN0Ij09dHlwZW9mIGEmJmEuaXNEZXNjcmlwdG9y
P2E6dm9pZCAwLHMmJnMuX3N1c3BlbmRlZD09PXJ8fGUocix0KSl9KSl9ZnVuY3Rpb24gZihlLHQs
cil7dmFyIG49ci5yZWFkYWJsZUNoYWluV2F0Y2hlcnMoKTtuJiZuLm5vdGlmeSh0LCExLGEpfWZ1
bmN0aW9uIGQoZSx0LHIpe3ZhciBuPXIucmVhZGFibGVDaGFpbldhdGNoZXJzKCk7biYmbi5ub3Rp
ZnkodCwhMCxzKX1mdW5jdGlvbiBwKGUsdCxyKXt2YXIgbj1yLnJlYWRhYmxlQ2hhaW5XYXRjaGVy
cygpO24mJm4ucmV2YWxpZGF0ZSh0KX1mdW5jdGlvbiBoKCl7QysrfWZ1bmN0aW9uIG0oKXtDLS0s
Qzw9MCYmKHguY2xlYXIoKSxrLmZsdXNoKCkpfWZ1bmN0aW9uIHYoZSx0KXtoKCk7dHJ5e2UuY2Fs
bCh0KX1maW5hbGx5e20uY2FsbCh0KX19ZnVuY3Rpb24gYihlLHQpe2lmKCFlLmlzRGVzdHJveWlu
Zyl7dmFyIHIsaSxvPXQrIjpiZWZvcmUiO0M/KHI9eC5hZGQoZSx0LG8pLGk9bi5hY2N1bXVsYXRl
TGlzdGVuZXJzKGUsbyxyKSxuLnNlbmRFdmVudChlLG8sW2UsdF0saSkpOm4uc2VuZEV2ZW50KGUs
byxbZSx0XSl9fWZ1bmN0aW9uIGcoZSx0KXtpZighZS5pc0Rlc3Ryb3lpbmcpe3ZhciByLGk9dCsi
OmNoYW5nZSI7Qz8ocj1rLmFkZChlLHQsaSksbi5hY2N1bXVsYXRlTGlzdGVuZXJzKGUsaSxyKSk6
bi5zZW5kRXZlbnQoZSxpLFtlLHRdKX19dmFyIHk9by5kZWZhdWx0KCJQUk9QRVJUWV9ESURfQ0hB
TkdFIik7ZS5QUk9QRVJUWV9ESURfQ0hBTkdFPXk7dmFyIF8sdyx4PW5ldyBpLmRlZmF1bHQsaz1u
ZXcgaS5kZWZhdWx0LEM9MDtlLnByb3BlcnR5V2lsbENoYW5nZT1hLGUucHJvcGVydHlEaWRDaGFu
Z2U9cyxlLm92ZXJyaWRlQ2hhaW5zPXAsZS5iZWdpblByb3BlcnR5Q2hhbmdlcz1oLGUuZW5kUHJv
cGVydHlDaGFuZ2VzPW0sZS5jaGFuZ2VQcm9wZXJ0aWVzPXZ9KSxlKCJlbWJlci1tZXRhbC9wcm9w
ZXJ0eV9nZXQiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL2RlYnVnIiwiZW1iZXItbWV0YWwvcGF0
aF9jYWNoZSJdLGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlLHQpe2lm
KCIiPT09dClyZXR1cm4gZTt2YXIgbixvPWVbdF0sYT1udWxsIT09byYmIm9iamVjdCI9PXR5cGVv
ZiBvJiZvLmlzRGVzY3JpcHRvcj9vOnZvaWQgMDtyZXR1cm4gdm9pZCAwPT09YSYmci5pc1BhdGgo
dCk/aShlLHQpOmE/YS5nZXQoZSx0KToobj1vLHZvaWQgMCE9PW58fCJvYmplY3QiIT10eXBlb2Yg
ZXx8dCBpbiBlfHwiZnVuY3Rpb24iIT10eXBlb2YgZS51bmtub3duUHJvcGVydHk/bjplLnVua25v
d25Qcm9wZXJ0eSh0KSl9ZnVuY3Rpb24gaShlLHQpe2Zvcih2YXIgcj1lLGk9dC5zcGxpdCgiLiIp
LGE9MDthPGkubGVuZ3RoO2ErKyl7aWYoIW8ocikpcmV0dXJuO2lmKHI9bihyLGlbYV0pLHImJnIu
aXNEZXN0cm95ZWQpcmV0dXJufXJldHVybiByfWZ1bmN0aW9uIG8oZSl7cmV0dXJuIG51bGwhPWUm
JnNbdHlwZW9mIGVdfWZ1bmN0aW9uIGEoZSx0LHIpe3ZhciBpPW4oZSx0KTtyZXR1cm4gdm9pZCAw
PT09aT9yOml9ZS5nZXQ9bixlLl9nZXRQYXRoPWksZS5nZXRXaXRoRGVmYXVsdD1hO3ZhciBzPXtv
YmplY3Q6ITAsZnVuY3Rpb246ITAsc3RyaW5nOiEwfTtlLmRlZmF1bHQ9bn0pLGUoImVtYmVyLW1l
dGFsL3Byb3BlcnR5X3NldCIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvZGVidWciLCJlbWJlci1t
ZXRhbC9mZWF0dXJlcyIsImVtYmVyLW1ldGFsL3Byb3BlcnR5X2dldCIsImVtYmVyLW1ldGFsL3By
b3BlcnR5X2V2ZW50cyIsImVtYmVyLW1ldGFsL3Byb3BlcnRpZXMiLCJlbWJlci1tZXRhbC9lcnJv
ciIsImVtYmVyLW1ldGFsL3BhdGhfY2FjaGUiLCJlbWJlci1tZXRhbC9tZXRhIiwiZW1iZXItbWV0
YWwvdXRpbHMiLCJlbWJlci1tZXRhbC90YWdzIl0sZnVuY3Rpb24oZSx0LHIsbixpLG8sYSxzLHUs
bCxjKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZihlLHQscixuKXt2YXIgbz12b2lkIDAsYT12b2lk
IDAsbD12b2lkIDA7ZSYmKG89dS5wZWVrTWV0YShlKSxhPWVbdF0sbD1udWxsIT09YSYmIm9iamVj
dCI9PXR5cGVvZiBhJiZhLmlzRGVzY3JpcHRvcj9hOnZvaWQgMCxjLm1hcmtPYmplY3RBc0RpcnR5
KG8pKTt2YXIgZixwO2lmKHZvaWQgMD09PWwmJnMuaXNQYXRoKHQpKXJldHVybiBkKGUsdCxyLG4p
O2lmKGwpbC5zZXQoZSx0LHIpO2Vsc2V7aWYodm9pZCAwIT09ciYmIm9iamVjdCI9PXR5cGVvZiBl
JiZlW3RdPT09cilyZXR1cm4gcjtmPSJvYmplY3QiPT10eXBlb2YgZSYmISh0IGluIGUpLGYmJiJm
dW5jdGlvbiI9PXR5cGVvZiBlLnNldFVua25vd25Qcm9wZXJ0eT9lLnNldFVua25vd25Qcm9wZXJ0
eSh0LHIpOm8mJm8ucGVla1dhdGNoaW5nKHQpPjA/KG8ucHJvdG8hPT1lJiYocD1lW3RdKSxyIT09
cCYmKGkucHJvcGVydHlXaWxsQ2hhbmdlKGUsdCksZVt0XT1yLGkucHJvcGVydHlEaWRDaGFuZ2Uo
ZSx0KSkpOihlW3RdPXIsZVtpLlBST1BFUlRZX0RJRF9DSEFOR0VdJiZlW2kuUFJPUEVSVFlfRElE
X0NIQU5HRV0odCkpfXJldHVybiByfWZ1bmN0aW9uIGQoZSx0LHIsaSl7dmFyIG87aWYobz10LnNs
aWNlKHQubGFzdEluZGV4T2YoIi4iKSsxKSx0PXQ9PT1vP286dC5zbGljZSgwLHQubGVuZ3RoLShv
Lmxlbmd0aCsxKSksInRoaXMiIT09dCYmKGU9bi5fZ2V0UGF0aChlLHQpKSwhb3x8MD09PW8ubGVu
Z3RoKXRocm93IG5ldyBhLmRlZmF1bHQoIlByb3BlcnR5IHNldCBmYWlsZWQ6IFlvdSBwYXNzZWQg
YW4gZW1wdHkgcGF0aCIpO2lmKCFlKXtpZihpKXJldHVybjt0aHJvdyBuZXcgYS5kZWZhdWx0KCdQ
cm9wZXJ0eSBzZXQgZmFpbGVkOiBvYmplY3QgaW4gcGF0aCAiJyt0KyciIGNvdWxkIG5vdCBiZSBm
b3VuZCBvciB3YXMgZGVzdHJveWVkLicpfXJldHVybiBmKGUsbyxyKX1mdW5jdGlvbiBwKGUsdCxy
KXtyZXR1cm4gZihlLHQsciwhMCl9ZS5zZXQ9ZixlLnRyeVNldD1wfSksZSgiZW1iZXItbWV0YWwv
cmVwbGFjZSIsWyJleHBvcnRzIl0sZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHQo
ZSx0LHIsaSl7Zm9yKHZhciBvLGEscz1bXS5jb25jYXQoaSksdT1bXSxsPTZlNCxjPXQsZj1yO3Mu
bGVuZ3RoOylvPWY+bD9sOmYsbzw9MCYmKG89MCksYT1zLnNwbGljZSgwLGwpLGE9W2Msb10uY29u
Y2F0KGEpLGMrPWwsZi09byx1PXUuY29uY2F0KG4uYXBwbHkoZSxhKSk7cmV0dXJuIHV9ZnVuY3Rp
b24gcihlLHIsbixpKXtyZXR1cm4gZS5yZXBsYWNlP2UucmVwbGFjZShyLG4saSk6dChlLHIsbixp
KX1lLl9yZXBsYWNlPXQsZS5kZWZhdWx0PXI7dmFyIG49QXJyYXkucHJvdG90eXBlLnNwbGljZX0p
LGUoImVtYmVyLW1ldGFsL3J1bl9sb29wIixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9jb3JlIiwi
ZW1iZXItbWV0YWwvZGVidWciLCJlbWJlci1tZXRhbC91dGlscyIsImVtYmVyLW1ldGFsL3Byb3Bl
cnR5X2V2ZW50cyIsImJhY2tidXJuZXIiXSxmdW5jdGlvbihlLHQscixuLGksbyl7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIGEoZSl7dS5jdXJyZW50UnVuTG9vcD1lfWZ1bmN0aW9uIHMoZSx0KXt1LmN1
cnJlbnRSdW5Mb29wPXR9ZnVuY3Rpb24gdSgpe3JldHVybiBjLnJ1bi5hcHBseShjLGFyZ3VtZW50
cyl9ZnVuY3Rpb24gbCgpeyF1LmN1cnJlbnRSdW5Mb29wfWUuZGVmYXVsdD11O3ZhciBjPW5ldyBv
LmRlZmF1bHQoWyJzeW5jIiwiYWN0aW9ucyIsImRlc3Ryb3kiXSx7R1VJRF9LRVk6bi5HVUlEX0tF
WSxzeW5jOntiZWZvcmU6aS5iZWdpblByb3BlcnR5Q2hhbmdlcyxhZnRlcjppLmVuZFByb3BlcnR5
Q2hhbmdlc30sZGVmYXVsdFF1ZXVlOiJhY3Rpb25zIixvbkJlZ2luOmEsb25FbmQ6cyxvbkVycm9y
VGFyZ2V0OnQuZGVmYXVsdCxvbkVycm9yTWV0aG9kOiJvbmVycm9yIn0pO3Uuam9pbj1mdW5jdGlv
bigpe3JldHVybiBjLmpvaW4uYXBwbHkoYyxhcmd1bWVudHMpfSx1LmJpbmQ9ZnVuY3Rpb24oKXtm
b3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCx0PUFycmF5KGUpLHI9MDtyPGU7cisrKXRbcl09YXJn
dW1lbnRzW3JdO3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHI9
QXJyYXkoZSksbj0wO248ZTtuKyspcltuXT1hcmd1bWVudHNbbl07cmV0dXJuIHUuam9pbi5hcHBs
eSh1LHQuY29uY2F0KHIpKX19LHUuYmFja2J1cm5lcj1jLHUuY3VycmVudFJ1bkxvb3A9bnVsbCx1
LnF1ZXVlcz1jLnF1ZXVlTmFtZXMsdS5iZWdpbj1mdW5jdGlvbigpe2MuYmVnaW4oKX0sdS5lbmQ9
ZnVuY3Rpb24oKXtjLmVuZCgpfSx1LnNjaGVkdWxlPWZ1bmN0aW9uKCl7bCgpLGMuc2NoZWR1bGUu
YXBwbHkoYyxhcmd1bWVudHMpfSx1Lmhhc1NjaGVkdWxlZFRpbWVycz1mdW5jdGlvbigpe3JldHVy
biBjLmhhc1RpbWVycygpfSx1LmNhbmNlbFRpbWVycz1mdW5jdGlvbigpe2MuY2FuY2VsVGltZXJz
KCl9LHUuc3luYz1mdW5jdGlvbigpe2MuY3VycmVudEluc3RhbmNlJiZjLmN1cnJlbnRJbnN0YW5j
ZS5xdWV1ZXMuc3luYy5mbHVzaCgpfSx1LmxhdGVyPWZ1bmN0aW9uKCl7cmV0dXJuIGMubGF0ZXIu
YXBwbHkoYyxhcmd1bWVudHMpfSx1Lm9uY2U9ZnVuY3Rpb24oKXtsKCk7Zm9yKHZhciBlPWFyZ3Vt
ZW50cy5sZW5ndGgsdD1BcnJheShlKSxyPTA7cjxlO3IrKyl0W3JdPWFyZ3VtZW50c1tyXTtyZXR1
cm4gdC51bnNoaWZ0KCJhY3Rpb25zIiksYy5zY2hlZHVsZU9uY2UuYXBwbHkoYyx0KX0sdS5zY2hl
ZHVsZU9uY2U9ZnVuY3Rpb24oKXtyZXR1cm4gbCgpLGMuc2NoZWR1bGVPbmNlLmFwcGx5KGMsYXJn
dW1lbnRzKX0sdS5uZXh0PWZ1bmN0aW9uKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsdD1B
cnJheShlKSxyPTA7cjxlO3IrKyl0W3JdPWFyZ3VtZW50c1tyXTtyZXR1cm4gdC5wdXNoKDEpLGMu
bGF0ZXIuYXBwbHkoYyx0KX0sdS5jYW5jZWw9ZnVuY3Rpb24oZSl7cmV0dXJuIGMuY2FuY2VsKGUp
fSx1LmRlYm91bmNlPWZ1bmN0aW9uKCl7cmV0dXJuIGMuZGVib3VuY2UuYXBwbHkoYyxhcmd1bWVu
dHMpfSx1LnRocm90dGxlPWZ1bmN0aW9uKCl7cmV0dXJuIGMudGhyb3R0bGUuYXBwbHkoYyxhcmd1
bWVudHMpfSx1Ll9hZGRRdWV1ZT1mdW5jdGlvbihlLHQpe3UucXVldWVzLmluZGV4T2YoZSk9PT0t
MSYmdS5xdWV1ZXMuc3BsaWNlKHUucXVldWVzLmluZGV4T2YodCkrMSwwLGUpfX0pLGUoImVtYmVy
LW1ldGFsL3NldF9wcm9wZXJ0aWVzIixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9wcm9wZXJ0eV9l
dmVudHMiLCJlbWJlci1tZXRhbC9wcm9wZXJ0eV9zZXQiXSxmdW5jdGlvbihlLHQscil7InVzZSBz
dHJpY3QiO2Z1bmN0aW9uIG4oZSxuKXtyZXR1cm4gbiYmIm9iamVjdCI9PXR5cGVvZiBuPyh0LmNo
YW5nZVByb3BlcnRpZXMoZnVuY3Rpb24oKXtmb3IodmFyIHQsaT1PYmplY3Qua2V5cyhuKSxvPTAs
YT1pLmxlbmd0aDtvPGE7bysrKXQ9aVtvXSxyLnNldChlLHQsblt0XSl9KSxuKTpufWUuZGVmYXVs
dD1ufSksZSgiZW1iZXItbWV0YWwvc3RyZWFtcy9kZXBlbmRlbmN5IixbImV4cG9ydHMiLCJlbWJl
ci1tZXRhbC9kZWJ1ZyIsImVtYmVyLW1ldGFsL2Fzc2lnbiIsImVtYmVyLW1ldGFsL3N0cmVhbXMv
dXRpbHMiXSxmdW5jdGlvbihlLHQscixuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlLHQpe3Ro
aXMubmV4dD1udWxsLHRoaXMucHJldj1udWxsLHRoaXMuZGVwZW5kZXI9ZSx0aGlzLmRlcGVuZGVl
PXQsdGhpcy51bnN1YnNjcmlwdGlvbj1udWxsfXIuZGVmYXVsdChpLnByb3RvdHlwZSx7c3Vic2Ny
aWJlOmZ1bmN0aW9uKCl7dGhpcy51bnN1YnNjcmlwdGlvbj1uLnN1YnNjcmliZSh0aGlzLmRlcGVu
ZGVlLHRoaXMuZGVwZW5kZXIubm90aWZ5LHRoaXMuZGVwZW5kZXIpfSx1bnN1YnNjcmliZTpmdW5j
dGlvbigpe3RoaXMudW5zdWJzY3JpcHRpb24mJih0aGlzLnVuc3Vic2NyaXB0aW9uKCksdGhpcy51
bnN1YnNjcmlwdGlvbj1udWxsKX0scmVwbGFjZTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5kZXBl
bmRlZSE9PWUmJih0aGlzLmRlcGVuZGVlPWUsdGhpcy51bnN1YnNjcmlwdGlvbiYmKHRoaXMudW5z
dWJzY3JpYmUoKSx0aGlzLnN1YnNjcmliZSgpKSwhMCl9LGdldFZhbHVlOmZ1bmN0aW9uKCl7cmV0
dXJuIG4ucmVhZCh0aGlzLmRlcGVuZGVlKX0sc2V0VmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG4u
c2V0VmFsdWUodGhpcy5kZXBlbmRlZSxlKX19KSxlLmRlZmF1bHQ9aX0pLGUoImVtYmVyLW1ldGFs
L3N0cmVhbXMva2V5LXN0cmVhbSIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvZGVidWciLCJlbWJl
ci1tZXRhbC9wcm9wZXJ0eV9nZXQiLCJlbWJlci1tZXRhbC9wcm9wZXJ0eV9zZXQiLCJlbWJlci1t
ZXRhbC9vYnNlcnZlciIsImVtYmVyLW1ldGFsL3N0cmVhbXMvc3RyZWFtIiwiZW1iZXItbWV0YWwv
c3RyZWFtcy91dGlscyJdLGZ1bmN0aW9uKGUsdCxyLG4saSxvLGEpeyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiBzKGUsdCl7cmV0dXJuIGUubGFiZWw/ZS5sYWJlbCsiLiIrdDp0fWUuZGVmYXVsdD1vLmRl
ZmF1bHQuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKGUsdCl7dmFyIHI9cyhlLHQpO3RoaXMucGF0aD1y
LHRoaXMub2JzZXJ2ZWRPYmplY3Q9bnVsbCx0aGlzLmtleT10LHRoaXMuc291cmNlRGVwPXRoaXMu
YWRkTXV0YWJsZURlcGVuZGVuY3koZSksdGhpcy5sYWJlbD1yfSxjb21wdXRlOmZ1bmN0aW9uKCl7
dmFyIGU9dGhpcy5zb3VyY2VEZXAuZ2V0VmFsdWUoKSx0PXR5cGVvZiBlO2lmKGUmJiJib29sZWFu
IiE9PXQpcmV0dXJuIm9iamVjdCI9PT10P3IuZ2V0KGUsdGhpcy5rZXkpOmVbdGhpcy5rZXldfSxz
ZXRWYWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnNvdXJjZURlcC5nZXRWYWx1ZSgpO3QmJm4u
c2V0KHQsdGhpcy5rZXksZSl9LHNldFNvdXJjZTpmdW5jdGlvbihlKXt0aGlzLnNvdXJjZURlcC5y
ZXBsYWNlKGUpLHRoaXMubm90aWZ5KCl9LF9zdXBlciRyZXZhbGlkYXRlOm8uZGVmYXVsdC5wcm90
b3R5cGUucmV2YWxpZGF0ZSxyZXZhbGlkYXRlOmZ1bmN0aW9uKGUpe3RoaXMuX3N1cGVyJHJldmFs
aWRhdGUoZSk7dmFyIHQ9dGhpcy5zb3VyY2VEZXAuZ2V0VmFsdWUoKTt0IT09dGhpcy5vYnNlcnZl
ZE9iamVjdCYmKHRoaXMuX2NsZWFyT2JzZXJ2ZWRPYmplY3QoKSx0JiYib2JqZWN0Ij09dHlwZW9m
IHQmJihpLmFkZE9ic2VydmVyKHQsdGhpcy5rZXksdGhpcyx0aGlzLm5vdGlmeSksdGhpcy5vYnNl
cnZlZE9iamVjdD10KSl9LF9zdXBlciRkZWFjdGl2YXRlOm8uZGVmYXVsdC5wcm90b3R5cGUuZGVh
Y3RpdmF0ZSxfY2xlYXJPYnNlcnZlZE9iamVjdDpmdW5jdGlvbigpe3RoaXMub2JzZXJ2ZWRPYmpl
Y3QmJihpLnJlbW92ZU9ic2VydmVyKHRoaXMub2JzZXJ2ZWRPYmplY3QsdGhpcy5rZXksdGhpcyx0
aGlzLm5vdGlmeSksdGhpcy5vYnNlcnZlZE9iamVjdD1udWxsKX0sZGVhY3RpdmF0ZTpmdW5jdGlv
bigpe3RoaXMuX3N1cGVyJGRlYWN0aXZhdGUoKSx0aGlzLl9jbGVhck9ic2VydmVkT2JqZWN0KCl9
fSl9KSxlKCJlbWJlci1tZXRhbC9zdHJlYW1zL3Byb3h5LXN0cmVhbSIsWyJleHBvcnRzIiwiZW1i
ZXItcnVudGltZS9zeXN0ZW0vb2JqZWN0IiwiZW1iZXItbWV0YWwvc3RyZWFtcy9zdHJlYW0iXSxm
dW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIuZGVmYXVsdC5leHRlbmQoe2luaXQ6
ZnVuY3Rpb24oZSx0KXt0aGlzLmxhYmVsPXQsdGhpcy5zb3VyY2VEZXA9dGhpcy5hZGRNdXRhYmxl
RGVwZW5kZW5jeShlKX0sY29tcHV0ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNvdXJjZURlcC5n
ZXRWYWx1ZSgpfSxzZXRWYWx1ZTpmdW5jdGlvbihlKXt0aGlzLnNvdXJjZURlcC5zZXRWYWx1ZShl
KX0sc2V0U291cmNlOmZ1bmN0aW9uKGUpe3ZhciByPXRoaXMuc291cmNlRGVwLnJlcGxhY2UoZSk7
IXImJmUgaW5zdGFuY2VvZiB0LmRlZmF1bHR8fHRoaXMubm90aWZ5KCl9fSk7bi5leHRlbmQ9ci5k
ZWZhdWx0LmV4dGVuZCxlLmRlZmF1bHQ9bn0pLGUoImVtYmVyLW1ldGFsL3N0cmVhbXMvc3RyZWFt
IixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9hc3NpZ24iLCJlbWJlci1tZXRhbC9kZWJ1ZyIsImVt
YmVyLW1ldGFsL3BhdGhfY2FjaGUiLCJlbWJlci1tZXRhbC9vYnNlcnZlciIsImVtYmVyLW1ldGFs
L3N0cmVhbXMvdXRpbHMiLCJlbWJlci1tZXRhbC9lbXB0eV9vYmplY3QiLCJlbWJlci1tZXRhbC9z
dHJlYW1zL3N1YnNjcmliZXIiLCJlbWJlci1tZXRhbC9zdHJlYW1zL2RlcGVuZGVuY3kiLCJlbWJl
ci1tZXRhbC91dGlscyIsInJlcXVpcmUiLCJlbWJlci1tZXRhbC9zeW1ib2wiXSxmdW5jdGlvbihl
LHQscixuLGksbyxhLHMsdSxsLGMsZil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGQoZSl7dGhpcy5f
aW5pdChlKX1mdW5jdGlvbiBwKGUsdCxyKXtyZXR1cm4gby5pc1N0cmVhbShlKT9lOm5ldyB0KGUs
cil9ZnVuY3Rpb24gaChlKXtyZXR1cm4gdm9pZCAwPT09ZT8iKG5vIGxhYmVsKSI6ZX1lLndyYXA9
cDt2YXIgbT1mLmRlZmF1bHQoIklTX1NUUkVBTSIpO2UuSVNfU1RSRUFNPW07dmFyIHYsYjtkLnBy
b3RvdHlwZT17X2luaXQ6ZnVuY3Rpb24oZSl7dGhpc1ttXT0hMCx0aGlzLmxhYmVsPWgoZSksdGhp
cy5pc0FjdGl2ZT0hMSx0aGlzLmlzRGlydHk9ITAsdGhpcy5pc0Rlc3Ryb3llZD0hMSx0aGlzLmNh
Y2hlPXZvaWQgMCx0aGlzLmNoaWxkcmVuPXZvaWQgMCx0aGlzLnN1YnNjcmliZXJIZWFkPW51bGws
dGhpcy5zdWJzY3JpYmVyVGFpbD1udWxsLHRoaXMuZGVwZW5kZW5jeUhlYWQ9bnVsbCx0aGlzLmRl
cGVuZGVuY3lUYWlsPW51bGwsdGhpcy5vYnNlcnZlZFByb3h5PW51bGwsdGhpcy5fX2VtYmVyX21l
dGFfXz1udWxsLHRoaXNbbC5HVUlEX0tFWV09bnVsbH0sX21ha2VDaGlsZFN0cmVhbTpmdW5jdGlv
bihlKXtyZXR1cm4gbmV3KHY9dnx8Yy5kZWZhdWx0KCJlbWJlci1tZXRhbC9zdHJlYW1zL2tleS1z
dHJlYW0iKS5kZWZhdWx0KSh0aGlzLGUpfSxyZW1vdmVDaGlsZDpmdW5jdGlvbihlKXtkZWxldGUg
dGhpcy5jaGlsZHJlbltlXX0sZ2V0S2V5OmZ1bmN0aW9uKGUpe3ZvaWQgMD09PXRoaXMuY2hpbGRy
ZW4mJih0aGlzLmNoaWxkcmVuPW5ldyBhLmRlZmF1bHQpO3ZhciB0PXRoaXMuY2hpbGRyZW5bZV07
cmV0dXJuIHZvaWQgMD09PXQmJih0PXRoaXMuX21ha2VDaGlsZFN0cmVhbShlKSx0aGlzLmNoaWxk
cmVuW2VdPXQpLHR9LGdldDpmdW5jdGlvbihlKXt2YXIgdD1uLmdldEZpcnN0S2V5KGUpLHI9bi5n
ZXRUYWlsUGF0aChlKTt2b2lkIDA9PT10aGlzLmNoaWxkcmVuJiYodGhpcy5jaGlsZHJlbj1uZXcg
YS5kZWZhdWx0KTt2YXIgaT10aGlzLmNoaWxkcmVuW3RdO3JldHVybiB2b2lkIDA9PT1pJiYoaT10
aGlzLl9tYWtlQ2hpbGRTdHJlYW0odCxlKSx0aGlzLmNoaWxkcmVuW3RdPWkpLHZvaWQgMD09PXI/
aTppLmdldChyKX0sdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmlzQWN0aXZlfHwodGhpcy5pc0RpcnR5
PSEwKTt2YXIgZT0hMTtyZXR1cm4hdGhpcy5pc0FjdGl2ZSYmdGhpcy5zdWJzY3JpYmVySGVhZCYm
KHRoaXMuYWN0aXZhdGUoKSxlPSEwKSx0aGlzLmlzRGlydHkmJih0aGlzLmlzQWN0aXZlJiYoZT0h
MCksdGhpcy5jYWNoZT10aGlzLmNvbXB1dGUoKSx0aGlzLmlzRGlydHk9ITEpLGUmJnRoaXMucmV2
YWxpZGF0ZSh0aGlzLmNhY2hlKSx0aGlzLmNhY2hlfSxhZGRNdXRhYmxlRGVwZW5kZW5jeTpmdW5j
dGlvbihlKXt2YXIgdD1uZXcgdS5kZWZhdWx0KHRoaXMsZSk7aWYodGhpcy5pc0FjdGl2ZSYmdC5z
dWJzY3JpYmUoKSxudWxsPT09dGhpcy5kZXBlbmRlbmN5SGVhZCl0aGlzLmRlcGVuZGVuY3lIZWFk
PXRoaXMuZGVwZW5kZW5jeVRhaWw9dDtlbHNle3ZhciByPXRoaXMuZGVwZW5kZW5jeVRhaWw7ci5u
ZXh0PXQsdC5wcmV2PXIsdGhpcy5kZXBlbmRlbmN5VGFpbD10fXJldHVybiB0fSxhZGREZXBlbmRl
bmN5OmZ1bmN0aW9uKGUpe28uaXNTdHJlYW0oZSkmJnRoaXMuYWRkTXV0YWJsZURlcGVuZGVuY3ko
ZSl9LHN1YnNjcmliZURlcGVuZGVuY2llczpmdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLmRlcGVu
ZGVuY3lIZWFkO2U7KXt2YXIgdD1lLm5leHQ7ZS5zdWJzY3JpYmUoKSxlPXR9fSx1bnN1YnNjcmli
ZURlcGVuZGVuY2llczpmdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLmRlcGVuZGVuY3lIZWFkO2U7
KXt2YXIgdD1lLm5leHQ7ZS51bnN1YnNjcmliZSgpLGU9dH19LG1heWJlRGVhY3RpdmF0ZTpmdW5j
dGlvbigpeyF0aGlzLnN1YnNjcmliZXJIZWFkJiZ0aGlzLmlzQWN0aXZlJiYodGhpcy5pc0FjdGl2
ZT0hMSx0aGlzLnVuc3Vic2NyaWJlRGVwZW5kZW5jaWVzKCksdGhpcy5kZWFjdGl2YXRlKCkpfSxh
Y3RpdmF0ZTpmdW5jdGlvbigpe3RoaXMuaXNBY3RpdmU9ITAsdGhpcy5zdWJzY3JpYmVEZXBlbmRl
bmNpZXMoKX0scmV2YWxpZGF0ZTpmdW5jdGlvbihlKXtlIT09dGhpcy5vYnNlcnZlZFByb3h5JiYo
dGhpcy5fY2xlYXJPYnNlcnZlZFByb3h5KCksYj1ifHxjLmRlZmF1bHQoImVtYmVyLXJ1bnRpbWUv
bWl4aW5zLy1wcm94eSIpLmRlZmF1bHQsYi5kZXRlY3QoZSkmJihpLmFkZE9ic2VydmVyKGUsImNv
bnRlbnQiLHRoaXMsdGhpcy5ub3RpZnkpLHRoaXMub2JzZXJ2ZWRQcm94eT1lKSl9LF9jbGVhck9i
c2VydmVkUHJveHk6ZnVuY3Rpb24oKXt0aGlzLm9ic2VydmVkUHJveHkmJihpLnJlbW92ZU9ic2Vy
dmVyKHRoaXMub2JzZXJ2ZWRQcm94eSwiY29udGVudCIsdGhpcyx0aGlzLm5vdGlmeSksdGhpcy5v
YnNlcnZlZFByb3h5PW51bGwpfSxkZWFjdGl2YXRlOmZ1bmN0aW9uKCl7dGhpcy5fY2xlYXJPYnNl
cnZlZFByb3h5KCl9LGNvbXB1dGU6ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIlN0cmVhbSBl
cnJvcjogY29tcHV0ZSBub3QgaW1wbGVtZW50ZWQiKX0sc2V0VmFsdWU6ZnVuY3Rpb24oKXt0aHJv
dyBuZXcgRXJyb3IoIlN0cmVhbSBlcnJvcjogc2V0VmFsdWUgbm90IGltcGxlbWVudGVkIil9LG5v
dGlmeTpmdW5jdGlvbigpe3RoaXMubm90aWZ5RXhjZXB0KCl9LG5vdGlmeUV4Y2VwdDpmdW5jdGlv
bihlLHQpe3RoaXMuaXNEaXJ0eXx8KHRoaXMuaXNEaXJ0eT0hMCx0aGlzLm5vdGlmeVN1YnNjcmli
ZXJzKGUsdCkpfSxzdWJzY3JpYmU6ZnVuY3Rpb24oZSx0KXt2YXIgcj1uZXcgcy5kZWZhdWx0KGUs
dCx0aGlzKTtpZihudWxsPT09dGhpcy5zdWJzY3JpYmVySGVhZCl0aGlzLnN1YnNjcmliZXJIZWFk
PXRoaXMuc3Vic2NyaWJlclRhaWw9cjtlbHNle3ZhciBuPXRoaXMuc3Vic2NyaWJlclRhaWw7bi5u
ZXh0PXIsci5wcmV2PW4sdGhpcy5zdWJzY3JpYmVyVGFpbD1yfXZhciBpPXRoaXM7cmV0dXJuIGZ1
bmN0aW9uKGUpe3IucmVtb3ZlRnJvbShpKSxlJiZpLnBydW5lKCl9fSxwcnVuZTpmdW5jdGlvbigp
e251bGw9PT10aGlzLnN1YnNjcmliZXJIZWFkJiZ0aGlzLmRlc3Ryb3koITApfSx1bnN1YnNjcmli
ZTpmdW5jdGlvbihlLHQpe2Zvcih2YXIgcj10aGlzLnN1YnNjcmliZXJIZWFkO3I7KXt2YXIgbj1y
Lm5leHQ7ci5jYWxsYmFjaz09PWUmJnIuY29udGV4dD09PXQmJnIucmVtb3ZlRnJvbSh0aGlzKSxy
PW59fSxub3RpZnlTdWJzY3JpYmVyczpmdW5jdGlvbihlLHQpe2Zvcih2YXIgcj10aGlzLnN1YnNj
cmliZXJIZWFkO3I7KXt2YXIgbj1yLm5leHQsaT1yLmNhbGxiYWNrLG89ci5jb250ZXh0O3I9bixp
PT09ZSYmbz09PXR8fCh2b2lkIDA9PT1vP2kodGhpcyk6aS5jYWxsKG8sdGhpcykpfX0sZGVzdHJv
eTpmdW5jdGlvbihlKXtpZighdGhpcy5pc0Rlc3Ryb3llZCl7dGhpcy5pc0Rlc3Ryb3llZD0hMCx0
aGlzLnN1YnNjcmliZXJIZWFkPXRoaXMuc3Vic2NyaWJlclRhaWw9bnVsbCx0aGlzLm1heWJlRGVh
Y3RpdmF0ZSgpO3ZhciB0PXRoaXMuZGVwZW5kZW5jaWVzO2lmKHQpZm9yKHZhciByPTAsbj10Lmxl
bmd0aDtyPG47cisrKXRbcl0oZSk7cmV0dXJuITB9fX0sZC5leHRlbmQ9ZnVuY3Rpb24oZSl7dmFy
IHI9ZnVuY3Rpb24oKXt0aGlzLl9pbml0KCksdGhpcy5pbml0LmFwcGx5KHRoaXMsYXJndW1lbnRz
KX07cmV0dXJuIHIucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodGhpcy5wcm90b3R5cGUpLHQuZGVm
YXVsdChyLnByb3RvdHlwZSxlKSxyLmV4dGVuZD1kLmV4dGVuZCxyfTt2YXIgZz1kLmV4dGVuZCh7
aW5pdDpmdW5jdGlvbihlLHQpe3RoaXMuX2NvbXB1dGU9ZSx0aGlzLmxhYmVsPXR9LGNvbXB1dGU6
ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY29tcHV0ZSgpfX0pO2UuZGVmYXVsdD1kLGUuU3RyZWFt
PWd9KSxlKCJlbWJlci1tZXRhbC9zdHJlYW1zL3N1YnNjcmliZXIiLFsiZXhwb3J0cyIsImVtYmVy
LW1ldGFsL2Fzc2lnbiJdLGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0
KXt0aGlzLm5leHQ9bnVsbCx0aGlzLnByZXY9bnVsbCx0aGlzLmNhbGxiYWNrPWUsdGhpcy5jb250
ZXh0PXR9dC5kZWZhdWx0KHIucHJvdG90eXBlLHtyZW1vdmVGcm9tOmZ1bmN0aW9uKGUpe3ZhciB0
PXRoaXMubmV4dCxyPXRoaXMucHJldjtyP3IubmV4dD10OmUuc3Vic2NyaWJlckhlYWQ9dCx0P3Qu
cHJldj1yOmUuc3Vic2NyaWJlclRhaWw9cixlLm1heWJlRGVhY3RpdmF0ZSgpfX0pLGUuZGVmYXVs
dD1yfSksZSgiZW1iZXItbWV0YWwvc3RyZWFtcy91dGlscyIsWyJleHBvcnRzIiwiZW1iZXItbWV0
YWwvZGVidWciLCJlbWJlci1tZXRhbC9zdHJlYW1zL3N0cmVhbSJdLGZ1bmN0aW9uKGUsdCxyKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlKXtyZXR1cm4gZSYmZVtyLklTX1NUUkVBTV19ZnVuY3Rp
b24gaShlLHQsbil7aWYoZSYmZVtyLklTX1NUUkVBTV0pcmV0dXJuIGUuc3Vic2NyaWJlKHQsbil9
ZnVuY3Rpb24gbyhlLHQsbil7ZSYmZVtyLklTX1NUUkVBTV0mJmUudW5zdWJzY3JpYmUodCxuKX1m
dW5jdGlvbiBhKGUpe3JldHVybiBlJiZlW3IuSVNfU1RSRUFNXT9lLnZhbHVlKCk6ZX1mdW5jdGlv
biBzKGUpe2Zvcih2YXIgdD1lLmxlbmd0aCxyPW5ldyBBcnJheSh0KSxuPTA7bjx0O24rKylyW25d
PWEoZVtuXSk7cmV0dXJuIHJ9ZnVuY3Rpb24gdShlKXt2YXIgdD17fTtmb3IodmFyIHIgaW4gZSl0
W3JdPWEoZVtyXSk7cmV0dXJuIHR9ZnVuY3Rpb24gbChlKXtmb3IodmFyIHQ9ZS5sZW5ndGgscj0h
MSxpPTA7aTx0O2krKylpZihuKGVbaV0pKXtyPSEwO2JyZWFrfXJldHVybiByfWZ1bmN0aW9uIGMo
ZSl7dmFyIHQ9ITE7Zm9yKHZhciByIGluIGUpaWYobihlW3JdKSl7dD0hMDticmVha31yZXR1cm4g
dH1mdW5jdGlvbiBmKGUsdCl7dmFyIHI9bChlKTtpZihyKXtmb3IodmFyIG49bmV3IHgoZSx0KSxp
PTAsbz1lLmxlbmd0aDtpPG87aSsrKWIobixlW2ldKTtyZXR1cm4gbn1yZXR1cm4gZS5qb2luKHQp
fWZ1bmN0aW9uIGQoZSl7Zm9yKHZhciB0PVtdLHI9MCxuPWUubGVuZ3RoO3I8bjtyKyspe3ZhciBp
PWVbcl07dC5wdXNoKGgoaSkpfXJldHVybiB0fWZ1bmN0aW9uIHAoZSl7dmFyIHQ9W107Zm9yKHZh
ciByIGluIGUpdC5wdXNoKHIrIjogIittKGVbcl0pKTtyZXR1cm4gdC5sZW5ndGg/InsgIit0Lmpv
aW4oIiwgIikrIiB9Ijoie30ifWZ1bmN0aW9uIGgoZSl7aWYobihlKSl7dmFyIHQ9ZTtyZXR1cm4i
ZnVuY3Rpb24iPT10eXBlb2YgdC5sYWJlbD90LmxhYmVsKCk6dC5sYWJlbH1yZXR1cm4gbShlKX1m
dW5jdGlvbiBtKGUpe3N3aXRjaCh0eXBlb2YgZSl7Y2FzZSJzdHJpbmciOnJldHVybiciJytlKyci
JztjYXNlIm9iamVjdCI6cmV0dXJuInsgLi4uIH0iO2Nhc2UiZnVuY3Rpb24iOnJldHVybiJmdW5j
dGlvbigpIHsgLi4uIH0iO2RlZmF1bHQ6cmV0dXJuIFN0cmluZyhlKX19ZnVuY3Rpb24gdihlLHQp
e3ZhciBuPW5ldyByLlN0cmVhbShmdW5jdGlvbigpe3JldHVybiBlLnZhbHVlKCl8fHQudmFsdWUo
KX0sZnVuY3Rpb24oKXtyZXR1cm4gaChlKSsiIHx8ICIraCh0KX0pO3JldHVybiBuLmFkZERlcGVu
ZGVuY3koZSksbi5hZGREZXBlbmRlbmN5KHQpLG59ZnVuY3Rpb24gYihlLHQpe24oZSkmJmUuYWRk
RGVwZW5kZW5jeSh0KX1mdW5jdGlvbiBnKGUsdCxuKXtmb3IodmFyIGk9bmV3IHIuU3RyZWFtKGZ1
bmN0aW9uKCl7dmFyIHI9cyhlKTtyZXR1cm4gdD90KHIpOnJ9LGZ1bmN0aW9uKCl7cmV0dXJuIG4r
IigiK2QoZSkrIikifSksbz0wLGE9ZS5sZW5ndGg7bzxhO28rKylpLmFkZERlcGVuZGVuY3koZVtv
XSk7cmV0dXJuIGl9ZnVuY3Rpb24geShlLHQsbil7dmFyIGk9bmV3IHIuU3RyZWFtKGZ1bmN0aW9u
KCl7dmFyIHI9dShlKTtyZXR1cm4gdD90KHIpOnJ9LGZ1bmN0aW9uKCl7cmV0dXJuIG4rIigiK3Ao
ZSkrIikifSk7Zm9yKHZhciBvIGluIGUpaS5hZGREZXBlbmRlbmN5KGVbb10pO3JldHVybiBpfWZ1
bmN0aW9uIF8oZSx0LGkpe2lmKG4oZSkpe3ZhciBvPW5ldyByLlN0cmVhbSh0LGZ1bmN0aW9uKCl7
cmV0dXJuIGkrIigiK2goZSkrIikifSk7cmV0dXJuIG8uYWRkRGVwZW5kZW5jeShlKSxvfXJldHVy
biB0KCl9ZnVuY3Rpb24gdyhlLHQpe2UmJmVbci5JU19TVFJFQU1dJiZlLnNldFZhbHVlKHQpfWUu
aXNTdHJlYW09bixlLnN1YnNjcmliZT1pLGUudW5zdWJzY3JpYmU9byxlLnJlYWQ9YSxlLnJlYWRB
cnJheT1zLGUucmVhZEhhc2g9dSxlLnNjYW5BcnJheT1sLGUuc2Nhbkhhc2g9YyxlLmNvbmNhdD1m
LGUubGFiZWxzRm9yPWQsZS5sYWJlbHNGb3JPYmplY3Q9cCxlLmxhYmVsRm9yPWgsZS5vcj12LGUu
YWRkRGVwZW5kZW5jeT1iLGUuemlwPWcsZS56aXBIYXNoPXksZS5jaGFpbj1fLGUuc2V0VmFsdWU9
dzt2YXIgeD1yLmRlZmF1bHQuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKGUsdCl7dGhpcy5hcnJheT1l
LHRoaXMuc2VwYXJhdG9yPXQsdGhpcy5pc0NvbmNhdD0hMH0sbGFiZWw6ZnVuY3Rpb24oKXt2YXIg
ZT1kKHRoaXMuYXJyYXkpO3JldHVybiJjb25jYXQoWyIrZS5qb2luKCIsICIpKyJdOyBzZXBhcmF0
b3I9IittKHRoaXMuc2VwYXJhdG9yKSsiKSJ9LGNvbXB1dGU6ZnVuY3Rpb24oKXtyZXR1cm4gZihz
KHRoaXMuYXJyYXkpLHRoaXMuc2VwYXJhdG9yKX19KX0pLGUoImVtYmVyLW1ldGFsL3N5bWJvbCIs
WyJleHBvcnRzIiwiZW1iZXItbWV0YWwvdXRpbHMiXSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiByKGUpe3JldHVybiB0LmludGVybihlKyIgW2lkPSIrdC5HVUlEX0tFWStNYXRo
LmZsb29yKE1hdGgucmFuZG9tKCkqbmV3IERhdGUpKyJdIil9ZS5kZWZhdWx0PXJ9KSxlKCJlbWJl
ci1tZXRhbC90YWdzIixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9tZXRhIiwicmVxdWlyZSJdLGZ1
bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlLHIpe2lmKCFpKXRocm93IG5l
dyBFcnJvcigiQ2Fubm90IGNhbGwgdGFnRm9yIHdpdGhvdXQgR2xpbW1lciIpO2lmKGUmJiJvYmpl
Y3QiPT10eXBlb2YgZSl7dmFyIG49cnx8dC5tZXRhKGUpO3JldHVybiBuLndyaXRhYmxlVGFnKHUp
fXJldHVybiBvfWUudGFnRm9yPW47dmFyIGk9ci5oYXMoImdsaW1tZXItcmVmZXJlbmNlIiksbz12
b2lkIDAsYT12b2lkIDAscz12b2lkIDAsdT12b2lkIDAsbD12b2lkIDA7aWYoZS5tYXJrT2JqZWN0
QXNEaXJ0eT1sLGkpe3ZhciBjPXIuZGVmYXVsdCgiZ2xpbW1lci1yZWZlcmVuY2UiKTtzPWMuRGly
dHlhYmxlVGFnLG89Yy5DT05TVEFOVF9UQUcsYT1jLkNVUlJFTlRfVEFHLHU9ZnVuY3Rpb24oKXty
ZXR1cm4gbmV3IHN9LGUubWFya09iamVjdEFzRGlydHk9bD1mdW5jdGlvbihlKXt2YXIgdD1lJiZl
LnJlYWRhYmxlVGFnKCl8fGE7dC5kaXJ0eSgpfX1lbHNlIGUubWFya09iamVjdEFzRGlydHk9bD1m
dW5jdGlvbigpe319KSxlKCJlbWJlci1tZXRhbC91dGlscyIsWyJleHBvcnRzIl0sZnVuY3Rpb24o
ZSl7Im5vIHVzZSBzdHJpY3QiO2Z1bmN0aW9uIHQoKXtyZXR1cm4rK3Z9ZnVuY3Rpb24gcihlKXt2
YXIgdD17fTt0W2VdPTE7Zm9yKHZhciByIGluIHQpaWYocj09PWUpcmV0dXJuIHI7cmV0dXJuIGV9
ZnVuY3Rpb24gbihlLHIpe3J8fChyPWIpO3ZhciBuPXIrdCgpO3JldHVybiBlJiYobnVsbD09PWVb
X10/ZVtfXT1uOih3LnZhbHVlPW4sZS5fX2RlZmluZU5vbkVudW1lcmFibGU/ZS5fX2RlZmluZU5v
bkVudW1lcmFibGUoayk6T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXyx3KSkpLG59ZnVuY3Rpb24g
aShlKXtpZihlJiZlW19dKXJldHVybiBlW19dO2lmKHZvaWQgMD09PWUpcmV0dXJuIih1bmRlZmlu
ZWQpIjtpZihudWxsPT09ZSlyZXR1cm4iKG51bGwpIjt2YXIgcixuPXR5cGVvZiBlO3N3aXRjaChu
KXtjYXNlIm51bWJlciI6cmV0dXJuIHI9Z1tlXSxyfHwocj1nW2VdPSJudSIrZSkscjtjYXNlInN0
cmluZyI6cmV0dXJuIHI9eVtlXSxyfHwocj15W2VdPSJzdCIrdCgpKSxyO2Nhc2UiYm9vbGVhbiI6
cmV0dXJuIGU/Iih0cnVlKSI6IihmYWxzZSkiO2RlZmF1bHQ6cmV0dXJuIGU9PT1PYmplY3Q/IihP
YmplY3QpIjplPT09QXJyYXk/IihBcnJheSkiOihyPWIrdCgpLG51bGw9PT1lW19dP2VbX109cjoo
dy52YWx1ZT1yLGUuX19kZWZpbmVOb25FbnVtZXJhYmxlP2UuX19kZWZpbmVOb25FbnVtZXJhYmxl
KGspOk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLF8sdykpLHIpfX1mdW5jdGlvbiBvKCl7fWZ1bmN0
aW9uIGEoZSl7cmV0dXJuIHZvaWQgMD09PWUuX19oYXNTdXBlciYmKGUuX19oYXNTdXBlcj1PKGUp
KSxlLl9faGFzU3VwZXJ9ZnVuY3Rpb24gcyhlLHQpe3JldHVybiBhKGUpPyF0LndyYXBwZWRGdW5j
dGlvbiYmYSh0KT91KGUsdSh0LG8pKTp1KGUsdCk6ZX1mdW5jdGlvbiB1KGUsdCl7ZnVuY3Rpb24g
cigpe3ZhciByPXRoaXMuX3N1cGVyO3RoaXMuX3N1cGVyPXQ7dmFyIG49ZS5hcHBseSh0aGlzLGFy
Z3VtZW50cyk7cmV0dXJuIHRoaXMuX3N1cGVyPXIsbn1yZXR1cm4gci53cmFwcGVkRnVuY3Rpb249
ZSxyLl9fZW1iZXJfb2JzZXJ2ZXNfXz1lLl9fZW1iZXJfb2JzZXJ2ZXNfXyxyLl9fZW1iZXJfb2Jz
ZXJ2ZXNCZWZvcmVfXz1lLl9fZW1iZXJfb2JzZXJ2ZXNCZWZvcmVfXyxyLl9fZW1iZXJfbGlzdGVu
c19fPWUuX19lbWJlcl9saXN0ZW5zX18scn1mdW5jdGlvbiBsKGUsdCl7cmV0dXJuISghZXx8ImZ1
bmN0aW9uIiE9dHlwZW9mIGVbdF0pfWZ1bmN0aW9uIGMoZSx0LHIpe2lmKGwoZSx0KSlyZXR1cm4g
cj9wKGUsdCxyKTpwKGUsdCl9ZnVuY3Rpb24gZihlKXtyZXR1cm4gbnVsbD09PWV8fHZvaWQgMD09
PWU/W106QXJyYXkuaXNBcnJheShlKT9lOltlXX1mdW5jdGlvbiBkKGUpe2lmKG51bGw9PT1lKXJl
dHVybiJudWxsIjtpZih2b2lkIDA9PT1lKXJldHVybiJ1bmRlZmluZWQiO2lmKEFycmF5LmlzQXJy
YXkoZSkpcmV0dXJuIlsiK2UrIl0iO3ZhciB0PXR5cGVvZiBlO2lmKCJvYmplY3QiIT09dCYmInN5
bWJvbCIhPT10KXJldHVybiIiK2U7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGUudG9TdHJpbmcmJmUu
dG9TdHJpbmchPT1UKXJldHVybiBlLnRvU3RyaW5nKCk7dmFyIHIsbj1bXTtmb3IodmFyIGkgaW4g
ZSlpZihlLmhhc093blByb3BlcnR5KGkpKXtpZihyPWVbaV0sInRvU3RyaW5nIj09PXIpY29udGlu
dWU7ImZ1bmN0aW9uIj09dHlwZW9mIHImJihyPSJmdW5jdGlvbigpIHsgLi4uIH0iKSxyJiYiZnVu
Y3Rpb24iIT10eXBlb2Ygci50b1N0cmluZz9uLnB1c2goaSsiOiAiK1QuY2FsbChyKSk6bi5wdXNo
KGkrIjogIityKX1yZXR1cm4ieyIrbi5qb2luKCIsICIpKyJ9In1mdW5jdGlvbiBwKGUsdCxyKXt2
YXIgbj1yJiZyLmxlbmd0aDtpZighcnx8IW4pcmV0dXJuIGVbdF0oKTtzd2l0Y2gobil7Y2FzZSAx
OnJldHVybiBlW3RdKHJbMF0pO2Nhc2UgMjpyZXR1cm4gZVt0XShyWzBdLHJbMV0pO2Nhc2UgMzpy
ZXR1cm4gZVt0XShyWzBdLHJbMV0sclsyXSk7Y2FzZSA0OnJldHVybiBlW3RdKHJbMF0sclsxXSxy
WzJdLHJbM10pO2Nhc2UgNTpyZXR1cm4gZVt0XShyWzBdLHJbMV0sclsyXSxyWzNdLHJbNF0pO2Rl
ZmF1bHQ6cmV0dXJuIGVbdF0uYXBwbHkoZSxyKX19ZnVuY3Rpb24gaChlLHQpe2Zvcih2YXIgcj1l
O3I7KXt2YXIgbj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHIsdCk7aWYobilyZXR1
cm4gbjtyPU9iamVjdC5nZXRQcm90b3R5cGVPZihyKX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBtKGUp
e3JldHVybiBlJiZlLnRvU3RyaW5nP2UudG9TdHJpbmcoKTpULmNhbGwoZSl9ZS51dWlkPXQsZS5p
bnRlcm49cixlLmdlbmVyYXRlR3VpZD1uLGUuZ3VpZEZvcj1pLGUud3JhcD1zLGUudHJ5SW52b2tl
PWMsZS5tYWtlQXJyYXk9ZixlLmluc3BlY3Q9ZCxlLmFwcGx5U3RyPXAsZS5sb29rdXBEZXNjcmlw
dG9yPWgsZS50b1N0cmluZz1tO3ZhciB2PTAsYj0iZW1iZXIiLGc9W10seT17fSxfPXIoIl9fZW1i
ZXIiKyArbmV3IERhdGUpLHc9e3dyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxl
OiExLHZhbHVlOm51bGx9O2UuR1VJRF9ERVNDPXc7dmFyIHg9e2NvbmZpZ3VyYWJsZTohMCx3cml0
YWJsZTohMCxlbnVtZXJhYmxlOiExLHZhbHVlOm51bGx9LGs9e25hbWU6XyxkZXNjcmlwdG9yOnh9
O2UuR1VJRF9LRVlfUFJPUEVSVFk9azt2YXIgQz0vXC4oX3N1cGVyfGNhbGxcKHRoaXN8YXBwbHlc
KHRoaXMpLyxFPUZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZyxPPWZ1bmN0aW9uKCl7dmFyIGU9
RS5jYWxsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KS5pbmRleE9mKCJyZXR1cm4gdGhpcyIpPi0x
O3JldHVybiBlP2Z1bmN0aW9uKGUpe3JldHVybiBDLnRlc3QoRS5jYWxsKGUpKX06ZnVuY3Rpb24o
KXtyZXR1cm4hMH19KCk7ZS5jaGVja0hhc1N1cGVyPU8sby5fX2hhc1N1cGVyPSExO3ZhciBUPU9i
amVjdC5wcm90b3R5cGUudG9TdHJpbmc7ZS5HVUlEX0tFWT1fLGUubWFrZUFycmF5PWYsZS5jYW5J
bnZva2U9bH0pLGUoImVtYmVyLW1ldGFsL3dhdGNoX2tleSIsWyJleHBvcnRzIiwiZW1iZXItbWV0
YWwvZmVhdHVyZXMiLCJlbWJlci1tZXRhbC9tZXRhIiwiZW1iZXItbWV0YWwvcHJvcGVydGllcyIs
ImVtYmVyLW1ldGFsL3V0aWxzIl0sZnVuY3Rpb24oZSx0LHIsbixpKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gbyhlLHQsbil7aWYoImxlbmd0aCIhPT10fHwhQXJyYXkuaXNBcnJheShlKSl7dmFyIGk9
bnx8ci5tZXRhKGUpO2lmKGkucGVla1dhdGNoaW5nKHQpKWkud3JpdGVXYXRjaGluZyh0LChpLnBl
ZWtXYXRjaGluZyh0KXx8MCkrMSk7ZWxzZXtpLndyaXRlV2F0Y2hpbmcodCwxKTt2YXIgbz1lW3Rd
LGE9bnVsbCE9PW8mJiJvYmplY3QiPT10eXBlb2YgbyYmby5pc0Rlc2NyaXB0b3I/bzp2b2lkIDA7
YSYmYS53aWxsV2F0Y2gmJmEud2lsbFdhdGNoKGUsdCksImZ1bmN0aW9uIj09dHlwZW9mIGUud2ls
bFdhdGNoUHJvcGVydHkmJmUud2lsbFdhdGNoUHJvcGVydHkodCl9fX1mdW5jdGlvbiBhKGUsdCxu
KXt2YXIgaT1ufHxyLm1ldGEoZSksbz1pLnBlZWtXYXRjaGluZyh0KTtpZigxPT09byl7aS53cml0
ZVdhdGNoaW5nKHQsMCk7dmFyIGE9ZVt0XSxzPW51bGwhPT1hJiYib2JqZWN0Ij09dHlwZW9mIGEm
JmEuaXNEZXNjcmlwdG9yP2E6dm9pZCAwO3MmJnMuZGlkVW53YXRjaCYmcy5kaWRVbndhdGNoKGUs
dCksImZ1bmN0aW9uIj09dHlwZW9mIGUuZGlkVW53YXRjaFByb3BlcnR5JiZlLmRpZFVud2F0Y2hQ
cm9wZXJ0eSh0KX1lbHNlIG8+MSYmaS53cml0ZVdhdGNoaW5nKHQsby0xKX1lLndhdGNoS2V5PW8s
ZS51bndhdGNoS2V5PWF9KSxlKCJlbWJlci1tZXRhbC93YXRjaF9wYXRoIixbImV4cG9ydHMiLCJl
bWJlci1tZXRhbC9tZXRhIiwiZW1iZXItbWV0YWwvY2hhaW5zIl0sZnVuY3Rpb24oZSx0LHIpeyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUscil7cmV0dXJuKHJ8fHQubWV0YShlKSkud3JpdGFibGVD
aGFpbnMoaSl9ZnVuY3Rpb24gaShlKXtyZXR1cm4gbmV3IHIuQ2hhaW5Ob2RlKG51bGwsbnVsbCxl
KX1mdW5jdGlvbiBvKGUscixpKXtpZigibGVuZ3RoIiE9PXJ8fCFBcnJheS5pc0FycmF5KGUpKXt2
YXIgbz1pfHx0Lm1ldGEoZSksYT1vLnBlZWtXYXRjaGluZyhyKXx8MDthP28ud3JpdGVXYXRjaGlu
ZyhyLGErMSk6KG8ud3JpdGVXYXRjaGluZyhyLDEpLG4oZSxvKS5hZGQocikpfX1mdW5jdGlvbiBh
KGUscixpKXt2YXIgbz1pfHx0Lm1ldGEoZSksYT1vLnBlZWtXYXRjaGluZyhyKXx8MDsxPT09YT8o
by53cml0ZVdhdGNoaW5nKHIsMCksbihlLG8pLnJlbW92ZShyKSk6YT4xJiZvLndyaXRlV2F0Y2hp
bmcocixhLTEpfWUud2F0Y2hQYXRoPW8sZS51bndhdGNoUGF0aD1hfSksZSgiZW1iZXItbWV0YWwv
d2F0Y2hpbmciLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL2NoYWlucyIsImVtYmVyLW1ldGFsL3dh
dGNoX2tleSIsImVtYmVyLW1ldGFsL3dhdGNoX3BhdGgiLCJlbWJlci1tZXRhbC9wYXRoX2NhY2hl
IiwiZW1iZXItbWV0YWwvbWV0YSJdLGZ1bmN0aW9uKGUsdCxyLG4saSxvKXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gYShlLHQsbyl7Imxlbmd0aCI9PT10JiZBcnJheS5pc0FycmF5KGUpfHwoaS5pc1Bh
dGgodCk/bi53YXRjaFBhdGgoZSx0LG8pOnIud2F0Y2hLZXkoZSx0LG8pKX1mdW5jdGlvbiBzKGUs
dCl7dmFyIHI9by5wZWVrTWV0YShlKTtyZXR1cm4ociYmci5wZWVrV2F0Y2hpbmcodCkpPjB9ZnVu
Y3Rpb24gdShlLHQpe3ZhciByPW8ucGVla01ldGEoZSk7cmV0dXJuIHImJnIucGVla1dhdGNoaW5n
KHQpfHwwfWZ1bmN0aW9uIGwoZSx0LG8peyJsZW5ndGgiPT09dCYmQXJyYXkuaXNBcnJheShlKXx8
KGkuaXNQYXRoKHQpP24udW53YXRjaFBhdGgoZSx0LG8pOnIudW53YXRjaEtleShlLHQsbykpfWZ1
bmN0aW9uIGMoZSl7dmFyIHIsbixpLGEscz1vLnBlZWtNZXRhKGUpO2lmKHMmJihvLmRlbGV0ZU1l
dGEoZSkscj1zLnJlYWRhYmxlQ2hhaW5zKCkpKWZvcihmLnB1c2gocik7Zi5sZW5ndGg+MDspe2lm
KHI9Zi5wb3AoKSxuPXIuX2NoYWlucylmb3IoaSBpbiBuKXZvaWQgMCE9PW5baV0mJmYucHVzaChu
W2ldKTtyLl93YXRjaGluZyYmKGE9ci5fb2JqZWN0LGEmJnQucmVtb3ZlQ2hhaW5XYXRjaGVyKGEs
ci5fa2V5LHIpKX19ZS5pc1dhdGNoaW5nPXMsZS53YXRjaGVyQ291bnQ9dSxlLnVud2F0Y2g9bCxl
LmRlc3Ryb3k9YyxlLndhdGNoPWE7dmFyIGY9W119KSxlKCJlbWJlci1tZXRhbC93ZWFrX21hcCIs
WyJleHBvcnRzIiwiZW1iZXItbWV0YWwvZGVidWciLCJlbWJlci1tZXRhbC91dGlscyIsImVtYmVy
LW1ldGFsL21ldGEiXSxmdW5jdGlvbihlLHQscixuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaSgp
e31mdW5jdGlvbiBvKCl7dGhpcy5faWQ9ci5HVUlEX0tFWSthKyt9ZS5kZWZhdWx0PW87dmFyIGE9
MDtvLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9bi5wZWVrTWV0YShlKTtpZih0KXt2
YXIgcj10LnJlYWRhYmxlV2VhaygpO2lmKHIpe2lmKHJbdGhpcy5faWRdPT09aSlyZXR1cm47cmV0
dXJuIHJbdGhpcy5faWRdfX19LG8ucHJvdG90eXBlLnNldD1mdW5jdGlvbihlLHQpe3JldHVybiB2
b2lkIDA9PT10JiYodD1pKSxuLm1ldGEoZSkud3JpdGFibGVXZWFrKClbdGhpcy5faWRdPXQsdGhp
c30sby5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKGUpe3ZhciB0PW4ucGVla01ldGEoZSk7aWYodCl7
dmFyIHI9dC5yZWFkYWJsZVdlYWsoKTtpZihyKXJldHVybiB2b2lkIDAhPT1yW3RoaXMuX2lkXX1y
ZXR1cm4hMX0sby5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKGUpe3JldHVybiEhdGhpcy5oYXMo
ZSkmJihkZWxldGUgbi5tZXRhKGUpLndyaXRhYmxlV2VhaygpW3RoaXMuX2lkXSwhMCl9fSksZSgi
ZW1iZXItcm91dGluZy1odG1sYmFycy9oZWxwZXJzL3F1ZXJ5LXBhcmFtcyIsWyJleHBvcnRzIiwi
ZW1iZXItbWV0YWwvZGVidWciLCJlbWJlci1yb3V0aW5nL3N5c3RlbS9xdWVyeV9wYXJhbXMiXSxm
dW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSx0KXtyZXR1cm4gci5kZWZh
dWx0LmNyZWF0ZSh7dmFsdWVzOnR9KX1lLnF1ZXJ5UGFyYW1zSGVscGVyPW59KSxlKCJlbWJlci1y
b3V0aW5nLWh0bWxiYXJzL2luZGV4IixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9jb3JlIiwiZW1i
ZXItaHRtbGJhcnMvaGVscGVycyIsImVtYmVyLWh0bWxiYXJzL2tleXdvcmRzIiwiZW1iZXItcm91
dGluZy1odG1sYmFycy9oZWxwZXJzL3F1ZXJ5LXBhcmFtcyIsImVtYmVyLXJvdXRpbmctaHRtbGJh
cnMva2V5d29yZHMvYWN0aW9uIiwiZW1iZXItcm91dGluZy1odG1sYmFycy9rZXl3b3Jkcy9lbGVt
ZW50LWFjdGlvbiIsImVtYmVyLXJvdXRpbmctaHRtbGJhcnMva2V5d29yZHMvcmVuZGVyIl0sZnVu
Y3Rpb24oZSx0LHIsbixpLG8sYSxzKXsidXNlIHN0cmljdCI7ci5yZWdpc3RlckhlbHBlcigicXVl
cnktcGFyYW1zIixpLnF1ZXJ5UGFyYW1zSGVscGVyKSxuLnJlZ2lzdGVyS2V5d29yZCgiYWN0aW9u
IixvLmRlZmF1bHQpLG4ucmVnaXN0ZXJLZXl3b3JkKCJAZWxlbWVudF9hY3Rpb24iLGEuZGVmYXVs
dCksbi5yZWdpc3RlcktleXdvcmQoInJlbmRlciIscy5kZWZhdWx0KSxlLmRlZmF1bHQ9dC5kZWZh
dWx0fSksZSgiZW1iZXItcm91dGluZy1odG1sYmFycy9rZXl3b3Jkcy9hY3Rpb24iLFsiZXhwb3J0
cyIsImh0bWxiYXJzLXJ1bnRpbWUvaG9va3MiLCJlbWJlci1yb3V0aW5nLWh0bWxiYXJzL2tleXdv
cmRzL2Nsb3N1cmUtYWN0aW9uIl0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtlLmRlZmF1
bHQ9ZnVuY3Rpb24oZSxuLGksbyxhLHMsdSxsKXtyZXR1cm4gZT8odC5rZXl3b3JkKCJAZWxlbWVu
dF9hY3Rpb24iLGUsbixpLG8sYSxzLHUsbCksITApOnIuZGVmYXVsdChlLG4saSxvLGEscyx1LGwp
fX0pLGUoImVtYmVyLXJvdXRpbmctaHRtbGJhcnMva2V5d29yZHMvY2xvc3VyZS1hY3Rpb24iLFsi
ZXhwb3J0cyIsImVtYmVyLW1ldGFsL3N0cmVhbXMvc3RyZWFtIiwiZW1iZXItbWV0YWwvc3RyZWFt
cy91dGlscyIsImVtYmVyLW1ldGFsL3N5bWJvbCIsImVtYmVyLW1ldGFsL3Byb3BlcnR5X2dldCIs
ImVtYmVyLWh0bWxiYXJzL2hvb2tzL3N1YmV4cHIiLCJlbWJlci1tZXRhbC9lcnJvciIsImVtYmVy
LW1ldGFsL3J1bl9sb29wIiwiZW1iZXItbWV0YWwvaW5zdHJ1bWVudGF0aW9uIiwiZW1iZXItbWV0
YWwvaXNfbm9uZSJdLGZ1bmN0aW9uKGUsdCxyLG4saSxvLGEscyx1LGwpeyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiBjKGUsbixpLHMsdSxjLHAsaCl7dmFyIG09bmV3IHQuU3RyZWFtKGZ1bmN0aW9uKCl7
dmFyIGU9c1swXSx0PXIucmVhZEFycmF5KHMuc2xpY2UoMSxzLmxlbmd0aCkpLG49dm9pZCAwLGM9
dm9pZCAwLHA9dm9pZCAwO2lmKGwuZGVmYXVsdChlKSl7dmFyIGg9by5sYWJlbEZvclN1YmV4cHIo
cyx1LCJhY3Rpb24iKTt0aHJvdyBuZXcgYS5kZWZhdWx0KCJBY3Rpb24gcGFzc2VkIGlzIG51bGwg
b3IgdW5kZWZpbmVkIGluICIraCsiIGZyb20gIityLnJlYWQoaS5nZXRTZWxmKCkpKyIuIil9aWYo
ZVtkXSluPWUsYz1lW2RdO2Vsc2V7bj1yLnJlYWQoaS5nZXRTZWxmKCkpLGM9ci5yZWFkKGUpO3Zh
ciBtPXR5cGVvZiBjO2lmKCJzdHJpbmciPT09bSl7dmFyIHY9YztpZihjPW51bGwsdS50YXJnZXQm
JihuPXIucmVhZCh1LnRhcmdldCkpLG4uYWN0aW9ucyYmKGM9bi5hY3Rpb25zW3ZdKSwhYyl0aHJv
dyBuZXcgYS5kZWZhdWx0KCJBbiBhY3Rpb24gbmFtZWQgJyIrdisiJyB3YXMgbm90IGZvdW5kIGlu
ICIrbisiLiIpfWVsc2UgaWYoYyYmImZ1bmN0aW9uIj09dHlwZW9mIGNbZF0pbj1jLGM9Y1tkXTtl
bHNlIGlmKCJmdW5jdGlvbiIhPT1tKXRocm93IG5ldyBhLmRlZmF1bHQoIkFuIGFjdGlvbiBjb3Vs
ZCBub3QgYmUgbWFkZSBmb3IgYCIrZS5sYWJlbCsiYCBpbiAiK24rIi4gUGxlYXNlIGNvbmZpcm0g
dGhhdCB5b3UgYXJlIHVzaW5nIGVpdGhlciBhIHF1b3RlZCBhY3Rpb24gbmFtZSAoaS5lLiBgKGFj
dGlvbiAnIitlLmxhYmVsKyInKWApIG9yIGEgZnVuY3Rpb24gYXZhaWxhYmxlIGluICIrbisiLiIp
fXJldHVybiB1LnZhbHVlJiYocD1yLnJlYWQodS52YWx1ZSkpLGYodGhpcyxuLGMscCx0KX0sZnVu
Y3Rpb24oKXtyZXR1cm4gby5sYWJlbEZvclN1YmV4cHIocyx1LCJhY3Rpb24iKX0pO3JldHVybiBz
LmZvckVhY2gobS5hZGREZXBlbmRlbmN5LG0pLE9iamVjdC5rZXlzKHUpLmZvckVhY2goZnVuY3Rp
b24oZSl7cmV0dXJuIG0uYWRkRGVwZW5kZW5jeShlKX0pLG19ZnVuY3Rpb24gZihlLHQsbixvLGEp
e3ZhciBsO3JldHVybiBsPWEubGVuZ3RoPjA/ZnVuY3Rpb24oKXtmb3IodmFyIGw9YSxjPWFyZ3Vt
ZW50cy5sZW5ndGgsZj1BcnJheShjKSxkPTA7ZDxjO2QrKylmW2RdPWFyZ3VtZW50c1tkXTtmLmxl
bmd0aD4wJiYobD1hLmNvbmNhdChmKSksbyYmbC5sZW5ndGg+MCYmKGxbMF09aS5nZXQobFswXSxv
KSk7dmFyIHA9e3RhcmdldDp0LGFyZ3M6bCxsYWJlbDpyLmxhYmVsRm9yKGUpfTtyZXR1cm4gdS5m
bGFnZ2VkSW5zdHJ1bWVudCgiaW50ZXJhY3Rpb24uZW1iZXItYWN0aW9uIixwLGZ1bmN0aW9uKCl7
cmV0dXJuIHMuZGVmYXVsdC5qb2luLmFwcGx5KHMuZGVmYXVsdCxbdCxuXS5jb25jYXQobCkpfSl9
OmZ1bmN0aW9uKCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGgsbD1BcnJheShhKSxjPTA7Yzxh
O2MrKylsW2NdPWFyZ3VtZW50c1tjXTtvJiZsLmxlbmd0aD4wJiYobFswXT1pLmdldChsWzBdLG8p
KTt2YXIgZj17dGFyZ2V0OnQsYXJnczpsLGxhYmVsOnIubGFiZWxGb3IoZSl9O3JldHVybiB1LmZs
YWdnZWRJbnN0cnVtZW50KCJpbnRlcmFjdGlvbi5lbWJlci1hY3Rpb24iLGYsZnVuY3Rpb24oKXty
ZXR1cm4gcy5kZWZhdWx0LmpvaW4uYXBwbHkocy5kZWZhdWx0LFt0LG5dLmNvbmNhdChsKSl9KX0s
bFtwXT0hMCxsfWUuZGVmYXVsdD1jO3ZhciBkPW4uZGVmYXVsdCgiSU5WT0tFIik7ZS5JTlZPS0U9
ZDt2YXIgcD1uLmRlZmF1bHQoIkFDVElPTiIpO2UuQUNUSU9OPXB9KSxlKCJlbWJlci1yb3V0aW5n
LWh0bWxiYXJzL2tleXdvcmRzL2VsZW1lbnQtYWN0aW9uIixbImV4cG9ydHMiLCJlbWJlci1tZXRh
bC9kZWJ1ZyIsImVtYmVyLW1ldGFsL3V0aWxzIiwiZW1iZXItbWV0YWwvc3RyZWFtcy91dGlscyIs
ImVtYmVyLW1ldGFsL3J1bl9sb29wIiwiZW1iZXItdmlld3Mvc3RyZWFtcy91dGlscyIsImVtYmVy
LXZpZXdzL3N5c3RlbS91dGlscyIsImVtYmVyLXZpZXdzL3N5c3RlbS9hY3Rpb25fbWFuYWdlciJd
LGZ1bmN0aW9uKGUsdCxyLG4saSxvLGEscyl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHUoZSx0KXtp
ZigidW5kZWZpbmVkIj09dHlwZW9mIHQpe2lmKGYudGVzdChlLnR5cGUpKXJldHVybiBhLmlzU2lt
cGxlQ2xpY2soZSk7dD0iIn1pZih0LmluZGV4T2YoImFueSIpPj0wKXJldHVybiEwO2Zvcih2YXIg
cj0wLG49Yy5sZW5ndGg7cjxuO3IrKylpZihlW2Nbcl0rIktleSJdJiZ0LmluZGV4T2YoY1tyXSk9
PT0tMSlyZXR1cm4hMTtyZXR1cm4hMH1lLmRlZmF1bHQ9e3NldHVwU3RhdGU6ZnVuY3Rpb24oZSx0
LHIsbixpKXtmb3IodmFyIGE9dC5ob29rcy5nZXQscz10Lmhvb2tzLmdldFZhbHVlLHU9cyhuWzBd
KSxsPVtdLGM9MSxmPW4ubGVuZ3RoO2M8ZjtjKyspbC5wdXNoKG8ucmVhZFVud3JhcHBlZE1vZGVs
KG5bY10pKTt2YXIgZDtyZXR1cm4gZD1pLnRhcmdldD9zKCJzdHJpbmciPT10eXBlb2YgaS50YXJn
ZXQ/YSh0LHIsaS50YXJnZXQpOmkudGFyZ2V0KTpzKHIuZ2V0TG9jYWwoImNvbnRyb2xsZXIiKSl8
fHMoci5nZXRTZWxmKCkpLHthY3Rpb25OYW1lOnUsYWN0aW9uQXJnczpsLHRhcmdldDpkfX0saXNT
dGFibGU6ZnVuY3Rpb24oZSx0LHIsbixpKXtyZXR1cm4hMH0scmVuZGVyOmZ1bmN0aW9uKGUsdCxu
LGksbyxhLHMsdSl7dmFyIGM9dC5kb20uZ2V0QXR0cmlidXRlKGUuZWxlbWVudCwiZGF0YS1lbWJl
ci1hY3Rpb24iKXx8ci51dWlkKCk7bC5yZWdpc3RlckFjdGlvbih7YWN0aW9uSWQ6Yyxub2RlOmUs
ZXZlbnROYW1lOm8ub258fCJjbGljayIsYnViYmxlczpvLmJ1YmJsZXMscHJldmVudERlZmF1bHQ6
by5wcmV2ZW50RGVmYXVsdCx3aXRoS2V5Q29kZTpvLndpdGhLZXlDb2RlLGFsbG93ZWRLZXlzOm8u
YWxsb3dlZEtleXN9KSxlLmNsZWFudXA9ZnVuY3Rpb24oKXtsLnVucmVnaXN0ZXJBY3Rpb24oYyl9
LHQuZG9tLnNldEF0dHJpYnV0ZShlLmVsZW1lbnQsImRhdGEtZW1iZXItYWN0aW9uIixjKX19O3Zh
ciBsPXt9O2UuQWN0aW9uSGVscGVyPWwsbC5yZWdpc3RlcmVkQWN0aW9ucz1zLmRlZmF1bHQucmVn
aXN0ZXJlZEFjdGlvbnMsbC5yZWdpc3RlckFjdGlvbj1mdW5jdGlvbihlKXt2YXIgdD1lLmFjdGlv
bklkLHI9ZS5ub2RlLG89ZS5ldmVudE5hbWUsYT1lLnByZXZlbnREZWZhdWx0LGw9ZS5idWJibGVz
LGM9ZS5hbGxvd2VkS2V5cyxmPXMuZGVmYXVsdC5yZWdpc3RlcmVkQWN0aW9uc1t0XTtyZXR1cm4g
Znx8KGY9cy5kZWZhdWx0LnJlZ2lzdGVyZWRBY3Rpb25zW3RdPVtdKSxmLnB1c2goe2V2ZW50TmFt
ZTpvLGhhbmRsZXI6ZnVuY3Rpb24oZSl7aWYoIXUoZSxuLnJlYWQoYykpKXJldHVybiEwO24ucmVh
ZChhKSE9PSExJiZlLnByZXZlbnREZWZhdWx0KCksbi5yZWFkKGwpPT09ITEmJmUuc3RvcFByb3Bh
Z2F0aW9uKCk7dmFyIHQ9ci5nZXRTdGF0ZSgpLG89dC50YXJnZXQscz10LmFjdGlvbk5hbWUsZj10
LmFjdGlvbkFyZ3M7aS5kZWZhdWx0KGZ1bmN0aW9uKCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9m
IHM/dm9pZCBzLmFwcGx5KG8sZik6dm9pZChvLnNlbmQ/by5zZW5kLmFwcGx5KG8sW3NdLmNvbmNh
dChmKSk6b1tzXS5hcHBseShvLGYpKX0pfX0pLHR9LGwudW5yZWdpc3RlckFjdGlvbj1mdW5jdGlv
bihlKXtkZWxldGUgcy5kZWZhdWx0LnJlZ2lzdGVyZWRBY3Rpb25zW2VdfTt2YXIgYz1bImFsdCIs
InNoaWZ0IiwibWV0YSIsImN0cmwiXSxmPS9eY2xpY2t8bW91c2V8dG91Y2gvfSksZSgiZW1iZXIt
cm91dGluZy1odG1sYmFycy9rZXl3b3Jkcy9yZW5kZXIiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFs
L2RlYnVnIiwiZW1iZXItbWV0YWwvcHJvcGVydHlfZ2V0IiwiZW1iZXItbWV0YWwvZW1wdHlfb2Jq
ZWN0IiwiZW1iZXItbWV0YWwvZXJyb3IiLCJlbWJlci1tZXRhbC9zdHJlYW1zL3V0aWxzIiwiZW1i
ZXItcnVudGltZS9zeXN0ZW0vc3RyaW5nIiwiZW1iZXItcm91dGluZy9zeXN0ZW0vZ2VuZXJhdGVf
Y29udHJvbGxlciIsImVtYmVyLWh0bWxiYXJzL25vZGUtbWFuYWdlcnMvdmlldy1ub2RlLW1hbmFn
ZXIiXSxmdW5jdGlvbihlLHQscixuLGksbyxhLHMsdSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGwo
ZSx0KXt2YXIgcj10LnZpZXcub3duZXJWaWV3O2lmKHImJnIub3V0bGV0U3RhdGUpe3ZhciBpPXIu
b3V0bGV0U3RhdGU7aWYoaS5tYWluKXt2YXIgbz1pLm1haW4ub3V0bGV0cy5fX2VtYmVyX29ycGhh
bnNfXztpZihvKXt2YXIgYT1vLm91dGxldHNbZV07aWYoYSl7dmFyIHM9bmV3IG4uZGVmYXVsdDty
ZXR1cm4gc1thLnJlbmRlci5vdXRsZXRdPWEsYS53YXNVc2VkPSEwLHN9fX19fWZ1bmN0aW9uIGMo
ZSx0KXtpZighZSYmIXQpcmV0dXJuITA7aWYoIWV8fCF0KXJldHVybiExO2Zvcih2YXIgciBpbiBl
KWlmKCFmKGVbcl0sdFtyXSkpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gZihlLHQpe2lmKCFl
JiYhdClyZXR1cm4hMDtpZighZXx8IXQpcmV0dXJuITE7ZT1lLnJlbmRlcix0PXQucmVuZGVyO2Zv
cih2YXIgciBpbiBlKWlmKGUuaGFzT3duUHJvcGVydHkocikmJmVbcl0hPT10W3JdJiYibmFtZSIh
PT1yKXJldHVybiExO3JldHVybiEwfWUuZGVmYXVsdD17d2lsbFJlbmRlcjpmdW5jdGlvbihlLHQp
e3Qudmlldy5vd25lclZpZXcuX291dGxldHMmJnQudmlldy5vd25lclZpZXcuX291dGxldHMucHVz
aChlKTsKK30sc2V0dXBTdGF0ZTpmdW5jdGlvbihlLHQscixuLGkpe3ZhciBvPW5bMF07cmV0dXJu
e3BhcmVudFZpZXc6dC52aWV3LG1hbmFnZXI6ZS5tYW5hZ2VyLGNvbnRyb2xsZXI6ZS5jb250cm9s
bGVyLGNoaWxkT3V0bGV0U3RhdGU6bChvLHQpfX0sY2hpbGRFbnY6ZnVuY3Rpb24oZSx0KXtyZXR1
cm4gdC5jaGlsZFdpdGhPdXRsZXRTdGF0ZShlLmNoaWxkT3V0bGV0U3RhdGUpfSxpc1N0YWJsZTpm
dW5jdGlvbihlLHQpe3JldHVybiBjKGUuY2hpbGRPdXRsZXRTdGF0ZSx0LmNoaWxkT3V0bGV0U3Rh
dGUpfSxpc0VtcHR5OmZ1bmN0aW9uKGUpe3JldHVybiExfSxyZW5kZXI6ZnVuY3Rpb24oZSx0LG4s
bCxjLGYsZCxwKXt2YXIgaD1lLmdldFN0YXRlKCksbT1sWzBdLHY9bFsxXSxiPXQub3duZXIsZz1i
Lmxvb2t1cCgicm91dGVyOm1haW4iKTtpZigxPT09bC5sZW5ndGgpO2Vsc2UgaWYoMiE9PWwubGVu
Z3RoKXRocm93IG5ldyBpLmRlZmF1bHQoIllvdSBtdXN0IHBhc3MgYSB0ZW1wbGF0ZU5hbWUgdG8g
cmVuZGVyIik7dmFyIHk9InRlbXBsYXRlOiIrbSxfPWIubG9va3VwKCJ2aWV3OiIrbSk7X3x8KF89
Yi5sb29rdXAoInZpZXc6ZGVmYXVsdCIpKTt2YXIgdz1fJiYhIXIuZ2V0KF8sInRlbXBsYXRlIik7
Znx8d3x8KGY9Yi5sb29rdXAoeSkpLF8mJihfLm93bmVyVmlldz10LnZpZXcub3duZXJWaWV3KTt2
YXIgeCxrO2MuY29udHJvbGxlcj8oeD1jLmNvbnRyb2xsZXIsaz0iY29udHJvbGxlcjoiK3gsZGVs
ZXRlIGMuY29udHJvbGxlcik6KHg9bSxrPSJjb250cm9sbGVyOiIreCk7dmFyIEMsRT1nO2lmKGwu
bGVuZ3RoPjEpe3ZhciBPPWIuX2xvb2t1cEZhY3Rvcnkoayl8fHMuZ2VuZXJhdGVDb250cm9sbGVy
RmFjdG9yeShiLHgpO0M9Ty5jcmVhdGUoe21vZGVsOm8ucmVhZCh2KSx0YXJnZXQ6RX0pLGUuYWRk
RGVzdHJ1Y3Rpb24oQyl9ZWxzZSBDPWIubG9va3VwKGspfHxzLmRlZmF1bHQoYix4KSxDLnNldFBy
b3BlcnRpZXMoe3RhcmdldDpFfSk7XyYmXy5zZXQoImNvbnRyb2xsZXIiLEMpLGguY29udHJvbGxl
cj1DLGMudmlld05hbWU9YS5jYW1lbGl6ZShtKSxmJiZmLnJhdyYmKGY9Zi5yYXcpO3ZhciBUPXts
YXlvdXQ6bnVsbCxzZWxmOkN9O18mJihULmNvbXBvbmVudD1fKTt2YXIgTj11LmRlZmF1bHQuY3Jl
YXRlKGUsdCxjLFQsaC5wYXJlbnRWaWV3LG51bGwsbnVsbCxmKTtoLm1hbmFnZXI9TixnJiYxPT09
bC5sZW5ndGgmJmcuX2Nvbm5lY3RBY3RpdmVDb21wb25lbnROb2RlKG0sTiksTi5yZW5kZXIodCxj
LHApfSxyZXJlbmRlcjpmdW5jdGlvbihlLHQscixuLGksYSxzLHUpe2lmKG4ubGVuZ3RoPjEpe3Zh
ciBsPW8ucmVhZChuWzFdKTtlLmdldFN0YXRlKCkuY29udHJvbGxlci5zZXQoIm1vZGVsIixsKX19
fX0pLGUoImVtYmVyLXJvdXRpbmctdmlld3MvY29tcG9uZW50cy9saW5rLXRvIixbImV4cG9ydHMi
LCJlbWJlci1tZXRhbC9mZWF0dXJlcyIsImVtYmVyLW1ldGFsL2xvZ2dlciIsImVtYmVyLW1ldGFs
L2RlYnVnIiwiZW1iZXItbWV0YWwvcHJvcGVydHlfZ2V0IiwiZW1iZXItbWV0YWwvY29tcHV0ZWQi
LCJlbWJlci1tZXRhbC9jb21wdXRlZF9tYWNyb3MiLCJlbWJlci12aWV3cy9zeXN0ZW0vdXRpbHMi
LCJlbWJlci12aWV3cy9jb21wb25lbnRzL2NvbXBvbmVudCIsImVtYmVyLXJ1bnRpbWUvaW5qZWN0
IiwiZW1iZXItcnVudGltZS9zeXN0ZW0vc2VydmljZSIsImVtYmVyLXJ1bnRpbWUvbWl4aW5zL2Nv
bnRyb2xsZXIiLCJlbWJlci1odG1sYmFycy9ub2RlLW1hbmFnZXJzL2NvbXBvbmVudC1ub2RlLW1h
bmFnZXIiLCJlbWJlci1odG1sYmFycy90ZW1wbGF0ZXMvbGluay10byIsInJlcXVpcmUiXSxmdW5j
dGlvbihlLHQscixuLGksbyxhLHMsdSxsLGMsZixkLHAsaCl7InVzZSBzdHJpY3QiO3ZhciBtPXAu
ZGVmYXVsdCx2PXUuZGVmYXVsdC5leHRlbmQoe2xheW91dDptLHRhZ05hbWU6ImEiLGN1cnJlbnRX
aGVuOmEuZGVwcmVjYXRpbmdBbGlhcygiY3VycmVudC13aGVuIix7aWQ6ImVtYmVyLXJvdXRpbmct
dmlldy5kZXByZWNhdGVkLWN1cnJlbnQtd2hlbiIsdW50aWw6IjMuMC4wIn0pLCJjdXJyZW50LXdo
ZW4iOm51bGwsdGl0bGU6bnVsbCxyZWw6bnVsbCx0YWJpbmRleDpudWxsLHRhcmdldDpudWxsLGFj
dGl2ZUNsYXNzOiJhY3RpdmUiLGxvYWRpbmdDbGFzczoibG9hZGluZyIsZGlzYWJsZWRDbGFzczoi
ZGlzYWJsZWQiLF9pc0Rpc2FibGVkOiExLHJlcGxhY2U6ITEsYXR0cmlidXRlQmluZGluZ3M6WyJo
cmVmIiwidGl0bGUiLCJyZWwiLCJ0YWJpbmRleCIsInRhcmdldCJdLGNsYXNzTmFtZUJpbmRpbmdz
OlsiYWN0aXZlIiwibG9hZGluZyIsImRpc2FibGVkIiwidHJhbnNpdGlvbmluZ0luIiwidHJhbnNp
dGlvbmluZ091dCJdLGV2ZW50TmFtZToiY2xpY2siLGluaXQ6ZnVuY3Rpb24oKXt0aGlzLl9zdXBl
ci5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dmFyIGU9aS5nZXQodGhpcywiZXZlbnROYW1lIik7dGhp
cy5vbihlLHRoaXMsdGhpcy5faW52b2tlKX0sX3JvdXRpbmc6bC5kZWZhdWx0LnNlcnZpY2UoIi1y
b3V0aW5nIiksZGlzYWJsZWQ6by5jb21wdXRlZCh7Z2V0OmZ1bmN0aW9uKGUsdCl7cmV0dXJuITF9
LHNldDpmdW5jdGlvbihlLHQpe3JldHVybiB2b2lkIDAhPT10JiZ0aGlzLnNldCgiX2lzRGlzYWJs
ZWQiLHQpLCEhdCYmaS5nZXQodGhpcywiZGlzYWJsZWRDbGFzcyIpfX0pLF9jb21wdXRlQWN0aXZl
OmZ1bmN0aW9uKGUpe2lmKGkuZ2V0KHRoaXMsImxvYWRpbmciKSlyZXR1cm4hMTt2YXIgdD1pLmdl
dCh0aGlzLCJfcm91dGluZyIpLHI9aS5nZXQodGhpcywibW9kZWxzIiksbj1pLmdldCh0aGlzLCJy
ZXNvbHZlZFF1ZXJ5UGFyYW1zIiksbz1pLmdldCh0aGlzLCJjdXJyZW50LXdoZW4iKSxhPSEhbztv
PW98fGkuZ2V0KHRoaXMsInF1YWxpZmllZFJvdXRlTmFtZSIpLG89by5zcGxpdCgiICIpO2Zvcih2
YXIgcz0wLHU9by5sZW5ndGg7czx1O3MrKylpZih0LmlzQWN0aXZlRm9yUm91dGUocixuLG9bc10s
ZSxhKSlyZXR1cm4gaS5nZXQodGhpcywiYWN0aXZlQ2xhc3MiKTtyZXR1cm4hMX0sYWN0aXZlOm8u
Y29tcHV0ZWQoImF0dHJzLnBhcmFtcyIsIl9yb3V0aW5nLmN1cnJlbnRTdGF0ZSIsZnVuY3Rpb24o
KXt2YXIgZT1pLmdldCh0aGlzLCJfcm91dGluZy5jdXJyZW50U3RhdGUiKTtyZXR1cm4hIWUmJnRo
aXMuX2NvbXB1dGVBY3RpdmUoZSl9KSx3aWxsQmVBY3RpdmU6by5jb21wdXRlZCgiX3JvdXRpbmcu
dGFyZ2V0U3RhdGUiLGZ1bmN0aW9uKCl7dmFyIGU9aS5nZXQodGhpcywiX3JvdXRpbmciKSx0PWku
Z2V0KGUsInRhcmdldFN0YXRlIik7aWYoaS5nZXQoZSwiY3VycmVudFN0YXRlIikhPT10KXJldHVy
biEhdGhpcy5fY29tcHV0ZUFjdGl2ZSh0KX0pLHRyYW5zaXRpb25pbmdJbjpvLmNvbXB1dGVkKCJh
Y3RpdmUiLCJ3aWxsQmVBY3RpdmUiLGZ1bmN0aW9uKCl7dmFyIGU9aS5nZXQodGhpcywid2lsbEJl
QWN0aXZlIik7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBlJiYoIWkuZ2V0KHRoaXMsImFjdGl2
ZSIpJiZlJiYiZW1iZXItdHJhbnNpdGlvbmluZy1pbiIpfSksdHJhbnNpdGlvbmluZ091dDpvLmNv
bXB1dGVkKCJhY3RpdmUiLCJ3aWxsQmVBY3RpdmUiLGZ1bmN0aW9uKCl7dmFyIGU9aS5nZXQodGhp
cywid2lsbEJlQWN0aXZlIik7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBlJiYoaS5nZXQodGhp
cywiYWN0aXZlIikmJiFlJiYiZW1iZXItdHJhbnNpdGlvbmluZy1vdXQiKX0pLF9pbnZva2U6ZnVu
Y3Rpb24oZSl7aWYoIXMuaXNTaW1wbGVDbGljayhlKSlyZXR1cm4hMDt2YXIgdD1pLmdldCh0aGlz
LCJwcmV2ZW50RGVmYXVsdCIpLG49aS5nZXQodGhpcywidGFyZ2V0Iik7aWYodCE9PSExJiYobiYm
Il9zZWxmIiE9PW58fGUucHJldmVudERlZmF1bHQoKSksaS5nZXQodGhpcywiYnViYmxlcyIpPT09
ITEmJmUuc3RvcFByb3BhZ2F0aW9uKCksaS5nZXQodGhpcywiX2lzRGlzYWJsZWQiKSlyZXR1cm4h
MTtpZihpLmdldCh0aGlzLCJsb2FkaW5nIikpcmV0dXJuIHIuZGVmYXVsdC53YXJuKCJUaGlzIGxp
bmstdG8gaXMgaW4gYW4gaW5hY3RpdmUgbG9hZGluZyBzdGF0ZSBiZWNhdXNlIGF0IGxlYXN0IG9u
ZSBvZiBpdHMgcGFyYW1ldGVycyBwcmVzZW50bHkgaGFzIGEgbnVsbC91bmRlZmluZWQgdmFsdWUs
IG9yIHRoZSBwcm92aWRlZCByb3V0ZSBuYW1lIGlzIGludmFsaWQuIiksITE7aWYobiYmIl9zZWxm
IiE9PW4pcmV0dXJuITE7dmFyIG89aS5nZXQodGhpcywiX3JvdXRpbmciKSxhPWkuZ2V0KHRoaXMs
InF1YWxpZmllZFJvdXRlTmFtZSIpLHU9aS5nZXQodGhpcywibW9kZWxzIiksbD1pLmdldCh0aGlz
LCJxdWVyeVBhcmFtcy52YWx1ZXMiKSxjPWkuZ2V0KHRoaXMsInJlcGxhY2UiKTtvLnRyYW5zaXRp
b25UbyhhLHUsbCxjKX0scXVlcnlQYXJhbXM6bnVsbCxxdWFsaWZpZWRSb3V0ZU5hbWU6by5jb21w
dXRlZCgidGFyZ2V0Um91dGVOYW1lIiwiX3JvdXRpbmcuY3VycmVudFN0YXRlIixmdW5jdGlvbigp
e3ZhciBlPWkuZ2V0KHRoaXMsInBhcmFtcyIpLnNsaWNlKCksdD1lW2UubGVuZ3RoLTFdO3QmJnQu
aXNRdWVyeVBhcmFtcyYmZS5wb3AoKTt2YXIgcj10aGlzW2QuSEFTX0JMT0NLXT8wPT09ZS5sZW5n
dGg6MT09PWUubGVuZ3RoO3JldHVybiByP2kuZ2V0KHRoaXMsIl9yb3V0aW5nLmN1cnJlbnRSb3V0
ZU5hbWUiKTppLmdldCh0aGlzLCJ0YXJnZXRSb3V0ZU5hbWUiKX0pLHJlc29sdmVkUXVlcnlQYXJh
bXM6by5jb21wdXRlZCgicXVlcnlQYXJhbXMiLGZ1bmN0aW9uKCl7dmFyIGU9e30sdD1pLmdldCh0
aGlzLCJxdWVyeVBhcmFtcyIpO2lmKCF0KXJldHVybiBlO3ZhciByPXQudmFsdWVzO2Zvcih2YXIg
biBpbiByKXIuaGFzT3duUHJvcGVydHkobikmJihlW25dPXJbbl0pO3JldHVybiBlfSksaHJlZjpv
LmNvbXB1dGVkKCJtb2RlbHMiLCJxdWFsaWZpZWRSb3V0ZU5hbWUiLGZ1bmN0aW9uKCl7aWYoImEi
PT09aS5nZXQodGhpcywidGFnTmFtZSIpKXt2YXIgZT1pLmdldCh0aGlzLCJxdWFsaWZpZWRSb3V0
ZU5hbWUiKSx0PWkuZ2V0KHRoaXMsIm1vZGVscyIpO2lmKGkuZ2V0KHRoaXMsImxvYWRpbmciKSly
ZXR1cm4gaS5nZXQodGhpcywibG9hZGluZ0hyZWYiKTt2YXIgcj1pLmdldCh0aGlzLCJfcm91dGlu
ZyIpLG49aS5nZXQodGhpcywicXVlcnlQYXJhbXMudmFsdWVzIik7cmV0dXJuIHIuZ2VuZXJhdGVV
UkwoZSx0LG4pfX0pLGxvYWRpbmc6by5jb21wdXRlZCgiX21vZGVsc0FyZUxvYWRlZCIsInF1YWxp
ZmllZFJvdXRlTmFtZSIsZnVuY3Rpb24oKXt2YXIgZT1pLmdldCh0aGlzLCJxdWFsaWZpZWRSb3V0
ZU5hbWUiKSx0PWkuZ2V0KHRoaXMsIl9tb2RlbHNBcmVMb2FkZWQiKTtpZighdHx8bnVsbD09ZSly
ZXR1cm4gaS5nZXQodGhpcywibG9hZGluZ0NsYXNzIil9KSxfbW9kZWxzQXJlTG9hZGVkOm8uY29t
cHV0ZWQoIm1vZGVscyIsZnVuY3Rpb24oKXtmb3IodmFyIGU9aS5nZXQodGhpcywibW9kZWxzIiks
dD0wLHI9ZS5sZW5ndGg7dDxyO3QrKylpZihudWxsPT1lW3RdKXJldHVybiExO3JldHVybiEwfSks
X2dldE1vZGVsczpmdW5jdGlvbihlKXtmb3IodmFyIHQ9ZS5sZW5ndGgtMSxyPW5ldyBBcnJheSh0
KSxuPTA7bjx0O24rKyl7Zm9yKHZhciBpPWVbbisxXTtmLmRlZmF1bHQuZGV0ZWN0KGkpOylpPWku
Z2V0KCJtb2RlbCIpO3Jbbl09aX1yZXR1cm4gcn0sbG9hZGluZ0hyZWY6IiMiLHdpbGxSZW5kZXI6
ZnVuY3Rpb24oKXt2YXIgZT12b2lkIDAsdD1pLmdldCh0aGlzLCJwYXJhbXMiKS5zbGljZSgpLHI9
aS5nZXQodGhpcywiZGlzYWJsZWRXaGVuIik7dm9pZCAwIT09ciYmdGhpcy5zZXQoImRpc2FibGVk
IixyKSx0aGlzW2QuSEFTX0JMT0NLXXx8dGhpcy5zZXQoImxpbmtUaXRsZSIsdC5zaGlmdCgpKSx0
aGlzLnNldCgidGFyZ2V0Um91dGVOYW1lIix0WzBdKTt2YXIgbj10W3QubGVuZ3RoLTFdO2U9biYm
bi5pc1F1ZXJ5UGFyYW1zP3QucG9wKCk6e30sdGhpcy5zZXQoInF1ZXJ5UGFyYW1zIixlKSx0Lmxl
bmd0aD4xP3RoaXMuc2V0KCJtb2RlbHMiLHRoaXMuX2dldE1vZGVscyh0KSk6dGhpcy5zZXQoIm1v
ZGVscyIsW10pfX0pO3YudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iTGlua0NvbXBvbmVudCJ9
LHYucmVvcGVuQ2xhc3Moe3Bvc2l0aW9uYWxQYXJhbXM6InBhcmFtcyJ9KSxlLmRlZmF1bHQ9dn0p
LGUoImVtYmVyLXJvdXRpbmctdmlld3MvaW5kZXgiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL2Nv
cmUiLCJlbWJlci1yb3V0aW5nLXZpZXdzL2NvbXBvbmVudHMvbGluay10byIsImVtYmVyLXJvdXRp
bmctdmlld3Mvdmlld3Mvb3V0bGV0Il0sZnVuY3Rpb24oZSx0LHIsbil7InVzZSBzdHJpY3QiO3Qu
ZGVmYXVsdC5MaW5rQ29tcG9uZW50PXIuZGVmYXVsdCx0LmRlZmF1bHQuT3V0bGV0Vmlldz1uLk91
dGxldFZpZXcsZS5kZWZhdWx0PXQuZGVmYXVsdH0pLGUoImVtYmVyLXJvdXRpbmctdmlld3Mvdmll
d3Mvb3V0bGV0IixbImV4cG9ydHMiLCJlbWJlci12aWV3cy92aWV3cy92aWV3IiwiZW1iZXItaHRt
bGJhcnMvdGVtcGxhdGVzL3RvcC1sZXZlbC12aWV3Il0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3Ry
aWN0Ijt2YXIgbj10LmRlZmF1bHQuZXh0ZW5kKHtkZWZhdWx0VGVtcGxhdGU6ci5kZWZhdWx0LGlu
aXQ6ZnVuY3Rpb24oKXt0aGlzLl9zdXBlcigpLHRoaXMuX291dGxldHM9W119LHNldE91dGxldFN0
YXRlOmZ1bmN0aW9uKGUpe3RoaXMub3V0bGV0U3RhdGU9e21haW46ZX0sdGhpcy5lbnYmJih0aGlz
LmVudi5vdXRsZXRTdGF0ZT10aGlzLm91dGxldFN0YXRlKSx0aGlzLmxhc3RSZXN1bHQmJih0aGlz
LmRpcnR5T3V0bGV0cygpLHRoaXMuX291dGxldHM9W10sdGhpcy5zY2hlZHVsZVJldmFsaWRhdGUo
bnVsbCxudWxsKSl9LGRpcnR5T3V0bGV0czpmdW5jdGlvbigpe2Zvcih2YXIgZT0wO2U8dGhpcy5f
b3V0bGV0cy5sZW5ndGg7ZSsrKXRoaXMuX291dGxldHNbZV0uaXNEaXJ0eT0hMH19KTtlLkNvcmVP
dXRsZXRWaWV3PW47dmFyIGk9bi5leHRlbmQoe3RhZ05hbWU6IiJ9KTtlLk91dGxldFZpZXc9aX0p
LGUoImVtYmVyLXJvdXRpbmcvZXh0L2NvbnRyb2xsZXIiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFs
L3Byb3BlcnR5X2dldCIsImVtYmVyLXJ1bnRpbWUvbWl4aW5zL2NvbnRyb2xsZXIiXSxmdW5jdGlv
bihlLHQscil7InVzZSBzdHJpY3QiO3IuZGVmYXVsdC5yZW9wZW4oe2NvbmNhdGVuYXRlZFByb3Bl
cnRpZXM6WyJxdWVyeVBhcmFtcyJdLHF1ZXJ5UGFyYW1zOm51bGwsX3FwRGVsZWdhdGU6bnVsbCxf
cXBDaGFuZ2VkOmZ1bmN0aW9uKGUscil7dmFyIG49ci5zdWJzdHIoMCxyLmxlbmd0aC0zKSxpPWUu
X3FwRGVsZWdhdGUsbz10LmdldChlLG4pO2kobixvKX0sdHJhbnNpdGlvblRvUm91dGU6ZnVuY3Rp
b24oKXt2YXIgZT10LmdldCh0aGlzLCJ0YXJnZXQiKSxyPWUudHJhbnNpdGlvblRvUm91dGV8fGUu
dHJhbnNpdGlvblRvO3JldHVybiByLmFwcGx5KGUsYXJndW1lbnRzKX0scmVwbGFjZVJvdXRlOmZ1
bmN0aW9uKCl7dmFyIGU9dC5nZXQodGhpcywidGFyZ2V0Iikscj1lLnJlcGxhY2VSb3V0ZXx8ZS5y
ZXBsYWNlV2l0aDtyZXR1cm4gci5hcHBseShlLGFyZ3VtZW50cyl9fSksZS5kZWZhdWx0PXIuZGVm
YXVsdH0pLGUoImVtYmVyLXJvdXRpbmcvZXh0L3J1bl9sb29wIixbImV4cG9ydHMiLCJlbWJlci1t
ZXRhbC9ydW5fbG9vcCJdLGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO3QuZGVmYXVsdC5fYWRk
UXVldWUoInJvdXRlclRyYW5zaXRpb25zIiwiYWN0aW9ucyIpfSksZSgiZW1iZXItcm91dGluZy9p
bmRleCIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvY29yZSIsImVtYmVyLXJvdXRpbmcvZXh0L3J1
bl9sb29wIiwiZW1iZXItcm91dGluZy9leHQvY29udHJvbGxlciIsImVtYmVyLXJvdXRpbmcvbG9j
YXRpb24vYXBpIiwiZW1iZXItcm91dGluZy9sb2NhdGlvbi9ub25lX2xvY2F0aW9uIiwiZW1iZXIt
cm91dGluZy9sb2NhdGlvbi9oYXNoX2xvY2F0aW9uIiwiZW1iZXItcm91dGluZy9sb2NhdGlvbi9o
aXN0b3J5X2xvY2F0aW9uIiwiZW1iZXItcm91dGluZy9sb2NhdGlvbi9hdXRvX2xvY2F0aW9uIiwi
ZW1iZXItcm91dGluZy9zeXN0ZW0vZ2VuZXJhdGVfY29udHJvbGxlciIsImVtYmVyLXJvdXRpbmcv
c3lzdGVtL2NvbnRyb2xsZXJfZm9yIiwiZW1iZXItcm91dGluZy9zeXN0ZW0vZHNsIiwiZW1iZXIt
cm91dGluZy9zeXN0ZW0vcm91dGVyIiwiZW1iZXItcm91dGluZy9zeXN0ZW0vcm91dGUiXSxmdW5j
dGlvbihlLHQscixuLGksbyxhLHMsdSxsLGMsZixkLHApeyJ1c2Ugc3RyaWN0Ijt0LmRlZmF1bHQu
TG9jYXRpb249aS5kZWZhdWx0LHQuZGVmYXVsdC5BdXRvTG9jYXRpb249dS5kZWZhdWx0LHQuZGVm
YXVsdC5IYXNoTG9jYXRpb249YS5kZWZhdWx0LHQuZGVmYXVsdC5IaXN0b3J5TG9jYXRpb249cy5k
ZWZhdWx0LHQuZGVmYXVsdC5Ob25lTG9jYXRpb249by5kZWZhdWx0LHQuZGVmYXVsdC5jb250cm9s
bGVyRm9yPWMuZGVmYXVsdCx0LmRlZmF1bHQuZ2VuZXJhdGVDb250cm9sbGVyRmFjdG9yeT1sLmdl
bmVyYXRlQ29udHJvbGxlckZhY3RvcnksdC5kZWZhdWx0LmdlbmVyYXRlQ29udHJvbGxlcj1sLmRl
ZmF1bHQsdC5kZWZhdWx0LlJvdXRlckRTTD1mLmRlZmF1bHQsdC5kZWZhdWx0LlJvdXRlcj1kLmRl
ZmF1bHQsdC5kZWZhdWx0LlJvdXRlPXAuZGVmYXVsdCxlLmRlZmF1bHQ9dC5kZWZhdWx0fSksZSgi
ZW1iZXItcm91dGluZy9sb2NhdGlvbi9hcGkiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL2RlYnVn
IiwiZW1iZXItbWV0YWwvZW52aXJvbm1lbnQiLCJlbWJlci1yb3V0aW5nL2xvY2F0aW9uL3V0aWwi
XSxmdW5jdGlvbihlLHQscixuKXsidXNlIHN0cmljdCI7ZS5kZWZhdWx0PXtjcmVhdGU6ZnVuY3Rp
b24oZSl7dmFyIHQ9ZSYmZS5pbXBsZW1lbnRhdGlvbixyPXRoaXMuaW1wbGVtZW50YXRpb25zW3Rd
O3JldHVybiByLmNyZWF0ZS5hcHBseShyLGFyZ3VtZW50cyl9LGltcGxlbWVudGF0aW9uczp7fSxf
bG9jYXRpb246ci5kZWZhdWx0LmxvY2F0aW9uLF9nZXRIYXNoOmZ1bmN0aW9uKCl7cmV0dXJuIG4u
Z2V0SGFzaCh0aGlzLmxvY2F0aW9uKX19fSksZSgiZW1iZXItcm91dGluZy9sb2NhdGlvbi9hdXRv
X2xvY2F0aW9uIixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9kZWJ1ZyIsImVtYmVyLW1ldGFsL3By
b3BlcnR5X2dldCIsImVtYmVyLW1ldGFsL3Byb3BlcnR5X3NldCIsImVtYmVyLW1ldGFsL3V0aWxz
IiwiY29udGFpbmVyL293bmVyIiwiZW1iZXItcnVudGltZS9zeXN0ZW0vb2JqZWN0IiwiZW1iZXIt
bWV0YWwvZW52aXJvbm1lbnQiLCJlbWJlci1yb3V0aW5nL2xvY2F0aW9uL3V0aWwiXSxmdW5jdGlv
bihlLHQscixuLGksbyxhLHMsdSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGwoZSl7cmV0dXJuIGZ1
bmN0aW9uKCl7Zm9yKHZhciB0PXIuZ2V0KHRoaXMsImNvbmNyZXRlSW1wbGVtZW50YXRpb24iKSxu
PWFyZ3VtZW50cy5sZW5ndGgsbz1BcnJheShuKSxhPTA7YTxuO2ErKylvW2FdPWFyZ3VtZW50c1th
XTtyZXR1cm4gaS50cnlJbnZva2UodCxlLG8pfX1mdW5jdGlvbiBjKGUpe3ZhciB0PWUubG9jYXRp
b24scj1lLnVzZXJBZ2VudCxuPWUuaGlzdG9yeSxpPWUuZG9jdW1lbnRNb2RlLG89ZS5nbG9iYWws
YT1lLnJvb3RVUkwscz0ibm9uZSIsbD0hMSxjPXUuZ2V0RnVsbFBhdGgodCk7aWYodS5zdXBwb3J0
c0hpc3RvcnkocixuKSl7dmFyIHA9ZihhLHQpO2lmKGM9PT1wKXJldHVybiJoaXN0b3J5IjsiLyMi
PT09Yy5zdWJzdHIoMCwyKT8obi5yZXBsYWNlU3RhdGUoe3BhdGg6cH0sbnVsbCxwKSxzPSJoaXN0
b3J5Iik6KGw9ITAsdS5yZXBsYWNlUGF0aCh0LHApKX1lbHNlIGlmKHUuc3VwcG9ydHNIYXNoQ2hh
bmdlKGksbykpe3ZhciBoPWQoYSx0KTtjPT09aHx8Ii8iPT09YyYmIi8jLyI9PT1oP3M9Imhhc2gi
OihsPSEwLHUucmVwbGFjZVBhdGgodCxoKSl9cmV0dXJuIWwmJnN9ZnVuY3Rpb24gZihlLHQpe3Zh
ciByLG4saT11LmdldFBhdGgodCksbz11LmdldEhhc2godCksYT11LmdldFF1ZXJ5KHQpO2kuaW5k
ZXhPZihlKTtyZXR1cm4iIy8iPT09by5zdWJzdHIoMCwyKT8obj1vLnN1YnN0cigxKS5zcGxpdCgi
IyIpLHI9bi5zaGlmdCgpLCIvIj09PWkuc2xpY2UoLTEpJiYocj1yLnN1YnN0cigxKSksaT1pK3Ir
YSxuLmxlbmd0aCYmKGkrPSIjIituLmpvaW4oIiMiKSkpOmk9aSthK28saX1mdW5jdGlvbiBkKGUs
dCl7dmFyIHI9ZSxuPWYoZSx0KSxpPW4uc3Vic3RyKGUubGVuZ3RoKTtyZXR1cm4iIiE9PWkmJigi
LyIhPT1pLmNoYXJBdCgwKSYmKGk9Ii8iK2kpLHIrPSIjIitpKSxyfWUuZ2V0SGlzdG9yeVBhdGg9
ZixlLmdldEhhc2hQYXRoPWQsZS5kZWZhdWx0PWEuZGVmYXVsdC5leHRlbmQoe2xvY2F0aW9uOnMu
ZGVmYXVsdC5sb2NhdGlvbixoaXN0b3J5OnMuZGVmYXVsdC5oaXN0b3J5LGdsb2JhbDpzLmRlZmF1
bHQuZ2xvYmFsLHVzZXJBZ2VudDpzLmRlZmF1bHQudXNlckFnZW50LGNhbmNlbFJvdXRlclNldHVw
OiExLHJvb3RVUkw6Ii8iLGRldGVjdDpmdW5jdGlvbigpe3ZhciBlPXRoaXMucm9vdFVSTCx0PWMo
e2xvY2F0aW9uOnRoaXMubG9jYXRpb24saGlzdG9yeTp0aGlzLmhpc3RvcnksdXNlckFnZW50OnRo
aXMudXNlckFnZW50LHJvb3RVUkw6ZSxkb2N1bWVudE1vZGU6dGhpcy5kb2N1bWVudE1vZGUsZ2xv
YmFsOnRoaXMuZ2xvYmFsfSk7dD09PSExJiYobi5zZXQodGhpcywiY2FuY2VsUm91dGVyU2V0dXAi
LCEwKSx0PSJub25lIik7dmFyIHI9by5nZXRPd25lcih0aGlzKS5sb29rdXAoImxvY2F0aW9uOiIr
dCk7bi5zZXQociwicm9vdFVSTCIsZSksbi5zZXQodGhpcywiY29uY3JldGVJbXBsZW1lbnRhdGlv
biIscil9LGluaXRTdGF0ZTpsKCJpbml0U3RhdGUiKSxnZXRVUkw6bCgiZ2V0VVJMIiksc2V0VVJM
OmwoInNldFVSTCIpLHJlcGxhY2VVUkw6bCgicmVwbGFjZVVSTCIpLG9uVXBkYXRlVVJMOmwoIm9u
VXBkYXRlVVJMIiksZm9ybWF0VVJMOmwoImZvcm1hdFVSTCIpLHdpbGxEZXN0cm95OmZ1bmN0aW9u
KCl7dmFyIGU9ci5nZXQodGhpcywiY29uY3JldGVJbXBsZW1lbnRhdGlvbiIpO2UmJmUuZGVzdHJv
eSgpfX0pfSksZSgiZW1iZXItcm91dGluZy9sb2NhdGlvbi9oYXNoX2xvY2F0aW9uIixbImV4cG9y
dHMiLCJlbWJlci1tZXRhbC9wcm9wZXJ0eV9nZXQiLCJlbWJlci1tZXRhbC9wcm9wZXJ0eV9zZXQi
LCJlbWJlci1tZXRhbC9ydW5fbG9vcCIsImVtYmVyLW1ldGFsL3V0aWxzIiwiZW1iZXItcnVudGlt
ZS9zeXN0ZW0vb2JqZWN0IiwiZW1iZXItcm91dGluZy9sb2NhdGlvbi9hcGkiLCJlbWJlci12aWV3
cy9zeXN0ZW0vanF1ZXJ5Il0sZnVuY3Rpb24oZSx0LHIsbixpLG8sYSxzKXsidXNlIHN0cmljdCI7
ZS5kZWZhdWx0PW8uZGVmYXVsdC5leHRlbmQoe2ltcGxlbWVudGF0aW9uOiJoYXNoIixpbml0OmZ1
bmN0aW9uKCl7ci5zZXQodGhpcywibG9jYXRpb24iLHQuZ2V0KHRoaXMsIl9sb2NhdGlvbiIpfHx3
aW5kb3cubG9jYXRpb24pfSxnZXRIYXNoOmEuZGVmYXVsdC5fZ2V0SGFzaCxnZXRVUkw6ZnVuY3Rp
b24oKXt2YXIgZT10aGlzLmdldEhhc2goKS5zdWJzdHIoMSksdD1lO3JldHVybiIvIiE9PXQuY2hh
ckF0KDApJiYodD0iLyIsZSYmKHQrPSIjIitlKSksdH0sc2V0VVJMOmZ1bmN0aW9uKGUpe3QuZ2V0
KHRoaXMsImxvY2F0aW9uIikuaGFzaD1lLHIuc2V0KHRoaXMsImxhc3RTZXRVUkwiLGUpfSxyZXBs
YWNlVVJMOmZ1bmN0aW9uKGUpe3QuZ2V0KHRoaXMsImxvY2F0aW9uIikucmVwbGFjZSgiIyIrZSks
ci5zZXQodGhpcywibGFzdFNldFVSTCIsZSl9LG9uVXBkYXRlVVJMOmZ1bmN0aW9uKGUpe3ZhciBv
PXRoaXMsYT1pLmd1aWRGb3IodGhpcyk7cy5kZWZhdWx0KHdpbmRvdykub24oImhhc2hjaGFuZ2Uu
ZW1iZXItbG9jYXRpb24tIithLGZ1bmN0aW9uKCl7bi5kZWZhdWx0KGZ1bmN0aW9uKCl7dmFyIG49
by5nZXRVUkwoKTt0LmdldChvLCJsYXN0U2V0VVJMIikhPT1uJiYoci5zZXQobywibGFzdFNldFVS
TCIsbnVsbCksZShuKSl9KX0pfSxmb3JtYXRVUkw6ZnVuY3Rpb24oZSl7cmV0dXJuIiMiK2V9LHdp
bGxEZXN0cm95OmZ1bmN0aW9uKCl7dmFyIGU9aS5ndWlkRm9yKHRoaXMpO3MuZGVmYXVsdCh3aW5k
b3cpLm9mZigiaGFzaGNoYW5nZS5lbWJlci1sb2NhdGlvbi0iK2UpfX0pfSksZSgiZW1iZXItcm91
dGluZy9sb2NhdGlvbi9oaXN0b3J5X2xvY2F0aW9uIixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9w
cm9wZXJ0eV9nZXQiLCJlbWJlci1tZXRhbC9wcm9wZXJ0eV9zZXQiLCJlbWJlci1tZXRhbC91dGls
cyIsImVtYmVyLXJ1bnRpbWUvc3lzdGVtL29iamVjdCIsImVtYmVyLXJvdXRpbmcvbG9jYXRpb24v
YXBpIiwiZW1iZXItdmlld3Mvc3lzdGVtL2pxdWVyeSJdLGZ1bmN0aW9uKGUsdCxyLG4saSxvLGEp
eyJ1c2Ugc3RyaWN0Ijt2YXIgcz0hMTtlLmRlZmF1bHQ9aS5kZWZhdWx0LmV4dGVuZCh7aW1wbGVt
ZW50YXRpb246Imhpc3RvcnkiLGluaXQ6ZnVuY3Rpb24oKXtyLnNldCh0aGlzLCJsb2NhdGlvbiIs
dC5nZXQodGhpcywibG9jYXRpb24iKXx8d2luZG93LmxvY2F0aW9uKSxyLnNldCh0aGlzLCJiYXNl
VVJMIixhLmRlZmF1bHQoImJhc2UiKS5hdHRyKCJocmVmIil8fCIiKX0saW5pdFN0YXRlOmZ1bmN0
aW9uKCl7dmFyIGU9dC5nZXQodGhpcywiaGlzdG9yeSIpfHx3aW5kb3cuaGlzdG9yeTtyLnNldCh0
aGlzLCJoaXN0b3J5IixlKSxlJiYic3RhdGUiaW4gZSYmKHRoaXMuc3VwcG9ydHNIaXN0b3J5PSEw
KSx0aGlzLnJlcGxhY2VTdGF0ZSh0aGlzLmZvcm1hdFVSTCh0aGlzLmdldFVSTCgpKSl9LHJvb3RV
Ukw6Ii8iLGdldFVSTDpmdW5jdGlvbigpe3ZhciBlPXQuZ2V0KHRoaXMsImxvY2F0aW9uIikscj1l
LnBhdGhuYW1lLG49dC5nZXQodGhpcywicm9vdFVSTCIpLGk9dC5nZXQodGhpcywiYmFzZVVSTCIp
O249bi5yZXBsYWNlKC9cLyQvLCIiKSxpPWkucmVwbGFjZSgvXC8kLywiIik7dmFyIG89ci5yZXBs
YWNlKG5ldyBSZWdFeHAoIl4iK2krIig/PS98JCkiKSwiIikucmVwbGFjZShuZXcgUmVnRXhwKCJe
IituKyIoPz0vfCQpIiksIiIpLGE9ZS5zZWFyY2h8fCIiO3JldHVybiBvKz1hLG8rPXRoaXMuZ2V0
SGFzaCgpfSxzZXRVUkw6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5nZXRTdGF0ZSgpO2U9dGhpcy5m
b3JtYXRVUkwoZSksdCYmdC5wYXRoPT09ZXx8dGhpcy5wdXNoU3RhdGUoZSl9LHJlcGxhY2VVUkw6
ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5nZXRTdGF0ZSgpO2U9dGhpcy5mb3JtYXRVUkwoZSksdCYm
dC5wYXRoPT09ZXx8dGhpcy5yZXBsYWNlU3RhdGUoZSl9LGdldFN0YXRlOmZ1bmN0aW9uKCl7cmV0
dXJuIHRoaXMuc3VwcG9ydHNIaXN0b3J5P3QuZ2V0KHRoaXMsImhpc3RvcnkiKS5zdGF0ZTp0aGlz
Ll9oaXN0b3J5U3RhdGV9LHB1c2hTdGF0ZTpmdW5jdGlvbihlKXt2YXIgcj17cGF0aDplfTt0Lmdl
dCh0aGlzLCJoaXN0b3J5IikucHVzaFN0YXRlKHIsbnVsbCxlKSx0aGlzLl9oaXN0b3J5U3RhdGU9
cix0aGlzLl9wcmV2aW91c1VSTD10aGlzLmdldFVSTCgpfSxyZXBsYWNlU3RhdGU6ZnVuY3Rpb24o
ZSl7dmFyIHI9e3BhdGg6ZX07dC5nZXQodGhpcywiaGlzdG9yeSIpLnJlcGxhY2VTdGF0ZShyLG51
bGwsZSksdGhpcy5faGlzdG9yeVN0YXRlPXIsdGhpcy5fcHJldmlvdXNVUkw9dGhpcy5nZXRVUkwo
KX0sb25VcGRhdGVVUkw6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxyPW4uZ3VpZEZvcih0aGlzKTth
LmRlZmF1bHQod2luZG93KS5vbigicG9wc3RhdGUuZW1iZXItbG9jYXRpb24tIityLGZ1bmN0aW9u
KHIpeyhzfHwocz0hMCx0LmdldFVSTCgpIT09dC5fcHJldmlvdXNVUkwpKSYmZSh0LmdldFVSTCgp
KX0pfSxmb3JtYXRVUkw6ZnVuY3Rpb24oZSl7dmFyIHI9dC5nZXQodGhpcywicm9vdFVSTCIpLG49
dC5nZXQodGhpcywiYmFzZVVSTCIpO3JldHVybiIiIT09ZT8ocj1yLnJlcGxhY2UoL1wvJC8sIiIp
LG49bi5yZXBsYWNlKC9cLyQvLCIiKSk6bi5tYXRjaCgvXlwvLykmJnIubWF0Y2goL15cLy8pJiYo
bj1uLnJlcGxhY2UoL1wvJC8sIiIpKSxuK3IrZX0sd2lsbERlc3Ryb3k6ZnVuY3Rpb24oKXt2YXIg
ZT1uLmd1aWRGb3IodGhpcyk7YS5kZWZhdWx0KHdpbmRvdykub2ZmKCJwb3BzdGF0ZS5lbWJlci1s
b2NhdGlvbi0iK2UpfSxnZXRIYXNoOm8uZGVmYXVsdC5fZ2V0SGFzaH0pfSksZSgiZW1iZXItcm91
dGluZy9sb2NhdGlvbi9ub25lX2xvY2F0aW9uIixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9kZWJ1
ZyIsImVtYmVyLW1ldGFsL3Byb3BlcnR5X2dldCIsImVtYmVyLW1ldGFsL3Byb3BlcnR5X3NldCIs
ImVtYmVyLXJ1bnRpbWUvc3lzdGVtL29iamVjdCJdLGZ1bmN0aW9uKGUsdCxyLG4saSl7InVzZSBz
dHJpY3QiO2UuZGVmYXVsdD1pLmRlZmF1bHQuZXh0ZW5kKHtpbXBsZW1lbnRhdGlvbjoibm9uZSIs
cGF0aDoiIixkZXRlY3Q6ZnVuY3Rpb24oKXt0aGlzLnJvb3RVUkx9LHJvb3RVUkw6Ii8iLGdldFVS
TDpmdW5jdGlvbigpe3ZhciBlPXIuZ2V0KHRoaXMsInBhdGgiKSx0PXIuZ2V0KHRoaXMsInJvb3RV
UkwiKTtyZXR1cm4gdD10LnJlcGxhY2UoL1wvJC8sIiIpLGUucmVwbGFjZShuZXcgUmVnRXhwKCJe
Iit0KyIoPz0vfCQpIiksIiIpfSxzZXRVUkw6ZnVuY3Rpb24oZSl7bi5zZXQodGhpcywicGF0aCIs
ZSl9LG9uVXBkYXRlVVJMOmZ1bmN0aW9uKGUpe3RoaXMudXBkYXRlQ2FsbGJhY2s9ZX0saGFuZGxl
VVJMOmZ1bmN0aW9uKGUpe24uc2V0KHRoaXMsInBhdGgiLGUpLHRoaXMudXBkYXRlQ2FsbGJhY2so
ZSl9LGZvcm1hdFVSTDpmdW5jdGlvbihlKXt2YXIgdD1yLmdldCh0aGlzLCJyb290VVJMIik7cmV0
dXJuIiIhPT1lJiYodD10LnJlcGxhY2UoL1wvJC8sIiIpKSx0K2V9fSl9KSxlKCJlbWJlci1yb3V0
aW5nL2xvY2F0aW9uL3V0aWwiLFsiZXhwb3J0cyJdLGZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiB0KGUpe3ZhciB0PWUucGF0aG5hbWU7cmV0dXJuIi8iIT09dC5jaGFyQXQoMCkmJih0
PSIvIit0KSx0fWZ1bmN0aW9uIHIoZSl7cmV0dXJuIGUuc2VhcmNofWZ1bmN0aW9uIG4oZSl7dmFy
IHQ9ZS5ocmVmLHI9dC5pbmRleE9mKCIjIik7cmV0dXJuIHI9PT0tMT8iIjp0LnN1YnN0cihyKX1m
dW5jdGlvbiBpKGUpe3JldHVybiB0KGUpK3IoZSkrbihlKX1mdW5jdGlvbiBvKGUpe3ZhciB0PWUu
b3JpZ2luO3JldHVybiB0fHwodD1lLnByb3RvY29sKyIvLyIrZS5ob3N0bmFtZSxlLnBvcnQmJih0
Kz0iOiIrZS5wb3J0KSksdH1mdW5jdGlvbiBhKGUsdCl7cmV0dXJuIm9uaGFzaGNoYW5nZSJpbiB0
JiYodm9pZCAwPT09ZXx8ZT43KX1mdW5jdGlvbiBzKGUsdCl7cmV0dXJuKGUuaW5kZXhPZigiQW5k
cm9pZCAyLiIpPT09LTEmJmUuaW5kZXhPZigiQW5kcm9pZCA0LjAiKT09PS0xfHxlLmluZGV4T2Yo
Ik1vYmlsZSBTYWZhcmkiKT09PS0xfHxlLmluZGV4T2YoIkNocm9tZSIpIT09LTF8fGUuaW5kZXhP
ZigiV2luZG93cyBQaG9uZSIpIT09LTEpJiYhISh0JiYicHVzaFN0YXRlImluIHQpfWZ1bmN0aW9u
IHUoZSx0KXtlLnJlcGxhY2UobyhlKSt0KX1lLmdldFBhdGg9dCxlLmdldFF1ZXJ5PXIsZS5nZXRI
YXNoPW4sZS5nZXRGdWxsUGF0aD1pLGUuZ2V0T3JpZ2luPW8sZS5zdXBwb3J0c0hhc2hDaGFuZ2U9
YSxlLnN1cHBvcnRzSGlzdG9yeT1zLGUucmVwbGFjZVBhdGg9dX0pLGUoImVtYmVyLXJvdXRpbmcv
c2VydmljZXMvcm91dGluZyIsWyJleHBvcnRzIiwiZW1iZXItcnVudGltZS9zeXN0ZW0vc2Vydmlj
ZSIsImVtYmVyLW1ldGFsL3Byb3BlcnR5X2dldCIsImVtYmVyLW1ldGFsL2NvbXB1dGVkX21hY3Jv
cyIsImVtYmVyLXJvdXRpbmcvdXRpbHMiLCJlbWJlci1tZXRhbC9hc3NpZ24iXSxmdW5jdGlvbihl
LHQscixuLGksbyl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGEoZSx0KXtmb3IodmFyIHI9MCxuPTAs
aT10Lmxlbmd0aDtuPGkmJihyKz10W25dLm5hbWVzLmxlbmd0aCx0W25dLmhhbmRsZXIhPT1lKTtu
KyspO3JldHVybiByfWUuZGVmYXVsdD10LmRlZmF1bHQuZXh0ZW5kKHtyb3V0ZXI6bnVsbCx0YXJn
ZXRTdGF0ZTpuLnJlYWRPbmx5KCJyb3V0ZXIudGFyZ2V0U3RhdGUiKSxjdXJyZW50U3RhdGU6bi5y
ZWFkT25seSgicm91dGVyLmN1cnJlbnRTdGF0ZSIpLGN1cnJlbnRSb3V0ZU5hbWU6bi5yZWFkT25s
eSgicm91dGVyLmN1cnJlbnRSb3V0ZU5hbWUiKSxjdXJyZW50UGF0aDpuLnJlYWRPbmx5KCJyb3V0
ZXIuY3VycmVudFBhdGgiKSxhdmFpbGFibGVSb3V0ZXM6ZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0
LmtleXMoci5nZXQodGhpcywicm91dGVyIikucm91dGVyLnJlY29nbml6ZXIubmFtZXMpfSxoYXNS
b3V0ZTpmdW5jdGlvbihlKXtyZXR1cm4gci5nZXQodGhpcywicm91dGVyIikuaGFzUm91dGUoZSl9
LHRyYW5zaXRpb25UbzpmdW5jdGlvbihlLHQsbixpKXt2YXIgbz1yLmdldCh0aGlzLCJyb3V0ZXIi
KSxhPW8uX2RvVHJhbnNpdGlvbihlLHQsbik7aSYmYS5tZXRob2QoInJlcGxhY2UiKX0sbm9ybWFs
aXplUXVlcnlQYXJhbXM6ZnVuY3Rpb24oZSx0LG4pe3ZhciBpPXIuZ2V0KHRoaXMsInJvdXRlciIp
O2kuX3ByZXBhcmVRdWVyeVBhcmFtcyhlLHQsbil9LGdlbmVyYXRlVVJMOmZ1bmN0aW9uKGUsdCxu
KXt2YXIgYT1yLmdldCh0aGlzLCJyb3V0ZXIiKTtpZihhLnJvdXRlcil7dmFyIHM9e307by5kZWZh
dWx0KHMsbiksdGhpcy5ub3JtYWxpemVRdWVyeVBhcmFtcyhlLHQscyk7dmFyIHU9aS5yb3V0ZUFy
Z3MoZSx0LHMpO3JldHVybiBhLmdlbmVyYXRlLmFwcGx5KGEsdSl9fSxpc0FjdGl2ZUZvclJvdXRl
OmZ1bmN0aW9uKGUsdCxuLGksbyl7dmFyIHM9ci5nZXQodGhpcywicm91dGVyIiksdT1zLnJvdXRl
ci5yZWNvZ25pemVyLmhhbmRsZXJzRm9yKG4pLGw9dVt1Lmxlbmd0aC0xXS5oYW5kbGVyLGM9YShu
LHUpO3JldHVybiBlLmxlbmd0aD5jJiYobj1sKSxpLmlzQWN0aXZlSW50ZW50KG4sZSx0LCFvKX19
KX0pLGUoImVtYmVyLXJvdXRpbmcvc3lzdGVtL2NhY2hlIixbImV4cG9ydHMiLCJlbWJlci1ydW50
aW1lL3N5c3RlbS9vYmplY3QiXSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtlLmRlZmF1bHQ9
dC5kZWZhdWx0LmV4dGVuZCh7aW5pdDpmdW5jdGlvbigpe3RoaXMuY2FjaGU9e319LGhhczpmdW5j
dGlvbihlKXtyZXR1cm4gZSBpbiB0aGlzLmNhY2hlfSxzdGFzaDpmdW5jdGlvbihlLHQscil7dmFy
IG49dGhpcy5jYWNoZVtlXTtufHwobj10aGlzLmNhY2hlW2VdPXt9KSxuW3RdPXJ9LGxvb2t1cDpm
dW5jdGlvbihlLHQscil7dmFyIG49dGhpcy5jYWNoZTtpZighKGUgaW4gbikpcmV0dXJuIHI7dmFy
IGk9bltlXTtyZXR1cm4gdCBpbiBpP2lbdF06cn0sY2FjaGU6bnVsbH0pfSksZSgiZW1iZXItcm91
dGluZy9zeXN0ZW0vY29udHJvbGxlcl9mb3IiLFsiZXhwb3J0cyJdLGZ1bmN0aW9uKGUpeyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiB0KGUsdCxyKXtyZXR1cm4gZS5sb29rdXAoImNvbnRyb2xsZXI6Iit0
LHIpfWUuZGVmYXVsdD10fSksZSgiZW1iZXItcm91dGluZy9zeXN0ZW0vZHNsIixbImV4cG9ydHMi
LCJlbWJlci1tZXRhbC9kZWJ1ZyJdLGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IHIoZSx0KXt0aGlzLnBhcmVudD1lLHRoaXMuZW5hYmxlTG9hZGluZ1N1YnN0YXRlcz10JiZ0LmVu
YWJsZUxvYWRpbmdTdWJzdGF0ZXMsdGhpcy5tYXRjaGVzPVtdLHRoaXMuZXhwbGljaXRJbmRleD12
b2lkIDAsdGhpcy5vcHRpb25zPXR9ZnVuY3Rpb24gbihlKXtyZXR1cm4gZS5wYXJlbnQmJiJhcHBs
aWNhdGlvbiIhPT1lLnBhcmVudH1mdW5jdGlvbiBpKGUsdCxyKXtyZXR1cm4gbihlKSYmciE9PSEw
P2UucGFyZW50KyIuIit0OnR9ZnVuY3Rpb24gbyhlLHQscixuKXtyPXJ8fHt9O3ZhciBvPWkoZSx0
LHIucmVzZXROYW1lc3BhY2UpOyJzdHJpbmciIT10eXBlb2Ygci5wYXRoJiYoci5wYXRoPSIvIit0
KSxlLnB1c2goci5wYXRoLG8sbil9ZS5kZWZhdWx0PXIsci5wcm90b3R5cGU9e3JvdXRlOmZ1bmN0
aW9uKGUsdCxuKXt2YXIgYT0iL191bnVzZWRfZHVtbXlfZXJyb3JfcGF0aF9yb3V0ZV8iK2UrIi86
ZXJyb3IiO2lmKDI9PT1hcmd1bWVudHMubGVuZ3RoJiYiZnVuY3Rpb24iPT10eXBlb2YgdCYmKG49
dCx0PXt9KSwxPT09YXJndW1lbnRzLmxlbmd0aCYmKHQ9e30pLHRoaXMuZW5hYmxlTG9hZGluZ1N1
YnN0YXRlcyYmKG8odGhpcyxlKyJfbG9hZGluZyIse3Jlc2V0TmFtZXNwYWNlOnQucmVzZXROYW1l
c3BhY2V9KSxvKHRoaXMsZSsiX2Vycm9yIix7cGF0aDphfSkpLG4pe3ZhciBzPWkodGhpcyxlLHQu
cmVzZXROYW1lc3BhY2UpLHU9bmV3IHIocyx0aGlzLm9wdGlvbnMpO28odSwibG9hZGluZyIpLG8o
dSwiZXJyb3IiLHtwYXRoOmF9KSxuLmNhbGwodSksbyh0aGlzLGUsdCx1LmdlbmVyYXRlKCkpfWVs
c2Ugbyh0aGlzLGUsdCl9LHB1c2g6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXQuc3BsaXQoIi4iKTsi
IiE9PWUmJiIvIiE9PWUmJiJpbmRleCIhPT1uW24ubGVuZ3RoLTFdfHwodGhpcy5leHBsaWNpdElu
ZGV4PSEwKSx0aGlzLm1hdGNoZXMucHVzaChbZSx0LHJdKX0scmVzb3VyY2U6ZnVuY3Rpb24oZSx0
LHIpezI9PT1hcmd1bWVudHMubGVuZ3RoJiYiZnVuY3Rpb24iPT10eXBlb2YgdCYmKHI9dCx0PXt9
KSwxPT09YXJndW1lbnRzLmxlbmd0aCYmKHQ9e30pLHQucmVzZXROYW1lc3BhY2U9ITAsdGhpcy5y
b3V0ZShlLHQscil9LGdlbmVyYXRlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5tYXRjaGVzO3JldHVy
biB0aGlzLmV4cGxpY2l0SW5kZXh8fHRoaXMucm91dGUoImluZGV4Iix7cGF0aDoiLyJ9KSxmdW5j
dGlvbih0KXtmb3IodmFyIHI9MCxuPWUubGVuZ3RoO3I8bjtyKyspe3ZhciBpPWVbcl07dChpWzBd
KS50byhpWzFdLGlbMl0pfX19fSxyLm1hcD1mdW5jdGlvbihlKXt2YXIgdD1uZXcgcjtyZXR1cm4g
ZS5jYWxsKHQpLHR9fSksZSgiZW1iZXItcm91dGluZy9zeXN0ZW0vZ2VuZXJhdGVfY29udHJvbGxl
ciIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvZGVidWciLCJlbWJlci1tZXRhbC9wcm9wZXJ0eV9n
ZXQiXSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSx0LHIpe3ZhciBu
LGk7cmV0dXJuIG49ZS5fbG9va3VwRmFjdG9yeSgiY29udHJvbGxlcjpiYXNpYyIpLmV4dGVuZCh7
aXNHZW5lcmF0ZWQ6ITAsdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4iKGdlbmVyYXRlZCAiK3Qr
IiBjb250cm9sbGVyKSJ9fSksaT0iY29udHJvbGxlcjoiK3QsZS5yZWdpc3RlcihpLG4pLG59ZnVu
Y3Rpb24gaShlLHQsaSl7bihlLHQsaSk7dmFyIG89ImNvbnRyb2xsZXI6Iit0LGE9ZS5sb29rdXAo
byk7cmV0dXJuIHIuZ2V0KGEsIm5hbWVzcGFjZS5MT0dfQUNUSVZFX0dFTkVSQVRJT04iKSxhfWUu
Z2VuZXJhdGVDb250cm9sbGVyRmFjdG9yeT1uLGUuZGVmYXVsdD1pfSksZSgiZW1iZXItcm91dGlu
Zy9zeXN0ZW0vcXVlcnlfcGFyYW1zIixbImV4cG9ydHMiLCJlbWJlci1ydW50aW1lL3N5c3RlbS9v
YmplY3QiXSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtlLmRlZmF1bHQ9dC5kZWZhdWx0LmV4
dGVuZCh7aXNRdWVyeVBhcmFtczohMCx2YWx1ZXM6bnVsbH0pfSk7ZSgiZW1iZXItcm91dGluZy9z
eXN0ZW0vcm91dGUiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL2NvcmUiLCJlbWJlci1tZXRhbC9k
ZWJ1ZyIsImVtYmVyLW1ldGFsL2ZlYXR1cmVzIiwiZW1iZXItbWV0YWwvZXJyb3IiLCJlbWJlci1t
ZXRhbC9wcm9wZXJ0eV9nZXQiLCJlbWJlci1tZXRhbC9wcm9wZXJ0eV9zZXQiLCJlbWJlci1tZXRh
bC9nZXRfcHJvcGVydGllcyIsImVtYmVyLW1ldGFsL2lzX25vbmUiLCJlbWJlci1tZXRhbC9jb21w
dXRlZCIsImVtYmVyLW1ldGFsL2Fzc2lnbiIsImVtYmVyLXJ1bnRpbWUvdXRpbHMiLCJlbWJlci1t
ZXRhbC9ydW5fbG9vcCIsImVtYmVyLXJ1bnRpbWUvY29weSIsImVtYmVyLXJ1bnRpbWUvc3lzdGVt
L3N0cmluZyIsImVtYmVyLXJ1bnRpbWUvc3lzdGVtL29iamVjdCIsImVtYmVyLXJ1bnRpbWUvc3lz
dGVtL25hdGl2ZV9hcnJheSIsImVtYmVyLXJ1bnRpbWUvbWl4aW5zL2V2ZW50ZWQiLCJlbWJlci1y
dW50aW1lL21peGlucy9hY3Rpb25faGFuZGxlciIsImVtYmVyLXJvdXRpbmcvc3lzdGVtL2dlbmVy
YXRlX2NvbnRyb2xsZXIiLCJlbWJlci1yb3V0aW5nL3V0aWxzIiwiY29udGFpbmVyL293bmVyIiwi
ZW1iZXItbWV0YWwvaXNfZW1wdHkiXSxmdW5jdGlvbihlLHQscixuLGksbyxhLHMsdSxsLGMsZixk
LHAsaCxtLHYsYixnLHksXyx3LHgpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBrKCl7cmV0dXJuIHRo
aXN9ZnVuY3Rpb24gQyhlKXt2YXIgdD1FKGUsZS5yb3V0ZXIucm91dGVyLnN0YXRlLmhhbmRsZXJJ
bmZvcywtMSk7cmV0dXJuIHQmJnQuaGFuZGxlcn1mdW5jdGlvbiBFKGUsdCxyKXtpZih0KWZvcih2
YXIgbixpPXJ8fDAsbz0wLGE9dC5sZW5ndGg7bzxhO28rKylpZihuPXRbb10uaGFuZGxlcixuPT09
ZSlyZXR1cm4gdFtvK2ldfWZ1bmN0aW9uIE8oZSx0LHIsbixhKXt2YXIgcyx1LGwsYyxmPWEmJmEu
Y29udHJvbGxlcixkPW8uZ2V0KGUucm91dGVyLCJuYW1lc3BhY2UuTE9HX1ZJRVdfTE9PS1VQUyIp
LHA9YSYmYS5pbnRvJiZhLmludG8ucmVwbGFjZSgvXC8vZywiLiIpLGg9YSYmYS5vdXRsZXR8fCJt
YWluIixtPXcuZ2V0T3duZXIoZSk7aWYobj8obj1uLnJlcGxhY2UoL1wvL2csIi4iKSxzPW4pOihu
PWUucm91dGVOYW1lLHM9ZS50ZW1wbGF0ZU5hbWV8fG4pLGZ8fChmPXQ/bS5sb29rdXAoImNvbnRy
b2xsZXI6IituKXx8ZS5jb250cm9sbGVyTmFtZXx8ZS5yb3V0ZU5hbWU6ZS5jb250cm9sbGVyTmFt
ZXx8bS5sb29rdXAoImNvbnRyb2xsZXI6IituKSksInN0cmluZyI9PXR5cGVvZiBmKXt2YXIgdj1m
O2lmKGY9bS5sb29rdXAoImNvbnRyb2xsZXI6Iit2KSwhZil0aHJvdyBuZXcgaS5kZWZhdWx0KCJZ
b3UgcGFzc2VkIGBjb250cm9sbGVyOiAnIit2KyInYCBpbnRvIHRoZSBgcmVuZGVyYCBtZXRob2Qs
IGJ1dCBubyBzdWNoIGNvbnRyb2xsZXIgY291bGQgYmUgZm91bmQuIil9aWYoYSYmT2JqZWN0Lmtl
eXMoYSkuaW5kZXhPZigib3V0bGV0IikhPT0tMSYmInVuZGVmaW5lZCI9PXR5cGVvZiBhLm91dGxl
dCl0aHJvdyBuZXcgaS5kZWZhdWx0KCJZb3UgcGFzc2VkIHVuZGVmaW5lZCBhcyB0aGUgb3V0bGV0
IG5hbWUuIik7YSYmYS5tb2RlbCYmZi5zZXQoIm1vZGVsIixhLm1vZGVsKSx1PWEmJmEudmlld3x8
dCYmbnx8ZS52aWV3TmFtZXx8bixsPW0uX2xvb2t1cEZhY3RvcnkoInZpZXc6Iit1KSxjPW0ubG9v
a3VwKCJ0ZW1wbGF0ZToiK3MpO3ZhciBiO3AmJihiPUMoZSkpJiZwPT09QyhlKS5yb3V0ZU5hbWUm
JihwPXZvaWQgMCk7dmFyIGc9e293bmVyOm0saW50bzpwLG91dGxldDpoLG5hbWU6bixjb250cm9s
bGVyOmYsVmlld0NsYXNzOmwsdGVtcGxhdGU6Y3x8ZS5fdG9wTGV2ZWxWaWV3VGVtcGxhdGV9LHk9
dm9pZCAwO2lmKCFsJiYhYyYmIXkmJmQpO3JldHVybiBnfWZ1bmN0aW9uIFQoZSx0KXtpZih0LmZ1
bGxRdWVyeVBhcmFtcylyZXR1cm4gdC5mdWxsUXVlcnlQYXJhbXM7dC5mdWxsUXVlcnlQYXJhbXM9
e30sYy5kZWZhdWx0KHQuZnVsbFF1ZXJ5UGFyYW1zLHQucXVlcnlQYXJhbXMpO3ZhciByPXQuaGFu
ZGxlckluZm9zW3QuaGFuZGxlckluZm9zLmxlbmd0aC0xXS5uYW1lO3JldHVybiBlLl9kZXNlcmlh
bGl6ZVF1ZXJ5UGFyYW1zKHIsdC5mdWxsUXVlcnlQYXJhbXMpLHQuZnVsbFF1ZXJ5UGFyYW1zfWZ1
bmN0aW9uIE4oZSx0KXt0LnF1ZXJ5UGFyYW1zRm9yPXQucXVlcnlQYXJhbXNGb3J8fHt9O3ZhciBy
PWUucm91dGVOYW1lO2lmKHQucXVlcnlQYXJhbXNGb3Jbcl0pcmV0dXJuIHQucXVlcnlQYXJhbXNG
b3Jbcl07Zm9yKHZhciBuPVQoZS5yb3V0ZXIsdCksaT10LnF1ZXJ5UGFyYW1zRm9yW3JdPXt9LGE9
by5nZXQoZSwiX3FwIikscz1hLnFwcyx1PTAsbD1zLmxlbmd0aDt1PGw7Kyt1KXt2YXIgYz1zW3Vd
LGY9Yy5wcm9wIGluIG47aVtjLnByb3BdPWY/bltjLnByb3BdOlMoYy5kZWZhdWx0VmFsdWUpfXJl
dHVybiBpfWZ1bmN0aW9uIFMoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/di5BKGUuc2xpY2Uo
KSk6ZX1mdW5jdGlvbiBBKGUsdCl7dmFyIHIsbj17fTtyPXtkZWZhdWx0VmFsdWU6ITAsdHlwZToh
MCxzY29wZTohMCxhczohMH07Zm9yKHZhciBpIGluIGUpaWYoZS5oYXNPd25Qcm9wZXJ0eShpKSl7
dmFyIG89e307Yy5kZWZhdWx0KG8sZVtpXSksYy5kZWZhdWx0KG8sdFtpXSksbltpXT1vLHJbaV09
ITB9Zm9yKHZhciBhIGluIHQpaWYodC5oYXNPd25Qcm9wZXJ0eShhKSYmIXJbYV0pe3ZhciBzPXt9
O2MuZGVmYXVsdChzLHRbYV0sZVthXSksblthXT1zfXJldHVybiBufWZ1bmN0aW9uIFAoZSx0KXt0
LmZvckVhY2goZnVuY3Rpb24odCl7ZS5hZGRPYnNlcnZlcih0KyIuW10iLGUsZS5fcXBDaGFuZ2Vk
KX0pfXZhciBqPUFycmF5LnByb3RvdHlwZS5zbGljZSxSPW0uZGVmYXVsdC5leHRlbmQoZy5kZWZh
dWx0LGIuZGVmYXVsdCx7cXVlcnlQYXJhbXM6e30sX3FwOmwuY29tcHV0ZWQoZnVuY3Rpb24oKXt2
YXIgZSx0LHI9dGhpcyxuPXRoaXMuY29udHJvbGxlck5hbWV8fHRoaXMucm91dGVOYW1lLGk9dy5n
ZXRPd25lcih0aGlzKS5fbG9va3VwRmFjdG9yeSgiY29udHJvbGxlcjoiK24pLGE9by5nZXQodGhp
cywicXVlcnlQYXJhbXMiKSxzPSEhT2JqZWN0LmtleXMoYSkubGVuZ3RoO2lmKGkpe2U9aS5wcm90
bygpO3ZhciB1PW8uZ2V0KGUsInF1ZXJ5UGFyYW1zIiksbD1fLm5vcm1hbGl6ZUNvbnRyb2xsZXJR
dWVyeVBhcmFtcyh1KTt0PUEobCxhKX1lbHNlIGlmKHMpe3ZhciBjPXkuZ2VuZXJhdGVDb250cm9s
bGVyRmFjdG9yeSh3LmdldE93bmVyKHRoaXMpLG4pO2U9Yy5wcm90bygpLHQ9YX12YXIgZD1bXSxw
PXt9LGg9W107Zm9yKHZhciBtIGluIHQpaWYodC5oYXNPd25Qcm9wZXJ0eShtKSYmInVua25vd25Q
cm9wZXJ0eSIhPT1tJiYiX3N1cGVyIiE9PW0pe3ZhciBiLGc9dFttXSx4PWcuc2NvcGV8fCJtb2Rl
bCI7ImNvbnRyb2xsZXIiPT09eCYmKGI9W10pO3ZhciBrPWcuYXN8fHRoaXMuc2VyaWFsaXplUXVl
cnlQYXJhbUtleShtKSxDPW8uZ2V0KGUsbSk7QXJyYXkuaXNBcnJheShDKSYmKEM9di5BKEMuc2xp
Y2UoKSkpO3ZhciBFPWcudHlwZXx8Zi50eXBlT2YoQyksTz10aGlzLnNlcmlhbGl6ZVF1ZXJ5UGFy
YW0oQyxrLEUpLFQ9bisiOiIrbSxOPXt1bmRlY29yYXRlZERlZmF1bHRWYWx1ZTpvLmdldChlLG0p
LGRlZmF1bHRWYWx1ZTpDLHNlcmlhbGl6ZWREZWZhdWx0VmFsdWU6TyxzZXJpYWxpemVkVmFsdWU6
Tyx0eXBlOkUsdXJsS2V5OmsscHJvcDptLHNjb3BlZFByb3BlcnR5TmFtZTpULGN0cmw6bixyb3V0
ZTp0aGlzLHBhcnRzOmIsdmFsdWVzOm51bGwsc2NvcGU6eCxwcmVmaXg6IiJ9O3BbbV09cFtrXT1w
W1RdPU4sZC5wdXNoKE4pLGgucHVzaChtKX1yZXR1cm57cXBzOmQsbWFwOnAscHJvcGVydHlOYW1l
czpoLHN0YXRlczp7aW5hY3RpdmU6ZnVuY3Rpb24oZSx0KXt2YXIgbj1wW2VdO3IuX3FwQ2hhbmdl
ZChlLHQsbil9LGFjdGl2ZTpmdW5jdGlvbihlLHQpe3ZhciBuPXBbZV07cmV0dXJuIHIuX3FwQ2hh
bmdlZChlLHQsbiksci5fYWN0aXZlUVBDaGFuZ2VkKHBbZV0sdCl9LGFsbG93T3ZlcnJpZGVzOmZ1
bmN0aW9uKGUsdCl7dmFyIG49cFtlXTtyZXR1cm4gci5fcXBDaGFuZ2VkKGUsdCxuKSxyLl91cGRh
dGluZ1FQQ2hhbmdlZChwW2VdKX19fX0pLF9uYW1lczpudWxsLF9zdGFzaE5hbWVzOmZ1bmN0aW9u
KGUsdCl7dmFyIHI9ZTtpZighdGhpcy5fbmFtZXMpe3ZhciBuPXRoaXMuX25hbWVzPXIuX25hbWVz
O24ubGVuZ3RofHwocj10LG49ciYmci5fbmFtZXN8fFtdKTtmb3IodmFyIGk9by5nZXQodGhpcywi
X3FwLnFwcyIpLGE9aS5sZW5ndGgscz1uZXcgQXJyYXkobi5sZW5ndGgpLHU9MCxsPW4ubGVuZ3Ro
O3U8bDsrK3Upc1t1XT1yLm5hbWUrIi4iK25bdV07Zm9yKHZhciBjPTA7YzxhOysrYyl7dmFyIGY9
aVtjXTsibW9kZWwiPT09Zi5zY29wZSYmKGYucGFydHM9cyksZi5wcmVmaXg9Zi5jdHJsfX19LF9h
Y3RpdmVRUENoYW5nZWQ6ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLnJvdXRlcjtyLl9hY3RpdmVR
UENoYW5nZWQoZS5zY29wZWRQcm9wZXJ0eU5hbWUsdCl9LF91cGRhdGluZ1FQQ2hhbmdlZDpmdW5j
dGlvbihlKXt2YXIgdD10aGlzLnJvdXRlcjt0Ll91cGRhdGluZ1FQQ2hhbmdlZChlLnVybEtleSl9
LG1lcmdlZFByb3BlcnRpZXM6WyJxdWVyeVBhcmFtcyJdLHBhcmFtc0ZvcjpmdW5jdGlvbihlKXt2
YXIgdD13LmdldE93bmVyKHRoaXMpLmxvb2t1cCgicm91dGU6IitlKTtpZighdClyZXR1cm57fTt2
YXIgcj10aGlzLnJvdXRlci5yb3V0ZXIuYWN0aXZlVHJhbnNpdGlvbixuPXI/ci5zdGF0ZTp0aGlz
LnJvdXRlci5yb3V0ZXIuc3RhdGUsaT17fTtyZXR1cm4gYy5kZWZhdWx0KGksbi5wYXJhbXNbZV0p
LGMuZGVmYXVsdChpLE4odCxuKSksaX0sc2VyaWFsaXplUXVlcnlQYXJhbUtleTpmdW5jdGlvbihl
KXtyZXR1cm4gZX0sc2VyaWFsaXplUXVlcnlQYXJhbTpmdW5jdGlvbihlLHQscil7cmV0dXJuImFy
cmF5Ij09PXI/SlNPTi5zdHJpbmdpZnkoZSk6IiIrZX0sZGVzZXJpYWxpemVRdWVyeVBhcmFtOmZ1
bmN0aW9uKGUsdCxyKXtyZXR1cm4iYm9vbGVhbiI9PT1yPyJ0cnVlIj09PWU6Im51bWJlciI9PT1y
P051bWJlcihlKS52YWx1ZU9mKCk6ImFycmF5Ij09PXI/di5BKEpTT04ucGFyc2UoZSkpOmV9LF9v
cHRpb25zRm9yUXVlcnlQYXJhbTpmdW5jdGlvbihlKXtyZXR1cm4gby5nZXQodGhpcywicXVlcnlQ
YXJhbXMuIitlLnVybEtleSl8fG8uZ2V0KHRoaXMsInF1ZXJ5UGFyYW1zLiIrZS5wcm9wKXx8e319
LHJlc2V0Q29udHJvbGxlcjprLGV4aXQ6ZnVuY3Rpb24oKXt0aGlzLmRlYWN0aXZhdGUoKSx0aGlz
LnRyaWdnZXIoImRlYWN0aXZhdGUiKSx0aGlzLnRlYXJkb3duVmlld3MoKX0sX3Jlc2V0OmZ1bmN0
aW9uKGUsdCl7dmFyIHI9dGhpcy5jb250cm9sbGVyO3IuX3FwRGVsZWdhdGU9by5nZXQodGhpcywi
X3FwLnN0YXRlcy5pbmFjdGl2ZSIpLHRoaXMucmVzZXRDb250cm9sbGVyKHIsZSx0KX0sZW50ZXI6
ZnVuY3Rpb24oKXt0aGlzLmNvbm5lY3Rpb25zPVtdLHRoaXMuYWN0aXZhdGUoKSx0aGlzLnRyaWdn
ZXIoImFjdGl2YXRlIil9LHZpZXdOYW1lOm51bGwsdGVtcGxhdGVOYW1lOm51bGwsY29udHJvbGxl
ck5hbWU6bnVsbCxhY3Rpb25zOntxdWVyeVBhcmFtc0RpZENoYW5nZTpmdW5jdGlvbihlLHQscil7
Zm9yKHZhciBuPW8uZ2V0KHRoaXMsIl9xcCIpLm1hcCxpPU9iamVjdC5rZXlzKGUpLmNvbmNhdChP
YmplY3Qua2V5cyhyKSksYT0wLHM9aS5sZW5ndGg7YTxzOysrYSl7dmFyIHU9bltpW2FdXTt1JiZv
LmdldCh0aGlzLl9vcHRpb25zRm9yUXVlcnlQYXJhbSh1KSwicmVmcmVzaE1vZGVsIikmJnRoaXMu
cm91dGVyLmN1cnJlbnRTdGF0ZSYmdGhpcy5yZWZyZXNoKCl9cmV0dXJuITB9LGZpbmFsaXplUXVl
cnlQYXJhbUNoYW5nZTpmdW5jdGlvbihlLHQscil7aWYoImFwcGxpY2F0aW9uIiE9PXRoaXMucm91
dGVOYW1lKXJldHVybiEwO2lmKHIpe3ZhciBuLGk9ci5zdGF0ZS5oYW5kbGVySW5mb3Mscz10aGlz
LnJvdXRlcix1PXMuX3F1ZXJ5UGFyYW1zRm9yKGlbaS5sZW5ndGgtMV0ubmFtZSksbD1zLl9xcFVw
ZGF0ZXM7Xy5zdGFzaFBhcmFtTmFtZXMocyxpKTtmb3IodmFyIGM9MCxmPXUucXBzLmxlbmd0aDtj
PGY7KytjKXt2YXIgZCxwLGg9dS5xcHNbY10sbT1oLnJvdXRlLHY9bS5jb250cm9sbGVyLGI9aC51
cmxLZXkgaW4gZSYmaC51cmxLZXk7bCYmaC51cmxLZXkgaW4gbD8oZD1vLmdldCh2LGgucHJvcCks
cD1tLnNlcmlhbGl6ZVF1ZXJ5UGFyYW0oZCxoLnVybEtleSxoLnR5cGUpKTpiPyhwPWVbYl0sZD1t
LmRlc2VyaWFsaXplUXVlcnlQYXJhbShwLGgudXJsS2V5LGgudHlwZSkpOihwPWguc2VyaWFsaXpl
ZERlZmF1bHRWYWx1ZSxkPVMoaC5kZWZhdWx0VmFsdWUpKSx2Ll9xcERlbGVnYXRlPW8uZ2V0KG0s
Il9xcC5zdGF0ZXMuaW5hY3RpdmUiKTt2YXIgZz1wIT09aC5zZXJpYWxpemVkVmFsdWU7aWYoZyl7
aWYoci5xdWVyeVBhcmFtc09ubHkmJm4hPT0hMSl7dmFyIHk9bS5fb3B0aW9uc0ZvclF1ZXJ5UGFy
YW0oaCksdz1vLmdldCh5LCJyZXBsYWNlIik7dz9uPSEwOnc9PT0hMSYmKG49ITEpfWEuc2V0KHYs
aC5wcm9wLGQpfWguc2VyaWFsaXplZFZhbHVlPXA7dmFyIHg9aC5zZXJpYWxpemVkRGVmYXVsdFZh
bHVlPT09cDt4fHx0LnB1c2goe3ZhbHVlOnAsdmlzaWJsZTohMCxrZXk6Ynx8aC51cmxLZXl9KX1u
JiZyLm1ldGhvZCgicmVwbGFjZSIpLHUucXBzLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9by5n
ZXQoZS5yb3V0ZSwiX3FwIikscj1lLnJvdXRlLmNvbnRyb2xsZXI7ci5fcXBEZWxlZ2F0ZT1vLmdl
dCh0LCJzdGF0ZXMuYWN0aXZlIil9KSxzLl9xcFVwZGF0ZXM9bnVsbH19fSxkZWFjdGl2YXRlOmss
YWN0aXZhdGU6ayx0cmFuc2l0aW9uVG86ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLnJvdXRlcjty
ZXR1cm4gci50cmFuc2l0aW9uVG8uYXBwbHkocixhcmd1bWVudHMpfSxpbnRlcm1lZGlhdGVUcmFu
c2l0aW9uVG86ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnJvdXRlcjtlLmludGVybWVkaWF0ZVRyYW5z
aXRpb25Uby5hcHBseShlLGFyZ3VtZW50cyl9LHJlZnJlc2g6ZnVuY3Rpb24oKXtyZXR1cm4gdGhp
cy5yb3V0ZXIucm91dGVyLnJlZnJlc2godGhpcyl9LHJlcGxhY2VXaXRoOmZ1bmN0aW9uKCl7dmFy
IGU9dGhpcy5yb3V0ZXI7cmV0dXJuIGUucmVwbGFjZVdpdGguYXBwbHkoZSxhcmd1bWVudHMpfSxz
ZW5kOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgscj1BcnJheShlKSxuPTA7
bjxlO24rKylyW25dPWFyZ3VtZW50c1tuXTtpZih0aGlzLnJvdXRlciYmdGhpcy5yb3V0ZXIucm91
dGVyfHwhdC5kZWZhdWx0LnRlc3Rpbmcpe3ZhciBpOyhpPXRoaXMucm91dGVyKS5zZW5kLmFwcGx5
KGkscil9ZWxzZXt2YXIgbz1yWzBdO3I9ai5jYWxsKHIsMSk7dmFyIGE9dGhpcy5hY3Rpb25zW29d
O2lmKGEpcmV0dXJuIHRoaXMuYWN0aW9uc1tvXS5hcHBseSh0aGlzLHIpfX0sc2V0dXA6ZnVuY3Rp
b24oZSx0KXt2YXIgcixuPXRoaXMuY29udHJvbGxlck5hbWV8fHRoaXMucm91dGVOYW1lLGk9dGhp
cy5jb250cm9sbGVyRm9yKG4sITApO2lmKHI9aT9pOnRoaXMuZ2VuZXJhdGVDb250cm9sbGVyKG4s
ZSksIXRoaXMuY29udHJvbGxlcil7dmFyIHM9by5nZXQodGhpcywiX3FwLnByb3BlcnR5TmFtZXMi
KTtQKHIscyksdGhpcy5jb250cm9sbGVyPXJ9dmFyIHU9by5nZXQodGhpcywiX3FwIiksbD11LnN0
YXRlcztpZih0KXtfLnN0YXNoUGFyYW1OYW1lcyh0aGlzLnJvdXRlcix0LnN0YXRlLmhhbmRsZXJJ
bmZvcyk7dmFyIGM9dC5wYXJhbXMsZj11LnByb3BlcnR5TmFtZXMsZD10aGlzLl9idWNrZXRDYWNo
ZTtmLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9dS5tYXBbZV07dC52YWx1ZXM9Yzt2YXIgbj1f
LmNhbGN1bGF0ZUNhY2hlS2V5KHQucHJlZml4LHQucGFydHMsdC52YWx1ZXMpO2lmKGQpe3ZhciBp
PWQubG9va3VwKG4sZSx0LnVuZGVjb3JhdGVkRGVmYXVsdFZhbHVlKTthLnNldChyLGUsaSl9fSl9
aWYoci5fcXBEZWxlZ2F0ZT1sLmFsbG93T3ZlcnJpZGVzLHQpe3ZhciBwPU4odGhpcyx0LnN0YXRl
KTtyLnNldFByb3BlcnRpZXMocCl9dGhpcy5zZXR1cENvbnRyb2xsZXIocixlLHQpLHRoaXMuX2Vu
dmlyb25tZW50JiYhdGhpcy5fZW52aXJvbm1lbnQub3B0aW9ucy5zaG91bGRSZW5kZXJ8fHRoaXMu
cmVuZGVyVGVtcGxhdGUocixlKX0sX3FwQ2hhbmdlZDpmdW5jdGlvbihlLHQscil7aWYocil7dmFy
IG49Xy5jYWxjdWxhdGVDYWNoZUtleShyLnByZWZpeHx8IiIsci5wYXJ0cyxyLnZhbHVlcyksaT10
aGlzLl9idWNrZXRDYWNoZTtpJiZpLnN0YXNoKG4sZSx0KX19LGJlZm9yZU1vZGVsOmssYWZ0ZXJN
b2RlbDprLHJlZGlyZWN0OmssY29udGV4dERpZENoYW5nZTpmdW5jdGlvbigpe3RoaXMuY3VycmVu
dE1vZGVsPXRoaXMuY29udGV4dH0sbW9kZWw6ZnVuY3Rpb24oZSx0KXt2YXIgcixuLGksYSxzPW8u
Z2V0KHRoaXMsIl9xcC5tYXAiKTtmb3IodmFyIHUgaW4gZSkicXVlcnlQYXJhbXMiPT09dXx8cyYm
dSBpbiBzfHwoKHI9dS5tYXRjaCgvXiguKilfaWQkLykpJiYobj1yWzFdLGE9ZVt1XSksaT0hMCk7
aWYoIW4mJmkpcmV0dXJuIHAuZGVmYXVsdChlKTtpZighbil7aWYodC5yZXNvbHZlSW5kZXg8MSly
ZXR1cm47dmFyIGw9dC5zdGF0ZS5oYW5kbGVySW5mb3NbdC5yZXNvbHZlSW5kZXgtMV0uY29udGV4
dDtyZXR1cm4gbH1yZXR1cm4gdGhpcy5maW5kTW9kZWwobixhKX0sZGVzZXJpYWxpemU6ZnVuY3Rp
b24oZSx0KXtyZXR1cm4gdGhpcy5tb2RlbCh0aGlzLnBhcmFtc0Zvcih0aGlzLnJvdXRlTmFtZSks
dCl9LGZpbmRNb2RlbDpmdW5jdGlvbigpe3ZhciBlPW8uZ2V0KHRoaXMsInN0b3JlIik7cmV0dXJu
IGUuZmluZC5hcHBseShlLGFyZ3VtZW50cyl9LHN0b3JlOmwuY29tcHV0ZWQoZnVuY3Rpb24oKXt2
YXIgZT13LmdldE93bmVyKHRoaXMpO3RoaXMucm91dGVOYW1lLG8uZ2V0KHRoaXMsInJvdXRlci5u
YW1lc3BhY2UiKTtyZXR1cm57ZmluZDpmdW5jdGlvbih0LHIpe3ZhciBuPWUuX2xvb2t1cEZhY3Rv
cnkoIm1vZGVsOiIrdCk7aWYobilyZXR1cm4gbi5maW5kKHIpfX19KSxzZXJpYWxpemU6ZnVuY3Rp
b24oZSx0KXtpZighKHQubGVuZ3RoPDEpJiZlKXt2YXIgcj10WzBdLG49e307cmV0dXJuIDE9PT10
Lmxlbmd0aD9yIGluIGU/bltyXT1vLmdldChlLHIpOi9faWQkLy50ZXN0KHIpJiYobltyXT1vLmdl
dChlLCJpZCIpKTpuPXMuZGVmYXVsdChlLHQpLG59fSxzZXR1cENvbnRyb2xsZXI6ZnVuY3Rpb24o
ZSx0LHIpe2UmJnZvaWQgMCE9PXQmJmEuc2V0KGUsIm1vZGVsIix0KX0sY29udHJvbGxlckZvcjpm
dW5jdGlvbihlLHQpe3ZhciByLG49dy5nZXRPd25lcih0aGlzKSxpPW4ubG9va3VwKCJyb3V0ZToi
K2UpO3JldHVybiBpJiZpLmNvbnRyb2xsZXJOYW1lJiYoZT1pLmNvbnRyb2xsZXJOYW1lKSxyPW4u
bG9va3VwKCJjb250cm9sbGVyOiIrZSl9LGdlbmVyYXRlQ29udHJvbGxlcjpmdW5jdGlvbihlLHQp
e3ZhciByPXcuZ2V0T3duZXIodGhpcyk7cmV0dXJuIHQ9dHx8dGhpcy5tb2RlbEZvcihlKSx5LmRl
ZmF1bHQocixlLHQpfSxtb2RlbEZvcjpmdW5jdGlvbihlKXt2YXIgdD13LmdldE93bmVyKHRoaXMp
Lmxvb2t1cCgicm91dGU6IitlKSxyPXRoaXMucm91dGVyP3RoaXMucm91dGVyLnJvdXRlci5hY3Rp
dmVUcmFuc2l0aW9uOm51bGw7aWYocil7dmFyIG49dCYmdC5yb3V0ZU5hbWV8fGU7aWYoci5yZXNv
bHZlZE1vZGVscy5oYXNPd25Qcm9wZXJ0eShuKSlyZXR1cm4gci5yZXNvbHZlZE1vZGVsc1tuXX1y
ZXR1cm4gdCYmdC5jdXJyZW50TW9kZWx9LHJlbmRlclRlbXBsYXRlOmZ1bmN0aW9uKGUsdCl7dGhp
cy5yZW5kZXIoKX0scmVuZGVyOmZ1bmN0aW9uKGUsdCl7dmFyIHIsbj0ic3RyaW5nIj09dHlwZW9m
IGUmJiEhZSxpPTA9PT1hcmd1bWVudHMubGVuZ3RofHx4LmRlZmF1bHQoYXJndW1lbnRzWzBdKTsi
b2JqZWN0IiE9dHlwZW9mIGV8fHQ/cj1lOihyPXRoaXMucm91dGVOYW1lLHQ9ZSk7dmFyIG89Tyh0
aGlzLG4saSxyLHQpO3RoaXMuY29ubmVjdGlvbnMucHVzaChvKSxkLmRlZmF1bHQub25jZSh0aGlz
LnJvdXRlciwiX3NldE91dGxldHMiKX0sZGlzY29ubmVjdE91dGxldDpmdW5jdGlvbihlKXt2YXIg
dCxyO2lmKGUmJiJzdHJpbmciIT10eXBlb2YgZSl7aWYodD1lLm91dGxldCxyPWUucGFyZW50Vmll
dyxlJiZPYmplY3Qua2V5cyhlKS5pbmRleE9mKCJvdXRsZXQiKSE9PS0xJiYidW5kZWZpbmVkIj09
dHlwZW9mIGUub3V0bGV0KXRocm93IG5ldyBpLmRlZmF1bHQoIllvdSBwYXNzZWQgdW5kZWZpbmVk
IGFzIHRoZSBvdXRsZXQgbmFtZS4iKX1lbHNlIHQ9ZTtyPXImJnIucmVwbGFjZSgvXC8vZywiLiIp
LHQ9dHx8Im1haW4iLHRoaXMuX2Rpc2Nvbm5lY3RPdXRsZXQodCxyKTtmb3IodmFyIG49MDtuPHRo
aXMucm91dGVyLnJvdXRlci5jdXJyZW50SGFuZGxlckluZm9zLmxlbmd0aDtuKyspdGhpcy5yb3V0
ZXIucm91dGVyLmN1cnJlbnRIYW5kbGVySW5mb3Nbbl0uaGFuZGxlci5fZGlzY29ubmVjdE91dGxl
dCh0LHIpfSxfZGlzY29ubmVjdE91dGxldDpmdW5jdGlvbihlLHQpe3ZhciByPUModGhpcyk7ciYm
dD09PXIucm91dGVOYW1lJiYodD12b2lkIDApO2Zvcih2YXIgbj0wO248dGhpcy5jb25uZWN0aW9u
cy5sZW5ndGg7bisrKXt2YXIgaT10aGlzLmNvbm5lY3Rpb25zW25dO2kub3V0bGV0PT09ZSYmaS5p
bnRvPT09dCYmKHRoaXMuY29ubmVjdGlvbnNbbl09e293bmVyOmkub3duZXIsaW50bzppLmludG8s
b3V0bGV0Omkub3V0bGV0LG5hbWU6aS5uYW1lLGNvbnRyb2xsZXI6dm9pZCAwLHRlbXBsYXRlOnZv
aWQgMCxWaWV3Q2xhc3M6dm9pZCAwfSxkLmRlZmF1bHQub25jZSh0aGlzLnJvdXRlciwiX3NldE91
dGxldHMiKSl9fSx3aWxsRGVzdHJveTpmdW5jdGlvbigpe3RoaXMudGVhcmRvd25WaWV3cygpfSx0
ZWFyZG93blZpZXdzOmZ1bmN0aW9uKCl7dGhpcy5jb25uZWN0aW9ucyYmdGhpcy5jb25uZWN0aW9u
cy5sZW5ndGg+MCYmKHRoaXMuY29ubmVjdGlvbnM9W10sZC5kZWZhdWx0Lm9uY2UodGhpcy5yb3V0
ZXIsIl9zZXRPdXRsZXRzIikpfX0pO2cuZGVwcmVjYXRlVW5kZXJzY29yZUFjdGlvbnMoUiksUi5y
ZW9wZW5DbGFzcyh7aXNSb3V0ZUZhY3Rvcnk6ITB9KSxlLmRlZmF1bHQ9Un0pO2UoImVtYmVyLXJv
dXRpbmcvc3lzdGVtL3JvdXRlciIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvbG9nZ2VyIiwiZW1i
ZXItbWV0YWwvZGVidWciLCJlbWJlci1tZXRhbC9lcnJvciIsImVtYmVyLW1ldGFsL3Byb3BlcnR5
X2dldCIsImVtYmVyLW1ldGFsL3Byb3BlcnR5X3NldCIsImVtYmVyLW1ldGFsL3Byb3BlcnRpZXMi
LCJlbWJlci1tZXRhbC9lbXB0eV9vYmplY3QiLCJlbWJlci1tZXRhbC9jb21wdXRlZCIsImVtYmVy
LW1ldGFsL2Fzc2lnbiIsImVtYmVyLW1ldGFsL3J1bl9sb29wIiwiZW1iZXItcnVudGltZS9zeXN0
ZW0vb2JqZWN0IiwiZW1iZXItcnVudGltZS9taXhpbnMvZXZlbnRlZCIsImVtYmVyLXJvdXRpbmcv
c3lzdGVtL2RzbCIsImVtYmVyLXJvdXRpbmcvbG9jYXRpb24vYXBpIiwiZW1iZXItcm91dGluZy91
dGlscyIsImVtYmVyLW1ldGFsL3V0aWxzIiwiZW1iZXItcm91dGluZy9zeXN0ZW0vcm91dGVyX3N0
YXRlIiwiY29udGFpbmVyL293bmVyIiwiZW1iZXItbWV0YWwvZGljdGlvbmFyeSIsInJvdXRlciIs
InJvdXRlci90cmFuc2l0aW9uIl0sZnVuY3Rpb24oZSx0LHIsbixpLG8sYSxzLHUsbCxjLGYsZCxw
LGgsbSx2LGIsZyx5LF8sdyl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHgoKXtyZXR1cm4gdGhpc31m
dW5jdGlvbiBrKGUsdCxyKXtmb3IodmFyIG4saSxvPXQuc3RhdGUuaGFuZGxlckluZm9zLGE9ITEs
cz1vLmxlbmd0aC0xO3M+PTA7LS1zKWlmKG49b1tzXSxpPW4uaGFuZGxlcixhKXtpZihyKGksb1tz
KzFdLmhhbmRsZXIpIT09ITApcmV0dXJuITF9ZWxzZSBlPT09aSYmKGE9ITApO3JldHVybiEwfWZ1
bmN0aW9uIEMoZSxyKXt2YXIgbixpPVtdO249ZSYmIm9iamVjdCI9PXR5cGVvZiBlJiYib2JqZWN0
Ij09dHlwZW9mIGUuZXJyb3JUaHJvd24/ZS5lcnJvclRocm93bjplLHImJmkucHVzaChyKSxuJiYo
bi5tZXNzYWdlJiZpLnB1c2gobi5tZXNzYWdlKSxuLnN0YWNrJiZpLnB1c2gobi5zdGFjayksInN0
cmluZyI9PXR5cGVvZiBuJiZpLnB1c2gobikpLHQuZGVmYXVsdC5lcnJvci5hcHBseSh0aGlzLGkp
fWZ1bmN0aW9uIEUoZSx0LHIpe3ZhciBuLGk9ZS5yb3V0ZXIsbz10LnJvdXRlTmFtZS5zcGxpdCgi
LiIpLnBvcCgpLGE9ImFwcGxpY2F0aW9uIj09PWUucm91dGVOYW1lPyIiOmUucm91dGVOYW1lKyIu
IjtyZXR1cm4gbj1hK28rIl8iK3IsTyhpLG4pP246KG49YStyLE8oaSxuKT9uOnZvaWQgMCl9ZnVu
Y3Rpb24gTyhlLHQpe3ZhciByPWcuZ2V0T3duZXIoZSk7cmV0dXJuIGUuaGFzUm91dGUodCkmJihy
Lmhhc1JlZ2lzdHJhdGlvbigidGVtcGxhdGU6Iit0KXx8ci5oYXNSZWdpc3RyYXRpb24oInJvdXRl
OiIrdCkpfWZ1bmN0aW9uIFQoZSx0LHIpe3ZhciBpPXIuc2hpZnQoKTtpZighZSl7aWYodClyZXR1
cm47dGhyb3cgbmV3IG4uZGVmYXVsdCgiQ2FuJ3QgdHJpZ2dlciBhY3Rpb24gJyIraSsiJyBiZWNh
dXNlIHlvdXIgYXBwIGhhc24ndCBmaW5pc2hlZCB0cmFuc2l0aW9uaW5nIGludG8gaXRzIGZpcnN0
IHJvdXRlLiBUbyB0cmlnZ2VyIGFuIGFjdGlvbiBvbiBkZXN0aW5hdGlvbiByb3V0ZXMgZHVyaW5n
IGEgdHJhbnNpdGlvbiwgeW91IGNhbiBjYWxsIGAuc2VuZCgpYCBvbiB0aGUgYFRyYW5zaXRpb25g
IG9iamVjdCBwYXNzZWQgdG8gdGhlIGBtb2RlbC9iZWZvcmVNb2RlbC9hZnRlck1vZGVsYCBob29r
cy4iKTsKK31mb3IodmFyIG8sYSxzPSExLHU9ZS5sZW5ndGgtMTt1Pj0wO3UtLSlpZihvPWVbdV0s
YT1vLmhhbmRsZXIsYS5hY3Rpb25zJiZhLmFjdGlvbnNbaV0pe2lmKGEuYWN0aW9uc1tpXS5hcHBs
eShhLHIpIT09ITApe2lmKCJlcnJvciI9PT1pKXt2YXIgbD12Lmd1aWRGb3IoclswXSk7YS5yb3V0
ZXIuX21hcmtFcnJvckFzSGFuZGxlZChsKX1yZXR1cm59cz0hMH1pZihIW2ldKXJldHVybiB2b2lk
IEhbaV0uYXBwbHkobnVsbCxyKTtpZighcyYmIXQpdGhyb3cgbmV3IG4uZGVmYXVsdCgiTm90aGlu
ZyBoYW5kbGVkIHRoZSBhY3Rpb24gJyIraSsiJy4gSWYgeW91IGRpZCBoYW5kbGUgdGhlIGFjdGlv
biwgdGhpcyBlcnJvciBjYW4gYmUgY2F1c2VkIGJ5IHJldHVybmluZyB0cnVlIGZyb20gYW4gYWN0
aW9uIGhhbmRsZXIgaW4gYSBjb250cm9sbGVyLCBjYXVzaW5nIHRoZSBhY3Rpb24gdG8gYnViYmxl
LiIpfWZ1bmN0aW9uIE4oZSx0LHIpe2Zvcih2YXIgbj1lLnJvdXRlcixpPW4uYXBwbHlJbnRlbnQo
dCxyKSxvPWkuaGFuZGxlckluZm9zLGE9aS5wYXJhbXMscz0wLHU9by5sZW5ndGg7czx1Oysrcyl7
dmFyIGw9b1tzXTtsLmlzUmVzb2x2ZWR8fChsPWwuYmVjb21lUmVzb2x2ZWQobnVsbCxsLmNvbnRl
eHQpKSxhW2wubmFtZV09bC5wYXJhbXN9cmV0dXJuIGl9ZnVuY3Rpb24gUyhlKXt2YXIgdD1lLnJv
dXRlci5jdXJyZW50SGFuZGxlckluZm9zLHI9Ri5fcm91dGVQYXRoKHQpLG49dFt0Lmxlbmd0aC0x
XS5uYW1lO28uc2V0KGUsImN1cnJlbnRQYXRoIixyKSxvLnNldChlLCJjdXJyZW50Um91dGVOYW1l
IixuKTt2YXIgaT1nLmdldE93bmVyKGUpLmxvb2t1cCgiY29udHJvbGxlcjphcHBsaWNhdGlvbiIp
O2kmJigiY3VycmVudFBhdGgiaW4gaXx8YS5kZWZpbmVQcm9wZXJ0eShpLCJjdXJyZW50UGF0aCIp
LG8uc2V0KGksImN1cnJlbnRQYXRoIixyKSwiY3VycmVudFJvdXRlTmFtZSJpbiBpfHxhLmRlZmlu
ZVByb3BlcnR5KGksImN1cnJlbnRSb3V0ZU5hbWUiKSxvLnNldChpLCJjdXJyZW50Um91dGVOYW1l
IixuKSl9ZnVuY3Rpb24gQShlLHQpe3ZhciByPWIuZGVmYXVsdC5jcmVhdGUoe2VtYmVyUm91dGVy
OnQscm91dGVySnM6dC5yb3V0ZXIscm91dGVySnNTdGF0ZTplLnN0YXRlfSk7dC5jdXJyZW50U3Rh
dGV8fHQuc2V0KCJjdXJyZW50U3RhdGUiLHIpLHQuc2V0KCJ0YXJnZXRTdGF0ZSIsciksZS5wcm9t
aXNlPWUuY2F0Y2goZnVuY3Rpb24oZSl7dmFyIHI9di5ndWlkRm9yKGUpO2lmKCF0Ll9pc0Vycm9y
SGFuZGxlZChyKSl0aHJvdyBlO3QuX2NsZWFySGFuZGxlZEVycm9yKHIpfSl9ZnVuY3Rpb24gUChl
KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGUmJigiIj09PWV8fCIvIj09PWUuY2hhckF0KDApKX1m
dW5jdGlvbiBqKGUsdCxyLG4pe3ZhciBpPWUuX3F1ZXJ5UGFyYW1zRm9yKHQpO2Zvcih2YXIgbyBp
biByKWlmKHIuaGFzT3duUHJvcGVydHkobykpe3ZhciBhPXJbb10scz1pLm1hcFtvXTtzJiZuKG8s
YSxzKX19ZnVuY3Rpb24gUihlLHQpe2lmKGUpZm9yKHZhciByPVtlXTtyLmxlbmd0aD4wOyl7dmFy
IG49ci5zaGlmdCgpO2lmKG4ucmVuZGVyLm5hbWU9PT10KXJldHVybiBuO3ZhciBpPW4ub3V0bGV0
cztmb3IodmFyIG8gaW4gaSlyLnB1c2goaVtvXSl9fWZ1bmN0aW9uIEwoZSx0LHIpe3ZhciBuLGk9
e3JlbmRlcjpyLG91dGxldHM6bmV3IHMuZGVmYXVsdH07cmV0dXJuIG49ci5pbnRvP1IoZSxyLmlu
dG8pOnQsbj9vLnNldChuLm91dGxldHMsci5vdXRsZXQsaSk6ci5pbnRvP0QoZSxyLmludG8saSk6
ZT1pLHtsaXZlUm91dGVzOmUsb3duU3RhdGU6aX19ZnVuY3Rpb24gRChlLHQscil7ZS5vdXRsZXRz
Ll9fZW1iZXJfb3JwaGFuc19ffHwoZS5vdXRsZXRzLl9fZW1iZXJfb3JwaGFuc19fPXtyZW5kZXI6
e25hbWU6Il9fZW1iZXJfb3JwaGFuc19fIn0sb3V0bGV0czpuZXcgcy5kZWZhdWx0fSksZS5vdXRs
ZXRzLl9fZW1iZXJfb3JwaGFuc19fLm91dGxldHNbdF09cixjLmRlZmF1bHQuc2NoZWR1bGUoImFm
dGVyUmVuZGVyIixmdW5jdGlvbigpe30pfWZ1bmN0aW9uIE0oZSx0LHIpe3ZhciBuPVIoZSxyLnJv
dXRlTmFtZSk7cmV0dXJuIG4/bjoodC5vdXRsZXRzLm1haW49e3JlbmRlcjp7bmFtZTpyLnJvdXRl
TmFtZSxvdXRsZXQ6Im1haW4ifSxvdXRsZXRzOnt9fSx0KX1lLnRyaWdnZXJFdmVudD1UO3ZhciBJ
PVtdLnNsaWNlLEY9Zi5kZWZhdWx0LmV4dGVuZChkLmRlZmF1bHQse2xvY2F0aW9uOiJoYXNoIixy
b290VVJMOiIvIixfaW5pdFJvdXRlckpzOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5yb3V0ZXI9bmV3
IF8uZGVmYXVsdDtlLnRyaWdnZXJFdmVudD1ULGUuX3RyaWdnZXJXaWxsQ2hhbmdlQ29udGV4dD14
LGUuX3RyaWdnZXJXaWxsTGVhdmU9eDt2YXIgcj10aGlzLmNvbnN0cnVjdG9yLmRzbENhbGxiYWNr
c3x8W3hdLG49dGhpcy5fYnVpbGREU0woKTtuLnJvdXRlKCJhcHBsaWNhdGlvbiIse3BhdGg6Ii8i
LHJlc2V0TmFtZXNwYWNlOiEwLG92ZXJyaWRlTmFtZUFzc2VydGlvbjohMH0sZnVuY3Rpb24oKXtm
b3IodmFyIGU9MDtlPHIubGVuZ3RoO2UrKylyW2VdLmNhbGwodGhpcyl9KSxpLmdldCh0aGlzLCJu
YW1lc3BhY2UuTE9HX1RSQU5TSVRJT05TX0lOVEVSTkFMIikmJihlLmxvZz10LmRlZmF1bHQuZGVi
dWcpLGUubWFwKG4uZ2VuZXJhdGUoKSl9LF9idWlsZERTTDpmdW5jdGlvbigpe3ZhciBlPXRoaXMu
X2hhc01vZHVsZUJhc2VkUmVzb2x2ZXIoKTtyZXR1cm4gbmV3IHAuZGVmYXVsdChudWxsLHtlbmFi
bGVMb2FkaW5nU3Vic3RhdGVzOiEhZX0pfSxpbml0OmZ1bmN0aW9uKCl7dGhpcy5fc3VwZXIuYXBw
bHkodGhpcyxhcmd1bWVudHMpLHRoaXMuX2FjdGl2ZVZpZXdzPXt9LHRoaXMuX3FwQ2FjaGU9bmV3
IHMuZGVmYXVsdCx0aGlzLl9yZXNldFF1ZXVlZFF1ZXJ5UGFyYW1ldGVyQ2hhbmdlcygpLHRoaXMu
X2hhbmRsZWRFcnJvcnM9eS5kZWZhdWx0KG51bGwpfSxfcmVzZXRRdWV1ZWRRdWVyeVBhcmFtZXRl
ckNoYW5nZXM6ZnVuY3Rpb24oKXt0aGlzLl9xdWV1ZWRRUENoYW5nZXM9e319LHVybDp1LmNvbXB1
dGVkKGZ1bmN0aW9uKCl7cmV0dXJuIGkuZ2V0KHRoaXMsImxvY2F0aW9uIikuZ2V0VVJMKCl9KSxf
aGFzTW9kdWxlQmFzZWRSZXNvbHZlcjpmdW5jdGlvbigpe3ZhciBlPWcuZ2V0T3duZXIodGhpcyk7
aWYoIWUpcmV0dXJuITE7dmFyIHQ9ZS5hcHBsaWNhdGlvbiYmZS5hcHBsaWNhdGlvbi5fX3JlZ2lz
dHJ5X18mJmUuYXBwbGljYXRpb24uX19yZWdpc3RyeV9fLnJlc29sdmVyO3JldHVybiEhdCYmISF0
Lm1vZHVsZUJhc2VkUmVzb2x2ZXJ9LHN0YXJ0Um91dGluZzpmdW5jdGlvbigpe3ZhciBlPWkuZ2V0
KHRoaXMsImluaXRpYWxVUkwiKTtpZih0aGlzLnNldHVwUm91dGVyKCkpeyJ1bmRlZmluZWQiPT10
eXBlb2YgZSYmKGU9aS5nZXQodGhpcywibG9jYXRpb24iKS5nZXRVUkwoKSk7dmFyIHQ9dGhpcy5o
YW5kbGVVUkwoZSk7aWYodCYmdC5lcnJvcil0aHJvdyB0LmVycm9yfX0sc2V0dXBSb3V0ZXI6ZnVu
Y3Rpb24oKXt2YXIgZT10aGlzO3RoaXMuX2luaXRSb3V0ZXJKcygpLHRoaXMuX3NldHVwTG9jYXRp
b24oKTt2YXIgdD10aGlzLnJvdXRlcixyPWkuZ2V0KHRoaXMsImxvY2F0aW9uIik7cmV0dXJuIWku
Z2V0KHIsImNhbmNlbFJvdXRlclNldHVwIikmJih0aGlzLl9zZXR1cFJvdXRlcih0LHIpLHIub25V
cGRhdGVVUkwoZnVuY3Rpb24odCl7ZS5oYW5kbGVVUkwodCl9KSwhMCl9LGRpZFRyYW5zaXRpb246
ZnVuY3Rpb24oZSl7Uyh0aGlzKSx0aGlzLl9jYW5jZWxTbG93VHJhbnNpdGlvblRpbWVyKCksdGhp
cy5ub3RpZnlQcm9wZXJ0eUNoYW5nZSgidXJsIiksdGhpcy5zZXQoImN1cnJlbnRTdGF0ZSIsdGhp
cy50YXJnZXRTdGF0ZSksYy5kZWZhdWx0Lm9uY2UodGhpcyx0aGlzLnRyaWdnZXIsImRpZFRyYW5z
aXRpb24iKSxpLmdldCh0aGlzLCJuYW1lc3BhY2UiKS5MT0dfVFJBTlNJVElPTlMmJnQuZGVmYXVs
dC5sb2coIlRyYW5zaXRpb25lZCBpbnRvICciK0YuX3JvdXRlUGF0aChlKSsiJyIpfSxfc2V0T3V0
bGV0czpmdW5jdGlvbigpe3ZhciBlLHQscj10aGlzLnJvdXRlci5jdXJyZW50SGFuZGxlckluZm9z
LG49bnVsbDtpZihyKXtmb3IodmFyIGk9MDtpPHIubGVuZ3RoO2krKyl7ZT1yW2ldLmhhbmRsZXI7
Zm9yKHZhciBvLGE9ZS5jb25uZWN0aW9ucyxzPTA7czxhLmxlbmd0aDtzKyspe3ZhciB1PUwobix0
LGFbc10pO249dS5saXZlUm91dGVzLHUub3duU3RhdGUucmVuZGVyLm5hbWUhPT1lLnJvdXRlTmFt
ZSYmIm1haW4iIT09dS5vd25TdGF0ZS5yZW5kZXIub3V0bGV0fHwobz11Lm93blN0YXRlKX0wPT09
YS5sZW5ndGgmJihvPU0obix0LGUpKSx0PW99aWYodGhpcy5fdG9wbGV2ZWxWaWV3KXRoaXMuX3Rv
cGxldmVsVmlldy5zZXRPdXRsZXRTdGF0ZShuKTtlbHNle3ZhciBsPWcuZ2V0T3duZXIodGhpcyks
Yz1sLl9sb29rdXBGYWN0b3J5KCJ2aWV3Oi1vdXRsZXQiKTt0aGlzLl90b3BsZXZlbFZpZXc9Yy5j
cmVhdGUoKSx0aGlzLl90b3BsZXZlbFZpZXcuc2V0T3V0bGV0U3RhdGUobik7dmFyIGY9bC5sb29r
dXAoIi1hcHBsaWNhdGlvbi1pbnN0YW5jZTptYWluIik7Zi5kaWRDcmVhdGVSb290Vmlldyh0aGlz
Ll90b3BsZXZlbFZpZXcpfX19LHdpbGxUcmFuc2l0aW9uOmZ1bmN0aW9uKGUscixuKXtjLmRlZmF1
bHQub25jZSh0aGlzLHRoaXMudHJpZ2dlciwid2lsbFRyYW5zaXRpb24iLG4pLGkuZ2V0KHRoaXMs
Im5hbWVzcGFjZSIpLkxPR19UUkFOU0lUSU9OUyYmdC5kZWZhdWx0LmxvZygiUHJlcGFyaW5nIHRv
IHRyYW5zaXRpb24gZnJvbSAnIitGLl9yb3V0ZVBhdGgoZSkrIicgdG8gJyIrRi5fcm91dGVQYXRo
KHIpKyInIil9LGhhbmRsZVVSTDpmdW5jdGlvbihlKXtyZXR1cm4gZT1lLnNwbGl0KC8jKC4rKT8v
KVswXSx0aGlzLl9kb1VSTFRyYW5zaXRpb24oImhhbmRsZVVSTCIsZSl9LF9kb1VSTFRyYW5zaXRp
b246ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLnJvdXRlcltlXSh0fHwiLyIpO3JldHVybiBBKHIs
dGhpcykscn0sdHJhbnNpdGlvblRvOmZ1bmN0aW9uKCl7Zm9yKHZhciBlLHQ9YXJndW1lbnRzLmxl
bmd0aCxyPUFycmF5KHQpLG49MDtuPHQ7bisrKXJbbl09YXJndW1lbnRzW25dO2lmKFAoclswXSkp
cmV0dXJuIHRoaXMuX2RvVVJMVHJhbnNpdGlvbigidHJhbnNpdGlvblRvIixyWzBdKTt2YXIgaT1y
W3IubGVuZ3RoLTFdO2U9aSYmaS5oYXNPd25Qcm9wZXJ0eSgicXVlcnlQYXJhbXMiKT9yLnBvcCgp
LnF1ZXJ5UGFyYW1zOnt9O3ZhciBvPXIuc2hpZnQoKTtyZXR1cm4gdGhpcy5fZG9UcmFuc2l0aW9u
KG8scixlKX0saW50ZXJtZWRpYXRlVHJhbnNpdGlvblRvOmZ1bmN0aW9uKCl7dmFyIGU7KGU9dGhp
cy5yb3V0ZXIpLmludGVybWVkaWF0ZVRyYW5zaXRpb25Uby5hcHBseShlLGFyZ3VtZW50cyksUyh0
aGlzKTt2YXIgcj10aGlzLnJvdXRlci5jdXJyZW50SGFuZGxlckluZm9zO2kuZ2V0KHRoaXMsIm5h
bWVzcGFjZSIpLkxPR19UUkFOU0lUSU9OUyYmdC5kZWZhdWx0LmxvZygiSW50ZXJtZWRpYXRlLXRy
YW5zaXRpb25lZCBpbnRvICciK0YuX3JvdXRlUGF0aChyKSsiJyIpfSxyZXBsYWNlV2l0aDpmdW5j
dGlvbigpe3JldHVybiB0aGlzLnRyYW5zaXRpb25Uby5hcHBseSh0aGlzLGFyZ3VtZW50cykubWV0
aG9kKCJyZXBsYWNlIil9LGdlbmVyYXRlOmZ1bmN0aW9uKCl7dmFyIGUsdD0oZT10aGlzLnJvdXRl
cikuZ2VuZXJhdGUuYXBwbHkoZSxhcmd1bWVudHMpO3JldHVybiB0aGlzLmxvY2F0aW9uLmZvcm1h
dFVSTCh0KX0saXNBY3RpdmU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5yb3V0ZXI7cmV0dXJuIHQu
aXNBY3RpdmUuYXBwbHkodCxhcmd1bWVudHMpfSxpc0FjdGl2ZUludGVudDpmdW5jdGlvbihlLHQs
cil7cmV0dXJuIHRoaXMuY3VycmVudFN0YXRlLmlzQWN0aXZlSW50ZW50KGUsdCxyKX0sc2VuZDpm
dW5jdGlvbihlLHQpe3ZhciByOyhyPXRoaXMucm91dGVyKS50cmlnZ2VyLmFwcGx5KHIsYXJndW1l
bnRzKX0saGFzUm91dGU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucm91dGVyLmhhc1JvdXRlKGUp
fSxyZXNldDpmdW5jdGlvbigpe3RoaXMucm91dGVyJiZ0aGlzLnJvdXRlci5yZXNldCgpfSx3aWxs
RGVzdHJveTpmdW5jdGlvbigpe3RoaXMuX3RvcGxldmVsVmlldyYmKHRoaXMuX3RvcGxldmVsVmll
dy5kZXN0cm95KCksdGhpcy5fdG9wbGV2ZWxWaWV3PW51bGwpLHRoaXMuX3N1cGVyLmFwcGx5KHRo
aXMsYXJndW1lbnRzKSx0aGlzLnJlc2V0KCl9LF9sb29rdXBBY3RpdmVDb21wb25lbnROb2RlOmZ1
bmN0aW9uKGUpe3JldHVybiB0aGlzLl9hY3RpdmVWaWV3c1tlXX0sX2FjdGl2ZVFQQ2hhbmdlZDpm
dW5jdGlvbihlLHQpe3RoaXMuX3F1ZXVlZFFQQ2hhbmdlc1tlXT10LGMuZGVmYXVsdC5vbmNlKHRo
aXMsdGhpcy5fZmlyZVF1ZXJ5UGFyYW1UcmFuc2l0aW9uKX0sX3VwZGF0aW5nUVBDaGFuZ2VkOmZ1
bmN0aW9uKGUpe3RoaXMuX3FwVXBkYXRlc3x8KHRoaXMuX3FwVXBkYXRlcz17fSksdGhpcy5fcXBV
cGRhdGVzW2VdPSEwfSxfZmlyZVF1ZXJ5UGFyYW1UcmFuc2l0aW9uOmZ1bmN0aW9uKCl7dGhpcy50
cmFuc2l0aW9uVG8oe3F1ZXJ5UGFyYW1zOnRoaXMuX3F1ZXVlZFFQQ2hhbmdlc30pLHRoaXMuX3Jl
c2V0UXVldWVkUXVlcnlQYXJhbWV0ZXJDaGFuZ2VzKCl9LF9jb25uZWN0QWN0aXZlQ29tcG9uZW50
Tm9kZTpmdW5jdGlvbihlLHQpe2Z1bmN0aW9uIHIoKXtkZWxldGUgbltlXX12YXIgbj10aGlzLl9h
Y3RpdmVWaWV3czt0aGlzLl9hY3RpdmVWaWV3c1tlXT10LHQucmVuZGVyTm9kZS5hZGREZXN0cnVj
dGlvbih7ZGVzdHJveTpyfSl9LF9zZXR1cExvY2F0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9aS5nZXQo
dGhpcywibG9jYXRpb24iKSx0PWkuZ2V0KHRoaXMsInJvb3RVUkwiKSxyPWcuZ2V0T3duZXIodGhp
cyk7aWYoInN0cmluZyI9PXR5cGVvZiBlJiZyKXt2YXIgbj1yLmxvb2t1cCgibG9jYXRpb246Iitl
KTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIG4pZT1vLnNldCh0aGlzLCJsb2NhdGlvbiIsbik7ZWxz
ZXt2YXIgYT17aW1wbGVtZW50YXRpb246ZX07ZT1vLnNldCh0aGlzLCJsb2NhdGlvbiIsaC5kZWZh
dWx0LmNyZWF0ZShhKSl9fW51bGwhPT1lJiYib2JqZWN0Ij09dHlwZW9mIGUmJih0JiZvLnNldChl
LCJyb290VVJMIix0KSwiZnVuY3Rpb24iPT10eXBlb2YgZS5kZXRlY3QmJmUuZGV0ZWN0KCksImZ1
bmN0aW9uIj09dHlwZW9mIGUuaW5pdFN0YXRlJiZlLmluaXRTdGF0ZSgpKX0sX2dldEhhbmRsZXJG
dW5jdGlvbjpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1uZXcgcy5kZWZhdWx0LHI9Zy5nZXRPd25l
cih0aGlzKSxuPXIuX2xvb2t1cEZhY3RvcnkoInJvdXRlOmJhc2ljIik7cmV0dXJuIGZ1bmN0aW9u
KG8pe3ZhciBhPSJyb3V0ZToiK28scz1yLmxvb2t1cChhKTtyZXR1cm4gdFtvXT9zOih0W29dPSEw
LHN8fChyLnJlZ2lzdGVyKGEsbi5leHRlbmQoKSkscz1yLmxvb2t1cChhKSxpLmdldChlLCJuYW1l
c3BhY2UuTE9HX0FDVElWRV9HRU5FUkFUSU9OIikpLHMucm91dGVOYW1lPW8scyl9fSxfc2V0dXBS
b3V0ZXI6ZnVuY3Rpb24oZSx0KXt2YXIgcixuPXRoaXM7ZS5nZXRIYW5kbGVyPXRoaXMuX2dldEhh
bmRsZXJGdW5jdGlvbigpO3ZhciBpPWZ1bmN0aW9uKCl7dC5zZXRVUkwocil9O2lmKGUudXBkYXRl
VVJMPWZ1bmN0aW9uKGUpe3I9ZSxjLmRlZmF1bHQub25jZShpKX0sdC5yZXBsYWNlVVJMKXt2YXIg
bz1mdW5jdGlvbigpe3QucmVwbGFjZVVSTChyKX07ZS5yZXBsYWNlVVJMPWZ1bmN0aW9uKGUpe3I9
ZSxjLmRlZmF1bHQub25jZShvKX19ZS5kaWRUcmFuc2l0aW9uPWZ1bmN0aW9uKGUpe24uZGlkVHJh
bnNpdGlvbihlKX0sZS53aWxsVHJhbnNpdGlvbj1mdW5jdGlvbihlLHQscil7bi53aWxsVHJhbnNp
dGlvbihlLHQscil9fSxfc2VyaWFsaXplUXVlcnlQYXJhbXM6ZnVuY3Rpb24oZSx0KXt2YXIgcj17
fTtqKHRoaXMsZSx0LGZ1bmN0aW9uKGUsbixpKXt2YXIgbz1pLnVybEtleTtyW29dfHwocltvXT1b
XSkscltvXS5wdXNoKHtxcDppLHZhbHVlOm59KSxkZWxldGUgdFtlXX0pO2Zvcih2YXIgbiBpbiBy
KXt2YXIgaT1yW25dLG89aVswXS5xcDt0W28udXJsS2V5XT1vLnJvdXRlLnNlcmlhbGl6ZVF1ZXJ5
UGFyYW0oaVswXS52YWx1ZSxvLnVybEtleSxvLnR5cGUpfX0sX2Rlc2VyaWFsaXplUXVlcnlQYXJh
bXM6ZnVuY3Rpb24oZSx0KXtqKHRoaXMsZSx0LGZ1bmN0aW9uKGUscixuKXtkZWxldGUgdFtlXSx0
W24ucHJvcF09bi5yb3V0ZS5kZXNlcmlhbGl6ZVF1ZXJ5UGFyYW0ocixuLnVybEtleSxuLnR5cGUp
fSl9LF9wcnVuZURlZmF1bHRRdWVyeVBhcmFtVmFsdWVzOmZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhp
cy5fcXVlcnlQYXJhbXNGb3IoZSk7Zm9yKHZhciBuIGluIHQpe3ZhciBpPXIubWFwW25dO2kmJmku
c2VyaWFsaXplZERlZmF1bHRWYWx1ZT09PXRbbl0mJmRlbGV0ZSB0W25dfX0sX2RvVHJhbnNpdGlv
bjpmdW5jdGlvbihlLHQscil7dmFyIG49ZXx8bS5nZXRBY3RpdmVUYXJnZXROYW1lKHRoaXMucm91
dGVyKSxpPXt9O3RoaXMucm91dGVyLmFjdGl2ZVRyYW5zaXRpb24mJmwuZGVmYXVsdChpLHRoaXMu
cm91dGVyLmFjdGl2ZVRyYW5zaXRpb24ucXVlcnlQYXJhbXMpLGwuZGVmYXVsdChpLHIpLHRoaXMu
X3ByZXBhcmVRdWVyeVBhcmFtcyhuLHQsaSk7dmFyIG89bS5yb3V0ZUFyZ3Mobix0LGkpLGE9dGhp
cy5yb3V0ZXIudHJhbnNpdGlvblRvLmFwcGx5KHRoaXMucm91dGVyLG8pO3JldHVybiBBKGEsdGhp
cyksYX0sX3ByZXBhcmVRdWVyeVBhcmFtczpmdW5jdGlvbihlLHQscil7dGhpcy5faHlkcmF0ZVVu
c3VwcGxpZWRRdWVyeVBhcmFtcyhlLHQsciksdGhpcy5fc2VyaWFsaXplUXVlcnlQYXJhbXMoZSxy
KSx0aGlzLl9wcnVuZURlZmF1bHRRdWVyeVBhcmFtVmFsdWVzKGUscil9LF9xdWVyeVBhcmFtc0Zv
cjpmdW5jdGlvbihlKXtpZih0aGlzLl9xcENhY2hlW2VdKXJldHVybiB0aGlzLl9xcENhY2hlW2Vd
O3ZhciB0PXt9LHI9W107dGhpcy5fcXBDYWNoZVtlXT17bWFwOnQscXBzOnJ9O2Zvcih2YXIgbj10
aGlzLnJvdXRlcixvPW4ucmVjb2duaXplci5oYW5kbGVyc0ZvcihlKSxhPTAscz1vLmxlbmd0aDth
PHM7KythKXt2YXIgdT1vW2FdLGM9bi5nZXRIYW5kbGVyKHUuaGFuZGxlciksZj1pLmdldChjLCJf
cXAiKTtmJiYobC5kZWZhdWx0KHQsZi5tYXApLHIucHVzaC5hcHBseShyLGYucXBzKSl9cmV0dXJu
e3FwczpyLG1hcDp0fX0sX2h5ZHJhdGVVbnN1cHBsaWVkUXVlcnlQYXJhbXM6ZnVuY3Rpb24oZSx0
LHIpe3ZhciBuPU4odGhpcyxlLHQpLG89bi5oYW5kbGVySW5mb3MsYT10aGlzLl9idWNrZXRDYWNo
ZTttLnN0YXNoUGFyYW1OYW1lcyh0aGlzLG8pO2Zvcih2YXIgcz0wLHU9by5sZW5ndGg7czx1Oysr
cylmb3IodmFyIGw9b1tzXS5oYW5kbGVyLGM9aS5nZXQobCwiX3FwIiksZj0wLGQ9Yy5xcHMubGVu
Z3RoO2Y8ZDsrK2Ype3ZhciBwPWMucXBzW2ZdLGg9cC5wcm9wIGluIHImJnAucHJvcHx8cC5zY29w
ZWRQcm9wZXJ0eU5hbWUgaW4gciYmcC5zY29wZWRQcm9wZXJ0eU5hbWU7aWYoaCloIT09cC5zY29w
ZWRQcm9wZXJ0eU5hbWUmJihyW3Auc2NvcGVkUHJvcGVydHlOYW1lXT1yW2hdLGRlbGV0ZSByW2hd
KTtlbHNle3ZhciB2PW0uY2FsY3VsYXRlQ2FjaGVLZXkocC5jdHJsLHAucGFydHMsbi5wYXJhbXMp
O3JbcC5zY29wZWRQcm9wZXJ0eU5hbWVdPWEubG9va3VwKHYscC5wcm9wLHAuZGVmYXVsdFZhbHVl
KX19fSxfc2NoZWR1bGVMb2FkaW5nRXZlbnQ6ZnVuY3Rpb24oZSx0KXt0aGlzLl9jYW5jZWxTbG93
VHJhbnNpdGlvblRpbWVyKCksdGhpcy5fc2xvd1RyYW5zaXRpb25UaW1lcj1jLmRlZmF1bHQuc2No
ZWR1bGVPbmNlKCJyb3V0ZXJUcmFuc2l0aW9ucyIsdGhpcywiX2hhbmRsZVNsb3dUcmFuc2l0aW9u
IixlLHQpfSxjdXJyZW50U3RhdGU6bnVsbCx0YXJnZXRTdGF0ZTpudWxsLF9oYW5kbGVTbG93VHJh
bnNpdGlvbjpmdW5jdGlvbihlLHQpe3RoaXMucm91dGVyLmFjdGl2ZVRyYW5zaXRpb24mJih0aGlz
LnNldCgidGFyZ2V0U3RhdGUiLGIuZGVmYXVsdC5jcmVhdGUoe2VtYmVyUm91dGVyOnRoaXMscm91
dGVySnM6dGhpcy5yb3V0ZXIscm91dGVySnNTdGF0ZTp0aGlzLnJvdXRlci5hY3RpdmVUcmFuc2l0
aW9uLnN0YXRlfSkpLGUudHJpZ2dlcighMCwibG9hZGluZyIsZSx0KSl9LF9jYW5jZWxTbG93VHJh
bnNpdGlvblRpbWVyOmZ1bmN0aW9uKCl7dGhpcy5fc2xvd1RyYW5zaXRpb25UaW1lciYmYy5kZWZh
dWx0LmNhbmNlbCh0aGlzLl9zbG93VHJhbnNpdGlvblRpbWVyKSx0aGlzLl9zbG93VHJhbnNpdGlv
blRpbWVyPW51bGx9LF9tYXJrRXJyb3JBc0hhbmRsZWQ6ZnVuY3Rpb24oZSl7dGhpcy5faGFuZGxl
ZEVycm9yc1tlXT0hMH0sX2lzRXJyb3JIYW5kbGVkOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9o
YW5kbGVkRXJyb3JzW2VdfSxfY2xlYXJIYW5kbGVkRXJyb3I6ZnVuY3Rpb24oZSl7ZGVsZXRlIHRo
aXMuX2hhbmRsZWRFcnJvcnNbZV19fSksSD17d2lsbFJlc29sdmVNb2RlbDpmdW5jdGlvbihlLHQp
e3Qucm91dGVyLl9zY2hlZHVsZUxvYWRpbmdFdmVudChlLHQpfSxlcnJvcjpmdW5jdGlvbihlLHQs
cil7dmFyIG49ci5yb3V0ZXIsaT1rKHIsdCxmdW5jdGlvbih0LHIpe3ZhciBpPUUodCxyLCJlcnJv
ciIpO3JldHVybiFpfHx2b2lkIG4uaW50ZXJtZWRpYXRlVHJhbnNpdGlvblRvKGksZSl9KTtyZXR1
cm4gaSYmTyhyLnJvdXRlciwiYXBwbGljYXRpb25fZXJyb3IiKT92b2lkIG4uaW50ZXJtZWRpYXRl
VHJhbnNpdGlvblRvKCJhcHBsaWNhdGlvbl9lcnJvciIsZSk6dm9pZCBDKGUsIkVycm9yIHdoaWxl
IHByb2Nlc3Npbmcgcm91dGU6ICIrdC50YXJnZXROYW1lKX0sbG9hZGluZzpmdW5jdGlvbihlLHQp
e3ZhciByPXQucm91dGVyLG49ayh0LGUsZnVuY3Rpb24odCxuKXt2YXIgaT1FKHQsbiwibG9hZGlu
ZyIpO3JldHVybiBpP3ZvaWQgci5pbnRlcm1lZGlhdGVUcmFuc2l0aW9uVG8oaSk6ZS5waXZvdEhh
bmRsZXIhPT10fHx2b2lkIDB9KTtpZihuJiZPKHQucm91dGVyLCJhcHBsaWNhdGlvbl9sb2FkaW5n
IikpcmV0dXJuIHZvaWQgci5pbnRlcm1lZGlhdGVUcmFuc2l0aW9uVG8oImFwcGxpY2F0aW9uX2xv
YWRpbmciKX19O0YucmVvcGVuQ2xhc3Moe3JvdXRlcjpudWxsLG1hcDpmdW5jdGlvbihlKXtyZXR1
cm4gdGhpcy5kc2xDYWxsYmFja3N8fCh0aGlzLmRzbENhbGxiYWNrcz1bXSx0aGlzLnJlb3BlbkNs
YXNzKHtkc2xDYWxsYmFja3M6dGhpcy5kc2xDYWxsYmFja3N9KSksdGhpcy5kc2xDYWxsYmFja3Mu
cHVzaChlKSx0aGlzfSxfcm91dGVQYXRoOmZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSx0KXtmb3Io
dmFyIHI9MCxuPWUubGVuZ3RoO3I8bjsrK3IpaWYoZVtyXSE9PXRbcl0pcmV0dXJuITE7cmV0dXJu
ITB9Zm9yKHZhciByLG4saSxvPVtdLGE9MSxzPWUubGVuZ3RoO2E8czthKyspe2ZvcihyPWVbYV0u
bmFtZSxuPXIuc3BsaXQoIi4iKSxpPUkuY2FsbChvKTtpLmxlbmd0aCYmIXQoaSxuKTspaS5zaGlm
dCgpO28ucHVzaC5hcHBseShvLG4uc2xpY2UoaS5sZW5ndGgpKX1yZXR1cm4gby5qb2luKCIuIil9
fSksZS5kZWZhdWx0PUZ9KSxlKCJlbWJlci1yb3V0aW5nL3N5c3RlbS9yb3V0ZXJfc3RhdGUiLFsi
ZXhwb3J0cyIsImVtYmVyLW1ldGFsL2lzX2VtcHR5IiwiZW1iZXItcnVudGltZS9zeXN0ZW0vb2Jq
ZWN0IiwiZW1iZXItbWV0YWwvYXNzaWduIl0sZnVuY3Rpb24oZSx0LHIsbil7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIGkoZSx0KXt2YXIgcjtmb3IociBpbiBlKWlmKGUuaGFzT3duUHJvcGVydHkocikm
JmVbcl0hPT10W3JdKXJldHVybiExO2ZvcihyIGluIHQpaWYodC5oYXNPd25Qcm9wZXJ0eShyKSYm
ZVtyXSE9PXRbcl0pcmV0dXJuITE7cmV0dXJuITB9dmFyIG89T2JqZWN0LmtleXMsYT1yLmRlZmF1
bHQuZXh0ZW5kKHtlbWJlclJvdXRlcjpudWxsLHJvdXRlckpzOm51bGwscm91dGVySnNTdGF0ZTpu
dWxsLGlzQWN0aXZlSW50ZW50OmZ1bmN0aW9uKGUscixhLHMpe3ZhciB1PXRoaXMucm91dGVySnNT
dGF0ZTtpZighdGhpcy5yb3V0ZXJKcy5pc0FjdGl2ZUludGVudChlLHIsbnVsbCx1KSlyZXR1cm4h
MTt2YXIgbD10LmRlZmF1bHQobyhhKSk7aWYocyYmIWwpe3ZhciBjPXt9O3JldHVybiBuLmRlZmF1
bHQoYyxhKSx0aGlzLmVtYmVyUm91dGVyLl9wcmVwYXJlUXVlcnlQYXJhbXMoZSxyLGMpLGkoYyx1
LnF1ZXJ5UGFyYW1zKX1yZXR1cm4hMH19KTtlLmRlZmF1bHQ9YX0pLGUoImVtYmVyLXJvdXRpbmcv
dXRpbHMiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL2Fzc2lnbiIsImVtYmVyLW1ldGFsL3Byb3Bl
cnR5X2dldCJdLGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlLHQscil7
dmFyIG49W107cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlJiZuLnB1c2goIiIrZSksbi5wdXNoLmFw
cGx5KG4sdCksbi5wdXNoKHtxdWVyeVBhcmFtczpyfSksbn1mdW5jdGlvbiBpKGUpe3ZhciB0PWUu
YWN0aXZlVHJhbnNpdGlvbj9lLmFjdGl2ZVRyYW5zaXRpb24uc3RhdGUuaGFuZGxlckluZm9zOmUu
c3RhdGUuaGFuZGxlckluZm9zO3JldHVybiB0W3QubGVuZ3RoLTFdLm5hbWV9ZnVuY3Rpb24gbyhl
LHQpe2lmKCF0Ll9uYW1lc1N0YXNoZWQpe2Zvcih2YXIgcj10W3QubGVuZ3RoLTFdLm5hbWUsbj1l
LnJvdXRlci5yZWNvZ25pemVyLmhhbmRsZXJzRm9yKHIpLGk9bnVsbCxvPTAsYT10Lmxlbmd0aDtv
PGE7KytvKXt2YXIgcz10W29dLHU9bltvXS5uYW1lczt1Lmxlbmd0aCYmKGk9cykscy5fbmFtZXM9
dTt2YXIgbD1zLmhhbmRsZXI7bC5fc3Rhc2hOYW1lcyhzLGkpfXQuX25hbWVzU3Rhc2hlZD0hMH19
ZnVuY3Rpb24gYShlLHQpe2Zvcih2YXIgcj1lLnNwbGl0KCIuIiksbj0iIixpPTAsbz1yLmxlbmd0
aDtpPG87aSsrKXt2YXIgYT1yLnNsaWNlKDAsaSsxKS5qb2luKCIuIik7aWYoMCE9PXQuaW5kZXhP
ZihhKSlicmVhaztuPWF9cmV0dXJuIG59ZnVuY3Rpb24gcyhlLHQsbil7Zm9yKHZhciBpPXR8fFtd
LG89IiIscz0wLHU9aS5sZW5ndGg7czx1Oysrcyl7dmFyIGwsZj1pW3NdLGQ9YShlLGYpO2lmKG4p
aWYoZCYmZCBpbiBuKXt2YXIgcD0wPT09Zi5pbmRleE9mKGQpP2Yuc3Vic3RyKGQubGVuZ3RoKzEp
OmY7bD1yLmdldChuW2RdLHApfWVsc2UgbD1yLmdldChuLGYpO28rPSI6OiIrZisiOiIrbH1yZXR1
cm4gZStvLnJlcGxhY2UoYywiLSIpfWZ1bmN0aW9uIHUoZSl7aWYoZS5fcXBNYXApcmV0dXJuIGUu
X3FwTWFwO2Zvcih2YXIgdD1lLl9xcE1hcD17fSxyPTAsbj1lLmxlbmd0aDtyPG47KytyKWwoZVty
XSx0KTtyZXR1cm4gdH1mdW5jdGlvbiBsKGUscil7dmFyIG4saT1lOyJzdHJpbmciPT10eXBlb2Yg
aSYmKG49e30sbltpXT17YXM6bnVsbH0saT1uKTtmb3IodmFyIG8gaW4gaSl7aWYoIWkuaGFzT3du
UHJvcGVydHkobykpcmV0dXJuO3ZhciBhPWlbb107InN0cmluZyI9PXR5cGVvZiBhJiYoYT17YXM6
YX0pLG49cltvXXx8e2FzOm51bGwsc2NvcGU6Im1vZGVsIn0sdC5kZWZhdWx0KG4sYSkscltvXT1u
fX1lLnJvdXRlQXJncz1uLGUuZ2V0QWN0aXZlVGFyZ2V0TmFtZT1pLGUuc3Rhc2hQYXJhbU5hbWVz
PW8sZS5jYWxjdWxhdGVDYWNoZUtleT1zLGUubm9ybWFsaXplQ29udHJvbGxlclF1ZXJ5UGFyYW1z
PXU7dmFyIGM9L1wuL2d9KSxlKCJlbWJlci1ydW50aW1lL2NvbXBhcmUiLFsiZXhwb3J0cyIsImVt
YmVyLXJ1bnRpbWUvdXRpbHMiLCJlbWJlci1ydW50aW1lL21peGlucy9jb21wYXJhYmxlIl0sZnVu
Y3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUsdCl7dmFyIHI9ZS10O3JldHVy
bihyPjApLShyPDApfWZ1bmN0aW9uIGkoZSxhKXtpZihlPT09YSlyZXR1cm4gMDt2YXIgcz10LnR5
cGVPZihlKSx1PXQudHlwZU9mKGEpO2lmKHIuZGVmYXVsdCl7aWYoImluc3RhbmNlIj09PXMmJnIu
ZGVmYXVsdC5kZXRlY3QoZSkmJmUuY29uc3RydWN0b3IuY29tcGFyZSlyZXR1cm4gZS5jb25zdHJ1
Y3Rvci5jb21wYXJlKGUsYSk7aWYoImluc3RhbmNlIj09PXUmJnIuZGVmYXVsdC5kZXRlY3QoYSkm
JmEuY29uc3RydWN0b3IuY29tcGFyZSlyZXR1cm4gYS5jb25zdHJ1Y3Rvci5jb21wYXJlKGEsZSkq
LTF9dmFyIGw9bihvW3NdLG9bdV0pO2lmKDAhPT1sKXJldHVybiBsO3N3aXRjaChzKXtjYXNlImJv
b2xlYW4iOmNhc2UibnVtYmVyIjpyZXR1cm4gbihlLGEpO2Nhc2Uic3RyaW5nIjpyZXR1cm4gbihl
LmxvY2FsZUNvbXBhcmUoYSksMCk7Y2FzZSJhcnJheSI6Zm9yKHZhciBjPWUubGVuZ3RoLGY9YS5s
ZW5ndGgsZD1NYXRoLm1pbihjLGYpLHA9MDtwPGQ7cCsrKXt2YXIgaD1pKGVbcF0sYVtwXSk7aWYo
MCE9PWgpcmV0dXJuIGh9cmV0dXJuIG4oYyxmKTtjYXNlImluc3RhbmNlIjpyZXR1cm4gci5kZWZh
dWx0JiZyLmRlZmF1bHQuZGV0ZWN0KGUpP2UuY29tcGFyZShlLGEpOjA7Y2FzZSJkYXRlIjpyZXR1
cm4gbihlLmdldFRpbWUoKSxhLmdldFRpbWUoKSk7ZGVmYXVsdDpyZXR1cm4gMH19ZS5kZWZhdWx0
PWk7dmFyIG89e3VuZGVmaW5lZDowLG51bGw6MSxib29sZWFuOjIsbnVtYmVyOjMsc3RyaW5nOjQs
YXJyYXk6NSxvYmplY3Q6NixpbnN0YW5jZTo3LGZ1bmN0aW9uOjgsY2xhc3M6OSxkYXRlOjEwfX0p
LGUoImVtYmVyLXJ1bnRpbWUvY29tcHV0ZWQvcmVkdWNlX2NvbXB1dGVkX21hY3JvcyIsWyJleHBv
cnRzIiwiZW1iZXItbWV0YWwvZGVidWciLCJlbWJlci1tZXRhbC9wcm9wZXJ0eV9nZXQiLCJlbWJl
ci1tZXRhbC9lcnJvciIsImVtYmVyLW1ldGFsL2NvbXB1dGVkIiwiZW1iZXItbWV0YWwvb2JzZXJ2
ZXIiLCJlbWJlci1ydW50aW1lL2NvbXBhcmUiLCJlbWJlci1ydW50aW1lL3V0aWxzIiwiZW1iZXIt
cnVudGltZS9zeXN0ZW0vbmF0aXZlX2FycmF5IiwiZW1iZXItbWV0YWwvaXNfbm9uZSIsImVtYmVy
LW1ldGFsL2dldF9wcm9wZXJ0aWVzIiwiZW1iZXItbWV0YWwvZW1wdHlfb2JqZWN0IiwiZW1iZXIt
bWV0YWwvdXRpbHMiLCJlbWJlci1tZXRhbC93ZWFrX21hcCJdLGZ1bmN0aW9uKGUsdCxyLG4saSxv
LGEscyx1LGwsYyxmLGQscCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGgoZSx0LG4pe3JldHVybiBp
LmNvbXB1dGVkKGUrIi5bXSIsZnVuY3Rpb24oKXt2YXIgaT10aGlzLG89ci5nZXQodGhpcyxlKTty
ZXR1cm4gbnVsbD09PW98fCJvYmplY3QiIT10eXBlb2Ygbz9uOm8ucmVkdWNlKGZ1bmN0aW9uKGUs
cixuLG8pe3JldHVybiB0LmNhbGwoaSxlLHIsbixvKX0sbil9KS5yZWFkT25seSgpfWZ1bmN0aW9u
IG0oZSx0KXt2YXIgbjtyZXR1cm4vQGVhY2gvLnRlc3QoZSk/bj1lLnJlcGxhY2UoL1wuQGVhY2gu
KiQvLCIiKToobj1lLGUrPSIuW10iKSxpLmNvbXB1dGVkKGUsZnVuY3Rpb24oKXt2YXIgZT1yLmdl
dCh0aGlzLG4pO3JldHVybiBzLmlzQXJyYXkoZSk/dS5BKHQuY2FsbCh0aGlzLGUpKTp1LkEoKX0p
LnJlYWRPbmx5KCl9ZnVuY3Rpb24gdihlLHQpe3ZhciByPWUubWFwKGZ1bmN0aW9uKGUpe3JldHVy
biBlKyIuW10ifSk7cmV0dXJuIHIucHVzaChmdW5jdGlvbigpe3JldHVybiB1LkEodC5jYWxsKHRo
aXMsZSkpfSksaS5jb21wdXRlZC5hcHBseSh0aGlzLHIpLnJlYWRPbmx5KCl9ZnVuY3Rpb24gYihl
KXtyZXR1cm4gaChlLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUrdH0sMCl9ZnVuY3Rpb24gZyhlKXty
ZXR1cm4gaChlLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIE1hdGgubWF4KGUsdCl9LC0oMS8wKSl9ZnVu
Y3Rpb24geShlKXtyZXR1cm4gaChlLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIE1hdGgubWluKGUsdCl9
LDEvMCl9ZnVuY3Rpb24gXyhlLHQpe3JldHVybiBtKGUsZnVuY3Rpb24oZSl7cmV0dXJuIGUubWFw
KHQsdGhpcyl9KX1mdW5jdGlvbiB3KGUsdCl7cmV0dXJuIF8oZSsiLkBlYWNoLiIrdCxmdW5jdGlv
bihlKXtyZXR1cm4gci5nZXQoZSx0KX0pfWZ1bmN0aW9uIHgoZSx0KXtyZXR1cm4gbShlLGZ1bmN0
aW9uKGUpe3JldHVybiBlLmZpbHRlcih0LHRoaXMpfSl9ZnVuY3Rpb24gayhlLHQsbil7dmFyIGk7
cmV0dXJuIGk9Mj09PWFyZ3VtZW50cy5sZW5ndGg/ZnVuY3Rpb24oZSl7cmV0dXJuIHIuZ2V0KGUs
dCl9OmZ1bmN0aW9uKGUpe3JldHVybiByLmdldChlLHQpPT09bn0seChlKyIuQGVhY2guIit0LGkp
fWZ1bmN0aW9uIEMoKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCx0PUFycmF5KGUpLG49MDtu
PGU7bisrKXRbbl09YXJndW1lbnRzW25dO3JldHVybiB2KHQsZnVuY3Rpb24oZSl7dmFyIHQ9dGhp
cyxuPXUuQSgpO3JldHVybiBlLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIGk9ci5nZXQodCxlKTtz
LmlzQXJyYXkoaSkmJmkuZm9yRWFjaChmdW5jdGlvbihlKXtuLmluZGV4T2YoZSk9PT0tMSYmbi5w
dXNoKGUpfSl9KSxufSl9ZnVuY3Rpb24gRShlLHQpe3JldHVybiBpLmNvbXB1dGVkKGUrIi5bXSIs
ZnVuY3Rpb24oKXt2YXIgbj11LkEoKSxpPW5ldyBmLmRlZmF1bHQsbz1yLmdldCh0aGlzLGUpO3Jl
dHVybiBzLmlzQXJyYXkobykmJm8uZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgbz1kLmd1aWRGb3Io
ci5nZXQoZSx0KSk7byBpbiBpfHwoaVtvXT0hMCxuLnB1c2goZSkpfSksbn0pLnJlYWRPbmx5KCl9
ZnVuY3Rpb24gTygpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHQ9QXJyYXkoZSksbj0wO248
ZTtuKyspdFtuXT1hcmd1bWVudHNbbl07cmV0dXJuIHYodCxmdW5jdGlvbihlKXt2YXIgdD10aGlz
LG49ZS5tYXAoZnVuY3Rpb24oZSl7dmFyIG49ci5nZXQodCxlKTtyZXR1cm4gcy5pc0FycmF5KG4p
P246W119KSxpPW4ucG9wKCkuZmlsdGVyKGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wO3Q8bi5sZW5n
dGg7dCsrKXtmb3IodmFyIHI9ITEsaT1uW3RdLG89MDtvPGkubGVuZ3RoO28rKylpZihpW29dPT09
ZSl7cj0hMDticmVha31pZihyPT09ITEpcmV0dXJuITF9cmV0dXJuITB9KTtyZXR1cm4gdS5BKGkp
fSl9ZnVuY3Rpb24gVChlLHQpe2lmKDIhPT1hcmd1bWVudHMubGVuZ3RoKXRocm93IG5ldyBuLmRl
ZmF1bHQoInNldERpZmYgcmVxdWlyZXMgZXhhY3RseSB0d28gZGVwZW5kZW50IGFycmF5cy4iKTty
ZXR1cm4gaS5jb21wdXRlZChlKyIuW10iLHQrIi5bXSIsZnVuY3Rpb24oKXt2YXIgcj10aGlzLmdl
dChlKSxuPXRoaXMuZ2V0KHQpO3JldHVybiBzLmlzQXJyYXkocik/cy5pc0FycmF5KG4pP3IuZmls
dGVyKGZ1bmN0aW9uKGUpe3JldHVybiBuLmluZGV4T2YoZSk9PT0tMX0pOnUuQShyKTp1LkEoKX0p
LnJlYWRPbmx5KCl9ZnVuY3Rpb24gTigpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHQ9QXJy
YXkoZSkscj0wO3I8ZTtyKyspdFtyXT1hcmd1bWVudHNbcl07cmV0dXJuIHYodCxmdW5jdGlvbigp
e3ZhciBlPWMuZGVmYXVsdCh0aGlzLHQpLHI9dS5BKCk7Zm9yKHZhciBuIGluIGUpZS5oYXNPd25Q
cm9wZXJ0eShuKSYmKGwuZGVmYXVsdChlW25dKT9yLnB1c2gobnVsbCk6ci5wdXNoKGVbbl0pKTty
ZXR1cm4gcn0pfWZ1bmN0aW9uIFMoZSx0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD9BKGUs
dCk6UChlLHQpfWZ1bmN0aW9uIEEoZSx0KXtyZXR1cm4gbShlLGZ1bmN0aW9uKGUpe3ZhciByPXRo
aXM7cmV0dXJuIGUuc2xpY2UoKS5zb3J0KGZ1bmN0aW9uKGUsbil7cmV0dXJuIHQuY2FsbChyLGUs
bil9KX0pfWZ1bmN0aW9uIFAoZSx0KXt2YXIgbj1uZXcgaS5Db21wdXRlZFByb3BlcnR5KGZ1bmN0
aW9uKGkpe2Z1bmN0aW9uIGEoKXt0aGlzLm5vdGlmeVByb3BlcnR5Q2hhbmdlKGkpfXZhciBsPXRo
aXMsYz0iQHRoaXMiPT09ZSxmPXIuZ2V0KHRoaXMsdCksZD1qKGYpLGg9bi5fYWN0aXZlT2JzZXJ2
ZXJNYXB8fChuLl9hY3RpdmVPYnNlcnZlck1hcD1uZXcgcC5kZWZhdWx0KSxtPWguZ2V0KHRoaXMp
O20mJm0uZm9yRWFjaChmdW5jdGlvbihlKXtvLnJlbW92ZU9ic2VydmVyLmFwcGx5KG51bGwsZSl9
KSxtPWQubWFwKGZ1bmN0aW9uKHQpe3ZhciByPXRbMF0sbj1jPyJAZWFjaC4iK3I6ZSsiLkBlYWNo
LiIrcixpPVtsLG4sYV07cmV0dXJuIG8uYWRkT2JzZXJ2ZXIuYXBwbHkobnVsbCxpKSxpfSksaC5z
ZXQodGhpcyxtKTt2YXIgdj1jP3RoaXM6ci5nZXQodGhpcyxlKTtyZXR1cm4gcy5pc0FycmF5KHYp
P1IodixkKTp1LkEoKX0pO3JldHVybiBuLl9hY3RpdmVPYnNlcnZlck1hcD12b2lkIDAsbi5wcm9w
ZXJ0eSh0KyIuW10iKS5yZWFkT25seSgpfWZ1bmN0aW9uIGooZSl7cmV0dXJuIGUubWFwKGZ1bmN0
aW9uKGUpe3ZhciB0PWUuc3BsaXQoIjoiKSxyPXRbMF0sbj10WzFdO3JldHVybiBuPW58fCJhc2Mi
LFtyLG5dfSl9ZnVuY3Rpb24gUihlLHQpe3JldHVybiB1LkEoZS5zbGljZSgpLnNvcnQoZnVuY3Rp
b24oZSxuKXtmb3IodmFyIGk9MDtpPHQubGVuZ3RoO2krKyl7dmFyIG89dFtpXSxzPW9bMF0sdT1v
WzFdLGw9YS5kZWZhdWx0KHIuZ2V0KGUscyksci5nZXQobixzKSk7aWYoMCE9PWwpcmV0dXJuImRl
c2MiPT09dT8tMSpsOmx9cmV0dXJuIDB9KSl9ZS5zdW09YixlLm1heD1nLGUubWluPXksZS5tYXA9
XyxlLm1hcEJ5PXcsZS5maWx0ZXI9eCxlLmZpbHRlckJ5PWssZS51bmlxPUMsZS51bmlxQnk9RSxl
LmludGVyc2VjdD1PLGUuc2V0RGlmZj1ULGUuY29sbGVjdD1OLGUuc29ydD1TO3ZhciBMPUM7ZS51
bmlvbj1MfSksZSgiZW1iZXItcnVudGltZS9jb250cm9sbGVycy9jb250cm9sbGVyIixbImV4cG9y
dHMiLCJlbWJlci1tZXRhbC9kZWJ1ZyIsImVtYmVyLXJ1bnRpbWUvc3lzdGVtL29iamVjdCIsImVt
YmVyLXJ1bnRpbWUvbWl4aW5zL2NvbnRyb2xsZXIiLCJlbWJlci1ydW50aW1lL2luamVjdCIsImVt
YmVyLXJ1bnRpbWUvbWl4aW5zL2FjdGlvbl9oYW5kbGVyIl0sZnVuY3Rpb24oZSx0LHIsbixpLG8p
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBhKGUpe312YXIgcz1yLmRlZmF1bHQuZXh0ZW5kKG4uZGVm
YXVsdCk7by5kZXByZWNhdGVVbmRlcnNjb3JlQWN0aW9ucyhzKSxpLmNyZWF0ZUluamVjdGlvbkhl
bHBlcigiY29udHJvbGxlciIsYSksZS5kZWZhdWx0PXN9KSxlKCJlbWJlci1ydW50aW1lL2NvcHki
LFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL2RlYnVnIiwiZW1iZXItcnVudGltZS9zeXN0ZW0vb2Jq
ZWN0IiwiZW1iZXItcnVudGltZS9taXhpbnMvY29weWFibGUiXSxmdW5jdGlvbihlLHQscixuKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlLHQscixvKXt2YXIgYSxzLHU7aWYoIm9iamVjdCIhPXR5
cGVvZiBlfHxudWxsPT09ZSlyZXR1cm4gZTtpZih0JiYocz1yLmluZGV4T2YoZSkpPj0wKXJldHVy
biBvW3NdO2lmKEFycmF5LmlzQXJyYXkoZSkpe2lmKGE9ZS5zbGljZSgpLHQpZm9yKHM9YS5sZW5n
dGg7LS1zPj0wOylhW3NdPWkoYVtzXSx0LHIsbyl9ZWxzZSBpZihuLmRlZmF1bHQmJm4uZGVmYXVs
dC5kZXRlY3QoZSkpYT1lLmNvcHkodCxyLG8pO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIERhdGUpYT1u
ZXcgRGF0ZShlLmdldFRpbWUoKSk7ZWxzZXthPXt9O2Zvcih1IGluIGUpT2JqZWN0LnByb3RvdHlw
ZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsdSkmJiJfXyIhPT11LnN1YnN0cmluZygwLDIpJiYoYVt1
XT10P2koZVt1XSx0LHIsbyk6ZVt1XSl9cmV0dXJuIHQmJihyLnB1c2goZSksby5wdXNoKGEpKSxh
fWZ1bmN0aW9uIG8oZSx0KXtyZXR1cm4ib2JqZWN0IiE9dHlwZW9mIGV8fG51bGw9PT1lP2U6bi5k
ZWZhdWx0JiZuLmRlZmF1bHQuZGV0ZWN0KGUpP2UuY29weSh0KTppKGUsdCx0P1tdOm51bGwsdD9b
XTpudWxsKX1lLmRlZmF1bHQ9b30pLGUoImVtYmVyLXJ1bnRpbWUvY29yZSIsWyJleHBvcnRzIl0s
ZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QifSksZSgiZW1iZXItcnVudGltZS9leHQvZnVuY3Rpb24i
LFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL2NvcmUiLCJlbWJlci1tZXRhbC9kZWJ1ZyIsImVtYmVy
LW1ldGFsL2NvbXB1dGVkIiwiZW1iZXItbWV0YWwvbWl4aW4iXSxmdW5jdGlvbihlLHQscixuLGkp
eyJ1c2Ugc3RyaWN0Ijt2YXIgbz1BcnJheS5wcm90b3R5cGUuc2xpY2UsYT1GdW5jdGlvbi5wcm90
b3R5cGU7KHQuZGVmYXVsdC5FWFRFTkRfUFJPVE9UWVBFUz09PSEwfHx0LmRlZmF1bHQuRVhURU5E
X1BST1RPVFlQRVMuRnVuY3Rpb24pJiYoYS5wcm9wZXJ0eT1mdW5jdGlvbigpe3ZhciBlPW4uY29t
cHV0ZWQodGhpcyk7cmV0dXJuIGUucHJvcGVydHkuYXBwbHkoZSxhcmd1bWVudHMpfSxhLm9ic2Vy
dmVzPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsdD1BcnJheShlKSxyPTA7
cjxlO3IrKyl0W3JdPWFyZ3VtZW50c1tyXTtyZXR1cm4gdC5wdXNoKHRoaXMpLGkub2JzZXJ2ZXIu
YXBwbHkodGhpcyx0KX0sYS5fb2JzZXJ2ZXNJbW1lZGlhdGVseT1mdW5jdGlvbigpe3JldHVybiB0
aGlzLm9ic2VydmVzLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sYS5vYnNlcnZlc0ltbWVkaWF0ZWx5
PXIuZGVwcmVjYXRlRnVuYygiRnVuY3Rpb24jb2JzZXJ2ZXNJbW1lZGlhdGVseSBpcyBkZXByZWNh
dGVkLiBVc2UgRnVuY3Rpb24jb2JzZXJ2ZXMgaW5zdGVhZCIse2lkOiJlbWJlci1ydW50aW1lLmV4
dC1mdW5jdGlvbiIsdW50aWw6IjMuMC4wIn0sYS5fb2JzZXJ2ZXNJbW1lZGlhdGVseSksYS5vbj1m
dW5jdGlvbigpe3ZhciBlPW8uY2FsbChhcmd1bWVudHMpO3JldHVybiB0aGlzLl9fZW1iZXJfbGlz
dGVuc19fPWUsdGhpc30pfSksZSgiZW1iZXItcnVudGltZS9leHQvcnN2cCIsWyJleHBvcnRzIiwi
ZW1iZXItbWV0YWwvY29yZSIsInJlcXVpcmUiLCJlbWJlci1tZXRhbC9kZWJ1ZyIsImVtYmVyLW1l
dGFsL2xvZ2dlciIsImVtYmVyLW1ldGFsL3J1bl9sb29wIiwicnN2cCJdLGZ1bmN0aW9uKGUsdCxy
LG4saSxvLGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBzKGUpe3ZhciBuO2lmKGUmJmUuZXJyb3JU
aHJvd24/KG49ZS5lcnJvclRocm93biwic3RyaW5nIj09dHlwZW9mIG4mJihuPW5ldyBFcnJvcihu
KSksT2JqZWN0LmRlZmluZVByb3BlcnR5KG4sIl9fcmVhc29uX3dpdGhfZXJyb3JfdGhyb3duX18i
LHt2YWx1ZTplLGVudW1lcmFibGU6ITF9KSk6bj1lLCghbnx8IlVucmVjb2duaXplZFVSTEVycm9y
IiE9PW4ubmFtZSkmJm4mJiJUcmFuc2l0aW9uQWJvcnRlZCIhPT1uLm5hbWUpaWYodC5kZWZhdWx0
LnRlc3Rpbmcpe2lmKCFsJiZyLmhhcyhjKSYmKGw9ci5kZWZhdWx0KGMpLmRlZmF1bHQpLCFsfHwh
bC5hZGFwdGVyKXRocm93IG47bC5hZGFwdGVyLmV4Y2VwdGlvbihuKSxpLmRlZmF1bHQuZXJyb3Io
bi5zdGFjayl9ZWxzZSB0LmRlZmF1bHQub25lcnJvcj90LmRlZmF1bHQub25lcnJvcihuKTppLmRl
ZmF1bHQuZXJyb3Iobi5zdGFjayl9ZnVuY3Rpb24gdShlKXtvLmRlZmF1bHQuc2NoZWR1bGUoby5k
ZWZhdWx0LnF1ZXVlc1tvLmRlZmF1bHQucXVldWVzLmxlbmd0aC0xXSxlKX1lLm9uZXJyb3JEZWZh
dWx0PXMsZS5hZnRlcj11O3ZhciBsLGM9ImVtYmVyLXRlc3RpbmcvdGVzdCIsZj1mdW5jdGlvbigp
e3QuZGVmYXVsdC5UZXN0JiZ0LmRlZmF1bHQuVGVzdC5hZGFwdGVyJiZ0LmRlZmF1bHQuVGVzdC5h
ZGFwdGVyLmFzeW5jU3RhcnQoKX0sZD1mdW5jdGlvbigpe3QuZGVmYXVsdC5UZXN0JiZ0LmRlZmF1
bHQuVGVzdC5hZGFwdGVyJiZ0LmRlZmF1bHQuVGVzdC5hZGFwdGVyLmFzeW5jRW5kKCl9O2EuY29u
ZmlndXJlKCJhc3luYyIsZnVuY3Rpb24oZSxyKXt2YXIgbj0hby5kZWZhdWx0LmN1cnJlbnRSdW5M
b29wO3QuZGVmYXVsdC50ZXN0aW5nJiZuJiZmKCksby5kZWZhdWx0LmJhY2tidXJuZXIuc2NoZWR1
bGUoImFjdGlvbnMiLGZ1bmN0aW9uKCl7dC5kZWZhdWx0LnRlc3RpbmcmJm4mJmQoKSxlKHIpfSl9
KSxhLm9uKCJlcnJvciIscyksYS5jb25maWd1cmUoImFmdGVyIix1KSxlLmRlZmF1bHQ9YX0pLGUo
ImVtYmVyLXJ1bnRpbWUvZXh0L3N0cmluZyIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvY29yZSIs
ImVtYmVyLXJ1bnRpbWUvc3lzdGVtL3N0cmluZyJdLGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmlj
dCI7dmFyIG49U3RyaW5nLnByb3RvdHlwZTsodC5kZWZhdWx0LkVYVEVORF9QUk9UT1RZUEVTPT09
ITB8fHQuZGVmYXVsdC5FWFRFTkRfUFJPVE9UWVBFUy5TdHJpbmcpJiYobi5mbXQ9ZnVuY3Rpb24o
KXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCx0PUFycmF5KGUpLG49MDtuPGU7bisrKXRbbl09
YXJndW1lbnRzW25dO3JldHVybiByLmZtdCh0aGlzLHQpfSxuLnc9ZnVuY3Rpb24oKXtyZXR1cm4g
ci53KHRoaXMpfSxuLmxvYz1mdW5jdGlvbigpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHQ9
QXJyYXkoZSksbj0wO248ZTtuKyspdFtuXT1hcmd1bWVudHNbbl07cmV0dXJuIHIubG9jKHRoaXMs
dCl9LG4uY2FtZWxpemU9ZnVuY3Rpb24oKXtyZXR1cm4gci5jYW1lbGl6ZSh0aGlzKX0sbi5kZWNh
bWVsaXplPWZ1bmN0aW9uKCl7cmV0dXJuIHIuZGVjYW1lbGl6ZSh0aGlzKX0sbi5kYXNoZXJpemU9
ZnVuY3Rpb24oKXtyZXR1cm4gci5kYXNoZXJpemUodGhpcyl9LG4udW5kZXJzY29yZT1mdW5jdGlv
bigpe3JldHVybiByLnVuZGVyc2NvcmUodGhpcyl9LG4uY2xhc3NpZnk9ZnVuY3Rpb24oKXtyZXR1
cm4gci5jbGFzc2lmeSh0aGlzKX0sbi5jYXBpdGFsaXplPWZ1bmN0aW9uKCl7cmV0dXJuIHIuY2Fw
aXRhbGl6ZSh0aGlzKX0pfSksZSgiZW1iZXItcnVudGltZS9pbmRleCIsWyJleHBvcnRzIiwiZW1i
ZXItbWV0YWwiLCJlbWJlci1ydW50aW1lL2lzLWVxdWFsIiwiZW1iZXItcnVudGltZS9jb21wYXJl
IiwiZW1iZXItcnVudGltZS9jb3B5IiwiZW1iZXItcnVudGltZS9pbmplY3QiLCJlbWJlci1ydW50
aW1lL3N5c3RlbS9uYW1lc3BhY2UiLCJlbWJlci1ydW50aW1lL3N5c3RlbS9vYmplY3QiLCJlbWJl
ci1ydW50aW1lL3N5c3RlbS9jb250YWluZXIiLCJlbWJlci1ydW50aW1lL3N5c3RlbS9hcnJheV9w
cm94eSIsImVtYmVyLXJ1bnRpbWUvc3lzdGVtL29iamVjdF9wcm94eSIsImVtYmVyLXJ1bnRpbWUv
c3lzdGVtL2NvcmVfb2JqZWN0IiwiZW1iZXItcnVudGltZS9zeXN0ZW0vbmF0aXZlX2FycmF5Iiwi
ZW1iZXItcnVudGltZS9zeXN0ZW0vc3RyaW5nIiwiZW1iZXItcnVudGltZS9zeXN0ZW0vbGF6eV9s
b2FkIiwiZW1iZXItcnVudGltZS9taXhpbnMvYXJyYXkiLCJlbWJlci1ydW50aW1lL21peGlucy9j
b21wYXJhYmxlIiwiZW1iZXItcnVudGltZS9taXhpbnMvY29weWFibGUiLCJlbWJlci1ydW50aW1l
L21peGlucy9lbnVtZXJhYmxlIiwiZW1iZXItcnVudGltZS9taXhpbnMvZnJlZXphYmxlIiwiZW1i
ZXItcnVudGltZS9taXhpbnMvLXByb3h5IiwiZW1iZXItcnVudGltZS9taXhpbnMvb2JzZXJ2YWJs
ZSIsImVtYmVyLXJ1bnRpbWUvbWl4aW5zL2FjdGlvbl9oYW5kbGVyIiwiZW1iZXItcnVudGltZS9t
aXhpbnMvbXV0YWJsZV9lbnVtZXJhYmxlIiwiZW1iZXItcnVudGltZS9taXhpbnMvbXV0YWJsZV9h
cnJheSIsImVtYmVyLXJ1bnRpbWUvbWl4aW5zL3RhcmdldF9hY3Rpb25fc3VwcG9ydCIsImVtYmVy
LXJ1bnRpbWUvbWl4aW5zL2V2ZW50ZWQiLCJlbWJlci1ydW50aW1lL21peGlucy9wcm9taXNlX3By
b3h5IiwiZW1iZXItbWV0YWwvZmVhdHVyZXMiLCJlbWJlci1ydW50aW1lL2NvbXB1dGVkL3JlZHVj
ZV9jb21wdXRlZF9tYWNyb3MiLCJlbWJlci1ydW50aW1lL2NvbnRyb2xsZXJzL2NvbnRyb2xsZXIi
LCJlbWJlci1ydW50aW1lL21peGlucy9jb250cm9sbGVyIiwiZW1iZXItcnVudGltZS9zeXN0ZW0v
c2VydmljZSIsImVtYmVyLXJ1bnRpbWUvZXh0L3JzdnAiLCJlbWJlci1ydW50aW1lL2V4dC9zdHJp
bmciLCJlbWJlci1ydW50aW1lL2V4dC9mdW5jdGlvbiIsImVtYmVyLXJ1bnRpbWUvdXRpbHMiLCJl
bWJlci1ydW50aW1lL21peGlucy9yZWdpc3RyeV9wcm94eSIsImVtYmVyLXJ1bnRpbWUvbWl4aW5z
L2NvbnRhaW5lcl9wcm94eSIsImVtYmVyLXJ1bnRpbWUvc3RyaW5nX3JlZ2lzdHJ5Il0sZnVuY3Rp
b24oZSx0LHIsbixpLG8sYSxzLHUsbCxjLGYsZCxwLGgsbSx2LGIsZyx5LF8sdyx4LGssQyxFLE8s
VCxOLFMsQSxQLGosUixMLEQsTSxJLEYsSCl7InVzZSBzdHJpY3QiO3QuZGVmYXVsdC5jb21wYXJl
PW4uZGVmYXVsdCx0LmRlZmF1bHQuY29weT1pLmRlZmF1bHQsdC5kZWZhdWx0LmlzRXF1YWw9ci5k
ZWZhdWx0LHQuZGVmYXVsdC5pbmplY3Q9by5kZWZhdWx0LHQuZGVmYXVsdC5BcnJheT1tLmRlZmF1
bHQsdC5kZWZhdWx0LkNvbXBhcmFibGU9di5kZWZhdWx0LHQuZGVmYXVsdC5Db3B5YWJsZT1iLmRl
ZmF1bHQsdC5kZWZhdWx0LkZyZWV6YWJsZT15LkZyZWV6YWJsZSx0LmRlZmF1bHQuRlJPWkVOX0VS
Uk9SPXkuRlJPWkVOX0VSUk9SLHQuZGVmYXVsdC5NdXRhYmxlRW51bWVyYWJsZT1rLmRlZmF1bHQs
dC5kZWZhdWx0Lk11dGFibGVBcnJheT1DLmRlZmF1bHQsdC5kZWZhdWx0LlRhcmdldEFjdGlvblN1
cHBvcnQ9RS5kZWZhdWx0LHQuZGVmYXVsdC5FdmVudGVkPU8uZGVmYXVsdCx0LmRlZmF1bHQuUHJv
bWlzZVByb3h5TWl4aW49VC5kZWZhdWx0LHQuZGVmYXVsdC5PYnNlcnZhYmxlPXcuZGVmYXVsdCx0
LmRlZmF1bHQudHlwZU9mPU0udHlwZU9mLHQuZGVmYXVsdC5pc0FycmF5PU0uaXNBcnJheTt2YXIg
Vj10LmRlZmF1bHQuY29tcHV0ZWQ7Vi5zdW09Uy5zdW0sVi5taW49Uy5taW4sVi5tYXg9Uy5tYXgs
Vi5tYXA9Uy5tYXAsVi5zb3J0PVMuc29ydCxWLnNldERpZmY9Uy5zZXREaWZmLFYubWFwQnk9Uy5t
YXBCeSxWLmZpbHRlcj1TLmZpbHRlcixWLmZpbHRlckJ5PVMuZmlsdGVyQnksVi51bmlxPVMudW5p
cSxWLnVuaW9uPVMudW5pb24sVi5pbnRlcnNlY3Q9Uy5pbnRlcnNlY3QsVi5jb2xsZWN0PVMuY29s
bGVjdCx0LmRlZmF1bHQuU3RyaW5nPXAuZGVmYXVsdCx0LmRlZmF1bHQuT2JqZWN0PXMuZGVmYXVs
dCx0LmRlZmF1bHQuQ29udGFpbmVyPXUuQ29udGFpbmVyLHQuZGVmYXVsdC5SZWdpc3RyeT11LlJl
Z2lzdHJ5LHQuZGVmYXVsdC5nZXRPd25lcj11LmdldE93bmVyLHQuZGVmYXVsdC5zZXRPd25lcj11
LnNldE93bmVyLHQuZGVmYXVsdC5fUmVnaXN0cnlQcm94eU1peGluPUkuZGVmYXVsdCx0LmRlZmF1
bHQuX0NvbnRhaW5lclByb3h5TWl4aW49Ri5kZWZhdWx0LHQuZGVmYXVsdC5OYW1lc3BhY2U9YS5k
ZWZhdWx0LHQuZGVmYXVsdC5FbnVtZXJhYmxlPWcuZGVmYXVsdCx0LmRlZmF1bHQuQXJyYXlQcm94
eT1sLmRlZmF1bHQsdC5kZWZhdWx0Lk9iamVjdFByb3h5PWMuZGVmYXVsdCx0LmRlZmF1bHQuQWN0
aW9uSGFuZGxlcj14LmRlZmF1bHQsdC5kZWZhdWx0LkNvcmVPYmplY3Q9Zi5kZWZhdWx0LHQuZGVm
YXVsdC5OYXRpdmVBcnJheT1kLmRlZmF1bHQsdC5kZWZhdWx0Lm9uTG9hZD1oLm9uTG9hZCx0LmRl
ZmF1bHQucnVuTG9hZEhvb2tzPWgucnVuTG9hZEhvb2tzLHQuZGVmYXVsdC5Db250cm9sbGVyPUEu
ZGVmYXVsdCx0LmRlZmF1bHQuQ29udHJvbGxlck1peGluPVAuZGVmYXVsdCx0LmRlZmF1bHQuU2Vy
dmljZT1qLmRlZmF1bHQsdC5kZWZhdWx0Ll9Qcm94eU1peGluPV8uZGVmYXVsdCx0LmRlZmF1bHQu
UlNWUD1SLmRlZmF1bHQsT2JqZWN0LmRlZmluZVByb3BlcnR5KHQuZGVmYXVsdCwiU1RSSU5HUyIs
e2NvbmZpZ3VyYWJsZTohMSxnZXQ6SC5nZXRTdHJpbmdzLHNldDpILnNldFN0cmluZ3N9KSxlLmRl
ZmF1bHQ9dC5kZWZhdWx0fSksZSgiZW1iZXItcnVudGltZS9pbmplY3QiLFsiZXhwb3J0cyIsImVt
YmVyLW1ldGFsL2RlYnVnIiwiZW1iZXItbWV0YWwvaW5qZWN0ZWRfcHJvcGVydHkiXSxmdW5jdGlv
bihlLHQscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oKXt9ZnVuY3Rpb24gaShlLHQpe2FbZV09
dCxuW2VdPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgci5kZWZhdWx0KGUsdCl9fWZ1bmN0aW9uIG8o
ZSl7dmFyIHQsbixpLG8scyx1PWUucHJvdG8oKSxsPVtdO2Zvcih0IGluIHUpbj11W3RdLG4gaW5z
dGFuY2VvZiByLmRlZmF1bHQmJmwuaW5kZXhPZihuLnR5cGUpPT09LTEmJmwucHVzaChuLnR5cGUp
O2lmKGwubGVuZ3RoKWZvcihvPTAscz1sLmxlbmd0aDtvPHM7bysrKWk9YVtsW29dXSwiZnVuY3Rp
b24iPT10eXBlb2YgaSYmaShlKTtyZXR1cm4hMH1lLmRlZmF1bHQ9bixlLmNyZWF0ZUluamVjdGlv
bkhlbHBlcj1pLGUudmFsaWRhdGVQcm9wZXJ0eUluamVjdGlvbnM9bzt2YXIgYT17fX0pLGUoImVt
YmVyLXJ1bnRpbWUvaXMtZXF1YWwiLFsiZXhwb3J0cyJdLGZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiB0KGUsdCl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLmlzRXF1YWw/
ZS5pc0VxdWFsKHQpOmUgaW5zdGFuY2VvZiBEYXRlJiZ0IGluc3RhbmNlb2YgRGF0ZT9lLmdldFRp
bWUoKT09PXQuZ2V0VGltZSgpOmU9PT10fWUuZGVmYXVsdD10fSksZSgiZW1iZXItcnVudGltZS9t
aXhpbnMvLXByb3h5IixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9kZWJ1ZyIsImVtYmVyLW1ldGFs
L3Byb3BlcnR5X2dldCIsImVtYmVyLW1ldGFsL3Byb3BlcnR5X3NldCIsImVtYmVyLW1ldGFsL21l
dGEiLCJlbWJlci1tZXRhbC9vYnNlcnZlciIsImVtYmVyLW1ldGFsL3Byb3BlcnR5X2V2ZW50cyIs
ImVtYmVyLW1ldGFsL2NvbXB1dGVkIiwiZW1iZXItbWV0YWwvcHJvcGVydGllcyIsImVtYmVyLW1l
dGFsL21peGluIiwiZW1iZXItbWV0YWwvc3ltYm9sIl0sZnVuY3Rpb24oZSx0LHIsbixpLG8sYSxz
LHUsbCxjKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZihlKXtyZXR1cm4gZSYmZVttXX1mdW5jdGlv
biBkKGUsdCl7dmFyIHI9dC5zbGljZSg4KTtyIGluIHRoaXN8fGEucHJvcGVydHlXaWxsQ2hhbmdl
KHRoaXMscil9ZnVuY3Rpb24gcChlLHQpe3ZhciByPXQuc2xpY2UoOCk7ciBpbiB0aGlzfHxhLnBy
b3BlcnR5RGlkQ2hhbmdlKHRoaXMscil9dmFyIGg7ZS5pc1Byb3h5PWY7dmFyIG09Yy5kZWZhdWx0
KCJJU19QUk9YWSIpO2UuZGVmYXVsdD1sLk1peGluLmNyZWF0ZSgoaD17fSxoW21dPSEwLGguY29u
dGVudD1udWxsLGguX2NvbnRlbnREaWRDaGFuZ2U9bC5vYnNlcnZlcigiY29udGVudCIsZnVuY3Rp
b24oKXt9KSxoLmlzVHJ1dGh5PXMuY29tcHV0ZWQuYm9vbCgiY29udGVudCIpLGguX2RlYnVnQ29u
dGFpbmVyS2V5PW51bGwsaC53aWxsV2F0Y2hQcm9wZXJ0eT1mdW5jdGlvbihlKXt2YXIgdD0iY29u
dGVudC4iK2U7by5fYWRkQmVmb3JlT2JzZXJ2ZXIodGhpcyx0LG51bGwsZCksby5hZGRPYnNlcnZl
cih0aGlzLHQsbnVsbCxwKX0saC5kaWRVbndhdGNoUHJvcGVydHk9ZnVuY3Rpb24oZSl7dmFyIHQ9
ImNvbnRlbnQuIitlO28uX3JlbW92ZUJlZm9yZU9ic2VydmVyKHRoaXMsdCxudWxsLGQpLG8ucmVt
b3ZlT2JzZXJ2ZXIodGhpcyx0LG51bGwscCl9LGgudW5rbm93blByb3BlcnR5PWZ1bmN0aW9uKGUp
e3ZhciB0PXIuZ2V0KHRoaXMsImNvbnRlbnQiKTtpZih0KXJldHVybiByLmdldCh0LGUpfSxoLnNl
dFVua25vd25Qcm9wZXJ0eT1mdW5jdGlvbihlLHQpe3ZhciBvPWkubWV0YSh0aGlzKTtpZihvLnBy
b3RvPT09dGhpcylyZXR1cm4gdS5kZWZpbmVQcm9wZXJ0eSh0aGlzLGUsbnVsbCx0KSx0O3ZhciBh
PXIuZ2V0KHRoaXMsImNvbnRlbnQiKTtyZXR1cm4gbi5zZXQoYSxlLHQpfSxoKSl9KSxlKCJlbWJl
ci1ydW50aW1lL21peGlucy9hY3Rpb25faGFuZGxlciIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwv
ZGVidWciLCJlbWJlci1tZXRhbC9taXhpbiIsImVtYmVyLW1ldGFsL3Byb3BlcnR5X2dldCJdLGZ1
bmN0aW9uKGUsdCxyLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUpe09iamVjdC5kZWZpbmVQ
cm9wZXJ0eShlLnByb3RvdHlwZSwiX2FjdGlvbnMiLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJs
ZTohMSxzZXQ6ZnVuY3Rpb24oZSl7fSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbi5nZXQodGhpcywi
YWN0aW9ucyIpfX0pfWUuZGVwcmVjYXRlVW5kZXJzY29yZUFjdGlvbnM9aTt2YXIgbz1yLk1peGlu
LmNyZWF0ZSh7bWVyZ2VkUHJvcGVydGllczpbImFjdGlvbnMiXSxzZW5kOmZ1bmN0aW9uKGUpe2Zv
cih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLHI9QXJyYXkodD4xP3QtMTowKSxpPTE7aTx0O2krKyly
W2ktMV09YXJndW1lbnRzW2ldO3ZhciBvO2lmKHRoaXMuYWN0aW9ucyYmdGhpcy5hY3Rpb25zW2Vd
KXt2YXIgYT10aGlzLmFjdGlvbnNbZV0uYXBwbHkodGhpcyxyKT09PSEwO2lmKCFhKXJldHVybn1p
ZihvPW4uZ2V0KHRoaXMsInRhcmdldCIpKXt2YXIgczsocz1vKS5zZW5kLmFwcGx5KHMsYXJndW1l
bnRzKX19LHdpbGxNZXJnZU1peGluOmZ1bmN0aW9uKGUpe2UuX2FjdGlvbnMmJihlLmFjdGlvbnM9
ZS5fYWN0aW9ucyxkZWxldGUgZS5fYWN0aW9ucyl9fSk7ZS5kZWZhdWx0PW99KSxlKCJlbWJlci1y
dW50aW1lL21peGlucy9hcnJheSIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvY29yZSIsImVtYmVy
LW1ldGFsL3N5bWJvbCIsImVtYmVyLW1ldGFsL3Byb3BlcnR5X2dldCIsImVtYmVyLW1ldGFsL2Nv
bXB1dGVkIiwiZW1iZXItbWV0YWwvaXNfbm9uZSIsImVtYmVyLXJ1bnRpbWUvbWl4aW5zL2VudW1l
cmFibGUiLCJlbWJlci1tZXRhbC9taXhpbiIsImVtYmVyLW1ldGFsL3Byb3BlcnR5X2V2ZW50cyIs
ImVtYmVyLW1ldGFsL2V2ZW50cyIsImVtYmVyLW1ldGFsL21ldGEiLCJlbWJlci1tZXRhbC90YWdz
IiwiZW1iZXItcnVudGltZS9zeXN0ZW0vZWFjaF9wcm94eSJdLGZ1bmN0aW9uKGUsdCxyLG4saSxv
LGEscyx1LGwsYyxmLGQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBwKGUsdCxyLGksbyl7dmFyIGE9
ciYmci53aWxsQ2hhbmdlfHwiYXJyYXlXaWxsQ2hhbmdlIixzPXImJnIuZGlkQ2hhbmdlfHwiYXJy
YXlEaWRDaGFuZ2UiLGw9bi5nZXQoZSwiaGFzQXJyYXlPYnNlcnZlcnMiKTtyZXR1cm4gbD09PW8m
JnUucHJvcGVydHlXaWxsQ2hhbmdlKGUsImhhc0FycmF5T2JzZXJ2ZXJzIiksaShlLCJAYXJyYXk6
YmVmb3JlIix0LGEpLGkoZSwiQGFycmF5OmNoYW5nZSIsdCxzKSxsPT09byYmdS5wcm9wZXJ0eURp
ZENoYW5nZShlLCJoYXNBcnJheU9ic2VydmVycyIpLGV9ZnVuY3Rpb24gaChlLHQscil7cmV0dXJu
IHAoZSx0LHIsbC5hZGRMaXN0ZW5lciwhMSl9ZnVuY3Rpb24gbShlLHQscil7cmV0dXJuIHAoZSx0
LHIsbC5yZW1vdmVMaXN0ZW5lciwhMCl9ZnVuY3Rpb24gdihlLHQpe3JldHVybiBlLm9iamVjdEF0
P2Uub2JqZWN0QXQodCk6ZVt0XX1mdW5jdGlvbiBiKGUpe3JldHVybiBlJiYhIWVbeV19dmFyIGc7
ZS5hZGRBcnJheU9ic2VydmVyPWgsZS5yZW1vdmVBcnJheU9ic2VydmVyPW0sZS5vYmplY3RBdD12
LGUuaXNFbWJlckFycmF5PWI7dmFyIHk9ci5kZWZhdWx0KCJFTUJFUl9BUlJBWSIpO2UuZGVmYXVs
dD1zLk1peGluLmNyZWF0ZShhLmRlZmF1bHQsKGc9e30sZ1t5XT0hMCxnLmxlbmd0aD1udWxsLGcu
b2JqZWN0QXQ9ZnVuY3Rpb24oZSl7aWYoIShlPDB8fGU+PW4uZ2V0KHRoaXMsImxlbmd0aCIpKSly
ZXR1cm4gbi5nZXQodGhpcyxlKX0sZy5vYmplY3RzQXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpczty
ZXR1cm4gZS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIHYodCxlKX0pfSxnLm5leHRPYmplY3Q9ZnVu
Y3Rpb24oZSl7cmV0dXJuIHYodGhpcyxlKX0sZ1siW10iXT1pLmNvbXB1dGVkKHtnZXQ6ZnVuY3Rp
b24oZSl7cmV0dXJuIHRoaXN9LHNldDpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLnJlcGxhY2Uo
MCxuLmdldCh0aGlzLCJsZW5ndGgiKSx0KSx0aGlzfX0pLGcuZmlyc3RPYmplY3Q9aS5jb21wdXRl
ZChmdW5jdGlvbigpe3JldHVybiB2KHRoaXMsMCl9KS5yZWFkT25seSgpLGcubGFzdE9iamVjdD1p
LmNvbXB1dGVkKGZ1bmN0aW9uKCl7cmV0dXJuIHYodGhpcyxuLmdldCh0aGlzLCJsZW5ndGgiKS0x
KX0pLnJlYWRPbmx5KCksZy5jb250YWlucz1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5pbmRleE9m
KGUpPj0wfSxnLnNsaWNlPWZ1bmN0aW9uKGUscil7dmFyIGk9dC5kZWZhdWx0LkEoKSxhPW4uZ2V0
KHRoaXMsImxlbmd0aCIpO2ZvcihvLmRlZmF1bHQoZSkmJihlPTApLChvLmRlZmF1bHQocil8fHI+
YSkmJihyPWEpLGU8MCYmKGU9YStlKSxyPDAmJihyPWErcik7ZTxyOylpW2kubGVuZ3RoXT12KHRo
aXMsZSsrKTtyZXR1cm4gaX0sZy5pbmRleE9mPWZ1bmN0aW9uKGUsdCl7dmFyIHIsaT1uLmdldCh0
aGlzLCJsZW5ndGgiKTtmb3Iodm9pZCAwPT09dCYmKHQ9MCksdDwwJiYodCs9aSkscj10O3I8aTty
KyspaWYodih0aGlzLHIpPT09ZSlyZXR1cm4gcjtyZXR1cm4tMX0sZy5sYXN0SW5kZXhPZj1mdW5j
dGlvbihlLHQpe3ZhciByLGk9bi5nZXQodGhpcywibGVuZ3RoIik7Zm9yKCh2b2lkIDA9PT10fHx0
Pj1pKSYmKHQ9aS0xKSx0PDAmJih0Kz1pKSxyPXQ7cj49MDtyLS0paWYodih0aGlzLHIpPT09ZSly
ZXR1cm4gcjtyZXR1cm4tMX0sZy5hZGRBcnJheU9ic2VydmVyPWZ1bmN0aW9uKGUsdCl7cmV0dXJu
IGgodGhpcyxlLHQpfSxnLnJlbW92ZUFycmF5T2JzZXJ2ZXI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4g
bSh0aGlzLGUsdCl9LGcuaGFzQXJyYXlPYnNlcnZlcnM9aS5jb21wdXRlZChmdW5jdGlvbigpe3Jl
dHVybiBsLmhhc0xpc3RlbmVycyh0aGlzLCJAYXJyYXk6Y2hhbmdlIil8fGwuaGFzTGlzdGVuZXJz
KHRoaXMsIkBhcnJheTpiZWZvcmUiKX0pLGcuYXJyYXlDb250ZW50V2lsbENoYW5nZT1mdW5jdGlv
bihlLHQscil7dmFyIGksbztpZih2b2lkIDA9PT1lPyhlPTAsdD1yPS0xKToodm9pZCAwPT09dCYm
KHQ9LTEpLHZvaWQgMD09PXImJihyPS0xKSksdGhpcy5fX2VhY2gmJnRoaXMuX19lYWNoLmFycmF5
V2lsbENoYW5nZSh0aGlzLGUsdCxyKSxsLnNlbmRFdmVudCh0aGlzLCJAYXJyYXk6YmVmb3JlIixb
dGhpcyxlLHQscl0pLGU+PTAmJnQ+PTAmJm4uZ2V0KHRoaXMsImhhc0VudW1lcmFibGVPYnNlcnZl
cnMiKSl7aT1bXSxvPWUrdDtmb3IodmFyIGE9ZTthPG87YSsrKWkucHVzaCh2KHRoaXMsYSkpfWVs
c2UgaT10O3JldHVybiB0aGlzLmVudW1lcmFibGVDb250ZW50V2lsbENoYW5nZShpLHIpLHRoaXN9
LGcuYXJyYXlDb250ZW50RGlkQ2hhbmdlPWZ1bmN0aW9uKGUsdCxyKXt2YXIgbyxhO2lmKGYubWFy
a09iamVjdEFzRGlydHkoYy5tZXRhKHRoaXMpKSx2b2lkIDA9PT1lPyhlPTAsdD1yPS0xKToodm9p
ZCAwPT09dCYmKHQ9LTEpLHZvaWQgMD09PXImJihyPS0xKSksZT49MCYmcj49MCYmbi5nZXQodGhp
cywiaGFzRW51bWVyYWJsZU9ic2VydmVycyIpKXtvPVtdLGE9ZStyO2Zvcih2YXIgcz1lO3M8YTtz
Kyspby5wdXNoKHYodGhpcyxzKSl9ZWxzZSBvPXI7dGhpcy5lbnVtZXJhYmxlQ29udGVudERpZENo
YW5nZSh0LG8pLHRoaXMuX19lYWNoJiZ0aGlzLl9fZWFjaC5hcnJheURpZENoYW5nZSh0aGlzLGUs
dCxyKSxsLnNlbmRFdmVudCh0aGlzLCJAYXJyYXk6Y2hhbmdlIixbdGhpcyxlLHQscl0pO3ZhciBk
PW4uZ2V0KHRoaXMsImxlbmd0aCIpLHA9aS5jYWNoZUZvcih0aGlzLCJmaXJzdE9iamVjdCIpLGg9
aS5jYWNoZUZvcih0aGlzLCJsYXN0T2JqZWN0Iik7cmV0dXJuIHYodGhpcywwKSE9PXAmJih1LnBy
b3BlcnR5V2lsbENoYW5nZSh0aGlzLCJmaXJzdE9iamVjdCIpLHUucHJvcGVydHlEaWRDaGFuZ2Uo
dGhpcywiZmlyc3RPYmplY3QiKSksdih0aGlzLGQtMSkhPT1oJiYodS5wcm9wZXJ0eVdpbGxDaGFu
Z2UodGhpcywibGFzdE9iamVjdCIpLHUucHJvcGVydHlEaWRDaGFuZ2UodGhpcywibGFzdE9iamVj
dCIpKSx0aGlzfSxnWyJAZWFjaCJdPWkuY29tcHV0ZWQoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5f
X2VhY2h8fCh0aGlzLl9fZWFjaD1uZXcgZC5kZWZhdWx0KHRoaXMpKSx0aGlzLl9fZWFjaH0pLnZv
bGF0aWxlKCksZykpfSksZSgiZW1iZXItcnVudGltZS9taXhpbnMvY29tcGFyYWJsZSIsWyJleHBv
cnRzIiwiZW1iZXItbWV0YWwvbWl4aW4iXSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtlLmRl
ZmF1bHQ9dC5NaXhpbi5jcmVhdGUoe2NvbXBhcmU6bnVsbH0pfSksZSgiZW1iZXItcnVudGltZS9t
aXhpbnMvY29udGFpbmVyX3Byb3h5IixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9ydW5fbG9vcCIs
ImVtYmVyLW1ldGFsL2RlYnVnIiwiZW1iZXItbWV0YWwvbWl4aW4iXSxmdW5jdGlvbihlLHQscixu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlKXt2YXIgdD17fSxyPXtsb29rdXA6Imxvb2t1cCIs
bG9va3VwRmFjdG9yeToiX2xvb2t1cEZhY3RvcnkifTtmb3IodmFyIG4gaW4gcil0W25dPW8oZSxu
LHJbbl0pO3JldHVybiB0fWZ1bmN0aW9uIG8oZSx0LHIpe3JldHVybiBmdW5jdGlvbigpe3JldHVy
biBlW3RdLmFwcGx5KGUsYXJndW1lbnRzKX19ZS5idWlsZEZha2VDb250YWluZXJXaXRoRGVwcmVj
YXRpb25zPWksZS5kZWZhdWx0PW4uTWl4aW4uY3JlYXRlKHtfX2NvbnRhaW5lcl9fOm51bGwsb3du
ZXJJbmplY3Rpb246ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fX2NvbnRhaW5lcl9fLm93bmVySW5q
ZWN0aW9uKCk7Cit9LGxvb2t1cDpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLl9fY29udGFpbmVy
X18ubG9va3VwKGUsdCl9LF9sb29rdXBGYWN0b3J5OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMu
X19jb250YWluZXJfXy5sb29rdXBGYWN0b3J5KGUsdCl9LHdpbGxEZXN0cm95OmZ1bmN0aW9uKCl7
dGhpcy5fc3VwZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpLHRoaXMuX19jb250YWluZXJfXyYmdC5k
ZWZhdWx0KHRoaXMuX19jb250YWluZXJfXywiZGVzdHJveSIpfX0pfSksZSgiZW1iZXItcnVudGlt
ZS9taXhpbnMvY29udHJvbGxlciIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvbWl4aW4iLCJlbWJl
ci1tZXRhbC9hbGlhcyIsImVtYmVyLXJ1bnRpbWUvbWl4aW5zL2FjdGlvbl9oYW5kbGVyIiwiZW1i
ZXItcnVudGltZS9taXhpbnMvY29udHJvbGxlcl9jb250ZW50X21vZGVsX2FsaWFzX2RlcHJlY2F0
aW9uIl0sZnVuY3Rpb24oZSx0LHIsbixpKXsidXNlIHN0cmljdCI7ZS5kZWZhdWx0PXQuTWl4aW4u
Y3JlYXRlKG4uZGVmYXVsdCxpLmRlZmF1bHQse2lzQ29udHJvbGxlcjohMCx0YXJnZXQ6bnVsbCxw
YXJlbnRDb250cm9sbGVyOm51bGwsc3RvcmU6bnVsbCxtb2RlbDpudWxsLGNvbnRlbnQ6ci5kZWZh
dWx0KCJtb2RlbCIpfSl9KSxlKCJlbWJlci1ydW50aW1lL21peGlucy9jb250cm9sbGVyX2NvbnRl
bnRfbW9kZWxfYWxpYXNfZGVwcmVjYXRpb24iLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL2RlYnVn
IiwiZW1iZXItbWV0YWwvbWl4aW4iXSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO2UuZGVm
YXVsdD1yLk1peGluLmNyZWF0ZSh7d2lsbE1lcmdlTWl4aW46ZnVuY3Rpb24oZSl7dGhpcy5fc3Vw
ZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpO3ZhciB0PSEhZS5tb2RlbDtlLmNvbnRlbnQmJiF0JiYo
ZS5tb2RlbD1lLmNvbnRlbnQsZGVsZXRlIGUuY29udGVudCl9fSl9KSxlKCJlbWJlci1ydW50aW1l
L21peGlucy9jb3B5YWJsZSIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvZGVidWciLCJlbWJlci1t
ZXRhbC9wcm9wZXJ0eV9nZXQiLCJlbWJlci1tZXRhbC9taXhpbiIsImVtYmVyLXJ1bnRpbWUvbWl4
aW5zL2ZyZWV6YWJsZSIsImVtYmVyLW1ldGFsL2Vycm9yIl0sZnVuY3Rpb24oZSx0LHIsbixpLG8p
eyJ1c2Ugc3RyaWN0IjtlLmRlZmF1bHQ9bi5NaXhpbi5jcmVhdGUoe2NvcHk6bnVsbCxmcm96ZW5D
b3B5OmZ1bmN0aW9uKCl7aWYoaS5GcmVlemFibGUmJmkuRnJlZXphYmxlLmRldGVjdCh0aGlzKSly
ZXR1cm4gci5nZXQodGhpcywiaXNGcm96ZW4iKT90aGlzOnRoaXMuY29weSgpLmZyZWV6ZSgpO3Ro
cm93IG5ldyBvLmRlZmF1bHQodGhpcysiIGRvZXMgbm90IHN1cHBvcnQgZnJlZXppbmciKX19KX0p
LGUoImVtYmVyLXJ1bnRpbWUvbWl4aW5zL2VudW1lcmFibGUiLFsiZXhwb3J0cyIsImVtYmVyLW1l
dGFsL3Byb3BlcnR5X2dldCIsImVtYmVyLW1ldGFsL3Byb3BlcnR5X3NldCIsImVtYmVyLW1ldGFs
L21peGluIiwiZW1iZXItbWV0YWwvdXRpbHMiLCJlbWJlci1tZXRhbC9jb21wdXRlZCIsImVtYmVy
LW1ldGFsL2VtcHR5X29iamVjdCIsImVtYmVyLW1ldGFsL2ZlYXR1cmVzIiwiZW1iZXItbWV0YWwv
cHJvcGVydHlfZXZlbnRzIiwiZW1iZXItbWV0YWwvZXZlbnRzIiwiZW1iZXItcnVudGltZS9jb21w
YXJlIiwicmVxdWlyZSJdLGZ1bmN0aW9uKGUsdCxyLG4saSxvLGEscyx1LGwsYyxmKXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gZCgpe3JldHVybih2fHwodj1mLmRlZmF1bHQoImVtYmVyLXJ1bnRpbWUv
c3lzdGVtL25hdGl2ZV9hcnJheSIpLkEpKSgpfWZ1bmN0aW9uIHAoKXtyZXR1cm4gMD09PWIubGVu
Z3RoP3t9OmIucG9wKCl9ZnVuY3Rpb24gaChlKXtyZXR1cm4gYi5wdXNoKGUpLG51bGx9ZnVuY3Rp
b24gbShlLHIpe2Z1bmN0aW9uIG4obil7dmFyIG89dC5nZXQobixlKTtyZXR1cm4gaT9yPT09bzoh
IW99dmFyIGk9Mj09PWFyZ3VtZW50cy5sZW5ndGg7cmV0dXJuIG59dmFyIHY9dm9pZCAwLGI9W10s
Zz1uLk1peGluLmNyZWF0ZSh7bmV4dE9iamVjdDpudWxsLGZpcnN0T2JqZWN0Om8uY29tcHV0ZWQo
IltdIixmdW5jdGlvbigpe2lmKDAhPT10LmdldCh0aGlzLCJsZW5ndGgiKSl7dmFyIGU9cCgpLHI9
dGhpcy5uZXh0T2JqZWN0KDAsbnVsbCxlKTtyZXR1cm4gaChlKSxyfX0pLnJlYWRPbmx5KCksbGFz
dE9iamVjdDpvLmNvbXB1dGVkKCJbXSIsZnVuY3Rpb24oKXt2YXIgZT10LmdldCh0aGlzLCJsZW5n
dGgiKTtpZigwIT09ZSl7dmFyIHIsbj1wKCksaT0wLG89bnVsbDtkbyBvPXIscj10aGlzLm5leHRP
YmplY3QoaSsrLG8sbik7d2hpbGUodm9pZCAwIT09cik7cmV0dXJuIGgobiksb319KS5yZWFkT25s
eSgpLGNvbnRhaW5zOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuZmluZChmdW5jdGlvbih0KXtyZXR1
cm4gdD09PWV9KTtyZXR1cm4gdm9pZCAwIT09dH0sZm9yRWFjaDpmdW5jdGlvbihlLHIpe2lmKCJm
dW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3I7dmFyIG49cCgpLGk9dC5nZXQo
dGhpcywibGVuZ3RoIiksbz1udWxsO3ZvaWQgMD09PXImJihyPW51bGwpO2Zvcih2YXIgYT0wO2E8
aTthKyspe3ZhciBzPXRoaXMubmV4dE9iamVjdChhLG8sbik7ZS5jYWxsKHIscyxhLHRoaXMpLG89
c31yZXR1cm4gbz1udWxsLG49aChuKSx0aGlzfSxnZXRFYWNoOm4uYWxpYXNNZXRob2QoIm1hcEJ5
Iiksc2V0RWFjaDpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmZvckVhY2goZnVuY3Rpb24obil7
ci5zZXQobixlLHQpfSl9LG1hcDpmdW5jdGlvbihlLHQpe3ZhciByPWQoKTtyZXR1cm4gdGhpcy5m
b3JFYWNoKGZ1bmN0aW9uKG4saSxvKXtyW2ldPWUuY2FsbCh0LG4saSxvKX0pLHJ9LG1hcEJ5OmZ1
bmN0aW9uKGUpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbihyKXtyZXR1cm4gdC5nZXQocixlKX0p
fSxmaWx0ZXI6ZnVuY3Rpb24oZSx0KXt2YXIgcj1kKCk7cmV0dXJuIHRoaXMuZm9yRWFjaChmdW5j
dGlvbihuLGksbyl7ZS5jYWxsKHQsbixpLG8pJiZyLnB1c2gobil9KSxyfSxyZWplY3Q6ZnVuY3Rp
b24oZSx0KXtyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4hZS5hcHBseSh0LGFy
Z3VtZW50cyl9KX0sZmlsdGVyQnk6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5maWx0ZXIobS5h
cHBseSh0aGlzLGFyZ3VtZW50cykpfSxyZWplY3RCeTpmdW5jdGlvbihlLHIpe3ZhciBuPWZ1bmN0
aW9uKG4pe3JldHVybiB0LmdldChuLGUpPT09cn0saT1mdW5jdGlvbihyKXtyZXR1cm4hIXQuZ2V0
KHIsZSl9LG89Mj09PWFyZ3VtZW50cy5sZW5ndGg/bjppO3JldHVybiB0aGlzLnJlamVjdChvKX0s
ZmluZDpmdW5jdGlvbihlLHIpe3ZhciBuPXQuZ2V0KHRoaXMsImxlbmd0aCIpO3ZvaWQgMD09PXIm
JihyPW51bGwpO2Zvcih2YXIgaSxvLGE9cCgpLHM9ITEsdT1udWxsLGw9MDtsPG4mJiFzO2wrKylp
PXRoaXMubmV4dE9iamVjdChsLHUsYSksKHM9ZS5jYWxsKHIsaSxsLHRoaXMpKSYmKG89aSksdT1p
O3JldHVybiBpPXU9bnVsbCxhPWgoYSksb30sZmluZEJ5OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRo
aXMuZmluZChtLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9LGV2ZXJ5OmZ1bmN0aW9uKGUsdCl7cmV0
dXJuIXRoaXMuZmluZChmdW5jdGlvbihyLG4saSl7cmV0dXJuIWUuY2FsbCh0LHIsbixpKX0pfSxp
c0V2ZXJ5OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuZXZlcnkobS5hcHBseSh0aGlzLGFyZ3Vt
ZW50cykpfSxhbnk6ZnVuY3Rpb24oZSxyKXt2YXIgbixpLG89dC5nZXQodGhpcywibGVuZ3RoIiks
YT1wKCkscz0hMSx1PW51bGw7Zm9yKHZvaWQgMD09PXImJihyPW51bGwpLGk9MDtpPG8mJiFzO2kr
KyluPXRoaXMubmV4dE9iamVjdChpLHUsYSkscz1lLmNhbGwocixuLGksdGhpcyksdT1uO3JldHVy
biBuPXU9bnVsbCxhPWgoYSksc30saXNBbnk6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5hbnko
bS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSxyZWR1Y2U6ZnVuY3Rpb24oZSx0LHIpe2lmKCJmdW5j
dGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3I7dmFyIG49dDtyZXR1cm4gdGhpcy5m
b3JFYWNoKGZ1bmN0aW9uKHQsaSl7bj1lKG4sdCxpLHRoaXMscil9LHRoaXMpLG59LGludm9rZTpm
dW5jdGlvbihlKXtmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxyPUFycmF5KHQ+MT90LTE6MCks
bj0xO248dDtuKyspcltuLTFdPWFyZ3VtZW50c1tuXTt2YXIgaT1kKCk7cmV0dXJuIHRoaXMuZm9y
RWFjaChmdW5jdGlvbih0LG4pe3ZhciBvPXQmJnRbZV07ImZ1bmN0aW9uIj09dHlwZW9mIG8mJihp
W25dPXI/by5hcHBseSh0LHIpOnRbZV0oKSl9LHRoaXMpLGl9LHRvQXJyYXk6ZnVuY3Rpb24oKXt2
YXIgZT1kKCk7cmV0dXJuIHRoaXMuZm9yRWFjaChmdW5jdGlvbih0LHIpe2Vbcl09dH0pLGV9LGNv
bXBhY3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIG51
bGwhPWV9KX0sd2l0aG91dDpmdW5jdGlvbihlKXtpZighdGhpcy5jb250YWlucyhlKSlyZXR1cm4g
dGhpczt2YXIgdD1kKCk7cmV0dXJuIHRoaXMuZm9yRWFjaChmdW5jdGlvbihyKXtyIT09ZSYmKHRb
dC5sZW5ndGhdPXIpfSksdH0sdW5pcTpmdW5jdGlvbigpe3ZhciBlPWQoKTtyZXR1cm4gdGhpcy5m
b3JFYWNoKGZ1bmN0aW9uKHQpe2UuaW5kZXhPZih0KTwwJiZlLnB1c2godCl9KSxlfSwiW10iOm8u
Y29tcHV0ZWQoe2dldDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpc319KSxhZGRFbnVtZXJhYmxlT2Jz
ZXJ2ZXI6ZnVuY3Rpb24oZSxyKXt2YXIgbj1yJiZyLndpbGxDaGFuZ2V8fCJlbnVtZXJhYmxlV2ls
bENoYW5nZSIsaT1yJiZyLmRpZENoYW5nZXx8ImVudW1lcmFibGVEaWRDaGFuZ2UiLG89dC5nZXQo
dGhpcywiaGFzRW51bWVyYWJsZU9ic2VydmVycyIpO3JldHVybiBvfHx1LnByb3BlcnR5V2lsbENo
YW5nZSh0aGlzLCJoYXNFbnVtZXJhYmxlT2JzZXJ2ZXJzIiksbC5hZGRMaXN0ZW5lcih0aGlzLCJA
ZW51bWVyYWJsZTpiZWZvcmUiLGUsbiksbC5hZGRMaXN0ZW5lcih0aGlzLCJAZW51bWVyYWJsZTpj
aGFuZ2UiLGUsaSksb3x8dS5wcm9wZXJ0eURpZENoYW5nZSh0aGlzLCJoYXNFbnVtZXJhYmxlT2Jz
ZXJ2ZXJzIiksdGhpc30scmVtb3ZlRW51bWVyYWJsZU9ic2VydmVyOmZ1bmN0aW9uKGUscil7dmFy
IG49ciYmci53aWxsQ2hhbmdlfHwiZW51bWVyYWJsZVdpbGxDaGFuZ2UiLGk9ciYmci5kaWRDaGFu
Z2V8fCJlbnVtZXJhYmxlRGlkQ2hhbmdlIixvPXQuZ2V0KHRoaXMsImhhc0VudW1lcmFibGVPYnNl
cnZlcnMiKTtyZXR1cm4gbyYmdS5wcm9wZXJ0eVdpbGxDaGFuZ2UodGhpcywiaGFzRW51bWVyYWJs
ZU9ic2VydmVycyIpLGwucmVtb3ZlTGlzdGVuZXIodGhpcywiQGVudW1lcmFibGU6YmVmb3JlIixl
LG4pLGwucmVtb3ZlTGlzdGVuZXIodGhpcywiQGVudW1lcmFibGU6Y2hhbmdlIixlLGkpLG8mJnUu
cHJvcGVydHlEaWRDaGFuZ2UodGhpcywiaGFzRW51bWVyYWJsZU9ic2VydmVycyIpLHRoaXN9LGhh
c0VudW1lcmFibGVPYnNlcnZlcnM6by5jb21wdXRlZChmdW5jdGlvbigpe3JldHVybiBsLmhhc0xp
c3RlbmVycyh0aGlzLCJAZW51bWVyYWJsZTpjaGFuZ2UiKXx8bC5oYXNMaXN0ZW5lcnModGhpcywi
QGVudW1lcmFibGU6YmVmb3JlIil9KSxlbnVtZXJhYmxlQ29udGVudFdpbGxDaGFuZ2U6ZnVuY3Rp
b24oZSxyKXt2YXIgbixpLG87cmV0dXJuIG49Im51bWJlciI9PXR5cGVvZiBlP2U6ZT90LmdldChl
LCJsZW5ndGgiKTplPS0xLGk9Im51bWJlciI9PXR5cGVvZiByP3I6cj90LmdldChyLCJsZW5ndGgi
KTpyPS0xLG89aTwwfHxuPDB8fGktbiE9PTAsZT09PS0xJiYoZT1udWxsKSxyPT09LTEmJihyPW51
bGwpLHUucHJvcGVydHlXaWxsQ2hhbmdlKHRoaXMsIltdIiksbyYmdS5wcm9wZXJ0eVdpbGxDaGFu
Z2UodGhpcywibGVuZ3RoIiksbC5zZW5kRXZlbnQodGhpcywiQGVudW1lcmFibGU6YmVmb3JlIixb
dGhpcyxlLHJdKSx0aGlzfSxlbnVtZXJhYmxlQ29udGVudERpZENoYW5nZTpmdW5jdGlvbihlLHIp
e3ZhciBuLGksbztyZXR1cm4gbj0ibnVtYmVyIj09dHlwZW9mIGU/ZTplP3QuZ2V0KGUsImxlbmd0
aCIpOmU9LTEsaT0ibnVtYmVyIj09dHlwZW9mIHI/cjpyP3QuZ2V0KHIsImxlbmd0aCIpOnI9LTEs
bz1pPDB8fG48MHx8aS1uIT09MCxlPT09LTEmJihlPW51bGwpLHI9PT0tMSYmKHI9bnVsbCksbC5z
ZW5kRXZlbnQodGhpcywiQGVudW1lcmFibGU6Y2hhbmdlIixbdGhpcyxlLHJdKSxvJiZ1LnByb3Bl
cnR5RGlkQ2hhbmdlKHRoaXMsImxlbmd0aCIpLHUucHJvcGVydHlEaWRDaGFuZ2UodGhpcywiW10i
KSx0aGlzfSxzb3J0Qnk6ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHM7cmV0dXJuIHRoaXMudG9B
cnJheSgpLnNvcnQoZnVuY3Rpb24ocixuKXtmb3IodmFyIGk9MDtpPGUubGVuZ3RoO2krKyl7dmFy
IG89ZVtpXSxhPXQuZ2V0KHIsbykscz10LmdldChuLG8pLHU9Yy5kZWZhdWx0KGEscyk7aWYodSly
ZXR1cm4gdX1yZXR1cm4gMH0pfX0pO2UuZGVmYXVsdD1nfSksZSgiZW1iZXItcnVudGltZS9taXhp
bnMvZXZlbnRlZCIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvbWl4aW4iLCJlbWJlci1tZXRhbC9l
dmVudHMiXSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO2UuZGVmYXVsdD10Lk1peGluLmNy
ZWF0ZSh7b246ZnVuY3Rpb24oZSx0LG4pe3JldHVybiByLmFkZExpc3RlbmVyKHRoaXMsZSx0LG4p
LHRoaXN9LG9uZTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIG58fChuPXQsdD1udWxsKSxyLmFkZExp
c3RlbmVyKHRoaXMsZSx0LG4sITApLHRoaXN9LHRyaWdnZXI6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0
PWFyZ3VtZW50cy5sZW5ndGgsbj1BcnJheSh0PjE/dC0xOjApLGk9MTtpPHQ7aSsrKW5baS0xXT1h
cmd1bWVudHNbaV07ci5zZW5kRXZlbnQodGhpcyxlLG4pfSxvZmY6ZnVuY3Rpb24oZSx0LG4pe3Jl
dHVybiByLnJlbW92ZUxpc3RlbmVyKHRoaXMsZSx0LG4pLHRoaXN9LGhhczpmdW5jdGlvbihlKXty
ZXR1cm4gci5oYXNMaXN0ZW5lcnModGhpcyxlKX19KX0pLGUoImVtYmVyLXJ1bnRpbWUvbWl4aW5z
L2ZyZWV6YWJsZSIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvZGVidWciLCJlbWJlci1tZXRhbC9t
aXhpbiIsImVtYmVyLW1ldGFsL3Byb3BlcnR5X2dldCIsImVtYmVyLW1ldGFsL3Byb3BlcnR5X3Nl
dCJdLGZ1bmN0aW9uKGUsdCxyLG4saSl7InVzZSBzdHJpY3QiO3ZhciBvPXIuTWl4aW4uY3JlYXRl
KHtpbml0OmZ1bmN0aW9uKCl7dGhpcy5fc3VwZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxpc0Zy
b3plbjohMSxmcmVlemU6ZnVuY3Rpb24oKXtyZXR1cm4gbi5nZXQodGhpcywiaXNGcm96ZW4iKT90
aGlzOihpLnNldCh0aGlzLCJpc0Zyb3plbiIsITApLHRoaXMpfX0pO2UuRnJlZXphYmxlPW87dmFy
IGE9IkZyb3plbiBvYmplY3QgY2Fubm90IGJlIG1vZGlmaWVkLiI7ZS5GUk9aRU5fRVJST1I9YX0p
LGUoImVtYmVyLXJ1bnRpbWUvbWl4aW5zL211dGFibGVfYXJyYXkiLFsiZXhwb3J0cyIsImVtYmVy
LW1ldGFsL3Byb3BlcnR5X2dldCIsImVtYmVyLW1ldGFsL2Vycm9yIiwiZW1iZXItbWV0YWwvbWl4
aW4iLCJlbWJlci1ydW50aW1lL21peGlucy9hcnJheSIsImVtYmVyLXJ1bnRpbWUvbWl4aW5zL211
dGFibGVfZW51bWVyYWJsZSIsImVtYmVyLXJ1bnRpbWUvbWl4aW5zL2VudW1lcmFibGUiXSxmdW5j
dGlvbihlLHQscixuLGksbyxhKXsidXNlIHN0cmljdCI7dmFyIHM9IkluZGV4IG91dCBvZiByYW5n
ZSIsdT1bXTtlLmRlZmF1bHQ9bi5NaXhpbi5jcmVhdGUoaS5kZWZhdWx0LG8uZGVmYXVsdCx7cmVw
bGFjZTpudWxsLGNsZWFyOmZ1bmN0aW9uKCl7dmFyIGU9dC5nZXQodGhpcywibGVuZ3RoIik7cmV0
dXJuIDA9PT1lP3RoaXM6KHRoaXMucmVwbGFjZSgwLGUsdSksdGhpcyl9LGluc2VydEF0OmZ1bmN0
aW9uKGUsbil7aWYoZT50LmdldCh0aGlzLCJsZW5ndGgiKSl0aHJvdyBuZXcgci5kZWZhdWx0KHMp
O3JldHVybiB0aGlzLnJlcGxhY2UoZSwwLFtuXSksdGhpc30scmVtb3ZlQXQ6ZnVuY3Rpb24oZSxu
KXtpZigibnVtYmVyIj09dHlwZW9mIGUpe2lmKGU8MHx8ZT49dC5nZXQodGhpcywibGVuZ3RoIikp
dGhyb3cgbmV3IHIuZGVmYXVsdChzKTt2b2lkIDA9PT1uJiYobj0xKSx0aGlzLnJlcGxhY2UoZSxu
LHUpfXJldHVybiB0aGlzfSxwdXNoT2JqZWN0OmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmluc2Vy
dEF0KHQuZ2V0KHRoaXMsImxlbmd0aCIpLGUpLGV9LHB1c2hPYmplY3RzOmZ1bmN0aW9uKGUpe2lm
KCFhLmRlZmF1bHQuZGV0ZWN0KGUpJiYhQXJyYXkuaXNBcnJheShlKSl0aHJvdyBuZXcgVHlwZUVy
cm9yKCJNdXN0IHBhc3MgRW1iZXIuRW51bWVyYWJsZSB0byBFbWJlci5NdXRhYmxlQXJyYXkjcHVz
aE9iamVjdHMiKTtyZXR1cm4gdGhpcy5yZXBsYWNlKHQuZ2V0KHRoaXMsImxlbmd0aCIpLDAsZSks
dGhpc30scG9wT2JqZWN0OmZ1bmN0aW9uKCl7dmFyIGU9dC5nZXQodGhpcywibGVuZ3RoIik7aWYo
MD09PWUpcmV0dXJuIG51bGw7dmFyIHI9aS5vYmplY3RBdCh0aGlzLGUtMSk7cmV0dXJuIHRoaXMu
cmVtb3ZlQXQoZS0xLDEpLHJ9LHNoaWZ0T2JqZWN0OmZ1bmN0aW9uKCl7aWYoMD09PXQuZ2V0KHRo
aXMsImxlbmd0aCIpKXJldHVybiBudWxsO3ZhciBlPWkub2JqZWN0QXQodGhpcywwKTtyZXR1cm4g
dGhpcy5yZW1vdmVBdCgwKSxlfSx1bnNoaWZ0T2JqZWN0OmZ1bmN0aW9uKGUpe3JldHVybiB0aGlz
Lmluc2VydEF0KDAsZSksZX0sdW5zaGlmdE9iamVjdHM6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMu
cmVwbGFjZSgwLDAsZSksdGhpc30scmV2ZXJzZU9iamVjdHM6ZnVuY3Rpb24oKXt2YXIgZT10Lmdl
dCh0aGlzLCJsZW5ndGgiKTtpZigwPT09ZSlyZXR1cm4gdGhpczt2YXIgcj10aGlzLnRvQXJyYXko
KS5yZXZlcnNlKCk7cmV0dXJuIHRoaXMucmVwbGFjZSgwLGUsciksdGhpc30sc2V0T2JqZWN0czpm
dW5jdGlvbihlKXtpZigwPT09ZS5sZW5ndGgpcmV0dXJuIHRoaXMuY2xlYXIoKTt2YXIgcj10Lmdl
dCh0aGlzLCJsZW5ndGgiKTtyZXR1cm4gdGhpcy5yZXBsYWNlKDAscixlKSx0aGlzfSxyZW1vdmVP
YmplY3Q6ZnVuY3Rpb24oZSl7Zm9yKHZhciByPXQuZ2V0KHRoaXMsImxlbmd0aCIpfHwwOy0tcj49
MDspe3ZhciBuPWkub2JqZWN0QXQodGhpcyxyKTtuPT09ZSYmdGhpcy5yZW1vdmVBdChyKX1yZXR1
cm4gdGhpc30sYWRkT2JqZWN0OmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmNvbnRhaW5zKGUpfHx0
aGlzLnB1c2hPYmplY3QoZSksdGhpc319KX0pLGUoImVtYmVyLXJ1bnRpbWUvbWl4aW5zL211dGFi
bGVfZW51bWVyYWJsZSIsWyJleHBvcnRzIiwiZW1iZXItcnVudGltZS9taXhpbnMvZW51bWVyYWJs
ZSIsImVtYmVyLW1ldGFsL21peGluIiwiZW1iZXItbWV0YWwvcHJvcGVydHlfZXZlbnRzIl0sZnVu
Y3Rpb24oZSx0LHIsbil7InVzZSBzdHJpY3QiO2UuZGVmYXVsdD1yLk1peGluLmNyZWF0ZSh0LmRl
ZmF1bHQse2FkZE9iamVjdDpudWxsLGFkZE9iamVjdHM6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpczty
ZXR1cm4gbi5iZWdpblByb3BlcnR5Q2hhbmdlcyh0aGlzKSxlLmZvckVhY2goZnVuY3Rpb24oZSl7
cmV0dXJuIHQuYWRkT2JqZWN0KGUpfSksbi5lbmRQcm9wZXJ0eUNoYW5nZXModGhpcyksdGhpc30s
cmVtb3ZlT2JqZWN0Om51bGwscmVtb3ZlT2JqZWN0czpmdW5jdGlvbihlKXtuLmJlZ2luUHJvcGVy
dHlDaGFuZ2VzKHRoaXMpO2Zvcih2YXIgdD1lLmxlbmd0aC0xO3Q+PTA7dC0tKXRoaXMucmVtb3Zl
T2JqZWN0KGVbdF0pO3JldHVybiBuLmVuZFByb3BlcnR5Q2hhbmdlcyh0aGlzKSx0aGlzfX0pfSks
ZSgiZW1iZXItcnVudGltZS9taXhpbnMvb2JzZXJ2YWJsZSIsWyJleHBvcnRzIiwiZW1iZXItbWV0
YWwvZGVidWciLCJlbWJlci1tZXRhbC9wcm9wZXJ0eV9nZXQiLCJlbWJlci1tZXRhbC9wcm9wZXJ0
eV9zZXQiLCJlbWJlci1tZXRhbC9nZXRfcHJvcGVydGllcyIsImVtYmVyLW1ldGFsL3NldF9wcm9w
ZXJ0aWVzIiwiZW1iZXItbWV0YWwvbWl4aW4iLCJlbWJlci1tZXRhbC9ldmVudHMiLCJlbWJlci1t
ZXRhbC9wcm9wZXJ0eV9ldmVudHMiLCJlbWJlci1tZXRhbC9vYnNlcnZlciIsImVtYmVyLW1ldGFs
L2NvbXB1dGVkIiwiZW1iZXItbWV0YWwvaXNfbm9uZSJdLGZ1bmN0aW9uKGUsdCxyLG4saSxvLGEs
cyx1LGwsYyxmKXsidXNlIHN0cmljdCI7ZS5kZWZhdWx0PWEuTWl4aW4uY3JlYXRlKHtnZXQ6ZnVu
Y3Rpb24oZSl7cmV0dXJuIHIuZ2V0KHRoaXMsZSl9LGdldFByb3BlcnRpZXM6ZnVuY3Rpb24oKXtm
b3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCx0PUFycmF5KGUpLHI9MDtyPGU7cisrKXRbcl09YXJn
dW1lbnRzW3JdO3JldHVybiBpLmRlZmF1bHQuYXBwbHkobnVsbCxbdGhpc10uY29uY2F0KHQpKX0s
c2V0OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIG4uc2V0KHRoaXMsZSx0KX0sc2V0UHJvcGVydGllczpm
dW5jdGlvbihlKXtyZXR1cm4gby5kZWZhdWx0KHRoaXMsZSl9LGJlZ2luUHJvcGVydHlDaGFuZ2Vz
OmZ1bmN0aW9uKCl7cmV0dXJuIHUuYmVnaW5Qcm9wZXJ0eUNoYW5nZXMoKSx0aGlzfSxlbmRQcm9w
ZXJ0eUNoYW5nZXM6ZnVuY3Rpb24oKXtyZXR1cm4gdS5lbmRQcm9wZXJ0eUNoYW5nZXMoKSx0aGlz
fSxwcm9wZXJ0eVdpbGxDaGFuZ2U6ZnVuY3Rpb24oZSl7cmV0dXJuIHUucHJvcGVydHlXaWxsQ2hh
bmdlKHRoaXMsZSksdGhpc30scHJvcGVydHlEaWRDaGFuZ2U6ZnVuY3Rpb24oZSl7cmV0dXJuIHUu
cHJvcGVydHlEaWRDaGFuZ2UodGhpcyxlKSx0aGlzfSxub3RpZnlQcm9wZXJ0eUNoYW5nZTpmdW5j
dGlvbihlKXtyZXR1cm4gdGhpcy5wcm9wZXJ0eVdpbGxDaGFuZ2UoZSksdGhpcy5wcm9wZXJ0eURp
ZENoYW5nZShlKSx0aGlzfSxhZGRPYnNlcnZlcjpmdW5jdGlvbihlLHQscil7bC5hZGRPYnNlcnZl
cih0aGlzLGUsdCxyKX0scmVtb3ZlT2JzZXJ2ZXI6ZnVuY3Rpb24oZSx0LHIpe2wucmVtb3ZlT2Jz
ZXJ2ZXIodGhpcyxlLHQscil9LGhhc09ic2VydmVyRm9yOmZ1bmN0aW9uKGUpe3JldHVybiBzLmhh
c0xpc3RlbmVycyh0aGlzLGUrIjpjaGFuZ2UiKX0sZ2V0V2l0aERlZmF1bHQ6ZnVuY3Rpb24oZSx0
KXtyZXR1cm4gci5nZXRXaXRoRGVmYXVsdCh0aGlzLGUsdCl9LGluY3JlbWVudFByb3BlcnR5OmZ1
bmN0aW9uKGUsdCl7cmV0dXJuIGYuZGVmYXVsdCh0KSYmKHQ9MSksbi5zZXQodGhpcyxlLChwYXJz
ZUZsb2F0KHIuZ2V0KHRoaXMsZSkpfHwwKSt0KX0sZGVjcmVtZW50UHJvcGVydHk6ZnVuY3Rpb24o
ZSx0KXtyZXR1cm4gZi5kZWZhdWx0KHQpJiYodD0xKSxuLnNldCh0aGlzLGUsKHIuZ2V0KHRoaXMs
ZSl8fDApLXQpfSx0b2dnbGVQcm9wZXJ0eTpmdW5jdGlvbihlKXtyZXR1cm4gbi5zZXQodGhpcyxl
LCFyLmdldCh0aGlzLGUpKX0sY2FjaGVGb3I6ZnVuY3Rpb24oZSl7cmV0dXJuIGMuY2FjaGVGb3Io
dGhpcyxlKX0sb2JzZXJ2ZXJzRm9yS2V5OmZ1bmN0aW9uKGUpe3JldHVybiBsLm9ic2VydmVyc0Zv
cih0aGlzLGUpfX0pfSksZSgiZW1iZXItcnVudGltZS9taXhpbnMvcHJvbWlzZV9wcm94eSIsWyJl
eHBvcnRzIiwiZW1iZXItbWV0YWwvcHJvcGVydHlfZ2V0IiwiZW1iZXItbWV0YWwvc2V0X3Byb3Bl
cnRpZXMiLCJlbWJlci1tZXRhbC9jb21wdXRlZCIsImVtYmVyLW1ldGFsL21peGluIiwiZW1iZXIt
bWV0YWwvZXJyb3IiXSxmdW5jdGlvbihlLHQscixuLGksbyl7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IGEoZSx0KXtyZXR1cm4gci5kZWZhdWx0KGUse2lzRnVsZmlsbGVkOiExLGlzUmVqZWN0ZWQ6ITF9
KSx0LnRoZW4oZnVuY3Rpb24odCl7cmV0dXJuIHIuZGVmYXVsdChlLHtjb250ZW50OnQsaXNGdWxm
aWxsZWQ6ITB9KSx0fSxmdW5jdGlvbih0KXt0aHJvdyByLmRlZmF1bHQoZSx7cmVhc29uOnQsaXNS
ZWplY3RlZDohMH0pLHR9LCJFbWJlcjogUHJvbWlzZVByb3h5Iil9ZnVuY3Rpb24gcyhlKXtyZXR1
cm4gZnVuY3Rpb24oKXt2YXIgcj10LmdldCh0aGlzLCJwcm9taXNlIik7cmV0dXJuIHJbZV0uYXBw
bHkocixhcmd1bWVudHMpfX12YXIgdT1uLmNvbXB1dGVkLm5vdCxsPW4uY29tcHV0ZWQub3I7ZS5k
ZWZhdWx0PWkuTWl4aW4uY3JlYXRlKHtyZWFzb246bnVsbCxpc1BlbmRpbmc6dSgiaXNTZXR0bGVk
IikucmVhZE9ubHkoKSxpc1NldHRsZWQ6bCgiaXNSZWplY3RlZCIsImlzRnVsZmlsbGVkIikucmVh
ZE9ubHkoKSxpc1JlamVjdGVkOiExLGlzRnVsZmlsbGVkOiExLHByb21pc2U6bi5jb21wdXRlZCh7
Z2V0OmZ1bmN0aW9uKCl7dGhyb3cgbmV3IG8uZGVmYXVsdCgiUHJvbWlzZVByb3h5J3MgcHJvbWlz
ZSBtdXN0IGJlIHNldCIpfSxzZXQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gYSh0aGlzLHQpfX0pLHRo
ZW46cygidGhlbiIpLGNhdGNoOnMoImNhdGNoIiksZmluYWxseTpzKCJmaW5hbGx5Iil9KX0pLGUo
ImVtYmVyLXJ1bnRpbWUvbWl4aW5zL3JlZ2lzdHJ5X3Byb3h5IixbImV4cG9ydHMiLCJlbWJlci1t
ZXRhbC9kZWJ1ZyIsImVtYmVyLW1ldGFsL21peGluIl0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiBuKGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0O3JldHVybih0PXRoaXMu
X19yZWdpc3RyeV9fKVtlXS5hcHBseSh0LGFyZ3VtZW50cyl9fWZ1bmN0aW9uIGkoZSx0KXt2YXIg
cj17fSxuPXtyZXNvbHZlOiJyZXNvbHZlUmVnaXN0cmF0aW9uIixyZWdpc3RlcjoicmVnaXN0ZXIi
LHVucmVnaXN0ZXI6InVucmVnaXN0ZXIiLGhhczoiaGFzUmVnaXN0cmF0aW9uIixvcHRpb246InJl
Z2lzdGVyT3B0aW9uIixvcHRpb25zOiJyZWdpc3Rlck9wdGlvbnMiLGdldE9wdGlvbnM6InJlZ2lz
dGVyZWRPcHRpb25zIixvcHRpb25zRm9yVHlwZToicmVnaXN0ZXJPcHRpb25zRm9yVHlwZSIsZ2V0
T3B0aW9uc0ZvclR5cGU6InJlZ2lzdGVyZWRPcHRpb25zRm9yVHlwZSIsaW5qZWN0aW9uOiJpbmpl
Y3QifTtmb3IodmFyIGkgaW4gbilyW2ldPW8oZSx0LGksbltpXSk7cmV0dXJuIHJ9ZnVuY3Rpb24g
byhlLHQscixuKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZVtuXS5hcHBseShlLGFyZ3VtZW50
cyl9fWUuYnVpbGRGYWtlUmVnaXN0cnlXaXRoRGVwcmVjYXRpb25zPWksZS5kZWZhdWx0PXIuTWl4
aW4uY3JlYXRlKHtfX3JlZ2lzdHJ5X186bnVsbCxyZXNvbHZlUmVnaXN0cmF0aW9uOm4oInJlc29s
dmUiKSxyZWdpc3RlcjpuKCJyZWdpc3RlciIpLHVucmVnaXN0ZXI6bigidW5yZWdpc3RlciIpLGhh
c1JlZ2lzdHJhdGlvbjpuKCJoYXMiKSxyZWdpc3Rlck9wdGlvbjpuKCJvcHRpb24iKSxyZWdpc3Rl
cmVkT3B0aW9uOm4oImdldE9wdGlvbiIpLHJlZ2lzdGVyT3B0aW9uczpuKCJvcHRpb25zIikscmVn
aXN0ZXJlZE9wdGlvbnM6bigiZ2V0T3B0aW9ucyIpLHJlZ2lzdGVyT3B0aW9uc0ZvclR5cGU6bigi
b3B0aW9uc0ZvclR5cGUiKSxyZWdpc3RlcmVkT3B0aW9uc0ZvclR5cGU6bigiZ2V0T3B0aW9uc0Zv
clR5cGUiKSxpbmplY3Q6bigiaW5qZWN0aW9uIil9KX0pLGUoImVtYmVyLXJ1bnRpbWUvbWl4aW5z
L3RhcmdldF9hY3Rpb25fc3VwcG9ydCIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvY29yZSIsImVt
YmVyLW1ldGFsL2RlYnVnIiwiZW1iZXItbWV0YWwvcHJvcGVydHlfZ2V0IiwiZW1iZXItbWV0YWwv
bWl4aW4iLCJlbWJlci1tZXRhbC9jb21wdXRlZCJdLGZ1bmN0aW9uKGUsdCxyLG4saSxvKXsidXNl
IHN0cmljdCI7dmFyIGE9aS5NaXhpbi5jcmVhdGUoe3RhcmdldDpudWxsLGFjdGlvbjpudWxsLGFj
dGlvbkNvbnRleHQ6bnVsbCx0YXJnZXRPYmplY3Q6by5jb21wdXRlZCgidGFyZ2V0IixmdW5jdGlv
bigpe2lmKHRoaXMuX3RhcmdldE9iamVjdClyZXR1cm4gdGhpcy5fdGFyZ2V0T2JqZWN0O3ZhciBl
PW4uZ2V0KHRoaXMsInRhcmdldCIpO2lmKCJzdHJpbmciPT10eXBlb2YgZSl7dmFyIHI9bi5nZXQo
dGhpcyxlKTtyZXR1cm4gdm9pZCAwPT09ciYmKHI9bi5nZXQodC5kZWZhdWx0Lmxvb2t1cCxlKSks
cn1yZXR1cm4gZX0pLGFjdGlvbkNvbnRleHRPYmplY3Q6by5jb21wdXRlZChmdW5jdGlvbigpe3Zh
ciBlPW4uZ2V0KHRoaXMsImFjdGlvbkNvbnRleHQiKTtpZigic3RyaW5nIj09dHlwZW9mIGUpe3Zh
ciByPW4uZ2V0KHRoaXMsZSk7cmV0dXJuIHZvaWQgMD09PXImJihyPW4uZ2V0KHQuZGVmYXVsdC5s
b29rdXAsZSkpLHJ9cmV0dXJuIGV9KS5wcm9wZXJ0eSgiYWN0aW9uQ29udGV4dCIpLHRyaWdnZXJB
Y3Rpb246ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7dmFyIHI9W107cmV0dXJuIHQmJnIucHVz
aCh0KSxyLmNvbmNhdChlKX12YXIgdD1hcmd1bWVudHMubGVuZ3RoPD0wfHx2b2lkIDA9PT1hcmd1
bWVudHNbMF0/e306YXJndW1lbnRzWzBdLHI9dC5hY3Rpb258fG4uZ2V0KHRoaXMsImFjdGlvbiIp
LGk9dC50YXJnZXR8fG4uZ2V0KHRoaXMsInRhcmdldE9iamVjdCIpLG89dC5hY3Rpb25Db250ZXh0
O2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgbyYmKG89bi5nZXQodGhpcywiYWN0aW9uQ29udGV4dE9i
amVjdCIpfHx0aGlzKSxpJiZyKXt2YXIgYTtyZXR1cm4gYT1pLnNlbmQ/aS5zZW5kLmFwcGx5KGks
ZShvLHIpKTppW3JdLmFwcGx5KGksZShvKSksYSE9PSExJiYoYT0hMCksYX1yZXR1cm4hMX19KTtl
LmRlZmF1bHQ9YX0pLGUoImVtYmVyLXJ1bnRpbWUvc3RyaW5nX3JlZ2lzdHJ5IixbImV4cG9ydHMi
XSxmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gdChlKXtpPWV9ZnVuY3Rpb24gcigp
e3JldHVybiBpfWZ1bmN0aW9uIG4oZSl7cmV0dXJuIGlbZV19ZS5zZXRTdHJpbmdzPXQsZS5nZXRT
dHJpbmdzPXIsZS5nZXQ9bjt2YXIgaT17fX0pLGUoImVtYmVyLXJ1bnRpbWUvc3lzdGVtL2FwcGxp
Y2F0aW9uIixbImV4cG9ydHMiLCJlbWJlci1ydW50aW1lL3N5c3RlbS9uYW1lc3BhY2UiXSxmdW5j
dGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtlLmRlZmF1bHQ9dC5kZWZhdWx0LmV4dGVuZCgpfSksZSgi
ZW1iZXItcnVudGltZS9zeXN0ZW0vYXJyYXlfcHJveHkiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFs
L2RlYnVnIiwiZW1iZXItbWV0YWwvcHJvcGVydHlfZ2V0IiwiZW1iZXItcnVudGltZS91dGlscyIs
ImVtYmVyLW1ldGFsL2NvbXB1dGVkIiwiZW1iZXItbWV0YWwvbWl4aW4iLCJlbWJlci1tZXRhbC9w
cm9wZXJ0eV9ldmVudHMiLCJlbWJlci1tZXRhbC9lcnJvciIsImVtYmVyLXJ1bnRpbWUvc3lzdGVt
L29iamVjdCIsImVtYmVyLXJ1bnRpbWUvbWl4aW5zL211dGFibGVfYXJyYXkiLCJlbWJlci1ydW50
aW1lL21peGlucy9lbnVtZXJhYmxlIiwiZW1iZXItbWV0YWwvYWxpYXMiLCJlbWJlci1ydW50aW1l
L21peGlucy9hcnJheSJdLGZ1bmN0aW9uKGUsdCxyLG4saSxvLGEscyx1LGwsYyxmLGQpeyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiBwKCl7cmV0dXJuIHRoaXN9dmFyIGg9IkluZGV4IG91dCBvZiByYW5n
ZSIsbT1bXSx2PXUuZGVmYXVsdC5leHRlbmQobC5kZWZhdWx0LHtjb250ZW50Om51bGwsYXJyYW5n
ZWRDb250ZW50OmYuZGVmYXVsdCgiY29udGVudCIpLG9iamVjdEF0Q29udGVudDpmdW5jdGlvbihl
KXtyZXR1cm4gZC5vYmplY3RBdChyLmdldCh0aGlzLCJhcnJhbmdlZENvbnRlbnQiKSxlKX0scmVw
bGFjZUNvbnRlbnQ6ZnVuY3Rpb24oZSx0LG4pe3IuZ2V0KHRoaXMsImNvbnRlbnQiKS5yZXBsYWNl
KGUsdCxuKX0sX2NvbnRlbnRXaWxsQ2hhbmdlOm8uX2JlZm9yZU9ic2VydmVyKCJjb250ZW50Iixm
dW5jdGlvbigpe3RoaXMuX3RlYXJkb3duQ29udGVudCgpfSksX3RlYXJkb3duQ29udGVudDpmdW5j
dGlvbigpe3ZhciBlPXIuZ2V0KHRoaXMsImNvbnRlbnQiKTtlJiZkLnJlbW92ZUFycmF5T2JzZXJ2
ZXIoZSx0aGlzLHt3aWxsQ2hhbmdlOiJjb250ZW50QXJyYXlXaWxsQ2hhbmdlIixkaWRDaGFuZ2U6
ImNvbnRlbnRBcnJheURpZENoYW5nZSJ9KX0sY29udGVudEFycmF5V2lsbENoYW5nZTpwLGNvbnRl
bnRBcnJheURpZENoYW5nZTpwLF9jb250ZW50RGlkQ2hhbmdlOm8ub2JzZXJ2ZXIoImNvbnRlbnQi
LGZ1bmN0aW9uKCl7ci5nZXQodGhpcywiY29udGVudCIpO3RoaXMuX3NldHVwQ29udGVudCgpfSks
X3NldHVwQ29udGVudDpmdW5jdGlvbigpe3ZhciBlPXIuZ2V0KHRoaXMsImNvbnRlbnQiKTtlJiZk
LmFkZEFycmF5T2JzZXJ2ZXIoZSx0aGlzLHt3aWxsQ2hhbmdlOiJjb250ZW50QXJyYXlXaWxsQ2hh
bmdlIixkaWRDaGFuZ2U6ImNvbnRlbnRBcnJheURpZENoYW5nZSJ9KX0sX2FycmFuZ2VkQ29udGVu
dFdpbGxDaGFuZ2U6by5fYmVmb3JlT2JzZXJ2ZXIoImFycmFuZ2VkQ29udGVudCIsZnVuY3Rpb24o
KXt2YXIgZT1yLmdldCh0aGlzLCJhcnJhbmdlZENvbnRlbnQiKSx0PWU/ci5nZXQoZSwibGVuZ3Ro
Iik6MDt0aGlzLmFycmFuZ2VkQ29udGVudEFycmF5V2lsbENoYW5nZSh0aGlzLDAsdCx2b2lkIDAp
LHRoaXMuYXJyYW5nZWRDb250ZW50V2lsbENoYW5nZSh0aGlzKSx0aGlzLl90ZWFyZG93bkFycmFu
Z2VkQ29udGVudChlKX0pLF9hcnJhbmdlZENvbnRlbnREaWRDaGFuZ2U6by5vYnNlcnZlcigiYXJy
YW5nZWRDb250ZW50IixmdW5jdGlvbigpe3ZhciBlPXIuZ2V0KHRoaXMsImFycmFuZ2VkQ29udGVu
dCIpLHQ9ZT9yLmdldChlLCJsZW5ndGgiKTowO3RoaXMuX3NldHVwQXJyYW5nZWRDb250ZW50KCks
dGhpcy5hcnJhbmdlZENvbnRlbnREaWRDaGFuZ2UodGhpcyksdGhpcy5hcnJhbmdlZENvbnRlbnRB
cnJheURpZENoYW5nZSh0aGlzLDAsdm9pZCAwLHQpfSksX3NldHVwQXJyYW5nZWRDb250ZW50OmZ1
bmN0aW9uKCl7dmFyIGU9ci5nZXQodGhpcywiYXJyYW5nZWRDb250ZW50Iik7ZSYmZC5hZGRBcnJh
eU9ic2VydmVyKGUsdGhpcyx7d2lsbENoYW5nZToiYXJyYW5nZWRDb250ZW50QXJyYXlXaWxsQ2hh
bmdlIixkaWRDaGFuZ2U6ImFycmFuZ2VkQ29udGVudEFycmF5RGlkQ2hhbmdlIn0pfSxfdGVhcmRv
d25BcnJhbmdlZENvbnRlbnQ6ZnVuY3Rpb24oKXt2YXIgZT1yLmdldCh0aGlzLCJhcnJhbmdlZENv
bnRlbnQiKTtlJiZkLnJlbW92ZUFycmF5T2JzZXJ2ZXIoZSx0aGlzLHt3aWxsQ2hhbmdlOiJhcnJh
bmdlZENvbnRlbnRBcnJheVdpbGxDaGFuZ2UiLGRpZENoYW5nZToiYXJyYW5nZWRDb250ZW50QXJy
YXlEaWRDaGFuZ2UifSl9LGFycmFuZ2VkQ29udGVudFdpbGxDaGFuZ2U6cCxhcnJhbmdlZENvbnRl
bnREaWRDaGFuZ2U6cCxvYmplY3RBdDpmdW5jdGlvbihlKXtyZXR1cm4gci5nZXQodGhpcywiY29u
dGVudCIpJiZ0aGlzLm9iamVjdEF0Q29udGVudChlKX0sbGVuZ3RoOmkuY29tcHV0ZWQoZnVuY3Rp
b24oKXt2YXIgZT1yLmdldCh0aGlzLCJhcnJhbmdlZENvbnRlbnQiKTtyZXR1cm4gZT9yLmdldChl
LCJsZW5ndGgiKTowfSksX3JlcGxhY2U6ZnVuY3Rpb24oZSx0LG4pe3ZhciBpPXIuZ2V0KHRoaXMs
ImNvbnRlbnQiKTtyZXR1cm4gaSYmdGhpcy5yZXBsYWNlQ29udGVudChlLHQsbiksdGhpc30scmVw
bGFjZTpmdW5jdGlvbigpe2lmKHIuZ2V0KHRoaXMsImFycmFuZ2VkQ29udGVudCIpIT09ci5nZXQo
dGhpcywiY29udGVudCIpKXRocm93IG5ldyBzLmRlZmF1bHQoIlVzaW5nIHJlcGxhY2Ugb24gYW4g
YXJyYW5nZWQgQXJyYXlQcm94eSBpcyBub3QgYWxsb3dlZC4iKTt0aGlzLl9yZXBsYWNlLmFwcGx5
KHRoaXMsYXJndW1lbnRzKX0sX2luc2VydEF0OmZ1bmN0aW9uKGUsdCl7aWYoZT5yLmdldCh0aGlz
LCJjb250ZW50Lmxlbmd0aCIpKXRocm93IG5ldyBzLmRlZmF1bHQoaCk7cmV0dXJuIHRoaXMuX3Jl
cGxhY2UoZSwwLFt0XSksdGhpc30saW5zZXJ0QXQ6ZnVuY3Rpb24oZSx0KXtpZihyLmdldCh0aGlz
LCJhcnJhbmdlZENvbnRlbnQiKT09PXIuZ2V0KHRoaXMsImNvbnRlbnQiKSlyZXR1cm4gdGhpcy5f
aW5zZXJ0QXQoZSx0KTt0aHJvdyBuZXcgcy5kZWZhdWx0KCJVc2luZyBpbnNlcnRBdCBvbiBhbiBh
cnJhbmdlZCBBcnJheVByb3h5IGlzIG5vdCBhbGxvd2VkLiIpfSxyZW1vdmVBdDpmdW5jdGlvbihl
LHQpe2lmKCJudW1iZXIiPT10eXBlb2YgZSl7dmFyIG4saT1yLmdldCh0aGlzLCJjb250ZW50Iiks
bz1yLmdldCh0aGlzLCJhcnJhbmdlZENvbnRlbnQiKSx1PVtdO2lmKGU8MHx8ZT49ci5nZXQodGhp
cywibGVuZ3RoIikpdGhyb3cgbmV3IHMuZGVmYXVsdChoKTtmb3Iodm9pZCAwPT09dCYmKHQ9MSks
bj1lO248ZSt0O24rKyl1LnB1c2goaS5pbmRleE9mKGQub2JqZWN0QXQobyxuKSkpO2Zvcih1LnNv
cnQoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdC1lfSksYS5iZWdpblByb3BlcnR5Q2hhbmdlcygpLG49
MDtuPHUubGVuZ3RoO24rKyl0aGlzLl9yZXBsYWNlKHVbbl0sMSxtKTthLmVuZFByb3BlcnR5Q2hh
bmdlcygpfXJldHVybiB0aGlzfSxwdXNoT2JqZWN0OmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9p
bnNlcnRBdChyLmdldCh0aGlzLCJjb250ZW50Lmxlbmd0aCIpLGUpLGV9LHB1c2hPYmplY3RzOmZ1
bmN0aW9uKGUpe2lmKCFjLmRlZmF1bHQuZGV0ZWN0KGUpJiYhbi5pc0FycmF5KGUpKXRocm93IG5l
dyBUeXBlRXJyb3IoIk11c3QgcGFzcyBFbWJlci5FbnVtZXJhYmxlIHRvIEVtYmVyLk11dGFibGVB
cnJheSNwdXNoT2JqZWN0cyIpO3JldHVybiB0aGlzLl9yZXBsYWNlKHIuZ2V0KHRoaXMsImxlbmd0
aCIpLDAsZSksdGhpc30sc2V0T2JqZWN0czpmdW5jdGlvbihlKXtpZigwPT09ZS5sZW5ndGgpcmV0
dXJuIHRoaXMuY2xlYXIoKTt2YXIgdD1yLmdldCh0aGlzLCJsZW5ndGgiKTtyZXR1cm4gdGhpcy5f
cmVwbGFjZSgwLHQsZSksdGhpc30sdW5zaGlmdE9iamVjdDpmdW5jdGlvbihlKXtyZXR1cm4gdGhp
cy5faW5zZXJ0QXQoMCxlKSxlfSx1bnNoaWZ0T2JqZWN0czpmdW5jdGlvbihlKXtyZXR1cm4gdGhp
cy5fcmVwbGFjZSgwLDAsZSksdGhpc30sc2xpY2U6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnRvQXJy
YXkoKTtyZXR1cm4gZS5zbGljZS5hcHBseShlLGFyZ3VtZW50cyl9LGFycmFuZ2VkQ29udGVudEFy
cmF5V2lsbENoYW5nZTpmdW5jdGlvbihlLHQscixuKXt0aGlzLmFycmF5Q29udGVudFdpbGxDaGFu
Z2UodCxyLG4pfSxhcnJhbmdlZENvbnRlbnRBcnJheURpZENoYW5nZTpmdW5jdGlvbihlLHQscixu
KXt0aGlzLmFycmF5Q29udGVudERpZENoYW5nZSh0LHIsbil9LGluaXQ6ZnVuY3Rpb24oKXt0aGlz
Ll9zdXBlci5hcHBseSh0aGlzLGFyZ3VtZW50cyksdGhpcy5fc2V0dXBDb250ZW50KCksdGhpcy5f
c2V0dXBBcnJhbmdlZENvbnRlbnQoKX0sd2lsbERlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLl90ZWFy
ZG93bkFycmFuZ2VkQ29udGVudCgpLHRoaXMuX3RlYXJkb3duQ29udGVudCgpfX0pO2UuZGVmYXVs
dD12fSksZSgiZW1iZXItcnVudGltZS9zeXN0ZW0vY29udGFpbmVyIixbImV4cG9ydHMiLCJlbWJl
ci1tZXRhbC9wcm9wZXJ0eV9zZXQiLCJjb250YWluZXIvcmVnaXN0cnkiLCJjb250YWluZXIvY29u
dGFpbmVyIiwiY29udGFpbmVyL293bmVyIl0sZnVuY3Rpb24oZSx0LHIsbixpKXsidXNlIHN0cmlj
dCI7ci5kZWZhdWx0LnNldD10LnNldCxuLmRlZmF1bHQuc2V0PXQuc2V0LGUuUmVnaXN0cnk9ci5k
ZWZhdWx0LGUuQ29udGFpbmVyPW4uZGVmYXVsdCxlLmdldE93bmVyPWkuZ2V0T3duZXIsZS5zZXRP
d25lcj1pLnNldE93bmVyfSksZSgiZW1iZXItcnVudGltZS9zeXN0ZW0vY29yZV9vYmplY3QiLFsi
ZXhwb3J0cyIsImVtYmVyLW1ldGFsL2RlYnVnIiwiZW1iZXItbWV0YWwvZmVhdHVyZXMiLCJlbWJl
ci1tZXRhbC9hc3NpZ24iLCJlbWJlci1tZXRhbC9wcm9wZXJ0eV9nZXQiLCJlbWJlci1tZXRhbC91
dGlscyIsImVtYmVyLW1ldGFsL21ldGEiLCJlbWJlci1tZXRhbC9jaGFpbnMiLCJlbWJlci1tZXRh
bC9ldmVudHMiLCJlbWJlci1tZXRhbC9taXhpbiIsImVtYmVyLW1ldGFsL2Vycm9yIiwiZW1iZXIt
cnVudGltZS9taXhpbnMvYWN0aW9uX2hhbmRsZXIiLCJlbWJlci1tZXRhbC9wcm9wZXJ0aWVzIiwi
ZW1iZXItbWV0YWwvYmluZGluZyIsImVtYmVyLW1ldGFsL2NvbXB1dGVkIiwiZW1iZXItbWV0YWwv
aW5qZWN0ZWRfcHJvcGVydHkiLCJlbWJlci1tZXRhbC9ydW5fbG9vcCIsImVtYmVyLW1ldGFsL3dh
dGNoaW5nIiwiZW1iZXItbWV0YWwvY29yZSIsImVtYmVyLXJ1bnRpbWUvaW5qZWN0IiwiZW1iZXIt
bWV0YWwvc3ltYm9sIl0sZnVuY3Rpb24oZSx0LHIsbixpLG8sYSxzLHUsbCxjLGYsZCxwLGgsbSx2
LGIsZyx5LF8peyJubyB1c2Ugc3RyaWN0IjtmdW5jdGlvbiB3KCl7dmFyIGUsdD0hMSxyPWZ1bmN0
aW9uKCl7dHx8ci5wcm90bygpLGFyZ3VtZW50cy5sZW5ndGg+MCYmKGU9W2FyZ3VtZW50c1swXV0p
LHRoaXMuX19kZWZpbmVOb25FbnVtZXJhYmxlKG8uR1VJRF9LRVlfUFJPUEVSVFkpO3ZhciBpPWEu
bWV0YSh0aGlzKSxmPWkucHJvdG87aWYoaS5wcm90bz10aGlzLGUpe3ZhciBkPWU7ZT1udWxsO2Zv
cih2YXIgcD10aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXMsaD10aGlzLm1lcmdlZFByb3BlcnRp
ZXMsbT0wLHY9ZC5sZW5ndGg7bTx2O20rKyl7dmFyIGI9ZFttXTtpZigib2JqZWN0IiE9dHlwZW9m
IGImJnZvaWQgMCE9PWIpdGhyb3cgbmV3IGMuZGVmYXVsdCgiRW1iZXIuT2JqZWN0LmNyZWF0ZSBv
bmx5IGFjY2VwdHMgb2JqZWN0cy4iKTtpZihiKWZvcih2YXIgZz1PYmplY3Qua2V5cyhiKSx5PTAs
Xz1nLmxlbmd0aDt5PF87eSsrKXt2YXIgdz1nW3ldLHg9Ylt3XTtsLklTX0JJTkRJTkcudGVzdCh3
KSYmaS53cml0ZUJpbmRpbmdzKHcseCk7dmFyIEM9dGhpc1t3XSxFPW51bGwhPT1DJiYib2JqZWN0
Ij09dHlwZW9mIEMmJkMuaXNEZXNjcmlwdG9yP0M6dm9pZCAwO2lmKHAmJnAubGVuZ3RoPjAmJnAu
aW5kZXhPZih3KT49MCl7dmFyIFQ9dGhpc1t3XTt4PVQ/ImZ1bmN0aW9uIj09dHlwZW9mIFQuY29u
Y2F0P1QuY29uY2F0KHgpOm8ubWFrZUFycmF5KFQpLmNvbmNhdCh4KTpvLm1ha2VBcnJheSh4KX1p
ZihoJiZoLmxlbmd0aCYmaC5pbmRleE9mKHcpPj0wKXt2YXIgTj10aGlzW3ddO3g9bi5kZWZhdWx0
KHt9LE4seCl9RT9FLnNldCh0aGlzLHcseCk6ImZ1bmN0aW9uIiE9dHlwZW9mIHRoaXMuc2V0VW5r
bm93blByb3BlcnR5fHx3IGluIHRoaXM/dGhpc1t3XT14OnRoaXMuc2V0VW5rbm93blByb3BlcnR5
KHcseCl9fX1PKHRoaXMsaSk7dmFyIFM9YXJndW1lbnRzLmxlbmd0aDtpZigwPT09Uyl0aGlzLmlu
aXQoKTtlbHNlIGlmKDE9PT1TKXRoaXMuaW5pdChhcmd1bWVudHNbMF0pO2Vsc2V7Zm9yKHZhciBB
PW5ldyBBcnJheShTKSxQPTA7UDxTO1ArKylBW1BdPWFyZ3VtZW50c1tQXTt0aGlzLmluaXQuYXBw
bHkodGhpcyxBKX10aGlzW2tdKCksaS5wcm90bz1mLHMuZmluaXNoQ2hhaW5zKHRoaXMpLHUuc2Vu
ZEV2ZW50KHRoaXMsImluaXQiKX07cmV0dXJuIHIudG9TdHJpbmc9bC5NaXhpbi5wcm90b3R5cGUu
dG9TdHJpbmcsci53aWxsUmVvcGVuPWZ1bmN0aW9uKCl7dCYmKHIuUHJvdG90eXBlTWl4aW49bC5N
aXhpbi5jcmVhdGUoci5Qcm90b3R5cGVNaXhpbikpLHQ9ITF9LHIuX2luaXRQcm9wZXJ0aWVzPWZ1
bmN0aW9uKHQpe2U9dH0sci5wcm90bz1mdW5jdGlvbigpe3ZhciBlPXIuc3VwZXJjbGFzcztyZXR1
cm4gZSYmZS5wcm90bygpLHR8fCh0PSEwLHIuUHJvdG90eXBlTWl4aW4uYXBwbHlQYXJ0aWFsKHIu
cHJvdG90eXBlKSksdGhpcy5wcm90b3R5cGV9LHJ9dmFyIHgsaz1fLmRlZmF1bHQoIlBPU1RfSU5J
VCIpO2UuUE9TVF9JTklUPWs7dmFyIEM9di5kZWZhdWx0LnNjaGVkdWxlLEU9bC5NaXhpbi5fYXBw
bHksTz1sLk1peGluLmZpbmlzaFBhcnRpYWwsVD1sLk1peGluLnByb3RvdHlwZS5yZW9wZW4sTj0h
MSxTPXcoKTtTLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIkVtYmVyLkNvcmVPYmplY3QifSxT
LlByb3RvdHlwZU1peGluPWwuTWl4aW4uY3JlYXRlKCh4PXtyZW9wZW46ZnVuY3Rpb24oKXtmb3Io
dmFyIGU9YXJndW1lbnRzLmxlbmd0aCx0PUFycmF5KGUpLHI9MDtyPGU7cisrKXRbcl09YXJndW1l
bnRzW3JdO3JldHVybiBFKHRoaXMsdCwhMCksdGhpc30saW5pdDpmdW5jdGlvbigpe319LHhba109
ZnVuY3Rpb24oKXt9LHguX19kZWZpbmVOb25FbnVtZXJhYmxlPWZ1bmN0aW9uKGUpe09iamVjdC5k
ZWZpbmVQcm9wZXJ0eSh0aGlzLGUubmFtZSxlLmRlc2NyaXB0b3IpfSx4LmNvbmNhdGVuYXRlZFBy
b3BlcnRpZXM9bnVsbCx4Lm1lcmdlZFByb3BlcnRpZXM9bnVsbCx4LmlzRGVzdHJveWVkPSExLHgu
aXNEZXN0cm95aW5nPSExLHguZGVzdHJveT1mdW5jdGlvbigpe2lmKCF0aGlzLmlzRGVzdHJveWlu
ZylyZXR1cm4gdGhpcy5pc0Rlc3Ryb3lpbmc9ITAsQygiYWN0aW9ucyIsdGhpcyx0aGlzLndpbGxE
ZXN0cm95KSxDKCJkZXN0cm95Iix0aGlzLHRoaXMuX3NjaGVkdWxlZERlc3Ryb3kpLHRoaXN9LHgu
d2lsbERlc3Ryb3k9Zy5LLHguX3NjaGVkdWxlZERlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLmlzRGVz
dHJveWVkfHwoYi5kZXN0cm95KHRoaXMpLHRoaXMuaXNEZXN0cm95ZWQ9ITApfSx4LmJpbmQ9ZnVu
Y3Rpb24oZSx0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIHAuQmluZGluZ3x8KHQ9cC5CaW5kaW5nLmZy
b20odCkpLHQudG8oZSkuY29ubmVjdCh0aGlzKSx0fSx4LnRvU3RyaW5nPWZ1bmN0aW9uKCl7dmFy
IGU9ImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMudG9TdHJpbmdFeHRlbnNpb24sdD1lPyI6Iit0aGlz
LnRvU3RyaW5nRXh0ZW5zaW9uKCk6IiIscj0iPCIrdGhpcy5jb25zdHJ1Y3Rvci50b1N0cmluZygp
KyI6IitvLmd1aWRGb3IodGhpcykrdCsiPiI7cmV0dXJuIHJ9LHgpKSxTLlByb3RvdHlwZU1peGlu
Lm93bmVyQ29uc3RydWN0b3I9UyxTLl9fc3VwZXJfXz1udWxsO3ZhciBBPXtDbGFzc01peGluOmwu
UkVRVUlSRUQsUHJvdG90eXBlTWl4aW46bC5SRVFVSVJFRCxpc0NsYXNzOiEwLGlzTWV0aG9kOiEx
LGV4dGVuZDpmdW5jdGlvbigpe3ZhciBlLHQ9dygpO3JldHVybiB0LkNsYXNzTWl4aW49bC5NaXhp
bi5jcmVhdGUodGhpcy5DbGFzc01peGluKSx0LlByb3RvdHlwZU1peGluPWwuTWl4aW4uY3JlYXRl
KHRoaXMuUHJvdG90eXBlTWl4aW4pLHQuQ2xhc3NNaXhpbi5vd25lckNvbnN0cnVjdG9yPXQsdC5Q
cm90b3R5cGVNaXhpbi5vd25lckNvbnN0cnVjdG9yPXQsVC5hcHBseSh0LlByb3RvdHlwZU1peGlu
LGFyZ3VtZW50cyksdC5zdXBlcmNsYXNzPXRoaXMsdC5fX3N1cGVyX189dGhpcy5wcm90b3R5cGUs
ZT10LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHRoaXMucHJvdG90eXBlKSxlLmNvbnN0cnVjdG9y
PXQsby5nZW5lcmF0ZUd1aWQoZSksYS5tZXRhKGUpLnByb3RvPWUsdC5DbGFzc01peGluLmFwcGx5
KHQpLHR9LGNyZWF0ZTpmdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLHQ9YXJndW1lbnRzLmxlbmd0
aCxyPUFycmF5KHQpLG49MDtuPHQ7bisrKXJbbl09YXJndW1lbnRzW25dO3JldHVybiByLmxlbmd0
aD4wJiZ0aGlzLl9pbml0UHJvcGVydGllcyhyKSxuZXcgZX0scmVvcGVuOmZ1bmN0aW9uKCl7cmV0
dXJuIHRoaXMud2lsbFJlb3BlbigpLFQuYXBwbHkodGhpcy5Qcm90b3R5cGVNaXhpbixhcmd1bWVu
dHMpLHRoaXN9LHJlb3BlbkNsYXNzOmZ1bmN0aW9uKCl7cmV0dXJuIFQuYXBwbHkodGhpcy5DbGFz
c01peGluLGFyZ3VtZW50cyksRSh0aGlzLGFyZ3VtZW50cywhMSksdGhpc30sZGV0ZWN0OmZ1bmN0
aW9uKGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXJldHVybiExO2Zvcig7ZTspe2lmKGU9PT10
aGlzKXJldHVybiEwO2U9ZS5zdXBlcmNsYXNzfXJldHVybiExfSxkZXRlY3RJbnN0YW5jZTpmdW5j
dGlvbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIHRoaXN9LG1ldGFGb3JQcm9wZXJ0eTpmdW5jdGlv
bihlKXt2YXIgdD10aGlzLnByb3RvKCkscj10W2VdLG49bnVsbCE9PXImJiJvYmplY3QiPT10eXBl
b2YgciYmci5pc0Rlc2NyaXB0b3I/cjp2b2lkIDA7cmV0dXJuIG4uX21ldGF8fHt9fSxfY29tcHV0
ZWRQcm9wZXJ0aWVzOmguY29tcHV0ZWQoZnVuY3Rpb24oKXtOPSEwO3ZhciBlLHQ9dGhpcy5wcm90
bygpLHI9W107Zm9yKHZhciBuIGluIHQpZT10W25dLGUmJmUuaXNEZXNjcmlwdG9yJiZyLnB1c2go
e25hbWU6bixtZXRhOmUuX21ldGF9KTtyZXR1cm4gcn0pLnJlYWRPbmx5KCksZWFjaENvbXB1dGVk
UHJvcGVydHk6ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHIsbj17fSxvPWkuZ2V0KHRoaXMsIl9jb21w
dXRlZFByb3BlcnRpZXMiKSxhPTAscz1vLmxlbmd0aDthPHM7YSsrKXI9b1thXSxlLmNhbGwodHx8
dGhpcyxyLm5hbWUsci5tZXRhfHxuKX19O0EuX2xhenlJbmplY3Rpb25zPWZ1bmN0aW9uKCl7dmFy
IGUsdCxyPXt9LG49dGhpcy5wcm90bygpO2ZvcihlIGluIG4pdD1uW2VdLHQgaW5zdGFuY2VvZiBt
LmRlZmF1bHQmJihyW2VdPXQudHlwZSsiOiIrKHQubmFtZXx8ZSkpO3JldHVybiByfTt2YXIgUD1s
Lk1peGluLmNyZWF0ZShBKTtQLm93bmVyQ29uc3RydWN0b3I9UyxTLkNsYXNzTWl4aW49UCxQLmFw
cGx5KFMpLFMucmVvcGVuKHtkaWREZWZpbmVQcm9wZXJ0eTpmdW5jdGlvbihlLHQscil7aWYoTiE9
PSExJiZyIGluc3RhbmNlb2YgaC5Db21wdXRlZFByb3BlcnR5KXt2YXIgbj1hLm1ldGEodGhpcy5j
b25zdHJ1Y3RvcikucmVhZGFibGVDYWNoZSgpO24mJnZvaWQgMCE9PW4uX2NvbXB1dGVkUHJvcGVy
dGllcyYmKG4uX2NvbXB1dGVkUHJvcGVydGllcz12b2lkIDApfX19KSxlLmRlZmF1bHQ9U30pLGUo
ImVtYmVyLXJ1bnRpbWUvc3lzdGVtL2VhY2hfcHJveHkiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFs
L2RlYnVnIiwiZW1iZXItbWV0YWwvcHJvcGVydHlfZ2V0IiwiZW1iZXItbWV0YWwvb2JzZXJ2ZXIi
LCJlbWJlci1tZXRhbC9wcm9wZXJ0eV9ldmVudHMiLCJlbWJlci1tZXRhbC9lbXB0eV9vYmplY3Qi
LCJlbWJlci1ydW50aW1lL21peGlucy9hcnJheSJdLGZ1bmN0aW9uKGUsdCxyLG4saSxvLGEpeyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiBzKGUpe3RoaXMuX2NvbnRlbnQ9ZSx0aGlzLl9rZXlzPXZvaWQg
MCx0aGlzLl9fZW1iZXJfbWV0YV9fPW51bGx9ZnVuY3Rpb24gdShlLHQscixpLG8pe2Zvcig7LS1v
Pj1pOyl7dmFyIHM9YS5vYmplY3RBdChlLG8pO3MmJihuLl9hZGRCZWZvcmVPYnNlcnZlcihzLHQs
ciwiY29udGVudEtleVdpbGxDaGFuZ2UiKSxuLmFkZE9ic2VydmVyKHMsdCxyLCJjb250ZW50S2V5
RGlkQ2hhbmdlIikpfX1mdW5jdGlvbiBsKGUsdCxyLGksbyl7Zm9yKDstLW8+PWk7KXt2YXIgcz1h
Lm9iamVjdEF0KGUsbyk7cyYmKG4uX3JlbW92ZUJlZm9yZU9ic2VydmVyKHMsdCxyLCJjb250ZW50
S2V5V2lsbENoYW5nZSIpLG4ucmVtb3ZlT2JzZXJ2ZXIocyx0LHIsImNvbnRlbnRLZXlEaWRDaGFu
Z2UiKSl9fXMucHJvdG90eXBlPXtfX2RlZmluZU5vbkVudW1lcmFibGU6ZnVuY3Rpb24oZSl7dGhp
c1tlLm5hbWVdPWUuZGVzY3JpcHRvci52YWx1ZX0sYXJyYXlXaWxsQ2hhbmdlOmZ1bmN0aW9uKGUs
dCxyLG4pe3ZhciBvPXRoaXMuX2tleXMsYT1yPjA/dCtyOi0xO2Zvcih2YXIgcyBpbiBvKWE+MCYm
bChlLHMsdGhpcyx0LGEpLGkucHJvcGVydHlXaWxsQ2hhbmdlKHRoaXMscyl9LGFycmF5RGlkQ2hh
bmdlOmZ1bmN0aW9uKGUsdCxyLG4pe3ZhciBvPXRoaXMuX2tleXMsYT1uPjA/dCtuOi0xO2Zvcih2
YXIgcyBpbiBvKWE+MCYmdShlLHMsdGhpcyx0LGEpLGkucHJvcGVydHlEaWRDaGFuZ2UodGhpcyxz
KX0sd2lsbFdhdGNoUHJvcGVydHk6ZnVuY3Rpb24oZSl7dGhpcy5iZWdpbk9ic2VydmluZ0NvbnRl
bnRLZXkoZSl9LGRpZFVud2F0Y2hQcm9wZXJ0eTpmdW5jdGlvbihlKXt0aGlzLnN0b3BPYnNlcnZp
bmdDb250ZW50S2V5KGUpfSxiZWdpbk9ic2VydmluZ0NvbnRlbnRLZXk6ZnVuY3Rpb24oZSl7dmFy
IHQ9dGhpcy5fa2V5cztpZih0fHwodD10aGlzLl9rZXlzPW5ldyBvLmRlZmF1bHQpLHRbZV0pdFtl
XSsrO2Vsc2V7dFtlXT0xO3ZhciBuPXRoaXMuX2NvbnRlbnQsaT1yLmdldChuLCJsZW5ndGgiKTt1
KG4sZSx0aGlzLDAsaSl9fSxzdG9wT2JzZXJ2aW5nQ29udGVudEtleTpmdW5jdGlvbihlKXt2YXIg
dD10aGlzLl9rZXlzO2lmKHQmJnRbZV0+MCYmLS10W2VdPD0wKXt2YXIgbj10aGlzLl9jb250ZW50
LGk9ci5nZXQobiwibGVuZ3RoIik7bChuLGUsdGhpcywwLGkpfX0sY29udGVudEtleVdpbGxDaGFu
Z2U6ZnVuY3Rpb24oZSx0KXtpLnByb3BlcnR5V2lsbENoYW5nZSh0aGlzLHQpfSxjb250ZW50S2V5
RGlkQ2hhbmdlOmZ1bmN0aW9uKGUsdCl7aS5wcm9wZXJ0eURpZENoYW5nZSh0aGlzLHQpfX0sZS5k
ZWZhdWx0PXN9KSxlKCJlbWJlci1ydW50aW1lL3N5c3RlbS9sYXp5X2xvYWQiLFsiZXhwb3J0cyIs
ImVtYmVyLW1ldGFsL2NvcmUiLCJlbWJlci1ydW50aW1lL3N5c3RlbS9uYXRpdmVfYXJyYXkiXSxm
dW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSx0KXt2YXIgbj1hW2VdO29b
ZV09b1tlXXx8ci5BKCksb1tlXS5wdXNoT2JqZWN0KHQpLG4mJnQobil9ZnVuY3Rpb24gaShlLHQp
e2lmKGFbZV09dCwib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmImZ1bmN0aW9uIj09dHlwZW9mIHdp
bmRvdy5kaXNwYXRjaEV2ZW50JiYiZnVuY3Rpb24iPT10eXBlb2YgQ3VzdG9tRXZlbnQpe3ZhciBy
PW5ldyBDdXN0b21FdmVudChlLHtkZXRhaWw6dCxuYW1lOmV9KTt3aW5kb3cuZGlzcGF0Y2hFdmVu
dChyKX1vW2VdJiZvW2VdLmZvckVhY2goZnVuY3Rpb24oZSl7cmV0dXJuIGUodCl9KX1lLm9uTG9h
ZD1uLGUucnVuTG9hZEhvb2tzPWk7dmFyIG89dC5kZWZhdWx0LkVOVi5FTUJFUl9MT0FEX0hPT0tT
fHx7fSxhPXt9LHM9YTtlLl9sb2FkZWQ9c30pLGUoImVtYmVyLXJ1bnRpbWUvc3lzdGVtL25hbWVz
cGFjZSIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvY29yZSIsImVtYmVyLW1ldGFsL3Byb3BlcnR5
X2dldCIsImVtYmVyLW1ldGFsL3V0aWxzIiwiZW1iZXItbWV0YWwvbWl4aW4iLCJlbWJlci1ydW50
aW1lL3N5c3RlbS9vYmplY3QiXSxmdW5jdGlvbihlLHQscixuLGksbyl7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIGEoZSx0LHIpe3ZhciBpPWUubGVuZ3RoO2hbZS5qb2luKCIuIildPXQ7Zm9yKHZhciBv
IGluIHQpaWYobS5jYWxsKHQsbykpe3ZhciBzPXRbb107aWYoZVtpXT1vLHMmJnMudG9TdHJpbmc9
PT1jJiYhc1tiXSlzW2JdPWUuam9pbigiLiIpO2Vsc2UgaWYocyYmcy5pc05hbWVzcGFjZSl7aWYo
cltuLmd1aWRGb3IocyldKWNvbnRpbnVlO3Jbbi5ndWlkRm9yKHMpXT0hMCxhKGUscyxyKX19ZS5s
ZW5ndGg9aX1mdW5jdGlvbiBzKGUsdCl7dHJ5e3ZhciByPWVbdF07cmV0dXJuIHImJnIuaXNOYW1l
c3BhY2UmJnJ9Y2F0Y2goZSl7fX1mdW5jdGlvbiB1KCl7dmFyIGUscj10LmRlZmF1bHQubG9va3Vw
O2lmKCFwLlBST0NFU1NFRClmb3IodmFyIG4gaW4gcil2LnRlc3QobikmJihyLmhhc093blByb3Bl
cnR5JiYhci5oYXNPd25Qcm9wZXJ0eShuKXx8KGU9cyhyLG4pLGUmJihlW2JdPW4pKSl9ZnVuY3Rp
b24gbChlKXt2YXIgdD1lLnN1cGVyY2xhc3M7cmV0dXJuIHQ/dFtiXT90W2JdOmwodCk6dm9pZCAw
fWZ1bmN0aW9uIGMoKXt0LmRlZmF1bHQuQk9PVEVEfHx0aGlzW2JdfHxmKCk7dmFyIGU7aWYodGhp
c1tiXSllPXRoaXNbYl07ZWxzZSBpZih0aGlzLl90b1N0cmluZyllPXRoaXMuX3RvU3RyaW5nO2Vs
c2V7dmFyIHI9bCh0aGlzKTtlPXI/IihzdWJjbGFzcyBvZiAiK3IrIikiOiIodW5rbm93biBtaXhp
bikiLHRoaXMudG9TdHJpbmc9ZChlKX1yZXR1cm4gZX1mdW5jdGlvbiBmKCl7dmFyIGU9IXAuUFJP
Q0VTU0VELHI9dC5kZWZhdWx0LmFueVVucHJvY2Vzc2VkTWl4aW5zO2lmKGUmJih1KCkscC5QUk9D
RVNTRUQ9ITApLGV8fHIpe2Zvcih2YXIgbixpPXAuTkFNRVNQQUNFUyxvPTAscz1pLmxlbmd0aDtv
PHM7bysrKW49aVtvXSxhKFtuLnRvU3RyaW5nKCldLG4se30pO3QuZGVmYXVsdC5hbnlVbnByb2Nl
c3NlZE1peGlucz0hMX19ZnVuY3Rpb24gZChlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZX19
dmFyIHA9by5kZWZhdWx0LmV4dGVuZCh7aXNOYW1lc3BhY2U6ITAsaW5pdDpmdW5jdGlvbigpe3Au
TkFNRVNQQUNFUy5wdXNoKHRoaXMpLHAuUFJPQ0VTU0VEPSExfSx0b1N0cmluZzpmdW5jdGlvbigp
e3ZhciBlPXIuZ2V0KHRoaXMsIm5hbWUiKXx8ci5nZXQodGhpcywibW9kdWxlUHJlZml4Iik7cmV0
dXJuIGU/ZToodSgpLHRoaXNbYl0pfSxuYW1lQ2xhc3NlczpmdW5jdGlvbigpe2EoW3RoaXMudG9T
dHJpbmcoKV0sdGhpcyx7fSl9LGRlc3Ryb3k6ZnVuY3Rpb24oKXt2YXIgZT1wLk5BTUVTUEFDRVMs
cj10aGlzLnRvU3RyaW5nKCk7ciYmKHQuZGVmYXVsdC5sb29rdXBbcl09dm9pZCAwLGRlbGV0ZSBw
Lk5BTUVTUEFDRVNfQllfSURbcl0pLGUuc3BsaWNlKGUuaW5kZXhPZih0aGlzKSwxKSx0aGlzLl9z
dXBlci5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSk7cC5yZW9wZW5DbGFzcyh7TkFNRVNQQUNFUzpb
dC5kZWZhdWx0XSxOQU1FU1BBQ0VTX0JZX0lEOnt9LFBST0NFU1NFRDohMSxwcm9jZXNzQWxsOmYs
YnlOYW1lOmZ1bmN0aW9uKGUpe3JldHVybiB0LmRlZmF1bHQuQk9PVEVEfHxmKCksaFtlXX19KTt2
YXIgaD1wLk5BTUVTUEFDRVNfQllfSUQsbT17fS5oYXNPd25Qcm9wZXJ0eSx2PS9eW0EtWl0vLGI9
dC5kZWZhdWx0Lk5BTUVfS0VZPW4uR1VJRF9LRVkrIl9uYW1lIjtpLk1peGluLnByb3RvdHlwZS50
b1N0cmluZz1jLGUuZGVmYXVsdD1wfSksZSgiZW1iZXItcnVudGltZS9zeXN0ZW0vbmF0aXZlX2Fy
cmF5IixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9jb3JlIiwiZW1iZXItbWV0YWwvcmVwbGFjZSIs
ImVtYmVyLW1ldGFsL3Byb3BlcnR5X2dldCIsImVtYmVyLW1ldGFsL21peGluIiwiZW1iZXItcnVu
dGltZS9taXhpbnMvYXJyYXkiLCJlbWJlci1ydW50aW1lL21peGlucy9tdXRhYmxlX2FycmF5Iiwi
ZW1iZXItcnVudGltZS9taXhpbnMvb2JzZXJ2YWJsZSIsImVtYmVyLXJ1bnRpbWUvbWl4aW5zL2Nv
cHlhYmxlIiwiZW1iZXItcnVudGltZS9taXhpbnMvZnJlZXphYmxlIiwiZW1iZXItcnVudGltZS9j
b3B5Il0sZnVuY3Rpb24oZSx0LHIsbixpLG8sYSxzLHUsbCxjKXsidXNlIHN0cmljdCI7dmFyIGY9
aS5NaXhpbi5jcmVhdGUoYS5kZWZhdWx0LHMuZGVmYXVsdCx1LmRlZmF1bHQse2dldDpmdW5jdGlv
bihlKXtyZXR1cm4ibGVuZ3RoIj09PWU/dGhpcy5sZW5ndGg6Im51bWJlciI9PXR5cGVvZiBlP3Ro
aXNbZV06dGhpcy5fc3VwZXIoZSl9LG9iamVjdEF0OmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzW2Vd
fSxyZXBsYWNlOmZ1bmN0aW9uKGUsdCxpKXtpZih0aGlzLmlzRnJvemVuKXRocm93IGwuRlJPWkVO
X0VSUk9SO3ZhciBvPWk/bi5nZXQoaSwibGVuZ3RoIik6MDtyZXR1cm4gdGhpcy5hcnJheUNvbnRl
bnRXaWxsQ2hhbmdlKGUsdCxvKSwwPT09bz90aGlzLnNwbGljZShlLHQpOnIuX3JlcGxhY2UodGhp
cyxlLHQsaSksdGhpcy5hcnJheUNvbnRlbnREaWRDaGFuZ2UoZSx0LG8pLHRoaXN9LHVua25vd25Q
cm9wZXJ0eTpmdW5jdGlvbihlLHQpe3ZhciByO3JldHVybiB2b2lkIDAhPT10JiZ2b2lkIDA9PT1y
JiYocj10aGlzW2VdPXQpLHJ9LGluZGV4T2Y6QXJyYXkucHJvdG90eXBlLmluZGV4T2YsbGFzdElu
ZGV4T2Y6QXJyYXkucHJvdG90eXBlLmxhc3RJbmRleE9mLGNvcHk6ZnVuY3Rpb24oZSl7cmV0dXJu
IGU/dGhpcy5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGMuZGVmYXVsdChlLCEwKX0pOnRoaXMuc2xp
Y2UoKX19KSxkPVsibGVuZ3RoIl07Zi5rZXlzKCkuZm9yRWFjaChmdW5jdGlvbihlKXtBcnJheS5w
cm90b3R5cGVbZV0mJmQucHVzaChlKX0pLGUuTmF0aXZlQXJyYXk9Zj1mLndpdGhvdXQuYXBwbHko
ZixkKTt2YXIgcDt0LmRlZmF1bHQuRVhURU5EX1BST1RPVFlQRVM9PT0hMHx8dC5kZWZhdWx0LkVY
VEVORF9QUk9UT1RZUEVTLkFycmF5PyhmLmFwcGx5KEFycmF5LnByb3RvdHlwZSksZS5BPXA9ZnVu
Y3Rpb24oZSl7cmV0dXJuIGV8fFtdfSk6ZS5BPXA9ZnVuY3Rpb24oZSl7cmV0dXJuIGV8fChlPVtd
KSxvLmRlZmF1bHQuZGV0ZWN0KGUpP2U6Zi5hcHBseShlKX0sdC5kZWZhdWx0LkE9cCxlLkE9cCxl
Lk5hdGl2ZUFycmF5PWYsZS5kZWZhdWx0PWZ9KSxlKCJlbWJlci1ydW50aW1lL3N5c3RlbS9vYmpl
Y3QiLFsiZXhwb3J0cyIsImVtYmVyLXJ1bnRpbWUvc3lzdGVtL2NvcmVfb2JqZWN0IiwiZW1iZXIt
cnVudGltZS9taXhpbnMvb2JzZXJ2YWJsZSJdLGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7
dmFyIG49dC5kZWZhdWx0LmV4dGVuZChyLmRlZmF1bHQpO24udG9TdHJpbmc9ZnVuY3Rpb24oKXty
ZXR1cm4iRW1iZXIuT2JqZWN0In0sZS5kZWZhdWx0PW59KSxlKCJlbWJlci1ydW50aW1lL3N5c3Rl
bS9vYmplY3RfcHJveHkiLFsiZXhwb3J0cyIsImVtYmVyLXJ1bnRpbWUvc3lzdGVtL29iamVjdCIs
ImVtYmVyLXJ1bnRpbWUvbWl4aW5zLy1wcm94eSJdLGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmlj
dCI7ZS5kZWZhdWx0PXQuZGVmYXVsdC5leHRlbmQoci5kZWZhdWx0KX0pLGUoImVtYmVyLXJ1bnRp
bWUvc3lzdGVtL3NlcnZpY2UiLFsiZXhwb3J0cyIsImVtYmVyLXJ1bnRpbWUvc3lzdGVtL29iamVj
dCIsImVtYmVyLXJ1bnRpbWUvaW5qZWN0Il0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijty
LmNyZWF0ZUluamVjdGlvbkhlbHBlcigic2VydmljZSIpO3ZhciBuPXQuZGVmYXVsdC5leHRlbmQo
KTtuLnJlb3BlbkNsYXNzKHtpc1NlcnZpY2VGYWN0b3J5OiEwfSksZS5kZWZhdWx0PW59KSxlKCJl
bWJlci1ydW50aW1lL3N5c3RlbS9zdHJpbmciLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL2RlYnVn
IiwiZW1iZXItbWV0YWwvdXRpbHMiLCJlbWJlci1ydW50aW1lL3V0aWxzIiwiZW1iZXItcnVudGlt
ZS9zdHJpbmdfcmVnaXN0cnkiLCJlbWJlci1tZXRhbC9jYWNoZSJdLGZ1bmN0aW9uKGUsdCxyLG4s
aSxvKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYShlLHQpe3ZhciBpPXQ7aWYoIW4uaXNBcnJheShp
KXx8YXJndW1lbnRzLmxlbmd0aD4yKXtpPW5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoLTEpO2Zv
cih2YXIgbz0xLGE9YXJndW1lbnRzLmxlbmd0aDtvPGE7bysrKWlbby0xXT1hcmd1bWVudHNbb119
dmFyIHM9MDtyZXR1cm4gZS5yZXBsYWNlKC8lQChbMC05XSspPy9nLGZ1bmN0aW9uKGUsdCl7cmV0
dXJuIHQ9dD9wYXJzZUludCh0LDEwKS0xOnMrKyxlPWlbdF0sbnVsbD09PWU/IihudWxsKSI6dm9p
ZCAwPT09ZT8iIjpyLmluc3BlY3QoZSl9KX1mdW5jdGlvbiBzKGUsdCl7cmV0dXJuIGEuYXBwbHko
dm9pZCAwLGFyZ3VtZW50cyl9ZnVuY3Rpb24gdShlLHQpe3JldHVybighbi5pc0FycmF5KHQpfHxh
cmd1bWVudHMubGVuZ3RoPjIpJiYodD1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVu
dHMsMSkpLGU9aS5nZXQoZSl8fGUsYShlLHQpfWZ1bmN0aW9uIGwoZSl7cmV0dXJuIGUuc3BsaXQo
L1xzKy8pfWZ1bmN0aW9uIGMoZSl7cmV0dXJuIFAuZ2V0KGUpfWZ1bmN0aW9uIGYoZSl7cmV0dXJu
IGIuZ2V0KGUpfWZ1bmN0aW9uIGQoZSl7cmV0dXJuIF8uZ2V0KGUpfWZ1bmN0aW9uIHAoZSl7cmV0
dXJuIEMuZ2V0KGUpfWZ1bmN0aW9uIGgoZSl7cmV0dXJuIFQuZ2V0KGUpfWZ1bmN0aW9uIG0oZSl7
cmV0dXJuIFMuZ2V0KGUpfXZhciB2PS9bIF9dL2csYj1uZXcgby5kZWZhdWx0KDFlMyxmdW5jdGlv
bihlKXtyZXR1cm4gYyhlKS5yZXBsYWNlKHYsIi0iKX0pLGc9LyhcLXxcX3xcLnxccykrKC4pPy9n
LHk9LyhefFwvKShbQS1aXSkvZyxfPW5ldyBvLmRlZmF1bHQoMWUzLGZ1bmN0aW9uKGUpe3JldHVy
biBlLnJlcGxhY2UoZyxmdW5jdGlvbihlLHQscil7cmV0dXJuIHI/ci50b1VwcGVyQ2FzZSgpOiIi
fSkucmVwbGFjZSh5LGZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZS50b0xvd2VyQ2FzZSgpfSl9KSx3
PS9eKFwtfF8pKyguKT8vLHg9LyguKShcLXxcX3xcLnxccykrKC4pPy9nLGs9LyhefFwvfFwuKShb
YS16XSkvZyxDPW5ldyBvLmRlZmF1bHQoMWUzLGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1mdW5jdGlv
bihlLHQscil7cmV0dXJuIHI/Il8iK3IudG9VcHBlckNhc2UoKToiIn0scj1mdW5jdGlvbihlLHQs
cixuKXtyZXR1cm4gdCsobj9uLnRvVXBwZXJDYXNlKCk6IiIpfSxuPWUuc3BsaXQoIi8iKSxpPTAs
bz1uLmxlbmd0aDtpPG87aSsrKW5baV09bltpXS5yZXBsYWNlKHcsdCkucmVwbGFjZSh4LHIpO3Jl
dHVybiBuLmpvaW4oIi8iKS5yZXBsYWNlKGssZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlLnRvVXBw
ZXJDYXNlKCl9KX0pLEU9LyhbYS16XGRdKShbQS1aXSspL2csTz0vXC18XHMrL2csVD1uZXcgby5k
ZWZhdWx0KDFlMyxmdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKEUsIiQxXyQyIikucmVwbGFj
ZShPLCJfIikudG9Mb3dlckNhc2UoKX0pLE49LyhefFwvKShbYS16XSkvZyxTPW5ldyBvLmRlZmF1
bHQoMWUzLGZ1bmN0aW9uKGUpeworcmV0dXJuIGUucmVwbGFjZShOLGZ1bmN0aW9uKGUsdCxyKXty
ZXR1cm4gZS50b1VwcGVyQ2FzZSgpfSl9KSxBPS8oW2EtelxkXSkoW0EtWl0pL2csUD1uZXcgby5k
ZWZhdWx0KDFlMyxmdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKEEsIiQxXyQyIikudG9Mb3dl
ckNhc2UoKX0pO2UuZGVmYXVsdD17Zm10OnMsbG9jOnUsdzpsLGRlY2FtZWxpemU6YyxkYXNoZXJp
emU6ZixjYW1lbGl6ZTpkLGNsYXNzaWZ5OnAsdW5kZXJzY29yZTpoLGNhcGl0YWxpemU6bX0sZS5m
bXQ9cyxlLmxvYz11LGUudz1sLGUuZGVjYW1lbGl6ZT1jLGUuZGFzaGVyaXplPWYsZS5jYW1lbGl6
ZT1kLGUuY2xhc3NpZnk9cCxlLnVuZGVyc2NvcmU9aCxlLmNhcGl0YWxpemU9bX0pLGUoImVtYmVy
LXJ1bnRpbWUvdXRpbHMiLFsiZXhwb3J0cyIsImVtYmVyLXJ1bnRpbWUvbWl4aW5zL2FycmF5Iiwi
ZW1iZXItcnVudGltZS9zeXN0ZW0vb2JqZWN0Il0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiBuKGUpe2lmKCFlfHxlLnNldEludGVydmFsKXJldHVybiExO2lmKEFycmF5Lmlz
QXJyYXkoZSkpcmV0dXJuITA7aWYodC5kZWZhdWx0LmRldGVjdChlKSlyZXR1cm4hMDt2YXIgcj1p
KGUpO3JldHVybiJhcnJheSI9PT1yfHx2b2lkIDAhPT1lLmxlbmd0aCYmIm9iamVjdCI9PT1yfWZ1
bmN0aW9uIGkoZSl7aWYobnVsbD09PWUpcmV0dXJuIm51bGwiO2lmKHZvaWQgMD09PWUpcmV0dXJu
InVuZGVmaW5lZCI7dmFyIHQ9b1thLmNhbGwoZSldfHwib2JqZWN0IjtyZXR1cm4iZnVuY3Rpb24i
PT09dD9yLmRlZmF1bHQuZGV0ZWN0KGUpJiYodD0iY2xhc3MiKToib2JqZWN0Ij09PXQmJihlIGlu
c3RhbmNlb2YgRXJyb3I/dD0iZXJyb3IiOmUgaW5zdGFuY2VvZiByLmRlZmF1bHQ/dD0iaW5zdGFu
Y2UiOmUgaW5zdGFuY2VvZiBEYXRlJiYodD0iZGF0ZSIpKSx0fWUuaXNBcnJheT1uLGUudHlwZU9m
PWk7dmFyIG89eyJbb2JqZWN0IEJvb2xlYW5dIjoiYm9vbGVhbiIsIltvYmplY3QgTnVtYmVyXSI6
Im51bWJlciIsIltvYmplY3QgU3RyaW5nXSI6InN0cmluZyIsIltvYmplY3QgRnVuY3Rpb25dIjoi
ZnVuY3Rpb24iLCJbb2JqZWN0IEFycmF5XSI6ImFycmF5IiwiW29iamVjdCBEYXRlXSI6ImRhdGUi
LCJbb2JqZWN0IFJlZ0V4cF0iOiJyZWdleHAiLCJbb2JqZWN0IE9iamVjdF0iOiJvYmplY3QifSxh
PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmd9KSxlKCJlbWJlci10ZW1wbGF0ZS1jb21waWxlci9j
b21wYXQiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL2NvcmUiLCJlbWJlci10ZW1wbGF0ZS1jb21w
aWxlci9jb21wYXQvcHJlY29tcGlsZSIsImVtYmVyLXRlbXBsYXRlLWNvbXBpbGVyL3N5c3RlbS9j
b21waWxlIiwiZW1iZXItdGVtcGxhdGUtY29tcGlsZXIvc3lzdGVtL3RlbXBsYXRlIl0sZnVuY3Rp
b24oZSx0LHIsbixpKXsidXNlIHN0cmljdCI7dmFyIG89dC5kZWZhdWx0LkhhbmRsZWJhcnM9dC5k
ZWZhdWx0LkhhbmRsZWJhcnN8fHt9O28ucHJlY29tcGlsZT1yLmRlZmF1bHQsby5jb21waWxlPW4u
ZGVmYXVsdCxvLnRlbXBsYXRlPWkuZGVmYXVsdH0pLGUoImVtYmVyLXRlbXBsYXRlLWNvbXBpbGVy
L2NvbXBhdC9wcmVjb21waWxlIixbImV4cG9ydHMiLCJyZXF1aXJlIiwiZW1iZXItdGVtcGxhdGUt
Y29tcGlsZXIvc3lzdGVtL2NvbXBpbGVfb3B0aW9ucyJdLGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0
cmljdCI7dmFyIG4saTtlLmRlZmF1bHQ9ZnVuY3Rpb24oZSl7aWYoKCFufHwhaSkmJnQuaGFzKCJo
dG1sYmFycy1jb21waWxlci9jb21waWxlciIpKXt2YXIgbz10LmRlZmF1bHQoImh0bWxiYXJzLWNv
bXBpbGVyL2NvbXBpbGVyIik7bj1vLmNvbXBpbGUsaT1vLmNvbXBpbGVTcGVjfWlmKCFufHwhaSl0
aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBjYWxsIGBwcmVjb21waWxlYCB3aXRob3V0IHRoZSB0ZW1w
bGF0ZSBjb21waWxlciBsb2FkZWQuIFBsZWFzZSBsb2FkIGBlbWJlci10ZW1wbGF0ZS1jb21waWxl
ci5qc2AgcHJpb3IgdG8gY2FsbGluZyBgcHJlY29tcGlsZWAuIik7dmFyIGE9dm9pZCAwPT09YXJn
dW1lbnRzWzFdfHxhcmd1bWVudHNbMV0scz1hP246aTtyZXR1cm4gcyhlLHIuZGVmYXVsdCgpKX19
KSxlKCJlbWJlci10ZW1wbGF0ZS1jb21waWxlci9pbmRleCIsWyJleHBvcnRzIiwiZW1iZXItbWV0
YWwiLCJlbWJlci10ZW1wbGF0ZS1jb21waWxlci9zeXN0ZW0vcHJlY29tcGlsZSIsImVtYmVyLXRl
bXBsYXRlLWNvbXBpbGVyL3N5c3RlbS9jb21waWxlIiwiZW1iZXItdGVtcGxhdGUtY29tcGlsZXIv
c3lzdGVtL3RlbXBsYXRlIiwiZW1iZXItdGVtcGxhdGUtY29tcGlsZXIvcGx1Z2lucyIsImVtYmVy
LXRlbXBsYXRlLWNvbXBpbGVyL3BsdWdpbnMvdHJhbnNmb3JtLW9sZC1iaW5kaW5nLXN5bnRheCIs
ImVtYmVyLXRlbXBsYXRlLWNvbXBpbGVyL3BsdWdpbnMvdHJhbnNmb3JtLW9sZC1jbGFzcy1iaW5k
aW5nLXN5bnRheCIsImVtYmVyLXRlbXBsYXRlLWNvbXBpbGVyL3BsdWdpbnMvdHJhbnNmb3JtLWl0
ZW0tY2xhc3MiLCJlbWJlci10ZW1wbGF0ZS1jb21waWxlci9wbHVnaW5zL3RyYW5zZm9ybS1jbG9z
dXJlLWNvbXBvbmVudC1hdHRycy1pbnRvLW11dCIsImVtYmVyLXRlbXBsYXRlLWNvbXBpbGVyL3Bs
dWdpbnMvdHJhbnNmb3JtLWNvbXBvbmVudC1hdHRycy1pbnRvLW11dCIsImVtYmVyLXRlbXBsYXRl
LWNvbXBpbGVyL3BsdWdpbnMvdHJhbnNmb3JtLWNvbXBvbmVudC1jdXJseS10by1yZWFkb25seSIs
ImVtYmVyLXRlbXBsYXRlLWNvbXBpbGVyL3BsdWdpbnMvdHJhbnNmb3JtLWFuZ2xlLWJyYWNrZXQt
Y29tcG9uZW50cyIsImVtYmVyLXRlbXBsYXRlLWNvbXBpbGVyL3BsdWdpbnMvdHJhbnNmb3JtLWlu
cHV0LW9uLXRvLW9uRXZlbnQiLCJlbWJlci10ZW1wbGF0ZS1jb21waWxlci9wbHVnaW5zL3RyYW5z
Zm9ybS10b3AtbGV2ZWwtY29tcG9uZW50cyIsImVtYmVyLXRlbXBsYXRlLWNvbXBpbGVyL3BsdWdp
bnMvZGVwcmVjYXRlLXJlbmRlci1tb2RlbCIsImVtYmVyLXRlbXBsYXRlLWNvbXBpbGVyL3BsdWdp
bnMvcHJldmVudC1yZW5kZXItYmxvY2siLCJlbWJlci10ZW1wbGF0ZS1jb21waWxlci9wbHVnaW5z
L3RyYW5zZm9ybS1pbmxpbmUtbGluay10byIsImVtYmVyLXRlbXBsYXRlLWNvbXBpbGVyL3BsdWdp
bnMvYXNzZXJ0LW5vLXZpZXctYW5kLWNvbnRyb2xsZXItcGF0aHMiLCJlbWJlci10ZW1wbGF0ZS1j
b21waWxlci9wbHVnaW5zL2Fzc2VydC1uby12aWV3LWhlbHBlciIsImVtYmVyLXRlbXBsYXRlLWNv
bXBpbGVyL3BsdWdpbnMvYXNzZXJ0LW5vLWVhY2gtaW4iLCJlbWJlci10ZW1wbGF0ZS1jb21waWxl
ci9jb21wYXQiXSxmdW5jdGlvbihlLHQscixuLGksbyxhLHMsdSxsLGMsZixkLHAsaCxtLHYsYixn
LHksXyx3KXsidXNlIHN0cmljdCI7by5yZWdpc3RlclBsdWdpbigiYXN0IixhLmRlZmF1bHQpLG8u
cmVnaXN0ZXJQbHVnaW4oImFzdCIscy5kZWZhdWx0KSxvLnJlZ2lzdGVyUGx1Z2luKCJhc3QiLHUu
ZGVmYXVsdCksby5yZWdpc3RlclBsdWdpbigiYXN0IixsLmRlZmF1bHQpLG8ucmVnaXN0ZXJQbHVn
aW4oImFzdCIsYy5kZWZhdWx0KSxvLnJlZ2lzdGVyUGx1Z2luKCJhc3QiLGYuZGVmYXVsdCksby5y
ZWdpc3RlclBsdWdpbigiYXN0IixkLmRlZmF1bHQpLG8ucmVnaXN0ZXJQbHVnaW4oImFzdCIscC5k
ZWZhdWx0KSxvLnJlZ2lzdGVyUGx1Z2luKCJhc3QiLGguZGVmYXVsdCksby5yZWdpc3RlclBsdWdp
bigiYXN0IixtLmRlZmF1bHQpLG8ucmVnaXN0ZXJQbHVnaW4oImFzdCIsdi5kZWZhdWx0KSxvLnJl
Z2lzdGVyUGx1Z2luKCJhc3QiLF8uZGVmYXVsdCksby5yZWdpc3RlclBsdWdpbigiYXN0IixiLmRl
ZmF1bHQpLHQuZGVmYXVsdC5FTlYuX0VOQUJMRV9MRUdBQ1lfVklFV19TVVBQT1JUfHwoby5yZWdp
c3RlclBsdWdpbigiYXN0IixnLmRlZmF1bHQpLG8ucmVnaXN0ZXJQbHVnaW4oImFzdCIseS5kZWZh
dWx0KSksZS5fRW1iZXI9dC5kZWZhdWx0LGUucHJlY29tcGlsZT1yLmRlZmF1bHQsZS5jb21waWxl
PW4uZGVmYXVsdCxlLnRlbXBsYXRlPWkuZGVmYXVsdCxlLnJlZ2lzdGVyUGx1Z2luPW8ucmVnaXN0
ZXJQbHVnaW59KSxlKCJlbWJlci10ZW1wbGF0ZS1jb21waWxlci9wbHVnaW5zIixbImV4cG9ydHMi
XSxmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gdChlLHQpe2lmKCFyW2VdKXRocm93
IG5ldyBFcnJvcignQXR0ZW1wdGluZyB0byByZWdpc3RlciAiJyt0KyciIGFzICInK2UrJyIgd2hp
Y2ggaXMgbm90IGEgdmFsaWQgSFRNTEJhcnMgcGx1Z2luIHR5cGUuJyk7cltlXS5wdXNoKHQpfWUu
cmVnaXN0ZXJQbHVnaW49dDt2YXIgcj17YXN0OltdfTtlLmRlZmF1bHQ9cn0pLGUoImVtYmVyLXRl
bXBsYXRlLWNvbXBpbGVyL3BsdWdpbnMvYXNzZXJ0LW5vLWVhY2gtaW4iLFsiZXhwb3J0cyIsImVt
YmVyLW1ldGFsL2NvcmUiLCJlbWJlci1tZXRhbC9kZWJ1ZyIsImVtYmVyLXRlbXBsYXRlLWNvbXBp
bGVyL3N5c3RlbS9jYWxjdWxhdGUtbG9jYXRpb24tZGlzcGxheSJdLGZ1bmN0aW9uKGUsdCxyLG4p
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aDw9MHx8dm9p
ZCAwPT09YXJndW1lbnRzWzBdP3t9OmFyZ3VtZW50c1swXTt0aGlzLnN5bnRheD1udWxsLHRoaXMu
b3B0aW9ucz1lfWZ1bmN0aW9uIG8oZSx0KXtuLmRlZmF1bHQoZSx0LmxvYyksdC5wYXJhbXNbMF0u
b3JpZ2luYWwsdC5wYXJhbXNbMl0ub3JpZ2luYWx9ZnVuY3Rpb24gYShlKXtyZXR1cm4oIkJsb2Nr
U3RhdGVtZW50Ij09PWUudHlwZXx8Ik11c3RhY2hlU3RhdGVtZW50Ij09PWUudHlwZSkmJiJlYWNo
Ij09PWUucGF0aC5vcmlnaW5hbCYmMz09PWUucGFyYW1zLmxlbmd0aCYmIlBhdGhFeHByZXNzaW9u
Ij09PWUucGFyYW1zWzFdLnR5cGUmJiJpbiI9PT1lLnBhcmFtc1sxXS5vcmlnaW5hbH1pLnByb3Rv
dHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24oZSl7aWYodC5kZWZhdWx0LkVOVi5fRU5BQkxFX0xFR0FD
WV9WSUVXX1NVUFBPUlQpcmV0dXJuIGU7dmFyIHI9bmV3IHRoaXMuc3ludGF4LldhbGtlcixuPXRo
aXMub3B0aW9ucyYmdGhpcy5vcHRpb25zLm1vZHVsZU5hbWU7cmV0dXJuIHIudmlzaXQoZSxmdW5j
dGlvbihlKXthKGUpJiZvKG4sZSl9KSxlfSxlLmRlZmF1bHQ9aX0pLGUoImVtYmVyLXRlbXBsYXRl
LWNvbXBpbGVyL3BsdWdpbnMvYXNzZXJ0LW5vLXZpZXctYW5kLWNvbnRyb2xsZXItcGF0aHMiLFsi
ZXhwb3J0cyIsImVtYmVyLW1ldGFsL2NvcmUiLCJlbWJlci1tZXRhbC9kZWJ1ZyIsImVtYmVyLXRl
bXBsYXRlLWNvbXBpbGVyL3N5c3RlbS9jYWxjdWxhdGUtbG9jYXRpb24tZGlzcGxheSJdLGZ1bmN0
aW9uKGUsdCxyLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKCl7dmFyIGU9YXJndW1lbnRzLmxl
bmd0aDw9MHx8dm9pZCAwPT09YXJndW1lbnRzWzBdP3t9OmFyZ3VtZW50c1swXTt0aGlzLnN5bnRh
eD1udWxsLHRoaXMub3B0aW9ucz1lfWZ1bmN0aW9uIG8oZSx0LHIpe2lmKHImJnIucGFpcnMpe3Zh
ciBuLGksbyxzO2ZvcihuPTAsaT1yLnBhaXJzLmxlbmd0aDtuPGk7bisrKW89ci5wYWlyc1tuXSxz
PW8udmFsdWUucGFyYW1zLGEoZSxvLHMpfX1mdW5jdGlvbiBhKGUsdCxyKXtpZihyKXt2YXIgbixp
LG87Zm9yKG49MCxpPXIubGVuZ3RoO248aTtuKyspbz1yW25dLHMoZSx0LG8pfX1mdW5jdGlvbiBz
KGUsdCxyKXt9ZnVuY3Rpb24gdShlKXtyZXR1cm4iTXVzdGFjaGVTdGF0ZW1lbnQiPT09ZS50eXBl
fHwiQmxvY2tTdGF0ZW1lbnQiPT09ZS50eXBlfWkucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlv
bihlKXt2YXIgdD1uZXcgdGhpcy5zeW50YXguV2Fsa2VyLHI9dGhpcy5vcHRpb25zJiZ0aGlzLm9w
dGlvbnMubW9kdWxlTmFtZTtyZXR1cm4gdC52aXNpdChlLGZ1bmN0aW9uKGUpe3UoZSkmJihzKHIs
ZSxlLnBhdGgpLGEocixlLGUucGFyYW1zKSxvKHIsZSxlLmhhc2gpKX0pLGV9LGUuZGVmYXVsdD1p
fSksZSgiZW1iZXItdGVtcGxhdGUtY29tcGlsZXIvcGx1Z2lucy9hc3NlcnQtbm8tdmlldy1oZWxw
ZXIiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL2NvcmUiLCJlbWJlci1tZXRhbC9kZWJ1ZyIsImVt
YmVyLXRlbXBsYXRlLWNvbXBpbGVyL3N5c3RlbS9jYWxjdWxhdGUtbG9jYXRpb24tZGlzcGxheSJd
LGZ1bmN0aW9uKGUsdCxyLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKCl7dmFyIGU9YXJndW1l
bnRzLmxlbmd0aDw9MHx8dm9pZCAwPT09YXJndW1lbnRzWzBdP3t9OmFyZ3VtZW50c1swXTt0aGlz
LnN5bnRheD1udWxsLHRoaXMub3B0aW9ucz1lfWZ1bmN0aW9uIG8oZSx0KXt2YXIgcj10LnBhcmFt
cy5sZW5ndGgmJnQucGFyYW1zWzBdLnZhbHVlfWZ1bmN0aW9uIGEoZSl7cmV0dXJuKCJNdXN0YWNo
ZVN0YXRlbWVudCI9PT1lLnR5cGV8fCJCbG9ja1N0YXRlbWVudCI9PT1lLnR5cGUpJiYidmlldyI9
PT1lLnBhdGgucGFydHNbMF19aS5wcm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9uKGUpe2lmKHQu
ZGVmYXVsdC5FTlYuX0VOQUJMRV9MRUdBQ1lfVklFV19TVVBQT1JUKXJldHVybiBlO3ZhciByPW5l
dyB0aGlzLnN5bnRheC5XYWxrZXIsbj10aGlzLm9wdGlvbnMmJnRoaXMub3B0aW9ucy5tb2R1bGVO
YW1lO3JldHVybiByLnZpc2l0KGUsZnVuY3Rpb24oZSl7YShlKSYmbyhuLGUpfSksZX0sZS5kZWZh
dWx0PWl9KSxlKCJlbWJlci10ZW1wbGF0ZS1jb21waWxlci9wbHVnaW5zL2RlcHJlY2F0ZS1yZW5k
ZXItbW9kZWwiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL2RlYnVnIiwiZW1iZXItdGVtcGxhdGUt
Y29tcGlsZXIvc3lzdGVtL2NhbGN1bGF0ZS1sb2NhdGlvbi1kaXNwbGF5Il0sZnVuY3Rpb24oZSx0
LHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe3RoaXMuc3ludGF4PW51bGwsdGhpcy5vcHRp
b25zPWV9ZnVuY3Rpb24gaShlKXtyZXR1cm4iTXVzdGFjaGVTdGF0ZW1lbnQiPT09ZS50eXBlJiYi
cmVuZGVyIj09PWUucGF0aC5vcmlnaW5hbCYmZS5wYXJhbXMubGVuZ3RoPjF9ZnVuY3Rpb24gbyhl
LHQpe2Zvcih2YXIgcj0wLG49ZS5sZW5ndGg7cjxuO3IrKyl0KGVbcl0pfWUuZGVmYXVsdD1uLG4u
cHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbihlKXt2YXIgdD0odGhpcy5vcHRpb25zLm1vZHVs
ZU5hbWUsbmV3IHRoaXMuc3ludGF4LldhbGtlcik7cmV0dXJuIHQudmlzaXQoZSxmdW5jdGlvbihl
KXtpKGUpJiZvKGUucGFyYW1zLGZ1bmN0aW9uKGUpeyJQYXRoRXhwcmVzc2lvbiIhPT1lLnR5cGV9
KX0pLGV9fSksZSgiZW1iZXItdGVtcGxhdGUtY29tcGlsZXIvcGx1Z2lucy9wcmV2ZW50LXJlbmRl
ci1ibG9jayIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvZXJyb3IiLCJlbWJlci10ZW1wbGF0ZS1j
b21waWxlci9zeXN0ZW0vY2FsY3VsYXRlLWxvY2F0aW9uLWRpc3BsYXkiXSxmdW5jdGlvbihlLHQs
cil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7dGhpcy5zeW50YXg9bnVsbCx0aGlzLm9wdGlv
bnM9ZX1mdW5jdGlvbiBpKGUpe3JldHVybiJCbG9ja1N0YXRlbWVudCI9PT1lLnR5cGUmJiJyZW5k
ZXIiPT09ZS5wYXRoLm9yaWdpbmFsfWZ1bmN0aW9uIG8oZSx0KXt2YXIgbj1yLmRlZmF1bHQoZSx0
LmxvYyk7cmV0dXJuIlVzYWdlIG9mIGByZW5kZXJgIGluIGJsb2NrIGZvcm0gaXMgdW5zdXBwb3J0
ZWQgIituKyIuIn1lLmRlZmF1bHQ9bixuLnByb3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24oZSl7
dmFyIHI9dGhpcy5vcHRpb25zLm1vZHVsZU5hbWUsbj1uZXcgdGhpcy5zeW50YXguV2Fsa2VyO3Jl
dHVybiBuLnZpc2l0KGUsZnVuY3Rpb24oZSl7aWYoaShlKSl0aHJvdyBuZXcgdC5kZWZhdWx0KG8o
cixlKSl9KSxlfX0pLGUoImVtYmVyLXRlbXBsYXRlLWNvbXBpbGVyL3BsdWdpbnMvdHJhbnNmb3Jt
LWFuZ2xlLWJyYWNrZXQtY29tcG9uZW50cyIsWyJleHBvcnRzIl0sZnVuY3Rpb24oZSl7InVzZSBz
dHJpY3QiO2Z1bmN0aW9uIHQoKXt0aGlzLnN5bnRheD1udWxsfWZ1bmN0aW9uIHIoZSl7cmV0dXJu
IkNvbXBvbmVudE5vZGUiPT09ZS50eXBlfXQucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbihl
KXt2YXIgdD1uZXcgdGhpcy5zeW50YXguV2Fsa2VyO3JldHVybiB0LnZpc2l0KGUsZnVuY3Rpb24o
ZSl7cihlKSYmKGUudGFnPSI8IitlLnRhZysiPiIpfSksZX0sZS5kZWZhdWx0PXR9KSxlKCJlbWJl
ci10ZW1wbGF0ZS1jb21waWxlci9wbHVnaW5zL3RyYW5zZm9ybS1jbG9zdXJlLWNvbXBvbmVudC1h
dHRycy1pbnRvLW11dCIsWyJleHBvcnRzIl0sZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHQoKXt0aGlzLnN5bnRheD1udWxsfWZ1bmN0aW9uIHIoZSl7cmV0dXJuIlN1YkV4cHJlc3Np
b24iPT09ZS50eXBlJiYiY29tcG9uZW50Ij09PWUucGF0aC5vcmlnaW5hbH1mdW5jdGlvbiBuKGUs
dCl7Zm9yKHZhciByPTE7cjx0LnBhcmFtcy5sZW5ndGg7cisrKSJQYXRoRXhwcmVzc2lvbiI9PT10
LnBhcmFtc1tyXS50eXBlJiYodC5wYXJhbXNbcl09ZS5zZXhwcihlLnBhdGgoIkBtdXQiKSxbdC5w
YXJhbXNbcl1dKSk7aSh0Lmhhc2gucGFpcnMsZnVuY3Rpb24odCl7dmFyIHI9dC52YWx1ZTsiUGF0
aEV4cHJlc3Npb24iPT09ci50eXBlJiYodC52YWx1ZT1lLnNleHByKGUucGF0aCgiQG11dCIpLFt0
LnZhbHVlXSkpfSl9ZnVuY3Rpb24gaShlLHQpe2Zvcih2YXIgcj0wLG49ZS5sZW5ndGg7cjxuO3Ir
Kyl0KGVbcl0pfXQucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbihlKXt2YXIgdD10aGlzLnN5
bnRheC5idWlsZGVycztyZXR1cm4gdGhpcy5zeW50YXgudHJhdmVyc2UoZSx7U3ViRXhwcmVzc2lv
bjpmdW5jdGlvbihlKXtyKGUpJiZuKHQsZSl9fSksZX0sZS5kZWZhdWx0PXR9KSxlKCJlbWJlci10
ZW1wbGF0ZS1jb21waWxlci9wbHVnaW5zL3RyYW5zZm9ybS1jb21wb25lbnQtYXR0cnMtaW50by1t
dXQiLFsiZXhwb3J0cyJdLGZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB0KCl7dGhp
cy5zeW50YXg9bnVsbH1mdW5jdGlvbiByKGUpe3JldHVybiJCbG9ja1N0YXRlbWVudCI9PT1lLnR5
cGV8fCJNdXN0YWNoZVN0YXRlbWVudCI9PT1lLnR5cGV9ZnVuY3Rpb24gbihlLHQpe2Zvcih2YXIg
cj0wLG49ZS5sZW5ndGg7cjxuO3IrKyl0KGVbcl0pfXQucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5j
dGlvbihlKXt2YXIgdD10aGlzLnN5bnRheC5idWlsZGVycyxpPW5ldyB0aGlzLnN5bnRheC5XYWxr
ZXI7cmV0dXJuIGkudmlzaXQoZSxmdW5jdGlvbihlKXtyKGUpJiZuKGUuaGFzaC5wYWlycyxmdW5j
dGlvbihlKXt2YXIgcj1lLnZhbHVlOyJQYXRoRXhwcmVzc2lvbiI9PT1yLnR5cGUmJihlLnZhbHVl
PXQuc2V4cHIodC5wYXRoKCJAbXV0IiksW2UudmFsdWVdKSl9KX0pLGV9LGUuZGVmYXVsdD10fSks
ZSgiZW1iZXItdGVtcGxhdGUtY29tcGlsZXIvcGx1Z2lucy90cmFuc2Zvcm0tY29tcG9uZW50LWN1
cmx5LXRvLXJlYWRvbmx5IixbImV4cG9ydHMiXSxmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gdCgpe3RoaXMuc3ludGF4PW51bGx9ZnVuY3Rpb24gcihlKXtyZXR1cm4iQ29tcG9uZW50
Tm9kZSI9PT1lLnR5cGV9ZnVuY3Rpb24gbihlLHQpe2Zvcih2YXIgcj0wLG49ZS5sZW5ndGg7cjxu
O3IrKyl0KGVbcl0pfXQucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbihlKXt2YXIgdD10aGlz
LnN5bnRheC5idWlsZGVycyxpPW5ldyB0aGlzLnN5bnRheC5XYWxrZXI7cmV0dXJuIGkudmlzaXQo
ZSxmdW5jdGlvbihlKXtyKGUpJiZuKGUuYXR0cmlidXRlcyxmdW5jdGlvbihlKXsiTXVzdGFjaGVT
dGF0ZW1lbnQiPT09ZS52YWx1ZS50eXBlJiYoZS52YWx1ZS5wYXJhbXMubGVuZ3RofHxlLnZhbHVl
Lmhhc2gucGFpcnMubGVuZ3RofHwoZS52YWx1ZT10Lm11c3RhY2hlKHQucGF0aCgicmVhZG9ubHki
KSxbZS52YWx1ZS5wYXRoXSxudWxsLCFlLnZhbHVlLmVzY2FwZSkpKX0pfSksZX0sZS5kZWZhdWx0
PXR9KSxlKCJlbWJlci10ZW1wbGF0ZS1jb21waWxlci9wbHVnaW5zL3RyYW5zZm9ybS1pbmxpbmUt
bGluay10byIsWyJleHBvcnRzIl0sZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHQo
ZSl7dGhpcy5vcHRpb25zPWUsdGhpcy5zeW50YXg9bnVsbH1lLmRlZmF1bHQ9dCx0LnByb3RvdHlw
ZS50cmFuc2Zvcm09ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlLHQpe3JldHVybiBhLnByb2dyYW0o
W3IoZSx0KV0sbnVsbCx0KX1mdW5jdGlvbiByKGUsdCl7c3dpdGNoKGUudHlwZSl7Y2FzZSJQYXRo
RXhwcmVzc2lvbiI6cmV0dXJuIGEubXVzdGFjaGUoZSxudWxsLG51bGwsbnVsbCx0KTtjYXNlIlN1
YkV4cHJlc3Npb24iOnJldHVybiBhLm11c3RhY2hlKGUucGF0aCxlLnBhcmFtcyxlLmhhc2gsbnVs
bCx0KTtkZWZhdWx0OnJldHVybiBhLnRleHQoIiIrZS52YWx1ZSx0KX19ZnVuY3Rpb24gbihlKXty
ZXR1cm4gYS5zZXhwcigiLWh0bWwtc2FmZSIsW2VdKX12YXIgaT10aGlzLnN5bnRheCxvPWkudHJh
dmVyc2UsYT1pLmJ1aWxkZXJzO3JldHVybiBvKGUse011c3RhY2hlU3RhdGVtZW50OmZ1bmN0aW9u
KGUpe2lmKCJsaW5rLXRvIj09PWUucGF0aC5vcmlnaW5hbCl7dmFyIHI9ZS5lc2NhcGVkP2UucGFy
YW1zWzBdOm4oZS5wYXJhbXNbMF0pO3JldHVybiBhLmJsb2NrKCJsaW5rLXRvIixlLnBhcmFtcy5z
bGljZSgxKSxlLmhhc2gsdChyLGUubG9jKSxudWxsLGUubG9jKX19fSksZX19KSxlKCJlbWJlci10
ZW1wbGF0ZS1jb21waWxlci9wbHVnaW5zL3RyYW5zZm9ybS1pbnB1dC1vbi10by1vbkV2ZW50Iixb
ImV4cG9ydHMiLCJlbWJlci1tZXRhbC9kZWJ1ZyIsImVtYmVyLXRlbXBsYXRlLWNvbXBpbGVyL3N5
c3RlbS9jYWxjdWxhdGUtbG9jYXRpb24tZGlzcGxheSJdLGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg8PTB8fHZvaWQgMD09PWFy
Z3VtZW50c1swXT97fTphcmd1bWVudHNbMF07dGhpcy5zeW50YXg9bnVsbCx0aGlzLm9wdGlvbnM9
ZX1mdW5jdGlvbiBpKGUsdCl7Zm9yKHZhciByPTAsbj1lLnBhaXJzLmxlbmd0aDtyPG47cisrKXt2
YXIgaT1lLnBhaXJzW3JdO2lmKGkua2V5PT09dClyZXR1cm4gaX1yZXR1cm4hMX1mdW5jdGlvbiBv
KGUsdCl7Zm9yKHZhciByPVtdLG49MCxpPWUucGFpcnMubGVuZ3RoO248aTtuKyspe3ZhciBvPWUu
cGFpcnNbbl07byE9PXQmJnIucHVzaChvKX1lLnBhaXJzPXJ9bi5wcm90b3R5cGUudHJhbnNmb3Jt
PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsbj10LnN5bnRheC5idWlsZGVycyxhPW5ldyB0LnN5bnRh
eC5XYWxrZXIscz10Lm9wdGlvbnMubW9kdWxlTmFtZTtyZXR1cm4gYS52aXNpdChlLGZ1bmN0aW9u
KGUpe2lmKHQudmFsaWRhdGUoZSkpe3ZhciBhPWkoZS5oYXNoLCJhY3Rpb24iKSx1PWkoZS5oYXNo
LCJvbiIpLGw9aShlLmhhc2gsIm9uRXZlbnQiKSxjPXV8fGw7ci5kZWZhdWx0KHMsZS5sb2MpO2lm
KGMmJiJTdHJpbmdMaXRlcmFsIiE9PWMudmFsdWUudHlwZSlyZXR1cm4gdm9pZChjLmtleT0ib25F
dmVudCIpO2lmKG8oZS5oYXNoLGMpLG8oZS5oYXNoLGEpLCFhKXJldHVybjtjP2Mua2V5Kyc9Iicr
Yy52YWx1ZS52YWx1ZSsnIiAnOiIiO2MmJiJrZXlQcmVzcyI9PT1jLnZhbHVlLnZhbHVlJiYoYy52
YWx1ZS52YWx1ZT0ia2V5LXByZXNzIik7KGM/Yy52YWx1ZS52YWx1ZToiZW50ZXIiKSsnPSInK2Eu
dmFsdWUub3JpZ2luYWwrJyInO2N8fChjPW4ucGFpcigib25FdmVudCIsbi5zdHJpbmcoImVudGVy
IikpKSxlLmhhc2gucGFpcnMucHVzaChuLnBhaXIoYy52YWx1ZS52YWx1ZSxhLnZhbHVlKSl9fSks
ZX0sbi5wcm90b3R5cGUudmFsaWRhdGU9ZnVuY3Rpb24oZSl7cmV0dXJuIk11c3RhY2hlU3RhdGVt
ZW50Ij09PWUudHlwZSYmImlucHV0Ij09PWUucGF0aC5vcmlnaW5hbCYmKGkoZS5oYXNoLCJhY3Rp
b24iKXx8aShlLmhhc2gsIm9uIil8fGkoZS5oYXNoLCJvbkV2ZW50IikpfSxlLmRlZmF1bHQ9bn0p
LGUoImVtYmVyLXRlbXBsYXRlLWNvbXBpbGVyL3BsdWdpbnMvdHJhbnNmb3JtLWl0ZW0tY2xhc3Mi
LFsiZXhwb3J0cyJdLGZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB0KCl7dGhpcy5z
eW50YXg9bnVsbH1mdW5jdGlvbiByKGUpe3JldHVybigiQmxvY2tTdGF0ZW1lbnQiPT09ZS50eXBl
fHwiTXVzdGFjaGVTdGF0ZW1lbnQiPT09ZS50eXBlKSYmImNvbGxlY3Rpb24iPT09ZS5wYXRoLm9y
aWdpbmFsfWZ1bmN0aW9uIG4oZSx0KXtmb3IodmFyIHI9MCxuPWUubGVuZ3RoO3I8bjtyKyspdChl
W3JdKX1lLmRlZmF1bHQ9dCx0LnByb3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24oZSl7dmFyIHQ9
dGhpcy5zeW50YXguYnVpbGRlcnMsaT1uZXcgdGhpcy5zeW50YXguV2Fsa2VyO3JldHVybiBpLnZp
c2l0KGUsZnVuY3Rpb24oZSl7cihlKSYmbihlLmhhc2gucGFpcnMsZnVuY3Rpb24oZSl7dmFyIHI9
ZS5rZXksbj1lLnZhbHVlO2lmKCJpdGVtQ2xhc3MiPT09ciYmIlN0cmluZ0xpdGVyYWwiIT09bi50
eXBlKXt2YXIgaT1uLm9yaWdpbmFsLG89W25dLGE9W3Quc3RyaW5nKGkpLHQucGF0aChpKV07by5w
dXNoKHQuc2V4cHIodC5zdHJpbmcoIi1ub3JtYWxpemUtY2xhc3MiKSxhKSk7dmFyIHM9dC5zZXhw
cih0LnN0cmluZygiaWYiKSxvKTtlLnZhbHVlPXN9fSl9KSxlfX0pLGUoImVtYmVyLXRlbXBsYXRl
LWNvbXBpbGVyL3BsdWdpbnMvdHJhbnNmb3JtLW9sZC1iaW5kaW5nLXN5bnRheCIsWyJleHBvcnRz
IiwiZW1iZXItbWV0YWwvZGVidWciLCJlbWJlci10ZW1wbGF0ZS1jb21waWxlci9zeXN0ZW0vY2Fs
Y3VsYXRlLWxvY2F0aW9uLWRpc3BsYXkiXSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIG4oZSl7dGhpcy5zeW50YXg9bnVsbCx0aGlzLm9wdGlvbnM9ZX1mdW5jdGlvbiBpKGUp
e3JldHVybiJCbG9ja1N0YXRlbWVudCI9PT1lLnR5cGV8fCJNdXN0YWNoZVN0YXRlbWVudCI9PT1l
LnR5cGV9ZnVuY3Rpb24gbyhlLHQpe2Zvcih2YXIgcj0wLG49ZS5sZW5ndGg7cjxuO3IrKyl0KGVb
cl0pfWUuZGVmYXVsdD1uLG4ucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbihlKXt2YXIgdD10
aGlzLm9wdGlvbnMubW9kdWxlTmFtZSxuPXRoaXMuc3ludGF4LmJ1aWxkZXJzLGE9bmV3IHRoaXMu
c3ludGF4LldhbGtlcjtyZXR1cm4gYS52aXNpdChlLGZ1bmN0aW9uKGUpe2koZSkmJm8oZS5oYXNo
LnBhaXJzLGZ1bmN0aW9uKGUpe3ZhciBpPWUua2V5LG89ZS52YWx1ZTtyLmRlZmF1bHQodCxlLmxv
Yyk7aWYoImNsYXNzQmluZGluZyIhPT1pJiYiQmluZGluZyI9PT1pLnN1YnN0cigtNykpe3ZhciBh
PWkuc2xpY2UoMCwtNyk7ZS5rZXk9YSwiU3RyaW5nTGl0ZXJhbCI9PT1vLnR5cGUmJihlLnZhbHVl
PW4ucGF0aChvLm9yaWdpbmFsKSl9fSl9KSxlfX0pLGUoImVtYmVyLXRlbXBsYXRlLWNvbXBpbGVy
L3BsdWdpbnMvdHJhbnNmb3JtLW9sZC1jbGFzcy1iaW5kaW5nLXN5bnRheCIsWyJleHBvcnRzIl0s
ZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHQoZSl7dGhpcy5zeW50YXg9bnVsbCx0
aGlzLm9wdGlvbnM9ZX1mdW5jdGlvbiByKGUsdCxyKXtmb3IodmFyIG49MCxpPWUubGVuZ3RoO248
aTtuKyspe3ZhciBvPWVbbl0sYT1vWzBdLHM9b1sxXSx1PW9bMl0sbD12b2lkIDA7aWYoIiI9PT1h
KWw9ci5zdHJpbmcocyk7ZWxzZXt2YXIgYz1bci5wYXRoKGEpXTtpZihzKWMucHVzaChyLnN0cmlu
ZyhzKSk7ZWxzZXt2YXIgZj1bci5zdHJpbmcoYSksci5wYXRoKGEpXSxkPXIuaGFzaCgpO3ZvaWQg
MCE9PXMmJmQucGFpcnMucHVzaChyLnBhaXIoImFjdGl2ZUNsYXNzIixyLnN0cmluZyhzKSkpLHZv
aWQgMCE9PXUmJmQucGFpcnMucHVzaChyLnBhaXIoImluYWN0aXZlQ2xhc3MiLHIuc3RyaW5nKHUp
KSksYy5wdXNoKHIuc2V4cHIoci5zdHJpbmcoIi1ub3JtYWxpemUtY2xhc3MiKSxmLGQpKX11JiZj
LnB1c2goci5zdHJpbmcodSkpLGw9ci5zZXhwcihyLnN0cmluZygiaWYiKSxjKX10LnB1c2gobCks
dC5wdXNoKHIuc3RyaW5nKCIgIikpfX1mdW5jdGlvbiBuKGUpe3JldHVybiJCbG9ja1N0YXRlbWVu
dCI9PT1lLnR5cGV8fCJNdXN0YWNoZVN0YXRlbWVudCI9PT1lLnR5cGV9ZnVuY3Rpb24gaShlLHQp
e2Zvcih2YXIgcj0wLG49ZS5sZW5ndGg7cjxuO3IrKyl0KGVbcl0scil9ZnVuY3Rpb24gbyhlKXtm
b3IodmFyIHQ9ZS5zcGxpdCgiICIpLHI9MCxuPXQubGVuZ3RoO3I8bjtyKyspdFtyXT10W3JdLnNw
bGl0KCI6Iik7cmV0dXJuIHR9ZS5kZWZhdWx0PXQsdC5wcm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0
aW9uKGUpe3ZhciB0PXRoaXMuc3ludGF4LmJ1aWxkZXJzLGE9bmV3IHRoaXMuc3ludGF4LldhbGtl
cjtyZXR1cm4gYS52aXNpdChlLGZ1bmN0aW9uKGUpe2lmKG4oZSkpe3ZhciBhPVtdLHM9W10sdT12
b2lkIDA7aWYoaShlLmhhc2gucGFpcnMsZnVuY3Rpb24oZSx0KXt2YXIgcj1lLmtleTsiY2xhc3NC
aW5kaW5nIj09PXJ8fCJjbGFzc05hbWVCaW5kaW5ncyI9PT1yPyhzLnB1c2godCksYS5wdXNoKGUp
KToiY2xhc3MiPT09ciYmKHU9ZSl9KSwwIT09YS5sZW5ndGgpe3ZhciBsPVtdO3U/KGwucHVzaCh1
LnZhbHVlKSxsLnB1c2godC5zdHJpbmcoIiAiKSkpOih1PXQucGFpcigiY2xhc3MiLG51bGwpLGUu
aGFzaC5wYWlycy5wdXNoKHUpKSxpKHMsZnVuY3Rpb24odCl7ZS5oYXNoLnBhaXJzLnNwbGljZSh0
LDEpfSksaShhLGZ1bmN0aW9uKGUpe3ZhciBuPWUudmFsdWUsaT0oZS5sb2MsW10pO2lmKCJTdHJp
bmdMaXRlcmFsIj09PW4udHlwZSl7dmFyIGE9byhuLm9yaWdpbmFsKTtyKGEsaSx0KSxsLnB1c2gu
YXBwbHkobCxpKX19KTt2YXIgYz10Lmhhc2goKTt1LnZhbHVlPXQuc2V4cHIodC5zdHJpbmcoImNv
bmNhdCIpLGwsYyl9fX0pLGV9fSksZSgiZW1iZXItdGVtcGxhdGUtY29tcGlsZXIvcGx1Z2lucy90
cmFuc2Zvcm0tdG9wLWxldmVsLWNvbXBvbmVudHMiLFsiZXhwb3J0cyJdLGZ1bmN0aW9uKGUpeyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiB0KCl7dGhpcy5zeW50YXg9bnVsbH1mdW5jdGlvbiByKGUsdCxy
KXt2YXIgbj1lLmxvYyxpPWUuYm9keTtpZihuJiYxPT09bi5zdGFydC5saW5lJiYwPT09bi5zdGFy
dC5jb2x1bW4pe2Zvcih2YXIgbz12b2lkIDAsYT12b2lkIDAscz0wLHU9MCxsPWkubGVuZ3RoO3U8
bDt1Kyspe3ZhciBjPWlbdV07aWYoIlRleHROb2RlIiE9PWMudHlwZXx8IS9eW1xzXSokLy50ZXN0
KGMuY2hhcnMpKXtpZihzKys+MClyZXR1cm4hMTsiQ29tcG9uZW50Tm9kZSIhPT1jLnR5cGUmJiJF
bGVtZW50Tm9kZSIhPT1jLnR5cGV8fChvPWMsYT11KX19byYmIkNvbXBvbmVudE5vZGUiPT09by50
eXBlJiZ0KG8pfX10LnByb3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5z
eW50YXguYnVpbGRlcnM7cmV0dXJuIHIoZSxmdW5jdGlvbihlKXsiQ29tcG9uZW50Tm9kZSI9PT1l
LnR5cGUmJihlLnRhZz0iQCIrZS50YWcsZS5pc1N0YXRpYz0hMCl9LGZ1bmN0aW9uKGUpe3ZhciBy
PWUuYXR0cmlidXRlcy5zb21lKGZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHVlLmVzY2FwZWQ9PT0h
MX0pO2lmKGUubW9kaWZpZXJzLmxlbmd0aHx8cilyZXR1cm4gZTt2YXIgbj10LnByb2dyYW0oZS5j
aGlsZHJlbiksaT10LmNvbXBvbmVudCgiQDwiK2UudGFnKyI+IixlLmF0dHJpYnV0ZXMsbixlLmxv
Yyk7cmV0dXJuIGkuaXNTdGF0aWM9ITAsaX0pLGV9LGUuZGVmYXVsdD10fSksZSgiZW1iZXItdGVt
cGxhdGUtY29tcGlsZXIvc3lzdGVtL2NhbGN1bGF0ZS1sb2NhdGlvbi1kaXNwbGF5IixbImV4cG9y
dHMiXSxmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gdChlLHQpe3ZhciByPXR8fHt9
LG49ci5zdGFydHx8e30saT1uLmNvbHVtbixvPW4ubGluZSxhPSIiO3JldHVybiBlJiYoYSs9Iici
K2UrIicgIiksdm9pZCAwIT09byYmdm9pZCAwIT09aSYmKGUmJihhKz0iQCAiKSxhKz0iTCIrbysi
OkMiK2kpLGEmJihhPSIoIithKyIpICIpLGF9ZS5kZWZhdWx0PXR9KSxlKCJlbWJlci10ZW1wbGF0
ZS1jb21waWxlci9zeXN0ZW0vY29tcGlsZSIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvZmVhdHVy
ZXMiLCJyZXF1aXJlIiwiZW1iZXItdGVtcGxhdGUtY29tcGlsZXIvc3lzdGVtL2NvbXBpbGVfb3B0
aW9ucyIsImVtYmVyLXRlbXBsYXRlLWNvbXBpbGVyL3N5c3RlbS90ZW1wbGF0ZSJdLGZ1bmN0aW9u
KGUsdCxyLG4saSl7InVzZSBzdHJpY3QiO3ZhciBvO2UuZGVmYXVsdD1mdW5jdGlvbihlLHQpe2lm
KCFvJiZyLmhhcygiaHRtbGJhcnMtY29tcGlsZXIvY29tcGlsZXIiKSYmKG89ci5kZWZhdWx0KCJo
dG1sYmFycy1jb21waWxlci9jb21waWxlciIpLmNvbXBpbGUpLCFvKXRocm93IG5ldyBFcnJvcigi
Q2Fubm90IGNhbGwgYGNvbXBpbGVgIHdpdGhvdXQgdGhlIHRlbXBsYXRlIGNvbXBpbGVyIGxvYWRl
ZC4gUGxlYXNlIGxvYWQgYGVtYmVyLXRlbXBsYXRlLWNvbXBpbGVyLmpzYCBwcmlvciB0byBjYWxs
aW5nIGBjb21waWxlYC4iKTt2YXIgYT1vKGUsbi5kZWZhdWx0KHQpKTtyZXR1cm4gaS5kZWZhdWx0
KGEpfX0pLGUoImVtYmVyLXRlbXBsYXRlLWNvbXBpbGVyL3N5c3RlbS9jb21waWxlX29wdGlvbnMi
LFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL2Fzc2lnbiIsImVtYmVyLXRlbXBsYXRlLWNvbXBpbGVy
L3BsdWdpbnMiXSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXZvaWQgMCxpPXZv
aWQgMDtuPWZ1bmN0aW9uKGUpe3ZhciBuPSEwLG89dm9pZCAwO289ZT09PSEwP3t9OnQuZGVmYXVs
dCh7fSxlKSxvLmRpc2FibGVDb21wb25lbnRHZW5lcmF0aW9uPW47dmFyIGE9e2FzdDpyLmRlZmF1
bHQuYXN0LnNsaWNlKCl9O3JldHVybiBvLnBsdWdpbnMmJm8ucGx1Z2lucy5hc3QmJihhLmFzdD1h
LmFzdC5jb25jYXQoby5wbHVnaW5zLmFzdCkpLG8ucGx1Z2lucz1hLG8uYnVpbGRNZXRhPWZ1bmN0
aW9uKGUpe3JldHVybntmcmFnbWVudFJlYXNvbjppKGUpLHJldmlzaW9uOiJFbWJlckAyLjYuMiIs
bG9jOmUubG9jLG1vZHVsZU5hbWU6by5tb2R1bGVOYW1lfX0sb30saT1mdW5jdGlvbihlKXt2YXIg
dD1lLmxvYyxyPWUuYm9keTtpZighdHx8MSE9PXQuc3RhcnQubGluZXx8MCE9PXQuc3RhcnQuY29s
dW1uKXJldHVybiExO2Zvcih2YXIgbj12b2lkIDAsaT0wLG89e30sYT0wLHM9ci5sZW5ndGg7YTxz
O2ErKyl7dmFyIHU9clthXTsiVGV4dE5vZGUiPT09dS50eXBlJiYvXltcc10qJC8udGVzdCh1LmNo
YXJzKXx8KGkrKz4wJiYob1sibXVsdGlwbGUtbm9kZXMiXT0hMCksIkNvbXBvbmVudE5vZGUiPT09
dS50eXBlfHwiRWxlbWVudE5vZGUiPT09dS50eXBlP249dTpvWyJ3cm9uZy10eXBlIl09ITApfWlm
KDA9PT1pKXJldHVybntuYW1lOiJtaXNzaW5nLXdyYXBwZXIiLHByb2JsZW1zOlsiZW1wdHktYm9k
eSJdfTt2YXIgbD1PYmplY3Qua2V5cyhvKTtyZXR1cm4gbC5sZW5ndGg/e25hbWU6Im1pc3Npbmct
d3JhcHBlciIscHJvYmxlbXM6bH06IkNvbXBvbmVudE5vZGUiIT09bi50eXBlJiYobi5tb2RpZmll
cnMubGVuZ3RoP3tuYW1lOiJtb2RpZmllcnMiLG1vZGlmaWVyczpuLm1vZGlmaWVycy5tYXAoZnVu
Y3Rpb24oZSl7cmV0dXJuIGUucGF0aC5vcmlnaW5hbH0pfTohIW4uYXR0cmlidXRlcy5zb21lKGZ1
bmN0aW9uKGUpe3JldHVybiFlLnZhbHVlLmVzY2FwZWR9KSYme25hbWU6InRyaXBsZS1jdXJsaWVz
In0pfSxlLmRlZmF1bHQ9bn0pLGUoImVtYmVyLXRlbXBsYXRlLWNvbXBpbGVyL3N5c3RlbS9wcmVj
b21waWxlIixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9mZWF0dXJlcyIsInJlcXVpcmUiLCJlbWJl
ci10ZW1wbGF0ZS1jb21waWxlci9zeXN0ZW0vY29tcGlsZV9vcHRpb25zIl0sZnVuY3Rpb24oZSx0
LHIsbil7InVzZSBzdHJpY3QiO3ZhciBpO2UuZGVmYXVsdD1mdW5jdGlvbihlLHQpe2lmKCFpJiZy
LmhhcygiaHRtbGJhcnMtY29tcGlsZXIvY29tcGlsZXIiKSYmKGk9ci5kZWZhdWx0KCJodG1sYmFy
cy1jb21waWxlci9jb21waWxlciIpLmNvbXBpbGVTcGVjKSwhaSl0aHJvdyBuZXcgRXJyb3IoIkNh
bm5vdCBjYWxsIGBjb21waWxlU3BlY2Agd2l0aG91dCB0aGUgdGVtcGxhdGUgY29tcGlsZXIgbG9h
ZGVkLiBQbGVhc2UgbG9hZCBgZW1iZXItdGVtcGxhdGUtY29tcGlsZXIuanNgIHByaW9yIHRvIGNh
bGxpbmcgYGNvbXBpbGVTcGVjYC4iKTtyZXR1cm4gaShlLG4uZGVmYXVsdCh0KSl9fSksZSgiZW1i
ZXItdGVtcGxhdGUtY29tcGlsZXIvc3lzdGVtL3RlbXBsYXRlIixbImV4cG9ydHMiLCJlbWJlci1t
ZXRhbC9mZWF0dXJlcyIsInJlcXVpcmUiXSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3Zh
ciBuPXZvaWQgMCxpPXIuZGVmYXVsdCgiaHRtbGJhcnMtcnVudGltZS9ob29rcyIpLG89aS53cmFw
O249ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVuZGVyfHwoZT1vKGUpKSxlLmlzVG9wPSEwLGUuaXNN
ZXRob2Q9ITEsZX0sZS5kZWZhdWx0PW59KSxlKCJlbWJlci12aWV3cy9jb21wYXQvYXR0cnMtcHJv
eHkiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL21peGluIiwiZW1iZXItbWV0YWwvc3ltYm9sIiwi
ZW1iZXItbWV0YWwvcHJvcGVydHlfZXZlbnRzIl0sZnVuY3Rpb24oZSx0LHIsbil7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIllvdSB0cmllZCB0byBsb29rIHVwIGFuIGF0dHJpYnV0
ZSBkaXJlY3RseSBvbiB0aGUgY29tcG9uZW50LiBUaGlzIGlzIGRlcHJlY2F0ZWQuIFVzZSBhdHRy
cy4iK2UrIiBpbnN0ZWFkLiJ9ZnVuY3Rpb24gbyhlKXtyZXR1cm4gZSYmZVthXX1lLmRlcHJlY2F0
aW9uPWk7dmFyIGE9ci5kZWZhdWx0KCJNVVRBQkxFX0NFTEwiKTtlLk1VVEFCTEVfQ0VMTD1hO3Zh
ciBzPXthdHRyczpudWxsLGdldEF0dHI6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5hdHRycztpZih0
KXJldHVybiB0aGlzLmdldEF0dHJGb3IodCxlKX0sZ2V0QXR0ckZvcjpmdW5jdGlvbihlLHQpe3Zh
ciByPWVbdF07cmV0dXJuIG8ocik/ci52YWx1ZTpyfSxzZXRBdHRyOmZ1bmN0aW9uKGUsdCl7dmFy
IHI9dGhpcy5hdHRycyxuPXJbZV07aWYoIW8obikpdGhyb3cgbmV3IEVycm9yKCJZb3UgY2FuJ3Qg
dXBkYXRlIGF0dHJzLiIrZSsiLCBiZWNhdXNlIGl0J3Mgbm90IG11dGFibGUiKTtuLnVwZGF0ZSh0
KX0sX3Byb3BhZ2F0ZUF0dHJzVG9UaGlzOmZ1bmN0aW9uKGUpe3RoaXMuX2lzRGlzcGF0Y2hpbmdB
dHRycz0hMCx0aGlzLnNldFByb3BlcnRpZXMoZSksdGhpcy5faXNEaXNwYXRjaGluZ0F0dHJzPSEx
fX07c1tuLlBST1BFUlRZX0RJRF9DSEFOR0VdPWZ1bmN0aW9uKGUpe3RoaXMuX2lzQW5nbGVCcmFj
a2V0fHx0aGlzLl9pc0Rpc3BhdGNoaW5nQXR0cnN8fHRoaXMuX2N1cnJlbnRTdGF0ZSYmdGhpcy5f
Y3VycmVudFN0YXRlLmxlZ2FjeVByb3BlcnR5RGlkQ2hhbmdlKHRoaXMsZSl9LGUuZGVmYXVsdD10
Lk1peGluLmNyZWF0ZShzKX0pLGUoImVtYmVyLXZpZXdzL2NvbXBvbmVudF9sb29rdXAiLFsiZXhw
b3J0cyIsImVtYmVyLW1ldGFsL2NvcmUiLCJlbWJlci1tZXRhbC9kZWJ1ZyIsImVtYmVyLXJ1bnRp
bWUvc3lzdGVtL29iamVjdCIsImVtYmVyLWh0bWxiYXJzL3N5c3RlbS9sb29rdXAtaGVscGVyIiwi
Y29udGFpbmVyL293bmVyIl0sZnVuY3Rpb24oZSx0LHIsbixpLG8peyJ1c2Ugc3RyaWN0IjtlLmRl
ZmF1bHQ9bi5kZWZhdWx0LmV4dGVuZCh7aW52YWxpZE5hbWU6ZnVuY3Rpb24oZSl7aWYoIWkuQ09O
VEFJTlNfREFTSF9DQUNIRS5nZXQoZSkpcmV0dXJuITB9LGxvb2t1cEZhY3Rvcnk6ZnVuY3Rpb24o
ZSxyKXtyPXJ8fG8uZ2V0T3duZXIodGhpcyk7dmFyIG49ImNvbXBvbmVudDoiK2UsaT0idGVtcGxh
dGU6Y29tcG9uZW50cy8iK2UsYT1yJiZyLmhhc1JlZ2lzdHJhdGlvbihpKTthJiZyLmluamVjdChu
LCJsYXlvdXQiLGkpO3ZhciBzPXIuX2xvb2t1cEZhY3Rvcnkobik7aWYoYXx8cylyZXR1cm4gc3x8
KHIucmVnaXN0ZXIobix0LmRlZmF1bHQuQ29tcG9uZW50KSxzPXIuX2xvb2t1cEZhY3Rvcnkobikp
LHN9LGNvbXBvbmVudEZvcjpmdW5jdGlvbihlLHQscil7aWYoIXRoaXMuaW52YWxpZE5hbWUoZSkp
e3ZhciBuPSJjb21wb25lbnQ6IitlO3JldHVybiB0Ll9sb29rdXBGYWN0b3J5KG4scil9fSxsYXlv
dXRGb3I6ZnVuY3Rpb24oZSx0LHIpe2lmKCF0aGlzLmludmFsaWROYW1lKGUpKXt2YXIgbj0idGVt
cGxhdGU6Y29tcG9uZW50cy8iK2U7cmV0dXJuIHQubG9va3VwKG4scil9fX0pfSksZSgiZW1iZXIt
dmlld3MvY29tcG9uZW50cy9jb21wb25lbnQiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL2RlYnVn
IiwiZW1iZXItbWV0YWwvZW52aXJvbm1lbnQiLCJlbWJlci1ydW50aW1lL21peGlucy90YXJnZXRf
YWN0aW9uX3N1cHBvcnQiLCJlbWJlci12aWV3cy92aWV3cy92aWV3IiwiZW1iZXItbWV0YWwvcHJv
cGVydHlfZ2V0IiwiZW1iZXItbWV0YWwvcHJvcGVydHlfc2V0IiwiZW1iZXItbWV0YWwvaXNfbm9u
ZSIsImVtYmVyLW1ldGFsL3V0aWxzIiwiZW1iZXItbWV0YWwvY29tcHV0ZWQiLCJlbWJlci12aWV3
cy9jb21wYXQvYXR0cnMtcHJveHkiLCJjb250YWluZXIvb3duZXIiXSxmdW5jdGlvbihlLHQscixu
LGksbyxhLHMsdSxsLGMsZil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGQoZSx0KXtyZXR1cm4gdCYm
dFtjLk1VVEFCTEVfQ0VMTF0mJih0PXQudmFsdWUpLHR9dmFyIHA9aS5kZWZhdWx0LmV4dGVuZChu
LmRlZmF1bHQse2lzQ29tcG9uZW50OiEwLGNvbnRyb2xsZXI6bnVsbCxjb250ZXh0Om51bGwsaW5z
dHJ1bWVudE5hbWU6ImNvbXBvbmVudCIsaW5zdHJ1bWVudERpc3BsYXk6bC5jb21wdXRlZChmdW5j
dGlvbigpe2lmKHRoaXMuX2RlYnVnQ29udGFpbmVyS2V5KXJldHVybiJ7eyIrdGhpcy5fZGVidWdD
b250YWluZXJLZXkuc3BsaXQoIjoiKVsxXSsifX0ifSksaW5pdDpmdW5jdGlvbigpe2lmKHRoaXMu
X3N1cGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxhLnNldCh0aGlzLCJjb250cm9sbGVyIix0aGlz
KSxhLnNldCh0aGlzLCJjb250ZXh0Iix0aGlzKSwhdGhpcy5sYXlvdXQmJnRoaXMubGF5b3V0TmFt
ZSYmZi5nZXRPd25lcih0aGlzKSl7dmFyIGU9by5nZXQodGhpcywibGF5b3V0TmFtZSIpO3RoaXMu
bGF5b3V0PXRoaXMudGVtcGxhdGVGb3JOYW1lKGUpfXRoaXMuZGVmYXVsdExheW91dCYmIXRoaXMu
bGF5b3V0JiYodGhpcy5sYXlvdXQ9dGhpcy5kZWZhdWx0TGF5b3V0KX0sdGVtcGxhdGU6bnVsbCxs
YXlvdXROYW1lOm51bGwsbGF5b3V0Om51bGwsdGFyZ2V0T2JqZWN0OmwuY29tcHV0ZWQoImNvbnRy
b2xsZXIiLGZ1bmN0aW9uKGUpe2lmKHRoaXMuX3RhcmdldE9iamVjdClyZXR1cm4gdGhpcy5fdGFy
Z2V0T2JqZWN0O2lmKHRoaXMuX2NvbnRyb2xsZXIpcmV0dXJuIHRoaXMuX2NvbnRyb2xsZXI7dmFy
IHQ9by5nZXQodGhpcywicGFyZW50VmlldyIpO3JldHVybiB0P28uZ2V0KHQsImNvbnRyb2xsZXIi
KTpudWxsfSksc2VuZEFjdGlvbjpmdW5jdGlvbihlKXtmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0
aCxyPUFycmF5KHQ+MT90LTE6MCksbj0xO248dDtuKyspcltuLTFdPWFyZ3VtZW50c1tuXTt2YXIg
aTt2b2lkIDA9PT1lJiYoZT0iYWN0aW9uIiksaT1vLmdldCh0aGlzLCJhdHRycy4iK2UpfHxvLmdl
dCh0aGlzLGUpLGk9ZCh0aGlzLGkpLHZvaWQgMCE9PWkmJigiZnVuY3Rpb24iPT10eXBlb2YgaT9p
LmFwcGx5KHZvaWQgMCxyKTp0aGlzLnRyaWdnZXJBY3Rpb24oe2FjdGlvbjppLGFjdGlvbkNvbnRl
eHQ6cn0pKX0sc2VuZDpmdW5jdGlvbihlKXtmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxyPUFy
cmF5KHQ+MT90LTE6MCksbj0xO248dDtuKyspcltuLTFdPWFyZ3VtZW50c1tuXTt2YXIgaSxhPXRo
aXMuYWN0aW9ucyYmdGhpcy5hY3Rpb25zW2VdO2lmKGEpe3ZhciBzPWEuYXBwbHkodGhpcyxyKT09
PSEwO2lmKCFzKXJldHVybn1pZihpPW8uZ2V0KHRoaXMsInRhcmdldCIpKXt2YXIgbDsobD1pKS5z
ZW5kLmFwcGx5KGwsYXJndW1lbnRzKX1lbHNlIGlmKCFhKXRocm93IG5ldyBFcnJvcih1Lmluc3Bl
Y3QodGhpcykrIiBoYWQgbm8gYWN0aW9uIGhhbmRsZXIgZm9yOiAiK2UpfX0pO3AucmVvcGVuQ2xh
c3Moe2lzQ29tcG9uZW50RmFjdG9yeTohMH0pLGUuZGVmYXVsdD1wfSksZSgiZW1iZXItdmlld3Mv
aW5kZXgiLFsiZXhwb3J0cyIsImVtYmVyLXJ1bnRpbWUiLCJlbWJlci12aWV3cy9zeXN0ZW0vanF1
ZXJ5IiwiZW1iZXItdmlld3Mvc3lzdGVtL3V0aWxzIiwiZW1iZXItdmlld3Mvc3lzdGVtL2V4dCIs
ImVtYmVyLW1ldGFsLXZpZXdzIiwiZW1iZXItdmlld3MvY29tcG9uZW50cy9jb21wb25lbnQiLCJl
bWJlci12aWV3cy9zeXN0ZW0vZXZlbnRfZGlzcGF0Y2hlciIsImVtYmVyLXZpZXdzL21peGlucy92
aWV3X3RhcmdldF9hY3Rpb25fc3VwcG9ydCIsImVtYmVyLXZpZXdzL2NvbXBvbmVudF9sb29rdXAi
LCJlbWJlci12aWV3cy92aWV3cy9jaGVja2JveCIsImVtYmVyLXZpZXdzL21peGlucy90ZXh0X3N1
cHBvcnQiLCJlbWJlci12aWV3cy92aWV3cy90ZXh0X2ZpZWxkIiwiZW1iZXItdmlld3Mvdmlld3Mv
dGV4dF9hcmVhIl0sZnVuY3Rpb24oZSx0LHIsbixpLG8sYSxzLHUsbCxjLGYsZCxwKXsidXNlIHN0
cmljdCI7dC5kZWZhdWx0LiQ9ci5kZWZhdWx0LHQuZGVmYXVsdC5WaWV3VGFyZ2V0QWN0aW9uU3Vw
cG9ydD11LmRlZmF1bHQ7dmFyIGg9dC5kZWZhdWx0LlZpZXdVdGlscz17fTtoLmlzU2ltcGxlQ2xp
Y2s9bi5pc1NpbXBsZUNsaWNrLGguZ2V0Vmlld0NsaWVudFJlY3RzPW4uZ2V0Vmlld0NsaWVudFJl
Y3RzLGguZ2V0Vmlld0JvdW5kaW5nQ2xpZW50UmVjdD1uLmdldFZpZXdCb3VuZGluZ0NsaWVudFJl
Y3QsdC5kZWZhdWx0Ll9SZW5kZXJlcj1vLlJlbmRlcmVyLHQuZGVmYXVsdC5DaGVja2JveD1jLmRl
ZmF1bHQsdC5kZWZhdWx0LlRleHRGaWVsZD1kLmRlZmF1bHQsdC5kZWZhdWx0LlRleHRBcmVhPXAu
ZGVmYXVsdCx0LmRlZmF1bHQuVGV4dFN1cHBvcnQ9Zi5kZWZhdWx0LHQuZGVmYXVsdC5Db21wb25l
bnRMb29rdXA9bC5kZWZhdWx0LHQuZGVmYXVsdC5Db21wb25lbnQ9YS5kZWZhdWx0LHQuZGVmYXVs
dC5FdmVudERpc3BhdGNoZXI9cy5kZWZhdWx0LGUuZGVmYXVsdD10LmRlZmF1bHR9KSxlKCJlbWJl
ci12aWV3cy9taXhpbnMvYXJpYV9yb2xlX3N1cHBvcnQiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFs
L21peGluIl0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZS5kZWZhdWx0PXQuTWl4aW4uY3Jl
YXRlKHthdHRyaWJ1dGVCaW5kaW5nczpbImFyaWFSb2xlOnJvbGUiXSxhcmlhUm9sZTpudWxsfSl9
KSxlKCJlbWJlci12aWV3cy9taXhpbnMvY2xhc3NfbmFtZXNfc3VwcG9ydCIsWyJleHBvcnRzIiwi
ZW1iZXItbWV0YWwvZGVidWciLCJlbWJlci1tZXRhbC9taXhpbiIsImVtYmVyLXJ1bnRpbWUvc3lz
dGVtL25hdGl2ZV9hcnJheSJdLGZ1bmN0aW9uKGUsdCxyLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgaT1b
XTtlLmRlZmF1bHQ9ci5NaXhpbi5jcmVhdGUoe2NvbmNhdGVuYXRlZFByb3BlcnRpZXM6WyJjbGFz
c05hbWVzIiwiY2xhc3NOYW1lQmluZGluZ3MiXSxpbml0OmZ1bmN0aW9uKCl7dGhpcy5fc3VwZXIu
YXBwbHkodGhpcyxhcmd1bWVudHMpLHRoaXMuY2xhc3NOYW1lQmluZGluZ3M9bi5BKHRoaXMuY2xh
c3NOYW1lQmluZGluZ3Muc2xpY2UoKSksdGhpcy5jbGFzc05hbWVzPW4uQSh0aGlzLmNsYXNzTmFt
ZXMuc2xpY2UoKSl9LGNsYXNzTmFtZXM6WyJlbWJlci12aWV3Il0sY2xhc3NOYW1lQmluZGluZ3M6
aX0pfSksZSgiZW1iZXItdmlld3MvbWl4aW5zL2luc3RydW1lbnRhdGlvbl9zdXBwb3J0IixbImV4
cG9ydHMiLCJlbWJlci1tZXRhbC9taXhpbiIsImVtYmVyLW1ldGFsL3Byb3BlcnR5X2dldCJdLGZ1
bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49dC5NaXhpbi5jcmVhdGUoe2luc3RydW1l
bnREaXNwbGF5OiIiLGluc3RydW1lbnROYW1lOiJ2aWV3IixpbnN0cnVtZW50RGV0YWlsczpmdW5j
dGlvbihlKXtlLnRlbXBsYXRlPXIuZ2V0KHRoaXMsInRlbXBsYXRlTmFtZSIpLHRoaXMuX3N1cGVy
KGUpfX0pO2UuZGVmYXVsdD1ufSksZSgiZW1iZXItdmlld3MvbWl4aW5zL2xlZ2FjeV9jaGlsZF92
aWV3c19zdXBwb3J0IixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9taXhpbiIsImVtYmVyLW1ldGFs
L3Byb3BlcnR5X2dldCIsImVtYmVyLW1ldGFsL3Byb3BlcnR5X3NldCIsImNvbnRhaW5lci9vd25l
ciJdLGZ1bmN0aW9uKGUsdCxyLG4saSl7InVzZSBzdHJpY3QiO2UuZGVmYXVsdD10Lk1peGluLmNy
ZWF0ZSh7bGlua0NoaWxkOmZ1bmN0aW9uKGUpe2VbaS5PV05FUl18fGkuc2V0T3duZXIoZSxpLmdl
dE93bmVyKHRoaXMpKSxyLmdldChlLCJwYXJlbnRWaWV3IikhPT10aGlzJiYobi5zZXQoZSwicGFy
ZW50VmlldyIsdGhpcyksZS50cmlnZ2VyKCJwYXJlbnRWaWV3RGlkQ2hhbmdlIikpLGUub3duZXJW
aWV3PXRoaXMub3duZXJWaWV3fSx1bmxpbmtDaGlsZDpmdW5jdGlvbihlKXtuLnNldChlLCJwYXJl
bnRWaWV3IixudWxsKSxlLnRyaWdnZXIoInBhcmVudFZpZXdEaWRDaGFuZ2UiKX19KX0pLGUoImVt
YmVyLXZpZXdzL21peGlucy9sZWdhY3lfdmlld19zdXBwb3J0IixbImV4cG9ydHMiLCJlbWJlci1t
ZXRhbC9kZWJ1ZyIsImVtYmVyLW1ldGFsL21peGluIiwiZW1iZXItbWV0YWwvcHJvcGVydHlfZ2V0
Il0sZnVuY3Rpb24oZSx0LHIsbil7InVzZSBzdHJpY3QiO3ZhciBpPXIuTWl4aW4uY3JlYXRlKHtt
dXRhdGVDaGlsZFZpZXdzOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyPW4uZ2V0KHRoaXMsImNoaWxk
Vmlld3MiKSxpPXIubGVuZ3RoOy0taT49MDspdD1yW2ldLGUodGhpcyx0LGkpO3JldHVybiB0aGlz
fSxyZW1vdmVBbGxDaGlsZHJlbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLm11dGF0ZUNoaWxkVmll
d3MoZnVuY3Rpb24oZSx0KXtlLnJlbW92ZUNoaWxkKHQpfSl9LGRlc3Ryb3lBbGxDaGlsZHJlbjpm
dW5jdGlvbigpe3JldHVybiB0aGlzLm11dGF0ZUNoaWxkVmlld3MoZnVuY3Rpb24oZSx0KXt0LmRl
c3Ryb3koKX0pfSxuZWFyZXN0Q2hpbGRPZjpmdW5jdGlvbihlKXtmb3IodmFyIHQ9bi5nZXQodGhp
cywicGFyZW50VmlldyIpO3Q7KXtpZihuLmdldCh0LCJwYXJlbnRWaWV3IilpbnN0YW5jZW9mIGUp
cmV0dXJuIHQ7dD1uLmdldCh0LCJwYXJlbnRWaWV3Iil9fSxuZWFyZXN0SW5zdGFuY2VPZjpmdW5j
dGlvbihlKXtmb3IodmFyIHQ9bi5nZXQodGhpcywicGFyZW50VmlldyIpO3Q7KXtpZih0IGluc3Rh
bmNlb2YgZSlyZXR1cm4gdDt0PW4uZ2V0KHQsInBhcmVudFZpZXciKX19LF9jb250ZXh0RGlkQ2hh
bmdlOnIub2JzZXJ2ZXIoImNvbnRleHQiLGZ1bmN0aW9uKCl7dGhpcy5yZXJlbmRlcigpfSl9KTtl
LmRlZmF1bHQ9aX0pLGUoImVtYmVyLXZpZXdzL21peGlucy90ZW1wbGF0ZV9yZW5kZXJpbmdfc3Vw
cG9ydCIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvbWl4aW4iXSxmdW5jdGlvbihlLHQpeyJ1c2Ug
c3RyaWN0Ijt2YXIgbixpPXQuTWl4aW4uY3JlYXRlKHtyZW5kZXJCbG9jazpmdW5jdGlvbihlLHQp
e3JldHVybiB2b2lkIDA9PT1uJiYobj1yKCJlbWJlci1odG1sYmFycy9zeXN0ZW0vcmVuZGVyLXZp
ZXciKSksbi5yZW5kZXJIVE1MQmFyc0Jsb2NrKHRoaXMsZSx0KX19KTtlLmRlZmF1bHQ9aX0pLGUo
ImVtYmVyLXZpZXdzL21peGlucy90ZXh0X3N1cHBvcnQiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFs
L3Byb3BlcnR5X2dldCIsImVtYmVyLW1ldGFsL3Byb3BlcnR5X3NldCIsImVtYmVyLW1ldGFsL21p
eGluIiwiZW1iZXItcnVudGltZS9taXhpbnMvdGFyZ2V0X2FjdGlvbl9zdXBwb3J0Il0sZnVuY3Rp
b24oZSx0LHIsbixpKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbyhlLHIsbil7dmFyIGk9dC5nZXQo
ciwiYXR0cnMuIitlKXx8dC5nZXQocixlKSxvPXQuZ2V0KHIsIm9uRXZlbnQiKSxhPXQuZ2V0KHIs
InZhbHVlIik7KG89PT1lfHwia2V5UHJlc3MiPT09byYmImtleS1wcmVzcyI9PT1lKSYmci5zZW5k
QWN0aW9uKCJhY3Rpb24iLGEpLHIuc2VuZEFjdGlvbihlLGEpLChpfHxvPT09ZSkmJih0LmdldChy
LCJidWJibGVzIil8fG4uc3RvcFByb3BhZ2F0aW9uKCkpfXZhciBhPXsxMzoiaW5zZXJ0TmV3bGlu
ZSIsMjc6ImNhbmNlbCJ9LHM9bi5NaXhpbi5jcmVhdGUoaS5kZWZhdWx0LHt2YWx1ZToiIixhdHRy
aWJ1dGVCaW5kaW5nczpbImF1dG9jYXBpdGFsaXplIiwiYXV0b2NvcnJlY3QiLCJhdXRvZm9jdXMi
LCJkaXNhYmxlZCIsImZvcm0iLCJtYXhsZW5ndGgiLCJwbGFjZWhvbGRlciIsInJlYWRvbmx5Iiwi
cmVxdWlyZWQiLCJzZWxlY3Rpb25EaXJlY3Rpb24iLCJzcGVsbGNoZWNrIiwidGFiaW5kZXgiLCJ0
aXRsZSJdLHBsYWNlaG9sZGVyOm51bGwsZGlzYWJsZWQ6ITEsbWF4bGVuZ3RoOm51bGwsaW5pdDpm
dW5jdGlvbigpe3RoaXMuX3N1cGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzLm9uKCJwYXN0
ZSIsdGhpcyx0aGlzLl9lbGVtZW50VmFsdWVEaWRDaGFuZ2UpLHRoaXMub24oImN1dCIsdGhpcyx0
aGlzLl9lbGVtZW50VmFsdWVEaWRDaGFuZ2UpLHRoaXMub24oImlucHV0Iix0aGlzLHRoaXMuX2Vs
ZW1lbnRWYWx1ZURpZENoYW5nZSl9LGFjdGlvbjpudWxsLG9uRXZlbnQ6ImVudGVyIixidWJibGVz
OiExLGludGVycHJldEtleUV2ZW50czpmdW5jdGlvbihlKXt2YXIgdD1hLHI9dFtlLmtleUNvZGVd
O2lmKHRoaXMuX2VsZW1lbnRWYWx1ZURpZENoYW5nZSgpLHIpcmV0dXJuIHRoaXNbcl0oZSl9LF9l
bGVtZW50VmFsdWVEaWRDaGFuZ2U6ZnVuY3Rpb24oKXtyLnNldCh0aGlzLCJ2YWx1ZSIsdGhpcy5y
ZWFkRE9NQXR0cigidmFsdWUiKSl9LGNoYW5nZTpmdW5jdGlvbihlKXt0aGlzLl9lbGVtZW50VmFs
dWVEaWRDaGFuZ2UoZSl9LGluc2VydE5ld2xpbmU6ZnVuY3Rpb24oZSl7bygiZW50ZXIiLHRoaXMs
ZSksbygiaW5zZXJ0LW5ld2xpbmUiLHRoaXMsZSl9LGNhbmNlbDpmdW5jdGlvbihlKXtvKCJlc2Nh
cGUtcHJlc3MiLHRoaXMsZSl9LGZvY3VzSW46ZnVuY3Rpb24oZSl7bygiZm9jdXMtaW4iLHRoaXMs
ZSl9LGZvY3VzT3V0OmZ1bmN0aW9uKGUpe3RoaXMuX2VsZW1lbnRWYWx1ZURpZENoYW5nZShlKSxv
KCJmb2N1cy1vdXQiLHRoaXMsZSl9LGtleVByZXNzOmZ1bmN0aW9uKGUpe28oImtleS1wcmVzcyIs
dGhpcyxlKX0sa2V5VXA6ZnVuY3Rpb24oZSl7dGhpcy5pbnRlcnByZXRLZXlFdmVudHMoZSksdGhp
cy5zZW5kQWN0aW9uKCJrZXktdXAiLHQuZ2V0KHRoaXMsInZhbHVlIiksZSl9LGtleURvd246ZnVu
Y3Rpb24oZSl7dGhpcy5zZW5kQWN0aW9uKCJrZXktZG93biIsdC5nZXQodGhpcywidmFsdWUiKSxl
KX19KTtlLmRlZmF1bHQ9c30pLGUoImVtYmVyLXZpZXdzL21peGlucy92aWV3X2NoaWxkX3ZpZXdz
X3N1cHBvcnQiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL2RlYnVnIiwiZW1iZXItbWV0YWwvbWl4
aW4iLCJlbWJlci1tZXRhbC9wcm9wZXJ0eV9nZXQiLCJlbWJlci1tZXRhbC9wcm9wZXJ0eV9zZXQi
LCJlbWJlci1tZXRhbC9zZXRfcHJvcGVydGllcyIsImVtYmVyLXJ1bnRpbWUvc3lzdGVtL25hdGl2
ZV9hcnJheSIsImNvbnRhaW5lci9vd25lciJdLGZ1bmN0aW9uKGUsdCxyLG4saSxvLGEscyl7InVz
ZSBzdHJpY3QiO3ZhciB1PVtdO2UuZGVmYXVsdD1yLk1peGluLmNyZWF0ZSh7Y2hpbGRWaWV3czp1
LGluaXQ6ZnVuY3Rpb24oKXt0aGlzLl9zdXBlci5hcHBseSh0aGlzLGFyZ3VtZW50cyksdGhpcy5j
aGlsZFZpZXdzPWEuQSh0aGlzLmNoaWxkVmlld3Muc2xpY2UoKSksdGhpcy5vd25lclZpZXc9dGhp
cy5vd25lclZpZXd8fHRoaXN9LGFwcGVuZENoaWxkOmZ1bmN0aW9uKGUpe3RoaXMubGlua0NoaWxk
KGUpLHRoaXMuY2hpbGRWaWV3cy5wdXNoKGUpfSxkZXN0cm95Q2hpbGQ6ZnVuY3Rpb24oZSl7ZS5k
ZXN0cm95KCl9LHJlbW92ZUNoaWxkOmZ1bmN0aW9uKGUpe2lmKCF0aGlzLmlzRGVzdHJveWluZyl7
dGhpcy51bmxpbmtDaGlsZChlKTt2YXIgdD1uLmdldCh0aGlzLCJjaGlsZFZpZXdzIikscj10Lmlu
ZGV4T2YoZSk7cmV0dXJuIHIhPT0tMSYmdC5zcGxpY2UociwxKSx0aGlzfX0sY3JlYXRlQ2hpbGRW
aWV3OmZ1bmN0aW9uKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg8PTF8fHZvaWQgMD09PWFyZ3Vt
ZW50c1sxXT97fTphcmd1bWVudHNbMV07aWYoIWUpdGhyb3cgbmV3IFR5cGVFcnJvcigiY3JlYXRl
Q2hpbGRWaWV3cyBmaXJzdCBhcmd1bWVudCBtdXN0IGV4aXN0Iik7dmFyIHI9cy5nZXRPd25lcih0
aGlzKTtpZihlLmlzVmlldyYmZS5wYXJlbnRWaWV3PT09dGhpcyYmcy5nZXRPd25lcihlKT09PXIp
cmV0dXJuIGU7dmFyIG47aWYodC5wYXJlbnRWaWV3PXRoaXMsdC5yZW5kZXJlcj10aGlzLnJlbmRl
cmVyLHQuX3ZpZXdSZWdpc3RyeT10aGlzLl92aWV3UmVnaXN0cnksZS5pc1ZpZXdGYWN0b3J5KXMu
c2V0T3duZXIodCxyKSxuPWUuY3JlYXRlKHQpLG4udmlld05hbWUmJmkuc2V0KHRoaXMsbi52aWV3
TmFtZSxuKTtlbHNlIGlmKCJzdHJpbmciPT10eXBlb2YgZSl7dmFyIGE9InZpZXc6IitlLHU9ci5f
bG9va3VwRmFjdG9yeShhKTtuPXUuY3JlYXRlKHQpfWVsc2Ugbj1lLHMuc2V0T3duZXIodCxyKSxv
LmRlZmF1bHQobix0KTtyZXR1cm4gdGhpcy5saW5rQ2hpbGQobiksbn0sbGlua0NoaWxkOmZ1bmN0
aW9uKGUpe2Vbcy5PV05FUl18fHMuc2V0T3duZXIoZSxzLmdldE93bmVyKHRoaXMpKSxlLnBhcmVu
dFZpZXc9dGhpcyxlLm93bmVyVmlldz10aGlzLm93bmVyVmlld30sdW5saW5rQ2hpbGQ6ZnVuY3Rp
b24oZSl7ZS5wYXJlbnRWaWV3PW51bGx9fSl9KSxlKCJlbWJlci12aWV3cy9taXhpbnMvdmlld19j
b250ZXh0X3N1cHBvcnQiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL21peGluIiwiZW1iZXItbWV0
YWwvY29tcHV0ZWQiLCJlbWJlci1tZXRhbC9wcm9wZXJ0eV9nZXQiLCJlbWJlci1tZXRhbC9wcm9w
ZXJ0eV9zZXQiLCJlbWJlci12aWV3cy9taXhpbnMvbGVnYWN5X3ZpZXdfc3VwcG9ydCIsImVtYmVy
LW1ldGFsL2V2ZW50cyJdLGZ1bmN0aW9uKGUsdCxyLG4saSxvLGEpeyJ1c2Ugc3RyaWN0Ijt2YXIg
cz10Lk1peGluLmNyZWF0ZShvLmRlZmF1bHQse2NvbnRleHQ6ci5jb21wdXRlZCh7Z2V0OmZ1bmN0
aW9uKCl7cmV0dXJuIG4uZ2V0KHRoaXMsIl9jb250ZXh0Iil9LHNldDpmdW5jdGlvbihlLHQpe3Jl
dHVybiBpLnNldCh0aGlzLCJfY29udGV4dCIsdCksdH19KSxfY29udGV4dDpyLmNvbXB1dGVkKHtn
ZXQ6ZnVuY3Rpb24oKXt2YXIgZSx0O3JldHVybih0PW4uZ2V0KHRoaXMsImNvbnRyb2xsZXIiKSk/
dDooZT10aGlzLnBhcmVudFZpZXcsZT9uLmdldChlLCJfY29udGV4dCIpOm51bGwpfSxzZXQ6ZnVu
Y3Rpb24oZSx0KXtyZXR1cm4gdH19KSxfY29udHJvbGxlcjpudWxsLGNvbnRyb2xsZXI6ci5jb21w
dXRlZCh7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NvbnRyb2xsZXI/dGhpcy5fY29udHJv
bGxlcjp0aGlzLnBhcmVudFZpZXc/bi5nZXQodGhpcy5wYXJlbnRWaWV3LCJjb250cm9sbGVyIik6
bnVsbH0sc2V0OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX2NvbnRyb2xsZXI9dCx0fX0pLF9s
ZWdhY3lDb250cm9sbGVyRGlkQ2hhbmdlOnQub2JzZXJ2ZXIoImNvbnRyb2xsZXIiLGZ1bmN0aW9u
KCl7dGhpcy5jaGlsZFZpZXdzLmZvckVhY2goZnVuY3Rpb24oZSl7cmV0dXJuIGUubm90aWZ5UHJv
cGVydHlDaGFuZ2UoImNvbnRyb2xsZXIiKX0pfSksX25vdGlmeUNvbnRyb2xsZXJDaGFuZ2U6YS5v
bigicGFyZW50Vmlld0RpZENoYW5nZSIsZnVuY3Rpb24oKXt0aGlzLm5vdGlmeVByb3BlcnR5Q2hh
bmdlKCJjb250cm9sbGVyIil9KX0pO2UuZGVmYXVsdD1zfSksZSgiZW1iZXItdmlld3MvbWl4aW5z
L3ZpZXdfc3RhdGVfc3VwcG9ydCIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvZGVidWciLCJlbWJl
ci1tZXRhbC9taXhpbiJdLGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49ci5NaXhp
bi5jcmVhdGUoe3RyYW5zaXRpb25UbzpmdW5jdGlvbihlKXt0aGlzLl90cmFuc2l0aW9uVG8oZSl9
LF90cmFuc2l0aW9uVG86ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fY3VycmVudFN0YXRlLHI9dGhp
cy5fY3VycmVudFN0YXRlPXRoaXMuX3N0YXRlc1tlXTt0aGlzLl9zdGF0ZT1lLHQmJnQuZXhpdCYm
dC5leGl0KHRoaXMpLHIuZW50ZXImJnIuZW50ZXIodGhpcyl9fSk7ZS5kZWZhdWx0PW59KSxlKCJl
bWJlci12aWV3cy9taXhpbnMvdmlld19zdXBwb3J0IixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9k
ZWJ1ZyIsImVtYmVyLW1ldGFsL2Vycm9yIiwiZW1iZXItbWV0YWwvcHJvcGVydHlfZ2V0IiwiZW1i
ZXItbWV0YWwvcnVuX2xvb3AiLCJlbWJlci1tZXRhbC9vYnNlcnZlciIsImVtYmVyLW1ldGFsL3V0
aWxzIiwiZW1iZXItbWV0YWwvY29tcHV0ZWQiLCJlbWJlci1tZXRhbC9taXhpbiIsImVtYmVyLXJ1
bnRpbWUvc3lzdGVtL2NvcmVfb2JqZWN0IiwiZW1iZXItbWV0YWwvc3ltYm9sIiwiY29udGFpbmVy
L293bmVyIiwiZW1iZXItdmlld3Mvc3lzdGVtL2pxdWVyeSJdLGZ1bmN0aW9uKGUsdCxyLG4saSxv
LGEscyx1LGwsYyxmLGQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBwKCl7cmV0dXJuIHRoaXN9dmFy
IGgsbT1jLmRlZmF1bHQoIklOSVRfV0FTX0NBTExFRCIpO2UuZGVmYXVsdD11Lk1peGluLmNyZWF0
ZSgoaD17Y29uY2F0ZW5hdGVkUHJvcGVydGllczpbImF0dHJpYnV0ZUJpbmRpbmdzIl0saXNWaWV3
OiEwLHRlbXBsYXRlTmFtZTpudWxsLGxheW91dE5hbWU6bnVsbCx0ZW1wbGF0ZTpzLmNvbXB1dGVk
KHtnZXQ6ZnVuY3Rpb24oKXt2YXIgZT1uLmdldCh0aGlzLCJ0ZW1wbGF0ZU5hbWUiKSx0PXRoaXMu
dGVtcGxhdGVGb3JOYW1lKGUsInRlbXBsYXRlIik7cmV0dXJuIHR8fG4uZ2V0KHRoaXMsImRlZmF1
bHRUZW1wbGF0ZSIpfSxzZXQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdm9pZCAwIT09dD90Om4uZ2V0
KHRoaXMsZSl9fSksbGF5b3V0OnMuY29tcHV0ZWQoe2dldDpmdW5jdGlvbihlKXt2YXIgdD1uLmdl
dCh0aGlzLCJsYXlvdXROYW1lIikscj10aGlzLnRlbXBsYXRlRm9yTmFtZSh0LCJsYXlvdXQiKTty
ZXR1cm4gcnx8bi5nZXQodGhpcywiZGVmYXVsdExheW91dCIpfSxzZXQ6ZnVuY3Rpb24oZSx0KXty
ZXR1cm4gdH19KSx0ZW1wbGF0ZUZvck5hbWU6ZnVuY3Rpb24oZSx0KXtpZihlKXt2YXIgbj1mLmdl
dE93bmVyKHRoaXMpO2lmKCFuKXRocm93IG5ldyByLmRlZmF1bHQoIkNvbnRhaW5lciB3YXMgbm90
IGZvdW5kIHdoZW4gbG9va2luZyB1cCBhIHZpZXdzIHRlbXBsYXRlLiBUaGlzIGlzIG1vc3QgbGlr
ZWx5IGR1ZSB0byBtYW51YWxseSBpbnN0YW50aWF0aW5nIGFuIEVtYmVyLlZpZXcuIFNlZTogaHR0
cDovL2dpdC5pby9FS1BwbkEiKTtyZXR1cm4gbi5sb29rdXAoInRlbXBsYXRlOiIrZSl9fSxuZWFy
ZXN0T2ZUeXBlOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1uLmdldCh0aGlzLCJwYXJlbnRWaWV3Iiks
cj1lIGluc3RhbmNlb2YgdS5NaXhpbj9mdW5jdGlvbih0KXtyZXR1cm4gZS5kZXRlY3QodCl9OmZ1
bmN0aW9uKHQpe3JldHVybiBlLmRldGVjdCh0LmNvbnN0cnVjdG9yKX07dDspe2lmKHIodCkpcmV0
dXJuIHQ7dD1uLmdldCh0LCJwYXJlbnRWaWV3Iil9fSxuZWFyZXN0V2l0aFByb3BlcnR5OmZ1bmN0
aW9uKGUpe2Zvcih2YXIgdD1uLmdldCh0aGlzLCJwYXJlbnRWaWV3Iik7dDspe2lmKGUgaW4gdCly
ZXR1cm4gdDt0PW4uZ2V0KHQsInBhcmVudFZpZXciKX19LHJlcmVuZGVyOmZ1bmN0aW9uKCl7cmV0
dXJuIHRoaXMuX2N1cnJlbnRTdGF0ZS5yZXJlbmRlcih0aGlzKX0sZWxlbWVudDpudWxsLCQ6ZnVu
Y3Rpb24oZSl7cmV0dXJuIHRoaXMuX2N1cnJlbnRTdGF0ZS4kKHRoaXMsZSl9LGZvckVhY2hDaGls
ZFZpZXc6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5jaGlsZFZpZXdzO2lmKCF0KXJldHVybiB0aGlz
O3ZhciByLG4saT10Lmxlbmd0aDtmb3Iobj0wO248aTtuKyspcj10W25dLGUocik7cmV0dXJuIHRo
aXN9LGFwcGVuZFRvOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX2Vudmlyb25tZW50P3RoaXMuX2Vu
dmlyb25tZW50Lm9wdGlvbnMualF1ZXJ5OmQuZGVmYXVsdDtpZih0KXt2YXIgcj10KGUpO3RoaXMu
cmVuZGVyZXIuYXBwZW5kVG8odGhpcyxyWzBdKX1lbHNle3ZhciByPWU7dGhpcy5yZW5kZXJlci5h
cHBlbmRUbyh0aGlzLHIpfXJldHVybiB0aGlzfSxyZW5kZXJUb0VsZW1lbnQ6ZnVuY3Rpb24oZSl7
ZT1lfHwiYm9keSI7dmFyIHQ9dGhpcy5yZW5kZXJlci5fZG9tLmNyZWF0ZUVsZW1lbnQoZSk7cmV0
dXJuIHRoaXMucmVuZGVyZXIuYXBwZW5kVG8odGhpcyx0KSx0fSxyZXBsYWNlSW46ZnVuY3Rpb24o
ZSl7dmFyIHQ9ZC5kZWZhdWx0KGUpO3JldHVybiB0aGlzLnJlbmRlcmVyLnJlcGxhY2VJbih0aGlz
LHRbMF0pLAordGhpc30sYXBwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXBwZW5kVG8oZG9j
dW1lbnQuYm9keSl9LHJlbW92ZTpmdW5jdGlvbigpe3RoaXMucmVtb3ZlZEZyb21ET018fHRoaXMu
ZGVzdHJveUVsZW1lbnQoKSx0aGlzLl93aWxsSW5zZXJ0PSExfSxlbGVtZW50SWQ6bnVsbCxmaW5k
RWxlbWVudEluUGFyZW50RWxlbWVudDpmdW5jdGlvbihlKXt2YXIgdD0iIyIrdGhpcy5lbGVtZW50
SWQ7cmV0dXJuIGQuZGVmYXVsdCh0KVswXXx8ZC5kZWZhdWx0KHQsZSlbMF19LGNyZWF0ZUVsZW1l
bnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbGVtZW50P3RoaXM6KHRoaXMucmVuZGVyZXIuY3Jl
YXRlRWxlbWVudCh0aGlzKSx0aGlzKX0sd2lsbEluc2VydEVsZW1lbnQ6cCxkaWRJbnNlcnRFbGVt
ZW50OnAsd2lsbENsZWFyUmVuZGVyOnAsZGVzdHJveUVsZW1lbnQ6ZnVuY3Rpb24oKXtyZXR1cm4g
dGhpcy5fY3VycmVudFN0YXRlLmRlc3Ryb3lFbGVtZW50KHRoaXMpfSx3aWxsRGVzdHJveUVsZW1l
bnQ6cCxwYXJlbnRWaWV3RGlkQ2hhbmdlOnAsdGFnTmFtZTpudWxsLHJlYWRET01BdHRyOmZ1bmN0
aW9uKGUpe3ZhciB0PXRoaXMuX3JlbmRlck5vZGUuY2hpbGROb2Rlcy5maWx0ZXIoZnVuY3Rpb24o
dCl7cmV0dXJuIHQuYXR0ck5hbWU9PT1lfSlbMF07cmV0dXJuIHQ/dC5nZXRDb250ZW50KCk6bnVs
bH0saW5pdDpmdW5jdGlvbigpe3RoaXMuX3N1cGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0aGlz
LmVsZW1lbnRJZHx8KHRoaXMuZWxlbWVudElkPWEuZ3VpZEZvcih0aGlzKSksdGhpcy5zY2hlZHVs
ZWRSZXZhbGlkYXRpb249ITEsdGhpc1ttXT0hMCwiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5kaWRJ
bml0QXR0cnN9fSxoW2wuUE9TVF9JTklUXT1mdW5jdGlvbigpe3RoaXMuX3N1cGVyLmFwcGx5KHRo
aXMsYXJndW1lbnRzKSx0aGlzLnJlbmRlcmVyLmNvbXBvbmVudEluaXRBdHRycyh0aGlzLHRoaXMu
YXR0cnN8fHt9KX0saC5fX2RlZmluZU5vbkVudW1lcmFibGU9ZnVuY3Rpb24oZSl7dGhpc1tlLm5h
bWVdPWUuZGVzY3JpcHRvci52YWx1ZX0saC5yZXZhbGlkYXRlPWZ1bmN0aW9uKCl7dGhpcy5yZW5k
ZXJlci5yZXZhbGlkYXRlVG9wTGV2ZWxWaWV3KHRoaXMpLHRoaXMuc2NoZWR1bGVkUmV2YWxpZGF0
aW9uPSExfSxoLnNjaGVkdWxlUmV2YWxpZGF0ZT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGUmJiF0
aGlzLl9kaXNwYXRjaGluZyYmdGhpcy5lbnYucmVuZGVyZWROb2Rlcy5oYXMoZSk/dm9pZCBpLmRl
ZmF1bHQuc2NoZWR1bGVPbmNlKCJyZW5kZXIiLHRoaXMsdGhpcy5yZXZhbGlkYXRlKTp2b2lkKHRo
aXMuc2NoZWR1bGVkUmV2YWxpZGF0aW9uJiYhdGhpcy5fZGlzcGF0Y2hpbmd8fCh0aGlzLnNjaGVk
dWxlZFJldmFsaWRhdGlvbj0hMCxpLmRlZmF1bHQuc2NoZWR1bGVPbmNlKCJyZW5kZXIiLHRoaXMs
dGhpcy5yZXZhbGlkYXRlKSkpfSxoLnRlbXBsYXRlUmVuZGVyZXI9bnVsbCxoLnJlbW92ZUZyb21Q
YXJlbnQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnBhcmVudFZpZXc7cmV0dXJuIHRoaXMucmVtb3Zl
KCksZSYmZS5yZW1vdmVDaGlsZCh0aGlzKSx0aGlzfSxoLmRlc3Ryb3k9ZnVuY3Rpb24oKXt2YXIg
ZT10aGlzLnBhcmVudFZpZXcsdD10aGlzLnZpZXdOYW1lO2lmKHRoaXMuX3N1cGVyLmFwcGx5KHRo
aXMsYXJndW1lbnRzKSlyZXR1cm4gdCYmZSYmZS5zZXQodCxudWxsKSx0aGlzLmxhc3RSZXN1bHQm
JnRoaXMubGFzdFJlc3VsdC5kZXN0cm95KCksdGhpc30saC5oYW5kbGVFdmVudD1mdW5jdGlvbihl
LHQpe3JldHVybiB0aGlzLl9jdXJyZW50U3RhdGUuaGFuZGxlRXZlbnQodGhpcyxlLHQpfSxoLl9y
ZWdpc3Rlcj1mdW5jdGlvbigpe3RoaXMuX3ZpZXdSZWdpc3RyeVt0aGlzLmVsZW1lbnRJZF09dGhp
c30saC5fdW5yZWdpc3Rlcj1mdW5jdGlvbigpe2RlbGV0ZSB0aGlzLl92aWV3UmVnaXN0cnlbdGhp
cy5lbGVtZW50SWRdfSxoLnJlZ2lzdGVyT2JzZXJ2ZXI9ZnVuY3Rpb24oZSx0LHIsbil7aWYobnx8
ImZ1bmN0aW9uIiE9dHlwZW9mIHJ8fChuPXIscj1udWxsKSxlJiYib2JqZWN0Ij09dHlwZW9mIGUp
e3ZhciBpPXRoaXMuX3dyYXBBc1NjaGVkdWxlZChuKTtvLmFkZE9ic2VydmVyKGUsdCxyLGkpLHRo
aXMub25lKCJ3aWxsQ2xlYXJSZW5kZXIiLGZ1bmN0aW9uKCl7by5yZW1vdmVPYnNlcnZlcihlLHQs
cixpKX0pfX0saC5fd3JhcEFzU2NoZWR1bGVkPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMscj1mdW5j
dGlvbigpe3QuX2N1cnJlbnRTdGF0ZS5pbnZva2VPYnNlcnZlcih0aGlzLGUpfSxuPWZ1bmN0aW9u
KCl7aS5kZWZhdWx0LnNjaGVkdWxlT25jZSgicmVuZGVyIix0aGlzLHIpfTtyZXR1cm4gbn0saCkp
fSksZSgiZW1iZXItdmlld3MvbWl4aW5zL3ZpZXdfdGFyZ2V0X2FjdGlvbl9zdXBwb3J0IixbImV4
cG9ydHMiLCJlbWJlci1tZXRhbC9taXhpbiIsImVtYmVyLXJ1bnRpbWUvbWl4aW5zL3RhcmdldF9h
Y3Rpb25fc3VwcG9ydCIsImVtYmVyLW1ldGFsL2FsaWFzIl0sZnVuY3Rpb24oZSx0LHIsbil7InVz
ZSBzdHJpY3QiO2UuZGVmYXVsdD10Lk1peGluLmNyZWF0ZShyLmRlZmF1bHQse3RhcmdldDpuLmRl
ZmF1bHQoImNvbnRyb2xsZXIiKSxhY3Rpb25Db250ZXh0Om4uZGVmYXVsdCgiY29udGV4dCIpfSl9
KSxlKCJlbWJlci12aWV3cy9taXhpbnMvdmlzaWJpbGl0eV9zdXBwb3J0IixbImV4cG9ydHMiLCJl
bWJlci1tZXRhbC9taXhpbiIsImVtYmVyLW1ldGFsL3Byb3BlcnR5X2dldCIsImVtYmVyLW1ldGFs
L3J1bl9sb29wIl0sZnVuY3Rpb24oZSx0LHIsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoKXty
ZXR1cm4gdGhpc312YXIgbz10Lk1peGluLmNyZWF0ZSh7aXNWaXNpYmxlOiEwLGJlY2FtZVZpc2li
bGU6aSxiZWNhbWVIaWRkZW46aSxfaXNWaXNpYmxlRGlkQ2hhbmdlOnQub2JzZXJ2ZXIoImlzVmlz
aWJsZSIsZnVuY3Rpb24oKXt0aGlzLl9pc1Zpc2libGUhPT1yLmdldCh0aGlzLCJpc1Zpc2libGUi
KSYmbi5kZWZhdWx0LnNjaGVkdWxlT25jZSgicmVuZGVyIix0aGlzLHRoaXMuX3RvZ2dsZVZpc2li
aWxpdHkpfSksX3RvZ2dsZVZpc2liaWxpdHk6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLiQoKSx0PXIu
Z2V0KHRoaXMsImlzVmlzaWJsZSIpO3RoaXMuX2lzVmlzaWJsZSE9PXQmJih0aGlzLl9pc1Zpc2li
bGU9dCxlJiYoZS50b2dnbGUodCksdGhpcy5faXNBbmNlc3RvckhpZGRlbigpfHwodD90aGlzLl9u
b3RpZnlCZWNhbWVWaXNpYmxlKCk6dGhpcy5fbm90aWZ5QmVjYW1lSGlkZGVuKCkpKSl9LF9ub3Rp
ZnlCZWNhbWVWaXNpYmxlOmZ1bmN0aW9uKCl7dGhpcy50cmlnZ2VyKCJiZWNhbWVWaXNpYmxlIiks
dGhpcy5mb3JFYWNoQ2hpbGRWaWV3KGZ1bmN0aW9uKGUpe3ZhciB0PXIuZ2V0KGUsImlzVmlzaWJs
ZSIpOyh0fHxudWxsPT09dCkmJmUuX25vdGlmeUJlY2FtZVZpc2libGUoKX0pfSxfbm90aWZ5QmVj
YW1lSGlkZGVuOmZ1bmN0aW9uKCl7dGhpcy50cmlnZ2VyKCJiZWNhbWVIaWRkZW4iKSx0aGlzLmZv
ckVhY2hDaGlsZFZpZXcoZnVuY3Rpb24oZSl7dmFyIHQ9ci5nZXQoZSwiaXNWaXNpYmxlIik7KHR8
fG51bGw9PT10KSYmZS5fbm90aWZ5QmVjYW1lSGlkZGVuKCl9KX0sX2lzQW5jZXN0b3JIaWRkZW46
ZnVuY3Rpb24oKXtmb3IodmFyIGU9ci5nZXQodGhpcywicGFyZW50VmlldyIpO2U7KXtpZihyLmdl
dChlLCJpc1Zpc2libGUiKT09PSExKXJldHVybiEwO2U9ci5nZXQoZSwicGFyZW50VmlldyIpfXJl
dHVybiExfX0pO2UuZGVmYXVsdD1vfSksZSgiZW1iZXItdmlld3Mvc3RyZWFtcy9jbGFzc19uYW1l
X2JpbmRpbmciLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL2RlYnVnIiwiZW1iZXItbWV0YWwvcHJv
cGVydHlfZ2V0IiwiZW1iZXItbWV0YWwvdXRpbHMiLCJlbWJlci1tZXRhbC9zdHJlYW1zL3V0aWxz
IiwiZW1iZXItcnVudGltZS9zeXN0ZW0vc3RyaW5nIl0sZnVuY3Rpb24oZSx0LHIsbixpLG8peyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiBhKGUpe3ZhciB0LHIsbj1lLnNwbGl0KCI6IiksaT1uWzBdLG89
IiI7cmV0dXJuIG4ubGVuZ3RoPjEmJih0PW5bMV0sMz09PW4ubGVuZ3RoJiYocj1uWzJdKSxvPSI6
Iit0LHImJihvKz0iOiIrcikpLHtwYXRoOmksY2xhc3NOYW1lczpvLGNsYXNzTmFtZToiIj09PXQ/
dm9pZCAwOnQsZmFsc3lDbGFzc05hbWU6cn19ZnVuY3Rpb24gcyhlLHQsaSxhKXtpZihuLmlzQXJy
YXkodCkmJih0PTAhPT1yLmdldCh0LCJsZW5ndGgiKSksaXx8YSlyZXR1cm4gaSYmdD9pOmEmJiF0
P2E6bnVsbDtpZih0PT09ITApe3ZhciBzPWUuc3BsaXQoIi4iKTtyZXR1cm4gby5kYXNoZXJpemUo
c1tzLmxlbmd0aC0xXSl9cmV0dXJuIHQhPT0hMSYmbnVsbCE9dD90Om51bGx9ZnVuY3Rpb24gdShl
LHQscil7cj1yfHwiIjt2YXIgbj1hKHQpO2lmKCIiPT09bi5wYXRoKXJldHVybiBzKG4ucGF0aCwh
MCxuLmNsYXNzTmFtZSxuLmZhbHN5Q2xhc3NOYW1lKTt2YXIgbz1lLmdldFN0cmVhbShyK24ucGF0
aCk7cmV0dXJuIGkuY2hhaW4obyxmdW5jdGlvbigpe3JldHVybiBzKG4ucGF0aCxpLnJlYWQobyks
bi5jbGFzc05hbWUsbi5mYWxzeUNsYXNzTmFtZSl9KX1lLnBhcnNlUHJvcGVydHlQYXRoPWEsZS5j
bGFzc1N0cmluZ0ZvclZhbHVlPXMsZS5zdHJlYW1pZnlDbGFzc05hbWVCaW5kaW5nPXV9KSxlKCJl
bWJlci12aWV3cy9zdHJlYW1zL3Nob3VsZF9kaXNwbGF5IixbImV4cG9ydHMiLCJlbWJlci1tZXRh
bC9kZWJ1ZyIsImVtYmVyLW1ldGFsL3Byb3BlcnR5X2dldCIsImVtYmVyLXJ1bnRpbWUvdXRpbHMi
LCJlbWJlci1tZXRhbC9zdHJlYW1zL3N0cmVhbSIsImVtYmVyLW1ldGFsL3N0cmVhbXMvdXRpbHMi
XSxmdW5jdGlvbihlLHQscixuLGksbyl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGEoZSl7aWYoby5p
c1N0cmVhbShlKSlyZXR1cm4gbmV3IHMoZSk7dmFyIHQ9dHlwZW9mIGU7aWYoImJvb2xlYW4iPT09
dClyZXR1cm4gZTtpZih0JiYib2JqZWN0Ij09PXQmJm51bGwhPT1lKXt2YXIgaT1yLmdldChlLCJp
c1RydXRoeSIpO2lmKCJib29sZWFuIj09dHlwZW9mIGkpcmV0dXJuIGl9cmV0dXJuIG4uaXNBcnJh
eShlKT8wIT09ci5nZXQoZSwibGVuZ3RoIik6ISFlfWUuZGVmYXVsdD1hO3ZhciBzPWkuZGVmYXVs
dC5leHRlbmQoe2luaXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5nZXQoImlzVHJ1dGh5Iik7dGhpcy5p
bml0KCksdGhpcy5wcmVkaWNhdGU9ZSx0aGlzLmlzVHJ1dGh5PXQsdGhpcy5sZW5ndGhEZXA9bnVs
bCx0aGlzLmFkZERlcGVuZGVuY3koZSksdGhpcy5hZGREZXBlbmRlbmN5KHQpfSxjb21wdXRlOmZ1
bmN0aW9uKCl7dmFyIGU9by5yZWFkKHRoaXMuaXNUcnV0aHkpO3JldHVybiJib29sZWFuIj09dHlw
ZW9mIGU/ZTp0aGlzLmxlbmd0aERlcD8wIT09dGhpcy5sZW5ndGhEZXAuZ2V0VmFsdWUoKTohIW8u
cmVhZCh0aGlzLnByZWRpY2F0ZSl9LHJldmFsaWRhdGU6ZnVuY3Rpb24oKXtuLmlzQXJyYXkoby5y
ZWFkKHRoaXMucHJlZGljYXRlKSk/dGhpcy5sZW5ndGhEZXB8fCh0aGlzLmxlbmd0aERlcD10aGlz
LmFkZE11dGFibGVEZXBlbmRlbmN5KHRoaXMucHJlZGljYXRlLmdldCgibGVuZ3RoIikpKTp0aGlz
Lmxlbmd0aERlcCYmKHRoaXMubGVuZ3RoRGVwLmRlc3Ryb3koKSx0aGlzLmxlbmd0aERlcD1udWxs
KX19KX0pLGUoImVtYmVyLXZpZXdzL3N0cmVhbXMvdXRpbHMiLFsiZXhwb3J0cyIsImVtYmVyLW1l
dGFsL2RlYnVnIiwiZW1iZXItbWV0YWwvcHJvcGVydHlfZ2V0IiwiZW1iZXItbWV0YWwvc3RyZWFt
cy91dGlscyIsImVtYmVyLXJ1bnRpbWUvbWl4aW5zL2NvbnRyb2xsZXIiXSxmdW5jdGlvbihlLHQs
cixuLGkpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBvKGUsdCl7dmFyIHIsaT1uLnJlYWQoZSk7cmV0
dXJuIHI9InN0cmluZyI9PXR5cGVvZiBpP3QuX2xvb2t1cEZhY3RvcnkoInZpZXc6IitpKTppfWZ1
bmN0aW9uIGEoZSx0KXt2YXIgcj1uLnJlYWQoZSksaT10Lmxvb2t1cCgiY29tcG9uZW50LWxvb2t1
cDptYWluIik7cmV0dXJuIGkubG9va3VwRmFjdG9yeShyLHQpfWZ1bmN0aW9uIHMoZSl7aWYobi5p
c1N0cmVhbShlKSl7dmFyIHQ9ZS52YWx1ZSgpO2lmKCJjb250cm9sbGVyIiE9PWUubGFiZWwpZm9y
KDtpLmRlZmF1bHQuZGV0ZWN0KHQpOyl0PXIuZ2V0KHQsIm1vZGVsIik7cmV0dXJuIHR9cmV0dXJu
IGV9ZS5yZWFkVmlld0ZhY3Rvcnk9byxlLnJlYWRDb21wb25lbnRGYWN0b3J5PWEsZS5yZWFkVW53
cmFwcGVkTW9kZWw9c30pLGUoImVtYmVyLXZpZXdzL3N5c3RlbS9hY3Rpb25fbWFuYWdlciIsWyJl
eHBvcnRzIl0sZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHQoKXt9dC5yZWdpc3Rl
cmVkQWN0aW9ucz17fSxlLmRlZmF1bHQ9dH0pLGUoImVtYmVyLXZpZXdzL3N5c3RlbS9idWlsZC1j
b21wb25lbnQtdGVtcGxhdGUiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL2RlYnVnIiwiZW1iZXIt
bWV0YWwvcHJvcGVydHlfZ2V0IiwiZW1iZXItbWV0YWwvYXNzaWduIiwiaHRtbGJhcnMtcnVudGlt
ZSIsImVtYmVyLWh0bWxiYXJzL2hvb2tzL2dldC12YWx1ZSIsImVtYmVyLW1ldGFsL3N0cmVhbXMv
dXRpbHMiXSxmdW5jdGlvbihlLHQscixuLGksbyxhKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcyhl
LHQscil7dmFyIG4sbyxhPWUuY29tcG9uZW50LHM9ZS50YWdOYW1lLHU9ZS5sYXlvdXQsYz1lLmlz
QW5nbGVCcmFja2V0LGI9ZS5pc0NvbXBvbmVudEVsZW1lbnQsZz1lLm91dGVyQXR0cnM7aWYodm9p
ZCAwPT09YSYmKGE9bnVsbCksdSYmdS5yYXcpe3ZhciBfPWQoci50ZW1wbGF0ZXMsci5zY29wZSxy
LnNlbGYsYSk7bj1wKHUucmF3LF8sci5zZWxmLGEsdCksbz11LnJhdy5tZXRhfWVsc2Ugci50ZW1w
bGF0ZXMmJnIudGVtcGxhdGVzLmRlZmF1bHQmJihuPWYoci50ZW1wbGF0ZXMuZGVmYXVsdCxyLnNj
b3BlLHIuc2VsZixhKSxvPXIudGVtcGxhdGVzLmRlZmF1bHQubWV0YSk7aWYoYSYmIWEuX2lzQW5n
bGVCcmFja2V0fHxiKWlmKHM9c3x8bShhKSwiIiE9PXMpe2ImJih0PWwodCxnKSk7dmFyIHc9dihh
LGMsdCkseD1pLmludGVybmFsLm1hbnVhbEVsZW1lbnQocyx3KTt4Lm1ldGE9byxuPWgoeCxuLGEp
fWVsc2UgeShhKTtyZXR1cm57Y3JlYXRlZEVsZW1lbnQ6ISFzLGJsb2NrOm59fWZ1bmN0aW9uIHUo
ZSx0LHIpe3ZhciBuPXt9O2Zvcih2YXIgbyBpbiB0KXt2YXIgYT10W29dOyJzdHJpbmciPT10eXBl
b2YgYT9uW29dPWE6bltvXT1bInZhbHVlIixhXX12YXIgcz1yLnRlbXBsYXRlcy5kZWZhdWx0LHU9
aS5pbnRlcm5hbC5tYW51YWxFbGVtZW50KGUsbixzLmlzRW1wdHkpO2lmKHMuaXNFbXB0eSlyZXR1
cm4gYyh1LHtzY29wZTpyLnNjb3BlfSk7dmFyIGw9YyhyLnRlbXBsYXRlcy5kZWZhdWx0LHIpO3Jl
dHVybiBjKHUse3lpZWxkVG86bCxzY29wZTpyLnNjb3BlfSl9ZnVuY3Rpb24gbChlLHQpe3ZhciBy
PW4uZGVmYXVsdCh7fSxlLHQpO3JldHVybiBlLmNsYXNzJiZ0LmNsYXNzJiYoci5jbGFzcz1bInN1
YmV4cHIiLCItam9pbi1jbGFzc2VzIixbWyJ2YWx1ZSIsZS5jbGFzc10sWyJ2YWx1ZSIsdC5jbGFz
c11dLFtdXSkscn1mdW5jdGlvbiBjKGUsdCl7cmV0dXJuIGkuaW50ZXJuYWwuYmxvY2tGb3IoaS5y
ZW5kZXIsZSx0KX1mdW5jdGlvbiBmKGUsdCxyLG4pe3JldHVybiBjKGUse3Njb3BlOnQsc2VsZjpy
LG9wdGlvbnM6e3ZpZXc6bn19KX1mdW5jdGlvbiBkKGUsdCxyLG4pe2lmKGUpe3ZhciBpPXt9O2Zv
cih2YXIgbyBpbiBlKWlmKGUuaGFzT3duUHJvcGVydHkobykpe3ZhciBhPWVbb107YSYmKGlbb109
ZihlW29dLHQscixuKSl9cmV0dXJuIGl9fWZ1bmN0aW9uIHAoZSx0LHIsbixpKXtyZXR1cm4gYyhl
LHt5aWVsZFRvOnQsc2VsZjpyfHxuLG9wdGlvbnM6e3ZpZXc6bixhdHRyczppfX0pfWZ1bmN0aW9u
IGgoZSx0LHIpe3JldHVybiBjKGUse3lpZWxkVG86dCxzZWxmOnIsb3B0aW9uczp7dmlldzpyfX0p
fWZ1bmN0aW9uIG0oZSl7dmFyIHQ9ZS50YWdOYW1lO3JldHVybiBudWxsIT09dCYmIm9iamVjdCI9
PXR5cGVvZiB0JiZ0LmlzRGVzY3JpcHRvciYmKHQ9ci5nZXQoZSwidGFnTmFtZSIpKSxudWxsIT09
dCYmdm9pZCAwIT09dHx8KHQ9ZS5fZGVmYXVsdFRhZ05hbWV8fCJkaXYiKSx0fWZ1bmN0aW9uIHYo
ZSx0LG4pe3ZhciBpLGEscz17fSx1PWUuYXR0cmlidXRlQmluZGluZ3MsbD1lLmlzQ29tcG9uZW50
PyIiOiJ2aWV3LiI7aWYobi5pZCYmby5kZWZhdWx0KG4uaWQpPyhzLmlkPW8uZGVmYXVsdChuLmlk
KSxlLmVsZW1lbnRJZD1zLmlkKTpzLmlkPWUuZWxlbWVudElkLHUpZm9yKGk9MCxhPXUubGVuZ3Ro
O2k8YTtpKyspe3ZhciBjLGYsZD11W2ldLHA9ZC5pbmRleE9mKCI6Iik7aWYocCE9PS0xKXt2YXIg
aD1kLnN1YnN0cmluZygwLHApO2M9ZC5zdWJzdHJpbmcocCsxKSxmPVsiZ2V0IiwiIitsK2hdfWVs
c2UgbltkXT8oYz1kLGY9WyJ2YWx1ZSIsbltkXV0pOihjPWQsZj1bImdldCIsIiIrbCtkXSk7c1tj
XT1mfWlmKHQpZm9yKHZhciBtIGluIG4pe3ZhciB2PW5bbV07diYmKCJzdHJpbmciPT10eXBlb2Yg
dnx8di5pc0NvbmNhdCkmJihzW21dPVsidmFsdWUiLHZdKX1uLnRhZ05hbWUmJihlLnRhZ05hbWU9
bi50YWdOYW1lKTt2YXIgZz1iKGUsbixsKTtpZihnJiYocy5jbGFzcz1nKSxyLmdldChlLCJpc1Zp
c2libGUiKT09PSExKXt2YXIgeT1bInN1YmV4cHIiLCItaHRtbC1zYWZlIixbImRpc3BsYXk6IG5v
bmU7Il0sW11dLF89cy5zdHlsZTtfP3Muc3R5bGU9WyJzdWJleHByIiwiY29uY2F0IixbXywiICIs
eV0sW11dOnMuc3R5bGU9eX1yZXR1cm4gc31mdW5jdGlvbiBiKGUsdCxuKXt2YXIgaSxvLHM9W10s
dT1yLmdldChlLCJjbGFzc05hbWVzIiksbD1yLmdldChlLCJjbGFzc05hbWVCaW5kaW5ncyIpO2lm
KHQuY2xhc3MmJihhLmlzU3RyZWFtKHQuY2xhc3MpP3MucHVzaChbInN1YmV4cHIiLCItbm9ybWFs
aXplLWNsYXNzIixbWyJ2YWx1ZSIsdC5jbGFzcy5wYXRoXSxbInZhbHVlIix0LmNsYXNzXV0sW11d
KTpzLnB1c2godC5jbGFzcykpLHQuY2xhc3NCaW5kaW5nJiZnKHQuY2xhc3NCaW5kaW5nLnNwbGl0
KCIgIikscyxuKSx1KWZvcihpPTAsbz11Lmxlbmd0aDtpPG87aSsrKXMucHVzaCh1W2ldKTtpZihs
JiZnKGwscyxuKSxiLmxlbmd0aClyZXR1cm5bInN1YmV4cHIiLCItam9pbi1jbGFzc2VzIixzLFtd
XX1mdW5jdGlvbiBnKGUsdCxyKXt2YXIgbixpO2ZvcihuPTAsaT1lLmxlbmd0aDtuPGk7bisrKXt2
YXIgbz1lW25dLGE9by5zcGxpdCgiOiIpLHM9YVswXSx1PWFbMV0sbD1hWzJdO2lmKCIiIT09cyl7
dmFyIGM9IiIrcitzO3QucHVzaChbInN1YmV4cHIiLCItbm9ybWFsaXplLWNsYXNzIixbWyJ2YWx1
ZSIsc10sWyJnZXQiLGNdXSxbImFjdGl2ZUNsYXNzIix1LCJpbmFjdGl2ZUNsYXNzIixsXV0pfWVs
c2UgdC5wdXNoKHUpfX1mdW5jdGlvbiB5KGUpe31lLmRlZmF1bHQ9cyxlLmJ1aWxkSFRNTFRlbXBs
YXRlPXV9KSxlKCJlbWJlci12aWV3cy9zeXN0ZW0vZXZlbnRfZGlzcGF0Y2hlciIsWyJleHBvcnRz
IiwiZW1iZXItbWV0YWwvZGVidWciLCJlbWJlci1tZXRhbC9wcm9wZXJ0eV9nZXQiLCJlbWJlci1t
ZXRhbC9wcm9wZXJ0eV9zZXQiLCJlbWJlci1tZXRhbC9pc19ub25lIiwiZW1iZXItbWV0YWwvcnVu
X2xvb3AiLCJlbWJlci1ydW50aW1lL3N5c3RlbS9vYmplY3QiLCJlbWJlci12aWV3cy9zeXN0ZW0v
anF1ZXJ5IiwiZW1iZXItdmlld3Mvc3lzdGVtL2FjdGlvbl9tYW5hZ2VyIiwiZW1iZXItdmlld3Mv
dmlld3MvdmlldyIsImVtYmVyLW1ldGFsL2Fzc2lnbiIsImNvbnRhaW5lci9vd25lciIsImVtYmVy
LW1ldGFsL2Vudmlyb25tZW50Il0sZnVuY3Rpb24oZSx0LHIsbixpLG8sYSxzLHUsbCxjLGYsZCl7
InVzZSBzdHJpY3QiO3ZhciBwPSJlbWJlci1hcHBsaWNhdGlvbiI7ZS5kZWZhdWx0PWEuZGVmYXVs
dC5leHRlbmQoe2V2ZW50czp7dG91Y2hzdGFydDoidG91Y2hTdGFydCIsdG91Y2htb3ZlOiJ0b3Vj
aE1vdmUiLHRvdWNoZW5kOiJ0b3VjaEVuZCIsdG91Y2hjYW5jZWw6InRvdWNoQ2FuY2VsIixrZXlk
b3duOiJrZXlEb3duIixrZXl1cDoia2V5VXAiLGtleXByZXNzOiJrZXlQcmVzcyIsbW91c2Vkb3du
OiJtb3VzZURvd24iLG1vdXNldXA6Im1vdXNlVXAiLGNvbnRleHRtZW51OiJjb250ZXh0TWVudSIs
Y2xpY2s6ImNsaWNrIixkYmxjbGljazoiZG91YmxlQ2xpY2siLG1vdXNlbW92ZToibW91c2VNb3Zl
Iixmb2N1c2luOiJmb2N1c0luIixmb2N1c291dDoiZm9jdXNPdXQiLG1vdXNlZW50ZXI6Im1vdXNl
RW50ZXIiLG1vdXNlbGVhdmU6Im1vdXNlTGVhdmUiLHN1Ym1pdDoic3VibWl0IixpbnB1dDoiaW5w
dXQiLGNoYW5nZToiY2hhbmdlIixkcmFnc3RhcnQ6ImRyYWdTdGFydCIsZHJhZzoiZHJhZyIsZHJh
Z2VudGVyOiJkcmFnRW50ZXIiLGRyYWdsZWF2ZToiZHJhZ0xlYXZlIixkcmFnb3ZlcjoiZHJhZ092
ZXIiLGRyb3A6ImRyb3AiLGRyYWdlbmQ6ImRyYWdFbmQifSxyb290RWxlbWVudDoiYm9keSIsY2Fu
RGlzcGF0Y2hUb0V2ZW50TWFuYWdlcjohMCxpbml0OmZ1bmN0aW9uKCl7dGhpcy5fc3VwZXIoKX0s
c2V0dXA6ZnVuY3Rpb24oZSx0KXt2YXIgbyxhPXRoaXMuX2ZpbmFsRXZlbnRzPWMuZGVmYXVsdCh7
fSxyLmdldCh0aGlzLCJldmVudHMiKSxlKTtpLmRlZmF1bHQodCl8fG4uc2V0KHRoaXMsInJvb3RF
bGVtZW50Iix0KSx0PXMuZGVmYXVsdChyLmdldCh0aGlzLCJyb290RWxlbWVudCIpKSx0LmFkZENs
YXNzKHApO2ZvcihvIGluIGEpYS5oYXNPd25Qcm9wZXJ0eShvKSYmdGhpcy5zZXR1cEhhbmRsZXIo
dCxvLGFbb10pfSxzZXR1cEhhbmRsZXI6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXRoaXMsaT1mLmdl
dE93bmVyKHRoaXMpLG89aSYmaS5sb29rdXAoIi12aWV3LXJlZ2lzdHJ5Om1haW4iKXx8bC5kZWZh
dWx0LnZpZXdzO251bGwhPT1yJiYoZS5vbih0KyIuZW1iZXIiLCIuZW1iZXItdmlldyIsZnVuY3Rp
b24oZSx0KXt2YXIgaT1vW3RoaXMuaWRdLGE9ITAscz1uLmNhbkRpc3BhdGNoVG9FdmVudE1hbmFn
ZXI/bi5fZmluZE5lYXJlc3RFdmVudE1hbmFnZXIoaSxyKTpudWxsO3JldHVybiBzJiZzIT09dD9h
PW4uX2Rpc3BhdGNoRXZlbnQocyxlLHIsaSk6aSYmKGE9bi5fYnViYmxlRXZlbnQoaSxlLHIpKSxh
fSksZS5vbih0KyIuZW1iZXIiLCJbZGF0YS1lbWJlci1hY3Rpb25dIixmdW5jdGlvbihlKXt2YXIg
dD1zLmRlZmF1bHQoZS5jdXJyZW50VGFyZ2V0KS5hdHRyKCJkYXRhLWVtYmVyLWFjdGlvbiIpLG49
dS5kZWZhdWx0LnJlZ2lzdGVyZWRBY3Rpb25zW3RdO2lmKG4pZm9yKHZhciBpPTAsbz1uLmxlbmd0
aDtpPG87aSsrKXt2YXIgYT1uW2ldO2lmKGEmJmEuZXZlbnROYW1lPT09cilyZXR1cm4gYS5oYW5k
bGVyKGUpfX0pKX0sX2ZpbmROZWFyZXN0RXZlbnRNYW5hZ2VyOmZ1bmN0aW9uKGUsdCl7Zm9yKHZh
ciBuPW51bGw7ZSYmKG49ci5nZXQoZSwiZXZlbnRNYW5hZ2VyIiksIW58fCFuW3RdKTspZT1yLmdl
dChlLCJwYXJlbnRWaWV3Iik7cmV0dXJuIG59LF9kaXNwYXRjaEV2ZW50OmZ1bmN0aW9uKGUsdCxy
LG4pe3ZhciBpPSEwLGE9ZVtyXTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgYT8oaT1vLmRlZmF1
bHQoZSxhLHQsbiksdC5zdG9wUHJvcGFnYXRpb24oKSk6aT10aGlzLl9idWJibGVFdmVudChuLHQs
ciksaX0sX2J1YmJsZUV2ZW50OmZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZS5oYW5kbGVFdmVudChy
LHQpfSxkZXN0cm95OmZ1bmN0aW9uKCl7dmFyIGU9ci5nZXQodGhpcywicm9vdEVsZW1lbnQiKTty
ZXR1cm4gcy5kZWZhdWx0KGUpLm9mZigiLmVtYmVyIiwiKioiKS5yZW1vdmVDbGFzcyhwKSx0aGlz
Ll9zdXBlci5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJu
IihFdmVudERpc3BhdGNoZXIpIn19KX0pLGUoImVtYmVyLXZpZXdzL3N5c3RlbS9leHQiLFsiZXhw
b3J0cyIsImVtYmVyLW1ldGFsL3J1bl9sb29wIl0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7
dC5kZWZhdWx0Ll9hZGRRdWV1ZSgicmVuZGVyIiwiYWN0aW9ucyIpLHQuZGVmYXVsdC5fYWRkUXVl
dWUoImFmdGVyUmVuZGVyIiwicmVuZGVyIil9KSxlKCJlbWJlci12aWV3cy9zeXN0ZW0vanF1ZXJ5
IixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9jb3JlIiwiZW1iZXItbWV0YWwvZW52aXJvbm1lbnQi
XSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciBvO2lmKG4uZGVmYXVsdC5oYXNET00m
JihvPXQuZGVmYXVsdC5pbXBvcnRzJiZ0LmRlZmF1bHQuaW1wb3J0cy5qUXVlcnl8fGkmJmkualF1
ZXJ5LG98fCJmdW5jdGlvbiIhPXR5cGVvZiByfHwobz1yKCJqcXVlcnkiKSksbykpe3ZhciBhPVsi
ZHJhZ3N0YXJ0IiwiZHJhZyIsImRyYWdlbnRlciIsImRyYWdsZWF2ZSIsImRyYWdvdmVyIiwiZHJv
cCIsImRyYWdlbmQiXTthLmZvckVhY2goZnVuY3Rpb24oZSl7by5ldmVudC5maXhIb29rc1tlXT17
cHJvcHM6WyJkYXRhVHJhbnNmZXIiXX19KX1lLmRlZmF1bHQ9b30pLGUoImVtYmVyLXZpZXdzL3N5
c3RlbS9sb29rdXBfcGFydGlhbCIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvZGVidWciLCJlbWJl
ci1tZXRhbC9lcnJvciJdLGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihl
LHQpe2lmKG51bGwhPXQpe3ZhciByPXQuc3BsaXQoIi8iKSxuPXJbci5sZW5ndGgtMV07cltyLmxl
bmd0aC0xXT0iXyIrbjt2YXIgbz1yLmpvaW4oIi8iKSxhPWkoZSxvLHQpO3JldHVybiBhfX1mdW5j
dGlvbiBpKGUsdCxuKXtpZihuKXtpZighZS5vd25lcil0aHJvdyBuZXcgci5kZWZhdWx0KCJDb250
YWluZXIgd2FzIG5vdCBmb3VuZCB3aGVuIGxvb2tpbmcgdXAgYSB2aWV3cyB0ZW1wbGF0ZS4gVGhp
cyBpcyBtb3N0IGxpa2VseSBkdWUgdG8gbWFudWFsbHkgaW5zdGFudGlhdGluZyBhbiBFbWJlci5W
aWV3LiBTZWU6IGh0dHA6Ly9naXQuaW8vRUtQcG5BIik7cmV0dXJuIGUub3duZXIubG9va3VwKCJ0
ZW1wbGF0ZToiK3QpfHxlLm93bmVyLmxvb2t1cCgidGVtcGxhdGU6IituKX19ZS5kZWZhdWx0PW59
KSxlKCJlbWJlci12aWV3cy9zeXN0ZW0vcGxhdGZvcm0iLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFs
L2Vudmlyb25tZW50Il0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7dmFyIHI9dC5kZWZhdWx0
Lmhhc0RPTSYmZnVuY3Rpb24oKXt2YXIgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0
PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7cmV0dXJuIHQuc2V0QXR0cmlidXRlKCJu
YW1lIiwiZm9vIiksZS5hcHBlbmRDaGlsZCh0KSwhIWUuaW5uZXJIVE1MLm1hdGNoKCJmb28iKX0o
KTtlLmNhblNldE5hbWVPbklucHV0cz1yfSksZSgiZW1iZXItdmlld3Mvc3lzdGVtL3V0aWxzIixb
ImV4cG9ydHMiXSxmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gdChlKXt2YXIgdD1l
LnNoaWZ0S2V5fHxlLm1ldGFLZXl8fGUuYWx0S2V5fHxlLmN0cmxLZXkscj1lLndoaWNoPjE7cmV0
dXJuIXQmJiFyfWZ1bmN0aW9uIHIoZSl7dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtyZXR1
cm4gdC5zZXRTdGFydEJlZm9yZShlLl9yZW5kZXJOb2RlLmZpcnN0Tm9kZSksdC5zZXRFbmRBZnRl
cihlLl9yZW5kZXJOb2RlLmxhc3ROb2RlKSx0fWZ1bmN0aW9uIG4oZSl7dmFyIHQ9cihlKTtyZXR1
cm4gdC5nZXRDbGllbnRSZWN0cygpfWZ1bmN0aW9uIGkoZSl7dmFyIHQ9cihlKTtyZXR1cm4gdC5n
ZXRCb3VuZGluZ0NsaWVudFJlY3QoKX1lLmlzU2ltcGxlQ2xpY2s9dCxlLmdldFZpZXdDbGllbnRS
ZWN0cz1uLGUuZ2V0Vmlld0JvdW5kaW5nQ2xpZW50UmVjdD1pfSksZSgiZW1iZXItdmlld3Mvdmll
d3MvY2hlY2tib3giLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL3Byb3BlcnR5X2dldCIsImVtYmVy
LW1ldGFsL3Byb3BlcnR5X3NldCIsImVtYmVyLXZpZXdzL2NvbXBvbmVudHMvY29tcG9uZW50Il0s
ZnVuY3Rpb24oZSx0LHIsbil7InVzZSBzdHJpY3QiO2UuZGVmYXVsdD1uLmRlZmF1bHQuZXh0ZW5k
KHtpbnN0cnVtZW50RGlzcGxheTone3tpbnB1dCB0eXBlPSJjaGVja2JveCJ9fScsY2xhc3NOYW1l
czpbImVtYmVyLWNoZWNrYm94Il0sdGFnTmFtZToiaW5wdXQiLGF0dHJpYnV0ZUJpbmRpbmdzOlsi
dHlwZSIsImNoZWNrZWQiLCJpbmRldGVybWluYXRlIiwiZGlzYWJsZWQiLCJ0YWJpbmRleCIsIm5h
bWUiLCJhdXRvZm9jdXMiLCJyZXF1aXJlZCIsImZvcm0iXSx0eXBlOiJjaGVja2JveCIsY2hlY2tl
ZDohMSxkaXNhYmxlZDohMSxpbmRldGVybWluYXRlOiExLGRpZEluc2VydEVsZW1lbnQ6ZnVuY3Rp
b24oKXt0aGlzLl9zdXBlci5hcHBseSh0aGlzLGFyZ3VtZW50cyksdC5nZXQodGhpcywiZWxlbWVu
dCIpLmluZGV0ZXJtaW5hdGU9ISF0LmdldCh0aGlzLCJpbmRldGVybWluYXRlIil9LGNoYW5nZTpm
dW5jdGlvbigpe3Iuc2V0KHRoaXMsImNoZWNrZWQiLHRoaXMuJCgpLnByb3AoImNoZWNrZWQiKSl9
fSl9KSxlKCJlbWJlci12aWV3cy92aWV3cy9jb3JlX3ZpZXciLFsiZXhwb3J0cyIsImVtYmVyLW1l
dGFsL2RlYnVnIiwiZW1iZXItbWV0YWwvcHJvcGVydHlfZ2V0IiwiZW1iZXItcnVudGltZS9zeXN0
ZW0vb2JqZWN0IiwiZW1iZXItcnVudGltZS9taXhpbnMvZXZlbnRlZCIsImVtYmVyLXJ1bnRpbWUv
bWl4aW5zL2FjdGlvbl9oYW5kbGVyIiwiZW1iZXItcnVudGltZS91dGlscyIsImVtYmVyLW1ldGFs
LXZpZXdzIiwiZW1iZXItdmlld3Mvdmlld3Mvc3RhdGVzIiwiaHRtbGJhcnMtcnVudGltZSIsInJl
cXVpcmUiXSxmdW5jdGlvbihlLHQscixuLGksbyxhLHMsdSxsLGMpeyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiBmKCl7cmV0dXJuIGg9aHx8Yy5kZWZhdWx0KCJlbWJlci1odG1sYmFycy9zeXN0ZW0vZG9t
LWhlbHBlciIpLmRlZmF1bHR9dmFyIGQscD1uLmRlZmF1bHQuZXh0ZW5kKGkuZGVmYXVsdCxvLmRl
ZmF1bHQse2lzVmlldzohMCxfc3RhdGVzOnUuY2xvbmVTdGF0ZXModS5zdGF0ZXMpLGluaXQ6ZnVu
Y3Rpb24oKXtpZih0aGlzLl9zdXBlci5hcHBseSh0aGlzLGFyZ3VtZW50cyksdGhpcy5fc3RhdGU9
InByZVJlbmRlciIsdGhpcy5fY3VycmVudFN0YXRlPXRoaXMuX3N0YXRlcy5wcmVSZW5kZXIsdGhp
cy5faXNWaXNpYmxlPXIuZ2V0KHRoaXMsImlzVmlzaWJsZSIpLCF0aGlzLnJlbmRlcmVyKXt2YXIg
ZT1mKCk7ZD1kfHxzLkludGVyYWN0aXZlUmVuZGVyZXIuY3JlYXRlKHtkb206bmV3IGV9KSx0aGlz
LnJlbmRlcmVyPWR9dGhpcy5fZGVzdHJveWluZ1N1YnRyZWVGb3JWaWV3PW51bGwsdGhpcy5fZGlz
cGF0Y2hpbmc9bnVsbH0scGFyZW50VmlldzpudWxsLGluc3RydW1lbnROYW1lOiJjb3JlX3ZpZXci
LGluc3RydW1lbnREZXRhaWxzOmZ1bmN0aW9uKGUpe2Uub2JqZWN0PXRoaXMudG9TdHJpbmcoKSxl
LmNvbnRhaW5lcktleT10aGlzLl9kZWJ1Z0NvbnRhaW5lcktleSxlLnZpZXc9dGhpc30sdHJpZ2dl
cjpmdW5jdGlvbigpe3RoaXMuX3N1cGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt2YXIgZT1hcmd1
bWVudHNbMF0sdD10aGlzW2VdO2lmKHQpe2Zvcih2YXIgcj1hcmd1bWVudHMubGVuZ3RoLG49bmV3
IEFycmF5KHItMSksaT0xO2k8cjtpKyspbltpLTFdPWFyZ3VtZW50c1tpXTtyZXR1cm4gdC5hcHBs
eSh0aGlzLG4pfX0saGFzOmZ1bmN0aW9uKGUpe3JldHVybiJmdW5jdGlvbiI9PT1hLnR5cGVPZih0
aGlzW2VdKXx8dGhpcy5fc3VwZXIoZSl9LGRlc3Ryb3k6ZnVuY3Rpb24oKXtpZih0aGlzLl9zdXBl
ci5hcHBseSh0aGlzLGFyZ3VtZW50cykpcmV0dXJuIHRoaXMuX2N1cnJlbnRTdGF0ZS5jbGVhbnVw
KHRoaXMpLCF0aGlzLm93bmVyVmlldy5fZGVzdHJveWluZ1N1YnRyZWVGb3JWaWV3JiZ0aGlzLl9y
ZW5kZXJOb2RlJiZsLmludGVybmFsLmNsZWFyTW9ycGgodGhpcy5fcmVuZGVyTm9kZSx0aGlzLm93
bmVyVmlldy5lbnYsITApLHRoaXN9fSk7by5kZXByZWNhdGVVbmRlcnNjb3JlQWN0aW9ucyhwKSxw
LnJlb3BlbkNsYXNzKHtpc1ZpZXdGYWN0b3J5OiEwfSk7dmFyIGg7ZS5kZWZhdWx0PXB9KSxlKCJl
bWJlci12aWV3cy92aWV3cy9zdGF0ZXMiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL2Fzc2lnbiIs
ImVtYmVyLXZpZXdzL3ZpZXdzL3N0YXRlcy9kZWZhdWx0IiwiZW1iZXItdmlld3Mvdmlld3Mvc3Rh
dGVzL3ByZV9yZW5kZXIiLCJlbWJlci12aWV3cy92aWV3cy9zdGF0ZXMvaGFzX2VsZW1lbnQiLCJl
bWJlci12aWV3cy92aWV3cy9zdGF0ZXMvaW5fZG9tIiwiZW1iZXItdmlld3Mvdmlld3Mvc3RhdGVz
L2Rlc3Ryb3lpbmciXSxmdW5jdGlvbihlLHQscixuLGksbyxhKXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gcyhlKXt2YXIgcj17fTtyLl9kZWZhdWx0PXt9LHIucHJlUmVuZGVyPU9iamVjdC5jcmVhdGUo
ci5fZGVmYXVsdCksci5kZXN0cm95aW5nPU9iamVjdC5jcmVhdGUoci5fZGVmYXVsdCksci5oYXNF
bGVtZW50PU9iamVjdC5jcmVhdGUoci5fZGVmYXVsdCksci5pbkRPTT1PYmplY3QuY3JlYXRlKHIu
aGFzRWxlbWVudCk7Zm9yKHZhciBuIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShuKSYmdC5kZWZhdWx0
KHJbbl0sZVtuXSk7cmV0dXJuIHJ9ZS5jbG9uZVN0YXRlcz1zO3ZhciB1PXtfZGVmYXVsdDpyLmRl
ZmF1bHQscHJlUmVuZGVyOm4uZGVmYXVsdCxpbkRPTTpvLmRlZmF1bHQsaGFzRWxlbWVudDppLmRl
ZmF1bHQsZGVzdHJveWluZzphLmRlZmF1bHR9O2Uuc3RhdGVzPXV9KSxlKCJlbWJlci12aWV3cy92
aWV3cy9zdGF0ZXMvZGVmYXVsdCIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvZXJyb3IiLCJlbWJl
ci1tZXRhbC9wcm9wZXJ0eV9nZXQiLCJlbWJlci12aWV3cy9jb21wYXQvYXR0cnMtcHJveHkiXSxm
dW5jdGlvbihlLHQscixuKXsidXNlIHN0cmljdCI7ZS5kZWZhdWx0PXthcHBlbmRDaGlsZDpmdW5j
dGlvbigpe3Rocm93IG5ldyB0LmRlZmF1bHQoIllvdSBjYW4ndCB1c2UgYXBwZW5kQ2hpbGQgb3V0
c2lkZSBvZiB0aGUgcmVuZGVyaW5nIHByb2Nlc3MiKX0sJDpmdW5jdGlvbigpe30sZ2V0RWxlbWVu
dDpmdW5jdGlvbigpe3JldHVybiBudWxsfSxsZWdhY3lQcm9wZXJ0eURpZENoYW5nZTpmdW5jdGlv
bihlLHQpe3ZhciBpPWUuYXR0cnM7aWYoaSYmdCBpbiBpKXt2YXIgbz1pW3RdO2lmKG8mJm9bbi5N
VVRBQkxFX0NFTExdKXt2YXIgYT1yLmdldChlLHQpO2lmKGE9PT1vLnZhbHVlKXJldHVybjtvLnVw
ZGF0ZShhKX19fSxoYW5kbGVFdmVudDpmdW5jdGlvbigpe3JldHVybiEwfSxjbGVhbnVwOmZ1bmN0
aW9uKCl7fSxkZXN0cm95RWxlbWVudDpmdW5jdGlvbigpe30scmVyZW5kZXI6ZnVuY3Rpb24oZSl7
ZS5yZW5kZXJlci5lbnN1cmVWaWV3Tm90UmVuZGVyaW5nKGUpfSxpbnZva2VPYnNlcnZlcjpmdW5j
dGlvbigpe319fSksZSgiZW1iZXItdmlld3Mvdmlld3Mvc3RhdGVzL2Rlc3Ryb3lpbmciLFsiZXhw
b3J0cyIsImVtYmVyLW1ldGFsL2Fzc2lnbiIsImVtYmVyLXZpZXdzL3ZpZXdzL3N0YXRlcy9kZWZh
dWx0IiwiZW1iZXItbWV0YWwvZXJyb3IiXSxmdW5jdGlvbihlLHQscixuKXsidXNlIHN0cmljdCI7
dmFyIGk9T2JqZWN0LmNyZWF0ZShyLmRlZmF1bHQpO3QuZGVmYXVsdChpLHthcHBlbmRDaGlsZDpm
dW5jdGlvbigpe3Rocm93IG5ldyBuLmRlZmF1bHQoIllvdSBjYW4ndCBjYWxsIGFwcGVuZENoaWxk
IG9uIGEgdmlldyBiZWluZyBkZXN0cm95ZWQiKX0scmVyZW5kZXI6ZnVuY3Rpb24oKXt0aHJvdyBu
ZXcgbi5kZWZhdWx0KCJZb3UgY2FuJ3QgY2FsbCByZXJlbmRlciBvbiBhIHZpZXcgYmVpbmcgZGVz
dHJveWVkIil9LGRlc3Ryb3lFbGVtZW50OmZ1bmN0aW9uKCl7dGhyb3cgbmV3IG4uZGVmYXVsdCgi
WW91IGNhbid0IGNhbGwgZGVzdHJveUVsZW1lbnQgb24gYSB2aWV3IGJlaW5nIGRlc3Ryb3llZCIp
fX0pLGUuZGVmYXVsdD1pfSksZSgiZW1iZXItdmlld3Mvdmlld3Mvc3RhdGVzL2hhc19lbGVtZW50
IixbImV4cG9ydHMiLCJlbWJlci12aWV3cy92aWV3cy9zdGF0ZXMvZGVmYXVsdCIsImVtYmVyLW1l
dGFsL2Fzc2lnbiIsImVtYmVyLXZpZXdzL3N5c3RlbS9qcXVlcnkiLCJlbWJlci1tZXRhbC9ydW5f
bG9vcCIsImVtYmVyLW1ldGFsL2luc3RydW1lbnRhdGlvbiIsImVtYmVyLW1ldGFsL3Byb3BlcnR5
X2dldCJdLGZ1bmN0aW9uKGUsdCxyLG4saSxvLGEpeyJ1c2Ugc3RyaWN0Ijt2YXIgcz1PYmplY3Qu
Y3JlYXRlKHQuZGVmYXVsdCk7ci5kZWZhdWx0KHMseyQ6ZnVuY3Rpb24oZSx0KXt2YXIgcj1lLmVs
ZW1lbnQ7cmV0dXJuIHQ/bi5kZWZhdWx0KHQscik6bi5kZWZhdWx0KHIpfSxnZXRFbGVtZW50OmZ1
bmN0aW9uKGUpe3ZhciB0PWEuZ2V0KGUsInBhcmVudFZpZXciKTtyZXR1cm4gdCYmKHQ9YS5nZXQo
dCwiZWxlbWVudCIpKSx0P2UuZmluZEVsZW1lbnRJblBhcmVudEVsZW1lbnQodCk6bi5kZWZhdWx0
KCIjIithLmdldChlLCJlbGVtZW50SWQiKSlbMF19LHJlcmVuZGVyOmZ1bmN0aW9uKGUpe2UucmVu
ZGVyZXIuZW5zdXJlVmlld05vdFJlbmRlcmluZyhlKSxlLnJlbmRlcmVyLnJlcmVuZGVyKGUpfSxj
bGVhbnVwOmZ1bmN0aW9uKGUpe2UuX2N1cnJlbnRTdGF0ZS5kZXN0cm95RWxlbWVudChlKX0sZGVz
dHJveUVsZW1lbnQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVuZGVyZXIucmVtb3ZlKGUsITEpLGV9
LGhhbmRsZUV2ZW50OmZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4hZS5oYXModCl8fG8uZmxhZ2dlZElu
c3RydW1lbnQoImludGVyYWN0aW9uLiIrdCx7ZXZlbnQ6cix2aWV3OmV9LGZ1bmN0aW9uKCl7cmV0
dXJuIGkuZGVmYXVsdC5qb2luKGUsZS50cmlnZ2VyLHQscil9KX0saW52b2tlT2JzZXJ2ZXI6ZnVu
Y3Rpb24oZSx0KXt0LmNhbGwoZSl9fSksZS5kZWZhdWx0PXN9KSxlKCJlbWJlci12aWV3cy92aWV3
cy9zdGF0ZXMvaW5fZG9tIixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9kZWJ1ZyIsImVtYmVyLW1l
dGFsL2Fzc2lnbiIsImVtYmVyLW1ldGFsL2Vycm9yIiwiZW1iZXItbWV0YWwvb2JzZXJ2ZXIiLCJl
bWJlci12aWV3cy92aWV3cy9zdGF0ZXMvaGFzX2VsZW1lbnQiXSxmdW5jdGlvbihlLHQscixuLGks
byl7InVzZSBzdHJpY3QiO3ZhciBhPU9iamVjdC5jcmVhdGUoby5kZWZhdWx0KTtyLmRlZmF1bHQo
YSx7ZW50ZXI6ZnVuY3Rpb24oZSl7IiIhPT1lLnRhZ05hbWUmJmUuX3JlZ2lzdGVyKCl9LGV4aXQ6
ZnVuY3Rpb24oZSl7ZS5fdW5yZWdpc3RlcigpfX0pLGUuZGVmYXVsdD1hfSksZSgiZW1iZXItdmll
d3Mvdmlld3Mvc3RhdGVzL3ByZV9yZW5kZXIiLFsiZXhwb3J0cyIsImVtYmVyLXZpZXdzL3ZpZXdz
L3N0YXRlcy9kZWZhdWx0IiwiZW1iZXItbWV0YWwvYXNzaWduIl0sZnVuY3Rpb24oZSx0LHIpeyJ1
c2Ugc3RyaWN0Ijt2YXIgbj1PYmplY3QuY3JlYXRlKHQuZGVmYXVsdCk7ci5kZWZhdWx0KG4se2xl
Z2FjeVByb3BlcnR5RGlkQ2hhbmdlOmZ1bmN0aW9uKGUsdCl7fX0pLGUuZGVmYXVsdD1ufSksZSgi
ZW1iZXItdmlld3Mvdmlld3MvdGV4dF9hcmVhIixbImV4cG9ydHMiLCJlbWJlci12aWV3cy9jb21w
b25lbnRzL2NvbXBvbmVudCIsImVtYmVyLXZpZXdzL21peGlucy90ZXh0X3N1cHBvcnQiXSxmdW5j
dGlvbihlLHQscil7InVzZSBzdHJpY3QiO2UuZGVmYXVsdD10LmRlZmF1bHQuZXh0ZW5kKHIuZGVm
YXVsdCx7aW5zdHJ1bWVudERpc3BsYXk6Int7dGV4dGFyZWF9fSIsY2xhc3NOYW1lczpbImVtYmVy
LXRleHQtYXJlYSJdLHRhZ05hbWU6InRleHRhcmVhIixhdHRyaWJ1dGVCaW5kaW5nczpbInJvd3Mi
LCJjb2xzIiwibmFtZSIsInNlbGVjdGlvbkVuZCIsInNlbGVjdGlvblN0YXJ0Iiwid3JhcCIsImxh
bmciLCJkaXIiLCJ2YWx1ZSJdLHJvd3M6bnVsbCxjb2xzOm51bGx9KX0pLGUoImVtYmVyLXZpZXdz
L3ZpZXdzL3RleHRfZmllbGQiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL2NvbXB1dGVkIiwiZW1i
ZXItbWV0YWwvZW52aXJvbm1lbnQiLCJlbWJlci12aWV3cy9jb21wb25lbnRzL2NvbXBvbmVudCIs
ImVtYmVyLXZpZXdzL21peGlucy90ZXh0X3N1cHBvcnQiLCJlbWJlci1tZXRhbC9lbXB0eV9vYmpl
Y3QiXSxmdW5jdGlvbihlLHQscixuLGksbyl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGEoZSl7aWYo
ZSBpbiB1KXJldHVybiB1W2VdO2lmKCFyLmRlZmF1bHQuaGFzRE9NKXJldHVybiB1W2VdPWUsZTtz
fHwocz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpKTt0cnl7cy50eXBlPWV9Y2F0Y2go
ZSl7fXJldHVybiB1W2VdPXMudHlwZT09PWV9dmFyIHMsdT1uZXcgby5kZWZhdWx0O2UuZGVmYXVs
dD1uLmRlZmF1bHQuZXh0ZW5kKGkuZGVmYXVsdCx7aW5zdHJ1bWVudERpc3BsYXk6J3t7aW5wdXQg
dHlwZT0idGV4dCJ9fScsY2xhc3NOYW1lczpbImVtYmVyLXRleHQtZmllbGQiXSx0YWdOYW1lOiJp
bnB1dCIsYXR0cmlidXRlQmluZGluZ3M6WyJhY2NlcHQiLCJhdXRvY29tcGxldGUiLCJhdXRvc2F2
ZSIsImRpciIsImZvcm1hY3Rpb24iLCJmb3JtZW5jdHlwZSIsImZvcm1tZXRob2QiLCJmb3Jtbm92
YWxpZGF0ZSIsImZvcm10YXJnZXQiLCJoZWlnaHQiLCJpbnB1dG1vZGUiLCJsYW5nIiwibGlzdCIs
Im1heCIsIm1pbiIsIm11bHRpcGxlIiwibmFtZSIsInBhdHRlcm4iLCJzaXplIiwic3RlcCIsInR5
cGUiLCJ2YWx1ZSIsIndpZHRoIl0sZGVmYXVsdExheW91dDpudWxsLHZhbHVlOiIiLHR5cGU6dC5j
b21wdXRlZCh7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuInRleHQifSxzZXQ6ZnVuY3Rpb24oZSx0KXt2
YXIgcj0idGV4dCI7cmV0dXJuIGEodCkmJihyPXQpLHJ9fSksc2l6ZTpudWxsLHBhdHRlcm46bnVs
bCxtaW46bnVsbCxtYXg6bnVsbH0pfSksZSgiZW1iZXItdmlld3Mvdmlld3MvdmlldyIsWyJleHBv
cnRzIiwiZW1iZXItdmlld3Mvc3lzdGVtL2V4dCIsImVtYmVyLXZpZXdzL3ZpZXdzL2NvcmVfdmll
dyIsImVtYmVyLXZpZXdzL21peGlucy92aWV3X2NvbnRleHRfc3VwcG9ydCIsImVtYmVyLXZpZXdz
L21peGlucy92aWV3X2NoaWxkX3ZpZXdzX3N1cHBvcnQiLCJlbWJlci12aWV3cy9taXhpbnMvbGVn
YWN5X2NoaWxkX3ZpZXdzX3N1cHBvcnQiLCJlbWJlci12aWV3cy9taXhpbnMvdmlld19zdGF0ZV9z
dXBwb3J0IiwiZW1iZXItdmlld3MvbWl4aW5zL3RlbXBsYXRlX3JlbmRlcmluZ19zdXBwb3J0Iiwi
ZW1iZXItdmlld3MvbWl4aW5zL2NsYXNzX25hbWVzX3N1cHBvcnQiLCJlbWJlci12aWV3cy9taXhp
bnMvbGVnYWN5X3ZpZXdfc3VwcG9ydCIsImVtYmVyLXZpZXdzL21peGlucy9pbnN0cnVtZW50YXRp
b25fc3VwcG9ydCIsImVtYmVyLXZpZXdzL21peGlucy9hcmlhX3JvbGVfc3VwcG9ydCIsImVtYmVy
LXZpZXdzL21peGlucy92aXNpYmlsaXR5X3N1cHBvcnQiLCJlbWJlci12aWV3cy9jb21wYXQvYXR0
cnMtcHJveHkiLCJlbWJlci12aWV3cy9taXhpbnMvdmlld19zdXBwb3J0Il0sZnVuY3Rpb24oZSx0
LHIsbixpLG8sYSxzLHUsbCxjLGYsZCxwLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgbT1yLmRlZmF1bHQu
ZXh0ZW5kKG4uZGVmYXVsdCxpLmRlZmF1bHQsby5kZWZhdWx0LGEuZGVmYXVsdCxzLmRlZmF1bHQs
dS5kZWZhdWx0LGwuZGVmYXVsdCxjLmRlZmF1bHQsZC5kZWZhdWx0LHAuZGVmYXVsdCxmLmRlZmF1
bHQsaC5kZWZhdWx0LHtpbml0OmZ1bmN0aW9uKCl7dGhpcy5fc3VwZXIuYXBwbHkodGhpcyxhcmd1
bWVudHMpLHRoaXMuX3ZpZXdSZWdpc3RyeXx8KHRoaXMuX3ZpZXdSZWdpc3RyeT1tLnZpZXdzKX0s
X2NsYXNzU3RyaW5nRm9yUHJvcGVydHk6ZnVuY3Rpb24oZSl7cmV0dXJuIG0uX2NsYXNzU3RyaW5n
Rm9yVmFsdWUoZS5wYXRoLGUuc3RyZWFtLnZhbHVlKCksZS5jbGFzc05hbWUsZS5mYWxzeUNsYXNz
TmFtZSl9fSk7bS5yZW9wZW5DbGFzcyh7dmlld3M6e319KSxlLmRlZmF1bHQ9bSxlLlZpZXdDb250
ZXh0U3VwcG9ydD1uLmRlZmF1bHQsZS5WaWV3Q2hpbGRWaWV3c1N1cHBvcnQ9aS5kZWZhdWx0LGUu
Vmlld1N0YXRlU3VwcG9ydD1hLmRlZmF1bHQsZS5UZW1wbGF0ZVJlbmRlcmluZ1N1cHBvcnQ9cy5k
ZWZhdWx0LGUuQ2xhc3NOYW1lc1N1cHBvcnQ9dS5kZWZhdWx0fSksZSgiZW1iZXIvaW5kZXgiLFsi
ZXhwb3J0cyIsImVtYmVyLW1ldGFsIiwiZW1iZXItcnVudGltZSIsImVtYmVyLXZpZXdzIiwiZW1i
ZXItcm91dGluZyIsImVtYmVyLWFwcGxpY2F0aW9uIiwiZW1iZXItZXh0ZW5zaW9uLXN1cHBvcnQi
LCJlbWJlci1odG1sYmFycyIsImVtYmVyLXJvdXRpbmctaHRtbGJhcnMiLCJlbWJlci1yb3V0aW5n
LXZpZXdzIiwicmVxdWlyZSIsImVtYmVyLXJ1bnRpbWUvc3lzdGVtL2xhenlfbG9hZCJdLGZ1bmN0
aW9uKGUsdCxyLG4saSxvLGEscyx1LGwsYyxmKXsidXNlIHN0cmljdCI7Yy5oYXMoImVtYmVyLXRl
bXBsYXRlLWNvbXBpbGVyIikmJmMuZGVmYXVsdCgiZW1iZXItdGVtcGxhdGUtY29tcGlsZXIiKSxj
LmhhcygiZW1iZXItdGVzdGluZyIpJiZjLmRlZmF1bHQoImVtYmVyLXRlc3RpbmciKSxmLnJ1bkxv
YWRIb29rcygiRW1iZXIiKX0pLGUoImh0bWxiYXJzLXJ1bnRpbWUiLFsiZXhwb3J0cyIsImh0bWxi
YXJzLXJ1bnRpbWUvaG9va3MiLCJodG1sYmFycy1ydW50aW1lL3JlbmRlciIsImh0bWxiYXJzLXV0
aWwvbW9ycGgtdXRpbHMiLCJodG1sYmFycy11dGlsL3RlbXBsYXRlLXV0aWxzIl0sZnVuY3Rpb24o
ZSx0LHIsbixpKXsidXNlIHN0cmljdCI7dmFyIG89e2Jsb2NrRm9yOmkuYmxvY2tGb3IsbWFudWFs
RWxlbWVudDpyLm1hbnVhbEVsZW1lbnQsaG9zdEJsb2NrOnQuaG9zdEJsb2NrLGNvbnRpbnVlQmxv
Y2s6dC5jb250aW51ZUJsb2NrLGhvc3RZaWVsZFdpdGhTaGFkb3dUZW1wbGF0ZTp0Lmhvc3RZaWVs
ZFdpdGhTaGFkb3dUZW1wbGF0ZSx2aXNpdENoaWxkcmVuOm4udmlzaXRDaGlsZHJlbix2YWxpZGF0
ZUNoaWxkTW9ycGhzOm4udmFsaWRhdGVDaGlsZE1vcnBocyxjbGVhck1vcnBoOmkuY2xlYXJNb3Jw
aH07ZS5ob29rcz10LmRlZmF1bHQsZS5yZW5kZXI9ci5kZWZhdWx0LGUuaW50ZXJuYWw9b30pLGUo
Imh0bWxiYXJzLXJ1bnRpbWUvZXhwcmVzc2lvbi12aXNpdG9yIixbImV4cG9ydHMiXSxmdW5jdGlv
bihlKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gdChlLHQscil7Zm9yKHZhciBpPVtdLG89MCxhPWUu
bGVuZ3RoO288YTtvKyspaS5wdXNoKG4oZVtvXSx0LHIpLnZhbHVlKTtyZXR1cm4gaX1mdW5jdGlv
biByKGUsdCxyKXtmb3IodmFyIGk9e30sbz0wLGE9ZS5sZW5ndGg7bzxhO28rPTIpe3ZhciBzPWVb
b10sdT1lW28rMV07aVtzXT1uKHUsdCxyKS52YWx1ZX1yZXR1cm4gaX1mdW5jdGlvbiBuKGUsdCxy
KXt2YXIgbj17dmFsdWU6bnVsbH07cmV0dXJuIm9iamVjdCIhPXR5cGVvZiBlfHxudWxsPT09ZT9u
LnZhbHVlPWU6bi52YWx1ZT1pKGUsdCxyKSxufWZ1bmN0aW9uIGkoZSx0LHIpe3N3aXRjaChlWzBd
KXtjYXNlInZhbHVlIjpyZXR1cm4gZVsxXTtjYXNlImdldCI6cmV0dXJuIG8oZSx0LHIpO2Nhc2Ui
c3ViZXhwciI6cmV0dXJuIGEoZSx0LHIpO2Nhc2UiY29uY2F0IjpyZXR1cm4gcyhlLHQscil9fWZ1
bmN0aW9uIG8oZSx0LHIpe3ZhciBuPWVbMV07cmV0dXJuIHQuaG9va3MuZ2V0KHQscixuKX1mdW5j
dGlvbiBhKGUsbixpKXt2YXIgbz1lWzFdLGE9ZVsyXSxzPWVbM10sdT10KGEsbixpKSxsPXIocyxu
LGkpO3JldHVybiBuLmhvb2tzLnN1YmV4cHIobixpLG8sdSxsKX1mdW5jdGlvbiBzKGUscixuKXt2
YXIgaT1lWzFdLG89dChpLHIsbik7cmV0dXJuIHIuaG9va3MuY29uY2F0KHIsbyl9ZS5hY2NlcHRQ
YXJhbXM9dCxlLmFjY2VwdEhhc2g9cn0pLGUoImh0bWxiYXJzLXJ1bnRpbWUvaG9va3MiLFsiZXhw
b3J0cyIsImh0bWxiYXJzLXJ1bnRpbWUvcmVuZGVyIiwibW9ycGgtcmFuZ2UvbW9ycGgtbGlzdCIs
Imh0bWxiYXJzLXV0aWwvb2JqZWN0LXV0aWxzIiwiaHRtbGJhcnMtdXRpbC9tb3JwaC11dGlscyIs
Imh0bWxiYXJzLXV0aWwvdGVtcGxhdGUtdXRpbHMiXSxmdW5jdGlvbihlLHQscixuLGksbyl7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIGEoZSl7cmV0dXJuIG51bGw9PT1lP251bGw6e21ldGE6ZS5tZXRh
LGFyaXR5OmUuYXJpdHkscmF3OmUscmVuZGVyOmZ1bmN0aW9uKHIsbixpLG8pe3ZhciBhPW4uaG9v
a3MuY3JlYXRlRnJlc2hTY29wZSgpLHM9aSYmaS5jb250ZXh0dWFsRWxlbWVudCx1PW5ldyB0LlJl
bmRlck9wdGlvbnMobnVsbCxyLG8scyk7cmV0dXJuIHQuZGVmYXVsdChlLG4sYSx1KX19fWZ1bmN0
aW9uIHMoZSx0LHIsbixpLG8pe2lmKCFlKXJldHVybnt9O3ZhciBhPXUoZSx0LHIsbixpLG8pO3Jl
dHVybnttZXRhOmUubWV0YSxhcml0eTplLmFyaXR5LHlpZWxkOmEseWllbGRJdGVtOmwoZSx0LHIs
bixpLG8pLHJhdzplLHJlbmRlcjpmdW5jdGlvbihlLHQpe2EodCxlKX19fWZ1bmN0aW9uIHUoZSxy
LG4saSxhLHMpe3JldHVybiBmdW5jdGlvbih1LGwpe2EubW9ycGhUb0NsZWFyPW51bGwsaS5tb3Jw
aExpc3QmJihvLmNsZWFyTW9ycGhMaXN0KGkubW9ycGhMaXN0LGksciksYS5tb3JwaExpc3RUb0Ns
ZWFyPW51bGwpO3ZhciBmPW47aWYoaS5sYXN0WWllbGRlZCYmYyhlLGkubGFzdFlpZWxkZWQpKXJl
dHVybiBpLmxhc3RSZXN1bHQucmV2YWxpZGF0ZVdpdGgocix2b2lkIDAsbCx1LHMpOyh2b2lkIDAh
PT1sfHxudWxsPT09bnx8ZS5hcml0eSkmJihmPXIuaG9va3MuY3JlYXRlQ2hpbGRTY29wZShuKSks
aS5sYXN0WWllbGRlZD17c2VsZjpsLHRlbXBsYXRlOmUsc2hhZG93VGVtcGxhdGU6bnVsbH07dmFy
IGQ9bmV3IHQuUmVuZGVyT3B0aW9ucyhpLGwsdSk7dC5kZWZhdWx0KGUscixmLGQpfX1mdW5jdGlv
biBsKGUsbixpLG8sYSxzKXtmdW5jdGlvbiBsKGUpe2Zvcih2YXIgdD1jO3Qua2V5IT09ZTspZlt0
LmtleV09dCx0PXQubmV4dE1vcnBoO3JldHVybiBjPXQubmV4dE1vcnBoLHR9dmFyIGM9bnVsbCxm
PXt9LGQ9by5tb3JwaExpc3Q7cmV0dXJuIGQmJihjPWQuZmlyc3RDaGlsZE1vcnBoKSxmdW5jdGlv
bihkLHAsaCl7aWYoInN0cmluZyIhPXR5cGVvZiBkKXRocm93IG5ldyBFcnJvcigiWW91IG11c3Qg
cHJvdmlkZSBhIHN0cmluZyBrZXkgd2hlbiBjYWxsaW5nIGB5aWVsZEl0ZW1gOyB5b3UgcHJvdmlk
ZWQgIitkKTthLm1vcnBoTGlzdFRvQ2xlYXI9bnVsbCxvLmxhc3RZaWVsZGVkPW51bGw7dmFyIG0s
djtvLm1vcnBoTGlzdHx8KG8ubW9ycGhMaXN0PW5ldyByLmRlZmF1bHQsby5tb3JwaE1hcD17fSxv
LnNldE1vcnBoTGlzdChvLm1vcnBoTGlzdCkpLG09by5tb3JwaExpc3Qsdj1vLm1vcnBoTWFwO3Zh
ciBiPWEuaGFuZGxlZE1vcnBocyxnPXZvaWQgMDtpZihkIGluIGIpe3ZhciB5PWEuY29sbGlzaW9u
czt2b2lkIDA9PT15JiYoeT1hLmNvbGxpc2lvbnM9e30pO3ZhciBfPTB8eVtkXTt5W2RdPSsrXyxn
PWQrIi0tejhtUzJodkRXMEEtLSIrX31lbHNlIGc9ZDtpZihjJiZjLmtleT09PWcpdShlLG4saSxj
LGEscykocCxoKSxjPWMubmV4dE1vcnBoLGJbZ109YztlbHNlIGlmKHZvaWQgMCE9PXZbZ10pe3Zh
ciB3PXZbZ107ZyBpbiBmP20uaW5zZXJ0QmVmb3JlTW9ycGgodyxjKTpsKGcpLGJbdy5rZXldPXcs
dShlLG4saSx3LGEscykocCxoKX1lbHNle3ZhciB4PXQuY3JlYXRlQ2hpbGRNb3JwaChuLmRvbSxv
KTt4LmtleT1nLHZbZ109YltnXT14LG0uaW5zZXJ0QmVmb3JlTW9ycGgoeCxjKSx1KGUsbixpLHgs
YSxzKShwLGgpfWEubW9ycGhMaXN0VG9QcnVuZT1tLG8uY2hpbGROb2Rlcz1udWxsfX1mdW5jdGlv
biBjKGUsdCl7cmV0dXJuIXQuc2hhZG93VGVtcGxhdGUmJmU9PT10LnRlbXBsYXRlfWZ1bmN0aW9u
IGYoZSx0LHIsbixpLGEpe3ZhciB1PWkubGFzdFJlc3VsdD9pOm51bGwsbD1uZXcgby5SZW5kZXJT
dGF0ZSh1LGkubW9ycGhMaXN0fHxudWxsKTtyZXR1cm57dGVtcGxhdGVzOnt0ZW1wbGF0ZTpzKGUs
cixuLGksbCxhKSxpbnZlcnNlOnModCxyLG4saSxsLGEpfSxyZW5kZXJTdGF0ZTpsfX1mdW5jdGlv
biBkKGUpe3JldHVybnthcml0eTplLnRlbXBsYXRlLmFyaXR5LHlpZWxkOmUudGVtcGxhdGUueWll
bGQseWllbGRJdGVtOmUudGVtcGxhdGUueWllbGRJdGVtLHlpZWxkSW46ZS50ZW1wbGF0ZS55aWVs
ZElufX1mdW5jdGlvbiBwKGUsdCl7cmV0dXJuIHQ/ZS5ob29rcy5jcmVhdGVDaGlsZFNjb3BlKHQp
OmUuaG9va3MuY3JlYXRlRnJlc2hTY29wZSgpfWZ1bmN0aW9uIGgoKXtyZXR1cm57c2VsZjpudWxs
LGJsb2Nrczp7fSxsb2NhbHM6e30sbG9jYWxQcmVzZW50Ont9fX1mdW5jdGlvbiBtKGUpe3JldHVy
biBlLmhvb2tzLmNyZWF0ZUZyZXNoU2NvcGUoKX1mdW5jdGlvbiB2KGUpe3ZhciB0PU9iamVjdC5j
cmVhdGUoZSk7cmV0dXJuIHQubG9jYWxzPU9iamVjdC5jcmVhdGUoZS5sb2NhbHMpLHQubG9jYWxQ
cmVzZW50PU9iamVjdC5jcmVhdGUoZS5sb2NhbFByZXNlbnQpLHQuYmxvY2tzPU9iamVjdC5jcmVh
dGUoZS5ibG9ja3MpLHR9ZnVuY3Rpb24gYihlLHQscil7dC5zZWxmPXJ9ZnVuY3Rpb24gZyhlLHQs
cil7ZS5ob29rcy5iaW5kU2VsZihlLHQscil9ZnVuY3Rpb24geShlLHQscixuKXt0LmxvY2FsUHJl
c2VudFtyXT0hMCx0LmxvY2Fsc1tyXT1ufWZ1bmN0aW9uIF8oZSx0LHIsbil7ZS5ob29rcy5iaW5k
TG9jYWwoZSx0LHIsbil9ZnVuY3Rpb24gdyhlLHQscil7dmFyIG49YXJndW1lbnRzLmxlbmd0aDw9
M3x8dm9pZCAwPT09YXJndW1lbnRzWzNdPyJkZWZhdWx0Ijphcmd1bWVudHNbM107dC5ibG9ja3Nb
bl09cn1mdW5jdGlvbiB4KGUsdCxyLG4saSxvLGEscyx1KXtFKGUsdCxyLG4saSxvLGEscyx1KXx8
ayhlLHQscixuLGksbyxhLHMsdSl9ZnVuY3Rpb24gayhlLHQscixuLGksbyxhLHMsdSl7QyhlLHQs
cixhLHMsbnVsbCx1LGZ1bmN0aW9uKGEpe3ZhciBzPXQuaG9va3MubG9va3VwSGVscGVyKHQscixu
KTtyZXR1cm4gdC5ob29rcy5pbnZva2VIZWxwZXIoZSx0LHIsdSxpLG8scyxhLnRlbXBsYXRlcyxk
KGEudGVtcGxhdGVzKSl9KX1mdW5jdGlvbiBDKGUsdCxyLG4saSxhLHMsdSl7dmFyIGw9ZihuLGks
dCxyLGUscyk7by5yZW5kZXJBbmRDbGVhbnVwKGUsdCxsLGEsdSl9ZnVuY3Rpb24gRShlLHQscixu
LGksbyxhLHMsdSl7aWYoIW4pcmV0dXJuITE7dmFyIGw9dC5ob29rcy5jbGFzc2lmeSh0LHIsbik7
aWYobCl7c3dpdGNoKGwpe2Nhc2UiY29tcG9uZW50Ijp0Lmhvb2tzLmNvbXBvbmVudChlLHQscixu
LGksbyx7ZGVmYXVsdDphLGludmVyc2U6c30sdSk7YnJlYWs7Y2FzZSJpbmxpbmUiOnQuaG9va3Mu
aW5saW5lKGUsdCxyLG4saSxvLHUpO2JyZWFrO2Nhc2UiYmxvY2siOnQuaG9va3MuYmxvY2soZSx0
LHIsbixpLG8sYSxzLHUpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJJbnRlcm5hbCBI
VE1MQmFycyByZWRpcmVjdGlvbiB0byAiK2wrIiBub3Qgc3VwcG9ydGVkIil9cmV0dXJuITB9cmV0
dXJuISFPKG4sZSx0LHIsaSxvLGEscyx1KX1mdW5jdGlvbiBPKGUsdCxyLGEscyx1LGwsYyxmKXt2
YXIgZD1yLmhvb2tzLmtleXdvcmRzW2VdO2lmKCFkKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5
cGVvZiBkKXJldHVybiBkKHQscixhLHMsdSxsLGMsZik7ZC53aWxsUmVuZGVyJiZkLndpbGxSZW5k
ZXIodCxyKTt2YXIgcCxoO2Quc2V0dXBTdGF0ZSYmKHA9bi5zaGFsbG93Q29weSh0LmdldFN0YXRl
KCkpLGg9dC5zZXRTdGF0ZShkLnNldHVwU3RhdGUocCxyLGEscyx1KSkpLGQuY2hpbGRFbnYmJihy
PWQuY2hpbGRFbnYodC5nZXRTdGF0ZSgpLHIpLHQuYnVpbGRDaGlsZEVudj1kLmNoaWxkRW52KTt2
YXIgbT0hdC5yZW5kZXJlZDtpZihkLmlzRW1wdHkpe3ZhciB2PWQuaXNFbXB0eSh0LmdldFN0YXRl
KCkscixhLHMsdSk7aWYodilyZXR1cm4gbXx8by5jbGVhck1vcnBoKHQsciwhMSksITB9aWYobSly
ZXR1cm4gZC5yZW5kZXImJmQucmVuZGVyKHQscixhLHMsdSxsLGMsZiksdC5yZW5kZXJlZD0hMCwh
MDt2YXIgYjtpZihiPWQuaXNTdGFibGU/ZC5pc1N0YWJsZShwLGgpOlQocCxoKSl7aWYoZC5yZXJl
bmRlcil7dmFyIGc9ZC5yZXJlbmRlcih0LHIsYSxzLHUsbCxjLGYpO3I9Z3x8cn1yZXR1cm4gaS52
YWxpZGF0ZUNoaWxkTW9ycGhzKHIsdCxmKSwhMH1yZXR1cm4gby5jbGVhck1vcnBoKHQsciwhMSks
ZC5yZW5kZXI/KGQucmVuZGVyKHQscixhLHMsdSxsLGMsZiksdC5yZW5kZXJlZD0hMCwhMCk6dm9p
ZCAwfWZ1bmN0aW9uIFQoZSx0KXtpZihuLmtleUxlbmd0aChlKSE9PW4ua2V5TGVuZ3RoKHQpKXJl
dHVybiExO2Zvcih2YXIgciBpbiBlKWlmKGVbcl0hPT10W3JdKXJldHVybiExO3JldHVybiEwfWZ1
bmN0aW9uIE4oKXt9ZnVuY3Rpb24gUyhlLHQscixuLG8sYSxzKXtpZighRShlLHQscixuLG8sYSxu
dWxsLG51bGwscykpe3ZhciB1PXZvaWQgMCxsPXZvaWQgMDtpZihlLmxpbmtlZFJlc3VsdCl1PXQu
aG9va3MuZ2V0VmFsdWUoZS5saW5rZWRSZXN1bHQpLGw9ITA7ZWxzZXt2YXIgYz1mKG51bGwsbnVs
bCx0LHIsZSkscD10Lmhvb2tzLmxvb2t1cEhlbHBlcih0LHIsbiksaD10Lmhvb2tzLmludm9rZUhl
bHBlcihlLHQscixzLG8sYSxwLGMudGVtcGxhdGVzLGQoYy50ZW1wbGF0ZXMpKTtoJiZoLmxpbmsm
JihlLmxpbmtlZFJlc3VsdD1oLnZhbHVlLGkubGlua1BhcmFtcyh0LHIsZSwiQGNvbnRlbnQtaGVs
cGVyIixbZS5saW5rZWRSZXN1bHRdLG51bGwpKSxoJiYidmFsdWUiaW4gaCYmKHU9dC5ob29rcy5n
ZXRWYWx1ZShoLnZhbHVlKSxsPSEwKX1sJiYoZS5sYXN0VmFsdWUhPT11JiZlLnNldENvbnRlbnQo
dSksZS5sYXN0VmFsdWU9dSl9fWZ1bmN0aW9uIEEoZSx0LHIsbixpLG8sYSxzLHUpe08oZSx0LHIs
bixpLG8sYSxzLHUpfWZ1bmN0aW9uIFAoZSx0LHIsbixpLG8sYSxzLHUpe3ZhciBsPWoodCxpKSxj
PVIodCxvKTtyZXR1cm57dmFsdWU6YS5jYWxsKHUsbCxjLHMpfX1mdW5jdGlvbiBqKGUsdCl7Zm9y
KHZhciByPW5ldyBBcnJheSh0Lmxlbmd0aCksbj0wLGk9dC5sZW5ndGg7bjxpO24rKylyW25dPWUu
aG9va3MuZ2V0Q2VsbE9yVmFsdWUodFtuXSk7cmV0dXJuIHJ9ZnVuY3Rpb24gUihlLHQpe3ZhciBy
PXt9O2Zvcih2YXIgbiBpbiB0KXJbbl09ZS5ob29rcy5nZXRDZWxsT3JWYWx1ZSh0W25dKTtyZXR1
cm4gcn1mdW5jdGlvbiBMKCl7cmV0dXJuIG51bGx9ZnVuY3Rpb24gRChlLHQscixuKXt2YXIgaT10
LnBhcnRpYWxzW25dO3JldHVybiBpLnJlbmRlcihyLnNlbGYsdCx7fSkuZnJhZ21lbnR9ZnVuY3Rp
b24gTShlLHQscixuLGksbyl7RShlLHQscixuLFtdLHt9LG51bGwsbnVsbCxvKXx8KGk9dC5ob29r
cy5nZXRWYWx1ZShpKSxlLmxhc3RWYWx1ZSE9PWkmJmUuc2V0Q29udGVudChpKSxlLmxhc3RWYWx1
ZT1pKX1mdW5jdGlvbiBJKGUsdCxyLG4saSxvLGEpe2lmKCFFKGUsdCxyLG4saSxvLG51bGwsbnVs
bCxhKSl7dmFyIHM9dC5ob29rcy5sb29rdXBIZWxwZXIodCxyLG4pO3MmJnQuaG9va3MuaW52b2tl
SGVscGVyKG51bGwsdCxyLG51bGwsaSxvLHMse2VsZW1lbnQ6ZS5lbGVtZW50fSl9fWZ1bmN0aW9u
IEYoZSx0LHIsbixpKXtpPXQuaG9va3MuZ2V0VmFsdWUoaSksZS5sYXN0VmFsdWUhPT1pJiZlLnNl
dENvbnRlbnQoaSksZS5sYXN0VmFsdWU9aX1mdW5jdGlvbiBIKGUsdCxyLG4saSl7dmFyIG89ZS5o
b29rcy5sb29rdXBIZWxwZXIoZSx0LHIpLGE9ZS5ob29rcy5pbnZva2VIZWxwZXIobnVsbCxlLHQs
bnVsbCxuLGksbyx7fSk7aWYoYSYmInZhbHVlImluIGEpcmV0dXJuIGUuaG9va3MuZ2V0VmFsdWUo
YS52YWx1ZSl9ZnVuY3Rpb24gVihlLHQscil7aWYoIiI9PT1yKXJldHVybiB0LnNlbGY7Zm9yKHZh
ciBuPXIuc3BsaXQoIi4iKSxpPWUuaG9va3MuZ2V0Um9vdCh0LG5bMF0pWzBdLG89MTtvPG4ubGVu
Z3RoJiZpO28rKylpPWUuaG9va3MuZ2V0Q2hpbGQoaSxuW29dKTtyZXR1cm4gaX1mdW5jdGlvbiBx
KGUsdCl7cmV0dXJuIGUubG9jYWxQcmVzZW50W3RdP1tlLmxvY2Fsc1t0XV06ZS5zZWxmP1tlLnNl
bGZbdF1dOlt2b2lkIDBdfWZ1bmN0aW9uIHooZSx0KXtyZXR1cm4gZS5ibG9ja3NbdF19ZnVuY3Rp
b24gQihlLHQpe3JldHVybiBlW3RdfWZ1bmN0aW9uIFUoZSl7cmV0dXJuIGV9ZnVuY3Rpb24gVyhl
KXtyZXR1cm4gZX1mdW5jdGlvbiAkKGUsdCxyLG4saSxvLGEscyl7cmV0dXJuIHQuaG9va3MuaGFz
SGVscGVyKHQscixuKT90Lmhvb2tzLmJsb2NrKGUsdCxyLG4saSxvLGEuZGVmYXVsdCxhLmludmVy
c2Uscyk6dm9pZCBRKGUsdCxyLG4sbyxhLmRlZmF1bHQpfWZ1bmN0aW9uIEsoZSx0KXtmb3IodmFy
IHI9IiIsbj0wLGk9dC5sZW5ndGg7bjxpO24rKylyKz1lLmhvb2tzLmdldFZhbHVlKHRbbl0pO3Jl
dHVybiByfWZ1bmN0aW9uIFEoZSxyLG4saSxvLGEpe3ZhciBzPXIuZG9tLmNyZWF0ZUVsZW1lbnQo
aSk7Zm9yKHZhciB1IGluIG8pcy5zZXRBdHRyaWJ1dGUodSxyLmhvb2tzLmdldFZhbHVlKG9bdV0p
KTt2YXIgbD10LmRlZmF1bHQoYSxyLG4se30pLmZyYWdtZW50O3MuYXBwZW5kQ2hpbGQobCksZS5z
ZXROb2RlKHMpfWZ1bmN0aW9uIEcoZSx0LHIpe3JldHVybiB2b2lkIDAhPT1lLmhlbHBlcnNbcl19
ZnVuY3Rpb24gWShlLHQscil7cmV0dXJuIGUuaGVscGVyc1tyXX1mdW5jdGlvbiBYKCl7fWZ1bmN0
aW9uIEooZSx0KXtlLmhvb2tzLmJpbmRTY29wZShlLHQpfWUud3JhcD1hLGUud3JhcEZvckhlbHBl
cj1zLGUuY3JlYXRlU2NvcGU9cCxlLmNyZWF0ZUZyZXNoU2NvcGU9aCxlLmJpbmRTaGFkb3dTY29w
ZT1tLGUuY3JlYXRlQ2hpbGRTY29wZT12LGUuYmluZFNlbGY9YixlLnVwZGF0ZVNlbGY9ZyxlLmJp
bmRMb2NhbD15LGUudXBkYXRlTG9jYWw9XyxlLmJpbmRCbG9jaz13LGUuYmxvY2s9eCxlLmNvbnRp
bnVlQmxvY2s9ayxlLmhvc3RCbG9jaz1DLGUuaGFuZGxlUmVkaXJlY3Q9RSxlLmhhbmRsZUtleXdv
cmQ9TyxlLmxpbmtSZW5kZXJOb2RlPU4sZS5pbmxpbmU9UyxlLmtleXdvcmQ9QSxlLmludm9rZUhl
bHBlcj1QLGUuY2xhc3NpZnk9TCxlLnBhcnRpYWw9RCxlLnJhbmdlPU0sZS5lbGVtZW50PUksZS5h
dHRyaWJ1dGU9RixlLnN1YmV4cHI9SCxlLmdldD1WLGUuZ2V0Um9vdD1xLGUuZ2V0QmxvY2s9eixl
LmdldENoaWxkPUIsZS5nZXRWYWx1ZT1VLGUuZ2V0Q2VsbE9yVmFsdWU9VyxlLmNvbXBvbmVudD0k
LGUuY29uY2F0PUssZS5oYXNIZWxwZXI9RyxlLmxvb2t1cEhlbHBlcj1ZLGUuYmluZFNjb3BlPVgs
ZS51cGRhdGVTY29wZT1KO3ZhciBaPXtwYXJ0aWFsOmZ1bmN0aW9uKGUsdCxyLG4pe3ZhciBpPXQu
aG9va3MucGFydGlhbChlLHQscixuWzBdKTtyZXR1cm4gZS5zZXRDb250ZW50KGkpLCEwfSx5aWVs
ZDpmdW5jdGlvbihlLHQscixuLGksbyxhLHMpe3ZhciB1PXQuaG9va3MuZ2V0VmFsdWUoaS50byl8
fCJkZWZhdWx0IixsPXQuaG9va3MuZ2V0QmxvY2socix1KTtyZXR1cm4gbCYmbC5pbnZva2UodCxu
LGkuc2VsZixlLHIscyksITB9LGhhc0Jsb2NrOmZ1bmN0aW9uKGUsdCxyLG4pe3ZhciBpPXQuaG9v
a3MuZ2V0VmFsdWUoblswXSl8fCJkZWZhdWx0IjtyZXR1cm4hIXQuaG9va3MuZ2V0QmxvY2socixp
KX0saGFzQmxvY2tQYXJhbXM6ZnVuY3Rpb24oZSx0LHIsbil7dmFyIGk9dC5ob29rcy5nZXRWYWx1
ZShuWzBdKXx8ImRlZmF1bHQiLG89dC5ob29rcy5nZXRCbG9jayhyLGkpO3JldHVybiEoIW98fCFv
LmFyaXR5KX19O2Uua2V5d29yZHM9WixlLmRlZmF1bHQ9e2JpbmRMb2NhbDp5LGJpbmRTZWxmOmIs
YmluZFNjb3BlOlgsY2xhc3NpZnk6TCxjb21wb25lbnQ6JCxjb25jYXQ6SyxjcmVhdGVGcmVzaFNj
b3BlOmgsZ2V0Q2hpbGQ6QixnZXRSb290OnEsZ2V0QmxvY2s6eixnZXRWYWx1ZTpVLGdldENlbGxP
clZhbHVlOlcsa2V5d29yZHM6WixsaW5rUmVuZGVyTm9kZTpOLHBhcnRpYWw6RCxzdWJleHByOkgs
YmluZEJsb2NrOncsYmluZFNoYWRvd1Njb3BlOm0sdXBkYXRlTG9jYWw6Xyx1cGRhdGVTZWxmOmcs
dXBkYXRlU2NvcGU6SixjcmVhdGVDaGlsZFNjb3BlOnYsaGFzSGVscGVyOkcsbG9va3VwSGVscGVy
OlksaW52b2tlSGVscGVyOlAsY2xlYW51cFJlbmRlck5vZGU6bnVsbCxkZXN0cm95UmVuZGVyTm9k
ZTpudWxsLHdpbGxDbGVhbnVwVHJlZTpudWxsLGRpZENsZWFudXBUcmVlOm51bGwsd2lsbFJlbmRl
ck5vZGU6bnVsbCxkaWRSZW5kZXJOb2RlOm51bGwsYXR0cmlidXRlOkYsYmxvY2s6eCxjcmVhdGVT
Y29wZTpwLGVsZW1lbnQ6SSxnZXQ6VixpbmxpbmU6UyxyYW5nZTpNLGtleXdvcmQ6QX19KSxlKCJo
dG1sYmFycy1ydW50aW1lL21vcnBoIixbImV4cG9ydHMiLCJtb3JwaC1yYW5nZSJdLGZ1bmN0aW9u
KGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXt0aGlzLnN1cGVyJGNvbnN0cnVjdG9y
KGUsdCksdGhpcy5fc3RhdGU9dm9pZCAwLHRoaXMub3duZXJOb2RlPW51bGwsdGhpcy5pc0RpcnR5
PSExLHRoaXMuaXNTdWJ0cmVlRGlydHk9ITEsdGhpcy5sYXN0WWllbGRlZD1udWxsLHRoaXMubGFz
dFJlc3VsdD1udWxsLHRoaXMubGFzdFZhbHVlPW51bGwsCit0aGlzLmJ1aWxkQ2hpbGRFbnY9bnVs
bCx0aGlzLm1vcnBoTGlzdD1udWxsLHRoaXMubW9ycGhNYXA9bnVsbCx0aGlzLmtleT1udWxsLHRo
aXMubGlua2VkUGFyYW1zPW51bGwsdGhpcy5saW5rZWRSZXN1bHQ9bnVsbCx0aGlzLmNoaWxkTm9k
ZXM9bnVsbCx0aGlzLnJlbmRlcmVkPSExLHRoaXMuZ3VpZD0icmFuZ2UiK24rKyx0aGlzLnNlZW49
ITF9dmFyIG49MTtyLmVtcHR5PWZ1bmN0aW9uKGUsdCl7dmFyIG49bmV3IHIoZSx0KTtyZXR1cm4g
bi5jbGVhcigpLG59LHIuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgaT1uZXcgcihlLHQpO3Jl
dHVybiBpLnNldE5vZGUobiksaX0sci5hdHRhY2g9ZnVuY3Rpb24oZSx0LG4saSl7dmFyIG89bmV3
IHIoZSx0KTtyZXR1cm4gby5zZXRSYW5nZShuLGkpLG99O3ZhciBpPXIucHJvdG90eXBlPU9iamVj
dC5jcmVhdGUodC5kZWZhdWx0LnByb3RvdHlwZSk7aS5jb25zdHJ1Y3Rvcj1yLGkuc3VwZXIkY29u
c3RydWN0b3I9dC5kZWZhdWx0LGkuZ2V0U3RhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3Rh
dGV8fCh0aGlzLl9zdGF0ZT17fSksdGhpcy5fc3RhdGV9LGkuc2V0U3RhdGU9ZnVuY3Rpb24oZSl7
cmV0dXJuIHRoaXMuX3N0YXRlPWV9LGUuZGVmYXVsdD1yfSksZSgiaHRtbGJhcnMtcnVudGltZS9u
b2RlLXZpc2l0b3IiLFsiZXhwb3J0cyIsImh0bWxiYXJzLXV0aWwvbW9ycGgtdXRpbHMiLCJodG1s
YmFycy1ydW50aW1lL2V4cHJlc3Npb24tdmlzaXRvciJdLGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gbihlLG4saSxvLGEscyl7cmV0dXJuIGkubGlua2VkUGFyYW1zPyhhPWku
bGlua2VkUGFyYW1zLnBhcmFtcyxzPWkubGlua2VkUGFyYW1zLmhhc2gpOihhPWEmJnIuYWNjZXB0
UGFyYW1zKGEsZSxuKSxzPXMmJnIuYWNjZXB0SGFzaChzLGUsbikpLHQubGlua1BhcmFtcyhlLG4s
aSxvLGEscyksW2Esc119ZnVuY3Rpb24gaShlLHIsbixpKXt2YXIgbz1yLmlzRGlydHkscz1yLmlz
U3VidHJlZURpcnR5LHU9ZTtzJiYobj1hKSxvfHxzP2kobik6KHIuYnVpbGRDaGlsZEVudiYmKHU9
ci5idWlsZENoaWxkRW52KHIuZ2V0U3RhdGUoKSx1KSksdC52YWxpZGF0ZUNoaWxkTW9ycGhzKHUs
cixuKSl9ZnVuY3Rpb24gbyhlLHQscil7cmV0dXJuIHZvaWQgMCE9PWUuaG9va3Mua2V5d29yZHNb
cl18fGUuaG9va3MuaGFzSGVscGVyKGUsdCxyKX12YXIgYT17YmxvY2s6ZnVuY3Rpb24oZSx0LHIs
aSxvLGEpe3ZhciBzPWVbMV0sdT1lWzJdLGw9ZVszXSxjPWVbNF0sZj1lWzVdLGQ9bihyLGksdCxz
LHUsbCk7dC5pc0RpcnR5PXQuaXNTdWJ0cmVlRGlydHk9ITEsci5ob29rcy5ibG9jayh0LHIsaSxz
LGRbMF0sZFsxXSxudWxsPT09Yz9udWxsOm8udGVtcGxhdGVzW2NdLG51bGw9PT1mP251bGw6by50
ZW1wbGF0ZXNbZl0sYSl9LGlubGluZTpmdW5jdGlvbihlLHQscixpLG8pe3ZhciBhPWVbMV0scz1l
WzJdLHU9ZVszXSxsPW4ocixpLHQsYSxzLHUpO3QuaXNEaXJ0eT10LmlzU3VidHJlZURpcnR5PSEx
LHIuaG9va3MuaW5saW5lKHQscixpLGEsbFswXSxsWzFdLG8pfSxjb250ZW50OmZ1bmN0aW9uKGUs
cixuLGksYSl7dmFyIHM9ZVsxXTtpZihyLmlzRGlydHk9ci5pc1N1YnRyZWVEaXJ0eT0hMSxvKG4s
aSxzKSlyZXR1cm4gbi5ob29rcy5pbmxpbmUocixuLGkscyxbXSx7fSxhKSx2b2lkKHIubGlua2Vk
UmVzdWx0JiZ0LmxpbmtQYXJhbXMobixpLHIsIkBjb250ZW50LWhlbHBlciIsW3IubGlua2VkUmVz
dWx0XSxudWxsKSk7dmFyIHU9dm9pZCAwO3U9ci5saW5rZWRQYXJhbXM/ci5saW5rZWRQYXJhbXMu
cGFyYW1zOltuLmhvb2tzLmdldChuLGkscyldLHQubGlua1BhcmFtcyhuLGksciwiQHJhbmdlIix1
LG51bGwpLG4uaG9va3MucmFuZ2UocixuLGkscyx1WzBdLGEpfSxlbGVtZW50OmZ1bmN0aW9uKGUs
dCxyLGksbyl7dmFyIGE9ZVsxXSxzPWVbMl0sdT1lWzNdLGw9bihyLGksdCxhLHMsdSk7dC5pc0Rp
cnR5PXQuaXNTdWJ0cmVlRGlydHk9ITEsci5ob29rcy5lbGVtZW50KHQscixpLGEsbFswXSxsWzFd
LG8pfSxhdHRyaWJ1dGU6ZnVuY3Rpb24oZSx0LHIsaSl7dmFyIG89ZVsxXSxhPWVbMl0scz1uKHIs
aSx0LCJAYXR0cmlidXRlIixbYV0sbnVsbCk7dC5pc0RpcnR5PXQuaXNTdWJ0cmVlRGlydHk9ITEs
ci5ob29rcy5hdHRyaWJ1dGUodCxyLGksbyxzWzBdWzBdKX0sY29tcG9uZW50OmZ1bmN0aW9uKGUs
dCxyLGksbyxhKXt2YXIgcz1lWzFdLHU9ZVsyXSxsPWVbM10sYz1lWzRdLGY9bihyLGksdCxzLFtd
LHUpLGQ9e2RlZmF1bHQ6by50ZW1wbGF0ZXNbbF0saW52ZXJzZTpvLnRlbXBsYXRlc1tjXX07dC5p
c0RpcnR5PXQuaXNTdWJ0cmVlRGlydHk9ITEsci5ob29rcy5jb21wb25lbnQodCxyLGkscyxmWzBd
LGZbMV0sZCxhKX0sYXR0cmlidXRlczpmdW5jdGlvbihlLHQscixuLGksbyl7dmFyIGE9ZVsxXTty
Lmhvb2tzLmF0dHJpYnV0ZXModCxyLG4sYSxpLG8pfX07ZS5BbHdheXNEaXJ0eVZpc2l0b3I9YSxl
LmRlZmF1bHQ9e2Jsb2NrOmZ1bmN0aW9uKGUsdCxyLG4sbyxzKXtpKHIsdCxzLGZ1bmN0aW9uKGkp
e2EuYmxvY2soZSx0LHIsbixvLGkpfSl9LGlubGluZTpmdW5jdGlvbihlLHQscixuLG8pe2kocix0
LG8sZnVuY3Rpb24oaSl7YS5pbmxpbmUoZSx0LHIsbixpKX0pfSxjb250ZW50OmZ1bmN0aW9uKGUs
dCxyLG4sbyl7aShyLHQsbyxmdW5jdGlvbihpKXthLmNvbnRlbnQoZSx0LHIsbixpKX0pfSxlbGVt
ZW50OmZ1bmN0aW9uKGUsdCxyLG4sbyxzKXtpKHIsdCxzLGZ1bmN0aW9uKGkpe2EuZWxlbWVudChl
LHQscixuLG8saSl9KX0sYXR0cmlidXRlOmZ1bmN0aW9uKGUsdCxyLG4sbyl7aShyLHQsbnVsbCxm
dW5jdGlvbigpe2EuYXR0cmlidXRlKGUsdCxyLG4sbyl9KX0sY29tcG9uZW50OmZ1bmN0aW9uKGUs
dCxyLG4sbyxzKXtpKHIsdCxzLGZ1bmN0aW9uKGkpe2EuY29tcG9uZW50KGUsdCxyLG4sbyxpKX0p
fSxhdHRyaWJ1dGVzOmZ1bmN0aW9uKGUsdCxyLG4saSxvKXthLmF0dHJpYnV0ZXMoZSx0LHIsbixp
LG8pfX19KSxlKCJodG1sYmFycy1ydW50aW1lL3JlbmRlciIsWyJleHBvcnRzIiwiaHRtbGJhcnMt
dXRpbC9tb3JwaC11dGlscyIsImh0bWxiYXJzLXJ1bnRpbWUvbm9kZS12aXNpdG9yIiwiaHRtbGJh
cnMtcnVudGltZS9tb3JwaCIsImh0bWxiYXJzLXV0aWwvdGVtcGxhdGUtdXRpbHMiLCJodG1sYmFy
cy11dGlsL3ZvaWQtdGFnLW5hbWVzIl0sZnVuY3Rpb24oZSx0LHIsbixpLG8peyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiBhKGUsdCxyLG4pe3ZhciBpLG89dC5kb207biYmKG4ucmVuZGVyTm9kZT9pPW4u
cmVuZGVyTm9kZS5jb250ZXh0dWFsRWxlbWVudDpuLmNvbnRleHR1YWxFbGVtZW50JiYoaT1uLmNv
bnRleHR1YWxFbGVtZW50KSksby5kZXRlY3ROYW1lc3BhY2UoaSk7dmFyIGE9dS5idWlsZCh0LHIs
ZSxuLGkpO3JldHVybiBhLnJlbmRlcigpLGF9ZnVuY3Rpb24gcyhlLHQscixuKXt0aGlzLnJlbmRl
ck5vZGU9ZXx8bnVsbCx0aGlzLnNlbGY9dCx0aGlzLmJsb2NrQXJndW1lbnRzPXJ8fG51bGwsdGhp
cy5jb250ZXh0dWFsRWxlbWVudD1ufHxudWxsfWZ1bmN0aW9uIHUoZSx0LHIsbixpLG8sYSxzLHUp
e3RoaXMucm9vdD1uLHRoaXMuZnJhZ21lbnQ9YSx0aGlzLm5vZGVzPW8sdGhpcy50ZW1wbGF0ZT1z
LHRoaXMuc3RhdGVtZW50cz1zLnN0YXRlbWVudHMuc2xpY2UoKSx0aGlzLmVudj1lLHRoaXMuc2Nv
cGU9dCx0aGlzLnNob3VsZFNldENvbnRlbnQ9dSx2b2lkIDAhPT1yLnNlbGYmJnRoaXMuYmluZFNl
bGYoci5zZWxmKSx2b2lkIDAhPT1yLmJsb2NrQXJndW1lbnRzJiZ0aGlzLmJpbmRMb2NhbHMoci5i
bG9ja0FyZ3VtZW50cyksdGhpcy5pbml0aWFsaXplTm9kZXMoaSl9ZnVuY3Rpb24gbChlLHQscil7
dmFyIG49W107Zm9yKHZhciBpIGluIHQpInN0cmluZyIhPXR5cGVvZiB0W2ldJiZuLnB1c2goWyJh
dHRyaWJ1dGUiLGksdFtpXV0pO3ZhciBhPXJ8fG8uZGVmYXVsdFtlXTthfHxuLnB1c2goWyJjb250
ZW50IiwieWllbGQiXSk7dmFyIHM9e2FyaXR5OjAsY2FjaGVkRnJhZ21lbnQ6bnVsbCxoYXNSZW5k
ZXJlZDohMSxidWlsZEZyYWdtZW50OmZ1bmN0aW9uKHIpe3ZhciBuPXIuY3JlYXRlRG9jdW1lbnRG
cmFnbWVudCgpOyJzdmciPT09ZSYmci5zZXROYW1lc3BhY2UoaCk7dmFyIGk9ci5jcmVhdGVFbGVt
ZW50KGUpO2Zvcih2YXIgbyBpbiB0KSJzdHJpbmciPT10eXBlb2YgdFtvXSYmci5zZXRBdHRyaWJ1
dGUoaSxvLHRbb10pO2lmKCFhKXt2YXIgcz1yLmNyZWF0ZUNvbW1lbnQoIiIpO3IuYXBwZW5kQ2hp
bGQoaSxzKX1yZXR1cm4gci5hcHBlbmRDaGlsZChuLGkpLG59LGJ1aWxkUmVuZGVyTm9kZXM6ZnVu
Y3Rpb24oZSxyKXt2YXIgbj1lLmNoaWxkQXQocixbMF0pLGk9W107Zm9yKHZhciBvIGluIHQpInN0
cmluZyIhPXR5cGVvZiB0W29dJiZpLnB1c2goZS5jcmVhdGVBdHRyTW9ycGgobixvKSk7cmV0dXJu
IGF8fGkucHVzaChlLmNyZWF0ZU1vcnBoQXQobiwwLDApKSxpfSxzdGF0ZW1lbnRzOm4sbG9jYWxz
OltdLHRlbXBsYXRlczpbXX07cmV0dXJuIHN9ZnVuY3Rpb24gYyhlKXt2YXIgdD1bXTtmb3IodmFy
IHIgaW4gZSkic3RyaW5nIiE9dHlwZW9mIGVbcl0mJnQucHVzaChbImF0dHJpYnV0ZSIscixlW3Jd
XSk7dmFyIG49e2FyaXR5OjAsY2FjaGVkRnJhZ21lbnQ6bnVsbCxoYXNSZW5kZXJlZDohMSxidWls
ZEZyYWdtZW50OmZ1bmN0aW9uKHQpe3ZhciByPXRoaXMuZWxlbWVudDsiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciPT09ci5uYW1lc3BhY2VVUkkmJnQuc2V0TmFtZXNwYWNlKGgpO2Zvcih2YXIg
biBpbiBlKSJzdHJpbmciPT10eXBlb2YgZVtuXSYmdC5zZXRBdHRyaWJ1dGUocixuLGVbbl0pO3Jl
dHVybiByfSxidWlsZFJlbmRlck5vZGVzOmZ1bmN0aW9uKHQpe3ZhciByPXRoaXMuZWxlbWVudCxu
PVtdO2Zvcih2YXIgaSBpbiBlKSJzdHJpbmciIT10eXBlb2YgZVtpXSYmbi5wdXNoKHQuY3JlYXRl
QXR0ck1vcnBoKHIsaSkpO3JldHVybiBufSxzdGF0ZW1lbnRzOnQsbG9jYWxzOltdLHRlbXBsYXRl
czpbXSxlbGVtZW50Om51bGx9O3JldHVybiBufWZ1bmN0aW9uIGYoZSx0KXtlLm93bmVyTm9kZT10
fWZ1bmN0aW9uIGQoZSx0LHIpe3ZhciBpPW4uZGVmYXVsdC5lbXB0eShlLHJ8fHQuY29udGV4dHVh
bEVsZW1lbnQpO3JldHVybiBmKGksdC5vd25lck5vZGUpLGl9ZnVuY3Rpb24gcChlLHQpe3ZhciBy
LG49dC5kb207cmV0dXJuIHQudXNlRnJhZ21lbnRDYWNoZSYmbi5jYW5DbG9uZT8obnVsbD09PWUu
Y2FjaGVkRnJhZ21lbnQmJihyPWUuYnVpbGRGcmFnbWVudChuKSxlLmhhc1JlbmRlcmVkP2UuY2Fj
aGVkRnJhZ21lbnQ9cjplLmhhc1JlbmRlcmVkPSEwKSxlLmNhY2hlZEZyYWdtZW50JiYocj1uLmNs
b25lTm9kZShlLmNhY2hlZEZyYWdtZW50LCEwKSkpOnJ8fChyPWUuYnVpbGRGcmFnbWVudChuKSks
cn1lLmRlZmF1bHQ9YSxlLlJlbmRlck9wdGlvbnM9cyxlLm1hbnVhbEVsZW1lbnQ9bCxlLmF0dGFj
aEF0dHJpYnV0ZXM9YyxlLmNyZWF0ZUNoaWxkTW9ycGg9ZCxlLmdldENhY2hlZEZyYWdtZW50PXA7
dmFyIGg9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIjt1LmJ1aWxkPWZ1bmN0aW9uKGUscixu
LG8sYSl7dmFyIHMsbCxjLGY9ZS5kb20sZD1wKG4sZSksaD1uLmJ1aWxkUmVuZGVyTm9kZXMoZixk
LGEpO3JldHVybiBvJiZvLnJlbmRlck5vZGU/KHM9by5yZW5kZXJOb2RlLGw9cy5vd25lck5vZGUs
Yz0hMCk6KHM9Zi5jcmVhdGVNb3JwaChudWxsLGQuZmlyc3RDaGlsZCxkLmxhc3RDaGlsZCxhKSxs
PXMscy5vd25lck5vZGU9bCxjPSExKSxzLmNoaWxkTm9kZXMmJnQudmlzaXRDaGlsZHJlbihzLmNo
aWxkTm9kZXMsZnVuY3Rpb24odCl7aS5jbGVhck1vcnBoKHQsZSwhMCl9KSxzLmNoaWxkTm9kZXM9
aCxuZXcgdShlLHIsbyxzLGwsaCxkLG4sYyl9LHUucHJvdG90eXBlLmluaXRpYWxpemVOb2Rlcz1m
dW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy5yb290LmNoaWxkTm9kZXMscj0wLG49dC5sZW5ndGg7
cjxuO3IrKyl0W3JdLm93bmVyTm9kZT1lfSx1LnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXt0
aGlzLnJvb3QubGFzdFJlc3VsdD10aGlzLHRoaXMucm9vdC5yZW5kZXJlZD0hMCx0aGlzLnBvcHVs
YXRlTm9kZXMoci5BbHdheXNEaXJ0eVZpc2l0b3IpLHRoaXMuc2hvdWxkU2V0Q29udGVudCYmdGhp
cy5yb290LnNldENvbnRlbnQmJnRoaXMucm9vdC5zZXRDb250ZW50KHRoaXMuZnJhZ21lbnQpfSx1
LnByb3RvdHlwZS5kaXJ0eT1mdW5jdGlvbigpe3QudmlzaXRDaGlsZHJlbihbdGhpcy5yb290XSxm
dW5jdGlvbihlKXtlLmlzRGlydHk9ITB9KX0sdS5wcm90b3R5cGUucmV2YWxpZGF0ZT1mdW5jdGlv
bihlLHQsbixpKXt0aGlzLnJldmFsaWRhdGVXaXRoKGUsaSx0LG4sci5kZWZhdWx0KX0sdS5wcm90
b3R5cGUucmVyZW5kZXI9ZnVuY3Rpb24oZSx0LG4saSl7dGhpcy5yZXZhbGlkYXRlV2l0aChlLGks
dCxuLHIuQWx3YXlzRGlydHlWaXNpdG9yKX0sdS5wcm90b3R5cGUucmV2YWxpZGF0ZVdpdGg9ZnVu
Y3Rpb24oZSx0LHIsbixpKXt2b2lkIDAhPT1lJiYodGhpcy5lbnY9ZSksdm9pZCAwIT09dCYmKHRo
aXMuc2NvcGU9dCksdGhpcy51cGRhdGVTY29wZSgpLHZvaWQgMCE9PXImJnRoaXMudXBkYXRlU2Vs
ZihyKSx2b2lkIDAhPT1uJiZ0aGlzLnVwZGF0ZUxvY2FscyhuKSx0aGlzLnBvcHVsYXRlTm9kZXMo
aSl9LHUucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnJvb3Q7aS5jbGVh
ck1vcnBoKGUsdGhpcy5lbnYsITApfSx1LnByb3RvdHlwZS5wb3B1bGF0ZU5vZGVzPWZ1bmN0aW9u
KGUpe3ZhciB0LHIsbj10aGlzLmVudixpPXRoaXMuc2NvcGUsbz10aGlzLnRlbXBsYXRlLGE9dGhp
cy5ub2RlcyxzPXRoaXMuc3RhdGVtZW50cztmb3IodD0wLHI9cy5sZW5ndGg7dDxyO3QrKyl7dmFy
IHU9c1t0XSxsPWFbdF07c3dpdGNoKG4uaG9va3Mud2lsbFJlbmRlck5vZGUmJm4uaG9va3Mud2ls
bFJlbmRlck5vZGUobCxuLGkpLHVbMF0pe2Nhc2UiYmxvY2siOmUuYmxvY2sodSxsLG4saSxvLGUp
O2JyZWFrO2Nhc2UiaW5saW5lIjplLmlubGluZSh1LGwsbixpLGUpO2JyZWFrO2Nhc2UiY29udGVu
dCI6ZS5jb250ZW50KHUsbCxuLGksZSk7YnJlYWs7Y2FzZSJlbGVtZW50IjplLmVsZW1lbnQodSxs
LG4saSxvLGUpO2JyZWFrO2Nhc2UiYXR0cmlidXRlIjplLmF0dHJpYnV0ZSh1LGwsbixpKTticmVh
aztjYXNlImNvbXBvbmVudCI6ZS5jb21wb25lbnQodSxsLG4saSxvLGUpfW4uaG9va3MuZGlkUmVu
ZGVyTm9kZSYmbi5ob29rcy5kaWRSZW5kZXJOb2RlKGwsbixpKX19LHUucHJvdG90eXBlLmJpbmRT
Y29wZT1mdW5jdGlvbigpe3RoaXMuZW52Lmhvb2tzLmJpbmRTY29wZSh0aGlzLmVudix0aGlzLnNj
b3BlKX0sdS5wcm90b3R5cGUudXBkYXRlU2NvcGU9ZnVuY3Rpb24oKXt0aGlzLmVudi5ob29rcy51
cGRhdGVTY29wZSh0aGlzLmVudix0aGlzLnNjb3BlKX0sdS5wcm90b3R5cGUuYmluZFNlbGY9ZnVu
Y3Rpb24oZSl7dGhpcy5lbnYuaG9va3MuYmluZFNlbGYodGhpcy5lbnYsdGhpcy5zY29wZSxlKX0s
dS5wcm90b3R5cGUudXBkYXRlU2VsZj1mdW5jdGlvbihlKXt0aGlzLmVudi5ob29rcy51cGRhdGVT
ZWxmKHRoaXMuZW52LHRoaXMuc2NvcGUsZSl9LHUucHJvdG90eXBlLmJpbmRMb2NhbHM9ZnVuY3Rp
b24oZSl7Zm9yKHZhciB0PXRoaXMudGVtcGxhdGUubG9jYWxzLHI9MCxuPXQubGVuZ3RoO3I8bjty
KyspdGhpcy5lbnYuaG9va3MuYmluZExvY2FsKHRoaXMuZW52LHRoaXMuc2NvcGUsdFtyXSxlW3Jd
KX0sdS5wcm90b3R5cGUudXBkYXRlTG9jYWxzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLnRl
bXBsYXRlLmxvY2FscyxyPTAsbj10Lmxlbmd0aDtyPG47cisrKXRoaXMuZW52Lmhvb2tzLnVwZGF0
ZUxvY2FsKHRoaXMuZW52LHRoaXMuc2NvcGUsdFtyXSxlW3JdKX19KSxlKCJodG1sYmFycy11dGls
IixbImV4cG9ydHMiLCJodG1sYmFycy11dGlsL3NhZmUtc3RyaW5nIiwiaHRtbGJhcnMtdXRpbC9o
YW5kbGViYXJzL3V0aWxzIiwiaHRtbGJhcnMtdXRpbC9uYW1lc3BhY2VzIiwiaHRtbGJhcnMtdXRp
bC9tb3JwaC11dGlscyJdLGZ1bmN0aW9uKGUsdCxyLG4saSl7InVzZSBzdHJpY3QiO2UuU2FmZVN0
cmluZz10LmRlZmF1bHQsZS5lc2NhcGVFeHByZXNzaW9uPXIuZXNjYXBlRXhwcmVzc2lvbixlLmdl
dEF0dHJOYW1lc3BhY2U9bi5nZXRBdHRyTmFtZXNwYWNlLGUudmFsaWRhdGVDaGlsZE1vcnBocz1p
LnZhbGlkYXRlQ2hpbGRNb3JwaHMsZS5saW5rUGFyYW1zPWkubGlua1BhcmFtcyxlLmR1bXA9aS5k
dW1wfSksZSgiaHRtbGJhcnMtdXRpbC9hcnJheS11dGlscyIsWyJleHBvcnRzIl0sZnVuY3Rpb24o
ZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHQoZSx0LHIpe3ZhciBuLGk7aWYodm9pZCAwPT09cilm
b3Iobj0wLGk9ZS5sZW5ndGg7bjxpO24rKyl0KGVbbl0sbixlKTtlbHNlIGZvcihuPTAsaT1lLmxl
bmd0aDtuPGk7bisrKXQuY2FsbChyLGVbbl0sbixlKX1mdW5jdGlvbiByKGUsdCl7dmFyIHIsbixp
PVtdO2ZvcihyPTAsbj1lLmxlbmd0aDtyPG47cisrKWkucHVzaCh0KGVbcl0scixlKSk7cmV0dXJu
IGl9ZS5mb3JFYWNoPXQsZS5tYXA9cjt2YXIgbjtuPUFycmF5LnByb3RvdHlwZS5pbmRleE9mP2Z1
bmN0aW9uKGUsdCxyKXtyZXR1cm4gZS5pbmRleE9mKHQscil9OmZ1bmN0aW9uKGUsdCxyKXt2b2lk
IDA9PT1yfHxudWxsPT09cj9yPTA6cjwwJiYocj1NYXRoLm1heCgwLGUubGVuZ3RoK3IpKTtmb3Io
dmFyIG49cixpPWUubGVuZ3RoO248aTtuKyspaWYoZVtuXT09PXQpcmV0dXJuIG47cmV0dXJuLTF9
O3ZhciBpPUFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKGUpe3JldHVybiJbb2JqZWN0IEFycmF5XSI9
PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSl9O2UuaXNBcnJheT1pO3ZhciBvPW47
ZS5pbmRleE9mQXJyYXk9b30pLGUoImh0bWxiYXJzLXV0aWwvaGFuZGxlYmFycy9zYWZlLXN0cmlu
ZyIsWyJleHBvcnRzIl0sZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHQoZSl7dGhp
cy5zdHJpbmc9ZX10LnByb3RvdHlwZS50b1N0cmluZz10LnByb3RvdHlwZS50b0hUTUw9ZnVuY3Rp
b24oKXtyZXR1cm4iIit0aGlzLnN0cmluZ30sZS5kZWZhdWx0PXR9KSxlKCJodG1sYmFycy11dGls
L2hhbmRsZWJhcnMvdXRpbHMiLFsiZXhwb3J0cyJdLGZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiB0KGUpe3JldHVybiB1W2VdfWZ1bmN0aW9uIHIoZSl7Zm9yKHZhciB0PTE7dDxhcmd1
bWVudHMubGVuZ3RoO3QrKylmb3IodmFyIHIgaW4gYXJndW1lbnRzW3RdKU9iamVjdC5wcm90b3R5
cGUuaGFzT3duUHJvcGVydHkuY2FsbChhcmd1bWVudHNbdF0scikmJihlW3JdPWFyZ3VtZW50c1t0
XVtyXSk7cmV0dXJuIGV9ZnVuY3Rpb24gbihlLHQpe2Zvcih2YXIgcj0wLG49ZS5sZW5ndGg7cjxu
O3IrKylpZihlW3JdPT09dClyZXR1cm4gcjtyZXR1cm4tMX1mdW5jdGlvbiBpKGUpe2lmKCJzdHJp
bmciIT10eXBlb2YgZSl7aWYoZSYmZS50b0hUTUwpcmV0dXJuIGUudG9IVE1MKCk7aWYobnVsbD09
ZSlyZXR1cm4iIjtpZighZSlyZXR1cm4gZSsiIjtlPSIiK2V9cmV0dXJuIGMudGVzdChlKT9lLnJl
cGxhY2UobCx0KTplfWZ1bmN0aW9uIG8oZSl7cmV0dXJuIWUmJjAhPT1lfHwhKCFwKGUpfHwwIT09
ZS5sZW5ndGgpfWZ1bmN0aW9uIGEoZSx0KXtyZXR1cm4gZS5wYXRoPXQsZX1mdW5jdGlvbiBzKGUs
dCl7cmV0dXJuKGU/ZSsiLiI6IiIpK3R9ZS5leHRlbmQ9cixlLmluZGV4T2Y9bixlLmVzY2FwZUV4
cHJlc3Npb249aSxlLmlzRW1wdHk9byxlLmJsb2NrUGFyYW1zPWEsZS5hcHBlbmRDb250ZXh0UGF0
aD1zO3ZhciB1PXsiJiI6IiZhbXA7IiwiPCI6IiZsdDsiLCI+IjoiJmd0OyIsJyInOiImcXVvdDsi
LCInIjoiJiN4Mjc7IiwiYCI6IiYjeDYwOyJ9LGw9L1smPD4iJ2BdL2csYz0vWyY8PiInYF0vLGY9
T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztlLnRvU3RyaW5nPWY7dmFyIGQ9ZnVuY3Rpb24oZSl7
cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGV9O2QoL3gvKSYmKGUuaXNGdW5jdGlvbj1kPWZ1bmN0
aW9uKGUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlJiYiW29iamVjdCBGdW5jdGlvbl0iPT09
Zi5jYWxsKGUpfSk7dmFyIGQ7ZS5pc0Z1bmN0aW9uPWQ7dmFyIHA9QXJyYXkuaXNBcnJheXx8ZnVu
Y3Rpb24oZSl7cmV0dXJuISghZXx8Im9iamVjdCIhPXR5cGVvZiBlKSYmIltvYmplY3QgQXJyYXld
Ij09PWYuY2FsbChlKX07ZS5pc0FycmF5PXB9KSxlKCJodG1sYmFycy11dGlsL21vcnBoLXV0aWxz
IixbImV4cG9ydHMiXSxmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gdChlLHQpe2lm
KGUmJjAhPT1lLmxlbmd0aClmb3IoZT1lLnNsaWNlKCk7ZS5sZW5ndGg7KXt2YXIgcj1lLnBvcCgp
O2lmKHQociksci5jaGlsZE5vZGVzKWUucHVzaC5hcHBseShlLHIuY2hpbGROb2Rlcyk7ZWxzZSBp
ZihyLmZpcnN0Q2hpbGRNb3JwaClmb3IodmFyIG49ci5maXJzdENoaWxkTW9ycGg7bjspZS5wdXNo
KG4pLG49bi5uZXh0TW9ycGg7ZWxzZSBpZihyLm1vcnBoTGlzdClmb3IodmFyIG49ci5tb3JwaExp
c3QuZmlyc3RDaGlsZE1vcnBoO247KWUucHVzaChuKSxuPW4ubmV4dE1vcnBofX1mdW5jdGlvbiBy
KGUsdCxuKXt2YXIgaT10Lm1vcnBoTGlzdDtpZih0Lm1vcnBoTGlzdClmb3IodmFyIG89aS5maXJz
dENoaWxkTW9ycGg7bzspe3ZhciBhPW8ubmV4dE1vcnBoO3IoZSxvLG4pLG89YX1lbHNlIGlmKHQu
bGFzdFJlc3VsdCl0Lmxhc3RSZXN1bHQucmV2YWxpZGF0ZVdpdGgoZSx2b2lkIDAsdm9pZCAwLHZv
aWQgMCxuKTtlbHNlIGlmKHQuY2hpbGROb2Rlcylmb3IodmFyIHM9MCx1PXQuY2hpbGROb2Rlcy5s
ZW5ndGg7czx1O3MrKylyKGUsdC5jaGlsZE5vZGVzW3NdLG4pfWZ1bmN0aW9uIG4oZSx0LHIsbixp
LG8pe3IubGlua2VkUGFyYW1zfHxlLmhvb2tzLmxpbmtSZW5kZXJOb2RlKHIsZSx0LG4saSxvKSYm
KHIubGlua2VkUGFyYW1zPXtwYXJhbXM6aSxoYXNoOm99KX1mdW5jdGlvbiBpKGUpe2lmKGNvbnNv
bGUuZ3JvdXAoZSxlLmlzRGlydHkpLGUuY2hpbGROb2RlcylvKGUuY2hpbGROb2RlcyxpKTtlbHNl
IGlmKGUuZmlyc3RDaGlsZE1vcnBoKWZvcih2YXIgdD1lLmZpcnN0Q2hpbGRNb3JwaDt0OylpKHQp
LHQ9dC5uZXh0TW9ycGg7ZWxzZSBlLm1vcnBoTGlzdCYmaShlLm1vcnBoTGlzdCk7Y29uc29sZS5n
cm91cEVuZCgpfWZ1bmN0aW9uIG8oZSx0KXtmb3IodmFyIHI9MCxuPWUubGVuZ3RoO3I8bjtyKysp
dChlW3JdKX1lLnZpc2l0Q2hpbGRyZW49dCxlLnZhbGlkYXRlQ2hpbGRNb3JwaHM9cixlLmxpbmtQ
YXJhbXM9bixlLmR1bXA9aX0pLGUoImh0bWxiYXJzLXV0aWwvbmFtZXNwYWNlcyIsWyJleHBvcnRz
Il0sZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHQoZSx0KXtpZih0KXJldHVybiB0
O3ZhciBuLGk9ZS5pbmRleE9mKCI6Iik7aWYoaSE9PS0xKXt2YXIgbz1lLnNsaWNlKDAsaSk7bj1y
W29dfXJldHVybiBufHxudWxsfWUuZ2V0QXR0ck5hbWVzcGFjZT10O3ZhciByPXtodG1sOiJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIixtYXRobWw6Imh0dHA6Ly93d3cudzMub3JnLzE5OTgv
TWF0aC9NYXRoTUwiLHN2ZzoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHhsaW5rOiJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIix4bWw6Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4
L25hbWVzcGFjZSJ9fSksZSgiaHRtbGJhcnMtdXRpbC9vYmplY3QtdXRpbHMiLFsiZXhwb3J0cyJd
LGZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB0KGUsdCl7Zm9yKHZhciByIGluIHQp
ZS5oYXNPd25Qcm9wZXJ0eShyKXx8KGVbcl09dFtyXSk7cmV0dXJuIGV9ZnVuY3Rpb24gcihlKXty
ZXR1cm4gdCh7fSxlKX1mdW5jdGlvbiBuKGUpe3ZhciB0PXt9O2Zvcih2YXIgciBpbiBlKWUuaGFz
T3duUHJvcGVydHkocikmJih0W3JdPSEwKTtyZXR1cm4gdH1mdW5jdGlvbiBpKGUpe3ZhciB0PTA7
Zm9yKHZhciByIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShyKSYmdCsrO3JldHVybiB0fWUubWVyZ2U9
dCxlLnNoYWxsb3dDb3B5PXIsZS5rZXlTZXQ9bixlLmtleUxlbmd0aD1pfSksZSgiaHRtbGJhcnMt
dXRpbC9xdW90aW5nIixbImV4cG9ydHMiXSxmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gdChlKXtyZXR1cm4gZT1lLnJlcGxhY2UoL1xcL2csIlxcXFwiKSxlPWUucmVwbGFjZSgvIi9n
LCdcXCInKSxlPWUucmVwbGFjZSgvXG4vZywiXFxuIil9ZnVuY3Rpb24gcihlKXtyZXR1cm4nIicr
dChlKSsnIid9ZnVuY3Rpb24gbihlKXtyZXR1cm4iWyIrZSsiXSJ9ZnVuY3Rpb24gaShlKXtyZXR1
cm4ieyIrZS5qb2luKCIsICIpKyJ9In1mdW5jdGlvbiBvKGUsdCl7Zm9yKHZhciByPSIiO3QtLTsp
cis9ZTtyZXR1cm4gcn1lLmhhc2g9aSxlLnJlcGVhdD1vLGUuZXNjYXBlU3RyaW5nPXQsZS5zdHJp
bmc9cixlLmFycmF5PW59KSxlKCJodG1sYmFycy11dGlsL3NhZmUtc3RyaW5nIixbImV4cG9ydHMi
LCJodG1sYmFycy11dGlsL2hhbmRsZWJhcnMvc2FmZS1zdHJpbmciXSxmdW5jdGlvbihlLHQpeyJ1
c2Ugc3RyaWN0IjtlLmRlZmF1bHQ9dC5kZWZhdWx0fSksZSgiaHRtbGJhcnMtdXRpbC90ZW1wbGF0
ZS11dGlscyIsWyJleHBvcnRzIiwiaHRtbGJhcnMtdXRpbC9tb3JwaC11dGlscyIsImh0bWxiYXJz
LXJ1bnRpbWUvcmVuZGVyIl0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBu
KGUsdCl7dGhpcy5tb3JwaExpc3RUb0NsZWFyPXQsdGhpcy5tb3JwaExpc3RUb1BydW5lPW51bGws
dGhpcy5oYW5kbGVkTW9ycGhzPXt9LHRoaXMuY29sbGlzaW9ucz12b2lkIDAsdGhpcy5tb3JwaFRv
Q2xlYXI9ZSx0aGlzLnNoYWRvd09wdGlvbnM9bnVsbH1mdW5jdGlvbiBpKGUsdCxyKXt0aGlzLnJl
bmRlcj1lLHRoaXMudGVtcGxhdGU9dCx0aGlzLmJsb2NrT3B0aW9ucz1yLHRoaXMuYXJpdHk9dC5h
cml0eX1mdW5jdGlvbiBvKGUsdCxyKXtyZXR1cm4gbmV3IGkoZSx0LHIpfWZ1bmN0aW9uIGEoZSx0
LHIpe2lmKHIpaWYociBpbnN0YW5jZW9mIGkpZS5ob29rcy5iaW5kQmxvY2soZSx0LHIpO2Vsc2Ug
Zm9yKHZhciBuIGluIHIpci5oYXNPd25Qcm9wZXJ0eShuKSYmZS5ob29rcy5iaW5kQmxvY2soZSx0
LHJbbl0sbil9ZnVuY3Rpb24gcyhlLHQscixuLGkpe3ZhciBvPXIucmVuZGVyU3RhdGU7by5jb2xs
aXNpb25zPXZvaWQgMCxvLnNoYWRvd09wdGlvbnM9bjt2YXIgYT1pKHIpO2lmKCFhfHwhYS5oYW5k
bGVkKXt2YXIgcz1lLm1vcnBoTWFwLGM9by5tb3JwaExpc3RUb1BydW5lO2lmKGMpZm9yKHZhciBm
PW8uaGFuZGxlZE1vcnBocyxkPWMuZmlyc3RDaGlsZE1vcnBoO2Q7KXt2YXIgcD1kLm5leHRNb3Jw
aDtkLmtleSBpbiBmfHwoc1tkLmtleV09dm9pZCAwLHUoZCx0LCEwKSxkLmRlc3Ryb3koKSksZD1w
fWM9by5tb3JwaExpc3RUb0NsZWFyLGMmJmwoYyxlLHQpO3ZhciBoPW8ubW9ycGhUb0NsZWFyO2gm
JnUoaCx0KX19ZnVuY3Rpb24gdShlLHIsbil7ZnVuY3Rpb24gaShlKXtvJiZvKGUpLGEmJmEoZSl9
dmFyIG89ci5ob29rcy5jbGVhbnVwUmVuZGVyTm9kZSxhPXIuaG9va3MuZGVzdHJveVJlbmRlck5v
ZGUscz1yLmhvb2tzLndpbGxDbGVhbnVwVHJlZSx1PXIuaG9va3MuZGlkQ2xlYW51cFRyZWU7cyYm
cyhyLGUsbiksbyYmbyhlKSxuJiZhJiZhKGUpLHQudmlzaXRDaGlsZHJlbihlLmNoaWxkTm9kZXMs
aSksZS5jbGVhcigpLHUmJnUocixlLG4pLGUubGFzdFJlc3VsdD1udWxsLGUubGFzdFlpZWxkZWQ9
bnVsbCxlLmNoaWxkTm9kZXM9bnVsbH1mdW5jdGlvbiBsKGUsdCxyKXtmb3IodmFyIG49ZS5maXJz
dENoaWxkTW9ycGg7bjspe3ZhciBpPW4ubmV4dE1vcnBoO3QubW9ycGhNYXBbbi5rZXldPXZvaWQg
MCx1KG4sciwhMCksbi5kZXN0cm95KCksbj1pfWUuY2xlYXIoKSx0Lm1vcnBoTGlzdD1udWxsfWUu
UmVuZGVyU3RhdGU9bixlLmJsb2NrRm9yPW8sZS5yZW5kZXJBbmRDbGVhbnVwPXMsZS5jbGVhck1v
cnBoPXUsZS5jbGVhck1vcnBoTGlzdD1sLGkucHJvdG90eXBlLmludm9rZT1mdW5jdGlvbihlLHQs
cixuLGksbyl7bi5sYXN0UmVzdWx0P24ubGFzdFJlc3VsdC5yZXZhbGlkYXRlV2l0aChlLHZvaWQg
MCxyLHQsbyk6dGhpcy5fZmlyc3RSZW5kZXIoZSx0LHIsbixpKX0saS5wcm90b3R5cGUuX2ZpcnN0
UmVuZGVyPWZ1bmN0aW9uKGUsdCxpLG8sdSl7dmFyIGw9e3JlbmRlclN0YXRlOm5ldyBuKG8pfSxj
PXRoaXMucmVuZGVyLGY9dGhpcy50ZW1wbGF0ZSxkPXRoaXMuYmxvY2tPcHRpb25zLnNjb3BlLHA9
ZD9lLmhvb2tzLmNyZWF0ZUNoaWxkU2NvcGUoZCk6ZS5ob29rcy5jcmVhdGVGcmVzaFNjb3BlKCk7
ZS5ob29rcy5iaW5kU2hhZG93U2NvcGUoZSx1LHAsdGhpcy5ibG9ja09wdGlvbnMub3B0aW9ucyks
dm9pZCAwIT09aT9lLmhvb2tzLmJpbmRTZWxmKGUscCxpKTp2b2lkIDAhPT10aGlzLmJsb2NrT3B0
aW9ucy5zZWxmJiZlLmhvb2tzLmJpbmRTZWxmKGUscCx0aGlzLmJsb2NrT3B0aW9ucy5zZWxmKSxh
KGUscCx0aGlzLmJsb2NrT3B0aW9ucy55aWVsZFRvKSxzKG8sZSxsLG51bGwsZnVuY3Rpb24oKXts
LnJlbmRlclN0YXRlLm1vcnBoVG9DbGVhcj1udWxsO3ZhciBuPW5ldyByLlJlbmRlck9wdGlvbnMo
byx2b2lkIDAsdCk7YyhmLGUscCxuKX0pfX0pLGUoImh0bWxiYXJzLXV0aWwvdm9pZC10YWctbmFt
ZXMiLFsiZXhwb3J0cyIsImh0bWxiYXJzLXV0aWwvYXJyYXktdXRpbHMiXSxmdW5jdGlvbihlLHQp
eyJ1c2Ugc3RyaWN0Ijt2YXIgcj0iYXJlYSBiYXNlIGJyIGNvbCBjb21tYW5kIGVtYmVkIGhyIGlt
ZyBpbnB1dCBrZXlnZW4gbGluayBtZXRhIHBhcmFtIHNvdXJjZSB0cmFjayB3YnIiLG49e307dC5m
b3JFYWNoKHIuc3BsaXQoIiAiKSxmdW5jdGlvbihlKXtuW2VdPSEwfSksZS5kZWZhdWx0PW59KSxl
KCJtb3JwaC1hdHRyIixbImV4cG9ydHMiLCJtb3JwaC1hdHRyL3Nhbml0aXplLWF0dHJpYnV0ZS12
YWx1ZSIsImRvbS1oZWxwZXIvcHJvcCIsImRvbS1oZWxwZXIvYnVpbGQtaHRtbC1kb20iLCJodG1s
YmFycy11dGlsIl0sZnVuY3Rpb24oZSx0LHIsbixpKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbygp
e3JldHVybiB0aGlzLmRvbUhlbHBlci5nZXRQcm9wZXJ0eVN0cmljdCh0aGlzLmVsZW1lbnQsdGhp
cy5hdHRyTmFtZSl9ZnVuY3Rpb24gYShlKXtpZih0aGlzLl9yZW5kZXJlZEluaXRpYWxseT09PSEw
fHwhci5pc0F0dHJSZW1vdmFsVmFsdWUoZSkpe3ZhciB0PXRoaXMuZWxlbWVudCxuPXRoaXMuYXR0
ck5hbWU7InZhbHVlIj09PW4mJiJJTlBVVCI9PT10LnRhZ05hbWUmJnQudmFsdWU9PT1lfHx0aGlz
LmRvbUhlbHBlci5zZXRQcm9wZXJ0eVN0cmljdCh0LG4sZSl9dGhpcy5fcmVuZGVyZWRJbml0aWFs
bHk9ITB9ZnVuY3Rpb24gcygpe3JldHVybiB0aGlzLmRvbUhlbHBlci5nZXRBdHRyaWJ1dGUodGhp
cy5lbGVtZW50LHRoaXMuYXR0ck5hbWUpfWZ1bmN0aW9uIHUoZSl7ci5pc0F0dHJSZW1vdmFsVmFs
dWUoZSk/dGhpcy5kb21IZWxwZXIucmVtb3ZlQXR0cmlidXRlKHRoaXMuZWxlbWVudCx0aGlzLmF0
dHJOYW1lKTp0aGlzLmRvbUhlbHBlci5zZXRBdHRyaWJ1dGUodGhpcy5lbGVtZW50LHRoaXMuYXR0
ck5hbWUsZSl9ZnVuY3Rpb24gbCgpe3JldHVybiB0aGlzLmRvbUhlbHBlci5nZXRBdHRyaWJ1dGVO
Uyh0aGlzLmVsZW1lbnQsdGhpcy5uYW1lc3BhY2UsdGhpcy5hdHRyTmFtZSl9ZnVuY3Rpb24gYyhl
KXtyLmlzQXR0clJlbW92YWxWYWx1ZShlKT90aGlzLmRvbUhlbHBlci5yZW1vdmVBdHRyaWJ1dGUo
dGhpcy5lbGVtZW50LHRoaXMuYXR0ck5hbWUpOnRoaXMuZG9tSGVscGVyLnNldEF0dHJpYnV0ZU5T
KHRoaXMuZWxlbWVudCx0aGlzLm5hbWVzcGFjZSx0aGlzLmF0dHJOYW1lLGUpfWZ1bmN0aW9uIGYo
ZSx0LGkpe3ZhciBvPXIubm9ybWFsaXplUHJvcGVydHkoZSx0KSxhPW8ubm9ybWFsaXplZCxzPW8u
dHlwZTtyZXR1cm4gZS5uYW1lc3BhY2VVUkk9PT1uLnN2Z05hbWVzcGFjZXx8InN0eWxlIj09PXR8
fCJhdHRyIj09PXM/bmV3IG0oZSxhLGkpOm5ldyBwKGUsYSxpKX1mdW5jdGlvbiBkKGUsdCxyKXt0
aGlzLmVsZW1lbnQ9ZSx0aGlzLmRvbUhlbHBlcj1yLHRoaXMuYXR0ck5hbWU9dCx0aGlzLl9zdGF0
ZT12b2lkIDAsdGhpcy5pc0RpcnR5PSExLHRoaXMuaXNTdWJ0cmVlRGlydHk9ITEsdGhpcy5lc2Nh
cGVkPSEwLHRoaXMubGFzdFZhbHVlPXYsdGhpcy5sYXN0UmVzdWx0PW51bGwsdGhpcy5sYXN0WWll
bGRlZD1udWxsLHRoaXMuY2hpbGROb2Rlcz1udWxsLHRoaXMubGlua2VkUGFyYW1zPW51bGwsdGhp
cy5saW5rZWRSZXN1bHQ9bnVsbCx0aGlzLmd1aWQ9ImF0dHIiK2IrKyx0aGlzLnNlZW49ITEsdGhp
cy5vd25lck5vZGU9bnVsbCx0aGlzLnJlbmRlcmVkPSExLHRoaXMuX3JlbmRlcmVkSW5pdGlhbGx5
PSExLHRoaXMubmFtZXNwYWNlPXZvaWQgMCx0aGlzLmRpZEluaXQoKX1mdW5jdGlvbiBwKGUsdCxy
KXt0aGlzLl8kc3VwZXJBdHRyTW9ycGgoZSx0LHIpfWZ1bmN0aW9uIGgoZSx0LHIsbil7dGhpcy5f
JHN1cGVyQXR0ck1vcnBoKGUsdCxyKSx0aGlzLm5hbWVzcGFjZT1ufWZ1bmN0aW9uIG0oZSx0LHIp
e3RoaXMuXyRzdXBlckF0dHJNb3JwaChlLHQscil9dmFyIHY9e3Vuc2V0OiEwfSxiPTE7ZC5jcmVh
dGU9ZnVuY3Rpb24oZSx0LHIsbil7dmFyIG89aS5nZXRBdHRyTmFtZXNwYWNlKHQsbik7cmV0dXJu
IG8/bmV3IGgoZSx0LHIsbyk6ZihlLHQscil9LGQucHJvdG90eXBlLmdldFN0YXRlPWZ1bmN0aW9u
KCl7cmV0dXJuIHRoaXMuX3N0YXRlfHwodGhpcy5fc3RhdGU9e30pLHRoaXMuX3N0YXRlfSxkLnBy
b3RvdHlwZS5zZXRTdGF0ZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fc3RhdGU9ZX0sZC5wcm90
b3R5cGUuZGlkSW5pdD1mdW5jdGlvbigpe30sZC5wcm90b3R5cGUud2lsbFNldENvbnRlbnQ9ZnVu
Y3Rpb24oKXt9LGQucHJvdG90eXBlLnNldENvbnRlbnQ9ZnVuY3Rpb24oZSl7aWYodGhpcy53aWxs
U2V0Q29udGVudChlKSx0aGlzLmxhc3RWYWx1ZSE9PWUpaWYodGhpcy5sYXN0VmFsdWU9ZSx0aGlz
LmVzY2FwZWQpe3ZhciByPXQuc2FuaXRpemVBdHRyaWJ1dGVWYWx1ZSh0aGlzLmRvbUhlbHBlcix0
aGlzLmVsZW1lbnQsdGhpcy5hdHRyTmFtZSxlKTt0aGlzLl91cGRhdGUocix0aGlzLm5hbWVzcGFj
ZSl9ZWxzZSB0aGlzLl91cGRhdGUoZSx0aGlzLm5hbWVzcGFjZSl9LGQucHJvdG90eXBlLmdldENv
bnRlbnQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmxhc3RWYWx1ZT10aGlzLl9nZXQoKTtyZXR1cm4g
ZX0sZC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt9LGQucHJvdG90eXBlLmRlc3Ryb3k9ZnVu
Y3Rpb24oKXt0aGlzLmVsZW1lbnQ9bnVsbCx0aGlzLmRvbUhlbHBlcj1udWxsfSxkLnByb3RvdHlw
ZS5fJHN1cGVyQXR0ck1vcnBoPWQscC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShkLnByb3RvdHlw
ZSkscC5wcm90b3R5cGUuX3VwZGF0ZT1hLHAucHJvdG90eXBlLl9nZXQ9byxoLnByb3RvdHlwZT1P
YmplY3QuY3JlYXRlKGQucHJvdG90eXBlKSxoLnByb3RvdHlwZS5fdXBkYXRlPWMsaC5wcm90b3R5
cGUuX2dldD1sLG0ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZC5wcm90b3R5cGUpLG0ucHJvdG90
eXBlLl91cGRhdGU9dSxtLnByb3RvdHlwZS5fZ2V0PXMsZS5kZWZhdWx0PWQsZS5zYW5pdGl6ZUF0
dHJpYnV0ZVZhbHVlPXQuc2FuaXRpemVBdHRyaWJ1dGVWYWx1ZX0pLGUoIm1vcnBoLWF0dHIvc2Fu
aXRpemUtYXR0cmlidXRlLXZhbHVlIixbImV4cG9ydHMiXSxmdW5jdGlvbihlKXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gdChlLHQscyx1KXt2YXIgbDtpZihsPXQ/dC50YWdOYW1lLnRvVXBwZXJDYXNl
KCk6bnVsbCx1JiZ1LnRvSFRNTClyZXR1cm4gdS50b0hUTUwoKTtpZigobnVsbD09PWx8fG5bbF0p
JiZvW3NdKXt2YXIgYz1lLnByb3RvY29sRm9yVVJMKHUpO2lmKHJbY109PT0hMClyZXR1cm4idW5z
YWZlOiIrdX1yZXR1cm4gaVtsXSYmYVtzXT8idW5zYWZlOiIrdTp1fWUuc2FuaXRpemVBdHRyaWJ1
dGVWYWx1ZT10O3ZhciByPXsiamF2YXNjcmlwdDoiOiEwLCJ2YnNjcmlwdDoiOiEwfSxuPXtBOiEw
LEJPRFk6ITAsTElOSzohMCxJTUc6ITAsSUZSQU1FOiEwLEJBU0U6ITAsRk9STTohMH0saT17RU1C
RUQ6ITB9LG89e2hyZWY6ITAsc3JjOiEwLGJhY2tncm91bmQ6ITAsYWN0aW9uOiEwfTtlLmJhZEF0
dHJpYnV0ZXM9bzt2YXIgYT17c3JjOiEwfX0pLGUoIm1vcnBoLXJhbmdlIixbImV4cG9ydHMiLCJt
b3JwaC1yYW5nZS91dGlscyJdLGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIo
ZSx0KXt0aGlzLmRvbUhlbHBlcj1lLHRoaXMuY29udGV4dHVhbEVsZW1lbnQ9dCx0aGlzLmZpcnN0
Tm9kZT1udWxsLHRoaXMubGFzdE5vZGU9bnVsbCx0aGlzLnBhcnNlVGV4dEFzSFRNTD0hMSx0aGlz
LnBhcmVudE1vcnBoTGlzdD1udWxsLHRoaXMucHJldmlvdXNNb3JwaD1udWxsLHRoaXMubmV4dE1v
cnBoPW51bGx9ZnVuY3Rpb24gbihlKXt2YXIgdCxyPWUubmFtZTt0aHJvdyB0PXI/IlVuc3VwcG9y
dGVkIENvbnRlbnQ6IENhbm5vdCBiaW5kIHRvIGZ1bmN0aW9uIGAiK3IrImAiOiJVbnN1cHBvcnRl
ZCBDb250ZW50OiBDYW5ub3QgYmluZCB0byBmdW5jdGlvbiIsbmV3IFR5cGVFcnJvcih0KX1yLmVt
cHR5PWZ1bmN0aW9uKGUsdCl7dmFyIG49bmV3IHIoZSx0KTtyZXR1cm4gbi5jbGVhcigpLG59LHIu
Y3JlYXRlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgaT1uZXcgcihlLHQpO3JldHVybiBpLnNldE5vZGUo
biksaX0sci5hdHRhY2g9ZnVuY3Rpb24oZSx0LG4saSl7dmFyIG89bmV3IHIoZSx0KTtyZXR1cm4g
by5zZXRSYW5nZShuLGkpLG99LHIucHJvdG90eXBlLnNldENvbnRlbnQ9ZnVuY3Rpb24oZSl7aWYo
bnVsbD09PWV8fHZvaWQgMD09PWUpcmV0dXJuIHRoaXMuY2xlYXIoKTt2YXIgdD10eXBlb2YgZTtz
d2l0Y2godCl7Y2FzZSJzdHJpbmciOnJldHVybiB0aGlzLnBhcnNlVGV4dEFzSFRNTD90aGlzLmRv
bUhlbHBlci5zZXRNb3JwaEhUTUwodGhpcyxlKTp0aGlzLnNldFRleHQoZSk7Y2FzZSJvYmplY3Qi
OmlmKCJudW1iZXIiPT10eXBlb2YgZS5ub2RlVHlwZSlyZXR1cm4gdGhpcy5zZXROb2RlKGUpO2lm
KCJmdW5jdGlvbiI9PXR5cGVvZiBlLnRvSFRNTClyZXR1cm4gdGhpcy5zZXRIVE1MKGUudG9IVE1M
KCkpO2lmKHRoaXMucGFyc2VUZXh0QXNIVE1MKXJldHVybiB0aGlzLnNldEhUTUwoZS50b1N0cmlu
ZygpKTtjYXNlImJvb2xlYW4iOmNhc2UibnVtYmVyIjpyZXR1cm4gdGhpcy5zZXRUZXh0KGUudG9T
dHJpbmcoKSk7Y2FzZSJmdW5jdGlvbiI6bihlKTtkZWZhdWx0OnRocm93IG5ldyBUeXBlRXJyb3Io
InVuc3VwcG9ydGVkIGNvbnRlbnQiKX19LHIucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dmFy
IGU9dGhpcy5zZXROb2RlKHRoaXMuZG9tSGVscGVyLmNyZWF0ZUNvbW1lbnQoIiIpKTtyZXR1cm4g
ZX0sci5wcm90b3R5cGUuc2V0VGV4dD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmZpcnN0Tm9kZSxy
PXRoaXMubGFzdE5vZGU7cmV0dXJuIHQmJnI9PT10JiYzPT09dC5ub2RlVHlwZT8odC5ub2RlVmFs
dWU9ZSx0KTp0aGlzLnNldE5vZGUoZT90aGlzLmRvbUhlbHBlci5jcmVhdGVUZXh0Tm9kZShlKTp0
aGlzLmRvbUhlbHBlci5jcmVhdGVDb21tZW50KCIiKSl9LHIucHJvdG90eXBlLnNldE5vZGU9ZnVu
Y3Rpb24oZSl7dmFyIHQscjtzd2l0Y2goZS5ub2RlVHlwZSl7Y2FzZSAzOnQ9ZSxyPWU7YnJlYWs7
Y2FzZSAxMTp0PWUuZmlyc3RDaGlsZCxyPWUubGFzdENoaWxkLG51bGw9PT10JiYodD10aGlzLmRv
bUhlbHBlci5jcmVhdGVDb21tZW50KCIiKSxlLmFwcGVuZENoaWxkKHQpLHI9dCk7YnJlYWs7ZGVm
YXVsdDp0PWUscj1lfXJldHVybiB0aGlzLnNldFJhbmdlKHQsciksZX0sci5wcm90b3R5cGUuc2V0
UmFuZ2U9ZnVuY3Rpb24oZSxyKXt2YXIgbj10aGlzLmZpcnN0Tm9kZTtpZihudWxsIT09bil7dmFy
IGk9bi5wYXJlbnROb2RlO251bGwhPT1pJiYodC5pbnNlcnRCZWZvcmUoaSxlLHIsbiksdC5jbGVh
cihpLG4sdGhpcy5sYXN0Tm9kZSkpfXRoaXMuZmlyc3ROb2RlPWUsdGhpcy5sYXN0Tm9kZT1yLHRo
aXMucGFyZW50TW9ycGhMaXN0JiYodGhpcy5fc3luY0ZpcnN0Tm9kZSgpLHRoaXMuX3N5bmNMYXN0
Tm9kZSgpKX0sci5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3RoaXMudW5saW5rKCk7dmFy
IGU9dGhpcy5maXJzdE5vZGUscj10aGlzLmxhc3ROb2RlLG49ZSYmZS5wYXJlbnROb2RlO3RoaXMu
Zmlyc3ROb2RlPW51bGwsdGhpcy5sYXN0Tm9kZT1udWxsLHQuY2xlYXIobixlLHIpfSxyLnByb3Rv
dHlwZS51bmxpbms9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnBhcmVudE1vcnBoTGlzdCx0PXRoaXMu
cHJldmlvdXNNb3JwaCxyPXRoaXMubmV4dE1vcnBoO2lmKHQ/cj8odC5uZXh0TW9ycGg9cixyLnBy
ZXZpb3VzTW9ycGg9dCk6KHQubmV4dE1vcnBoPW51bGwsZS5sYXN0Q2hpbGRNb3JwaD10KTpyPyhy
LnByZXZpb3VzTW9ycGg9bnVsbCxlLmZpcnN0Q2hpbGRNb3JwaD1yKTplJiYoZS5sYXN0Q2hpbGRN
b3JwaD1lLmZpcnN0Q2hpbGRNb3JwaD1udWxsKSx0aGlzLnBhcmVudE1vcnBoTGlzdD1udWxsLHRo
aXMubmV4dE1vcnBoPW51bGwsdGhpcy5wcmV2aW91c01vcnBoPW51bGwsZSYmZS5tb3VudGVkTW9y
cGgpe2lmKCFlLmZpcnN0Q2hpbGRNb3JwaClyZXR1cm4gdm9pZCBlLm1vdW50ZWRNb3JwaC5jbGVh
cigpO2UuZmlyc3RDaGlsZE1vcnBoLl9zeW5jRmlyc3ROb2RlKCksZS5sYXN0Q2hpbGRNb3JwaC5f
c3luY0xhc3ROb2RlKCl9fSxyLnByb3RvdHlwZS5zZXRIVE1MPWZ1bmN0aW9uKGUpe3ZhciB0PXRo
aXMuZG9tSGVscGVyLnBhcnNlSFRNTChlLHRoaXMuY29udGV4dHVhbEVsZW1lbnQpO3JldHVybiB0
aGlzLnNldE5vZGUodCl9LHIucHJvdG90eXBlLnNldE1vcnBoTGlzdD1mdW5jdGlvbihlKXtlLm1v
dW50ZWRNb3JwaD10aGlzLHRoaXMuY2xlYXIoKTt2YXIgdD10aGlzLmZpcnN0Tm9kZTtpZihlLmZp
cnN0Q2hpbGRNb3JwaCl7dGhpcy5maXJzdE5vZGU9ZS5maXJzdENoaWxkTW9ycGguZmlyc3ROb2Rl
LHRoaXMubGFzdE5vZGU9ZS5sYXN0Q2hpbGRNb3JwaC5sYXN0Tm9kZTtmb3IodmFyIHI9ZS5maXJz
dENoaWxkTW9ycGg7cjspe3ZhciBuPXIubmV4dE1vcnBoO3IuaW5zZXJ0QmVmb3JlTm9kZSh0LG51
bGwpLHI9bn10LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodCl9fSxyLnByb3RvdHlwZS5fc3luY0Zp
cnN0Tm9kZT1mdW5jdGlvbigpe2Zvcih2YXIgZSx0PXRoaXM7KGU9dC5wYXJlbnRNb3JwaExpc3Qp
JiZudWxsIT09ZS5tb3VudGVkTW9ycGgmJnQ9PT1lLmZpcnN0Q2hpbGRNb3JwaCYmdC5maXJzdE5v
ZGUhPT1lLm1vdW50ZWRNb3JwaC5maXJzdE5vZGU7KWUubW91bnRlZE1vcnBoLmZpcnN0Tm9kZT10
LmZpcnN0Tm9kZSx0PWUubW91bnRlZE1vcnBofSxyLnByb3RvdHlwZS5fc3luY0xhc3ROb2RlPWZ1
bmN0aW9uKCl7Zm9yKHZhciBlLHQ9dGhpczsoZT10LnBhcmVudE1vcnBoTGlzdCkmJm51bGwhPT1l
Lm1vdW50ZWRNb3JwaCYmdD09PWUubGFzdENoaWxkTW9ycGgmJnQubGFzdE5vZGUhPT1lLm1vdW50
ZWRNb3JwaC5sYXN0Tm9kZTspZS5tb3VudGVkTW9ycGgubGFzdE5vZGU9dC5sYXN0Tm9kZSx0PWUu
bW91bnRlZE1vcnBofSxyLnByb3RvdHlwZS5pbnNlcnRCZWZvcmVOb2RlPWZ1bmN0aW9uKGUscil7
dC5pbnNlcnRCZWZvcmUoZSx0aGlzLmZpcnN0Tm9kZSx0aGlzLmxhc3ROb2RlLHIpfSxyLnByb3Rv
dHlwZS5hcHBlbmRUb05vZGU9ZnVuY3Rpb24oZSl7dC5pbnNlcnRCZWZvcmUoZSx0aGlzLmZpcnN0
Tm9kZSx0aGlzLmxhc3ROb2RlLG51bGwpfSxlLmRlZmF1bHQ9cn0pLGUoIm1vcnBoLXJhbmdlL21v
cnBoLWxpc3QiLFsiZXhwb3J0cyIsIm1vcnBoLXJhbmdlL3V0aWxzIl0sZnVuY3Rpb24oZSx0KXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe3RoaXMuZmlyc3RDaGlsZE1vcnBoPW51bGwsdGhpcy5s
YXN0Q2hpbGRNb3JwaD1udWxsLHRoaXMubW91bnRlZE1vcnBoPW51bGx9dmFyIG49ci5wcm90b3R5
cGU7bi5jbGVhcj1mdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLmZpcnN0Q2hpbGRNb3JwaDtlOyl7
dmFyIHQ9ZS5uZXh0TW9ycGg7ZS5wcmV2aW91c01vcnBoPW51bGwsZS5uZXh0TW9ycGg9bnVsbCxl
LnBhcmVudE1vcnBoTGlzdD1udWxsLGU9dH10aGlzLmZpcnN0Q2hpbGRNb3JwaD10aGlzLmxhc3RD
aGlsZE1vcnBoPW51bGx9LG4uZGVzdHJveT1mdW5jdGlvbigpe30sbi5hcHBlbmRNb3JwaD1mdW5j
dGlvbihlKXt0aGlzLmluc2VydEJlZm9yZU1vcnBoKGUsbnVsbCl9LG4uaW5zZXJ0QmVmb3JlTW9y
cGg9ZnVuY3Rpb24oZSxyKXtpZihudWxsIT09ZS5wYXJlbnRNb3JwaExpc3QmJmUudW5saW5rKCks
ciYmci5wYXJlbnRNb3JwaExpc3QhPT10aGlzKXRocm93IG5ldyBFcnJvcigiVGhlIG1vcnBoIGJl
Zm9yZSB3aGljaCB0aGUgbmV3IG1vcnBoIGlzIHRvIGJlIGluc2VydGVkIGlzIG5vdCBhIGNoaWxk
IG9mIHRoaXMgbW9ycGguIik7dmFyIG49dGhpcy5tb3VudGVkTW9ycGg7aWYobil7dmFyIGk9bi5m
aXJzdE5vZGUucGFyZW50Tm9kZSxvPXI/ci5maXJzdE5vZGU6bi5sYXN0Tm9kZS5uZXh0U2libGlu
Zzt0Lmluc2VydEJlZm9yZShpLGUuZmlyc3ROb2RlLGUubGFzdE5vZGUsbyksdGhpcy5maXJzdENo
aWxkTW9ycGh8fHQuY2xlYXIodGhpcy5tb3VudGVkTW9ycGguZmlyc3ROb2RlLnBhcmVudE5vZGUs
dGhpcy5tb3VudGVkTW9ycGguZmlyc3ROb2RlLHRoaXMubW91bnRlZE1vcnBoLmxhc3ROb2RlKX1l
LnBhcmVudE1vcnBoTGlzdD10aGlzO3ZhciBhPXI/ci5wcmV2aW91c01vcnBoOnRoaXMubGFzdENo
aWxkTW9ycGg7YT8oYS5uZXh0TW9ycGg9ZSxlLnByZXZpb3VzTW9ycGg9YSk6dGhpcy5maXJzdENo
aWxkTW9ycGg9ZSxyPyhyLnByZXZpb3VzTW9ycGg9ZSxlLm5leHRNb3JwaD1yKTp0aGlzLmxhc3RD
aGlsZE1vcnBoPWUsdGhpcy5maXJzdENoaWxkTW9ycGguX3N5bmNGaXJzdE5vZGUoKSx0aGlzLmxh
c3RDaGlsZE1vcnBoLl9zeW5jTGFzdE5vZGUoKX0sbi5yZW1vdmVDaGlsZE1vcnBoPWZ1bmN0aW9u
KGUpe2lmKGUucGFyZW50TW9ycGhMaXN0IT09dGhpcyl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBy
ZW1vdmUgYSBtb3JwaCBmcm9tIGEgcGFyZW50IGl0IGlzIG5vdCBpbnNpZGUgb2YiKTtlLmRlc3Ry
b3koKX0sZS5kZWZhdWx0PXJ9KSxlKCJtb3JwaC1yYW5nZS9tb3JwaC1saXN0LnVtZCIsWyJleHBv
cnRzIiwibW9ycGgtcmFuZ2UvbW9ycGgtbGlzdCJdLGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3Qi
OyFmdW5jdGlvbih0LHIpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVm
aW5lKFtdLHIpOiJvYmplY3QiPT10eXBlb2YgZT9tb2R1bGUuZXhwb3J0cz1yKCk6dC5Nb3JwaExp
c3Q9cigpfSh2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gdC5kZWZhdWx0fSl9KSxlKCJtb3JwaC1y
YW5nZS91dGlscyIsWyJleHBvcnRzIl0sZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IHQoZSx0LHIpe2lmKGUpe3ZhciBuLGk9dDtkb3tpZihuPWkubmV4dFNpYmxpbmcsZS5yZW1vdmVD
aGlsZChpKSxpPT09cilicmVhaztpPW59d2hpbGUoaSl9fWZ1bmN0aW9uIHIoZSx0LHIsbil7dmFy
IGksbz10O2Rve2lmKGk9by5uZXh0U2libGluZyxlLmluc2VydEJlZm9yZShvLG4pLG89PT1yKWJy
ZWFrO289aX13aGlsZShvKX1lLmNsZWFyPXQsZS5pbnNlcnRCZWZvcmU9cn0pLGUoInJvdXRlLXJl
Y29nbml6ZXIiLFsiZXhwb3J0cyIsInJvdXRlLXJlY29nbml6ZXIvZHNsIl0sZnVuY3Rpb24oZSx0
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4iW29iamVjdCBBcnJheV0iPT09T2Jq
ZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpfWZ1bmN0aW9uIG4oZSl7dGhpcy5zdHJpbmc9
ZX1mdW5jdGlvbiBpKGUpe3RoaXMubmFtZT1lfWZ1bmN0aW9uIG8oZSl7dGhpcy5uYW1lPWV9ZnVu
Y3Rpb24gYSgpe31mdW5jdGlvbiBzKGUsdCxyKXsiLyI9PT1lLmNoYXJBdCgwKSYmKGU9ZS5zdWJz
dHIoMSkpO2Zvcih2YXIgcz1lLnNwbGl0KCIvIiksdT1bXSxsPTAsYz1zLmxlbmd0aDtsPGM7bCsr
KXt2YXIgZixkPXNbbF07KGY9ZC5tYXRjaCgvXjooW15cL10rKSQvKSk/KHUucHVzaChuZXcgaShm
WzFdKSksdC5wdXNoKGZbMV0pLHIuZHluYW1pY3MrKyk6KGY9ZC5tYXRjaCgvXlwqKFteXC9dKykk
LykpPyh1LnB1c2gobmV3IG8oZlsxXSkpLHQucHVzaChmWzFdKSxyLnN0YXJzKyspOiIiPT09ZD91
LnB1c2gobmV3IGEpOih1LnB1c2gobmV3IG4oZCkpLHIuc3RhdGljcysrKX1yZXR1cm4gdX1mdW5j
dGlvbiB1KGUpe3RoaXMuY2hhclNwZWM9ZSx0aGlzLm5leHRTdGF0ZXM9W119ZnVuY3Rpb24gbChl
KXtyZXR1cm4gZS5zb3J0KGZ1bmN0aW9uKGUsdCl7aWYoZS50eXBlcy5zdGFycyE9PXQudHlwZXMu
c3RhcnMpcmV0dXJuIGUudHlwZXMuc3RhcnMtdC50eXBlcy5zdGFycztpZihlLnR5cGVzLnN0YXJz
KXtpZihlLnR5cGVzLnN0YXRpY3MhPT10LnR5cGVzLnN0YXRpY3MpcmV0dXJuIHQudHlwZXMuc3Rh
dGljcy1lLnR5cGVzLnN0YXRpY3M7aWYoZS50eXBlcy5keW5hbWljcyE9PXQudHlwZXMuZHluYW1p
Y3MpcmV0dXJuIHQudHlwZXMuZHluYW1pY3MtZS50eXBlcy5keW5hbWljc31yZXR1cm4gZS50eXBl
cy5keW5hbWljcyE9PXQudHlwZXMuZHluYW1pY3M/ZS50eXBlcy5keW5hbWljcy10LnR5cGVzLmR5
bmFtaWNzOmUudHlwZXMuc3RhdGljcyE9PXQudHlwZXMuc3RhdGljcz90LnR5cGVzLnN0YXRpY3Mt
ZS50eXBlcy5zdGF0aWNzOjB9KX1mdW5jdGlvbiBjKGUsdCl7Zm9yKHZhciByPVtdLG49MCxpPWUu
bGVuZ3RoO248aTtuKyspe3ZhciBvPWVbbl07cj1yLmNvbmNhdChvLm1hdGNoKHQpKX1yZXR1cm4g
cn1mdW5jdGlvbiBmKGUpe3RoaXMucXVlcnlQYXJhbXM9ZXx8e319ZnVuY3Rpb24gZChlLHQscil7
Zm9yKHZhciBuPWUuaGFuZGxlcnMsaT1lLnJlZ2V4LG89dC5tYXRjaChpKSxhPTEscz1uZXcgZihy
KSx1PTAsbD1uLmxlbmd0aDt1PGw7dSsrKXtmb3IodmFyIGM9blt1XSxkPWMubmFtZXMscD17fSxo
PTAsbT1kLmxlbmd0aDtoPG07aCsrKXBbZFtoXV09b1thKytdO3MucHVzaCh7aGFuZGxlcjpjLmhh
bmRsZXIscGFyYW1zOnAsaXNEeW5hbWljOiEhZC5sZW5ndGh9KX1yZXR1cm4gc31mdW5jdGlvbiBw
KGUsdCl7cmV0dXJuIHQuZWFjaENoYXIoZnVuY3Rpb24odCl7ZT1lLnB1dCh0KX0pLGV9ZnVuY3Rp
b24gaChlKXtyZXR1cm4gZT1lLnJlcGxhY2UoL1wrL2dtLCIlMjAiKSxkZWNvZGVVUklDb21wb25l
bnQoZSl9dmFyIG09WyIvIiwiLiIsIioiLCIrIiwiPyIsInwiLCIoIiwiKSIsIlsiLCJdIiwieyIs
In0iLCJcXCJdLHY9bmV3IFJlZ0V4cCgiKFxcIittLmpvaW4oInxcXCIpKyIpIiwiZyIpO24ucHJv
dG90eXBlPXtlYWNoQ2hhcjpmdW5jdGlvbihlKXtmb3IodmFyIHQscj10aGlzLnN0cmluZyxuPTAs
aT1yLmxlbmd0aDtuPGk7bisrKXQ9ci5jaGFyQXQobiksZSh7dmFsaWRDaGFyczp0fSl9LHJlZ2V4
OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RyaW5nLnJlcGxhY2UodiwiXFwkMSIpfSxnZW5lcmF0
ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN0cmluZ319LGkucHJvdG90eXBlPXtlYWNoQ2hhcjpm
dW5jdGlvbihlKXtlKHtpbnZhbGlkQ2hhcnM6Ii8iLHJlcGVhdDohMH0pfSxyZWdleDpmdW5jdGlv
bigpe3JldHVybiIoW14vXSspIn0sZ2VuZXJhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuIGVbdGhpcy5u
YW1lXX19LG8ucHJvdG90eXBlPXtlYWNoQ2hhcjpmdW5jdGlvbihlKXtlKHtpbnZhbGlkQ2hhcnM6
IiIscmVwZWF0OiEwfSl9LHJlZ2V4OmZ1bmN0aW9uKCl7cmV0dXJuIiguKykifSxnZW5lcmF0ZTpm
dW5jdGlvbihlKXtyZXR1cm4gZVt0aGlzLm5hbWVdfX0sYS5wcm90b3R5cGU9e2VhY2hDaGFyOmZ1
bmN0aW9uKCl7fSxyZWdleDpmdW5jdGlvbigpe3JldHVybiIifSxnZW5lcmF0ZTpmdW5jdGlvbigp
e3JldHVybiIifX0sdS5wcm90b3R5cGU9e2dldDpmdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy5u
ZXh0U3RhdGVzLHI9MCxuPXQubGVuZ3RoO3I8bjtyKyspe3ZhciBpPXRbcl0sbz1pLmNoYXJTcGVj
LnZhbGlkQ2hhcnM9PT1lLnZhbGlkQ2hhcnM7aWYobz1vJiZpLmNoYXJTcGVjLmludmFsaWRDaGFy
cz09PWUuaW52YWxpZENoYXJzKXJldHVybiBpfX0scHV0OmZ1bmN0aW9uKGUpe3ZhciB0O3JldHVy
bih0PXRoaXMuZ2V0KGUpKT90Oih0PW5ldyB1KGUpLHRoaXMubmV4dFN0YXRlcy5wdXNoKHQpLGUu
cmVwZWF0JiZ0Lm5leHRTdGF0ZXMucHVzaCh0KSx0KX0sbWF0Y2g6ZnVuY3Rpb24oZSl7Zm9yKHZh
ciB0LHIsbixpPXRoaXMubmV4dFN0YXRlcyxvPVtdLGE9MCxzPWkubGVuZ3RoO2E8czthKyspdD1p
W2FdLHI9dC5jaGFyU3BlYywidW5kZWZpbmVkIiE9dHlwZW9mKG49ci52YWxpZENoYXJzKT9uLmlu
ZGV4T2YoZSkhPT0tMSYmby5wdXNoKHQpOiJ1bmRlZmluZWQiIT10eXBlb2Yobj1yLmludmFsaWRD
aGFycykmJm4uaW5kZXhPZihlKT09PS0xJiZvLnB1c2godCk7cmV0dXJuIG99fTt2YXIgYj1PYmpl
Y3QuY3JlYXRlfHxmdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZT1l
LG5ldyB0fTtmLnByb3RvdHlwZT1iKHtzcGxpY2U6QXJyYXkucHJvdG90eXBlLnNwbGljZSxzbGlj
ZTpBcnJheS5wcm90b3R5cGUuc2xpY2UscHVzaDpBcnJheS5wcm90b3R5cGUucHVzaCxsZW5ndGg6
MCxxdWVyeVBhcmFtczpudWxsfSk7dmFyIGc9ZnVuY3Rpb24oKXt0aGlzLnJvb3RTdGF0ZT1uZXcg
dSx0aGlzLm5hbWVzPXt9fTtnLnByb3RvdHlwZT17YWRkOmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBy
LG49dGhpcy5yb290U3RhdGUsaT0iXiIsbz17c3RhdGljczowLGR5bmFtaWNzOjAsc3RhcnM6MH0s
dT1bXSxsPVtdLGM9ITAsZj0wLGQ9ZS5sZW5ndGg7ZjxkO2YrKyl7dmFyIGg9ZVtmXSxtPVtdLHY9
cyhoLnBhdGgsbSxvKTtsPWwuY29uY2F0KHYpO2Zvcih2YXIgYj0wLGc9di5sZW5ndGg7YjxnO2Ir
Kyl7dmFyIHk9dltiXTt5IGluc3RhbmNlb2YgYXx8KGM9ITEsbj1uLnB1dCh7dmFsaWRDaGFyczoi
LyJ9KSxpKz0iLyIsbj1wKG4seSksaSs9eS5yZWdleCgpKX12YXIgXz17aGFuZGxlcjpoLmhhbmRs
ZXIsbmFtZXM6bX07dS5wdXNoKF8pfWMmJihuPW4ucHV0KHt2YWxpZENoYXJzOiIvIn0pLGkrPSIv
Iiksbi5oYW5kbGVycz11LG4ucmVnZXg9bmV3IFJlZ0V4cChpKyIkIiksbi50eXBlcz1vLChyPXQm
JnQuYXMpJiYodGhpcy5uYW1lc1tyXT17c2VnbWVudHM6bCxoYW5kbGVyczp1fSl9LGhhbmRsZXJz
Rm9yOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMubmFtZXNbZV0scj1bXTtpZighdCl0aHJvdyBuZXcg
RXJyb3IoIlRoZXJlIGlzIG5vIHJvdXRlIG5hbWVkICIrZSk7Zm9yKHZhciBuPTAsaT10LmhhbmRs
ZXJzLmxlbmd0aDtuPGk7bisrKXIucHVzaCh0LmhhbmRsZXJzW25dKTtyZXR1cm4gcn0saGFzUm91
dGU6ZnVuY3Rpb24oZSl7cmV0dXJuISF0aGlzLm5hbWVzW2VdfSxnZW5lcmF0ZTpmdW5jdGlvbihl
LHQpe3ZhciByPXRoaXMubmFtZXNbZV0sbj0iIjtpZighcil0aHJvdyBuZXcgRXJyb3IoIlRoZXJl
IGlzIG5vIHJvdXRlIG5hbWVkICIrZSk7Zm9yKHZhciBpPXIuc2VnbWVudHMsbz0wLHM9aS5sZW5n
dGg7bzxzO28rKyl7dmFyIHU9aVtvXTt1IGluc3RhbmNlb2YgYXx8KG4rPSIvIixuKz11LmdlbmVy
YXRlKHQpKX1yZXR1cm4iLyIhPT1uLmNoYXJBdCgwKSYmKG49Ii8iK24pLHQmJnQucXVlcnlQYXJh
bXMmJihuKz10aGlzLmdlbmVyYXRlUXVlcnlTdHJpbmcodC5xdWVyeVBhcmFtcyxyLmhhbmRsZXJz
KSksbn0sZ2VuZXJhdGVRdWVyeVN0cmluZzpmdW5jdGlvbihlLHQpe3ZhciBuPVtdLGk9W107Zm9y
KHZhciBvIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShvKSYmaS5wdXNoKG8pO2kuc29ydCgpO2Zvcih2
YXIgYT0wLHM9aS5sZW5ndGg7YTxzO2ErKyl7bz1pW2FdO3ZhciB1PWVbb107aWYobnVsbCE9dSl7
dmFyIGw9ZW5jb2RlVVJJQ29tcG9uZW50KG8pO2lmKHIodSkpZm9yKHZhciBjPTAsZj11Lmxlbmd0
aDtjPGY7YysrKXt2YXIgZD1vKyJbXT0iK2VuY29kZVVSSUNvbXBvbmVudCh1W2NdKTtuLnB1c2go
ZCl9ZWxzZSBsKz0iPSIrZW5jb2RlVVJJQ29tcG9uZW50KHUpLG4ucHVzaChsKX19cmV0dXJuIDA9
PT1uLmxlbmd0aD8iIjoiPyIrbi5qb2luKCImIil9LHBhcnNlUXVlcnlTdHJpbmc6ZnVuY3Rpb24o
ZSl7Zm9yKHZhciB0PWUuc3BsaXQoIiYiKSxyPXt9LG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIGks
bz10W25dLnNwbGl0KCI9IiksYT1oKG9bMF0pLHM9YS5sZW5ndGgsdT0hMTsxPT09by5sZW5ndGg/
aT0idHJ1ZSI6KHM+MiYmIltdIj09PWEuc2xpY2Uocy0yKSYmKHU9ITAsYT1hLnNsaWNlKDAscy0y
KSxyW2FdfHwoclthXT1bXSkpLGk9b1sxXT9oKG9bMV0pOiIiKSx1P3JbYV0ucHVzaChpKTpyW2Fd
PWl9cmV0dXJuIHJ9LHJlY29nbml6ZTpmdW5jdGlvbihlKXt2YXIgdCxyLG4saSxvPVt0aGlzLnJv
b3RTdGF0ZV0sYT17fSxzPSExO2lmKGk9ZS5pbmRleE9mKCI/IiksaSE9PS0xKXt2YXIgdT1lLnN1
YnN0cihpKzEsZS5sZW5ndGgpO2U9ZS5zdWJzdHIoMCxpKSxhPXRoaXMucGFyc2VRdWVyeVN0cmlu
Zyh1KX1mb3IoZT1kZWNvZGVVUkkoZSksIi8iIT09ZS5jaGFyQXQoMCkmJihlPSIvIitlKSx0PWUu
bGVuZ3RoLHQ+MSYmIi8iPT09ZS5jaGFyQXQodC0xKSYmKGU9ZS5zdWJzdHIoMCx0LTEpLHM9ITAp
LHI9MCxuPWUubGVuZ3RoO3I8biYmKG89YyhvLGUuY2hhckF0KHIpKSxvLmxlbmd0aCk7cisrKTt2
YXIgZj1bXTtmb3Iocj0wLG49by5sZW5ndGg7cjxuO3IrKylvW3JdLmhhbmRsZXJzJiZmLnB1c2go
b1tyXSk7bz1sKGYpO3ZhciBwPWZbMF07aWYocCYmcC5oYW5kbGVycylyZXR1cm4gcyYmIiguKykk
Ij09PXAucmVnZXguc291cmNlLnNsaWNlKC01KSYmKGUrPSIvIiksZChwLGUsYSl9fSxnLnByb3Rv
dHlwZS5tYXA9dC5kZWZhdWx0LGcuVkVSU0lPTj0iMC4xLjUiLGUuZGVmYXVsdD1nfSksZSgicm91
dGUtcmVjb2duaXplci9kc2wiLFsiZXhwb3J0cyJdLGZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiB0KGUsdCxyKXt0aGlzLnBhdGg9ZSx0aGlzLm1hdGNoZXI9dCx0aGlzLmRlbGVnYXRl
PXJ9ZnVuY3Rpb24gcihlKXt0aGlzLnJvdXRlcz17fSx0aGlzLmNoaWxkcmVuPXt9LHRoaXMudGFy
Z2V0PWV9ZnVuY3Rpb24gbihlLHIsaSl7cmV0dXJuIGZ1bmN0aW9uKG8sYSl7dmFyIHM9ZStvO3Jl
dHVybiBhP3ZvaWQgYShuKHMscixpKSk6bmV3IHQoZStvLHIsaSl9fWZ1bmN0aW9uIGkoZSx0LHIp
e2Zvcih2YXIgbj0wLGk9MCxvPWUubGVuZ3RoO2k8bztpKyspbis9ZVtpXS5wYXRoLmxlbmd0aDt0
PXQuc3Vic3RyKG4pO3ZhciBhPXtwYXRoOnQsaGFuZGxlcjpyfTtlLnB1c2goYSl9ZnVuY3Rpb24g
byhlLHQscixuKXt2YXIgYT10LnJvdXRlcztmb3IodmFyIHMgaW4gYSlpZihhLmhhc093blByb3Bl
cnR5KHMpKXt2YXIgdT1lLnNsaWNlKCk7aSh1LHMsYVtzXSksdC5jaGlsZHJlbltzXT9vKHUsdC5j
aGlsZHJlbltzXSxyLG4pOnIuY2FsbChuLHUpfX10LnByb3RvdHlwZT17dG86ZnVuY3Rpb24oZSx0
KXt2YXIgcj10aGlzLmRlbGVnYXRlO2lmKHImJnIud2lsbEFkZFJvdXRlJiYoZT1yLndpbGxBZGRS
b3V0ZSh0aGlzLm1hdGNoZXIudGFyZ2V0LGUpKSx0aGlzLm1hdGNoZXIuYWRkKHRoaXMucGF0aCxl
KSx0KXtpZigwPT09dC5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJZb3UgbXVzdCBoYXZlIGFuIGFy
Z3VtZW50IGluIHRoZSBmdW5jdGlvbiBwYXNzZWQgdG8gYHRvYCIpO3RoaXMubWF0Y2hlci5hZGRD
aGlsZCh0aGlzLnBhdGgsZSx0LHRoaXMuZGVsZWdhdGUpfXJldHVybiB0aGlzfX0sci5wcm90b3R5
cGU9e2FkZDpmdW5jdGlvbihlLHQpe3RoaXMucm91dGVzW2VdPXR9LGFkZENoaWxkOmZ1bmN0aW9u
KGUsdCxpLG8pe3ZhciBhPW5ldyByKHQpO3RoaXMuY2hpbGRyZW5bZV09YTt2YXIgcz1uKGUsYSxv
KTtvJiZvLmNvbnRleHRFbnRlcmVkJiZvLmNvbnRleHRFbnRlcmVkKHQscyksaShzKX19LGUuZGVm
YXVsdD1mdW5jdGlvbihlLHQpe3ZhciBpPW5ldyByO2UobigiIixpLHRoaXMuZGVsZWdhdGUpKSxv
KFtdLGksZnVuY3Rpb24oZSl7dD90KHRoaXMsZSk6dGhpcy5hZGQoZSl9LHRoaXMpfX0pLGUoInJv
dXRlciIsWyJleHBvcnRzIiwicm91dGVyL3JvdXRlciJdLGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJp
Y3QiO2UuZGVmYXVsdD10LmRlZmF1bHR9KSxlKCJyb3V0ZXIvaGFuZGxlci1pbmZvIixbImV4cG9y
dHMiLCJyb3V0ZXIvdXRpbHMiLCJyc3ZwL3Byb21pc2UiXSxmdW5jdGlvbihlLHQscil7InVzZSBz
dHJpY3QiO2Z1bmN0aW9uIG4oZSl7dmFyIHI9ZXx8e307dC5tZXJnZSh0aGlzLHIpLHRoaXMuaW5p
dGlhbGl6ZShyKX1mdW5jdGlvbiBpKGUsdCl7aWYoIWVeIXQpcmV0dXJuITE7aWYoIWUpcmV0dXJu
ITA7Zm9yKHZhciByIGluIGUpaWYoZS5oYXNPd25Qcm9wZXJ0eShyKSYmZVtyXSE9PXRbcl0pcmV0
dXJuITE7cmV0dXJuITB9bi5wcm90b3R5cGU9e25hbWU6bnVsbCxoYW5kbGVyOm51bGwscGFyYW1z
Om51bGwsY29udGV4dDpudWxsLGZhY3Rvcnk6bnVsbCxpbml0aWFsaXplOmZ1bmN0aW9uKCl7fSxs
b2c6ZnVuY3Rpb24oZSx0KXtlLmxvZyYmZS5sb2codGhpcy5uYW1lKyI6ICIrdCl9LHByb21pc2VM
YWJlbDpmdW5jdGlvbihlKXtyZXR1cm4gdC5wcm9taXNlTGFiZWwoIiciK3RoaXMubmFtZSsiJyAi
K2UpfSxnZXRVbnJlc29sdmVkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LHNlcmlhbGl6ZTpmdW5j
dGlvbigpe3JldHVybiB0aGlzLnBhcmFtc3x8e319LHJlc29sdmU6ZnVuY3Rpb24oZSxuKXt2YXIg
aT10LmJpbmQodGhpcyx0aGlzLmNoZWNrRm9yQWJvcnQsZSksbz10LmJpbmQodGhpcyx0aGlzLnJ1
bkJlZm9yZU1vZGVsSG9vayxuKSxhPXQuYmluZCh0aGlzLHRoaXMuZ2V0TW9kZWwsbikscz10LmJp
bmQodGhpcyx0aGlzLnJ1bkFmdGVyTW9kZWxIb29rLG4pLHU9dC5iaW5kKHRoaXMsdGhpcy5iZWNv
bWVSZXNvbHZlZCxuKTtyZXR1cm4gci5kZWZhdWx0LnJlc29sdmUodm9pZCAwLHRoaXMucHJvbWlz
ZUxhYmVsKCJTdGFydCBoYW5kbGVyIikpLnRoZW4oaSxudWxsLHRoaXMucHJvbWlzZUxhYmVsKCJD
aGVjayBmb3IgYWJvcnQiKSkudGhlbihvLG51bGwsdGhpcy5wcm9taXNlTGFiZWwoIkJlZm9yZSBt
b2RlbCIpKS50aGVuKGksbnVsbCx0aGlzLnByb21pc2VMYWJlbCgiQ2hlY2sgaWYgYWJvcnRlZCBk
dXJpbmcgJ2JlZm9yZU1vZGVsJyBob29rIikpLnRoZW4oYSxudWxsLHRoaXMucHJvbWlzZUxhYmVs
KCJNb2RlbCIpKS50aGVuKGksbnVsbCx0aGlzLnByb21pc2VMYWJlbCgiQ2hlY2sgaWYgYWJvcnRl
ZCBpbiAnbW9kZWwnIGhvb2siKSkudGhlbihzLG51bGwsdGhpcy5wcm9taXNlTGFiZWwoIkFmdGVy
IG1vZGVsIikpLnRoZW4oaSxudWxsLHRoaXMucHJvbWlzZUxhYmVsKCJDaGVjayBpZiBhYm9ydGVk
IGluICdhZnRlck1vZGVsJyBob29rIikpLnRoZW4odSxudWxsLHRoaXMucHJvbWlzZUxhYmVsKCJC
ZWNvbWUgcmVzb2x2ZWQiKSl9LHJ1bkJlZm9yZU1vZGVsSG9vazpmdW5jdGlvbihlKXtyZXR1cm4g
ZS50cmlnZ2VyJiZlLnRyaWdnZXIoITAsIndpbGxSZXNvbHZlTW9kZWwiLGUsdGhpcy5oYW5kbGVy
KSx0aGlzLnJ1blNoYXJlZE1vZGVsSG9vayhlLCJiZWZvcmVNb2RlbCIsW10pfSxydW5BZnRlck1v
ZGVsSG9vazpmdW5jdGlvbihlLHQpe3ZhciByPXRoaXMubmFtZTtyZXR1cm4gdGhpcy5zdGFzaFJl
c29sdmVkTW9kZWwoZSx0KSx0aGlzLnJ1blNoYXJlZE1vZGVsSG9vayhlLCJhZnRlck1vZGVsIixb
dF0pLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gZS5yZXNvbHZlZE1vZGVsc1tyXX0sbnVsbCx0aGlz
LnByb21pc2VMYWJlbCgiSWdub3JlIGZ1bGZpbGxtZW50IHZhbHVlIGFuZCByZXR1cm4gbW9kZWwg
dmFsdWUiKSl9LHJ1blNoYXJlZE1vZGVsSG9vazpmdW5jdGlvbihlLG4saSl7dGhpcy5sb2coZSwi
Y2FsbGluZyAiK24rIiBob29rIiksdGhpcy5xdWVyeVBhcmFtcyYmaS5wdXNoKHRoaXMucXVlcnlQ
YXJhbXMpLGkucHVzaChlKTt2YXIgbz10LmFwcGx5SG9vayh0aGlzLmhhbmRsZXIsbixpKTtyZXR1
cm4gbyYmby5pc1RyYW5zaXRpb24mJihvPW51bGwpLHIuZGVmYXVsdC5yZXNvbHZlKG8sdGhpcy5w
cm9taXNlTGFiZWwoIlJlc29sdmUgdmFsdWUgcmV0dXJuZWQgZnJvbSBvbmUgb2YgdGhlIG1vZGVs
IGhvb2tzIikpOworfSxnZXRNb2RlbDpudWxsLGNoZWNrRm9yQWJvcnQ6ZnVuY3Rpb24oZSx0KXty
ZXR1cm4gci5kZWZhdWx0LnJlc29sdmUoZSgpLHRoaXMucHJvbWlzZUxhYmVsKCJDaGVjayBmb3Ig
YWJvcnQiKSkudGhlbihmdW5jdGlvbigpe3JldHVybiB0fSxudWxsLHRoaXMucHJvbWlzZUxhYmVs
KCJJZ25vcmUgZnVsZmlsbG1lbnQgdmFsdWUgYW5kIGNvbnRpbnVlIikpfSxzdGFzaFJlc29sdmVk
TW9kZWw6ZnVuY3Rpb24oZSx0KXtlLnJlc29sdmVkTW9kZWxzPWUucmVzb2x2ZWRNb2RlbHN8fHt9
LGUucmVzb2x2ZWRNb2RlbHNbdGhpcy5uYW1lXT10fSxiZWNvbWVSZXNvbHZlZDpmdW5jdGlvbihl
LHQpe3ZhciByPXRoaXMuc2VyaWFsaXplKHQpO3JldHVybiBlJiYodGhpcy5zdGFzaFJlc29sdmVk
TW9kZWwoZSx0KSxlLnBhcmFtcz1lLnBhcmFtc3x8e30sZS5wYXJhbXNbdGhpcy5uYW1lXT1yKSx0
aGlzLmZhY3RvcnkoInJlc29sdmVkIix7Y29udGV4dDp0LG5hbWU6dGhpcy5uYW1lLGhhbmRsZXI6
dGhpcy5oYW5kbGVyLHBhcmFtczpyfSl9LHNob3VsZFN1cGVyY2VkZTpmdW5jdGlvbihlKXtpZigh
ZSlyZXR1cm4hMDt2YXIgdD1lLmNvbnRleHQ9PT10aGlzLmNvbnRleHQ7cmV0dXJuIGUubmFtZSE9
PXRoaXMubmFtZXx8dGhpcy5oYXNPd25Qcm9wZXJ0eSgiY29udGV4dCIpJiYhdHx8dGhpcy5oYXNP
d25Qcm9wZXJ0eSgicGFyYW1zIikmJiFpKHRoaXMucGFyYW1zLGUucGFyYW1zKX19LGUuZGVmYXVs
dD1ufSksZSgicm91dGVyL2hhbmRsZXItaW5mby9mYWN0b3J5IixbImV4cG9ydHMiLCJyb3V0ZXIv
aGFuZGxlci1pbmZvL3Jlc29sdmVkLWhhbmRsZXItaW5mbyIsInJvdXRlci9oYW5kbGVyLWluZm8v
dW5yZXNvbHZlZC1oYW5kbGVyLWluZm8tYnktb2JqZWN0Iiwicm91dGVyL2hhbmRsZXItaW5mby91
bnJlc29sdmVkLWhhbmRsZXItaW5mby1ieS1wYXJhbSJdLGZ1bmN0aW9uKGUsdCxyLG4peyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiBpKGUsdCl7dmFyIHI9aS5rbGFzc2VzW2VdLG49bmV3IHIodHx8e30p
O3JldHVybiBuLmZhY3Rvcnk9aSxufWkua2xhc3Nlcz17cmVzb2x2ZWQ6dC5kZWZhdWx0LHBhcmFt
Om4uZGVmYXVsdCxvYmplY3Q6ci5kZWZhdWx0fSxlLmRlZmF1bHQ9aX0pLGUoInJvdXRlci9oYW5k
bGVyLWluZm8vcmVzb2x2ZWQtaGFuZGxlci1pbmZvIixbImV4cG9ydHMiLCJyb3V0ZXIvaGFuZGxl
ci1pbmZvIiwicm91dGVyL3V0aWxzIiwicnN2cC9wcm9taXNlIl0sZnVuY3Rpb24oZSx0LHIsbil7
InVzZSBzdHJpY3QiO3ZhciBpPXIuc3ViY2xhc3ModC5kZWZhdWx0LHtyZXNvbHZlOmZ1bmN0aW9u
KGUsdCl7cmV0dXJuIHQmJnQucmVzb2x2ZWRNb2RlbHMmJih0LnJlc29sdmVkTW9kZWxzW3RoaXMu
bmFtZV09dGhpcy5jb250ZXh0KSxuLmRlZmF1bHQucmVzb2x2ZSh0aGlzLHRoaXMucHJvbWlzZUxh
YmVsKCJSZXNvbHZlIikpfSxnZXRVbnJlc29sdmVkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmFj
dG9yeSgicGFyYW0iLHtuYW1lOnRoaXMubmFtZSxoYW5kbGVyOnRoaXMuaGFuZGxlcixwYXJhbXM6
dGhpcy5wYXJhbXN9KX0saXNSZXNvbHZlZDohMH0pO2UuZGVmYXVsdD1pfSksZSgicm91dGVyL2hh
bmRsZXItaW5mby91bnJlc29sdmVkLWhhbmRsZXItaW5mby1ieS1vYmplY3QiLFsiZXhwb3J0cyIs
InJvdXRlci9oYW5kbGVyLWluZm8iLCJyb3V0ZXIvdXRpbHMiLCJyc3ZwL3Byb21pc2UiXSxmdW5j
dGlvbihlLHQscixuKXsidXNlIHN0cmljdCI7dmFyIGk9ci5zdWJjbGFzcyh0LmRlZmF1bHQse2dl
dE1vZGVsOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmxvZyhlLHRoaXMubmFtZSsiOiByZXNvbHZp
bmcgcHJvdmlkZWQgbW9kZWwiKSxuLmRlZmF1bHQucmVzb2x2ZSh0aGlzLmNvbnRleHQpfSxpbml0
aWFsaXplOmZ1bmN0aW9uKGUpe3RoaXMubmFtZXM9ZS5uYW1lc3x8W10sdGhpcy5jb250ZXh0PWUu
Y29udGV4dH0sc2VyaWFsaXplOmZ1bmN0aW9uKGUpe3ZhciB0PWV8fHRoaXMuY29udGV4dCxuPXRo
aXMubmFtZXMsaT10aGlzLmhhbmRsZXIsbz17fTtpZihyLmlzUGFyYW0odCkpcmV0dXJuIG9bblsw
XV09dCxvO2lmKGkuc2VyaWFsaXplKXJldHVybiBpLnNlcmlhbGl6ZSh0LG4pO2lmKDE9PT1uLmxl
bmd0aCl7dmFyIGE9blswXTtyZXR1cm4vX2lkJC8udGVzdChhKT9vW2FdPXQuaWQ6b1thXT10LG99
fX0pO2UuZGVmYXVsdD1pfSksZSgicm91dGVyL2hhbmRsZXItaW5mby91bnJlc29sdmVkLWhhbmRs
ZXItaW5mby1ieS1wYXJhbSIsWyJleHBvcnRzIiwicm91dGVyL2hhbmRsZXItaW5mbyIsInJvdXRl
ci91dGlscyJdLGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49ci5zdWJjbGFzcyh0
LmRlZmF1bHQse2luaXRpYWxpemU6ZnVuY3Rpb24oZSl7dGhpcy5wYXJhbXM9ZS5wYXJhbXN8fHt9
fSxnZXRNb2RlbDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnBhcmFtcztlJiZlLnF1ZXJ5UGFyYW1z
JiYodD17fSxyLm1lcmdlKHQsdGhpcy5wYXJhbXMpLHQucXVlcnlQYXJhbXM9ZS5xdWVyeVBhcmFt
cyk7dmFyIG49dGhpcy5oYW5kbGVyLGk9ci5yZXNvbHZlSG9vayhuLCJkZXNlcmlhbGl6ZSIpfHxy
LnJlc29sdmVIb29rKG4sIm1vZGVsIik7cmV0dXJuIHRoaXMucnVuU2hhcmVkTW9kZWxIb29rKGUs
aSxbdF0pfX0pO2UuZGVmYXVsdD1ufSksZSgicm91dGVyL3JvdXRlciIsWyJleHBvcnRzIiwicm91
dGUtcmVjb2duaXplciIsInJzdnAvcHJvbWlzZSIsInJvdXRlci91dGlscyIsInJvdXRlci90cmFu
c2l0aW9uLXN0YXRlIiwicm91dGVyL3RyYW5zaXRpb24iLCJyb3V0ZXIvdHJhbnNpdGlvbi1pbnRl
bnQvbmFtZWQtdHJhbnNpdGlvbi1pbnRlbnQiLCJyb3V0ZXIvdHJhbnNpdGlvbi1pbnRlbnQvdXJs
LXRyYW5zaXRpb24taW50ZW50Iiwicm91dGVyL2hhbmRsZXItaW5mbyJdLGZ1bmN0aW9uKGUsdCxy
LG4saSxvLGEscyx1KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbChlKXt2YXIgcj1lfHx7fTt0aGlz
LmdldEhhbmRsZXI9ci5nZXRIYW5kbGVyfHx0aGlzLmdldEhhbmRsZXIsdGhpcy51cGRhdGVVUkw9
ci51cGRhdGVVUkx8fHRoaXMudXBkYXRlVVJMLHRoaXMucmVwbGFjZVVSTD1yLnJlcGxhY2VVUkx8
fHRoaXMucmVwbGFjZVVSTCx0aGlzLmRpZFRyYW5zaXRpb249ci5kaWRUcmFuc2l0aW9ufHx0aGlz
LmRpZFRyYW5zaXRpb24sdGhpcy53aWxsVHJhbnNpdGlvbj1yLndpbGxUcmFuc2l0aW9ufHx0aGlz
LndpbGxUcmFuc2l0aW9uLHRoaXMuZGVsZWdhdGU9ci5kZWxlZ2F0ZXx8dGhpcy5kZWxlZ2F0ZSx0
aGlzLnRyaWdnZXJFdmVudD1yLnRyaWdnZXJFdmVudHx8dGhpcy50cmlnZ2VyRXZlbnQsdGhpcy5s
b2c9ci5sb2d8fHRoaXMubG9nLHRoaXMucmVjb2duaXplcj1uZXcgdC5kZWZhdWx0LHRoaXMucmVz
ZXQoKX1mdW5jdGlvbiBjKGUsdCl7dmFyIHIsaT0hIXRoaXMuYWN0aXZlVHJhbnNpdGlvbixhPWk/
dGhpcy5hY3RpdmVUcmFuc2l0aW9uLnN0YXRlOnRoaXMuc3RhdGUscz1lLmFwcGx5VG9TdGF0ZShh
LHRoaXMucmVjb2duaXplcix0aGlzLmdldEhhbmRsZXIsdCksdT1uLmdldENoYW5nZWxpc3QoYS5x
dWVyeVBhcmFtcyxzLnF1ZXJ5UGFyYW1zKTtyZXR1cm4gZyhzLmhhbmRsZXJJbmZvcyxhLmhhbmRs
ZXJJbmZvcyk/dSYmKHI9dGhpcy5xdWVyeVBhcmFtc1RyYW5zaXRpb24odSxpLGEscykpP3I6dGhp
cy5hY3RpdmVUcmFuc2l0aW9ufHxuZXcgby5UcmFuc2l0aW9uKHRoaXMpOnQ/dm9pZCBkKHRoaXMs
cyk6KHI9bmV3IG8uVHJhbnNpdGlvbih0aGlzLGUscyksdGhpcy5hY3RpdmVUcmFuc2l0aW9uJiZ0
aGlzLmFjdGl2ZVRyYW5zaXRpb24uYWJvcnQoKSx0aGlzLmFjdGl2ZVRyYW5zaXRpb249cixyLnBy
b21pc2U9ci5wcm9taXNlLnRoZW4oZnVuY3Rpb24oZSl7cmV0dXJuIHYocixlLnN0YXRlKX0sbnVs
bCxuLnByb21pc2VMYWJlbCgiU2V0dGxlIHRyYW5zaXRpb24gcHJvbWlzZSB3aGVuIHRyYW5zaXRp
b24gaXMgZmluYWxpemVkIikpLGl8fF8odGhpcyxzLHIpLGYodGhpcyxzLHUpLHIpfWZ1bmN0aW9u
IGYoZSx0LHIpe3ImJihlLl9jaGFuZ2VkUXVlcnlQYXJhbXM9ci5hbGwsbi50cmlnZ2VyKGUsdC5o
YW5kbGVySW5mb3MsITAsWyJxdWVyeVBhcmFtc0RpZENoYW5nZSIsci5jaGFuZ2VkLHIuYWxsLHIu
cmVtb3ZlZF0pLGUuX2NoYW5nZWRRdWVyeVBhcmFtcz1udWxsKX1mdW5jdGlvbiBkKGUsdCxyKXt2
YXIgaSxvLGEscz1oKGUuc3RhdGUsdCk7Zm9yKGk9MCxvPXMuZXhpdGVkLmxlbmd0aDtpPG87aSsr
KWE9cy5leGl0ZWRbaV0uaGFuZGxlcixkZWxldGUgYS5jb250ZXh0LG4uY2FsbEhvb2soYSwicmVz
ZXQiLCEwLHIpLG4uY2FsbEhvb2soYSwiZXhpdCIscik7dmFyIHU9ZS5vbGRTdGF0ZT1lLnN0YXRl
O2Uuc3RhdGU9dDt2YXIgbD1lLmN1cnJlbnRIYW5kbGVySW5mb3M9cy51bmNoYW5nZWQuc2xpY2Uo
KTt0cnl7Zm9yKGk9MCxvPXMucmVzZXQubGVuZ3RoO2k8bztpKyspYT1zLnJlc2V0W2ldLmhhbmRs
ZXIsbi5jYWxsSG9vayhhLCJyZXNldCIsITEscik7Zm9yKGk9MCxvPXMudXBkYXRlZENvbnRleHQu
bGVuZ3RoO2k8bztpKyspcChsLHMudXBkYXRlZENvbnRleHRbaV0sITEscik7Zm9yKGk9MCxvPXMu
ZW50ZXJlZC5sZW5ndGg7aTxvO2krKylwKGwscy5lbnRlcmVkW2ldLCEwLHIpfWNhdGNoKHQpe3Ro
cm93IGUuc3RhdGU9dSxlLmN1cnJlbnRIYW5kbGVySW5mb3M9dS5oYW5kbGVySW5mb3MsdH1lLnN0
YXRlLnF1ZXJ5UGFyYW1zPXkoZSxsLHQucXVlcnlQYXJhbXMscil9ZnVuY3Rpb24gcChlLHQscixp
KXt2YXIgYT10LmhhbmRsZXIscz10LmNvbnRleHQ7aWYociYmbi5jYWxsSG9vayhhLCJlbnRlciIs
aSksaSYmaS5pc0Fib3J0ZWQpdGhyb3cgbmV3IG8uVHJhbnNpdGlvbkFib3J0ZWQ7aWYoYS5jb250
ZXh0PXMsbi5jYWxsSG9vayhhLCJjb250ZXh0RGlkQ2hhbmdlIiksbi5jYWxsSG9vayhhLCJzZXR1
cCIscyxpKSxpJiZpLmlzQWJvcnRlZCl0aHJvdyBuZXcgby5UcmFuc2l0aW9uQWJvcnRlZDtyZXR1
cm4gZS5wdXNoKHQpLCEwfWZ1bmN0aW9uIGgoZSx0KXt2YXIgcixuLGksbz1lLmhhbmRsZXJJbmZv
cyxhPXQuaGFuZGxlckluZm9zLHM9e3VwZGF0ZWRDb250ZXh0OltdLGV4aXRlZDpbXSxlbnRlcmVk
OltdLHVuY2hhbmdlZDpbXX0sdT0hMTtmb3Iobj0wLGk9YS5sZW5ndGg7bjxpO24rKyl7dmFyIGw9
b1tuXSxjPWFbbl07bCYmbC5oYW5kbGVyPT09Yy5oYW5kbGVyfHwocj0hMCkscj8ocy5lbnRlcmVk
LnB1c2goYyksbCYmcy5leGl0ZWQudW5zaGlmdChsKSk6dXx8bC5jb250ZXh0IT09Yy5jb250ZXh0
Pyh1PSEwLHMudXBkYXRlZENvbnRleHQucHVzaChjKSk6cy51bmNoYW5nZWQucHVzaChsKX1mb3Io
bj1hLmxlbmd0aCxpPW8ubGVuZ3RoO248aTtuKyspcy5leGl0ZWQudW5zaGlmdChvW25dKTtyZXR1
cm4gcy5yZXNldD1zLnVwZGF0ZWRDb250ZXh0LnNsaWNlKCkscy5yZXNldC5yZXZlcnNlKCksc31m
dW5jdGlvbiBtKGUsdCxyKXt2YXIgaT1lLnVybE1ldGhvZDtpZihpKXtmb3IodmFyIG89ZS5yb3V0
ZXIsYT10LmhhbmRsZXJJbmZvcyxzPWFbYS5sZW5ndGgtMV0ubmFtZSx1PXt9LGw9YS5sZW5ndGgt
MTtsPj0wOy0tbCl7dmFyIGM9YVtsXTtuLm1lcmdlKHUsYy5wYXJhbXMpLGMuaGFuZGxlci5pbmFj
Y2Vzc2libGVCeVVSTCYmKGk9bnVsbCl9aWYoaSl7dS5xdWVyeVBhcmFtcz1lLl92aXNpYmxlUXVl
cnlQYXJhbXN8fHQucXVlcnlQYXJhbXM7dmFyIGY9by5yZWNvZ25pemVyLmdlbmVyYXRlKHMsdSk7
InJlcGxhY2UiPT09aT9vLnJlcGxhY2VVUkwoZik6by51cGRhdGVVUkwoZil9fX1mdW5jdGlvbiB2
KGUsdCl7dHJ5e24ubG9nKGUucm91dGVyLGUuc2VxdWVuY2UsIlJlc29sdmVkIGFsbCBtb2RlbHMg
b24gZGVzdGluYXRpb24gcm91dGU7IGZpbmFsaXppbmcgdHJhbnNpdGlvbi4iKTt2YXIgaT1lLnJv
dXRlcixhPXQuaGFuZGxlckluZm9zO2Uuc2VxdWVuY2U7cmV0dXJuIGQoaSx0LGUpLGUuaXNBYm9y
dGVkPyhpLnN0YXRlLmhhbmRsZXJJbmZvcz1pLmN1cnJlbnRIYW5kbGVySW5mb3Msci5kZWZhdWx0
LnJlamVjdChvLmxvZ0Fib3J0KGUpKSk6KG0oZSx0LGUuaW50ZW50LnVybCksZS5pc0FjdGl2ZT0h
MSxpLmFjdGl2ZVRyYW5zaXRpb249bnVsbCxuLnRyaWdnZXIoaSxpLmN1cnJlbnRIYW5kbGVySW5m
b3MsITAsWyJkaWRUcmFuc2l0aW9uIl0pLGkuZGlkVHJhbnNpdGlvbiYmaS5kaWRUcmFuc2l0aW9u
KGkuY3VycmVudEhhbmRsZXJJbmZvcyksbi5sb2coaSxlLnNlcXVlbmNlLCJUUkFOU0lUSU9OIENP
TVBMRVRFLiIpLGFbYS5sZW5ndGgtMV0uaGFuZGxlcil9Y2F0Y2godCl7aWYoISh0IGluc3RhbmNl
b2Ygby5UcmFuc2l0aW9uQWJvcnRlZCkpe3ZhciBzPWUuc3RhdGUuaGFuZGxlckluZm9zO2UudHJp
Z2dlcighMCwiZXJyb3IiLHQsZSxzW3MubGVuZ3RoLTFdLmhhbmRsZXIpLGUuYWJvcnQoKX10aHJv
dyB0fX1mdW5jdGlvbiBiKGUsdCxyKXt2YXIgaT10WzBdfHwiLyIsbz10W3QubGVuZ3RoLTFdLHU9
e307byYmby5oYXNPd25Qcm9wZXJ0eSgicXVlcnlQYXJhbXMiKSYmKHU9dy5jYWxsKHQpLnF1ZXJ5
UGFyYW1zKTt2YXIgbDtpZigwPT09dC5sZW5ndGgpe24ubG9nKGUsIlVwZGF0aW5nIHF1ZXJ5IHBh
cmFtcyIpO3ZhciBjPWUuc3RhdGUuaGFuZGxlckluZm9zO2w9bmV3IGEuZGVmYXVsdCh7bmFtZTpj
W2MubGVuZ3RoLTFdLm5hbWUsY29udGV4dHM6W10scXVlcnlQYXJhbXM6dX0pfWVsc2UiLyI9PT1p
LmNoYXJBdCgwKT8obi5sb2coZSwiQXR0ZW1wdGluZyBVUkwgdHJhbnNpdGlvbiB0byAiK2kpLGw9
bmV3IHMuZGVmYXVsdCh7dXJsOml9KSk6KG4ubG9nKGUsIkF0dGVtcHRpbmcgdHJhbnNpdGlvbiB0
byAiK2kpLGw9bmV3IGEuZGVmYXVsdCh7bmFtZTp0WzBdLGNvbnRleHRzOm4uc2xpY2UuY2FsbCh0
LDEpLHF1ZXJ5UGFyYW1zOnV9KSk7cmV0dXJuIGUudHJhbnNpdGlvbkJ5SW50ZW50KGwscil9ZnVu
Y3Rpb24gZyhlLHQpe2lmKGUubGVuZ3RoIT09dC5sZW5ndGgpcmV0dXJuITE7Zm9yKHZhciByPTAs
bj1lLmxlbmd0aDtyPG47KytyKWlmKGVbcl0hPT10W3JdKXJldHVybiExO3JldHVybiEwfWZ1bmN0
aW9uIHkoZSx0LHIsaSl7Zm9yKHZhciBvIGluIHIpci5oYXNPd25Qcm9wZXJ0eShvKSYmbnVsbD09
PXJbb10mJmRlbGV0ZSByW29dO3ZhciBhPVtdO24udHJpZ2dlcihlLHQsITAsWyJmaW5hbGl6ZVF1
ZXJ5UGFyYW1DaGFuZ2UiLHIsYSxpXSksaSYmKGkuX3Zpc2libGVRdWVyeVBhcmFtcz17fSk7Zm9y
KHZhciBzPXt9LHU9MCxsPWEubGVuZ3RoO3U8bDsrK3Upe3ZhciBjPWFbdV07c1tjLmtleV09Yy52
YWx1ZSxpJiZjLnZpc2libGUhPT0hMSYmKGkuX3Zpc2libGVRdWVyeVBhcmFtc1tjLmtleV09Yy52
YWx1ZSl9cmV0dXJuIHN9ZnVuY3Rpb24gXyhlLHQscil7dmFyIGksbyxhLHMsdSxsLGM9ZS5zdGF0
ZS5oYW5kbGVySW5mb3MsZj1bXSxkPW51bGw7Zm9yKHM9Yy5sZW5ndGgsYT0wO2E8czthKyspe2lm
KHU9Y1thXSxsPXQuaGFuZGxlckluZm9zW2FdLCFsfHx1Lm5hbWUhPT1sLm5hbWUpe2Q9YTticmVh
a31sLmlzUmVzb2x2ZWR8fGYucHVzaCh1KX1udWxsIT09ZCYmKGk9Yy5zbGljZShkLHMpLG89ZnVu
Y3Rpb24oZSl7Zm9yKHZhciB0PTAscj1pLmxlbmd0aDt0PHI7dCsrKWlmKGlbdF0ubmFtZT09PWUp
cmV0dXJuITA7cmV0dXJuITF9KSxuLnRyaWdnZXIoZSxjLCEwLFsid2lsbFRyYW5zaXRpb24iLHJd
KSxlLndpbGxUcmFuc2l0aW9uJiZlLndpbGxUcmFuc2l0aW9uKGMsdC5oYW5kbGVySW5mb3Mscil9
dmFyIHc9QXJyYXkucHJvdG90eXBlLnBvcDtsLnByb3RvdHlwZT17bWFwOmZ1bmN0aW9uKGUpe3Ro
aXMucmVjb2duaXplci5kZWxlZ2F0ZT10aGlzLmRlbGVnYXRlLHRoaXMucmVjb2duaXplci5tYXAo
ZSxmdW5jdGlvbihlLHQpe2Zvcih2YXIgcj10Lmxlbmd0aC0xLG49ITA7cj49MCYmbjstLXIpe3Zh
ciBpPXRbcl07ZS5hZGQodCx7YXM6aS5oYW5kbGVyfSksbj0iLyI9PT1pLnBhdGh8fCIiPT09aS5w
YXRofHwiLmluZGV4Ij09PWkuaGFuZGxlci5zbGljZSgtNil9fSl9LGhhc1JvdXRlOmZ1bmN0aW9u
KGUpe3JldHVybiB0aGlzLnJlY29nbml6ZXIuaGFzUm91dGUoZSl9LGdldEhhbmRsZXI6ZnVuY3Rp
b24oKXt9LHF1ZXJ5UGFyYW1zVHJhbnNpdGlvbjpmdW5jdGlvbihlLHQscixpKXt2YXIgYT10aGlz
O2lmKGYodGhpcyxpLGUpLCF0JiZ0aGlzLmFjdGl2ZVRyYW5zaXRpb24pcmV0dXJuIHRoaXMuYWN0
aXZlVHJhbnNpdGlvbjt2YXIgcz1uZXcgby5UcmFuc2l0aW9uKHRoaXMpO3JldHVybiBzLnF1ZXJ5
UGFyYW1zT25seT0hMCxyLnF1ZXJ5UGFyYW1zPXkodGhpcyxpLmhhbmRsZXJJbmZvcyxpLnF1ZXJ5
UGFyYW1zLHMpLHMucHJvbWlzZT1zLnByb21pc2UudGhlbihmdW5jdGlvbihlKXtyZXR1cm4gbShz
LHIsITApLGEuZGlkVHJhbnNpdGlvbiYmYS5kaWRUcmFuc2l0aW9uKGEuY3VycmVudEhhbmRsZXJJ
bmZvcyksZX0sbnVsbCxuLnByb21pc2VMYWJlbCgiVHJhbnNpdGlvbiBjb21wbGV0ZSIpKSxzfSx0
cmFuc2l0aW9uQnlJbnRlbnQ6ZnVuY3Rpb24oZSx0KXt0cnl7cmV0dXJuIGMuYXBwbHkodGhpcyxh
cmd1bWVudHMpfWNhdGNoKHQpe3JldHVybiBuZXcgby5UcmFuc2l0aW9uKHRoaXMsZSxudWxsLHQp
fX0scmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLnN0YXRlJiZuLmZvckVhY2godGhpcy5zdGF0ZS5oYW5k
bGVySW5mb3Muc2xpY2UoKS5yZXZlcnNlKCksZnVuY3Rpb24oZSl7dmFyIHQ9ZS5oYW5kbGVyO24u
Y2FsbEhvb2sodCwiZXhpdCIpfSksdGhpcy5zdGF0ZT1uZXcgaS5kZWZhdWx0LHRoaXMuY3VycmVu
dEhhbmRsZXJJbmZvcz1udWxsfSxhY3RpdmVUcmFuc2l0aW9uOm51bGwsaGFuZGxlVVJMOmZ1bmN0
aW9uKGUpe3ZhciB0PW4uc2xpY2UuY2FsbChhcmd1bWVudHMpO3JldHVybiIvIiE9PWUuY2hhckF0
KDApJiYodFswXT0iLyIrZSksYih0aGlzLHQpLm1ldGhvZChudWxsKX0sdXBkYXRlVVJMOmZ1bmN0
aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJ1cGRhdGVVUkwgaXMgbm90IGltcGxlbWVudGVkIil9LHJl
cGxhY2VVUkw6ZnVuY3Rpb24oZSl7dGhpcy51cGRhdGVVUkwoZSl9LHRyYW5zaXRpb25UbzpmdW5j
dGlvbihlKXtyZXR1cm4gYih0aGlzLGFyZ3VtZW50cyl9LGludGVybWVkaWF0ZVRyYW5zaXRpb25U
bzpmdW5jdGlvbihlKXtyZXR1cm4gYih0aGlzLGFyZ3VtZW50cywhMCl9LHJlZnJlc2g6ZnVuY3Rp
b24oZSl7Zm9yKHZhciB0PXRoaXMuYWN0aXZlVHJhbnNpdGlvbj90aGlzLmFjdGl2ZVRyYW5zaXRp
b24uc3RhdGU6dGhpcy5zdGF0ZSxyPXQuaGFuZGxlckluZm9zLGk9e30sbz0wLHM9ci5sZW5ndGg7
bzxzOysrbyl7dmFyIHU9cltvXTtpW3UubmFtZV09dS5wYXJhbXN8fHt9fW4ubG9nKHRoaXMsIlN0
YXJ0aW5nIGEgcmVmcmVzaCB0cmFuc2l0aW9uIik7dmFyIGw9bmV3IGEuZGVmYXVsdCh7bmFtZTpy
W3IubGVuZ3RoLTFdLm5hbWUscGl2b3RIYW5kbGVyOmV8fHJbMF0uaGFuZGxlcixjb250ZXh0czpb
XSxxdWVyeVBhcmFtczp0aGlzLl9jaGFuZ2VkUXVlcnlQYXJhbXN8fHQucXVlcnlQYXJhbXN8fHt9
fSk7cmV0dXJuIHRoaXMudHJhbnNpdGlvbkJ5SW50ZW50KGwsITEpfSxyZXBsYWNlV2l0aDpmdW5j
dGlvbihlKXtyZXR1cm4gYih0aGlzLGFyZ3VtZW50cykubWV0aG9kKCJyZXBsYWNlIil9LGdlbmVy
YXRlOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1uLmV4dHJhY3RRdWVyeVBhcmFtcyhuLnNsaWNlLmNh
bGwoYXJndW1lbnRzLDEpKSxyPXRbMF0saT10WzFdLG89bmV3IGEuZGVmYXVsdCh7bmFtZTplLGNv
bnRleHRzOnJ9KSxzPW8uYXBwbHlUb1N0YXRlKHRoaXMuc3RhdGUsdGhpcy5yZWNvZ25pemVyLHRo
aXMuZ2V0SGFuZGxlciksdT17fSxsPTAsYz1zLmhhbmRsZXJJbmZvcy5sZW5ndGg7bDxjOysrbCl7
dmFyIGY9cy5oYW5kbGVySW5mb3NbbF0sZD1mLnNlcmlhbGl6ZSgpO24ubWVyZ2UodSxkKX1yZXR1
cm4gdS5xdWVyeVBhcmFtcz1pLHRoaXMucmVjb2duaXplci5nZW5lcmF0ZShlLHUpfSxhcHBseUlu
dGVudDpmdW5jdGlvbihlLHQpe3ZhciByPW5ldyBhLmRlZmF1bHQoe25hbWU6ZSxjb250ZXh0czp0
fSksbj10aGlzLmFjdGl2ZVRyYW5zaXRpb24mJnRoaXMuYWN0aXZlVHJhbnNpdGlvbi5zdGF0ZXx8
dGhpcy5zdGF0ZTtyZXR1cm4gci5hcHBseVRvU3RhdGUobix0aGlzLnJlY29nbml6ZXIsdGhpcy5n
ZXRIYW5kbGVyKX0saXNBY3RpdmVJbnRlbnQ6ZnVuY3Rpb24oZSx0LHIsbyl7dmFyIHMsdSxsPW98
fHRoaXMuc3RhdGUsYz1sLmhhbmRsZXJJbmZvcztpZighYy5sZW5ndGgpcmV0dXJuITE7dmFyIGY9
Y1tjLmxlbmd0aC0xXS5uYW1lLGQ9dGhpcy5yZWNvZ25pemVyLmhhbmRsZXJzRm9yKGYpLHA9MDtm
b3IodT1kLmxlbmd0aDtwPHUmJihzPWNbcF0scy5uYW1lIT09ZSk7KytwKTtpZihwPT09ZC5sZW5n
dGgpcmV0dXJuITE7dmFyIGg9bmV3IGkuZGVmYXVsdDtoLmhhbmRsZXJJbmZvcz1jLnNsaWNlKDAs
cCsxKSxkPWQuc2xpY2UoMCxwKzEpO3ZhciBtPW5ldyBhLmRlZmF1bHQoe25hbWU6Zixjb250ZXh0
czp0fSksdj1tLmFwcGx5VG9IYW5kbGVycyhoLGQsdGhpcy5nZXRIYW5kbGVyLGYsITAsITApLGI9
Zyh2LmhhbmRsZXJJbmZvcyxoLmhhbmRsZXJJbmZvcyk7aWYoIXJ8fCFiKXJldHVybiBiO3ZhciB5
PXt9O24ubWVyZ2UoeSxyKTt2YXIgXz1sLnF1ZXJ5UGFyYW1zO2Zvcih2YXIgdyBpbiBfKV8uaGFz
T3duUHJvcGVydHkodykmJnkuaGFzT3duUHJvcGVydHkodykmJih5W3ddPV9bd10pO3JldHVybiBi
JiYhbi5nZXRDaGFuZ2VsaXN0KHkscil9LGlzQWN0aXZlOmZ1bmN0aW9uKGUpe3ZhciB0PW4uZXh0
cmFjdFF1ZXJ5UGFyYW1zKG4uc2xpY2UuY2FsbChhcmd1bWVudHMsMSkpO3JldHVybiB0aGlzLmlz
QWN0aXZlSW50ZW50KGUsdFswXSx0WzFdKX0sdHJpZ2dlcjpmdW5jdGlvbihlKXt2YXIgdD1uLnNs
aWNlLmNhbGwoYXJndW1lbnRzKTtuLnRyaWdnZXIodGhpcyx0aGlzLmN1cnJlbnRIYW5kbGVySW5m
b3MsITEsdCl9LGxvZzpudWxsfSxlLmRlZmF1bHQ9bH0pLGUoInJvdXRlci90cmFuc2l0aW9uLWlu
dGVudCIsWyJleHBvcnRzIiwicm91dGVyL3V0aWxzIl0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gcihlKXt0aGlzLmluaXRpYWxpemUoZSksdGhpcy5kYXRhPXRoaXMuZGF0YXx8
e319ci5wcm90b3R5cGU9e2luaXRpYWxpemU6bnVsbCxhcHBseVRvU3RhdGU6bnVsbH0sZS5kZWZh
dWx0PXJ9KSxlKCJyb3V0ZXIvdHJhbnNpdGlvbi1pbnRlbnQvbmFtZWQtdHJhbnNpdGlvbi1pbnRl
bnQiLFsiZXhwb3J0cyIsInJvdXRlci90cmFuc2l0aW9uLWludGVudCIsInJvdXRlci90cmFuc2l0
aW9uLXN0YXRlIiwicm91dGVyL2hhbmRsZXItaW5mby9mYWN0b3J5Iiwicm91dGVyL3V0aWxzIl0s
ZnVuY3Rpb24oZSx0LHIsbixpKXsidXNlIHN0cmljdCI7ZS5kZWZhdWx0PWkuc3ViY2xhc3ModC5k
ZWZhdWx0LHtuYW1lOm51bGwscGl2b3RIYW5kbGVyOm51bGwsY29udGV4dHM6bnVsbCxxdWVyeVBh
cmFtczpudWxsLGluaXRpYWxpemU6ZnVuY3Rpb24oZSl7dGhpcy5uYW1lPWUubmFtZSx0aGlzLnBp
dm90SGFuZGxlcj1lLnBpdm90SGFuZGxlcix0aGlzLmNvbnRleHRzPWUuY29udGV4dHN8fFtdLHRo
aXMucXVlcnlQYXJhbXM9ZS5xdWVyeVBhcmFtc30sYXBwbHlUb1N0YXRlOmZ1bmN0aW9uKGUsdCxy
LG4pe3ZhciBvPWkuZXh0cmFjdFF1ZXJ5UGFyYW1zKFt0aGlzLm5hbWVdLmNvbmNhdCh0aGlzLmNv
bnRleHRzKSksYT1vWzBdLHM9KG9bMV0sdC5oYW5kbGVyc0ZvcihhWzBdKSksdT1zW3MubGVuZ3Ro
LTFdLmhhbmRsZXI7cmV0dXJuIHRoaXMuYXBwbHlUb0hhbmRsZXJzKGUscyxyLHUsbil9LGFwcGx5
VG9IYW5kbGVyczpmdW5jdGlvbihlLHQsbixvLGEscyl7dmFyIHUsbCxjPW5ldyByLmRlZmF1bHQs
Zj10aGlzLmNvbnRleHRzLnNsaWNlKDApLGQ9dC5sZW5ndGg7aWYodGhpcy5waXZvdEhhbmRsZXIp
Zm9yKHU9MCxsPXQubGVuZ3RoO3U8bDsrK3UpaWYobih0W3VdLmhhbmRsZXIpPT09dGhpcy5waXZv
dEhhbmRsZXIpe2Q9dTticmVha30hdGhpcy5waXZvdEhhbmRsZXI7Zm9yKHU9dC5sZW5ndGgtMTt1
Pj0wOy0tdSl7dmFyIHA9dFt1XSxoPXAuaGFuZGxlcixtPW4oaCksdj1lLmhhbmRsZXJJbmZvc1t1
XSxiPW51bGw7aWYoYj1wLm5hbWVzLmxlbmd0aD4wP3U+PWQ/dGhpcy5jcmVhdGVQYXJhbUhhbmRs
ZXJJbmZvKGgsbSxwLm5hbWVzLGYsdik6dGhpcy5nZXRIYW5kbGVySW5mb0ZvckR5bmFtaWNTZWdt
ZW50KGgsbSxwLm5hbWVzLGYsdixvLHUpOnRoaXMuY3JlYXRlUGFyYW1IYW5kbGVySW5mbyhoLG0s
cC5uYW1lcyxmLHYpLHMpe2I9Yi5iZWNvbWVSZXNvbHZlZChudWxsLGIuY29udGV4dCk7dmFyIGc9
diYmdi5jb250ZXh0O3AubmFtZXMubGVuZ3RoPjAmJmIuY29udGV4dD09PWcmJihiLnBhcmFtcz12
JiZ2LnBhcmFtcyksYi5jb250ZXh0PWd9dmFyIHk9djsodT49ZHx8Yi5zaG91bGRTdXBlcmNlZGUo
dikpJiYoZD1NYXRoLm1pbih1LGQpLHk9YiksYSYmIXMmJih5PXkuYmVjb21lUmVzb2x2ZWQobnVs
bCx5LmNvbnRleHQpKSxjLmhhbmRsZXJJbmZvcy51bnNoaWZ0KHkpfWlmKGYubGVuZ3RoPjApdGhy
b3cgbmV3IEVycm9yKCJNb3JlIGNvbnRleHQgb2JqZWN0cyB3ZXJlIHBhc3NlZCB0aGFuIHRoZXJl
IGFyZSBkeW5hbWljIHNlZ21lbnRzIGZvciB0aGUgcm91dGU6ICIrbyk7cmV0dXJuIGF8fHRoaXMu
aW52YWxpZGF0ZUNoaWxkcmVuKGMuaGFuZGxlckluZm9zLGQpLGkubWVyZ2UoYy5xdWVyeVBhcmFt
cyx0aGlzLnF1ZXJ5UGFyYW1zfHx7fSksY30saW52YWxpZGF0ZUNoaWxkcmVuOmZ1bmN0aW9uKGUs
dCl7Zm9yKHZhciByPXQsbj1lLmxlbmd0aDtyPG47KytyKXtlW3JdO2Vbcl09ZVtyXS5nZXRVbnJl
c29sdmVkKCl9fSxnZXRIYW5kbGVySW5mb0ZvckR5bmFtaWNTZWdtZW50OmZ1bmN0aW9uKGUsdCxy
LG8sYSxzLHUpe3ZhciBsO3IubGVuZ3RoO2lmKG8ubGVuZ3RoPjApe2lmKGw9b1tvLmxlbmd0aC0x
XSxpLmlzUGFyYW0obCkpcmV0dXJuIHRoaXMuY3JlYXRlUGFyYW1IYW5kbGVySW5mbyhlLHQscixv
LGEpO28ucG9wKCl9ZWxzZXtpZihhJiZhLm5hbWU9PT1lKXJldHVybiBhO2lmKCF0aGlzLnByZVRy
YW5zaXRpb25TdGF0ZSlyZXR1cm4gYTt2YXIgYz10aGlzLnByZVRyYW5zaXRpb25TdGF0ZS5oYW5k
bGVySW5mb3NbdV07bD1jJiZjLmNvbnRleHR9cmV0dXJuIG4uZGVmYXVsdCgib2JqZWN0Iix7bmFt
ZTplLGhhbmRsZXI6dCxjb250ZXh0OmwsbmFtZXM6cn0pfSxjcmVhdGVQYXJhbUhhbmRsZXJJbmZv
OmZ1bmN0aW9uKGUsdCxyLG8sYSl7Zm9yKHZhciBzPXt9LHU9ci5sZW5ndGg7dS0tOyl7dmFyIGw9
YSYmZT09PWEubmFtZSYmYS5wYXJhbXN8fHt9LGM9b1tvLmxlbmd0aC0xXSxmPXJbdV07aWYoaS5p
c1BhcmFtKGMpKXNbZl09IiIrby5wb3AoKTtlbHNle2lmKCFsLmhhc093blByb3BlcnR5KGYpKXRo
cm93IG5ldyBFcnJvcigiWW91IGRpZG4ndCBwcm92aWRlIGVub3VnaCBzdHJpbmcvbnVtZXJpYyBw
YXJhbWV0ZXJzIHRvIHNhdGlzZnkgYWxsIG9mIHRoZSBkeW5hbWljIHNlZ21lbnRzIGZvciByb3V0
ZSAiK2UpO3NbZl09bFtmXX19cmV0dXJuIG4uZGVmYXVsdCgicGFyYW0iLHtuYW1lOmUsaGFuZGxl
cjp0LHBhcmFtczpzfSl9fSl9KSxlKCJyb3V0ZXIvdHJhbnNpdGlvbi1pbnRlbnQvdXJsLXRyYW5z
aXRpb24taW50ZW50IixbImV4cG9ydHMiLCJyb3V0ZXIvdHJhbnNpdGlvbi1pbnRlbnQiLCJyb3V0
ZXIvdHJhbnNpdGlvbi1zdGF0ZSIsInJvdXRlci9oYW5kbGVyLWluZm8vZmFjdG9yeSIsInJvdXRl
ci91dGlscyIsInJvdXRlci91bnJlY29nbml6ZWQtdXJsLWVycm9yIl0sZnVuY3Rpb24oZSx0LHIs
bixpLG8peyJ1c2Ugc3RyaWN0IjtlLmRlZmF1bHQ9aS5zdWJjbGFzcyh0LmRlZmF1bHQse3VybDpu
dWxsLGluaXRpYWxpemU6ZnVuY3Rpb24oZSl7dGhpcy51cmw9ZS51cmx9LGFwcGx5VG9TdGF0ZTpm
dW5jdGlvbihlLHQsYSl7dmFyIHMsdSxsPW5ldyByLmRlZmF1bHQsYz10LnJlY29nbml6ZSh0aGlz
LnVybCk7aWYoIWMpdGhyb3cgbmV3IG8uZGVmYXVsdCh0aGlzLnVybCk7dmFyIGY9ITE7Zm9yKHM9
MCx1PWMubGVuZ3RoO3M8dTsrK3Mpe3ZhciBkPWNbc10scD1kLmhhbmRsZXIsaD1hKHApO2lmKGgu
aW5hY2Nlc3NpYmxlQnlVUkwpdGhyb3cgbmV3IG8uZGVmYXVsdCh0aGlzLnVybCk7dmFyIG09bi5k
ZWZhdWx0KCJwYXJhbSIse25hbWU6cCxoYW5kbGVyOmgscGFyYW1zOmQucGFyYW1zfSksdj1lLmhh
bmRsZXJJbmZvc1tzXTtmfHxtLnNob3VsZFN1cGVyY2VkZSh2KT8oZj0hMCxsLmhhbmRsZXJJbmZv
c1tzXT1tKTpsLmhhbmRsZXJJbmZvc1tzXT12fXJldHVybiBpLm1lcmdlKGwucXVlcnlQYXJhbXMs
Yy5xdWVyeVBhcmFtcyksbH19KX0pLGUoInJvdXRlci90cmFuc2l0aW9uLXN0YXRlIixbImV4cG9y
dHMiLCJyb3V0ZXIvaGFuZGxlci1pbmZvIiwicm91dGVyL3V0aWxzIiwicnN2cC9wcm9taXNlIl0s
ZnVuY3Rpb24oZSx0LHIsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSl7dGhpcy5oYW5kbGVy
SW5mb3M9W10sdGhpcy5xdWVyeVBhcmFtcz17fSx0aGlzLnBhcmFtcz17fX1pLnByb3RvdHlwZT17
aGFuZGxlckluZm9zOm51bGwscXVlcnlQYXJhbXM6bnVsbCxwYXJhbXM6bnVsbCxwcm9taXNlTGFi
ZWw6ZnVuY3Rpb24oZSl7dmFyIHQ9IiI7cmV0dXJuIHIuZm9yRWFjaCh0aGlzLmhhbmRsZXJJbmZv
cyxmdW5jdGlvbihlKXsiIiE9PXQmJih0Kz0iLiIpLHQrPWUubmFtZX0pLHIucHJvbWlzZUxhYmVs
KCInIit0KyInOiAiK2UpfSxyZXNvbHZlOmZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gaSgpe3JldHVy
biBuLmRlZmF1bHQucmVzb2x2ZShlKCksbC5wcm9taXNlTGFiZWwoIkNoZWNrIGlmIHNob3VsZCBj
b250aW51ZSIpKS5jYXRjaChmdW5jdGlvbihlKXtyZXR1cm4gYz0hMCxuLmRlZmF1bHQucmVqZWN0
KGUpfSxsLnByb21pc2VMYWJlbCgiSGFuZGxlIGFib3J0IikpfWZ1bmN0aW9uIG8oZSl7dmFyIHI9
bC5oYW5kbGVySW5mb3MsaT10LnJlc29sdmVJbmRleD49ci5sZW5ndGg/ci5sZW5ndGgtMTp0LnJl
c29sdmVJbmRleDtyZXR1cm4gbi5kZWZhdWx0LnJlamVjdCh7ZXJyb3I6ZSxoYW5kbGVyV2l0aEVy
cm9yOmwuaGFuZGxlckluZm9zW2ldLmhhbmRsZXIsd2FzQWJvcnRlZDpjLHN0YXRlOmx9KX1mdW5j
dGlvbiBhKGUpe3ZhciBuPWwuaGFuZGxlckluZm9zW3QucmVzb2x2ZUluZGV4XS5pc1Jlc29sdmVk
O2lmKGwuaGFuZGxlckluZm9zW3QucmVzb2x2ZUluZGV4KytdPWUsIW4pe3ZhciBvPWUuaGFuZGxl
cjtyLmNhbGxIb29rKG8sInJlZGlyZWN0IixlLmNvbnRleHQsdCl9cmV0dXJuIGkoKS50aGVuKHMs
bnVsbCxsLnByb21pc2VMYWJlbCgiUmVzb2x2ZSBoYW5kbGVyIikpfWZ1bmN0aW9uIHMoKXtpZih0
LnJlc29sdmVJbmRleD09PWwuaGFuZGxlckluZm9zLmxlbmd0aClyZXR1cm57ZXJyb3I6bnVsbCxz
dGF0ZTpsfTt2YXIgZT1sLmhhbmRsZXJJbmZvc1t0LnJlc29sdmVJbmRleF07cmV0dXJuIGUucmVz
b2x2ZShpLHQpLnRoZW4oYSxudWxsLGwucHJvbWlzZUxhYmVsKCJQcm9jZWVkIikpfXZhciB1PXRo
aXMucGFyYW1zO3IuZm9yRWFjaCh0aGlzLmhhbmRsZXJJbmZvcyxmdW5jdGlvbihlKXt1W2UubmFt
ZV09ZS5wYXJhbXN8fHt9fSksdD10fHx7fSx0LnJlc29sdmVJbmRleD0wO3ZhciBsPXRoaXMsYz0h
MTtyZXR1cm4gbi5kZWZhdWx0LnJlc29sdmUobnVsbCx0aGlzLnByb21pc2VMYWJlbCgiU3RhcnQg
dHJhbnNpdGlvbiIpKS50aGVuKHMsbnVsbCx0aGlzLnByb21pc2VMYWJlbCgiUmVzb2x2ZSBoYW5k
bGVyIikpLmNhdGNoKG8sdGhpcy5wcm9taXNlTGFiZWwoIkhhbmRsZSBlcnJvciIpKX19LGUuZGVm
YXVsdD1pfSksZSgicm91dGVyL3RyYW5zaXRpb24iLFsiZXhwb3J0cyIsInJzdnAvcHJvbWlzZSIs
InJvdXRlci9oYW5kbGVyLWluZm8iLCJyb3V0ZXIvdXRpbHMiXSxmdW5jdGlvbihlLHQscixuKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlLHIsYSxzKXtmdW5jdGlvbiB1KCl7aWYobC5pc0Fib3J0
ZWQpcmV0dXJuIHQuZGVmYXVsdC5yZWplY3Qodm9pZCAwLG4ucHJvbWlzZUxhYmVsKCJUcmFuc2l0
aW9uIGFib3J0ZWQgLSByZWplY3QiKSl9dmFyIGw9dGhpcztpZih0aGlzLnN0YXRlPWF8fGUuc3Rh
dGUsdGhpcy5pbnRlbnQ9cix0aGlzLnJvdXRlcj1lLHRoaXMuZGF0YT10aGlzLmludGVudCYmdGhp
cy5pbnRlbnQuZGF0YXx8e30sdGhpcy5yZXNvbHZlZE1vZGVscz17fSx0aGlzLnF1ZXJ5UGFyYW1z
PXt9LHMpcmV0dXJuIHRoaXMucHJvbWlzZT10LmRlZmF1bHQucmVqZWN0KHMpLHZvaWQodGhpcy5l
cnJvcj1zKTtpZihhKXt0aGlzLnBhcmFtcz1hLnBhcmFtcyx0aGlzLnF1ZXJ5UGFyYW1zPWEucXVl
cnlQYXJhbXMsdGhpcy5oYW5kbGVySW5mb3M9YS5oYW5kbGVySW5mb3M7dmFyIGM9YS5oYW5kbGVy
SW5mb3MubGVuZ3RoO2MmJih0aGlzLnRhcmdldE5hbWU9YS5oYW5kbGVySW5mb3NbYy0xXS5uYW1l
KTtmb3IodmFyIGY9MDtmPGM7KytmKXt2YXIgZD1hLmhhbmRsZXJJbmZvc1tmXTtpZighZC5pc1Jl
c29sdmVkKWJyZWFrO3RoaXMucGl2b3RIYW5kbGVyPWQuaGFuZGxlcn10aGlzLnNlcXVlbmNlPWku
Y3VycmVudFNlcXVlbmNlKyssdGhpcy5wcm9taXNlPWEucmVzb2x2ZSh1LHRoaXMpLmNhdGNoKGZ1
bmN0aW9uKGUpe3JldHVybiBlLndhc0Fib3J0ZWR8fGwuaXNBYm9ydGVkP3QuZGVmYXVsdC5yZWpl
Y3QobyhsKSk6KGwudHJpZ2dlcigiZXJyb3IiLGUuZXJyb3IsbCxlLmhhbmRsZXJXaXRoRXJyb3Ip
LGwuYWJvcnQoKSx0LmRlZmF1bHQucmVqZWN0KGUuZXJyb3IpKX0sbi5wcm9taXNlTGFiZWwoIkhh
bmRsZSBBYm9ydCIpKX1lbHNlIHRoaXMucHJvbWlzZT10LmRlZmF1bHQucmVzb2x2ZSh0aGlzLnN0
YXRlKSx0aGlzLnBhcmFtcz17fX1mdW5jdGlvbiBvKGUpe3JldHVybiBuLmxvZyhlLnJvdXRlcixl
LnNlcXVlbmNlLCJkZXRlY3RlZCBhYm9ydC4iKSxuZXcgYX1mdW5jdGlvbiBhKGUpe3RoaXMubWVz
c2FnZT1lfHwiVHJhbnNpdGlvbkFib3J0ZWQiLHRoaXMubmFtZT0iVHJhbnNpdGlvbkFib3J0ZWQi
fWkuY3VycmVudFNlcXVlbmNlPTAsaS5wcm90b3R5cGU9e3RhcmdldE5hbWU6bnVsbCx1cmxNZXRo
b2Q6InVwZGF0ZSIsaW50ZW50Om51bGwscGFyYW1zOm51bGwscGl2b3RIYW5kbGVyOm51bGwscmVz
b2x2ZUluZGV4OjAsaGFuZGxlckluZm9zOm51bGwscmVzb2x2ZWRNb2RlbHM6bnVsbCxpc0FjdGl2
ZTohMCxzdGF0ZTpudWxsLHF1ZXJ5UGFyYW1zT25seTohMSxpc1RyYW5zaXRpb246ITAsaXNFeGl0
aW5nOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLmhhbmRsZXJJbmZvcyxyPTAsbj10Lmxlbmd0
aDtyPG47KytyKXt2YXIgaT10W3JdO2lmKGkubmFtZT09PWV8fGkuaGFuZGxlcj09PWUpcmV0dXJu
ITF9cmV0dXJuITB9LHByb21pc2U6bnVsbCxkYXRhOm51bGwsdGhlbjpmdW5jdGlvbihlLHQscil7
cmV0dXJuIHRoaXMucHJvbWlzZS50aGVuKGUsdCxyKX0sY2F0Y2g6ZnVuY3Rpb24oZSx0KXtyZXR1
cm4gdGhpcy5wcm9taXNlLmNhdGNoKGUsdCl9LGZpbmFsbHk6ZnVuY3Rpb24oZSx0KXtyZXR1cm4g
dGhpcy5wcm9taXNlLmZpbmFsbHkoZSx0KX0sYWJvcnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5p
c0Fib3J0ZWQ/dGhpczoobi5sb2codGhpcy5yb3V0ZXIsdGhpcy5zZXF1ZW5jZSx0aGlzLnRhcmdl
dE5hbWUrIjogdHJhbnNpdGlvbiB3YXMgYWJvcnRlZCIpLHRoaXMuaW50ZW50LnByZVRyYW5zaXRp
b25TdGF0ZT10aGlzLnJvdXRlci5zdGF0ZSx0aGlzLmlzQWJvcnRlZD0hMCx0aGlzLmlzQWN0aXZl
PSExLHRoaXMucm91dGVyLmFjdGl2ZVRyYW5zaXRpb249bnVsbCx0aGlzKX0scmV0cnk6ZnVuY3Rp
b24oKXtyZXR1cm4gdGhpcy5hYm9ydCgpLHRoaXMucm91dGVyLnRyYW5zaXRpb25CeUludGVudCh0
aGlzLmludGVudCwhMSl9LG1ldGhvZDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy51cmxNZXRob2Q9
ZSx0aGlzfSx0cmlnZ2VyOmZ1bmN0aW9uKGUpe3ZhciB0PW4uc2xpY2UuY2FsbChhcmd1bWVudHMp
OyJib29sZWFuIj09dHlwZW9mIGU/dC5zaGlmdCgpOmU9ITEsbi50cmlnZ2VyKHRoaXMucm91dGVy
LHRoaXMuc3RhdGUuaGFuZGxlckluZm9zLnNsaWNlKDAsdGhpcy5yZXNvbHZlSW5kZXgrMSksZSx0
KX0sZm9sbG93UmVkaXJlY3RzOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5yb3V0ZXI7cmV0dXJuIHRo
aXMucHJvbWlzZS5jYXRjaChmdW5jdGlvbihyKXtyZXR1cm4gZS5hY3RpdmVUcmFuc2l0aW9uP2Uu
YWN0aXZlVHJhbnNpdGlvbi5mb2xsb3dSZWRpcmVjdHMoKTp0LmRlZmF1bHQucmVqZWN0KHIpfSl9
LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIlRyYW5zaXRpb24gKHNlcXVlbmNlICIrdGhpcy5z
ZXF1ZW5jZSsiKSJ9LGxvZzpmdW5jdGlvbihlKXtuLmxvZyh0aGlzLnJvdXRlcix0aGlzLnNlcXVl
bmNlLGUpfX0saS5wcm90b3R5cGUuc2VuZD1pLnByb3RvdHlwZS50cmlnZ2VyLGUuVHJhbnNpdGlv
bj1pLGUubG9nQWJvcnQ9byxlLlRyYW5zaXRpb25BYm9ydGVkPWF9KSxlKCJyb3V0ZXIvdW5yZWNv
Z25pemVkLXVybC1lcnJvciIsWyJleHBvcnRzIiwicm91dGVyL3V0aWxzIl0sZnVuY3Rpb24oZSx0
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt0aGlzLm1lc3NhZ2U9ZXx8IlVucmVjb2duaXpl
ZFVSTEVycm9yIix0aGlzLm5hbWU9IlVucmVjb2duaXplZFVSTEVycm9yIixFcnJvci5jYWxsKHRo
aXMpfXIucHJvdG90eXBlPXQub0NyZWF0ZShFcnJvci5wcm90b3R5cGUpLGUuZGVmYXVsdD1yfSks
ZSgicm91dGVyL3V0aWxzIixbImV4cG9ydHMiXSxmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gdChlLHQpe2Zvcih2YXIgciBpbiB0KXQuaGFzT3duUHJvcGVydHkocikmJihlW3JdPXRb
cl0pfWZ1bmN0aW9uIHIoZSl7dmFyIHQscixuPWUmJmUubGVuZ3RoO3JldHVybiBuJiZuPjAmJmVb
bi0xXSYmZVtuLTFdLmhhc093blByb3BlcnR5KCJxdWVyeVBhcmFtcyIpPyhyPWVbbi0xXS5xdWVy
eVBhcmFtcyx0PXYuY2FsbChlLDAsbi0xKSxbdCxyXSk6W2UsbnVsbF19ZnVuY3Rpb24gbihlKXtm
b3IodmFyIHQgaW4gZSlpZigibnVtYmVyIj09dHlwZW9mIGVbdF0pZVt0XT0iIitlW3RdO2Vsc2Ug
aWYoYihlW3RdKSlmb3IodmFyIHI9MCxuPWVbdF0ubGVuZ3RoO3I8bjtyKyspZVt0XVtyXT0iIitl
W3RdW3JdfWZ1bmN0aW9uIGkoZSx0LHIpe2UubG9nJiYoMz09PWFyZ3VtZW50cy5sZW5ndGg/ZS5s
b2coIlRyYW5zaXRpb24gIyIrdCsiOiAiK3IpOihyPXQsZS5sb2cocikpKX1mdW5jdGlvbiBvKGUs
dCl7dmFyIHI9YXJndW1lbnRzO3JldHVybiBmdW5jdGlvbihuKXt2YXIgaT12LmNhbGwociwyKTty
ZXR1cm4gaS5wdXNoKG4pLHQuYXBwbHkoZSxpKX19ZnVuY3Rpb24gYShlKXtyZXR1cm4ic3RyaW5n
Ij09dHlwZW9mIGV8fGUgaW5zdGFuY2VvZiBTdHJpbmd8fCJudW1iZXIiPT10eXBlb2YgZXx8ZSBp
bnN0YW5jZW9mIE51bWJlcn1mdW5jdGlvbiBzKGUsdCl7Zm9yKHZhciByPTAsbj1lLmxlbmd0aDty
PG4mJiExIT09dChlW3JdKTtyKyspO31mdW5jdGlvbiB1KGUsdCxyLG4pe2lmKGUudHJpZ2dlckV2
ZW50KXJldHVybiB2b2lkIGUudHJpZ2dlckV2ZW50KHQscixuKTt2YXIgaT1uLnNoaWZ0KCk7aWYo
IXQpe2lmKHIpcmV0dXJuO3Rocm93IG5ldyBFcnJvcigiQ291bGQgbm90IHRyaWdnZXIgZXZlbnQg
JyIraSsiJy4gVGhlcmUgYXJlIG5vIGFjdGl2ZSBoYW5kbGVycyIpfWZvcih2YXIgbz0hMSxhPXQu
bGVuZ3RoLTE7YT49MDthLS0pe3ZhciBzPXRbYV0sdT1zLmhhbmRsZXI7aWYodS5ldmVudHMmJnUu
ZXZlbnRzW2ldKXtpZih1LmV2ZW50c1tpXS5hcHBseSh1LG4pIT09ITApcmV0dXJuO289ITB9fWlm
KCFvJiYhcil0aHJvdyBuZXcgRXJyb3IoIk5vdGhpbmcgaGFuZGxlZCB0aGUgZXZlbnQgJyIraSsi
Jy4iKX1mdW5jdGlvbiBsKGUscil7dmFyIGksbz17YWxsOnt9LGNoYW5nZWQ6e30scmVtb3ZlZDp7
fX07dChvLmFsbCxyKTt2YXIgYT0hMTtuKGUpLG4ocik7Zm9yKGkgaW4gZSllLmhhc093blByb3Bl
cnR5KGkpJiYoci5oYXNPd25Qcm9wZXJ0eShpKXx8KGE9ITAsby5yZW1vdmVkW2ldPWVbaV0pKTtm
b3IoaSBpbiByKWlmKHIuaGFzT3duUHJvcGVydHkoaSkpaWYoYihlW2ldKSYmYihyW2ldKSlpZihl
W2ldLmxlbmd0aCE9PXJbaV0ubGVuZ3RoKW8uY2hhbmdlZFtpXT1yW2ldLGE9ITA7ZWxzZSBmb3Io
dmFyIHM9MCx1PWVbaV0ubGVuZ3RoO3M8dTtzKyspZVtpXVtzXSE9PXJbaV1bc10mJihvLmNoYW5n
ZWRbaV09cltpXSxhPSEwKTtlbHNlIGVbaV0hPT1yW2ldJiYoby5jaGFuZ2VkW2ldPXJbaV0sYT0h
MCk7cmV0dXJuIGEmJm99ZnVuY3Rpb24gYyhlKXtyZXR1cm4iUm91dGVyOiAiK2V9ZnVuY3Rpb24g
ZihlLHIpe2Z1bmN0aW9uIG4odCl7ZS5jYWxsKHRoaXMsdHx8e30pfXJldHVybiBuLnByb3RvdHlw
ZT1nKGUucHJvdG90eXBlKSx0KG4ucHJvdG90eXBlLHIpLG59ZnVuY3Rpb24gZChlLHQpe2lmKGUp
e3ZhciByPSJfIit0O3JldHVybiBlW3JdJiZyfHxlW3RdJiZ0fX1mdW5jdGlvbiBwKGUsdCxyLG4p
e3ZhciBpPWQoZSx0KTtyZXR1cm4gaSYmZVtpXS5jYWxsKGUscixuKX1mdW5jdGlvbiBoKGUsdCxy
KXt2YXIgbj1kKGUsdCk7aWYobilyZXR1cm4gMD09PXIubGVuZ3RoP2Vbbl0uY2FsbChlKToxPT09
ci5sZW5ndGg/ZVtuXS5jYWxsKGUsclswXSk6Mj09PXIubGVuZ3RoP2Vbbl0uY2FsbChlLHJbMF0s
clsxXSk6ZVtuXS5hcHBseShlLHIpfWUuZXh0cmFjdFF1ZXJ5UGFyYW1zPXIsZS5sb2c9aSxlLmJp
bmQ9byxlLmZvckVhY2g9cyxlLnRyaWdnZXI9dSxlLmdldENoYW5nZWxpc3Q9bCxlLnByb21pc2VM
YWJlbD1jLGUuc3ViY2xhc3M9Zjt2YXIgbSx2PUFycmF5LnByb3RvdHlwZS5zbGljZTttPUFycmF5
LmlzQXJyYXk/QXJyYXkuaXNBcnJheTpmdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBBcnJheV0i
PT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpfTt2YXIgYj1tO2UuaXNBcnJheT1i
O3ZhciBnPU9iamVjdC5jcmVhdGV8fGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQu
cHJvdG90eXBlPWUsbmV3IHR9O2Uub0NyZWF0ZT1nLGUubWVyZ2U9dCxlLnNsaWNlPXYsZS5pc1Bh
cmFtPWEsZS5jb2VyY2VRdWVyeVBhcmFtc1RvU3RyaW5nPW4sZS5jYWxsSG9vaz1wLGUucmVzb2x2
ZUhvb2s9ZCxlLmFwcGx5SG9vaz1ofSksZSgicnN2cCIsWyJleHBvcnRzIiwicnN2cC9wcm9taXNl
IiwicnN2cC9ldmVudHMiLCJyc3ZwL25vZGUiLCJyc3ZwL2FsbCIsInJzdnAvYWxsLXNldHRsZWQi
LCJyc3ZwL3JhY2UiLCJyc3ZwL2hhc2giLCJyc3ZwL2hhc2gtc2V0dGxlZCIsInJzdnAvcmV0aHJv
dyIsInJzdnAvZGVmZXIiLCJyc3ZwL2NvbmZpZyIsInJzdnAvbWFwIiwicnN2cC9yZXNvbHZlIiwi
cnN2cC9yZWplY3QiLCJyc3ZwL2ZpbHRlciIsInJzdnAvYXNhcCJdLGZ1bmN0aW9uKGUsdCxyLG4s
aSxvLGEscyx1LGwsYyxmLGQscCxoLG0sdil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGIoZSx0KXtm
LmNvbmZpZy5hc3luYyhlLHQpfWZ1bmN0aW9uIGcoKXtmLmNvbmZpZy5vbi5hcHBseShmLmNvbmZp
Zyxhcmd1bWVudHMpfWZ1bmN0aW9uIHkoKXtmLmNvbmZpZy5vZmYuYXBwbHkoZi5jb25maWcsYXJn
dW1lbnRzKX1mLmNvbmZpZy5hc3luYz12LmRlZmF1bHQsZi5jb25maWcuYWZ0ZXI9ZnVuY3Rpb24o
ZSl7c2V0VGltZW91dChlLDApfTt2YXIgXz1wLmRlZmF1bHQ7aWYoInVuZGVmaW5lZCIhPXR5cGVv
ZiB3aW5kb3cmJiJvYmplY3QiPT10eXBlb2Ygd2luZG93Ll9fUFJPTUlTRV9JTlNUUlVNRU5UQVRJ
T05fXyl7dmFyIHc9d2luZG93Ll9fUFJPTUlTRV9JTlNUUlVNRU5UQVRJT05fXztmLmNvbmZpZ3Vy
ZSgiaW5zdHJ1bWVudCIsITApO2Zvcih2YXIgeCBpbiB3KXcuaGFzT3duUHJvcGVydHkoeCkmJmco
eCx3W3hdKX1lLmNhc3Q9XyxlLlByb21pc2U9dC5kZWZhdWx0LGUuRXZlbnRUYXJnZXQ9ci5kZWZh
dWx0LGUuYWxsPWkuZGVmYXVsdCxlLmFsbFNldHRsZWQ9by5kZWZhdWx0LGUucmFjZT1hLmRlZmF1
bHQsZS5oYXNoPXMuZGVmYXVsdCxlLmhhc2hTZXR0bGVkPXUuZGVmYXVsdCxlLnJldGhyb3c9bC5k
ZWZhdWx0LGUuZGVmZXI9Yy5kZWZhdWx0LGUuZGVub2RlaWZ5PW4uZGVmYXVsdCxlLmNvbmZpZ3Vy
ZT1mLmNvbmZpZ3VyZSxlLm9uPWcsZS5vZmY9eSxlLnJlc29sdmU9cC5kZWZhdWx0LGUucmVqZWN0
PWguZGVmYXVsdCxlLmFzeW5jPWIsZS5tYXA9ZC5kZWZhdWx0LGUuZmlsdGVyPW0uZGVmYXVsdH0p
LGUoInJzdnAudW1kIixbImV4cG9ydHMiLCJyc3ZwL3BsYXRmb3JtIiwicnN2cCJdLGZ1bmN0aW9u
KGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49e3JhY2U6ci5yYWNlLFByb21pc2U6ci5Qcm9taXNl
LGFsbFNldHRsZWQ6ci5hbGxTZXR0bGVkLGhhc2g6ci5oYXNoLGhhc2hTZXR0bGVkOnIuaGFzaFNl
dHRsZWQsZGVub2RlaWZ5OnIuZGVub2RlaWZ5LG9uOnIub24sb2ZmOnIub2ZmLG1hcDpyLm1hcCxm
aWx0ZXI6ci5maWx0ZXIscmVzb2x2ZTpyLnJlc29sdmUscmVqZWN0OnIucmVqZWN0LGFsbDpyLmFs
bCxyZXRocm93OnIucmV0aHJvdyxkZWZlcjpyLmRlZmVyLEV2ZW50VGFyZ2V0OnIuRXZlbnRUYXJn
ZXQsY29uZmlndXJlOnIuY29uZmlndXJlLGFzeW5jOnIuYXN5bmN9OyJmdW5jdGlvbiI9PXR5cGVv
ZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKGZ1bmN0aW9uKCl7cmV0dXJuIG59KToidW5kZWZp
bmVkIiE9dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9bjoidW5k
ZWZpbmVkIiE9dHlwZW9mIHQuZGVmYXVsdCYmKHQuZGVmYXVsdC5SU1ZQPW4pfSksZSgicnN2cC8t
aW50ZXJuYWwiLFsiZXhwb3J0cyIsInJzdnAvdXRpbHMiLCJyc3ZwL2luc3RydW1lbnQiLCJyc3Zw
L2NvbmZpZyJdLGZ1bmN0aW9uKGUsdCxyLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKCl7cmV0
dXJuIG5ldyBUeXBlRXJyb3IoIkEgcHJvbWlzZXMgY2FsbGJhY2sgY2Fubm90IHJldHVybiB0aGF0
IHNhbWUgcHJvbWlzZS4iKX1mdW5jdGlvbiBvKCl7fWZ1bmN0aW9uIGEoZSl7dHJ5e3JldHVybiBl
LnRoZW59Y2F0Y2goZSl7cmV0dXJuIEMuZXJyb3I9ZSxDfX1mdW5jdGlvbiBzKGUsdCxyLG4pe3Ry
eXtlLmNhbGwodCxyLG4pfWNhdGNoKGUpe3JldHVybiBlfX1mdW5jdGlvbiB1KGUsdCxyKXtuLmNv
bmZpZy5hc3luYyhmdW5jdGlvbihlKXt2YXIgbj0hMSxpPXMocix0LGZ1bmN0aW9uKHIpe258fChu
PSEwLHQhPT1yP2YoZSxyKTpwKGUscikpfSxmdW5jdGlvbih0KXtufHwobj0hMCxoKGUsdCkpfSwi
U2V0dGxlOiAiKyhlLl9sYWJlbHx8IiB1bmtub3duIHByb21pc2UiKSk7IW4mJmkmJihuPSEwLGgo
ZSxpKSl9LGUpfWZ1bmN0aW9uIGwoZSx0KXt0Ll9zdGF0ZT09PXg/cChlLHQuX3Jlc3VsdCk6dC5f
c3RhdGU9PT1rPyh0Ll9vbkVycm9yPW51bGwsaChlLHQuX3Jlc3VsdCkpOm0odCx2b2lkIDAsZnVu
Y3Rpb24ocil7dCE9PXI/ZihlLHIpOnAoZSxyKX0sZnVuY3Rpb24odCl7aChlLHQpfSl9ZnVuY3Rp
b24gYyhlLHIpe2lmKHIuY29uc3RydWN0b3I9PT1lLmNvbnN0cnVjdG9yKWwoZSxyKTtlbHNle3Zh
ciBuPWEocik7bj09PUM/aChlLEMuZXJyb3IpOnZvaWQgMD09PW4/cChlLHIpOnQuaXNGdW5jdGlv
bihuKT91KGUscixuKTpwKGUscil9fWZ1bmN0aW9uIGYoZSxyKXtlPT09cj9wKGUscik6dC5vYmpl
Y3RPckZ1bmN0aW9uKHIpP2MoZSxyKTpwKGUscil9ZnVuY3Rpb24gZChlKXtlLl9vbkVycm9yJiZl
Ll9vbkVycm9yKGUuX3Jlc3VsdCksdihlKX1mdW5jdGlvbiBwKGUsdCl7ZS5fc3RhdGU9PT13JiYo
ZS5fcmVzdWx0PXQsZS5fc3RhdGU9eCwwPT09ZS5fc3Vic2NyaWJlcnMubGVuZ3RoP24uY29uZmln
Lmluc3RydW1lbnQmJnIuZGVmYXVsdCgiZnVsZmlsbGVkIixlKTpuLmNvbmZpZy5hc3luYyh2LGUp
KX1mdW5jdGlvbiBoKGUsdCl7ZS5fc3RhdGU9PT13JiYoZS5fc3RhdGU9ayxlLl9yZXN1bHQ9dCxu
LmNvbmZpZy5hc3luYyhkLGUpKX1mdW5jdGlvbiBtKGUsdCxyLGkpe3ZhciBvPWUuX3N1YnNjcmli
ZXJzLGE9by5sZW5ndGg7ZS5fb25FcnJvcj1udWxsLG9bYV09dCxvW2EreF09cixvW2Era109aSww
PT09YSYmZS5fc3RhdGUmJm4uY29uZmlnLmFzeW5jKHYsZSl9ZnVuY3Rpb24gdihlKXt2YXIgdD1l
Ll9zdWJzY3JpYmVycyxpPWUuX3N0YXRlO2lmKG4uY29uZmlnLmluc3RydW1lbnQmJnIuZGVmYXVs
dChpPT09eD8iZnVsZmlsbGVkIjoicmVqZWN0ZWQiLGUpLDAhPT10Lmxlbmd0aCl7Zm9yKHZhciBv
LGEscz1lLl9yZXN1bHQsdT0wO3U8dC5sZW5ndGg7dSs9MylvPXRbdV0sYT10W3UraV0sbz95KGks
byxhLHMpOmEocyk7ZS5fc3Vic2NyaWJlcnMubGVuZ3RoPTB9fWZ1bmN0aW9uIGIoKXt0aGlzLmVy
cm9yPW51bGx9ZnVuY3Rpb24gZyhlLHQpe3RyeXtyZXR1cm4gZSh0KX1jYXRjaChlKXtyZXR1cm4g
RS5lcnJvcj1lLEV9fWZ1bmN0aW9uIHkoZSxyLG4sbyl7dmFyIGEscyx1LGwsYz10LmlzRnVuY3Rp
b24obik7aWYoYyl7aWYoYT1nKG4sbyksYT09PUU/KGw9ITAscz1hLmVycm9yLGE9bnVsbCk6dT0h
MCxyPT09YSlyZXR1cm4gdm9pZCBoKHIsaSgpKX1lbHNlIGE9byx1PSEwO3IuX3N0YXRlIT09d3x8
KGMmJnU/ZihyLGEpOmw/aChyLHMpOmU9PT14P3AocixhKTplPT09ayYmaChyLGEpKX1mdW5jdGlv
biBfKGUsdCl7dmFyIHI9ITE7dHJ5e3QoZnVuY3Rpb24odCl7cnx8KHI9ITAsZihlLHQpKX0sZnVu
Y3Rpb24odCl7cnx8KHI9ITAsaChlLHQpKX0pfWNhdGNoKHQpe2goZSx0KX19dmFyIHc9dm9pZCAw
LHg9MSxrPTIsQz1uZXcgYixFPW5ldyBiO2Uubm9vcD1vLGUucmVzb2x2ZT1mLGUucmVqZWN0PWgs
ZS5mdWxmaWxsPXAsZS5zdWJzY3JpYmU9bSxlLnB1Ymxpc2g9dixlLnB1Ymxpc2hSZWplY3Rpb249
ZCxlLmluaXRpYWxpemVQcm9taXNlPV8sZS5pbnZva2VDYWxsYmFjaz15LGUuRlVMRklMTEVEPXgs
ZS5SRUpFQ1RFRD1rLGUuUEVORElORz13fSksZSgicnN2cC9hbGwtc2V0dGxlZCIsWyJleHBvcnRz
IiwicnN2cC9lbnVtZXJhdG9yIiwicnN2cC9wcm9taXNlIiwicnN2cC91dGlscyJdLGZ1bmN0aW9u
KGUsdCxyLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUsdCxyKXt0aGlzLl9zdXBlckNvbnN0
cnVjdG9yKGUsdCwhMSxyKX1mdW5jdGlvbiBvKGUsdCl7cmV0dXJuIG5ldyBpKHIuZGVmYXVsdCxl
LHQpLnByb21pc2V9ZS5kZWZhdWx0PW8saS5wcm90b3R5cGU9bi5vX2NyZWF0ZSh0LmRlZmF1bHQu
cHJvdG90eXBlKSxpLnByb3RvdHlwZS5fc3VwZXJDb25zdHJ1Y3Rvcj10LmRlZmF1bHQsaS5wcm90
b3R5cGUuX21ha2VSZXN1bHQ9dC5tYWtlU2V0dGxlZFJlc3VsdCxpLnByb3RvdHlwZS5fdmFsaWRh
dGlvbkVycm9yPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBFcnJvcigiYWxsU2V0dGxlZCBtdXN0IGJl
IGNhbGxlZCB3aXRoIGFuIGFycmF5Iil9fSksZSgicnN2cC9hbGwiLFsiZXhwb3J0cyIsInJzdnAv
cHJvbWlzZSJdLGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSxyKXtyZXR1
cm4gdC5kZWZhdWx0LmFsbChlLHIpfWUuZGVmYXVsdD1yfSksZSgicnN2cC9hc2FwIixbImV4cG9y
dHMiXSxmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gdChlLHQpe2dbZF09ZSxnW2Qr
MV09dCxkKz0yLDI9PT1kJiZmKCl9ZnVuY3Rpb24gbigpe3ZhciBlPXByb2Nlc3MubmV4dFRpY2ss
dD1wcm9jZXNzLnZlcnNpb25zLm5vZGUubWF0Y2goL14oPzooXGQrKVwuKT8oPzooXGQrKVwuKT8o
XCp8XGQrKSQvKTtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KSYmIjAiPT09dFsxXSYmIjEwIj09PXRb
Ml0mJihlPXNldEltbWVkaWF0ZSksZnVuY3Rpb24oKXtlKHUpfX1mdW5jdGlvbiBpKCl7cmV0dXJu
IGZ1bmN0aW9uKCl7Yyh1KX19ZnVuY3Rpb24gbygpe3ZhciBlPTAsdD1uZXcgbSh1KSxyPWRvY3Vt
ZW50LmNyZWF0ZVRleHROb2RlKCIiKTtyZXR1cm4gdC5vYnNlcnZlKHIse2NoYXJhY3RlckRhdGE6
ITB9KSxmdW5jdGlvbigpe3IuZGF0YT1lPSsrZSUyfX1mdW5jdGlvbiBhKCl7dmFyIGU9bmV3IE1l
c3NhZ2VDaGFubmVsO3JldHVybiBlLnBvcnQxLm9ubWVzc2FnZT11LGZ1bmN0aW9uKCl7ZS5wb3J0
Mi5wb3N0TWVzc2FnZSgwKX19ZnVuY3Rpb24gcygpe3JldHVybiBmdW5jdGlvbigpe3NldFRpbWVv
dXQodSwxKX19ZnVuY3Rpb24gdSgpe2Zvcih2YXIgZT0wO2U8ZDtlKz0yKXt2YXIgdD1nW2VdLHI9
Z1tlKzFdO3QociksZ1tlXT12b2lkIDAsZ1tlKzFdPXZvaWQgMH1kPTB9ZnVuY3Rpb24gbCgpe3Ry
eXt2YXIgZT1yLHQ9ZSgidmVydHgiKTtyZXR1cm4gYz10LnJ1bk9uTG9vcHx8dC5ydW5PbkNvbnRl
eHQsaSgpfWNhdGNoKGUpe3JldHVybiBzKCl9fWUuZGVmYXVsdD10O3ZhciBjLGYsZD0wLHA9KHt9
LnRvU3RyaW5nLCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp2b2lkIDApLGg9cHx8
e30sbT1oLk11dGF0aW9uT2JzZXJ2ZXJ8fGguV2ViS2l0TXV0YXRpb25PYnNlcnZlcix2PSJ1bmRl
ZmluZWQiPT10eXBlb2Ygd2luZG93JiYidW5kZWZpbmVkIiE9dHlwZW9mIHByb2Nlc3MmJiJbb2Jq
ZWN0IHByb2Nlc3NdIj09PXt9LnRvU3RyaW5nLmNhbGwocHJvY2VzcyksYj0idW5kZWZpbmVkIiE9
dHlwZW9mIFVpbnQ4Q2xhbXBlZEFycmF5JiYidW5kZWZpbmVkIiE9dHlwZW9mIGltcG9ydFNjcmlw
dHMmJiJ1bmRlZmluZWQiIT10eXBlb2YgTWVzc2FnZUNoYW5uZWwsZz1uZXcgQXJyYXkoMWUzKTtm
PXY/bigpOm0/bygpOmI/YSgpOnZvaWQgMD09PXAmJiJmdW5jdGlvbiI9PXR5cGVvZiByP2woKTpz
KCl9KSxlKCJyc3ZwL2NvbmZpZyIsWyJleHBvcnRzIiwicnN2cC9ldmVudHMiXSxmdW5jdGlvbihl
LHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7cmV0dXJuIm9uZXJyb3IiPT09ZT92b2lk
IG4ub24oImVycm9yIix0KToyIT09YXJndW1lbnRzLmxlbmd0aD9uW2VdOnZvaWQobltlXT10KX12
YXIgbj17aW5zdHJ1bWVudDohMX07dC5kZWZhdWx0Lm1peGluKG4pLGUuY29uZmlnPW4sZS5jb25m
aWd1cmU9cn0pLGUoInJzdnAvZGVmZXIiLFsiZXhwb3J0cyIsInJzdnAvcHJvbWlzZSJdLGZ1bmN0
aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHI9e307cmV0dXJuIHIucHJv
bWlzZT1uZXcgdC5kZWZhdWx0KGZ1bmN0aW9uKGUsdCl7ci5yZXNvbHZlPWUsci5yZWplY3Q9dH0s
ZSkscn1lLmRlZmF1bHQ9cn0pLGUoInJzdnAvZW51bWVyYXRvciIsWyJleHBvcnRzIiwicnN2cC91
dGlscyIsInJzdnAvLWludGVybmFsIl0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiBuKGUsdCxuKXtyZXR1cm4gZT09PXIuRlVMRklMTEVEP3tzdGF0ZToiZnVsZmlsbGVkIix2
YWx1ZTpufTp7c3RhdGU6InJlamVjdGVkIixyZWFzb246bn19ZnVuY3Rpb24gaShlLHQsbixpKXt2
YXIgbz10aGlzO28uX2luc3RhbmNlQ29uc3RydWN0b3I9ZSxvLnByb21pc2U9bmV3IGUoci5ub29w
LGkpLG8uX2Fib3J0T25SZWplY3Q9bixvLl92YWxpZGF0ZUlucHV0KHQpPyhvLl9pbnB1dD10LG8u
bGVuZ3RoPXQubGVuZ3RoLG8uX3JlbWFpbmluZz10Lmxlbmd0aCxvLl9pbml0KCksMD09PW8ubGVu
Z3RoP3IuZnVsZmlsbChvLnByb21pc2Usby5fcmVzdWx0KTooby5sZW5ndGg9by5sZW5ndGh8fDAs
by5fZW51bWVyYXRlKCksMD09PW8uX3JlbWFpbmluZyYmci5mdWxmaWxsKG8ucHJvbWlzZSxvLl9y
ZXN1bHQpKSk6ci5yZWplY3Qoby5wcm9taXNlLG8uX3ZhbGlkYXRpb25FcnJvcigpKX1lLm1ha2VT
ZXR0bGVkUmVzdWx0PW4sZS5kZWZhdWx0PWksaS5wcm90b3R5cGUuX3ZhbGlkYXRlSW5wdXQ9ZnVu
Y3Rpb24oZSl7cmV0dXJuIHQuaXNBcnJheShlKX0saS5wcm90b3R5cGUuX3ZhbGlkYXRpb25FcnJv
cj1mdW5jdGlvbigpe3JldHVybiBuZXcgRXJyb3IoIkFycmF5IE1ldGhvZHMgbXVzdCBiZSBwcm92
aWRlZCBhbiBBcnJheSIpfSxpLnByb3RvdHlwZS5faW5pdD1mdW5jdGlvbigpe3RoaXMuX3Jlc3Vs
dD1uZXcgQXJyYXkodGhpcy5sZW5ndGgpfSxpLnByb3RvdHlwZS5fZW51bWVyYXRlPWZ1bmN0aW9u
KCl7Zm9yKHZhciBlPXRoaXMsdD1lLmxlbmd0aCxuPWUucHJvbWlzZSxpPWUuX2lucHV0LG89MDtu
Ll9zdGF0ZT09PXIuUEVORElORyYmbzx0O28rKyllLl9lYWNoRW50cnkoaVtvXSxvKX0saS5wcm90
b3R5cGUuX2VhY2hFbnRyeT1mdW5jdGlvbihlLG4pe3ZhciBpPXRoaXMsbz1pLl9pbnN0YW5jZUNv
bnN0cnVjdG9yO3QuaXNNYXliZVRoZW5hYmxlKGUpP2UuY29uc3RydWN0b3I9PT1vJiZlLl9zdGF0
ZSE9PXIuUEVORElORz8oZS5fb25FcnJvcj1udWxsLGkuX3NldHRsZWRBdChlLl9zdGF0ZSxuLGUu
X3Jlc3VsdCkpOmkuX3dpbGxTZXR0bGVBdChvLnJlc29sdmUoZSksbik6KGkuX3JlbWFpbmluZy0t
LGkuX3Jlc3VsdFtuXT1pLl9tYWtlUmVzdWx0KHIuRlVMRklMTEVELG4sZSkpfSxpLnByb3RvdHlw
ZS5fc2V0dGxlZEF0PWZ1bmN0aW9uKGUsdCxuKXt2YXIgaT10aGlzLG89aS5wcm9taXNlO28uX3N0
YXRlPT09ci5QRU5ESU5HJiYoaS5fcmVtYWluaW5nLS0saS5fYWJvcnRPblJlamVjdCYmZT09PXIu
UkVKRUNURUQ/ci5yZWplY3QobyxuKTppLl9yZXN1bHRbdF09aS5fbWFrZVJlc3VsdChlLHQsbikp
LDA9PT1pLl9yZW1haW5pbmcmJnIuZnVsZmlsbChvLGkuX3Jlc3VsdCl9LGkucHJvdG90eXBlLl9t
YWtlUmVzdWx0PWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gcn0saS5wcm90b3R5cGUuX3dpbGxTZXR0
bGVBdD1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXM7ci5zdWJzY3JpYmUoZSx2b2lkIDAsZnVuY3Rp
b24oZSl7bi5fc2V0dGxlZEF0KHIuRlVMRklMTEVELHQsZSl9LGZ1bmN0aW9uKGUpe24uX3NldHRs
ZWRBdChyLlJFSkVDVEVELHQsZSl9KX19KSxlKCJyc3ZwL2V2ZW50cyIsWyJleHBvcnRzIl0sZnVu
Y3Rpb24oZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHQoZSx0KXtmb3IodmFyIHI9MCxuPWUubGVu
Z3RoO3I8bjtyKyspaWYoZVtyXT09PXQpcmV0dXJuIHI7cmV0dXJuLTF9ZnVuY3Rpb24gcihlKXt2
YXIgdD1lLl9wcm9taXNlQ2FsbGJhY2tzO3JldHVybiB0fHwodD1lLl9wcm9taXNlQ2FsbGJhY2tz
PXt9KSx0fWUuZGVmYXVsdD17bWl4aW46ZnVuY3Rpb24oZSl7cmV0dXJuIGUub249dGhpcy5vbixl
Lm9mZj10aGlzLm9mZixlLnRyaWdnZXI9dGhpcy50cmlnZ2VyLGUuX3Byb21pc2VDYWxsYmFja3M9
dm9pZCAwLGV9LG9uOmZ1bmN0aW9uKGUsbil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG4pdGhyb3cg
bmV3IFR5cGVFcnJvcigiQ2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uIik7dmFyIGksbz1yKHRo
aXMpO2k9b1tlXSxpfHwoaT1vW2VdPVtdKSx0KGksbik9PT0tMSYmaS5wdXNoKG4pfSxvZmY6ZnVu
Y3Rpb24oZSxuKXt2YXIgaSxvLGE9cih0aGlzKTtyZXR1cm4gbj8oaT1hW2VdLG89dChpLG4pLHZv
aWQobyE9PS0xJiZpLnNwbGljZShvLDEpKSk6dm9pZChhW2VdPVtdKX0sdHJpZ2dlcjpmdW5jdGlv
bihlLHQpe3ZhciBuLGksbz1yKHRoaXMpO2lmKG49b1tlXSlmb3IodmFyIGE9MDthPG4ubGVuZ3Ro
O2ErKykoaT1uW2FdKSh0KX19fSksZSgicnN2cC9maWx0ZXIiLFsiZXhwb3J0cyIsInJzdnAvcHJv
bWlzZSIsInJzdnAvdXRpbHMiXSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IG4oZSxuLGkpe3JldHVybiB0LmRlZmF1bHQuYWxsKGUsaSkudGhlbihmdW5jdGlvbihlKXtpZigh
ci5pc0Z1bmN0aW9uKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoIllvdSBtdXN0IHBhc3MgYSBmdW5j
dGlvbiBhcyBmaWx0ZXIncyBzZWNvbmQgYXJndW1lbnQuIik7Zm9yKHZhciBvPWUubGVuZ3RoLGE9
bmV3IEFycmF5KG8pLHM9MDtzPG87cysrKWFbc109bihlW3NdKTtyZXR1cm4gdC5kZWZhdWx0LmFs
bChhLGkpLnRoZW4oZnVuY3Rpb24odCl7Zm9yKHZhciByPW5ldyBBcnJheShvKSxuPTAsaT0wO2k8
bztpKyspdFtpXSYmKHJbbl09ZVtpXSxuKyspO3JldHVybiByLmxlbmd0aD1uLHJ9KX0pfWUuZGVm
YXVsdD1ufSksZSgicnN2cC9oYXNoLXNldHRsZWQiLFsiZXhwb3J0cyIsInJzdnAvcHJvbWlzZSIs
InJzdnAvZW51bWVyYXRvciIsInJzdnAvcHJvbWlzZS1oYXNoIiwicnN2cC91dGlscyJdLGZ1bmN0
aW9uKGUsdCxyLG4saSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG8oZSx0LHIpe3RoaXMuX3N1cGVy
Q29uc3RydWN0b3IoZSx0LCExLHIpfWZ1bmN0aW9uIGEoZSxyKXtyZXR1cm4gbmV3IG8odC5kZWZh
dWx0LGUscikucHJvbWlzZX1lLmRlZmF1bHQ9YSxvLnByb3RvdHlwZT1pLm9fY3JlYXRlKG4uZGVm
YXVsdC5wcm90b3R5cGUpLG8ucHJvdG90eXBlLl9zdXBlckNvbnN0cnVjdG9yPXIuZGVmYXVsdCxv
LnByb3RvdHlwZS5fbWFrZVJlc3VsdD1yLm1ha2VTZXR0bGVkUmVzdWx0LG8ucHJvdG90eXBlLl92
YWxpZGF0aW9uRXJyb3I9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEVycm9yKCJoYXNoU2V0dGxlZCBt
dXN0IGJlIGNhbGxlZCB3aXRoIGFuIG9iamVjdCIpfX0pLGUoInJzdnAvaGFzaCIsWyJleHBvcnRz
IiwicnN2cC9wcm9taXNlIiwicnN2cC9wcm9taXNlLWhhc2giXSxmdW5jdGlvbihlLHQscil7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSxuKXtyZXR1cm4gbmV3IHIuZGVmYXVsdCh0LmRlZmF1bHQs
ZSxuKS5wcm9taXNlfWUuZGVmYXVsdD1ufSksZSgicnN2cC9pbnN0cnVtZW50IixbImV4cG9ydHMi
LCJyc3ZwL2NvbmZpZyIsInJzdnAvdXRpbHMiXSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIG4oKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Zm9yKHZhciBlLHI9MDtyPG8ubGVu
Z3RoO3IrKyl7ZT1vW3JdO3ZhciBuPWUucGF5bG9hZDtuLmd1aWQ9bi5rZXkrbi5pZCxuLmNoaWxk
R3VpZD1uLmtleStuLmNoaWxkSWQsbi5lcnJvciYmKG4uc3RhY2s9bi5lcnJvci5zdGFjayksdC5j
b25maWcudHJpZ2dlcihlLm5hbWUsZS5wYXlsb2FkKX1vLmxlbmd0aD0wfSw1MCl9ZnVuY3Rpb24g
aShlLGksYSl7MT09PW8ucHVzaCh7bmFtZTplLHBheWxvYWQ6e2tleTppLl9ndWlkS2V5LGlkOmku
X2lkLGV2ZW50TmFtZTplLGRldGFpbDppLl9yZXN1bHQsY2hpbGRJZDphJiZhLl9pZCxsYWJlbDpp
Ll9sYWJlbCx0aW1lU3RhbXA6ci5ub3coKSxlcnJvcjp0LmNvbmZpZ1siaW5zdHJ1bWVudC13aXRo
LXN0YWNrIl0/bmV3IEVycm9yKGkuX2xhYmVsKTpudWxsfX0pJiZuKCl9ZS5kZWZhdWx0PWk7dmFy
IG89W119KSxlKCJyc3ZwL21hcCIsWyJleHBvcnRzIiwicnN2cC9wcm9taXNlIiwicnN2cC91dGls
cyJdLGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlLG4saSl7cmV0dXJu
IHQuZGVmYXVsdC5hbGwoZSxpKS50aGVuKGZ1bmN0aW9uKGUpe2lmKCFyLmlzRnVuY3Rpb24obikp
dGhyb3cgbmV3IFR5cGVFcnJvcigiWW91IG11c3QgcGFzcyBhIGZ1bmN0aW9uIGFzIG1hcCdzIHNl
Y29uZCBhcmd1bWVudC4iKTtmb3IodmFyIG89ZS5sZW5ndGgsYT1uZXcgQXJyYXkobykscz0wO3M8
bztzKyspYVtzXT1uKGVbc10pO3JldHVybiB0LmRlZmF1bHQuYWxsKGEsaSl9KX1lLmRlZmF1bHQ9
bn0pLGUoInJzdnAvbm9kZSIsWyJleHBvcnRzIiwicnN2cC9wcm9taXNlIiwicnN2cC8taW50ZXJu
YWwiLCJyc3ZwL3V0aWxzIl0sZnVuY3Rpb24oZSx0LHIsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IGkoZSx0KXtmb3IodmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModCksbj0wO248ci5s
ZW5ndGg7bisrKXt2YXIgaT1yW25dLG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0
LGkpO28mJm8uY29uZmlndXJhYmxlJiZ2b2lkIDA9PT1lW2ldJiZPYmplY3QuZGVmaW5lUHJvcGVy
dHkoZSxpLG8pfXJldHVybiBlfWZ1bmN0aW9uIG8oKXt0aGlzLnZhbHVlPXZvaWQgMH1mdW5jdGlv
biBhKGUpe3RyeXtyZXR1cm4gZS50aGVufWNhdGNoKGUpe3JldHVybiBtLnZhbHVlPWUsbX19ZnVu
Y3Rpb24gcyhlLHQscil7dHJ5e2UuYXBwbHkodCxyKX1jYXRjaChlKXtyZXR1cm4gbS52YWx1ZT1l
LG19fWZ1bmN0aW9uIHUoZSx0KXtmb3IodmFyIHIsbixpPXt9LG89ZS5sZW5ndGgsYT1uZXcgQXJy
YXkobykscz0wO3M8bztzKyspYVtzXT1lW3NdO2ZvcihuPTA7bjx0Lmxlbmd0aDtuKyspcj10W25d
LGlbcl09YVtuKzFdO3JldHVybiBpfWZ1bmN0aW9uIGwoZSl7Zm9yKHZhciB0PWUubGVuZ3RoLHI9
bmV3IEFycmF5KHQtMSksbj0xO248dDtuKyspcltuLTFdPWVbbl07CityZXR1cm4gcn1mdW5jdGlv
biBjKGUsdCl7cmV0dXJue3RoZW46ZnVuY3Rpb24ocixuKXtyZXR1cm4gZS5jYWxsKHQscixuKX19
fWZ1bmN0aW9uIGYoZSxvKXt2YXIgYT1mdW5jdGlvbigpe2Zvcih2YXIgaSxhPXRoaXMscz1hcmd1
bWVudHMubGVuZ3RoLGY9bmV3IEFycmF5KHMrMSksbT0hMSxiPTA7YjxzOysrYil7aWYoaT1hcmd1
bWVudHNbYl0sIW0pe2lmKG09aChpKSxtPT09dil7dmFyIGc9bmV3IHQuZGVmYXVsdChyLm5vb3Ap
O3JldHVybiByLnJlamVjdChnLHYudmFsdWUpLGd9bSYmbSE9PSEwJiYoaT1jKG0saSkpfWZbYl09
aX12YXIgeT1uZXcgdC5kZWZhdWx0KHIubm9vcCk7cmV0dXJuIGZbc109ZnVuY3Rpb24oZSx0KXtl
P3IucmVqZWN0KHksZSk6dm9pZCAwPT09bz9yLnJlc29sdmUoeSx0KTpvPT09ITA/ci5yZXNvbHZl
KHksbChhcmd1bWVudHMpKTpuLmlzQXJyYXkobyk/ci5yZXNvbHZlKHksdShhcmd1bWVudHMsbykp
OnIucmVzb2x2ZSh5LHQpfSxtP3AoeSxmLGUsYSk6ZCh5LGYsZSxhKX07cmV0dXJuIGkoYSxlKSxh
fWZ1bmN0aW9uIGQoZSx0LG4saSl7dmFyIG89cyhuLGksdCk7cmV0dXJuIG89PT1tJiZyLnJlamVj
dChlLG8udmFsdWUpLGV9ZnVuY3Rpb24gcChlLG4saSxvKXtyZXR1cm4gdC5kZWZhdWx0LmFsbChu
KS50aGVuKGZ1bmN0aW9uKHQpe3ZhciBuPXMoaSxvLHQpO3JldHVybiBuPT09bSYmci5yZWplY3Qo
ZSxuLnZhbHVlKSxlfSl9ZnVuY3Rpb24gaChlKXtyZXR1cm4hKCFlfHwib2JqZWN0IiE9dHlwZW9m
IGUpJiYoZS5jb25zdHJ1Y3Rvcj09PXQuZGVmYXVsdHx8YShlKSl9ZS5kZWZhdWx0PWY7dmFyIG09
bmV3IG8sdj1uZXcgb30pLGUoInJzdnAvcGxhdGZvcm0iLFsiZXhwb3J0cyJdLGZ1bmN0aW9uKGUp
eyJ1c2Ugc3RyaWN0Ijt2YXIgdDtpZigib2JqZWN0Ij09dHlwZW9mIHNlbGYpdD1zZWxmO2Vsc2V7
aWYoIm9iamVjdCIhPXR5cGVvZiBnbG9iYWwpdGhyb3cgbmV3IEVycm9yKCJubyBnbG9iYWw6IGBz
ZWxmYCBvciBgZ2xvYmFsYCBmb3VuZCIpO3Q9Z2xvYmFsfWUuZGVmYXVsdD10fSksZSgicnN2cC9w
cm9taXNlLWhhc2giLFsiZXhwb3J0cyIsInJzdnAvZW51bWVyYXRvciIsInJzdnAvLWludGVybmFs
IiwicnN2cC91dGlscyJdLGZ1bmN0aW9uKGUsdCxyLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBp
KGUsdCxyKXt0aGlzLl9zdXBlckNvbnN0cnVjdG9yKGUsdCwhMCxyKX1lLmRlZmF1bHQ9aSxpLnBy
b3RvdHlwZT1uLm9fY3JlYXRlKHQuZGVmYXVsdC5wcm90b3R5cGUpLGkucHJvdG90eXBlLl9zdXBl
ckNvbnN0cnVjdG9yPXQuZGVmYXVsdCxpLnByb3RvdHlwZS5faW5pdD1mdW5jdGlvbigpe3RoaXMu
X3Jlc3VsdD17fX0saS5wcm90b3R5cGUuX3ZhbGlkYXRlSW5wdXQ9ZnVuY3Rpb24oZSl7cmV0dXJu
IGUmJiJvYmplY3QiPT10eXBlb2YgZX0saS5wcm90b3R5cGUuX3ZhbGlkYXRpb25FcnJvcj1mdW5j
dGlvbigpe3JldHVybiBuZXcgRXJyb3IoIlByb21pc2UuaGFzaCBtdXN0IGJlIGNhbGxlZCB3aXRo
IGFuIG9iamVjdCIpfSxpLnByb3RvdHlwZS5fZW51bWVyYXRlPWZ1bmN0aW9uKCl7dmFyIGU9dGhp
cyx0PWUucHJvbWlzZSxuPWUuX2lucHV0LGk9W107Zm9yKHZhciBvIGluIG4pdC5fc3RhdGU9PT1y
LlBFTkRJTkcmJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLG8pJiZpLnB1
c2goe3Bvc2l0aW9uOm8sZW50cnk6bltvXX0pO3ZhciBhPWkubGVuZ3RoO2UuX3JlbWFpbmluZz1h
O2Zvcih2YXIgcyx1PTA7dC5fc3RhdGU9PT1yLlBFTkRJTkcmJnU8YTt1Kyspcz1pW3VdLGUuX2Vh
Y2hFbnRyeShzLmVudHJ5LHMucG9zaXRpb24pfX0pLGUoInJzdnAvcHJvbWlzZSIsWyJleHBvcnRz
IiwicnN2cC9jb25maWciLCJyc3ZwL2luc3RydW1lbnQiLCJyc3ZwL3V0aWxzIiwicnN2cC8taW50
ZXJuYWwiLCJyc3ZwL3Byb21pc2UvYWxsIiwicnN2cC9wcm9taXNlL3JhY2UiLCJyc3ZwL3Byb21p
c2UvcmVzb2x2ZSIsInJzdnAvcHJvbWlzZS9yZWplY3QiXSxmdW5jdGlvbihlLHQscixuLGksbyxh
LHMsdSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGwoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJZb3Ug
bXVzdCBwYXNzIGEgcmVzb2x2ZXIgZnVuY3Rpb24gYXMgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIHRo
ZSBwcm9taXNlIGNvbnN0cnVjdG9yIil9ZnVuY3Rpb24gYygpe3Rocm93IG5ldyBUeXBlRXJyb3Io
IkZhaWxlZCB0byBjb25zdHJ1Y3QgJ1Byb21pc2UnOiBQbGVhc2UgdXNlIHRoZSAnbmV3JyBvcGVy
YXRvciwgdGhpcyBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0
aW9uLiIpfWZ1bmN0aW9uIGYoZSxvKXt2YXIgYT10aGlzO2EuX2lkPXArKyxhLl9sYWJlbD1vLGEu
X3N0YXRlPXZvaWQgMCxhLl9yZXN1bHQ9dm9pZCAwLGEuX3N1YnNjcmliZXJzPVtdLHQuY29uZmln
Lmluc3RydW1lbnQmJnIuZGVmYXVsdCgiY3JlYXRlZCIsYSksaS5ub29wIT09ZSYmKG4uaXNGdW5j
dGlvbihlKXx8bCgpLGEgaW5zdGFuY2VvZiBmfHxjKCksaS5pbml0aWFsaXplUHJvbWlzZShhLGUp
KX1lLmRlZmF1bHQ9Zjt2YXIgZD0icnN2cF8iK24ubm93KCkrIi0iLHA9MDtmLmNhc3Q9cy5kZWZh
dWx0LGYuYWxsPW8uZGVmYXVsdCxmLnJhY2U9YS5kZWZhdWx0LGYucmVzb2x2ZT1zLmRlZmF1bHQs
Zi5yZWplY3Q9dS5kZWZhdWx0LGYucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpmLF9ndWlkS2V5OmQs
X29uRXJyb3I6ZnVuY3Rpb24oZSl7dmFyIHI9dGhpczt0LmNvbmZpZy5hZnRlcihmdW5jdGlvbigp
e3IuX29uRXJyb3ImJnQuY29uZmlnLnRyaWdnZXIoImVycm9yIixlKX0pfSx0aGVuOmZ1bmN0aW9u
KGUsbixvKXt2YXIgYT10aGlzLHM9YS5fc3RhdGU7aWYocz09PWkuRlVMRklMTEVEJiYhZXx8cz09
PWkuUkVKRUNURUQmJiFuKXJldHVybiB0LmNvbmZpZy5pbnN0cnVtZW50JiZyLmRlZmF1bHQoImNo
YWluZWQiLGEsYSksYTthLl9vbkVycm9yPW51bGw7dmFyIHU9bmV3IGEuY29uc3RydWN0b3IoaS5u
b29wLG8pLGw9YS5fcmVzdWx0O2lmKHQuY29uZmlnLmluc3RydW1lbnQmJnIuZGVmYXVsdCgiY2hh
aW5lZCIsYSx1KSxzKXt2YXIgYz1hcmd1bWVudHNbcy0xXTt0LmNvbmZpZy5hc3luYyhmdW5jdGlv
bigpe2kuaW52b2tlQ2FsbGJhY2socyx1LGMsbCl9KX1lbHNlIGkuc3Vic2NyaWJlKGEsdSxlLG4p
O3JldHVybiB1fSxjYXRjaDpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLnRoZW4odm9pZCAwLGUs
dCl9LGZpbmFsbHk6ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLG49ci5jb25zdHJ1Y3RvcjtyZXR1
cm4gci50aGVuKGZ1bmN0aW9uKHQpe3JldHVybiBuLnJlc29sdmUoZSgpKS50aGVuKGZ1bmN0aW9u
KCl7cmV0dXJuIHR9KX0sZnVuY3Rpb24odCl7cmV0dXJuIG4ucmVzb2x2ZShlKCkpLnRoZW4oZnVu
Y3Rpb24oKXt0aHJvdyB0fSl9LHQpfX19KSxlKCJyc3ZwL3Byb21pc2UvYWxsIixbImV4cG9ydHMi
LCJyc3ZwL2VudW1lcmF0b3IiXSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBy
KGUscil7cmV0dXJuIG5ldyB0LmRlZmF1bHQodGhpcyxlLCEwLHIpLnByb21pc2V9ZS5kZWZhdWx0
PXJ9KSxlKCJyc3ZwL3Byb21pc2UvcmFjZSIsWyJleHBvcnRzIiwicnN2cC91dGlscyIsInJzdnAv
LWludGVybmFsIl0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUsbil7
ZnVuY3Rpb24gaShlKXtyLnJlc29sdmUocyxlKX1mdW5jdGlvbiBvKGUpe3IucmVqZWN0KHMsZSl9
dmFyIGE9dGhpcyxzPW5ldyBhKHIubm9vcCxuKTtpZighdC5pc0FycmF5KGUpKXJldHVybiByLnJl
amVjdChzLG5ldyBUeXBlRXJyb3IoIllvdSBtdXN0IHBhc3MgYW4gYXJyYXkgdG8gcmFjZS4iKSks
cztmb3IodmFyIHU9ZS5sZW5ndGgsbD0wO3MuX3N0YXRlPT09ci5QRU5ESU5HJiZsPHU7bCsrKXIu
c3Vic2NyaWJlKGEucmVzb2x2ZShlW2xdKSx2b2lkIDAsaSxvKTtyZXR1cm4gc31lLmRlZmF1bHQ9
bn0pLGUoInJzdnAvcHJvbWlzZS9yZWplY3QiLFsiZXhwb3J0cyIsInJzdnAvLWludGVybmFsIl0s
ZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHIpe3ZhciBuPXRoaXMsaT1u
ZXcgbih0Lm5vb3Ascik7cmV0dXJuIHQucmVqZWN0KGksZSksaX1lLmRlZmF1bHQ9cn0pLGUoInJz
dnAvcHJvbWlzZS9yZXNvbHZlIixbImV4cG9ydHMiLCJyc3ZwLy1pbnRlcm5hbCJdLGZ1bmN0aW9u
KGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSxyKXt2YXIgbj10aGlzO2lmKGUmJiJvYmpl
Y3QiPT10eXBlb2YgZSYmZS5jb25zdHJ1Y3Rvcj09PW4pcmV0dXJuIGU7dmFyIGk9bmV3IG4odC5u
b29wLHIpO3JldHVybiB0LnJlc29sdmUoaSxlKSxpfWUuZGVmYXVsdD1yfSksZSgicnN2cC9yYWNl
IixbImV4cG9ydHMiLCJyc3ZwL3Byb21pc2UiXSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiByKGUscil7cmV0dXJuIHQuZGVmYXVsdC5yYWNlKGUscil9ZS5kZWZhdWx0PXJ9KSxl
KCJyc3ZwL3JlamVjdCIsWyJleHBvcnRzIiwicnN2cC9wcm9taXNlIl0sZnVuY3Rpb24oZSx0KXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHIpe3JldHVybiB0LmRlZmF1bHQucmVqZWN0KGUscil9
ZS5kZWZhdWx0PXJ9KSxlKCJyc3ZwL3Jlc29sdmUiLFsiZXhwb3J0cyIsInJzdnAvcHJvbWlzZSJd
LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSxyKXtyZXR1cm4gdC5kZWZh
dWx0LnJlc29sdmUoZSxyKX1lLmRlZmF1bHQ9cn0pLGUoInJzdnAvcmV0aHJvdyIsWyJleHBvcnRz
Il0sZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHQoZSl7dGhyb3cgc2V0VGltZW91
dChmdW5jdGlvbigpe3Rocm93IGV9KSxlfWUuZGVmYXVsdD10fSksZSgicnN2cC91dGlscyIsWyJl
eHBvcnRzIl0sZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHQoZSl7cmV0dXJuImZ1
bmN0aW9uIj09dHlwZW9mIGV8fCJvYmplY3QiPT10eXBlb2YgZSYmbnVsbCE9PWV9ZnVuY3Rpb24g
cihlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZX1mdW5jdGlvbiBuKGUpe3JldHVybiJvYmpl
Y3QiPT10eXBlb2YgZSYmbnVsbCE9PWV9ZnVuY3Rpb24gaSgpe31lLm9iamVjdE9yRnVuY3Rpb249
dCxlLmlzRnVuY3Rpb249cixlLmlzTWF5YmVUaGVuYWJsZT1uO3ZhciBvO289QXJyYXkuaXNBcnJh
eT9BcnJheS5pc0FycmF5OmZ1bmN0aW9uKGUpe3JldHVybiJbb2JqZWN0IEFycmF5XSI9PT1PYmpl
Y3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSl9O3ZhciBhPW87ZS5pc0FycmF5PWE7dmFyIHM9
RGF0ZS5ub3d8fGZ1bmN0aW9uKCl7cmV0dXJuKG5ldyBEYXRlKS5nZXRUaW1lKCl9O2Uubm93PXM7
dmFyIHU9T2JqZWN0LmNyZWF0ZXx8ZnVuY3Rpb24oZSl7aWYoYXJndW1lbnRzLmxlbmd0aD4xKXRo
cm93IG5ldyBFcnJvcigiU2Vjb25kIGFyZ3VtZW50IG5vdCBzdXBwb3J0ZWQiKTtpZigib2JqZWN0
IiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhbiBvYmpl
Y3QiKTtyZXR1cm4gaS5wcm90b3R5cGU9ZSxuZXcgaX07ZS5vX2NyZWF0ZT11fSksZSgidmVydGV4
IixbImV4cG9ydHMiXSxmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gdChlKXt0aGlz
Lm5hbWU9ZSx0aGlzLmluY29taW5nPXt9LHRoaXMuaW5jb21pbmdOYW1lcz1bXSx0aGlzLmhhc091
dGdvaW5nPSExLHRoaXMudmFsdWU9bnVsbH1lLmRlZmF1bHQ9dH0pLGUoInZpc2l0IixbImV4cG9y
dHMiXSxmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gdChlLHIsbixpKXt2YXIgbyxh
PWUubmFtZSxzPWUuaW5jb21pbmcsdT1lLmluY29taW5nTmFtZXMsbD11Lmxlbmd0aDtpZihufHwo
bj17fSksaXx8KGk9W10pLCFuLmhhc093blByb3BlcnR5KGEpKXtmb3IoaS5wdXNoKGEpLG5bYV09
ITAsbz0wO288bDtvKyspdChzW3Vbb11dLHIsbixpKTtyKGUsaSksaS5wb3AoKX19ZS5kZWZhdWx0
PXR9KSx0KCJlbWJlciIpfSgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3ZhciBlPXtlbWJlcjp7
ZGVmYXVsdDpFbWJlcn0sImVtYmVyLWFwcGxpY2F0aW9uIjp7ZGVmYXVsdDpFbWJlci5BcHBsaWNh
dGlvbn0sImVtYmVyLWFycmF5Ijp7ZGVmYXVsdDpFbWJlci5BcnJheX0sImVtYmVyLWFycmF5L211
dGFibGUiOntkZWZhdWx0OkVtYmVyLk11dGFibGVBcnJheX0sImVtYmVyLWFycmF5L3V0aWxzIjp7
QTpFbWJlci5BLGlzRW1iZXJBcnJheTpFbWJlci5pc0FycmF5LHdyYXA6RW1iZXIubWFrZUFycmF5
fSwiZW1iZXItY29tcG9uZW50Ijp7ZGVmYXVsdDpFbWJlci5Db21wb25lbnR9LCJlbWJlci1jb21w
b25lbnRzL2NoZWNrYm94Ijp7ZGVmYXVsdDpFbWJlci5DaGVja2JveH0sImVtYmVyLWNvbXBvbmVu
dHMvdGV4dC1hcmVhIjp7ZGVmYXVsdDpFbWJlci5UZXh0QXJlYX0sImVtYmVyLWNvbXBvbmVudHMv
dGV4dC1maWVsZCI6e2RlZmF1bHQ6RW1iZXIuVGV4dEZpZWxkfSwiZW1iZXItY29udHJvbGxlciI6
e2RlZmF1bHQ6RW1iZXIuQ29udHJvbGxlcn0sImVtYmVyLWNvbnRyb2xsZXIvaW5qZWN0Ijp7ZGVm
YXVsdDpFbWJlci5pbmplY3QuY29udHJvbGxlcn0sImVtYmVyLWNvbnRyb2xsZXIvcHJveHkiOntk
ZWZhdWx0OkVtYmVyLkFycmF5UHJveHl9LCJlbWJlci1jb250cm9sbGVycy9zb3J0YWJsZSI6e2Rl
ZmF1bHQ6RW1iZXIuU29ydGFibGVNaXhpbn0sImVtYmVyLWRlYnVnIjp7bG9nOkVtYmVyLmRlYnVn
LGluc3BlY3Q6RW1iZXIuaW5zcGVjdCxydW46RW1iZXIucnVuSW5EZWJ1Zyx3YXJuOkVtYmVyLndh
cm59LCJlbWJlci1kZWJ1Zy9jb250YWluZXItZGVidWctYWRhcHRlciI6e2RlZmF1bHQ6RW1iZXIu
Q29udGFpbmVyRGVidWdBZGFwdGVyfSwiZW1iZXItZGVidWcvZGF0YS1hZGFwdGVyIjp7ZGVmYXVs
dDpFbWJlci5EYXRhQWRhcHRlcn0sImVtYmVyLWRlcHJlY2F0aW9ucyI6e2RlcHJlY2F0ZTpFbWJl
ci5kZXByZWNhdGUsZGVwcmVjYXRlRnVuYzpFbWJlci5kZXByZWNhdGVGdW5jfSwiZW1iZXItZW51
bWVyYWJsZSI6e2RlZmF1bHQ6RW1iZXIuRW51bWVyYWJsZX0sImVtYmVyLWV2ZW50ZWQiOntkZWZh
dWx0OkVtYmVyLkV2ZW50ZWR9LCJlbWJlci1ldmVudGVkL29uIjp7ZGVmYXVsdDpFbWJlci5vbn0s
ImVtYmVyLWdsb2JhbHMtcmVzb2x2ZXIiOntkZWZhdWx0OkVtYmVyLkRlZmF1bHRSZXNvbHZlcn0s
ImVtYmVyLWhlbHBlciI6e2RlZmF1bHQ6RW1iZXIuSGVscGVyLGhlbHBlcjpFbWJlci5IZWxwZXIm
JkVtYmVyLkhlbHBlci5oZWxwZXJ9LCJlbWJlci1pbnN0cnVtZW50YXRpb24iOntpbnN0cnVtZW50
OkVtYmVyLkluc3RydW1lbnRhdGlvbi5pbnN0cnVtZW50LHJlc2V0OkVtYmVyLkluc3RydW1lbnRh
dGlvbi5yZXNldCxzdWJzY3JpYmU6RW1iZXIuSW5zdHJ1bWVudGF0aW9uLnN1YnNjcmliZSx1bnN1
YnNjcmliZTpFbWJlci5JbnN0cnVtZW50YXRpb24udW5zdWJzY3JpYmV9LCJlbWJlci1sb2NhdGlv
bnMvaGFzaCI6e2RlZmF1bHQ6RW1iZXIuSGFzaExvY2F0aW9ufSwiZW1iZXItbG9jYXRpb25zL2hp
c3RvcnkiOntkZWZhdWx0OkVtYmVyLkhpc3RvcnlMb2NhdGlvbn0sImVtYmVyLWxvY2F0aW9ucy9u
b25lIjp7ZGVmYXVsdDpFbWJlci5Ob25lTG9jYXRpb259LCJlbWJlci1tYXAiOntkZWZhdWx0OkVt
YmVyLk1hcCx3aXRoRGVmYXVsdDpFbWJlci5NYXBXaXRoRGVmYXVsdH0sImVtYmVyLW1ldGFsL2Rl
c3Ryb3kiOntkZWZhdWx0OkVtYmVyLmRlc3Ryb3l9LCJlbWJlci1tZXRhbC9ldmVudHMiOnthZGRM
aXN0ZW5lcjpFbWJlci5hZGRMaXN0ZW5lcixyZW1vdmVMaXN0ZW5lcjpFbWJlci5yZW1vdmVMaXN0
ZW5lcixzZW5kOkVtYmVyLnNlbmRFdmVudH0sImVtYmVyLW1ldGFsL2dldCI6e2RlZmF1bHQ6RW1i
ZXIuZ2V0LGdldFByb3BlcnRpZXM6RW1iZXIuZ2V0UHJvcGVydGllc30sImVtYmVyLW1ldGFsL21p
eGluIjp7ZGVmYXVsdDpFbWJlci5NaXhpbn0sImVtYmVyLW1ldGFsL29ic2VydmVyIjp7ZGVmYXVs
dDpFbWJlci5vYnNlcnZlcixhZGRPYnNlcnZlcjpFbWJlci5hZGRPYnNlcnZlcixyZW1vdmVPYnNl
cnZlcjpFbWJlci5yZW1vdmVPYnNlcnZlcn0sImVtYmVyLW1ldGFsL29uLWxvYWQiOntkZWZhdWx0
OkVtYmVyLm9uTG9hZCxydW46RW1iZXIucnVuTG9hZEhvb2tzfSwiZW1iZXItbWV0YWwvc2V0Ijp7
ZGVmYXVsdDpFbWJlci5zZXQsc2V0UHJvcGVydGllczpFbWJlci5zZXRQcm9wZXJ0aWVzLHRyeVNl
dDpFbWJlci50cnlTZXR9LCJlbWJlci1tZXRhbC91dGlscyI6e2FsaWFzTWV0aG9kOkVtYmVyLmFs
aWFzTWV0aG9kLGFzc2VydDpFbWJlci5hc3NlcnQsY2FjaGVGb3I6RW1iZXIuY2FjaGVGb3IsY29w
eTpFbWJlci5jb3B5LGd1aWRGb3I6RW1iZXIuZ3VpZEZvcn0sImVtYmVyLW9iamVjdCI6e2RlZmF1
bHQ6RW1iZXIuT2JqZWN0fSwiZW1iZXItcGxhdGZvcm0iOnthc3NpZ246RW1iZXIubWVyZ2UsY3Jl
YXRlOkVtYmVyLmNyZWF0ZSxkZWZpbmVQcm9wZXJ0eTpFbWJlci5wbGF0Zm9ybS5kZWZpbmVQcm9w
ZXJ0eSxoYXNBY2Nlc3NvcnM6RW1iZXIucGxhdGZvcm0uaGFzUHJvcGVydHlBY2Nlc3NvcnMsa2V5
czpFbWJlci5rZXlzfSwiZW1iZXItcm91dGUiOntkZWZhdWx0OkVtYmVyLlJvdXRlfSwiZW1iZXIt
cm91dGVyIjp7ZGVmYXVsdDpFbWJlci5Sb3V0ZXJ9LCJlbWJlci1ydW5sb29wIjp7ZGVmYXVsdDpF
bWJlci5ydW4sYmVnaW46RW1iZXIucnVuLmJlZ2luLGJpbmQ6RW1iZXIucnVuLmJpbmQsY2FuY2Vs
OkVtYmVyLnJ1bi5jYW5jZWwsZGVib3VuY2U6RW1iZXIucnVuLmRlYm91bmNlLGVuZDpFbWJlci5y
dW4uZW5kLGpvaW46RW1iZXIucnVuLmpvaW4sbGF0ZXI6RW1iZXIucnVuLmxhdGVyLG5leHQ6RW1i
ZXIucnVuLm5leHQsb25jZTpFbWJlci5ydW4ub25jZSxzY2hlZHVsZTpFbWJlci5ydW4uc2NoZWR1
bGUsc2NoZWR1bGVPbmNlOkVtYmVyLnJ1bi5zY2hlZHVsZU9uY2UsdGhyb3R0bGU6RW1iZXIucnVu
LnRocm90dGxlfSwiZW1iZXItc2VydmljZSI6e2RlZmF1bHQ6RW1iZXIuU2VydmljZX0sImVtYmVy
LXNlcnZpY2UvaW5qZWN0Ijp7ZGVmYXVsdDpFbWJlci5pbmplY3Quc2VydmljZX0sImVtYmVyLXNl
dC9vcmRlcmVkIjp7ZGVmYXVsdDpFbWJlci5PcmRlcmVkU2V0fSwiZW1iZXItc3RyaW5nIjp7Y2Ft
ZWxpemU6RW1iZXIuU3RyaW5nLmNhbWVsaXplLGNhcGl0YWxpemU6RW1iZXIuU3RyaW5nLmNhcGl0
YWxpemUsY2xhc3NpZnk6RW1iZXIuU3RyaW5nLmNsYXNzaWZ5LGRhc2hlcml6ZTpFbWJlci5TdHJp
bmcuZGFzaGVyaXplLGRlY2FtZWxpemU6RW1iZXIuU3RyaW5nLmRlY2FtZWxpemUsZm10OkVtYmVy
LlN0cmluZy5mbXQsaHRtbFNhZmU6RW1iZXIuU3RyaW5nLmh0bWxTYWZlLGxvYzpFbWJlci5TdHJp
bmcubG9jLHVuZGVyc2NvcmU6RW1iZXIuU3RyaW5nLnVuZGVyc2NvcmUsdzpFbWJlci5TdHJpbmcu
d30sImVtYmVyLXV0aWxzIjp7aXNCbGFuazpFbWJlci5pc0JsYW5rLGlzRW1wdHk6RW1iZXIuaXNF
bXB0eSxpc05vbmU6RW1iZXIuaXNOb25lLGlzUHJlc2VudDpFbWJlci5pc1ByZXNlbnQsdHJ5SW52
b2tlOkVtYmVyLnRyeUludm9rZSx0eXBlT2Y6RW1iZXIudHlwZU9mfX07ZVsiZW1iZXItY29tcHV0
ZWQiXT17ZGVmYXVsdDpFbWJlci5jb21wdXRlZH07Zm9yKHZhciB0PVsiZW1wdHkiLCJub3RFbXB0
eSIsIm5vbmUiLCJub3QiLCJib29sIiwibWF0Y2giLCJlcXVhbCIsImd0IiwiZ3RlIiwibHQiLCJs
dGUiLCJhbGlhcyIsIm9uZVdheSIsInJlYWRzIiwicmVhZE9ubHkiLCJkZXByZWNhdGluZ0FsaWFz
IiwiYW5kIiwib3IiLCJjb2xsZWN0Iiwic3VtIiwibWluIiwibWF4IiwibWFwIiwic29ydCIsInNl
dERpZmYiLCJtYXBCeSIsIm1hcFByb3BlcnR5IiwiZmlsdGVyIiwiZmlsdGVyQnkiLCJmaWx0ZXJQ
cm9wZXJ0eSIsInVuaXEiLCJ1bmlvbiIsImludGVyc2VjdCJdLG49MCxpPXQubGVuZ3RoO248aTtu
Kyspe3ZhciBvPXRbbl07ZVsiZW1iZXItY29tcHV0ZWQiXVtvXT1FbWJlci5jb21wdXRlZFtvXX1m
b3IodmFyIGEgaW4gZSlyKGEsZVthXSl9ZnVuY3Rpb24gdCgpe2lmKEVtYmVyLlRlc3Qpe3ZhciBl
PXsiZW1iZXItdGVzdCI6e2RlZmF1bHQ6RW1iZXIuVGVzdH0sImVtYmVyLXRlc3QvYWRhcHRlciI6
e2RlZmF1bHQ6RW1iZXIuVGVzdC5BZGFwdGVyfSwiZW1iZXItdGVzdC9xdW5pdC1hZGFwdGVyIjp7
ZGVmYXVsdDpFbWJlci5UZXN0LlFVbml0QWRhcHRlcn19O2Zvcih2YXIgdCBpbiBlKXIodCxlW3Rd
KX19ZnVuY3Rpb24gcihlLHQpe2RlZmluZShlLFtdLGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3Jl
dHVybiB0fSl9ZSgpLHQoKSxyKCJqcXVlcnkiLHtkZWZhdWx0OnNlbGYualF1ZXJ5fSkscigicnN2
cCIse2RlZmF1bHQ6RW1iZXIuUlNWUH0pfSgpLGRlZmluZSgiZW1iZXIvbG9hZC1pbml0aWFsaXpl
cnMiLFsiZXhwb3J0cyIsImVtYmVyLWxvYWQtaW5pdGlhbGl6ZXJzIiwiZW1iZXIiXSxmdW5jdGlv
bihlLHQscil7ci5kZWZhdWx0LmRlcHJlY2F0ZSgiVXNhZ2Ugb2YgYGVtYmVyL2xvYWQtaW5pdGlh
bGl6ZXJzYCBtb2R1bGUgaXMgZGVwcmVjYXRlZCwgcGxlYXNlIHVwZGF0ZSB0byBgZW1iZXItbG9h
ZC1pbml0aWFsaXplcnNgLiIsITEse2lkOiJlbWJlci1sb2FkLWluaXRpYWxpemVycy5sZWdhY3kt
c2hpbXMiLHVudGlsOiIzLjAuMCJ9KSxlLmRlZmF1bHQ9dC5kZWZhdWx0fSksY3JlYXRlRGVwcmVj
YXRlZE1vZHVsZSgiZW1iZXIvcmVzb2x2ZXIiKSxjcmVhdGVEZXByZWNhdGVkTW9kdWxlKCJyZXNv
bHZlciIpLGRlZmluZSgiZW1iZXItYWpheC9lcnJvcnMiLFsiZXhwb3J0cyIsImVtYmVyIl0sZnVu
Y3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIgdD1hcmd1bWVudHMubGVu
Z3RoPD0xfHx2b2lkIDA9PT1hcmd1bWVudHNbMV0/IkFqYXggb3BlcmF0aW9uIGZhaWxlZCI6YXJn
dW1lbnRzWzFdO2EuY2FsbCh0aGlzLHQpLHRoaXMuZXJyb3JzPWV8fFt7dGl0bGU6IkFqYXggRXJy
b3IiLGRldGFpbDp0fV19ZnVuY3Rpb24gbihlKXtyLmNhbGwodGhpcyxlLCJSZXF1ZXN0IHdhcyBy
ZWplY3RlZCBiZWNhdXNlIGl0IHdhcyBpbnZhbGlkIil9ZnVuY3Rpb24gaShlKXtyLmNhbGwodGhp
cyxlLCJBamF4IGF1dGhvcml6YXRpb24gZmFpbGVkIil9ZnVuY3Rpb24gbyhlKXtyLmNhbGwodGhp
cyxlLCJSZXF1ZXN0IHdhcyByZWplY3RlZCBiZWNhdXNlIHVzZXIgaXMgbm90IHBlcm1pdHRlZCB0
byBwZXJmb3JtIHRoaXMgb3BlcmF0aW9uLiIpfWUuQWpheEVycm9yPXIsZS5JbnZhbGlkRXJyb3I9
bixlLlVuYXV0aG9yaXplZEVycm9yPWksZS5Gb3JiaWRkZW5FcnJvcj1vO3ZhciBhPXQuZGVmYXVs
dC5FcnJvcjtyLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGEucHJvdG90eXBlKSxuLnByb3RvdHlw
ZT1PYmplY3QuY3JlYXRlKHIucHJvdG90eXBlKSxpLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHIu
cHJvdG90eXBlKSxvLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHIucHJvdG90eXBlKX0pLGRlZmlu
ZSgiZW1iZXItYWpheC9pbmRleCIsWyJleHBvcnRzIiwiZW1iZXItYWpheC9yZXF1ZXN0Il0sZnVu
Y3Rpb24oZSx0KXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsImRlZmF1bHQi
LHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0LmRlZmF1bHR9fSl9KSxkZWZp
bmUoImVtYmVyLWFqYXgvbWFrZS1wcm9taXNlIixbImV4cG9ydHMiLCJlbWJlciJdLGZ1bmN0aW9u
KGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHI9ZS50eXBlfHwiR0VUIjtyZXR1
cm4gbmV3IGEuUHJvbWlzZShmdW5jdGlvbihyLG8pe2Uuc3VjY2Vzcz1uKHIpLGUuZXJyb3I9aShv
KSx0LmRlZmF1bHQuJC5hamF4KGUpfSwiZW1iZXItYWpheDogIityKyIgdG8gIitlLnVybCl9ZnVu
Y3Rpb24gbihlKXtyZXR1cm4gZnVuY3Rpb24odCxyLG4pe28obnVsbCxlLHtyZXNwb25zZTp0LHRl
eHRTdGF0dXM6cixqcVhIUjpufSl9fWZ1bmN0aW9uIGkoZSl7cmV0dXJuIGZ1bmN0aW9uKHQscixu
KXtvKG51bGwsZSx7anFYSFI6dCx0ZXh0U3RhdHVzOnIsZXJyb3JUaHJvd246bn0pfX1lLmRlZmF1
bHQ9cjt2YXIgbz10LmRlZmF1bHQucnVuLGE9dC5kZWZhdWx0LlJTVlB9KSxkZWZpbmUoImVtYmVy
LWFqYXgvcmF3IixbImV4cG9ydHMiLCJlbWJlci1hamF4L21ha2UtcHJvbWlzZSIsImVtYmVyLWFq
YXgvdXRpbHMvcGFyc2UtYXJncyIsImVtYmVyIl0sZnVuY3Rpb24oZSx0LHIsbil7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIGkoKXthKCJlbWJlci1hamF4L3JhdyBpcyBkZXByZWNhdGVkIGFuZCB3aWxs
IGJlIHJlbW92ZWQgaW4gZW1iZXItYWpheEAyLjAuMCIsITEse2lkOiJlbWJlci1hamF4LnJhdyJ9
KTt2YXIgZT1yLmRlZmF1bHQuYXBwbHkobnVsbCxhcmd1bWVudHMpLG49byhlLDMpLGk9blswXSxz
PW5bMV0sdT1uWzJdO3JldHVybiB1fHwodT17fSksdS51cmw9aSx1LnR5cGU9cywoMCx0LmRlZmF1
bHQpKHUpfXZhciBvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3ZhciByPVtdLG49ITAsaT0h
MSxvPXZvaWQgMDt0cnl7Zm9yKHZhciBhLHM9ZVtTeW1ib2wuaXRlcmF0b3JdKCk7IShuPShhPXMu
bmV4dCgpKS5kb25lKSYmKHIucHVzaChhLnZhbHVlKSwhdHx8ci5sZW5ndGghPT10KTtuPSEwKTt9
Y2F0Y2goZSl7aT0hMCxvPWV9ZmluYWxseXt0cnl7IW4mJnMucmV0dXJuJiZzLnJldHVybigpfWZp
bmFsbHl7aWYoaSl0aHJvdyBvfX1yZXR1cm4gcn1yZXR1cm4gZnVuY3Rpb24odCxyKXtpZihBcnJh
eS5pc0FycmF5KHQpKXJldHVybiB0O2lmKFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QodCkpcmV0
dXJuIGUodCxyKTt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1
Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlIil9fSgpO2UuZGVmYXVsdD1pO3ZhciBhPW4uZGVm
YXVsdC5kZXByZWNhdGV9KSxkZWZpbmUoImVtYmVyLWFqYXgvcmVxdWVzdCIsWyJleHBvcnRzIiwi
ZW1iZXItYWpheC9yYXciLCJlbWJlciJdLGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gbigpe3JldHVybiBpKCJlbWJlci1hamF4L3JlcXVlc3QgaXMgZGVwcmVjYXRlZCBhbmQg
d2lsbCBiZSByZW1vdmVkIGluIGVtYmVyLWFqYXhAMi4wLjAiLCExLHtpZDoiZW1iZXItYWpheC5y
YXcifSksdC5kZWZhdWx0LmFwcGx5KHZvaWQgMCxhcmd1bWVudHMpLnRoZW4oZnVuY3Rpb24oZSl7
cmV0dXJuIGUucmVzcG9uc2V9LG51bGwsImVtYmVyLWFqYXg6IHVud3JhcCByYXcgYWpheCByZXNw
b25zZSIpfWUuZGVmYXVsdD1uO3ZhciBpPXIuZGVmYXVsdC5kZXByZWNhdGV9KSxkZWZpbmUoImVt
YmVyLWFqYXgvc2VydmljZXMvYWpheCIsWyJleHBvcnRzIiwiZW1iZXIiLCJlbWJlci1hamF4L2Vy
cm9ycyIsImVtYmVyLWFqYXgvdXRpbHMvcGFyc2UtcmVzcG9uc2UtaGVhZGVycyJdLGZ1bmN0aW9u
KGUsdCxyLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgaT10LmRlZmF1bHQuZGVwcmVjYXRlLG89dC5kZWZh
dWx0LmdldCxhPXQuZGVmYXVsdC5pc0JsYW5rO2UuZGVmYXVsdD10LmRlZmF1bHQuU2VydmljZS5l
eHRlbmQoe3JlcXVlc3Q6ZnVuY3Rpb24oZSxvKXt2YXIgYSxzPXRoaXM7YXJndW1lbnRzLmxlbmd0
aD4yfHwic3RyaW5nIj09dHlwZW9mIG8/KGkoImVtYmVyLWFqYXgvYWpheCNyZXF1ZXN0IGNhbGxp
bmcgcmVxdWVzdCB3aXRoIGB0eXBlYCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQg
aW4gZW1iZXItYWpheEAxLjAuMC4gSWYgeW91IHdhbnQgdG8gc3BlY2lmeSBhIHR5cGUgcGFzcyBh
biBvYmplY3QgbGlrZSB7dHlwZTogJ0RFTEVURSd9IiwhMSx7aWQ6ImVtYmVyLWFqYXguc2Vydmlj
ZS5yZXF1ZXN0In0pLGFyZ3VtZW50cy5sZW5ndGg+Mj8oYT1hcmd1bWVudHNbMl0sYS50eXBlPW8p
OmE9e3R5cGU6b30pOmE9bzt2YXIgdT10aGlzLm9wdGlvbnMoZSxhKTtyZXR1cm4gbmV3IHQuZGVm
YXVsdC5SU1ZQLlByb21pc2UoZnVuY3Rpb24oZSxpKXt1LnN1Y2Nlc3M9ZnVuY3Rpb24odCxvLGEp
e3ZhciB1PXMuaGFuZGxlUmVzcG9uc2UoYS5zdGF0dXMsKDAsbi5kZWZhdWx0KShhLmdldEFsbFJl
c3BvbnNlSGVhZGVycygpKSx0KTt1IGluc3RhbmNlb2Ygci5BamF4RXJyb3I/aSh1KTplKHUpfSx1
LmVycm9yPWZ1bmN0aW9uKGUsdCxyKXt2YXIgbz12b2lkIDA7byBpbnN0YW5jZW9mIEVycm9yfHwo
bz1yIGluc3RhbmNlb2YgRXJyb3I/cjpzLmhhbmRsZVJlc3BvbnNlKGUuc3RhdHVzLCgwLG4uZGVm
YXVsdCkoZS5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSkscy5wYXJzZUVycm9yUmVzcG9uc2UoZS5y
ZXNwb25zZVRleHQpfHxyKSksaShvKX0sdC5kZWZhdWx0LiQuYWpheCh1KX0sImVtYmVyLWFqYXg6
ICIrdS50eXBlKyIgdG8gIitlKX0scG9zdDpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLnJlcXVl
c3QoZSx0aGlzLl9hZGRUeXBlVG9PcHRpb25zRm9yKHQsIlBPU1QiKSl9LHB1dDpmdW5jdGlvbihl
LHQpe3JldHVybiB0aGlzLnJlcXVlc3QoZSx0aGlzLl9hZGRUeXBlVG9PcHRpb25zRm9yKHQsIlBV
VCIpKX0scGF0Y2g6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5yZXF1ZXN0KGUsdGhpcy5fYWRk
VHlwZVRvT3B0aW9uc0Zvcih0LCJQQVRDSCIpKX0sZGVsOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRo
aXMucmVxdWVzdChlLHRoaXMuX2FkZFR5cGVUb09wdGlvbnNGb3IodCwiREVMRVRFIikpfSxfYWRk
VHlwZVRvT3B0aW9uc0ZvcjpmdW5jdGlvbihlLHQpe3JldHVybiBlPWV8fHt9LGUudHlwZT10LGV9
LG9wdGlvbnM6ZnVuY3Rpb24oZSx0KXt2YXIgcj10fHx7fTtyLnVybD10aGlzLl9idWlsZFVSTChl
KSxyLnR5cGU9ci50eXBlfHwiR0VUIixyLmRhdGFUeXBlPXIuZGF0YVR5cGV8fCJqc29uIixyLmNv
bnRleHQ9dGhpczt2YXIgbj1vKHRoaXMsImhlYWRlcnMiKTtyZXR1cm4gdm9pZCAwIT09biYmKHIu
YmVmb3JlU2VuZD1mdW5jdGlvbihlKXtPYmplY3Qua2V5cyhuKS5mb3JFYWNoKGZ1bmN0aW9uKHQp
e3JldHVybiBlLnNldFJlcXVlc3RIZWFkZXIodCxuW3RdKX0pfSkscn0sX2J1aWxkVVJMOmZ1bmN0
aW9uKGUpe3ZhciB0PW8odGhpcywiaG9zdCIpO2lmKGEodCkpcmV0dXJuIGU7dmFyIHI9U3RyaW5n
LnByb3RvdHlwZS5zdGFydHNXaXRofHxmdW5jdGlvbihlLHQpe3JldHVybiB0PXR8fDAsdGhpcy5p
bmRleE9mKGUsdCk9PT10fTtyZXR1cm4gci5jYWxsKGUsIi8iKT8iIit0K2U6dCsiLyIrZX0saGFu
ZGxlUmVzcG9uc2U6ZnVuY3Rpb24oZSx0LG4pe2lmKHRoaXMuaXNTdWNjZXNzKGUsdCxuKSlyZXR1
cm4gbjtpZih0aGlzLmlzVW5hdXRob3JpemVkKGUsdCxuKSlyZXR1cm4gbmV3IHIuVW5hdXRob3Jp
emVkRXJyb3Iobi5lcnJvcnMpO2lmKHRoaXMuaXNGb3JiaWRkZW4oZSx0LG4pKXJldHVybiBuZXcg
ci5Gb3JiaWRkZW5FcnJvcihuLmVycm9ycyk7aWYodGhpcy5pc0ludmFsaWQoZSx0LG4pKXJldHVy
biBuZXcgci5JbnZhbGlkRXJyb3Iobi5lcnJvcnMpO3ZhciBpPXRoaXMubm9ybWFsaXplRXJyb3JS
ZXNwb25zZShlLHQsbik7cmV0dXJuIG5ldyByLkFqYXhFcnJvcihpKX0saXNVbmF1dGhvcml6ZWQ6
ZnVuY3Rpb24oZSl7cmV0dXJuIDQwMT09PWV9LGlzRm9yYmlkZGVuOmZ1bmN0aW9uKGUpe3JldHVy
biA0MDM9PT1lfSxpc0ludmFsaWQ6ZnVuY3Rpb24oZSl7cmV0dXJuIDQyMj09PWV9LGlzU3VjY2Vz
czpmdW5jdGlvbihlKXtyZXR1cm4gZT49MjAwJiZlPDMwMHx8MzA0PT09ZX0scGFyc2VFcnJvclJl
c3BvbnNlOmZ1bmN0aW9uKGUpe3ZhciByPWU7dHJ5e3I9dC5kZWZhdWx0LiQucGFyc2VKU09OKGUp
fWNhdGNoKGUpe31yZXR1cm4gcn0sbm9ybWFsaXplRXJyb3JSZXNwb25zZTpmdW5jdGlvbihlLHQs
cil7cmV0dXJuIHImJiJvYmplY3QiPT10eXBlb2YgciYmci5lcnJvcnM/ci5lcnJvcnM6W3tzdGF0
dXM6IiIrZSx0aXRsZToiVGhlIGJhY2tlbmQgcmVzcG9uZGVkIHdpdGggYW4gZXJyb3IiLGRldGFp
bDoiIityfV19fSl9KSxkZWZpbmUoImVtYmVyLWFqYXgvdXRpbHMvcGFyc2UtYXJncyIsWyJleHBv
cnRzIl0sZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHQoKXt2YXIgZT1bXS5zbGlj
ZS5hcHBseShhcmd1bWVudHMpO2lmKDE9PT1lLmxlbmd0aCl7aWYoInN0cmluZyI9PXR5cGVvZiBl
WzBdKXt2YXIgdD1yKGUsMSksbj10WzBdO3JldHVybltuXX12YXIgaT1yKGUsMSksbz1pWzBdLG49
by51cmw7ZGVsZXRlIG8udXJsO3ZhciBhPW8udHlwZXx8by5tZXRob2Q7cmV0dXJuIGRlbGV0ZSBv
LnR5cGUsZGVsZXRlIG8ubWV0aG9kLFtuLGEsb119aWYoMj09PWUubGVuZ3RoKXt2YXIgcz1yKGUs
MSksbj1zWzBdO2lmKCJvYmplY3QiPT10eXBlb2YgZVsxXSl7dmFyIG89ZVsxXSxhPW8udHlwZXx8
by5tZXRob2Q7cmV0dXJuIGRlbGV0ZSBvLnR5cGUsZGVsZXRlIG8ubWV0aG9kLFtuLGEsb119dmFy
IGE9ZVsxXTtyZXR1cm5bbixhXX1yZXR1cm4gZX12YXIgcj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUo
ZSx0KXt2YXIgcj1bXSxuPSEwLGk9ITEsbz12b2lkIDA7dHJ5e2Zvcih2YXIgYSxzPWVbU3ltYm9s
Lml0ZXJhdG9yXSgpOyEobj0oYT1zLm5leHQoKSkuZG9uZSkmJihyLnB1c2goYS52YWx1ZSksIXR8
fHIubGVuZ3RoIT09dCk7bj0hMCk7fWNhdGNoKGUpe2k9ITAsbz1lfWZpbmFsbHl7dHJ5eyFuJiZz
LnJldHVybiYmcy5yZXR1cm4oKX1maW5hbGx5e2lmKGkpdGhyb3cgb319cmV0dXJuIHJ9cmV0dXJu
IGZ1bmN0aW9uKHQscil7aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gdDtpZihTeW1ib2wuaXRl
cmF0b3IgaW4gT2JqZWN0KHQpKXJldHVybiBlKHQscik7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52
YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZSIpfX0oKTtl
LmRlZmF1bHQ9dH0pLGRlZmluZSgiZW1iZXItYWpheC91dGlscy9wYXJzZS1yZXNwb25zZS1oZWFk
ZXJzIixbImV4cG9ydHMiXSxmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gdChlKXt2
YXIgdD1PYmplY3QuY3JlYXRlKG51bGwpO2lmKCFlKXJldHVybiB0O2Zvcih2YXIgcj1lLnNwbGl0
KCJcclxuIiksbj0wO248ci5sZW5ndGg7bisrKXt2YXIgaT1yW25dLG89aS5pbmRleE9mKCI6ICIp
O2lmKG8+MCl7dmFyIGE9aS5zdWJzdHJpbmcoMCxvKSxzPWkuc3Vic3RyaW5nKG8rMik7dFthXT1z
fX1yZXR1cm4gdH1lLmRlZmF1bHQ9dH0pLGRlZmluZSgiZW1iZXItY2xpLWFwcC12ZXJzaW9uL2Nv
bXBvbmVudHMvYXBwLXZlcnNpb24iLFsiZXhwb3J0cyIsImVtYmVyIiwiZW1iZXItY2xpLWFwcC12
ZXJzaW9uL3RlbXBsYXRlcy9hcHAtdmVyc2lvbiJdLGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmlj
dCI7ZS5kZWZhdWx0PXQuZGVmYXVsdC5Db21wb25lbnQuZXh0ZW5kKHt0YWdOYW1lOiJzcGFuIixs
YXlvdXQ6ci5kZWZhdWx0fSl9KSxkZWZpbmUoImVtYmVyLWNsaS1hcHAtdmVyc2lvbi9pbml0aWFs
aXplci1mYWN0b3J5IixbImV4cG9ydHMiLCJlbWJlciJdLGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIHIoZSxyKXt2YXIgaT0hMTtyZXR1cm4gZnVuY3Rpb24oKXtpZighaSYmZSYm
cil7dmFyIG89bihlKTt0LmRlZmF1bHQubGlicmFyaWVzLnJlZ2lzdGVyKG8sciksaT0hMH19fWUu
ZGVmYXVsdD1yO3ZhciBuPXQuZGVmYXVsdC5TdHJpbmcuY2xhc3NpZnl9KSxkZWZpbmUoImVtYmVy
LWNsaS1hcHAtdmVyc2lvbi90ZW1wbGF0ZXMvYXBwLXZlcnNpb24iLFsiZXhwb3J0cyJdLGZ1bmN0
aW9uKGUpeyJ1c2Ugc3RyaWN0IjtlLmRlZmF1bHQ9RW1iZXIuSFRNTEJhcnMudGVtcGxhdGUoZnVu
Y3Rpb24oKXtyZXR1cm57bWV0YTp7ZnJhZ21lbnRSZWFzb246e25hbWU6Im1pc3Npbmctd3JhcHBl
ciIscHJvYmxlbXM6WyJ3cm9uZy10eXBlIl19LHJldmlzaW9uOiJFbWJlckAyLjYuMiIsbG9jOntz
b3VyY2U6bnVsbCxzdGFydDp7bGluZToxLGNvbHVtbjowfSxlbmQ6e2xpbmU6Mixjb2x1bW46MH19
LG1vZHVsZU5hbWU6Im1vZHVsZXMvZW1iZXItY2xpLWFwcC12ZXJzaW9uL3RlbXBsYXRlcy9hcHAt
dmVyc2lvbi5oYnMifSxpc0VtcHR5OiExLGFyaXR5OjAsY2FjaGVkRnJhZ21lbnQ6bnVsbCxoYXNS
ZW5kZXJlZDohMSxidWlsZEZyYWdtZW50OmZ1bmN0aW9uKGUpe3ZhciB0PWUuY3JlYXRlRG9jdW1l
bnRGcmFnbWVudCgpLHI9ZS5jcmVhdGVDb21tZW50KCIiKTtlLmFwcGVuZENoaWxkKHQscik7dmFy
IHI9ZS5jcmVhdGVUZXh0Tm9kZSgiXG4iKTtyZXR1cm4gZS5hcHBlbmRDaGlsZCh0LHIpLHR9LGJ1
aWxkUmVuZGVyTm9kZXM6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPW5ldyBBcnJheSgxKTtyZXR1cm4g
blswXT1lLmNyZWF0ZU1vcnBoQXQodCwwLDAsciksZS5pbnNlcnRCb3VuZGFyeSh0LDApLG59LHN0
YXRlbWVudHM6W1siY29udGVudCIsInZlcnNpb24iLFsibG9jIixbbnVsbCxbMSwwXSxbMSwxMV1d
XV1dLGxvY2FsczpbXSx0ZW1wbGF0ZXM6W119fSgpKX0pLGRlZmluZSgiZW1iZXItaW5mbGVjdG9y
L2luZGV4IixbImV4cG9ydHMiLCJlbWJlciIsImVtYmVyLWluZmxlY3Rvci9saWIvc3lzdGVtIiwi
ZW1iZXItaW5mbGVjdG9yL2xpYi9leHQvc3RyaW5nIl0sZnVuY3Rpb24oZSx0LHIsbil7InVzZSBz
dHJpY3QiO3IuSW5mbGVjdG9yLmRlZmF1bHRSdWxlcz1yLmRlZmF1bHRSdWxlcyx0LmRlZmF1bHQu
SW5mbGVjdG9yPXIuSW5mbGVjdG9yLHQuZGVmYXVsdC5TdHJpbmcucGx1cmFsaXplPXIucGx1cmFs
aXplLHQuZGVmYXVsdC5TdHJpbmcuc2luZ3VsYXJpemU9ci5zaW5ndWxhcml6ZSxlLmRlZmF1bHQ9
ci5JbmZsZWN0b3IsZS5wbHVyYWxpemU9ci5wbHVyYWxpemUsZS5zaW5ndWxhcml6ZT1yLnNpbmd1
bGFyaXplLGUuZGVmYXVsdFJ1bGVzPXIuZGVmYXVsdFJ1bGVzLCJ1bmRlZmluZWQiIT10eXBlb2Yg
ZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZSgiZW1iZXItaW5mbGVjdG9yIixbImV4cG9ydHMiXSxm
dW5jdGlvbihlKXtyZXR1cm4gZS5kZWZhdWx0PXIuSW5mbGVjdG9yLHIuSW5mbGVjdG9yfSk6InVu
ZGVmaW5lZCIhPXR5cGVvZiBtb2R1bGUmJm1vZHVsZS5leHBvcnRzJiYobW9kdWxlLmV4cG9ydHM9
ci5JbmZsZWN0b3IpfSksZGVmaW5lKCJlbWJlci1pbmZsZWN0b3IvbGliL2V4dC9zdHJpbmciLFsi
ZXhwb3J0cyIsImVtYmVyIiwiZW1iZXItaW5mbGVjdG9yL2xpYi9zeXN0ZW0vc3RyaW5nIl0sZnVu
Y3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjsodC5kZWZhdWx0LkVYVEVORF9QUk9UT1RZUEVTPT09
ITB8fHQuZGVmYXVsdC5FWFRFTkRfUFJPVE9UWVBFUy5TdHJpbmcpJiYoU3RyaW5nLnByb3RvdHlw
ZS5wbHVyYWxpemU9ZnVuY3Rpb24oKXtyZXR1cm4oMCxyLnBsdXJhbGl6ZSkodGhpcyl9LFN0cmlu
Zy5wcm90b3R5cGUuc2luZ3VsYXJpemU9ZnVuY3Rpb24oKXtyZXR1cm4oMCxyLnNpbmd1bGFyaXpl
KSh0aGlzKX0pfSksZGVmaW5lKCJlbWJlci1pbmZsZWN0b3IvbGliL2hlbHBlcnMvcGx1cmFsaXpl
IixbImV4cG9ydHMiLCJlbWJlci1pbmZsZWN0b3IiLCJlbWJlci1pbmZsZWN0b3IvbGliL3V0aWxz
L21ha2UtaGVscGVyIl0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtlLmRlZmF1bHQ9KDAs
ci5kZWZhdWx0KShmdW5jdGlvbihlKXt2YXIgcj12b2lkIDAsbj12b2lkIDA7cmV0dXJuIDE9PT1l
Lmxlbmd0aD8obj1lWzBdLCgwLHQucGx1cmFsaXplKShuKSk6KHI9ZVswXSxuPWVbMV0sMSE9PXBh
cnNlRmxvYXQocikmJihuPSgwLHQucGx1cmFsaXplKShuKSkscisiICIrbil9KX0pLGRlZmluZSgi
ZW1iZXItaW5mbGVjdG9yL2xpYi9oZWxwZXJzL3Npbmd1bGFyaXplIixbImV4cG9ydHMiLCJlbWJl
ci1pbmZsZWN0b3IiLCJlbWJlci1pbmZsZWN0b3IvbGliL3V0aWxzL21ha2UtaGVscGVyIl0sZnVu
Y3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtlLmRlZmF1bHQ9KDAsci5kZWZhdWx0KShmdW5jdGlv
bihlKXtyZXR1cm4oMCx0LnNpbmd1bGFyaXplKShlWzBdKX0pfSksZGVmaW5lKCJlbWJlci1pbmZs
ZWN0b3IvbGliL3N5c3RlbSIsWyJleHBvcnRzIiwiZW1iZXItaW5mbGVjdG9yL2xpYi9zeXN0ZW0v
aW5mbGVjdG9yIiwiZW1iZXItaW5mbGVjdG9yL2xpYi9zeXN0ZW0vc3RyaW5nIiwiZW1iZXItaW5m
bGVjdG9yL2xpYi9zeXN0ZW0vaW5mbGVjdGlvbnMiXSxmdW5jdGlvbihlLHQscixuKXsidXNlIHN0
cmljdCI7dC5kZWZhdWx0LmluZmxlY3Rvcj1uZXcgdC5kZWZhdWx0KG4uZGVmYXVsdCksZS5JbmZs
ZWN0b3I9dC5kZWZhdWx0LGUuc2luZ3VsYXJpemU9ci5zaW5ndWxhcml6ZSxlLnBsdXJhbGl6ZT1y
LnBsdXJhbGl6ZSxlLmRlZmF1bHRSdWxlcz1uLmRlZmF1bHR9KSxkZWZpbmUoImVtYmVyLWluZmxl
Y3Rvci9saWIvc3lzdGVtL2luZmxlY3Rpb25zIixbImV4cG9ydHMiXSxmdW5jdGlvbihlKXsidXNl
IHN0cmljdCI7ZS5kZWZhdWx0PXtwbHVyYWxzOltbLyQvLCJzIl0sWy9zJC9pLCJzIl0sWy9eKGF4
fHRlc3QpaXMkL2ksIiQxZXMiXSxbLyhvY3RvcHx2aXIpdXMkL2ksIiQxaSJdLFsvKG9jdG9wfHZp
cilpJC9pLCIkMWkiXSxbLyhhbGlhc3xzdGF0dXMpJC9pLCIkMWVzIl0sWy8oYnUpcyQvaSwiJDFz
ZXMiXSxbLyhidWZmYWx8dG9tYXQpbyQvaSwiJDFvZXMiXSxbLyhbdGldKXVtJC9pLCIkMWEiXSxb
LyhbdGldKWEkL2ksIiQxYSJdLFsvc2lzJC9pLCJzZXMiXSxbLyg/OihbXmZdKWZlfChbbHJdKWYp
JC9pLCIkMSQydmVzIl0sWy8oaGl2ZSkkL2ksIiQxcyJdLFsvKFteYWVpb3V5XXxxdSl5JC9pLCIk
MWllcyJdLFsvKHh8Y2h8c3N8c2gpJC9pLCIkMWVzIl0sWy8obWF0cnx2ZXJ0fGluZCkoPzppeHxl
eCkkL2ksIiQxaWNlcyJdLFsvXihtfGwpb3VzZSQvaSwiJDFpY2UiXSxbL14obXxsKWljZSQvaSwi
JDFpY2UiXSxbL14ob3gpJC9pLCIkMWVuIl0sWy9eKG94ZW4pJC9pLCIkMSJdLFsvKHF1aXopJC9p
LCIkMXplcyJdXSxzaW5ndWxhcjpbWy9zJC9pLCIiXSxbLyhzcykkL2ksIiQxIl0sWy8obilld3Mk
L2ksIiQxZXdzIl0sWy8oW3RpXSlhJC9pLCIkMXVtIl0sWy8oKGEpbmFseXwoYilhfChkKWlhZ25v
fChwKWFyZW50aGV8KHApcm9nbm98KHMpeW5vcHwodCloZSkoc2lzfHNlcykkL2ksIiQxc2lzIl0s
Wy8oXmFuYWx5KShzaXN8c2VzKSQvaSwiJDFzaXMiXSxbLyhbXmZdKXZlcyQvaSwiJDFmZSJdLFsv
KGhpdmUpcyQvaSwiJDEiXSxbLyh0aXZlKXMkL2ksIiQxIl0sWy8oW2xyXSl2ZXMkL2ksIiQxZiJd
LFsvKFteYWVpb3V5XXxxdSlpZXMkL2ksIiQxeSJdLFsvKHMpZXJpZXMkL2ksIiQxZXJpZXMiXSxb
LyhtKW92aWVzJC9pLCIkMW92aWUiXSxbLyh4fGNofHNzfHNoKWVzJC9pLCIkMSJdLFsvXihtfGwp
aWNlJC9pLCIkMW91c2UiXSxbLyhidXMpKGVzKT8kL2ksIiQxIl0sWy8obyllcyQvaSwiJDEiXSxb
LyhzaG9lKXMkL2ksIiQxIl0sWy8oY3Jpc3x0ZXN0KShpc3xlcykkL2ksIiQxaXMiXSxbL14oYSl4
W2llXXMkL2ksIiQxeGlzIl0sWy8ob2N0b3B8dmlyKSh1c3xpKSQvaSwiJDF1cyJdLFsvKGFsaWFz
fHN0YXR1cykoZXMpPyQvaSwiJDEiXSxbL14ob3gpZW4vaSwiJDEiXSxbLyh2ZXJ0fGluZClpY2Vz
JC9pLCIkMWV4Il0sWy8obWF0cilpY2VzJC9pLCIkMWl4Il0sWy8ocXVpeil6ZXMkL2ksIiQxIl0s
Wy8oZGF0YWJhc2UpcyQvaSwiJDEiXV0saXJyZWd1bGFyUGFpcnM6W1sicGVyc29uIiwicGVvcGxl
Il0sWyJtYW4iLCJtZW4iXSxbImNoaWxkIiwiY2hpbGRyZW4iXSxbInNleCIsInNleGVzIl0sWyJt
b3ZlIiwibW92ZXMiXSxbImNvdyIsImtpbmUiXSxbInpvbWJpZSIsInpvbWJpZXMiXV0sdW5jb3Vu
dGFibGU6WyJlcXVpcG1lbnQiLCJpbmZvcm1hdGlvbiIsInJpY2UiLCJtb25leSIsInNwZWNpZXMi
LCJzZXJpZXMiLCJmaXNoIiwic2hlZXAiLCJqZWFucyIsInBvbGljZSJdfX0pLGRlZmluZSgiZW1i
ZXItaW5mbGVjdG9yL2xpYi9zeXN0ZW0vaW5mbGVjdG9yIixbImV4cG9ydHMiLCJlbWJlciJdLGZ1
bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXtmb3IodmFyIHI9MCxuPXQu
bGVuZ3RoO3I8bjtyKyspZS51bmNvdW50YWJsZVt0W3JdLnRvTG93ZXJDYXNlKCldPSEwfWZ1bmN0
aW9uIG4oZSx0KXtmb3IodmFyIHIsbj0wLGk9dC5sZW5ndGg7bjxpO24rKylyPXRbbl0sZS5pcnJl
Z3VsYXJbclswXS50b0xvd2VyQ2FzZSgpXT1yWzFdLGUuaXJyZWd1bGFyW3JbMV0udG9Mb3dlckNh
c2UoKV09clsxXSxlLmlycmVndWxhckludmVyc2VbclsxXS50b0xvd2VyQ2FzZSgpXT1yWzBdLGUu
aXJyZWd1bGFySW52ZXJzZVtyWzBdLnRvTG93ZXJDYXNlKCldPXJbMF19ZnVuY3Rpb24gaShlKXtl
PWV8fHt9LGUudW5jb3VudGFibGU9ZS51bmNvdW50YWJsZXx8bygpLGUuaXJyZWd1bGFyUGFpcnM9
ZS5pcnJlZ3VsYXJQYWlyc3x8bygpO3ZhciB0PXRoaXMucnVsZXM9e3BsdXJhbHM6ZS5wbHVyYWxz
fHxbXSxzaW5ndWxhcjplLnNpbmd1bGFyfHxbXSxpcnJlZ3VsYXI6bygpLGlycmVndWxhckludmVy
c2U6bygpLHVuY291bnRhYmxlOm8oKX07cih0LGUudW5jb3VudGFibGUpLG4odCxlLmlycmVndWxh
clBhaXJzKSx0aGlzLmVuYWJsZUNhY2hlKCl9ZnVuY3Rpb24gbygpe3ZhciBlPU9iamVjdC5jcmVh
dGUobnVsbCk7cmV0dXJuIGUuX2RpY3Q9bnVsbCxkZWxldGUgZS5fZGljdCxlfXZhciBhPXQuZGVm
YXVsdC5TdHJpbmcuY2FwaXRhbGl6ZSxzPS9eXHMqJC8sdT0vKFtcd1wvLV0rW19cL1xzLV0pKFth
LXpcZF0rJCkvLGw9LyhbXHdcL1xzLV0rKShbQS1aXVthLXpcZF0qJCkvLGM9L1tBLVpdW2Etelxk
XSokLztpZighT2JqZWN0LmNyZWF0ZSYmIU9iamVjdC5jcmVhdGUobnVsbCkuaGFzT3duUHJvcGVy
dHkpdGhyb3cgbmV3IEVycm9yKCJUaGlzIGJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCBPYmplY3Qu
Y3JlYXRlKG51bGwpLCBwbGVhc2UgcG9seWZpbCB3aXRoIGVzNS1zaGFtOiBodHRwOi8vZ2l0Lmlv
L3lCVTJyZyIpO2kucHJvdG90eXBlPXtlbmFibGVDYWNoZTpmdW5jdGlvbigpe3RoaXMucHVyZ2VD
YWNoZSgpLHRoaXMuc2luZ3VsYXJpemU9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2NhY2hlVXNl
ZD0hMCx0aGlzLl9zQ2FjaGVbZV18fCh0aGlzLl9zQ2FjaGVbZV09dGhpcy5fc2luZ3VsYXJpemUo
ZSkpfSx0aGlzLnBsdXJhbGl6ZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fY2FjaGVVc2VkPSEw
LHRoaXMuX3BDYWNoZVtlXXx8KHRoaXMuX3BDYWNoZVtlXT10aGlzLl9wbHVyYWxpemUoZSkpfX0s
cHVyZ2VDYWNoZTpmdW5jdGlvbigpe3RoaXMuX2NhY2hlVXNlZD0hMSx0aGlzLl9zQ2FjaGU9bygp
LHRoaXMuX3BDYWNoZT1vKCl9LGRpc2FibGVDYWNoZTpmdW5jdGlvbigpe3RoaXMuX3NDYWNoZT1u
dWxsLHRoaXMuX3BDYWNoZT1udWxsLHRoaXMuc2luZ3VsYXJpemU9ZnVuY3Rpb24oZSl7cmV0dXJu
IHRoaXMuX3Npbmd1bGFyaXplKGUpfSx0aGlzLnBsdXJhbGl6ZT1mdW5jdGlvbihlKXtyZXR1cm4g
dGhpcy5fcGx1cmFsaXplKGUpfX0scGx1cmFsOmZ1bmN0aW9uKGUsdCl7dGhpcy5fY2FjaGVVc2Vk
JiZ0aGlzLnB1cmdlQ2FjaGUoKSx0aGlzLnJ1bGVzLnBsdXJhbHMucHVzaChbZSx0LnRvTG93ZXJD
YXNlKCldKX0sc2luZ3VsYXI6ZnVuY3Rpb24oZSx0KXt0aGlzLl9jYWNoZVVzZWQmJnRoaXMucHVy
Z2VDYWNoZSgpLHRoaXMucnVsZXMuc2luZ3VsYXIucHVzaChbZSx0LnRvTG93ZXJDYXNlKCldKX0s
dW5jb3VudGFibGU6ZnVuY3Rpb24oZSl7dGhpcy5fY2FjaGVVc2VkJiZ0aGlzLnB1cmdlQ2FjaGUo
KSxyKHRoaXMucnVsZXMsW2UudG9Mb3dlckNhc2UoKV0pfSxpcnJlZ3VsYXI6ZnVuY3Rpb24oZSx0
KXt0aGlzLl9jYWNoZVVzZWQmJnRoaXMucHVyZ2VDYWNoZSgpLG4odGhpcy5ydWxlcyxbW2UsdF1d
KX0scGx1cmFsaXplOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9wbHVyYWxpemUoZSl9LF9wbHVy
YWxpemU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuaW5mbGVjdChlLHRoaXMucnVsZXMucGx1cmFs
cyx0aGlzLnJ1bGVzLmlycmVndWxhcil9LHNpbmd1bGFyaXplOmZ1bmN0aW9uKGUpe3JldHVybiB0
aGlzLl9zaW5ndWxhcml6ZShlKX0sX3Npbmd1bGFyaXplOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlz
LmluZmxlY3QoZSx0aGlzLnJ1bGVzLnNpbmd1bGFyLHRoaXMucnVsZXMuaXJyZWd1bGFySW52ZXJz
ZSl9LGluZmxlY3Q6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuLGksbyxmLGQscCxoLG0sdixiLGc7aWYo
bT0hZXx8cy50ZXN0KGUpLHY9Yy50ZXN0KGUpLHA9IiIsbSlyZXR1cm4gZTtpZihmPWUudG9Mb3dl
ckNhc2UoKSxkPXUuZXhlYyhlKXx8bC5leGVjKGUpLGQmJihwPWRbMV0saD1kWzJdLnRvTG93ZXJD
YXNlKCkpLGc9dGhpcy5ydWxlcy51bmNvdW50YWJsZVtmXXx8dGhpcy5ydWxlcy51bmNvdW50YWJs
ZVtoXSlyZXR1cm4gZTtmb3IoYiBpbiB0aGlzLnJ1bGVzLmlycmVndWxhcilpZihmLm1hdGNoKGIr
IiQiKSlyZXR1cm4gaT1yW2JdLHYmJnJbaF0mJihpPWEoaSksYj1hKGIpKSxlLnJlcGxhY2UoYixp
KTtmb3IodmFyIHk9dC5sZW5ndGgsXz0wO3k+XyYmKG49dFt5LTFdLGI9blswXSwhYi50ZXN0KGUp
KTt5LS0pO3JldHVybiBuPW58fFtdLGI9blswXSxpPW5bMV0sbz1lLnJlcGxhY2UoYixpKX19LGUu
ZGVmYXVsdD1pfSksZGVmaW5lKCJlbWJlci1pbmZsZWN0b3IvbGliL3N5c3RlbS9zdHJpbmciLFsi
ZXhwb3J0cyIsImVtYmVyLWluZmxlY3Rvci9saWIvc3lzdGVtL2luZmxlY3RvciJdLGZ1bmN0aW9u
KGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIHQuZGVmYXVsdC5pbmZsZWN0
b3IucGx1cmFsaXplKGUpfWZ1bmN0aW9uIG4oZSl7cmV0dXJuIHQuZGVmYXVsdC5pbmZsZWN0b3Iu
c2luZ3VsYXJpemUoZSl9ZS5wbHVyYWxpemU9cixlLnNpbmd1bGFyaXplPW59KSxkZWZpbmUoImVt
YmVyLWluZmxlY3Rvci9saWIvdXRpbHMvbWFrZS1oZWxwZXIiLFsiZXhwb3J0cyIsImVtYmVyIl0s
ZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gdC5kZWZhdWx0
LkhlbHBlcj90LmRlZmF1bHQuSGVscGVyLmhlbHBlcihlKTp0LmRlZmF1bHQuSFRNTEJhcnM/dC5k
ZWZhdWx0LkhUTUxCYXJzLm1ha2VCb3VuZEhlbHBlcihlKTp0LmRlZmF1bHQuSGFuZGxlYmFycy5t
YWtlQm91bmRIZWxwZXIoZSl9ZS5kZWZhdWx0PXJ9KSxkZWZpbmUoImVtYmVyLWxvYWQtaW5pdGlh
bGl6ZXJzL2luZGV4IixbImV4cG9ydHMiLCJlbWJlciJdLGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJp
Y3QiO2UuZGVmYXVsdD1mdW5jdGlvbihlLHIpe3ZhciBuPW5ldyBSZWdFeHAoIl4iK3IrIi8oKD86
aW5zdGFuY2UtKT9pbml0aWFsaXplcnMpLyIpLGk9T2JqZWN0LmtleXN8fHQuZGVmYXVsdC5rZXlz
O2kocmVxdWlyZWpzLl9lYWtfc2VlbikubWFwKGZ1bmN0aW9uKGUpe3JldHVybnttb2R1bGVOYW1l
OmUsbWF0Y2hlczpuLmV4ZWMoZSl9fSkuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlLm1hdGNo
ZXMmJjI9PT1lLm1hdGNoZXMubGVuZ3RofSkuZm9yRWFjaChmdW5jdGlvbihyKXt2YXIgbj1yLm1v
ZHVsZU5hbWUsaT1yZXF1aXJlKG4sbnVsbCxudWxsLCEwKTtpZighaSl0aHJvdyBuZXcgRXJyb3Io
bisiIG11c3QgZXhwb3J0IGFuIGluaXRpYWxpemVyLiIpO3ZhciBvPXQuZGVmYXVsdC5TdHJpbmcu
Y2FtZWxpemUoci5tYXRjaGVzWzFdLnN1YnN0cmluZygwLHIubWF0Y2hlc1sxXS5sZW5ndGgtMSkp
LGE9aS5kZWZhdWx0O2lmKCFhLm5hbWUpe3ZhciBzPW4ubWF0Y2goL1teXC9dK1wvPyQvKVswXTth
Lm5hbWU9c31lW29dJiZlW29dKGEpfSl9fSksZGVmaW5lKCJlbWJlci1yZXNvbHZlci9jb250YWlu
ZXItZGVidWctYWRhcHRlciIsWyJleHBvcnRzIiwiZW1iZXIiLCJlbWJlci1yZXNvbHZlci91dGls
cy9tb2R1bGUtcmVnaXN0cnkiXSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IG4oZSx0LHIpe3ZhciBuPXQubWF0Y2gobmV3IFJlZ0V4cCgiXi8/IityKyIvKC4rKS8iK2UrIiQi
KSk7aWYobilyZXR1cm4gblsxXX12YXIgaT10LmRlZmF1bHQuQ29udGFpbmVyRGVidWdBZGFwdGVy
LG89bnVsbDsidW5kZWZpbmVkIiE9dHlwZW9mIGkmJihvPWkuZXh0ZW5kKHtfbW9kdWxlUmVnaXN0
cnk6bnVsbCxpbml0OmZ1bmN0aW9uKCl7dGhpcy5fc3VwZXIuYXBwbHkodGhpcyxhcmd1bWVudHMp
LHRoaXMuX21vZHVsZVJlZ2lzdHJ5fHwodGhpcy5fbW9kdWxlUmVnaXN0cnk9bmV3IHIuZGVmYXVs
dCl9LGNhbkNhdGFsb2dFbnRyaWVzQnlUeXBlOmZ1bmN0aW9uKCl7cmV0dXJuITB9LGNhdGFsb2dF
bnRyaWVzQnlUeXBlOmZ1bmN0aW9uKGUpe2Zvcih2YXIgcj10aGlzLl9tb2R1bGVSZWdpc3RyeS5t
b2R1bGVOYW1lcygpLGk9dC5kZWZhdWx0LkEoKSxvPXRoaXMubmFtZXNwYWNlLm1vZHVsZVByZWZp
eCxhPTAscz1yLmxlbmd0aDthPHM7YSsrKXt2YXIgdT1yW2FdO2lmKHUuaW5kZXhPZihlKSE9PS0x
KXt2YXIgbD1uKGUsdSx0aGlzLm5hbWVzcGFjZS5wb2RNb2R1bGVQcmVmaXh8fG8pO2x8fChsPXUu
c3BsaXQoZSsicy8iKS5wb3AoKSksaS5hZGRPYmplY3QobCl9fXJldHVybiBpfX0pKSxlLmRlZmF1
bHQ9b30pLGRlZmluZSgiZW1iZXItcmVzb2x2ZXIvaW5kZXgiLFsiZXhwb3J0cyIsImVtYmVyLXJl
c29sdmVyL3Jlc29sdmVyIl0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmlu
ZVByb3BlcnR5KGUsImRlZmF1bHQiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVy
biB0LmRlZmF1bHR9fSl9KSxkZWZpbmUoImVtYmVyLXJlc29sdmVyL3Jlc29sdmVyIixbImV4cG9y
dHMiLCJlbWJlciIsImVtYmVyLXJlc29sdmVyL3V0aWxzL21vZHVsZS1yZWdpc3RyeSIsImVtYmVy
LXJlc29sdmVyL3V0aWxzL2NsYXNzLWZhY3RvcnkiLCJlbWJlci1yZXNvbHZlci91dGlscy9tYWtl
LWRpY3Rpb25hcnkiXSxmdW5jdGlvbihlLHQscixuLGkpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBv
KGUpe2lmKGUucGFyc2VkTmFtZT09PSEwKXJldHVybiBlO3ZhciB0LHIsbixpPWUuc3BsaXQoIkAi
KTtpZigiaGVscGVyOkBjb250ZW50LWhlbHBlciIhPT1lJiYyPT09aS5sZW5ndGgpe3ZhciBvPWlb
MF0uc3BsaXQoIjoiKTtpZigyPT09by5sZW5ndGgpdD1vWzFdLHI9b1swXSxuPWlbMV07ZWxzZXt2
YXIgYT1pWzFdLnNwbGl0KCI6Iik7dD1pWzBdLHI9YVswXSxuPWFbMV19fWVsc2UgaT1lLnNwbGl0
KCI6Iikscj1pWzBdLG49aVsxXTt2YXIgcz1uLHU9Yyh0aGlzLCJuYW1lc3BhY2UiKSxmPXU7cmV0
dXJue3BhcnNlZE5hbWU6ITAsZnVsbE5hbWU6ZSxwcmVmaXg6dHx8dGhpcy5wcmVmaXgoe3R5cGU6
cn0pLHR5cGU6cixmdWxsTmFtZVdpdGhvdXRUeXBlOnMsbmFtZTpuLHJvb3Q6ZixyZXNvbHZlTWV0
aG9kTmFtZToicmVzb2x2ZSIrbChyKX19ZnVuY3Rpb24gYShlKXt0LmRlZmF1bHQuYXNzZXJ0KCJg
bW9kdWxlUHJlZml4YCBtdXN0IGJlIGRlZmluZWQiLHRoaXMubmFtZXNwYWNlLm1vZHVsZVByZWZp
eCk7dmFyIHI9dGhpcy5maW5kTW9kdWxlTmFtZShlKTtpZihyKXt2YXIgaT10aGlzLl9leHRyYWN0
RGVmYXVsdEV4cG9ydChyLGUpO2lmKHZvaWQgMD09PWkpdGhyb3cgbmV3IEVycm9yKCIgRXhwZWN0
ZWQgdG8gZmluZDogJyIrZS5mdWxsTmFtZSsiJyB3aXRoaW4gJyIrcisiJyBidXQgZ290ICd1bmRl
ZmluZWQnLiBEaWQgeW91IGZvcmdldCB0byBgZXhwb3J0IGRlZmF1bHRgIHdpdGhpbiAnIityKyIn
PyIpO3JldHVybiB0aGlzLnNob3VsZFdyYXBJbkNsYXNzRmFjdG9yeShpLGUpJiYoaT0oMCxuLmRl
ZmF1bHQpKGkpKSxpfXJldHVybiB0aGlzLl9zdXBlcihlKX12YXIgcz10LmRlZmF1bHQuU3RyaW5n
LHU9cy51bmRlcnNjb3JlLGw9cy5jbGFzc2lmeSxjPXQuZGVmYXVsdC5nZXQsZj10LmRlZmF1bHQu
RGVmYXVsdFJlc29sdmVyLGQ9Zi5leHRlbmQoe3Jlc29sdmVPdGhlcjphLHBhcnNlTmFtZTpvLHJl
c29sdmVUZW1wbGF0ZTphLHBsdXJhbGl6ZWRUeXBlczpudWxsLG1vZHVsZVJlZ2lzdHJ5Om51bGws
bWFrZVRvU3RyaW5nOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIiIrdGhpcy5uYW1lc3BhY2UubW9kdWxl
UHJlZml4KyJAIit0KyI6In0sc2hvdWxkV3JhcEluQ2xhc3NGYWN0b3J5OmZ1bmN0aW9uKCl7cmV0
dXJuITF9LGluaXQ6ZnVuY3Rpb24oKXt0aGlzLl9zdXBlcigpLHRoaXMubW9kdWxlQmFzZWRSZXNv
bHZlcj0hMCx0aGlzLl9tb2R1bGVSZWdpc3RyeXx8KHRoaXMuX21vZHVsZVJlZ2lzdHJ5PW5ldyBy
LmRlZmF1bHQpLHRoaXMuX25vcm1hbGl6ZUNhY2hlPSgwLGkuZGVmYXVsdCkoKSx0aGlzLnBsdXJh
bGl6ZWRUeXBlcz10aGlzLnBsdXJhbGl6ZWRUeXBlc3x8KDAsaS5kZWZhdWx0KSgpLHRoaXMucGx1
cmFsaXplZFR5cGVzLmNvbmZpZ3x8KHRoaXMucGx1cmFsaXplZFR5cGVzLmNvbmZpZz0iY29uZmln
IiksdGhpcy5fZGVwcmVjYXRlZFBvZE1vZHVsZVByZWZpeD0hMX0sbm9ybWFsaXplOmZ1bmN0aW9u
KGUpe3JldHVybiB0aGlzLl9ub3JtYWxpemVDYWNoZVtlXXx8KHRoaXMuX25vcm1hbGl6ZUNhY2hl
W2VdPXRoaXMuX25vcm1hbGl6ZShlKSl9LF9ub3JtYWxpemU6ZnVuY3Rpb24oZSl7dmFyIHI9ZS5z
cGxpdCgiOiIpO3JldHVybiByLmxlbmd0aD4xP3JbMF0rIjoiK3QuZGVmYXVsdC5TdHJpbmcuZGFz
aGVyaXplKHJbMV0ucmVwbGFjZSgvXC4vZywiLyIpKTplfSxwbHVyYWxpemU6ZnVuY3Rpb24oZSl7
cmV0dXJuIHRoaXMucGx1cmFsaXplZFR5cGVzW2VdfHwodGhpcy5wbHVyYWxpemVkVHlwZXNbZV09
ZSsicyIpfSxwb2RCYXNlZExvb2t1cFdpdGhQcmVmaXg6ZnVuY3Rpb24oZSx0KXt2YXIgcj10LmZ1
bGxOYW1lV2l0aG91dFR5cGU7cmV0dXJuInRlbXBsYXRlIj09PXQudHlwZSYmKHI9ci5yZXBsYWNl
KC9eY29tcG9uZW50c1wvLywiIikpLGUrIi8iK3IrIi8iK3QudHlwZX0scG9kQmFzZWRNb2R1bGVO
YW1lOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMubmFtZXNwYWNlLnBvZE1vZHVsZVByZWZpeHx8dGhp
cy5uYW1lc3BhY2UubW9kdWxlUHJlZml4O3JldHVybiB0aGlzLnBvZEJhc2VkTG9va3VwV2l0aFBy
ZWZpeCh0LGUpfSxwb2RCYXNlZENvbXBvbmVudHNJblN1YmRpcjpmdW5jdGlvbihlKXt2YXIgdD10
aGlzLm5hbWVzcGFjZS5wb2RNb2R1bGVQcmVmaXh8fHRoaXMubmFtZXNwYWNlLm1vZHVsZVByZWZp
eDtpZih0Kz0iL2NvbXBvbmVudHMiLCJjb21wb25lbnQiPT09ZS50eXBlfHxlLmZ1bGxOYW1lV2l0
aG91dFR5cGUubWF0Y2goL15jb21wb25lbnRzLykpcmV0dXJuIHRoaXMucG9kQmFzZWRMb29rdXBX
aXRoUHJlZml4KHQsZSl9LHJlc29sdmVFbmdpbmU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5mdWxsTmFt
ZVdpdGhvdXRUeXBlLHI9dCsiL2VuZ2luZSI7aWYodGhpcy5fbW9kdWxlUmVnaXN0cnkuaGFzKHIp
KXJldHVybiB0aGlzLl9leHRyYWN0RGVmYXVsdEV4cG9ydChyKX0scmVzb2x2ZVJvdXRlTWFwOmZ1
bmN0aW9uKGUpe3ZhciByPWUuZnVsbE5hbWVXaXRob3V0VHlwZSxuPXIrIi9yb3V0ZXMiO2lmKHRo
aXMuX21vZHVsZVJlZ2lzdHJ5LmhhcyhuKSl7dmFyIGk9dGhpcy5fZXh0cmFjdERlZmF1bHRFeHBv
cnQobik7cmV0dXJuIHQuZGVmYXVsdC5hc3NlcnQoIlRoZSByb3V0ZSBtYXAgZm9yICIrcisiIHNo
b3VsZCBiZSB3cmFwcGVkIGJ5ICdidWlsZFJvdXRlcycgYmVmb3JlIGV4cG9ydGluZy4iLGkuaXNS
b3V0ZU1hcCksaX19LG1haW5Nb2R1bGVOYW1lOmZ1bmN0aW9uKGUpe3ZhciB0PWUucHJlZml4KyIv
IitlLnR5cGU7aWYoIm1haW4iPT09ZS5mdWxsTmFtZVdpdGhvdXRUeXBlKXJldHVybiB0fSxkZWZh
dWx0TW9kdWxlTmFtZTpmdW5jdGlvbihlKXtyZXR1cm4gZS5wcmVmaXgrIi8iK3RoaXMucGx1cmFs
aXplKGUudHlwZSkrIi8iK2UuZnVsbE5hbWVXaXRob3V0VHlwZX0scHJlZml4OmZ1bmN0aW9uKGUp
e3ZhciB0PXRoaXMubmFtZXNwYWNlLm1vZHVsZVByZWZpeDtyZXR1cm4gdGhpcy5uYW1lc3BhY2Vb
ZS50eXBlKyJQcmVmaXgiXSYmKHQ9dGhpcy5uYW1lc3BhY2VbZS50eXBlKyJQcmVmaXgiXSksdH0s
bW9kdWxlTmFtZUxvb2t1cFBhdHRlcm5zOnQuZGVmYXVsdC5jb21wdXRlZChmdW5jdGlvbigpe3Jl
dHVyblt0aGlzLnBvZEJhc2VkTW9kdWxlTmFtZSx0aGlzLnBvZEJhc2VkQ29tcG9uZW50c0luU3Vi
ZGlyLHRoaXMubWFpbk1vZHVsZU5hbWUsdGhpcy5kZWZhdWx0TW9kdWxlTmFtZV19KSxmaW5kTW9k
dWxlTmFtZTpmdW5jdGlvbihlLHQpe2Zvcih2YXIgcixuPXRoaXMuZ2V0KCJtb2R1bGVOYW1lTG9v
a3VwUGF0dGVybnMiKSxpPTAsbz1uLmxlbmd0aDtpPG87aSsrKXt2YXIgYT1uW2ldLHM9YS5jYWxs
KHRoaXMsZSk7aWYocyYmKHM9dGhpcy5jaG9vc2VNb2R1bGVOYW1lKHMpKSxzJiZ0aGlzLl9tb2R1
bGVSZWdpc3RyeS5oYXMocykmJihyPXMpLHR8fHRoaXMuX2xvZ0xvb2t1cChyLGUscykscilyZXR1
cm4gcn19LGNob29zZU1vZHVsZU5hbWU6ZnVuY3Rpb24oZSl7dmFyIHI9dShlKTtpZihlIT09ciYm
dGhpcy5fbW9kdWxlUmVnaXN0cnkuaGFzKGUpJiZ0aGlzLl9tb2R1bGVSZWdpc3RyeS5oYXMocikp
dGhyb3cgbmV3IFR5cGVFcnJvcigiQW1iaWd1b3VzIG1vZHVsZSBuYW1lczogYCIrZSsiYCBhbmQg
YCIrcisiYCIpO2lmKHRoaXMuX21vZHVsZVJlZ2lzdHJ5LmhhcyhlKSlyZXR1cm4gZTtpZih0aGlz
Ll9tb2R1bGVSZWdpc3RyeS5oYXMocikpcmV0dXJuIHI7dmFyIG49ZS5yZXBsYWNlKC9cLy0oW15c
L10qKSQvLCIvXyQxIik7cmV0dXJuIHRoaXMuX21vZHVsZVJlZ2lzdHJ5LmhhcyhuKT8odC5kZWZh
dWx0LmRlcHJlY2F0ZSgnTW9kdWxlcyBzaG91bGQgbm90IGNvbnRhaW4gdW5kZXJzY29yZXMuIEF0
dGVtcHRlZCB0byBsb29rdXAgIicrZSsnIiB3aGljaCB3YXMgbm90IGZvdW5kLiBQbGVhc2UgcmVu
YW1lICInK24rJyIgdG8gIicrZSsnIiBpbnN0ZWFkLicsITEse2lkOiJlbWJlci1yZXNvbHZlci51
bmRlcnNjb3JlZC1tb2R1bGVzIix1bnRpbDoiMy4wLjAifSksbik6ZX0sbG9va3VwRGVzY3JpcHRp
b246ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5wYXJzZU5hbWUoZSkscj10aGlzLmZpbmRNb2R1bGVO
YW1lKHQsITApO3JldHVybiByfSxfbG9nTG9va3VwOmZ1bmN0aW9uKGUscixuKXtpZih0LmRlZmF1
bHQuRU5WLkxPR19NT0RVTEVfUkVTT0xWRVJ8fHIucm9vdC5MT0dfUkVTT0xWRVIpe3ZhciBpLG87
aT1lPyJb4pyTXSI6IlsgXSIsbz1yLmZ1bGxOYW1lLmxlbmd0aD42MD8iLiI6bmV3IEFycmF5KDYw
LXIuZnVsbE5hbWUubGVuZ3RoKS5qb2luKCIuIiksbnx8KG49dGhpcy5sb29rdXBEZXNjcmlwdGlv
bihyKSksdC5kZWZhdWx0LkxvZ2dlci5pbmZvKGksci5mdWxsTmFtZSxvLG4pfX0sa25vd25Gb3JU
eXBlOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLl9tb2R1bGVSZWdpc3RyeS5tb2R1bGVOYW1l
cygpLHI9KDAsaS5kZWZhdWx0KSgpLG49MCxvPXQubGVuZ3RoO248bztuKyspe3ZhciBhPXRbbl0s
cz10aGlzLnRyYW5zbGF0ZVRvQ29udGFpbmVyRnVsbG5hbWUoZSxhKTtzJiYocltzXT0hMCl9cmV0
dXJuIHJ9LHRyYW5zbGF0ZVRvQ29udGFpbmVyRnVsbG5hbWU6ZnVuY3Rpb24oZSx0KXt2YXIgcj10
aGlzLnByZWZpeCh7dHlwZTplfSksbj1yKyIvIixpPSIvIitlLG89dC5pbmRleE9mKG4pLGE9dC5p
bmRleE9mKGkpO2lmKDA9PT1vJiZhPT09dC5sZW5ndGgtaS5sZW5ndGgmJnQubGVuZ3RoPm4ubGVu
Z3RoK2kubGVuZ3RoKXJldHVybiBlKyI6Iit0LnNsaWNlKG8rbi5sZW5ndGgsYSk7dmFyIHM9dGhp
cy5wbHVyYWxpemUoZSksdT1yKyIvIitzKyIvIjtyZXR1cm4gMD09PXQuaW5kZXhPZih1KSYmdC5s
ZW5ndGg+dS5sZW5ndGg/ZSsiOiIrdC5zbGljZSh1Lmxlbmd0aCk6dm9pZCAwfSxfZXh0cmFjdERl
ZmF1bHRFeHBvcnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9cmVxdWlyZShlLG51bGwsbnVsbCwhMCk7cmV0
dXJuIHQmJnQuZGVmYXVsdCYmKHQ9dC5kZWZhdWx0KSx0fX0pO2QucmVvcGVuQ2xhc3Moe21vZHVs
ZUJhc2VkUmVzb2x2ZXI6ITB9KSxlLmRlZmF1bHQ9ZH0pLGRlZmluZSgiZW1iZXItcmVzb2x2ZXIv
dXRpbHMvY2xhc3MtZmFjdG9yeSIsWyJleHBvcnRzIl0sZnVuY3Rpb24oZSl7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIHQoZSl7cmV0dXJue2NyZWF0ZTpmdW5jdGlvbih0KXtyZXR1cm4iZnVuY3Rpb24i
PT10eXBlb2YgZS5leHRlbmQ/ZS5leHRlbmQodCk6ZX19fWUuZGVmYXVsdD10fSksZGVmaW5lKCJl
bWJlci1yZXNvbHZlci91dGlscy9jcmVhdGUiLFsiZXhwb3J0cyIsImVtYmVyIl0sZnVuY3Rpb24o
ZSx0KXsidXNlIHN0cmljdCI7Cit2YXIgcj1PYmplY3QuY3JlYXRlfHx0LmRlZmF1bHQuY3JlYXRl
O2lmKCFyfHxyKG51bGwpLmhhc093blByb3BlcnR5KXRocm93IG5ldyBFcnJvcigiVGhpcyBicm93
c2VyIGRvZXMgbm90IHN1cHBvcnQgT2JqZWN0LmNyZWF0ZShudWxsKSwgcGxlYXNlIHBvbHlmaWwg
d2l0aCBlczUtc2hhbTogaHR0cDovL2dpdC5pby95QlUycmciKTtlLmRlZmF1bHQ9cn0pLGRlZmlu
ZSgiZW1iZXItcmVzb2x2ZXIvdXRpbHMvbWFrZS1kaWN0aW9uYXJ5IixbImV4cG9ydHMiLCJlbWJl
ci1yZXNvbHZlci91dGlscy9jcmVhdGUiXSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiByKCl7dmFyIGU9KDAsdC5kZWZhdWx0KShudWxsKTtyZXR1cm4gZS5fZGljdD1udWxsLGRl
bGV0ZSBlLl9kaWN0LGV9ZS5kZWZhdWx0PXJ9KSxkZWZpbmUoImVtYmVyLXJlc29sdmVyL3V0aWxz
L21vZHVsZS1yZWdpc3RyeSIsWyJleHBvcnRzIiwiZW1iZXIiXSxmdW5jdGlvbihlLHQpeyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiByKGUpe3RoaXMuX2VudHJpZXM9ZXx8cmVxdWlyZWpzLmVudHJpZXN9
InVuZGVmaW5lZCI9PXR5cGVvZiByZXF1aXJlanMuZW50cmllcyYmKHJlcXVpcmVqcy5lbnRyaWVz
PXJlcXVpcmVqcy5fZWFrX3NlZW4pLHIucHJvdG90eXBlLm1vZHVsZU5hbWVzPWZ1bmN0aW9uKCl7
cmV0dXJuKE9iamVjdC5rZXlzfHx0LmRlZmF1bHQua2V5cykodGhpcy5fZW50cmllcyl9LHIucHJv
dG90eXBlLmhhcz1mdW5jdGlvbihlKXtyZXR1cm4gZSBpbiB0aGlzLl9lbnRyaWVzfSxyLnByb3Rv
dHlwZS5nZXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aDw9MXx8dm9pZCAwPT09
YXJndW1lbnRzWzFdPyJkZWZhdWx0Ijphcmd1bWVudHNbMV0scj1yZXF1aXJlKGUpO3JldHVybiBy
JiZyW3RdfSxlLmRlZmF1bHQ9cn0pOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvYm93ZXIuanNvbiBiL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVy
anMvYm93ZXIuanNvbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTk5ZTQ5ODIyYWYw
NWI2NGU5NmExMzBlOTk4NzFiNDA5OTg5MDhjZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL2Jvd2VyLmpzb24KKysrIC9k
ZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi17Ci0gICJuYW1lIjogInRvZG9tdmMtZW1iZXJqcyIs
Ci0gICJ2ZXJzaW9uIjogIjAuMC4wIiwKLSAgImRlcGVuZGVuY2llcyI6IHsKLSAgICAidG9kb212
Yy1jb21tb24iOiAifjAuMS40IiwKLSAgICAianF1ZXJ5IjogIn4yLjEuMCIsCi0gICAgImhhbmRs
ZWJhcnMiOiAifjEuMy4wIiwKLSAgICAiZW1iZXIiOiAifjEuMy4xIiwKLSAgICAiZW1iZXItZGF0
YSI6ICIxLjAuMC1iZXRhLjYiLAotICAgICJlbWJlci1sb2NhbHN0b3JhZ2UtYWRhcHRlciI6ICJs
YXRlc3QiCi0gIH0KLX0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvYm93ZXJfY29t
cG9uZW50cy9lbWJlci1kYXRhL2VtYmVyLWRhdGEuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL2Jv
d2VyX2NvbXBvbmVudHMvZW1iZXItZGF0YS9lbWJlci1kYXRhLmpzCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA3NjJhOWQ3Nzk1YmFkZjY0MDJkMDM2ZWJiNTkwOTMxMGQ0ZWIzNmMyLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2VtYmVyanMvYm93ZXJfY29tcG9uZW50cy9lbWJlci1kYXRhL2VtYmVyLWRhdGEuanMKKysrIC9k
ZXYvbnVsbApAQCAtMSwxMDYyMCArMCwwIEBACi0vKiEKLSAqIEBvdmVydmlldyAgRW1iZXIgRGF0
YQotICogQGNvcHlyaWdodCBDb3B5cmlnaHQgMjAxMS0yMDE0IFRpbGRlIEluYy4gYW5kIGNvbnRy
aWJ1dG9ycy4KLSAqICAgICAgICAgICAgUG9ydGlvbnMgQ29weXJpZ2h0IDIwMTEgTGl2aW5nU29j
aWFsIEluYy4KLSAqIEBsaWNlbnNlICAgTGljZW5zZWQgdW5kZXIgTUlUIGxpY2Vuc2UgKHNlZSBs
aWNlbnNlLmpzKQotICogQHZlcnNpb24gICAxLjAuMC1iZXRhLjYKLSAqLwotCi0KLShmdW5jdGlv
bigpIHsKLXZhciBkZWZpbmUsIHJlcXVpcmVNb2R1bGU7Ci0KLShmdW5jdGlvbigpIHsKLSAgdmFy
IHJlZ2lzdHJ5ID0ge30sIHNlZW4gPSB7fTsKLQotICBkZWZpbmUgPSBmdW5jdGlvbihuYW1lLCBk
ZXBzLCBjYWxsYmFjaykgewotICAgIHJlZ2lzdHJ5W25hbWVdID0geyBkZXBzOiBkZXBzLCBjYWxs
YmFjazogY2FsbGJhY2sgfTsKLSAgfTsKLQotICByZXF1aXJlTW9kdWxlID0gZnVuY3Rpb24obmFt
ZSkgewotICAgIGlmIChzZWVuW25hbWVdKSB7IHJldHVybiBzZWVuW25hbWVdOyB9Ci0gICAgc2Vl
bltuYW1lXSA9IHt9OwotCi0gICAgdmFyIG1vZCwgZGVwcywgY2FsbGJhY2ssIHJlaWZpZWQgLCBl
eHBvcnRzOwotCi0gICAgbW9kID0gcmVnaXN0cnlbbmFtZV07Ci0KLSAgICBpZiAoIW1vZCkgewot
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJNb2R1bGUgJyIgKyBuYW1lICsgIicgbm90IGZvdW5kLiIp
OwotICAgIH0KLQotICAgIGRlcHMgPSBtb2QuZGVwczsKLSAgICBjYWxsYmFjayA9IG1vZC5jYWxs
YmFjazsKLSAgICByZWlmaWVkID0gW107Ci0gICAgZXhwb3J0czsKLQotICAgIGZvciAodmFyIGk9
MCwgbD1kZXBzLmxlbmd0aDsgaTxsOyBpKyspIHsKLSAgICAgIGlmIChkZXBzW2ldID09PSAnZXhw
b3J0cycpIHsKLSAgICAgICAgcmVpZmllZC5wdXNoKGV4cG9ydHMgPSB7fSk7Ci0gICAgICB9IGVs
c2UgewotICAgICAgICByZWlmaWVkLnB1c2gocmVxdWlyZU1vZHVsZShkZXBzW2ldKSk7Ci0gICAg
ICB9Ci0gICAgfQotCi0gICAgdmFyIHZhbHVlID0gY2FsbGJhY2suYXBwbHkodGhpcywgcmVpZmll
ZCk7Ci0gICAgcmV0dXJuIHNlZW5bbmFtZV0gPSBleHBvcnRzIHx8IHZhbHVlOwotICB9OwotfSko
KTsKLShmdW5jdGlvbigpIHsKLS8qKgotICBAbW9kdWxlIGVtYmVyLWRhdGEKLSovCi0KLS8qKgot
ICBBbGwgRW1iZXIgRGF0YSBtZXRob2RzIGFuZCBmdW5jdGlvbnMgYXJlIGRlZmluZWQgaW5zaWRl
IG9mIHRoaXMgbmFtZXNwYWNlLgotCi0gIEBjbGFzcyBEUwotICBAc3RhdGljCi0qLwotdmFyIERT
OwotaWYgKCd1bmRlZmluZWQnID09PSB0eXBlb2YgRFMpIHsKLSAgLyoqCi0gICAgQHByb3BlcnR5
IFZFUlNJT04KLSAgICBAdHlwZSBTdHJpbmcKLSAgICBAZGVmYXVsdCAnMS4wLjAtYmV0YS42Jwot
ICAgIEBzdGF0aWMKLSAgKi8KLSAgRFMgPSBFbWJlci5OYW1lc3BhY2UuY3JlYXRlKHsKLSAgICBW
RVJTSU9OOiAnMS4wLjAtYmV0YS42JwotICB9KTsKLQotICBpZiAoJ3VuZGVmaW5lZCcgIT09IHR5
cGVvZiB3aW5kb3cpIHsKLSAgICB3aW5kb3cuRFMgPSBEUzsKLSAgfQotCi0gIGlmIChFbWJlci5s
aWJyYXJpZXMpIHsKLSAgICBFbWJlci5saWJyYXJpZXMucmVnaXN0ZXJDb3JlTGlicmFyeSgnRW1i
ZXIgRGF0YScsIERTLlZFUlNJT04pOwotICB9Ci19Ci0KLX0pKCk7Ci0KLQotCi0oZnVuY3Rpb24o
KSB7Ci0vKioKLSAgVGhpcyBpcyB1c2VkIGludGVybmFsbHkgdG8gZW5hYmxlIGRlcHJlY2F0aW9u
IG9mIGNvbnRhaW5lciBwYXRocyBhbmQgcHJvdmlkZQotICBhIGRlY2VudCBtZXNzYWdlIHRvIHRo
ZSB1c2VyIGluZGljYXRpbmcgaG93IHRvIGZpeCB0aGUgaXNzdWUuCi0KLSAgQGNsYXNzIENvbnRh
aW5lclByb3h5Ci0gIEBuYW1lc3BhY2UgRFMKLSAgQHByaXZhdGUKLSovCi12YXIgQ29udGFpbmVy
UHJveHkgPSBmdW5jdGlvbiAoY29udGFpbmVyKXsKLSAgdGhpcy5jb250YWluZXIgPSBjb250YWlu
ZXI7Ci19OwotCi1Db250YWluZXJQcm94eS5wcm90b3R5cGUuYWxpYXNlZEZhY3RvcnkgPSBmdW5j
dGlvbihwYXRoLCBwcmVMb29rdXApIHsKLSAgdmFyIF90aGlzID0gdGhpczsKLQotICByZXR1cm4g
e2NyZWF0ZTogZnVuY3Rpb24oKXsgCi0gICAgaWYgKHByZUxvb2t1cCkgeyBwcmVMb29rdXAoKTsg
fQotCi0gICAgcmV0dXJuIF90aGlzLmNvbnRhaW5lci5sb29rdXAocGF0aCk7IAotICB9fTsKLX07
Ci0KLUNvbnRhaW5lclByb3h5LnByb3RvdHlwZS5yZWdpc3RlckFsaWFzID0gZnVuY3Rpb24oc291
cmNlLCBkZXN0LCBwcmVMb29rdXApIHsKLSAgdmFyIGZhY3RvcnkgPSB0aGlzLmFsaWFzZWRGYWN0
b3J5KGRlc3QsIHByZUxvb2t1cCk7Ci0KLSAgcmV0dXJuIHRoaXMuY29udGFpbmVyLnJlZ2lzdGVy
KHNvdXJjZSwgZmFjdG9yeSk7Ci19OwotCi1Db250YWluZXJQcm94eS5wcm90b3R5cGUucmVnaXN0
ZXJEZXByZWNhdGlvbiA9IGZ1bmN0aW9uKGRlcHJlY2F0ZWQsIHZhbGlkKSB7Ci0gIHZhciBwcmVM
b29rdXBDYWxsYmFjayA9IGZ1bmN0aW9uKCl7Ci0gICAgRW1iZXIuZGVwcmVjYXRlKCJZb3UgdHJp
ZWQgdG8gbG9vayB1cCAnIiArIGRlcHJlY2F0ZWQgKyAiJywgIiArCi0gICAgICAgICAgICAgICAg
ICAgICJidXQgdGhpcyBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGZhdm9yIG9mICciICsgdmFsaWQg
KyAiJy4iLCBmYWxzZSk7Ci0gIH07Ci0KLSAgcmV0dXJuIHRoaXMucmVnaXN0ZXJBbGlhcyhkZXBy
ZWNhdGVkLCB2YWxpZCwgcHJlTG9va3VwQ2FsbGJhY2spOwotfTsKLQotQ29udGFpbmVyUHJveHku
cHJvdG90eXBlLnJlZ2lzdGVyRGVwcmVjYXRpb25zID0gZnVuY3Rpb24ocHJveHlQYWlycykgewot
ICBmb3IgKHZhciBpID0gcHJveHlQYWlycy5sZW5ndGg7IGkgPiAwOyBpLS0pIHsKLSAgICB2YXIg
cHJveHlQYWlyID0gcHJveHlQYWlyc1tpIC0gMV0sCi0gICAgICAgIGRlcHJlY2F0ZWQgPSBwcm94
eVBhaXJbJ2RlcHJlY2F0ZWQnXSwKLSAgICAgICAgdmFsaWQgPSBwcm94eVBhaXJbJ3ZhbGlkJ107
Ci0KLSAgICB0aGlzLnJlZ2lzdGVyRGVwcmVjYXRpb24oZGVwcmVjYXRlZCwgdmFsaWQpOwotICB9
Ci19OwotCi1EUy5Db250YWluZXJQcm94eSA9IENvbnRhaW5lclByb3h5OwotCi19KSgpOwotCi0K
LQotKGZ1bmN0aW9uKCkgewotdmFyIGdldCA9IEVtYmVyLmdldCwgc2V0ID0gRW1iZXIuc2V0LCBp
c05vbmUgPSBFbWJlci5pc05vbmU7Ci0KLS8vIFNpbXBsZSBkaXNwYXRjaGVyIHRvIHN1cHBvcnQg
b3ZlcnJpZGluZyB0aGUgYWxpYXNlZAotLy8gbWV0aG9kIGluIHN1YmNsYXNzZXMuCi1mdW5jdGlv
biBhbGlhc01ldGhvZChtZXRob2ROYW1lKSB7Ci0gIHJldHVybiBmdW5jdGlvbigpIHsKLSAgICBy
ZXR1cm4gdGhpc1ttZXRob2ROYW1lXS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwotICB9OwotfQot
Ci0vKioKLSAgSW4gRW1iZXIgRGF0YSBhIFNlcmlhbGl6ZXIgaXMgdXNlZCB0byBzZXJpYWxpemUg
YW5kIGRlc2VyaWFsaXplCi0gIHJlY29yZHMgd2hlbiB0aGV5IGFyZSB0cmFuc2ZlcnJlZCBpbiBh
bmQgb3V0IG9mIGFuIGV4dGVybmFsIHNvdXJjZS4KLSAgVGhpcyBwcm9jZXNzIGludm9sdmVzIG5v
cm1hbGl6aW5nIHByb3BlcnR5IG5hbWVzLCB0cmFuc2Zvcm1pbmcKLSAgYXR0cmlidXRlIHZhbHVl
cyBhbmQgc2VyaWFsaXppbmcgcmVsYXRpb25zaGlwcy4KLQotICBGb3IgbWF4aW11bSBwZXJmb3Jt
YW5jZSBFbWJlciBEYXRhIHJlY29tbWVuZHMgeW91IHVzZSB0aGUKLSAgW1JFU1RTZXJpYWxpemVy
XShEUy5SRVNUU2VyaWFsaXplci5odG1sKSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCi0KLSAg
YEpTT05TZXJpYWxpemVyYCBpcyB1c2VmdWwgZm9yIHNpbXBsZXIgb3IgbGVnYWN5IGJhY2tlbmRz
IHRoYXQgbWF5Ci0gIG5vdCBzdXBwb3J0IHRoZSBodHRwOi8vanNvbmFwaS5vcmcvIHNwZWMuCi0K
LSAgQGNsYXNzIEpTT05TZXJpYWxpemVyCi0gIEBuYW1lc3BhY2UgRFMKLSovCi1EUy5KU09OU2Vy
aWFsaXplciA9IEVtYmVyLk9iamVjdC5leHRlbmQoewotICAvKioKLSAgICBUaGUgcHJpbWFyeUtl
eSBpcyB1c2VkIHdoZW4gc2VyaWFsaXppbmcgYW5kIGRlc2VyaWFsaXppbmcKLSAgICBkYXRhLiBF
bWJlciBEYXRhIGFsd2F5cyB1c2VzIHRoZSBgaWRgIHByb3BlcnR5IHRvIHN0b3JlIHRoZSBpZCBv
ZgotICAgIHRoZSByZWNvcmQuIFRoZSBleHRlcm5hbCBzb3VyY2UgbWF5IG5vdCBhbHdheXMgZm9s
bG93IHRoaXMKLSAgICBjb252ZW50aW9uLiBJbiB0aGVzZSBjYXNlcyBpdCBpcyB1c2VmdWwgdG8g
b3ZlcnJpZGUgdGhlCi0gICAgcHJpbWFyeUtleSBwcm9wZXJ0eSB0byBtYXRjaCB0aGUgcHJpbWFy
eUtleSBvZiB5b3VyIGV4dGVybmFsCi0gICAgc3RvcmUuCi0KLSAgICBFeGFtcGxlCi0KLSAgICBg
YGBqYXZhc2NyaXB0Ci0gICAgQXBwLkFwcGxpY2F0aW9uU2VyaWFsaXplciA9IERTLkpTT05TZXJp
YWxpemVyLmV4dGVuZCh7Ci0gICAgICBwcmltYXJ5S2V5OiAnX2lkJwotICAgIH0pOwotICAgIGBg
YAotCi0gICAgQHByb3BlcnR5IHByaW1hcnlLZXkKLSAgICBAdHlwZSB7U3RyaW5nfQotICAgIEBk
ZWZhdWx0ICdpZCcKLSAgKi8KLSAgcHJpbWFyeUtleTogJ2lkJywKLQotICAvKioKLSAgIEdpdmVu
IGEgc3ViY2xhc3Mgb2YgYERTLk1vZGVsYCBhbmQgYSBKU09OIG9iamVjdCB0aGlzIG1ldGhvZCB3
aWxsCi0gICBpdGVyYXRlIHRocm91Z2ggZWFjaCBhdHRyaWJ1dGUgb2YgdGhlIGBEUy5Nb2RlbGAg
YW5kIGludm9rZSB0aGUKLSAgIGBEUy5UcmFuc2Zvcm0jZGVzZXJpYWxpemVgIG1ldGhvZCBvbiB0
aGUgbWF0Y2hpbmcgcHJvcGVydHkgb2YgdGhlCi0gICBKU09OIG9iamVjdC4gIFRoaXMgbWV0aG9k
IGlzIHR5cGljYWxseSBjYWxsZWQgYWZ0ZXIgdGhlCi0gICBzZXJpYWxpemVyJ3MgYG5vcm1hbGl6
ZWAgbWV0aG9kLgotCi0gICBAbWV0aG9kIGFwcGx5VHJhbnNmb3JtcwotICAgQHByaXZhdGUKLSAg
IEBwYXJhbSB7c3ViY2xhc3Mgb2YgRFMuTW9kZWx9IHR5cGUKLSAgIEBwYXJhbSB7T2JqZWN0fSBk
YXRhIFRoZSBkYXRhIHRvIHRyYW5zZm9ybQotICAgQHJldHVybiB7T2JqZWN0fSBkYXRhIFRoZSB0
cmFuc2Zvcm1lZCBkYXRhIG9iamVjdAotICAqLwotICBhcHBseVRyYW5zZm9ybXM6IGZ1bmN0aW9u
KHR5cGUsIGRhdGEpIHsKLSAgICB0eXBlLmVhY2hUcmFuc2Zvcm1lZEF0dHJpYnV0ZShmdW5jdGlv
bihrZXksIHR5cGUpIHsKLSAgICAgIHZhciB0cmFuc2Zvcm0gPSB0aGlzLnRyYW5zZm9ybUZvcih0
eXBlKTsKLSAgICAgIGRhdGFba2V5XSA9IHRyYW5zZm9ybS5kZXNlcmlhbGl6ZShkYXRhW2tleV0p
OwotICAgIH0sIHRoaXMpOwotCi0gICAgcmV0dXJuIGRhdGE7Ci0gIH0sCi0KLSAgLyoqCi0gICAg
Tm9ybWFsaXplcyBhIHBhcnQgb2YgdGhlIEpTT04gcGF5bG9hZCByZXR1cm5lZCBieQotICAgIHRo
ZSBzZXJ2ZXIuIFlvdSBzaG91bGQgb3ZlcnJpZGUgdGhpcyBtZXRob2QsIG11bmdlIHRoZSBoYXNo
Ci0gICAgYW5kIGNhbGwgc3VwZXIgaWYgeW91IGhhdmUgZ2VuZXJpYyBub3JtYWxpemF0aW9uIHRv
IGRvLgotCi0gICAgSXQgdGFrZXMgdGhlIHR5cGUgb2YgdGhlIHJlY29yZCB0aGF0IGlzIGJlaW5n
IG5vcm1hbGl6ZWQKLSAgICAoYXMgYSBEUy5Nb2RlbCBjbGFzcyksIHRoZSBwcm9wZXJ0eSB3aGVy
ZSB0aGUgaGFzaCB3YXMKLSAgICBvcmlnaW5hbGx5IGZvdW5kLCBhbmQgdGhlIGhhc2ggdG8gbm9y
bWFsaXplLgotCi0gICAgWW91IGNhbiB1c2UgdGhpcyBtZXRob2QsIGZvciBleGFtcGxlLCB0byBu
b3JtYWxpemUgdW5kZXJzY29yZWQga2V5cyB0byBjYW1lbGl6ZWQKLSAgICBvciBvdGhlciBnZW5l
cmFsLXB1cnBvc2Ugbm9ybWFsaXphdGlvbnMuCi0KLSAgICBFeGFtcGxlCi0KLSAgICBgYGBqYXZh
c2NyaXB0Ci0gICAgQXBwLkFwcGxpY2F0aW9uU2VyaWFsaXplciA9IERTLkpTT05TZXJpYWxpemVy
LmV4dGVuZCh7Ci0gICAgICBub3JtYWxpemU6IGZ1bmN0aW9uKHR5cGUsIGhhc2gpIHsKLSAgICAg
ICAgdmFyIGZpZWxkcyA9IEVtYmVyLmdldCh0eXBlLCAnZmllbGRzJyk7Ci0gICAgICAgIGZpZWxk
cy5mb3JFYWNoKGZ1bmN0aW9uKGZpZWxkKSB7Ci0gICAgICAgICAgdmFyIHBheWxvYWRGaWVsZCA9
IEVtYmVyLlN0cmluZy51bmRlcnNjb3JlKGZpZWxkKTsKLSAgICAgICAgICBpZiAoZmllbGQgPT09
IHBheWxvYWRGaWVsZCkgeyByZXR1cm47IH0KLQotICAgICAgICAgIGhhc2hbZmllbGRdID0gaGFz
aFtwYXlsb2FkRmllbGRdOwotICAgICAgICAgIGRlbGV0ZSBoYXNoW3BheWxvYWRGaWVsZF07Ci0g
ICAgICAgIH0pOwotICAgICAgICByZXR1cm4gdGhpcy5fc3VwZXIuYXBwbHkodGhpcywgYXJndW1l
bnRzKTsKLSAgICAgIH0KLSAgICB9KTsKLSAgICBgYGAKLQotICAgIEBtZXRob2Qgbm9ybWFsaXpl
Ci0gICAgQHBhcmFtIHtzdWJjbGFzcyBvZiBEUy5Nb2RlbH0gdHlwZQotICAgIEBwYXJhbSB7T2Jq
ZWN0fSBoYXNoCi0gICAgQHJldHVybiB7T2JqZWN0fQotICAqLwotICBub3JtYWxpemU6IGZ1bmN0
aW9uKHR5cGUsIGhhc2gpIHsKLSAgICBpZiAoIWhhc2gpIHsgcmV0dXJuIGhhc2g7IH0KLQotICAg
IHRoaXMuYXBwbHlUcmFuc2Zvcm1zKHR5cGUsIGhhc2gpOwotICAgIHJldHVybiBoYXNoOwotICB9
LAotCi0gIC8vIFNFUklBTElaRQotICAvKioKLSAgICBDYWxsZWQgd2hlbiBhIHJlY29yZCBpcyBz
YXZlZCBpbiBvcmRlciB0byBjb252ZXJ0IHRoZQotICAgIHJlY29yZCBpbnRvIEpTT04uCi0KLSAg
ICBCeSBkZWZhdWx0LCBpdCBjcmVhdGVzIGEgSlNPTiBvYmplY3Qgd2l0aCBhIGtleSBmb3IKLSAg
ICBlYWNoIGF0dHJpYnV0ZSBhbmQgYmVsb25nc1RvIHJlbGF0aW9uc2hpcC4KLQotICAgIEZvciBl
eGFtcGxlLCBjb25zaWRlciB0aGlzIG1vZGVsOgotCi0gICAgYGBgamF2YXNjcmlwdAotICAgIEFw
cC5Db21tZW50ID0gRFMuTW9kZWwuZXh0ZW5kKHsKLSAgICAgIHRpdGxlOiBEUy5hdHRyKCksCi0g
ICAgICBib2R5OiBEUy5hdHRyKCksCi0KLSAgICAgIGF1dGhvcjogRFMuYmVsb25nc1RvKCd1c2Vy
JykKLSAgICB9KTsKLSAgICBgYGAKLQotICAgIFRoZSBkZWZhdWx0IHNlcmlhbGl6YXRpb24gd291
bGQgY3JlYXRlIGEgSlNPTiBvYmplY3QgbGlrZToKLQotICAgIGBgYGphdmFzY3JpcHQKLSAgICB7
Ci0gICAgICAidGl0bGUiOiAiUmFpbHMgaXMgdW5hZ2kiLAotICAgICAgImJvZHkiOiAiUmFpbHM/
IE9tYWthc2U/IE9fTyIsCi0gICAgICAiYXV0aG9yIjogMTIKLSAgICB9Ci0gICAgYGBgCi0KLSAg
ICBCeSBkZWZhdWx0LCBhdHRyaWJ1dGVzIGFyZSBwYXNzZWQgdGhyb3VnaCBhcy1pcywgdW5sZXNz
Ci0gICAgeW91IHNwZWNpZmllZCBhbiBhdHRyaWJ1dGUgdHlwZSAoYERTLmF0dHIoJ2RhdGUnKWAp
LiBJZgotICAgIHlvdSBzcGVjaWZ5IGEgdHJhbnNmb3JtLCB0aGUgSmF2YVNjcmlwdCB2YWx1ZSB3
aWxsIGJlCi0gICAgc2VyaWFsaXplZCB3aGVuIGluc2VydGVkIGludG8gdGhlIEpTT04gaGFzaC4K
LQotICAgIEJ5IGRlZmF1bHQsIGJlbG9uZ3MtdG8gcmVsYXRpb25zaGlwcyBhcmUgY29udmVydGVk
IGludG8KLSAgICBJRHMgd2hlbiBpbnNlcnRlZCBpbnRvIHRoZSBKU09OIGhhc2guCi0KLSAgICAj
IyBJRHMKLQotICAgIGBzZXJpYWxpemVgIHRha2VzIGFuIG9wdGlvbnMgaGFzaCB3aXRoIGEgc2lu
Z2xlIG9wdGlvbjoKLSAgICBgaW5jbHVkZUlkYC4gSWYgdGhpcyBvcHRpb24gaXMgYHRydWVgLCBg
c2VyaWFsaXplYCB3aWxsLAotICAgIGJ5IGRlZmF1bHQgaW5jbHVkZSB0aGUgSUQgaW4gdGhlIEpT
T04gb2JqZWN0IGl0IGJ1aWxkcy4KLQotICAgIFRoZSBhZGFwdGVyIHBhc3NlcyBpbiBgaW5jbHVk
ZUlkOiB0cnVlYCB3aGVuIHNlcmlhbGl6aW5nCi0gICAgYSByZWNvcmQgZm9yIGBjcmVhdGVSZWNv
cmRgLCBidXQgbm90IGZvciBgdXBkYXRlUmVjb3JkYC4KLQotICAgICMjIEN1c3RvbWl6YXRpb24K
LQotICAgIFlvdXIgc2VydmVyIG1heSBleHBlY3QgYSBkaWZmZXJlbnQgSlNPTiBmb3JtYXQgdGhh
biB0aGUKLSAgICBidWlsdC1pbiBzZXJpYWxpemF0aW9uIGZvcm1hdC4KLQotICAgIEluIHRoYXQg
Y2FzZSwgeW91IGNhbiBpbXBsZW1lbnQgYHNlcmlhbGl6ZWAgeW91cnNlbGYgYW5kCi0gICAgcmV0
dXJuIGEgSlNPTiBoYXNoIG9mIHlvdXIgY2hvb3NpbmcuCi0KLSAgICBgYGBqYXZhc2NyaXB0Ci0g
ICAgQXBwLlBvc3RTZXJpYWxpemVyID0gRFMuSlNPTlNlcmlhbGl6ZXIuZXh0ZW5kKHsKLSAgICAg
IHNlcmlhbGl6ZTogZnVuY3Rpb24ocG9zdCwgb3B0aW9ucykgewotICAgICAgICB2YXIganNvbiA9
IHsKLSAgICAgICAgICBQT1NUX1RUTDogcG9zdC5nZXQoJ3RpdGxlJyksCi0gICAgICAgICAgUE9T
VF9CRFk6IHBvc3QuZ2V0KCdib2R5JyksCi0gICAgICAgICAgUE9TVF9DTVM6IHBvc3QuZ2V0KCdj
b21tZW50cycpLm1hcFByb3BlcnR5KCdpZCcpCi0gICAgICAgIH0KLQotICAgICAgICBpZiAob3B0
aW9ucy5pbmNsdWRlSWQpIHsKLSAgICAgICAgICBqc29uLlBPU1RfSURfID0gcG9zdC5nZXQoJ2lk
Jyk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4ganNvbjsKLSAgICAgIH0KLSAgICB9KTsK
LSAgICBgYGAKLQotICAgICMjIEN1c3RvbWl6aW5nIGFuIEFwcC1XaWRlIFNlcmlhbGl6ZXIKLQot
ICAgIElmIHlvdSB3YW50IHRvIGRlZmluZSBhIHNlcmlhbGl6ZXIgZm9yIHlvdXIgZW50aXJlCi0g
ICAgYXBwbGljYXRpb24sIHlvdSdsbCBwcm9iYWJseSB3YW50IHRvIHVzZSBgZWFjaEF0dHJpYnV0
ZWAKLSAgICBhbmQgYGVhY2hSZWxhdGlvbnNoaXBgIG9uIHRoZSByZWNvcmQuCi0KLSAgICBgYGBq
YXZhc2NyaXB0Ci0gICAgQXBwLkFwcGxpY2F0aW9uU2VyaWFsaXplciA9IERTLkpTT05TZXJpYWxp
emVyLmV4dGVuZCh7Ci0gICAgICBzZXJpYWxpemU6IGZ1bmN0aW9uKHJlY29yZCwgb3B0aW9ucykg
ewotICAgICAgICB2YXIganNvbiA9IHt9OwotCi0gICAgICAgIHJlY29yZC5lYWNoQXR0cmlidXRl
KGZ1bmN0aW9uKG5hbWUpIHsKLSAgICAgICAgICBqc29uW3NlcnZlckF0dHJpYnV0ZU5hbWUobmFt
ZSldID0gcmVjb3JkLmdldChuYW1lKTsKLSAgICAgICAgfSkKLQotICAgICAgICByZWNvcmQuZWFj
aFJlbGF0aW9uc2hpcChmdW5jdGlvbihuYW1lLCByZWxhdGlvbnNoaXApIHsKLSAgICAgICAgICBp
ZiAocmVsYXRpb25zaGlwLmtpbmQgPT09ICdoYXNNYW55JykgewotICAgICAgICAgICAganNvbltz
ZXJ2ZXJIYXNNYW55TmFtZShuYW1lKV0gPSByZWNvcmQuZ2V0KG5hbWUpLm1hcEJ5KCdpZCcpOwot
ICAgICAgICAgIH0KLSAgICAgICAgfSk7Ci0KLSAgICAgICAgaWYgKG9wdGlvbnMuaW5jbHVkZUlk
KSB7Ci0gICAgICAgICAganNvbi5JRF8gPSByZWNvcmQuZ2V0KCdpZCcpOwotICAgICAgICB9Ci0K
LSAgICAgICAgcmV0dXJuIGpzb247Ci0gICAgICB9Ci0gICAgfSk7Ci0KLSAgICBmdW5jdGlvbiBz
ZXJ2ZXJBdHRyaWJ1dGVOYW1lKGF0dHJpYnV0ZSkgewotICAgICAgcmV0dXJuIGF0dHJpYnV0ZS51
bmRlcnNjb3JlKCkudG9VcHBlckNhc2UoKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBzZXJ2ZXJI
YXNNYW55TmFtZShuYW1lKSB7Ci0gICAgICByZXR1cm4gc2VydmVyQXR0cmlidXRlTmFtZShuYW1l
LnNpbmd1bGFyaXplKCkpICsgIl9JRFMiOwotICAgIH0KLSAgICBgYGAKLQotICAgIFRoaXMgc2Vy
aWFsaXplciB3aWxsIGdlbmVyYXRlIEpTT04gdGhhdCBsb29rcyBsaWtlIHRoaXM6Ci0KLSAgICBg
YGBqYXZhc2NyaXB0Ci0gICAgewotICAgICAgIlRJVExFIjogIlJhaWxzIGlzIG9tYWthc2UiLAot
ICAgICAgIkJPRFkiOiAiWWVwLiBPbWFrYXNlLiIsCi0gICAgICAiQ09NTUVOVF9JRFMiOiBbIDEs
IDIsIDMgXQotICAgIH0KLSAgICBgYGAKLQotICAgICMjIFR3ZWFraW5nIHRoZSBEZWZhdWx0IEpT
T04KLQotICAgIElmIHlvdSBqdXN0IHdhbnQgdG8gZG8gc29tZSBzbWFsbCB0d2Vha3Mgb24gdGhl
IGRlZmF1bHQgSlNPTiwKLSAgICB5b3UgY2FuIGNhbGwgc3VwZXIgZmlyc3QgYW5kIG1ha2UgdGhl
IHR3ZWFrcyBvbiB0aGUgcmV0dXJuZWQKLSAgICBKU09OLgotCi0gICAgYGBgamF2YXNjcmlwdAot
ICAgIEFwcC5Qb3N0U2VyaWFsaXplciA9IERTLkpTT05TZXJpYWxpemVyLmV4dGVuZCh7Ci0gICAg
ICBzZXJpYWxpemU6IGZ1bmN0aW9uKHJlY29yZCwgb3B0aW9ucykgewotICAgICAgICB2YXIganNv
biA9IHRoaXMuX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7Ci0KLSAgICAgICAganNvbi5z
dWJqZWN0ID0ganNvbi50aXRsZTsKLSAgICAgICAgZGVsZXRlIGpzb24udGl0bGU7Ci0KLSAgICAg
ICAgcmV0dXJuIGpzb247Ci0gICAgICB9Ci0gICAgfSk7Ci0gICAgYGBgCi0KLSAgICBAbWV0aG9k
IHNlcmlhbGl6ZQotICAgIEBwYXJhbSB7c3ViY2xhc3Mgb2YgRFMuTW9kZWx9IHJlY29yZAotICAg
IEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zCi0gICAgQHJldHVybiB7T2JqZWN0fSBqc29uCi0gICov
Ci0gIHNlcmlhbGl6ZTogZnVuY3Rpb24ocmVjb3JkLCBvcHRpb25zKSB7Ci0gICAgdmFyIGpzb24g
PSB7fTsKLQotICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMuaW5jbHVkZUlkKSB7Ci0gICAgICB2
YXIgaWQgPSBnZXQocmVjb3JkLCAnaWQnKTsKLQotICAgICAgaWYgKGlkKSB7Ci0gICAgICAgIGpz
b25bZ2V0KHRoaXMsICdwcmltYXJ5S2V5JyldID0gaWQ7Ci0gICAgICB9Ci0gICAgfQotCi0gICAg
cmVjb3JkLmVhY2hBdHRyaWJ1dGUoZnVuY3Rpb24oa2V5LCBhdHRyaWJ1dGUpIHsKLSAgICAgIHRo
aXMuc2VyaWFsaXplQXR0cmlidXRlKHJlY29yZCwganNvbiwga2V5LCBhdHRyaWJ1dGUpOwotICAg
IH0sIHRoaXMpOwotCi0gICAgcmVjb3JkLmVhY2hSZWxhdGlvbnNoaXAoZnVuY3Rpb24oa2V5LCBy
ZWxhdGlvbnNoaXApIHsKLSAgICAgIGlmIChyZWxhdGlvbnNoaXAua2luZCA9PT0gJ2JlbG9uZ3NU
bycpIHsKLSAgICAgICAgdGhpcy5zZXJpYWxpemVCZWxvbmdzVG8ocmVjb3JkLCBqc29uLCByZWxh
dGlvbnNoaXApOwotICAgICAgfSBlbHNlIGlmIChyZWxhdGlvbnNoaXAua2luZCA9PT0gJ2hhc01h
bnknKSB7Ci0gICAgICAgIHRoaXMuc2VyaWFsaXplSGFzTWFueShyZWNvcmQsIGpzb24sIHJlbGF0
aW9uc2hpcCk7Ci0gICAgICB9Ci0gICAgfSwgdGhpcyk7Ci0KLSAgICByZXR1cm4ganNvbjsKLSAg
fSwKLQotICAvKioKLSAgIGBzZXJpYWxpemVBdHRyaWJ1dGVgIGNhbiBiZSB1c2VkIHRvIGN1c3Rv
bWl6ZSBob3cgYERTLmF0dHJgCi0gICBwcm9wZXJ0aWVzIGFyZSBzZXJpYWxpemVkCi0KLSAgIEZv
ciBleGFtcGxlIGlmIHlvdSB3YW50ZWQgdG8gZW5zdXJlIGFsbCB5b3UgYXR0cmlidXRlcyB3ZXJl
IGFsd2F5cwotICAgc2VyaWFsaXplZCBhcyBwcm9wZXJ0aWVzIG9uIGFuIGBhdHRyaWJ1dGVzYCBv
YmplY3QgeW91IGNvdWxkCi0gICB3cml0ZToKLQotICAgYGBgamF2YXNjcmlwdAotICAgQXBwLkFw
cGxpY2F0aW9uU2VyaWFsaXplciA9IERTLkpTT05TZXJpYWxpemVyLmV4dGVuZCh7Ci0gICAgIHNl
cmlhbGl6ZUF0dHJpYnV0ZTogZnVuY3Rpb24ocmVjb3JkLCBqc29uLCBrZXksIGF0dHJpYnV0ZXMp
IHsKLSAgICAgICBqc29uLmF0dHJpYnV0ZXMgPSBqc29uLmF0dHJpYnV0ZXMgfHwge307Ci0gICAg
ICAgdGhpcy5fc3VwZXIocmVjb3JkLCBqc29uLmF0dHJpYnV0ZXMsIGtleSwgYXR0cmlidXRlcyk7
Ci0gICAgIH0KLSAgIH0pOwotICAgYGBgCi0KLSAgIEBtZXRob2Qgc2VyaWFsaXplQXR0cmlidXRl
Ci0gICBAcGFyYW0ge0RTLk1vZGVsfSByZWNvcmQKLSAgIEBwYXJhbSB7T2JqZWN0fSBqc29uCi0g
ICBAcGFyYW0ge1N0cmluZ30ga2V5Ci0gICBAcGFyYW0ge09iamVjdH0gYXR0cmlidXRlCi0gICov
Ci0gIHNlcmlhbGl6ZUF0dHJpYnV0ZTogZnVuY3Rpb24ocmVjb3JkLCBqc29uLCBrZXksIGF0dHJp
YnV0ZSkgewotICAgIHZhciBhdHRycyA9IGdldCh0aGlzLCAnYXR0cnMnKTsKLSAgICB2YXIgdmFs
dWUgPSBnZXQocmVjb3JkLCBrZXkpLCB0eXBlID0gYXR0cmlidXRlLnR5cGU7Ci0KLSAgICBpZiAo
dHlwZSkgewotICAgICAgdmFyIHRyYW5zZm9ybSA9IHRoaXMudHJhbnNmb3JtRm9yKHR5cGUpOwot
ICAgICAgdmFsdWUgPSB0cmFuc2Zvcm0uc2VyaWFsaXplKHZhbHVlKTsKLSAgICB9Ci0KLSAgICAv
LyBpZiBwcm92aWRlZCwgdXNlIHRoZSBtYXBwaW5nIHByb3ZpZGVkIGJ5IGBhdHRyc2AgaW4KLSAg
ICAvLyB0aGUgc2VyaWFsaXplcgotICAgIGtleSA9IGF0dHJzICYmIGF0dHJzW2tleV0gfHwgKHRo
aXMua2V5Rm9yQXR0cmlidXRlID8gdGhpcy5rZXlGb3JBdHRyaWJ1dGUoa2V5KSA6IGtleSk7Ci0K
LSAgICBqc29uW2tleV0gPSB2YWx1ZTsKLSAgfSwKLQotICAvKioKLSAgIGBzZXJpYWxpemVCZWxv
bmdzVG9gIGNhbiBiZSB1c2VkIHRvIGN1c3RvbWl6ZSBob3cgYERTLmJlbG9uZ3NUb2AKLSAgIHBy
b3BlcnRpZXMgYXJlIHNlcmlhbGl6ZWQuCi0KLSAgIEV4YW1wbGUKLQotICAgYGBgamF2YXNjcmlw
dAotICAgQXBwLlBvc3RTZXJpYWxpemVyID0gRFMuSlNPTlNlcmlhbGl6ZXIuZXh0ZW5kKHsKLSAg
ICAgc2VyaWFsaXplQmVsb25nc1RvOiBmdW5jdGlvbihyZWNvcmQsIGpzb24sIHJlbGF0aW9uc2hp
cCkgewotICAgICAgIHZhciBrZXkgPSByZWxhdGlvbnNoaXAua2V5OwotCi0gICAgICAgdmFyIGJl
bG9uZ3NUbyA9IGdldChyZWNvcmQsIGtleSk7Ci0KLSAgICAgICBrZXkgPSB0aGlzLmtleUZvclJl
bGF0aW9uc2hpcCA/IHRoaXMua2V5Rm9yUmVsYXRpb25zaGlwKGtleSwgImJlbG9uZ3NUbyIpIDog
a2V5OwotCi0gICAgICAganNvbltrZXldID0gRW1iZXIuaXNOb25lKGJlbG9uZ3NUbykgPyBiZWxv
bmdzVG8gOiBiZWxvbmdzVG8udG9KU09OKCk7Ci0gICAgIH0KLSAgIH0pOwotICAgYGBgCi0KLSAg
IEBtZXRob2Qgc2VyaWFsaXplQmVsb25nc1RvCi0gICBAcGFyYW0ge0RTLk1vZGVsfSByZWNvcmQK
LSAgIEBwYXJhbSB7T2JqZWN0fSBqc29uCi0gICBAcGFyYW0ge09iamVjdH0gcmVsYXRpb25zaGlw
Ci0gICovCi0gIHNlcmlhbGl6ZUJlbG9uZ3NUbzogZnVuY3Rpb24ocmVjb3JkLCBqc29uLCByZWxh
dGlvbnNoaXApIHsKLSAgICB2YXIga2V5ID0gcmVsYXRpb25zaGlwLmtleTsKLQotICAgIHZhciBi
ZWxvbmdzVG8gPSBnZXQocmVjb3JkLCBrZXkpOwotCi0gICAga2V5ID0gdGhpcy5rZXlGb3JSZWxh
dGlvbnNoaXAgPyB0aGlzLmtleUZvclJlbGF0aW9uc2hpcChrZXksICJiZWxvbmdzVG8iKSA6IGtl
eTsKLQotICAgIGlmIChpc05vbmUoYmVsb25nc1RvKSkgewotICAgICAganNvbltrZXldID0gYmVs
b25nc1RvOwotICAgIH0gZWxzZSB7Ci0gICAgICBqc29uW2tleV0gPSBnZXQoYmVsb25nc1RvLCAn
aWQnKTsKLSAgICB9Ci0KLSAgICBpZiAocmVsYXRpb25zaGlwLm9wdGlvbnMucG9seW1vcnBoaWMp
IHsKLSAgICAgIHRoaXMuc2VyaWFsaXplUG9seW1vcnBoaWNUeXBlKHJlY29yZCwganNvbiwgcmVs
YXRpb25zaGlwKTsKLSAgICB9Ci0gIH0sCi0KLSAgLyoqCi0gICBgc2VyaWFsaXplSGFzTWFueWAg
Y2FuIGJlIHVzZWQgdG8gY3VzdG9taXplIGhvdyBgRFMuaGFzTWFueWAKLSAgIHByb3BlcnRpZXMg
YXJlIHNlcmlhbGl6ZWQuCi0KLSAgIEV4YW1wbGUKLQotICAgYGBgamF2YXNjcmlwdAotICAgQXBw
LlBvc3RTZXJpYWxpemVyID0gRFMuSlNPTlNlcmlhbGl6ZXIuZXh0ZW5kKHsKLSAgICAgc2VyaWFs
aXplSGFzTWFueTogZnVuY3Rpb24ocmVjb3JkLCBqc29uLCByZWxhdGlvbnNoaXApIHsKLSAgICAg
ICB2YXIga2V5ID0gcmVsYXRpb25zaGlwLmtleTsKLSAgICAgICBpZiAoa2V5ID09PSAnY29tbWVu
dHMnKSB7Ci0gICAgICAgICByZXR1cm47Ci0gICAgICAgfSBlbHNlIHsKLSAgICAgICAgIHRoaXMu
X3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7Ci0gICAgICAgfQotICAgICB9Ci0gICB9KTsK
LSAgIGBgYAotCi0gICBAbWV0aG9kIHNlcmlhbGl6ZUhhc01hbnkKLSAgIEBwYXJhbSB7RFMuTW9k
ZWx9IHJlY29yZAotICAgQHBhcmFtIHtPYmplY3R9IGpzb24KLSAgIEBwYXJhbSB7T2JqZWN0fSBy
ZWxhdGlvbnNoaXAKLSAgKi8KLSAgc2VyaWFsaXplSGFzTWFueTogZnVuY3Rpb24ocmVjb3JkLCBq
c29uLCByZWxhdGlvbnNoaXApIHsKLSAgICB2YXIga2V5ID0gcmVsYXRpb25zaGlwLmtleTsKLQot
ICAgIHZhciByZWxhdGlvbnNoaXBUeXBlID0gRFMuUmVsYXRpb25zaGlwQ2hhbmdlLmRldGVybWlu
ZVJlbGF0aW9uc2hpcFR5cGUocmVjb3JkLmNvbnN0cnVjdG9yLCByZWxhdGlvbnNoaXApOwotCi0g
ICAgaWYgKHJlbGF0aW9uc2hpcFR5cGUgPT09ICdtYW55VG9Ob25lJyB8fCByZWxhdGlvbnNoaXBU
eXBlID09PSAnbWFueVRvTWFueScpIHsKLSAgICAgIGpzb25ba2V5XSA9IGdldChyZWNvcmQsIGtl
eSkubWFwQnkoJ2lkJyk7Ci0gICAgICAvLyBUT0RPIHN1cHBvcnQgZm9yIHBvbHltb3JwaGljIG1h
bnlUb05vbmUgYW5kIG1hbnlUb01hbnkgcmVsYXRpb25zaGlwcwotICAgIH0KLSAgfSwKLQotICAv
KioKLSAgICBZb3UgY2FuIHVzZSB0aGlzIG1ldGhvZCB0byBjdXN0b21pemUgaG93IHBvbHltb3Jw
aGljIG9iamVjdHMgYXJlCi0gICAgc2VyaWFsaXplZC4gT2JqZWN0cyBhcmUgY29uc2lkZXJlZCB0
byBiZSBwb2x5bW9ycGhpYyBpZgotICAgIGB7cG9seW1vcnBoaWM6IHRydWV9YCBpcyBwYXNzIGFz
IHRoZSBzZWNvbmQgYXJndW1lbnQgdG8gdGhlCi0gICAgYERTLmJlbG9uZ3NUb2AgZnVuY3Rpb24u
Ci0KLSAgICBFeGFtcGxlCi0KLSAgICBgYGBqYXZhc2NyaXB0Ci0gICAgQXBwLkNvbW1lbnRTZXJp
YWxpemVyID0gRFMuSlNPTlNlcmlhbGl6ZXIuZXh0ZW5kKHsKLSAgICAgIHNlcmlhbGl6ZVBvbHlt
b3JwaGljVHlwZTogZnVuY3Rpb24ocmVjb3JkLCBqc29uLCByZWxhdGlvbnNoaXApIHsKLSAgICAg
ICAgdmFyIGtleSA9IHJlbGF0aW9uc2hpcC5rZXksCi0gICAgICAgICAgICBiZWxvbmdzVG8gPSBn
ZXQocmVjb3JkLCBrZXkpOwotICAgICAgICBrZXkgPSB0aGlzLmtleUZvckF0dHJpYnV0ZSA/IHRo
aXMua2V5Rm9yQXR0cmlidXRlKGtleSkgOiBrZXk7Ci0gICAgICAgIGpzb25ba2V5ICsgIl90eXBl
Il0gPSBiZWxvbmdzVG8uY29uc3RydWN0b3IudHlwZUtleTsKLSAgICAgIH0KLSAgICB9KTsKLSAg
IGBgYAotCi0gICAgQG1ldGhvZCBzZXJpYWxpemVQb2x5bW9ycGhpY1R5cGUKLSAgICBAcGFyYW0g
e0RTLk1vZGVsfSByZWNvcmQKLSAgICBAcGFyYW0ge09iamVjdH0ganNvbgotICAgIEBwYXJhbSB7
T2JqZWN0fSByZWxhdGlvbnNoaXAKLSAgKi8KLSAgc2VyaWFsaXplUG9seW1vcnBoaWNUeXBlOiBF
bWJlci5LLAotCi0gIC8vIEVYVFJBQ1QKLQotICAvKioKLSAgICBUaGUgYGV4dHJhY3RgIG1ldGhv
ZCBpcyB1c2VkIHRvIGRlc2VyaWFsaXplIHBheWxvYWQgZGF0YSBmcm9tIHRoZQotICAgIHNlcnZl
ci4gQnkgZGVmYXVsdCB0aGUgYEpTT05TZXJpYWxpemVyYCBkb2VzIG5vdCBwdXNoIHRoZSByZWNv
cmRzCi0gICAgaW50byB0aGUgc3RvcmUuIEhvd2V2ZXIgcmVjb3JkcyB0aGF0IHN1YmNsYXNzIGBK
U09OU2VyaWFsaXplcmAKLSAgICBzdWNoIGFzIHRoZSBgUkVTVFNlcmlhbGl6ZXJgIG1heSBwdXNo
IHJlY29yZHMgaW50byB0aGUgc3RvcmUgYXMKLSAgICBwYXJ0IG9mIHRoZSBleHRyYWN0IGNhbGwu
Ci0KLSAgICBUaGlzIG1ldGhvZCBkZWxlZ2F0ZXMgdG8gYSBtb3JlIHNwZWNpZmljIGV4dHJhY3Qg
bWV0aG9kIGJhc2VkIG9uCi0gICAgdGhlIGByZXF1ZXN0VHlwZWAuCi0KLSAgICBFeGFtcGxlCi0K
LSAgICBgYGBqYXZhc2NyaXB0Ci0gICAgdmFyIGdldCA9IEVtYmVyLmdldDsKLSAgICBzb2NrZXQu
b24oJ21lc3NhZ2UnLCBmdW5jdGlvbihtZXNzYWdlKSB7Ci0gICAgICB2YXIgbW9kZWxOYW1lID0g
bWVzc2FnZS5tb2RlbDsKLSAgICAgIHZhciBkYXRhID0gbWVzc2FnZS5kYXRhOwotICAgICAgdmFy
IHR5cGUgPSBzdG9yZS5tb2RlbEZvcihtb2RlbE5hbWUpOwotICAgICAgdmFyIHNlcmlhbGl6ZXIg
PSBzdG9yZS5zZXJpYWxpemVyRm9yKHR5cGUudHlwZUtleSk7Ci0gICAgICB2YXIgcmVjb3JkID0g
c2VyaWFsaXplci5leHRyYWN0KHN0b3JlLCB0eXBlLCBkYXRhLCBnZXQoZGF0YSwgJ2lkJyksICdz
aW5nbGUnKTsKLSAgICAgIHN0b3JlLnB1c2gobW9kZWxOYW1lLCByZWNvcmQpOwotICAgIH0pOwot
ICAgIGBgYAotCi0gICAgQG1ldGhvZCBleHRyYWN0Ci0gICAgQHBhcmFtIHtEUy5TdG9yZX0gc3Rv
cmUKLSAgICBAcGFyYW0ge3N1YmNsYXNzIG9mIERTLk1vZGVsfSB0eXBlCi0gICAgQHBhcmFtIHtP
YmplY3R9IHBheWxvYWQKLSAgICBAcGFyYW0ge1N0cmluZyBvciBOdW1iZXJ9IGlkCi0gICAgQHBh
cmFtIHtTdHJpbmd9IHJlcXVlc3RUeXBlCi0gICAgQHJldHVybiB7T2JqZWN0fSBqc29uIFRoZSBk
ZXNlcmlhbGl6ZWQgcGF5bG9hZAotICAqLwotICBleHRyYWN0OiBmdW5jdGlvbihzdG9yZSwgdHlw
ZSwgcGF5bG9hZCwgaWQsIHJlcXVlc3RUeXBlKSB7Ci0gICAgdGhpcy5leHRyYWN0TWV0YShzdG9y
ZSwgdHlwZSwgcGF5bG9hZCk7Ci0KLSAgICB2YXIgc3BlY2lmaWNFeHRyYWN0ID0gImV4dHJhY3Qi
ICsgcmVxdWVzdFR5cGUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyByZXF1ZXN0VHlwZS5zdWJz
dHIoMSk7Ci0gICAgcmV0dXJuIHRoaXNbc3BlY2lmaWNFeHRyYWN0XShzdG9yZSwgdHlwZSwgcGF5
bG9hZCwgaWQsIHJlcXVlc3RUeXBlKTsKLSAgfSwKLQotICAvKioKLSAgICBgZXh0cmFjdEZpbmRB
bGxgIGlzIGEgaG9vayBpbnRvIHRoZSBleHRyYWN0IG1ldGhvZCB1c2VkIHdoZW4gYQotICAgIGNh
bGwgaXMgbWFkZSB0byBgRFMuU3RvcmUjZmluZEFsbGAuIEJ5IGRlZmF1bHQgdGhpcyBtZXRob2Qg
aXMgYW4KLSAgICBhbGlhcyBmb3IgW2V4dHJhY3RBcnJheV0oI21ldGhvZF9leHRyYWN0QXJyYXkp
LgotCi0gICAgQG1ldGhvZCBleHRyYWN0RmluZEFsbAotICAgIEBwYXJhbSB7RFMuU3RvcmV9IHN0
b3JlCi0gICAgQHBhcmFtIHtzdWJjbGFzcyBvZiBEUy5Nb2RlbH0gdHlwZQotICAgIEBwYXJhbSB7
T2JqZWN0fSBwYXlsb2FkCi0gICAgQHJldHVybiB7QXJyYXl9IGFycmF5IEFuIGFycmF5IG9mIGRl
c2VyaWFsaXplZCBvYmplY3RzCi0gICovCi0gIGV4dHJhY3RGaW5kQWxsOiBhbGlhc01ldGhvZCgn
ZXh0cmFjdEFycmF5JyksCi0gIC8qKgotICAgIGBleHRyYWN0RmluZFF1ZXJ5YCBpcyBhIGhvb2sg
aW50byB0aGUgZXh0cmFjdCBtZXRob2QgdXNlZCB3aGVuIGEKLSAgICBjYWxsIGlzIG1hZGUgdG8g
YERTLlN0b3JlI2ZpbmRRdWVyeWAuIEJ5IGRlZmF1bHQgdGhpcyBtZXRob2QgaXMgYW4KLSAgICBh
bGlhcyBmb3IgW2V4dHJhY3RBcnJheV0oI21ldGhvZF9leHRyYWN0QXJyYXkpLgotCi0gICAgQG1l
dGhvZCBleHRyYWN0RmluZFF1ZXJ5Ci0gICAgQHBhcmFtIHtEUy5TdG9yZX0gc3RvcmUKLSAgICBA
cGFyYW0ge3N1YmNsYXNzIG9mIERTLk1vZGVsfSB0eXBlCi0gICAgQHBhcmFtIHtPYmplY3R9IHBh
eWxvYWQKLSAgICBAcmV0dXJuIHtBcnJheX0gYXJyYXkgQW4gYXJyYXkgb2YgZGVzZXJpYWxpemVk
IG9iamVjdHMKLSAgKi8KLSAgZXh0cmFjdEZpbmRRdWVyeTogYWxpYXNNZXRob2QoJ2V4dHJhY3RB
cnJheScpLAotICAvKioKLSAgICBgZXh0cmFjdEZpbmRNYW55YCBpcyBhIGhvb2sgaW50byB0aGUg
ZXh0cmFjdCBtZXRob2QgdXNlZCB3aGVuIGEKLSAgICBjYWxsIGlzIG1hZGUgdG8gYERTLlN0b3Jl
I2ZpbmRNYW55YC4gQnkgZGVmYXVsdCB0aGlzIG1ldGhvZCBpcwotICAgIGFsaWFzIGZvciBbZXh0
cmFjdEFycmF5XSgjbWV0aG9kX2V4dHJhY3RBcnJheSkuCi0KLSAgICBAbWV0aG9kIGV4dHJhY3RG
aW5kTWFueQotICAgIEBwYXJhbSB7RFMuU3RvcmV9IHN0b3JlCi0gICAgQHBhcmFtIHtzdWJjbGFz
cyBvZiBEUy5Nb2RlbH0gdHlwZQotICAgIEBwYXJhbSB7T2JqZWN0fSBwYXlsb2FkCi0gICAgQHJl
dHVybiB7QXJyYXl9IGFycmF5IEFuIGFycmF5IG9mIGRlc2VyaWFsaXplZCBvYmplY3RzCi0gICov
Ci0gIGV4dHJhY3RGaW5kTWFueTogYWxpYXNNZXRob2QoJ2V4dHJhY3RBcnJheScpLAotICAvKioK
LSAgICBgZXh0cmFjdEZpbmRIYXNNYW55YCBpcyBhIGhvb2sgaW50byB0aGUgZXh0cmFjdCBtZXRo
b2QgdXNlZCB3aGVuIGEKLSAgICBjYWxsIGlzIG1hZGUgdG8gYERTLlN0b3JlI2ZpbmRIYXNNYW55
YC4gQnkgZGVmYXVsdCB0aGlzIG1ldGhvZCBpcwotICAgIGFsaWFzIGZvciBbZXh0cmFjdEFycmF5
XSgjbWV0aG9kX2V4dHJhY3RBcnJheSkuCi0KLSAgICBAbWV0aG9kIGV4dHJhY3RGaW5kSGFzTWFu
eQotICAgIEBwYXJhbSB7RFMuU3RvcmV9IHN0b3JlCi0gICAgQHBhcmFtIHtzdWJjbGFzcyBvZiBE
Uy5Nb2RlbH0gdHlwZQotICAgIEBwYXJhbSB7T2JqZWN0fSBwYXlsb2FkCi0gICAgQHJldHVybiB7
QXJyYXl9IGFycmF5IEFuIGFycmF5IG9mIGRlc2VyaWFsaXplZCBvYmplY3RzCi0gICovCi0gIGV4
dHJhY3RGaW5kSGFzTWFueTogYWxpYXNNZXRob2QoJ2V4dHJhY3RBcnJheScpLAotCi0gIC8qKgot
ICAgIGBleHRyYWN0Q3JlYXRlUmVjb3JkYCBpcyBhIGhvb2sgaW50byB0aGUgZXh0cmFjdCBtZXRo
b2QgdXNlZCB3aGVuIGEKLSAgICBjYWxsIGlzIG1hZGUgdG8gYERTLlN0b3JlI2NyZWF0ZVJlY29y
ZGAuIEJ5IGRlZmF1bHQgdGhpcyBtZXRob2QgaXMKLSAgICBhbGlhcyBmb3IgW2V4dHJhY3RTYXZl
XSgjbWV0aG9kX2V4dHJhY3RTYXZlKS4KLQotICAgIEBtZXRob2QgZXh0cmFjdENyZWF0ZVJlY29y
ZAotICAgIEBwYXJhbSB7RFMuU3RvcmV9IHN0b3JlCi0gICAgQHBhcmFtIHtzdWJjbGFzcyBvZiBE
Uy5Nb2RlbH0gdHlwZQotICAgIEBwYXJhbSB7T2JqZWN0fSBwYXlsb2FkCi0gICAgQHJldHVybiB7
T2JqZWN0fSBqc29uIFRoZSBkZXNlcmlhbGl6ZWQgcGF5bG9hZAotICAqLwotICBleHRyYWN0Q3Jl
YXRlUmVjb3JkOiBhbGlhc01ldGhvZCgnZXh0cmFjdFNhdmUnKSwKLSAgLyoqCi0gICAgYGV4dHJh
Y3RVcGRhdGVSZWNvcmRgIGlzIGEgaG9vayBpbnRvIHRoZSBleHRyYWN0IG1ldGhvZCB1c2VkIHdo
ZW4KLSAgICBhIGNhbGwgaXMgbWFkZSB0byBgRFMuU3RvcmUjdXBkYXRlYC4gQnkgZGVmYXVsdCB0
aGlzIG1ldGhvZCBpcyBhbGlhcwotICAgIGZvciBbZXh0cmFjdFNhdmVdKCNtZXRob2RfZXh0cmFj
dFNhdmUpLgotCi0gICAgQG1ldGhvZCBleHRyYWN0VXBkYXRlUmVjb3JkCi0gICAgQHBhcmFtIHtE
Uy5TdG9yZX0gc3RvcmUKLSAgICBAcGFyYW0ge3N1YmNsYXNzIG9mIERTLk1vZGVsfSB0eXBlCi0g
ICAgQHBhcmFtIHtPYmplY3R9IHBheWxvYWQKLSAgICBAcmV0dXJuIHtPYmplY3R9IGpzb24gVGhl
IGRlc2VyaWFsaXplZCBwYXlsb2FkCi0gICovCi0gIGV4dHJhY3RVcGRhdGVSZWNvcmQ6IGFsaWFz
TWV0aG9kKCdleHRyYWN0U2F2ZScpLAotICAvKioKLSAgICBgZXh0cmFjdERlbGV0ZVJlY29yZGAg
aXMgYSBob29rIGludG8gdGhlIGV4dHJhY3QgbWV0aG9kIHVzZWQgd2hlbgotICAgIGEgY2FsbCBp
cyBtYWRlIHRvIGBEUy5TdG9yZSNkZWxldGVSZWNvcmRgLiBCeSBkZWZhdWx0IHRoaXMgbWV0aG9k
IGlzCi0gICAgYWxpYXMgZm9yIFtleHRyYWN0U2F2ZV0oI21ldGhvZF9leHRyYWN0U2F2ZSkuCi0K
LSAgICBAbWV0aG9kIGV4dHJhY3REZWxldGVSZWNvcmQKLSAgICBAcGFyYW0ge0RTLlN0b3JlfSBz
dG9yZQotICAgIEBwYXJhbSB7c3ViY2xhc3Mgb2YgRFMuTW9kZWx9IHR5cGUKLSAgICBAcGFyYW0g
e09iamVjdH0gcGF5bG9hZAotICAgIEByZXR1cm4ge09iamVjdH0ganNvbiBUaGUgZGVzZXJpYWxp
emVkIHBheWxvYWQKLSAgKi8KLSAgZXh0cmFjdERlbGV0ZVJlY29yZDogYWxpYXNNZXRob2QoJ2V4
dHJhY3RTYXZlJyksCi0KLSAgLyoqCi0gICAgYGV4dHJhY3RGaW5kYCBpcyBhIGhvb2sgaW50byB0
aGUgZXh0cmFjdCBtZXRob2QgdXNlZCB3aGVuCi0gICAgYSBjYWxsIGlzIG1hZGUgdG8gYERTLlN0
b3JlI2ZpbmRgLiBCeSBkZWZhdWx0IHRoaXMgbWV0aG9kIGlzCi0gICAgYWxpYXMgZm9yIFtleHRy
YWN0U2luZ2xlXSgjbWV0aG9kX2V4dHJhY3RTaW5nbGUpLgotCi0gICAgQG1ldGhvZCBleHRyYWN0
RmluZAotICAgIEBwYXJhbSB7RFMuU3RvcmV9IHN0b3JlCi0gICAgQHBhcmFtIHtzdWJjbGFzcyBv
ZiBEUy5Nb2RlbH0gdHlwZQotICAgIEBwYXJhbSB7T2JqZWN0fSBwYXlsb2FkCi0gICAgQHJldHVy
biB7T2JqZWN0fSBqc29uIFRoZSBkZXNlcmlhbGl6ZWQgcGF5bG9hZAotICAqLwotICBleHRyYWN0
RmluZDogYWxpYXNNZXRob2QoJ2V4dHJhY3RTaW5nbGUnKSwKLSAgLyoqCi0gICAgYGV4dHJhY3RG
aW5kQmVsb25nc1RvYCBpcyBhIGhvb2sgaW50byB0aGUgZXh0cmFjdCBtZXRob2QgdXNlZCB3aGVu
Ci0gICAgYSBjYWxsIGlzIG1hZGUgdG8gYERTLlN0b3JlI2ZpbmRCZWxvbmdzVG9gLiBCeSBkZWZh
dWx0IHRoaXMgbWV0aG9kIGlzCi0gICAgYWxpYXMgZm9yIFtleHRyYWN0U2luZ2xlXSgjbWV0aG9k
X2V4dHJhY3RTaW5nbGUpLgotCi0gICAgQG1ldGhvZCBleHRyYWN0RmluZEJlbG9uZ3NUbwotICAg
IEBwYXJhbSB7RFMuU3RvcmV9IHN0b3JlCi0gICAgQHBhcmFtIHtzdWJjbGFzcyBvZiBEUy5Nb2Rl
bH0gdHlwZQotICAgIEBwYXJhbSB7T2JqZWN0fSBwYXlsb2FkCi0gICAgQHJldHVybiB7T2JqZWN0
fSBqc29uIFRoZSBkZXNlcmlhbGl6ZWQgcGF5bG9hZAotICAqLwotICBleHRyYWN0RmluZEJlbG9u
Z3NUbzogYWxpYXNNZXRob2QoJ2V4dHJhY3RTaW5nbGUnKSwKLSAgLyoqCi0gICAgYGV4dHJhY3RT
YXZlYCBpcyBhIGhvb2sgaW50byB0aGUgZXh0cmFjdCBtZXRob2QgdXNlZCB3aGVuIGEgY2FsbAot
ICAgIGlzIG1hZGUgdG8gYERTLk1vZGVsI3NhdmVgLiBCeSBkZWZhdWx0IHRoaXMgbWV0aG9kIGlz
IGFsaWFzCi0gICAgZm9yIFtleHRyYWN0U2luZ2xlXSgjbWV0aG9kX2V4dHJhY3RTaW5nbGUpLgot
Ci0gICAgQG1ldGhvZCBleHRyYWN0U2F2ZQotICAgIEBwYXJhbSB7RFMuU3RvcmV9IHN0b3JlCi0g
ICAgQHBhcmFtIHtzdWJjbGFzcyBvZiBEUy5Nb2RlbH0gdHlwZQotICAgIEBwYXJhbSB7T2JqZWN0
fSBwYXlsb2FkCi0gICAgQHJldHVybiB7T2JqZWN0fSBqc29uIFRoZSBkZXNlcmlhbGl6ZWQgcGF5
bG9hZAotICAqLwotICBleHRyYWN0U2F2ZTogYWxpYXNNZXRob2QoJ2V4dHJhY3RTaW5nbGUnKSwK
LQotICAvKioKLSAgICBgZXh0cmFjdFNpbmdsZWAgaXMgdXNlZCB0byBkZXNlcmlhbGl6ZSBhIHNp
bmdsZSByZWNvcmQgcmV0dXJuZWQKLSAgICBmcm9tIHRoZSBhZGFwdGVyLgotCi0gICAgRXhhbXBs
ZQotCi0gICAgYGBgamF2YXNjcmlwdAotICAgIEFwcC5Qb3N0U2VyaWFsaXplciA9IERTLkpTT05T
ZXJpYWxpemVyLmV4dGVuZCh7Ci0gICAgICBleHRyYWN0U2luZ2xlOiBmdW5jdGlvbihzdG9yZSwg
dHlwZSwgcGF5bG9hZCkgewotICAgICAgICBwYXlsb2FkLmNvbW1lbnRzID0gcGF5bG9hZC5fZW1i
ZWRkZWQuY29tbWVudDsKLSAgICAgICAgZGVsZXRlIHBheWxvYWQuX2VtYmVkZGVkOwotCi0gICAg
ICAgIHJldHVybiB0aGlzLl9zdXBlcihzdG9yZSwgdHlwZSwgcGF5bG9hZCk7Ci0gICAgICB9LAot
ICAgIH0pOwotICAgIGBgYAotCi0gICAgQG1ldGhvZCBleHRyYWN0U2luZ2xlCi0gICAgQHBhcmFt
IHtEUy5TdG9yZX0gc3RvcmUKLSAgICBAcGFyYW0ge3N1YmNsYXNzIG9mIERTLk1vZGVsfSB0eXBl
Ci0gICAgQHBhcmFtIHtPYmplY3R9IHBheWxvYWQKLSAgICBAcmV0dXJuIHtPYmplY3R9IGpzb24g
VGhlIGRlc2VyaWFsaXplZCBwYXlsb2FkCi0gICovCi0gIGV4dHJhY3RTaW5nbGU6IGZ1bmN0aW9u
KHN0b3JlLCB0eXBlLCBwYXlsb2FkKSB7Ci0gICAgcmV0dXJuIHRoaXMubm9ybWFsaXplKHR5cGUs
IHBheWxvYWQpOwotICB9LAotCi0gIC8qKgotICAgIGBleHRyYWN0QXJyYXlgIGlzIHVzZWQgdG8g
ZGVzZXJpYWxpemUgYW4gYXJyYXkgb2YgcmVjb3JkcwotICAgIHJldHVybmVkIGZyb20gdGhlIGFk
YXB0ZXIuCi0KLSAgICBFeGFtcGxlCi0KLSAgICBgYGBqYXZhc2NyaXB0Ci0gICAgQXBwLlBvc3RT
ZXJpYWxpemVyID0gRFMuSlNPTlNlcmlhbGl6ZXIuZXh0ZW5kKHsKLSAgICAgIGV4dHJhY3RBcnJh
eTogZnVuY3Rpb24oc3RvcmUsIHR5cGUsIHBheWxvYWQpIHsKLSAgICAgICAgcmV0dXJuIHBheWxv
YWQubWFwKGZ1bmN0aW9uKGpzb24pIHsKLSAgICAgICAgICByZXR1cm4gdGhpcy5leHRyYWN0U2lu
Z2xlKGpzb24pOwotICAgICAgICB9LCB0aGlzKTsKLSAgICAgIH0KLSAgICB9KTsKLSAgICBgYGAK
LQotICAgIEBtZXRob2QgZXh0cmFjdEFycmF5Ci0gICAgQHBhcmFtIHtEUy5TdG9yZX0gc3RvcmUK
LSAgICBAcGFyYW0ge3N1YmNsYXNzIG9mIERTLk1vZGVsfSB0eXBlCi0gICAgQHBhcmFtIHtPYmpl
Y3R9IHBheWxvYWQKLSAgICBAcmV0dXJuIHtBcnJheX0gYXJyYXkgQW4gYXJyYXkgb2YgZGVzZXJp
YWxpemVkIG9iamVjdHMKLSAgKi8KLSAgZXh0cmFjdEFycmF5OiBmdW5jdGlvbihzdG9yZSwgdHlw
ZSwgcGF5bG9hZCkgewotICAgIHJldHVybiB0aGlzLm5vcm1hbGl6ZSh0eXBlLCBwYXlsb2FkKTsK
LSAgfSwKLQotICAvKioKLSAgICBgZXh0cmFjdE1ldGFgIGlzIHVzZWQgdG8gZGVzZXJpYWxpemUg
YW55IG1ldGEgaW5mb3JtYXRpb24gaW4gdGhlCi0gICAgYWRhcHRlciBwYXlsb2FkLiBCeSBkZWZh
dWx0IEVtYmVyIERhdGEgZXhwZWN0cyBtZXRhIGluZm9ybWF0aW9uIHRvCi0gICAgYmUgbG9jYXRl
ZCBvbiB0aGUgYG1ldGFgIHByb3BlcnR5IG9mIHRoZSBwYXlsb2FkIG9iamVjdC4KLQotICAgIEV4
YW1wbGUKLQotICAgIGBgYGphdmFzY3JpcHQKLSAgICBBcHAuUG9zdFNlcmlhbGl6ZXIgPSBEUy5K
U09OU2VyaWFsaXplci5leHRlbmQoewotICAgICAgZXh0cmFjdE1ldGE6IGZ1bmN0aW9uKHN0b3Jl
LCB0eXBlLCBwYXlsb2FkKSB7Ci0gICAgICAgIGlmIChwYXlsb2FkICYmIHBheWxvYWQuX3BhZ2lu
YXRpb24pIHsKLSAgICAgICAgICBzdG9yZS5tZXRhRm9yVHlwZSh0eXBlLCBwYXlsb2FkLl9wYWdp
bmF0aW9uKTsKLSAgICAgICAgICBkZWxldGUgcGF5bG9hZC5fcGFnaW5hdGlvbjsKLSAgICAgICAg
fQotICAgICAgfQotICAgIH0pOwotICAgIGBgYAotCi0gICAgQG1ldGhvZCBleHRyYWN0TWV0YQot
ICAgIEBwYXJhbSB7RFMuU3RvcmV9IHN0b3JlCi0gICAgQHBhcmFtIHtzdWJjbGFzcyBvZiBEUy5N
b2RlbH0gdHlwZQotICAgIEBwYXJhbSB7T2JqZWN0fSBwYXlsb2FkCi0gICovCi0gIGV4dHJhY3RN
ZXRhOiBmdW5jdGlvbihzdG9yZSwgdHlwZSwgcGF5bG9hZCkgewotICAgIGlmIChwYXlsb2FkICYm
IHBheWxvYWQubWV0YSkgewotICAgICAgc3RvcmUubWV0YUZvclR5cGUodHlwZSwgcGF5bG9hZC5t
ZXRhKTsKLSAgICAgIGRlbGV0ZSBwYXlsb2FkLm1ldGE7Ci0gICAgfQotICB9LAotCi0gIC8qKgot
ICAgYGtleUZvckF0dHJpYnV0ZWAgY2FuIGJlIHVzZWQgdG8gZGVmaW5lIHJ1bGVzIGZvciBob3cg
dG8gY29udmVydCBhbgotICAgYXR0cmlidXRlIG5hbWUgaW4geW91ciBtb2RlbCB0byBhIGtleSBp
biB5b3VyIEpTT04uCi0KLSAgIEV4YW1wbGUKLQotICAgYGBgamF2YXNjcmlwdAotICAgQXBwLkFw
cGxpY2F0aW9uU2VyaWFsaXplciA9IERTLlJFU1RTZXJpYWxpemVyLmV4dGVuZCh7Ci0gICAgIGtl
eUZvckF0dHJpYnV0ZTogZnVuY3Rpb24oYXR0cikgewotICAgICAgIHJldHVybiBFbWJlci5TdHJp
bmcudW5kZXJzY29yZShhdHRyKS50b1VwcGVyQ2FzZSgpOwotICAgICB9Ci0gICB9KTsKLSAgIGBg
YAotCi0gICBAbWV0aG9kIGtleUZvckF0dHJpYnV0ZQotICAgQHBhcmFtIHtTdHJpbmd9IGtleQot
ICAgQHJldHVybiB7U3RyaW5nfSBub3JtYWxpemVkIGtleQotICAqLwotCi0KLSAgLyoqCi0gICBg
a2V5Rm9yUmVsYXRpb25zaGlwYCBjYW4gYmUgdXNlZCB0byBkZWZpbmUgYSBjdXN0b20ga2V5IHdo
ZW4KLSAgIHNlcmlhbGl6aW5nIHJlbGF0aW9uc2hpcCBwcm9wZXJ0aWVzLiBCeSBkZWZhdWx0IGBK
U09OU2VyaWFsaXplcmAKLSAgIGRvZXMgbm90IHByb3ZpZGUgYW4gaW1wbGVtZW50YXRpb24gb2Yg
dGhpcyBtZXRob2QuCi0KLSAgIEV4YW1wbGUKLQotICAgIGBgYGphdmFzY3JpcHQKLSAgICBBcHAu
UG9zdFNlcmlhbGl6ZXIgPSBEUy5KU09OU2VyaWFsaXplci5leHRlbmQoewotICAgICAga2V5Rm9y
UmVsYXRpb25zaGlwOiBmdW5jdGlvbihrZXksIHJlbGF0aW9uc2hpcCkgewotICAgICAgICAgcmV0
dXJuICdyZWxfJyArIEVtYmVyLlN0cmluZy51bmRlcnNjb3JlKGtleSk7Ci0gICAgICB9Ci0gICAg
fSk7Ci0gICAgYGBgCi0KLSAgIEBtZXRob2Qga2V5Rm9yUmVsYXRpb25zaGlwCi0gICBAcGFyYW0g
e1N0cmluZ30ga2V5Ci0gICBAcGFyYW0ge1N0cmluZ30gcmVsYXRpb25zaGlwIHR5cGUKLSAgIEBy
ZXR1cm4ge1N0cmluZ30gbm9ybWFsaXplZCBrZXkKLSAgKi8KLQotICAvLyBIRUxQRVJTCi0KLSAg
LyoqCi0gICBAbWV0aG9kIHRyYW5zZm9ybUZvcgotICAgQHByaXZhdGUKLSAgIEBwYXJhbSB7U3Ry
aW5nfSBhdHRyaWJ1dGVUeXBlCi0gICBAcGFyYW0ge0Jvb2xlYW59IHNraXBBc3NlcnRpb24KLSAg
IEByZXR1cm4ge0RTLlRyYW5zZm9ybX0gdHJhbnNmb3JtCi0gICovCi0gIHRyYW5zZm9ybUZvcjog
ZnVuY3Rpb24oYXR0cmlidXRlVHlwZSwgc2tpcEFzc2VydGlvbikgewotICAgIHZhciB0cmFuc2Zv
cm0gPSB0aGlzLmNvbnRhaW5lci5sb29rdXAoJ3RyYW5zZm9ybTonICsgYXR0cmlidXRlVHlwZSk7
Ci0gICAgRW1iZXIuYXNzZXJ0KCJVbmFibGUgdG8gZmluZCB0cmFuc2Zvcm0gZm9yICciICsgYXR0
cmlidXRlVHlwZSArICInIiwgc2tpcEFzc2VydGlvbiB8fCAhIXRyYW5zZm9ybSk7Ci0gICAgcmV0
dXJuIHRyYW5zZm9ybTsKLSAgfQotfSk7Ci0KLX0pKCk7Ci0KLQotCi0oZnVuY3Rpb24oKSB7Ci0v
KioKLSAgQG1vZHVsZSBlbWJlci1kYXRhCi0qLwotdmFyIGdldCA9IEVtYmVyLmdldCwgY2FwaXRh
bGl6ZSA9IEVtYmVyLlN0cmluZy5jYXBpdGFsaXplLCB1bmRlcnNjb3JlID0gRW1iZXIuU3RyaW5n
LnVuZGVyc2NvcmUsIERTID0gd2luZG93LkRTIDsKLQotLyoqCi0gIEV4dGVuZCBgRW1iZXIuRGF0
YUFkYXB0ZXJgIHdpdGggRUQgc3BlY2lmaWMgY29kZS4KLQotICBAY2xhc3MgRGVidWdBZGFwdGVy
Ci0gIEBuYW1lc3BhY2UgRFMKLSAgQGV4dGVuZHMgRW1iZXIuRGF0YUFkYXB0ZXIKLSAgQHByaXZh
dGUKLSovCi1EUy5EZWJ1Z0FkYXB0ZXIgPSBFbWJlci5EYXRhQWRhcHRlci5leHRlbmQoewotICBn
ZXRGaWx0ZXJzOiBmdW5jdGlvbigpIHsKLSAgICByZXR1cm4gWwotICAgICAgeyBuYW1lOiAnaXNO
ZXcnLCBkZXNjOiAnTmV3JyB9LAotICAgICAgeyBuYW1lOiAnaXNNb2RpZmllZCcsIGRlc2M6ICdN
b2RpZmllZCcgfSwKLSAgICAgIHsgbmFtZTogJ2lzQ2xlYW4nLCBkZXNjOiAnQ2xlYW4nIH0KLSAg
ICBdOwotICB9LAotCi0gIGRldGVjdDogZnVuY3Rpb24oa2xhc3MpIHsKLSAgICByZXR1cm4ga2xh
c3MgIT09IERTLk1vZGVsICYmIERTLk1vZGVsLmRldGVjdChrbGFzcyk7Ci0gIH0sCi0KLSAgY29s
dW1uc0ZvclR5cGU6IGZ1bmN0aW9uKHR5cGUpIHsKLSAgICB2YXIgY29sdW1ucyA9IFt7IG5hbWU6
ICdpZCcsIGRlc2M6ICdJZCcgfV0sIGNvdW50ID0gMCwgc2VsZiA9IHRoaXM7Ci0gICAgZ2V0KHR5
cGUsICdhdHRyaWJ1dGVzJykuZm9yRWFjaChmdW5jdGlvbihuYW1lLCBtZXRhKSB7Ci0gICAgICAg
IGlmIChjb3VudCsrID4gc2VsZi5hdHRyaWJ1dGVMaW1pdCkgeyByZXR1cm4gZmFsc2U7IH0KLSAg
ICAgICAgdmFyIGRlc2MgPSBjYXBpdGFsaXplKHVuZGVyc2NvcmUobmFtZSkucmVwbGFjZSgnXycs
ICcgJykpOwotICAgICAgICBjb2x1bW5zLnB1c2goeyBuYW1lOiBuYW1lLCBkZXNjOiBkZXNjIH0p
OwotICAgIH0pOwotICAgIHJldHVybiBjb2x1bW5zOwotICB9LAotCi0gIGdldFJlY29yZHM6IGZ1
bmN0aW9uKHR5cGUpIHsKLSAgICByZXR1cm4gdGhpcy5nZXQoJ3N0b3JlJykuYWxsKHR5cGUpOwot
ICB9LAotCi0gIGdldFJlY29yZENvbHVtblZhbHVlczogZnVuY3Rpb24ocmVjb3JkKSB7Ci0gICAg
dmFyIHNlbGYgPSB0aGlzLCBjb3VudCA9IDAsCi0gICAgICAgIGNvbHVtblZhbHVlcyA9IHsgaWQ6
IGdldChyZWNvcmQsICdpZCcpIH07Ci0KLSAgICByZWNvcmQuZWFjaEF0dHJpYnV0ZShmdW5jdGlv
bihrZXkpIHsKLSAgICAgIGlmIChjb3VudCsrID4gc2VsZi5hdHRyaWJ1dGVMaW1pdCkgewotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgICB2YXIgdmFsdWUgPSBnZXQocmVjb3Jk
LCBrZXkpOwotICAgICAgY29sdW1uVmFsdWVzW2tleV0gPSB2YWx1ZTsKLSAgICB9KTsKLSAgICBy
ZXR1cm4gY29sdW1uVmFsdWVzOwotICB9LAotCi0gIGdldFJlY29yZEtleXdvcmRzOiBmdW5jdGlv
bihyZWNvcmQpIHsKLSAgICB2YXIga2V5d29yZHMgPSBbXSwga2V5cyA9IEVtYmVyLkEoWydpZCdd
KTsKLSAgICByZWNvcmQuZWFjaEF0dHJpYnV0ZShmdW5jdGlvbihrZXkpIHsKLSAgICAgIGtleXMu
cHVzaChrZXkpOwotICAgIH0pOwotICAgIGtleXMuZm9yRWFjaChmdW5jdGlvbihrZXkpIHsKLSAg
ICAgIGtleXdvcmRzLnB1c2goZ2V0KHJlY29yZCwga2V5KSk7Ci0gICAgfSk7Ci0gICAgcmV0dXJu
IGtleXdvcmRzOwotICB9LAotCi0gIGdldFJlY29yZEZpbHRlclZhbHVlczogZnVuY3Rpb24ocmVj
b3JkKSB7Ci0gICAgcmV0dXJuIHsKLSAgICAgIGlzTmV3OiByZWNvcmQuZ2V0KCdpc05ldycpLAot
ICAgICAgaXNNb2RpZmllZDogcmVjb3JkLmdldCgnaXNEaXJ0eScpICYmICFyZWNvcmQuZ2V0KCdp
c05ldycpLAotICAgICAgaXNDbGVhbjogIXJlY29yZC5nZXQoJ2lzRGlydHknKQotICAgIH07Ci0g
IH0sCi0KLSAgZ2V0UmVjb3JkQ29sb3I6IGZ1bmN0aW9uKHJlY29yZCkgewotICAgIHZhciBjb2xv
ciA9ICdibGFjayc7Ci0gICAgaWYgKHJlY29yZC5nZXQoJ2lzTmV3JykpIHsKLSAgICAgIGNvbG9y
ID0gJ2dyZWVuJzsKLSAgICB9IGVsc2UgaWYgKHJlY29yZC5nZXQoJ2lzRGlydHknKSkgewotICAg
ICAgY29sb3IgPSAnYmx1ZSc7Ci0gICAgfQotICAgIHJldHVybiBjb2xvcjsKLSAgfSwKLQotICBv
YnNlcnZlUmVjb3JkOiBmdW5jdGlvbihyZWNvcmQsIHJlY29yZFVwZGF0ZWQpIHsKLSAgICB2YXIg
cmVsZWFzZU1ldGhvZHMgPSBFbWJlci5BKCksIHNlbGYgPSB0aGlzLAotICAgICAgICBrZXlzVG9P
YnNlcnZlID0gRW1iZXIuQShbJ2lkJywgJ2lzTmV3JywgJ2lzRGlydHknXSk7Ci0KLSAgICByZWNv
cmQuZWFjaEF0dHJpYnV0ZShmdW5jdGlvbihrZXkpIHsKLSAgICAgIGtleXNUb09ic2VydmUucHVz
aChrZXkpOwotICAgIH0pOwotCi0gICAga2V5c1RvT2JzZXJ2ZS5mb3JFYWNoKGZ1bmN0aW9uKGtl
eSkgewotICAgICAgdmFyIGhhbmRsZXIgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgcmVjb3JkVXBk
YXRlZChzZWxmLndyYXBSZWNvcmQocmVjb3JkKSk7Ci0gICAgICB9OwotICAgICAgRW1iZXIuYWRk
T2JzZXJ2ZXIocmVjb3JkLCBrZXksIGhhbmRsZXIpOwotICAgICAgcmVsZWFzZU1ldGhvZHMucHVz
aChmdW5jdGlvbigpIHsKLSAgICAgICAgRW1iZXIucmVtb3ZlT2JzZXJ2ZXIocmVjb3JkLCBrZXks
IGhhbmRsZXIpOwotICAgICAgfSk7Ci0gICAgfSk7Ci0KLSAgICB2YXIgcmVsZWFzZSA9IGZ1bmN0
aW9uKCkgewotICAgICAgcmVsZWFzZU1ldGhvZHMuZm9yRWFjaChmdW5jdGlvbihmbikgeyBmbigp
OyB9ICk7Ci0gICAgfTsKLQotICAgIHJldHVybiByZWxlYXNlOwotICB9Ci0KLX0pOwotCi19KSgp
OwotCi0KLQotKGZ1bmN0aW9uKCkgewotLyoqCi0gIFRoZSBgRFMuVHJhbnNmb3JtYCBjbGFzcyBp
cyB1c2VkIHRvIHNlcmlhbGl6ZSBhbmQgZGVzZXJpYWxpemUgbW9kZWwKLSAgYXR0cmlidXRlcyB3
aGVuIHRoZXkgYXJlIHNhdmVkIG9yIGxvYWRlZCBmcm9tIGFuCi0gIGFkYXB0ZXIuIFN1YmNsYXNz
aW5nIGBEUy5UcmFuc2Zvcm1gIGlzIHVzZWZ1bCBmb3IgY3JlYXRpbmcgY3VzdG9tCi0gIGF0dHJp
YnV0ZXMuIEFsbCBzdWJjbGFzc2VzIG9mIGBEUy5UcmFuc2Zvcm1gIG11c3QgaW1wbGVtZW50IGEK
LSAgYHNlcmlhbGl6ZWAgYW5kIGEgYGRlc2VyaWFsaXplYCBtZXRob2QuCi0KLSAgRXhhbXBsZQot
Ci0gIGBgYGphdmFzY3JpcHQKLSAgQXBwLlJhd1RyYW5zZm9ybSA9IERTLlRyYW5zZm9ybS5leHRl
bmQoewotICAgIGRlc2VyaWFsaXplOiBmdW5jdGlvbihzZXJpYWxpemVkKSB7Ci0gICAgICByZXR1
cm4gc2VyaWFsaXplZDsKLSAgICB9LAotICAgIHNlcmlhbGl6ZTogZnVuY3Rpb24oZGVzZXJpYWxp
emVkKSB7Ci0gICAgICByZXR1cm4gZGVzZXJpYWxpemVkOwotICAgIH0KLSAgfSk7Ci0gIGBgYAot
Ci0gIFVzYWdlCi0KLSAgYGBgamF2YXNjcmlwdAotICB2YXIgYXR0ciA9IERTLmF0dHI7Ci0gIEFw
cC5SZXF1aXJlbWVudCA9IERTLk1vZGVsLmV4dGVuZCh7Ci0gICAgbmFtZTogYXR0cignc3RyaW5n
JyksCi0gICAgb3B0aW9uc0FycmF5OiBhdHRyKCdyYXcnKQotICB9KTsKLSAgYGBgCi0KLSAgQGNs
YXNzIFRyYW5zZm9ybQotICBAbmFtZXNwYWNlIERTCi0gKi8KLURTLlRyYW5zZm9ybSA9IEVtYmVy
Lk9iamVjdC5leHRlbmQoewotICAvKioKLSAgICBXaGVuIGdpdmVuIGEgZGVzZXJpYWxpemVkIHZh
bHVlIGZyb20gYSByZWNvcmQgYXR0cmlidXRlIHRoaXMKLSAgICBtZXRob2QgbXVzdCByZXR1cm4g
dGhlIHNlcmlhbGl6ZWQgdmFsdWUuCi0KLSAgICBFeGFtcGxlCi0KLSAgICBgYGBqYXZhc2NyaXB0
Ci0gICAgc2VyaWFsaXplOiBmdW5jdGlvbihkZXNlcmlhbGl6ZWQpIHsKLSAgICAgIHJldHVybiBF
bWJlci5pc0VtcHR5KGRlc2VyaWFsaXplZCkgPyBudWxsIDogTnVtYmVyKGRlc2VyaWFsaXplZCk7
Ci0gICAgfQotICAgIGBgYAotCi0gICAgQG1ldGhvZCBzZXJpYWxpemUKLSAgICBAcGFyYW0gZGVz
ZXJpYWxpemVkIFRoZSBkZXNlcmlhbGl6ZWQgdmFsdWUKLSAgICBAcmV0dXJuIFRoZSBzZXJpYWxp
emVkIHZhbHVlCi0gICovCi0gIHNlcmlhbGl6ZTogRW1iZXIucmVxdWlyZWQoKSwKLQotICAvKioK
LSAgICBXaGVuIGdpdmVuIGEgc2VyaWFsaXplIHZhbHVlIGZyb20gYSBKU09OIG9iamVjdCB0aGlz
IG1ldGhvZCBtdXN0Ci0gICAgcmV0dXJuIHRoZSBkZXNlcmlhbGl6ZWQgdmFsdWUgZm9yIHRoZSBy
ZWNvcmQgYXR0cmlidXRlLgotCi0gICAgRXhhbXBsZQotCi0gICAgYGBgamF2YXNjcmlwdAotICAg
IGRlc2VyaWFsaXplOiBmdW5jdGlvbihzZXJpYWxpemVkKSB7Ci0gICAgICByZXR1cm4gZW1wdHko
c2VyaWFsaXplZCkgPyBudWxsIDogTnVtYmVyKHNlcmlhbGl6ZWQpOwotICAgIH0KLSAgICBgYGAK
LQotICAgIEBtZXRob2QgZGVzZXJpYWxpemUKLSAgICBAcGFyYW0gc2VyaWFsaXplZCBUaGUgc2Vy
aWFsaXplZCB2YWx1ZQotICAgIEByZXR1cm4gVGhlIGRlc2VyaWFsaXplZCB2YWx1ZQotICAqLwot
ICBkZXNlcmlhbGl6ZTogRW1iZXIucmVxdWlyZWQoKQotCi19KTsKLQotfSkoKTsKLQotCi0KLShm
dW5jdGlvbigpIHsKLQotLyoqCi0gIFRoZSBgRFMuQm9vbGVhblRyYW5zZm9ybWAgY2xhc3MgaXMg
dXNlZCB0byBzZXJpYWxpemUgYW5kIGRlc2VyaWFsaXplCi0gIGJvb2xlYW4gYXR0cmlidXRlcyBv
biBFbWJlciBEYXRhIHJlY29yZCBvYmplY3RzLiBUaGlzIHRyYW5zZm9ybSBpcwotICB1c2VkIHdo
ZW4gYGJvb2xlYW5gIGlzIHBhc3NlZCBhcyB0aGUgdHlwZSBwYXJhbWV0ZXIgdG8gdGhlCi0gIFtE
Uy5hdHRyXSguLi8uLi9kYXRhI21ldGhvZF9hdHRyKSBmdW5jdGlvbi4KLQotICBVc2FnZQotCi0g
IGBgYGphdmFzY3JpcHQKLSAgdmFyIGF0dHIgPSBEUy5hdHRyOwotICBBcHAuVXNlciA9IERTLk1v
ZGVsLmV4dGVuZCh7Ci0gICAgaXNBZG1pbjogYXR0cignYm9vbGVhbicpLAotICAgIG5hbWU6IGF0
dHIoJ3N0cmluZycpLAotICAgIGVtYWlsOiBhdHRyKCdzdHJpbmcnKQotICB9KTsKLSAgYGBgCi0K
LSAgQGNsYXNzIEJvb2xlYW5UcmFuc2Zvcm0KLSAgQGV4dGVuZHMgRFMuVHJhbnNmb3JtCi0gIEBu
YW1lc3BhY2UgRFMKLSAqLwotRFMuQm9vbGVhblRyYW5zZm9ybSA9IERTLlRyYW5zZm9ybS5leHRl
bmQoewotICBkZXNlcmlhbGl6ZTogZnVuY3Rpb24oc2VyaWFsaXplZCkgewotICAgIHZhciB0eXBl
ID0gdHlwZW9mIHNlcmlhbGl6ZWQ7Ci0KLSAgICBpZiAodHlwZSA9PT0gImJvb2xlYW4iKSB7Ci0g
ICAgICByZXR1cm4gc2VyaWFsaXplZDsKLSAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICJzdHJpbmci
KSB7Ci0gICAgICByZXR1cm4gc2VyaWFsaXplZC5tYXRjaCgvXnRydWUkfF50JHxeMSQvaSkgIT09
IG51bGw7Ci0gICAgfSBlbHNlIGlmICh0eXBlID09PSAibnVtYmVyIikgewotICAgICAgcmV0dXJu
IHNlcmlhbGl6ZWQgPT09IDE7Ci0gICAgfSBlbHNlIHsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9Ci0gIH0sCi0KLSAgc2VyaWFsaXplOiBmdW5jdGlvbihkZXNlcmlhbGl6ZWQpIHsKLSAgICBy
ZXR1cm4gQm9vbGVhbihkZXNlcmlhbGl6ZWQpOwotICB9Ci19KTsKLQotfSkoKTsKLQotCi0KLShm
dW5jdGlvbigpIHsKLS8qKgotICBUaGUgYERTLkRhdGVUcmFuc2Zvcm1gIGNsYXNzIGlzIHVzZWQg
dG8gc2VyaWFsaXplIGFuZCBkZXNlcmlhbGl6ZQotICBkYXRlIGF0dHJpYnV0ZXMgb24gRW1iZXIg
RGF0YSByZWNvcmQgb2JqZWN0cy4gVGhpcyB0cmFuc2Zvcm0gaXMgdXNlZAotICB3aGVuIGBkYXRl
YCBpcyBwYXNzZWQgYXMgdGhlIHR5cGUgcGFyYW1ldGVyIHRvIHRoZQotICBbRFMuYXR0cl0oLi4v
Li4vZGF0YSNtZXRob2RfYXR0cikgZnVuY3Rpb24uCi0KLSAgYGBgamF2YXNjcmlwdAotICB2YXIg
YXR0ciA9IERTLmF0dHI7Ci0gIEFwcC5TY29yZSA9IERTLk1vZGVsLmV4dGVuZCh7Ci0gICAgdmFs
dWU6IGF0dHIoJ251bWJlcicpLAotICAgIHBsYXllcjogRFMuYmVsb25nc1RvKCdwbGF5ZXInKSwK
LSAgICBkYXRlOiBhdHRyKCdkYXRlJykKLSAgfSk7Ci0gIGBgYAotCi0gIEBjbGFzcyBEYXRlVHJh
bnNmb3JtCi0gIEBleHRlbmRzIERTLlRyYW5zZm9ybQotICBAbmFtZXNwYWNlIERTCi0gKi8KLURT
LkRhdGVUcmFuc2Zvcm0gPSBEUy5UcmFuc2Zvcm0uZXh0ZW5kKHsKLQotICBkZXNlcmlhbGl6ZTog
ZnVuY3Rpb24oc2VyaWFsaXplZCkgewotICAgIHZhciB0eXBlID0gdHlwZW9mIHNlcmlhbGl6ZWQ7
Ci0KLSAgICBpZiAodHlwZSA9PT0gInN0cmluZyIpIHsKLSAgICAgIHJldHVybiBuZXcgRGF0ZShF
bWJlci5EYXRlLnBhcnNlKHNlcmlhbGl6ZWQpKTsKLSAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICJu
dW1iZXIiKSB7Ci0gICAgICByZXR1cm4gbmV3IERhdGUoc2VyaWFsaXplZCk7Ci0gICAgfSBlbHNl
IGlmIChzZXJpYWxpemVkID09PSBudWxsIHx8IHNlcmlhbGl6ZWQgPT09IHVuZGVmaW5lZCkgewot
ICAgICAgLy8gaWYgdGhlIHZhbHVlIGlzIG5vdCBwcmVzZW50IGluIHRoZSBkYXRhLAotICAgICAg
Ly8gcmV0dXJuIHVuZGVmaW5lZCwgbm90IG51bGwuCi0gICAgICByZXR1cm4gc2VyaWFsaXplZDsK
LSAgICB9IGVsc2UgewotICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfQotICB9LAotCi0gIHNlcmlh
bGl6ZTogZnVuY3Rpb24oZGF0ZSkgewotICAgIGlmIChkYXRlIGluc3RhbmNlb2YgRGF0ZSkgewot
ICAgICAgLy8gU2VyaWFsaXplIGl0IGFzIGEgbnVtYmVyIHRvIG1haW50YWluIG1pbGxpc2Vjb25k
IHByZWNpc2lvbgotICAgICAgcmV0dXJuIE51bWJlcihkYXRlKTsKLSAgICB9IGVsc2UgewotICAg
ICAgcmV0dXJuIG51bGw7Ci0gICAgfQotICB9Ci0KLX0pOwotCi19KSgpOwotCi0KLQotKGZ1bmN0
aW9uKCkgewotdmFyIGVtcHR5ID0gRW1iZXIuaXNFbXB0eTsKLS8qKgotICBUaGUgYERTLk51bWJl
clRyYW5zZm9ybWAgY2xhc3MgaXMgdXNlZCB0byBzZXJpYWxpemUgYW5kIGRlc2VyaWFsaXplCi0g
IG51bWVyaWMgYXR0cmlidXRlcyBvbiBFbWJlciBEYXRhIHJlY29yZCBvYmplY3RzLiBUaGlzIHRy
YW5zZm9ybSBpcwotICB1c2VkIHdoZW4gYG51bWJlcmAgaXMgcGFzc2VkIGFzIHRoZSB0eXBlIHBh
cmFtZXRlciB0byB0aGUKLSAgW0RTLmF0dHJdKC4uLy4uL2RhdGEjbWV0aG9kX2F0dHIpIGZ1bmN0
aW9uLgotCi0gIFVzYWdlCi0KLSAgYGBgamF2YXNjcmlwdAotICB2YXIgYXR0ciA9IERTLmF0dHI7
Ci0gIEFwcC5TY29yZSA9IERTLk1vZGVsLmV4dGVuZCh7Ci0gICAgdmFsdWU6IGF0dHIoJ251bWJl
cicpLAotICAgIHBsYXllcjogRFMuYmVsb25nc1RvKCdwbGF5ZXInKSwKLSAgICBkYXRlOiBhdHRy
KCdkYXRlJykKLSAgfSk7Ci0gIGBgYAotCi0gIEBjbGFzcyBOdW1iZXJUcmFuc2Zvcm0KLSAgQGV4
dGVuZHMgRFMuVHJhbnNmb3JtCi0gIEBuYW1lc3BhY2UgRFMKLSAqLwotRFMuTnVtYmVyVHJhbnNm
b3JtID0gRFMuVHJhbnNmb3JtLmV4dGVuZCh7Ci0KLSAgZGVzZXJpYWxpemU6IGZ1bmN0aW9uKHNl
cmlhbGl6ZWQpIHsKLSAgICByZXR1cm4gZW1wdHkoc2VyaWFsaXplZCkgPyBudWxsIDogTnVtYmVy
KHNlcmlhbGl6ZWQpOwotICB9LAotCi0gIHNlcmlhbGl6ZTogZnVuY3Rpb24oZGVzZXJpYWxpemVk
KSB7Ci0gICAgcmV0dXJuIGVtcHR5KGRlc2VyaWFsaXplZCkgPyBudWxsIDogTnVtYmVyKGRlc2Vy
aWFsaXplZCk7Ci0gIH0KLX0pOwotCi19KSgpOwotCi0KLQotKGZ1bmN0aW9uKCkgewotdmFyIG5v
bmUgPSBFbWJlci5pc05vbmU7Ci0KLS8qKgotICBUaGUgYERTLlN0cmluZ1RyYW5zZm9ybWAgY2xh
c3MgaXMgdXNlZCB0byBzZXJpYWxpemUgYW5kIGRlc2VyaWFsaXplCi0gIHN0cmluZyBhdHRyaWJ1
dGVzIG9uIEVtYmVyIERhdGEgcmVjb3JkIG9iamVjdHMuIFRoaXMgdHJhbnNmb3JtIGlzCi0gIHVz
ZWQgd2hlbiBgc3RyaW5nYCBpcyBwYXNzZWQgYXMgdGhlIHR5cGUgcGFyYW1ldGVyIHRvIHRoZQot
ICBbRFMuYXR0cl0oLi4vLi4vZGF0YSNtZXRob2RfYXR0cikgZnVuY3Rpb24uCi0KLSAgVXNhZ2UK
LQotICBgYGBqYXZhc2NyaXB0Ci0gIHZhciBhdHRyID0gRFMuYXR0cjsKLSAgQXBwLlVzZXIgPSBE
Uy5Nb2RlbC5leHRlbmQoewotICAgIGlzQWRtaW46IGF0dHIoJ2Jvb2xlYW4nKSwKLSAgICBuYW1l
OiBhdHRyKCdzdHJpbmcnKSwKLSAgICBlbWFpbDogYXR0cignc3RyaW5nJykKLSAgfSk7Ci0gIGBg
YAotCi0gIEBjbGFzcyBTdHJpbmdUcmFuc2Zvcm0KLSAgQGV4dGVuZHMgRFMuVHJhbnNmb3JtCi0g
IEBuYW1lc3BhY2UgRFMKLSAqLwotRFMuU3RyaW5nVHJhbnNmb3JtID0gRFMuVHJhbnNmb3JtLmV4
dGVuZCh7Ci0KLSAgZGVzZXJpYWxpemU6IGZ1bmN0aW9uKHNlcmlhbGl6ZWQpIHsKLSAgICByZXR1
cm4gbm9uZShzZXJpYWxpemVkKSA/IG51bGwgOiBTdHJpbmcoc2VyaWFsaXplZCk7Ci0gIH0sCi0K
LSAgc2VyaWFsaXplOiBmdW5jdGlvbihkZXNlcmlhbGl6ZWQpIHsKLSAgICByZXR1cm4gbm9uZShk
ZXNlcmlhbGl6ZWQpID8gbnVsbCA6IFN0cmluZyhkZXNlcmlhbGl6ZWQpOwotICB9Ci0KLX0pOwot
Ci19KSgpOwotCi0KLQotKGZ1bmN0aW9uKCkgewotCi19KSgpOwotCi0KLQotKGZ1bmN0aW9uKCkg
ewotLyoqCi0gIEBtb2R1bGUgZW1iZXItZGF0YQotKi8KLQotdmFyIHNldCA9IEVtYmVyLnNldDsK
LQotLyoKLSAgVGhpcyBjb2RlIHJlZ2lzdGVycyBhbiBpbmplY3Rpb24gZm9yIEVtYmVyLkFwcGxp
Y2F0aW9uLgotCi0gIElmIGFuIEVtYmVyLmpzIGRldmVsb3BlciBkZWZpbmVzIGEgc3ViY2xhc3Mg
b2YgRFMuU3RvcmUgb24gdGhlaXIgYXBwbGljYXRpb24sCi0gIHRoaXMgY29kZSB3aWxsIGF1dG9t
YXRpY2FsbHkgaW5zdGFudGlhdGUgaXQgYW5kIG1ha2UgaXQgYXZhaWxhYmxlIG9uIHRoZQotICBy
b3V0ZXIuCi0KLSAgQWRkaXRpb25hbGx5LCBhZnRlciBhbiBhcHBsaWNhdGlvbidzIGNvbnRyb2xs
ZXJzIGhhdmUgYmVlbiBpbmplY3RlZCwgdGhleSB3aWxsCi0gIGVhY2ggaGF2ZSB0aGUgc3RvcmUg
bWFkZSBhdmFpbGFibGUgdG8gdGhlbS4KLQotICBGb3IgZXhhbXBsZSwgaW1hZ2luZSBhbiBFbWJl
ci5qcyBhcHBsaWNhdGlvbiB3aXRoIHRoZSBmb2xsb3dpbmcgY2xhc3NlczoKLQotICBBcHAuU3Rv
cmUgPSBEUy5TdG9yZS5leHRlbmQoewotICAgIGFkYXB0ZXI6ICdjdXN0b20nCi0gIH0pOwotCi0g
IEFwcC5Qb3N0c0NvbnRyb2xsZXIgPSBFbWJlci5BcnJheUNvbnRyb2xsZXIuZXh0ZW5kKHsKLSAg
ICAvLyAuLi4KLSAgfSk7Ci0KLSAgV2hlbiB0aGUgYXBwbGljYXRpb24gaXMgaW5pdGlhbGl6ZWQs
IGBBcHAuU3RvcmVgIHdpbGwgYXV0b21hdGljYWxseSBiZQotICBpbnN0YW50aWF0ZWQsIGFuZCB0
aGUgaW5zdGFuY2Ugb2YgYEFwcC5Qb3N0c0NvbnRyb2xsZXJgIHdpbGwgaGF2ZSBpdHMgYHN0b3Jl
YAotICBwcm9wZXJ0eSBzZXQgdG8gdGhhdCBpbnN0YW5jZS4KLQotICBOb3RlIHRoYXQgdGhpcyBj
b2RlIHdpbGwgb25seSBiZSBydW4gaWYgdGhlIGBlbWJlci1hcHBsaWNhdGlvbmAgcGFja2FnZSBp
cwotICBsb2FkZWQuIElmIEVtYmVyIERhdGEgaXMgYmVpbmcgdXNlZCBpbiBhbiBlbnZpcm9ubWVu
dCBvdGhlciB0aGFuIGEKLSAgdHlwaWNhbCBhcHBsaWNhdGlvbiAoZS5nLiwgbm9kZS5qcyB3aGVy
ZSBvbmx5IGBlbWJlci1ydW50aW1lYCBpcyBhdmFpbGFibGUpLAotICB0aGlzIGNvZGUgd2lsbCBi
ZSBpZ25vcmVkLgotKi8KLQotRW1iZXIub25Mb2FkKCdFbWJlci5BcHBsaWNhdGlvbicsIGZ1bmN0
aW9uKEFwcGxpY2F0aW9uKSB7Ci0gIEFwcGxpY2F0aW9uLmluaXRpYWxpemVyKHsKLSAgICBuYW1l
OiAic3RvcmUiLAotCi0gICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oY29udGFpbmVyLCBhcHBsaWNh
dGlvbikgewotICAgICAgYXBwbGljYXRpb24ucmVnaXN0ZXIoJ3N0b3JlOm1haW4nLCBhcHBsaWNh
dGlvbi5TdG9yZSB8fCBEUy5TdG9yZSk7Ci0KLSAgICAgIC8vIGFsbG93IG9sZGVyIG5hbWVzIHRv
IGJlIGxvb2tlZCB1cAotCi0gICAgICB2YXIgcHJveHkgPSBuZXcgRFMuQ29udGFpbmVyUHJveHko
Y29udGFpbmVyKTsKLSAgICAgIHByb3h5LnJlZ2lzdGVyRGVwcmVjYXRpb25zKFsKLSAgICAgICAg
e2RlcHJlY2F0ZWQ6ICdzZXJpYWxpemVyOl9kZWZhdWx0JywgIHZhbGlkOiAnc2VyaWFsaXplcjot
ZGVmYXVsdCd9LAotICAgICAgICB7ZGVwcmVjYXRlZDogJ3NlcmlhbGl6ZXI6X3Jlc3QnLCAgICAg
dmFsaWQ6ICdzZXJpYWxpemVyOi1yZXN0J30sCi0gICAgICAgIHtkZXByZWNhdGVkOiAnYWRhcHRl
cjpfcmVzdCcsICAgICAgICB2YWxpZDogJ2FkYXB0ZXI6LXJlc3QnfQotICAgICAgXSk7Ci0KLSAg
ICAgIC8vIG5ldyBnbyBmb3J3YXJkIHBhdGhzCi0gICAgICBhcHBsaWNhdGlvbi5yZWdpc3Rlcign
c2VyaWFsaXplcjotZGVmYXVsdCcsIERTLkpTT05TZXJpYWxpemVyKTsKLSAgICAgIGFwcGxpY2F0
aW9uLnJlZ2lzdGVyKCdzZXJpYWxpemVyOi1yZXN0JywgRFMuUkVTVFNlcmlhbGl6ZXIpOwotICAg
ICAgYXBwbGljYXRpb24ucmVnaXN0ZXIoJ2FkYXB0ZXI6LXJlc3QnLCBEUy5SRVNUQWRhcHRlcik7
Ci0KLSAgICAgIC8vIEVhZ2VybHkgZ2VuZXJhdGUgdGhlIHN0b3JlIHNvIGRlZmF1bHRTdG9yZSBp
cyBwb3B1bGF0ZWQuCi0gICAgICAvLyBUT0RPOiBEbyB0aGlzIGluIGEgZmluaXNoZXIgaG9vawot
ICAgICAgY29udGFpbmVyLmxvb2t1cCgnc3RvcmU6bWFpbicpOwotICAgIH0KLSAgfSk7Ci0KLSAg
QXBwbGljYXRpb24uaW5pdGlhbGl6ZXIoewotICAgIG5hbWU6ICJ0cmFuc2Zvcm1zIiwKLSAgICBi
ZWZvcmU6ICJzdG9yZSIsCi0KLSAgICBpbml0aWFsaXplOiBmdW5jdGlvbihjb250YWluZXIsIGFw
cGxpY2F0aW9uKSB7Ci0gICAgICBhcHBsaWNhdGlvbi5yZWdpc3RlcigndHJhbnNmb3JtOmJvb2xl
YW4nLCBEUy5Cb29sZWFuVHJhbnNmb3JtKTsKLSAgICAgIGFwcGxpY2F0aW9uLnJlZ2lzdGVyKCd0
cmFuc2Zvcm06ZGF0ZScsIERTLkRhdGVUcmFuc2Zvcm0pOwotICAgICAgYXBwbGljYXRpb24ucmVn
aXN0ZXIoJ3RyYW5zZm9ybTpudW1iZXInLCBEUy5OdW1iZXJUcmFuc2Zvcm0pOwotICAgICAgYXBw
bGljYXRpb24ucmVnaXN0ZXIoJ3RyYW5zZm9ybTpzdHJpbmcnLCBEUy5TdHJpbmdUcmFuc2Zvcm0p
OwotICAgIH0KLSAgfSk7Ci0KLSAgQXBwbGljYXRpb24uaW5pdGlhbGl6ZXIoewotICAgIG5hbWU6
ICJkYXRhLWFkYXB0ZXIiLAotICAgIGJlZm9yZTogInN0b3JlIiwKLQotICAgIGluaXRpYWxpemU6
IGZ1bmN0aW9uKGNvbnRhaW5lciwgYXBwbGljYXRpb24pIHsKLSAgICAgIGFwcGxpY2F0aW9uLnJl
Z2lzdGVyKCdkYXRhLWFkYXB0ZXI6bWFpbicsIERTLkRlYnVnQWRhcHRlcik7Ci0gICAgfQotICB9
KTsKLQotICBBcHBsaWNhdGlvbi5pbml0aWFsaXplcih7Ci0gICAgbmFtZTogImluamVjdFN0b3Jl
IiwKLSAgICBiZWZvcmU6ICJzdG9yZSIsCi0KLSAgICBpbml0aWFsaXplOiBmdW5jdGlvbihjb250
YWluZXIsIGFwcGxpY2F0aW9uKSB7Ci0gICAgICBhcHBsaWNhdGlvbi5pbmplY3QoJ2NvbnRyb2xs
ZXInLCAnc3RvcmUnLCAnc3RvcmU6bWFpbicpOwotICAgICAgYXBwbGljYXRpb24uaW5qZWN0KCdy
b3V0ZScsICdzdG9yZScsICdzdG9yZTptYWluJyk7Ci0gICAgICBhcHBsaWNhdGlvbi5pbmplY3Qo
J3NlcmlhbGl6ZXInLCAnc3RvcmUnLCAnc3RvcmU6bWFpbicpOwotICAgICAgYXBwbGljYXRpb24u
aW5qZWN0KCdkYXRhLWFkYXB0ZXInLCAnc3RvcmUnLCAnc3RvcmU6bWFpbicpOwotICAgIH0KLSAg
fSk7Ci0KLX0pOwotCi19KSgpOwotCi0KLQotKGZ1bmN0aW9uKCkgewotLyoqCi0gIEBtb2R1bGUg
ZW1iZXItZGF0YQotKi8KLQotLyoqCi0gIERhdGUucGFyc2Ugd2l0aCBwcm9ncmVzc2l2ZSBlbmhh
bmNlbWVudCBmb3IgSVNPIDg2MDEgPGh0dHBzOi8vZ2l0aHViLmNvbS9jc25vdmVyL2pzLWlzbzg2
MDE+Ci0KLSAgwqkgMjAxMSBDb2xpbiBTbm92ZXIgPGh0dHA6Ly96ZXRhZmxlZXQuY29tPgotCi0g
IFJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlLgotCi0gIEBjbGFzcyBEYXRlCi0gIEBuYW1lc3Bh
Y2UgRW1iZXIKLSAgQHN0YXRpYwotKi8KLUVtYmVyLkRhdGUgPSBFbWJlci5EYXRlIHx8IHt9Owot
Ci12YXIgb3JpZ1BhcnNlID0gRGF0ZS5wYXJzZSwgbnVtZXJpY0tleXMgPSBbIDEsIDQsIDUsIDYs
IDcsIDEwLCAxMSBdOwotCi0vKioKLSAgQG1ldGhvZCBwYXJzZQotICBAcGFyYW0gZGF0ZQotKi8K
LUVtYmVyLkRhdGUucGFyc2UgPSBmdW5jdGlvbiAoZGF0ZSkgewotICAgIHZhciB0aW1lc3RhbXAs
IHN0cnVjdCwgbWludXRlc09mZnNldCA9IDA7Ci0KLSAgICAvLyBFUzUgwqcxNS45LjQuMiBzdGF0
ZXMgdGhhdCB0aGUgc3RyaW5nIHNob3VsZCBhdHRlbXB0IHRvIGJlIHBhcnNlZCBhcyBhIERhdGUg
VGltZSBTdHJpbmcgRm9ybWF0IHN0cmluZwotICAgIC8vIGJlZm9yZSBmYWxsaW5nIGJhY2sgdG8g
YW55IGltcGxlbWVudGF0aW9uLXNwZWNpZmljIGRhdGUgcGFyc2luZywgc28gdGhhdOKAmXMgd2hh
dCB3ZSBkbywgZXZlbiBpZiBuYXRpdmUKLSAgICAvLyBpbXBsZW1lbnRhdGlvbnMgY291bGQgYmUg
ZmFzdGVyCi0gICAgLy8gICAgICAgICAgICAgIDEgWVlZWSAgICAgICAgICAgICAgICAyIE1NICAg
ICAgIDMgREQgICAgICAgICAgIDQgSEggICAgNSBtbSAgICAgICA2IHNzICAgICAgICA3IG1zZWMg
ICAgICAgIDggWiA5IMKxICAgIDEwIHR6SEggICAgMTEgdHptbQotICAgIGlmICgoc3RydWN0ID0g
L14oXGR7NH18WytcLV1cZHs2fSkoPzotKFxkezJ9KSg/Oi0oXGR7Mn0pKT8pPyg/OlQoXGR7Mn0p
OihcZHsyfSkoPzo6KFxkezJ9KSg/OlwuKFxkezN9KSk/KT8oPzooWil8KFsrXC1dKShcZHsyfSko
Pzo6KFxkezJ9KSk/KT8pPyQvLmV4ZWMoZGF0ZSkpKSB7Ci0gICAgICAgIC8vIGF2b2lkIE5hTiB0
aW1lc3RhbXBzIGNhdXNlZCBieSDigJx1bmRlZmluZWTigJ0gdmFsdWVzIGJlaW5nIHBhc3NlZCB0
byBEYXRlLlVUQwotICAgICAgICBmb3IgKHZhciBpID0gMCwgazsgKGsgPSBudW1lcmljS2V5c1tp
XSk7ICsraSkgewotICAgICAgICAgICAgc3RydWN0W2tdID0gK3N0cnVjdFtrXSB8fCAwOwotICAg
ICAgICB9Ci0KLSAgICAgICAgLy8gYWxsb3cgdW5kZWZpbmVkIGRheXMgYW5kIG1vbnRocwotICAg
ICAgICBzdHJ1Y3RbMl0gPSAoK3N0cnVjdFsyXSB8fCAxKSAtIDE7Ci0gICAgICAgIHN0cnVjdFsz
XSA9ICtzdHJ1Y3RbM10gfHwgMTsKLQotICAgICAgICBpZiAoc3RydWN0WzhdICE9PSAnWicgJiYg
c3RydWN0WzldICE9PSB1bmRlZmluZWQpIHsKLSAgICAgICAgICAgIG1pbnV0ZXNPZmZzZXQgPSBz
dHJ1Y3RbMTBdICogNjAgKyBzdHJ1Y3RbMTFdOwotCi0gICAgICAgICAgICBpZiAoc3RydWN0Wzld
ID09PSAnKycpIHsKLSAgICAgICAgICAgICAgICBtaW51dGVzT2Zmc2V0ID0gMCAtIG1pbnV0ZXNP
ZmZzZXQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICB0aW1lc3RhbXAgPSBE
YXRlLlVUQyhzdHJ1Y3RbMV0sIHN0cnVjdFsyXSwgc3RydWN0WzNdLCBzdHJ1Y3RbNF0sIHN0cnVj
dFs1XSArIG1pbnV0ZXNPZmZzZXQsIHN0cnVjdFs2XSwgc3RydWN0WzddKTsKLSAgICB9Ci0gICAg
ZWxzZSB7Ci0gICAgICAgIHRpbWVzdGFtcCA9IG9yaWdQYXJzZSA/IG9yaWdQYXJzZShkYXRlKSA6
IE5hTjsKLSAgICB9Ci0KLSAgICByZXR1cm4gdGltZXN0YW1wOwotfTsKLQotaWYgKEVtYmVyLkVY
VEVORF9QUk9UT1RZUEVTID09PSB0cnVlIHx8IEVtYmVyLkVYVEVORF9QUk9UT1RZUEVTLkRhdGUp
IHsKLSAgRGF0ZS5wYXJzZSA9IEVtYmVyLkRhdGUucGFyc2U7Ci19Ci0KLX0pKCk7Ci0KLQotCi0o
ZnVuY3Rpb24oKSB7Ci0KLX0pKCk7Ci0KLQotCi0oZnVuY3Rpb24oKSB7Ci0vKioKLSAgQG1vZHVs
ZSBlbWJlci1kYXRhCi0qLwotCi12YXIgZ2V0ID0gRW1iZXIuZ2V0LCBzZXQgPSBFbWJlci5zZXQ7
Ci0KLS8qKgotICBBIHJlY29yZCBhcnJheSBpcyBhbiBhcnJheSB0aGF0IGNvbnRhaW5zIHJlY29y
ZHMgb2YgYSBjZXJ0YWluIHR5cGUuIFRoZSByZWNvcmQKLSAgYXJyYXkgbWF0ZXJpYWxpemVzIHJl
Y29yZHMgYXMgbmVlZGVkIHdoZW4gdGhleSBhcmUgcmV0cmlldmVkIGZvciB0aGUgZmlyc3QKLSAg
dGltZS4gWW91IHNob3VsZCBub3QgY3JlYXRlIHJlY29yZCBhcnJheXMgeW91cnNlbGYuIEluc3Rl
YWQsIGFuIGluc3RhbmNlIG9mCi0gIGBEUy5SZWNvcmRBcnJheWAgb3IgaXRzIHN1YmNsYXNzZXMg
d2lsbCBiZSByZXR1cm5lZCBieSB5b3VyIGFwcGxpY2F0aW9uJ3Mgc3RvcmUKLSAgaW4gcmVzcG9u
c2UgdG8gcXVlcmllcy4KLQotICBAY2xhc3MgUmVjb3JkQXJyYXkKLSAgQG5hbWVzcGFjZSBEUwot
ICBAZXh0ZW5kcyBFbWJlci5BcnJheVByb3h5Ci0gIEB1c2VzIEVtYmVyLkV2ZW50ZWQKLSovCi0K
LURTLlJlY29yZEFycmF5ID0gRW1iZXIuQXJyYXlQcm94eS5leHRlbmQoRW1iZXIuRXZlbnRlZCwg
ewotICAvKioKLSAgICBUaGUgbW9kZWwgdHlwZSBjb250YWluZWQgYnkgdGhpcyByZWNvcmQgYXJy
YXkuCi0KLSAgICBAcHJvcGVydHkgdHlwZQotICAgIEB0eXBlIERTLk1vZGVsCi0gICovCi0gIHR5
cGU6IG51bGwsCi0KLSAgLyoqCi0gICAgVGhlIGFycmF5IG9mIGNsaWVudCBpZHMgYmFja2luZyB0
aGUgcmVjb3JkIGFycmF5LiBXaGVuIGEKLSAgICByZWNvcmQgaXMgcmVxdWVzdGVkIGZyb20gdGhl
IHJlY29yZCBhcnJheSwgdGhlIHJlY29yZAotICAgIGZvciB0aGUgY2xpZW50IGlkIGF0IHRoZSBz
YW1lIGluZGV4IGlzIG1hdGVyaWFsaXplZCwgaWYKLSAgICBuZWNlc3NhcnksIGJ5IHRoZSBzdG9y
ZS4KLQotICAgIEBwcm9wZXJ0eSBjb250ZW50Ci0gICAgQHByaXZhdGUKLSAgICBAdHlwZSBFbWJl
ci5BcnJheQotICAqLwotICBjb250ZW50OiBudWxsLAotCi0gIC8qKgotICAgIFRoZSBmbGFnIHRv
IHNpZ25hbCBhIGBSZWNvcmRBcnJheWAgaXMgY3VycmVudGx5IGxvYWRpbmcgZGF0YS4KLQotICAg
IEV4YW1wbGUKLQotICAgIGBgYGphdmFzY3JpcHQKLSAgICB2YXIgcGVvcGxlID0gc3RvcmUuYWxs
KEFwcC5QZXJzb24pOwotICAgIHBlb3BsZS5nZXQoJ2lzTG9hZGVkJyk7IC8vIHRydWUKLSAgICBg
YGAKLQotICAgIEBwcm9wZXJ0eSBpc0xvYWRlZAotICAgIEB0eXBlIEJvb2xlYW4KLSAgKi8KLSAg
aXNMb2FkZWQ6IGZhbHNlLAotICAvKioKLSAgICBUaGUgZmxhZyB0byBzaWduYWwgYSBgUmVjb3Jk
QXJyYXlgIGlzIGN1cnJlbnRseSBsb2FkaW5nIGRhdGEuCi0KLSAgICBFeGFtcGxlCi0KLSAgICBg
YGBqYXZhc2NyaXB0Ci0gICAgdmFyIHBlb3BsZSA9IHN0b3JlLmFsbChBcHAuUGVyc29uKTsKLSAg
ICBwZW9wbGUuZ2V0KCdpc1VwZGF0aW5nJyk7IC8vIGZhbHNlCi0gICAgcGVvcGxlLnVwZGF0ZSgp
OwotICAgIHBlb3BsZS5nZXQoJ2lzVXBkYXRpbmcnKTsgLy8gdHJ1ZQotICAgIGBgYAotCi0gICAg
QHByb3BlcnR5IGlzVXBkYXRpbmcKLSAgICBAdHlwZSBCb29sZWFuCi0gICovCi0gIGlzVXBkYXRp
bmc6IGZhbHNlLAotCi0gIC8qKgotICAgIFRoZSBzdG9yZSB0aGF0IGNyZWF0ZWQgdGhpcyByZWNv
cmQgYXJyYXkuCi0KLSAgICBAcHJvcGVydHkgc3RvcmUKLSAgICBAcHJpdmF0ZQotICAgIEB0eXBl
IERTLlN0b3JlCi0gICovCi0gIHN0b3JlOiBudWxsLAotCi0gIC8qKgotICAgIFJldHJpZXZlcyBh
biBvYmplY3QgZnJvbSB0aGUgY29udGVudCBieSBpbmRleC4KLQotICAgIEBtZXRob2Qgb2JqZWN0
QXRDb250ZW50Ci0gICAgQHByaXZhdGUKLSAgICBAcGFyYW0ge051bWJlcn0gaW5kZXgKLSAgICBA
cmV0dXJuIHtEUy5Nb2RlbH0gcmVjb3JkCi0gICovCi0gIG9iamVjdEF0Q29udGVudDogZnVuY3Rp
b24oaW5kZXgpIHsKLSAgICB2YXIgY29udGVudCA9IGdldCh0aGlzLCAnY29udGVudCcpOwotCi0g
ICAgcmV0dXJuIGNvbnRlbnQub2JqZWN0QXQoaW5kZXgpOwotICB9LAotCi0gIC8qKgotICAgIFVz
ZWQgdG8gZ2V0IHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBhbGwgb2YgdGhlIHJlY29yZHMgaW4gdGhp
cyBhcnJheQotICAgIGZyb20gdGhlIGFkYXB0ZXIuCi0KLSAgICBFeGFtcGxlCi0KLSAgICBgYGBq
YXZhc2NyaXB0Ci0gICAgdmFyIHBlb3BsZSA9IHN0b3JlLmFsbChBcHAuUGVyc29uKTsKLSAgICBw
ZW9wbGUuZ2V0KCdpc1VwZGF0aW5nJyk7IC8vIGZhbHNlCi0gICAgcGVvcGxlLnVwZGF0ZSgpOwot
ICAgIHBlb3BsZS5nZXQoJ2lzVXBkYXRpbmcnKTsgLy8gdHJ1ZQotICAgIGBgYAotCi0gICAgQG1l
dGhvZCB1cGRhdGUKLSAgKi8KLSAgdXBkYXRlOiBmdW5jdGlvbigpIHsKLSAgICBpZiAoZ2V0KHRo
aXMsICdpc1VwZGF0aW5nJykpIHsgcmV0dXJuOyB9Ci0KLSAgICB2YXIgc3RvcmUgPSBnZXQodGhp
cywgJ3N0b3JlJyksCi0gICAgICAgIHR5cGUgPSBnZXQodGhpcywgJ3R5cGUnKTsKLQotICAgIHJl
dHVybiBzdG9yZS5mZXRjaEFsbCh0eXBlLCB0aGlzKTsKLSAgfSwKLQotICAvKioKLSAgICBBZGRz
IGEgcmVjb3JkIHRvIHRoZSBgUmVjb3JkQXJyYXlgLgotCi0gICAgQG1ldGhvZCBhZGRSZWNvcmQK
LSAgICBAcHJpdmF0ZQotICAgIEBwYXJhbSB7RFMuTW9kZWx9IHJlY29yZAotICAqLwotICBhZGRS
ZWNvcmQ6IGZ1bmN0aW9uKHJlY29yZCkgewotICAgIGdldCh0aGlzLCAnY29udGVudCcpLmFkZE9i
amVjdChyZWNvcmQpOwotICB9LAotCi0gIC8qKgotICAgIFJlbW92ZXMgYSByZWNvcmQgdG8gdGhl
IGBSZWNvcmRBcnJheWAuCi0KLSAgICBAbWV0aG9kIHJlbW92ZVJlY29yZAotICAgIEBwcml2YXRl
Ci0gICAgQHBhcmFtIHtEUy5Nb2RlbH0gcmVjb3JkCi0gICovCi0gIHJlbW92ZVJlY29yZDogZnVu
Y3Rpb24ocmVjb3JkKSB7Ci0gICAgZ2V0KHRoaXMsICdjb250ZW50JykucmVtb3ZlT2JqZWN0KHJl
Y29yZCk7Ci0gIH0sCi0KLSAgLyoqCi0gICAgU2F2ZXMgYWxsIG9mIHRoZSByZWNvcmRzIGluIHRo
ZSBgUmVjb3JkQXJyYXlgLgotCi0gICAgRXhhbXBsZQotCi0gICAgYGBgamF2YXNjcmlwdAotICAg
IHZhciBtZXNzYWdlcyA9IHN0b3JlLmFsbChBcHAuTWVzc2FnZSk7Ci0gICAgbWVzc2FnZXMuZm9y
RWFjaChmdW5jdGlvbihtZXNzYWdlKSB7Ci0gICAgICBtZXNzYWdlLnNldCgnaGFzQmVlblNlZW4n
LCB0cnVlKTsKLSAgICB9KTsKLSAgICBtZXNzYWdlcy5zYXZlKCk7Ci0gICAgYGBgCi0KLSAgICBA
bWV0aG9kIHNhdmUKLSAgICBAcmV0dXJuIHtEUy5Qcm9taXNlQXJyYXl9IHByb21pc2UKLSAgKi8K
LSAgc2F2ZTogZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHByb21pc2VMYWJlbCA9ICJEUzogUmVjb3Jk
QXJyYXkjc2F2ZSAiICsgZ2V0KHRoaXMsICd0eXBlJyk7Ci0gICAgdmFyIHByb21pc2UgPSBFbWJl
ci5SU1ZQLmFsbCh0aGlzLmludm9rZSgic2F2ZSIpLCBwcm9taXNlTGFiZWwpLnRoZW4oZnVuY3Rp
b24oYXJyYXkpIHsKLSAgICAgIHJldHVybiBFbWJlci5BKGFycmF5KTsKLSAgICB9LCBudWxsLCAi
RFM6IFJlY29yZEFycmF5I3NhdmUgYXBwbHkgRW1iZXIuTmF0aXZlQXJyYXkiKTsKLQotICAgIHJl
dHVybiBEUy5Qcm9taXNlQXJyYXkuY3JlYXRlKHsgcHJvbWlzZTogcHJvbWlzZSB9KTsKLSAgfQot
fSk7Ci0KLX0pKCk7Ci0KLQotCi0oZnVuY3Rpb24oKSB7Ci0vKioKLSAgQG1vZHVsZSBlbWJlci1k
YXRhCi0qLwotCi12YXIgZ2V0ID0gRW1iZXIuZ2V0OwotCi0vKioKLSAgUmVwcmVzZW50cyBhIGxp
c3Qgb2YgcmVjb3JkcyB3aG9zZSBtZW1iZXJzaGlwIGlzIGRldGVybWluZWQgYnkgdGhlCi0gIHN0
b3JlLiBBcyByZWNvcmRzIGFyZSBjcmVhdGVkLCBsb2FkZWQsIG9yIG1vZGlmaWVkLCB0aGUgc3Rv
cmUKLSAgZXZhbHVhdGVzIHRoZW0gdG8gZGV0ZXJtaW5lIGlmIHRoZXkgc2hvdWxkIGJlIHBhcnQg
b2YgdGhlIHJlY29yZAotICBhcnJheS4KLQotICBAY2xhc3MgRmlsdGVyZWRSZWNvcmRBcnJheQot
ICBAbmFtZXNwYWNlIERTCi0gIEBleHRlbmRzIERTLlJlY29yZEFycmF5Ci0qLwotRFMuRmlsdGVy
ZWRSZWNvcmRBcnJheSA9IERTLlJlY29yZEFycmF5LmV4dGVuZCh7Ci0gIC8qKgotICAgIFRoZSBm
aWx0ZXJGdW5jdGlvbiBpcyBhIGZ1bmN0aW9uIHVzZWQgdG8gdGVzdCByZWNvcmRzIGZyb20gdGhl
IHN0b3JlIHRvCi0gICAgZGV0ZXJtaW5lIGlmIHRoZXkgc2hvdWxkIGJlIHBhcnQgb2YgdGhlIHJl
Y29yZCBhcnJheS4KLQotICAgIEV4YW1wbGUKLQotICAgIGBgYGphdmFzY3JpcHQKLSAgICB2YXIg
YWxsUGVvcGxlID0gc3RvcmUuYWxsKCdwZXJzb24nKTsKLSAgICBhbGxQZW9wbGUubWFwQnkoJ25h
bWUnKTsgLy8gWyJUb20gRGFsZSIsICJZZWh1ZGEgS2F0eiIsICJUcmVrIEdsb3dhY2tpIl0KLQot
ICAgIHZhciBwZW9wbGUgPSBzdG9yZS5maWx0ZXIoJ3BlcnNvbicsIGZ1bmN0aW9uKHBlcnNvbikg
ewotICAgICAgaWYgKHBlcnNvbi5nZXQoJ25hbWUnKS5tYXRjaCgvS2F0eiQvKSkgeyByZXR1cm4g
dHJ1ZTsgfQotICAgIH0pOwotICAgIHBlb3BsZS5tYXBCeSgnbmFtZScpOyAvLyBbIlllaHVkYSBL
YXR6Il0KLQotICAgIHZhciBub3RLYXR6RmlsdGVyID0gZnVuY3Rpb24ocGVyc29uKSB7Ci0gICAg
ICByZXR1cm4gIXBlcnNvbi5nZXQoJ25hbWUnKS5tYXRjaCgvS2F0eiQvKTsKLSAgICB9OwotICAg
IHBlb3BsZS5zZXQoJ2ZpbHRlckZ1bmN0aW9uJywgbm90S2F0ekZpbHRlcik7Ci0gICAgcGVvcGxl
Lm1hcEJ5KCduYW1lJyk7IC8vIFsiVG9tIERhbGUiLCAiVHJlayBHbG93YWNraSJdCi0gICAgYGBg
Ci0KLSAgICBAbWV0aG9kIGZpbHRlckZ1bmN0aW9uCi0gICAgQHBhcmFtIHtEUy5Nb2RlbH0gcmVj
b3JkCi0gICAgQHJldHVybiB7Qm9vbGVhbn0gYHRydWVgIGlmIHRoZSByZWNvcmQgc2hvdWxkIGJl
IGluIHRoZSBhcnJheQotICAqLwotICBmaWx0ZXJGdW5jdGlvbjogbnVsbCwKLSAgaXNMb2FkZWQ6
IHRydWUsCi0KLSAgcmVwbGFjZTogZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHR5cGUgPSBnZXQodGhp
cywgJ3R5cGUnKS50b1N0cmluZygpOwotICAgIHRocm93IG5ldyBFcnJvcigiVGhlIHJlc3VsdCBv
ZiBhIGNsaWVudC1zaWRlIGZpbHRlciAob24gIiArIHR5cGUgKyAiKSBpcyBpbW11dGFibGUuIik7
Ci0gIH0sCi0KLSAgLyoqCi0gICAgQG1ldGhvZCB1cGRhdGVGaWx0ZXIKLSAgICBAcHJpdmF0ZQot
ICAqLwotICB1cGRhdGVGaWx0ZXI6IEVtYmVyLm9ic2VydmVyKGZ1bmN0aW9uKCkgewotICAgIHZh
ciBtYW5hZ2VyID0gZ2V0KHRoaXMsICdtYW5hZ2VyJyk7Ci0gICAgbWFuYWdlci51cGRhdGVGaWx0
ZXIodGhpcywgZ2V0KHRoaXMsICd0eXBlJyksIGdldCh0aGlzLCAnZmlsdGVyRnVuY3Rpb24nKSk7
Ci0gIH0sICdmaWx0ZXJGdW5jdGlvbicpCi19KTsKLQotfSkoKTsKLQotCi0KLShmdW5jdGlvbigp
IHsKLS8qKgotICBAbW9kdWxlIGVtYmVyLWRhdGEKLSovCi0KLXZhciBnZXQgPSBFbWJlci5nZXQs
IHNldCA9IEVtYmVyLnNldDsKLQotLyoqCi0gIFJlcHJlc2VudHMgYW4gb3JkZXJlZCBsaXN0IG9m
IHJlY29yZHMgd2hvc2Ugb3JkZXIgYW5kIG1lbWJlcnNoaXAgaXMKLSAgZGV0ZXJtaW5lZCBieSB0
aGUgYWRhcHRlci4gRm9yIGV4YW1wbGUsIGEgcXVlcnkgc2VudCB0byB0aGUgYWRhcHRlcgotICBt
YXkgdHJpZ2dlciBhIHNlYXJjaCBvbiB0aGUgc2VydmVyLCB3aG9zZSByZXN1bHRzIHdvdWxkIGJl
IGxvYWRlZAotICBpbnRvIGFuIGluc3RhbmNlIG9mIHRoZSBgQWRhcHRlclBvcHVsYXRlZFJlY29y
ZEFycmF5YC4KLQotICBAY2xhc3MgQWRhcHRlclBvcHVsYXRlZFJlY29yZEFycmF5Ci0gIEBuYW1l
c3BhY2UgRFMKLSAgQGV4dGVuZHMgRFMuUmVjb3JkQXJyYXkKLSovCi1EUy5BZGFwdGVyUG9wdWxh
dGVkUmVjb3JkQXJyYXkgPSBEUy5SZWNvcmRBcnJheS5leHRlbmQoewotICBxdWVyeTogbnVsbCwK
LQotICByZXBsYWNlOiBmdW5jdGlvbigpIHsKLSAgICB2YXIgdHlwZSA9IGdldCh0aGlzLCAndHlw
ZScpLnRvU3RyaW5nKCk7Ci0gICAgdGhyb3cgbmV3IEVycm9yKCJUaGUgcmVzdWx0IG9mIGEgc2Vy
dmVyIHF1ZXJ5IChvbiAiICsgdHlwZSArICIpIGlzIGltbXV0YWJsZS4iKTsKLSAgfSwKLQotICAv
KioKLSAgICBAbWV0aG9kIGxvYWQKLSAgICBAcHJpdmF0ZQotICAgIEBwYXJhbSB7QXJyYXl9IGRh
dGEKLSAgKi8KLSAgbG9hZDogZnVuY3Rpb24oZGF0YSkgewotICAgIHZhciBzdG9yZSA9IGdldCh0
aGlzLCAnc3RvcmUnKSwKLSAgICAgICAgdHlwZSA9IGdldCh0aGlzLCAndHlwZScpLAotICAgICAg
ICByZWNvcmRzID0gc3RvcmUucHVzaE1hbnkodHlwZSwgZGF0YSksCi0gICAgICAgIG1ldGEgPSBz
dG9yZS5tZXRhZGF0YUZvcih0eXBlKTsKLQotICAgIHRoaXMuc2V0UHJvcGVydGllcyh7Ci0gICAg
ICBjb250ZW50OiBFbWJlci5BKHJlY29yZHMpLAotICAgICAgaXNMb2FkZWQ6IHRydWUsCi0gICAg
ICBtZXRhOiBtZXRhCi0gICAgfSk7Ci0KLSAgICAvLyBUT0RPOiBkb2VzIHRyaWdnZXJpbmcgZGlk
TG9hZCBldmVudCBzaG91bGQgYmUgdGhlIGxhc3QgYWN0aW9uIG9mIHRoZSBydW5Mb29wPwotICAg
IEVtYmVyLnJ1bi5vbmNlKHRoaXMsICd0cmlnZ2VyJywgJ2RpZExvYWQnKTsKLSAgfQotfSk7Ci0K
LX0pKCk7Ci0KLQotCi0oZnVuY3Rpb24oKSB7Ci0vKioKLSAgQG1vZHVsZSBlbWJlci1kYXRhCi0q
LwotCi12YXIgZ2V0ID0gRW1iZXIuZ2V0LCBzZXQgPSBFbWJlci5zZXQ7Ci12YXIgbWFwID0gRW1i
ZXIuRW51bWVyYWJsZVV0aWxzLm1hcDsKLQotLyoqCi0gIEEgYE1hbnlBcnJheWAgaXMgYSBgUmVj
b3JkQXJyYXlgIHRoYXQgcmVwcmVzZW50cyB0aGUgY29udGVudHMgb2YgYSBoYXMtbWFueQotICBy
ZWxhdGlvbnNoaXAuCi0KLSAgVGhlIGBNYW55QXJyYXlgIGlzIGluc3RhbnRpYXRlZCBsYXppbHkg
dGhlIGZpcnN0IHRpbWUgdGhlIHJlbGF0aW9uc2hpcCBpcwotICByZXF1ZXN0ZWQuCi0KLSAgIyMj
IEludmVyc2VzCi0KLSAgT2Z0ZW4sIHRoZSByZWxhdGlvbnNoaXBzIGluIEVtYmVyIERhdGEgYXBw
bGljYXRpb25zIHdpbGwgaGF2ZQotICBhbiBpbnZlcnNlLiBGb3IgZXhhbXBsZSwgaW1hZ2luZSB0
aGUgZm9sbG93aW5nIG1vZGVscyBhcmUKLSAgZGVmaW5lZDoKLQotICBgYGBqYXZhc2NyaXB0Ci0g
IEFwcC5Qb3N0ID0gRFMuTW9kZWwuZXh0ZW5kKHsKLSAgICBjb21tZW50czogRFMuaGFzTWFueSgn
Y29tbWVudCcpCi0gIH0pOwotCi0gIEFwcC5Db21tZW50ID0gRFMuTW9kZWwuZXh0ZW5kKHsKLSAg
ICBwb3N0OiBEUy5iZWxvbmdzVG8oJ3Bvc3QnKQotICB9KTsKLSAgYGBgCi0KLSAgSWYgeW91IGNy
ZWF0ZWQgYSBuZXcgaW5zdGFuY2Ugb2YgYEFwcC5Qb3N0YCBhbmQgYWRkZWQKLSAgYSBgQXBwLkNv
bW1lbnRgIHJlY29yZCB0byBpdHMgYGNvbW1lbnRzYCBoYXMtbWFueQotICByZWxhdGlvbnNoaXAs
IHlvdSB3b3VsZCBleHBlY3QgdGhlIGNvbW1lbnQncyBgcG9zdGAKLSAgcHJvcGVydHkgdG8gYmUg
c2V0IHRvIHRoZSBwb3N0IHRoYXQgY29udGFpbmVkCi0gIHRoZSBoYXMtbWFueS4KLQotICBXZSBj
YWxsIHRoZSByZWNvcmQgdG8gd2hpY2ggYSByZWxhdGlvbnNoaXAgYmVsb25ncyB0aGUKLSAgcmVs
YXRpb25zaGlwJ3MgX293bmVyXy4KLQotICBAY2xhc3MgTWFueUFycmF5Ci0gIEBuYW1lc3BhY2Ug
RFMKLSAgQGV4dGVuZHMgRFMuUmVjb3JkQXJyYXkKLSovCi1EUy5NYW55QXJyYXkgPSBEUy5SZWNv
cmRBcnJheS5leHRlbmQoewotICBpbml0OiBmdW5jdGlvbigpIHsKLSAgICB0aGlzLl9zdXBlci5h
cHBseSh0aGlzLCBhcmd1bWVudHMpOwotICAgIHRoaXMuX2NoYW5nZXNUb1N5bmMgPSBFbWJlci5P
cmRlcmVkU2V0LmNyZWF0ZSgpOwotICB9LAotCi0gIC8qKgotICAgIFRoZSBwcm9wZXJ0eSBuYW1l
IG9mIHRoZSByZWxhdGlvbnNoaXAKLQotICAgIEBwcm9wZXJ0eSB7U3RyaW5nfSBuYW1lCi0gICAg
QHByaXZhdGUKLSAgKi8KLSAgbmFtZTogbnVsbCwKLQotICAvKioKLSAgICBUaGUgcmVjb3JkIHRv
IHdoaWNoIHRoaXMgcmVsYXRpb25zaGlwIGJlbG9uZ3MuCi0KLSAgICBAcHJvcGVydHkge0RTLk1v
ZGVsfSBvd25lcgotICAgIEBwcml2YXRlCi0gICovCi0gIG93bmVyOiBudWxsLAotCi0gIC8qKgot
ICAgIGB0cnVlYCBpZiB0aGUgcmVsYXRpb25zaGlwIGlzIHBvbHltb3JwaGljLCBgZmFsc2VgIG90
aGVyd2lzZS4KLQotICAgIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gaXNQb2x5bW9ycGhpYwotICAgIEBw
cml2YXRlCi0gICovCi0gIGlzUG9seW1vcnBoaWM6IGZhbHNlLAotCi0gIC8vIExPQURJTkcgU1RB
VEUKLQotICBpc0xvYWRlZDogZmFsc2UsCi0KLSAgLyoqCi0gICAgVXNlZCBmb3IgYXN5bmMgYGhh
c01hbnlgIGFycmF5cwotICAgIHRvIGtlZXAgdHJhY2sgb2Ygd2hlbiB0aGV5IHdpbGwgcmVzb2x2
ZS4KLQotICAgIEBwcm9wZXJ0eSB7RW1iZXIuUlNWUC5Qcm9taXNlfSBwcm9taXNlCi0gICAgQHBy
aXZhdGUKLSAgKi8KLSAgcHJvbWlzZTogbnVsbCwKLQotICAvKioKLSAgICBAbWV0aG9kIGxvYWRp
bmdSZWNvcmRzQ291bnQKLSAgICBAcGFyYW0ge051bWJlcn0gY291bnQKLSAgICBAcHJpdmF0ZQot
ICAqLwotICBsb2FkaW5nUmVjb3Jkc0NvdW50OiBmdW5jdGlvbihjb3VudCkgewotICAgIHRoaXMu
bG9hZGluZ1JlY29yZHNDb3VudCA9IGNvdW50OwotICB9LAotCi0gIC8qKgotICAgIEBtZXRob2Qg
bG9hZGVkUmVjb3JkCi0gICAgQHByaXZhdGUKLSAgKi8KLSAgbG9hZGVkUmVjb3JkOiBmdW5jdGlv
bigpIHsKLSAgICB0aGlzLmxvYWRpbmdSZWNvcmRzQ291bnQtLTsKLSAgICBpZiAodGhpcy5sb2Fk
aW5nUmVjb3Jkc0NvdW50ID09PSAwKSB7Ci0gICAgICBzZXQodGhpcywgJ2lzTG9hZGVkJywgdHJ1
ZSk7Ci0gICAgICB0aGlzLnRyaWdnZXIoJ2RpZExvYWQnKTsKLSAgICB9Ci0gIH0sCi0KLSAgLyoq
Ci0gICAgQG1ldGhvZCBmZXRjaAotICAgIEBwcml2YXRlCi0gICovCi0gIGZldGNoOiBmdW5jdGlv
bigpIHsKLSAgICB2YXIgcmVjb3JkcyA9IGdldCh0aGlzLCAnY29udGVudCcpLAotICAgICAgICBz
dG9yZSA9IGdldCh0aGlzLCAnc3RvcmUnKSwKLSAgICAgICAgb3duZXIgPSBnZXQodGhpcywgJ293
bmVyJyksCi0gICAgICAgIHJlc29sdmVyID0gRW1iZXIuUlNWUC5kZWZlcigiRFM6IE1hbnlBcnJh
eSNmZXRjaCAiICsgZ2V0KHRoaXMsICd0eXBlJykpOwotCi0gICAgdmFyIHVubG9hZGVkUmVjb3Jk
cyA9IHJlY29yZHMuZmlsdGVyUHJvcGVydHkoJ2lzRW1wdHknLCB0cnVlKTsKLSAgICBzdG9yZS5m
ZXRjaE1hbnkodW5sb2FkZWRSZWNvcmRzLCBvd25lciwgcmVzb2x2ZXIpOwotICB9LAotCi0gIC8v
IE92ZXJyaWRlcyBFbWJlci5BcnJheSdzIHJlcGxhY2UgbWV0aG9kIHRvIGltcGxlbWVudAotICBy
ZXBsYWNlQ29udGVudDogZnVuY3Rpb24oaW5kZXgsIHJlbW92ZWQsIGFkZGVkKSB7Ci0gICAgLy8g
TWFwIHRoZSBhcnJheSBvZiByZWNvcmQgb2JqZWN0cyBpbnRvIGFuIGFycmF5IG9mICBjbGllbnQg
aWRzLgotICAgIGFkZGVkID0gbWFwKGFkZGVkLCBmdW5jdGlvbihyZWNvcmQpIHsKLSAgICAgIEVt
YmVyLmFzc2VydCgiWW91IGNhbm5vdCBhZGQgJyIgKyByZWNvcmQuY29uc3RydWN0b3IudHlwZUtl
eSArICInIHJlY29yZHMgdG8gdGhpcyByZWxhdGlvbnNoaXAgKG9ubHkgJyIgKyB0aGlzLnR5cGUu
dHlwZUtleSArICInIGFsbG93ZWQpIiwgIXRoaXMudHlwZSB8fCByZWNvcmQgaW5zdGFuY2VvZiB0
aGlzLnR5cGUpOwotICAgICAgcmV0dXJuIHJlY29yZDsKLSAgICB9LCB0aGlzKTsKLQotICAgIHRo
aXMuX3N1cGVyKGluZGV4LCByZW1vdmVkLCBhZGRlZCk7Ci0gIH0sCi0KLSAgYXJyYW5nZWRDb250
ZW50RGlkQ2hhbmdlOiBmdW5jdGlvbigpIHsKLSAgICBFbWJlci5ydW4ub25jZSh0aGlzLCAnZmV0
Y2gnKTsKLSAgfSwKLQotICBhcnJheUNvbnRlbnRXaWxsQ2hhbmdlOiBmdW5jdGlvbihpbmRleCwg
cmVtb3ZlZCwgYWRkZWQpIHsKLSAgICB2YXIgb3duZXIgPSBnZXQodGhpcywgJ293bmVyJyksCi0g
ICAgICAgIG5hbWUgPSBnZXQodGhpcywgJ25hbWUnKTsKLQotICAgIGlmICghb3duZXIuX3N1c3Bl
bmRlZFJlbGF0aW9uc2hpcHMpIHsKLSAgICAgIC8vIFRoaXMgY29kZSBpcyB0aGUgZmlyc3QgaGFs
ZiBvZiBjb2RlIHRoYXQgY29udGludWVzIGluc2lkZQotICAgICAgLy8gb2YgYXJyYXlDb250ZW50
RGlkQ2hhbmdlLiBJdCBnZXRzIG9yIGNyZWF0ZXMgYSBjaGFuZ2UgZnJvbQotICAgICAgLy8gdGhl
IGNoaWxkIG9iamVjdCwgYWRkcyB0aGUgY3VycmVudCBvd25lciBhcyB0aGUgb2xkCi0gICAgICAv
LyBwYXJlbnQgaWYgdGhpcyBpcyB0aGUgZmlyc3QgdGltZSB0aGUgb2JqZWN0IHdhcyByZW1vdmVk
Ci0gICAgICAvLyBmcm9tIGEgTWFueUFycmF5LCBhbmQgc2V0cyBgbmV3UGFyZW50YCB0byBudWxs
LgotICAgICAgLy8KLSAgICAgIC8vIExhdGVyLCBpZiB0aGUgb2JqZWN0IGlzIGFkZGVkIHRvIGFu
b3RoZXIgTWFueUFycmF5LAotICAgICAgLy8gdGhlIGBhcnJheUNvbnRlbnREaWRDaGFuZ2VgIHdp
bGwgc2V0IGBuZXdQYXJlbnRgIG9uCi0gICAgICAvLyB0aGUgY2hhbmdlLgotICAgICAgZm9yICh2
YXIgaT1pbmRleDsgaTxpbmRleCtyZW1vdmVkOyBpKyspIHsKLSAgICAgICAgdmFyIHJlY29yZCA9
IGdldCh0aGlzLCAnY29udGVudCcpLm9iamVjdEF0KGkpOwotCi0gICAgICAgIHZhciBjaGFuZ2Ug
PSBEUy5SZWxhdGlvbnNoaXBDaGFuZ2UuY3JlYXRlQ2hhbmdlKG93bmVyLCByZWNvcmQsIGdldCh0
aGlzLCAnc3RvcmUnKSwgewotICAgICAgICAgIHBhcmVudFR5cGU6IG93bmVyLmNvbnN0cnVjdG9y
LAotICAgICAgICAgIGNoYW5nZVR5cGU6ICJyZW1vdmUiLAotICAgICAgICAgIGtpbmQ6ICJoYXNN
YW55IiwKLSAgICAgICAgICBrZXk6IG5hbWUKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgdGhpcy5f
Y2hhbmdlc1RvU3luYy5hZGQoY2hhbmdlKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4g
dGhpcy5fc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKLSAgfSwKLQotICBhcnJheUNvbnRl
bnREaWRDaGFuZ2U6IGZ1bmN0aW9uKGluZGV4LCByZW1vdmVkLCBhZGRlZCkgewotICAgIHRoaXMu
X3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7Ci0KLSAgICB2YXIgb3duZXIgPSBnZXQodGhp
cywgJ293bmVyJyksCi0gICAgICAgIG5hbWUgPSBnZXQodGhpcywgJ25hbWUnKSwKLSAgICAgICAg
c3RvcmUgPSBnZXQodGhpcywgJ3N0b3JlJyk7Ci0KLSAgICBpZiAoIW93bmVyLl9zdXNwZW5kZWRS
ZWxhdGlvbnNoaXBzKSB7Ci0gICAgICAvLyBUaGlzIGNvZGUgaXMgdGhlIHNlY29uZCBoYWxmIG9m
IGNvZGUgdGhhdCBzdGFydGVkIGluCi0gICAgICAvLyBgYXJyYXlDb250ZW50V2lsbENoYW5nZWAu
IEl0IGdldHMgb3IgY3JlYXRlcyBhIGNoYW5nZQotICAgICAgLy8gZnJvbSB0aGUgY2hpbGQgb2Jq
ZWN0LCBhbmQgYWRkcyB0aGUgY3VycmVudCBvd25lciBhcwotICAgICAgLy8gdGhlIG5ldyBwYXJl
bnQuCi0gICAgICBmb3IgKHZhciBpPWluZGV4OyBpPGluZGV4K2FkZGVkOyBpKyspIHsKLSAgICAg
ICAgdmFyIHJlY29yZCA9IGdldCh0aGlzLCAnY29udGVudCcpLm9iamVjdEF0KGkpOwotCi0gICAg
ICAgIHZhciBjaGFuZ2UgPSBEUy5SZWxhdGlvbnNoaXBDaGFuZ2UuY3JlYXRlQ2hhbmdlKG93bmVy
LCByZWNvcmQsIHN0b3JlLCB7Ci0gICAgICAgICAgcGFyZW50VHlwZTogb3duZXIuY29uc3RydWN0
b3IsCi0gICAgICAgICAgY2hhbmdlVHlwZTogImFkZCIsCi0gICAgICAgICAga2luZDoiaGFzTWFu
eSIsCi0gICAgICAgICAga2V5OiBuYW1lCi0gICAgICAgIH0pOwotICAgICAgICBjaGFuZ2UuaGFz
TWFueU5hbWUgPSBuYW1lOwotCi0gICAgICAgIHRoaXMuX2NoYW5nZXNUb1N5bmMuYWRkKGNoYW5n
ZSk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIFdlIHdhaXQgdW50aWwgdGhlIGFycmF5IGhhcyBmaW5p
c2hlZCBiZWluZwotICAgICAgLy8gbXV0YXRlZCBiZWZvcmUgc3luY2luZyB0aGUgT25lVG9NYW55
Q2hhbmdlcyBjcmVhdGVkCi0gICAgICAvLyBpbiBhcnJheUNvbnRlbnRXaWxsQ2hhbmdlLCBzbyB0
aGF0IHRoZSBhcnJheQotICAgICAgLy8gbWVtYmVyc2hpcCB0ZXN0IGluIHRoZSBzeW5jKCkgbG9n
aWMgb3BlcmF0ZXMKLSAgICAgIC8vIG9uIHRoZSBmaW5hbCByZXN1bHRzLgotICAgICAgdGhpcy5f
Y2hhbmdlc1RvU3luYy5mb3JFYWNoKGZ1bmN0aW9uKGNoYW5nZSkgewotICAgICAgICBjaGFuZ2Uu
c3luYygpOwotICAgICAgfSk7Ci0KLSAgICAgIHRoaXMuX2NoYW5nZXNUb1N5bmMuY2xlYXIoKTsK
LSAgICB9Ci0gIH0sCi0KLSAgLyoqCi0gICAgQ3JlYXRlIGEgY2hpbGQgcmVjb3JkIHdpdGhpbiB0
aGUgb3duZXIKLQotICAgIEBtZXRob2QgY3JlYXRlUmVjb3JkCi0gICAgQHByaXZhdGUKLSAgICBA
cGFyYW0ge09iamVjdH0gaGFzaAotICAgIEByZXR1cm4ge0RTLk1vZGVsfSByZWNvcmQKLSAgKi8K
LSAgY3JlYXRlUmVjb3JkOiBmdW5jdGlvbihoYXNoKSB7Ci0gICAgdmFyIG93bmVyID0gZ2V0KHRo
aXMsICdvd25lcicpLAotICAgICAgICBzdG9yZSA9IGdldChvd25lciwgJ3N0b3JlJyksCi0gICAg
ICAgIHR5cGUgPSBnZXQodGhpcywgJ3R5cGUnKSwKLSAgICAgICAgcmVjb3JkOwotCi0gICAgRW1i
ZXIuYXNzZXJ0KCJZb3UgY2Fubm90IGFkZCAnIiArIHR5cGUudHlwZUtleSArICInIHJlY29yZHMg
dG8gdGhpcyBwb2x5bW9ycGhpYyByZWxhdGlvbnNoaXAuIiwgIWdldCh0aGlzLCAnaXNQb2x5bW9y
cGhpYycpKTsKLQotICAgIHJlY29yZCA9IHN0b3JlLmNyZWF0ZVJlY29yZC5jYWxsKHN0b3JlLCB0
eXBlLCBoYXNoKTsKLSAgICB0aGlzLnB1c2hPYmplY3QocmVjb3JkKTsKLQotICAgIHJldHVybiBy
ZWNvcmQ7Ci0gIH0KLQotfSk7Ci0KLX0pKCk7Ci0KLQotCi0oZnVuY3Rpb24oKSB7Ci0vKioKLSAg
QG1vZHVsZSBlbWJlci1kYXRhCi0qLwotCi19KSgpOwotCi0KLQotKGZ1bmN0aW9uKCkgewotLypn
bG9iYWxzIEVtYmVyKi8KLS8qanNoaW50IGVxbnVsbDp0cnVlKi8KLS8qKgotICBAbW9kdWxlIGVt
YmVyLWRhdGEKLSovCi0KLXZhciBnZXQgPSBFbWJlci5nZXQsIHNldCA9IEVtYmVyLnNldDsKLXZh
ciBvbmNlID0gRW1iZXIucnVuLm9uY2U7Ci12YXIgaXNOb25lID0gRW1iZXIuaXNOb25lOwotdmFy
IGZvckVhY2ggPSBFbWJlci5FbnVtZXJhYmxlVXRpbHMuZm9yRWFjaDsKLXZhciBpbmRleE9mID0g
RW1iZXIuRW51bWVyYWJsZVV0aWxzLmluZGV4T2Y7Ci12YXIgbWFwID0gRW1iZXIuRW51bWVyYWJs
ZVV0aWxzLm1hcDsKLXZhciByZXNvbHZlID0gRW1iZXIuUlNWUC5yZXNvbHZlOwotdmFyIGNvcHkg
PSBFbWJlci5jb3B5OwotCi0vLyBJbXBsZW1lbnRvcnMgTm90ZToKLS8vCi0vLyAgIFRoZSB2YXJp
YWJsZXMgaW4gdGhpcyBmaWxlIGFyZSBjb25zaXN0ZW50bHkgbmFtZWQgYWNjb3JkaW5nIHRvIHRo
ZSBmb2xsb3dpbmcKLS8vICAgc2NoZW1lOgotLy8KLS8vICAgKiAraWQrIG1lYW5zIGFuIGlkZW50
aWZpZXIgbWFuYWdlZCBieSBhbiBleHRlcm5hbCBzb3VyY2UsIHByb3ZpZGVkIGluc2lkZQotLy8g
ICAgIHRoZSBkYXRhIHByb3ZpZGVkIGJ5IHRoYXQgc291cmNlLiBUaGVzZSBhcmUgYWx3YXlzIGNv
ZXJjZWQgdG8gYmUgc3RyaW5ncwotLy8gICAgIGJlZm9yZSBiZWluZyB1c2VkIGludGVybmFsbHku
Ci0vLyAgICogK2NsaWVudElkKyBtZWFucyBhIHRyYW5zaWVudCBudW1lcmljYWwgaWRlbnRpZmll
ciBnZW5lcmF0ZWQgYXQgcnVudGltZSBieQotLy8gICAgIHRoZSBkYXRhIHN0b3JlLiBJdCBpcyBp
bXBvcnRhbnQgcHJpbWFyaWx5IGJlY2F1c2UgbmV3bHkgY3JlYXRlZCBvYmplY3RzIG1heQotLy8g
ICAgIG5vdCB5ZXQgaGF2ZSBhbiBleHRlcm5hbGx5IGdlbmVyYXRlZCBpZC4KLS8vICAgKiArcmVm
ZXJlbmNlKyBtZWFucyBhIHJlY29yZCByZWZlcmVuY2Ugb2JqZWN0LCB3aGljaCBob2xkcyBtZXRh
ZGF0YSBhYm91dCBhCi0vLyAgICAgcmVjb3JkLCBldmVuIGlmIGl0IGhhcyBub3QgeWV0IGJlZW4g
ZnVsbHkgbWF0ZXJpYWxpemVkLgotLy8gICAqICt0eXBlKyBtZWFucyBhIHN1YmNsYXNzIG9mIERT
Lk1vZGVsLgotCi0vLyBVc2VkIGJ5IHRoZSBzdG9yZSB0byBub3JtYWxpemUgSURzIGVudGVyaW5n
IHRoZSBzdG9yZS4gIERlc3BpdGUgdGhlIGZhY3QKLS8vIHRoYXQgZGV2ZWxvcGVycyBtYXkgcHJv
dmlkZSBJRHMgYXMgbnVtYmVycyAoZS5nLiwgYHN0b3JlLmZpbmQoUGVyc29uLCAxKWApLAotLy8g
aXQgaXMgaW1wb3J0YW50IHRoYXQgaW50ZXJuYWxseSB3ZSB1c2Ugc3RyaW5ncywgc2luY2UgSURz
IG1heSBiZSBzZXJpYWxpemVkCi0vLyBhbmQgbG9zZSB0eXBlIGluZm9ybWF0aW9uLiAgRm9yIGV4
YW1wbGUsIEVtYmVyJ3Mgcm91dGVyIG1heSBwdXQgYSByZWNvcmQncwotLy8gSUQgaW50byB0aGUg
VVJMLCBhbmQgaWYgd2UgbGF0ZXIgdHJ5IHRvIGRlc2VyaWFsaXplIHRoYXQgVVJMIGFuZCBmaW5k
IHRoZQotLy8gY29ycmVzcG9uZGluZyByZWNvcmQsIHdlIHdpbGwgbm90IGtub3cgaWYgaXQgaXMg
YSBzdHJpbmcgb3IgYSBudW1iZXIuCi12YXIgY29lcmNlSWQgPSBmdW5jdGlvbihpZCkgewotICBy
ZXR1cm4gaWQgPT0gbnVsbCA/IG51bGwgOiBpZCsnJzsKLX07Ci0KLS8qKgotICBUaGUgc3RvcmUg
Y29udGFpbnMgYWxsIG9mIHRoZSBkYXRhIGZvciByZWNvcmRzIGxvYWRlZCBmcm9tIHRoZSBzZXJ2
ZXIuCi0gIEl0IGlzIGFsc28gcmVzcG9uc2libGUgZm9yIGNyZWF0aW5nIGluc3RhbmNlcyBvZiBg
RFMuTW9kZWxgIHRoYXQgd3JhcAotICB0aGUgaW5kaXZpZHVhbCBkYXRhIGZvciBhIHJlY29yZCwg
c28gdGhhdCB0aGV5IGNhbiBiZSBib3VuZCB0byBpbiB5b3VyCi0gIEhhbmRsZWJhcnMgdGVtcGxh
dGVzLgotCi0gIERlZmluZSB5b3VyIGFwcGxpY2F0aW9uJ3Mgc3RvcmUgbGlrZSB0aGlzOgotCi0g
IGBgYGphdmFzY3JpcHQKLSAgTXlBcHAuU3RvcmUgPSBEUy5TdG9yZS5leHRlbmQoKTsKLSAgYGBg
Ci0KLSAgTW9zdCBFbWJlci5qcyBhcHBsaWNhdGlvbnMgd2lsbCBvbmx5IGhhdmUgYSBzaW5nbGUg
YERTLlN0b3JlYCB0aGF0IGlzCi0gIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCBieSB0aGVpciBgRW1i
ZXIuQXBwbGljYXRpb25gLgotCi0gIFlvdSBjYW4gcmV0cmlldmUgbW9kZWxzIGZyb20gdGhlIHN0
b3JlIGluIHNldmVyYWwgd2F5cy4gVG8gcmV0cmlldmUgYSByZWNvcmQKLSAgZm9yIGEgc3BlY2lm
aWMgaWQsIHVzZSBgRFMuU3RvcmVgJ3MgYGZpbmQoKWAgbWV0aG9kOgotCi0gIGBgYGphdmFzY3Jp
cHQKLSAgdmFyIHBlcnNvbiA9IHN0b3JlLmZpbmQoJ3BlcnNvbicsIDEyMyk7Ci0gIGBgYAotCi0g
IElmIHlvdXIgYXBwbGljYXRpb24gaGFzIG11bHRpcGxlIGBEUy5TdG9yZWAgaW5zdGFuY2VzIChh
biB1bnVzdWFsIGNhc2UpLCB5b3UgY2FuCi0gIHNwZWNpZnkgd2hpY2ggc3RvcmUgc2hvdWxkIGJl
IHVzZWQ6Ci0KLSAgYGBgamF2YXNjcmlwdAotICB2YXIgcGVyc29uID0gc3RvcmUuZmluZChBcHAu
UGVyc29uLCAxMjMpOwotICBgYGAKLQotICBCeSBkZWZhdWx0LCB0aGUgc3RvcmUgd2lsbCB0YWxr
IHRvIHlvdXIgYmFja2VuZCB1c2luZyBhIHN0YW5kYXJkCi0gIFJFU1QgbWVjaGFuaXNtLiBZb3Ug
Y2FuIGN1c3RvbWl6ZSBob3cgdGhlIHN0b3JlIHRhbGtzIHRvIHlvdXIKLSAgYmFja2VuZCBieSBz
cGVjaWZ5aW5nIGEgY3VzdG9tIGFkYXB0ZXI6Ci0KLSAgYGBgamF2YXNjcmlwdAotICAgTXlBcHAu
c3RvcmUgPSBEUy5TdG9yZS5jcmVhdGUoewotICAgICBhZGFwdGVyOiAnTXlBcHAuQ3VzdG9tQWRh
cHRlcicKLSAgIH0pOwotICAgYGBgCi0KLSAgWW91IGNhbiBsZWFybiBtb3JlIGFib3V0IHdyaXRp
bmcgYSBjdXN0b20gYWRhcHRlciBieSByZWFkaW5nIHRoZSBgRFMuQWRhcHRlcmAKLSAgZG9jdW1l
bnRhdGlvbi4KLQotICBAY2xhc3MgU3RvcmUKLSAgQG5hbWVzcGFjZSBEUwotICBAZXh0ZW5kcyBF
bWJlci5PYmplY3QKLSovCi1EUy5TdG9yZSA9IEVtYmVyLk9iamVjdC5leHRlbmQoewotCi0gIC8q
KgotICAgIEBtZXRob2QgaW5pdAotICAgIEBwcml2YXRlCi0gICovCi0gIGluaXQ6IGZ1bmN0aW9u
KCkgewotICAgIC8vIGludGVybmFsIGJvb2trZWVwaW5nOyBub3Qgb2JzZXJ2YWJsZQotICAgIHRo
aXMudHlwZU1hcHMgPSB7fTsKLSAgICB0aGlzLnJlY29yZEFycmF5TWFuYWdlciA9IERTLlJlY29y
ZEFycmF5TWFuYWdlci5jcmVhdGUoewotICAgICAgc3RvcmU6IHRoaXMKLSAgICB9KTsKLSAgICB0
aGlzLl9yZWxhdGlvbnNoaXBDaGFuZ2VzID0ge307Ci0gICAgdGhpcy5fcGVuZGluZ1NhdmUgPSBb
XTsKLSAgfSwKLQotICAvKioKLSAgICBUaGUgYWRhcHRlciB0byB1c2UgdG8gY29tbXVuaWNhdGUg
dG8gYSBiYWNrZW5kIHNlcnZlciBvciBvdGhlciBwZXJzaXN0ZW5jZSBsYXllci4KLQotICAgIFRo
aXMgY2FuIGJlIHNwZWNpZmllZCBhcyBhbiBpbnN0YW5jZSwgY2xhc3MsIG9yIHN0cmluZy4KLQot
ICAgIElmIHlvdSB3YW50IHRvIHNwZWNpZnkgYEFwcC5DdXN0b21BZGFwdGVyYCBhcyBhIHN0cmlu
ZywgZG86Ci0KLSAgICBgYGBqcwotICAgIGFkYXB0ZXI6ICdjdXN0b20nCi0gICAgYGBgCi0KLSAg
ICBAcHJvcGVydHkgYWRhcHRlcgotICAgIEBkZWZhdWx0IERTLlJFU1RBZGFwdGVyCi0gICAgQHR5
cGUge0RTLkFkYXB0ZXJ8U3RyaW5nfQotICAqLwotICBhZGFwdGVyOiAnLXJlc3QnLAotCi0gIC8q
KgotICAgIFJldHVybnMgYSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIHRoZSByZWNvcmQgdXNpbmcg
YSBjdXN0b20KLSAgICB0eXBlLXNwZWNpZmljIHNlcmlhbGl6ZXIsIGlmIG9uZSBleGlzdHMuCi0K
LSAgICBUaGUgYXZhaWxhYmxlIG9wdGlvbnMgYXJlOgotCi0gICAgKiBgaW5jbHVkZUlkYDogYHRy
dWVgIGlmIHRoZSByZWNvcmQncyBJRCBzaG91bGQgYmUgaW5jbHVkZWQgaW4KLSAgICAgIHRoZSBK
U09OIHJlcHJlc2VudGF0aW9uCi0KLSAgICBAbWV0aG9kIHNlcmlhbGl6ZQotICAgIEBwcml2YXRl
Ci0gICAgQHBhcmFtIHtEUy5Nb2RlbH0gcmVjb3JkIHRoZSByZWNvcmQgdG8gc2VyaWFsaXplCi0g
ICAgQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgYW4gb3B0aW9ucyBoYXNoCi0gICovCi0gIHNlcmlh
bGl6ZTogZnVuY3Rpb24ocmVjb3JkLCBvcHRpb25zKSB7Ci0gICAgcmV0dXJuIHRoaXMuc2VyaWFs
aXplckZvcihyZWNvcmQuY29uc3RydWN0b3IudHlwZUtleSkuc2VyaWFsaXplKHJlY29yZCwgb3B0
aW9ucyk7Ci0gIH0sCi0KLSAgLyoqCi0gICAgVGhpcyBwcm9wZXJ0eSByZXR1cm5zIHRoZSBhZGFw
dGVyLCBhZnRlciByZXNvbHZpbmcgYSBwb3NzaWJsZQotICAgIHN0cmluZyBrZXkuCi0KLSAgICBJ
ZiB0aGUgc3VwcGxpZWQgYGFkYXB0ZXJgIHdhcyBhIGNsYXNzLCBvciBhIFN0cmluZyBwcm9wZXJ0
eQotICAgIHBhdGggcmVzb2x2ZWQgdG8gYSBjbGFzcywgdGhpcyBwcm9wZXJ0eSB3aWxsIGluc3Rh
bnRpYXRlIHRoZQotICAgIGNsYXNzLgotCi0gICAgVGhpcyBwcm9wZXJ0eSBpcyBjYWNoZWFibGUs
IHNvIHRoZSBzYW1lIGluc3RhbmNlIG9mIGEgc3BlY2lmaWVkCi0gICAgYWRhcHRlciBjbGFzcyBz
aG91bGQgYmUgdXNlZCBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBzdG9yZS4KLQotICAgIEBwcm9w
ZXJ0eSBkZWZhdWx0QWRhcHRlcgotICAgIEBwcml2YXRlCi0gICAgQHJldHVybnMgRFMuQWRhcHRl
cgotICAqLwotICBkZWZhdWx0QWRhcHRlcjogRW1iZXIuY29tcHV0ZWQoJ2FkYXB0ZXInLCBmdW5j
dGlvbigpIHsKLSAgICB2YXIgYWRhcHRlciA9IGdldCh0aGlzLCAnYWRhcHRlcicpOwotCi0gICAg
RW1iZXIuYXNzZXJ0KCdZb3UgdHJpZWQgdG8gc2V0IGBhZGFwdGVyYCBwcm9wZXJ0eSB0byBhbiBp
bnN0YW5jZSBvZiBgRFMuQWRhcHRlcmAsIHdoZXJlIGl0IHNob3VsZCBiZSBhIG5hbWUgb3IgYSBm
YWN0b3J5JywgIShhZGFwdGVyIGluc3RhbmNlb2YgRFMuQWRhcHRlcikpOwotCi0gICAgaWYgKHR5
cGVvZiBhZGFwdGVyID09PSAnc3RyaW5nJykgewotICAgICAgYWRhcHRlciA9IHRoaXMuY29udGFp
bmVyLmxvb2t1cCgnYWRhcHRlcjonICsgYWRhcHRlcikgfHwgdGhpcy5jb250YWluZXIubG9va3Vw
KCdhZGFwdGVyOmFwcGxpY2F0aW9uJykgfHwgdGhpcy5jb250YWluZXIubG9va3VwKCdhZGFwdGVy
Oi1yZXN0Jyk7Ci0gICAgfQotCi0gICAgaWYgKERTLkFkYXB0ZXIuZGV0ZWN0KGFkYXB0ZXIpKSB7
Ci0gICAgICBhZGFwdGVyID0gYWRhcHRlci5jcmVhdGUoeyBjb250YWluZXI6IHRoaXMuY29udGFp
bmVyIH0pOwotICAgIH0KLQotICAgIHJldHVybiBhZGFwdGVyOwotICB9KSwKLQotICAvLyAuLi4u
Li4uLi4uLi4uLi4uLi4uLi4KLSAgLy8gLiBDUkVBVEUgTkVXIFJFQ09SRCAuCi0gIC8vIC4uLi4u
Li4uLi4uLi4uLi4uLi4uLgotCi0gIC8qKgotICAgIENyZWF0ZSBhIG5ldyByZWNvcmQgaW4gdGhl
IGN1cnJlbnQgc3RvcmUuIFRoZSBwcm9wZXJ0aWVzIHBhc3NlZAotICAgIHRvIHRoaXMgbWV0aG9k
IGFyZSBzZXQgb24gdGhlIG5ld2x5IGNyZWF0ZWQgcmVjb3JkLgotCi0gICAgVG8gY3JlYXRlIGEg
bmV3IGluc3RhbmNlIG9mIGBBcHAuUG9zdGA6Ci0KLSAgICBgYGBqcwotICAgIHN0b3JlLmNyZWF0
ZVJlY29yZCgncG9zdCcsIHsKLSAgICAgIHRpdGxlOiAiUmFpbHMgaXMgb21ha2FzZSIKLSAgICB9
KTsKLSAgICBgYGAKLQotICAgIEBtZXRob2QgY3JlYXRlUmVjb3JkCi0gICAgQHBhcmFtIHtTdHJp
bmd9IHR5cGUKLSAgICBAcGFyYW0ge09iamVjdH0gcHJvcGVydGllcyBhIGhhc2ggb2YgcHJvcGVy
dGllcyB0byBzZXQgb24gdGhlCi0gICAgICBuZXdseSBjcmVhdGVkIHJlY29yZC4KLSAgICBAcmV0
dXJucyB7RFMuTW9kZWx9IHJlY29yZAotICAqLwotICBjcmVhdGVSZWNvcmQ6IGZ1bmN0aW9uKHR5
cGUsIHByb3BlcnRpZXMpIHsKLSAgICB0eXBlID0gdGhpcy5tb2RlbEZvcih0eXBlKTsKLQotICAg
IHByb3BlcnRpZXMgPSBjb3B5KHByb3BlcnRpZXMpIHx8IHt9OwotCi0gICAgLy8gSWYgdGhlIHBh
c3NlZCBwcm9wZXJ0aWVzIGRvIG5vdCBpbmNsdWRlIGEgcHJpbWFyeSBrZXksCi0gICAgLy8gZ2l2
ZSB0aGUgYWRhcHRlciBhbiBvcHBvcnR1bml0eSB0byBnZW5lcmF0ZSBvbmUuIFR5cGljYWxseSwK
LSAgICAvLyBjbGllbnQtc2lkZSBJRCBnZW5lcmF0b3JzIHdpbGwgdXNlIHNvbWV0aGluZyBsaWtl
IHV1aWQuanMKLSAgICAvLyB0byBhdm9pZCBjb25mbGljdHMuCi0KLSAgICBpZiAoaXNOb25lKHBy
b3BlcnRpZXMuaWQpKSB7Ci0gICAgICBwcm9wZXJ0aWVzLmlkID0gdGhpcy5fZ2VuZXJhdGVJZCh0
eXBlKTsKLSAgICB9Ci0KLSAgICAvLyBDb2VyY2UgSUQgdG8gYSBzdHJpbmcKLSAgICBwcm9wZXJ0
aWVzLmlkID0gY29lcmNlSWQocHJvcGVydGllcy5pZCk7Ci0KLSAgICB2YXIgcmVjb3JkID0gdGhp
cy5idWlsZFJlY29yZCh0eXBlLCBwcm9wZXJ0aWVzLmlkKTsKLQotICAgIC8vIE1vdmUgdGhlIHJl
Y29yZCBvdXQgb2YgaXRzIGluaXRpYWwgYGVtcHR5YCBzdGF0ZSBpbnRvCi0gICAgLy8gdGhlIGBs
b2FkZWRgIHN0YXRlLgotICAgIHJlY29yZC5sb2FkZWREYXRhKCk7Ci0KLSAgICAvLyBTZXQgdGhl
IHByb3BlcnRpZXMgc3BlY2lmaWVkIG9uIHRoZSByZWNvcmQuCi0gICAgcmVjb3JkLnNldFByb3Bl
cnRpZXMocHJvcGVydGllcyk7Ci0KLSAgICByZXR1cm4gcmVjb3JkOwotICB9LAotCi0gIC8qKgot
ICAgIElmIHBvc3NpYmxlLCB0aGlzIG1ldGhvZCBhc2tzIHRoZSBhZGFwdGVyIHRvIGdlbmVyYXRl
IGFuIElEIGZvcgotICAgIGEgbmV3bHkgY3JlYXRlZCByZWNvcmQuCi0KLSAgICBAbWV0aG9kIF9n
ZW5lcmF0ZUlkCi0gICAgQHByaXZhdGUKLSAgICBAcGFyYW0ge1N0cmluZ30gdHlwZQotICAgIEBy
ZXR1cm5zIHtTdHJpbmd9IGlmIHRoZSBhZGFwdGVyIGNhbiBnZW5lcmF0ZSBvbmUsIGFuIElECi0g
ICovCi0gIF9nZW5lcmF0ZUlkOiBmdW5jdGlvbih0eXBlKSB7Ci0gICAgdmFyIGFkYXB0ZXIgPSB0
aGlzLmFkYXB0ZXJGb3IodHlwZSk7Ci0KLSAgICBpZiAoYWRhcHRlciAmJiBhZGFwdGVyLmdlbmVy
YXRlSWRGb3JSZWNvcmQpIHsKLSAgICAgIHJldHVybiBhZGFwdGVyLmdlbmVyYXRlSWRGb3JSZWNv
cmQodGhpcyk7Ci0gICAgfQotCi0gICAgcmV0dXJuIG51bGw7Ci0gIH0sCi0KLSAgLy8gLi4uLi4u
Li4uLi4uLi4uLi4KLSAgLy8gLiBERUxFVEUgUkVDT1JEIC4KLSAgLy8gLi4uLi4uLi4uLi4uLi4u
Li4KLQotICAvKioKLSAgICBGb3Igc3ltbWV0cnksIGEgcmVjb3JkIGNhbiBiZSBkZWxldGVkIHZp
YSB0aGUgc3RvcmUuCi0KLSAgICBFeGFtcGxlCi0KLSAgICBgYGBqYXZhc2NyaXB0Ci0gICAgdmFy
IHBvc3QgPSBzdG9yZS5jcmVhdGVSZWNvcmQoJ3Bvc3QnLCB7Ci0gICAgICB0aXRsZTogIlJhaWxz
IGlzIG9tYWthc2UiCi0gICAgfSk7Ci0KLSAgICBzdG9yZS5kZWxldGVSZWNvcmQocG9zdCk7Ci0g
ICAgYGBgCi0KLSAgICBAbWV0aG9kIGRlbGV0ZVJlY29yZAotICAgIEBwYXJhbSB7RFMuTW9kZWx9
IHJlY29yZAotICAqLwotICBkZWxldGVSZWNvcmQ6IGZ1bmN0aW9uKHJlY29yZCkgewotICAgIHJl
Y29yZC5kZWxldGVSZWNvcmQoKTsKLSAgfSwKLQotICAvKioKLSAgICBGb3Igc3ltbWV0cnksIGEg
cmVjb3JkIGNhbiBiZSB1bmxvYWRlZCB2aWEgdGhlIHN0b3JlLiBPbmx5Ci0gICAgbm9uLWRpcnR5
IHJlY29yZHMgY2FuIGJlIHVubG9hZGVkLgotCi0gICAgRXhhbXBsZQotCi0gICAgYGBgamF2YXNj
cmlwdAotICAgIHN0b3JlLmZpbmQoJ3Bvc3QnLCAxKS50aGVuKGZ1bmN0aW9uKHBvc3QpIHsKLSAg
ICAgIHN0b3JlLnVubG9hZFJlY29yZChwb3N0KTsKLSAgICB9KTsKLSAgICBgYGAKLQotICAgIEBt
ZXRob2QgdW5sb2FkUmVjb3JkCi0gICAgQHBhcmFtIHtEUy5Nb2RlbH0gcmVjb3JkCi0gICovCi0g
IHVubG9hZFJlY29yZDogZnVuY3Rpb24ocmVjb3JkKSB7Ci0gICAgcmVjb3JkLnVubG9hZFJlY29y
ZCgpOwotICB9LAotCi0gIC8vIC4uLi4uLi4uLi4uLi4uLi4KLSAgLy8gLiBGSU5EIFJFQ09SRFMg
LgotICAvLyAuLi4uLi4uLi4uLi4uLi4uCi0KLSAgLyoqCi0gICAgVGhpcyBpcyB0aGUgbWFpbiBl
bnRyeSBwb2ludCBpbnRvIGZpbmRpbmcgcmVjb3Jkcy4gVGhlIGZpcnN0IHBhcmFtZXRlciB0bwot
ICAgIHRoaXMgbWV0aG9kIGlzIHRoZSBtb2RlbCdzIG5hbWUgYXMgYSBzdHJpbmcuCi0KLSAgICAt
LS0KLQotICAgIFRvIGZpbmQgYSByZWNvcmQgYnkgSUQsIHBhc3MgdGhlIGBpZGAgYXMgdGhlIHNl
Y29uZCBwYXJhbWV0ZXI6Ci0KLSAgICBgYGBqYXZhc2NyaXB0Ci0gICAgc3RvcmUuZmluZCgncGVy
c29uJywgMSk7Ci0gICAgYGBgCi0KLSAgICBUaGUgYGZpbmRgIG1ldGhvZCB3aWxsIGFsd2F5cyBy
ZXR1cm4gYSAqKnByb21pc2UqKiB0aGF0IHdpbGwgYmUgcmVzb2x2ZWQKLSAgICB3aXRoIHRoZSBy
ZWNvcmQuIElmIHRoZSByZWNvcmQgd2FzIGFscmVhZHkgaW4gdGhlIHN0b3JlLCB0aGUgcHJvbWlz
ZSB3aWxsCi0gICAgYmUgcmVzb2x2ZWQgaW1tZWRpYXRlbHkuIE90aGVyd2lzZSwgdGhlIHN0b3Jl
IHdpbGwgYXNrIHRoZSBhZGFwdGVyJ3MgYGZpbmRgCi0gICAgbWV0aG9kIHRvIGZpbmQgdGhlIG5l
Y2Vzc2FyeSBkYXRhLgotCi0gICAgVGhlIGBmaW5kYCBtZXRob2Qgd2lsbCBhbHdheXMgcmVzb2x2
ZSBpdHMgcHJvbWlzZSB3aXRoIHRoZSBzYW1lIG9iamVjdCBmb3IKLSAgICBhIGdpdmVuIHR5cGUg
YW5kIGBpZGAuCi0KLSAgICAtLS0KLQotICAgIFRvIGZpbmQgYWxsIHJlY29yZHMgZm9yIGEgdHlw
ZSwgY2FsbCBgZmluZGAgd2l0aCBubyBhZGRpdGlvbmFsIHBhcmFtZXRlcnM6Ci0KLSAgICBgYGBq
YXZhc2NyaXB0Ci0gICAgc3RvcmUuZmluZCgncGVyc29uJyk7Ci0gICAgYGBgCi0KLSAgICBUaGlz
IHdpbGwgYXNrIHRoZSBhZGFwdGVyJ3MgYGZpbmRBbGxgIG1ldGhvZCB0byBmaW5kIHRoZSByZWNv
cmRzIGZvciB0aGUKLSAgICBnaXZlbiB0eXBlLCBhbmQgcmV0dXJuIGEgcHJvbWlzZSB0aGF0IHdp
bGwgYmUgcmVzb2x2ZWQgb25jZSB0aGUgc2VydmVyCi0gICAgcmV0dXJucyB0aGUgdmFsdWVzLgot
Ci0gICAgLS0tCi0KLSAgICBUbyBmaW5kIGEgcmVjb3JkIGJ5IGEgcXVlcnksIGNhbGwgYGZpbmRg
IHdpdGggYSBoYXNoIGFzIHRoZSBzZWNvbmQKLSAgICBwYXJhbWV0ZXI6Ci0KLSAgICBgYGBqYXZh
c2NyaXB0Ci0gICAgc3RvcmUuZmluZChBcHAuUGVyc29uLCB7IHBhZ2U6IDEgfSk7Ci0gICAgYGBg
Ci0KLSAgICBUaGlzIHdpbGwgYXNrIHRoZSBhZGFwdGVyJ3MgYGZpbmRRdWVyeWAgbWV0aG9kIHRv
IGZpbmQgdGhlIHJlY29yZHMgZm9yCi0gICAgdGhlIHF1ZXJ5LCBhbmQgcmV0dXJuIGEgcHJvbWlz
ZSB0aGF0IHdpbGwgYmUgcmVzb2x2ZWQgb25jZSB0aGUgc2VydmVyCi0gICAgcmVzcG9uZHMuCi0K
LSAgICBAbWV0aG9kIGZpbmQKLSAgICBAcGFyYW0ge1N0cmluZyBvciBzdWJjbGFzcyBvZiBEUy5N
b2RlbH0gdHlwZQotICAgIEBwYXJhbSB7T2JqZWN0fFN0cmluZ3xJbnRlZ2VyfG51bGx9IGlkCi0g
ICAgQHJldHVybiB7UHJvbWlzZX0gcHJvbWlzZQotICAqLwotICBmaW5kOiBmdW5jdGlvbih0eXBl
LCBpZCkgewotICAgIGlmIChpZCA9PT0gdW5kZWZpbmVkKSB7Ci0gICAgICByZXR1cm4gdGhpcy5m
aW5kQWxsKHR5cGUpOwotICAgIH0KLQotICAgIC8vIFdlIGFyZSBwYXNzZWQgYSBxdWVyeSBpbnN0
ZWFkIG9mIGFuIGlkLgotICAgIGlmIChFbWJlci50eXBlT2YoaWQpID09PSAnb2JqZWN0Jykgewot
ICAgICAgcmV0dXJuIHRoaXMuZmluZFF1ZXJ5KHR5cGUsIGlkKTsKLSAgICB9Ci0KLSAgICByZXR1
cm4gdGhpcy5maW5kQnlJZCh0eXBlLCBjb2VyY2VJZChpZCkpOwotICB9LAotCi0gIC8qKgotICAg
IFRoaXMgbWV0aG9kIHJldHVybnMgYSByZWNvcmQgZm9yIGEgZ2l2ZW4gdHlwZSBhbmQgaWQgY29t
YmluYXRpb24uCi0KLSAgICBAbWV0aG9kIGZpbmRCeUlkCi0gICAgQHByaXZhdGUKLSAgICBAcGFy
YW0ge1N0cmluZyBvciBzdWJjbGFzcyBvZiBEUy5Nb2RlbH0gdHlwZQotICAgIEBwYXJhbSB7U3Ry
aW5nfEludGVnZXJ9IGlkCi0gICAgQHJldHVybiB7UHJvbWlzZX0gcHJvbWlzZQotICAqLwotICBm
aW5kQnlJZDogZnVuY3Rpb24odHlwZSwgaWQpIHsKLSAgICB0eXBlID0gdGhpcy5tb2RlbEZvcih0
eXBlKTsKLQotICAgIHZhciByZWNvcmQgPSB0aGlzLnJlY29yZEZvcklkKHR5cGUsIGlkKTsKLQot
ICAgIHZhciBwcm9taXNlID0gdGhpcy5mZXRjaFJlY29yZChyZWNvcmQpIHx8IHJlc29sdmUocmVj
b3JkLCAiRFM6IFN0b3JlI2ZpbmRCeUlkICIgKyB0eXBlICsgIiB3aXRoIGlkOiAiICsgaWQpOwot
ICAgIHJldHVybiBwcm9taXNlT2JqZWN0KHByb21pc2UpOwotICB9LAotCi0gIC8qKgotICAgIFRo
aXMgbWV0aG9kIG1ha2VzIGEgc2VyaWVzIG9mIHJlcXVlc3RzIHRvIHRoZSBhZGFwdGVyJ3MgYGZp
bmRgIG1ldGhvZAotICAgIGFuZCByZXR1cm5zIGEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIG9uY2Ug
dGhleSBhcmUgYWxsIGxvYWRlZC4KLQotICAgIEBwcml2YXRlCi0gICAgQG1ldGhvZCBmaW5kQnlJ
ZHMKLSAgICBAcGFyYW0ge1N0cmluZ30gdHlwZQotICAgIEBwYXJhbSB7QXJyYXl9IGlkcwotICAg
IEByZXR1cm5zIHtQcm9taXNlfSBwcm9taXNlCi0gICovCi0gIGZpbmRCeUlkczogZnVuY3Rpb24o
dHlwZSwgaWRzKSB7Ci0gICAgdmFyIHN0b3JlID0gdGhpczsKLSAgICB2YXIgcHJvbWlzZUxhYmVs
ID0gIkRTOiBTdG9yZSNmaW5kQnlJZHMgIiArIHR5cGU7Ci0gICAgcmV0dXJuIHByb21pc2VBcnJh
eShFbWJlci5SU1ZQLmFsbChtYXAoaWRzLCBmdW5jdGlvbihpZCkgewotICAgICAgcmV0dXJuIHN0
b3JlLmZpbmRCeUlkKHR5cGUsIGlkKTsKLSAgICB9KSkudGhlbihFbWJlci5BLCBudWxsLCAiRFM6
IFN0b3JlI2ZpbmRCeUlkcyBvZiAiICsgdHlwZSArICIgY29tcGxldGUiKSk7Ci0gIH0sCi0KLSAg
LyoqCi0gICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIGJ5IGBmaW5kQnlJZGAgaWYgaXQgZGlzY292
ZXJzIHRoYXQgYSBwYXJ0aWN1bGFyCi0gICAgdHlwZS9pZCBwYWlyIGhhc24ndCBiZWVuIGxvYWRl
ZCB5ZXQgdG8ga2ljayBvZmYgYSByZXF1ZXN0IHRvIHRoZQotICAgIGFkYXB0ZXIuCi0KLSAgICBA
bWV0aG9kIGZldGNoUmVjb3JkCi0gICAgQHByaXZhdGUKLSAgICBAcGFyYW0ge0RTLk1vZGVsfSBy
ZWNvcmQKLSAgICBAcmV0dXJucyB7UHJvbWlzZX0gcHJvbWlzZQotICAqLwotICBmZXRjaFJlY29y
ZDogZnVuY3Rpb24ocmVjb3JkKSB7Ci0gICAgaWYgKGlzTm9uZShyZWNvcmQpKSB7IHJldHVybiBu
dWxsOyB9Ci0gICAgaWYgKHJlY29yZC5fbG9hZGluZ1Byb21pc2UpIHsgcmV0dXJuIHJlY29yZC5f
bG9hZGluZ1Byb21pc2U7IH0KLSAgICBpZiAoIWdldChyZWNvcmQsICdpc0VtcHR5JykpIHsgcmV0
dXJuIG51bGw7IH0KLQotICAgIHZhciB0eXBlID0gcmVjb3JkLmNvbnN0cnVjdG9yLAotICAgICAg
ICBpZCA9IGdldChyZWNvcmQsICdpZCcpOwotCi0gICAgdmFyIGFkYXB0ZXIgPSB0aGlzLmFkYXB0
ZXJGb3IodHlwZSk7Ci0KLSAgICBFbWJlci5hc3NlcnQoIllvdSB0cmllZCB0byBmaW5kIGEgcmVj
b3JkIGJ1dCB5b3UgaGF2ZSBubyBhZGFwdGVyIChmb3IgIiArIHR5cGUgKyAiKSIsIGFkYXB0ZXIp
OwotICAgIEVtYmVyLmFzc2VydCgiWW91IHRyaWVkIHRvIGZpbmQgYSByZWNvcmQgYnV0IHlvdXIg
YWRhcHRlciAoZm9yICIgKyB0eXBlICsgIikgZG9lcyBub3QgaW1wbGVtZW50ICdmaW5kJyIsIGFk
YXB0ZXIuZmluZCk7Ci0KLSAgICB2YXIgcHJvbWlzZSA9IF9maW5kKGFkYXB0ZXIsIHRoaXMsIHR5
cGUsIGlkKTsKLSAgICByZWNvcmQubG9hZGluZ0RhdGEocHJvbWlzZSk7Ci0gICAgcmV0dXJuIHBy
b21pc2U7Ci0gIH0sCi0KLSAgLyoqCi0gICAgR2V0IGEgcmVjb3JkIGJ5IGEgZ2l2ZW4gdHlwZSBh
bmQgSUQgd2l0aG91dCB0cmlnZ2VyaW5nIGEgZmV0Y2guCi0KLSAgICBUaGlzIG1ldGhvZCB3aWxs
IHN5bmNocm9ub3VzbHkgcmV0dXJuIHRoZSByZWNvcmQgaWYgaXQncyBhdmFpbGFibGUuCi0gICAg
T3RoZXJ3aXNlLCBpdCB3aWxsIHJldHVybiBudWxsLgotCi0gICAgYGBganMKLSAgICB2YXIgcG9z
dCA9IHN0b3JlLmdldEJ5SWQoJ3Bvc3QnLCAxKTsKLSAgICBgYGAKLQotICAgIEBtZXRob2QgZ2V0
QnlJZAotICAgIEBwYXJhbSB7U3RyaW5nIG9yIHN1YmNsYXNzIG9mIERTLk1vZGVsfSB0eXBlCi0g
ICAgQHBhcmFtIHtTdHJpbmd8SW50ZWdlcn0gaWQKLSAgICBAcGFyYW0ge0RTLk1vZGVsfSByZWNv
cmQKLSAgKi8KLSAgZ2V0QnlJZDogZnVuY3Rpb24odHlwZSwgaWQpIHsKLSAgICBpZiAodGhpcy5o
YXNSZWNvcmRGb3JJZCh0eXBlLCBpZCkpIHsKLSAgICAgIHJldHVybiB0aGlzLnJlY29yZEZvcklk
KHR5cGUsIGlkKTsKLSAgICB9IGVsc2UgewotICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfQotICB9
LAotCi0gIC8qKgotICAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBieSB0aGUgcmVjb3JkJ3MgYHJl
bG9hZGAgbWV0aG9kLgotCi0gICAgVGhpcyBtZXRob2QgY2FsbHMgdGhlIGFkYXB0ZXIncyBgZmlu
ZGAgbWV0aG9kLCB3aGljaCByZXR1cm5zIGEgcHJvbWlzZS4gV2hlbgotICAgICoqdGhhdCoqIHBy
b21pc2UgcmVzb2x2ZXMsIGByZWxvYWRSZWNvcmRgIHdpbGwgcmVzb2x2ZSB0aGUgcHJvbWlzZSBy
ZXR1cm5lZAotICAgIGJ5IHRoZSByZWNvcmQncyBgcmVsb2FkYC4KLQotICAgIEBtZXRob2QgcmVs
b2FkUmVjb3JkCi0gICAgQHByaXZhdGUKLSAgICBAcGFyYW0ge0RTLk1vZGVsfSByZWNvcmQKLSAg
ICBAcmV0dXJuIHtQcm9taXNlfSBwcm9taXNlCi0gICovCi0gIHJlbG9hZFJlY29yZDogZnVuY3Rp
b24ocmVjb3JkKSB7Ci0gICAgdmFyIHR5cGUgPSByZWNvcmQuY29uc3RydWN0b3IsCi0gICAgICAg
IGFkYXB0ZXIgPSB0aGlzLmFkYXB0ZXJGb3IodHlwZSksCi0gICAgICAgIGlkID0gZ2V0KHJlY29y
ZCwgJ2lkJyk7Ci0KLSAgICBFbWJlci5hc3NlcnQoIllvdSBjYW5ub3QgcmVsb2FkIGEgcmVjb3Jk
IHdpdGhvdXQgYW4gSUQiLCBpZCk7Ci0gICAgRW1iZXIuYXNzZXJ0KCJZb3UgdHJpZWQgdG8gcmVs
b2FkIGEgcmVjb3JkIGJ1dCB5b3UgaGF2ZSBubyBhZGFwdGVyIChmb3IgIiArIHR5cGUgKyAiKSIs
IGFkYXB0ZXIpOwotICAgIEVtYmVyLmFzc2VydCgiWW91IHRyaWVkIHRvIHJlbG9hZCBhIHJlY29y
ZCBidXQgeW91ciBhZGFwdGVyIGRvZXMgbm90IGltcGxlbWVudCBgZmluZGAiLCBhZGFwdGVyLmZp
bmQpOwotCi0gICAgcmV0dXJuIF9maW5kKGFkYXB0ZXIsIHRoaXMsIHR5cGUsIGlkKTsKLSAgfSwK
LQotICAvKioKLSAgICBUaGlzIG1ldGhvZCB0YWtlcyBhIGxpc3Qgb2YgcmVjb3JkcywgZ3JvdXBz
IHRoZSByZWNvcmRzIGJ5IHR5cGUsCi0gICAgY29udmVydHMgdGhlIHJlY29yZHMgaW50byBJRHMs
IGFuZCB0aGVuIGludm9rZXMgdGhlIGFkYXB0ZXIncyBgZmluZE1hbnlgCi0gICAgbWV0aG9kLgot
Ci0gICAgVGhlIHJlY29yZHMgYXJlIGdyb3VwZWQgYnkgdHlwZSB0byBpbnZva2UgYGZpbmRNYW55
YCBvbiBhZGFwdGVycwotICAgIGZvciBlYWNoIHVuaXF1ZSB0eXBlIGluIHJlY29yZHMuCi0KLSAg
ICBJdCBpcyB1c2VkIGJvdGggYnkgYSBicmFuZCBuZXcgcmVsYXRpb25zaGlwICh2aWEgdGhlIGBm
aW5kTWFueWAKLSAgICBtZXRob2QpIG9yIHdoZW4gdGhlIGRhdGEgdW5kZXJseWluZyBhbiBleGlz
dGluZyByZWxhdGlvbnNoaXAKLSAgICBjaGFuZ2VzLgotCi0gICAgQG1ldGhvZCBmZXRjaE1hbnkK
LSAgICBAcHJpdmF0ZQotICAgIEBwYXJhbSB7QXJyYXl9IHJlY29yZHMKLSAgICBAcGFyYW0ge0RT
Lk1vZGVsfSBvd25lcgotICAgIEBwYXJhbSB7UmVzb2x2ZXJ9IHJlc29sdmVyCi0gICovCi0gIGZl
dGNoTWFueTogZnVuY3Rpb24ocmVjb3Jkcywgb3duZXIsIHJlc29sdmVyKSB7Ci0gICAgaWYgKCFy
ZWNvcmRzLmxlbmd0aCkgeyByZXR1cm47IH0KLQotICAgIC8vIEdyb3VwIEJ5IFR5cGUKLSAgICB2
YXIgcmVjb3Jkc0J5VHlwZU1hcCA9IEVtYmVyLk1hcFdpdGhEZWZhdWx0LmNyZWF0ZSh7Ci0gICAg
ICBkZWZhdWx0VmFsdWU6IGZ1bmN0aW9uKCkgeyByZXR1cm4gRW1iZXIuQSgpOyB9Ci0gICAgfSk7
Ci0KLSAgICBmb3JFYWNoKHJlY29yZHMsIGZ1bmN0aW9uKHJlY29yZCkgewotICAgICAgcmVjb3Jk
c0J5VHlwZU1hcC5nZXQocmVjb3JkLmNvbnN0cnVjdG9yKS5wdXNoKHJlY29yZCk7Ci0gICAgfSk7
Ci0KLSAgICBmb3JFYWNoKHJlY29yZHNCeVR5cGVNYXAsIGZ1bmN0aW9uKHR5cGUsIHJlY29yZHMp
IHsKLSAgICAgIHZhciBpZHMgPSByZWNvcmRzLm1hcFByb3BlcnR5KCdpZCcpLAotICAgICAgICAg
IGFkYXB0ZXIgPSB0aGlzLmFkYXB0ZXJGb3IodHlwZSk7Ci0KLSAgICAgIEVtYmVyLmFzc2VydCgi
WW91IHRyaWVkIHRvIGxvYWQgbWFueSByZWNvcmRzIGJ1dCB5b3UgaGF2ZSBubyBhZGFwdGVyIChm
b3IgIiArIHR5cGUgKyAiKSIsIGFkYXB0ZXIpOwotICAgICAgRW1iZXIuYXNzZXJ0KCJZb3UgdHJp
ZWQgdG8gbG9hZCBtYW55IHJlY29yZHMgYnV0IHlvdXIgYWRhcHRlciBkb2VzIG5vdCBpbXBsZW1l
bnQgYGZpbmRNYW55YCIsIGFkYXB0ZXIuZmluZE1hbnkpOwotCi0gICAgICByZXNvbHZlci5yZXNv
bHZlKF9maW5kTWFueShhZGFwdGVyLCB0aGlzLCB0eXBlLCBpZHMsIG93bmVyKSk7Ci0gICAgfSwg
dGhpcyk7Ci0gIH0sCi0KLSAgLyoqCi0gICAgUmV0dXJucyB0cnVlIGlmIGEgcmVjb3JkIGZvciBh
IGdpdmVuIHR5cGUgYW5kIElEIGlzIGFscmVhZHkgbG9hZGVkLgotCi0gICAgQG1ldGhvZCBoYXNS
ZWNvcmRGb3JJZAotICAgIEBwYXJhbSB7U3RyaW5nIG9yIHN1YmNsYXNzIG9mIERTLk1vZGVsfSB0
eXBlCi0gICAgQHBhcmFtIHtTdHJpbmd8SW50ZWdlcn0gaWQKLSAgICBAcmV0dXJucyB7Qm9vbGVh
bn0KLSAgKi8KLSAgaGFzUmVjb3JkRm9ySWQ6IGZ1bmN0aW9uKHR5cGUsIGlkKSB7Ci0gICAgaWQg
PSBjb2VyY2VJZChpZCk7Ci0gICAgdHlwZSA9IHRoaXMubW9kZWxGb3IodHlwZSk7Ci0gICAgcmV0
dXJuICEhdGhpcy50eXBlTWFwRm9yKHR5cGUpLmlkVG9SZWNvcmRbaWRdOwotICB9LAotCi0gIC8q
KgotICAgIFJldHVybnMgaWQgcmVjb3JkIGZvciBhIGdpdmVuIHR5cGUgYW5kIElELiBJZiBvbmUg
aXNuJ3QgYWxyZWFkeSBsb2FkZWQsCi0gICAgaXQgYnVpbGRzIGEgbmV3IHJlY29yZCBhbmQgbGVh
dmVzIGl0IGluIHRoZSBgZW1wdHlgIHN0YXRlLgotCi0gICAgQG1ldGhvZCByZWNvcmRGb3JJZAot
ICAgIEBwcml2YXRlCi0gICAgQHBhcmFtIHtTdHJpbmcgb3Igc3ViY2xhc3Mgb2YgRFMuTW9kZWx9
IHR5cGUKLSAgICBAcGFyYW0ge1N0cmluZ3xJbnRlZ2VyfSBpZAotICAgIEByZXR1cm5zIHtEUy5N
b2RlbH0gcmVjb3JkCi0gICovCi0gIHJlY29yZEZvcklkOiBmdW5jdGlvbih0eXBlLCBpZCkgewot
ICAgIHR5cGUgPSB0aGlzLm1vZGVsRm9yKHR5cGUpOwotCi0gICAgaWQgPSBjb2VyY2VJZChpZCk7
Ci0KLSAgICB2YXIgcmVjb3JkID0gdGhpcy50eXBlTWFwRm9yKHR5cGUpLmlkVG9SZWNvcmRbaWRd
OwotCi0gICAgaWYgKCFyZWNvcmQpIHsKLSAgICAgIHJlY29yZCA9IHRoaXMuYnVpbGRSZWNvcmQo
dHlwZSwgaWQpOwotICAgIH0KLQotICAgIHJldHVybiByZWNvcmQ7Ci0gIH0sCi0KLSAgLyoqCi0g
ICAgQG1ldGhvZCBmaW5kTWFueQotICAgIEBwcml2YXRlCi0gICAgQHBhcmFtIHtEUy5Nb2RlbH0g
b3duZXIKLSAgICBAcGFyYW0ge0FycmF5fSByZWNvcmRzCi0gICAgQHBhcmFtIHtTdHJpbmcgb3Ig
c3ViY2xhc3Mgb2YgRFMuTW9kZWx9IHR5cGUKLSAgICBAcGFyYW0ge1Jlc29sdmVyfSByZXNvbHZl
cgotICAgIEByZXR1cm4ge0RTLk1hbnlBcnJheX0gcmVjb3JkcwotICAqLwotICBmaW5kTWFueTog
ZnVuY3Rpb24ob3duZXIsIHJlY29yZHMsIHR5cGUsIHJlc29sdmVyKSB7Ci0gICAgdHlwZSA9IHRo
aXMubW9kZWxGb3IodHlwZSk7Ci0KLSAgICByZWNvcmRzID0gRW1iZXIuQShyZWNvcmRzKTsKLQot
ICAgIHZhciB1bmxvYWRlZFJlY29yZHMgPSByZWNvcmRzLmZpbHRlclByb3BlcnR5KCdpc0VtcHR5
JywgdHJ1ZSksCi0gICAgICAgIG1hbnlBcnJheSA9IHRoaXMucmVjb3JkQXJyYXlNYW5hZ2VyLmNy
ZWF0ZU1hbnlBcnJheSh0eXBlLCByZWNvcmRzKTsKLQotICAgIGZvckVhY2godW5sb2FkZWRSZWNv
cmRzLCBmdW5jdGlvbihyZWNvcmQpIHsKLSAgICAgIHJlY29yZC5sb2FkaW5nRGF0YSgpOwotICAg
IH0pOwotCi0gICAgbWFueUFycmF5LmxvYWRpbmdSZWNvcmRzQ291bnQgPSB1bmxvYWRlZFJlY29y
ZHMubGVuZ3RoOwotCi0gICAgaWYgKHVubG9hZGVkUmVjb3Jkcy5sZW5ndGgpIHsKLSAgICAgIGZv
ckVhY2godW5sb2FkZWRSZWNvcmRzLCBmdW5jdGlvbihyZWNvcmQpIHsKLSAgICAgICAgdGhpcy5y
ZWNvcmRBcnJheU1hbmFnZXIucmVnaXN0ZXJXYWl0aW5nUmVjb3JkQXJyYXkocmVjb3JkLCBtYW55
QXJyYXkpOwotICAgICAgfSwgdGhpcyk7Ci0KLSAgICAgIHRoaXMuZmV0Y2hNYW55KHVubG9hZGVk
UmVjb3Jkcywgb3duZXIsIHJlc29sdmVyKTsKLSAgICB9IGVsc2UgewotICAgICAgaWYgKHJlc29s
dmVyKSB7IHJlc29sdmVyLnJlc29sdmUoKTsgfQotICAgICAgbWFueUFycmF5LnNldCgnaXNMb2Fk
ZWQnLCB0cnVlKTsKLSAgICAgIEVtYmVyLnJ1bi5vbmNlKG1hbnlBcnJheSwgJ3RyaWdnZXInLCAn
ZGlkTG9hZCcpOwotICAgIH0KLQotICAgIHJldHVybiBtYW55QXJyYXk7Ci0gIH0sCi0KLSAgLyoq
Ci0gICAgSWYgYSByZWxhdGlvbnNoaXAgd2FzIG9yaWdpbmFsbHkgcG9wdWxhdGVkIGJ5IHRoZSBh
ZGFwdGVyIGFzIGEgbGluawotICAgIChhcyBvcHBvc2VkIHRvIGEgbGlzdCBvZiBJRHMpLCB0aGlz
IG1ldGhvZCBpcyBjYWxsZWQgd2hlbiB0aGUKLSAgICByZWxhdGlvbnNoaXAgaXMgZmV0Y2hlZC4K
LQotICAgIFRoZSBsaW5rICh3aGljaCBpcyB1c3VhbGx5IGEgVVJMKSBpcyBwYXNzZWQgdGhyb3Vn
aCB1bmNoYW5nZWQsIHNvIHRoZQotICAgIGFkYXB0ZXIgY2FuIG1ha2Ugd2hhdGV2ZXIgcmVxdWVz
dCBpdCB3YW50cy4KLQotICAgIFRoZSB1c3VhbCB1c2UtY2FzZSBpcyBmb3IgdGhlIHNlcnZlciB0
byByZWdpc3RlciBhIFVSTCBhcyBhIGxpbmssIGFuZAotICAgIHRoZW4gdXNlIHRoYXQgVVJMIGlu
IHRoZSBmdXR1cmUgdG8gbWFrZSBhIHJlcXVlc3QgZm9yIHRoZSByZWxhdGlvbnNoaXAuCi0KLSAg
ICBAbWV0aG9kIGZpbmRIYXNNYW55Ci0gICAgQHByaXZhdGUKLSAgICBAcGFyYW0ge0RTLk1vZGVs
fSBvd25lcgotICAgIEBwYXJhbSB7YW55fSBsaW5rCi0gICAgQHBhcmFtIHtTdHJpbmcgb3Igc3Vi
Y2xhc3Mgb2YgRFMuTW9kZWx9IHR5cGUKLSAgICBAcGFyYW0ge1Jlc29sdmVyfSByZXNvbHZlcgot
ICAgIEByZXR1cm4ge0RTLk1hbnlBcnJheX0KLSAgKi8KLSAgZmluZEhhc01hbnk6IGZ1bmN0aW9u
KG93bmVyLCBsaW5rLCByZWxhdGlvbnNoaXAsIHJlc29sdmVyKSB7Ci0gICAgdmFyIGFkYXB0ZXIg
PSB0aGlzLmFkYXB0ZXJGb3Iob3duZXIuY29uc3RydWN0b3IpOwotCi0gICAgRW1iZXIuYXNzZXJ0
KCJZb3UgdHJpZWQgdG8gbG9hZCBhIGhhc01hbnkgcmVsYXRpb25zaGlwIGJ1dCB5b3UgaGF2ZSBu
byBhZGFwdGVyIChmb3IgIiArIG93bmVyLmNvbnN0cnVjdG9yICsgIikiLCBhZGFwdGVyKTsKLSAg
ICBFbWJlci5hc3NlcnQoIllvdSB0cmllZCB0byBsb2FkIGEgaGFzTWFueSByZWxhdGlvbnNoaXAg
ZnJvbSBhIHNwZWNpZmllZCBgbGlua2AgaW4gdGhlIG9yaWdpbmFsIHBheWxvYWQgYnV0IHlvdXIg
YWRhcHRlciBkb2VzIG5vdCBpbXBsZW1lbnQgYGZpbmRIYXNNYW55YCIsIGFkYXB0ZXIuZmluZEhh
c01hbnkpOwotCi0gICAgdmFyIHJlY29yZHMgPSB0aGlzLnJlY29yZEFycmF5TWFuYWdlci5jcmVh
dGVNYW55QXJyYXkocmVsYXRpb25zaGlwLnR5cGUsIEVtYmVyLkEoW10pKTsKLSAgICByZXNvbHZl
ci5yZXNvbHZlKF9maW5kSGFzTWFueShhZGFwdGVyLCB0aGlzLCBvd25lciwgbGluaywgcmVsYXRp
b25zaGlwKSk7Ci0gICAgcmV0dXJuIHJlY29yZHM7Ci0gIH0sCi0KLSAgLyoqCi0gICAgQG1ldGhv
ZCBmaW5kQmVsb25nc1RvCi0gICAgQHByaXZhdGUKLSAgICBAcGFyYW0ge0RTLk1vZGVsfSBvd25l
cgotICAgIEBwYXJhbSB7YW55fSBsaW5rCi0gICAgQHBhcmFtIHtSZWxhdGlvbnNoaXB9IHJlbGF0
aW9uc2hpcAotICAgIEBwYXJhbSB7UmVzb2x2ZXJ9IHJlc29sdmVyCi0gICovCi0gIGZpbmRCZWxv
bmdzVG86IGZ1bmN0aW9uKG93bmVyLCBsaW5rLCByZWxhdGlvbnNoaXAsIHJlc29sdmVyKSB7Ci0g
ICAgdmFyIGFkYXB0ZXIgPSB0aGlzLmFkYXB0ZXJGb3Iob3duZXIuY29uc3RydWN0b3IpOwotCi0g
ICAgRW1iZXIuYXNzZXJ0KCJZb3UgdHJpZWQgdG8gbG9hZCBhIGJlbG9uZ3NUbyByZWxhdGlvbnNo
aXAgYnV0IHlvdSBoYXZlIG5vIGFkYXB0ZXIgKGZvciAiICsgb3duZXIuY29uc3RydWN0b3IgKyAi
KSIsIGFkYXB0ZXIpOwotICAgIEVtYmVyLmFzc2VydCgiWW91IHRyaWVkIHRvIGxvYWQgYSBiZWxv
bmdzVG8gcmVsYXRpb25zaGlwIGZyb20gYSBzcGVjaWZpZWQgYGxpbmtgIGluIHRoZSBvcmlnaW5h
bCBwYXlsb2FkIGJ1dCB5b3VyIGFkYXB0ZXIgZG9lcyBub3QgaW1wbGVtZW50IGBmaW5kQmVsb25n
c1RvYCIsIGFkYXB0ZXIuZmluZEJlbG9uZ3NUbyk7Ci0KLSAgICByZXNvbHZlci5yZXNvbHZlKF9m
aW5kQmVsb25nc1RvKGFkYXB0ZXIsIHRoaXMsIG93bmVyLCBsaW5rLCByZWxhdGlvbnNoaXApKTsK
LSAgfSwKLQotICAvKioKLSAgICBUaGlzIG1ldGhvZCBkZWxlZ2F0ZXMgYSBxdWVyeSB0byB0aGUg
YWRhcHRlci4gVGhpcyBpcyB0aGUgb25lIHBsYWNlIHdoZXJlCi0gICAgYWRhcHRlci1sZXZlbCBz
ZW1hbnRpY3MgYXJlIGV4cG9zZWQgdG8gdGhlIGFwcGxpY2F0aW9uLgotCi0gICAgRXhwb3Npbmcg
cXVlcmllcyB0aGlzIHdheSBzZWVtcyBwcmVmZXJhYmxlIHRvIGNyZWF0aW5nIGFuIGFic3RyYWN0
IHF1ZXJ5Ci0gICAgbGFuZ3VhZ2UgZm9yIGFsbCBzZXJ2ZXItc2lkZSBxdWVyaWVzLCBhbmQgdGhl
biByZXF1aXJlIGFsbCBhZGFwdGVycyB0bwotICAgIGltcGxlbWVudCB0aGVtLgotCi0gICAgVGhp
cyBtZXRob2QgcmV0dXJucyBhIHByb21pc2UsIHdoaWNoIGlzIHJlc29sdmVkIHdpdGggYSBgUmVj
b3JkQXJyYXlgCi0gICAgb25jZSB0aGUgc2VydmVyIHJldHVybnMuCi0KLSAgICBAbWV0aG9kIGZp
bmRRdWVyeQotICAgIEBwcml2YXRlCi0gICAgQHBhcmFtIHtTdHJpbmcgb3Igc3ViY2xhc3Mgb2Yg
RFMuTW9kZWx9IHR5cGUKLSAgICBAcGFyYW0ge2FueX0gcXVlcnkgYW4gb3BhcXVlIHF1ZXJ5IHRv
IGJlIHVzZWQgYnkgdGhlIGFkYXB0ZXIKLSAgICBAcmV0dXJuIHtQcm9taXNlfSBwcm9taXNlCi0g
ICovCi0gIGZpbmRRdWVyeTogZnVuY3Rpb24odHlwZSwgcXVlcnkpIHsKLSAgICB0eXBlID0gdGhp
cy5tb2RlbEZvcih0eXBlKTsKLQotICAgIHZhciBhcnJheSA9IHRoaXMucmVjb3JkQXJyYXlNYW5h
Z2VyCi0gICAgICAuY3JlYXRlQWRhcHRlclBvcHVsYXRlZFJlY29yZEFycmF5KHR5cGUsIHF1ZXJ5
KTsKLQotICAgIHZhciBhZGFwdGVyID0gdGhpcy5hZGFwdGVyRm9yKHR5cGUpLAotICAgICAgICBw
cm9taXNlTGFiZWwgPSAiRFM6IFN0b3JlI2ZpbmRRdWVyeSAiICsgdHlwZSwKLSAgICAgICAgcmVz
b2x2ZXIgPSBFbWJlci5SU1ZQLmRlZmVyKHByb21pc2VMYWJlbCk7Ci0KLSAgICBFbWJlci5hc3Nl
cnQoIllvdSB0cmllZCB0byBsb2FkIGEgcXVlcnkgYnV0IHlvdSBoYXZlIG5vIGFkYXB0ZXIgKGZv
ciAiICsgdHlwZSArICIpIiwgYWRhcHRlcik7Ci0gICAgRW1iZXIuYXNzZXJ0KCJZb3UgdHJpZWQg
dG8gbG9hZCBhIHF1ZXJ5IGJ1dCB5b3VyIGFkYXB0ZXIgZG9lcyBub3QgaW1wbGVtZW50IGBmaW5k
UXVlcnlgIiwgYWRhcHRlci5maW5kUXVlcnkpOwotCi0gICAgcmVzb2x2ZXIucmVzb2x2ZShfZmlu
ZFF1ZXJ5KGFkYXB0ZXIsIHRoaXMsIHR5cGUsIHF1ZXJ5LCBhcnJheSkpOwotCi0gICAgcmV0dXJu
IHByb21pc2VBcnJheShyZXNvbHZlci5wcm9taXNlKTsKLSAgfSwKLQotICAvKioKLSAgICBUaGlz
IG1ldGhvZCByZXR1cm5zIGFuIGFycmF5IG9mIGFsbCByZWNvcmRzIGFkYXB0ZXIgY2FuIGZpbmQu
Ci0gICAgSXQgdHJpZ2dlcnMgdGhlIGFkYXB0ZXIncyBgZmluZEFsbGAgbWV0aG9kIHRvIGdpdmUg
aXQgYW4gb3Bwb3J0dW5pdHkgdG8gcG9wdWxhdGUKLSAgICB0aGUgYXJyYXkgd2l0aCByZWNvcmRz
IG9mIHRoYXQgdHlwZS4KLQotICAgIEBtZXRob2QgZmluZEFsbAotICAgIEBwcml2YXRlCi0gICAg
QHBhcmFtIHtTdHJpbmcgb3Igc3ViY2xhc3Mgb2YgRFMuTW9kZWx9IHR5cGUKLSAgICBAcmV0dXJu
IHtEUy5BZGFwdGVyUG9wdWxhdGVkUmVjb3JkQXJyYXl9Ci0gICovCi0gIGZpbmRBbGw6IGZ1bmN0
aW9uKHR5cGUpIHsKLSAgICB0eXBlID0gdGhpcy5tb2RlbEZvcih0eXBlKTsKLQotICAgIHJldHVy
biB0aGlzLmZldGNoQWxsKHR5cGUsIHRoaXMuYWxsKHR5cGUpKTsKLSAgfSwKLQotICAvKioKLSAg
ICBAbWV0aG9kIGZldGNoQWxsCi0gICAgQHByaXZhdGUKLSAgICBAcGFyYW0ge0RTLk1vZGVsfSB0
eXBlCi0gICAgQHBhcmFtIHtEUy5SZWNvcmRBcnJheX0gYXJyYXkKLSAgICBAcmV0dXJucyB7UHJv
bWlzZX0gcHJvbWlzZQotICAqLwotICBmZXRjaEFsbDogZnVuY3Rpb24odHlwZSwgYXJyYXkpIHsK
LSAgICB2YXIgYWRhcHRlciA9IHRoaXMuYWRhcHRlckZvcih0eXBlKSwKLSAgICAgICAgc2luY2VU
b2tlbiA9IHRoaXMudHlwZU1hcEZvcih0eXBlKS5tZXRhZGF0YS5zaW5jZTsKLQotICAgIHNldChh
cnJheSwgJ2lzVXBkYXRpbmcnLCB0cnVlKTsKLQotICAgIEVtYmVyLmFzc2VydCgiWW91IHRyaWVk
IHRvIGxvYWQgYWxsIHJlY29yZHMgYnV0IHlvdSBoYXZlIG5vIGFkYXB0ZXIgKGZvciAiICsgdHlw
ZSArICIpIiwgYWRhcHRlcik7Ci0gICAgRW1iZXIuYXNzZXJ0KCJZb3UgdHJpZWQgdG8gbG9hZCBh
bGwgcmVjb3JkcyBidXQgeW91ciBhZGFwdGVyIGRvZXMgbm90IGltcGxlbWVudCBgZmluZEFsbGAi
LCBhZGFwdGVyLmZpbmRBbGwpOwotCi0gICAgcmV0dXJuIHByb21pc2VBcnJheShfZmluZEFsbChh
ZGFwdGVyLCB0aGlzLCB0eXBlLCBzaW5jZVRva2VuKSk7Ci0gIH0sCi0KLSAgLyoqCi0gICAgQG1l
dGhvZCBkaWRVcGRhdGVBbGwKLSAgICBAcGFyYW0ge0RTLk1vZGVsfSB0eXBlCi0gICovCi0gIGRp
ZFVwZGF0ZUFsbDogZnVuY3Rpb24odHlwZSkgewotICAgIHZhciBmaW5kQWxsQ2FjaGUgPSB0aGlz
LnR5cGVNYXBGb3IodHlwZSkuZmluZEFsbENhY2hlOwotICAgIHNldChmaW5kQWxsQ2FjaGUsICdp
c1VwZGF0aW5nJywgZmFsc2UpOwotICB9LAotCi0gIC8qKgotICAgIFRoaXMgbWV0aG9kIHJldHVy
bnMgYSBmaWx0ZXJlZCBhcnJheSB0aGF0IGNvbnRhaW5zIGFsbCBvZiB0aGUga25vd24gcmVjb3Jk
cwotICAgIGZvciBhIGdpdmVuIHR5cGUuCi0KLSAgICBOb3RlIHRoYXQgYmVjYXVzZSBpdCdzIGp1
c3QgYSBmaWx0ZXIsIGl0IHdpbGwgaGF2ZSBhbnkgbG9jYWxseQotICAgIGNyZWF0ZWQgcmVjb3Jk
cyBvZiB0aGUgdHlwZS4KLQotICAgIEFsc28gbm90ZSB0aGF0IG11bHRpcGxlIGNhbGxzIHRvIGBh
bGxgIGZvciBhIGdpdmVuIHR5cGUgd2lsbCBhbHdheXMKLSAgICByZXR1cm4gdGhlIHNhbWUgUmVj
b3JkQXJyYXkuCi0KLSAgICBFeGFtcGxlCi0KLSAgICBgYGBqYXZhc2NyaXB0Ci0gICAgdmFyIGxv
Y2FsX3Bvc3RzID0gc3RvcmUuYWxsKEFwcC5Qb3N0KTsKLSAgICBgYGAKLQotICAgIEBtZXRob2Qg
YWxsCi0gICAgQHBhcmFtIHtTdHJpbmcgb3Igc3ViY2xhc3Mgb2YgRFMuTW9kZWx9IHR5cGUKLSAg
ICBAcmV0dXJuIHtEUy5SZWNvcmRBcnJheX0KLSAgKi8KLSAgYWxsOiBmdW5jdGlvbih0eXBlKSB7
Ci0gICAgdHlwZSA9IHRoaXMubW9kZWxGb3IodHlwZSk7Ci0KLSAgICB2YXIgdHlwZU1hcCA9IHRo
aXMudHlwZU1hcEZvcih0eXBlKSwKLSAgICAgICAgZmluZEFsbENhY2hlID0gdHlwZU1hcC5maW5k
QWxsQ2FjaGU7Ci0KLSAgICBpZiAoZmluZEFsbENhY2hlKSB7IHJldHVybiBmaW5kQWxsQ2FjaGU7
IH0KLQotICAgIHZhciBhcnJheSA9IHRoaXMucmVjb3JkQXJyYXlNYW5hZ2VyLmNyZWF0ZVJlY29y
ZEFycmF5KHR5cGUpOwotCi0gICAgdHlwZU1hcC5maW5kQWxsQ2FjaGUgPSBhcnJheTsKLSAgICBy
ZXR1cm4gYXJyYXk7Ci0gIH0sCi0KLQotICAvKioKLSAgICBUaGlzIG1ldGhvZCB1bmxvYWRzIGFs
bCBvZiB0aGUga25vd24gcmVjb3JkcyBmb3IgYSBnaXZlbiB0eXBlLgotCi0gICAgYGBgamF2YXNj
cmlwdAotICAgIHN0b3JlLnVubG9hZEFsbChBcHAuUG9zdCk7Ci0gICAgYGBgCi0KLSAgICBAbWV0
aG9kIHVubG9hZEFsbAotICAgIEBwYXJhbSB7U3RyaW5nIG9yIHN1YmNsYXNzIG9mIERTLk1vZGVs
fSB0eXBlCi0gICovCi0gIHVubG9hZEFsbDogZnVuY3Rpb24odHlwZSkgewotICAgIHR5cGUgPSB0
aGlzLm1vZGVsRm9yKHR5cGUpOwotCi0gICAgdmFyIHR5cGVNYXAgPSB0aGlzLnR5cGVNYXBGb3Io
dHlwZSksCi0gICAgICAgIHJlY29yZHMgPSB0eXBlTWFwLnJlY29yZHMuc3BsaWNlKDApLCByZWNv
cmQ7Ci0KLSAgICB3aGlsZShyZWNvcmQgPSByZWNvcmRzLnBvcCgpKSB7Ci0gICAgICByZWNvcmQu
dW5sb2FkUmVjb3JkKCk7Ci0gICAgfQotCi0gICAgdHlwZU1hcC5maW5kQWxsQ2FjaGUgPSBudWxs
OwotICB9LAotCi0gIC8qKgotICAgIFRha2VzIGEgdHlwZSBhbmQgZmlsdGVyIGZ1bmN0aW9uLCBh
bmQgcmV0dXJucyBhIGxpdmUgUmVjb3JkQXJyYXkgdGhhdAotICAgIHJlbWFpbnMgdXAgdG8gZGF0
ZSBhcyBuZXcgcmVjb3JkcyBhcmUgbG9hZGVkIGludG8gdGhlIHN0b3JlIG9yIGNyZWF0ZWQKLSAg
ICBsb2NhbGx5LgotCi0gICAgVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHRha2VzIGEgbWF0ZXJpYWxp
emVkIHJlY29yZCwgYW5kIHJldHVybnMgdHJ1ZQotICAgIGlmIHRoZSByZWNvcmQgc2hvdWxkIGJl
IGluY2x1ZGVkIGluIHRoZSBmaWx0ZXIgYW5kIGZhbHNlIGlmIGl0IHNob3VsZAotICAgIG5vdC4K
LQotICAgIFRoZSBmaWx0ZXIgZnVuY3Rpb24gaXMgY2FsbGVkIG9uY2Ugb24gYWxsIHJlY29yZHMg
Zm9yIHRoZSB0eXBlIHdoZW4KLSAgICBpdCBpcyBjcmVhdGVkLCBhbmQgdGhlbiBvbmNlIG9uIGVh
Y2ggbmV3bHkgbG9hZGVkIG9yIGNyZWF0ZWQgcmVjb3JkLgotCi0gICAgSWYgYW55IG9mIGEgcmVj
b3JkJ3MgcHJvcGVydGllcyBjaGFuZ2UsIG9yIGlmIGl0IGNoYW5nZXMgc3RhdGUsIHRoZQotICAg
IGZpbHRlciBmdW5jdGlvbiB3aWxsIGJlIGludm9rZWQgYWdhaW4gdG8gZGV0ZXJtaW5lIHdoZXRo
ZXIgaXQgc2hvdWxkCi0gICAgc3RpbGwgYmUgaW4gdGhlIGFycmF5LgotCi0gICAgT3B0aW9uYWxs
eSB5b3UgY2FuIHBhc3MgYSBxdWVyeSB3aGljaCB3aWxsIGJlIHRyaWdnZXJlZCBhdCBmaXJzdC4g
VGhlCi0gICAgcmVzdWx0cyByZXR1cm5lZCBieSB0aGUgc2VydmVyIGNvdWxkIHRoZW4gYXBwZWFy
IGluIHRoZSBmaWx0ZXIgaWYgdGhleQotICAgIG1hdGNoIHRoZSBmaWx0ZXIgZnVuY3Rpb24uCi0K
LSAgICBFeGFtcGxlCi0KLSAgICBgYGBqYXZhc2NyaXB0Ci0gICAgc3RvcmUuZmlsdGVyKEFwcC5Q
b3N0LCB7dW5yZWFkOiB0cnVlfSwgZnVuY3Rpb24ocG9zdCkgewotICAgICAgcmV0dXJuIHBvc3Qu
Z2V0KCd1bnJlYWQnKTsKLSAgICB9KS50aGVuKGZ1bmN0aW9uKHVucmVhZFBvc3RzKSB7Ci0gICAg
ICB1bnJlYWRQb3N0cy5nZXQoJ2xlbmd0aCcpOyAvLyA1Ci0gICAgICB2YXIgdW5yZWFkUG9zdCA9
IHVucmVhZFBvc3RzLm9iamVjdEF0KDApOwotICAgICAgdW5yZWFkUG9zdC5zZXQoJ3VucmVhZCcs
IGZhbHNlKTsKLSAgICAgIHVucmVhZFBvc3RzLmdldCgnbGVuZ3RoJyk7IC8vIDQKLSAgICB9KTsK
LSAgICBgYGAKLQotICAgIEBtZXRob2QgZmlsdGVyCi0gICAgQHBhcmFtIHtTdHJpbmcgb3Igc3Vi
Y2xhc3Mgb2YgRFMuTW9kZWx9IHR5cGUKLSAgICBAcGFyYW0ge09iamVjdH0gcXVlcnkgb3B0aW9u
YWwgcXVlcnkKLSAgICBAcGFyYW0ge0Z1bmN0aW9ufSBmaWx0ZXIKLSAgICBAcmV0dXJuIHtEUy5Q
cm9taXNlQXJyYXl9Ci0gICovCi0gIGZpbHRlcjogZnVuY3Rpb24odHlwZSwgcXVlcnksIGZpbHRl
cikgewotICAgIHZhciBwcm9taXNlOwotCi0gICAgLy8gYWxsb3cgYW4gb3B0aW9uYWwgc2VydmVy
IHF1ZXJ5Ci0gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDMpIHsKLSAgICAgIHByb21pc2Ug
PSB0aGlzLmZpbmRRdWVyeSh0eXBlLCBxdWVyeSk7Ci0gICAgfSBlbHNlIGlmIChhcmd1bWVudHMu
bGVuZ3RoID09PSAyKSB7Ci0gICAgICBmaWx0ZXIgPSBxdWVyeTsKLSAgICB9Ci0KLSAgICB0eXBl
ID0gdGhpcy5tb2RlbEZvcih0eXBlKTsKLQotICAgIHZhciBhcnJheSA9IHRoaXMucmVjb3JkQXJy
YXlNYW5hZ2VyCi0gICAgICAuY3JlYXRlRmlsdGVyZWRSZWNvcmRBcnJheSh0eXBlLCBmaWx0ZXIp
OwotICAgIHByb21pc2UgPSBwcm9taXNlIHx8IHJlc29sdmUoYXJyYXkpOwotCi0gICAgcmV0dXJu
IHByb21pc2VBcnJheShwcm9taXNlLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICByZXR1cm4gYXJy
YXk7Ci0gICAgfSwgbnVsbCwgIkRTOiBTdG9yZSNmaWx0ZXIgb2YgIiArIHR5cGUpKTsKLSAgfSwK
LQotICAvKioKLSAgICBUaGlzIG1ldGhvZCByZXR1cm5zIGlmIGEgY2VydGFpbiByZWNvcmQgaXMg
YWxyZWFkeSBsb2FkZWQKLSAgICBpbiB0aGUgc3RvcmUuIFVzZSB0aGlzIGZ1bmN0aW9uIHRvIGtu
b3cgYmVmb3JlaGFuZCBpZiBhIGZpbmQoKQotICAgIHdpbGwgcmVzdWx0IGluIGEgcmVxdWVzdCBv
ciB0aGF0IGl0IHdpbGwgYmUgYSBjYWNoZSBoaXQuCi0KLSAgICAgRXhhbXBsZQotCi0gICAgYGBg
amF2YXNjcmlwdAotICAgIHN0b3JlLnJlY29yZElzTG9hZGVkKEFwcC5Qb3N0LCAxKTsgLy8gZmFs
c2UKLSAgICBzdG9yZS5maW5kKEFwcC5Qb3N0LCAxKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAg
c3RvcmUucmVjb3JkSXNMb2FkZWQoQXBwLlBvc3QsIDEpOyAvLyB0cnVlCi0gICAgfSk7Ci0gICAg
YGBgCi0KLSAgICBAbWV0aG9kIHJlY29yZElzTG9hZGVkCi0gICAgQHBhcmFtIHtTdHJpbmcgb3Ig
c3ViY2xhc3Mgb2YgRFMuTW9kZWx9IHR5cGUKLSAgICBAcGFyYW0ge3N0cmluZ30gaWQKLSAgICBA
cmV0dXJuIHtib29sZWFufQotICAqLwotICByZWNvcmRJc0xvYWRlZDogZnVuY3Rpb24odHlwZSwg
aWQpIHsKLSAgICBpZiAoIXRoaXMuaGFzUmVjb3JkRm9ySWQodHlwZSwgaWQpKSB7IHJldHVybiBm
YWxzZTsgfQotICAgIHJldHVybiAhZ2V0KHRoaXMucmVjb3JkRm9ySWQodHlwZSwgaWQpLCAnaXNF
bXB0eScpOwotICB9LAotCi0gIC8qKgotICAgIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIG1ldGFk
YXRhIGZvciBhIHNwZWNpZmljIHR5cGUuCi0KLSAgICBAbWV0aG9kIG1ldGFkYXRhRm9yCi0gICAg
QHBhcmFtIHtTdHJpbmcgb3Igc3ViY2xhc3Mgb2YgRFMuTW9kZWx9IHR5cGUKLSAgICBAcmV0dXJu
IHtvYmplY3R9Ci0gICovCi0gIG1ldGFkYXRhRm9yOiBmdW5jdGlvbih0eXBlKSB7Ci0gICAgdHlw
ZSA9IHRoaXMubW9kZWxGb3IodHlwZSk7Ci0gICAgcmV0dXJuIHRoaXMudHlwZU1hcEZvcih0eXBl
KS5tZXRhZGF0YTsKLSAgfSwKLQotICAvLyAuLi4uLi4uLi4uLi4KLSAgLy8gLiBVUERBVElORyAu
Ci0gIC8vIC4uLi4uLi4uLi4uLgotCi0gIC8qKgotICAgIElmIHRoZSBhZGFwdGVyIHVwZGF0ZXMg
YXR0cmlidXRlcyBvciBhY2tub3dsZWRnZXMgY3JlYXRpb24KLSAgICBvciBkZWxldGlvbiwgdGhl
IHJlY29yZCB3aWxsIG5vdGlmeSB0aGUgc3RvcmUgdG8gdXBkYXRlIGl0cwotICAgIG1lbWJlcnNo
aXAgaW4gYW55IGZpbHRlcnMuCi0gICAgVG8gYXZvaWQgdGhyYXNoaW5nLCB0aGlzIG1ldGhvZCBp
cyBpbnZva2VkIG9ubHkgb25jZSBwZXIKLQotICAgIHJ1biBsb29wIHBlciByZWNvcmQuCi0KLSAg
ICBAbWV0aG9kIGRhdGFXYXNVcGRhdGVkCi0gICAgQHByaXZhdGUKLSAgICBAcGFyYW0ge0NsYXNz
fSB0eXBlCi0gICAgQHBhcmFtIHtEUy5Nb2RlbH0gcmVjb3JkCi0gICovCi0gIGRhdGFXYXNVcGRh
dGVkOiBmdW5jdGlvbih0eXBlLCByZWNvcmQpIHsKLSAgICB0aGlzLnJlY29yZEFycmF5TWFuYWdl
ci5yZWNvcmREaWRDaGFuZ2UocmVjb3JkKTsKLSAgfSwKLQotICAvLyAuLi4uLi4uLi4uLi4uLgot
ICAvLyAuIFBFUlNJU1RJTkcgLgotICAvLyAuLi4uLi4uLi4uLi4uLgotCi0gIC8qKgotICAgIFRo
aXMgbWV0aG9kIGlzIGNhbGxlZCBieSBgcmVjb3JkLnNhdmVgLCBhbmQgZ2V0cyBwYXNzZWQgYQot
ICAgIHJlc29sdmVyIGZvciB0aGUgcHJvbWlzZSB0aGF0IGByZWNvcmQuc2F2ZWAgcmV0dXJucy4K
LQotICAgIEl0IHNjaGVkdWxlcyBzYXZpbmcgdG8gaGFwcGVuIGF0IHRoZSBlbmQgb2YgdGhlIHJ1
biBsb29wLgotCi0gICAgQG1ldGhvZCBzY2hlZHVsZVNhdmUKLSAgICBAcHJpdmF0ZQotICAgIEBw
YXJhbSB7RFMuTW9kZWx9IHJlY29yZAotICAgIEBwYXJhbSB7UmVzb2x2ZXJ9IHJlc29sdmVyCi0g
ICovCi0gIHNjaGVkdWxlU2F2ZTogZnVuY3Rpb24ocmVjb3JkLCByZXNvbHZlcikgewotICAgIHJl
Y29yZC5hZGFwdGVyV2lsbENvbW1pdCgpOwotICAgIHRoaXMuX3BlbmRpbmdTYXZlLnB1c2goW3Jl
Y29yZCwgcmVzb2x2ZXJdKTsKLSAgICBvbmNlKHRoaXMsICdmbHVzaFBlbmRpbmdTYXZlJyk7Ci0g
IH0sCi0KLSAgLyoqCi0gICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIGF0IHRoZSBlbmQgb2YgdGhl
IHJ1biBsb29wLCBhbmQKLSAgICBmbHVzaGVzIGFueSByZWNvcmRzIHBhc3NlZCBpbnRvIGBzY2hl
ZHVsZVNhdmVgCi0KLSAgICBAbWV0aG9kIGZsdXNoUGVuZGluZ1NhdmUKLSAgICBAcHJpdmF0ZQot
ICAqLwotICBmbHVzaFBlbmRpbmdTYXZlOiBmdW5jdGlvbigpIHsKLSAgICB2YXIgcGVuZGluZyA9
IHRoaXMuX3BlbmRpbmdTYXZlLnNsaWNlKCk7Ci0gICAgdGhpcy5fcGVuZGluZ1NhdmUgPSBbXTsK
LQotICAgIGZvckVhY2gocGVuZGluZywgZnVuY3Rpb24odHVwbGUpIHsKLSAgICAgIHZhciByZWNv
cmQgPSB0dXBsZVswXSwgcmVzb2x2ZXIgPSB0dXBsZVsxXSwKLSAgICAgICAgICBhZGFwdGVyID0g
dGhpcy5hZGFwdGVyRm9yKHJlY29yZC5jb25zdHJ1Y3RvciksCi0gICAgICAgICAgb3BlcmF0aW9u
OwotCi0gICAgICBpZiAoZ2V0KHJlY29yZCwgJ2lzTmV3JykpIHsKLSAgICAgICAgb3BlcmF0aW9u
ID0gJ2NyZWF0ZVJlY29yZCc7Ci0gICAgICB9IGVsc2UgaWYgKGdldChyZWNvcmQsICdpc0RlbGV0
ZWQnKSkgewotICAgICAgICBvcGVyYXRpb24gPSAnZGVsZXRlUmVjb3JkJzsKLSAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgIG9wZXJhdGlvbiA9ICd1cGRhdGVSZWNvcmQnOwotICAgICAgfQotCi0gICAg
ICByZXNvbHZlci5yZXNvbHZlKF9jb21taXQoYWRhcHRlciwgdGhpcywgb3BlcmF0aW9uLCByZWNv
cmQpKTsKLSAgICB9LCB0aGlzKTsKLSAgfSwKLQotICAvKioKLSAgICBUaGlzIG1ldGhvZCBpcyBj
YWxsZWQgb25jZSB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSBhbgotICAgIGFkYXB0ZXIncyBgY3Jl
YXRlUmVjb3JkYCwgYHVwZGF0ZVJlY29yZGAgb3IgYGRlbGV0ZVJlY29yZGAKLSAgICBpcyByZXNv
bHZlZC4KLQotICAgIElmIHRoZSBkYXRhIHByb3ZpZGVzIGEgc2VydmVyLWdlbmVyYXRlZCBJRCwg
aXQgd2lsbAotICAgIHVwZGF0ZSB0aGUgcmVjb3JkIGFuZCB0aGUgc3RvcmUncyBpbmRleGVzLgot
Ci0gICAgQG1ldGhvZCBkaWRTYXZlUmVjb3JkCi0gICAgQHByaXZhdGUKLSAgICBAcGFyYW0ge0RT
Lk1vZGVsfSByZWNvcmQgdGhlIGluLWZsaWdodCByZWNvcmQKLSAgICBAcGFyYW0ge09iamVjdH0g
ZGF0YSBvcHRpb25hbCBkYXRhIChzZWUgYWJvdmUpCi0gICovCi0gIGRpZFNhdmVSZWNvcmQ6IGZ1
bmN0aW9uKHJlY29yZCwgZGF0YSkgewotICAgIGlmIChkYXRhKSB7Ci0gICAgICAvLyBub3JtYWxp
emUgcmVsYXRpb25zaGlwIElEcyBpbnRvIHJlY29yZHMKLSAgICAgIGRhdGEgPSBub3JtYWxpemVS
ZWxhdGlvbnNoaXBzKHRoaXMsIHJlY29yZC5jb25zdHJ1Y3RvciwgZGF0YSwgcmVjb3JkKTsKLQot
ICAgICAgdGhpcy51cGRhdGVJZChyZWNvcmQsIGRhdGEpOwotICAgIH0KLQotICAgIHJlY29yZC5h
ZGFwdGVyRGlkQ29tbWl0KGRhdGEpOwotICB9LAotCi0gIC8qKgotICAgIFRoaXMgbWV0aG9kIGlz
IGNhbGxlZCBvbmNlIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IGFuCi0gICAgYWRhcHRlcidzIGBj
cmVhdGVSZWNvcmRgLCBgdXBkYXRlUmVjb3JkYCBvciBgZGVsZXRlUmVjb3JkYAotICAgIGlzIHJl
amVjdGVkIHdpdGggYSBgRFMuSW52YWxpZEVycm9yYC4KLQotICAgIEBtZXRob2QgcmVjb3JkV2Fz
SW52YWxpZAotICAgIEBwcml2YXRlCi0gICAgQHBhcmFtIHtEUy5Nb2RlbH0gcmVjb3JkCi0gICAg
QHBhcmFtIHtPYmplY3R9IGVycm9ycwotICAqLwotICByZWNvcmRXYXNJbnZhbGlkOiBmdW5jdGlv
bihyZWNvcmQsIGVycm9ycykgewotICAgIHJlY29yZC5hZGFwdGVyRGlkSW52YWxpZGF0ZShlcnJv
cnMpOwotICB9LAotCi0gIC8qKgotICAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbmNlIHRoZSBw
cm9taXNlIHJldHVybmVkIGJ5IGFuCi0gICAgYWRhcHRlcidzIGBjcmVhdGVSZWNvcmRgLCBgdXBk
YXRlUmVjb3JkYCBvciBgZGVsZXRlUmVjb3JkYAotICAgIGlzIHJlamVjdGVkICh3aXRoIGFueXRo
aW5nIG90aGVyIHRoYW4gYSBgRFMuSW52YWxpZEVycm9yYCkuCi0KLSAgICBAbWV0aG9kIHJlY29y
ZFdhc0Vycm9yCi0gICAgQHByaXZhdGUKLSAgICBAcGFyYW0ge0RTLk1vZGVsfSByZWNvcmQKLSAg
Ki8KLSAgcmVjb3JkV2FzRXJyb3I6IGZ1bmN0aW9uKHJlY29yZCkgewotICAgIHJlY29yZC5hZGFw
dGVyRGlkRXJyb3IoKTsKLSAgfSwKLQotICAvKioKLSAgICBXaGVuIGFuIGFkYXB0ZXIncyBgY3Jl
YXRlUmVjb3JkYCwgYHVwZGF0ZVJlY29yZGAgb3IgYGRlbGV0ZVJlY29yZGAKLSAgICByZXNvbHZl
cyB3aXRoIGRhdGEsIHRoaXMgbWV0aG9kIGV4dHJhY3RzIHRoZSBJRCBmcm9tIHRoZSBzdXBwbGll
ZAotICAgIGRhdGEuCi0KLSAgICBAbWV0aG9kIHVwZGF0ZUlkCi0gICAgQHByaXZhdGUKLSAgICBA
cGFyYW0ge0RTLk1vZGVsfSByZWNvcmQKLSAgICBAcGFyYW0ge09iamVjdH0gZGF0YQotICAqLwot
ICB1cGRhdGVJZDogZnVuY3Rpb24ocmVjb3JkLCBkYXRhKSB7Ci0gICAgdmFyIG9sZElkID0gZ2V0
KHJlY29yZCwgJ2lkJyksCi0gICAgICAgIGlkID0gY29lcmNlSWQoZGF0YS5pZCk7Ci0KLSAgICBF
bWJlci5hc3NlcnQoIkFuIGFkYXB0ZXIgY2Fubm90IGFzc2lnbiBhIG5ldyBpZCB0byBhIHJlY29y
ZCB0aGF0IGFscmVhZHkgaGFzIGFuIGlkLiAiICsgcmVjb3JkICsgIiBoYWQgaWQ6ICIgKyBvbGRJ
ZCArICIgYW5kIHlvdSB0cmllZCB0byB1cGRhdGUgaXQgd2l0aCAiICsgaWQgKyAiLiBUaGlzIGxp
a2VseSBoYXBwZW5lZCBiZWNhdXNlIHlvdXIgc2VydmVyIHJldHVybmVkIGRhdGEgaW4gcmVzcG9u
c2UgdG8gYSBmaW5kIG9yIHVwZGF0ZSB0aGF0IGhhZCBhIGRpZmZlcmVudCBpZCB0aGFuIHRoZSBv
bmUgeW91IHNlbnQuIiwgb2xkSWQgPT09IG51bGwgfHwgaWQgPT09IG9sZElkKTsKLQotICAgIHRo
aXMudHlwZU1hcEZvcihyZWNvcmQuY29uc3RydWN0b3IpLmlkVG9SZWNvcmRbaWRdID0gcmVjb3Jk
OwotCi0gICAgc2V0KHJlY29yZCwgJ2lkJywgaWQpOwotICB9LAotCi0gIC8qKgotICAgIFJldHVy
bnMgYSBtYXAgb2YgSURzIHRvIGNsaWVudCBJRHMgZm9yIGEgZ2l2ZW4gdHlwZS4KLQotICAgIEBt
ZXRob2QgdHlwZU1hcEZvcgotICAgIEBwcml2YXRlCi0gICAgQHBhcmFtIHR5cGUKLSAgICBAcmV0
dXJuIHtPYmplY3R9IHR5cGVNYXAKLSAgKi8KLSAgdHlwZU1hcEZvcjogZnVuY3Rpb24odHlwZSkg
ewotICAgIHZhciB0eXBlTWFwcyA9IGdldCh0aGlzLCAndHlwZU1hcHMnKSwKLSAgICAgICAgZ3Vp
ZCA9IEVtYmVyLmd1aWRGb3IodHlwZSksCi0gICAgICAgIHR5cGVNYXA7Ci0KLSAgICB0eXBlTWFw
ID0gdHlwZU1hcHNbZ3VpZF07Ci0KLSAgICBpZiAodHlwZU1hcCkgeyByZXR1cm4gdHlwZU1hcDsg
fQotCi0gICAgdHlwZU1hcCA9IHsKLSAgICAgIGlkVG9SZWNvcmQ6IHt9LAotICAgICAgcmVjb3Jk
czogW10sCi0gICAgICBtZXRhZGF0YToge30KLSAgICB9OwotCi0gICAgdHlwZU1hcHNbZ3VpZF0g
PSB0eXBlTWFwOwotCi0gICAgcmV0dXJuIHR5cGVNYXA7Ci0gIH0sCi0KLSAgLy8gLi4uLi4uLi4u
Li4uLi4uLgotICAvLyAuIExPQURJTkcgREFUQSAuCi0gIC8vIC4uLi4uLi4uLi4uLi4uLi4KLQot
ICAvKioKLSAgICBUaGlzIGludGVybmFsIG1ldGhvZCBpcyB1c2VkIGJ5IGBwdXNoYC4KLQotICAg
IEBtZXRob2QgX2xvYWQKLSAgICBAcHJpdmF0ZQotICAgIEBwYXJhbSB7U3RyaW5nIG9yIHN1YmNs
YXNzIG9mIERTLk1vZGVsfSB0eXBlCi0gICAgQHBhcmFtIHtPYmplY3R9IGRhdGEKLSAgICBAcGFy
YW0ge0Jvb2xlYW59IHBhcnRpYWwgdGhlIGRhdGEgc2hvdWxkIGJlIG1lcmdlZCBpbnRvCi0gICAg
ICB0aGUgZXhpc3RpbmcgZGF0YSwgbm90IHJlcGxhY2UgaXQuCi0gICovCi0gIF9sb2FkOiBmdW5j
dGlvbih0eXBlLCBkYXRhLCBwYXJ0aWFsKSB7Ci0gICAgdmFyIGlkID0gY29lcmNlSWQoZGF0YS5p
ZCksCi0gICAgICAgIHJlY29yZCA9IHRoaXMucmVjb3JkRm9ySWQodHlwZSwgaWQpOwotCi0gICAg
cmVjb3JkLnNldHVwRGF0YShkYXRhLCBwYXJ0aWFsKTsKLSAgICB0aGlzLnJlY29yZEFycmF5TWFu
YWdlci5yZWNvcmREaWRDaGFuZ2UocmVjb3JkKTsKLQotICAgIHJldHVybiByZWNvcmQ7Ci0gIH0s
Ci0KLSAgLyoqCi0gICAgUmV0dXJucyBhIG1vZGVsIGNsYXNzIGZvciBhIHBhcnRpY3VsYXIga2V5
LiBVc2VkIGJ5Ci0gICAgbWV0aG9kcyB0aGF0IHRha2UgYSB0eXBlIGtleSAobGlrZSBgZmluZGAs
IGBjcmVhdGVSZWNvcmRgLAotICAgIGV0Yy4pCi0KLSAgICBAbWV0aG9kIG1vZGVsRm9yCi0gICAg
QHBhcmFtIHtTdHJpbmcgb3Igc3ViY2xhc3Mgb2YgRFMuTW9kZWx9IGtleQotICAgIEByZXR1cm5z
IHtzdWJjbGFzcyBvZiBEUy5Nb2RlbH0KLSAgKi8KLSAgbW9kZWxGb3I6IGZ1bmN0aW9uKGtleSkg
ewotICAgIHZhciBmYWN0b3J5OwotCi0KLSAgICBpZiAodHlwZW9mIGtleSA9PT0gJ3N0cmluZycp
IHsKLSAgICAgIHZhciBub3JtYWxpemVkS2V5ID0gdGhpcy5jb250YWluZXIubm9ybWFsaXplKCdt
b2RlbDonICsga2V5KTsKLQotICAgICAgZmFjdG9yeSA9IHRoaXMuY29udGFpbmVyLmxvb2t1cEZh
Y3Rvcnkobm9ybWFsaXplZEtleSk7Ci0gICAgICBpZiAoIWZhY3RvcnkpIHsgdGhyb3cgbmV3IEVt
YmVyLkVycm9yKCJObyBtb2RlbCB3YXMgZm91bmQgZm9yICciICsga2V5ICsgIiciKTsgfQotICAg
ICAgZmFjdG9yeS50eXBlS2V5ID0gbm9ybWFsaXplZEtleS5zcGxpdCgnOicsIDIpWzFdOwotICAg
IH0gZWxzZSB7Ci0gICAgICAvLyBBIGZhY3RvcnkgYWxyZWFkeSBzdXBwbGllZC4KLSAgICAgIGZh
Y3RvcnkgPSBrZXk7Ci0gICAgfQotCi0gICAgZmFjdG9yeS5zdG9yZSA9IHRoaXM7Ci0gICAgcmV0
dXJuIGZhY3Rvcnk7Ci0gIH0sCi0KLSAgLyoqCi0gICAgUHVzaCBzb21lIGRhdGEgZm9yIGEgZ2l2
ZW4gdHlwZSBpbnRvIHRoZSBzdG9yZS4KLQotICAgIFRoaXMgbWV0aG9kIGV4cGVjdHMgbm9ybWFs
aXplZCBkYXRhOgotCi0gICAgKiBUaGUgSUQgaXMgYSBrZXkgbmFtZWQgYGlkYCAoYW4gSUQgaXMg
bWFuZGF0b3J5KQotICAgICogVGhlIG5hbWVzIG9mIGF0dHJpYnV0ZXMgYXJlIHRoZSBvbmVzIHlv
dSB1c2VkIGluCi0gICAgICB5b3VyIG1vZGVsJ3MgYERTLmF0dHJgcy4KLSAgICAqIFlvdXIgcmVs
YXRpb25zaGlwcyBtdXN0IGJlOgotICAgICAgKiByZXByZXNlbnRlZCBhcyBJRHMgb3IgQXJyYXlz
IG9mIElEcwotICAgICAgKiByZXByZXNlbnRlZCBhcyBtb2RlbCBpbnN0YW5jZXMKLSAgICAgICog
cmVwcmVzZW50ZWQgYXMgVVJMcywgdW5kZXIgdGhlIGBsaW5rc2Aga2V5Ci0KLSAgICBGb3IgdGhp
cyBtb2RlbDoKLQotICAgIGBgYGpzCi0gICAgQXBwLlBlcnNvbiA9IERTLk1vZGVsLmV4dGVuZCh7
Ci0gICAgICBmaXJzdE5hbWU6IERTLmF0dHIoKSwKLSAgICAgIGxhc3ROYW1lOiBEUy5hdHRyKCks
Ci0KLSAgICAgIGNoaWxkcmVuOiBEUy5oYXNNYW55KCdwZXJzb24nKQotICAgIH0pOwotICAgIGBg
YAotCi0gICAgVG8gcmVwcmVzZW50IHRoZSBjaGlsZHJlbiBhcyBJRHM6Ci0KLSAgICBgYGBqcwot
ICAgIHsKLSAgICAgIGlkOiAxLAotICAgICAgZmlyc3ROYW1lOiAiVG9tIiwKLSAgICAgIGxhc3RO
YW1lOiAiRGFsZSIsCi0gICAgICBjaGlsZHJlbjogWzEsIDIsIDNdCi0gICAgfQotICAgIGBgYAot
Ci0gICAgVG8gcmVwcmVzZW50IHRoZSBjaGlsZHJlbiByZWxhdGlvbnNoaXAgYXMgYSBVUkw6Ci0K
LSAgICBgYGBqcwotICAgIHsKLSAgICAgIGlkOiAxLAotICAgICAgZmlyc3ROYW1lOiAiVG9tIiwK
LSAgICAgIGxhc3ROYW1lOiAiRGFsZSIsCi0gICAgICBsaW5rczogewotICAgICAgICBjaGlsZHJl
bjogIi9wZW9wbGUvMS9jaGlsZHJlbiIKLSAgICAgIH0KLSAgICB9Ci0gICAgYGBgCi0KLSAgICBJ
ZiB5b3UncmUgc3RyZWFtaW5nIGRhdGEgb3IgaW1wbGVtZW50aW5nIGFuIGFkYXB0ZXIsCi0gICAg
bWFrZSBzdXJlIHRoYXQgeW91IGhhdmUgY29udmVydGVkIHRoZSBpbmNvbWluZyBkYXRhCi0gICAg
aW50byB0aGlzIGZvcm0uCi0KLSAgICBUaGlzIG1ldGhvZCBjYW4gYmUgdXNlZCBib3RoIHRvIHB1
c2ggaW4gYnJhbmQgbmV3Ci0gICAgcmVjb3JkcywgYXMgd2VsbCBhcyB0byB1cGRhdGUgZXhpc3Rp
bmcgcmVjb3Jkcy4KLQotICAgIEBtZXRob2QgcHVzaAotICAgIEBwYXJhbSB7U3RyaW5nIG9yIHN1
YmNsYXNzIG9mIERTLk1vZGVsfSB0eXBlCi0gICAgQHBhcmFtIHtPYmplY3R9IGRhdGEKLSAgICBA
cmV0dXJucyB7RFMuTW9kZWx9IHRoZSByZWNvcmQgdGhhdCB3YXMgY3JlYXRlZCBvcgotICAgICAg
dXBkYXRlZC4KLSAgKi8KLSAgcHVzaDogZnVuY3Rpb24odHlwZSwgZGF0YSwgX3BhcnRpYWwpIHsK
LSAgICAvLyBfcGFydGlhbCBpcyBhbiBpbnRlcm5hbCBwYXJhbSB1c2VkIGJ5IGB1cGRhdGVgLgot
ICAgIC8vIElmIHBhc3NlZCwgaXQgbWVhbnMgdGhhdCB0aGUgZGF0YSBzaG91bGQgYmUKLSAgICAv
LyBtZXJnZWQgaW50byB0aGUgZXhpc3RpbmcgZGF0YSwgbm90IHJlcGxhY2UgaXQuCi0KLSAgICBF
bWJlci5hc3NlcnQoIllvdSBtdXN0IGluY2x1ZGUgYW4gYGlkYCBpbiBhIGhhc2ggcGFzc2VkIHRv
IGBwdXNoYCIsIGRhdGEuaWQgIT0gbnVsbCk7Ci0KLSAgICB0eXBlID0gdGhpcy5tb2RlbEZvcih0
eXBlKTsKLQotICAgIC8vIG5vcm1hbGl6ZSByZWxhdGlvbnNoaXAgSURzIGludG8gcmVjb3Jkcwot
ICAgIGRhdGEgPSBub3JtYWxpemVSZWxhdGlvbnNoaXBzKHRoaXMsIHR5cGUsIGRhdGEpOwotCi0g
ICAgdGhpcy5fbG9hZCh0eXBlLCBkYXRhLCBfcGFydGlhbCk7Ci0KLSAgICByZXR1cm4gdGhpcy5y
ZWNvcmRGb3JJZCh0eXBlLCBkYXRhLmlkKTsKLSAgfSwKLQotICAvKioKLSAgICBQdXNoIHNvbWUg
cmF3IGRhdGEgaW50byB0aGUgc3RvcmUuCi0KLSAgICBUaGUgZGF0YSB3aWxsIGJlIGF1dG9tYXRp
Y2FsbHkgZGVzZXJpYWxpemVkIHVzaW5nIHRoZQotICAgIHNlcmlhbGl6ZXIgZm9yIHRoZSBgdHlw
ZWAgcGFyYW0uCi0KLSAgICBUaGlzIG1ldGhvZCBjYW4gYmUgdXNlZCBib3RoIHRvIHB1c2ggaW4g
YnJhbmQgbmV3Ci0gICAgcmVjb3JkcywgYXMgd2VsbCBhcyB0byB1cGRhdGUgZXhpc3RpbmcgcmVj
b3Jkcy4KLQotICAgIFlvdSBjYW4gcHVzaCBpbiBtb3JlIHRoYW4gb25lIHR5cGUgb2Ygb2JqZWN0
IGF0IG9uY2UuCi0gICAgQWxsIG9iamVjdHMgc2hvdWxkIGJlIGluIHRoZSBmb3JtYXQgZXhwZWN0
ZWQgYnkgdGhlCi0gICAgc2VyaWFsaXplci4KLQotICAgIGBgYGpzCi0gICAgQXBwLkFwcGxpY2F0
aW9uU2VyaWFsaXplciA9IERTLkFjdGl2ZU1vZGVsU2VyaWFsaXplcjsKLQotICAgIHZhciBwdXNo
RGF0YSA9IHsKLSAgICAgIHBvc3RzOiBbCi0gICAgICAgIHtpZDogMSwgcG9zdF90aXRsZTogIkdy
ZWF0IHBvc3QiLCBjb21tZW50X2lkczogWzJdfQotICAgICAgXSwKLSAgICAgIGNvbW1lbnRzOiBb
Ci0gICAgICAgIHtpZDogMiwgY29tbWVudF9ib2R5OiAiSW5zaWdodGZ1bCBjb21tZW50In0KLSAg
ICAgIF0KLSAgICB9Ci0KLSAgICBzdG9yZS5wdXNoUGF5bG9hZCgncG9zdCcsIHB1c2hEYXRhKTsK
LSAgICBgYGAKLQotICAgIEBtZXRob2QgcHVzaFBheWxvYWQKLSAgICBAcGFyYW0ge1N0cmluZ30g
dHlwZQotICAgIEBwYXJhbSB7T2JqZWN0fSBwYXlsb2FkCi0gICAgQHJldHVybiB7RFMuTW9kZWx9
IHRoZSByZWNvcmQgdGhhdCB3YXMgY3JlYXRlZCBvciB1cGRhdGVkLgotICAqLwotICBwdXNoUGF5
bG9hZDogZnVuY3Rpb24gKHR5cGUsIHBheWxvYWQpIHsKLSAgICB2YXIgc2VyaWFsaXplcjsKLSAg
ICBpZiAoIXBheWxvYWQpIHsKLSAgICAgIHBheWxvYWQgPSB0eXBlOwotICAgICAgc2VyaWFsaXpl
ciA9IGRlZmF1bHRTZXJpYWxpemVyKHRoaXMuY29udGFpbmVyKTsKLSAgICAgIEVtYmVyLmFzc2Vy
dCgiWW91IGNhbm5vdCB1c2UgYHN0b3JlI3B1c2hQYXlsb2FkYCB3aXRob3V0IGEgdHlwZSB1bmxl
c3MgeW91ciBkZWZhdWx0IHNlcmlhbGl6ZXIgZGVmaW5lcyBgcHVzaFBheWxvYWRgIiwgc2VyaWFs
aXplci5wdXNoUGF5bG9hZCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIHNlcmlhbGl6ZXIgPSB0aGlz
LnNlcmlhbGl6ZXJGb3IodHlwZSk7Ci0gICAgfQotICAgIHNlcmlhbGl6ZXIucHVzaFBheWxvYWQo
dGhpcywgcGF5bG9hZCk7Ci0gIH0sCi0KLSAgdXBkYXRlOiBmdW5jdGlvbih0eXBlLCBkYXRhKSB7
Ci0gICAgRW1iZXIuYXNzZXJ0KCJZb3UgbXVzdCBpbmNsdWRlIGFuIGBpZGAgaW4gYSBoYXNoIHBh
c3NlZCB0byBgdXBkYXRlYCIsIGRhdGEuaWQgIT0gbnVsbCk7Ci0KLSAgICByZXR1cm4gdGhpcy5w
dXNoKHR5cGUsIGRhdGEsIHRydWUpOwotICB9LAotCi0gIC8qKgotICAgIElmIHlvdSBoYXZlIGFu
IEFycmF5IG9mIG5vcm1hbGl6ZWQgZGF0YSB0byBwdXNoLAotICAgIHlvdSBjYW4gY2FsbCBgcHVz
aE1hbnlgIHdpdGggdGhlIEFycmF5LCBhbmQgaXQgd2lsbAotICAgIGNhbGwgYHB1c2hgIHJlcGVh
dGVkbHkgZm9yIHlvdS4KLQotICAgIEBtZXRob2QgcHVzaE1hbnkKLSAgICBAcGFyYW0ge1N0cmlu
ZyBvciBzdWJjbGFzcyBvZiBEUy5Nb2RlbH0gdHlwZQotICAgIEBwYXJhbSB7QXJyYXl9IGRhdGFz
Ci0gICAgQHJldHVybiB7QXJyYXl9Ci0gICovCi0gIHB1c2hNYW55OiBmdW5jdGlvbih0eXBlLCBk
YXRhcykgewotICAgIHJldHVybiBtYXAoZGF0YXMsIGZ1bmN0aW9uKGRhdGEpIHsKLSAgICAgIHJl
dHVybiB0aGlzLnB1c2godHlwZSwgZGF0YSk7Ci0gICAgfSwgdGhpcyk7Ci0gIH0sCi0KLSAgLyoq
Ci0gICAgSWYgeW91IGhhdmUgc29tZSBtZXRhZGF0YSB0byBzZXQgZm9yIGEgdHlwZQotICAgIHlv
dSBjYW4gY2FsbCBgbWV0YUZvclR5cGVgLgotCi0gICAgQG1ldGhvZCBtZXRhRm9yVHlwZQotICAg
IEBwYXJhbSB7U3RyaW5nIG9yIHN1YmNsYXNzIG9mIERTLk1vZGVsfSB0eXBlCi0gICAgQHBhcmFt
IHtPYmplY3R9IG1ldGFkYXRhCi0gICovCi0gIG1ldGFGb3JUeXBlOiBmdW5jdGlvbih0eXBlLCBt
ZXRhZGF0YSkgewotICAgIHR5cGUgPSB0aGlzLm1vZGVsRm9yKHR5cGUpOwotCi0gICAgRW1iZXIu
bWVyZ2UodGhpcy50eXBlTWFwRm9yKHR5cGUpLm1ldGFkYXRhLCBtZXRhZGF0YSk7Ci0gIH0sCi0K
LSAgLyoqCi0gICAgQnVpbGQgYSBicmFuZCBuZXcgcmVjb3JkIGZvciBhIGdpdmVuIHR5cGUsIElE
LCBhbmQKLSAgICBpbml0aWFsIGRhdGEuCi0KLSAgICBAbWV0aG9kIGJ1aWxkUmVjb3JkCi0gICAg
QHByaXZhdGUKLSAgICBAcGFyYW0ge3N1YmNsYXNzIG9mIERTLk1vZGVsfSB0eXBlCi0gICAgQHBh
cmFtIHtTdHJpbmd9IGlkCi0gICAgQHBhcmFtIHtPYmplY3R9IGRhdGEKLSAgICBAcmV0dXJucyB7
RFMuTW9kZWx9IHJlY29yZAotICAqLwotICBidWlsZFJlY29yZDogZnVuY3Rpb24odHlwZSwgaWQs
IGRhdGEpIHsKLSAgICB2YXIgdHlwZU1hcCA9IHRoaXMudHlwZU1hcEZvcih0eXBlKSwKLSAgICAg
ICAgaWRUb1JlY29yZCA9IHR5cGVNYXAuaWRUb1JlY29yZDsKLQotICAgIEVtYmVyLmFzc2VydCgn
VGhlIGlkICcgKyBpZCArICcgaGFzIGFscmVhZHkgYmVlbiB1c2VkIHdpdGggYW5vdGhlciByZWNv
cmQgb2YgdHlwZSAnICsgdHlwZS50b1N0cmluZygpICsgJy4nLCAhaWQgfHwgIWlkVG9SZWNvcmRb
aWRdKTsKLQotICAgIC8vIGxvb2t1cEZhY3Rvcnkgc2hvdWxkIHJlYWxseSByZXR1cm4gYW4gb2Jq
ZWN0IHRoYXQgY3JlYXRlcwotICAgIC8vIGluc3RhbmNlcyB3aXRoIHRoZSBpbmplY3Rpb25zIGFw
cGxpZWQKLSAgICB2YXIgcmVjb3JkID0gdHlwZS5fY3JlYXRlKHsKLSAgICAgIGlkOiBpZCwKLSAg
ICAgIHN0b3JlOiB0aGlzLAotICAgICAgY29udGFpbmVyOiB0aGlzLmNvbnRhaW5lcgotICAgIH0p
OwotCi0gICAgaWYgKGRhdGEpIHsKLSAgICAgIHJlY29yZC5zZXR1cERhdGEoZGF0YSk7Ci0gICAg
fQotCi0gICAgLy8gaWYgd2UncmUgY3JlYXRpbmcgYW4gaXRlbSwgdGhpcyBwcm9jZXNzIHdpbGwg
YmUgZG9uZQotICAgIC8vIGxhdGVyLCBvbmNlIHRoZSBvYmplY3QgaGFzIGJlZW4gcGVyc2lzdGVk
LgotICAgIGlmIChpZCkgewotICAgICAgaWRUb1JlY29yZFtpZF0gPSByZWNvcmQ7Ci0gICAgfQot
Ci0gICAgdHlwZU1hcC5yZWNvcmRzLnB1c2gocmVjb3JkKTsKLQotICAgIHJldHVybiByZWNvcmQ7
Ci0gIH0sCi0KLSAgLy8gLi4uLi4uLi4uLi4uLi4uCi0gIC8vIC4gREVTVFJVQ1RJT04gLgotICAv
LyAuLi4uLi4uLi4uLi4uLi4KLQotICAvKioKLSAgICBXaGVuIGEgcmVjb3JkIGlzIGRlc3Ryb3ll
ZCwgdGhpcyB1bi1pbmRleGVzIGl0IGFuZAotICAgIHJlbW92ZXMgaXQgZnJvbSBhbnkgcmVjb3Jk
IGFycmF5cyBzbyBpdCBjYW4gYmUgR0NlZC4KLQotICAgIEBtZXRob2QgZGVtYXRlcmlhbGl6ZVJl
Y29yZAotICAgIEBwcml2YXRlCi0gICAgQHBhcmFtIHtEUy5Nb2RlbH0gcmVjb3JkCi0gICovCi0g
IGRlbWF0ZXJpYWxpemVSZWNvcmQ6IGZ1bmN0aW9uKHJlY29yZCkgewotICAgIHZhciB0eXBlID0g
cmVjb3JkLmNvbnN0cnVjdG9yLAotICAgICAgICB0eXBlTWFwID0gdGhpcy50eXBlTWFwRm9yKHR5
cGUpLAotICAgICAgICBpZCA9IGdldChyZWNvcmQsICdpZCcpOwotCi0gICAgcmVjb3JkLnVwZGF0
ZVJlY29yZEFycmF5cygpOwotCi0gICAgaWYgKGlkKSB7Ci0gICAgICBkZWxldGUgdHlwZU1hcC5p
ZFRvUmVjb3JkW2lkXTsKLSAgICB9Ci0KLSAgICB2YXIgbG9jID0gaW5kZXhPZih0eXBlTWFwLnJl
Y29yZHMsIHJlY29yZCk7Ci0gICAgdHlwZU1hcC5yZWNvcmRzLnNwbGljZShsb2MsIDEpOwotICB9
LAotCi0gIC8vIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgotICAvLyAuIFJFTEFUSU9OU0hJUCBD
SEFOR0VTIC4KLSAgLy8gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi0KLSAgYWRkUmVsYXRpb25z
aGlwQ2hhbmdlRm9yOiBmdW5jdGlvbihjaGlsZFJlY29yZCwgY2hpbGRLZXksIHBhcmVudFJlY29y
ZCwgcGFyZW50S2V5LCBjaGFuZ2UpIHsKLSAgICB2YXIgY2xpZW50SWQgPSBjaGlsZFJlY29yZC5j
bGllbnRJZCwKLSAgICAgICAgcGFyZW50Q2xpZW50SWQgPSBwYXJlbnRSZWNvcmQgPyBwYXJlbnRS
ZWNvcmQgOiBwYXJlbnRSZWNvcmQ7Ci0gICAgdmFyIGtleSA9IGNoaWxkS2V5ICsgcGFyZW50S2V5
OwotICAgIHZhciBjaGFuZ2VzID0gdGhpcy5fcmVsYXRpb25zaGlwQ2hhbmdlczsKLSAgICBpZiAo
IShjbGllbnRJZCBpbiBjaGFuZ2VzKSkgewotICAgICAgY2hhbmdlc1tjbGllbnRJZF0gPSB7fTsK
LSAgICB9Ci0gICAgaWYgKCEocGFyZW50Q2xpZW50SWQgaW4gY2hhbmdlc1tjbGllbnRJZF0pKSB7
Ci0gICAgICBjaGFuZ2VzW2NsaWVudElkXVtwYXJlbnRDbGllbnRJZF0gPSB7fTsKLSAgICB9Ci0g
ICAgaWYgKCEoa2V5IGluIGNoYW5nZXNbY2xpZW50SWRdW3BhcmVudENsaWVudElkXSkpIHsKLSAg
ICAgIGNoYW5nZXNbY2xpZW50SWRdW3BhcmVudENsaWVudElkXVtrZXldID0ge307Ci0gICAgfQot
ICAgIGNoYW5nZXNbY2xpZW50SWRdW3BhcmVudENsaWVudElkXVtrZXldW2NoYW5nZS5jaGFuZ2VU
eXBlXSA9IGNoYW5nZTsKLSAgfSwKLQotICByZW1vdmVSZWxhdGlvbnNoaXBDaGFuZ2VGb3I6IGZ1
bmN0aW9uKGNsaWVudFJlY29yZCwgY2hpbGRLZXksIHBhcmVudFJlY29yZCwgcGFyZW50S2V5LCB0
eXBlKSB7Ci0gICAgdmFyIGNsaWVudElkID0gY2xpZW50UmVjb3JkLmNsaWVudElkLAotICAgICAg
ICBwYXJlbnRDbGllbnRJZCA9IHBhcmVudFJlY29yZCA/IHBhcmVudFJlY29yZC5jbGllbnRJZCA6
IHBhcmVudFJlY29yZDsKLSAgICB2YXIgY2hhbmdlcyA9IHRoaXMuX3JlbGF0aW9uc2hpcENoYW5n
ZXM7Ci0gICAgdmFyIGtleSA9IGNoaWxkS2V5ICsgcGFyZW50S2V5OwotICAgIGlmICghKGNsaWVu
dElkIGluIGNoYW5nZXMpIHx8ICEocGFyZW50Q2xpZW50SWQgaW4gY2hhbmdlc1tjbGllbnRJZF0p
IHx8ICEoa2V5IGluIGNoYW5nZXNbY2xpZW50SWRdW3BhcmVudENsaWVudElkXSkpewotICAgICAg
cmV0dXJuOwotICAgIH0KLSAgICBkZWxldGUgY2hhbmdlc1tjbGllbnRJZF1bcGFyZW50Q2xpZW50
SWRdW2tleV1bdHlwZV07Ci0gIH0sCi0KLSAgcmVsYXRpb25zaGlwQ2hhbmdlUGFpcnNGb3I6IGZ1
bmN0aW9uKHJlY29yZCl7Ci0gICAgdmFyIHRvUmV0dXJuID0gW107Ci0KLSAgICBpZiggIXJlY29y
ZCApIHsgcmV0dXJuIHRvUmV0dXJuOyB9Ci0KLSAgICAvL1RPRE8oSWdvcikgV2hhdCBhYm91dCB0
aGUgb3RoZXIgc2lkZQotICAgIHZhciBjaGFuZ2VzT2JqZWN0ID0gdGhpcy5fcmVsYXRpb25zaGlw
Q2hhbmdlc1tyZWNvcmQuY2xpZW50SWRdOwotICAgIGZvciAodmFyIG9iaktleSBpbiBjaGFuZ2Vz
T2JqZWN0KXsKLSAgICAgIGlmKGNoYW5nZXNPYmplY3QuaGFzT3duUHJvcGVydHkob2JqS2V5KSl7
Ci0gICAgICAgIGZvciAodmFyIGNoYW5nZUtleSBpbiBjaGFuZ2VzT2JqZWN0W29iaktleV0pewot
ICAgICAgICAgIGlmKGNoYW5nZXNPYmplY3Rbb2JqS2V5XS5oYXNPd25Qcm9wZXJ0eShjaGFuZ2VL
ZXkpKXsKLSAgICAgICAgICAgIHRvUmV0dXJuLnB1c2goY2hhbmdlc09iamVjdFtvYmpLZXldW2No
YW5nZUtleV0pOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICBy
ZXR1cm4gdG9SZXR1cm47Ci0gIH0sCi0KLSAgLy8gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgotICAv
LyAuIFBFUi1UWVBFIEFEQVBURVJTCi0gIC8vIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLQotICAv
KioKLSAgICBSZXR1cm5zIHRoZSBhZGFwdGVyIGZvciBhIGdpdmVuIHR5cGUuCi0KLSAgICBAbWV0
aG9kIGFkYXB0ZXJGb3IKLSAgICBAcHJpdmF0ZQotICAgIEBwYXJhbSB7c3ViY2xhc3Mgb2YgRFMu
TW9kZWx9IHR5cGUKLSAgICBAcmV0dXJucyBEUy5BZGFwdGVyCi0gICovCi0gIGFkYXB0ZXJGb3I6
IGZ1bmN0aW9uKHR5cGUpIHsKLSAgICB2YXIgY29udGFpbmVyID0gdGhpcy5jb250YWluZXIsIGFk
YXB0ZXI7Ci0KLSAgICBpZiAoY29udGFpbmVyKSB7Ci0gICAgICBhZGFwdGVyID0gY29udGFpbmVy
Lmxvb2t1cCgnYWRhcHRlcjonICsgdHlwZS50eXBlS2V5KSB8fCBjb250YWluZXIubG9va3VwKCdh
ZGFwdGVyOmFwcGxpY2F0aW9uJyk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGFkYXB0ZXIgfHwgZ2V0
KHRoaXMsICdkZWZhdWx0QWRhcHRlcicpOwotICB9LAotCi0gIC8vIC4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLgotICAvLyAuIFJFQ09SRCBDSEFOR0UgTk9USUZJQ0FUSU9OIC4KLSAgLy8g
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi0KLSAgLyoqCi0gICAgUmV0dXJucyBhbiBp
bnN0YW5jZSBvZiB0aGUgc2VyaWFsaXplciBmb3IgYSBnaXZlbiB0eXBlLiBGb3IKLSAgICBleGFt
cGxlLCBgc2VyaWFsaXplckZvcigncGVyc29uJylgIHdpbGwgcmV0dXJuIGFuIGluc3RhbmNlIG9m
Ci0gICAgYEFwcC5QZXJzb25TZXJpYWxpemVyYC4KLQotICAgIElmIG5vIGBBcHAuUGVyc29uU2Vy
aWFsaXplcmAgaXMgZm91bmQsIHRoaXMgbWV0aG9kIHdpbGwgbG9vawotICAgIGZvciBhbiBgQXBw
LkFwcGxpY2F0aW9uU2VyaWFsaXplcmAgKHRoZSBkZWZhdWx0IHNlcmlhbGl6ZXIgZm9yCi0gICAg
eW91ciBlbnRpcmUgYXBwbGljYXRpb24pLgotCi0gICAgSWYgbm8gYEFwcC5BcHBsaWNhdGlvblNl
cmlhbGl6ZXJgIGlzIGZvdW5kLCBpdCB3aWxsIGZhbGwgYmFjawotICAgIHRvIGFuIGluc3RhbmNl
IG9mIGBEUy5KU09OU2VyaWFsaXplcmAuCi0KLSAgICBAbWV0aG9kIHNlcmlhbGl6ZXJGb3IKLSAg
ICBAcHJpdmF0ZQotICAgIEBwYXJhbSB7U3RyaW5nfSB0eXBlIHRoZSByZWNvcmQgdG8gc2VyaWFs
aXplCi0gICAgQHJldHVybiB7RFMuU2VyaWFsaXplcn0KLSAgKi8KLSAgc2VyaWFsaXplckZvcjog
ZnVuY3Rpb24odHlwZSkgewotICAgIHR5cGUgPSB0aGlzLm1vZGVsRm9yKHR5cGUpOwotICAgIHZh
ciBhZGFwdGVyID0gdGhpcy5hZGFwdGVyRm9yKHR5cGUpOwotCi0gICAgcmV0dXJuIHNlcmlhbGl6
ZXJGb3IodGhpcy5jb250YWluZXIsIHR5cGUudHlwZUtleSwgYWRhcHRlciAmJiBhZGFwdGVyLmRl
ZmF1bHRTZXJpYWxpemVyKTsKLSAgfQotfSk7Ci0KLWZ1bmN0aW9uIG5vcm1hbGl6ZVJlbGF0aW9u
c2hpcHMoc3RvcmUsIHR5cGUsIGRhdGEsIHJlY29yZCkgewotICB0eXBlLmVhY2hSZWxhdGlvbnNo
aXAoZnVuY3Rpb24oa2V5LCByZWxhdGlvbnNoaXApIHsKLSAgICAvLyBBIGxpbmsgKHVzdWFsbHkg
YSBVUkwpIHdhcyBhbHJlYWR5IHByb3ZpZGVkIGluCi0gICAgLy8gbm9ybWFsaXplZCBmb3JtCi0g
ICAgaWYgKGRhdGEubGlua3MgJiYgZGF0YS5saW5rc1trZXldKSB7Ci0gICAgICBpZiAocmVjb3Jk
ICYmIHJlbGF0aW9uc2hpcC5vcHRpb25zLmFzeW5jKSB7IHJlY29yZC5fcmVsYXRpb25zaGlwc1tr
ZXldID0gbnVsbDsgfQotICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHZhciBraW5kID0gcmVs
YXRpb25zaGlwLmtpbmQsCi0gICAgICAgIHZhbHVlID0gZGF0YVtrZXldOwotCi0gICAgaWYgKHZh
bHVlID09IG51bGwpIHsgcmV0dXJuOyB9Ci0KLSAgICBpZiAoa2luZCA9PT0gJ2JlbG9uZ3NUbycp
IHsKLSAgICAgIGRlc2VyaWFsaXplUmVjb3JkSWQoc3RvcmUsIGRhdGEsIGtleSwgcmVsYXRpb25z
aGlwLCB2YWx1ZSk7Ci0gICAgfSBlbHNlIGlmIChraW5kID09PSAnaGFzTWFueScpIHsKLSAgICAg
IGRlc2VyaWFsaXplUmVjb3JkSWRzKHN0b3JlLCBkYXRhLCBrZXksIHJlbGF0aW9uc2hpcCwgdmFs
dWUpOwotICAgICAgYWRkVW5zYXZlZFJlY29yZHMocmVjb3JkLCBrZXksIHZhbHVlKTsKLSAgICB9
Ci0gIH0pOwotCi0gIHJldHVybiBkYXRhOwotfQotCi1mdW5jdGlvbiBkZXNlcmlhbGl6ZVJlY29y
ZElkKHN0b3JlLCBkYXRhLCBrZXksIHJlbGF0aW9uc2hpcCwgaWQpIHsKLSAgaWYgKGlzTm9uZShp
ZCkgfHwgaWQgaW5zdGFuY2VvZiBEUy5Nb2RlbCkgewotICAgIHJldHVybjsKLSAgfQotCi0gIHZh
ciB0eXBlOwotCi0gIGlmICh0eXBlb2YgaWQgPT09ICdudW1iZXInIHx8IHR5cGVvZiBpZCA9PT0g
J3N0cmluZycpIHsKLSAgICB0eXBlID0gdHlwZUZvcihyZWxhdGlvbnNoaXAsIGtleSwgZGF0YSk7
Ci0gICAgZGF0YVtrZXldID0gc3RvcmUucmVjb3JkRm9ySWQodHlwZSwgaWQpOwotICB9IGVsc2Ug
aWYgKHR5cGVvZiBpZCA9PT0gJ29iamVjdCcpIHsKLSAgICAvLyBwb2x5bW9ycGhpYwotICAgIGRh
dGFba2V5XSA9IHN0b3JlLnJlY29yZEZvcklkKGlkLnR5cGUsIGlkLmlkKTsKLSAgfQotfQotCi1m
dW5jdGlvbiB0eXBlRm9yKHJlbGF0aW9uc2hpcCwga2V5LCBkYXRhKSB7Ci0gIGlmIChyZWxhdGlv
bnNoaXAub3B0aW9ucy5wb2x5bW9ycGhpYykgewotICAgIHJldHVybiBkYXRhW2tleSArICJUeXBl
Il07Ci0gIH0gZWxzZSB7Ci0gICAgcmV0dXJuIHJlbGF0aW9uc2hpcC50eXBlOwotICB9Ci19Ci0K
LWZ1bmN0aW9uIGRlc2VyaWFsaXplUmVjb3JkSWRzKHN0b3JlLCBkYXRhLCBrZXksIHJlbGF0aW9u
c2hpcCwgaWRzKSB7Ci0gIGZvciAodmFyIGk9MCwgbD1pZHMubGVuZ3RoOyBpPGw7IGkrKykgewot
ICAgIGRlc2VyaWFsaXplUmVjb3JkSWQoc3RvcmUsIGlkcywgaSwgcmVsYXRpb25zaGlwLCBpZHNb
aV0pOwotICB9Ci19Ci0KLS8vIElmIHRoZXJlIGFyZSBhbnkgdW5zYXZlZCByZWNvcmRzIHRoYXQg
YXJlIGluIGEgaGFzTWFueSB0aGV5IHdvbid0IGJlCi0vLyBpbiB0aGUgcGF5bG9hZCwgc28gYWRk
IHRoZW0gYmFjayBpbiBtYW51YWxseS4KLWZ1bmN0aW9uIGFkZFVuc2F2ZWRSZWNvcmRzKHJlY29y
ZCwga2V5LCBkYXRhKSB7Ci0gIGlmKHJlY29yZCkgewotICAgIGRhdGEucHVzaE9iamVjdHMocmVj
b3JkLmdldChrZXkpLmZpbHRlckJ5KCdpc05ldycpKTsKLSAgfQotfQotCi0vLyBEZWxlZ2F0aW9u
IHRvIHRoZSBhZGFwdGVyIGFuZCBwcm9taXNlIG1hbmFnZW1lbnQKLS8qKgotICBBIGBQcm9taXNl
QXJyYXlgIGlzIGFuIG9iamVjdCB0aGF0IGFjdHMgbGlrZSBib3RoIGFuIGBFbWJlci5BcnJheWAK
LSAgYW5kIGEgcHJvbWlzZS4gV2hlbiB0aGUgcHJvbWlzZSBpcyByZXNvbHZlZCB0aGUgdGhlIHJl
c3VsdGluZyB2YWx1ZQotICB3aWxsIGJlIHNldCB0byB0aGUgYFByb21pc2VBcnJheWAncyBgY29u
dGVudGAgcHJvcGVydHkuIFRoaXMgbWFrZXMKLSAgaXQgZWFzeSB0byBjcmVhdGUgZGF0YSBiaW5k
aW5ncyB3aXRoIHRoZSBgUHJvbWlzZUFycmF5YCB0aGF0IHdpbGwgYmUKLSAgdXBkYXRlZCB3aGVu
IHRoZSBwcm9taXNlIHJlc29sdmVzLgotCi0gIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSB0aGUg
W0VtYmVyLlByb21pc2VQcm94eU1peGluCi0gIGRvY3VtZW50YXRpb25dKC9hcGkvY2xhc3Nlcy9F
bWJlci5Qcm9taXNlUHJveHlNaXhpbi5odG1sKS4KLQotICBFeGFtcGxlCi0KLSAgYGBgamF2YXNj
cmlwdAotICB2YXIgcHJvbWlzZUFycmF5ID0gRFMuUHJvbWlzZUFycmF5LmNyZWF0ZSh7Ci0gICAg
cHJvbWlzZTogJC5nZXRKU09OKCcvc29tZS9yZW1vdGUvZGF0YS5qc29uJykKLSAgfSk7Ci0KLSAg
cHJvbWlzZUFycmF5LmdldCgnbGVuZ3RoJyk7IC8vIDAKLQotICBwcm9taXNlQXJyYXkudGhlbihm
dW5jdGlvbigpIHsKLSAgICBwcm9taXNlQXJyYXkuZ2V0KCdsZW5ndGgnKTsgLy8gMTAwCi0gIH0p
OwotICBgYGAKLQotICBAY2xhc3MgUHJvbWlzZUFycmF5Ci0gIEBuYW1lc3BhY2UgRFMKLSAgQGV4
dGVuZHMgRW1iZXIuQXJyYXlQcm94eQotICBAdXNlcyBFbWJlci5Qcm9taXNlUHJveHlNaXhpbgot
Ki8KLURTLlByb21pc2VBcnJheSA9IEVtYmVyLkFycmF5UHJveHkuZXh0ZW5kKEVtYmVyLlByb21p
c2VQcm94eU1peGluKTsKLS8qKgotICBBIGBQcm9taXNlT2JqZWN0YCBpcyBhbiBvYmplY3QgdGhh
dCBhY3RzIGxpa2UgYm90aCBhbiBgRW1iZXIuT2JqZWN0YAotICBhbmQgYSBwcm9taXNlLiBXaGVu
IHRoZSBwcm9taXNlIGlzIHJlc29sdmVkIHRoZSB0aGUgcmVzdWx0aW5nIHZhbHVlCi0gIHdpbGwg
YmUgc2V0IHRvIHRoZSBgUHJvbWlzZU9iamVjdGAncyBgY29udGVudGAgcHJvcGVydHkuIFRoaXMg
bWFrZXMKLSAgaXQgZWFzeSB0byBjcmVhdGUgZGF0YSBiaW5kaW5ncyB3aXRoIHRoZSBgUHJvbWlz
ZU9iamVjdGAgdGhhdCB3aWxsCi0gIGJlIHVwZGF0ZWQgd2hlbiB0aGUgcHJvbWlzZSByZXNvbHZl
cy4KLQotICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgdGhlIFtFbWJlci5Qcm9taXNlUHJveHlN
aXhpbgotICBkb2N1bWVudGF0aW9uXSgvYXBpL2NsYXNzZXMvRW1iZXIuUHJvbWlzZVByb3h5TWl4
aW4uaHRtbCkuCi0KLSAgRXhhbXBsZQotCi0gIGBgYGphdmFzY3JpcHQKLSAgdmFyIHByb21pc2VP
YmplY3QgPSBEUy5Qcm9taXNlT2JqZWN0LmNyZWF0ZSh7Ci0gICAgcHJvbWlzZTogJC5nZXRKU09O
KCcvc29tZS9yZW1vdGUvZGF0YS5qc29uJykKLSAgfSk7Ci0KLSAgcHJvbWlzZU9iamVjdC5nZXQo
J25hbWUnKTsgLy8gbnVsbAotCi0gIHByb21pc2VPYmplY3QudGhlbihmdW5jdGlvbigpIHsKLSAg
ICBwcm9taXNlT2JqZWN0LmdldCgnbmFtZScpOyAvLyAnVG9tc3RlcicKLSAgfSk7Ci0gIGBgYAot
Ci0gIEBjbGFzcyBQcm9taXNlT2JqZWN0Ci0gIEBuYW1lc3BhY2UgRFMKLSAgQGV4dGVuZHMgRW1i
ZXIuT2JqZWN0UHJveHkKLSAgQHVzZXMgRW1iZXIuUHJvbWlzZVByb3h5TWl4aW4KLSovCi1EUy5Q
cm9taXNlT2JqZWN0ID0gRW1iZXIuT2JqZWN0UHJveHkuZXh0ZW5kKEVtYmVyLlByb21pc2VQcm94
eU1peGluKTsKLQotZnVuY3Rpb24gcHJvbWlzZU9iamVjdChwcm9taXNlKSB7Ci0gIHJldHVybiBE
Uy5Qcm9taXNlT2JqZWN0LmNyZWF0ZSh7IHByb21pc2U6IHByb21pc2UgfSk7Ci19Ci0KLWZ1bmN0
aW9uIHByb21pc2VBcnJheShwcm9taXNlKSB7Ci0gIHJldHVybiBEUy5Qcm9taXNlQXJyYXkuY3Jl
YXRlKHsgcHJvbWlzZTogcHJvbWlzZSB9KTsKLX0KLQotZnVuY3Rpb24gaXNUaGVuYWJsZShvYmpl
Y3QpIHsKLSAgcmV0dXJuIG9iamVjdCAmJiB0eXBlb2Ygb2JqZWN0LnRoZW4gPT09ICdmdW5jdGlv
bic7Ci19Ci0KLWZ1bmN0aW9uIHNlcmlhbGl6ZXJGb3IoY29udGFpbmVyLCB0eXBlLCBkZWZhdWx0
U2VyaWFsaXplcikgewotICByZXR1cm4gY29udGFpbmVyLmxvb2t1cCgnc2VyaWFsaXplcjonK3R5
cGUpIHx8Ci0gICAgICAgICAgICAgICAgIGNvbnRhaW5lci5sb29rdXAoJ3NlcmlhbGl6ZXI6YXBw
bGljYXRpb24nKSB8fAotICAgICAgICAgICAgICAgICBjb250YWluZXIubG9va3VwKCdzZXJpYWxp
emVyOicgKyBkZWZhdWx0U2VyaWFsaXplcikgfHwKLSAgICAgICAgICAgICAgICAgY29udGFpbmVy
Lmxvb2t1cCgnc2VyaWFsaXplcjotZGVmYXVsdCcpOwotfQotCi1mdW5jdGlvbiBkZWZhdWx0U2Vy
aWFsaXplcihjb250YWluZXIpIHsKLSAgcmV0dXJuIGNvbnRhaW5lci5sb29rdXAoJ3NlcmlhbGl6
ZXI6YXBwbGljYXRpb24nKSB8fAotICAgICAgICAgY29udGFpbmVyLmxvb2t1cCgnc2VyaWFsaXpl
cjotZGVmYXVsdCcpOwotfQotCi1mdW5jdGlvbiBzZXJpYWxpemVyRm9yQWRhcHRlcihhZGFwdGVy
LCB0eXBlKSB7Ci0gIHZhciBzZXJpYWxpemVyID0gYWRhcHRlci5zZXJpYWxpemVyLAotICAgICAg
ZGVmYXVsdFNlcmlhbGl6ZXIgPSBhZGFwdGVyLmRlZmF1bHRTZXJpYWxpemVyLAotICAgICAgY29u
dGFpbmVyID0gYWRhcHRlci5jb250YWluZXI7Ci0KLSAgaWYgKGNvbnRhaW5lciAmJiBzZXJpYWxp
emVyID09PSB1bmRlZmluZWQpIHsKLSAgICBzZXJpYWxpemVyID0gc2VyaWFsaXplckZvcihjb250
YWluZXIsIHR5cGUudHlwZUtleSwgZGVmYXVsdFNlcmlhbGl6ZXIpOwotICB9Ci0KLSAgaWYgKHNl
cmlhbGl6ZXIgPT09IG51bGwgfHwgc2VyaWFsaXplciA9PT0gdW5kZWZpbmVkKSB7Ci0gICAgc2Vy
aWFsaXplciA9IHsKLSAgICAgIGV4dHJhY3Q6IGZ1bmN0aW9uKHN0b3JlLCB0eXBlLCBwYXlsb2Fk
KSB7IHJldHVybiBwYXlsb2FkOyB9Ci0gICAgfTsKLSAgfQotCi0gIHJldHVybiBzZXJpYWxpemVy
OwotfQotCi1mdW5jdGlvbiBfZmluZChhZGFwdGVyLCBzdG9yZSwgdHlwZSwgaWQpIHsKLSAgdmFy
IHByb21pc2UgPSBhZGFwdGVyLmZpbmQoc3RvcmUsIHR5cGUsIGlkKSwKLSAgICAgIHNlcmlhbGl6
ZXIgPSBzZXJpYWxpemVyRm9yQWRhcHRlcihhZGFwdGVyLCB0eXBlKTsKLQotICByZXR1cm4gcmVz
b2x2ZShwcm9taXNlLCAiRFM6IEhhbmRsZSBBZGFwdGVyI2ZpbmQgb2YgIiArIHR5cGUgKyAiIHdp
dGggaWQ6ICIgKyBpZCkudGhlbihmdW5jdGlvbihwYXlsb2FkKSB7Ci0gICAgRW1iZXIuYXNzZXJ0
KCJZb3UgbWFkZSBhIHJlcXVlc3QgZm9yIGEgIiArIHR5cGUudHlwZUtleSArICIgd2l0aCBpZCAi
ICsgaWQgKyAiLCBidXQgdGhlIGFkYXB0ZXIncyByZXNwb25zZSBkaWQgbm90IGhhdmUgYW55IGRh
dGEiLCBwYXlsb2FkKTsKLSAgICBwYXlsb2FkID0gc2VyaWFsaXplci5leHRyYWN0KHN0b3JlLCB0
eXBlLCBwYXlsb2FkLCBpZCwgJ2ZpbmQnKTsKLQotICAgIHJldHVybiBzdG9yZS5wdXNoKHR5cGUs
IHBheWxvYWQpOwotICB9LCBmdW5jdGlvbihlcnJvcikgewotICAgIHZhciByZWNvcmQgPSBzdG9y
ZS5nZXRCeUlkKHR5cGUsIGlkKTsKLSAgICByZWNvcmQubm90Rm91bmQoKTsKLSAgICB0aHJvdyBl
cnJvcjsKLSAgfSwgIkRTOiBFeHRyYWN0IHBheWxvYWQgb2YgJyIgKyB0eXBlICsgIiciKTsKLX0K
LQotZnVuY3Rpb24gX2ZpbmRNYW55KGFkYXB0ZXIsIHN0b3JlLCB0eXBlLCBpZHMsIG93bmVyKSB7
Ci0gIHZhciBwcm9taXNlID0gYWRhcHRlci5maW5kTWFueShzdG9yZSwgdHlwZSwgaWRzLCBvd25l
ciksCi0gICAgICBzZXJpYWxpemVyID0gc2VyaWFsaXplckZvckFkYXB0ZXIoYWRhcHRlciwgdHlw
ZSk7Ci0KLSAgcmV0dXJuIHJlc29sdmUocHJvbWlzZSwgIkRTOiBIYW5kbGUgQWRhcHRlciNmaW5k
TWFueSBvZiAiICsgdHlwZSkudGhlbihmdW5jdGlvbihwYXlsb2FkKSB7Ci0gICAgcGF5bG9hZCA9
IHNlcmlhbGl6ZXIuZXh0cmFjdChzdG9yZSwgdHlwZSwgcGF5bG9hZCwgbnVsbCwgJ2ZpbmRNYW55
Jyk7Ci0KLSAgICBFbWJlci5hc3NlcnQoIlRoZSByZXNwb25zZSBmcm9tIGEgZmluZE1hbnkgbXVz
dCBiZSBhbiBBcnJheSwgbm90ICIgKyBFbWJlci5pbnNwZWN0KHBheWxvYWQpLCBFbWJlci50eXBl
T2YocGF5bG9hZCkgPT09ICdhcnJheScpOwotCi0gICAgc3RvcmUucHVzaE1hbnkodHlwZSwgcGF5
bG9hZCk7Ci0gIH0sIG51bGwsICJEUzogRXh0cmFjdCBwYXlsb2FkIG9mICIgKyB0eXBlKTsKLX0K
LQotZnVuY3Rpb24gX2ZpbmRIYXNNYW55KGFkYXB0ZXIsIHN0b3JlLCByZWNvcmQsIGxpbmssIHJl
bGF0aW9uc2hpcCkgewotICB2YXIgcHJvbWlzZSA9IGFkYXB0ZXIuZmluZEhhc01hbnkoc3RvcmUs
IHJlY29yZCwgbGluaywgcmVsYXRpb25zaGlwKSwKLSAgICAgIHNlcmlhbGl6ZXIgPSBzZXJpYWxp
emVyRm9yQWRhcHRlcihhZGFwdGVyLCByZWxhdGlvbnNoaXAudHlwZSk7Ci0KLSAgcmV0dXJuIHJl
c29sdmUocHJvbWlzZSwgIkRTOiBIYW5kbGUgQWRhcHRlciNmaW5kSGFzTWFueSBvZiAiICsgcmVj
b3JkICsgIiA6ICIgKyByZWxhdGlvbnNoaXAudHlwZSkudGhlbihmdW5jdGlvbihwYXlsb2FkKSB7
Ci0gICAgcGF5bG9hZCA9IHNlcmlhbGl6ZXIuZXh0cmFjdChzdG9yZSwgcmVsYXRpb25zaGlwLnR5
cGUsIHBheWxvYWQsIG51bGwsICdmaW5kSGFzTWFueScpOwotCi0gICAgRW1iZXIuYXNzZXJ0KCJU
aGUgcmVzcG9uc2UgZnJvbSBhIGZpbmRIYXNNYW55IG11c3QgYmUgYW4gQXJyYXksIG5vdCAiICsg
RW1iZXIuaW5zcGVjdChwYXlsb2FkKSwgRW1iZXIudHlwZU9mKHBheWxvYWQpID09PSAnYXJyYXkn
KTsKLQotICAgIHZhciByZWNvcmRzID0gc3RvcmUucHVzaE1hbnkocmVsYXRpb25zaGlwLnR5cGUs
IHBheWxvYWQpOwotICAgIHJlY29yZC51cGRhdGVIYXNNYW55KHJlbGF0aW9uc2hpcC5rZXksIHJl
Y29yZHMpOwotICB9LCBudWxsLCAiRFM6IEV4dHJhY3QgcGF5bG9hZCBvZiAiICsgcmVjb3JkICsg
IiA6IGhhc01hbnkgIiArIHJlbGF0aW9uc2hpcC50eXBlKTsKLX0KLQotZnVuY3Rpb24gX2ZpbmRC
ZWxvbmdzVG8oYWRhcHRlciwgc3RvcmUsIHJlY29yZCwgbGluaywgcmVsYXRpb25zaGlwKSB7Ci0g
IHZhciBwcm9taXNlID0gYWRhcHRlci5maW5kQmVsb25nc1RvKHN0b3JlLCByZWNvcmQsIGxpbmss
IHJlbGF0aW9uc2hpcCksCi0gICAgICBzZXJpYWxpemVyID0gc2VyaWFsaXplckZvckFkYXB0ZXIo
YWRhcHRlciwgcmVsYXRpb25zaGlwLnR5cGUpOwotCi0gIHJldHVybiByZXNvbHZlKHByb21pc2Us
ICJEUzogSGFuZGxlIEFkYXB0ZXIjZmluZEJlbG9uZ3NUbyBvZiAiICsgcmVjb3JkICsgIiA6ICIg
KyByZWxhdGlvbnNoaXAudHlwZSkudGhlbihmdW5jdGlvbihwYXlsb2FkKSB7Ci0gICAgcGF5bG9h
ZCA9IHNlcmlhbGl6ZXIuZXh0cmFjdChzdG9yZSwgcmVsYXRpb25zaGlwLnR5cGUsIHBheWxvYWQs
IG51bGwsICdmaW5kQmVsb25nc1RvJyk7Ci0KLSAgICB2YXIgcmVjb3JkID0gc3RvcmUucHVzaChy
ZWxhdGlvbnNoaXAudHlwZSwgcGF5bG9hZCk7Ci0gICAgcmVjb3JkLnVwZGF0ZUJlbG9uZ3NUbyhy
ZWxhdGlvbnNoaXAua2V5LCByZWNvcmQpOwotICAgIHJldHVybiByZWNvcmQ7Ci0gIH0sIG51bGws
ICJEUzogRXh0cmFjdCBwYXlsb2FkIG9mICIgKyByZWNvcmQgKyAiIDogIiArIHJlbGF0aW9uc2hp
cC50eXBlKTsKLX0KLQotZnVuY3Rpb24gX2ZpbmRBbGwoYWRhcHRlciwgc3RvcmUsIHR5cGUsIHNp
bmNlVG9rZW4pIHsKLSAgdmFyIHByb21pc2UgPSBhZGFwdGVyLmZpbmRBbGwoc3RvcmUsIHR5cGUs
IHNpbmNlVG9rZW4pLAotICAgICAgc2VyaWFsaXplciA9IHNlcmlhbGl6ZXJGb3JBZGFwdGVyKGFk
YXB0ZXIsIHR5cGUpOwotCi0gIHJldHVybiByZXNvbHZlKHByb21pc2UsICJEUzogSGFuZGxlIEFk
YXB0ZXIjZmluZEFsbCBvZiAiICsgdHlwZSkudGhlbihmdW5jdGlvbihwYXlsb2FkKSB7Ci0gICAg
cGF5bG9hZCA9IHNlcmlhbGl6ZXIuZXh0cmFjdChzdG9yZSwgdHlwZSwgcGF5bG9hZCwgbnVsbCwg
J2ZpbmRBbGwnKTsKLQotICAgIEVtYmVyLmFzc2VydCgiVGhlIHJlc3BvbnNlIGZyb20gYSBmaW5k
QWxsIG11c3QgYmUgYW4gQXJyYXksIG5vdCAiICsgRW1iZXIuaW5zcGVjdChwYXlsb2FkKSwgRW1i
ZXIudHlwZU9mKHBheWxvYWQpID09PSAnYXJyYXknKTsKLQotICAgIHN0b3JlLnB1c2hNYW55KHR5
cGUsIHBheWxvYWQpOwotICAgIHN0b3JlLmRpZFVwZGF0ZUFsbCh0eXBlKTsKLSAgICByZXR1cm4g
c3RvcmUuYWxsKHR5cGUpOwotICB9LCBudWxsLCAiRFM6IEV4dHJhY3QgcGF5bG9hZCBvZiBmaW5k
QWxsICIgKyB0eXBlKTsKLX0KLQotZnVuY3Rpb24gX2ZpbmRRdWVyeShhZGFwdGVyLCBzdG9yZSwg
dHlwZSwgcXVlcnksIHJlY29yZEFycmF5KSB7Ci0gIHZhciBwcm9taXNlID0gYWRhcHRlci5maW5k
UXVlcnkoc3RvcmUsIHR5cGUsIHF1ZXJ5LCByZWNvcmRBcnJheSksCi0gICAgICBzZXJpYWxpemVy
ID0gc2VyaWFsaXplckZvckFkYXB0ZXIoYWRhcHRlciwgdHlwZSk7Ci0KLSAgcmV0dXJuIHJlc29s
dmUocHJvbWlzZSwgIkRTOiBIYW5kbGUgQWRhcHRlciNmaW5kUXVlcnkgb2YgIiArIHR5cGUpLnRo
ZW4oZnVuY3Rpb24ocGF5bG9hZCkgewotICAgIHBheWxvYWQgPSBzZXJpYWxpemVyLmV4dHJhY3Qo
c3RvcmUsIHR5cGUsIHBheWxvYWQsIG51bGwsICdmaW5kUXVlcnknKTsKLQotICAgIEVtYmVyLmFz
c2VydCgiVGhlIHJlc3BvbnNlIGZyb20gYSBmaW5kUXVlcnkgbXVzdCBiZSBhbiBBcnJheSwgbm90
ICIgKyBFbWJlci5pbnNwZWN0KHBheWxvYWQpLCBFbWJlci50eXBlT2YocGF5bG9hZCkgPT09ICdh
cnJheScpOwotCi0gICAgcmVjb3JkQXJyYXkubG9hZChwYXlsb2FkKTsKLSAgICByZXR1cm4gcmVj
b3JkQXJyYXk7Ci0gIH0sIG51bGwsICJEUzogRXh0cmFjdCBwYXlsb2FkIG9mIGZpbmRRdWVyeSAi
ICsgdHlwZSk7Ci19Ci0KLWZ1bmN0aW9uIF9jb21taXQoYWRhcHRlciwgc3RvcmUsIG9wZXJhdGlv
biwgcmVjb3JkKSB7Ci0gIHZhciB0eXBlID0gcmVjb3JkLmNvbnN0cnVjdG9yLAotICAgICAgcHJv
bWlzZSA9IGFkYXB0ZXJbb3BlcmF0aW9uXShzdG9yZSwgdHlwZSwgcmVjb3JkKSwKLSAgICAgIHNl
cmlhbGl6ZXIgPSBzZXJpYWxpemVyRm9yQWRhcHRlcihhZGFwdGVyLCB0eXBlKTsKLQotICBFbWJl
ci5hc3NlcnQoIllvdXIgYWRhcHRlcidzICciICsgb3BlcmF0aW9uICsgIicgbWV0aG9kIG11c3Qg
cmV0dXJuIGEgcHJvbWlzZSwgYnV0IGl0IHJldHVybmVkICIgKyBwcm9taXNlLCBpc1RoZW5hYmxl
KHByb21pc2UpKTsKLQotICByZXR1cm4gcHJvbWlzZS50aGVuKGZ1bmN0aW9uKHBheWxvYWQpIHsK
LSAgICBpZiAocGF5bG9hZCkgeyBwYXlsb2FkID0gc2VyaWFsaXplci5leHRyYWN0KHN0b3JlLCB0
eXBlLCBwYXlsb2FkLCBnZXQocmVjb3JkLCAnaWQnKSwgb3BlcmF0aW9uKTsgfQotICAgIHN0b3Jl
LmRpZFNhdmVSZWNvcmQocmVjb3JkLCBwYXlsb2FkKTsKLSAgICByZXR1cm4gcmVjb3JkOwotICB9
LCBmdW5jdGlvbihyZWFzb24pIHsKLSAgICBpZiAocmVhc29uIGluc3RhbmNlb2YgRFMuSW52YWxp
ZEVycm9yKSB7Ci0gICAgICBzdG9yZS5yZWNvcmRXYXNJbnZhbGlkKHJlY29yZCwgcmVhc29uLmVy
cm9ycyk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIHN0b3JlLnJlY29yZFdhc0Vycm9yKHJlY29yZCwg
cmVhc29uKTsKLSAgICB9Ci0KLSAgICB0aHJvdyByZWFzb247Ci0gIH0sICJEUzogRXh0cmFjdCBh
bmQgbm90aWZ5IGFib3V0ICIgKyBvcGVyYXRpb24gKyAiIGNvbXBsZXRpb24gb2YgIiArIHJlY29y
ZCk7Ci19Ci0KLX0pKCk7Ci0KLQotCi0oZnVuY3Rpb24oKSB7Ci0vKioKLSAgQG1vZHVsZSBlbWJl
ci1kYXRhCi0qLwotCi12YXIgZ2V0ID0gRW1iZXIuZ2V0LCBzZXQgPSBFbWJlci5zZXQ7Ci0vKgot
ICBUaGlzIGZpbGUgZW5jYXBzdWxhdGVzIHRoZSB2YXJpb3VzIHN0YXRlcyB0aGF0IGEgcmVjb3Jk
IGNhbiB0cmFuc2l0aW9uCi0gIHRocm91Z2ggZHVyaW5nIGl0cyBsaWZlY3ljbGUuCi0qLwotLyoq
Ci0gICMjIyBTdGF0ZQotCi0gIEVhY2ggcmVjb3JkIGhhcyBhIGBjdXJyZW50U3RhdGVgIHByb3Bl
cnR5IHRoYXQgZXhwbGljaXRseSB0cmFja3Mgd2hhdAotICBzdGF0ZSBhIHJlY29yZCBpcyBpbiBh
dCBhbnkgZ2l2ZW4gdGltZS4gRm9yIGluc3RhbmNlLCBpZiBhIHJlY29yZCBpcwotICBuZXdseSBj
cmVhdGVkIGFuZCBoYXMgbm90IHlldCBiZWVuIHNlbnQgdG8gdGhlIGFkYXB0ZXIgdG8gYmUgc2F2
ZWQsCi0gIGl0IHdvdWxkIGJlIGluIHRoZSBgcm9vdC5sb2FkZWQuY3JlYXRlZC51bmNvbW1pdHRl
ZGAgc3RhdGUuICBJZiBhCi0gIHJlY29yZCBoYXMgaGFkIGxvY2FsIG1vZGlmaWNhdGlvbnMgbWFk
ZSB0byBpdCB0aGF0IGFyZSBpbiB0aGUKLSAgcHJvY2VzcyBvZiBiZWluZyBzYXZlZCwgdGhlIHJl
Y29yZCB3b3VsZCBiZSBpbiB0aGUKLSAgYHJvb3QubG9hZGVkLnVwZGF0ZWQuaW5GbGlnaHRgIHN0
YXRlLiAoVGhlc2Ugc3RhdGUgcGF0aHMgd2lsbCBiZQotICBleHBsYWluZWQgaW4gbW9yZSBkZXRh
aWwgYmVsb3cuKQotCi0gIEV2ZW50cyBhcmUgc2VudCBieSB0aGUgcmVjb3JkIG9yIGl0cyBzdG9y
ZSB0byB0aGUgcmVjb3JkJ3MKLSAgYGN1cnJlbnRTdGF0ZWAgcHJvcGVydHkuIEhvdyB0aGUgc3Rh
dGUgcmVhY3RzIHRvIHRoZXNlIGV2ZW50cyBpcwotICBkZXBlbmRlbnQgb24gd2hpY2ggc3RhdGUg
aXQgaXMgaW4uIEluIHNvbWUgc3RhdGVzLCBjZXJ0YWluIGV2ZW50cwotICB3aWxsIGJlIGludmFs
aWQgYW5kIHdpbGwgY2F1c2UgYW4gZXhjZXB0aW9uIHRvIGJlIHJhaXNlZC4KLQotICBTdGF0ZXMg
YXJlIGhpZXJhcmNoaWNhbCBhbmQgZXZlcnkgc3RhdGUgaXMgYSBzdWJzdGF0ZSBvZiB0aGUKLSAg
YFJvb3RTdGF0ZWAuIEZvciBleGFtcGxlLCBhIHJlY29yZCBjYW4gYmUgaW4gdGhlCi0gIGByb290
LmRlbGV0ZWQudW5jb21taXR0ZWRgIHN0YXRlLCB0aGVuIHRyYW5zaXRpb24gaW50byB0aGUKLSAg
YHJvb3QuZGVsZXRlZC5pbkZsaWdodGAgc3RhdGUuIElmIGEgY2hpbGQgc3RhdGUgZG9lcyBub3Qg
aW1wbGVtZW50Ci0gIGFuIGV2ZW50IGhhbmRsZXIsIHRoZSBzdGF0ZSBtYW5hZ2VyIHdpbGwgYXR0
ZW1wdCB0byBpbnZva2UgdGhlIGV2ZW50Ci0gIG9uIGFsbCBwYXJlbnQgc3RhdGVzIHVudGlsIHRo
ZSByb290IHN0YXRlIGlzIHJlYWNoZWQuIFRoZSBzdGF0ZQotICBoaWVyYXJjaHkgb2YgYSByZWNv
cmQgaXMgZGVzY3JpYmVkIGluIHRlcm1zIG9mIGEgcGF0aCBzdHJpbmcuIFlvdQotICBjYW4gZGV0
ZXJtaW5lIGEgcmVjb3JkJ3MgY3VycmVudCBzdGF0ZSBieSBnZXR0aW5nIHRoZSBzdGF0ZSdzCi0g
IGBzdGF0ZU5hbWVgIHByb3BlcnR5OgotCi0gIGBgYGphdmFzY3JpcHQKLSAgcmVjb3JkLmdldCgn
Y3VycmVudFN0YXRlLnN0YXRlTmFtZScpOwotICAvLz0+ICJyb290LmNyZWF0ZWQudW5jb21taXR0
ZWQiCi0gICBgYGAKLQotICBUaGUgaGllcmFyY2h5IG9mIHZhbGlkIHN0YXRlcyB0aGF0IHNoaXAg
d2l0aCBlbWJlciBkYXRhIGxvb2tzIGxpa2UKLSAgdGhpczoKLQotICBgYGB0ZXh0Ci0gICogcm9v
dAotICAgICogZGVsZXRlZAotICAgICAgKiBzYXZlZAotICAgICAgKiB1bmNvbW1pdHRlZAotICAg
ICAgKiBpbkZsaWdodAotICAgICogZW1wdHkKLSAgICAqIGxvYWRlZAotICAgICAgKiBjcmVhdGVk
Ci0gICAgICAgICogdW5jb21taXR0ZWQKLSAgICAgICAgKiBpbkZsaWdodAotICAgICAgKiBzYXZl
ZAotICAgICAgKiB1cGRhdGVkCi0gICAgICAgICogdW5jb21taXR0ZWQKLSAgICAgICAgKiBpbkZs
aWdodAotICAgICogbG9hZGluZwotICBgYGAKLQotICBUaGUgYERTLk1vZGVsYCBzdGF0ZXMgYXJl
IHRoZW1zZWx2ZXMgc3RhdGVsZXNzLiBXaGF0IHdlIG1lYW4gaXMKLSAgdGhhdCwgdGhlIGhpZXJh
cmNoaWNhbCBzdGF0ZXMgdGhhdCBlYWNoIG9mICp0aG9zZSogcG9pbnRzIHRvIGlzIGEKLSAgc2hh
cmVkIGRhdGEgc3RydWN0dXJlLiBGb3IgcGVyZm9ybWFuY2UgcmVhc29ucywgaW5zdGVhZCBvZiBl
YWNoCi0gIHJlY29yZCBnZXR0aW5nIGl0cyBvd24gY29weSBvZiB0aGUgaGllcmFyY2h5IG9mIHN0
YXRlcywgZWFjaCByZWNvcmQKLSAgcG9pbnRzIHRvIHRoaXMgZ2xvYmFsLCBpbW11dGFibGUgc2hh
cmVkIGluc3RhbmNlLiBIb3cgZG9lcyBhIHN0YXRlCi0gIGtub3cgd2hpY2ggcmVjb3JkIGl0IHNo
b3VsZCBiZSBhY3Rpbmcgb24/IFdlIHBhc3MgdGhlIHJlY29yZAotICBpbnN0YW5jZSBpbnRvIHRo
ZSBzdGF0ZSdzIGV2ZW50IGhhbmRsZXJzIGFzIHRoZSBmaXJzdCBhcmd1bWVudC4KLQotICBUaGUg
cmVjb3JkIHBhc3NlZCBhcyB0aGUgZmlyc3QgcGFyYW1ldGVyIGlzIHdoZXJlIHlvdSBzaG91bGQg
c3Rhc2gKLSAgc3RhdGUgYWJvdXQgdGhlIHJlY29yZCBpZiBuZWVkZWQ7IHlvdSBzaG91bGQgbmV2
ZXIgc3RvcmUgZGF0YSBvbiB0aGUgc3RhdGUKLSAgb2JqZWN0IGl0c2VsZi4KLQotICAjIyMgRXZl
bnRzIGFuZCBGbGFncwotCi0gIEEgc3RhdGUgbWF5IGltcGxlbWVudCB6ZXJvIG9yIG1vcmUgZXZl
bnRzIGFuZCBmbGFncy4KLQotICAjIyMjIEV2ZW50cwotCi0gIEV2ZW50cyBhcmUgbmFtZWQgZnVu
Y3Rpb25zIHRoYXQgYXJlIGludm9rZWQgd2hlbiBzZW50IHRvIGEgcmVjb3JkLiBUaGUKLSAgcmVj
b3JkIHdpbGwgZmlyc3QgbG9vayBmb3IgYSBtZXRob2Qgd2l0aCB0aGUgZ2l2ZW4gbmFtZSBvbiB0
aGUKLSAgY3VycmVudCBzdGF0ZS4gSWYgbm8gbWV0aG9kIGlzIGZvdW5kLCBpdCB3aWxsIHNlYXJj
aCB0aGUgY3VycmVudAotICBzdGF0ZSdzIHBhcmVudCwgYW5kIHRoZW4gaXRzIGdyYW5kcGFyZW50
LCBhbmQgc28gb24gdW50aWwgcmVhY2hpbmcKLSAgdGhlIHRvcCBvZiB0aGUgaGllcmFyY2h5LiBJ
ZiB0aGUgcm9vdCBpcyByZWFjaGVkIHdpdGhvdXQgYW4gZXZlbnQKLSAgaGFuZGxlciBiZWluZyBm
b3VuZCwgYW4gZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkLiBUaGlzIGNhbiBiZSB2ZXJ5Ci0gIGhl
bHBmdWwgd2hlbiBkZWJ1Z2dpbmcgbmV3IGZlYXR1cmVzLgotCi0gIEhlcmUncyBhbiBleGFtcGxl
IGltcGxlbWVudGF0aW9uIG9mIGEgc3RhdGUgd2l0aCBhIGBteUV2ZW50YCBldmVudCBoYW5kbGVy
OgotCi0gIGBgYGphdmFzY3JpcHQKLSAgYVN0YXRlOiBEUy5TdGF0ZS5jcmVhdGUoewotICAgIG15
RXZlbnQ6IGZ1bmN0aW9uKG1hbmFnZXIsIHBhcmFtKSB7Ci0gICAgICBjb25zb2xlLmxvZygiUmVj
ZWl2ZWQgbXlFdmVudCB3aXRoIiwgcGFyYW0pOwotICAgIH0KLSAgfSkKLSAgYGBgCi0KLSAgVG8g
dHJpZ2dlciB0aGlzIGV2ZW50OgotCi0gIGBgYGphdmFzY3JpcHQKLSAgcmVjb3JkLnNlbmQoJ215
RXZlbnQnLCAnZm9vJyk7Ci0gIC8vPT4gIlJlY2VpdmVkIG15RXZlbnQgd2l0aCBmb28iCi0gIGBg
YAotCi0gIE5vdGUgdGhhdCBhbiBvcHRpb25hbCBwYXJhbWV0ZXIgY2FuIGJlIHNlbnQgdG8gYSBy
ZWNvcmQncyBgc2VuZCgpYCBtZXRob2QsCi0gIHdoaWNoIHdpbGwgYmUgcGFzc2VkIGFzIHRoZSBz
ZWNvbmQgcGFyYW1ldGVyIHRvIHRoZSBldmVudCBoYW5kbGVyLgotCi0gIEV2ZW50cyBzaG91bGQg
dHJhbnNpdGlvbiB0byBhIGRpZmZlcmVudCBzdGF0ZSBpZiBhcHByb3ByaWF0ZS4gVGhpcyBjYW4g
YmUKLSAgZG9uZSBieSBjYWxsaW5nIHRoZSByZWNvcmQncyBgdHJhbnNpdGlvblRvKClgIG1ldGhv
ZCB3aXRoIGEgcGF0aCB0byB0aGUKLSAgZGVzaXJlZCBzdGF0ZS4gVGhlIHN0YXRlIG1hbmFnZXIg
d2lsbCBhdHRlbXB0IHRvIHJlc29sdmUgdGhlIHN0YXRlIHBhdGgKLSAgcmVsYXRpdmUgdG8gdGhl
IGN1cnJlbnQgc3RhdGUuIElmIG5vIHN0YXRlIGlzIGZvdW5kIGF0IHRoYXQgcGF0aCwgaXQgd2ls
bAotICBhdHRlbXB0IHRvIHJlc29sdmUgaXQgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgc3RhdGUn
cyBwYXJlbnQsIGFuZCB0aGVuIGl0cwotICBwYXJlbnQsIGFuZCBzbyBvbiB1bnRpbCB0aGUgcm9v
dCBpcyByZWFjaGVkLiBGb3IgZXhhbXBsZSwgaW1hZ2luZSBhIGhpZXJhcmNoeQotICBsaWtlIHRo
aXM6Ci0KLSAgICAgICogY3JlYXRlZAotICAgICAgICAqIHVuY29tbWl0dGVkIDwtLSBjdXJyZW50
U3RhdGUKLSAgICAgICAgKiBpbkZsaWdodAotICAgICAgKiB1cGRhdGVkCi0gICAgICAgICogaW5G
bGlnaHQKLQotICBJZiB3ZSBhcmUgY3VycmVudGx5IGluIHRoZSBgdW5jb21taXR0ZWRgIHN0YXRl
LCBjYWxsaW5nCi0gIGB0cmFuc2l0aW9uVG8oJ2luRmxpZ2h0JylgIHdvdWxkIHRyYW5zaXRpb24g
dG8gdGhlIGBjcmVhdGVkLmluRmxpZ2h0YCBzdGF0ZSwKLSAgd2hpbGUgY2FsbGluZyBgdHJhbnNp
dGlvblRvKCd1cGRhdGVkLmluRmxpZ2h0JylgIHdvdWxkIHRyYW5zaXRpb24gdG8KLSAgdGhlIGB1
cGRhdGVkLmluRmxpZ2h0YCBzdGF0ZS4KLQotICBSZW1lbWJlciB0aGF0ICpvbmx5IGV2ZW50cyog
c2hvdWxkIGV2ZXIgY2F1c2UgYSBzdGF0ZSB0cmFuc2l0aW9uLiBZb3Ugc2hvdWxkCi0gIG5ldmVy
IGNhbGwgYHRyYW5zaXRpb25UbygpYCBmcm9tIG91dHNpZGUgYSBzdGF0ZSdzIGV2ZW50IGhhbmRs
ZXIuIElmIHlvdSBhcmUKLSAgdGVtcHRlZCB0byBkbyBzbywgY3JlYXRlIGEgbmV3IGV2ZW50IGFu
ZCBzZW5kIHRoYXQgdG8gdGhlIHN0YXRlIG1hbmFnZXIuCi0KLSAgIyMjIyBGbGFncwotCi0gIEZs
YWdzIGFyZSBCb29sZWFuIHZhbHVlcyB0aGF0IGNhbiBiZSB1c2VkIHRvIGludHJvc3BlY3QgYSBy
ZWNvcmQncyBjdXJyZW50Ci0gIHN0YXRlIGluIGEgbW9yZSB1c2VyLWZyaWVuZGx5IHdheSB0aGFu
IGV4YW1pbmluZyBpdHMgc3RhdGUgcGF0aC4gRm9yIGV4YW1wbGUsCi0gIGluc3RlYWQgb2YgZG9p
bmcgdGhpczoKLQotICBgYGBqYXZhc2NyaXB0Ci0gIHZhciBzdGF0ZVBhdGggPSByZWNvcmQuZ2V0
KCdzdGF0ZU1hbmFnZXIuY3VycmVudFBhdGgnKTsKLSAgaWYgKHN0YXRlUGF0aCA9PT0gJ2NyZWF0
ZWQuaW5GbGlnaHQnKSB7Ci0gICAgZG9Tb21ldGhpbmcoKTsKLSAgfQotICBgYGAKLQotICBZb3Ug
Y2FuIHNheToKLQotICBgYGBqYXZhc2NyaXB0Ci0gIGlmIChyZWNvcmQuZ2V0KCdpc05ldycpICYm
IHJlY29yZC5nZXQoJ2lzU2F2aW5nJykpIHsKLSAgICBkb1NvbWV0aGluZygpOwotICB9Ci0gIGBg
YAotCi0gIElmIHlvdXIgc3RhdGUgZG9lcyBub3Qgc2V0IGEgdmFsdWUgZm9yIGEgZ2l2ZW4gZmxh
ZywgdGhlIHZhbHVlIHdpbGwKLSAgYmUgaW5oZXJpdGVkIGZyb20gaXRzIHBhcmVudCAob3IgdGhl
IGZpcnN0IHBsYWNlIGluIHRoZSBzdGF0ZSBoaWVyYXJjaHkKLSAgd2hlcmUgaXQgaXMgZGVmaW5l
ZCkuCi0KLSAgVGhlIGN1cnJlbnQgc2V0IG9mIGZsYWdzIGFyZSBkZWZpbmVkIGJlbG93LiBJZiB5
b3Ugd2FudCB0byBhZGQgYSBuZXcgZmxhZywKLSAgaW4gYWRkaXRpb24gdG8gdGhlIGFyZWEgYmVs
b3csIHlvdSB3aWxsIGFsc28gbmVlZCB0byBkZWNsYXJlIGl0IGluIHRoZQotICBgRFMuTW9kZWxg
IGNsYXNzLgotCi0KLSAgICogW2lzRW1wdHldKERTLk1vZGVsLmh0bWwjcHJvcGVydHlfaXNFbXB0
eSkKLSAgICogW2lzTG9hZGluZ10oRFMuTW9kZWwuaHRtbCNwcm9wZXJ0eV9pc0xvYWRpbmcpCi0g
ICAqIFtpc0xvYWRlZF0oRFMuTW9kZWwuaHRtbCNwcm9wZXJ0eV9pc0xvYWRlZCkKLSAgICogW2lz
RGlydHldKERTLk1vZGVsLmh0bWwjcHJvcGVydHlfaXNEaXJ0eSkKLSAgICogW2lzU2F2aW5nXShE
Uy5Nb2RlbC5odG1sI3Byb3BlcnR5X2lzU2F2aW5nKQotICAgKiBbaXNEZWxldGVkXShEUy5Nb2Rl
bC5odG1sI3Byb3BlcnR5X2lzRGVsZXRlZCkKLSAgICogW2lzTmV3XShEUy5Nb2RlbC5odG1sI3By
b3BlcnR5X2lzTmV3KQotICAgKiBbaXNWYWxpZF0oRFMuTW9kZWwuaHRtbCNwcm9wZXJ0eV9pc1Zh
bGlkKQotCi0gIEBuYW1lc3BhY2UgRFMKLSAgQGNsYXNzIFJvb3RTdGF0ZQotKi8KLQotdmFyIGhh
c0RlZmluZWRQcm9wZXJ0aWVzID0gZnVuY3Rpb24ob2JqZWN0KSB7Ci0gIC8vIElnbm9yZSBpbnRl
cm5hbCBwcm9wZXJ0eSBkZWZpbmVkIGJ5IHNpbXVsYXRlZCBgRW1iZXIuY3JlYXRlYC4KLSAgdmFy
IG5hbWVzID0gRW1iZXIua2V5cyhvYmplY3QpOwotICB2YXIgaSwgbCwgbmFtZTsKLSAgZm9yIChp
ID0gMCwgbCA9IG5hbWVzLmxlbmd0aDsgaSA8IGw7IGkrKyApIHsKLSAgICBuYW1lID0gbmFtZXNb
aV07Ci0gICAgaWYgKG9iamVjdC5oYXNPd25Qcm9wZXJ0eShuYW1lKSAmJiBvYmplY3RbbmFtZV0p
IHsgcmV0dXJuIHRydWU7IH0KLSAgfQotCi0gIHJldHVybiBmYWxzZTsKLX07Ci0KLXZhciBkaWRT
ZXRQcm9wZXJ0eSA9IGZ1bmN0aW9uKHJlY29yZCwgY29udGV4dCkgewotICBpZiAoY29udGV4dC52
YWx1ZSA9PT0gY29udGV4dC5vcmlnaW5hbFZhbHVlKSB7Ci0gICAgZGVsZXRlIHJlY29yZC5fYXR0
cmlidXRlc1tjb250ZXh0Lm5hbWVdOwotICAgIHJlY29yZC5zZW5kKCdwcm9wZXJ0eVdhc1Jlc2V0
JywgY29udGV4dC5uYW1lKTsKLSAgfSBlbHNlIGlmIChjb250ZXh0LnZhbHVlICE9PSBjb250ZXh0
Lm9sZFZhbHVlKSB7Ci0gICAgcmVjb3JkLnNlbmQoJ2JlY29tZURpcnR5Jyk7Ci0gIH0KLQotICBy
ZWNvcmQudXBkYXRlUmVjb3JkQXJyYXlzTGF0ZXIoKTsKLX07Ci0KLS8vIEltcGxlbWVudGF0aW9u
IG5vdGVzOgotLy8KLS8vIEVhY2ggc3RhdGUgaGFzIGEgYm9vbGVhbiB2YWx1ZSBmb3IgYWxsIG9m
IHRoZSBmb2xsb3dpbmcgZmxhZ3M6Ci0vLwotLy8gKiBpc0xvYWRlZDogVGhlIHJlY29yZCBoYXMg
YSBwb3B1bGF0ZWQgYGRhdGFgIHByb3BlcnR5LiBXaGVuIGEKLS8vICAgcmVjb3JkIGlzIGxvYWRl
ZCB2aWEgYHN0b3JlLmZpbmRgLCBgaXNMb2FkZWRgIGlzIGZhbHNlCi0vLyAgIHVudGlsIHRoZSBh
ZGFwdGVyIHNldHMgaXQuIFdoZW4gYSByZWNvcmQgaXMgY3JlYXRlZCBsb2NhbGx5LAotLy8gICBp
dHMgYGlzTG9hZGVkYCBwcm9wZXJ0eSBpcyBhbHdheXMgdHJ1ZS4KLS8vICogaXNEaXJ0eTogVGhl
IHJlY29yZCBoYXMgbG9jYWwgY2hhbmdlcyB0aGF0IGhhdmUgbm90IHlldCBiZWVuCi0vLyAgIHNh
dmVkIGJ5IHRoZSBhZGFwdGVyLiBUaGlzIGluY2x1ZGVzIHJlY29yZHMgdGhhdCBoYXZlIGJlZW4K
LS8vICAgY3JlYXRlZCAoYnV0IG5vdCB5ZXQgc2F2ZWQpIG9yIGRlbGV0ZWQuCi0vLyAqIGlzU2F2
aW5nOiBUaGUgcmVjb3JkIGhhcyBiZWVuIGNvbW1pdHRlZCwgYnV0Ci0vLyAgIHRoZSBhZGFwdGVy
IGhhcyBub3QgeWV0IGFja25vd2xlZGdlZCB0aGF0IHRoZSBjaGFuZ2VzIGhhdmUKLS8vICAgYmVl
biBwZXJzaXN0ZWQgdG8gdGhlIGJhY2tlbmQuCi0vLyAqIGlzRGVsZXRlZDogVGhlIHJlY29yZCB3
YXMgbWFya2VkIGZvciBkZWxldGlvbi4gV2hlbiBgaXNEZWxldGVkYAotLy8gICBpcyB0cnVlIGFu
ZCBgaXNEaXJ0eWAgaXMgdHJ1ZSwgdGhlIHJlY29yZCBpcyBkZWxldGVkIGxvY2FsbHkKLS8vICAg
YnV0IHRoZSBkZWxldGlvbiB3YXMgbm90IHlldCBwZXJzaXN0ZWQuIFdoZW4gYGlzU2F2aW5nYCBp
cwotLy8gICB0cnVlLCB0aGUgY2hhbmdlIGlzIGluLWZsaWdodC4gV2hlbiBib3RoIGBpc0RpcnR5
YCBhbmQKLS8vICAgYGlzU2F2aW5nYCBhcmUgZmFsc2UsIHRoZSBjaGFuZ2UgaGFzIHBlcnNpc3Rl
ZC4KLS8vICogaXNFcnJvcjogVGhlIGFkYXB0ZXIgcmVwb3J0ZWQgdGhhdCBpdCB3YXMgdW5hYmxl
IHRvIHNhdmUKLS8vICAgbG9jYWwgY2hhbmdlcyB0byB0aGUgYmFja2VuZC4gVGhpcyBtYXkgYWxz
byByZXN1bHQgaW4gdGhlCi0vLyAgIHJlY29yZCBoYXZpbmcgaXRzIGBpc1ZhbGlkYCBwcm9wZXJ0
eSBiZWNvbWUgZmFsc2UgaWYgdGhlCi0vLyAgIGFkYXB0ZXIgcmVwb3J0ZWQgdGhhdCBzZXJ2ZXIt
c2lkZSB2YWxpZGF0aW9ucyBmYWlsZWQuCi0vLyAqIGlzTmV3OiBUaGUgcmVjb3JkIHdhcyBjcmVh
dGVkIG9uIHRoZSBjbGllbnQgYW5kIHRoZSBhZGFwdGVyCi0vLyAgIGRpZCBub3QgeWV0IHJlcG9y
dCB0aGF0IGl0IHdhcyBzdWNjZXNzZnVsbHkgc2F2ZWQuCi0vLyAqIGlzVmFsaWQ6IE5vIGNsaWVu
dC1zaWRlIHZhbGlkYXRpb25zIGhhdmUgZmFpbGVkIGFuZCB0aGUKLS8vICAgYWRhcHRlciBkaWQg
bm90IHJlcG9ydCBhbnkgc2VydmVyLXNpZGUgdmFsaWRhdGlvbiBmYWlsdXJlcy4KLQotLy8gVGhl
IGRpcnR5IHN0YXRlIGlzIGEgYWJzdHJhY3Qgc3RhdGUgd2hvc2UgZnVuY3Rpb25hbGl0eSBpcwot
Ly8gc2hhcmVkIGJldHdlZW4gdGhlIGBjcmVhdGVkYCBhbmQgYHVwZGF0ZWRgIHN0YXRlcy4KLS8v
Ci0vLyBUaGUgZGVsZXRlZCBzdGF0ZSBzaGFyZXMgdGhlIGBpc0RpcnR5YCBmbGFnIHdpdGggdGhl
Ci0vLyBzdWJjbGFzc2VzIG9mIGBEaXJ0eVN0YXRlYCwgYnV0IHdpdGggYSB2ZXJ5IGRpZmZlcmVu
dAotLy8gaW1wbGVtZW50YXRpb24uCi0vLwotLy8gRGlydHkgc3RhdGVzIGhhdmUgdGhyZWUgY2hp
bGQgc3RhdGVzOgotLy8KLS8vIGB1bmNvbW1pdHRlZGA6IHRoZSBzdG9yZSBoYXMgbm90IHlldCBo
YW5kZWQgb2ZmIHRoZSByZWNvcmQKLS8vICAgdG8gYmUgc2F2ZWQuCi0vLyBgaW5GbGlnaHRgOiB0
aGUgc3RvcmUgaGFzIGhhbmRlZCBvZmYgdGhlIHJlY29yZCB0byBiZSBzYXZlZCwKLS8vICAgYnV0
IHRoZSBhZGFwdGVyIGhhcyBub3QgeWV0IGFja25vd2xlZGdlZCBzdWNjZXNzLgotLy8gYGludmFs
aWRgOiB0aGUgcmVjb3JkIGhhcyBpbnZhbGlkIGluZm9ybWF0aW9uIGFuZCBjYW5ub3QgYmUKLS8v
ICAgc2VuZCB0byB0aGUgYWRhcHRlciB5ZXQuCi12YXIgRGlydHlTdGF0ZSA9IHsKLSAgaW5pdGlh
bFN0YXRlOiAndW5jb21taXR0ZWQnLAotCi0gIC8vIEZMQUdTCi0gIGlzRGlydHk6IHRydWUsCi0K
LSAgLy8gU1VCU1RBVEVTCi0KLSAgLy8gV2hlbiBhIHJlY29yZCBmaXJzdCBiZWNvbWVzIGRpcnR5
LCBpdCBpcyBgdW5jb21taXR0ZWRgLgotICAvLyBUaGlzIG1lYW5zIHRoYXQgdGhlcmUgYXJlIGxv
Y2FsIHBlbmRpbmcgY2hhbmdlcywgYnV0IHRoZXkKLSAgLy8gaGF2ZSBub3QgeWV0IGJlZ3VuIHRv
IGJlIHNhdmVkLCBhbmQgYXJlIG5vdCBpbnZhbGlkLgotICB1bmNvbW1pdHRlZDogewotICAgIC8v
IEVWRU5UUwotICAgIGRpZFNldFByb3BlcnR5OiBkaWRTZXRQcm9wZXJ0eSwKLQotICAgIHByb3Bl
cnR5V2FzUmVzZXQ6IGZ1bmN0aW9uKHJlY29yZCwgbmFtZSkgewotICAgICAgdmFyIHN0aWxsRGly
dHkgPSBmYWxzZTsKLQotICAgICAgZm9yICh2YXIgcHJvcCBpbiByZWNvcmQuX2F0dHJpYnV0ZXMp
IHsKLSAgICAgICAgc3RpbGxEaXJ0eSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQot
Ci0gICAgICBpZiAoIXN0aWxsRGlydHkpIHsgcmVjb3JkLnNlbmQoJ3JvbGxlZEJhY2snKTsgfQot
ICAgIH0sCi0KLSAgICBwdXNoZWREYXRhOiBFbWJlci5LLAotCi0gICAgYmVjb21lRGlydHk6IEVt
YmVyLkssCi0KLSAgICB3aWxsQ29tbWl0OiBmdW5jdGlvbihyZWNvcmQpIHsKLSAgICAgIHJlY29y
ZC50cmFuc2l0aW9uVG8oJ2luRmxpZ2h0Jyk7Ci0gICAgfSwKLQotICAgIHJlbG9hZFJlY29yZDog
ZnVuY3Rpb24ocmVjb3JkLCByZXNvbHZlKSB7Ci0gICAgICByZXNvbHZlKGdldChyZWNvcmQsICdz
dG9yZScpLnJlbG9hZFJlY29yZChyZWNvcmQpKTsKLSAgICB9LAotCi0gICAgcm9sbGVkQmFjazog
ZnVuY3Rpb24ocmVjb3JkKSB7Ci0gICAgICByZWNvcmQudHJhbnNpdGlvblRvKCdsb2FkZWQuc2F2
ZWQnKTsKLSAgICB9LAotCi0gICAgYmVjYW1lSW52YWxpZDogZnVuY3Rpb24ocmVjb3JkKSB7Ci0g
ICAgICByZWNvcmQudHJhbnNpdGlvblRvKCdpbnZhbGlkJyk7Ci0gICAgfSwKLQotICAgIHJvbGxi
YWNrOiBmdW5jdGlvbihyZWNvcmQpIHsKLSAgICAgIHJlY29yZC5yb2xsYmFjaygpOwotICAgIH0K
LSAgfSwKLQotICAvLyBPbmNlIGEgcmVjb3JkIGhhcyBiZWVuIGhhbmRlZCBvZmYgdG8gdGhlIGFk
YXB0ZXIgdG8gYmUKLSAgLy8gc2F2ZWQsIGl0IGlzIGluIHRoZSAnaW4gZmxpZ2h0JyBzdGF0ZS4g
Q2hhbmdlcyB0byB0aGUKLSAgLy8gcmVjb3JkIGNhbm5vdCBiZSBtYWRlIGR1cmluZyB0aGlzIHdp
bmRvdy4KLSAgaW5GbGlnaHQ6IHsKLSAgICAvLyBGTEFHUwotICAgIGlzU2F2aW5nOiB0cnVlLAot
Ci0gICAgLy8gRVZFTlRTCi0gICAgZGlkU2V0UHJvcGVydHk6IGRpZFNldFByb3BlcnR5LAotICAg
IGJlY29tZURpcnR5OiBFbWJlci5LLAotICAgIHB1c2hlZERhdGE6IEVtYmVyLkssCi0KLSAgICAv
LyBUT0RPOiBNb3JlIHJvYnVzdCBzZW1hbnRpY3MgYXJvdW5kIHNhdmUtd2hpbGUtaW4tZmxpZ2h0
Ci0gICAgd2lsbENvbW1pdDogRW1iZXIuSywKLQotICAgIGRpZENvbW1pdDogZnVuY3Rpb24ocmVj
b3JkKSB7Ci0gICAgICB2YXIgZGlydHlUeXBlID0gZ2V0KHRoaXMsICdkaXJ0eVR5cGUnKTsKLQot
ICAgICAgcmVjb3JkLnRyYW5zaXRpb25Ubygnc2F2ZWQnKTsKLSAgICAgIHJlY29yZC5zZW5kKCdp
bnZva2VMaWZlY3ljbGVDYWxsYmFja3MnLCBkaXJ0eVR5cGUpOwotICAgIH0sCi0KLSAgICBiZWNh
bWVJbnZhbGlkOiBmdW5jdGlvbihyZWNvcmQpIHsKLSAgICAgIHJlY29yZC50cmFuc2l0aW9uVG8o
J2ludmFsaWQnKTsKLSAgICAgIHJlY29yZC5zZW5kKCdpbnZva2VMaWZlY3ljbGVDYWxsYmFja3Mn
KTsKLSAgICB9LAotCi0gICAgYmVjYW1lRXJyb3I6IGZ1bmN0aW9uKHJlY29yZCkgewotICAgICAg
cmVjb3JkLnRyYW5zaXRpb25UbygndW5jb21taXR0ZWQnKTsKLSAgICAgIHJlY29yZC50cmlnZ2Vy
TGF0ZXIoJ2JlY2FtZUVycm9yJywgcmVjb3JkKTsKLSAgICB9Ci0gIH0sCi0KLSAgLy8gQSByZWNv
cmQgaXMgaW4gdGhlIGBpbnZhbGlkYCBzdGF0ZSB3aGVuIGl0cyBjbGllbnQtc2lkZQotICAvLyBp
bnZhbGlkYXRpb25zIGhhdmUgZmFpbGVkLCBvciBpZiB0aGUgYWRhcHRlciBoYXMgaW5kaWNhdGVk
Ci0gIC8vIHRoZSB0aGUgcmVjb3JkIGZhaWxlZCBzZXJ2ZXItc2lkZSBpbnZhbGlkYXRpb25zLgot
ICBpbnZhbGlkOiB7Ci0gICAgLy8gRkxBR1MKLSAgICBpc1ZhbGlkOiBmYWxzZSwKLQotICAgIC8v
IEVWRU5UUwotICAgIGRlbGV0ZVJlY29yZDogZnVuY3Rpb24ocmVjb3JkKSB7Ci0gICAgICByZWNv
cmQudHJhbnNpdGlvblRvKCdkZWxldGVkLnVuY29tbWl0dGVkJyk7Ci0gICAgICByZWNvcmQuY2xl
YXJSZWxhdGlvbnNoaXBzKCk7Ci0gICAgfSwKLQotICAgIGRpZFNldFByb3BlcnR5OiBmdW5jdGlv
bihyZWNvcmQsIGNvbnRleHQpIHsKLSAgICAgIGdldChyZWNvcmQsICdlcnJvcnMnKS5yZW1vdmUo
Y29udGV4dC5uYW1lKTsKLQotICAgICAgZGlkU2V0UHJvcGVydHkocmVjb3JkLCBjb250ZXh0KTsK
LSAgICB9LAotCi0gICAgYmVjb21lRGlydHk6IEVtYmVyLkssCi0KLSAgICByb2xsZWRCYWNrOiBm
dW5jdGlvbihyZWNvcmQpIHsKLSAgICAgIGdldChyZWNvcmQsICdlcnJvcnMnKS5jbGVhcigpOwot
ICAgIH0sCi0KLSAgICBiZWNhbWVWYWxpZDogZnVuY3Rpb24ocmVjb3JkKSB7Ci0gICAgICByZWNv
cmQudHJhbnNpdGlvblRvKCd1bmNvbW1pdHRlZCcpOwotICAgIH0sCi0KLSAgICBpbnZva2VMaWZl
Y3ljbGVDYWxsYmFja3M6IGZ1bmN0aW9uKHJlY29yZCkgewotICAgICAgcmVjb3JkLnRyaWdnZXJM
YXRlcignYmVjYW1lSW52YWxpZCcsIHJlY29yZCk7Ci0gICAgfQotICB9Ci19OwotCi0vLyBUaGUg
Y3JlYXRlZCBhbmQgdXBkYXRlZCBzdGF0ZXMgYXJlIGNyZWF0ZWQgb3V0c2lkZSB0aGUgc3RhdGUK
LS8vIGNoYXJ0IHNvIHdlIGNhbiByZW9wZW4gdGhlaXIgc3Vic3RhdGVzIGFuZCBhZGQgbWl4aW5z
IGFzCi0vLyBuZWNlc3NhcnkuCi0KLWZ1bmN0aW9uIGRlZXBDbG9uZShvYmplY3QpIHsKLSAgdmFy
IGNsb25lID0ge30sIHZhbHVlOwotCi0gIGZvciAodmFyIHByb3AgaW4gb2JqZWN0KSB7Ci0gICAg
dmFsdWUgPSBvYmplY3RbcHJvcF07Ci0gICAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0g
J29iamVjdCcpIHsKLSAgICAgIGNsb25lW3Byb3BdID0gZGVlcENsb25lKHZhbHVlKTsKLSAgICB9
IGVsc2UgewotICAgICAgY2xvbmVbcHJvcF0gPSB2YWx1ZTsKLSAgICB9Ci0gIH0KLQotICByZXR1
cm4gY2xvbmU7Ci19Ci0KLWZ1bmN0aW9uIG1peGluKG9yaWdpbmFsLCBoYXNoKSB7Ci0gIGZvciAo
dmFyIHByb3AgaW4gaGFzaCkgewotICAgIG9yaWdpbmFsW3Byb3BdID0gaGFzaFtwcm9wXTsKLSAg
fQotCi0gIHJldHVybiBvcmlnaW5hbDsKLX0KLQotZnVuY3Rpb24gZGlydHlTdGF0ZShvcHRpb25z
KSB7Ci0gIHZhciBuZXdTdGF0ZSA9IGRlZXBDbG9uZShEaXJ0eVN0YXRlKTsKLSAgcmV0dXJuIG1p
eGluKG5ld1N0YXRlLCBvcHRpb25zKTsKLX0KLQotdmFyIGNyZWF0ZWRTdGF0ZSA9IGRpcnR5U3Rh
dGUoewotICBkaXJ0eVR5cGU6ICdjcmVhdGVkJywKLQotICAvLyBGTEFHUwotICBpc05ldzogdHJ1
ZQotfSk7Ci0KLWNyZWF0ZWRTdGF0ZS51bmNvbW1pdHRlZC5yb2xsZWRCYWNrID0gZnVuY3Rpb24o
cmVjb3JkKSB7Ci0gIHJlY29yZC50cmFuc2l0aW9uVG8oJ2RlbGV0ZWQuc2F2ZWQnKTsKLX07Ci0K
LXZhciB1cGRhdGVkU3RhdGUgPSBkaXJ0eVN0YXRlKHsKLSAgZGlydHlUeXBlOiAndXBkYXRlZCcK
LX0pOwotCi1jcmVhdGVkU3RhdGUudW5jb21taXR0ZWQuZGVsZXRlUmVjb3JkID0gZnVuY3Rpb24o
cmVjb3JkKSB7Ci0gIHJlY29yZC5jbGVhclJlbGF0aW9uc2hpcHMoKTsKLSAgcmVjb3JkLnRyYW5z
aXRpb25UbygnZGVsZXRlZC5zYXZlZCcpOwotfTsKLQotY3JlYXRlZFN0YXRlLnVuY29tbWl0dGVk
LnJvbGxiYWNrID0gZnVuY3Rpb24ocmVjb3JkKSB7Ci0gIERpcnR5U3RhdGUudW5jb21taXR0ZWQu
cm9sbGJhY2suYXBwbHkodGhpcywgYXJndW1lbnRzKTsKLSAgcmVjb3JkLnRyYW5zaXRpb25Ubygn
ZGVsZXRlZC5zYXZlZCcpOwotfTsKLQotY3JlYXRlZFN0YXRlLnVuY29tbWl0dGVkLnByb3BlcnR5
V2FzUmVzZXQgPSBFbWJlci5LOwotCi11cGRhdGVkU3RhdGUudW5jb21taXR0ZWQuZGVsZXRlUmVj
b3JkID0gZnVuY3Rpb24ocmVjb3JkKSB7Ci0gIHJlY29yZC50cmFuc2l0aW9uVG8oJ2RlbGV0ZWQu
dW5jb21taXR0ZWQnKTsKLSAgcmVjb3JkLmNsZWFyUmVsYXRpb25zaGlwcygpOwotfTsKLQotdmFy
IFJvb3RTdGF0ZSA9IHsKLSAgLy8gRkxBR1MKLSAgaXNFbXB0eTogZmFsc2UsCi0gIGlzTG9hZGlu
ZzogZmFsc2UsCi0gIGlzTG9hZGVkOiBmYWxzZSwKLSAgaXNEaXJ0eTogZmFsc2UsCi0gIGlzU2F2
aW5nOiBmYWxzZSwKLSAgaXNEZWxldGVkOiBmYWxzZSwKLSAgaXNOZXc6IGZhbHNlLAotICBpc1Zh
bGlkOiB0cnVlLAotCi0gIC8vIERFRkFVTFQgRVZFTlRTCi0KLSAgLy8gVHJ5aW5nIHRvIHJvbGwg
YmFjayBpZiB5b3UncmUgbm90IGluIHRoZSBkaXJ0eSBzdGF0ZQotICAvLyBkb2Vzbid0IGNoYW5n
ZSB5b3VyIHN0YXRlLiBGb3IgZXhhbXBsZSwgaWYgeW91J3JlIGluIHRoZQotICAvLyBpbi1mbGln
aHQgc3RhdGUsIHJvbGxpbmcgYmFjayB0aGUgcmVjb3JkIGRvZXNuJ3QgbW92ZQotICAvLyB5b3Ug
b3V0IG9mIHRoZSBpbi1mbGlnaHQgc3RhdGUuCi0gIHJvbGxlZEJhY2s6IEVtYmVyLkssCi0KLSAg
cHJvcGVydHlXYXNSZXNldDogRW1iZXIuSywKLQotICAvLyBTVUJTVEFURVMKLQotICAvLyBBIHJl
Y29yZCBiZWdpbnMgaXRzIGxpZmVjeWNsZSBpbiB0aGUgYGVtcHR5YCBzdGF0ZS4KLSAgLy8gSWYg
aXRzIGRhdGEgd2lsbCBjb21lIGZyb20gdGhlIGFkYXB0ZXIsIGl0IHdpbGwKLSAgLy8gdHJhbnNp
dGlvbiBpbnRvIHRoZSBgbG9hZGluZ2Agc3RhdGUuIE90aGVyd2lzZSwgaWYKLSAgLy8gdGhlIHJl
Y29yZCBpcyBiZWluZyBjcmVhdGVkIG9uIHRoZSBjbGllbnQsIGl0IHdpbGwKLSAgLy8gdHJhbnNp
dGlvbiBpbnRvIHRoZSBgY3JlYXRlZGAgc3RhdGUuCi0gIGVtcHR5OiB7Ci0gICAgaXNFbXB0eTog
dHJ1ZSwKLQotICAgIC8vIEVWRU5UUwotICAgIGxvYWRpbmdEYXRhOiBmdW5jdGlvbihyZWNvcmQs
IHByb21pc2UpIHsKLSAgICAgIHJlY29yZC5fbG9hZGluZ1Byb21pc2UgPSBwcm9taXNlOwotICAg
ICAgcmVjb3JkLnRyYW5zaXRpb25UbygnbG9hZGluZycpOwotICAgIH0sCi0KLSAgICBsb2FkZWRE
YXRhOiBmdW5jdGlvbihyZWNvcmQpIHsKLSAgICAgIHJlY29yZC50cmFuc2l0aW9uVG8oJ2xvYWRl
ZC5jcmVhdGVkLnVuY29tbWl0dGVkJyk7Ci0KLSAgICAgIHJlY29yZC5zdXNwZW5kUmVsYXRpb25z
aGlwT2JzZXJ2ZXJzKGZ1bmN0aW9uKCkgewotICAgICAgICByZWNvcmQubm90aWZ5UHJvcGVydHlD
aGFuZ2UoJ2RhdGEnKTsKLSAgICAgIH0pOwotICAgIH0sCi0KLSAgICBwdXNoZWREYXRhOiBmdW5j
dGlvbihyZWNvcmQpIHsKLSAgICAgIHJlY29yZC50cmFuc2l0aW9uVG8oJ2xvYWRlZC5zYXZlZCcp
OwotICAgICAgcmVjb3JkLnRyaWdnZXJMYXRlcignZGlkTG9hZCcpOwotICAgIH0KLSAgfSwKLQot
ICAvLyBBIHJlY29yZCBlbnRlcnMgdGhpcyBzdGF0ZSB3aGVuIHRoZSBzdG9yZSBhc2tzCi0gIC8v
IHRoZSBhZGFwdGVyIGZvciBpdHMgZGF0YS4gSXQgcmVtYWlucyBpbiB0aGlzIHN0YXRlCi0gIC8v
IHVudGlsIHRoZSBhZGFwdGVyIHByb3ZpZGVzIHRoZSByZXF1ZXN0ZWQgZGF0YS4KLSAgLy8KLSAg
Ly8gVXN1YWxseSwgdGhpcyBwcm9jZXNzIGlzIGFzeW5jaHJvbm91cywgdXNpbmcgYW4KLSAgLy8g
WEhSIHRvIHJldHJpZXZlIHRoZSBkYXRhLgotICBsb2FkaW5nOiB7Ci0gICAgLy8gRkxBR1MKLSAg
ICBpc0xvYWRpbmc6IHRydWUsCi0KLSAgICBleGl0OiBmdW5jdGlvbihyZWNvcmQpIHsKLSAgICAg
IHJlY29yZC5fbG9hZGluZ1Byb21pc2UgPSBudWxsOwotICAgIH0sCi0KLSAgICAvLyBFVkVOVFMK
LSAgICBwdXNoZWREYXRhOiBmdW5jdGlvbihyZWNvcmQpIHsKLSAgICAgIHJlY29yZC50cmFuc2l0
aW9uVG8oJ2xvYWRlZC5zYXZlZCcpOwotICAgICAgcmVjb3JkLnRyaWdnZXJMYXRlcignZGlkTG9h
ZCcpOwotICAgICAgc2V0KHJlY29yZCwgJ2lzRXJyb3InLCBmYWxzZSk7Ci0gICAgfSwKLQotICAg
IGJlY2FtZUVycm9yOiBmdW5jdGlvbihyZWNvcmQpIHsKLSAgICAgIHJlY29yZC50cmlnZ2VyTGF0
ZXIoJ2JlY2FtZUVycm9yJywgcmVjb3JkKTsKLSAgICB9LAotCi0gICAgbm90Rm91bmQ6IGZ1bmN0
aW9uKHJlY29yZCkgewotICAgICAgcmVjb3JkLnRyYW5zaXRpb25UbygnZW1wdHknKTsKLSAgICB9
Ci0gIH0sCi0KLSAgLy8gQSByZWNvcmQgZW50ZXJzIHRoaXMgc3RhdGUgd2hlbiBpdHMgZGF0YSBp
cyBwb3B1bGF0ZWQuCi0gIC8vIE1vc3Qgb2YgYSByZWNvcmQncyBsaWZlY3ljbGUgaXMgc3BlbnQg
aW5zaWRlIHN1YnN0YXRlcwotICAvLyBvZiB0aGUgYGxvYWRlZGAgc3RhdGUuCi0gIGxvYWRlZDog
ewotICAgIGluaXRpYWxTdGF0ZTogJ3NhdmVkJywKLQotICAgIC8vIEZMQUdTCi0gICAgaXNMb2Fk
ZWQ6IHRydWUsCi0KLSAgICAvLyBTVUJTVEFURVMKLQotICAgIC8vIElmIHRoZXJlIGFyZSBubyBs
b2NhbCBjaGFuZ2VzIHRvIGEgcmVjb3JkLCBpdCByZW1haW5zCi0gICAgLy8gaW4gdGhlIGBzYXZl
ZGAgc3RhdGUuCi0gICAgc2F2ZWQ6IHsKLSAgICAgIHNldHVwOiBmdW5jdGlvbihyZWNvcmQpIHsK
LSAgICAgICAgdmFyIGF0dHJzID0gcmVjb3JkLl9hdHRyaWJ1dGVzLAotICAgICAgICAgICAgaXNE
aXJ0eSA9IGZhbHNlOwotCi0gICAgICAgIGZvciAodmFyIHByb3AgaW4gYXR0cnMpIHsKLSAgICAg
ICAgICBpZiAoYXR0cnMuaGFzT3duUHJvcGVydHkocHJvcCkpIHsKLSAgICAgICAgICAgIGlzRGly
dHkgPSB0cnVlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0K
LSAgICAgICAgaWYgKGlzRGlydHkpIHsKLSAgICAgICAgICByZWNvcmQuYWRhcHRlckRpZERpcnR5
KCk7Ci0gICAgICAgIH0KLSAgICAgIH0sCi0KLSAgICAgIC8vIEVWRU5UUwotICAgICAgZGlkU2V0
UHJvcGVydHk6IGRpZFNldFByb3BlcnR5LAotCi0gICAgICBwdXNoZWREYXRhOiBFbWJlci5LLAot
Ci0gICAgICBiZWNvbWVEaXJ0eTogZnVuY3Rpb24ocmVjb3JkKSB7Ci0gICAgICAgIHJlY29yZC50
cmFuc2l0aW9uVG8oJ3VwZGF0ZWQudW5jb21taXR0ZWQnKTsKLSAgICAgIH0sCi0KLSAgICAgIHdp
bGxDb21taXQ6IGZ1bmN0aW9uKHJlY29yZCkgewotICAgICAgICByZWNvcmQudHJhbnNpdGlvblRv
KCd1cGRhdGVkLmluRmxpZ2h0Jyk7Ci0gICAgICB9LAotCi0gICAgICByZWxvYWRSZWNvcmQ6IGZ1
bmN0aW9uKHJlY29yZCwgcmVzb2x2ZSkgewotICAgICAgICByZXNvbHZlKGdldChyZWNvcmQsICdz
dG9yZScpLnJlbG9hZFJlY29yZChyZWNvcmQpKTsKLSAgICAgIH0sCi0KLSAgICAgIGRlbGV0ZVJl
Y29yZDogZnVuY3Rpb24ocmVjb3JkKSB7Ci0gICAgICAgIHJlY29yZC50cmFuc2l0aW9uVG8oJ2Rl
bGV0ZWQudW5jb21taXR0ZWQnKTsKLSAgICAgICAgcmVjb3JkLmNsZWFyUmVsYXRpb25zaGlwcygp
OwotICAgICAgfSwKLQotICAgICAgdW5sb2FkUmVjb3JkOiBmdW5jdGlvbihyZWNvcmQpIHsKLSAg
ICAgICAgLy8gY2xlYXIgcmVsYXRpb25zaGlwcyBiZWZvcmUgbW92aW5nIHRvIGRlbGV0ZWQgc3Rh
dGUKLSAgICAgICAgLy8gb3RoZXJ3aXNlIGl0IGZhaWxzCi0gICAgICAgIHJlY29yZC5jbGVhclJl
bGF0aW9uc2hpcHMoKTsKLSAgICAgICAgcmVjb3JkLnRyYW5zaXRpb25UbygnZGVsZXRlZC5zYXZl
ZCcpOwotICAgICAgfSwKLQotICAgICAgZGlkQ29tbWl0OiBmdW5jdGlvbihyZWNvcmQpIHsKLSAg
ICAgICAgcmVjb3JkLnNlbmQoJ2ludm9rZUxpZmVjeWNsZUNhbGxiYWNrcycsIGdldChyZWNvcmQs
ICdsYXN0RGlydHlUeXBlJykpOwotICAgICAgfSwKLQotICAgICAgLy8gbG9hZGVkLnNhdmVkLm5v
dEZvdW5kIHdvdWxkIGJlIHRyaWdnZXJlZCBieSBhIGZhaWxlZAotICAgICAgLy8gYHJlbG9hZCgp
YCBvbiBhbiB1bmNoYW5nZWQgcmVjb3JkCi0gICAgICBub3RGb3VuZDogRW1iZXIuSwotCi0gICAg
fSwKLQotICAgIC8vIEEgcmVjb3JkIGlzIGluIHRoaXMgc3RhdGUgYWZ0ZXIgaXQgaGFzIGJlZW4g
bG9jYWxseQotICAgIC8vIGNyZWF0ZWQgYnV0IGJlZm9yZSB0aGUgYWRhcHRlciBoYXMgaW5kaWNh
dGVkIHRoYXQKLSAgICAvLyBpdCBoYXMgYmVlbiBzYXZlZC4KLSAgICBjcmVhdGVkOiBjcmVhdGVk
U3RhdGUsCi0KLSAgICAvLyBBIHJlY29yZCBpcyBpbiB0aGlzIHN0YXRlIGlmIGl0IGhhcyBhbHJl
YWR5IGJlZW4KLSAgICAvLyBzYXZlZCB0byB0aGUgc2VydmVyLCBidXQgdGhlcmUgYXJlIG5ldyBs
b2NhbCBjaGFuZ2VzCi0gICAgLy8gdGhhdCBoYXZlIG5vdCB5ZXQgYmVlbiBzYXZlZC4KLSAgICB1
cGRhdGVkOiB1cGRhdGVkU3RhdGUKLSAgfSwKLQotICAvLyBBIHJlY29yZCBpcyBpbiB0aGlzIHN0
YXRlIGlmIGl0IHdhcyBkZWxldGVkIGZyb20gdGhlIHN0b3JlLgotICBkZWxldGVkOiB7Ci0gICAg
aW5pdGlhbFN0YXRlOiAndW5jb21taXR0ZWQnLAotICAgIGRpcnR5VHlwZTogJ2RlbGV0ZWQnLAot
Ci0gICAgLy8gRkxBR1MKLSAgICBpc0RlbGV0ZWQ6IHRydWUsCi0gICAgaXNMb2FkZWQ6IHRydWUs
Ci0gICAgaXNEaXJ0eTogdHJ1ZSwKLQotICAgIC8vIFRSQU5TSVRJT05TCi0gICAgc2V0dXA6IGZ1
bmN0aW9uKHJlY29yZCkgewotICAgICAgcmVjb3JkLnVwZGF0ZVJlY29yZEFycmF5cygpOwotICAg
IH0sCi0KLSAgICAvLyBTVUJTVEFURVMKLQotICAgIC8vIFdoZW4gYSByZWNvcmQgaXMgZGVsZXRl
ZCwgaXQgZW50ZXJzIHRoZSBgc3RhcnRgCi0gICAgLy8gc3RhdGUuIEl0IHdpbGwgZXhpdCB0aGlz
IHN0YXRlIHdoZW4gdGhlIHJlY29yZAotICAgIC8vIHN0YXJ0cyB0byBjb21taXQuCi0gICAgdW5j
b21taXR0ZWQ6IHsKLQotICAgICAgLy8gRVZFTlRTCi0KLSAgICAgIHdpbGxDb21taXQ6IGZ1bmN0
aW9uKHJlY29yZCkgewotICAgICAgICByZWNvcmQudHJhbnNpdGlvblRvKCdpbkZsaWdodCcpOwot
ICAgICAgfSwKLQotICAgICAgcm9sbGJhY2s6IGZ1bmN0aW9uKHJlY29yZCkgewotICAgICAgICBy
ZWNvcmQucm9sbGJhY2soKTsKLSAgICAgIH0sCi0KLSAgICAgIGJlY29tZURpcnR5OiBFbWJlci5L
LAotICAgICAgZGVsZXRlUmVjb3JkOiBFbWJlci5LLAotCi0gICAgICByb2xsZWRCYWNrOiBmdW5j
dGlvbihyZWNvcmQpIHsKLSAgICAgICAgcmVjb3JkLnRyYW5zaXRpb25UbygnbG9hZGVkLnNhdmVk
Jyk7Ci0gICAgICB9Ci0gICAgfSwKLQotICAgIC8vIEFmdGVyIGEgcmVjb3JkIHN0YXJ0cyBjb21t
aXR0aW5nLCBidXQKLSAgICAvLyBiZWZvcmUgdGhlIGFkYXB0ZXIgaW5kaWNhdGVzIHRoYXQgdGhl
IGRlbGV0aW9uCi0gICAgLy8gaGFzIHNhdmVkIHRvIHRoZSBzZXJ2ZXIsIGEgcmVjb3JkIGlzIGlu
IHRoZQotICAgIC8vIGBpbkZsaWdodGAgc3Vic3RhdGUgb2YgYGRlbGV0ZWRgLgotICAgIGluRmxp
Z2h0OiB7Ci0gICAgICAvLyBGTEFHUwotICAgICAgaXNTYXZpbmc6IHRydWUsCi0KLSAgICAgIC8v
IEVWRU5UUwotCi0gICAgICAvLyBUT0RPOiBNb3JlIHJvYnVzdCBzZW1hbnRpY3MgYXJvdW5kIHNh
dmUtd2hpbGUtaW4tZmxpZ2h0Ci0gICAgICB3aWxsQ29tbWl0OiBFbWJlci5LLAotICAgICAgZGlk
Q29tbWl0OiBmdW5jdGlvbihyZWNvcmQpIHsKLSAgICAgICAgcmVjb3JkLnRyYW5zaXRpb25Ubygn
c2F2ZWQnKTsKLQotICAgICAgICByZWNvcmQuc2VuZCgnaW52b2tlTGlmZWN5Y2xlQ2FsbGJhY2tz
Jyk7Ci0gICAgICB9LAotCi0gICAgICBiZWNhbWVFcnJvcjogZnVuY3Rpb24ocmVjb3JkKSB7Ci0g
ICAgICAgIHJlY29yZC50cmFuc2l0aW9uVG8oJ3VuY29tbWl0dGVkJyk7Ci0gICAgICAgIHJlY29y
ZC50cmlnZ2VyTGF0ZXIoJ2JlY2FtZUVycm9yJywgcmVjb3JkKTsKLSAgICAgIH0KLSAgICB9LAot
Ci0gICAgLy8gT25jZSB0aGUgYWRhcHRlciBpbmRpY2F0ZXMgdGhhdCB0aGUgZGVsZXRpb24gaGFz
Ci0gICAgLy8gYmVlbiBzYXZlZCwgdGhlIHJlY29yZCBlbnRlcnMgdGhlIGBzYXZlZGAgc3Vic3Rh
dGUKLSAgICAvLyBvZiBgZGVsZXRlZGAuCi0gICAgc2F2ZWQ6IHsKLSAgICAgIC8vIEZMQUdTCi0g
ICAgICBpc0RpcnR5OiBmYWxzZSwKLQotICAgICAgc2V0dXA6IGZ1bmN0aW9uKHJlY29yZCkgewot
ICAgICAgICB2YXIgc3RvcmUgPSBnZXQocmVjb3JkLCAnc3RvcmUnKTsKLSAgICAgICAgc3RvcmUu
ZGVtYXRlcmlhbGl6ZVJlY29yZChyZWNvcmQpOwotICAgICAgfSwKLQotICAgICAgaW52b2tlTGlm
ZWN5Y2xlQ2FsbGJhY2tzOiBmdW5jdGlvbihyZWNvcmQpIHsKLSAgICAgICAgcmVjb3JkLnRyaWdn
ZXJMYXRlcignZGlkRGVsZXRlJywgcmVjb3JkKTsKLSAgICAgICAgcmVjb3JkLnRyaWdnZXJMYXRl
cignZGlkQ29tbWl0JywgcmVjb3JkKTsKLSAgICAgIH0KLSAgICB9Ci0gIH0sCi0KLSAgaW52b2tl
TGlmZWN5Y2xlQ2FsbGJhY2tzOiBmdW5jdGlvbihyZWNvcmQsIGRpcnR5VHlwZSkgewotICAgIGlm
IChkaXJ0eVR5cGUgPT09ICdjcmVhdGVkJykgewotICAgICAgcmVjb3JkLnRyaWdnZXJMYXRlcign
ZGlkQ3JlYXRlJywgcmVjb3JkKTsKLSAgICB9IGVsc2UgewotICAgICAgcmVjb3JkLnRyaWdnZXJM
YXRlcignZGlkVXBkYXRlJywgcmVjb3JkKTsKLSAgICB9Ci0KLSAgICByZWNvcmQudHJpZ2dlckxh
dGVyKCdkaWRDb21taXQnLCByZWNvcmQpOwotICB9Ci19OwotCi1mdW5jdGlvbiB3aXJlU3RhdGUo
b2JqZWN0LCBwYXJlbnQsIG5hbWUpIHsKLSAgLypqc2hpbnQgcHJvdG86dHJ1ZSovCi0gIC8vIFRP
RE86IFVzZSBPYmplY3QuY3JlYXRlIGFuZCBjb3B5IGluc3RlYWQKLSAgb2JqZWN0ID0gbWl4aW4o
cGFyZW50ID8gRW1iZXIuY3JlYXRlKHBhcmVudCkgOiB7fSwgb2JqZWN0KTsKLSAgb2JqZWN0LnBh
cmVudFN0YXRlID0gcGFyZW50OwotICBvYmplY3Quc3RhdGVOYW1lID0gbmFtZTsKLQotICBmb3Ig
KHZhciBwcm9wIGluIG9iamVjdCkgewotICAgIGlmICghb2JqZWN0Lmhhc093blByb3BlcnR5KHBy
b3ApIHx8IHByb3AgPT09ICdwYXJlbnRTdGF0ZScgfHwgcHJvcCA9PT0gJ3N0YXRlTmFtZScpIHsg
Y29udGludWU7IH0KLSAgICBpZiAodHlwZW9mIG9iamVjdFtwcm9wXSA9PT0gJ29iamVjdCcpIHsK
LSAgICAgIG9iamVjdFtwcm9wXSA9IHdpcmVTdGF0ZShvYmplY3RbcHJvcF0sIG9iamVjdCwgbmFt
ZSArICIuIiArIHByb3ApOwotICAgIH0KLSAgfQotCi0gIHJldHVybiBvYmplY3Q7Ci19Ci0KLVJv
b3RTdGF0ZSA9IHdpcmVTdGF0ZShSb290U3RhdGUsIG51bGwsICJyb290Iik7Ci0KLURTLlJvb3RT
dGF0ZSA9IFJvb3RTdGF0ZTsKLQotfSkoKTsKLQotCi0KLShmdW5jdGlvbigpIHsKLXZhciBnZXQg
PSBFbWJlci5nZXQsIGlzRW1wdHkgPSBFbWJlci5pc0VtcHR5OwotCi0vKioKLUBtb2R1bGUgZW1i
ZXItZGF0YQotKi8KLQotLyoqCi0gIEhvbGRzIHZhbGlkYXRpb24gZXJyb3JzIGZvciBhIGdpdmVu
IHJlY29yZCBvcmdhbml6ZWQgYnkgYXR0cmlidXRlIG5hbWVzLgotCi0gIEBjbGFzcyBFcnJvcnMK
LSAgQG5hbWVzcGFjZSBEUwotICBAZXh0ZW5kcyBFbWJlci5PYmplY3QKLSAgQHVzZXMgRW1iZXIu
RW51bWVyYWJsZQotICBAdXNlcyBFbWJlci5FdmVudGVkCi0gKi8KLURTLkVycm9ycyA9IEVtYmVy
Lk9iamVjdC5leHRlbmQoRW1iZXIuRW51bWVyYWJsZSwgRW1iZXIuRXZlbnRlZCwgewotICAvKioK
LSAgICBSZWdpc3RlciB3aXRoIHRhcmdldCBoYW5kbGVyCi0KLSAgICBAbWV0aG9kIHJlZ2lzdGVy
SGFuZGxlcnMKLSAgICBAcGFyYW0ge09iamVjdH0gdGFyZ2V0Ci0gICAgQHBhcmFtIHtGdW5jdGlv
bn0gYmVjYW1lSW52YWxpZAotICAgIEBwYXJhbSB7RnVuY3Rpb259IGJlY2FtZVZhbGlkCi0gICov
Ci0gIHJlZ2lzdGVySGFuZGxlcnM6IGZ1bmN0aW9uKHRhcmdldCwgYmVjYW1lSW52YWxpZCwgYmVj
YW1lVmFsaWQpIHsKLSAgICB0aGlzLm9uKCdiZWNhbWVJbnZhbGlkJywgdGFyZ2V0LCBiZWNhbWVJ
bnZhbGlkKTsKLSAgICB0aGlzLm9uKCdiZWNhbWVWYWxpZCcsIHRhcmdldCwgYmVjYW1lVmFsaWQp
OwotICB9LAotCi0gIC8qKgotICAgIEBwcm9wZXJ0eSBlcnJvcnNCeUF0dHJpYnV0ZU5hbWUKLSAg
ICBAdHlwZSB7RW1iZXIuTWFwV2l0aERlZmF1bHR9Ci0gICAgQHByaXZhdGUKLSAgKi8KLSAgZXJy
b3JzQnlBdHRyaWJ1dGVOYW1lOiBFbWJlci5yZWR1Y2VDb21wdXRlZCgiY29udGVudCIsIHsKLSAg
ICBpbml0aWFsVmFsdWU6IGZ1bmN0aW9uKCkgewotICAgICAgcmV0dXJuIEVtYmVyLk1hcFdpdGhE
ZWZhdWx0LmNyZWF0ZSh7Ci0gICAgICAgIGRlZmF1bHRWYWx1ZTogZnVuY3Rpb24oKSB7Ci0gICAg
ICAgICAgcmV0dXJuIEVtYmVyLkEoKTsKLSAgICAgICAgfQotICAgICAgfSk7Ci0gICAgfSwKLQot
ICAgIGFkZGVkSXRlbTogZnVuY3Rpb24oZXJyb3JzLCBlcnJvcikgewotICAgICAgZXJyb3JzLmdl
dChlcnJvci5hdHRyaWJ1dGUpLnB1c2hPYmplY3QoZXJyb3IpOwotCi0gICAgICByZXR1cm4gZXJy
b3JzOwotICAgIH0sCi0KLSAgICByZW1vdmVkSXRlbTogZnVuY3Rpb24oZXJyb3JzLCBlcnJvcikg
ewotICAgICAgZXJyb3JzLmdldChlcnJvci5hdHRyaWJ1dGUpLnJlbW92ZU9iamVjdChlcnJvcik7
Ci0KLSAgICAgIHJldHVybiBlcnJvcnM7Ci0gICAgfQotICB9KSwKLQotICAvKioKLSAgICBSZXR1
cm5zIGVycm9ycyBmb3IgYSBnaXZlbiBhdHRyaWJ1dGUKLQotICAgIEBtZXRob2QgZXJyb3JzRm9y
Ci0gICAgQHBhcmFtIHtTdHJpbmd9IGF0dHJpYnV0ZQotICAgIEByZXR1cm5zIHtBcnJheX0KLSAg
Ki8KLSAgZXJyb3JzRm9yOiBmdW5jdGlvbihhdHRyaWJ1dGUpIHsKLSAgICByZXR1cm4gZ2V0KHRo
aXMsICdlcnJvcnNCeUF0dHJpYnV0ZU5hbWUnKS5nZXQoYXR0cmlidXRlKTsKLSAgfSwKLQotICAv
KioKLSAgKi8KLSAgbWVzc2FnZXM6IEVtYmVyLmNvbXB1dGVkLm1hcEJ5KCdjb250ZW50JywgJ21l
c3NhZ2UnKSwKLQotICAvKioKLSAgICBAcHJvcGVydHkgY29udGVudAotICAgIEB0eXBlIHtBcnJh
eX0KLSAgICBAcHJpdmF0ZQotICAqLwotICBjb250ZW50OiBFbWJlci5jb21wdXRlZChmdW5jdGlv
bigpIHsKLSAgICByZXR1cm4gRW1iZXIuQSgpOwotICB9KSwKLQotICAvKioKLSAgICBAbWV0aG9k
IHVua25vd25Qcm9wZXJ0eQotICAgIEBwcml2YXRlCi0gICovCi0gIHVua25vd25Qcm9wZXJ0eTog
ZnVuY3Rpb24oYXR0cmlidXRlKSB7Ci0gICAgdmFyIGVycm9ycyA9IHRoaXMuZXJyb3JzRm9yKGF0
dHJpYnV0ZSk7Ci0gICAgaWYgKGlzRW1wdHkoZXJyb3JzKSkgeyByZXR1cm4gbnVsbDsgfQotICAg
IHJldHVybiBlcnJvcnM7Ci0gIH0sCi0KLSAgLyoqCi0gICAgQG1ldGhvZCBuZXh0T2JqZWN0Ci0g
ICAgQHByaXZhdGUKLSAgKi8KLSAgbmV4dE9iamVjdDogZnVuY3Rpb24oaW5kZXgsIHByZXZpb3Vz
T2JqZWN0LCBjb250ZXh0KSB7Ci0gICAgcmV0dXJuIGdldCh0aGlzLCAnY29udGVudCcpLm9iamVj
dEF0KGluZGV4KTsKLSAgfSwKLQotICAvKioKLSAgICBUb3RhbCBudW1iZXIgb2YgZXJyb3JzLgot
Ci0gICAgQHByb3BlcnR5IGxlbmd0aAotICAgIEB0eXBlIHtOdW1iZXJ9Ci0gICAgQHJlYWRPbmx5
Ci0gICovCi0gIGxlbmd0aDogRW1iZXIuY29tcHV0ZWQub25lV2F5KCdjb250ZW50Lmxlbmd0aCcp
LnJlYWRPbmx5KCksCi0KLSAgLyoqCi0gICAgQHByb3BlcnR5IGlzRW1wdHkKLSAgICBAdHlwZSB7
Qm9vbGVhbn0KLSAgICBAcmVhZE9ubHkKLSAgKi8KLSAgaXNFbXB0eTogRW1iZXIuY29tcHV0ZWQu
bm90KCdsZW5ndGgnKS5yZWFkT25seSgpLAotCi0gIC8qKgotICAgIEFkZHMgZXJyb3IgbWVzc2Fn
ZXMgdG8gYSBnaXZlbiBhdHRyaWJ1dGUgYW5kIHNlbmRzCi0gICAgYGJlY2FtZUludmFsaWRgIGV2
ZW50IHRvIHRoZSByZWNvcmQuCi0KLSAgICBAbWV0aG9kIGFkZAotICAgIEBwYXJhbSB7U3RyaW5n
fSBhdHRyaWJ1dGUKLSAgICBAcGFyYW0ge0FycmF5fFN0cmluZ30gbWVzc2FnZXMKLSAgKi8KLSAg
YWRkOiBmdW5jdGlvbihhdHRyaWJ1dGUsIG1lc3NhZ2VzKSB7Ci0gICAgdmFyIHdhc0VtcHR5ID0g
Z2V0KHRoaXMsICdpc0VtcHR5Jyk7Ci0KLSAgICBtZXNzYWdlcyA9IHRoaXMuX2ZpbmRPckNyZWF0
ZU1lc3NhZ2VzKGF0dHJpYnV0ZSwgbWVzc2FnZXMpOwotICAgIGdldCh0aGlzLCAnY29udGVudCcp
LmFkZE9iamVjdHMobWVzc2FnZXMpOwotCi0gICAgdGhpcy5ub3RpZnlQcm9wZXJ0eUNoYW5nZShh
dHRyaWJ1dGUpOwotICAgIHRoaXMuZW51bWVyYWJsZUNvbnRlbnREaWRDaGFuZ2UoKTsKLQotICAg
IGlmICh3YXNFbXB0eSAmJiAhZ2V0KHRoaXMsICdpc0VtcHR5JykpIHsKLSAgICAgIHRoaXMudHJp
Z2dlcignYmVjYW1lSW52YWxpZCcpOwotICAgIH0KLSAgfSwKLQotICAvKioKLSAgICBAbWV0aG9k
IF9maW5kT3JDcmVhdGVNZXNzYWdlcwotICAgIEBwcml2YXRlCi0gICovCi0gIF9maW5kT3JDcmVh
dGVNZXNzYWdlczogZnVuY3Rpb24oYXR0cmlidXRlLCBtZXNzYWdlcykgewotICAgIHZhciBlcnJv
cnMgPSB0aGlzLmVycm9yc0ZvcihhdHRyaWJ1dGUpOwotCi0gICAgcmV0dXJuIEVtYmVyLm1ha2VB
cnJheShtZXNzYWdlcykubWFwKGZ1bmN0aW9uKG1lc3NhZ2UpIHsKLSAgICAgIHJldHVybiBlcnJv
cnMuZmluZEJ5KCdtZXNzYWdlJywgbWVzc2FnZSkgfHwgewotICAgICAgICBhdHRyaWJ1dGU6IGF0
dHJpYnV0ZSwKLSAgICAgICAgbWVzc2FnZTogbWVzc2FnZQotICAgICAgfTsKLSAgICB9KTsKLSAg
fSwKLQotICAvKioKLSAgICBSZW1vdmVzIGFsbCBlcnJvciBtZXNzYWdlcyBmcm9tIHRoZSBnaXZl
biBhdHRyaWJ1dGUgYW5kIHNlbmRzCi0gICAgYGJlY2FtZVZhbGlkYCBldmVudCB0byB0aGUgcmVj
b3JkIGlmIHRoZXJlIG5vIG1vcmUgZXJyb3JzIGxlZnQuCi0KLSAgICBAbWV0aG9kIHJlbW92ZQot
ICAgIEBwYXJhbSB7U3RyaW5nfSBhdHRyaWJ1dGUKLSAgKi8KLSAgcmVtb3ZlOiBmdW5jdGlvbihh
dHRyaWJ1dGUpIHsKLSAgICBpZiAoZ2V0KHRoaXMsICdpc0VtcHR5JykpIHsgcmV0dXJuOyB9Ci0K
LSAgICB2YXIgY29udGVudCA9IGdldCh0aGlzLCAnY29udGVudCcpLnJlamVjdEJ5KCdhdHRyaWJ1
dGUnLCBhdHRyaWJ1dGUpOwotICAgIGdldCh0aGlzLCAnY29udGVudCcpLnNldE9iamVjdHMoY29u
dGVudCk7Ci0KLSAgICB0aGlzLm5vdGlmeVByb3BlcnR5Q2hhbmdlKGF0dHJpYnV0ZSk7Ci0gICAg
dGhpcy5lbnVtZXJhYmxlQ29udGVudERpZENoYW5nZSgpOwotCi0gICAgaWYgKGdldCh0aGlzLCAn
aXNFbXB0eScpKSB7Ci0gICAgICB0aGlzLnRyaWdnZXIoJ2JlY2FtZVZhbGlkJyk7Ci0gICAgfQot
ICB9LAotCi0gIC8qKgotICAgIFJlbW92ZXMgYWxsIGVycm9yIG1lc3NhZ2VzIGFuZCBzZW5kcyBg
YmVjYW1lVmFsaWRgIGV2ZW50Ci0gICAgdG8gdGhlIHJlY29yZC4KLQotICAgIEBtZXRob2QgY2xl
YXIKLSAgKi8KLSAgY2xlYXI6IGZ1bmN0aW9uKCkgewotICAgIGlmIChnZXQodGhpcywgJ2lzRW1w
dHknKSkgeyByZXR1cm47IH0KLQotICAgIGdldCh0aGlzLCAnY29udGVudCcpLmNsZWFyKCk7Ci0g
ICAgdGhpcy5lbnVtZXJhYmxlQ29udGVudERpZENoYW5nZSgpOwotCi0gICAgdGhpcy50cmlnZ2Vy
KCdiZWNhbWVWYWxpZCcpOwotICB9LAotCi0gIC8qKgotICAgIENoZWNrcyBpZiB0aGVyZSBpcyBl
cnJvciBtZXNzYWdlcyBmb3IgdGhlIGdpdmVuIGF0dHJpYnV0ZS4KLQotICAgIEBtZXRob2QgaGFz
Ci0gICAgQHBhcmFtIHtTdHJpbmd9IGF0dHJpYnV0ZQotICAgIEByZXR1cm5zIHtCb29sZWFufSB0
cnVlIGlmIHRoZXJlIHNvbWUgZXJyb3JzIG9uIGdpdmVuIGF0dHJpYnV0ZQotICAqLwotICBoYXM6
IGZ1bmN0aW9uKGF0dHJpYnV0ZSkgewotICAgIHJldHVybiAhaXNFbXB0eSh0aGlzLmVycm9yc0Zv
cihhdHRyaWJ1dGUpKTsKLSAgfQotfSk7Ci0KLX0pKCk7Ci0KLQotCi0oZnVuY3Rpb24oKSB7Ci0v
KioKLSAgQG1vZHVsZSBlbWJlci1kYXRhCi0qLwotCi12YXIgZ2V0ID0gRW1iZXIuZ2V0LCBzZXQg
PSBFbWJlci5zZXQsCi0gICAgbWVyZ2UgPSBFbWJlci5tZXJnZTsKLQotdmFyIHJldHJpZXZlRnJv
bUN1cnJlbnRTdGF0ZSA9IEVtYmVyLmNvbXB1dGVkKCdjdXJyZW50U3RhdGUnLCBmdW5jdGlvbihr
ZXksIHZhbHVlKSB7Ci0gIHJldHVybiBnZXQoZ2V0KHRoaXMsICdjdXJyZW50U3RhdGUnKSwga2V5
KTsKLX0pLnJlYWRPbmx5KCk7Ci0KLS8qKgotCi0gIFRoZSBtb2RlbCBjbGFzcyB0aGF0IGFsbCBF
bWJlciBEYXRhIHJlY29yZHMgZGVzY2VuZCBmcm9tLgotCi0gIEBjbGFzcyBNb2RlbAotICBAbmFt
ZXNwYWNlIERTCi0gIEBleHRlbmRzIEVtYmVyLk9iamVjdAotICBAdXNlcyBFbWJlci5FdmVudGVk
Ci0qLwotRFMuTW9kZWwgPSBFbWJlci5PYmplY3QuZXh0ZW5kKEVtYmVyLkV2ZW50ZWQsIHsKLSAg
LyoqCi0gICAgSWYgdGhpcyBwcm9wZXJ0eSBpcyBgdHJ1ZWAgdGhlIHJlY29yZCBpcyBpbiB0aGUg
YGVtcHR5YAotICAgIHN0YXRlLiBFbXB0eSBpcyB0aGUgZmlyc3Qgc3RhdGUgYWxsIHJlY29yZHMg
ZW50ZXIgYWZ0ZXIgdGhleSBoYXZlCi0gICAgYmVlbiBjcmVhdGVkLiBNb3N0IHJlY29yZHMgY3Jl
YXRlZCBieSB0aGUgc3RvcmUgd2lsbCBxdWlja2x5Ci0gICAgdHJhbnNpdGlvbiB0byB0aGUgYGxv
YWRpbmdgIHN0YXRlIGlmIGRhdGEgbmVlZHMgdG8gYmUgZmV0Y2hlZCBmcm9tCi0gICAgdGhlIHNl
cnZlciBvciB0aGUgYGNyZWF0ZWRgIHN0YXRlIGlmIHRoZSByZWNvcmQgaXMgY3JlYXRlZCBvbiB0
aGUKLSAgICBjbGllbnQuIEEgcmVjb3JkIGNhbiBhbHNvIGVudGVyIHRoZSBlbXB0eSBzdGF0ZSBp
ZiB0aGUgYWRhcHRlciBpcwotICAgIHVuYWJsZSB0byBsb2NhdGUgdGhlIHJlY29yZC4KLQotICAg
IEBwcm9wZXJ0eSBpc0VtcHR5Ci0gICAgQHR5cGUge0Jvb2xlYW59Ci0gICAgQHJlYWRPbmx5Ci0g
ICovCi0gIGlzRW1wdHk6IHJldHJpZXZlRnJvbUN1cnJlbnRTdGF0ZSwKLSAgLyoqCi0gICAgSWYg
dGhpcyBwcm9wZXJ0eSBpcyBgdHJ1ZWAgdGhlIHJlY29yZCBpcyBpbiB0aGUgYGxvYWRpbmdgIHN0
YXRlLiBBCi0gICAgcmVjb3JkIGVudGVycyB0aGlzIHN0YXRlIHdoZW4gdGhlIHN0b3JlIGFza3Mg
dGhlIGFkYXB0ZXIgZm9yIGl0cwotICAgIGRhdGEuIEl0IHJlbWFpbnMgaW4gdGhpcyBzdGF0ZSB1
bnRpbCB0aGUgYWRhcHRlciBwcm92aWRlcyB0aGUKLSAgICByZXF1ZXN0ZWQgZGF0YS4KLQotICAg
IEBwcm9wZXJ0eSBpc0xvYWRpbmcKLSAgICBAdHlwZSB7Qm9vbGVhbn0KLSAgICBAcmVhZE9ubHkK
LSAgKi8KLSAgaXNMb2FkaW5nOiByZXRyaWV2ZUZyb21DdXJyZW50U3RhdGUsCi0gIC8qKgotICAg
IElmIHRoaXMgcHJvcGVydHkgaXMgYHRydWVgIHRoZSByZWNvcmQgaXMgaW4gdGhlIGBsb2FkZWRg
IHN0YXRlLiBBCi0gICAgcmVjb3JkIGVudGVycyB0aGlzIHN0YXRlIHdoZW4gaXRzIGRhdGEgaXMg
cG9wdWxhdGVkLiBNb3N0IG9mIGEKLSAgICByZWNvcmQncyBsaWZlY3ljbGUgaXMgc3BlbnQgaW5z
aWRlIHN1YnN0YXRlcyBvZiB0aGUgYGxvYWRlZGAKLSAgICBzdGF0ZS4KLQotICAgIEV4YW1wbGUK
LQotICAgIGBgYGphdmFzY3JpcHQKLSAgICB2YXIgcmVjb3JkID0gc3RvcmUuY3JlYXRlUmVjb3Jk
KEFwcC5Nb2RlbCk7Ci0gICAgcmVjb3JkLmdldCgnaXNMb2FkZWQnKTsgLy8gdHJ1ZQotCi0gICAg
c3RvcmUuZmluZCgnbW9kZWwnLCAxKS50aGVuKGZ1bmN0aW9uKG1vZGVsKSB7Ci0gICAgICBtb2Rl
bC5nZXQoJ2lzTG9hZGVkJyk7IC8vIHRydWUKLSAgICB9KTsKLSAgICBgYGAKLQotICAgIEBwcm9w
ZXJ0eSBpc0xvYWRlZAotICAgIEB0eXBlIHtCb29sZWFufQotICAgIEByZWFkT25seQotICAqLwot
ICBpc0xvYWRlZDogcmV0cmlldmVGcm9tQ3VycmVudFN0YXRlLAotICAvKioKLSAgICBJZiB0aGlz
IHByb3BlcnR5IGlzIGB0cnVlYCB0aGUgcmVjb3JkIGlzIGluIHRoZSBgZGlydHlgIHN0YXRlLiBU
aGUKLSAgICByZWNvcmQgaGFzIGxvY2FsIGNoYW5nZXMgdGhhdCBoYXZlIG5vdCB5ZXQgYmVlbiBz
YXZlZCBieSB0aGUKLSAgICBhZGFwdGVyLiBUaGlzIGluY2x1ZGVzIHJlY29yZHMgdGhhdCBoYXZl
IGJlZW4gY3JlYXRlZCAoYnV0IG5vdCB5ZXQKLSAgICBzYXZlZCkgb3IgZGVsZXRlZC4KLQotICAg
IEV4YW1wbGUKLQotICAgIGBgYGphdmFzY3JpcHQKLSAgICB2YXIgcmVjb3JkID0gc3RvcmUuY3Jl
YXRlUmVjb3JkKEFwcC5Nb2RlbCk7Ci0gICAgcmVjb3JkLmdldCgnaXNEaXJ0eScpOyAvLyB0cnVl
Ci0KLSAgICBzdG9yZS5maW5kKCdtb2RlbCcsIDEpLnRoZW4oZnVuY3Rpb24obW9kZWwpIHsKLSAg
ICAgIG1vZGVsLmdldCgnaXNEaXJ0eScpOyAvLyBmYWxzZQotICAgICAgbW9kZWwuc2V0KCdmb28n
LCAnc29tZSB2YWx1ZScpOwotICAgICAgbW9kZWwuc2V0KCdpc0RpcnR5Jyk7IC8vIHRydWUKLSAg
ICB9KTsKLSAgICBgYGAKLQotICAgIEBwcm9wZXJ0eSBpc0RpcnR5Ci0gICAgQHR5cGUge0Jvb2xl
YW59Ci0gICAgQHJlYWRPbmx5Ci0gICovCi0gIGlzRGlydHk6IHJldHJpZXZlRnJvbUN1cnJlbnRT
dGF0ZSwKLSAgLyoqCi0gICAgSWYgdGhpcyBwcm9wZXJ0eSBpcyBgdHJ1ZWAgdGhlIHJlY29yZCBp
cyBpbiB0aGUgYHNhdmluZ2Agc3RhdGUuIEEKLSAgICByZWNvcmQgZW50ZXJzIHRoZSBzYXZpbmcg
c3RhdGUgd2hlbiBgc2F2ZWAgaXMgY2FsbGVkLCBidXQgdGhlCi0gICAgYWRhcHRlciBoYXMgbm90
IHlldCBhY2tub3dsZWRnZWQgdGhhdCB0aGUgY2hhbmdlcyBoYXZlIGJlZW4KLSAgICBwZXJzaXN0
ZWQgdG8gdGhlIGJhY2tlbmQuCi0KLSAgICBFeGFtcGxlCi0KLSAgICBgYGBqYXZhc2NyaXB0Ci0g
ICAgdmFyIHJlY29yZCA9IHN0b3JlLmNyZWF0ZVJlY29yZChBcHAuTW9kZWwpOwotICAgIHJlY29y
ZC5nZXQoJ2lzU2F2aW5nJyk7IC8vIGZhbHNlCi0gICAgdmFyIHByb21pc2UgPSByZWNvcmQuc2F2
ZSgpOwotICAgIHJlY29yZC5nZXQoJ2lzU2F2aW5nJyk7IC8vIHRydWUKLSAgICBwcm9taXNlLnRo
ZW4oZnVuY3Rpb24oKSB7Ci0gICAgICByZWNvcmQuZ2V0KCdpc1NhdmluZycpOyAvLyBmYWxzZQot
ICAgIH0pOwotICAgIGBgYAotCi0gICAgQHByb3BlcnR5IGlzU2F2aW5nCi0gICAgQHR5cGUge0Jv
b2xlYW59Ci0gICAgQHJlYWRPbmx5Ci0gICovCi0gIGlzU2F2aW5nOiByZXRyaWV2ZUZyb21DdXJy
ZW50U3RhdGUsCi0gIC8qKgotICAgIElmIHRoaXMgcHJvcGVydHkgaXMgYHRydWVgIHRoZSByZWNv
cmQgaXMgaW4gdGhlIGBkZWxldGVkYCBzdGF0ZQotICAgIGFuZCBoYXMgYmVlbiBtYXJrZWQgZm9y
IGRlbGV0aW9uLiBXaGVuIGBpc0RlbGV0ZWRgIGlzIHRydWUgYW5kCi0gICAgYGlzRGlydHlgIGlz
IHRydWUsIHRoZSByZWNvcmQgaXMgZGVsZXRlZCBsb2NhbGx5IGJ1dCB0aGUgZGVsZXRpb24KLSAg
ICB3YXMgbm90IHlldCBwZXJzaXN0ZWQuIFdoZW4gYGlzU2F2aW5nYCBpcyB0cnVlLCB0aGUgY2hh
bmdlIGlzCi0gICAgaW4tZmxpZ2h0LiBXaGVuIGJvdGggYGlzRGlydHlgIGFuZCBgaXNTYXZpbmdg
IGFyZSBmYWxzZSwgdGhlCi0gICAgY2hhbmdlIGhhcyBwZXJzaXN0ZWQuCi0KLSAgICBFeGFtcGxl
Ci0KLSAgICBgYGBqYXZhc2NyaXB0Ci0gICAgdmFyIHJlY29yZCA9IHN0b3JlLmNyZWF0ZVJlY29y
ZChBcHAuTW9kZWwpOwotICAgIHJlY29yZC5nZXQoJ2lzRGVsZXRlZCcpOyAvLyBmYWxzZQotICAg
IHJlY29yZC5kZWxldGVSZWNvcmQoKTsKLSAgICByZWNvcmQuZ2V0KCdpc0RlbGV0ZWQnKTsgLy8g
dHJ1ZQotICAgIGBgYAotCi0gICAgQHByb3BlcnR5IGlzRGVsZXRlZAotICAgIEB0eXBlIHtCb29s
ZWFufQotICAgIEByZWFkT25seQotICAqLwotICBpc0RlbGV0ZWQ6IHJldHJpZXZlRnJvbUN1cnJl
bnRTdGF0ZSwKLSAgLyoqCi0gICAgSWYgdGhpcyBwcm9wZXJ0eSBpcyBgdHJ1ZWAgdGhlIHJlY29y
ZCBpcyBpbiB0aGUgYG5ld2Agc3RhdGUuIEEKLSAgICByZWNvcmQgd2lsbCBiZSBpbiB0aGUgYG5l
d2Agc3RhdGUgd2hlbiBpdCBoYXMgYmVlbiBjcmVhdGVkIG9uIHRoZQotICAgIGNsaWVudCBhbmQg
dGhlIGFkYXB0ZXIgaGFzIG5vdCB5ZXQgcmVwb3J0IHRoYXQgaXQgd2FzIHN1Y2Nlc3NmdWxseQot
ICAgIHNhdmVkLgotCi0gICAgRXhhbXBsZQotCi0gICAgYGBgamF2YXNjcmlwdAotICAgIHZhciBy
ZWNvcmQgPSBzdG9yZS5jcmVhdGVSZWNvcmQoQXBwLk1vZGVsKTsKLSAgICByZWNvcmQuZ2V0KCdp
c05ldycpOyAvLyB0cnVlCi0KLSAgICByZWNvcmQuc2F2ZSgpLnRoZW4oZnVuY3Rpb24obW9kZWwp
IHsKLSAgICAgIG1vZGVsLmdldCgnaXNOZXcnKTsgLy8gZmFsc2UKLSAgICB9KTsKLSAgICBgYGAK
LQotICAgIEBwcm9wZXJ0eSBpc05ldwotICAgIEB0eXBlIHtCb29sZWFufQotICAgIEByZWFkT25s
eQotICAqLwotICBpc05ldzogcmV0cmlldmVGcm9tQ3VycmVudFN0YXRlLAotICAvKioKLSAgICBJ
ZiB0aGlzIHByb3BlcnR5IGlzIGB0cnVlYCB0aGUgcmVjb3JkIGlzIGluIHRoZSBgdmFsaWRgIHN0
YXRlLiBBCi0gICAgcmVjb3JkIHdpbGwgYmUgaW4gdGhlIGB2YWxpZGAgc3RhdGUgd2hlbiBubyBj
bGllbnQtc2lkZQotICAgIHZhbGlkYXRpb25zIGhhdmUgZmFpbGVkIGFuZCB0aGUgYWRhcHRlciBk
aWQgbm90IHJlcG9ydCBhbnkKLSAgICBzZXJ2ZXItc2lkZSB2YWxpZGF0aW9uIGZhaWx1cmVzLgot
Ci0gICAgQHByb3BlcnR5IGlzVmFsaWQKLSAgICBAdHlwZSB7Qm9vbGVhbn0KLSAgICBAcmVhZE9u
bHkKLSAgKi8KLSAgaXNWYWxpZDogcmV0cmlldmVGcm9tQ3VycmVudFN0YXRlLAotICAvKioKLSAg
ICBJZiB0aGUgcmVjb3JkIGlzIGluIHRoZSBkaXJ0eSBzdGF0ZSB0aGlzIHByb3BlcnR5IHdpbGwg
cmVwb3J0IHdoYXQKLSAgICBraW5kIG9mIGNoYW5nZSBoYXMgY2F1c2VkIGl0IHRvIG1vdmUgaW50
byB0aGUgZGlydHkKLSAgICBzdGF0ZS4gUG9zc2libGUgdmFsdWVzIGFyZToKLQotICAgIC0gYGNy
ZWF0ZWRgIFRoZSByZWNvcmQgaGFzIGJlZW4gY3JlYXRlZCBieSB0aGUgY2xpZW50IGFuZCBub3Qg
eWV0IHNhdmVkIHRvIHRoZSBhZGFwdGVyLgotICAgIC0gYHVwZGF0ZWRgIFRoZSByZWNvcmQgaGFz
IGJlZW4gdXBkYXRlZCBieSB0aGUgY2xpZW50IGFuZCBub3QgeWV0IHNhdmVkIHRvIHRoZSBhZGFw
dGVyLgotICAgIC0gYGRlbGV0ZWRgIFRoZSByZWNvcmQgaGFzIGJlZW4gZGVsZXRlZCBieSB0aGUg
Y2xpZW50IGFuZCBub3QgeWV0IHNhdmVkIHRvIHRoZSBhZGFwdGVyLgotCi0gICAgRXhhbXBsZQot
Ci0gICAgYGBgamF2YXNjcmlwdAotICAgIHZhciByZWNvcmQgPSBzdG9yZS5jcmVhdGVSZWNvcmQo
QXBwLk1vZGVsKTsKLSAgICByZWNvcmQuZ2V0KCdkaXJ0eVR5cGUnKTsgLy8gJ2NyZWF0ZWQnCi0g
ICAgYGBgCi0KLSAgICBAcHJvcGVydHkgZGlydHlUeXBlCi0gICAgQHR5cGUge1N0cmluZ30KLSAg
ICBAcmVhZE9ubHkKLSAgKi8KLSAgZGlydHlUeXBlOiByZXRyaWV2ZUZyb21DdXJyZW50U3RhdGUs
Ci0KLSAgLyoqCi0gICAgSWYgYHRydWVgIHRoZSBhZGFwdGVyIHJlcG9ydGVkIHRoYXQgaXQgd2Fz
IHVuYWJsZSB0byBzYXZlIGxvY2FsCi0gICAgY2hhbmdlcyB0byB0aGUgYmFja2VuZC4gVGhpcyBt
YXkgYWxzbyByZXN1bHQgaW4gdGhlIHJlY29yZCBoYXZpbmcKLSAgICBpdHMgYGlzVmFsaWRgIHBy
b3BlcnR5IGJlY29tZSBmYWxzZSBpZiB0aGUgYWRhcHRlciByZXBvcnRlZCB0aGF0Ci0gICAgc2Vy
dmVyLXNpZGUgdmFsaWRhdGlvbnMgZmFpbGVkLgotCi0gICAgRXhhbXBsZQotCi0gICAgYGBgamF2
YXNjcmlwdAotICAgIHJlY29yZC5nZXQoJ2lzRXJyb3InKTsgLy8gZmFsc2UKLSAgICByZWNvcmQu
c2V0KCdmb28nLCAnaW52YWxpZCB2YWx1ZScpOwotICAgIHJlY29yZC5zYXZlKCkudGhlbihudWxs
LCBmdW5jdGlvbigpIHsKLSAgICAgIHJlY29yZC5nZXQoJ2lzRXJyb3InKTsgLy8gdHJ1ZQotICAg
IH0pOwotICAgIGBgYAotCi0gICAgQHByb3BlcnR5IGlzRXJyb3IKLSAgICBAdHlwZSB7Qm9vbGVh
bn0KLSAgICBAcmVhZE9ubHkKLSAgKi8KLSAgaXNFcnJvcjogZmFsc2UsCi0gIC8qKgotICAgIElm
IGB0cnVlYCB0aGUgc3RvcmUgaXMgYXR0ZW1wdGluZyB0byByZWxvYWQgdGhlIHJlY29yZCBmb3Jt
IHRoZSBhZGFwdGVyLgotCi0gICAgRXhhbXBsZQotCi0gICAgYGBgamF2YXNjcmlwdAotICAgIHJl
Y29yZC5nZXQoJ2lzUmVsb2FkaW5nJyk7IC8vIGZhbHNlCi0gICAgcmVjb3JkLnJlbG9hZCgpOwot
ICAgIHJlY29yZC5nZXQoJ2lzUmVsb2FkaW5nJyk7IC8vIHRydWUKLSAgICBgYGAKLQotICAgIEBw
cm9wZXJ0eSBpc1JlbG9hZGluZwotICAgIEB0eXBlIHtCb29sZWFufQotICAgIEByZWFkT25seQot
ICAqLwotICBpc1JlbG9hZGluZzogZmFsc2UsCi0KLSAgLyoqCi0gICAgVGhlIGBjbGllbnRJZGAg
cHJvcGVydHkgaXMgYSB0cmFuc2llbnQgbnVtZXJpY2FsIGlkZW50aWZpZXIKLSAgICBnZW5lcmF0
ZWQgYXQgcnVudGltZSBieSB0aGUgZGF0YSBzdG9yZS4gSXQgaXMgaW1wb3J0YW50Ci0gICAgcHJp
bWFyaWx5IGJlY2F1c2UgbmV3bHkgY3JlYXRlZCBvYmplY3RzIG1heSBub3QgeWV0IGhhdmUgYW4K
LSAgICBleHRlcm5hbGx5IGdlbmVyYXRlZCBpZC4KLQotICAgIEBwcm9wZXJ0eSBjbGllbnRJZAot
ICAgIEBwcml2YXRlCi0gICAgQHR5cGUge051bWJlcnxTdHJpbmd9Ci0gICovCi0gIGNsaWVudElk
OiBudWxsLAotICAvKioKLSAgICBBbGwgZW1iZXIgbW9kZWxzIGhhdmUgYW4gaWQgcHJvcGVydHku
IFRoaXMgaXMgYW4gaWRlbnRpZmllcgotICAgIG1hbmFnZWQgYnkgYW4gZXh0ZXJuYWwgc291cmNl
LiBUaGVzZSBhcmUgYWx3YXlzIGNvZXJjZWQgdG8gYmUKLSAgICBzdHJpbmdzIGJlZm9yZSBiZWlu
ZyB1c2VkIGludGVybmFsbHkuIE5vdGUgd2hlbiBkZWNsYXJpbmcgdGhlCi0gICAgYXR0cmlidXRl
cyBmb3IgYSBtb2RlbCBpdCBpcyBhbiBlcnJvciB0byBkZWNsYXJlIGFuIGlkCi0gICAgYXR0cmli
dXRlLgotCi0gICAgYGBgamF2YXNjcmlwdAotICAgIHZhciByZWNvcmQgPSBzdG9yZS5jcmVhdGVS
ZWNvcmQoQXBwLk1vZGVsKTsKLSAgICByZWNvcmQuZ2V0KCdpZCcpOyAvLyBudWxsCi0KLSAgICBz
dG9yZS5maW5kKCdtb2RlbCcsIDEpLnRoZW4oZnVuY3Rpb24obW9kZWwpIHsKLSAgICAgIG1vZGVs
LmdldCgnaWQnKTsgLy8gJzEnCi0gICAgfSk7Ci0gICAgYGBgCi0KLSAgICBAcHJvcGVydHkgaWQK
LSAgICBAdHlwZSB7U3RyaW5nfQotICAqLwotICBpZDogbnVsbCwKLSAgdHJhbnNhY3Rpb246IG51
bGwsCi0gIC8qKgotICAgIEBwcm9wZXJ0eSBjdXJyZW50U3RhdGUKLSAgICBAcHJpdmF0ZQotICAg
IEB0eXBlIHtPYmplY3R9Ci0gICovCi0gIGN1cnJlbnRTdGF0ZTogbnVsbCwKLSAgLyoqCi0gICAg
V2hlbiB0aGUgcmVjb3JkIGlzIGluIHRoZSBgaW52YWxpZGAgc3RhdGUgdGhpcyBvYmplY3Qgd2ls
bCBjb250YWluCi0gICAgYW55IGVycm9ycyByZXR1cm5lZCBieSB0aGUgYWRhcHRlci4gV2hlbiBw
cmVzZW50IHRoZSBlcnJvcnMgaGFzaAotICAgIHR5cGljYWxseSBjb250YWlucyBrZXlzIGNvcnJl
c3BvbmRpbmcgdG8gdGhlIGludmFsaWQgcHJvcGVydHkgbmFtZXMKLSAgICBhbmQgdmFsdWVzIHdo
aWNoIGFyZSBhbiBhcnJheSBvZiBlcnJvciBtZXNzYWdlcy4KLQotICAgIGBgYGphdmFzY3JpcHQK
LSAgICByZWNvcmQuZ2V0KCdlcnJvcnMubGVuZ3RoJyk7IC8vIDAKLSAgICByZWNvcmQuc2V0KCdm
b28nLCAnaW52YWxpZCB2YWx1ZScpOwotICAgIHJlY29yZC5zYXZlKCkudGhlbihudWxsLCBmdW5j
dGlvbigpIHsKLSAgICAgIHJlY29yZC5nZXQoJ2Vycm9ycycpLmdldCgnZm9vJyk7IC8vIFsnZm9v
IHNob3VsZCBiZSBhIG51bWJlci4nXQotICAgIH0pOwotICAgIGBgYAotCi0gICAgQHByb3BlcnR5
IGVycm9ycwotICAgIEB0eXBlIHtPYmplY3R9Ci0gICovCi0gIGVycm9yczogbnVsbCwKLQotICAv
KioKLSAgICBDcmVhdGUgYSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIHRoZSByZWNvcmQsIHVzaW5n
IHRoZSBzZXJpYWxpemF0aW9uCi0gICAgc3RyYXRlZ3kgb2YgdGhlIHN0b3JlJ3MgYWRhcHRlci4K
LQotICAgYHNlcmlhbGl6ZWAgdGFrZXMgYW4gb3B0aW9uYWwgaGFzaCBhcyBhIHBhcmFtZXRlciwg
Y3VycmVudGx5Ci0gICAgc3VwcG9ydGVkIG9wdGlvbnMgYXJlOgotCi0gICAtIGBpbmNsdWRlSWRg
OiBgdHJ1ZWAgaWYgdGhlIHJlY29yZCdzIElEIHNob3VsZCBiZSBpbmNsdWRlZCBpbiB0aGUKLSAg
ICAgIEpTT04gcmVwcmVzZW50YXRpb24uCi0KLSAgICBAbWV0aG9kIHNlcmlhbGl6ZQotICAgIEBw
YXJhbSB7T2JqZWN0fSBvcHRpb25zCi0gICAgQHJldHVybnMge09iamVjdH0gYW4gb2JqZWN0IHdo
b3NlIHZhbHVlcyBhcmUgcHJpbWl0aXZlIEpTT04gdmFsdWVzIG9ubHkKLSAgKi8KLSAgc2VyaWFs
aXplOiBmdW5jdGlvbihvcHRpb25zKSB7Ci0gICAgdmFyIHN0b3JlID0gZ2V0KHRoaXMsICdzdG9y
ZScpOwotICAgIHJldHVybiBzdG9yZS5zZXJpYWxpemUodGhpcywgb3B0aW9ucyk7Ci0gIH0sCi0K
LSAgLyoqCi0gICAgVXNlIFtEUy5KU09OU2VyaWFsaXplcl0oRFMuSlNPTlNlcmlhbGl6ZXIuaHRt
bCkgdG8KLSAgICBnZXQgdGhlIEpTT04gcmVwcmVzZW50YXRpb24gb2YgYSByZWNvcmQuCi0KLSAg
ICBgdG9KU09OYCB0YWtlcyBhbiBvcHRpb25hbCBoYXNoIGFzIGEgcGFyYW1ldGVyLCBjdXJyZW50
bHkKLSAgICBzdXBwb3J0ZWQgb3B0aW9ucyBhcmU6Ci0KLSAgICAtIGBpbmNsdWRlSWRgOiBgdHJ1
ZWAgaWYgdGhlIHJlY29yZCdzIElEIHNob3VsZCBiZSBpbmNsdWRlZCBpbiB0aGUKLSAgICAgIEpT
T04gcmVwcmVzZW50YXRpb24uCi0KLSAgICBAbWV0aG9kIHRvSlNPTgotICAgIEBwYXJhbSB7T2Jq
ZWN0fSBvcHRpb25zCi0gICAgQHJldHVybnMge09iamVjdH0gQSBKU09OIHJlcHJlc2VudGF0aW9u
IG9mIHRoZSBvYmplY3QuCi0gICovCi0gIHRvSlNPTjogZnVuY3Rpb24ob3B0aW9ucykgewotICAg
IC8vIGNvbnRhaW5lciBpcyBmb3IgbGF6eSB0cmFuc2Zvcm0gbG9va3VwcwotICAgIHZhciBzZXJp
YWxpemVyID0gRFMuSlNPTlNlcmlhbGl6ZXIuY3JlYXRlKHsgY29udGFpbmVyOiB0aGlzLmNvbnRh
aW5lciB9KTsKLSAgICByZXR1cm4gc2VyaWFsaXplci5zZXJpYWxpemUodGhpcywgb3B0aW9ucyk7
Ci0gIH0sCi0KLSAgLyoqCi0gICAgRmlyZWQgd2hlbiB0aGUgcmVjb3JkIGlzIGxvYWRlZCBmcm9t
IHRoZSBzZXJ2ZXIuCi0KLSAgICBAZXZlbnQgZGlkTG9hZAotICAqLwotICBkaWRMb2FkOiBFbWJl
ci5LLAotCi0gIC8qKgotICAgIEZpcmVkIHdoZW4gdGhlIHJlY29yZCBpcyB1cGRhdGVkLgotCi0g
ICAgQGV2ZW50IGRpZFVwZGF0ZQotICAqLwotICBkaWRVcGRhdGU6IEVtYmVyLkssCi0KLSAgLyoq
Ci0gICAgRmlyZWQgd2hlbiB0aGUgcmVjb3JkIGlzIGNyZWF0ZWQuCi0KLSAgICBAZXZlbnQgZGlk
Q3JlYXRlCi0gICovCi0gIGRpZENyZWF0ZTogRW1iZXIuSywKLQotICAvKioKLSAgICBGaXJlZCB3
aGVuIHRoZSByZWNvcmQgaXMgZGVsZXRlZC4KLQotICAgIEBldmVudCBkaWREZWxldGUKLSAgKi8K
LSAgZGlkRGVsZXRlOiBFbWJlci5LLAotCi0gIC8qKgotICAgIEZpcmVkIHdoZW4gdGhlIHJlY29y
ZCBiZWNvbWVzIGludmFsaWQuCi0KLSAgICBAZXZlbnQgYmVjYW1lSW52YWxpZAotICAqLwotICBi
ZWNhbWVJbnZhbGlkOiBFbWJlci5LLAotCi0gIC8qKgotICAgIEZpcmVkIHdoZW4gdGhlIHJlY29y
ZCBlbnRlcnMgdGhlIGVycm9yIHN0YXRlLgotCi0gICAgQGV2ZW50IGJlY2FtZUVycm9yCi0gICov
Ci0gIGJlY2FtZUVycm9yOiBFbWJlci5LLAotCi0gIC8qKgotICAgIEBwcm9wZXJ0eSBkYXRhCi0g
ICAgQHByaXZhdGUKLSAgICBAdHlwZSB7T2JqZWN0fQotICAqLwotICBkYXRhOiBFbWJlci5jb21w
dXRlZChmdW5jdGlvbigpIHsKLSAgICB0aGlzLl9kYXRhID0gdGhpcy5fZGF0YSB8fCB7fTsKLSAg
ICByZXR1cm4gdGhpcy5fZGF0YTsKLSAgfSkucHJvcGVydHkoKSwKLQotICBfZGF0YTogbnVsbCwK
LQotICBpbml0OiBmdW5jdGlvbigpIHsKLSAgICBzZXQodGhpcywgJ2N1cnJlbnRTdGF0ZScsIERT
LlJvb3RTdGF0ZS5lbXB0eSk7Ci0gICAgdmFyIGVycm9ycyA9IERTLkVycm9ycy5jcmVhdGUoKTsK
LSAgICBlcnJvcnMucmVnaXN0ZXJIYW5kbGVycyh0aGlzLCBmdW5jdGlvbigpIHsKLSAgICAgIHRo
aXMuc2VuZCgnYmVjYW1lSW52YWxpZCcpOwotICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgdGhp
cy5zZW5kKCdiZWNhbWVWYWxpZCcpOwotICAgIH0pOwotICAgIHNldCh0aGlzLCAnZXJyb3JzJywg
ZXJyb3JzKTsKLSAgICB0aGlzLl9zdXBlcigpOwotICAgIHRoaXMuX3NldHVwKCk7Ci0gIH0sCi0K
LSAgX3NldHVwOiBmdW5jdGlvbigpIHsKLSAgICB0aGlzLl9jaGFuZ2VzVG9TeW5jID0ge307Ci0g
ICAgdGhpcy5fZGVmZXJyZWRUcmlnZ2VycyA9IFtdOwotICAgIHRoaXMuX2RhdGEgPSB7fTsKLSAg
ICB0aGlzLl9hdHRyaWJ1dGVzID0ge307Ci0gICAgdGhpcy5faW5GbGlnaHRBdHRyaWJ1dGVzID0g
e307Ci0gICAgdGhpcy5fcmVsYXRpb25zaGlwcyA9IHt9OwotICB9LAotCi0gIC8qKgotICAgIEBt
ZXRob2Qgc2VuZAotICAgIEBwcml2YXRlCi0gICAgQHBhcmFtIHtTdHJpbmd9IG5hbWUKLSAgICBA
cGFyYW0ge09iamVjdH0gY29udGV4dAotICAqLwotICBzZW5kOiBmdW5jdGlvbihuYW1lLCBjb250
ZXh0KSB7Ci0gICAgdmFyIGN1cnJlbnRTdGF0ZSA9IGdldCh0aGlzLCAnY3VycmVudFN0YXRlJyk7
Ci0KLSAgICBpZiAoIWN1cnJlbnRTdGF0ZVtuYW1lXSkgewotICAgICAgdGhpcy5fdW5oYW5kbGVk
RXZlbnQoY3VycmVudFN0YXRlLCBuYW1lLCBjb250ZXh0KTsKLSAgICB9Ci0KLSAgICByZXR1cm4g
Y3VycmVudFN0YXRlW25hbWVdKHRoaXMsIGNvbnRleHQpOwotICB9LAotCi0gIC8qKgotICAgIEBt
ZXRob2QgdHJhbnNpdGlvblRvCi0gICAgQHByaXZhdGUKLSAgICBAcGFyYW0ge1N0cmluZ30gbmFt
ZQotICAqLwotICB0cmFuc2l0aW9uVG86IGZ1bmN0aW9uKG5hbWUpIHsKLSAgICAvLyBQT1NTSUJM
RSBUT0RPOiBSZW1vdmUgdGhpcyBjb2RlIGFuZCByZXBsYWNlIHdpdGgKLSAgICAvLyBhbHdheXMg
aGF2aW5nIGRpcmVjdCByZWZlcmVuY2VzIHRvIHN0YXRlIG9iamVjdHMKLQotICAgIHZhciBwaXZv
dE5hbWUgPSBuYW1lLnNwbGl0KCIuIiwgMSksCi0gICAgICAgIGN1cnJlbnRTdGF0ZSA9IGdldCh0
aGlzLCAnY3VycmVudFN0YXRlJyksCi0gICAgICAgIHN0YXRlID0gY3VycmVudFN0YXRlOwotCi0g
ICAgZG8gewotICAgICAgaWYgKHN0YXRlLmV4aXQpIHsgc3RhdGUuZXhpdCh0aGlzKTsgfQotICAg
ICAgc3RhdGUgPSBzdGF0ZS5wYXJlbnRTdGF0ZTsKLSAgICB9IHdoaWxlICghc3RhdGUuaGFzT3du
UHJvcGVydHkocGl2b3ROYW1lKSk7Ci0KLSAgICB2YXIgcGF0aCA9IG5hbWUuc3BsaXQoIi4iKTsK
LQotICAgIHZhciBzZXR1cHMgPSBbXSwgZW50ZXJzID0gW10sIGksIGw7Ci0KLSAgICBmb3IgKGk9
MCwgbD1wYXRoLmxlbmd0aDsgaTxsOyBpKyspIHsKLSAgICAgIHN0YXRlID0gc3RhdGVbcGF0aFtp
XV07Ci0KLSAgICAgIGlmIChzdGF0ZS5lbnRlcikgeyBlbnRlcnMucHVzaChzdGF0ZSk7IH0KLSAg
ICAgIGlmIChzdGF0ZS5zZXR1cCkgeyBzZXR1cHMucHVzaChzdGF0ZSk7IH0KLSAgICB9Ci0KLSAg
ICBmb3IgKGk9MCwgbD1lbnRlcnMubGVuZ3RoOyBpPGw7IGkrKykgewotICAgICAgZW50ZXJzW2ld
LmVudGVyKHRoaXMpOwotICAgIH0KLQotICAgIHNldCh0aGlzLCAnY3VycmVudFN0YXRlJywgc3Rh
dGUpOwotCi0gICAgZm9yIChpPTAsIGw9c2V0dXBzLmxlbmd0aDsgaTxsOyBpKyspIHsKLSAgICAg
IHNldHVwc1tpXS5zZXR1cCh0aGlzKTsKLSAgICB9Ci0KLSAgICB0aGlzLnVwZGF0ZVJlY29yZEFy
cmF5c0xhdGVyKCk7Ci0gIH0sCi0KLSAgX3VuaGFuZGxlZEV2ZW50OiBmdW5jdGlvbihzdGF0ZSwg
bmFtZSwgY29udGV4dCkgewotICAgIHZhciBlcnJvck1lc3NhZ2UgPSAiQXR0ZW1wdGVkIHRvIGhh
bmRsZSBldmVudCBgIiArIG5hbWUgKyAiYCAiOwotICAgIGVycm9yTWVzc2FnZSAgICArPSAib24g
IiArIFN0cmluZyh0aGlzKSArICIgd2hpbGUgaW4gc3RhdGUgIjsKLSAgICBlcnJvck1lc3NhZ2Ug
ICAgKz0gc3RhdGUuc3RhdGVOYW1lICsgIi4gIjsKLQotICAgIGlmIChjb250ZXh0ICE9PSB1bmRl
ZmluZWQpIHsKLSAgICAgIGVycm9yTWVzc2FnZSAgKz0gIkNhbGxlZCB3aXRoICIgKyBFbWJlci5p
bnNwZWN0KGNvbnRleHQpICsgIi4iOwotICAgIH0KLQotICAgIHRocm93IG5ldyBFbWJlci5FcnJv
cihlcnJvck1lc3NhZ2UpOwotICB9LAotCi0gIHdpdGhUcmFuc2FjdGlvbjogZnVuY3Rpb24oZm4p
IHsKLSAgICB2YXIgdHJhbnNhY3Rpb24gPSBnZXQodGhpcywgJ3RyYW5zYWN0aW9uJyk7Ci0gICAg
aWYgKHRyYW5zYWN0aW9uKSB7IGZuKHRyYW5zYWN0aW9uKTsgfQotICB9LAotCi0gIC8qKgotICAg
IEBtZXRob2QgbG9hZGluZ0RhdGEKLSAgICBAcHJpdmF0ZQotICAgIEBwYXJhbSB7UHJvbWlzZX0g
cHJvbWlzZQotICAqLwotICBsb2FkaW5nRGF0YTogZnVuY3Rpb24ocHJvbWlzZSkgewotICAgIHRo
aXMuc2VuZCgnbG9hZGluZ0RhdGEnLCBwcm9taXNlKTsKLSAgfSwKLQotICAvKioKLSAgICBAbWV0
aG9kIGxvYWRlZERhdGEKLSAgICBAcHJpdmF0ZQotICAqLwotICBsb2FkZWREYXRhOiBmdW5jdGlv
bigpIHsKLSAgICB0aGlzLnNlbmQoJ2xvYWRlZERhdGEnKTsKLSAgfSwKLQotICAvKioKLSAgICBA
bWV0aG9kIG5vdEZvdW5kCi0gICAgQHByaXZhdGUKLSAgKi8KLSAgbm90Rm91bmQ6IGZ1bmN0aW9u
KCkgewotICAgIHRoaXMuc2VuZCgnbm90Rm91bmQnKTsKLSAgfSwKLQotICAvKioKLSAgICBAbWV0
aG9kIHB1c2hlZERhdGEKLSAgICBAcHJpdmF0ZQotICAqLwotICBwdXNoZWREYXRhOiBmdW5jdGlv
bigpIHsKLSAgICB0aGlzLnNlbmQoJ3B1c2hlZERhdGEnKTsKLSAgfSwKLQotICAvKioKLSAgICBN
YXJrcyB0aGUgcmVjb3JkIGFzIGRlbGV0ZWQgYnV0IGRvZXMgbm90IHNhdmUgaXQuIFlvdSBtdXN0
IGNhbGwKLSAgICBgc2F2ZWAgYWZ0ZXJ3YXJkcyBpZiB5b3Ugd2FudCB0byBwZXJzaXN0IGl0LiBZ
b3UgbWlnaHQgdXNlIHRoaXMKLSAgICBtZXRob2QgaWYgeW91IHdhbnQgdG8gYWxsb3cgdGhlIHVz
ZXIgdG8gc3RpbGwgYHJvbGxiYWNrKClgIGEKLSAgICBkZWxldGUgYWZ0ZXIgaXQgd2FzIG1hZGUu
Ci0KLSAgICBFeGFtcGxlCi0KLSAgICBgYGBqYXZhc2NyaXB0Ci0gICAgQXBwLk1vZGVsRGVsZXRl
Um91dGUgPSBFbWJlci5Sb3V0ZS5leHRlbmQoewotICAgICAgYWN0aW9uczogewotICAgICAgICBz
b2Z0RGVsZXRlOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICB0aGlzLmdldCgnbW9kZWwnKS5kZWxl
dGVSZWNvcmQoKTsKLSAgICAgICAgfSwKLSAgICAgICAgY29uZmlybTogZnVuY3Rpb24oKSB7Ci0g
ICAgICAgICAgdGhpcy5nZXQoJ21vZGVsJykuc2F2ZSgpOwotICAgICAgICB9LAotICAgICAgICB1
bmRvOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICB0aGlzLmdldCgnbW9kZWwnKS5yb2xsYmFjaygp
OwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfSk7Ci0gICAgYGBgCi0KLSAgICBAbWV0aG9kIGRl
bGV0ZVJlY29yZAotICAqLwotICBkZWxldGVSZWNvcmQ6IGZ1bmN0aW9uKCkgewotICAgIHRoaXMu
c2VuZCgnZGVsZXRlUmVjb3JkJyk7Ci0gIH0sCi0KLSAgLyoqCi0gICAgU2FtZSBhcyBgZGVsZXRl
UmVjb3JkYCwgYnV0IHNhdmVzIHRoZSByZWNvcmQgaW1tZWRpYXRlbHkuCi0KLSAgICBFeGFtcGxl
Ci0KLSAgICBgYGBqYXZhc2NyaXB0Ci0gICAgQXBwLk1vZGVsRGVsZXRlUm91dGUgPSBFbWJlci5S
b3V0ZS5leHRlbmQoewotICAgICAgYWN0aW9uczogewotICAgICAgICBkZWxldGU6IGZ1bmN0aW9u
KCkgewotICAgICAgICAgIHZhciBjb250cm9sbGVyID0gdGhpcy5jb250cm9sbGVyOwotICAgICAg
ICAgIHRoaXMuZ2V0KCdtb2RlbCcpLmRlc3Ryb3lSZWNvcmQoKS50aGVuKGZ1bmN0aW9uKCkgewot
ICAgICAgICAgICAgY29udHJvbGxlci50cmFuc2l0aW9uVG9Sb3V0ZSgnbW9kZWwuaW5kZXgnKTsK
LSAgICAgICAgICB9KTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0pOwotICAgIGBgYAotCi0g
ICAgQG1ldGhvZCBkZXN0cm95UmVjb3JkCi0gICAgQHJldHVybiB7UHJvbWlzZX0gYSBwcm9taXNl
IHRoYXQgd2lsbCBiZSByZXNvbHZlZCB3aGVuIHRoZSBhZGFwdGVyIHJldHVybnMKLSAgICBzdWNj
ZXNzZnVsbHkgb3IgcmVqZWN0ZWQgaWYgdGhlIGFkYXB0ZXIgcmV0dXJucyB3aXRoIGFuIGVycm9y
LgotICAqLwotICBkZXN0cm95UmVjb3JkOiBmdW5jdGlvbigpIHsKLSAgICB0aGlzLmRlbGV0ZVJl
Y29yZCgpOwotICAgIHJldHVybiB0aGlzLnNhdmUoKTsKLSAgfSwKLQotICAvKioKLSAgICBAbWV0
aG9kIHVubG9hZFJlY29yZAotICAgIEBwcml2YXRlCi0gICovCi0gIHVubG9hZFJlY29yZDogZnVu
Y3Rpb24oKSB7Ci0gICAgRW1iZXIuYXNzZXJ0KCJZb3UgY2FuIG9ubHkgdW5sb2FkIGEgbG9hZGVk
LCBub24tZGlydHkgcmVjb3JkLiIsICFnZXQodGhpcywgJ2lzRGlydHknKSk7Ci0KLSAgICB0aGlz
LnNlbmQoJ3VubG9hZFJlY29yZCcpOwotICB9LAotCi0gIC8qKgotICAgIEBtZXRob2QgY2xlYXJS
ZWxhdGlvbnNoaXBzCi0gICAgQHByaXZhdGUKLSAgKi8KLSAgY2xlYXJSZWxhdGlvbnNoaXBzOiBm
dW5jdGlvbigpIHsKLSAgICB0aGlzLmVhY2hSZWxhdGlvbnNoaXAoZnVuY3Rpb24obmFtZSwgcmVs
YXRpb25zaGlwKSB7Ci0gICAgICBpZiAocmVsYXRpb25zaGlwLmtpbmQgPT09ICdiZWxvbmdzVG8n
KSB7Ci0gICAgICAgIHNldCh0aGlzLCBuYW1lLCBudWxsKTsKLSAgICAgIH0gZWxzZSBpZiAocmVs
YXRpb25zaGlwLmtpbmQgPT09ICdoYXNNYW55JykgewotICAgICAgICB2YXIgaGFzTWFueSA9IHRo
aXMuX3JlbGF0aW9uc2hpcHNbcmVsYXRpb25zaGlwLm5hbWVdOwotICAgICAgICBpZiAoaGFzTWFu
eSkgeyBoYXNNYW55LmNsZWFyKCk7IH0KLSAgICAgIH0KLSAgICB9LCB0aGlzKTsKLSAgfSwKLQot
ICAvKioKLSAgICBAbWV0aG9kIHVwZGF0ZVJlY29yZEFycmF5cwotICAgIEBwcml2YXRlCi0gICov
Ci0gIHVwZGF0ZVJlY29yZEFycmF5czogZnVuY3Rpb24oKSB7Ci0gICAgdGhpcy5fdXBkYXRpbmdS
ZWNvcmRBcnJheXNMYXRlciA9IGZhbHNlOwotICAgIGdldCh0aGlzLCAnc3RvcmUnKS5kYXRhV2Fz
VXBkYXRlZCh0aGlzLmNvbnN0cnVjdG9yLCB0aGlzKTsKLSAgfSwKLQotICAvKioKLSAgICBSZXR1
cm5zIGFuIG9iamVjdCwgd2hvc2Uga2V5cyBhcmUgY2hhbmdlZCBwcm9wZXJ0aWVzLCBhbmQgdmFs
dWUgaXMKLSAgICBhbiBbb2xkUHJvcCwgbmV3UHJvcF0gYXJyYXkuCi0KLSAgICBFeGFtcGxlCi0K
LSAgICBgYGBqYXZhc2NyaXB0Ci0gICAgQXBwLk1hc2NvdCA9IERTLk1vZGVsLmV4dGVuZCh7Ci0g
ICAgICBuYW1lOiBhdHRyKCdzdHJpbmcnKQotICAgIH0pOwotCi0gICAgdmFyIHBlcnNvbiA9IHN0
b3JlLmNyZWF0ZVJlY29yZCgncGVyc29uJyk7Ci0gICAgcGVyc29uLmNoYW5nZWRBdHRyaWJ1dGVz
KCk7IC8vIHt9Ci0gICAgcGVyc29uLnNldCgnbmFtZScsICdUb21zdGVyJyk7Ci0gICAgcGVyc29u
LmNoYW5nZWRBdHRyaWJ1dGVzKCk7IC8vIHtuYW1lOiBbdW5kZWZpbmVkLCAnVG9tc3RlciddfQot
ICAgIGBgYAotCi0gICAgQG1ldGhvZCBjaGFuZ2VkQXR0cmlidXRlcwotICAgIEByZXR1cm4ge09i
amVjdH0gYW4gb2JqZWN0LCB3aG9zZSBrZXlzIGFyZSBjaGFuZ2VkIHByb3BlcnRpZXMsCi0gICAg
ICBhbmQgdmFsdWUgaXMgYW4gW29sZFByb3AsIG5ld1Byb3BdIGFycmF5LgotICAqLwotICBjaGFu
Z2VkQXR0cmlidXRlczogZnVuY3Rpb24oKSB7Ci0gICAgdmFyIG9sZERhdGEgPSBnZXQodGhpcywg
J19kYXRhJyksCi0gICAgICAgIG5ld0RhdGEgPSBnZXQodGhpcywgJ19hdHRyaWJ1dGVzJyksCi0g
ICAgICAgIGRpZmZEYXRhID0ge30sCi0gICAgICAgIHByb3A7Ci0KLSAgICBmb3IgKHByb3AgaW4g
bmV3RGF0YSkgewotICAgICAgZGlmZkRhdGFbcHJvcF0gPSBbb2xkRGF0YVtwcm9wXSwgbmV3RGF0
YVtwcm9wXV07Ci0gICAgfQotCi0gICAgcmV0dXJuIGRpZmZEYXRhOwotICB9LAotCi0gIC8qKgot
ICAgIEBtZXRob2QgYWRhcHRlcldpbGxDb21taXQKLSAgICBAcHJpdmF0ZQotICAqLwotICBhZGFw
dGVyV2lsbENvbW1pdDogZnVuY3Rpb24oKSB7Ci0gICAgdGhpcy5zZW5kKCd3aWxsQ29tbWl0Jyk7
Ci0gIH0sCi0KLSAgLyoqCi0gICAgSWYgdGhlIGFkYXB0ZXIgZGlkIG5vdCByZXR1cm4gYSBoYXNo
IGluIHJlc3BvbnNlIHRvIGEgY29tbWl0LAotICAgIG1lcmdlIHRoZSBjaGFuZ2VkIGF0dHJpYnV0
ZXMgYW5kIHJlbGF0aW9uc2hpcHMgaW50byB0aGUgZXhpc3RpbmcKLSAgICBzYXZlZCBkYXRhLgot
Ci0gICAgQG1ldGhvZCBhZGFwdGVyRGlkQ29tbWl0Ci0gICovCi0gIGFkYXB0ZXJEaWRDb21taXQ6
IGZ1bmN0aW9uKGRhdGEpIHsKLSAgICBzZXQodGhpcywgJ2lzRXJyb3InLCBmYWxzZSk7Ci0KLSAg
ICBpZiAoZGF0YSkgewotICAgICAgdGhpcy5fZGF0YSA9IGRhdGE7Ci0gICAgfSBlbHNlIHsKLSAg
ICAgIEVtYmVyLm1peGluKHRoaXMuX2RhdGEsIHRoaXMuX2luRmxpZ2h0QXR0cmlidXRlcyk7Ci0g
ICAgfQotCi0gICAgdGhpcy5faW5GbGlnaHRBdHRyaWJ1dGVzID0ge307Ci0KLSAgICB0aGlzLnNl
bmQoJ2RpZENvbW1pdCcpOwotICAgIHRoaXMudXBkYXRlUmVjb3JkQXJyYXlzTGF0ZXIoKTsKLQot
ICAgIGlmICghZGF0YSkgeyByZXR1cm47IH0KLQotICAgIHRoaXMuc3VzcGVuZFJlbGF0aW9uc2hp
cE9ic2VydmVycyhmdW5jdGlvbigpIHsKLSAgICAgIHRoaXMubm90aWZ5UHJvcGVydHlDaGFuZ2Uo
J2RhdGEnKTsKLSAgICB9KTsKLSAgfSwKLQotICAvKioKLSAgICBAbWV0aG9kIGFkYXB0ZXJEaWRE
aXJ0eQotICAgIEBwcml2YXRlCi0gICovCi0gIGFkYXB0ZXJEaWREaXJ0eTogZnVuY3Rpb24oKSB7
Ci0gICAgdGhpcy5zZW5kKCdiZWNvbWVEaXJ0eScpOwotICAgIHRoaXMudXBkYXRlUmVjb3JkQXJy
YXlzTGF0ZXIoKTsKLSAgfSwKLQotICBkYXRhRGlkQ2hhbmdlOiBFbWJlci5vYnNlcnZlcihmdW5j
dGlvbigpIHsKLSAgICB0aGlzLnJlbG9hZEhhc01hbnlzKCk7Ci0gIH0sICdkYXRhJyksCi0KLSAg
cmVsb2FkSGFzTWFueXM6IGZ1bmN0aW9uKCkgewotICAgIHZhciByZWxhdGlvbnNoaXBzID0gZ2V0
KHRoaXMuY29uc3RydWN0b3IsICdyZWxhdGlvbnNoaXBzQnlOYW1lJyk7Ci0gICAgdGhpcy51cGRh
dGVSZWNvcmRBcnJheXNMYXRlcigpOwotICAgIHJlbGF0aW9uc2hpcHMuZm9yRWFjaChmdW5jdGlv
bihuYW1lLCByZWxhdGlvbnNoaXApIHsKLSAgICAgIGlmICh0aGlzLl9kYXRhLmxpbmtzICYmIHRo
aXMuX2RhdGEubGlua3NbbmFtZV0pIHsgcmV0dXJuOyB9Ci0gICAgICBpZiAocmVsYXRpb25zaGlw
LmtpbmQgPT09ICdoYXNNYW55JykgewotICAgICAgICB0aGlzLmhhc01hbnlEaWRDaGFuZ2UocmVs
YXRpb25zaGlwLmtleSk7Ci0gICAgICB9Ci0gICAgfSwgdGhpcyk7Ci0gIH0sCi0KLSAgaGFzTWFu
eURpZENoYW5nZTogZnVuY3Rpb24oa2V5KSB7Ci0gICAgdmFyIGhhc01hbnkgPSB0aGlzLl9yZWxh
dGlvbnNoaXBzW2tleV07Ci0KLSAgICBpZiAoaGFzTWFueSkgewotICAgICAgdmFyIHJlY29yZHMg
PSB0aGlzLl9kYXRhW2tleV0gfHwgW107Ci0KLSAgICAgIHNldChoYXNNYW55LCAnY29udGVudCcs
IEVtYmVyLkEocmVjb3JkcykpOwotICAgICAgc2V0KGhhc01hbnksICdpc0xvYWRlZCcsIHRydWUp
OwotICAgICAgaGFzTWFueS50cmlnZ2VyKCdkaWRMb2FkJyk7Ci0gICAgfQotICB9LAotCi0gIC8q
KgotICAgIEBtZXRob2QgdXBkYXRlUmVjb3JkQXJyYXlzTGF0ZXIKLSAgICBAcHJpdmF0ZQotICAq
LwotICB1cGRhdGVSZWNvcmRBcnJheXNMYXRlcjogZnVuY3Rpb24oKSB7Ci0gICAgLy8gcXVpY2sg
aGFjayAoc29tZXRoaW5nIGxpa2UgdGhpcyBjb3VsZCBiZSBwdXNoZWQgaW50byBydW4ub25jZQot
ICAgIGlmICh0aGlzLl91cGRhdGluZ1JlY29yZEFycmF5c0xhdGVyKSB7IHJldHVybjsgfQotICAg
IHRoaXMuX3VwZGF0aW5nUmVjb3JkQXJyYXlzTGF0ZXIgPSB0cnVlOwotCi0gICAgRW1iZXIucnVu
LnNjaGVkdWxlKCdhY3Rpb25zJywgdGhpcywgdGhpcy51cGRhdGVSZWNvcmRBcnJheXMpOwotICB9
LAotCi0gIC8qKgotICAgIEBtZXRob2Qgc2V0dXBEYXRhCi0gICAgQHByaXZhdGUKLSAgICBAcGFy
YW0ge09iamVjdH0gZGF0YQotICAgIEBwYXJhbSB7Qm9vbGVhbn0gcGFydGlhbCB0aGUgZGF0YSBz
aG91bGQgYmUgbWVyZ2VkIGludG8KLSAgICAgIHRoZSBleGlzdGluZyBkYXRhLCBub3QgcmVwbGFj
ZSBpdC4KLSAgKi8KLSAgc2V0dXBEYXRhOiBmdW5jdGlvbihkYXRhLCBwYXJ0aWFsKSB7Ci0gICAg
aWYgKHBhcnRpYWwpIHsKLSAgICAgIEVtYmVyLm1lcmdlKHRoaXMuX2RhdGEsIGRhdGEpOwotICAg
IH0gZWxzZSB7Ci0gICAgICB0aGlzLl9kYXRhID0gZGF0YTsKLSAgICB9Ci0KLSAgICB2YXIgcmVs
YXRpb25zaGlwcyA9IHRoaXMuX3JlbGF0aW9uc2hpcHM7Ci0KLSAgICB0aGlzLmVhY2hSZWxhdGlv
bnNoaXAoZnVuY3Rpb24obmFtZSwgcmVsKSB7Ci0gICAgICBpZiAoZGF0YS5saW5rcyAmJiBkYXRh
LmxpbmtzW25hbWVdKSB7IHJldHVybjsgfQotICAgICAgaWYgKHJlbC5vcHRpb25zLmFzeW5jKSB7
IHJlbGF0aW9uc2hpcHNbbmFtZV0gPSBudWxsOyB9Ci0gICAgfSk7Ci0KLSAgICBpZiAoZGF0YSkg
eyB0aGlzLnB1c2hlZERhdGEoKTsgfQotCi0gICAgdGhpcy5zdXNwZW5kUmVsYXRpb25zaGlwT2Jz
ZXJ2ZXJzKGZ1bmN0aW9uKCkgewotICAgICAgdGhpcy5ub3RpZnlQcm9wZXJ0eUNoYW5nZSgnZGF0
YScpOwotICAgIH0pOwotICB9LAotCi0gIG1hdGVyaWFsaXplSWQ6IGZ1bmN0aW9uKGlkKSB7Ci0g
ICAgc2V0KHRoaXMsICdpZCcsIGlkKTsKLSAgfSwKLQotICBtYXRlcmlhbGl6ZUF0dHJpYnV0ZXM6
IGZ1bmN0aW9uKGF0dHJpYnV0ZXMpIHsKLSAgICBFbWJlci5hc3NlcnQoIk11c3QgcGFzcyBhIGhh
c2ggb2YgYXR0cmlidXRlcyB0byBtYXRlcmlhbGl6ZUF0dHJpYnV0ZXMiLCAhIWF0dHJpYnV0ZXMp
OwotICAgIG1lcmdlKHRoaXMuX2RhdGEsIGF0dHJpYnV0ZXMpOwotICB9LAotCi0gIG1hdGVyaWFs
aXplQXR0cmlidXRlOiBmdW5jdGlvbihuYW1lLCB2YWx1ZSkgewotICAgIHRoaXMuX2RhdGFbbmFt
ZV0gPSB2YWx1ZTsKLSAgfSwKLQotICAvKioKLSAgICBAbWV0aG9kIHVwZGF0ZUhhc01hbnkKLSAg
ICBAcHJpdmF0ZQotICAgIEBwYXJhbSB7U3RyaW5nfSBuYW1lCi0gICAgQHBhcmFtIHtBcnJheX0g
cmVjb3JkcwotICAqLwotICB1cGRhdGVIYXNNYW55OiBmdW5jdGlvbihuYW1lLCByZWNvcmRzKSB7
Ci0gICAgdGhpcy5fZGF0YVtuYW1lXSA9IHJlY29yZHM7Ci0gICAgdGhpcy5oYXNNYW55RGlkQ2hh
bmdlKG5hbWUpOwotICB9LAotCi0gIC8qKgotICAgIEBtZXRob2QgdXBkYXRlQmVsb25nc1RvCi0g
ICAgQHByaXZhdGUKLSAgICBAcGFyYW0ge1N0cmluZ30gbmFtZQotICAgIEBwYXJhbSB7RFMuTW9k
ZWx9IHJlY29yZAotICAqLwotICB1cGRhdGVCZWxvbmdzVG86IGZ1bmN0aW9uKG5hbWUsIHJlY29y
ZCkgewotICAgIHRoaXMuX2RhdGFbbmFtZV0gPSByZWNvcmQ7Ci0gIH0sCi0KLSAgLyoqCi0gICAg
SWYgdGhlIG1vZGVsIGBpc0RpcnR5YCB0aGlzIGZ1bmN0aW9uIHdpbGwgZGlzY2FyZCBhbnkgdW5z
YXZlZAotICAgIGNoYW5nZXMKLQotICAgIEV4YW1wbGUKLQotICAgIGBgYGphdmFzY3JpcHQKLSAg
ICByZWNvcmQuZ2V0KCduYW1lJyk7IC8vICdVbnRpdGxlZCBEb2N1bWVudCcKLSAgICByZWNvcmQu
c2V0KCduYW1lJywgJ0RvYyAxJyk7Ci0gICAgcmVjb3JkLmdldCgnbmFtZScpOyAvLyAnRG9jIDEn
Ci0gICAgcmVjb3JkLnJvbGxiYWNrKCk7Ci0gICAgcmVjb3JkLmdldCgnbmFtZScpOyAvLyAnVW50
aXRsZWQgRG9jdW1lbnQnCi0gICAgYGBgCi0KLSAgICBAbWV0aG9kIHJvbGxiYWNrCi0gICovCi0g
IHJvbGxiYWNrOiBmdW5jdGlvbigpIHsKLSAgICB0aGlzLl9hdHRyaWJ1dGVzID0ge307Ci0KLSAg
ICBpZiAoZ2V0KHRoaXMsICdpc0Vycm9yJykpIHsKLSAgICAgIHRoaXMuX2luRmxpZ2h0QXR0cmli
dXRlcyA9IHt9OwotICAgICAgc2V0KHRoaXMsICdpc0Vycm9yJywgZmFsc2UpOwotICAgIH0KLQot
ICAgIGlmICghZ2V0KHRoaXMsICdpc1ZhbGlkJykpIHsKLSAgICAgIHRoaXMuX2luRmxpZ2h0QXR0
cmlidXRlcyA9IHt9OwotICAgIH0KLQotICAgIHRoaXMuc2VuZCgncm9sbGVkQmFjaycpOwotCi0g
ICAgdGhpcy5zdXNwZW5kUmVsYXRpb25zaGlwT2JzZXJ2ZXJzKGZ1bmN0aW9uKCkgewotICAgICAg
dGhpcy5ub3RpZnlQcm9wZXJ0eUNoYW5nZSgnZGF0YScpOwotICAgIH0pOwotICB9LAotCi0gIHRv
U3RyaW5nRXh0ZW5zaW9uOiBmdW5jdGlvbigpIHsKLSAgICByZXR1cm4gZ2V0KHRoaXMsICdpZCcp
OwotICB9LAotCi0gIC8qKgotICAgIFRoZSBnb2FsIG9mIHRoaXMgbWV0aG9kIGlzIHRvIHRlbXBv
cmFyaWx5IGRpc2FibGUgc3BlY2lmaWMgb2JzZXJ2ZXJzCi0gICAgdGhhdCB0YWtlIGFjdGlvbiBp
biByZXNwb25zZSB0byBhcHBsaWNhdGlvbiBjaGFuZ2VzLgotCi0gICAgVGhpcyBhbGxvd3MgdGhl
IHN5c3RlbSB0byBtYWtlIGNoYW5nZXMgKHN1Y2ggYXMgbWF0ZXJpYWxpemF0aW9uIGFuZAotICAg
IHJvbGxiYWNrKSB0aGF0IHNob3VsZCBub3QgdHJpZ2dlciBzZWNvbmRhcnkgYmVoYXZpb3IgKHN1
Y2ggYXMgc2V0dGluZyBhbgotICAgIGludmVyc2UgcmVsYXRpb25zaGlwIG9yIG1hcmtpbmcgcmVj
b3JkcyBhcyBkaXJ0eSkuCi0KLSAgICBUaGUgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gd2lsbCBs
aWtlbHkgY2hhbmdlIGFzIEVtYmVyIHByb3BlciBwcm92aWRlcwotICAgIGJldHRlciBpbmZyYXN0
cnVjdHVyZSBmb3Igc3VzcGVuZGluZyBncm91cHMgb2Ygb2JzZXJ2ZXJzLCBhbmQgaWYgQXJyYXkK
LSAgICBvYnNlcnZhdGlvbiBiZWNvbWVzIG1vcmUgdW5pZmllZCB3aXRoIHJlZ3VsYXIgb2JzZXJ2
ZXJzLgotCi0gICAgQG1ldGhvZCBzdXNwZW5kUmVsYXRpb25zaGlwT2JzZXJ2ZXJzCi0gICAgQHBy
aXZhdGUKLSAgICBAcGFyYW0gY2FsbGJhY2sKLSAgICBAcGFyYW0gYmluZGluZwotICAqLwotICBz
dXNwZW5kUmVsYXRpb25zaGlwT2JzZXJ2ZXJzOiBmdW5jdGlvbihjYWxsYmFjaywgYmluZGluZykg
ewotICAgIHZhciBvYnNlcnZlcnMgPSBnZXQodGhpcy5jb25zdHJ1Y3RvciwgJ3JlbGF0aW9uc2hp
cE5hbWVzJykuYmVsb25nc1RvOwotICAgIHZhciBzZWxmID0gdGhpczsKLQotICAgIHRyeSB7Ci0g
ICAgICB0aGlzLl9zdXNwZW5kZWRSZWxhdGlvbnNoaXBzID0gdHJ1ZTsKLSAgICAgIEVtYmVyLl9z
dXNwZW5kT2JzZXJ2ZXJzKHNlbGYsIG9ic2VydmVycywgbnVsbCwgJ2JlbG9uZ3NUb0RpZENoYW5n
ZScsIGZ1bmN0aW9uKCkgewotICAgICAgICBFbWJlci5fc3VzcGVuZEJlZm9yZU9ic2VydmVycyhz
ZWxmLCBvYnNlcnZlcnMsIG51bGwsICdiZWxvbmdzVG9XaWxsQ2hhbmdlJywgZnVuY3Rpb24oKSB7
Ci0gICAgICAgICAgY2FsbGJhY2suY2FsbChiaW5kaW5nIHx8IHNlbGYpOwotICAgICAgICB9KTsK
LSAgICAgIH0pOwotICAgIH0gZmluYWxseSB7Ci0gICAgICB0aGlzLl9zdXNwZW5kZWRSZWxhdGlv
bnNoaXBzID0gZmFsc2U7Ci0gICAgfQotICB9LAotCi0gIC8qKgotICAgIFNhdmUgdGhlIHJlY29y
ZCBhbmQgcGVyc2lzdCBhbnkgY2hhbmdlcyB0byB0aGUgcmVjb3JkIHRvIGFuCi0gICAgZXh0ZW5h
bCBzb3VyY2UgdmlhIHRoZSBhZGFwdGVyLgotCi0gICAgRXhhbXBsZQotCi0gICAgYGBgamF2YXNj
cmlwdAotICAgIHJlY29yZC5zZXQoJ25hbWUnLCAnVG9tc3RlcicpOwotICAgIHJlY29yZC5zYXZl
KCkudGhlbihmdW5jdGlvbigpewotICAgICAgLy8gU3VjY2VzcyBjYWxsYmFjawotICAgIH0sIGZ1
bmN0aW9uKCkgewotICAgICAgLy8gRXJyb3IgY2FsbGJhY2sKLSAgICB9KTsKLSAgICBgYGAKLSAg
ICBAbWV0aG9kIHNhdmUKLSAgICBAcmV0dXJuIHtQcm9taXNlfSBhIHByb21pc2UgdGhhdCB3aWxs
IGJlIHJlc29sdmVkIHdoZW4gdGhlIGFkYXB0ZXIgcmV0dXJucwotICAgIHN1Y2Nlc3NmdWxseSBv
ciByZWplY3RlZCBpZiB0aGUgYWRhcHRlciByZXR1cm5zIHdpdGggYW4gZXJyb3IuCi0gICovCi0g
IHNhdmU6IGZ1bmN0aW9uKCkgewotICAgIHZhciBwcm9taXNlTGFiZWwgPSAiRFM6IE1vZGVsI3Nh
dmUgIiArIHRoaXM7Ci0gICAgdmFyIHJlc29sdmVyID0gRW1iZXIuUlNWUC5kZWZlcihwcm9taXNl
TGFiZWwpOwotCi0gICAgdGhpcy5nZXQoJ3N0b3JlJykuc2NoZWR1bGVTYXZlKHRoaXMsIHJlc29s
dmVyKTsKLSAgICB0aGlzLl9pbkZsaWdodEF0dHJpYnV0ZXMgPSB0aGlzLl9hdHRyaWJ1dGVzOwot
ICAgIHRoaXMuX2F0dHJpYnV0ZXMgPSB7fTsKLQotICAgIHJldHVybiBEUy5Qcm9taXNlT2JqZWN0
LmNyZWF0ZSh7IHByb21pc2U6IHJlc29sdmVyLnByb21pc2UgfSk7Ci0gIH0sCi0KLSAgLyoqCi0g
ICAgUmVsb2FkIHRoZSByZWNvcmQgZnJvbSB0aGUgYWRhcHRlci4KLQotICAgIFRoaXMgd2lsbCBv
bmx5IHdvcmsgaWYgdGhlIHJlY29yZCBoYXMgYWxyZWFkeSBmaW5pc2hlZCBsb2FkaW5nCi0gICAg
YW5kIGhhcyBub3QgeWV0IGJlZW4gbW9kaWZpZWQgKGBpc0xvYWRlZGAgYnV0IG5vdCBgaXNEaXJ0
eWAsCi0gICAgb3IgYGlzU2F2aW5nYCkuCi0KLSAgICBFeGFtcGxlCi0KLSAgICBgYGBqYXZhc2Ny
aXB0Ci0gICAgQXBwLk1vZGVsVmlld1JvdXRlID0gRW1iZXIuUm91dGUuZXh0ZW5kKHsKLSAgICAg
IGFjdGlvbnM6IHsKLSAgICAgICAgcmVsb2FkOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICB0aGlz
LmdldCgnbW9kZWwnKS5yZWxvYWQoKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0pOwotICAg
IGBgYAotCi0gICAgQG1ldGhvZCByZWxvYWQKLSAgICBAcmV0dXJuIHtQcm9taXNlfSBhIHByb21p
c2UgdGhhdCB3aWxsIGJlIHJlc29sdmVkIHdpdGggdGhlIHJlY29yZCB3aGVuIHRoZQotICAgIGFk
YXB0ZXIgcmV0dXJucyBzdWNjZXNzZnVsbHkgb3IgcmVqZWN0ZWQgaWYgdGhlIGFkYXB0ZXIgcmV0
dXJucwotICAgIHdpdGggYW4gZXJyb3IuCi0gICovCi0gIHJlbG9hZDogZnVuY3Rpb24oKSB7Ci0g
ICAgc2V0KHRoaXMsICdpc1JlbG9hZGluZycsIHRydWUpOwotCi0gICAgdmFyICByZWNvcmQgPSB0
aGlzOwotCi0gICAgdmFyIHByb21pc2VMYWJlbCA9ICJEUzogTW9kZWwjcmVsb2FkIG9mICIgKyB0
aGlzOwotICAgIHZhciBwcm9taXNlID0gbmV3IEVtYmVyLlJTVlAuUHJvbWlzZShmdW5jdGlvbihy
ZXNvbHZlKXsKLSAgICAgICByZWNvcmQuc2VuZCgncmVsb2FkUmVjb3JkJywgcmVzb2x2ZSk7Ci0g
ICAgfSwgcHJvbWlzZUxhYmVsKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgcmVjb3JkLnNldCgn
aXNSZWxvYWRpbmcnLCBmYWxzZSk7Ci0gICAgICByZWNvcmQuc2V0KCdpc0Vycm9yJywgZmFsc2Up
OwotICAgICAgcmV0dXJuIHJlY29yZDsKLSAgICB9LCBmdW5jdGlvbihyZWFzb24pIHsKLSAgICAg
IHJlY29yZC5zZXQoJ2lzRXJyb3InLCB0cnVlKTsKLSAgICAgIHRocm93IHJlYXNvbjsKLSAgICB9
LCAiRFM6IE1vZGVsI3JlbG9hZCBjb21wbGV0ZSwgdXBkYXRlIGZsYWdzIik7Ci0KLSAgICByZXR1
cm4gRFMuUHJvbWlzZU9iamVjdC5jcmVhdGUoeyBwcm9taXNlOiBwcm9taXNlIH0pOwotICB9LAot
Ci0gIC8vIEZPUiBVU0UgRFVSSU5HIENPTU1JVCBQUk9DRVNTCi0KLSAgYWRhcHRlckRpZFVwZGF0
ZUF0dHJpYnV0ZTogZnVuY3Rpb24oYXR0cmlidXRlTmFtZSwgdmFsdWUpIHsKLQotICAgIC8vIElm
IGEgdmFsdWUgaXMgcGFzc2VkIGluLCB1cGRhdGUgdGhlIGludGVybmFsIGF0dHJpYnV0ZXMgYW5k
IGNsZWFyCi0gICAgLy8gdGhlIGF0dHJpYnV0ZSBjYWNoZSBzbyBpdCBwaWNrcyB1cCB0aGUgbmV3
IHZhbHVlLiBPdGhlcndpc2UsCi0gICAgLy8gY29sbGFwc2UgdGhlIGN1cnJlbnQgdmFsdWUgaW50
byB0aGUgaW50ZXJuYWwgYXR0cmlidXRlcyBiZWNhdXNlCi0gICAgLy8gdGhlIGFkYXB0ZXIgaGFz
IGFja25vd2xlZGdlZCBpdC4KLSAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkgewotICAgICAg
dGhpcy5fZGF0YVthdHRyaWJ1dGVOYW1lXSA9IHZhbHVlOwotICAgICAgdGhpcy5ub3RpZnlQcm9w
ZXJ0eUNoYW5nZShhdHRyaWJ1dGVOYW1lKTsKLSAgICB9IGVsc2UgewotICAgICAgdGhpcy5fZGF0
YVthdHRyaWJ1dGVOYW1lXSA9IHRoaXMuX2luRmxpZ2h0QXR0cmlidXRlc1thdHRyaWJ1dGVOYW1l
XTsKLSAgICB9Ci0KLSAgICB0aGlzLnVwZGF0ZVJlY29yZEFycmF5c0xhdGVyKCk7Ci0gIH0sCi0K
LSAgLyoqCi0gICAgQG1ldGhvZCBhZGFwdGVyRGlkSW52YWxpZGF0ZQotICAgIEBwcml2YXRlCi0g
ICovCi0gIGFkYXB0ZXJEaWRJbnZhbGlkYXRlOiBmdW5jdGlvbihlcnJvcnMpIHsKLSAgICB2YXIg
cmVjb3JkRXJyb3JzID0gZ2V0KHRoaXMsICdlcnJvcnMnKTsKLSAgICBmdW5jdGlvbiBhZGRFcnJv
cihuYW1lKSB7Ci0gICAgICBpZiAoZXJyb3JzW25hbWVdKSB7Ci0gICAgICAgIHJlY29yZEVycm9y
cy5hZGQobmFtZSwgZXJyb3JzW25hbWVdKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICB0aGlzLmVh
Y2hBdHRyaWJ1dGUoYWRkRXJyb3IpOwotICAgIHRoaXMuZWFjaFJlbGF0aW9uc2hpcChhZGRFcnJv
cik7Ci0gIH0sCi0KLSAgLyoqCi0gICAgQG1ldGhvZCBhZGFwdGVyRGlkRXJyb3IKLSAgICBAcHJp
dmF0ZQotICAqLwotICBhZGFwdGVyRGlkRXJyb3I6IGZ1bmN0aW9uKCkgewotICAgIHRoaXMuc2Vu
ZCgnYmVjYW1lRXJyb3InKTsKLSAgICBzZXQodGhpcywgJ2lzRXJyb3InLCB0cnVlKTsKLSAgfSwK
LQotICAvKioKLSAgICBPdmVycmlkZSB0aGUgZGVmYXVsdCBldmVudCBmaXJpbmcgZnJvbSBFbWJl
ci5FdmVudGVkIHRvCi0gICAgYWxzbyBjYWxsIG1ldGhvZHMgd2l0aCB0aGUgZ2l2ZW4gbmFtZS4K
LQotICAgIEBtZXRob2QgdHJpZ2dlcgotICAgIEBwcml2YXRlCi0gICAgQHBhcmFtIG5hbWUKLSAg
Ki8KLSAgdHJpZ2dlcjogZnVuY3Rpb24obmFtZSkgewotICAgIEVtYmVyLnRyeUludm9rZSh0aGlz
LCBuYW1lLCBbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSkpOwotICAgIHRoaXMuX3N1cGVyLmFw
cGx5KHRoaXMsIGFyZ3VtZW50cyk7Ci0gIH0sCi0KLSAgdHJpZ2dlckxhdGVyOiBmdW5jdGlvbigp
IHsKLSAgICBpZiAodGhpcy5fZGVmZXJyZWRUcmlnZ2Vycy5wdXNoKGFyZ3VtZW50cykgIT09IDEp
IHsgcmV0dXJuOyB9Ci0gICAgRW1iZXIucnVuLnNjaGVkdWxlKCdhY3Rpb25zJywgdGhpcywgJ190
cmlnZ2VyRGVmZXJyZWRUcmlnZ2VycycpOwotICB9LAotCi0gIF90cmlnZ2VyRGVmZXJyZWRUcmln
Z2VyczogZnVuY3Rpb24oKSB7Ci0gICAgZm9yICh2YXIgaT0wLCBsPXRoaXMuX2RlZmVycmVkVHJp
Z2dlcnMubGVuZ3RoOyBpPGw7IGkrKykgewotICAgICAgdGhpcy50cmlnZ2VyLmFwcGx5KHRoaXMs
IHRoaXMuX2RlZmVycmVkVHJpZ2dlcnNbaV0pOwotICAgIH0KLQotICAgIHRoaXMuX2RlZmVycmVk
VHJpZ2dlcnMubGVuZ3RoID0gMDsKLSAgfQotfSk7Ci0KLURTLk1vZGVsLnJlb3BlbkNsYXNzKHsK
LQotICAvKioKLSAgICBBbGlhcyBEUy5Nb2RlbCdzIGBjcmVhdGVgIG1ldGhvZCB0byBgX2NyZWF0
ZWAuIFRoaXMgYWxsb3dzIHVzIHRvIGNyZWF0ZSBEUy5Nb2RlbAotICAgIGluc3RhbmNlcyBmcm9t
IHdpdGhpbiB0aGUgc3RvcmUsIGJ1dCBpZiBlbmQgdXNlcnMgYWNjaWRlbnRhbGx5IGNhbGwgYGNy
ZWF0ZSgpYAotICAgIChpbnN0ZWFkIG9mIGBjcmVhdGVSZWNvcmQoKWApLCB3ZSBjYW4gcmFpc2Ug
YW4gZXJyb3IuCi0KLSAgICBAbWV0aG9kIF9jcmVhdGUKLSAgICBAcHJpdmF0ZQotICAgIEBzdGF0
aWMKLSAgKi8KLSAgX2NyZWF0ZTogRFMuTW9kZWwuY3JlYXRlLAotCi0gIC8qKgotICAgIE92ZXJy
aWRlIHRoZSBjbGFzcycgYGNyZWF0ZSgpYCBtZXRob2QgdG8gcmFpc2UgYW4gZXJyb3IuIFRoaXMK
LSAgICBwcmV2ZW50cyBlbmQgdXNlcnMgZnJvbSBpbmFkdmVydGVudGx5IGNhbGxpbmcgYGNyZWF0
ZSgpYCBpbnN0ZWFkCi0gICAgb2YgYGNyZWF0ZVJlY29yZCgpYC4gVGhlIHN0b3JlIGlzIHN0aWxs
IGFibGUgdG8gY3JlYXRlIGluc3RhbmNlcwotICAgIGJ5IGNhbGxpbmcgdGhlIGBfY3JlYXRlKClg
IG1ldGhvZC4gVG8gY3JlYXRlIGFuIGluc3RhbmNlIG9mIGEKLSAgICBgRFMuTW9kZWxgIHVzZSBb
c3RvcmUuY3JlYXRlUmVjb3JkXShEUy5TdG9yZS5odG1sI21ldGhvZF9jcmVhdGVSZWNvcmQpLgot
Ci0gICAgQG1ldGhvZCBjcmVhdGUKLSAgICBAcHJpdmF0ZQotICAgIEBzdGF0aWMKLSAgKi8KLSAg
Y3JlYXRlOiBmdW5jdGlvbigpIHsKLSAgICB0aHJvdyBuZXcgRW1iZXIuRXJyb3IoIllvdSBzaG91
bGQgbm90IGNhbGwgYGNyZWF0ZWAgb24gYSBtb2RlbC4gSW5zdGVhZCwgY2FsbCBgc3RvcmUuY3Jl
YXRlUmVjb3JkYCB3aXRoIHRoZSBhdHRyaWJ1dGVzIHlvdSB3b3VsZCBsaWtlIHRvIHNldC4iKTsK
LSAgfQotfSk7Ci0KLX0pKCk7Ci0KLQotCi0oZnVuY3Rpb24oKSB7Ci0vKioKLSAgQG1vZHVsZSBl
bWJlci1kYXRhCi0qLwotCi12YXIgZ2V0ID0gRW1iZXIuZ2V0OwotCi0vKioKLSAgQGNsYXNzIE1v
ZGVsCi0gIEBuYW1lc3BhY2UgRFMKLSovCi1EUy5Nb2RlbC5yZW9wZW5DbGFzcyh7Ci0gIC8qKgot
ICAgIEEgbWFwIHdob3NlIGtleXMgYXJlIHRoZSBhdHRyaWJ1dGVzIG9mIHRoZSBtb2RlbCAocHJv
cGVydGllcwotICAgIGRlc2NyaWJlZCBieSBEUy5hdHRyKSBhbmQgd2hvc2UgdmFsdWVzIGFyZSB0
aGUgbWV0YSBvYmplY3QgZm9yIHRoZQotICAgIHByb3BlcnR5LgotCi0gICAgRXhhbXBsZQotCi0g
ICAgYGBgamF2YXNjcmlwdAotCi0gICAgQXBwLlBlcnNvbiA9IERTLk1vZGVsLmV4dGVuZCh7Ci0g
ICAgICBmaXJzdE5hbWU6IGF0dHIoJ3N0cmluZycpLAotICAgICAgbGFzdE5hbWU6IGF0dHIoJ3N0
cmluZycpLAotICAgICAgYmlydGhkYXk6IGF0dHIoJ2RhdGUnKQotICAgIH0pOwotCi0gICAgdmFy
IGF0dHJpYnV0ZXMgPSBFbWJlci5nZXQoQXBwLlBlcnNvbiwgJ2F0dHJpYnV0ZXMnKQotCi0gICAg
YXR0cmlidXRlcy5mb3JFYWNoKGZ1bmN0aW9uKG5hbWUsIG1ldGEpIHsKLSAgICAgIGNvbnNvbGUu
bG9nKG5hbWUsIG1ldGEpOwotICAgIH0pOwotCi0gICAgLy8gcHJpbnRzOgotICAgIC8vIGZpcnN0
TmFtZSB7dHlwZTogInN0cmluZyIsIGlzQXR0cmlidXRlOiB0cnVlLCBvcHRpb25zOiBPYmplY3Qs
IHBhcmVudFR5cGU6IGZ1bmN0aW9uLCBuYW1lOiAiZmlyc3ROYW1lIn0KLSAgICAvLyBsYXN0TmFt
ZSB7dHlwZTogInN0cmluZyIsIGlzQXR0cmlidXRlOiB0cnVlLCBvcHRpb25zOiBPYmplY3QsIHBh
cmVudFR5cGU6IGZ1bmN0aW9uLCBuYW1lOiAibGFzdE5hbWUifQotICAgIC8vIGJpcnRoZGF5IHt0
eXBlOiAiZGF0ZSIsIGlzQXR0cmlidXRlOiB0cnVlLCBvcHRpb25zOiBPYmplY3QsIHBhcmVudFR5
cGU6IGZ1bmN0aW9uLCBuYW1lOiAiYmlydGhkYXkifQotICAgIGBgYAotCi0gICAgQHByb3BlcnR5
IGF0dHJpYnV0ZXMKLSAgICBAc3RhdGljCi0gICAgQHR5cGUge0VtYmVyLk1hcH0KLSAgICBAcmVh
ZE9ubHkKLSAgKi8KLSAgYXR0cmlidXRlczogRW1iZXIuY29tcHV0ZWQoZnVuY3Rpb24oKSB7Ci0g
ICAgdmFyIG1hcCA9IEVtYmVyLk1hcC5jcmVhdGUoKTsKLQotICAgIHRoaXMuZWFjaENvbXB1dGVk
UHJvcGVydHkoZnVuY3Rpb24obmFtZSwgbWV0YSkgewotICAgICAgaWYgKG1ldGEuaXNBdHRyaWJ1
dGUpIHsKLSAgICAgICAgRW1iZXIuYXNzZXJ0KCJZb3UgbWF5IG5vdCBzZXQgYGlkYCBhcyBhbiBh
dHRyaWJ1dGUgb24geW91ciBtb2RlbC4gUGxlYXNlIHJlbW92ZSBhbnkgbGluZXMgdGhhdCBsb29r
IGxpa2U6IGBpZDogRFMuYXR0cignPHR5cGU+JylgIGZyb20gIiArIHRoaXMudG9TdHJpbmcoKSwg
bmFtZSAhPT0gJ2lkJyk7Ci0KLSAgICAgICAgbWV0YS5uYW1lID0gbmFtZTsKLSAgICAgICAgbWFw
LnNldChuYW1lLCBtZXRhKTsKLSAgICAgIH0KLSAgICB9KTsKLQotICAgIHJldHVybiBtYXA7Ci0g
IH0pLAotCi0gIC8qKgotICAgIEEgbWFwIHdob3NlIGtleXMgYXJlIHRoZSBhdHRyaWJ1dGVzIG9m
IHRoZSBtb2RlbCAocHJvcGVydGllcwotICAgIGRlc2NyaWJlZCBieSBEUy5hdHRyKSBhbmQgd2hv
c2UgdmFsdWVzIGFyZSB0eXBlIG9mIHRyYW5zZm9ybWF0aW9uCi0gICAgYXBwbGllZCB0byBlYWNo
IGF0dHJpYnV0ZS4gVGhpcyBtYXAgZG9lcyBub3QgaW5jbHVkZSBhbnkKLSAgICBhdHRyaWJ1dGVz
IHRoYXQgZG8gbm90IGhhdmUgYW4gdHJhbnNmb3JtYXRpb24gdHlwZS4KLQotICAgIEV4YW1wbGUK
LQotICAgIGBgYGphdmFzY3JpcHQKLSAgICBBcHAuUGVyc29uID0gRFMuTW9kZWwuZXh0ZW5kKHsK
LSAgICAgIGZpcnN0TmFtZTogYXR0cigpLAotICAgICAgbGFzdE5hbWU6IGF0dHIoJ3N0cmluZycp
LAotICAgICAgYmlydGhkYXk6IGF0dHIoJ2RhdGUnKQotICAgIH0pOwotCi0gICAgdmFyIHRyYW5z
Zm9ybWVkQXR0cmlidXRlcyA9IEVtYmVyLmdldChBcHAuUGVyc29uLCAndHJhbnNmb3JtZWRBdHRy
aWJ1dGVzJykKLQotICAgIHRyYW5zZm9ybWVkQXR0cmlidXRlcy5mb3JFYWNoKGZ1bmN0aW9uKGZp
ZWxkLCB0eXBlKSB7Ci0gICAgICBjb25zb2xlLmxvZyhmaWVsZCwgdHlwZSk7Ci0gICAgfSk7Ci0K
LSAgICAvLyBwcmludHM6Ci0gICAgLy8gbGFzdE5hbWUgc3RyaW5nCi0gICAgLy8gYmlydGhkYXkg
ZGF0ZQotICAgIGBgYAotCi0gICAgQHByb3BlcnR5IHRyYW5zZm9ybWVkQXR0cmlidXRlcwotICAg
IEBzdGF0aWMKLSAgICBAdHlwZSB7RW1iZXIuTWFwfQotICAgIEByZWFkT25seQotICAqLwotICB0
cmFuc2Zvcm1lZEF0dHJpYnV0ZXM6IEVtYmVyLmNvbXB1dGVkKGZ1bmN0aW9uKCkgewotICAgIHZh
ciBtYXAgPSBFbWJlci5NYXAuY3JlYXRlKCk7Ci0KLSAgICB0aGlzLmVhY2hBdHRyaWJ1dGUoZnVu
Y3Rpb24oa2V5LCBtZXRhKSB7Ci0gICAgICBpZiAobWV0YS50eXBlKSB7Ci0gICAgICAgIG1hcC5z
ZXQoa2V5LCBtZXRhLnR5cGUpOwotICAgICAgfQotICAgIH0pOwotCi0gICAgcmV0dXJuIG1hcDsK
LSAgfSksCi0KLSAgLyoqCi0gICAgSXRlcmF0ZXMgdGhyb3VnaCB0aGUgYXR0cmlidXRlcyBvZiB0
aGUgbW9kZWwsIGNhbGxpbmcgdGhlIHBhc3NlZCBmdW5jdGlvbiBvbiBlYWNoCi0gICAgYXR0cmli
dXRlLgotCi0gICAgVGhlIGNhbGxiYWNrIG1ldGhvZCB5b3UgcHJvdmlkZSBzaG91bGQgaGF2ZSB0
aGUgZm9sbG93aW5nIHNpZ25hdHVyZSAoYWxsCi0gICAgcGFyYW1ldGVycyBhcmUgb3B0aW9uYWwp
OgotCi0gICAgYGBgamF2YXNjcmlwdAotICAgIGZ1bmN0aW9uKG5hbWUsIG1ldGEpOwotICAgIGBg
YAotCi0gICAgLSBgbmFtZWAgdGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgcHJvcGVydHkgaW4gdGhl
IGl0ZXJhdGlvbgotICAgIC0gYG1ldGFgIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0
ZSBwcm9wZXJ0eSBpbiB0aGUgaXRlcmF0aW9uCi0KLSAgICBOb3RlIHRoYXQgaW4gYWRkaXRpb24g
dG8gYSBjYWxsYmFjaywgeW91IGNhbiBhbHNvIHBhc3MgYW4gb3B0aW9uYWwgdGFyZ2V0Ci0gICAg
b2JqZWN0IHRoYXQgd2lsbCBiZSBzZXQgYXMgYHRoaXNgIG9uIHRoZSBjb250ZXh0LgotCi0gICAg
RXhhbXBsZQotCi0gICAgYGBgamF2YXNjcmlwdAotICAgIEFwcC5QZXJzb24gPSBEUy5Nb2RlbC5l
eHRlbmQoewotICAgICAgZmlyc3ROYW1lOiBhdHRyKCdzdHJpbmcnKSwKLSAgICAgIGxhc3ROYW1l
OiBhdHRyKCdzdHJpbmcnKSwKLSAgICAgIGJpcnRoZGF5OiBhdHRyKCdkYXRlJykKLSAgICB9KTsK
LQotICAgIEFwcC5QZXJzb24uZWFjaEF0dHJpYnV0ZShmdW5jdGlvbihuYW1lLCBtZXRhKSB7Ci0g
ICAgICBjb25zb2xlLmxvZyhuYW1lLCBtZXRhKTsKLSAgICB9KTsKLQotICAgIC8vIHByaW50czoK
LSAgICAvLyBmaXJzdE5hbWUge3R5cGU6ICJzdHJpbmciLCBpc0F0dHJpYnV0ZTogdHJ1ZSwgb3B0
aW9uczogT2JqZWN0LCBwYXJlbnRUeXBlOiBmdW5jdGlvbiwgbmFtZTogImZpcnN0TmFtZSJ9Ci0g
ICAgLy8gbGFzdE5hbWUge3R5cGU6ICJzdHJpbmciLCBpc0F0dHJpYnV0ZTogdHJ1ZSwgb3B0aW9u
czogT2JqZWN0LCBwYXJlbnRUeXBlOiBmdW5jdGlvbiwgbmFtZTogImxhc3ROYW1lIn0KLSAgICAv
LyBiaXJ0aGRheSB7dHlwZTogImRhdGUiLCBpc0F0dHJpYnV0ZTogdHJ1ZSwgb3B0aW9uczogT2Jq
ZWN0LCBwYXJlbnRUeXBlOiBmdW5jdGlvbiwgbmFtZTogImJpcnRoZGF5In0KLSAgIGBgYAotCi0g
ICAgQG1ldGhvZCBlYWNoQXR0cmlidXRlCi0gICAgQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2sg
VGhlIGNhbGxiYWNrIHRvIGV4ZWN1dGUKLSAgICBAcGFyYW0ge09iamVjdH0gW3RhcmdldF0gVGhl
IHRhcmdldCBvYmplY3QgdG8gdXNlCi0gICAgQHN0YXRpYwotICAqLwotICBlYWNoQXR0cmlidXRl
OiBmdW5jdGlvbihjYWxsYmFjaywgYmluZGluZykgewotICAgIGdldCh0aGlzLCAnYXR0cmlidXRl
cycpLmZvckVhY2goZnVuY3Rpb24obmFtZSwgbWV0YSkgewotICAgICAgY2FsbGJhY2suY2FsbChi
aW5kaW5nLCBuYW1lLCBtZXRhKTsKLSAgICB9LCBiaW5kaW5nKTsKLSAgfSwKLQotICAvKioKLSAg
ICBJdGVyYXRlcyB0aHJvdWdoIHRoZSB0cmFuc2Zvcm1lZEF0dHJpYnV0ZXMgb2YgdGhlIG1vZGVs
LCBjYWxsaW5nCi0gICAgdGhlIHBhc3NlZCBmdW5jdGlvbiBvbiBlYWNoIGF0dHJpYnV0ZS4gTm90
ZSB0aGUgY2FsbGJhY2sgd2lsbCBub3QgYmUKLSAgICBjYWxsZWQgZm9yIGFueSBhdHRyaWJ1dGVz
IHRoYXQgZG8gbm90IGhhdmUgYW4gdHJhbnNmb3JtYXRpb24gdHlwZS4KLQotICAgIFRoZSBjYWxs
YmFjayBtZXRob2QgeW91IHByb3ZpZGUgc2hvdWxkIGhhdmUgdGhlIGZvbGxvd2luZyBzaWduYXR1
cmUgKGFsbAotICAgIHBhcmFtZXRlcnMgYXJlIG9wdGlvbmFsKToKLQotICAgIGBgYGphdmFzY3Jp
cHQKLSAgICBmdW5jdGlvbihuYW1lLCB0eXBlKTsKLSAgICBgYGAKLQotICAgIC0gYG5hbWVgIHRo
ZSBuYW1lIG9mIHRoZSBjdXJyZW50IHByb3BlcnR5IGluIHRoZSBpdGVyYXRpb24KLSAgICAtIGB0
eXBlYCBhIHN0cmluZyBjb250YWluaW5nIHRoZSBuYW1lIG9mIHRoZSB0eXBlIG9mIHRyYW5zZm9y
bWVkCi0gICAgICBhcHBsaWVkIHRvIHRoZSBhdHRyaWJ1dGUKLQotICAgIE5vdGUgdGhhdCBpbiBh
ZGRpdGlvbiB0byBhIGNhbGxiYWNrLCB5b3UgY2FuIGFsc28gcGFzcyBhbiBvcHRpb25hbCB0YXJn
ZXQKLSAgICBvYmplY3QgdGhhdCB3aWxsIGJlIHNldCBhcyBgdGhpc2Agb24gdGhlIGNvbnRleHQu
Ci0KLSAgICBFeGFtcGxlCi0KLSAgICBgYGBqYXZhc2NyaXB0Ci0gICAgQXBwLlBlcnNvbiA9IERT
Lk1vZGVsLmV4dGVuZCh7Ci0gICAgICBmaXJzdE5hbWU6IGF0dHIoKSwKLSAgICAgIGxhc3ROYW1l
OiBhdHRyKCdzdHJpbmcnKSwKLSAgICAgIGJpcnRoZGF5OiBhdHRyKCdkYXRlJykKLSAgICB9KTsK
LQotICAgIEFwcC5QZXJzb24uZWFjaFRyYW5zZm9ybWVkQXR0cmlidXRlKGZ1bmN0aW9uKG5hbWUs
IHR5cGUpIHsKLSAgICAgIGNvbnNvbGUubG9nKG5hbWUsIHR5cGUpOwotICAgIH0pOwotCi0gICAg
Ly8gcHJpbnRzOgotICAgIC8vIGxhc3ROYW1lIHN0cmluZwotICAgIC8vIGJpcnRoZGF5IGRhdGUK
LSAgIGBgYAotCi0gICAgQG1ldGhvZCBlYWNoVHJhbnNmb3JtZWRBdHRyaWJ1dGUKLSAgICBAcGFy
YW0ge0Z1bmN0aW9ufSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgdG8gZXhlY3V0ZQotICAgIEBwYXJh
bSB7T2JqZWN0fSBbdGFyZ2V0XSBUaGUgdGFyZ2V0IG9iamVjdCB0byB1c2UKLSAgICBAc3RhdGlj
Ci0gICovCi0gIGVhY2hUcmFuc2Zvcm1lZEF0dHJpYnV0ZTogZnVuY3Rpb24oY2FsbGJhY2ssIGJp
bmRpbmcpIHsKLSAgICBnZXQodGhpcywgJ3RyYW5zZm9ybWVkQXR0cmlidXRlcycpLmZvckVhY2go
ZnVuY3Rpb24obmFtZSwgdHlwZSkgewotICAgICAgY2FsbGJhY2suY2FsbChiaW5kaW5nLCBuYW1l
LCB0eXBlKTsKLSAgICB9KTsKLSAgfQotfSk7Ci0KLQotRFMuTW9kZWwucmVvcGVuKHsKLSAgZWFj
aEF0dHJpYnV0ZTogZnVuY3Rpb24oY2FsbGJhY2ssIGJpbmRpbmcpIHsKLSAgICB0aGlzLmNvbnN0
cnVjdG9yLmVhY2hBdHRyaWJ1dGUoY2FsbGJhY2ssIGJpbmRpbmcpOwotICB9Ci19KTsKLQotZnVu
Y3Rpb24gZ2V0RGVmYXVsdFZhbHVlKHJlY29yZCwgb3B0aW9ucywga2V5KSB7Ci0gIGlmICh0eXBl
b2Ygb3B0aW9ucy5kZWZhdWx0VmFsdWUgPT09ICJmdW5jdGlvbiIpIHsKLSAgICByZXR1cm4gb3B0
aW9ucy5kZWZhdWx0VmFsdWUoKTsKLSAgfSBlbHNlIHsKLSAgICByZXR1cm4gb3B0aW9ucy5kZWZh
dWx0VmFsdWU7Ci0gIH0KLX0KLQotZnVuY3Rpb24gaGFzVmFsdWUocmVjb3JkLCBrZXkpIHsKLSAg
cmV0dXJuIHJlY29yZC5fYXR0cmlidXRlcy5oYXNPd25Qcm9wZXJ0eShrZXkpIHx8Ci0gICAgICAg
ICByZWNvcmQuX2luRmxpZ2h0QXR0cmlidXRlcy5oYXNPd25Qcm9wZXJ0eShrZXkpIHx8Ci0gICAg
ICAgICByZWNvcmQuX2RhdGEuaGFzT3duUHJvcGVydHkoa2V5KTsKLX0KLQotZnVuY3Rpb24gZ2V0
VmFsdWUocmVjb3JkLCBrZXkpIHsKLSAgaWYgKHJlY29yZC5fYXR0cmlidXRlcy5oYXNPd25Qcm9w
ZXJ0eShrZXkpKSB7Ci0gICAgcmV0dXJuIHJlY29yZC5fYXR0cmlidXRlc1trZXldOwotICB9IGVs
c2UgaWYgKHJlY29yZC5faW5GbGlnaHRBdHRyaWJ1dGVzLmhhc093blByb3BlcnR5KGtleSkpIHsK
LSAgICByZXR1cm4gcmVjb3JkLl9pbkZsaWdodEF0dHJpYnV0ZXNba2V5XTsKLSAgfSBlbHNlIHsK
LSAgICByZXR1cm4gcmVjb3JkLl9kYXRhW2tleV07Ci0gIH0KLX0KLQotLyoqCi0gIGBEUy5hdHRy
YCBkZWZpbmVzIGFuIGF0dHJpYnV0ZSBvbiBhIFtEUy5Nb2RlbF0oRFMuTW9kZWwuaHRtbCkuCi0g
IEJ5IGRlZmF1bHQsIGF0dHJpYnV0ZXMgYXJlIHBhc3NlZCB0aHJvdWdoIGFzLWlzLCBob3dldmVy
IHlvdSBjYW4gc3BlY2lmeSBhbgotICBvcHRpb25hbCB0eXBlIHRvIGhhdmUgdGhlIHZhbHVlIGF1
dG9tYXRpY2FsbHkgdHJhbnNmb3JtZWQuCi0gIEVtYmVyIERhdGEgc2hpcHMgd2l0aCBmb3VyIGJh
c2ljIHRyYW5zZm9ybSB0eXBlczogYHN0cmluZ2AsIGBudW1iZXJgLAotICBgYm9vbGVhbmAgYW5k
IGBkYXRlYC4gWW91IGNhbiBkZWZpbmUgeW91ciBvd24gdHJhbnNmb3JtcyBieSBzdWJjbGFzc2lu
ZwotICBbRFMuVHJhbnNmb3JtXShEUy5UcmFuc2Zvcm0uaHRtbCkuCi0KLSAgYERTLmF0dHJgIHRh
a2VzIGFuIG9wdGlvbmFsIGhhc2ggYXMgYSBzZWNvbmQgcGFyYW1ldGVyLCBjdXJyZW50bHkKLSAg
c3VwcG9ydGVkIG9wdGlvbnMgYXJlOgotCi0gIC0gYGRlZmF1bHRWYWx1ZWA6IFBhc3MgYSBzdHJp
bmcgb3IgYSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgdG8gc2V0IHRoZSBhdHRyaWJ1dGUKLSAgICAg
ICAgICAgICAgICAgICAgdG8gYSBkZWZhdWx0IHZhbHVlIGlmIG5vbmUgaXMgc3VwcGxpZWQuCi0K
LSAgRXhhbXBsZQotCi0gIGBgYGphdmFzY3JpcHQKLSAgdmFyIGF0dHIgPSBEUy5hdHRyOwotCi0g
IEFwcC5Vc2VyID0gRFMuTW9kZWwuZXh0ZW5kKHsKLSAgICB1c2VybmFtZTogYXR0cignc3RyaW5n
JyksCi0gICAgZW1haWw6IGF0dHIoJ3N0cmluZycpLAotICAgIHZlcmlmaWVkOiBhdHRyKCdib29s
ZWFuJywge2RlZmF1bHRWYWx1ZTogZmFsc2V9KQotICB9KTsKLSAgYGBgCi0KLSAgQG5hbWVzcGFj
ZQotICBAbWV0aG9kIGF0dHIKLSAgQGZvciBEUwotICBAcGFyYW0ge1N0cmluZ30gdHlwZSB0aGUg
YXR0cmlidXRlIHR5cGUKLSAgQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgYSBoYXNoIG9mIG9wdGlv
bnMKLSAgQHJldHVybiB7QXR0cmlidXRlfQotKi8KLQotRFMuYXR0ciA9IGZ1bmN0aW9uKHR5cGUs
IG9wdGlvbnMpIHsKLSAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307Ci0KLSAgdmFyIG1ldGEgPSB7
Ci0gICAgdHlwZTogdHlwZSwKLSAgICBpc0F0dHJpYnV0ZTogdHJ1ZSwKLSAgICBvcHRpb25zOiBv
cHRpb25zCi0gIH07Ci0KLSAgcmV0dXJuIEVtYmVyLmNvbXB1dGVkKGZ1bmN0aW9uKGtleSwgdmFs
dWUpIHsKLSAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHsKLSAgICAgIEVtYmVyLmFzc2Vy
dCgiWW91IG1heSBub3Qgc2V0IGBpZGAgYXMgYW4gYXR0cmlidXRlIG9uIHlvdXIgbW9kZWwuIFBs
ZWFzZSByZW1vdmUgYW55IGxpbmVzIHRoYXQgbG9vayBsaWtlOiBgaWQ6IERTLmF0dHIoJzx0eXBl
PicpYCBmcm9tICIgKyB0aGlzLmNvbnN0cnVjdG9yLnRvU3RyaW5nKCksIGtleSAhPT0gJ2lkJyk7
Ci0gICAgICB2YXIgb2xkVmFsdWUgPSB0aGlzLl9hdHRyaWJ1dGVzW2tleV0gfHwgdGhpcy5faW5G
bGlnaHRBdHRyaWJ1dGVzW2tleV0gfHwgdGhpcy5fZGF0YVtrZXldOwotCi0gICAgICB0aGlzLnNl
bmQoJ2RpZFNldFByb3BlcnR5JywgewotICAgICAgICBuYW1lOiBrZXksCi0gICAgICAgIG9sZFZh
bHVlOiBvbGRWYWx1ZSwKLSAgICAgICAgb3JpZ2luYWxWYWx1ZTogdGhpcy5fZGF0YVtrZXldLAot
ICAgICAgICB2YWx1ZTogdmFsdWUKLSAgICAgIH0pOwotCi0gICAgICB0aGlzLl9hdHRyaWJ1dGVz
W2tleV0gPSB2YWx1ZTsKLSAgICAgIHJldHVybiB2YWx1ZTsKLSAgICB9IGVsc2UgaWYgKGhhc1Zh
bHVlKHRoaXMsIGtleSkpIHsKLSAgICAgIHJldHVybiBnZXRWYWx1ZSh0aGlzLCBrZXkpOwotICAg
IH0gZWxzZSB7Ci0gICAgICByZXR1cm4gZ2V0RGVmYXVsdFZhbHVlKHRoaXMsIG9wdGlvbnMsIGtl
eSk7Ci0gICAgfQotCi0gIC8vIGBkYXRhYCBpcyBuZXZlciBzZXQgZGlyZWN0bHkuIEhvd2V2ZXIs
IGl0IG1heSBiZQotICAvLyBpbnZhbGlkYXRlZCBmcm9tIHRoZSBzdGF0ZSBtYW5hZ2VyJ3Mgc2V0
RGF0YQotICAvLyBldmVudC4KLSAgfSkucHJvcGVydHkoJ2RhdGEnKS5tZXRhKG1ldGEpOwotfTsK
LQotCi19KSgpOwotCi0KLQotKGZ1bmN0aW9uKCkgewotLyoqCi0gIEBtb2R1bGUgZW1iZXItZGF0
YQotKi8KLQotfSkoKTsKLQotCi0KLShmdW5jdGlvbigpIHsKLS8qKgotICBAbW9kdWxlIGVtYmVy
LWRhdGEKLSovCi0KLS8qKgotICBBbiBBdHRyaWJ1dGVDaGFuZ2Ugb2JqZWN0IGlzIGNyZWF0ZWQg
d2hlbmV2ZXIgYSByZWNvcmQncwotICBhdHRyaWJ1dGUgY2hhbmdlcyB2YWx1ZS4gSXQgaXMgdXNl
ZCB0byB0cmFjayBjaGFuZ2VzIHRvIGEKLSAgcmVjb3JkIGJldHdlZW4gdHJhbnNhY3Rpb24gY29t
bWl0cy4KLQotICBAY2xhc3MgQXR0cmlidXRlQ2hhbmdlCi0gIEBuYW1lc3BhY2UgRFMKLSAgQHBy
aXZhdGUKLSAgQGNvbnN0cnVjdG9yCi0qLwotdmFyIEF0dHJpYnV0ZUNoYW5nZSA9IERTLkF0dHJp
YnV0ZUNoYW5nZSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHsKLSAgdGhpcy5yZWNvcmQgPSBvcHRpb25z
LnJlY29yZDsKLSAgdGhpcy5zdG9yZSA9IG9wdGlvbnMuc3RvcmU7Ci0gIHRoaXMubmFtZSA9IG9w
dGlvbnMubmFtZTsKLSAgdGhpcy52YWx1ZSA9IG9wdGlvbnMudmFsdWU7Ci0gIHRoaXMub2xkVmFs
dWUgPSBvcHRpb25zLm9sZFZhbHVlOwotfTsKLQotQXR0cmlidXRlQ2hhbmdlLmNyZWF0ZUNoYW5n
ZSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHsKLSAgcmV0dXJuIG5ldyBBdHRyaWJ1dGVDaGFuZ2Uob3B0
aW9ucyk7Ci19OwotCi1BdHRyaWJ1dGVDaGFuZ2UucHJvdG90eXBlID0gewotICBzeW5jOiBmdW5j
dGlvbigpIHsKLSAgICBpZiAodGhpcy52YWx1ZSAhPT0gdGhpcy5vbGRWYWx1ZSkgewotICAgICAg
dGhpcy5yZWNvcmQuc2VuZCgnYmVjb21lRGlydHknKTsKLSAgICAgIHRoaXMucmVjb3JkLnVwZGF0
ZVJlY29yZEFycmF5c0xhdGVyKCk7Ci0gICAgfQotCi0gICAgLy8gVE9ETzogVXNlIHRoaXMgb2Jq
ZWN0IGluIHRoZSBjb21taXQgcHJvY2VzcwotICAgIHRoaXMuZGVzdHJveSgpOwotICB9LAotCi0g
IC8qKgotICAgIElmIHRoZSBBdHRyaWJ1dGVDaGFuZ2UgaXMgZGVzdHJveWVkIChlaXRoZXIgYnkg
YmVpbmcgcm9sbGVkIGJhY2sKLSAgICBvciBiZWluZyBjb21taXR0ZWQpLCByZW1vdmUgaXQgZnJv
bSB0aGUgbGlzdCBvZiBwZW5kaW5nIGNoYW5nZXMKLSAgICBvbiB0aGUgcmVjb3JkLgotCi0gICAg
QG1ldGhvZCBkZXN0cm95Ci0gICovCi0gIGRlc3Ryb3k6IGZ1bmN0aW9uKCkgewotICAgIGRlbGV0
ZSB0aGlzLnJlY29yZC5fY2hhbmdlc1RvU3luY1t0aGlzLm5hbWVdOwotICB9Ci19OwotCi19KSgp
OwotCi0KLQotKGZ1bmN0aW9uKCkgewotLyoqCi0gIEBtb2R1bGUgZW1iZXItZGF0YQotKi8KLQot
dmFyIGdldCA9IEVtYmVyLmdldCwgc2V0ID0gRW1iZXIuc2V0OwotdmFyIGZvckVhY2ggPSBFbWJl
ci5FbnVtZXJhYmxlVXRpbHMuZm9yRWFjaDsKLQotLyoqCi0gIEBjbGFzcyBSZWxhdGlvbnNoaXBD
aGFuZ2UKLSAgQG5hbWVzcGFjZSBEUwotICBAcHJpdmF0ZQotICBAY29uc3RydWN0b3IKLSovCi1E
Uy5SZWxhdGlvbnNoaXBDaGFuZ2UgPSBmdW5jdGlvbihvcHRpb25zKSB7Ci0gIHRoaXMucGFyZW50
UmVjb3JkID0gb3B0aW9ucy5wYXJlbnRSZWNvcmQ7Ci0gIHRoaXMuY2hpbGRSZWNvcmQgPSBvcHRp
b25zLmNoaWxkUmVjb3JkOwotICB0aGlzLmZpcnN0UmVjb3JkID0gb3B0aW9ucy5maXJzdFJlY29y
ZDsKLSAgdGhpcy5maXJzdFJlY29yZEtpbmQgPSBvcHRpb25zLmZpcnN0UmVjb3JkS2luZDsKLSAg
dGhpcy5maXJzdFJlY29yZE5hbWUgPSBvcHRpb25zLmZpcnN0UmVjb3JkTmFtZTsKLSAgdGhpcy5z
ZWNvbmRSZWNvcmQgPSBvcHRpb25zLnNlY29uZFJlY29yZDsKLSAgdGhpcy5zZWNvbmRSZWNvcmRL
aW5kID0gb3B0aW9ucy5zZWNvbmRSZWNvcmRLaW5kOwotICB0aGlzLnNlY29uZFJlY29yZE5hbWUg
PSBvcHRpb25zLnNlY29uZFJlY29yZE5hbWU7Ci0gIHRoaXMuY2hhbmdlVHlwZSA9IG9wdGlvbnMu
Y2hhbmdlVHlwZTsKLSAgdGhpcy5zdG9yZSA9IG9wdGlvbnMuc3RvcmU7Ci0KLSAgdGhpcy5jb21t
aXR0ZWQgPSB7fTsKLX07Ci0KLS8qKgotICBAY2xhc3MgUmVsYXRpb25zaGlwQ2hhbmdlQWRkCi0g
IEBuYW1lc3BhY2UgRFMKLSAgQHByaXZhdGUKLSAgQGNvbnN0cnVjdG9yCi0qLwotRFMuUmVsYXRp
b25zaGlwQ2hhbmdlQWRkID0gZnVuY3Rpb24ob3B0aW9ucyl7Ci0gIERTLlJlbGF0aW9uc2hpcENo
YW5nZS5jYWxsKHRoaXMsIG9wdGlvbnMpOwotfTsKLQotLyoqCi0gIEBjbGFzcyBSZWxhdGlvbnNo
aXBDaGFuZ2VSZW1vdmUKLSAgQG5hbWVzcGFjZSBEUwotICBAcHJpdmF0ZQotICBAY29uc3RydWN0
b3IKLSovCi1EUy5SZWxhdGlvbnNoaXBDaGFuZ2VSZW1vdmUgPSBmdW5jdGlvbihvcHRpb25zKXsK
LSAgRFMuUmVsYXRpb25zaGlwQ2hhbmdlLmNhbGwodGhpcywgb3B0aW9ucyk7Ci19OwotCi1EUy5S
ZWxhdGlvbnNoaXBDaGFuZ2UuY3JlYXRlID0gZnVuY3Rpb24ob3B0aW9ucykgewotICByZXR1cm4g
bmV3IERTLlJlbGF0aW9uc2hpcENoYW5nZShvcHRpb25zKTsKLX07Ci0KLURTLlJlbGF0aW9uc2hp
cENoYW5nZUFkZC5jcmVhdGUgPSBmdW5jdGlvbihvcHRpb25zKSB7Ci0gIHJldHVybiBuZXcgRFMu
UmVsYXRpb25zaGlwQ2hhbmdlQWRkKG9wdGlvbnMpOwotfTsKLQotRFMuUmVsYXRpb25zaGlwQ2hh
bmdlUmVtb3ZlLmNyZWF0ZSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHsKLSAgcmV0dXJuIG5ldyBEUy5S
ZWxhdGlvbnNoaXBDaGFuZ2VSZW1vdmUob3B0aW9ucyk7Ci19OwotCi1EUy5PbmVUb01hbnlDaGFu
Z2UgPSB7fTsKLURTLk9uZVRvTm9uZUNoYW5nZSA9IHt9OwotRFMuTWFueVRvTm9uZUNoYW5nZSA9
IHt9OwotRFMuT25lVG9PbmVDaGFuZ2UgPSB7fTsKLURTLk1hbnlUb01hbnlDaGFuZ2UgPSB7fTsK
LQotRFMuUmVsYXRpb25zaGlwQ2hhbmdlLl9jcmVhdGVDaGFuZ2UgPSBmdW5jdGlvbihvcHRpb25z
KXsKLSAgaWYob3B0aW9ucy5jaGFuZ2VUeXBlID09PSAiYWRkIil7Ci0gICAgcmV0dXJuIERTLlJl
bGF0aW9uc2hpcENoYW5nZUFkZC5jcmVhdGUob3B0aW9ucyk7Ci0gIH0KLSAgaWYob3B0aW9ucy5j
aGFuZ2VUeXBlID09PSAicmVtb3ZlIil7Ci0gICAgcmV0dXJuIERTLlJlbGF0aW9uc2hpcENoYW5n
ZVJlbW92ZS5jcmVhdGUob3B0aW9ucyk7Ci0gIH0KLX07Ci0KLQotRFMuUmVsYXRpb25zaGlwQ2hh
bmdlLmRldGVybWluZVJlbGF0aW9uc2hpcFR5cGUgPSBmdW5jdGlvbihyZWNvcmRUeXBlLCBrbm93
blNpZGUpewotICB2YXIga25vd25LZXkgPSBrbm93blNpZGUua2V5LCBrZXksIG90aGVyS2luZDsK
LSAgdmFyIGtub3duS2luZCA9IGtub3duU2lkZS5raW5kOwotCi0gIHZhciBpbnZlcnNlID0gcmVj
b3JkVHlwZS5pbnZlcnNlRm9yKGtub3duS2V5KTsKLQotICBpZiAoaW52ZXJzZSl7Ci0gICAga2V5
ID0gaW52ZXJzZS5uYW1lOwotICAgIG90aGVyS2luZCA9IGludmVyc2Uua2luZDsKLSAgfQotCi0g
IGlmICghaW52ZXJzZSl7Ci0gICAgcmV0dXJuIGtub3duS2luZCA9PT0gImJlbG9uZ3NUbyIgPyAi
b25lVG9Ob25lIiA6ICJtYW55VG9Ob25lIjsKLSAgfQotICBlbHNlewotICAgIGlmKG90aGVyS2lu
ZCA9PT0gImJlbG9uZ3NUbyIpewotICAgICAgcmV0dXJuIGtub3duS2luZCA9PT0gImJlbG9uZ3NU
byIgPyAib25lVG9PbmUiIDogIm1hbnlUb09uZSI7Ci0gICAgfQotICAgIGVsc2V7Ci0gICAgICBy
ZXR1cm4ga25vd25LaW5kID09PSAiYmVsb25nc1RvIiA/ICJvbmVUb01hbnkiIDogIm1hbnlUb01h
bnkiOwotICAgIH0KLSAgfQotCi19OwotCi1EUy5SZWxhdGlvbnNoaXBDaGFuZ2UuY3JlYXRlQ2hh
bmdlID0gZnVuY3Rpb24oZmlyc3RSZWNvcmQsIHNlY29uZFJlY29yZCwgc3RvcmUsIG9wdGlvbnMp
ewotICAvLyBHZXQgdGhlIHR5cGUgb2YgdGhlIGNoaWxkIGJhc2VkIG9uIHRoZSBjaGlsZCdzIGNs
aWVudCBJRAotICB2YXIgZmlyc3RSZWNvcmRUeXBlID0gZmlyc3RSZWNvcmQuY29uc3RydWN0b3Is
IGNoYW5nZVR5cGU7Ci0gIGNoYW5nZVR5cGUgPSBEUy5SZWxhdGlvbnNoaXBDaGFuZ2UuZGV0ZXJt
aW5lUmVsYXRpb25zaGlwVHlwZShmaXJzdFJlY29yZFR5cGUsIG9wdGlvbnMpOwotICBpZiAoY2hh
bmdlVHlwZSA9PT0gIm9uZVRvTWFueSIpewotICAgIHJldHVybiBEUy5PbmVUb01hbnlDaGFuZ2Uu
Y3JlYXRlQ2hhbmdlKGZpcnN0UmVjb3JkLCBzZWNvbmRSZWNvcmQsIHN0b3JlLCBvcHRpb25zKTsK
LSAgfQotICBlbHNlIGlmIChjaGFuZ2VUeXBlID09PSAibWFueVRvT25lIil7Ci0gICAgcmV0dXJu
IERTLk9uZVRvTWFueUNoYW5nZS5jcmVhdGVDaGFuZ2Uoc2Vjb25kUmVjb3JkLCBmaXJzdFJlY29y
ZCwgc3RvcmUsIG9wdGlvbnMpOwotICB9Ci0gIGVsc2UgaWYgKGNoYW5nZVR5cGUgPT09ICJvbmVU
b05vbmUiKXsKLSAgICByZXR1cm4gRFMuT25lVG9Ob25lQ2hhbmdlLmNyZWF0ZUNoYW5nZShmaXJz
dFJlY29yZCwgc2Vjb25kUmVjb3JkLCBzdG9yZSwgb3B0aW9ucyk7Ci0gIH0KLSAgZWxzZSBpZiAo
Y2hhbmdlVHlwZSA9PT0gIm1hbnlUb05vbmUiKXsKLSAgICByZXR1cm4gRFMuTWFueVRvTm9uZUNo
YW5nZS5jcmVhdGVDaGFuZ2UoZmlyc3RSZWNvcmQsIHNlY29uZFJlY29yZCwgc3RvcmUsIG9wdGlv
bnMpOwotICB9Ci0gIGVsc2UgaWYgKGNoYW5nZVR5cGUgPT09ICJvbmVUb09uZSIpewotICAgIHJl
dHVybiBEUy5PbmVUb09uZUNoYW5nZS5jcmVhdGVDaGFuZ2UoZmlyc3RSZWNvcmQsIHNlY29uZFJl
Y29yZCwgc3RvcmUsIG9wdGlvbnMpOwotICB9Ci0gIGVsc2UgaWYgKGNoYW5nZVR5cGUgPT09ICJt
YW55VG9NYW55Iil7Ci0gICAgcmV0dXJuIERTLk1hbnlUb01hbnlDaGFuZ2UuY3JlYXRlQ2hhbmdl
KGZpcnN0UmVjb3JkLCBzZWNvbmRSZWNvcmQsIHN0b3JlLCBvcHRpb25zKTsKLSAgfQotfTsKLQot
RFMuT25lVG9Ob25lQ2hhbmdlLmNyZWF0ZUNoYW5nZSA9IGZ1bmN0aW9uKGNoaWxkUmVjb3JkLCBw
YXJlbnRSZWNvcmQsIHN0b3JlLCBvcHRpb25zKSB7Ci0gIHZhciBrZXkgPSBvcHRpb25zLmtleTsK
LSAgdmFyIGNoYW5nZSA9IERTLlJlbGF0aW9uc2hpcENoYW5nZS5fY3JlYXRlQ2hhbmdlKHsKLSAg
ICAgIHBhcmVudFJlY29yZDogcGFyZW50UmVjb3JkLAotICAgICAgY2hpbGRSZWNvcmQ6IGNoaWxk
UmVjb3JkLAotICAgICAgZmlyc3RSZWNvcmQ6IGNoaWxkUmVjb3JkLAotICAgICAgc3RvcmU6IHN0
b3JlLAotICAgICAgY2hhbmdlVHlwZTogb3B0aW9ucy5jaGFuZ2VUeXBlLAotICAgICAgZmlyc3RS
ZWNvcmROYW1lOiBrZXksCi0gICAgICBmaXJzdFJlY29yZEtpbmQ6ICJiZWxvbmdzVG8iCi0gIH0p
OwotCi0gIHN0b3JlLmFkZFJlbGF0aW9uc2hpcENoYW5nZUZvcihjaGlsZFJlY29yZCwga2V5LCBw
YXJlbnRSZWNvcmQsIG51bGwsIGNoYW5nZSk7Ci0KLSAgcmV0dXJuIGNoYW5nZTsKLX07Ci0KLURT
Lk1hbnlUb05vbmVDaGFuZ2UuY3JlYXRlQ2hhbmdlID0gZnVuY3Rpb24oY2hpbGRSZWNvcmQsIHBh
cmVudFJlY29yZCwgc3RvcmUsIG9wdGlvbnMpIHsKLSAgdmFyIGtleSA9IG9wdGlvbnMua2V5Owot
ICB2YXIgY2hhbmdlID0gRFMuUmVsYXRpb25zaGlwQ2hhbmdlLl9jcmVhdGVDaGFuZ2UoewotICAg
ICAgcGFyZW50UmVjb3JkOiBjaGlsZFJlY29yZCwKLSAgICAgIGNoaWxkUmVjb3JkOiBwYXJlbnRS
ZWNvcmQsCi0gICAgICBzZWNvbmRSZWNvcmQ6IGNoaWxkUmVjb3JkLAotICAgICAgc3RvcmU6IHN0
b3JlLAotICAgICAgY2hhbmdlVHlwZTogb3B0aW9ucy5jaGFuZ2VUeXBlLAotICAgICAgc2Vjb25k
UmVjb3JkTmFtZTogb3B0aW9ucy5rZXksCi0gICAgICBzZWNvbmRSZWNvcmRLaW5kOiAiaGFzTWFu
eSIKLSAgfSk7Ci0KLSAgc3RvcmUuYWRkUmVsYXRpb25zaGlwQ2hhbmdlRm9yKGNoaWxkUmVjb3Jk
LCBrZXksIHBhcmVudFJlY29yZCwgbnVsbCwgY2hhbmdlKTsKLSAgcmV0dXJuIGNoYW5nZTsKLX07
Ci0KLQotRFMuTWFueVRvTWFueUNoYW5nZS5jcmVhdGVDaGFuZ2UgPSBmdW5jdGlvbihjaGlsZFJl
Y29yZCwgcGFyZW50UmVjb3JkLCBzdG9yZSwgb3B0aW9ucykgewotICAvLyBJZiB0aGUgbmFtZSBv
ZiB0aGUgYmVsb25nc1RvIHNpZGUgb2YgdGhlIHJlbGF0aW9uc2hpcCBpcyBzcGVjaWZpZWQsCi0g
IC8vIHVzZSB0aGF0Ci0gIC8vIElmIHRoZSB0eXBlIG9mIHRoZSBwYXJlbnQgaXMgc3BlY2lmaWVk
LCBsb29rIGl0IHVwIG9uIHRoZSBjaGlsZCdzIHR5cGUKLSAgLy8gZGVmaW5pdGlvbi4KLSAgdmFy
IGtleSA9IG9wdGlvbnMua2V5OwotCi0gIHZhciBjaGFuZ2UgPSBEUy5SZWxhdGlvbnNoaXBDaGFu
Z2UuX2NyZWF0ZUNoYW5nZSh7Ci0gICAgICBwYXJlbnRSZWNvcmQ6IHBhcmVudFJlY29yZCwKLSAg
ICAgIGNoaWxkUmVjb3JkOiBjaGlsZFJlY29yZCwKLSAgICAgIGZpcnN0UmVjb3JkOiBjaGlsZFJl
Y29yZCwKLSAgICAgIHNlY29uZFJlY29yZDogcGFyZW50UmVjb3JkLAotICAgICAgZmlyc3RSZWNv
cmRLaW5kOiAiaGFzTWFueSIsCi0gICAgICBzZWNvbmRSZWNvcmRLaW5kOiAiaGFzTWFueSIsCi0g
ICAgICBzdG9yZTogc3RvcmUsCi0gICAgICBjaGFuZ2VUeXBlOiBvcHRpb25zLmNoYW5nZVR5cGUs
Ci0gICAgICBmaXJzdFJlY29yZE5hbWU6ICBrZXkKLSAgfSk7Ci0KLSAgc3RvcmUuYWRkUmVsYXRp
b25zaGlwQ2hhbmdlRm9yKGNoaWxkUmVjb3JkLCBrZXksIHBhcmVudFJlY29yZCwgbnVsbCwgY2hh
bmdlKTsKLQotCi0gIHJldHVybiBjaGFuZ2U7Ci19OwotCi1EUy5PbmVUb09uZUNoYW5nZS5jcmVh
dGVDaGFuZ2UgPSBmdW5jdGlvbihjaGlsZFJlY29yZCwgcGFyZW50UmVjb3JkLCBzdG9yZSwgb3B0
aW9ucykgewotICB2YXIga2V5OwotCi0gIC8vIElmIHRoZSBuYW1lIG9mIHRoZSBiZWxvbmdzVG8g
c2lkZSBvZiB0aGUgcmVsYXRpb25zaGlwIGlzIHNwZWNpZmllZCwKLSAgLy8gdXNlIHRoYXQKLSAg
Ly8gSWYgdGhlIHR5cGUgb2YgdGhlIHBhcmVudCBpcyBzcGVjaWZpZWQsIGxvb2sgaXQgdXAgb24g
dGhlIGNoaWxkJ3MgdHlwZQotICAvLyBkZWZpbml0aW9uLgotICBpZiAob3B0aW9ucy5wYXJlbnRU
eXBlKSB7Ci0gICAga2V5ID0gb3B0aW9ucy5wYXJlbnRUeXBlLmludmVyc2VGb3Iob3B0aW9ucy5r
ZXkpLm5hbWU7Ci0gIH0gZWxzZSBpZiAob3B0aW9ucy5rZXkpIHsKLSAgICBrZXkgPSBvcHRpb25z
LmtleTsKLSAgfSBlbHNlIHsKLSAgICBFbWJlci5hc3NlcnQoIllvdSBtdXN0IHBhc3MgZWl0aGVy
IGEgcGFyZW50VHlwZSBvciBiZWxvbmdzVG9OYW1lIG9wdGlvbiB0byBPbmVUb01hbnlDaGFuZ2Uu
Zm9yQ2hpbGRBbmRQYXJlbnQiLCBmYWxzZSk7Ci0gIH0KLQotICB2YXIgY2hhbmdlID0gRFMuUmVs
YXRpb25zaGlwQ2hhbmdlLl9jcmVhdGVDaGFuZ2UoewotICAgICAgcGFyZW50UmVjb3JkOiBwYXJl
bnRSZWNvcmQsCi0gICAgICBjaGlsZFJlY29yZDogY2hpbGRSZWNvcmQsCi0gICAgICBmaXJzdFJl
Y29yZDogY2hpbGRSZWNvcmQsCi0gICAgICBzZWNvbmRSZWNvcmQ6IHBhcmVudFJlY29yZCwKLSAg
ICAgIGZpcnN0UmVjb3JkS2luZDogImJlbG9uZ3NUbyIsCi0gICAgICBzZWNvbmRSZWNvcmRLaW5k
OiAiYmVsb25nc1RvIiwKLSAgICAgIHN0b3JlOiBzdG9yZSwKLSAgICAgIGNoYW5nZVR5cGU6IG9w
dGlvbnMuY2hhbmdlVHlwZSwKLSAgICAgIGZpcnN0UmVjb3JkTmFtZTogIGtleQotICB9KTsKLQot
ICBzdG9yZS5hZGRSZWxhdGlvbnNoaXBDaGFuZ2VGb3IoY2hpbGRSZWNvcmQsIGtleSwgcGFyZW50
UmVjb3JkLCBudWxsLCBjaGFuZ2UpOwotCi0KLSAgcmV0dXJuIGNoYW5nZTsKLX07Ci0KLURTLk9u
ZVRvT25lQ2hhbmdlLm1haW50YWluSW52YXJpYW50ID0gZnVuY3Rpb24ob3B0aW9ucywgc3RvcmUs
IGNoaWxkUmVjb3JkLCBrZXkpewotICBpZiAob3B0aW9ucy5jaGFuZ2VUeXBlID09PSAiYWRkIiAm
JiBzdG9yZS5yZWNvcmRJc01hdGVyaWFsaXplZChjaGlsZFJlY29yZCkpIHsKLSAgICB2YXIgb2xk
UGFyZW50ID0gZ2V0KGNoaWxkUmVjb3JkLCBrZXkpOwotICAgIGlmIChvbGRQYXJlbnQpewotICAg
ICAgdmFyIGNvcnJlc3BvbmRpbmdDaGFuZ2UgPSBEUy5PbmVUb09uZUNoYW5nZS5jcmVhdGVDaGFu
Z2UoY2hpbGRSZWNvcmQsIG9sZFBhcmVudCwgc3RvcmUsIHsKLSAgICAgICAgICBwYXJlbnRUeXBl
OiBvcHRpb25zLnBhcmVudFR5cGUsCi0gICAgICAgICAgaGFzTWFueU5hbWU6IG9wdGlvbnMuaGFz
TWFueU5hbWUsCi0gICAgICAgICAgY2hhbmdlVHlwZTogInJlbW92ZSIsCi0gICAgICAgICAga2V5
OiBvcHRpb25zLmtleQotICAgICAgICB9KTsKLSAgICAgIHN0b3JlLmFkZFJlbGF0aW9uc2hpcENo
YW5nZUZvcihjaGlsZFJlY29yZCwga2V5LCBvcHRpb25zLnBhcmVudFJlY29yZCAsIG51bGwsIGNv
cnJlc3BvbmRpbmdDaGFuZ2UpOwotICAgICBjb3JyZXNwb25kaW5nQ2hhbmdlLnN5bmMoKTsKLSAg
ICB9Ci0gIH0KLX07Ci0KLURTLk9uZVRvTWFueUNoYW5nZS5jcmVhdGVDaGFuZ2UgPSBmdW5jdGlv
bihjaGlsZFJlY29yZCwgcGFyZW50UmVjb3JkLCBzdG9yZSwgb3B0aW9ucykgewotICB2YXIga2V5
OwotCi0gIC8vIElmIHRoZSBuYW1lIG9mIHRoZSBiZWxvbmdzVG8gc2lkZSBvZiB0aGUgcmVsYXRp
b25zaGlwIGlzIHNwZWNpZmllZCwKLSAgLy8gdXNlIHRoYXQKLSAgLy8gSWYgdGhlIHR5cGUgb2Yg
dGhlIHBhcmVudCBpcyBzcGVjaWZpZWQsIGxvb2sgaXQgdXAgb24gdGhlIGNoaWxkJ3MgdHlwZQot
ICAvLyBkZWZpbml0aW9uLgotICBpZiAob3B0aW9ucy5wYXJlbnRUeXBlKSB7Ci0gICAga2V5ID0g
b3B0aW9ucy5wYXJlbnRUeXBlLmludmVyc2VGb3Iob3B0aW9ucy5rZXkpLm5hbWU7Ci0gICAgRFMu
T25lVG9NYW55Q2hhbmdlLm1haW50YWluSW52YXJpYW50KCBvcHRpb25zLCBzdG9yZSwgY2hpbGRS
ZWNvcmQsIGtleSApOwotICB9IGVsc2UgaWYgKG9wdGlvbnMua2V5KSB7Ci0gICAga2V5ID0gb3B0
aW9ucy5rZXk7Ci0gIH0gZWxzZSB7Ci0gICAgRW1iZXIuYXNzZXJ0KCJZb3UgbXVzdCBwYXNzIGVp
dGhlciBhIHBhcmVudFR5cGUgb3IgYmVsb25nc1RvTmFtZSBvcHRpb24gdG8gT25lVG9NYW55Q2hh
bmdlLmZvckNoaWxkQW5kUGFyZW50IiwgZmFsc2UpOwotICB9Ci0KLSAgdmFyIGNoYW5nZSA9IERT
LlJlbGF0aW9uc2hpcENoYW5nZS5fY3JlYXRlQ2hhbmdlKHsKLSAgICAgIHBhcmVudFJlY29yZDog
cGFyZW50UmVjb3JkLAotICAgICAgY2hpbGRSZWNvcmQ6IGNoaWxkUmVjb3JkLAotICAgICAgZmly
c3RSZWNvcmQ6IGNoaWxkUmVjb3JkLAotICAgICAgc2Vjb25kUmVjb3JkOiBwYXJlbnRSZWNvcmQs
Ci0gICAgICBmaXJzdFJlY29yZEtpbmQ6ICJiZWxvbmdzVG8iLAotICAgICAgc2Vjb25kUmVjb3Jk
S2luZDogImhhc01hbnkiLAotICAgICAgc3RvcmU6IHN0b3JlLAotICAgICAgY2hhbmdlVHlwZTog
b3B0aW9ucy5jaGFuZ2VUeXBlLAotICAgICAgZmlyc3RSZWNvcmROYW1lOiAga2V5Ci0gIH0pOwot
Ci0gIHN0b3JlLmFkZFJlbGF0aW9uc2hpcENoYW5nZUZvcihjaGlsZFJlY29yZCwga2V5LCBwYXJl
bnRSZWNvcmQsIGNoYW5nZS5nZXRTZWNvbmRSZWNvcmROYW1lKCksIGNoYW5nZSk7Ci0KLQotICBy
ZXR1cm4gY2hhbmdlOwotfTsKLQotCi1EUy5PbmVUb01hbnlDaGFuZ2UubWFpbnRhaW5JbnZhcmlh
bnQgPSBmdW5jdGlvbihvcHRpb25zLCBzdG9yZSwgY2hpbGRSZWNvcmQsIGtleSl7Ci0gIGlmIChv
cHRpb25zLmNoYW5nZVR5cGUgPT09ICJhZGQiICYmIGNoaWxkUmVjb3JkKSB7Ci0gICAgdmFyIG9s
ZFBhcmVudCA9IGdldChjaGlsZFJlY29yZCwga2V5KTsKLSAgICBpZiAob2xkUGFyZW50KXsKLSAg
ICAgIHZhciBjb3JyZXNwb25kaW5nQ2hhbmdlID0gRFMuT25lVG9NYW55Q2hhbmdlLmNyZWF0ZUNo
YW5nZShjaGlsZFJlY29yZCwgb2xkUGFyZW50LCBzdG9yZSwgewotICAgICAgICAgIHBhcmVudFR5
cGU6IG9wdGlvbnMucGFyZW50VHlwZSwKLSAgICAgICAgICBoYXNNYW55TmFtZTogb3B0aW9ucy5o
YXNNYW55TmFtZSwKLSAgICAgICAgICBjaGFuZ2VUeXBlOiAicmVtb3ZlIiwKLSAgICAgICAgICBr
ZXk6IG9wdGlvbnMua2V5Ci0gICAgICAgIH0pOwotICAgICAgc3RvcmUuYWRkUmVsYXRpb25zaGlw
Q2hhbmdlRm9yKGNoaWxkUmVjb3JkLCBrZXksIG9wdGlvbnMucGFyZW50UmVjb3JkLCBjb3JyZXNw
b25kaW5nQ2hhbmdlLmdldFNlY29uZFJlY29yZE5hbWUoKSwgY29ycmVzcG9uZGluZ0NoYW5nZSk7
Ci0gICAgICBjb3JyZXNwb25kaW5nQ2hhbmdlLnN5bmMoKTsKLSAgICB9Ci0gIH0KLX07Ci0KLS8q
KgotICBAY2xhc3MgUmVsYXRpb25zaGlwQ2hhbmdlCi0gIEBuYW1lc3BhY2UgRFMKLSovCi1EUy5S
ZWxhdGlvbnNoaXBDaGFuZ2UucHJvdG90eXBlID0gewotCi0gIGdldFNlY29uZFJlY29yZE5hbWU6
IGZ1bmN0aW9uKCkgewotICAgIHZhciBuYW1lID0gdGhpcy5zZWNvbmRSZWNvcmROYW1lLCBwYXJl
bnQ7Ci0KLSAgICBpZiAoIW5hbWUpIHsKLSAgICAgIHBhcmVudCA9IHRoaXMuc2Vjb25kUmVjb3Jk
OwotICAgICAgaWYgKCFwYXJlbnQpIHsgcmV0dXJuOyB9Ci0KLSAgICAgIHZhciBjaGlsZFR5cGUg
PSB0aGlzLmZpcnN0UmVjb3JkLmNvbnN0cnVjdG9yOwotICAgICAgdmFyIGludmVyc2UgPSBjaGls
ZFR5cGUuaW52ZXJzZUZvcih0aGlzLmZpcnN0UmVjb3JkTmFtZSk7Ci0gICAgICB0aGlzLnNlY29u
ZFJlY29yZE5hbWUgPSBpbnZlcnNlLm5hbWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRoaXMuc2Vj
b25kUmVjb3JkTmFtZTsKLSAgfSwKLQotICAvKioKLSAgICBHZXQgdGhlIG5hbWUgb2YgdGhlIHJl
bGF0aW9uc2hpcCBvbiB0aGUgYmVsb25nc1RvIHNpZGUuCi0KLSAgICBAbWV0aG9kIGdldEZpcnN0
UmVjb3JkTmFtZQotICAgIEByZXR1cm4ge1N0cmluZ30KLSAgKi8KLSAgZ2V0Rmlyc3RSZWNvcmRO
YW1lOiBmdW5jdGlvbigpIHsKLSAgICB2YXIgbmFtZSA9IHRoaXMuZmlyc3RSZWNvcmROYW1lOwot
ICAgIHJldHVybiBuYW1lOwotICB9LAotCi0gIC8qKgotICAgIEBtZXRob2QgZGVzdHJveQotICAg
IEBwcml2YXRlCi0gICovCi0gIGRlc3Ryb3k6IGZ1bmN0aW9uKCkgewotICAgIHZhciBjaGlsZFJl
Y29yZCA9IHRoaXMuY2hpbGRSZWNvcmQsCi0gICAgICAgIGJlbG9uZ3NUb05hbWUgPSB0aGlzLmdl
dEZpcnN0UmVjb3JkTmFtZSgpLAotICAgICAgICBoYXNNYW55TmFtZSA9IHRoaXMuZ2V0U2Vjb25k
UmVjb3JkTmFtZSgpLAotICAgICAgICBzdG9yZSA9IHRoaXMuc3RvcmU7Ci0KLSAgICBzdG9yZS5y
ZW1vdmVSZWxhdGlvbnNoaXBDaGFuZ2VGb3IoY2hpbGRSZWNvcmQsIGJlbG9uZ3NUb05hbWUsIHRo
aXMucGFyZW50UmVjb3JkLCBoYXNNYW55TmFtZSwgdGhpcy5jaGFuZ2VUeXBlKTsKLSAgfSwKLQot
ICBnZXRTZWNvbmRSZWNvcmQ6IGZ1bmN0aW9uKCl7Ci0gICAgcmV0dXJuIHRoaXMuc2Vjb25kUmVj
b3JkOwotICB9LAotCi0gIC8qKgotICAgIEBtZXRob2QgZ2V0Rmlyc3RSZWNvcmQKLSAgICBAcHJp
dmF0ZQotICAqLwotICBnZXRGaXJzdFJlY29yZDogZnVuY3Rpb24oKSB7Ci0gICAgcmV0dXJuIHRo
aXMuZmlyc3RSZWNvcmQ7Ci0gIH0sCi0KLSAgY29hbGVzY2U6IGZ1bmN0aW9uKCl7Ci0gICAgdmFy
IHJlbGF0aW9uc2hpcFBhaXJzID0gdGhpcy5zdG9yZS5yZWxhdGlvbnNoaXBDaGFuZ2VQYWlyc0Zv
cih0aGlzLmZpcnN0UmVjb3JkKTsKLSAgICBmb3JFYWNoKHJlbGF0aW9uc2hpcFBhaXJzLCBmdW5j
dGlvbihwYWlyKXsKLSAgICAgIHZhciBhZGRlZENoYW5nZSA9IHBhaXJbImFkZCJdOwotICAgICAg
dmFyIHJlbW92ZWRDaGFuZ2UgPSBwYWlyWyJyZW1vdmUiXTsKLSAgICAgIGlmKGFkZGVkQ2hhbmdl
ICYmIHJlbW92ZWRDaGFuZ2UpIHsKLSAgICAgICAgYWRkZWRDaGFuZ2UuZGVzdHJveSgpOwotICAg
ICAgICByZW1vdmVkQ2hhbmdlLmRlc3Ryb3koKTsKLSAgICAgIH0KLSAgICB9KTsKLSAgfQotfTsK
LQotRFMuUmVsYXRpb25zaGlwQ2hhbmdlQWRkLnByb3RvdHlwZSA9IEVtYmVyLmNyZWF0ZShEUy5S
ZWxhdGlvbnNoaXBDaGFuZ2UuY3JlYXRlKHt9KSk7Ci1EUy5SZWxhdGlvbnNoaXBDaGFuZ2VSZW1v
dmUucHJvdG90eXBlID0gRW1iZXIuY3JlYXRlKERTLlJlbGF0aW9uc2hpcENoYW5nZS5jcmVhdGUo
e30pKTsKLQotLy8gdGhlIG9iamVjdCBpcyBhIHZhbHVlLCBhbmQgbm90IGEgcHJvbWlzZQotZnVu
Y3Rpb24gaXNWYWx1ZShvYmplY3QpIHsKLSAgcmV0dXJuIHR5cGVvZiBvYmplY3QgPT09ICdvYmpl
Y3QnICYmICghb2JqZWN0LnRoZW4gfHwgdHlwZW9mIG9iamVjdC50aGVuICE9PSAnZnVuY3Rpb24n
KTsKLX0KLQotRFMuUmVsYXRpb25zaGlwQ2hhbmdlQWRkLnByb3RvdHlwZS5jaGFuZ2VUeXBlID0g
ImFkZCI7Ci1EUy5SZWxhdGlvbnNoaXBDaGFuZ2VBZGQucHJvdG90eXBlLnN5bmMgPSBmdW5jdGlv
bigpIHsKLSAgdmFyIHNlY29uZFJlY29yZE5hbWUgPSB0aGlzLmdldFNlY29uZFJlY29yZE5hbWUo
KSwKLSAgICAgIGZpcnN0UmVjb3JkTmFtZSA9IHRoaXMuZ2V0Rmlyc3RSZWNvcmROYW1lKCksCi0g
ICAgICBmaXJzdFJlY29yZCA9IHRoaXMuZ2V0Rmlyc3RSZWNvcmQoKSwKLSAgICAgIHNlY29uZFJl
Y29yZCA9IHRoaXMuZ2V0U2Vjb25kUmVjb3JkKCk7Ci0KLSAgLy9FbWJlci5hc3NlcnQoIllvdSBz
cGVjaWZpZWQgYSBoYXNNYW55ICgiICsgaGFzTWFueU5hbWUgKyAiKSBvbiAiICsgKCFiZWxvbmdz
VG9OYW1lICYmIChuZXdQYXJlbnQgfHwgb2xkUGFyZW50IHx8IHRoaXMubGFzdFBhcmVudCkuY29u
c3RydWN0b3IpICsgIiBidXQgZGlkIG5vdCBzcGVjaWZ5IGFuIGludmVyc2UgYmVsb25nc1RvIG9u
ICIgKyBjaGlsZC5jb25zdHJ1Y3RvciwgYmVsb25nc1RvTmFtZSk7Ci0gIC8vRW1iZXIuYXNzZXJ0
KCJZb3Ugc3BlY2lmaWVkIGEgYmVsb25nc1RvICgiICsgYmVsb25nc1RvTmFtZSArICIpIG9uICIg
KyBjaGlsZC5jb25zdHJ1Y3RvciArICIgYnV0IGRpZCBub3Qgc3BlY2lmeSBhbiBpbnZlcnNlIGhh
c01hbnkgb24gIiArICghaGFzTWFueU5hbWUgJiYgKG5ld1BhcmVudCB8fCBvbGRQYXJlbnQgfHwg
dGhpcy5sYXN0UGFyZW50UmVjb3JkKS5jb25zdHJ1Y3RvciksIGhhc01hbnlOYW1lKTsKLQotICBp
ZiAoc2Vjb25kUmVjb3JkIGluc3RhbmNlb2YgRFMuTW9kZWwgJiYgZmlyc3RSZWNvcmQgaW5zdGFu
Y2VvZiBEUy5Nb2RlbCkgewotICAgIGlmKHRoaXMuc2Vjb25kUmVjb3JkS2luZCA9PT0gImJlbG9u
Z3NUbyIpewotICAgICAgc2Vjb25kUmVjb3JkLnN1c3BlbmRSZWxhdGlvbnNoaXBPYnNlcnZlcnMo
ZnVuY3Rpb24oKXsKLSAgICAgICAgc2V0KHNlY29uZFJlY29yZCwgc2Vjb25kUmVjb3JkTmFtZSwg
Zmlyc3RSZWNvcmQpOwotICAgICAgfSk7Ci0KLSAgICAgfQotICAgICBlbHNlIGlmKHRoaXMuc2Vj
b25kUmVjb3JkS2luZCA9PT0gImhhc01hbnkiKXsKLSAgICAgIHNlY29uZFJlY29yZC5zdXNwZW5k
UmVsYXRpb25zaGlwT2JzZXJ2ZXJzKGZ1bmN0aW9uKCl7Ci0gICAgICAgIHZhciByZWxhdGlvbnNo
aXAgPSBnZXQoc2Vjb25kUmVjb3JkLCBzZWNvbmRSZWNvcmROYW1lKTsKLSAgICAgICAgaWYgKGlz
VmFsdWUocmVsYXRpb25zaGlwKSkgeyByZWxhdGlvbnNoaXAuYWRkT2JqZWN0KGZpcnN0UmVjb3Jk
KTsgfQotICAgICAgfSk7Ci0gICAgfQotICB9Ci0KLSAgaWYgKGZpcnN0UmVjb3JkIGluc3RhbmNl
b2YgRFMuTW9kZWwgJiYgc2Vjb25kUmVjb3JkIGluc3RhbmNlb2YgRFMuTW9kZWwgJiYgZ2V0KGZp
cnN0UmVjb3JkLCBmaXJzdFJlY29yZE5hbWUpICE9PSBzZWNvbmRSZWNvcmQpIHsKLSAgICBpZih0
aGlzLmZpcnN0UmVjb3JkS2luZCA9PT0gImJlbG9uZ3NUbyIpewotICAgICAgZmlyc3RSZWNvcmQu
c3VzcGVuZFJlbGF0aW9uc2hpcE9ic2VydmVycyhmdW5jdGlvbigpewotICAgICAgICBzZXQoZmly
c3RSZWNvcmQsIGZpcnN0UmVjb3JkTmFtZSwgc2Vjb25kUmVjb3JkKTsKLSAgICAgIH0pOwotICAg
IH0KLSAgICBlbHNlIGlmKHRoaXMuZmlyc3RSZWNvcmRLaW5kID09PSAiaGFzTWFueSIpewotICAg
ICAgZmlyc3RSZWNvcmQuc3VzcGVuZFJlbGF0aW9uc2hpcE9ic2VydmVycyhmdW5jdGlvbigpewot
ICAgICAgICB2YXIgcmVsYXRpb25zaGlwID0gZ2V0KGZpcnN0UmVjb3JkLCBmaXJzdFJlY29yZE5h
bWUpOwotICAgICAgICBpZiAoaXNWYWx1ZShyZWxhdGlvbnNoaXApKSB7IHJlbGF0aW9uc2hpcC5h
ZGRPYmplY3Qoc2Vjb25kUmVjb3JkKTsgfQotICAgICAgfSk7Ci0gICAgfQotICB9Ci0KLSAgdGhp
cy5jb2FsZXNjZSgpOwotfTsKLQotRFMuUmVsYXRpb25zaGlwQ2hhbmdlUmVtb3ZlLnByb3RvdHlw
ZS5jaGFuZ2VUeXBlID0gInJlbW92ZSI7Ci1EUy5SZWxhdGlvbnNoaXBDaGFuZ2VSZW1vdmUucHJv
dG90eXBlLnN5bmMgPSBmdW5jdGlvbigpIHsKLSAgdmFyIHNlY29uZFJlY29yZE5hbWUgPSB0aGlz
LmdldFNlY29uZFJlY29yZE5hbWUoKSwKLSAgICAgIGZpcnN0UmVjb3JkTmFtZSA9IHRoaXMuZ2V0
Rmlyc3RSZWNvcmROYW1lKCksCi0gICAgICBmaXJzdFJlY29yZCA9IHRoaXMuZ2V0Rmlyc3RSZWNv
cmQoKSwKLSAgICAgIHNlY29uZFJlY29yZCA9IHRoaXMuZ2V0U2Vjb25kUmVjb3JkKCk7Ci0KLSAg
Ly9FbWJlci5hc3NlcnQoIllvdSBzcGVjaWZpZWQgYSBoYXNNYW55ICgiICsgaGFzTWFueU5hbWUg
KyAiKSBvbiAiICsgKCFiZWxvbmdzVG9OYW1lICYmIChuZXdQYXJlbnQgfHwgb2xkUGFyZW50IHx8
IHRoaXMubGFzdFBhcmVudCkuY29uc3RydWN0b3IpICsgIiBidXQgZGlkIG5vdCBzcGVjaWZ5IGFu
IGludmVyc2UgYmVsb25nc1RvIG9uICIgKyBjaGlsZC5jb25zdHJ1Y3RvciwgYmVsb25nc1RvTmFt
ZSk7Ci0gIC8vRW1iZXIuYXNzZXJ0KCJZb3Ugc3BlY2lmaWVkIGEgYmVsb25nc1RvICgiICsgYmVs
b25nc1RvTmFtZSArICIpIG9uICIgKyBjaGlsZC5jb25zdHJ1Y3RvciArICIgYnV0IGRpZCBub3Qg
c3BlY2lmeSBhbiBpbnZlcnNlIGhhc01hbnkgb24gIiArICghaGFzTWFueU5hbWUgJiYgKG5ld1Bh
cmVudCB8fCBvbGRQYXJlbnQgfHwgdGhpcy5sYXN0UGFyZW50UmVjb3JkKS5jb25zdHJ1Y3Rvciks
IGhhc01hbnlOYW1lKTsKLQotICBpZiAoc2Vjb25kUmVjb3JkIGluc3RhbmNlb2YgRFMuTW9kZWwg
JiYgZmlyc3RSZWNvcmQgaW5zdGFuY2VvZiBEUy5Nb2RlbCkgewotICAgIGlmKHRoaXMuc2Vjb25k
UmVjb3JkS2luZCA9PT0gImJlbG9uZ3NUbyIpewotICAgICAgc2Vjb25kUmVjb3JkLnN1c3BlbmRS
ZWxhdGlvbnNoaXBPYnNlcnZlcnMoZnVuY3Rpb24oKXsKLSAgICAgICAgc2V0KHNlY29uZFJlY29y
ZCwgc2Vjb25kUmVjb3JkTmFtZSwgbnVsbCk7Ci0gICAgICB9KTsKLSAgICB9Ci0gICAgZWxzZSBp
Zih0aGlzLnNlY29uZFJlY29yZEtpbmQgPT09ICJoYXNNYW55Iil7Ci0gICAgICBzZWNvbmRSZWNv
cmQuc3VzcGVuZFJlbGF0aW9uc2hpcE9ic2VydmVycyhmdW5jdGlvbigpewotICAgICAgICB2YXIg
cmVsYXRpb25zaGlwID0gZ2V0KHNlY29uZFJlY29yZCwgc2Vjb25kUmVjb3JkTmFtZSk7Ci0gICAg
ICAgIGlmIChpc1ZhbHVlKHJlbGF0aW9uc2hpcCkpIHsgcmVsYXRpb25zaGlwLnJlbW92ZU9iamVj
dChmaXJzdFJlY29yZCk7IH0KLSAgICAgIH0pOwotICAgIH0KLSAgfQotCi0gIGlmIChmaXJzdFJl
Y29yZCBpbnN0YW5jZW9mIERTLk1vZGVsICYmIGdldChmaXJzdFJlY29yZCwgZmlyc3RSZWNvcmRO
YW1lKSkgewotICAgIGlmKHRoaXMuZmlyc3RSZWNvcmRLaW5kID09PSAiYmVsb25nc1RvIil7Ci0g
ICAgICBmaXJzdFJlY29yZC5zdXNwZW5kUmVsYXRpb25zaGlwT2JzZXJ2ZXJzKGZ1bmN0aW9uKCl7
Ci0gICAgICAgIHNldChmaXJzdFJlY29yZCwgZmlyc3RSZWNvcmROYW1lLCBudWxsKTsKLSAgICAg
IH0pOwotICAgICB9Ci0gICAgIGVsc2UgaWYodGhpcy5maXJzdFJlY29yZEtpbmQgPT09ICJoYXNN
YW55Iil7Ci0gICAgICAgZmlyc3RSZWNvcmQuc3VzcGVuZFJlbGF0aW9uc2hpcE9ic2VydmVycyhm
dW5jdGlvbigpewotICAgICAgICAgdmFyIHJlbGF0aW9uc2hpcCA9IGdldChmaXJzdFJlY29yZCwg
Zmlyc3RSZWNvcmROYW1lKTsKLSAgICAgICAgIGlmIChpc1ZhbHVlKHJlbGF0aW9uc2hpcCkpIHsg
cmVsYXRpb25zaGlwLnJlbW92ZU9iamVjdChzZWNvbmRSZWNvcmQpOyB9Ci0gICAgICB9KTsKLSAg
ICB9Ci0gIH0KLQotICB0aGlzLmNvYWxlc2NlKCk7Ci19OwotCi19KSgpOwotCi0KLQotKGZ1bmN0
aW9uKCkgewotLyoqCi0gIEBtb2R1bGUgZW1iZXItZGF0YQotKi8KLQotfSkoKTsKLQotCi0KLShm
dW5jdGlvbigpIHsKLXZhciBnZXQgPSBFbWJlci5nZXQsIHNldCA9IEVtYmVyLnNldCwKLSAgICBp
c05vbmUgPSBFbWJlci5pc05vbmU7Ci0KLS8qKgotICBAbW9kdWxlIGVtYmVyLWRhdGEKLSovCi0K
LWZ1bmN0aW9uIGFzeW5jQmVsb25nc1RvKHR5cGUsIG9wdGlvbnMsIG1ldGEpIHsKLSAgcmV0dXJu
IEVtYmVyLmNvbXB1dGVkKGZ1bmN0aW9uKGtleSwgdmFsdWUpIHsKLSAgICB2YXIgZGF0YSA9IGdl
dCh0aGlzLCAnZGF0YScpLAotICAgICAgICBzdG9yZSA9IGdldCh0aGlzLCAnc3RvcmUnKSwKLSAg
ICAgICAgcHJvbWlzZUxhYmVsID0gIkRTOiBBc3luYyBiZWxvbmdzVG8gIiArIHRoaXMgKyAiIDog
IiArIGtleTsKLQotICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyKSB7Ci0gICAgICBFbWJl
ci5hc3NlcnQoIllvdSBjYW4gb25seSBhZGQgYSAnIiArIHR5cGUgKyAiJyByZWNvcmQgdG8gdGhp
cyByZWxhdGlvbnNoaXAiLCAhdmFsdWUgfHwgdmFsdWUgaW5zdGFuY2VvZiBzdG9yZS5tb2RlbEZv
cih0eXBlKSk7Ci0gICAgICByZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZCA/IG51bGwgOiBEUy5Q
cm9taXNlT2JqZWN0LmNyZWF0ZSh7IHByb21pc2U6IEVtYmVyLlJTVlAucmVzb2x2ZSh2YWx1ZSwg
cHJvbWlzZUxhYmVsKSB9KTsKLSAgICB9Ci0KLSAgICB2YXIgbGluayA9IGRhdGEubGlua3MgJiYg
ZGF0YS5saW5rc1trZXldLAotICAgICAgICBiZWxvbmdzVG8gPSBkYXRhW2tleV07Ci0KLSAgICBp
ZighaXNOb25lKGJlbG9uZ3NUbykpIHsKLSAgICAgIHZhciBwcm9taXNlID0gc3RvcmUuZmV0Y2hS
ZWNvcmQoYmVsb25nc1RvKSB8fCBFbWJlci5SU1ZQLnJlc29sdmUoYmVsb25nc1RvLCBwcm9taXNl
TGFiZWwpOwotICAgICAgcmV0dXJuIERTLlByb21pc2VPYmplY3QuY3JlYXRlKHsgcHJvbWlzZTog
cHJvbWlzZX0pOwotICAgIH0gZWxzZSBpZiAobGluaykgewotICAgICAgdmFyIHJlc29sdmVyID0g
RW1iZXIuUlNWUC5kZWZlcigiRFM6IEFzeW5jIGJlbG9uZ3NUbyAobGluaykgIiArIHRoaXMgKyAi
IDogIiArIGtleSk7Ci0gICAgICBzdG9yZS5maW5kQmVsb25nc1RvKHRoaXMsIGxpbmssIG1ldGEs
IHJlc29sdmVyKTsKLSAgICAgIHJldHVybiBEUy5Qcm9taXNlT2JqZWN0LmNyZWF0ZSh7IHByb21p
c2U6IHJlc29sdmVyLnByb21pc2UgfSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIHJldHVybiBudWxs
OwotICAgIH0KLSAgfSkucHJvcGVydHkoJ2RhdGEnKS5tZXRhKG1ldGEpOwotfQotCi0vKioKLSAg
YERTLmJlbG9uZ3NUb2AgaXMgdXNlZCB0byBkZWZpbmUgT25lLVRvLU9uZSBhbmQgT25lLVRvLU1h
bnkKLSAgcmVsYXRpb25zaGlwcyBvbiBhIFtEUy5Nb2RlbF0oRFMuTW9kZWwuaHRtbCkuCi0KLQot
ICBgRFMuYmVsb25nc1RvYCB0YWtlcyBhbiBvcHRpb25hbCBoYXNoIGFzIGEgc2Vjb25kIHBhcmFt
ZXRlciwgY3VycmVudGx5Ci0gIHN1cHBvcnRlZCBvcHRpb25zIGFyZToKLQotICAtIGBhc3luY2A6
IEEgYm9vbGVhbiB2YWx1ZSB1c2VkIHRvIGV4cGxpY2l0bHkgZGVjbGFyZSB0aGlzIHRvIGJlIGFu
IGFzeW5jIHJlbGF0aW9uc2hpcC4KLSAgLSBgaW52ZXJzZWA6IEEgc3RyaW5nIHVzZWQgdG8gaWRl
bnRpZnkgdGhlIGludmVyc2UgcHJvcGVydHkgb24gYQotICAgIHJlbGF0ZWQgbW9kZWwgaW4gYSBP
bmUtVG8tTWFueSByZWxhdGlvbnNoaXAuIFNlZSBbRXhwbGljaXQgSW52ZXJzZXNdKCN0b2NfZXhw
bGljaXQtaW52ZXJzZXMpCi0KLSAgIyMjIyBPbmUtVG8tT25lCi0gIFRvIGRlY2xhcmUgYSBvbmUt
dG8tb25lIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHR3byBtb2RlbHMsIHVzZQotICBgRFMuYmVsb25n
c1RvYDoKLQotICBgYGBqYXZhc2NyaXB0Ci0gIEFwcC5Vc2VyID0gRFMuTW9kZWwuZXh0ZW5kKHsK
LSAgICBwcm9maWxlOiBEUy5iZWxvbmdzVG8oJ3Byb2ZpbGUnKQotICB9KTsKLQotICBBcHAuUHJv
ZmlsZSA9IERTLk1vZGVsLmV4dGVuZCh7Ci0gICAgdXNlcjogRFMuYmVsb25nc1RvKCd1c2VyJykK
LSAgfSk7Ci0gIGBgYAotCi0gICMjIyMgT25lLVRvLU1hbnkKLSAgVG8gZGVjbGFyZSBhIG9uZS10
by1tYW55IHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHR3byBtb2RlbHMsIHVzZQotICBgRFMuYmVsb25n
c1RvYCBpbiBjb21iaW5hdGlvbiB3aXRoIGBEUy5oYXNNYW55YCwgbGlrZSB0aGlzOgotCi0gIGBg
YGphdmFzY3JpcHQKLSAgQXBwLlBvc3QgPSBEUy5Nb2RlbC5leHRlbmQoewotICAgIGNvbW1lbnRz
OiBEUy5oYXNNYW55KCdjb21tZW50JykKLSAgfSk7Ci0KLSAgQXBwLkNvbW1lbnQgPSBEUy5Nb2Rl
bC5leHRlbmQoewotICAgIHBvc3Q6IERTLmJlbG9uZ3NUbygncG9zdCcpCi0gIH0pOwotICBgYGAK
LQotICBAbmFtZXNwYWNlCi0gIEBtZXRob2QgYmVsb25nc1RvCi0gIEBmb3IgRFMKLSAgQHBhcmFt
IHtTdHJpbmcgb3IgRFMuTW9kZWx9IHR5cGUgdGhlIG1vZGVsIHR5cGUgb2YgdGhlIHJlbGF0aW9u
c2hpcAotICBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyBhIGhhc2ggb2Ygb3B0aW9ucwotICBAcmV0
dXJuIHtFbWJlci5jb21wdXRlZH0gcmVsYXRpb25zaGlwCi0qLwotRFMuYmVsb25nc1RvID0gZnVu
Y3Rpb24odHlwZSwgb3B0aW9ucykgewotICBpZiAodHlwZW9mIHR5cGUgPT09ICdvYmplY3QnKSB7
Ci0gICAgb3B0aW9ucyA9IHR5cGU7Ci0gICAgdHlwZSA9IHVuZGVmaW5lZDsKLSAgfSBlbHNlIHsK
LSAgICBFbWJlci5hc3NlcnQoIlRoZSBmaXJzdCBhcmd1bWVudCBEUy5iZWxvbmdzVG8gbXVzdCBi
ZSBhIG1vZGVsIHR5cGUgb3Igc3RyaW5nLCBsaWtlIERTLmJlbG9uZ3NUbyhBcHAuUGVyc29uKSIs
ICEhdHlwZSAmJiAodHlwZW9mIHR5cGUgPT09ICdzdHJpbmcnIHx8IERTLk1vZGVsLmRldGVjdCh0
eXBlKSkpOwotICB9Ci0KLSAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307Ci0KLSAgdmFyIG1ldGEg
PSB7IHR5cGU6IHR5cGUsIGlzUmVsYXRpb25zaGlwOiB0cnVlLCBvcHRpb25zOiBvcHRpb25zLCBr
aW5kOiAnYmVsb25nc1RvJyB9OwotCi0gIGlmIChvcHRpb25zLmFzeW5jKSB7Ci0gICAgcmV0dXJu
IGFzeW5jQmVsb25nc1RvKHR5cGUsIG9wdGlvbnMsIG1ldGEpOwotICB9Ci0KLSAgcmV0dXJuIEVt
YmVyLmNvbXB1dGVkKGZ1bmN0aW9uKGtleSwgdmFsdWUpIHsKLSAgICB2YXIgZGF0YSA9IGdldCh0
aGlzLCAnZGF0YScpLAotICAgICAgICBzdG9yZSA9IGdldCh0aGlzLCAnc3RvcmUnKSwgYmVsb25n
c1RvLCB0eXBlQ2xhc3M7Ci0KLSAgICBpZiAodHlwZW9mIHR5cGUgPT09ICdzdHJpbmcnKSB7Ci0g
ICAgICB0eXBlQ2xhc3MgPSBzdG9yZS5tb2RlbEZvcih0eXBlKTsKLSAgICB9IGVsc2UgewotICAg
ICAgdHlwZUNsYXNzID0gdHlwZTsKLSAgICB9Ci0KLSAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9
PT0gMikgewotICAgICAgRW1iZXIuYXNzZXJ0KCJZb3UgY2FuIG9ubHkgYWRkIGEgJyIgKyB0eXBl
ICsgIicgcmVjb3JkIHRvIHRoaXMgcmVsYXRpb25zaGlwIiwgIXZhbHVlIHx8IHZhbHVlIGluc3Rh
bmNlb2YgdHlwZUNsYXNzKTsKLSAgICAgIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkID8gbnVs
bCA6IHZhbHVlOwotICAgIH0KLQotICAgIGJlbG9uZ3NUbyA9IGRhdGFba2V5XTsKLQotICAgIGlm
IChpc05vbmUoYmVsb25nc1RvKSkgeyByZXR1cm4gbnVsbDsgfQotCi0gICAgc3RvcmUuZmV0Y2hS
ZWNvcmQoYmVsb25nc1RvKTsKLQotICAgIHJldHVybiBiZWxvbmdzVG87Ci0gIH0pLnByb3BlcnR5
KCdkYXRhJykubWV0YShtZXRhKTsKLX07Ci0KLS8qKgotICBUaGVzZSBvYnNlcnZlcnMgb2JzZXJ2
ZSBhbGwgYGJlbG9uZ3NUb2AgcmVsYXRpb25zaGlwcyBvbiB0aGUgcmVjb3JkLiBTZWUKLSAgYHJl
bGF0aW9uc2hpcHMvZXh0YCB0byBzZWUgaG93IHRoZXNlIG9ic2VydmVycyBnZXQgdGhlaXIgZGVw
ZW5kZW5jaWVzLgotCi0gIEBjbGFzcyBNb2RlbAotICBAbmFtZXNwYWNlIERTCi0qLwotRFMuTW9k
ZWwucmVvcGVuKHsKLQotICAvKioKLSAgICBAbWV0aG9kIGJlbG9uZ3NUb1dpbGxDaGFuZ2UKLSAg
ICBAcHJpdmF0ZQotICAgIEBzdGF0aWMKLSAgICBAcGFyYW0gcmVjb3JkCi0gICAgQHBhcmFtIGtl
eQotICAqLwotICBiZWxvbmdzVG9XaWxsQ2hhbmdlOiBFbWJlci5iZWZvcmVPYnNlcnZlcihmdW5j
dGlvbihyZWNvcmQsIGtleSkgewotICAgIGlmIChnZXQocmVjb3JkLCAnaXNMb2FkZWQnKSkgewot
ICAgICAgdmFyIG9sZFBhcmVudCA9IGdldChyZWNvcmQsIGtleSk7Ci0KLSAgICAgIGlmIChvbGRQ
YXJlbnQpIHsKLSAgICAgICAgdmFyIHN0b3JlID0gZ2V0KHJlY29yZCwgJ3N0b3JlJyksCi0gICAg
ICAgICAgICBjaGFuZ2UgPSBEUy5SZWxhdGlvbnNoaXBDaGFuZ2UuY3JlYXRlQ2hhbmdlKHJlY29y
ZCwgb2xkUGFyZW50LCBzdG9yZSwgeyBrZXk6IGtleSwga2luZDogImJlbG9uZ3NUbyIsIGNoYW5n
ZVR5cGU6ICJyZW1vdmUiIH0pOwotCi0gICAgICAgIGNoYW5nZS5zeW5jKCk7Ci0gICAgICAgIHRo
aXMuX2NoYW5nZXNUb1N5bmNba2V5XSA9IGNoYW5nZTsKLSAgICAgIH0KLSAgICB9Ci0gIH0pLAot
Ci0gIC8qKgotICAgIEBtZXRob2QgYmVsb25nc1RvRGlkQ2hhbmdlCi0gICAgQHByaXZhdGUKLSAg
ICBAc3RhdGljCi0gICAgQHBhcmFtIHJlY29yZAotICAgIEBwYXJhbSBrZXkKLSAgKi8KLSAgYmVs
b25nc1RvRGlkQ2hhbmdlOiBFbWJlci5pbW1lZGlhdGVPYnNlcnZlcihmdW5jdGlvbihyZWNvcmQs
IGtleSkgewotICAgIGlmIChnZXQocmVjb3JkLCAnaXNMb2FkZWQnKSkgewotICAgICAgdmFyIG5l
d1BhcmVudCA9IGdldChyZWNvcmQsIGtleSk7Ci0KLSAgICAgIGlmIChuZXdQYXJlbnQpIHsKLSAg
ICAgICAgdmFyIHN0b3JlID0gZ2V0KHJlY29yZCwgJ3N0b3JlJyksCi0gICAgICAgICAgICBjaGFu
Z2UgPSBEUy5SZWxhdGlvbnNoaXBDaGFuZ2UuY3JlYXRlQ2hhbmdlKHJlY29yZCwgbmV3UGFyZW50
LCBzdG9yZSwgeyBrZXk6IGtleSwga2luZDogImJlbG9uZ3NUbyIsIGNoYW5nZVR5cGU6ICJhZGQi
IH0pOwotCi0gICAgICAgIGNoYW5nZS5zeW5jKCk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgZGVs
ZXRlIHRoaXMuX2NoYW5nZXNUb1N5bmNba2V5XTsKLSAgfSkKLX0pOwotCi19KSgpOwotCi0KLQot
KGZ1bmN0aW9uKCkgewotLyoqCi0gIEBtb2R1bGUgZW1iZXItZGF0YQotKi8KLQotdmFyIGdldCA9
IEVtYmVyLmdldCwgc2V0ID0gRW1iZXIuc2V0LCBzZXRQcm9wZXJ0aWVzID0gRW1iZXIuc2V0UHJv
cGVydGllczsKLQotZnVuY3Rpb24gYXN5bmNIYXNNYW55KHR5cGUsIG9wdGlvbnMsIG1ldGEpIHsK
LSAgcmV0dXJuIEVtYmVyLmNvbXB1dGVkKGZ1bmN0aW9uKGtleSwgdmFsdWUpIHsKLSAgICB2YXIg
cmVsYXRpb25zaGlwID0gdGhpcy5fcmVsYXRpb25zaGlwc1trZXldLAotICAgICAgICBwcm9taXNl
TGFiZWwgPSAiRFM6IEFzeW5jIGhhc01hbnkgIiArIHRoaXMgKyAiIDogIiArIGtleTsKLQotICAg
IGlmICghcmVsYXRpb25zaGlwKSB7Ci0gICAgICB2YXIgcmVzb2x2ZXIgPSBFbWJlci5SU1ZQLmRl
ZmVyKHByb21pc2VMYWJlbCk7Ci0gICAgICByZWxhdGlvbnNoaXAgPSBidWlsZFJlbGF0aW9uc2hp
cCh0aGlzLCBrZXksIG9wdGlvbnMsIGZ1bmN0aW9uKHN0b3JlLCBkYXRhKSB7Ci0gICAgICAgIHZh
ciBsaW5rID0gZGF0YS5saW5rcyAmJiBkYXRhLmxpbmtzW2tleV07Ci0gICAgICAgIHZhciByZWw7
Ci0gICAgICAgIGlmIChsaW5rKSB7Ci0gICAgICAgICAgcmVsID0gc3RvcmUuZmluZEhhc01hbnko
dGhpcywgbGluaywgbWV0YSwgcmVzb2x2ZXIpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAg
IHJlbCA9IHN0b3JlLmZpbmRNYW55KHRoaXMsIGRhdGFba2V5XSwgbWV0YS50eXBlLCByZXNvbHZl
cik7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gY2FjaGUgdGhlIHByb21pc2Ugc28gd2UgY2FuIHVz
ZSBpdAotICAgICAgICAvLyB3aGVuIHdlIGNvbWUgYmFjayBhbmQgZG9uJ3QgbmVlZCB0byByZWJ1
aWxkCi0gICAgICAgIC8vIHRoZSByZWxhdGlvbnNoaXAuCi0gICAgICAgIHNldChyZWwsICdwcm9t
aXNlJywgcmVzb2x2ZXIucHJvbWlzZSk7Ci0gICAgICAgIHJldHVybiByZWw7Ci0gICAgICB9KTsK
LSAgICB9Ci0KLSAgICB2YXIgcHJvbWlzZSA9IHJlbGF0aW9uc2hpcC5nZXQoJ3Byb21pc2UnKS50
aGVuKGZ1bmN0aW9uKCkgewotICAgICAgcmV0dXJuIHJlbGF0aW9uc2hpcDsKLSAgICB9LCBudWxs
LCAiRFM6IEFzeW5jIGhhc01hbnkgcmVjb3JkcyByZWNlaXZlZCIpOwotCi0gICAgcmV0dXJuIERT
LlByb21pc2VBcnJheS5jcmVhdGUoeyBwcm9taXNlOiBwcm9taXNlIH0pOwotICB9KS5wcm9wZXJ0
eSgnZGF0YScpLm1ldGEobWV0YSk7Ci19Ci0KLWZ1bmN0aW9uIGJ1aWxkUmVsYXRpb25zaGlwKHJl
Y29yZCwga2V5LCBvcHRpb25zLCBjYWxsYmFjaykgewotICB2YXIgcmVscyA9IHJlY29yZC5fcmVs
YXRpb25zaGlwczsKLQotICBpZiAocmVsc1trZXldKSB7IHJldHVybiByZWxzW2tleV07IH0KLQot
ICB2YXIgZGF0YSA9IGdldChyZWNvcmQsICdkYXRhJyksCi0gICAgICBzdG9yZSA9IGdldChyZWNv
cmQsICdzdG9yZScpOwotCi0gIHZhciByZWxhdGlvbnNoaXAgPSByZWxzW2tleV0gPSBjYWxsYmFj
ay5jYWxsKHJlY29yZCwgc3RvcmUsIGRhdGEpOwotCi0gIHJldHVybiBzZXRQcm9wZXJ0aWVzKHJl
bGF0aW9uc2hpcCwgewotICAgIG93bmVyOiByZWNvcmQsIG5hbWU6IGtleSwgaXNQb2x5bW9ycGhp
Yzogb3B0aW9ucy5wb2x5bW9ycGhpYwotICB9KTsKLX0KLQotZnVuY3Rpb24gaGFzUmVsYXRpb25z
aGlwKHR5cGUsIG9wdGlvbnMpIHsKLSAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307Ci0KLSAgdmFy
IG1ldGEgPSB7IHR5cGU6IHR5cGUsIGlzUmVsYXRpb25zaGlwOiB0cnVlLCBvcHRpb25zOiBvcHRp
b25zLCBraW5kOiAnaGFzTWFueScgfTsKLQotICBpZiAob3B0aW9ucy5hc3luYykgewotICAgIHJl
dHVybiBhc3luY0hhc01hbnkodHlwZSwgb3B0aW9ucywgbWV0YSk7Ci0gIH0KLQotICByZXR1cm4g
RW1iZXIuY29tcHV0ZWQoZnVuY3Rpb24oa2V5LCB2YWx1ZSkgewotICAgIHJldHVybiBidWlsZFJl
bGF0aW9uc2hpcCh0aGlzLCBrZXksIG9wdGlvbnMsIGZ1bmN0aW9uKHN0b3JlLCBkYXRhKSB7Ci0g
ICAgICB2YXIgcmVjb3JkcyA9IGRhdGFba2V5XTsKLSAgICAgIEVtYmVyLmFzc2VydCgiWW91IGxv
b2tlZCB1cCB0aGUgJyIgKyBrZXkgKyAiJyByZWxhdGlvbnNoaXAgb24gJyIgKyB0aGlzICsgIicg
YnV0IHNvbWUgb2YgdGhlIGFzc29jaWF0ZWQgcmVjb3JkcyB3ZXJlIG5vdCBsb2FkZWQuIEVpdGhl
ciBtYWtlIHN1cmUgdGhleSBhcmUgYWxsIGxvYWRlZCB0b2dldGhlciB3aXRoIHRoZSBwYXJlbnQg
cmVjb3JkLCBvciBzcGVjaWZ5IHRoYXQgdGhlIHJlbGF0aW9uc2hpcCBpcyBhc3luYyAoYERTLmhh
c01hbnkoeyBhc3luYzogdHJ1ZSB9KWApIiwgRW1iZXIuQShyZWNvcmRzKS5ldmVyeVByb3BlcnR5
KCdpc0VtcHR5JywgZmFsc2UpKTsKLSAgICAgIHJldHVybiBzdG9yZS5maW5kTWFueSh0aGlzLCBk
YXRhW2tleV0sIG1ldGEudHlwZSk7Ci0gICAgfSk7Ci0gIH0pLnByb3BlcnR5KCdkYXRhJykubWV0
YShtZXRhKTsKLX0KLQotLyoqCi0gIGBEUy5oYXNNYW55YCBpcyB1c2VkIHRvIGRlZmluZSBPbmUt
VG8tTWFueSBhbmQgTWFueS1Uby1NYW55Ci0gIHJlbGF0aW9uc2hpcHMgb24gYSBbRFMuTW9kZWxd
KERTLk1vZGVsLmh0bWwpLgotCi0gIGBEUy5oYXNNYW55YCB0YWtlcyBhbiBvcHRpb25hbCBoYXNo
IGFzIGEgc2Vjb25kIHBhcmFtZXRlciwgY3VycmVudGx5Ci0gIHN1cHBvcnRlZCBvcHRpb25zIGFy
ZToKLQotICAtIGBhc3luY2A6IEEgYm9vbGVhbiB2YWx1ZSB1c2VkIHRvIGV4cGxpY2l0bHkgZGVj
bGFyZSB0aGlzIHRvIGJlIGFuIGFzeW5jIHJlbGF0aW9uc2hpcC4KLSAgLSBgaW52ZXJzZWA6IEEg
c3RyaW5nIHVzZWQgdG8gaWRlbnRpZnkgdGhlIGludmVyc2UgcHJvcGVydHkgb24gYSByZWxhdGVk
IG1vZGVsLgotCi0gICMjIyMgT25lLVRvLU1hbnkKLSAgVG8gZGVjbGFyZSBhIG9uZS10by1tYW55
IHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHR3byBtb2RlbHMsIHVzZQotICBgRFMuYmVsb25nc1RvYCBp
biBjb21iaW5hdGlvbiB3aXRoIGBEUy5oYXNNYW55YCwgbGlrZSB0aGlzOgotCi0gIGBgYGphdmFz
Y3JpcHQKLSAgQXBwLlBvc3QgPSBEUy5Nb2RlbC5leHRlbmQoewotICAgIGNvbW1lbnRzOiBEUy5o
YXNNYW55KCdjb21tZW50JykKLSAgfSk7Ci0KLSAgQXBwLkNvbW1lbnQgPSBEUy5Nb2RlbC5leHRl
bmQoewotICAgIHBvc3Q6IERTLmJlbG9uZ3NUbygncG9zdCcpCi0gIH0pOwotICBgYGAKLQotICAj
IyMjIE1hbnktVG8tTWFueQotICBUbyBkZWNsYXJlIGEgbWFueS10by1tYW55IHJlbGF0aW9uc2hp
cCBiZXR3ZWVuIHR3byBtb2RlbHMsIHVzZQotICBgRFMuaGFzTWFueWA6Ci0KLSAgYGBgamF2YXNj
cmlwdAotICBBcHAuUG9zdCA9IERTLk1vZGVsLmV4dGVuZCh7Ci0gICAgdGFnczogRFMuaGFzTWFu
eSgndGFnJykKLSAgfSk7Ci0KLSAgQXBwLlRhZyA9IERTLk1vZGVsLmV4dGVuZCh7Ci0gICAgcG9z
dHM6IERTLmhhc01hbnkoJ3Bvc3QnKQotICB9KTsKLSAgYGBgCi0KLSAgIyMjIyBFeHBsaWNpdCBJ
bnZlcnNlcwotCi0gIEVtYmVyIERhdGEgd2lsbCBkbyBpdHMgYmVzdCB0byBkaXNjb3ZlciB3aGlj
aCByZWxhdGlvbnNoaXBzIG1hcCB0bwotICBvbmUgYW5vdGhlci4gSW4gdGhlIG9uZS10by1tYW55
IGNvZGUgYWJvdmUsIGZvciBleGFtcGxlLCBFbWJlciBEYXRhCi0gIGNhbiBmaWd1cmUgb3V0IHRo
YXQgY2hhbmdpbmcgdGhlIGBjb21tZW50c2AgcmVsYXRpb25zaGlwIHNob3VsZCB1cGRhdGUKLSAg
dGhlIGBwb3N0YCByZWxhdGlvbnNoaXAgb24gdGhlIGludmVyc2UgYmVjYXVzZSBwb3N0IGlzIHRo
ZSBvbmx5Ci0gIHJlbGF0aW9uc2hpcCB0byB0aGF0IG1vZGVsLgotCi0gIEhvd2V2ZXIsIHNvbWV0
aW1lcyB5b3UgbWF5IGhhdmUgbXVsdGlwbGUgYGJlbG9uZ3NUb2AvYGhhc01hbnlzYCBmb3IgdGhl
Ci0gIHNhbWUgdHlwZS4gWW91IGNhbiBzcGVjaWZ5IHdoaWNoIHByb3BlcnR5IG9uIHRoZSByZWxh
dGVkIG1vZGVsIGlzCi0gIHRoZSBpbnZlcnNlIHVzaW5nIGBEUy5oYXNNYW55YCdzIGBpbnZlcnNl
YCBvcHRpb246Ci0KLSAgYGBgamF2YXNjcmlwdAotICB2YXIgYmVsb25nc1RvID0gRFMuYmVsb25n
c1RvLAotICAgICAgaGFzTWFueSA9IERTLmhhc01hbnk7Ci0KLSAgQXBwLkNvbW1lbnQgPSBEUy5N
b2RlbC5leHRlbmQoewotICAgIG9uZVBvc3Q6IGJlbG9uZ3NUbygncG9zdCcpLAotICAgIHR3b1Bv
c3Q6IGJlbG9uZ3NUbygncG9zdCcpLAotICAgIHJlZFBvc3Q6IGJlbG9uZ3NUbygncG9zdCcpLAot
ICAgIGJsdWVQb3N0OiBiZWxvbmdzVG8oJ3Bvc3QnKQotICB9KTsKLQotICBBcHAuUG9zdCA9IERT
Lk1vZGVsLmV4dGVuZCh7Ci0gICAgY29tbWVudHM6IGhhc01hbnkoJ2NvbW1lbnQnLCB7Ci0gICAg
ICBpbnZlcnNlOiAncmVkUG9zdCcKLSAgICB9KQotICB9KTsKLSAgYGBgCi0KLSAgWW91IGNhbiBh
bHNvIHNwZWNpZnkgYW4gaW52ZXJzZSBvbiBhIGBiZWxvbmdzVG9gLCB3aGljaCB3b3JrcyBob3cK
LSAgeW91J2QgZXhwZWN0LgotCi0gIEBuYW1lc3BhY2UKLSAgQG1ldGhvZCBoYXNNYW55Ci0gIEBm
b3IgRFMKLSAgQHBhcmFtIHtTdHJpbmcgb3IgRFMuTW9kZWx9IHR5cGUgdGhlIG1vZGVsIHR5cGUg
b2YgdGhlIHJlbGF0aW9uc2hpcAotICBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyBhIGhhc2ggb2Yg
b3B0aW9ucwotICBAcmV0dXJuIHtFbWJlci5jb21wdXRlZH0gcmVsYXRpb25zaGlwCi0qLwotRFMu
aGFzTWFueSA9IGZ1bmN0aW9uKHR5cGUsIG9wdGlvbnMpIHsKLSAgaWYgKHR5cGVvZiB0eXBlID09
PSAnb2JqZWN0JykgewotICAgIG9wdGlvbnMgPSB0eXBlOwotICAgIHR5cGUgPSB1bmRlZmluZWQ7
Ci0gIH0KLSAgcmV0dXJuIGhhc1JlbGF0aW9uc2hpcCh0eXBlLCBvcHRpb25zKTsKLX07Ci0KLX0p
KCk7Ci0KLQotCi0oZnVuY3Rpb24oKSB7Ci12YXIgZ2V0ID0gRW1iZXIuZ2V0LCBzZXQgPSBFbWJl
ci5zZXQ7Ci0KLS8qKgotICBAbW9kdWxlIGVtYmVyLWRhdGEKLSovCi0KLS8qCi0gIFRoaXMgZmls
ZSBkZWZpbmVzIHNldmVyYWwgZXh0ZW5zaW9ucyB0byB0aGUgYmFzZSBgRFMuTW9kZWxgIGNsYXNz
IHRoYXQKLSAgYWRkIHN1cHBvcnQgZm9yIG9uZS10by1tYW55IHJlbGF0aW9uc2hpcHMuCi0qLwot
Ci0vKioKLSAgQGNsYXNzIE1vZGVsCi0gIEBuYW1lc3BhY2UgRFMKLSovCi1EUy5Nb2RlbC5yZW9w
ZW4oewotCi0gIC8qKgotICAgIFRoaXMgRW1iZXIuanMgaG9vayBhbGxvd3MgYW4gb2JqZWN0IHRv
IGJlIG5vdGlmaWVkIHdoZW4gYSBwcm9wZXJ0eQotICAgIGlzIGRlZmluZWQuCi0KLSAgICBJbiB0
aGlzIGNhc2UsIHdlIHVzZSBpdCB0byBiZSBub3RpZmllZCB3aGVuIGFuIEVtYmVyIERhdGEgdXNl
ciBkZWZpbmVzIGEKLSAgICBiZWxvbmdzLXRvIHJlbGF0aW9uc2hpcC4gSW4gdGhhdCBjYXNlLCB3
ZSBuZWVkIHRvIHNldCB1cCBvYnNlcnZlcnMgZm9yCi0gICAgZWFjaCBvbmUsIGFsbG93aW5nIHVz
IHRvIHRyYWNrIHJlbGF0aW9uc2hpcCBjaGFuZ2VzIGFuZCBhdXRvbWF0aWNhbGx5Ci0gICAgcmVm
bGVjdCBjaGFuZ2VzIGluIHRoZSBpbnZlcnNlIGhhcy1tYW55IGFycmF5LgotCi0gICAgVGhpcyBo
b29rIHBhc3NlcyB0aGUgY2xhc3MgYmVpbmcgc2V0IHVwLCBhcyB3ZWxsIGFzIHRoZSBrZXkgYW5k
IHZhbHVlCi0gICAgYmVpbmcgZGVmaW5lZC4gU28sIGZvciBleGFtcGxlLCB3aGVuIHRoZSB1c2Vy
IGRvZXMgdGhpczoKLQotICAgIGBgYGphdmFzY3JpcHQKLSAgICBEUy5Nb2RlbC5leHRlbmQoewot
ICAgICAgcGFyZW50OiBEUy5iZWxvbmdzVG8oJ3VzZXInKQotICAgIH0pOwotICAgIGBgYAotCi0g
ICAgVGhpcyBob29rIHdvdWxkIGJlIGNhbGxlZCB3aXRoICJwYXJlbnQiIGFzIHRoZSBrZXkgYW5k
IHRoZSBjb21wdXRlZAotICAgIHByb3BlcnR5IHJldHVybmVkIGJ5IGBEUy5iZWxvbmdzVG9gIGFz
IHRoZSB2YWx1ZS4KLQotICAgIEBtZXRob2QgZGlkRGVmaW5lUHJvcGVydHkKLSAgICBAcGFyYW0g
cHJvdG8KLSAgICBAcGFyYW0ga2V5Ci0gICAgQHBhcmFtIHZhbHVlCi0gICovCi0gIGRpZERlZmlu
ZVByb3BlcnR5OiBmdW5jdGlvbihwcm90bywga2V5LCB2YWx1ZSkgewotICAgIC8vIENoZWNrIGlm
IHRoZSB2YWx1ZSBiZWluZyBzZXQgaXMgYSBjb21wdXRlZCBwcm9wZXJ0eS4KLSAgICBpZiAodmFs
dWUgaW5zdGFuY2VvZiBFbWJlci5EZXNjcmlwdG9yKSB7Ci0KLSAgICAgIC8vIElmIGl0IGlzLCBn
ZXQgdGhlIG1ldGFkYXRhIGZvciB0aGUgcmVsYXRpb25zaGlwLiBUaGlzIGlzCi0gICAgICAvLyBw
b3B1bGF0ZWQgYnkgdGhlIGBEUy5iZWxvbmdzVG9gIGhlbHBlciB3aGVuIGl0IGlzIGNyZWF0aW5n
Ci0gICAgICAvLyB0aGUgY29tcHV0ZWQgcHJvcGVydHkuCi0gICAgICB2YXIgbWV0YSA9IHZhbHVl
Lm1ldGEoKTsKLQotICAgICAgaWYgKG1ldGEuaXNSZWxhdGlvbnNoaXAgJiYgbWV0YS5raW5kID09
PSAnYmVsb25nc1RvJykgewotICAgICAgICBFbWJlci5hZGRPYnNlcnZlcihwcm90bywga2V5LCBu
dWxsLCAnYmVsb25nc1RvRGlkQ2hhbmdlJyk7Ci0gICAgICAgIEVtYmVyLmFkZEJlZm9yZU9ic2Vy
dmVyKHByb3RvLCBrZXksIG51bGwsICdiZWxvbmdzVG9XaWxsQ2hhbmdlJyk7Ci0gICAgICB9Ci0K
LSAgICAgIG1ldGEucGFyZW50VHlwZSA9IHByb3RvLmNvbnN0cnVjdG9yOwotICAgIH0KLSAgfQot
fSk7Ci0KLS8qCi0gIFRoZXNlIERTLk1vZGVsIGV4dGVuc2lvbnMgYWRkIGNsYXNzIG1ldGhvZHMg
dGhhdCBwcm92aWRlIHJlbGF0aW9uc2hpcAotICBpbnRyb3NwZWN0aW9uIGFiaWxpdGllcyBhYm91
dCByZWxhdGlvbnNoaXBzLgotCi0gIEEgbm90ZSBhYm91dCB0aGUgY29tcHV0ZWQgcHJvcGVydGll
cyBjb250YWluZWQgaGVyZToKLQotICAqKlRoZXNlIHByb3BlcnRpZXMgYXJlIGVmZmVjdGl2ZWx5
IHNlYWxlZCBvbmNlIGNhbGxlZCBmb3IgdGhlIGZpcnN0IHRpbWUuKioKLSAgVG8gYXZvaWQgcmVw
ZWF0ZWRseSBkb2luZyBleHBlbnNpdmUgaXRlcmF0aW9uIG92ZXIgYSBtb2RlbCdzIGZpZWxkcywg
dGhlc2UKLSAgdmFsdWVzIGFyZSBjb21wdXRlZCBvbmNlIGFuZCB0aGVuIGNhY2hlZCBmb3IgdGhl
IHJlbWFpbmRlciBvZiB0aGUgcnVudGltZSBvZgotICB5b3VyIGFwcGxpY2F0aW9uLgotCi0gIElm
IHlvdXIgYXBwbGljYXRpb24gbmVlZHMgdG8gbW9kaWZ5IGEgY2xhc3MgYWZ0ZXIgaXRzIGluaXRp
YWwgZGVmaW5pdGlvbgotICAoZm9yIGV4YW1wbGUsIHVzaW5nIGByZW9wZW4oKWAgdG8gYWRkIGFk
ZGl0aW9uYWwgYXR0cmlidXRlcyksIG1ha2Ugc3VyZSB5b3UKLSAgZG8gaXQgYmVmb3JlIHVzaW5n
IHlvdXIgbW9kZWwgd2l0aCB0aGUgc3RvcmUsIHdoaWNoIHVzZXMgdGhlc2UgcHJvcGVydGllcwot
ICBleHRlbnNpdmVseS4KLSovCi0KLURTLk1vZGVsLnJlb3BlbkNsYXNzKHsKLSAgLyoqCi0gICAg
Rm9yIGEgZ2l2ZW4gcmVsYXRpb25zaGlwIG5hbWUsIHJldHVybnMgdGhlIG1vZGVsIHR5cGUgb2Yg
dGhlIHJlbGF0aW9uc2hpcC4KLQotICAgIEZvciBleGFtcGxlLCBpZiB5b3UgZGVmaW5lIGEgbW9k
ZWwgbGlrZSB0aGlzOgotCi0gICBgYGBqYXZhc2NyaXB0Ci0gICAgQXBwLlBvc3QgPSBEUy5Nb2Rl
bC5leHRlbmQoewotICAgICAgY29tbWVudHM6IERTLmhhc01hbnkoJ2NvbW1lbnQnKQotICAgIH0p
OwotICAgYGBgCi0KLSAgICBDYWxsaW5nIGBBcHAuUG9zdC50eXBlRm9yUmVsYXRpb25zaGlwKCdj
b21tZW50cycpYCB3aWxsIHJldHVybiBgQXBwLkNvbW1lbnRgLgotCi0gICAgQG1ldGhvZCB0eXBl
Rm9yUmVsYXRpb25zaGlwCi0gICAgQHN0YXRpYwotICAgIEBwYXJhbSB7U3RyaW5nfSBuYW1lIHRo
ZSBuYW1lIG9mIHRoZSByZWxhdGlvbnNoaXAKLSAgICBAcmV0dXJuIHtzdWJjbGFzcyBvZiBEUy5N
b2RlbH0gdGhlIHR5cGUgb2YgdGhlIHJlbGF0aW9uc2hpcCwgb3IgdW5kZWZpbmVkCi0gICovCi0g
IHR5cGVGb3JSZWxhdGlvbnNoaXA6IGZ1bmN0aW9uKG5hbWUpIHsKLSAgICB2YXIgcmVsYXRpb25z
aGlwID0gZ2V0KHRoaXMsICdyZWxhdGlvbnNoaXBzQnlOYW1lJykuZ2V0KG5hbWUpOwotICAgIHJl
dHVybiByZWxhdGlvbnNoaXAgJiYgcmVsYXRpb25zaGlwLnR5cGU7Ci0gIH0sCi0KLSAgaW52ZXJz
ZUZvcjogZnVuY3Rpb24obmFtZSkgewotICAgIHZhciBpbnZlcnNlVHlwZSA9IHRoaXMudHlwZUZv
clJlbGF0aW9uc2hpcChuYW1lKTsKLQotICAgIGlmICghaW52ZXJzZVR5cGUpIHsgcmV0dXJuIG51
bGw7IH0KLQotICAgIHZhciBvcHRpb25zID0gdGhpcy5tZXRhRm9yUHJvcGVydHkobmFtZSkub3B0
aW9uczsKLQotICAgIGlmIChvcHRpb25zLmludmVyc2UgPT09IG51bGwpIHsgcmV0dXJuIG51bGw7
IH0KLQotICAgIHZhciBpbnZlcnNlTmFtZSwgaW52ZXJzZUtpbmQ7Ci0KLSAgICBpZiAob3B0aW9u
cy5pbnZlcnNlKSB7Ci0gICAgICBpbnZlcnNlTmFtZSA9IG9wdGlvbnMuaW52ZXJzZTsKLSAgICAg
IGludmVyc2VLaW5kID0gRW1iZXIuZ2V0KGludmVyc2VUeXBlLCAncmVsYXRpb25zaGlwc0J5TmFt
ZScpLmdldChpbnZlcnNlTmFtZSkua2luZDsKLSAgICB9IGVsc2UgewotICAgICAgdmFyIHBvc3Np
YmxlUmVsYXRpb25zaGlwcyA9IGZpbmRQb3NzaWJsZUludmVyc2VzKHRoaXMsIGludmVyc2VUeXBl
KTsKLQotICAgICAgaWYgKHBvc3NpYmxlUmVsYXRpb25zaGlwcy5sZW5ndGggPT09IDApIHsgcmV0
dXJuIG51bGw7IH0KLQotICAgICAgRW1iZXIuYXNzZXJ0KCJZb3UgZGVmaW5lZCB0aGUgJyIgKyBu
YW1lICsgIicgcmVsYXRpb25zaGlwIG9uICIgKyB0aGlzICsgIiwgYnV0IG11bHRpcGxlIHBvc3Np
YmxlIGludmVyc2UgcmVsYXRpb25zaGlwcyBvZiB0eXBlICIgKyB0aGlzICsgIiB3ZXJlIGZvdW5k
IG9uICIgKyBpbnZlcnNlVHlwZSArICIuIExvb2sgYXQgaHR0cDovL2VtYmVyanMuY29tL2d1aWRl
cy9tb2RlbHMvZGVmaW5pbmctbW9kZWxzLyN0b2NfZXhwbGljaXQtaW52ZXJzZXMgZm9yIGhvdyB0
byBleHBsaWNpdGx5IHNwZWNpZnkgaW52ZXJzZXMiLCBwb3NzaWJsZVJlbGF0aW9uc2hpcHMubGVu
Z3RoID09PSAxKTsKLQotICAgICAgaW52ZXJzZU5hbWUgPSBwb3NzaWJsZVJlbGF0aW9uc2hpcHNb
MF0ubmFtZTsKLSAgICAgIGludmVyc2VLaW5kID0gcG9zc2libGVSZWxhdGlvbnNoaXBzWzBdLmtp
bmQ7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gZmluZFBvc3NpYmxlSW52ZXJzZXModHlwZSwgaW52
ZXJzZVR5cGUsIHBvc3NpYmxlUmVsYXRpb25zaGlwcykgewotICAgICAgcG9zc2libGVSZWxhdGlv
bnNoaXBzID0gcG9zc2libGVSZWxhdGlvbnNoaXBzIHx8IFtdOwotCi0gICAgICB2YXIgcmVsYXRp
b25zaGlwTWFwID0gZ2V0KGludmVyc2VUeXBlLCAncmVsYXRpb25zaGlwcycpOwotICAgICAgaWYg
KCFyZWxhdGlvbnNoaXBNYXApIHsgcmV0dXJuOyB9Ci0KLSAgICAgIHZhciByZWxhdGlvbnNoaXBz
ID0gcmVsYXRpb25zaGlwTWFwLmdldCh0eXBlKTsKLSAgICAgIGlmIChyZWxhdGlvbnNoaXBzKSB7
Ci0gICAgICAgIHBvc3NpYmxlUmVsYXRpb25zaGlwcy5wdXNoLmFwcGx5KHBvc3NpYmxlUmVsYXRp
b25zaGlwcywgcmVsYXRpb25zaGlwTWFwLmdldCh0eXBlKSk7Ci0gICAgICB9Ci0KLSAgICAgIGlm
ICh0eXBlLnN1cGVyY2xhc3MpIHsKLSAgICAgICAgZmluZFBvc3NpYmxlSW52ZXJzZXModHlwZS5z
dXBlcmNsYXNzLCBpbnZlcnNlVHlwZSwgcG9zc2libGVSZWxhdGlvbnNoaXBzKTsKLSAgICAgIH0K
LQotICAgICAgcmV0dXJuIHBvc3NpYmxlUmVsYXRpb25zaGlwczsKLSAgICB9Ci0KLSAgICByZXR1
cm4gewotICAgICAgdHlwZTogaW52ZXJzZVR5cGUsCi0gICAgICBuYW1lOiBpbnZlcnNlTmFtZSwK
LSAgICAgIGtpbmQ6IGludmVyc2VLaW5kCi0gICAgfTsKLSAgfSwKLQotICAvKioKLSAgICBUaGUg
bW9kZWwncyByZWxhdGlvbnNoaXBzIGFzIGEgbWFwLCBrZXllZCBvbiB0aGUgdHlwZSBvZiB0aGUK
LSAgICByZWxhdGlvbnNoaXAuIFRoZSB2YWx1ZSBvZiBlYWNoIGVudHJ5IGlzIGFuIGFycmF5IGNv
bnRhaW5pbmcgYSBkZXNjcmlwdG9yCi0gICAgZm9yIGVhY2ggcmVsYXRpb25zaGlwIHdpdGggdGhh
dCB0eXBlLCBkZXNjcmliaW5nIHRoZSBuYW1lIG9mIHRoZSByZWxhdGlvbnNoaXAKLSAgICBhcyB3
ZWxsIGFzIHRoZSB0eXBlLgotCi0gICAgRm9yIGV4YW1wbGUsIGdpdmVuIHRoZSBmb2xsb3dpbmcg
bW9kZWwgZGVmaW5pdGlvbjoKLQotICAgIGBgYGphdmFzY3JpcHQKLSAgICBBcHAuQmxvZyA9IERT
Lk1vZGVsLmV4dGVuZCh7Ci0gICAgICB1c2VyczogRFMuaGFzTWFueSgndXNlcicpLAotICAgICAg
b3duZXI6IERTLmJlbG9uZ3NUbygndXNlcicpLAotICAgICAgcG9zdHM6IERTLmhhc01hbnkoJ3Bv
c3QnKQotICAgIH0pOwotICAgIGBgYAotCi0gICAgVGhpcyBjb21wdXRlZCBwcm9wZXJ0eSB3b3Vs
ZCByZXR1cm4gYSBtYXAgZGVzY3JpYmluZyB0aGVzZQotICAgIHJlbGF0aW9uc2hpcHMsIGxpa2Ug
dGhpczoKLQotICAgIGBgYGphdmFzY3JpcHQKLSAgICB2YXIgcmVsYXRpb25zaGlwcyA9IEVtYmVy
LmdldChBcHAuQmxvZywgJ3JlbGF0aW9uc2hpcHMnKTsKLSAgICByZWxhdGlvbnNoaXBzLmdldChB
cHAuVXNlcik7Ci0gICAgLy89PiBbIHsgbmFtZTogJ3VzZXJzJywga2luZDogJ2hhc01hbnknIH0s
Ci0gICAgLy8gICAgIHsgbmFtZTogJ293bmVyJywga2luZDogJ2JlbG9uZ3NUbycgfSBdCi0gICAg
cmVsYXRpb25zaGlwcy5nZXQoQXBwLlBvc3QpOwotICAgIC8vPT4gWyB7IG5hbWU6ICdwb3N0cycs
IGtpbmQ6ICdoYXNNYW55JyB9IF0KLSAgICBgYGAKLQotICAgIEBwcm9wZXJ0eSByZWxhdGlvbnNo
aXBzCi0gICAgQHN0YXRpYwotICAgIEB0eXBlIEVtYmVyLk1hcAotICAgIEByZWFkT25seQotICAq
LwotICByZWxhdGlvbnNoaXBzOiBFbWJlci5jb21wdXRlZChmdW5jdGlvbigpIHsKLSAgICB2YXIg
bWFwID0gbmV3IEVtYmVyLk1hcFdpdGhEZWZhdWx0KHsKLSAgICAgIGRlZmF1bHRWYWx1ZTogZnVu
Y3Rpb24oKSB7IHJldHVybiBbXTsgfQotICAgIH0pOwotCi0gICAgLy8gTG9vcCB0aHJvdWdoIGVh
Y2ggY29tcHV0ZWQgcHJvcGVydHkgb24gdGhlIGNsYXNzCi0gICAgdGhpcy5lYWNoQ29tcHV0ZWRQ
cm9wZXJ0eShmdW5jdGlvbihuYW1lLCBtZXRhKSB7Ci0KLSAgICAgIC8vIElmIHRoZSBjb21wdXRl
ZCBwcm9wZXJ0eSBpcyBhIHJlbGF0aW9uc2hpcCwgYWRkCi0gICAgICAvLyBpdCB0byB0aGUgbWFw
LgotICAgICAgaWYgKG1ldGEuaXNSZWxhdGlvbnNoaXApIHsKLSAgICAgICAgaWYgKHR5cGVvZiBt
ZXRhLnR5cGUgPT09ICdzdHJpbmcnKSB7Ci0gICAgICAgICAgbWV0YS50eXBlID0gdGhpcy5zdG9y
ZS5tb2RlbEZvcihtZXRhLnR5cGUpOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIHJlbGF0aW9u
c2hpcHNGb3JUeXBlID0gbWFwLmdldChtZXRhLnR5cGUpOwotCi0gICAgICAgIHJlbGF0aW9uc2hp
cHNGb3JUeXBlLnB1c2goeyBuYW1lOiBuYW1lLCBraW5kOiBtZXRhLmtpbmQgfSk7Ci0gICAgICB9
Ci0gICAgfSk7Ci0KLSAgICByZXR1cm4gbWFwOwotICB9KSwKLQotICAvKioKLSAgICBBIGhhc2gg
Y29udGFpbmluZyBsaXN0cyBvZiB0aGUgbW9kZWwncyByZWxhdGlvbnNoaXBzLCBncm91cGVkCi0g
ICAgYnkgdGhlIHJlbGF0aW9uc2hpcCBraW5kLiBGb3IgZXhhbXBsZSwgZ2l2ZW4gYSBtb2RlbCB3
aXRoIHRoaXMKLSAgICBkZWZpbml0aW9uOgotCi0gICAgYGBgamF2YXNjcmlwdAotICAgIEFwcC5C
bG9nID0gRFMuTW9kZWwuZXh0ZW5kKHsKLSAgICAgIHVzZXJzOiBEUy5oYXNNYW55KCd1c2VyJyks
Ci0gICAgICBvd25lcjogRFMuYmVsb25nc1RvKCd1c2VyJyksCi0KLSAgICAgIHBvc3RzOiBEUy5o
YXNNYW55KCdwb3N0JykKLSAgICB9KTsKLSAgICBgYGAKLQotICAgIFRoaXMgcHJvcGVydHkgd291
bGQgY29udGFpbiB0aGUgZm9sbG93aW5nOgotCi0gICAgYGBgamF2YXNjcmlwdAotICAgIHZhciBy
ZWxhdGlvbnNoaXBOYW1lcyA9IEVtYmVyLmdldChBcHAuQmxvZywgJ3JlbGF0aW9uc2hpcE5hbWVz
Jyk7Ci0gICAgcmVsYXRpb25zaGlwTmFtZXMuaGFzTWFueTsKLSAgICAvLz0+IFsndXNlcnMnLCAn
cG9zdHMnXQotICAgIHJlbGF0aW9uc2hpcE5hbWVzLmJlbG9uZ3NUbzsKLSAgICAvLz0+IFsnb3du
ZXInXQotICAgIGBgYAotCi0gICAgQHByb3BlcnR5IHJlbGF0aW9uc2hpcE5hbWVzCi0gICAgQHN0
YXRpYwotICAgIEB0eXBlIE9iamVjdAotICAgIEByZWFkT25seQotICAqLwotICByZWxhdGlvbnNo
aXBOYW1lczogRW1iZXIuY29tcHV0ZWQoZnVuY3Rpb24oKSB7Ci0gICAgdmFyIG5hbWVzID0geyBo
YXNNYW55OiBbXSwgYmVsb25nc1RvOiBbXSB9OwotCi0gICAgdGhpcy5lYWNoQ29tcHV0ZWRQcm9w
ZXJ0eShmdW5jdGlvbihuYW1lLCBtZXRhKSB7Ci0gICAgICBpZiAobWV0YS5pc1JlbGF0aW9uc2hp
cCkgewotICAgICAgICBuYW1lc1ttZXRhLmtpbmRdLnB1c2gobmFtZSk7Ci0gICAgICB9Ci0gICAg
fSk7Ci0KLSAgICByZXR1cm4gbmFtZXM7Ci0gIH0pLAotCi0gIC8qKgotICAgIEFuIGFycmF5IG9m
IHR5cGVzIGRpcmVjdGx5IHJlbGF0ZWQgdG8gYSBtb2RlbC4gRWFjaCB0eXBlIHdpbGwgYmUKLSAg
ICBpbmNsdWRlZCBvbmNlLCByZWdhcmRsZXNzIG9mIHRoZSBudW1iZXIgb2YgcmVsYXRpb25zaGlw
cyBpdCBoYXMgd2l0aAotICAgIHRoZSBtb2RlbC4KLQotICAgIEZvciBleGFtcGxlLCBnaXZlbiBh
IG1vZGVsIHdpdGggdGhpcyBkZWZpbml0aW9uOgotCi0gICAgYGBgamF2YXNjcmlwdAotICAgIEFw
cC5CbG9nID0gRFMuTW9kZWwuZXh0ZW5kKHsKLSAgICAgIHVzZXJzOiBEUy5oYXNNYW55KCd1c2Vy
JyksCi0gICAgICBvd25lcjogRFMuYmVsb25nc1RvKCd1c2VyJyksCi0KLSAgICAgIHBvc3RzOiBE
Uy5oYXNNYW55KCdwb3N0JykKLSAgICB9KTsKLSAgICBgYGAKLQotICAgIFRoaXMgcHJvcGVydHkg
d291bGQgY29udGFpbiB0aGUgZm9sbG93aW5nOgotCi0gICAgYGBgamF2YXNjcmlwdAotICAgIHZh
ciByZWxhdGVkVHlwZXMgPSBFbWJlci5nZXQoQXBwLkJsb2csICdyZWxhdGVkVHlwZXMnKTsKLSAg
ICAvLz0+IFsgQXBwLlVzZXIsIEFwcC5Qb3N0IF0KLSAgICBgYGAKLQotICAgIEBwcm9wZXJ0eSBy
ZWxhdGVkVHlwZXMKLSAgICBAc3RhdGljCi0gICAgQHR5cGUgRW1iZXIuQXJyYXkKLSAgICBAcmVh
ZE9ubHkKLSAgKi8KLSAgcmVsYXRlZFR5cGVzOiBFbWJlci5jb21wdXRlZChmdW5jdGlvbigpIHsK
LSAgICB2YXIgdHlwZSwKLSAgICAgICAgdHlwZXMgPSBFbWJlci5BKCk7Ci0KLSAgICAvLyBMb29w
IHRocm91Z2ggZWFjaCBjb21wdXRlZCBwcm9wZXJ0eSBvbiB0aGUgY2xhc3MsCi0gICAgLy8gYW5k
IGNyZWF0ZSBhbiBhcnJheSBvZiB0aGUgdW5pcXVlIHR5cGVzIGludm9sdmVkCi0gICAgLy8gaW4g
cmVsYXRpb25zaGlwcwotICAgIHRoaXMuZWFjaENvbXB1dGVkUHJvcGVydHkoZnVuY3Rpb24obmFt
ZSwgbWV0YSkgewotICAgICAgaWYgKG1ldGEuaXNSZWxhdGlvbnNoaXApIHsKLSAgICAgICAgdHlw
ZSA9IG1ldGEudHlwZTsKLQotICAgICAgICBpZiAodHlwZW9mIHR5cGUgPT09ICdzdHJpbmcnKSB7
Ci0gICAgICAgICAgdHlwZSA9IGdldCh0aGlzLCB0eXBlLCBmYWxzZSkgfHwgdGhpcy5zdG9yZS5t
b2RlbEZvcih0eXBlKTsKLSAgICAgICAgfQotCi0gICAgICAgIEVtYmVyLmFzc2VydCgiWW91IHNw
ZWNpZmllZCBhIGhhc01hbnkgKCIgKyBtZXRhLnR5cGUgKyAiKSBvbiAiICsgbWV0YS5wYXJlbnRU
eXBlICsgIiBidXQgIiArIG1ldGEudHlwZSArICIgd2FzIG5vdCBmb3VuZC4iLCAgdHlwZSk7Ci0K
LSAgICAgICAgaWYgKCF0eXBlcy5jb250YWlucyh0eXBlKSkgewotICAgICAgICAgIEVtYmVyLmFz
c2VydCgiVHJ5aW5nIHRvIHNpZGVsb2FkICIgKyBuYW1lICsgIiBvbiAiICsgdGhpcy50b1N0cmlu
ZygpICsgIiBidXQgdGhlIHR5cGUgZG9lc24ndCBleGlzdC4iLCAhIXR5cGUpOwotICAgICAgICAg
IHR5cGVzLnB1c2godHlwZSk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9KTsKLQotICAgIHJl
dHVybiB0eXBlczsKLSAgfSksCi0KLSAgLyoqCi0gICAgQSBtYXAgd2hvc2Uga2V5cyBhcmUgdGhl
IHJlbGF0aW9uc2hpcHMgb2YgYSBtb2RlbCBhbmQgd2hvc2UgdmFsdWVzIGFyZQotICAgIHJlbGF0
aW9uc2hpcCBkZXNjcmlwdG9ycy4KLQotICAgIEZvciBleGFtcGxlLCBnaXZlbiBhIG1vZGVsIHdp
dGggdGhpcwotICAgIGRlZmluaXRpb246Ci0KLSAgICBgYGBqYXZhc2NyaXB0Ci0gICAgQXBwLkJs
b2cgPSBEUy5Nb2RlbC5leHRlbmQoewotICAgICAgdXNlcnM6IERTLmhhc01hbnkoJ3VzZXInKSwK
LSAgICAgIG93bmVyOiBEUy5iZWxvbmdzVG8oJ3VzZXInKSwKLQotICAgICAgcG9zdHM6IERTLmhh
c01hbnkoJ3Bvc3QnKQotICAgIH0pOwotICAgIGBgYAotCi0gICAgVGhpcyBwcm9wZXJ0eSB3b3Vs
ZCBjb250YWluIHRoZSBmb2xsb3dpbmc6Ci0KLSAgICBgYGBqYXZhc2NyaXB0Ci0gICAgdmFyIHJl
bGF0aW9uc2hpcHNCeU5hbWUgPSBFbWJlci5nZXQoQXBwLkJsb2csICdyZWxhdGlvbnNoaXBzQnlO
YW1lJyk7Ci0gICAgcmVsYXRpb25zaGlwc0J5TmFtZS5nZXQoJ3VzZXJzJyk7Ci0gICAgLy89PiB7
IGtleTogJ3VzZXJzJywga2luZDogJ2hhc01hbnknLCB0eXBlOiBBcHAuVXNlciB9Ci0gICAgcmVs
YXRpb25zaGlwc0J5TmFtZS5nZXQoJ293bmVyJyk7Ci0gICAgLy89PiB7IGtleTogJ293bmVyJywg
a2luZDogJ2JlbG9uZ3NUbycsIHR5cGU6IEFwcC5Vc2VyIH0KLSAgICBgYGAKLQotICAgIEBwcm9w
ZXJ0eSByZWxhdGlvbnNoaXBzQnlOYW1lCi0gICAgQHN0YXRpYwotICAgIEB0eXBlIEVtYmVyLk1h
cAotICAgIEByZWFkT25seQotICAqLwotICByZWxhdGlvbnNoaXBzQnlOYW1lOiBFbWJlci5jb21w
dXRlZChmdW5jdGlvbigpIHsKLSAgICB2YXIgbWFwID0gRW1iZXIuTWFwLmNyZWF0ZSgpLCB0eXBl
OwotCi0gICAgdGhpcy5lYWNoQ29tcHV0ZWRQcm9wZXJ0eShmdW5jdGlvbihuYW1lLCBtZXRhKSB7
Ci0gICAgICBpZiAobWV0YS5pc1JlbGF0aW9uc2hpcCkgewotICAgICAgICBtZXRhLmtleSA9IG5h
bWU7Ci0gICAgICAgIHR5cGUgPSBtZXRhLnR5cGU7Ci0KLSAgICAgICAgaWYgKCF0eXBlICYmIG1l
dGEua2luZCA9PT0gJ2hhc01hbnknKSB7Ci0gICAgICAgICAgdHlwZSA9IEVtYmVyLlN0cmluZy5z
aW5ndWxhcml6ZShuYW1lKTsKLSAgICAgICAgfSBlbHNlIGlmICghdHlwZSkgewotICAgICAgICAg
IHR5cGUgPSBuYW1lOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHR5cGVvZiB0eXBlID09PSAn
c3RyaW5nJykgewotICAgICAgICAgIG1ldGEudHlwZSA9IHRoaXMuc3RvcmUubW9kZWxGb3IodHlw
ZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBtYXAuc2V0KG5hbWUsIG1ldGEpOwotICAgICAgfQot
ICAgIH0pOwotCi0gICAgcmV0dXJuIG1hcDsKLSAgfSksCi0KLSAgLyoqCi0gICAgQSBtYXAgd2hv
c2Uga2V5cyBhcmUgdGhlIGZpZWxkcyBvZiB0aGUgbW9kZWwgYW5kIHdob3NlIHZhbHVlcyBhcmUg
c3RyaW5ncwotICAgIGRlc2NyaWJpbmcgdGhlIGtpbmQgb2YgdGhlIGZpZWxkLiBBIG1vZGVsJ3Mg
ZmllbGRzIGFyZSB0aGUgdW5pb24gb2YgYWxsIG9mIGl0cwotICAgIGF0dHJpYnV0ZXMgYW5kIHJl
bGF0aW9uc2hpcHMuCi0KLSAgICBGb3IgZXhhbXBsZToKLQotICAgIGBgYGphdmFzY3JpcHQKLQot
ICAgIEFwcC5CbG9nID0gRFMuTW9kZWwuZXh0ZW5kKHsKLSAgICAgIHVzZXJzOiBEUy5oYXNNYW55
KCd1c2VyJyksCi0gICAgICBvd25lcjogRFMuYmVsb25nc1RvKCd1c2VyJyksCi0KLSAgICAgIHBv
c3RzOiBEUy5oYXNNYW55KCdwb3N0JyksCi0KLSAgICAgIHRpdGxlOiBEUy5hdHRyKCdzdHJpbmcn
KQotICAgIH0pOwotCi0gICAgdmFyIGZpZWxkcyA9IEVtYmVyLmdldChBcHAuQmxvZywgJ2ZpZWxk
cycpOwotICAgIGZpZWxkcy5mb3JFYWNoKGZ1bmN0aW9uKGZpZWxkLCBraW5kKSB7Ci0gICAgICBj
b25zb2xlLmxvZyhmaWVsZCwga2luZCk7Ci0gICAgfSk7Ci0KLSAgICAvLyBwcmludHM6Ci0gICAg
Ly8gdXNlcnMsIGhhc01hbnkKLSAgICAvLyBvd25lciwgYmVsb25nc1RvCi0gICAgLy8gcG9zdHMs
IGhhc01hbnkKLSAgICAvLyB0aXRsZSwgYXR0cmlidXRlCi0gICAgYGBgCi0KLSAgICBAcHJvcGVy
dHkgZmllbGRzCi0gICAgQHN0YXRpYwotICAgIEB0eXBlIEVtYmVyLk1hcAotICAgIEByZWFkT25s
eQotICAqLwotICBmaWVsZHM6IEVtYmVyLmNvbXB1dGVkKGZ1bmN0aW9uKCkgewotICAgIHZhciBt
YXAgPSBFbWJlci5NYXAuY3JlYXRlKCk7Ci0KLSAgICB0aGlzLmVhY2hDb21wdXRlZFByb3BlcnR5
KGZ1bmN0aW9uKG5hbWUsIG1ldGEpIHsKLSAgICAgIGlmIChtZXRhLmlzUmVsYXRpb25zaGlwKSB7
Ci0gICAgICAgIG1hcC5zZXQobmFtZSwgbWV0YS5raW5kKTsKLSAgICAgIH0gZWxzZSBpZiAobWV0
YS5pc0F0dHJpYnV0ZSkgewotICAgICAgICBtYXAuc2V0KG5hbWUsICdhdHRyaWJ1dGUnKTsKLSAg
ICAgIH0KLSAgICB9KTsKLQotICAgIHJldHVybiBtYXA7Ci0gIH0pLAotCi0gIC8qKgotICAgIEdp
dmVuIGEgY2FsbGJhY2ssIGl0ZXJhdGVzIG92ZXIgZWFjaCBvZiB0aGUgcmVsYXRpb25zaGlwcyBp
biB0aGUgbW9kZWwsCi0gICAgaW52b2tpbmcgdGhlIGNhbGxiYWNrIHdpdGggdGhlIG5hbWUgb2Yg
ZWFjaCByZWxhdGlvbnNoaXAgYW5kIGl0cyByZWxhdGlvbnNoaXAKLSAgICBkZXNjcmlwdG9yLgot
Ci0gICAgQG1ldGhvZCBlYWNoUmVsYXRpb25zaGlwCi0gICAgQHN0YXRpYwotICAgIEBwYXJhbSB7
RnVuY3Rpb259IGNhbGxiYWNrIHRoZSBjYWxsYmFjayB0byBpbnZva2UKLSAgICBAcGFyYW0ge2Fu
eX0gYmluZGluZyB0aGUgdmFsdWUgdG8gd2hpY2ggdGhlIGNhbGxiYWNrJ3MgYHRoaXNgIHNob3Vs
ZCBiZSBib3VuZAotICAqLwotICBlYWNoUmVsYXRpb25zaGlwOiBmdW5jdGlvbihjYWxsYmFjaywg
YmluZGluZykgewotICAgIGdldCh0aGlzLCAncmVsYXRpb25zaGlwc0J5TmFtZScpLmZvckVhY2go
ZnVuY3Rpb24obmFtZSwgcmVsYXRpb25zaGlwKSB7Ci0gICAgICBjYWxsYmFjay5jYWxsKGJpbmRp
bmcsIG5hbWUsIHJlbGF0aW9uc2hpcCk7Ci0gICAgfSk7Ci0gIH0sCi0KLSAgLyoqCi0gICAgR2l2
ZW4gYSBjYWxsYmFjaywgaXRlcmF0ZXMgb3ZlciBlYWNoIG9mIHRoZSB0eXBlcyByZWxhdGVkIHRv
IGEgbW9kZWwsCi0gICAgaW52b2tpbmcgdGhlIGNhbGxiYWNrIHdpdGggdGhlIHJlbGF0ZWQgdHlw
ZSdzIGNsYXNzLiBFYWNoIHR5cGUgd2lsbCBiZQotICAgIHJldHVybmVkIGp1c3Qgb25jZSwgcmVn
YXJkbGVzcyBvZiBob3cgbWFueSBkaWZmZXJlbnQgcmVsYXRpb25zaGlwcyBpdCBoYXMKLSAgICB3
aXRoIGEgbW9kZWwuCi0KLSAgICBAbWV0aG9kIGVhY2hSZWxhdGVkVHlwZQotICAgIEBzdGF0aWMK
LSAgICBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFjayB0aGUgY2FsbGJhY2sgdG8gaW52b2tlCi0g
ICAgQHBhcmFtIHthbnl9IGJpbmRpbmcgdGhlIHZhbHVlIHRvIHdoaWNoIHRoZSBjYWxsYmFjaydz
IGB0aGlzYCBzaG91bGQgYmUgYm91bmQKLSAgKi8KLSAgZWFjaFJlbGF0ZWRUeXBlOiBmdW5jdGlv
bihjYWxsYmFjaywgYmluZGluZykgewotICAgIGdldCh0aGlzLCAncmVsYXRlZFR5cGVzJykuZm9y
RWFjaChmdW5jdGlvbih0eXBlKSB7Ci0gICAgICBjYWxsYmFjay5jYWxsKGJpbmRpbmcsIHR5cGUp
OwotICAgIH0pOwotICB9Ci19KTsKLQotRFMuTW9kZWwucmVvcGVuKHsKLSAgLyoqCi0gICAgR2l2
ZW4gYSBjYWxsYmFjaywgaXRlcmF0ZXMgb3ZlciBlYWNoIG9mIHRoZSByZWxhdGlvbnNoaXBzIGlu
IHRoZSBtb2RlbCwKLSAgICBpbnZva2luZyB0aGUgY2FsbGJhY2sgd2l0aCB0aGUgbmFtZSBvZiBl
YWNoIHJlbGF0aW9uc2hpcCBhbmQgaXRzIHJlbGF0aW9uc2hpcAotICAgIGRlc2NyaXB0b3IuCi0K
LSAgICBAbWV0aG9kIGVhY2hSZWxhdGlvbnNoaXAKLSAgICBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxs
YmFjayB0aGUgY2FsbGJhY2sgdG8gaW52b2tlCi0gICAgQHBhcmFtIHthbnl9IGJpbmRpbmcgdGhl
IHZhbHVlIHRvIHdoaWNoIHRoZSBjYWxsYmFjaydzIGB0aGlzYCBzaG91bGQgYmUgYm91bmQKLSAg
Ki8KLSAgZWFjaFJlbGF0aW9uc2hpcDogZnVuY3Rpb24oY2FsbGJhY2ssIGJpbmRpbmcpIHsKLSAg
ICB0aGlzLmNvbnN0cnVjdG9yLmVhY2hSZWxhdGlvbnNoaXAoY2FsbGJhY2ssIGJpbmRpbmcpOwot
ICB9Ci19KTsKLQotfSkoKTsKLQotCi0KLShmdW5jdGlvbigpIHsKLS8qKgotICBAbW9kdWxlIGVt
YmVyLWRhdGEKLSovCi0KLX0pKCk7Ci0KLQotCi0oZnVuY3Rpb24oKSB7Ci0vKioKLSAgQG1vZHVs
ZSBlbWJlci1kYXRhCi0qLwotCi12YXIgZ2V0ID0gRW1iZXIuZ2V0LCBzZXQgPSBFbWJlci5zZXQ7
Ci12YXIgZm9yRWFjaCA9IEVtYmVyLkVudW1lcmFibGVVdGlscy5mb3JFYWNoOwotCi0vKioKLSAg
QGNsYXNzIFJlY29yZEFycmF5TWFuYWdlcgotICBAbmFtZXNwYWNlIERTCi0gIEBwcml2YXRlCi0g
IEBleHRlbmRzIEVtYmVyLk9iamVjdAotKi8KLURTLlJlY29yZEFycmF5TWFuYWdlciA9IEVtYmVy
Lk9iamVjdC5leHRlbmQoewotICBpbml0OiBmdW5jdGlvbigpIHsKLSAgICB0aGlzLmZpbHRlcmVk
UmVjb3JkQXJyYXlzID0gRW1iZXIuTWFwV2l0aERlZmF1bHQuY3JlYXRlKHsKLSAgICAgIGRlZmF1
bHRWYWx1ZTogZnVuY3Rpb24oKSB7IHJldHVybiBbXTsgfQotICAgIH0pOwotCi0gICAgdGhpcy5j
aGFuZ2VkUmVjb3JkcyA9IFtdOwotICB9LAotCi0gIHJlY29yZERpZENoYW5nZTogZnVuY3Rpb24o
cmVjb3JkKSB7Ci0gICAgaWYgKHRoaXMuY2hhbmdlZFJlY29yZHMucHVzaChyZWNvcmQpICE9PSAx
KSB7IHJldHVybjsgfQotCi0gICAgRW1iZXIucnVuLnNjaGVkdWxlKCdhY3Rpb25zJywgdGhpcywg
dGhpcy51cGRhdGVSZWNvcmRBcnJheXMpOwotICB9LAotCi0gIHJlY29yZEFycmF5c0ZvclJlY29y
ZDogZnVuY3Rpb24ocmVjb3JkKSB7Ci0gICAgcmVjb3JkLl9yZWNvcmRBcnJheXMgPSByZWNvcmQu
X3JlY29yZEFycmF5cyB8fCBFbWJlci5PcmRlcmVkU2V0LmNyZWF0ZSgpOwotICAgIHJldHVybiBy
ZWNvcmQuX3JlY29yZEFycmF5czsKLSAgfSwKLQotICAvKioKLSAgICBUaGlzIG1ldGhvZCBpcyBp
bnZva2VkIHdoZW5ldmVyIGRhdGEgaXMgbG9hZGVkIGludG8gdGhlIHN0b3JlIGJ5IHRoZQotICAg
IGFkYXB0ZXIgb3IgdXBkYXRlZCBieSB0aGUgYWRhcHRlciwgb3Igd2hlbiBhIHJlY29yZCBoYXMg
Y2hhbmdlZC4KLQotICAgIEl0IHVwZGF0ZXMgYWxsIHJlY29yZCBhcnJheXMgdGhhdCBhIHJlY29y
ZCBiZWxvbmdzIHRvLgotCi0gICAgVG8gYXZvaWQgdGhyYXNoaW5nLCBpdCBvbmx5IHJ1bnMgYXQg
bW9zdCBvbmNlIHBlciBydW4gbG9vcC4KLQotICAgIEBtZXRob2QgdXBkYXRlUmVjb3JkQXJyYXlz
Ci0gICAgQHBhcmFtIHtDbGFzc30gdHlwZQotICAgIEBwYXJhbSB7TnVtYmVyfFN0cmluZ30gY2xp
ZW50SWQKLSAgKi8KLSAgdXBkYXRlUmVjb3JkQXJyYXlzOiBmdW5jdGlvbigpIHsKLSAgICBmb3JF
YWNoKHRoaXMuY2hhbmdlZFJlY29yZHMsIGZ1bmN0aW9uKHJlY29yZCkgewotICAgICAgaWYgKGdl
dChyZWNvcmQsICdpc0RlbGV0ZWQnKSkgewotICAgICAgICB0aGlzLl9yZWNvcmRXYXNEZWxldGVk
KHJlY29yZCk7Ci0gICAgICB9IGVsc2UgewotICAgICAgICB0aGlzLl9yZWNvcmRXYXNDaGFuZ2Vk
KHJlY29yZCk7Ci0gICAgICB9Ci0gICAgfSwgdGhpcyk7Ci0KLSAgICB0aGlzLmNoYW5nZWRSZWNv
cmRzLmxlbmd0aCA9IDA7Ci0gIH0sCi0KLSAgX3JlY29yZFdhc0RlbGV0ZWQ6IGZ1bmN0aW9uIChy
ZWNvcmQpIHsKLSAgICB2YXIgcmVjb3JkQXJyYXlzID0gcmVjb3JkLl9yZWNvcmRBcnJheXM7Ci0K
LSAgICBpZiAoIXJlY29yZEFycmF5cykgeyByZXR1cm47IH0KLQotICAgIGZvckVhY2gocmVjb3Jk
QXJyYXlzLCBmdW5jdGlvbihhcnJheSkgewotICAgICAgYXJyYXkucmVtb3ZlUmVjb3JkKHJlY29y
ZCk7Ci0gICAgfSk7Ci0gIH0sCi0KLSAgX3JlY29yZFdhc0NoYW5nZWQ6IGZ1bmN0aW9uIChyZWNv
cmQpIHsKLSAgICB2YXIgdHlwZSA9IHJlY29yZC5jb25zdHJ1Y3RvciwKLSAgICAgICAgcmVjb3Jk
QXJyYXlzID0gdGhpcy5maWx0ZXJlZFJlY29yZEFycmF5cy5nZXQodHlwZSksCi0gICAgICAgIGZp
bHRlcjsKLQotICAgIGZvckVhY2gocmVjb3JkQXJyYXlzLCBmdW5jdGlvbihhcnJheSkgewotICAg
ICAgZmlsdGVyID0gZ2V0KGFycmF5LCAnZmlsdGVyRnVuY3Rpb24nKTsKLSAgICAgIHRoaXMudXBk
YXRlUmVjb3JkQXJyYXkoYXJyYXksIGZpbHRlciwgdHlwZSwgcmVjb3JkKTsKLSAgICB9LCB0aGlz
KTsKLQotICAgIC8vIGxvb3AgdGhyb3VnaCBhbGwgbWFueUFycmF5cyBjb250YWluaW5nIGFuIHVu
bG9hZGVkIGNvcHkgb2YgdGhpcwotICAgIC8vIGNsaWVudElkIGFuZCBub3RpZnkgdGhlbSB0aGF0
IHRoZSByZWNvcmQgd2FzIGxvYWRlZC4KLSAgICB2YXIgbWFueUFycmF5cyA9IHJlY29yZC5fbG9h
ZGluZ1JlY29yZEFycmF5czsKLQotICAgIGlmIChtYW55QXJyYXlzKSB7Ci0gICAgICBmb3IgKHZh
ciBpPTAsIGw9bWFueUFycmF5cy5sZW5ndGg7IGk8bDsgaSsrKSB7Ci0gICAgICAgIG1hbnlBcnJh
eXNbaV0ubG9hZGVkUmVjb3JkKCk7Ci0gICAgICB9Ci0KLSAgICAgIHJlY29yZC5fbG9hZGluZ1Jl
Y29yZEFycmF5cyA9IFtdOwotICAgIH0KLSAgfSwKLQotICAvKioKLSAgICBVcGRhdGUgYW4gaW5k
aXZpZHVhbCBmaWx0ZXIuCi0KLSAgICBAbWV0aG9kIHVwZGF0ZVJlY29yZEFycmF5Ci0gICAgQHBh
cmFtIHtEUy5GaWx0ZXJlZFJlY29yZEFycmF5fSBhcnJheQotICAgIEBwYXJhbSB7RnVuY3Rpb259
IGZpbHRlcgotICAgIEBwYXJhbSB7Q2xhc3N9IHR5cGUKLSAgICBAcGFyYW0ge051bWJlcnxTdHJp
bmd9IGNsaWVudElkCi0gICovCi0gIHVwZGF0ZVJlY29yZEFycmF5OiBmdW5jdGlvbihhcnJheSwg
ZmlsdGVyLCB0eXBlLCByZWNvcmQpIHsKLSAgICB2YXIgc2hvdWxkQmVJbkFycmF5OwotCi0gICAg
aWYgKCFmaWx0ZXIpIHsKLSAgICAgIHNob3VsZEJlSW5BcnJheSA9IHRydWU7Ci0gICAgfSBlbHNl
IHsKLSAgICAgIHNob3VsZEJlSW5BcnJheSA9IGZpbHRlcihyZWNvcmQpOwotICAgIH0KLQotICAg
IHZhciByZWNvcmRBcnJheXMgPSB0aGlzLnJlY29yZEFycmF5c0ZvclJlY29yZChyZWNvcmQpOwot
Ci0gICAgaWYgKHNob3VsZEJlSW5BcnJheSkgewotICAgICAgcmVjb3JkQXJyYXlzLmFkZChhcnJh
eSk7Ci0gICAgICBhcnJheS5hZGRSZWNvcmQocmVjb3JkKTsKLSAgICB9IGVsc2UgaWYgKCFzaG91
bGRCZUluQXJyYXkpIHsKLSAgICAgIHJlY29yZEFycmF5cy5yZW1vdmUoYXJyYXkpOwotICAgICAg
YXJyYXkucmVtb3ZlUmVjb3JkKHJlY29yZCk7Ci0gICAgfQotICB9LAotCi0gIC8qKgotICAgIFRo
aXMgbWV0aG9kIGlzIGludm9rZWQgaWYgdGhlIGBmaWx0ZXJGdW5jdGlvbmAgcHJvcGVydHkgaXMK
LSAgICBjaGFuZ2VkIG9uIGEgYERTLkZpbHRlcmVkUmVjb3JkQXJyYXlgLgotCi0gICAgSXQgZXNz
ZW50aWFsbHkgcmUtcnVucyB0aGUgZmlsdGVyIGZyb20gc2NyYXRjaC4gVGhpcyBzYW1lCi0gICAg
bWV0aG9kIGlzIGludm9rZWQgd2hlbiB0aGUgZmlsdGVyIGlzIGNyZWF0ZWQgaW4gdGggZmlyc3Qg
cGxhY2UuCi0KLSAgICBAbWV0aG9kIHVwZGF0ZUZpbHRlcgotICAgIEBwYXJhbSBhcnJheQotICAg
IEBwYXJhbSB0eXBlCi0gICAgQHBhcmFtIGZpbHRlcgotICAqLwotICB1cGRhdGVGaWx0ZXI6IGZ1
bmN0aW9uKGFycmF5LCB0eXBlLCBmaWx0ZXIpIHsKLSAgICB2YXIgdHlwZU1hcCA9IHRoaXMuc3Rv
cmUudHlwZU1hcEZvcih0eXBlKSwKLSAgICAgICAgcmVjb3JkcyA9IHR5cGVNYXAucmVjb3Jkcywg
cmVjb3JkOwotCi0gICAgZm9yICh2YXIgaT0wLCBsPXJlY29yZHMubGVuZ3RoOyBpPGw7IGkrKykg
ewotICAgICAgcmVjb3JkID0gcmVjb3Jkc1tpXTsKLQotICAgICAgaWYgKCFnZXQocmVjb3JkLCAn
aXNEZWxldGVkJykgJiYgIWdldChyZWNvcmQsICdpc0VtcHR5JykpIHsKLSAgICAgICAgdGhpcy51
cGRhdGVSZWNvcmRBcnJheShhcnJheSwgZmlsdGVyLCB0eXBlLCByZWNvcmQpOwotICAgICAgfQot
ICAgIH0KLSAgfSwKLQotICAvKioKLSAgICBDcmVhdGUgYSBgRFMuTWFueUFycmF5YCBmb3IgYSB0
eXBlIGFuZCBsaXN0IG9mIHJlY29yZCByZWZlcmVuY2VzLCBhbmQgaW5kZXgKLSAgICB0aGUgYE1h
bnlBcnJheWAgdW5kZXIgZWFjaCByZWZlcmVuY2UuIFRoaXMgYWxsb3dzIHVzIHRvIGVmZmljaWVu
dGx5IHJlbW92ZQotICAgIHJlY29yZHMgZnJvbSBgTWFueUFycmF5YHMgd2hlbiB0aGV5IGFyZSBk
ZWxldGVkLgotCi0gICAgQG1ldGhvZCBjcmVhdGVNYW55QXJyYXkKLSAgICBAcGFyYW0ge0NsYXNz
fSB0eXBlCi0gICAgQHBhcmFtIHtBcnJheX0gcmVmZXJlbmNlcwotICAgIEByZXR1cm4ge0RTLk1h
bnlBcnJheX0KLSAgKi8KLSAgY3JlYXRlTWFueUFycmF5OiBmdW5jdGlvbih0eXBlLCByZWNvcmRz
KSB7Ci0gICAgdmFyIG1hbnlBcnJheSA9IERTLk1hbnlBcnJheS5jcmVhdGUoewotICAgICAgdHlw
ZTogdHlwZSwKLSAgICAgIGNvbnRlbnQ6IHJlY29yZHMsCi0gICAgICBzdG9yZTogdGhpcy5zdG9y
ZQotICAgIH0pOwotCi0gICAgZm9yRWFjaChyZWNvcmRzLCBmdW5jdGlvbihyZWNvcmQpIHsKLSAg
ICAgIHZhciBhcnJheXMgPSB0aGlzLnJlY29yZEFycmF5c0ZvclJlY29yZChyZWNvcmQpOwotICAg
ICAgYXJyYXlzLmFkZChtYW55QXJyYXkpOwotICAgIH0sIHRoaXMpOwotCi0gICAgcmV0dXJuIG1h
bnlBcnJheTsKLSAgfSwKLQotICAvKioKLSAgICBDcmVhdGUgYSBgRFMuUmVjb3JkQXJyYXlgIGZv
ciBhIHR5cGUgYW5kIHJlZ2lzdGVyIGl0IGZvciB1cGRhdGVzLgotCi0gICAgQG1ldGhvZCBjcmVh
dGVSZWNvcmRBcnJheQotICAgIEBwYXJhbSB7Q2xhc3N9IHR5cGUKLSAgICBAcmV0dXJuIHtEUy5S
ZWNvcmRBcnJheX0KLSAgKi8KLSAgY3JlYXRlUmVjb3JkQXJyYXk6IGZ1bmN0aW9uKHR5cGUpIHsK
LSAgICB2YXIgYXJyYXkgPSBEUy5SZWNvcmRBcnJheS5jcmVhdGUoewotICAgICAgdHlwZTogdHlw
ZSwKLSAgICAgIGNvbnRlbnQ6IEVtYmVyLkEoKSwKLSAgICAgIHN0b3JlOiB0aGlzLnN0b3JlLAot
ICAgICAgaXNMb2FkZWQ6IHRydWUKLSAgICB9KTsKLQotICAgIHRoaXMucmVnaXN0ZXJGaWx0ZXJl
ZFJlY29yZEFycmF5KGFycmF5LCB0eXBlKTsKLQotICAgIHJldHVybiBhcnJheTsKLSAgfSwKLQot
ICAvKioKLSAgICBDcmVhdGUgYSBgRFMuRmlsdGVyZWRSZWNvcmRBcnJheWAgZm9yIGEgdHlwZSBh
bmQgcmVnaXN0ZXIgaXQgZm9yIHVwZGF0ZXMuCi0KLSAgICBAbWV0aG9kIGNyZWF0ZUZpbHRlcmVk
UmVjb3JkQXJyYXkKLSAgICBAcGFyYW0ge0NsYXNzfSB0eXBlCi0gICAgQHBhcmFtIHtGdW5jdGlv
bn0gZmlsdGVyCi0gICAgQHJldHVybiB7RFMuRmlsdGVyZWRSZWNvcmRBcnJheX0KLSAgKi8KLSAg
Y3JlYXRlRmlsdGVyZWRSZWNvcmRBcnJheTogZnVuY3Rpb24odHlwZSwgZmlsdGVyKSB7Ci0gICAg
dmFyIGFycmF5ID0gRFMuRmlsdGVyZWRSZWNvcmRBcnJheS5jcmVhdGUoewotICAgICAgdHlwZTog
dHlwZSwKLSAgICAgIGNvbnRlbnQ6IEVtYmVyLkEoKSwKLSAgICAgIHN0b3JlOiB0aGlzLnN0b3Jl
LAotICAgICAgbWFuYWdlcjogdGhpcywKLSAgICAgIGZpbHRlckZ1bmN0aW9uOiBmaWx0ZXIKLSAg
ICB9KTsKLQotICAgIHRoaXMucmVnaXN0ZXJGaWx0ZXJlZFJlY29yZEFycmF5KGFycmF5LCB0eXBl
LCBmaWx0ZXIpOwotCi0gICAgcmV0dXJuIGFycmF5OwotICB9LAotCi0gIC8qKgotICAgIENyZWF0
ZSBhIGBEUy5BZGFwdGVyUG9wdWxhdGVkUmVjb3JkQXJyYXlgIGZvciBhIHR5cGUgd2l0aCBnaXZl
biBxdWVyeS4KLQotICAgIEBtZXRob2QgY3JlYXRlQWRhcHRlclBvcHVsYXRlZFJlY29yZEFycmF5
Ci0gICAgQHBhcmFtIHtDbGFzc30gdHlwZQotICAgIEBwYXJhbSB7T2JqZWN0fSBxdWVyeQotICAg
IEByZXR1cm4ge0RTLkFkYXB0ZXJQb3B1bGF0ZWRSZWNvcmRBcnJheX0KLSAgKi8KLSAgY3JlYXRl
QWRhcHRlclBvcHVsYXRlZFJlY29yZEFycmF5OiBmdW5jdGlvbih0eXBlLCBxdWVyeSkgewotICAg
IHJldHVybiBEUy5BZGFwdGVyUG9wdWxhdGVkUmVjb3JkQXJyYXkuY3JlYXRlKHsKLSAgICAgIHR5
cGU6IHR5cGUsCi0gICAgICBxdWVyeTogcXVlcnksCi0gICAgICBjb250ZW50OiBFbWJlci5BKCks
Ci0gICAgICBzdG9yZTogdGhpcy5zdG9yZQotICAgIH0pOwotICB9LAotCi0gIC8qKgotICAgIFJl
Z2lzdGVyIGEgUmVjb3JkQXJyYXkgZm9yIGEgZ2l2ZW4gdHlwZSB0byBiZSBiYWNrZWQgYnkKLSAg
ICBhIGZpbHRlciBmdW5jdGlvbi4gVGhpcyB3aWxsIGNhdXNlIHRoZSBhcnJheSB0byB1cGRhdGUK
LSAgICBhdXRvbWF0aWNhbGx5IHdoZW4gcmVjb3JkcyBvZiB0aGF0IHR5cGUgY2hhbmdlIGF0dHJp
YnV0ZQotICAgIHZhbHVlcyBvciBzdGF0ZXMuCi0KLSAgICBAbWV0aG9kIHJlZ2lzdGVyRmlsdGVy
ZWRSZWNvcmRBcnJheQotICAgIEBwYXJhbSB7RFMuUmVjb3JkQXJyYXl9IGFycmF5Ci0gICAgQHBh
cmFtIHtDbGFzc30gdHlwZQotICAgIEBwYXJhbSB7RnVuY3Rpb259IGZpbHRlcgotICAqLwotICBy
ZWdpc3RlckZpbHRlcmVkUmVjb3JkQXJyYXk6IGZ1bmN0aW9uKGFycmF5LCB0eXBlLCBmaWx0ZXIp
IHsKLSAgICB2YXIgcmVjb3JkQXJyYXlzID0gdGhpcy5maWx0ZXJlZFJlY29yZEFycmF5cy5nZXQo
dHlwZSk7Ci0gICAgcmVjb3JkQXJyYXlzLnB1c2goYXJyYXkpOwotCi0gICAgdGhpcy51cGRhdGVG
aWx0ZXIoYXJyYXksIHR5cGUsIGZpbHRlcik7Ci0gIH0sCi0KLSAgLy8gSW50ZXJuYWxseSwgd2Ug
bWFpbnRhaW4gYSBtYXAgb2YgYWxsIHVubG9hZGVkIElEcyByZXF1ZXN0ZWQgYnkKLSAgLy8gYSBN
YW55QXJyYXkuIEFzIHRoZSBhZGFwdGVyIGxvYWRzIGRhdGEgaW50byB0aGUgc3RvcmUsIHRoZQot
ICAvLyBzdG9yZSBub3RpZmllcyBhbnkgaW50ZXJlc3RlZCBNYW55QXJyYXlzLiBXaGVuIHRoZSBN
YW55QXJyYXkncwotICAvLyB0b3RhbCBudW1iZXIgb2YgbG9hZGluZyByZWNvcmRzIGRyb3BzIHRv
IHplcm8sIGl0IGJlY29tZXMKLSAgLy8gYGlzTG9hZGVkYCBhbmQgZmlyZXMgYSBgZGlkTG9hZGAg
ZXZlbnQuCi0gIHJlZ2lzdGVyV2FpdGluZ1JlY29yZEFycmF5OiBmdW5jdGlvbihyZWNvcmQsIGFy
cmF5KSB7Ci0gICAgdmFyIGxvYWRpbmdSZWNvcmRBcnJheXMgPSByZWNvcmQuX2xvYWRpbmdSZWNv
cmRBcnJheXMgfHwgW107Ci0gICAgbG9hZGluZ1JlY29yZEFycmF5cy5wdXNoKGFycmF5KTsKLSAg
ICByZWNvcmQuX2xvYWRpbmdSZWNvcmRBcnJheXMgPSBsb2FkaW5nUmVjb3JkQXJyYXlzOwotICB9
Ci19KTsKLQotfSkoKTsKLQotCi0KLShmdW5jdGlvbigpIHsKLS8qKgotICBAbW9kdWxlIGVtYmVy
LWRhdGEKLSovCi0KLXZhciBnZXQgPSBFbWJlci5nZXQsIHNldCA9IEVtYmVyLnNldDsKLXZhciBt
YXAgPSBFbWJlci5BcnJheVBvbHlmaWxscy5tYXA7Ci0KLXZhciBlcnJvclByb3BzID0gWydkZXNj
cmlwdGlvbicsICdmaWxlTmFtZScsICdsaW5lTnVtYmVyJywgJ21lc3NhZ2UnLCAnbmFtZScsICdu
dW1iZXInLCAnc3RhY2snXTsKLQotLyoqCi0gIEEgYERTLkludmFsaWRFcnJvcmAgaXMgdXNlZCBi
eSBhbiBhZGFwdGVyIHRvIHNpZ25hbCB0aGUgZXh0ZXJuYWwgQVBJCi0gIHdhcyB1bmFibGUgdG8g
cHJvY2VzcyBhIHJlcXVlc3QgYmVjYXVzZSB0aGUgY29udGVudCB3YXMgbm90Ci0gIHNlbWFudGlj
YWxseSBjb3JyZWN0IG9yIG1lYW5pbmdmdWwgcGVyIHRoZSBBUEkuIFVzdWFsbHkgdGhpcyBtZWFu
cyBhCi0gIHJlY29yZCBmYWlsZWQgc29tZSBmb3JtIG9mIHNlcnZlciBzaWRlIHZhbGlkYXRpb24u
IFdoZW4gYSBwcm9taXNlCi0gIGZyb20gYW4gYWRhcHRlciBpcyByZWplY3RlZCB3aXRoIGEgYERT
LkludmFsaWRFcnJvcmAgdGhlIHJlY29yZCB3aWxsCi0gIHRyYW5zaXRpb24gdG8gdGhlIGBpbnZh
bGlkYCBzdGF0ZSBhbmQgdGhlIGVycm9ycyB3aWxsIGJlIHNldCB0byB0aGUKLSAgYGVycm9yc2Ag
cHJvcGVydHkgb24gdGhlIHJlY29yZC4KLQotICBFeGFtcGxlCi0KLSAgYGBgamF2YXNjcmlwdAot
ICBBcHAuQXBwbGljYXRpb25BZGFwdGVyID0gRFMuUkVTVEFkYXB0ZXIuZXh0ZW5kKHsKLSAgICBh
amF4RXJyb3I6IGZ1bmN0aW9uKGpxWEhSKSB7Ci0gICAgICB2YXIgZXJyb3IgPSB0aGlzLl9zdXBl
cihqcVhIUik7Ci0KLSAgICAgIGlmIChqcVhIUiAmJiBqcVhIUi5zdGF0dXMgPT09IDQyMikgewot
ICAgICAgICB2YXIganNvbkVycm9ycyA9IEVtYmVyLiQucGFyc2VKU09OKGpxWEhSLnJlc3BvbnNl
VGV4dClbImVycm9ycyJdOwotICAgICAgICByZXR1cm4gbmV3IERTLkludmFsaWRFcnJvcihqc29u
RXJyb3JzKTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgIH0K
LSAgICB9Ci0gIH0pOwotICBgYGAKLQotICBAY2xhc3MgSW52YWxpZEVycm9yCi0gIEBuYW1lc3Bh
Y2UgRFMKLSovCi1EUy5JbnZhbGlkRXJyb3IgPSBmdW5jdGlvbihlcnJvcnMpIHsKLSAgdmFyIHRt
cCA9IEVycm9yLnByb3RvdHlwZS5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsICJUaGUgYmFja2VuZCBy
ZWplY3RlZCB0aGUgY29tbWl0IGJlY2F1c2UgaXQgd2FzIGludmFsaWQ6ICIgKyBFbWJlci5pbnNw
ZWN0KGVycm9ycykpOwotICB0aGlzLmVycm9ycyA9IGVycm9yczsKLQotICBmb3IgKHZhciBpPTAs
IGw9ZXJyb3JQcm9wcy5sZW5ndGg7IGk8bDsgaSsrKSB7Ci0gICAgdGhpc1tlcnJvclByb3BzW2ld
XSA9IHRtcFtlcnJvclByb3BzW2ldXTsKLSAgfQotfTsKLURTLkludmFsaWRFcnJvci5wcm90b3R5
cGUgPSBFbWJlci5jcmVhdGUoRXJyb3IucHJvdG90eXBlKTsKLQotLyoqCi0gIEFuIGFkYXB0ZXIg
aXMgYW4gb2JqZWN0IHRoYXQgcmVjZWl2ZXMgcmVxdWVzdHMgZnJvbSBhIHN0b3JlIGFuZAotICB0
cmFuc2xhdGVzIHRoZW0gaW50byB0aGUgYXBwcm9wcmlhdGUgYWN0aW9uIHRvIHRha2UgYWdhaW5z
dCB5b3VyCi0gIHBlcnNpc3RlbmNlIGxheWVyLiBUaGUgcGVyc2lzdGVuY2UgbGF5ZXIgaXMgdXN1
YWxseSBhbiBIVFRQIEFQSSwgYnV0Ci0gIG1heSBiZSBhbnl0aGluZywgc3VjaCBhcyB0aGUgYnJv
d3NlcidzIGxvY2FsIHN0b3JhZ2UuIFR5cGljYWxseSB0aGUKLSAgYWRhcHRlciBpcyBub3QgaW52
b2tlZCBkaXJlY3RseSBpbnN0ZWFkIGl0cyBmdW5jdGlvbmFsaXR5IGlzIGFjY2Vzc2VkCi0gIHRo
cm91Z2ggdGhlIGBzdG9yZWAuCi0KLSAgIyMjIENyZWF0aW5nIGFuIEFkYXB0ZXIKLQotICBGaXJz
dCwgY3JlYXRlIGEgbmV3IHN1YmNsYXNzIG9mIGBEUy5BZGFwdGVyYDoKLQotICBgYGBqYXZhc2Ny
aXB0Ci0gIEFwcC5NeUFkYXB0ZXIgPSBEUy5BZGFwdGVyLmV4dGVuZCh7Ci0gICAgLy8gLi4ueW91
ciBjb2RlIGhlcmUKLSAgfSk7Ci0gIGBgYAotCi0gIFRvIHRlbGwgeW91ciBzdG9yZSB3aGljaCBh
ZGFwdGVyIHRvIHVzZSwgc2V0IGl0cyBgYWRhcHRlcmAgcHJvcGVydHk6Ci0KLSAgYGBgamF2YXNj
cmlwdAotICBBcHAuc3RvcmUgPSBEUy5TdG9yZS5jcmVhdGUoewotICAgIGFkYXB0ZXI6ICdNeUFk
YXB0ZXInCi0gIH0pOwotICBgYGAKLQotICBgRFMuQWRhcHRlcmAgaXMgYW4gYWJzdHJhY3QgYmFz
ZSBjbGFzcyB0aGF0IHlvdSBzaG91bGQgb3ZlcnJpZGUgaW4geW91cgotICBhcHBsaWNhdGlvbiB0
byBjdXN0b21pemUgaXQgZm9yIHlvdXIgYmFja2VuZC4gVGhlIG1pbmltdW0gc2V0IG9mIG1ldGhv
ZHMKLSAgdGhhdCB5b3Ugc2hvdWxkIGltcGxlbWVudCBpczoKLQotICAgICogYGZpbmQoKWAKLSAg
ICAqIGBjcmVhdGVSZWNvcmQoKWAKLSAgICAqIGB1cGRhdGVSZWNvcmQoKWAKLSAgICAqIGBkZWxl
dGVSZWNvcmQoKWAKLSAgICAqIGBmaW5kQWxsKClgCi0gICAgKiBgZmluZFF1ZXJ5KClgCi0KLSAg
VG8gaW1wcm92ZSB0aGUgbmV0d29yayBwZXJmb3JtYW5jZSBvZiB5b3VyIGFwcGxpY2F0aW9uLCB5
b3UgY2FuIG9wdGltaXplCi0gIHlvdXIgYWRhcHRlciBieSBvdmVycmlkaW5nIHRoZXNlIGxvd2Vy
LWxldmVsIG1ldGhvZHM6Ci0KLSAgICAqIGBmaW5kTWFueSgpYAotCi0KLSAgRm9yIGFuIGV4YW1w
bGUgaW1wbGVtZW50YXRpb24sIHNlZSBgRFMuUkVTVEFkYXB0ZXJgLCB0aGUKLSAgaW5jbHVkZWQg
UkVTVCBhZGFwdGVyLgotCi0gIEBjbGFzcyBBZGFwdGVyCi0gIEBuYW1lc3BhY2UgRFMKLSAgQGV4
dGVuZHMgRW1iZXIuT2JqZWN0Ci0qLwotCi1EUy5BZGFwdGVyID0gRW1iZXIuT2JqZWN0LmV4dGVu
ZCh7Ci0KLSAgLyoqCi0gICAgSWYgeW91IHdvdWxkIGxpa2UgeW91ciBhZGFwdGVyIHRvIHVzZSBh
IGN1c3RvbSBzZXJpYWxpemVyIHlvdSBjYW4KLSAgICBzZXQgdGhlIGBkZWZhdWx0U2VyaWFsaXpl
cmAgcHJvcGVydHkgdG8gYmUgdGhlIG5hbWUgb2YgdGhlIGN1c3RvbQotICAgIHNlcmlhbGl6ZXIu
Ci0KLSAgICBOb3RlIHRoZSBgZGVmYXVsdFNlcmlhbGl6ZXJgIHNlcmlhbGl6ZXIgaGFzIGEgbG93
ZXIgcHJpb3JpdHkgdGhlbgotICAgIGEgbW9kZWwgc3BlY2lmaWMgc2VyaWFsaXplciAoaS5lLiBg
UG9zdFNlcmlhbGl6ZXJgKSBvciB0aGUKLSAgICBgYXBwbGljYXRpb25gIHNlcmlhbGl6ZXIuCi0K
LSAgICBgYGBqYXZhc2NyaXB0Ci0gICAgdmFyIERqYW5nb0FkYXB0ZXIgPSBEUy5BZGFwdGVyLmV4
dGVuZCh7Ci0gICAgICBkZWZhdWx0U2VyaWFsaXplcjogJ2RqYW5nbycKLSAgICB9KTsKLSAgICBg
YGAKLQotICAgIEBwcm9wZXJ0eSBkZWZhdWx0U2VyaWFsaXplcgotICAgIEB0eXBlIHtTdHJpbmd9
Ci0gICovCi0KLSAgLyoqCi0gICAgVGhlIGBmaW5kKClgIG1ldGhvZCBpcyBpbnZva2VkIHdoZW4g
dGhlIHN0b3JlIGlzIGFza2VkIGZvciBhIHJlY29yZCB0aGF0Ci0gICAgaGFzIG5vdCBwcmV2aW91
c2x5IGJlZW4gbG9hZGVkLiBJbiByZXNwb25zZSB0byBgZmluZCgpYCBiZWluZyBjYWxsZWQsIHlv
dQotICAgIHNob3VsZCBxdWVyeSB5b3VyIHBlcnNpc3RlbmNlIGxheWVyIGZvciBhIHJlY29yZCB3
aXRoIHRoZSBnaXZlbiBJRC4gT25jZQotICAgIGZvdW5kLCB5b3UgY2FuIGFzeW5jaHJvbm91c2x5
IGNhbGwgdGhlIHN0b3JlJ3MgYHB1c2goKWAgbWV0aG9kIHRvIHB1c2gKLSAgICB0aGUgcmVjb3Jk
IGludG8gdGhlIHN0b3JlLgotCi0gICAgSGVyZSBpcyBhbiBleGFtcGxlIGBmaW5kYCBpbXBsZW1l
bnRhdGlvbjoKLQotICAgIGBgYGphdmFzY3JpcHQKLSAgICBBcHAuQXBwbGljYXRpb25BZGFwdGVy
ID0gRFMuQWRhcHRlci5leHRlbmQoewotICAgICAgZmluZDogZnVuY3Rpb24oc3RvcmUsIHR5cGUs
IGlkKSB7Ci0gICAgICAgIHZhciB1cmwgPSBbdHlwZSwgaWRdLmpvaW4oJy8nKTsKLQotICAgICAg
ICByZXR1cm4gbmV3IEVtYmVyLlJTVlAuUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3Qp
IHsKLSAgICAgICAgICBqUXVlcnkuZ2V0SlNPTih1cmwpLnRoZW4oZnVuY3Rpb24oZGF0YSkgewot
ICAgICAgICAgICAgRW1iZXIucnVuKG51bGwsIHJlc29sdmUsIGRhdGEpOwotICAgICAgICAgIH0s
IGZ1bmN0aW9uKGpxWEhSKSB7Ci0gICAgICAgICAgICBqcVhIUi50aGVuID0gbnVsbDsgLy8gdGFt
ZSBqUXVlcnkncyBpbGwgbWFubmVyZWQgcHJvbWlzZXMKLSAgICAgICAgICAgIEVtYmVyLnJ1bihu
dWxsLCByZWplY3QsIGpxWEhSKTsKLSAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0gICAgICB9
Ci0gICAgfSk7Ci0gICAgYGBgCi0KLSAgICBAbWV0aG9kIGZpbmQKLSAgICBAcGFyYW0ge0RTLlN0
b3JlfSBzdG9yZQotICAgIEBwYXJhbSB7c3ViY2xhc3Mgb2YgRFMuTW9kZWx9IHR5cGUKLSAgICBA
cGFyYW0ge1N0cmluZ30gaWQKLSAgICBAcmV0dXJuIHtQcm9taXNlfSBwcm9taXNlCi0gICovCi0g
IGZpbmQ6IEVtYmVyLnJlcXVpcmVkKEZ1bmN0aW9uKSwKLQotICAvKioKLSAgICBUaGUgYGZpbmRB
bGwoKWAgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIHlvdSBjYWxsIGBmaW5kYCBvbiB0aGUgc3RvcmUK
LSAgICB3aXRob3V0IGFuIElEIChpLmUuIGBzdG9yZS5maW5kKCdwb3N0JylgKS4KLQotICAgIEV4
YW1wbGUKLQotICAgIGBgYGphdmFzY3JpcHQKLSAgICBBcHAuQXBwbGljYXRpb25BZGFwdGVyID0g
RFMuQWRhcHRlci5leHRlbmQoewotICAgICAgZmluZEFsbDogZnVuY3Rpb24oc3RvcmUsIHR5cGUs
IHNpbmNlVG9rZW4pIHsKLSAgICAgICAgdmFyIHVybCA9IHR5cGU7Ci0gICAgICAgIHZhciBxdWVy
eSA9IHsgc2luY2U6IHNpbmNlVG9rZW4gfTsKLSAgICAgICAgcmV0dXJuIG5ldyBFbWJlci5SU1ZQ
LlByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAgICAgalF1ZXJ5Lmdl
dEpTT04odXJsLCBxdWVyeSkudGhlbihmdW5jdGlvbihkYXRhKSB7Ci0gICAgICAgICAgICBFbWJl
ci5ydW4obnVsbCwgcmVzb2x2ZSwgZGF0YSk7Ci0gICAgICAgICAgfSwgZnVuY3Rpb24oanFYSFIp
IHsKLSAgICAgICAgICAgIGpxWEhSLnRoZW4gPSBudWxsOyAvLyB0YW1lIGpRdWVyeSdzIGlsbCBt
YW5uZXJlZCBwcm9taXNlcwotICAgICAgICAgICAgRW1iZXIucnVuKG51bGwsIHJlamVjdCwganFY
SFIpOwotICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLSAgICAgIH0KLSAgICB9KTsKLSAgICBg
YGAKLQotICAgIEBwcml2YXRlCi0gICAgQG1ldGhvZCBmaW5kQWxsCi0gICAgQHBhcmFtIHtEUy5T
dG9yZX0gc3RvcmUKLSAgICBAcGFyYW0ge3N1YmNsYXNzIG9mIERTLk1vZGVsfSB0eXBlCi0gICAg
QHBhcmFtIHtTdHJpbmd9IHNpbmNlVG9rZW4KLSAgICBAcmV0dXJuIHtQcm9taXNlfSBwcm9taXNl
Ci0gICovCi0gIGZpbmRBbGw6IG51bGwsCi0KLSAgLyoqCi0gICAgVGhpcyBtZXRob2QgaXMgY2Fs
bGVkIHdoZW4geW91IGNhbGwgYGZpbmRgIG9uIHRoZSBzdG9yZSB3aXRoIGEKLSAgICBxdWVyeSBv
YmplY3QgYXMgdGhlIHNlY29uZCBwYXJhbWV0ZXIgKGkuZS4gYHN0b3JlLmZpbmQoJ3BlcnNvbics
IHsKLSAgICBwYWdlOiAxIH0pYCkuCi0KLSAgICBFeGFtcGxlCi0KLSAgICBgYGBqYXZhc2NyaXB0
Ci0gICAgQXBwLkFwcGxpY2F0aW9uQWRhcHRlciA9IERTLkFkYXB0ZXIuZXh0ZW5kKHsKLSAgICAg
IGZpbmRRdWVyeTogZnVuY3Rpb24oc3RvcmUsIHR5cGUsIHF1ZXJ5KSB7Ci0gICAgICAgIHZhciB1
cmwgPSB0eXBlOwotICAgICAgICByZXR1cm4gbmV3IEVtYmVyLlJTVlAuUHJvbWlzZShmdW5jdGlv
bihyZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAgICBqUXVlcnkuZ2V0SlNPTih1cmwsIHF1ZXJ5
KS50aGVuKGZ1bmN0aW9uKGRhdGEpIHsKLSAgICAgICAgICAgIEVtYmVyLnJ1bihudWxsLCByZXNv
bHZlLCBkYXRhKTsKLSAgICAgICAgICB9LCBmdW5jdGlvbihqcVhIUikgewotICAgICAgICAgICAg
anFYSFIudGhlbiA9IG51bGw7IC8vIHRhbWUgalF1ZXJ5J3MgaWxsIG1hbm5lcmVkIHByb21pc2Vz
Ci0gICAgICAgICAgICBFbWJlci5ydW4obnVsbCwgcmVqZWN0LCBqcVhIUik7Ci0gICAgICAgICAg
fSk7Ci0gICAgICAgIH0pOwotICAgICAgfQotICAgIH0pOwotICAgIGBgYAotCi0gICAgQHByaXZh
dGUKLSAgICBAbWV0aG9kIGZpbmRRdWVyeQotICAgIEBwYXJhbSB7RFMuU3RvcmV9IHN0b3JlCi0g
ICAgQHBhcmFtIHtzdWJjbGFzcyBvZiBEUy5Nb2RlbH0gdHlwZQotICAgIEBwYXJhbSB7T2JqZWN0
fSBxdWVyeQotICAgIEBwYXJhbSB7RFMuQWRhcHRlclBvcHVsYXRlZFJlY29yZEFycmF5fSByZWNv
cmRBcnJheQotICAgIEByZXR1cm4ge1Byb21pc2V9IHByb21pc2UKLSAgKi8KLSAgZmluZFF1ZXJ5
OiBudWxsLAotCi0gIC8qKgotICAgIElmIHRoZSBnbG9iYWxseSB1bmlxdWUgSURzIGZvciB5b3Vy
IHJlY29yZHMgc2hvdWxkIGJlIGdlbmVyYXRlZCBvbiB0aGUgY2xpZW50LAotICAgIGltcGxlbWVu
dCB0aGUgYGdlbmVyYXRlSWRGb3JSZWNvcmQoKWAgbWV0aG9kLiBUaGlzIG1ldGhvZCB3aWxsIGJl
IGludm9rZWQKLSAgICBlYWNoIHRpbWUgeW91IGNyZWF0ZSBhIG5ldyByZWNvcmQsIGFuZCB0aGUg
dmFsdWUgcmV0dXJuZWQgZnJvbSBpdCB3aWxsIGJlCi0gICAgYXNzaWduZWQgdG8gdGhlIHJlY29y
ZCdzIGBwcmltYXJ5S2V5YC4KLQotICAgIE1vc3QgdHJhZGl0aW9uYWwgUkVTVC1saWtlIEhUVFAg
QVBJcyB3aWxsIG5vdCB1c2UgdGhpcyBtZXRob2QuIEluc3RlYWQsIHRoZSBJRAotICAgIG9mIHRo
ZSByZWNvcmQgd2lsbCBiZSBzZXQgYnkgdGhlIHNlcnZlciwgYW5kIHlvdXIgYWRhcHRlciB3aWxs
IHVwZGF0ZSB0aGUgc3RvcmUKLSAgICB3aXRoIHRoZSBuZXcgSUQgd2hlbiBpdCBjYWxscyBgZGlk
Q3JlYXRlUmVjb3JkKClgLiBPbmx5IGltcGxlbWVudCB0aGlzIG1ldGhvZCBpZgotICAgIHlvdSBp
bnRlbmQgdG8gZ2VuZXJhdGUgcmVjb3JkIElEcyBvbiB0aGUgY2xpZW50LXNpZGUuCi0KLSAgICBU
aGUgYGdlbmVyYXRlSWRGb3JSZWNvcmQoKWAgbWV0aG9kIHdpbGwgYmUgaW52b2tlZCB3aXRoIHRo
ZSByZXF1ZXN0aW5nIHN0b3JlIGFzCi0gICAgdGhlIGZpcnN0IHBhcmFtZXRlciBhbmQgdGhlIG5l
d2x5IGNyZWF0ZWQgcmVjb3JkIGFzIHRoZSBzZWNvbmQgcGFyYW1ldGVyOgotCi0gICAgYGBgamF2
YXNjcmlwdAotICAgIGdlbmVyYXRlSWRGb3JSZWNvcmQ6IGZ1bmN0aW9uKHN0b3JlLCByZWNvcmQp
IHsKLSAgICAgIHZhciB1dWlkID0gQXBwLmdlbmVyYXRlVVVJRFdpdGhTdGF0aXN0aWNhbGx5TG93
T2Rkc09mQ29sbGlzaW9uKCk7Ci0gICAgICByZXR1cm4gdXVpZDsKLSAgICB9Ci0gICAgYGBgCi0K
LSAgICBAbWV0aG9kIGdlbmVyYXRlSWRGb3JSZWNvcmQKLSAgICBAcGFyYW0ge0RTLlN0b3JlfSBz
dG9yZQotICAgIEBwYXJhbSB7RFMuTW9kZWx9IHJlY29yZAotICAgIEByZXR1cm4ge1N0cmluZ3xO
dW1iZXJ9IGlkCi0gICovCi0gIGdlbmVyYXRlSWRGb3JSZWNvcmQ6IG51bGwsCi0KLSAgLyoqCi0g
ICAgUHJveGllcyB0byB0aGUgc2VyaWFsaXplcidzIGBzZXJpYWxpemVgIG1ldGhvZC4KLQotICAg
IEV4YW1wbGUKLQotICAgIGBgYGphdmFzY3JpcHQKLSAgICBBcHAuQXBwbGljYXRpb25BZGFwdGVy
ID0gRFMuQWRhcHRlci5leHRlbmQoewotICAgICAgY3JlYXRlUmVjb3JkOiBmdW5jdGlvbihzdG9y
ZSwgdHlwZSwgcmVjb3JkKSB7Ci0gICAgICAgIHZhciBkYXRhID0gdGhpcy5zZXJpYWxpemUocmVj
b3JkLCB7IGluY2x1ZGVJZDogdHJ1ZSB9KTsKLSAgICAgICAgdmFyIHVybCA9IHR5cGU7Ci0KLSAg
ICAgICAgLy8gLi4uCi0gICAgICB9Ci0gICAgfSk7Ci0gICAgYGBgCi0KLSAgICBAbWV0aG9kIHNl
cmlhbGl6ZQotICAgIEBwYXJhbSB7RFMuTW9kZWx9IHJlY29yZAotICAgIEBwYXJhbSB7T2JqZWN0
fSAgIG9wdGlvbnMKLSAgICBAcmV0dXJuIHtPYmplY3R9IHNlcmlhbGl6ZWQgcmVjb3JkCi0gICov
Ci0gIHNlcmlhbGl6ZTogZnVuY3Rpb24ocmVjb3JkLCBvcHRpb25zKSB7Ci0gICAgcmV0dXJuIGdl
dChyZWNvcmQsICdzdG9yZScpLnNlcmlhbGl6ZXJGb3IocmVjb3JkLmNvbnN0cnVjdG9yLnR5cGVL
ZXkpLnNlcmlhbGl6ZShyZWNvcmQsIG9wdGlvbnMpOwotICB9LAotCi0gIC8qKgotICAgIEltcGxl
bWVudCB0aGlzIG1ldGhvZCBpbiBhIHN1YmNsYXNzIHRvIGhhbmRsZSB0aGUgY3JlYXRpb24gb2YK
LSAgICBuZXcgcmVjb3Jkcy4KLQotICAgIFNlcmlhbGl6ZXMgdGhlIHJlY29yZCBhbmQgc2VuZCBp
dCB0byB0aGUgc2VydmVyLgotCi0gICAgRXhhbXBsZQotCi0gICAgYGBgamF2YXNjcmlwdAotICAg
IEFwcC5BcHBsaWNhdGlvbkFkYXB0ZXIgPSBEUy5BZGFwdGVyLmV4dGVuZCh7Ci0gICAgICBjcmVh
dGVSZWNvcmQ6IGZ1bmN0aW9uKHN0b3JlLCB0eXBlLCByZWNvcmQpIHsKLSAgICAgICAgdmFyIGRh
dGEgPSB0aGlzLnNlcmlhbGl6ZShyZWNvcmQsIHsgaW5jbHVkZUlkOiB0cnVlIH0pOwotICAgICAg
ICB2YXIgdXJsID0gdHlwZTsKLQotICAgICAgICByZXR1cm4gbmV3IEVtYmVyLlJTVlAuUHJvbWlz
ZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAgICBqUXVlcnkuYWpheCh7Ci0g
ICAgICAgICAgICB0eXBlOiAnUE9TVCcsCi0gICAgICAgICAgICB1cmw6IHVybCwKLSAgICAgICAg
ICAgIGRhdGFUeXBlOiAnanNvbicsCi0gICAgICAgICAgICBkYXRhOiBkYXRhCi0gICAgICAgICAg
fSkudGhlbihmdW5jdGlvbihkYXRhKSB7Ci0gICAgICAgICAgICBFbWJlci5ydW4obnVsbCwgcmVz
b2x2ZSwgZGF0YSk7Ci0gICAgICAgICAgfSwgZnVuY3Rpb24oanFYSFIpIHsKLSAgICAgICAgICAg
IGpxWEhSLnRoZW4gPSBudWxsOyAvLyB0YW1lIGpRdWVyeSdzIGlsbCBtYW5uZXJlZCBwcm9taXNl
cwotICAgICAgICAgICAgRW1iZXIucnVuKG51bGwsIHJlamVjdCwganFYSFIpOwotICAgICAgICAg
IH0pOwotICAgICAgICB9KTsKLSAgICAgIH0KLSAgICB9KTsKLSAgICBgYGAKLQotICAgIEBtZXRo
b2QgY3JlYXRlUmVjb3JkCi0gICAgQHBhcmFtIHtEUy5TdG9yZX0gc3RvcmUKLSAgICBAcGFyYW0g
e3N1YmNsYXNzIG9mIERTLk1vZGVsfSB0eXBlICAgdGhlIERTLk1vZGVsIGNsYXNzIG9mIHRoZSBy
ZWNvcmQKLSAgICBAcGFyYW0ge0RTLk1vZGVsfSByZWNvcmQKLSAgICBAcmV0dXJuIHtQcm9taXNl
fSBwcm9taXNlCi0gICovCi0gIGNyZWF0ZVJlY29yZDogRW1iZXIucmVxdWlyZWQoRnVuY3Rpb24p
LAotCi0gIC8qKgotICAgIEltcGxlbWVudCB0aGlzIG1ldGhvZCBpbiBhIHN1YmNsYXNzIHRvIGhh
bmRsZSB0aGUgdXBkYXRpbmcgb2YKLSAgICBhIHJlY29yZC4KLQotICAgIFNlcmlhbGl6ZXMgdGhl
IHJlY29yZCB1cGRhdGUgYW5kIHNlbmQgaXQgdG8gdGhlIHNlcnZlci4KLQotICAgIEV4YW1wbGUK
LQotICAgIGBgYGphdmFzY3JpcHQKLSAgICBBcHAuQXBwbGljYXRpb25BZGFwdGVyID0gRFMuQWRh
cHRlci5leHRlbmQoewotICAgICAgdXBkYXRlUmVjb3JkOiBmdW5jdGlvbihzdG9yZSwgdHlwZSwg
cmVjb3JkKSB7Ci0gICAgICAgIHZhciBkYXRhID0gdGhpcy5zZXJpYWxpemUocmVjb3JkLCB7IGlu
Y2x1ZGVJZDogdHJ1ZSB9KTsKLSAgICAgICAgdmFyIGlkID0gcmVjb3JkLmdldCgnaWQnKTsKLSAg
ICAgICAgdmFyIHVybCA9IFt0eXBlLCBpZF0uam9pbignLycpOwotCi0gICAgICAgIHJldHVybiBu
ZXcgRW1iZXIuUlNWUC5Qcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgewotICAgICAg
ICAgIGpRdWVyeS5hamF4KHsKLSAgICAgICAgICAgIHR5cGU6ICdQVVQnLAotICAgICAgICAgICAg
dXJsOiB1cmwsCi0gICAgICAgICAgICBkYXRhVHlwZTogJ2pzb24nLAotICAgICAgICAgICAgZGF0
YTogZGF0YQotICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24oZGF0YSkgewotICAgICAgICAgICAg
RW1iZXIucnVuKG51bGwsIHJlc29sdmUsIGRhdGEpOwotICAgICAgICAgIH0sIGZ1bmN0aW9uKGpx
WEhSKSB7Ci0gICAgICAgICAgICBqcVhIUi50aGVuID0gbnVsbDsgLy8gdGFtZSBqUXVlcnkncyBp
bGwgbWFubmVyZWQgcHJvbWlzZXMKLSAgICAgICAgICAgIEVtYmVyLnJ1bihudWxsLCByZWplY3Qs
IGpxWEhSKTsKLSAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0gICAgICB9Ci0gICAgfSk7Ci0g
ICAgYGBgCi0KLSAgICBAbWV0aG9kIHVwZGF0ZVJlY29yZAotICAgIEBwYXJhbSB7RFMuU3RvcmV9
IHN0b3JlCi0gICAgQHBhcmFtIHtzdWJjbGFzcyBvZiBEUy5Nb2RlbH0gdHlwZSAgIHRoZSBEUy5N
b2RlbCBjbGFzcyBvZiB0aGUgcmVjb3JkCi0gICAgQHBhcmFtIHtEUy5Nb2RlbH0gcmVjb3JkCi0g
ICAgQHJldHVybiB7UHJvbWlzZX0gcHJvbWlzZQotICAqLwotICB1cGRhdGVSZWNvcmQ6IEVtYmVy
LnJlcXVpcmVkKEZ1bmN0aW9uKSwKLQotICAvKioKLSAgICBJbXBsZW1lbnQgdGhpcyBtZXRob2Qg
aW4gYSBzdWJjbGFzcyB0byBoYW5kbGUgdGhlIGRlbGV0aW9uIG9mCi0gICAgYSByZWNvcmQuCi0K
LSAgICBTZW5kcyBhIGRlbGV0ZSByZXF1ZXN0IGZvciB0aGUgcmVjb3JkIHRvIHRoZSBzZXJ2ZXIu
Ci0KLSAgICBFeGFtcGxlCi0KLSAgICBgYGBqYXZhc2NyaXB0Ci0gICAgQXBwLkFwcGxpY2F0aW9u
QWRhcHRlciA9IERTLkFkYXB0ZXIuZXh0ZW5kKHsKLSAgICAgIGRlbGV0ZVJlY29yZDogZnVuY3Rp
b24oc3RvcmUsIHR5cGUsIHJlY29yZCkgewotICAgICAgICB2YXIgZGF0YSA9IHRoaXMuc2VyaWFs
aXplKHJlY29yZCwgeyBpbmNsdWRlSWQ6IHRydWUgfSk7Ci0gICAgICAgIHZhciBpZCA9IHJlY29y
ZC5nZXQoJ2lkJyk7Ci0gICAgICAgIHZhciB1cmwgPSBbdHlwZSwgaWRdLmpvaW4oJy8nKTsKLQot
ICAgICAgICByZXR1cm4gbmV3IEVtYmVyLlJTVlAuUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCBy
ZWplY3QpIHsKLSAgICAgICAgICBqUXVlcnkuYWpheCh7Ci0gICAgICAgICAgICB0eXBlOiAnREVM
RVRFJywKLSAgICAgICAgICAgIHVybDogdXJsLAotICAgICAgICAgICAgZGF0YVR5cGU6ICdqc29u
JywKLSAgICAgICAgICAgIGRhdGE6IGRhdGEKLSAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uKGRh
dGEpIHsKLSAgICAgICAgICAgIEVtYmVyLnJ1bihudWxsLCByZXNvbHZlLCBkYXRhKTsKLSAgICAg
ICAgICB9LCBmdW5jdGlvbihqcVhIUikgewotICAgICAgICAgICAganFYSFIudGhlbiA9IG51bGw7
IC8vIHRhbWUgalF1ZXJ5J3MgaWxsIG1hbm5lcmVkIHByb21pc2VzCi0gICAgICAgICAgICBFbWJl
ci5ydW4obnVsbCwgcmVqZWN0LCBqcVhIUik7Ci0gICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwot
ICAgICAgfQotICAgIH0pOwotICAgIGBgYAotCi0gICAgQG1ldGhvZCBkZWxldGVSZWNvcmQKLSAg
ICBAcGFyYW0ge0RTLlN0b3JlfSBzdG9yZQotICAgIEBwYXJhbSB7c3ViY2xhc3Mgb2YgRFMuTW9k
ZWx9IHR5cGUgICB0aGUgRFMuTW9kZWwgY2xhc3Mgb2YgdGhlIHJlY29yZAotICAgIEBwYXJhbSB7
RFMuTW9kZWx9IHJlY29yZAotICAgIEByZXR1cm4ge1Byb21pc2V9IHByb21pc2UKLSAgKi8KLSAg
ZGVsZXRlUmVjb3JkOiBFbWJlci5yZXF1aXJlZChGdW5jdGlvbiksCi0KLSAgLyoqCi0gICAgRmlu
ZCBtdWx0aXBsZSByZWNvcmRzIGF0IG9uY2UuCi0KLSAgICBCeSBkZWZhdWx0LCBpdCBsb29wcyBv
dmVyIHRoZSBwcm92aWRlZCBpZHMgYW5kIGNhbGxzIGBmaW5kYCBvbiBlYWNoLgotICAgIE1heSBi
ZSBvdmVyd3JpdHRlbiB0byBpbXByb3ZlIHBlcmZvcm1hbmNlIGFuZCByZWR1Y2UgdGhlIG51bWJl
ciBvZgotICAgIHNlcnZlciByZXF1ZXN0cy4KLQotICAgIEV4YW1wbGUKLQotICAgIGBgYGphdmFz
Y3JpcHQKLSAgICBBcHAuQXBwbGljYXRpb25BZGFwdGVyID0gRFMuQWRhcHRlci5leHRlbmQoewot
ICAgICAgZmluZE1hbnk6IGZ1bmN0aW9uKHN0b3JlLCB0eXBlLCBpZHMpIHsKLSAgICAgICAgdmFy
IHVybCA9IHR5cGU7Ci0gICAgICAgIHJldHVybiBuZXcgRW1iZXIuUlNWUC5Qcm9taXNlKGZ1bmN0
aW9uKHJlc29sdmUsIHJlamVjdCkgewotICAgICAgICAgIGpRdWVyeS5nZXRKU09OKHVybCwge2lk
czogaWRzfSkudGhlbihmdW5jdGlvbihkYXRhKSB7Ci0gICAgICAgICAgICBFbWJlci5ydW4obnVs
bCwgcmVzb2x2ZSwgZGF0YSk7Ci0gICAgICAgICAgfSwgZnVuY3Rpb24oanFYSFIpIHsKLSAgICAg
ICAgICAgIGpxWEhSLnRoZW4gPSBudWxsOyAvLyB0YW1lIGpRdWVyeSdzIGlsbCBtYW5uZXJlZCBw
cm9taXNlcwotICAgICAgICAgICAgRW1iZXIucnVuKG51bGwsIHJlamVjdCwganFYSFIpOwotICAg
ICAgICAgIH0pOwotICAgICAgICB9KTsKLSAgICAgIH0KLSAgICB9KTsKLSAgICBgYGAKLQotICAg
IEBtZXRob2QgZmluZE1hbnkKLSAgICBAcGFyYW0ge0RTLlN0b3JlfSBzdG9yZQotICAgIEBwYXJh
bSB7c3ViY2xhc3Mgb2YgRFMuTW9kZWx9IHR5cGUgICB0aGUgRFMuTW9kZWwgY2xhc3Mgb2YgdGhl
IHJlY29yZHMKLSAgICBAcGFyYW0ge0FycmF5fSAgICBpZHMKLSAgICBAcmV0dXJuIHtQcm9taXNl
fSBwcm9taXNlCi0gICovCi0gIGZpbmRNYW55OiBmdW5jdGlvbihzdG9yZSwgdHlwZSwgaWRzKSB7
Ci0gICAgdmFyIHByb21pc2VzID0gbWFwLmNhbGwoaWRzLCBmdW5jdGlvbihpZCkgewotICAgICAg
cmV0dXJuIHRoaXMuZmluZChzdG9yZSwgdHlwZSwgaWQpOwotICAgIH0sIHRoaXMpOwotCi0gICAg
cmV0dXJuIEVtYmVyLlJTVlAuYWxsKHByb21pc2VzKTsKLSAgfQotfSk7Ci0KLX0pKCk7Ci0KLQot
Ci0oZnVuY3Rpb24oKSB7Ci0vKioKLSAgQG1vZHVsZSBlbWJlci1kYXRhCi0qLwotCi12YXIgZ2V0
ID0gRW1iZXIuZ2V0LCBmbXQgPSBFbWJlci5TdHJpbmcuZm10LAotICAgIGluZGV4T2YgPSBFbWJl
ci5FbnVtZXJhYmxlVXRpbHMuaW5kZXhPZjsKLQotdmFyIGNvdW50ZXIgPSAwOwotCi0vKioKLSAg
YERTLkZpeHR1cmVBZGFwdGVyYCBpcyBhbiBhZGFwdGVyIHRoYXQgbG9hZHMgcmVjb3JkcyBmcm9t
IG1lbW9yeS4KLSAgSXRzIHByaW1hcmlseSB1c2VkIGZvciBkZXZlbG9wbWVudCBhbmQgdGVzdGlu
Zy4gWW91IGNhbiBhbHNvIHVzZQotICBgRFMuRml4dHVyZUFkYXB0ZXJgIHdoaWxlIHdvcmtpbmcg
b24gdGhlIEFQSSBidXQgYXJlIG5vdCByZWFkeSB0bwotICBpbnRlZ3JhdGUgeWV0LiBJdCBpcyBh
IGZ1bGx5IGZ1bmN0aW9uaW5nIGFkYXB0ZXIuIEFsbCBDUlVEIG1ldGhvZHMKLSAgYXJlIGltcGxl
bWVudGVkLiBZb3UgY2FuIGFsc28gaW1wbGVtZW50IHF1ZXJ5IGxvZ2ljIHRoYXQgYSByZW1vdGUK
LSAgc3lzdGVtIHdvdWxkIGRvLiBJdHMgcG9zc2libGUgdG8gZG8gZGV2ZWxvcCB5b3VyIGVudGly
ZSBhcHBsaWNhdGlvbgotICB3aXRoIGBEUy5GaXh0dXJlQWRhcHRlcmAuCi0KLSAgRm9yIGluZm9y
bWF0aW9uIG9uIGhvdyB0byB1c2UgdGhlIGBGaXh0dXJlQWRhcHRlcmAgaW4geW91cgotICBhcHBs
aWNhdGlvbiBwbGVhc2Ugc2VlIHRoZSBbRml4dHVyZUFkYXB0ZXIKLSAgZ3VpZGVdKC9ndWlkZXMv
bW9kZWxzL3RoZS1maXh0dXJlLWFkYXB0ZXIvKS4KLQotICBAY2xhc3MgRml4dHVyZUFkYXB0ZXIK
LSAgQG5hbWVzcGFjZSBEUwotICBAZXh0ZW5kcyBEUy5BZGFwdGVyCi0qLwotRFMuRml4dHVyZUFk
YXB0ZXIgPSBEUy5BZGFwdGVyLmV4dGVuZCh7Ci0gIC8vIGJ5IGRlZmF1bHQsIGZpeHR1cmVzIGFy
ZSBhbHJlYWR5IGluIG5vcm1hbGl6ZWQgZm9ybQotICBzZXJpYWxpemVyOiBudWxsLAotCi0gIC8q
KgotICAgIElmIGBzaW11bGF0ZVJlbW90ZVJlc3BvbnNlYCBpcyBgdHJ1ZWAgdGhlIGBGaXh0dXJl
QWRhcHRlcmAgd2lsbAotICAgIHdhaXQgYSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGJlZm9yZSBy
ZXNvbHZpbmcgcHJvbWlzZXMgd2l0aCB0aGUKLSAgICBmaXh0dXJlIHZhbHVlcy4gVGhlIHdhaXQg
dGltZSBjYW4gYmUgY29uZmlndXJlZCB2aWEgdGhlIGBsYXRlbmN5YAotICAgIHByb3BlcnR5Lgot
Ci0gICAgQHByb3BlcnR5IHNpbXVsYXRlUmVtb3RlUmVzcG9uc2UKLSAgICBAdHlwZSB7Qm9vbGVh
bn0KLSAgICBAZGVmYXVsdCB0cnVlCi0gICovCi0gIHNpbXVsYXRlUmVtb3RlUmVzcG9uc2U6IHRy
dWUsCi0KLSAgLyoqCi0gICAgQnkgZGVmYXVsdCB0aGUgYEZpeHR1cmVBZGFwdGVyYCB3aWxsIHNp
bXVsYXRlIGEgd2FpdCBvZiB0aGUKLSAgICBgbGF0ZW5jeWAgbWlsbGlzZWNvbmRzIGJlZm9yZSBy
ZXNvbHZpbmcgcHJvbWlzZXMgd2l0aCB0aGUgZml4dHVyZQotICAgIHZhbHVlcy4gVGhpcyBiZWhh
dmlvciBjYW4gYmUgdHVybmVkIG9mZiB2aWEgdGhlCi0gICAgYHNpbXVsYXRlUmVtb3RlUmVzcG9u
c2VgIHByb3BlcnR5LgotCi0gICAgQHByb3BlcnR5IGxhdGVuY3kKLSAgICBAdHlwZSB7TnVtYmVy
fQotICAgIEBkZWZhdWx0IDUwCi0gICovCi0gIGxhdGVuY3k6IDUwLAotCi0gIC8qKgotICAgIElt
cGxlbWVudCB0aGlzIG1ldGhvZCBpbiBvcmRlciB0byBwcm92aWRlIGRhdGEgYXNzb2NpYXRlZCB3
aXRoIGEgdHlwZQotCi0gICAgQG1ldGhvZCBmaXh0dXJlc0ZvclR5cGUKLSAgICBAcGFyYW0ge1N1
YmNsYXNzIG9mIERTLk1vZGVsfSB0eXBlCi0gICAgQHJldHVybiB7QXJyYXl9Ci0gICovCi0gIGZp
eHR1cmVzRm9yVHlwZTogZnVuY3Rpb24odHlwZSkgewotICAgIGlmICh0eXBlLkZJWFRVUkVTKSB7
Ci0gICAgICB2YXIgZml4dHVyZXMgPSBFbWJlci5BKHR5cGUuRklYVFVSRVMpOwotICAgICAgcmV0
dXJuIGZpeHR1cmVzLm1hcChmdW5jdGlvbihmaXh0dXJlKXsKLSAgICAgICAgdmFyIGZpeHR1cmVJ
ZFR5cGUgPSB0eXBlb2YgZml4dHVyZS5pZDsKLSAgICAgICAgaWYoZml4dHVyZUlkVHlwZSAhPT0g
Im51bWJlciIgJiYgZml4dHVyZUlkVHlwZSAhPT0gInN0cmluZyIpewotICAgICAgICAgIHRocm93
IG5ldyBFcnJvcihmbXQoJ3RoZSBpZCBwcm9wZXJ0eSBtdXN0IGJlIGRlZmluZWQgYXMgYSBudW1i
ZXIgb3Igc3RyaW5nIGZvciBmaXh0dXJlICVAJywgW2ZpeHR1cmVdKSk7Ci0gICAgICAgIH0KLSAg
ICAgICAgZml4dHVyZS5pZCA9IGZpeHR1cmUuaWQgKyAnJzsKLSAgICAgICAgcmV0dXJuIGZpeHR1
cmU7Ci0gICAgICB9KTsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0sCi0KLSAgLyoqCi0g
ICAgSW1wbGVtZW50IHRoaXMgbWV0aG9kIGluIG9yZGVyIHRvIHF1ZXJ5IGZpeHR1cmVzIGRhdGEK
LQotICAgIEBtZXRob2QgcXVlcnlGaXh0dXJlcwotICAgIEBwYXJhbSB7QXJyYXl9IGZpeHR1cmUK
LSAgICBAcGFyYW0ge09iamVjdH0gcXVlcnkKLSAgICBAcGFyYW0ge1N1YmNsYXNzIG9mIERTLk1v
ZGVsfSB0eXBlCi0gICAgQHJldHVybiB7UHJvbWlzZXxBcnJheX0KLSAgKi8KLSAgcXVlcnlGaXh0
dXJlczogZnVuY3Rpb24oZml4dHVyZXMsIHF1ZXJ5LCB0eXBlKSB7Ci0gICAgRW1iZXIuYXNzZXJ0
KCdOb3QgaW1wbGVtZW50ZWQ6IFlvdSBtdXN0IG92ZXJyaWRlIHRoZSBEUy5GaXh0dXJlQWRhcHRl
cjo6cXVlcnlGaXh0dXJlcyBtZXRob2QgdG8gc3VwcG9ydCBxdWVyeWluZyB0aGUgZml4dHVyZSBz
dG9yZS4nKTsKLSAgfSwKLQotICAvKioKLSAgICBAbWV0aG9kIHVwZGF0ZUZpeHR1cmVzCi0gICAg
QHBhcmFtIHtTdWJjbGFzcyBvZiBEUy5Nb2RlbH0gdHlwZQotICAgIEBwYXJhbSB7QXJyYXl9IGZp
eHR1cmUKLSAgKi8KLSAgdXBkYXRlRml4dHVyZXM6IGZ1bmN0aW9uKHR5cGUsIGZpeHR1cmUpIHsK
LSAgICBpZighdHlwZS5GSVhUVVJFUykgewotICAgICAgdHlwZS5GSVhUVVJFUyA9IFtdOwotICAg
IH0KLQotICAgIHZhciBmaXh0dXJlcyA9IHR5cGUuRklYVFVSRVM7Ci0KLSAgICB0aGlzLmRlbGV0
ZUxvYWRlZEZpeHR1cmUodHlwZSwgZml4dHVyZSk7Ci0KLSAgICBmaXh0dXJlcy5wdXNoKGZpeHR1
cmUpOwotICB9LAotCi0gIC8qKgotICAgIEltcGxlbWVudCB0aGlzIG1ldGhvZCBpbiBvcmRlciB0
byBwcm92aWRlIGpzb24gZm9yIENSVUQgbWV0aG9kcwotCi0gICAgQG1ldGhvZCBtb2NrSlNPTgot
ICAgIEBwYXJhbSB7U3ViY2xhc3Mgb2YgRFMuTW9kZWx9IHR5cGUKLSAgICBAcGFyYW0ge0RTLk1v
ZGVsfSByZWNvcmQKLSAgKi8KLSAgbW9ja0pTT046IGZ1bmN0aW9uKHN0b3JlLCB0eXBlLCByZWNv
cmQpIHsKLSAgICByZXR1cm4gc3RvcmUuc2VyaWFsaXplckZvcih0eXBlKS5zZXJpYWxpemUocmVj
b3JkLCB7IGluY2x1ZGVJZDogdHJ1ZSB9KTsKLSAgfSwKLQotICAvKioKLSAgICBAbWV0aG9kIGdl
bmVyYXRlSWRGb3JSZWNvcmQKLSAgICBAcGFyYW0ge0RTLlN0b3JlfSBzdG9yZQotICAgIEBwYXJh
bSB7RFMuTW9kZWx9IHJlY29yZAotICAgIEByZXR1cm4ge1N0cmluZ30gaWQKLSAgKi8KLSAgZ2Vu
ZXJhdGVJZEZvclJlY29yZDogZnVuY3Rpb24oc3RvcmUpIHsKLSAgICByZXR1cm4gImZpeHR1cmUt
IiArIGNvdW50ZXIrKzsKLSAgfSwKLQotICAvKioKLSAgICBAbWV0aG9kIGZpbmQKLSAgICBAcGFy
YW0ge0RTLlN0b3JlfSBzdG9yZQotICAgIEBwYXJhbSB7c3ViY2xhc3Mgb2YgRFMuTW9kZWx9IHR5
cGUKLSAgICBAcGFyYW0ge1N0cmluZ30gaWQKLSAgICBAcmV0dXJuIHtQcm9taXNlfSBwcm9taXNl
Ci0gICovCi0gIGZpbmQ6IGZ1bmN0aW9uKHN0b3JlLCB0eXBlLCBpZCkgewotICAgIHZhciBmaXh0
dXJlcyA9IHRoaXMuZml4dHVyZXNGb3JUeXBlKHR5cGUpLAotICAgICAgICBmaXh0dXJlOwotCi0g
ICAgRW1iZXIuYXNzZXJ0KCJVbmFibGUgdG8gZmluZCBmaXh0dXJlcyBmb3IgbW9kZWwgdHlwZSAi
K3R5cGUudG9TdHJpbmcoKSwgZml4dHVyZXMpOwotCi0gICAgaWYgKGZpeHR1cmVzKSB7Ci0gICAg
ICBmaXh0dXJlID0gRW1iZXIuQShmaXh0dXJlcykuZmluZFByb3BlcnR5KCdpZCcsIGlkKTsKLSAg
ICB9Ci0KLSAgICBpZiAoZml4dHVyZSkgewotICAgICAgcmV0dXJuIHRoaXMuc2ltdWxhdGVSZW1v
dGVDYWxsKGZ1bmN0aW9uKCkgewotICAgICAgICByZXR1cm4gZml4dHVyZTsKLSAgICAgIH0sIHRo
aXMpOwotICAgIH0KLSAgfSwKLQotICAvKioKLSAgICBAbWV0aG9kIGZpbmRNYW55Ci0gICAgQHBh
cmFtIHtEUy5TdG9yZX0gc3RvcmUKLSAgICBAcGFyYW0ge3N1YmNsYXNzIG9mIERTLk1vZGVsfSB0
eXBlCi0gICAgQHBhcmFtIHtBcnJheX0gaWRzCi0gICAgQHJldHVybiB7UHJvbWlzZX0gcHJvbWlz
ZQotICAqLwotICBmaW5kTWFueTogZnVuY3Rpb24oc3RvcmUsIHR5cGUsIGlkcykgewotICAgIHZh
ciBmaXh0dXJlcyA9IHRoaXMuZml4dHVyZXNGb3JUeXBlKHR5cGUpOwotCi0gICAgRW1iZXIuYXNz
ZXJ0KCJVbmFibGUgdG8gZmluZCBmaXh0dXJlcyBmb3IgbW9kZWwgdHlwZSAiK3R5cGUudG9TdHJp
bmcoKSwgZml4dHVyZXMpOwotCi0gICAgaWYgKGZpeHR1cmVzKSB7Ci0gICAgICBmaXh0dXJlcyA9
IGZpeHR1cmVzLmZpbHRlcihmdW5jdGlvbihpdGVtKSB7Ci0gICAgICAgIHJldHVybiBpbmRleE9m
KGlkcywgaXRlbS5pZCkgIT09IC0xOwotICAgICAgfSk7Ci0gICAgfQotCi0gICAgaWYgKGZpeHR1
cmVzKSB7Ci0gICAgICByZXR1cm4gdGhpcy5zaW11bGF0ZVJlbW90ZUNhbGwoZnVuY3Rpb24oKSB7
Ci0gICAgICAgIHJldHVybiBmaXh0dXJlczsKLSAgICAgIH0sIHRoaXMpOwotICAgIH0KLSAgfSwK
LQotICAvKioKLSAgICBAcHJpdmF0ZQotICAgIEBtZXRob2QgZmluZEFsbAotICAgIEBwYXJhbSB7
RFMuU3RvcmV9IHN0b3JlCi0gICAgQHBhcmFtIHtzdWJjbGFzcyBvZiBEUy5Nb2RlbH0gdHlwZQot
ICAgIEBwYXJhbSB7U3RyaW5nfSBzaW5jZVRva2VuCi0gICAgQHJldHVybiB7UHJvbWlzZX0gcHJv
bWlzZQotICAqLwotICBmaW5kQWxsOiBmdW5jdGlvbihzdG9yZSwgdHlwZSkgewotICAgIHZhciBm
aXh0dXJlcyA9IHRoaXMuZml4dHVyZXNGb3JUeXBlKHR5cGUpOwotCi0gICAgRW1iZXIuYXNzZXJ0
KCJVbmFibGUgdG8gZmluZCBmaXh0dXJlcyBmb3IgbW9kZWwgdHlwZSAiK3R5cGUudG9TdHJpbmco
KSwgZml4dHVyZXMpOwotCi0gICAgcmV0dXJuIHRoaXMuc2ltdWxhdGVSZW1vdGVDYWxsKGZ1bmN0
aW9uKCkgewotICAgICAgcmV0dXJuIGZpeHR1cmVzOwotICAgIH0sIHRoaXMpOwotICB9LAotCi0g
IC8qKgotICAgIEBwcml2YXRlCi0gICAgQG1ldGhvZCBmaW5kUXVlcnkKLSAgICBAcGFyYW0ge0RT
LlN0b3JlfSBzdG9yZQotICAgIEBwYXJhbSB7c3ViY2xhc3Mgb2YgRFMuTW9kZWx9IHR5cGUKLSAg
ICBAcGFyYW0ge09iamVjdH0gcXVlcnkKLSAgICBAcGFyYW0ge0RTLkFkYXB0ZXJQb3B1bGF0ZWRS
ZWNvcmRBcnJheX0gcmVjb3JkQXJyYXkKLSAgICBAcmV0dXJuIHtQcm9taXNlfSBwcm9taXNlCi0g
ICovCi0gIGZpbmRRdWVyeTogZnVuY3Rpb24oc3RvcmUsIHR5cGUsIHF1ZXJ5LCBhcnJheSkgewot
ICAgIHZhciBmaXh0dXJlcyA9IHRoaXMuZml4dHVyZXNGb3JUeXBlKHR5cGUpOwotCi0gICAgRW1i
ZXIuYXNzZXJ0KCJVbmFibGUgdG8gZmluZCBmaXh0dXJlcyBmb3IgbW9kZWwgdHlwZSAiK3R5cGUu
dG9TdHJpbmcoKSwgZml4dHVyZXMpOwotCi0gICAgZml4dHVyZXMgPSB0aGlzLnF1ZXJ5Rml4dHVy
ZXMoZml4dHVyZXMsIHF1ZXJ5LCB0eXBlKTsKLQotICAgIGlmIChmaXh0dXJlcykgewotICAgICAg
cmV0dXJuIHRoaXMuc2ltdWxhdGVSZW1vdGVDYWxsKGZ1bmN0aW9uKCkgewotICAgICAgICByZXR1
cm4gZml4dHVyZXM7Ci0gICAgICB9LCB0aGlzKTsKLSAgICB9Ci0gIH0sCi0KLSAgLyoqCi0gICAg
QG1ldGhvZCBjcmVhdGVSZWNvcmQKLSAgICBAcGFyYW0ge0RTLlN0b3JlfSBzdG9yZQotICAgIEBw
YXJhbSB7c3ViY2xhc3Mgb2YgRFMuTW9kZWx9IHR5cGUKLSAgICBAcGFyYW0ge0RTLk1vZGVsfSBy
ZWNvcmQKLSAgICBAcmV0dXJuIHtQcm9taXNlfSBwcm9taXNlCi0gICovCi0gIGNyZWF0ZVJlY29y
ZDogZnVuY3Rpb24oc3RvcmUsIHR5cGUsIHJlY29yZCkgewotICAgIHZhciBmaXh0dXJlID0gdGhp
cy5tb2NrSlNPTihzdG9yZSwgdHlwZSwgcmVjb3JkKTsKLQotICAgIHRoaXMudXBkYXRlRml4dHVy
ZXModHlwZSwgZml4dHVyZSk7Ci0KLSAgICByZXR1cm4gdGhpcy5zaW11bGF0ZVJlbW90ZUNhbGwo
ZnVuY3Rpb24oKSB7Ci0gICAgICByZXR1cm4gZml4dHVyZTsKLSAgICB9LCB0aGlzKTsKLSAgfSwK
LQotICAvKioKLSAgICBAbWV0aG9kIHVwZGF0ZVJlY29yZAotICAgIEBwYXJhbSB7RFMuU3RvcmV9
IHN0b3JlCi0gICAgQHBhcmFtIHtzdWJjbGFzcyBvZiBEUy5Nb2RlbH0gdHlwZQotICAgIEBwYXJh
bSB7RFMuTW9kZWx9IHJlY29yZAotICAgIEByZXR1cm4ge1Byb21pc2V9IHByb21pc2UKLSAgKi8K
LSAgdXBkYXRlUmVjb3JkOiBmdW5jdGlvbihzdG9yZSwgdHlwZSwgcmVjb3JkKSB7Ci0gICAgdmFy
IGZpeHR1cmUgPSB0aGlzLm1vY2tKU09OKHN0b3JlLCB0eXBlLCByZWNvcmQpOwotCi0gICAgdGhp
cy51cGRhdGVGaXh0dXJlcyh0eXBlLCBmaXh0dXJlKTsKLQotICAgIHJldHVybiB0aGlzLnNpbXVs
YXRlUmVtb3RlQ2FsbChmdW5jdGlvbigpIHsKLSAgICAgIHJldHVybiBmaXh0dXJlOwotICAgIH0s
IHRoaXMpOwotICB9LAotCi0gIC8qKgotICAgIEBtZXRob2QgZGVsZXRlUmVjb3JkCi0gICAgQHBh
cmFtIHtEUy5TdG9yZX0gc3RvcmUKLSAgICBAcGFyYW0ge3N1YmNsYXNzIG9mIERTLk1vZGVsfSB0
eXBlCi0gICAgQHBhcmFtIHtEUy5Nb2RlbH0gcmVjb3JkCi0gICAgQHJldHVybiB7UHJvbWlzZX0g
cHJvbWlzZQotICAqLwotICBkZWxldGVSZWNvcmQ6IGZ1bmN0aW9uKHN0b3JlLCB0eXBlLCByZWNv
cmQpIHsKLSAgICB2YXIgZml4dHVyZSA9IHRoaXMubW9ja0pTT04oc3RvcmUsIHR5cGUsIHJlY29y
ZCk7Ci0KLSAgICB0aGlzLmRlbGV0ZUxvYWRlZEZpeHR1cmUodHlwZSwgZml4dHVyZSk7Ci0KLSAg
ICByZXR1cm4gdGhpcy5zaW11bGF0ZVJlbW90ZUNhbGwoZnVuY3Rpb24oKSB7Ci0gICAgICAvLyBu
byBwYXlsb2FkIGluIGEgZGVsZXRpb24KLSAgICAgIHJldHVybiBudWxsOwotICAgIH0pOwotICB9
LAotCi0gIC8qCi0gICAgQG1ldGhvZCBkZWxldGVMb2FkZWRGaXh0dXJlCi0gICAgQHByaXZhdGUK
LSAgICBAcGFyYW0gdHlwZQotICAgIEBwYXJhbSByZWNvcmQKLSAgKi8KLSAgZGVsZXRlTG9hZGVk
Rml4dHVyZTogZnVuY3Rpb24odHlwZSwgcmVjb3JkKSB7Ci0gICAgdmFyIGV4aXN0aW5nRml4dHVy
ZSA9IHRoaXMuZmluZEV4aXN0aW5nRml4dHVyZSh0eXBlLCByZWNvcmQpOwotCi0gICAgaWYoZXhp
c3RpbmdGaXh0dXJlKSB7Ci0gICAgICB2YXIgaW5kZXggPSBpbmRleE9mKHR5cGUuRklYVFVSRVMs
IGV4aXN0aW5nRml4dHVyZSk7Ci0gICAgICB0eXBlLkZJWFRVUkVTLnNwbGljZShpbmRleCwgMSk7
Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gIH0sCi0KLSAgLyoKLSAgICBAbWV0aG9kIGZp
bmRFeGlzdGluZ0ZpeHR1cmUKLSAgICBAcHJpdmF0ZQotICAgIEBwYXJhbSB0eXBlCi0gICAgQHBh
cmFtIHJlY29yZAotICAqLwotICBmaW5kRXhpc3RpbmdGaXh0dXJlOiBmdW5jdGlvbih0eXBlLCBy
ZWNvcmQpIHsKLSAgICB2YXIgZml4dHVyZXMgPSB0aGlzLmZpeHR1cmVzRm9yVHlwZSh0eXBlKTsK
LSAgICB2YXIgaWQgPSBnZXQocmVjb3JkLCAnaWQnKTsKLQotICAgIHJldHVybiB0aGlzLmZpbmRG
aXh0dXJlQnlJZChmaXh0dXJlcywgaWQpOwotICB9LAotCi0gIC8qCi0gICAgQG1ldGhvZCBmaW5k
Rml4dHVyZUJ5SWQKLSAgICBAcHJpdmF0ZQotICAgIEBwYXJhbSBmaXh0dXJlcwotICAgIEBwYXJh
bSBpZAotICAqLwotICBmaW5kRml4dHVyZUJ5SWQ6IGZ1bmN0aW9uKGZpeHR1cmVzLCBpZCkgewot
ICAgIHJldHVybiBFbWJlci5BKGZpeHR1cmVzKS5maW5kKGZ1bmN0aW9uKHIpIHsKLSAgICAgIGlm
KCcnK2dldChyLCAnaWQnKSA9PT0gJycraWQpIHsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
ICB9IGVsc2UgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgfSk7Ci0gIH0s
Ci0KLSAgLyoKLSAgICBAbWV0aG9kIHNpbXVsYXRlUmVtb3RlQ2FsbAotICAgIEBwcml2YXRlCi0g
ICAgQHBhcmFtIGNhbGxiYWNrCi0gICAgQHBhcmFtIGNvbnRleHQKLSAgKi8KLSAgc2ltdWxhdGVS
ZW1vdGVDYWxsOiBmdW5jdGlvbihjYWxsYmFjaywgY29udGV4dCkgewotICAgIHZhciBhZGFwdGVy
ID0gdGhpczsKLQotICAgIHJldHVybiBuZXcgRW1iZXIuUlNWUC5Qcm9taXNlKGZ1bmN0aW9uKHJl
c29sdmUpIHsKLSAgICAgIGlmIChnZXQoYWRhcHRlciwgJ3NpbXVsYXRlUmVtb3RlUmVzcG9uc2Un
KSkgewotICAgICAgICAvLyBTY2hlZHVsZSB3aXRoIHNldFRpbWVvdXQKLSAgICAgICAgRW1iZXIu
cnVuLmxhdGVyKGZ1bmN0aW9uKCkgewotICAgICAgICAgIHJlc29sdmUoY2FsbGJhY2suY2FsbChj
b250ZXh0KSk7Ci0gICAgICAgIH0sIGdldChhZGFwdGVyLCAnbGF0ZW5jeScpKTsKLSAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgIC8vIEFzeW5jaHJvbm91cywgYnV0IGF0IHRoZSBvZiB0aGUgcnVubG9v
cCB3aXRoIHplcm8gbGF0ZW5jeQotICAgICAgICBFbWJlci5ydW4uc2NoZWR1bGUoJ2FjdGlvbnMn
LCBudWxsLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICByZXNvbHZlKGNhbGxiYWNrLmNhbGwoY29u
dGV4dCkpOwotICAgICAgICB9KTsKLSAgICAgIH0KLSAgICB9LCAiRFM6IEZpeHR1cmVBZGFwdGVy
I3NpbXVsYXRlUmVtb3RlQ2FsbCIpOwotICB9Ci19KTsKLQotfSkoKTsKLQotCi0KLShmdW5jdGlv
bigpIHsKLS8qKgotICBAbW9kdWxlIGVtYmVyLWRhdGEKLSovCi0KLXZhciBnZXQgPSBFbWJlci5n
ZXQsIHNldCA9IEVtYmVyLnNldDsKLXZhciBmb3JFYWNoID0gRW1iZXIuQXJyYXlQb2x5ZmlsbHMu
Zm9yRWFjaDsKLXZhciBtYXAgPSBFbWJlci5BcnJheVBvbHlmaWxscy5tYXA7Ci0KLWZ1bmN0aW9u
IGNvZXJjZUlkKGlkKSB7Ci0gIHJldHVybiBpZCA9PSBudWxsID8gbnVsbCA6IGlkKycnOwotfQot
Ci0vKioKLSAgTm9ybWFsbHksIGFwcGxpY2F0aW9ucyB3aWxsIHVzZSB0aGUgYFJFU1RTZXJpYWxp
emVyYCBieSBpbXBsZW1lbnRpbmcKLSAgdGhlIGBub3JtYWxpemVgIG1ldGhvZCBhbmQgaW5kaXZp
ZHVhbCBub3JtYWxpemF0aW9ucyB1bmRlcgotICBgbm9ybWFsaXplSGFzaGAuCi0KLSAgVGhpcyBh
bGxvd3MgeW91IHRvIGRvIHdoYXRldmVyIGtpbmQgb2YgbXVuZ2luZyB5b3UgbmVlZCwgYW5kIGlz
Ci0gIGVzcGVjaWFsbHkgdXNlZnVsIGlmIHlvdXIgc2VydmVyIGlzIGluY29uc2lzdGVudCBhbmQg
eW91IG5lZWQgdG8KLSAgZG8gbXVuZ2luZyBkaWZmZXJlbnRseSBmb3IgbWFueSBkaWZmZXJlbnQg
a2luZHMgb2YgcmVzcG9uc2VzLgotCi0gIFNlZSB0aGUgYG5vcm1hbGl6ZWAgZG9jdW1lbnRhdGlv
biBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLQotICAjIyBBY3Jvc3MgdGhlIEJvYXJkIE5vcm1hbGl6
YXRpb24KLQotICBUaGVyZSBhcmUgYWxzbyBhIG51bWJlciBvZiBob29rcyB0aGF0IHlvdSBtaWdo
dCBmaW5kIHVzZWZ1bCB0byBkZWZpbmVkCi0gIGFjcm9zcy10aGUtYm9hcmQgcnVsZXMgZm9yIHlv
dXIgcGF5bG9hZC4gVGhlc2UgcnVsZXMgd2lsbCBiZSB1c2VmdWwKLSAgaWYgeW91ciBzZXJ2ZXIg
aXMgY29uc2lzdGVudCwgb3IgaWYgeW91J3JlIGJ1aWxkaW5nIGFuIGFkYXB0ZXIgZm9yCi0gIGFu
IGluZnJhc3RydWN0dXJlIHNlcnZpY2UsIGxpa2UgUGFyc2UsIGFuZCB3YW50IHRvIGVuY29kZSBz
ZXJ2aWNlCi0gIGNvbnZlbnRpb25zLgotCi0gIEZvciBleGFtcGxlLCBpZiBhbGwgb2YgeW91ciBr
ZXlzIGFyZSB1bmRlcnNjb3JlZCBhbmQgYWxsLWNhcHMsIGJ1dAotICBvdGhlcndpc2UgY29uc2lz
dGVudCB3aXRoIHRoZSBuYW1lcyB5b3UgdXNlIGluIHlvdXIgbW9kZWxzLCB5b3UKLSAgY2FuIGlt
cGxlbWVudCBhY3Jvc3MtdGhlLWJvYXJkIHJ1bGVzIGZvciBob3cgdG8gY29udmVydCBhbiBhdHRy
aWJ1dGUKLSAgbmFtZSBpbiB5b3VyIG1vZGVsIHRvIGEga2V5IGluIHlvdXIgSlNPTi4KLQotICBg
YGBqcwotICBBcHAuQXBwbGljYXRpb25TZXJpYWxpemVyID0gRFMuUkVTVFNlcmlhbGl6ZXIuZXh0
ZW5kKHsKLSAgICBrZXlGb3JBdHRyaWJ1dGU6IGZ1bmN0aW9uKGF0dHIpIHsKLSAgICAgIHJldHVy
biBFbWJlci5TdHJpbmcudW5kZXJzY29yZShhdHRyKS50b1VwcGVyQ2FzZSgpOwotICAgIH0KLSAg
fSk7Ci0gIGBgYAotCi0gIFlvdSBjYW4gYWxzbyBpbXBsZW1lbnQgYGtleUZvclJlbGF0aW9uc2hp
cGAsIHdoaWNoIHRha2VzIHRoZSBuYW1lCi0gIG9mIHRoZSByZWxhdGlvbnNoaXAgYXMgdGhlIGZp
cnN0IHBhcmFtZXRlciwgYW5kIHRoZSBraW5kIG9mCi0gIHJlbGF0aW9uc2hpcCAoYGhhc01hbnlg
IG9yIGBiZWxvbmdzVG9gKSBhcyB0aGUgc2Vjb25kIHBhcmFtZXRlci4KLQotICBAY2xhc3MgUkVT
VFNlcmlhbGl6ZXIKLSAgQG5hbWVzcGFjZSBEUwotICBAZXh0ZW5kcyBEUy5KU09OU2VyaWFsaXpl
cgotKi8KLURTLlJFU1RTZXJpYWxpemVyID0gRFMuSlNPTlNlcmlhbGl6ZXIuZXh0ZW5kKHsKLSAg
LyoqCi0gICAgSWYgeW91IHdhbnQgdG8gZG8gbm9ybWFsaXphdGlvbnMgc3BlY2lmaWMgdG8gc29t
ZSBwYXJ0IG9mIHRoZSBwYXlsb2FkLCB5b3UKLSAgICBjYW4gc3BlY2lmeSB0aG9zZSB1bmRlciBg
bm9ybWFsaXplSGFzaGAuCi0KLSAgICBGb3IgZXhhbXBsZSwgZ2l2ZW4gdGhlIGZvbGxvd2luZyBq
c29uIHdoZXJlIHRoZSB0aGUgYElEc2AgdW5kZXIKLSAgICBgImNvbW1lbnRzImAgYXJlIHByb3Zp
ZGVkIGFzIGBfaWRgIGluc3RlYWQgb2YgYGlkYC4KLQotICAgIGBgYGphdmFzY3JpcHQKLSAgICB7
Ci0gICAgICAicG9zdCI6IHsKLSAgICAgICAgImlkIjogMSwKLSAgICAgICAgInRpdGxlIjogIlJh
aWxzIGlzIG9tYWthc2UiLAotICAgICAgICAiY29tbWVudHMiOiBbIDEsIDIgXQotICAgICAgfSwK
LSAgICAgICJjb21tZW50cyI6IFt7Ci0gICAgICAgICJfaWQiOiAxLAotICAgICAgICAiYm9keSI6
ICJGSVJTVCIKLSAgICAgIH0sIHsKLSAgICAgICAgIl9pZCI6IDIsCi0gICAgICAgICJib2R5Ijog
IlJhaWxzIGlzIHVuYWdpIgotICAgICAgfV0KLSAgICB9Ci0gICAgYGBgCi0KLSAgICBZb3UgdXNl
IGBub3JtYWxpemVIYXNoYCB0byBub3JtYWxpemUganVzdCB0aGUgY29tbWVudHM6Ci0KLSAgICBg
YGBqYXZhc2NyaXB0Ci0gICAgQXBwLlBvc3RTZXJpYWxpemVyID0gRFMuUkVTVFNlcmlhbGl6ZXIu
ZXh0ZW5kKHsKLSAgICAgIG5vcm1hbGl6ZUhhc2g6IHsKLSAgICAgICAgY29tbWVudHM6IGZ1bmN0
aW9uKGhhc2gpIHsKLSAgICAgICAgICBoYXNoLmlkID0gaGFzaC5faWQ7Ci0gICAgICAgICAgZGVs
ZXRlIGhhc2guX2lkOwotICAgICAgICAgIHJldHVybiBoYXNoOwotICAgICAgICB9Ci0gICAgICB9
Ci0gICAgfSk7Ci0gICAgYGBgCi0KLSAgICBUaGUga2V5IHVuZGVyIGBub3JtYWxpemVIYXNoYCBp
cyB1c3VhbGx5IGp1c3QgdGhlIG9yaWdpbmFsIGtleQotICAgIHRoYXQgd2FzIGluIHRoZSBvcmln
aW5hbCBwYXlsb2FkLiBIb3dldmVyLCBrZXkgbmFtZXMgd2lsbCBiZQotICAgIGltcGFjdGVkIGJ5
IGFueSBtb2RpZmljYXRpb25zIGRvbmUgaW4gdGhlIGBub3JtYWxpemVQYXlsb2FkYAotICAgIG1l
dGhvZC4gVGhlIGBEUy5SRVNUU2VyaWFsaXplcmAncyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIG1h
a2VzIG5vCi0gICAgY2hhbmdlcyB0byB0aGUgcGF5bG9hZCBrZXlzLgotCi0gICAgQHByb3BlcnR5
IG5vcm1hbGl6ZUhhc2gKLSAgICBAdHlwZSB7T2JqZWN0fQotICAgIEBkZWZhdWx0IHVuZGVmaW5l
ZAotICAqLwotCi0gIC8qKgotICAgIE5vcm1hbGl6ZXMgYSBwYXJ0IG9mIHRoZSBKU09OIHBheWxv
YWQgcmV0dXJuZWQgYnkKLSAgICB0aGUgc2VydmVyLiBZb3Ugc2hvdWxkIG92ZXJyaWRlIHRoaXMg
bWV0aG9kLCBtdW5nZSB0aGUgaGFzaAotICAgIGFuZCBjYWxsIHN1cGVyIGlmIHlvdSBoYXZlIGdl
bmVyaWMgbm9ybWFsaXphdGlvbiB0byBkby4KLQotICAgIEl0IHRha2VzIHRoZSB0eXBlIG9mIHRo
ZSByZWNvcmQgdGhhdCBpcyBiZWluZyBub3JtYWxpemVkCi0gICAgKGFzIGEgRFMuTW9kZWwgY2xh
c3MpLCB0aGUgcHJvcGVydHkgd2hlcmUgdGhlIGhhc2ggd2FzCi0gICAgb3JpZ2luYWxseSBmb3Vu
ZCwgYW5kIHRoZSBoYXNoIHRvIG5vcm1hbGl6ZS4KLQotICAgIEZvciBleGFtcGxlLCBpZiB5b3Ug
aGF2ZSBhIHBheWxvYWQgdGhhdCBsb29rcyBsaWtlIHRoaXM6Ci0KLSAgICBgYGBqcwotICAgIHsK
LSAgICAgICJwb3N0IjogewotICAgICAgICAiaWQiOiAxLAotICAgICAgICAidGl0bGUiOiAiUmFp
bHMgaXMgb21ha2FzZSIsCi0gICAgICAgICJjb21tZW50cyI6IFsgMSwgMiBdCi0gICAgICB9LAot
ICAgICAgImNvbW1lbnRzIjogW3sKLSAgICAgICAgImlkIjogMSwKLSAgICAgICAgImJvZHkiOiAi
RklSU1QiCi0gICAgICB9LCB7Ci0gICAgICAgICJpZCI6IDIsCi0gICAgICAgICJib2R5IjogIlJh
aWxzIGlzIHVuYWdpIgotICAgICAgfV0KLSAgICB9Ci0gICAgYGBgCi0KLSAgICBUaGUgYG5vcm1h
bGl6ZWAgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIHRocmVlIHRpbWVzOgotCi0gICAgKiBXaXRoIGBB
cHAuUG9zdGAsIGAicG9zdHMiYCBhbmQgYHsgaWQ6IDEsIHRpdGxlOiAiUmFpbHMgaXMgb21ha2Fz
ZSIsIC4uLiB9YAotICAgICogV2l0aCBgQXBwLkNvbW1lbnRgLCBgImNvbW1lbnRzImAgYW5kIGB7
IGlkOiAxLCBib2R5OiAiRklSU1QiIH1gCi0gICAgKiBXaXRoIGBBcHAuQ29tbWVudGAsIGAiY29t
bWVudHMiYCBhbmQgYHsgaWQ6IDIsIGJvZHk6ICJSYWlscyBpcyB1bmFnaSIgfWAKLQotICAgIFlv
dSBjYW4gdXNlIHRoaXMgbWV0aG9kLCBmb3IgZXhhbXBsZSwgdG8gbm9ybWFsaXplIHVuZGVyc2Nv
cmVkIGtleXMgdG8gY2FtZWxpemVkCi0gICAgb3Igb3RoZXIgZ2VuZXJhbC1wdXJwb3NlIG5vcm1h
bGl6YXRpb25zLgotCi0gICAgSWYgeW91IHdhbnQgdG8gZG8gbm9ybWFsaXphdGlvbnMgc3BlY2lm
aWMgdG8gc29tZSBwYXJ0IG9mIHRoZSBwYXlsb2FkLCB5b3UKLSAgICBjYW4gc3BlY2lmeSB0aG9z
ZSB1bmRlciBgbm9ybWFsaXplSGFzaGAuCi0KLSAgICBGb3IgZXhhbXBsZSwgaWYgdGhlIGBJRHNg
IHVuZGVyIGAiY29tbWVudHMiYCBhcmUgcHJvdmlkZWQgYXMgYF9pZGAgaW5zdGVhZCBvZgotICAg
IGBpZGAsIHlvdSBjYW4gc3BlY2lmeSBob3cgdG8gbm9ybWFsaXplIGp1c3QgdGhlIGNvbW1lbnRz
OgotCi0gICAgYGBganMKLSAgICBBcHAuUG9zdFNlcmlhbGl6ZXIgPSBEUy5SRVNUU2VyaWFsaXpl
ci5leHRlbmQoewotICAgICAgbm9ybWFsaXplSGFzaDogewotICAgICAgICBjb21tZW50czogZnVu
Y3Rpb24oaGFzaCkgewotICAgICAgICAgIGhhc2guaWQgPSBoYXNoLl9pZDsKLSAgICAgICAgICBk
ZWxldGUgaGFzaC5faWQ7Ci0gICAgICAgICAgcmV0dXJuIGhhc2g7Ci0gICAgICAgIH0KLSAgICAg
IH0KLSAgICB9KTsKLSAgICBgYGAKLQotICAgIFRoZSBrZXkgdW5kZXIgYG5vcm1hbGl6ZUhhc2hg
IGlzIGp1c3QgdGhlIG9yaWdpbmFsIGtleSB0aGF0IHdhcyBpbiB0aGUgb3JpZ2luYWwKLSAgICBw
YXlsb2FkLgotCi0gICAgQG1ldGhvZCBub3JtYWxpemUKLSAgICBAcGFyYW0ge3N1YmNsYXNzIG9m
IERTLk1vZGVsfSB0eXBlCi0gICAgQHBhcmFtIHtPYmplY3R9IGhhc2gKLSAgICBAcGFyYW0ge1N0
cmluZ30gcHJvcAotICAgIEByZXR1cm5zIHtPYmplY3R9Ci0gICovCi0gIG5vcm1hbGl6ZTogZnVu
Y3Rpb24odHlwZSwgaGFzaCwgcHJvcCkgewotICAgIHRoaXMubm9ybWFsaXplSWQoaGFzaCk7Ci0g
ICAgdGhpcy5ub3JtYWxpemVBdHRyaWJ1dGVzKHR5cGUsIGhhc2gpOwotICAgIHRoaXMubm9ybWFs
aXplUmVsYXRpb25zaGlwcyh0eXBlLCBoYXNoKTsKLQotICAgIHRoaXMubm9ybWFsaXplVXNpbmdE
ZWNsYXJlZE1hcHBpbmcodHlwZSwgaGFzaCk7Ci0KLSAgICBpZiAodGhpcy5ub3JtYWxpemVIYXNo
ICYmIHRoaXMubm9ybWFsaXplSGFzaFtwcm9wXSkgewotICAgICAgdGhpcy5ub3JtYWxpemVIYXNo
W3Byb3BdKGhhc2gpOwotICAgIH0KLQotICAgIHJldHVybiB0aGlzLl9zdXBlcih0eXBlLCBoYXNo
LCBwcm9wKTsKLSAgfSwKLQotICAvKioKLSAgICBZb3UgY2FuIHVzZSB0aGlzIG1ldGhvZCB0byBu
b3JtYWxpemUgYWxsIHBheWxvYWRzLCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhleQotICAgIHJl
cHJlc2VudCBzaW5nbGUgcmVjb3JkcyBvciBhbiBhcnJheS4KLQotICAgIEZvciBleGFtcGxlLCB5
b3UgbWlnaHQgd2FudCB0byByZW1vdmUgc29tZSBleHRyYW5lb3VzIGRhdGEgZnJvbSB0aGUgcGF5
bG9hZDoKLQotICAgIGBgYGpzCi0gICAgQXBwLkFwcGxpY2F0aW9uU2VyaWFsaXplciA9IERTLlJF
U1RTZXJpYWxpemVyLmV4dGVuZCh7Ci0gICAgICBub3JtYWxpemVQYXlsb2FkOiBmdW5jdGlvbih0
eXBlLCBwYXlsb2FkKSB7Ci0gICAgICAgIGRlbGV0ZSBwYXlsb2FkLnZlcnNpb247Ci0gICAgICAg
IGRlbGV0ZSBwYXlsb2FkLnN0YXR1czsKLSAgICAgICAgcmV0dXJuIHBheWxvYWQ7Ci0gICAgICB9
Ci0gICAgfSk7Ci0gICAgYGBgCi0KLSAgICBAbWV0aG9kIG5vcm1hbGl6ZVBheWxvYWQKLSAgICBA
cGFyYW0ge3N1YmNsYXNzIG9mIERTLk1vZGVsfSB0eXBlCi0gICAgQHBhcmFtIHtPYmplY3R9IGhh
c2gKLSAgICBAcmV0dXJucyB7T2JqZWN0fSB0aGUgbm9ybWFsaXplZCBwYXlsb2FkCi0gICovCi0g
IG5vcm1hbGl6ZVBheWxvYWQ6IGZ1bmN0aW9uKHR5cGUsIHBheWxvYWQpIHsKLSAgICByZXR1cm4g
cGF5bG9hZDsKLSAgfSwKLQotICAvKioKLSAgICBAbWV0aG9kIG5vcm1hbGl6ZUlkCi0gICAgQHBy
aXZhdGUKLSAgKi8KLSAgbm9ybWFsaXplSWQ6IGZ1bmN0aW9uKGhhc2gpIHsKLSAgICB2YXIgcHJp
bWFyeUtleSA9IGdldCh0aGlzLCAncHJpbWFyeUtleScpOwotCi0gICAgaWYgKHByaW1hcnlLZXkg
PT09ICdpZCcpIHsgcmV0dXJuOyB9Ci0KLSAgICBoYXNoLmlkID0gaGFzaFtwcmltYXJ5S2V5XTsK
LSAgICBkZWxldGUgaGFzaFtwcmltYXJ5S2V5XTsKLSAgfSwKLQotICAvKioKLSAgICBAbWV0aG9k
IG5vcm1hbGl6ZVVzaW5nRGVjbGFyZWRNYXBwaW5nCi0gICAgQHByaXZhdGUKLSAgKi8KLSAgbm9y
bWFsaXplVXNpbmdEZWNsYXJlZE1hcHBpbmc6IGZ1bmN0aW9uKHR5cGUsIGhhc2gpIHsKLSAgICB2
YXIgYXR0cnMgPSBnZXQodGhpcywgJ2F0dHJzJyksIHBheWxvYWRLZXksIGtleTsKLQotICAgIGlm
IChhdHRycykgewotICAgICAgZm9yIChrZXkgaW4gYXR0cnMpIHsKLSAgICAgICAgcGF5bG9hZEtl
eSA9IGF0dHJzW2tleV07Ci0gICAgICAgIGlmIChwYXlsb2FkS2V5ICYmIHBheWxvYWRLZXkua2V5
KSB7Ci0gICAgICAgICAgcGF5bG9hZEtleSA9IHBheWxvYWRLZXkua2V5OwotICAgICAgICB9Ci0g
ICAgICAgIGlmICh0eXBlb2YgcGF5bG9hZEtleSA9PT0gJ3N0cmluZycpIHsKLSAgICAgICAgICBo
YXNoW2tleV0gPSBoYXNoW3BheWxvYWRLZXldOwotICAgICAgICAgIGRlbGV0ZSBoYXNoW3BheWxv
YWRLZXldOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICB9LAotCi0gIC8qKgotICAgIEBt
ZXRob2Qgbm9ybWFsaXplQXR0cmlidXRlcwotICAgIEBwcml2YXRlCi0gICovCi0gIG5vcm1hbGl6
ZUF0dHJpYnV0ZXM6IGZ1bmN0aW9uKHR5cGUsIGhhc2gpIHsKLSAgICB2YXIgcGF5bG9hZEtleSwg
a2V5OwotCi0gICAgaWYgKHRoaXMua2V5Rm9yQXR0cmlidXRlKSB7Ci0gICAgICB0eXBlLmVhY2hB
dHRyaWJ1dGUoZnVuY3Rpb24oa2V5KSB7Ci0gICAgICAgIHBheWxvYWRLZXkgPSB0aGlzLmtleUZv
ckF0dHJpYnV0ZShrZXkpOwotICAgICAgICBpZiAoa2V5ID09PSBwYXlsb2FkS2V5KSB7IHJldHVy
bjsgfQotCi0gICAgICAgIGhhc2hba2V5XSA9IGhhc2hbcGF5bG9hZEtleV07Ci0gICAgICAgIGRl
bGV0ZSBoYXNoW3BheWxvYWRLZXldOwotICAgICAgfSwgdGhpcyk7Ci0gICAgfQotICB9LAotCi0g
IC8qKgotICAgIEBtZXRob2Qgbm9ybWFsaXplUmVsYXRpb25zaGlwcwotICAgIEBwcml2YXRlCi0g
ICovCi0gIG5vcm1hbGl6ZVJlbGF0aW9uc2hpcHM6IGZ1bmN0aW9uKHR5cGUsIGhhc2gpIHsKLSAg
ICB2YXIgcGF5bG9hZEtleSwga2V5OwotCi0gICAgaWYgKHRoaXMua2V5Rm9yUmVsYXRpb25zaGlw
KSB7Ci0gICAgICB0eXBlLmVhY2hSZWxhdGlvbnNoaXAoZnVuY3Rpb24oa2V5LCByZWxhdGlvbnNo
aXApIHsKLSAgICAgICAgcGF5bG9hZEtleSA9IHRoaXMua2V5Rm9yUmVsYXRpb25zaGlwKGtleSwg
cmVsYXRpb25zaGlwLmtpbmQpOwotICAgICAgICBpZiAoa2V5ID09PSBwYXlsb2FkS2V5KSB7IHJl
dHVybjsgfQotCi0gICAgICAgIGhhc2hba2V5XSA9IGhhc2hbcGF5bG9hZEtleV07Ci0gICAgICAg
IGRlbGV0ZSBoYXNoW3BheWxvYWRLZXldOwotICAgICAgfSwgdGhpcyk7Ci0gICAgfQotICB9LAot
Ci0gIC8qKgotICAgIENhbGxlZCB3aGVuIHRoZSBzZXJ2ZXIgaGFzIHJldHVybmVkIGEgcGF5bG9h
ZCByZXByZXNlbnRpbmcKLSAgICBhIHNpbmdsZSByZWNvcmQsIHN1Y2ggYXMgaW4gcmVzcG9uc2Ug
dG8gYSBgZmluZGAgb3IgYHNhdmVgLgotCi0gICAgSXQgaXMgeW91ciBvcHBvcnR1bml0eSB0byBj
bGVhbiB1cCB0aGUgc2VydmVyJ3MgcmVzcG9uc2UgaW50byB0aGUgbm9ybWFsaXplZAotICAgIGZv
cm0gZXhwZWN0ZWQgYnkgRW1iZXIgRGF0YS4KLQotICAgIElmIHlvdSB3YW50LCB5b3UgY2FuIGp1
c3QgcmVzdHJ1Y3R1cmUgdGhlIHRvcC1sZXZlbCBvZiB5b3VyIHBheWxvYWQsIGFuZAotICAgIGRv
IG1vcmUgZmluZS1ncmFpbmVkIG5vcm1hbGl6YXRpb24gaW4gdGhlIGBub3JtYWxpemVgIG1ldGhv
ZC4KLQotICAgIEZvciBleGFtcGxlLCBpZiB5b3UgaGF2ZSBhIHBheWxvYWQgbGlrZSB0aGlzIGlu
IHJlc3BvbnNlIHRvIGEgcmVxdWVzdCBmb3IKLSAgICBwb3N0IDE6Ci0KLSAgICBgYGBqcwotICAg
IHsKLSAgICAgICJpZCI6IDEsCi0gICAgICAidGl0bGUiOiAiUmFpbHMgaXMgb21ha2FzZSIsCi0K
LSAgICAgICJfZW1iZWRkZWQiOiB7Ci0gICAgICAgICJjb21tZW50IjogW3sKLSAgICAgICAgICAi
X2lkIjogMSwKLSAgICAgICAgICAiY29tbWVudF90aXRsZSI6ICJGSVJTVCIKLSAgICAgICAgfSwg
ewotICAgICAgICAgICJfaWQiOiAyLAotICAgICAgICAgICJjb21tZW50X3RpdGxlIjogIlJhaWxz
IGlzIHVuYWdpIgotICAgICAgICB9XQotICAgICAgfQotICAgIH0KLSAgICBgYGAKLQotICAgIFlv
dSBjb3VsZCBpbXBsZW1lbnQgYSBzZXJpYWxpemVyIHRoYXQgbG9va3MgbGlrZSB0aGlzIHRvIGdl
dCB5b3VyIHBheWxvYWQKLSAgICBpbnRvIHNoYXBlOgotCi0gICAgYGBganMKLSAgICBBcHAuUG9z
dFNlcmlhbGl6ZXIgPSBEUy5SRVNUU2VyaWFsaXplci5leHRlbmQoewotICAgICAgLy8gRmlyc3Qs
IHJlc3RydWN0dXJlIHRoZSB0b3AtbGV2ZWwgc28gaXQncyBvcmdhbml6ZWQgYnkgdHlwZQotICAg
ICAgZXh0cmFjdFNpbmdsZTogZnVuY3Rpb24oc3RvcmUsIHR5cGUsIHBheWxvYWQsIGlkLCByZXF1
ZXN0VHlwZSkgewotICAgICAgICB2YXIgY29tbWVudHMgPSBwYXlsb2FkLl9lbWJlZGRlZC5jb21t
ZW50OwotICAgICAgICBkZWxldGUgcGF5bG9hZC5fZW1iZWRkZWQ7Ci0KLSAgICAgICAgcGF5bG9h
ZCA9IHsgY29tbWVudHM6IGNvbW1lbnRzLCBwb3N0OiBwYXlsb2FkIH07Ci0gICAgICAgIHJldHVy
biB0aGlzLl9zdXBlcihzdG9yZSwgdHlwZSwgcGF5bG9hZCwgaWQsIHJlcXVlc3RUeXBlKTsKLSAg
ICAgIH0sCi0KLSAgICAgIG5vcm1hbGl6ZUhhc2g6IHsKLSAgICAgICAgLy8gTmV4dCwgbm9ybWFs
aXplIGluZGl2aWR1YWwgY29tbWVudHMsIHdoaWNoIChhZnRlciBgZXh0cmFjdGApCi0gICAgICAg
IC8vIGFyZSBub3cgbG9jYXRlZCB1bmRlciBgY29tbWVudHNgCi0gICAgICAgIGNvbW1lbnRzOiBm
dW5jdGlvbihoYXNoKSB7Ci0gICAgICAgICAgaGFzaC5pZCA9IGhhc2guX2lkOwotICAgICAgICAg
IGhhc2gudGl0bGUgPSBoYXNoLmNvbW1lbnRfdGl0bGU7Ci0gICAgICAgICAgZGVsZXRlIGhhc2gu
X2lkOwotICAgICAgICAgIGRlbGV0ZSBoYXNoLmNvbW1lbnRfdGl0bGU7Ci0gICAgICAgICAgcmV0
dXJuIGhhc2g7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9KQotICAgIGBgYAotCi0gICAgV2hl
biB5b3UgY2FsbCBzdXBlciBmcm9tIHlvdXIgb3duIGltcGxlbWVudGF0aW9uIG9mIGBleHRyYWN0
U2luZ2xlYCwgdGhlCi0gICAgYnVpbHQtaW4gaW1wbGVtZW50YXRpb24gd2lsbCBmaW5kIHRoZSBw
cmltYXJ5IHJlY29yZCBpbiB5b3VyIG5vcm1hbGl6ZWQKLSAgICBwYXlsb2FkIGFuZCBwdXNoIHRo
ZSByZW1haW5pbmcgcmVjb3JkcyBpbnRvIHRoZSBzdG9yZS4KLQotICAgIFRoZSBwcmltYXJ5IHJl
Y29yZCBpcyB0aGUgc2luZ2xlIGhhc2ggZm91bmQgdW5kZXIgYHBvc3RgIG9yIHRoZSBmaXJzdAot
ICAgIGVsZW1lbnQgb2YgdGhlIGBwb3N0c2AgYXJyYXkuCi0KLSAgICBUaGUgcHJpbWFyeSByZWNv
cmQgaGFzIHNwZWNpYWwgbWVhbmluZyB3aGVuIHRoZSByZWNvcmQgaXMgYmVpbmcgY3JlYXRlZAot
ICAgIGZvciB0aGUgZmlyc3QgdGltZSBvciB1cGRhdGVkIChgY3JlYXRlUmVjb3JkYCBvciBgdXBk
YXRlUmVjb3JkYCkuIEluCi0gICAgcGFydGljdWxhciwgaXQgd2lsbCB1cGRhdGUgdGhlIHByb3Bl
cnRpZXMgb2YgdGhlIHJlY29yZCB0aGF0IHdhcyBzYXZlZC4KLQotICAgIEBtZXRob2QgZXh0cmFj
dFNpbmdsZQotICAgIEBwYXJhbSB7RFMuU3RvcmV9IHN0b3JlCi0gICAgQHBhcmFtIHtzdWJjbGFz
cyBvZiBEUy5Nb2RlbH0gdHlwZQotICAgIEBwYXJhbSB7T2JqZWN0fSBwYXlsb2FkCi0gICAgQHBh
cmFtIHtTdHJpbmd9IGlkCi0gICAgQHBhcmFtIHsnZmluZCd8J2NyZWF0ZVJlY29yZCd8J3VwZGF0
ZVJlY29yZCd8J2RlbGV0ZVJlY29yZCd9IHJlcXVlc3RUeXBlCi0gICAgQHJldHVybnMge09iamVj
dH0gdGhlIHByaW1hcnkgcmVzcG9uc2UgdG8gdGhlIG9yaWdpbmFsIHJlcXVlc3QKLSAgKi8KLSAg
ZXh0cmFjdFNpbmdsZTogZnVuY3Rpb24oc3RvcmUsIHByaW1hcnlUeXBlLCBwYXlsb2FkLCByZWNv
cmRJZCwgcmVxdWVzdFR5cGUpIHsKLSAgICBwYXlsb2FkID0gdGhpcy5ub3JtYWxpemVQYXlsb2Fk
KHByaW1hcnlUeXBlLCBwYXlsb2FkKTsKLQotICAgIHZhciBwcmltYXJ5VHlwZU5hbWUgPSBwcmlt
YXJ5VHlwZS50eXBlS2V5LAotICAgICAgICBwcmltYXJ5UmVjb3JkOwotCi0gICAgZm9yICh2YXIg
cHJvcCBpbiBwYXlsb2FkKSB7Ci0gICAgICB2YXIgdHlwZU5hbWUgID0gdGhpcy50eXBlRm9yUm9v
dChwcm9wKSwKLSAgICAgICAgICB0eXBlID0gc3RvcmUubW9kZWxGb3IodHlwZU5hbWUpLAotICAg
ICAgICAgIGlzUHJpbWFyeSA9IHR5cGUudHlwZUtleSA9PT0gcHJpbWFyeVR5cGVOYW1lOwotCi0g
ICAgICAvLyBsZWdhY3kgc3VwcG9ydCBmb3Igc2luZ3VsYXIgcmVzb3VyY2VzCi0gICAgICBpZiAo
aXNQcmltYXJ5ICYmIEVtYmVyLnR5cGVPZihwYXlsb2FkW3Byb3BdKSAhPT0gImFycmF5IiApIHsK
LSAgICAgICAgcHJpbWFyeVJlY29yZCA9IHRoaXMubm9ybWFsaXplKHByaW1hcnlUeXBlLCBwYXls
b2FkW3Byb3BdLCBwcm9wKTsKLSAgICAgICAgY29udGludWU7Ci0gICAgICB9Ci0KLSAgICAgIC8q
anNoaW50IGxvb3BmdW5jOnRydWUqLwotICAgICAgZm9yRWFjaC5jYWxsKHBheWxvYWRbcHJvcF0s
IGZ1bmN0aW9uKGhhc2gpIHsKLSAgICAgICAgdmFyIHR5cGVOYW1lID0gdGhpcy50eXBlRm9yUm9v
dChwcm9wKSwKLSAgICAgICAgICAgIHR5cGUgPSBzdG9yZS5tb2RlbEZvcih0eXBlTmFtZSksCi0g
ICAgICAgICAgICB0eXBlU2VyaWFsaXplciA9IHN0b3JlLnNlcmlhbGl6ZXJGb3IodHlwZSk7Ci0K
LSAgICAgICAgaGFzaCA9IHR5cGVTZXJpYWxpemVyLm5vcm1hbGl6ZSh0eXBlLCBoYXNoLCBwcm9w
KTsKLQotICAgICAgICB2YXIgaXNGaXJzdENyZWF0ZWRSZWNvcmQgPSBpc1ByaW1hcnkgJiYgIXJl
Y29yZElkICYmICFwcmltYXJ5UmVjb3JkLAotICAgICAgICAgICAgaXNVcGRhdGVkUmVjb3JkID0g
aXNQcmltYXJ5ICYmIGNvZXJjZUlkKGhhc2guaWQpID09PSByZWNvcmRJZDsKLQotICAgICAgICAv
LyBmaW5kIHRoZSBwcmltYXJ5IHJlY29yZC4KLSAgICAgICAgLy8KLSAgICAgICAgLy8gSXQncyBl
aXRoZXI6Ci0gICAgICAgIC8vICogdGhlIHJlY29yZCB3aXRoIHRoZSBzYW1lIElEIGFzIHRoZSBv
cmlnaW5hbCByZXF1ZXN0Ci0gICAgICAgIC8vICogaW4gdGhlIGNhc2Ugb2YgYSBuZXdseSBjcmVh
dGVkIHJlY29yZCB0aGF0IGRpZG4ndCBoYXZlIGFuIElELCB0aGUgZmlyc3QKLSAgICAgICAgLy8g
ICByZWNvcmQgaW4gdGhlIEFycmF5Ci0gICAgICAgIGlmIChpc0ZpcnN0Q3JlYXRlZFJlY29yZCB8
fCBpc1VwZGF0ZWRSZWNvcmQpIHsKLSAgICAgICAgICBwcmltYXJ5UmVjb3JkID0gaGFzaDsKLSAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICBzdG9yZS5wdXNoKHR5cGVOYW1lLCBoYXNoKTsKLSAg
ICAgICAgfQotICAgICAgfSwgdGhpcyk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHByaW1hcnlSZWNv
cmQ7Ci0gIH0sCi0KLSAgLyoqCi0gICAgQ2FsbGVkIHdoZW4gdGhlIHNlcnZlciBoYXMgcmV0dXJu
ZWQgYSBwYXlsb2FkIHJlcHJlc2VudGluZwotICAgIG11bHRpcGxlIHJlY29yZHMsIHN1Y2ggYXMg
aW4gcmVzcG9uc2UgdG8gYSBgZmluZEFsbGAgb3IgYGZpbmRRdWVyeWAuCi0KLSAgICBJdCBpcyB5
b3VyIG9wcG9ydHVuaXR5IHRvIGNsZWFuIHVwIHRoZSBzZXJ2ZXIncyByZXNwb25zZSBpbnRvIHRo
ZSBub3JtYWxpemVkCi0gICAgZm9ybSBleHBlY3RlZCBieSBFbWJlciBEYXRhLgotCi0gICAgSWYg
eW91IHdhbnQsIHlvdSBjYW4ganVzdCByZXN0cnVjdHVyZSB0aGUgdG9wLWxldmVsIG9mIHlvdXIg
cGF5bG9hZCwgYW5kCi0gICAgZG8gbW9yZSBmaW5lLWdyYWluZWQgbm9ybWFsaXphdGlvbiBpbiB0
aGUgYG5vcm1hbGl6ZWAgbWV0aG9kLgotCi0gICAgRm9yIGV4YW1wbGUsIGlmIHlvdSBoYXZlIGEg
cGF5bG9hZCBsaWtlIHRoaXMgaW4gcmVzcG9uc2UgdG8gYSByZXF1ZXN0IGZvcgotICAgIGFsbCBw
b3N0czoKLQotICAgIGBgYGpzCi0gICAgewotICAgICAgIl9lbWJlZGRlZCI6IHsKLSAgICAgICAg
InBvc3QiOiBbewotICAgICAgICAgICJpZCI6IDEsCi0gICAgICAgICAgInRpdGxlIjogIlJhaWxz
IGlzIG9tYWthc2UiCi0gICAgICAgIH0sIHsKLSAgICAgICAgICAiaWQiOiAyLAotICAgICAgICAg
ICJ0aXRsZSI6ICJUaGUgUGFybGV5IExldHRlciIKLSAgICAgICAgfV0sCi0gICAgICAgICJjb21t
ZW50IjogW3sKLSAgICAgICAgICAiX2lkIjogMSwKLSAgICAgICAgICAiY29tbWVudF90aXRsZSI6
ICJSYWlscyBpcyB1bmFnaSIKLSAgICAgICAgICAicG9zdF9pZCI6IDEKLSAgICAgICAgfSwgewot
ICAgICAgICAgICJfaWQiOiAyLAotICAgICAgICAgICJjb21tZW50X3RpdGxlIjogIkRvbid0IHRy
ZWFkIG9uIG1lIiwKLSAgICAgICAgICAicG9zdF9pZCI6IDIKLSAgICAgICAgfV0KLSAgICAgIH0K
LSAgICB9Ci0gICAgYGBgCi0KLSAgICBZb3UgY291bGQgaW1wbGVtZW50IGEgc2VyaWFsaXplciB0
aGF0IGxvb2tzIGxpa2UgdGhpcyB0byBnZXQgeW91ciBwYXlsb2FkCi0gICAgaW50byBzaGFwZToK
LQotICAgIGBgYGpzCi0gICAgQXBwLlBvc3RTZXJpYWxpemVyID0gRFMuUkVTVFNlcmlhbGl6ZXIu
ZXh0ZW5kKHsKLSAgICAgIC8vIEZpcnN0LCByZXN0cnVjdHVyZSB0aGUgdG9wLWxldmVsIHNvIGl0
J3Mgb3JnYW5pemVkIGJ5IHR5cGUKLSAgICAgIC8vIGFuZCB0aGUgY29tbWVudHMgYXJlIGxpc3Rl
ZCB1bmRlciBhIHBvc3QncyBgY29tbWVudHNgIGtleS4KLSAgICAgIGV4dHJhY3RBcnJheTogZnVu
Y3Rpb24oc3RvcmUsIHR5cGUsIHBheWxvYWQsIGlkLCByZXF1ZXN0VHlwZSkgewotICAgICAgICB2
YXIgcG9zdHMgPSBwYXlsb2FkLl9lbWJlZGRlZC5wb3N0OwotICAgICAgICB2YXIgY29tbWVudHMg
PSBbXTsKLSAgICAgICAgdmFyIHBvc3RDYWNoZSA9IHt9OwotCi0gICAgICAgIHBvc3RzLmZvckVh
Y2goZnVuY3Rpb24ocG9zdCkgewotICAgICAgICAgIHBvc3QuY29tbWVudHMgPSBbXTsKLSAgICAg
ICAgICBwb3N0Q2FjaGVbcG9zdC5pZF0gPSBwb3N0OwotICAgICAgICB9KTsKLQotICAgICAgICBw
YXlsb2FkLl9lbWJlZGRlZC5jb21tZW50LmZvckVhY2goZnVuY3Rpb24oY29tbWVudCkgewotICAg
ICAgICAgIGNvbW1lbnRzLnB1c2goY29tbWVudCk7Ci0gICAgICAgICAgcG9zdENhY2hlW2NvbW1l
bnQucG9zdF9pZF0uY29tbWVudHMucHVzaChjb21tZW50KTsKLSAgICAgICAgICBkZWxldGUgY29t
bWVudC5wb3N0X2lkOwotICAgICAgICB9Ci0KLSAgICAgICAgcGF5bG9hZCA9IHsgY29tbWVudHM6
IGNvbW1lbnRzLCBwb3N0czogcGF5bG9hZCB9OwotCi0gICAgICAgIHJldHVybiB0aGlzLl9zdXBl
cihzdG9yZSwgdHlwZSwgcGF5bG9hZCwgaWQsIHJlcXVlc3RUeXBlKTsKLSAgICAgIH0sCi0KLSAg
ICAgIG5vcm1hbGl6ZUhhc2g6IHsKLSAgICAgICAgLy8gTmV4dCwgbm9ybWFsaXplIGluZGl2aWR1
YWwgY29tbWVudHMsIHdoaWNoIChhZnRlciBgZXh0cmFjdGApCi0gICAgICAgIC8vIGFyZSBub3cg
bG9jYXRlZCB1bmRlciBgY29tbWVudHNgCi0gICAgICAgIGNvbW1lbnRzOiBmdW5jdGlvbihoYXNo
KSB7Ci0gICAgICAgICAgaGFzaC5pZCA9IGhhc2guX2lkOwotICAgICAgICAgIGhhc2gudGl0bGUg
PSBoYXNoLmNvbW1lbnRfdGl0bGU7Ci0gICAgICAgICAgZGVsZXRlIGhhc2guX2lkOwotICAgICAg
ICAgIGRlbGV0ZSBoYXNoLmNvbW1lbnRfdGl0bGU7Ci0gICAgICAgICAgcmV0dXJuIGhhc2g7Ci0g
ICAgICAgIH0KLSAgICAgIH0KLSAgICB9KQotICAgIGBgYAotCi0gICAgV2hlbiB5b3UgY2FsbCBz
dXBlciBmcm9tIHlvdXIgb3duIGltcGxlbWVudGF0aW9uIG9mIGBleHRyYWN0QXJyYXlgLCB0aGUK
LSAgICBidWlsdC1pbiBpbXBsZW1lbnRhdGlvbiB3aWxsIGZpbmQgdGhlIHByaW1hcnkgYXJyYXkg
aW4geW91ciBub3JtYWxpemVkCi0gICAgcGF5bG9hZCBhbmQgcHVzaCB0aGUgcmVtYWluaW5nIHJl
Y29yZHMgaW50byB0aGUgc3RvcmUuCi0KLSAgICBUaGUgcHJpbWFyeSBhcnJheSBpcyB0aGUgYXJy
YXkgZm91bmQgdW5kZXIgYHBvc3RzYC4KLQotICAgIFRoZSBwcmltYXJ5IHJlY29yZCBoYXMgc3Bl
Y2lhbCBtZWFuaW5nIHdoZW4gcmVzcG9uZGluZyB0byBgZmluZFF1ZXJ5YAotICAgIG9yIGBmaW5k
SGFzTWFueWAuIEluIHBhcnRpY3VsYXIsIHRoZSBwcmltYXJ5IGFycmF5IHdpbGwgYmVjb21lIHRo
ZQotICAgIGxpc3Qgb2YgcmVjb3JkcyBpbiB0aGUgcmVjb3JkIGFycmF5IHRoYXQga2lja2VkIG9m
ZiB0aGUgcmVxdWVzdC4KLQotICAgIElmIHlvdXIgcHJpbWFyeSBhcnJheSBjb250YWlucyBzZWNv
bmRhcnkgKGVtYmVkZGVkKSByZWNvcmRzIG9mIHRoZSBzYW1lIHR5cGUsCi0gICAgeW91IGNhbm5v
dCBwbGFjZSB0aGVzZSBpbnRvIHRoZSBwcmltYXJ5IGFycmF5IGBwb3N0c2AuIEluc3RlYWQsIHBs
YWNlIHRoZQotICAgIHNlY29uZGFyeSBpdGVtcyBpbnRvIGFuIHVuZGVyc2NvcmUgcHJlZml4ZWQg
cHJvcGVydHkgYF9wb3N0c2AsIHdoaWNoIHdpbGwKLSAgICBwdXNoIHRoZXNlIGl0ZW1zIGludG8g
dGhlIHN0b3JlIGFuZCB3aWxsIG5vdCBhZmZlY3QgdGhlIHJlc3VsdGluZyBxdWVyeS4KLQotICAg
IEBtZXRob2QgZXh0cmFjdEFycmF5Ci0gICAgQHBhcmFtIHtEUy5TdG9yZX0gc3RvcmUKLSAgICBA
cGFyYW0ge3N1YmNsYXNzIG9mIERTLk1vZGVsfSB0eXBlCi0gICAgQHBhcmFtIHtPYmplY3R9IHBh
eWxvYWQKLSAgICBAcGFyYW0geydmaW5kQWxsJ3wnZmluZE1hbnknfCdmaW5kSGFzTWFueSd8J2Zp
bmRRdWVyeSd9IHJlcXVlc3RUeXBlCi0gICAgQHJldHVybnMge0FycmF5fSBUaGUgcHJpbWFyeSBh
cnJheSB0aGF0IHdhcyByZXR1cm5lZCBpbiByZXNwb25zZQotICAgICAgdG8gdGhlIG9yaWdpbmFs
IHF1ZXJ5LgotICAqLwotICBleHRyYWN0QXJyYXk6IGZ1bmN0aW9uKHN0b3JlLCBwcmltYXJ5VHlw
ZSwgcGF5bG9hZCkgewotICAgIHBheWxvYWQgPSB0aGlzLm5vcm1hbGl6ZVBheWxvYWQocHJpbWFy
eVR5cGUsIHBheWxvYWQpOwotCi0gICAgdmFyIHByaW1hcnlUeXBlTmFtZSA9IHByaW1hcnlUeXBl
LnR5cGVLZXksCi0gICAgICAgIHByaW1hcnlBcnJheTsKLQotICAgIGZvciAodmFyIHByb3AgaW4g
cGF5bG9hZCkgewotICAgICAgdmFyIHR5cGVLZXkgPSBwcm9wLAotICAgICAgICAgIGZvcmNlZFNl
Y29uZGFyeSA9IGZhbHNlOwotCi0gICAgICBpZiAocHJvcC5jaGFyQXQoMCkgPT09ICdfJykgewot
ICAgICAgICBmb3JjZWRTZWNvbmRhcnkgPSB0cnVlOwotICAgICAgICB0eXBlS2V5ID0gcHJvcC5z
dWJzdHIoMSk7Ci0gICAgICB9Ci0KLSAgICAgIHZhciB0eXBlTmFtZSA9IHRoaXMudHlwZUZvclJv
b3QodHlwZUtleSksCi0gICAgICAgICAgdHlwZSA9IHN0b3JlLm1vZGVsRm9yKHR5cGVOYW1lKSwK
LSAgICAgICAgICB0eXBlU2VyaWFsaXplciA9IHN0b3JlLnNlcmlhbGl6ZXJGb3IodHlwZSksCi0g
ICAgICAgICAgaXNQcmltYXJ5ID0gKCFmb3JjZWRTZWNvbmRhcnkgJiYgKHR5cGUudHlwZUtleSA9
PT0gcHJpbWFyeVR5cGVOYW1lKSk7Ci0KLSAgICAgIC8qanNoaW50IGxvb3BmdW5jOnRydWUqLwot
ICAgICAgdmFyIG5vcm1hbGl6ZWRBcnJheSA9IG1hcC5jYWxsKHBheWxvYWRbcHJvcF0sIGZ1bmN0
aW9uKGhhc2gpIHsKLSAgICAgICAgcmV0dXJuIHR5cGVTZXJpYWxpemVyLm5vcm1hbGl6ZSh0eXBl
LCBoYXNoLCBwcm9wKTsKLSAgICAgIH0sIHRoaXMpOwotCi0gICAgICBpZiAoaXNQcmltYXJ5KSB7
Ci0gICAgICAgIHByaW1hcnlBcnJheSA9IG5vcm1hbGl6ZWRBcnJheTsKLSAgICAgIH0gZWxzZSB7
Ci0gICAgICAgIHN0b3JlLnB1c2hNYW55KHR5cGVOYW1lLCBub3JtYWxpemVkQXJyYXkpOwotICAg
ICAgfQotICAgIH0KLQotICAgIHJldHVybiBwcmltYXJ5QXJyYXk7Ci0gIH0sCi0KLSAgLyoqCi0g
ICAgVGhpcyBtZXRob2QgYWxsb3dzIHlvdSB0byBwdXNoIGEgcGF5bG9hZCBjb250YWluaW5nIHRv
cC1sZXZlbAotICAgIGNvbGxlY3Rpb25zIG9mIHJlY29yZHMgb3JnYW5pemVkIHBlciB0eXBlLgot
Ci0gICAgYGBganMKLSAgICB7Ci0gICAgICAicG9zdHMiOiBbewotICAgICAgICAiaWQiOiAiMSIs
Ci0gICAgICAgICJ0aXRsZSI6ICJSYWlscyBpcyBvbWFrYXNlIiwKLSAgICAgICAgImF1dGhvciIs
ICIxIiwKLSAgICAgICAgImNvbW1lbnRzIjogWyAiMSIgXQotICAgICAgfV0sCi0gICAgICAiY29t
bWVudHMiOiBbewotICAgICAgICAiaWQiOiAiMSIsCi0gICAgICAgICJib2R5IjogIkZJUlNUIgot
ICAgICAgfV0sCi0gICAgICAidXNlcnMiOiBbewotICAgICAgICAiaWQiOiAiMSIsCi0gICAgICAg
ICJuYW1lIjogIkBkMmgiCi0gICAgICB9XQotICAgIH0KLSAgICBgYGAKLQotICAgIEl0IHdpbGwg
Zmlyc3Qgbm9ybWFsaXplIHRoZSBwYXlsb2FkLCBzbyB5b3UgY2FuIHVzZSB0aGlzIHRvIHB1c2gK
LSAgICBpbiBkYXRhIHN0cmVhbWluZyBpbiBmcm9tIHlvdXIgc2VydmVyIHN0cnVjdHVyZWQgdGhl
IHNhbWUgd2F5Ci0gICAgdGhhdCBmZXRjaGVzIGFuZCBzYXZlcyBhcmUgc3RydWN0dXJlZC4KLQot
ICAgIEBtZXRob2QgcHVzaFBheWxvYWQKLSAgICBAcGFyYW0ge0RTLlN0b3JlfSBzdG9yZQotICAg
IEBwYXJhbSB7T2JqZWN0fSBwYXlsb2FkCi0gICovCi0gIHB1c2hQYXlsb2FkOiBmdW5jdGlvbihz
dG9yZSwgcGF5bG9hZCkgewotICAgIHBheWxvYWQgPSB0aGlzLm5vcm1hbGl6ZVBheWxvYWQobnVs
bCwgcGF5bG9hZCk7Ci0KLSAgICBmb3IgKHZhciBwcm9wIGluIHBheWxvYWQpIHsKLSAgICAgIHZh
ciB0eXBlTmFtZSA9IHRoaXMudHlwZUZvclJvb3QocHJvcCksCi0gICAgICAgICAgdHlwZSA9IHN0
b3JlLm1vZGVsRm9yKHR5cGVOYW1lKTsKLQotICAgICAgLypqc2hpbnQgbG9vcGZ1bmM6dHJ1ZSov
Ci0gICAgICB2YXIgbm9ybWFsaXplZEFycmF5ID0gbWFwLmNhbGwoRW1iZXIubWFrZUFycmF5KHBh
eWxvYWRbcHJvcF0pLCBmdW5jdGlvbihoYXNoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLm5vcm1h
bGl6ZSh0eXBlLCBoYXNoLCBwcm9wKTsKLSAgICAgIH0sIHRoaXMpOwotCi0gICAgICBzdG9yZS5w
dXNoTWFueSh0eXBlTmFtZSwgbm9ybWFsaXplZEFycmF5KTsKLSAgICB9Ci0gIH0sCi0KLSAgLyoq
Ci0gICAgWW91IGNhbiB1c2UgdGhpcyBtZXRob2QgdG8gbm9ybWFsaXplIHRoZSBKU09OIHJvb3Qg
a2V5cyByZXR1cm5lZAotICAgIGludG8gdGhlIG1vZGVsIHR5cGUgZXhwZWN0ZWQgYnkgeW91ciBz
dG9yZS4KLQotICAgIEZvciBleGFtcGxlLCB5b3VyIHNlcnZlciBtYXkgcmV0dXJuIHVuZGVyc2Nv
cmVkIHJvb3Qga2V5cyByYXRoZXIgdGhhbgotICAgIHRoZSBleHBlY3RlZCBjYW1lbGNhc2VkIHZl
cnNpb25zLgotCi0gICAgYGBganMKLSAgICBBcHAuQXBwbGljYXRpb25TZXJpYWxpemVyID0gRFMu
UkVTVFNlcmlhbGl6ZXIuZXh0ZW5kKHsKLSAgICAgIHR5cGVGb3JSb290OiBmdW5jdGlvbihyb290
KSB7Ci0gICAgICAgIHZhciBjYW1lbGl6ZWQgPSBFbWJlci5TdHJpbmcuY2FtZWxpemUocm9vdCk7
Ci0gICAgICAgIHJldHVybiBFbWJlci5TdHJpbmcuc2luZ3VsYXJpemUoY2FtZWxpemVkKTsKLSAg
ICAgIH0KLSAgICB9KTsKLSAgICBgYGAKLQotICAgIEBtZXRob2QgdHlwZUZvclJvb3QKLSAgICBA
cGFyYW0ge1N0cmluZ30gcm9vdAotICAgIEByZXR1cm5zIHtTdHJpbmd9IHRoZSBtb2RlbCdzIHR5
cGVLZXkKLSAgKi8KLSAgdHlwZUZvclJvb3Q6IGZ1bmN0aW9uKHJvb3QpIHsKLSAgICByZXR1cm4g
RW1iZXIuU3RyaW5nLnNpbmd1bGFyaXplKHJvb3QpOwotICB9LAotCi0gIC8vIFNFUklBTElaRQot
Ci0gIC8qKgotICAgIENhbGxlZCB3aGVuIGEgcmVjb3JkIGlzIHNhdmVkIGluIG9yZGVyIHRvIGNv
bnZlcnQgdGhlCi0gICAgcmVjb3JkIGludG8gSlNPTi4KLQotICAgIEJ5IGRlZmF1bHQsIGl0IGNy
ZWF0ZXMgYSBKU09OIG9iamVjdCB3aXRoIGEga2V5IGZvcgotICAgIGVhY2ggYXR0cmlidXRlIGFu
ZCBiZWxvbmdzVG8gcmVsYXRpb25zaGlwLgotCi0gICAgRm9yIGV4YW1wbGUsIGNvbnNpZGVyIHRo
aXMgbW9kZWw6Ci0KLSAgICBgYGBqcwotICAgIEFwcC5Db21tZW50ID0gRFMuTW9kZWwuZXh0ZW5k
KHsKLSAgICAgIHRpdGxlOiBEUy5hdHRyKCksCi0gICAgICBib2R5OiBEUy5hdHRyKCksCi0KLSAg
ICAgIGF1dGhvcjogRFMuYmVsb25nc1RvKCd1c2VyJykKLSAgICB9KTsKLSAgICBgYGAKLQotICAg
IFRoZSBkZWZhdWx0IHNlcmlhbGl6YXRpb24gd291bGQgY3JlYXRlIGEgSlNPTiBvYmplY3QgbGlr
ZToKLQotICAgIGBgYGpzCi0gICAgewotICAgICAgInRpdGxlIjogIlJhaWxzIGlzIHVuYWdpIiwK
LSAgICAgICJib2R5IjogIlJhaWxzPyBPbWFrYXNlPyBPX08iLAotICAgICAgImF1dGhvciI6IDEy
Ci0gICAgfQotICAgIGBgYAotCi0gICAgQnkgZGVmYXVsdCwgYXR0cmlidXRlcyBhcmUgcGFzc2Vk
IHRocm91Z2ggYXMtaXMsIHVubGVzcwotICAgIHlvdSBzcGVjaWZpZWQgYW4gYXR0cmlidXRlIHR5
cGUgKGBEUy5hdHRyKCdkYXRlJylgKS4gSWYKLSAgICB5b3Ugc3BlY2lmeSBhIHRyYW5zZm9ybSwg
dGhlIEphdmFTY3JpcHQgdmFsdWUgd2lsbCBiZQotICAgIHNlcmlhbGl6ZWQgd2hlbiBpbnNlcnRl
ZCBpbnRvIHRoZSBKU09OIGhhc2guCi0KLSAgICBCeSBkZWZhdWx0LCBiZWxvbmdzLXRvIHJlbGF0
aW9uc2hpcHMgYXJlIGNvbnZlcnRlZCBpbnRvCi0gICAgSURzIHdoZW4gaW5zZXJ0ZWQgaW50byB0
aGUgSlNPTiBoYXNoLgotCi0gICAgIyMgSURzCi0KLSAgICBgc2VyaWFsaXplYCB0YWtlcyBhbiBv
cHRpb25zIGhhc2ggd2l0aCBhIHNpbmdsZSBvcHRpb246Ci0gICAgYGluY2x1ZGVJZGAuIElmIHRo
aXMgb3B0aW9uIGlzIGB0cnVlYCwgYHNlcmlhbGl6ZWAgd2lsbCwKLSAgICBieSBkZWZhdWx0IGlu
Y2x1ZGUgdGhlIElEIGluIHRoZSBKU09OIG9iamVjdCBpdCBidWlsZHMuCi0KLSAgICBUaGUgYWRh
cHRlciBwYXNzZXMgaW4gYGluY2x1ZGVJZDogdHJ1ZWAgd2hlbiBzZXJpYWxpemluZwotICAgIGEg
cmVjb3JkIGZvciBgY3JlYXRlUmVjb3JkYCwgYnV0IG5vdCBmb3IgYHVwZGF0ZVJlY29yZGAuCi0K
LSAgICAjIyBDdXN0b21pemF0aW9uCi0KLSAgICBZb3VyIHNlcnZlciBtYXkgZXhwZWN0IGEgZGlm
ZmVyZW50IEpTT04gZm9ybWF0IHRoYW4gdGhlCi0gICAgYnVpbHQtaW4gc2VyaWFsaXphdGlvbiBm
b3JtYXQuCi0KLSAgICBJbiB0aGF0IGNhc2UsIHlvdSBjYW4gaW1wbGVtZW50IGBzZXJpYWxpemVg
IHlvdXJzZWxmIGFuZAotICAgIHJldHVybiBhIEpTT04gaGFzaCBvZiB5b3VyIGNob29zaW5nLgot
Ci0gICAgYGBganMKLSAgICBBcHAuUG9zdFNlcmlhbGl6ZXIgPSBEUy5SRVNUU2VyaWFsaXplci5l
eHRlbmQoewotICAgICAgc2VyaWFsaXplOiBmdW5jdGlvbihwb3N0LCBvcHRpb25zKSB7Ci0gICAg
ICAgIHZhciBqc29uID0gewotICAgICAgICAgIFBPU1RfVFRMOiBwb3N0LmdldCgndGl0bGUnKSwK
LSAgICAgICAgICBQT1NUX0JEWTogcG9zdC5nZXQoJ2JvZHknKSwKLSAgICAgICAgICBQT1NUX0NN
UzogcG9zdC5nZXQoJ2NvbW1lbnRzJykubWFwUHJvcGVydHkoJ2lkJykKLSAgICAgICAgfQotCi0g
ICAgICAgIGlmIChvcHRpb25zLmluY2x1ZGVJZCkgewotICAgICAgICAgIGpzb24uUE9TVF9JRF8g
PSBwb3N0LmdldCgnaWQnKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBqc29uOwotICAg
ICAgfQotICAgIH0pOwotICAgIGBgYAotCi0gICAgIyMgQ3VzdG9taXppbmcgYW4gQXBwLVdpZGUg
U2VyaWFsaXplcgotCi0gICAgSWYgeW91IHdhbnQgdG8gZGVmaW5lIGEgc2VyaWFsaXplciBmb3Ig
eW91ciBlbnRpcmUKLSAgICBhcHBsaWNhdGlvbiwgeW91J2xsIHByb2JhYmx5IHdhbnQgdG8gdXNl
IGBlYWNoQXR0cmlidXRlYAotICAgIGFuZCBgZWFjaFJlbGF0aW9uc2hpcGAgb24gdGhlIHJlY29y
ZC4KLQotICAgIGBgYGpzCi0gICAgQXBwLkFwcGxpY2F0aW9uU2VyaWFsaXplciA9IERTLlJFU1RT
ZXJpYWxpemVyLmV4dGVuZCh7Ci0gICAgICBzZXJpYWxpemU6IGZ1bmN0aW9uKHJlY29yZCwgb3B0
aW9ucykgewotICAgICAgICB2YXIganNvbiA9IHt9OwotCi0gICAgICAgIHJlY29yZC5lYWNoQXR0
cmlidXRlKGZ1bmN0aW9uKG5hbWUpIHsKLSAgICAgICAgICBqc29uW3NlcnZlckF0dHJpYnV0ZU5h
bWUobmFtZSldID0gcmVjb3JkLmdldChuYW1lKTsKLSAgICAgICAgfSkKLQotICAgICAgICByZWNv
cmQuZWFjaFJlbGF0aW9uc2hpcChmdW5jdGlvbihuYW1lLCByZWxhdGlvbnNoaXApIHsKLSAgICAg
ICAgICBpZiAocmVsYXRpb25zaGlwLmtpbmQgPT09ICdoYXNNYW55JykgewotICAgICAgICAgICAg
anNvbltzZXJ2ZXJIYXNNYW55TmFtZShuYW1lKV0gPSByZWNvcmQuZ2V0KG5hbWUpLm1hcEJ5KCdp
ZCcpOwotICAgICAgICAgIH0KLSAgICAgICAgfSk7Ci0KLSAgICAgICAgaWYgKG9wdGlvbnMuaW5j
bHVkZUlkKSB7Ci0gICAgICAgICAganNvbi5JRF8gPSByZWNvcmQuZ2V0KCdpZCcpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgcmV0dXJuIGpzb247Ci0gICAgICB9Ci0gICAgfSk7Ci0KLSAgICBmdW5j
dGlvbiBzZXJ2ZXJBdHRyaWJ1dGVOYW1lKGF0dHJpYnV0ZSkgewotICAgICAgcmV0dXJuIGF0dHJp
YnV0ZS51bmRlcnNjb3JlKCkudG9VcHBlckNhc2UoKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBz
ZXJ2ZXJIYXNNYW55TmFtZShuYW1lKSB7Ci0gICAgICByZXR1cm4gc2VydmVyQXR0cmlidXRlTmFt
ZShuYW1lLnNpbmd1bGFyaXplKCkpICsgIl9JRFMiOwotICAgIH0KLSAgICBgYGAKLQotICAgIFRo
aXMgc2VyaWFsaXplciB3aWxsIGdlbmVyYXRlIEpTT04gdGhhdCBsb29rcyBsaWtlIHRoaXM6Ci0K
LSAgICBgYGBqcwotICAgIHsKLSAgICAgICJUSVRMRSI6ICJSYWlscyBpcyBvbWFrYXNlIiwKLSAg
ICAgICJCT0RZIjogIlllcC4gT21ha2FzZS4iLAotICAgICAgIkNPTU1FTlRfSURTIjogWyAxLCAy
LCAzIF0KLSAgICB9Ci0gICAgYGBgCi0KLSAgICAjIyBUd2Vha2luZyB0aGUgRGVmYXVsdCBKU09O
Ci0KLSAgICBJZiB5b3UganVzdCB3YW50IHRvIGRvIHNvbWUgc21hbGwgdHdlYWtzIG9uIHRoZSBk
ZWZhdWx0IEpTT04sCi0gICAgeW91IGNhbiBjYWxsIHN1cGVyIGZpcnN0IGFuZCBtYWtlIHRoZSB0
d2Vha3Mgb24gdGhlIHJldHVybmVkCi0gICAgSlNPTi4KLQotICAgIGBgYGpzCi0gICAgQXBwLlBv
c3RTZXJpYWxpemVyID0gRFMuUkVTVFNlcmlhbGl6ZXIuZXh0ZW5kKHsKLSAgICAgIHNlcmlhbGl6
ZTogZnVuY3Rpb24ocmVjb3JkLCBvcHRpb25zKSB7Ci0gICAgICAgIHZhciBqc29uID0gdGhpcy5f
c3VwZXIocmVjb3JkLCBvcHRpb25zKTsKLQotICAgICAgICBqc29uLnN1YmplY3QgPSBqc29uLnRp
dGxlOwotICAgICAgICBkZWxldGUganNvbi50aXRsZTsKLQotICAgICAgICByZXR1cm4ganNvbjsK
LSAgICAgIH0KLSAgICB9KTsKLSAgICBgYGAKLQotICAgIEBtZXRob2Qgc2VyaWFsaXplCi0gICAg
QHBhcmFtIHJlY29yZAotICAgIEBwYXJhbSBvcHRpb25zCi0gICovCi0gIHNlcmlhbGl6ZTogZnVu
Y3Rpb24ocmVjb3JkLCBvcHRpb25zKSB7Ci0gICAgcmV0dXJuIHRoaXMuX3N1cGVyLmFwcGx5KHRo
aXMsIGFyZ3VtZW50cyk7Ci0gIH0sCi0KLSAgLyoqCi0gICAgWW91IGNhbiB1c2UgdGhpcyBtZXRo
b2QgdG8gY3VzdG9taXplIHRoZSByb290IGtleXMgc2VyaWFsaXplZCBpbnRvIHRoZSBKU09OLgot
ICAgIEJ5IGRlZmF1bHQgdGhlIFJFU1QgU2VyaWFsaXplciBzZW5kcyBjYW1lbGl6ZWQgcm9vdCBr
ZXlzLgotICAgIEZvciBleGFtcGxlLCB5b3VyIHNlcnZlciBtYXkgZXhwZWN0IHVuZGVyc2NvcmVk
IHJvb3Qgb2JqZWN0cy4KLQotICAgIGBgYGpzCi0gICAgQXBwLkFwcGxpY2F0aW9uU2VyaWFsaXpl
ciA9IERTLlJFU1RTZXJpYWxpemVyLmV4dGVuZCh7Ci0gICAgICBzZXJpYWxpemVJbnRvSGFzaDog
ZnVuY3Rpb24oZGF0YSwgdHlwZSwgcmVjb3JkLCBvcHRpb25zKSB7Ci0gICAgICAgIHZhciByb290
ID0gRW1iZXIuU3RyaW5nLmRlY2FtZWxpemUodHlwZS50eXBlS2V5KTsKLSAgICAgICAgZGF0YVty
b290XSA9IHRoaXMuc2VyaWFsaXplKHJlY29yZCwgb3B0aW9ucyk7Ci0gICAgICB9Ci0gICAgfSk7
Ci0gICAgYGBgCi0KLSAgICBAbWV0aG9kIHNlcmlhbGl6ZUludG9IYXNoCi0gICAgQHBhcmFtIHtP
YmplY3R9IGhhc2gKLSAgICBAcGFyYW0ge3N1YmNsYXNzIG9mIERTLk1vZGVsfSB0eXBlCi0gICAg
QHBhcmFtIHtEUy5Nb2RlbH0gcmVjb3JkCi0gICAgQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMKLSAg
Ki8KLSAgc2VyaWFsaXplSW50b0hhc2g6IGZ1bmN0aW9uKGhhc2gsIHR5cGUsIHJlY29yZCwgb3B0
aW9ucykgewotICAgIHZhciByb290ID0gRW1iZXIuU3RyaW5nLmNhbWVsaXplKHR5cGUudHlwZUtl
eSk7Ci0gICAgaGFzaFtyb290XSA9IHRoaXMuc2VyaWFsaXplKHJlY29yZCwgb3B0aW9ucyk7Ci0g
IH0sCi0KLSAgLyoqCi0gICAgWW91IGNhbiB1c2UgdGhpcyBtZXRob2QgdG8gY3VzdG9taXplIGhv
dyBwb2x5bW9ycGhpYyBvYmplY3RzIGFyZSBzZXJpYWxpemVkLgotICAgIEJ5IGRlZmF1bHQgdGhl
IEpTT04gU2VyaWFsaXplciBjcmVhdGVzIHRoZSBrZXkgYnkgYXBwZW5kaW5nIGBUeXBlYCB0bwot
ICAgIHRoZSBhdHRyaWJ1dGUgYW5kIHZhbHVlIGZyb20gdGhlIG1vZGVsJ3MgY2FtZWxjYXNlZCBt
b2RlbCBuYW1lLgotCi0gICAgQG1ldGhvZCBzZXJpYWxpemVQb2x5bW9ycGhpY1R5cGUKLSAgICBA
cGFyYW0ge0RTLk1vZGVsfSByZWNvcmQKLSAgICBAcGFyYW0ge09iamVjdH0ganNvbgotICAgIEBw
YXJhbSB7T2JqZWN0fSByZWxhdGlvbnNoaXAKLSAgKi8KLSAgc2VyaWFsaXplUG9seW1vcnBoaWNU
eXBlOiBmdW5jdGlvbihyZWNvcmQsIGpzb24sIHJlbGF0aW9uc2hpcCkgewotICAgIHZhciBrZXkg
PSByZWxhdGlvbnNoaXAua2V5LAotICAgICAgICBiZWxvbmdzVG8gPSBnZXQocmVjb3JkLCBrZXkp
OwotICAgIGtleSA9IHRoaXMua2V5Rm9yQXR0cmlidXRlID8gdGhpcy5rZXlGb3JBdHRyaWJ1dGUo
a2V5KSA6IGtleTsKLSAgICBqc29uW2tleSArICJUeXBlIl0gPSBFbWJlci5TdHJpbmcuY2FtZWxp
emUoYmVsb25nc1RvLmNvbnN0cnVjdG9yLnR5cGVLZXkpOwotICB9Ci19KTsKLQotfSkoKTsKLQot
Ci0KLShmdW5jdGlvbigpIHsKLS8qKgotICBAbW9kdWxlIGVtYmVyLWRhdGEKLSovCi0KLXZhciBn
ZXQgPSBFbWJlci5nZXQsIHNldCA9IEVtYmVyLnNldDsKLXZhciBmb3JFYWNoID0gRW1iZXIuQXJy
YXlQb2x5ZmlsbHMuZm9yRWFjaDsKLQotLyoqCi0gIFRoZSBSRVNUIGFkYXB0ZXIgYWxsb3dzIHlv
dXIgc3RvcmUgdG8gY29tbXVuaWNhdGUgd2l0aCBhbiBIVFRQIHNlcnZlciBieQotICB0cmFuc21p
dHRpbmcgSlNPTiB2aWEgWEhSLiBNb3N0IEVtYmVyLmpzIGFwcHMgdGhhdCBjb25zdW1lIGEgSlNP
TiBBUEkKLSAgc2hvdWxkIHVzZSB0aGUgUkVTVCBhZGFwdGVyLgotCi0gIFRoaXMgYWRhcHRlciBp
cyBkZXNpZ25lZCBhcm91bmQgdGhlIGlkZWEgdGhhdCB0aGUgSlNPTiBleGNoYW5nZWQgd2l0aAot
ICB0aGUgc2VydmVyIHNob3VsZCBiZSBjb252ZW50aW9uYWwuCi0KLSAgIyMgSlNPTiBTdHJ1Y3R1
cmUKLQotICBUaGUgUkVTVCBhZGFwdGVyIGV4cGVjdHMgdGhlIEpTT04gcmV0dXJuZWQgZnJvbSB5
b3VyIHNlcnZlciB0byBmb2xsb3cKLSAgdGhlc2UgY29udmVudGlvbnMuCi0KLSAgIyMjIE9iamVj
dCBSb290Ci0KLSAgVGhlIEpTT04gcGF5bG9hZCBzaG91bGQgYmUgYW4gb2JqZWN0IHRoYXQgY29u
dGFpbnMgdGhlIHJlY29yZCBpbnNpZGUgYQotICByb290IHByb3BlcnR5LiBGb3IgZXhhbXBsZSwg
aW4gcmVzcG9uc2UgdG8gYSBgR0VUYCByZXF1ZXN0IGZvcgotICBgL3Bvc3RzLzFgLCB0aGUgSlNP
TiBzaG91bGQgbG9vayBsaWtlIHRoaXM6Ci0KLSAgYGBganMKLSAgewotICAgICJwb3N0Ijogewot
ICAgICAgInRpdGxlIjogIkknbSBSdW5uaW5nIHRvIFJlZm9ybSB0aGUgVzNDJ3MgVGFnIiwKLSAg
ICAgICJhdXRob3IiOiAiWWVodWRhIEthdHoiCi0gICAgfQotICB9Ci0gIGBgYAotCi0gICMjIyBD
b252ZW50aW9uYWwgTmFtZXMKLQotICBBdHRyaWJ1dGUgbmFtZXMgaW4geW91ciBKU09OIHBheWxv
YWQgc2hvdWxkIGJlIHRoZSBjYW1lbENhc2VkIHZlcnNpb25zIG9mCi0gIHRoZSBhdHRyaWJ1dGVz
IGluIHlvdXIgRW1iZXIuanMgbW9kZWxzLgotCi0gIEZvciBleGFtcGxlLCBpZiB5b3UgaGF2ZSBh
IGBQZXJzb25gIG1vZGVsOgotCi0gIGBgYGpzCi0gIEFwcC5QZXJzb24gPSBEUy5Nb2RlbC5leHRl
bmQoewotICAgIGZpcnN0TmFtZTogRFMuYXR0cignc3RyaW5nJyksCi0gICAgbGFzdE5hbWU6IERT
LmF0dHIoJ3N0cmluZycpLAotICAgIG9jY3VwYXRpb246IERTLmF0dHIoJ3N0cmluZycpCi0gIH0p
OwotICBgYGAKLQotICBUaGUgSlNPTiByZXR1cm5lZCBzaG91bGQgbG9vayBsaWtlIHRoaXM6Ci0K
LSAgYGBganMKLSAgewotICAgICJwZXJzb24iOiB7Ci0gICAgICAiZmlyc3ROYW1lIjogIkJhcmFj
ayIsCi0gICAgICAibGFzdE5hbWUiOiAiT2JhbWEiLAotICAgICAgIm9jY3VwYXRpb24iOiAiUHJl
c2lkZW50IgotICAgIH0KLSAgfQotICBgYGAKLQotICAjIyBDdXN0b21pemF0aW9uCi0KLSAgIyMj
IEVuZHBvaW50IHBhdGggY3VzdG9taXphdGlvbgotCi0gIEVuZHBvaW50IHBhdGhzIGNhbiBiZSBw
cmVmaXhlZCB3aXRoIGEgYG5hbWVzcGFjZWAgYnkgc2V0dGluZyB0aGUgbmFtZXNwYWNlCi0gIHBy
b3BlcnR5IG9uIHRoZSBhZGFwdGVyOgotCi0gIGBgYGpzCi0gIERTLlJFU1RBZGFwdGVyLnJlb3Bl
bih7Ci0gICAgbmFtZXNwYWNlOiAnYXBpLzEnCi0gIH0pOwotICBgYGAKLSAgUmVxdWVzdHMgZm9y
IGBBcHAuUGVyc29uYCB3b3VsZCBub3cgdGFyZ2V0IGAvYXBpLzEvcGVvcGxlLzFgLgotCi0gICMj
IyBIb3N0IGN1c3RvbWl6YXRpb24KLQotICBBbiBhZGFwdGVyIGNhbiB0YXJnZXQgb3RoZXIgaG9z
dHMgYnkgc2V0dGluZyB0aGUgYGhvc3RgIHByb3BlcnR5LgotCi0gIGBgYGpzCi0gIERTLlJFU1RB
ZGFwdGVyLnJlb3Blbih7Ci0gICAgaG9zdDogJ2h0dHBzOi8vYXBpLmV4YW1wbGUuY29tJwotICB9
KTsKLSAgYGBgCi0KLSAgIyMjIEhlYWRlcnMgY3VzdG9taXphdGlvbgotCi0gIFNvbWUgQVBJcyBy
ZXF1aXJlIEhUVFAgaGVhZGVycywgZS5nLiB0byBwcm92aWRlIGFuIEFQSSBrZXkuIEFuIGFycmF5
IG9mCi0gIGhlYWRlcnMgY2FuIGJlIGFkZGVkIHRvIHRoZSBhZGFwdGVyIHdoaWNoIGFyZSBwYXNz
ZWQgd2l0aCBldmVyeSByZXF1ZXN0OgotCi0gIGBgYGpzCi0gIERTLlJFU1RBZGFwdGVyLnJlb3Bl
bih7Ci0gICAgaGVhZGVyczogewotICAgICAgIkFQSV9LRVkiOiAic2VjcmV0IGtleSIsCi0gICAg
ICAiQU5PVEhFUl9IRUFERVIiOiAiU29tZSBoZWFkZXIgdmFsdWUiCi0gICAgfQotICB9KTsKLSAg
YGBgCi0KLSAgQGNsYXNzIFJFU1RBZGFwdGVyCi0gIEBjb25zdHJ1Y3RvcgotICBAbmFtZXNwYWNl
IERTCi0gIEBleHRlbmRzIERTLkFkYXB0ZXIKLSovCi1EUy5SRVNUQWRhcHRlciA9IERTLkFkYXB0
ZXIuZXh0ZW5kKHsKLSAgZGVmYXVsdFNlcmlhbGl6ZXI6ICctcmVzdCcsCi0KLQotICAvKioKLSAg
ICBFbmRwb2ludCBwYXRocyBjYW4gYmUgcHJlZml4ZWQgd2l0aCBhIGBuYW1lc3BhY2VgIGJ5IHNl
dHRpbmcgdGhlIG5hbWVzcGFjZQotICAgIHByb3BlcnR5IG9uIHRoZSBhZGFwdGVyOgotCi0gICAg
YGBgamF2YXNjcmlwdAotICAgIERTLlJFU1RBZGFwdGVyLnJlb3Blbih7Ci0gICAgICBuYW1lc3Bh
Y2U6ICdhcGkvMScKLSAgICB9KTsKLSAgICBgYGAKLQotICAgIFJlcXVlc3RzIGZvciBgQXBwLlBv
c3RgIHdvdWxkIG5vdyB0YXJnZXQgYC9hcGkvMS9wb3N0L2AuCi0KLSAgICBAcHJvcGVydHkgbmFt
ZXNwYWNlCi0gICAgQHR5cGUge1N0cmluZ30KLSAgKi8KLQotICAvKioKLSAgICBBbiBhZGFwdGVy
IGNhbiB0YXJnZXQgb3RoZXIgaG9zdHMgYnkgc2V0dGluZyB0aGUgYGhvc3RgIHByb3BlcnR5Lgot
Ci0gICAgYGBgamF2YXNjcmlwdAotICAgIERTLlJFU1RBZGFwdGVyLnJlb3Blbih7Ci0gICAgICBo
b3N0OiAnaHR0cHM6Ly9hcGkuZXhhbXBsZS5jb20nCi0gICAgfSk7Ci0gICAgYGBgCi0KLSAgICBS
ZXF1ZXN0cyBmb3IgYEFwcC5Qb3N0YCB3b3VsZCBub3cgdGFyZ2V0IGBodHRwczovL2FwaS5leGFt
cGxlLmNvbS9wb3N0L2AuCi0KLSAgICBAcHJvcGVydHkgaG9zdAotICAgIEB0eXBlIHtTdHJpbmd9
Ci0gICovCi0KLSAgLyoqCi0gICAgU29tZSBBUElzIHJlcXVpcmUgSFRUUCBoZWFkZXJzLCBlLmcu
IHRvIHByb3ZpZGUgYW4gQVBJIGtleS4gQW4gYXJyYXkgb2YKLSAgICBoZWFkZXJzIGNhbiBiZSBh
ZGRlZCB0byB0aGUgYWRhcHRlciB3aGljaCBhcmUgcGFzc2VkIHdpdGggZXZlcnkgcmVxdWVzdDoK
LQotICAgIGBgYGphdmFzY3JpcHQKLSAgICBEUy5SRVNUQWRhcHRlci5yZW9wZW4oewotICAgICAg
aGVhZGVyczogewotICAgICAgICAiQVBJX0tFWSI6ICJzZWNyZXQga2V5IiwKLSAgICAgICAgIkFO
T1RIRVJfSEVBREVSIjogIlNvbWUgaGVhZGVyIHZhbHVlIgotICAgICAgfQotICAgIH0pOwotICAg
IGBgYAotCi0gICAgQHByb3BlcnR5IGhlYWRlcnMKLSAgICBAdHlwZSB7T2JqZWN0fQotICAqLwot
Ci0gIC8qKgotICAgIENhbGxlZCBieSB0aGUgc3RvcmUgaW4gb3JkZXIgdG8gZmV0Y2ggdGhlIEpT
T04gZm9yIGEgZ2l2ZW4KLSAgICB0eXBlIGFuZCBJRC4KLQotICAgIFRoZSBgZmluZGAgbWV0aG9k
IG1ha2VzIGFuIEFqYXggcmVxdWVzdCB0byBhIFVSTCBjb21wdXRlZCBieSBgYnVpbGRVUkxgLCBh
bmQgcmV0dXJucyBhCi0gICAgcHJvbWlzZSBmb3IgdGhlIHJlc3VsdGluZyBwYXlsb2FkLgotCi0g
ICAgVGhpcyBtZXRob2QgcGVyZm9ybXMgYW4gSFRUUCBgR0VUYCByZXF1ZXN0IHdpdGggdGhlIGlk
IHByb3ZpZGVkIGFzIHBhcnQgb2YgdGhlIHF1ZXJ5IHN0cmluZy4KLQotICAgIEBtZXRob2QgZmlu
ZAotICAgIEBwYXJhbSB7RFMuU3RvcmV9IHN0b3JlCi0gICAgQHBhcmFtIHtzdWJjbGFzcyBvZiBE
Uy5Nb2RlbH0gdHlwZQotICAgIEBwYXJhbSB7U3RyaW5nfSBpZAotICAgIEByZXR1cm5zIHtQcm9t
aXNlfSBwcm9taXNlCi0gICovCi0gIGZpbmQ6IGZ1bmN0aW9uKHN0b3JlLCB0eXBlLCBpZCkgewot
ICAgIHJldHVybiB0aGlzLmFqYXgodGhpcy5idWlsZFVSTCh0eXBlLnR5cGVLZXksIGlkKSwgJ0dF
VCcpOwotICB9LAotCi0gIC8qKgotICAgIENhbGxlZCBieSB0aGUgc3RvcmUgaW4gb3JkZXIgdG8g
ZmV0Y2ggYSBKU09OIGFycmF5IGZvciBhbGwKLSAgICBvZiB0aGUgcmVjb3JkcyBmb3IgYSBnaXZl
biB0eXBlLgotCi0gICAgVGhlIGBmaW5kQWxsYCBtZXRob2QgbWFrZXMgYW4gQWpheCAoSFRUUCBH
RVQpIHJlcXVlc3QgdG8gYSBVUkwgY29tcHV0ZWQgYnkgYGJ1aWxkVVJMYCwgYW5kIHJldHVybnMg
YQotICAgIHByb21pc2UgZm9yIHRoZSByZXN1bHRpbmcgcGF5bG9hZC4KLQotICAgIEBwcml2YXRl
Ci0gICAgQG1ldGhvZCBmaW5kQWxsCi0gICAgQHBhcmFtIHtEUy5TdG9yZX0gc3RvcmUKLSAgICBA
cGFyYW0ge3N1YmNsYXNzIG9mIERTLk1vZGVsfSB0eXBlCi0gICAgQHBhcmFtIHtTdHJpbmd9IHNp
bmNlVG9rZW4KLSAgICBAcmV0dXJucyB7UHJvbWlzZX0gcHJvbWlzZQotICAqLwotICBmaW5kQWxs
OiBmdW5jdGlvbihzdG9yZSwgdHlwZSwgc2luY2VUb2tlbikgewotICAgIHZhciBxdWVyeTsKLQot
ICAgIGlmIChzaW5jZVRva2VuKSB7Ci0gICAgICBxdWVyeSA9IHsgc2luY2U6IHNpbmNlVG9rZW4g
fTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdGhpcy5hamF4KHRoaXMuYnVpbGRVUkwodHlwZS50eXBl
S2V5KSwgJ0dFVCcsIHsgZGF0YTogcXVlcnkgfSk7Ci0gIH0sCi0KLSAgLyoqCi0gICAgQ2FsbGVk
IGJ5IHRoZSBzdG9yZSBpbiBvcmRlciB0byBmZXRjaCBhIEpTT04gYXJyYXkgZm9yCi0gICAgdGhl
IHJlY29yZHMgdGhhdCBtYXRjaCBhIHBhcnRpY3VsYXIgcXVlcnkuCi0KLSAgICBUaGUgYGZpbmRR
dWVyeWAgbWV0aG9kIG1ha2VzIGFuIEFqYXggKEhUVFAgR0VUKSByZXF1ZXN0IHRvIGEgVVJMIGNv
bXB1dGVkIGJ5IGBidWlsZFVSTGAsIGFuZCByZXR1cm5zIGEKLSAgICBwcm9taXNlIGZvciB0aGUg
cmVzdWx0aW5nIHBheWxvYWQuCi0KLSAgICBUaGUgYHF1ZXJ5YCBhcmd1bWVudCBpcyBhIHNpbXBs
ZSBKYXZhU2NyaXB0IG9iamVjdCB0aGF0IHdpbGwgYmUgcGFzc2VkIGRpcmVjdGx5Ci0gICAgdG8g
dGhlIHNlcnZlciBhcyBwYXJhbWV0ZXJzLgotCi0gICAgQHByaXZhdGUKLSAgICBAbWV0aG9kIGZp
bmRRdWVyeQotICAgIEBwYXJhbSB7RFMuU3RvcmV9IHN0b3JlCi0gICAgQHBhcmFtIHtzdWJjbGFz
cyBvZiBEUy5Nb2RlbH0gdHlwZQotICAgIEBwYXJhbSB7T2JqZWN0fSBxdWVyeQotICAgIEByZXR1
cm5zIHtQcm9taXNlfSBwcm9taXNlCi0gICovCi0gIGZpbmRRdWVyeTogZnVuY3Rpb24oc3RvcmUs
IHR5cGUsIHF1ZXJ5KSB7Ci0gICAgcmV0dXJuIHRoaXMuYWpheCh0aGlzLmJ1aWxkVVJMKHR5cGUu
dHlwZUtleSksICdHRVQnLCB7IGRhdGE6IHF1ZXJ5IH0pOwotICB9LAotCi0gIC8qKgotICAgIENh
bGxlZCBieSB0aGUgc3RvcmUgaW4gb3JkZXIgdG8gZmV0Y2ggYSBKU09OIGFycmF5IGZvcgotICAg
IHRoZSB1bmxvYWRlZCByZWNvcmRzIGluIGEgaGFzLW1hbnkgcmVsYXRpb25zaGlwIHRoYXQgd2Vy
ZSBvcmlnaW5hbGx5Ci0gICAgc3BlY2lmaWVkIGFzIElEcy4KLQotICAgIEZvciBleGFtcGxlLCBp
ZiB0aGUgb3JpZ2luYWwgcGF5bG9hZCBsb29rcyBsaWtlOgotCi0gICAgYGBganMKLSAgICB7Ci0g
ICAgICAiaWQiOiAxLAotICAgICAgInRpdGxlIjogIlJhaWxzIGlzIG9tYWthc2UiLAotICAgICAg
ImNvbW1lbnRzIjogWyAxLCAyLCAzIF0KLSAgICB9Ci0gICAgYGBgCi0KLSAgICBUaGUgSURzIHdp
bGwgYmUgcGFzc2VkIGFzIGEgVVJMLWVuY29kZWQgQXJyYXkgb2YgSURzLCBpbiB0aGlzIGZvcm06
Ci0KLSAgICBgYGAKLSAgICBpZHNbXT0xJmlkc1tdPTImaWRzW109MwotICAgIGBgYAotCi0gICAg
TWFueSBzZXJ2ZXJzLCBzdWNoIGFzIFJhaWxzIGFuZCBQSFAsIHdpbGwgYXV0b21hdGljYWxseSBj
b252ZXJ0IHRoaXMgVVJMLWVuY29kZWQgYXJyYXkKLSAgICBpbnRvIGFuIEFycmF5IGZvciB5b3Ug
b24gdGhlIHNlcnZlci1zaWRlLiBJZiB5b3Ugd2FudCB0byBlbmNvZGUgdGhlCi0gICAgSURzLCBk
aWZmZXJlbnRseSwganVzdCBvdmVycmlkZSB0aGlzIChvbmUtbGluZSkgbWV0aG9kLgotCi0gICAg
VGhlIGBmaW5kTWFueWAgbWV0aG9kIG1ha2VzIGFuIEFqYXggKEhUVFAgR0VUKSByZXF1ZXN0IHRv
IGEgVVJMIGNvbXB1dGVkIGJ5IGBidWlsZFVSTGAsIGFuZCByZXR1cm5zIGEKLSAgICBwcm9taXNl
IGZvciB0aGUgcmVzdWx0aW5nIHBheWxvYWQuCi0KLSAgICBAbWV0aG9kIGZpbmRNYW55Ci0gICAg
QHBhcmFtIHtEUy5TdG9yZX0gc3RvcmUKLSAgICBAcGFyYW0ge3N1YmNsYXNzIG9mIERTLk1vZGVs
fSB0eXBlCi0gICAgQHBhcmFtIHtBcnJheX0gaWRzCi0gICAgQHJldHVybnMge1Byb21pc2V9IHBy
b21pc2UKLSAgKi8KLSAgZmluZE1hbnk6IGZ1bmN0aW9uKHN0b3JlLCB0eXBlLCBpZHMpIHsKLSAg
ICByZXR1cm4gdGhpcy5hamF4KHRoaXMuYnVpbGRVUkwodHlwZS50eXBlS2V5KSwgJ0dFVCcsIHsg
ZGF0YTogeyBpZHM6IGlkcyB9IH0pOwotICB9LAotCi0gIC8qKgotICAgIENhbGxlZCBieSB0aGUg
c3RvcmUgaW4gb3JkZXIgdG8gZmV0Y2ggYSBKU09OIGFycmF5IGZvcgotICAgIHRoZSB1bmxvYWRl
ZCByZWNvcmRzIGluIGEgaGFzLW1hbnkgcmVsYXRpb25zaGlwIHRoYXQgd2VyZSBvcmlnaW5hbGx5
Ci0gICAgc3BlY2lmaWVkIGFzIGEgVVJMIChpbnNpZGUgb2YgYGxpbmtzYCkuCi0KLSAgICBGb3Ig
ZXhhbXBsZSwgaWYgeW91ciBvcmlnaW5hbCBwYXlsb2FkIGxvb2tzIGxpa2UgdGhpczoKLQotICAg
IGBgYGpzCi0gICAgewotICAgICAgInBvc3QiOiB7Ci0gICAgICAgICJpZCI6IDEsCi0gICAgICAg
ICJ0aXRsZSI6ICJSYWlscyBpcyBvbWFrYXNlIiwKLSAgICAgICAgImxpbmtzIjogeyAiY29tbWVu
dHMiOiAiL3Bvc3RzLzEvY29tbWVudHMiIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgYGBgCi0KLSAg
ICBUaGlzIG1ldGhvZCB3aWxsIGJlIGNhbGxlZCB3aXRoIHRoZSBwYXJlbnQgcmVjb3JkIGFuZCBg
L3Bvc3RzLzEvY29tbWVudHNgLgotCi0gICAgVGhlIGBmaW5kSGFzTWFueWAgbWV0aG9kIHdpbGwg
bWFrZSBhbiBBamF4IChIVFRQIEdFVCkgcmVxdWVzdCB0byB0aGUgb3JpZ2luYWxseSBzcGVjaWZp
ZWQgVVJMLgotICAgIElmIHRoZSBVUkwgaXMgaG9zdC1yZWxhdGl2ZSAoc3RhcnRpbmcgd2l0aCBh
IHNpbmdsZSBzbGFzaCksIHRoZQotICAgIHJlcXVlc3Qgd2lsbCB1c2UgdGhlIGhvc3Qgc3BlY2lm
aWVkIG9uIHRoZSBhZGFwdGVyIChpZiBhbnkpLgotCi0gICAgQG1ldGhvZCBmaW5kSGFzTWFueQot
ICAgIEBwYXJhbSB7RFMuU3RvcmV9IHN0b3JlCi0gICAgQHBhcmFtIHtEUy5Nb2RlbH0gcmVjb3Jk
Ci0gICAgQHBhcmFtIHtTdHJpbmd9IHVybAotICAgIEByZXR1cm5zIHtQcm9taXNlfSBwcm9taXNl
Ci0gICovCi0gIGZpbmRIYXNNYW55OiBmdW5jdGlvbihzdG9yZSwgcmVjb3JkLCB1cmwpIHsKLSAg
ICB2YXIgaG9zdCA9IGdldCh0aGlzLCAnaG9zdCcpLAotICAgICAgICBpZCAgID0gZ2V0KHJlY29y
ZCwgJ2lkJyksCi0gICAgICAgIHR5cGUgPSByZWNvcmQuY29uc3RydWN0b3IudHlwZUtleTsKLQot
ICAgIGlmIChob3N0ICYmIHVybC5jaGFyQXQoMCkgPT09ICcvJyAmJiB1cmwuY2hhckF0KDEpICE9
PSAnLycpIHsKLSAgICAgIHVybCA9IGhvc3QgKyB1cmw7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRo
aXMuYWpheCh0aGlzLnVybFByZWZpeCh1cmwsIHRoaXMuYnVpbGRVUkwodHlwZSwgaWQpKSwgJ0dF
VCcpOwotICB9LAotCi0gIC8qKgotICAgIENhbGxlZCBieSB0aGUgc3RvcmUgaW4gb3JkZXIgdG8g
ZmV0Y2ggYSBKU09OIGFycmF5IGZvcgotICAgIHRoZSB1bmxvYWRlZCByZWNvcmRzIGluIGEgYmVs
b25ncy10byByZWxhdGlvbnNoaXAgdGhhdCB3ZXJlIG9yaWdpbmFsbHkKLSAgICBzcGVjaWZpZWQg
YXMgYSBVUkwgKGluc2lkZSBvZiBgbGlua3NgKS4KLQotICAgIEZvciBleGFtcGxlLCBpZiB5b3Vy
IG9yaWdpbmFsIHBheWxvYWQgbG9va3MgbGlrZSB0aGlzOgotCi0gICAgYGBganMKLSAgICB7Ci0g
ICAgICAicGVyc29uIjogewotICAgICAgICAiaWQiOiAxLAotICAgICAgICAibmFtZSI6ICJUb20g
RGFsZSIsCi0gICAgICAgICJsaW5rcyI6IHsgImdyb3VwIjogIi9wZW9wbGUvMS9ncm91cCIgfQot
ICAgICAgfQotICAgIH0KLSAgICBgYGAKLQotICAgIFRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVk
IHdpdGggdGhlIHBhcmVudCByZWNvcmQgYW5kIGAvcGVvcGxlLzEvZ3JvdXBgLgotCi0gICAgVGhl
IGBmaW5kQmVsb25nc1RvYCBtZXRob2Qgd2lsbCBtYWtlIGFuIEFqYXggKEhUVFAgR0VUKSByZXF1
ZXN0IHRvIHRoZSBvcmlnaW5hbGx5IHNwZWNpZmllZCBVUkwuCi0KLSAgICBAbWV0aG9kIGZpbmRC
ZWxvbmdzVG8KLSAgICBAcGFyYW0ge0RTLlN0b3JlfSBzdG9yZQotICAgIEBwYXJhbSB7RFMuTW9k
ZWx9IHJlY29yZAotICAgIEBwYXJhbSB7U3RyaW5nfSB1cmwKLSAgICBAcmV0dXJucyB7UHJvbWlz
ZX0gcHJvbWlzZQotICAqLwotICBmaW5kQmVsb25nc1RvOiBmdW5jdGlvbihzdG9yZSwgcmVjb3Jk
LCB1cmwpIHsKLSAgICB2YXIgaWQgICA9IGdldChyZWNvcmQsICdpZCcpLAotICAgICAgICB0eXBl
ID0gcmVjb3JkLmNvbnN0cnVjdG9yLnR5cGVLZXk7Ci0KLSAgICByZXR1cm4gdGhpcy5hamF4KHRo
aXMudXJsUHJlZml4KHVybCwgdGhpcy5idWlsZFVSTCh0eXBlLCBpZCkpLCAnR0VUJyk7Ci0gIH0s
Ci0KLSAgLyoqCi0gICAgQ2FsbGVkIGJ5IHRoZSBzdG9yZSB3aGVuIGEgbmV3bHkgY3JlYXRlZCBy
ZWNvcmQgaXMKLSAgICBzYXZlZCB2aWEgdGhlIGBzYXZlYCBtZXRob2Qgb24gYSBtb2RlbCByZWNv
cmQgaW5zdGFuY2UuCi0KLSAgICBUaGUgYGNyZWF0ZVJlY29yZGAgbWV0aG9kIHNlcmlhbGl6ZXMg
dGhlIHJlY29yZCBhbmQgbWFrZXMgYW4gQWpheCAoSFRUUCBQT1NUKSByZXF1ZXN0Ci0gICAgdG8g
YSBVUkwgY29tcHV0ZWQgYnkgYGJ1aWxkVVJMYC4KLQotICAgIFNlZSBgc2VyaWFsaXplYCBmb3Ig
aW5mb3JtYXRpb24gb24gaG93IHRvIGN1c3RvbWl6ZSB0aGUgc2VyaWFsaXplZCBmb3JtCi0gICAg
b2YgYSByZWNvcmQuCi0KLSAgICBAbWV0aG9kIGNyZWF0ZVJlY29yZAotICAgIEBwYXJhbSB7RFMu
U3RvcmV9IHN0b3JlCi0gICAgQHBhcmFtIHtzdWJjbGFzcyBvZiBEUy5Nb2RlbH0gdHlwZQotICAg
IEBwYXJhbSB7RFMuTW9kZWx9IHJlY29yZAotICAgIEByZXR1cm5zIHtQcm9taXNlfSBwcm9taXNl
Ci0gICovCi0gIGNyZWF0ZVJlY29yZDogZnVuY3Rpb24oc3RvcmUsIHR5cGUsIHJlY29yZCkgewot
ICAgIHZhciBkYXRhID0ge307Ci0gICAgdmFyIHNlcmlhbGl6ZXIgPSBzdG9yZS5zZXJpYWxpemVy
Rm9yKHR5cGUudHlwZUtleSk7Ci0KLSAgICBzZXJpYWxpemVyLnNlcmlhbGl6ZUludG9IYXNoKGRh
dGEsIHR5cGUsIHJlY29yZCwgeyBpbmNsdWRlSWQ6IHRydWUgfSk7Ci0KLSAgICByZXR1cm4gdGhp
cy5hamF4KHRoaXMuYnVpbGRVUkwodHlwZS50eXBlS2V5KSwgIlBPU1QiLCB7IGRhdGE6IGRhdGEg
fSk7Ci0gIH0sCi0KLSAgLyoqCi0gICAgQ2FsbGVkIGJ5IHRoZSBzdG9yZSB3aGVuIGFuIGV4aXN0
aW5nIHJlY29yZCBpcyBzYXZlZAotICAgIHZpYSB0aGUgYHNhdmVgIG1ldGhvZCBvbiBhIG1vZGVs
IHJlY29yZCBpbnN0YW5jZS4KLQotICAgIFRoZSBgdXBkYXRlUmVjb3JkYCBtZXRob2Qgc2VyaWFs
aXplcyB0aGUgcmVjb3JkIGFuZCBtYWtlcyBhbiBBamF4IChIVFRQIFBVVCkgcmVxdWVzdAotICAg
IHRvIGEgVVJMIGNvbXB1dGVkIGJ5IGBidWlsZFVSTGAuCi0KLSAgICBTZWUgYHNlcmlhbGl6ZWAg
Zm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBjdXN0b21pemUgdGhlIHNlcmlhbGl6ZWQgZm9ybQot
ICAgIG9mIGEgcmVjb3JkLgotCi0gICAgQG1ldGhvZCB1cGRhdGVSZWNvcmQKLSAgICBAcGFyYW0g
e0RTLlN0b3JlfSBzdG9yZQotICAgIEBwYXJhbSB7c3ViY2xhc3Mgb2YgRFMuTW9kZWx9IHR5cGUK
LSAgICBAcGFyYW0ge0RTLk1vZGVsfSByZWNvcmQKLSAgICBAcmV0dXJucyB7UHJvbWlzZX0gcHJv
bWlzZQotICAqLwotICB1cGRhdGVSZWNvcmQ6IGZ1bmN0aW9uKHN0b3JlLCB0eXBlLCByZWNvcmQp
IHsKLSAgICB2YXIgZGF0YSA9IHt9OwotICAgIHZhciBzZXJpYWxpemVyID0gc3RvcmUuc2VyaWFs
aXplckZvcih0eXBlLnR5cGVLZXkpOwotCi0gICAgc2VyaWFsaXplci5zZXJpYWxpemVJbnRvSGFz
aChkYXRhLCB0eXBlLCByZWNvcmQpOwotCi0gICAgdmFyIGlkID0gZ2V0KHJlY29yZCwgJ2lkJyk7
Ci0KLSAgICByZXR1cm4gdGhpcy5hamF4KHRoaXMuYnVpbGRVUkwodHlwZS50eXBlS2V5LCBpZCks
ICJQVVQiLCB7IGRhdGE6IGRhdGEgfSk7Ci0gIH0sCi0KLSAgLyoqCi0gICAgQ2FsbGVkIGJ5IHRo
ZSBzdG9yZSB3aGVuIGEgcmVjb3JkIGlzIGRlbGV0ZWQuCi0KLSAgICBUaGUgYGRlbGV0ZVJlY29y
ZGAgbWV0aG9kICBtYWtlcyBhbiBBamF4IChIVFRQIERFTEVURSkgcmVxdWVzdCB0byBhIFVSTCBj
b21wdXRlZCBieSBgYnVpbGRVUkxgLgotCi0gICAgQG1ldGhvZCBkZWxldGVSZWNvcmQKLSAgICBA
cGFyYW0ge0RTLlN0b3JlfSBzdG9yZQotICAgIEBwYXJhbSB7c3ViY2xhc3Mgb2YgRFMuTW9kZWx9
IHR5cGUKLSAgICBAcGFyYW0ge0RTLk1vZGVsfSByZWNvcmQKLSAgICBAcmV0dXJucyB7UHJvbWlz
ZX0gcHJvbWlzZQotICAqLwotICBkZWxldGVSZWNvcmQ6IGZ1bmN0aW9uKHN0b3JlLCB0eXBlLCBy
ZWNvcmQpIHsKLSAgICB2YXIgaWQgPSBnZXQocmVjb3JkLCAnaWQnKTsKLQotICAgIHJldHVybiB0
aGlzLmFqYXgodGhpcy5idWlsZFVSTCh0eXBlLnR5cGVLZXksIGlkKSwgIkRFTEVURSIpOwotICB9
LAotCi0gIC8qKgotICAgIEJ1aWxkcyBhIFVSTCBmb3IgYSBnaXZlbiB0eXBlIGFuZCBvcHRpb25h
bCBJRC4KLQotICAgIEJ5IGRlZmF1bHQsIGl0IHBsdXJhbGl6ZXMgdGhlIHR5cGUncyBuYW1lIChm
b3IgZXhhbXBsZSwgJ3Bvc3QnCi0gICAgYmVjb21lcyAncG9zdHMnIGFuZCAncGVyc29uJyBiZWNv
bWVzICdwZW9wbGUnKS4gVG8gb3ZlcnJpZGUgdGhlCi0gICAgcGx1cmFsaXphdGlvbiBzZWUgW3Bh
dGhGb3JUeXBlXSgjbWV0aG9kX3BhdGhGb3JUeXBlKS4KLQotICAgIElmIGFuIElEIGlzIHNwZWNp
ZmllZCwgaXQgYWRkcyB0aGUgSUQgdG8gdGhlIHBhdGggZ2VuZXJhdGVkCi0gICAgZm9yIHRoZSB0
eXBlLCBzZXBhcmF0ZWQgYnkgYSBgL2AuCi0KLSAgICBAbWV0aG9kIGJ1aWxkVVJMCi0gICAgQHBh
cmFtIHtTdHJpbmd9IHR5cGUKLSAgICBAcGFyYW0ge1N0cmluZ30gaWQKLSAgICBAcmV0dXJucyB7
U3RyaW5nfSB1cmwKLSAgKi8KLSAgYnVpbGRVUkw6IGZ1bmN0aW9uKHR5cGUsIGlkKSB7Ci0gICAg
dmFyIHVybCA9IFtdLAotICAgICAgICBob3N0ID0gZ2V0KHRoaXMsICdob3N0JyksCi0gICAgICAg
IHByZWZpeCA9IHRoaXMudXJsUHJlZml4KCk7Ci0KLSAgICBpZiAodHlwZSkgeyB1cmwucHVzaCh0
aGlzLnBhdGhGb3JUeXBlKHR5cGUpKTsgfQotICAgIGlmIChpZCkgeyB1cmwucHVzaChpZCk7IH0K
LQotICAgIGlmIChwcmVmaXgpIHsgdXJsLnVuc2hpZnQocHJlZml4KTsgfQotCi0gICAgdXJsID0g
dXJsLmpvaW4oJy8nKTsKLSAgICBpZiAoIWhvc3QgJiYgdXJsKSB7IHVybCA9ICcvJyArIHVybDsg
fQotCi0gICAgcmV0dXJuIHVybDsKLSAgfSwKLQotICAvKioKLSAgICBAbWV0aG9kIHVybFByZWZp
eAotICAgIEBwcml2YXRlCi0gICAgQHBhcmFtIHtTdHJpbmd9IHBhdGgKLSAgICBAcGFyYW0ge1N0
cmluZ30gcGFyZW50VXJsCi0gICAgQHJldHVybiB7U3RyaW5nfSB1cmxQcmVmaXgKLSAgKi8KLSAg
dXJsUHJlZml4OiBmdW5jdGlvbihwYXRoLCBwYXJlbnRVUkwpIHsKLSAgICB2YXIgaG9zdCA9IGdl
dCh0aGlzLCAnaG9zdCcpLAotICAgICAgICBuYW1lc3BhY2UgPSBnZXQodGhpcywgJ25hbWVzcGFj
ZScpLAotICAgICAgICB1cmwgPSBbXTsKLQotICAgIGlmIChwYXRoKSB7Ci0gICAgICAvLyBBYnNv
bHV0ZSBwYXRoCi0gICAgICBpZiAocGF0aC5jaGFyQXQoMCkgPT09ICcvJykgewotICAgICAgICBp
ZiAoaG9zdCkgewotICAgICAgICAgIHBhdGggPSBwYXRoLnNsaWNlKDEpOwotICAgICAgICAgIHVy
bC5wdXNoKGhvc3QpOwotICAgICAgICB9Ci0gICAgICAvLyBSZWxhdGl2ZSBwYXRoCi0gICAgICB9
IGVsc2UgaWYgKCEvXmh0dHAocyk/OlwvXC8vLnRlc3QocGF0aCkpIHsKLSAgICAgICAgdXJsLnB1
c2gocGFyZW50VVJMKTsKLSAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgaWYgKGhvc3QpIHsg
dXJsLnB1c2goaG9zdCk7IH0KLSAgICAgIGlmIChuYW1lc3BhY2UpIHsgdXJsLnB1c2gobmFtZXNw
YWNlKTsgfQotICAgIH0KLQotICAgIGlmIChwYXRoKSB7Ci0gICAgICB1cmwucHVzaChwYXRoKTsK
LSAgICB9Ci0KLSAgICByZXR1cm4gdXJsLmpvaW4oJy8nKTsKLSAgfSwKLQotICAvKioKLSAgICBE
ZXRlcm1pbmVzIHRoZSBwYXRobmFtZSBmb3IgYSBnaXZlbiB0eXBlLgotCi0gICAgQnkgZGVmYXVs
dCwgaXQgcGx1cmFsaXplcyB0aGUgdHlwZSdzIG5hbWUgKGZvciBleGFtcGxlLAotICAgICdwb3N0
JyBiZWNvbWVzICdwb3N0cycgYW5kICdwZXJzb24nIGJlY29tZXMgJ3Blb3BsZScpLgotCi0gICAg
IyMjIFBhdGhuYW1lIGN1c3RvbWl6YXRpb24KLQotICAgIEZvciBleGFtcGxlIGlmIHlvdSBoYXZl
IGFuIG9iamVjdCBMaW5lSXRlbSB3aXRoIGFuCi0gICAgZW5kcG9pbnQgb2YgIi9saW5lX2l0ZW1z
LyIuCi0KLSAgICBgYGBqcwotICAgIERTLlJFU1RBZGFwdGVyLnJlb3Blbih7Ci0gICAgICBwYXRo
Rm9yVHlwZTogZnVuY3Rpb24odHlwZSkgewotICAgICAgICB2YXIgZGVjYW1lbGl6ZWQgPSBFbWJl
ci5TdHJpbmcuZGVjYW1lbGl6ZSh0eXBlKTsKLSAgICAgICAgcmV0dXJuIEVtYmVyLlN0cmluZy5w
bHVyYWxpemUoZGVjYW1lbGl6ZWQpOwotICAgICAgfTsKLSAgICB9KTsKLSAgICBgYGAKLQotICAg
IEBtZXRob2QgcGF0aEZvclR5cGUKLSAgICBAcGFyYW0ge1N0cmluZ30gdHlwZQotICAgIEByZXR1
cm5zIHtTdHJpbmd9IHBhdGgKLSAgKiovCi0gIHBhdGhGb3JUeXBlOiBmdW5jdGlvbih0eXBlKSB7
Ci0gICAgdmFyIGNhbWVsaXplZCA9IEVtYmVyLlN0cmluZy5jYW1lbGl6ZSh0eXBlKTsKLSAgICBy
ZXR1cm4gRW1iZXIuU3RyaW5nLnBsdXJhbGl6ZShjYW1lbGl6ZWQpOwotICB9LAotCi0gIC8qKgot
ICAgIFRha2VzIGFuIGFqYXggcmVzcG9uc2UsIGFuZCByZXR1cm5zIGEgcmVsZXZhbnQgZXJyb3Iu
Ci0KLSAgICBSZXR1cm5pbmcgYSBgRFMuSW52YWxpZEVycm9yYCBmcm9tIHRoaXMgbWV0aG9kIHdp
bGwgY2F1c2UgdGhlCi0gICAgcmVjb3JkIHRvIHRyYW5zaXRpb24gaW50byB0aGUgYGludmFsaWRg
IHN0YXRlIGFuZCBtYWtlIHRoZQotICAgIGBlcnJvcnNgIG9iamVjdCBhdmFpbGFibGUgb24gdGhl
IHJlY29yZC4KLQotICAgIGBgYGphdmFzY3JpcHQKLSAgICBBcHAuQXBwbGljYXRpb25BZGFwdGVy
ID0gRFMuUkVTVEFkYXB0ZXIuZXh0ZW5kKHsKLSAgICAgIGFqYXhFcnJvcjogZnVuY3Rpb24oanFY
SFIpIHsKLSAgICAgICAgdmFyIGVycm9yID0gdGhpcy5fc3VwZXIoanFYSFIpOwotCi0gICAgICAg
IGlmIChqcVhIUiAmJiBqcVhIUi5zdGF0dXMgPT09IDQyMikgewotICAgICAgICAgIHZhciBqc29u
RXJyb3JzID0gRW1iZXIuJC5wYXJzZUpTT04oanFYSFIucmVzcG9uc2VUZXh0KVsiZXJyb3JzIl07
Ci0KLSAgICAgICAgICByZXR1cm4gbmV3IERTLkludmFsaWRFcnJvcihqc29uRXJyb3JzKTsKLSAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgIH0KLSAgICAg
IH0KLSAgICB9KTsKLSAgICBgYGAKLQotICAgIE5vdGU6IEFzIGEgY29ycmVjdG5lc3Mgb3B0aW1p
emF0aW9uLCB0aGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBvZgotICAgIHRoZSBgYWpheEVycm9y
YCBtZXRob2Qgc3RyaXBzIG91dCB0aGUgYHRoZW5gIG1ldGhvZCBmcm9tIGpxdWVyeSdzCi0gICAg
YWpheCByZXNwb25zZSAoanFYSFIpLiBUaGlzIGlzIGltcG9ydGFudCBiZWNhdXNlIHRoZSBqcVhI
UidzCi0gICAgYHRoZW5gIG1ldGhvZCBmdWxmaWxscyB0aGUgcHJvbWlzZSB3aXRoIGl0c2VsZiBy
ZXN1bHRpbmcgaW4gYQotICAgIGNpcmN1bGFyICJ0aGVuYWJsZSIgY2hhaW4gd2hpY2ggbWF5IGNh
dXNlIHByb2JsZW1zIGZvciBzb21lCi0gICAgcHJvbWlzZSBsaWJyYXJpZXMuCi0KLSAgICBAbWV0
aG9kIGFqYXhFcnJvcgotICAgIEBwYXJhbSAge09iamVjdH0ganFYSFIKLSAgICBAcmV0dXJuIHtP
YmplY3R9IGpxWEhSCi0gICovCi0gIGFqYXhFcnJvcjogZnVuY3Rpb24oanFYSFIpIHsKLSAgICBp
ZiAoanFYSFIpIHsKLSAgICAgIGpxWEhSLnRoZW4gPSBudWxsOwotICAgIH0KLQotICAgIHJldHVy
biBqcVhIUjsKLSAgfSwKLQotICAvKioKLSAgICBUYWtlcyBhIFVSTCwgYW4gSFRUUCBtZXRob2Qg
YW5kIGEgaGFzaCBvZiBkYXRhLCBhbmQgbWFrZXMgYW4KLSAgICBIVFRQIHJlcXVlc3QuCi0KLSAg
ICBXaGVuIHRoZSBzZXJ2ZXIgcmVzcG9uZHMgd2l0aCBhIHBheWxvYWQsIEVtYmVyIERhdGEgd2ls
bCBjYWxsIGludG8gYGV4dHJhY3RTaW5nbGVgCi0gICAgb3IgYGV4dHJhY3RBcnJheWAgKGRlcGVu
ZGluZyBvbiB3aGV0aGVyIHRoZSBvcmlnaW5hbCBxdWVyeSB3YXMgZm9yIG9uZSByZWNvcmQgb3IK
LSAgICBtYW55IHJlY29yZHMpLgotCi0gICAgQnkgZGVmYXVsdCwgYGFqYXhgIG1ldGhvZCBoYXMg
dGhlIGZvbGxvd2luZyBiZWhhdmlvcjoKLQotICAgICogSXQgc2V0cyB0aGUgcmVzcG9uc2UgYGRh
dGFUeXBlYCB0byBgImpzb24iYAotICAgICogSWYgdGhlIEhUVFAgbWV0aG9kIGlzIG5vdCBgIkdF
VCJgLCBpdCBzZXRzIHRoZSBgQ29udGVudC1UeXBlYCB0byBiZQotICAgICAgYGFwcGxpY2F0aW9u
L2pzb247IGNoYXJzZXQ9dXRmLThgCi0gICAgKiBJZiB0aGUgSFRUUCBtZXRob2QgaXMgbm90IGAi
R0VUImAsIGl0IHN0cmluZ2lmaWVzIHRoZSBkYXRhIHBhc3NlZCBpbi4gVGhlCi0gICAgICBkYXRh
IGlzIHRoZSBzZXJpYWxpemVkIHJlY29yZCBpbiB0aGUgY2FzZSBvZiBhIHNhdmUuCi0gICAgKiBS
ZWdpc3RlcnMgc3VjY2VzcyBhbmQgZmFpbHVyZSBoYW5kbGVycy4KLQotICAgIEBtZXRob2QgYWph
eAotICAgIEBwcml2YXRlCi0gICAgQHBhcmFtIHtTdHJpbmd9IHVybAotICAgIEBwYXJhbSB7U3Ry
aW5nfSB0eXBlIFRoZSByZXF1ZXN0IHR5cGUgR0VULCBQT1NULCBQVVQsIERFTEVURSBldGMuCi0g
ICAgQHBhcmFtIHtPYmplY3R9IGhhc2gKLSAgICBAcmV0dXJuIHtQcm9taXNlfSBwcm9taXNlCi0g
ICovCi0gIGFqYXg6IGZ1bmN0aW9uKHVybCwgdHlwZSwgaGFzaCkgewotICAgIHZhciBhZGFwdGVy
ID0gdGhpczsKLQotICAgIHJldHVybiBuZXcgRW1iZXIuUlNWUC5Qcm9taXNlKGZ1bmN0aW9uKHJl
c29sdmUsIHJlamVjdCkgewotICAgICAgaGFzaCA9IGFkYXB0ZXIuYWpheE9wdGlvbnModXJsLCB0
eXBlLCBoYXNoKTsKLQotICAgICAgaGFzaC5zdWNjZXNzID0gZnVuY3Rpb24oanNvbikgewotICAg
ICAgICBFbWJlci5ydW4obnVsbCwgcmVzb2x2ZSwganNvbik7Ci0gICAgICB9OwotCi0gICAgICBo
YXNoLmVycm9yID0gZnVuY3Rpb24oanFYSFIsIHRleHRTdGF0dXMsIGVycm9yVGhyb3duKSB7Ci0g
ICAgICAgIEVtYmVyLnJ1bihudWxsLCByZWplY3QsIGFkYXB0ZXIuYWpheEVycm9yKGpxWEhSKSk7
Ci0gICAgICB9OwotCi0gICAgICBFbWJlci4kLmFqYXgoaGFzaCk7Ci0gICAgfSwgIkRTOiBSZXN0
QWRhcHRlciNhamF4ICIgKyB0eXBlICsgIiB0byAiICsgdXJsKTsKLSAgfSwKLQotICAvKioKLSAg
ICBAbWV0aG9kIGFqYXhPcHRpb25zCi0gICAgQHByaXZhdGUKLSAgICBAcGFyYW0ge1N0cmluZ30g
dXJsCi0gICAgQHBhcmFtIHtTdHJpbmd9IHR5cGUgVGhlIHJlcXVlc3QgdHlwZSBHRVQsIFBPU1Qs
IFBVVCwgREVMRVRFIGV0Yy4KLSAgICBAcGFyYW0ge09iamVjdH0gaGFzaAotICAgIEByZXR1cm4g
e09iamVjdH0gaGFzaAotICAqLwotICBhamF4T3B0aW9uczogZnVuY3Rpb24odXJsLCB0eXBlLCBo
YXNoKSB7Ci0gICAgaGFzaCA9IGhhc2ggfHwge307Ci0gICAgaGFzaC51cmwgPSB1cmw7Ci0gICAg
aGFzaC50eXBlID0gdHlwZTsKLSAgICBoYXNoLmRhdGFUeXBlID0gJ2pzb24nOwotICAgIGhhc2gu
Y29udGV4dCA9IHRoaXM7Ci0KLSAgICBpZiAoaGFzaC5kYXRhICYmIHR5cGUgIT09ICdHRVQnKSB7
Ci0gICAgICBoYXNoLmNvbnRlbnRUeXBlID0gJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9dXRm
LTgnOwotICAgICAgaGFzaC5kYXRhID0gSlNPTi5zdHJpbmdpZnkoaGFzaC5kYXRhKTsKLSAgICB9
Ci0KLSAgICBpZiAodGhpcy5oZWFkZXJzICE9PSB1bmRlZmluZWQpIHsKLSAgICAgIHZhciBoZWFk
ZXJzID0gdGhpcy5oZWFkZXJzOwotICAgICAgaGFzaC5iZWZvcmVTZW5kID0gZnVuY3Rpb24gKHho
cikgewotICAgICAgICBmb3JFYWNoLmNhbGwoRW1iZXIua2V5cyhoZWFkZXJzKSwgZnVuY3Rpb24o
a2V5KSB7Ci0gICAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoa2V5LCBoZWFkZXJzW2tleV0p
OwotICAgICAgICB9KTsKLSAgICAgIH07Ci0gICAgfQotCi0KLSAgICByZXR1cm4gaGFzaDsKLSAg
fQotCi19KTsKLQotfSkoKTsKLQotCi0KLShmdW5jdGlvbigpIHsKLS8qKgotICBAbW9kdWxlIGVt
YmVyLWRhdGEKLSovCi0KLX0pKCk7Ci0KLQotCi0oZnVuY3Rpb24oKSB7Ci1EUy5Nb2RlbC5yZW9w
ZW4oewotCi0gIC8qKgotICAgIFByb3ZpZGVzIGluZm8gYWJvdXQgdGhlIG1vZGVsIGZvciBkZWJ1
Z2dpbmcgcHVycG9zZXMKLSAgICBieSBncm91cGluZyB0aGUgcHJvcGVydGllcyBpbnRvIG1vcmUg
c2VtYW50aWMgZ3JvdXBzLgotCi0gICAgTWVhbnQgdG8gYmUgdXNlZCBieSBkZWJ1Z2dpbmcgdG9v
bHMgc3VjaCBhcyB0aGUgQ2hyb21lIEVtYmVyIEV4dGVuc2lvbi4KLQotICAgIC0gR3JvdXBzIGFs
bCBhdHRyaWJ1dGVzIGluICJBdHRyaWJ1dGVzIiBncm91cC4KLSAgICAtIEdyb3VwcyBhbGwgYmVs
b25nc1RvIHJlbGF0aW9uc2hpcHMgaW4gIkJlbG9uZ3MgVG8iIGdyb3VwLgotICAgIC0gR3JvdXBz
IGFsbCBoYXNNYW55IHJlbGF0aW9uc2hpcHMgaW4gIkhhcyBNYW55IiBncm91cC4KLSAgICAtIEdy
b3VwcyBhbGwgZmxhZ3MgaW4gIkZsYWdzIiBncm91cC4KLSAgICAtIEZsYWdzIHJlbGF0aW9uc2hp
cCBDUHMgYXMgZXhwZW5zaXZlIHByb3BlcnRpZXMuCi0KLSAgICBAbWV0aG9kIF9kZWJ1Z0luZm8K
LSAgICBAZm9yIERTLk1vZGVsCi0gICAgQHByaXZhdGUKLSAgKi8KLSAgX2RlYnVnSW5mbzogZnVu
Y3Rpb24oKSB7Ci0gICAgdmFyIGF0dHJpYnV0ZXMgPSBbJ2lkJ10sCi0gICAgICAgIHJlbGF0aW9u
c2hpcHMgPSB7IGJlbG9uZ3NUbzogW10sIGhhc01hbnk6IFtdIH0sCi0gICAgICAgIGV4cGVuc2l2
ZVByb3BlcnRpZXMgPSBbXTsKLQotICAgIHRoaXMuZWFjaEF0dHJpYnV0ZShmdW5jdGlvbihuYW1l
LCBtZXRhKSB7Ci0gICAgICBhdHRyaWJ1dGVzLnB1c2gobmFtZSk7Ci0gICAgfSwgdGhpcyk7Ci0K
LSAgICB0aGlzLmVhY2hSZWxhdGlvbnNoaXAoZnVuY3Rpb24obmFtZSwgcmVsYXRpb25zaGlwKSB7
Ci0gICAgICByZWxhdGlvbnNoaXBzW3JlbGF0aW9uc2hpcC5raW5kXS5wdXNoKG5hbWUpOwotICAg
ICAgZXhwZW5zaXZlUHJvcGVydGllcy5wdXNoKG5hbWUpOwotICAgIH0pOwotCi0gICAgdmFyIGdy
b3VwcyA9IFsKLSAgICAgIHsKLSAgICAgICAgbmFtZTogJ0F0dHJpYnV0ZXMnLAotICAgICAgICBw
cm9wZXJ0aWVzOiBhdHRyaWJ1dGVzLAotICAgICAgICBleHBhbmQ6IHRydWUKLSAgICAgIH0sCi0g
ICAgICB7Ci0gICAgICAgIG5hbWU6ICdCZWxvbmdzIFRvJywKLSAgICAgICAgcHJvcGVydGllczog
cmVsYXRpb25zaGlwcy5iZWxvbmdzVG8sCi0gICAgICAgIGV4cGFuZDogdHJ1ZQotICAgICAgfSwK
LSAgICAgIHsKLSAgICAgICAgbmFtZTogJ0hhcyBNYW55JywKLSAgICAgICAgcHJvcGVydGllczog
cmVsYXRpb25zaGlwcy5oYXNNYW55LAotICAgICAgICBleHBhbmQ6IHRydWUKLSAgICAgIH0sCi0g
ICAgICB7Ci0gICAgICAgIG5hbWU6ICdGbGFncycsCi0gICAgICAgIHByb3BlcnRpZXM6IFsnaXNM
b2FkZWQnLCAnaXNEaXJ0eScsICdpc1NhdmluZycsICdpc0RlbGV0ZWQnLCAnaXNFcnJvcicsICdp
c05ldycsICdpc1ZhbGlkJ10KLSAgICAgIH0KLSAgICBdOwotCi0gICAgcmV0dXJuIHsKLSAgICAg
IHByb3BlcnR5SW5mbzogewotICAgICAgICAvLyBpbmNsdWRlIGFsbCBvdGhlciBtaXhpbnMgLyBw
cm9wZXJ0aWVzIChub3QganVzdCB0aGUgZ3JvdXBlZCBvbmVzKQotICAgICAgICBpbmNsdWRlT3Ro
ZXJQcm9wZXJ0aWVzOiB0cnVlLAotICAgICAgICBncm91cHM6IGdyb3VwcywKLSAgICAgICAgLy8g
ZG9uJ3QgcHJlLWNhbGN1bGF0ZSB1bmxlc3MgY2FjaGVkCi0gICAgICAgIGV4cGVuc2l2ZVByb3Bl
cnRpZXM6IGV4cGVuc2l2ZVByb3BlcnRpZXMKLSAgICAgIH0KLSAgICB9OwotICB9Ci0KLX0pOwot
Ci19KSgpOwotCi0KLQotKGZ1bmN0aW9uKCkgewotLyoqCi0gIEBtb2R1bGUgZW1iZXItZGF0YQot
Ki8KLQotfSkoKTsKLQotCi0KLShmdW5jdGlvbigpIHsKLS8qKgotICBFbWJlciBEYXRhCi0KLSAg
QG1vZHVsZSBlbWJlci1kYXRhCi0gIEBtYWluIGVtYmVyLWRhdGEKLSovCi0KLX0pKCk7Ci0KLShm
dW5jdGlvbigpIHsKLUVtYmVyLlN0cmluZy5wbHVyYWxpemUgPSBmdW5jdGlvbih3b3JkKSB7Ci0g
IHJldHVybiBFbWJlci5JbmZsZWN0b3IuaW5mbGVjdG9yLnBsdXJhbGl6ZSh3b3JkKTsKLX07Ci0K
LUVtYmVyLlN0cmluZy5zaW5ndWxhcml6ZSA9IGZ1bmN0aW9uKHdvcmQpIHsKLSAgcmV0dXJuIEVt
YmVyLkluZmxlY3Rvci5pbmZsZWN0b3Iuc2luZ3VsYXJpemUod29yZCk7Ci19OwotCi19KSgpOwot
Ci0KLQotKGZ1bmN0aW9uKCkgewotdmFyIEJMQU5LX1JFR0VYID0gL15ccyokLzsKLQotZnVuY3Rp
b24gbG9hZFVuY291bnRhYmxlKHJ1bGVzLCB1bmNvdW50YWJsZSkgewotICBmb3IgKHZhciBpID0g
MCwgbGVuZ3RoID0gdW5jb3VudGFibGUubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICBy
dWxlcy51bmNvdW50YWJsZVt1bmNvdW50YWJsZVtpXS50b0xvd2VyQ2FzZSgpXSA9IHRydWU7Ci0g
IH0KLX0KLQotZnVuY3Rpb24gbG9hZElycmVndWxhcihydWxlcywgaXJyZWd1bGFyUGFpcnMpIHsK
LSAgdmFyIHBhaXI7Ci0KLSAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IGlycmVndWxhclBhaXJz
Lmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7Ci0gICAgcGFpciA9IGlycmVndWxhclBhaXJzW2ld
OwotCi0gICAgcnVsZXMuaXJyZWd1bGFyW3BhaXJbMF0udG9Mb3dlckNhc2UoKV0gPSBwYWlyWzFd
OwotICAgIHJ1bGVzLmlycmVndWxhckludmVyc2VbcGFpclsxXS50b0xvd2VyQ2FzZSgpXSA9IHBh
aXJbMF07Ci0gIH0KLX0KLQotLyoqCi0gIEluZmxlY3Rvci5FbWJlciBwcm92aWRlcyBhIG1lY2hh
bmlzbSBmb3Igc3VwcGx5aW5nIGluZmxlY3Rpb24gcnVsZXMgZm9yIHlvdXIKLSAgYXBwbGljYXRp
b24uIEVtYmVyIGluY2x1ZGVzIGEgZGVmYXVsdCBzZXQgb2YgaW5mbGVjdGlvbiBydWxlcywgYW5k
IHByb3ZpZGVzIGFuCi0gIEFQSSBmb3IgcHJvdmlkaW5nIGFkZGl0aW9uYWwgcnVsZXMuCi0KLSAg
RXhhbXBsZXM6Ci0KLSAgQ3JlYXRpbmcgYW4gaW5mbGVjdG9yIHdpdGggbm8gcnVsZXMuCi0KLSAg
YGBganMKLSAgdmFyIGluZmxlY3RvciA9IG5ldyBFbWJlci5JbmZsZWN0b3IoKTsKLSAgYGBgCi0K
LSAgQ3JlYXRpbmcgYW4gaW5mbGVjdG9yIHdpdGggdGhlIGRlZmF1bHQgZW1iZXIgcnVsZXNldC4K
LQotICBgYGBqcwotICB2YXIgaW5mbGVjdG9yID0gbmV3IEVtYmVyLkluZmxlY3RvcihFbWJlci5J
bmZsZWN0b3IuZGVmYXVsdFJ1bGVzKTsKLQotICBpbmZsZWN0b3IucGx1cmFsaXplKCdjb3cnKSAv
Lz0+ICdraW5lJwotICBpbmZsZWN0b3Iuc2luZ3VsYXJpemUoJ2tpbmUnKSAvLz0+ICdjb3cnCi0g
IGBgYAotCi0gIENyZWF0aW5nIGFuIGluZmxlY3RvciBhbmQgYWRkaW5nIHJ1bGVzIGxhdGVyLgot
Ci0gIGBgYGphdmFzY3JpcHQKLSAgdmFyIGluZmxlY3RvciA9IEVtYmVyLkluZmxlY3Rvci5pbmZs
ZWN0b3I7Ci0KLSAgaW5mbGVjdG9yLnBsdXJhbGl6ZSgnYWR2aWNlJykgLy8gPT4gJ2FkdmljZXMn
Ci0gIGluZmxlY3Rvci51bmNvdW50YWJsZSgnYWR2aWNlJyk7Ci0gIGluZmxlY3Rvci5wbHVyYWxp
emUoJ2FkdmljZScpIC8vID0+ICdhZHZpY2UnCi0KLSAgaW5mbGVjdG9yLnBsdXJhbGl6ZSgnZm9y
bXVsYScpIC8vID0+ICdmb3JtdWxhcycKLSAgaW5mbGVjdG9yLmlycmVndWxhcignZm9ybXVsYScs
ICdmb3JtdWxhZScpOwotICBpbmZsZWN0b3IucGx1cmFsaXplKCdmb3JtdWxhJykgLy8gPT4gJ2Zv
cm11bGFlJwotCi0gIC8vIHlvdSB3b3VsZCBub3QgbmVlZCB0byBhZGQgdGhlc2UgYXMgdGhleSBh
cmUgdGhlIGRlZmF1bHQgcnVsZXMKLSAgaW5mbGVjdG9yLnBsdXJhbCgvJC8sICdzJyk7Ci0gIGlu
ZmxlY3Rvci5zaW5ndWxhcigvcyQvaSwgJycpOwotICBgYGAKLQotICBDcmVhdGluZyBhbiBpbmZs
ZWN0b3Igd2l0aCBhIG5vbmRlZmF1bHQgcnVsZXNldC4KLQotICBgYGBqYXZhc2NyaXB0Ci0gIHZh
ciBydWxlcyA9IHsKLSAgICBwbHVyYWxzOiAgWyAvJC8sICdzJyBdLAotICAgIHNpbmd1bGFyOiBb
IC9ccyQvLCAnJyBdLAotICAgIGlycmVndWxhclBhaXJzOiBbCi0gICAgICBbICdjb3cnLCAna2lu
ZScgXQotICAgIF0sCi0gICAgdW5jb3VudGFibGU6IFsgJ2Zpc2gnIF0KLSAgfTsKLQotICB2YXIg
aW5mbGVjdG9yID0gbmV3IEVtYmVyLkluZmxlY3RvcihydWxlcyk7Ci0gIGBgYAotCi0gIEBjbGFz
cyBJbmZsZWN0b3IKLSAgQG5hbWVzcGFjZSBFbWJlcgotKi8KLWZ1bmN0aW9uIEluZmxlY3Rvcihy
dWxlU2V0KSB7Ci0gIHJ1bGVTZXQgPSBydWxlU2V0IHx8IHt9OwotICBydWxlU2V0LnVuY291bnRh
YmxlID0gcnVsZVNldC51bmNvdW50YWJsZSB8fCB7fTsKLSAgcnVsZVNldC5pcnJlZ3VsYXJQYWly
cyA9IHJ1bGVTZXQuaXJyZWd1bGFyUGFpcnMgfHwge307Ci0KLSAgdmFyIHJ1bGVzID0gdGhpcy5y
dWxlcyA9IHsKLSAgICBwbHVyYWxzOiAgcnVsZVNldC5wbHVyYWxzIHx8IFtdLAotICAgIHNpbmd1
bGFyOiBydWxlU2V0LnNpbmd1bGFyIHx8IFtdLAotICAgIGlycmVndWxhcjoge30sCi0gICAgaXJy
ZWd1bGFySW52ZXJzZToge30sCi0gICAgdW5jb3VudGFibGU6IHt9Ci0gIH07Ci0KLSAgbG9hZFVu
Y291bnRhYmxlKHJ1bGVzLCBydWxlU2V0LnVuY291bnRhYmxlKTsKLSAgbG9hZElycmVndWxhcihy
dWxlcywgcnVsZVNldC5pcnJlZ3VsYXJQYWlycyk7Ci19Ci0KLUluZmxlY3Rvci5wcm90b3R5cGUg
PSB7Ci0gIC8qKgotICAgIEBtZXRob2QgcGx1cmFsCi0gICAgQHBhcmFtIHtSZWdFeHB9IHJlZ2V4
Ci0gICAgQHBhcmFtIHtTdHJpbmd9IHN0cmluZwotICAqLwotICBwbHVyYWw6IGZ1bmN0aW9uKHJl
Z2V4LCBzdHJpbmcpIHsKLSAgICB0aGlzLnJ1bGVzLnBsdXJhbHMucHVzaChbcmVnZXgsIHN0cmlu
Zy50b0xvd2VyQ2FzZSgpXSk7Ci0gIH0sCi0KLSAgLyoqCi0gICAgQG1ldGhvZCBzaW5ndWxhcgot
ICAgIEBwYXJhbSB7UmVnRXhwfSByZWdleAotICAgIEBwYXJhbSB7U3RyaW5nfSBzdHJpbmcKLSAg
Ki8KLSAgc2luZ3VsYXI6IGZ1bmN0aW9uKHJlZ2V4LCBzdHJpbmcpIHsKLSAgICB0aGlzLnJ1bGVz
LnNpbmd1bGFyLnB1c2goW3JlZ2V4LCBzdHJpbmcudG9Mb3dlckNhc2UoKV0pOwotICB9LAotCi0g
IC8qKgotICAgIEBtZXRob2QgdW5jb3VudGFibGUKLSAgICBAcGFyYW0ge1N0cmluZ30gcmVnZXgK
LSAgKi8KLSAgdW5jb3VudGFibGU6IGZ1bmN0aW9uKHN0cmluZykgewotICAgIGxvYWRVbmNvdW50
YWJsZSh0aGlzLnJ1bGVzLCBbc3RyaW5nLnRvTG93ZXJDYXNlKCldKTsKLSAgfSwKLQotICAvKioK
LSAgICBAbWV0aG9kIGlycmVndWxhcgotICAgIEBwYXJhbSB7U3RyaW5nfSBzaW5ndWxhcgotICAg
IEBwYXJhbSB7U3RyaW5nfSBwbHVyYWwKLSAgKi8KLSAgaXJyZWd1bGFyOiBmdW5jdGlvbiAoc2lu
Z3VsYXIsIHBsdXJhbCkgewotICAgIGxvYWRJcnJlZ3VsYXIodGhpcy5ydWxlcywgW1tzaW5ndWxh
ciwgcGx1cmFsXV0pOwotICB9LAotCi0gIC8qKgotICAgIEBtZXRob2QgcGx1cmFsaXplCi0gICAg
QHBhcmFtIHtTdHJpbmd9IHdvcmQKLSAgKi8KLSAgcGx1cmFsaXplOiBmdW5jdGlvbih3b3JkKSB7
Ci0gICAgcmV0dXJuIHRoaXMuaW5mbGVjdCh3b3JkLCB0aGlzLnJ1bGVzLnBsdXJhbHMsIHRoaXMu
cnVsZXMuaXJyZWd1bGFyKTsKLSAgfSwKLQotICAvKioKLSAgICBAbWV0aG9kIHNpbmd1bGFyaXpl
Ci0gICAgQHBhcmFtIHtTdHJpbmd9IHdvcmQKLSAgKi8KLSAgc2luZ3VsYXJpemU6IGZ1bmN0aW9u
KHdvcmQpIHsKLSAgICByZXR1cm4gdGhpcy5pbmZsZWN0KHdvcmQsIHRoaXMucnVsZXMuc2luZ3Vs
YXIsICB0aGlzLnJ1bGVzLmlycmVndWxhckludmVyc2UpOwotICB9LAotCi0gIC8qKgotICAgIEBw
cm90ZWN0ZWQKLQotICAgIEBtZXRob2QgaW5mbGVjdAotICAgIEBwYXJhbSB7U3RyaW5nfSB3b3Jk
Ci0gICAgQHBhcmFtIHtPYmplY3R9IHR5cGVSdWxlcwotICAgIEBwYXJhbSB7T2JqZWN0fSBpcnJl
Z3VsYXIKLSAgKi8KLSAgaW5mbGVjdDogZnVuY3Rpb24od29yZCwgdHlwZVJ1bGVzLCBpcnJlZ3Vs
YXIpIHsKLSAgICB2YXIgaW5mbGVjdGlvbiwgc3Vic3RpdHV0aW9uLCByZXN1bHQsIGxvd2VyY2Fz
ZSwgaXNCbGFuaywKLSAgICBpc1VuY291bnRhYmxlLCBpc0lycmVndWxhciwgaXNJcnJlZ3VsYXJJ
bnZlcnNlLCBydWxlOwotCi0gICAgaXNCbGFuayA9IEJMQU5LX1JFR0VYLnRlc3Qod29yZCk7Ci0K
LSAgICBpZiAoaXNCbGFuaykgewotICAgICAgcmV0dXJuIHdvcmQ7Ci0gICAgfQotCi0gICAgbG93
ZXJjYXNlID0gd29yZC50b0xvd2VyQ2FzZSgpOwotCi0gICAgaXNVbmNvdW50YWJsZSA9IHRoaXMu
cnVsZXMudW5jb3VudGFibGVbbG93ZXJjYXNlXTsKLQotICAgIGlmIChpc1VuY291bnRhYmxlKSB7
Ci0gICAgICByZXR1cm4gd29yZDsKLSAgICB9Ci0KLSAgICBpc0lycmVndWxhciA9IGlycmVndWxh
ciAmJiBpcnJlZ3VsYXJbbG93ZXJjYXNlXTsKLQotICAgIGlmIChpc0lycmVndWxhcikgewotICAg
ICAgcmV0dXJuIGlzSXJyZWd1bGFyOwotICAgIH0KLQotICAgIGZvciAodmFyIGkgPSB0eXBlUnVs
ZXMubGVuZ3RoLCBtaW4gPSAwOyBpID4gbWluOyBpLS0pIHsKLSAgICAgICBpbmZsZWN0aW9uID0g
dHlwZVJ1bGVzW2ktMV07Ci0gICAgICAgcnVsZSA9IGluZmxlY3Rpb25bMF07Ci0KLSAgICAgIGlm
IChydWxlLnRlc3Qod29yZCkpIHsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgfQotCi0g
ICAgaW5mbGVjdGlvbiA9IGluZmxlY3Rpb24gfHwgW107Ci0KLSAgICBydWxlID0gaW5mbGVjdGlv
blswXTsKLSAgICBzdWJzdGl0dXRpb24gPSBpbmZsZWN0aW9uWzFdOwotCi0gICAgcmVzdWx0ID0g
d29yZC5yZXBsYWNlKHJ1bGUsIHN1YnN0aXR1dGlvbik7Ci0KLSAgICByZXR1cm4gcmVzdWx0Owot
ICB9Ci19OwotCi1FbWJlci5JbmZsZWN0b3IgPSBJbmZsZWN0b3I7Ci0KLX0pKCk7Ci0KLQotCi0o
ZnVuY3Rpb24oKSB7Ci1FbWJlci5JbmZsZWN0b3IuZGVmYXVsdFJ1bGVzID0gewotICBwbHVyYWxz
OiBbCi0gICAgWy8kLywgJ3MnXSwKLSAgICBbL3MkL2ksICdzJ10sCi0gICAgWy9eKGF4fHRlc3Qp
aXMkL2ksICckMWVzJ10sCi0gICAgWy8ob2N0b3B8dmlyKXVzJC9pLCAnJDFpJ10sCi0gICAgWy8o
b2N0b3B8dmlyKWkkL2ksICckMWknXSwKLSAgICBbLyhhbGlhc3xzdGF0dXMpJC9pLCAnJDFlcydd
LAotICAgIFsvKGJ1KXMkL2ksICckMXNlcyddLAotICAgIFsvKGJ1ZmZhbHx0b21hdClvJC9pLCAn
JDFvZXMnXSwKLSAgICBbLyhbdGldKXVtJC9pLCAnJDFhJ10sCi0gICAgWy8oW3RpXSlhJC9pLCAn
JDFhJ10sCi0gICAgWy9zaXMkL2ksICdzZXMnXSwKLSAgICBbLyg/OihbXmZdKWZlfChbbHJdKWYp
JC9pLCAnJDEkMnZlcyddLAotICAgIFsvKGhpdmUpJC9pLCAnJDFzJ10sCi0gICAgWy8oW15hZWlv
dXldfHF1KXkkL2ksICckMWllcyddLAotICAgIFsvKHh8Y2h8c3N8c2gpJC9pLCAnJDFlcyddLAot
ICAgIFsvKG1hdHJ8dmVydHxpbmQpKD86aXh8ZXgpJC9pLCAnJDFpY2VzJ10sCi0gICAgWy9eKG18
bClvdXNlJC9pLCAnJDFpY2UnXSwKLSAgICBbL14obXxsKWljZSQvaSwgJyQxaWNlJ10sCi0gICAg
Wy9eKG94KSQvaSwgJyQxZW4nXSwKLSAgICBbL14ob3hlbikkL2ksICckMSddLAotICAgIFsvKHF1
aXopJC9pLCAnJDF6ZXMnXQotICBdLAotCi0gIHNpbmd1bGFyOiBbCi0gICAgWy9zJC9pLCAnJ10s
Ci0gICAgWy8oc3MpJC9pLCAnJDEnXSwKLSAgICBbLyhuKWV3cyQvaSwgJyQxZXdzJ10sCi0gICAg
Wy8oW3RpXSlhJC9pLCAnJDF1bSddLAotICAgIFsvKChhKW5hbHl8KGIpYXwoZClpYWdub3wocClh
cmVudGhlfChwKXJvZ25vfChzKXlub3B8KHQpaGUpKHNpc3xzZXMpJC9pLCAnJDFzaXMnXSwKLSAg
ICBbLyheYW5hbHkpKHNpc3xzZXMpJC9pLCAnJDFzaXMnXSwKLSAgICBbLyhbXmZdKXZlcyQvaSwg
JyQxZmUnXSwKLSAgICBbLyhoaXZlKXMkL2ksICckMSddLAotICAgIFsvKHRpdmUpcyQvaSwgJyQx
J10sCi0gICAgWy8oW2xyXSl2ZXMkL2ksICckMWYnXSwKLSAgICBbLyhbXmFlaW91eV18cXUpaWVz
JC9pLCAnJDF5J10sCi0gICAgWy8ocyllcmllcyQvaSwgJyQxZXJpZXMnXSwKLSAgICBbLyhtKW92
aWVzJC9pLCAnJDFvdmllJ10sCi0gICAgWy8oeHxjaHxzc3xzaCllcyQvaSwgJyQxJ10sCi0gICAg
Wy9eKG18bClpY2UkL2ksICckMW91c2UnXSwKLSAgICBbLyhidXMpKGVzKT8kL2ksICckMSddLAot
ICAgIFsvKG8pZXMkL2ksICckMSddLAotICAgIFsvKHNob2UpcyQvaSwgJyQxJ10sCi0gICAgWy8o
Y3Jpc3x0ZXN0KShpc3xlcykkL2ksICckMWlzJ10sCi0gICAgWy9eKGEpeFtpZV1zJC9pLCAnJDF4
aXMnXSwKLSAgICBbLyhvY3RvcHx2aXIpKHVzfGkpJC9pLCAnJDF1cyddLAotICAgIFsvKGFsaWFz
fHN0YXR1cykoZXMpPyQvaSwgJyQxJ10sCi0gICAgWy9eKG94KWVuL2ksICckMSddLAotICAgIFsv
KHZlcnR8aW5kKWljZXMkL2ksICckMWV4J10sCi0gICAgWy8obWF0cilpY2VzJC9pLCAnJDFpeCdd
LAotICAgIFsvKHF1aXopemVzJC9pLCAnJDEnXSwKLSAgICBbLyhkYXRhYmFzZSlzJC9pLCAnJDEn
XQotICBdLAotCi0gIGlycmVndWxhclBhaXJzOiBbCi0gICAgWydwZXJzb24nLCAncGVvcGxlJ10s
Ci0gICAgWydtYW4nLCAnbWVuJ10sCi0gICAgWydjaGlsZCcsICdjaGlsZHJlbiddLAotICAgIFsn
c2V4JywgJ3NleGVzJ10sCi0gICAgWydtb3ZlJywgJ21vdmVzJ10sCi0gICAgWydjb3cnLCAna2lu
ZSddLAotICAgIFsnem9tYmllJywgJ3pvbWJpZXMnXQotICBdLAotCi0gIHVuY291bnRhYmxlOiBb
Ci0gICAgJ2VxdWlwbWVudCcsCi0gICAgJ2luZm9ybWF0aW9uJywKLSAgICAncmljZScsCi0gICAg
J21vbmV5JywKLSAgICAnc3BlY2llcycsCi0gICAgJ3NlcmllcycsCi0gICAgJ2Zpc2gnLAotICAg
ICdzaGVlcCcsCi0gICAgJ2plYW5zJywKLSAgICAncG9saWNlJwotICBdCi19OwotCi19KSgpOwot
Ci0KLQotKGZ1bmN0aW9uKCkgewotaWYgKEVtYmVyLkVYVEVORF9QUk9UT1RZUEVTID09PSB0cnVl
IHx8IEVtYmVyLkVYVEVORF9QUk9UT1RZUEVTLlN0cmluZykgewotICAvKioKLSAgICBTZWUge3sj
Y3Jvc3NMaW5rICJFbWJlci5TdHJpbmcvcGx1cmFsaXplIn19e3svY3Jvc3NMaW5rfX0KLQotICAg
IEBtZXRob2QgcGx1cmFsaXplCi0gICAgQGZvciBTdHJpbmcKLSAgKi8KLSAgU3RyaW5nLnByb3Rv
dHlwZS5wbHVyYWxpemUgPSBmdW5jdGlvbigpIHsKLSAgICByZXR1cm4gRW1iZXIuU3RyaW5nLnBs
dXJhbGl6ZSh0aGlzKTsKLSAgfTsKLQotICAvKioKLSAgICBTZWUge3sjY3Jvc3NMaW5rICJFbWJl
ci5TdHJpbmcvc2luZ3VsYXJpemUifX17ey9jcm9zc0xpbmt9fQotCi0gICAgQG1ldGhvZCBzaW5n
dWxhcml6ZQotICAgIEBmb3IgU3RyaW5nCi0gICovCi0gIFN0cmluZy5wcm90b3R5cGUuc2luZ3Vs
YXJpemUgPSBmdW5jdGlvbigpIHsKLSAgICByZXR1cm4gRW1iZXIuU3RyaW5nLnNpbmd1bGFyaXpl
KHRoaXMpOwotICB9OwotfQotCi19KSgpOwotCi0KLQotKGZ1bmN0aW9uKCkgewotRW1iZXIuSW5m
bGVjdG9yLmluZmxlY3RvciA9IG5ldyBFbWJlci5JbmZsZWN0b3IoRW1iZXIuSW5mbGVjdG9yLmRl
ZmF1bHRSdWxlcyk7Ci0KLX0pKCk7Ci0KLQotCi0oZnVuY3Rpb24oKSB7Ci0KLX0pKCk7Ci0KLShm
dW5jdGlvbigpIHsKLS8qKgotICBAbW9kdWxlIGVtYmVyLWRhdGEKLSovCi0KLXZhciBnZXQgPSBF
bWJlci5nZXQsCi0gICAgZm9yRWFjaCA9IEVtYmVyLkVudW1lcmFibGVVdGlscy5mb3JFYWNoLAot
ICAgIGNhbWVsaXplID0gICBFbWJlci5TdHJpbmcuY2FtZWxpemUsCi0gICAgY2FwaXRhbGl6ZSA9
IEVtYmVyLlN0cmluZy5jYXBpdGFsaXplLAotICAgIGRlY2FtZWxpemUgPSBFbWJlci5TdHJpbmcu
ZGVjYW1lbGl6ZSwKLSAgICBzaW5ndWxhcml6ZSA9IEVtYmVyLlN0cmluZy5zaW5ndWxhcml6ZSwK
LSAgICB1bmRlcnNjb3JlID0gRW1iZXIuU3RyaW5nLnVuZGVyc2NvcmU7Ci0KLURTLkFjdGl2ZU1v
ZGVsU2VyaWFsaXplciA9IERTLlJFU1RTZXJpYWxpemVyLmV4dGVuZCh7Ci0gIC8vIFNFUklBTEla
RQotCi0gIC8qKgotICAgIENvbnZlcnRzIGNhbWVsY2FzZWQgYXR0cmlidXRlcyB0byB1bmRlcnNj
b3JlZCB3aGVuIHNlcmlhbGl6aW5nLgotCi0gICAgQG1ldGhvZCBrZXlGb3JBdHRyaWJ1dGUKLSAg
ICBAcGFyYW0ge1N0cmluZ30gYXR0cmlidXRlCi0gICAgQHJldHVybnMgU3RyaW5nCi0gICovCi0g
IGtleUZvckF0dHJpYnV0ZTogZnVuY3Rpb24oYXR0cikgewotICAgIHJldHVybiBkZWNhbWVsaXpl
KGF0dHIpOwotICB9LAotCi0gIC8qKgotICAgIFVuZGVyc2NvcmVzIHJlbGF0aW9uc2hpcCBuYW1l
cyBhbmQgYXBwZW5kcyAiX2lkIiBvciAiX2lkcyIgd2hlbiBzZXJpYWxpemluZwotICAgIHJlbGF0
aW9uc2hpcCBrZXlzLgotCi0gICAgQG1ldGhvZCBrZXlGb3JSZWxhdGlvbnNoaXAKLSAgICBAcGFy
YW0ge1N0cmluZ30ga2V5Ci0gICAgQHBhcmFtIHtTdHJpbmd9IGtpbmQKLSAgICBAcmV0dXJucyBT
dHJpbmcKLSAgKi8KLSAga2V5Rm9yUmVsYXRpb25zaGlwOiBmdW5jdGlvbihrZXksIGtpbmQpIHsK
LSAgICBrZXkgPSBkZWNhbWVsaXplKGtleSk7Ci0gICAgaWYgKGtpbmQgPT09ICJiZWxvbmdzVG8i
KSB7Ci0gICAgICByZXR1cm4ga2V5ICsgIl9pZCI7Ci0gICAgfSBlbHNlIGlmIChraW5kID09PSAi
aGFzTWFueSIpIHsKLSAgICAgIHJldHVybiBzaW5ndWxhcml6ZShrZXkpICsgIl9pZHMiOwotICAg
IH0gZWxzZSB7Ci0gICAgICByZXR1cm4ga2V5OwotICAgIH0KLSAgfSwKLQotICAvKioKLSAgICBE
b2VzIG5vdCBzZXJpYWxpemUgaGFzTWFueSByZWxhdGlvbnNoaXBzIGJ5IGRlZmF1bHQuCi0gICov
Ci0gIHNlcmlhbGl6ZUhhc01hbnk6IEVtYmVyLkssCi0KLSAgLyoqCi0gICAgVW5kZXJzY29yZXMg
dGhlIEpTT04gcm9vdCBrZXlzIHdoZW4gc2VyaWFsaXppbmcuCi0KLSAgICBAbWV0aG9kIHNlcmlh
bGl6ZUludG9IYXNoCi0gICAgQHBhcmFtIHtPYmplY3R9IGhhc2gKLSAgICBAcGFyYW0ge3N1YmNs
YXNzIG9mIERTLk1vZGVsfSB0eXBlCi0gICAgQHBhcmFtIHtEUy5Nb2RlbH0gcmVjb3JkCi0gICAg
QHBhcmFtIHtPYmplY3R9IG9wdGlvbnMKLSAgKi8KLSAgc2VyaWFsaXplSW50b0hhc2g6IGZ1bmN0
aW9uKGRhdGEsIHR5cGUsIHJlY29yZCwgb3B0aW9ucykgewotICAgIHZhciByb290ID0gdW5kZXJz
Y29yZShkZWNhbWVsaXplKHR5cGUudHlwZUtleSkpOwotICAgIGRhdGFbcm9vdF0gPSB0aGlzLnNl
cmlhbGl6ZShyZWNvcmQsIG9wdGlvbnMpOwotICB9LAotCi0gIC8qKgotICAgIFNlcmlhbGl6ZXMg
YSBwb2x5bW9ycGhpYyB0eXBlIGFzIGEgZnVsbHkgY2FwaXRhbGl6ZWQgbW9kZWwgbmFtZS4KLQot
ICAgIEBtZXRob2Qgc2VyaWFsaXplUG9seW1vcnBoaWNUeXBlCi0gICAgQHBhcmFtIHtEUy5Nb2Rl
bH0gcmVjb3JkCi0gICAgQHBhcmFtIHtPYmplY3R9IGpzb24KLSAgICBAcGFyYW0gcmVsYXRpb25z
aGlwCi0gICovCi0gIHNlcmlhbGl6ZVBvbHltb3JwaGljVHlwZTogZnVuY3Rpb24ocmVjb3JkLCBq
c29uLCByZWxhdGlvbnNoaXApIHsKLSAgICB2YXIga2V5ID0gcmVsYXRpb25zaGlwLmtleSwKLSAg
ICAgICAgYmVsb25nc1RvID0gZ2V0KHJlY29yZCwga2V5KTsKLSAgICBrZXkgPSB0aGlzLmtleUZv
ckF0dHJpYnV0ZShrZXkpOwotICAgIGpzb25ba2V5ICsgIl90eXBlIl0gPSBjYXBpdGFsaXplKGNh
bWVsaXplKGJlbG9uZ3NUby5jb25zdHJ1Y3Rvci50eXBlS2V5KSk7Ci0gIH0sCi0KLSAgLy8gRVhU
UkFDVAotCi0gIC8qKgotICAgIEV4dHJhY3RzIHRoZSBtb2RlbCB0eXBlS2V5IGZyb20gdW5kZXJz
Y29yZWQgcm9vdCBvYmplY3RzLgotCi0gICAgQG1ldGhvZCB0eXBlRm9yUm9vdAotICAgIEBwYXJh
bSB7U3RyaW5nfSByb290Ci0gICAgQHJldHVybnMgU3RyaW5nIHRoZSBtb2RlbCdzIHR5cGVLZXkK
LSAgKi8KLSAgdHlwZUZvclJvb3Q6IGZ1bmN0aW9uKHJvb3QpIHsKLSAgICB2YXIgY2FtZWxpemVk
ID0gY2FtZWxpemUocm9vdCk7Ci0gICAgcmV0dXJuIHNpbmd1bGFyaXplKGNhbWVsaXplZCk7Ci0g
IH0sCi0KLSAgLyoqCi0gICAgQWRkIGV4dHJhIHN0ZXAgdG8gYERTLlJFU1RTZXJpYWxpemVyLm5v
cm1hbGl6ZWAgc28gbGlua3MgYXJlCi0gICAgbm9ybWFsaXplZC4KLQotICAgIElmIHlvdXIgcGF5
bG9hZCBsb29rcyBsaWtlIHRoaXMKLQotICAgIGBgYGpzCi0gICAgewotICAgICAgInBvc3QiOiB7
Ci0gICAgICAgICJpZCI6IDEsCi0gICAgICAgICJ0aXRsZSI6ICJSYWlscyBpcyBvbWFrYXNlIiwK
LSAgICAgICAgImxpbmtzIjogeyAiZmxhZ2dlZF9jb21tZW50cyI6ICJhcGkvY29tbWVudHMvZmxh
Z2dlZCIgfQotICAgICAgfQotICAgIH0KLSAgICBgYGAKLSAgICBUaGUgbm9ybWFsaXplZCB2ZXJz
aW9uIHdvdWxkIGxvb2sgbGlrZSB0aGlzCi0KLSAgICBgYGBqcwotICAgIHsKLSAgICAgICJwb3N0
IjogewotICAgICAgICAiaWQiOiAxLAotICAgICAgICAidGl0bGUiOiAiUmFpbHMgaXMgb21ha2Fz
ZSIsCi0gICAgICAgICJsaW5rcyI6IHsgImZsYWdnZWRDb21tZW50cyI6ICJhcGkvY29tbWVudHMv
ZmxhZ2dlZCIgfQotICAgICAgfQotICAgIH0KLSAgICBgYGAKLQotICAgIEBtZXRob2Qgbm9ybWFs
aXplCi0gICAgQHBhcmFtIHtzdWJjbGFzcyBvZiBEUy5Nb2RlbH0gdHlwZQotICAgIEBwYXJhbSB7
T2JqZWN0fSBoYXNoCi0gICAgQHBhcmFtIHtTdHJpbmd9IHByb3AKLSAgICBAcmV0dXJucyBPYmpl
Y3QKLSAgKi8KLQotICBub3JtYWxpemU6IGZ1bmN0aW9uKHR5cGUsIGhhc2gsIHByb3ApIHsKLSAg
ICB0aGlzLm5vcm1hbGl6ZUxpbmtzKGhhc2gpOwotCi0gICAgcmV0dXJuIHRoaXMuX3N1cGVyKHR5
cGUsIGhhc2gsIHByb3ApOwotICB9LAotCi0gIC8qKgotICAgIENvbnZlcnQgYHNuYWtlX2Nhc2Vk
YCBsaW5rcyAgdG8gYGNhbWVsQ2FzZWAKLQotICAgIEBtZXRob2Qgbm9ybWFsaXplTGlua3MKLSAg
ICBAcGFyYW0ge09iamVjdH0gaGFzaAotICAqLwotCi0gIG5vcm1hbGl6ZUxpbmtzOiBmdW5jdGlv
bihkYXRhKXsKLSAgICBpZiAoZGF0YS5saW5rcykgewotICAgICAgdmFyIGxpbmtzID0gZGF0YS5s
aW5rczsKLQotICAgICAgZm9yICh2YXIgbGluayBpbiBsaW5rcykgewotICAgICAgICB2YXIgY2Ft
ZWxpemVkTGluayA9IGNhbWVsaXplKGxpbmspOwotCi0gICAgICAgIGlmIChjYW1lbGl6ZWRMaW5r
ICE9PSBsaW5rKSB7Ci0gICAgICAgICAgbGlua3NbY2FtZWxpemVkTGlua10gPSBsaW5rc1tsaW5r
XTsKLSAgICAgICAgICBkZWxldGUgbGlua3NbbGlua107Ci0gICAgICAgIH0KLSAgICAgIH0KLSAg
ICB9Ci0gIH0sCi0KLSAgLyoqCi0gICAgTm9ybWFsaXplIHRoZSBwb2x5bW9ycGhpYyB0eXBlIGZy
b20gdGhlIEpTT04uCi0KLSAgICBOb3JtYWxpemU6Ci0gICAgYGBganMKLSAgICAgIHsKLSAgICAg
ICAgaWQ6ICIxIgotICAgICAgICBtaW5pb246IHsgdHlwZTogImV2aWxfbWluaW9uIiwgaWQ6ICIx
MiJ9Ci0gICAgICB9Ci0gICAgYGBgCi0KLSAgICBUbzoKLSAgICBgYGBqcwotICAgICAgewotICAg
ICAgICBpZDogIjEiCi0gICAgICAgIG1pbmlvbjogeyB0eXBlOiAiZXZpbE1pbmlvbiIsIGlkOiAi
MTIifQotICAgICAgfQotICAgIGBgYAotCi0gICAgQG1ldGhvZCBub3JtYWxpemVSZWxhdGlvbnNo
aXBzCi0gICAgQHByaXZhdGUKLSAgKi8KLSAgbm9ybWFsaXplUmVsYXRpb25zaGlwczogZnVuY3Rp
b24odHlwZSwgaGFzaCkgewotICAgIHZhciBwYXlsb2FkS2V5LCBwYXlsb2FkOwotCi0gICAgaWYg
KHRoaXMua2V5Rm9yUmVsYXRpb25zaGlwKSB7Ci0gICAgICB0eXBlLmVhY2hSZWxhdGlvbnNoaXAo
ZnVuY3Rpb24oa2V5LCByZWxhdGlvbnNoaXApIHsKLSAgICAgICAgaWYgKHJlbGF0aW9uc2hpcC5v
cHRpb25zLnBvbHltb3JwaGljKSB7Ci0gICAgICAgICAgcGF5bG9hZEtleSA9IHRoaXMua2V5Rm9y
QXR0cmlidXRlKGtleSk7Ci0gICAgICAgICAgcGF5bG9hZCA9IGhhc2hbcGF5bG9hZEtleV07Ci0g
ICAgICAgICAgaWYgKHBheWxvYWQgJiYgcGF5bG9hZC50eXBlKSB7Ci0gICAgICAgICAgICBwYXls
b2FkLnR5cGUgPSB0aGlzLnR5cGVGb3JSb290KHBheWxvYWQudHlwZSk7Ci0gICAgICAgICAgfSBl
bHNlIGlmIChwYXlsb2FkICYmIHJlbGF0aW9uc2hpcC5raW5kID09PSAiaGFzTWFueSIpIHsKLSAg
ICAgICAgICAgIHZhciBzZWxmID0gdGhpczsKLSAgICAgICAgICAgIGZvckVhY2gocGF5bG9hZCwg
ZnVuY3Rpb24oc2luZ2xlKSB7Ci0gICAgICAgICAgICAgIHNpbmdsZS50eXBlID0gc2VsZi50eXBl
Rm9yUm9vdChzaW5nbGUudHlwZSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICB9Ci0gICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgcGF5bG9hZEtleSA9IHRoaXMua2V5Rm9yUmVsYXRpb25z
aGlwKGtleSwgcmVsYXRpb25zaGlwLmtpbmQpOwotICAgICAgICAgIHBheWxvYWQgPSBoYXNoW3Bh
eWxvYWRLZXldOwotICAgICAgICB9Ci0KLSAgICAgICAgaGFzaFtrZXldID0gcGF5bG9hZDsKLQot
ICAgICAgICBpZiAoa2V5ICE9PSBwYXlsb2FkS2V5KSB7Ci0gICAgICAgICAgZGVsZXRlIGhhc2hb
cGF5bG9hZEtleV07Ci0gICAgICAgIH0KLSAgICAgIH0sIHRoaXMpOwotICAgIH0KLSAgfQotfSk7
Ci0KLX0pKCk7Ci0KLQotCi0oZnVuY3Rpb24oKSB7Ci12YXIgZ2V0ID0gRW1iZXIuZ2V0OwotdmFy
IGZvckVhY2ggPSBFbWJlci5FbnVtZXJhYmxlVXRpbHMuZm9yRWFjaDsKLQotLyoqCi0gIFRoZSBF
bWJlZGRlZFJlY29yZHNNaXhpbiBhbGxvd3MgeW91IHRvIGFkZCBlbWJlZGRlZCByZWNvcmQgc3Vw
cG9ydCB0byB5b3VyCi0gIHNlcmlhbGl6ZXJzLgotICBUbyBzZXQgdXAgZW1iZWRkZWQgcmVjb3Jk
cywgeW91IGluY2x1ZGUgdGhlIG1peGluIGludG8gdGhlIHNlcmlhbGl6ZXIgYW5kIHRoZW4KLSAg
ZGVmaW5lIHlvdXIgZW1iZWRkZWQgcmVsYXRpb25zLgotCi0gIGBgYGpzCi0gIEFwcC5Qb3N0U2Vy
aWFsaXplciA9IERTLkFjdGl2ZU1vZGVsU2VyaWFsaXplci5leHRlbmQoRFMuRW1iZWRkZWRSZWNv
cmRzTWl4aW4sIHsKLSAgICBhdHRyczogewotICAgICAgY29tbWVudHM6IHtlbWJlZGRlZDogJ2Fs
d2F5cyd9Ci0gICAgfQotICB9KQotICBgYGAKLQotICBDdXJyZW50bHkgb25seSBge2VtYmVkZGVk
OiAnYWx3YXlzJ31gIHJlY29yZHMgYXJlIHN1cHBvcnRlZC4KLQotICBAY2xhc3MgRW1iZWRkZWRS
ZWNvcmRzTWl4aW4KLSAgQG5hbWVzcGFjZSBEUwotKi8KLURTLkVtYmVkZGVkUmVjb3Jkc01peGlu
ID0gRW1iZXIuTWl4aW4uY3JlYXRlKHsKLQotICAvKioKLSAgICBTZXJpYWxpemUgaGFzLW1heSBy
ZWxhdGlvbnNoaXAgd2hlbiBpdCBpcyBjb25maWd1cmVkIGFzIGVtYmVkZGVkIG9iamVjdHMuCi0K
LSAgICBAbWV0aG9kIHNlcmlhbGl6ZUhhc01hbnkKLSAgKi8KLSAgc2VyaWFsaXplSGFzTWFueTog
ZnVuY3Rpb24ocmVjb3JkLCBqc29uLCByZWxhdGlvbnNoaXApIHsKLSAgICB2YXIga2V5ICAgPSBy
ZWxhdGlvbnNoaXAua2V5LAotICAgICAgICBhdHRycyA9IGdldCh0aGlzLCAnYXR0cnMnKSwKLSAg
ICAgICAgZW1iZWQgPSBhdHRycyAmJiBhdHRyc1trZXldICYmIGF0dHJzW2tleV0uZW1iZWRkZWQg
PT09ICdhbHdheXMnOwotCi0gICAgaWYgKGVtYmVkKSB7Ci0gICAgICBqc29uW3RoaXMua2V5Rm9y
QXR0cmlidXRlKGtleSldID0gZ2V0KHJlY29yZCwga2V5KS5tYXAoZnVuY3Rpb24ocmVsYXRpb24p
IHsKLSAgICAgICAgdmFyIGRhdGEgPSByZWxhdGlvbi5zZXJpYWxpemUoKSwKLSAgICAgICAgICAg
IHByaW1hcnlLZXkgPSBnZXQodGhpcywgJ3ByaW1hcnlLZXknKTsKLQotICAgICAgICBkYXRhW3By
aW1hcnlLZXldID0gZ2V0KHJlbGF0aW9uLCBwcmltYXJ5S2V5KTsKLQotICAgICAgICByZXR1cm4g
ZGF0YTsKLSAgICAgIH0sIHRoaXMpOwotICAgIH0KLSAgfSwKLQotICAvKioKLSAgICBFeHRyYWN0
IGVtYmVkZGVkIG9iamVjdHMgb3V0IG9mIHRoZSBwYXlsb2FkIGZvciBhIHNpbmdsZSBvYmplY3QK
LSAgICBhbmQgYWRkIHRoZW0gYXMgc2lkZWxvYWRlZCBvYmplY3RzIGluc3RlYWQuCi0KLSAgICBA
bWV0aG9kIGV4dHJhY3RTaW5nbGUKLSAgKi8KLSAgZXh0cmFjdFNpbmdsZTogZnVuY3Rpb24oc3Rv
cmUsIHByaW1hcnlUeXBlLCBwYXlsb2FkLCByZWNvcmRJZCwgcmVxdWVzdFR5cGUpIHsKLSAgICB2
YXIgcm9vdCA9IHRoaXMua2V5Rm9yQXR0cmlidXRlKHByaW1hcnlUeXBlLnR5cGVLZXkpLAotICAg
ICAgICBwYXJ0aWFsID0gcGF5bG9hZFtyb290XTsKLQotICAgIHVwZGF0ZVBheWxvYWRXaXRoRW1i
ZWRkZWQoc3RvcmUsIHRoaXMsIHByaW1hcnlUeXBlLCBwYXJ0aWFsLCBwYXlsb2FkKTsKLQotICAg
IHJldHVybiB0aGlzLl9zdXBlcihzdG9yZSwgcHJpbWFyeVR5cGUsIHBheWxvYWQsIHJlY29yZElk
LCByZXF1ZXN0VHlwZSk7Ci0gIH0sCi0KLSAgLyoqCi0gICAgRXh0cmFjdCBlbWJlZGRlZCBvYmpl
Y3RzIG91dCBvZiBhIHN0YW5kYXJkIHBheWxvYWQKLSAgICBhbmQgYWRkIHRoZW0gYXMgc2lkZWxv
YWRlZCBvYmplY3RzIGluc3RlYWQuCi0KLSAgICBAbWV0aG9kIGV4dHJhY3RBcnJheQotICAqLwot
ICBleHRyYWN0QXJyYXk6IGZ1bmN0aW9uKHN0b3JlLCB0eXBlLCBwYXlsb2FkKSB7Ci0gICAgdmFy
IHJvb3QgPSB0aGlzLmtleUZvckF0dHJpYnV0ZSh0eXBlLnR5cGVLZXkpLAotICAgICAgICBwYXJ0
aWFscyA9IHBheWxvYWRbRW1iZXIuU3RyaW5nLnBsdXJhbGl6ZShyb290KV07Ci0KLSAgICBmb3JF
YWNoKHBhcnRpYWxzLCBmdW5jdGlvbihwYXJ0aWFsKSB7Ci0gICAgICB1cGRhdGVQYXlsb2FkV2l0
aEVtYmVkZGVkKHN0b3JlLCB0aGlzLCB0eXBlLCBwYXJ0aWFsLCBwYXlsb2FkKTsKLSAgICB9LCB0
aGlzKTsKLQotICAgIHJldHVybiB0aGlzLl9zdXBlcihzdG9yZSwgdHlwZSwgcGF5bG9hZCk7Ci0g
IH0KLX0pOwotCi1mdW5jdGlvbiB1cGRhdGVQYXlsb2FkV2l0aEVtYmVkZGVkKHN0b3JlLCBzZXJp
YWxpemVyLCB0eXBlLCBwYXJ0aWFsLCBwYXlsb2FkKSB7Ci0gIHZhciBhdHRycyA9IGdldChzZXJp
YWxpemVyLCAnYXR0cnMnKTsKLQotICBpZiAoIWF0dHJzKSB7Ci0gICAgcmV0dXJuOwotICB9Ci0K
LSAgdHlwZS5lYWNoUmVsYXRpb25zaGlwKGZ1bmN0aW9uKGtleSwgcmVsYXRpb25zaGlwKSB7Ci0g
ICAgdmFyIGV4cGFuZGVkS2V5LCBlbWJlZGRlZFR5cGVLZXksIGF0dHJpYnV0ZSwgaWRzLAotICAg
ICAgICBjb25maWcgPSBhdHRyc1trZXldLAotICAgICAgICBzZXJpYWxpemVyID0gc3RvcmUuc2Vy
aWFsaXplckZvcihyZWxhdGlvbnNoaXAudHlwZS50eXBlS2V5KSwKLSAgICAgICAgcHJpbWFyeUtl
eSA9IGdldChzZXJpYWxpemVyLCAicHJpbWFyeUtleSIpOwotCi0gICAgaWYgKHJlbGF0aW9uc2hp
cC5raW5kICE9PSAiaGFzTWFueSIpIHsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAo
Y29uZmlnICYmIChjb25maWcuZW1iZWRkZWQgPT09ICdhbHdheXMnIHx8IGNvbmZpZy5lbWJlZGRl
ZCA9PT0gJ2xvYWQnKSkgewotICAgICAgLy8gdW5kZXJzY29yZSBmb3JjZXMgdGhlIGVtYmVkZGVk
IHJlY29yZHMgdG8gYmUgc2lkZSBsb2FkZWQuCi0gICAgICAvLyBpdCBpcyBuZWVkZWQgd2hlbiBt
YWluIHR5cGUgPT09IHJlbGF0aW9uc2hpcC50eXBlCi0gICAgICBlbWJlZGRlZFR5cGVLZXkgPSAn
XycgKyBFbWJlci5TdHJpbmcucGx1cmFsaXplKHJlbGF0aW9uc2hpcC50eXBlLnR5cGVLZXkpOwot
ICAgICAgZXhwYW5kZWRLZXkgPSB0aGlzLmtleUZvclJlbGF0aW9uc2hpcChrZXksIHJlbGF0aW9u
c2hpcC5raW5kKTsKLSAgICAgIGF0dHJpYnV0ZSAgPSB0aGlzLmtleUZvckF0dHJpYnV0ZShrZXkp
OwotICAgICAgaWRzID0gW107Ci0KLSAgICAgIGlmICghcGFydGlhbFthdHRyaWJ1dGVdKSB7Ci0g
ICAgICAgIHJldHVybjsKLSAgICAgIH0KLQotICAgICAgcGF5bG9hZFtlbWJlZGRlZFR5cGVLZXld
ID0gcGF5bG9hZFtlbWJlZGRlZFR5cGVLZXldIHx8IFtdOwotCi0gICAgICBmb3JFYWNoKHBhcnRp
YWxbYXR0cmlidXRlXSwgZnVuY3Rpb24oZGF0YSkgewotICAgICAgICB2YXIgZW1iZWRkZWRUeXBl
ID0gc3RvcmUubW9kZWxGb3IocmVsYXRpb25zaGlwLnR5cGUudHlwZUtleSk7Ci0gICAgICAgIHVw
ZGF0ZVBheWxvYWRXaXRoRW1iZWRkZWQoc3RvcmUsIHNlcmlhbGl6ZXIsIGVtYmVkZGVkVHlwZSwg
ZGF0YSwgcGF5bG9hZCk7Ci0gICAgICAgIGlkcy5wdXNoKGRhdGFbcHJpbWFyeUtleV0pOwotICAg
ICAgICBwYXlsb2FkW2VtYmVkZGVkVHlwZUtleV0ucHVzaChkYXRhKTsKLSAgICAgIH0pOwotCi0g
ICAgICBwYXJ0aWFsW2V4cGFuZGVkS2V5XSA9IGlkczsKLSAgICAgIGRlbGV0ZSBwYXJ0aWFsW2F0
dHJpYnV0ZV07Ci0gICAgfQotICB9LCBzZXJpYWxpemVyKTsKLX0KLX0pKCk7Ci0KLQotCi0oZnVu
Y3Rpb24oKSB7Ci0vKioKLSAgQG1vZHVsZSBlbWJlci1kYXRhCi0qLwotCi12YXIgZm9yRWFjaCA9
IEVtYmVyLkVudW1lcmFibGVVdGlscy5mb3JFYWNoOwotdmFyIGRlY2FtZWxpemUgPSBFbWJlci5T
dHJpbmcuZGVjYW1lbGl6ZSwKLSAgICB1bmRlcnNjb3JlID0gRW1iZXIuU3RyaW5nLnVuZGVyc2Nv
cmUsCi0gICAgcGx1cmFsaXplICA9IEVtYmVyLlN0cmluZy5wbHVyYWxpemU7Ci0KLS8qKgotICBU
aGUgQWN0aXZlTW9kZWxBZGFwdGVyIGlzIGEgc3ViY2xhc3Mgb2YgdGhlIFJFU1RBZGFwdGVyIGRl
c2lnbmVkIHRvIGludGVncmF0ZQotICB3aXRoIGEgSlNPTiBBUEkgdGhhdCB1c2VzIGFuIHVuZGVy
c2NvcmVkIG5hbWluZyBjb252ZW50aW9uIGluc3RlYWQgb2YgY2FtZWxjYXNpbmcuCi0gIEl0IGhh
cyBiZWVuIGRlc2lnbmVkIHRvIHdvcmsgb3V0IG9mIHRoZSBib3ggd2l0aCB0aGUKLSAgW2FjdGl2
ZV9tb2RlbF9zZXJpYWxpemVyc10oaHR0cDovL2dpdGh1Yi5jb20vcmFpbHMtYXBpL2FjdGl2ZV9t
b2RlbF9zZXJpYWxpemVycykKLSAgUnVieSBnZW0uCi0KLSAgVGhpcyBhZGFwdGVyIGV4dGVuZHMg
dGhlIERTLlJFU1RBZGFwdGVyIGJ5IG1ha2luZyBjb25zaXN0ZW50IHVzZSBvZiB0aGUgY2FtZWxp
emF0aW9uLAotICBkZWNhbWVsaXphdGlvbiBhbmQgcGx1cmFsaXphdGlvbiBtZXRob2RzIHRvIG5v
cm1hbGl6ZSB0aGUgc2VyaWFsaXplZCBKU09OIGludG8gYQotICBmb3JtYXQgdGhhdCBpcyBjb21w
YXRpYmxlIHdpdGggYSBjb252ZW50aW9uYWwgUmFpbHMgYmFja2VuZCBhbmQgRW1iZXIgRGF0YS4K
LQotICAjIyBKU09OIFN0cnVjdHVyZQotCi0gIFRoZSBBY3RpdmVNb2RlbEFkYXB0ZXIgZXhwZWN0
cyB0aGUgSlNPTiByZXR1cm5lZCBmcm9tIHlvdXIgc2VydmVyIHRvIGZvbGxvdwotICB0aGUgUkVT
VCBhZGFwdGVyIGNvbnZlbnRpb25zIHN1YnN0aXR1dGluZyB1bmRlcnNjb3JlZCBrZXlzIGZvciBj
YW1lbGNhc2VkIG9uZXMuCi0KLSAgIyMjIENvbnZlbnRpb25hbCBOYW1lcwotCi0gIEF0dHJpYnV0
ZSBuYW1lcyBpbiB5b3VyIEpTT04gcGF5bG9hZCBzaG91bGQgYmUgdGhlIHVuZGVyc2NvcmVkIHZl
cnNpb25zIG9mCi0gIHRoZSBhdHRyaWJ1dGVzIGluIHlvdXIgRW1iZXIuanMgbW9kZWxzLgotCi0g
IEZvciBleGFtcGxlLCBpZiB5b3UgaGF2ZSBhIGBQZXJzb25gIG1vZGVsOgotCi0gIGBgYGpzCi0g
IEFwcC5GYW1vdXNQZXJzb24gPSBEUy5Nb2RlbC5leHRlbmQoewotICAgIGZpcnN0TmFtZTogRFMu
YXR0cignc3RyaW5nJyksCi0gICAgbGFzdE5hbWU6IERTLmF0dHIoJ3N0cmluZycpLAotICAgIG9j
Y3VwYXRpb246IERTLmF0dHIoJ3N0cmluZycpCi0gIH0pOwotICBgYGAKLQotICBUaGUgSlNPTiBy
ZXR1cm5lZCBzaG91bGQgbG9vayBsaWtlIHRoaXM6Ci0KLSAgYGBganMKLSAgewotICAgICJmYW1v
dXNfcGVyc29uIjogewotICAgICAgImZpcnN0X25hbWUiOiAiQmFyYWNrIiwKLSAgICAgICJsYXN0
X25hbWUiOiAiT2JhbWEiLAotICAgICAgIm9jY3VwYXRpb24iOiAiUHJlc2lkZW50IgotICAgIH0K
LSAgfQotICBgYGAKLQotICBAY2xhc3MgQWN0aXZlTW9kZWxBZGFwdGVyCi0gIEBjb25zdHJ1Y3Rv
cgotICBAbmFtZXNwYWNlIERTCi0gIEBleHRlbmRzIERTLkFkYXB0ZXIKLSoqLwotCi1EUy5BY3Rp
dmVNb2RlbEFkYXB0ZXIgPSBEUy5SRVNUQWRhcHRlci5leHRlbmQoewotICBkZWZhdWx0U2VyaWFs
aXplcjogJy1hY3RpdmUtbW9kZWwnLAotICAvKioKLSAgICBUaGUgQWN0aXZlTW9kZWxBZGFwdGVy
IG92ZXJyaWRlcyB0aGUgYHBhdGhGb3JUeXBlYCBtZXRob2QgdG8gYnVpbGQKLSAgICB1bmRlcnNj
b3JlZCBVUkxzIGJ5IGRlY2FtZWxpemluZyBhbmQgcGx1cmFsaXppbmcgdGhlIG9iamVjdCB0eXBl
IG5hbWUuCi0KLSAgICBgYGBqcwotICAgICAgdGhpcy5wYXRoRm9yVHlwZSgiZmFtb3VzUGVyc29u
Iik7Ci0gICAgICAvLz0+ICJmYW1vdXNfcGVvcGxlIgotICAgIGBgYAotCi0gICAgQG1ldGhvZCBw
YXRoRm9yVHlwZQotICAgIEBwYXJhbSB7U3RyaW5nfSB0eXBlCi0gICAgQHJldHVybnMgU3RyaW5n
Ci0gICovCi0gIHBhdGhGb3JUeXBlOiBmdW5jdGlvbih0eXBlKSB7Ci0gICAgdmFyIGRlY2FtZWxp
emVkID0gZGVjYW1lbGl6ZSh0eXBlKTsKLSAgICB2YXIgdW5kZXJzY29yZWQgPSB1bmRlcnNjb3Jl
KGRlY2FtZWxpemVkKTsKLSAgICByZXR1cm4gcGx1cmFsaXplKHVuZGVyc2NvcmVkKTsKLSAgfSwK
LQotICAvKioKLSAgICBUaGUgQWN0aXZlTW9kZWxBZGFwdGVyIG92ZXJyaWRlcyB0aGUgYGFqYXhF
cnJvcmAgbWV0aG9kCi0gICAgdG8gcmV0dXJuIGEgRFMuSW52YWxpZEVycm9yIGZvciBhbGwgNDIy
IFVucHJvY2Vzc2FibGUgRW50aXR5Ci0gICAgcmVzcG9uc2VzLgotCi0gICAgQSA0MjIgSFRUUCBy
ZXNwb25zZSBmcm9tIHRoZSBzZXJ2ZXIgZ2VuZXJhbGx5IGltcGxpZXMgdGhhdCB0aGUgcmVxdWVz
dAotICAgIHdhcyB3ZWxsIGZvcm1lZCBidXQgdGhlIEFQSSB3YXMgdW5hYmxlIHRvIHByb2Nlc3Mg
aXQgYmVjYXVzZSB0aGUKLSAgICBjb250ZW50IHdhcyBub3Qgc2VtYW50aWNhbGx5IGNvcnJlY3Qg
b3IgbWVhbmluZ2Z1bCBwZXIgdGhlIEFQSS4KLQotICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9u
IDQyMiBIVFRQIEVycm9yIGNvZGUgc2VlIDExLjIgV2ViREFWIFJGQyA0OTE4Ci0gICAgaHR0cHM6
Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzQ5MTgjc2VjdGlvbi0xMS4yCi0KLSAgICBAbWV0aG9k
IGFqYXhFcnJvcgotICAgIEBwYXJhbSBqcVhIUgotICAgIEByZXR1cm5zIGVycm9yCi0gICovCi0g
IGFqYXhFcnJvcjogZnVuY3Rpb24oanFYSFIpIHsKLSAgICB2YXIgZXJyb3IgPSB0aGlzLl9zdXBl
cihqcVhIUik7Ci0KLSAgICBpZiAoanFYSFIgJiYganFYSFIuc3RhdHVzID09PSA0MjIpIHsKLSAg
ICAgIHZhciByZXNwb25zZSA9IEVtYmVyLiQucGFyc2VKU09OKGpxWEhSLnJlc3BvbnNlVGV4dCks
Ci0gICAgICAgICAgZXJyb3JzID0ge307Ci0KLSAgICAgIGlmIChyZXNwb25zZS5lcnJvcnMgIT09
IHVuZGVmaW5lZCkgewotICAgICAgICB2YXIganNvbkVycm9ycyA9IHJlc3BvbnNlLmVycm9yczsK
LQotICAgICAgICBmb3JFYWNoKEVtYmVyLmtleXMoanNvbkVycm9ycyksIGZ1bmN0aW9uKGtleSkg
ewotICAgICAgICAgIGVycm9yc1tFbWJlci5TdHJpbmcuY2FtZWxpemUoa2V5KV0gPSBqc29uRXJy
b3JzW2tleV07Ci0gICAgICAgIH0pOwotICAgICAgfQotCi0gICAgICByZXR1cm4gbmV3IERTLklu
dmFsaWRFcnJvcihlcnJvcnMpOwotICAgIH0gZWxzZSB7Ci0gICAgICByZXR1cm4gZXJyb3I7Ci0g
ICAgfQotICB9Ci19KTsKLQotfSkoKTsKLQotCi0KLShmdW5jdGlvbigpIHsKLQotfSkoKTsKLQot
Ci0KLShmdW5jdGlvbigpIHsKLUVtYmVyLm9uTG9hZCgnRW1iZXIuQXBwbGljYXRpb24nLCBmdW5j
dGlvbihBcHBsaWNhdGlvbikgewotICBBcHBsaWNhdGlvbi5pbml0aWFsaXplcih7Ci0gICAgbmFt
ZTogImFjdGl2ZU1vZGVsQWRhcHRlciIsCi0KLSAgICBpbml0aWFsaXplOiBmdW5jdGlvbihjb250
YWluZXIsIGFwcGxpY2F0aW9uKSB7Ci0gICAgICB2YXIgcHJveHkgPSBuZXcgRFMuQ29udGFpbmVy
UHJveHkoY29udGFpbmVyKTsKLSAgICAgIHByb3h5LnJlZ2lzdGVyRGVwcmVjYXRpb25zKFsKLSAg
ICAgICAge2RlcHJlY2F0ZWQ6ICdzZXJpYWxpemVyOl9hbXMnLCAgdmFsaWQ6ICdzZXJpYWxpemVy
Oi1hY3RpdmUtbW9kZWwnfSwKLSAgICAgICAge2RlcHJlY2F0ZWQ6ICdhZGFwdGVyOl9hbXMnLCAg
ICAgdmFsaWQ6ICdhZGFwdGVyOi1hY3RpdmUtbW9kZWwnfQotICAgICAgXSk7Ci0KLSAgICAgIGFw
cGxpY2F0aW9uLnJlZ2lzdGVyKCdzZXJpYWxpemVyOi1hY3RpdmUtbW9kZWwnLCBEUy5BY3RpdmVN
b2RlbFNlcmlhbGl6ZXIpOwotICAgICAgYXBwbGljYXRpb24ucmVnaXN0ZXIoJ2FkYXB0ZXI6LWFj
dGl2ZS1tb2RlbCcsIERTLkFjdGl2ZU1vZGVsQWRhcHRlcik7Ci0gICAgfQotICB9KTsKLX0pOwot
Ci19KSgpOwotCi0KLQotKGZ1bmN0aW9uKCkgewotCi19KSgpOwotCi0KLX0pKCk7CmRpZmYgLS1n
aXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL2Jvd2VyX2NvbXBvbmVudHMvZW1iZXItbG9jYWxzdG9y
YWdlLWFkYXB0ZXIvbG9jYWxzdG9yYWdlX2FkYXB0ZXIuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpz
L2Jvd2VyX2NvbXBvbmVudHMvZW1iZXItbG9jYWxzdG9yYWdlLWFkYXB0ZXIvbG9jYWxzdG9yYWdl
X2FkYXB0ZXIuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhOTE5MjY0ZTRkNzIw
OTA5MWI3NThhNzY2N2I4MmJjMWVjZTE4OTAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9ib3dlcl9jb21wb25lbnRzL2Vt
YmVyLWxvY2Fsc3RvcmFnZS1hZGFwdGVyL2xvY2Fsc3RvcmFnZV9hZGFwdGVyLmpzCisrKyAvZGV2
L251bGwKQEAgLTEsMTI2ICswLDAgQEAKLS8qZ2xvYmFsIEVtYmVyKi8KLS8qZ2xvYmFsIERTKi8K
LSd1c2Ugc3RyaWN0JzsKLQotRFMuTFNBZGFwdGVyID0gRFMuQWRhcHRlci5leHRlbmQoRW1iZXIu
RXZlbnRlZCwgewotCi0gICAgaW5pdDogZnVuY3Rpb24gKCkgewotICAgICAgICB0aGlzLl9sb2Fk
RGF0YSgpOwotICAgIH0sCi0KLSAgICBnZW5lcmF0ZUlkRm9yUmVjb3JkOiBmdW5jdGlvbiAoKSB7
Ci0gICAgICAgIHJldHVybiBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDMyKS5zbGljZSgyKS5zdWJz
dHIoMCwgNSk7Ci0gICAgfSwKLQotICAgIGZpbmQ6IGZ1bmN0aW9uIChzdG9yZSwgdHlwZSwgaWQp
IHsKLSAgICAgICAgdmFyIG5hbWVzcGFjZSA9IHRoaXMuX25hbWVzcGFjZUZvclR5cGUodHlwZSk7
Ci0gICAgICAgIHJldHVybiBFbWJlci5SU1ZQLnJlc29sdmUoRW1iZXIuY29weShuYW1lc3BhY2Uu
cmVjb3Jkc1tpZF0pKTsKLSAgICB9LAotCi0gICAgZmluZE1hbnk6IGZ1bmN0aW9uIChzdG9yZSwg
dHlwZSwgaWRzKSB7Ci0gICAgICAgIHZhciBuYW1lc3BhY2UgPSB0aGlzLl9uYW1lc3BhY2VGb3JU
eXBlKHR5cGUpOwotICAgICAgICB2YXIgcmVzdWx0cyA9IFtdOwotICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGlkcy5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgcmVzdWx0cy5wdXNoKEVt
YmVyLmNvcHkobmFtZXNwYWNlLnJlY29yZHNbaWRzW2ldXSkpOwotICAgICAgICB9Ci0gICAgICAg
IHJldHVybiBFbWJlci5SU1ZQLnJlc29sdmUocmVzdWx0cyk7Ci0gICAgfSwKLQotICAvLyBTdXBw
b3J0cyBxdWVyaWVzIHRoYXQgbG9vayBsaWtlIHRoaXM6Ci0gIC8vCi0gIC8vICAgewotICAvLyAg
ICAgPHByb3BlcnR5IHRvIHF1ZXJ5PjogPHZhbHVlIG9yIHJlZ2V4IChmb3Igc3RyaW5ncykgdG8g
bWF0Y2g+LAotICAvLyAgICAgLi4uCi0gIC8vICAgfQotICAvLwotICAvLyBFdmVyeSBwcm9wZXJ0
eSBhZGRlZCB0byB0aGUgcXVlcnkgaXMgYW4gIkFORCIgcXVlcnksIG5vdCAiT1IiCi0gIC8vCi0g
IC8vIEV4YW1wbGU6Ci0gIC8vCi0gIC8vICBtYXRjaCByZWNvcmRzIHdpdGggImNvbXBsZXRlOiB0
cnVlIiBhbmQgdGhlIG5hbWUgImZvbyIgb3IgImJhciIKLSAgLy8KLSAgLy8gICAgeyBjb21wbGV0
ZTogdHJ1ZSwgbmFtZTogL2Zvb3xiYXIvIH0KLSAgICBmaW5kUXVlcnk6IGZ1bmN0aW9uIChzdG9y
ZSwgdHlwZSwgcXVlcnksIHJlY29yZEFycmF5KSB7Ci0gICAgICAgIHZhciBuYW1lc3BhY2UgPSB0
aGlzLl9uYW1lc3BhY2VGb3JUeXBlKHR5cGUpOwotICAgICAgICB2YXIgcmVzdWx0cyA9IHRoaXMu
cXVlcnkobmFtZXNwYWNlLnJlY29yZHMsIHF1ZXJ5KTsKLSAgICAgICAgcmV0dXJuIEVtYmVyLlJT
VlAucmVzb2x2ZShyZXN1bHRzKTsKLSAgICB9LAotCi0gICAgcXVlcnk6IGZ1bmN0aW9uIChyZWNv
cmRzLCBxdWVyeSkgewotICAgICAgICB2YXIgcmVzdWx0cyA9IFtdOwotICAgICAgICB2YXIgaWQs
IHJlY29yZCwgcHJvcGVydHksIHRlc3QsIHB1c2g7Ci0gICAgICAgIGZvciAoaWQgaW4gcmVjb3Jk
cykgewotICAgICAgICAgICAgcmVjb3JkID0gcmVjb3Jkc1tpZF07Ci0gICAgICAgICAgICBmb3Ig
KHByb3BlcnR5IGluIHF1ZXJ5KSB7Ci0gICAgICAgICAgICAgICAgdGVzdCA9IHF1ZXJ5W3Byb3Bl
cnR5XTsKLSAgICAgICAgICAgICAgICBwdXNoID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgaWYg
KE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0ZXN0KSA9PT0gJ1tvYmplY3QgUmVnRXhw
XScpIHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaCA9IHRlc3QudGVzdChyZWNvcmRbcHJvcGVy
dHldKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBwdXNo
ID0gcmVjb3JkW3Byb3BlcnR5XSA9PT0gdGVzdDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBpZiAocHVzaCkgewotICAgICAgICAgICAgICAgIHJlc3VsdHMu
cHVzaChyZWNvcmQpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBy
ZXN1bHRzOwotICAgIH0sCi0KLSAgICBmaW5kQWxsOiBmdW5jdGlvbiAoc3RvcmUsIHR5cGUpIHsK
LSAgICAgICAgdmFyIG5hbWVzcGFjZSA9IHRoaXMuX25hbWVzcGFjZUZvclR5cGUodHlwZSk7Ci0g
ICAgICAgIHZhciByZXN1bHRzID0gW107Ci0gICAgICAgIGZvciAodmFyIGlkIGluIG5hbWVzcGFj
ZS5yZWNvcmRzKSB7Ci0gICAgICAgICAgICByZXN1bHRzLnB1c2goRW1iZXIuY29weShuYW1lc3Bh
Y2UucmVjb3Jkc1tpZF0pKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gRW1iZXIuUlNWUC5y
ZXNvbHZlKHJlc3VsdHMpOwotICAgIH0sCi0KLSAgICBjcmVhdGVSZWNvcmQ6IGZ1bmN0aW9uIChz
dG9yZSwgdHlwZSwgcmVjb3JkKSB7Ci0gICAgICAgIHZhciBuYW1lc3BhY2UgPSB0aGlzLl9uYW1l
c3BhY2VGb3JUeXBlKHR5cGUpOwotICAgICAgICB0aGlzLl9hZGRSZWNvcmRUb05hbWVzcGFjZShu
YW1lc3BhY2UsIHJlY29yZCk7Ci0gICAgICAgIHRoaXMuX3NhdmVEYXRhKCk7Ci0gICAgICAgIHJl
dHVybiBFbWJlci5SU1ZQLnJlc29sdmUoKTsKLSAgICB9LAotCi0gICAgdXBkYXRlUmVjb3JkOiBm
dW5jdGlvbiAoc3RvcmUsIHR5cGUsIHJlY29yZCkgewotICAgICAgICB2YXIgbmFtZXNwYWNlID0g
dGhpcy5fbmFtZXNwYWNlRm9yVHlwZSh0eXBlKTsKLSAgICAgICAgdmFyIGlkID0gcmVjb3JkLmdl
dCgnaWQnKTsKLSAgICAgICAgbmFtZXNwYWNlLnJlY29yZHNbaWRdID0gcmVjb3JkLnRvSlNPTih7
IGluY2x1ZGVJZDogdHJ1ZSB9KTsKLSAgICAgICAgdGhpcy5fc2F2ZURhdGEoKTsKLSAgICAgICAg
cmV0dXJuIEVtYmVyLlJTVlAucmVzb2x2ZSgpOwotICAgIH0sCi0KLSAgICBkZWxldGVSZWNvcmQ6
IGZ1bmN0aW9uIChzdG9yZSwgdHlwZSwgcmVjb3JkKSB7Ci0gICAgICAgIHZhciBuYW1lc3BhY2Ug
PSB0aGlzLl9uYW1lc3BhY2VGb3JUeXBlKHR5cGUpOwotICAgICAgICB2YXIgaWQgPSByZWNvcmQu
Z2V0KCdpZCcpOwotICAgICAgICBkZWxldGUgbmFtZXNwYWNlLnJlY29yZHNbaWRdOwotICAgICAg
ICB0aGlzLl9zYXZlRGF0YSgpOwotICAgICAgICByZXR1cm4gRW1iZXIuUlNWUC5yZXNvbHZlKCk7
Ci0gICAgfSwKLQotICAvLyBwcml2YXRlCi0KLSAgICBfZ2V0TmFtZXNwYWNlOiBmdW5jdGlvbiAo
KSB7Ci0gICAgICAgIHJldHVybiB0aGlzLm5hbWVzcGFjZSB8fCAnRFMuTFNBZGFwdGVyJzsKLSAg
ICB9LAotCi0gICAgX2xvYWREYXRhOiBmdW5jdGlvbiAoKSB7Ci0gICAgICAgIHRoaXMuX2RhdGEg
PSB7fTsKLSAgICB9LAotCi0gICAgX3NhdmVEYXRhOiBmdW5jdGlvbiAoKSB7Ci0gICAgfSwKLQot
ICAgIF9uYW1lc3BhY2VGb3JUeXBlOiBmdW5jdGlvbiAodHlwZSkgewotICAgICAgICB2YXIgbmFt
ZXNwYWNlID0gdHlwZS51cmwgfHwgdHlwZS50b1N0cmluZygpOwotICAgICAgICByZXR1cm4gdGhp
cy5fZGF0YVtuYW1lc3BhY2VdIHx8ICgKLSAgICAgICAgICAgIHRoaXMuX2RhdGFbbmFtZXNwYWNl
XSA9IHtyZWNvcmRzOiB7fX0KLSAgICAgICAgKTsKLSAgICB9LAotCi0gICAgX2FkZFJlY29yZFRv
TmFtZXNwYWNlOiBmdW5jdGlvbiAobmFtZXNwYWNlLCByZWNvcmQpIHsKLSAgICAgICAgdmFyIGRh
dGEgPSByZWNvcmQuc2VyaWFsaXplKHtpbmNsdWRlSWQ6IHRydWV9KTsKLSAgICAgICAgbmFtZXNw
YWNlLnJlY29yZHNbZGF0YS5pZF0gPSBkYXRhOwotICAgIH0KLX0pOwpkaWZmIC0tZ2l0IGEvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvZW1iZXJqcy9ib3dlcl9jb21wb25lbnRzL2VtYmVyL2VtYmVyLmpzIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvZW1iZXJqcy9ib3dlcl9jb21wb25lbnRzL2VtYmVyL2VtYmVyLmpzCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBhNTU2NzExYThjODY2MWQ2ZTg0NGJkNjBkMWVhMmNiZjI3Mjc4
NWM3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2VtYmVyanMvYm93ZXJfY29tcG9uZW50cy9lbWJlci9lbWJlci5qcworKysgL2Rldi9u
dWxsCkBAIC0xLDQwNTgzICswLDAgQEAKLS8qIQotICogQG92ZXJ2aWV3ICBFbWJlciAtIEphdmFT
Y3JpcHQgQXBwbGljYXRpb24gRnJhbWV3b3JrCi0gKiBAY29weXJpZ2h0IENvcHlyaWdodCAyMDEx
LTIwMTQgVGlsZGUgSW5jLiBhbmQgY29udHJpYnV0b3JzCi0gKiAgICAgICAgICAgIFBvcnRpb25z
IENvcHlyaWdodCAyMDA2LTIwMTEgU3Ryb2JlIEluYy4KLSAqICAgICAgICAgICAgUG9ydGlvbnMg
Q29weXJpZ2h0IDIwMDgtMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBA
bGljZW5zZSAgIExpY2Vuc2VkIHVuZGVyIE1JVCBsaWNlbnNlCi0gKiAgICAgICAgICAgIFNlZSBo
dHRwczovL3Jhdy5naXRodWIuY29tL2VtYmVyanMvZW1iZXIuanMvbWFzdGVyL0xJQ0VOU0UKLSAq
IEB2ZXJzaW9uICAgMS4zLjEKLSAqLwotCi0KLShmdW5jdGlvbigpIHsKLS8qZ2xvYmFsIF9fZmFp
bF9fKi8KLQotLyoqCi1FbWJlciBEZWJ1ZwotCi1AbW9kdWxlIGVtYmVyCi1Ac3VibW9kdWxlIGVt
YmVyLWRlYnVnCi0qLwotCi0vKioKLUBjbGFzcyBFbWJlcgotKi8KLQotaWYgKCd1bmRlZmluZWQn
ID09PSB0eXBlb2YgRW1iZXIpIHsKLSAgRW1iZXIgPSB7fTsKLQotICBpZiAoJ3VuZGVmaW5lZCcg
IT09IHR5cGVvZiB3aW5kb3cpIHsKLSAgICB3aW5kb3cuRW0gPSB3aW5kb3cuRW1iZXIgPSBFbSA9
IEVtYmVyOwotICB9Ci19Ci0KLS8vIFRoaXMgbmVlZHMgdG8gYmUga2VwdCBpbiBzeW5jIHdpdGgg
dGhlIGxvZ2ljIGluCi0vLyBgcGFja2FnZXMvZW1iZXItbWV0YWwvbGliL2NvcmUuanNgLgotLy8K
LS8vIFRoaXMgaXMgZHVwbGljYXRlZCBoZXJlIHRvIGVuc3VyZSB0aGF0IGBFbWJlci5FTlZgCi0v
LyBpcyBzZXR1cCBldmVuIGlmIGBFbWJlcmAgaXMgbm90IGxvYWRlZCB5ZXQuCi1pZiAoRW1iZXIu
RU5WKSB7Ci0gIC8vIGRvIG5vdGhpbmcgaWYgRW1iZXIuRU5WIGlzIGFscmVhZHkgc2V0dXAKLX0g
ZWxzZSBpZiAoJ3VuZGVmaW5lZCcgIT09IHR5cGVvZiBFbWJlckVOVikgewotICBFbWJlci5FTlYg
PSBFbWJlckVOVjsKLX0gZWxzZSBpZigndW5kZWZpbmVkJyAhPT0gdHlwZW9mIEVOVikgewotICBF
bWJlci5FTlYgPSBFTlY7Ci19IGVsc2UgewotICBFbWJlci5FTlYgPSB7fTsKLX0KLQotaWYgKCEo
J01BTkRBVE9SWV9TRVRURVInIGluIEVtYmVyLkVOVikpIHsKLSAgRW1iZXIuRU5WLk1BTkRBVE9S
WV9TRVRURVIgPSB0cnVlOyAvLyBkZWZhdWx0IHRvIHRydWUgZm9yIGRlYnVnIGRpc3QKLX0KLQot
LyoqCi0gIERlZmluZSBhbiBhc3NlcnRpb24gdGhhdCB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbiBp
ZiB0aGUgY29uZGl0aW9uIGlzIG5vdAotICBtZXQuIEVtYmVyIGJ1aWxkIHRvb2xzIHdpbGwgcmVt
b3ZlIGFueSBjYWxscyB0byBgRW1iZXIuYXNzZXJ0KClgIHdoZW4KLSAgZG9pbmcgYSBwcm9kdWN0
aW9uIGJ1aWxkLiBFeGFtcGxlOgotCi0gIGBgYGphdmFzY3JpcHQKLSAgLy8gVGVzdCBmb3IgdHJ1
dGhpbmVzcwotICBFbWJlci5hc3NlcnQoJ011c3QgcGFzcyBhIHZhbGlkIG9iamVjdCcsIG9iaik7
Ci0gIC8vIEZhaWwgdW5jb25kaXRpb25hbGx5Ci0gIEVtYmVyLmFzc2VydCgnVGhpcyBjb2RlIHBh
dGggc2hvdWxkIG5ldmVyIGJlIHJ1bicpCi0gIGBgYAotCi0gIEBtZXRob2QgYXNzZXJ0Ci0gIEBw
YXJhbSB7U3RyaW5nfSBkZXNjIEEgZGVzY3JpcHRpb24gb2YgdGhlIGFzc2VydGlvbi4gVGhpcyB3
aWxsIGJlY29tZQotICAgIHRoZSB0ZXh0IG9mIHRoZSBFcnJvciB0aHJvd24gaWYgdGhlIGFzc2Vy
dGlvbiBmYWlscy4KLSAgQHBhcmFtIHtCb29sZWFufSB0ZXN0IE11c3QgYmUgdHJ1dGh5IGZvciB0
aGUgYXNzZXJ0aW9uIHRvIHBhc3MuIElmCi0gICAgZmFsc3ksIGFuIGV4Y2VwdGlvbiB3aWxsIGJl
IHRocm93bi4KLSovCi1FbWJlci5hc3NlcnQgPSBmdW5jdGlvbihkZXNjLCB0ZXN0KSB7Ci0gIGlm
ICghdGVzdCkgewotICAgIEVtYmVyLkxvZ2dlci5hc3NlcnQodGVzdCwgZGVzYyk7Ci0gIH0KLQot
ICBpZiAoRW1iZXIudGVzdGluZyAmJiAhdGVzdCkgewotICAgIC8vIHdoZW4gdGVzdGluZywgZW5z
dXJlIHRlc3QgZmFpbHVyZXMgd2hlbiBhc3NlcnRpb25zIGZhaWwKLSAgICB0aHJvdyBuZXcgRW1i
ZXIuRXJyb3IoIkFzc2VydGlvbiBGYWlsZWQ6ICIgKyBkZXNjKTsKLSAgfQotfTsKLQotCi0vKioK
LSAgRGlzcGxheSBhIHdhcm5pbmcgd2l0aCB0aGUgcHJvdmlkZWQgbWVzc2FnZS4gRW1iZXIgYnVp
bGQgdG9vbHMgd2lsbAotICByZW1vdmUgYW55IGNhbGxzIHRvIGBFbWJlci53YXJuKClgIHdoZW4g
ZG9pbmcgYSBwcm9kdWN0aW9uIGJ1aWxkLgotCi0gIEBtZXRob2Qgd2FybgotICBAcGFyYW0ge1N0
cmluZ30gbWVzc2FnZSBBIHdhcm5pbmcgdG8gZGlzcGxheS4KLSAgQHBhcmFtIHtCb29sZWFufSB0
ZXN0IEFuIG9wdGlvbmFsIGJvb2xlYW4uIElmIGZhbHN5LCB0aGUgd2FybmluZwotICAgIHdpbGwg
YmUgZGlzcGxheWVkLgotKi8KLUVtYmVyLndhcm4gPSBmdW5jdGlvbihtZXNzYWdlLCB0ZXN0KSB7
Ci0gIGlmICghdGVzdCkgewotICAgIEVtYmVyLkxvZ2dlci53YXJuKCJXQVJOSU5HOiAiK21lc3Nh
Z2UpOwotICAgIGlmICgndHJhY2UnIGluIEVtYmVyLkxvZ2dlcikgRW1iZXIuTG9nZ2VyLnRyYWNl
KCk7Ci0gIH0KLX07Ci0KLS8qKgotICBEaXNwbGF5IGEgZGVidWcgbm90aWNlLiBFbWJlciBidWls
ZCB0b29scyB3aWxsIHJlbW92ZSBhbnkgY2FsbHMgdG8KLSAgYEVtYmVyLmRlYnVnKClgIHdoZW4g
ZG9pbmcgYSBwcm9kdWN0aW9uIGJ1aWxkLgotCi0gIGBgYGphdmFzY3JpcHQKLSAgRW1iZXIuZGVi
dWcoIkknbSBhIGRlYnVnIG5vdGljZSEiKTsKLSAgYGBgCi0KLSAgQG1ldGhvZCBkZWJ1ZwotICBA
cGFyYW0ge1N0cmluZ30gbWVzc2FnZSBBIGRlYnVnIG1lc3NhZ2UgdG8gZGlzcGxheS4KLSovCi1F
bWJlci5kZWJ1ZyA9IGZ1bmN0aW9uKG1lc3NhZ2UpIHsKLSAgRW1iZXIuTG9nZ2VyLmRlYnVnKCJE
RUJVRzogIittZXNzYWdlKTsKLX07Ci0KLS8qKgotICBEaXNwbGF5IGEgZGVwcmVjYXRpb24gd2Fy
bmluZyB3aXRoIHRoZSBwcm92aWRlZCBtZXNzYWdlIGFuZCBhIHN0YWNrIHRyYWNlCi0gIChDaHJv
bWUgYW5kIEZpcmVmb3ggb25seSkuIEVtYmVyIGJ1aWxkIHRvb2xzIHdpbGwgcmVtb3ZlIGFueSBj
YWxscyB0bwotICBgRW1iZXIuZGVwcmVjYXRlKClgIHdoZW4gZG9pbmcgYSBwcm9kdWN0aW9uIGJ1
aWxkLgotCi0gIEBtZXRob2QgZGVwcmVjYXRlCi0gIEBwYXJhbSB7U3RyaW5nfSBtZXNzYWdlIEEg
ZGVzY3JpcHRpb24gb2YgdGhlIGRlcHJlY2F0aW9uLgotICBAcGFyYW0ge0Jvb2xlYW59IHRlc3Qg
QW4gb3B0aW9uYWwgYm9vbGVhbi4gSWYgZmFsc3ksIHRoZSBkZXByZWNhdGlvbgotICAgIHdpbGwg
YmUgZGlzcGxheWVkLgotKi8KLUVtYmVyLmRlcHJlY2F0ZSA9IGZ1bmN0aW9uKG1lc3NhZ2UsIHRl
c3QpIHsKLSAgaWYgKEVtYmVyLlRFU1RJTkdfREVQUkVDQVRJT04pIHsgcmV0dXJuOyB9Ci0KLSAg
aWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEpIHsgdGVzdCA9IGZhbHNlOyB9Ci0gIGlmICh0ZXN0
KSB7IHJldHVybjsgfQotCi0gIGlmIChFbWJlci5FTlYuUkFJU0VfT05fREVQUkVDQVRJT04pIHsg
dGhyb3cgbmV3IEVtYmVyLkVycm9yKG1lc3NhZ2UpOyB9Ci0KLSAgdmFyIGVycm9yOwotCi0gIC8v
IFdoZW4gdXNpbmcgbmV3IEVycm9yLCB3ZSBjYW4ndCBkbyB0aGUgYXJndW1lbnRzIGNoZWNrIGZv
ciBDaHJvbWUuIEFsdGVybmF0aXZlcyBhcmUgd2VsY29tZQotICB0cnkgeyBfX2ZhaWxfXy5mYWls
KCk7IH0gY2F0Y2ggKGUpIHsgZXJyb3IgPSBlOyB9Ci0KLSAgaWYgKEVtYmVyLkxPR19TVEFDS1RS
QUNFX09OX0RFUFJFQ0FUSU9OICYmIGVycm9yLnN0YWNrKSB7Ci0gICAgdmFyIHN0YWNrLCBzdGFj
a1N0ciA9ICcnOwotICAgIGlmIChlcnJvclsnYXJndW1lbnRzJ10pIHsKLSAgICAgIC8vIENocm9t
ZQotICAgICAgc3RhY2sgPSBlcnJvci5zdGFjay5yZXBsYWNlKC9eXHMrYXRccysvZ20sICcnKS4K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZSgvXihbXlwoXSs/KShbXG4kXSkvZ20s
ICd7YW5vbnltb3VzfSgkMSkkMicpLgotICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNl
KC9eT2JqZWN0Ljxhbm9ueW1vdXM+XHMqXCgoW15cKV0rKVwpL2dtLCAne2Fub255bW91c30oJDEp
Jykuc3BsaXQoJ1xuJyk7Ci0gICAgICBzdGFjay5zaGlmdCgpOwotICAgIH0gZWxzZSB7Ci0gICAg
ICAvLyBGaXJlZm94Ci0gICAgICBzdGFjayA9IGVycm9yLnN0YWNrLnJlcGxhY2UoLyg/OlxuQDow
KT9ccyskL20sICcnKS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZSgvXlwoL2dt
LCAne2Fub255bW91c30oJykuc3BsaXQoJ1xuJyk7Ci0gICAgfQotCi0gICAgc3RhY2tTdHIgPSAi
XG4gICAgIiArIHN0YWNrLnNsaWNlKDIpLmpvaW4oIlxuICAgICIpOwotICAgIG1lc3NhZ2UgPSBt
ZXNzYWdlICsgc3RhY2tTdHI7Ci0gIH0KLQotICBFbWJlci5Mb2dnZXIud2FybigiREVQUkVDQVRJ
T046ICIrbWVzc2FnZSk7Ci19OwotCi0KLQotLyoqCi0gIEFsaWFzIGFuIG9sZCwgZGVwcmVjYXRl
ZCBtZXRob2Qgd2l0aCBpdHMgbmV3IGNvdW50ZXJwYXJ0LgotCi0gIERpc3BsYXkgYSBkZXByZWNh
dGlvbiB3YXJuaW5nIHdpdGggdGhlIHByb3ZpZGVkIG1lc3NhZ2UgYW5kIGEgc3RhY2sgdHJhY2UK
LSAgKENocm9tZSBhbmQgRmlyZWZveCBvbmx5KSB3aGVuIHRoZSBhc3NpZ25lZCBtZXRob2QgaXMg
Y2FsbGVkLgotCi0gIEVtYmVyIGJ1aWxkIHRvb2xzIHdpbGwgbm90IHJlbW92ZSBjYWxscyB0byBg
RW1iZXIuZGVwcmVjYXRlRnVuYygpYCwgdGhvdWdoCi0gIG5vIHdhcm5pbmdzIHdpbGwgYmUgc2hv
d24gaW4gcHJvZHVjdGlvbi4KLQotICBgYGBqYXZhc2NyaXB0Ci0gIEVtYmVyLm9sZE1ldGhvZCA9
IEVtYmVyLmRlcHJlY2F0ZUZ1bmMoIlBsZWFzZSB1c2UgdGhlIG5ldywgdXBkYXRlZCBtZXRob2Qi
LCBFbWJlci5uZXdNZXRob2QpOwotICBgYGAKLQotICBAbWV0aG9kIGRlcHJlY2F0ZUZ1bmMKLSAg
QHBhcmFtIHtTdHJpbmd9IG1lc3NhZ2UgQSBkZXNjcmlwdGlvbiBvZiB0aGUgZGVwcmVjYXRpb24u
Ci0gIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIG5ldyBmdW5jdGlvbiBjYWxsZWQgdG8gcmVw
bGFjZSBpdHMgZGVwcmVjYXRlZCBjb3VudGVycGFydC4KLSAgQHJldHVybiB7RnVuY3Rpb259IGEg
bmV3IGZ1bmN0aW9uIHRoYXQgd3JhcHBlZCB0aGUgb3JpZ2luYWwgZnVuY3Rpb24gd2l0aCBhIGRl
cHJlY2F0aW9uIHdhcm5pbmcKLSovCi1FbWJlci5kZXByZWNhdGVGdW5jID0gZnVuY3Rpb24obWVz
c2FnZSwgZnVuYykgewotICByZXR1cm4gZnVuY3Rpb24oKSB7Ci0gICAgRW1iZXIuZGVwcmVjYXRl
KG1lc3NhZ2UpOwotICAgIHJldHVybiBmdW5jLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7Ci0gIH07
Ci19OwotCi0KLS8vIEluZm9ybSB0aGUgZGV2ZWxvcGVyIGFib3V0IHRoZSBFbWJlciBJbnNwZWN0
b3IgaWYgbm90IGluc3RhbGxlZC4KLWlmICghRW1iZXIudGVzdGluZykgewotICBpZiAodHlwZW9m
IHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmNocm9tZSAmJiB3aW5kb3cuYWRkRXZl
bnRMaXN0ZW5lcikgewotICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgZnVuY3Rp
b24oKSB7Ci0gICAgICBpZiAoZG9jdW1lbnQuYm9keSAmJiBkb2N1bWVudC5ib2R5LmRhdGFzZXQg
JiYgIWRvY3VtZW50LmJvZHkuZGF0YXNldC5lbWJlckV4dGVuc2lvbikgewotICAgICAgICBFbWJl
ci5kZWJ1ZygnRm9yIG1vcmUgYWR2YW5jZWQgZGVidWdnaW5nLCBpbnN0YWxsIHRoZSBFbWJlciBJ
bnNwZWN0b3IgZnJvbSBodHRwczovL2Nocm9tZS5nb29nbGUuY29tL3dlYnN0b3JlL2RldGFpbC9l
bWJlci1pbnNwZWN0b3IvYm1kYmxuY2Vna2Vua2FjaWVpaGZocGpmcHBvY29uaGknKTsKLSAgICAg
IH0KLSAgICB9LCBmYWxzZSk7Ci0gIH0KLX0KLQotfSkoKTsKLQotLyohCi0gKiBAb3ZlcnZpZXcg
IEVtYmVyIC0gSmF2YVNjcmlwdCBBcHBsaWNhdGlvbiBGcmFtZXdvcmsKLSAqIEBjb3B5cmlnaHQg
Q29weXJpZ2h0IDIwMTEtMjAxNCBUaWxkZSBJbmMuIGFuZCBjb250cmlidXRvcnMKLSAqICAgICAg
ICAgICAgUG9ydGlvbnMgQ29weXJpZ2h0IDIwMDYtMjAxMSBTdHJvYmUgSW5jLgotICogICAgICAg
ICAgICBQb3J0aW9ucyBDb3B5cmlnaHQgMjAwOC0yMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqIEBsaWNlbnNlICAgTGljZW5zZWQgdW5kZXIgTUlUIGxpY2Vuc2UKLSAqICAg
ICAgICAgICAgU2VlIGh0dHBzOi8vcmF3LmdpdGh1Yi5jb20vZW1iZXJqcy9lbWJlci5qcy9tYXN0
ZXIvTElDRU5TRQotICogQHZlcnNpb24gICAxLjMuMQotICovCi0KLQotKGZ1bmN0aW9uKCkgewot
dmFyIGRlZmluZSwgcmVxdWlyZU1vZHVsZSwgcmVxdWlyZSwgcmVxdWlyZWpzOwotCi0oZnVuY3Rp
b24oKSB7Ci0gIHZhciByZWdpc3RyeSA9IHt9LCBzZWVuID0ge307Ci0KLSAgZGVmaW5lID0gZnVu
Y3Rpb24obmFtZSwgZGVwcywgY2FsbGJhY2spIHsKLSAgICByZWdpc3RyeVtuYW1lXSA9IHsgZGVw
czogZGVwcywgY2FsbGJhY2s6IGNhbGxiYWNrIH07Ci0gIH07Ci0KLSAgcmVxdWlyZWpzID0gcmVx
dWlyZSA9IHJlcXVpcmVNb2R1bGUgPSBmdW5jdGlvbihuYW1lKSB7Ci0gIHJlcXVpcmVqcy5fZWFr
X3NlZW4gPSByZWdpc3RyeTsKLQotICAgIGlmIChzZWVuW25hbWVdKSB7IHJldHVybiBzZWVuW25h
bWVdOyB9Ci0gICAgc2VlbltuYW1lXSA9IHt9OwotCi0gICAgaWYgKCFyZWdpc3RyeVtuYW1lXSkg
ewotICAgICAgdGhyb3cgbmV3IEVycm9yKCJDb3VsZCBub3QgZmluZCBtb2R1bGUgIiArIG5hbWUp
OwotICAgIH0KLQotICAgIHZhciBtb2QgPSByZWdpc3RyeVtuYW1lXSwKLSAgICAgICAgZGVwcyA9
IG1vZC5kZXBzLAotICAgICAgICBjYWxsYmFjayA9IG1vZC5jYWxsYmFjaywKLSAgICAgICAgcmVp
ZmllZCA9IFtdLAotICAgICAgICBleHBvcnRzOwotCi0gICAgZm9yICh2YXIgaT0wLCBsPWRlcHMu
bGVuZ3RoOyBpPGw7IGkrKykgewotICAgICAgaWYgKGRlcHNbaV0gPT09ICdleHBvcnRzJykgewot
ICAgICAgICByZWlmaWVkLnB1c2goZXhwb3J0cyA9IHt9KTsKLSAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgIHJlaWZpZWQucHVzaChyZXF1aXJlTW9kdWxlKHJlc29sdmUoZGVwc1tpXSkpKTsKLSAgICAg
IH0KLSAgICB9Ci0KLSAgICB2YXIgdmFsdWUgPSBjYWxsYmFjay5hcHBseSh0aGlzLCByZWlmaWVk
KTsKLSAgICByZXR1cm4gc2VlbltuYW1lXSA9IGV4cG9ydHMgfHwgdmFsdWU7Ci0KLSAgICBmdW5j
dGlvbiByZXNvbHZlKGNoaWxkKSB7Ci0gICAgICBpZiAoY2hpbGQuY2hhckF0KDApICE9PSAnLicp
IHsgcmV0dXJuIGNoaWxkOyB9Ci0gICAgICB2YXIgcGFydHMgPSBjaGlsZC5zcGxpdCgiLyIpOwot
ICAgICAgdmFyIHBhcmVudEJhc2UgPSBuYW1lLnNwbGl0KCIvIikuc2xpY2UoMCwgLTEpOwotCi0g
ICAgICBmb3IgKHZhciBpPTAsIGw9cGFydHMubGVuZ3RoOyBpPGw7IGkrKykgewotICAgICAgICB2
YXIgcGFydCA9IHBhcnRzW2ldOwotCi0gICAgICAgIGlmIChwYXJ0ID09PSAnLi4nKSB7IHBhcmVu
dEJhc2UucG9wKCk7IH0KLSAgICAgICAgZWxzZSBpZiAocGFydCA9PT0gJy4nKSB7IGNvbnRpbnVl
OyB9Ci0gICAgICAgIGVsc2UgeyBwYXJlbnRCYXNlLnB1c2gocGFydCk7IH0KLSAgICAgIH0KLQot
ICAgICAgcmV0dXJuIHBhcmVudEJhc2Uuam9pbigiLyIpOwotICAgIH0KLSAgfTsKLX0pKCk7Ci0o
ZnVuY3Rpb24oKSB7Ci0vKmdsb2JhbHMgRW06dHJ1ZSBFTlYgRW1iZXJFTlYgTWV0YW1vcnBoRU5W
OnRydWUgKi8KLQotLyoqCi1AbW9kdWxlIGVtYmVyCi1Ac3VibW9kdWxlIGVtYmVyLW1ldGFsCi0q
LwotCi0vKioKLSAgQWxsIEVtYmVyIG1ldGhvZHMgYW5kIGZ1bmN0aW9ucyBhcmUgZGVmaW5lZCBp
bnNpZGUgb2YgdGhpcyBuYW1lc3BhY2UuIFlvdQotICBnZW5lcmFsbHkgc2hvdWxkIG5vdCBhZGQg
bmV3IHByb3BlcnRpZXMgdG8gdGhpcyBuYW1lc3BhY2UgYXMgaXQgbWF5IGJlCi0gIG92ZXJ3cml0
dGVuIGJ5IGZ1dHVyZSB2ZXJzaW9ucyBvZiBFbWJlci4KLQotICBZb3UgY2FuIGFsc28gdXNlIHRo
ZSBzaG9ydGhhbmQgYEVtYCBpbnN0ZWFkIG9mIGBFbWJlcmAuCi0KLSAgRW1iZXItUnVudGltZSBp
cyBhIGZyYW1ld29yayB0aGF0IHByb3ZpZGVzIGNvcmUgZnVuY3Rpb25zIGZvciBFbWJlciBpbmNs
dWRpbmcKLSAgY3Jvc3MtcGxhdGZvcm0gZnVuY3Rpb25zLCBzdXBwb3J0IGZvciBwcm9wZXJ0eSBv
YnNlcnZpbmcgYW5kIG9iamVjdHMuIEl0cwotICBmb2N1cyBpcyBvbiBzbWFsbCBzaXplIGFuZCBw
ZXJmb3JtYW5jZS4gWW91IGNhbiB1c2UgdGhpcyBpbiBwbGFjZSBvZiBvcgotICBhbG9uZy1zaWRl
IG90aGVyIGNyb3NzLXBsYXRmb3JtIGxpYnJhcmllcyBzdWNoIGFzIGpRdWVyeS4KLQotICBUaGUg
Y29yZSBSdW50aW1lIGZyYW1ld29yayBpcyBiYXNlZCBvbiB0aGUgalF1ZXJ5IEFQSSB3aXRoIGEg
bnVtYmVyIG9mCi0gIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbnMuCi0KLSAgQGNsYXNzIEVtYmVy
Ci0gIEBzdGF0aWMKLSAgQHZlcnNpb24gMS4zLjEKLSovCi0KLWlmICgndW5kZWZpbmVkJyA9PT0g
dHlwZW9mIEVtYmVyKSB7Ci0gIC8vIENyZWF0ZSBjb3JlIG9iamVjdC4gTWFrZSBpdCBhY3QgbGlr
ZSBhbiBpbnN0YW5jZSBvZiBFbWJlci5OYW1lc3BhY2Ugc28gdGhhdAotICAvLyBvYmplY3RzIGFz
c2lnbmVkIHRvIGl0IGFyZSBnaXZlbiBhIHNhbmUgc3RyaW5nIHJlcHJlc2VudGF0aW9uLgotICBF
bWJlciA9IHt9OwotfQotCi0vLyBEZWZhdWx0IGltcG9ydHMsIGV4cG9ydHMgYW5kIGxvb2t1cCB0
byB0aGUgZ2xvYmFsIG9iamVjdDsKLXZhciBpbXBvcnRzID0gRW1iZXIuaW1wb3J0cyA9IEVtYmVy
LmltcG9ydHMgfHwgdGhpczsKLXZhciBleHBvcnRzID0gRW1iZXIuZXhwb3J0cyA9IEVtYmVyLmV4
cG9ydHMgfHwgdGhpczsKLXZhciBsb29rdXAgID0gRW1iZXIubG9va3VwICA9IEVtYmVyLmxvb2t1
cCAgfHwgdGhpczsKLQotLy8gYWxpYXNlcyBuZWVkZWQgdG8ga2VlcCBtaW5pZmllcnMgZnJvbSBy
ZW1vdmluZyB0aGUgZ2xvYmFsIGNvbnRleHQKLWV4cG9ydHMuRW0gPSBleHBvcnRzLkVtYmVyID0g
RW0gPSBFbWJlcjsKLQotLy8gTWFrZSBzdXJlIHRoZXNlIGFyZSBzZXQgd2hldGhlciBFbWJlciB3
YXMgYWxyZWFkeSBkZWZpbmVkIG9yIG5vdAotCi1FbWJlci5pc05hbWVzcGFjZSA9IHRydWU7Ci0K
LUVtYmVyLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7IHJldHVybiAiRW1iZXIiOyB9OwotCi0KLS8q
KgotICBAcHJvcGVydHkgVkVSU0lPTgotICBAdHlwZSBTdHJpbmcKLSAgQGRlZmF1bHQgJzEuMy4x
JwotICBAc3RhdGljCi0qLwotRW1iZXIuVkVSU0lPTiA9ICcxLjMuMSc7Ci0KLS8qKgotICBTdGFu
ZGFyZCBlbnZpcm9ubWVudGFsIHZhcmlhYmxlcy4gWW91IGNhbiBkZWZpbmUgdGhlc2UgaW4gYSBn
bG9iYWwgYEVtYmVyRU5WYAotICB2YXJpYWJsZSBiZWZvcmUgbG9hZGluZyBFbWJlciB0byBjb250
cm9sIHZhcmlvdXMgY29uZmlndXJhdGlvbiBzZXR0aW5ncy4KLQotICBGb3IgYmFja3dhcmRzIGNv
bXBhdGliaWxpdHkgd2l0aCBlYXJsaWVyIHZlcnNpb25zIG9mIEVtYmVyIHRoZSBnbG9iYWwgYEVO
VmAKLSAgdmFyaWFibGUgd2lsbCBiZSB1c2VkIGlmIGBFbWJlckVOVmAgaXMgbm90IGRlZmluZWQu
Ci0KLSAgQHByb3BlcnR5IEVOVgotICBAdHlwZSBIYXNoCi0qLwotCi0vLyBUaGlzIG5lZWRzIHRv
IGJlIGtlcHQgaW4gc3luYyB3aXRoIHRoZSBsb2dpYyBpbgotLy8gYHBhY2thZ2VzL2VtYmVyLWRl
YnVnL2xpYi9tYWluLmpzYC4KLWlmIChFbWJlci5FTlYpIHsKLSAgLy8gZG8gbm90aGluZyBpZiBF
bWJlci5FTlYgaXMgYWxyZWFkeSBzZXR1cAotfSBlbHNlIGlmICgndW5kZWZpbmVkJyAhPT0gdHlw
ZW9mIEVtYmVyRU5WKSB7Ci0gIEVtYmVyLkVOViA9IEVtYmVyRU5WOwotfSBlbHNlIGlmKCd1bmRl
ZmluZWQnICE9PSB0eXBlb2YgRU5WKSB7Ci0gIEVtYmVyLkVOViA9IEVOVjsKLX0gZWxzZSB7Ci0g
IEVtYmVyLkVOViA9IHt9OwotfQotCi1FbWJlci5jb25maWcgPSBFbWJlci5jb25maWcgfHwge307
Ci0KLS8vIFdlIGRpc2FibGUgdGhlIFJBTkdFIEFQSSBieSBkZWZhdWx0IGZvciBwZXJmb3JtYW5j
ZSByZWFzb25zCi1pZiAoJ3VuZGVmaW5lZCcgPT09IHR5cGVvZiBFbWJlci5FTlYuRElTQUJMRV9S
QU5HRV9BUEkpIHsKLSAgRW1iZXIuRU5WLkRJU0FCTEVfUkFOR0VfQVBJID0gdHJ1ZTsKLX0KLQot
aWYgKCJ1bmRlZmluZWQiID09PSB0eXBlb2YgTWV0YW1vcnBoRU5WKSB7Ci0gIGV4cG9ydHMuTWV0
YW1vcnBoRU5WID0ge307Ci19Ci0KLU1ldGFtb3JwaEVOVi5ESVNBQkxFX1JBTkdFX0FQSSA9IEVt
YmVyLkVOVi5ESVNBQkxFX1JBTkdFX0FQSTsKLQotLyoqCi0gIEhhc2ggb2YgZW5hYmxlZCBDYW5h
cnkgZmVhdHVyZXMuIEFkZCB0byBiZWZvcmUgY3JlYXRpbmcgeW91ciBhcHBsaWNhdGlvbi4KLQot
ICBZb3UgY2FuIGFsc28gZGVmaW5lIGBFTlYuRkVBVFVSRVNgIGlmIHlvdSBuZWVkIHRvIGVuYWJs
ZSBmZWF0dXJlcyBmbGFnZ2VkIGF0IHJ1bnRpbWUuCi0KLSAgQHByb3BlcnR5IEZFQVRVUkVTCi0g
IEB0eXBlIEhhc2gKLSovCi0KLUVtYmVyLkZFQVRVUkVTID0gRW1iZXIuRU5WLkZFQVRVUkVTIHx8
IHt9OwotCi0vKioKLSAgVGVzdCB0aGF0IGEgZmVhdHVyZSBpcyBlbmFibGVkLiBQYXJzZWQgYnkg
RW1iZXIncyBidWlsZCB0b29scyB0byBsZWF2ZQotICBleHBlcmltZW50YWwgZmVhdHVyZXMgb3V0
IG9mIGJldGEvc3RhYmxlIGJ1aWxkcy4KLQotICBZb3UgY2FuIGRlZmluZSB0aGUgZm9sbG93aW5n
IGNvbmZpZ3VyYXRpb24gb3B0aW9uczoKLQotICAqIGBFTlYuRU5BQkxFX0FMTF9GRUFUVVJFU2Ag
LSBmb3JjZSBhbGwgZmVhdHVyZXMgdG8gYmUgZW5hYmxlZC4KLSAgKiBgRU5WLkVOQUJMRV9PUFRJ
T05BTF9GRUFUVVJFU2AgLSBlbmFibGUgYW55IGZlYXR1cmVzIHRoYXQgaGF2ZSBub3QgYmVlbiBl
eHBsaWNpdGx5Ci0gICAgZW5hYmxlZC9kaXNhYmxlZC4KLQotICBAbWV0aG9kIGlzRW5hYmxlZAot
ICBAcGFyYW0ge3N0cmluZ30gZmVhdHVyZQotKi8KLQotRW1iZXIuRkVBVFVSRVMuaXNFbmFibGVk
ID0gZnVuY3Rpb24oZmVhdHVyZSkgewotICB2YXIgZmVhdHVyZVZhbHVlID0gRW1iZXIuRkVBVFVS
RVNbZmVhdHVyZV07Ci0KLSAgaWYgKEVtYmVyLkVOVi5FTkFCTEVfQUxMX0ZFQVRVUkVTKSB7Ci0g
ICAgcmV0dXJuIHRydWU7Ci0gIH0gZWxzZSBpZiAoZmVhdHVyZVZhbHVlID09PSB0cnVlIHx8IGZl
YXR1cmVWYWx1ZSA9PT0gZmFsc2UgfHwgZmVhdHVyZVZhbHVlID09PSB1bmRlZmluZWQpIHsKLSAg
ICByZXR1cm4gZmVhdHVyZVZhbHVlOwotICB9IGVsc2UgaWYgKEVtYmVyLkVOVi5FTkFCTEVfT1BU
SU9OQUxfRkVBVFVSRVMpIHsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfSBlbHNlIHsKLSAgICByZXR1
cm4gZmFsc2U7Ci0gIH0KLX07Ci0KLS8vIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLS8vIEJPT1RTVFJBUAotLy8KLQotLyoqCi0gIERl
dGVybWluZXMgd2hldGhlciBFbWJlciBzaG91bGQgZW5oYW5jZXMgc29tZSBidWlsdC1pbiBvYmpl
Y3QgcHJvdG90eXBlcyB0bwotICBwcm92aWRlIGEgbW9yZSBmcmllbmRseSBBUEkuIElmIGVuYWJs
ZWQsIGEgZmV3IG1ldGhvZHMgd2lsbCBiZSBhZGRlZCB0bwotICBgRnVuY3Rpb25gLCBgU3RyaW5n
YCwgYW5kIGBBcnJheWAuIGBPYmplY3QucHJvdG90eXBlYCB3aWxsIG5vdCBiZSBlbmhhbmNlZCwK
LSAgd2hpY2ggaXMgdGhlIG9uZSB0aGF0IGNhdXNlcyBtb3N0IHRyb3VibGUgZm9yIHBlb3BsZS4K
LQotICBJbiBnZW5lcmFsIHdlIHJlY29tbWVuZCBsZWF2aW5nIHRoaXMgb3B0aW9uIHNldCB0byB0
cnVlIHNpbmNlIGl0IHJhcmVseQotICBjb25mbGljdHMgd2l0aCBvdGhlciBjb2RlLiBJZiB5b3Ug
bmVlZCB0byB0dXJuIGl0IG9mZiBob3dldmVyLCB5b3UgY2FuCi0gIGRlZmluZSBhbiBgRU5WLkVY
VEVORF9QUk9UT1RZUEVTYCBjb25maWcgdG8gZGlzYWJsZSBpdC4KLQotICBAcHJvcGVydHkgRVhU
RU5EX1BST1RPVFlQRVMKLSAgQHR5cGUgQm9vbGVhbgotICBAZGVmYXVsdCB0cnVlCi0qLwotRW1i
ZXIuRVhURU5EX1BST1RPVFlQRVMgPSBFbWJlci5FTlYuRVhURU5EX1BST1RPVFlQRVM7Ci0KLWlm
ICh0eXBlb2YgRW1iZXIuRVhURU5EX1BST1RPVFlQRVMgPT09ICd1bmRlZmluZWQnKSB7Ci0gIEVt
YmVyLkVYVEVORF9QUk9UT1RZUEVTID0gdHJ1ZTsKLX0KLQotLyoqCi0gIERldGVybWluZXMgd2hl
dGhlciBFbWJlciBsb2dzIGEgZnVsbCBzdGFjayB0cmFjZSBkdXJpbmcgZGVwcmVjYXRpb24gd2Fy
bmluZ3MKLQotICBAcHJvcGVydHkgTE9HX1NUQUNLVFJBQ0VfT05fREVQUkVDQVRJT04KLSAgQHR5
cGUgQm9vbGVhbgotICBAZGVmYXVsdCB0cnVlCi0qLwotRW1iZXIuTE9HX1NUQUNLVFJBQ0VfT05f
REVQUkVDQVRJT04gPSAoRW1iZXIuRU5WLkxPR19TVEFDS1RSQUNFX09OX0RFUFJFQ0FUSU9OICE9
PSBmYWxzZSk7Ci0KLS8qKgotICBEZXRlcm1pbmVzIHdoZXRoZXIgRW1iZXIgc2hvdWxkIGFkZCBF
Q01BU2NyaXB0IDUgc2hpbXMgdG8gb2xkZXIgYnJvd3NlcnMuCi0KLSAgQHByb3BlcnR5IFNISU1f
RVM1Ci0gIEB0eXBlIEJvb2xlYW4KLSAgQGRlZmF1bHQgRW1iZXIuRVhURU5EX1BST1RPVFlQRVMK
LSovCi1FbWJlci5TSElNX0VTNSA9IChFbWJlci5FTlYuU0hJTV9FUzUgPT09IGZhbHNlKSA/IGZh
bHNlIDogRW1iZXIuRVhURU5EX1BST1RPVFlQRVM7Ci0KLS8qKgotICBEZXRlcm1pbmVzIHdoZXRo
ZXIgRW1iZXIgbG9ncyBpbmZvIGFib3V0IHZlcnNpb24gb2YgdXNlZCBsaWJyYXJpZXMKLQotICBA
cHJvcGVydHkgTE9HX1ZFUlNJT04KLSAgQHR5cGUgQm9vbGVhbgotICBAZGVmYXVsdCB0cnVlCi0q
LwotRW1iZXIuTE9HX1ZFUlNJT04gPSAoRW1iZXIuRU5WLkxPR19WRVJTSU9OID09PSBmYWxzZSkg
PyBmYWxzZSA6IHRydWU7Ci0KLS8qKgotICBFbXB0eSBmdW5jdGlvbi4gVXNlZnVsIGZvciBzb21l
IG9wZXJhdGlvbnMuIEFsd2F5cyByZXR1cm5zIGB0aGlzYC4KLQotICBAbWV0aG9kIEsKLSAgQHBy
aXZhdGUKLSAgQHJldHVybiB7T2JqZWN0fQotKi8KLUVtYmVyLksgPSBmdW5jdGlvbigpIHsgcmV0
dXJuIHRoaXM7IH07Ci0KLQotLy8gU3R1YiBvdXQgdGhlIG1ldGhvZHMgZGVmaW5lZCBieSB0aGUg
ZW1iZXItZGVidWcgcGFja2FnZSBpbiBjYXNlIGl0J3Mgbm90IGxvYWRlZAotCi1pZiAoJ3VuZGVm
aW5lZCcgPT09IHR5cGVvZiBFbWJlci5hc3NlcnQpIHsgRW1iZXIuYXNzZXJ0ID0gRW1iZXIuSzsg
fQotaWYgKCd1bmRlZmluZWQnID09PSB0eXBlb2YgRW1iZXIud2FybikgeyBFbWJlci53YXJuID0g
RW1iZXIuSzsgfQotaWYgKCd1bmRlZmluZWQnID09PSB0eXBlb2YgRW1iZXIuZGVidWcpIHsgRW1i
ZXIuZGVidWcgPSBFbWJlci5LOyB9Ci1pZiAoJ3VuZGVmaW5lZCcgPT09IHR5cGVvZiBFbWJlci5k
ZXByZWNhdGUpIHsgRW1iZXIuZGVwcmVjYXRlID0gRW1iZXIuSzsgfQotaWYgKCd1bmRlZmluZWQn
ID09PSB0eXBlb2YgRW1iZXIuZGVwcmVjYXRlRnVuYykgewotICBFbWJlci5kZXByZWNhdGVGdW5j
ID0gZnVuY3Rpb24oXywgZnVuYykgeyByZXR1cm4gZnVuYzsgfTsKLX0KLQotLyoqCi0gIFByZXZp
b3VzbHkgd2UgdXNlZCBgRW1iZXIuJC51dWlkYCwgaG93ZXZlciBgJC51dWlkYCBoYXMgYmVlbiBy
ZW1vdmVkIGZyb20KLSAgalF1ZXJ5IG1hc3Rlci4gV2UnbGwganVzdCBib290c3RyYXAgb3VyIG93
biB1dWlkIG5vdy4KLQotICBAcHJvcGVydHkgdXVpZAotICBAdHlwZSBOdW1iZXIKLSAgQHByaXZh
dGUKLSovCi1FbWJlci51dWlkID0gMDsKLQotLyoqCi0gIE1lcmdlIHRoZSBjb250ZW50cyBvZiB0
d28gb2JqZWN0cyB0b2dldGhlciBpbnRvIHRoZSBmaXJzdCBvYmplY3QuCi0KLSAgYGBgamF2YXNj
cmlwdAotICBFbWJlci5tZXJnZSh7Zmlyc3Q6ICdUb20nfSwge2xhc3Q6ICdEYWxlJ30pOyAvLyB7
Zmlyc3Q6ICdUb20nLCBsYXN0OiAnRGFsZSd9Ci0gIHZhciBhID0ge2ZpcnN0OiAnWWVodWRhJ30s
IGIgPSB7bGFzdDogJ0thdHonfTsKLSAgRW1iZXIubWVyZ2UoYSwgYik7IC8vIGEgPT0ge2ZpcnN0
OiAnWWVodWRhJywgbGFzdDogJ0thdHonfSwgYiA9PSB7bGFzdDogJ0thdHonfQotICBgYGAKLQot
ICBAbWV0aG9kIG1lcmdlCi0gIEBmb3IgRW1iZXIKLSAgQHBhcmFtIHtPYmplY3R9IG9yaWdpbmFs
IFRoZSBvYmplY3QgdG8gbWVyZ2UgaW50bwotICBAcGFyYW0ge09iamVjdH0gdXBkYXRlcyBUaGUg
b2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyBmcm9tCi0gIEByZXR1cm4ge09iamVjdH0KLSovCi1F
bWJlci5tZXJnZSA9IGZ1bmN0aW9uKG9yaWdpbmFsLCB1cGRhdGVzKSB7Ci0gIGZvciAodmFyIHBy
b3AgaW4gdXBkYXRlcykgewotICAgIGlmICghdXBkYXRlcy5oYXNPd25Qcm9wZXJ0eShwcm9wKSkg
eyBjb250aW51ZTsgfQotICAgIG9yaWdpbmFsW3Byb3BdID0gdXBkYXRlc1twcm9wXTsKLSAgfQot
ICByZXR1cm4gb3JpZ2luYWw7Ci19OwotCi0vKioKLSAgUmV0dXJucyB0cnVlIGlmIHRoZSBwYXNz
ZWQgdmFsdWUgaXMgbnVsbCBvciB1bmRlZmluZWQuIFRoaXMgYXZvaWRzIGVycm9ycwotICBmcm9t
IEpTTGludCBjb21wbGFpbmluZyBhYm91dCB1c2Ugb2YgPT0sIHdoaWNoIGNhbiBiZSB0ZWNobmlj
YWxseQotICBjb25mdXNpbmcuCi0KLSAgYGBgamF2YXNjcmlwdAotICBFbWJlci5pc05vbmUoKTsg
ICAgICAgICAgICAgIC8vIHRydWUKLSAgRW1iZXIuaXNOb25lKG51bGwpOyAgICAgICAgICAvLyB0
cnVlCi0gIEVtYmVyLmlzTm9uZSh1bmRlZmluZWQpOyAgICAgLy8gdHJ1ZQotICBFbWJlci5pc05v
bmUoJycpOyAgICAgICAgICAgIC8vIGZhbHNlCi0gIEVtYmVyLmlzTm9uZShbXSk7ICAgICAgICAg
ICAgLy8gZmFsc2UKLSAgRW1iZXIuaXNOb25lKGZ1bmN0aW9uKCkge30pOyAgLy8gZmFsc2UKLSAg
YGBgCi0KLSAgQG1ldGhvZCBpc05vbmUKLSAgQGZvciBFbWJlcgotICBAcGFyYW0ge09iamVjdH0g
b2JqIFZhbHVlIHRvIHRlc3QKLSAgQHJldHVybiB7Qm9vbGVhbn0KLSovCi1FbWJlci5pc05vbmUg
PSBmdW5jdGlvbihvYmopIHsKLSAgcmV0dXJuIG9iaiA9PT0gbnVsbCB8fCBvYmogPT09IHVuZGVm
aW5lZDsKLX07Ci1FbWJlci5ub25lID0gRW1iZXIuZGVwcmVjYXRlRnVuYygiRW1iZXIubm9uZSBp
cyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlIEVtYmVyLmlzTm9uZSBpbnN0ZWFkLiIsIEVtYmVyLmlz
Tm9uZSk7Ci0KLS8qKgotICBWZXJpZmllcyB0aGF0IGEgdmFsdWUgaXMgYG51bGxgIG9yIGFuIGVt
cHR5IHN0cmluZywgZW1wdHkgYXJyYXksCi0gIG9yIGVtcHR5IGZ1bmN0aW9uLgotCi0gIENvbnN0
cmFpbnMgdGhlIHJ1bGVzIG9uIGBFbWJlci5pc05vbmVgIGJ5IHJldHVybmluZyBmYWxzZSBmb3Ig
ZW1wdHkKLSAgc3RyaW5nIGFuZCBlbXB0eSBhcnJheXMuCi0KLSAgYGBgamF2YXNjcmlwdAotICBF
bWJlci5pc0VtcHR5KCk7ICAgICAgICAgICAgICAgIC8vIHRydWUKLSAgRW1iZXIuaXNFbXB0eShu
dWxsKTsgICAgICAgICAgICAvLyB0cnVlCi0gIEVtYmVyLmlzRW1wdHkodW5kZWZpbmVkKTsgICAg
ICAgLy8gdHJ1ZQotICBFbWJlci5pc0VtcHR5KCcnKTsgICAgICAgICAgICAgIC8vIHRydWUKLSAg
RW1iZXIuaXNFbXB0eShbXSk7ICAgICAgICAgICAgICAvLyB0cnVlCi0gIEVtYmVyLmlzRW1wdHko
J0FkYW0gSGF3a2lucycpOyAgLy8gZmFsc2UKLSAgRW1iZXIuaXNFbXB0eShbMCwxLDJdKTsgICAg
ICAgICAvLyBmYWxzZQotICBgYGAKLQotICBAbWV0aG9kIGlzRW1wdHkKLSAgQGZvciBFbWJlcgot
ICBAcGFyYW0ge09iamVjdH0gb2JqIFZhbHVlIHRvIHRlc3QKLSAgQHJldHVybiB7Qm9vbGVhbn0K
LSovCi1FbWJlci5pc0VtcHR5ID0gZnVuY3Rpb24ob2JqKSB7Ci0gIHJldHVybiBFbWJlci5pc05v
bmUob2JqKSB8fCAob2JqLmxlbmd0aCA9PT0gMCAmJiB0eXBlb2Ygb2JqICE9PSAnZnVuY3Rpb24n
KSB8fCAodHlwZW9mIG9iaiA9PT0gJ29iamVjdCcgJiYgRW1iZXIuZ2V0KG9iaiwgJ2xlbmd0aCcp
ID09PSAwKTsKLX07Ci1FbWJlci5lbXB0eSA9IEVtYmVyLmRlcHJlY2F0ZUZ1bmMoIkVtYmVyLmVt
cHR5IGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgRW1iZXIuaXNFbXB0eSBpbnN0ZWFkLiIsIEVt
YmVyLmlzRW1wdHkpIDsKLQotCi19KSgpOwotCi0KLQotKGZ1bmN0aW9uKCkgewotLypnbG9iYWxz
IE5vZGUgKi8KLS8qKgotQG1vZHVsZSBlbWJlci1tZXRhbAotKi8KLQotLyoqCi0gIFBsYXRmb3Jt
IHNwZWNpZmljIG1ldGhvZHMgYW5kIGZlYXR1cmUgZGV0ZWN0b3JzIG5lZWRlZCBieSB0aGUgZnJh
bWV3b3JrLgotCi0gIEBjbGFzcyBwbGF0Zm9ybQotICBAbmFtZXNwYWNlIEVtYmVyCi0gIEBzdGF0
aWMKLSovCi12YXIgcGxhdGZvcm0gPSBFbWJlci5wbGF0Zm9ybSA9IHt9OwotCi0KLS8qKgotICBJ
ZGVudGljYWwgdG8gYE9iamVjdC5jcmVhdGUoKWAuIEltcGxlbWVudHMgaWYgbm90IGF2YWlsYWJs
ZSBuYXRpdmVseS4KLQotICBAbWV0aG9kIGNyZWF0ZQotICBAZm9yIEVtYmVyCi0qLwotRW1iZXIu
Y3JlYXRlID0gT2JqZWN0LmNyZWF0ZTsKLQotLy8gSUU4IGhhcyBPYmplY3QuY3JlYXRlIGJ1dCBp
dCBjb3VsZG4ndCB0cmVhdCBwcm9wZXJ0eSBkZXNjcmlwdG9ycy4KLWlmIChFbWJlci5jcmVhdGUp
IHsKLSAgaWYgKEVtYmVyLmNyZWF0ZSh7YTogMX0sIHthOiB7dmFsdWU6IDJ9fSkuYSAhPT0gMikg
ewotICAgIEVtYmVyLmNyZWF0ZSA9IG51bGw7Ci0gIH0KLX0KLQotLy8gU1RVQl9PQkpFQ1RfQ1JF
QVRFIGFsbG93cyB1cyB0byBvdmVycmlkZSBvdGhlciBsaWJyYXJpZXMgdGhhdCBzdHViCi0vLyBP
YmplY3QuY3JlYXRlIGRpZmZlcmVudCB0aGFuIHdlIHdvdWxkIHByZWZlcgotaWYgKCFFbWJlci5j
cmVhdGUgfHwgRW1iZXIuRU5WLlNUVUJfT0JKRUNUX0NSRUFURSkgewotICB2YXIgSyA9IGZ1bmN0
aW9uKCkge307Ci0KLSAgRW1iZXIuY3JlYXRlID0gZnVuY3Rpb24ob2JqLCBwcm9wcykgewotICAg
IEsucHJvdG90eXBlID0gb2JqOwotICAgIG9iaiA9IG5ldyBLKCk7Ci0gICAgaWYgKHByb3BzKSB7
Ci0gICAgICBLLnByb3RvdHlwZSA9IG9iajsKLSAgICAgIGZvciAodmFyIHByb3AgaW4gcHJvcHMp
IHsKLSAgICAgICAgSy5wcm90b3R5cGVbcHJvcF0gPSBwcm9wc1twcm9wXS52YWx1ZTsKLSAgICAg
IH0KLSAgICAgIG9iaiA9IG5ldyBLKCk7Ci0gICAgfQotICAgIEsucHJvdG90eXBlID0gbnVsbDsK
LQotICAgIHJldHVybiBvYmo7Ci0gIH07Ci0KLSAgRW1iZXIuY3JlYXRlLmlzU2ltdWxhdGVkID0g
dHJ1ZTsKLX0KLQotdmFyIGRlZmluZVByb3BlcnR5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5Owot
dmFyIGNhblJlZGVmaW5lUHJvcGVydGllcywgY2FuRGVmaW5lUHJvcGVydHlPbkRPTTsKLQotLy8g
Q2F0Y2ggSUU4IHdoZXJlIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSBleGlzdHMgYnV0IG9ubHkgd29y
a3Mgb24gRE9NIGVsZW1lbnRzCi1pZiAoZGVmaW5lUHJvcGVydHkpIHsKLSAgdHJ5IHsKLSAgICBk
ZWZpbmVQcm9wZXJ0eSh7fSwgJ2EnLHtnZXQ6ZnVuY3Rpb24oKSB7fX0pOwotICB9IGNhdGNoIChl
KSB7Ci0gICAgZGVmaW5lUHJvcGVydHkgPSBudWxsOwotICB9Ci19Ci0KLWlmIChkZWZpbmVQcm9w
ZXJ0eSkgewotICAvLyBEZXRlY3RzIGEgYnVnIGluIEFuZHJvaWQgPDMuMiB3aGVyZSB5b3UgY2Fu
bm90IHJlZGVmaW5lIGEgcHJvcGVydHkgdXNpbmcKLSAgLy8gT2JqZWN0LmRlZmluZVByb3BlcnR5
IG9uY2UgYWNjZXNzb3JzIGhhdmUgYWxyZWFkeSBiZWVuIHNldC4KLSAgY2FuUmVkZWZpbmVQcm9w
ZXJ0aWVzID0gKGZ1bmN0aW9uKCkgewotICAgIHZhciBvYmogPSB7fTsKLQotICAgIGRlZmluZVBy
b3BlcnR5KG9iaiwgJ2EnLCB7Ci0gICAgICBjb25maWd1cmFibGU6IHRydWUsCi0gICAgICBlbnVt
ZXJhYmxlOiB0cnVlLAotICAgICAgZ2V0OiBmdW5jdGlvbigpIHsgfSwKLSAgICAgIHNldDogZnVu
Y3Rpb24oKSB7IH0KLSAgICB9KTsKLQotICAgIGRlZmluZVByb3BlcnR5KG9iaiwgJ2EnLCB7Ci0g
ICAgICBjb25maWd1cmFibGU6IHRydWUsCi0gICAgICBlbnVtZXJhYmxlOiB0cnVlLAotICAgICAg
d3JpdGFibGU6IHRydWUsCi0gICAgICB2YWx1ZTogdHJ1ZQotICAgIH0pOwotCi0gICAgcmV0dXJu
IG9iai5hID09PSB0cnVlOwotICB9KSgpOwotCi0gIC8vIFRoaXMgaXMgZm9yIFNhZmFyaSA1LjAs
IHdoaWNoIHN1cHBvcnRzIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSwgYnV0IG5vdAotICAvLyBvbiBE
T00gbm9kZXMuCi0gIGNhbkRlZmluZVByb3BlcnR5T25ET00gPSAoZnVuY3Rpb24oKSB7Ci0gICAg
dHJ5IHsKLSAgICAgIGRlZmluZVByb3BlcnR5KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rpdicp
LCAnZGVmaW5lUHJvcGVydHlPbkRPTScsIHt9KTsKLSAgICAgIHJldHVybiB0cnVlOwotICAgIH0g
Y2F0Y2goZSkgeyB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0pKCk7Ci0KLSAgaWYgKCFjYW5S
ZWRlZmluZVByb3BlcnRpZXMpIHsKLSAgICBkZWZpbmVQcm9wZXJ0eSA9IG51bGw7Ci0gIH0gZWxz
ZSBpZiAoIWNhbkRlZmluZVByb3BlcnR5T25ET00pIHsKLSAgICBkZWZpbmVQcm9wZXJ0eSA9IGZ1
bmN0aW9uKG9iaiwga2V5TmFtZSwgZGVzYykgewotICAgICAgdmFyIGlzTm9kZTsKLQotICAgICAg
aWYgKHR5cGVvZiBOb2RlID09PSAib2JqZWN0IikgewotICAgICAgICBpc05vZGUgPSBvYmogaW5z
dGFuY2VvZiBOb2RlOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgaXNOb2RlID0gdHlwZW9mIG9i
aiA9PT0gIm9iamVjdCIgJiYgdHlwZW9mIG9iai5ub2RlVHlwZSA9PT0gIm51bWJlciIgJiYgdHlw
ZW9mIG9iai5ub2RlTmFtZSA9PT0gInN0cmluZyI7Ci0gICAgICB9Ci0KLSAgICAgIGlmIChpc05v
ZGUpIHsKLSAgICAgICAgLy8gVE9ETzogU2hvdWxkIHdlIGhhdmUgYSB3YXJuaW5nIGhlcmU/Ci0g
ICAgICAgIHJldHVybiAob2JqW2tleU5hbWVdID0gZGVzYy52YWx1ZSk7Ci0gICAgICB9IGVsc2Ug
ewotICAgICAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5TmFtZSwgZGVz
Yyk7Ci0gICAgICB9Ci0gICAgfTsKLSAgfQotfQotCi0vKioKLUBjbGFzcyBwbGF0Zm9ybQotQG5h
bWVzcGFjZSBFbWJlcgotKi8KLQotLyoqCi0gIElkZW50aWNhbCB0byBgT2JqZWN0LmRlZmluZVBy
b3BlcnR5KClgLiBJbXBsZW1lbnRzIGFzIG11Y2ggZnVuY3Rpb25hbGl0eQotICBhcyBwb3NzaWJs
ZSBpZiBub3QgYXZhaWxhYmxlIG5hdGl2ZWx5LgotCi0gIEBtZXRob2QgZGVmaW5lUHJvcGVydHkK
LSAgQHBhcmFtIHtPYmplY3R9IG9iaiBUaGUgb2JqZWN0IHRvIG1vZGlmeQotICBAcGFyYW0ge1N0
cmluZ30ga2V5TmFtZSBwcm9wZXJ0eSBuYW1lIHRvIG1vZGlmeQotICBAcGFyYW0ge09iamVjdH0g
ZGVzYyBkZXNjcmlwdG9yIGhhc2gKLSAgQHJldHVybiB7dm9pZH0KLSovCi1wbGF0Zm9ybS5kZWZp
bmVQcm9wZXJ0eSA9IGRlZmluZVByb3BlcnR5OwotCi0vKioKLSAgU2V0IHRvIHRydWUgaWYgdGhl
IHBsYXRmb3JtIHN1cHBvcnRzIG5hdGl2ZSBnZXR0ZXJzIGFuZCBzZXR0ZXJzLgotCi0gIEBwcm9w
ZXJ0eSBoYXNQcm9wZXJ0eUFjY2Vzc29ycwotICBAZmluYWwKLSovCi1wbGF0Zm9ybS5oYXNQcm9w
ZXJ0eUFjY2Vzc29ycyA9IHRydWU7Ci0KLWlmICghcGxhdGZvcm0uZGVmaW5lUHJvcGVydHkpIHsK
LSAgcGxhdGZvcm0uaGFzUHJvcGVydHlBY2Nlc3NvcnMgPSBmYWxzZTsKLQotICBwbGF0Zm9ybS5k
ZWZpbmVQcm9wZXJ0eSA9IGZ1bmN0aW9uKG9iaiwga2V5TmFtZSwgZGVzYykgewotICAgIGlmICgh
ZGVzYy5nZXQpIHsgb2JqW2tleU5hbWVdID0gZGVzYy52YWx1ZTsgfQotICB9OwotCi0gIHBsYXRm
b3JtLmRlZmluZVByb3BlcnR5LmlzU2ltdWxhdGVkID0gdHJ1ZTsKLX0KLQotaWYgKEVtYmVyLkVO
Vi5NQU5EQVRPUllfU0VUVEVSICYmICFwbGF0Zm9ybS5oYXNQcm9wZXJ0eUFjY2Vzc29ycykgewot
ICBFbWJlci5FTlYuTUFOREFUT1JZX1NFVFRFUiA9IGZhbHNlOwotfQotCi19KSgpOwotCi0KLQot
KGZ1bmN0aW9uKCkgewotLypqc2hpbnQgbmV3Y2FwOmZhbHNlKi8KLS8qKgotQG1vZHVsZSBlbWJl
ci1tZXRhbAotKi8KLQotLy8gTk9URTogVGhlcmUgaXMgYSBidWcgaW4ganNoaW50IHRoYXQgZG9l
c24ndCByZWNvZ25pemUgYE9iamVjdCgpYCB3aXRob3V0IGBuZXdgCi0vLyBhcyBiZWluZyBvayB1
bmxlc3MgYm90aCBgbmV3Y2FwOmZhbHNlYCBhbmQgbm90IGB1c2Ugc3RyaWN0YC4KLS8vIGh0dHBz
Oi8vZ2l0aHViLmNvbS9qc2hpbnQvanNoaW50L2lzc3Vlcy8zOTIKLQotLy8gVGVzdGluZyB0aGlz
IGlzIG5vdCBpZGVhbCwgYnV0IHdlIHdhbnQgdG8gdXNlIG5hdGl2ZSBmdW5jdGlvbnMKLS8vIGlm
IGF2YWlsYWJsZSwgYnV0IG5vdCB0byB1c2UgdmVyc2lvbnMgY3JlYXRlZCBieSBsaWJyYXJpZXMg
bGlrZSBQcm90b3R5cGUKLXZhciBpc05hdGl2ZUZ1bmMgPSBmdW5jdGlvbihmdW5jKSB7Ci0gIC8v
IFRoaXMgc2hvdWxkIHByb2JhYmx5IHdvcmsgaW4gYWxsIGJyb3dzZXJzIGxpa2VseSB0byBoYXZl
IEVTNSBhcnJheSBtZXRob2RzCi0gIHJldHVybiBmdW5jICYmIEZ1bmN0aW9uLnByb3RvdHlwZS50
b1N0cmluZy5jYWxsKGZ1bmMpLmluZGV4T2YoJ1tuYXRpdmUgY29kZV0nKSA+IC0xOwotfTsKLQot
Ly8gRnJvbTogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4vSmF2YVNjcmlwdC9SZWZl
cmVuY2UvR2xvYmFsX09iamVjdHMvYXJyYXkvbWFwCi12YXIgYXJyYXlNYXAgPSBpc05hdGl2ZUZ1
bmMoQXJyYXkucHJvdG90eXBlLm1hcCkgPyBBcnJheS5wcm90b3R5cGUubWFwIDogZnVuY3Rpb24o
ZnVuIC8qLCB0aGlzcCAqLykgewotICAvLyJ1c2Ugc3RyaWN0IjsKLQotICBpZiAodGhpcyA9PT0g
dm9pZCAwIHx8IHRoaXMgPT09IG51bGwpIHsKLSAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCk7Ci0g
IH0KLQotICB2YXIgdCA9IE9iamVjdCh0aGlzKTsKLSAgdmFyIGxlbiA9IHQubGVuZ3RoID4+PiAw
OwotICBpZiAodHlwZW9mIGZ1biAhPT0gImZ1bmN0aW9uIikgewotICAgIHRocm93IG5ldyBUeXBl
RXJyb3IoKTsKLSAgfQotCi0gIHZhciByZXMgPSBuZXcgQXJyYXkobGVuKTsKLSAgdmFyIHRoaXNw
ID0gYXJndW1lbnRzWzFdOwotICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAg
aWYgKGkgaW4gdCkgewotICAgICAgcmVzW2ldID0gZnVuLmNhbGwodGhpc3AsIHRbaV0sIGksIHQp
OwotICAgIH0KLSAgfQotCi0gIHJldHVybiByZXM7Ci19OwotCi0vLyBGcm9tOiBodHRwczovL2Rl
dmVsb3Blci5tb3ppbGxhLm9yZy9lbi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0
cy9hcnJheS9mb3JlYWNoCi12YXIgYXJyYXlGb3JFYWNoID0gaXNOYXRpdmVGdW5jKEFycmF5LnBy
b3RvdHlwZS5mb3JFYWNoKSA/IEFycmF5LnByb3RvdHlwZS5mb3JFYWNoIDogZnVuY3Rpb24oZnVu
IC8qLCB0aGlzcCAqLykgewotICAvLyJ1c2Ugc3RyaWN0IjsKLQotICBpZiAodGhpcyA9PT0gdm9p
ZCAwIHx8IHRoaXMgPT09IG51bGwpIHsKLSAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCk7Ci0gIH0K
LQotICB2YXIgdCA9IE9iamVjdCh0aGlzKTsKLSAgdmFyIGxlbiA9IHQubGVuZ3RoID4+PiAwOwot
ICBpZiAodHlwZW9mIGZ1biAhPT0gImZ1bmN0aW9uIikgewotICAgIHRocm93IG5ldyBUeXBlRXJy
b3IoKTsKLSAgfQotCi0gIHZhciB0aGlzcCA9IGFyZ3VtZW50c1sxXTsKLSAgZm9yICh2YXIgaSA9
IDA7IGkgPCBsZW47IGkrKykgewotICAgIGlmIChpIGluIHQpIHsKLSAgICAgIGZ1bi5jYWxsKHRo
aXNwLCB0W2ldLCBpLCB0KTsKLSAgICB9Ci0gIH0KLX07Ci0KLXZhciBhcnJheUluZGV4T2YgPSBp
c05hdGl2ZUZ1bmMoQXJyYXkucHJvdG90eXBlLmluZGV4T2YpID8gQXJyYXkucHJvdG90eXBlLmlu
ZGV4T2YgOiBmdW5jdGlvbiAob2JqLCBmcm9tSW5kZXgpIHsKLSAgaWYgKGZyb21JbmRleCA9PT0g
bnVsbCB8fCBmcm9tSW5kZXggPT09IHVuZGVmaW5lZCkgeyBmcm9tSW5kZXggPSAwOyB9Ci0gIGVs
c2UgaWYgKGZyb21JbmRleCA8IDApIHsgZnJvbUluZGV4ID0gTWF0aC5tYXgoMCwgdGhpcy5sZW5n
dGggKyBmcm9tSW5kZXgpOyB9Ci0gIGZvciAodmFyIGkgPSBmcm9tSW5kZXgsIGogPSB0aGlzLmxl
bmd0aDsgaSA8IGo7IGkrKykgewotICAgIGlmICh0aGlzW2ldID09PSBvYmopIHsgcmV0dXJuIGk7
IH0KLSAgfQotICByZXR1cm4gLTE7Ci19OwotCi0vKioKLSAgQXJyYXkgcG9seWZpbGxzIHRvIHN1
cHBvcnQgRVM1IGZlYXR1cmVzIGluIG9sZGVyIGJyb3dzZXJzLgotCi0gIEBuYW1lc3BhY2UgRW1i
ZXIKLSAgQHByb3BlcnR5IEFycmF5UG9seWZpbGxzCi0qLwotRW1iZXIuQXJyYXlQb2x5ZmlsbHMg
PSB7Ci0gIG1hcDogYXJyYXlNYXAsCi0gIGZvckVhY2g6IGFycmF5Rm9yRWFjaCwKLSAgaW5kZXhP
ZjogYXJyYXlJbmRleE9mCi19OwotCi1pZiAoRW1iZXIuU0hJTV9FUzUpIHsKLSAgaWYgKCFBcnJh
eS5wcm90b3R5cGUubWFwKSB7Ci0gICAgQXJyYXkucHJvdG90eXBlLm1hcCA9IGFycmF5TWFwOwot
ICB9Ci0KLSAgaWYgKCFBcnJheS5wcm90b3R5cGUuZm9yRWFjaCkgewotICAgIEFycmF5LnByb3Rv
dHlwZS5mb3JFYWNoID0gYXJyYXlGb3JFYWNoOwotICB9Ci0KLSAgaWYgKCFBcnJheS5wcm90b3R5
cGUuaW5kZXhPZikgewotICAgIEFycmF5LnByb3RvdHlwZS5pbmRleE9mID0gYXJyYXlJbmRleE9m
OwotICB9Ci19Ci0KLX0pKCk7Ci0KLQotCi0oZnVuY3Rpb24oKSB7Ci12YXIgZXJyb3JQcm9wcyA9
IFsnZGVzY3JpcHRpb24nLCAnZmlsZU5hbWUnLCAnbGluZU51bWJlcicsICdtZXNzYWdlJywgJ25h
bWUnLCAnbnVtYmVyJywgJ3N0YWNrJ107Ci0KLS8qKgotICBBIHN1YmNsYXNzIG9mIHRoZSBKYXZh
U2NyaXB0IEVycm9yIG9iamVjdCBmb3IgdXNlIGluIEVtYmVyLgotCi0gIEBjbGFzcyBFcnJvcgot
ICBAbmFtZXNwYWNlIEVtYmVyCi0gIEBleHRlbmRzIEVycm9yCi0gIEBjb25zdHJ1Y3RvcgotKi8K
LUVtYmVyLkVycm9yID0gZnVuY3Rpb24oKSB7Ci0gIHZhciB0bXAgPSBFcnJvci5hcHBseSh0aGlz
LCBhcmd1bWVudHMpOwotCi0gIC8vIEFkZHMgYSBgc3RhY2tgIHByb3BlcnR5IHRvIHRoZSBnaXZl
biBlcnJvciBvYmplY3QgdGhhdCB3aWxsIHlpZWxkIHRoZQotICAvLyBzdGFjayB0cmFjZSBhdCB0
aGUgdGltZSBjYXB0dXJlU3RhY2tUcmFjZSB3YXMgY2FsbGVkLgotICAvLyBXaGVuIGNvbGxlY3Rp
bmcgdGhlIHN0YWNrIHRyYWNlIGFsbCBmcmFtZXMgYWJvdmUgdGhlIHRvcG1vc3QgY2FsbAotICAv
LyB0byB0aGlzIGZ1bmN0aW9uLCBpbmNsdWRpbmcgdGhhdCBjYWxsLCB3aWxsIGJlIGxlZnQgb3V0
IG9mIHRoZQotICAvLyBzdGFjayB0cmFjZS4KLSAgLy8gVGhpcyBpcyB1c2VmdWwgYmVjYXVzZSB3
ZSBjYW4gaGlkZSBFbWJlciBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzCi0gIC8vIHRoYXQgYXJlIG5v
dCB2ZXJ5IGhlbHBmdWwgZm9yIHRoZSB1c2VyLgotICBpZiAoRXJyb3IuY2FwdHVyZVN0YWNrVHJh
Y2UpIHsKLSAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCBFbWJlci5FcnJvcik7Ci0g
IH0KLSAgLy8gVW5mb3J0dW5hdGVseSBlcnJvcnMgYXJlIG5vdCBlbnVtZXJhYmxlIGluIENocm9t
ZSAoYXQgbGVhc3QpLCBzbyBgZm9yIHByb3AgaW4gdG1wYCBkb2Vzbid0IHdvcmsuCi0gIGZvciAo
dmFyIGlkeCA9IDA7IGlkeCA8IGVycm9yUHJvcHMubGVuZ3RoOyBpZHgrKykgewotICAgIHRoaXNb
ZXJyb3JQcm9wc1tpZHhdXSA9IHRtcFtlcnJvclByb3BzW2lkeF1dOwotICB9Ci19OwotCi1FbWJl
ci5FcnJvci5wcm90b3R5cGUgPSBFbWJlci5jcmVhdGUoRXJyb3IucHJvdG90eXBlKTsKLQotLy8g
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
LgotLy8gRVJST1IgSEFORExJTkcKLS8vCi0KLS8qKgotICBBIGZ1bmN0aW9uIG1heSBiZSBhc3Np
Z25lZCB0byBgRW1iZXIub25lcnJvcmAgdG8gYmUgY2FsbGVkIHdoZW4gRW1iZXIKLSAgaW50ZXJu
YWxzIGVuY291bnRlciBhbiBlcnJvci4gVGhpcyBpcyB1c2VmdWwgZm9yIHNwZWNpYWxpemVkIGVy
cm9yIGhhbmRsaW5nCi0gIGFuZCByZXBvcnRpbmcgY29kZS4KLQotICBgYGBqYXZhc2NyaXB0Ci0g
IEVtYmVyLm9uZXJyb3IgPSBmdW5jdGlvbihlcnJvcikgewotICAgIEVtLiQuYWpheCgnL3JlcG9y
dC1lcnJvcicsICdQT1NUJywgewotICAgICAgc3RhY2s6IGVycm9yLnN0YWNrLAotICAgICAgb3Ro
ZXJJbmZvcm1hdGlvbjogJ3doYXRldmVyIGFwcCBzdGF0ZSB5b3Ugd2FudCB0byBwcm92aWRlJwot
ICAgIH0pOwotICB9OwotICBgYGAKLQotICBAZXZlbnQgb25lcnJvcgotICBAZm9yIEVtYmVyCi0g
IEBwYXJhbSB7RXhjZXB0aW9ufSBlcnJvciB0aGUgZXJyb3Igb2JqZWN0Ci0qLwotRW1iZXIub25l
cnJvciA9IG51bGw7Ci0KLS8qKgotICBXcmFwIGNvZGUgYmxvY2sgaW4gYSB0cnkvY2F0Y2ggaWYg
YEVtYmVyLm9uZXJyb3JgIGlzIHNldC4KLQotICBAcHJpdmF0ZQotICBAbWV0aG9kIGhhbmRsZUVy
cm9ycwotICBAZm9yIEVtYmVyCi0gIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMKLSAgQHBhcmFtIFtj
b250ZXh0XQotKi8KLUVtYmVyLmhhbmRsZUVycm9ycyA9IGZ1bmN0aW9uKGZ1bmMsIGNvbnRleHQp
IHsKLSAgLy8gVW5mb3J0dW5hdGVseSBpbiBzb21lIGJyb3dzZXJzIHdlIGxvc2UgdGhlIGJhY2t0
cmFjZSBpZiB3ZSByZXRocm93IHRoZSBleGlzdGluZyBlcnJvciwKLSAgLy8gc28gaW4gdGhlIGV2
ZW50IHRoYXQgd2UgZG9uJ3QgaGF2ZSBhbiBgb25lcnJvcmAgaGFuZGxlciB3ZSBkb24ndCB3cmFw
IGluIGEgdHJ5L2NhdGNoCi0gIGlmICgnZnVuY3Rpb24nID09PSB0eXBlb2YgRW1iZXIub25lcnJv
cikgewotICAgIHRyeSB7Ci0gICAgICByZXR1cm4gZnVuYy5jYWxsKGNvbnRleHQgfHwgdGhpcyk7
Ci0gICAgfSBjYXRjaCAoZXJyb3IpIHsKLSAgICAgIEVtYmVyLm9uZXJyb3IoZXJyb3IpOwotICAg
IH0KLSAgfSBlbHNlIHsKLSAgICByZXR1cm4gZnVuYy5jYWxsKGNvbnRleHQgfHwgdGhpcyk7Ci0g
IH0KLX07Ci0KLX0pKCk7Ci0KLQotCi0oZnVuY3Rpb24oKSB7Ci0vKioKLUBtb2R1bGUgZW1iZXIt
bWV0YWwKLSovCi0KLS8qKgotICBQcmVmaXggdXNlZCBmb3IgZ3VpZHMgdGhyb3VnaCBvdXQgRW1i
ZXIuCi0gIEBwcml2YXRlCi0qLwotRW1iZXIuR1VJRF9QUkVGSVggPSAnZW1iZXInOwotCi0KLXZh
ciBvX2RlZmluZVByb3BlcnR5ID0gRW1iZXIucGxhdGZvcm0uZGVmaW5lUHJvcGVydHksCi0gICAg
b19jcmVhdGUgPSBFbWJlci5jcmVhdGUsCi0gICAgLy8gVXNlZCBmb3IgZ3VpZCBnZW5lcmF0aW9u
Li4uCi0gICAgR1VJRF9LRVkgPSAnX19lbWJlcicrICgrIG5ldyBEYXRlKCkpLAotICAgIHV1aWQg
ICAgICAgICA9IDAsCi0gICAgbnVtYmVyQ2FjaGUgID0gW10sCi0gICAgc3RyaW5nQ2FjaGUgID0g
e307Ci0KLXZhciBNQU5EQVRPUllfU0VUVEVSID0gRW1iZXIuRU5WLk1BTkRBVE9SWV9TRVRURVI7
Ci0KLS8qKgotICBBIHVuaXF1ZSBrZXkgdXNlZCB0byBhc3NpZ24gZ3VpZHMgYW5kIG90aGVyIHBy
aXZhdGUgbWV0YWRhdGEgdG8gb2JqZWN0cy4KLSAgSWYgeW91IGluc3BlY3QgYW4gb2JqZWN0IGlu
IHlvdXIgYnJvd3NlciBkZWJ1Z2dlciB5b3Ugd2lsbCBvZnRlbiBzZWUgdGhlc2UuCi0gIFRoZXkg
Y2FuIGJlIHNhZmVseSBpZ25vcmVkLgotCi0gIE9uIGJyb3dzZXJzIHRoYXQgc3VwcG9ydCBpdCwg
dGhlc2UgcHJvcGVydGllcyBhcmUgYWRkZWQgd2l0aCBlbnVtZXJhdGlvbgotICBkaXNhYmxlZCBz
byB0aGV5IHdvbid0IHNob3cgdXAgd2hlbiB5b3UgaXRlcmF0ZSBvdmVyIHlvdXIgcHJvcGVydGll
cy4KLQotICBAcHJpdmF0ZQotICBAcHJvcGVydHkgR1VJRF9LRVkKLSAgQGZvciBFbWJlcgotICBA
dHlwZSBTdHJpbmcKLSAgQGZpbmFsCi0qLwotRW1iZXIuR1VJRF9LRVkgPSBHVUlEX0tFWTsKLQot
dmFyIEdVSURfREVTQyA9IHsKLSAgd3JpdGFibGU6ICAgIGZhbHNlLAotICBjb25maWd1cmFibGU6
IGZhbHNlLAotICBlbnVtZXJhYmxlOiAgZmFsc2UsCi0gIHZhbHVlOiBudWxsCi19OwotCi0vKioK
LSAgR2VuZXJhdGVzIGEgbmV3IGd1aWQsIG9wdGlvbmFsbHkgc2F2aW5nIHRoZSBndWlkIHRvIHRo
ZSBvYmplY3QgdGhhdCB5b3UKLSAgcGFzcyBpbi4gWW91IHdpbGwgcmFyZWx5IG5lZWQgdG8gdXNl
IHRoaXMgbWV0aG9kLiBJbnN0ZWFkIHlvdSBzaG91bGQKLSAgY2FsbCBgRW1iZXIuZ3VpZEZvcihv
YmopYCwgd2hpY2ggcmV0dXJuIGFuIGV4aXN0aW5nIGd1aWQgaWYgYXZhaWxhYmxlLgotCi0gIEBw
cml2YXRlCi0gIEBtZXRob2QgZ2VuZXJhdGVHdWlkCi0gIEBmb3IgRW1iZXIKLSAgQHBhcmFtIHtP
YmplY3R9IFtvYmpdIE9iamVjdCB0aGUgZ3VpZCB3aWxsIGJlIHVzZWQgZm9yLiBJZiBwYXNzZWQg
aW4sIHRoZSBndWlkIHdpbGwKLSAgICBiZSBzYXZlZCBvbiB0aGUgb2JqZWN0IGFuZCByZXVzZWQg
d2hlbmV2ZXIgeW91IHBhc3MgdGhlIHNhbWUgb2JqZWN0Ci0gICAgYWdhaW4uCi0KLSAgICBJZiBu
byBvYmplY3QgaXMgcGFzc2VkLCBqdXN0IGdlbmVyYXRlIGEgbmV3IGd1aWQuCi0gIEBwYXJhbSB7
U3RyaW5nfSBbcHJlZml4XSBQcmVmaXggdG8gcGxhY2UgaW4gZnJvbnQgb2YgdGhlIGd1aWQuIFVz
ZWZ1bCB3aGVuIHlvdSB3YW50IHRvCi0gICAgc2VwYXJhdGUgdGhlIGd1aWQgaW50byBzZXBhcmF0
ZSBuYW1lc3BhY2VzLgotICBAcmV0dXJuIHtTdHJpbmd9IHRoZSBndWlkCi0qLwotRW1iZXIuZ2Vu
ZXJhdGVHdWlkID0gZnVuY3Rpb24gZ2VuZXJhdGVHdWlkKG9iaiwgcHJlZml4KSB7Ci0gIGlmICgh
cHJlZml4KSBwcmVmaXggPSBFbWJlci5HVUlEX1BSRUZJWDsKLSAgdmFyIHJldCA9IChwcmVmaXgg
KyAodXVpZCsrKSk7Ci0gIGlmIChvYmopIHsKLSAgICBHVUlEX0RFU0MudmFsdWUgPSByZXQ7Ci0g
ICAgb19kZWZpbmVQcm9wZXJ0eShvYmosIEdVSURfS0VZLCBHVUlEX0RFU0MpOwotICB9Ci0gIHJl
dHVybiByZXQ7Ci19OwotCi0vKioKLSAgUmV0dXJucyBhIHVuaXF1ZSBpZCBmb3IgdGhlIG9iamVj
dC4gSWYgdGhlIG9iamVjdCBkb2VzIG5vdCB5ZXQgaGF2ZSBhIGd1aWQsCi0gIG9uZSB3aWxsIGJl
IGFzc2lnbmVkIHRvIGl0LiBZb3UgY2FuIGNhbGwgdGhpcyBvbiBhbnkgb2JqZWN0LAotICBgRW1i
ZXIuT2JqZWN0YC1iYXNlZCBvciBub3QsIGJ1dCBiZSBhd2FyZSB0aGF0IGl0IHdpbGwgYWRkIGEg
YF9ndWlkYAotICBwcm9wZXJ0eS4KLQotICBZb3UgY2FuIGFsc28gdXNlIHRoaXMgbWV0aG9kIG9u
IERPTSBFbGVtZW50IG9iamVjdHMuCi0KLSAgQHByaXZhdGUKLSAgQG1ldGhvZCBndWlkRm9yCi0g
IEBmb3IgRW1iZXIKLSAgQHBhcmFtIHtPYmplY3R9IG9iaiBhbnkgb2JqZWN0LCBzdHJpbmcsIG51
bWJlciwgRWxlbWVudCwgb3IgcHJpbWl0aXZlCi0gIEByZXR1cm4ge1N0cmluZ30gdGhlIHVuaXF1
ZSBndWlkIGZvciB0aGlzIGluc3RhbmNlLgotKi8KLUVtYmVyLmd1aWRGb3IgPSBmdW5jdGlvbiBn
dWlkRm9yKG9iaikgewotCi0gIC8vIHNwZWNpYWwgY2FzZXMgd2hlcmUgd2UgZG9uJ3Qgd2FudCB0
byBhZGQgYSBrZXkgdG8gb2JqZWN0Ci0gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgcmV0dXJuICIo
dW5kZWZpbmVkKSI7Ci0gIGlmIChvYmogPT09IG51bGwpIHJldHVybiAiKG51bGwpIjsKLQotICB2
YXIgcmV0OwotICB2YXIgdHlwZSA9IHR5cGVvZiBvYmo7Ci0KLSAgLy8gRG9uJ3QgYWxsb3cgcHJv
dG90eXBlIGNoYW5nZXMgdG8gU3RyaW5nIGV0Yy4gdG8gY2hhbmdlIHRoZSBndWlkRm9yCi0gIHN3
aXRjaCh0eXBlKSB7Ci0gICAgY2FzZSAnbnVtYmVyJzoKLSAgICAgIHJldCA9IG51bWJlckNhY2hl
W29ial07Ci0gICAgICBpZiAoIXJldCkgcmV0ID0gbnVtYmVyQ2FjaGVbb2JqXSA9ICdudScrb2Jq
OwotICAgICAgcmV0dXJuIHJldDsKLQotICAgIGNhc2UgJ3N0cmluZyc6Ci0gICAgICByZXQgPSBz
dHJpbmdDYWNoZVtvYmpdOwotICAgICAgaWYgKCFyZXQpIHJldCA9IHN0cmluZ0NhY2hlW29ial0g
PSAnc3QnKyh1dWlkKyspOwotICAgICAgcmV0dXJuIHJldDsKLQotICAgIGNhc2UgJ2Jvb2xlYW4n
OgotICAgICAgcmV0dXJuIG9iaiA/ICcodHJ1ZSknIDogJyhmYWxzZSknOwotCi0gICAgZGVmYXVs
dDoKLSAgICAgIGlmIChvYmpbR1VJRF9LRVldKSByZXR1cm4gb2JqW0dVSURfS0VZXTsKLSAgICAg
IGlmIChvYmogPT09IE9iamVjdCkgcmV0dXJuICcoT2JqZWN0KSc7Ci0gICAgICBpZiAob2JqID09
PSBBcnJheSkgIHJldHVybiAnKEFycmF5KSc7Ci0gICAgICByZXQgPSAnZW1iZXInKyh1dWlkKysp
OwotICAgICAgR1VJRF9ERVNDLnZhbHVlID0gcmV0OwotICAgICAgb19kZWZpbmVQcm9wZXJ0eShv
YmosIEdVSURfS0VZLCBHVUlEX0RFU0MpOwotICAgICAgcmV0dXJuIHJldDsKLSAgfQotfTsKLQot
Ly8gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLgotLy8gTUVUQQotLy8KLQotdmFyIE1FVEFfREVTQyA9IHsKLSAgd3JpdGFibGU6ICAgIHRy
dWUsCi0gIGNvbmZpZ3VyYWJsZTogZmFsc2UsCi0gIGVudW1lcmFibGU6ICBmYWxzZSwKLSAgdmFs
dWU6IG51bGwKLX07Ci0KLXZhciBNRVRBX0tFWSA9IEVtYmVyLkdVSURfS0VZKydfbWV0YSc7Ci0K
LS8qKgotICBUaGUga2V5IHVzZWQgdG8gc3RvcmUgbWV0YSBpbmZvcm1hdGlvbiBvbiBvYmplY3Qg
Zm9yIHByb3BlcnR5IG9ic2VydmluZy4KLQotICBAcHJvcGVydHkgTUVUQV9LRVkKLSAgQGZvciBF
bWJlcgotICBAcHJpdmF0ZQotICBAZmluYWwKLSAgQHR5cGUgU3RyaW5nCi0qLwotRW1iZXIuTUVU
QV9LRVkgPSBNRVRBX0tFWTsKLQotdmFyIGlzRGVmaW5lUHJvcGVydHlTaW11bGF0ZWQgPSBFbWJl
ci5wbGF0Zm9ybS5kZWZpbmVQcm9wZXJ0eS5pc1NpbXVsYXRlZDsKLQotZnVuY3Rpb24gTWV0YShv
YmopIHsKLSAgdGhpcy5kZXNjcyA9IHt9OwotICB0aGlzLndhdGNoaW5nID0ge307Ci0gIHRoaXMu
Y2FjaGUgPSB7fTsKLSAgdGhpcy5zb3VyY2UgPSBvYmo7Ci19Ci0KLU1ldGEucHJvdG90eXBlID0g
ewotICBkZXNjczogbnVsbCwKLSAgZGVwczogbnVsbCwKLSAgd2F0Y2hpbmc6IG51bGwsCi0gIGxp
c3RlbmVyczogbnVsbCwKLSAgY2FjaGU6IG51bGwsCi0gIHNvdXJjZTogbnVsbCwKLSAgbWl4aW5z
OiBudWxsLAotICBiaW5kaW5nczogbnVsbCwKLSAgY2hhaW5zOiBudWxsLAotICBjaGFpbldhdGNo
ZXJzOiBudWxsLAotICB2YWx1ZXM6IG51bGwKLX07Ci0KLWlmIChpc0RlZmluZVByb3BlcnR5U2lt
dWxhdGVkKSB7Ci0gIC8vIG9uIHBsYXRmb3JtcyB0aGF0IGRvbid0IHN1cHBvcnQgZW51bWVyYWJs
ZSBmYWxzZQotICAvLyBtYWtlIG1ldGEgZmFpbCBqUXVlcnkuaXNQbGFpbk9iamVjdCgpIHRvIGhp
ZGUgZnJvbQotICAvLyBqUXVlcnkuZXh0ZW5kKCkgYnkgaGF2aW5nIGEgcHJvcGVydHkgdGhhdCBm
YWlscwotICAvLyBoYXNPd25Qcm9wZXJ0eSBjaGVjay4KLSAgTWV0YS5wcm90b3R5cGUuX19wcmV2
ZW50UGxhaW5PYmplY3RfXyA9IHRydWU7Ci0KLSAgLy8gV2l0aG91dCBub24tZW51bWVyYWJsZSBw
cm9wZXJ0aWVzLCBtZXRhIG9iamVjdHMgd2lsbCBiZSBvdXRwdXQgaW4gSlNPTgotICAvLyB1bmxl
c3MgZXhwbGljaXRseSBzdXBwcmVzc2VkCi0gIE1ldGEucHJvdG90eXBlLnRvSlNPTiA9IGZ1bmN0
aW9uICgpIHsgfTsKLX0KLQotLy8gUGxhY2Vob2xkZXIgZm9yIG5vbi13cml0YWJsZSBtZXRhcy4K
LXZhciBFTVBUWV9NRVRBID0gbmV3IE1ldGEobnVsbCk7Ci0KLWlmIChNQU5EQVRPUllfU0VUVEVS
KSB7IEVNUFRZX01FVEEudmFsdWVzID0ge307IH0KLQotRW1iZXIuRU1QVFlfTUVUQSA9IEVNUFRZ
X01FVEE7Ci0KLS8qKgotICBSZXRyaWV2ZXMgdGhlIG1ldGEgaGFzaCBmb3IgYW4gb2JqZWN0LiBJ
ZiBgd3JpdGFibGVgIGlzIHRydWUgZW5zdXJlcyB0aGUKLSAgaGFzaCBpcyB3cml0YWJsZSBmb3Ig
dGhpcyBvYmplY3QgYXMgd2VsbC4KLQotICBUaGUgbWV0YSBvYmplY3QgY29udGFpbnMgaW5mb3Jt
YXRpb24gYWJvdXQgY29tcHV0ZWQgcHJvcGVydHkgZGVzY3JpcHRvcnMgYXMKLSAgd2VsbCBhcyBh
bnkgd2F0Y2hlZCBwcm9wZXJ0aWVzIGFuZCBvdGhlciBpbmZvcm1hdGlvbi4gWW91IGdlbmVyYWxs
eSB3aWxsCi0gIG5vdCBhY2Nlc3MgdGhpcyBpbmZvcm1hdGlvbiBkaXJlY3RseSBidXQgaW5zdGVh
ZCB3b3JrIHdpdGggaGlnaGVyIGxldmVsCi0gIG1ldGhvZHMgdGhhdCBtYW5pcHVsYXRlIHRoaXMg
aGFzaCBpbmRpcmVjdGx5LgotCi0gIEBtZXRob2QgbWV0YQotICBAZm9yIEVtYmVyCi0gIEBwcml2
YXRlCi0KLSAgQHBhcmFtIHtPYmplY3R9IG9iaiBUaGUgb2JqZWN0IHRvIHJldHJpZXZlIG1ldGEg
Zm9yCi0gIEBwYXJhbSB7Qm9vbGVhbn0gW3dyaXRhYmxlPXRydWVdIFBhc3MgYGZhbHNlYCBpZiB5
b3UgZG8gbm90IGludGVuZCB0byBtb2RpZnkKLSAgICB0aGUgbWV0YSBoYXNoLCBhbGxvd2luZyB0
aGUgbWV0aG9kIHRvIGF2b2lkIG1ha2luZyBhbiB1bm5lY2Vzc2FyeSBjb3B5LgotICBAcmV0dXJu
IHtPYmplY3R9IHRoZSBtZXRhIGhhc2ggZm9yIGFuIG9iamVjdAotKi8KLUVtYmVyLm1ldGEgPSBm
dW5jdGlvbiBtZXRhKG9iaiwgd3JpdGFibGUpIHsKLQotICB2YXIgcmV0ID0gb2JqW01FVEFfS0VZ
XTsKLSAgaWYgKHdyaXRhYmxlPT09ZmFsc2UpIHJldHVybiByZXQgfHwgRU1QVFlfTUVUQTsKLQot
ICBpZiAoIXJldCkgewotICAgIGlmICghaXNEZWZpbmVQcm9wZXJ0eVNpbXVsYXRlZCkgb19kZWZp
bmVQcm9wZXJ0eShvYmosIE1FVEFfS0VZLCBNRVRBX0RFU0MpOwotCi0gICAgcmV0ID0gbmV3IE1l
dGEob2JqKTsKLQotICAgIGlmIChNQU5EQVRPUllfU0VUVEVSKSB7IHJldC52YWx1ZXMgPSB7fTsg
fQotCi0gICAgb2JqW01FVEFfS0VZXSA9IHJldDsKLQotICAgIC8vIG1ha2Ugc3VyZSB3ZSBkb24n
dCBhY2NpZGVudGFsbHkgdHJ5IHRvIGNyZWF0ZSBjb25zdHJ1Y3RvciBsaWtlIGRlc2MKLSAgICBy
ZXQuZGVzY3MuY29uc3RydWN0b3IgPSBudWxsOwotCi0gIH0gZWxzZSBpZiAocmV0LnNvdXJjZSAh
PT0gb2JqKSB7Ci0gICAgaWYgKCFpc0RlZmluZVByb3BlcnR5U2ltdWxhdGVkKSBvX2RlZmluZVBy
b3BlcnR5KG9iaiwgTUVUQV9LRVksIE1FVEFfREVTQyk7Ci0KLSAgICByZXQgPSBvX2NyZWF0ZShy
ZXQpOwotICAgIHJldC5kZXNjcyAgICA9IG9fY3JlYXRlKHJldC5kZXNjcyk7Ci0gICAgcmV0Lndh
dGNoaW5nID0gb19jcmVhdGUocmV0LndhdGNoaW5nKTsKLSAgICByZXQuY2FjaGUgICAgPSB7fTsK
LSAgICByZXQuc291cmNlICAgPSBvYmo7Ci0KLSAgICBpZiAoTUFOREFUT1JZX1NFVFRFUikgeyBy
ZXQudmFsdWVzID0gb19jcmVhdGUocmV0LnZhbHVlcyk7IH0KLQotICAgIG9ialtNRVRBX0tFWV0g
PSByZXQ7Ci0gIH0KLSAgcmV0dXJuIHJldDsKLX07Ci0KLUVtYmVyLmdldE1ldGEgPSBmdW5jdGlv
biBnZXRNZXRhKG9iaiwgcHJvcGVydHkpIHsKLSAgdmFyIG1ldGEgPSBFbWJlci5tZXRhKG9iaiwg
ZmFsc2UpOwotICByZXR1cm4gbWV0YVtwcm9wZXJ0eV07Ci19OwotCi1FbWJlci5zZXRNZXRhID0g
ZnVuY3Rpb24gc2V0TWV0YShvYmosIHByb3BlcnR5LCB2YWx1ZSkgewotICB2YXIgbWV0YSA9IEVt
YmVyLm1ldGEob2JqLCB0cnVlKTsKLSAgbWV0YVtwcm9wZXJ0eV0gPSB2YWx1ZTsKLSAgcmV0dXJu
IHZhbHVlOwotfTsKLQotLyoqCi0gIEBkZXByZWNhdGVkCi0gIEBwcml2YXRlCi0KLSAgSW4gb3Jk
ZXIgdG8gc3RvcmUgZGVmYXVsdHMgZm9yIGEgY2xhc3MsIGEgcHJvdG90eXBlIG1heSBuZWVkIHRv
IGNyZWF0ZQotICBhIGRlZmF1bHQgbWV0YSBvYmplY3QsIHdoaWNoIHdpbGwgYmUgaW5oZXJpdGVk
IGJ5IGFueSBvYmplY3RzIGluc3RhbnRpYXRlZAotICBmcm9tIHRoZSBjbGFzcydzIGNvbnN0cnVj
dG9yLgotCi0gIEhvd2V2ZXIsIHRoZSBwcm9wZXJ0aWVzIG9mIHRoYXQgbWV0YSBvYmplY3QgYXJl
IG9ubHkgc2hhbGxvdy1jbG9uZWQsCi0gIHNvIGlmIGEgcHJvcGVydHkgaXMgYSBoYXNoIChsaWtl
IHRoZSBldmVudCBzeXN0ZW0ncyBgbGlzdGVuZXJzYCBoYXNoKSwKLSAgaXQgd2lsbCBieSBkZWZh
dWx0IGJlIHNoYXJlZCBhY3Jvc3MgYWxsIGluc3RhbmNlcyBvZiB0aGF0IGNsYXNzLgotCi0gIFRo
aXMgbWV0aG9kIGFsbG93cyBleHRlbnNpb25zIHRvIGRlZXBseSBjbG9uZSBhIHNlcmllcyBvZiBu
ZXN0ZWQgaGFzaGVzIG9yCi0gIG90aGVyIGNvbXBsZXggb2JqZWN0cy4gRm9yIGluc3RhbmNlLCB0
aGUgZXZlbnQgc3lzdGVtIG1pZ2h0IHBhc3MKLSAgYFsnbGlzdGVuZXJzJywgJ2ZvbzpjaGFuZ2Un
LCAnZW1iZXIxNTcnXWAgdG8gYHByZXBhcmVNZXRhUGF0aGAsIHdoaWNoIHdpbGwKLSAgd2FsayBk
b3duIHRoZSBrZXlzIHByb3ZpZGVkLgotCi0gIEZvciBlYWNoIGtleSwgaWYgdGhlIGtleSBkb2Vz
IG5vdCBleGlzdCwgaXQgaXMgY3JlYXRlZC4gSWYgaXQgYWxyZWFkeQotICBleGlzdHMgYW5kIGl0
IHdhcyBpbmhlcml0ZWQgZnJvbSBpdHMgY29uc3RydWN0b3IsIHRoZSBjb25zdHJ1Y3RvcidzCi0g
IGtleSBpcyBjbG9uZWQuCi0KLSAgWW91IGNhbiBhbHNvIHBhc3MgZmFsc2UgZm9yIGB3cml0YWJs
ZWAsIHdoaWNoIHdpbGwgc2ltcGx5IHJldHVybgotICB1bmRlZmluZWQgaWYgYHByZXBhcmVNZXRh
UGF0aGAgZGlzY292ZXJzIGFueSBwYXJ0IG9mIHRoZSBwYXRoIHRoYXQKLSAgc2hhcmVkIG9yIHVu
ZGVmaW5lZC4KLQotICBAbWV0aG9kIG1ldGFQYXRoCi0gIEBmb3IgRW1iZXIKLSAgQHBhcmFtIHtP
YmplY3R9IG9iaiBUaGUgb2JqZWN0IHdob3NlIG1ldGEgd2UgYXJlIGV4YW1pbmluZwotICBAcGFy
YW0ge0FycmF5fSBwYXRoIEFuIGFycmF5IG9mIGtleXMgdG8gd2FsayBkb3duCi0gIEBwYXJhbSB7
Qm9vbGVhbn0gd3JpdGFibGUgd2hldGhlciBvciBub3QgdG8gY3JlYXRlIGEgbmV3IG1ldGEKLSAg
ICAob3IgbWV0YSBwcm9wZXJ0eSkgaWYgb25lIGRvZXMgbm90IGFscmVhZHkgZXhpc3Qgb3IgaWYg
aXQncwotICAgIHNoYXJlZCB3aXRoIGl0cyBjb25zdHJ1Y3RvcgotKi8KLUVtYmVyLm1ldGFQYXRo
ID0gZnVuY3Rpb24gbWV0YVBhdGgob2JqLCBwYXRoLCB3cml0YWJsZSkgewotICBFbWJlci5kZXBy
ZWNhdGUoIkVtYmVyLm1ldGFQYXRoIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBm
cm9tIGZ1dHVyZSByZWxlYXNlcy4iKTsKLSAgdmFyIG1ldGEgPSBFbWJlci5tZXRhKG9iaiwgd3Jp
dGFibGUpLCBrZXlOYW1lLCB2YWx1ZTsKLQotICBmb3IgKHZhciBpPTAsIGw9cGF0aC5sZW5ndGg7
IGk8bDsgaSsrKSB7Ci0gICAga2V5TmFtZSA9IHBhdGhbaV07Ci0gICAgdmFsdWUgPSBtZXRhW2tl
eU5hbWVdOwotCi0gICAgaWYgKCF2YWx1ZSkgewotICAgICAgaWYgKCF3cml0YWJsZSkgeyByZXR1
cm4gdW5kZWZpbmVkOyB9Ci0gICAgICB2YWx1ZSA9IG1ldGFba2V5TmFtZV0gPSB7IF9fZW1iZXJf
c291cmNlX186IG9iaiB9OwotICAgIH0gZWxzZSBpZiAodmFsdWUuX19lbWJlcl9zb3VyY2VfXyAh
PT0gb2JqKSB7Ci0gICAgICBpZiAoIXdyaXRhYmxlKSB7IHJldHVybiB1bmRlZmluZWQ7IH0KLSAg
ICAgIHZhbHVlID0gbWV0YVtrZXlOYW1lXSA9IG9fY3JlYXRlKHZhbHVlKTsKLSAgICAgIHZhbHVl
Ll9fZW1iZXJfc291cmNlX18gPSBvYmo7Ci0gICAgfQotCi0gICAgbWV0YSA9IHZhbHVlOwotICB9
Ci0KLSAgcmV0dXJuIHZhbHVlOwotfTsKLQotLyoqCi0gIFdyYXBzIHRoZSBwYXNzZWQgZnVuY3Rp
b24gc28gdGhhdCBgdGhpcy5fc3VwZXJgIHdpbGwgcG9pbnQgdG8gdGhlIHN1cGVyRnVuYwotICB3
aGVuIHRoZSBmdW5jdGlvbiBpcyBpbnZva2VkLiBUaGlzIGlzIHRoZSBwcmltaXRpdmUgd2UgdXNl
IHRvIGltcGxlbWVudAotICBjYWxscyB0byBzdXBlci4KLQotICBAcHJpdmF0ZQotICBAbWV0aG9k
IHdyYXAKLSAgQGZvciBFbWJlcgotICBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlv
biB0byBjYWxsCi0gIEBwYXJhbSB7RnVuY3Rpb259IHN1cGVyRnVuYyBUaGUgc3VwZXIgZnVuY3Rp
b24uCi0gIEByZXR1cm4ge0Z1bmN0aW9ufSB3cmFwcGVkIGZ1bmN0aW9uLgotKi8KLUVtYmVyLndy
YXAgPSBmdW5jdGlvbihmdW5jLCBzdXBlckZ1bmMpIHsKLSAgZnVuY3Rpb24gSygpIHt9Ci0KLSAg
ZnVuY3Rpb24gc3VwZXJXcmFwcGVyKCkgewotICAgIHZhciByZXQsIHN1cCA9IHRoaXMuX3N1cGVy
OwotICAgIHRoaXMuX3N1cGVyID0gc3VwZXJGdW5jIHx8IEs7Ci0gICAgcmV0ID0gZnVuYy5hcHBs
eSh0aGlzLCBhcmd1bWVudHMpOwotICAgIHRoaXMuX3N1cGVyID0gc3VwOwotICAgIHJldHVybiBy
ZXQ7Ci0gIH0KLQotICBzdXBlcldyYXBwZXIud3JhcHBlZEZ1bmN0aW9uID0gZnVuYzsKLSAgc3Vw
ZXJXcmFwcGVyLl9fZW1iZXJfb2JzZXJ2ZXNfXyA9IGZ1bmMuX19lbWJlcl9vYnNlcnZlc19fOwot
ICBzdXBlcldyYXBwZXIuX19lbWJlcl9vYnNlcnZlc0JlZm9yZV9fID0gZnVuYy5fX2VtYmVyX29i
c2VydmVzQmVmb3JlX187Ci0gIHN1cGVyV3JhcHBlci5fX2VtYmVyX2xpc3RlbnNfXyA9IGZ1bmMu
X19lbWJlcl9saXN0ZW5zX187Ci0KLSAgcmV0dXJuIHN1cGVyV3JhcHBlcjsKLX07Ci0KLS8qKgot
ICBSZXR1cm5zIHRydWUgaWYgdGhlIHBhc3NlZCBvYmplY3QgaXMgYW4gYXJyYXkgb3IgQXJyYXkt
bGlrZS4KLQotICBFbWJlciBBcnJheSBQcm90b2NvbDoKLQotICAgIC0gdGhlIG9iamVjdCBoYXMg
YW4gb2JqZWN0QXQgcHJvcGVydHkKLSAgICAtIHRoZSBvYmplY3QgaXMgYSBuYXRpdmUgQXJyYXkK
LSAgICAtIHRoZSBvYmplY3QgaXMgYW4gT2JqZWN0LCBhbmQgaGFzIGEgbGVuZ3RoIHByb3BlcnR5
Ci0KLSAgVW5saWtlIGBFbWJlci50eXBlT2ZgIHRoaXMgbWV0aG9kIHJldHVybnMgdHJ1ZSBldmVu
IGlmIHRoZSBwYXNzZWQgb2JqZWN0IGlzCi0gIG5vdCBmb3JtYWxseSBhcnJheSBidXQgYXBwZWFy
cyB0byBiZSBhcnJheS1saWtlIChpLmUuIGltcGxlbWVudHMgYEVtYmVyLkFycmF5YCkKLQotICBg
YGBqYXZhc2NyaXB0Ci0gIEVtYmVyLmlzQXJyYXkoKTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIGZhbHNlCi0gIEVtYmVyLmlzQXJyYXkoW10pOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRydWUKLSAgRW1iZXIuaXNBcnJh
eSggRW1iZXIuQXJyYXlQcm94eS5jcmVhdGUoeyBjb250ZW50OiBbXSB9KSApOyAgLy8gdHJ1ZQot
ICBgYGAKLQotICBAbWV0aG9kIGlzQXJyYXkKLSAgQGZvciBFbWJlcgotICBAcGFyYW0ge09iamVj
dH0gb2JqIFRoZSBvYmplY3QgdG8gdGVzdAotICBAcmV0dXJuIHtCb29sZWFufSB0cnVlIGlmIHRo
ZSBwYXNzZWQgb2JqZWN0IGlzIGFuIGFycmF5IG9yIEFycmF5LWxpa2UKLSovCi1FbWJlci5pc0Fy
cmF5ID0gZnVuY3Rpb24ob2JqKSB7Ci0gIGlmICghb2JqIHx8IG9iai5zZXRJbnRlcnZhbCkgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgaWYgKEFycmF5LmlzQXJyYXkgJiYgQXJyYXkuaXNBcnJheShvYmop
KSB7IHJldHVybiB0cnVlOyB9Ci0gIGlmIChFbWJlci5BcnJheSAmJiBFbWJlci5BcnJheS5kZXRl
Y3Qob2JqKSkgeyByZXR1cm4gdHJ1ZTsgfQotICBpZiAoKG9iai5sZW5ndGggIT09IHVuZGVmaW5l
ZCkgJiYgJ29iamVjdCc9PT10eXBlb2Ygb2JqKSB7IHJldHVybiB0cnVlOyB9Ci0gIHJldHVybiBm
YWxzZTsKLX07Ci0KLS8qKgotICBGb3JjZXMgdGhlIHBhc3NlZCBvYmplY3QgdG8gYmUgcGFydCBv
ZiBhbiBhcnJheS4gSWYgdGhlIG9iamVjdCBpcyBhbHJlYWR5Ci0gIGFuIGFycmF5IG9yIGFycmF5
LWxpa2UsIHJldHVybnMgdGhlIG9iamVjdC4gT3RoZXJ3aXNlIGFkZHMgdGhlIG9iamVjdCB0bwot
ICBhbiBhcnJheS4gSWYgb2JqIGlzIGBudWxsYCBvciBgdW5kZWZpbmVkYCwgcmV0dXJucyBhbiBl
bXB0eSBhcnJheS4KLQotICBgYGBqYXZhc2NyaXB0Ci0gIEVtYmVyLm1ha2VBcnJheSgpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIFtdCi0gIEVtYmVyLm1ha2VBcnJheShudWxsKTsgICAg
ICAgICAgICAgICAgICAgICAgIC8vIFtdCi0gIEVtYmVyLm1ha2VBcnJheSh1bmRlZmluZWQpOyAg
ICAgICAgICAgICAgICAgIC8vIFtdCi0gIEVtYmVyLm1ha2VBcnJheSgnbGluZHNheScpOyAgICAg
ICAgICAgICAgICAgIC8vIFsnbGluZHNheSddCi0gIEVtYmVyLm1ha2VBcnJheShbMSwyLDQyXSk7
ICAgICAgICAgICAgICAgICAgIC8vIFsxLDIsNDJdCi0KLSAgdmFyIGNvbnRyb2xsZXIgPSBFbWJl
ci5BcnJheVByb3h5LmNyZWF0ZSh7IGNvbnRlbnQ6IFtdIH0pOwotICBFbWJlci5tYWtlQXJyYXko
Y29udHJvbGxlcikgPT09IGNvbnRyb2xsZXI7ICAvLyB0cnVlCi0gIGBgYAotCi0gIEBtZXRob2Qg
bWFrZUFycmF5Ci0gIEBmb3IgRW1iZXIKLSAgQHBhcmFtIHtPYmplY3R9IG9iaiB0aGUgb2JqZWN0
Ci0gIEByZXR1cm4ge0FycmF5fQotKi8KLUVtYmVyLm1ha2VBcnJheSA9IGZ1bmN0aW9uKG9iaikg
ewotICBpZiAob2JqID09PSBudWxsIHx8IG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiBbXTsg
fQotICByZXR1cm4gRW1iZXIuaXNBcnJheShvYmopID8gb2JqIDogW29ial07Ci19OwotCi1mdW5j
dGlvbiBjYW5JbnZva2Uob2JqLCBtZXRob2ROYW1lKSB7Ci0gIHJldHVybiAhIShvYmogJiYgdHlw
ZW9mIG9ialttZXRob2ROYW1lXSA9PT0gJ2Z1bmN0aW9uJyk7Ci19Ci0KLS8qKgotICBDaGVja3Mg
dG8gc2VlIGlmIHRoZSBgbWV0aG9kTmFtZWAgZXhpc3RzIG9uIHRoZSBgb2JqYC4KLQotICBgYGBq
YXZhc2NyaXB0Ci0gIHZhciBmb28gPSB7YmFyOiBFbWJlci5LLCBiYXo6IG51bGx9OwotICBFbWJl
ci5jYW5JbnZva2UoZm9vLCAnYmFyJyk7IC8vIHRydWUKLSAgRW1iZXIuY2FuSW52b2tlKGZvbywg
J2JheicpOyAvLyBmYWxzZQotICBFbWJlci5jYW5JbnZva2UoZm9vLCAnYmF0Jyk7IC8vIGZhbHNl
Ci0gIGBgYAotCi0gIEBtZXRob2QgY2FuSW52b2tlCi0gIEBmb3IgRW1iZXIKLSAgQHBhcmFtIHtP
YmplY3R9IG9iaiBUaGUgb2JqZWN0IHRvIGNoZWNrIGZvciB0aGUgbWV0aG9kCi0gIEBwYXJhbSB7
U3RyaW5nfSBtZXRob2ROYW1lIFRoZSBtZXRob2QgbmFtZSB0byBjaGVjayBmb3IKLSAgQHJldHVy
biB7Qm9vbGVhbn0KLSovCi1FbWJlci5jYW5JbnZva2UgPSBjYW5JbnZva2U7Ci0KLS8qKgotICBD
aGVja3MgdG8gc2VlIGlmIHRoZSBgbWV0aG9kTmFtZWAgZXhpc3RzIG9uIHRoZSBgb2JqYCwKLSAg
YW5kIGlmIGl0IGRvZXMsIGludm9rZXMgaXQgd2l0aCB0aGUgYXJndW1lbnRzIHBhc3NlZC4KLQot
ICBgYGBqYXZhc2NyaXB0Ci0gIHZhciBkID0gbmV3IERhdGUoJzAzLzE1LzIwMTMnKTsKLSAgRW1i
ZXIudHJ5SW52b2tlKGQsICdnZXRUaW1lJyk7IC8vIDEzNjMzMjAwMDAwMDAKLSAgRW1iZXIudHJ5
SW52b2tlKGQsICdzZXRGdWxsWWVhcicsIFsyMDE0XSk7IC8vIDEzOTQ4NTYwMDAwMDAKLSAgRW1i
ZXIudHJ5SW52b2tlKGQsICdub1N1Y2hNZXRob2QnLCBbMjAxNF0pOyAvLyB1bmRlZmluZWQKLSAg
YGBgCi0KLSAgQG1ldGhvZCB0cnlJbnZva2UKLSAgQGZvciBFbWJlcgotICBAcGFyYW0ge09iamVj
dH0gb2JqIFRoZSBvYmplY3QgdG8gY2hlY2sgZm9yIHRoZSBtZXRob2QKLSAgQHBhcmFtIHtTdHJp
bmd9IG1ldGhvZE5hbWUgVGhlIG1ldGhvZCBuYW1lIHRvIGNoZWNrIGZvcgotICBAcGFyYW0ge0Fy
cmF5fSBbYXJnc10gVGhlIGFyZ3VtZW50cyB0byBwYXNzIHRvIHRoZSBtZXRob2QKLSAgQHJldHVy
biB7Kn0gdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgaW52b2tlZCBtZXRob2Qgb3IgdW5kZWZpbmVk
IGlmIGl0IGNhbm5vdCBiZSBpbnZva2VkCi0qLwotRW1iZXIudHJ5SW52b2tlID0gZnVuY3Rpb24o
b2JqLCBtZXRob2ROYW1lLCBhcmdzKSB7Ci0gIGlmIChjYW5JbnZva2Uob2JqLCBtZXRob2ROYW1l
KSkgewotICAgIHJldHVybiBvYmpbbWV0aG9kTmFtZV0uYXBwbHkob2JqLCBhcmdzIHx8IFtdKTsK
LSAgfQotfTsKLQotLy8gaHR0cHM6Ly9naXRodWIuY29tL2VtYmVyanMvZW1iZXIuanMvcHVsbC8x
NjE3Ci12YXIgbmVlZHNGaW5hbGx5Rml4ID0gKGZ1bmN0aW9uKCkgewotICB2YXIgY291bnQgPSAw
OwotICB0cnl7Ci0gICAgdHJ5IHsgfQotICAgIGZpbmFsbHkgewotICAgICAgY291bnQrKzsKLSAg
ICAgIHRocm93IG5ldyBFcnJvcignbmVlZHNGaW5hbGx5Rml4VGVzdCcpOwotICAgIH0KLSAgfSBj
YXRjaCAoZSkge30KLQotICByZXR1cm4gY291bnQgIT09IDE7Ci19KSgpOwotCi0vKioKLSAgUHJv
dmlkZXMgdHJ5IHsgfSBmaW5hbGx5IHsgfSBmdW5jdGlvbmFsaXR5LCB3aGlsZSB3b3JraW5nCi0g
IGFyb3VuZCBTYWZhcmkncyBkb3VibGUgZmluYWxseSBidWcuCi0KLSAgYGBgamF2YXNjcmlwdAot
ICB2YXIgdHJ5YWJsZSA9IGZ1bmN0aW9uKCkgewotICAgIHNvbWVSZXNvdXJjZS5sb2NrKCk7Ci0g
ICAgcnVuQ2FsbGJhY2soKTsgLy8gTWF5IHRocm93IGVycm9yLgotICB9OwotICB2YXIgZmluYWxp
emVyID0gZnVuY3Rpb24oKSB7Ci0gICAgc29tZVJlc291cmNlLnVubG9jaygpOwotICB9OwotICBF
bWJlci50cnlGaW5hbGx5KHRyeWFibGUsIGZpbmFsaXplcik7Ci0gIGBgYAotCi0gIEBtZXRob2Qg
dHJ5RmluYWxseQotICBAZm9yIEVtYmVyCi0gIEBwYXJhbSB7RnVuY3Rpb259IHRyeWFibGUgVGhl
IGZ1bmN0aW9uIHRvIHJ1biB0aGUgdHJ5IGNhbGxiYWNrCi0gIEBwYXJhbSB7RnVuY3Rpb259IGZp
bmFsaXplciBUaGUgZnVuY3Rpb24gdG8gcnVuIHRoZSBmaW5hbGx5IGNhbGxiYWNrCi0gIEBwYXJh
bSB7T2JqZWN0fSBbYmluZGluZ10gVGhlIG9wdGlvbmFsIGNhbGxpbmcgb2JqZWN0LiBEZWZhdWx0
cyB0byAndGhpcycKLSAgQHJldHVybiB7Kn0gVGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgdGhhdCBv
ZiB0aGUgZmluYWxpemVyLAotICB1bmxlc3MgdGhhdCB2YWx1ZSBpcyB1bmRlZmluZWQsIGluIHdo
aWNoIGNhc2UgaXQgaXMgdGhlIHJldHVybiB2YWx1ZQotICBvZiB0aGUgdHJ5YWJsZQotKi8KLQot
aWYgKG5lZWRzRmluYWxseUZpeCkgewotICBFbWJlci50cnlGaW5hbGx5ID0gZnVuY3Rpb24odHJ5
YWJsZSwgZmluYWxpemVyLCBiaW5kaW5nKSB7Ci0gICAgdmFyIHJlc3VsdCwgZmluYWxSZXN1bHQs
IGZpbmFsRXJyb3I7Ci0KLSAgICBiaW5kaW5nID0gYmluZGluZyB8fCB0aGlzOwotCi0gICAgdHJ5
IHsKLSAgICAgIHJlc3VsdCA9IHRyeWFibGUuY2FsbChiaW5kaW5nKTsKLSAgICB9IGZpbmFsbHkg
ewotICAgICAgdHJ5IHsKLSAgICAgICAgZmluYWxSZXN1bHQgPSBmaW5hbGl6ZXIuY2FsbChiaW5k
aW5nKTsKLSAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgZmluYWxFcnJvciA9IGU7Ci0gICAg
ICB9Ci0gICAgfQotCi0gICAgaWYgKGZpbmFsRXJyb3IpIHsgdGhyb3cgZmluYWxFcnJvcjsgfQot
Ci0gICAgcmV0dXJuIChmaW5hbFJlc3VsdCA9PT0gdW5kZWZpbmVkKSA/IHJlc3VsdCA6IGZpbmFs
UmVzdWx0OwotICB9OwotfSBlbHNlIHsKLSAgRW1iZXIudHJ5RmluYWxseSA9IGZ1bmN0aW9uKHRy
eWFibGUsIGZpbmFsaXplciwgYmluZGluZykgewotICAgIHZhciByZXN1bHQsIGZpbmFsUmVzdWx0
OwotCi0gICAgYmluZGluZyA9IGJpbmRpbmcgfHwgdGhpczsKLQotICAgIHRyeSB7Ci0gICAgICBy
ZXN1bHQgPSB0cnlhYmxlLmNhbGwoYmluZGluZyk7Ci0gICAgfSBmaW5hbGx5IHsKLSAgICAgIGZp
bmFsUmVzdWx0ID0gZmluYWxpemVyLmNhbGwoYmluZGluZyk7Ci0gICAgfQotCi0gICAgcmV0dXJu
IChmaW5hbFJlc3VsdCA9PT0gdW5kZWZpbmVkKSA/IHJlc3VsdCA6IGZpbmFsUmVzdWx0OwotICB9
OwotfQotCi0vKioKLSAgUHJvdmlkZXMgdHJ5IHsgfSBjYXRjaCBmaW5hbGx5IHsgfSBmdW5jdGlv
bmFsaXR5LCB3aGlsZSB3b3JraW5nCi0gIGFyb3VuZCBTYWZhcmkncyBkb3VibGUgZmluYWxseSBi
dWcuCi0KLSAgYGBgamF2YXNjcmlwdAotICB2YXIgdHJ5YWJsZSA9IGZ1bmN0aW9uKCkgewotICAg
IGZvciAoaT0wLCBsPWxpc3RlbmVycy5sZW5ndGg7IGk8bDsgaSsrKSB7Ci0gICAgICBsaXN0ZW5l
ciA9IGxpc3RlbmVyc1tpXTsKLSAgICAgIGJlZm9yZVZhbHVlc1tpXSA9IGxpc3RlbmVyLmJlZm9y
ZShuYW1lLCB0aW1lKCksIHBheWxvYWQpOwotICAgIH0KLQotICAgIHJldHVybiBjYWxsYmFjay5j
YWxsKGJpbmRpbmcpOwotICB9OwotCi0gIHZhciBjYXRjaGFibGUgPSBmdW5jdGlvbihlKSB7Ci0g
ICAgcGF5bG9hZCA9IHBheWxvYWQgfHwge307Ci0gICAgcGF5bG9hZC5leGNlcHRpb24gPSBlOwot
ICB9OwotCi0gIHZhciBmaW5hbGl6ZXIgPSBmdW5jdGlvbigpIHsKLSAgICBmb3IgKGk9MCwgbD1s
aXN0ZW5lcnMubGVuZ3RoOyBpPGw7IGkrKykgewotICAgICAgbGlzdGVuZXIgPSBsaXN0ZW5lcnNb
aV07Ci0gICAgICBsaXN0ZW5lci5hZnRlcihuYW1lLCB0aW1lKCksIHBheWxvYWQsIGJlZm9yZVZh
bHVlc1tpXSk7Ci0gICAgfQotICB9OwotICBFbWJlci50cnlDYXRjaEZpbmFsbHkodHJ5YWJsZSwg
Y2F0Y2hhYmxlLCBmaW5hbGl6ZXIpOwotICBgYGAKLQotICBAbWV0aG9kIHRyeUNhdGNoRmluYWxs
eQotICBAZm9yIEVtYmVyCi0gIEBwYXJhbSB7RnVuY3Rpb259IHRyeWFibGUgVGhlIGZ1bmN0aW9u
IHRvIHJ1biB0aGUgdHJ5IGNhbGxiYWNrCi0gIEBwYXJhbSB7RnVuY3Rpb259IGNhdGNoYWJsZSBU
aGUgZnVuY3Rpb24gdG8gcnVuIHRoZSBjYXRjaGFibGUgY2FsbGJhY2sKLSAgQHBhcmFtIHtGdW5j
dGlvbn0gZmluYWxpemVyIFRoZSBmdW5jdGlvbiB0byBydW4gdGhlIGZpbmFsbHkgY2FsbGJhY2sK
LSAgQHBhcmFtIHtPYmplY3R9IFtiaW5kaW5nXSBUaGUgb3B0aW9uYWwgY2FsbGluZyBvYmplY3Qu
IERlZmF1bHRzIHRvICd0aGlzJwotICBAcmV0dXJuIHsqfSBUaGUgcmV0dXJuIHZhbHVlIGlzIHRo
ZSB0aGF0IG9mIHRoZSBmaW5hbGl6ZXIsCi0gIHVubGVzcyB0aGF0IHZhbHVlIGlzIHVuZGVmaW5l
ZCwgaW4gd2hpY2ggY2FzZSBpdCBpcyB0aGUgcmV0dXJuIHZhbHVlCi0gIG9mIHRoZSB0cnlhYmxl
LgotKi8KLWlmIChuZWVkc0ZpbmFsbHlGaXgpIHsKLSAgRW1iZXIudHJ5Q2F0Y2hGaW5hbGx5ID0g
ZnVuY3Rpb24odHJ5YWJsZSwgY2F0Y2hhYmxlLCBmaW5hbGl6ZXIsIGJpbmRpbmcpIHsKLSAgICB2
YXIgcmVzdWx0LCBmaW5hbFJlc3VsdCwgZmluYWxFcnJvcjsKLQotICAgIGJpbmRpbmcgPSBiaW5k
aW5nIHx8IHRoaXM7Ci0KLSAgICB0cnkgewotICAgICAgcmVzdWx0ID0gdHJ5YWJsZS5jYWxsKGJp
bmRpbmcpOwotICAgIH0gY2F0Y2goZXJyb3IpIHsKLSAgICAgIHJlc3VsdCA9IGNhdGNoYWJsZS5j
YWxsKGJpbmRpbmcsIGVycm9yKTsKLSAgICB9IGZpbmFsbHkgewotICAgICAgdHJ5IHsKLSAgICAg
ICAgZmluYWxSZXN1bHQgPSBmaW5hbGl6ZXIuY2FsbChiaW5kaW5nKTsKLSAgICAgIH0gY2F0Y2gg
KGUpIHsKLSAgICAgICAgZmluYWxFcnJvciA9IGU7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgaWYg
KGZpbmFsRXJyb3IpIHsgdGhyb3cgZmluYWxFcnJvcjsgfQotCi0gICAgcmV0dXJuIChmaW5hbFJl
c3VsdCA9PT0gdW5kZWZpbmVkKSA/IHJlc3VsdCA6IGZpbmFsUmVzdWx0OwotICB9OwotfSBlbHNl
IHsKLSAgRW1iZXIudHJ5Q2F0Y2hGaW5hbGx5ID0gZnVuY3Rpb24odHJ5YWJsZSwgY2F0Y2hhYmxl
LCBmaW5hbGl6ZXIsIGJpbmRpbmcpIHsKLSAgICB2YXIgcmVzdWx0LCBmaW5hbFJlc3VsdDsKLQot
ICAgIGJpbmRpbmcgPSBiaW5kaW5nIHx8IHRoaXM7Ci0KLSAgICB0cnkgewotICAgICAgcmVzdWx0
ID0gdHJ5YWJsZS5jYWxsKGJpbmRpbmcpOwotICAgIH0gY2F0Y2goZXJyb3IpIHsKLSAgICAgIHJl
c3VsdCA9IGNhdGNoYWJsZS5jYWxsKGJpbmRpbmcsIGVycm9yKTsKLSAgICB9IGZpbmFsbHkgewot
ICAgICAgZmluYWxSZXN1bHQgPSBmaW5hbGl6ZXIuY2FsbChiaW5kaW5nKTsKLSAgICB9Ci0KLSAg
ICByZXR1cm4gKGZpbmFsUmVzdWx0ID09PSB1bmRlZmluZWQpID8gcmVzdWx0IDogZmluYWxSZXN1
bHQ7Ci0gIH07Ci19Ci0KLS8vIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4KLS8vIFRZUElORyAmIEFSUkFZIE1FU1NBR0lORwotLy8KLQotdmFyIFRZUEVfTUFQID0ge307
Ci12YXIgdCA9ICJCb29sZWFuIE51bWJlciBTdHJpbmcgRnVuY3Rpb24gQXJyYXkgRGF0ZSBSZWdF
eHAgT2JqZWN0Ii5zcGxpdCgiICIpOwotRW1iZXIuQXJyYXlQb2x5ZmlsbHMuZm9yRWFjaC5jYWxs
KHQsIGZ1bmN0aW9uKG5hbWUpIHsKLSAgVFlQRV9NQVBbICJbb2JqZWN0ICIgKyBuYW1lICsgIl0i
IF0gPSBuYW1lLnRvTG93ZXJDYXNlKCk7Ci19KTsKLQotdmFyIHRvU3RyaW5nID0gT2JqZWN0LnBy
b3RvdHlwZS50b1N0cmluZzsKLQotLyoqCi0gIFJldHVybnMgYSBjb25zaXN0ZW50IHR5cGUgZm9y
IHRoZSBwYXNzZWQgaXRlbS4KLQotICBVc2UgdGhpcyBpbnN0ZWFkIG9mIHRoZSBidWlsdC1pbiBg
dHlwZW9mYCB0byBnZXQgdGhlIHR5cGUgb2YgYW4gaXRlbS4KLSAgSXQgd2lsbCByZXR1cm4gdGhl
IHNhbWUgcmVzdWx0IGFjcm9zcyBhbGwgYnJvd3NlcnMgYW5kIGluY2x1ZGVzIGEgYml0Ci0gIG1v
cmUgZGV0YWlsLiBIZXJlIGlzIHdoYXQgd2lsbCBiZSByZXR1cm5lZDoKLQotICAgICAgfCBSZXR1
cm4gVmFsdWUgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8Ci0gICAgICB8LS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLSAgICAgIHwgJ3N0cmluZycgICAgICB8
IFN0cmluZyBwcmltaXRpdmUgb3IgU3RyaW5nIG9iamVjdC4gICAgICAgICAgICAgICAgICAgfAot
ICAgICAgfCAnbnVtYmVyJyAgICAgIHwgTnVtYmVyIHByaW1pdGl2ZSBvciBOdW1iZXIgb2JqZWN0
LiAgICAgICAgICAgICAgICAgICB8Ci0gICAgICB8ICdib29sZWFuJyAgICAgfCBCb29sZWFuIHBy
aW1pdGl2ZSBvciBCb29sZWFuIG9iamVjdC4gICAgICAgICAgICAgICAgIHwKLSAgICAgIHwgJ251
bGwnICAgICAgICB8IE51bGwgdmFsdWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfAotICAgICAgfCAndW5kZWZpbmVkJyAgIHwgVW5kZWZpbmVkIHZhbHVlICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0gICAgICB8ICdmdW5jdGlvbicgICAg
fCBBIGZ1bmN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwK
LSAgICAgIHwgJ2FycmF5JyAgICAgICB8IEFuIGluc3RhbmNlIG9mIEFycmF5ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfAotICAgICAgfCAncmVnZXhwJyAgICAgIHwgQW4gaW5zdGFu
Y2Ugb2YgUmVnRXhwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0gICAgICB8ICdk
YXRlJyAgICAgICAgfCBBbiBpbnN0YW5jZSBvZiBEYXRlICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwKLSAgICAgIHwgJ2NsYXNzJyAgICAgICB8IEFuIEVtYmVyIGNsYXNzIChjcmVh
dGVkIHVzaW5nIEVtYmVyLk9iamVjdC5leHRlbmQoKSkgfAotICAgICAgfCAnaW5zdGFuY2UnICAg
IHwgQW4gRW1iZXIgb2JqZWN0IGluc3RhbmNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
Ci0gICAgICB8ICdlcnJvcicgICAgICAgfCBBbiBpbnN0YW5jZSBvZiB0aGUgRXJyb3Igb2JqZWN0
ICAgICAgICAgICAgICAgICAgICAgIHwKLSAgICAgIHwgJ29iamVjdCcgICAgICB8IEEgSmF2YVNj
cmlwdCBvYmplY3Qgbm90IGluaGVyaXRpbmcgZnJvbSBFbWJlci5PYmplY3QgfAotCi0gIEV4YW1w
bGVzOgotCi0gIGBgYGphdmFzY3JpcHQKLSAgRW1iZXIudHlwZU9mKCk7ICAgICAgICAgICAgICAg
ICAgICAgICAvLyAndW5kZWZpbmVkJwotICBFbWJlci50eXBlT2YobnVsbCk7ICAgICAgICAgICAg
ICAgICAgIC8vICdudWxsJwotICBFbWJlci50eXBlT2YodW5kZWZpbmVkKTsgICAgICAgICAgICAg
IC8vICd1bmRlZmluZWQnCi0gIEVtYmVyLnR5cGVPZignbWljaGFlbCcpOyAgICAgICAgICAgICAg
Ly8gJ3N0cmluZycKLSAgRW1iZXIudHlwZU9mKG5ldyBTdHJpbmcoJ21pY2hhZWwnKSk7ICAvLyAn
c3RyaW5nJwotICBFbWJlci50eXBlT2YoMTAxKTsgICAgICAgICAgICAgICAgICAgIC8vICdudW1i
ZXInCi0gIEVtYmVyLnR5cGVPZihuZXcgTnVtYmVyKDEwMSkpOyAgICAgICAgLy8gJ251bWJlcicK
LSAgRW1iZXIudHlwZU9mKHRydWUpOyAgICAgICAgICAgICAgICAgICAvLyAnYm9vbGVhbicKLSAg
RW1iZXIudHlwZU9mKG5ldyBCb29sZWFuKHRydWUpKTsgICAgICAvLyAnYm9vbGVhbicKLSAgRW1i
ZXIudHlwZU9mKEVtYmVyLm1ha2VBcnJheSk7ICAgICAgICAvLyAnZnVuY3Rpb24nCi0gIEVtYmVy
LnR5cGVPZihbMSwyLDkwXSk7ICAgICAgICAgICAgICAgLy8gJ2FycmF5JwotICBFbWJlci50eXBl
T2YoL2FiYy8pOyAgICAgICAgICAgICAgICAgIC8vICdyZWdleHAnCi0gIEVtYmVyLnR5cGVPZihu
ZXcgRGF0ZSgpKTsgICAgICAgICAgICAgLy8gJ2RhdGUnCi0gIEVtYmVyLnR5cGVPZihFbWJlci5P
YmplY3QuZXh0ZW5kKCkpOyAgLy8gJ2NsYXNzJwotICBFbWJlci50eXBlT2YoRW1iZXIuT2JqZWN0
LmNyZWF0ZSgpKTsgIC8vICdpbnN0YW5jZScKLSAgRW1iZXIudHlwZU9mKG5ldyBFcnJvcigndGVh
bW9jaWwnKSk7ICAvLyAnZXJyb3InCi0KLSAgLy8gIm5vcm1hbCIgSmF2YVNjcmlwdCBvYmplY3QK
LSAgRW1iZXIudHlwZU9mKHthOiAnYid9KTsgICAgICAgICAgICAgIC8vICdvYmplY3QnCi0gIGBg
YAotCi0gIEBtZXRob2QgdHlwZU9mCi0gIEBmb3IgRW1iZXIKLSAgQHBhcmFtIHtPYmplY3R9IGl0
ZW0gdGhlIGl0ZW0gdG8gY2hlY2sKLSAgQHJldHVybiB7U3RyaW5nfSB0aGUgdHlwZQotKi8KLUVt
YmVyLnR5cGVPZiA9IGZ1bmN0aW9uKGl0ZW0pIHsKLSAgdmFyIHJldDsKLQotICByZXQgPSAoaXRl
bSA9PT0gbnVsbCB8fCBpdGVtID09PSB1bmRlZmluZWQpID8gU3RyaW5nKGl0ZW0pIDogVFlQRV9N
QVBbdG9TdHJpbmcuY2FsbChpdGVtKV0gfHwgJ29iamVjdCc7Ci0KLSAgaWYgKHJldCA9PT0gJ2Z1
bmN0aW9uJykgewotICAgIGlmIChFbWJlci5PYmplY3QgJiYgRW1iZXIuT2JqZWN0LmRldGVjdChp
dGVtKSkgcmV0ID0gJ2NsYXNzJzsKLSAgfSBlbHNlIGlmIChyZXQgPT09ICdvYmplY3QnKSB7Ci0g
ICAgaWYgKGl0ZW0gaW5zdGFuY2VvZiBFcnJvcikgcmV0ID0gJ2Vycm9yJzsKLSAgICBlbHNlIGlm
IChFbWJlci5PYmplY3QgJiYgaXRlbSBpbnN0YW5jZW9mIEVtYmVyLk9iamVjdCkgcmV0ID0gJ2lu
c3RhbmNlJzsKLSAgICBlbHNlIGlmIChpdGVtIGluc3RhbmNlb2YgRGF0ZSkgcmV0ID0gJ2RhdGUn
OwotICB9Ci0KLSAgcmV0dXJuIHJldDsKLX07Ci0KLX0pKCk7Ci0KLQotCi0oZnVuY3Rpb24oKSB7
Ci0vLyBFbWJlci50cnlDYXRjaEZpbmFsbHkKLQotLyoqCi0gIFRoZSBwdXJwb3NlIG9mIHRoZSBF
bWJlciBJbnN0cnVtZW50YXRpb24gbW9kdWxlIGlzCi0gIHRvIHByb3ZpZGUgZWZmaWNpZW50LCBn
ZW5lcmFsLXB1cnBvc2UgaW5zdHJ1bWVudGF0aW9uCi0gIGZvciBFbWJlci4KLQotICBTdWJzY3Jp
YmUgdG8gYSBsaXN0ZW5lciBieSB1c2luZyBgRW1iZXIuc3Vic2NyaWJlYDoKLQotICBgYGBqYXZh
c2NyaXB0Ci0gIEVtYmVyLnN1YnNjcmliZSgicmVuZGVyIiwgewotICAgIGJlZm9yZTogZnVuY3Rp
b24obmFtZSwgdGltZXN0YW1wLCBwYXlsb2FkKSB7Ci0KLSAgICB9LAotCi0gICAgYWZ0ZXI6IGZ1
bmN0aW9uKG5hbWUsIHRpbWVzdGFtcCwgcGF5bG9hZCkgewotCi0gICAgfQotICB9KTsKLSAgYGBg
Ci0KLSAgSWYgeW91IHJldHVybiBhIHZhbHVlIGZyb20gdGhlIGBiZWZvcmVgIGNhbGxiYWNrLCB0
aGF0IHNhbWUKLSAgdmFsdWUgd2lsbCBiZSBwYXNzZWQgYXMgYSBmb3VydGggcGFyYW1ldGVyIHRv
IHRoZSBgYWZ0ZXJgCi0gIGNhbGxiYWNrLgotCi0gIEluc3RydW1lbnQgYSBibG9jayBvZiBjb2Rl
IGJ5IHVzaW5nIGBFbWJlci5pbnN0cnVtZW50YDoKLQotICBgYGBqYXZhc2NyaXB0Ci0gIEVtYmVy
Lmluc3RydW1lbnQoInJlbmRlci5oYW5kbGViYXJzIiwgcGF5bG9hZCwgZnVuY3Rpb24oKSB7Ci0g
ICAgLy8gcmVuZGVyaW5nIGxvZ2ljCi0gIH0sIGJpbmRpbmcpOwotICBgYGAKLQotICBFdmVudCBu
YW1lcyBwYXNzZWQgdG8gYEVtYmVyLmluc3RydW1lbnRgIGFyZSBuYW1lc3BhY2VkCi0gIGJ5IHBl
cmlvZHMsIGZyb20gbW9yZSBnZW5lcmFsIHRvIG1vcmUgc3BlY2lmaWMuIFN1YnNjcmliZXJzCi0g
IGNhbiBsaXN0ZW4gZm9yIGV2ZW50cyBieSB3aGF0ZXZlciBsZXZlbCBvZiBncmFudWxhcml0eSB0
aGV5Ci0gIGFyZSBpbnRlcmVzdGVkIGluLgotCi0gIEluIHRoZSBhYm92ZSBleGFtcGxlLCB0aGUg
ZXZlbnQgaXMgYHJlbmRlci5oYW5kbGViYXJzYCwKLSAgYW5kIHRoZSBzdWJzY3JpYmVyIGxpc3Rl
bmVkIGZvciBhbGwgZXZlbnRzIGJlZ2lubmluZyB3aXRoCi0gIGByZW5kZXJgLiBJdCB3b3VsZCBy
ZWNlaXZlIGNhbGxiYWNrcyBmb3IgZXZlbnRzIG5hbWVkCi0gIGByZW5kZXJgLCBgcmVuZGVyLmhh
bmRsZWJhcnNgLCBgcmVuZGVyLmNvbnRhaW5lcmAsIG9yCi0gIGV2ZW4gYHJlbmRlci5oYW5kbGVi
YXJzLmxheW91dGAuCi0KLSAgQGNsYXNzIEluc3RydW1lbnRhdGlvbgotICBAbmFtZXNwYWNlIEVt
YmVyCi0gIEBzdGF0aWMKLSovCi1FbWJlci5JbnN0cnVtZW50YXRpb24gPSB7fTsKLQotdmFyIHN1
YnNjcmliZXJzID0gW10sIGNhY2hlID0ge307Ci0KLXZhciBwb3B1bGF0ZUxpc3RlbmVycyA9IGZ1
bmN0aW9uKG5hbWUpIHsKLSAgdmFyIGxpc3RlbmVycyA9IFtdLCBzdWJzY3JpYmVyOwotCi0gIGZv
ciAodmFyIGk9MCwgbD1zdWJzY3JpYmVycy5sZW5ndGg7IGk8bDsgaSsrKSB7Ci0gICAgc3Vic2Ny
aWJlciA9IHN1YnNjcmliZXJzW2ldOwotICAgIGlmIChzdWJzY3JpYmVyLnJlZ2V4LnRlc3QobmFt
ZSkpIHsKLSAgICAgIGxpc3RlbmVycy5wdXNoKHN1YnNjcmliZXIub2JqZWN0KTsKLSAgICB9Ci0g
IH0KLQotICBjYWNoZVtuYW1lXSA9IGxpc3RlbmVyczsKLSAgcmV0dXJuIGxpc3RlbmVyczsKLX07
Ci0KLXZhciB0aW1lID0gKGZ1bmN0aW9uKCkgewotICB2YXIgcGVyZiA9ICd1bmRlZmluZWQnICE9
PSB0eXBlb2Ygd2luZG93ID8gd2luZG93LnBlcmZvcm1hbmNlIHx8IHt9IDoge307Ci0gIHZhciBm
biA9IHBlcmYubm93IHx8IHBlcmYubW96Tm93IHx8IHBlcmYud2Via2l0Tm93IHx8IHBlcmYubXNO
b3cgfHwgcGVyZi5vTm93OwotICAvLyBmbi5iaW5kIHdpbGwgYmUgYXZhaWxhYmxlIGluIGFsbCB0
aGUgYnJvd3NlcnMgdGhhdCBzdXBwb3J0IHRoZSBhZHZhbmNlZCB3aW5kb3cucGVyZm9ybWFuY2Uu
Li4gOy0pCi0gIHJldHVybiBmbiA/IGZuLmJpbmQocGVyZikgOiBmdW5jdGlvbigpIHsgcmV0dXJu
ICtuZXcgRGF0ZSgpOyB9OwotfSkoKTsKLQotLyoqCi0gIE5vdGlmaWVzIGV2ZW50J3Mgc3Vic2Ny
aWJlcnMsIGNhbGxzIGBiZWZvcmVgIGFuZCBgYWZ0ZXJgIGhvb2tzLgotCi0gIEBtZXRob2QgaW5z
dHJ1bWVudAotICBAbmFtZXNwYWNlIEVtYmVyLkluc3RydW1lbnRhdGlvbgotCi0gIEBwYXJhbSB7
U3RyaW5nfSBbbmFtZV0gTmFtZXNwYWNlZCBldmVudCBuYW1lLgotICBAcGFyYW0ge09iamVjdH0g
cGF5bG9hZAotICBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFjayBGdW5jdGlvbiB0aGF0IHlvdSdy
ZSBpbnN0cnVtZW50aW5nLgotICBAcGFyYW0ge09iamVjdH0gYmluZGluZyBDb250ZXh0IHRoYXQg
aW5zdHJ1bWVudCBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aC4KLSovCi1FbWJlci5JbnN0cnVtZW50
YXRpb24uaW5zdHJ1bWVudCA9IGZ1bmN0aW9uKG5hbWUsIHBheWxvYWQsIGNhbGxiYWNrLCBiaW5k
aW5nKSB7Ci0gIHZhciBsaXN0ZW5lcnMgPSBjYWNoZVtuYW1lXSwgdGltZU5hbWUsIHJldDsKLQot
ICBpZiAoRW1iZXIuU1RSVUNUVVJFRF9QUk9GSUxFKSB7Ci0gICAgdGltZU5hbWUgPSBuYW1lICsg
IjogIiArIHBheWxvYWQub2JqZWN0OwotICAgIGNvbnNvbGUudGltZSh0aW1lTmFtZSk7Ci0gIH0K
LQotICBpZiAoIWxpc3RlbmVycykgewotICAgIGxpc3RlbmVycyA9IHBvcHVsYXRlTGlzdGVuZXJz
KG5hbWUpOwotICB9Ci0KLSAgaWYgKGxpc3RlbmVycy5sZW5ndGggPT09IDApIHsKLSAgICByZXQg
PSBjYWxsYmFjay5jYWxsKGJpbmRpbmcpOwotICAgIGlmIChFbWJlci5TVFJVQ1RVUkVEX1BST0ZJ
TEUpIHsgY29uc29sZS50aW1lRW5kKHRpbWVOYW1lKTsgfQotICAgIHJldHVybiByZXQ7Ci0gIH0K
LQotICB2YXIgYmVmb3JlVmFsdWVzID0gW10sIGxpc3RlbmVyLCBpLCBsOwotCi0gIGZ1bmN0aW9u
IHRyeWFibGUoKSB7Ci0gICAgZm9yIChpPTAsIGw9bGlzdGVuZXJzLmxlbmd0aDsgaTxsOyBpKysp
IHsKLSAgICAgIGxpc3RlbmVyID0gbGlzdGVuZXJzW2ldOwotICAgICAgYmVmb3JlVmFsdWVzW2ld
ID0gbGlzdGVuZXIuYmVmb3JlKG5hbWUsIHRpbWUoKSwgcGF5bG9hZCk7Ci0gICAgfQotCi0gICAg
cmV0dXJuIGNhbGxiYWNrLmNhbGwoYmluZGluZyk7Ci0gIH0KLQotICBmdW5jdGlvbiBjYXRjaGFi
bGUoZSkgewotICAgIHBheWxvYWQgPSBwYXlsb2FkIHx8IHt9OwotICAgIHBheWxvYWQuZXhjZXB0
aW9uID0gZTsKLSAgfQotCi0gIGZ1bmN0aW9uIGZpbmFsaXplcigpIHsKLSAgICBmb3IgKGk9MCwg
bD1saXN0ZW5lcnMubGVuZ3RoOyBpPGw7IGkrKykgewotICAgICAgbGlzdGVuZXIgPSBsaXN0ZW5l
cnNbaV07Ci0gICAgICBsaXN0ZW5lci5hZnRlcihuYW1lLCB0aW1lKCksIHBheWxvYWQsIGJlZm9y
ZVZhbHVlc1tpXSk7Ci0gICAgfQotCi0gICAgaWYgKEVtYmVyLlNUUlVDVFVSRURfUFJPRklMRSkg
ewotICAgICAgY29uc29sZS50aW1lRW5kKHRpbWVOYW1lKTsKLSAgICB9Ci0gIH0KLQotICByZXR1
cm4gRW1iZXIudHJ5Q2F0Y2hGaW5hbGx5KHRyeWFibGUsIGNhdGNoYWJsZSwgZmluYWxpemVyKTsK
LX07Ci0KLS8qKgotICBTdWJzY3JpYmVzIHRvIGEgcGFydGljdWxhciBldmVudCBvciBpbnN0cnVt
ZW50ZWQgYmxvY2sgb2YgY29kZS4KLQotICBAbWV0aG9kIHN1YnNjcmliZQotICBAbmFtZXNwYWNl
IEVtYmVyLkluc3RydW1lbnRhdGlvbgotCi0gIEBwYXJhbSB7U3RyaW5nfSBbcGF0dGVybl0gTmFt
ZXNwYWNlZCBldmVudCBuYW1lLgotICBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gQmVmb3JlIGFu
ZCBBZnRlciBob29rcy4KLQotICBAcmV0dXJuIHtTdWJzY3JpYmVyfQotKi8KLUVtYmVyLkluc3Ry
dW1lbnRhdGlvbi5zdWJzY3JpYmUgPSBmdW5jdGlvbihwYXR0ZXJuLCBvYmplY3QpIHsKLSAgdmFy
IHBhdGhzID0gcGF0dGVybi5zcGxpdCgiLiIpLCBwYXRoLCByZWdleCA9IFtdOwotCi0gIGZvciAo
dmFyIGk9MCwgbD1wYXRocy5sZW5ndGg7IGk8bDsgaSsrKSB7Ci0gICAgcGF0aCA9IHBhdGhzW2ld
OwotICAgIGlmIChwYXRoID09PSAiKiIpIHsKLSAgICAgIHJlZ2V4LnB1c2goIlteXFwuXSoiKTsK
LSAgICB9IGVsc2UgewotICAgICAgcmVnZXgucHVzaChwYXRoKTsKLSAgICB9Ci0gIH0KLQotICBy
ZWdleCA9IHJlZ2V4LmpvaW4oIlxcLiIpOwotICByZWdleCA9IHJlZ2V4ICsgIihcXC4uKik/IjsK
LQotICB2YXIgc3Vic2NyaWJlciA9IHsKLSAgICBwYXR0ZXJuOiBwYXR0ZXJuLAotICAgIHJlZ2V4
OiBuZXcgUmVnRXhwKCJeIiArIHJlZ2V4ICsgIiQiKSwKLSAgICBvYmplY3Q6IG9iamVjdAotICB9
OwotCi0gIHN1YnNjcmliZXJzLnB1c2goc3Vic2NyaWJlcik7Ci0gIGNhY2hlID0ge307Ci0KLSAg
cmV0dXJuIHN1YnNjcmliZXI7Ci19OwotCi0vKioKLSAgVW5zdWJzY3JpYmVzIGZyb20gYSBwYXJ0
aWN1bGFyIGV2ZW50IG9yIGluc3RydW1lbnRlZCBibG9jayBvZiBjb2RlLgotCi0gIEBtZXRob2Qg
dW5zdWJzY3JpYmUKLSAgQG5hbWVzcGFjZSBFbWJlci5JbnN0cnVtZW50YXRpb24KLQotICBAcGFy
YW0ge09iamVjdH0gW3N1YnNjcmliZXJdCi0qLwotRW1iZXIuSW5zdHJ1bWVudGF0aW9uLnVuc3Vi
c2NyaWJlID0gZnVuY3Rpb24oc3Vic2NyaWJlcikgewotICB2YXIgaW5kZXg7Ci0KLSAgZm9yICh2
YXIgaT0wLCBsPXN1YnNjcmliZXJzLmxlbmd0aDsgaTxsOyBpKyspIHsKLSAgICBpZiAoc3Vic2Ny
aWJlcnNbaV0gPT09IHN1YnNjcmliZXIpIHsKLSAgICAgIGluZGV4ID0gaTsKLSAgICB9Ci0gIH0K
LQotICBzdWJzY3JpYmVycy5zcGxpY2UoaW5kZXgsIDEpOwotICBjYWNoZSA9IHt9OwotfTsKLQot
LyoqCi0gIFJlc2V0cyBgRW1iZXIuSW5zdHJ1bWVudGF0aW9uYCBieSBmbHVzaGluZyBsaXN0IG9m
IHN1YnNjcmliZXJzLgotCi0gIEBtZXRob2QgcmVzZXQKLSAgQG5hbWVzcGFjZSBFbWJlci5JbnN0
cnVtZW50YXRpb24KLSovCi1FbWJlci5JbnN0cnVtZW50YXRpb24ucmVzZXQgPSBmdW5jdGlvbigp
IHsKLSAgc3Vic2NyaWJlcnMgPSBbXTsKLSAgY2FjaGUgPSB7fTsKLX07Ci0KLUVtYmVyLmluc3Ry
dW1lbnQgPSBFbWJlci5JbnN0cnVtZW50YXRpb24uaW5zdHJ1bWVudDsKLUVtYmVyLnN1YnNjcmli
ZSA9IEVtYmVyLkluc3RydW1lbnRhdGlvbi5zdWJzY3JpYmU7Ci19KSgpOwotCi0KLQotKGZ1bmN0
aW9uKCkgewotdmFyIG1hcCwgZm9yRWFjaCwgaW5kZXhPZiwgc3BsaWNlOwotbWFwICAgICA9IEFy
cmF5LnByb3RvdHlwZS5tYXAgICAgIHx8IEVtYmVyLkFycmF5UG9seWZpbGxzLm1hcDsKLWZvckVh
Y2ggPSBBcnJheS5wcm90b3R5cGUuZm9yRWFjaCB8fCBFbWJlci5BcnJheVBvbHlmaWxscy5mb3JF
YWNoOwotaW5kZXhPZiA9IEFycmF5LnByb3RvdHlwZS5pbmRleE9mIHx8IEVtYmVyLkFycmF5UG9s
eWZpbGxzLmluZGV4T2Y7Ci1zcGxpY2UgPSBBcnJheS5wcm90b3R5cGUuc3BsaWNlOwotCi12YXIg
dXRpbHMgPSBFbWJlci5FbnVtZXJhYmxlVXRpbHMgPSB7Ci0gIG1hcDogZnVuY3Rpb24ob2JqLCBj
YWxsYmFjaywgdGhpc0FyZykgewotICAgIHJldHVybiBvYmoubWFwID8gb2JqLm1hcC5jYWxsKG9i
aiwgY2FsbGJhY2ssIHRoaXNBcmcpIDogbWFwLmNhbGwob2JqLCBjYWxsYmFjaywgdGhpc0FyZyk7
Ci0gIH0sCi0KLSAgZm9yRWFjaDogZnVuY3Rpb24ob2JqLCBjYWxsYmFjaywgdGhpc0FyZykgewot
ICAgIHJldHVybiBvYmouZm9yRWFjaCA/IG9iai5mb3JFYWNoLmNhbGwob2JqLCBjYWxsYmFjaywg
dGhpc0FyZykgOiBmb3JFYWNoLmNhbGwob2JqLCBjYWxsYmFjaywgdGhpc0FyZyk7Ci0gIH0sCi0K
LSAgaW5kZXhPZjogZnVuY3Rpb24ob2JqLCBlbGVtZW50LCBpbmRleCkgewotICAgIHJldHVybiBv
YmouaW5kZXhPZiA/IG9iai5pbmRleE9mLmNhbGwob2JqLCBlbGVtZW50LCBpbmRleCkgOiBpbmRl
eE9mLmNhbGwob2JqLCBlbGVtZW50LCBpbmRleCk7Ci0gIH0sCi0KLSAgaW5kZXhlc09mOiBmdW5j
dGlvbihvYmosIGVsZW1lbnRzKSB7Ci0gICAgcmV0dXJuIGVsZW1lbnRzID09PSB1bmRlZmluZWQg
PyBbXSA6IHV0aWxzLm1hcChlbGVtZW50cywgZnVuY3Rpb24oaXRlbSkgewotICAgICAgcmV0dXJu
IHV0aWxzLmluZGV4T2Yob2JqLCBpdGVtKTsKLSAgICB9KTsKLSAgfSwKLQotICBhZGRPYmplY3Q6
IGZ1bmN0aW9uKGFycmF5LCBpdGVtKSB7Ci0gICAgdmFyIGluZGV4ID0gdXRpbHMuaW5kZXhPZihh
cnJheSwgaXRlbSk7Ci0gICAgaWYgKGluZGV4ID09PSAtMSkgeyBhcnJheS5wdXNoKGl0ZW0pOyB9
Ci0gIH0sCi0KLSAgcmVtb3ZlT2JqZWN0OiBmdW5jdGlvbihhcnJheSwgaXRlbSkgewotICAgIHZh
ciBpbmRleCA9IHV0aWxzLmluZGV4T2YoYXJyYXksIGl0ZW0pOwotICAgIGlmIChpbmRleCAhPT0g
LTEpIHsgYXJyYXkuc3BsaWNlKGluZGV4LCAxKTsgfQotICB9LAotCi0gIF9yZXBsYWNlOiBmdW5j
dGlvbihhcnJheSwgaWR4LCBhbXQsIG9iamVjdHMpIHsKLSAgICB2YXIgYXJncyA9IFtdLmNvbmNh
dChvYmplY3RzKSwgY2h1bmssIHJldCA9IFtdLAotICAgICAgICAvLyBodHRwczovL2NvZGUuZ29v
Z2xlLmNvbS9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9NTY1ODgKLSAgICAgICAgc2l6ZSA9
IDYwMDAwLCBzdGFydCA9IGlkeCwgZW5kcyA9IGFtdCwgY291bnQ7Ci0KLSAgICB3aGlsZSAoYXJn
cy5sZW5ndGgpIHsKLSAgICAgIGNvdW50ID0gZW5kcyA+IHNpemUgPyBzaXplIDogZW5kczsKLSAg
ICAgIGlmIChjb3VudCA8PSAwKSB7IGNvdW50ID0gMDsgfQotCi0gICAgICBjaHVuayA9IGFyZ3Mu
c3BsaWNlKDAsIHNpemUpOwotICAgICAgY2h1bmsgPSBbc3RhcnQsIGNvdW50XS5jb25jYXQoY2h1
bmspOwotCi0gICAgICBzdGFydCArPSBzaXplOwotICAgICAgZW5kcyAtPSBjb3VudDsKLQotICAg
ICAgcmV0ID0gcmV0LmNvbmNhdChzcGxpY2UuYXBwbHkoYXJyYXksIGNodW5rKSk7Ci0gICAgfQot
ICAgIHJldHVybiByZXQ7Ci0gIH0sCi0KLSAgcmVwbGFjZTogZnVuY3Rpb24oYXJyYXksIGlkeCwg
YW10LCBvYmplY3RzKSB7Ci0gICAgaWYgKGFycmF5LnJlcGxhY2UpIHsKLSAgICAgIHJldHVybiBh
cnJheS5yZXBsYWNlKGlkeCwgYW10LCBvYmplY3RzKTsKLSAgICB9IGVsc2UgewotICAgICAgcmV0
dXJuIHV0aWxzLl9yZXBsYWNlKGFycmF5LCBpZHgsIGFtdCwgb2JqZWN0cyk7Ci0gICAgfQotICB9
LAotCi0gIGludGVyc2VjdGlvbjogZnVuY3Rpb24oYXJyYXkxLCBhcnJheTIpIHsKLSAgICB2YXIg
aW50ZXJzZWN0aW9uID0gW107Ci0KLSAgICB1dGlscy5mb3JFYWNoKGFycmF5MSwgZnVuY3Rpb24o
ZWxlbWVudCkgewotICAgICAgaWYgKHV0aWxzLmluZGV4T2YoYXJyYXkyLCBlbGVtZW50KSA+PSAw
KSB7Ci0gICAgICAgIGludGVyc2VjdGlvbi5wdXNoKGVsZW1lbnQpOwotICAgICAgfQotICAgIH0p
OwotCi0gICAgcmV0dXJuIGludGVyc2VjdGlvbjsKLSAgfQotfTsKLQotfSkoKTsKLQotCi0KLShm
dW5jdGlvbigpIHsKLS8qKgotQG1vZHVsZSBlbWJlci1tZXRhbAotKi8KLQotdmFyIE1FVEFfS0VZ
ID0gRW1iZXIuTUVUQV9LRVksIGdldDsKLQotdmFyIE1BTkRBVE9SWV9TRVRURVIgPSBFbWJlci5F
TlYuTUFOREFUT1JZX1NFVFRFUjsKLQotdmFyIElTX0dMT0JBTF9QQVRIID0gL14oW0EtWiRdfChb
MC05XVtBLVokXSkpLipbXC5cKl0vOwotdmFyIEhBU19USElTICA9IC9edGhpc1tcLlwqXS87Ci12
YXIgRklSU1RfS0VZID0gL14oW15cLlwqXSspLzsKLQotLy8gLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgotLy8gR0VUIEFORCBTRVQKLS8v
Ci0vLyBJZiB3ZSBhcmUgb24gYSBwbGF0Zm9ybSB0aGF0IHN1cHBvcnRzIGFjY2Vzc29ycyB3ZSBj
YW4gdXNlIHRob3NlLgotLy8gT3RoZXJ3aXNlIHNpbXVsYXRlIGFjY2Vzc29ycyBieSBsb29raW5n
IHVwIHRoZSBwcm9wZXJ0eSBkaXJlY3RseSBvbiB0aGUKLS8vIG9iamVjdC4KLQotLyoqCi0gIEdl
dHMgdGhlIHZhbHVlIG9mIGEgcHJvcGVydHkgb24gYW4gb2JqZWN0LiBJZiB0aGUgcHJvcGVydHkg
aXMgY29tcHV0ZWQsCi0gIHRoZSBmdW5jdGlvbiB3aWxsIGJlIGludm9rZWQuIElmIHRoZSBwcm9w
ZXJ0eSBpcyBub3QgZGVmaW5lZCBidXQgdGhlCi0gIG9iamVjdCBpbXBsZW1lbnRzIHRoZSBgdW5r
bm93blByb3BlcnR5YCBtZXRob2QgdGhlbiB0aGF0IHdpbGwgYmUgaW52b2tlZC4KLQotICBJZiB5
b3UgcGxhbiB0byBydW4gb24gSUU4IGFuZCBvbGRlciBicm93c2VycyB0aGVuIHlvdSBzaG91bGQg
dXNlIHRoaXMKLSAgbWV0aG9kIGFueXRpbWUgeW91IHdhbnQgdG8gcmV0cmlldmUgYSBwcm9wZXJ0
eSBvbiBhbiBvYmplY3QgdGhhdCB5b3UgZG9uJ3QKLSAga25vdyBmb3Igc3VyZSBpcyBwcml2YXRl
LiAoUHJvcGVydGllcyBiZWdpbm5pbmcgd2l0aCBhbiB1bmRlcnNjb3JlICdfJwotICBhcmUgY29u
c2lkZXJlZCBwcml2YXRlLikKLQotICBPbiBhbGwgbmV3ZXIgYnJvd3NlcnMsIHlvdSBvbmx5IG5l
ZWQgdG8gdXNlIHRoaXMgbWV0aG9kIHRvIHJldHJpZXZlCi0gIHByb3BlcnRpZXMgaWYgdGhlIHBy
b3BlcnR5IG1pZ2h0IG5vdCBiZSBkZWZpbmVkIG9uIHRoZSBvYmplY3QgYW5kIHlvdSB3YW50Ci0g
IHRvIHJlc3BlY3QgdGhlIGB1bmtub3duUHJvcGVydHlgIGhhbmRsZXIuIE90aGVyd2lzZSB5b3Ug
Y2FuIGlnbm9yZSB0aGlzCi0gIG1ldGhvZC4KLQotICBOb3RlIHRoYXQgaWYgdGhlIG9iamVjdCBp
dHNlbGYgaXMgYHVuZGVmaW5lZGAsIHRoaXMgbWV0aG9kIHdpbGwgdGhyb3cKLSAgYW4gZXJyb3Iu
Ci0KLSAgQG1ldGhvZCBnZXQKLSAgQGZvciBFbWJlcgotICBAcGFyYW0ge09iamVjdH0gb2JqIFRo
ZSBvYmplY3QgdG8gcmV0cmlldmUgZnJvbS4KLSAgQHBhcmFtIHtTdHJpbmd9IGtleU5hbWUgVGhl
IHByb3BlcnR5IGtleSB0byByZXRyaWV2ZQotICBAcmV0dXJuIHtPYmplY3R9IHRoZSBwcm9wZXJ0
eSB2YWx1ZSBvciBgbnVsbGAuCi0qLwotZ2V0ID0gZnVuY3Rpb24gZ2V0KG9iaiwga2V5TmFtZSkg
ewotICAvLyBIZWxwZXJzIHRoYXQgb3BlcmF0ZSB3aXRoICd0aGlzJyB3aXRoaW4gYW4gI2VhY2gK
LSAgaWYgKGtleU5hbWUgPT09ICcnKSB7Ci0gICAgcmV0dXJuIG9iajsKLSAgfQotCi0gIGlmICgh
a2V5TmFtZSAmJiAnc3RyaW5nJz09PXR5cGVvZiBvYmopIHsKLSAgICBrZXlOYW1lID0gb2JqOwot
ICAgIG9iaiA9IG51bGw7Ci0gIH0KLQotICBFbWJlci5hc3NlcnQoIkNhbm5vdCBjYWxsIGdldCB3
aXRoICIrIGtleU5hbWUgKyIga2V5LiIsICEha2V5TmFtZSk7Ci0gIEVtYmVyLmFzc2VydCgiQ2Fu
bm90IGNhbGwgZ2V0IHdpdGggJyIrIGtleU5hbWUgKyInIG9uIGFuIHVuZGVmaW5lZCBvYmplY3Qu
Iiwgb2JqICE9PSB1bmRlZmluZWQpOwotCi0gIGlmIChvYmogPT09IG51bGwgfHwga2V5TmFtZS5p
bmRleE9mKCcuJykgIT09IC0xKSB7Ci0gICAgcmV0dXJuIGdldFBhdGgob2JqLCBrZXlOYW1lKTsK
LSAgfQotCi0gIHZhciBtZXRhID0gb2JqW01FVEFfS0VZXSwgZGVzYyA9IG1ldGEgJiYgbWV0YS5k
ZXNjc1trZXlOYW1lXSwgcmV0OwotICBpZiAoZGVzYykgewotICAgIHJldHVybiBkZXNjLmdldChv
YmosIGtleU5hbWUpOwotICB9IGVsc2UgewotICAgIGlmIChNQU5EQVRPUllfU0VUVEVSICYmIG1l
dGEgJiYgbWV0YS53YXRjaGluZ1trZXlOYW1lXSA+IDApIHsKLSAgICAgIHJldCA9IG1ldGEudmFs
dWVzW2tleU5hbWVdOwotICAgIH0gZWxzZSB7Ci0gICAgICByZXQgPSBvYmpba2V5TmFtZV07Ci0g
ICAgfQotCi0gICAgaWYgKHJldCA9PT0gdW5kZWZpbmVkICYmCi0gICAgICAgICdvYmplY3QnID09
PSB0eXBlb2Ygb2JqICYmICEoa2V5TmFtZSBpbiBvYmopICYmICdmdW5jdGlvbicgPT09IHR5cGVv
ZiBvYmoudW5rbm93blByb3BlcnR5KSB7Ci0gICAgICByZXR1cm4gb2JqLnVua25vd25Qcm9wZXJ0
eShrZXlOYW1lKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmV0OwotICB9Ci19OwotCi0vLyBDdXJy
ZW50bHkgdXNlZCBvbmx5IGJ5IEVtYmVyIERhdGEgdGVzdHMKLWlmIChFbWJlci5jb25maWcub3Zl
cnJpZGVBY2Nlc3NvcnMpIHsKLSAgRW1iZXIuZ2V0ID0gZ2V0OwotICBFbWJlci5jb25maWcub3Zl
cnJpZGVBY2Nlc3NvcnMoKTsKLSAgZ2V0ID0gRW1iZXIuZ2V0OwotfQotCi0vKioKLSAgTm9ybWFs
aXplcyBhIHRhcmdldC9wYXRoIHBhaXIgdG8gcmVmbGVjdCB0aGF0IGFjdHVhbCB0YXJnZXQvcGF0
aCB0aGF0IHNob3VsZAotICBiZSBvYnNlcnZlZCwgZXRjLiBUaGlzIHRha2VzIGludG8gYWNjb3Vu
dCBwYXNzaW5nIGluIGdsb2JhbCBwcm9wZXJ0eQotICBwYXRocyAoaS5lLiBhIHBhdGggYmVnaW5u
aW5nIHdpdGggYSBjYXB0aWFsIGxldHRlciBub3QgZGVmaW5lZCBvbiB0aGUKLSAgdGFyZ2V0KSBh
bmQgKiBzZXBhcmF0b3JzLgotCi0gIEBwcml2YXRlCi0gIEBtZXRob2Qgbm9ybWFsaXplVHVwbGUK
LSAgQGZvciBFbWJlcgotICBAcGFyYW0ge09iamVjdH0gdGFyZ2V0IFRoZSBjdXJyZW50IHRhcmdl
dC4gTWF5IGJlIGBudWxsYC4KLSAgQHBhcmFtIHtTdHJpbmd9IHBhdGggQSBwYXRoIG9uIHRoZSB0
YXJnZXQgb3IgYSBnbG9iYWwgcHJvcGVydHkgcGF0aC4KLSAgQHJldHVybiB7QXJyYXl9IGEgdGVt
cG9yYXJ5IGFycmF5IHdpdGggdGhlIG5vcm1hbGl6ZWQgdGFyZ2V0L3BhdGggcGFpci4KLSovCi12
YXIgbm9ybWFsaXplVHVwbGUgPSBFbWJlci5ub3JtYWxpemVUdXBsZSA9IGZ1bmN0aW9uKHRhcmdl
dCwgcGF0aCkgewotICB2YXIgaGFzVGhpcyAgPSBIQVNfVEhJUy50ZXN0KHBhdGgpLAotICAgICAg
aXNHbG9iYWwgPSAhaGFzVGhpcyAmJiBJU19HTE9CQUxfUEFUSC50ZXN0KHBhdGgpLAotICAgICAg
a2V5OwotCi0gIGlmICghdGFyZ2V0IHx8IGlzR2xvYmFsKSB0YXJnZXQgPSBFbWJlci5sb29rdXA7
Ci0gIGlmIChoYXNUaGlzKSBwYXRoID0gcGF0aC5zbGljZSg1KTsKLQotICBpZiAodGFyZ2V0ID09
PSBFbWJlci5sb29rdXApIHsKLSAgICBrZXkgPSBwYXRoLm1hdGNoKEZJUlNUX0tFWSlbMF07Ci0g
ICAgdGFyZ2V0ID0gZ2V0KHRhcmdldCwga2V5KTsKLSAgICBwYXRoICAgPSBwYXRoLnNsaWNlKGtl
eS5sZW5ndGgrMSk7Ci0gIH0KLQotICAvLyBtdXN0IHJldHVybiBzb21lIGtpbmQgb2YgcGF0aCB0
byBiZSB2YWxpZCBlbHNlIG90aGVyIHRoaW5ncyB3aWxsIGJyZWFrLgotICBpZiAoIXBhdGggfHwg
cGF0aC5sZW5ndGg9PT0wKSB0aHJvdyBuZXcgRW1iZXIuRXJyb3IoJ0ludmFsaWQgUGF0aCcpOwot
Ci0gIHJldHVybiBbIHRhcmdldCwgcGF0aCBdOwotfTsKLQotdmFyIGdldFBhdGggPSBFbWJlci5f
Z2V0UGF0aCA9IGZ1bmN0aW9uKHJvb3QsIHBhdGgpIHsKLSAgdmFyIGhhc1RoaXMsIHBhcnRzLCB0
dXBsZSwgaWR4LCBsZW47Ci0KLSAgLy8gSWYgdGhlcmUgaXMgbm8gcm9vdCBhbmQgcGF0aCBpcyBh
IGtleSBuYW1lLCByZXR1cm4gdGhhdAotICAvLyBwcm9wZXJ0eSBmcm9tIHRoZSBnbG9iYWwgb2Jq
ZWN0LgotICAvLyBFLmcuIGdldCgnRW1iZXInKSAtPiBFbWJlcgotICBpZiAocm9vdCA9PT0gbnVs
bCAmJiBwYXRoLmluZGV4T2YoJy4nKSA9PT0gLTEpIHsgcmV0dXJuIGdldChFbWJlci5sb29rdXAs
IHBhdGgpOyB9Ci0KLSAgLy8gZGV0ZWN0IGNvbXBsaWNhdGVkIHBhdGhzIGFuZCBub3JtYWxpemUg
dGhlbQotICBoYXNUaGlzICA9IEhBU19USElTLnRlc3QocGF0aCk7Ci0KLSAgaWYgKCFyb290IHx8
IGhhc1RoaXMpIHsKLSAgICB0dXBsZSA9IG5vcm1hbGl6ZVR1cGxlKHJvb3QsIHBhdGgpOwotICAg
IHJvb3QgPSB0dXBsZVswXTsKLSAgICBwYXRoID0gdHVwbGVbMV07Ci0gICAgdHVwbGUubGVuZ3Ro
ID0gMDsKLSAgfQotCi0gIHBhcnRzID0gcGF0aC5zcGxpdCgiLiIpOwotICBsZW4gPSBwYXJ0cy5s
ZW5ndGg7Ci0gIGZvciAoaWR4ID0gMDsgcm9vdCAhPSBudWxsICYmIGlkeCA8IGxlbjsgaWR4Kysp
IHsKLSAgICByb290ID0gZ2V0KHJvb3QsIHBhcnRzW2lkeF0sIHRydWUpOwotICAgIGlmIChyb290
ICYmIHJvb3QuaXNEZXN0cm95ZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfQotICB9Ci0gIHJldHVy
biByb290OwotfTsKLQotRW1iZXIuZ2V0V2l0aERlZmF1bHQgPSBmdW5jdGlvbihyb290LCBrZXks
IGRlZmF1bHRWYWx1ZSkgewotICB2YXIgdmFsdWUgPSBnZXQocm9vdCwga2V5KTsKLQotICBpZiAo
dmFsdWUgPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gZGVmYXVsdFZhbHVlOyB9Ci0gIHJldHVybiB2
YWx1ZTsKLX07Ci0KLQotRW1iZXIuZ2V0ID0gZ2V0OwotCi19KSgpOwotCi0KLQotKGZ1bmN0aW9u
KCkgewotLyoqCi1AbW9kdWxlIGVtYmVyLW1ldGFsCi0qLwotCi12YXIgb19jcmVhdGUgPSBFbWJl
ci5jcmVhdGUsCi0gICAgbWV0YUZvciA9IEVtYmVyLm1ldGEsCi0gICAgTUVUQV9LRVkgPSBFbWJl
ci5NRVRBX0tFWSwKLSAgICBhX3NsaWNlID0gW10uc2xpY2UsCi0gICAgLyogbGlzdGVuZXIgZmxh
Z3MgKi8KLSAgICBPTkNFID0gMSwgU1VTUEVOREVEID0gMjsKLQotLyoKLSAgVGhlIGV2ZW50IHN5
c3RlbSB1c2VzIGEgc2VyaWVzIG9mIG5lc3RlZCBoYXNoZXMgdG8gc3RvcmUgbGlzdGVuZXJzIG9u
IGFuCi0gIG9iamVjdC4gV2hlbiBhIGxpc3RlbmVyIGlzIHJlZ2lzdGVyZWQsIG9yIHdoZW4gYW4g
ZXZlbnQgYXJyaXZlcywgdGhlc2UKLSAgaGFzaGVzIGFyZSBjb25zdWx0ZWQgdG8gZGV0ZXJtaW5l
IHdoaWNoIHRhcmdldCBhbmQgYWN0aW9uIHBhaXIgdG8gaW52b2tlLgotCi0gIFRoZSBoYXNoZXMg
YXJlIHN0b3JlZCBpbiB0aGUgb2JqZWN0J3MgbWV0YSBoYXNoLCBhbmQgbG9vayBsaWtlIHRoaXM6
Ci0KLSAgICAgIC8vIE9iamVjdCdzIG1ldGEgaGFzaAotICAgICAgewotICAgICAgICBsaXN0ZW5l
cnM6IHsgICAgICAgLy8gdmFyaWFibGUgbmFtZTogYGxpc3RlbmVyU2V0YAotICAgICAgICAgICJm
b286Y2hhbmdlZCI6IFsgLy8gdmFyaWFibGUgbmFtZTogYGFjdGlvbnNgCi0gICAgICAgICAgICB0
YXJnZXQsIG1ldGhvZCwgZmxhZ3MKLSAgICAgICAgICBdCi0gICAgICAgIH0KLSAgICAgIH0KLQot
Ki8KLQotZnVuY3Rpb24gaW5kZXhPZihhcnJheSwgdGFyZ2V0LCBtZXRob2QpIHsKLSAgdmFyIGlu
ZGV4ID0gLTE7Ci0gIGZvciAodmFyIGkgPSAwLCBsID0gYXJyYXkubGVuZ3RoOyBpIDwgbDsgaSAr
PSAzKSB7Ci0gICAgaWYgKHRhcmdldCA9PT0gYXJyYXlbaV0gJiYgbWV0aG9kID09PSBhcnJheVtp
KzFdKSB7IGluZGV4ID0gaTsgYnJlYWs7IH0KLSAgfQotICByZXR1cm4gaW5kZXg7Ci19Ci0KLWZ1
bmN0aW9uIGFjdGlvbnNGb3Iob2JqLCBldmVudE5hbWUpIHsKLSAgdmFyIG1ldGEgPSBtZXRhRm9y
KG9iaiwgdHJ1ZSksCi0gICAgICBhY3Rpb25zOwotCi0gIGlmICghbWV0YS5saXN0ZW5lcnMpIHsg
bWV0YS5saXN0ZW5lcnMgPSB7fTsgfQotCi0gIGlmICghbWV0YS5oYXNPd25Qcm9wZXJ0eSgnbGlz
dGVuZXJzJykpIHsKLSAgICAvLyBzZXR1cCBpbmhlcml0ZWQgY29weSBvZiB0aGUgbGlzdGVuZXJz
IG9iamVjdAotICAgIG1ldGEubGlzdGVuZXJzID0gb19jcmVhdGUobWV0YS5saXN0ZW5lcnMpOwot
ICB9Ci0KLSAgYWN0aW9ucyA9IG1ldGEubGlzdGVuZXJzW2V2ZW50TmFtZV07Ci0KLSAgLy8gaWYg
dGhlcmUgYXJlIGFjdGlvbnMsIGJ1dCB0aGUgZXZlbnROYW1lIGRvZXNuJ3QgZXhpc3QgaW4gb3Vy
IGxpc3RlbmVycywgdGhlbiBjb3B5IHRoZW0gZnJvbSB0aGUgcHJvdG90eXBlCi0gIGlmIChhY3Rp
b25zICYmICFtZXRhLmxpc3RlbmVycy5oYXNPd25Qcm9wZXJ0eShldmVudE5hbWUpKSB7Ci0gICAg
YWN0aW9ucyA9IG1ldGEubGlzdGVuZXJzW2V2ZW50TmFtZV0gPSBtZXRhLmxpc3RlbmVyc1tldmVu
dE5hbWVdLnNsaWNlKCk7Ci0gIH0gZWxzZSBpZiAoIWFjdGlvbnMpIHsKLSAgICBhY3Rpb25zID0g
bWV0YS5saXN0ZW5lcnNbZXZlbnROYW1lXSA9IFtdOwotICB9Ci0KLSAgcmV0dXJuIGFjdGlvbnM7
Ci19Ci0KLWZ1bmN0aW9uIGFjdGlvbnNVbmlvbihvYmosIGV2ZW50TmFtZSwgb3RoZXJBY3Rpb25z
KSB7Ci0gIHZhciBtZXRhID0gb2JqW01FVEFfS0VZXSwKLSAgICAgIGFjdGlvbnMgPSBtZXRhICYm
IG1ldGEubGlzdGVuZXJzICYmIG1ldGEubGlzdGVuZXJzW2V2ZW50TmFtZV07Ci0KLSAgaWYgKCFh
Y3Rpb25zKSB7IHJldHVybjsgfQotICBmb3IgKHZhciBpID0gYWN0aW9ucy5sZW5ndGggLSAzOyBp
ID49IDA7IGkgLT0gMykgewotICAgIHZhciB0YXJnZXQgPSBhY3Rpb25zW2ldLAotICAgICAgICBt
ZXRob2QgPSBhY3Rpb25zW2krMV0sCi0gICAgICAgIGZsYWdzID0gYWN0aW9uc1tpKzJdLAotICAg
ICAgICBhY3Rpb25JbmRleCA9IGluZGV4T2Yob3RoZXJBY3Rpb25zLCB0YXJnZXQsIG1ldGhvZCk7
Ci0KLSAgICBpZiAoYWN0aW9uSW5kZXggPT09IC0xKSB7Ci0gICAgICBvdGhlckFjdGlvbnMucHVz
aCh0YXJnZXQsIG1ldGhvZCwgZmxhZ3MpOwotICAgIH0KLSAgfQotfQotCi1mdW5jdGlvbiBhY3Rp
b25zRGlmZihvYmosIGV2ZW50TmFtZSwgb3RoZXJBY3Rpb25zKSB7Ci0gIHZhciBtZXRhID0gb2Jq
W01FVEFfS0VZXSwKLSAgICAgIGFjdGlvbnMgPSBtZXRhICYmIG1ldGEubGlzdGVuZXJzICYmIG1l
dGEubGlzdGVuZXJzW2V2ZW50TmFtZV0sCi0gICAgICBkaWZmQWN0aW9ucyA9IFtdOwotCi0gIGlm
ICghYWN0aW9ucykgeyByZXR1cm47IH0KLSAgZm9yICh2YXIgaSA9IGFjdGlvbnMubGVuZ3RoIC0g
MzsgaSA+PSAwOyBpIC09IDMpIHsKLSAgICB2YXIgdGFyZ2V0ID0gYWN0aW9uc1tpXSwKLSAgICAg
ICAgbWV0aG9kID0gYWN0aW9uc1tpKzFdLAotICAgICAgICBmbGFncyA9IGFjdGlvbnNbaSsyXSwK
LSAgICAgICAgYWN0aW9uSW5kZXggPSBpbmRleE9mKG90aGVyQWN0aW9ucywgdGFyZ2V0LCBtZXRo
b2QpOwotCi0gICAgaWYgKGFjdGlvbkluZGV4ICE9PSAtMSkgeyBjb250aW51ZTsgfQotCi0gICAg
b3RoZXJBY3Rpb25zLnB1c2godGFyZ2V0LCBtZXRob2QsIGZsYWdzKTsKLSAgICBkaWZmQWN0aW9u
cy5wdXNoKHRhcmdldCwgbWV0aG9kLCBmbGFncyk7Ci0gIH0KLQotICByZXR1cm4gZGlmZkFjdGlv
bnM7Ci19Ci0KLS8qKgotICBBZGQgYW4gZXZlbnQgbGlzdGVuZXIKLQotICBAbWV0aG9kIGFkZExp
c3RlbmVyCi0gIEBmb3IgRW1iZXIKLSAgQHBhcmFtIG9iagotICBAcGFyYW0ge1N0cmluZ30gZXZl
bnROYW1lCi0gIEBwYXJhbSB7T2JqZWN0fEZ1bmN0aW9ufSB0YXJnZXRPck1ldGhvZCBBIHRhcmdl
dCBvYmplY3Qgb3IgYSBmdW5jdGlvbgotICBAcGFyYW0ge0Z1bmN0aW9ufFN0cmluZ30gbWV0aG9k
IEEgZnVuY3Rpb24gb3IgdGhlIG5hbWUgb2YgYSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgb24gYHRh
cmdldGAKLSAgQHBhcmFtIHtCb29sZWFufSBvbmNlIEEgZmxhZyB3aGV0aGVyIGEgZnVuY3Rpb24g
c2hvdWxkIG9ubHkgYmUgY2FsbGVkIG9uY2UKLSovCi1mdW5jdGlvbiBhZGRMaXN0ZW5lcihvYmos
IGV2ZW50TmFtZSwgdGFyZ2V0LCBtZXRob2QsIG9uY2UpIHsKLSAgRW1iZXIuYXNzZXJ0KCJZb3Ug
bXVzdCBwYXNzIGF0IGxlYXN0IGFuIG9iamVjdCBhbmQgZXZlbnQgbmFtZSB0byBFbWJlci5hZGRM
aXN0ZW5lciIsICEhb2JqICYmICEhZXZlbnROYW1lKTsKLQotICBpZiAoIW1ldGhvZCAmJiAnZnVu
Y3Rpb24nID09PSB0eXBlb2YgdGFyZ2V0KSB7Ci0gICAgbWV0aG9kID0gdGFyZ2V0OwotICAgIHRh
cmdldCA9IG51bGw7Ci0gIH0KLQotICB2YXIgYWN0aW9ucyA9IGFjdGlvbnNGb3Iob2JqLCBldmVu
dE5hbWUpLAotICAgICAgYWN0aW9uSW5kZXggPSBpbmRleE9mKGFjdGlvbnMsIHRhcmdldCwgbWV0
aG9kKSwKLSAgICAgIGZsYWdzID0gMDsKLQotICBpZiAob25jZSkgZmxhZ3MgfD0gT05DRTsKLQot
ICBpZiAoYWN0aW9uSW5kZXggIT09IC0xKSB7IHJldHVybjsgfQotCi0gIGFjdGlvbnMucHVzaCh0
YXJnZXQsIG1ldGhvZCwgZmxhZ3MpOwotCi0gIGlmICgnZnVuY3Rpb24nID09PSB0eXBlb2Ygb2Jq
LmRpZEFkZExpc3RlbmVyKSB7Ci0gICAgb2JqLmRpZEFkZExpc3RlbmVyKGV2ZW50TmFtZSwgdGFy
Z2V0LCBtZXRob2QpOwotICB9Ci19Ci0KLS8qKgotICBSZW1vdmUgYW4gZXZlbnQgbGlzdGVuZXIK
LQotICBBcmd1bWVudHMgc2hvdWxkIG1hdGNoIHRob3NlIHBhc3NlZCB0byBgRW1iZXIuYWRkTGlz
dGVuZXJgLgotCi0gIEBtZXRob2QgcmVtb3ZlTGlzdGVuZXIKLSAgQGZvciBFbWJlcgotICBAcGFy
YW0gb2JqCi0gIEBwYXJhbSB7U3RyaW5nfSBldmVudE5hbWUKLSAgQHBhcmFtIHtPYmplY3R8RnVu
Y3Rpb259IHRhcmdldE9yTWV0aG9kIEEgdGFyZ2V0IG9iamVjdCBvciBhIGZ1bmN0aW9uCi0gIEBw
YXJhbSB7RnVuY3Rpb258U3RyaW5nfSBtZXRob2QgQSBmdW5jdGlvbiBvciB0aGUgbmFtZSBvZiBh
IGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBvbiBgdGFyZ2V0YAotKi8KLWZ1bmN0aW9uIHJlbW92ZUxp
c3RlbmVyKG9iaiwgZXZlbnROYW1lLCB0YXJnZXQsIG1ldGhvZCkgewotICBFbWJlci5hc3NlcnQo
IllvdSBtdXN0IHBhc3MgYXQgbGVhc3QgYW4gb2JqZWN0IGFuZCBldmVudCBuYW1lIHRvIEVtYmVy
LnJlbW92ZUxpc3RlbmVyIiwgISFvYmogJiYgISFldmVudE5hbWUpOwotCi0gIGlmICghbWV0aG9k
ICYmICdmdW5jdGlvbicgPT09IHR5cGVvZiB0YXJnZXQpIHsKLSAgICBtZXRob2QgPSB0YXJnZXQ7
Ci0gICAgdGFyZ2V0ID0gbnVsbDsKLSAgfQotCi0gIGZ1bmN0aW9uIF9yZW1vdmVMaXN0ZW5lcih0
YXJnZXQsIG1ldGhvZCkgewotICAgIHZhciBhY3Rpb25zID0gYWN0aW9uc0ZvcihvYmosIGV2ZW50
TmFtZSksCi0gICAgICAgIGFjdGlvbkluZGV4ID0gaW5kZXhPZihhY3Rpb25zLCB0YXJnZXQsIG1l
dGhvZCk7Ci0KLSAgICAvLyBhY3Rpb24gZG9lc24ndCBleGlzdCwgZ2l2ZSB1cCBzaWxlbnRseQot
ICAgIGlmIChhY3Rpb25JbmRleCA9PT0gLTEpIHsgcmV0dXJuOyB9Ci0KLSAgICBhY3Rpb25zLnNw
bGljZShhY3Rpb25JbmRleCwgMyk7Ci0KLSAgICBpZiAoJ2Z1bmN0aW9uJyA9PT0gdHlwZW9mIG9i
ai5kaWRSZW1vdmVMaXN0ZW5lcikgewotICAgICAgb2JqLmRpZFJlbW92ZUxpc3RlbmVyKGV2ZW50
TmFtZSwgdGFyZ2V0LCBtZXRob2QpOwotICAgIH0KLSAgfQotCi0gIGlmIChtZXRob2QpIHsKLSAg
ICBfcmVtb3ZlTGlzdGVuZXIodGFyZ2V0LCBtZXRob2QpOwotICB9IGVsc2UgewotICAgIHZhciBt
ZXRhID0gb2JqW01FVEFfS0VZXSwKLSAgICAgICAgYWN0aW9ucyA9IG1ldGEgJiYgbWV0YS5saXN0
ZW5lcnMgJiYgbWV0YS5saXN0ZW5lcnNbZXZlbnROYW1lXTsKLQotICAgIGlmICghYWN0aW9ucykg
eyByZXR1cm47IH0KLSAgICBmb3IgKHZhciBpID0gYWN0aW9ucy5sZW5ndGggLSAzOyBpID49IDA7
IGkgLT0gMykgewotICAgICAgX3JlbW92ZUxpc3RlbmVyKGFjdGlvbnNbaV0sIGFjdGlvbnNbaSsx
XSk7Ci0gICAgfQotICB9Ci19Ci0KLS8qKgotICBTdXNwZW5kIGxpc3RlbmVyIGR1cmluZyBjYWxs
YmFjay4KLQotICBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgYnkgdGhlIHRhcmdldCBvZiB0aGUg
ZXZlbnQgbGlzdGVuZXIKLSAgd2hlbiBpdCBpcyB0YWtpbmcgYW4gYWN0aW9uIHRoYXQgd291bGQg
Y2F1c2UgdGhlIGV2ZW50LCBlLmcuCi0gIGFuIG9iamVjdCBtaWdodCBzdXNwZW5kIGl0cyBwcm9w
ZXJ0eSBjaGFuZ2UgbGlzdGVuZXIgd2hpbGUgaXQgaXMKLSAgc2V0dGluZyB0aGF0IHByb3BlcnR5
LgotCi0gIEBwcml2YXRlCi0gIEBtZXRob2Qgc3VzcGVuZExpc3RlbmVyCi0gIEBmb3IgRW1iZXIK
LSAgQHBhcmFtIG9iagotICBAcGFyYW0ge1N0cmluZ30gZXZlbnROYW1lCi0gIEBwYXJhbSB7T2Jq
ZWN0fEZ1bmN0aW9ufSB0YXJnZXRPck1ldGhvZCBBIHRhcmdldCBvYmplY3Qgb3IgYSBmdW5jdGlv
bgotICBAcGFyYW0ge0Z1bmN0aW9ufFN0cmluZ30gbWV0aG9kIEEgZnVuY3Rpb24gb3IgdGhlIG5h
bWUgb2YgYSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgb24gYHRhcmdldGAKLSAgQHBhcmFtIHtGdW5j
dGlvbn0gY2FsbGJhY2sKLSovCi1mdW5jdGlvbiBzdXNwZW5kTGlzdGVuZXIob2JqLCBldmVudE5h
bWUsIHRhcmdldCwgbWV0aG9kLCBjYWxsYmFjaykgewotICBpZiAoIW1ldGhvZCAmJiAnZnVuY3Rp
b24nID09PSB0eXBlb2YgdGFyZ2V0KSB7Ci0gICAgbWV0aG9kID0gdGFyZ2V0OwotICAgIHRhcmdl
dCA9IG51bGw7Ci0gIH0KLQotICB2YXIgYWN0aW9ucyA9IGFjdGlvbnNGb3Iob2JqLCBldmVudE5h
bWUpLAotICAgICAgYWN0aW9uSW5kZXggPSBpbmRleE9mKGFjdGlvbnMsIHRhcmdldCwgbWV0aG9k
KTsKLQotICBpZiAoYWN0aW9uSW5kZXggIT09IC0xKSB7Ci0gICAgYWN0aW9uc1thY3Rpb25JbmRl
eCsyXSB8PSBTVVNQRU5ERUQ7IC8vIG1hcmsgdGhlIGFjdGlvbiBhcyBzdXNwZW5kZWQKLSAgfQot
Ci0gIGZ1bmN0aW9uIHRyeWFibGUoKSAgIHsgcmV0dXJuIGNhbGxiYWNrLmNhbGwodGFyZ2V0KTsg
fQotICBmdW5jdGlvbiBmaW5hbGl6ZXIoKSB7IGlmIChhY3Rpb25JbmRleCAhPT0gLTEpIHsgYWN0
aW9uc1thY3Rpb25JbmRleCsyXSAmPSB+U1VTUEVOREVEOyB9IH0KLQotICByZXR1cm4gRW1iZXIu
dHJ5RmluYWxseSh0cnlhYmxlLCBmaW5hbGl6ZXIpOwotfQotCi0vKioKLSAgU3VzcGVuZHMgbXVs
dGlwbGUgbGlzdGVuZXJzIGR1cmluZyBhIGNhbGxiYWNrLgotCi0gIEBwcml2YXRlCi0gIEBtZXRo
b2Qgc3VzcGVuZExpc3RlbmVycwotICBAZm9yIEVtYmVyCi0gIEBwYXJhbSBvYmoKLSAgQHBhcmFt
IHtBcnJheX0gZXZlbnROYW1lIEFycmF5IG9mIGV2ZW50IG5hbWVzCi0gIEBwYXJhbSB7T2JqZWN0
fEZ1bmN0aW9ufSB0YXJnZXRPck1ldGhvZCBBIHRhcmdldCBvYmplY3Qgb3IgYSBmdW5jdGlvbgot
ICBAcGFyYW0ge0Z1bmN0aW9ufFN0cmluZ30gbWV0aG9kIEEgZnVuY3Rpb24gb3IgdGhlIG5hbWUg
b2YgYSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgb24gYHRhcmdldGAKLSAgQHBhcmFtIHtGdW5jdGlv
bn0gY2FsbGJhY2sKLSovCi1mdW5jdGlvbiBzdXNwZW5kTGlzdGVuZXJzKG9iaiwgZXZlbnROYW1l
cywgdGFyZ2V0LCBtZXRob2QsIGNhbGxiYWNrKSB7Ci0gIGlmICghbWV0aG9kICYmICdmdW5jdGlv
bicgPT09IHR5cGVvZiB0YXJnZXQpIHsKLSAgICBtZXRob2QgPSB0YXJnZXQ7Ci0gICAgdGFyZ2V0
ID0gbnVsbDsKLSAgfQotCi0gIHZhciBzdXNwZW5kZWRBY3Rpb25zID0gW10sCi0gICAgICBhY3Rp
b25zTGlzdCA9IFtdLAotICAgICAgZXZlbnROYW1lLCBhY3Rpb25zLCBpLCBsOwotCi0gIGZvciAo
aT0wLCBsPWV2ZW50TmFtZXMubGVuZ3RoOyBpPGw7IGkrKykgewotICAgIGV2ZW50TmFtZSA9IGV2
ZW50TmFtZXNbaV07Ci0gICAgYWN0aW9ucyA9IGFjdGlvbnNGb3Iob2JqLCBldmVudE5hbWUpOwot
ICAgIHZhciBhY3Rpb25JbmRleCA9IGluZGV4T2YoYWN0aW9ucywgdGFyZ2V0LCBtZXRob2QpOwot
Ci0gICAgaWYgKGFjdGlvbkluZGV4ICE9PSAtMSkgewotICAgICAgYWN0aW9uc1thY3Rpb25JbmRl
eCsyXSB8PSBTVVNQRU5ERUQ7Ci0gICAgICBzdXNwZW5kZWRBY3Rpb25zLnB1c2goYWN0aW9uSW5k
ZXgpOwotICAgICAgYWN0aW9uc0xpc3QucHVzaChhY3Rpb25zKTsKLSAgICB9Ci0gIH0KLQotICBm
dW5jdGlvbiB0cnlhYmxlKCkgeyByZXR1cm4gY2FsbGJhY2suY2FsbCh0YXJnZXQpOyB9Ci0KLSAg
ZnVuY3Rpb24gZmluYWxpemVyKCkgewotICAgIGZvciAodmFyIGkgPSAwLCBsID0gc3VzcGVuZGVk
QWN0aW9ucy5sZW5ndGg7IGkgPCBsOyBpKyspIHsKLSAgICAgIHZhciBhY3Rpb25JbmRleCA9IHN1
c3BlbmRlZEFjdGlvbnNbaV07Ci0gICAgICBhY3Rpb25zTGlzdFtpXVthY3Rpb25JbmRleCsyXSAm
PSB+U1VTUEVOREVEOwotICAgIH0KLSAgfQotCi0gIHJldHVybiBFbWJlci50cnlGaW5hbGx5KHRy
eWFibGUsIGZpbmFsaXplcik7Ci19Ci0KLS8qKgotICBSZXR1cm4gYSBsaXN0IG9mIGN1cnJlbnRs
eSB3YXRjaGVkIGV2ZW50cwotCi0gIEBwcml2YXRlCi0gIEBtZXRob2Qgd2F0Y2hlZEV2ZW50cwot
ICBAZm9yIEVtYmVyCi0gIEBwYXJhbSBvYmoKLSovCi1mdW5jdGlvbiB3YXRjaGVkRXZlbnRzKG9i
aikgewotICB2YXIgbGlzdGVuZXJzID0gb2JqW01FVEFfS0VZXS5saXN0ZW5lcnMsIHJldCA9IFtd
OwotCi0gIGlmIChsaXN0ZW5lcnMpIHsKLSAgICBmb3IodmFyIGV2ZW50TmFtZSBpbiBsaXN0ZW5l
cnMpIHsKLSAgICAgIGlmIChsaXN0ZW5lcnNbZXZlbnROYW1lXSkgeyByZXQucHVzaChldmVudE5h
bWUpOyB9Ci0gICAgfQotICB9Ci0gIHJldHVybiByZXQ7Ci19Ci0KLS8qKgotICBTZW5kIGFuIGV2
ZW50LiBUaGUgZXhlY3V0aW9uIG9mIHN1c3BlbmRlZCBsaXN0ZW5lcnMKLSAgaXMgc2tpcHBlZCwg
YW5kIG9uY2UgbGlzdGVuZXJzIGFyZSByZW1vdmVkLiBBIGxpc3RlbmVyIHdpdGhvdXQKLSAgYSB0
YXJnZXQgaXMgZXhlY3V0ZWQgb24gdGhlIHBhc3NlZCBvYmplY3QuIElmIGFuIGFycmF5IG9mIGFj
dGlvbnMKLSAgaXMgbm90IHBhc3NlZCwgdGhlIGFjdGlvbnMgc3RvcmVkIG9uIHRoZSBwYXNzZWQg
b2JqZWN0IGFyZSBpbnZva2VkLgotCi0gIEBtZXRob2Qgc2VuZEV2ZW50Ci0gIEBmb3IgRW1iZXIK
LSAgQHBhcmFtIG9iagotICBAcGFyYW0ge1N0cmluZ30gZXZlbnROYW1lCi0gIEBwYXJhbSB7QXJy
YXl9IHBhcmFtcyBPcHRpb25hbCBwYXJhbWV0ZXJzIGZvciBlYWNoIGxpc3RlbmVyLgotICBAcGFy
YW0ge0FycmF5fSBhY3Rpb25zIE9wdGlvbmFsIGFycmF5IG9mIGFjdGlvbnMgKGxpc3RlbmVycyku
Ci0gIEByZXR1cm4gdHJ1ZQotKi8KLWZ1bmN0aW9uIHNlbmRFdmVudChvYmosIGV2ZW50TmFtZSwg
cGFyYW1zLCBhY3Rpb25zKSB7Ci0gIC8vIGZpcnN0IGdpdmUgb2JqZWN0IGEgY2hhbmNlIHRvIGhh
bmRsZSBpdAotICBpZiAob2JqICE9PSBFbWJlciAmJiAnZnVuY3Rpb24nID09PSB0eXBlb2Ygb2Jq
LnNlbmRFdmVudCkgewotICAgIG9iai5zZW5kRXZlbnQoZXZlbnROYW1lLCBwYXJhbXMpOwotICB9
Ci0KLSAgaWYgKCFhY3Rpb25zKSB7Ci0gICAgdmFyIG1ldGEgPSBvYmpbTUVUQV9LRVldOwotICAg
IGFjdGlvbnMgPSBtZXRhICYmIG1ldGEubGlzdGVuZXJzICYmIG1ldGEubGlzdGVuZXJzW2V2ZW50
TmFtZV07Ci0gIH0KLQotICBpZiAoIWFjdGlvbnMpIHsgcmV0dXJuOyB9Ci0KLSAgZm9yICh2YXIg
aSA9IGFjdGlvbnMubGVuZ3RoIC0gMzsgaSA+PSAwOyBpIC09IDMpIHsgLy8gbG9vcGluZyBpbiBy
ZXZlcnNlIGZvciBvbmNlIGxpc3RlbmVycwotICAgIHZhciB0YXJnZXQgPSBhY3Rpb25zW2ldLCBt
ZXRob2QgPSBhY3Rpb25zW2krMV0sIGZsYWdzID0gYWN0aW9uc1tpKzJdOwotICAgIGlmICghbWV0
aG9kKSB7IGNvbnRpbnVlOyB9Ci0gICAgaWYgKGZsYWdzICYgU1VTUEVOREVEKSB7IGNvbnRpbnVl
OyB9Ci0gICAgaWYgKGZsYWdzICYgT05DRSkgeyByZW1vdmVMaXN0ZW5lcihvYmosIGV2ZW50TmFt
ZSwgdGFyZ2V0LCBtZXRob2QpOyB9Ci0gICAgaWYgKCF0YXJnZXQpIHsgdGFyZ2V0ID0gb2JqOyB9
Ci0gICAgaWYgKCdzdHJpbmcnID09PSB0eXBlb2YgbWV0aG9kKSB7IG1ldGhvZCA9IHRhcmdldFtt
ZXRob2RdOyB9Ci0gICAgaWYgKHBhcmFtcykgewotICAgICAgbWV0aG9kLmFwcGx5KHRhcmdldCwg
cGFyYW1zKTsKLSAgICB9IGVsc2UgewotICAgICAgbWV0aG9kLmNhbGwodGFyZ2V0KTsKLSAgICB9
Ci0gIH0KLSAgcmV0dXJuIHRydWU7Ci19Ci0KLS8qKgotICBAcHJpdmF0ZQotICBAbWV0aG9kIGhh
c0xpc3RlbmVycwotICBAZm9yIEVtYmVyCi0gIEBwYXJhbSBvYmoKLSAgQHBhcmFtIHtTdHJpbmd9
IGV2ZW50TmFtZQotKi8KLWZ1bmN0aW9uIGhhc0xpc3RlbmVycyhvYmosIGV2ZW50TmFtZSkgewot
ICB2YXIgbWV0YSA9IG9ialtNRVRBX0tFWV0sCi0gICAgICBhY3Rpb25zID0gbWV0YSAmJiBtZXRh
Lmxpc3RlbmVycyAmJiBtZXRhLmxpc3RlbmVyc1tldmVudE5hbWVdOwotCi0gIHJldHVybiAhIShh
Y3Rpb25zICYmIGFjdGlvbnMubGVuZ3RoKTsKLX0KLQotLyoqCi0gIEBwcml2YXRlCi0gIEBtZXRo
b2QgbGlzdGVuZXJzRm9yCi0gIEBmb3IgRW1iZXIKLSAgQHBhcmFtIG9iagotICBAcGFyYW0ge1N0
cmluZ30gZXZlbnROYW1lCi0qLwotZnVuY3Rpb24gbGlzdGVuZXJzRm9yKG9iaiwgZXZlbnROYW1l
KSB7Ci0gIHZhciByZXQgPSBbXTsKLSAgdmFyIG1ldGEgPSBvYmpbTUVUQV9LRVldLAotICAgICAg
YWN0aW9ucyA9IG1ldGEgJiYgbWV0YS5saXN0ZW5lcnMgJiYgbWV0YS5saXN0ZW5lcnNbZXZlbnRO
YW1lXTsKLQotICBpZiAoIWFjdGlvbnMpIHsgcmV0dXJuIHJldDsgfQotCi0gIGZvciAodmFyIGkg
PSAwLCBsID0gYWN0aW9ucy5sZW5ndGg7IGkgPCBsOyBpICs9IDMpIHsKLSAgICB2YXIgdGFyZ2V0
ID0gYWN0aW9uc1tpXSwKLSAgICAgICAgbWV0aG9kID0gYWN0aW9uc1tpKzFdOwotICAgIHJldC5w
dXNoKFt0YXJnZXQsIG1ldGhvZF0pOwotICB9Ci0KLSAgcmV0dXJuIHJldDsKLX0KLQotLyoqCi0g
IERlZmluZSBhIHByb3BlcnR5IGFzIGEgZnVuY3Rpb24gdGhhdCBzaG91bGQgYmUgZXhlY3V0ZWQg
d2hlbgotICBhIHNwZWNpZmllZCBldmVudCBvciBldmVudHMgYXJlIHRyaWdnZXJlZC4KLQotCi0g
IGBgYCBqYXZhc2NyaXB0Ci0gIHZhciBKb2IgPSBFbWJlci5PYmplY3QuZXh0ZW5kKHsKLSAgICBs
b2dDb21wbGV0ZWQ6IEVtYmVyLm9uKCdjb21wbGV0ZWQnLCBmdW5jdGlvbigpewotICAgICAgY29u
c29sZS5sb2coJ0pvYiBjb21wbGV0ZWQhJyk7Ci0gICAgfSkKLSAgfSk7Ci0gIHZhciBqb2IgPSBK
b2IuY3JlYXRlKCk7Ci0gIEVtYmVyLnNlbmRFdmVudChqb2IsICdjb21wbGV0ZWQnKTsgLy8gTG9n
cyAiSm9iIGNvbXBsZXRlZCEiCi0gYGBgCi0KLSAgQG1ldGhvZCBvbgotICBAZm9yIEVtYmVyCi0g
IEBwYXJhbSB7U3RyaW5nfSBldmVudE5hbWVzKgotICBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jCi0g
IEByZXR1cm4gZnVuYwotKi8KLUVtYmVyLm9uID0gZnVuY3Rpb24oKXsKLSAgdmFyIGZ1bmMgPSBh
X3NsaWNlLmNhbGwoYXJndW1lbnRzLCAtMSlbMF0sCi0gICAgICBldmVudHMgPSBhX3NsaWNlLmNh
bGwoYXJndW1lbnRzLCAwLCAtMSk7Ci0gIGZ1bmMuX19lbWJlcl9saXN0ZW5zX18gPSBldmVudHM7
Ci0gIHJldHVybiBmdW5jOwotfTsKLQotRW1iZXIuYWRkTGlzdGVuZXIgPSBhZGRMaXN0ZW5lcjsK
LUVtYmVyLnJlbW92ZUxpc3RlbmVyID0gcmVtb3ZlTGlzdGVuZXI7Ci1FbWJlci5fc3VzcGVuZExp
c3RlbmVyID0gc3VzcGVuZExpc3RlbmVyOwotRW1iZXIuX3N1c3BlbmRMaXN0ZW5lcnMgPSBzdXNw
ZW5kTGlzdGVuZXJzOwotRW1iZXIuc2VuZEV2ZW50ID0gc2VuZEV2ZW50OwotRW1iZXIuaGFzTGlz
dGVuZXJzID0gaGFzTGlzdGVuZXJzOwotRW1iZXIud2F0Y2hlZEV2ZW50cyA9IHdhdGNoZWRFdmVu
dHM7Ci1FbWJlci5saXN0ZW5lcnNGb3IgPSBsaXN0ZW5lcnNGb3I7Ci1FbWJlci5saXN0ZW5lcnNE
aWZmID0gYWN0aW9uc0RpZmY7Ci1FbWJlci5saXN0ZW5lcnNVbmlvbiA9IGFjdGlvbnNVbmlvbjsK
LQotfSkoKTsKLQotCi0KLShmdW5jdGlvbigpIHsKLXZhciBndWlkRm9yID0gRW1iZXIuZ3VpZEZv
ciwKLSAgICBzZW5kRXZlbnQgPSBFbWJlci5zZW5kRXZlbnQ7Ci0KLS8qCi0gIHRoaXMub2JzZXJ2
ZXJTZXQgPSB7Ci0gICAgW3NlbmRlckd1aWRdOiB7IC8vIHZhcmlhYmxlIG5hbWU6IGBrZXlTZXRg
Ci0gICAgICBba2V5TmFtZV06IGxpc3RJbmRleAotICAgIH0KLSAgfSwKLSAgdGhpcy5vYnNlcnZl
cnMgPSBbCi0gICAgewotICAgICAgc2VuZGVyOiBvYmosCi0gICAgICBrZXlOYW1lOiBrZXlOYW1l
LAotICAgICAgZXZlbnROYW1lOiBldmVudE5hbWUsCi0gICAgICBsaXN0ZW5lcnM6IFsKLSAgICAg
ICAgW3RhcmdldCwgbWV0aG9kLCBmbGFnc10KLSAgICAgIF0KLSAgICB9LAotICAgIC4uLgotICBd
Ci0qLwotdmFyIE9ic2VydmVyU2V0ID0gRW1iZXIuX09ic2VydmVyU2V0ID0gZnVuY3Rpb24oKSB7
Ci0gIHRoaXMuY2xlYXIoKTsKLX07Ci0KLU9ic2VydmVyU2V0LnByb3RvdHlwZS5hZGQgPSBmdW5j
dGlvbihzZW5kZXIsIGtleU5hbWUsIGV2ZW50TmFtZSkgewotICB2YXIgb2JzZXJ2ZXJTZXQgPSB0
aGlzLm9ic2VydmVyU2V0LAotICAgICAgb2JzZXJ2ZXJzID0gdGhpcy5vYnNlcnZlcnMsCi0gICAg
ICBzZW5kZXJHdWlkID0gZ3VpZEZvcihzZW5kZXIpLAotICAgICAga2V5U2V0ID0gb2JzZXJ2ZXJT
ZXRbc2VuZGVyR3VpZF0sCi0gICAgICBpbmRleDsKLQotICBpZiAoIWtleVNldCkgewotICAgIG9i
c2VydmVyU2V0W3NlbmRlckd1aWRdID0ga2V5U2V0ID0ge307Ci0gIH0KLSAgaW5kZXggPSBrZXlT
ZXRba2V5TmFtZV07Ci0gIGlmIChpbmRleCA9PT0gdW5kZWZpbmVkKSB7Ci0gICAgaW5kZXggPSBv
YnNlcnZlcnMucHVzaCh7Ci0gICAgICBzZW5kZXI6IHNlbmRlciwKLSAgICAgIGtleU5hbWU6IGtl
eU5hbWUsCi0gICAgICBldmVudE5hbWU6IGV2ZW50TmFtZSwKLSAgICAgIGxpc3RlbmVyczogW10K
LSAgICB9KSAtIDE7Ci0gICAga2V5U2V0W2tleU5hbWVdID0gaW5kZXg7Ci0gIH0KLSAgcmV0dXJu
IG9ic2VydmVyc1tpbmRleF0ubGlzdGVuZXJzOwotfTsKLQotT2JzZXJ2ZXJTZXQucHJvdG90eXBl
LmZsdXNoID0gZnVuY3Rpb24oKSB7Ci0gIHZhciBvYnNlcnZlcnMgPSB0aGlzLm9ic2VydmVycywg
aSwgbGVuLCBvYnNlcnZlciwgc2VuZGVyOwotICB0aGlzLmNsZWFyKCk7Ci0gIGZvciAoaT0wLCBs
ZW49b2JzZXJ2ZXJzLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7Ci0gICAgb2JzZXJ2ZXIgPSBvYnNl
cnZlcnNbaV07Ci0gICAgc2VuZGVyID0gb2JzZXJ2ZXIuc2VuZGVyOwotICAgIGlmIChzZW5kZXIu
aXNEZXN0cm95aW5nIHx8IHNlbmRlci5pc0Rlc3Ryb3llZCkgeyBjb250aW51ZTsgfQotICAgIHNl
bmRFdmVudChzZW5kZXIsIG9ic2VydmVyLmV2ZW50TmFtZSwgW3NlbmRlciwgb2JzZXJ2ZXIua2V5
TmFtZV0sIG9ic2VydmVyLmxpc3RlbmVycyk7Ci0gIH0KLX07Ci0KLU9ic2VydmVyU2V0LnByb3Rv
dHlwZS5jbGVhciA9IGZ1bmN0aW9uKCkgewotICB0aGlzLm9ic2VydmVyU2V0ID0ge307Ci0gIHRo
aXMub2JzZXJ2ZXJzID0gW107Ci19OwotfSkoKTsKLQotCi0KLShmdW5jdGlvbigpIHsKLXZhciBt
ZXRhRm9yID0gRW1iZXIubWV0YSwKLSAgICBndWlkRm9yID0gRW1iZXIuZ3VpZEZvciwKLSAgICB0
cnlGaW5hbGx5ID0gRW1iZXIudHJ5RmluYWxseSwKLSAgICBzZW5kRXZlbnQgPSBFbWJlci5zZW5k
RXZlbnQsCi0gICAgbGlzdGVuZXJzVW5pb24gPSBFbWJlci5saXN0ZW5lcnNVbmlvbiwKLSAgICBs
aXN0ZW5lcnNEaWZmID0gRW1iZXIubGlzdGVuZXJzRGlmZiwKLSAgICBPYnNlcnZlclNldCA9IEVt
YmVyLl9PYnNlcnZlclNldCwKLSAgICBiZWZvcmVPYnNlcnZlclNldCA9IG5ldyBPYnNlcnZlclNl
dCgpLAotICAgIG9ic2VydmVyU2V0ID0gbmV3IE9ic2VydmVyU2V0KCksCi0gICAgZGVmZXJyZWQg
PSAwOwotCi0vLyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uCi0vLyBQUk9QRVJUWSBDSEFOR0VTCi0vLwotCi0vKioKLSAgVGhpcyBmdW5j
dGlvbiBpcyBjYWxsZWQganVzdCBiZWZvcmUgYW4gb2JqZWN0IHByb3BlcnR5IGlzIGFib3V0IHRv
IGNoYW5nZS4KLSAgSXQgd2lsbCBub3RpZnkgYW55IGJlZm9yZSBvYnNlcnZlcnMgYW5kIHByZXBh
cmUgY2FjaGVzIGFtb25nIG90aGVyIHRoaW5ncy4KLQotICBOb3JtYWxseSB5b3Ugd2lsbCBub3Qg
bmVlZCB0byBjYWxsIHRoaXMgbWV0aG9kIGRpcmVjdGx5IGJ1dCBpZiBmb3Igc29tZQotICByZWFz
b24geW91IGNhbid0IGRpcmVjdGx5IHdhdGNoIGEgcHJvcGVydHkgeW91IGNhbiBpbnZva2UgdGhp
cyBtZXRob2QKLSAgbWFudWFsbHkgYWxvbmcgd2l0aCBgRW1iZXIucHJvcGVydHlEaWRDaGFuZ2Uo
KWAgd2hpY2ggeW91IHNob3VsZCBjYWxsIGp1c3QKLSAgYWZ0ZXIgdGhlIHByb3BlcnR5IHZhbHVl
IGNoYW5nZXMuCi0KLSAgQG1ldGhvZCBwcm9wZXJ0eVdpbGxDaGFuZ2UKLSAgQGZvciBFbWJlcgot
ICBAcGFyYW0ge09iamVjdH0gb2JqIFRoZSBvYmplY3Qgd2l0aCB0aGUgcHJvcGVydHkgdGhhdCB3
aWxsIGNoYW5nZQotICBAcGFyYW0ge1N0cmluZ30ga2V5TmFtZSBUaGUgcHJvcGVydHkga2V5IChv
ciBwYXRoKSB0aGF0IHdpbGwgY2hhbmdlLgotICBAcmV0dXJuIHt2b2lkfQotKi8KLWZ1bmN0aW9u
IHByb3BlcnR5V2lsbENoYW5nZShvYmosIGtleU5hbWUpIHsKLSAgdmFyIG0gPSBtZXRhRm9yKG9i
aiwgZmFsc2UpLAotICAgICAgd2F0Y2hpbmcgPSBtLndhdGNoaW5nW2tleU5hbWVdID4gMCB8fCBr
ZXlOYW1lID09PSAnbGVuZ3RoJywKLSAgICAgIHByb3RvID0gbS5wcm90bywKLSAgICAgIGRlc2Mg
PSBtLmRlc2NzW2tleU5hbWVdOwotCi0gIGlmICghd2F0Y2hpbmcpIHsgcmV0dXJuOyB9Ci0gIGlm
IChwcm90byA9PT0gb2JqKSB7IHJldHVybjsgfQotICBpZiAoZGVzYyAmJiBkZXNjLndpbGxDaGFu
Z2UpIHsgZGVzYy53aWxsQ2hhbmdlKG9iaiwga2V5TmFtZSk7IH0KLSAgZGVwZW5kZW50S2V5c1dp
bGxDaGFuZ2Uob2JqLCBrZXlOYW1lLCBtKTsKLSAgY2hhaW5zV2lsbENoYW5nZShvYmosIGtleU5h
bWUsIG0pOwotICBub3RpZnlCZWZvcmVPYnNlcnZlcnMob2JqLCBrZXlOYW1lKTsKLX0KLUVtYmVy
LnByb3BlcnR5V2lsbENoYW5nZSA9IHByb3BlcnR5V2lsbENoYW5nZTsKLQotLyoqCi0gIFRoaXMg
ZnVuY3Rpb24gaXMgY2FsbGVkIGp1c3QgYWZ0ZXIgYW4gb2JqZWN0IHByb3BlcnR5IGhhcyBjaGFu
Z2VkLgotICBJdCB3aWxsIG5vdGlmeSBhbnkgb2JzZXJ2ZXJzIGFuZCBjbGVhciBjYWNoZXMgYW1v
bmcgb3RoZXIgdGhpbmdzLgotCi0gIE5vcm1hbGx5IHlvdSB3aWxsIG5vdCBuZWVkIHRvIGNhbGwg
dGhpcyBtZXRob2QgZGlyZWN0bHkgYnV0IGlmIGZvciBzb21lCi0gIHJlYXNvbiB5b3UgY2FuJ3Qg
ZGlyZWN0bHkgd2F0Y2ggYSBwcm9wZXJ0eSB5b3UgY2FuIGludm9rZSB0aGlzIG1ldGhvZAotICBt
YW51YWxseSBhbG9uZyB3aXRoIGBFbWJlci5wcm9wZXJ0eVdpbGxDaGFuZ2UoKWAgd2hpY2ggeW91
IHNob3VsZCBjYWxsIGp1c3QKLSAgYmVmb3JlIHRoZSBwcm9wZXJ0eSB2YWx1ZSBjaGFuZ2VzLgot
Ci0gIEBtZXRob2QgcHJvcGVydHlEaWRDaGFuZ2UKLSAgQGZvciBFbWJlcgotICBAcGFyYW0ge09i
amVjdH0gb2JqIFRoZSBvYmplY3Qgd2l0aCB0aGUgcHJvcGVydHkgdGhhdCB3aWxsIGNoYW5nZQot
ICBAcGFyYW0ge1N0cmluZ30ga2V5TmFtZSBUaGUgcHJvcGVydHkga2V5IChvciBwYXRoKSB0aGF0
IHdpbGwgY2hhbmdlLgotICBAcmV0dXJuIHt2b2lkfQotKi8KLWZ1bmN0aW9uIHByb3BlcnR5RGlk
Q2hhbmdlKG9iaiwga2V5TmFtZSkgewotICB2YXIgbSA9IG1ldGFGb3Iob2JqLCBmYWxzZSksCi0g
ICAgICB3YXRjaGluZyA9IG0ud2F0Y2hpbmdba2V5TmFtZV0gPiAwIHx8IGtleU5hbWUgPT09ICds
ZW5ndGgnLAotICAgICAgcHJvdG8gPSBtLnByb3RvLAotICAgICAgZGVzYyA9IG0uZGVzY3Nba2V5
TmFtZV07Ci0KLSAgaWYgKHByb3RvID09PSBvYmopIHsgcmV0dXJuOyB9Ci0KLSAgLy8gc2hvdWxk
bid0IHRoaXMgbWVhbiB0aGF0IHdlJ3JlIHdhdGNoaW5nIHRoaXMga2V5PwotICBpZiAoZGVzYyAm
JiBkZXNjLmRpZENoYW5nZSkgeyBkZXNjLmRpZENoYW5nZShvYmosIGtleU5hbWUpOyB9Ci0gIGlm
ICghd2F0Y2hpbmcgJiYga2V5TmFtZSAhPT0gJ2xlbmd0aCcpIHsgcmV0dXJuOyB9Ci0KLSAgZGVw
ZW5kZW50S2V5c0RpZENoYW5nZShvYmosIGtleU5hbWUsIG0pOwotICBjaGFpbnNEaWRDaGFuZ2Uo
b2JqLCBrZXlOYW1lLCBtLCBmYWxzZSk7Ci0gIG5vdGlmeU9ic2VydmVycyhvYmosIGtleU5hbWUp
OwotfQotRW1iZXIucHJvcGVydHlEaWRDaGFuZ2UgPSBwcm9wZXJ0eURpZENoYW5nZTsKLQotdmFy
IFdJTExfU0VFTiwgRElEX1NFRU47Ci0KLS8vIGNhbGxlZCB3aGVuZXZlciBhIHByb3BlcnR5IGlz
IGFib3V0IHRvIGNoYW5nZSB0byBjbGVhciB0aGUgY2FjaGUgb2YgYW55IGRlcGVuZGVudCBrZXlz
IChhbmQgbm90aWZ5IHRob3NlIHByb3BlcnRpZXMgb2YgY2hhbmdlcywgZXRjLi4uKQotZnVuY3Rp
b24gZGVwZW5kZW50S2V5c1dpbGxDaGFuZ2Uob2JqLCBkZXBLZXksIG1ldGEpIHsKLSAgaWYgKG9i
ai5pc0Rlc3Ryb3lpbmcpIHsgcmV0dXJuOyB9Ci0KLSAgdmFyIHNlZW4gPSBXSUxMX1NFRU4sIHRv
cCA9ICFzZWVuOwotICBpZiAodG9wKSB7IHNlZW4gPSBXSUxMX1NFRU4gPSB7fTsgfQotICBpdGVy
RGVwcyhwcm9wZXJ0eVdpbGxDaGFuZ2UsIG9iaiwgZGVwS2V5LCBzZWVuLCBtZXRhKTsKLSAgaWYg
KHRvcCkgeyBXSUxMX1NFRU4gPSBudWxsOyB9Ci19Ci0KLS8vIGNhbGxlZCB3aGVuZXZlciBhIHBy
b3BlcnR5IGhhcyBqdXN0IGNoYW5nZWQgdG8gdXBkYXRlIGRlcGVuZGVudCBrZXlzCi1mdW5jdGlv
biBkZXBlbmRlbnRLZXlzRGlkQ2hhbmdlKG9iaiwgZGVwS2V5LCBtZXRhKSB7Ci0gIGlmIChvYmou
aXNEZXN0cm95aW5nKSB7IHJldHVybjsgfQotCi0gIHZhciBzZWVuID0gRElEX1NFRU4sIHRvcCA9
ICFzZWVuOwotICBpZiAodG9wKSB7IHNlZW4gPSBESURfU0VFTiA9IHt9OyB9Ci0gIGl0ZXJEZXBz
KHByb3BlcnR5RGlkQ2hhbmdlLCBvYmosIGRlcEtleSwgc2VlbiwgbWV0YSk7Ci0gIGlmICh0b3Ap
IHsgRElEX1NFRU4gPSBudWxsOyB9Ci19Ci0KLWZ1bmN0aW9uIGl0ZXJEZXBzKG1ldGhvZCwgb2Jq
LCBkZXBLZXksIHNlZW4sIG1ldGEpIHsKLSAgdmFyIGd1aWQgPSBndWlkRm9yKG9iaik7Ci0gIGlm
ICghc2VlbltndWlkXSkgc2VlbltndWlkXSA9IHt9OwotICBpZiAoc2VlbltndWlkXVtkZXBLZXld
KSByZXR1cm47Ci0gIHNlZW5bZ3VpZF1bZGVwS2V5XSA9IHRydWU7Ci0KLSAgdmFyIGRlcHMgPSBt
ZXRhLmRlcHM7Ci0gIGRlcHMgPSBkZXBzICYmIGRlcHNbZGVwS2V5XTsKLSAgaWYgKGRlcHMpIHsK
LSAgICBmb3IodmFyIGtleSBpbiBkZXBzKSB7Ci0gICAgICB2YXIgZGVzYyA9IG1ldGEuZGVzY3Nb
a2V5XTsKLSAgICAgIGlmIChkZXNjICYmIGRlc2MuX3N1c3BlbmRlZCA9PT0gb2JqKSBjb250aW51
ZTsKLSAgICAgIG1ldGhvZChvYmosIGtleSk7Ci0gICAgfQotICB9Ci19Ci0KLWZ1bmN0aW9uIGNo
YWluc1dpbGxDaGFuZ2Uob2JqLCBrZXlOYW1lLCBtKSB7Ci0gIGlmICghKG0uaGFzT3duUHJvcGVy
dHkoJ2NoYWluV2F0Y2hlcnMnKSAmJgotICAgICAgICBtLmNoYWluV2F0Y2hlcnNba2V5TmFtZV0p
KSB7Ci0gICAgcmV0dXJuOwotICB9Ci0KLSAgdmFyIG5vZGVzID0gbS5jaGFpbldhdGNoZXJzW2tl
eU5hbWVdLAotICAgICAgZXZlbnRzID0gW10sCi0gICAgICBpLCBsOwotCi0gIGZvcihpID0gMCwg
bCA9IG5vZGVzLmxlbmd0aDsgaSA8IGw7IGkrKykgewotICAgIG5vZGVzW2ldLndpbGxDaGFuZ2Uo
ZXZlbnRzKTsKLSAgfQotCi0gIGZvciAoaSA9IDAsIGwgPSBldmVudHMubGVuZ3RoOyBpIDwgbDsg
aSArPSAyKSB7Ci0gICAgcHJvcGVydHlXaWxsQ2hhbmdlKGV2ZW50c1tpXSwgZXZlbnRzW2krMV0p
OwotICB9Ci19Ci0KLWZ1bmN0aW9uIGNoYWluc0RpZENoYW5nZShvYmosIGtleU5hbWUsIG0sIHN1
cHByZXNzRXZlbnRzKSB7Ci0gIGlmICghKG0uaGFzT3duUHJvcGVydHkoJ2NoYWluV2F0Y2hlcnMn
KSAmJgotICAgICAgICBtLmNoYWluV2F0Y2hlcnNba2V5TmFtZV0pKSB7Ci0gICAgcmV0dXJuOwot
ICB9Ci0KLSAgdmFyIG5vZGVzID0gbS5jaGFpbldhdGNoZXJzW2tleU5hbWVdLAotICAgICAgZXZl
bnRzID0gc3VwcHJlc3NFdmVudHMgPyBudWxsIDogW10sCi0gICAgICBpLCBsOwotCi0gIGZvcihp
ID0gMCwgbCA9IG5vZGVzLmxlbmd0aDsgaSA8IGw7IGkrKykgewotICAgIG5vZGVzW2ldLmRpZENo
YW5nZShldmVudHMpOwotICB9Ci0KLSAgaWYgKHN1cHByZXNzRXZlbnRzKSB7Ci0gICAgcmV0dXJu
OwotICB9Ci0KLSAgZm9yIChpID0gMCwgbCA9IGV2ZW50cy5sZW5ndGg7IGkgPCBsOyBpICs9IDIp
IHsKLSAgICBwcm9wZXJ0eURpZENoYW5nZShldmVudHNbaV0sIGV2ZW50c1tpKzFdKTsKLSAgfQot
fQotCi1FbWJlci5vdmVycmlkZUNoYWlucyA9IGZ1bmN0aW9uKG9iaiwga2V5TmFtZSwgbSkgewot
ICBjaGFpbnNEaWRDaGFuZ2Uob2JqLCBrZXlOYW1lLCBtLCB0cnVlKTsKLX07Ci0KLS8qKgotICBA
bWV0aG9kIGJlZ2luUHJvcGVydHlDaGFuZ2VzCi0gIEBjaGFpbmFibGUKLSAgQHByaXZhdGUKLSov
Ci1mdW5jdGlvbiBiZWdpblByb3BlcnR5Q2hhbmdlcygpIHsKLSAgZGVmZXJyZWQrKzsKLX0KLQot
RW1iZXIuYmVnaW5Qcm9wZXJ0eUNoYW5nZXMgPSBiZWdpblByb3BlcnR5Q2hhbmdlczsKLQotLyoq
Ci0gIEBtZXRob2QgZW5kUHJvcGVydHlDaGFuZ2VzCi0gIEBwcml2YXRlCi0qLwotZnVuY3Rpb24g
ZW5kUHJvcGVydHlDaGFuZ2VzKCkgewotICBkZWZlcnJlZC0tOwotICBpZiAoZGVmZXJyZWQ8PTAp
IHsKLSAgICBiZWZvcmVPYnNlcnZlclNldC5jbGVhcigpOwotICAgIG9ic2VydmVyU2V0LmZsdXNo
KCk7Ci0gIH0KLX0KLQotRW1iZXIuZW5kUHJvcGVydHlDaGFuZ2VzID0gZW5kUHJvcGVydHlDaGFu
Z2VzOwotCi0vKioKLSAgTWFrZSBhIHNlcmllcyBvZiBwcm9wZXJ0eSBjaGFuZ2VzIHRvZ2V0aGVy
IGluIGFuCi0gIGV4Y2VwdGlvbi1zYWZlIHdheS4KLQotICBgYGBqYXZhc2NyaXB0Ci0gIEVtYmVy
LmNoYW5nZVByb3BlcnRpZXMoZnVuY3Rpb24oKSB7Ci0gICAgb2JqMS5zZXQoJ2ZvbycsIG1heUJs
b3dVcFdoZW5TZXQpOwotICAgIG9iajIuc2V0KCdiYXInLCBiYXopOwotICB9KTsKLSAgYGBgCi0K
LSAgQG1ldGhvZCBjaGFuZ2VQcm9wZXJ0aWVzCi0gIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNr
Ci0gIEBwYXJhbSBbYmluZGluZ10KLSovCi1FbWJlci5jaGFuZ2VQcm9wZXJ0aWVzID0gZnVuY3Rp
b24oY2IsIGJpbmRpbmcpIHsKLSAgYmVnaW5Qcm9wZXJ0eUNoYW5nZXMoKTsKLSAgdHJ5RmluYWxs
eShjYiwgZW5kUHJvcGVydHlDaGFuZ2VzLCBiaW5kaW5nKTsKLX07Ci0KLWZ1bmN0aW9uIG5vdGlm
eUJlZm9yZU9ic2VydmVycyhvYmosIGtleU5hbWUpIHsKLSAgaWYgKG9iai5pc0Rlc3Ryb3lpbmcp
IHsgcmV0dXJuOyB9Ci0KLSAgdmFyIGV2ZW50TmFtZSA9IGtleU5hbWUgKyAnOmJlZm9yZScsIGxp
c3RlbmVycywgZGlmZjsKLSAgaWYgKGRlZmVycmVkKSB7Ci0gICAgbGlzdGVuZXJzID0gYmVmb3Jl
T2JzZXJ2ZXJTZXQuYWRkKG9iaiwga2V5TmFtZSwgZXZlbnROYW1lKTsKLSAgICBkaWZmID0gbGlz
dGVuZXJzRGlmZihvYmosIGV2ZW50TmFtZSwgbGlzdGVuZXJzKTsKLSAgICBzZW5kRXZlbnQob2Jq
LCBldmVudE5hbWUsIFtvYmosIGtleU5hbWVdLCBkaWZmKTsKLSAgfSBlbHNlIHsKLSAgICBzZW5k
RXZlbnQob2JqLCBldmVudE5hbWUsIFtvYmosIGtleU5hbWVdKTsKLSAgfQotfQotCi1mdW5jdGlv
biBub3RpZnlPYnNlcnZlcnMob2JqLCBrZXlOYW1lKSB7Ci0gIGlmIChvYmouaXNEZXN0cm95aW5n
KSB7IHJldHVybjsgfQotCi0gIHZhciBldmVudE5hbWUgPSBrZXlOYW1lICsgJzpjaGFuZ2UnLCBs
aXN0ZW5lcnM7Ci0gIGlmIChkZWZlcnJlZCkgewotICAgIGxpc3RlbmVycyA9IG9ic2VydmVyU2V0
LmFkZChvYmosIGtleU5hbWUsIGV2ZW50TmFtZSk7Ci0gICAgbGlzdGVuZXJzVW5pb24ob2JqLCBl
dmVudE5hbWUsIGxpc3RlbmVycyk7Ci0gIH0gZWxzZSB7Ci0gICAgc2VuZEV2ZW50KG9iaiwgZXZl
bnROYW1lLCBbb2JqLCBrZXlOYW1lXSk7Ci0gIH0KLX0KLQotfSkoKTsKLQotCi0KLShmdW5jdGlv
bigpIHsKLS8vIE1FVEFfS0VZCi0vLyBfZ2V0UGF0aAotLy8gcHJvcGVydHlXaWxsQ2hhbmdlLCBw
cm9wZXJ0eURpZENoYW5nZQotCi12YXIgTUVUQV9LRVkgPSBFbWJlci5NRVRBX0tFWSwKLSAgICBN
QU5EQVRPUllfU0VUVEVSID0gRW1iZXIuRU5WLk1BTkRBVE9SWV9TRVRURVIsCi0gICAgSVNfR0xP
QkFMID0gL14oW0EtWiRdfChbMC05XVtBLVokXSkpLywKLSAgICBnZXRQYXRoID0gRW1iZXIuX2dl
dFBhdGg7Ci0KLS8qKgotICBTZXRzIHRoZSB2YWx1ZSBvZiBhIHByb3BlcnR5IG9uIGFuIG9iamVj
dCwgcmVzcGVjdGluZyBjb21wdXRlZCBwcm9wZXJ0aWVzCi0gIGFuZCBub3RpZnlpbmcgb2JzZXJ2
ZXJzIGFuZCBvdGhlciBsaXN0ZW5lcnMgb2YgdGhlIGNoYW5nZS4gSWYgdGhlCi0gIHByb3BlcnR5
IGlzIG5vdCBkZWZpbmVkIGJ1dCB0aGUgb2JqZWN0IGltcGxlbWVudHMgdGhlIGBzZXRVbmtub3du
UHJvcGVydHlgCi0gIG1ldGhvZCB0aGVuIHRoYXQgd2lsbCBiZSBpbnZva2VkIGFzIHdlbGwuCi0K
LSAgSWYgeW91IHBsYW4gdG8gcnVuIG9uIElFOCBhbmQgb2xkZXIgYnJvd3NlcnMgdGhlbiB5b3Ug
c2hvdWxkIHVzZSB0aGlzCi0gIG1ldGhvZCBhbnl0aW1lIHlvdSB3YW50IHRvIHNldCBhIHByb3Bl
cnR5IG9uIGFuIG9iamVjdCB0aGF0IHlvdSBkb24ndAotICBrbm93IGZvciBzdXJlIGlzIHByaXZh
dGUuIChQcm9wZXJ0aWVzIGJlZ2lubmluZyB3aXRoIGFuIHVuZGVyc2NvcmUgJ18nCi0gIGFyZSBj
b25zaWRlcmVkIHByaXZhdGUuKQotCi0gIE9uIGFsbCBuZXdlciBicm93c2VycywgeW91IG9ubHkg
bmVlZCB0byB1c2UgdGhpcyBtZXRob2QgdG8gc2V0Ci0gIHByb3BlcnRpZXMgaWYgdGhlIHByb3Bl
cnR5IG1pZ2h0IG5vdCBiZSBkZWZpbmVkIG9uIHRoZSBvYmplY3QgYW5kIHlvdSB3YW50Ci0gIHRv
IHJlc3BlY3QgdGhlIGBzZXRVbmtub3duUHJvcGVydHlgIGhhbmRsZXIuIE90aGVyd2lzZSB5b3Ug
Y2FuIGlnbm9yZSB0aGlzCi0gIG1ldGhvZC4KLQotICBAbWV0aG9kIHNldAotICBAZm9yIEVtYmVy
Ci0gIEBwYXJhbSB7T2JqZWN0fSBvYmogVGhlIG9iamVjdCB0byBtb2RpZnkuCi0gIEBwYXJhbSB7
U3RyaW5nfSBrZXlOYW1lIFRoZSBwcm9wZXJ0eSBrZXkgdG8gc2V0Ci0gIEBwYXJhbSB7T2JqZWN0
fSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0Ci0gIEByZXR1cm4ge09iamVjdH0gdGhlIHBhc3NlZCB2
YWx1ZS4KLSovCi12YXIgc2V0ID0gZnVuY3Rpb24gc2V0KG9iaiwga2V5TmFtZSwgdmFsdWUsIHRv
bGVyYW50KSB7Ci0gIGlmICh0eXBlb2Ygb2JqID09PSAnc3RyaW5nJykgewotICAgIEVtYmVyLmFz
c2VydCgiUGF0aCAnIiArIG9iaiArICInIG11c3QgYmUgZ2xvYmFsIGlmIG5vIG9iaiBpcyBnaXZl
bi4iLCBJU19HTE9CQUwudGVzdChvYmopKTsKLSAgICB2YWx1ZSA9IGtleU5hbWU7Ci0gICAga2V5
TmFtZSA9IG9iajsKLSAgICBvYmogPSBudWxsOwotICB9Ci0KLSAgRW1iZXIuYXNzZXJ0KCJDYW5u
b3QgY2FsbCBzZXQgd2l0aCAiKyBrZXlOYW1lICsiIGtleS4iLCAhIWtleU5hbWUpOwotCi0gIGlm
ICghb2JqIHx8IGtleU5hbWUuaW5kZXhPZignLicpICE9PSAtMSkgewotICAgIHJldHVybiBzZXRQ
YXRoKG9iaiwga2V5TmFtZSwgdmFsdWUsIHRvbGVyYW50KTsKLSAgfQotCi0gIEVtYmVyLmFzc2Vy
dCgiWW91IG5lZWQgdG8gcHJvdmlkZSBhbiBvYmplY3QgYW5kIGtleSB0byBgc2V0YC4iLCAhIW9i
aiAmJiBrZXlOYW1lICE9PSB1bmRlZmluZWQpOwotICBFbWJlci5hc3NlcnQoJ2NhbGxpbmcgc2V0
IG9uIGRlc3Ryb3llZCBvYmplY3QnLCAhb2JqLmlzRGVzdHJveWVkKTsKLQotICB2YXIgbWV0YSA9
IG9ialtNRVRBX0tFWV0sIGRlc2MgPSBtZXRhICYmIG1ldGEuZGVzY3Nba2V5TmFtZV0sCi0gICAg
ICBpc1Vua25vd24sIGN1cnJlbnRWYWx1ZTsKLSAgaWYgKGRlc2MpIHsKLSAgICBkZXNjLnNldChv
YmosIGtleU5hbWUsIHZhbHVlKTsKLSAgfSBlbHNlIHsKLSAgICBpc1Vua25vd24gPSAnb2JqZWN0
JyA9PT0gdHlwZW9mIG9iaiAmJiAhKGtleU5hbWUgaW4gb2JqKTsKLQotICAgIC8vIHNldFVua25v
d25Qcm9wZXJ0eSBpcyBjYWxsZWQgaWYgYG9iamAgaXMgYW4gb2JqZWN0LAotICAgIC8vIHRoZSBw
cm9wZXJ0eSBkb2VzIG5vdCBhbHJlYWR5IGV4aXN0LCBhbmQgdGhlCi0gICAgLy8gYHNldFVua25v
d25Qcm9wZXJ0eWAgbWV0aG9kIGV4aXN0cyBvbiB0aGUgb2JqZWN0Ci0gICAgaWYgKGlzVW5rbm93
biAmJiAnZnVuY3Rpb24nID09PSB0eXBlb2Ygb2JqLnNldFVua25vd25Qcm9wZXJ0eSkgewotICAg
ICAgb2JqLnNldFVua25vd25Qcm9wZXJ0eShrZXlOYW1lLCB2YWx1ZSk7Ci0gICAgfSBlbHNlIGlm
IChtZXRhICYmIG1ldGEud2F0Y2hpbmdba2V5TmFtZV0gPiAwKSB7Ci0gICAgICBpZiAoTUFOREFU
T1JZX1NFVFRFUikgewotICAgICAgICBjdXJyZW50VmFsdWUgPSBtZXRhLnZhbHVlc1trZXlOYW1l
XTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIGN1cnJlbnRWYWx1ZSA9IG9ialtrZXlOYW1lXTsK
LSAgICAgIH0KLSAgICAgIC8vIG9ubHkgdHJpZ2dlciBhIGNoYW5nZSBpZiB0aGUgdmFsdWUgaGFz
IGNoYW5nZWQKLSAgICAgIGlmICh2YWx1ZSAhPT0gY3VycmVudFZhbHVlKSB7Ci0gICAgICAgIEVt
YmVyLnByb3BlcnR5V2lsbENoYW5nZShvYmosIGtleU5hbWUpOwotICAgICAgICBpZiAoTUFOREFU
T1JZX1NFVFRFUikgewotICAgICAgICAgIGlmICgoY3VycmVudFZhbHVlID09PSB1bmRlZmluZWQg
JiYgIShrZXlOYW1lIGluIG9iaikpIHx8ICFvYmoucHJvcGVydHlJc0VudW1lcmFibGUoa2V5TmFt
ZSkpIHsKLSAgICAgICAgICAgIEVtYmVyLmRlZmluZVByb3BlcnR5KG9iaiwga2V5TmFtZSwgbnVs
bCwgdmFsdWUpOyAvLyBzZXR1cCBtYW5kYXRvcnkgc2V0dGVyCi0gICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIG1ldGEudmFsdWVzW2tleU5hbWVdID0gdmFsdWU7Ci0gICAgICAgICAgfQot
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgIG9ialtrZXlOYW1lXSA9IHZhbHVlOwotICAgICAg
ICB9Ci0gICAgICAgIEVtYmVyLnByb3BlcnR5RGlkQ2hhbmdlKG9iaiwga2V5TmFtZSk7Ci0gICAg
ICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgIG9ialtrZXlOYW1lXSA9IHZhbHVlOwotICAgIH0KLSAg
fQotICByZXR1cm4gdmFsdWU7Ci19OwotCi0vLyBDdXJyZW50bHkgdXNlZCBvbmx5IGJ5IEVtYmVy
IERhdGEgdGVzdHMKLWlmIChFbWJlci5jb25maWcub3ZlcnJpZGVBY2Nlc3NvcnMpIHsKLSAgRW1i
ZXIuc2V0ID0gc2V0OwotICBFbWJlci5jb25maWcub3ZlcnJpZGVBY2Nlc3NvcnMoKTsKLSAgc2V0
ID0gRW1iZXIuc2V0OwotfQotCi1mdW5jdGlvbiBzZXRQYXRoKHJvb3QsIHBhdGgsIHZhbHVlLCB0
b2xlcmFudCkgewotICB2YXIga2V5TmFtZTsKLQotICAvLyBnZXQgdGhlIGxhc3QgcGFydCBvZiB0
aGUgcGF0aAotICBrZXlOYW1lID0gcGF0aC5zbGljZShwYXRoLmxhc3RJbmRleE9mKCcuJykgKyAx
KTsKLQotICAvLyBnZXQgdGhlIGZpcnN0IHBhcnQgb2YgdGhlIHBhcnQKLSAgcGF0aCAgICA9IChw
YXRoID09PSBrZXlOYW1lKSA/IGtleU5hbWUgOiBwYXRoLnNsaWNlKDAsIHBhdGgubGVuZ3RoLShr
ZXlOYW1lLmxlbmd0aCsxKSk7Ci0KLSAgLy8gdW5sZXNzIHRoZSBwYXRoIGlzIHRoaXMsIGxvb2sg
dXAgdGhlIGZpcnN0IHBhcnQgdG8KLSAgLy8gZ2V0IHRoZSByb290Ci0gIGlmIChwYXRoICE9PSAn
dGhpcycpIHsKLSAgICByb290ID0gZ2V0UGF0aChyb290LCBwYXRoKTsKLSAgfQotCi0gIGlmICgh
a2V5TmFtZSB8fCBrZXlOYW1lLmxlbmd0aCA9PT0gMCkgewotICAgIHRocm93IG5ldyBFbWJlci5F
cnJvcignUHJvcGVydHkgc2V0IGZhaWxlZDogWW91IHBhc3NlZCBhbiBlbXB0eSBwYXRoJyk7Ci0g
IH0KLQotICBpZiAoIXJvb3QpIHsKLSAgICBpZiAodG9sZXJhbnQpIHsgcmV0dXJuOyB9Ci0gICAg
ZWxzZSB7IHRocm93IG5ldyBFbWJlci5FcnJvcignUHJvcGVydHkgc2V0IGZhaWxlZDogb2JqZWN0
IGluIHBhdGggIicrcGF0aCsnIiBjb3VsZCBub3QgYmUgZm91bmQgb3Igd2FzIGRlc3Ryb3llZC4n
KTsgfQotICB9Ci0KLSAgcmV0dXJuIHNldChyb290LCBrZXlOYW1lLCB2YWx1ZSk7Ci19Ci0KLUVt
YmVyLnNldCA9IHNldDsKLQotLyoqCi0gIEVycm9yLXRvbGVyYW50IGZvcm0gb2YgYEVtYmVyLnNl
dGAuIFdpbGwgbm90IGJsb3cgdXAgaWYgYW55IHBhcnQgb2YgdGhlCi0gIGNoYWluIGlzIGB1bmRl
ZmluZWRgLCBgbnVsbGAsIG9yIGRlc3Ryb3llZC4KLQotICBUaGlzIGlzIHByaW1hcmlseSB1c2Vk
IHdoZW4gc3luY2luZyBiaW5kaW5ncywgd2hpY2ggbWF5IHRyeSB0byB1cGRhdGUgYWZ0ZXIKLSAg
YW4gb2JqZWN0IGhhcyBiZWVuIGRlc3Ryb3llZC4KLQotICBAbWV0aG9kIHRyeVNldAotICBAZm9y
IEVtYmVyCi0gIEBwYXJhbSB7T2JqZWN0fSBvYmogVGhlIG9iamVjdCB0byBtb2RpZnkuCi0gIEBw
YXJhbSB7U3RyaW5nfSBwYXRoIFRoZSBwcm9wZXJ0eSBwYXRoIHRvIHNldAotICBAcGFyYW0ge09i
amVjdH0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldAotKi8KLUVtYmVyLnRyeVNldCA9IGZ1bmN0aW9u
KHJvb3QsIHBhdGgsIHZhbHVlKSB7Ci0gIHJldHVybiBzZXQocm9vdCwgcGF0aCwgdmFsdWUsIHRy
dWUpOwotfTsKLQotfSkoKTsKLQotCi0KLShmdW5jdGlvbigpIHsKLS8qKgotQG1vZHVsZSBlbWJl
ci1tZXRhbAotKi8KLQotLyoKLSAgSmF2YVNjcmlwdCAoYmVmb3JlIEVTNikgZG9lcyBub3QgaGF2
ZSBhIE1hcCBpbXBsZW1lbnRhdGlvbi4gT2JqZWN0cywKLSAgd2hpY2ggYXJlIG9mdGVuIHVzZWQg
YXMgZGljdGlvbmFyaWVzLCBtYXkgb25seSBoYXZlIFN0cmluZ3MgYXMga2V5cy4KLQotICBCZWNh
dXNlIEVtYmVyIGhhcyBhIHdheSB0byBnZXQgYSB1bmlxdWUgaWRlbnRpZmllciBmb3IgZXZlcnkg
b2JqZWN0Ci0gIHZpYSBgRW1iZXIuZ3VpZEZvcmAsIHdlIGNhbiBpbXBsZW1lbnQgYSBwZXJmb3Jt
YW50IE1hcCB3aXRoIGFyYml0cmFyeQotICBrZXlzLiBCZWNhdXNlIGl0IGlzIGNvbW1vbmx5IHVz
ZWQgaW4gbG93LWxldmVsIGJvb2trZWVwaW5nLCBNYXAgaXMKLSAgaW1wbGVtZW50ZWQgYXMgYSBw
dXJlIEphdmFTY3JpcHQgb2JqZWN0IGZvciBwZXJmb3JtYW5jZS4KLQotICBUaGlzIGltcGxlbWVu
dGF0aW9uIGZvbGxvd3MgdGhlIGN1cnJlbnQgaXRlcmF0aW9uIG9mIHRoZSBFUzYgcHJvcG9zYWwg
Zm9yCi0gIG1hcHMgKGh0dHA6Ly93aWtpLmVjbWFzY3JpcHQub3JnL2Rva3UucGhwP2lkPWhhcm1v
bnk6c2ltcGxlX21hcHNfYW5kX3NldHMpLAotICB3aXRoIHR3byBleGNlcHRpb25zLiBGaXJzdCwg
YmVjYXVzZSB3ZSBuZWVkIG91ciBpbXBsZW1lbnRhdGlvbiB0byBiZSBwbGVhc2FudAotICBvbiBv
bGRlciBicm93c2Vycywgd2UgZG8gbm90IHVzZSB0aGUgYGRlbGV0ZWAgbmFtZSAodXNpbmcgYHJl
bW92ZWAgaW5zdGVhZCkuCi0gIFNlY29uZCwgYXMgd2UgZG8gbm90IGhhdmUgdGhlIGx1eHVyeSBv
ZiBpbi1WTSBpdGVyYXRpb24sIHdlIGltcGxlbWVudCBhCi0gIGZvckVhY2ggbWV0aG9kIGZvciBp
dGVyYXRpb24uCi0KLSAgTWFwIGlzIG1vY2tlZCBvdXQgdG8gbG9vayBsaWtlIGFuIEVtYmVyIG9i
amVjdCwgc28geW91IGNhbiBkbwotICBgRW1iZXIuTWFwLmNyZWF0ZSgpYCBmb3Igc3ltbWV0cnkg
d2l0aCBvdGhlciBFbWJlciBjbGFzc2VzLgotKi8KLXZhciBzZXQgPSBFbWJlci5zZXQsCi0gICAg
Z3VpZEZvciA9IEVtYmVyLmd1aWRGb3IsCi0gICAgaW5kZXhPZiA9IEVtYmVyLkFycmF5UG9seWZp
bGxzLmluZGV4T2Y7Ci0KLXZhciBjb3B5ID0gZnVuY3Rpb24ob2JqKSB7Ci0gIHZhciBvdXRwdXQg
PSB7fTsKLQotICBmb3IgKHZhciBwcm9wIGluIG9iaikgewotICAgIGlmIChvYmouaGFzT3duUHJv
cGVydHkocHJvcCkpIHsgb3V0cHV0W3Byb3BdID0gb2JqW3Byb3BdOyB9Ci0gIH0KLQotICByZXR1
cm4gb3V0cHV0OwotfTsKLQotdmFyIGNvcHlNYXAgPSBmdW5jdGlvbihvcmlnaW5hbCwgbmV3T2Jq
ZWN0KSB7Ci0gIHZhciBrZXlzID0gb3JpZ2luYWwua2V5cy5jb3B5KCksCi0gICAgICB2YWx1ZXMg
PSBjb3B5KG9yaWdpbmFsLnZhbHVlcyk7Ci0KLSAgbmV3T2JqZWN0LmtleXMgPSBrZXlzOwotICBu
ZXdPYmplY3QudmFsdWVzID0gdmFsdWVzOwotICBuZXdPYmplY3QubGVuZ3RoID0gb3JpZ2luYWwu
bGVuZ3RoOwotCi0gIHJldHVybiBuZXdPYmplY3Q7Ci19OwotCi0vKioKLSAgVGhpcyBjbGFzcyBp
cyB1c2VkIGludGVybmFsbHkgYnkgRW1iZXIgYW5kIEVtYmVyIERhdGEuCi0gIFBsZWFzZSBkbyBu
b3QgdXNlIGl0IGF0IHRoaXMgdGltZS4gV2UgcGxhbiB0byBjbGVhbiBpdCB1cAotICBhbmQgYWRk
IG1hbnkgdGVzdHMgc29vbi4KLQotICBAY2xhc3MgT3JkZXJlZFNldAotICBAbmFtZXNwYWNlIEVt
YmVyCi0gIEBjb25zdHJ1Y3RvcgotICBAcHJpdmF0ZQotKi8KLXZhciBPcmRlcmVkU2V0ID0gRW1i
ZXIuT3JkZXJlZFNldCA9IGZ1bmN0aW9uKCkgewotICB0aGlzLmNsZWFyKCk7Ci19OwotCi0vKioK
LSAgQG1ldGhvZCBjcmVhdGUKLSAgQHN0YXRpYwotICBAcmV0dXJuIHtFbWJlci5PcmRlcmVkU2V0
fQotKi8KLU9yZGVyZWRTZXQuY3JlYXRlID0gZnVuY3Rpb24oKSB7Ci0gIHJldHVybiBuZXcgT3Jk
ZXJlZFNldCgpOwotfTsKLQotCi1PcmRlcmVkU2V0LnByb3RvdHlwZSA9IHsKLSAgLyoqCi0gICAg
QG1ldGhvZCBjbGVhcgotICAqLwotICBjbGVhcjogZnVuY3Rpb24oKSB7Ci0gICAgdGhpcy5wcmVz
ZW5jZVNldCA9IHt9OwotICAgIHRoaXMubGlzdCA9IFtdOwotICB9LAotCi0gIC8qKgotICAgIEBt
ZXRob2QgYWRkCi0gICAgQHBhcmFtIG9iagotICAqLwotICBhZGQ6IGZ1bmN0aW9uKG9iaikgewot
ICAgIHZhciBndWlkID0gZ3VpZEZvcihvYmopLAotICAgICAgICBwcmVzZW5jZVNldCA9IHRoaXMu
cHJlc2VuY2VTZXQsCi0gICAgICAgIGxpc3QgPSB0aGlzLmxpc3Q7Ci0KLSAgICBpZiAoZ3VpZCBp
biBwcmVzZW5jZVNldCkgeyByZXR1cm47IH0KLQotICAgIHByZXNlbmNlU2V0W2d1aWRdID0gdHJ1
ZTsKLSAgICBsaXN0LnB1c2gob2JqKTsKLSAgfSwKLQotICAvKioKLSAgICBAbWV0aG9kIHJlbW92
ZQotICAgIEBwYXJhbSBvYmoKLSAgKi8KLSAgcmVtb3ZlOiBmdW5jdGlvbihvYmopIHsKLSAgICB2
YXIgZ3VpZCA9IGd1aWRGb3Iob2JqKSwKLSAgICAgICAgcHJlc2VuY2VTZXQgPSB0aGlzLnByZXNl
bmNlU2V0LAotICAgICAgICBsaXN0ID0gdGhpcy5saXN0OwotCi0gICAgZGVsZXRlIHByZXNlbmNl
U2V0W2d1aWRdOwotCi0gICAgdmFyIGluZGV4ID0gaW5kZXhPZi5jYWxsKGxpc3QsIG9iaik7Ci0g
ICAgaWYgKGluZGV4ID4gLTEpIHsKLSAgICAgIGxpc3Quc3BsaWNlKGluZGV4LCAxKTsKLSAgICB9
Ci0gIH0sCi0KLSAgLyoqCi0gICAgQG1ldGhvZCBpc0VtcHR5Ci0gICAgQHJldHVybiB7Qm9vbGVh
bn0KLSAgKi8KLSAgaXNFbXB0eTogZnVuY3Rpb24oKSB7Ci0gICAgcmV0dXJuIHRoaXMubGlzdC5s
ZW5ndGggPT09IDA7Ci0gIH0sCi0KLSAgLyoqCi0gICAgQG1ldGhvZCBoYXMKLSAgICBAcGFyYW0g
b2JqCi0gICAgQHJldHVybiB7Qm9vbGVhbn0KLSAgKi8KLSAgaGFzOiBmdW5jdGlvbihvYmopIHsK
LSAgICB2YXIgZ3VpZCA9IGd1aWRGb3Iob2JqKSwKLSAgICAgICAgcHJlc2VuY2VTZXQgPSB0aGlz
LnByZXNlbmNlU2V0OwotCi0gICAgcmV0dXJuIGd1aWQgaW4gcHJlc2VuY2VTZXQ7Ci0gIH0sCi0K
LSAgLyoqCi0gICAgQG1ldGhvZCBmb3JFYWNoCi0gICAgQHBhcmFtIHtGdW5jdGlvbn0gZm4KLSAg
ICBAcGFyYW0gc2VsZgotICAqLwotICBmb3JFYWNoOiBmdW5jdGlvbihmbiwgc2VsZikgewotICAg
IC8vIGFsbG93IG11dGF0aW9uIGR1cmluZyBpdGVyYXRpb24KLSAgICB2YXIgbGlzdCA9IHRoaXMu
dG9BcnJheSgpOwotCi0gICAgZm9yICh2YXIgaSA9IDAsIGogPSBsaXN0Lmxlbmd0aDsgaSA8IGo7
IGkrKykgewotICAgICAgZm4uY2FsbChzZWxmLCBsaXN0W2ldKTsKLSAgICB9Ci0gIH0sCi0KLSAg
LyoqCi0gICAgQG1ldGhvZCB0b0FycmF5Ci0gICAgQHJldHVybiB7QXJyYXl9Ci0gICovCi0gIHRv
QXJyYXk6IGZ1bmN0aW9uKCkgewotICAgIHJldHVybiB0aGlzLmxpc3Quc2xpY2UoKTsKLSAgfSwK
LQotICAvKioKLSAgICBAbWV0aG9kIGNvcHkKLSAgICBAcmV0dXJuIHtFbWJlci5PcmRlcmVkU2V0
fQotICAqLwotICBjb3B5OiBmdW5jdGlvbigpIHsKLSAgICB2YXIgc2V0ID0gbmV3IE9yZGVyZWRT
ZXQoKTsKLQotICAgIHNldC5wcmVzZW5jZVNldCA9IGNvcHkodGhpcy5wcmVzZW5jZVNldCk7Ci0g
ICAgc2V0Lmxpc3QgPSB0aGlzLnRvQXJyYXkoKTsKLQotICAgIHJldHVybiBzZXQ7Ci0gIH0KLX07
Ci0KLS8qKgotICBBIE1hcCBzdG9yZXMgdmFsdWVzIGluZGV4ZWQgYnkga2V5cy4gVW5saWtlIEph
dmFTY3JpcHQncwotICBkZWZhdWx0IE9iamVjdHMsIHRoZSBrZXlzIG9mIGEgTWFwIGNhbiBiZSBh
bnkgSmF2YVNjcmlwdAotICBvYmplY3QuCi0KLSAgSW50ZXJuYWxseSwgYSBNYXAgaGFzIHR3byBk
YXRhIHN0cnVjdHVyZXM6Ci0KLSAgMS4gYGtleXNgOiBhbiBPcmRlcmVkU2V0IG9mIGFsbCBvZiB0
aGUgZXhpc3Rpbmcga2V5cwotICAyLiBgdmFsdWVzYDogYSBKYXZhU2NyaXB0IE9iamVjdCBpbmRl
eGVkIGJ5IHRoZSBgRW1iZXIuZ3VpZEZvcihrZXkpYAotCi0gIFdoZW4gYSBrZXkvdmFsdWUgcGFp
ciBpcyBhZGRlZCBmb3IgdGhlIGZpcnN0IHRpbWUsIHdlCi0gIGFkZCB0aGUga2V5IHRvIHRoZSBg
a2V5c2AgT3JkZXJlZFNldCwgYW5kIGNyZWF0ZSBvcgotICByZXBsYWNlIGFuIGVudHJ5IGluIGB2
YWx1ZXNgLiBXaGVuIGFuIGVudHJ5IGlzIGRlbGV0ZWQsCi0gIHdlIGRlbGV0ZSBpdHMgZW50cnkg
aW4gYGtleXNgIGFuZCBgdmFsdWVzYC4KLQotICBAY2xhc3MgTWFwCi0gIEBuYW1lc3BhY2UgRW1i
ZXIKLSAgQHByaXZhdGUKLSAgQGNvbnN0cnVjdG9yCi0qLwotdmFyIE1hcCA9IEVtYmVyLk1hcCA9
IGZ1bmN0aW9uKCkgewotICB0aGlzLmtleXMgPSBFbWJlci5PcmRlcmVkU2V0LmNyZWF0ZSgpOwot
ICB0aGlzLnZhbHVlcyA9IHt9OwotfTsKLQotLyoqCi0gIEBtZXRob2QgY3JlYXRlCi0gIEBzdGF0
aWMKLSovCi1NYXAuY3JlYXRlID0gZnVuY3Rpb24oKSB7Ci0gIHJldHVybiBuZXcgTWFwKCk7Ci19
OwotCi1NYXAucHJvdG90eXBlID0gewotICAvKioKLSAgICBUaGlzIHByb3BlcnR5IHdpbGwgY2hh
bmdlIGFzIHRoZSBudW1iZXIgb2Ygb2JqZWN0cyBpbiB0aGUgbWFwIGNoYW5nZXMuCi0gICAKLSAg
ICBAcHJvcGVydHkgbGVuZ3RoCi0gICAgQHR5cGUgbnVtYmVyCi0gICAgQGRlZmF1bHQgMAotICAq
LwotICBsZW5ndGg6IDAsCi0gICAgCi0gICAgCi0gIC8qKgotICAgIFJldHJpZXZlIHRoZSB2YWx1
ZSBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiBrZXkuCi0KLSAgICBAbWV0aG9kIGdldAotICAgIEBw
YXJhbSB7Kn0ga2V5Ci0gICAgQHJldHVybiB7Kn0gdGhlIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCB0
aGUga2V5LCBvciBgdW5kZWZpbmVkYAotICAqLwotICBnZXQ6IGZ1bmN0aW9uKGtleSkgewotICAg
IHZhciB2YWx1ZXMgPSB0aGlzLnZhbHVlcywKLSAgICAgICAgZ3VpZCA9IGd1aWRGb3Ioa2V5KTsK
LQotICAgIHJldHVybiB2YWx1ZXNbZ3VpZF07Ci0gIH0sCi0KLSAgLyoqCi0gICAgQWRkcyBhIHZh
bHVlIHRvIHRoZSBtYXAuIElmIGEgdmFsdWUgZm9yIHRoZSBnaXZlbiBrZXkgaGFzIGFscmVhZHkg
YmVlbgotICAgIHByb3ZpZGVkLCB0aGUgbmV3IHZhbHVlIHdpbGwgcmVwbGFjZSB0aGUgb2xkIHZh
bHVlLgotCi0gICAgQG1ldGhvZCBzZXQKLSAgICBAcGFyYW0geyp9IGtleQotICAgIEBwYXJhbSB7
Kn0gdmFsdWUKLSAgKi8KLSAgc2V0OiBmdW5jdGlvbihrZXksIHZhbHVlKSB7Ci0gICAgdmFyIGtl
eXMgPSB0aGlzLmtleXMsCi0gICAgICAgIHZhbHVlcyA9IHRoaXMudmFsdWVzLAotICAgICAgICBn
dWlkID0gZ3VpZEZvcihrZXkpOwotCi0gICAga2V5cy5hZGQoa2V5KTsKLSAgICB2YWx1ZXNbZ3Vp
ZF0gPSB2YWx1ZTsKLSAgICBzZXQodGhpcywgJ2xlbmd0aCcsIGtleXMubGlzdC5sZW5ndGgpOwot
ICB9LAotCi0gIC8qKgotICAgIFJlbW92ZXMgYSB2YWx1ZSBmcm9tIHRoZSBtYXAgZm9yIGFuIGFz
c29jaWF0ZWQga2V5LgotCi0gICAgQG1ldGhvZCByZW1vdmUKLSAgICBAcGFyYW0geyp9IGtleQot
ICAgIEByZXR1cm4ge0Jvb2xlYW59IHRydWUgaWYgYW4gaXRlbSB3YXMgcmVtb3ZlZCwgZmFsc2Ug
b3RoZXJ3aXNlCi0gICovCi0gIHJlbW92ZTogZnVuY3Rpb24oa2V5KSB7Ci0gICAgLy8gZG9uJ3Qg
dXNlIEVTNiAiZGVsZXRlIiBiZWNhdXNlIGl0IHdpbGwgYmUgYW5ub3lpbmcKLSAgICAvLyB0byB1
c2UgaW4gYnJvd3NlcnMgdGhhdCBhcmUgbm90IEVTNiBmcmllbmRseTsKLSAgICB2YXIga2V5cyA9
IHRoaXMua2V5cywKLSAgICAgICAgdmFsdWVzID0gdGhpcy52YWx1ZXMsCi0gICAgICAgIGd1aWQg
PSBndWlkRm9yKGtleSk7Ci0KLSAgICBpZiAodmFsdWVzLmhhc093blByb3BlcnR5KGd1aWQpKSB7
Ci0gICAgICBrZXlzLnJlbW92ZShrZXkpOwotICAgICAgZGVsZXRlIHZhbHVlc1tndWlkXTsKLSAg
ICAgIHNldCh0aGlzLCAnbGVuZ3RoJywga2V5cy5saXN0Lmxlbmd0aCk7Ci0gICAgICByZXR1cm4g
dHJ1ZTsKLSAgICB9IGVsc2UgewotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgfSwKLQot
ICAvKioKLSAgICBDaGVjayB3aGV0aGVyIGEga2V5IGlzIHByZXNlbnQuCi0KLSAgICBAbWV0aG9k
IGhhcwotICAgIEBwYXJhbSB7Kn0ga2V5Ci0gICAgQHJldHVybiB7Qm9vbGVhbn0gdHJ1ZSBpZiB0
aGUgaXRlbSB3YXMgcHJlc2VudCwgZmFsc2Ugb3RoZXJ3aXNlCi0gICovCi0gIGhhczogZnVuY3Rp
b24oa2V5KSB7Ci0gICAgdmFyIHZhbHVlcyA9IHRoaXMudmFsdWVzLAotICAgICAgICBndWlkID0g
Z3VpZEZvcihrZXkpOwotCi0gICAgcmV0dXJuIHZhbHVlcy5oYXNPd25Qcm9wZXJ0eShndWlkKTsK
LSAgfSwKLQotICAvKioKLSAgICBJdGVyYXRlIG92ZXIgYWxsIHRoZSBrZXlzIGFuZCB2YWx1ZXMu
IENhbGxzIHRoZSBmdW5jdGlvbiBvbmNlCi0gICAgZm9yIGVhY2gga2V5LCBwYXNzaW5nIGluIHRo
ZSBrZXkgYW5kIHZhbHVlLCBpbiB0aGF0IG9yZGVyLgotCi0gICAgVGhlIGtleXMgYXJlIGd1YXJh
bnRlZWQgdG8gYmUgaXRlcmF0ZWQgb3ZlciBpbiBpbnNlcnRpb24gb3JkZXIuCi0KLSAgICBAbWV0
aG9kIGZvckVhY2gKLSAgICBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFjawotICAgIEBwYXJhbSB7
Kn0gc2VsZiBpZiBwYXNzZWQsIHRoZSBgdGhpc2AgdmFsdWUgaW5zaWRlIHRoZQotICAgICAgY2Fs
bGJhY2suIEJ5IGRlZmF1bHQsIGB0aGlzYCBpcyB0aGUgbWFwLgotICAqLwotICBmb3JFYWNoOiBm
dW5jdGlvbihjYWxsYmFjaywgc2VsZikgewotICAgIHZhciBrZXlzID0gdGhpcy5rZXlzLAotICAg
ICAgICB2YWx1ZXMgPSB0aGlzLnZhbHVlczsKLQotICAgIGtleXMuZm9yRWFjaChmdW5jdGlvbihr
ZXkpIHsKLSAgICAgIHZhciBndWlkID0gZ3VpZEZvcihrZXkpOwotICAgICAgY2FsbGJhY2suY2Fs
bChzZWxmLCBrZXksIHZhbHVlc1tndWlkXSk7Ci0gICAgfSk7Ci0gIH0sCi0KLSAgLyoqCi0gICAg
QG1ldGhvZCBjb3B5Ci0gICAgQHJldHVybiB7RW1iZXIuTWFwfQotICAqLwotICBjb3B5OiBmdW5j
dGlvbigpIHsKLSAgICByZXR1cm4gY29weU1hcCh0aGlzLCBuZXcgTWFwKCkpOwotICB9Ci19Owot
Ci0vKioKLSAgQGNsYXNzIE1hcFdpdGhEZWZhdWx0Ci0gIEBuYW1lc3BhY2UgRW1iZXIKLSAgQGV4
dGVuZHMgRW1iZXIuTWFwCi0gIEBwcml2YXRlCi0gIEBjb25zdHJ1Y3RvcgotICBAcGFyYW0gW29w
dGlvbnNdCi0gICAgQHBhcmFtIHsqfSBbb3B0aW9ucy5kZWZhdWx0VmFsdWVdCi0qLwotdmFyIE1h
cFdpdGhEZWZhdWx0ID0gRW1iZXIuTWFwV2l0aERlZmF1bHQgPSBmdW5jdGlvbihvcHRpb25zKSB7
Ci0gIE1hcC5jYWxsKHRoaXMpOwotICB0aGlzLmRlZmF1bHRWYWx1ZSA9IG9wdGlvbnMuZGVmYXVs
dFZhbHVlOwotfTsKLQotLyoqCi0gIEBtZXRob2QgY3JlYXRlCi0gIEBzdGF0aWMKLSAgQHBhcmFt
IFtvcHRpb25zXQotICAgIEBwYXJhbSB7Kn0gW29wdGlvbnMuZGVmYXVsdFZhbHVlXQotICBAcmV0
dXJuIHtFbWJlci5NYXBXaXRoRGVmYXVsdHxFbWJlci5NYXB9IElmIG9wdGlvbnMgYXJlIHBhc3Nl
ZCwgcmV0dXJucwotICAgIGBFbWJlci5NYXBXaXRoRGVmYXVsdGAgb3RoZXJ3aXNlIHJldHVybnMg
YEVtYmVyLk1hcGAKLSovCi1NYXBXaXRoRGVmYXVsdC5jcmVhdGUgPSBmdW5jdGlvbihvcHRpb25z
KSB7Ci0gIGlmIChvcHRpb25zKSB7Ci0gICAgcmV0dXJuIG5ldyBNYXBXaXRoRGVmYXVsdChvcHRp
b25zKTsKLSAgfSBlbHNlIHsKLSAgICByZXR1cm4gbmV3IE1hcCgpOwotICB9Ci19OwotCi1NYXBX
aXRoRGVmYXVsdC5wcm90b3R5cGUgPSBFbWJlci5jcmVhdGUoTWFwLnByb3RvdHlwZSk7Ci0KLS8q
KgotICBSZXRyaWV2ZSB0aGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4ga2V5LgotCi0g
IEBtZXRob2QgZ2V0Ci0gIEBwYXJhbSB7Kn0ga2V5Ci0gIEByZXR1cm4geyp9IHRoZSB2YWx1ZSBh
c3NvY2lhdGVkIHdpdGggdGhlIGtleSwgb3IgdGhlIGRlZmF1bHQgdmFsdWUKLSovCi1NYXBXaXRo
RGVmYXVsdC5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24oa2V5KSB7Ci0gIHZhciBoYXNWYWx1ZSA9
IHRoaXMuaGFzKGtleSk7Ci0KLSAgaWYgKGhhc1ZhbHVlKSB7Ci0gICAgcmV0dXJuIE1hcC5wcm90
b3R5cGUuZ2V0LmNhbGwodGhpcywga2V5KTsKLSAgfSBlbHNlIHsKLSAgICB2YXIgZGVmYXVsdFZh
bHVlID0gdGhpcy5kZWZhdWx0VmFsdWUoa2V5KTsKLSAgICB0aGlzLnNldChrZXksIGRlZmF1bHRW
YWx1ZSk7Ci0gICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTsKLSAgfQotfTsKLQotLyoqCi0gIEBtZXRo
b2QgY29weQotICBAcmV0dXJuIHtFbWJlci5NYXBXaXRoRGVmYXVsdH0KLSovCi1NYXBXaXRoRGVm
YXVsdC5wcm90b3R5cGUuY29weSA9IGZ1bmN0aW9uKCkgewotICByZXR1cm4gY29weU1hcCh0aGlz
LCBuZXcgTWFwV2l0aERlZmF1bHQoewotICAgIGRlZmF1bHRWYWx1ZTogdGhpcy5kZWZhdWx0VmFs
dWUKLSAgfSkpOwotfTsKLQotfSkoKTsKLQotCi0KLShmdW5jdGlvbigpIHsKLWZ1bmN0aW9uIGNv
bnNvbGVNZXRob2QobmFtZSkgewotICB2YXIgY29uc29sZU9iaiwgbG9nVG9Db25zb2xlOwotICBp
ZiAoRW1iZXIuaW1wb3J0cy5jb25zb2xlKSB7Ci0gICAgY29uc29sZU9iaiA9IEVtYmVyLmltcG9y
dHMuY29uc29sZTsKLSAgfSBlbHNlIGlmICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcp
IHsKLSAgICBjb25zb2xlT2JqID0gY29uc29sZTsKLSAgfQotCi0gIHZhciBtZXRob2QgPSB0eXBl
b2YgY29uc29sZU9iaiA9PT0gJ29iamVjdCcgPyBjb25zb2xlT2JqW25hbWVdIDogbnVsbDsKLQot
ICBpZiAobWV0aG9kKSB7Ci0gICAgLy8gT2xkZXIgSUUgZG9lc24ndCBzdXBwb3J0IGFwcGx5LCBi
dXQgQ2hyb21lIG5lZWRzIGl0Ci0gICAgaWYgKG1ldGhvZC5hcHBseSkgewotICAgICAgbG9nVG9D
b25zb2xlID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIG1ldGhvZC5hcHBseShjb25zb2xlT2JqLCBh
cmd1bWVudHMpOwotICAgICAgfTsKLSAgICAgIGxvZ1RvQ29uc29sZS5kaXNwbGF5TmFtZSA9ICdj
b25zb2xlLicgKyBuYW1lOwotICAgICAgcmV0dXJuIGxvZ1RvQ29uc29sZTsKLSAgICB9IGVsc2Ug
ewotICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgewotICAgICAgICB2YXIgbWVzc2FnZSA9IEFycmF5
LnByb3RvdHlwZS5qb2luLmNhbGwoYXJndW1lbnRzLCAnLCAnKTsKLSAgICAgICAgbWV0aG9kKG1l
c3NhZ2UpOwotICAgICAgfTsKLSAgICB9Ci0gIH0KLX0KLQotZnVuY3Rpb24gYXNzZXJ0UG9seWZp
bGwodGVzdCwgbWVzc2FnZSkgewotICBpZiAoIXRlc3QpIHsKLSAgICB0cnkgewotICAgICAgLy8g
YXR0ZW1wdCB0byBwcmVzZXJ2ZSB0aGUgc3RhY2sKLSAgICAgIHRocm93IG5ldyBFbWJlci5FcnJv
cigiYXNzZXJ0aW9uIGZhaWxlZDogIiArIG1lc3NhZ2UpOwotICAgIH0gY2F0Y2goZXJyb3IpIHsK
LSAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRocm93IGVycm9yOwotICAg
ICAgfSwgMCk7Ci0gICAgfQotICB9Ci19Ci0KLS8qKgotICBJbnNpZGUgRW1iZXItTWV0YWwsIHNp
bXBseSB1c2VzIHRoZSBtZXRob2RzIGZyb20gYGltcG9ydHMuY29uc29sZWAuCi0gIE92ZXJyaWRl
IHRoaXMgdG8gcHJvdmlkZSBtb3JlIHJvYnVzdCBsb2dnaW5nIGZ1bmN0aW9uYWxpdHkuCi0KLSAg
QGNsYXNzIExvZ2dlcgotICBAbmFtZXNwYWNlIEVtYmVyCi0qLwotRW1iZXIuTG9nZ2VyID0gewot
ICAvKioKLSAgIExvZ3MgdGhlIGFyZ3VtZW50cyB0byB0aGUgY29uc29sZS4KLSAgIFlvdSBjYW4g
cGFzcyBhcyBtYW55IGFyZ3VtZW50cyBhcyB5b3Ugd2FudCBhbmQgdGhleSB3aWxsIGJlIGpvaW5l
ZCB0b2dldGhlciB3aXRoIGEgc3BhY2UuCi0KLSAgICBgYGBqYXZhc2NyaXB0Ci0gICAgdmFyIGZv
byA9IDE7Ci0gICAgRW1iZXIuTG9nZ2VyLmxvZygnbG9nIHZhbHVlIG9mIGZvbzonLCBmb28pOyAv
LyAibG9nIHZhbHVlIG9mIGZvbzogMSIgd2lsbCBiZSBwcmludGVkIHRvIHRoZSBjb25zb2xlCi0g
ICAgYGBgCi0KLSAgIEBtZXRob2QgbG9nCi0gICBAZm9yIEVtYmVyLkxvZ2dlcgotICAgQHBhcmFt
IHsqfSBhcmd1bWVudHMKLSAgKi8KLSAgbG9nOiAgIGNvbnNvbGVNZXRob2QoJ2xvZycpICAgfHwg
RW1iZXIuSywKLQotICAvKioKLSAgIFByaW50cyB0aGUgYXJndW1lbnRzIHRvIHRoZSBjb25zb2xl
IHdpdGggYSB3YXJuaW5nIGljb24uCi0gICBZb3UgY2FuIHBhc3MgYXMgbWFueSBhcmd1bWVudHMg
YXMgeW91IHdhbnQgYW5kIHRoZXkgd2lsbCBiZSBqb2luZWQgdG9nZXRoZXIgd2l0aCBhIHNwYWNl
LgotCi0gICAgYGBgamF2YXNjcmlwdAotICAgIEVtYmVyLkxvZ2dlci53YXJuKCdTb21ldGhpbmcg
aGFwcGVuZWQhJyk7IC8vICJTb21ldGhpbmcgaGFwcGVuZWQhIiB3aWxsIGJlIHByaW50ZWQgdG8g
dGhlIGNvbnNvbGUgd2l0aCBhIHdhcm5pbmcgaWNvbi4KLSAgICBgYGAKLQotICAgQG1ldGhvZCB3
YXJuCi0gICBAZm9yIEVtYmVyLkxvZ2dlcgotICAgQHBhcmFtIHsqfSBhcmd1bWVudHMKLSAgKi8K
LSAgd2FybjogIGNvbnNvbGVNZXRob2QoJ3dhcm4nKSAgfHwgRW1iZXIuSywKLQotICAvKioKLSAg
IFByaW50cyB0aGUgYXJndW1lbnRzIHRvIHRoZSBjb25zb2xlIHdpdGggYW4gZXJyb3IgaWNvbiwg
cmVkIHRleHQgYW5kIGEgc3RhY2sgdHJhY2UuCi0gICBZb3UgY2FuIHBhc3MgYXMgbWFueSBhcmd1
bWVudHMgYXMgeW91IHdhbnQgYW5kIHRoZXkgd2lsbCBiZSBqb2luZWQgdG9nZXRoZXIgd2l0aCBh
IHNwYWNlLgotCi0gICAgYGBgamF2YXNjcmlwdAotICAgIEVtYmVyLkxvZ2dlci5lcnJvcignRGFu
Z2VyISBEYW5nZXIhJyk7IC8vICJEYW5nZXIhIERhbmdlciEiIHdpbGwgYmUgcHJpbnRlZCB0byB0
aGUgY29uc29sZSBpbiByZWQgdGV4dC4KLSAgICBgYGAKLQotICAgQG1ldGhvZCBlcnJvcgotICAg
QGZvciBFbWJlci5Mb2dnZXIKLSAgIEBwYXJhbSB7Kn0gYXJndW1lbnRzCi0gICovCi0gIGVycm9y
OiBjb25zb2xlTWV0aG9kKCdlcnJvcicpIHx8IEVtYmVyLkssCi0KLSAgLyoqCi0gICBMb2dzIHRo
ZSBhcmd1bWVudHMgdG8gdGhlIGNvbnNvbGUuCi0gICBZb3UgY2FuIHBhc3MgYXMgbWFueSBhcmd1
bWVudHMgYXMgeW91IHdhbnQgYW5kIHRoZXkgd2lsbCBiZSBqb2luZWQgdG9nZXRoZXIgd2l0aCBh
IHNwYWNlLgotCi0gICAgYGBgamF2YXNjcmlwdAotICAgIHZhciBmb28gPSAxOwotICAgIEVtYmVy
LkxvZ2dlci5pbmZvKCdsb2cgdmFsdWUgb2YgZm9vOicsIGZvbyk7IC8vICJsb2cgdmFsdWUgb2Yg
Zm9vOiAxIiB3aWxsIGJlIHByaW50ZWQgdG8gdGhlIGNvbnNvbGUKLSAgICBgYGAKLQotICAgQG1l
dGhvZCBpbmZvCi0gICBAZm9yIEVtYmVyLkxvZ2dlcgotICAgQHBhcmFtIHsqfSBhcmd1bWVudHMK
LSAgKi8KLSAgaW5mbzogIGNvbnNvbGVNZXRob2QoJ2luZm8nKSAgfHwgRW1iZXIuSywKLQotICAv
KioKLSAgIExvZ3MgdGhlIGFyZ3VtZW50cyB0byB0aGUgY29uc29sZSBpbiBibHVlIHRleHQuCi0g
ICBZb3UgY2FuIHBhc3MgYXMgbWFueSBhcmd1bWVudHMgYXMgeW91IHdhbnQgYW5kIHRoZXkgd2ls
bCBiZSBqb2luZWQgdG9nZXRoZXIgd2l0aCBhIHNwYWNlLgotCi0gICAgYGBgamF2YXNjcmlwdAot
ICAgIHZhciBmb28gPSAxOwotICAgIEVtYmVyLkxvZ2dlci5kZWJ1ZygnbG9nIHZhbHVlIG9mIGZv
bzonLCBmb28pOyAvLyAibG9nIHZhbHVlIG9mIGZvbzogMSIgd2lsbCBiZSBwcmludGVkIHRvIHRo
ZSBjb25zb2xlCi0gICAgYGBgCi0KLSAgIEBtZXRob2QgZGVidWcKLSAgIEBmb3IgRW1iZXIuTG9n
Z2VyCi0gICBAcGFyYW0geyp9IGFyZ3VtZW50cwotICAqLwotICBkZWJ1ZzogY29uc29sZU1ldGhv
ZCgnZGVidWcnKSB8fCBjb25zb2xlTWV0aG9kKCdpbmZvJykgfHwgRW1iZXIuSywKLQotICAvKioK
LSAgIElmIHRoZSB2YWx1ZSBwYXNzZWQgaW50byBgRW1iZXIuTG9nZ2VyLmFzc2VydGAgaXMgbm90
IHRydXRoeSBpdCB3aWxsIHRocm93IGFuIGVycm9yIHdpdGggYSBzdGFjayB0cmFjZS4KLQotICAg
IGBgYGphdmFzY3JpcHQKLSAgICBFbWJlci5Mb2dnZXIuYXNzZXJ0KHRydWUpOyAvLyB1bmRlZmlu
ZWQKLSAgICBFbWJlci5Mb2dnZXIuYXNzZXJ0KHRydWUgPT09IGZhbHNlKTsgLy8gVGhyb3dzIGFu
IEFzc2VydGlvbiBmYWlsZWQgZXJyb3IuCi0gICAgYGBgCi0KLSAgIEBtZXRob2QgYXNzZXJ0Ci0g
ICBAZm9yIEVtYmVyLkxvZ2dlcgotICAgQHBhcmFtIHtCb29sZWFufSBib29sIFZhbHVlIHRvIHRl
c3QKLSAgKi8KLSAgYXNzZXJ0OiBjb25zb2xlTWV0aG9kKCdhc3NlcnQnKSB8fCBhc3NlcnRQb2x5
ZmlsbAotfTsKLQotCi19KSgpOwotCi0KLQotKGZ1bmN0aW9uKCkgewotLyoqCi1AbW9kdWxlIGVt
YmVyLW1ldGFsCi0qLwotCi12YXIgTUVUQV9LRVkgPSBFbWJlci5NRVRBX0tFWSwKLSAgICBtZXRh
Rm9yID0gRW1iZXIubWV0YSwKLSAgICBvYmplY3REZWZpbmVQcm9wZXJ0eSA9IEVtYmVyLnBsYXRm
b3JtLmRlZmluZVByb3BlcnR5OwotCi12YXIgTUFOREFUT1JZX1NFVFRFUiA9IEVtYmVyLkVOVi5N
QU5EQVRPUllfU0VUVEVSOwotCi0vLyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi0vLyBERVNDUklQVE9SCi0vLwotCi0vKioKLSAgT2Jq
ZWN0cyBvZiB0aGlzIHR5cGUgY2FuIGltcGxlbWVudCBhbiBpbnRlcmZhY2UgdG8gcmVzcG9uZCB0
byByZXF1ZXN0cyB0bwotICBnZXQgYW5kIHNldC4gVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24g
aGFuZGxlcyBzaW1wbGUgcHJvcGVydGllcy4KLQotICBZb3UgZ2VuZXJhbGx5IHdvbid0IG5lZWQg
dG8gY3JlYXRlIG9yIHN1YmNsYXNzIHRoaXMgZGlyZWN0bHkuCi0KLSAgQGNsYXNzIERlc2NyaXB0
b3IKLSAgQG5hbWVzcGFjZSBFbWJlcgotICBAcHJpdmF0ZQotICBAY29uc3RydWN0b3IKLSovCi1F
bWJlci5EZXNjcmlwdG9yID0gZnVuY3Rpb24oKSB7fTsKLQotLy8gLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgotLy8gREVGSU5JTkcgUFJP
UEVSVElFUyBBUEkKLS8vCi0KLXZhciBNQU5EQVRPUllfU0VUVEVSX0ZVTkNUSU9OID0gRW1iZXIu
TUFOREFUT1JZX1NFVFRFUl9GVU5DVElPTiA9IGZ1bmN0aW9uKHZhbHVlKSB7Ci0gIEVtYmVyLmFz
c2VydCgiWW91IG11c3QgdXNlIEVtYmVyLnNldCgpIHRvIGFjY2VzcyB0aGlzIHByb3BlcnR5IChv
ZiAiICsgdGhpcyArICIpIiwgZmFsc2UpOwotfTsKLQotdmFyIERFRkFVTFRfR0VUVEVSX0ZVTkNU
SU9OID0gRW1iZXIuREVGQVVMVF9HRVRURVJfRlVOQ1RJT04gPSBmdW5jdGlvbihuYW1lKSB7Ci0g
IHJldHVybiBmdW5jdGlvbigpIHsKLSAgICB2YXIgbWV0YSA9IHRoaXNbTUVUQV9LRVldOwotICAg
IHJldHVybiBtZXRhICYmIG1ldGEudmFsdWVzW25hbWVdOwotICB9OwotfTsKLQotLyoqCi0gIE5P
VEU6IFRoaXMgaXMgYSBsb3ctbGV2ZWwgbWV0aG9kIHVzZWQgYnkgb3RoZXIgcGFydHMgb2YgdGhl
IEFQSS4gWW91IGFsbW9zdAotICBuZXZlciB3YW50IHRvIGNhbGwgdGhpcyBtZXRob2QgZGlyZWN0
bHkuIEluc3RlYWQgeW91IHNob3VsZCB1c2UKLSAgYEVtYmVyLm1peGluKClgIHRvIGRlZmluZSBu
ZXcgcHJvcGVydGllcy4KLQotICBEZWZpbmVzIGEgcHJvcGVydHkgb24gYW4gb2JqZWN0LiBUaGlz
IG1ldGhvZCB3b3JrcyBtdWNoIGxpa2UgdGhlIEVTNQotICBgT2JqZWN0LmRlZmluZVByb3BlcnR5
KClgIG1ldGhvZCBleGNlcHQgdGhhdCBpdCBjYW4gYWxzbyBhY2NlcHQgY29tcHV0ZWQKLSAgcHJv
cGVydGllcyBhbmQgb3RoZXIgc3BlY2lhbCBkZXNjcmlwdG9ycy4KLQotICBOb3JtYWxseSB0aGlz
IG1ldGhvZCB0YWtlcyBvbmx5IHRocmVlIHBhcmFtZXRlcnMuIEhvd2V2ZXIgaWYgeW91IHBhc3Mg
YW4KLSAgaW5zdGFuY2Ugb2YgYEVtYmVyLkRlc2NyaXB0b3JgIGFzIHRoZSB0aGlyZCBwYXJhbSB0
aGVuIHlvdSBjYW4gcGFzcyBhbgotICBvcHRpb25hbCB2YWx1ZSBhcyB0aGUgZm91cnRoIHBhcmFt
ZXRlci4gVGhpcyBpcyBvZnRlbiBtb3JlIGVmZmljaWVudCB0aGFuCi0gIGNyZWF0aW5nIG5ldyBk
ZXNjcmlwdG9yIGhhc2hlcyBmb3IgZWFjaCBwcm9wZXJ0eS4KLQotICAjIyBFeGFtcGxlcwotCi0g
IGBgYGphdmFzY3JpcHQKLSAgLy8gRVM1IGNvbXBhdGlibGUgbW9kZQotICBFbWJlci5kZWZpbmVQ
cm9wZXJ0eShjb250YWN0LCAnZmlyc3ROYW1lJywgewotICAgIHdyaXRhYmxlOiB0cnVlLAotICAg
IGNvbmZpZ3VyYWJsZTogZmFsc2UsCi0gICAgZW51bWVyYWJsZTogdHJ1ZSwKLSAgICB2YWx1ZTog
J0NoYXJsZXMnCi0gIH0pOwotCi0gIC8vIGRlZmluZSBhIHNpbXBsZSBwcm9wZXJ0eQotICBFbWJl
ci5kZWZpbmVQcm9wZXJ0eShjb250YWN0LCAnbGFzdE5hbWUnLCB1bmRlZmluZWQsICdKb2xsZXkn
KTsKLQotICAvLyBkZWZpbmUgYSBjb21wdXRlZCBwcm9wZXJ0eQotICBFbWJlci5kZWZpbmVQcm9w
ZXJ0eShjb250YWN0LCAnZnVsbE5hbWUnLCBFbWJlci5jb21wdXRlZChmdW5jdGlvbigpIHsKLSAg
ICByZXR1cm4gdGhpcy5maXJzdE5hbWUrJyAnK3RoaXMubGFzdE5hbWU7Ci0gIH0pLnByb3BlcnR5
KCdmaXJzdE5hbWUnLCAnbGFzdE5hbWUnKSk7Ci0gIGBgYAotCi0gIEBwcml2YXRlCi0gIEBtZXRo
b2QgZGVmaW5lUHJvcGVydHkKLSAgQGZvciBFbWJlcgotICBAcGFyYW0ge09iamVjdH0gb2JqIHRo
ZSBvYmplY3QgdG8gZGVmaW5lIHRoaXMgcHJvcGVydHkgb24uIFRoaXMgbWF5IGJlIGEgcHJvdG90
eXBlLgotICBAcGFyYW0ge1N0cmluZ30ga2V5TmFtZSB0aGUgbmFtZSBvZiB0aGUgcHJvcGVydHkK
LSAgQHBhcmFtIHtFbWJlci5EZXNjcmlwdG9yfSBbZGVzY10gYW4gaW5zdGFuY2Ugb2YgYEVtYmVy
LkRlc2NyaXB0b3JgICh0eXBpY2FsbHkgYQotICAgIGNvbXB1dGVkIHByb3BlcnR5KSBvciBhbiBF
UzUgZGVzY3JpcHRvci4KLSAgICBZb3UgbXVzdCBwcm92aWRlIHRoaXMgb3IgYGRhdGFgIGJ1dCBu
b3QgYm90aC4KLSAgQHBhcmFtIHsqfSBbZGF0YV0gc29tZXRoaW5nIG90aGVyIHRoYW4gYSBkZXNj
cmlwdG9yLCB0aGF0IHdpbGwKLSAgICBiZWNvbWUgdGhlIGV4cGxpY2l0IHZhbHVlIG9mIHRoaXMg
cHJvcGVydHkuCi0qLwotRW1iZXIuZGVmaW5lUHJvcGVydHkgPSBmdW5jdGlvbihvYmosIGtleU5h
bWUsIGRlc2MsIGRhdGEsIG1ldGEpIHsKLSAgdmFyIGRlc2NzLCBleGlzdGluZ0Rlc2MsIHdhdGNo
aW5nLCB2YWx1ZTsKLQotICBpZiAoIW1ldGEpIG1ldGEgPSBtZXRhRm9yKG9iaik7Ci0gIGRlc2Nz
ID0gbWV0YS5kZXNjczsKLSAgZXhpc3RpbmdEZXNjID0gbWV0YS5kZXNjc1trZXlOYW1lXTsKLSAg
d2F0Y2hpbmcgPSBtZXRhLndhdGNoaW5nW2tleU5hbWVdID4gMDsKLQotICBpZiAoZXhpc3RpbmdE
ZXNjIGluc3RhbmNlb2YgRW1iZXIuRGVzY3JpcHRvcikgewotICAgIGV4aXN0aW5nRGVzYy50ZWFy
ZG93bihvYmosIGtleU5hbWUpOwotICB9Ci0KLSAgaWYgKGRlc2MgaW5zdGFuY2VvZiBFbWJlci5E
ZXNjcmlwdG9yKSB7Ci0gICAgdmFsdWUgPSBkZXNjOwotCi0gICAgZGVzY3Nba2V5TmFtZV0gPSBk
ZXNjOwotICAgIGlmIChNQU5EQVRPUllfU0VUVEVSICYmIHdhdGNoaW5nKSB7Ci0gICAgICBvYmpl
Y3REZWZpbmVQcm9wZXJ0eShvYmosIGtleU5hbWUsIHsKLSAgICAgICAgY29uZmlndXJhYmxlOiB0
cnVlLAotICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLAotICAgICAgICB3cml0YWJsZTogdHJ1ZSwK
LSAgICAgICAgdmFsdWU6IHVuZGVmaW5lZCAvLyBtYWtlIGVudW1lcmFibGUKLSAgICAgIH0pOwot
ICAgIH0gZWxzZSB7Ci0gICAgICBvYmpba2V5TmFtZV0gPSB1bmRlZmluZWQ7IC8vIG1ha2UgZW51
bWVyYWJsZQotICAgIH0KLSAgfSBlbHNlIHsKLSAgICBkZXNjc1trZXlOYW1lXSA9IHVuZGVmaW5l
ZDsgLy8gc2hhZG93IGRlc2NyaXB0b3IgaW4gcHJvdG8KLSAgICBpZiAoZGVzYyA9PSBudWxsKSB7
Ci0gICAgICB2YWx1ZSA9IGRhdGE7Ci0KLSAgICAgIGlmIChNQU5EQVRPUllfU0VUVEVSICYmIHdh
dGNoaW5nKSB7Ci0gICAgICAgIG1ldGEudmFsdWVzW2tleU5hbWVdID0gZGF0YTsKLSAgICAgICAg
b2JqZWN0RGVmaW5lUHJvcGVydHkob2JqLCBrZXlOYW1lLCB7Ci0gICAgICAgICAgY29uZmlndXJh
YmxlOiB0cnVlLAotICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsCi0gICAgICAgICAgc2V0OiBN
QU5EQVRPUllfU0VUVEVSX0ZVTkNUSU9OLAotICAgICAgICAgIGdldDogREVGQVVMVF9HRVRURVJf
RlVOQ1RJT04oa2V5TmFtZSkKLSAgICAgICAgfSk7Ci0gICAgICB9IGVsc2UgewotICAgICAgICBv
Ympba2V5TmFtZV0gPSBkYXRhOwotICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICB2YWx1ZSA9
IGRlc2M7Ci0KLSAgICAgIC8vIGNvbXBhdGliaWxpdHkgd2l0aCBFUzUKLSAgICAgIG9iamVjdERl
ZmluZVByb3BlcnR5KG9iaiwga2V5TmFtZSwgZGVzYyk7Ci0gICAgfQotICB9Ci0KLSAgLy8gaWYg
a2V5IGlzIGJlaW5nIHdhdGNoZWQsIG92ZXJyaWRlIGNoYWlucyB0aGF0Ci0gIC8vIHdlcmUgaW5p
dGlhbGl6ZWQgd2l0aCB0aGUgcHJvdG90eXBlCi0gIGlmICh3YXRjaGluZykgeyBFbWJlci5vdmVy
cmlkZUNoYWlucyhvYmosIGtleU5hbWUsIG1ldGEpOyB9Ci0KLSAgLy8gVGhlIGB2YWx1ZWAgcGFz
c2VkIHRvIHRoZSBgZGlkRGVmaW5lUHJvcGVydHlgIGhvb2sgaXMKLSAgLy8gZWl0aGVyIHRoZSBk
ZXNjcmlwdG9yIG9yIGRhdGEsIHdoaWNoZXZlciB3YXMgcGFzc2VkLgotICBpZiAob2JqLmRpZERl
ZmluZVByb3BlcnR5KSB7IG9iai5kaWREZWZpbmVQcm9wZXJ0eShvYmosIGtleU5hbWUsIHZhbHVl
KTsgfQotCi0gIHJldHVybiB0aGlzOwotfTsKLQotCi19KSgpOwotCi0KLQotKGZ1bmN0aW9uKCkg
ewotdmFyIGdldCA9IEVtYmVyLmdldDsKLQotLyoqCi0gIFRvIGdldCBtdWx0aXBsZSBwcm9wZXJ0
aWVzIGF0IG9uY2UsIGNhbGwgYEVtYmVyLmdldFByb3BlcnRpZXNgCi0gIHdpdGggYW4gb2JqZWN0
IGZvbGxvd2VkIGJ5IGEgbGlzdCBvZiBzdHJpbmdzIG9yIGFuIGFycmF5OgotCi0gIGBgYGphdmFz
Y3JpcHQKLSAgRW1iZXIuZ2V0UHJvcGVydGllcyhyZWNvcmQsICdmaXJzdE5hbWUnLCAnbGFzdE5h
bWUnLCAnemlwQ29kZScpOyAgLy8geyBmaXJzdE5hbWU6ICdKb2huJywgbGFzdE5hbWU6ICdEb2Un
LCB6aXBDb2RlOiAnMTAwMTEnIH0KLSAgYGBgCi0KLSAgaXMgZXF1aXZhbGVudCB0bzoKLQotICBg
YGBqYXZhc2NyaXB0Ci0gIEVtYmVyLmdldFByb3BlcnRpZXMocmVjb3JkLCBbJ2ZpcnN0TmFtZScs
ICdsYXN0TmFtZScsICd6aXBDb2RlJ10pOyAgLy8geyBmaXJzdE5hbWU6ICdKb2huJywgbGFzdE5h
bWU6ICdEb2UnLCB6aXBDb2RlOiAnMTAwMTEnIH0KLSAgYGBgCi0KLSAgQG1ldGhvZCBnZXRQcm9w
ZXJ0aWVzCi0gIEBwYXJhbSBvYmoKLSAgQHBhcmFtIHtTdHJpbmcuLi58QXJyYXl9IGxpc3Qgb2Yg
a2V5cyB0byBnZXQKLSAgQHJldHVybiB7SGFzaH0KLSovCi1FbWJlci5nZXRQcm9wZXJ0aWVzID0g
ZnVuY3Rpb24ob2JqKSB7Ci0gIHZhciByZXQgPSB7fSwKLSAgICAgIHByb3BlcnR5TmFtZXMgPSBh
cmd1bWVudHMsCi0gICAgICBpID0gMTsKLQotICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMiAm
JiBFbWJlci50eXBlT2YoYXJndW1lbnRzWzFdKSA9PT0gJ2FycmF5JykgewotICAgIGkgPSAwOwot
ICAgIHByb3BlcnR5TmFtZXMgPSBhcmd1bWVudHNbMV07Ci0gIH0KLSAgZm9yKHZhciBsZW4gPSBw
cm9wZXJ0eU5hbWVzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgcmV0W3Byb3BlcnR5TmFt
ZXNbaV1dID0gZ2V0KG9iaiwgcHJvcGVydHlOYW1lc1tpXSk7Ci0gIH0KLSAgcmV0dXJuIHJldDsK
LX07Ci0KLX0pKCk7Ci0KLQotCi0oZnVuY3Rpb24oKSB7Ci12YXIgY2hhbmdlUHJvcGVydGllcyA9
IEVtYmVyLmNoYW5nZVByb3BlcnRpZXMsCi0gICAgc2V0ID0gRW1iZXIuc2V0OwotCi0vKioKLSAg
U2V0IGEgbGlzdCBvZiBwcm9wZXJ0aWVzIG9uIGFuIG9iamVjdC4gVGhlc2UgcHJvcGVydGllcyBh
cmUgc2V0IGluc2lkZQotICBhIHNpbmdsZSBgYmVnaW5Qcm9wZXJ0eUNoYW5nZXNgIGFuZCBgZW5k
UHJvcGVydHlDaGFuZ2VzYCBiYXRjaCwgc28KLSAgb2JzZXJ2ZXJzIHdpbGwgYmUgYnVmZmVyZWQu
Ci0KLSAgYGBgamF2YXNjcmlwdAotICBhbk9iamVjdC5zZXRQcm9wZXJ0aWVzKHsKLSAgICBmaXJz
dE5hbWU6ICJTdGFubGV5IiwKLSAgICBsYXN0TmFtZTogIlN0dWFydCIsCi0gICAgYWdlOiAiMjEi
Ci0gIH0pCi0gIGBgYAotCi0gIEBtZXRob2Qgc2V0UHJvcGVydGllcwotICBAcGFyYW0gc2VsZgot
ICBAcGFyYW0ge09iamVjdH0gaGFzaAotICBAcmV0dXJuIHNlbGYKLSovCi1FbWJlci5zZXRQcm9w
ZXJ0aWVzID0gZnVuY3Rpb24oc2VsZiwgaGFzaCkgewotICBjaGFuZ2VQcm9wZXJ0aWVzKGZ1bmN0
aW9uKCkgewotICAgIGZvcih2YXIgcHJvcCBpbiBoYXNoKSB7Ci0gICAgICBpZiAoaGFzaC5oYXNP
d25Qcm9wZXJ0eShwcm9wKSkgeyBzZXQoc2VsZiwgcHJvcCwgaGFzaFtwcm9wXSk7IH0KLSAgICB9
Ci0gIH0pOwotICByZXR1cm4gc2VsZjsKLX07Ci0KLX0pKCk7Ci0KLQotCi0oZnVuY3Rpb24oKSB7
Ci12YXIgbWV0YUZvciA9IEVtYmVyLm1ldGEsIC8vIHV0aWxzLmpzCi0gICAgdHlwZU9mID0gRW1i
ZXIudHlwZU9mLCAvLyB1dGlscy5qcwotICAgIE1BTkRBVE9SWV9TRVRURVIgPSBFbWJlci5FTlYu
TUFOREFUT1JZX1NFVFRFUiwKLSAgICBvX2RlZmluZVByb3BlcnR5ID0gRW1iZXIucGxhdGZvcm0u
ZGVmaW5lUHJvcGVydHk7Ci0KLUVtYmVyLndhdGNoS2V5ID0gZnVuY3Rpb24ob2JqLCBrZXlOYW1l
KSB7Ci0gIC8vIGNhbid0IHdhdGNoIGxlbmd0aCBvbiBBcnJheSAtIGl0IGlzIHNwZWNpYWwuLi4K
LSAgaWYgKGtleU5hbWUgPT09ICdsZW5ndGgnICYmIHR5cGVPZihvYmopID09PSAnYXJyYXknKSB7
IHJldHVybjsgfQotCi0gIHZhciBtID0gbWV0YUZvcihvYmopLCB3YXRjaGluZyA9IG0ud2F0Y2hp
bmc7Ci0KLSAgLy8gYWN0aXZhdGUgd2F0Y2hpbmcgZmlyc3QgdGltZQotICBpZiAoIXdhdGNoaW5n
W2tleU5hbWVdKSB7Ci0gICAgd2F0Y2hpbmdba2V5TmFtZV0gPSAxOwotCi0gICAgaWYgKCdmdW5j
dGlvbicgPT09IHR5cGVvZiBvYmoud2lsbFdhdGNoUHJvcGVydHkpIHsKLSAgICAgIG9iai53aWxs
V2F0Y2hQcm9wZXJ0eShrZXlOYW1lKTsKLSAgICB9Ci0KLSAgICBpZiAoTUFOREFUT1JZX1NFVFRF
UiAmJiBrZXlOYW1lIGluIG9iaikgewotICAgICAgbS52YWx1ZXNba2V5TmFtZV0gPSBvYmpba2V5
TmFtZV07Ci0gICAgICBvX2RlZmluZVByb3BlcnR5KG9iaiwga2V5TmFtZSwgewotICAgICAgICBj
b25maWd1cmFibGU6IHRydWUsCi0gICAgICAgIGVudW1lcmFibGU6IG9iai5wcm9wZXJ0eUlzRW51
bWVyYWJsZShrZXlOYW1lKSwKLSAgICAgICAgc2V0OiBFbWJlci5NQU5EQVRPUllfU0VUVEVSX0ZV
TkNUSU9OLAotICAgICAgICBnZXQ6IEVtYmVyLkRFRkFVTFRfR0VUVEVSX0ZVTkNUSU9OKGtleU5h
bWUpCi0gICAgICB9KTsKLSAgICB9Ci0gIH0gZWxzZSB7Ci0gICAgd2F0Y2hpbmdba2V5TmFtZV0g
PSAod2F0Y2hpbmdba2V5TmFtZV0gfHwgMCkgKyAxOwotICB9Ci19OwotCi0KLUVtYmVyLnVud2F0
Y2hLZXkgPSBmdW5jdGlvbihvYmosIGtleU5hbWUpIHsKLSAgdmFyIG0gPSBtZXRhRm9yKG9iaiks
IHdhdGNoaW5nID0gbS53YXRjaGluZzsKLQotICBpZiAod2F0Y2hpbmdba2V5TmFtZV0gPT09IDEp
IHsKLSAgICB3YXRjaGluZ1trZXlOYW1lXSA9IDA7Ci0KLSAgICBpZiAoJ2Z1bmN0aW9uJyA9PT0g
dHlwZW9mIG9iai5kaWRVbndhdGNoUHJvcGVydHkpIHsKLSAgICAgIG9iai5kaWRVbndhdGNoUHJv
cGVydHkoa2V5TmFtZSk7Ci0gICAgfQotCi0gICAgaWYgKE1BTkRBVE9SWV9TRVRURVIgJiYga2V5
TmFtZSBpbiBvYmopIHsKLSAgICAgIG9fZGVmaW5lUHJvcGVydHkob2JqLCBrZXlOYW1lLCB7Ci0g
ICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSwKLSAgICAgICAgZW51bWVyYWJsZTogb2JqLnByb3Bl
cnR5SXNFbnVtZXJhYmxlKGtleU5hbWUpLAotICAgICAgICBzZXQ6IGZ1bmN0aW9uKHZhbCkgewot
ICAgICAgICAgIC8vIHJlZGVmaW5lIHRvIHNldCBhcyBlbnVtZXJhYmxlCi0gICAgICAgICAgb19k
ZWZpbmVQcm9wZXJ0eShvYmosIGtleU5hbWUsIHsKLSAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTog
dHJ1ZSwKLSAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLAotICAgICAgICAgICAgZW51bWVyYWJs
ZTogdHJ1ZSwKLSAgICAgICAgICAgIHZhbHVlOiB2YWwKLSAgICAgICAgICB9KTsKLSAgICAgICAg
ICBkZWxldGUgbS52YWx1ZXNba2V5TmFtZV07Ci0gICAgICAgIH0sCi0gICAgICAgIGdldDogRW1i
ZXIuREVGQVVMVF9HRVRURVJfRlVOQ1RJT04oa2V5TmFtZSkKLSAgICAgIH0pOwotICAgIH0KLSAg
fSBlbHNlIGlmICh3YXRjaGluZ1trZXlOYW1lXSA+IDEpIHsKLSAgICB3YXRjaGluZ1trZXlOYW1l
XS0tOwotICB9Ci19OwotCi19KSgpOwotCi0KLQotKGZ1bmN0aW9uKCkgewotdmFyIG1ldGFGb3Ig
PSBFbWJlci5tZXRhLCAvLyB1dGlscy5qcwotICAgIGdldCA9IEVtYmVyLmdldCwgLy8gcHJvcGVy
dHlfZ2V0LmpzCi0gICAgbm9ybWFsaXplVHVwbGUgPSBFbWJlci5ub3JtYWxpemVUdXBsZSwgLy8g
cHJvcGVydHlfZ2V0LmpzCi0gICAgZm9yRWFjaCA9IEVtYmVyLkFycmF5UG9seWZpbGxzLmZvckVh
Y2gsIC8vIGFycmF5LmpzCi0gICAgd2FybiA9IEVtYmVyLndhcm4sCi0gICAgd2F0Y2hLZXkgPSBF
bWJlci53YXRjaEtleSwKLSAgICB1bndhdGNoS2V5ID0gRW1iZXIudW53YXRjaEtleSwKLSAgICBG
SVJTVF9LRVkgPSAvXihbXlwuXCpdKykvOwotCi1mdW5jdGlvbiBmaXJzdEtleShwYXRoKSB7Ci0g
IHJldHVybiBwYXRoLm1hdGNoKEZJUlNUX0tFWSlbMF07Ci19Ci0KLXZhciBwZW5kaW5nUXVldWUg
PSBbXTsKLQotLy8gYXR0ZW1wdHMgdG8gYWRkIHRoZSBwZW5kaW5nUXVldWUgY2hhaW5zIGFnYWlu
LiBJZiBzb21lIG9mIHRoZW0gZW5kIHVwCi0vLyBiYWNrIGluIHRoZSBxdWV1ZSBhbmQgcmVzY2hl
ZHVsZSBpcyB0cnVlLCBzY2hlZHVsZXMgYSB0aW1lb3V0IHRvIHRyeQotLy8gYWdhaW4uCi1FbWJl
ci5mbHVzaFBlbmRpbmdDaGFpbnMgPSBmdW5jdGlvbigpIHsKLSAgaWYgKHBlbmRpbmdRdWV1ZS5s
ZW5ndGggPT09IDApIHsgcmV0dXJuOyB9IC8vIG5vdGhpbmcgdG8gZG8KLQotICB2YXIgcXVldWUg
PSBwZW5kaW5nUXVldWU7Ci0gIHBlbmRpbmdRdWV1ZSA9IFtdOwotCi0gIGZvckVhY2guY2FsbChx
dWV1ZSwgZnVuY3Rpb24ocSkgeyBxWzBdLmFkZChxWzFdKTsgfSk7Ci0KLSAgd2FybignV2F0Y2hp
bmcgYW4gdW5kZWZpbmVkIGdsb2JhbCwgRW1iZXIgZXhwZWN0cyB3YXRjaGVkIGdsb2JhbHMgdG8g
YmUgc2V0dXAgYnkgdGhlIHRpbWUgdGhlIHJ1biBsb29wIGlzIGZsdXNoZWQsIGNoZWNrIGZvciB0
eXBvcycsIHBlbmRpbmdRdWV1ZS5sZW5ndGggPT09IDApOwotfTsKLQotCi1mdW5jdGlvbiBhZGRD
aGFpbldhdGNoZXIob2JqLCBrZXlOYW1lLCBub2RlKSB7Ci0gIGlmICghb2JqIHx8ICgnb2JqZWN0
JyAhPT0gdHlwZW9mIG9iaikpIHsgcmV0dXJuOyB9IC8vIG5vdGhpbmcgdG8gZG8KLQotICB2YXIg
bSA9IG1ldGFGb3Iob2JqKSwgbm9kZXMgPSBtLmNoYWluV2F0Y2hlcnM7Ci0KLSAgaWYgKCFtLmhh
c093blByb3BlcnR5KCdjaGFpbldhdGNoZXJzJykpIHsKLSAgICBub2RlcyA9IG0uY2hhaW5XYXRj
aGVycyA9IHt9OwotICB9Ci0KLSAgaWYgKCFub2Rlc1trZXlOYW1lXSkgeyBub2Rlc1trZXlOYW1l
XSA9IFtdOyB9Ci0gIG5vZGVzW2tleU5hbWVdLnB1c2gobm9kZSk7Ci0gIHdhdGNoS2V5KG9iaiwg
a2V5TmFtZSk7Ci19Ci0KLXZhciByZW1vdmVDaGFpbldhdGNoZXIgPSBFbWJlci5yZW1vdmVDaGFp
bldhdGNoZXIgPSBmdW5jdGlvbihvYmosIGtleU5hbWUsIG5vZGUpIHsKLSAgaWYgKCFvYmogfHwg
J29iamVjdCcgIT09IHR5cGVvZiBvYmopIHsgcmV0dXJuOyB9IC8vIG5vdGhpbmcgdG8gZG8KLQot
ICB2YXIgbSA9IG1ldGFGb3Iob2JqLCBmYWxzZSk7Ci0gIGlmICghbS5oYXNPd25Qcm9wZXJ0eSgn
Y2hhaW5XYXRjaGVycycpKSB7IHJldHVybjsgfSAvLyBub3RoaW5nIHRvIGRvCi0KLSAgdmFyIG5v
ZGVzID0gbS5jaGFpbldhdGNoZXJzOwotCi0gIGlmIChub2Rlc1trZXlOYW1lXSkgewotICAgIG5v
ZGVzID0gbm9kZXNba2V5TmFtZV07Ci0gICAgZm9yICh2YXIgaSA9IDAsIGwgPSBub2Rlcy5sZW5n
dGg7IGkgPCBsOyBpKyspIHsKLSAgICAgIGlmIChub2Rlc1tpXSA9PT0gbm9kZSkgeyBub2Rlcy5z
cGxpY2UoaSwgMSk7IH0KLSAgICB9Ci0gIH0KLSAgdW53YXRjaEtleShvYmosIGtleU5hbWUpOwot
fTsKLQotLy8gQSBDaGFpbk5vZGUgd2F0Y2hlcyBhIHNpbmdsZSBrZXkgb24gYW4gb2JqZWN0LiBJ
ZiB5b3UgcHJvdmlkZSBhIHN0YXJ0aW5nCi0vLyB2YWx1ZSBmb3IgdGhlIGtleSB0aGVuIHRoZSBu
b2RlIHdvbid0IGFjdHVhbGx5IHdhdGNoIGl0LiBGb3IgYSByb290IG5vZGUKLS8vIHBhc3MgbnVs
bCBmb3IgcGFyZW50IGFuZCBrZXkgYW5kIG9iamVjdCBmb3IgdmFsdWUuCi12YXIgQ2hhaW5Ob2Rl
ID0gRW1iZXIuX0NoYWluTm9kZSA9IGZ1bmN0aW9uKHBhcmVudCwga2V5LCB2YWx1ZSkgewotICB0
aGlzLl9wYXJlbnQgPSBwYXJlbnQ7Ci0gIHRoaXMuX2tleSAgICA9IGtleTsKLQotICAvLyBfd2F0
Y2hpbmcgaXMgdHJ1ZSB3aGVuIGNhbGxpbmcgZ2V0KHRoaXMuX3BhcmVudCwgdGhpcy5fa2V5KSB3
aWxsCi0gIC8vIHJldHVybiB0aGUgdmFsdWUgb2YgdGhpcyBub2RlLgotICAvLwotICAvLyBJdCBp
cyBmYWxzZSBmb3IgdGhlIHJvb3Qgb2YgYSBjaGFpbiAoYmVjYXVzZSB3ZSBoYXZlIG5vIHBhcmVu
dCkKLSAgLy8gYW5kIGZvciBnbG9iYWwgcGF0aHMgKGJlY2F1c2UgdGhlIHBhcmVudCBub2RlIGlz
IHRoZSBvYmplY3Qgd2l0aAotICAvLyB0aGUgb2JzZXJ2ZXIgb24gaXQpCi0gIHRoaXMuX3dhdGNo
aW5nID0gdmFsdWU9PT11bmRlZmluZWQ7Ci0KLSAgdGhpcy5fdmFsdWUgID0gdmFsdWU7Ci0gIHRo
aXMuX3BhdGhzID0ge307Ci0gIGlmICh0aGlzLl93YXRjaGluZykgewotICAgIHRoaXMuX29iamVj
dCA9IHBhcmVudC52YWx1ZSgpOwotICAgIGlmICh0aGlzLl9vYmplY3QpIHsgYWRkQ2hhaW5XYXRj
aGVyKHRoaXMuX29iamVjdCwgdGhpcy5fa2V5LCB0aGlzKTsgfQotICB9Ci0KLSAgLy8gU3BlY2lh
bC1jYXNlOiB0aGUgRWFjaFByb3h5IHJlbGllcyBvbiBpbW1lZGlhdGUgZXZhbHVhdGlvbiB0bwot
ICAvLyBlc3RhYmxpc2ggaXRzIG9ic2VydmVycy4KLSAgLy8KLSAgLy8gVE9ETzogUmVwbGFjZSB0
aGlzIHdpdGggYW4gZWZmaWNpZW50IGNhbGxiYWNrIHRoYXQgdGhlIEVhY2hQcm94eQotICAvLyBj
YW4gaW1wbGVtZW50LgotICBpZiAodGhpcy5fcGFyZW50ICYmIHRoaXMuX3BhcmVudC5fa2V5ID09
PSAnQGVhY2gnKSB7Ci0gICAgdGhpcy52YWx1ZSgpOwotICB9Ci19OwotCi12YXIgQ2hhaW5Ob2Rl
UHJvdG90eXBlID0gQ2hhaW5Ob2RlLnByb3RvdHlwZTsKLQotZnVuY3Rpb24gbGF6eUdldChvYmos
IGtleSkgewotICBpZiAoIW9iaikgcmV0dXJuIHVuZGVmaW5lZDsKLQotICB2YXIgbWV0YSA9IG1l
dGFGb3Iob2JqLCBmYWxzZSk7Ci0gIC8vIGNoZWNrIGlmIG9iamVjdCBtZWFudCBvbmx5IHRvIGJl
IGEgcHJvdG90eXBlCi0gIGlmIChtZXRhLnByb3RvID09PSBvYmopIHJldHVybiB1bmRlZmluZWQ7
Ci0KLSAgaWYgKGtleSA9PT0gIkBlYWNoIikgcmV0dXJuIGdldChvYmosIGtleSk7Ci0KLSAgLy8g
aWYgYSBDUCBvbmx5IHJldHVybiBjYWNoZWQgdmFsdWUKLSAgdmFyIGRlc2MgPSBtZXRhLmRlc2Nz
W2tleV07Ci0gIGlmIChkZXNjICYmIGRlc2MuX2NhY2hlYWJsZSkgewotICAgIGlmIChrZXkgaW4g
bWV0YS5jYWNoZSkgewotICAgICAgcmV0dXJuIG1ldGEuY2FjaGVba2V5XTsKLSAgICB9IGVsc2Ug
ewotICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKLSAgICB9Ci0gIH0KLQotICByZXR1cm4gZ2V0KG9i
aiwga2V5KTsKLX0KLQotQ2hhaW5Ob2RlUHJvdG90eXBlLnZhbHVlID0gZnVuY3Rpb24oKSB7Ci0g
IGlmICh0aGlzLl92YWx1ZSA9PT0gdW5kZWZpbmVkICYmIHRoaXMuX3dhdGNoaW5nKSB7Ci0gICAg
dmFyIG9iaiA9IHRoaXMuX3BhcmVudC52YWx1ZSgpOwotICAgIHRoaXMuX3ZhbHVlID0gbGF6eUdl
dChvYmosIHRoaXMuX2tleSk7Ci0gIH0KLSAgcmV0dXJuIHRoaXMuX3ZhbHVlOwotfTsKLQotQ2hh
aW5Ob2RlUHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbigpIHsKLSAgaWYgKHRoaXMuX3dhdGNo
aW5nKSB7Ci0gICAgdmFyIG9iaiA9IHRoaXMuX29iamVjdDsKLSAgICBpZiAob2JqKSB7IHJlbW92
ZUNoYWluV2F0Y2hlcihvYmosIHRoaXMuX2tleSwgdGhpcyk7IH0KLSAgICB0aGlzLl93YXRjaGlu
ZyA9IGZhbHNlOyAvLyBzbyBmdXR1cmUgY2FsbHMgZG8gbm90aGluZwotICB9Ci19OwotCi0vLyBj
b3BpZXMgYSB0b3AgbGV2ZWwgb2JqZWN0IG9ubHkKLUNoYWluTm9kZVByb3RvdHlwZS5jb3B5ID0g
ZnVuY3Rpb24ob2JqKSB7Ci0gIHZhciByZXQgPSBuZXcgQ2hhaW5Ob2RlKG51bGwsIG51bGwsIG9i
aiksCi0gICAgICBwYXRocyA9IHRoaXMuX3BhdGhzLCBwYXRoOwotICBmb3IgKHBhdGggaW4gcGF0
aHMpIHsKLSAgICBpZiAocGF0aHNbcGF0aF0gPD0gMCkgeyBjb250aW51ZTsgfSAvLyB0aGlzIGNo
ZWNrIHdpbGwgYWxzbyBjYXRjaCBub24tbnVtYmVyIHZhbHMuCi0gICAgcmV0LmFkZChwYXRoKTsK
LSAgfQotICByZXR1cm4gcmV0OwotfTsKLQotLy8gY2FsbGVkIG9uIHRoZSByb290IG5vZGUgb2Yg
YSBjaGFpbiB0byBzZXR1cCB3YXRjaGVycyBvbiB0aGUgc3BlY2lmaWVkCi0vLyBwYXRoLgotQ2hh
aW5Ob2RlUHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uKHBhdGgpIHsKLSAgdmFyIG9iaiwgdHVwbGUs
IGtleSwgc3JjLCBwYXRoczsKLQotICBwYXRocyA9IHRoaXMuX3BhdGhzOwotICBwYXRoc1twYXRo
XSA9IChwYXRoc1twYXRoXSB8fCAwKSArIDE7Ci0KLSAgb2JqID0gdGhpcy52YWx1ZSgpOwotICB0
dXBsZSA9IG5vcm1hbGl6ZVR1cGxlKG9iaiwgcGF0aCk7Ci0KLSAgLy8gdGhlIHBhdGggd2FzIGEg
bG9jYWwgcGF0aAotICBpZiAodHVwbGVbMF0gJiYgdHVwbGVbMF0gPT09IG9iaikgewotICAgIHBh
dGggPSB0dXBsZVsxXTsKLSAgICBrZXkgID0gZmlyc3RLZXkocGF0aCk7Ci0gICAgcGF0aCA9IHBh
dGguc2xpY2Uoa2V5Lmxlbmd0aCsxKTsKLQotICAvLyBnbG9iYWwgcGF0aCwgYnV0IG9iamVjdCBk
b2VzIG5vdCBleGlzdCB5ZXQuCi0gIC8vIHB1dCBpbnRvIGEgcXVldWUgYW5kIHRyeSB0byBjb25u
ZWN0IGxhdGVyLgotICB9IGVsc2UgaWYgKCF0dXBsZVswXSkgewotICAgIHBlbmRpbmdRdWV1ZS5w
dXNoKFt0aGlzLCBwYXRoXSk7Ci0gICAgdHVwbGUubGVuZ3RoID0gMDsKLSAgICByZXR1cm47Ci0K
LSAgLy8gZ2xvYmFsIHBhdGgsIGFuZCBvYmplY3QgYWxyZWFkeSBleGlzdHMKLSAgfSBlbHNlIHsK
LSAgICBzcmMgID0gdHVwbGVbMF07Ci0gICAga2V5ICA9IHBhdGguc2xpY2UoMCwgMC0odHVwbGVb
MV0ubGVuZ3RoKzEpKTsKLSAgICBwYXRoID0gdHVwbGVbMV07Ci0gIH0KLQotICB0dXBsZS5sZW5n
dGggPSAwOwotICB0aGlzLmNoYWluKGtleSwgcGF0aCwgc3JjKTsKLX07Ci0KLS8vIGNhbGxlZCBv
biB0aGUgcm9vdCBub2RlIG9mIGEgY2hhaW4gdG8gdGVhcmRvd24gd2F0Y2hlciBvbiB0aGUgc3Bl
Y2lmaWVkCi0vLyBwYXRoCi1DaGFpbk5vZGVQcm90b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24ocGF0
aCkgewotICB2YXIgb2JqLCB0dXBsZSwga2V5LCBzcmMsIHBhdGhzOwotCi0gIHBhdGhzID0gdGhp
cy5fcGF0aHM7Ci0gIGlmIChwYXRoc1twYXRoXSA+IDApIHsgcGF0aHNbcGF0aF0tLTsgfQotCi0g
IG9iaiA9IHRoaXMudmFsdWUoKTsKLSAgdHVwbGUgPSBub3JtYWxpemVUdXBsZShvYmosIHBhdGgp
OwotICBpZiAodHVwbGVbMF0gPT09IG9iaikgewotICAgIHBhdGggPSB0dXBsZVsxXTsKLSAgICBr
ZXkgID0gZmlyc3RLZXkocGF0aCk7Ci0gICAgcGF0aCA9IHBhdGguc2xpY2Uoa2V5Lmxlbmd0aCsx
KTsKLSAgfSBlbHNlIHsKLSAgICBzcmMgID0gdHVwbGVbMF07Ci0gICAga2V5ICA9IHBhdGguc2xp
Y2UoMCwgMC0odHVwbGVbMV0ubGVuZ3RoKzEpKTsKLSAgICBwYXRoID0gdHVwbGVbMV07Ci0gIH0K
LQotICB0dXBsZS5sZW5ndGggPSAwOwotICB0aGlzLnVuY2hhaW4oa2V5LCBwYXRoKTsKLX07Ci0K
LUNoYWluTm9kZVByb3RvdHlwZS5jb3VudCA9IDA7Ci0KLUNoYWluTm9kZVByb3RvdHlwZS5jaGFp
biA9IGZ1bmN0aW9uKGtleSwgcGF0aCwgc3JjKSB7Ci0gIHZhciBjaGFpbnMgPSB0aGlzLl9jaGFp
bnMsIG5vZGU7Ci0gIGlmICghY2hhaW5zKSB7IGNoYWlucyA9IHRoaXMuX2NoYWlucyA9IHt9OyB9
Ci0KLSAgbm9kZSA9IGNoYWluc1trZXldOwotICBpZiAoIW5vZGUpIHsgbm9kZSA9IGNoYWluc1tr
ZXldID0gbmV3IENoYWluTm9kZSh0aGlzLCBrZXksIHNyYyk7IH0KLSAgbm9kZS5jb3VudCsrOyAv
LyBjb3VudCBjaGFpbnMuLi4KLQotICAvLyBjaGFpbiByZXN0IG9mIHBhdGggaWYgdGhlcmUgaXMg
b25lCi0gIGlmIChwYXRoICYmIHBhdGgubGVuZ3RoPjApIHsKLSAgICBrZXkgPSBmaXJzdEtleShw
YXRoKTsKLSAgICBwYXRoID0gcGF0aC5zbGljZShrZXkubGVuZ3RoKzEpOwotICAgIG5vZGUuY2hh
aW4oa2V5LCBwYXRoKTsgLy8gTk9URTogbm8gc3JjIG1lYW5zIGl0IHdpbGwgb2JzZXJ2ZSBjaGFu
Z2VzLi4uCi0gIH0KLX07Ci0KLUNoYWluTm9kZVByb3RvdHlwZS51bmNoYWluID0gZnVuY3Rpb24o
a2V5LCBwYXRoKSB7Ci0gIHZhciBjaGFpbnMgPSB0aGlzLl9jaGFpbnMsIG5vZGUgPSBjaGFpbnNb
a2V5XTsKLQotICAvLyB1bmNoYWluIHJlc3Qgb2YgcGF0aCBmaXJzdC4uLgotICBpZiAocGF0aCAm
JiBwYXRoLmxlbmd0aD4xKSB7Ci0gICAga2V5ICA9IGZpcnN0S2V5KHBhdGgpOwotICAgIHBhdGgg
PSBwYXRoLnNsaWNlKGtleS5sZW5ndGgrMSk7Ci0gICAgbm9kZS51bmNoYWluKGtleSwgcGF0aCk7
Ci0gIH0KLQotICAvLyBkZWxldGUgbm9kZSBpZiBuZWVkZWQuCi0gIG5vZGUuY291bnQtLTsKLSAg
aWYgKG5vZGUuY291bnQ8PTApIHsKLSAgICBkZWxldGUgY2hhaW5zW25vZGUuX2tleV07Ci0gICAg
bm9kZS5kZXN0cm95KCk7Ci0gIH0KLQotfTsKLQotQ2hhaW5Ob2RlUHJvdG90eXBlLndpbGxDaGFu
Z2UgPSBmdW5jdGlvbihldmVudHMpIHsKLSAgdmFyIGNoYWlucyA9IHRoaXMuX2NoYWluczsKLSAg
aWYgKGNoYWlucykgewotICAgIGZvcih2YXIga2V5IGluIGNoYWlucykgewotICAgICAgaWYgKCFj
aGFpbnMuaGFzT3duUHJvcGVydHkoa2V5KSkgeyBjb250aW51ZTsgfQotICAgICAgY2hhaW5zW2tl
eV0ud2lsbENoYW5nZShldmVudHMpOwotICAgIH0KLSAgfQotCi0gIGlmICh0aGlzLl9wYXJlbnQp
IHsgdGhpcy5fcGFyZW50LmNoYWluV2lsbENoYW5nZSh0aGlzLCB0aGlzLl9rZXksIDEsIGV2ZW50
cyk7IH0KLX07Ci0KLUNoYWluTm9kZVByb3RvdHlwZS5jaGFpbldpbGxDaGFuZ2UgPSBmdW5jdGlv
bihjaGFpbiwgcGF0aCwgZGVwdGgsIGV2ZW50cykgewotICBpZiAodGhpcy5fa2V5KSB7IHBhdGgg
PSB0aGlzLl9rZXkgKyAnLicgKyBwYXRoOyB9Ci0KLSAgaWYgKHRoaXMuX3BhcmVudCkgewotICAg
IHRoaXMuX3BhcmVudC5jaGFpbldpbGxDaGFuZ2UodGhpcywgcGF0aCwgZGVwdGgrMSwgZXZlbnRz
KTsKLSAgfSBlbHNlIHsKLSAgICBpZiAoZGVwdGggPiAxKSB7Ci0gICAgICBldmVudHMucHVzaCh0
aGlzLnZhbHVlKCksIHBhdGgpOwotICAgIH0KLSAgICBwYXRoID0gJ3RoaXMuJyArIHBhdGg7Ci0g
ICAgaWYgKHRoaXMuX3BhdGhzW3BhdGhdID4gMCkgewotICAgICAgZXZlbnRzLnB1c2godGhpcy52
YWx1ZSgpLCBwYXRoKTsKLSAgICB9Ci0gIH0KLX07Ci0KLUNoYWluTm9kZVByb3RvdHlwZS5jaGFp
bkRpZENoYW5nZSA9IGZ1bmN0aW9uKGNoYWluLCBwYXRoLCBkZXB0aCwgZXZlbnRzKSB7Ci0gIGlm
ICh0aGlzLl9rZXkpIHsgcGF0aCA9IHRoaXMuX2tleSArICcuJyArIHBhdGg7IH0KLSAgaWYgKHRo
aXMuX3BhcmVudCkgewotICAgIHRoaXMuX3BhcmVudC5jaGFpbkRpZENoYW5nZSh0aGlzLCBwYXRo
LCBkZXB0aCsxLCBldmVudHMpOwotICB9IGVsc2UgewotICAgIGlmIChkZXB0aCA+IDEpIHsKLSAg
ICAgIGV2ZW50cy5wdXNoKHRoaXMudmFsdWUoKSwgcGF0aCk7Ci0gICAgfQotICAgIHBhdGggPSAn
dGhpcy4nICsgcGF0aDsKLSAgICBpZiAodGhpcy5fcGF0aHNbcGF0aF0gPiAwKSB7Ci0gICAgICBl
dmVudHMucHVzaCh0aGlzLnZhbHVlKCksIHBhdGgpOwotICAgIH0KLSAgfQotfTsKLQotQ2hhaW5O
b2RlUHJvdG90eXBlLmRpZENoYW5nZSA9IGZ1bmN0aW9uKGV2ZW50cykgewotICAvLyBpbnZhbGlk
YXRlIG15IG93biB2YWx1ZSBmaXJzdC4KLSAgaWYgKHRoaXMuX3dhdGNoaW5nKSB7Ci0gICAgdmFy
IG9iaiA9IHRoaXMuX3BhcmVudC52YWx1ZSgpOwotICAgIGlmIChvYmogIT09IHRoaXMuX29iamVj
dCkgewotICAgICAgcmVtb3ZlQ2hhaW5XYXRjaGVyKHRoaXMuX29iamVjdCwgdGhpcy5fa2V5LCB0
aGlzKTsKLSAgICAgIHRoaXMuX29iamVjdCA9IG9iajsKLSAgICAgIGFkZENoYWluV2F0Y2hlcihv
YmosIHRoaXMuX2tleSwgdGhpcyk7Ci0gICAgfQotICAgIHRoaXMuX3ZhbHVlICA9IHVuZGVmaW5l
ZDsKLQotICAgIC8vIFNwZWNpYWwtY2FzZTogdGhlIEVhY2hQcm94eSByZWxpZXMgb24gaW1tZWRp
YXRlIGV2YWx1YXRpb24gdG8KLSAgICAvLyBlc3RhYmxpc2ggaXRzIG9ic2VydmVycy4KLSAgICBp
ZiAodGhpcy5fcGFyZW50ICYmIHRoaXMuX3BhcmVudC5fa2V5ID09PSAnQGVhY2gnKQotICAgICAg
dGhpcy52YWx1ZSgpOwotICB9Ci0KLSAgLy8gdGhlbiBub3RpZnkgY2hhaW5zLi4uCi0gIHZhciBj
aGFpbnMgPSB0aGlzLl9jaGFpbnM7Ci0gIGlmIChjaGFpbnMpIHsKLSAgICBmb3IodmFyIGtleSBp
biBjaGFpbnMpIHsKLSAgICAgIGlmICghY2hhaW5zLmhhc093blByb3BlcnR5KGtleSkpIHsgY29u
dGludWU7IH0KLSAgICAgIGNoYWluc1trZXldLmRpZENoYW5nZShldmVudHMpOwotICAgIH0KLSAg
fQotCi0gIC8vIGlmIG5vIGV2ZW50cyBhcmUgcGFzc2VkIGluIHRoZW4gd2Ugb25seSBjYXJlIGFi
b3V0IHRoZSBhYm92ZSB3aXJpbmcgdXBkYXRlCi0gIGlmIChldmVudHMgPT09IG51bGwpIHsgcmV0
dXJuOyB9Ci0KLSAgLy8gYW5kIGZpbmFsbHkgdGVsbCBwYXJlbnQgYWJvdXQgbXkgcGF0aCBjaGFu
Z2luZy4uLgotICBpZiAodGhpcy5fcGFyZW50KSB7IHRoaXMuX3BhcmVudC5jaGFpbkRpZENoYW5n
ZSh0aGlzLCB0aGlzLl9rZXksIDEsIGV2ZW50cyk7IH0KLX07Ci0KLUVtYmVyLmZpbmlzaENoYWlu
cyA9IGZ1bmN0aW9uKG9iaikgewotICB2YXIgbSA9IG1ldGFGb3Iob2JqLCBmYWxzZSksIGNoYWlu
cyA9IG0uY2hhaW5zOwotICBpZiAoY2hhaW5zKSB7Ci0gICAgaWYgKGNoYWlucy52YWx1ZSgpICE9
PSBvYmopIHsKLSAgICAgIG0uY2hhaW5zID0gY2hhaW5zID0gY2hhaW5zLmNvcHkob2JqKTsKLSAg
ICB9Ci0gICAgY2hhaW5zLmRpZENoYW5nZShudWxsKTsKLSAgfQotfTsKLQotfSkoKTsKLQotCi0K
LShmdW5jdGlvbigpIHsKLQotfSkoKTsKLQotCi0KLShmdW5jdGlvbigpIHsKLXZhciBtZXRhRm9y
ID0gRW1iZXIubWV0YSwgLy8gdXRpbHMuanMKLSAgICB0eXBlT2YgPSBFbWJlci50eXBlT2YsIC8v
IHV0aWxzLmpzCi0gICAgQ2hhaW5Ob2RlID0gRW1iZXIuX0NoYWluTm9kZTsgLy8gY2hhaW5zLmpz
Ci0KLS8vIGdldCB0aGUgY2hhaW5zIGZvciB0aGUgY3VycmVudCBvYmplY3QuIElmIHRoZSBjdXJy
ZW50IG9iamVjdCBoYXMKLS8vIGNoYWlucyBpbmhlcml0ZWQgZnJvbSB0aGUgcHJvdG8gdGhleSB3
aWxsIGJlIGNsb25lZCBhbmQgcmVjb25maWd1cmVkIGZvcgotLy8gdGhlIGN1cnJlbnQgb2JqZWN0
LgotZnVuY3Rpb24gY2hhaW5zRm9yKG9iaikgewotICB2YXIgbSA9IG1ldGFGb3Iob2JqKSwgcmV0
ID0gbS5jaGFpbnM7Ci0gIGlmICghcmV0KSB7Ci0gICAgcmV0ID0gbS5jaGFpbnMgPSBuZXcgQ2hh
aW5Ob2RlKG51bGwsIG51bGwsIG9iaik7Ci0gIH0gZWxzZSBpZiAocmV0LnZhbHVlKCkgIT09IG9i
aikgewotICAgIHJldCA9IG0uY2hhaW5zID0gcmV0LmNvcHkob2JqKTsKLSAgfQotICByZXR1cm4g
cmV0OwotfQotCi1FbWJlci53YXRjaFBhdGggPSBmdW5jdGlvbihvYmosIGtleVBhdGgpIHsKLSAg
Ly8gY2FuJ3Qgd2F0Y2ggbGVuZ3RoIG9uIEFycmF5IC0gaXQgaXMgc3BlY2lhbC4uLgotICBpZiAo
a2V5UGF0aCA9PT0gJ2xlbmd0aCcgJiYgdHlwZU9mKG9iaikgPT09ICdhcnJheScpIHsgcmV0dXJu
OyB9Ci0KLSAgdmFyIG0gPSBtZXRhRm9yKG9iaiksIHdhdGNoaW5nID0gbS53YXRjaGluZzsKLQot
ICBpZiAoIXdhdGNoaW5nW2tleVBhdGhdKSB7IC8vIGFjdGl2YXRlIHdhdGNoaW5nIGZpcnN0IHRp
bWUKLSAgICB3YXRjaGluZ1trZXlQYXRoXSA9IDE7Ci0gICAgY2hhaW5zRm9yKG9iaikuYWRkKGtl
eVBhdGgpOwotICB9IGVsc2UgewotICAgIHdhdGNoaW5nW2tleVBhdGhdID0gKHdhdGNoaW5nW2tl
eVBhdGhdIHx8IDApICsgMTsKLSAgfQotfTsKLQotRW1iZXIudW53YXRjaFBhdGggPSBmdW5jdGlv
bihvYmosIGtleVBhdGgpIHsKLSAgdmFyIG0gPSBtZXRhRm9yKG9iaiksIHdhdGNoaW5nID0gbS53
YXRjaGluZzsKLQotICBpZiAod2F0Y2hpbmdba2V5UGF0aF0gPT09IDEpIHsKLSAgICB3YXRjaGlu
Z1trZXlQYXRoXSA9IDA7Ci0gICAgY2hhaW5zRm9yKG9iaikucmVtb3ZlKGtleVBhdGgpOwotICB9
IGVsc2UgaWYgKHdhdGNoaW5nW2tleVBhdGhdID4gMSkgewotICAgIHdhdGNoaW5nW2tleVBhdGhd
LS07Ci0gIH0KLX07Ci19KSgpOwotCi0KLQotKGZ1bmN0aW9uKCkgewotLyoqCi1AbW9kdWxlIGVt
YmVyLW1ldGFsCi0qLwotCi12YXIgbWV0YUZvciA9IEVtYmVyLm1ldGEsIC8vIHV0aWxzLmpzCi0g
ICAgR1VJRF9LRVkgPSBFbWJlci5HVUlEX0tFWSwgLy8gdXRpbHMuanMKLSAgICBNRVRBX0tFWSA9
IEVtYmVyLk1FVEFfS0VZLCAvLyB1dGlscy5qcwotICAgIHJlbW92ZUNoYWluV2F0Y2hlciA9IEVt
YmVyLnJlbW92ZUNoYWluV2F0Y2hlciwKLSAgICB3YXRjaEtleSA9IEVtYmVyLndhdGNoS2V5LCAv
LyB3YXRjaF9rZXkuanMKLSAgICB1bndhdGNoS2V5ID0gRW1iZXIudW53YXRjaEtleSwKLSAgICB3
YXRjaFBhdGggPSBFbWJlci53YXRjaFBhdGgsIC8vIHdhdGNoX3BhdGguanMKLSAgICB1bndhdGNo
UGF0aCA9IEVtYmVyLnVud2F0Y2hQYXRoLAotICAgIHR5cGVPZiA9IEVtYmVyLnR5cGVPZiwgLy8g
dXRpbHMuanMKLSAgICBnZW5lcmF0ZUd1aWQgPSBFbWJlci5nZW5lcmF0ZUd1aWQsCi0gICAgSVNf
UEFUSCA9IC9bXC5cKl0vOwotCi0vLyByZXR1cm5zIHRydWUgaWYgdGhlIHBhc3NlZCBwYXRoIGlz
IGp1c3QgYSBrZXlOYW1lCi1mdW5jdGlvbiBpc0tleU5hbWUocGF0aCkgewotICByZXR1cm4gcGF0
aD09PScqJyB8fCAhSVNfUEFUSC50ZXN0KHBhdGgpOwotfQotCi0vKioKLSAgU3RhcnRzIHdhdGNo
aW5nIGEgcHJvcGVydHkgb24gYW4gb2JqZWN0LiBXaGVuZXZlciB0aGUgcHJvcGVydHkgY2hhbmdl
cywKLSAgaW52b2tlcyBgRW1iZXIucHJvcGVydHlXaWxsQ2hhbmdlYCBhbmQgYEVtYmVyLnByb3Bl
cnR5RGlkQ2hhbmdlYC4gVGhpcyBpcyB0aGUKLSAgcHJpbWl0aXZlIHVzZWQgYnkgb2JzZXJ2ZXJz
IGFuZCBkZXBlbmRlbnQga2V5czsgdXN1YWxseSB5b3Ugd2lsbCBuZXZlciBjYWxsCi0gIHRoaXMg
bWV0aG9kIGRpcmVjdGx5IGJ1dCBpbnN0ZWFkIHVzZSBoaWdoZXIgbGV2ZWwgbWV0aG9kcyBsaWtl
Ci0gIGBFbWJlci5hZGRPYnNlcnZlcigpYAotCi0gIEBwcml2YXRlCi0gIEBtZXRob2Qgd2F0Y2gK
LSAgQGZvciBFbWJlcgotICBAcGFyYW0gb2JqCi0gIEBwYXJhbSB7U3RyaW5nfSBrZXlOYW1lCi0q
LwotRW1iZXIud2F0Y2ggPSBmdW5jdGlvbihvYmosIF9rZXlQYXRoKSB7Ci0gIC8vIGNhbid0IHdh
dGNoIGxlbmd0aCBvbiBBcnJheSAtIGl0IGlzIHNwZWNpYWwuLi4KLSAgaWYgKF9rZXlQYXRoID09
PSAnbGVuZ3RoJyAmJiB0eXBlT2Yob2JqKSA9PT0gJ2FycmF5JykgeyByZXR1cm47IH0KLQotICBp
ZiAoaXNLZXlOYW1lKF9rZXlQYXRoKSkgewotICAgIHdhdGNoS2V5KG9iaiwgX2tleVBhdGgpOwot
ICB9IGVsc2UgewotICAgIHdhdGNoUGF0aChvYmosIF9rZXlQYXRoKTsKLSAgfQotfTsKLQotRW1i
ZXIuaXNXYXRjaGluZyA9IGZ1bmN0aW9uIGlzV2F0Y2hpbmcob2JqLCBrZXkpIHsKLSAgdmFyIG1l
dGEgPSBvYmpbTUVUQV9LRVldOwotICByZXR1cm4gKG1ldGEgJiYgbWV0YS53YXRjaGluZ1trZXld
KSA+IDA7Ci19OwotCi1FbWJlci53YXRjaC5mbHVzaFBlbmRpbmcgPSBFbWJlci5mbHVzaFBlbmRp
bmdDaGFpbnM7Ci0KLUVtYmVyLnVud2F0Y2ggPSBmdW5jdGlvbihvYmosIF9rZXlQYXRoKSB7Ci0g
IC8vIGNhbid0IHdhdGNoIGxlbmd0aCBvbiBBcnJheSAtIGl0IGlzIHNwZWNpYWwuLi4KLSAgaWYg
KF9rZXlQYXRoID09PSAnbGVuZ3RoJyAmJiB0eXBlT2Yob2JqKSA9PT0gJ2FycmF5JykgeyByZXR1
cm47IH0KLQotICBpZiAoaXNLZXlOYW1lKF9rZXlQYXRoKSkgewotICAgIHVud2F0Y2hLZXkob2Jq
LCBfa2V5UGF0aCk7Ci0gIH0gZWxzZSB7Ci0gICAgdW53YXRjaFBhdGgob2JqLCBfa2V5UGF0aCk7
Ci0gIH0KLX07Ci0KLS8qKgotICBDYWxsIG9uIGFuIG9iamVjdCB3aGVuIHlvdSBmaXJzdCBiZWdl
dCBpdCBmcm9tIGFub3RoZXIgb2JqZWN0LiBUaGlzIHdpbGwKLSAgc2V0dXAgYW55IGNoYWluZWQg
d2F0Y2hlcnMgb24gdGhlIG9iamVjdCBpbnN0YW5jZSBhcyBuZWVkZWQuIFRoaXMgbWV0aG9kIGlz
Ci0gIHNhZmUgdG8gY2FsbCBtdWx0aXBsZSB0aW1lcy4KLQotICBAcHJpdmF0ZQotICBAbWV0aG9k
IHJld2F0Y2gKLSAgQGZvciBFbWJlcgotICBAcGFyYW0gb2JqCi0qLwotRW1iZXIucmV3YXRjaCA9
IGZ1bmN0aW9uKG9iaikgewotICB2YXIgbSA9IG1ldGFGb3Iob2JqLCBmYWxzZSksIGNoYWlucyA9
IG0uY2hhaW5zOwotCi0gIC8vIG1ha2Ugc3VyZSB0aGUgb2JqZWN0IGhhcyBpdHMgb3duIGd1aWQu
Ci0gIGlmIChHVUlEX0tFWSBpbiBvYmogJiYgIW9iai5oYXNPd25Qcm9wZXJ0eShHVUlEX0tFWSkp
IHsKLSAgICBnZW5lcmF0ZUd1aWQob2JqKTsKLSAgfQotCi0gIC8vIG1ha2Ugc3VyZSBhbnkgY2hh
aW5lZCB3YXRjaGVycyB1cGRhdGUuCi0gIGlmIChjaGFpbnMgJiYgY2hhaW5zLnZhbHVlKCkgIT09
IG9iaikgewotICAgIG0uY2hhaW5zID0gY2hhaW5zLmNvcHkob2JqKTsKLSAgfQotfTsKLQotdmFy
IE5PREVfU1RBQ0sgPSBbXTsKLQotLyoqCi0gIFRlYXJzIGRvd24gdGhlIG1ldGEgb24gYW4gb2Jq
ZWN0IHNvIHRoYXQgaXQgY2FuIGJlIGdhcmJhZ2UgY29sbGVjdGVkLgotICBNdWx0aXBsZSBjYWxs
cyB3aWxsIGhhdmUgbm8gZWZmZWN0LgotCi0gIEBtZXRob2QgZGVzdHJveQotICBAZm9yIEVtYmVy
Ci0gIEBwYXJhbSB7T2JqZWN0fSBvYmogIHRoZSBvYmplY3QgdG8gZGVzdHJveQotICBAcmV0dXJu
IHt2b2lkfQotKi8KLUVtYmVyLmRlc3Ryb3kgPSBmdW5jdGlvbiAob2JqKSB7Ci0gIHZhciBtZXRh
ID0gb2JqW01FVEFfS0VZXSwgbm9kZSwgbm9kZXMsIGtleSwgbm9kZU9iamVjdDsKLSAgaWYgKG1l
dGEpIHsKLSAgICBvYmpbTUVUQV9LRVldID0gbnVsbDsKLSAgICAvLyByZW1vdmUgY2hhaW5XYXRj
aGVycyB0byByZW1vdmUgY2lyY3VsYXIgcmVmZXJlbmNlcyB0aGF0IHdvdWxkIHByZXZlbnQgR0MK
LSAgICBub2RlID0gbWV0YS5jaGFpbnM7Ci0gICAgaWYgKG5vZGUpIHsKLSAgICAgIE5PREVfU1RB
Q0sucHVzaChub2RlKTsKLSAgICAgIC8vIHByb2Nlc3MgdHJlZQotICAgICAgd2hpbGUgKE5PREVf
U1RBQ0subGVuZ3RoID4gMCkgewotICAgICAgICBub2RlID0gTk9ERV9TVEFDSy5wb3AoKTsKLSAg
ICAgICAgLy8gcHVzaCBjaGlsZHJlbgotICAgICAgICBub2RlcyA9IG5vZGUuX2NoYWluczsKLSAg
ICAgICAgaWYgKG5vZGVzKSB7Ci0gICAgICAgICAgZm9yIChrZXkgaW4gbm9kZXMpIHsKLSAgICAg
ICAgICAgIGlmIChub2Rlcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7Ci0gICAgICAgICAgICAgIE5P
REVfU1RBQ0sucHVzaChub2Rlc1trZXldKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICAgICAgLy8gcmVtb3ZlIGNoYWluV2F0Y2hlciBpbiBub2RlIG9iamVjdAot
ICAgICAgICBpZiAobm9kZS5fd2F0Y2hpbmcpIHsKLSAgICAgICAgICBub2RlT2JqZWN0ID0gbm9k
ZS5fb2JqZWN0OwotICAgICAgICAgIGlmIChub2RlT2JqZWN0KSB7Ci0gICAgICAgICAgICByZW1v
dmVDaGFpbldhdGNoZXIobm9kZU9iamVjdCwgbm9kZS5fa2V5LCBub2RlKTsKLSAgICAgICAgICB9
Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gIH0KLX07Ci0KLX0pKCk7Ci0KLQotCi0oZnVu
Y3Rpb24oKSB7Ci0vKioKLUBtb2R1bGUgZW1iZXItbWV0YWwKLSovCi0KLUVtYmVyLndhcm4oIlRo
ZSBDUF9ERUZBVUxUX0NBQ0hFQUJMRSBmbGFnIGhhcyBiZWVuIHJlbW92ZWQgYW5kIGNvbXB1dGVk
IHByb3BlcnRpZXMgYXJlIGFsd2F5cyBjYWNoZWQgYnkgZGVmYXVsdC4gVXNlIGB2b2xhdGlsZWAg
aWYgeW91IGRvbid0IHdhbnQgY2FjaGluZy4iLCBFbWJlci5FTlYuQ1BfREVGQVVMVF9DQUNIRUFC
TEUgIT09IGZhbHNlKTsKLQotCi12YXIgZ2V0ID0gRW1iZXIuZ2V0LAotICAgIHNldCA9IEVtYmVy
LnNldCwKLSAgICBtZXRhRm9yID0gRW1iZXIubWV0YSwKLSAgICBhX3NsaWNlID0gW10uc2xpY2Us
Ci0gICAgb19jcmVhdGUgPSBFbWJlci5jcmVhdGUsCi0gICAgTUVUQV9LRVkgPSBFbWJlci5NRVRB
X0tFWSwKLSAgICB3YXRjaCA9IEVtYmVyLndhdGNoLAotICAgIHVud2F0Y2ggPSBFbWJlci51bndh
dGNoOwotCi0KLS8vIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4KLS8vIERFUEVOREVOVCBLRVlTCi0vLwotCi0vLyBkYXRhIHN0cnVjdHVy
ZToKLS8vICBtZXRhLmRlcHMgPSB7Ci0vLyAgICdkZXBLZXknOiB7Ci0vLyAgICAgJ2tleU5hbWUn
OiBjb3VudCwKLS8vICAgfQotLy8gIH0KLQotLyoKLSAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIGEg
bWFwIG9mIHVuaXF1ZSBkZXBlbmRlbmNpZXMgZm9yIGEKLSAgZ2l2ZW4gb2JqZWN0IGFuZCBrZXku
Ci0qLwotZnVuY3Rpb24ga2V5c0ZvckRlcChkZXBzTWV0YSwgZGVwS2V5KSB7Ci0gIHZhciBrZXlz
ID0gZGVwc01ldGFbZGVwS2V5XTsKLSAgaWYgKCFrZXlzKSB7Ci0gICAgLy8gaWYgdGhlcmUgYXJl
IG5vIGRlcGVuZGVuY2llcyB5ZXQgZm9yIGEgdGhlIGdpdmVuIGtleQotICAgIC8vIGNyZWF0ZSBh
IG5ldyBlbXB0eSBsaXN0IG9mIGRlcGVuZGVuY2llcyBmb3IgdGhlIGtleQotICAgIGtleXMgPSBk
ZXBzTWV0YVtkZXBLZXldID0ge307Ci0gIH0gZWxzZSBpZiAoIWRlcHNNZXRhLmhhc093blByb3Bl
cnR5KGRlcEtleSkpIHsKLSAgICAvLyBvdGhlcndpc2UgaWYgdGhlIGRlcGVuZGVuY3kgbGlzdCBp
cyBpbmhlcml0ZWQgZnJvbQotICAgIC8vIGEgc3VwZXJjbGFzcywgY2xvbmUgdGhlIGhhc2gKLSAg
ICBrZXlzID0gZGVwc01ldGFbZGVwS2V5XSA9IG9fY3JlYXRlKGtleXMpOwotICB9Ci0gIHJldHVy
biBrZXlzOwotfQotCi1mdW5jdGlvbiBtZXRhRm9yRGVwcyhtZXRhKSB7Ci0gIHJldHVybiBrZXlz
Rm9yRGVwKG1ldGEsICdkZXBzJyk7Ci19Ci0KLWZ1bmN0aW9uIGFkZERlcGVuZGVudEtleXMoZGVz
Yywgb2JqLCBrZXlOYW1lLCBtZXRhKSB7Ci0gIC8vIHRoZSBkZXNjcmlwdG9yIGhhcyBhIGxpc3Qg
b2YgZGVwZW5kZW50IGtleXMsIHNvCi0gIC8vIGFkZCBhbGwgb2YgaXRzIGRlcGVuZGVudCBrZXlz
LgotICB2YXIgZGVwS2V5cyA9IGRlc2MuX2RlcGVuZGVudEtleXMsIGRlcHNNZXRhLCBpZHgsIGxl
biwgZGVwS2V5LCBrZXlzOwotICBpZiAoIWRlcEtleXMpIHJldHVybjsKLQotICBkZXBzTWV0YSA9
IG1ldGFGb3JEZXBzKG1ldGEpOwotCi0gIGZvcihpZHggPSAwLCBsZW4gPSBkZXBLZXlzLmxlbmd0
aDsgaWR4IDwgbGVuOyBpZHgrKykgewotICAgIGRlcEtleSA9IGRlcEtleXNbaWR4XTsKLSAgICAv
LyBMb29rdXAga2V5cyBtZXRhIGZvciBkZXBLZXkKLSAgICBrZXlzID0ga2V5c0ZvckRlcChkZXBz
TWV0YSwgZGVwS2V5KTsKLSAgICAvLyBJbmNyZW1lbnQgdGhlIG51bWJlciBvZiB0aW1lcyBkZXBL
ZXkgZGVwZW5kcyBvbiBrZXlOYW1lLgotICAgIGtleXNba2V5TmFtZV0gPSAoa2V5c1trZXlOYW1l
XSB8fCAwKSArIDE7Ci0gICAgLy8gV2F0Y2ggdGhlIGRlcEtleQotICAgIHdhdGNoKG9iaiwgZGVw
S2V5KTsKLSAgfQotfQotCi1mdW5jdGlvbiByZW1vdmVEZXBlbmRlbnRLZXlzKGRlc2MsIG9iaiwg
a2V5TmFtZSwgbWV0YSkgewotICAvLyB0aGUgZGVzY3JpcHRvciBoYXMgYSBsaXN0IG9mIGRlcGVu
ZGVudCBrZXlzLCBzbwotICAvLyBhZGQgYWxsIG9mIGl0cyBkZXBlbmRlbnQga2V5cy4KLSAgdmFy
IGRlcEtleXMgPSBkZXNjLl9kZXBlbmRlbnRLZXlzLCBkZXBzTWV0YSwgaWR4LCBsZW4sIGRlcEtl
eSwga2V5czsKLSAgaWYgKCFkZXBLZXlzKSByZXR1cm47Ci0KLSAgZGVwc01ldGEgPSBtZXRhRm9y
RGVwcyhtZXRhKTsKLQotICBmb3IoaWR4ID0gMCwgbGVuID0gZGVwS2V5cy5sZW5ndGg7IGlkeCA8
IGxlbjsgaWR4KyspIHsKLSAgICBkZXBLZXkgPSBkZXBLZXlzW2lkeF07Ci0gICAgLy8gTG9va3Vw
IGtleXMgbWV0YSBmb3IgZGVwS2V5Ci0gICAga2V5cyA9IGtleXNGb3JEZXAoZGVwc01ldGEsIGRl
cEtleSk7Ci0gICAgLy8gSW5jcmVtZW50IHRoZSBudW1iZXIgb2YgdGltZXMgZGVwS2V5IGRlcGVu
ZHMgb24ga2V5TmFtZS4KLSAgICBrZXlzW2tleU5hbWVdID0gKGtleXNba2V5TmFtZV0gfHwgMCkg
LSAxOwotICAgIC8vIFdhdGNoIHRoZSBkZXBLZXkKLSAgICB1bndhdGNoKG9iaiwgZGVwS2V5KTsK
LSAgfQotfQotCi0vLyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uCi0vLyBDT01QVVRFRCBQUk9QRVJUWQotLy8KLQotLyoqCi0gIEEgY29t
cHV0ZWQgcHJvcGVydHkgdHJhbnNmb3JtcyBhbiBvYmplY3RzIGZ1bmN0aW9uIGludG8gYSBwcm9w
ZXJ0eS4KLQotICBCeSBkZWZhdWx0IHRoZSBmdW5jdGlvbiBiYWNraW5nIHRoZSBjb21wdXRlZCBw
cm9wZXJ0eSB3aWxsIG9ubHkgYmUgY2FsbGVkCi0gIG9uY2UgYW5kIHRoZSByZXN1bHQgd2lsbCBi
ZSBjYWNoZWQuIFlvdSBjYW4gc3BlY2lmeSB2YXJpb3VzIHByb3BlcnRpZXMKLSAgdGhhdCB5b3Vy
IGNvbXB1dGVkIHByb3BlcnR5IGlzIGRlcGVuZGVudCBvbi4gVGhpcyB3aWxsIGZvcmNlIHRoZSBj
YWNoZWQKLSAgcmVzdWx0IHRvIGJlIHJlY29tcHV0ZWQgaWYgdGhlIGRlcGVuZGVuY2llcyBhcmUg
bW9kaWZpZWQuCi0KLSAgSW4gdGhlIGZvbGxvd2luZyBleGFtcGxlIHdlIGRlY2xhcmUgYSBjb21w
dXRlZCBwcm9wZXJ0eSAoYnkgY2FsbGluZwotICBgLnByb3BlcnR5KClgIG9uIHRoZSBmdWxsTmFt
ZSBmdW5jdGlvbikgYW5kIHNldHVwIHRoZSBwcm9wZXJ0aWVzCi0gIGRlcGVuZGVuY2llcyAoZGVw
ZW5kaW5nIG9uIGZpcnN0TmFtZSBhbmQgbGFzdE5hbWUpLiBUaGUgZnVsbE5hbWUgZnVuY3Rpb24K
LSAgd2lsbCBiZSBjYWxsZWQgb25jZSAocmVnYXJkbGVzcyBvZiBob3cgbWFueSB0aW1lcyBpdCBp
cyBhY2Nlc3NlZCkgYXMgbG9uZwotICBhcyBpdCdzIGRlcGVuZGVuY2llcyBoYXZlIG5vdCBiZWVu
IGNoYW5nZWQuIE9uY2UgZmlyc3ROYW1lIG9yIGxhc3ROYW1lIGFyZSB1cGRhdGVkCi0gIGFueSBm
dXR1cmUgY2FsbHMgKG9yIGFueXRoaW5nIGJvdW5kKSB0byBmdWxsTmFtZSB3aWxsIGluY29ycG9y
YXRlIHRoZSBuZXcKLSAgdmFsdWVzLgotCi0gIGBgYGphdmFzY3JpcHQKLSAgUGVyc29uID0gRW1i
ZXIuT2JqZWN0LmV4dGVuZCh7Ci0gICAgLy8gdGhlc2Ugd2lsbCBiZSBzdXBwbGllZCBieSBgY3Jl
YXRlYAotICAgIGZpcnN0TmFtZTogbnVsbCwKLSAgICBsYXN0TmFtZTogbnVsbCwKLQotICAgIGZ1
bGxOYW1lOiBmdW5jdGlvbigpIHsKLSAgICAgIHZhciBmaXJzdE5hbWUgPSB0aGlzLmdldCgnZmly
c3ROYW1lJyk7Ci0gICAgICB2YXIgbGFzdE5hbWUgPSB0aGlzLmdldCgnbGFzdE5hbWUnKTsKLQot
ICAgICByZXR1cm4gZmlyc3ROYW1lICsgJyAnICsgbGFzdE5hbWU7Ci0gICAgfS5wcm9wZXJ0eSgn
Zmlyc3ROYW1lJywgJ2xhc3ROYW1lJykKLSAgfSk7Ci0KLSAgdmFyIHRvbSA9IFBlcnNvbi5jcmVh
dGUoewotICAgIGZpcnN0TmFtZTogIlRvbSIsCi0gICAgbGFzdE5hbWU6ICJEYWxlIgotICB9KTsK
LQotICB0b20uZ2V0KCdmdWxsTmFtZScpIC8vICJUb20gRGFsZSIKLSAgYGBgCi0KLSAgWW91IGNh
biBhbHNvIGRlZmluZSB3aGF0IEVtYmVyIHNob3VsZCBkbyB3aGVuIHNldHRpbmcgYSBjb21wdXRl
ZCBwcm9wZXJ0eS4KLSAgSWYgeW91IHRyeSB0byBzZXQgYSBjb21wdXRlZCBwcm9wZXJ0eSwgaXQg
d2lsbCBiZSBpbnZva2VkIHdpdGggdGhlIGtleSBhbmQKLSAgdmFsdWUgeW91IHdhbnQgdG8gc2V0
IGl0IHRvLiBZb3UgY2FuIGFsc28gYWNjZXB0IHRoZSBwcmV2aW91cyB2YWx1ZSBhcyB0aGUKLSAg
dGhpcmQgcGFyYW1ldGVyLgotCi0gIGBgYGphdmFzY3JpcHQKLQotIFBlcnNvbiA9IEVtYmVyLk9i
amVjdC5leHRlbmQoewotICAgIC8vIHRoZXNlIHdpbGwgYmUgc3VwcGxpZWQgYnkgYGNyZWF0ZWAK
LSAgICBmaXJzdE5hbWU6IG51bGwsCi0gICAgbGFzdE5hbWU6IG51bGwsCi0KLSAgICBmdWxsTmFt
ZTogZnVuY3Rpb24oa2V5LCB2YWx1ZSwgb2xkVmFsdWUpIHsKLSAgICAgIC8vIGdldHRlcgotICAg
ICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEpIHsKLSAgICAgICAgdmFyIGZpcnN0TmFtZSA9
IHRoaXMuZ2V0KCdmaXJzdE5hbWUnKTsKLSAgICAgICAgdmFyIGxhc3ROYW1lID0gdGhpcy5nZXQo
J2xhc3ROYW1lJyk7Ci0KLSAgICAgICAgcmV0dXJuIGZpcnN0TmFtZSArICcgJyArIGxhc3ROYW1l
OwotCi0gICAgICAvLyBzZXR0ZXIKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIHZhciBuYW1lID0g
dmFsdWUuc3BsaXQoIiAiKTsKLQotICAgICAgICB0aGlzLnNldCgnZmlyc3ROYW1lJywgbmFtZVsw
XSk7Ci0gICAgICAgIHRoaXMuc2V0KCdsYXN0TmFtZScsIG5hbWVbMV0pOwotCi0gICAgICAgIHJl
dHVybiB2YWx1ZTsKLSAgICAgIH0KLSAgICB9LnByb3BlcnR5KCdmaXJzdE5hbWUnLCAnbGFzdE5h
bWUnKQotICB9KTsKLQotICB2YXIgcGVyc29uID0gUGVyc29uLmNyZWF0ZSgpOwotICBwZXJzb24u
c2V0KCdmdWxsTmFtZScsICJQZXRlciBXYWdlbmV0Iik7Ci0gIHBlcnNvbi5nZXQoJ2ZpcnN0TmFt
ZScpIC8vIFBldGVyCi0gIHBlcnNvbi5nZXQoJ2xhc3ROYW1lJykgLy8gV2FnZW5ldAotICBgYGAK
LQotICBAY2xhc3MgQ29tcHV0ZWRQcm9wZXJ0eQotICBAbmFtZXNwYWNlIEVtYmVyCi0gIEBleHRl
bmRzIEVtYmVyLkRlc2NyaXB0b3IKLSAgQGNvbnN0cnVjdG9yCi0qLwotZnVuY3Rpb24gQ29tcHV0
ZWRQcm9wZXJ0eShmdW5jLCBvcHRzKSB7Ci0gIHRoaXMuZnVuYyA9IGZ1bmM7Ci0KLSAgdGhpcy5f
Y2FjaGVhYmxlID0gKG9wdHMgJiYgb3B0cy5jYWNoZWFibGUgIT09IHVuZGVmaW5lZCkgPyBvcHRz
LmNhY2hlYWJsZSA6IHRydWU7Ci0gIHRoaXMuX2RlcGVuZGVudEtleXMgPSBvcHRzICYmIG9wdHMu
ZGVwZW5kZW50S2V5czsKLSAgdGhpcy5fcmVhZE9ubHkgPSBvcHRzICYmIChvcHRzLnJlYWRPbmx5
ICE9PSB1bmRlZmluZWQgfHwgISFvcHRzLnJlYWRPbmx5KTsKLX0KLQotRW1iZXIuQ29tcHV0ZWRQ
cm9wZXJ0eSA9IENvbXB1dGVkUHJvcGVydHk7Ci1Db21wdXRlZFByb3BlcnR5LnByb3RvdHlwZSA9
IG5ldyBFbWJlci5EZXNjcmlwdG9yKCk7Ci0KLXZhciBDb21wdXRlZFByb3BlcnR5UHJvdG90eXBl
ID0gQ29tcHV0ZWRQcm9wZXJ0eS5wcm90b3R5cGU7Ci0KLS8qKgotICBQcm9wZXJ0aWVzIGFyZSBj
YWNoZWFibGUgYnkgZGVmYXVsdC4gQ29tcHV0ZWQgcHJvcGVydHkgd2lsbCBhdXRvbWF0aWNhbGx5
Ci0gIGNhY2hlIHRoZSByZXR1cm4gdmFsdWUgb2YgeW91ciBmdW5jdGlvbiB1bnRpbCBvbmUgb2Yg
dGhlIGRlcGVuZGVudCBrZXlzIGNoYW5nZXMuCi0KLSAgQ2FsbCBgdm9sYXRpbGUoKWAgdG8gc2V0
IGl0IGludG8gbm9uLWNhY2hlZCBtb2RlLiBXaGVuIGluIHRoaXMgbW9kZQotICB0aGUgY29tcHV0
ZWQgcHJvcGVydHkgd2lsbCBub3QgYXV0b21hdGljYWxseSBjYWNoZSB0aGUgcmV0dXJuIHZhbHVl
LgotCi0gIEhvd2V2ZXIsIGlmIGEgcHJvcGVydHkgaXMgcHJvcGVybHkgb2JzZXJ2YWJsZSwgdGhl
cmUgaXMgbm8gcmVhc29uIHRvIGRpc2FibGUKLSAgY2FjaGluZy4KLQotICBAbWV0aG9kIGNhY2hl
YWJsZQotICBAcGFyYW0ge0Jvb2xlYW59IGFGbGFnIG9wdGlvbmFsIHNldCB0byBgZmFsc2VgIHRv
IGRpc2FibGUgY2FjaGluZwotICBAcmV0dXJuIHtFbWJlci5Db21wdXRlZFByb3BlcnR5fSB0aGlz
Ci0gIEBjaGFpbmFibGUKLSovCi1Db21wdXRlZFByb3BlcnR5UHJvdG90eXBlLmNhY2hlYWJsZSA9
IGZ1bmN0aW9uKGFGbGFnKSB7Ci0gIHRoaXMuX2NhY2hlYWJsZSA9IGFGbGFnICE9PSBmYWxzZTsK
LSAgcmV0dXJuIHRoaXM7Ci19OwotCi0vKioKLSAgQ2FsbCBvbiBhIGNvbXB1dGVkIHByb3BlcnR5
IHRvIHNldCBpdCBpbnRvIG5vbi1jYWNoZWQgbW9kZS4gV2hlbiBpbiB0aGlzCi0gIG1vZGUgdGhl
IGNvbXB1dGVkIHByb3BlcnR5IHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgY2FjaGUgdGhlIHJldHVy
biB2YWx1ZS4KLQotICBgYGBqYXZhc2NyaXB0Ci0gIE15QXBwLm91dHNpZGVTZXJ2aWNlID0gRW1i
ZXIuT2JqZWN0LmV4dGVuZCh7Ci0gICAgdmFsdWU6IGZ1bmN0aW9uKCkgewotICAgICAgcmV0dXJu
IE91dHNpZGVTZXJ2aWNlLmdldFZhbHVlKCk7Ci0gICAgfS5wcm9wZXJ0eSgpLnZvbGF0aWxlKCkK
LSAgfSkuY3JlYXRlKCk7Ci0gIGBgYAotCi0gIEBtZXRob2Qgdm9sYXRpbGUKLSAgQHJldHVybiB7
RW1iZXIuQ29tcHV0ZWRQcm9wZXJ0eX0gdGhpcwotICBAY2hhaW5hYmxlCi0qLwotQ29tcHV0ZWRQ
cm9wZXJ0eVByb3RvdHlwZS52b2xhdGlsZSA9IGZ1bmN0aW9uKCkgewotICByZXR1cm4gdGhpcy5j
YWNoZWFibGUoZmFsc2UpOwotfTsKLQotLyoqCi0gIENhbGwgb24gYSBjb21wdXRlZCBwcm9wZXJ0
eSB0byBzZXQgaXQgaW50byByZWFkLW9ubHkgbW9kZS4gV2hlbiBpbiB0aGlzCi0gIG1vZGUgdGhl
IGNvbXB1dGVkIHByb3BlcnR5IHdpbGwgdGhyb3cgYW4gZXJyb3Igd2hlbiBzZXQuCi0KLSAgYGBg
amF2YXNjcmlwdAotICBNeUFwcC5QZXJzb24gPSBFbWJlci5PYmplY3QuZXh0ZW5kKHsKLSAgICBn
dWlkOiBmdW5jdGlvbigpIHsKLSAgICAgIHJldHVybiAnZ3VpZC1ndWlkLWd1aWQnOwotICAgIH0u
cHJvcGVydHkoKS5yZWFkT25seSgpCi0gIH0pOwotCi0gIE15QXBwLnBlcnNvbiA9IE15QXBwLlBl
cnNvbi5jcmVhdGUoKTsKLQotICBNeUFwcC5wZXJzb24uc2V0KCdndWlkJywgJ25ldy1ndWlkJyk7
IC8vIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uCi0gIGBgYAotCi0gIEBtZXRob2QgcmVhZE9ubHkK
LSAgQHJldHVybiB7RW1iZXIuQ29tcHV0ZWRQcm9wZXJ0eX0gdGhpcwotICBAY2hhaW5hYmxlCi0q
LwotQ29tcHV0ZWRQcm9wZXJ0eVByb3RvdHlwZS5yZWFkT25seSA9IGZ1bmN0aW9uKHJlYWRPbmx5
KSB7Ci0gIHRoaXMuX3JlYWRPbmx5ID0gcmVhZE9ubHkgPT09IHVuZGVmaW5lZCB8fCAhIXJlYWRP
bmx5OwotICByZXR1cm4gdGhpczsKLX07Ci0KLS8qKgotICBTZXRzIHRoZSBkZXBlbmRlbnQga2V5
cyBvbiB0aGlzIGNvbXB1dGVkIHByb3BlcnR5LiBQYXNzIGFueSBudW1iZXIgb2YKLSAgYXJndW1l
bnRzIGNvbnRhaW5pbmcga2V5IHBhdGhzIHRoYXQgdGhpcyBjb21wdXRlZCBwcm9wZXJ0eSBkZXBl
bmRzIG9uLgotCi0gIGBgYGphdmFzY3JpcHQKLSAgTXlBcHAuUHJlc2lkZW50ID0gRW1iZXIuT2Jq
ZWN0LmV4dGVuZCh7Ci0gICAgZnVsbE5hbWU6IEVtYmVyLmNvbXB1dGVkKGZ1bmN0aW9uKCkgewot
ICAgICAgcmV0dXJuIHRoaXMuZ2V0KCdmaXJzdE5hbWUnKSArICcgJyArIHRoaXMuZ2V0KCdsYXN0
TmFtZScpOwotCi0gICAgICAvLyBUZWxsIEVtYmVyIHRoYXQgdGhpcyBjb21wdXRlZCBwcm9wZXJ0
eSBkZXBlbmRzIG9uIGZpcnN0TmFtZQotICAgICAgLy8gYW5kIGxhc3ROYW1lCi0gICAgfSkucHJv
cGVydHkoJ2ZpcnN0TmFtZScsICdsYXN0TmFtZScpCi0gIH0pOwotCi0gIE15QXBwLnByZXNpZGVu
dCA9IE15QXBwLlByZXNpZGVudC5jcmVhdGUoewotICAgIGZpcnN0TmFtZTogJ0JhcmFjaycsCi0g
ICAgbGFzdE5hbWU6ICdPYmFtYScsCi0gIH0pOwotICBNeUFwcC5wcmVzaWRlbnQuZ2V0KCdmdWxs
TmFtZScpOyAvLyBCYXJhY2sgT2JhbWEKLSAgYGBgCi0KLSAgQG1ldGhvZCBwcm9wZXJ0eQotICBA
cGFyYW0ge1N0cmluZ30gcGF0aCogemVybyBvciBtb3JlIHByb3BlcnR5IHBhdGhzCi0gIEByZXR1
cm4ge0VtYmVyLkNvbXB1dGVkUHJvcGVydHl9IHRoaXMKLSAgQGNoYWluYWJsZQotKi8KLUNvbXB1
dGVkUHJvcGVydHlQcm90b3R5cGUucHJvcGVydHkgPSBmdW5jdGlvbigpIHsKLSAgdmFyIGFyZ3M7
Ci0KLSAgCi0gICAgYXJncyA9IGFfc2xpY2UuY2FsbChhcmd1bWVudHMpOwotICAKLQotICB0aGlz
Ll9kZXBlbmRlbnRLZXlzID0gYXJnczsKLSAgcmV0dXJuIHRoaXM7Ci19OwotCi0vKioKLSAgSW4g
c29tZSBjYXNlcywgeW91IG1heSB3YW50IHRvIGFubm90YXRlIGNvbXB1dGVkIHByb3BlcnRpZXMg
d2l0aCBhZGRpdGlvbmFsCi0gIG1ldGFkYXRhIGFib3V0IGhvdyB0aGV5IGZ1bmN0aW9uIG9yIHdo
YXQgdmFsdWVzIHRoZXkgb3BlcmF0ZSBvbi4gRm9yIGV4YW1wbGUsCi0gIGNvbXB1dGVkIHByb3Bl
cnR5IGZ1bmN0aW9ucyBtYXkgY2xvc2Ugb3ZlciB2YXJpYWJsZXMgdGhhdCBhcmUgdGhlbiBubyBs
b25nZXIKLSAgYXZhaWxhYmxlIGZvciBpbnRyb3NwZWN0aW9uLgotCi0gIFlvdSBjYW4gcGFzcyBh
IGhhc2ggb2YgdGhlc2UgdmFsdWVzIHRvIGEgY29tcHV0ZWQgcHJvcGVydHkgbGlrZSB0aGlzOgot
Ci0gIGBgYAotICBwZXJzb246IGZ1bmN0aW9uKCkgewotICAgIHZhciBwZXJzb25JZCA9IHRoaXMu
Z2V0KCdwZXJzb25JZCcpOwotICAgIHJldHVybiBBcHAuUGVyc29uLmNyZWF0ZSh7IGlkOiBwZXJz
b25JZCB9KTsKLSAgfS5wcm9wZXJ0eSgpLm1ldGEoeyB0eXBlOiBBcHAuUGVyc29uIH0pCi0gIGBg
YAotCi0gIFRoZSBoYXNoIHRoYXQgeW91IHBhc3MgdG8gdGhlIGBtZXRhKClgIGZ1bmN0aW9uIHdp
bGwgYmUgc2F2ZWQgb24gdGhlCi0gIGNvbXB1dGVkIHByb3BlcnR5IGRlc2NyaXB0b3IgdW5kZXIg
dGhlIGBfbWV0YWAga2V5LiBFbWJlciBydW50aW1lCi0gIGV4cG9zZXMgYSBwdWJsaWMgQVBJIGZv
ciByZXRyaWV2aW5nIHRoZXNlIHZhbHVlcyBmcm9tIGNsYXNzZXMsCi0gIHZpYSB0aGUgYG1ldGFG
b3JQcm9wZXJ0eSgpYCBmdW5jdGlvbi4KLQotICBAbWV0aG9kIG1ldGEKLSAgQHBhcmFtIHtIYXNo
fSBtZXRhCi0gIEBjaGFpbmFibGUKLSovCi0KLUNvbXB1dGVkUHJvcGVydHlQcm90b3R5cGUubWV0
YSA9IGZ1bmN0aW9uKG1ldGEpIHsKLSAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHsKLSAg
ICByZXR1cm4gdGhpcy5fbWV0YSB8fCB7fTsKLSAgfSBlbHNlIHsKLSAgICB0aGlzLl9tZXRhID0g
bWV0YTsKLSAgICByZXR1cm4gdGhpczsKLSAgfQotfTsKLQotLyogaW1wbCBkZXNjcmlwdG9yIEFQ
SSAqLwotQ29tcHV0ZWRQcm9wZXJ0eVByb3RvdHlwZS5kaWRDaGFuZ2UgPSBmdW5jdGlvbihvYmos
IGtleU5hbWUpIHsKLSAgLy8gX3N1c3BlbmRlZCBpcyBzZXQgdmlhIGEgQ1Auc2V0IHRvIGVuc3Vy
ZSB3ZSBkb24ndCBjbGVhcgotICAvLyB0aGUgY2FjaGVkIHZhbHVlIHNldCBieSB0aGUgc2V0dGVy
Ci0gIGlmICh0aGlzLl9jYWNoZWFibGUgJiYgdGhpcy5fc3VzcGVuZGVkICE9PSBvYmopIHsKLSAg
ICB2YXIgbWV0YSA9IG1ldGFGb3Iob2JqKTsKLSAgICBpZiAoa2V5TmFtZSBpbiBtZXRhLmNhY2hl
KSB7Ci0gICAgICBkZWxldGUgbWV0YS5jYWNoZVtrZXlOYW1lXTsKLSAgICAgIHJlbW92ZURlcGVu
ZGVudEtleXModGhpcywgb2JqLCBrZXlOYW1lLCBtZXRhKTsKLSAgICB9Ci0gIH0KLX07Ci0KLWZ1
bmN0aW9uIGZpbmlzaENoYWlucyhjaGFpbk5vZGVzKQotewotICBmb3IgKHZhciBpPTAsIGw9Y2hh
aW5Ob2Rlcy5sZW5ndGg7IGk8bDsgaSsrKSB7Ci0gICAgY2hhaW5Ob2Rlc1tpXS5kaWRDaGFuZ2Uo
bnVsbCk7Ci0gIH0KLX0KLQotLyoqCi0gIEFjY2VzcyB0aGUgdmFsdWUgb2YgdGhlIGZ1bmN0aW9u
IGJhY2tpbmcgdGhlIGNvbXB1dGVkIHByb3BlcnR5LgotICBJZiB0aGlzIHByb3BlcnR5IGhhcyBh
bHJlYWR5IGJlZW4gY2FjaGVkLCByZXR1cm4gdGhlIGNhY2hlZCByZXN1bHQuCi0gIE90aGVyd2lz
ZSwgY2FsbCB0aGUgZnVuY3Rpb24gcGFzc2luZyB0aGUgcHJvcGVydHkgbmFtZSBhcyBhbiBhcmd1
bWVudC4KLQotICBgYGBqYXZhc2NyaXB0Ci0gIFBlcnNvbiA9IEVtYmVyLk9iamVjdC5leHRlbmQo
ewotICAgIGZ1bGxOYW1lOiBmdW5jdGlvbihrZXlOYW1lKSB7Ci0gICAgICAvLyB0aGUga2V5TmFt
ZSBwYXJhbWV0ZXIgaXMgJ2Z1bGxOYW1lJyBpbiB0aGlzIGNhc2UuCi0KLSAgICAgIHJldHVybiB0
aGlzLmdldCgnZmlyc3ROYW1lJykgKyAnICcgKyB0aGlzLmdldCgnbGFzdE5hbWUnKTsKLSAgICB9
LnByb3BlcnR5KCdmaXJzdE5hbWUnLCAnbGFzdE5hbWUnKQotICB9KTsKLQotCi0gIHZhciB0b20g
PSBQZXJzb24uY3JlYXRlKHsKLSAgICBmaXJzdE5hbWU6ICJUb20iLAotICAgIGxhc3ROYW1lOiAi
RGFsZSIKLSAgfSk7Ci0KLSAgdG9tLmdldCgnZnVsbE5hbWUnKSAvLyAiVG9tIERhbGUiCi0gIGBg
YAotCi0gIEBtZXRob2QgZ2V0Ci0gIEBwYXJhbSB7U3RyaW5nfSBrZXlOYW1lIFRoZSBrZXkgYmVp
bmcgYWNjZXNzZWQuCi0gIEByZXR1cm4ge09iamVjdH0gVGhlIHJldHVybiB2YWx1ZSBvZiB0aGUg
ZnVuY3Rpb24gYmFja2luZyB0aGUgQ1AuCi0qLwotQ29tcHV0ZWRQcm9wZXJ0eVByb3RvdHlwZS5n
ZXQgPSBmdW5jdGlvbihvYmosIGtleU5hbWUpIHsKLSAgdmFyIHJldCwgY2FjaGUsIG1ldGEsIGNo
YWluTm9kZXM7Ci0gIGlmICh0aGlzLl9jYWNoZWFibGUpIHsKLSAgICBtZXRhID0gbWV0YUZvcihv
YmopOwotICAgIGNhY2hlID0gbWV0YS5jYWNoZTsKLSAgICBpZiAoa2V5TmFtZSBpbiBjYWNoZSkg
eyByZXR1cm4gY2FjaGVba2V5TmFtZV07IH0KLSAgICByZXQgPSBjYWNoZVtrZXlOYW1lXSA9IHRo
aXMuZnVuYy5jYWxsKG9iaiwga2V5TmFtZSk7Ci0gICAgY2hhaW5Ob2RlcyA9IG1ldGEuY2hhaW5X
YXRjaGVycyAmJiBtZXRhLmNoYWluV2F0Y2hlcnNba2V5TmFtZV07Ci0gICAgaWYgKGNoYWluTm9k
ZXMpIHsgZmluaXNoQ2hhaW5zKGNoYWluTm9kZXMpOyB9Ci0gICAgYWRkRGVwZW5kZW50S2V5cyh0
aGlzLCBvYmosIGtleU5hbWUsIG1ldGEpOwotICB9IGVsc2UgewotICAgIHJldCA9IHRoaXMuZnVu
Yy5jYWxsKG9iaiwga2V5TmFtZSk7Ci0gIH0KLSAgcmV0dXJuIHJldDsKLX07Ci0KLS8qKgotICBT
ZXQgdGhlIHZhbHVlIG9mIGEgY29tcHV0ZWQgcHJvcGVydHkuIElmIHRoZSBmdW5jdGlvbiB0aGF0
IGJhY2tzIHlvdXIKLSAgY29tcHV0ZWQgcHJvcGVydHkgZG9lcyBub3QgYWNjZXB0IGFyZ3VtZW50
cyB0aGVuIHRoZSBkZWZhdWx0IGFjdGlvbiBmb3IKLSAgc2V0dGluZyB3b3VsZCBiZSB0byBkZWZp
bmUgdGhlIHByb3BlcnR5IG9uIHRoZSBjdXJyZW50IG9iamVjdCwgYW5kIHNldAotICB0aGUgdmFs
dWUgb2YgdGhlIHByb3BlcnR5IHRvIHRoZSB2YWx1ZSBiZWluZyBzZXQuCi0KLSAgR2VuZXJhbGx5
IHNwZWFraW5nIGlmIHlvdSBpbnRlbmQgZm9yIHlvdXIgY29tcHV0ZWQgcHJvcGVydHkgdG8gYmUg
c2V0Ci0gIHlvdXIgYmFja2luZyBmdW5jdGlvbiBzaG91bGQgYWNjZXB0IGVpdGhlciB0d28gb3Ig
dGhyZWUgYXJndW1lbnRzLgotCi0gIEBtZXRob2Qgc2V0Ci0gIEBwYXJhbSB7U3RyaW5nfSBrZXlO
YW1lIFRoZSBrZXkgYmVpbmcgYWNjZXNzZWQuCi0gIEBwYXJhbSB7T2JqZWN0fSBuZXdWYWx1ZSBU
aGUgbmV3IHZhbHVlIGJlaW5nIGFzc2lnbmVkLgotICBAcGFyYW0ge1N0cmluZ30gb2xkVmFsdWUg
VGhlIG9sZCB2YWx1ZSBiZWluZyByZXBsYWNlZC4KLSAgQHJldHVybiB7T2JqZWN0fSBUaGUgcmV0
dXJuIHZhbHVlIG9mIHRoZSBmdW5jdGlvbiBiYWNraW5nIHRoZSBDUC4KLSovCi1Db21wdXRlZFBy
b3BlcnR5UHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uKG9iaiwga2V5TmFtZSwgdmFsdWUpIHsKLSAg
dmFyIGNhY2hlYWJsZSA9IHRoaXMuX2NhY2hlYWJsZSwKLSAgICAgIGZ1bmMgPSB0aGlzLmZ1bmMs
Ci0gICAgICBtZXRhID0gbWV0YUZvcihvYmosIGNhY2hlYWJsZSksCi0gICAgICB3YXRjaGVkID0g
bWV0YS53YXRjaGluZ1trZXlOYW1lXSwKLSAgICAgIG9sZFN1c3BlbmRlZCA9IHRoaXMuX3N1c3Bl
bmRlZCwKLSAgICAgIGhhZENhY2hlZFZhbHVlID0gZmFsc2UsCi0gICAgICBjYWNoZSA9IG1ldGEu
Y2FjaGUsCi0gICAgICBmdW5jQXJnTGVuZ3RoLCBjYWNoZWRWYWx1ZSwgcmV0OwotCi0gIGlmICh0
aGlzLl9yZWFkT25seSkgewotICAgIHRocm93IG5ldyBFbWJlci5FcnJvcignQ2Fubm90IFNldDog
JyArIGtleU5hbWUgKyAnIG9uOiAnICsgb2JqLnRvU3RyaW5nKCkgKTsKLSAgfQotCi0gIHRoaXMu
X3N1c3BlbmRlZCA9IG9iajsKLQotICB0cnkgewotCi0gICAgaWYgKGNhY2hlYWJsZSAmJiBjYWNo
ZS5oYXNPd25Qcm9wZXJ0eShrZXlOYW1lKSkgewotICAgICAgY2FjaGVkVmFsdWUgPSBjYWNoZVtr
ZXlOYW1lXTsKLSAgICAgIGhhZENhY2hlZFZhbHVlID0gdHJ1ZTsKLSAgICB9Ci0KLSAgICAvLyBD
aGVjayBpZiB0aGUgQ1AgaGFzIGJlZW4gd3JhcHBlZC4gSWYgaWYgaGFzLCB1c2UgdGhlCi0gICAg
Ly8gbGVuZ3RoIGZyb20gdGhlIHdyYXBwZWQgZnVuY3Rpb24uCi0gICAgZnVuY0FyZ0xlbmd0aCA9
IChmdW5jLndyYXBwZWRGdW5jdGlvbiA/IGZ1bmMud3JhcHBlZEZ1bmN0aW9uLmxlbmd0aCA6IGZ1
bmMubGVuZ3RoKTsKLQotICAgIC8vIEZvciBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eSB3aXRoIGNv
bXB1dGVkIHByb3BlcnRpZXMKLSAgICAvLyB0aGF0IGNoZWNrIGZvciBhcmd1bWVudHMubGVuZ3Ro
ID09PSAyIHRvIGRldGVybWluZSBpZgotICAgIC8vIHRoZXkgYXJlIGJlaW5nIGdldCBvciBzZXQs
IG9ubHkgcGFzcyB0aGUgb2xkIGNhY2hlZAotICAgIC8vIHZhbHVlIGlmIHRoZSBjb21wdXRlZCBw
cm9wZXJ0eSBvcHRzIGludG8gYSB0aGlyZAotICAgIC8vIGFyZ3VtZW50LgotICAgIGlmIChmdW5j
QXJnTGVuZ3RoID09PSAzKSB7Ci0gICAgICByZXQgPSBmdW5jLmNhbGwob2JqLCBrZXlOYW1lLCB2
YWx1ZSwgY2FjaGVkVmFsdWUpOwotICAgIH0gZWxzZSBpZiAoZnVuY0FyZ0xlbmd0aCA9PT0gMikg
ewotICAgICAgcmV0ID0gZnVuYy5jYWxsKG9iaiwga2V5TmFtZSwgdmFsdWUpOwotICAgIH0gZWxz
ZSB7Ci0gICAgICBFbWJlci5kZWZpbmVQcm9wZXJ0eShvYmosIGtleU5hbWUsIG51bGwsIGNhY2hl
ZFZhbHVlKTsKLSAgICAgIEVtYmVyLnNldChvYmosIGtleU5hbWUsIHZhbHVlKTsKLSAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpZiAoaGFkQ2FjaGVkVmFsdWUgJiYgY2FjaGVkVmFsdWUgPT09
IHJldCkgeyByZXR1cm47IH0KLQotICAgIGlmICh3YXRjaGVkKSB7IEVtYmVyLnByb3BlcnR5V2ls
bENoYW5nZShvYmosIGtleU5hbWUpOyB9Ci0KLSAgICBpZiAoaGFkQ2FjaGVkVmFsdWUpIHsKLSAg
ICAgIGRlbGV0ZSBjYWNoZVtrZXlOYW1lXTsKLSAgICB9Ci0KLSAgICBpZiAoY2FjaGVhYmxlKSB7
Ci0gICAgICBpZiAoIWhhZENhY2hlZFZhbHVlKSB7Ci0gICAgICAgIGFkZERlcGVuZGVudEtleXMo
dGhpcywgb2JqLCBrZXlOYW1lLCBtZXRhKTsKLSAgICAgIH0KLSAgICAgIGNhY2hlW2tleU5hbWVd
ID0gcmV0OwotICAgIH0KLQotICAgIGlmICh3YXRjaGVkKSB7IEVtYmVyLnByb3BlcnR5RGlkQ2hh
bmdlKG9iaiwga2V5TmFtZSk7IH0KLSAgfSBmaW5hbGx5IHsKLSAgICB0aGlzLl9zdXNwZW5kZWQg
PSBvbGRTdXNwZW5kZWQ7Ci0gIH0KLSAgcmV0dXJuIHJldDsKLX07Ci0KLS8qIGNhbGxlZCBiZWZv
cmUgcHJvcGVydHkgaXMgb3ZlcnJpZGRlbiAqLwotQ29tcHV0ZWRQcm9wZXJ0eVByb3RvdHlwZS50
ZWFyZG93biA9IGZ1bmN0aW9uKG9iaiwga2V5TmFtZSkgewotICB2YXIgbWV0YSA9IG1ldGFGb3Io
b2JqKTsKLQotICBpZiAoa2V5TmFtZSBpbiBtZXRhLmNhY2hlKSB7Ci0gICAgcmVtb3ZlRGVwZW5k
ZW50S2V5cyh0aGlzLCBvYmosIGtleU5hbWUsIG1ldGEpOwotICB9Ci0KLSAgaWYgKHRoaXMuX2Nh
Y2hlYWJsZSkgeyBkZWxldGUgbWV0YS5jYWNoZVtrZXlOYW1lXTsgfQotCi0gIHJldHVybiBudWxs
OyAvLyBubyB2YWx1ZSB0byByZXN0b3JlCi19OwotCi0KLS8qKgotICBUaGlzIGhlbHBlciByZXR1
cm5zIGEgbmV3IHByb3BlcnR5IGRlc2NyaXB0b3IgdGhhdCB3cmFwcyB0aGUgcGFzc2VkCi0gIGNv
bXB1dGVkIHByb3BlcnR5IGZ1bmN0aW9uLiBZb3UgY2FuIHVzZSB0aGlzIGhlbHBlciB0byBkZWZp
bmUgcHJvcGVydGllcwotICB3aXRoIG1peGlucyBvciB2aWEgYEVtYmVyLmRlZmluZVByb3BlcnR5
KClgLgotCi0gIFRoZSBmdW5jdGlvbiB5b3UgcGFzcyB3aWxsIGJlIHVzZWQgdG8gYm90aCBnZXQg
YW5kIHNldCBwcm9wZXJ0eSB2YWx1ZXMuCi0gIFRoZSBmdW5jdGlvbiBzaG91bGQgYWNjZXB0IHR3
byBwYXJhbWV0ZXJzLCBrZXkgYW5kIHZhbHVlLiBJZiB2YWx1ZSBpcyBub3QKLSAgdW5kZWZpbmVk
IHlvdSBzaG91bGQgc2V0IHRoZSB2YWx1ZSBmaXJzdC4gSW4gZWl0aGVyIGNhc2UgcmV0dXJuIHRo
ZQotICBjdXJyZW50IHZhbHVlIG9mIHRoZSBwcm9wZXJ0eS4KLSAgQG1ldGhvZCBjb21wdXRlZAot
ICBAZm9yIEVtYmVyCi0gIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGNvbXB1dGVkIHByb3Bl
cnR5IGZ1bmN0aW9uLgotICBAcmV0dXJuIHtFbWJlci5Db21wdXRlZFByb3BlcnR5fSBwcm9wZXJ0
eSBkZXNjcmlwdG9yIGluc3RhbmNlCi0qLwotRW1iZXIuY29tcHV0ZWQgPSBmdW5jdGlvbihmdW5j
KSB7Ci0gIHZhciBhcmdzOwotCi0gIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSkgewotICAgIGFy
Z3MgPSBhX3NsaWNlLmNhbGwoYXJndW1lbnRzLCAwLCAtMSk7Ci0gICAgZnVuYyA9IGFfc2xpY2Uu
Y2FsbChhcmd1bWVudHMsIC0xKVswXTsKLSAgfQotCi0gIGlmICh0eXBlb2YgZnVuYyAhPT0gImZ1
bmN0aW9uIikgewotICAgIHRocm93IG5ldyBFbWJlci5FcnJvcigiQ29tcHV0ZWQgUHJvcGVydHkg
ZGVjbGFyZWQgd2l0aG91dCBhIHByb3BlcnR5IGZ1bmN0aW9uIik7Ci0gIH0KLQotICB2YXIgY3Ag
PSBuZXcgQ29tcHV0ZWRQcm9wZXJ0eShmdW5jKTsKLQotICBpZiAoYXJncykgewotICAgIGNwLnBy
b3BlcnR5LmFwcGx5KGNwLCBhcmdzKTsKLSAgfQotCi0gIHJldHVybiBjcDsKLX07Ci0KLS8qKgot
ICBSZXR1cm5zIHRoZSBjYWNoZWQgdmFsdWUgZm9yIGEgcHJvcGVydHksIGlmIG9uZSBleGlzdHMu
Ci0gIFRoaXMgY2FuIGJlIHVzZWZ1bCBmb3IgcGVla2luZyBhdCB0aGUgdmFsdWUgb2YgYSBjb21w
dXRlZAotICBwcm9wZXJ0eSB0aGF0IGlzIGdlbmVyYXRlZCBsYXppbHksIHdpdGhvdXQgYWNjaWRl
bnRhbGx5IGNhdXNpbmcKLSAgaXQgdG8gYmUgY3JlYXRlZC4KLQotICBAbWV0aG9kIGNhY2hlRm9y
Ci0gIEBmb3IgRW1iZXIKLSAgQHBhcmFtIHtPYmplY3R9IG9iaiB0aGUgb2JqZWN0IHdob3NlIHBy
b3BlcnR5IHlvdSB3YW50IHRvIGNoZWNrCi0gIEBwYXJhbSB7U3RyaW5nfSBrZXkgdGhlIG5hbWUg
b2YgdGhlIHByb3BlcnR5IHdob3NlIGNhY2hlZCB2YWx1ZSB5b3Ugd2FudAotICAgIHRvIHJldHVy
bgotICBAcmV0dXJuIHtPYmplY3R9IHRoZSBjYWNoZWQgdmFsdWUKLSovCi1FbWJlci5jYWNoZUZv
ciA9IGZ1bmN0aW9uIGNhY2hlRm9yKG9iaiwga2V5KSB7Ci0gIHZhciBjYWNoZSA9IG1ldGFGb3Io
b2JqLCBmYWxzZSkuY2FjaGU7Ci0KLSAgaWYgKGNhY2hlICYmIGtleSBpbiBjYWNoZSkgewotICAg
IHJldHVybiBjYWNoZVtrZXldOwotICB9Ci19OwotCi1mdW5jdGlvbiBnZXRQcm9wZXJ0aWVzKHNl
bGYsIHByb3BlcnR5TmFtZXMpIHsKLSAgdmFyIHJldCA9IHt9OwotICBmb3IodmFyIGkgPSAwOyBp
IDwgcHJvcGVydHlOYW1lcy5sZW5ndGg7IGkrKykgewotICAgIHJldFtwcm9wZXJ0eU5hbWVzW2ld
XSA9IGdldChzZWxmLCBwcm9wZXJ0eU5hbWVzW2ldKTsKLSAgfQotICByZXR1cm4gcmV0OwotfQot
Ci1mdW5jdGlvbiByZWdpc3RlckNvbXB1dGVkKG5hbWUsIG1hY3JvKSB7Ci0gIEVtYmVyLmNvbXB1
dGVkW25hbWVdID0gZnVuY3Rpb24oZGVwZW5kZW50S2V5KSB7Ci0gICAgdmFyIGFyZ3MgPSBhX3Ns
aWNlLmNhbGwoYXJndW1lbnRzKTsKLSAgICByZXR1cm4gRW1iZXIuY29tcHV0ZWQoZGVwZW5kZW50
S2V5LCBmdW5jdGlvbigpIHsKLSAgICAgIHJldHVybiBtYWNyby5hcHBseSh0aGlzLCBhcmdzKTsK
LSAgICB9KTsKLSAgfTsKLX0KLQotZnVuY3Rpb24gcmVnaXN0ZXJDb21wdXRlZFdpdGhQcm9wZXJ0
aWVzKG5hbWUsIG1hY3JvKSB7Ci0gIEVtYmVyLmNvbXB1dGVkW25hbWVdID0gZnVuY3Rpb24oKSB7
Ci0gICAgdmFyIHByb3BlcnRpZXMgPSBhX3NsaWNlLmNhbGwoYXJndW1lbnRzKTsKLQotICAgIHZh
ciBjb21wdXRlZCA9IEVtYmVyLmNvbXB1dGVkKGZ1bmN0aW9uKCkgewotICAgICAgcmV0dXJuIG1h
Y3JvLmFwcGx5KHRoaXMsIFtnZXRQcm9wZXJ0aWVzKHRoaXMsIHByb3BlcnRpZXMpXSk7Ci0gICAg
fSk7Ci0KLSAgICByZXR1cm4gY29tcHV0ZWQucHJvcGVydHkuYXBwbHkoY29tcHV0ZWQsIHByb3Bl
cnRpZXMpOwotICB9OwotfQotCi0vKioKLSAgQSBjb21wdXRlZCBwcm9wZXJ0eSB0aGF0IHJldHVy
bnMgdHJ1ZSBpZiB0aGUgdmFsdWUgb2YgdGhlIGRlcGVuZGVudAotICBwcm9wZXJ0eSBpcyBudWxs
LCBhbiBlbXB0eSBzdHJpbmcsIGVtcHR5IGFycmF5LCBvciBlbXB0eSBmdW5jdGlvbi4KLQotICBO
b3RlOiBXaGVuIHVzaW5nIGBFbWJlci5jb21wdXRlZC5lbXB0eWAgdG8gd2F0Y2ggYW4gYXJyYXkg
bWFrZSBzdXJlIHRvCi0gIHVzZSB0aGUgYGFycmF5LltdYCBzeW50YXggc28gdGhlIGNvbXB1dGVk
IGNhbiBzdWJzY3JpYmUgdG8gdHJhbnNpdGlvbnMKLSAgZnJvbSBlbXB0eSB0byBub24tZW1wdHkg
c3RhdGVzLgotCi0gIEV4YW1wbGUKLQotICBgYGBqYXZhc2NyaXB0Ci0gIHZhciBUb0RvTGlzdCA9
IEVtYmVyLk9iamVjdC5leHRlbmQoewotICAgIGRvbmU6IEVtYmVyLmNvbXB1dGVkLmVtcHR5KCd0
b2Rvcy5bXScpIC8vIGRldGVjdCBhcnJheSBjaGFuZ2VzCi0gIH0pOwotICB2YXIgdG9kb0xpc3Qg
PSBUb0RvTGlzdC5jcmVhdGUoe3RvZG9zOiBbJ1VuaXQgVGVzdCcsICdEb2N1bWVudGF0aW9uJywg
J1JlbGVhc2UnXX0pOwotICB0b2RvTGlzdC5nZXQoJ2RvbmUnKTsgLy8gZmFsc2UKLSAgdG9kb0xp
c3QuZ2V0KCd0b2RvcycpLmNsZWFyKCk7IC8vIFtdCi0gIHRvZG9MaXN0LmdldCgnZG9uZScpOyAv
LyB0cnVlCi0gIGBgYAotCi0gIEBtZXRob2QgY29tcHV0ZWQuZW1wdHkKLSAgQGZvciBFbWJlcgot
ICBAcGFyYW0ge1N0cmluZ30gZGVwZW5kZW50S2V5Ci0gIEByZXR1cm4ge0VtYmVyLkNvbXB1dGVk
UHJvcGVydHl9IGNvbXB1dGVkIHByb3BlcnR5IHdoaWNoIG5lZ2F0ZQotICB0aGUgb3JpZ2luYWwg
dmFsdWUgZm9yIHByb3BlcnR5Ci0qLwotcmVnaXN0ZXJDb21wdXRlZCgnZW1wdHknLCBmdW5jdGlv
bihkZXBlbmRlbnRLZXkpIHsKLSAgcmV0dXJuIEVtYmVyLmlzRW1wdHkoZ2V0KHRoaXMsIGRlcGVu
ZGVudEtleSkpOwotfSk7Ci0KLS8qKgotICBBIGNvbXB1dGVkIHByb3BlcnR5IHRoYXQgcmV0dXJu
cyB0cnVlIGlmIHRoZSB2YWx1ZSBvZiB0aGUgZGVwZW5kZW50Ci0gIHByb3BlcnR5IGlzIE5PVCBu
dWxsLCBhbiBlbXB0eSBzdHJpbmcsIGVtcHR5IGFycmF5LCBvciBlbXB0eSBmdW5jdGlvbi4KLQot
ICBOb3RlOiBXaGVuIHVzaW5nIGBFbWJlci5jb21wdXRlZC5ub3RFbXB0eWAgdG8gd2F0Y2ggYW4g
YXJyYXkgbWFrZSBzdXJlIHRvCi0gIHVzZSB0aGUgYGFycmF5LltdYCBzeW50YXggc28gdGhlIGNv
bXB1dGVkIGNhbiBzdWJzY3JpYmUgdG8gdHJhbnNpdGlvbnMKLSAgZnJvbSBlbXB0eSB0byBub24t
ZW1wdHkgc3RhdGVzLgotCi0gIEV4YW1wbGUKLQotICBgYGBqYXZhc2NyaXB0Ci0gIHZhciBIYW1z
dGVyID0gRW1iZXIuT2JqZWN0LmV4dGVuZCh7Ci0gICAgaGFzU3R1ZmY6IEVtYmVyLmNvbXB1dGVk
Lm5vdEVtcHR5KCdiYWNrcGFjay5bXScpCi0gIH0pOwotICB2YXIgaGFtc3RlciA9IEhhbXN0ZXIu
Y3JlYXRlKHtiYWNrcGFjazogWydGb29kJywgJ1NsZWVwaW5nIEJhZycsICdUZW50J119KTsKLSAg
aGFtc3Rlci5nZXQoJ2hhc1N0dWZmJyk7IC8vIHRydWUKLSAgaGFtc3Rlci5nZXQoJ2JhY2twYWNr
JykuY2xlYXIoKTsgLy8gW10KLSAgaGFtc3Rlci5nZXQoJ2hhc1N0dWZmJyk7IC8vIGZhbHNlCi0g
IGBgYAotCi0gIEBtZXRob2QgY29tcHV0ZWQubm90RW1wdHkKLSAgQGZvciBFbWJlcgotICBAcGFy
YW0ge1N0cmluZ30gZGVwZW5kZW50S2V5Ci0gIEByZXR1cm4ge0VtYmVyLkNvbXB1dGVkUHJvcGVy
dHl9IGNvbXB1dGVkIHByb3BlcnR5IHdoaWNoIHJldHVybnMgdHJ1ZSBpZgotICBvcmlnaW5hbCB2
YWx1ZSBmb3IgcHJvcGVydHkgaXMgbm90IGVtcHR5LgotKi8KLXJlZ2lzdGVyQ29tcHV0ZWQoJ25v
dEVtcHR5JywgZnVuY3Rpb24oZGVwZW5kZW50S2V5KSB7Ci0gIHJldHVybiAhRW1iZXIuaXNFbXB0
eShnZXQodGhpcywgZGVwZW5kZW50S2V5KSk7Ci19KTsKLQotLyoqCi0gIEEgY29tcHV0ZWQgcHJv
cGVydHkgdGhhdCByZXR1cm5zIHRydWUgaWYgdGhlIHZhbHVlIG9mIHRoZSBkZXBlbmRlbnQKLSAg
cHJvcGVydHkgaXMgbnVsbCBvciB1bmRlZmluZWQuIFRoaXMgYXZvaWRzIGVycm9ycyBmcm9tIEpT
TGludCBjb21wbGFpbmluZwotICBhYm91dCB1c2Ugb2YgPT0sIHdoaWNoIGNhbiBiZSB0ZWNobmlj
YWxseSBjb25mdXNpbmcuCi0KLSAgRXhhbXBsZQotCi0gIGBgYGphdmFzY3JpcHQKLSAgdmFyIEhh
bXN0ZXIgPSBFbWJlci5PYmplY3QuZXh0ZW5kKHsKLSAgICBpc0h1bmdyeTogRW1iZXIuY29tcHV0
ZWQubm9uZSgnZm9vZCcpCi0gIH0pOwotICB2YXIgaGFtc3RlciA9IEhhbXN0ZXIuY3JlYXRlKCk7
Ci0gIGhhbXN0ZXIuZ2V0KCdpc0h1bmdyeScpOyAvLyB0cnVlCi0gIGhhbXN0ZXIuc2V0KCdmb29k
JywgJ0JhbmFuYScpOwotICBoYW1zdGVyLmdldCgnaXNIdW5ncnknKTsgLy8gZmFsc2UKLSAgaGFt
c3Rlci5zZXQoJ2Zvb2QnLCBudWxsKTsKLSAgaGFtc3Rlci5nZXQoJ2lzSHVuZ3J5Jyk7IC8vIHRy
dWUKLSAgYGBgCi0KLSAgQG1ldGhvZCBjb21wdXRlZC5ub25lCi0gIEBmb3IgRW1iZXIKLSAgQHBh
cmFtIHtTdHJpbmd9IGRlcGVuZGVudEtleQotICBAcmV0dXJuIHtFbWJlci5Db21wdXRlZFByb3Bl
cnR5fSBjb21wdXRlZCBwcm9wZXJ0eSB3aGljaAotICByZXR1cm5zIHRydWUgaWYgb3JpZ2luYWwg
dmFsdWUgZm9yIHByb3BlcnR5IGlzIG51bGwgb3IgdW5kZWZpbmVkLgotKi8KLXJlZ2lzdGVyQ29t
cHV0ZWQoJ25vbmUnLCBmdW5jdGlvbihkZXBlbmRlbnRLZXkpIHsKLSAgcmV0dXJuIEVtYmVyLmlz
Tm9uZShnZXQodGhpcywgZGVwZW5kZW50S2V5KSk7Ci19KTsKLQotLyoqCi0gIEEgY29tcHV0ZWQg
cHJvcGVydHkgdGhhdCByZXR1cm5zIHRoZSBpbnZlcnNlIGJvb2xlYW4gdmFsdWUKLSAgb2YgdGhl
IG9yaWdpbmFsIHZhbHVlIGZvciB0aGUgZGVwZW5kZW50IHByb3BlcnR5LgotCi0gIEV4YW1wbGUK
LQotICBgYGBqYXZhc2NyaXB0Ci0gIHZhciBVc2VyID0gRW1iZXIuT2JqZWN0LmV4dGVuZCh7Ci0g
ICAgaXNBbm9ueW1vdXM6IEVtYmVyLmNvbXB1dGVkLm5vdCgnbG9nZ2VkSW4nKQotICB9KTsKLSAg
dmFyIHVzZXIgPSBVc2VyLmNyZWF0ZSh7bG9nZ2VkSW46IGZhbHNlfSk7Ci0gIHVzZXIuZ2V0KCdp
c0Fub255bW91cycpOyAvLyB0cnVlCi0gIHVzZXIuc2V0KCdsb2dnZWRJbicsIHRydWUpOwotICB1
c2VyLmdldCgnaXNBbm9ueW1vdXMnKTsgLy8gZmFsc2UKLSAgYGBgCi0KLSAgQG1ldGhvZCBjb21w
dXRlZC5ub3QKLSAgQGZvciBFbWJlcgotICBAcGFyYW0ge1N0cmluZ30gZGVwZW5kZW50S2V5Ci0g
IEByZXR1cm4ge0VtYmVyLkNvbXB1dGVkUHJvcGVydHl9IGNvbXB1dGVkIHByb3BlcnR5IHdoaWNo
IHJldHVybnMKLSAgaW52ZXJzZSBvZiB0aGUgb3JpZ2luYWwgdmFsdWUgZm9yIHByb3BlcnR5Ci0q
LwotcmVnaXN0ZXJDb21wdXRlZCgnbm90JywgZnVuY3Rpb24oZGVwZW5kZW50S2V5KSB7Ci0gIHJl
dHVybiAhZ2V0KHRoaXMsIGRlcGVuZGVudEtleSk7Ci19KTsKLQotLyoqCi0gIEEgY29tcHV0ZWQg
cHJvcGVydHkgdGhhdCBjb252ZXJ0cyB0aGUgcHJvdmlkZWQgZGVwZW5kZW50IHByb3BlcnR5Ci0g
IGludG8gYSBib29sZWFuIHZhbHVlLgotCi0gIGBgYGphdmFzY3JpcHQKLSAgdmFyIEhhbXN0ZXIg
PSBFbWJlci5PYmplY3QuZXh0ZW5kKHsKLSAgICBoYXNCYW5hbmFzOiBFbWJlci5jb21wdXRlZC5i
b29sKCdudW1CYW5hbmFzJykKLSAgfSk7Ci0gIHZhciBoYW1zdGVyID0gSGFtc3Rlci5jcmVhdGUo
KTsKLSAgaGFtc3Rlci5nZXQoJ2hhc0JhbmFuYXMnKTsgLy8gZmFsc2UKLSAgaGFtc3Rlci5zZXQo
J251bUJhbmFuYXMnLCAwKTsKLSAgaGFtc3Rlci5nZXQoJ2hhc0JhbmFuYXMnKTsgLy8gZmFsc2UK
LSAgaGFtc3Rlci5zZXQoJ251bUJhbmFuYXMnLCAxKTsKLSAgaGFtc3Rlci5nZXQoJ2hhc0JhbmFu
YXMnKTsgLy8gdHJ1ZQotICBoYW1zdGVyLnNldCgnbnVtQmFuYW5hcycsIG51bGwpOwotICBoYW1z
dGVyLmdldCgnaGFzQmFuYW5hcycpOyAvLyBmYWxzZQotICBgYGAKLQotICBAbWV0aG9kIGNvbXB1
dGVkLmJvb2wKLSAgQGZvciBFbWJlcgotICBAcGFyYW0ge1N0cmluZ30gZGVwZW5kZW50S2V5Ci0g
IEByZXR1cm4ge0VtYmVyLkNvbXB1dGVkUHJvcGVydHl9IGNvbXB1dGVkIHByb3BlcnR5IHdoaWNo
IGNvbnZlcnRzCi0gIHRvIGJvb2xlYW4gdGhlIG9yaWdpbmFsIHZhbHVlIGZvciBwcm9wZXJ0eQot
Ki8KLXJlZ2lzdGVyQ29tcHV0ZWQoJ2Jvb2wnLCBmdW5jdGlvbihkZXBlbmRlbnRLZXkpIHsKLSAg
cmV0dXJuICEhZ2V0KHRoaXMsIGRlcGVuZGVudEtleSk7Ci19KTsKLQotLyoqCi0gIEEgY29tcHV0
ZWQgcHJvcGVydHkgd2hpY2ggbWF0Y2hlcyB0aGUgb3JpZ2luYWwgdmFsdWUgZm9yIHRoZQotICBk
ZXBlbmRlbnQgcHJvcGVydHkgYWdhaW5zdCBhIGdpdmVuIFJlZ0V4cCwgcmV0dXJuaW5nIGB0cnVl
YAotICBpZiB0aGV5IHZhbHVlcyBtYXRjaGVzIHRoZSBSZWdFeHAgYW5kIGBmYWxzZWAgaWYgaXQg
ZG9lcyBub3QuCi0KLSAgRXhhbXBsZQotCi0gIGBgYGphdmFzY3JpcHQKLSAgdmFyIFVzZXIgPSBF
bWJlci5PYmplY3QuZXh0ZW5kKHsKLSAgICBoYXNWYWxpZEVtYWlsOiBFbWJlci5jb21wdXRlZC5t
YXRjaCgnZW1haWwnLCAvXi4rQC4rXC4uKyQvKQotICB9KTsKLSAgdmFyIHVzZXIgPSBVc2VyLmNy
ZWF0ZSh7bG9nZ2VkSW46IGZhbHNlfSk7Ci0gIHVzZXIuZ2V0KCdoYXNWYWxpZEVtYWlsJyk7IC8v
IGZhbHNlCi0gIHVzZXIuc2V0KCdlbWFpbCcsICcnKTsKLSAgdXNlci5nZXQoJ2hhc1ZhbGlkRW1h
aWwnKTsgLy8gZmFsc2UKLSAgdXNlci5zZXQoJ2VtYWlsJywgJ2VtYmVyX2hhbXN0ZXJAZXhhbXBs
ZS5jb20nKTsKLSAgdXNlci5nZXQoJ2hhc1ZhbGlkRW1haWwnKTsgLy8gdHJ1ZQotICBgYGAKLQot
ICBAbWV0aG9kIGNvbXB1dGVkLm1hdGNoCi0gIEBmb3IgRW1iZXIKLSAgQHBhcmFtIHtTdHJpbmd9
IGRlcGVuZGVudEtleQotICBAcGFyYW0ge1JlZ0V4cH0gcmVnZXhwCi0gIEByZXR1cm4ge0VtYmVy
LkNvbXB1dGVkUHJvcGVydHl9IGNvbXB1dGVkIHByb3BlcnR5IHdoaWNoIG1hdGNoCi0gIHRoZSBv
cmlnaW5hbCB2YWx1ZSBmb3IgcHJvcGVydHkgYWdhaW5zdCBhIGdpdmVuIFJlZ0V4cAotKi8KLXJl
Z2lzdGVyQ29tcHV0ZWQoJ21hdGNoJywgZnVuY3Rpb24oZGVwZW5kZW50S2V5LCByZWdleHApIHsK
LSAgdmFyIHZhbHVlID0gZ2V0KHRoaXMsIGRlcGVuZGVudEtleSk7Ci0gIHJldHVybiB0eXBlb2Yg
dmFsdWUgPT09ICdzdHJpbmcnID8gcmVnZXhwLnRlc3QodmFsdWUpIDogZmFsc2U7Ci19KTsKLQot
LyoqCi0gIEEgY29tcHV0ZWQgcHJvcGVydHkgdGhhdCByZXR1cm5zIHRydWUgaWYgdGhlIHByb3Zp
ZGVkIGRlcGVuZGVudCBwcm9wZXJ0eQotICBpcyBlcXVhbCB0byB0aGUgZ2l2ZW4gdmFsdWUuCi0K
LSAgRXhhbXBsZQotCi0gIGBgYGphdmFzY3JpcHQKLSAgdmFyIEhhbXN0ZXIgPSBFbWJlci5PYmpl
Y3QuZXh0ZW5kKHsKLSAgICBuYXBUaW1lOiBFbWJlci5jb21wdXRlZC5lcXVhbCgnc3RhdGUnLCAn
c2xlZXB5JykKLSAgfSk7Ci0gIHZhciBoYW1zdGVyID0gSGFtc3Rlci5jcmVhdGUoKTsKLSAgaGFt
c3Rlci5nZXQoJ25hcFRpbWUnKTsgLy8gZmFsc2UKLSAgaGFtc3Rlci5zZXQoJ3N0YXRlJywgJ3Ns
ZWVweScpOwotICBoYW1zdGVyLmdldCgnbmFwVGltZScpOyAvLyB0cnVlCi0gIGhhbXN0ZXIuc2V0
KCdzdGF0ZScsICdodW5ncnknKTsKLSAgaGFtc3Rlci5nZXQoJ25hcFRpbWUnKTsgLy8gZmFsc2UK
LSAgYGBgCi0KLSAgQG1ldGhvZCBjb21wdXRlZC5lcXVhbAotICBAZm9yIEVtYmVyCi0gIEBwYXJh
bSB7U3RyaW5nfSBkZXBlbmRlbnRLZXkKLSAgQHBhcmFtIHtTdHJpbmd8TnVtYmVyfE9iamVjdH0g
dmFsdWUKLSAgQHJldHVybiB7RW1iZXIuQ29tcHV0ZWRQcm9wZXJ0eX0gY29tcHV0ZWQgcHJvcGVy
dHkgd2hpY2ggcmV0dXJucyB0cnVlIGlmCi0gIHRoZSBvcmlnaW5hbCB2YWx1ZSBmb3IgcHJvcGVy
dHkgaXMgZXF1YWwgdG8gdGhlIGdpdmVuIHZhbHVlLgotKi8KLXJlZ2lzdGVyQ29tcHV0ZWQoJ2Vx
dWFsJywgZnVuY3Rpb24oZGVwZW5kZW50S2V5LCB2YWx1ZSkgewotICByZXR1cm4gZ2V0KHRoaXMs
IGRlcGVuZGVudEtleSkgPT09IHZhbHVlOwotfSk7Ci0KLS8qKgotICBBIGNvbXB1dGVkIHByb3Bl
cnR5IHRoYXQgcmV0dXJucyB0cnVlIGlmIHRoZSBwcm92aWVkIGRlcGVuZGVudCBwcm9wZXJ0eQot
ICBpcyBncmVhdGVyIHRoYW4gdGhlIHByb3ZpZGVkIHZhbHVlLgotCi0gIEV4YW1wbGUKLQotICBg
YGBqYXZhc2NyaXB0Ci0gIHZhciBIYW1zdGVyID0gRW1iZXIuT2JqZWN0LmV4dGVuZCh7Ci0gICAg
aGFzVG9vTWFueUJhbmFuYXM6IEVtYmVyLmNvbXB1dGVkLmd0KCdudW1CYW5hbmFzJywgMTApCi0g
IH0pOwotICB2YXIgaGFtc3RlciA9IEhhbXN0ZXIuY3JlYXRlKCk7Ci0gIGhhbXN0ZXIuZ2V0KCdo
YXNUb29NYW55QmFuYW5hcycpOyAvLyBmYWxzZQotICBoYW1zdGVyLnNldCgnbnVtQmFuYW5hcycs
IDMpOwotICBoYW1zdGVyLmdldCgnaGFzVG9vTWFueUJhbmFuYXMnKTsgLy8gZmFsc2UKLSAgaGFt
c3Rlci5zZXQoJ251bUJhbmFuYXMnLCAxMSk7Ci0gIGhhbXN0ZXIuZ2V0KCdoYXNUb29NYW55QmFu
YW5hcycpOyAvLyB0cnVlCi0gIGBgYAotCi0gIEBtZXRob2QgY29tcHV0ZWQuZ3QKLSAgQGZvciBF
bWJlcgotICBAcGFyYW0ge1N0cmluZ30gZGVwZW5kZW50S2V5Ci0gIEBwYXJhbSB7TnVtYmVyfSB2
YWx1ZQotICBAcmV0dXJuIHtFbWJlci5Db21wdXRlZFByb3BlcnR5fSBjb21wdXRlZCBwcm9wZXJ0
eSB3aGljaCByZXR1cm5zIHRydWUgaWYKLSAgdGhlIG9yaWdpbmFsIHZhbHVlIGZvciBwcm9wZXJ0
eSBpcyBncmVhdGVyIHRoZW4gZ2l2ZW4gdmFsdWUuCi0qLwotcmVnaXN0ZXJDb21wdXRlZCgnZ3Qn
LCBmdW5jdGlvbihkZXBlbmRlbnRLZXksIHZhbHVlKSB7Ci0gIHJldHVybiBnZXQodGhpcywgZGVw
ZW5kZW50S2V5KSA+IHZhbHVlOwotfSk7Ci0KLS8qKgotICBBIGNvbXB1dGVkIHByb3BlcnR5IHRo
YXQgcmV0dXJucyB0cnVlIGlmIHRoZSBwcm92aWRlZCBkZXBlbmRlbnQgcHJvcGVydHkKLSAgaXMg
Z3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBwcm92aWRlZCB2YWx1ZS4KLQotICBFeGFtcGxl
Ci0KLSAgYGBgamF2YXNjcmlwdAotICB2YXIgSGFtc3RlciA9IEVtYmVyLk9iamVjdC5leHRlbmQo
ewotICAgIGhhc1Rvb01hbnlCYW5hbmFzOiBFbWJlci5jb21wdXRlZC5ndGUoJ251bUJhbmFuYXMn
LCAxMCkKLSAgfSk7Ci0gIHZhciBoYW1zdGVyID0gSGFtc3Rlci5jcmVhdGUoKTsKLSAgaGFtc3Rl
ci5nZXQoJ2hhc1Rvb01hbnlCYW5hbmFzJyk7IC8vIGZhbHNlCi0gIGhhbXN0ZXIuc2V0KCdudW1C
YW5hbmFzJywgMyk7Ci0gIGhhbXN0ZXIuZ2V0KCdoYXNUb29NYW55QmFuYW5hcycpOyAvLyBmYWxz
ZQotICBoYW1zdGVyLnNldCgnbnVtQmFuYW5hcycsIDEwKTsKLSAgaGFtc3Rlci5nZXQoJ2hhc1Rv
b01hbnlCYW5hbmFzJyk7IC8vIHRydWUKLSAgYGBgCi0KLSAgQG1ldGhvZCBjb21wdXRlZC5ndGUK
LSAgQGZvciBFbWJlcgotICBAcGFyYW0ge1N0cmluZ30gZGVwZW5kZW50S2V5Ci0gIEBwYXJhbSB7
TnVtYmVyfSB2YWx1ZQotICBAcmV0dXJuIHtFbWJlci5Db21wdXRlZFByb3BlcnR5fSBjb21wdXRl
ZCBwcm9wZXJ0eSB3aGljaCByZXR1cm5zIHRydWUgaWYKLSAgdGhlIG9yaWdpbmFsIHZhbHVlIGZv
ciBwcm9wZXJ0eSBpcyBncmVhdGVyIG9yIGVxdWFsIHRoZW4gZ2l2ZW4gdmFsdWUuCi0qLwotcmVn
aXN0ZXJDb21wdXRlZCgnZ3RlJywgZnVuY3Rpb24oZGVwZW5kZW50S2V5LCB2YWx1ZSkgewotICBy
ZXR1cm4gZ2V0KHRoaXMsIGRlcGVuZGVudEtleSkgPj0gdmFsdWU7Ci19KTsKLQotLyoqCi0gIEEg
Y29tcHV0ZWQgcHJvcGVydHkgdGhhdCByZXR1cm5zIHRydWUgaWYgdGhlIHByb3ZpZGVkIGRlcGVu
ZGVudCBwcm9wZXJ0eQotICBpcyBsZXNzIHRoYW4gdGhlIHByb3ZpZGVkIHZhbHVlLgotCi0gIEV4
YW1wbGUKLQotICBgYGBqYXZhc2NyaXB0Ci0gIHZhciBIYW1zdGVyID0gRW1iZXIuT2JqZWN0LmV4
dGVuZCh7Ci0gICAgbmVlZHNNb3JlQmFuYW5hczogRW1iZXIuY29tcHV0ZWQubHQoJ251bUJhbmFu
YXMnLCAzKQotICB9KTsKLSAgdmFyIGhhbXN0ZXIgPSBIYW1zdGVyLmNyZWF0ZSgpOwotICBoYW1z
dGVyLmdldCgnbmVlZHNNb3JlQmFuYW5hcycpOyAvLyB0cnVlCi0gIGhhbXN0ZXIuc2V0KCdudW1C
YW5hbmFzJywgMyk7Ci0gIGhhbXN0ZXIuZ2V0KCduZWVkc01vcmVCYW5hbmFzJyk7IC8vIGZhbHNl
Ci0gIGhhbXN0ZXIuc2V0KCdudW1CYW5hbmFzJywgMik7Ci0gIGhhbXN0ZXIuZ2V0KCduZWVkc01v
cmVCYW5hbmFzJyk7IC8vIHRydWUKLSAgYGBgCi0KLSAgQG1ldGhvZCBjb21wdXRlZC5sdAotICBA
Zm9yIEVtYmVyCi0gIEBwYXJhbSB7U3RyaW5nfSBkZXBlbmRlbnRLZXkKLSAgQHBhcmFtIHtOdW1i
ZXJ9IHZhbHVlCi0gIEByZXR1cm4ge0VtYmVyLkNvbXB1dGVkUHJvcGVydHl9IGNvbXB1dGVkIHBy
b3BlcnR5IHdoaWNoIHJldHVybnMgdHJ1ZSBpZgotICB0aGUgb3JpZ2luYWwgdmFsdWUgZm9yIHBy
b3BlcnR5IGlzIGxlc3MgdGhlbiBnaXZlbiB2YWx1ZS4KLSovCi1yZWdpc3RlckNvbXB1dGVkKCds
dCcsIGZ1bmN0aW9uKGRlcGVuZGVudEtleSwgdmFsdWUpIHsKLSAgcmV0dXJuIGdldCh0aGlzLCBk
ZXBlbmRlbnRLZXkpIDwgdmFsdWU7Ci19KTsKLQotLyoqCi0gIEEgY29tcHV0ZWQgcHJvcGVydHkg
dGhhdCByZXR1cm5zIHRydWUgaWYgdGhlIHByb3ZpZGVkIGRlcGVuZGVudCBwcm9wZXJ0eQotICBp
cyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHByb3ZpZGVkIHZhbHVlLgotCi0gIEV4YW1wbGUK
LQotICBgYGBqYXZhc2NyaXB0Ci0gIHZhciBIYW1zdGVyID0gRW1iZXIuT2JqZWN0LmV4dGVuZCh7
Ci0gICAgbmVlZHNNb3JlQmFuYW5hczogRW1iZXIuY29tcHV0ZWQubHRlKCdudW1CYW5hbmFzJywg
MykKLSAgfSk7Ci0gIHZhciBoYW1zdGVyID0gSGFtc3Rlci5jcmVhdGUoKTsKLSAgaGFtc3Rlci5n
ZXQoJ25lZWRzTW9yZUJhbmFuYXMnKTsgLy8gdHJ1ZQotICBoYW1zdGVyLnNldCgnbnVtQmFuYW5h
cycsIDUpOwotICBoYW1zdGVyLmdldCgnbmVlZHNNb3JlQmFuYW5hcycpOyAvLyBmYWxzZQotICBo
YW1zdGVyLnNldCgnbnVtQmFuYW5hcycsIDMpOwotICBoYW1zdGVyLmdldCgnbmVlZHNNb3JlQmFu
YW5hcycpOyAvLyB0cnVlCi0gIGBgYAotCi0gIEBtZXRob2QgY29tcHV0ZWQubHRlCi0gIEBmb3Ig
RW1iZXIKLSAgQHBhcmFtIHtTdHJpbmd9IGRlcGVuZGVudEtleQotICBAcGFyYW0ge051bWJlcn0g
dmFsdWUKLSAgQHJldHVybiB7RW1iZXIuQ29tcHV0ZWRQcm9wZXJ0eX0gY29tcHV0ZWQgcHJvcGVy
dHkgd2hpY2ggcmV0dXJucyB0cnVlIGlmCi0gIHRoZSBvcmlnaW5hbCB2YWx1ZSBmb3IgcHJvcGVy
dHkgaXMgbGVzcyBvciBlcXVhbCB0aGVuIGdpdmVuIHZhbHVlLgotKi8KLXJlZ2lzdGVyQ29tcHV0
ZWQoJ2x0ZScsIGZ1bmN0aW9uKGRlcGVuZGVudEtleSwgdmFsdWUpIHsKLSAgcmV0dXJuIGdldCh0
aGlzLCBkZXBlbmRlbnRLZXkpIDw9IHZhbHVlOwotfSk7Ci0KLS8qKgotICBBIGNvbXB1dGVkIHBy
b3BlcnR5IHRoYXQgcGVyZm9ybXMgYSBsb2dpY2FsIGBhbmRgIG9uIHRoZQotICBvcmlnaW5hbCB2
YWx1ZXMgZm9yIHRoZSBwcm92aWRlZCBkZXBlbmRlbnQgcHJvcGVydGllcy4KLQotICBFeGFtcGxl
Ci0KLSAgYGBgamF2YXNjcmlwdAotICB2YXIgSGFtc3RlciA9IEVtYmVyLk9iamVjdC5leHRlbmQo
ewotICAgIHJlYWR5Rm9yQ2FtcDogRW1iZXIuY29tcHV0ZWQuYW5kKCdoYXNUZW50JywgJ2hhc0Jh
Y2twYWNrJykKLSAgfSk7Ci0gIHZhciBoYW1zdGVyID0gSGFtc3Rlci5jcmVhdGUoKTsKLSAgaGFt
c3Rlci5nZXQoJ3JlYWR5Rm9yQ2FtcCcpOyAvLyBmYWxzZQotICBoYW1zdGVyLnNldCgnaGFzVGVu
dCcsIHRydWUpOwotICBoYW1zdGVyLmdldCgncmVhZHlGb3JDYW1wJyk7IC8vIGZhbHNlCi0gIGhh
bXN0ZXIuc2V0KCdoYXNCYWNrcGFjaycsIHRydWUpOwotICBoYW1zdGVyLmdldCgncmVhZHlGb3JD
YW1wJyk7IC8vIHRydWUKLSAgYGBgCi0KLSAgQG1ldGhvZCBjb21wdXRlZC5hbmQKLSAgQGZvciBF
bWJlcgotICBAcGFyYW0ge1N0cmluZ30gZGVwZW5kZW50S2V5KgotICBAcmV0dXJuIHtFbWJlci5D
b21wdXRlZFByb3BlcnR5fSBjb21wdXRlZCBwcm9wZXJ0eSB3aGljaCBwZXJmb3JtcwotICBhIGxv
Z2ljYWwgYGFuZGAgb24gdGhlIHZhbHVlcyBvZiBhbGwgdGhlIG9yaWdpbmFsIHZhbHVlcyBmb3Ig
cHJvcGVydGllcy4KLSovCi1yZWdpc3RlckNvbXB1dGVkV2l0aFByb3BlcnRpZXMoJ2FuZCcsIGZ1
bmN0aW9uKHByb3BlcnRpZXMpIHsKLSAgZm9yICh2YXIga2V5IGluIHByb3BlcnRpZXMpIHsKLSAg
ICBpZiAocHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShrZXkpICYmICFwcm9wZXJ0aWVzW2tleV0p
IHsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gIH0KLSAgcmV0dXJuIHRydWU7Ci19KTsK
LQotLyoqCi0gIEEgY29tcHV0ZWQgcHJvcGVydHkgd2hpY2ggcGVyZm9ybXMgYSBsb2dpY2FsIGBv
cmAgb24gdGhlCi0gIG9yaWdpbmFsIHZhbHVlcyBmb3IgdGhlIHByb3ZpZGVkIGRlcGVuZGVudCBw
cm9wZXJ0aWVzLgotCi0gIEV4YW1wbGUKLQotICBgYGBqYXZhc2NyaXB0Ci0gIHZhciBIYW1zdGVy
ID0gRW1iZXIuT2JqZWN0LmV4dGVuZCh7Ci0gICAgcmVhZHlGb3JSYWluOiBFbWJlci5jb21wdXRl
ZC5vcignaGFzSmFja2V0JywgJ2hhc1VtYnJlbGxhJykKLSAgfSk7Ci0gIHZhciBoYW1zdGVyID0g
SGFtc3Rlci5jcmVhdGUoKTsKLSAgaGFtc3Rlci5nZXQoJ3JlYWR5Rm9yUmFpbicpOyAvLyBmYWxz
ZQotICBoYW1zdGVyLnNldCgnaGFzSmFja2V0JywgdHJ1ZSk7Ci0gIGhhbXN0ZXIuZ2V0KCdyZWFk
eUZvclJhaW4nKTsgLy8gdHJ1ZQotICBgYGAKLQotICBAbWV0aG9kIGNvbXB1dGVkLm9yCi0gIEBm
b3IgRW1iZXIKLSAgQHBhcmFtIHtTdHJpbmd9IGRlcGVuZGVudEtleSoKLSAgQHJldHVybiB7RW1i
ZXIuQ29tcHV0ZWRQcm9wZXJ0eX0gY29tcHV0ZWQgcHJvcGVydHkgd2hpY2ggcGVyZm9ybXMKLSAg
YSBsb2dpY2FsIGBvcmAgb24gdGhlIHZhbHVlcyBvZiBhbGwgdGhlIG9yaWdpbmFsIHZhbHVlcyBm
b3IgcHJvcGVydGllcy4KLSovCi1yZWdpc3RlckNvbXB1dGVkV2l0aFByb3BlcnRpZXMoJ29yJywg
ZnVuY3Rpb24ocHJvcGVydGllcykgewotICBmb3IgKHZhciBrZXkgaW4gcHJvcGVydGllcykgewot
ICAgIGlmIChwcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KGtleSkgJiYgcHJvcGVydGllc1trZXld
KSB7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gIH0KLSAgcmV0dXJuIGZhbHNlOwotfSk7
Ci0KLS8qKgotICBBIGNvbXB1dGVkIHByb3BlcnR5IHRoYXQgcmV0dXJucyB0aGUgZmlyc3QgdHJ1
dGh5IHZhbHVlCi0gIGZyb20gYSBsaXN0IG9mIGRlcGVuZGVudCBwcm9wZXJ0aWVzLgotCi0gIEV4
YW1wbGUKLQotICBgYGBqYXZhc2NyaXB0Ci0gIHZhciBIYW1zdGVyID0gRW1iZXIuT2JqZWN0LmV4
dGVuZCh7Ci0gICAgaGFzQ2xvdGhlczogRW1iZXIuY29tcHV0ZWQuYW55KCdoYXQnLCAnc2hpcnQn
KQotICB9KTsKLSAgdmFyIGhhbXN0ZXIgPSBIYW1zdGVyLmNyZWF0ZSgpOwotICBoYW1zdGVyLmdl
dCgnaGFzQ2xvdGhlcycpOyAvLyBudWxsCi0gIGhhbXN0ZXIuc2V0KCdzaGlydCcsICdIYXdhaWlh
biBTaGlydCcpOwotICBoYW1zdGVyLmdldCgnaGFzQ2xvdGhlcycpOyAvLyAnSGF3YWlpYW4gU2hp
cnQnCi0gIGBgYAotCi0gIEBtZXRob2QgY29tcHV0ZWQuYW55Ci0gIEBmb3IgRW1iZXIKLSAgQHBh
cmFtIHtTdHJpbmd9IGRlcGVuZGVudEtleSoKLSAgQHJldHVybiB7RW1iZXIuQ29tcHV0ZWRQcm9w
ZXJ0eX0gY29tcHV0ZWQgcHJvcGVydHkgd2hpY2ggcmV0dXJucwotICB0aGUgZmlyc3QgdHJ1dGh5
IHZhbHVlIG9mIGdpdmVuIGxpc3Qgb2YgcHJvcGVydGllcy4KLSovCi1yZWdpc3RlckNvbXB1dGVk
V2l0aFByb3BlcnRpZXMoJ2FueScsIGZ1bmN0aW9uKHByb3BlcnRpZXMpIHsKLSAgZm9yICh2YXIg
a2V5IGluIHByb3BlcnRpZXMpIHsKLSAgICBpZiAocHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShr
ZXkpICYmIHByb3BlcnRpZXNba2V5XSkgewotICAgICAgcmV0dXJuIHByb3BlcnRpZXNba2V5XTsK
LSAgICB9Ci0gIH0KLSAgcmV0dXJuIG51bGw7Ci19KTsKLQotLyoqCi0gIEEgY29tcHV0ZWQgcHJv
cGVydHkgdGhhdCByZXR1cm5zIHRoZSBhcnJheSBvZiB2YWx1ZXMKLSAgZm9yIHRoZSBwcm92aWRl
ZCBkZXBlbmRlbnQgcHJvcGVydGllcy4KLQotICBFeGFtcGxlCi0KLSAgYGBgamF2YXNjcmlwdAot
ICB2YXIgSGFtc3RlciA9IEVtYmVyLk9iamVjdC5leHRlbmQoewotICAgIGNsb3RoZXM6IEVtYmVy
LmNvbXB1dGVkLmNvbGxlY3QoJ2hhdCcsICdzaGlydCcpCi0gIH0pOwotICB2YXIgaGFtc3RlciA9
IEhhbXN0ZXIuY3JlYXRlKCk7Ci0gIGhhbXN0ZXIuZ2V0KCdjbG90aGVzJyk7IC8vIFtudWxsLCBu
dWxsXQotICBoYW1zdGVyLnNldCgnaGF0JywgJ0NhbXAgSGF0Jyk7Ci0gIGhhbXN0ZXIuc2V0KCdz
aGlydCcsICdDYW1wIFNoaXJ0Jyk7Ci0gIGhhbXN0ZXIuZ2V0KCdjbG90aGVzJyk7IC8vIFsnQ2Ft
cCBIYXQnLCAnQ2FtcCBTaGlydCddCi0gIGBgYAotCi0gIEBtZXRob2QgY29tcHV0ZWQuY29sbGVj
dAotICBAZm9yIEVtYmVyCi0gIEBwYXJhbSB7U3RyaW5nfSBkZXBlbmRlbnRLZXkqCi0gIEByZXR1
cm4ge0VtYmVyLkNvbXB1dGVkUHJvcGVydHl9IGNvbXB1dGVkIHByb3BlcnR5IHdoaWNoIG1hcHMK
LSAgdmFsdWVzIG9mIGFsbCBwYXNzZWQgcHJvcGVydGllcyBpbiB0byBhbiBhcnJheS4KLSovCi1y
ZWdpc3RlckNvbXB1dGVkV2l0aFByb3BlcnRpZXMoJ2NvbGxlY3QnLCBmdW5jdGlvbihwcm9wZXJ0
aWVzKSB7Ci0gIHZhciByZXMgPSBbXTsKLSAgZm9yICh2YXIga2V5IGluIHByb3BlcnRpZXMpIHsK
LSAgICBpZiAocHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7Ci0gICAgICBpZiAoRW1i
ZXIuaXNOb25lKHByb3BlcnRpZXNba2V5XSkpIHsKLSAgICAgICAgcmVzLnB1c2gobnVsbCk7Ci0g
ICAgICB9IGVsc2UgewotICAgICAgICByZXMucHVzaChwcm9wZXJ0aWVzW2tleV0pOwotICAgICAg
fQotICAgIH0KLSAgfQotICByZXR1cm4gcmVzOwotfSk7Ci0KLS8qKgotICBDcmVhdGVzIGEgbmV3
IHByb3BlcnR5IHRoYXQgaXMgYW4gYWxpYXMgZm9yIGFub3RoZXIgcHJvcGVydHkKLSAgb24gYW4g
b2JqZWN0LiBDYWxscyB0byBgZ2V0YCBvciBgc2V0YCB0aGlzIHByb3BlcnR5IGJlaGF2ZSBhcwot
ICB0aG91Z2ggdGhleSB3ZXJlIGNhbGxlZCBvbiB0aGUgb3JpZ2luYWwgcHJvcGVydHkuCi0KLSAg
YGBgamF2YXNjcmlwdAotICBQZXJzb24gPSBFbWJlci5PYmplY3QuZXh0ZW5kKHsKLSAgICBuYW1l
OiAnQWxleCBNYXRjaG5lZXInLAotICAgIG5vbWVuOiBFbWJlci5jb21wdXRlZC5hbGlhcygnbmFt
ZScpCi0gIH0pOwotCi0gIGFsZXggPSBQZXJzb24uY3JlYXRlKCk7Ci0gIGFsZXguZ2V0KCdub21l
bicpOyAvLyAnQWxleCBNYXRjaG5lZXInCi0gIGFsZXguZ2V0KCduYW1lJyk7ICAvLyAnQWxleCBN
YXRjaG5lZXInCi0KLSAgYWxleC5zZXQoJ25vbWVuJywgJ0BtYWNodHknKTsKLSAgYWxleC5nZXQo
J25hbWUnKTsgIC8vICdAbWFjaHR5JwotICBgYGAKLSAgQG1ldGhvZCBjb21wdXRlZC5hbGlhcwot
ICBAZm9yIEVtYmVyCi0gIEBwYXJhbSB7U3RyaW5nfSBkZXBlbmRlbnRLZXkKLSAgQHJldHVybiB7
RW1iZXIuQ29tcHV0ZWRQcm9wZXJ0eX0gY29tcHV0ZWQgcHJvcGVydHkgd2hpY2ggY3JlYXRlcyBh
bgotICBhbGlhcyB0byB0aGUgb3JpZ2luYWwgdmFsdWUgZm9yIHByb3BlcnR5LgotKi8KLUVtYmVy
LmNvbXB1dGVkLmFsaWFzID0gZnVuY3Rpb24oZGVwZW5kZW50S2V5KSB7Ci0gIHJldHVybiBFbWJl
ci5jb21wdXRlZChkZXBlbmRlbnRLZXksIGZ1bmN0aW9uKGtleSwgdmFsdWUpIHsKLSAgICBpZiAo
YXJndW1lbnRzLmxlbmd0aCA+IDEpIHsKLSAgICAgIHNldCh0aGlzLCBkZXBlbmRlbnRLZXksIHZh
bHVlKTsKLSAgICAgIHJldHVybiB2YWx1ZTsKLSAgICB9IGVsc2UgewotICAgICAgcmV0dXJuIGdl
dCh0aGlzLCBkZXBlbmRlbnRLZXkpOwotICAgIH0KLSAgfSk7Ci19OwotCi0vKioKLSAgV2hlcmUg
YGNvbXB1dGVkLmFsaWFzYCBhbGlhc2VzIGBnZXRgIGFuZCBgc2V0YCwgYW5kIGFsbG93cyBmb3Ig
YmlkaXJlY3Rpb25hbAotICBkYXRhIGZsb3csIGBjb21wdXRlZC5vbmVXYXlgIG9ubHkgcHJvdmlk
ZXMgYW4gYWxpYXNlZCBgZ2V0YC4gVGhlIGBzZXRgIHdpbGwKLSAgbm90IG11dGF0ZSB0aGUgdXBz
dHJlYW0gcHJvcGVydHksIHJhdGhlciBjYXVzZXMgdGhlIGN1cnJlbnQgcHJvcGVydHkgdG8KLSAg
YmVjb21lIHRoZSB2YWx1ZSBzZXQuIFRoaXMgY2F1c2VzIHRoZSBkb3duc3RyZWFtIHByb3BlcnR5
IHRvIHBlcm1lbnRhbnRseQotICBkaXZlcmdlIGZyb20gdGhlIHVwc3RyZWFtIHByb3BlcnR5Lgot
Ci0gIEV4YW1wbGUKLQotICBgYGBqYXZhc2NyaXB0Ci0gIFVzZXIgPSBFbWJlci5PYmplY3QuZXh0
ZW5kKHsKLSAgICBmaXJzdE5hbWU6IG51bGwsCi0gICAgbGFzdE5hbWU6IG51bGwsCi0gICAgbmlj
a05hbWU6IEVtYmVyLmNvbXB1dGVkLm9uZVdheSgnZmlyc3ROYW1lJykKLSAgfSk7Ci0KLSAgdXNl
ciA9IFVzZXIuY3JlYXRlKHsKLSAgICBmaXJzdE5hbWU6ICdUZWRkeScsCi0gICAgbGFzdE5hbWU6
ICAnWmVlbm55JwotICB9KTsKLQotICB1c2VyLmdldCgnbmlja05hbWUnKTsKLSAgIyAnVGVkZHkn
Ci0KLSAgdXNlci5zZXQoJ25pY2tOYW1lJywgJ1RlZGR5QmVhcicpOwotICAjICdUZWRkeUJlYXIn
Ci0KLSAgdXNlci5nZXQoJ2ZpcnN0TmFtZScpOwotICAjICdUZWRkeScKLSAgYGBgCi0KLSAgQG1l
dGhvZCBjb21wdXRlZC5vbmVXYXkKLSAgQGZvciBFbWJlcgotICBAcGFyYW0ge1N0cmluZ30gZGVw
ZW5kZW50S2V5Ci0gIEByZXR1cm4ge0VtYmVyLkNvbXB1dGVkUHJvcGVydHl9IGNvbXB1dGVkIHBy
b3BlcnR5IHdoaWNoIGNyZWF0ZXMgYQotICBvbmUgd2F5IGNvbXB1dGVkIHByb3BlcnR5IHRvIHRo
ZSBvcmlnaW5hbCB2YWx1ZSBmb3IgcHJvcGVydHkuCi0qLwotRW1iZXIuY29tcHV0ZWQub25lV2F5
ID0gZnVuY3Rpb24oZGVwZW5kZW50S2V5KSB7Ci0gIHJldHVybiBFbWJlci5jb21wdXRlZChkZXBl
bmRlbnRLZXksIGZ1bmN0aW9uKCkgewotICAgIHJldHVybiBnZXQodGhpcywgZGVwZW5kZW50S2V5
KTsKLSAgfSk7Ci19OwotCi0KLS8qKgotICBBIGNvbXB1dGVkIHByb3BlcnR5IHRoYXQgYWN0cyBs
aWtlIGEgc3RhbmRhcmQgZ2V0dGVyIGFuZCBzZXR0ZXIsCi0gIGJ1dCByZXR1cm5zIHRoZSB2YWx1
ZSBhdCB0aGUgcHJvdmlkZWQgYGRlZmF1bHRQYXRoYCBpZiB0aGUKLSAgcHJvcGVydHkgaXRzZWxm
IGhhcyBub3QgYmVlbiBzZXQgdG8gYSB2YWx1ZQotCi0gIEV4YW1wbGUKLQotICBgYGBqYXZhc2Ny
aXB0Ci0gIHZhciBIYW1zdGVyID0gRW1iZXIuT2JqZWN0LmV4dGVuZCh7Ci0gICAgd2lzaExpc3Q6
IEVtYmVyLmNvbXB1dGVkLmRlZmF1bHRUbygnZmF2b3JpdGVGb29kJykKLSAgfSk7Ci0gIHZhciBo
YW1zdGVyID0gSGFtc3Rlci5jcmVhdGUoe2Zhdm9yaXRlRm9vZDogJ0JhbmFuYSd9KTsKLSAgaGFt
c3Rlci5nZXQoJ3dpc2hMaXN0Jyk7IC8vICdCYW5hbmEnCi0gIGhhbXN0ZXIuc2V0KCd3aXNoTGlz
dCcsICdNb3JlIFVuaXQgVGVzdHMnKTsKLSAgaGFtc3Rlci5nZXQoJ3dpc2hMaXN0Jyk7IC8vICdN
b3JlIFVuaXQgVGVzdHMnCi0gIGhhbXN0ZXIuZ2V0KCdmYXZvcml0ZUZvb2QnKTsgLy8gJ0JhbmFu
YScKLSAgYGBgCi0KLSAgQG1ldGhvZCBjb21wdXRlZC5kZWZhdWx0VG8KLSAgQGZvciBFbWJlcgot
ICBAcGFyYW0ge1N0cmluZ30gZGVmYXVsdFBhdGgKLSAgQHJldHVybiB7RW1iZXIuQ29tcHV0ZWRQ
cm9wZXJ0eX0gY29tcHV0ZWQgcHJvcGVydHkgd2hpY2ggYWN0cyBsaWtlCi0gIGEgc3RhbmRhcmQg
Z2V0dGVyIGFuZCBzZXR0ZXIsIGJ1dCBkZWZhdWx0cyB0byB0aGUgdmFsdWUgZnJvbSBgZGVmYXVs
dFBhdGhgLgotKi8KLUVtYmVyLmNvbXB1dGVkLmRlZmF1bHRUbyA9IGZ1bmN0aW9uKGRlZmF1bHRQ
YXRoKSB7Ci0gIHJldHVybiBFbWJlci5jb21wdXRlZChmdW5jdGlvbihrZXksIG5ld1ZhbHVlLCBj
YWNoZWRWYWx1ZSkgewotICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxKSB7Ci0gICAgICBy
ZXR1cm4gY2FjaGVkVmFsdWUgIT0gbnVsbCA/IGNhY2hlZFZhbHVlIDogZ2V0KHRoaXMsIGRlZmF1
bHRQYXRoKTsKLSAgICB9Ci0gICAgcmV0dXJuIG5ld1ZhbHVlICE9IG51bGwgPyBuZXdWYWx1ZSA6
IGdldCh0aGlzLCBkZWZhdWx0UGF0aCk7Ci0gIH0pOwotfTsKLQotCi19KSgpOwotCi0KLQotKGZ1
bmN0aW9uKCkgewotLy8gRW1iZXIudHJ5RmluYWxseQotLyoqCi1AbW9kdWxlIGVtYmVyLW1ldGFs
Ci0qLwotCi12YXIgQUZURVJfT0JTRVJWRVJTID0gJzpjaGFuZ2UnLAotICAgIEJFRk9SRV9PQlNF
UlZFUlMgPSAnOmJlZm9yZSc7Ci0KLWZ1bmN0aW9uIGNoYW5nZUV2ZW50KGtleU5hbWUpIHsKLSAg
cmV0dXJuIGtleU5hbWUrQUZURVJfT0JTRVJWRVJTOwotfQotCi1mdW5jdGlvbiBiZWZvcmVFdmVu
dChrZXlOYW1lKSB7Ci0gIHJldHVybiBrZXlOYW1lK0JFRk9SRV9PQlNFUlZFUlM7Ci19Ci0KLS8q
KgotICBAbWV0aG9kIGFkZE9ic2VydmVyCi0gIEBwYXJhbSBvYmoKLSAgQHBhcmFtIHtTdHJpbmd9
IHBhdGgKLSAgQHBhcmFtIHtPYmplY3R8RnVuY3Rpb259IHRhcmdldE9yTWV0aG9kCi0gIEBwYXJh
bSB7RnVuY3Rpb258U3RyaW5nfSBbbWV0aG9kXQotKi8KLUVtYmVyLmFkZE9ic2VydmVyID0gZnVu
Y3Rpb24ob2JqLCBfcGF0aCwgdGFyZ2V0LCBtZXRob2QpIHsKLSAgRW1iZXIuYWRkTGlzdGVuZXIo
b2JqLCBjaGFuZ2VFdmVudChfcGF0aCksIHRhcmdldCwgbWV0aG9kKTsKLSAgRW1iZXIud2F0Y2go
b2JqLCBfcGF0aCk7Ci0KLSAgcmV0dXJuIHRoaXM7Ci19OwotCi1FbWJlci5vYnNlcnZlcnNGb3Ig
PSBmdW5jdGlvbihvYmosIHBhdGgpIHsKLSAgcmV0dXJuIEVtYmVyLmxpc3RlbmVyc0ZvcihvYmos
IGNoYW5nZUV2ZW50KHBhdGgpKTsKLX07Ci0KLS8qKgotICBAbWV0aG9kIHJlbW92ZU9ic2VydmVy
Ci0gIEBwYXJhbSBvYmoKLSAgQHBhcmFtIHtTdHJpbmd9IHBhdGgKLSAgQHBhcmFtIHtPYmplY3R8
RnVuY3Rpb259IHRhcmdldE9yTWV0aG9kCi0gIEBwYXJhbSB7RnVuY3Rpb258U3RyaW5nfSBbbWV0
aG9kXQotKi8KLUVtYmVyLnJlbW92ZU9ic2VydmVyID0gZnVuY3Rpb24ob2JqLCBfcGF0aCwgdGFy
Z2V0LCBtZXRob2QpIHsKLSAgRW1iZXIudW53YXRjaChvYmosIF9wYXRoKTsKLSAgRW1iZXIucmVt
b3ZlTGlzdGVuZXIob2JqLCBjaGFuZ2VFdmVudChfcGF0aCksIHRhcmdldCwgbWV0aG9kKTsKLQot
ICByZXR1cm4gdGhpczsKLX07Ci0KLS8qKgotICBAbWV0aG9kIGFkZEJlZm9yZU9ic2VydmVyCi0g
IEBwYXJhbSBvYmoKLSAgQHBhcmFtIHtTdHJpbmd9IHBhdGgKLSAgQHBhcmFtIHtPYmplY3R8RnVu
Y3Rpb259IHRhcmdldE9yTWV0aG9kCi0gIEBwYXJhbSB7RnVuY3Rpb258U3RyaW5nfSBbbWV0aG9k
XQotKi8KLUVtYmVyLmFkZEJlZm9yZU9ic2VydmVyID0gZnVuY3Rpb24ob2JqLCBfcGF0aCwgdGFy
Z2V0LCBtZXRob2QpIHsKLSAgRW1iZXIuYWRkTGlzdGVuZXIob2JqLCBiZWZvcmVFdmVudChfcGF0
aCksIHRhcmdldCwgbWV0aG9kKTsKLSAgRW1iZXIud2F0Y2gob2JqLCBfcGF0aCk7Ci0KLSAgcmV0
dXJuIHRoaXM7Ci19OwotCi0vLyBTdXNwZW5kIG9ic2VydmVyIGR1cmluZyBjYWxsYmFjay4KLS8v
Ci0vLyBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgYnkgdGhlIHRhcmdldCBvZiB0aGUgb2JzZXJ2
ZXIKLS8vIHdoaWxlIGl0IGlzIHNldHRpbmcgdGhlIG9ic2VydmVkIHBhdGguCi1FbWJlci5fc3Vz
cGVuZEJlZm9yZU9ic2VydmVyID0gZnVuY3Rpb24ob2JqLCBwYXRoLCB0YXJnZXQsIG1ldGhvZCwg
Y2FsbGJhY2spIHsKLSAgcmV0dXJuIEVtYmVyLl9zdXNwZW5kTGlzdGVuZXIob2JqLCBiZWZvcmVF
dmVudChwYXRoKSwgdGFyZ2V0LCBtZXRob2QsIGNhbGxiYWNrKTsKLX07Ci0KLUVtYmVyLl9zdXNw
ZW5kT2JzZXJ2ZXIgPSBmdW5jdGlvbihvYmosIHBhdGgsIHRhcmdldCwgbWV0aG9kLCBjYWxsYmFj
aykgewotICByZXR1cm4gRW1iZXIuX3N1c3BlbmRMaXN0ZW5lcihvYmosIGNoYW5nZUV2ZW50KHBh
dGgpLCB0YXJnZXQsIG1ldGhvZCwgY2FsbGJhY2spOwotfTsKLQotdmFyIG1hcCA9IEVtYmVyLkFy
cmF5UG9seWZpbGxzLm1hcDsKLQotRW1iZXIuX3N1c3BlbmRCZWZvcmVPYnNlcnZlcnMgPSBmdW5j
dGlvbihvYmosIHBhdGhzLCB0YXJnZXQsIG1ldGhvZCwgY2FsbGJhY2spIHsKLSAgdmFyIGV2ZW50
cyA9IG1hcC5jYWxsKHBhdGhzLCBiZWZvcmVFdmVudCk7Ci0gIHJldHVybiBFbWJlci5fc3VzcGVu
ZExpc3RlbmVycyhvYmosIGV2ZW50cywgdGFyZ2V0LCBtZXRob2QsIGNhbGxiYWNrKTsKLX07Ci0K
LUVtYmVyLl9zdXNwZW5kT2JzZXJ2ZXJzID0gZnVuY3Rpb24ob2JqLCBwYXRocywgdGFyZ2V0LCBt
ZXRob2QsIGNhbGxiYWNrKSB7Ci0gIHZhciBldmVudHMgPSBtYXAuY2FsbChwYXRocywgY2hhbmdl
RXZlbnQpOwotICByZXR1cm4gRW1iZXIuX3N1c3BlbmRMaXN0ZW5lcnMob2JqLCBldmVudHMsIHRh
cmdldCwgbWV0aG9kLCBjYWxsYmFjayk7Ci19OwotCi1FbWJlci5iZWZvcmVPYnNlcnZlcnNGb3Ig
PSBmdW5jdGlvbihvYmosIHBhdGgpIHsKLSAgcmV0dXJuIEVtYmVyLmxpc3RlbmVyc0ZvcihvYmos
IGJlZm9yZUV2ZW50KHBhdGgpKTsKLX07Ci0KLS8qKgotICBAbWV0aG9kIHJlbW92ZUJlZm9yZU9i
c2VydmVyCi0gIEBwYXJhbSBvYmoKLSAgQHBhcmFtIHtTdHJpbmd9IHBhdGgKLSAgQHBhcmFtIHtP
YmplY3R8RnVuY3Rpb259IHRhcmdldE9yTWV0aG9kCi0gIEBwYXJhbSB7RnVuY3Rpb258U3RyaW5n
fSBbbWV0aG9kXQotKi8KLUVtYmVyLnJlbW92ZUJlZm9yZU9ic2VydmVyID0gZnVuY3Rpb24ob2Jq
LCBfcGF0aCwgdGFyZ2V0LCBtZXRob2QpIHsKLSAgRW1iZXIudW53YXRjaChvYmosIF9wYXRoKTsK
LSAgRW1iZXIucmVtb3ZlTGlzdGVuZXIob2JqLCBiZWZvcmVFdmVudChfcGF0aCksIHRhcmdldCwg
bWV0aG9kKTsKLQotICByZXR1cm4gdGhpczsKLX07Ci0KLX0pKCk7Ci0KLQotCi0oZnVuY3Rpb24o
KSB7Ci1kZWZpbmUoImJhY2tidXJuZXIvcXVldWUiLAotICBbImV4cG9ydHMiXSwKLSAgZnVuY3Rp
b24oX19leHBvcnRzX18pIHsKLSAgICAidXNlIHN0cmljdCI7Ci0gICAgZnVuY3Rpb24gUXVldWUo
ZGFxLCBuYW1lLCBvcHRpb25zKSB7Ci0gICAgICB0aGlzLmRhcSA9IGRhcTsKLSAgICAgIHRoaXMu
bmFtZSA9IG5hbWU7Ci0gICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zOwotICAgICAgdGhpcy5f
cXVldWUgPSBbXTsKLSAgICB9Ci0KLSAgICBRdWV1ZS5wcm90b3R5cGUgPSB7Ci0gICAgICBkYXE6
IG51bGwsCi0gICAgICBuYW1lOiBudWxsLAotICAgICAgb3B0aW9uczogbnVsbCwKLSAgICAgIF9x
dWV1ZTogbnVsbCwKLQotICAgICAgcHVzaDogZnVuY3Rpb24odGFyZ2V0LCBtZXRob2QsIGFyZ3Ms
IHN0YWNrKSB7Ci0gICAgICAgIHZhciBxdWV1ZSA9IHRoaXMuX3F1ZXVlOwotICAgICAgICBxdWV1
ZS5wdXNoKHRhcmdldCwgbWV0aG9kLCBhcmdzLCBzdGFjayk7Ci0gICAgICAgIHJldHVybiB7cXVl
dWU6IHRoaXMsIHRhcmdldDogdGFyZ2V0LCBtZXRob2Q6IG1ldGhvZH07Ci0gICAgICB9LAotCi0g
ICAgICBwdXNoVW5pcXVlOiBmdW5jdGlvbih0YXJnZXQsIG1ldGhvZCwgYXJncywgc3RhY2spIHsK
LSAgICAgICAgdmFyIHF1ZXVlID0gdGhpcy5fcXVldWUsIGN1cnJlbnRUYXJnZXQsIGN1cnJlbnRN
ZXRob2QsIGksIGw7Ci0KLSAgICAgICAgZm9yIChpID0gMCwgbCA9IHF1ZXVlLmxlbmd0aDsgaSA8
IGw7IGkgKz0gNCkgewotICAgICAgICAgIGN1cnJlbnRUYXJnZXQgPSBxdWV1ZVtpXTsKLSAgICAg
ICAgICBjdXJyZW50TWV0aG9kID0gcXVldWVbaSsxXTsKLQotICAgICAgICAgIGlmIChjdXJyZW50
VGFyZ2V0ID09PSB0YXJnZXQgJiYgY3VycmVudE1ldGhvZCA9PT0gbWV0aG9kKSB7Ci0gICAgICAg
ICAgICBxdWV1ZVtpKzJdID0gYXJnczsgLy8gcmVwbGFjZSBhcmdzCi0gICAgICAgICAgICBxdWV1
ZVtpKzNdID0gc3RhY2s7IC8vIHJlcGxhY2Ugc3RhY2sKLSAgICAgICAgICAgIHJldHVybiB7cXVl
dWU6IHRoaXMsIHRhcmdldDogdGFyZ2V0LCBtZXRob2Q6IG1ldGhvZH07IC8vIFRPRE86IHRlc3Qg
dGhpcyBjb2RlIHBhdGgKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLl9x
dWV1ZS5wdXNoKHRhcmdldCwgbWV0aG9kLCBhcmdzLCBzdGFjayk7Ci0gICAgICAgIHJldHVybiB7
cXVldWU6IHRoaXMsIHRhcmdldDogdGFyZ2V0LCBtZXRob2Q6IG1ldGhvZH07Ci0gICAgICB9LAot
Ci0gICAgICAvLyBUT0RPOiByZW1vdmUgbWUsIG9ubHkgYmVpbmcgdXNlZCBmb3IgRW1iZXIucnVu
LnN5bmMKLSAgICAgIGZsdXNoOiBmdW5jdGlvbigpIHsKLSAgICAgICAgdmFyIHF1ZXVlID0gdGhp
cy5fcXVldWUsCi0gICAgICAgICAgICBvcHRpb25zID0gdGhpcy5vcHRpb25zLAotICAgICAgICAg
ICAgYmVmb3JlID0gb3B0aW9ucyAmJiBvcHRpb25zLmJlZm9yZSwKLSAgICAgICAgICAgIGFmdGVy
ID0gb3B0aW9ucyAmJiBvcHRpb25zLmFmdGVyLAotICAgICAgICAgICAgdGFyZ2V0LCBtZXRob2Qs
IGFyZ3MsIHN0YWNrLCBpLCBsID0gcXVldWUubGVuZ3RoOwotCi0gICAgICAgIGlmIChsICYmIGJl
Zm9yZSkgeyBiZWZvcmUoKTsgfQotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbDsgaSArPSA0KSB7
Ci0gICAgICAgICAgdGFyZ2V0ID0gcXVldWVbaV07Ci0gICAgICAgICAgbWV0aG9kID0gcXVldWVb
aSsxXTsKLSAgICAgICAgICBhcmdzICAgPSBxdWV1ZVtpKzJdOwotICAgICAgICAgIHN0YWNrICA9
IHF1ZXVlW2krM107IC8vIERlYnVnZ2luZyBhc3Npc3RhbmNlCi0KLSAgICAgICAgICAvLyBUT0RP
OiBlcnJvciBoYW5kbGluZwotICAgICAgICAgIGlmIChhcmdzICYmIGFyZ3MubGVuZ3RoID4gMCkg
ewotICAgICAgICAgICAgbWV0aG9kLmFwcGx5KHRhcmdldCwgYXJncyk7Ci0gICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIG1ldGhvZC5jYWxsKHRhcmdldCk7Ci0gICAgICAgICAgfQotICAg
ICAgICB9Ci0gICAgICAgIGlmIChsICYmIGFmdGVyKSB7IGFmdGVyKCk7IH0KLQotICAgICAgICAv
LyBjaGVjayBpZiBuZXcgaXRlbXMgaGF2ZSBiZWVuIGFkZGVkCi0gICAgICAgIGlmIChxdWV1ZS5s
ZW5ndGggPiBsKSB7Ci0gICAgICAgICAgdGhpcy5fcXVldWUgPSBxdWV1ZS5zbGljZShsKTsKLSAg
ICAgICAgICB0aGlzLmZsdXNoKCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgdGhpcy5f
cXVldWUubGVuZ3RoID0gMDsKLSAgICAgICAgfQotICAgICAgfSwKLQotICAgICAgY2FuY2VsOiBm
dW5jdGlvbihhY3Rpb25Ub0NhbmNlbCkgewotICAgICAgICB2YXIgcXVldWUgPSB0aGlzLl9xdWV1
ZSwgY3VycmVudFRhcmdldCwgY3VycmVudE1ldGhvZCwgaSwgbDsKLQotICAgICAgICBmb3IgKGkg
PSAwLCBsID0gcXVldWUubGVuZ3RoOyBpIDwgbDsgaSArPSA0KSB7Ci0gICAgICAgICAgY3VycmVu
dFRhcmdldCA9IHF1ZXVlW2ldOwotICAgICAgICAgIGN1cnJlbnRNZXRob2QgPSBxdWV1ZVtpKzFd
OwotCi0gICAgICAgICAgaWYgKGN1cnJlbnRUYXJnZXQgPT09IGFjdGlvblRvQ2FuY2VsLnRhcmdl
dCAmJiBjdXJyZW50TWV0aG9kID09PSBhY3Rpb25Ub0NhbmNlbC5tZXRob2QpIHsKLSAgICAgICAg
ICAgIHF1ZXVlLnNwbGljZShpLCA0KTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAg
ICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vIGlmIG5vdCBmb3VuZCBpbiBjdXJyZW50IHF1
ZXVlCi0gICAgICAgIC8vIGNvdWxkIGJlIGluIHRoZSBxdWV1ZSB0aGF0IGlzIGJlaW5nIGZsdXNo
ZWQKLSAgICAgICAgcXVldWUgPSB0aGlzLl9xdWV1ZUJlaW5nRmx1c2hlZDsKLSAgICAgICAgaWYg
KCFxdWV1ZSkgewotICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBmb3IgKGkg
PSAwLCBsID0gcXVldWUubGVuZ3RoOyBpIDwgbDsgaSArPSA0KSB7Ci0gICAgICAgICAgY3VycmVu
dFRhcmdldCA9IHF1ZXVlW2ldOwotICAgICAgICAgIGN1cnJlbnRNZXRob2QgPSBxdWV1ZVtpKzFd
OwotCi0gICAgICAgICAgaWYgKGN1cnJlbnRUYXJnZXQgPT09IGFjdGlvblRvQ2FuY2VsLnRhcmdl
dCAmJiBjdXJyZW50TWV0aG9kID09PSBhY3Rpb25Ub0NhbmNlbC5tZXRob2QpIHsKLSAgICAgICAg
ICAgIC8vIGRvbid0IG1lc3Mgd2l0aCBhcnJheSBkdXJpbmcgZmx1c2gKLSAgICAgICAgICAgIC8v
IGp1c3QgbnVsbGlmeSB0aGUgbWV0aG9kCi0gICAgICAgICAgICBxdWV1ZVtpKzFdID0gbnVsbDsK
LSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAg
fQotICAgIH07Ci0KLQotICAgIF9fZXhwb3J0c19fLlF1ZXVlID0gUXVldWU7Ci0gIH0pOwotCi1k
ZWZpbmUoImJhY2tidXJuZXIvZGVmZXJyZWRfYWN0aW9uX3F1ZXVlcyIsCi0gIFsiYmFja2J1cm5l
ci9xdWV1ZSIsImV4cG9ydHMiXSwKLSAgZnVuY3Rpb24oX19kZXBlbmRlbmN5MV9fLCBfX2V4cG9y
dHNfXykgewotICAgICJ1c2Ugc3RyaWN0IjsKLSAgICB2YXIgUXVldWUgPSBfX2RlcGVuZGVuY3kx
X18uUXVldWU7Ci0KLSAgICBmdW5jdGlvbiBEZWZlcnJlZEFjdGlvblF1ZXVlcyhxdWV1ZU5hbWVz
LCBvcHRpb25zKSB7Ci0gICAgICB2YXIgcXVldWVzID0gdGhpcy5xdWV1ZXMgPSB7fTsKLSAgICAg
IHRoaXMucXVldWVOYW1lcyA9IHF1ZXVlTmFtZXMgPSBxdWV1ZU5hbWVzIHx8IFtdOwotCi0gICAg
ICB2YXIgcXVldWVOYW1lOwotICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBxdWV1ZU5hbWVzLmxl
bmd0aDsgaSA8IGw7IGkrKykgewotICAgICAgICBxdWV1ZU5hbWUgPSBxdWV1ZU5hbWVzW2ldOwot
ICAgICAgICBxdWV1ZXNbcXVldWVOYW1lXSA9IG5ldyBRdWV1ZSh0aGlzLCBxdWV1ZU5hbWUsIG9w
dGlvbnNbcXVldWVOYW1lXSk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgRGVmZXJyZWRBY3Rpb25R
dWV1ZXMucHJvdG90eXBlID0gewotICAgICAgcXVldWVOYW1lczogbnVsbCwKLSAgICAgIHF1ZXVl
czogbnVsbCwKLQotICAgICAgc2NoZWR1bGU6IGZ1bmN0aW9uKHF1ZXVlTmFtZSwgdGFyZ2V0LCBt
ZXRob2QsIGFyZ3MsIG9uY2VGbGFnLCBzdGFjaykgewotICAgICAgICB2YXIgcXVldWVzID0gdGhp
cy5xdWV1ZXMsCi0gICAgICAgICAgICBxdWV1ZSA9IHF1ZXVlc1txdWV1ZU5hbWVdOwotCi0gICAg
ICAgIGlmICghcXVldWUpIHsgdGhyb3cgbmV3IEVycm9yKCJZb3UgYXR0ZW1wdGVkIHRvIHNjaGVk
dWxlIGFuIGFjdGlvbiBpbiBhIHF1ZXVlICgiICsgcXVldWVOYW1lICsgIikgdGhhdCBkb2Vzbid0
IGV4aXN0Iik7IH0KLQotICAgICAgICBpZiAob25jZUZsYWcpIHsKLSAgICAgICAgICByZXR1cm4g
cXVldWUucHVzaFVuaXF1ZSh0YXJnZXQsIG1ldGhvZCwgYXJncywgc3RhY2spOwotICAgICAgICB9
IGVsc2UgewotICAgICAgICAgIHJldHVybiBxdWV1ZS5wdXNoKHRhcmdldCwgbWV0aG9kLCBhcmdz
LCBzdGFjayk7Ci0gICAgICAgIH0KLSAgICAgIH0sCi0KLSAgICAgIGZsdXNoOiBmdW5jdGlvbigp
IHsKLSAgICAgICAgdmFyIHF1ZXVlcyA9IHRoaXMucXVldWVzLAotICAgICAgICAgICAgcXVldWVO
YW1lcyA9IHRoaXMucXVldWVOYW1lcywKLSAgICAgICAgICAgIHF1ZXVlTmFtZSwgcXVldWUsIHF1
ZXVlSXRlbXMsIHByaW9yUXVldWVOYW1lSW5kZXgsCi0gICAgICAgICAgICBxdWV1ZU5hbWVJbmRl
eCA9IDAsIG51bWJlck9mUXVldWVzID0gcXVldWVOYW1lcy5sZW5ndGg7Ci0KLSAgICAgICAgb3V0
ZXJsb29wOgotICAgICAgICB3aGlsZSAocXVldWVOYW1lSW5kZXggPCBudW1iZXJPZlF1ZXVlcykg
ewotICAgICAgICAgIHF1ZXVlTmFtZSA9IHF1ZXVlTmFtZXNbcXVldWVOYW1lSW5kZXhdOwotICAg
ICAgICAgIHF1ZXVlID0gcXVldWVzW3F1ZXVlTmFtZV07Ci0gICAgICAgICAgcXVldWVJdGVtcyA9
IHF1ZXVlLl9xdWV1ZUJlaW5nRmx1c2hlZCA9IHF1ZXVlLl9xdWV1ZS5zbGljZSgpOwotICAgICAg
ICAgIHF1ZXVlLl9xdWV1ZSA9IFtdOwotCi0gICAgICAgICAgdmFyIG9wdGlvbnMgPSBxdWV1ZS5v
cHRpb25zLAotICAgICAgICAgICAgICBiZWZvcmUgPSBvcHRpb25zICYmIG9wdGlvbnMuYmVmb3Jl
LAotICAgICAgICAgICAgICBhZnRlciA9IG9wdGlvbnMgJiYgb3B0aW9ucy5hZnRlciwKLSAgICAg
ICAgICAgICAgdGFyZ2V0LCBtZXRob2QsIGFyZ3MsIHN0YWNrLAotICAgICAgICAgICAgICBxdWV1
ZUluZGV4ID0gMCwgbnVtYmVyT2ZRdWV1ZUl0ZW1zID0gcXVldWVJdGVtcy5sZW5ndGg7Ci0KLSAg
ICAgICAgICBpZiAobnVtYmVyT2ZRdWV1ZUl0ZW1zICYmIGJlZm9yZSkgeyBiZWZvcmUoKTsgfQot
ICAgICAgICAgIHdoaWxlIChxdWV1ZUluZGV4IDwgbnVtYmVyT2ZRdWV1ZUl0ZW1zKSB7Ci0gICAg
ICAgICAgICB0YXJnZXQgPSBxdWV1ZUl0ZW1zW3F1ZXVlSW5kZXhdOwotICAgICAgICAgICAgbWV0
aG9kID0gcXVldWVJdGVtc1txdWV1ZUluZGV4KzFdOwotICAgICAgICAgICAgYXJncyAgID0gcXVl
dWVJdGVtc1txdWV1ZUluZGV4KzJdOwotICAgICAgICAgICAgc3RhY2sgID0gcXVldWVJdGVtc1tx
dWV1ZUluZGV4KzNdOyAvLyBEZWJ1Z2dpbmcgYXNzaXN0YW5jZQotCi0gICAgICAgICAgICBpZiAo
dHlwZW9mIG1ldGhvZCA9PT0gJ3N0cmluZycpIHsgbWV0aG9kID0gdGFyZ2V0W21ldGhvZF07IH0K
LQotICAgICAgICAgICAgLy8gbWV0aG9kIGNvdWxkIGhhdmUgYmVlbiBudWxsaWZpZWQgLyBjYW5j
ZWxlZCBkdXJpbmcgZmx1c2gKLSAgICAgICAgICAgIGlmIChtZXRob2QpIHsKLSAgICAgICAgICAg
ICAgLy8gVE9ETzogZXJyb3IgaGFuZGxpbmcKLSAgICAgICAgICAgICAgaWYgKGFyZ3MgJiYgYXJn
cy5sZW5ndGggPiAwKSB7Ci0gICAgICAgICAgICAgICAgbWV0aG9kLmFwcGx5KHRhcmdldCwgYXJn
cyk7Ci0gICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbWV0aG9kLmNhbGwo
dGFyZ2V0KTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBx
dWV1ZUluZGV4ICs9IDQ7Ci0gICAgICAgICAgfQotICAgICAgICAgIHF1ZXVlLl9xdWV1ZUJlaW5n
Rmx1c2hlZCA9IG51bGw7Ci0gICAgICAgICAgaWYgKG51bWJlck9mUXVldWVJdGVtcyAmJiBhZnRl
cikgeyBhZnRlcigpOyB9Ci0KLSAgICAgICAgICBpZiAoKHByaW9yUXVldWVOYW1lSW5kZXggPSBp
bmRleE9mUHJpb3JRdWV1ZVdpdGhBY3Rpb25zKHRoaXMsIHF1ZXVlTmFtZUluZGV4KSkgIT09IC0x
KSB7Ci0gICAgICAgICAgICBxdWV1ZU5hbWVJbmRleCA9IHByaW9yUXVldWVOYW1lSW5kZXg7Ci0g
ICAgICAgICAgICBjb250aW51ZSBvdXRlcmxvb3A7Ci0gICAgICAgICAgfQotCi0gICAgICAgICAg
cXVldWVOYW1lSW5kZXgrKzsKLSAgICAgICAgfQotICAgICAgfQotICAgIH07Ci0KLSAgICBmdW5j
dGlvbiBpbmRleE9mUHJpb3JRdWV1ZVdpdGhBY3Rpb25zKGRhcSwgY3VycmVudFF1ZXVlSW5kZXgp
IHsKLSAgICAgIHZhciBxdWV1ZU5hbWUsIHF1ZXVlOwotCi0gICAgICBmb3IgKHZhciBpID0gMCwg
bCA9IGN1cnJlbnRRdWV1ZUluZGV4OyBpIDw9IGw7IGkrKykgewotICAgICAgICBxdWV1ZU5hbWUg
PSBkYXEucXVldWVOYW1lc1tpXTsKLSAgICAgICAgcXVldWUgPSBkYXEucXVldWVzW3F1ZXVlTmFt
ZV07Ci0gICAgICAgIGlmIChxdWV1ZS5fcXVldWUubGVuZ3RoKSB7IHJldHVybiBpOyB9Ci0gICAg
ICB9Ci0KLSAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0KLQotICAgIF9fZXhwb3J0c19fLkRlZmVy
cmVkQWN0aW9uUXVldWVzID0gRGVmZXJyZWRBY3Rpb25RdWV1ZXM7Ci0gIH0pOwotCi1kZWZpbmUo
ImJhY2tidXJuZXIiLAotICBbImJhY2tidXJuZXIvZGVmZXJyZWRfYWN0aW9uX3F1ZXVlcyIsImV4
cG9ydHMiXSwKLSAgZnVuY3Rpb24oX19kZXBlbmRlbmN5MV9fLCBfX2V4cG9ydHNfXykgewotICAg
ICJ1c2Ugc3RyaWN0IjsKLSAgICB2YXIgRGVmZXJyZWRBY3Rpb25RdWV1ZXMgPSBfX2RlcGVuZGVu
Y3kxX18uRGVmZXJyZWRBY3Rpb25RdWV1ZXM7Ci0KLSAgICB2YXIgc2xpY2UgPSBbXS5zbGljZSwK
LSAgICAgICAgcG9wID0gW10ucG9wLAotICAgICAgICB0aHJvdHRsZXJzID0gW10sCi0gICAgICAg
IGRlYm91bmNlZXMgPSBbXSwKLSAgICAgICAgdGltZXJzID0gW10sCi0gICAgICAgIGF1dG9ydW4s
IGxhdGVyVGltZXIsIGxhdGVyVGltZXJFeHBpcmVzQXQsCi0gICAgICAgIGdsb2JhbCA9IHRoaXMs
Ci0gICAgICAgIE5VTUJFUiA9IC9cZCsvOwotCi0gICAgZnVuY3Rpb24gaXNDb2VyY2FibGVOdW1i
ZXIobnVtYmVyKSB7Ci0gICAgICByZXR1cm4gdHlwZW9mIG51bWJlciA9PT0gJ251bWJlcicgfHwg
TlVNQkVSLnRlc3QobnVtYmVyKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBCYWNrYnVybmVyKHF1
ZXVlTmFtZXMsIG9wdGlvbnMpIHsKLSAgICAgIHRoaXMucXVldWVOYW1lcyA9IHF1ZXVlTmFtZXM7
Ci0gICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OwotICAgICAgaWYgKCF0aGlzLm9w
dGlvbnMuZGVmYXVsdFF1ZXVlKSB7Ci0gICAgICAgIHRoaXMub3B0aW9ucy5kZWZhdWx0UXVldWUg
PSBxdWV1ZU5hbWVzWzBdOwotICAgICAgfQotICAgICAgdGhpcy5pbnN0YW5jZVN0YWNrID0gW107
Ci0gICAgfQotCi0gICAgQmFja2J1cm5lci5wcm90b3R5cGUgPSB7Ci0gICAgICBxdWV1ZU5hbWVz
OiBudWxsLAotICAgICAgb3B0aW9uczogbnVsbCwKLSAgICAgIGN1cnJlbnRJbnN0YW5jZTogbnVs
bCwKLSAgICAgIGluc3RhbmNlU3RhY2s6IG51bGwsCi0KLSAgICAgIGJlZ2luOiBmdW5jdGlvbigp
IHsKLSAgICAgICAgdmFyIG9uQmVnaW4gPSB0aGlzLm9wdGlvbnMgJiYgdGhpcy5vcHRpb25zLm9u
QmVnaW4sCi0gICAgICAgICAgICBwcmV2aW91c0luc3RhbmNlID0gdGhpcy5jdXJyZW50SW5zdGFu
Y2U7Ci0KLSAgICAgICAgaWYgKHByZXZpb3VzSW5zdGFuY2UpIHsKLSAgICAgICAgICB0aGlzLmlu
c3RhbmNlU3RhY2sucHVzaChwcmV2aW91c0luc3RhbmNlKTsKLSAgICAgICAgfQotCi0gICAgICAg
IHRoaXMuY3VycmVudEluc3RhbmNlID0gbmV3IERlZmVycmVkQWN0aW9uUXVldWVzKHRoaXMucXVl
dWVOYW1lcywgdGhpcy5vcHRpb25zKTsKLSAgICAgICAgaWYgKG9uQmVnaW4pIHsKLSAgICAgICAg
ICBvbkJlZ2luKHRoaXMuY3VycmVudEluc3RhbmNlLCBwcmV2aW91c0luc3RhbmNlKTsKLSAgICAg
ICAgfQotICAgICAgfSwKLQotICAgICAgZW5kOiBmdW5jdGlvbigpIHsKLSAgICAgICAgdmFyIG9u
RW5kID0gdGhpcy5vcHRpb25zICYmIHRoaXMub3B0aW9ucy5vbkVuZCwKLSAgICAgICAgICAgIGN1
cnJlbnRJbnN0YW5jZSA9IHRoaXMuY3VycmVudEluc3RhbmNlLAotICAgICAgICAgICAgbmV4dElu
c3RhbmNlID0gbnVsbDsKLQotICAgICAgICB0cnkgewotICAgICAgICAgIGN1cnJlbnRJbnN0YW5j
ZS5mbHVzaCgpOwotICAgICAgICB9IGZpbmFsbHkgewotICAgICAgICAgIHRoaXMuY3VycmVudElu
c3RhbmNlID0gbnVsbDsKLQotICAgICAgICAgIGlmICh0aGlzLmluc3RhbmNlU3RhY2subGVuZ3Ro
KSB7Ci0gICAgICAgICAgICBuZXh0SW5zdGFuY2UgPSB0aGlzLmluc3RhbmNlU3RhY2sucG9wKCk7
Ci0gICAgICAgICAgICB0aGlzLmN1cnJlbnRJbnN0YW5jZSA9IG5leHRJbnN0YW5jZTsKLSAgICAg
ICAgICB9Ci0KLSAgICAgICAgICBpZiAob25FbmQpIHsKLSAgICAgICAgICAgIG9uRW5kKGN1cnJl
bnRJbnN0YW5jZSwgbmV4dEluc3RhbmNlKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAg
IH0sCi0KLSAgICAgIHJ1bjogZnVuY3Rpb24odGFyZ2V0LCBtZXRob2QgLyosIGFyZ3MgKi8pIHsK
LSAgICAgICAgdmFyIHJldDsKLSAgICAgICAgdGhpcy5iZWdpbigpOwotCi0gICAgICAgIGlmICgh
bWV0aG9kKSB7Ci0gICAgICAgICAgbWV0aG9kID0gdGFyZ2V0OwotICAgICAgICAgIHRhcmdldCA9
IG51bGw7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAodHlwZW9mIG1ldGhvZCA9PT0gJ3N0cmlu
ZycpIHsKLSAgICAgICAgICBtZXRob2QgPSB0YXJnZXRbbWV0aG9kXTsKLSAgICAgICAgfQotCi0g
ICAgICAgIC8vIFByZXZlbnQgU2FmYXJpIGRvdWJsZS1maW5hbGx5LgotICAgICAgICB2YXIgZmlu
YWxseUFscmVhZHlDYWxsZWQgPSBmYWxzZTsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICBpZiAo
YXJndW1lbnRzLmxlbmd0aCA+IDIpIHsKLSAgICAgICAgICAgIHJldCA9IG1ldGhvZC5hcHBseSh0
YXJnZXQsIHNsaWNlLmNhbGwoYXJndW1lbnRzLCAyKSk7Ci0gICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIHJldCA9IG1ldGhvZC5jYWxsKHRhcmdldCk7Ci0gICAgICAgICAgfQotICAgICAg
ICB9IGZpbmFsbHkgewotICAgICAgICAgIGlmICghZmluYWxseUFscmVhZHlDYWxsZWQpIHsKLSAg
ICAgICAgICAgIGZpbmFsbHlBbHJlYWR5Q2FsbGVkID0gdHJ1ZTsKLSAgICAgICAgICAgIHRoaXMu
ZW5kKCk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHJldHVybiByZXQ7Ci0gICAg
ICB9LAotCi0gICAgICBkZWZlcjogZnVuY3Rpb24ocXVldWVOYW1lLCB0YXJnZXQsIG1ldGhvZCAv
KiAsIGFyZ3MgKi8pIHsKLSAgICAgICAgaWYgKCFtZXRob2QpIHsKLSAgICAgICAgICBtZXRob2Qg
PSB0YXJnZXQ7Ci0gICAgICAgICAgdGFyZ2V0ID0gbnVsbDsKLSAgICAgICAgfQotCi0gICAgICAg
IGlmICh0eXBlb2YgbWV0aG9kID09PSAnc3RyaW5nJykgewotICAgICAgICAgIG1ldGhvZCA9IHRh
cmdldFttZXRob2RdOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIHN0YWNrID0gdGhpcy5ERUJV
RyA/IG5ldyBFcnJvcigpIDogdW5kZWZpbmVkLAotICAgICAgICAgICAgYXJncyA9IGFyZ3VtZW50
cy5sZW5ndGggPiAzID8gc2xpY2UuY2FsbChhcmd1bWVudHMsIDMpIDogdW5kZWZpbmVkOwotICAg
ICAgICBpZiAoIXRoaXMuY3VycmVudEluc3RhbmNlKSB7IGNyZWF0ZUF1dG9ydW4odGhpcyk7IH0K
LSAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudEluc3RhbmNlLnNjaGVkdWxlKHF1ZXVlTmFtZSwg
dGFyZ2V0LCBtZXRob2QsIGFyZ3MsIGZhbHNlLCBzdGFjayk7Ci0gICAgICB9LAotCi0gICAgICBk
ZWZlck9uY2U6IGZ1bmN0aW9uKHF1ZXVlTmFtZSwgdGFyZ2V0LCBtZXRob2QgLyogLCBhcmdzICov
KSB7Ci0gICAgICAgIGlmICghbWV0aG9kKSB7Ci0gICAgICAgICAgbWV0aG9kID0gdGFyZ2V0Owot
ICAgICAgICAgIHRhcmdldCA9IG51bGw7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAodHlwZW9m
IG1ldGhvZCA9PT0gJ3N0cmluZycpIHsKLSAgICAgICAgICBtZXRob2QgPSB0YXJnZXRbbWV0aG9k
XTsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciBzdGFjayA9IHRoaXMuREVCVUcgPyBuZXcgRXJy
b3IoKSA6IHVuZGVmaW5lZCwKLSAgICAgICAgICAgIGFyZ3MgPSBhcmd1bWVudHMubGVuZ3RoID4g
MyA/IHNsaWNlLmNhbGwoYXJndW1lbnRzLCAzKSA6IHVuZGVmaW5lZDsKLSAgICAgICAgaWYgKCF0
aGlzLmN1cnJlbnRJbnN0YW5jZSkgeyBjcmVhdGVBdXRvcnVuKHRoaXMpOyB9Ci0gICAgICAgIHJl
dHVybiB0aGlzLmN1cnJlbnRJbnN0YW5jZS5zY2hlZHVsZShxdWV1ZU5hbWUsIHRhcmdldCwgbWV0
aG9kLCBhcmdzLCB0cnVlLCBzdGFjayk7Ci0gICAgICB9LAotCi0gICAgICBzZXRUaW1lb3V0OiBm
dW5jdGlvbigpIHsKLSAgICAgICAgdmFyIGFyZ3MgPSBzbGljZS5jYWxsKGFyZ3VtZW50cyk7Ci0g
ICAgICAgIHZhciBsZW5ndGggPSBhcmdzLmxlbmd0aDsKLSAgICAgICAgdmFyIG1ldGhvZCwgd2Fp
dCwgdGFyZ2V0OwotICAgICAgICB2YXIgc2VsZiA9IHRoaXM7Ci0gICAgICAgIHZhciBtZXRob2RP
clRhcmdldCwgbWV0aG9kT3JXYWl0LCBtZXRob2RPckFyZ3M7Ci0KLSAgICAgICAgaWYgKGxlbmd0
aCA9PT0gMCkgewotICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfSBlbHNlIGlmIChsZW5ndGgg
PT09IDEpIHsKLSAgICAgICAgICBtZXRob2QgPSBhcmdzLnNoaWZ0KCk7Ci0gICAgICAgICAgd2Fp
dCA9IDA7Ci0gICAgICAgIH0gZWxzZSBpZiAobGVuZ3RoID09PSAyKSB7Ci0gICAgICAgICAgbWV0
aG9kT3JUYXJnZXQgPSBhcmdzWzBdOwotICAgICAgICAgIG1ldGhvZE9yV2FpdCA9IGFyZ3NbMV07
Ci0KLSAgICAgICAgICBpZiAodHlwZW9mIG1ldGhvZE9yV2FpdCA9PT0gJ2Z1bmN0aW9uJyB8fCB0
eXBlb2YgIG1ldGhvZE9yVGFyZ2V0W21ldGhvZE9yV2FpdF0gPT09ICdmdW5jdGlvbicpIHsKLSAg
ICAgICAgICAgIHRhcmdldCA9IGFyZ3Muc2hpZnQoKTsKLSAgICAgICAgICAgIG1ldGhvZCA9IGFy
Z3Muc2hpZnQoKTsKLSAgICAgICAgICAgIHdhaXQgPSAwOwotICAgICAgICAgIH0gZWxzZSBpZiAo
aXNDb2VyY2FibGVOdW1iZXIobWV0aG9kT3JXYWl0KSkgewotICAgICAgICAgICAgbWV0aG9kID0g
YXJncy5zaGlmdCgpOwotICAgICAgICAgICAgd2FpdCA9IGFyZ3Muc2hpZnQoKTsKLSAgICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgbWV0aG9kID0gYXJncy5zaGlmdCgpOwotICAgICAgICAg
ICAgd2FpdCA9ICAwOwotICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICB2
YXIgbGFzdCA9IGFyZ3NbYXJncy5sZW5ndGggLSAxXTsKLQotICAgICAgICAgIGlmIChpc0NvZXJj
YWJsZU51bWJlcihsYXN0KSkgewotICAgICAgICAgICAgd2FpdCA9IGFyZ3MucG9wKCk7Ci0gICAg
ICAgICAgfQotCi0gICAgICAgICAgbWV0aG9kT3JUYXJnZXQgPSBhcmdzWzBdOwotICAgICAgICAg
IG1ldGhvZE9yQXJncyA9IGFyZ3NbMV07Ci0KLSAgICAgICAgICBpZiAodHlwZW9mIG1ldGhvZE9y
QXJncyA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIG1ldGhvZE9yQXJncyA9PT0gJ3N0cmluZycg
JiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bWV0aG9kT3JUYXJnZXQgIT09IG51bGwgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kT3JBcmdzIGluIG1ldGhvZE9yVGFyZ2V0KSkg
ewotICAgICAgICAgICAgdGFyZ2V0ID0gYXJncy5zaGlmdCgpOwotICAgICAgICAgICAgbWV0aG9k
ID0gYXJncy5zaGlmdCgpOwotICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtZXRob2Qg
PSBhcmdzLnNoaWZ0KCk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIGV4
ZWN1dGVBdCA9ICgrbmV3IERhdGUoKSkgKyBwYXJzZUludCh3YWl0LCAxMCk7Ci0KLSAgICAgICAg
aWYgKHR5cGVvZiBtZXRob2QgPT09ICdzdHJpbmcnKSB7Ci0gICAgICAgICAgbWV0aG9kID0gdGFy
Z2V0W21ldGhvZF07Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBmbigpIHsKLSAgICAg
ICAgICBtZXRob2QuYXBwbHkodGFyZ2V0LCBhcmdzKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8v
IGZpbmQgcG9zaXRpb24gdG8gaW5zZXJ0IC0gVE9ETzogYmluYXJ5IHNlYXJjaAotICAgICAgICB2
YXIgaSwgbDsKLSAgICAgICAgZm9yIChpID0gMCwgbCA9IHRpbWVycy5sZW5ndGg7IGkgPCBsOyBp
ICs9IDIpIHsKLSAgICAgICAgICBpZiAoZXhlY3V0ZUF0IDwgdGltZXJzW2ldKSB7IGJyZWFrOyB9
Ci0gICAgICAgIH0KLQotICAgICAgICB0aW1lcnMuc3BsaWNlKGksIDAsIGV4ZWN1dGVBdCwgZm4p
OwotCi0gICAgICAgIHVwZGF0ZUxhdGVyVGltZXIoc2VsZiwgZXhlY3V0ZUF0LCB3YWl0KTsKLQot
ICAgICAgICByZXR1cm4gZm47Ci0gICAgICB9LAotCi0gICAgICB0aHJvdHRsZTogZnVuY3Rpb24o
dGFyZ2V0LCBtZXRob2QgLyogLCBhcmdzLCB3YWl0ICovKSB7Ci0gICAgICAgIHZhciBzZWxmID0g
dGhpcywKLSAgICAgICAgICAgIGFyZ3MgPSBhcmd1bWVudHMsCi0gICAgICAgICAgICB3YWl0ID0g
cGFyc2VJbnQocG9wLmNhbGwoYXJncyksIDEwKSwKLSAgICAgICAgICAgIHRocm90dGxlciwKLSAg
ICAgICAgICAgIGluZGV4LAotICAgICAgICAgICAgdGltZXI7Ci0KLSAgICAgICAgaW5kZXggPSBm
aW5kVGhyb3R0bGVyKHRhcmdldCwgbWV0aG9kKTsKLSAgICAgICAgaWYgKGluZGV4ID4gLTEpIHsg
cmV0dXJuIHRocm90dGxlcnNbaW5kZXhdOyB9IC8vIHRocm90dGxlZAotCi0gICAgICAgIHRpbWVy
ID0gZ2xvYmFsLnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgc2VsZi5ydW4uYXBw
bHkoc2VsZiwgYXJncyk7Ci0KLSAgICAgICAgICB2YXIgaW5kZXggPSBmaW5kVGhyb3R0bGVyKHRh
cmdldCwgbWV0aG9kKTsKLSAgICAgICAgICBpZiAoaW5kZXggPiAtMSkgeyB0aHJvdHRsZXJzLnNw
bGljZShpbmRleCwgMSk7IH0KLSAgICAgICAgfSwgd2FpdCk7Ci0KLSAgICAgICAgdGhyb3R0bGVy
ID0gW3RhcmdldCwgbWV0aG9kLCB0aW1lcl07Ci0KLSAgICAgICAgdGhyb3R0bGVycy5wdXNoKHRo
cm90dGxlcik7Ci0KLSAgICAgICAgcmV0dXJuIHRocm90dGxlcjsKLSAgICAgIH0sCi0KLSAgICAg
IGRlYm91bmNlOiBmdW5jdGlvbih0YXJnZXQsIG1ldGhvZCAvKiAsIGFyZ3MsIHdhaXQsIFtpbW1l
ZGlhdGVdICovKSB7Ci0gICAgICAgIHZhciBzZWxmID0gdGhpcywKLSAgICAgICAgICAgIGFyZ3Mg
PSBhcmd1bWVudHMsCi0gICAgICAgICAgICBpbW1lZGlhdGUgPSBwb3AuY2FsbChhcmdzKSwKLSAg
ICAgICAgICAgIHdhaXQsCi0gICAgICAgICAgICBpbmRleCwKLSAgICAgICAgICAgIGRlYm91bmNl
ZSwKLSAgICAgICAgICAgIHRpbWVyOwotCi0gICAgICAgIGlmICh0eXBlb2YgaW1tZWRpYXRlID09
PSAibnVtYmVyIiB8fCB0eXBlb2YgaW1tZWRpYXRlID09PSAic3RyaW5nIikgewotICAgICAgICAg
IHdhaXQgPSBpbW1lZGlhdGU7Ci0gICAgICAgICAgaW1tZWRpYXRlID0gZmFsc2U7Ci0gICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgd2FpdCA9IHBvcC5jYWxsKGFyZ3MpOwotICAgICAgICB9Ci0K
LSAgICAgICAgd2FpdCA9IHBhcnNlSW50KHdhaXQsIDEwKTsKLSAgICAgICAgLy8gUmVtb3ZlIGRl
Ym91bmNlZQotICAgICAgICBpbmRleCA9IGZpbmREZWJvdW5jZWUodGFyZ2V0LCBtZXRob2QpOwot
Ci0gICAgICAgIGlmIChpbmRleCA+IC0xKSB7Ci0gICAgICAgICAgZGVib3VuY2VlID0gZGVib3Vu
Y2Vlc1tpbmRleF07Ci0gICAgICAgICAgZGVib3VuY2Vlcy5zcGxpY2UoaW5kZXgsIDEpOwotICAg
ICAgICAgIGNsZWFyVGltZW91dChkZWJvdW5jZWVbMl0pOwotICAgICAgICB9Ci0KLSAgICAgICAg
dGltZXIgPSBnbG9iYWwuc2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgICBpZiAoIWlt
bWVkaWF0ZSkgewotICAgICAgICAgICAgc2VsZi5ydW4uYXBwbHkoc2VsZiwgYXJncyk7Ci0gICAg
ICAgICAgfQotICAgICAgICAgIHZhciBpbmRleCA9IGZpbmREZWJvdW5jZWUodGFyZ2V0LCBtZXRo
b2QpOwotICAgICAgICAgIGlmIChpbmRleCA+IC0xKSB7Ci0gICAgICAgICAgICBkZWJvdW5jZWVz
LnNwbGljZShpbmRleCwgMSk7Ci0gICAgICAgICAgfQotICAgICAgICB9LCB3YWl0KTsKLQotICAg
ICAgICBpZiAoaW1tZWRpYXRlICYmIGluZGV4ID09PSAtMSkgewotICAgICAgICAgIHNlbGYucnVu
LmFwcGx5KHNlbGYsIGFyZ3MpOwotICAgICAgICB9Ci0KLSAgICAgICAgZGVib3VuY2VlID0gW3Rh
cmdldCwgbWV0aG9kLCB0aW1lcl07Ci0KLSAgICAgICAgZGVib3VuY2Vlcy5wdXNoKGRlYm91bmNl
ZSk7Ci0KLSAgICAgICAgcmV0dXJuIGRlYm91bmNlZTsKLSAgICAgIH0sCi0KLSAgICAgIGNhbmNl
bFRpbWVyczogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZhciBpLCBsZW47Ci0KLSAgICAgICAgZm9y
IChpID0gMCwgbGVuID0gdGhyb3R0bGVycy5sZW5ndGg7IGkgPCBsZW47IGkrKykgewotICAgICAg
ICAgIGNsZWFyVGltZW91dCh0aHJvdHRsZXJzW2ldWzJdKTsKLSAgICAgICAgfQotICAgICAgICB0
aHJvdHRsZXJzID0gW107Ci0KLSAgICAgICAgZm9yIChpID0gMCwgbGVuID0gZGVib3VuY2Vlcy5s
ZW5ndGg7IGkgPCBsZW47IGkrKykgewotICAgICAgICAgIGNsZWFyVGltZW91dChkZWJvdW5jZWVz
W2ldWzJdKTsKLSAgICAgICAgfQotICAgICAgICBkZWJvdW5jZWVzID0gW107Ci0KLSAgICAgICAg
aWYgKGxhdGVyVGltZXIpIHsKLSAgICAgICAgICBjbGVhclRpbWVvdXQobGF0ZXJUaW1lcik7Ci0g
ICAgICAgICAgbGF0ZXJUaW1lciA9IG51bGw7Ci0gICAgICAgIH0KLSAgICAgICAgdGltZXJzID0g
W107Ci0KLSAgICAgICAgaWYgKGF1dG9ydW4pIHsKLSAgICAgICAgICBjbGVhclRpbWVvdXQoYXV0
b3J1bik7Ci0gICAgICAgICAgYXV0b3J1biA9IG51bGw7Ci0gICAgICAgIH0KLSAgICAgIH0sCi0K
LSAgICAgIGhhc1RpbWVyczogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHJldHVybiAhIXRpbWVycy5s
ZW5ndGggfHwgYXV0b3J1bjsKLSAgICAgIH0sCi0KLSAgICAgIGNhbmNlbDogZnVuY3Rpb24odGlt
ZXIpIHsKLSAgICAgICAgdmFyIHRpbWVyVHlwZSA9IHR5cGVvZiB0aW1lcjsKLQotICAgICAgICBp
ZiAodGltZXIgJiYgdGltZXJUeXBlID09PSAnb2JqZWN0JyAmJiB0aW1lci5xdWV1ZSAmJiB0aW1l
ci5tZXRob2QpIHsgLy8gd2UncmUgY2FuY2VsbGluZyBhIGRlZmVyT25jZQotICAgICAgICAgIHJl
dHVybiB0aW1lci5xdWV1ZS5jYW5jZWwodGltZXIpOwotICAgICAgICB9IGVsc2UgaWYgKHRpbWVy
VHlwZSA9PT0gJ2Z1bmN0aW9uJykgeyAvLyB3ZSdyZSBjYW5jZWxsaW5nIGEgc2V0VGltZW91dAot
ICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gdGltZXJzLmxlbmd0aDsgaSA8IGw7IGkgKz0g
MikgewotICAgICAgICAgICAgaWYgKHRpbWVyc1tpICsgMV0gPT09IHRpbWVyKSB7Ci0gICAgICAg
ICAgICAgIHRpbWVycy5zcGxpY2UoaSwgMik7IC8vIHJlbW92ZSB0aGUgdHdvIGVsZW1lbnRzCi0g
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAg
ICAgICAgfSBlbHNlIGlmICh3aW5kb3cudG9TdHJpbmcuY2FsbCh0aW1lcikgPT09ICJbb2JqZWN0
IEFycmF5XSIpeyAvLyB3ZSdyZSBjYW5jZWxsaW5nIGEgdGhyb3R0bGUgb3IgZGVib3VuY2UKLSAg
ICAgICAgICByZXR1cm4gdGhpcy5fY2FuY2VsSXRlbShmaW5kVGhyb3R0bGVyLCB0aHJvdHRsZXJz
LCB0aW1lcikgfHwgCi0gICAgICAgICAgICAgICAgICAgdGhpcy5fY2FuY2VsSXRlbShmaW5kRGVi
b3VuY2VlLCBkZWJvdW5jZWVzLCB0aW1lcik7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
cmV0dXJuOyAvLyB0aW1lciB3YXMgbnVsbCBvciBub3QgYSB0aW1lcgotICAgICAgICB9Ci0gICAg
ICB9LAotCi0gICAgICBfY2FuY2VsSXRlbTogZnVuY3Rpb24oZmluZE1ldGhvZCwgYXJyYXksIHRp
bWVyKXsKLSAgICAgICAgdmFyIGl0ZW0sCi0gICAgICAgICAgICBpbmRleDsKLQotICAgICAgICBp
ZiAodGltZXIubGVuZ3RoIDwgMykgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgICAgICBpbmRleCA9
IGZpbmRNZXRob2QodGltZXJbMF0sIHRpbWVyWzFdKTsKLQotICAgICAgICBpZihpbmRleCA+IC0x
KSB7Ci0KLSAgICAgICAgICBpdGVtID0gYXJyYXlbaW5kZXhdOwotCi0gICAgICAgICAgaWYoaXRl
bVsyXSA9PT0gdGltZXJbMl0pewotICAgICAgICAgICAgYXJyYXkuc3BsaWNlKGluZGV4LCAxKTsK
LSAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lclsyXSk7Ci0gICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICB9Ci0KLSAgICB9OwotCi0gICAgQmFja2J1cm5lci5wcm90b3R5cGUuc2NoZWR1bGUgPSBC
YWNrYnVybmVyLnByb3RvdHlwZS5kZWZlcjsKLSAgICBCYWNrYnVybmVyLnByb3RvdHlwZS5zY2hl
ZHVsZU9uY2UgPSBCYWNrYnVybmVyLnByb3RvdHlwZS5kZWZlck9uY2U7Ci0gICAgQmFja2J1cm5l
ci5wcm90b3R5cGUubGF0ZXIgPSBCYWNrYnVybmVyLnByb3RvdHlwZS5zZXRUaW1lb3V0OwotCi0g
ICAgZnVuY3Rpb24gY3JlYXRlQXV0b3J1bihiYWNrYnVybmVyKSB7Ci0gICAgICBiYWNrYnVybmVy
LmJlZ2luKCk7Ci0gICAgICBhdXRvcnVuID0gZ2xvYmFsLnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
Ci0gICAgICAgIGF1dG9ydW4gPSBudWxsOwotICAgICAgICBiYWNrYnVybmVyLmVuZCgpOwotICAg
ICAgfSk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gdXBkYXRlTGF0ZXJUaW1lcihzZWxmLCBleGVj
dXRlQXQsIHdhaXQpIHsKLSAgICAgIGlmICghbGF0ZXJUaW1lciB8fCBleGVjdXRlQXQgPCBsYXRl
clRpbWVyRXhwaXJlc0F0KSB7Ci0gICAgICAgIGlmIChsYXRlclRpbWVyKSB7Ci0gICAgICAgICAg
Y2xlYXJUaW1lb3V0KGxhdGVyVGltZXIpOwotICAgICAgICB9Ci0gICAgICAgIGxhdGVyVGltZXIg
PSBnbG9iYWwuc2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgICBsYXRlclRpbWVyID0g
bnVsbDsKLSAgICAgICAgICBsYXRlclRpbWVyRXhwaXJlc0F0ID0gbnVsbDsKLSAgICAgICAgICBl
eGVjdXRlVGltZXJzKHNlbGYpOwotICAgICAgICB9LCB3YWl0KTsKLSAgICAgICAgbGF0ZXJUaW1l
ckV4cGlyZXNBdCA9IGV4ZWN1dGVBdDsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBl
eGVjdXRlVGltZXJzKHNlbGYpIHsKLSAgICAgIHZhciBub3cgPSArbmV3IERhdGUoKSwKLSAgICAg
ICAgICB0aW1lLCBmbnMsIGksIGw7Ci0KLSAgICAgIHNlbGYucnVuKGZ1bmN0aW9uKCkgewotICAg
ICAgICAvLyBUT0RPOiBiaW5hcnkgc2VhcmNoCi0gICAgICAgIGZvciAoaSA9IDAsIGwgPSB0aW1l
cnMubGVuZ3RoOyBpIDwgbDsgaSArPSAyKSB7Ci0gICAgICAgICAgdGltZSA9IHRpbWVyc1tpXTsK
LSAgICAgICAgICBpZiAodGltZSA+IG5vdykgeyBicmVhazsgfQotICAgICAgICB9Ci0KLSAgICAg
ICAgZm5zID0gdGltZXJzLnNwbGljZSgwLCBpKTsKLQotICAgICAgICBmb3IgKGkgPSAxLCBsID0g
Zm5zLmxlbmd0aDsgaSA8IGw7IGkgKz0gMikgewotICAgICAgICAgIHNlbGYuc2NoZWR1bGUoc2Vs
Zi5vcHRpb25zLmRlZmF1bHRRdWV1ZSwgbnVsbCwgZm5zW2ldKTsKLSAgICAgICAgfQotICAgICAg
fSk7Ci0KLSAgICAgIGlmICh0aW1lcnMubGVuZ3RoKSB7Ci0gICAgICAgIHVwZGF0ZUxhdGVyVGlt
ZXIoc2VsZiwgdGltZXJzWzBdLCB0aW1lcnNbMF0gLSBub3cpOwotICAgICAgfQotICAgIH0KLQot
ICAgIGZ1bmN0aW9uIGZpbmREZWJvdW5jZWUodGFyZ2V0LCBtZXRob2QpIHsKLSAgICAgIHZhciBk
ZWJvdW5jZWUsCi0gICAgICAgICAgaW5kZXggPSAtMTsKLQotICAgICAgZm9yICh2YXIgaSA9IDAs
IGwgPSBkZWJvdW5jZWVzLmxlbmd0aDsgaSA8IGw7IGkrKykgewotICAgICAgICBkZWJvdW5jZWUg
PSBkZWJvdW5jZWVzW2ldOwotICAgICAgICBpZiAoZGVib3VuY2VlWzBdID09PSB0YXJnZXQgJiYg
ZGVib3VuY2VlWzFdID09PSBtZXRob2QpIHsKLSAgICAgICAgICBpbmRleCA9IGk7Ci0gICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgICAgcmV0dXJuIGluZGV4OwotICAg
IH0KLQotICAgIGZ1bmN0aW9uIGZpbmRUaHJvdHRsZXIodGFyZ2V0LCBtZXRob2QpIHsKLSAgICAg
IHZhciB0aHJvdHRsZXIsCi0gICAgICAgICAgaW5kZXggPSAtMTsKLQotICAgICAgZm9yICh2YXIg
aSA9IDAsIGwgPSB0aHJvdHRsZXJzLmxlbmd0aDsgaSA8IGw7IGkrKykgewotICAgICAgICB0aHJv
dHRsZXIgPSB0aHJvdHRsZXJzW2ldOwotICAgICAgICBpZiAodGhyb3R0bGVyWzBdID09PSB0YXJn
ZXQgJiYgdGhyb3R0bGVyWzFdID09PSBtZXRob2QpIHsKLSAgICAgICAgICBpbmRleCA9IGk7Ci0g
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgICAgcmV0dXJuIGluZGV4
OwotICAgIH0KLQotCi0gICAgX19leHBvcnRzX18uQmFja2J1cm5lciA9IEJhY2tidXJuZXI7Ci0g
IH0pOwotfSkoKTsKLQotCi0KLShmdW5jdGlvbigpIHsKLXZhciBvbkJlZ2luID0gZnVuY3Rpb24o
Y3VycmVudCkgewotICBFbWJlci5ydW4uY3VycmVudFJ1bkxvb3AgPSBjdXJyZW50OwotfTsKLQot
dmFyIG9uRW5kID0gZnVuY3Rpb24oY3VycmVudCwgbmV4dCkgewotICBFbWJlci5ydW4uY3VycmVu
dFJ1bkxvb3AgPSBuZXh0OwotfTsKLQotdmFyIEJhY2tidXJuZXIgPSByZXF1aXJlTW9kdWxlKCdi
YWNrYnVybmVyJykuQmFja2J1cm5lciwKLSAgICBiYWNrYnVybmVyID0gbmV3IEJhY2tidXJuZXIo
WydzeW5jJywgJ2FjdGlvbnMnLCAnZGVzdHJveSddLCB7Ci0gICAgICBzeW5jOiB7Ci0gICAgICAg
IGJlZm9yZTogRW1iZXIuYmVnaW5Qcm9wZXJ0eUNoYW5nZXMsCi0gICAgICAgIGFmdGVyOiBFbWJl
ci5lbmRQcm9wZXJ0eUNoYW5nZXMKLSAgICAgIH0sCi0gICAgICBkZWZhdWx0UXVldWU6ICdhY3Rp
b25zJywKLSAgICAgIG9uQmVnaW46IG9uQmVnaW4sCi0gICAgICBvbkVuZDogb25FbmQKLSAgICB9
KSwKLSAgICBzbGljZSA9IFtdLnNsaWNlOwotCi0vLyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi0vLyBFbWJlci5ydW4gLSB0aGlzIGlz
IGlkZWFsbHkgdGhlIG9ubHkgcHVibGljIEFQSSB0aGUgZGV2IHNlZXMKLS8vCi0KLS8qKgotICBS
dW5zIHRoZSBwYXNzZWQgdGFyZ2V0IGFuZCBtZXRob2QgaW5zaWRlIG9mIGEgUnVuTG9vcCwgZW5z
dXJpbmcgYW55Ci0gIGRlZmVycmVkIGFjdGlvbnMgaW5jbHVkaW5nIGJpbmRpbmdzIGFuZCB2aWV3
cyB1cGRhdGVzIGFyZSBmbHVzaGVkIGF0IHRoZQotICBlbmQuCi0KLSAgTm9ybWFsbHkgeW91IHNo
b3VsZCBub3QgbmVlZCB0byBpbnZva2UgdGhpcyBtZXRob2QgeW91cnNlbGYuIEhvd2V2ZXIgaWYK
LSAgeW91IGFyZSBpbXBsZW1lbnRpbmcgcmF3IGV2ZW50IGhhbmRsZXJzIHdoZW4gaW50ZXJmYWNp
bmcgd2l0aCBvdGhlcgotICBsaWJyYXJpZXMgb3IgcGx1Z2lucywgeW91IHNob3VsZCBwcm9iYWJs
eSB3cmFwIGFsbCBvZiB5b3VyIGNvZGUgaW5zaWRlIHRoaXMKLSAgY2FsbC4KLQotICBgYGBqYXZh
c2NyaXB0Ci0gIEVtYmVyLnJ1bihmdW5jdGlvbigpIHsKLSAgICAvLyBjb2RlIHRvIGJlIGV4ZWN1
dGUgd2l0aGluIGEgUnVuTG9vcAotICB9KTsKLSAgYGBgCi0KLSAgQGNsYXNzIHJ1bgotICBAbmFt
ZXNwYWNlIEVtYmVyCi0gIEBzdGF0aWMKLSAgQGNvbnN0cnVjdG9yCi0gIEBwYXJhbSB7T2JqZWN0
fSBbdGFyZ2V0XSB0YXJnZXQgb2YgbWV0aG9kIHRvIGNhbGwKLSAgQHBhcmFtIHtGdW5jdGlvbnxT
dHJpbmd9IG1ldGhvZCBNZXRob2QgdG8gaW52b2tlLgotICAgIE1heSBiZSBhIGZ1bmN0aW9uIG9y
IGEgc3RyaW5nLiBJZiB5b3UgcGFzcyBhIHN0cmluZwotICAgIHRoZW4gaXQgd2lsbCBiZSBsb29r
ZWQgdXAgb24gdGhlIHBhc3NlZCB0YXJnZXQuCi0gIEBwYXJhbSB7T2JqZWN0fSBbYXJncypdIEFu
eSBhZGRpdGlvbmFsIGFyZ3VtZW50cyB5b3Ugd2lzaCB0byBwYXNzIHRvIHRoZSBtZXRob2QuCi0g
IEByZXR1cm4ge09iamVjdH0gcmV0dXJuIHZhbHVlIGZyb20gaW52b2tpbmcgdGhlIHBhc3NlZCBm
dW5jdGlvbi4KLSovCi1FbWJlci5ydW4gPSBmdW5jdGlvbih0YXJnZXQsIG1ldGhvZCkgewotICB2
YXIgcmV0OwotCi0gIGlmIChFbWJlci5vbmVycm9yKSB7Ci0gICAgdHJ5IHsKLSAgICAgIHJldCA9
IGJhY2tidXJuZXIucnVuLmFwcGx5KGJhY2tidXJuZXIsIGFyZ3VtZW50cyk7Ci0gICAgfSBjYXRj
aCAoZSkgewotICAgICAgRW1iZXIub25lcnJvcihlKTsKLSAgICB9Ci0gIH0gZWxzZSB7Ci0gICAg
cmV0ID0gYmFja2J1cm5lci5ydW4uYXBwbHkoYmFja2J1cm5lciwgYXJndW1lbnRzKTsKLSAgfQot
Ci0gIHJldHVybiByZXQ7Ci19OwotCi0vKioKLSAgSWYgbm8gcnVuLWxvb3AgaXMgcHJlc2VudCwg
aXQgY3JlYXRlcyBhIG5ldyBvbmUuIElmIGEgcnVuIGxvb3AgaXMKLSAgcHJlc2VudCBpdCB3aWxs
IHF1ZXVlIGl0c2VsZiB0byBydW4gb24gdGhlIGV4aXN0aW5nIHJ1bi1sb29wcyBhY3Rpb24KLSAg
cXVldWUuCi0KLSAgUGxlYXNlIG5vdGU6IFRoaXMgaXMgbm90IGZvciBub3JtYWwgdXNhZ2UsIGFu
ZCBzaG91bGQgYmUgdXNlZCBzcGFyaW5nbHkuCi0KLSAgSWYgaW52b2tlZCB3aGVuIG5vdCB3aXRo
aW4gYSBydW4gbG9vcDoKLQotICBgYGBqYXZhc2NyaXB0Ci0gIEVtYmVyLnJ1bi5qb2luKGZ1bmN0
aW9uKCkgewotICAgIC8vIGNyZWF0ZXMgYSBuZXcgcnVuLWxvb3AKLSAgfSk7Ci0gIGBgYAotCi0g
IEFsdGVybmF0aXZlbHksIGlmIGNhbGxlZCB3aXRoaW4gYW4gZXhpc3RpbmcgcnVuIGxvb3A6Ci0K
LSAgYGBgamF2YXNjcmlwdAotICBFbWJlci5ydW4oZnVuY3Rpb24oKSB7Ci0gICAgLy8gY3JlYXRl
cyBhIG5ldyBydW4tbG9vcAotICAgIEVtYmVyLnJ1bi5qb2luKGZ1bmN0aW9uKCkgewotICAgICAg
Ly8gam9pbnMgd2l0aCB0aGUgZXhpc3RpbmcgcnVuLWxvb3AsIGFuZCBxdWV1ZXMgZm9yIGludm9j
YXRpb24gb24KLSAgICAgIC8vIHRoZSBleGlzdGluZyBydW4tbG9vcHMgYWN0aW9uIHF1ZXVlLgot
ICAgIH0pOwotICB9KTsKLSAgYGBgCi0KLSAgQG1ldGhvZCBqb2luCi0gIEBuYW1lc3BhY2UgRW1i
ZXIKLSAgQHBhcmFtIHtPYmplY3R9IFt0YXJnZXRdIHRhcmdldCBvZiBtZXRob2QgdG8gY2FsbAot
ICBAcGFyYW0ge0Z1bmN0aW9ufFN0cmluZ30gbWV0aG9kIE1ldGhvZCB0byBpbnZva2UuCi0gICAg
TWF5IGJlIGEgZnVuY3Rpb24gb3IgYSBzdHJpbmcuIElmIHlvdSBwYXNzIGEgc3RyaW5nCi0gICAg
dGhlbiBpdCB3aWxsIGJlIGxvb2tlZCB1cCBvbiB0aGUgcGFzc2VkIHRhcmdldC4KLSAgQHBhcmFt
IHtPYmplY3R9IFthcmdzKl0gQW55IGFkZGl0aW9uYWwgYXJndW1lbnRzIHlvdSB3aXNoIHRvIHBh
c3MgdG8gdGhlIG1ldGhvZC4KLSAgQHJldHVybiB7T2JqZWN0fSBSZXR1cm4gdmFsdWUgZnJvbSBp
bnZva2luZyB0aGUgcGFzc2VkIGZ1bmN0aW9uLiBQbGVhc2Ugbm90ZSwKLSAgd2hlbiBjYWxsZWQg
d2l0aGluIGFuIGV4aXN0aW5nIGxvb3AsIG5vIHJldHVybiB2YWx1ZSBpcyBwb3NzaWJsZS4KLSov
Ci1FbWJlci5ydW4uam9pbiA9IGZ1bmN0aW9uKHRhcmdldCwgbWV0aG9kKSB7Ci0gIGlmICghRW1i
ZXIucnVuLmN1cnJlbnRSdW5Mb29wKSB7Ci0gICAgcmV0dXJuIEVtYmVyLnJ1bi5hcHBseShFbWJl
ci5ydW4sIGFyZ3VtZW50cyk7Ci0gIH0KLQotICB2YXIgYXJncyA9IHNsaWNlLmNhbGwoYXJndW1l
bnRzKTsKLSAgYXJncy51bnNoaWZ0KCdhY3Rpb25zJyk7Ci0gIEVtYmVyLnJ1bi5zY2hlZHVsZS5h
cHBseShFbWJlci5ydW4sIGFyZ3MpOwotfTsKLQotRW1iZXIucnVuLmJhY2tidXJuZXIgPSBiYWNr
YnVybmVyOwotCi12YXIgcnVuID0gRW1iZXIucnVuOwotCi1FbWJlci5ydW4uY3VycmVudFJ1bkxv
b3AgPSBudWxsOwotCi1FbWJlci5ydW4ucXVldWVzID0gYmFja2J1cm5lci5xdWV1ZU5hbWVzOwot
Ci0vKioKLSAgQmVnaW5zIGEgbmV3IFJ1bkxvb3AuIEFueSBkZWZlcnJlZCBhY3Rpb25zIGludm9r
ZWQgYWZ0ZXIgdGhlIGJlZ2luIHdpbGwKLSAgYmUgYnVmZmVyZWQgdW50aWwgeW91IGludm9rZSBh
IG1hdGNoaW5nIGNhbGwgdG8gYEVtYmVyLnJ1bi5lbmQoKWAuIFRoaXMgaXMKLSAgYSBsb3dlci1s
ZXZlbCB3YXkgdG8gdXNlIGEgUnVuTG9vcCBpbnN0ZWFkIG9mIHVzaW5nIGBFbWJlci5ydW4oKWAu
Ci0KLSAgYGBgamF2YXNjcmlwdAotICBFbWJlci5ydW4uYmVnaW4oKTsKLSAgLy8gY29kZSB0byBi
ZSBleGVjdXRlIHdpdGhpbiBhIFJ1bkxvb3AKLSAgRW1iZXIucnVuLmVuZCgpOwotICBgYGAKLQot
ICBAbWV0aG9kIGJlZ2luCi0gIEByZXR1cm4ge3ZvaWR9Ci0qLwotRW1iZXIucnVuLmJlZ2luID0g
ZnVuY3Rpb24oKSB7Ci0gIGJhY2tidXJuZXIuYmVnaW4oKTsKLX07Ci0KLS8qKgotICBFbmRzIGEg
UnVuTG9vcC4gVGhpcyBtdXN0IGJlIGNhbGxlZCBzb21ldGltZSBhZnRlciB5b3UgY2FsbAotICBg
RW1iZXIucnVuLmJlZ2luKClgIHRvIGZsdXNoIGFueSBkZWZlcnJlZCBhY3Rpb25zLiBUaGlzIGlz
IGEgbG93ZXItbGV2ZWwgd2F5Ci0gIHRvIHVzZSBhIFJ1bkxvb3AgaW5zdGVhZCBvZiB1c2luZyBg
RW1iZXIucnVuKClgLgotCi0gIGBgYGphdmFzY3JpcHQKLSAgRW1iZXIucnVuLmJlZ2luKCk7Ci0g
IC8vIGNvZGUgdG8gYmUgZXhlY3V0ZSB3aXRoaW4gYSBSdW5Mb29wCi0gIEVtYmVyLnJ1bi5lbmQo
KTsKLSAgYGBgCi0KLSAgQG1ldGhvZCBlbmQKLSAgQHJldHVybiB7dm9pZH0KLSovCi1FbWJlci5y
dW4uZW5kID0gZnVuY3Rpb24oKSB7Ci0gIGJhY2tidXJuZXIuZW5kKCk7Ci19OwotCi0vKioKLSAg
QXJyYXkgb2YgbmFtZWQgcXVldWVzLiBUaGlzIGFycmF5IGRldGVybWluZXMgdGhlIG9yZGVyIGlu
IHdoaWNoIHF1ZXVlcwotICBhcmUgZmx1c2hlZCBhdCB0aGUgZW5kIG9mIHRoZSBSdW5Mb29wLiBZ
b3UgY2FuIGRlZmluZSB5b3VyIG93biBxdWV1ZXMgYnkKLSAgc2ltcGx5IGFkZGluZyB0aGUgcXVl
dWUgbmFtZSB0byB0aGlzIGFycmF5LiBOb3JtYWxseSB5b3Ugc2hvdWxkIG5vdCBuZWVkCi0gIHRv
IGluc3BlY3Qgb3IgbW9kaWZ5IHRoaXMgcHJvcGVydHkuCi0KLSAgQHByb3BlcnR5IHF1ZXVlcwot
ICBAdHlwZSBBcnJheQotICBAZGVmYXVsdCBbJ3N5bmMnLCAnYWN0aW9ucycsICdkZXN0cm95J10K
LSovCi0KLS8qKgotICBBZGRzIHRoZSBwYXNzZWQgdGFyZ2V0L21ldGhvZCBhbmQgYW55IG9wdGlv
bmFsIGFyZ3VtZW50cyB0byB0aGUgbmFtZWQKLSAgcXVldWUgdG8gYmUgZXhlY3V0ZWQgYXQgdGhl
IGVuZCBvZiB0aGUgUnVuTG9vcC4gSWYgeW91IGhhdmUgbm90IGFscmVhZHkKLSAgc3RhcnRlZCBh
IFJ1bkxvb3Agd2hlbiBjYWxsaW5nIHRoaXMgbWV0aG9kIG9uZSB3aWxsIGJlIHN0YXJ0ZWQgZm9y
IHlvdQotICBhdXRvbWF0aWNhbGx5LgotCi0gIEF0IHRoZSBlbmQgb2YgYSBSdW5Mb29wLCBhbnkg
bWV0aG9kcyBzY2hlZHVsZWQgaW4gdGhpcyB3YXkgd2lsbCBiZSBpbnZva2VkLgotICBNZXRob2Rz
IHdpbGwgYmUgaW52b2tlZCBpbiBhbiBvcmRlciBtYXRjaGluZyB0aGUgbmFtZWQgcXVldWVzIGRl
ZmluZWQgaW4KLSAgdGhlIGBFbWJlci5ydW4ucXVldWVzYCBwcm9wZXJ0eS4KLQotICBgYGBqYXZh
c2NyaXB0Ci0gIEVtYmVyLnJ1bi5zY2hlZHVsZSgnc3luYycsIHRoaXMsIGZ1bmN0aW9uKCkgewot
ICAgIC8vIHRoaXMgd2lsbCBiZSBleGVjdXRlZCBpbiB0aGUgZmlyc3QgUnVuTG9vcCBxdWV1ZSwg
d2hlbiBiaW5kaW5ncyBhcmUgc3luY2VkCi0gICAgY29uc29sZS5sb2coInNjaGVkdWxlZCBvbiBz
eW5jIHF1ZXVlIik7Ci0gIH0pOwotCi0gIEVtYmVyLnJ1bi5zY2hlZHVsZSgnYWN0aW9ucycsIHRo
aXMsIGZ1bmN0aW9uKCkgewotICAgIC8vIHRoaXMgd2lsbCBiZSBleGVjdXRlZCBpbiB0aGUgJ2Fj
dGlvbnMnIHF1ZXVlLCBhZnRlciBiaW5kaW5ncyBoYXZlIHN5bmNlZC4KLSAgICBjb25zb2xlLmxv
Zygic2NoZWR1bGVkIG9uIGFjdGlvbnMgcXVldWUiKTsKLSAgfSk7Ci0KLSAgLy8gTm90ZSB0aGUg
ZnVuY3Rpb25zIHdpbGwgYmUgcnVuIGluIG9yZGVyIGJhc2VkIG9uIHRoZSBydW4gcXVldWVzIG9y
ZGVyLgotICAvLyBPdXRwdXQgd291bGQgYmU6Ci0gIC8vICAgc2NoZWR1bGVkIG9uIHN5bmMgcXVl
dWUKLSAgLy8gICBzY2hlZHVsZWQgb24gYWN0aW9ucyBxdWV1ZQotICBgYGAKLQotICBAbWV0aG9k
IHNjaGVkdWxlCi0gIEBwYXJhbSB7U3RyaW5nfSBxdWV1ZSBUaGUgbmFtZSBvZiB0aGUgcXVldWUg
dG8gc2NoZWR1bGUgYWdhaW5zdC4KLSAgICBEZWZhdWx0IHF1ZXVlcyBhcmUgJ3N5bmMnIGFuZCAn
YWN0aW9ucycKLSAgQHBhcmFtIHtPYmplY3R9IFt0YXJnZXRdIHRhcmdldCBvYmplY3QgdG8gdXNl
IGFzIHRoZSBjb250ZXh0IHdoZW4gaW52b2tpbmcgYSBtZXRob2QuCi0gIEBwYXJhbSB7U3RyaW5n
fEZ1bmN0aW9ufSBtZXRob2QgVGhlIG1ldGhvZCB0byBpbnZva2UuIElmIHlvdSBwYXNzIGEgc3Ry
aW5nIGl0Ci0gICAgd2lsbCBiZSByZXNvbHZlZCBvbiB0aGUgdGFyZ2V0IG9iamVjdCBhdCB0aGUg
dGltZSB0aGUgc2NoZWR1bGVkIGl0ZW0gaXMKLSAgICBpbnZva2VkIGFsbG93aW5nIHlvdSB0byBj
aGFuZ2UgdGhlIHRhcmdldCBmdW5jdGlvbi4KLSAgQHBhcmFtIHtPYmplY3R9IFthcmd1bWVudHMq
XSBPcHRpb25hbCBhcmd1bWVudHMgdG8gYmUgcGFzc2VkIHRvIHRoZSBxdWV1ZWQgbWV0aG9kLgot
ICBAcmV0dXJuIHt2b2lkfQotKi8KLUVtYmVyLnJ1bi5zY2hlZHVsZSA9IGZ1bmN0aW9uKHF1ZXVl
LCB0YXJnZXQsIG1ldGhvZCkgewotICBjaGVja0F1dG9SdW4oKTsKLSAgYmFja2J1cm5lci5zY2hl
ZHVsZS5hcHBseShiYWNrYnVybmVyLCBhcmd1bWVudHMpOwotfTsKLQotLy8gVXNlZCBieSBnbG9i
YWwgdGVzdCB0ZWFyZG93bgotRW1iZXIucnVuLmhhc1NjaGVkdWxlZFRpbWVycyA9IGZ1bmN0aW9u
KCkgewotICByZXR1cm4gYmFja2J1cm5lci5oYXNUaW1lcnMoKTsKLX07Ci0KLS8vIFVzZWQgYnkg
Z2xvYmFsIHRlc3QgdGVhcmRvd24KLUVtYmVyLnJ1bi5jYW5jZWxUaW1lcnMgPSBmdW5jdGlvbiAo
KSB7Ci0gIGJhY2tidXJuZXIuY2FuY2VsVGltZXJzKCk7Ci19OwotCi0vKioKLSAgSW1tZWRpYXRl
bHkgZmx1c2hlcyBhbnkgZXZlbnRzIHNjaGVkdWxlZCBpbiB0aGUgJ3N5bmMnIHF1ZXVlLiBCaW5k
aW5ncwotICB1c2UgdGhpcyBxdWV1ZSBzbyB0aGlzIG1ldGhvZCBpcyBhIHVzZWZ1bCB3YXkgdG8g
aW1tZWRpYXRlbHkgZm9yY2UgYWxsCi0gIGJpbmRpbmdzIGluIHRoZSBhcHBsaWNhdGlvbiB0byBz
eW5jLgotCi0gIFlvdSBzaG91bGQgY2FsbCB0aGlzIG1ldGhvZCBhbnl0aW1lIHlvdSBuZWVkIGFu
eSBjaGFuZ2VkIHN0YXRlIHRvIHByb3BhZ2F0ZQotICB0aHJvdWdob3V0IHRoZSBhcHAgaW1tZWRp
YXRlbHkgd2l0aG91dCByZXBhaW50aW5nIHRoZSBVSSAod2hpY2ggaGFwcGVucwotICBpbiB0aGUg
bGF0ZXIgJ3JlbmRlcicgcXVldWUgYWRkZWQgYnkgdGhlIGBlbWJlci12aWV3c2AgcGFja2FnZSku
Ci0KLSAgYGBgamF2YXNjcmlwdAotICBFbWJlci5ydW4uc3luYygpOwotICBgYGAKLQotICBAbWV0
aG9kIHN5bmMKLSAgQHJldHVybiB7dm9pZH0KLSovCi1FbWJlci5ydW4uc3luYyA9IGZ1bmN0aW9u
KCkgewotICBpZiAoYmFja2J1cm5lci5jdXJyZW50SW5zdGFuY2UpIHsKLSAgICBiYWNrYnVybmVy
LmN1cnJlbnRJbnN0YW5jZS5xdWV1ZXMuc3luYy5mbHVzaCgpOwotICB9Ci19OwotCi0vKioKLSAg
SW52b2tlcyB0aGUgcGFzc2VkIHRhcmdldC9tZXRob2QgYW5kIG9wdGlvbmFsIGFyZ3VtZW50cyBh
ZnRlciBhIHNwZWNpZmllZAotICBwZXJpb2QgaWYgdGltZS4gVGhlIGxhc3QgcGFyYW1ldGVyIG9m
IHRoaXMgbWV0aG9kIG11c3QgYWx3YXlzIGJlIGEgbnVtYmVyCi0gIG9mIG1pbGxpc2Vjb25kcy4K
LQotICBZb3Ugc2hvdWxkIHVzZSB0aGlzIG1ldGhvZCB3aGVuZXZlciB5b3UgbmVlZCB0byBydW4g
c29tZSBhY3Rpb24gYWZ0ZXIgYQotICBwZXJpb2Qgb2YgdGltZSBpbnN0ZWFkIG9mIHVzaW5nIGBz
ZXRUaW1lb3V0KClgLiBUaGlzIG1ldGhvZCB3aWxsIGVuc3VyZSB0aGF0Ci0gIGl0ZW1zIHRoYXQg
ZXhwaXJlIGR1cmluZyB0aGUgc2FtZSBzY3JpcHQgZXhlY3V0aW9uIGN5Y2xlIGFsbCBleGVjdXRl
Ci0gIHRvZ2V0aGVyLCB3aGljaCBpcyBvZnRlbiBtb3JlIGVmZmljaWVudCB0aGFuIHVzaW5nIGEg
cmVhbCBzZXRUaW1lb3V0LgotCi0gIGBgYGphdmFzY3JpcHQKLSAgRW1iZXIucnVuLmxhdGVyKG15
Q29udGV4dCwgZnVuY3Rpb24oKSB7Ci0gICAgLy8gY29kZSBoZXJlIHdpbGwgZXhlY3V0ZSB3aXRo
aW4gYSBSdW5Mb29wIGluIGFib3V0IDUwMG1zIHdpdGggdGhpcyA9PSBteUNvbnRleHQKLSAgfSwg
NTAwKTsKLSAgYGBgCi0KLSAgQG1ldGhvZCBsYXRlcgotICBAcGFyYW0ge09iamVjdH0gW3Rhcmdl
dF0gdGFyZ2V0IG9mIG1ldGhvZCB0byBpbnZva2UKLSAgQHBhcmFtIHtGdW5jdGlvbnxTdHJpbmd9
IG1ldGhvZCBUaGUgbWV0aG9kIHRvIGludm9rZS4KLSAgICBJZiB5b3UgcGFzcyBhIHN0cmluZyBp
dCB3aWxsIGJlIHJlc29sdmVkIG9uIHRoZQotICAgIHRhcmdldCBhdCB0aGUgdGltZSB0aGUgbWV0
aG9kIGlzIGludm9rZWQuCi0gIEBwYXJhbSB7T2JqZWN0fSBbYXJncypdIE9wdGlvbmFsIGFyZ3Vt
ZW50cyB0byBwYXNzIHRvIHRoZSB0aW1lb3V0LgotICBAcGFyYW0ge051bWJlcn0gd2FpdCBOdW1i
ZXIgb2YgbWlsbGlzZWNvbmRzIHRvIHdhaXQuCi0gIEByZXR1cm4ge1N0cmluZ30gYSBzdHJpbmcg
eW91IGNhbiB1c2UgdG8gY2FuY2VsIHRoZSB0aW1lciBpbgotICAgIGBFbWJlci5ydW4uY2FuY2Vs
YCBsYXRlci4KLSovCi1FbWJlci5ydW4ubGF0ZXIgPSBmdW5jdGlvbih0YXJnZXQsIG1ldGhvZCkg
ewotICByZXR1cm4gYmFja2J1cm5lci5sYXRlci5hcHBseShiYWNrYnVybmVyLCBhcmd1bWVudHMp
OwotfTsKLQotLyoqCi0gIFNjaGVkdWxlIGEgZnVuY3Rpb24gdG8gcnVuIG9uZSB0aW1lIGR1cmlu
ZyB0aGUgY3VycmVudCBSdW5Mb29wLiBUaGlzIGlzIGVxdWl2YWxlbnQKLSAgdG8gY2FsbGluZyBg
c2NoZWR1bGVPbmNlYCB3aXRoIHRoZSAiYWN0aW9ucyIgcXVldWUuCi0KLSAgQG1ldGhvZCBvbmNl
Ci0gIEBwYXJhbSB7T2JqZWN0fSBbdGFyZ2V0XSBUaGUgdGFyZ2V0IG9mIHRoZSBtZXRob2QgdG8g
aW52b2tlLgotICBAcGFyYW0ge0Z1bmN0aW9ufFN0cmluZ30gbWV0aG9kIFRoZSBtZXRob2QgdG8g
aW52b2tlLgotICAgIElmIHlvdSBwYXNzIGEgc3RyaW5nIGl0IHdpbGwgYmUgcmVzb2x2ZWQgb24g
dGhlCi0gICAgdGFyZ2V0IGF0IHRoZSB0aW1lIHRoZSBtZXRob2QgaXMgaW52b2tlZC4KLSAgQHBh
cmFtIHtPYmplY3R9IFthcmdzKl0gT3B0aW9uYWwgYXJndW1lbnRzIHRvIHBhc3MgdG8gdGhlIHRp
bWVvdXQuCi0gIEByZXR1cm4ge09iamVjdH0gdGltZXIKLSovCi1FbWJlci5ydW4ub25jZSA9IGZ1
bmN0aW9uKHRhcmdldCwgbWV0aG9kKSB7Ci0gIGNoZWNrQXV0b1J1bigpOwotICB2YXIgYXJncyA9
IHNsaWNlLmNhbGwoYXJndW1lbnRzKTsKLSAgYXJncy51bnNoaWZ0KCdhY3Rpb25zJyk7Ci0gIHJl
dHVybiBiYWNrYnVybmVyLnNjaGVkdWxlT25jZS5hcHBseShiYWNrYnVybmVyLCBhcmdzKTsKLX07
Ci0KLS8qKgotICBTY2hlZHVsZXMgYSBmdW5jdGlvbiB0byBydW4gb25lIHRpbWUgaW4gYSBnaXZl
biBxdWV1ZSBvZiB0aGUgY3VycmVudCBSdW5Mb29wLgotICBDYWxsaW5nIHRoaXMgbWV0aG9kIHdp
dGggdGhlIHNhbWUgcXVldWUvdGFyZ2V0L21ldGhvZCBjb21iaW5hdGlvbiB3aWxsIGhhdmUKLSAg
bm8gZWZmZWN0IChwYXN0IHRoZSBpbml0aWFsIGNhbGwpLgotCi0gIE5vdGUgdGhhdCBhbHRob3Vn
aCB5b3UgY2FuIHBhc3Mgb3B0aW9uYWwgYXJndW1lbnRzIHRoZXNlIHdpbGwgbm90IGJlCi0gIGNv
bnNpZGVyZWQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLiBOZXcgYXJndW1lbnRzIHdpbGwg
cmVwbGFjZSBwcmV2aW91cwotICBjYWxscy4KLQotICBgYGBqYXZhc2NyaXB0Ci0gIEVtYmVyLnJ1
bihmdW5jdGlvbigpIHsKLSAgICB2YXIgc2F5SGkgPSBmdW5jdGlvbigpIHsgY29uc29sZS5sb2co
J2hpJyk7IH0KLSAgICBFbWJlci5ydW4uc2NoZWR1bGVPbmNlKCdhZnRlclJlbmRlcicsIG15Q29u
dGV4dCwgc2F5SGkpOwotICAgIEVtYmVyLnJ1bi5zY2hlZHVsZU9uY2UoJ2FmdGVyUmVuZGVyJywg
bXlDb250ZXh0LCBzYXlIaSk7Ci0gICAgLy8gc2F5SGkgd2lsbCBvbmx5IGJlIGV4ZWN1dGVkIG9u
Y2UsIGluIHRoZSBhZnRlclJlbmRlciBxdWV1ZSBvZiB0aGUgUnVuTG9vcAotICB9KTsKLSAgYGBg
Ci0KLSAgQWxzbyBub3RlIHRoYXQgcGFzc2luZyBhbiBhbm9ueW1vdXMgZnVuY3Rpb24gdG8gYEVt
YmVyLnJ1bi5zY2hlZHVsZU9uY2VgIHdpbGwKLSAgbm90IHByZXZlbnQgYWRkaXRpb25hbCBjYWxs
cyB3aXRoIGFuIGlkZW50aWNhbCBhbm9ueW1vdXMgZnVuY3Rpb24gZnJvbQotICBzY2hlZHVsaW5n
IHRoZSBpdGVtcyBtdWx0aXBsZSB0aW1lcywgZS5nLjoKLQotICBgYGBqYXZhc2NyaXB0Ci0gIGZ1
bmN0aW9uIHNjaGVkdWxlSXQoKSB7Ci0gICAgRW1iZXIucnVuLnNjaGVkdWxlT25jZSgnYWN0aW9u
cycsIG15Q29udGV4dCwgZnVuY3Rpb24oKSB7IGNvbnNvbGUubG9nKCJDbG9zdXJlIik7IH0pOwot
ICB9Ci0gIHNjaGVkdWxlSXQoKTsKLSAgc2NoZWR1bGVJdCgpOwotICAvLyAiQ2xvc3VyZSIgd2ls
bCBwcmludCB0d2ljZSwgZXZlbiB0aG91Z2ggd2UncmUgdXNpbmcgYEVtYmVyLnJ1bi5zY2hlZHVs
ZU9uY2VgLAotICAvLyBiZWNhdXNlIHRoZSBmdW5jdGlvbiB3ZSBwYXNzIHRvIGl0IGlzIGFub255
bW91cyBhbmQgd29uJ3QgbWF0Y2ggdGhlCi0gIC8vIHByZXZpb3VzbHkgc2NoZWR1bGVkIG9wZXJh
dGlvbi4KLSAgYGBgCi0KLSAgQXZhaWxhYmxlIHF1ZXVlcywgYW5kIHRoZWlyIG9yZGVyLCBjYW4g
YmUgZm91bmQgYXQgYEVtYmVyLnJ1bi5xdWV1ZXNgCi0KLSAgQG1ldGhvZCBzY2hlZHVsZU9uY2UK
LSAgQHBhcmFtIHtTdHJpbmd9IFtxdWV1ZV0gVGhlIG5hbWUgb2YgdGhlIHF1ZXVlIHRvIHNjaGVk
dWxlIGFnYWluc3QuIERlZmF1bHQgcXVldWVzIGFyZSAnc3luYycgYW5kICdhY3Rpb25zJy4KLSAg
QHBhcmFtIHtPYmplY3R9IFt0YXJnZXRdIFRoZSB0YXJnZXQgb2YgdGhlIG1ldGhvZCB0byBpbnZv
a2UuCi0gIEBwYXJhbSB7RnVuY3Rpb258U3RyaW5nfSBtZXRob2QgVGhlIG1ldGhvZCB0byBpbnZv
a2UuCi0gICAgSWYgeW91IHBhc3MgYSBzdHJpbmcgaXQgd2lsbCBiZSByZXNvbHZlZCBvbiB0aGUK
LSAgICB0YXJnZXQgYXQgdGhlIHRpbWUgdGhlIG1ldGhvZCBpcyBpbnZva2VkLgotICBAcGFyYW0g
e09iamVjdH0gW2FyZ3MqXSBPcHRpb25hbCBhcmd1bWVudHMgdG8gcGFzcyB0byB0aGUgdGltZW91
dC4KLSAgQHJldHVybiB7T2JqZWN0fSB0aW1lcgotKi8KLUVtYmVyLnJ1bi5zY2hlZHVsZU9uY2Ug
PSBmdW5jdGlvbihxdWV1ZSwgdGFyZ2V0LCBtZXRob2QpIHsKLSAgY2hlY2tBdXRvUnVuKCk7Ci0g
IHJldHVybiBiYWNrYnVybmVyLnNjaGVkdWxlT25jZS5hcHBseShiYWNrYnVybmVyLCBhcmd1bWVu
dHMpOwotfTsKLQotLyoqCi0gIFNjaGVkdWxlcyBhbiBpdGVtIHRvIHJ1biBmcm9tIHdpdGhpbiBh
IHNlcGFyYXRlIHJ1biBsb29wLCBhZnRlcgotICBjb250cm9sIGhhcyBiZWVuIHJldHVybmVkIHRv
IHRoZSBzeXN0ZW0uIFRoaXMgaXMgZXF1aXZhbGVudCB0byBjYWxsaW5nCi0gIGBFbWJlci5ydW4u
bGF0ZXJgIHdpdGggYSB3YWl0IHRpbWUgb2YgMW1zLgotCi0gIGBgYGphdmFzY3JpcHQKLSAgRW1i
ZXIucnVuLm5leHQobXlDb250ZXh0LCBmdW5jdGlvbigpIHsKLSAgICAvLyBjb2RlIHRvIGJlIGV4
ZWN1dGVkIGluIHRoZSBuZXh0IHJ1biBsb29wLAotICAgIC8vIHdoaWNoIHdpbGwgYmUgc2NoZWR1
bGVkIGFmdGVyIHRoZSBjdXJyZW50IG9uZQotICB9KTsKLSAgYGBgCi0KLSAgTXVsdGlwbGUgb3Bl
cmF0aW9ucyBzY2hlZHVsZWQgd2l0aCBgRW1iZXIucnVuLm5leHRgIHdpbGwgY29hbGVzY2UKLSAg
aW50byB0aGUgc2FtZSBsYXRlciBydW4gbG9vcCwgYWxvbmcgd2l0aCBhbnkgb3RoZXIgb3BlcmF0
aW9ucwotICBzY2hlZHVsZWQgYnkgYEVtYmVyLnJ1bi5sYXRlcmAgdGhhdCBleHBpcmUgcmlnaHQg
YXJvdW5kIHRoZSBzYW1lCi0gIHRpbWUgdGhhdCBgRW1iZXIucnVuLm5leHRgIG9wZXJhdGlvbnMg
d2lsbCBmaXJlLgotCi0gIE5vdGUgdGhhdCB0aGVyZSBhcmUgb2Z0ZW4gYWx0ZXJuYXRpdmVzIHRv
IHVzaW5nIGBFbWJlci5ydW4ubmV4dGAuCi0gIEZvciBpbnN0YW5jZSwgaWYgeW91J2QgbGlrZSB0
byBzY2hlZHVsZSBhbiBvcGVyYXRpb24gdG8gaGFwcGVuCi0gIGFmdGVyIGFsbCBET00gZWxlbWVu
dCBvcGVyYXRpb25zIGhhdmUgY29tcGxldGVkIHdpdGhpbiB0aGUgY3VycmVudAotICBydW4gbG9v
cCwgeW91IGNhbiBtYWtlIHVzZSBvZiB0aGUgYGFmdGVyUmVuZGVyYCBydW4gbG9vcCBxdWV1ZSAo
YWRkZWQKLSAgYnkgdGhlIGBlbWJlci12aWV3c2AgcGFja2FnZSwgYWxvbmcgd2l0aCB0aGUgcHJl
Y2VkaW5nIGByZW5kZXJgIHF1ZXVlCi0gIHdoZXJlIGFsbCB0aGUgRE9NIGVsZW1lbnQgb3BlcmF0
aW9ucyBoYXBwZW4pLiBFeGFtcGxlOgotCi0gIGBgYGphdmFzY3JpcHQKLSAgQXBwLk15Q29sbGVj
dGlvblZpZXcgPSBFbWJlci5Db2xsZWN0aW9uVmlldy5leHRlbmQoewotICAgIGRpZEluc2VydEVs
ZW1lbnQ6IGZ1bmN0aW9uKCkgewotICAgICAgRW1iZXIucnVuLnNjaGVkdWxlT25jZSgnYWZ0ZXJS
ZW5kZXInLCB0aGlzLCAncHJvY2Vzc0NoaWxkRWxlbWVudHMnKTsKLSAgICB9LAotICAgIHByb2Nl
c3NDaGlsZEVsZW1lbnRzOiBmdW5jdGlvbigpIHsKLSAgICAgIC8vIC4uLiBkbyBzb21ldGhpbmcg
d2l0aCBjb2xsZWN0aW9uVmlldydzIGNoaWxkIHZpZXcKLSAgICAgIC8vIGVsZW1lbnRzIGFmdGVy
IHRoZXkndmUgZmluaXNoZWQgcmVuZGVyaW5nLCB3aGljaAotICAgICAgLy8gY2FuJ3QgYmUgZG9u
ZSB3aXRoaW4gdGhlIENvbGxlY3Rpb25WaWV3J3MKLSAgICAgIC8vIGBkaWRJbnNlcnRFbGVtZW50
YCBob29rIGJlY2F1c2UgdGhhdCBnZXRzIHJ1bgotICAgICAgLy8gYmVmb3JlIHRoZSBjaGlsZCBl
bGVtZW50cyBoYXZlIGJlZW4gYWRkZWQgdG8gdGhlIERPTS4KLSAgICB9Ci0gIH0pOwotICBgYGAK
LQotICBPbmUgYmVuZWZpdCBvZiB0aGUgYWJvdmUgYXBwcm9hY2ggY29tcGFyZWQgdG8gdXNpbmcg
YEVtYmVyLnJ1bi5uZXh0YCBpcwotICB0aGF0IHlvdSB3aWxsIGJlIGFibGUgdG8gcGVyZm9ybSBE
T00vQ1NTIG9wZXJhdGlvbnMgYmVmb3JlIHVucHJvY2Vzc2VkCi0gIGVsZW1lbnRzIGFyZSByZW5k
ZXJlZCB0byB0aGUgc2NyZWVuLCB3aGljaCBtYXkgcHJldmVudCBmbGlja2VyaW5nIG9yCi0gIG90
aGVyIGFydGlmYWN0cyBjYXVzZWQgYnkgZGVsYXlpbmcgcHJvY2Vzc2luZyB1bnRpbCBhZnRlciBy
ZW5kZXJpbmcuCi0KLSAgVGhlIG90aGVyIG1ham9yIGJlbmVmaXQgdG8gdGhlIGFib3ZlIGFwcHJv
YWNoIGlzIHRoYXQgYEVtYmVyLnJ1bi5uZXh0YAotICBpbnRyb2R1Y2VzIGFuIGVsZW1lbnQgb2Yg
bm9uLWRldGVybWluaXNtLCB3aGljaCBjYW4gbWFrZSB0aGluZ3MgbXVjaAotICBoYXJkZXIgdG8g
dGVzdCwgZHVlIHRvIGl0cyByZWxpYW5jZSBvbiBgc2V0VGltZW91dGA7IGl0J3MgbXVjaCBoYXJk
ZXIKLSAgdG8gZ3VhcmFudGVlIHRoZSBvcmRlciBvZiBzY2hlZHVsZWQgb3BlcmF0aW9ucyB3aGVu
IHRoZXkgYXJlIHNjaGVkdWxlZAotICBvdXRzaWRlIG9mIHRoZSBjdXJyZW50IHJ1biBsb29wLCBp
LmUuIHdpdGggYEVtYmVyLnJ1bi5uZXh0YC4KLQotICBAbWV0aG9kIG5leHQKLSAgQHBhcmFtIHtP
YmplY3R9IFt0YXJnZXRdIHRhcmdldCBvZiBtZXRob2QgdG8gaW52b2tlCi0gIEBwYXJhbSB7RnVu
Y3Rpb258U3RyaW5nfSBtZXRob2QgVGhlIG1ldGhvZCB0byBpbnZva2UuCi0gICAgSWYgeW91IHBh
c3MgYSBzdHJpbmcgaXQgd2lsbCBiZSByZXNvbHZlZCBvbiB0aGUKLSAgICB0YXJnZXQgYXQgdGhl
IHRpbWUgdGhlIG1ldGhvZCBpcyBpbnZva2VkLgotICBAcGFyYW0ge09iamVjdH0gW2FyZ3MqXSBP
cHRpb25hbCBhcmd1bWVudHMgdG8gcGFzcyB0byB0aGUgdGltZW91dC4KLSAgQHJldHVybiB7T2Jq
ZWN0fSB0aW1lcgotKi8KLUVtYmVyLnJ1bi5uZXh0ID0gZnVuY3Rpb24oKSB7Ci0gIHZhciBhcmdz
ID0gc2xpY2UuY2FsbChhcmd1bWVudHMpOwotICBhcmdzLnB1c2goMSk7Ci0gIHJldHVybiBiYWNr
YnVybmVyLmxhdGVyLmFwcGx5KGJhY2tidXJuZXIsIGFyZ3MpOwotfTsKLQotLyoqCi0gIENhbmNl
bHMgYSBzY2hlZHVsZWQgaXRlbS4gTXVzdCBiZSBhIHZhbHVlIHJldHVybmVkIGJ5IGBFbWJlci5y
dW4ubGF0ZXIoKWAsCi0gIGBFbWJlci5ydW4ub25jZSgpYCwgb3IgYEVtYmVyLnJ1bi5uZXh0KClg
LgotCi0gIGBgYGphdmFzY3JpcHQKLSAgdmFyIHJ1bk5leHQgPSBFbWJlci5ydW4ubmV4dChteUNv
bnRleHQsIGZ1bmN0aW9uKCkgewotICAgIC8vIHdpbGwgbm90IGJlIGV4ZWN1dGVkCi0gIH0pOwot
ICBFbWJlci5ydW4uY2FuY2VsKHJ1bk5leHQpOwotCi0gIHZhciBydW5MYXRlciA9IEVtYmVyLnJ1
bi5sYXRlcihteUNvbnRleHQsIGZ1bmN0aW9uKCkgewotICAgIC8vIHdpbGwgbm90IGJlIGV4ZWN1
dGVkCi0gIH0sIDUwMCk7Ci0gIEVtYmVyLnJ1bi5jYW5jZWwocnVuTGF0ZXIpOwotCi0gIHZhciBy
dW5PbmNlID0gRW1iZXIucnVuLm9uY2UobXlDb250ZXh0LCBmdW5jdGlvbigpIHsKLSAgICAvLyB3
aWxsIG5vdCBiZSBleGVjdXRlZAotICB9KTsKLSAgRW1iZXIucnVuLmNhbmNlbChydW5PbmNlKTsK
LSAgYGBgCi0KLSAgQG1ldGhvZCBjYW5jZWwKLSAgQHBhcmFtIHtPYmplY3R9IHRpbWVyIFRpbWVy
IG9iamVjdCB0byBjYW5jZWwKLSAgQHJldHVybiB7dm9pZH0KLSovCi1FbWJlci5ydW4uY2FuY2Vs
ID0gZnVuY3Rpb24odGltZXIpIHsKLSAgcmV0dXJuIGJhY2tidXJuZXIuY2FuY2VsKHRpbWVyKTsK
LX07Ci0KLS8qKgotICBEZWxheSBjYWxsaW5nIHRoZSB0YXJnZXQgbWV0aG9kIHVudGlsIHRoZSBk
ZWJvdW5jZSBwZXJpb2QgaGFzIGVsYXBzZWQKLSAgd2l0aCBubyBhZGRpdGlvbmFsIGRlYm91bmNl
IGNhbGxzLiBJZiBgZGVib3VuY2VgIGlzIGNhbGxlZCBhZ2FpbiBiZWZvcmUKLSAgdGhlIHNwZWNp
ZmllZCB0aW1lIGhhcyBlbGFwc2VkLCB0aGUgdGltZXIgaXMgcmVzZXQgYW5kIHRoZSBlbnRpcmUg
cGVyaW9kCi0gIG11c3QgcGFzcyBhZ2FpbiBiZWZvcmUgdGhlIHRhcmdldCBtZXRob2QgaXMgY2Fs
bGVkLgotCi0gIFRoaXMgbWV0aG9kIHNob3VsZCBiZSB1c2VkIHdoZW4gYW4gZXZlbnQgbWF5IGJl
IGNhbGxlZCBtdWx0aXBsZSB0aW1lcwotICBidXQgdGhlIGFjdGlvbiBzaG91bGQgb25seSBiZSBj
YWxsZWQgb25jZSB3aGVuIHRoZSBldmVudCBpcyBkb25lIGZpcmluZy4KLSAgQSBjb21tb24gZXhh
bXBsZSBpcyBmb3Igc2Nyb2xsIGV2ZW50cyB3aGVyZSB5b3Ugb25seSB3YW50IHVwZGF0ZXMgdG8K
LSAgaGFwcGVuIG9uY2Ugc2Nyb2xsaW5nIGhhcyBjZWFzZWQuCi0KLSAgYGBgamF2YXNjcmlwdAot
ICAgIHZhciBteUZ1bmMgPSBmdW5jdGlvbigpIHsgY29uc29sZS5sb2codGhpcy5uYW1lICsgJyBy
YW4uJyk7IH07Ci0gICAgdmFyIG15Q29udGV4dCA9IHtuYW1lOiAnZGVib3VuY2UnfTsKLQotICAg
IEVtYmVyLnJ1bi5kZWJvdW5jZShteUNvbnRleHQsIG15RnVuYywgMTUwKTsKLQotICAgIC8vIGxl
c3MgdGhhbiAxNTBtcyBwYXNzZXMKLQotICAgIEVtYmVyLnJ1bi5kZWJvdW5jZShteUNvbnRleHQs
IG15RnVuYywgMTUwKTsKLQotICAgIC8vIDE1MG1zIHBhc3NlcwotICAgIC8vIG15RnVuYyBpcyBp
bnZva2VkIHdpdGggY29udGV4dCBteUNvbnRleHQKLSAgICAvLyBjb25zb2xlIGxvZ3MgJ2RlYm91
bmNlIHJhbi4nIG9uZSB0aW1lLgotICBgYGAKLQotICBAbWV0aG9kIGRlYm91bmNlCi0gIEBwYXJh
bSB7T2JqZWN0fSBbdGFyZ2V0XSB0YXJnZXQgb2YgbWV0aG9kIHRvIGludm9rZQotICBAcGFyYW0g
e0Z1bmN0aW9ufFN0cmluZ30gbWV0aG9kIFRoZSBtZXRob2QgdG8gaW52b2tlLgotICAgIE1heSBi
ZSBhIGZ1bmN0aW9uIG9yIGEgc3RyaW5nLiBJZiB5b3UgcGFzcyBhIHN0cmluZwotICAgIHRoZW4g
aXQgd2lsbCBiZSBsb29rZWQgdXAgb24gdGhlIHBhc3NlZCB0YXJnZXQuCi0gIEBwYXJhbSB7T2Jq
ZWN0fSBbYXJncypdIE9wdGlvbmFsIGFyZ3VtZW50cyB0byBwYXNzIHRvIHRoZSB0aW1lb3V0Lgot
ICBAcGFyYW0ge051bWJlcn0gd2FpdCBOdW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIHdhaXQuCi0g
IEBwYXJhbSB7Qm9vbGVhbn0gaW1tZWRpYXRlIFRyaWdnZXIgdGhlIGZ1bmN0aW9uIG9uIHRoZSBs
ZWFkaW5nIGluc3RlYWQgb2YgdGhlIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIHdhaXQgaW50ZXJ2YWwu
Ci0gIEByZXR1cm4ge3ZvaWR9Ci0qLwotRW1iZXIucnVuLmRlYm91bmNlID0gZnVuY3Rpb24oKSB7
Ci0gIHJldHVybiBiYWNrYnVybmVyLmRlYm91bmNlLmFwcGx5KGJhY2tidXJuZXIsIGFyZ3VtZW50
cyk7Ci19OwotCi0vKioKLSAgRW5zdXJlIHRoYXQgdGhlIHRhcmdldCBtZXRob2QgaXMgbmV2ZXIg
Y2FsbGVkIG1vcmUgZnJlcXVlbnRseSB0aGFuCi0gIHRoZSBzcGVjaWZpZWQgc3BhY2luZyBwZXJp
b2QuCi0KLSAgYGBgamF2YXNjcmlwdAotICAgIHZhciBteUZ1bmMgPSBmdW5jdGlvbigpIHsgY29u
c29sZS5sb2codGhpcy5uYW1lICsgJyByYW4uJyk7IH07Ci0gICAgdmFyIG15Q29udGV4dCA9IHtu
YW1lOiAndGhyb3R0bGUnfTsKLQotICAgIEVtYmVyLnJ1bi50aHJvdHRsZShteUNvbnRleHQsIG15
RnVuYywgMTUwKTsKLQotICAgIC8vIDUwbXMgcGFzc2VzCi0gICAgRW1iZXIucnVuLnRocm90dGxl
KG15Q29udGV4dCwgbXlGdW5jLCAxNTApOwotCi0gICAgLy8gNTBtcyBwYXNzZXMKLSAgICBFbWJl
ci5ydW4udGhyb3R0bGUobXlDb250ZXh0LCBteUZ1bmMsIDE1MCk7Ci0KLSAgICAvLyA1MG1zIHBh
c3NlcwotICAgIEVtYmVyLnJ1bi50aHJvdHRsZShteUNvbnRleHQsIG15RnVuYywgMTUwKTsKLQot
ICAgIC8vIDE1MG1zIHBhc3NlcwotICAgIC8vIG15RnVuYyBpcyBpbnZva2VkIHdpdGggY29udGV4
dCBteUNvbnRleHQKLSAgICAvLyBjb25zb2xlIGxvZ3MgJ3Rocm90dGxlIHJhbi4nIHR3aWNlLCAx
NTBtcyBhcGFydC4KLSAgYGBgCi0KLSAgQG1ldGhvZCB0aHJvdHRsZQotICBAcGFyYW0ge09iamVj
dH0gW3RhcmdldF0gdGFyZ2V0IG9mIG1ldGhvZCB0byBpbnZva2UKLSAgQHBhcmFtIHtGdW5jdGlv
bnxTdHJpbmd9IG1ldGhvZCBUaGUgbWV0aG9kIHRvIGludm9rZS4KLSAgICBNYXkgYmUgYSBmdW5j
dGlvbiBvciBhIHN0cmluZy4gSWYgeW91IHBhc3MgYSBzdHJpbmcKLSAgICB0aGVuIGl0IHdpbGwg
YmUgbG9va2VkIHVwIG9uIHRoZSBwYXNzZWQgdGFyZ2V0LgotICBAcGFyYW0ge09iamVjdH0gW2Fy
Z3MqXSBPcHRpb25hbCBhcmd1bWVudHMgdG8gcGFzcyB0byB0aGUgdGltZW91dC4KLSAgQHBhcmFt
IHtOdW1iZXJ9IHNwYWNpbmcgTnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byBzcGFjZSBvdXQgcmVx
dWVzdHMuCi0gIEByZXR1cm4ge3ZvaWR9Ci0qLwotRW1iZXIucnVuLnRocm90dGxlID0gZnVuY3Rp
b24oKSB7Ci0gIHJldHVybiBiYWNrYnVybmVyLnRocm90dGxlLmFwcGx5KGJhY2tidXJuZXIsIGFy
Z3VtZW50cyk7Ci19OwotCi0vLyBNYWtlIHN1cmUgaXQncyBub3QgYW4gYXV0b3J1biBkdXJpbmcg
dGVzdGluZwotZnVuY3Rpb24gY2hlY2tBdXRvUnVuKCkgewotICBpZiAoIUVtYmVyLnJ1bi5jdXJy
ZW50UnVuTG9vcCkgewotICAgIEVtYmVyLmFzc2VydCgiWW91IGhhdmUgdHVybmVkIG9uIHRlc3Rp
bmcgbW9kZSwgd2hpY2ggZGlzYWJsZWQgdGhlIHJ1bi1sb29wJ3MgYXV0b3J1bi4gWW91IHdpbGwg
bmVlZCB0byB3cmFwIGFueSBjb2RlIHdpdGggYXN5bmNocm9ub3VzIHNpZGUtZWZmZWN0cyBpbiBh
biBFbWJlci5ydW4iLCAhRW1iZXIudGVzdGluZyk7Ci0gIH0KLX0KLQotfSkoKTsKLQotCi0KLShm
dW5jdGlvbigpIHsKLS8vIEVtYmVyLkxvZ2dlcgotLy8gZ2V0Ci0vLyBzZXQKLS8vIGd1aWRGb3Is
IG1ldGEKLS8vIGFkZE9ic2VydmVyLCByZW1vdmVPYnNlcnZlcgotLy8gRW1iZXIucnVuLnNjaGVk
dWxlCi0vKioKLUBtb2R1bGUgZW1iZXItbWV0YWwKLSovCi0KLS8vIC4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLS8vIENPTlNUQU5UUwot
Ly8KLQotLyoqCi0gIERlYnVnIHBhcmFtZXRlciB5b3UgY2FuIHR1cm4gb24uIFRoaXMgd2lsbCBs
b2cgYWxsIGJpbmRpbmdzIHRoYXQgZmlyZSB0bwotICB0aGUgY29uc29sZS4gVGhpcyBzaG91bGQg
YmUgZGlzYWJsZWQgaW4gcHJvZHVjdGlvbiBjb2RlLiBOb3RlIHRoYXQgeW91Ci0gIGNhbiBhbHNv
IGVuYWJsZSB0aGlzIGZyb20gdGhlIGNvbnNvbGUgb3IgdGVtcG9yYXJpbHkuCi0KLSAgQHByb3Bl
cnR5IExPR19CSU5ESU5HUwotICBAZm9yIEVtYmVyCi0gIEB0eXBlIEJvb2xlYW4KLSAgQGRlZmF1
bHQgZmFsc2UKLSovCi1FbWJlci5MT0dfQklORElOR1MgPSBmYWxzZSB8fCAhIUVtYmVyLkVOVi5M
T0dfQklORElOR1M7Ci0KLXZhciBnZXQgICAgID0gRW1iZXIuZ2V0LAotICAgIHNldCAgICAgPSBF
bWJlci5zZXQsCi0gICAgZ3VpZEZvciA9IEVtYmVyLmd1aWRGb3IsCi0gICAgSVNfR0xPQkFMID0g
L14oW0EtWiRdfChbMC05XVtBLVokXSkpLzsKLQotLyoqCi0gIFJldHVybnMgdHJ1ZSBpZiB0aGUg
cHJvdmlkZWQgcGF0aCBpcyBnbG9iYWwgKGUuZy4sIGBNeUFwcC5mb29Db250cm9sbGVyLmJhcmAp
Ci0gIGluc3RlYWQgb2YgbG9jYWwgKGBmb28uYmFyLmJhemApLgotCi0gIEBtZXRob2QgaXNHbG9i
YWxQYXRoCi0gIEBmb3IgRW1iZXIKLSAgQHByaXZhdGUKLSAgQHBhcmFtIHtTdHJpbmd9IHBhdGgK
LSAgQHJldHVybiBCb29sZWFuCi0qLwotdmFyIGlzR2xvYmFsUGF0aCA9IEVtYmVyLmlzR2xvYmFs
UGF0aCA9IGZ1bmN0aW9uKHBhdGgpIHsKLSAgcmV0dXJuIElTX0dMT0JBTC50ZXN0KHBhdGgpOwot
fTsKLQotZnVuY3Rpb24gZ2V0V2l0aEdsb2JhbHMob2JqLCBwYXRoKSB7Ci0gIHJldHVybiBnZXQo
aXNHbG9iYWxQYXRoKHBhdGgpID8gRW1iZXIubG9va3VwIDogb2JqLCBwYXRoKTsKLX0KLQotLy8g
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
LgotLy8gQklORElORwotLy8KLQotdmFyIEJpbmRpbmcgPSBmdW5jdGlvbih0b1BhdGgsIGZyb21Q
YXRoKSB7Ci0gIHRoaXMuX2RpcmVjdGlvbiA9ICdmd2QnOwotICB0aGlzLl9mcm9tID0gZnJvbVBh
dGg7Ci0gIHRoaXMuX3RvICAgPSB0b1BhdGg7Ci0gIHRoaXMuX2RpcmVjdGlvbk1hcCA9IEVtYmVy
Lk1hcC5jcmVhdGUoKTsKLX07Ci0KLS8qKgotQGNsYXNzIEJpbmRpbmcKLUBuYW1lc3BhY2UgRW1i
ZXIKLSovCi0KLUJpbmRpbmcucHJvdG90eXBlID0gewotICAvKioKLSAgICBUaGlzIGNvcGllcyB0
aGUgQmluZGluZyBzbyBpdCBjYW4gYmUgY29ubmVjdGVkIHRvIGFub3RoZXIgb2JqZWN0LgotCi0g
ICAgQG1ldGhvZCBjb3B5Ci0gICAgQHJldHVybiB7RW1iZXIuQmluZGluZ30gYHRoaXNgCi0gICov
Ci0gIGNvcHk6IGZ1bmN0aW9uICgpIHsKLSAgICB2YXIgY29weSA9IG5ldyBCaW5kaW5nKHRoaXMu
X3RvLCB0aGlzLl9mcm9tKTsKLSAgICBpZiAodGhpcy5fb25lV2F5KSB7IGNvcHkuX29uZVdheSA9
IHRydWU7IH0KLSAgICByZXR1cm4gY29weTsKLSAgfSwKLQotICAvLyAuLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi0gIC8vIENPTkZJRwot
ICAvLwotCi0gIC8qKgotICAgIFRoaXMgd2lsbCBzZXQgYGZyb21gIHByb3BlcnR5IHBhdGggdG8g
dGhlIHNwZWNpZmllZCB2YWx1ZS4gSXQgd2lsbCBub3QKLSAgICBhdHRlbXB0IHRvIHJlc29sdmUg
dGhpcyBwcm9wZXJ0eSBwYXRoIHRvIGFuIGFjdHVhbCBvYmplY3QgdW50aWwgeW91Ci0gICAgY29u
bmVjdCB0aGUgYmluZGluZy4KLQotICAgIFRoZSBiaW5kaW5nIHdpbGwgc2VhcmNoIGZvciB0aGUg
cHJvcGVydHkgcGF0aCBzdGFydGluZyBhdCB0aGUgcm9vdCBvYmplY3QKLSAgICB5b3UgcGFzcyB3
aGVuIHlvdSBgY29ubmVjdCgpYCB0aGUgYmluZGluZy4gSXQgZm9sbG93cyB0aGUgc2FtZSBydWxl
cyBhcwotICAgIGBnZXQoKWAgLSBzZWUgdGhhdCBtZXRob2QgZm9yIG1vcmUgaW5mb3JtYXRpb24u
Ci0KLSAgICBAbWV0aG9kIGZyb20KLSAgICBAcGFyYW0ge1N0cmluZ30gcGF0aCB0aGUgcHJvcGVy
dHkgcGF0aCB0byBjb25uZWN0IHRvCi0gICAgQHJldHVybiB7RW1iZXIuQmluZGluZ30gYHRoaXNg
Ci0gICovCi0gIGZyb206IGZ1bmN0aW9uKHBhdGgpIHsKLSAgICB0aGlzLl9mcm9tID0gcGF0aDsK
LSAgICByZXR1cm4gdGhpczsKLSAgfSwKLQotICAvKioKLSAgICBUaGlzIHdpbGwgc2V0IHRoZSBg
dG9gIHByb3BlcnR5IHBhdGggdG8gdGhlIHNwZWNpZmllZCB2YWx1ZS4gSXQgd2lsbCBub3QKLSAg
ICBhdHRlbXB0IHRvIHJlc29sdmUgdGhpcyBwcm9wZXJ0eSBwYXRoIHRvIGFuIGFjdHVhbCBvYmpl
Y3QgdW50aWwgeW91Ci0gICAgY29ubmVjdCB0aGUgYmluZGluZy4KLQotICAgIFRoZSBiaW5kaW5n
IHdpbGwgc2VhcmNoIGZvciB0aGUgcHJvcGVydHkgcGF0aCBzdGFydGluZyBhdCB0aGUgcm9vdCBv
YmplY3QKLSAgICB5b3UgcGFzcyB3aGVuIHlvdSBgY29ubmVjdCgpYCB0aGUgYmluZGluZy4gSXQg
Zm9sbG93cyB0aGUgc2FtZSBydWxlcyBhcwotICAgIGBnZXQoKWAgLSBzZWUgdGhhdCBtZXRob2Qg
Zm9yIG1vcmUgaW5mb3JtYXRpb24uCi0KLSAgICBAbWV0aG9kIHRvCi0gICAgQHBhcmFtIHtTdHJp
bmd8VHVwbGV9IHBhdGggQSBwcm9wZXJ0eSBwYXRoIG9yIHR1cGxlCi0gICAgQHJldHVybiB7RW1i
ZXIuQmluZGluZ30gYHRoaXNgCi0gICovCi0gIHRvOiBmdW5jdGlvbihwYXRoKSB7Ci0gICAgdGhp
cy5fdG8gPSBwYXRoOwotICAgIHJldHVybiB0aGlzOwotICB9LAotCi0gIC8qKgotICAgIENvbmZp
Z3VyZXMgdGhlIGJpbmRpbmcgYXMgb25lIHdheS4gQSBvbmUtd2F5IGJpbmRpbmcgd2lsbCByZWxh
eSBjaGFuZ2VzCi0gICAgb24gdGhlIGBmcm9tYCBzaWRlIHRvIHRoZSBgdG9gIHNpZGUsIGJ1dCBu
b3QgdGhlIG90aGVyIHdheSBhcm91bmQuIFRoaXMKLSAgICBtZWFucyB0aGF0IGlmIHlvdSBjaGFu
Z2UgdGhlIGB0b2Agc2lkZSBkaXJlY3RseSwgdGhlIGBmcm9tYCBzaWRlIG1heSBoYXZlCi0gICAg
YSBkaWZmZXJlbnQgdmFsdWUuCi0KLSAgICBAbWV0aG9kIG9uZVdheQotICAgIEByZXR1cm4ge0Vt
YmVyLkJpbmRpbmd9IGB0aGlzYAotICAqLwotICBvbmVXYXk6IGZ1bmN0aW9uKCkgewotICAgIHRo
aXMuX29uZVdheSA9IHRydWU7Ci0gICAgcmV0dXJuIHRoaXM7Ci0gIH0sCi0KLSAgLyoqCi0gICAg
QG1ldGhvZCB0b1N0cmluZwotICAgIEByZXR1cm4ge1N0cmluZ30gc3RyaW5nIHJlcHJlc2VudGF0
aW9uIG9mIGJpbmRpbmcKLSAgKi8KLSAgdG9TdHJpbmc6IGZ1bmN0aW9uKCkgewotICAgIHZhciBv
bmVXYXkgPSB0aGlzLl9vbmVXYXkgPyAnW29uZVdheV0nIDogJyc7Ci0gICAgcmV0dXJuICJFbWJl
ci5CaW5kaW5nPCIgKyBndWlkRm9yKHRoaXMpICsgIj4oIiArIHRoaXMuX2Zyb20gKyAiIC0+ICIg
KyB0aGlzLl90byArICIpIiArIG9uZVdheTsKLSAgfSwKLQotICAvLyAuLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi0gIC8vIENPTk5FQ1Qg
QU5EIFNZTkMKLSAgLy8KLQotICAvKioKLSAgICBBdHRlbXB0cyB0byBjb25uZWN0IHRoaXMgYmlu
ZGluZyBpbnN0YW5jZSBzbyB0aGF0IGl0IGNhbiByZWNlaXZlIGFuZCByZWxheQotICAgIGNoYW5n
ZXMuIFRoaXMgbWV0aG9kIHdpbGwgcmFpc2UgYW4gZXhjZXB0aW9uIGlmIHlvdSBoYXZlIG5vdCBz
ZXQgdGhlCi0gICAgZnJvbS90byBwcm9wZXJ0aWVzIHlldC4KLQotICAgIEBtZXRob2QgY29ubmVj
dAotICAgIEBwYXJhbSB7T2JqZWN0fSBvYmogVGhlIHJvb3Qgb2JqZWN0IGZvciB0aGlzIGJpbmRp
bmcuCi0gICAgQHJldHVybiB7RW1iZXIuQmluZGluZ30gYHRoaXNgCi0gICovCi0gIGNvbm5lY3Q6
IGZ1bmN0aW9uKG9iaikgewotICAgIEVtYmVyLmFzc2VydCgnTXVzdCBwYXNzIGEgdmFsaWQgb2Jq
ZWN0IHRvIEVtYmVyLkJpbmRpbmcuY29ubmVjdCgpJywgISFvYmopOwotCi0gICAgdmFyIGZyb21Q
YXRoID0gdGhpcy5fZnJvbSwgdG9QYXRoID0gdGhpcy5fdG87Ci0gICAgRW1iZXIudHJ5U2V0KG9i
aiwgdG9QYXRoLCBnZXRXaXRoR2xvYmFscyhvYmosIGZyb21QYXRoKSk7Ci0KLSAgICAvLyBhZGQg
YW4gb2JzZXJ2ZXIgb24gdGhlIG9iamVjdCB0byBiZSBub3RpZmllZCB3aGVuIHRoZSBiaW5kaW5n
IHNob3VsZCBiZSB1cGRhdGVkCi0gICAgRW1iZXIuYWRkT2JzZXJ2ZXIob2JqLCBmcm9tUGF0aCwg
dGhpcywgdGhpcy5mcm9tRGlkQ2hhbmdlKTsKLQotICAgIC8vIGlmIHRoZSBiaW5kaW5nIGlzIGEg
dHdvLXdheSBiaW5kaW5nLCBhbHNvIHNldCB1cCBhbiBvYnNlcnZlciBvbiB0aGUgdGFyZ2V0Ci0g
ICAgaWYgKCF0aGlzLl9vbmVXYXkpIHsgRW1iZXIuYWRkT2JzZXJ2ZXIob2JqLCB0b1BhdGgsIHRo
aXMsIHRoaXMudG9EaWRDaGFuZ2UpOyB9Ci0KLSAgICB0aGlzLl9yZWFkeVRvU3luYyA9IHRydWU7
Ci0KLSAgICByZXR1cm4gdGhpczsKLSAgfSwKLQotICAvKioKLSAgICBEaXNjb25uZWN0cyB0aGUg
YmluZGluZyBpbnN0YW5jZS4gQ2hhbmdlcyB3aWxsIG5vIGxvbmdlciBiZSByZWxheWVkLiBZb3UK
LSAgICB3aWxsIG5vdCB1c3VhbGx5IG5lZWQgdG8gY2FsbCB0aGlzIG1ldGhvZC4KLQotICAgIEBt
ZXRob2QgZGlzY29ubmVjdAotICAgIEBwYXJhbSB7T2JqZWN0fSBvYmogVGhlIHJvb3Qgb2JqZWN0
IHlvdSBwYXNzZWQgd2hlbiBjb25uZWN0aW5nIHRoZSBiaW5kaW5nLgotICAgIEByZXR1cm4ge0Vt
YmVyLkJpbmRpbmd9IGB0aGlzYAotICAqLwotICBkaXNjb25uZWN0OiBmdW5jdGlvbihvYmopIHsK
LSAgICBFbWJlci5hc3NlcnQoJ011c3QgcGFzcyBhIHZhbGlkIG9iamVjdCB0byBFbWJlci5CaW5k
aW5nLmRpc2Nvbm5lY3QoKScsICEhb2JqKTsKLQotICAgIHZhciB0d29XYXkgPSAhdGhpcy5fb25l
V2F5OwotCi0gICAgLy8gcmVtb3ZlIGFuIG9ic2VydmVyIG9uIHRoZSBvYmplY3Qgc28gd2UncmUg
bm8gbG9uZ2VyIG5vdGlmaWVkIG9mCi0gICAgLy8gY2hhbmdlcyB0aGF0IHNob3VsZCB1cGRhdGUg
YmluZGluZ3MuCi0gICAgRW1iZXIucmVtb3ZlT2JzZXJ2ZXIob2JqLCB0aGlzLl9mcm9tLCB0aGlz
LCB0aGlzLmZyb21EaWRDaGFuZ2UpOwotCi0gICAgLy8gaWYgdGhlIGJpbmRpbmcgaXMgdHdvLXdh
eSwgcmVtb3ZlIHRoZSBvYnNlcnZlciBmcm9tIHRoZSB0YXJnZXQgYXMgd2VsbAotICAgIGlmICh0
d29XYXkpIHsgRW1iZXIucmVtb3ZlT2JzZXJ2ZXIob2JqLCB0aGlzLl90bywgdGhpcywgdGhpcy50
b0RpZENoYW5nZSk7IH0KLQotICAgIHRoaXMuX3JlYWR5VG9TeW5jID0gZmFsc2U7IC8vIGRpc2Fi
bGUgc2NoZWR1bGVkIHN5bmNzLi4uCi0gICAgcmV0dXJuIHRoaXM7Ci0gIH0sCi0KLSAgLy8gLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgot
ICAvLyBQUklWQVRFCi0gIC8vCi0KLSAgLyogY2FsbGVkIHdoZW4gdGhlIGZyb20gc2lkZSBjaGFu
Z2VzICovCi0gIGZyb21EaWRDaGFuZ2U6IGZ1bmN0aW9uKHRhcmdldCkgewotICAgIHRoaXMuX3Nj
aGVkdWxlU3luYyh0YXJnZXQsICdmd2QnKTsKLSAgfSwKLQotICAvKiBjYWxsZWQgd2hlbiB0aGUg
dG8gc2lkZSBjaGFuZ2VzICovCi0gIHRvRGlkQ2hhbmdlOiBmdW5jdGlvbih0YXJnZXQpIHsKLSAg
ICB0aGlzLl9zY2hlZHVsZVN5bmModGFyZ2V0LCAnYmFjaycpOwotICB9LAotCi0gIF9zY2hlZHVs
ZVN5bmM6IGZ1bmN0aW9uKG9iaiwgZGlyKSB7Ci0gICAgdmFyIGRpcmVjdGlvbk1hcCA9IHRoaXMu
X2RpcmVjdGlvbk1hcDsKLSAgICB2YXIgZXhpc3RpbmdEaXIgPSBkaXJlY3Rpb25NYXAuZ2V0KG9i
aik7Ci0KLSAgICAvLyBpZiB3ZSBoYXZlbid0IHNjaGVkdWxlZCB0aGUgYmluZGluZyB5ZXQsIHNj
aGVkdWxlIGl0Ci0gICAgaWYgKCFleGlzdGluZ0RpcikgewotICAgICAgRW1iZXIucnVuLnNjaGVk
dWxlKCdzeW5jJywgdGhpcywgdGhpcy5fc3luYywgb2JqKTsKLSAgICAgIGRpcmVjdGlvbk1hcC5z
ZXQob2JqLCBkaXIpOwotICAgIH0KLQotICAgIC8vIElmIGJvdGggYSAnYmFjaycgYW5kICdmd2Qn
IHN5bmMgaGF2ZSBiZWVuIHNjaGVkdWxlZCBvbiB0aGUgc2FtZSBvYmplY3QsCi0gICAgLy8gZGVm
YXVsdCB0byBhICdmd2QnIHN5bmMgc28gdGhhdCBpdCByZW1haW5zIGRldGVybWluaXN0aWMuCi0g
ICAgaWYgKGV4aXN0aW5nRGlyID09PSAnYmFjaycgJiYgZGlyID09PSAnZndkJykgewotICAgICAg
ZGlyZWN0aW9uTWFwLnNldChvYmosICdmd2QnKTsKLSAgICB9Ci0gIH0sCi0KLSAgX3N5bmM6IGZ1
bmN0aW9uKG9iaikgewotICAgIHZhciBsb2cgPSBFbWJlci5MT0dfQklORElOR1M7Ci0KLSAgICAv
LyBkb24ndCBzeW5jaHJvbml6ZSBkZXN0cm95ZWQgb2JqZWN0cyBvciBkaXNjb25uZWN0ZWQgYmlu
ZGluZ3MKLSAgICBpZiAob2JqLmlzRGVzdHJveWVkIHx8ICF0aGlzLl9yZWFkeVRvU3luYykgeyBy
ZXR1cm47IH0KLQotICAgIC8vIGdldCB0aGUgZGlyZWN0aW9uIG9mIHRoZSBiaW5kaW5nIGZvciB0
aGUgb2JqZWN0IHdlIGFyZQotICAgIC8vIHN5bmNocm9uaXppbmcgZnJvbQotICAgIHZhciBkaXJl
Y3Rpb25NYXAgPSB0aGlzLl9kaXJlY3Rpb25NYXA7Ci0gICAgdmFyIGRpcmVjdGlvbiA9IGRpcmVj
dGlvbk1hcC5nZXQob2JqKTsKLQotICAgIHZhciBmcm9tUGF0aCA9IHRoaXMuX2Zyb20sIHRvUGF0
aCA9IHRoaXMuX3RvOwotCi0gICAgZGlyZWN0aW9uTWFwLnJlbW92ZShvYmopOwotCi0gICAgLy8g
aWYgd2UncmUgc3luY2hyb25pemluZyBmcm9tIHRoZSByZW1vdGUgb2JqZWN0Li4uCi0gICAgaWYg
KGRpcmVjdGlvbiA9PT0gJ2Z3ZCcpIHsKLSAgICAgIHZhciBmcm9tVmFsdWUgPSBnZXRXaXRoR2xv
YmFscyhvYmosIHRoaXMuX2Zyb20pOwotICAgICAgaWYgKGxvZykgewotICAgICAgICBFbWJlci5M
b2dnZXIubG9nKCcgJywgdGhpcy50b1N0cmluZygpLCAnLT4nLCBmcm9tVmFsdWUsIG9iaik7Ci0g
ICAgICB9Ci0gICAgICBpZiAodGhpcy5fb25lV2F5KSB7Ci0gICAgICAgIEVtYmVyLnRyeVNldChv
YmosIHRvUGF0aCwgZnJvbVZhbHVlKTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIEVtYmVyLl9z
dXNwZW5kT2JzZXJ2ZXIob2JqLCB0b1BhdGgsIHRoaXMsIHRoaXMudG9EaWRDaGFuZ2UsIGZ1bmN0
aW9uICgpIHsKLSAgICAgICAgICBFbWJlci50cnlTZXQob2JqLCB0b1BhdGgsIGZyb21WYWx1ZSk7
Ci0gICAgICAgIH0pOwotICAgICAgfQotICAgIC8vIGlmIHdlJ3JlIHN5bmNocm9uaXppbmcgKnRv
KiB0aGUgcmVtb3RlIG9iamVjdAotICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSAnYmFjaycp
IHsKLSAgICAgIHZhciB0b1ZhbHVlID0gZ2V0KG9iaiwgdGhpcy5fdG8pOwotICAgICAgaWYgKGxv
ZykgewotICAgICAgICBFbWJlci5Mb2dnZXIubG9nKCcgJywgdGhpcy50b1N0cmluZygpLCAnPC0n
LCB0b1ZhbHVlLCBvYmopOwotICAgICAgfQotICAgICAgRW1iZXIuX3N1c3BlbmRPYnNlcnZlcihv
YmosIGZyb21QYXRoLCB0aGlzLCB0aGlzLmZyb21EaWRDaGFuZ2UsIGZ1bmN0aW9uICgpIHsKLSAg
ICAgICAgRW1iZXIudHJ5U2V0KEVtYmVyLmlzR2xvYmFsUGF0aChmcm9tUGF0aCkgPyBFbWJlci5s
b29rdXAgOiBvYmosIGZyb21QYXRoLCB0b1ZhbHVlKTsKLSAgICAgIH0pOwotICAgIH0KLSAgfQot
Ci19OwotCi1mdW5jdGlvbiBtaXhpblByb3BlcnRpZXModG8sIGZyb20pIHsKLSAgZm9yICh2YXIg
a2V5IGluIGZyb20pIHsKLSAgICBpZiAoZnJvbS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7Ci0gICAg
ICB0b1trZXldID0gZnJvbVtrZXldOwotICAgIH0KLSAgfQotfQotCi1taXhpblByb3BlcnRpZXMo
QmluZGluZywgewotCi0gIC8qCi0gICAgU2VlIGBFbWJlci5CaW5kaW5nLmZyb21gLgotCi0gICAg
QG1ldGhvZCBmcm9tCi0gICAgQHN0YXRpYwotICAqLwotICBmcm9tOiBmdW5jdGlvbigpIHsKLSAg
ICB2YXIgQyA9IHRoaXMsIGJpbmRpbmcgPSBuZXcgQygpOwotICAgIHJldHVybiBiaW5kaW5nLmZy
b20uYXBwbHkoYmluZGluZywgYXJndW1lbnRzKTsKLSAgfSwKLQotICAvKgotICAgIFNlZSBgRW1i
ZXIuQmluZGluZy50b2AuCi0KLSAgICBAbWV0aG9kIHRvCi0gICAgQHN0YXRpYwotICAqLwotICB0
bzogZnVuY3Rpb24oKSB7Ci0gICAgdmFyIEMgPSB0aGlzLCBiaW5kaW5nID0gbmV3IEMoKTsKLSAg
ICByZXR1cm4gYmluZGluZy50by5hcHBseShiaW5kaW5nLCBhcmd1bWVudHMpOwotICB9LAotCi0g
IC8qKgotICAgIENyZWF0ZXMgYSBuZXcgQmluZGluZyBpbnN0YW5jZSBhbmQgbWFrZXMgaXQgYXBw
bHkgaW4gYSBzaW5nbGUgZGlyZWN0aW9uLgotICAgIEEgb25lLXdheSBiaW5kaW5nIHdpbGwgcmVs
YXkgY2hhbmdlcyBvbiB0aGUgYGZyb21gIHNpZGUgb2JqZWN0IChzdXBwbGllZAotICAgIGFzIHRo
ZSBgZnJvbWAgYXJndW1lbnQpIHRoZSBgdG9gIHNpZGUsIGJ1dCBub3QgdGhlIG90aGVyIHdheSBh
cm91bmQuCi0gICAgVGhpcyBtZWFucyB0aGF0IGlmIHlvdSBjaGFuZ2UgdGhlICJ0byIgc2lkZSBk
aXJlY3RseSwgdGhlICJmcm9tIiBzaWRlIG1heSBoYXZlCi0gICAgYSBkaWZmZXJlbnQgdmFsdWUu
Ci0KLSAgICBTZWUgYEJpbmRpbmcub25lV2F5YC4KLQotICAgIEBtZXRob2Qgb25lV2F5Ci0gICAg
QHBhcmFtIHtTdHJpbmd9IGZyb20gZnJvbSBwYXRoLgotICAgIEBwYXJhbSB7Qm9vbGVhbn0gW2Zs
YWddIChPcHRpb25hbCkgcGFzc2luZyBub3RoaW5nIGhlcmUgd2lsbCBtYWtlIHRoZQotICAgICAg
YmluZGluZyBgb25lV2F5YC4gWW91IGNhbiBpbnN0ZWFkIHBhc3MgYGZhbHNlYCB0byBkaXNhYmxl
IGBvbmVXYXlgLCBtYWtpbmcgdGhlCi0gICAgICBiaW5kaW5nIHR3byB3YXkgYWdhaW4uCi0gICAg
QHJldHVybiB7RW1iZXIuQmluZGluZ30gYHRoaXNgCi0gICovCi0gIG9uZVdheTogZnVuY3Rpb24o
ZnJvbSwgZmxhZykgewotICAgIHZhciBDID0gdGhpcywgYmluZGluZyA9IG5ldyBDKG51bGwsIGZy
b20pOwotICAgIHJldHVybiBiaW5kaW5nLm9uZVdheShmbGFnKTsKLSAgfQotCi19KTsKLQotLyoq
Ci0gIEFuIGBFbWJlci5CaW5kaW5nYCBjb25uZWN0cyB0aGUgcHJvcGVydGllcyBvZiB0d28gb2Jq
ZWN0cyBzbyB0aGF0IHdoZW5ldmVyCi0gIHRoZSB2YWx1ZSBvZiBvbmUgcHJvcGVydHkgY2hhbmdl
cywgdGhlIG90aGVyIHByb3BlcnR5IHdpbGwgYmUgY2hhbmdlZCBhbHNvLgotCi0gICMjIEF1dG9t
YXRpYyBDcmVhdGlvbiBvZiBCaW5kaW5ncyB3aXRoIGAvXipCaW5kaW5nL2AtbmFtZWQgUHJvcGVy
dGllcwotCi0gIFlvdSBkbyBub3QgdXN1YWxseSBjcmVhdGUgQmluZGluZyBvYmplY3RzIGRpcmVj
dGx5IGJ1dCBpbnN0ZWFkIGRlc2NyaWJlCi0gIGJpbmRpbmdzIGluIHlvdXIgY2xhc3Mgb3Igb2Jq
ZWN0IGRlZmluaXRpb24gdXNpbmcgYXV0b21hdGljIGJpbmRpbmcKLSAgZGV0ZWN0aW9uLgotCi0g
IFByb3BlcnRpZXMgZW5kaW5nIGluIGEgYEJpbmRpbmdgIHN1ZmZpeCB3aWxsIGJlIGNvbnZlcnRl
ZCB0byBgRW1iZXIuQmluZGluZ2AKLSAgaW5zdGFuY2VzLiBUaGUgdmFsdWUgb2YgdGhpcyBwcm9w
ZXJ0eSBzaG91bGQgYmUgYSBzdHJpbmcgcmVwcmVzZW50aW5nIGEgcGF0aAotICB0byBhbm90aGVy
IG9iamVjdCBvciBhIGN1c3RvbSBiaW5kaW5nIGluc3RhbmNlZCBjcmVhdGVkIHVzaW5nIEJpbmRp
bmcgaGVscGVycwotICAoc2VlICJPbmUgV2F5IEJpbmRpbmdzIik6Ci0KLSAgYGBgCi0gIHZhbHVl
QmluZGluZzogIk15QXBwLnNvbWVDb250cm9sbGVyLnRpdGxlIgotICBgYGAKLQotICBUaGlzIHdp
bGwgY3JlYXRlIGEgYmluZGluZyBmcm9tIGBNeUFwcC5zb21lQ29udHJvbGxlci50aXRsZWAgdG8g
dGhlIGB2YWx1ZWAKLSAgcHJvcGVydHkgb2YgeW91ciBvYmplY3QgaW5zdGFuY2UgYXV0b21hdGlj
YWxseS4gTm93IHRoZSB0d28gdmFsdWVzIHdpbGwgYmUKLSAga2VwdCBpbiBzeW5jLgotCi0gICMj
IE9uZSBXYXkgQmluZGluZ3MKLQotICBPbmUgZXNwZWNpYWxseSB1c2VmdWwgYmluZGluZyBjdXN0
b21pemF0aW9uIHlvdSBjYW4gdXNlIGlzIHRoZSBgb25lV2F5KClgCi0gIGhlbHBlci4gVGhpcyBo
ZWxwZXIgdGVsbHMgRW1iZXIgdGhhdCB5b3UgYXJlIG9ubHkgaW50ZXJlc3RlZCBpbgotICByZWNl
aXZpbmcgY2hhbmdlcyBvbiB0aGUgb2JqZWN0IHlvdSBhcmUgYmluZGluZyBmcm9tLiBGb3IgZXhh
bXBsZSwgaWYgeW91Ci0gIGFyZSBiaW5kaW5nIHRvIGEgcHJlZmVyZW5jZSBhbmQgeW91IHdhbnQg
dG8gYmUgbm90aWZpZWQgaWYgdGhlIHByZWZlcmVuY2UKLSAgaGFzIGNoYW5nZWQsIGJ1dCB5b3Vy
IG9iamVjdCB3aWxsIG5vdCBiZSBjaGFuZ2luZyB0aGUgcHJlZmVyZW5jZSBpdHNlbGYsIHlvdQot
ICBjb3VsZCBkbzoKLQotICBgYGAKLSAgYmlnVGl0bGVzQmluZGluZzogRW1iZXIuQmluZGluZy5v
bmVXYXkoIk15QXBwLnByZWZlcmVuY2VzQ29udHJvbGxlci5iaWdUaXRsZXMiKQotICBgYGAKLQot
ICBUaGlzIHdheSBpZiB0aGUgdmFsdWUgb2YgYE15QXBwLnByZWZlcmVuY2VzQ29udHJvbGxlci5i
aWdUaXRsZXNgIGNoYW5nZXMgdGhlCi0gIGBiaWdUaXRsZXNgIHByb3BlcnR5IG9mIHlvdXIgb2Jq
ZWN0IHdpbGwgY2hhbmdlIGFsc28uIEhvd2V2ZXIsIGlmIHlvdQotICBjaGFuZ2UgdGhlIHZhbHVl
IG9mIHlvdXIgYGJpZ1RpdGxlc2AgcHJvcGVydHksIGl0IHdpbGwgbm90IHVwZGF0ZSB0aGUKLSAg
YHByZWZlcmVuY2VzQ29udHJvbGxlcmAuCi0KLSAgT25lIHdheSBiaW5kaW5ncyBhcmUgYWxtb3N0
IHR3aWNlIGFzIGZhc3QgdG8gc2V0dXAgYW5kIHR3aWNlIGFzIGZhc3QgdG8KLSAgZXhlY3V0ZSBi
ZWNhdXNlIHRoZSBiaW5kaW5nIG9ubHkgaGFzIHRvIHdvcnJ5IGFib3V0IGNoYW5nZXMgdG8gb25l
IHNpZGUuCi0KLSAgWW91IHNob3VsZCBjb25zaWRlciB1c2luZyBvbmUgd2F5IGJpbmRpbmdzIGFu
eXRpbWUgeW91IGhhdmUgYW4gb2JqZWN0IHRoYXQKLSAgbWF5IGJlIGNyZWF0ZWQgZnJlcXVlbnRs
eSBhbmQgeW91IGRvIG5vdCBpbnRlbmQgdG8gY2hhbmdlIGEgcHJvcGVydHk7IG9ubHkKLSAgdG8g
bW9uaXRvciBpdCBmb3IgY2hhbmdlcyAoc3VjaCBhcyBpbiB0aGUgZXhhbXBsZSBhYm92ZSkuCi0K
LSAgIyMgQWRkaW5nIEJpbmRpbmdzIE1hbnVhbGx5Ci0KLSAgQWxsIG9mIHRoZSBleGFtcGxlcyBh
Ym92ZSBzaG93IHlvdSBob3cgdG8gY29uZmlndXJlIGEgY3VzdG9tIGJpbmRpbmcsIGJ1dCB0aGUK
LSAgcmVzdWx0IG9mIHRoZXNlIGN1c3RvbWl6YXRpb25zIHdpbGwgYmUgYSBiaW5kaW5nIHRlbXBs
YXRlLCBub3QgYSBmdWxseSBhY3RpdmUKLSAgQmluZGluZyBpbnN0YW5jZS4gVGhlIGJpbmRpbmcg
d2lsbCBhY3R1YWxseSBiZWNvbWUgYWN0aXZlIG9ubHkgd2hlbiB5b3UKLSAgaW5zdGFudGlhdGUg
dGhlIG9iamVjdCB0aGUgYmluZGluZyBiZWxvbmdzIHRvLiBJdCBpcyB1c2VmdWwgaG93ZXZlciwg
dG8KLSAgdW5kZXJzdGFuZCB3aGF0IGFjdHVhbGx5IGhhcHBlbnMgd2hlbiB0aGUgYmluZGluZyBp
cyBhY3RpdmF0ZWQuCi0KLSAgRm9yIGEgYmluZGluZyB0byBmdW5jdGlvbiBpdCBtdXN0IGhhdmUg
YXQgbGVhc3QgYSBgZnJvbWAgcHJvcGVydHkgYW5kIGEgYHRvYAotICBwcm9wZXJ0eS4gVGhlIGBm
cm9tYCBwcm9wZXJ0eSBwYXRoIHBvaW50cyB0byB0aGUgb2JqZWN0L2tleSB0aGF0IHlvdSB3YW50
IHRvCi0gIGJpbmQgZnJvbSB3aGlsZSB0aGUgYHRvYCBwYXRoIHBvaW50cyB0byB0aGUgb2JqZWN0
L2tleSB5b3Ugd2FudCB0byBiaW5kIHRvLgotCi0gIFdoZW4geW91IGRlZmluZSBhIGN1c3RvbSBi
aW5kaW5nLCB5b3UgYXJlIHVzdWFsbHkgZGVzY3JpYmluZyB0aGUgcHJvcGVydHkKLSAgeW91IHdh
bnQgdG8gYmluZCBmcm9tIChzdWNoIGFzIGBNeUFwcC5zb21lQ29udHJvbGxlci52YWx1ZWAgaW4g
dGhlIGV4YW1wbGVzCi0gIGFib3ZlKS4gV2hlbiB5b3VyIG9iamVjdCBpcyBjcmVhdGVkLCBpdCB3
aWxsIGF1dG9tYXRpY2FsbHkgYXNzaWduIHRoZSB2YWx1ZQotICB5b3Ugd2FudCB0byBiaW5kIGB0
b2AgYmFzZWQgb24gdGhlIG5hbWUgb2YgeW91ciBiaW5kaW5nIGtleS4gSW4gdGhlCi0gIGV4YW1w
bGVzIGFib3ZlLCBkdXJpbmcgaW5pdCwgRW1iZXIgb2JqZWN0cyB3aWxsIGVmZmVjdGl2ZWx5IGNh
bGwKLSAgc29tZXRoaW5nIGxpa2UgdGhpcyBvbiB5b3VyIGJpbmRpbmc6Ci0KLSAgYGBgamF2YXNj
cmlwdAotICBiaW5kaW5nID0gRW1iZXIuQmluZGluZy5mcm9tKHRoaXMudmFsdWVCaW5kaW5nKS50
bygidmFsdWUiKTsKLSAgYGBgCi0KLSAgVGhpcyBjcmVhdGVzIGEgbmV3IGJpbmRpbmcgaW5zdGFu
Y2UgYmFzZWQgb24gdGhlIHRlbXBsYXRlIHlvdSBwcm92aWRlLCBhbmQKLSAgc2V0cyB0aGUgdG8g
cGF0aCB0byB0aGUgYHZhbHVlYCBwcm9wZXJ0eSBvZiB0aGUgbmV3IG9iamVjdC4gTm93IHRoYXQg
dGhlCi0gIGJpbmRpbmcgaXMgZnVsbHkgY29uZmlndXJlZCB3aXRoIGEgYGZyb21gIGFuZCBhIGB0
b2AsIGl0IHNpbXBseSBuZWVkcyB0byBiZQotICBjb25uZWN0ZWQgdG8gYmVjb21lIGFjdGl2ZS4g
VGhpcyBpcyBkb25lIHRocm91Z2ggdGhlIGBjb25uZWN0KClgIG1ldGhvZDoKLQotICBgYGBqYXZh
c2NyaXB0Ci0gIGJpbmRpbmcuY29ubmVjdCh0aGlzKTsKLSAgYGBgCi0KLSAgTm90ZSB0aGF0IHdo
ZW4geW91IGNvbm5lY3QgYSBiaW5kaW5nIHlvdSBwYXNzIHRoZSBvYmplY3QgeW91IHdhbnQgaXQg
dG8gYmUKLSAgY29ubmVjdGVkIHRvLiBUaGlzIG9iamVjdCB3aWxsIGJlIHVzZWQgYXMgdGhlIHJv
b3QgZm9yIGJvdGggdGhlIGZyb20gYW5kCi0gIHRvIHNpZGUgb2YgdGhlIGJpbmRpbmcgd2hlbiBp
bnNwZWN0aW5nIHJlbGF0aXZlIHBhdGhzLiBUaGlzIGFsbG93cyB0aGUKLSAgYmluZGluZyB0byBi
ZSBhdXRvbWF0aWNhbGx5IGluaGVyaXRlZCBieSBzdWJjbGFzc2VkIG9iamVjdHMgYXMgd2VsbC4K
LQotICBOb3cgdGhhdCB0aGUgYmluZGluZyBpcyBjb25uZWN0ZWQsIGl0IHdpbGwgb2JzZXJ2ZSBi
b3RoIHRoZSBmcm9tIGFuZCB0byBzaWRlCi0gIGFuZCByZWxheSBjaGFuZ2VzLgotCi0gIElmIHlv
dSBldmVyIG5lZWRlZCB0byBkbyBzbyAoeW91IGFsbW9zdCBuZXZlciB3aWxsLCBidXQgaXQgaXMg
dXNlZnVsIHRvCi0gIHVuZGVyc3RhbmQgdGhpcyBhbnl3YXkpLCB5b3UgY291bGQgbWFudWFsbHkg
Y3JlYXRlIGFuIGFjdGl2ZSBiaW5kaW5nIGJ5Ci0gIHVzaW5nIHRoZSBgRW1iZXIuYmluZCgpYCBo
ZWxwZXIgbWV0aG9kLiAoVGhpcyBpcyB0aGUgc2FtZSBtZXRob2QgdXNlZCBieQotICB0byBzZXR1
cCB5b3VyIGJpbmRpbmdzIG9uIG9iamVjdHMpOgotCi0gIGBgYGphdmFzY3JpcHQKLSAgRW1iZXIu
YmluZChNeUFwcC5hbm90aGVyT2JqZWN0LCAidmFsdWUiLCAiTXlBcHAuc29tZUNvbnRyb2xsZXIu
dmFsdWUiKTsKLSAgYGBgCi0KLSAgQm90aCBvZiB0aGVzZSBjb2RlIGZyYWdtZW50cyBoYXZlIHRo
ZSBzYW1lIGVmZmVjdCBhcyBkb2luZyB0aGUgbW9zdCBmcmllbmRseQotICBmb3JtIG9mIGJpbmRp
bmcgY3JlYXRpb24gbGlrZSBzbzoKLQotICBgYGBqYXZhc2NyaXB0Ci0gIE15QXBwLmFub3RoZXJP
YmplY3QgPSBFbWJlci5PYmplY3QuY3JlYXRlKHsKLSAgICB2YWx1ZUJpbmRpbmc6ICJNeUFwcC5z
b21lQ29udHJvbGxlci52YWx1ZSIsCi0KLSAgICAvLyBPVEhFUiBDT0RFIEZPUiBUSElTIE9CSkVD
VC4uLgotICB9KTsKLSAgYGBgCi0KLSAgRW1iZXIncyBidWlsdCBpbiBiaW5kaW5nIGNyZWF0aW9u
IG1ldGhvZCBtYWtlcyBpdCBlYXN5IHRvIGF1dG9tYXRpY2FsbHkKLSAgY3JlYXRlIGJpbmRpbmdz
IGZvciB5b3UuIFlvdSBzaG91bGQgYWx3YXlzIHVzZSB0aGUgaGlnaGVzdC1sZXZlbCBBUElzCi0g
IGF2YWlsYWJsZSwgZXZlbiBpZiB5b3UgdW5kZXJzdGFuZCBob3cgaXQgd29ya3MgdW5kZXJuZWF0
aC4KLQotICBAY2xhc3MgQmluZGluZwotICBAbmFtZXNwYWNlIEVtYmVyCi0gIEBzaW5jZSBFbWJl
ciAwLjkKLSovCi1FbWJlci5CaW5kaW5nID0gQmluZGluZzsKLQotCi0vKioKLSAgR2xvYmFsIGhl
bHBlciBtZXRob2QgdG8gY3JlYXRlIGEgbmV3IGJpbmRpbmcuIEp1c3QgcGFzcyB0aGUgcm9vdCBv
YmplY3QKLSAgYWxvbmcgd2l0aCBhIGB0b2AgYW5kIGBmcm9tYCBwYXRoIHRvIGNyZWF0ZSBhbmQg
Y29ubmVjdCB0aGUgYmluZGluZy4KLQotICBAbWV0aG9kIGJpbmQKLSAgQGZvciBFbWJlcgotICBA
cGFyYW0ge09iamVjdH0gb2JqIFRoZSByb290IG9iamVjdCBvZiB0aGUgdHJhbnNmb3JtLgotICBA
cGFyYW0ge1N0cmluZ30gdG8gVGhlIHBhdGggdG8gdGhlICd0bycgc2lkZSBvZiB0aGUgYmluZGlu
Zy4KLSAgICBNdXN0IGJlIHJlbGF0aXZlIHRvIG9iai4KLSAgQHBhcmFtIHtTdHJpbmd9IGZyb20g
VGhlIHBhdGggdG8gdGhlICdmcm9tJyBzaWRlIG9mIHRoZSBiaW5kaW5nLgotICAgIE11c3QgYmUg
cmVsYXRpdmUgdG8gb2JqIG9yIGEgZ2xvYmFsIHBhdGguCi0gIEByZXR1cm4ge0VtYmVyLkJpbmRp
bmd9IGJpbmRpbmcgaW5zdGFuY2UKLSovCi1FbWJlci5iaW5kID0gZnVuY3Rpb24ob2JqLCB0bywg
ZnJvbSkgewotICByZXR1cm4gbmV3IEVtYmVyLkJpbmRpbmcodG8sIGZyb20pLmNvbm5lY3Qob2Jq
KTsKLX07Ci0KLS8qKgotICBAbWV0aG9kIG9uZVdheQotICBAZm9yIEVtYmVyCi0gIEBwYXJhbSB7
T2JqZWN0fSBvYmogVGhlIHJvb3Qgb2JqZWN0IG9mIHRoZSB0cmFuc2Zvcm0uCi0gIEBwYXJhbSB7
U3RyaW5nfSB0byBUaGUgcGF0aCB0byB0aGUgJ3RvJyBzaWRlIG9mIHRoZSBiaW5kaW5nLgotICAg
IE11c3QgYmUgcmVsYXRpdmUgdG8gb2JqLgotICBAcGFyYW0ge1N0cmluZ30gZnJvbSBUaGUgcGF0
aCB0byB0aGUgJ2Zyb20nIHNpZGUgb2YgdGhlIGJpbmRpbmcuCi0gICAgTXVzdCBiZSByZWxhdGl2
ZSB0byBvYmogb3IgYSBnbG9iYWwgcGF0aC4KLSAgQHJldHVybiB7RW1iZXIuQmluZGluZ30gYmlu
ZGluZyBpbnN0YW5jZQotKi8KLUVtYmVyLm9uZVdheSA9IGZ1bmN0aW9uKG9iaiwgdG8sIGZyb20p
IHsKLSAgcmV0dXJuIG5ldyBFbWJlci5CaW5kaW5nKHRvLCBmcm9tKS5vbmVXYXkoKS5jb25uZWN0
KG9iaik7Ci19OwotCi19KSgpOwotCi0KLQotKGZ1bmN0aW9uKCkgewotLyoqCi1AbW9kdWxlIGVt
YmVyCi1Ac3VibW9kdWxlIGVtYmVyLW1ldGFsCi0qLwotCi12YXIgTWl4aW4sIFJFUVVJUkVELCBB
bGlhcywKLSAgICBhX21hcCA9IEVtYmVyLkFycmF5UG9seWZpbGxzLm1hcCwKLSAgICBhX2luZGV4
T2YgPSBFbWJlci5BcnJheVBvbHlmaWxscy5pbmRleE9mLAotICAgIGFfZm9yRWFjaCA9IEVtYmVy
LkFycmF5UG9seWZpbGxzLmZvckVhY2gsCi0gICAgYV9zbGljZSA9IFtdLnNsaWNlLAotICAgIG9f
Y3JlYXRlID0gRW1iZXIuY3JlYXRlLAotICAgIGRlZmluZVByb3BlcnR5ID0gRW1iZXIuZGVmaW5l
UHJvcGVydHksCi0gICAgZ3VpZEZvciA9IEVtYmVyLmd1aWRGb3I7Ci0KLQotZnVuY3Rpb24gbWl4
aW5zTWV0YShvYmopIHsKLSAgdmFyIG0gPSBFbWJlci5tZXRhKG9iaiwgdHJ1ZSksIHJldCA9IG0u
bWl4aW5zOwotICBpZiAoIXJldCkgewotICAgIHJldCA9IG0ubWl4aW5zID0ge307Ci0gIH0gZWxz
ZSBpZiAoIW0uaGFzT3duUHJvcGVydHkoJ21peGlucycpKSB7Ci0gICAgcmV0ID0gbS5taXhpbnMg
PSBvX2NyZWF0ZShyZXQpOwotICB9Ci0gIHJldHVybiByZXQ7Ci19Ci0KLWZ1bmN0aW9uIGluaXRN
aXhpbihtaXhpbiwgYXJncykgewotICBpZiAoYXJncyAmJiBhcmdzLmxlbmd0aCA+IDApIHsKLSAg
ICBtaXhpbi5taXhpbnMgPSBhX21hcC5jYWxsKGFyZ3MsIGZ1bmN0aW9uKHgpIHsKLSAgICAgIGlm
ICh4IGluc3RhbmNlb2YgTWl4aW4pIHsgcmV0dXJuIHg7IH0KLQotICAgICAgLy8gTm90ZTogTWFu
dWFsbHkgc2V0dXAgYSBwcmltaXRpdmUgbWl4aW4gaGVyZS4gVGhpcyBpcyB0aGUgb25seQotICAg
ICAgLy8gd2F5IHRvIGFjdHVhbGx5IGdldCBhIHByaW1pdGl2ZSBtaXhpbi4gVGhpcyB3YXkgbm9y
bWFsIGNyZWF0aW9uCi0gICAgICAvLyBvZiBtaXhpbnMgd2lsbCBnaXZlIHlvdSBjb21iaW5lZCBt
aXhpbnMuLi4KLSAgICAgIHZhciBtaXhpbiA9IG5ldyBNaXhpbigpOwotICAgICAgbWl4aW4ucHJv
cGVydGllcyA9IHg7Ci0gICAgICByZXR1cm4gbWl4aW47Ci0gICAgfSk7Ci0gIH0KLSAgcmV0dXJu
IG1peGluOwotfQotCi1mdW5jdGlvbiBpc01ldGhvZChvYmopIHsKLSAgcmV0dXJuICdmdW5jdGlv
bicgPT09IHR5cGVvZiBvYmogJiYKLSAgICAgICAgIG9iai5pc01ldGhvZCAhPT0gZmFsc2UgJiYK
LSAgICAgICAgIG9iaiAhPT0gQm9vbGVhbiAmJiBvYmogIT09IE9iamVjdCAmJiBvYmogIT09IE51
bWJlciAmJiBvYmogIT09IEFycmF5ICYmIG9iaiAhPT0gRGF0ZSAmJiBvYmogIT09IFN0cmluZzsK
LX0KLQotdmFyIENPTlRJTlVFID0ge307Ci0KLWZ1bmN0aW9uIG1peGluUHJvcGVydGllcyhtaXhp
bnNNZXRhLCBtaXhpbikgewotICB2YXIgZ3VpZDsKLQotICBpZiAobWl4aW4gaW5zdGFuY2VvZiBN
aXhpbikgewotICAgIGd1aWQgPSBndWlkRm9yKG1peGluKTsKLSAgICBpZiAobWl4aW5zTWV0YVtn
dWlkXSkgeyByZXR1cm4gQ09OVElOVUU7IH0KLSAgICBtaXhpbnNNZXRhW2d1aWRdID0gbWl4aW47
Ci0gICAgcmV0dXJuIG1peGluLnByb3BlcnRpZXM7Ci0gIH0gZWxzZSB7Ci0gICAgcmV0dXJuIG1p
eGluOyAvLyBhcHBseSBhbm9ueW1vdXMgbWl4aW4gcHJvcGVydGllcwotICB9Ci19Ci0KLWZ1bmN0
aW9uIGNvbmNhdGVuYXRlZE1peGluUHJvcGVydGllcyhjb25jYXRQcm9wLCBwcm9wcywgdmFsdWVz
LCBiYXNlKSB7Ci0gIHZhciBjb25jYXRzOwotCi0gIC8vIHJlc2V0IGJlZm9yZSBhZGRpbmcgZWFj
aCBuZXcgbWl4aW4gdG8gcGlja3VwIGNvbmNhdHMgZnJvbSBwcmV2aW91cwotICBjb25jYXRzID0g
dmFsdWVzW2NvbmNhdFByb3BdIHx8IGJhc2VbY29uY2F0UHJvcF07Ci0gIGlmIChwcm9wc1tjb25j
YXRQcm9wXSkgewotICAgIGNvbmNhdHMgPSBjb25jYXRzID8gY29uY2F0cy5jb25jYXQocHJvcHNb
Y29uY2F0UHJvcF0pIDogcHJvcHNbY29uY2F0UHJvcF07Ci0gIH0KLQotICByZXR1cm4gY29uY2F0
czsKLX0KLQotZnVuY3Rpb24gZ2l2ZURlc2NyaXB0b3JTdXBlcihtZXRhLCBrZXksIHByb3BlcnR5
LCB2YWx1ZXMsIGRlc2NzKSB7Ci0gIHZhciBzdXBlclByb3BlcnR5OwotCi0gIC8vIENvbXB1dGVk
IHByb3BlcnRpZXMgb3ZlcnJpZGUgbWV0aG9kcywgYW5kIGRvIG5vdCBjYWxsIHN1cGVyIHRvIHRo
ZW0KLSAgaWYgKHZhbHVlc1trZXldID09PSB1bmRlZmluZWQpIHsKLSAgICAvLyBGaW5kIHRoZSBv
cmlnaW5hbCBkZXNjcmlwdG9yIGluIGEgcGFyZW50IG1peGluCi0gICAgc3VwZXJQcm9wZXJ0eSA9
IGRlc2NzW2tleV07Ci0gIH0KLQotICAvLyBJZiB3ZSBkaWRuJ3QgZmluZCB0aGUgb3JpZ2luYWwg
ZGVzY3JpcHRvciBpbiBhIHBhcmVudCBtaXhpbiwgZmluZAotICAvLyBpdCBvbiB0aGUgb3JpZ2lu
YWwgb2JqZWN0LgotICBzdXBlclByb3BlcnR5ID0gc3VwZXJQcm9wZXJ0eSB8fCBtZXRhLmRlc2Nz
W2tleV07Ci0KLSAgaWYgKCFzdXBlclByb3BlcnR5IHx8ICEoc3VwZXJQcm9wZXJ0eSBpbnN0YW5j
ZW9mIEVtYmVyLkNvbXB1dGVkUHJvcGVydHkpKSB7Ci0gICAgcmV0dXJuIHByb3BlcnR5OwotICB9
Ci0KLSAgLy8gU2luY2UgbXVsdGlwbGUgbWl4aW5zIG1heSBpbmhlcml0IGZyb20gdGhlIHNhbWUg
cGFyZW50LCB3ZSBuZWVkCi0gIC8vIHRvIGNsb25lIHRoZSBjb21wdXRlZCBwcm9wZXJ0eSBzbyB0
aGF0IG90aGVyIG1peGlucyBkbyBub3QgcmVjZWl2ZQotICAvLyB0aGUgd3JhcHBlZCB2ZXJzaW9u
LgotICBwcm9wZXJ0eSA9IG9fY3JlYXRlKHByb3BlcnR5KTsKLSAgcHJvcGVydHkuZnVuYyA9IEVt
YmVyLndyYXAocHJvcGVydHkuZnVuYywgc3VwZXJQcm9wZXJ0eS5mdW5jKTsKLQotICByZXR1cm4g
cHJvcGVydHk7Ci19Ci0KLWZ1bmN0aW9uIGdpdmVNZXRob2RTdXBlcihvYmosIGtleSwgbWV0aG9k
LCB2YWx1ZXMsIGRlc2NzKSB7Ci0gIHZhciBzdXBlck1ldGhvZDsKLQotICAvLyBNZXRob2RzIG92
ZXJ3cml0ZSBjb21wdXRlZCBwcm9wZXJ0aWVzLCBhbmQgZG8gbm90IGNhbGwgc3VwZXIgdG8gdGhl
bS4KLSAgaWYgKGRlc2NzW2tleV0gPT09IHVuZGVmaW5lZCkgewotICAgIC8vIEZpbmQgdGhlIG9y
aWdpbmFsIG1ldGhvZCBpbiBhIHBhcmVudCBtaXhpbgotICAgIHN1cGVyTWV0aG9kID0gdmFsdWVz
W2tleV07Ci0gIH0KLQotICAvLyBJZiB3ZSBkaWRuJ3QgZmluZCB0aGUgb3JpZ2luYWwgdmFsdWUg
aW4gYSBwYXJlbnQgbWl4aW4sIGZpbmQgaXQgaW4KLSAgLy8gdGhlIG9yaWdpbmFsIG9iamVjdAot
ICBzdXBlck1ldGhvZCA9IHN1cGVyTWV0aG9kIHx8IG9ialtrZXldOwotCi0gIC8vIE9ubHkgd3Jh
cCB0aGUgbmV3IG1ldGhvZCBpZiB0aGUgb3JpZ2luYWwgbWV0aG9kIHdhcyBhIGZ1bmN0aW9uCi0g
IGlmICgnZnVuY3Rpb24nICE9PSB0eXBlb2Ygc3VwZXJNZXRob2QpIHsKLSAgICByZXR1cm4gbWV0
aG9kOwotICB9Ci0KLSAgcmV0dXJuIEVtYmVyLndyYXAobWV0aG9kLCBzdXBlck1ldGhvZCk7Ci19
Ci0KLWZ1bmN0aW9uIGFwcGx5Q29uY2F0ZW5hdGVkUHJvcGVydGllcyhvYmosIGtleSwgdmFsdWUs
IHZhbHVlcykgewotICB2YXIgYmFzZVZhbHVlID0gdmFsdWVzW2tleV0gfHwgb2JqW2tleV07Ci0K
LSAgaWYgKGJhc2VWYWx1ZSkgewotICAgIGlmICgnZnVuY3Rpb24nID09PSB0eXBlb2YgYmFzZVZh
bHVlLmNvbmNhdCkgewotICAgICAgcmV0dXJuIGJhc2VWYWx1ZS5jb25jYXQodmFsdWUpOwotICAg
IH0gZWxzZSB7Ci0gICAgICByZXR1cm4gRW1iZXIubWFrZUFycmF5KGJhc2VWYWx1ZSkuY29uY2F0
KHZhbHVlKTsKLSAgICB9Ci0gIH0gZWxzZSB7Ci0gICAgcmV0dXJuIEVtYmVyLm1ha2VBcnJheSh2
YWx1ZSk7Ci0gIH0KLX0KLQotZnVuY3Rpb24gYXBwbHlNZXJnZWRQcm9wZXJ0aWVzKG9iaiwga2V5
LCB2YWx1ZSwgdmFsdWVzKSB7Ci0gIHZhciBiYXNlVmFsdWUgPSB2YWx1ZXNba2V5XSB8fCBvYmpb
a2V5XTsKLQotICBpZiAoIWJhc2VWYWx1ZSkgeyByZXR1cm4gdmFsdWU7IH0KLQotICB2YXIgbmV3
QmFzZSA9IEVtYmVyLm1lcmdlKHt9LCBiYXNlVmFsdWUpOwotICBmb3IgKHZhciBwcm9wIGluIHZh
bHVlKSB7Ci0gICAgaWYgKCF2YWx1ZS5oYXNPd25Qcm9wZXJ0eShwcm9wKSkgeyBjb250aW51ZTsg
fQotCi0gICAgdmFyIHByb3BWYWx1ZSA9IHZhbHVlW3Byb3BdOwotICAgIGlmIChpc01ldGhvZChw
cm9wVmFsdWUpKSB7Ci0gICAgICAvLyBUT0RPOiBzdXBwb3J0IGZvciBDb21wdXRlZCBQcm9wZXJ0
aWVzLCBldGM/Ci0gICAgICBuZXdCYXNlW3Byb3BdID0gZ2l2ZU1ldGhvZFN1cGVyKG9iaiwgcHJv
cCwgcHJvcFZhbHVlLCBiYXNlVmFsdWUsIHt9KTsKLSAgICB9IGVsc2UgewotICAgICAgbmV3QmFz
ZVtwcm9wXSA9IHByb3BWYWx1ZTsKLSAgICB9Ci0gIH0KLQotICByZXR1cm4gbmV3QmFzZTsKLX0K
LQotZnVuY3Rpb24gYWRkTm9ybWFsaXplZFByb3BlcnR5KGJhc2UsIGtleSwgdmFsdWUsIG1ldGEs
IGRlc2NzLCB2YWx1ZXMsIGNvbmNhdHMsIG1lcmdpbmdzKSB7Ci0gIGlmICh2YWx1ZSBpbnN0YW5j
ZW9mIEVtYmVyLkRlc2NyaXB0b3IpIHsKLSAgICBpZiAodmFsdWUgPT09IFJFUVVJUkVEICYmIGRl
c2NzW2tleV0pIHsgcmV0dXJuIENPTlRJTlVFOyB9Ci0KLSAgICAvLyBXcmFwIGRlc2NyaXB0b3Ig
ZnVuY3Rpb24gdG8gaW1wbGVtZW50Ci0gICAgLy8gX3N1cGVyKCkgaWYgbmVlZGVkCi0gICAgaWYg
KHZhbHVlLmZ1bmMpIHsKLSAgICAgIHZhbHVlID0gZ2l2ZURlc2NyaXB0b3JTdXBlcihtZXRhLCBr
ZXksIHZhbHVlLCB2YWx1ZXMsIGRlc2NzKTsKLSAgICB9Ci0KLSAgICBkZXNjc1trZXldICA9IHZh
bHVlOwotICAgIHZhbHVlc1trZXldID0gdW5kZWZpbmVkOwotICB9IGVsc2UgewotICAgIGlmICgo
Y29uY2F0cyAmJiBhX2luZGV4T2YuY2FsbChjb25jYXRzLCBrZXkpID49IDApIHx8Ci0gICAgICAg
ICAgICAgICAga2V5ID09PSAnY29uY2F0ZW5hdGVkUHJvcGVydGllcycgfHwKLSAgICAgICAgICAg
ICAgICBrZXkgPT09ICdtZXJnZWRQcm9wZXJ0aWVzJykgewotICAgICAgdmFsdWUgPSBhcHBseUNv
bmNhdGVuYXRlZFByb3BlcnRpZXMoYmFzZSwga2V5LCB2YWx1ZSwgdmFsdWVzKTsKLSAgICB9IGVs
c2UgaWYgKChtZXJnaW5ncyAmJiBhX2luZGV4T2YuY2FsbChtZXJnaW5ncywga2V5KSA+PSAwKSkg
ewotICAgICAgdmFsdWUgPSBhcHBseU1lcmdlZFByb3BlcnRpZXMoYmFzZSwga2V5LCB2YWx1ZSwg
dmFsdWVzKTsKLSAgICB9IGVsc2UgaWYgKGlzTWV0aG9kKHZhbHVlKSkgewotICAgICAgdmFsdWUg
PSBnaXZlTWV0aG9kU3VwZXIoYmFzZSwga2V5LCB2YWx1ZSwgdmFsdWVzLCBkZXNjcyk7Ci0gICAg
fQotCi0gICAgZGVzY3Nba2V5XSA9IHVuZGVmaW5lZDsKLSAgICB2YWx1ZXNba2V5XSA9IHZhbHVl
OwotICB9Ci19Ci0KLWZ1bmN0aW9uIG1lcmdlTWl4aW5zKG1peGlucywgbSwgZGVzY3MsIHZhbHVl
cywgYmFzZSwga2V5cykgewotICB2YXIgbWl4aW4sIHByb3BzLCBrZXksIGNvbmNhdHMsIG1lcmdp
bmdzLCBtZXRhOwotCi0gIGZ1bmN0aW9uIHJlbW92ZUtleXMoa2V5TmFtZSkgewotICAgIGRlbGV0
ZSBkZXNjc1trZXlOYW1lXTsKLSAgICBkZWxldGUgdmFsdWVzW2tleU5hbWVdOwotICB9Ci0KLSAg
Zm9yKHZhciBpPTAsIGw9bWl4aW5zLmxlbmd0aDsgaTxsOyBpKyspIHsKLSAgICBtaXhpbiA9IG1p
eGluc1tpXTsKLSAgICBFbWJlci5hc3NlcnQoJ0V4cGVjdGVkIGhhc2ggb3IgTWl4aW4gaW5zdGFu
Y2UsIGdvdCAnICsgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG1peGluKSwKLSAgICAg
ICAgICAgICAgICAgdHlwZW9mIG1peGluID09PSAnb2JqZWN0JyAmJiBtaXhpbiAhPT0gbnVsbCAm
JiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobWl4aW4pICE9PSAnW29iamVjdCBBcnJh
eV0nKTsKLQotICAgIHByb3BzID0gbWl4aW5Qcm9wZXJ0aWVzKG0sIG1peGluKTsKLSAgICBpZiAo
cHJvcHMgPT09IENPTlRJTlVFKSB7IGNvbnRpbnVlOyB9Ci0KLSAgICBpZiAocHJvcHMpIHsKLSAg
ICAgIG1ldGEgPSBFbWJlci5tZXRhKGJhc2UpOwotICAgICAgaWYgKGJhc2Uud2lsbE1lcmdlTWl4
aW4pIHsgYmFzZS53aWxsTWVyZ2VNaXhpbihwcm9wcyk7IH0KLSAgICAgIGNvbmNhdHMgPSBjb25j
YXRlbmF0ZWRNaXhpblByb3BlcnRpZXMoJ2NvbmNhdGVuYXRlZFByb3BlcnRpZXMnLCBwcm9wcywg
dmFsdWVzLCBiYXNlKTsKLSAgICAgIG1lcmdpbmdzID0gY29uY2F0ZW5hdGVkTWl4aW5Qcm9wZXJ0
aWVzKCdtZXJnZWRQcm9wZXJ0aWVzJywgcHJvcHMsIHZhbHVlcywgYmFzZSk7Ci0KLSAgICAgIGZv
ciAoa2V5IGluIHByb3BzKSB7Ci0gICAgICAgIGlmICghcHJvcHMuaGFzT3duUHJvcGVydHkoa2V5
KSkgeyBjb250aW51ZTsgfQotICAgICAgICBrZXlzLnB1c2goa2V5KTsKLSAgICAgICAgYWRkTm9y
bWFsaXplZFByb3BlcnR5KGJhc2UsIGtleSwgcHJvcHNba2V5XSwgbWV0YSwgZGVzY3MsIHZhbHVl
cywgY29uY2F0cywgbWVyZ2luZ3MpOwotICAgICAgfQotCi0gICAgICAvLyBtYW51YWxseSBjb3B5
IHRvU3RyaW5nKCkgYmVjYXVzZSBzb21lIEpTIGVuZ2luZXMgZG8gbm90IGVudW1lcmF0ZSBpdAot
ICAgICAgaWYgKHByb3BzLmhhc093blByb3BlcnR5KCd0b1N0cmluZycpKSB7IGJhc2UudG9TdHJp
bmcgPSBwcm9wcy50b1N0cmluZzsgfQotICAgIH0gZWxzZSBpZiAobWl4aW4ubWl4aW5zKSB7Ci0g
ICAgICBtZXJnZU1peGlucyhtaXhpbi5taXhpbnMsIG0sIGRlc2NzLCB2YWx1ZXMsIGJhc2UsIGtl
eXMpOwotICAgICAgaWYgKG1peGluLl93aXRob3V0KSB7IGFfZm9yRWFjaC5jYWxsKG1peGluLl93
aXRob3V0LCByZW1vdmVLZXlzKTsgfQotICAgIH0KLSAgfQotfQotCi12YXIgSVNfQklORElORyA9
IEVtYmVyLklTX0JJTkRJTkcgPSAvXi4rQmluZGluZyQvOwotCi1mdW5jdGlvbiBkZXRlY3RCaW5k
aW5nKG9iaiwga2V5LCB2YWx1ZSwgbSkgewotICBpZiAoSVNfQklORElORy50ZXN0KGtleSkpIHsK
LSAgICB2YXIgYmluZGluZ3MgPSBtLmJpbmRpbmdzOwotICAgIGlmICghYmluZGluZ3MpIHsKLSAg
ICAgIGJpbmRpbmdzID0gbS5iaW5kaW5ncyA9IHt9OwotICAgIH0gZWxzZSBpZiAoIW0uaGFzT3du
UHJvcGVydHkoJ2JpbmRpbmdzJykpIHsKLSAgICAgIGJpbmRpbmdzID0gbS5iaW5kaW5ncyA9IG9f
Y3JlYXRlKG0uYmluZGluZ3MpOwotICAgIH0KLSAgICBiaW5kaW5nc1trZXldID0gdmFsdWU7Ci0g
IH0KLX0KLQotZnVuY3Rpb24gY29ubmVjdEJpbmRpbmdzKG9iaiwgbSkgewotICAvLyBUT0RPIE1p
eGluLmFwcGx5KGluc3RhbmNlKSBzaG91bGQgZGlzY29ubmVjdCBiaW5kaW5nIGlmIGV4aXN0cwot
ICB2YXIgYmluZGluZ3MgPSBtLmJpbmRpbmdzLCBrZXksIGJpbmRpbmcsIHRvOwotICBpZiAoYmlu
ZGluZ3MpIHsKLSAgICBmb3IgKGtleSBpbiBiaW5kaW5ncykgewotICAgICAgYmluZGluZyA9IGJp
bmRpbmdzW2tleV07Ci0gICAgICBpZiAoYmluZGluZykgewotICAgICAgICB0byA9IGtleS5zbGlj
ZSgwLCAtNyk7IC8vIHN0cmlwIEJpbmRpbmcgb2ZmIGVuZAotICAgICAgICBpZiAoYmluZGluZyBp
bnN0YW5jZW9mIEVtYmVyLkJpbmRpbmcpIHsKLSAgICAgICAgICBiaW5kaW5nID0gYmluZGluZy5j
b3B5KCk7IC8vIGNvcHkgcHJvdG90eXBlcycgaW5zdGFuY2UKLSAgICAgICAgICBiaW5kaW5nLnRv
KHRvKTsKLSAgICAgICAgfSBlbHNlIHsgLy8gYmluZGluZyBpcyBzdHJpbmcgcGF0aAotICAgICAg
ICAgIGJpbmRpbmcgPSBuZXcgRW1iZXIuQmluZGluZyh0bywgYmluZGluZyk7Ci0gICAgICAgIH0K
LSAgICAgICAgYmluZGluZy5jb25uZWN0KG9iaik7Ci0gICAgICAgIG9ialtrZXldID0gYmluZGlu
ZzsKLSAgICAgIH0KLSAgICB9Ci0gICAgLy8gbWFyayBhcyBhcHBsaWVkCi0gICAgbS5iaW5kaW5n
cyA9IHt9OwotICB9Ci19Ci0KLWZ1bmN0aW9uIGZpbmlzaFBhcnRpYWwob2JqLCBtKSB7Ci0gIGNv
bm5lY3RCaW5kaW5ncyhvYmosIG0gfHwgRW1iZXIubWV0YShvYmopKTsKLSAgcmV0dXJuIG9iajsK
LX0KLQotZnVuY3Rpb24gZm9sbG93QWxpYXMob2JqLCBkZXNjLCBtLCBkZXNjcywgdmFsdWVzKSB7
Ci0gIHZhciBhbHRLZXkgPSBkZXNjLm1ldGhvZE5hbWUsIHZhbHVlOwotICBpZiAoZGVzY3NbYWx0
S2V5XSB8fCB2YWx1ZXNbYWx0S2V5XSkgewotICAgIHZhbHVlID0gdmFsdWVzW2FsdEtleV07Ci0g
ICAgZGVzYyAgPSBkZXNjc1thbHRLZXldOwotICB9IGVsc2UgaWYgKG0uZGVzY3NbYWx0S2V5XSkg
ewotICAgIGRlc2MgID0gbS5kZXNjc1thbHRLZXldOwotICAgIHZhbHVlID0gdW5kZWZpbmVkOwot
ICB9IGVsc2UgewotICAgIGRlc2MgPSB1bmRlZmluZWQ7Ci0gICAgdmFsdWUgPSBvYmpbYWx0S2V5
XTsKLSAgfQotCi0gIHJldHVybiB7IGRlc2M6IGRlc2MsIHZhbHVlOiB2YWx1ZSB9OwotfQotCi1m
dW5jdGlvbiB1cGRhdGVPYnNlcnZlcnNBbmRMaXN0ZW5lcnMob2JqLCBrZXksIG9ic2VydmVyT3JM
aXN0ZW5lciwgcGF0aHNLZXksIHVwZGF0ZU1ldGhvZCkgewotICB2YXIgcGF0aHMgPSBvYnNlcnZl
ck9yTGlzdGVuZXJbcGF0aHNLZXldOwotCi0gIGlmIChwYXRocykgewotICAgIGZvciAodmFyIGk9
MCwgbD1wYXRocy5sZW5ndGg7IGk8bDsgaSsrKSB7Ci0gICAgICBFbWJlclt1cGRhdGVNZXRob2Rd
KG9iaiwgcGF0aHNbaV0sIG51bGwsIGtleSk7Ci0gICAgfQotICB9Ci19Ci0KLWZ1bmN0aW9uIHJl
cGxhY2VPYnNlcnZlcnNBbmRMaXN0ZW5lcnMob2JqLCBrZXksIG9ic2VydmVyT3JMaXN0ZW5lcikg
ewotICB2YXIgcHJldiA9IG9ialtrZXldOwotCi0gIGlmICgnZnVuY3Rpb24nID09PSB0eXBlb2Yg
cHJldikgewotICAgIHVwZGF0ZU9ic2VydmVyc0FuZExpc3RlbmVycyhvYmosIGtleSwgcHJldiwg
J19fZW1iZXJfb2JzZXJ2ZXNCZWZvcmVfXycsICdyZW1vdmVCZWZvcmVPYnNlcnZlcicpOwotICAg
IHVwZGF0ZU9ic2VydmVyc0FuZExpc3RlbmVycyhvYmosIGtleSwgcHJldiwgJ19fZW1iZXJfb2Jz
ZXJ2ZXNfXycsICdyZW1vdmVPYnNlcnZlcicpOwotICAgIHVwZGF0ZU9ic2VydmVyc0FuZExpc3Rl
bmVycyhvYmosIGtleSwgcHJldiwgJ19fZW1iZXJfbGlzdGVuc19fJywgJ3JlbW92ZUxpc3RlbmVy
Jyk7Ci0gIH0KLQotICBpZiAoJ2Z1bmN0aW9uJyA9PT0gdHlwZW9mIG9ic2VydmVyT3JMaXN0ZW5l
cikgewotICAgIHVwZGF0ZU9ic2VydmVyc0FuZExpc3RlbmVycyhvYmosIGtleSwgb2JzZXJ2ZXJP
ckxpc3RlbmVyLCAnX19lbWJlcl9vYnNlcnZlc0JlZm9yZV9fJywgJ2FkZEJlZm9yZU9ic2VydmVy
Jyk7Ci0gICAgdXBkYXRlT2JzZXJ2ZXJzQW5kTGlzdGVuZXJzKG9iaiwga2V5LCBvYnNlcnZlck9y
TGlzdGVuZXIsICdfX2VtYmVyX29ic2VydmVzX18nLCAnYWRkT2JzZXJ2ZXInKTsKLSAgICB1cGRh
dGVPYnNlcnZlcnNBbmRMaXN0ZW5lcnMob2JqLCBrZXksIG9ic2VydmVyT3JMaXN0ZW5lciwgJ19f
ZW1iZXJfbGlzdGVuc19fJywgJ2FkZExpc3RlbmVyJyk7Ci0gIH0KLX0KLQotZnVuY3Rpb24gYXBw
bHlNaXhpbihvYmosIG1peGlucywgcGFydGlhbCkgewotICB2YXIgZGVzY3MgPSB7fSwgdmFsdWVz
ID0ge30sIG0gPSBFbWJlci5tZXRhKG9iaiksCi0gICAgICBrZXksIHZhbHVlLCBkZXNjLCBrZXlz
ID0gW107Ci0KLSAgLy8gR28gdGhyb3VnaCBhbGwgbWl4aW5zIGFuZCBoYXNoZXMgcGFzc2VkIGlu
LCBhbmQ6Ci0gIC8vCi0gIC8vICogSGFuZGxlIGNvbmNhdGVuYXRlZCBwcm9wZXJ0aWVzCi0gIC8v
ICogSGFuZGxlIG1lcmdlZCBwcm9wZXJ0aWVzCi0gIC8vICogU2V0IHVwIF9zdXBlciB3cmFwcGlu
ZyBpZiBuZWNlc3NhcnkKLSAgLy8gKiBTZXQgdXAgY29tcHV0ZWQgcHJvcGVydHkgZGVzY3JpcHRv
cnMKLSAgLy8gKiBDb3B5aW5nIGB0b1N0cmluZ2AgaW4gYnJva2VuIGJyb3dzZXJzCi0gIG1lcmdl
TWl4aW5zKG1peGlucywgbWl4aW5zTWV0YShvYmopLCBkZXNjcywgdmFsdWVzLCBvYmosIGtleXMp
OwotCi0gIGZvcih2YXIgaSA9IDAsIGwgPSBrZXlzLmxlbmd0aDsgaSA8IGw7IGkrKykgewotICAg
IGtleSA9IGtleXNbaV07Ci0gICAgaWYgKGtleSA9PT0gJ2NvbnN0cnVjdG9yJyB8fCAhdmFsdWVz
Lmhhc093blByb3BlcnR5KGtleSkpIHsgY29udGludWU7IH0KLQotICAgIGRlc2MgPSBkZXNjc1tr
ZXldOwotICAgIHZhbHVlID0gdmFsdWVzW2tleV07Ci0KLSAgICBpZiAoZGVzYyA9PT0gUkVRVUlS
RUQpIHsgY29udGludWU7IH0KLQotICAgIHdoaWxlIChkZXNjICYmIGRlc2MgaW5zdGFuY2VvZiBB
bGlhcykgewotICAgICAgdmFyIGZvbGxvd2VkID0gZm9sbG93QWxpYXMob2JqLCBkZXNjLCBtLCBk
ZXNjcywgdmFsdWVzKTsKLSAgICAgIGRlc2MgPSBmb2xsb3dlZC5kZXNjOwotICAgICAgdmFsdWUg
PSBmb2xsb3dlZC52YWx1ZTsKLSAgICB9Ci0KLSAgICBpZiAoZGVzYyA9PT0gdW5kZWZpbmVkICYm
IHZhbHVlID09PSB1bmRlZmluZWQpIHsgY29udGludWU7IH0KLQotICAgIHJlcGxhY2VPYnNlcnZl
cnNBbmRMaXN0ZW5lcnMob2JqLCBrZXksIHZhbHVlKTsKLSAgICBkZXRlY3RCaW5kaW5nKG9iaiwg
a2V5LCB2YWx1ZSwgbSk7Ci0gICAgZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIGRlc2MsIHZhbHVl
LCBtKTsKLSAgfQotCi0gIGlmICghcGFydGlhbCkgeyAvLyBkb24ndCBhcHBseSB0byBwcm90b3R5
cGUKLSAgICBmaW5pc2hQYXJ0aWFsKG9iaiwgbSk7Ci0gIH0KLQotICByZXR1cm4gb2JqOwotfQot
Ci0vKioKLSAgQG1ldGhvZCBtaXhpbgotICBAZm9yIEVtYmVyCi0gIEBwYXJhbSBvYmoKLSAgQHBh
cmFtIG1peGlucyoKLSAgQHJldHVybiBvYmoKLSovCi1FbWJlci5taXhpbiA9IGZ1bmN0aW9uKG9i
aikgewotICB2YXIgYXJncyA9IGFfc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpOwotICBhcHBseU1p
eGluKG9iaiwgYXJncywgZmFsc2UpOwotICByZXR1cm4gb2JqOwotfTsKLQotLyoqCi0gIFRoZSBg
RW1iZXIuTWl4aW5gIGNsYXNzIGFsbG93cyB5b3UgdG8gY3JlYXRlIG1peGlucywgd2hvc2UgcHJv
cGVydGllcyBjYW4gYmUKLSAgYWRkZWQgdG8gb3RoZXIgY2xhc3Nlcy4gRm9yIGluc3RhbmNlLAot
Ci0gIGBgYGphdmFzY3JpcHQKLSAgQXBwLkVkaXRhYmxlID0gRW1iZXIuTWl4aW4uY3JlYXRlKHsK
LSAgICBlZGl0OiBmdW5jdGlvbigpIHsKLSAgICAgIGNvbnNvbGUubG9nKCdzdGFydGluZyB0byBl
ZGl0Jyk7Ci0gICAgICB0aGlzLnNldCgnaXNFZGl0aW5nJywgdHJ1ZSk7Ci0gICAgfSwKLSAgICBp
c0VkaXRpbmc6IGZhbHNlCi0gIH0pOwotCi0gIC8vIE1peCBtaXhpbnMgaW50byBjbGFzc2VzIGJ5
IHBhc3NpbmcgdGhlbSBhcyB0aGUgZmlyc3QgYXJndW1lbnRzIHRvCi0gIC8vIC5leHRlbmQuCi0g
IEFwcC5Db21tZW50VmlldyA9IEVtYmVyLlZpZXcuZXh0ZW5kKEFwcC5FZGl0YWJsZSwgewotICAg
IHRlbXBsYXRlOiBFbWJlci5IYW5kbGViYXJzLmNvbXBpbGUoJ3t7I2lmIHZpZXcuaXNFZGl0aW5n
fX0uLi57e2Vsc2V9fS4uLnt7L2lmfX0nKQotICB9KTsKLQotICBjb21tZW50VmlldyA9IEFwcC5D
b21tZW50Vmlldy5jcmVhdGUoKTsKLSAgY29tbWVudFZpZXcuZWRpdCgpOyAvLyBvdXRwdXRzICdz
dGFydGluZyB0byBlZGl0JwotICBgYGAKLQotICBOb3RlIHRoYXQgTWl4aW5zIGFyZSBjcmVhdGVk
IHdpdGggYEVtYmVyLk1peGluLmNyZWF0ZWAsIG5vdAotICBgRW1iZXIuTWl4aW4uZXh0ZW5kYC4K
LQotICBOb3RlIHRoYXQgbWl4aW5zIGV4dGVuZCBhIGNvbnN0cnVjdG9yJ3MgcHJvdG90eXBlIHNv
IGFycmF5cyBhbmQgb2JqZWN0IGxpdGVyYWxzCi0gIGRlZmluZWQgYXMgcHJvcGVydGllcyB3aWxs
IGJlIHNoYXJlZCBhbW9uZ3N0IG9iamVjdHMgdGhhdCBpbXBsZW1lbnQgdGhlIG1peGluLgotICBJ
ZiB5b3Ugd2FudCB0byBkZWZpbmUgYW4gcHJvcGVydHkgaW4gYSBtaXhpbiB0aGF0IGlzIG5vdCBz
aGFyZWQsIHlvdSBjYW4gZGVmaW5lCi0gIGl0IGVpdGhlciBhcyBhIGNvbXB1dGVkIHByb3BlcnR5
IG9yIGhhdmUgaXQgYmUgY3JlYXRlZCBvbiBpbml0aWFsaXphdGlvbiBvZiB0aGUgb2JqZWN0Lgot
Ci0gIGBgYGphdmFzY3JpcHQKLSAgLy9maWx0ZXJzIGFycmF5IHdpbGwgYmUgc2hhcmVkIGFtb25n
c3QgYW55IG9iamVjdCBpbXBsZW1lbnRpbmcgbWl4aW4KLSAgQXBwLkZpbHRlcmFibGUgPSBFbWJl
ci5NaXhpbi5jcmVhdGUoewotICAgIGZpbHRlcnM6IEVtYmVyLkEoKQotICB9KTsKLQotICAvL2Zp
bHRlcnMgd2lsbCBiZSBhIHNlcGFyYXRlICBhcnJheSBmb3IgZXZlcnkgb2JqZWN0IGltcGxlbWVu
dGluZyB0aGUgbWl4aW4KLSAgQXBwLkZpbHRlcmFibGUgPSBFbWJlci5NaXhpbi5jcmVhdGUoewot
ICAgIGZpbHRlcnM6IEVtYmVyLmNvbXB1dGVkKGZ1bmN0aW9uKCl7cmV0dXJuIEVtYmVyLkEoKTt9
KQotICB9KTsKLQotICAvL2ZpbHRlcnMgd2lsbCBiZSBjcmVhdGVkIGFzIGEgc2VwYXJhdGUgYXJy
YXkgZHVyaW5nIHRoZSBvYmplY3QncyBpbml0aWFsaXphdGlvbgotICBBcHAuRmlsdGVyYWJsZSA9
IEVtYmVyLk1peGluLmNyZWF0ZSh7Ci0gICAgaW5pdDogZnVuY3Rpb24oKSB7Ci0gICAgICB0aGlz
Ll9zdXBlcigpOwotICAgICAgdGhpcy5zZXQoImZpbHRlcnMiLCBFbWJlci5BKCkpOwotICAgIH0K
LSAgfSk7Ci0gIGBgYAotCi0gIEBjbGFzcyBNaXhpbgotICBAbmFtZXNwYWNlIEVtYmVyCi0qLwot
RW1iZXIuTWl4aW4gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluaXRNaXhpbih0aGlzLCBhcmd1bWVu
dHMpOyB9OwotCi1NaXhpbiA9IEVtYmVyLk1peGluOwotCi1NaXhpbi5wcm90b3R5cGUgPSB7Ci0g
IHByb3BlcnRpZXM6IG51bGwsCi0gIG1peGluczogbnVsbCwKLSAgb3duZXJDb25zdHJ1Y3Rvcjog
bnVsbAotfTsKLQotTWl4aW4uX2FwcGx5ID0gYXBwbHlNaXhpbjsKLQotTWl4aW4uYXBwbHlQYXJ0
aWFsID0gZnVuY3Rpb24ob2JqKSB7Ci0gIHZhciBhcmdzID0gYV9zbGljZS5jYWxsKGFyZ3VtZW50
cywgMSk7Ci0gIHJldHVybiBhcHBseU1peGluKG9iaiwgYXJncywgdHJ1ZSk7Ci19OwotCi1NaXhp
bi5maW5pc2hQYXJ0aWFsID0gZmluaXNoUGFydGlhbDsKLQotRW1iZXIuYW55VW5wcm9jZXNzZWRN
aXhpbnMgPSBmYWxzZTsKLQotLyoqCi0gIEBtZXRob2QgY3JlYXRlCi0gIEBzdGF0aWMKLSAgQHBh
cmFtIGFyZ3VtZW50cyoKLSovCi1NaXhpbi5jcmVhdGUgPSBmdW5jdGlvbigpIHsKLSAgRW1iZXIu
YW55VW5wcm9jZXNzZWRNaXhpbnMgPSB0cnVlOwotICB2YXIgTSA9IHRoaXM7Ci0gIHJldHVybiBp
bml0TWl4aW4obmV3IE0oKSwgYXJndW1lbnRzKTsKLX07Ci0KLXZhciBNaXhpblByb3RvdHlwZSA9
IE1peGluLnByb3RvdHlwZTsKLQotLyoqCi0gIEBtZXRob2QgcmVvcGVuCi0gIEBwYXJhbSBhcmd1
bWVudHMqCi0qLwotTWl4aW5Qcm90b3R5cGUucmVvcGVuID0gZnVuY3Rpb24oKSB7Ci0gIHZhciBt
aXhpbiwgdG1wOwotCi0gIGlmICh0aGlzLnByb3BlcnRpZXMpIHsKLSAgICBtaXhpbiA9IE1peGlu
LmNyZWF0ZSgpOwotICAgIG1peGluLnByb3BlcnRpZXMgPSB0aGlzLnByb3BlcnRpZXM7Ci0gICAg
ZGVsZXRlIHRoaXMucHJvcGVydGllczsKLSAgICB0aGlzLm1peGlucyA9IFttaXhpbl07Ci0gIH0g
ZWxzZSBpZiAoIXRoaXMubWl4aW5zKSB7Ci0gICAgdGhpcy5taXhpbnMgPSBbXTsKLSAgfQotCi0g
IHZhciBsZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBtaXhpbnMgPSB0aGlzLm1peGlucywgaWR4Owot
Ci0gIGZvcihpZHg9MDsgaWR4IDwgbGVuOyBpZHgrKykgewotICAgIG1peGluID0gYXJndW1lbnRz
W2lkeF07Ci0gICAgRW1iZXIuYXNzZXJ0KCdFeHBlY3RlZCBoYXNoIG9yIE1peGluIGluc3RhbmNl
LCBnb3QgJyArIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChtaXhpbiksCi0gICAgICAg
ICAgICAgICAgIHR5cGVvZiBtaXhpbiA9PT0gJ29iamVjdCcgJiYgbWl4aW4gIT09IG51bGwgJiYg
T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG1peGluKSAhPT0gJ1tvYmplY3QgQXJyYXld
Jyk7Ci0KLSAgICBpZiAobWl4aW4gaW5zdGFuY2VvZiBNaXhpbikgewotICAgICAgbWl4aW5zLnB1
c2gobWl4aW4pOwotICAgIH0gZWxzZSB7Ci0gICAgICB0bXAgPSBNaXhpbi5jcmVhdGUoKTsKLSAg
ICAgIHRtcC5wcm9wZXJ0aWVzID0gbWl4aW47Ci0gICAgICBtaXhpbnMucHVzaCh0bXApOwotICAg
IH0KLSAgfQotCi0gIHJldHVybiB0aGlzOwotfTsKLQotLyoqCi0gIEBtZXRob2QgYXBwbHkKLSAg
QHBhcmFtIG9iagotICBAcmV0dXJuIGFwcGxpZWQgb2JqZWN0Ci0qLwotTWl4aW5Qcm90b3R5cGUu
YXBwbHkgPSBmdW5jdGlvbihvYmopIHsKLSAgcmV0dXJuIGFwcGx5TWl4aW4ob2JqLCBbdGhpc10s
IGZhbHNlKTsKLX07Ci0KLU1peGluUHJvdG90eXBlLmFwcGx5UGFydGlhbCA9IGZ1bmN0aW9uKG9i
aikgewotICByZXR1cm4gYXBwbHlNaXhpbihvYmosIFt0aGlzXSwgdHJ1ZSk7Ci19OwotCi1mdW5j
dGlvbiBfZGV0ZWN0KGN1ck1peGluLCB0YXJnZXRNaXhpbiwgc2VlbikgewotICB2YXIgZ3VpZCA9
IGd1aWRGb3IoY3VyTWl4aW4pOwotCi0gIGlmIChzZWVuW2d1aWRdKSB7IHJldHVybiBmYWxzZTsg
fQotICBzZWVuW2d1aWRdID0gdHJ1ZTsKLQotICBpZiAoY3VyTWl4aW4gPT09IHRhcmdldE1peGlu
KSB7IHJldHVybiB0cnVlOyB9Ci0gIHZhciBtaXhpbnMgPSBjdXJNaXhpbi5taXhpbnMsIGxvYyA9
IG1peGlucyA/IG1peGlucy5sZW5ndGggOiAwOwotICB3aGlsZSAoLS1sb2MgPj0gMCkgewotICAg
IGlmIChfZGV0ZWN0KG1peGluc1tsb2NdLCB0YXJnZXRNaXhpbiwgc2VlbikpIHsgcmV0dXJuIHRy
dWU7IH0KLSAgfQotICByZXR1cm4gZmFsc2U7Ci19Ci0KLS8qKgotICBAbWV0aG9kIGRldGVjdAot
ICBAcGFyYW0gb2JqCi0gIEByZXR1cm4ge0Jvb2xlYW59Ci0qLwotTWl4aW5Qcm90b3R5cGUuZGV0
ZWN0ID0gZnVuY3Rpb24ob2JqKSB7Ci0gIGlmICghb2JqKSB7IHJldHVybiBmYWxzZTsgfQotICBp
ZiAob2JqIGluc3RhbmNlb2YgTWl4aW4pIHsgcmV0dXJuIF9kZXRlY3Qob2JqLCB0aGlzLCB7fSk7
IH0KLSAgdmFyIG1peGlucyA9IEVtYmVyLm1ldGEob2JqLCBmYWxzZSkubWl4aW5zOwotICBpZiAo
bWl4aW5zKSB7Ci0gICAgcmV0dXJuICEhbWl4aW5zW2d1aWRGb3IodGhpcyldOwotICB9Ci0gIHJl
dHVybiBmYWxzZTsKLX07Ci0KLU1peGluUHJvdG90eXBlLndpdGhvdXQgPSBmdW5jdGlvbigpIHsK
LSAgdmFyIHJldCA9IG5ldyBNaXhpbih0aGlzKTsKLSAgcmV0Ll93aXRob3V0ID0gYV9zbGljZS5j
YWxsKGFyZ3VtZW50cyk7Ci0gIHJldHVybiByZXQ7Ci19OwotCi1mdW5jdGlvbiBfa2V5cyhyZXQs
IG1peGluLCBzZWVuKSB7Ci0gIGlmIChzZWVuW2d1aWRGb3IobWl4aW4pXSkgeyByZXR1cm47IH0K
LSAgc2VlbltndWlkRm9yKG1peGluKV0gPSB0cnVlOwotCi0gIGlmIChtaXhpbi5wcm9wZXJ0aWVz
KSB7Ci0gICAgdmFyIHByb3BzID0gbWl4aW4ucHJvcGVydGllczsKLSAgICBmb3IgKHZhciBrZXkg
aW4gcHJvcHMpIHsKLSAgICAgIGlmIChwcm9wcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7IHJldFtr
ZXldID0gdHJ1ZTsgfQotICAgIH0KLSAgfSBlbHNlIGlmIChtaXhpbi5taXhpbnMpIHsKLSAgICBh
X2ZvckVhY2guY2FsbChtaXhpbi5taXhpbnMsIGZ1bmN0aW9uKHgpIHsgX2tleXMocmV0LCB4LCBz
ZWVuKTsgfSk7Ci0gIH0KLX0KLQotTWl4aW5Qcm90b3R5cGUua2V5cyA9IGZ1bmN0aW9uKCkgewot
ICB2YXIga2V5cyA9IHt9LCBzZWVuID0ge30sIHJldCA9IFtdOwotICBfa2V5cyhrZXlzLCB0aGlz
LCBzZWVuKTsKLSAgZm9yKHZhciBrZXkgaW4ga2V5cykgewotICAgIGlmIChrZXlzLmhhc093blBy
b3BlcnR5KGtleSkpIHsgcmV0LnB1c2goa2V5KTsgfQotICB9Ci0gIHJldHVybiByZXQ7Ci19Owot
Ci0vLyByZXR1cm5zIHRoZSBtaXhpbnMgY3VycmVudGx5IGFwcGxpZWQgdG8gdGhlIHNwZWNpZmll
ZCBvYmplY3QKLS8vIFRPRE86IE1ha2UgRW1iZXIubWl4aW4KLU1peGluLm1peGlucyA9IGZ1bmN0
aW9uKG9iaikgewotICB2YXIgbWl4aW5zID0gRW1iZXIubWV0YShvYmosIGZhbHNlKS5taXhpbnMs
IHJldCA9IFtdOwotCi0gIGlmICghbWl4aW5zKSB7IHJldHVybiByZXQ7IH0KLQotICBmb3IgKHZh
ciBrZXkgaW4gbWl4aW5zKSB7Ci0gICAgdmFyIG1peGluID0gbWl4aW5zW2tleV07Ci0KLSAgICAv
LyBza2lwIHByaW1pdGl2ZSBtaXhpbnMgc2luY2UgdGhlc2UgYXJlIGFsd2F5cyBhbm9ueW1vdXMK
LSAgICBpZiAoIW1peGluLnByb3BlcnRpZXMpIHsgcmV0LnB1c2gobWl4aW4pOyB9Ci0gIH0KLQot
ICByZXR1cm4gcmV0OwotfTsKLQotUkVRVUlSRUQgPSBuZXcgRW1iZXIuRGVzY3JpcHRvcigpOwot
UkVRVUlSRUQudG9TdHJpbmcgPSBmdW5jdGlvbigpIHsgcmV0dXJuICcoUmVxdWlyZWQgUHJvcGVy
dHkpJzsgfTsKLQotLyoqCi0gIERlbm90ZXMgYSByZXF1aXJlZCBwcm9wZXJ0eSBmb3IgYSBtaXhp
bgotCi0gIEBtZXRob2QgcmVxdWlyZWQKLSAgQGZvciBFbWJlcgotKi8KLUVtYmVyLnJlcXVpcmVk
ID0gZnVuY3Rpb24oKSB7Ci0gIHJldHVybiBSRVFVSVJFRDsKLX07Ci0KLUFsaWFzID0gZnVuY3Rp
b24obWV0aG9kTmFtZSkgewotICB0aGlzLm1ldGhvZE5hbWUgPSBtZXRob2ROYW1lOwotfTsKLUFs
aWFzLnByb3RvdHlwZSA9IG5ldyBFbWJlci5EZXNjcmlwdG9yKCk7Ci0KLS8qKgotICBNYWtlcyBh
IHByb3BlcnR5IG9yIG1ldGhvZCBhdmFpbGFibGUgdmlhIGFuIGFkZGl0aW9uYWwgbmFtZS4KLQot
ICBgYGBqYXZhc2NyaXB0Ci0gIEFwcC5QYWludFNhbXBsZSA9IEVtYmVyLk9iamVjdC5leHRlbmQo
ewotICAgIGNvbG9yOiAncmVkJywKLSAgICBjb2xvdXI6IEVtYmVyLmFsaWFzKCdjb2xvcicpLAot
ICAgIG5hbWU6IGZ1bmN0aW9uKCkgewotICAgICAgcmV0dXJuICJaZWQiOwotICAgIH0sCi0gICAg
bW9uaWtlcjogRW1iZXIuYWxpYXMoIm5hbWUiKQotICB9KTsKLQotICB2YXIgcGFpbnRTYW1wbGUg
PSBBcHAuUGFpbnRTYW1wbGUuY3JlYXRlKCkKLSAgcGFpbnRTYW1wbGUuZ2V0KCdjb2xvdXInKTsg
IC8vICdyZWQnCi0gIHBhaW50U2FtcGxlLm1vbmlrZXIoKTsgICAgICAvLyAnWmVkJwotICBgYGAK
LQotICBAbWV0aG9kIGFsaWFzCi0gIEBmb3IgRW1iZXIKLSAgQHBhcmFtIHtTdHJpbmd9IG1ldGhv
ZE5hbWUgbmFtZSBvZiB0aGUgbWV0aG9kIG9yIHByb3BlcnR5IHRvIGFsaWFzCi0gIEByZXR1cm4g
e0VtYmVyLkRlc2NyaXB0b3J9Ci0gIEBkZXByZWNhdGVkIFVzZSBgRW1iZXIuYWxpYXNNZXRob2Rg
IG9yIGBFbWJlci5jb21wdXRlZC5hbGlhc2AgaW5zdGVhZAotKi8KLUVtYmVyLmFsaWFzID0gZnVu
Y3Rpb24obWV0aG9kTmFtZSkgewotICBFbWJlci5kZXByZWNhdGUoIkVtYmVyLmFsaWFzIGlzIGRl
cHJlY2F0ZWQuIFBsZWFzZSB1c2UgRW1iZXIuYWxpYXNNZXRob2Qgb3IgRW1iZXIuY29tcHV0ZWQu
YWxpYXMgaW5zdGVhZC4iKTsKLSAgcmV0dXJuIG5ldyBBbGlhcyhtZXRob2ROYW1lKTsKLX07Ci0K
LS8qKgotICBNYWtlcyBhIG1ldGhvZCBhdmFpbGFibGUgdmlhIGFuIGFkZGl0aW9uYWwgbmFtZS4K
LQotICBgYGBqYXZhc2NyaXB0Ci0gIEFwcC5QZXJzb24gPSBFbWJlci5PYmplY3QuZXh0ZW5kKHsK
LSAgICBuYW1lOiBmdW5jdGlvbigpIHsKLSAgICAgIHJldHVybiAnVG9taHVkYSBLYXR6ZGFsZSc7
Ci0gICAgfSwKLSAgICBtb25pa2VyOiBFbWJlci5hbGlhc01ldGhvZCgnbmFtZScpCi0gIH0pOwot
Ci0gIHZhciBnb29kR3V5ID0gQXBwLlBlcnNvbi5jcmVhdGUoKQotICBgYGAKLQotICBAbWV0aG9k
IGFsaWFzTWV0aG9kCi0gIEBmb3IgRW1iZXIKLSAgQHBhcmFtIHtTdHJpbmd9IG1ldGhvZE5hbWUg
bmFtZSBvZiB0aGUgbWV0aG9kIHRvIGFsaWFzCi0gIEByZXR1cm4ge0VtYmVyLkRlc2NyaXB0b3J9
Ci0qLwotRW1iZXIuYWxpYXNNZXRob2QgPSBmdW5jdGlvbihtZXRob2ROYW1lKSB7Ci0gIHJldHVy
biBuZXcgQWxpYXMobWV0aG9kTmFtZSk7Ci19OwotCi0vLyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi0vLyBPQlNFUlZFUiBIRUxQRVIK
LS8vCi0KLS8qKgotICBTcGVjaWZ5IGEgbWV0aG9kIHRoYXQgb2JzZXJ2ZXMgcHJvcGVydHkgY2hh
bmdlcy4KLQotICBgYGBqYXZhc2NyaXB0Ci0gIEVtYmVyLk9iamVjdC5leHRlbmQoewotICAgIHZh
bHVlT2JzZXJ2ZXI6IEVtYmVyLm9ic2VydmVyKCd2YWx1ZScsIGZ1bmN0aW9uKCkgewotICAgICAg
Ly8gRXhlY3V0ZXMgd2hlbmV2ZXIgdGhlICJ2YWx1ZSIgcHJvcGVydHkgY2hhbmdlcwotICAgIH0p
Ci0gIH0pOwotICBgYGAKLQotICBJbiB0aGUgZnV0dXJlIHRoaXMgbWV0aG9kIG1heSBiZWNvbWUg
YXN5bmNocm9ub3VzLiBJZiB5b3Ugd2FudCB0byBlbnN1cmUKLSAgc3luY2hyb25vdXMgYmVoYXZp
b3IsIHVzZSBgaW1tZWRpYXRlT2JzZXJ2ZXJgLgotCi0gIEFsc28gYXZhaWxhYmxlIGFzIGBGdW5j
dGlvbi5wcm90b3R5cGUub2JzZXJ2ZXNgIGlmIHByb3RvdHlwZSBleHRlbnNpb25zIGFyZQotICBl
bmFibGVkLgotCi0gIEBtZXRob2Qgb2JzZXJ2ZXIKLSAgQGZvciBFbWJlcgotICBAcGFyYW0ge1N0
cmluZ30gcHJvcGVydHlOYW1lcyoKLSAgQHBhcmFtIHtGdW5jdGlvbn0gZnVuYwotICBAcmV0dXJu
IGZ1bmMKLSovCi1FbWJlci5vYnNlcnZlciA9IGZ1bmN0aW9uKCkgewotICB2YXIgZnVuYyAgPSBh
X3NsaWNlLmNhbGwoYXJndW1lbnRzLCAtMSlbMF07Ci0gIHZhciBwYXRoczsKLQotICAKLSAgICBw
YXRocyA9IGFfc2xpY2UuY2FsbChhcmd1bWVudHMsIDAsIC0xKTsKLQotICAgIGlmICh0eXBlb2Yg
ZnVuYyAhPT0gImZ1bmN0aW9uIikgewotICAgICAgLy8gcmV2ZXJ0IHRvIG9sZCwgc29mdC1kZXBy
ZWNhdGVkIGFyZ3VtZW50IG9yZGVyaW5nCi0KLSAgICAgIGZ1bmMgID0gYXJndW1lbnRzWzBdOwot
ICAgICAgcGF0aHMgPSBhX3NsaWNlLmNhbGwoYXJndW1lbnRzLCAxKTsKLSAgICB9Ci0gIAotCi0g
IGlmICh0eXBlb2YgZnVuYyAhPT0gImZ1bmN0aW9uIikgewotICAgIHRocm93IG5ldyBFbWJlci5F
cnJvcigiRW1iZXIub2JzZXJ2ZXIgY2FsbGVkIHdpdGhvdXQgYSBmdW5jdGlvbiIpOwotICB9Ci0K
LSAgZnVuYy5fX2VtYmVyX29ic2VydmVzX18gPSBwYXRoczsKLSAgcmV0dXJuIGZ1bmM7Ci19Owot
Ci0vKioKLSAgU3BlY2lmeSBhIG1ldGhvZCB0aGF0IG9ic2VydmVzIHByb3BlcnR5IGNoYW5nZXMu
Ci0KLSAgYGBgamF2YXNjcmlwdAotICBFbWJlci5PYmplY3QuZXh0ZW5kKHsKLSAgICB2YWx1ZU9i
c2VydmVyOiBFbWJlci5pbW1lZGlhdGVPYnNlcnZlcigndmFsdWUnLCBmdW5jdGlvbigpIHsKLSAg
ICAgIC8vIEV4ZWN1dGVzIHdoZW5ldmVyIHRoZSAidmFsdWUiIHByb3BlcnR5IGNoYW5nZXMKLSAg
ICB9KQotICB9KTsKLSAgYGBgCi0KLSAgSW4gdGhlIGZ1dHVyZSwgYEVtYmVyLm9ic2VydmVyYCBt
YXkgYmVjb21lIGFzeW5jaHJvbm91cy4gSW4gdGhpcyBldmVudCwKLSAgYEVtYmVyLmltbWVkaWF0
ZU9ic2VydmVyYCB3aWxsIG1haW50YWluIHRoZSBzeW5jaHJvbm91cyBiZWhhdmlvci4KLQotICBB
bHNvIGF2YWlsYWJsZSBhcyBgRnVuY3Rpb24ucHJvdG90eXBlLm9ic2VydmVzSW1tZWRpYXRlbHlg
IGlmIHByb3RvdHlwZSBleHRlbnNpb25zIGFyZQotICBlbmFibGVkLgotCi0gIEBtZXRob2QgaW1t
ZWRpYXRlT2JzZXJ2ZXIKLSAgQGZvciBFbWJlcgotICBAcGFyYW0ge1N0cmluZ30gcHJvcGVydHlO
YW1lcyoKLSAgQHBhcmFtIHtGdW5jdGlvbn0gZnVuYwotICBAcmV0dXJuIGZ1bmMKLSovCi1FbWJl
ci5pbW1lZGlhdGVPYnNlcnZlciA9IGZ1bmN0aW9uKCkgewotICBmb3IgKHZhciBpPTAsIGw9YXJn
dW1lbnRzLmxlbmd0aDsgaTxsOyBpKyspIHsKLSAgICB2YXIgYXJnID0gYXJndW1lbnRzW2ldOwot
ICAgIEVtYmVyLmFzc2VydCgiSW1tZWRpYXRlIG9ic2VydmVycyBtdXN0IG9ic2VydmUgaW50ZXJu
YWwgcHJvcGVydGllcyBvbmx5LCBub3QgcHJvcGVydGllcyBvbiBvdGhlciBvYmplY3RzLiIsIHR5
cGVvZiBhcmcgIT09ICJzdHJpbmciIHx8IGFyZy5pbmRleE9mKCcuJykgPT09IC0xKTsKLSAgfQot
Ci0gIHJldHVybiBFbWJlci5vYnNlcnZlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwotfTsKLQot
LyoqCi0gIFdoZW4gb2JzZXJ2ZXJzIGZpcmUsIHRoZXkgYXJlIGNhbGxlZCB3aXRoIHRoZSBhcmd1
bWVudHMgYG9iamAsIGBrZXlOYW1lYC4KLQotICBOb3RlLCBgQGVhY2gucHJvcGVydHlgIG9ic2Vy
dmVyIGlzIGNhbGxlZCBwZXIgZWFjaCBhZGQgb3IgcmVwbGFjZSBvZiBhbiBlbGVtZW50Ci0gIGFu
ZCBpdCdzIG5vdCBjYWxsZWQgd2l0aCBhIHNwZWNpZmljIGVudW1lcmF0aW9uIGl0ZW0uCi0KLSAg
QSBgYmVmb3JlT2JzZXJ2ZXJgIGZpcmVzIGJlZm9yZSBhIHByb3BlcnR5IGNoYW5nZXMuCi0KLSAg
QSBgYmVmb3JlT2JzZXJ2ZXJgIGlzIGFuIGFsdGVybmF0aXZlIGZvcm0gb2YgYC5vYnNlcnZlc0Jl
Zm9yZSgpYC4KLQotICBgYGBqYXZhc2NyaXB0Ci0gIEFwcC5QZXJzb25WaWV3ID0gRW1iZXIuVmll
dy5leHRlbmQoewotCi0gICAgZnJpZW5kczogW3sgbmFtZTogJ1RvbScgfSwgeyBuYW1lOiAnU3Rl
ZmFuJyB9LCB7IG5hbWU6ICdLcmlzJyB9XSwKLQotICAgIHZhbHVlV2lsbENoYW5nZTogRW1iZXIu
YmVmb3JlT2JzZXJ2ZXIoJ2NvbnRlbnQudmFsdWUnLCBmdW5jdGlvbihvYmosIGtleU5hbWUpIHsK
LSAgICAgIHRoaXMuY2hhbmdpbmdGcm9tID0gb2JqLmdldChrZXlOYW1lKTsKLSAgICB9KSwKLQot
ICAgIHZhbHVlRGlkQ2hhbmdlOiBFbWJlci5vYnNlcnZlcignY29udGVudC52YWx1ZScsIGZ1bmN0
aW9uKG9iaiwga2V5TmFtZSkgewotICAgICAgICAvLyBvbmx5IHJ1biBpZiB1cGRhdGluZyBhIHZh
bHVlIGFscmVhZHkgaW4gdGhlIERPTQotICAgICAgICBpZiAodGhpcy5nZXQoJ3N0YXRlJykgPT09
ICdpbkRPTScpIHsKLSAgICAgICAgICB2YXIgY29sb3IgPSBvYmouZ2V0KGtleU5hbWUpID4gdGhp
cy5jaGFuZ2luZ0Zyb20gPyAnZ3JlZW4nIDogJ3JlZCc7Ci0gICAgICAgICAgLy8gbG9naWMKLSAg
ICAgICAgfQotICAgIH0pLAotCi0gICAgZnJpZW5kc0RpZENoYW5nZTogRW1iZXIub2JzZXJ2ZXIo
J2ZyaWVuZHMuQGVhY2gubmFtZScsIGZ1bmN0aW9uKG9iaiwga2V5TmFtZSkgewotICAgICAgLy8g
c29tZSBsb2dpYwotICAgICAgLy8gb2JqLmdldChrZXlOYW1lKSByZXR1cm5zIGZyaWVuZHMgYXJy
YXkKLSAgICB9KQotICB9KTsKLSAgYGBgCi0KLSAgQWxzbyBhdmFpbGFibGUgYXMgYEZ1bmN0aW9u
LnByb3RvdHlwZS5vYnNlcnZlc0JlZm9yZWAgaWYgcHJvdG90eXBlIGV4dGVuc2lvbnMgYXJlCi0g
IGVuYWJsZWQuCi0KLSAgQG1ldGhvZCBiZWZvcmVPYnNlcnZlcgotICBAZm9yIEVtYmVyCi0gIEBw
YXJhbSB7U3RyaW5nfSBwcm9wZXJ0eU5hbWVzKgotICBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jCi0g
IEByZXR1cm4gZnVuYwotKi8KLUVtYmVyLmJlZm9yZU9ic2VydmVyID0gZnVuY3Rpb24oKSB7Ci0g
IHZhciBmdW5jICA9IGFfc2xpY2UuY2FsbChhcmd1bWVudHMsIC0xKVswXTsKLSAgdmFyIHBhdGhz
OwotCi0gIAotICAgIHBhdGhzID0gYV9zbGljZS5jYWxsKGFyZ3VtZW50cywgMCwgLTEpOwotCi0g
ICAgaWYgKHR5cGVvZiBmdW5jICE9PSAiZnVuY3Rpb24iKSB7Ci0gICAgICAvLyByZXZlcnQgdG8g
b2xkLCBzb2Z0LWRlcHJlY2F0ZWQgYXJndW1lbnQgb3JkZXJpbmcKLQotICAgICAgZnVuYyAgPSBh
cmd1bWVudHNbMF07Ci0gICAgICBwYXRocyA9IGFfc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpOwot
ICAgIH0KLSAgCi0KLSAgaWYgKHR5cGVvZiBmdW5jICE9PSAiZnVuY3Rpb24iKSB7Ci0gICAgdGhy
b3cgbmV3IEVtYmVyLkVycm9yKCJFbWJlci5iZWZvcmVPYnNlcnZlciBjYWxsZWQgd2l0aG91dCBh
IGZ1bmN0aW9uIik7Ci0gIH0KLQotICBmdW5jLl9fZW1iZXJfb2JzZXJ2ZXNCZWZvcmVfXyA9IHBh
dGhzOwotICByZXR1cm4gZnVuYzsKLX07Ci0KLX0pKCk7Ci0KLQotCi0oZnVuY3Rpb24oKSB7Ci0v
LyBQcm92aWRlcyBhIHdheSB0byByZWdpc3RlciBsaWJyYXJ5IHZlcnNpb25zIHdpdGggZW1iZXIu
Ci12YXIgZm9yRWFjaCA9IEVtYmVyLkVudW1lcmFibGVVdGlscy5mb3JFYWNoLAotICAgIGluZGV4
T2YgPSBFbWJlci5FbnVtZXJhYmxlVXRpbHMuaW5kZXhPZjsKLQotRW1iZXIubGlicmFyaWVzID0g
ZnVuY3Rpb24oKSB7Ci0gIHZhciBsaWJyYXJpZXMgICAgPSBbXTsKLSAgdmFyIGNvcmVMaWJJbmRl
eCA9IDA7Ci0KLSAgdmFyIGdldExpYnJhcnkgPSBmdW5jdGlvbihuYW1lKSB7Ci0gICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBsaWJyYXJpZXMubGVuZ3RoOyBpKyspIHsKLSAgICAgIGlmIChsaWJyYXJp
ZXNbaV0ubmFtZSA9PT0gbmFtZSkgewotICAgICAgICByZXR1cm4gbGlicmFyaWVzW2ldOwotICAg
ICAgfQotICAgIH0KLSAgfTsKLQotICBsaWJyYXJpZXMucmVnaXN0ZXIgPSBmdW5jdGlvbihuYW1l
LCB2ZXJzaW9uKSB7Ci0gICAgaWYgKCFnZXRMaWJyYXJ5KG5hbWUpKSB7Ci0gICAgICBsaWJyYXJp
ZXMucHVzaCh7bmFtZTogbmFtZSwgdmVyc2lvbjogdmVyc2lvbn0pOwotICAgIH0KLSAgfTsKLQot
ICBsaWJyYXJpZXMucmVnaXN0ZXJDb3JlTGlicmFyeSA9IGZ1bmN0aW9uKG5hbWUsIHZlcnNpb24p
IHsKLSAgICBpZiAoIWdldExpYnJhcnkobmFtZSkpIHsKLSAgICAgIGxpYnJhcmllcy5zcGxpY2Uo
Y29yZUxpYkluZGV4KyssIDAsIHtuYW1lOiBuYW1lLCB2ZXJzaW9uOiB2ZXJzaW9ufSk7Ci0gICAg
fQotICB9OwotCi0gIGxpYnJhcmllcy5kZVJlZ2lzdGVyID0gZnVuY3Rpb24obmFtZSkgewotICAg
IHZhciBsaWIgPSBnZXRMaWJyYXJ5KG5hbWUpOwotICAgIGlmIChsaWIpIGxpYnJhcmllcy5zcGxp
Y2UoaW5kZXhPZihsaWJyYXJpZXMsIGxpYiksIDEpOwotICB9OwotCi0gIGxpYnJhcmllcy5lYWNo
ID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7Ci0gICAgZm9yRWFjaChsaWJyYXJpZXMsIGZ1bmN0aW9u
KGxpYikgewotICAgICAgY2FsbGJhY2sobGliLm5hbWUsIGxpYi52ZXJzaW9uKTsKLSAgICB9KTsK
LSAgfTsKLQotICByZXR1cm4gbGlicmFyaWVzOwotfSgpOwotCi1FbWJlci5saWJyYXJpZXMucmVn
aXN0ZXJDb3JlTGlicmFyeSgnRW1iZXInLCBFbWJlci5WRVJTSU9OKTsKLQotfSkoKTsKLQotCi0K
LShmdW5jdGlvbigpIHsKLS8qKgotRW1iZXIgTWV0YWwKLQotQG1vZHVsZSBlbWJlcgotQHN1Ym1v
ZHVsZSBlbWJlci1tZXRhbAotKi8KLQotfSkoKTsKLQotKGZ1bmN0aW9uKCkgewotLyoqCi0gIEBj
bGFzcyBSU1ZQCi0gIEBtb2R1bGUgUlNWUAotICAqLwotZGVmaW5lKCJyc3ZwL2FsbCIsIAotICBb
Ii4vcHJvbWlzZSIsImV4cG9ydHMiXSwKLSAgZnVuY3Rpb24oX19kZXBlbmRlbmN5MV9fLCBfX2V4
cG9ydHNfXykgewotICAgICJ1c2Ugc3RyaWN0IjsKLSAgICB2YXIgUHJvbWlzZSA9IF9fZGVwZW5k
ZW5jeTFfX1siZGVmYXVsdCJdOwotCi0gICAgLyoqCi0gICAgICBUaGlzIGlzIGEgY29udmVuaWVu
dCBhbGlhcyBmb3IgYFJTVlAuUHJvbWlzZS5hbGxgLgotCi0gICAgICBAbWV0aG9kIGFsbAotICAg
ICAgQGZvciBSU1ZQCi0gICAgICBAcGFyYW0ge0FycmF5fSBhcnJheSBBcnJheSBvZiBwcm9taXNl
cy4KLSAgICAgIEBwYXJhbSB7U3RyaW5nfSBsYWJlbCBBbiBvcHRpb25hbCBsYWJlbC4gVGhpcyBp
cyB1c2VmdWwKLSAgICAgIGZvciB0b29saW5nLgotICAgICAgQHN0YXRpYwotICAgICovCi0gICAg
X19leHBvcnRzX19bImRlZmF1bHQiXSA9IGZ1bmN0aW9uIGFsbChhcnJheSwgbGFiZWwpIHsKLSAg
ICAgIHJldHVybiBQcm9taXNlLmFsbChhcnJheSwgbGFiZWwpOwotICAgIH07Ci0gIH0pOwotZGVm
aW5lKCJyc3ZwL2FsbF9zZXR0bGVkIiwgCi0gIFsiLi9wcm9taXNlIiwiLi91dGlscyIsImV4cG9y
dHMiXSwKLSAgZnVuY3Rpb24oX19kZXBlbmRlbmN5MV9fLCBfX2RlcGVuZGVuY3kyX18sIF9fZXhw
b3J0c19fKSB7Ci0gICAgInVzZSBzdHJpY3QiOwotICAgIHZhciBQcm9taXNlID0gX19kZXBlbmRl
bmN5MV9fWyJkZWZhdWx0Il07Ci0gICAgdmFyIGlzQXJyYXkgPSBfX2RlcGVuZGVuY3kyX18uaXNB
cnJheTsKLSAgICB2YXIgaXNOb25UaGVuYWJsZSA9IF9fZGVwZW5kZW5jeTJfXy5pc05vblRoZW5h
YmxlOwotCi0gICAgLyoqCi0gICAgICBgUlNWUC5hbGxTZXR0bGVkYCBpcyBzaW1pbGFyIHRvIGBS
U1ZQLmFsbGAsIGJ1dCBpbnN0ZWFkIG9mIGltcGxlbWVudGluZwotICAgICAgYSBmYWlsLWZhc3Qg
bWV0aG9kLCBpdCB3YWl0cyB1bnRpbCBhbGwgdGhlIHByb21pc2VzIGhhdmUgcmV0dXJuZWQgYW5k
Ci0gICAgICBzaG93cyB5b3UgYWxsIHRoZSByZXN1bHRzLiBUaGlzIGlzIHVzZWZ1bCBpZiB5b3Ug
d2FudCB0byBoYW5kbGUgbXVsdGlwbGUKLSAgICAgIHByb21pc2VzJyBmYWlsdXJlIHN0YXRlcyB0
b2dldGhlciBhcyBhIHNldC4KLQotICAgICAgUmV0dXJucyBhIHByb21pc2UgdGhhdCBpcyBmdWxm
aWxsZWQgd2hlbiBhbGwgdGhlIGdpdmVuIHByb21pc2VzIGhhdmUgYmVlbgotICAgICAgc2V0dGxl
ZC4gVGhlIHJldHVybiBwcm9taXNlIGlzIGZ1bGZpbGxlZCB3aXRoIGFuIGFycmF5IG9mIHRoZSBz
dGF0ZXMgb2YKLSAgICAgIHRoZSBwcm9taXNlcyBwYXNzZWQgaW50byB0aGUgYHByb21pc2VzYCBh
cnJheSBhcmd1bWVudC4KLQotICAgICAgRWFjaCBzdGF0ZSBvYmplY3Qgd2lsbCBlaXRoZXIgaW5k
aWNhdGUgZnVsZmlsbG1lbnQgb3IgcmVqZWN0aW9uLCBhbmQKLSAgICAgIHByb3ZpZGUgdGhlIGNv
cnJlc3BvbmRpbmcgdmFsdWUgb3IgcmVhc29uLiBUaGUgc3RhdGVzIHdpbGwgdGFrZSBvbmUgb2YK
LSAgICAgIHRoZSBmb2xsb3dpbmcgZm9ybWF0czoKLQotICAgICAgYGBgamF2YXNjcmlwdAotICAg
ICAgeyBzdGF0ZTogJ2Z1bGZpbGxlZCcsIHZhbHVlOiB2YWx1ZSB9Ci0gICAgICAgIG9yCi0gICAg
ICB7IHN0YXRlOiAncmVqZWN0ZWQnLCByZWFzb246IHJlYXNvbiB9Ci0gICAgICBgYGAKLQotICAg
ICAgRXhhbXBsZToKLQotICAgICAgYGBgamF2YXNjcmlwdAotICAgICAgdmFyIHByb21pc2UxID0g
UlNWUC5Qcm9taXNlLnJlc29sdmUoMSk7Ci0gICAgICB2YXIgcHJvbWlzZTIgPSBSU1ZQLlByb21p
c2UucmVqZWN0KG5ldyBFcnJvcignMicpKTsKLSAgICAgIHZhciBwcm9taXNlMyA9IFJTVlAuUHJv
bWlzZS5yZWplY3QobmV3IEVycm9yKCczJykpOwotICAgICAgdmFyIHByb21pc2VzID0gWyBwcm9t
aXNlMSwgcHJvbWlzZTIsIHByb21pc2UzIF07Ci0KLSAgICAgIFJTVlAuYWxsU2V0dGxlZChwcm9t
aXNlcykudGhlbihmdW5jdGlvbihhcnJheSl7Ci0gICAgICAgIC8vIGFycmF5ID09IFsKLSAgICAg
ICAgLy8gICB7IHN0YXRlOiAnZnVsZmlsbGVkJywgdmFsdWU6IDEgfSwKLSAgICAgICAgLy8gICB7
IHN0YXRlOiAncmVqZWN0ZWQnLCByZWFzb246IEVycm9yIH0sCi0gICAgICAgIC8vICAgeyBzdGF0
ZTogJ3JlamVjdGVkJywgcmVhc29uOiBFcnJvciB9Ci0gICAgICAgIC8vIF0KLSAgICAgICAgLy8g
Tm90ZSB0aGF0IGZvciB0aGUgc2Vjb25kIGl0ZW0sIHJlYXNvbi5tZXNzYWdlIHdpbGwgYmUgIjIi
LCBhbmQgZm9yIHRoZQotICAgICAgICAvLyB0aGlyZCBpdGVtLCByZWFzb24ubWVzc2FnZSB3aWxs
IGJlICIzIi4KLSAgICAgIH0sIGZ1bmN0aW9uKGVycm9yKSB7Ci0gICAgICAgIC8vIE5vdCBydW4u
IChUaGlzIGJsb2NrIHdvdWxkIG9ubHkgYmUgY2FsbGVkIGlmIGFsbFNldHRsZWQgaGFkIGZhaWxl
ZCwKLSAgICAgICAgLy8gZm9yIGluc3RhbmNlIGlmIHBhc3NlZCBhbiBpbmNvcnJlY3QgYXJndW1l
bnQgdHlwZS4pCi0gICAgICB9KTsKLSAgICAgIGBgYAotCi0gICAgICBAbWV0aG9kIGFsbFNldHRs
ZWQKLSAgICAgIEBmb3IgUlNWUAotICAgICAgQHBhcmFtIHtBcnJheX0gcHJvbWlzZXMKLSAgICAg
IEBwYXJhbSB7U3RyaW5nfSBsYWJlbCAtIG9wdGlvbmFsIHN0cmluZyB0aGF0IGRlc2NyaWJlcyB0
aGUgcHJvbWlzZS4KLSAgICAgIFVzZWZ1bCBmb3IgdG9vbGluZy4KLSAgICAgIEByZXR1cm4ge1By
b21pc2V9IHByb21pc2UgdGhhdCBpcyBmdWxmaWxsZWQgd2l0aCBhbiBhcnJheSBvZiB0aGUgc2V0
dGxlZAotICAgICAgc3RhdGVzIG9mIHRoZSBjb25zdGl0dWVudCBwcm9taXNlcy4KLSAgICAgIEBz
dGF0aWMKLSAgICAqLwotCi0gICAgX19leHBvcnRzX19bImRlZmF1bHQiXSA9IGZ1bmN0aW9uIGFs
bFNldHRsZWQoZW50cmllcywgbGFiZWwpIHsKLSAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5j
dGlvbihyZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAgaWYgKCFpc0FycmF5KGVudHJpZXMpKSB7
Ci0gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignWW91IG11c3QgcGFzcyBhbiBhcnJheSB0
byBhbGxTZXR0bGVkLicpOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIHJlbWFpbmluZyA9IGVu
dHJpZXMubGVuZ3RoOwotICAgICAgICB2YXIgZW50cnk7Ci0KLSAgICAgICAgaWYgKHJlbWFpbmlu
ZyA9PT0gMCkgewotICAgICAgICAgIHJlc29sdmUoW10pOwotICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQotCi0gICAgICAgIHZhciByZXN1bHRzID0gbmV3IEFycmF5KHJlbWFpbmluZyk7Ci0K
LSAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkUmVzb2x2ZXIoaW5kZXgpIHsKLSAgICAgICAgICBy
ZXR1cm4gZnVuY3Rpb24odmFsdWUpIHsKLSAgICAgICAgICAgIHJlc29sdmVBbGwoaW5kZXgsIGZ1
bGZpbGxlZCh2YWx1ZSkpOwotICAgICAgICAgIH07Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5j
dGlvbiByZWplY3RlZFJlc29sdmVyKGluZGV4KSB7Ci0gICAgICAgICAgcmV0dXJuIGZ1bmN0aW9u
KHJlYXNvbikgewotICAgICAgICAgICAgcmVzb2x2ZUFsbChpbmRleCwgcmVqZWN0ZWQocmVhc29u
KSk7Ci0gICAgICAgICAgfTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIHJlc29sdmVB
bGwoaW5kZXgsIHZhbHVlKSB7Ci0gICAgICAgICAgcmVzdWx0c1tpbmRleF0gPSB2YWx1ZTsKLSAg
ICAgICAgICBpZiAoLS1yZW1haW5pbmcgPT09IDApIHsKLSAgICAgICAgICAgIHJlc29sdmUocmVz
dWx0cyk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgZm9yICh2YXIgaW5kZXgg
PSAwOyBpbmRleCA8IGVudHJpZXMubGVuZ3RoOyBpbmRleCsrKSB7Ci0gICAgICAgICAgZW50cnkg
PSBlbnRyaWVzW2luZGV4XTsKLQotICAgICAgICAgIGlmIChpc05vblRoZW5hYmxlKGVudHJ5KSkg
ewotICAgICAgICAgICAgcmVzb2x2ZUFsbChpbmRleCwgZnVsZmlsbGVkKGVudHJ5KSk7Ci0gICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFByb21pc2UuY2FzdChlbnRyeSkudGhlbihmdWxm
aWxsZWRSZXNvbHZlcihpbmRleCksIHJlamVjdGVkUmVzb2x2ZXIoaW5kZXgpKTsKLSAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICAgIH0sIGxhYmVsKTsKLSAgICB9OwotCi0gICAgZnVuY3Rpb24g
ZnVsZmlsbGVkKHZhbHVlKSB7Ci0gICAgICByZXR1cm4geyBzdGF0ZTogJ2Z1bGZpbGxlZCcsIHZh
bHVlOiB2YWx1ZSB9OwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHJlamVjdGVkKHJlYXNvbikgewot
ICAgICAgcmV0dXJuIHsgc3RhdGU6ICdyZWplY3RlZCcsIHJlYXNvbjogcmVhc29uIH07Ci0gICAg
fQotICB9KTsKLWRlZmluZSgicnN2cC9jb25maWciLCAKLSAgWyIuL2V2ZW50cyIsImV4cG9ydHMi
XSwKLSAgZnVuY3Rpb24oX19kZXBlbmRlbmN5MV9fLCBfX2V4cG9ydHNfXykgewotICAgICJ1c2Ug
c3RyaWN0IjsKLSAgICB2YXIgRXZlbnRUYXJnZXQgPSBfX2RlcGVuZGVuY3kxX19bImRlZmF1bHQi
XTsKLQotICAgIHZhciBjb25maWcgPSB7Ci0gICAgICBpbnN0cnVtZW50OiBmYWxzZQotICAgIH07
Ci0KLSAgICBFdmVudFRhcmdldC5taXhpbihjb25maWcpOwotCi0gICAgZnVuY3Rpb24gY29uZmln
dXJlKG5hbWUsIHZhbHVlKSB7Ci0gICAgICBpZiAobmFtZSA9PT0gJ29uZXJyb3InKSB7Ci0gICAg
ICAgIC8vIGhhbmRsZSBmb3IgbGVnYWN5IHVzZXJzIHRoYXQgZXhwZWN0IHRoZSBhY3R1YWwKLSAg
ICAgICAgLy8gZXJyb3IgdG8gYmUgcGFzc2VkIHRvIHRoZWlyIGZ1bmN0aW9uIGFkZGVkIHZpYQot
ICAgICAgICAvLyBgUlNWUC5jb25maWd1cmUoJ29uZXJyb3InLCBzb21lRnVuY3Rpb25IZXJlKTtg
Ci0gICAgICAgIGNvbmZpZy5vbignZXJyb3InLCB2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICAgIH0KLQotICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIHsKLSAgICAgICAgY29u
ZmlnW25hbWVdID0gdmFsdWU7Ci0gICAgICB9IGVsc2UgewotICAgICAgICByZXR1cm4gY29uZmln
W25hbWVdOwotICAgICAgfQotICAgIH0KLQotICAgIF9fZXhwb3J0c19fLmNvbmZpZyA9IGNvbmZp
ZzsKLSAgICBfX2V4cG9ydHNfXy5jb25maWd1cmUgPSBjb25maWd1cmU7Ci0gIH0pOwotZGVmaW5l
KCJyc3ZwL2RlZmVyIiwgCi0gIFsiLi9wcm9taXNlIiwiZXhwb3J0cyJdLAotICBmdW5jdGlvbihf
X2RlcGVuZGVuY3kxX18sIF9fZXhwb3J0c19fKSB7Ci0gICAgInVzZSBzdHJpY3QiOwotICAgIHZh
ciBQcm9taXNlID0gX19kZXBlbmRlbmN5MV9fWyJkZWZhdWx0Il07Ci0KLSAgICAvKioKLSAgICAg
IGBSU1ZQLmRlZmVyYCByZXR1cm5zIGFuIG9iamVjdCBzaW1pbGFyIHRvIGpRdWVyeSdzIGAkLkRl
ZmVycmVkYC4KLSAgICAgIGBSU1ZQLmRlZmVyYCBzaG91bGQgYmUgdXNlZCB3aGVuIHBvcnRpbmcg
b3ZlciBjb2RlIHJlbGlhbnQgb24gYCQuRGVmZXJyZWRgJ3MKLSAgICAgIGludGVyZmFjZS4gTmV3
IGNvZGUgc2hvdWxkIHVzZSB0aGUgYFJTVlAuUHJvbWlzZWAgY29uc3RydWN0b3IgaW5zdGVhZC4K
LQotICAgICAgVGhlIG9iamVjdCByZXR1cm5lZCBmcm9tIGBSU1ZQLmRlZmVyYCBpcyBhIHBsYWlu
IG9iamVjdCB3aXRoIHRocmVlIHByb3BlcnRpZXM6Ci0KLSAgICAgICogcHJvbWlzZSAtIGFuIGBS
U1ZQLlByb21pc2VgLgotICAgICAgKiByZWplY3QgLSBhIGZ1bmN0aW9uIHRoYXQgY2F1c2VzIHRo
ZSBgcHJvbWlzZWAgcHJvcGVydHkgb24gdGhpcyBvYmplY3QgdG8KLSAgICAgICAgYmVjb21lIHJl
amVjdGVkCi0gICAgICAqIHJlc29sdmUgLSBhIGZ1bmN0aW9uIHRoYXQgY2F1c2VzIHRoZSBgcHJv
bWlzZWAgcHJvcGVydHkgb24gdGhpcyBvYmplY3QgdG8KLSAgICAgICAgYmVjb21lIGZ1bGZpbGxl
ZC4KLQotICAgICAgRXhhbXBsZToKLQotICAgICAgIGBgYGphdmFzY3JpcHQKLSAgICAgICB2YXIg
ZGVmZXJyZWQgPSBSU1ZQLmRlZmVyKCk7Ci0KLSAgICAgICBkZWZlcnJlZC5yZXNvbHZlKCJTdWNj
ZXNzISIpOwotCi0gICAgICAgZGVmZXJlZC5wcm9taXNlLnRoZW4oZnVuY3Rpb24odmFsdWUpewot
ICAgICAgICAgLy8gdmFsdWUgaGVyZSBpcyAiU3VjY2VzcyEiCi0gICAgICAgfSk7Ci0gICAgICAg
YGBgCi0KLSAgICAgIEBtZXRob2QgZGVmZXIKLSAgICAgIEBmb3IgUlNWUAotICAgICAgQHBhcmFt
IHtTdHJpbmd9IGxhYmVsIG9wdGlvbmFsIHN0cmluZyBmb3IgbGFiZWxpbmcgdGhlIHByb21pc2Uu
Ci0gICAgICBVc2VmdWwgZm9yIHRvb2xpbmcuCi0gICAgICBAcmV0dXJuIHtPYmplY3R9Ci0gICAg
ICovCi0KLSAgICBfX2V4cG9ydHNfX1siZGVmYXVsdCJdID0gZnVuY3Rpb24gZGVmZXIobGFiZWwp
IHsKLSAgICAgIHZhciBkZWZlcnJlZCA9IHsgfTsKLQotICAgICAgZGVmZXJyZWQucHJvbWlzZSA9
IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgewotICAgICAgICBkZWZlcnJl
ZC5yZXNvbHZlID0gcmVzb2x2ZTsKLSAgICAgICAgZGVmZXJyZWQucmVqZWN0ID0gcmVqZWN0Owot
ICAgICAgfSwgbGFiZWwpOwotCi0gICAgICByZXR1cm4gZGVmZXJyZWQ7Ci0gICAgfTsKLSAgfSk7
Ci1kZWZpbmUoInJzdnAvZXZlbnRzIiwgCi0gIFsiZXhwb3J0cyJdLAotICBmdW5jdGlvbihfX2V4
cG9ydHNfXykgewotICAgICJ1c2Ugc3RyaWN0IjsKLSAgICB2YXIgaW5kZXhPZiA9IGZ1bmN0aW9u
KGNhbGxiYWNrcywgY2FsbGJhY2spIHsKLSAgICAgIGZvciAodmFyIGk9MCwgbD1jYWxsYmFja3Mu
bGVuZ3RoOyBpPGw7IGkrKykgewotICAgICAgICBpZiAoY2FsbGJhY2tzW2ldID09PSBjYWxsYmFj
aykgeyByZXR1cm4gaTsgfQotICAgICAgfQotCi0gICAgICByZXR1cm4gLTE7Ci0gICAgfTsKLQot
ICAgIHZhciBjYWxsYmFja3NGb3IgPSBmdW5jdGlvbihvYmplY3QpIHsKLSAgICAgIHZhciBjYWxs
YmFja3MgPSBvYmplY3QuX3Byb21pc2VDYWxsYmFja3M7Ci0KLSAgICAgIGlmICghY2FsbGJhY2tz
KSB7Ci0gICAgICAgIGNhbGxiYWNrcyA9IG9iamVjdC5fcHJvbWlzZUNhbGxiYWNrcyA9IHt9Owot
ICAgICAgfQotCi0gICAgICByZXR1cm4gY2FsbGJhY2tzOwotICAgIH07Ci0KLSAgICAvKioKLSAg
ICAgIEBjbGFzcyBSU1ZQLkV2ZW50VGFyZ2V0Ci0gICAgKi8KLSAgICBfX2V4cG9ydHNfX1siZGVm
YXVsdCJdID0gewotCi0gICAgICAvKioKLSAgICAgICAgYFJTVlAuRXZlbnRUYXJnZXQubWl4aW5g
IGV4dGVuZHMgYW4gb2JqZWN0IHdpdGggRXZlbnRUYXJnZXQgbWV0aG9kcy4gRm9yCi0gICAgICAg
IEV4YW1wbGU6Ci0KLSAgICAgICAgYGBgamF2YXNjcmlwdAotICAgICAgICB2YXIgb2JqZWN0ID0g
e307Ci0KLSAgICAgICAgUlNWUC5FdmVudFRhcmdldC5taXhpbihvYmplY3QpOwotCi0gICAgICAg
IG9iamVjdC5vbigiZmluaXNoZWQiLCBmdW5jdGlvbihldmVudCkgewotICAgICAgICAgIC8vIGhh
bmRsZSBldmVudAotICAgICAgICB9KTsKLQotICAgICAgICBvYmplY3QudHJpZ2dlcigiZmluaXNo
ZWQiLCB7IGRldGFpbDogdmFsdWUgfSk7Ci0gICAgICAgIGBgYAotCi0gICAgICAgIGBFdmVudFRh
cmdldC5taXhpbmAgYWxzbyB3b3JrcyB3aXRoIHByb3RvdHlwZXM6Ci0KLSAgICAgICAgYGBgamF2
YXNjcmlwdAotICAgICAgICB2YXIgUGVyc29uID0gZnVuY3Rpb24oKSB7fTsKLSAgICAgICAgUlNW
UC5FdmVudFRhcmdldC5taXhpbihQZXJzb24ucHJvdG90eXBlKTsKLQotICAgICAgICB2YXIgeWVo
dWRhID0gbmV3IFBlcnNvbigpOwotICAgICAgICB2YXIgdG9tID0gbmV3IFBlcnNvbigpOwotCi0g
ICAgICAgIHllaHVkYS5vbigicG9rZSIsIGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgICAgY29u
c29sZS5sb2coIlllaHVkYSBzYXlzIE9XIik7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIHRvbS5v
bigicG9rZSIsIGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgICAgY29uc29sZS5sb2coIlRvbSBz
YXlzIE9XIik7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIHllaHVkYS50cmlnZ2VyKCJwb2tlIik7
Ci0gICAgICAgIHRvbS50cmlnZ2VyKCJwb2tlIik7Ci0gICAgICAgIGBgYAotCi0gICAgICAgIEBt
ZXRob2QgbWl4aW4KLSAgICAgICAgQHBhcmFtIHtPYmplY3R9IG9iamVjdCBvYmplY3QgdG8gZXh0
ZW5kIHdpdGggRXZlbnRUYXJnZXQgbWV0aG9kcwotICAgICAgICBAcHJpdmF0ZQotICAgICAgKi8K
LSAgICAgIG1peGluOiBmdW5jdGlvbihvYmplY3QpIHsKLSAgICAgICAgb2JqZWN0Lm9uID0gdGhp
cy5vbjsKLSAgICAgICAgb2JqZWN0Lm9mZiA9IHRoaXMub2ZmOwotICAgICAgICBvYmplY3QudHJp
Z2dlciA9IHRoaXMudHJpZ2dlcjsKLSAgICAgICAgb2JqZWN0Ll9wcm9taXNlQ2FsbGJhY2tzID0g
dW5kZWZpbmVkOwotICAgICAgICByZXR1cm4gb2JqZWN0OwotICAgICAgfSwKLQotICAgICAgLyoq
Ci0gICAgICAgIFJlZ2lzdGVycyBhIGNhbGxiYWNrIHRvIGJlIGV4ZWN1dGVkIHdoZW4gYGV2ZW50
TmFtZWAgaXMgdHJpZ2dlcmVkCi0KLSAgICAgICAgYGBgamF2YXNjcmlwdAotICAgICAgICBvYmpl
Y3Qub24oJ2V2ZW50JywgZnVuY3Rpb24oZXZlbnRJbmZvKXsKLSAgICAgICAgICAvLyBoYW5kbGUg
dGhlIGV2ZW50Ci0gICAgICAgIH0pOwotCi0gICAgICAgIG9iamVjdC50cmlnZ2VyKCdldmVudCcp
OwotICAgICAgICBgYGAKLQotICAgICAgICBAbWV0aG9kIG9uCi0gICAgICAgIEBwYXJhbSB7U3Ry
aW5nfSBldmVudE5hbWUgbmFtZSBvZiB0aGUgZXZlbnQgdG8gbGlzdGVuIGZvcgotICAgICAgICBA
cGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFjayBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbiB0aGUg
ZXZlbnQgaXMgdHJpZ2dlcmVkLgotICAgICAgICBAcHJpdmF0ZQotICAgICAgKi8KLSAgICAgIG9u
OiBmdW5jdGlvbihldmVudE5hbWUsIGNhbGxiYWNrKSB7Ci0gICAgICAgIHZhciBhbGxDYWxsYmFj
a3MgPSBjYWxsYmFja3NGb3IodGhpcyksIGNhbGxiYWNrczsKLQotICAgICAgICBjYWxsYmFja3Mg
PSBhbGxDYWxsYmFja3NbZXZlbnROYW1lXTsKLQotICAgICAgICBpZiAoIWNhbGxiYWNrcykgewot
ICAgICAgICAgIGNhbGxiYWNrcyA9IGFsbENhbGxiYWNrc1tldmVudE5hbWVdID0gW107Ci0gICAg
ICAgIH0KLQotICAgICAgICBpZiAoaW5kZXhPZihjYWxsYmFja3MsIGNhbGxiYWNrKSA9PT0gLTEp
IHsKLSAgICAgICAgICBjYWxsYmFja3MucHVzaChjYWxsYmFjayk7Ci0gICAgICAgIH0KLSAgICAg
IH0sCi0KLSAgICAgIC8qKgotICAgICAgICBZb3UgY2FuIHVzZSBgb2ZmYCB0byBzdG9wIGZpcmlu
ZyBhIHBhcnRpY3VsYXIgY2FsbGJhY2sgZm9yIGFuIGV2ZW50OgotCi0gICAgICAgIGBgYGphdmFz
Y3JpcHQKLSAgICAgICAgZnVuY3Rpb24gZG9TdHVmZigpIHsgLy8gZG8gc3R1ZmYhIH0KLSAgICAg
ICAgb2JqZWN0Lm9uKCdzdHVmZicsIGRvU3R1ZmYpOwotCi0gICAgICAgIG9iamVjdC50cmlnZ2Vy
KCdzdHVmZicpOyAvLyBkb1N0dWZmIHdpbGwgYmUgY2FsbGVkCi0KLSAgICAgICAgLy8gVW5yZWdp
c3RlciBPTkxZIHRoZSBkb1N0dWZmIGNhbGxiYWNrCi0gICAgICAgIG9iamVjdC5vZmYoJ3N0dWZm
JywgZG9TdHVmZik7Ci0gICAgICAgIG9iamVjdC50cmlnZ2VyKCdzdHVmZicpOyAvLyBkb1N0dWZm
IHdpbGwgTk9UIGJlIGNhbGxlZAotICAgICAgICBgYGAKLQotICAgICAgICBJZiB5b3UgZG9uJ3Qg
cGFzcyBhIGBjYWxsYmFja2AgYXJndW1lbnQgdG8gYG9mZmAsIEFMTCBjYWxsYmFja3MgZm9yIHRo
ZQotICAgICAgICBldmVudCB3aWxsIG5vdCBiZSBleGVjdXRlZCB3aGVuIHRoZSBldmVudCBmaXJl
cy4gRm9yIGV4YW1wbGU6Ci0KLSAgICAgICAgYGBgamF2YXNjcmlwdAotICAgICAgICB2YXIgY2Fs
bGJhY2sxID0gZnVuY3Rpb24oKXt9OwotICAgICAgICB2YXIgY2FsbGJhY2syID0gZnVuY3Rpb24o
KXt9OwotCi0gICAgICAgIG9iamVjdC5vbignc3R1ZmYnLCBjYWxsYmFjazEpOwotICAgICAgICBv
YmplY3Qub24oJ3N0dWZmJywgY2FsbGJhY2syKTsKLQotICAgICAgICBvYmplY3QudHJpZ2dlcign
c3R1ZmYnKTsgLy8gY2FsbGJhY2sxIGFuZCBjYWxsYmFjazIgd2lsbCBiZSBleGVjdXRlZC4KLQot
ICAgICAgICBvYmplY3Qub2ZmKCdzdHVmZicpOwotICAgICAgICBvYmplY3QudHJpZ2dlcignc3R1
ZmYnKTsgLy8gY2FsbGJhY2sxIGFuZCBjYWxsYmFjazIgd2lsbCBub3QgYmUgZXhlY3V0ZWQhCi0g
ICAgICAgIGBgYAotCi0gICAgICAgIEBtZXRob2Qgb2ZmCi0gICAgICAgIEBwYXJhbSB7U3RyaW5n
fSBldmVudE5hbWUgZXZlbnQgdG8gc3RvcCBsaXN0ZW5pbmcgdG8KLSAgICAgICAgQHBhcmFtIHtG
dW5jdGlvbn0gY2FsbGJhY2sgb3B0aW9uYWwgYXJndW1lbnQuIElmIGdpdmVuLCBvbmx5IHRoZSBm
dW5jdGlvbgotICAgICAgICBnaXZlbiB3aWxsIGJlIHJlbW92ZWQgZnJvbSB0aGUgZXZlbnQncyBj
YWxsYmFjayBxdWV1ZS4gSWYgbm8gYGNhbGxiYWNrYAotICAgICAgICBhcmd1bWVudCBpcyBnaXZl
biwgYWxsIGNhbGxiYWNrcyB3aWxsIGJlIHJlbW92ZWQgZnJvbSB0aGUgZXZlbnQncyBjYWxsYmFj
awotICAgICAgICBxdWV1ZS4KLSAgICAgICAgQHByaXZhdGUKLQotICAgICAgKi8KLSAgICAgIG9m
ZjogZnVuY3Rpb24oZXZlbnROYW1lLCBjYWxsYmFjaykgewotICAgICAgICB2YXIgYWxsQ2FsbGJh
Y2tzID0gY2FsbGJhY2tzRm9yKHRoaXMpLCBjYWxsYmFja3MsIGluZGV4OwotCi0gICAgICAgIGlm
ICghY2FsbGJhY2spIHsKLSAgICAgICAgICBhbGxDYWxsYmFja3NbZXZlbnROYW1lXSA9IFtdOwot
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGNhbGxiYWNrcyA9IGFsbENh
bGxiYWNrc1tldmVudE5hbWVdOwotCi0gICAgICAgIGluZGV4ID0gaW5kZXhPZihjYWxsYmFja3Ms
IGNhbGxiYWNrKTsKLQotICAgICAgICBpZiAoaW5kZXggIT09IC0xKSB7IGNhbGxiYWNrcy5zcGxp
Y2UoaW5kZXgsIDEpOyB9Ci0gICAgICB9LAotCi0gICAgICAvKioKLSAgICAgICAgVXNlIGB0cmln
Z2VyYCB0byBmaXJlIGN1c3RvbSBldmVudHMuIEZvciBleGFtcGxlOgotCi0gICAgICAgIGBgYGph
dmFzY3JpcHQKLSAgICAgICAgb2JqZWN0Lm9uKCdmb28nLCBmdW5jdGlvbigpewotICAgICAgICAg
IGNvbnNvbGUubG9nKCdmb28gZXZlbnQgaGFwcGVuZWQhJyk7Ci0gICAgICAgIH0pOwotICAgICAg
ICBvYmplY3QudHJpZ2dlcignZm9vJyk7Ci0gICAgICAgIC8vICdmb28gZXZlbnQgaGFwcGVuZWQh
JyBsb2dnZWQgdG8gdGhlIGNvbnNvbGUKLSAgICAgICAgYGBgCi0KLSAgICAgICAgWW91IGNhbiBh
bHNvIHBhc3MgYSB2YWx1ZSBhcyBhIHNlY29uZCBhcmd1bWVudCB0byBgdHJpZ2dlcmAgdGhhdCB3
aWxsIGJlCi0gICAgICAgIHBhc3NlZCBhcyBhbiBhcmd1bWVudCB0byBhbGwgZXZlbnQgbGlzdGVu
ZXJzIGZvciB0aGUgZXZlbnQ6Ci0KLSAgICAgICAgYGBgamF2YXNjcmlwdAotICAgICAgICBvYmpl
Y3Qub24oJ2ZvbycsIGZ1bmN0aW9uKHZhbHVlKXsKLSAgICAgICAgICBjb25zb2xlLmxvZyh2YWx1
ZS5uYW1lKTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgb2JqZWN0LnRyaWdnZXIoJ2ZvbycsIHsg
bmFtZTogJ2JhcicgfSk7Ci0gICAgICAgIC8vICdiYXInIGxvZ2dlZCB0byB0aGUgY29uc29sZQot
ICAgICAgICBgYGAKLQotICAgICAgICBAbWV0aG9kIHRyaWdnZXIKLSAgICAgICAgQHBhcmFtIHtT
dHJpbmd9IGV2ZW50TmFtZSBuYW1lIG9mIHRoZSBldmVudCB0byBiZSB0cmlnZ2VyZWQKLSAgICAg
ICAgQHBhcmFtIHtBbnl9IG9wdGlvbnMgb3B0aW9uYWwgdmFsdWUgdG8gYmUgcGFzc2VkIHRvIGFu
eSBldmVudCBoYW5kbGVycyBmb3IKLSAgICAgICAgdGhlIGdpdmVuIGBldmVudE5hbWVgCi0gICAg
ICAgIEBwcml2YXRlCi0gICAgICAqLwotICAgICAgdHJpZ2dlcjogZnVuY3Rpb24oZXZlbnROYW1l
LCBvcHRpb25zKSB7Ci0gICAgICAgIHZhciBhbGxDYWxsYmFja3MgPSBjYWxsYmFja3NGb3IodGhp
cyksCi0gICAgICAgICAgICBjYWxsYmFja3MsIGNhbGxiYWNrVHVwbGUsIGNhbGxiYWNrLCBiaW5k
aW5nOwotCi0gICAgICAgIGlmIChjYWxsYmFja3MgPSBhbGxDYWxsYmFja3NbZXZlbnROYW1lXSkg
ewotICAgICAgICAgIC8vIERvbid0IGNhY2hlIHRoZSBjYWxsYmFja3MubGVuZ3RoIHNpbmNlIGl0
IG1heSBncm93Ci0gICAgICAgICAgZm9yICh2YXIgaT0wOyBpPGNhbGxiYWNrcy5sZW5ndGg7IGkr
KykgewotICAgICAgICAgICAgY2FsbGJhY2sgPSBjYWxsYmFja3NbaV07Ci0KLSAgICAgICAgICAg
IGNhbGxiYWNrKG9wdGlvbnMpOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotICAg
IH07Ci0gIH0pOwotZGVmaW5lKCJyc3ZwL2ZpbHRlciIsIAotICBbIi4vYWxsIiwiLi9tYXAiLCIu
L3V0aWxzIiwiZXhwb3J0cyJdLAotICBmdW5jdGlvbihfX2RlcGVuZGVuY3kxX18sIF9fZGVwZW5k
ZW5jeTJfXywgX19kZXBlbmRlbmN5M19fLCBfX2V4cG9ydHNfXykgewotICAgICJ1c2Ugc3RyaWN0
IjsKLSAgICB2YXIgYWxsID0gX19kZXBlbmRlbmN5MV9fWyJkZWZhdWx0Il07Ci0gICAgdmFyIG1h
cCA9IF9fZGVwZW5kZW5jeTJfX1siZGVmYXVsdCJdOwotICAgIHZhciBpc0Z1bmN0aW9uID0gX19k
ZXBlbmRlbmN5M19fLmlzRnVuY3Rpb247Ci0gICAgdmFyIGlzQXJyYXkgPSBfX2RlcGVuZGVuY3kz
X18uaXNBcnJheTsKLQotICAgIC8qKgotICAgICBgUlNWUC5maWx0ZXJgIGlzIHNpbWlsYXIgdG8g
SmF2YVNjcmlwdCdzIG5hdGl2ZSBgZmlsdGVyYCBtZXRob2QsIGV4Y2VwdCB0aGF0IGl0Ci0gICAg
ICB3YWl0cyBmb3IgYWxsIHByb21pc2VzIHRvIGJlY29tZSBmdWxmaWxsZWQgYmVmb3JlIHJ1bm5p
bmcgdGhlIGBmaWx0ZXJGbmAgb24KLSAgICAgIGVhY2ggaXRlbSBpbiBnaXZlbiB0byBgcHJvbWlz
ZXNgLiBgUlNWUC5maWx0ZXJgIHJldHVybnMgYSBwcm9taXNlIHRoYXQgd2lsbAotICAgICAgYmVj
b21lIGZ1bGZpbGxlZCB3aXRoIHRoZSByZXN1bHQgb2YgcnVubmluZyBgZmlsdGVyRm5gIG9uIHRo
ZSB2YWx1ZXMgdGhlCi0gICAgICBwcm9taXNlcyBiZWNvbWUgZnVsZmlsbGVkIHdpdGguCi0KLSAg
ICAgIEZvciBleGFtcGxlOgotCi0gICAgICBgYGBqYXZhc2NyaXB0Ci0KLSAgICAgIHZhciBwcm9t
aXNlMSA9IFJTVlAucmVzb2x2ZSgxKTsKLSAgICAgIHZhciBwcm9taXNlMiA9IFJTVlAucmVzb2x2
ZSgyKTsKLSAgICAgIHZhciBwcm9taXNlMyA9IFJTVlAucmVzb2x2ZSgzKTsKLQotICAgICAgdmFy
IGZpbHRlckZuID0gZnVuY3Rpb24oaXRlbSl7Ci0gICAgICAgIHJldHVybiBpdGVtID4gMTsKLSAg
ICAgIH07Ci0KLSAgICAgIFJTVlAuZmlsdGVyKHByb21pc2VzLCBmaWx0ZXJGbikudGhlbihmdW5j
dGlvbihyZXN1bHQpewotICAgICAgICAvLyByZXN1bHQgaXMgWyAyLCAzIF0KLSAgICAgIH0pOwot
ICAgICAgYGBgCi0KLSAgICAgIElmIGFueSBvZiB0aGUgYHByb21pc2VzYCBnaXZlbiB0byBgUlNW
UC5maWx0ZXJgIGFyZSByZWplY3RlZCwgdGhlIGZpcnN0IHByb21pc2UKLSAgICAgIHRoYXQgaXMg
cmVqZWN0ZWQgd2lsbCBiZSBnaXZlbiBhcyBhbiBhcmd1bWVudCB0byB0aGUgcmV0dXJuZWQgcHJv
bWlzZSdzCi0gICAgICByZWplY3Rpb24gaGFuZGxlci4gRm9yIGV4YW1wbGU6Ci0KLSAgICAgIGBg
YGphdmFzY3JpcHQKLSAgICAgIHZhciBwcm9taXNlMSA9IFJTVlAucmVzb2x2ZSgxKTsKLSAgICAg
IHZhciBwcm9taXNlMiA9IFJTVlAucmVqZWN0KG5ldyBFcnJvcigiMiIpKTsKLSAgICAgIHZhciBw
cm9taXNlMyA9IFJTVlAucmVqZWN0KG5ldyBFcnJvcigiMyIpKTsKLSAgICAgIHZhciBwcm9taXNl
cyA9IFsgcHJvbWlzZTEsIHByb21pc2UyLCBwcm9taXNlMyBdOwotCi0gICAgICB2YXIgZmlsdGVy
Rm4gPSBmdW5jdGlvbihpdGVtKXsKLSAgICAgICAgcmV0dXJuIGl0ZW0gPiAxOwotICAgICAgfTsK
LQotICAgICAgUlNWUC5maWx0ZXIocHJvbWlzZXMsIGZpbHRlckZuKS50aGVuKGZ1bmN0aW9uKGFy
cmF5KXsKLSAgICAgICAgLy8gQ29kZSBoZXJlIG5ldmVyIHJ1bnMgYmVjYXVzZSB0aGVyZSBhcmUg
cmVqZWN0ZWQgcHJvbWlzZXMhCi0gICAgICB9LCBmdW5jdGlvbihyZWFzb24pIHsKLSAgICAgICAg
Ly8gcmVhc29uLm1lc3NhZ2UgPT09ICIyIgotICAgICAgfSk7Ci0gICAgICBgYGAKLQotICAgICAg
YFJTVlAuZmlsdGVyYCB3aWxsIGFsc28gd2FpdCBmb3IgYW55IHByb21pc2VzIHJldHVybmVkIGZy
b20gYGZpbHRlckZuYC4KLSAgICAgIEZvciBpbnN0YW5jZSwgeW91IG1heSB3YW50IHRvIGZldGNo
IGEgbGlzdCBvZiB1c2VycyB0aGVuIHJldHVybiBhIHN1YnNldAotICAgICAgb2YgdGhvc2UgdXNl
cnMgYmFzZWQgb24gc29tZSBhc3luY2hyb25vdXMgb3BlcmF0aW9uOgotCi0gICAgICBgYGBqYXZh
c2NyaXB0Ci0KLSAgICAgIHZhciBhbGljZSA9IHsgbmFtZTogJ2FsaWNlJyB9OwotICAgICAgdmFy
IGJvYiAgID0geyBuYW1lOiAnYm9iJyB9OwotICAgICAgdmFyIHVzZXJzID0gWyBhbGljZSwgYm9i
IF07Ci0KLSAgICAgIHZhciBwcm9taXNlcyA9IHVzZXJzLm1hcChmdW5jdGlvbih1c2VyKXsKLSAg
ICAgICAgcmV0dXJuIFJTVlAucmVzb2x2ZSh1c2VyKTsKLSAgICAgIH0pOwotCi0gICAgICB2YXIg
ZmlsdGVyRm4gPSBmdW5jdGlvbih1c2VyKXsKLSAgICAgICAgLy8gSGVyZSwgQWxpY2UgaGFzIHBl
cm1pc3Npb25zIHRvIGNyZWF0ZSBhIGJsb2cgcG9zdCwgYnV0IEJvYiBkb2VzIG5vdC4KLSAgICAg
ICAgcmV0dXJuIGdldFByaXZpbGVnZXNGb3JVc2VyKHVzZXIpLnRoZW4oZnVuY3Rpb24ocHJpdnMp
ewotICAgICAgICAgIHJldHVybiBwcml2cy5jYW5fY3JlYXRlX2Jsb2dfcG9zdCA9PT0gdHJ1ZTsK
LSAgICAgICAgfSk7Ci0gICAgICB9OwotICAgICAgUlNWUC5maWx0ZXIocHJvbWlzZXMsIGZpbHRl
ckZuKS50aGVuKGZ1bmN0aW9uKHVzZXJzKXsKLSAgICAgICAgLy8gdHJ1ZSwgYmVjYXVzZSB0aGUg
c2VydmVyIHRvbGQgdXMgb25seSBBbGljZSBjYW4gY3JlYXRlIGEgYmxvZyBwb3N0LgotICAgICAg
ICB1c2Vycy5sZW5ndGggPT09IDE7Ci0gICAgICAgIC8vIGZhbHNlLCBiZWNhdXNlIEFsaWNlIGlz
IHRoZSBvbmx5IHVzZXIgcHJlc2VudCBpbiBgdXNlcnNgCi0gICAgICAgIHVzZXJzWzBdID09PSBi
b2I7Ci0gICAgICB9KTsKLSAgICAgIGBgYAotCi0gICAgICBAbWV0aG9kIGZpbHRlcgotICAgICAg
QGZvciBSU1ZQCi0gICAgICBAcGFyYW0ge0FycmF5fSBwcm9taXNlcwotICAgICAgQHBhcmFtIHtG
dW5jdGlvbn0gZmlsdGVyRm4gLSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgb24gZWFjaCByZXNvbHZl
ZCB2YWx1ZSB0bwotICAgICAgZmlsdGVyIHRoZSBmaW5hbCByZXN1bHRzLgotICAgICAgQHBhcmFt
IHtTdHJpbmd9IGxhYmVsIG9wdGlvbmFsIHN0cmluZyBkZXNjcmliaW5nIHRoZSBwcm9taXNlLiBV
c2VmdWwgZm9yCi0gICAgICB0b29saW5nLgotICAgICAgQHJldHVybiB7UHJvbWlzZX0KLSAgICAq
LwotICAgIGZ1bmN0aW9uIGZpbHRlcihwcm9taXNlcywgZmlsdGVyRm4sIGxhYmVsKSB7Ci0gICAg
ICByZXR1cm4gYWxsKHByb21pc2VzLCBsYWJlbCkudGhlbihmdW5jdGlvbih2YWx1ZXMpewotICAg
ICAgICBpZiAoIWlzQXJyYXkocHJvbWlzZXMpKSB7Ci0gICAgICAgICAgdGhyb3cgbmV3IFR5cGVF
cnJvcignWW91IG11c3QgcGFzcyBhbiBhcnJheSB0byBmaWx0ZXIuJyk7Ci0gICAgICAgIH0KLQot
ICAgICAgICBpZiAoIWlzRnVuY3Rpb24oZmlsdGVyRm4pKXsKLSAgICAgICAgICB0aHJvdyBuZXcg
VHlwZUVycm9yKCJZb3UgbXVzdCBwYXNzIGEgZnVuY3Rpb24gdG8gZmlsdGVyJ3Mgc2Vjb25kIGFy
Z3VtZW50LiIpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIG1hcChwcm9taXNlcywgZmls
dGVyRm4sIGxhYmVsKS50aGVuKGZ1bmN0aW9uKGZpbHRlclJlc3VsdHMpewotICAgICAgICAgICB2
YXIgaSwKLSAgICAgICAgICAgICAgIHZhbHVlc0xlbiA9IHZhbHVlcy5sZW5ndGgsCi0gICAgICAg
ICAgICAgICBmaWx0ZXJlZCA9IFtdOwotCi0gICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCB2YWx1
ZXNMZW47IGkrKyl7Ci0gICAgICAgICAgICAgaWYoZmlsdGVyUmVzdWx0c1tpXSkgZmlsdGVyZWQu
cHVzaCh2YWx1ZXNbaV0pOwotICAgICAgICAgICB9Ci0gICAgICAgICAgIHJldHVybiBmaWx0ZXJl
ZDsKLSAgICAgICAgfSk7Ci0gICAgICB9KTsKLSAgICB9Ci0KLSAgICBfX2V4cG9ydHNfX1siZGVm
YXVsdCJdID0gZmlsdGVyOwotICB9KTsKLWRlZmluZSgicnN2cC9oYXNoIiwgCi0gIFsiLi9wcm9t
aXNlIiwiLi91dGlscyIsImV4cG9ydHMiXSwKLSAgZnVuY3Rpb24oX19kZXBlbmRlbmN5MV9fLCBf
X2RlcGVuZGVuY3kyX18sIF9fZXhwb3J0c19fKSB7Ci0gICAgInVzZSBzdHJpY3QiOwotICAgIHZh
ciBQcm9taXNlID0gX19kZXBlbmRlbmN5MV9fWyJkZWZhdWx0Il07Ci0gICAgdmFyIGlzTm9uVGhl
bmFibGUgPSBfX2RlcGVuZGVuY3kyX18uaXNOb25UaGVuYWJsZTsKLSAgICB2YXIga2V5c09mID0g
X19kZXBlbmRlbmN5Ml9fLmtleXNPZjsKLQotICAgIC8qKgotICAgICAgYFJTVlAuaGFzaGAgaXMg
c2ltaWxhciB0byBgUlNWUC5hbGxgLCBidXQgdGFrZXMgYW4gb2JqZWN0IGluc3RlYWQgb2YgYW4g
YXJyYXkKLSAgICAgIGZvciBpdHMgYHByb21pc2VzYCBhcmd1bWVudC4KLQotICAgICAgUmV0dXJu
cyBhIHByb21pc2UgdGhhdCBpcyBmdWxmaWxsZWQgd2hlbiBhbGwgdGhlIGdpdmVuIHByb21pc2Vz
IGhhdmUgYmVlbgotICAgICAgZnVsZmlsbGVkLCBvciByZWplY3RlZCBpZiBhbnkgb2YgdGhlbSBi
ZWNvbWUgcmVqZWN0ZWQuIFRoZSByZXR1cm5lZCBwcm9taXNlCi0gICAgICBpcyBmdWxmaWxsZWQg
d2l0aCBhIGhhc2ggdGhhdCBoYXMgdGhlIHNhbWUga2V5IG5hbWVzIGFzIHRoZSBgcHJvbWlzZXNg
IG9iamVjdAotICAgICAgYXJndW1lbnQuIElmIGFueSBvZiB0aGUgdmFsdWVzIGluIHRoZSBvYmpl
Y3QgYXJlIG5vdCBwcm9taXNlcywgdGhleSB3aWxsCi0gICAgICBzaW1wbHkgYmUgY29waWVkIG92
ZXIgdG8gdGhlIGZ1bGZpbGxlZCBvYmplY3QuCi0KLSAgICAgIEV4YW1wbGU6Ci0KLSAgICAgIGBg
YGphdmFzY3JpcHQKLSAgICAgIHZhciBwcm9taXNlcyA9IHsKLSAgICAgICAgbXlQcm9taXNlOiBS
U1ZQLnJlc29sdmUoMSksCi0gICAgICAgIHlvdXJQcm9taXNlOiBSU1ZQLnJlc29sdmUoMiksCi0g
ICAgICAgIHRoZWlyUHJvbWlzZTogUlNWUC5yZXNvbHZlKDMpLAotICAgICAgICBub3RBUHJvbWlz
ZTogNAotICAgICAgfTsKLQotICAgICAgUlNWUC5oYXNoKHByb21pc2VzKS50aGVuKGZ1bmN0aW9u
KGhhc2gpewotICAgICAgICAvLyBoYXNoIGhlcmUgaXMgYW4gb2JqZWN0IHRoYXQgbG9va3MgbGlr
ZToKLSAgICAgICAgLy8gewotICAgICAgICAvLyAgIG15UHJvbWlzZTogMSwKLSAgICAgICAgLy8g
ICB5b3VyUHJvbWlzZTogMiwKLSAgICAgICAgLy8gICB0aGVpclByb21pc2U6IDMsCi0gICAgICAg
IC8vICAgbm90QVByb21pc2U6IDQKLSAgICAgICAgLy8gfQotICAgICAgfSk7Ci0gICAgICBgYGBg
Ci0KLSAgICAgIElmIGFueSBvZiB0aGUgYHByb21pc2VzYCBnaXZlbiB0byBgUlNWUC5oYXNoYCBh
cmUgcmVqZWN0ZWQsIHRoZSBmaXJzdCBwcm9taXNlCi0gICAgICB0aGF0IGlzIHJlamVjdGVkIHdp
bGwgYmUgZ2l2ZW4gYXMgdGhlIHJlYXNvbiB0byB0aGUgcmVqZWN0aW9uIGhhbmRsZXIuCi0KLSAg
ICAgIEV4YW1wbGU6Ci0KLSAgICAgIGBgYGphdmFzY3JpcHQKLSAgICAgIHZhciBwcm9taXNlcyA9
IHsKLSAgICAgICAgbXlQcm9taXNlOiBSU1ZQLnJlc29sdmUoMSksCi0gICAgICAgIHJlamVjdGVk
UHJvbWlzZTogUlNWUC5yZWplY3QobmV3IEVycm9yKCJyZWplY3RlZFByb21pc2UiKSksCi0gICAg
ICAgIGFub3RoZXJSZWplY3RlZFByb21pc2U6IFJTVlAucmVqZWN0KG5ldyBFcnJvcigiYW5vdGhl
clJlamVjdGVkUHJvbWlzZSIpKSwKLSAgICAgIH07Ci0KLSAgICAgIFJTVlAuaGFzaChwcm9taXNl
cykudGhlbihmdW5jdGlvbihoYXNoKXsKLSAgICAgICAgLy8gQ29kZSBoZXJlIG5ldmVyIHJ1bnMg
YmVjYXVzZSB0aGVyZSBhcmUgcmVqZWN0ZWQgcHJvbWlzZXMhCi0gICAgICB9LCBmdW5jdGlvbihy
ZWFzb24pIHsKLSAgICAgICAgLy8gcmVhc29uLm1lc3NhZ2UgPT09ICJyZWplY3RlZFByb21pc2Ui
Ci0gICAgICB9KTsKLSAgICAgIGBgYAotCi0gICAgICBBbiBpbXBvcnRhbnQgbm90ZTogYFJTVlAu
aGFzaGAgaXMgaW50ZW5kZWQgZm9yIHBsYWluIEphdmFTY3JpcHQgb2JqZWN0cyB0aGF0Ci0gICAg
ICBhcmUganVzdCBhIHNldCBvZiBrZXlzIGFuZCB2YWx1ZXMuIGBSU1ZQLmhhc2hgIHdpbGwgTk9U
IHByZXNlcnZlIHByb3RvdHlwZQotICAgICAgY2hhaW5zLgotCi0gICAgICBFeGFtcGxlOgotCi0g
ICAgICBgYGBqYXZhc2NyaXB0Ci0gICAgICBmdW5jdGlvbiBNeUNvbnN0cnVjdG9yKCl7Ci0gICAg
ICAgIHRoaXMuZXhhbXBsZSA9IFJTVlAucmVzb2x2ZSgiRXhhbXBsZSIpOwotICAgICAgfQotCi0g
ICAgICBNeUNvbnN0cnVjdG9yLnByb3RvdHlwZSA9IHsKLSAgICAgICAgcHJvdG9Qcm9wZXJ0eTog
UlNWUC5yZXNvbHZlKCJQcm90byBQcm9wZXJ0eSIpCi0gICAgICB9OwotCi0gICAgICB2YXIgbXlP
YmplY3QgPSBuZXcgTXlDb25zdHJ1Y3RvcigpOwotCi0gICAgICBSU1ZQLmhhc2gobXlPYmplY3Qp
LnRoZW4oZnVuY3Rpb24oaGFzaCl7Ci0gICAgICAgIC8vIHByb3RvUHJvcGVydHkgd2lsbCBub3Qg
YmUgcHJlc2VudCwgaW5zdGVhZCB5b3Ugd2lsbCBqdXN0IGhhdmUgYW4KLSAgICAgICAgLy8gb2Jq
ZWN0IHRoYXQgbG9va3MgbGlrZToKLSAgICAgICAgLy8gewotICAgICAgICAvLyAgIGV4YW1wbGU6
ICJFeGFtcGxlIgotICAgICAgICAvLyB9Ci0gICAgICAgIC8vCi0gICAgICAgIC8vIGhhc2guaGFz
T3duUHJvcGVydHkoJ3Byb3RvUHJvcGVydHknKTsgLy8gZmFsc2UKLSAgICAgICAgLy8gJ3VuZGVm
aW5lZCcgPT09IHR5cGVvZiBoYXNoLnByb3RvUHJvcGVydHkKLSAgICAgIH0pOwotICAgICAgYGBg
Ci0KLSAgICAgIEBtZXRob2QgaGFzaAotICAgICAgQGZvciBSU1ZQCi0gICAgICBAcGFyYW0ge09i
amVjdH0gcHJvbWlzZXMKLSAgICAgIEBwYXJhbSB7U3RyaW5nfSBsYWJlbCBvcHRpb25hbCBzdHJp
bmcgdGhhdCBkZXNjcmliZXMgdGhlIHByb21pc2UuCi0gICAgICBVc2VmdWwgZm9yIHRvb2xpbmcu
Ci0gICAgICBAcmV0dXJuIHtQcm9taXNlfSBwcm9taXNlIHRoYXQgaXMgZnVsZmlsbGVkIHdoZW4g
YWxsIHByb3BlcnRpZXMgb2YgYHByb21pc2VzYAotICAgICAgaGF2ZSBiZWVuIGZ1bGZpbGxlZCwg
b3IgcmVqZWN0ZWQgaWYgYW55IG9mIHRoZW0gYmVjb21lIHJlamVjdGVkLgotICAgICAgQHN0YXRp
YwotICAgICovCi0gICAgX19leHBvcnRzX19bImRlZmF1bHQiXSA9IGZ1bmN0aW9uIGhhc2gob2Jq
ZWN0LCBsYWJlbCkgewotICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUs
IHJlamVjdCl7Ci0gICAgICAgIHZhciByZXN1bHRzID0ge307Ci0gICAgICAgIHZhciBrZXlzID0g
a2V5c09mKG9iamVjdCk7Ci0gICAgICAgIHZhciByZW1haW5pbmcgPSBrZXlzLmxlbmd0aDsKLSAg
ICAgICAgdmFyIGVudHJ5LCBwcm9wZXJ0eTsKLQotICAgICAgICBpZiAocmVtYWluaW5nID09PSAw
KSB7Ci0gICAgICAgICAgcmVzb2x2ZShyZXN1bHRzKTsKLSAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLQotICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZFRvKHByb3BlcnR5KSB7Ci0gICAgICAg
ICAgcmV0dXJuIGZ1bmN0aW9uKHZhbHVlKSB7Ci0gICAgICAgICAgICByZXN1bHRzW3Byb3BlcnR5
XSA9IHZhbHVlOwotICAgICAgICAgICAgaWYgKC0tcmVtYWluaW5nID09PSAwKSB7Ci0gICAgICAg
ICAgICAgIHJlc29sdmUocmVzdWx0cyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfTsKLSAg
ICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIG9uUmVqZWN0aW9uKHJlYXNvbikgewotICAgICAg
ICAgIHJlbWFpbmluZyA9IDA7Ci0gICAgICAgICAgcmVqZWN0KHJlYXNvbik7Ci0gICAgICAgIH0K
LQotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHsKLSAgICAg
ICAgICBwcm9wZXJ0eSA9IGtleXNbaV07Ci0gICAgICAgICAgZW50cnkgPSBvYmplY3RbcHJvcGVy
dHldOwotCi0gICAgICAgICAgaWYgKGlzTm9uVGhlbmFibGUoZW50cnkpKSB7Ci0gICAgICAgICAg
ICByZXN1bHRzW3Byb3BlcnR5XSA9IGVudHJ5OwotICAgICAgICAgICAgaWYgKC0tcmVtYWluaW5n
ID09PSAwKSB7Ci0gICAgICAgICAgICAgIHJlc29sdmUocmVzdWx0cyk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFByb21pc2UuY2FzdChlbnRyeSkudGhl
bihmdWxmaWxsZWRUbyhwcm9wZXJ0eSksIG9uUmVqZWN0aW9uKTsKLSAgICAgICAgICB9Ci0gICAg
ICAgIH0KLSAgICAgIH0pOwotICAgIH07Ci0gIH0pOwotZGVmaW5lKCJyc3ZwL2luc3RydW1lbnQi
LCAKLSAgWyIuL2NvbmZpZyIsIi4vdXRpbHMiLCJleHBvcnRzIl0sCi0gIGZ1bmN0aW9uKF9fZGVw
ZW5kZW5jeTFfXywgX19kZXBlbmRlbmN5Ml9fLCBfX2V4cG9ydHNfXykgewotICAgICJ1c2Ugc3Ry
aWN0IjsKLSAgICB2YXIgY29uZmlnID0gX19kZXBlbmRlbmN5MV9fLmNvbmZpZzsKLSAgICB2YXIg
bm93ID0gX19kZXBlbmRlbmN5Ml9fLm5vdzsKLQotICAgIF9fZXhwb3J0c19fWyJkZWZhdWx0Il0g
PSBmdW5jdGlvbiBpbnN0cnVtZW50KGV2ZW50TmFtZSwgcHJvbWlzZSwgY2hpbGQpIHsKLSAgICAg
IC8vIGluc3RydW1lbnRhdGlvbiBzaG91bGQgbm90IGRpc3J1cHQgbm9ybWFsIHVzYWdlLgotICAg
ICAgdHJ5IHsKLSAgICAgICAgY29uZmlnLnRyaWdnZXIoZXZlbnROYW1lLCB7Ci0gICAgICAgICAg
Z3VpZDogcHJvbWlzZS5fZ3VpZEtleSArIHByb21pc2UuX2lkLAotICAgICAgICAgIGV2ZW50TmFt
ZTogZXZlbnROYW1lLAotICAgICAgICAgIGRldGFpbDogcHJvbWlzZS5fZGV0YWlsLAotICAgICAg
ICAgIGNoaWxkR3VpZDogY2hpbGQgJiYgcHJvbWlzZS5fZ3VpZEtleSArIGNoaWxkLl9pZCwKLSAg
ICAgICAgICBsYWJlbDogcHJvbWlzZS5fbGFiZWwsCi0gICAgICAgICAgdGltZVN0YW1wOiBub3co
KSwKLSAgICAgICAgICBzdGFjazogbmV3IEVycm9yKHByb21pc2UuX2xhYmVsKS5zdGFjawotICAg
ICAgICB9KTsKLSAgICAgIH0gY2F0Y2goZXJyb3IpIHsKLSAgICAgICAgc2V0VGltZW91dChmdW5j
dGlvbigpewotICAgICAgICAgIHRocm93IGVycm9yOwotICAgICAgICB9LCAwKTsKLSAgICAgIH0K
LSAgICB9OwotICB9KTsKLWRlZmluZSgicnN2cC9tYXAiLCAKLSAgWyIuL3Byb21pc2UiLCIuL2Fs
bCIsIi4vdXRpbHMiLCJleHBvcnRzIl0sCi0gIGZ1bmN0aW9uKF9fZGVwZW5kZW5jeTFfXywgX19k
ZXBlbmRlbmN5Ml9fLCBfX2RlcGVuZGVuY3kzX18sIF9fZXhwb3J0c19fKSB7Ci0gICAgInVzZSBz
dHJpY3QiOwotICAgIHZhciBQcm9taXNlID0gX19kZXBlbmRlbmN5MV9fWyJkZWZhdWx0Il07Ci0g
ICAgdmFyIGFsbCA9IF9fZGVwZW5kZW5jeTJfX1siZGVmYXVsdCJdOwotICAgIHZhciBpc0FycmF5
ID0gX19kZXBlbmRlbmN5M19fLmlzQXJyYXk7Ci0gICAgdmFyIGlzRnVuY3Rpb24gPSBfX2RlcGVu
ZGVuY3kzX18uaXNGdW5jdGlvbjsKLQotICAgIC8qKgotICAgICBgUlNWUC5tYXBgIGlzIHNpbWls
YXIgdG8gSmF2YVNjcmlwdCdzIG5hdGl2ZSBgbWFwYCBtZXRob2QsIGV4Y2VwdCB0aGF0IGl0Ci0g
ICAgICB3YWl0cyBmb3IgYWxsIHByb21pc2VzIHRvIGJlY29tZSBmdWxmaWxsZWQgYmVmb3JlIHJ1
bm5pbmcgdGhlIGBtYXBGbmAgb24KLSAgICAgIGVhY2ggaXRlbSBpbiBnaXZlbiB0byBgcHJvbWlz
ZXNgLiBgUlNWUC5tYXBgIHJldHVybnMgYSBwcm9taXNlIHRoYXQgd2lsbAotICAgICAgYmVjb21l
IGZ1bGZpbGxlZCB3aXRoIHRoZSByZXN1bHQgb2YgcnVubmluZyBgbWFwRm5gIG9uIHRoZSB2YWx1
ZXMgdGhlIHByb21pc2VzCi0gICAgICBiZWNvbWUgZnVsZmlsbGVkIHdpdGguCi0KLSAgICAgIEZv
ciBleGFtcGxlOgotCi0gICAgICBgYGBqYXZhc2NyaXB0Ci0KLSAgICAgIHZhciBwcm9taXNlMSA9
IFJTVlAucmVzb2x2ZSgxKTsKLSAgICAgIHZhciBwcm9taXNlMiA9IFJTVlAucmVzb2x2ZSgyKTsK
LSAgICAgIHZhciBwcm9taXNlMyA9IFJTVlAucmVzb2x2ZSgzKTsKLSAgICAgIHZhciBwcm9taXNl
cyA9IFsgcHJvbWlzZTEsIHByb21pc2UyLCBwcm9taXNlMyBdOwotCi0gICAgICB2YXIgbWFwRm4g
PSBmdW5jdGlvbihpdGVtKXsKLSAgICAgICAgcmV0dXJuIGl0ZW0gKyAxOwotICAgICAgfTsKLQot
ICAgICAgUlNWUC5tYXAocHJvbWlzZXMsIG1hcEZuKS50aGVuKGZ1bmN0aW9uKHJlc3VsdCl7Ci0g
ICAgICAgIC8vIHJlc3VsdCBpcyBbIDIsIDMsIDQgXQotICAgICAgfSk7Ci0gICAgICBgYGAKLQot
ICAgICAgSWYgYW55IG9mIHRoZSBgcHJvbWlzZXNgIGdpdmVuIHRvIGBSU1ZQLm1hcGAgYXJlIHJl
amVjdGVkLCB0aGUgZmlyc3QgcHJvbWlzZQotICAgICAgdGhhdCBpcyByZWplY3RlZCB3aWxsIGJl
IGdpdmVuIGFzIGFuIGFyZ3VtZW50IHRvIHRoZSByZXR1cm5lZCBwcm9taXNlJ3MKLSAgICAgIHJl
amVjdGlvbiBoYW5kbGVyLiBGb3IgZXhhbXBsZToKLQotICAgICAgYGBgamF2YXNjcmlwdAotICAg
ICAgdmFyIHByb21pc2UxID0gUlNWUC5yZXNvbHZlKDEpOwotICAgICAgdmFyIHByb21pc2UyID0g
UlNWUC5yZWplY3QobmV3IEVycm9yKCIyIikpOwotICAgICAgdmFyIHByb21pc2UzID0gUlNWUC5y
ZWplY3QobmV3IEVycm9yKCIzIikpOwotICAgICAgdmFyIHByb21pc2VzID0gWyBwcm9taXNlMSwg
cHJvbWlzZTIsIHByb21pc2UzIF07Ci0KLSAgICAgIHZhciBtYXBGbiA9IGZ1bmN0aW9uKGl0ZW0p
ewotICAgICAgICByZXR1cm4gaXRlbSArIDE7Ci0gICAgICB9OwotCi0gICAgICBSU1ZQLm1hcChw
cm9taXNlcywgbWFwRm4pLnRoZW4oZnVuY3Rpb24oYXJyYXkpewotICAgICAgICAvLyBDb2RlIGhl
cmUgbmV2ZXIgcnVucyBiZWNhdXNlIHRoZXJlIGFyZSByZWplY3RlZCBwcm9taXNlcyEKLSAgICAg
IH0sIGZ1bmN0aW9uKHJlYXNvbikgewotICAgICAgICAvLyByZWFzb24ubWVzc2FnZSA9PT0gIjIi
Ci0gICAgICB9KTsKLSAgICAgIGBgYAotCi0gICAgICBgUlNWUC5tYXBgIHdpbGwgYWxzbyB3YWl0
IGlmIGEgcHJvbWlzZSBpcyByZXR1cm5lZCBmcm9tIGBtYXBGbmAuIEZvciBleGFtcGxlLAotICAg
ICAgc2F5IHlvdSB3YW50IHRvIGdldCBhbGwgY29tbWVudHMgZnJvbSBhIHNldCBvZiBibG9nIHBv
c3RzLCBidXQgeW91IG5lZWQKLSAgICAgIHRoZSBibG9nIHBvc3RzIGZpcnN0IGJlY3Vhc2UgdGhl
eSBjb250YWluIGEgdXJsIHRvIHRob3NlIGNvbW1lbnRzLgotCi0gICAgICBgYGBqYXZzY3JpcHQK
LQotICAgICAgdmFyIG1hcEZuID0gZnVuY3Rpb24oYmxvZ1Bvc3QpewotICAgICAgICAvLyBnZXRD
b21tZW50cyBkb2VzIHNvbWUgYWpheCBhbmQgcmV0dXJucyBhbiBSU1ZQLlByb21pc2UgdGhhdCBp
cyBmdWxmaWxsZWQKLSAgICAgICAgLy8gd2l0aCBzb21lIGNvbW1lbnRzIGRhdGEKLSAgICAgICAg
cmV0dXJuIGdldENvbW1lbnRzKGJsb2dQb3N0LmNvbW1lbnRzX3VybCk7Ci0gICAgICB9OwotCi0g
ICAgICAvLyBnZXRCbG9nUG9zdHMgZG9lcyBzb21lIGFqYXggYW5kIHJldHVybnMgYW4gUlNWUC5Q
cm9taXNlIHRoYXQgaXMgZnVsZmlsbGVkCi0gICAgICAvLyB3aXRoIHNvbWUgYmxvZyBwb3N0IGRh
dGEKLSAgICAgIFJTVlAubWFwKGdldEJsb2dQb3N0cygpLCBtYXBGbikudGhlbihmdW5jdGlvbihj
b21tZW50cyl7Ci0gICAgICAgIC8vIGNvbW1lbnRzIGlzIHRoZSByZXN1bHQgb2YgYXNraW5nIHRo
ZSBzZXJ2ZXIgZm9yIHRoZSBjb21tZW50cwotICAgICAgICAvLyBvZiBhbGwgYmxvZyBwb3N0cyBy
ZXR1cm5lZCBmcm9tIGdldEJsb2dQb3N0cygpCi0gICAgICB9KTsKLSAgICAgIGBgYAotCi0gICAg
ICBAbWV0aG9kIG1hcAotICAgICAgQGZvciBSU1ZQCi0gICAgICBAcGFyYW0ge0FycmF5fSBwcm9t
aXNlcwotICAgICAgQHBhcmFtIHtGdW5jdGlvbn0gbWFwRm4gZnVuY3Rpb24gdG8gYmUgY2FsbGVk
IG9uIGVhY2ggZnVsZmlsbGVkIHByb21pc2UuCi0gICAgICBAcGFyYW0ge1N0cmluZ30gbGFiZWwg
b3B0aW9uYWwgc3RyaW5nIGZvciBsYWJlbGluZyB0aGUgcHJvbWlzZS4KLSAgICAgIFVzZWZ1bCBm
b3IgdG9vbGluZy4KLSAgICAgIEByZXR1cm4ge1Byb21pc2V9IHByb21pc2UgdGhhdCBpcyBmdWxm
aWxsZWQgd2l0aCB0aGUgcmVzdWx0IG9mIGNhbGxpbmcKLSAgICAgIGBtYXBGbmAgb24gZWFjaCBm
dWxmaWxsZWQgcHJvbWlzZSBvciB2YWx1ZSB3aGVuIHRoZXkgYmVjb21lIGZ1bGZpbGxlZC4KLSAg
ICAgICBUaGUgcHJvbWlzZSB3aWxsIGJlIHJlamVjdGVkIGlmIGFueSBvZiB0aGUgZ2l2ZW4gYHBy
b21pc2VzYCBiZWNvbWUgcmVqZWN0ZWQuCi0gICAgICBAc3RhdGljCi0gICAgKi8KLSAgICBfX2V4
cG9ydHNfX1siZGVmYXVsdCJdID0gZnVuY3Rpb24gbWFwKHByb21pc2VzLCBtYXBGbiwgbGFiZWwp
IHsKLSAgICAgIHJldHVybiBhbGwocHJvbWlzZXMsIGxhYmVsKS50aGVuKGZ1bmN0aW9uKHJlc3Vs
dHMpewotICAgICAgICBpZiAoIWlzQXJyYXkocHJvbWlzZXMpKSB7Ci0gICAgICAgICAgdGhyb3cg
bmV3IFR5cGVFcnJvcignWW91IG11c3QgcGFzcyBhbiBhcnJheSB0byBtYXAuJyk7Ci0gICAgICAg
IH0KLQotICAgICAgICBpZiAoIWlzRnVuY3Rpb24obWFwRm4pKXsKLSAgICAgICAgICB0aHJvdyBu
ZXcgVHlwZUVycm9yKCJZb3UgbXVzdCBwYXNzIGEgZnVuY3Rpb24gdG8gbWFwJ3Mgc2Vjb25kIGFy
Z3VtZW50LiIpOwotICAgICAgICB9Ci0KLQotICAgICAgICB2YXIgcmVzdWx0TGVuID0gcmVzdWx0
cy5sZW5ndGgsCi0gICAgICAgICAgICBtYXBwZWRSZXN1bHRzID0gW10sCi0gICAgICAgICAgICBp
OwotCi0gICAgICAgIGZvciAoaSA9IDA7IGkgPCByZXN1bHRMZW47IGkrKyl7Ci0gICAgICAgICAg
bWFwcGVkUmVzdWx0cy5wdXNoKG1hcEZuKHJlc3VsdHNbaV0pKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIHJldHVybiBhbGwobWFwcGVkUmVzdWx0cywgbGFiZWwpOwotICAgICAgfSk7Ci0gICAgfTsK
LSAgfSk7Ci1kZWZpbmUoInJzdnAvbm9kZSIsIAotICBbIi4vcHJvbWlzZSIsImV4cG9ydHMiXSwK
LSAgZnVuY3Rpb24oX19kZXBlbmRlbmN5MV9fLCBfX2V4cG9ydHNfXykgewotICAgICJ1c2Ugc3Ry
aWN0IjsKLSAgICB2YXIgUHJvbWlzZSA9IF9fZGVwZW5kZW5jeTFfX1siZGVmYXVsdCJdOwotCi0g
ICAgdmFyIHNsaWNlID0gQXJyYXkucHJvdG90eXBlLnNsaWNlOwotCi0gICAgZnVuY3Rpb24gbWFr
ZU5vZGVDYWxsYmFja0ZvcihyZXNvbHZlLCByZWplY3QpIHsKLSAgICAgIHJldHVybiBmdW5jdGlv
biAoZXJyb3IsIHZhbHVlKSB7Ci0gICAgICAgIGlmIChlcnJvcikgewotICAgICAgICAgIHJlamVj
dChlcnJvcik7Ci0gICAgICAgIH0gZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDIpIHsKLSAg
ICAgICAgICByZXNvbHZlKHNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKSk7Ci0gICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgcmVzb2x2ZSh2YWx1ZSk7Ci0gICAgICAgIH0KLSAgICAgIH07Ci0gICAg
fQotCi0gICAgLyoqCi0gICAgICBgUlNWUC5kZW5vZGVpZnlgIHRha2VzIGEgIm5vZGUtc3R5bGUi
IGZ1bmN0aW9uIGFuZCByZXR1cm5zIGEgZnVuY3Rpb24gdGhhdAotICAgICAgd2lsbCByZXR1cm4g
YW4gYFJTVlAuUHJvbWlzZWAuIFlvdSBjYW4gdXNlIGBkZW5vZGVpZnlgIGluIE5vZGUuanMgb3Ig
dGhlCi0gICAgICBicm93c2VyIHdoZW4geW91J2QgcHJlZmVyIHRvIHVzZSBwcm9taXNlcyBvdmVy
IHVzaW5nIGNhbGxiYWNrcy4gRm9yIGV4YW1wbGUsCi0gICAgICBgZGVub2RlaWZ5YCB0cmFuc2Zv
cm1zIHRoZSBmb2xsb3dpbmc6Ci0KLSAgICAgIGBgYGphdmFzY3JpcHQKLSAgICAgIHZhciBmcyA9
IHJlcXVpcmUoJ2ZzJyk7Ci0KLSAgICAgIGZzLnJlYWRGaWxlKCdteWZpbGUudHh0JywgZnVuY3Rp
b24oZXJyLCBkYXRhKXsKLSAgICAgICAgaWYgKGVycikgcmV0dXJuIGhhbmRsZUVycm9yKGVycik7
Ci0gICAgICAgIGhhbmRsZURhdGEoZGF0YSk7Ci0gICAgICB9KTsKLSAgICAgIGBgYAotCi0gICAg
ICBpbnRvOgotCi0gICAgICBgYGBqYXZhc2NyaXB0Ci0gICAgICB2YXIgZnMgPSByZXF1aXJlKCdm
cycpOwotCi0gICAgICB2YXIgcmVhZEZpbGUgPSBSU1ZQLmRlbm9kZWlmeShmcy5yZWFkRmlsZSk7
Ci0KLSAgICAgIHJlYWRGaWxlKCdteWZpbGUudHh0JykudGhlbihoYW5kbGVEYXRhLCBoYW5kbGVF
cnJvcik7Ci0gICAgICBgYGAKLQotICAgICAgVXNpbmcgYGRlbm9kZWlmeWAgbWFrZXMgaXQgZWFz
aWVyIHRvIGNvbXBvc2UgYXN5bmNocm9ub3VzIG9wZXJhdGlvbnMgaW5zdGVhZAotICAgICAgb2Yg
dXNpbmcgY2FsbGJhY2tzLiBGb3IgZXhhbXBsZSwgaW5zdGVhZCBvZjoKLQotICAgICAgYGBgamF2
YXNjcmlwdAotICAgICAgdmFyIGZzID0gcmVxdWlyZSgnZnMnKTsKLSAgICAgIHZhciBsb2cgPSBy
ZXF1aXJlKCdzb21lLWFzeW5jLWxvZ2dlcicpOwotCi0gICAgICBmcy5yZWFkRmlsZSgnbXlmaWxl
LnR4dCcsIGZ1bmN0aW9uKGVyciwgZGF0YSl7Ci0gICAgICAgIGlmIChlcnIpIHJldHVybiBoYW5k
bGVFcnJvcihlcnIpOwotICAgICAgICBmcy53cml0ZUZpbGUoJ215ZmlsZTIudHh0JywgZGF0YSwg
ZnVuY3Rpb24oZXJyKXsKLSAgICAgICAgICBpZiAoZXJyKSB0aHJvdyBlcnI7Ci0gICAgICAgICAg
bG9nKCdzdWNjZXNzJywgZnVuY3Rpb24oZXJyKSB7Ci0gICAgICAgICAgICBpZiAoZXJyKSB0aHJv
dyBlcnI7Ci0gICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotICAgICAgfSk7Ci0gICAgICBgYGAK
LQotICAgICAgWW91IGNhbiBjaGFpbiB0aGUgb3BlcmF0aW9ucyB0b2dldGhlciB1c2luZyBgdGhl
bmAgZnJvbSB0aGUgcmV0dXJuZWQgcHJvbWlzZToKLQotICAgICAgYGBgamF2YXNjcmlwdAotICAg
ICAgdmFyIGZzID0gcmVxdWlyZSgnZnMnKTsKLSAgICAgIHZhciBkZW5vZGVpZnkgPSBSU1ZQLmRl
bm9kZWlmeTsKLSAgICAgIHZhciByZWFkRmlsZSA9IGRlbm9kZWlmeShmcy5yZWFkRmlsZSk7Ci0g
ICAgICB2YXIgd3JpdGVGaWxlID0gZGVub2RlaWZ5KGZzLndyaXRlRmlsZSk7Ci0gICAgICB2YXIg
bG9nID0gZGVub2RlaWZ5KHJlcXVpcmUoJ3NvbWUtYXN5bmMtbG9nZ2VyJykpOwotCi0gICAgICBy
ZWFkRmlsZSgnbXlmaWxlLnR4dCcpLnRoZW4oZnVuY3Rpb24oZGF0YSl7Ci0gICAgICAgIHJldHVy
biB3cml0ZUZpbGUoJ215ZmlsZTIudHh0JywgZGF0YSk7Ci0gICAgICB9KS50aGVuKGZ1bmN0aW9u
KCl7Ci0gICAgICAgIHJldHVybiBsb2coJ1NVQ0NFU1MnKTsKLSAgICAgIH0pLnRoZW4oZnVuY3Rp
b24oKXsKLSAgICAgICAgLy8gc3VjY2VzcyBoYW5kbGVyCi0gICAgICB9LCBmdW5jdGlvbihyZWFz
b24pewotICAgICAgICAvLyByZWplY3Rpb24gaGFuZGxlcgotICAgICAgfSk7Ci0gICAgICBgYGAK
LQotICAgICAgQG1ldGhvZCBkZW5vZGVpZnkKLSAgICAgIEBmb3IgUlNWUAotICAgICAgQHBhcmFt
IHtGdW5jdGlvbn0gbm9kZUZ1bmMgYSAibm9kZS1zdHlsZSIgZnVuY3Rpb24gdGhhdCB0YWtlcyBh
IGNhbGxiYWNrIGFzCi0gICAgICBpdHMgbGFzdCBhcmd1bWVudC4gVGhlIGNhbGxiYWNrIGV4cGVj
dHMgYW4gZXJyb3IgdG8gYmUgcGFzc2VkIGFzIGl0cyBmaXJzdAotICAgICAgYXJndW1lbnQgKGlm
IGFuIGVycm9yIG9jY3VycmVkLCBvdGhlcndpc2UgbnVsbCksIGFuZCB0aGUgdmFsdWUgZnJvbSB0
aGUKLSAgICAgIG9wZXJhdGlvbiBhcyBpdHMgc2Vjb25kIGFyZ3VtZW50ICgiZnVuY3Rpb24oZXJy
LCB2YWx1ZSl7IH0iKS4KLSAgICAgIEBwYXJhbSB7QW55fSBiaW5kaW5nIG9wdGlvbmFsIGFyZ3Vt
ZW50IGZvciBiaW5kaW5nIHRoZSAidGhpcyIgdmFsdWUgd2hlbgotICAgICAgY2FsbGluZyB0aGUg
YG5vZGVGdW5jYCBmdW5jdGlvbi4KLSAgICAgIEByZXR1cm4ge0Z1bmN0aW9ufSBhIGZ1bmN0aW9u
IHRoYXQgd3JhcHMgYG5vZGVGdW5jYCB0byByZXR1cm4gYW4KLSAgICAgIGBSU1ZQLlByb21pc2Vg
Ci0gICAgICBAc3RhdGljCi0gICAgKi8KLSAgICBfX2V4cG9ydHNfX1siZGVmYXVsdCJdID0gZnVu
Y3Rpb24gZGVub2RlaWZ5KG5vZGVGdW5jLCBiaW5kaW5nKSB7Ci0gICAgICByZXR1cm4gZnVuY3Rp
b24oKSAgewotICAgICAgICB2YXIgbm9kZUFyZ3MgPSBzbGljZS5jYWxsKGFyZ3VtZW50cyksIHJl
c29sdmUsIHJlamVjdDsKLSAgICAgICAgdmFyIHRoaXNBcmcgPSB0aGlzIHx8IGJpbmRpbmc7Ci0K
LSAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgewot
ICAgICAgICAgIFByb21pc2UuYWxsKG5vZGVBcmdzKS50aGVuKGZ1bmN0aW9uKG5vZGVBcmdzKSB7
Ci0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICBub2RlQXJncy5wdXNoKG1ha2VOb2Rl
Q2FsbGJhY2tGb3IocmVzb2x2ZSwgcmVqZWN0KSk7Ci0gICAgICAgICAgICAgIG5vZGVGdW5jLmFw
cGx5KHRoaXNBcmcsIG5vZGVBcmdzKTsKLSAgICAgICAgICAgIH0gY2F0Y2goZSkgewotICAgICAg
ICAgICAgICByZWplY3QoZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfSk7Ci0gICAgICAg
IH0pOwotICAgICAgfTsKLSAgICB9OwotICB9KTsKLWRlZmluZSgicnN2cC9wcm9taXNlIiwgCi0g
IFsiLi9jb25maWciLCIuL2V2ZW50cyIsIi4vaW5zdHJ1bWVudCIsIi4vdXRpbHMiLCIuL3Byb21p
c2UvY2FzdCIsIi4vcHJvbWlzZS9hbGwiLCIuL3Byb21pc2UvcmFjZSIsIi4vcHJvbWlzZS9yZXNv
bHZlIiwiLi9wcm9taXNlL3JlamVjdCIsImV4cG9ydHMiXSwKLSAgZnVuY3Rpb24oX19kZXBlbmRl
bmN5MV9fLCBfX2RlcGVuZGVuY3kyX18sIF9fZGVwZW5kZW5jeTNfXywgX19kZXBlbmRlbmN5NF9f
LCBfX2RlcGVuZGVuY3k1X18sIF9fZGVwZW5kZW5jeTZfXywgX19kZXBlbmRlbmN5N19fLCBfX2Rl
cGVuZGVuY3k4X18sIF9fZGVwZW5kZW5jeTlfXywgX19leHBvcnRzX18pIHsKLSAgICAidXNlIHN0
cmljdCI7Ci0gICAgdmFyIGNvbmZpZyA9IF9fZGVwZW5kZW5jeTFfXy5jb25maWc7Ci0gICAgdmFy
IEV2ZW50VGFyZ2V0ID0gX19kZXBlbmRlbmN5Ml9fWyJkZWZhdWx0Il07Ci0gICAgdmFyIGluc3Ry
dW1lbnQgPSBfX2RlcGVuZGVuY3kzX19bImRlZmF1bHQiXTsKLSAgICB2YXIgb2JqZWN0T3JGdW5j
dGlvbiA9IF9fZGVwZW5kZW5jeTRfXy5vYmplY3RPckZ1bmN0aW9uOwotICAgIHZhciBpc0Z1bmN0
aW9uID0gX19kZXBlbmRlbmN5NF9fLmlzRnVuY3Rpb247Ci0gICAgdmFyIG5vdyA9IF9fZGVwZW5k
ZW5jeTRfXy5ub3c7Ci0gICAgdmFyIGNhc3QgPSBfX2RlcGVuZGVuY3k1X19bImRlZmF1bHQiXTsK
LSAgICB2YXIgYWxsID0gX19kZXBlbmRlbmN5Nl9fWyJkZWZhdWx0Il07Ci0gICAgdmFyIHJhY2Ug
PSBfX2RlcGVuZGVuY3k3X19bImRlZmF1bHQiXTsKLSAgICB2YXIgUmVzb2x2ZSA9IF9fZGVwZW5k
ZW5jeThfX1siZGVmYXVsdCJdOwotICAgIHZhciBSZWplY3QgPSBfX2RlcGVuZGVuY3k5X19bImRl
ZmF1bHQiXTsKLQotICAgIHZhciBndWlkS2V5ID0gJ3JzdnBfJyArIG5vdygpICsgJy0nOwotICAg
IHZhciBjb3VudGVyID0gMDsKLQotICAgIGZ1bmN0aW9uIG5vb3AoKSB7fQotCi0gICAgX19leHBv
cnRzX19bImRlZmF1bHQiXSA9IFByb21pc2U7Ci0KLQotICAgIC8qKgotICAgICAgUHJvbWlzZSBv
YmplY3RzIHJlcHJlc2VudCB0aGUgZXZlbnR1YWwgcmVzdWx0IG9mIGFuIGFzeW5jaHJvbm91cyBv
cGVyYXRpb24uIFRoZQotICAgICAgcHJpbWFyeSB3YXkgb2YgaW50ZXJhY3Rpbmcgd2l0aCBhIHBy
b21pc2UgaXMgdGhyb3VnaCBpdHMgYHRoZW5gIG1ldGhvZCwgd2hpY2gKLSAgICAgIHJlZ2lzdGVy
cyBjYWxsYmFja3MgdG8gcmVjZWl2ZSBlaXRoZXIgYSBwcm9taXNl4oCZcyBldmVudHVhbCB2YWx1
ZSBvciB0aGUgcmVhc29uCi0gICAgICB3aHkgdGhlIHByb21pc2UgY2Fubm90IGJlIGZ1bGZpbGxl
ZC4KLQotICAgICAgVGVybWlub2xvZ3kKLSAgICAgIC0tLS0tLS0tLS0tCi0KLSAgICAgIC0gYHBy
b21pc2VgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiB3aXRoIGEgYHRoZW5gIG1ldGhvZCB3aG9z
ZSBiZWhhdmlvciBjb25mb3JtcyB0byB0aGlzIHNwZWNpZmljYXRpb24uCi0gICAgICAtIGB0aGVu
YWJsZWAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uIHRoYXQgZGVmaW5lcyBhIGB0aGVuYCBtZXRo
b2QuCi0gICAgICAtIGB2YWx1ZWAgaXMgYW55IGxlZ2FsIEphdmFTY3JpcHQgdmFsdWUgKGluY2x1
ZGluZyB1bmRlZmluZWQsIGEgdGhlbmFibGUsIG9yIGEgcHJvbWlzZSkuCi0gICAgICAtIGBleGNl
cHRpb25gIGlzIGEgdmFsdWUgdGhhdCBpcyB0aHJvd24gdXNpbmcgdGhlIHRocm93IHN0YXRlbWVu
dC4KLSAgICAgIC0gYHJlYXNvbmAgaXMgYSB2YWx1ZSB0aGF0IGluZGljYXRlcyB3aHkgYSBwcm9t
aXNlIHdhcyByZWplY3RlZC4KLSAgICAgIC0gYHNldHRsZWRgIHRoZSBmaW5hbCByZXN0aW5nIHN0
YXRlIG9mIGEgcHJvbWlzZSwgZnVsZmlsbGVkIG9yIHJlamVjdGVkLgotCi0gICAgICBBIHByb21p
c2UgY2FuIGJlIGluIG9uZSBvZiB0aHJlZSBzdGF0ZXM6IHBlbmRpbmcsIGZ1bGZpbGxlZCwgb3Ig
cmVqZWN0ZWQuCi0KLSAgICAgIFByb21pc2VzIHRoYXQgYXJlIGZ1bGZpbGxlZCBoYXZlIGEgZnVs
ZmlsbG1lbnQgdmFsdWUgYW5kIGFyZSBpbiB0aGUgZnVsZmlsbGVkCi0gICAgICBzdGF0ZS4gIFBy
b21pc2VzIHRoYXQgYXJlIHJlamVjdGVkIGhhdmUgYSByZWplY3Rpb24gcmVhc29uIGFuZCBhcmUg
aW4gdGhlCi0gICAgICByZWplY3RlZCBzdGF0ZS4gIEEgZnVsZmlsbG1lbnQgdmFsdWUgaXMgbmV2
ZXIgYSB0aGVuYWJsZS4gIFNpbWlsYXJseSwgYQotICAgICAgcmVqZWN0aW9uIHJlYXNvbiBpcyBu
ZXZlciBhIHRoZW5hYmxlLgotCi0gICAgICBQcm9taXNlcyBjYW4gYWxzbyBiZSBzYWlkIHRvICpy
ZXNvbHZlKiBhIHZhbHVlLiAgSWYgdGhpcyB2YWx1ZSBpcyBhbHNvIGEKLSAgICAgIHByb21pc2Us
IHRoZW4gdGhlIG9yaWdpbmFsIHByb21pc2UncyBzZXR0bGVkIHN0YXRlIHdpbGwgbWF0Y2ggdGhl
IHZhbHVlJ3MKLSAgICAgIHNldHRsZWQgc3RhdGUuICBTbyBhIHByb21pc2UgdGhhdCAqcmVzb2x2
ZXMqIGEgcHJvbWlzZSB0aGF0IHJlamVjdHMgd2lsbAotICAgICAgaXRzZWxmIHJlamVjdCwgYW5k
IGEgcHJvbWlzZSB0aGF0ICpyZXNvbHZlcyogYSBwcm9taXNlIHRoYXQgZnVsZmlsbHMgd2lsbAot
ICAgICAgaXRzZWxmIGZ1bGZpbGwuCi0KLQotICAgICAgQmFzaWMgVXNhZ2U6Ci0gICAgICAtLS0t
LS0tLS0tLS0KLQotICAgICAgYGBganMKLSAgICAgIHZhciBwcm9taXNlID0gbmV3IFByb21pc2Uo
ZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAgIC8vIG9uIHN1Y2Nlc3MKLSAgICAg
ICAgcmVzb2x2ZSh2YWx1ZSk7Ci0KLSAgICAgICAgLy8gb24gZmFpbHVyZQotICAgICAgICByZWpl
Y3QocmVhc29uKTsKLSAgICAgIH0pOwotCi0gICAgICBwcm9taXNlLnRoZW4oZnVuY3Rpb24odmFs
dWUpIHsKLSAgICAgICAgLy8gb24gZnVsZmlsbG1lbnQKLSAgICAgIH0sIGZ1bmN0aW9uKHJlYXNv
bikgewotICAgICAgICAvLyBvbiByZWplY3Rpb24KLSAgICAgIH0pOwotICAgICAgYGBgCi0KLSAg
ICAgIEFkdmFuY2VkIFVzYWdlOgotICAgICAgLS0tLS0tLS0tLS0tLS0tCi0KLSAgICAgIFByb21p
c2VzIHNoaW5lIHdoZW4gYWJzdHJhY3RpbmcgYXdheSBhc3luY2hyb25vdXMgaW50ZXJhY3Rpb25z
IHN1Y2ggYXMKLSAgICAgIGBYTUxIdHRwUmVxdWVzdGBzLgotCi0gICAgICBgYGBqcwotICAgICAg
ZnVuY3Rpb24gZ2V0SlNPTih1cmwpIHsKLSAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0
aW9uKHJlc29sdmUsIHJlamVjdCl7Ci0gICAgICAgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVx
dWVzdCgpOwotCi0gICAgICAgICAgeGhyLm9wZW4oJ0dFVCcsIHVybCk7Ci0gICAgICAgICAgeGhy
Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGhhbmRsZXI7Ci0gICAgICAgICAgeGhyLnJlc3BvbnNlVHlw
ZSA9ICdqc29uJzsKLSAgICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcignQWNjZXB0JywgJ2Fw
cGxpY2F0aW9uL2pzb24nKTsKLSAgICAgICAgICB4aHIuc2VuZCgpOwotCi0gICAgICAgICAgZnVu
Y3Rpb24gaGFuZGxlcigpIHsKLSAgICAgICAgICAgIGlmICh0aGlzLnJlYWR5U3RhdGUgPT09IHRo
aXMuRE9ORSkgewotICAgICAgICAgICAgICBpZiAodGhpcy5zdGF0dXMgPT09IDIwMCkgewotICAg
ICAgICAgICAgICAgIHJlc29sdmUodGhpcy5yZXNwb25zZSk7Ci0gICAgICAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcigiZ2V0SlNPTjogYCIgKyB1cmwg
KyAiYCBmYWlsZWQgd2l0aCBzdGF0dXM6IFsiICsgdGhpcy5zdGF0dXMgKyAiXSIpOwotICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfTsKLSAgICAgICAgfSk7Ci0gICAg
ICB9Ci0KLSAgICAgIGdldEpTT04oJy9wb3N0cy5qc29uJykudGhlbihmdW5jdGlvbihqc29uKSB7
Ci0gICAgICAgIC8vIG9uIGZ1bGZpbGxtZW50Ci0gICAgICB9LCBmdW5jdGlvbihyZWFzb24pIHsK
LSAgICAgICAgLy8gb24gcmVqZWN0aW9uCi0gICAgICB9KTsKLSAgICAgIGBgYAotCi0gICAgICBV
bmxpa2UgY2FsbGJhY2tzLCBwcm9taXNlcyBhcmUgZ3JlYXQgY29tcG9zYWJsZSBwcmltaXRpdmVz
LgotCi0gICAgICBgYGBqcwotICAgICAgUHJvbWlzZS5hbGwoWwotICAgICAgICBnZXRKU09OKCcv
cG9zdHMnKSwKLSAgICAgICAgZ2V0SlNPTignL2NvbW1lbnRzJykKLSAgICAgIF0pLnRoZW4oZnVu
Y3Rpb24odmFsdWVzKXsKLSAgICAgICAgdmFsdWVzWzBdIC8vID0+IHBvc3RzSlNPTgotICAgICAg
ICB2YWx1ZXNbMV0gLy8gPT4gY29tbWVudHNKU09OCi0KLSAgICAgICAgcmV0dXJuIHZhbHVlczsK
LSAgICAgIH0pOwotICAgICAgYGBgCi0KLSAgICAgIEBjbGFzcyBSU1ZQLlByb21pc2UKLSAgICAg
IEBwYXJhbSB7ZnVuY3Rpb259Ci0gICAgICBAcGFyYW0ge1N0cmluZ30gbGFiZWwgb3B0aW9uYWwg
c3RyaW5nIGZvciBsYWJlbGluZyB0aGUgcHJvbWlzZS4KLSAgICAgIFVzZWZ1bCBmb3IgdG9vbGlu
Zy4KLSAgICAgIEBjb25zdHJ1Y3RvcgotICAgICovCi0gICAgZnVuY3Rpb24gUHJvbWlzZShyZXNv
bHZlciwgbGFiZWwpIHsKLSAgICAgIGlmICghaXNGdW5jdGlvbihyZXNvbHZlcikpIHsKLSAgICAg
ICAgdGhyb3cgbmV3IFR5cGVFcnJvcignWW91IG11c3QgcGFzcyBhIHJlc29sdmVyIGZ1bmN0aW9u
IGFzIHRoZSBmaXJzdCBhcmd1bWVudCB0byB0aGUgcHJvbWlzZSBjb25zdHJ1Y3RvcicpOwotICAg
ICAgfQotCi0gICAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgUHJvbWlzZSkpIHsKLSAgICAgICAg
dGhyb3cgbmV3IFR5cGVFcnJvcigiRmFpbGVkIHRvIGNvbnN0cnVjdCAnUHJvbWlzZSc6IFBsZWFz
ZSB1c2UgdGhlICduZXcnIG9wZXJhdG9yLCB0aGlzIG9iamVjdCBjb25zdHJ1Y3RvciBjYW5ub3Qg
YmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uIik7Ci0gICAgICB9Ci0KLSAgICAgIHRoaXMuX2lkID0g
Y291bnRlcisrOwotICAgICAgdGhpcy5fbGFiZWwgPSBsYWJlbDsKLSAgICAgIHRoaXMuX3N1YnNj
cmliZXJzID0gW107Ci0KLSAgICAgIGlmIChjb25maWcuaW5zdHJ1bWVudCkgewotICAgICAgICBp
bnN0cnVtZW50KCdjcmVhdGVkJywgdGhpcyk7Ci0gICAgICB9Ci0KLSAgICAgIGlmIChub29wICE9
PSByZXNvbHZlcikgewotICAgICAgICBpbnZva2VSZXNvbHZlcihyZXNvbHZlciwgdGhpcyk7Ci0g
ICAgICB9Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gaW52b2tlUmVzb2x2ZXIocmVzb2x2ZXIsIHBy
b21pc2UpIHsKLSAgICAgIGZ1bmN0aW9uIHJlc29sdmVQcm9taXNlKHZhbHVlKSB7Ci0gICAgICAg
IHJlc29sdmUocHJvbWlzZSwgdmFsdWUpOwotICAgICAgfQotCi0gICAgICBmdW5jdGlvbiByZWpl
Y3RQcm9taXNlKHJlYXNvbikgewotICAgICAgICByZWplY3QocHJvbWlzZSwgcmVhc29uKTsKLSAg
ICAgIH0KLQotICAgICAgdHJ5IHsKLSAgICAgICAgcmVzb2x2ZXIocmVzb2x2ZVByb21pc2UsIHJl
amVjdFByb21pc2UpOwotICAgICAgfSBjYXRjaChlKSB7Ci0gICAgICAgIHJlamVjdFByb21pc2Uo
ZSk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgUHJvbWlzZS5jYXN0ID0gY2FzdDsKLSAgICBQcm9t
aXNlLmFsbCA9IGFsbDsKLSAgICBQcm9taXNlLnJhY2UgPSByYWNlOwotICAgIFByb21pc2UucmVz
b2x2ZSA9IFJlc29sdmU7Ci0gICAgUHJvbWlzZS5yZWplY3QgPSBSZWplY3Q7Ci0KLSAgICB2YXIg
UEVORElORyAgID0gdm9pZCAwOwotICAgIHZhciBTRUFMRUQgICAgPSAwOwotICAgIHZhciBGVUxG
SUxMRUQgPSAxOwotICAgIHZhciBSRUpFQ1RFRCAgPSAyOwotCi0gICAgZnVuY3Rpb24gc3Vic2Ny
aWJlKHBhcmVudCwgY2hpbGQsIG9uRnVsZmlsbG1lbnQsIG9uUmVqZWN0aW9uKSB7Ci0gICAgICB2
YXIgc3Vic2NyaWJlcnMgPSBwYXJlbnQuX3N1YnNjcmliZXJzOwotICAgICAgdmFyIGxlbmd0aCA9
IHN1YnNjcmliZXJzLmxlbmd0aDsKLQotICAgICAgc3Vic2NyaWJlcnNbbGVuZ3RoXSA9IGNoaWxk
OwotICAgICAgc3Vic2NyaWJlcnNbbGVuZ3RoICsgRlVMRklMTEVEXSA9IG9uRnVsZmlsbG1lbnQ7
Ci0gICAgICBzdWJzY3JpYmVyc1tsZW5ndGggKyBSRUpFQ1RFRF0gID0gb25SZWplY3Rpb247Ci0g
ICAgfQotCi0gICAgZnVuY3Rpb24gcHVibGlzaChwcm9taXNlLCBzZXR0bGVkKSB7Ci0gICAgICB2
YXIgY2hpbGQsIGNhbGxiYWNrLCBzdWJzY3JpYmVycyA9IHByb21pc2UuX3N1YnNjcmliZXJzLCBk
ZXRhaWwgPSBwcm9taXNlLl9kZXRhaWw7Ci0KLSAgICAgIGlmIChjb25maWcuaW5zdHJ1bWVudCkg
ewotICAgICAgICBpbnN0cnVtZW50KHNldHRsZWQgPT09IEZVTEZJTExFRCA/ICdmdWxmaWxsZWQn
IDogJ3JlamVjdGVkJywgcHJvbWlzZSk7Ci0gICAgICB9Ci0KLSAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgc3Vic2NyaWJlcnMubGVuZ3RoOyBpICs9IDMpIHsKLSAgICAgICAgY2hpbGQgPSBzdWJz
Y3JpYmVyc1tpXTsKLSAgICAgICAgY2FsbGJhY2sgPSBzdWJzY3JpYmVyc1tpICsgc2V0dGxlZF07
Ci0KLSAgICAgICAgaW52b2tlQ2FsbGJhY2soc2V0dGxlZCwgY2hpbGQsIGNhbGxiYWNrLCBkZXRh
aWwpOwotICAgICAgfQotCi0gICAgICBwcm9taXNlLl9zdWJzY3JpYmVycyA9IG51bGw7Ci0gICAg
fQotCi0gICAgUHJvbWlzZS5wcm90b3R5cGUgPSB7Ci0gICAgICBjb25zdHJ1Y3RvcjogUHJvbWlz
ZSwKLQotICAgICAgX2lkOiB1bmRlZmluZWQsCi0gICAgICBfZ3VpZEtleTogZ3VpZEtleSwKLSAg
ICAgIF9sYWJlbDogdW5kZWZpbmVkLAotCi0gICAgICBfc3RhdGU6IHVuZGVmaW5lZCwKLSAgICAg
IF9kZXRhaWw6IHVuZGVmaW5lZCwKLSAgICAgIF9zdWJzY3JpYmVyczogdW5kZWZpbmVkLAotCi0g
ICAgICBfb25lcnJvcjogZnVuY3Rpb24gKHJlYXNvbikgewotICAgICAgICBjb25maWcudHJpZ2dl
cignZXJyb3InLCByZWFzb24pOwotICAgICAgfSwKLQotICAgIC8qKgotICAgICAgVGhlIHByaW1h
cnkgd2F5IG9mIGludGVyYWN0aW5nIHdpdGggYSBwcm9taXNlIGlzIHRocm91Z2ggaXRzIGB0aGVu
YCBtZXRob2QsCi0gICAgICB3aGljaCByZWdpc3RlcnMgY2FsbGJhY2tzIHRvIHJlY2VpdmUgZWl0
aGVyIGEgcHJvbWlzZSdzIGV2ZW50dWFsIHZhbHVlIG9yIHRoZQotICAgICAgcmVhc29uIHdoeSB0
aGUgcHJvbWlzZSBjYW5ub3QgYmUgZnVsZmlsbGVkLgotCi0gICAgICBgYGBqcwotICAgICAgZmlu
ZFVzZXIoKS50aGVuKGZ1bmN0aW9uKHVzZXIpewotICAgICAgICAvLyB1c2VyIGlzIGF2YWlsYWJs
ZQotICAgICAgfSwgZnVuY3Rpb24ocmVhc29uKXsKLSAgICAgICAgLy8gdXNlciBpcyB1bmF2YWls
YWJsZSwgYW5kIHlvdSBhcmUgZ2l2ZW4gdGhlIHJlYXNvbiB3aHkKLSAgICAgIH0pOwotICAgICAg
YGBgCi0KLSAgICAgIENoYWluaW5nCi0gICAgICAtLS0tLS0tLQotCi0gICAgICBUaGUgcmV0dXJu
IHZhbHVlIG9mIGB0aGVuYCBpcyBpdHNlbGYgYSBwcm9taXNlLiAgVGhpcyBzZWNvbmQsICJkb3du
c3RyZWFtIgotICAgICAgcHJvbWlzZSBpcyByZXNvbHZlZCB3aXRoIHRoZSByZXR1cm4gdmFsdWUg
b2YgdGhlIGZpcnN0IHByb21pc2UncyBmdWxmaWxsbWVudAotICAgICAgb3IgcmVqZWN0aW9uIGhh
bmRsZXIsIG9yIHJlamVjdGVkIGlmIHRoZSBoYW5kbGVyIHRocm93cyBhbiBleGNlcHRpb24uCi0K
LSAgICAgIGBgYGpzCi0gICAgICBmaW5kVXNlcigpLnRoZW4oZnVuY3Rpb24gKHVzZXIpIHsKLSAg
ICAgICAgcmV0dXJuIHVzZXIubmFtZTsKLSAgICAgIH0sIGZ1bmN0aW9uIChyZWFzb24pIHsKLSAg
ICAgICAgcmV0dXJuICJkZWZhdWx0IG5hbWUiOwotICAgICAgfSkudGhlbihmdW5jdGlvbiAodXNl
ck5hbWUpIHsKLSAgICAgICAgLy8gSWYgYGZpbmRVc2VyYCBmdWxmaWxsZWQsIGB1c2VyTmFtZWAg
d2lsbCBiZSB0aGUgdXNlcidzIG5hbWUsIG90aGVyd2lzZSBpdAotICAgICAgICAvLyB3aWxsIGJl
IGAiZGVmYXVsdCBuYW1lImAKLSAgICAgIH0pOwotCi0gICAgICBmaW5kVXNlcigpLnRoZW4oZnVu
Y3Rpb24gKHVzZXIpIHsKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJGb3VuZCB1c2VyLCBidXQg
c3RpbGwgdW5oYXBweSIpOwotICAgICAgfSwgZnVuY3Rpb24gKHJlYXNvbikgewotICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoImBmaW5kVXNlcmAgcmVqZWN0ZWQgYW5kIHdlJ3JlIHVuaGFwcHkiKTsK
LSAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHZhbHVlKSB7Ci0gICAgICAgIC8vIG5ldmVyIHJlYWNo
ZWQKLSAgICAgIH0sIGZ1bmN0aW9uIChyZWFzb24pIHsKLSAgICAgICAgLy8gaWYgYGZpbmRVc2Vy
YCBmdWxmaWxsZWQsIGByZWFzb25gIHdpbGwgYmUgIkZvdW5kIHVzZXIsIGJ1dCBzdGlsbCB1bmhh
cHB5Ii4KLSAgICAgICAgLy8gSWYgYGZpbmRVc2VyYCByZWplY3RlZCwgYHJlYXNvbmAgd2lsbCBi
ZSAiYGZpbmRVc2VyYCByZWplY3RlZCBhbmQgd2UncmUgdW5oYXBweSIuCi0gICAgICB9KTsKLSAg
ICAgIGBgYAotICAgICAgSWYgdGhlIGRvd25zdHJlYW0gcHJvbWlzZSBkb2VzIG5vdCBzcGVjaWZ5
IGEgcmVqZWN0aW9uIGhhbmRsZXIsIHJlamVjdGlvbiByZWFzb25zIHdpbGwgYmUgcHJvcGFnYXRl
ZCBmdXJ0aGVyIGRvd25zdHJlYW0uCi0KLSAgICAgIGBgYGpzCi0gICAgICBmaW5kVXNlcigpLnRo
ZW4oZnVuY3Rpb24gKHVzZXIpIHsKLSAgICAgICAgdGhyb3cgbmV3IFBlZGFnb2dpY2FsRXhjZXB0
aW9uKCJVcHN0cmVhbSBlcnJvciIpOwotICAgICAgfSkudGhlbihmdW5jdGlvbiAodmFsdWUpIHsK
LSAgICAgICAgLy8gbmV2ZXIgcmVhY2hlZAotICAgICAgfSkudGhlbihmdW5jdGlvbiAodmFsdWUp
IHsKLSAgICAgICAgLy8gbmV2ZXIgcmVhY2hlZAotICAgICAgfSwgZnVuY3Rpb24gKHJlYXNvbikg
ewotICAgICAgICAvLyBUaGUgYFBlZGdhZ29jaWFsRXhjZXB0aW9uYCBpcyBwcm9wYWdhdGVkIGFs
bCB0aGUgd2F5IGRvd24gdG8gaGVyZQotICAgICAgfSk7Ci0gICAgICBgYGAKLQotICAgICAgQXNz
aW1pbGF0aW9uCi0gICAgICAtLS0tLS0tLS0tLS0KLQotICAgICAgU29tZXRpbWVzIHRoZSB2YWx1
ZSB5b3Ugd2FudCB0byBwcm9wYWdhdGUgdG8gYSBkb3duc3RyZWFtIHByb21pc2UgY2FuIG9ubHkg
YmUKLSAgICAgIHJldHJpZXZlZCBhc3luY2hyb25vdXNseS4gVGhpcyBjYW4gYmUgYWNoaWV2ZWQg
YnkgcmV0dXJuaW5nIGEgcHJvbWlzZSBpbiB0aGUKLSAgICAgIGZ1bGZpbGxtZW50IG9yIHJlamVj
dGlvbiBoYW5kbGVyLiBUaGUgZG93bnN0cmVhbSBwcm9taXNlIHdpbGwgdGhlbiBiZSBwZW5kaW5n
Ci0gICAgICB1bnRpbCB0aGUgcmV0dXJuZWQgcHJvbWlzZSBpcyBzZXR0bGVkLiBUaGlzIGlzIGNh
bGxlZCAqYXNzaW1pbGF0aW9uKi4KLQotICAgICAgYGBganMKLSAgICAgIGZpbmRVc2VyKCkudGhl
bihmdW5jdGlvbiAodXNlcikgewotICAgICAgICByZXR1cm4gZmluZENvbW1lbnRzQnlBdXRob3Io
dXNlcik7Ci0gICAgICB9KS50aGVuKGZ1bmN0aW9uIChjb21tZW50cykgewotICAgICAgICAvLyBU
aGUgdXNlcidzIGNvbW1lbnRzIGFyZSBub3cgYXZhaWxhYmxlCi0gICAgICB9KTsKLSAgICAgIGBg
YAotCi0gICAgICBJZiB0aGUgYXNzaW1saWF0ZWQgcHJvbWlzZSByZWplY3RzLCB0aGVuIHRoZSBk
b3duc3RyZWFtIHByb21pc2Ugd2lsbCBhbHNvIHJlamVjdC4KLQotICAgICAgYGBganMKLSAgICAg
IGZpbmRVc2VyKCkudGhlbihmdW5jdGlvbiAodXNlcikgewotICAgICAgICByZXR1cm4gZmluZENv
bW1lbnRzQnlBdXRob3IodXNlcik7Ci0gICAgICB9KS50aGVuKGZ1bmN0aW9uIChjb21tZW50cykg
ewotICAgICAgICAvLyBJZiBgZmluZENvbW1lbnRzQnlBdXRob3JgIGZ1bGZpbGxzLCB3ZSdsbCBo
YXZlIHRoZSB2YWx1ZSBoZXJlCi0gICAgICB9LCBmdW5jdGlvbiAocmVhc29uKSB7Ci0gICAgICAg
IC8vIElmIGBmaW5kQ29tbWVudHNCeUF1dGhvcmAgcmVqZWN0cywgd2UnbGwgaGF2ZSB0aGUgcmVh
c29uIGhlcmUKLSAgICAgIH0pOwotICAgICAgYGBgCi0KLSAgICAgIFNpbXBsZSBFeGFtcGxlCi0g
ICAgICAtLS0tLS0tLS0tLS0tLQotCi0gICAgICBTeW5jaHJvbm91cyBFeGFtcGxlCi0KLSAgICAg
IGBgYGphdmFzY3JpcHQKLSAgICAgIHZhciByZXN1bHQ7Ci0KLSAgICAgIHRyeSB7Ci0gICAgICAg
IHJlc3VsdCA9IGZpbmRSZXN1bHQoKTsKLSAgICAgICAgLy8gc3VjY2VzcwotICAgICAgfSBjYXRj
aChyZWFzb24pIHsKLSAgICAgICAgLy8gZmFpbHVyZQotICAgICAgfQotICAgICAgYGBgCi0KLSAg
ICAgIEVycmJhY2sgRXhhbXBsZQotCi0gICAgICBgYGBqcwotICAgICAgZmluZFJlc3VsdChmdW5j
dGlvbihyZXN1bHQsIGVycil7Ci0gICAgICAgIGlmIChlcnIpIHsKLSAgICAgICAgICAvLyBmYWls
dXJlCi0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgLy8gc3VjY2VzcwotICAgICAgICB9Ci0g
ICAgICB9KTsKLSAgICAgIGBgYAotCi0gICAgICBQcm9taXNlIEV4YW1wbGU7Ci0KLSAgICAgIGBg
YGphdmFzY3JpcHQKLSAgICAgIGZpbmRSZXN1bHQoKS50aGVuKGZ1bmN0aW9uKHJlc3VsdCl7Ci0g
ICAgICAgIC8vIHN1Y2Nlc3MKLSAgICAgIH0sIGZ1bmN0aW9uKHJlYXNvbil7Ci0gICAgICAgIC8v
IGZhaWx1cmUKLSAgICAgIH0pOwotICAgICAgYGBgCi0KLSAgICAgIEFkdmFuY2VkIEV4YW1wbGUK
LSAgICAgIC0tLS0tLS0tLS0tLS0tCi0KLSAgICAgIFN5bmNocm9ub3VzIEV4YW1wbGUKLQotICAg
ICAgYGBgamF2YXNjcmlwdAotICAgICAgdmFyIGF1dGhvciwgYm9va3M7Ci0KLSAgICAgIHRyeSB7
Ci0gICAgICAgIGF1dGhvciA9IGZpbmRBdXRob3IoKTsKLSAgICAgICAgYm9va3MgID0gZmluZEJv
b2tzQnlBdXRob3IoYXV0aG9yKTsKLSAgICAgICAgLy8gc3VjY2VzcwotICAgICAgfSBjYXRjaChy
ZWFzb24pIHsKLSAgICAgICAgLy8gZmFpbHVyZQotICAgICAgfQotICAgICAgYGBgCi0KLSAgICAg
IEVycmJhY2sgRXhhbXBsZQotCi0gICAgICBgYGBqcwotCi0gICAgICBmdW5jdGlvbiBmb3VuZEJv
b2tzKGJvb2tzKSB7Ci0KLSAgICAgIH0KLQotICAgICAgZnVuY3Rpb24gZmFpbHVyZShyZWFzb24p
IHsKLQotICAgICAgfQotCi0gICAgICBmaW5kQXV0aG9yKGZ1bmN0aW9uKGF1dGhvciwgZXJyKXsK
LSAgICAgICAgaWYgKGVycikgewotICAgICAgICAgIGZhaWx1cmUoZXJyKTsKLSAgICAgICAgICAv
LyBmYWlsdXJlCi0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAg
IGZpbmRCb29va3NCeUF1dGhvcihhdXRob3IsIGZ1bmN0aW9uKGJvb2tzLCBlcnIpIHsKLSAgICAg
ICAgICAgICAgaWYgKGVycikgewotICAgICAgICAgICAgICAgIGZhaWx1cmUoZXJyKTsKLSAgICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAg
ICAgZm91bmRCb29rcyhib29rcyk7Ci0gICAgICAgICAgICAgICAgfSBjYXRjaChyZWFzb24pIHsK
LSAgICAgICAgICAgICAgICAgIGZhaWx1cmUocmVhc29uKTsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0pOwotICAgICAgICAgIH0gY2F0Y2goZXJyb3Ip
IHsKLSAgICAgICAgICAgIGZhaWx1cmUoZXJyKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgLy8g
c3VjY2VzcwotICAgICAgICB9Ci0gICAgICB9KTsKLSAgICAgIGBgYAotCi0gICAgICBQcm9taXNl
IEV4YW1wbGU7Ci0KLSAgICAgIGBgYGphdmFzY3JpcHQKLSAgICAgIGZpbmRBdXRob3IoKS4KLSAg
ICAgICAgdGhlbihmaW5kQm9va3NCeUF1dGhvcikuCi0gICAgICAgIHRoZW4oZnVuY3Rpb24oYm9v
a3MpewotICAgICAgICAgIC8vIGZvdW5kIGJvb2tzCi0gICAgICB9KS5jYXRjaChmdW5jdGlvbihy
ZWFzb24pewotICAgICAgICAvLyBzb21ldGhpbmcgd2VudCB3cm9uZwotICAgICAgfSk7Ci0gICAg
ICBgYGAKLQotICAgICAgQG1ldGhvZCB0aGVuCi0gICAgICBAcGFyYW0ge0Z1bmN0aW9ufSBvbkZ1
bGZpbGxlZAotICAgICAgQHBhcmFtIHtGdW5jdGlvbn0gb25SZWplY3RlZAotICAgICAgQHBhcmFt
IHtTdHJpbmd9IGxhYmVsIG9wdGlvbmFsIHN0cmluZyBmb3IgbGFiZWxpbmcgdGhlIHByb21pc2Uu
Ci0gICAgICBVc2VmdWwgZm9yIHRvb2xpbmcuCi0gICAgICBAcmV0dXJuIHtQcm9taXNlfQotICAg
ICovCi0gICAgICB0aGVuOiBmdW5jdGlvbihvbkZ1bGZpbGxtZW50LCBvblJlamVjdGlvbiwgbGFi
ZWwpIHsKLSAgICAgICAgdmFyIHByb21pc2UgPSB0aGlzOwotICAgICAgICB0aGlzLl9vbmVycm9y
ID0gbnVsbDsKLQotICAgICAgICB2YXIgdGhlblByb21pc2UgPSBuZXcgdGhpcy5jb25zdHJ1Y3Rv
cihub29wLCBsYWJlbCk7Ci0KLSAgICAgICAgaWYgKHRoaXMuX3N0YXRlKSB7Ci0gICAgICAgICAg
dmFyIGNhbGxiYWNrcyA9IGFyZ3VtZW50czsKLSAgICAgICAgICBjb25maWcuYXN5bmMoZnVuY3Rp
b24gaW52b2tlUHJvbWlzZUNhbGxiYWNrKCkgewotICAgICAgICAgICAgaW52b2tlQ2FsbGJhY2so
cHJvbWlzZS5fc3RhdGUsIHRoZW5Qcm9taXNlLCBjYWxsYmFja3NbcHJvbWlzZS5fc3RhdGUgLSAx
XSwgcHJvbWlzZS5fZGV0YWlsKTsKLSAgICAgICAgICB9KTsKLSAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICBzdWJzY3JpYmUodGhpcywgdGhlblByb21pc2UsIG9uRnVsZmlsbG1lbnQsIG9uUmVq
ZWN0aW9uKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChjb25maWcuaW5zdHJ1bWVudCkgewot
ICAgICAgICAgIGluc3RydW1lbnQoJ2NoYWluZWQnLCBwcm9taXNlLCB0aGVuUHJvbWlzZSk7Ci0g
ICAgICAgIH0KLQotICAgICAgICByZXR1cm4gdGhlblByb21pc2U7Ci0gICAgICB9LAotCi0gICAg
LyoqCi0gICAgICBgY2F0Y2hgIGlzIHNpbXBseSBzdWdhciBmb3IgYHRoZW4odW5kZWZpbmVkLCBv
blJlamVjdGlvbilgIHdoaWNoIG1ha2VzIGl0IHRoZSBzYW1lCi0gICAgICBhcyB0aGUgY2F0Y2gg
YmxvY2sgb2YgYSB0cnkvY2F0Y2ggc3RhdGVtZW50LgotCi0gICAgICBgYGBqcwotICAgICAgZnVu
Y3Rpb24gZmluZEF1dGhvcigpewotICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImNvdWxkbid0IGZp
bmQgdGhhdCBhdXRob3IiKTsKLSAgICAgIH0KLQotICAgICAgLy8gc3luY2hyb25vdXMKLSAgICAg
IHRyeSB7Ci0gICAgICAgIGZpbmRBdXRob3IoKTsKLSAgICAgIH0gY2F0Y2gocmVhc29uKSB7Ci0g
ICAgICAgIC8vIHNvbWV0aGluZyB3ZW50IHdyb25nCi0gICAgICB9Ci0KLSAgICAgIC8vIGFzeW5j
IHdpdGggcHJvbWlzZXMKLSAgICAgIGZpbmRBdXRob3IoKS5jYXRjaChmdW5jdGlvbihyZWFzb24p
ewotICAgICAgICAvLyBzb21ldGhpbmcgd2VudCB3cm9uZwotICAgICAgfSk7Ci0gICAgICBgYGAK
LQotICAgICAgQG1ldGhvZCBjYXRjaAotICAgICAgQHBhcmFtIHtGdW5jdGlvbn0gb25SZWplY3Rp
b24KLSAgICAgIEBwYXJhbSB7U3RyaW5nfSBsYWJlbCBvcHRpb25hbCBzdHJpbmcgZm9yIGxhYmVs
aW5nIHRoZSBwcm9taXNlLgotICAgICAgVXNlZnVsIGZvciB0b29saW5nLgotICAgICAgQHJldHVy
biB7UHJvbWlzZX0KLSAgICAqLwotICAgICAgJ2NhdGNoJzogZnVuY3Rpb24ob25SZWplY3Rpb24s
IGxhYmVsKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnRoZW4obnVsbCwgb25SZWplY3Rpb24sIGxh
YmVsKTsKLSAgICAgIH0sCi0KLSAgICAvKioKLSAgICAgIGBmaW5hbGx5YCB3aWxsIGJlIGludm9r
ZWQgcmVnYXJkbGVzcyBvZiB0aGUgcHJvbWlzZSdzIGZhdGUganVzdCBhcyBuYXRpdmUKLSAgICAg
IHRyeS9jYXRjaC9maW5hbGx5IGJlaGF2ZXMKLQotICAgICAgU3luY2hyb25vdXMgZXhhbXBsZToK
LQotICAgICAgYGBganMKLSAgICAgIGZpbmRBdXRob3IoKSB7Ci0gICAgICAgIGlmIChNYXRoLnJh
bmRvbSgpID4gMC41KSB7Ci0gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7Ci0gICAgICAgIH0K
LSAgICAgICAgcmV0dXJuIG5ldyBBdXRob3IoKTsKLSAgICAgIH0KLQotICAgICAgdHJ5IHsKLSAg
ICAgICAgcmV0dXJuIGZpbmRBdXRob3IoKTsgLy8gc3VjY2VlZCBvciBmYWlsCi0gICAgICB9IGNh
dGNoKGVycm9yKSB7Ci0gICAgICAgIHJldHVybiBmaW5kT3RoZXJBdXRoZXIoKTsKLSAgICAgIH0g
ZmluYWxseSB7Ci0gICAgICAgIC8vIGFsd2F5cyBydW5zCi0gICAgICAgIC8vIGRvZXNuJ3QgYWZm
ZWN0IHRoZSByZXR1cm4gdmFsdWUKLSAgICAgIH0KLSAgICAgIGBgYAotCi0gICAgICBBc3luY2hy
b25vdXMgZXhhbXBsZToKLQotICAgICAgYGBganMKLSAgICAgIGZpbmRBdXRob3IoKS5jYXRjaChm
dW5jdGlvbihyZWFzb24pewotICAgICAgICByZXR1cm4gZmluZE90aGVyQXV0aGVyKCk7Ci0gICAg
ICB9KS5maW5hbGx5KGZ1bmN0aW9uKCl7Ci0gICAgICAgIC8vIGF1dGhvciB3YXMgZWl0aGVyIGZv
dW5kLCBvciBub3QKLSAgICAgIH0pOwotICAgICAgYGBgCi0KLSAgICAgIEBtZXRob2QgZmluYWxs
eQotICAgICAgQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2sKLSAgICAgIEBwYXJhbSB7U3RyaW5n
fSBsYWJlbCBvcHRpb25hbCBzdHJpbmcgZm9yIGxhYmVsaW5nIHRoZSBwcm9taXNlLgotICAgICAg
VXNlZnVsIGZvciB0b29saW5nLgotICAgICAgQHJldHVybiB7UHJvbWlzZX0KLSAgICAqLwotICAg
ICAgJ2ZpbmFsbHknOiBmdW5jdGlvbihjYWxsYmFjaywgbGFiZWwpIHsKLSAgICAgICAgdmFyIGNv
bnN0cnVjdG9yID0gdGhpcy5jb25zdHJ1Y3RvcjsKLQotICAgICAgICByZXR1cm4gdGhpcy50aGVu
KGZ1bmN0aW9uKHZhbHVlKSB7Ci0gICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yLmNhc3QoY2Fs
bGJhY2soKSkudGhlbihmdW5jdGlvbigpewotICAgICAgICAgICAgcmV0dXJuIHZhbHVlOwotICAg
ICAgICAgIH0pOwotICAgICAgICB9LCBmdW5jdGlvbihyZWFzb24pIHsKLSAgICAgICAgICByZXR1
cm4gY29uc3RydWN0b3IuY2FzdChjYWxsYmFjaygpKS50aGVuKGZ1bmN0aW9uKCl7Ci0gICAgICAg
ICAgICB0aHJvdyByZWFzb247Ci0gICAgICAgICAgfSk7Ci0gICAgICAgIH0sIGxhYmVsKTsKLSAg
ICAgIH0KLSAgICB9OwotCi0gICAgZnVuY3Rpb24gaW52b2tlQ2FsbGJhY2soc2V0dGxlZCwgcHJv
bWlzZSwgY2FsbGJhY2ssIGRldGFpbCkgewotICAgICAgdmFyIGhhc0NhbGxiYWNrID0gaXNGdW5j
dGlvbihjYWxsYmFjayksCi0gICAgICAgICAgdmFsdWUsIGVycm9yLCBzdWNjZWVkZWQsIGZhaWxl
ZDsKLQotICAgICAgaWYgKGhhc0NhbGxiYWNrKSB7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAg
dmFsdWUgPSBjYWxsYmFjayhkZXRhaWwpOwotICAgICAgICAgIHN1Y2NlZWRlZCA9IHRydWU7Ci0g
ICAgICAgIH0gY2F0Y2goZSkgewotICAgICAgICAgIGZhaWxlZCA9IHRydWU7Ci0gICAgICAgICAg
ZXJyb3IgPSBlOwotICAgICAgICB9Ci0gICAgICB9IGVsc2UgewotICAgICAgICB2YWx1ZSA9IGRl
dGFpbDsKLSAgICAgICAgc3VjY2VlZGVkID0gdHJ1ZTsKLSAgICAgIH0KLQotICAgICAgaWYgKGhh
bmRsZVRoZW5hYmxlKHByb21pc2UsIHZhbHVlKSkgewotICAgICAgICByZXR1cm47Ci0gICAgICB9
IGVsc2UgaWYgKGhhc0NhbGxiYWNrICYmIHN1Y2NlZWRlZCkgewotICAgICAgICByZXNvbHZlKHBy
b21pc2UsIHZhbHVlKTsKLSAgICAgIH0gZWxzZSBpZiAoZmFpbGVkKSB7Ci0gICAgICAgIHJlamVj
dChwcm9taXNlLCBlcnJvcik7Ci0gICAgICB9IGVsc2UgaWYgKHNldHRsZWQgPT09IEZVTEZJTExF
RCkgewotICAgICAgICByZXNvbHZlKHByb21pc2UsIHZhbHVlKTsKLSAgICAgIH0gZWxzZSBpZiAo
c2V0dGxlZCA9PT0gUkVKRUNURUQpIHsKLSAgICAgICAgcmVqZWN0KHByb21pc2UsIHZhbHVlKTsK
LSAgICAgIH0KLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBoYW5kbGVUaGVuYWJsZShwcm9taXNlLCB2
YWx1ZSkgewotICAgICAgdmFyIHRoZW4gPSBudWxsLAotICAgICAgcmVzb2x2ZWQ7Ci0KLSAgICAg
IHRyeSB7Ci0gICAgICAgIGlmIChwcm9taXNlID09PSB2YWx1ZSkgewotICAgICAgICAgIHRocm93
IG5ldyBUeXBlRXJyb3IoIkEgcHJvbWlzZXMgY2FsbGJhY2sgY2Fubm90IHJldHVybiB0aGF0IHNh
bWUgcHJvbWlzZS4iKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChvYmplY3RPckZ1bmN0aW9u
KHZhbHVlKSkgewotICAgICAgICAgIHRoZW4gPSB2YWx1ZS50aGVuOwotCi0gICAgICAgICAgaWYg
KGlzRnVuY3Rpb24odGhlbikpIHsKLSAgICAgICAgICAgIHRoZW4uY2FsbCh2YWx1ZSwgZnVuY3Rp
b24odmFsKSB7Ci0gICAgICAgICAgICAgIGlmIChyZXNvbHZlZCkgeyByZXR1cm4gdHJ1ZTsgfQot
ICAgICAgICAgICAgICByZXNvbHZlZCA9IHRydWU7Ci0KLSAgICAgICAgICAgICAgaWYgKHZhbHVl
ICE9PSB2YWwpIHsKLSAgICAgICAgICAgICAgICByZXNvbHZlKHByb21pc2UsIHZhbCk7Ci0gICAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZnVsZmlsbChwcm9taXNlLCB2YWwp
OwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9LCBmdW5jdGlvbih2YWwpIHsKLSAgICAg
ICAgICAgICAgaWYgKHJlc29sdmVkKSB7IHJldHVybiB0cnVlOyB9Ci0gICAgICAgICAgICAgIHJl
c29sdmVkID0gdHJ1ZTsKLQotICAgICAgICAgICAgICByZWplY3QocHJvbWlzZSwgdmFsKTsKLSAg
ICAgICAgICAgIH0sICdkZXJpdmVkIGZyb206ICcgKyAocHJvbWlzZS5fbGFiZWwgfHwgJyB1bmtu
b3duIHByb21pc2UnKSk7Ci0KLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgICAgfSBjYXRjaCAoZXJyb3IpIHsKLSAgICAgICAgaWYgKHJlc29sdmVk
KSB7IHJldHVybiB0cnVlOyB9Ci0gICAgICAgIHJlamVjdChwcm9taXNlLCBlcnJvcik7Ci0gICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgfQotCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
Ci0gICAgZnVuY3Rpb24gcmVzb2x2ZShwcm9taXNlLCB2YWx1ZSkgewotICAgICAgaWYgKHByb21p
c2UgPT09IHZhbHVlKSB7Ci0gICAgICAgIGZ1bGZpbGwocHJvbWlzZSwgdmFsdWUpOwotICAgICAg
fSBlbHNlIGlmICghaGFuZGxlVGhlbmFibGUocHJvbWlzZSwgdmFsdWUpKSB7Ci0gICAgICAgIGZ1
bGZpbGwocHJvbWlzZSwgdmFsdWUpOwotICAgICAgfQotICAgIH0KLQotICAgIGZ1bmN0aW9uIGZ1
bGZpbGwocHJvbWlzZSwgdmFsdWUpIHsKLSAgICAgIGlmIChwcm9taXNlLl9zdGF0ZSAhPT0gUEVO
RElORykgeyByZXR1cm47IH0KLSAgICAgIHByb21pc2UuX3N0YXRlID0gU0VBTEVEOwotICAgICAg
cHJvbWlzZS5fZGV0YWlsID0gdmFsdWU7Ci0KLSAgICAgIGNvbmZpZy5hc3luYyhwdWJsaXNoRnVs
ZmlsbG1lbnQsIHByb21pc2UpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHJlamVjdChwcm9taXNl
LCByZWFzb24pIHsKLSAgICAgIGlmIChwcm9taXNlLl9zdGF0ZSAhPT0gUEVORElORykgeyByZXR1
cm47IH0KLSAgICAgIHByb21pc2UuX3N0YXRlID0gU0VBTEVEOwotICAgICAgcHJvbWlzZS5fZGV0
YWlsID0gcmVhc29uOwotCi0gICAgICBjb25maWcuYXN5bmMocHVibGlzaFJlamVjdGlvbiwgcHJv
bWlzZSk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gcHVibGlzaEZ1bGZpbGxtZW50KHByb21pc2Up
IHsKLSAgICAgIHB1Ymxpc2gocHJvbWlzZSwgcHJvbWlzZS5fc3RhdGUgPSBGVUxGSUxMRUQpOwot
ICAgIH0KLQotICAgIGZ1bmN0aW9uIHB1Ymxpc2hSZWplY3Rpb24ocHJvbWlzZSkgewotICAgICAg
aWYgKHByb21pc2UuX29uZXJyb3IpIHsKLSAgICAgICAgcHJvbWlzZS5fb25lcnJvcihwcm9taXNl
Ll9kZXRhaWwpOwotICAgICAgfQotCi0gICAgICBwdWJsaXNoKHByb21pc2UsIHByb21pc2UuX3N0
YXRlID0gUkVKRUNURUQpOwotICAgIH0KLSAgfSk7Ci1kZWZpbmUoInJzdnAvcHJvbWlzZS9hbGwi
LCAKLSAgWyIuLi91dGlscyIsImV4cG9ydHMiXSwKLSAgZnVuY3Rpb24oX19kZXBlbmRlbmN5MV9f
LCBfX2V4cG9ydHNfXykgewotICAgICJ1c2Ugc3RyaWN0IjsKLSAgICB2YXIgaXNBcnJheSA9IF9f
ZGVwZW5kZW5jeTFfXy5pc0FycmF5OwotICAgIHZhciBpc05vblRoZW5hYmxlID0gX19kZXBlbmRl
bmN5MV9fLmlzTm9uVGhlbmFibGU7Ci0KLSAgICAvKioKLSAgICAgIGBSU1ZQLlByb21pc2UuYWxs
YCBhY2NlcHRzIGFuIGFycmF5IG9mIHByb21pc2VzLCBhbmQgcmV0dXJucyBhIG5ldyBwcm9taXNl
IHdoaWNoCi0gICAgICBpcyBmdWxmaWxsZWQgd2l0aCBhbiBhcnJheSBvZiBmdWxmaWxsbWVudCB2
YWx1ZXMgZm9yIHRoZSBwYXNzZWQgcHJvbWlzZXMsIG9yCi0gICAgICByZWplY3RlZCB3aXRoIHRo
ZSByZWFzb24gb2YgdGhlIGZpcnN0IHBhc3NlZCBwcm9taXNlIHRvIGJlIHJlamVjdGVkLiBJdCBj
YXN0cyBhbGwKLSAgICAgIGVsZW1lbnRzIG9mIHRoZSBwYXNzZWQgaXRlcmFibGUgdG8gcHJvbWlz
ZXMgYXMgaXQgcnVucyB0aGlzIGFsZ29yaXRobS4KLQotICAgICAgRXhhbXBsZToKLQotICAgICAg
YGBgamF2YXNjcmlwdAotICAgICAgdmFyIHByb21pc2UxID0gUlNWUC5yZXNvbHZlKDEpOwotICAg
ICAgdmFyIHByb21pc2UyID0gUlNWUC5yZXNvbHZlKDIpOwotICAgICAgdmFyIHByb21pc2UzID0g
UlNWUC5yZXNvbHZlKDMpOwotICAgICAgdmFyIHByb21pc2VzID0gWyBwcm9taXNlMSwgcHJvbWlz
ZTIsIHByb21pc2UzIF07Ci0KLSAgICAgIFJTVlAuUHJvbWlzZS5hbGwocHJvbWlzZXMpLnRoZW4o
ZnVuY3Rpb24oYXJyYXkpewotICAgICAgICAvLyBUaGUgYXJyYXkgaGVyZSB3b3VsZCBiZSBbIDEs
IDIsIDMgXTsKLSAgICAgIH0pOwotICAgICAgYGBgCi0KLSAgICAgIElmIGFueSBvZiB0aGUgYHBy
b21pc2VzYCBnaXZlbiB0byBgUlNWUC5hbGxgIGFyZSByZWplY3RlZCwgdGhlIGZpcnN0IHByb21p
c2UKLSAgICAgIHRoYXQgaXMgcmVqZWN0ZWQgd2lsbCBiZSBnaXZlbiBhcyBhbiBhcmd1bWVudCB0
byB0aGUgcmV0dXJuZWQgcHJvbWlzZXMncwotICAgICAgcmVqZWN0aW9uIGhhbmRsZXIuIEZvciBl
eGFtcGxlOgotCi0gICAgICBFeGFtcGxlOgotCi0gICAgICBgYGBqYXZhc2NyaXB0Ci0gICAgICB2
YXIgcHJvbWlzZTEgPSBSU1ZQLnJlc29sdmUoMSk7Ci0gICAgICB2YXIgcHJvbWlzZTIgPSBSU1ZQ
LnJlamVjdChuZXcgRXJyb3IoIjIiKSk7Ci0gICAgICB2YXIgcHJvbWlzZTMgPSBSU1ZQLnJlamVj
dChuZXcgRXJyb3IoIjMiKSk7Ci0gICAgICB2YXIgcHJvbWlzZXMgPSBbIHByb21pc2UxLCBwcm9t
aXNlMiwgcHJvbWlzZTMgXTsKLQotICAgICAgUlNWUC5Qcm9taXNlLmFsbChwcm9taXNlcykudGhl
bihmdW5jdGlvbihhcnJheSl7Ci0gICAgICAgIC8vIENvZGUgaGVyZSBuZXZlciBydW5zIGJlY2F1
c2UgdGhlcmUgYXJlIHJlamVjdGVkIHByb21pc2VzIQotICAgICAgfSwgZnVuY3Rpb24oZXJyb3Ip
IHsKLSAgICAgICAgLy8gZXJyb3IubWVzc2FnZSA9PT0gIjIiCi0gICAgICB9KTsKLSAgICAgIGBg
YAotCi0gICAgICBAbWV0aG9kIGFsbAotICAgICAgQGZvciBSU1ZQLlByb21pc2UKLSAgICAgIEBw
YXJhbSB7QXJyYXl9IGVudHJpZXMgYXJyYXkgb2YgcHJvbWlzZXMKLSAgICAgIEBwYXJhbSB7U3Ry
aW5nfSBsYWJlbCBvcHRpb25hbCBzdHJpbmcgZm9yIGxhYmVsaW5nIHRoZSBwcm9taXNlLgotICAg
ICAgVXNlZnVsIGZvciB0b29saW5nLgotICAgICAgQHJldHVybiB7UHJvbWlzZX0gcHJvbWlzZSB0
aGF0IGlzIGZ1bGZpbGxlZCB3aGVuIGFsbCBgcHJvbWlzZXNgIGhhdmUgYmVlbgotICAgICAgZnVs
ZmlsbGVkLCBvciByZWplY3RlZCBpZiBhbnkgb2YgdGhlbSBiZWNvbWUgcmVqZWN0ZWQuCi0gICAg
ICBAc3RhdGljCi0gICAgKi8KLSAgICBfX2V4cG9ydHNfX1siZGVmYXVsdCJdID0gZnVuY3Rpb24g
YWxsKGVudHJpZXMsIGxhYmVsKSB7Ci0KLSAgICAgIC8qanNoaW50IHZhbGlkdGhpczp0cnVlICov
Ci0gICAgICB2YXIgQ29uc3RydWN0b3IgPSB0aGlzOwotCi0gICAgICByZXR1cm4gbmV3IENvbnN0
cnVjdG9yKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgewotICAgICAgICBpZiAoIWlzQXJyYXko
ZW50cmllcykpIHsKLSAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdZb3UgbXVzdCBwYXNz
IGFuIGFycmF5IHRvIGFsbC4nKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciByZW1haW5pbmcg
PSBlbnRyaWVzLmxlbmd0aDsKLSAgICAgICAgdmFyIHJlc3VsdHMgPSBuZXcgQXJyYXkocmVtYWlu
aW5nKTsKLSAgICAgICAgdmFyIGVudHJ5LCBwZW5kaW5nID0gdHJ1ZTsKLQotICAgICAgICBpZiAo
cmVtYWluaW5nID09PSAwKSB7Ci0gICAgICAgICAgcmVzb2x2ZShyZXN1bHRzKTsKLSAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBmdWxmaWxsbWVudEF0KGlu
ZGV4KSB7Ci0gICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHZhbHVlKSB7Ci0gICAgICAgICAgICBy
ZXN1bHRzW2luZGV4XSA9IHZhbHVlOwotICAgICAgICAgICAgaWYgKC0tcmVtYWluaW5nID09PSAw
KSB7Ci0gICAgICAgICAgICAgIHJlc29sdmUocmVzdWx0cyk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgfTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIG9uUmVqZWN0aW9uKHJlYXNv
bikgewotICAgICAgICAgIHJlbWFpbmluZyA9IDA7Ci0gICAgICAgICAgcmVqZWN0KHJlYXNvbik7
Ci0gICAgICAgIH0KLQotICAgICAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgZW50cmll
cy5sZW5ndGg7IGluZGV4KyspIHsKLSAgICAgICAgICBlbnRyeSA9IGVudHJpZXNbaW5kZXhdOwot
ICAgICAgICAgIGlmIChpc05vblRoZW5hYmxlKGVudHJ5KSkgewotICAgICAgICAgICAgcmVzdWx0
c1tpbmRleF0gPSBlbnRyeTsKLSAgICAgICAgICAgIGlmICgtLXJlbWFpbmluZyA9PT0gMCkgewot
ICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdHMpOwotICAgICAgICAgICAgfQotICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICBDb25zdHJ1Y3Rvci5jYXN0KGVudHJ5KS50aGVuKGZ1bGZp
bGxtZW50QXQoaW5kZXgpLCBvblJlamVjdGlvbik7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgICB9LCBsYWJlbCk7Ci0gICAgfTsKLSAgfSk7Ci1kZWZpbmUoInJzdnAvcHJvbWlzZS9jYXN0
IiwgCi0gIFsiZXhwb3J0cyJdLAotICBmdW5jdGlvbihfX2V4cG9ydHNfXykgewotICAgICJ1c2Ug
c3RyaWN0IjsKLSAgICAvKioKLSAgICAgIGBSU1ZQLlByb21pc2UuY2FzdGAgY29lcmNlcyBpdHMg
YXJndW1lbnQgdG8gYSBwcm9taXNlLCBvciByZXR1cm5zIHRoZQotICAgICAgYXJndW1lbnQgaWYg
aXQgaXMgYWxyZWFkeSBhIHByb21pc2Ugd2hpY2ggc2hhcmVzIGEgY29uc3RydWN0b3Igd2l0aCB0
aGUgY2FzdGVyLgotCi0gICAgICBFeGFtcGxlOgotCi0gICAgICBgYGBqYXZhc2NyaXB0Ci0gICAg
ICB2YXIgcHJvbWlzZSA9IFJTVlAuUHJvbWlzZS5yZXNvbHZlKDEpOwotICAgICAgdmFyIGNhc3Rl
ZCA9IFJTVlAuUHJvbWlzZS5jYXN0KHByb21pc2UpOwotCi0gICAgICBjb25zb2xlLmxvZyhwcm9t
aXNlID09PSBjYXN0ZWQpOyAvLyB0cnVlCi0gICAgICBgYGAKLQotICAgICAgSW4gdGhlIGNhc2Ug
b2YgYSBwcm9taXNlIHdob3NlIGNvbnN0cnVjdG9yIGRvZXMgbm90IG1hdGNoLCBpdCBpcyBhc3Np
bWlsYXRlZC4KLSAgICAgIFRoZSByZXN1bHRpbmcgcHJvbWlzZSB3aWxsIGZ1bGZpbGwgb3IgcmVq
ZWN0IGJhc2VkIG9uIHRoZSBvdXRjb21lIG9mIHRoZQotICAgICAgcHJvbWlzZSBiZWluZyBjYXN0
ZWQuCi0KLSAgICAgIEV4YW1wbGU6Ci0KLSAgICAgIGBgYGphdmFzY3JpcHQKLSAgICAgIHZhciB0
aGVubmFibGUgPSAkLmdldEpTT04oJy9hcGkvZm9vJyk7Ci0gICAgICB2YXIgY2FzdGVkID0gUlNW
UC5Qcm9taXNlLmNhc3QodGhlbm5hYmxlKTsKLQotICAgICAgY29uc29sZS5sb2codGhlbm5hYmxl
ID09PSBjYXN0ZWQpOyAvLyBmYWxzZQotICAgICAgY29uc29sZS5sb2coY2FzdGVkIGluc3RhbmNl
b2YgUlNWUC5Qcm9taXNlKSAvLyB0cnVlCi0KLSAgICAgIGNhc3RlZC50aGVuKGZ1bmN0aW9uKGRh
dGEpIHsKLSAgICAgICAgLy8gZGF0YSBpcyB0aGUgdmFsdWUgZ2V0SlNPTiBmdWxmaWxscyB3aXRo
Ci0gICAgICB9KTsKLSAgICAgIGBgYAotCi0gICAgICBJbiB0aGUgY2FzZSBvZiBhIG5vbi1wcm9t
aXNlLCBhIHByb21pc2Ugd2hpY2ggd2lsbCBmdWxmaWxsIHdpdGggdGhhdCB2YWx1ZSBpcwotICAg
ICAgcmV0dXJuZWQuCi0KLSAgICAgIEV4YW1wbGU6Ci0KLSAgICAgIGBgYGphdmFzY3JpcHQKLSAg
ICAgIHZhciB2YWx1ZSA9IDE7IC8vIGNvdWxkIGJlIGEgbnVtYmVyLCBib29sZWFuLCBzdHJpbmcs
IHVuZGVmaW5lZC4uLgotICAgICAgdmFyIGNhc3RlZCA9IFJTVlAuUHJvbWlzZS5jYXN0KHZhbHVl
KTsKLQotICAgICAgY29uc29sZS5sb2codmFsdWUgPT09IGNhc3RlZCk7IC8vIGZhbHNlCi0gICAg
ICBjb25zb2xlLmxvZyhjYXN0ZWQgaW5zdGFuY2VvZiBSU1ZQLlByb21pc2UpIC8vIHRydWUKLQot
ICAgICAgY2FzdGVkLnRoZW4oZnVuY3Rpb24odmFsKSB7Ci0gICAgICAgIHZhbCA9PT0gdmFsdWUg
Ly8gPT4gdHJ1ZQotICAgICAgfSk7Ci0gICAgICBgYGAKLQotICAgICAgYFJTVlAuUHJvbWlzZS5j
YXN0YCBpcyBzaW1pbGFyIHRvIGBSU1ZQLlByb21pc2UucmVzb2x2ZWAsIGJ1dCBgUlNWUC5Qcm9t
aXNlLmNhc3RgIGRpZmZlcnMgaW4gdGhlCi0gICAgICBmb2xsb3dpbmcgd2F5czoKLQotICAgICAg
KiBgUlNWUC5Qcm9taXNlLmNhc3RgIHNlcnZlcyBhcyBhIG1lbW9yeS1lZmZpY2llbnQgd2F5IG9m
IGdldHRpbmcgYSBwcm9taXNlLCB3aGVuIHlvdQotICAgICAgaGF2ZSBzb21ldGhpbmcgdGhhdCBj
b3VsZCBlaXRoZXIgYmUgYSBwcm9taXNlIG9yIGEgdmFsdWUuIFJTVlAucmVzb2x2ZQotICAgICAg
d2lsbCBoYXZlIHRoZSBzYW1lIGVmZmVjdCBidXQgd2lsbCBjcmVhdGUgYSBuZXcgcHJvbWlzZSB3
cmFwcGVyIGlmIHRoZQotICAgICAgYXJndW1lbnQgaXMgYSBwcm9taXNlLgotICAgICAgKiBgUlNW
UC5Qcm9taXNlLmNhc3RgIGlzIGEgd2F5IG9mIGNhc3RpbmcgaW5jb21pbmcgdGhlbmFibGVzIG9y
IHByb21pc2Ugc3ViY2xhc3NlcyB0bwotICAgICAgcHJvbWlzZXMgb2YgdGhlIGV4YWN0IGNsYXNz
IHNwZWNpZmllZCwgc28gdGhhdCB0aGUgcmVzdWx0aW5nIG9iamVjdCdzIGB0aGVuYCBpcwotICAg
ICAgZW5zdXJlZCB0byBoYXZlIHRoZSBiZWhhdmlvciBvZiB0aGUgY29uc3RydWN0b3IgeW91IGFy
ZSBjYWxsaW5nIGNhc3Qgb24gKGkuZS4sIFJTVlAuUHJvbWlzZSkuCi0KLSAgICAgIEBtZXRob2Qg
Y2FzdAotICAgICAgQHBhcmFtIHtPYmplY3R9IG9iamVjdCB0byBiZSBjYXN0ZWQKLSAgICAgIEBw
YXJhbSB7U3RyaW5nfSBsYWJlbCBvcHRpb25hbCBzdHJpbmcgZm9yIGxhYmVsaW5nIHRoZSBwcm9t
aXNlLgotICAgICAgVXNlZnVsIGZvciB0b29saW5nLgotICAgICAgQHJldHVybiB7UHJvbWlzZX0g
cHJvbWlzZQotICAgICAgQHN0YXRpYwotICAgICovCi0KLSAgICBfX2V4cG9ydHNfX1siZGVmYXVs
dCJdID0gZnVuY3Rpb24gY2FzdChvYmplY3QsIGxhYmVsKSB7Ci0gICAgICAvKmpzaGludCB2YWxp
ZHRoaXM6dHJ1ZSAqLwotICAgICAgdmFyIENvbnN0cnVjdG9yID0gdGhpczsKLQotICAgICAgaWYg
KG9iamVjdCAmJiB0eXBlb2Ygb2JqZWN0ID09PSAnb2JqZWN0JyAmJiBvYmplY3QuY29uc3RydWN0
b3IgPT09IENvbnN0cnVjdG9yKSB7Ci0gICAgICAgIHJldHVybiBvYmplY3Q7Ci0gICAgICB9Ci0K
LSAgICAgIHJldHVybiBuZXcgQ29uc3RydWN0b3IoZnVuY3Rpb24ocmVzb2x2ZSkgewotICAgICAg
ICByZXNvbHZlKG9iamVjdCk7Ci0gICAgICB9LCBsYWJlbCk7Ci0gICAgfTsKLSAgfSk7Ci1kZWZp
bmUoInJzdnAvcHJvbWlzZS9yYWNlIiwgCi0gIFsiLi4vdXRpbHMiLCJleHBvcnRzIl0sCi0gIGZ1
bmN0aW9uKF9fZGVwZW5kZW5jeTFfXywgX19leHBvcnRzX18pIHsKLSAgICAidXNlIHN0cmljdCI7
Ci0gICAgLyogZ2xvYmFsIHRvU3RyaW5nICovCi0KLSAgICB2YXIgaXNBcnJheSA9IF9fZGVwZW5k
ZW5jeTFfXy5pc0FycmF5OwotICAgIHZhciBpc0Z1bmN0aW9uID0gX19kZXBlbmRlbmN5MV9fLmlz
RnVuY3Rpb247Ci0gICAgdmFyIGlzTm9uVGhlbmFibGUgPSBfX2RlcGVuZGVuY3kxX18uaXNOb25U
aGVuYWJsZTsKLQotICAgIC8qKgotICAgICAgYFJTVlAuUHJvbWlzZS5yYWNlYCByZXR1cm5zIGEg
bmV3IHByb21pc2Ugd2hpY2ggaXMgc2V0dGxlZCBpbiB0aGUgc2FtZSB3YXkgYXMgdGhlCi0gICAg
ICBmaXJzdCBwYXNzZWQgcHJvbWlzZSB0byBzZXR0bGUuCi0KLSAgICAgIEV4YW1wbGU6Ci0KLSAg
ICAgIGBgYGphdmFzY3JpcHQKLSAgICAgIHZhciBwcm9taXNlMSA9IG5ldyBSU1ZQLlByb21pc2Uo
ZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KXsKLSAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigp
ewotICAgICAgICAgIHJlc29sdmUoInByb21pc2UgMSIpOwotICAgICAgICB9LCAyMDApOwotICAg
ICAgfSk7Ci0KLSAgICAgIHZhciBwcm9taXNlMiA9IG5ldyBSU1ZQLlByb21pc2UoZnVuY3Rpb24o
cmVzb2x2ZSwgcmVqZWN0KXsKLSAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpewotICAgICAg
ICAgIHJlc29sdmUoInByb21pc2UgMiIpOwotICAgICAgICB9LCAxMDApOwotICAgICAgfSk7Ci0K
LSAgICAgIFJTVlAuUHJvbWlzZS5yYWNlKFtwcm9taXNlMSwgcHJvbWlzZTJdKS50aGVuKGZ1bmN0
aW9uKHJlc3VsdCl7Ci0gICAgICAgIC8vIHJlc3VsdCA9PT0gInByb21pc2UgMiIgYmVjYXVzZSBp
dCB3YXMgcmVzb2x2ZWQgYmVmb3JlIHByb21pc2UxCi0gICAgICAgIC8vIHdhcyByZXNvbHZlZC4K
LSAgICAgIH0pOwotICAgICAgYGBgCi0KLSAgICAgIGBSU1ZQLlByb21pc2UucmFjZWAgaXMgZGV0
ZXJtaW5pc3RpYyBpbiB0aGF0IG9ubHkgdGhlIHN0YXRlIG9mIHRoZSBmaXJzdAotICAgICAgc2V0
dGxlZCBwcm9taXNlIG1hdHRlcnMuIEZvciBleGFtcGxlLCBldmVuIGlmIG90aGVyIHByb21pc2Vz
IGdpdmVuIHRvIHRoZQotICAgICAgYHByb21pc2VzYCBhcnJheSBhcmd1bWVudCBhcmUgcmVzb2x2
ZWQsIGJ1dCB0aGUgZmlyc3Qgc2V0dGxlZCBwcm9taXNlIGhhcwotICAgICAgYmVjb21lIHJlamVj
dGVkIGJlZm9yZSB0aGUgb3RoZXIgcHJvbWlzZXMgYmVjYW1lIGZ1bGZpbGxlZCwgdGhlIHJldHVy
bmVkCi0gICAgICBwcm9taXNlIHdpbGwgYmVjb21lIHJlamVjdGVkOgotCi0gICAgICBgYGBqYXZh
c2NyaXB0Ci0gICAgICB2YXIgcHJvbWlzZTEgPSBuZXcgUlNWUC5Qcm9taXNlKGZ1bmN0aW9uKHJl
c29sdmUsIHJlamVjdCl7Ci0gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXsKLSAgICAgICAg
ICByZXNvbHZlKCJwcm9taXNlIDEiKTsKLSAgICAgICAgfSwgMjAwKTsKLSAgICAgIH0pOwotCi0g
ICAgICB2YXIgcHJvbWlzZTIgPSBuZXcgUlNWUC5Qcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJl
amVjdCl7Ci0gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXsKLSAgICAgICAgICByZWplY3Qo
bmV3IEVycm9yKCJwcm9taXNlIDIiKSk7Ci0gICAgICAgIH0sIDEwMCk7Ci0gICAgICB9KTsKLQot
ICAgICAgUlNWUC5Qcm9taXNlLnJhY2UoW3Byb21pc2UxLCBwcm9taXNlMl0pLnRoZW4oZnVuY3Rp
b24ocmVzdWx0KXsKLSAgICAgICAgLy8gQ29kZSBoZXJlIG5ldmVyIHJ1bnMKLSAgICAgIH0sIGZ1
bmN0aW9uKHJlYXNvbil7Ci0gICAgICAgIC8vIHJlYXNvbi5tZXNzYWdlID09PSAicHJvbWlzZTIi
IGJlY2F1c2UgcHJvbWlzZSAyIGJlY2FtZSByZWplY3RlZCBiZWZvcmUKLSAgICAgICAgLy8gcHJv
bWlzZSAxIGJlY2FtZSBmdWxmaWxsZWQKLSAgICAgIH0pOwotICAgICAgYGBgCi0KLSAgICAgIEFu
IGV4YW1wbGUgcmVhbC13b3JsZCB1c2UgY2FzZSBpcyBpbXBsZW1lbnRpbmcgdGltZW91dHM6Ci0K
LSAgICAgIGBgYGphdmFzY3JpcHQKLSAgICAgIFJTVlAuUHJvbWlzZS5yYWNlKFthamF4KCdmb28u
anNvbicpLCB0aW1lb3V0KDUwMDApXSkKLSAgICAgIGBgYAotCi0gICAgICBAbWV0aG9kIHJhY2UK
LSAgICAgIEBwYXJhbSB7QXJyYXl9IHByb21pc2VzIGFycmF5IG9mIHByb21pc2VzIHRvIG9ic2Vy
dmUKLSAgICAgIEBwYXJhbSB7U3RyaW5nfSBsYWJlbCBvcHRpb25hbCBzdHJpbmcgZm9yIGRlc2Ny
aWJpbmcgdGhlIHByb21pc2UgcmV0dXJuZWQuCi0gICAgICBVc2VmdWwgZm9yIHRvb2xpbmcuCi0g
ICAgICBAcmV0dXJuIHtQcm9taXNlfSBhIHByb21pc2Ugd2hpY2ggc2V0dGxlcyBpbiB0aGUgc2Ft
ZSB3YXkgYXMgdGhlIGZpcnN0IHBhc3NlZAotICAgICAgcHJvbWlzZSB0byBzZXR0bGUuCi0gICAg
ICBAc3RhdGljCi0gICAgKi8KLSAgICBfX2V4cG9ydHNfX1siZGVmYXVsdCJdID0gZnVuY3Rpb24g
cmFjZShlbnRyaWVzLCBsYWJlbCkgewotICAgICAgLypqc2hpbnQgdmFsaWR0aGlzOnRydWUgKi8K
LSAgICAgIHZhciBDb25zdHJ1Y3RvciA9IHRoaXMsIGVudHJ5OwotCi0gICAgICByZXR1cm4gbmV3
IENvbnN0cnVjdG9yKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgewotICAgICAgICBpZiAoIWlz
QXJyYXkoZW50cmllcykpIHsKLSAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdZb3UgbXVz
dCBwYXNzIGFuIGFycmF5IHRvIHJhY2UuJyk7Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgcGVu
ZGluZyA9IHRydWU7Ci0KLSAgICAgICAgZnVuY3Rpb24gb25GdWxmaWxsbWVudCh2YWx1ZSkgeyBp
ZiAocGVuZGluZykgeyBwZW5kaW5nID0gZmFsc2U7IHJlc29sdmUodmFsdWUpOyB9IH0KLSAgICAg
ICAgZnVuY3Rpb24gb25SZWplY3Rpb24ocmVhc29uKSAgeyBpZiAocGVuZGluZykgeyBwZW5kaW5n
ID0gZmFsc2U7IHJlamVjdChyZWFzb24pOyB9IH0KLQotICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IGVudHJpZXMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICBlbnRyeSA9IGVudHJpZXNbaV07
Ci0gICAgICAgICAgaWYgKGlzTm9uVGhlbmFibGUoZW50cnkpKSB7Ci0gICAgICAgICAgICBwZW5k
aW5nID0gZmFsc2U7Ci0gICAgICAgICAgICByZXNvbHZlKGVudHJ5KTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgQ29uc3RydWN0b3IuY2FzdChl
bnRyeSkudGhlbihvbkZ1bGZpbGxtZW50LCBvblJlamVjdGlvbik7Ci0gICAgICAgICAgfQotICAg
ICAgICB9Ci0gICAgICB9LCBsYWJlbCk7Ci0gICAgfTsKLSAgfSk7Ci1kZWZpbmUoInJzdnAvcHJv
bWlzZS9yZWplY3QiLCAKLSAgWyJleHBvcnRzIl0sCi0gIGZ1bmN0aW9uKF9fZXhwb3J0c19fKSB7
Ci0gICAgInVzZSBzdHJpY3QiOwotICAgIC8qKgotICAgICAgYFJTVlAuUHJvbWlzZS5yZWplY3Rg
IHJldHVybnMgYSBwcm9taXNlIHJlamVjdGVkIHdpdGggdGhlIHBhc3NlZCBgcmVhc29uYC4KLSAg
ICAgIEl0IGlzIHNob3J0aGFuZCBmb3IgdGhlIGZvbGxvd2luZzoKLQotICAgICAgYGBgamF2YXNj
cmlwdAotICAgICAgdmFyIHByb21pc2UgPSBuZXcgUlNWUC5Qcm9taXNlKGZ1bmN0aW9uKHJlc29s
dmUsIHJlamVjdCl7Ci0gICAgICAgIHJlamVjdChuZXcgRXJyb3IoJ1dIT09QUycpKTsKLSAgICAg
IH0pOwotCi0gICAgICBwcm9taXNlLnRoZW4oZnVuY3Rpb24odmFsdWUpewotICAgICAgICAvLyBD
b2RlIGhlcmUgZG9lc24ndCBydW4gYmVjYXVzZSB0aGUgcHJvbWlzZSBpcyByZWplY3RlZCEKLSAg
ICAgIH0sIGZ1bmN0aW9uKHJlYXNvbil7Ci0gICAgICAgIC8vIHJlYXNvbi5tZXNzYWdlID09PSAn
V0hPT1BTJwotICAgICAgfSk7Ci0gICAgICBgYGAKLQotICAgICAgSW5zdGVhZCBvZiB3cml0aW5n
IHRoZSBhYm92ZSwgeW91ciBjb2RlIG5vdyBzaW1wbHkgYmVjb21lcyB0aGUgZm9sbG93aW5nOgot
Ci0gICAgICBgYGBqYXZhc2NyaXB0Ci0gICAgICB2YXIgcHJvbWlzZSA9IFJTVlAuUHJvbWlzZS5y
ZWplY3QobmV3IEVycm9yKCdXSE9PUFMnKSk7Ci0KLSAgICAgIHByb21pc2UudGhlbihmdW5jdGlv
bih2YWx1ZSl7Ci0gICAgICAgIC8vIENvZGUgaGVyZSBkb2Vzbid0IHJ1biBiZWNhdXNlIHRoZSBw
cm9taXNlIGlzIHJlamVjdGVkIQotICAgICAgfSwgZnVuY3Rpb24ocmVhc29uKXsKLSAgICAgICAg
Ly8gcmVhc29uLm1lc3NhZ2UgPT09ICdXSE9PUFMnCi0gICAgICB9KTsKLSAgICAgIGBgYAotCi0g
ICAgICBAbWV0aG9kIHJlamVjdAotICAgICAgQHBhcmFtIHtBbnl9IHJlYXNvbiB2YWx1ZSB0aGF0
IHRoZSByZXR1cm5lZCBwcm9taXNlIHdpbGwgYmUgcmVqZWN0ZWQgd2l0aC4KLSAgICAgIEBwYXJh
bSB7U3RyaW5nfSBsYWJlbCBvcHRpb25hbCBzdHJpbmcgZm9yIGlkZW50aWZ5aW5nIHRoZSByZXR1
cm5lZCBwcm9taXNlLgotICAgICAgVXNlZnVsIGZvciB0b29saW5nLgotICAgICAgQHJldHVybiB7
UHJvbWlzZX0gYSBwcm9taXNlIHJlamVjdGVkIHdpdGggdGhlIGdpdmVuIGByZWFzb25gLgotICAg
ICAgQHN0YXRpYwotICAgICovCi0gICAgX19leHBvcnRzX19bImRlZmF1bHQiXSA9IGZ1bmN0aW9u
IHJlamVjdChyZWFzb24sIGxhYmVsKSB7Ci0gICAgICAvKmpzaGludCB2YWxpZHRoaXM6dHJ1ZSAq
LwotICAgICAgdmFyIENvbnN0cnVjdG9yID0gdGhpczsKLQotICAgICAgcmV0dXJuIG5ldyBDb25z
dHJ1Y3RvcihmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAgIHJlamVjdChyZWFz
b24pOwotICAgICAgfSwgbGFiZWwpOwotICAgIH07Ci0gIH0pOwotZGVmaW5lKCJyc3ZwL3Byb21p
c2UvcmVzb2x2ZSIsIAotICBbImV4cG9ydHMiXSwKLSAgZnVuY3Rpb24oX19leHBvcnRzX18pIHsK
LSAgICAidXNlIHN0cmljdCI7Ci0gICAgLyoqCi0gICAgICBgUlNWUC5Qcm9taXNlLnJlc29sdmVg
IHJldHVybnMgYSBwcm9taXNlIHRoYXQgd2lsbCBiZWNvbWUgcmVzb2x2ZWQgd2l0aCB0aGUKLSAg
ICAgIHBhc3NlZCBgdmFsdWVgLiBJdCBpcyBzaG9ydGhhbmQgZm9yIHRoZSBmb2xsb3dpbmc6Ci0K
LSAgICAgIGBgYGphdmFzY3JpcHQKLSAgICAgIHZhciBwcm9taXNlID0gbmV3IFJTVlAuUHJvbWlz
ZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpewotICAgICAgICByZXNvbHZlKDEpOwotICAgICAg
fSk7Ci0KLSAgICAgIHByb21pc2UudGhlbihmdW5jdGlvbih2YWx1ZSl7Ci0gICAgICAgIC8vIHZh
bHVlID09PSAxCi0gICAgICB9KTsKLSAgICAgIGBgYAotCi0gICAgICBJbnN0ZWFkIG9mIHdyaXRp
bmcgdGhlIGFib3ZlLCB5b3VyIGNvZGUgbm93IHNpbXBseSBiZWNvbWVzIHRoZSBmb2xsb3dpbmc6
Ci0KLSAgICAgIGBgYGphdmFzY3JpcHQKLSAgICAgIHZhciBwcm9taXNlID0gUlNWUC5Qcm9taXNl
LnJlc29sdmUoMSk7Ci0KLSAgICAgIHByb21pc2UudGhlbihmdW5jdGlvbih2YWx1ZSl7Ci0gICAg
ICAgIC8vIHZhbHVlID09PSAxCi0gICAgICB9KTsKLSAgICAgIGBgYAotCi0gICAgICBAbWV0aG9k
IHJlc29sdmUKLSAgICAgIEBwYXJhbSB7QW55fSB2YWx1ZSB2YWx1ZSB0aGF0IHRoZSByZXR1cm5l
ZCBwcm9taXNlIHdpbGwgYmUgcmVzb2x2ZWQgd2l0aAotICAgICAgQHBhcmFtIHtTdHJpbmd9IGxh
YmVsIG9wdGlvbmFsIHN0cmluZyBmb3IgaWRlbnRpZnlpbmcgdGhlIHJldHVybmVkIHByb21pc2Uu
Ci0gICAgICBVc2VmdWwgZm9yIHRvb2xpbmcuCi0gICAgICBAcmV0dXJuIHtQcm9taXNlfSBhIHBy
b21pc2UgdGhhdCB3aWxsIGJlY29tZSBmdWxmaWxsZWQgd2l0aCB0aGUgZ2l2ZW4KLSAgICAgIGB2
YWx1ZWAKLSAgICAgIEBzdGF0aWMKLSAgICAqLwotICAgIF9fZXhwb3J0c19fWyJkZWZhdWx0Il0g
PSBmdW5jdGlvbiByZXNvbHZlKHZhbHVlLCBsYWJlbCkgewotICAgICAgLypqc2hpbnQgdmFsaWR0
aGlzOnRydWUgKi8KLSAgICAgIHZhciBDb25zdHJ1Y3RvciA9IHRoaXM7Ci0KLSAgICAgIHJldHVy
biBuZXcgQ29uc3RydWN0b3IoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAgIHJl
c29sdmUodmFsdWUpOwotICAgICAgfSwgbGFiZWwpOwotICAgIH07Ci0gIH0pOwotZGVmaW5lKCJy
c3ZwL3JhY2UiLCAKLSAgWyIuL3Byb21pc2UiLCJleHBvcnRzIl0sCi0gIGZ1bmN0aW9uKF9fZGVw
ZW5kZW5jeTFfXywgX19leHBvcnRzX18pIHsKLSAgICAidXNlIHN0cmljdCI7Ci0gICAgdmFyIFBy
b21pc2UgPSBfX2RlcGVuZGVuY3kxX19bImRlZmF1bHQiXTsKLQotICAgIC8qKgotICAgICAgVGhp
cyBpcyBhIGNvbnZlbmllbnQgYWxpYXMgZm9yIGBSU1ZQLlByb21pc2UucmFjZWAuCi0KLSAgICAg
IEBtZXRob2QgcmFjZQotICAgICAgQHBhcmFtIHtBcnJheX0gYXJyYXkgQXJyYXkgb2YgcHJvbWlz
ZXMuCi0gICAgICBAcGFyYW0ge1N0cmluZ30gbGFiZWwgQW4gb3B0aW9uYWwgbGFiZWwuIFRoaXMg
aXMgdXNlZnVsCi0gICAgICBmb3IgdG9vbGluZy4KLSAgICAgIEBzdGF0aWMKLSAgICAqLwotICAg
IF9fZXhwb3J0c19fWyJkZWZhdWx0Il0gPSBmdW5jdGlvbiByYWNlKGFycmF5LCBsYWJlbCkgewot
ICAgICAgcmV0dXJuIFByb21pc2UucmFjZShhcnJheSwgbGFiZWwpOwotICAgIH07Ci0gIH0pOwot
ZGVmaW5lKCJyc3ZwL3JlamVjdCIsIAotICBbIi4vcHJvbWlzZSIsImV4cG9ydHMiXSwKLSAgZnVu
Y3Rpb24oX19kZXBlbmRlbmN5MV9fLCBfX2V4cG9ydHNfXykgewotICAgICJ1c2Ugc3RyaWN0IjsK
LSAgICB2YXIgUHJvbWlzZSA9IF9fZGVwZW5kZW5jeTFfX1siZGVmYXVsdCJdOwotCi0gICAgLyoq
Ci0gICAgICBUaGlzIGlzIGEgY29udmVuaWVudCBhbGlhcyBmb3IgYFJTVlAuUHJvbWlzZS5yZWpl
Y3RgLgotCi0gICAgICBAbWV0aG9kIHJlamVjdAotICAgICAgQGZvciBSU1ZQCi0gICAgICBAcGFy
YW0ge0FueX0gcmVhc29uIHZhbHVlIHRoYXQgdGhlIHJldHVybmVkIHByb21pc2Ugd2lsbCBiZSBy
ZWplY3RlZCB3aXRoLgotICAgICAgQHBhcmFtIHtTdHJpbmd9IGxhYmVsIG9wdGlvbmFsIHN0cmlu
ZyBmb3IgaWRlbnRpZnlpbmcgdGhlIHJldHVybmVkIHByb21pc2UuCi0gICAgICBVc2VmdWwgZm9y
IHRvb2xpbmcuCi0gICAgICBAcmV0dXJuIHtQcm9taXNlfSBhIHByb21pc2UgcmVqZWN0ZWQgd2l0
aCB0aGUgZ2l2ZW4gYHJlYXNvbmAuCi0gICAgICBAc3RhdGljCi0gICAgKi8KLSAgICBfX2V4cG9y
dHNfX1siZGVmYXVsdCJdID0gZnVuY3Rpb24gcmVqZWN0KHJlYXNvbiwgbGFiZWwpIHsKLSAgICAg
IHJldHVybiBQcm9taXNlLnJlamVjdChyZWFzb24sIGxhYmVsKTsKLSAgICB9OwotICB9KTsKLWRl
ZmluZSgicnN2cC9yZXNvbHZlIiwgCi0gIFsiLi9wcm9taXNlIiwiZXhwb3J0cyJdLAotICBmdW5j
dGlvbihfX2RlcGVuZGVuY3kxX18sIF9fZXhwb3J0c19fKSB7Ci0gICAgInVzZSBzdHJpY3QiOwot
ICAgIHZhciBQcm9taXNlID0gX19kZXBlbmRlbmN5MV9fWyJkZWZhdWx0Il07Ci0KLSAgICAvKioK
LSAgICAgIFRoaXMgaXMgYSBjb252ZW5pZW50IGFsaWFzIGZvciBgUlNWUC5Qcm9taXNlLnJlc29s
dmVgLgotCi0gICAgICBAbWV0aG9kIHJlc29sdmUKLSAgICAgIEBmb3IgUlNWUAotICAgICAgQHBh
cmFtIHtBbnl9IHZhbHVlIHZhbHVlIHRoYXQgdGhlIHJldHVybmVkIHByb21pc2Ugd2lsbCBiZSBy
ZXNvbHZlZCB3aXRoCi0gICAgICBAcGFyYW0ge1N0cmluZ30gbGFiZWwgb3B0aW9uYWwgc3RyaW5n
IGZvciBpZGVudGlmeWluZyB0aGUgcmV0dXJuZWQgcHJvbWlzZS4KLSAgICAgIFVzZWZ1bCBmb3Ig
dG9vbGluZy4KLSAgICAgIEByZXR1cm4ge1Byb21pc2V9IGEgcHJvbWlzZSB0aGF0IHdpbGwgYmVj
b21lIGZ1bGZpbGxlZCB3aXRoIHRoZSBnaXZlbgotICAgICAgYHZhbHVlYAotICAgICAgQHN0YXRp
YwotICAgICovCi0gICAgX19leHBvcnRzX19bImRlZmF1bHQiXSA9IGZ1bmN0aW9uIHJlc29sdmUo
dmFsdWUsIGxhYmVsKSB7Ci0gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHZhbHVlLCBsYWJl
bCk7Ci0gICAgfTsKLSAgfSk7Ci1kZWZpbmUoInJzdnAvcmV0aHJvdyIsIAotICBbImV4cG9ydHMi
XSwKLSAgZnVuY3Rpb24oX19leHBvcnRzX18pIHsKLSAgICAidXNlIHN0cmljdCI7Ci0gICAgLyoq
Ci0gICAgICBgUlNWUC5yZXRocm93YCB3aWxsIHJldGhyb3cgYW4gZXJyb3Igb24gdGhlIG5leHQg
dHVybiBvZiB0aGUgSmF2YVNjcmlwdCBldmVudAotICAgICAgbG9vcCBpbiBvcmRlciB0byBhaWQg
ZGVidWdnaW5nLgotCi0gICAgICBQcm9taXNlcyBBKyBzcGVjaWZpZXMgdGhhdCBhbnkgZXhjZXB0
aW9ucyB0aGF0IG9jY3VyIHdpdGggYSBwcm9taXNlIG11c3QgYmUKLSAgICAgIGNhdWdodCBieSB0
aGUgcHJvbWlzZXMgaW1wbGVtZW50YXRpb24gYW5kIGJ1YmJsZWQgdG8gdGhlIGxhc3QgaGFuZGxl
ci4gRm9yCi0gICAgICB0aGlzIHJlYXNvbiwgaXQgaXMgcmVjb21tZW5kZWQgdGhhdCB5b3UgYWx3
YXlzIHNwZWNpZnkgYSBzZWNvbmQgcmVqZWN0aW9uCi0gICAgICBoYW5kbGVyIGZ1bmN0aW9uIHRv
IGB0aGVuYC4gSG93ZXZlciwgYFJTVlAucmV0aHJvd2Agd2lsbCB0aHJvdyB0aGUgZXhjZXB0aW9u
Ci0gICAgICBvdXRzaWRlIG9mIHRoZSBwcm9taXNlLCBzbyBpdCBidWJibGVzIHVwIHRvIHlvdXIg
Y29uc29sZSBpZiBpbiB0aGUgYnJvd3NlciwKLSAgICAgIG9yIGRvbWFpbi9jYXVzZSB1bmNhdWdo
dCBleGNlcHRpb24gaW4gTm9kZS4gYHJldGhyb3dgIHdpbGwgYWxzbyB0aHJvdyB0aGUKLSAgICAg
IGVycm9yIGFnYWluIHNvIHRoZSBlcnJvciBjYW4gYmUgaGFuZGxlZCBieSB0aGUgcHJvbWlzZSBw
ZXIgdGhlIHNwZWMuCi0KLSAgICAgIGBgYGphdmFzY3JpcHQKLSAgICAgIGZ1bmN0aW9uIHRocm93
cygpewotICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1dob29wcyEnKTsKLSAgICAgIH0KLQotICAg
ICAgdmFyIHByb21pc2UgPSBuZXcgUlNWUC5Qcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVj
dCl7Ci0gICAgICAgIHRocm93cygpOwotICAgICAgfSk7Ci0KLSAgICAgIHByb21pc2UuY2F0Y2go
UlNWUC5yZXRocm93KS50aGVuKGZ1bmN0aW9uKCl7Ci0gICAgICAgIC8vIENvZGUgaGVyZSBkb2Vz
bid0IHJ1biBiZWNhdXNlIHRoZSBwcm9taXNlIGJlY2FtZSByZWplY3RlZCBkdWUgdG8gYW4KLSAg
ICAgICAgLy8gZXJyb3IhCi0gICAgICB9LCBmdW5jdGlvbiAoZXJyKXsKLSAgICAgICAgLy8gaGFu
ZGxlIHRoZSBlcnJvciBoZXJlCi0gICAgICB9KTsKLSAgICAgIGBgYAotCi0gICAgICBUaGUgJ1do
b29wcycgZXJyb3Igd2lsbCBiZSB0aHJvd24gb24gdGhlIG5leHQgdHVybiBvZiB0aGUgZXZlbnQg
bG9vcAotICAgICAgYW5kIHlvdSBjYW4gd2F0Y2ggZm9yIGl0IGluIHlvdXIgY29uc29sZS4gWW91
IGNhbiBhbHNvIGhhbmRsZSBpdCB1c2luZyBhCi0gICAgICByZWplY3Rpb24gaGFuZGxlciBnaXZl
biB0byBgLnRoZW5gIG9yIGAuY2F0Y2hgIG9uIHRoZSByZXR1cm5lZCBwcm9taXNlLgotCi0gICAg
ICBAbWV0aG9kIHJldGhyb3cKLSAgICAgIEBmb3IgUlNWUAotICAgICAgQHBhcmFtIHtFcnJvcn0g
cmVhc29uIHJlYXNvbiB0aGUgcHJvbWlzZSBiZWNhbWUgcmVqZWN0ZWQuCi0gICAgICBAdGhyb3dz
IEVycm9yCi0gICAgICBAc3RhdGljCi0gICAgKi8KLSAgICBfX2V4cG9ydHNfX1siZGVmYXVsdCJd
ID0gZnVuY3Rpb24gcmV0aHJvdyhyZWFzb24pIHsKLSAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7Ci0gICAgICAgIHRocm93IHJlYXNvbjsKLSAgICAgIH0pOwotICAgICAgdGhyb3cgcmVhc29u
OwotICAgIH07Ci0gIH0pOwotZGVmaW5lKCJyc3ZwL3V0aWxzIiwgCi0gIFsiZXhwb3J0cyJdLAot
ICBmdW5jdGlvbihfX2V4cG9ydHNfXykgewotICAgICJ1c2Ugc3RyaWN0IjsKLSAgICBmdW5jdGlv
biBvYmplY3RPckZ1bmN0aW9uKHgpIHsKLSAgICAgIHJldHVybiB0eXBlb2YgeCA9PT0gImZ1bmN0
aW9uIiB8fCAodHlwZW9mIHggPT09ICJvYmplY3QiICYmIHggIT09IG51bGwpOwotICAgIH0KLQot
ICAgIF9fZXhwb3J0c19fLm9iamVjdE9yRnVuY3Rpb24gPSBvYmplY3RPckZ1bmN0aW9uO2Z1bmN0
aW9uIGlzRnVuY3Rpb24oeCkgewotICAgICAgcmV0dXJuIHR5cGVvZiB4ID09PSAiZnVuY3Rpb24i
OwotICAgIH0KLQotICAgIF9fZXhwb3J0c19fLmlzRnVuY3Rpb24gPSBpc0Z1bmN0aW9uO2Z1bmN0
aW9uIGlzTm9uVGhlbmFibGUoeCkgewotICAgICAgcmV0dXJuICFvYmplY3RPckZ1bmN0aW9uKHgp
OwotICAgIH0KLQotICAgIF9fZXhwb3J0c19fLmlzTm9uVGhlbmFibGUgPSBpc05vblRoZW5hYmxl
O2Z1bmN0aW9uIGlzQXJyYXkoeCkgewotICAgICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9T
dHJpbmcuY2FsbCh4KSA9PT0gIltvYmplY3QgQXJyYXldIjsKLSAgICB9Ci0KLSAgICBfX2V4cG9y
dHNfXy5pc0FycmF5ID0gaXNBcnJheTsvLyBEYXRlLm5vdyBpcyBub3QgYXZhaWxhYmxlIGluIGJy
b3dzZXJzIDwgSUU5Ci0gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMv
ZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvRGF0ZS9ub3cjQ29t
cGF0aWJpbGl0eQotICAgIHZhciBub3cgPSBEYXRlLm5vdyB8fCBmdW5jdGlvbigpIHsgcmV0dXJu
IG5ldyBEYXRlKCkuZ2V0VGltZSgpOyB9OwotICAgIF9fZXhwb3J0c19fLm5vdyA9IG5vdzsKLSAg
ICB2YXIga2V5c09mID0gT2JqZWN0LmtleXMgfHwgZnVuY3Rpb24ob2JqZWN0KSB7Ci0gICAgICB2
YXIgcmVzdWx0ID0gW107Ci0KLSAgICAgIGZvciAodmFyIHByb3AgaW4gb2JqZWN0KSB7Ci0gICAg
ICAgIHJlc3VsdC5wdXNoKHByb3ApOwotICAgICAgfQotCi0gICAgICByZXR1cm4gcmVzdWx0Owot
ICAgIH07Ci0gICAgX19leHBvcnRzX18ua2V5c09mID0ga2V5c09mOwotICB9KTsKLWRlZmluZSgi
cnN2cCIsIAotICBbIi4vcnN2cC9wcm9taXNlIiwiLi9yc3ZwL2V2ZW50cyIsIi4vcnN2cC9ub2Rl
IiwiLi9yc3ZwL2FsbCIsIi4vcnN2cC9hbGxfc2V0dGxlZCIsIi4vcnN2cC9yYWNlIiwiLi9yc3Zw
L2hhc2giLCIuL3JzdnAvcmV0aHJvdyIsIi4vcnN2cC9kZWZlciIsIi4vcnN2cC9jb25maWciLCIu
L3JzdnAvbWFwIiwiLi9yc3ZwL3Jlc29sdmUiLCIuL3JzdnAvcmVqZWN0IiwiLi9yc3ZwL2ZpbHRl
ciIsImV4cG9ydHMiXSwKLSAgZnVuY3Rpb24oX19kZXBlbmRlbmN5MV9fLCBfX2RlcGVuZGVuY3ky
X18sIF9fZGVwZW5kZW5jeTNfXywgX19kZXBlbmRlbmN5NF9fLCBfX2RlcGVuZGVuY3k1X18sIF9f
ZGVwZW5kZW5jeTZfXywgX19kZXBlbmRlbmN5N19fLCBfX2RlcGVuZGVuY3k4X18sIF9fZGVwZW5k
ZW5jeTlfXywgX19kZXBlbmRlbmN5MTBfXywgX19kZXBlbmRlbmN5MTFfXywgX19kZXBlbmRlbmN5
MTJfXywgX19kZXBlbmRlbmN5MTNfXywgX19kZXBlbmRlbmN5MTRfXywgX19leHBvcnRzX18pIHsK
LSAgICAidXNlIHN0cmljdCI7Ci0gICAgdmFyIFByb21pc2UgPSBfX2RlcGVuZGVuY3kxX19bImRl
ZmF1bHQiXTsKLSAgICB2YXIgRXZlbnRUYXJnZXQgPSBfX2RlcGVuZGVuY3kyX19bImRlZmF1bHQi
XTsKLSAgICB2YXIgZGVub2RlaWZ5ID0gX19kZXBlbmRlbmN5M19fWyJkZWZhdWx0Il07Ci0gICAg
dmFyIGFsbCA9IF9fZGVwZW5kZW5jeTRfX1siZGVmYXVsdCJdOwotICAgIHZhciBhbGxTZXR0bGVk
ID0gX19kZXBlbmRlbmN5NV9fWyJkZWZhdWx0Il07Ci0gICAgdmFyIHJhY2UgPSBfX2RlcGVuZGVu
Y3k2X19bImRlZmF1bHQiXTsKLSAgICB2YXIgaGFzaCA9IF9fZGVwZW5kZW5jeTdfX1siZGVmYXVs
dCJdOwotICAgIHZhciByZXRocm93ID0gX19kZXBlbmRlbmN5OF9fWyJkZWZhdWx0Il07Ci0gICAg
dmFyIGRlZmVyID0gX19kZXBlbmRlbmN5OV9fWyJkZWZhdWx0Il07Ci0gICAgdmFyIGNvbmZpZyA9
IF9fZGVwZW5kZW5jeTEwX18uY29uZmlnOwotICAgIHZhciBjb25maWd1cmUgPSBfX2RlcGVuZGVu
Y3kxMF9fLmNvbmZpZ3VyZTsKLSAgICB2YXIgbWFwID0gX19kZXBlbmRlbmN5MTFfX1siZGVmYXVs
dCJdOwotICAgIHZhciByZXNvbHZlID0gX19kZXBlbmRlbmN5MTJfX1siZGVmYXVsdCJdOwotICAg
IHZhciByZWplY3QgPSBfX2RlcGVuZGVuY3kxM19fWyJkZWZhdWx0Il07Ci0gICAgdmFyIGZpbHRl
ciA9IF9fZGVwZW5kZW5jeTE0X19bImRlZmF1bHQiXTsKLQotICAgIGZ1bmN0aW9uIGFzeW5jKGNh
bGxiYWNrLCBhcmcpIHsKLSAgICAgIGNvbmZpZy5hc3luYyhjYWxsYmFjaywgYXJnKTsKLSAgICB9
Ci0KLSAgICBmdW5jdGlvbiBvbigpIHsKLSAgICAgIGNvbmZpZy5vbi5hcHBseShjb25maWcsIGFy
Z3VtZW50cyk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gb2ZmKCkgewotICAgICAgY29uZmlnLm9m
Zi5hcHBseShjb25maWcsIGFyZ3VtZW50cyk7Ci0gICAgfQotCi0gICAgLy8gU2V0IHVwIGluc3Ry
dW1lbnRhdGlvbiB0aHJvdWdoIGB3aW5kb3cuX19QUk9NSVNFX0lOVFJVTUVOVEFUSU9OX19gCi0g
ICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiB3aW5kb3cuX19Q
Uk9NSVNFX0lOU1RSVU1FTlRBVElPTl9fID09PSAnb2JqZWN0JykgewotICAgICAgdmFyIGNhbGxi
YWNrcyA9IHdpbmRvdy5fX1BST01JU0VfSU5TVFJVTUVOVEFUSU9OX187Ci0gICAgICBjb25maWd1
cmUoJ2luc3RydW1lbnQnLCB0cnVlKTsKLSAgICAgIGZvciAodmFyIGV2ZW50TmFtZSBpbiBjYWxs
YmFja3MpIHsKLSAgICAgICAgaWYgKGNhbGxiYWNrcy5oYXNPd25Qcm9wZXJ0eShldmVudE5hbWUp
KSB7Ci0gICAgICAgICAgb24oZXZlbnROYW1lLCBjYWxsYmFja3NbZXZlbnROYW1lXSk7Ci0gICAg
ICAgIH0KLSAgICAgIH0KLSAgICB9Ci0KLSAgICBfX2V4cG9ydHNfXy5Qcm9taXNlID0gUHJvbWlz
ZTsKLSAgICBfX2V4cG9ydHNfXy5FdmVudFRhcmdldCA9IEV2ZW50VGFyZ2V0OwotICAgIF9fZXhw
b3J0c19fLmFsbCA9IGFsbDsKLSAgICBfX2V4cG9ydHNfXy5hbGxTZXR0bGVkID0gYWxsU2V0dGxl
ZDsKLSAgICBfX2V4cG9ydHNfXy5yYWNlID0gcmFjZTsKLSAgICBfX2V4cG9ydHNfXy5oYXNoID0g
aGFzaDsKLSAgICBfX2V4cG9ydHNfXy5yZXRocm93ID0gcmV0aHJvdzsKLSAgICBfX2V4cG9ydHNf
Xy5kZWZlciA9IGRlZmVyOwotICAgIF9fZXhwb3J0c19fLmRlbm9kZWlmeSA9IGRlbm9kZWlmeTsK
LSAgICBfX2V4cG9ydHNfXy5jb25maWd1cmUgPSBjb25maWd1cmU7Ci0gICAgX19leHBvcnRzX18u
b24gPSBvbjsKLSAgICBfX2V4cG9ydHNfXy5vZmYgPSBvZmY7Ci0gICAgX19leHBvcnRzX18ucmVz
b2x2ZSA9IHJlc29sdmU7Ci0gICAgX19leHBvcnRzX18ucmVqZWN0ID0gcmVqZWN0OwotICAgIF9f
ZXhwb3J0c19fLmFzeW5jID0gYXN5bmM7Ci0gICAgX19leHBvcnRzX18ubWFwID0gbWFwOwotICAg
IF9fZXhwb3J0c19fLmZpbHRlciA9IGZpbHRlcjsKLSAgfSk7Ci0KLX0pKCk7Ci0KLShmdW5jdGlv
bigpIHsKLS8qKgotUHVibGljIGFwaSBmb3IgdGhlIGNvbnRhaW5lciBpcyBzdGlsbCBpbiBmbHV4
LgotVGhlIHB1YmxpYyBhcGksIHNwZWNpZmllZCBvbiB0aGUgYXBwbGljYXRpb24gbmFtZXNwYWNl
IHNob3VsZCBiZSBjb25zaWRlcmVkIHRoZSBzdGFibGUgYXBpLgotLy8gQG1vZHVsZSBjb250YWlu
ZXIKLSAgQHByaXZhdGUKLSovCi0KLS8qCi0gRmxhZyB0byBlbmFibGUvZGlzYWJsZSBtb2RlbCBm
YWN0b3J5IGluamVjdGlvbnMgKGRpc2FibGVkIGJ5IGRlZmF1bHQpCi0gSWYgbW9kZWwgZmFjdG9y
eSBpbmplY3Rpb25zIGFyZSBlbmFibGVkLCBtb2RlbHMgc2hvdWxkIG5vdCBiZQotIGFjY2Vzc2Vk
IGdsb2JhbGx5IChvbmx5IHRocm91Z2ggYGNvbnRhaW5lci5sb29rdXBGYWN0b3J5KCdtb2RlbDpt
b2RlbE5hbWUnKSlgKTsKLSovCi1FbWJlci5NT0RFTF9GQUNUT1JZX0lOSkVDVElPTlMgPSBmYWxz
ZSB8fCAhIUVtYmVyLkVOVi5NT0RFTF9GQUNUT1JZX0lOSkVDVElPTlM7Ci0KLWRlZmluZSgiY29u
dGFpbmVyIiwKLSAgW10sCi0gIGZ1bmN0aW9uKCkgewotCi0gICAgLy8gQSBzYWZlIGFuZCBzaW1w
bGUgaW5oZXJpdGluZyBvYmplY3QuCi0gICAgZnVuY3Rpb24gSW5oZXJpdGluZ0RpY3QocGFyZW50
KSB7Ci0gICAgICB0aGlzLnBhcmVudCA9IHBhcmVudDsKLSAgICAgIHRoaXMuZGljdCA9IHt9Owot
ICAgIH0KLQotICAgIEluaGVyaXRpbmdEaWN0LnByb3RvdHlwZSA9IHsKLQotICAgICAgLyoqCi0g
ICAgICAgIEBwcm9wZXJ0eSBwYXJlbnQKLSAgICAgICAgQHR5cGUgSW5oZXJpdGluZ0RpY3QKLSAg
ICAgICAgQGRlZmF1bHQgbnVsbAotICAgICAgKi8KLQotICAgICAgcGFyZW50OiBudWxsLAotCi0g
ICAgICAvKioKLSAgICAgICAgT2JqZWN0IHVzZWQgdG8gc3RvcmUgdGhlIGN1cnJlbnQgbm9kZXMg
ZGF0YS4KLQotICAgICAgICBAcHJvcGVydHkgZGljdAotICAgICAgICBAdHlwZSBPYmplY3QKLSAg
ICAgICAgQGRlZmF1bHQgT2JqZWN0Ci0gICAgICAqLwotICAgICAgZGljdDogbnVsbCwKLQotICAg
ICAgLyoqCi0gICAgICAgIFJldHJpZXZlIHRoZSB2YWx1ZSBnaXZlbiBhIGtleSwgaWYgdGhlIHZh
bHVlIGlzIHByZXNlbnQgYXQgdGhlIGN1cnJlbnQKLSAgICAgICAgbGV2ZWwgdXNlIGl0LCBvdGhl
cndpc2Ugd2FsayB1cCB0aGUgcGFyZW50IGhpZXJhcmNoeSBhbmQgdHJ5IGFnYWluLiBJZgotICAg
ICAgICBubyBtYXRjaGluZyBrZXkgaXMgZm91bmQsIHJldHVybiB1bmRlZmluZWQuCi0KLSAgICAg
ICAgQG1ldGhvZCBnZXQKLSAgICAgICAgQHBhcmFtIHtTdHJpbmd9IGtleQotICAgICAgICBAcmV0
dXJuIHthbnl9Ci0gICAgICAqLwotICAgICAgZ2V0OiBmdW5jdGlvbihrZXkpIHsKLSAgICAgICAg
dmFyIGRpY3QgPSB0aGlzLmRpY3Q7Ci0KLSAgICAgICAgaWYgKGRpY3QuaGFzT3duUHJvcGVydHko
a2V5KSkgewotICAgICAgICAgIHJldHVybiBkaWN0W2tleV07Ci0gICAgICAgIH0KLQotICAgICAg
ICBpZiAodGhpcy5wYXJlbnQpIHsKLSAgICAgICAgICByZXR1cm4gdGhpcy5wYXJlbnQuZ2V0KGtl
eSk7Ci0gICAgICAgIH0KLSAgICAgIH0sCi0KLSAgICAgIC8qKgotICAgICAgICBTZXQgdGhlIGdp
dmVuIHZhbHVlIGZvciB0aGUgZ2l2ZW4ga2V5LCBhdCB0aGUgY3VycmVudCBsZXZlbC4KLQotICAg
ICAgICBAbWV0aG9kIHNldAotICAgICAgICBAcGFyYW0ge1N0cmluZ30ga2V5Ci0gICAgICAgIEBw
YXJhbSB7QW55fSB2YWx1ZQotICAgICAgKi8KLSAgICAgIHNldDogZnVuY3Rpb24oa2V5LCB2YWx1
ZSkgewotICAgICAgICB0aGlzLmRpY3Rba2V5XSA9IHZhbHVlOwotICAgICAgfSwKLQotICAgICAg
LyoqCi0gICAgICAgIERlbGV0ZSB0aGUgZ2l2ZW4ga2V5Ci0KLSAgICAgICAgQG1ldGhvZCByZW1v
dmUKLSAgICAgICAgQHBhcmFtIHtTdHJpbmd9IGtleQotICAgICAgKi8KLSAgICAgIHJlbW92ZTog
ZnVuY3Rpb24oa2V5KSB7Ci0gICAgICAgIGRlbGV0ZSB0aGlzLmRpY3Rba2V5XTsKLSAgICAgIH0s
Ci0KLSAgICAgIC8qKgotICAgICAgICBDaGVjayBmb3IgdGhlIGV4aXN0ZW5jZSBvZiBnaXZlbiBh
IGtleSwgaWYgdGhlIGtleSBpcyBwcmVzZW50IGF0IHRoZSBjdXJyZW50Ci0gICAgICAgIGxldmVs
IHJldHVybiB0cnVlLCBvdGhlcndpc2Ugd2FsayB1cCB0aGUgcGFyZW50IGhpZXJhcmNoeSBhbmQg
dHJ5IGFnYWluLiBJZgotICAgICAgICBubyBtYXRjaGluZyBrZXkgaXMgZm91bmQsIHJldHVybiBm
YWxzZS4KLQotICAgICAgICBAbWV0aG9kIGhhcwotICAgICAgICBAcGFyYW0ge1N0cmluZ30ga2V5
Ci0gICAgICAgIEByZXR1cm4ge0Jvb2xlYW59Ci0gICAgICAqLwotICAgICAgaGFzOiBmdW5jdGlv
bihrZXkpIHsKLSAgICAgICAgdmFyIGRpY3QgPSB0aGlzLmRpY3Q7Ci0KLSAgICAgICAgaWYgKGRp
Y3QuaGFzT3duUHJvcGVydHkoa2V5KSkgewotICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAg
ICB9Ci0KLSAgICAgICAgaWYgKHRoaXMucGFyZW50KSB7Ci0gICAgICAgICAgcmV0dXJuIHRoaXMu
cGFyZW50LmhhcyhrZXkpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgfSwKLQotICAgICAgLyoqCi0gICAgICAgIEl0ZXJhdGUgYW5kIGludm9rZSBhIGNhbGxiYWNr
IGZvciBlYWNoIGxvY2FsIGtleS12YWx1ZSBwYWlyLgotCi0gICAgICAgIEBtZXRob2QgZWFjaExv
Y2FsCi0gICAgICAgIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrCi0gICAgICAgIEBwYXJhbSB7
T2JqZWN0fSBiaW5kaW5nCi0gICAgICAqLwotICAgICAgZWFjaExvY2FsOiBmdW5jdGlvbihjYWxs
YmFjaywgYmluZGluZykgewotICAgICAgICB2YXIgZGljdCA9IHRoaXMuZGljdDsKLQotICAgICAg
ICBmb3IgKHZhciBwcm9wIGluIGRpY3QpIHsKLSAgICAgICAgICBpZiAoZGljdC5oYXNPd25Qcm9w
ZXJ0eShwcm9wKSkgewotICAgICAgICAgICAgY2FsbGJhY2suY2FsbChiaW5kaW5nLCBwcm9wLCBk
aWN0W3Byb3BdKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9OwotCi0K
LSAgICAvLyBBIGxpZ2h0d2VpZ2h0IGNvbnRhaW5lciB0aGF0IGhlbHBzIHRvIGFzc2VtYmxlIGFu
ZCBkZWNvdXBsZSBjb21wb25lbnRzLgotICAgIC8vIFB1YmxpYyBhcGkgZm9yIHRoZSBjb250YWlu
ZXIgaXMgc3RpbGwgaW4gZmx1eC4KLSAgICAvLyBUaGUgcHVibGljIGFwaSwgc3BlY2lmaWVkIG9u
IHRoZSBhcHBsaWNhdGlvbiBuYW1lc3BhY2Ugc2hvdWxkIGJlIGNvbnNpZGVyZWQgdGhlIHN0YWJs
ZSBhcGkuCi0gICAgZnVuY3Rpb24gQ29udGFpbmVyKHBhcmVudCkgewotICAgICAgdGhpcy5wYXJl
bnQgPSBwYXJlbnQ7Ci0gICAgICB0aGlzLmNoaWxkcmVuID0gW107Ci0KLSAgICAgIHRoaXMucmVz
b2x2ZXIgPSBwYXJlbnQgJiYgcGFyZW50LnJlc29sdmVyIHx8IGZ1bmN0aW9uKCkge307Ci0KLSAg
ICAgIHRoaXMucmVnaXN0cnkgPSBuZXcgSW5oZXJpdGluZ0RpY3QocGFyZW50ICYmIHBhcmVudC5y
ZWdpc3RyeSk7Ci0gICAgICB0aGlzLmNhY2hlID0gbmV3IEluaGVyaXRpbmdEaWN0KHBhcmVudCAm
JiBwYXJlbnQuY2FjaGUpOwotICAgICAgdGhpcy5mYWN0b3J5Q2FjaGUgPSBuZXcgSW5oZXJpdGlu
Z0RpY3QocGFyZW50ICYmIHBhcmVudC5jYWNoZSk7Ci0gICAgICB0aGlzLnR5cGVJbmplY3Rpb25z
ID0gbmV3IEluaGVyaXRpbmdEaWN0KHBhcmVudCAmJiBwYXJlbnQudHlwZUluamVjdGlvbnMpOwot
ICAgICAgdGhpcy5pbmplY3Rpb25zID0ge307Ci0KLSAgICAgIHRoaXMuZmFjdG9yeVR5cGVJbmpl
Y3Rpb25zID0gbmV3IEluaGVyaXRpbmdEaWN0KHBhcmVudCAmJiBwYXJlbnQuZmFjdG9yeVR5cGVJ
bmplY3Rpb25zKTsKLSAgICAgIHRoaXMuZmFjdG9yeUluamVjdGlvbnMgPSB7fTsKLQotICAgICAg
dGhpcy5fb3B0aW9ucyA9IG5ldyBJbmhlcml0aW5nRGljdChwYXJlbnQgJiYgcGFyZW50Ll9vcHRp
b25zKTsKLSAgICAgIHRoaXMuX3R5cGVPcHRpb25zID0gbmV3IEluaGVyaXRpbmdEaWN0KHBhcmVu
dCAmJiBwYXJlbnQuX3R5cGVPcHRpb25zKTsKLSAgICB9Ci0KLSAgICBDb250YWluZXIucHJvdG90
eXBlID0gewotCi0gICAgICAvKioKLSAgICAgICAgQHByb3BlcnR5IHBhcmVudAotICAgICAgICBA
dHlwZSBDb250YWluZXIKLSAgICAgICAgQGRlZmF1bHQgbnVsbAotICAgICAgKi8KLSAgICAgIHBh
cmVudDogbnVsbCwKLQotICAgICAgLyoqCi0gICAgICAgIEBwcm9wZXJ0eSBjaGlsZHJlbgotICAg
ICAgICBAdHlwZSBBcnJheQotICAgICAgICBAZGVmYXVsdCBbXQotICAgICAgKi8KLSAgICAgIGNo
aWxkcmVuOiBudWxsLAotCi0gICAgICAvKioKLSAgICAgICAgQHByb3BlcnR5IHJlc29sdmVyCi0g
ICAgICAgIEB0eXBlIGZ1bmN0aW9uCi0gICAgICAqLwotICAgICAgcmVzb2x2ZXI6IG51bGwsCi0K
LSAgICAgIC8qKgotICAgICAgICBAcHJvcGVydHkgcmVnaXN0cnkKLSAgICAgICAgQHR5cGUgSW5o
ZXJpdGluZ0RpY3QKLSAgICAgICovCi0gICAgICByZWdpc3RyeTogbnVsbCwKLQotICAgICAgLyoq
Ci0gICAgICAgIEBwcm9wZXJ0eSBjYWNoZQotICAgICAgICBAdHlwZSBJbmhlcml0aW5nRGljdAot
ICAgICAgKi8KLSAgICAgIGNhY2hlOiBudWxsLAotCi0gICAgICAvKioKLSAgICAgICAgQHByb3Bl
cnR5IHR5cGVJbmplY3Rpb25zCi0gICAgICAgIEB0eXBlIEluaGVyaXRpbmdEaWN0Ci0gICAgICAq
LwotICAgICAgdHlwZUluamVjdGlvbnM6IG51bGwsCi0KLSAgICAgIC8qKgotICAgICAgICBAcHJv
cGVydHkgaW5qZWN0aW9ucwotICAgICAgICBAdHlwZSBPYmplY3QKLSAgICAgICAgQGRlZmF1bHQg
e30KLSAgICAgICovCi0gICAgICBpbmplY3Rpb25zOiBudWxsLAotCi0gICAgICAvKioKLSAgICAg
ICAgQHByaXZhdGUKLQotICAgICAgICBAcHJvcGVydHkgX29wdGlvbnMKLSAgICAgICAgQHR5cGUg
SW5oZXJpdGluZ0RpY3QKLSAgICAgICAgQGRlZmF1bHQgbnVsbAotICAgICAgKi8KLSAgICAgIF9v
cHRpb25zOiBudWxsLAotCi0gICAgICAvKioKLSAgICAgICAgQHByaXZhdGUKLQotICAgICAgICBA
cHJvcGVydHkgX3R5cGVPcHRpb25zCi0gICAgICAgIEB0eXBlIEluaGVyaXRpbmdEaWN0Ci0gICAg
ICAqLwotICAgICAgX3R5cGVPcHRpb25zOiBudWxsLAotCi0gICAgICAvKioKLSAgICAgICAgUmV0
dXJucyBhIG5ldyBjaGlsZCBvZiB0aGUgY3VycmVudCBjb250YWluZXIuIFRoZXNlIGNoaWxkcmVu
IGFyZSBjb25maWd1cmVkCi0gICAgICAgIHRvIGNvcnJlY3RseSBpbmhlcml0IGZyb20gdGhlIGN1
cnJlbnQgY29udGFpbmVyLgotCi0gICAgICAgIEBtZXRob2QgY2hpbGQKLSAgICAgICAgQHJldHVy
biB7Q29udGFpbmVyfQotICAgICAgKi8KLSAgICAgIGNoaWxkOiBmdW5jdGlvbigpIHsKLSAgICAg
ICAgdmFyIGNvbnRhaW5lciA9IG5ldyBDb250YWluZXIodGhpcyk7Ci0gICAgICAgIHRoaXMuY2hp
bGRyZW4ucHVzaChjb250YWluZXIpOwotICAgICAgICByZXR1cm4gY29udGFpbmVyOwotICAgICAg
fSwKLQotICAgICAgLyoqCi0gICAgICAgIFNldHMgYSBrZXktdmFsdWUgcGFpciBvbiB0aGUgY3Vy
cmVudCBjb250YWluZXIuIElmIGEgcGFyZW50IGNvbnRhaW5lciwKLSAgICAgICAgaGFzIHRoZSBz
YW1lIGtleSwgb25jZSBzZXQgb24gYSBjaGlsZCwgdGhlIHBhcmVudCBhbmQgY2hpbGQgd2lsbCBk
aXZlcmdlCi0gICAgICAgIGFzIGV4cGVjdGVkLgotCi0gICAgICAgIEBtZXRob2Qgc2V0Ci0gICAg
ICAgIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QKLSAgICAgICAgQHBhcmFtIHtTdHJpbmd9IGtleQot
ICAgICAgICBAcGFyYW0ge2FueX0gdmFsdWUKLSAgICAgICovCi0gICAgICBzZXQ6IGZ1bmN0aW9u
KG9iamVjdCwga2V5LCB2YWx1ZSkgewotICAgICAgICBvYmplY3Rba2V5XSA9IHZhbHVlOwotICAg
ICAgfSwKLQotICAgICAgLyoqCi0gICAgICAgIFJlZ2lzdGVycyBhIGZhY3RvcnkgZm9yIGxhdGVy
IGluamVjdGlvbi4KLQotICAgICAgICBFeGFtcGxlOgotCi0gICAgICAgIGBgYGphdmFzY3JpcHQK
LSAgICAgICAgdmFyIGNvbnRhaW5lciA9IG5ldyBDb250YWluZXIoKTsKLQotICAgICAgICBjb250
YWluZXIucmVnaXN0ZXIoJ21vZGVsOnVzZXInLCBQZXJzb24sIHtzaW5nbGV0b246IGZhbHNlIH0p
OwotICAgICAgICBjb250YWluZXIucmVnaXN0ZXIoJ2ZydWl0OmZhdm9yaXRlJywgT3JhbmdlKTsK
LSAgICAgICAgY29udGFpbmVyLnJlZ2lzdGVyKCdjb21tdW5pY2F0aW9uOm1haW4nLCBFbWFpbCwg
e3NpbmdsZXRvbjogZmFsc2V9KTsKLSAgICAgICAgYGBgCi0KLSAgICAgICAgQG1ldGhvZCByZWdp
c3RlcgotICAgICAgICBAcGFyYW0ge1N0cmluZ30gZnVsbE5hbWUKLSAgICAgICAgQHBhcmFtIHtG
dW5jdGlvbn0gZmFjdG9yeQotICAgICAgICBAcGFyYW0ge09iamVjdH0gb3B0aW9ucwotICAgICAg
Ki8KLSAgICAgIHJlZ2lzdGVyOiBmdW5jdGlvbihmdWxsTmFtZSwgZmFjdG9yeSwgb3B0aW9ucykg
ewotICAgICAgICBpZiAoZnVsbE5hbWUuaW5kZXhPZignOicpID09PSAtMSkgewotICAgICAgICAg
IHRocm93IG5ldyBUeXBlRXJyb3IoIm1hbGZvcm1lZCBmdWxsTmFtZSwgZXhwZWN0ZWQ6IGB0eXBl
Om5hbWVgIGdvdDogIiArIGZ1bGxOYW1lICsgIiIpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYg
KGZhY3RvcnkgPT09IHVuZGVmaW5lZCkgewotICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3Io
J0F0dGVtcHRpbmcgdG8gcmVnaXN0ZXIgYW4gdW5rbm93biBmYWN0b3J5OiBgJyArIGZ1bGxOYW1l
ICsgJ2AnKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciBub3JtYWxpemVkTmFtZSA9IHRoaXMu
bm9ybWFsaXplKGZ1bGxOYW1lKTsKLQotICAgICAgICBpZiAodGhpcy5jYWNoZS5oYXMobm9ybWFs
aXplZE5hbWUpKSB7Ci0gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgcmUtcmVnaXN0
ZXI6IGAnICsgZnVsbE5hbWUgKydgLCBhcyBpdCBoYXMgYWxyZWFkeSBiZWVuIGxvb2tlZCB1cC4n
KTsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMucmVnaXN0cnkuc2V0KG5vcm1hbGl6ZWROYW1l
LCBmYWN0b3J5KTsKLSAgICAgICAgdGhpcy5fb3B0aW9ucy5zZXQobm9ybWFsaXplZE5hbWUsIG9w
dGlvbnMgfHwge30pOwotICAgICAgfSwKLQotICAgICAgLyoqCi0gICAgICAgIFVucmVnaXN0ZXIg
YSBmdWxsTmFtZQotCi0gICAgICAgIGBgYGphdmFzY3JpcHQKLSAgICAgICAgdmFyIGNvbnRhaW5l
ciA9IG5ldyBDb250YWluZXIoKTsKLSAgICAgICAgY29udGFpbmVyLnJlZ2lzdGVyKCdtb2RlbDp1
c2VyJywgVXNlcik7Ci0KLSAgICAgICAgY29udGFpbmVyLmxvb2t1cCgnbW9kZWw6dXNlcicpIGlu
c3RhbmNlb2YgVXNlciAvLz0+IHRydWUKLQotICAgICAgICBjb250YWluZXIudW5yZWdpc3Rlcign
bW9kZWw6dXNlcicpCi0gICAgICAgIGNvbnRhaW5lci5sb29rdXAoJ21vZGVsOnVzZXInKSA9PT0g
dW5kZWZpbmVkIC8vPT4gdHJ1ZQotICAgICAgICBgYGAKLQotICAgICAgICBAbWV0aG9kIHVucmVn
aXN0ZXIKLSAgICAgICAgQHBhcmFtIHtTdHJpbmd9IGZ1bGxOYW1lCi0gICAgICAgKi8KLSAgICAg
IHVucmVnaXN0ZXI6IGZ1bmN0aW9uKGZ1bGxOYW1lKSB7Ci0gICAgICAgIHZhciBub3JtYWxpemVk
TmFtZSA9IHRoaXMubm9ybWFsaXplKGZ1bGxOYW1lKTsKLQotICAgICAgICB0aGlzLnJlZ2lzdHJ5
LnJlbW92ZShub3JtYWxpemVkTmFtZSk7Ci0gICAgICAgIHRoaXMuY2FjaGUucmVtb3ZlKG5vcm1h
bGl6ZWROYW1lKTsKLSAgICAgICAgdGhpcy5mYWN0b3J5Q2FjaGUucmVtb3ZlKG5vcm1hbGl6ZWRO
YW1lKTsKLSAgICAgICAgdGhpcy5fb3B0aW9ucy5yZW1vdmUobm9ybWFsaXplZE5hbWUpOwotICAg
ICAgfSwKLQotICAgICAgLyoqCi0gICAgICAgIEdpdmVuIGEgZnVsbE5hbWUgcmV0dXJuIHRoZSBj
b3JyZXNwb25kaW5nIGZhY3RvcnkuCi0KLSAgICAgICAgQnkgZGVmYXVsdCBgcmVzb2x2ZWAgd2ls
bCByZXRyaWV2ZSB0aGUgZmFjdG9yeSBmcm9tCi0gICAgICAgIGl0cyBjb250YWluZXIncyByZWdp
c3RyeS4KLQotICAgICAgICBgYGBqYXZhc2NyaXB0Ci0gICAgICAgIHZhciBjb250YWluZXIgPSBu
ZXcgQ29udGFpbmVyKCk7Ci0gICAgICAgIGNvbnRhaW5lci5yZWdpc3RlcignYXBpOnR3aXR0ZXIn
LCBUd2l0dGVyKTsKLQotICAgICAgICBjb250YWluZXIucmVzb2x2ZSgnYXBpOnR3aXR0ZXInKSAv
LyA9PiBUd2l0dGVyCi0gICAgICAgIGBgYAotCi0gICAgICAgIE9wdGlvbmFsbHkgdGhlIGNvbnRh
aW5lciBjYW4gYmUgcHJvdmlkZWQgd2l0aCBhIGN1c3RvbSByZXNvbHZlci4KLSAgICAgICAgSWYg
cHJvdmlkZWQsIGByZXNvbHZlYCB3aWxsIGZpcnN0IHByb3ZpZGUgdGhlIGN1c3RvbSByZXNvbHZl
cgotICAgICAgICB0aGUgb3BwZXJ0dW5pdHkgdG8gcmVzb2x2ZSB0aGUgZnVsbE5hbWUsIG90aGVy
d2lzZSBpdCB3aWxsIGZhbGxiYWNrCi0gICAgICAgIHRvIHRoZSByZWdpc3RyeS4KLQotICAgICAg
ICBgYGBqYXZhc2NyaXB0Ci0gICAgICAgIHZhciBjb250YWluZXIgPSBuZXcgQ29udGFpbmVyKCk7
Ci0gICAgICAgIGNvbnRhaW5lci5yZXNvbHZlciA9IGZ1bmN0aW9uKGZ1bGxOYW1lKSB7Ci0gICAg
ICAgICAgLy8gbG9va3VwIHZpYSB0aGUgbW9kdWxlIHN5c3RlbSBvZiBjaG9pY2UKLSAgICAgICAg
fTsKLQotICAgICAgICAvLyB0aGUgdHdpdHRlciBmYWN0b3J5IGlzIGFkZGVkIHRvIHRoZSBtb2R1
bGUgc3lzdGVtCi0gICAgICAgIGNvbnRhaW5lci5yZXNvbHZlKCdhcGk6dHdpdHRlcicpIC8vID0+
IFR3aXR0ZXIKLSAgICAgICAgYGBgCi0KLSAgICAgICAgQG1ldGhvZCByZXNvbHZlCi0gICAgICAg
IEBwYXJhbSB7U3RyaW5nfSBmdWxsTmFtZQotICAgICAgICBAcmV0dXJuIHtGdW5jdGlvbn0gZnVs
bE5hbWUncyBmYWN0b3J5Ci0gICAgICAqLwotICAgICAgcmVzb2x2ZTogZnVuY3Rpb24oZnVsbE5h
bWUpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucmVzb2x2ZXIoZnVsbE5hbWUpIHx8IHRoaXMucmVn
aXN0cnkuZ2V0KGZ1bGxOYW1lKTsKLSAgICAgIH0sCi0KLSAgICAgIC8qKgotICAgICAgICBBIGhv
b2sgdGhhdCBjYW4gYmUgdXNlZCB0byBkZXNjcmliZSBob3cgdGhlIHJlc29sdmVyIHdpbGwKLSAg
ICAgICAgYXR0ZW1wdCB0byBmaW5kIHRoZSBmYWN0b3J5LgotCi0gICAgICAgIEZvciBleGFtcGxl
LCB0aGUgZGVmYXVsdCBFbWJlciBgLmRlc2NyaWJlYCByZXR1cm5zIHRoZSBmdWxsCi0gICAgICAg
IGNsYXNzIG5hbWUgKGluY2x1ZGluZyBuYW1lc3BhY2UpIHdoZXJlIEVtYmVyJ3MgcmVzb2x2ZXIg
ZXhwZWN0cwotICAgICAgICB0byBmaW5kIHRoZSBgZnVsbE5hbWVgLgotCi0gICAgICAgIEBtZXRo
b2QgZGVzY3JpYmUKLSAgICAgICAgQHBhcmFtIHtTdHJpbmd9IGZ1bGxOYW1lCi0gICAgICAgIEBy
ZXR1cm4ge3N0cmluZ30gZGVzY3JpYmVkIGZ1bGxOYW1lCi0gICAgICAqLwotICAgICAgZGVzY3Jp
YmU6IGZ1bmN0aW9uKGZ1bGxOYW1lKSB7Ci0gICAgICAgIHJldHVybiBmdWxsTmFtZTsKLSAgICAg
IH0sCi0KLSAgICAgIC8qKgotICAgICAgICBBIGhvb2sgdG8gZW5hYmxlIGN1c3RvbSBmdWxsTmFt
ZSBub3JtYWxpemF0aW9uIGJlaGF2aW91cgotCi0gICAgICAgIEBtZXRob2Qgbm9ybWFsaXplCi0g
ICAgICAgIEBwYXJhbSB7U3RyaW5nfSBmdWxsTmFtZQotICAgICAgICBAcmV0dXJuIHtzdHJpbmd9
IG5vcm1hbGl6ZWQgZnVsbE5hbWUKLSAgICAgICovCi0gICAgICBub3JtYWxpemU6IGZ1bmN0aW9u
KGZ1bGxOYW1lKSB7Ci0gICAgICAgIHJldHVybiBmdWxsTmFtZTsKLSAgICAgIH0sCi0KLSAgICAg
IC8qKgotICAgICAgICBAbWV0aG9kIG1ha2VUb1N0cmluZwotCi0gICAgICAgIEBwYXJhbSB7YW55
fSBmYWN0b3J5Ci0gICAgICAgIEBwYXJhbSB7c3RyaW5nfSBmdWxsTmFtZQotICAgICAgICBAcmV0
dXJuIHtmdW5jdGlvbn0gdG9TdHJpbmcgZnVuY3Rpb24KLSAgICAgICovCi0gICAgICBtYWtlVG9T
dHJpbmc6IGZ1bmN0aW9uKGZhY3RvcnksIGZ1bGxOYW1lKSB7Ci0gICAgICAgIHJldHVybiBmYWN0
b3J5LnRvU3RyaW5nKCk7Ci0gICAgICB9LAotCi0gICAgICAvKioKLSAgICAgICAgR2l2ZW4gYSBm
dWxsTmFtZSByZXR1cm4gYSBjb3JyZXNwb25kaW5nIGluc3RhbmNlLgotCi0gICAgICAgIFRoZSBk
ZWZhdWx0IGJlaGF2aW91ciBpcyBmb3IgbG9va3VwIHRvIHJldHVybiBhIHNpbmdsZXRvbiBpbnN0
YW5jZS4KLSAgICAgICAgVGhlIHNpbmdsZXRvbiBpcyBzY29wZWQgdG8gdGhlIGNvbnRhaW5lciwg
YWxsb3dpbmcgbXVsdGlwbGUgY29udGFpbmVycwotICAgICAgICB0byBhbGwgaGF2ZSB0aGVpciBv
d24gbG9jYWxseSBzY29wZWQgc2luZ2xldG9ucy4KLQotICAgICAgICBgYGBqYXZhc2NyaXB0Ci0g
ICAgICAgIHZhciBjb250YWluZXIgPSBuZXcgQ29udGFpbmVyKCk7Ci0gICAgICAgIGNvbnRhaW5l
ci5yZWdpc3RlcignYXBpOnR3aXR0ZXInLCBUd2l0dGVyKTsKLQotICAgICAgICB2YXIgdHdpdHRl
ciA9IGNvbnRhaW5lci5sb29rdXAoJ2FwaTp0d2l0dGVyJyk7Ci0KLSAgICAgICAgdHdpdHRlciBp
bnN0YW5jZW9mIFR3aXR0ZXI7IC8vID0+IHRydWUKLQotICAgICAgICAvLyBieSBkZWZhdWx0IHRo
ZSBjb250YWluZXIgd2lsbCByZXR1cm4gc2luZ2xldG9ucwotICAgICAgICB2YXIgdHdpdHRlcjIg
PSBjb250YWluZXIubG9va3VwKCdhcGk6dHdpdHRlcicpOwotICAgICAgICB0d2l0dGVyIGluc3Rh
bmNlb2YgVHdpdHRlcjsgLy8gPT4gdHJ1ZQotCi0gICAgICAgIHR3aXR0ZXIgPT09IHR3aXR0ZXIy
OyAvLz0+IHRydWUKLSAgICAgICAgYGBgCi0KLSAgICAgICAgSWYgc2luZ2xldG9ucyBhcmUgbm90
IHdhbnRlZCBhbiBvcHRpb25hbCBmbGFnIGNhbiBiZSBwcm92aWRlZCBhdCBsb29rdXAuCi0KLSAg
ICAgICAgYGBgamF2YXNjcmlwdAotICAgICAgICB2YXIgY29udGFpbmVyID0gbmV3IENvbnRhaW5l
cigpOwotICAgICAgICBjb250YWluZXIucmVnaXN0ZXIoJ2FwaTp0d2l0dGVyJywgVHdpdHRlcik7
Ci0KLSAgICAgICAgdmFyIHR3aXR0ZXIgPSBjb250YWluZXIubG9va3VwKCdhcGk6dHdpdHRlcics
IHsgc2luZ2xldG9uOiBmYWxzZSB9KTsKLSAgICAgICAgdmFyIHR3aXR0ZXIyID0gY29udGFpbmVy
Lmxvb2t1cCgnYXBpOnR3aXR0ZXInLCB7IHNpbmdsZXRvbjogZmFsc2UgfSk7Ci0KLSAgICAgICAg
dHdpdHRlciA9PT0gdHdpdHRlcjI7IC8vPT4gZmFsc2UKLSAgICAgICAgYGBgCi0KLSAgICAgICAg
QG1ldGhvZCBsb29rdXAKLSAgICAgICAgQHBhcmFtIHtTdHJpbmd9IGZ1bGxOYW1lCi0gICAgICAg
IEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zCi0gICAgICAgIEByZXR1cm4ge2FueX0KLSAgICAgICov
Ci0gICAgICBsb29rdXA6IGZ1bmN0aW9uKGZ1bGxOYW1lLCBvcHRpb25zKSB7Ci0gICAgICAgIGZ1
bGxOYW1lID0gdGhpcy5ub3JtYWxpemUoZnVsbE5hbWUpOwotCi0gICAgICAgIG9wdGlvbnMgPSBv
cHRpb25zIHx8IHt9OwotCi0gICAgICAgIGlmICh0aGlzLmNhY2hlLmhhcyhmdWxsTmFtZSkgJiYg
b3B0aW9ucy5zaW5nbGV0b24gIT09IGZhbHNlKSB7Ci0gICAgICAgICAgcmV0dXJuIHRoaXMuY2Fj
aGUuZ2V0KGZ1bGxOYW1lKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciB2YWx1ZSA9IGluc3Rh
bnRpYXRlKHRoaXMsIGZ1bGxOYW1lKTsKLQotICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5l
ZCkgeyByZXR1cm47IH0KLQotICAgICAgICBpZiAoaXNTaW5nbGV0b24odGhpcywgZnVsbE5hbWUp
ICYmIG9wdGlvbnMuc2luZ2xldG9uICE9PSBmYWxzZSkgewotICAgICAgICAgIHRoaXMuY2FjaGUu
c2V0KGZ1bGxOYW1lLCB2YWx1ZSk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gdmFsdWU7
Ci0gICAgICB9LAotCi0gICAgICAvKioKLSAgICAgICAgR2l2ZW4gYSBmdWxsTmFtZSByZXR1cm4g
dGhlIGNvcnJlc3BvbmRpbmcgZmFjdG9yeS4KLQotICAgICAgICBAbWV0aG9kIGxvb2t1cEZhY3Rv
cnkKLSAgICAgICAgQHBhcmFtIHtTdHJpbmd9IGZ1bGxOYW1lCi0gICAgICAgIEByZXR1cm4ge2Fu
eX0KLSAgICAgICovCi0gICAgICBsb29rdXBGYWN0b3J5OiBmdW5jdGlvbihmdWxsTmFtZSkgewot
ICAgICAgICByZXR1cm4gZmFjdG9yeUZvcih0aGlzLCBmdWxsTmFtZSk7Ci0gICAgICB9LAotCi0g
ICAgICAvKioKLSAgICAgICAgR2l2ZW4gYSBmdWxsTmFtZSBjaGVjayBpZiB0aGUgY29udGFpbmVy
IGlzIGF3YXJlIG9mIGl0cyBmYWN0b3J5Ci0gICAgICAgIG9yIHNpbmdsZXRvbiBpbnN0YW5jZS4K
LQotICAgICAgICBAbWV0aG9kIGhhcwotICAgICAgICBAcGFyYW0ge1N0cmluZ30gZnVsbE5hbWUK
LSAgICAgICAgQHJldHVybiB7Qm9vbGVhbn0KLSAgICAgICovCi0gICAgICBoYXM6IGZ1bmN0aW9u
KGZ1bGxOYW1lKSB7Ci0gICAgICAgIGlmICh0aGlzLmNhY2hlLmhhcyhmdWxsTmFtZSkpIHsKLSAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiAhIXRoaXMu
cmVzb2x2ZShmdWxsTmFtZSk7Ci0gICAgICB9LAotCi0gICAgICAvKioKLSAgICAgICAgQWxsb3cg
cmVnaXN0ZXJpbmcgb3B0aW9ucyBmb3IgYWxsIGZhY3RvcmllcyBvZiBhIHR5cGUuCi0KLSAgICAg
ICAgYGBgamF2YXNjcmlwdAotICAgICAgICB2YXIgY29udGFpbmVyID0gbmV3IENvbnRhaW5lcigp
OwotCi0gICAgICAgIC8vIGlmIGFsbCBvZiB0eXBlIGBjb25uZWN0aW9uYCBtdXN0IG5vdCBiZSBz
aW5nbGV0b25zCi0gICAgICAgIGNvbnRhaW5lci5vcHRpb25zRm9yVHlwZSgnY29ubmVjdGlvbics
IHsgc2luZ2xldG9uOiBmYWxzZSB9KTsKLQotICAgICAgICBjb250YWluZXIucmVnaXN0ZXIoJ2Nv
bm5lY3Rpb246dHdpdHRlcicsIFR3aXR0ZXJDb25uZWN0aW9uKTsKLSAgICAgICAgY29udGFpbmVy
LnJlZ2lzdGVyKCdjb25uZWN0aW9uOmZhY2Vib29rJywgRmFjZWJvb2tDb25uZWN0aW9uKTsKLQot
ICAgICAgICB2YXIgdHdpdHRlciA9IGNvbnRhaW5lci5sb29rdXAoJ2Nvbm5lY3Rpb246dHdpdHRl
cicpOwotICAgICAgICB2YXIgdHdpdHRlcjIgPSBjb250YWluZXIubG9va3VwKCdjb25uZWN0aW9u
OnR3aXR0ZXInKTsKLQotICAgICAgICB0d2l0dGVyID09PSB0d2l0dGVyMjsgLy8gPT4gZmFsc2UK
LQotICAgICAgICB2YXIgZmFjZWJvb2sgPSBjb250YWluZXIubG9va3VwKCdjb25uZWN0aW9uOmZh
Y2Vib29rJyk7Ci0gICAgICAgIHZhciBmYWNlYm9vazIgPSBjb250YWluZXIubG9va3VwKCdjb25u
ZWN0aW9uOmZhY2Vib29rJyk7Ci0KLSAgICAgICAgZmFjZWJvb2sgPT09IGZhY2Vib29rMjsgLy8g
PT4gZmFsc2UKLSAgICAgICAgYGBgCi0KLSAgICAgICAgQG1ldGhvZCBvcHRpb25zRm9yVHlwZQot
ICAgICAgICBAcGFyYW0ge1N0cmluZ30gdHlwZQotICAgICAgICBAcGFyYW0ge09iamVjdH0gb3B0
aW9ucwotICAgICAgKi8KLSAgICAgIG9wdGlvbnNGb3JUeXBlOiBmdW5jdGlvbih0eXBlLCBvcHRp
b25zKSB7Ci0gICAgICAgIGlmICh0aGlzLnBhcmVudCkgeyBpbGxlZ2FsQ2hpbGRPcGVyYXRpb24o
J29wdGlvbnNGb3JUeXBlJyk7IH0KLQotICAgICAgICB0aGlzLl90eXBlT3B0aW9ucy5zZXQodHlw
ZSwgb3B0aW9ucyk7Ci0gICAgICB9LAotCi0gICAgICAvKioKLSAgICAgICAgQG1ldGhvZCBvcHRp
b25zCi0gICAgICAgIEBwYXJhbSB7U3RyaW5nfSB0eXBlCi0gICAgICAgIEBwYXJhbSB7T2JqZWN0
fSBvcHRpb25zCi0gICAgICAqLwotICAgICAgb3B0aW9uczogZnVuY3Rpb24odHlwZSwgb3B0aW9u
cykgewotICAgICAgICB0aGlzLm9wdGlvbnNGb3JUeXBlKHR5cGUsIG9wdGlvbnMpOwotICAgICAg
fSwKLQotICAgICAgLyoqCi0gICAgICAgIFVzZWQgb25seSB2aWEgYGluamVjdGlvbmAuCi0KLSAg
ICAgICAgUHJvdmlkZXMgYSBzcGVjaWFsaXplZCBmb3JtIG9mIGluamVjdGlvbiwgc3BlY2lmaWNh
bGx5IGVuYWJsaW5nCi0gICAgICAgIGFsbCBvYmplY3RzIG9mIG9uZSB0eXBlIHRvIGJlIGluamVj
dGVkIHdpdGggYSByZWZlcmVuY2UgdG8gYW5vdGhlcgotICAgICAgICBvYmplY3QuCi0KLSAgICAg
ICAgRm9yIGV4YW1wbGUsIHByb3ZpZGVkIGVhY2ggb2JqZWN0IG9mIHR5cGUgYGNvbnRyb2xsZXJg
IG5lZWRlZCBhIGByb3V0ZXJgLgotICAgICAgICBvbmUgd291bGQgZG8gdGhlIGZvbGxvd2luZzoK
LQotICAgICAgICBgYGBqYXZhc2NyaXB0Ci0gICAgICAgIHZhciBjb250YWluZXIgPSBuZXcgQ29u
dGFpbmVyKCk7Ci0KLSAgICAgICAgY29udGFpbmVyLnJlZ2lzdGVyKCdyb3V0ZXI6bWFpbicsIFJv
dXRlcik7Ci0gICAgICAgIGNvbnRhaW5lci5yZWdpc3RlcignY29udHJvbGxlcjp1c2VyJywgVXNl
ckNvbnRyb2xsZXIpOwotICAgICAgICBjb250YWluZXIucmVnaXN0ZXIoJ2NvbnRyb2xsZXI6cG9z
dCcsIFBvc3RDb250cm9sbGVyKTsKLQotICAgICAgICBjb250YWluZXIudHlwZUluamVjdGlvbign
Y29udHJvbGxlcicsICdyb3V0ZXInLCAncm91dGVyOm1haW4nKTsKLQotICAgICAgICB2YXIgdXNl
ciA9IGNvbnRhaW5lci5sb29rdXAoJ2NvbnRyb2xsZXI6dXNlcicpOwotICAgICAgICB2YXIgcG9z
dCA9IGNvbnRhaW5lci5sb29rdXAoJ2NvbnRyb2xsZXI6cG9zdCcpOwotCi0gICAgICAgIHVzZXIu
cm91dGVyIGluc3RhbmNlb2YgUm91dGVyOyAvLz0+IHRydWUKLSAgICAgICAgcG9zdC5yb3V0ZXIg
aW5zdGFuY2VvZiBSb3V0ZXI7IC8vPT4gdHJ1ZQotCi0gICAgICAgIC8vIGJvdGggY29udHJvbGxl
cnMgc2hhcmUgdGhlIHNhbWUgcm91dGVyCi0gICAgICAgIHVzZXIucm91dGVyID09PSBwb3N0LnJv
dXRlcjsgLy89PiB0cnVlCi0gICAgICAgIGBgYAotCi0gICAgICAgIEBwcml2YXRlCi0gICAgICAg
IEBtZXRob2QgdHlwZUluamVjdGlvbgotICAgICAgICBAcGFyYW0ge1N0cmluZ30gdHlwZQotICAg
ICAgICBAcGFyYW0ge1N0cmluZ30gcHJvcGVydHkKLSAgICAgICAgQHBhcmFtIHtTdHJpbmd9IGZ1
bGxOYW1lCi0gICAgICAqLwotICAgICAgdHlwZUluamVjdGlvbjogZnVuY3Rpb24odHlwZSwgcHJv
cGVydHksIGZ1bGxOYW1lKSB7Ci0gICAgICAgIGlmICh0aGlzLnBhcmVudCkgeyBpbGxlZ2FsQ2hp
bGRPcGVyYXRpb24oJ3R5cGVJbmplY3Rpb24nKTsgfQotCi0gICAgICAgIGFkZFR5cGVJbmplY3Rp
b24odGhpcy50eXBlSW5qZWN0aW9ucywgdHlwZSwgcHJvcGVydHksIGZ1bGxOYW1lKTsKLSAgICAg
IH0sCi0KLSAgICAgIC8qKgotICAgICAgICBEZWZpbmVzIGluamVjdGlvbiBydWxlcy4KLQotICAg
ICAgICBUaGVzZSBydWxlcyBhcmUgdXNlZCB0byBpbmplY3QgZGVwZW5kZW5jaWVzIG9udG8gb2Jq
ZWN0cyB3aGVuIHRoZXkKLSAgICAgICAgYXJlIGluc3RhbnRpYXRlZC4KLQotICAgICAgICBUd28g
Zm9ybXMgb2YgaW5qZWN0aW9ucyBhcmUgcG9zc2libGU6Ci0KLSAgICAgICAgKiBJbmplY3Rpbmcg
b25lIGZ1bGxOYW1lIG9uIGFub3RoZXIgZnVsbE5hbWUKLSAgICAgICAgKiBJbmplY3Rpbmcgb25l
IGZ1bGxOYW1lIG9uIGEgdHlwZQotCi0gICAgICAgIEV4YW1wbGU6Ci0KLSAgICAgICAgYGBgamF2
YXNjcmlwdAotICAgICAgICB2YXIgY29udGFpbmVyID0gbmV3IENvbnRhaW5lcigpOwotCi0gICAg
ICAgIGNvbnRhaW5lci5yZWdpc3Rlcignc291cmNlOm1haW4nLCBTb3VyY2UpOwotICAgICAgICBj
b250YWluZXIucmVnaXN0ZXIoJ21vZGVsOnVzZXInLCBVc2VyKTsKLSAgICAgICAgY29udGFpbmVy
LnJlZ2lzdGVyKCdtb2RlbDpwb3N0JywgUG9zdCk7Ci0KLSAgICAgICAgLy8gaW5qZWN0aW5nIG9u
ZSBmdWxsTmFtZSBvbiBhbm90aGVyIGZ1bGxOYW1lCi0gICAgICAgIC8vIGVnLiBlYWNoIHVzZXIg
bW9kZWwgZ2V0cyBhIHBvc3QgbW9kZWwKLSAgICAgICAgY29udGFpbmVyLmluamVjdGlvbignbW9k
ZWw6dXNlcicsICdwb3N0JywgJ21vZGVsOnBvc3QnKTsKLQotICAgICAgICAvLyBpbmplY3Rpbmcg
b25lIGZ1bGxOYW1lIG9uIGFub3RoZXIgdHlwZQotICAgICAgICBjb250YWluZXIuaW5qZWN0aW9u
KCdtb2RlbCcsICdzb3VyY2UnLCAnc291cmNlOm1haW4nKTsKLQotICAgICAgICB2YXIgdXNlciA9
IGNvbnRhaW5lci5sb29rdXAoJ21vZGVsOnVzZXInKTsKLSAgICAgICAgdmFyIHBvc3QgPSBjb250
YWluZXIubG9va3VwKCdtb2RlbDpwb3N0Jyk7Ci0KLSAgICAgICAgdXNlci5zb3VyY2UgaW5zdGFu
Y2VvZiBTb3VyY2U7IC8vPT4gdHJ1ZQotICAgICAgICBwb3N0LnNvdXJjZSBpbnN0YW5jZW9mIFNv
dXJjZTsgLy89PiB0cnVlCi0KLSAgICAgICAgdXNlci5wb3N0IGluc3RhbmNlb2YgUG9zdDsgLy89
PiB0cnVlCi0KLSAgICAgICAgLy8gYW5kIGJvdGggbW9kZWxzIHNoYXJlIHRoZSBzYW1lIHNvdXJj
ZQotICAgICAgICB1c2VyLnNvdXJjZSA9PT0gcG9zdC5zb3VyY2U7IC8vPT4gdHJ1ZQotICAgICAg
ICBgYGAKLQotICAgICAgICBAbWV0aG9kIGluamVjdGlvbgotICAgICAgICBAcGFyYW0ge1N0cmlu
Z30gZmFjdG9yeU5hbWUKLSAgICAgICAgQHBhcmFtIHtTdHJpbmd9IHByb3BlcnR5Ci0gICAgICAg
IEBwYXJhbSB7U3RyaW5nfSBpbmplY3Rpb25OYW1lCi0gICAgICAqLwotICAgICAgaW5qZWN0aW9u
OiBmdW5jdGlvbihmYWN0b3J5TmFtZSwgcHJvcGVydHksIGluamVjdGlvbk5hbWUpIHsKLSAgICAg
ICAgaWYgKHRoaXMucGFyZW50KSB7IGlsbGVnYWxDaGlsZE9wZXJhdGlvbignaW5qZWN0aW9uJyk7
IH0KLQotICAgICAgICBpZiAoZmFjdG9yeU5hbWUuaW5kZXhPZignOicpID09PSAtMSkgewotICAg
ICAgICAgIHJldHVybiB0aGlzLnR5cGVJbmplY3Rpb24oZmFjdG9yeU5hbWUsIHByb3BlcnR5LCBp
bmplY3Rpb25OYW1lKTsKLSAgICAgICAgfQotCi0gICAgICAgIGFkZEluamVjdGlvbih0aGlzLmlu
amVjdGlvbnMsIGZhY3RvcnlOYW1lLCBwcm9wZXJ0eSwgaW5qZWN0aW9uTmFtZSk7Ci0gICAgICB9
LAotCi0KLSAgICAgIC8qKgotICAgICAgICBVc2VkIG9ubHkgdmlhIGBmYWN0b3J5SW5qZWN0aW9u
YC4KLQotICAgICAgICBQcm92aWRlcyBhIHNwZWNpYWxpemVkIGZvcm0gb2YgaW5qZWN0aW9uLCBz
cGVjaWZpY2FsbHkgZW5hYmxpbmcKLSAgICAgICAgYWxsIGZhY3Rvcnkgb2Ygb25lIHR5cGUgdG8g
YmUgaW5qZWN0ZWQgd2l0aCBhIHJlZmVyZW5jZSB0byBhbm90aGVyCi0gICAgICAgIG9iamVjdC4K
LQotICAgICAgICBGb3IgZXhhbXBsZSwgcHJvdmlkZWQgZWFjaCBmYWN0b3J5IG9mIHR5cGUgYG1v
ZGVsYCBuZWVkZWQgYSBgc3RvcmVgLgotICAgICAgICBvbmUgd291bGQgZG8gdGhlIGZvbGxvd2lu
ZzoKLQotICAgICAgICBgYGBqYXZhc2NyaXB0Ci0gICAgICAgIHZhciBjb250YWluZXIgPSBuZXcg
Q29udGFpbmVyKCk7Ci0KLSAgICAgICAgY29udGFpbmVyLnJlZ2lzdGVyKCdzdG9yZTptYWluJywg
U29tZVN0b3JlKTsKLQotICAgICAgICBjb250YWluZXIuZmFjdG9yeVR5cGVJbmplY3Rpb24oJ21v
ZGVsJywgJ3N0b3JlJywgJ3N0b3JlOm1haW4nKTsKLQotICAgICAgICB2YXIgc3RvcmUgPSBjb250
YWluZXIubG9va3VwKCdzdG9yZTptYWluJyk7Ci0gICAgICAgIHZhciBVc2VyRmFjdG9yeSA9IGNv
bnRhaW5lci5sb29rdXBGYWN0b3J5KCdtb2RlbDp1c2VyJyk7Ci0KLSAgICAgICAgVXNlckZhY3Rv
cnkuc3RvcmUgaW5zdGFuY2VvZiBTb21lU3RvcmU7IC8vPT4gdHJ1ZQotICAgICAgICBgYGAKLQot
ICAgICAgICBAcHJpdmF0ZQotICAgICAgICBAbWV0aG9kIGZhY3RvcnlUeXBlSW5qZWN0aW9uCi0g
ICAgICAgIEBwYXJhbSB7U3RyaW5nfSB0eXBlCi0gICAgICAgIEBwYXJhbSB7U3RyaW5nfSBwcm9w
ZXJ0eQotICAgICAgICBAcGFyYW0ge1N0cmluZ30gZnVsbE5hbWUKLSAgICAgICovCi0gICAgICBm
YWN0b3J5VHlwZUluamVjdGlvbjogZnVuY3Rpb24odHlwZSwgcHJvcGVydHksIGZ1bGxOYW1lKSB7
Ci0gICAgICAgIGlmICh0aGlzLnBhcmVudCkgeyBpbGxlZ2FsQ2hpbGRPcGVyYXRpb24oJ2ZhY3Rv
cnlUeXBlSW5qZWN0aW9uJyk7IH0KLQotICAgICAgICBhZGRUeXBlSW5qZWN0aW9uKHRoaXMuZmFj
dG9yeVR5cGVJbmplY3Rpb25zLCB0eXBlLCBwcm9wZXJ0eSwgZnVsbE5hbWUpOwotICAgICAgfSwK
LQotICAgICAgLyoqCi0gICAgICAgIERlZmluZXMgZmFjdG9yeSBpbmplY3Rpb24gcnVsZXMuCi0K
LSAgICAgICAgU2ltaWxhciB0byByZWd1bGFyIGluamVjdGlvbiBydWxlcywgYnV0IGFyZSBydW4g
YWdhaW5zdCBmYWN0b3JpZXMsIHZpYQotICAgICAgICBgQ29udGFpbmVyI2xvb2t1cEZhY3Rvcnlg
LgotCi0gICAgICAgIFRoZXNlIHJ1bGVzIGFyZSB1c2VkIHRvIGluamVjdCBvYmplY3RzIG9udG8g
ZmFjdG9yaWVzIHdoZW4gdGhleQotICAgICAgICBhcmUgbG9va2VkIHVwLgotCi0gICAgICAgIFR3
byBmb3JtcyBvZiBpbmplY3Rpb25zIGFyZSBwb3NzaWJsZToKLQotICAgICAgKiBJbmplY3Rpbmcg
b25lIGZ1bGxOYW1lIG9uIGFub3RoZXIgZnVsbE5hbWUKLSAgICAgICogSW5qZWN0aW5nIG9uZSBm
dWxsTmFtZSBvbiBhIHR5cGUKLQotICAgICAgICBFeGFtcGxlOgotCi0gICAgICAgIGBgYGphdmFz
Y3JpcHQKLSAgICAgICAgdmFyIGNvbnRhaW5lciA9IG5ldyBDb250YWluZXIoKTsKLQotICAgICAg
ICBjb250YWluZXIucmVnaXN0ZXIoJ3N0b3JlOm1haW4nLCBTdG9yZSk7Ci0gICAgICAgIGNvbnRh
aW5lci5yZWdpc3Rlcignc3RvcmU6c2Vjb25kYXJ5JywgT3RoZXJTdG9yZSk7Ci0gICAgICAgIGNv
bnRhaW5lci5yZWdpc3RlcignbW9kZWw6dXNlcicsIFVzZXIpOwotICAgICAgICBjb250YWluZXIu
cmVnaXN0ZXIoJ21vZGVsOnBvc3QnLCBQb3N0KTsKLQotICAgICAgICAvLyBpbmplY3Rpbmcgb25l
IGZ1bGxOYW1lIG9uIGFub3RoZXIgdHlwZQotICAgICAgICBjb250YWluZXIuZmFjdG9yeUluamVj
dGlvbignbW9kZWwnLCAnc3RvcmUnLCAnc3RvcmU6bWFpbicpOwotCi0gICAgICAgIC8vIGluamVj
dGluZyBvbmUgZnVsbE5hbWUgb24gYW5vdGhlciBmdWxsTmFtZQotICAgICAgICBjb250YWluZXIu
ZmFjdG9yeUluamVjdGlvbignbW9kZWw6cG9zdCcsICdzZWNvbmRhcnlTdG9yZScsICdzdG9yZTpz
ZWNvbmRhcnknKTsKLQotICAgICAgICB2YXIgVXNlckZhY3RvcnkgPSBjb250YWluZXIubG9va3Vw
RmFjdG9yeSgnbW9kZWw6dXNlcicpOwotICAgICAgICB2YXIgUG9zdEZhY3RvcnkgPSBjb250YWlu
ZXIubG9va3VwRmFjdG9yeSgnbW9kZWw6cG9zdCcpOwotICAgICAgICB2YXIgc3RvcmUgPSBjb250
YWluZXIubG9va3VwKCdzdG9yZTptYWluJyk7Ci0KLSAgICAgICAgVXNlckZhY3Rvcnkuc3RvcmUg
aW5zdGFuY2VvZiBTdG9yZTsgLy89PiB0cnVlCi0gICAgICAgIFVzZXJGYWN0b3J5LnNlY29uZGFy
eVN0b3JlIGluc3RhbmNlb2YgT3RoZXJTdG9yZTsgLy89PiBmYWxzZQotCi0gICAgICAgIFBvc3RG
YWN0b3J5LnN0b3JlIGluc3RhbmNlb2YgU3RvcmU7IC8vPT4gdHJ1ZQotICAgICAgICBQb3N0RmFj
dG9yeS5zZWNvbmRhcnlTdG9yZSBpbnN0YW5jZW9mIE90aGVyU3RvcmU7IC8vPT4gdHJ1ZQotCi0g
ICAgICAgIC8vIGFuZCBib3RoIG1vZGVscyBzaGFyZSB0aGUgc2FtZSBzb3VyY2UgaW5zdGFuY2UK
LSAgICAgICAgVXNlckZhY3Rvcnkuc3RvcmUgPT09IFBvc3RGYWN0b3J5LnN0b3JlOyAvLz0+IHRy
dWUKLSAgICAgICAgYGBgCi0KLSAgICAgICAgQG1ldGhvZCBmYWN0b3J5SW5qZWN0aW9uCi0gICAg
ICAgIEBwYXJhbSB7U3RyaW5nfSBmYWN0b3J5TmFtZQotICAgICAgICBAcGFyYW0ge1N0cmluZ30g
cHJvcGVydHkKLSAgICAgICAgQHBhcmFtIHtTdHJpbmd9IGluamVjdGlvbk5hbWUKLSAgICAgICov
Ci0gICAgICBmYWN0b3J5SW5qZWN0aW9uOiBmdW5jdGlvbihmYWN0b3J5TmFtZSwgcHJvcGVydHks
IGluamVjdGlvbk5hbWUpIHsKLSAgICAgICAgaWYgKHRoaXMucGFyZW50KSB7IGlsbGVnYWxDaGls
ZE9wZXJhdGlvbignaW5qZWN0aW9uJyk7IH0KLQotICAgICAgICBpZiAoZmFjdG9yeU5hbWUuaW5k
ZXhPZignOicpID09PSAtMSkgewotICAgICAgICAgIHJldHVybiB0aGlzLmZhY3RvcnlUeXBlSW5q
ZWN0aW9uKGZhY3RvcnlOYW1lLCBwcm9wZXJ0eSwgaW5qZWN0aW9uTmFtZSk7Ci0gICAgICAgIH0K
LQotICAgICAgICBhZGRJbmplY3Rpb24odGhpcy5mYWN0b3J5SW5qZWN0aW9ucywgZmFjdG9yeU5h
bWUsIHByb3BlcnR5LCBpbmplY3Rpb25OYW1lKTsKLSAgICAgIH0sCi0KLSAgICAgIC8qKgotICAg
ICAgICBBIGRlcHRoIGZpcnN0IHRyYXZlcnNhbCwgZGVzdHJveWluZyB0aGUgY29udGFpbmVyLCBp
dHMgZGVzY2VuZGFudCBjb250YWluZXJzIGFuZCBhbGwKLSAgICAgICAgdGhlaXIgbWFuYWdlZCBv
YmplY3RzLgotCi0gICAgICAgIEBtZXRob2QgZGVzdHJveQotICAgICAgKi8KLSAgICAgIGRlc3Ry
b3k6IGZ1bmN0aW9uKCkgewotCi0gICAgICAgIGZvciAodmFyIGk9MCwgbD10aGlzLmNoaWxkcmVu
Lmxlbmd0aDsgaTxsOyBpKyspIHsKLSAgICAgICAgICB0aGlzLmNoaWxkcmVuW2ldLmRlc3Ryb3ko
KTsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMuY2hpbGRyZW4gPSBbXTsKLQotICAgICAgICBl
YWNoRGVzdHJveWFibGUodGhpcywgZnVuY3Rpb24oaXRlbSkgewotICAgICAgICAgIGl0ZW0uZGVz
dHJveSgpOwotICAgICAgICB9KTsKLQotICAgICAgICB0aGlzLnBhcmVudCA9IHVuZGVmaW5lZDsK
LSAgICAgICAgdGhpcy5pc0Rlc3Ryb3llZCA9IHRydWU7Ci0gICAgICB9LAotCi0gICAgICAvKioK
LSAgICAgICAgQG1ldGhvZCByZXNldAotICAgICAgKi8KLSAgICAgIHJlc2V0OiBmdW5jdGlvbigp
IHsKLSAgICAgICAgZm9yICh2YXIgaT0wLCBsPXRoaXMuY2hpbGRyZW4ubGVuZ3RoOyBpPGw7IGkr
KykgewotICAgICAgICAgIHJlc2V0Q2FjaGUodGhpcy5jaGlsZHJlbltpXSk7Ci0gICAgICAgIH0K
LSAgICAgICAgcmVzZXRDYWNoZSh0aGlzKTsKLSAgICAgIH0KLSAgICB9OwotCi0gICAgZnVuY3Rp
b24gaWxsZWdhbENoaWxkT3BlcmF0aW9uKG9wZXJhdGlvbikgewotICAgICAgdGhyb3cgbmV3IEVy
cm9yKG9wZXJhdGlvbiArICIgaXMgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQgb24gY2hpbGQgY29u
dGFpbmVycyIpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGlzU2luZ2xldG9uKGNvbnRhaW5lciwg
ZnVsbE5hbWUpIHsKLSAgICAgIHZhciBzaW5nbGV0b24gPSBvcHRpb24oY29udGFpbmVyLCBmdWxs
TmFtZSwgJ3NpbmdsZXRvbicpOwotCi0gICAgICByZXR1cm4gc2luZ2xldG9uICE9PSBmYWxzZTsK
LSAgICB9Ci0KLSAgICBmdW5jdGlvbiBidWlsZEluamVjdGlvbnMoY29udGFpbmVyLCBpbmplY3Rp
b25zKSB7Ci0gICAgICB2YXIgaGFzaCA9IHt9OwotCi0gICAgICBpZiAoIWluamVjdGlvbnMpIHsg
cmV0dXJuIGhhc2g7IH0KLQotICAgICAgdmFyIGluamVjdGlvbiwgbG9va3VwOwotCi0gICAgICBm
b3IgKHZhciBpPTAsIGw9aW5qZWN0aW9ucy5sZW5ndGg7IGk8bDsgaSsrKSB7Ci0gICAgICAgIGlu
amVjdGlvbiA9IGluamVjdGlvbnNbaV07Ci0gICAgICAgIGxvb2t1cCA9IGNvbnRhaW5lci5sb29r
dXAoaW5qZWN0aW9uLmZ1bGxOYW1lKTsKLQotICAgICAgICBpZiAobG9va3VwICE9PSB1bmRlZmlu
ZWQpIHsKLSAgICAgICAgICBoYXNoW2luamVjdGlvbi5wcm9wZXJ0eV0gPSBsb29rdXA7Ci0gICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBdHRlbXB0aW5nIHRvIGlu
amVjdCBhbiB1bmtub3duIGluamVjdGlvbjogYCcgKyBpbmplY3Rpb24uZnVsbE5hbWUgKyAnYCcp
OwotICAgICAgICB9Ci0gICAgICB9Ci0KLSAgICAgIHJldHVybiBoYXNoOwotICAgIH0KLQotICAg
IGZ1bmN0aW9uIG9wdGlvbihjb250YWluZXIsIGZ1bGxOYW1lLCBvcHRpb25OYW1lKSB7Ci0gICAg
ICB2YXIgb3B0aW9ucyA9IGNvbnRhaW5lci5fb3B0aW9ucy5nZXQoZnVsbE5hbWUpOwotCi0gICAg
ICBpZiAob3B0aW9ucyAmJiBvcHRpb25zW29wdGlvbk5hbWVdICE9PSB1bmRlZmluZWQpIHsKLSAg
ICAgICAgcmV0dXJuIG9wdGlvbnNbb3B0aW9uTmFtZV07Ci0gICAgICB9Ci0KLSAgICAgIHZhciB0
eXBlID0gZnVsbE5hbWUuc3BsaXQoIjoiKVswXTsKLSAgICAgIG9wdGlvbnMgPSBjb250YWluZXIu
X3R5cGVPcHRpb25zLmdldCh0eXBlKTsKLQotICAgICAgaWYgKG9wdGlvbnMpIHsKLSAgICAgICAg
cmV0dXJuIG9wdGlvbnNbb3B0aW9uTmFtZV07Ci0gICAgICB9Ci0gICAgfQotCi0gICAgZnVuY3Rp
b24gZmFjdG9yeUZvcihjb250YWluZXIsIGZ1bGxOYW1lKSB7Ci0gICAgICB2YXIgbmFtZSA9IGNv
bnRhaW5lci5ub3JtYWxpemUoZnVsbE5hbWUpOwotICAgICAgdmFyIGZhY3RvcnkgPSBjb250YWlu
ZXIucmVzb2x2ZShuYW1lKTsKLSAgICAgIHZhciBpbmplY3RlZEZhY3Rvcnk7Ci0gICAgICB2YXIg
Y2FjaGUgPSBjb250YWluZXIuZmFjdG9yeUNhY2hlOwotICAgICAgdmFyIHR5cGUgPSBmdWxsTmFt
ZS5zcGxpdCgiOiIpWzBdOwotCi0gICAgICBpZiAoZmFjdG9yeSA9PT0gdW5kZWZpbmVkKSB7IHJl
dHVybjsgfQotCi0gICAgICBpZiAoY2FjaGUuaGFzKGZ1bGxOYW1lKSkgewotICAgICAgICByZXR1
cm4gY2FjaGUuZ2V0KGZ1bGxOYW1lKTsKLSAgICAgIH0KLQotICAgICAgaWYgKCFmYWN0b3J5IHx8
IHR5cGVvZiBmYWN0b3J5LmV4dGVuZCAhPT0gJ2Z1bmN0aW9uJyB8fCAoIUVtYmVyLk1PREVMX0ZB
Q1RPUllfSU5KRUNUSU9OUyAmJiB0eXBlID09PSAnbW9kZWwnKSkgewotICAgICAgICAvLyBUT0RP
OiB0aGluayBhYm91dCBhICdzYWZlJyBtZXJnZSBzdHlsZSBleHRlbnNpb24KLSAgICAgICAgLy8g
Zm9yIG5vdyBqdXN0IGZhbGxiYWNrIHRvIGNyZWF0ZSB0aW1lIGluamVjdGlvbgotICAgICAgICBy
ZXR1cm4gZmFjdG9yeTsKLSAgICAgIH0gZWxzZSB7Ci0KLSAgICAgICAgdmFyIGluamVjdGlvbnMg
ICAgICAgID0gaW5qZWN0aW9uc0Zvcihjb250YWluZXIsIGZ1bGxOYW1lKTsKLSAgICAgICAgdmFy
IGZhY3RvcnlJbmplY3Rpb25zID0gZmFjdG9yeUluamVjdGlvbnNGb3IoY29udGFpbmVyLCBmdWxs
TmFtZSk7Ci0KLSAgICAgICAgZmFjdG9yeUluamVjdGlvbnMuX3RvU3RyaW5nID0gY29udGFpbmVy
Lm1ha2VUb1N0cmluZyhmYWN0b3J5LCBmdWxsTmFtZSk7Ci0KLSAgICAgICAgaW5qZWN0ZWRGYWN0
b3J5ID0gZmFjdG9yeS5leHRlbmQoaW5qZWN0aW9ucyk7Ci0gICAgICAgIGluamVjdGVkRmFjdG9y
eS5yZW9wZW5DbGFzcyhmYWN0b3J5SW5qZWN0aW9ucyk7Ci0KLSAgICAgICAgY2FjaGUuc2V0KGZ1
bGxOYW1lLCBpbmplY3RlZEZhY3RvcnkpOwotCi0gICAgICAgIHJldHVybiBpbmplY3RlZEZhY3Rv
cnk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gaW5qZWN0aW9uc0Zvcihjb250YWlu
ZXIgLGZ1bGxOYW1lKSB7Ci0gICAgICB2YXIgc3BsaXROYW1lID0gZnVsbE5hbWUuc3BsaXQoIjoi
KSwKLSAgICAgICAgdHlwZSA9IHNwbGl0TmFtZVswXSwKLSAgICAgICAgaW5qZWN0aW9ucyA9IFtd
OwotCi0gICAgICBpbmplY3Rpb25zID0gaW5qZWN0aW9ucy5jb25jYXQoY29udGFpbmVyLnR5cGVJ
bmplY3Rpb25zLmdldCh0eXBlKSB8fCBbXSk7Ci0gICAgICBpbmplY3Rpb25zID0gaW5qZWN0aW9u
cy5jb25jYXQoY29udGFpbmVyLmluamVjdGlvbnNbZnVsbE5hbWVdIHx8IFtdKTsKLQotICAgICAg
aW5qZWN0aW9ucyA9IGJ1aWxkSW5qZWN0aW9ucyhjb250YWluZXIsIGluamVjdGlvbnMpOwotICAg
ICAgaW5qZWN0aW9ucy5fZGVidWdDb250YWluZXJLZXkgPSBmdWxsTmFtZTsKLSAgICAgIGluamVj
dGlvbnMuY29udGFpbmVyID0gY29udGFpbmVyOwotCi0gICAgICByZXR1cm4gaW5qZWN0aW9uczsK
LSAgICB9Ci0KLSAgICBmdW5jdGlvbiBmYWN0b3J5SW5qZWN0aW9uc0Zvcihjb250YWluZXIsIGZ1
bGxOYW1lKSB7Ci0gICAgICB2YXIgc3BsaXROYW1lID0gZnVsbE5hbWUuc3BsaXQoIjoiKSwKLSAg
ICAgICAgdHlwZSA9IHNwbGl0TmFtZVswXSwKLSAgICAgICAgZmFjdG9yeUluamVjdGlvbnMgPSBb
XTsKLQotICAgICAgZmFjdG9yeUluamVjdGlvbnMgPSBmYWN0b3J5SW5qZWN0aW9ucy5jb25jYXQo
Y29udGFpbmVyLmZhY3RvcnlUeXBlSW5qZWN0aW9ucy5nZXQodHlwZSkgfHwgW10pOwotICAgICAg
ZmFjdG9yeUluamVjdGlvbnMgPSBmYWN0b3J5SW5qZWN0aW9ucy5jb25jYXQoY29udGFpbmVyLmZh
Y3RvcnlJbmplY3Rpb25zW2Z1bGxOYW1lXSB8fCBbXSk7Ci0KLSAgICAgIGZhY3RvcnlJbmplY3Rp
b25zID0gYnVpbGRJbmplY3Rpb25zKGNvbnRhaW5lciwgZmFjdG9yeUluamVjdGlvbnMpOwotICAg
ICAgZmFjdG9yeUluamVjdGlvbnMuX2RlYnVnQ29udGFpbmVyS2V5ID0gZnVsbE5hbWU7Ci0KLSAg
ICAgIHJldHVybiBmYWN0b3J5SW5qZWN0aW9uczsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBpbnN0
YW50aWF0ZShjb250YWluZXIsIGZ1bGxOYW1lKSB7Ci0gICAgICB2YXIgZmFjdG9yeSA9IGZhY3Rv
cnlGb3IoY29udGFpbmVyLCBmdWxsTmFtZSk7Ci0KLSAgICAgIGlmIChvcHRpb24oY29udGFpbmVy
LCBmdWxsTmFtZSwgJ2luc3RhbnRpYXRlJykgPT09IGZhbHNlKSB7Ci0gICAgICAgIHJldHVybiBm
YWN0b3J5OwotICAgICAgfQotCi0gICAgICBpZiAoZmFjdG9yeSkgewotICAgICAgICBpZiAodHlw
ZW9mIGZhY3RvcnkuZXh0ZW5kID09PSAnZnVuY3Rpb24nKSB7Ci0gICAgICAgICAgLy8gYXNzdW1l
IHRoZSBmYWN0b3J5IHdhcyBleHRlbmRhYmxlIGFuZCBpcyBhbHJlYWR5IGluamVjdGVkCi0gICAg
ICAgICAgcmV0dXJuIGZhY3RvcnkuY3JlYXRlKCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgLy8gYXNzdW1lIHRoZSBmYWN0b3J5IHdhcyBleHRlbmRhYmxlCi0gICAgICAgICAgLy8gdG8g
Y3JlYXRlIHRpbWUgaW5qZWN0aW9ucwotICAgICAgICAgIC8vIFRPRE86IHN1cHBvcnQgbmV3J2lu
ZyBmb3IgaW5zdGFudGlhdGlvbiBhbmQgbWVyZ2UgaW5qZWN0aW9ucyBmb3IgcHVyZSBKUyBGdW5j
dGlvbnMKLSAgICAgICAgICByZXR1cm4gZmFjdG9yeS5jcmVhdGUoaW5qZWN0aW9uc0Zvcihjb250
YWluZXIsIGZ1bGxOYW1lKSk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0KLSAgICBmdW5j
dGlvbiBlYWNoRGVzdHJveWFibGUoY29udGFpbmVyLCBjYWxsYmFjaykgewotICAgICAgY29udGFp
bmVyLmNhY2hlLmVhY2hMb2NhbChmdW5jdGlvbihrZXksIHZhbHVlKSB7Ci0gICAgICAgIGlmIChv
cHRpb24oY29udGFpbmVyLCBrZXksICdpbnN0YW50aWF0ZScpID09PSBmYWxzZSkgeyByZXR1cm47
IH0KLSAgICAgICAgY2FsbGJhY2sodmFsdWUpOwotICAgICAgfSk7Ci0gICAgfQotCi0gICAgZnVu
Y3Rpb24gcmVzZXRDYWNoZShjb250YWluZXIpIHsKLSAgICAgIGNvbnRhaW5lci5jYWNoZS5lYWNo
TG9jYWwoZnVuY3Rpb24oa2V5LCB2YWx1ZSkgewotICAgICAgICBpZiAob3B0aW9uKGNvbnRhaW5l
ciwga2V5LCAnaW5zdGFudGlhdGUnKSA9PT0gZmFsc2UpIHsgcmV0dXJuOyB9Ci0gICAgICAgIHZh
bHVlLmRlc3Ryb3koKTsKLSAgICAgIH0pOwotICAgICAgY29udGFpbmVyLmNhY2hlLmRpY3QgPSB7
fTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBhZGRUeXBlSW5qZWN0aW9uKHJ1bGVzLCB0eXBlLCBw
cm9wZXJ0eSwgZnVsbE5hbWUpIHsKLSAgICAgIHZhciBpbmplY3Rpb25zID0gcnVsZXMuZ2V0KHR5
cGUpOwotCi0gICAgICBpZiAoIWluamVjdGlvbnMpIHsKLSAgICAgICAgaW5qZWN0aW9ucyA9IFtd
OwotICAgICAgICBydWxlcy5zZXQodHlwZSwgaW5qZWN0aW9ucyk7Ci0gICAgICB9Ci0KLSAgICAg
IGluamVjdGlvbnMucHVzaCh7Ci0gICAgICAgIHByb3BlcnR5OiBwcm9wZXJ0eSwKLSAgICAgICAg
ZnVsbE5hbWU6IGZ1bGxOYW1lCi0gICAgICB9KTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBhZGRJ
bmplY3Rpb24ocnVsZXMsIGZhY3RvcnlOYW1lLCBwcm9wZXJ0eSwgaW5qZWN0aW9uTmFtZSkgewot
ICAgICAgdmFyIGluamVjdGlvbnMgPSBydWxlc1tmYWN0b3J5TmFtZV0gPSBydWxlc1tmYWN0b3J5
TmFtZV0gfHwgW107Ci0gICAgICBpbmplY3Rpb25zLnB1c2goeyBwcm9wZXJ0eTogcHJvcGVydHks
IGZ1bGxOYW1lOiBpbmplY3Rpb25OYW1lIH0pOwotICAgIH0KLQotICAgIHJldHVybiBDb250YWlu
ZXI7Ci19KTsKLQotfSkoKTsKLQotKGZ1bmN0aW9uKCkgewotLypnbG9iYWxzIEVOViAqLwotLyoq
Ci1AbW9kdWxlIGVtYmVyCi1Ac3VibW9kdWxlIGVtYmVyLXJ1bnRpbWUKLSovCi0KLXZhciBpbmRl
eE9mID0gRW1iZXIuRW51bWVyYWJsZVV0aWxzLmluZGV4T2Y7Ci0KLS8qKgotIFRoaXMgd2lsbCBj
b21wYXJlIHR3byBqYXZhc2NyaXB0IHZhbHVlcyBvZiBwb3NzaWJseSBkaWZmZXJlbnQgdHlwZXMu
Ci0gSXQgd2lsbCB0ZWxsIHlvdSB3aGljaCBvbmUgaXMgZ3JlYXRlciB0aGFuIHRoZSBvdGhlciBi
eSByZXR1cm5pbmc6Ci0KLSAgLSAtMSBpZiB0aGUgZmlyc3QgaXMgc21hbGxlciB0aGFuIHRoZSBz
ZWNvbmQsCi0gIC0gMCBpZiBib3RoIGFyZSBlcXVhbCwKLSAgLSAxIGlmIHRoZSBmaXJzdCBpcyBn
cmVhdGVyIHRoYW4gdGhlIHNlY29uZC4KLQotIFRoZSBvcmRlciBpcyBjYWxjdWxhdGVkIGJhc2Vk
IG9uIGBFbWJlci5PUkRFUl9ERUZJTklUSU9OYCwgaWYgdHlwZXMgYXJlIGRpZmZlcmVudC4KLSBJ
biBjYXNlIHRoZXkgaGF2ZSB0aGUgc2FtZSB0eXBlIGFuIGFwcHJvcHJpYXRlIGNvbXBhcmlzb24g
Zm9yIHRoaXMgdHlwZSBpcyBtYWRlLgotCi0gIGBgYGphdmFzY3JpcHQKLSAgRW1iZXIuY29tcGFy
ZSgnaGVsbG8nLCAnaGVsbG8nKTsgIC8vIDAKLSAgRW1iZXIuY29tcGFyZSgnYWJjJywgJ2RmZycp
OyAgICAgIC8vIC0xCi0gIEVtYmVyLmNvbXBhcmUoMiwgMSk7ICAgICAgICAgICAgICAvLyAxCi0g
IGBgYAotCi0gQG1ldGhvZCBjb21wYXJlCi0gQGZvciBFbWJlcgotIEBwYXJhbSB7T2JqZWN0fSB2
IEZpcnN0IHZhbHVlIHRvIGNvbXBhcmUKLSBAcGFyYW0ge09iamVjdH0gdyBTZWNvbmQgdmFsdWUg
dG8gY29tcGFyZQotIEByZXR1cm4ge051bWJlcn0gLTEgaWYgdiA8IHcsIDAgaWYgdiA9IHcgYW5k
IDEgaWYgdiA+IHcuCi0qLwotRW1iZXIuY29tcGFyZSA9IGZ1bmN0aW9uIGNvbXBhcmUodiwgdykg
ewotICBpZiAodiA9PT0gdykgeyByZXR1cm4gMDsgfQotCi0gIHZhciB0eXBlMSA9IEVtYmVyLnR5
cGVPZih2KTsKLSAgdmFyIHR5cGUyID0gRW1iZXIudHlwZU9mKHcpOwotCi0gIHZhciBDb21wYXJh
YmxlID0gRW1iZXIuQ29tcGFyYWJsZTsKLSAgaWYgKENvbXBhcmFibGUpIHsKLSAgICBpZiAodHlw
ZTE9PT0naW5zdGFuY2UnICYmIENvbXBhcmFibGUuZGV0ZWN0KHYuY29uc3RydWN0b3IpKSB7Ci0g
ICAgICByZXR1cm4gdi5jb25zdHJ1Y3Rvci5jb21wYXJlKHYsIHcpOwotICAgIH0KLQotICAgIGlm
ICh0eXBlMiA9PT0gJ2luc3RhbmNlJyAmJiBDb21wYXJhYmxlLmRldGVjdCh3LmNvbnN0cnVjdG9y
KSkgewotICAgICAgcmV0dXJuIDEtdy5jb25zdHJ1Y3Rvci5jb21wYXJlKHcsIHYpOwotICAgIH0K
LSAgfQotCi0gIC8vIElmIHdlIGhhdmVuJ3QgeWV0IGdlbmVyYXRlZCBhIHJldmVyc2UtbWFwcGlu
ZyBvZiBFbWJlci5PUkRFUl9ERUZJTklUSU9OLAotICAvLyBkbyBzbyBub3cuCi0gIHZhciBtYXBw
aW5nID0gRW1iZXIuT1JERVJfREVGSU5JVElPTl9NQVBQSU5HOwotICBpZiAoIW1hcHBpbmcpIHsK
LSAgICB2YXIgb3JkZXIgPSBFbWJlci5PUkRFUl9ERUZJTklUSU9OOwotICAgIG1hcHBpbmcgPSBF
bWJlci5PUkRFUl9ERUZJTklUSU9OX01BUFBJTkcgPSB7fTsKLSAgICB2YXIgaWR4LCBsZW47Ci0g
ICAgZm9yIChpZHggPSAwLCBsZW4gPSBvcmRlci5sZW5ndGg7IGlkeCA8IGxlbjsgICsraWR4KSB7
Ci0gICAgICBtYXBwaW5nW29yZGVyW2lkeF1dID0gaWR4OwotICAgIH0KLQotICAgIC8vIFdlIG5v
IGxvbmdlciBuZWVkIEVtYmVyLk9SREVSX0RFRklOSVRJT04uCi0gICAgZGVsZXRlIEVtYmVyLk9S
REVSX0RFRklOSVRJT047Ci0gIH0KLQotICB2YXIgdHlwZTFJbmRleCA9IG1hcHBpbmdbdHlwZTFd
OwotICB2YXIgdHlwZTJJbmRleCA9IG1hcHBpbmdbdHlwZTJdOwotCi0gIGlmICh0eXBlMUluZGV4
IDwgdHlwZTJJbmRleCkgeyByZXR1cm4gLTE7IH0KLSAgaWYgKHR5cGUxSW5kZXggPiB0eXBlMklu
ZGV4KSB7IHJldHVybiAxOyB9Ci0KLSAgLy8gdHlwZXMgYXJlIGVxdWFsIC0gc28gd2UgaGF2ZSB0
byBjaGVjayB2YWx1ZXMgbm93Ci0gIHN3aXRjaCAodHlwZTEpIHsKLSAgICBjYXNlICdib29sZWFu
JzoKLSAgICBjYXNlICdudW1iZXInOgotICAgICAgaWYgKHYgPCB3KSB7IHJldHVybiAtMTsgfQot
ICAgICAgaWYgKHYgPiB3KSB7IHJldHVybiAxOyB9Ci0gICAgICByZXR1cm4gMDsKLQotICAgIGNh
c2UgJ3N0cmluZyc6Ci0gICAgICB2YXIgY29tcCA9IHYubG9jYWxlQ29tcGFyZSh3KTsKLSAgICAg
IGlmIChjb21wIDwgMCkgeyByZXR1cm4gLTE7IH0KLSAgICAgIGlmIChjb21wID4gMCkgeyByZXR1
cm4gMTsgfQotICAgICAgcmV0dXJuIDA7Ci0KLSAgICBjYXNlICdhcnJheSc6Ci0gICAgICB2YXIg
dkxlbiA9IHYubGVuZ3RoOwotICAgICAgdmFyIHdMZW4gPSB3Lmxlbmd0aDsKLSAgICAgIHZhciBs
ID0gTWF0aC5taW4odkxlbiwgd0xlbik7Ci0gICAgICB2YXIgciA9IDA7Ci0gICAgICB2YXIgaSA9
IDA7Ci0gICAgICB3aGlsZSAociA9PT0gMCAmJiBpIDwgbCkgewotICAgICAgICByID0gY29tcGFy
ZSh2W2ldLHdbaV0pOwotICAgICAgICBpKys7Ci0gICAgICB9Ci0gICAgICBpZiAociAhPT0gMCkg
eyByZXR1cm4gcjsgfQotCi0gICAgICAvLyBhbGwgZWxlbWVudHMgYXJlIGVxdWFsIG5vdwotICAg
ICAgLy8gc2hvcnRlciBhcnJheSBzaG91bGQgYmUgb3JkZXJlZCBmaXJzdAotICAgICAgaWYgKHZM
ZW4gPCB3TGVuKSB7IHJldHVybiAtMTsgfQotICAgICAgaWYgKHZMZW4gPiB3TGVuKSB7IHJldHVy
biAxOyB9Ci0gICAgICAvLyBhcnJheXMgYXJlIGVxdWFsIG5vdwotICAgICAgcmV0dXJuIDA7Ci0K
LSAgICBjYXNlICdpbnN0YW5jZSc6Ci0gICAgICBpZiAoRW1iZXIuQ29tcGFyYWJsZSAmJiBFbWJl
ci5Db21wYXJhYmxlLmRldGVjdCh2KSkgewotICAgICAgICByZXR1cm4gdi5jb21wYXJlKHYsIHcp
OwotICAgICAgfQotICAgICAgcmV0dXJuIDA7Ci0KLSAgICBjYXNlICdkYXRlJzoKLSAgICAgIHZh
ciB2TnVtID0gdi5nZXRUaW1lKCk7Ci0gICAgICB2YXIgd051bSA9IHcuZ2V0VGltZSgpOwotICAg
ICAgaWYgKHZOdW0gPCB3TnVtKSB7IHJldHVybiAtMTsgfQotICAgICAgaWYgKHZOdW0gPiB3TnVt
KSB7IHJldHVybiAxOyB9Ci0gICAgICByZXR1cm4gMDsKLQotICAgIGRlZmF1bHQ6Ci0gICAgICBy
ZXR1cm4gMDsKLSAgfQotfTsKLQotZnVuY3Rpb24gX2NvcHkob2JqLCBkZWVwLCBzZWVuLCBjb3Bp
ZXMpIHsKLSAgdmFyIHJldCwgbG9jLCBrZXk7Ci0KLSAgLy8gcHJpbWl0aXZlIGRhdGEgdHlwZXMg
YXJlIGltbXV0YWJsZSwganVzdCByZXR1cm4gdGhlbS4KLSAgaWYgKCdvYmplY3QnICE9PSB0eXBl
b2Ygb2JqIHx8IG9iaj09PW51bGwpIHJldHVybiBvYmo7Ci0KLSAgLy8gYXZvaWQgY3ljbGljYWwg
bG9vcHMKLSAgaWYgKGRlZXAgJiYgKGxvYz1pbmRleE9mKHNlZW4sIG9iaikpPj0wKSByZXR1cm4g
Y29waWVzW2xvY107Ci0KLSAgRW1iZXIuYXNzZXJ0KCdDYW5ub3QgY2xvbmUgYW4gRW1iZXIuT2Jq
ZWN0IHRoYXQgZG9lcyBub3QgaW1wbGVtZW50IEVtYmVyLkNvcHlhYmxlJywgIShvYmogaW5zdGFu
Y2VvZiBFbWJlci5PYmplY3QpIHx8IChFbWJlci5Db3B5YWJsZSAmJiBFbWJlci5Db3B5YWJsZS5k
ZXRlY3Qob2JqKSkpOwotCi0gIC8vIElNUE9SVEFOVDogdGhpcyBzcGVjaWZpYyB0ZXN0IHdpbGwg
ZGV0ZWN0IGEgbmF0aXZlIGFycmF5IG9ubHkuIEFueSBvdGhlcgotICAvLyBvYmplY3Qgd2lsbCBu
ZWVkIHRvIGltcGxlbWVudCBDb3B5YWJsZS4KLSAgaWYgKEVtYmVyLnR5cGVPZihvYmopID09PSAn
YXJyYXknKSB7Ci0gICAgcmV0ID0gb2JqLnNsaWNlKCk7Ci0gICAgaWYgKGRlZXApIHsKLSAgICAg
IGxvYyA9IHJldC5sZW5ndGg7Ci0gICAgICB3aGlsZSgtLWxvYz49MCkgcmV0W2xvY10gPSBfY29w
eShyZXRbbG9jXSwgZGVlcCwgc2VlbiwgY29waWVzKTsKLSAgICB9Ci0gIH0gZWxzZSBpZiAoRW1i
ZXIuQ29weWFibGUgJiYgRW1iZXIuQ29weWFibGUuZGV0ZWN0KG9iaikpIHsKLSAgICByZXQgPSBv
YmouY29weShkZWVwLCBzZWVuLCBjb3BpZXMpOwotICB9IGVsc2UgewotICAgIHJldCA9IHt9Owot
ICAgIGZvcihrZXkgaW4gb2JqKSB7Ci0gICAgICBpZiAoIW9iai5oYXNPd25Qcm9wZXJ0eShrZXkp
KSBjb250aW51ZTsKLQotICAgICAgLy8gUHJldmVudHMgYnJvd3NlcnMgdGhhdCBkb24ndCByZXNw
ZWN0IG5vbi1lbnVtZXJhYmlsaXR5IGZyb20KLSAgICAgIC8vIGNvcHlpbmcgaW50ZXJuYWwgRW1i
ZXIgcHJvcGVydGllcwotICAgICAgaWYgKGtleS5zdWJzdHJpbmcoMCwyKSA9PT0gJ19fJykgY29u
dGludWU7Ci0KLSAgICAgIHJldFtrZXldID0gZGVlcCA/IF9jb3B5KG9ialtrZXldLCBkZWVwLCBz
ZWVuLCBjb3BpZXMpIDogb2JqW2tleV07Ci0gICAgfQotICB9Ci0KLSAgaWYgKGRlZXApIHsKLSAg
ICBzZWVuLnB1c2gob2JqKTsKLSAgICBjb3BpZXMucHVzaChyZXQpOwotICB9Ci0KLSAgcmV0dXJu
IHJldDsKLX0KLQotLyoqCi0gIENyZWF0ZXMgYSBjbG9uZSBvZiB0aGUgcGFzc2VkIG9iamVjdC4g
VGhpcyBmdW5jdGlvbiBjYW4gdGFrZSBqdXN0IGFib3V0Ci0gIGFueSB0eXBlIG9mIG9iamVjdCBh
bmQgY3JlYXRlIGEgY2xvbmUgb2YgaXQsIGluY2x1ZGluZyBwcmltaXRpdmUgdmFsdWVzCi0gICh3
aGljaCBhcmUgbm90IGFjdHVhbGx5IGNsb25lZCBiZWNhdXNlIHRoZXkgYXJlIGltbXV0YWJsZSku
Ci0KLSAgSWYgdGhlIHBhc3NlZCBvYmplY3QgaW1wbGVtZW50cyB0aGUgYGNsb25lKClgIG1ldGhv
ZCwgdGhlbiB0aGlzIGZ1bmN0aW9uCi0gIHdpbGwgc2ltcGx5IGNhbGwgdGhhdCBtZXRob2QgYW5k
IHJldHVybiB0aGUgcmVzdWx0LgotCi0gIEBtZXRob2QgY29weQotICBAZm9yIEVtYmVyCi0gIEBw
YXJhbSB7T2JqZWN0fSBvYmogVGhlIG9iamVjdCB0byBjbG9uZQotICBAcGFyYW0ge0Jvb2xlYW59
IGRlZXAgSWYgdHJ1ZSwgYSBkZWVwIGNvcHkgb2YgdGhlIG9iamVjdCBpcyBtYWRlCi0gIEByZXR1
cm4ge09iamVjdH0gVGhlIGNsb25lZCBvYmplY3QKLSovCi1FbWJlci5jb3B5ID0gZnVuY3Rpb24o
b2JqLCBkZWVwKSB7Ci0gIC8vIGZhc3QgcGF0aHMKLSAgaWYgKCdvYmplY3QnICE9PSB0eXBlb2Yg
b2JqIHx8IG9iaj09PW51bGwpIHJldHVybiBvYmo7IC8vIGNhbid0IGNvcHkgcHJpbWl0aXZlcwot
ICBpZiAoRW1iZXIuQ29weWFibGUgJiYgRW1iZXIuQ29weWFibGUuZGV0ZWN0KG9iaikpIHJldHVy
biBvYmouY29weShkZWVwKTsKLSAgcmV0dXJuIF9jb3B5KG9iaiwgZGVlcCwgZGVlcCA/IFtdIDog
bnVsbCwgZGVlcCA/IFtdIDogbnVsbCk7Ci19OwotCi0vKioKLSAgQ29udmVuaWVuY2UgbWV0aG9k
IHRvIGluc3BlY3QgYW4gb2JqZWN0LiBUaGlzIG1ldGhvZCB3aWxsIGF0dGVtcHQgdG8KLSAgY29u
dmVydCB0aGUgb2JqZWN0IGludG8gYSB1c2VmdWwgc3RyaW5nIGRlc2NyaXB0aW9uLgotCi0gIEl0
IGlzIGEgcHJldHR5IHNpbXBsZSBpbXBsZW1lbnRhdGlvbi4gSWYgeW91IHdhbnQgc29tZXRoaW5n
IG1vcmUgcm9idXN0LAotICB1c2Ugc29tZXRoaW5nIGxpa2UgSlNEdW1wOiBodHRwczovL2dpdGh1
Yi5jb20vTlYvanNEdW1wCi0KLSAgQG1ldGhvZCBpbnNwZWN0Ci0gIEBmb3IgRW1iZXIKLSAgQHBh
cmFtIHtPYmplY3R9IG9iaiBUaGUgb2JqZWN0IHlvdSB3YW50IHRvIGluc3BlY3QuCi0gIEByZXR1
cm4ge1N0cmluZ30gQSBkZXNjcmlwdGlvbiBvZiB0aGUgb2JqZWN0Ci0qLwotRW1iZXIuaW5zcGVj
dCA9IGZ1bmN0aW9uKG9iaikgewotICB2YXIgdHlwZSA9IEVtYmVyLnR5cGVPZihvYmopOwotICBp
ZiAodHlwZSA9PT0gJ2FycmF5JykgewotICAgIHJldHVybiAnWycgKyBvYmogKyAnXSc7Ci0gIH0K
LSAgaWYgKHR5cGUgIT09ICdvYmplY3QnKSB7Ci0gICAgcmV0dXJuIG9iaiArICcnOwotICB9Ci0K
LSAgdmFyIHYsIHJldCA9IFtdOwotICBmb3IodmFyIGtleSBpbiBvYmopIHsKLSAgICBpZiAob2Jq
Lmhhc093blByb3BlcnR5KGtleSkpIHsKLSAgICAgIHYgPSBvYmpba2V5XTsKLSAgICAgIGlmICh2
ID09PSAndG9TdHJpbmcnKSB7IGNvbnRpbnVlOyB9IC8vIGlnbm9yZSB1c2VsZXNzIGl0ZW1zCi0g
ICAgICBpZiAoRW1iZXIudHlwZU9mKHYpID09PSAnZnVuY3Rpb24nKSB7IHYgPSAiZnVuY3Rpb24o
KSB7IC4uLiB9IjsgfQotICAgICAgcmV0LnB1c2goa2V5ICsgIjogIiArIHYpOwotICAgIH0KLSAg
fQotICByZXR1cm4gInsiICsgcmV0LmpvaW4oIiwgIikgKyAifSI7Ci19OwotCi0vKioKLSAgQ29t
cGFyZXMgdHdvIG9iamVjdHMsIHJldHVybmluZyB0cnVlIGlmIHRoZXkgYXJlIGxvZ2ljYWxseSBl
cXVhbC4gVGhpcyBpcwotICBhIGRlZXBlciBjb21wYXJpc29uIHRoYW4gYSBzaW1wbGUgdHJpcGxl
IGVxdWFsLiBGb3Igc2V0cyBpdCB3aWxsIGNvbXBhcmUgdGhlCi0gIGludGVybmFsIG9iamVjdHMu
IEZvciBhbnkgb3RoZXIgb2JqZWN0IHRoYXQgaW1wbGVtZW50cyBgaXNFcXVhbCgpYCBpdCB3aWxs
Ci0gIHJlc3BlY3QgdGhhdCBtZXRob2QuCi0KLSAgYGBgamF2YXNjcmlwdAotICBFbWJlci5pc0Vx
dWFsKCdoZWxsbycsICdoZWxsbycpOyAgLy8gdHJ1ZQotICBFbWJlci5pc0VxdWFsKDEsIDIpOyAg
ICAgICAgICAgICAgLy8gZmFsc2UKLSAgRW1iZXIuaXNFcXVhbChbNCwyXSwgWzQsMl0pOyAgICAg
IC8vIGZhbHNlCi0gIGBgYAotCi0gIEBtZXRob2QgaXNFcXVhbAotICBAZm9yIEVtYmVyCi0gIEBw
YXJhbSB7T2JqZWN0fSBhIGZpcnN0IG9iamVjdCB0byBjb21wYXJlCi0gIEBwYXJhbSB7T2JqZWN0
fSBiIHNlY29uZCBvYmplY3QgdG8gY29tcGFyZQotICBAcmV0dXJuIHtCb29sZWFufQotKi8KLUVt
YmVyLmlzRXF1YWwgPSBmdW5jdGlvbihhLCBiKSB7Ci0gIGlmIChhICYmICdmdW5jdGlvbic9PT10
eXBlb2YgYS5pc0VxdWFsKSByZXR1cm4gYS5pc0VxdWFsKGIpOwotICByZXR1cm4gYSA9PT0gYjsK
LX07Ci0KLS8vIFVzZWQgYnkgRW1iZXIuY29tcGFyZQotRW1iZXIuT1JERVJfREVGSU5JVElPTiA9
IEVtYmVyLkVOVi5PUkRFUl9ERUZJTklUSU9OIHx8IFsKLSAgJ3VuZGVmaW5lZCcsCi0gICdudWxs
JywKLSAgJ2Jvb2xlYW4nLAotICAnbnVtYmVyJywKLSAgJ3N0cmluZycsCi0gICdhcnJheScsCi0g
ICdvYmplY3QnLAotICAnaW5zdGFuY2UnLAotICAnZnVuY3Rpb24nLAotICAnY2xhc3MnLAotICAn
ZGF0ZScKLV07Ci0KLS8qKgotICBSZXR1cm5zIGFsbCBvZiB0aGUga2V5cyBkZWZpbmVkIG9uIGFu
IG9iamVjdCBvciBoYXNoLiBUaGlzIGlzIHVzZWZ1bAotICB3aGVuIGluc3BlY3Rpbmcgb2JqZWN0
cyBmb3IgZGVidWdnaW5nLiBPbiBicm93c2VycyB0aGF0IHN1cHBvcnQgaXQsIHRoaXMKLSAgdXNl
cyB0aGUgbmF0aXZlIGBPYmplY3Qua2V5c2AgaW1wbGVtZW50YXRpb24uCi0KLSAgQG1ldGhvZCBr
ZXlzCi0gIEBmb3IgRW1iZXIKLSAgQHBhcmFtIHtPYmplY3R9IG9iagotICBAcmV0dXJuIHtBcnJh
eX0gQXJyYXkgY29udGFpbmluZyBrZXlzIG9mIG9iagotKi8KLUVtYmVyLmtleXMgPSBPYmplY3Qu
a2V5czsKLQotaWYgKCFFbWJlci5rZXlzIHx8IEVtYmVyLmNyZWF0ZS5pc1NpbXVsYXRlZCkgewot
ICB2YXIgcHJvdG90eXBlUHJvcGVydGllcyA9IFsKLSAgICAnY29uc3RydWN0b3InLAotICAgICdo
YXNPd25Qcm9wZXJ0eScsCi0gICAgJ2lzUHJvdG90eXBlT2YnLAotICAgICdwcm9wZXJ0eUlzRW51
bWVyYWJsZScsCi0gICAgJ3ZhbHVlT2YnLAotICAgICd0b0xvY2FsZVN0cmluZycsCi0gICAgJ3Rv
U3RyaW5nJwotICBdLAotICBwdXNoUHJvcGVydHlOYW1lID0gZnVuY3Rpb24ob2JqLCBhcnJheSwg
a2V5KSB7Ci0gICAgLy8gUHJldmVudHMgYnJvd3NlcnMgdGhhdCBkb24ndCByZXNwZWN0IG5vbi1l
bnVtZXJhYmlsaXR5IGZyb20KLSAgICAvLyBjb3B5aW5nIGludGVybmFsIEVtYmVyIHByb3BlcnRp
ZXMKLSAgICBpZiAoa2V5LnN1YnN0cmluZygwLDIpID09PSAnX18nKSByZXR1cm47Ci0gICAgaWYg
KGtleSA9PT0gJ19zdXBlcicpIHJldHVybjsKLSAgICBpZiAoaW5kZXhPZihhcnJheSwga2V5KSA+
PSAwKSByZXR1cm47Ci0gICAgaWYgKCFvYmouaGFzT3duUHJvcGVydHkoa2V5KSkgcmV0dXJuOwot
Ci0gICAgYXJyYXkucHVzaChrZXkpOwotICB9OwotCi0gIEVtYmVyLmtleXMgPSBmdW5jdGlvbihv
YmopIHsKLSAgICB2YXIgcmV0ID0gW10sIGtleTsKLSAgICBmb3IgKGtleSBpbiBvYmopIHsKLSAg
ICAgIHB1c2hQcm9wZXJ0eU5hbWUob2JqLCByZXQsIGtleSk7Ci0gICAgfQotCi0gICAgLy8gSUU4
IGRvZXNuJ3QgZW51bWVyYXRlIHByb3BlcnR5IHRoYXQgbmFtZWQgdGhlIHNhbWUgYXMgcHJvdG90
eXBlIHByb3BlcnRpZXMuCi0gICAgZm9yICh2YXIgaSA9IDAsIGwgPSBwcm90b3R5cGVQcm9wZXJ0
aWVzLmxlbmd0aDsgaSA8IGw7IGkrKykgewotICAgICAga2V5ID0gcHJvdG90eXBlUHJvcGVydGll
c1tpXTsKLQotICAgICAgcHVzaFByb3BlcnR5TmFtZShvYmosIHJldCwga2V5KTsKLSAgICB9Ci0K
LSAgICByZXR1cm4gcmV0OwotICB9OwotfQotCi19KSgpOwotCi0KLQotKGZ1bmN0aW9uKCkgewot
LyoqCi1AbW9kdWxlIGVtYmVyCi1Ac3VibW9kdWxlIGVtYmVyLXJ1bnRpbWUKLSovCi0KLXZhciBT
VFJJTkdfREFTSEVSSVpFX1JFR0VYUCA9ICgvWyBfXS9nKTsKLXZhciBTVFJJTkdfREFTSEVSSVpF
X0NBQ0hFID0ge307Ci12YXIgU1RSSU5HX0RFQ0FNRUxJWkVfUkVHRVhQID0gKC8oW2EtelxkXSko
W0EtWl0pL2cpOwotdmFyIFNUUklOR19DQU1FTElaRV9SRUdFWFAgPSAoLyhcLXxffFwufFxzKSso
Lik/L2cpOwotdmFyIFNUUklOR19VTkRFUlNDT1JFX1JFR0VYUF8xID0gKC8oW2EtelxkXSkoW0Et
Wl0rKS9nKTsKLXZhciBTVFJJTkdfVU5ERVJTQ09SRV9SRUdFWFBfMiA9ICgvXC18XHMrL2cpOwot
Ci0vKioKLSAgRGVmaW5lcyB0aGUgaGFzaCBvZiBsb2NhbGl6ZWQgc3RyaW5ncyBmb3IgdGhlIGN1
cnJlbnQgbGFuZ3VhZ2UuIFVzZWQgYnkKLSAgdGhlIGBFbWJlci5TdHJpbmcubG9jKClgIGhlbHBl
ci4gVG8gbG9jYWxpemUsIGFkZCBzdHJpbmcgdmFsdWVzIHRvIHRoaXMKLSAgaGFzaC4KLQotICBA
cHJvcGVydHkgU1RSSU5HUwotICBAZm9yIEVtYmVyCi0gIEB0eXBlIEhhc2gKLSovCi1FbWJlci5T
VFJJTkdTID0ge307Ci0KLS8qKgotICBEZWZpbmVzIHN0cmluZyBoZWxwZXIgbWV0aG9kcyBpbmNs
dWRpbmcgc3RyaW5nIGZvcm1hdHRpbmcgYW5kIGxvY2FsaXphdGlvbi4KLSAgVW5sZXNzIGBFbWJl
ci5FWFRFTkRfUFJPVE9UWVBFUy5TdHJpbmdgIGlzIGBmYWxzZWAgdGhlc2UgbWV0aG9kcyB3aWxs
IGFsc28gYmUKLSAgYWRkZWQgdG8gdGhlIGBTdHJpbmcucHJvdG90eXBlYCBhcyB3ZWxsLgotCi0g
IEBjbGFzcyBTdHJpbmcKLSAgQG5hbWVzcGFjZSBFbWJlcgotICBAc3RhdGljCi0qLwotRW1iZXIu
U3RyaW5nID0gewotCi0gIC8qKgotICAgIEFwcGx5IGZvcm1hdHRpbmcgb3B0aW9ucyB0byB0aGUg
c3RyaW5nLiBUaGlzIHdpbGwgbG9vayBmb3Igb2NjdXJyZW5jZXMKLSAgICBvZiAiJUAiIGluIHlv
dXIgc3RyaW5nIGFuZCBzdWJzdGl0dXRlIHRoZW0gd2l0aCB0aGUgYXJndW1lbnRzIHlvdSBwYXNz
IGludG8KLSAgICB0aGlzIG1ldGhvZC4gSWYgeW91IHdhbnQgdG8gY29udHJvbCB0aGUgc3BlY2lm
aWMgb3JkZXIgb2YgcmVwbGFjZW1lbnQsCi0gICAgeW91IGNhbiBhZGQgYSBudW1iZXIgYWZ0ZXIg
dGhlIGtleSBhcyB3ZWxsIHRvIGluZGljYXRlIHdoaWNoIGFyZ3VtZW50Ci0gICAgeW91IHdhbnQg
dG8gaW5zZXJ0LgotCi0gICAgT3JkZXJlZCBpbnNlcnRpb25zIGFyZSBtb3N0IHVzZWZ1bCB3aGVu
IGJ1aWxkaW5nIGxvYyBzdHJpbmdzIHdoZXJlIHZhbHVlcwotICAgIHlvdSBuZWVkIHRvIGluc2Vy
dCBtYXkgYXBwZWFyIGluIGRpZmZlcmVudCBvcmRlcnMuCi0KLSAgICBgYGBqYXZhc2NyaXB0Ci0g
ICAgIkhlbGxvICVAICVAIi5mbXQoJ0pvaG4nLCAnRG9lJyk7ICAgICAvLyAiSGVsbG8gSm9obiBE
b2UiCi0gICAgIkhlbGxvICVAMiwgJUAxIi5mbXQoJ0pvaG4nLCAnRG9lJyk7ICAvLyAiSGVsbG8g
RG9lLCBKb2huIgotICAgIGBgYAotCi0gICAgQG1ldGhvZCBmbXQKLSAgICBAcGFyYW0ge1N0cmlu
Z30gc3RyIFRoZSBzdHJpbmcgdG8gZm9ybWF0Ci0gICAgQHBhcmFtIHtBcnJheX0gZm9ybWF0cyBB
biBhcnJheSBvZiBwYXJhbWV0ZXJzIHRvIGludGVycG9sYXRlIGludG8gc3RyaW5nLgotICAgIEBy
ZXR1cm4ge1N0cmluZ30gZm9ybWF0dGVkIHN0cmluZwotICAqLwotICBmbXQ6IGZ1bmN0aW9uKHN0
ciwgZm9ybWF0cykgewotICAgIC8vIGZpcnN0LCByZXBsYWNlIGFueSBPUkRFUkVEIHJlcGxhY2Vt
ZW50cy4KLSAgICB2YXIgaWR4ICA9IDA7IC8vIHRoZSBjdXJyZW50IGluZGV4IGZvciBub24tbnVt
ZXJpY2FsIHJlcGxhY2VtZW50cwotICAgIHJldHVybiBzdHIucmVwbGFjZSgvJUAoWzAtOV0rKT8v
ZywgZnVuY3Rpb24ocywgYXJnSW5kZXgpIHsKLSAgICAgIGFyZ0luZGV4ID0gKGFyZ0luZGV4KSA/
IHBhcnNlSW50KGFyZ0luZGV4LCAxMCkgLSAxIDogaWR4Kys7Ci0gICAgICBzID0gZm9ybWF0c1th
cmdJbmRleF07Ci0gICAgICByZXR1cm4gKHMgPT09IG51bGwpID8gJyhudWxsKScgOiAocyA9PT0g
dW5kZWZpbmVkKSA/ICcnIDogRW1iZXIuaW5zcGVjdChzKTsKLSAgICB9KSA7Ci0gIH0sCi0KLSAg
LyoqCi0gICAgRm9ybWF0cyB0aGUgcGFzc2VkIHN0cmluZywgYnV0IGZpcnN0IGxvb2tzIHVwIHRo
ZSBzdHJpbmcgaW4gdGhlIGxvY2FsaXplZAotICAgIHN0cmluZ3MgaGFzaC4gVGhpcyBpcyBhIGNv
bnZlbmllbnQgd2F5IHRvIGxvY2FsaXplIHRleHQuIFNlZQotICAgIGBFbWJlci5TdHJpbmcuZm10
KClgIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGZvcm1hdHRpbmcuCi0KLSAgICBOb3RlIHRoYXQg
aXQgaXMgdHJhZGl0aW9uYWwgYnV0IG5vdCByZXF1aXJlZCB0byBwcmVmaXggbG9jYWxpemVkIHN0
cmluZwotICAgIGtleXMgd2l0aCBhbiB1bmRlcnNjb3JlIG9yIG90aGVyIGNoYXJhY3RlciBzbyB5
b3UgY2FuIGVhc2lseSBpZGVudGlmeQotICAgIGxvY2FsaXplZCBzdHJpbmdzLgotCi0gICAgYGBg
amF2YXNjcmlwdAotICAgIEVtYmVyLlNUUklOR1MgPSB7Ci0gICAgICAnX0hlbGxvIFdvcmxkJzog
J0JvbmpvdXIgbGUgbW9uZGUnLAotICAgICAgJ19IZWxsbyAlQCAlQCc6ICdCb25qb3VyICVAICVA
JwotICAgIH07Ci0KLSAgICBFbWJlci5TdHJpbmcubG9jKCJfSGVsbG8gV29ybGQiKTsgIC8vICdC
b25qb3VyIGxlIG1vbmRlJzsKLSAgICBFbWJlci5TdHJpbmcubG9jKCJfSGVsbG8gJUAgJUAiLCBb
IkpvaG4iLCAiU21pdGgiXSk7ICAvLyAiQm9uam91ciBKb2huIFNtaXRoIjsKLSAgICBgYGAKLQot
ICAgIEBtZXRob2QgbG9jCi0gICAgQHBhcmFtIHtTdHJpbmd9IHN0ciBUaGUgc3RyaW5nIHRvIGZv
cm1hdAotICAgIEBwYXJhbSB7QXJyYXl9IGZvcm1hdHMgT3B0aW9uYWwgYXJyYXkgb2YgcGFyYW1l
dGVycyB0byBpbnRlcnBvbGF0ZSBpbnRvIHN0cmluZy4KLSAgICBAcmV0dXJuIHtTdHJpbmd9IGZv
cm1hdHRlZCBzdHJpbmcKLSAgKi8KLSAgbG9jOiBmdW5jdGlvbihzdHIsIGZvcm1hdHMpIHsKLSAg
ICBzdHIgPSBFbWJlci5TVFJJTkdTW3N0cl0gfHwgc3RyOwotICAgIHJldHVybiBFbWJlci5TdHJp
bmcuZm10KHN0ciwgZm9ybWF0cykgOwotICB9LAotCi0gIC8qKgotICAgIFNwbGl0cyBhIHN0cmlu
ZyBpbnRvIHNlcGFyYXRlIHVuaXRzIHNlcGFyYXRlZCBieSBzcGFjZXMsIGVsaW1pbmF0aW5nIGFu
eQotICAgIGVtcHR5IHN0cmluZ3MgaW4gdGhlIHByb2Nlc3MuIFRoaXMgaXMgYSBjb252ZW5pZW5j
ZSBtZXRob2QgZm9yIHNwbGl0IHRoYXQKLSAgICBpcyBtb3N0bHkgdXNlZnVsIHdoZW4gYXBwbGll
ZCB0byB0aGUgYFN0cmluZy5wcm90b3R5cGVgLgotCi0gICAgYGBgamF2YXNjcmlwdAotICAgIEVt
YmVyLlN0cmluZy53KCJhbHBoYSBiZXRhIGdhbW1hIikuZm9yRWFjaChmdW5jdGlvbihrZXkpIHsK
LSAgICAgIGNvbnNvbGUubG9nKGtleSk7Ci0gICAgfSk7Ci0KLSAgICAvLyA+IGFscGhhCi0gICAg
Ly8gPiBiZXRhCi0gICAgLy8gPiBnYW1tYQotICAgIGBgYAotCi0gICAgQG1ldGhvZCB3Ci0gICAg
QHBhcmFtIHtTdHJpbmd9IHN0ciBUaGUgc3RyaW5nIHRvIHNwbGl0Ci0gICAgQHJldHVybiB7U3Ry
aW5nfSBzcGxpdCBzdHJpbmcKLSAgKi8KLSAgdzogZnVuY3Rpb24oc3RyKSB7IHJldHVybiBzdHIu
c3BsaXQoL1xzKy8pOyB9LAotCi0gIC8qKgotICAgIENvbnZlcnRzIGEgY2FtZWxpemVkIHN0cmlu
ZyBpbnRvIGFsbCBsb3dlciBjYXNlIHNlcGFyYXRlZCBieSB1bmRlcnNjb3Jlcy4KLQotICAgIGBg
YGphdmFzY3JpcHQKLSAgICAnaW5uZXJIVE1MJy5kZWNhbWVsaXplKCk7ICAgICAgICAgICAvLyAn
aW5uZXJfaHRtbCcKLSAgICAnYWN0aW9uX25hbWUnLmRlY2FtZWxpemUoKTsgICAgICAgIC8vICdh
Y3Rpb25fbmFtZScKLSAgICAnY3NzLWNsYXNzLW5hbWUnLmRlY2FtZWxpemUoKTsgICAgIC8vICdj
c3MtY2xhc3MtbmFtZScKLSAgICAnbXkgZmF2b3JpdGUgaXRlbXMnLmRlY2FtZWxpemUoKTsgIC8v
ICdteSBmYXZvcml0ZSBpdGVtcycKLSAgICBgYGAKLQotICAgIEBtZXRob2QgZGVjYW1lbGl6ZQot
ICAgIEBwYXJhbSB7U3RyaW5nfSBzdHIgVGhlIHN0cmluZyB0byBkZWNhbWVsaXplLgotICAgIEBy
ZXR1cm4ge1N0cmluZ30gdGhlIGRlY2FtZWxpemVkIHN0cmluZy4KLSAgKi8KLSAgZGVjYW1lbGl6
ZTogZnVuY3Rpb24oc3RyKSB7Ci0gICAgcmV0dXJuIHN0ci5yZXBsYWNlKFNUUklOR19ERUNBTUVM
SVpFX1JFR0VYUCwgJyQxXyQyJykudG9Mb3dlckNhc2UoKTsKLSAgfSwKLQotICAvKioKLSAgICBS
ZXBsYWNlcyB1bmRlcnNjb3Jlcywgc3BhY2VzLCBvciBjYW1lbENhc2Ugd2l0aCBkYXNoZXMuCi0K
LSAgICBgYGBqYXZhc2NyaXB0Ci0gICAgJ2lubmVySFRNTCcuZGFzaGVyaXplKCk7ICAgICAgICAg
IC8vICdpbm5lci1odG1sJwotICAgICdhY3Rpb25fbmFtZScuZGFzaGVyaXplKCk7ICAgICAgICAv
LyAnYWN0aW9uLW5hbWUnCi0gICAgJ2Nzcy1jbGFzcy1uYW1lJy5kYXNoZXJpemUoKTsgICAgIC8v
ICdjc3MtY2xhc3MtbmFtZScKLSAgICAnbXkgZmF2b3JpdGUgaXRlbXMnLmRhc2hlcml6ZSgpOyAg
Ly8gJ215LWZhdm9yaXRlLWl0ZW1zJwotICAgIGBgYAotCi0gICAgQG1ldGhvZCBkYXNoZXJpemUK
LSAgICBAcGFyYW0ge1N0cmluZ30gc3RyIFRoZSBzdHJpbmcgdG8gZGFzaGVyaXplLgotICAgIEBy
ZXR1cm4ge1N0cmluZ30gdGhlIGRhc2hlcml6ZWQgc3RyaW5nLgotICAqLwotICBkYXNoZXJpemU6
IGZ1bmN0aW9uKHN0cikgewotICAgIHZhciBjYWNoZSA9IFNUUklOR19EQVNIRVJJWkVfQ0FDSEUs
Ci0gICAgICAgIGhpdCAgID0gY2FjaGUuaGFzT3duUHJvcGVydHkoc3RyKSwKLSAgICAgICAgcmV0
OwotCi0gICAgaWYgKGhpdCkgewotICAgICAgcmV0dXJuIGNhY2hlW3N0cl07Ci0gICAgfSBlbHNl
IHsKLSAgICAgIHJldCA9IEVtYmVyLlN0cmluZy5kZWNhbWVsaXplKHN0cikucmVwbGFjZShTVFJJ
TkdfREFTSEVSSVpFX1JFR0VYUCwnLScpOwotICAgICAgY2FjaGVbc3RyXSA9IHJldDsKLSAgICB9
Ci0KLSAgICByZXR1cm4gcmV0OwotICB9LAotCi0gIC8qKgotICAgIFJldHVybnMgdGhlIGxvd2Vy
Q2FtZWxDYXNlIGZvcm0gb2YgYSBzdHJpbmcuCi0KLSAgICBgYGBqYXZhc2NyaXB0Ci0gICAgJ2lu
bmVySFRNTCcuY2FtZWxpemUoKTsgICAgICAgICAgLy8gJ2lubmVySFRNTCcKLSAgICAnYWN0aW9u
X25hbWUnLmNhbWVsaXplKCk7ICAgICAgICAvLyAnYWN0aW9uTmFtZScKLSAgICAnY3NzLWNsYXNz
LW5hbWUnLmNhbWVsaXplKCk7ICAgICAvLyAnY3NzQ2xhc3NOYW1lJwotICAgICdteSBmYXZvcml0
ZSBpdGVtcycuY2FtZWxpemUoKTsgIC8vICdteUZhdm9yaXRlSXRlbXMnCi0gICAgJ015IEZhdm9y
aXRlIEl0ZW1zJy5jYW1lbGl6ZSgpOyAgLy8gJ215RmF2b3JpdGVJdGVtcycKLSAgICBgYGAKLQot
ICAgIEBtZXRob2QgY2FtZWxpemUKLSAgICBAcGFyYW0ge1N0cmluZ30gc3RyIFRoZSBzdHJpbmcg
dG8gY2FtZWxpemUuCi0gICAgQHJldHVybiB7U3RyaW5nfSB0aGUgY2FtZWxpemVkIHN0cmluZy4K
LSAgKi8KLSAgY2FtZWxpemU6IGZ1bmN0aW9uKHN0cikgewotICAgIHJldHVybiBzdHIucmVwbGFj
ZShTVFJJTkdfQ0FNRUxJWkVfUkVHRVhQLCBmdW5jdGlvbihtYXRjaCwgc2VwYXJhdG9yLCBjaHIp
IHsKLSAgICAgIHJldHVybiBjaHIgPyBjaHIudG9VcHBlckNhc2UoKSA6ICcnOwotICAgIH0pLnJl
cGxhY2UoL14oW0EtWl0pLywgZnVuY3Rpb24obWF0Y2gsIHNlcGFyYXRvciwgY2hyKSB7Ci0gICAg
ICByZXR1cm4gbWF0Y2gudG9Mb3dlckNhc2UoKTsKLSAgICB9KTsKLSAgfSwKLQotICAvKioKLSAg
ICBSZXR1cm5zIHRoZSBVcHBlckNhbWVsQ2FzZSBmb3JtIG9mIGEgc3RyaW5nLgotCi0gICAgYGBg
amF2YXNjcmlwdAotICAgICdpbm5lckhUTUwnLmNsYXNzaWZ5KCk7ICAgICAgICAgIC8vICdJbm5l
ckhUTUwnCi0gICAgJ2FjdGlvbl9uYW1lJy5jbGFzc2lmeSgpOyAgICAgICAgLy8gJ0FjdGlvbk5h
bWUnCi0gICAgJ2Nzcy1jbGFzcy1uYW1lJy5jbGFzc2lmeSgpOyAgICAgLy8gJ0Nzc0NsYXNzTmFt
ZScKLSAgICAnbXkgZmF2b3JpdGUgaXRlbXMnLmNsYXNzaWZ5KCk7ICAvLyAnTXlGYXZvcml0ZUl0
ZW1zJwotICAgIGBgYAotCi0gICAgQG1ldGhvZCBjbGFzc2lmeQotICAgIEBwYXJhbSB7U3RyaW5n
fSBzdHIgdGhlIHN0cmluZyB0byBjbGFzc2lmeQotICAgIEByZXR1cm4ge1N0cmluZ30gdGhlIGNs
YXNzaWZpZWQgc3RyaW5nCi0gICovCi0gIGNsYXNzaWZ5OiBmdW5jdGlvbihzdHIpIHsKLSAgICB2
YXIgcGFydHMgPSBzdHIuc3BsaXQoIi4iKSwKLSAgICAgICAgb3V0ID0gW107Ci0KLSAgICBmb3Ig
KHZhciBpPTAsIGw9cGFydHMubGVuZ3RoOyBpPGw7IGkrKykgewotICAgICAgdmFyIGNhbWVsaXpl
ZCA9IEVtYmVyLlN0cmluZy5jYW1lbGl6ZShwYXJ0c1tpXSk7Ci0gICAgICBvdXQucHVzaChjYW1l
bGl6ZWQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBjYW1lbGl6ZWQuc3Vic3RyKDEpKTsKLSAg
ICB9Ci0KLSAgICByZXR1cm4gb3V0LmpvaW4oIi4iKTsKLSAgfSwKLQotICAvKioKLSAgICBNb3Jl
IGdlbmVyYWwgdGhhbiBkZWNhbWVsaXplLiBSZXR1cm5zIHRoZSBsb3dlclxfY2FzZVxfYW5kXF91
bmRlcnNjb3JlZAotICAgIGZvcm0gb2YgYSBzdHJpbmcuCi0KLSAgICBgYGBqYXZhc2NyaXB0Ci0g
ICAgJ2lubmVySFRNTCcudW5kZXJzY29yZSgpOyAgICAgICAgICAvLyAnaW5uZXJfaHRtbCcKLSAg
ICAnYWN0aW9uX25hbWUnLnVuZGVyc2NvcmUoKTsgICAgICAgIC8vICdhY3Rpb25fbmFtZScKLSAg
ICAnY3NzLWNsYXNzLW5hbWUnLnVuZGVyc2NvcmUoKTsgICAgIC8vICdjc3NfY2xhc3NfbmFtZScK
LSAgICAnbXkgZmF2b3JpdGUgaXRlbXMnLnVuZGVyc2NvcmUoKTsgIC8vICdteV9mYXZvcml0ZV9p
dGVtcycKLSAgICBgYGAKLQotICAgIEBtZXRob2QgdW5kZXJzY29yZQotICAgIEBwYXJhbSB7U3Ry
aW5nfSBzdHIgVGhlIHN0cmluZyB0byB1bmRlcnNjb3JlLgotICAgIEByZXR1cm4ge1N0cmluZ30g
dGhlIHVuZGVyc2NvcmVkIHN0cmluZy4KLSAgKi8KLSAgdW5kZXJzY29yZTogZnVuY3Rpb24oc3Ry
KSB7Ci0gICAgcmV0dXJuIHN0ci5yZXBsYWNlKFNUUklOR19VTkRFUlNDT1JFX1JFR0VYUF8xLCAn
JDFfJDInKS4KLSAgICAgIHJlcGxhY2UoU1RSSU5HX1VOREVSU0NPUkVfUkVHRVhQXzIsICdfJyku
dG9Mb3dlckNhc2UoKTsKLSAgfSwKLQotICAvKioKLSAgICBSZXR1cm5zIHRoZSBDYXBpdGFsaXpl
ZCBmb3JtIG9mIGEgc3RyaW5nCi0KLSAgICBgYGBqYXZhc2NyaXB0Ci0gICAgJ2lubmVySFRNTCcu
Y2FwaXRhbGl6ZSgpICAgICAgICAgLy8gJ0lubmVySFRNTCcKLSAgICAnYWN0aW9uX25hbWUnLmNh
cGl0YWxpemUoKSAgICAgICAvLyAnQWN0aW9uX25hbWUnCi0gICAgJ2Nzcy1jbGFzcy1uYW1lJy5j
YXBpdGFsaXplKCkgICAgLy8gJ0Nzcy1jbGFzcy1uYW1lJwotICAgICdteSBmYXZvcml0ZSBpdGVt
cycuY2FwaXRhbGl6ZSgpIC8vICdNeSBmYXZvcml0ZSBpdGVtcycKLSAgICBgYGAKLQotICAgIEBt
ZXRob2QgY2FwaXRhbGl6ZQotICAgIEBwYXJhbSB7U3RyaW5nfSBzdHIgVGhlIHN0cmluZyB0byBj
YXBpdGFsaXplLgotICAgIEByZXR1cm4ge1N0cmluZ30gVGhlIGNhcGl0YWxpemVkIHN0cmluZy4K
LSAgKi8KLSAgY2FwaXRhbGl6ZTogZnVuY3Rpb24oc3RyKSB7Ci0gICAgcmV0dXJuIHN0ci5jaGFy
QXQoMCkudG9VcHBlckNhc2UoKSArIHN0ci5zdWJzdHIoMSk7Ci0gIH0KLX07Ci0KLQotCi19KSgp
OwotCi0KLQotKGZ1bmN0aW9uKCkgewotLyoqCi1AbW9kdWxlIGVtYmVyCi1Ac3VibW9kdWxlIGVt
YmVyLXJ1bnRpbWUKLSovCi0KLQotCi12YXIgZm10ID0gRW1iZXIuU3RyaW5nLmZtdCwKLSAgICB3
ICAgPSBFbWJlci5TdHJpbmcudywKLSAgICBsb2MgPSBFbWJlci5TdHJpbmcubG9jLAotICAgIGNh
bWVsaXplID0gRW1iZXIuU3RyaW5nLmNhbWVsaXplLAotICAgIGRlY2FtZWxpemUgPSBFbWJlci5T
dHJpbmcuZGVjYW1lbGl6ZSwKLSAgICBkYXNoZXJpemUgPSBFbWJlci5TdHJpbmcuZGFzaGVyaXpl
LAotICAgIHVuZGVyc2NvcmUgPSBFbWJlci5TdHJpbmcudW5kZXJzY29yZSwKLSAgICBjYXBpdGFs
aXplID0gRW1iZXIuU3RyaW5nLmNhcGl0YWxpemUsCi0gICAgY2xhc3NpZnkgPSBFbWJlci5TdHJp
bmcuY2xhc3NpZnk7Ci0KLQotaWYgKEVtYmVyLkVYVEVORF9QUk9UT1RZUEVTID09PSB0cnVlIHx8
IEVtYmVyLkVYVEVORF9QUk9UT1RZUEVTLlN0cmluZykgewotCi0gIC8qKgotICAgIFNlZSBbRW1i
ZXIuU3RyaW5nLmZtdF0oL2FwaS9jbGFzc2VzL0VtYmVyLlN0cmluZy5odG1sI21ldGhvZF9mbXQp
LgotCi0gICAgQG1ldGhvZCBmbXQKLSAgICBAZm9yIFN0cmluZwotICAqLwotICBTdHJpbmcucHJv
dG90eXBlLmZtdCA9IGZ1bmN0aW9uKCkgewotICAgIHJldHVybiBmbXQodGhpcywgYXJndW1lbnRz
KTsKLSAgfTsKLQotICAvKioKLSAgICBTZWUgW0VtYmVyLlN0cmluZy53XSgvYXBpL2NsYXNzZXMv
RW1iZXIuU3RyaW5nLmh0bWwjbWV0aG9kX3cpLgotCi0gICAgQG1ldGhvZCB3Ci0gICAgQGZvciBT
dHJpbmcKLSAgKi8KLSAgU3RyaW5nLnByb3RvdHlwZS53ID0gZnVuY3Rpb24oKSB7Ci0gICAgcmV0
dXJuIHcodGhpcyk7Ci0gIH07Ci0KLSAgLyoqCi0gICAgU2VlIFtFbWJlci5TdHJpbmcubG9jXSgv
YXBpL2NsYXNzZXMvRW1iZXIuU3RyaW5nLmh0bWwjbWV0aG9kX2xvYykuCi0KLSAgICBAbWV0aG9k
IGxvYwotICAgIEBmb3IgU3RyaW5nCi0gICovCi0gIFN0cmluZy5wcm90b3R5cGUubG9jID0gZnVu
Y3Rpb24oKSB7Ci0gICAgcmV0dXJuIGxvYyh0aGlzLCBhcmd1bWVudHMpOwotICB9OwotCi0gIC8q
KgotICAgIFNlZSBbRW1iZXIuU3RyaW5nLmNhbWVsaXplXSgvYXBpL2NsYXNzZXMvRW1iZXIuU3Ry
aW5nLmh0bWwjbWV0aG9kX2NhbWVsaXplKS4KLQotICAgIEBtZXRob2QgY2FtZWxpemUKLSAgICBA
Zm9yIFN0cmluZwotICAqLwotICBTdHJpbmcucHJvdG90eXBlLmNhbWVsaXplID0gZnVuY3Rpb24o
KSB7Ci0gICAgcmV0dXJuIGNhbWVsaXplKHRoaXMpOwotICB9OwotCi0gIC8qKgotICAgIFNlZSBb
RW1iZXIuU3RyaW5nLmRlY2FtZWxpemVdKC9hcGkvY2xhc3Nlcy9FbWJlci5TdHJpbmcuaHRtbCNt
ZXRob2RfZGVjYW1lbGl6ZSkuCi0KLSAgICBAbWV0aG9kIGRlY2FtZWxpemUKLSAgICBAZm9yIFN0
cmluZwotICAqLwotICBTdHJpbmcucHJvdG90eXBlLmRlY2FtZWxpemUgPSBmdW5jdGlvbigpIHsK
LSAgICByZXR1cm4gZGVjYW1lbGl6ZSh0aGlzKTsKLSAgfTsKLQotICAvKioKLSAgICBTZWUgW0Vt
YmVyLlN0cmluZy5kYXNoZXJpemVdKC9hcGkvY2xhc3Nlcy9FbWJlci5TdHJpbmcuaHRtbCNtZXRo
b2RfZGFzaGVyaXplKS4KLQotICAgIEBtZXRob2QgZGFzaGVyaXplCi0gICAgQGZvciBTdHJpbmcK
LSAgKi8KLSAgU3RyaW5nLnByb3RvdHlwZS5kYXNoZXJpemUgPSBmdW5jdGlvbigpIHsKLSAgICBy
ZXR1cm4gZGFzaGVyaXplKHRoaXMpOwotICB9OwotCi0gIC8qKgotICAgIFNlZSBbRW1iZXIuU3Ry
aW5nLnVuZGVyc2NvcmVdKC9hcGkvY2xhc3Nlcy9FbWJlci5TdHJpbmcuaHRtbCNtZXRob2RfdW5k
ZXJzY29yZSkuCi0KLSAgICBAbWV0aG9kIHVuZGVyc2NvcmUKLSAgICBAZm9yIFN0cmluZwotICAq
LwotICBTdHJpbmcucHJvdG90eXBlLnVuZGVyc2NvcmUgPSBmdW5jdGlvbigpIHsKLSAgICByZXR1
cm4gdW5kZXJzY29yZSh0aGlzKTsKLSAgfTsKLQotICAvKioKLSAgICBTZWUgW0VtYmVyLlN0cmlu
Zy5jbGFzc2lmeV0oL2FwaS9jbGFzc2VzL0VtYmVyLlN0cmluZy5odG1sI21ldGhvZF9jbGFzc2lm
eSkuCi0KLSAgICBAbWV0aG9kIGNsYXNzaWZ5Ci0gICAgQGZvciBTdHJpbmcKLSAgKi8KLSAgU3Ry
aW5nLnByb3RvdHlwZS5jbGFzc2lmeSA9IGZ1bmN0aW9uKCkgewotICAgIHJldHVybiBjbGFzc2lm
eSh0aGlzKTsKLSAgfTsKLQotICAvKioKLSAgICBTZWUgW0VtYmVyLlN0cmluZy5jYXBpdGFsaXpl
XSgvYXBpL2NsYXNzZXMvRW1iZXIuU3RyaW5nLmh0bWwjbWV0aG9kX2NhcGl0YWxpemUpLgotCi0g
ICAgQG1ldGhvZCBjYXBpdGFsaXplCi0gICAgQGZvciBTdHJpbmcKLSAgKi8KLSAgU3RyaW5nLnBy
b3RvdHlwZS5jYXBpdGFsaXplID0gZnVuY3Rpb24oKSB7Ci0gICAgcmV0dXJuIGNhcGl0YWxpemUo
dGhpcyk7Ci0gIH07Ci0KLSAgCi19Ci0KLQotfSkoKTsKLQotCi0KLShmdW5jdGlvbigpIHsKLS8q
KgotQG1vZHVsZSBlbWJlcgotQHN1Ym1vZHVsZSBlbWJlci1ydW50aW1lCi0qLwotCi12YXIgZ2V0
ID0gRW1iZXIuZ2V0LAotICAgIHNldCA9IEVtYmVyLnNldCwKLSAgICBzbGljZSA9IEFycmF5LnBy
b3RvdHlwZS5zbGljZSwKLSAgICBnZXRQcm9wZXJ0aWVzID0gRW1iZXIuZ2V0UHJvcGVydGllczsK
LQotLyoqCi0gICMjIE92ZXJ2aWV3Ci0KLSAgVGhpcyBtaXhpbiBwcm92aWRlcyBwcm9wZXJ0aWVz
IGFuZCBwcm9wZXJ0eSBvYnNlcnZpbmcgZnVuY3Rpb25hbGl0eSwgY29yZQotICBmZWF0dXJlcyBv
ZiB0aGUgRW1iZXIgb2JqZWN0IG1vZGVsLgotCi0gIFByb3BlcnRpZXMgYW5kIG9ic2VydmVycyBh
bGxvdyBvbmUgb2JqZWN0IHRvIG9ic2VydmUgY2hhbmdlcyB0byBhCi0gIHByb3BlcnR5IG9uIGFu
b3RoZXIgb2JqZWN0LiBUaGlzIGlzIG9uZSBvZiB0aGUgZnVuZGFtZW50YWwgd2F5cyB0aGF0Ci0g
IG1vZGVscywgY29udHJvbGxlcnMgYW5kIHZpZXdzIGNvbW11bmljYXRlIHdpdGggZWFjaCBvdGhl
ciBpbiBhbiBFbWJlcgotICBhcHBsaWNhdGlvbi4KLQotICBBbnkgb2JqZWN0IHRoYXQgaGFzIHRo
aXMgbWl4aW4gYXBwbGllZCBjYW4gYmUgdXNlZCBpbiBvYnNlcnZlcgotICBvcGVyYXRpb25zLiBU
aGF0IGluY2x1ZGVzIGBFbWJlci5PYmplY3RgIGFuZCBtb3N0IG9iamVjdHMgeW91IHdpbGwKLSAg
aW50ZXJhY3Qgd2l0aCBhcyB5b3Ugd3JpdGUgeW91ciBFbWJlciBhcHBsaWNhdGlvbi4KLQotICBO
b3RlIHRoYXQgeW91IHdpbGwgbm90IGdlbmVyYWxseSBhcHBseSB0aGlzIG1peGluIHRvIGNsYXNz
ZXMgeW91cnNlbGYsCi0gIGJ1dCB5b3Ugd2lsbCB1c2UgdGhlIGZlYXR1cmVzIHByb3ZpZGVkIGJ5
IHRoaXMgbW9kdWxlIGZyZXF1ZW50bHksIHNvIGl0Ci0gIGlzIGltcG9ydGFudCB0byB1bmRlcnN0
YW5kIGhvdyB0byB1c2UgaXQuCi0KLSAgIyMgVXNpbmcgYGdldCgpYCBhbmQgYHNldCgpYAotCi0g
IEJlY2F1c2Ugb2YgRW1iZXIncyBzdXBwb3J0IGZvciBiaW5kaW5ncyBhbmQgb2JzZXJ2ZXJzLCB5
b3Ugd2lsbCBhbHdheXMKLSAgYWNjZXNzIHByb3BlcnRpZXMgdXNpbmcgdGhlIGdldCBtZXRob2Qs
IGFuZCBzZXQgcHJvcGVydGllcyB1c2luZyB0aGUKLSAgc2V0IG1ldGhvZC4gVGhpcyBhbGxvd3Mg
dGhlIG9ic2VydmluZyBvYmplY3RzIHRvIGJlIG5vdGlmaWVkIGFuZAotICBjb21wdXRlZCBwcm9w
ZXJ0aWVzIHRvIGJlIGhhbmRsZWQgcHJvcGVybHkuCi0KLSAgTW9yZSBkb2N1bWVudGF0aW9uIGFi
b3V0IGBnZXRgIGFuZCBgc2V0YCBhcmUgYmVsb3cuCi0KLSAgIyMgT2JzZXJ2aW5nIFByb3BlcnR5
IENoYW5nZXMKLQotICBZb3UgdHlwaWNhbGx5IG9ic2VydmUgcHJvcGVydHkgY2hhbmdlcyBzaW1w
bHkgYnkgYWRkaW5nIHRoZSBgb2JzZXJ2ZXNgCi0gIGNhbGwgdG8gdGhlIGVuZCBvZiB5b3VyIG1l
dGhvZCBkZWNsYXJhdGlvbnMgaW4gY2xhc3NlcyB0aGF0IHlvdSB3cml0ZS4KLSAgRm9yIGV4YW1w
bGU6Ci0KLSAgYGBgamF2YXNjcmlwdAotICBFbWJlci5PYmplY3QuZXh0ZW5kKHsKLSAgICB2YWx1
ZU9ic2VydmVyOiBmdW5jdGlvbigpIHsKLSAgICAgIC8vIEV4ZWN1dGVzIHdoZW5ldmVyIHRoZSAi
dmFsdWUiIHByb3BlcnR5IGNoYW5nZXMKLSAgICB9Lm9ic2VydmVzKCd2YWx1ZScpCi0gIH0pOwot
ICBgYGAKLQotICBBbHRob3VnaCB0aGlzIGlzIHRoZSBtb3N0IGNvbW1vbiB3YXkgdG8gYWRkIGFu
IG9ic2VydmVyLCB0aGlzIGNhcGFiaWxpdHkKLSAgaXMgYWN0dWFsbHkgYnVpbHQgaW50byB0aGUg
YEVtYmVyLk9iamVjdGAgY2xhc3Mgb24gdG9wIG9mIHR3byBtZXRob2RzCi0gIGRlZmluZWQgaW4g
dGhpcyBtaXhpbjogYGFkZE9ic2VydmVyYCBhbmQgYHJlbW92ZU9ic2VydmVyYC4gWW91IGNhbiB1
c2UKLSAgdGhlc2UgdHdvIG1ldGhvZHMgdG8gYWRkIGFuZCByZW1vdmUgb2JzZXJ2ZXJzIHlvdXJz
ZWxmIGlmIHlvdSBuZWVkIHRvCi0gIGRvIHNvIGF0IHJ1bnRpbWUuCi0KLSAgVG8gYWRkIGFuIG9i
c2VydmVyIGZvciBhIHByb3BlcnR5LCBjYWxsOgotCi0gIGBgYGphdmFzY3JpcHQKLSAgb2JqZWN0
LmFkZE9ic2VydmVyKCdwcm9wZXJ0eUtleScsIHRhcmdldE9iamVjdCwgdGFyZ2V0QWN0aW9uKQot
ICBgYGAKLQotICBUaGlzIHdpbGwgY2FsbCB0aGUgYHRhcmdldEFjdGlvbmAgbWV0aG9kIG9uIHRo
ZSBgdGFyZ2V0T2JqZWN0YCB3aGVuZXZlcgotICB0aGUgdmFsdWUgb2YgdGhlIGBwcm9wZXJ0eUtl
eWAgY2hhbmdlcy4KLQotICBOb3RlIHRoYXQgaWYgYHByb3BlcnR5S2V5YCBpcyBhIGNvbXB1dGVk
IHByb3BlcnR5LCB0aGUgb2JzZXJ2ZXIgd2lsbCBiZQotICBjYWxsZWQgd2hlbiBhbnkgb2YgdGhl
IHByb3BlcnR5IGRlcGVuZGVuY2llcyBhcmUgY2hhbmdlZCwgZXZlbiBpZiB0aGUKLSAgcmVzdWx0
aW5nIHZhbHVlIG9mIHRoZSBjb21wdXRlZCBwcm9wZXJ0eSBpcyB1bmNoYW5nZWQuIFRoaXMgaXMg
bmVjZXNzYXJ5Ci0gIGJlY2F1c2UgY29tcHV0ZWQgcHJvcGVydGllcyBhcmUgbm90IGNvbXB1dGVk
IHVudGlsIGBnZXRgIGlzIGNhbGxlZC4KLQotICBAY2xhc3MgT2JzZXJ2YWJsZQotICBAbmFtZXNw
YWNlIEVtYmVyCi0qLwotRW1iZXIuT2JzZXJ2YWJsZSA9IEVtYmVyLk1peGluLmNyZWF0ZSh7Ci0K
LSAgLyoqCi0gICAgUmV0cmlldmVzIHRoZSB2YWx1ZSBvZiBhIHByb3BlcnR5IGZyb20gdGhlIG9i
amVjdC4KLQotICAgIFRoaXMgbWV0aG9kIGlzIHVzdWFsbHkgc2ltaWxhciB0byB1c2luZyBgb2Jq
ZWN0W2tleU5hbWVdYCBvciBgb2JqZWN0LmtleU5hbWVgLAotICAgIGhvd2V2ZXIgaXQgc3VwcG9y
dHMgYm90aCBjb21wdXRlZCBwcm9wZXJ0aWVzIGFuZCB0aGUgdW5rbm93blByb3BlcnR5Ci0gICAg
aGFuZGxlci4KLQotICAgIEJlY2F1c2UgYGdldGAgdW5pZmllcyB0aGUgc3ludGF4IGZvciBhY2Nl
c3NpbmcgYWxsIHRoZXNlIGtpbmRzCi0gICAgb2YgcHJvcGVydGllcywgaXQgY2FuIG1ha2UgbWFu
eSByZWZhY3RvcmluZ3MgZWFzaWVyLCBzdWNoIGFzIHJlcGxhY2luZyBhCi0gICAgc2ltcGxlIHBy
b3BlcnR5IHdpdGggYSBjb21wdXRlZCBwcm9wZXJ0eSwgb3IgdmljZSB2ZXJzYS4KLQotICAgICMj
IyBDb21wdXRlZCBQcm9wZXJ0aWVzCi0KLSAgICBDb21wdXRlZCBwcm9wZXJ0aWVzIGFyZSBtZXRo
b2RzIGRlZmluZWQgd2l0aCB0aGUgYHByb3BlcnR5YCBtb2RpZmllcgotICAgIGRlY2xhcmVkIGF0
IHRoZSBlbmQsIHN1Y2ggYXM6Ci0KLSAgICBgYGBqYXZhc2NyaXB0Ci0gICAgZnVsbE5hbWU6IGZ1
bmN0aW9uKCkgewotICAgICAgcmV0dXJuIHRoaXMuZ2V0KCdmaXJzdE5hbWUnKSArICcgJyArIHRo
aXMuZ2V0KCdsYXN0TmFtZScpOwotICAgIH0ucHJvcGVydHkoJ2ZpcnN0TmFtZScsICdsYXN0TmFt
ZScpCi0gICAgYGBgCi0KLSAgICBXaGVuIHlvdSBjYWxsIGBnZXRgIG9uIGEgY29tcHV0ZWQgcHJv
cGVydHksIHRoZSBmdW5jdGlvbiB3aWxsIGJlCi0gICAgY2FsbGVkIGFuZCB0aGUgcmV0dXJuIHZh
bHVlIHdpbGwgYmUgcmV0dXJuZWQgaW5zdGVhZCBvZiB0aGUgZnVuY3Rpb24KLSAgICBpdHNlbGYu
Ci0KLSAgICAjIyMgVW5rbm93biBQcm9wZXJ0aWVzCi0KLSAgICBMaWtld2lzZSwgaWYgeW91IHRy
eSB0byBjYWxsIGBnZXRgIG9uIGEgcHJvcGVydHkgd2hvc2UgdmFsdWUgaXMKLSAgICBgdW5kZWZp
bmVkYCwgdGhlIGB1bmtub3duUHJvcGVydHkoKWAgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIG9uIHRo
ZSBvYmplY3QuCi0gICAgSWYgdGhpcyBtZXRob2QgcmV0dXJucyBhbnkgdmFsdWUgb3RoZXIgdGhh
biBgdW5kZWZpbmVkYCwgaXQgd2lsbCBiZSByZXR1cm5lZAotICAgIGluc3RlYWQuIFRoaXMgYWxs
b3dzIHlvdSB0byBpbXBsZW1lbnQgInZpcnR1YWwiIHByb3BlcnRpZXMgdGhhdCBhcmUKLSAgICBu
b3QgZGVmaW5lZCB1cGZyb250LgotCi0gICAgQG1ldGhvZCBnZXQKLSAgICBAcGFyYW0ge1N0cmlu
Z30ga2V5TmFtZSBUaGUgcHJvcGVydHkgdG8gcmV0cmlldmUKLSAgICBAcmV0dXJuIHtPYmplY3R9
IFRoZSBwcm9wZXJ0eSB2YWx1ZSBvciB1bmRlZmluZWQuCi0gICovCi0gIGdldDogZnVuY3Rpb24o
a2V5TmFtZSkgewotICAgIHJldHVybiBnZXQodGhpcywga2V5TmFtZSk7Ci0gIH0sCi0KLSAgLyoq
Ci0gICAgVG8gZ2V0IG11bHRpcGxlIHByb3BlcnRpZXMgYXQgb25jZSwgY2FsbCBgZ2V0UHJvcGVy
dGllc2AKLSAgICB3aXRoIGEgbGlzdCBvZiBzdHJpbmdzIG9yIGFuIGFycmF5OgotCi0gICAgYGBg
amF2YXNjcmlwdAotICAgIHJlY29yZC5nZXRQcm9wZXJ0aWVzKCdmaXJzdE5hbWUnLCAnbGFzdE5h
bWUnLCAnemlwQ29kZScpOyAgLy8geyBmaXJzdE5hbWU6ICdKb2huJywgbGFzdE5hbWU6ICdEb2Un
LCB6aXBDb2RlOiAnMTAwMTEnIH0KLSAgICBgYGAKLQotICAgIGlzIGVxdWl2YWxlbnQgdG86Ci0K
LSAgICBgYGBqYXZhc2NyaXB0Ci0gICAgcmVjb3JkLmdldFByb3BlcnRpZXMoWydmaXJzdE5hbWUn
LCAnbGFzdE5hbWUnLCAnemlwQ29kZSddKTsgIC8vIHsgZmlyc3ROYW1lOiAnSm9obicsIGxhc3RO
YW1lOiAnRG9lJywgemlwQ29kZTogJzEwMDExJyB9Ci0gICAgYGBgCi0KLSAgICBAbWV0aG9kIGdl
dFByb3BlcnRpZXMKLSAgICBAcGFyYW0ge1N0cmluZy4uLnxBcnJheX0gbGlzdCBvZiBrZXlzIHRv
IGdldAotICAgIEByZXR1cm4ge0hhc2h9Ci0gICovCi0gIGdldFByb3BlcnRpZXM6IGZ1bmN0aW9u
KCkgewotICAgIHJldHVybiBnZXRQcm9wZXJ0aWVzLmFwcGx5KG51bGwsIFt0aGlzXS5jb25jYXQo
c2xpY2UuY2FsbChhcmd1bWVudHMpKSk7Ci0gIH0sCi0KLSAgLyoqCi0gICAgU2V0cyB0aGUgcHJv
dmlkZWQga2V5IG9yIHBhdGggdG8gdGhlIHZhbHVlLgotCi0gICAgVGhpcyBtZXRob2QgaXMgZ2Vu
ZXJhbGx5IHZlcnkgc2ltaWxhciB0byBjYWxsaW5nIGBvYmplY3Rba2V5XSA9IHZhbHVlYCBvcgot
ICAgIGBvYmplY3Qua2V5ID0gdmFsdWVgLCBleGNlcHQgdGhhdCBpdCBwcm92aWRlcyBzdXBwb3J0
IGZvciBjb21wdXRlZAotICAgIHByb3BlcnRpZXMsIHRoZSBgc2V0VW5rbm93blByb3BlcnR5KClg
IG1ldGhvZCBhbmQgcHJvcGVydHkgb2JzZXJ2ZXJzLgotCi0gICAgIyMjIENvbXB1dGVkIFByb3Bl
cnRpZXMKLQotICAgIElmIHlvdSB0cnkgdG8gc2V0IGEgdmFsdWUgb24gYSBrZXkgdGhhdCBoYXMg
YSBjb21wdXRlZCBwcm9wZXJ0eSBoYW5kbGVyCi0gICAgZGVmaW5lZCAoc2VlIHRoZSBgZ2V0KClg
IG1ldGhvZCBmb3IgYW4gZXhhbXBsZSksIHRoZW4gYHNldCgpYCB3aWxsIGNhbGwKLSAgICB0aGF0
IG1ldGhvZCwgcGFzc2luZyBib3RoIHRoZSB2YWx1ZSBhbmQga2V5IGluc3RlYWQgb2Ygc2ltcGx5
IGNoYW5naW5nCi0gICAgdGhlIHZhbHVlIGl0c2VsZi4gVGhpcyBpcyB1c2VmdWwgZm9yIHRob3Nl
IHRpbWVzIHdoZW4geW91IG5lZWQgdG8KLSAgICBpbXBsZW1lbnQgYSBwcm9wZXJ0eSB0aGF0IGlz
IGNvbXBvc2VkIG9mIG9uZSBvciBtb3JlIG1lbWJlcgotICAgIHByb3BlcnRpZXMuCi0KLSAgICAj
IyMgVW5rbm93biBQcm9wZXJ0aWVzCi0KLSAgICBJZiB5b3UgdHJ5IHRvIHNldCBhIHZhbHVlIG9u
IGEga2V5IHRoYXQgaXMgdW5kZWZpbmVkIGluIHRoZSB0YXJnZXQKLSAgICBvYmplY3QsIHRoZW4g
dGhlIGBzZXRVbmtub3duUHJvcGVydHkoKWAgaGFuZGxlciB3aWxsIGJlIGNhbGxlZCBpbnN0ZWFk
LiBUaGlzCi0gICAgZ2l2ZXMgeW91IGFuIG9wcG9ydHVuaXR5IHRvIGltcGxlbWVudCBjb21wbGV4
ICJ2aXJ0dWFsIiBwcm9wZXJ0aWVzIHRoYXQKLSAgICBhcmUgbm90IHByZWRlZmluZWQgb24gdGhl
IG9iamVjdC4gSWYgYHNldFVua25vd25Qcm9wZXJ0eSgpYCByZXR1cm5zCi0gICAgdW5kZWZpbmVk
LCB0aGVuIGBzZXQoKWAgd2lsbCBzaW1wbHkgc2V0IHRoZSB2YWx1ZSBvbiB0aGUgb2JqZWN0Lgot
Ci0gICAgIyMjIFByb3BlcnR5IE9ic2VydmVycwotCi0gICAgSW4gYWRkaXRpb24gdG8gY2hhbmdp
bmcgdGhlIHByb3BlcnR5LCBgc2V0KClgIHdpbGwgYWxzbyByZWdpc3RlciBhIHByb3BlcnR5Ci0g
ICAgY2hhbmdlIHdpdGggdGhlIG9iamVjdC4gVW5sZXNzIHlvdSBoYXZlIHBsYWNlZCB0aGlzIGNh
bGwgaW5zaWRlIG9mIGEKLSAgICBgYmVnaW5Qcm9wZXJ0eUNoYW5nZXMoKWAgYW5kIGBlbmRQcm9w
ZXJ0eUNoYW5nZXMoKSxgIGFueSAibG9jYWwiIG9ic2VydmVycwotICAgIChpLmUuIG9ic2VydmVy
IG1ldGhvZHMgZGVjbGFyZWQgb24gdGhlIHNhbWUgb2JqZWN0KSwgd2lsbCBiZSBjYWxsZWQKLSAg
ICBpbW1lZGlhdGVseS4gQW55ICJyZW1vdGUiIG9ic2VydmVycyAoaS5lLiBvYnNlcnZlciBtZXRo
b2RzIGRlY2xhcmVkIG9uCi0gICAgYW5vdGhlciBvYmplY3QpIHdpbGwgYmUgcGxhY2VkIGluIGEg
cXVldWUgYW5kIGNhbGxlZCBhdCBhIGxhdGVyIHRpbWUgaW4gYQotICAgIGNvYWxlc2NlZCBtYW5u
ZXIuCi0KLSAgICAjIyMgQ2hhaW5pbmcKLQotICAgIEluIGFkZGl0aW9uIHRvIHByb3BlcnR5IGNo
YW5nZXMsIGBzZXQoKWAgcmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIG9iamVjdAotICAgIGl0c2Vs
ZiBzbyB5b3UgY2FuIGRvIGNoYWluaW5nIGxpa2UgdGhpczoKLQotICAgIGBgYGphdmFzY3JpcHQK
LSAgICByZWNvcmQuc2V0KCdmaXJzdE5hbWUnLCAnQ2hhcmxlcycpLnNldCgnbGFzdE5hbWUnLCAn
Sm9sbGV5Jyk7Ci0gICAgYGBgCi0KLSAgICBAbWV0aG9kIHNldAotICAgIEBwYXJhbSB7U3RyaW5n
fSBrZXlOYW1lIFRoZSBwcm9wZXJ0eSB0byBzZXQKLSAgICBAcGFyYW0ge09iamVjdH0gdmFsdWUg
VGhlIHZhbHVlIHRvIHNldCBvciBgbnVsbGAuCi0gICAgQHJldHVybiB7RW1iZXIuT2JzZXJ2YWJs
ZX0KLSAgKi8KLSAgc2V0OiBmdW5jdGlvbihrZXlOYW1lLCB2YWx1ZSkgewotICAgIHNldCh0aGlz
LCBrZXlOYW1lLCB2YWx1ZSk7Ci0gICAgcmV0dXJuIHRoaXM7Ci0gIH0sCi0KLQotICAvKioKLSAg
ICBTZXRzIGEgbGlzdCBvZiBwcm9wZXJ0aWVzIGF0IG9uY2UuIFRoZXNlIHByb3BlcnRpZXMgYXJl
IHNldCBpbnNpZGUKLSAgICBhIHNpbmdsZSBgYmVnaW5Qcm9wZXJ0eUNoYW5nZXNgIGFuZCBgZW5k
UHJvcGVydHlDaGFuZ2VzYCBiYXRjaCwgc28KLSAgICBvYnNlcnZlcnMgd2lsbCBiZSBidWZmZXJl
ZC4KLQotICAgIGBgYGphdmFzY3JpcHQKLSAgICByZWNvcmQuc2V0UHJvcGVydGllcyh7IGZpcnN0
TmFtZTogJ0NoYXJsZXMnLCBsYXN0TmFtZTogJ0pvbGxleScgfSk7Ci0gICAgYGBgCi0KLSAgICBA
bWV0aG9kIHNldFByb3BlcnRpZXMKLSAgICBAcGFyYW0ge0hhc2h9IGhhc2ggdGhlIGhhc2ggb2Yg
a2V5cyBhbmQgdmFsdWVzIHRvIHNldAotICAgIEByZXR1cm4ge0VtYmVyLk9ic2VydmFibGV9Ci0g
ICovCi0gIHNldFByb3BlcnRpZXM6IGZ1bmN0aW9uKGhhc2gpIHsKLSAgICByZXR1cm4gRW1iZXIu
c2V0UHJvcGVydGllcyh0aGlzLCBoYXNoKTsKLSAgfSwKLQotICAvKioKLSAgICBCZWdpbnMgYSBn
cm91cGluZyBvZiBwcm9wZXJ0eSBjaGFuZ2VzLgotCi0gICAgWW91IGNhbiB1c2UgdGhpcyBtZXRo
b2QgdG8gZ3JvdXAgcHJvcGVydHkgY2hhbmdlcyBzbyB0aGF0IG5vdGlmaWNhdGlvbnMKLSAgICB3
aWxsIG5vdCBiZSBzZW50IHVudGlsIHRoZSBjaGFuZ2VzIGFyZSBmaW5pc2hlZC4gSWYgeW91IHBs
YW4gdG8gbWFrZSBhCi0gICAgbGFyZ2UgbnVtYmVyIG9mIGNoYW5nZXMgdG8gYW4gb2JqZWN0IGF0
IG9uZSB0aW1lLCB5b3Ugc2hvdWxkIGNhbGwgdGhpcwotICAgIG1ldGhvZCBhdCB0aGUgYmVnaW5u
aW5nIG9mIHRoZSBjaGFuZ2VzIHRvIGJlZ2luIGRlZmVycmluZyBjaGFuZ2UKLSAgICBub3RpZmlj
YXRpb25zLiBXaGVuIHlvdSBhcmUgZG9uZSBtYWtpbmcgY2hhbmdlcywgY2FsbAotICAgIGBlbmRQ
cm9wZXJ0eUNoYW5nZXMoKWAgdG8gZGVsaXZlciB0aGUgZGVmZXJyZWQgY2hhbmdlIG5vdGlmaWNh
dGlvbnMgYW5kIGVuZAotICAgIGRlZmVycmluZy4KLQotICAgIEBtZXRob2QgYmVnaW5Qcm9wZXJ0
eUNoYW5nZXMKLSAgICBAcmV0dXJuIHtFbWJlci5PYnNlcnZhYmxlfQotICAqLwotICBiZWdpblBy
b3BlcnR5Q2hhbmdlczogZnVuY3Rpb24oKSB7Ci0gICAgRW1iZXIuYmVnaW5Qcm9wZXJ0eUNoYW5n
ZXMoKTsKLSAgICByZXR1cm4gdGhpczsKLSAgfSwKLQotICAvKioKLSAgICBFbmRzIGEgZ3JvdXBp
bmcgb2YgcHJvcGVydHkgY2hhbmdlcy4KLQotICAgIFlvdSBjYW4gdXNlIHRoaXMgbWV0aG9kIHRv
IGdyb3VwIHByb3BlcnR5IGNoYW5nZXMgc28gdGhhdCBub3RpZmljYXRpb25zCi0gICAgd2lsbCBu
b3QgYmUgc2VudCB1bnRpbCB0aGUgY2hhbmdlcyBhcmUgZmluaXNoZWQuIElmIHlvdSBwbGFuIHRv
IG1ha2UgYQotICAgIGxhcmdlIG51bWJlciBvZiBjaGFuZ2VzIHRvIGFuIG9iamVjdCBhdCBvbmUg
dGltZSwgeW91IHNob3VsZCBjYWxsCi0gICAgYGJlZ2luUHJvcGVydHlDaGFuZ2VzKClgIGF0IHRo
ZSBiZWdpbm5pbmcgb2YgdGhlIGNoYW5nZXMgdG8gZGVmZXIgY2hhbmdlCi0gICAgbm90aWZpY2F0
aW9ucy4gV2hlbiB5b3UgYXJlIGRvbmUgbWFraW5nIGNoYW5nZXMsIGNhbGwgdGhpcyBtZXRob2Qg
dG8KLSAgICBkZWxpdmVyIHRoZSBkZWZlcnJlZCBjaGFuZ2Ugbm90aWZpY2F0aW9ucyBhbmQgZW5k
IGRlZmVycmluZy4KLQotICAgIEBtZXRob2QgZW5kUHJvcGVydHlDaGFuZ2VzCi0gICAgQHJldHVy
biB7RW1iZXIuT2JzZXJ2YWJsZX0KLSAgKi8KLSAgZW5kUHJvcGVydHlDaGFuZ2VzOiBmdW5jdGlv
bigpIHsKLSAgICBFbWJlci5lbmRQcm9wZXJ0eUNoYW5nZXMoKTsKLSAgICByZXR1cm4gdGhpczsK
LSAgfSwKLQotICAvKioKLSAgICBOb3RpZnkgdGhlIG9ic2VydmVyIHN5c3RlbSB0aGF0IGEgcHJv
cGVydHkgaXMgYWJvdXQgdG8gY2hhbmdlLgotCi0gICAgU29tZXRpbWVzIHlvdSBuZWVkIHRvIGNo
YW5nZSBhIHZhbHVlIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgd2l0aG91dAotICAgIGFjdHVhbGx5
IGNhbGxpbmcgYGdldCgpYCBvciBgc2V0KClgIG9uIGl0LiBJbiB0aGlzIGNhc2UsIHlvdSBjYW4g
dXNlIHRoaXMKLSAgICBtZXRob2QgYW5kIGBwcm9wZXJ0eURpZENoYW5nZSgpYCBpbnN0ZWFkLiBD
YWxsaW5nIHRoZXNlIHR3byBtZXRob2RzCi0gICAgdG9nZXRoZXIgd2lsbCBub3RpZnkgYWxsIG9i
c2VydmVycyB0aGF0IHRoZSBwcm9wZXJ0eSBoYXMgcG90ZW50aWFsbHkKLSAgICBjaGFuZ2VkIHZh
bHVlLgotCi0gICAgTm90ZSB0aGF0IHlvdSBtdXN0IGFsd2F5cyBjYWxsIGBwcm9wZXJ0eVdpbGxD
aGFuZ2VgIGFuZCBgcHJvcGVydHlEaWRDaGFuZ2VgCi0gICAgYXMgYSBwYWlyLiBJZiB5b3UgZG8g
bm90LCBpdCBtYXkgZ2V0IHRoZSBwcm9wZXJ0eSBjaGFuZ2UgZ3JvdXBzIG91dCBvZgotICAgIG9y
ZGVyIGFuZCBjYXVzZSBub3RpZmljYXRpb25zIHRvIGJlIGRlbGl2ZXJlZCBtb3JlIG9mdGVuIHRo
YW4geW91IHdvdWxkCi0gICAgbGlrZS4KLQotICAgIEBtZXRob2QgcHJvcGVydHlXaWxsQ2hhbmdl
Ci0gICAgQHBhcmFtIHtTdHJpbmd9IGtleU5hbWUgVGhlIHByb3BlcnR5IGtleSB0aGF0IGlzIGFi
b3V0IHRvIGNoYW5nZS4KLSAgICBAcmV0dXJuIHtFbWJlci5PYnNlcnZhYmxlfQotICAqLwotICBw
cm9wZXJ0eVdpbGxDaGFuZ2U6IGZ1bmN0aW9uKGtleU5hbWUpIHsKLSAgICBFbWJlci5wcm9wZXJ0
eVdpbGxDaGFuZ2UodGhpcywga2V5TmFtZSk7Ci0gICAgcmV0dXJuIHRoaXM7Ci0gIH0sCi0KLSAg
LyoqCi0gICAgTm90aWZ5IHRoZSBvYnNlcnZlciBzeXN0ZW0gdGhhdCBhIHByb3BlcnR5IGhhcyBq
dXN0IGNoYW5nZWQuCi0KLSAgICBTb21ldGltZXMgeW91IG5lZWQgdG8gY2hhbmdlIGEgdmFsdWUg
ZGlyZWN0bHkgb3IgaW5kaXJlY3RseSB3aXRob3V0Ci0gICAgYWN0dWFsbHkgY2FsbGluZyBgZ2V0
KClgIG9yIGBzZXQoKWAgb24gaXQuIEluIHRoaXMgY2FzZSwgeW91IGNhbiB1c2UgdGhpcwotICAg
IG1ldGhvZCBhbmQgYHByb3BlcnR5V2lsbENoYW5nZSgpYCBpbnN0ZWFkLiBDYWxsaW5nIHRoZXNl
IHR3byBtZXRob2RzCi0gICAgdG9nZXRoZXIgd2lsbCBub3RpZnkgYWxsIG9ic2VydmVycyB0aGF0
IHRoZSBwcm9wZXJ0eSBoYXMgcG90ZW50aWFsbHkKLSAgICBjaGFuZ2VkIHZhbHVlLgotCi0gICAg
Tm90ZSB0aGF0IHlvdSBtdXN0IGFsd2F5cyBjYWxsIGBwcm9wZXJ0eVdpbGxDaGFuZ2VgIGFuZCBg
cHJvcGVydHlEaWRDaGFuZ2VgCi0gICAgYXMgYSBwYWlyLiBJZiB5b3UgZG8gbm90LCBpdCBtYXkg
Z2V0IHRoZSBwcm9wZXJ0eSBjaGFuZ2UgZ3JvdXBzIG91dCBvZgotICAgIG9yZGVyIGFuZCBjYXVz
ZSBub3RpZmljYXRpb25zIHRvIGJlIGRlbGl2ZXJlZCBtb3JlIG9mdGVuIHRoYW4geW91IHdvdWxk
Ci0gICAgbGlrZS4KLQotICAgIEBtZXRob2QgcHJvcGVydHlEaWRDaGFuZ2UKLSAgICBAcGFyYW0g
e1N0cmluZ30ga2V5TmFtZSBUaGUgcHJvcGVydHkga2V5IHRoYXQgaGFzIGp1c3QgY2hhbmdlZC4K
LSAgICBAcmV0dXJuIHtFbWJlci5PYnNlcnZhYmxlfQotICAqLwotICBwcm9wZXJ0eURpZENoYW5n
ZTogZnVuY3Rpb24oa2V5TmFtZSkgewotICAgIEVtYmVyLnByb3BlcnR5RGlkQ2hhbmdlKHRoaXMs
IGtleU5hbWUpOwotICAgIHJldHVybiB0aGlzOwotICB9LAotCi0gIC8qKgotICAgIENvbnZlbmll
bmNlIG1ldGhvZCB0byBjYWxsIGBwcm9wZXJ0eVdpbGxDaGFuZ2VgIGFuZCBgcHJvcGVydHlEaWRD
aGFuZ2VgIGluCi0gICAgc3VjY2Vzc2lvbi4KLQotICAgIEBtZXRob2Qgbm90aWZ5UHJvcGVydHlD
aGFuZ2UKLSAgICBAcGFyYW0ge1N0cmluZ30ga2V5TmFtZSBUaGUgcHJvcGVydHkga2V5IHRvIGJl
IG5vdGlmaWVkIGFib3V0LgotICAgIEByZXR1cm4ge0VtYmVyLk9ic2VydmFibGV9Ci0gICovCi0g
IG5vdGlmeVByb3BlcnR5Q2hhbmdlOiBmdW5jdGlvbihrZXlOYW1lKSB7Ci0gICAgdGhpcy5wcm9w
ZXJ0eVdpbGxDaGFuZ2Uoa2V5TmFtZSk7Ci0gICAgdGhpcy5wcm9wZXJ0eURpZENoYW5nZShrZXlO
YW1lKTsKLSAgICByZXR1cm4gdGhpczsKLSAgfSwKLQotICBhZGRCZWZvcmVPYnNlcnZlcjogZnVu
Y3Rpb24oa2V5LCB0YXJnZXQsIG1ldGhvZCkgewotICAgIEVtYmVyLmFkZEJlZm9yZU9ic2VydmVy
KHRoaXMsIGtleSwgdGFyZ2V0LCBtZXRob2QpOwotICB9LAotCi0gIC8qKgotICAgIEFkZHMgYW4g
b2JzZXJ2ZXIgb24gYSBwcm9wZXJ0eS4KLQotICAgIFRoaXMgaXMgdGhlIGNvcmUgbWV0aG9kIHVz
ZWQgdG8gcmVnaXN0ZXIgYW4gb2JzZXJ2ZXIgZm9yIGEgcHJvcGVydHkuCi0KLSAgICBPbmNlIHlv
dSBjYWxsIHRoaXMgbWV0aG9kLCBhbnkgdGltZSB0aGUga2V5J3MgdmFsdWUgaXMgc2V0LCB5b3Vy
IG9ic2VydmVyCi0gICAgd2lsbCBiZSBub3RpZmllZC4gTm90ZSB0aGF0IHRoZSBvYnNlcnZlcnMg
YXJlIHRyaWdnZXJlZCBhbnkgdGltZSB0aGUKLSAgICB2YWx1ZSBpcyBzZXQsIHJlZ2FyZGxlc3Mg
b2Ygd2hldGhlciBpdCBoYXMgYWN0dWFsbHkgY2hhbmdlZC4gWW91cgotICAgIG9ic2VydmVyIHNo
b3VsZCBiZSBwcmVwYXJlZCB0byBoYW5kbGUgdGhhdC4KLQotICAgIFlvdSBjYW4gYWxzbyBwYXNz
IGFuIG9wdGlvbmFsIGNvbnRleHQgcGFyYW1ldGVyIHRvIHRoaXMgbWV0aG9kLiBUaGUKLSAgICBj
b250ZXh0IHdpbGwgYmUgcGFzc2VkIHRvIHlvdXIgb2JzZXJ2ZXIgbWV0aG9kIHdoZW5ldmVyIGl0
IGlzIHRyaWdnZXJlZC4KLSAgICBOb3RlIHRoYXQgaWYgeW91IGFkZCB0aGUgc2FtZSB0YXJnZXQv
bWV0aG9kIHBhaXIgb24gYSBrZXkgbXVsdGlwbGUgdGltZXMKLSAgICB3aXRoIGRpZmZlcmVudCBj
b250ZXh0IHBhcmFtZXRlcnMsIHlvdXIgb2JzZXJ2ZXIgd2lsbCBvbmx5IGJlIGNhbGxlZCBvbmNl
Ci0gICAgd2l0aCB0aGUgbGFzdCBjb250ZXh0IHlvdSBwYXNzZWQuCi0KLSAgICAjIyMgT2JzZXJ2
ZXIgTWV0aG9kcwotCi0gICAgT2JzZXJ2ZXIgbWV0aG9kcyB5b3UgcGFzcyBzaG91bGQgZ2VuZXJh
bGx5IGhhdmUgdGhlIGZvbGxvd2luZyBzaWduYXR1cmUgaWYKLSAgICB5b3UgZG8gbm90IHBhc3Mg
YSBgY29udGV4dGAgcGFyYW1ldGVyOgotCi0gICAgYGBgamF2YXNjcmlwdAotICAgIGZvb0RpZENo
YW5nZTogZnVuY3Rpb24oc2VuZGVyLCBrZXksIHZhbHVlLCByZXYpIHsgfTsKLSAgICBgYGAKLQot
ICAgIFRoZSBzZW5kZXIgaXMgdGhlIG9iamVjdCB0aGF0IGNoYW5nZWQuIFRoZSBrZXkgaXMgdGhl
IHByb3BlcnR5IHRoYXQKLSAgICBjaGFuZ2VzLiBUaGUgdmFsdWUgcHJvcGVydHkgaXMgY3VycmVu
dGx5IHJlc2VydmVkIGFuZCB1bnVzZWQuIFRoZSByZXYKLSAgICBpcyB0aGUgbGFzdCBwcm9wZXJ0
eSByZXZpc2lvbiBvZiB0aGUgb2JqZWN0IHdoZW4gaXQgY2hhbmdlZCwgd2hpY2ggeW91IGNhbgot
ICAgIHVzZSB0byBkZXRlY3QgaWYgdGhlIGtleSB2YWx1ZSBoYXMgcmVhbGx5IGNoYW5nZWQgb3Ig
bm90LgotCi0gICAgSWYgeW91IHBhc3MgYSBgY29udGV4dGAgcGFyYW1ldGVyLCB0aGUgY29udGV4
dCB3aWxsIGJlIHBhc3NlZCBiZWZvcmUgdGhlCi0gICAgcmV2aXNpb24gbGlrZSBzbzoKLQotICAg
IGBgYGphdmFzY3JpcHQKLSAgICBmb29EaWRDaGFuZ2U6IGZ1bmN0aW9uKHNlbmRlciwga2V5LCB2
YWx1ZSwgY29udGV4dCwgcmV2KSB7IH07Ci0gICAgYGBgCi0KLSAgICBVc3VhbGx5IHlvdSB3aWxs
IG5vdCBuZWVkIHRoZSB2YWx1ZSwgY29udGV4dCBvciByZXZpc2lvbiBwYXJhbWV0ZXJzIGF0Ci0g
ICAgdGhlIGVuZC4gSW4gdGhpcyBjYXNlLCBpdCBpcyBjb21tb24gdG8gd3JpdGUgb2JzZXJ2ZXIg
bWV0aG9kcyB0aGF0IHRha2UKLSAgICBvbmx5IGEgc2VuZGVyIGFuZCBrZXkgdmFsdWUgYXMgcGFy
YW1ldGVycyBvciwgaWYgeW91IGFyZW4ndCBpbnRlcmVzdGVkIGluCi0gICAgYW55IG9mIHRoZXNl
IHZhbHVlcywgdG8gd3JpdGUgYW4gb2JzZXJ2ZXIgdGhhdCBoYXMgbm8gcGFyYW1ldGVycyBhdCBh
bGwuCi0KLSAgICBAbWV0aG9kIGFkZE9ic2VydmVyCi0gICAgQHBhcmFtIHtTdHJpbmd9IGtleSBU
aGUga2V5IHRvIG9ic2VydmVyCi0gICAgQHBhcmFtIHtPYmplY3R9IHRhcmdldCBUaGUgdGFyZ2V0
IG9iamVjdCB0byBpbnZva2UKLSAgICBAcGFyYW0ge1N0cmluZ3xGdW5jdGlvbn0gbWV0aG9kIFRo
ZSBtZXRob2QgdG8gaW52b2tlLgotICAgIEByZXR1cm4ge0VtYmVyLk9iamVjdH0gc2VsZgotICAq
LwotICBhZGRPYnNlcnZlcjogZnVuY3Rpb24oa2V5LCB0YXJnZXQsIG1ldGhvZCkgewotICAgIEVt
YmVyLmFkZE9ic2VydmVyKHRoaXMsIGtleSwgdGFyZ2V0LCBtZXRob2QpOwotICB9LAotCi0gIC8q
KgotICAgIFJlbW92ZSBhbiBvYnNlcnZlciB5b3UgaGF2ZSBwcmV2aW91c2x5IHJlZ2lzdGVyZWQg
b24gdGhpcyBvYmplY3QuIFBhc3MKLSAgICB0aGUgc2FtZSBrZXksIHRhcmdldCwgYW5kIG1ldGhv
ZCB5b3UgcGFzc2VkIHRvIGBhZGRPYnNlcnZlcigpYCBhbmQgeW91cgotICAgIHRhcmdldCB3aWxs
IG5vIGxvbmdlciByZWNlaXZlIG5vdGlmaWNhdGlvbnMuCi0KLSAgICBAbWV0aG9kIHJlbW92ZU9i
c2VydmVyCi0gICAgQHBhcmFtIHtTdHJpbmd9IGtleSBUaGUga2V5IHRvIG9ic2VydmVyCi0gICAg
QHBhcmFtIHtPYmplY3R9IHRhcmdldCBUaGUgdGFyZ2V0IG9iamVjdCB0byBpbnZva2UKLSAgICBA
cGFyYW0ge1N0cmluZ3xGdW5jdGlvbn0gbWV0aG9kIFRoZSBtZXRob2QgdG8gaW52b2tlLgotICAg
IEByZXR1cm4ge0VtYmVyLk9ic2VydmFibGV9IHJlY2VpdmVyCi0gICovCi0gIHJlbW92ZU9ic2Vy
dmVyOiBmdW5jdGlvbihrZXksIHRhcmdldCwgbWV0aG9kKSB7Ci0gICAgRW1iZXIucmVtb3ZlT2Jz
ZXJ2ZXIodGhpcywga2V5LCB0YXJnZXQsIG1ldGhvZCk7Ci0gIH0sCi0KLSAgLyoqCi0gICAgUmV0
dXJucyBgdHJ1ZWAgaWYgdGhlIG9iamVjdCBjdXJyZW50bHkgaGFzIG9ic2VydmVycyByZWdpc3Rl
cmVkIGZvciBhCi0gICAgcGFydGljdWxhciBrZXkuIFlvdSBjYW4gdXNlIHRoaXMgbWV0aG9kIHRv
IHBvdGVudGlhbGx5IGRlZmVyIHBlcmZvcm1pbmcKLSAgICBhbiBleHBlbnNpdmUgYWN0aW9uIHVu
dGlsIHNvbWVvbmUgYmVnaW5zIG9ic2VydmluZyBhIHBhcnRpY3VsYXIgcHJvcGVydHkKLSAgICBv
biB0aGUgb2JqZWN0LgotCi0gICAgQG1ldGhvZCBoYXNPYnNlcnZlckZvcgotICAgIEBwYXJhbSB7
U3RyaW5nfSBrZXkgS2V5IHRvIGNoZWNrCi0gICAgQHJldHVybiB7Qm9vbGVhbn0KLSAgKi8KLSAg
aGFzT2JzZXJ2ZXJGb3I6IGZ1bmN0aW9uKGtleSkgewotICAgIHJldHVybiBFbWJlci5oYXNMaXN0
ZW5lcnModGhpcywga2V5Kyc6Y2hhbmdlJyk7Ci0gIH0sCi0KLSAgLyoqCi0gICAgUmV0cmlldmVz
IHRoZSB2YWx1ZSBvZiBhIHByb3BlcnR5LCBvciBhIGRlZmF1bHQgdmFsdWUgaW4gdGhlIGNhc2Ug
dGhhdCB0aGUKLSAgICBwcm9wZXJ0eSByZXR1cm5zIGB1bmRlZmluZWRgLgotCi0gICAgYGBgamF2
YXNjcmlwdAotICAgIHBlcnNvbi5nZXRXaXRoRGVmYXVsdCgnbGFzdE5hbWUnLCAnRG9lJyk7Ci0g
ICAgYGBgCi0KLSAgICBAbWV0aG9kIGdldFdpdGhEZWZhdWx0Ci0gICAgQHBhcmFtIHtTdHJpbmd9
IGtleU5hbWUgVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IHRvIHJldHJpZXZlCi0gICAgQHBhcmFt
IHtPYmplY3R9IGRlZmF1bHRWYWx1ZSBUaGUgdmFsdWUgdG8gcmV0dXJuIGlmIHRoZSBwcm9wZXJ0
eSB2YWx1ZSBpcyB1bmRlZmluZWQKLSAgICBAcmV0dXJuIHtPYmplY3R9IFRoZSBwcm9wZXJ0eSB2
YWx1ZSBvciB0aGUgZGVmYXVsdFZhbHVlLgotICAqLwotICBnZXRXaXRoRGVmYXVsdDogZnVuY3Rp
b24oa2V5TmFtZSwgZGVmYXVsdFZhbHVlKSB7Ci0gICAgcmV0dXJuIEVtYmVyLmdldFdpdGhEZWZh
dWx0KHRoaXMsIGtleU5hbWUsIGRlZmF1bHRWYWx1ZSk7Ci0gIH0sCi0KLSAgLyoqCi0gICAgU2V0
IHRoZSB2YWx1ZSBvZiBhIHByb3BlcnR5IHRvIHRoZSBjdXJyZW50IHZhbHVlIHBsdXMgc29tZSBh
bW91bnQuCi0KLSAgICBgYGBqYXZhc2NyaXB0Ci0gICAgcGVyc29uLmluY3JlbWVudFByb3BlcnR5
KCdhZ2UnKTsKLSAgICB0ZWFtLmluY3JlbWVudFByb3BlcnR5KCdzY29yZScsIDIpOwotICAgIGBg
YAotCi0gICAgQG1ldGhvZCBpbmNyZW1lbnRQcm9wZXJ0eQotICAgIEBwYXJhbSB7U3RyaW5nfSBr
ZXlOYW1lIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSB0byBpbmNyZW1lbnQKLSAgICBAcGFyYW0g
e051bWJlcn0gaW5jcmVtZW50IFRoZSBhbW91bnQgdG8gaW5jcmVtZW50IGJ5LiBEZWZhdWx0cyB0
byAxCi0gICAgQHJldHVybiB7TnVtYmVyfSBUaGUgbmV3IHByb3BlcnR5IHZhbHVlCi0gICovCi0g
IGluY3JlbWVudFByb3BlcnR5OiBmdW5jdGlvbihrZXlOYW1lLCBpbmNyZW1lbnQpIHsKLSAgICBp
ZiAoRW1iZXIuaXNOb25lKGluY3JlbWVudCkpIHsgaW5jcmVtZW50ID0gMTsgfQotICAgIEVtYmVy
LmFzc2VydCgiTXVzdCBwYXNzIGEgbnVtZXJpYyB2YWx1ZSB0byBpbmNyZW1lbnRQcm9wZXJ0eSIs
ICghaXNOYU4ocGFyc2VGbG9hdChpbmNyZW1lbnQpKSAmJiBpc0Zpbml0ZShpbmNyZW1lbnQpKSk7
Ci0gICAgc2V0KHRoaXMsIGtleU5hbWUsIChnZXQodGhpcywga2V5TmFtZSkgfHwgMCkgKyBpbmNy
ZW1lbnQpOwotICAgIHJldHVybiBnZXQodGhpcywga2V5TmFtZSk7Ci0gIH0sCi0KLSAgLyoqCi0g
ICAgU2V0IHRoZSB2YWx1ZSBvZiBhIHByb3BlcnR5IHRvIHRoZSBjdXJyZW50IHZhbHVlIG1pbnVz
IHNvbWUgYW1vdW50LgotCi0gICAgYGBgamF2YXNjcmlwdAotICAgIHBsYXllci5kZWNyZW1lbnRQ
cm9wZXJ0eSgnbGl2ZXMnKTsKLSAgICBvcmMuZGVjcmVtZW50UHJvcGVydHkoJ2hlYWx0aCcsIDUp
OwotICAgIGBgYAotCi0gICAgQG1ldGhvZCBkZWNyZW1lbnRQcm9wZXJ0eQotICAgIEBwYXJhbSB7
U3RyaW5nfSBrZXlOYW1lIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSB0byBkZWNyZW1lbnQKLSAg
ICBAcGFyYW0ge051bWJlcn0gZGVjcmVtZW50IFRoZSBhbW91bnQgdG8gZGVjcmVtZW50IGJ5LiBE
ZWZhdWx0cyB0byAxCi0gICAgQHJldHVybiB7TnVtYmVyfSBUaGUgbmV3IHByb3BlcnR5IHZhbHVl
Ci0gICovCi0gIGRlY3JlbWVudFByb3BlcnR5OiBmdW5jdGlvbihrZXlOYW1lLCBkZWNyZW1lbnQp
IHsKLSAgICBpZiAoRW1iZXIuaXNOb25lKGRlY3JlbWVudCkpIHsgZGVjcmVtZW50ID0gMTsgfQot
ICAgIEVtYmVyLmFzc2VydCgiTXVzdCBwYXNzIGEgbnVtZXJpYyB2YWx1ZSB0byBkZWNyZW1lbnRQ
cm9wZXJ0eSIsICghaXNOYU4ocGFyc2VGbG9hdChkZWNyZW1lbnQpKSAmJiBpc0Zpbml0ZShkZWNy
ZW1lbnQpKSk7Ci0gICAgc2V0KHRoaXMsIGtleU5hbWUsIChnZXQodGhpcywga2V5TmFtZSkgfHwg
MCkgLSBkZWNyZW1lbnQpOwotICAgIHJldHVybiBnZXQodGhpcywga2V5TmFtZSk7Ci0gIH0sCi0K
LSAgLyoqCi0gICAgU2V0IHRoZSB2YWx1ZSBvZiBhIGJvb2xlYW4gcHJvcGVydHkgdG8gdGhlIG9w
cG9zaXRlIG9mIGl0J3MKLSAgICBjdXJyZW50IHZhbHVlLgotCi0gICAgYGBgamF2YXNjcmlwdAot
ICAgIHN0YXJzaGlwLnRvZ2dsZVByb3BlcnR5KCd3YXJwRHJpdmVFbmdhZ2VkJyk7Ci0gICAgYGBg
Ci0KLSAgICBAbWV0aG9kIHRvZ2dsZVByb3BlcnR5Ci0gICAgQHBhcmFtIHtTdHJpbmd9IGtleU5h
bWUgVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IHRvIHRvZ2dsZQotICAgIEByZXR1cm4ge09iamVj
dH0gVGhlIG5ldyBwcm9wZXJ0eSB2YWx1ZQotICAqLwotICB0b2dnbGVQcm9wZXJ0eTogZnVuY3Rp
b24oa2V5TmFtZSkgewotICAgIHNldCh0aGlzLCBrZXlOYW1lLCAhZ2V0KHRoaXMsIGtleU5hbWUp
KTsKLSAgICByZXR1cm4gZ2V0KHRoaXMsIGtleU5hbWUpOwotICB9LAotCi0gIC8qKgotICAgIFJl
dHVybnMgdGhlIGNhY2hlZCB2YWx1ZSBvZiBhIGNvbXB1dGVkIHByb3BlcnR5LCBpZiBpdCBleGlz
dHMuCi0gICAgVGhpcyBhbGxvd3MgeW91IHRvIGluc3BlY3QgdGhlIHZhbHVlIG9mIGEgY29tcHV0
ZWQgcHJvcGVydHkKLSAgICB3aXRob3V0IGFjY2lkZW50YWxseSBpbnZva2luZyBpdCBpZiBpdCBp
cyBpbnRlbmRlZCB0byBiZQotICAgIGdlbmVyYXRlZCBsYXppbHkuCi0KLSAgICBAbWV0aG9kIGNh
Y2hlRm9yCi0gICAgQHBhcmFtIHtTdHJpbmd9IGtleU5hbWUKLSAgICBAcmV0dXJuIHtPYmplY3R9
IFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlIGNvbXB1dGVkIHByb3BlcnR5LCBpZiBhbnkKLSAgKi8K
LSAgY2FjaGVGb3I6IGZ1bmN0aW9uKGtleU5hbWUpIHsKLSAgICByZXR1cm4gRW1iZXIuY2FjaGVG
b3IodGhpcywga2V5TmFtZSk7Ci0gIH0sCi0KLSAgLy8gaW50ZW5kZWQgZm9yIGRlYnVnZ2luZyBw
dXJwb3NlcwotICBvYnNlcnZlcnNGb3JLZXk6IGZ1bmN0aW9uKGtleU5hbWUpIHsKLSAgICByZXR1
cm4gRW1iZXIub2JzZXJ2ZXJzRm9yKHRoaXMsIGtleU5hbWUpOwotICB9Ci19KTsKLQotfSkoKTsK
LQotCi0KLShmdW5jdGlvbigpIHsKLS8qKgotICBAbW9kdWxlIGVtYmVyCi0gIEBzdWJtb2R1bGUg
ZW1iZXItcnVudGltZQotKi8KLQotCi0vLyBOT1RFOiB0aGlzIG9iamVjdCBzaG91bGQgbmV2ZXIg
YmUgaW5jbHVkZWQgZGlyZWN0bHkuIEluc3RlYWQgdXNlIGBFbWJlci5PYmplY3RgLgotLy8gV2Ug
b25seSBkZWZpbmUgdGhpcyBzZXBhcmF0ZWx5IHNvIHRoYXQgYEVtYmVyLlNldGAgY2FuIGRlcGVu
ZCBvbiBpdC4KLQotCi12YXIgc2V0ID0gRW1iZXIuc2V0LCBnZXQgPSBFbWJlci5nZXQsCi0gICAg
b19jcmVhdGUgPSBFbWJlci5jcmVhdGUsCi0gICAgb19kZWZpbmVQcm9wZXJ0eSA9IEVtYmVyLnBs
YXRmb3JtLmRlZmluZVByb3BlcnR5LAotICAgIEdVSURfS0VZID0gRW1iZXIuR1VJRF9LRVksCi0g
ICAgZ3VpZEZvciA9IEVtYmVyLmd1aWRGb3IsCi0gICAgZ2VuZXJhdGVHdWlkID0gRW1iZXIuZ2Vu
ZXJhdGVHdWlkLAotICAgIG1ldGEgPSBFbWJlci5tZXRhLAotICAgIHJld2F0Y2ggPSBFbWJlci5y
ZXdhdGNoLAotICAgIGZpbmlzaENoYWlucyA9IEVtYmVyLmZpbmlzaENoYWlucywKLSAgICBzZW5k
RXZlbnQgPSBFbWJlci5zZW5kRXZlbnQsCi0gICAgZGVzdHJveSA9IEVtYmVyLmRlc3Ryb3ksCi0g
ICAgc2NoZWR1bGUgPSBFbWJlci5ydW4uc2NoZWR1bGUsCi0gICAgTWl4aW4gPSBFbWJlci5NaXhp
biwKLSAgICBhcHBseU1peGluID0gTWl4aW4uX2FwcGx5LAotICAgIGZpbmlzaFBhcnRpYWwgPSBN
aXhpbi5maW5pc2hQYXJ0aWFsLAotICAgIHJlb3BlbiA9IE1peGluLnByb3RvdHlwZS5yZW9wZW4s
Ci0gICAgTUFOREFUT1JZX1NFVFRFUiA9IEVtYmVyLkVOVi5NQU5EQVRPUllfU0VUVEVSLAotICAg
IGluZGV4T2YgPSBFbWJlci5FbnVtZXJhYmxlVXRpbHMuaW5kZXhPZjsKLQotdmFyIHVuZGVmaW5l
ZERlc2NyaXB0b3IgPSB7Ci0gIGNvbmZpZ3VyYWJsZTogdHJ1ZSwKLSAgd3JpdGFibGU6IHRydWUs
Ci0gIGVudW1lcmFibGU6IGZhbHNlLAotICB2YWx1ZTogdW5kZWZpbmVkCi19OwotCi1mdW5jdGlv
biBtYWtlQ3RvcigpIHsKLQotICAvLyBOb3RlOiBhdm9pZCBhY2Nlc3NpbmcgYW55IHByb3BlcnRp
ZXMgb24gdGhlIG9iamVjdCBzaW5jZSBpdCBtYWtlcyB0aGUKLSAgLy8gbWV0aG9kIGEgbG90IGZh
c3Rlci4gVGhpcyBpcyBnbHVlIGNvZGUgc28gd2Ugd2FudCBpdCB0byBiZSBhcyBmYXN0IGFzCi0g
IC8vIHBvc3NpYmxlLgotCi0gIHZhciB3YXNBcHBsaWVkID0gZmFsc2UsIGluaXRNaXhpbnMsIGlu
aXRQcm9wZXJ0aWVzOwotCi0gIHZhciBDbGFzcyA9IGZ1bmN0aW9uKCkgewotICAgIGlmICghd2Fz
QXBwbGllZCkgewotICAgICAgQ2xhc3MucHJvdG8oKTsgLy8gcHJlcGFyZSBwcm90b3R5cGUuLi4K
LSAgICB9Ci0gICAgb19kZWZpbmVQcm9wZXJ0eSh0aGlzLCBHVUlEX0tFWSwgdW5kZWZpbmVkRGVz
Y3JpcHRvcik7Ci0gICAgb19kZWZpbmVQcm9wZXJ0eSh0aGlzLCAnX3N1cGVyJywgdW5kZWZpbmVk
RGVzY3JpcHRvcik7Ci0gICAgdmFyIG0gPSBtZXRhKHRoaXMpLCBwcm90byA9IG0ucHJvdG87Ci0g
ICAgbS5wcm90byA9IHRoaXM7Ci0gICAgaWYgKGluaXRNaXhpbnMpIHsKLSAgICAgIC8vIGNhcHR1
cmUgbG9jYWxseSBzbyB3ZSBjYW4gY2xlYXIgdGhlIGNsb3NlZCBvdmVyIHZhcmlhYmxlCi0gICAg
ICB2YXIgbWl4aW5zID0gaW5pdE1peGluczsKLSAgICAgIGluaXRNaXhpbnMgPSBudWxsOwotICAg
ICAgdGhpcy5yZW9wZW4uYXBwbHkodGhpcywgbWl4aW5zKTsKLSAgICB9Ci0gICAgaWYgKGluaXRQ
cm9wZXJ0aWVzKSB7Ci0gICAgICAvLyBjYXB0dXJlIGxvY2FsbHkgc28gd2UgY2FuIGNsZWFyIHRo
ZSBjbG9zZWQgb3ZlciB2YXJpYWJsZQotICAgICAgdmFyIHByb3BzID0gaW5pdFByb3BlcnRpZXM7
Ci0gICAgICBpbml0UHJvcGVydGllcyA9IG51bGw7Ci0KLSAgICAgIHZhciBjb25jYXRlbmF0ZWRQ
cm9wZXJ0aWVzID0gdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzOwotCi0gICAgICBmb3IgKHZh
ciBpID0gMCwgbCA9IHByb3BzLmxlbmd0aDsgaSA8IGw7IGkrKykgewotICAgICAgICB2YXIgcHJv
cGVydGllcyA9IHByb3BzW2ldOwotCi0gICAgICAgIEVtYmVyLmFzc2VydCgiRW1iZXIuT2JqZWN0
LmNyZWF0ZSBubyBsb25nZXIgc3VwcG9ydHMgbWl4aW5nIGluIG90aGVyIGRlZmluaXRpb25zLCB1
c2UgY3JlYXRlV2l0aE1peGlucyBpbnN0ZWFkLiIsICEocHJvcGVydGllcyBpbnN0YW5jZW9mIEVt
YmVyLk1peGluKSk7Ci0KLSAgICAgICAgaWYgKHR5cGVvZiBwcm9wZXJ0aWVzICE9PSAnb2JqZWN0
JyAmJiBwcm9wZXJ0aWVzICE9PSB1bmRlZmluZWQpIHsKLSAgICAgICAgICB0aHJvdyBuZXcgRW1i
ZXIuRXJyb3IoIkVtYmVyLk9iamVjdC5jcmVhdGUgb25seSBhY2NlcHRzIG9iamVjdHMuIik7Ci0g
ICAgICAgIH0KLQotICAgICAgICBpZiAoIXByb3BlcnRpZXMpIHsgY29udGludWU7IH0KLQotICAg
ICAgICB2YXIga2V5TmFtZXMgPSBFbWJlci5rZXlzKHByb3BlcnRpZXMpOwotCi0gICAgICAgIGZv
ciAodmFyIGogPSAwLCBsbCA9IGtleU5hbWVzLmxlbmd0aDsgaiA8IGxsOyBqKyspIHsKLSAgICAg
ICAgICB2YXIga2V5TmFtZSA9IGtleU5hbWVzW2pdOwotICAgICAgICAgIGlmICghcHJvcGVydGll
cy5oYXNPd25Qcm9wZXJ0eShrZXlOYW1lKSkgeyBjb250aW51ZTsgfQotCi0gICAgICAgICAgdmFy
IHZhbHVlID0gcHJvcGVydGllc1trZXlOYW1lXSwKLSAgICAgICAgICAgICAgSVNfQklORElORyA9
IEVtYmVyLklTX0JJTkRJTkc7Ci0KLSAgICAgICAgICBpZiAoSVNfQklORElORy50ZXN0KGtleU5h
bWUpKSB7Ci0gICAgICAgICAgICB2YXIgYmluZGluZ3MgPSBtLmJpbmRpbmdzOwotICAgICAgICAg
ICAgaWYgKCFiaW5kaW5ncykgewotICAgICAgICAgICAgICBiaW5kaW5ncyA9IG0uYmluZGluZ3Mg
PSB7fTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoIW0uaGFzT3duUHJvcGVydHkoJ2JpbmRpbmdz
JykpIHsKLSAgICAgICAgICAgICAgYmluZGluZ3MgPSBtLmJpbmRpbmdzID0gb19jcmVhdGUobS5i
aW5kaW5ncyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBiaW5kaW5nc1trZXlOYW1lXSA9
IHZhbHVlOwotICAgICAgICAgIH0KLQotICAgICAgICAgIHZhciBkZXNjID0gbS5kZXNjc1trZXlO
YW1lXTsKLQotICAgICAgICAgIEVtYmVyLmFzc2VydCgiRW1iZXIuT2JqZWN0LmNyZWF0ZSBubyBs
b25nZXIgc3VwcG9ydHMgZGVmaW5pbmcgY29tcHV0ZWQgcHJvcGVydGllcy4iLCAhKHZhbHVlIGlu
c3RhbmNlb2YgRW1iZXIuQ29tcHV0ZWRQcm9wZXJ0eSkpOwotICAgICAgICAgIEVtYmVyLmFzc2Vy
dCgiRW1iZXIuT2JqZWN0LmNyZWF0ZSBubyBsb25nZXIgc3VwcG9ydHMgZGVmaW5pbmcgbWV0aG9k
cyB0aGF0IGNhbGwgX3N1cGVyLiIsICEodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHZh
bHVlLnRvU3RyaW5nKCkuaW5kZXhPZignLl9zdXBlcicpICE9PSAtMSkpOwotICAgICAgICAgIEVt
YmVyLmFzc2VydCgiYGFjdGlvbnNgIG11c3QgYmUgcHJvdmlkZWQgYXQgZXh0ZW5kIHRpbWUsIG5v
dCBhdCBjcmVhdGUgIiArCi0gICAgICAgICAgICAgICAgICAgICAgICJ0aW1lLCB3aGVuIEVtYmVy
LkFjdGlvbkhhbmRsZXIgaXMgdXNlZCAoaS5lLiB2aWV3cywgIiArCi0gICAgICAgICAgICAgICAg
ICAgICAgICJjb250cm9sbGVycyAmIHJvdXRlcykuIiwgISgoa2V5TmFtZSA9PT0gJ2FjdGlvbnMn
KSAmJiBFbWJlci5BY3Rpb25IYW5kbGVyLmRldGVjdCh0aGlzKSkpOwotCi0gICAgICAgICAgaWYg
KGNvbmNhdGVuYXRlZFByb3BlcnRpZXMgJiYgaW5kZXhPZihjb25jYXRlbmF0ZWRQcm9wZXJ0aWVz
LCBrZXlOYW1lKSA+PSAwKSB7Ci0gICAgICAgICAgICB2YXIgYmFzZVZhbHVlID0gdGhpc1trZXlO
YW1lXTsKLQotICAgICAgICAgICAgaWYgKGJhc2VWYWx1ZSkgewotICAgICAgICAgICAgICBpZiAo
J2Z1bmN0aW9uJyA9PT0gdHlwZW9mIGJhc2VWYWx1ZS5jb25jYXQpIHsKLSAgICAgICAgICAgICAg
ICB2YWx1ZSA9IGJhc2VWYWx1ZS5jb25jYXQodmFsdWUpOwotICAgICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgIHZhbHVlID0gRW1iZXIubWFrZUFycmF5KGJhc2VWYWx1ZSkuY29u
Y2F0KHZhbHVlKTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgdmFsdWUgPSBFbWJlci5tYWtlQXJyYXkodmFsdWUpOwotICAgICAgICAgICAgfQot
ICAgICAgICAgIH0KLQotICAgICAgICAgIGlmIChkZXNjKSB7Ci0gICAgICAgICAgICBkZXNjLnNl
dCh0aGlzLCBrZXlOYW1lLCB2YWx1ZSk7Ci0gICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
IGlmICh0eXBlb2YgdGhpcy5zZXRVbmtub3duUHJvcGVydHkgPT09ICdmdW5jdGlvbicgJiYgIShr
ZXlOYW1lIGluIHRoaXMpKSB7Ci0gICAgICAgICAgICAgIHRoaXMuc2V0VW5rbm93blByb3BlcnR5
KGtleU5hbWUsIHZhbHVlKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoTUFOREFUT1JZX1NFVFRF
UikgewotICAgICAgICAgICAgICBFbWJlci5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBrZXlOYW1lLCBu
dWxsLCB2YWx1ZSk7IC8vIHNldHVwIG1hbmRhdG9yeSBzZXR0ZXIKLSAgICAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAgIHRoaXNba2V5TmFtZV0gPSB2YWx1ZTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgZmluaXNoUGFydGlh
bCh0aGlzLCBtKTsKLSAgICB0aGlzLmluaXQuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKLSAgICBt
LnByb3RvID0gcHJvdG87Ci0gICAgZmluaXNoQ2hhaW5zKHRoaXMpOwotICAgIHNlbmRFdmVudCh0
aGlzLCAiaW5pdCIpOwotICB9OwotCi0gIENsYXNzLnRvU3RyaW5nID0gTWl4aW4ucHJvdG90eXBl
LnRvU3RyaW5nOwotICBDbGFzcy53aWxsUmVvcGVuID0gZnVuY3Rpb24oKSB7Ci0gICAgaWYgKHdh
c0FwcGxpZWQpIHsKLSAgICAgIENsYXNzLlByb3RvdHlwZU1peGluID0gTWl4aW4uY3JlYXRlKENs
YXNzLlByb3RvdHlwZU1peGluKTsKLSAgICB9Ci0KLSAgICB3YXNBcHBsaWVkID0gZmFsc2U7Ci0g
IH07Ci0gIENsYXNzLl9pbml0TWl4aW5zID0gZnVuY3Rpb24oYXJncykgeyBpbml0TWl4aW5zID0g
YXJnczsgfTsKLSAgQ2xhc3MuX2luaXRQcm9wZXJ0aWVzID0gZnVuY3Rpb24oYXJncykgeyBpbml0
UHJvcGVydGllcyA9IGFyZ3M7IH07Ci0KLSAgQ2xhc3MucHJvdG8gPSBmdW5jdGlvbigpIHsKLSAg
ICB2YXIgc3VwZXJjbGFzcyA9IENsYXNzLnN1cGVyY2xhc3M7Ci0gICAgaWYgKHN1cGVyY2xhc3Mp
IHsgc3VwZXJjbGFzcy5wcm90bygpOyB9Ci0KLSAgICBpZiAoIXdhc0FwcGxpZWQpIHsKLSAgICAg
IHdhc0FwcGxpZWQgPSB0cnVlOwotICAgICAgQ2xhc3MuUHJvdG90eXBlTWl4aW4uYXBwbHlQYXJ0
aWFsKENsYXNzLnByb3RvdHlwZSk7Ci0gICAgICByZXdhdGNoKENsYXNzLnByb3RvdHlwZSk7Ci0g
ICAgfQotCi0gICAgcmV0dXJuIHRoaXMucHJvdG90eXBlOwotICB9OwotCi0gIHJldHVybiBDbGFz
czsKLQotfQotCi0vKioKLSAgQGNsYXNzIENvcmVPYmplY3QKLSAgQG5hbWVzcGFjZSBFbWJlcgot
Ki8KLXZhciBDb3JlT2JqZWN0ID0gbWFrZUN0b3IoKTsKLUNvcmVPYmplY3QudG9TdHJpbmcgPSBm
dW5jdGlvbigpIHsgcmV0dXJuICJFbWJlci5Db3JlT2JqZWN0IjsgfTsKLQotQ29yZU9iamVjdC5Q
cm90b3R5cGVNaXhpbiA9IE1peGluLmNyZWF0ZSh7Ci0gIHJlb3BlbjogZnVuY3Rpb24oKSB7Ci0g
ICAgYXBwbHlNaXhpbih0aGlzLCBhcmd1bWVudHMsIHRydWUpOwotICAgIHJldHVybiB0aGlzOwot
ICB9LAotCi0gIC8qKgotICAgIEFuIG92ZXJyaWRhYmxlIG1ldGhvZCBjYWxsZWQgd2hlbiBvYmpl
Y3RzIGFyZSBpbnN0YW50aWF0ZWQuIEJ5IGRlZmF1bHQsCi0gICAgZG9lcyBub3RoaW5nIHVubGVz
cyBpdCBpcyBvdmVycmlkZGVuIGR1cmluZyBjbGFzcyBkZWZpbml0aW9uLgotCi0gICAgRXhhbXBs
ZToKLQotICAgIGBgYGphdmFzY3JpcHQKLSAgICBBcHAuUGVyc29uID0gRW1iZXIuT2JqZWN0LmV4
dGVuZCh7Ci0gICAgICBpbml0OiBmdW5jdGlvbigpIHsKLSAgICAgICAgYWxlcnQoJ05hbWUgaXMg
JyArIHRoaXMuZ2V0KCduYW1lJykpOwotICAgICAgfQotICAgIH0pOwotCi0gICAgdmFyIHN0ZXZl
ID0gQXBwLlBlcnNvbi5jcmVhdGUoewotICAgICAgbmFtZTogIlN0ZXZlIgotICAgIH0pOwotCi0g
ICAgLy8gYWxlcnRzICdOYW1lIGlzIFN0ZXZlJy4KLSAgICBgYGAKLQotICAgIE5PVEU6IElmIHlv
dSBkbyBvdmVycmlkZSBgaW5pdGAgZm9yIGEgZnJhbWV3b3JrIGNsYXNzIGxpa2UgYEVtYmVyLlZp
ZXdgIG9yCi0gICAgYEVtYmVyLkFycmF5Q29udHJvbGxlcmAsIGJlIHN1cmUgdG8gY2FsbCBgdGhp
cy5fc3VwZXIoKWAgaW4geW91cgotICAgIGBpbml0YCBkZWNsYXJhdGlvbiEgSWYgeW91IGRvbid0
LCBFbWJlciBtYXkgbm90IGhhdmUgYW4gb3Bwb3J0dW5pdHkgdG8KLSAgICBkbyBpbXBvcnRhbnQg
c2V0dXAgd29yaywgYW5kIHlvdSdsbCBzZWUgc3RyYW5nZSBiZWhhdmlvciBpbiB5b3VyCi0gICAg
YXBwbGljYXRpb24uCi0KLSAgICBAbWV0aG9kIGluaXQKLSAgKi8KLSAgaW5pdDogZnVuY3Rpb24o
KSB7fSwKLQotICAvKioKLSAgICBEZWZpbmVzIHRoZSBwcm9wZXJ0aWVzIHRoYXQgd2lsbCBiZSBj
b25jYXRlbmF0ZWQgZnJvbSB0aGUgc3VwZXJjbGFzcwotICAgIChpbnN0ZWFkIG9mIG92ZXJyaWRk
ZW4pLgotCi0gICAgQnkgZGVmYXVsdCwgd2hlbiB5b3UgZXh0ZW5kIGFuIEVtYmVyIGNsYXNzIGEg
cHJvcGVydHkgZGVmaW5lZCBpbgotICAgIHRoZSBzdWJjbGFzcyBvdmVycmlkZXMgYSBwcm9wZXJ0
eSB3aXRoIHRoZSBzYW1lIG5hbWUgdGhhdCBpcyBkZWZpbmVkCi0gICAgaW4gdGhlIHN1cGVyY2xh
c3MuIEhvd2V2ZXIsIHRoZXJlIGFyZSBzb21lIGNhc2VzIHdoZXJlIGl0IGlzIHByZWZlcmFibGUK
LSAgICB0byBidWlsZCB1cCBhIHByb3BlcnR5J3MgdmFsdWUgYnkgY29tYmluaW5nIHRoZSBzdXBl
cmNsYXNzJyBwcm9wZXJ0eQotICAgIHZhbHVlIHdpdGggdGhlIHN1YmNsYXNzJyB2YWx1ZS4gQW4g
ZXhhbXBsZSBvZiB0aGlzIGluIHVzZSB3aXRoaW4gRW1iZXIKLSAgICBpcyB0aGUgYGNsYXNzTmFt
ZXNgIHByb3BlcnR5IG9mIGBFbWJlci5WaWV3YC4KLQotICAgIEhlcmUgaXMgc29tZSBzYW1wbGUg
Y29kZSBzaG93aW5nIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gYSBjb25jYXRlbmF0ZWQKLSAgICBw
cm9wZXJ0eSBhbmQgYSBub3JtYWwgb25lOgotCi0gICAgYGBgamF2YXNjcmlwdAotICAgIEFwcC5C
YXJWaWV3ID0gRW1iZXIuVmlldy5leHRlbmQoewotICAgICAgc29tZU5vbkNvbmNhdGVuYXRlZFBy
b3BlcnR5OiBbJ2JhciddLAotICAgICAgY2xhc3NOYW1lczogWydiYXInXQotICAgIH0pOwotCi0g
ICAgQXBwLkZvb0JhclZpZXcgPSBBcHAuQmFyVmlldy5leHRlbmQoewotICAgICAgc29tZU5vbkNv
bmNhdGVuYXRlZFByb3BlcnR5OiBbJ2ZvbyddLAotICAgICAgY2xhc3NOYW1lczogWydmb28nXSwK
LSAgICB9KTsKLQotICAgIHZhciBmb29CYXJWaWV3ID0gQXBwLkZvb0JhclZpZXcuY3JlYXRlKCk7
Ci0gICAgZm9vQmFyVmlldy5nZXQoJ3NvbWVOb25Db25jYXRlbmF0ZWRQcm9wZXJ0eScpOyAvLyBb
J2ZvbyddCi0gICAgZm9vQmFyVmlldy5nZXQoJ2NsYXNzTmFtZXMnKTsgLy8gWydlbWJlci12aWV3
JywgJ2JhcicsICdmb28nXQotICAgIGBgYAotCi0gICAgVGhpcyBiZWhhdmlvciBleHRlbmRzIHRv
IG9iamVjdCBjcmVhdGlvbiBhcyB3ZWxsLiBDb250aW51aW5nIHRoZQotICAgIGFib3ZlIGV4YW1w
bGU6Ci0KLSAgICBgYGBqYXZhc2NyaXB0Ci0gICAgdmFyIHZpZXcgPSBBcHAuRm9vQmFyVmlldy5j
cmVhdGUoewotICAgICAgc29tZU5vbkNvbmNhdGVuYXRlZFByb3BlcnR5OiBbJ2JheiddLAotICAg
ICAgY2xhc3NOYW1lczogWydiYXonXQotICAgIH0pCi0gICAgdmlldy5nZXQoJ3NvbWVOb25Db25j
YXRlbmF0ZWRQcm9wZXJ0eScpOyAvLyBbJ2JheiddCi0gICAgdmlldy5nZXQoJ2NsYXNzTmFtZXMn
KTsgLy8gWydlbWJlci12aWV3JywgJ2JhcicsICdmb28nLCAnYmF6J10KLSAgICBgYGAKLSAgICBB
ZGRpbmcgYSBzaW5nbGUgcHJvcGVydHkgdGhhdCBpcyBub3QgYW4gYXJyYXkgd2lsbCBqdXN0IGFk
ZCBpdCBpbiB0aGUgYXJyYXk6Ci0KLSAgICBgYGBqYXZhc2NyaXB0Ci0gICAgdmFyIHZpZXcgPSBB
cHAuRm9vQmFyVmlldy5jcmVhdGUoewotICAgICAgY2xhc3NOYW1lczogJ2JheicKLSAgICB9KQot
ICAgIHZpZXcuZ2V0KCdjbGFzc05hbWVzJyk7IC8vIFsnZW1iZXItdmlldycsICdiYXInLCAnZm9v
JywgJ2JheiddCi0gICAgYGBgCi0KLSAgICBVc2luZyB0aGUgYGNvbmNhdGVuYXRlZFByb3BlcnRp
ZXNgIHByb3BlcnR5LCB3ZSBjYW4gdGVsbCB0byBFbWJlciB0aGF0IG1peAotICAgIHRoZSBjb250
ZW50IG9mIHRoZSBwcm9wZXJ0aWVzLgotCi0gICAgSW4gYEVtYmVyLlZpZXdgIHRoZSBgY2xhc3NO
YW1lQmluZGluZ3NgIGFuZCBgYXR0cmlidXRlQmluZGluZ3NgIHByb3BlcnRpZXMKLSAgICBhcmUg
YWxzbyBjb25jYXRlbmF0ZWQsIGluIGFkZGl0aW9uIHRvIGBjbGFzc05hbWVzYC4KLQotICAgIFRo
aXMgZmVhdHVyZSBpcyBhdmFpbGFibGUgZm9yIHlvdSB0byB1c2UgdGhyb3VnaG91dCB0aGUgRW1i
ZXIgb2JqZWN0IG1vZGVsLAotICAgIGFsdGhvdWdoIHR5cGljYWwgYXBwIGRldmVsb3BlcnMgYXJl
IGxpa2VseSB0byB1c2UgaXQgaW5mcmVxdWVudGx5LiBTaW5jZQotICAgIGl0IGNoYW5nZXMgZXhw
ZWN0YXRpb25zIGFib3V0IGJlaGF2aW9yIG9mIHByb3BlcnRpZXMsIHlvdSBzaG91bGQgcHJvcGVy
bHkKLSAgICBkb2N1bWVudCBpdHMgdXNhZ2UgaW4gZWFjaCBpbmRpdmlkdWFsIGNvbmNhdGVuYXRl
ZCBwcm9wZXJ0eSAodG8gbm90Ci0gICAgbWlzbGVhZCB5b3VyIHVzZXJzIHRvIHRoaW5rIHRoZXkg
Y2FuIG92ZXJyaWRlIHRoZSBwcm9wZXJ0eSBpbiBhIHN1YmNsYXNzKS4KLQotICAgIEBwcm9wZXJ0
eSBjb25jYXRlbmF0ZWRQcm9wZXJ0aWVzCi0gICAgQHR5cGUgQXJyYXkKLSAgICBAZGVmYXVsdCBu
dWxsCi0gICovCi0gIGNvbmNhdGVuYXRlZFByb3BlcnRpZXM6IG51bGwsCi0KLSAgLyoqCi0gICAg
RGVzdHJveWVkIG9iamVjdCBwcm9wZXJ0eSBmbGFnLgotCi0gICAgaWYgdGhpcyBwcm9wZXJ0eSBp
cyBgdHJ1ZWAgdGhlIG9ic2VydmVycyBhbmQgYmluZGluZ3Mgd2VyZSBhbHJlYWR5Ci0gICAgcmVt
b3ZlZCBieSB0aGUgZWZmZWN0IG9mIGNhbGxpbmcgdGhlIGBkZXN0cm95KClgIG1ldGhvZC4KLQot
ICAgIEBwcm9wZXJ0eSBpc0Rlc3Ryb3llZAotICAgIEBkZWZhdWx0IGZhbHNlCi0gICovCi0gIGlz
RGVzdHJveWVkOiBmYWxzZSwKLQotICAvKioKLSAgICBEZXN0cnVjdGlvbiBzY2hlZHVsZWQgZmxh
Zy4gVGhlIGBkZXN0cm95KClgIG1ldGhvZCBoYXMgYmVlbiBjYWxsZWQuCi0KLSAgICBUaGUgb2Jq
ZWN0IHN0YXlzIGludGFjdCB1bnRpbCB0aGUgZW5kIG9mIHRoZSBydW4gbG9vcCBhdCB3aGljaCBw
b2ludAotICAgIHRoZSBgaXNEZXN0cm95ZWRgIGZsYWcgaXMgc2V0LgotCi0gICAgQHByb3BlcnR5
IGlzRGVzdHJveWluZwotICAgIEBkZWZhdWx0IGZhbHNlCi0gICovCi0gIGlzRGVzdHJveWluZzog
ZmFsc2UsCi0KLSAgLyoqCi0gICAgRGVzdHJveXMgYW4gb2JqZWN0IGJ5IHNldHRpbmcgdGhlIGBp
c0Rlc3Ryb3llZGAgZmxhZyBhbmQgcmVtb3ZpbmcgaXRzCi0gICAgbWV0YWRhdGEsIHdoaWNoIGVm
ZmVjdGl2ZWx5IGRlc3Ryb3lzIG9ic2VydmVycyBhbmQgYmluZGluZ3MuCi0KLSAgICBJZiB5b3Ug
dHJ5IHRvIHNldCBhIHByb3BlcnR5IG9uIGEgZGVzdHJveWVkIG9iamVjdCwgYW4gZXhjZXB0aW9u
IHdpbGwgYmUKLSAgICByYWlzZWQuCi0KLSAgICBOb3RlIHRoYXQgZGVzdHJ1Y3Rpb24gaXMgc2No
ZWR1bGVkIGZvciB0aGUgZW5kIG9mIHRoZSBydW4gbG9vcCBhbmQgZG9lcyBub3QKLSAgICBoYXBw
ZW4gaW1tZWRpYXRlbHkuICBJdCB3aWxsIHNldCBhbiBpc0Rlc3Ryb3lpbmcgZmxhZyBpbW1lZGlh
dGVseS4KLQotICAgIEBtZXRob2QgZGVzdHJveQotICAgIEByZXR1cm4ge0VtYmVyLk9iamVjdH0g
cmVjZWl2ZXIKLSAgKi8KLSAgZGVzdHJveTogZnVuY3Rpb24oKSB7Ci0gICAgaWYgKHRoaXMuaXNE
ZXN0cm95aW5nKSB7IHJldHVybjsgfQotICAgIHRoaXMuaXNEZXN0cm95aW5nID0gdHJ1ZTsKLQot
ICAgIHNjaGVkdWxlKCdhY3Rpb25zJywgdGhpcywgdGhpcy53aWxsRGVzdHJveSk7Ci0gICAgc2No
ZWR1bGUoJ2Rlc3Ryb3knLCB0aGlzLCB0aGlzLl9zY2hlZHVsZWREZXN0cm95KTsKLSAgICByZXR1
cm4gdGhpczsKLSAgfSwKLQotICAvKioKLSAgICBPdmVycmlkZSB0byBpbXBsZW1lbnQgdGVhcmRv
d24uCi0KLSAgICBAbWV0aG9kIHdpbGxEZXN0cm95Ci0gICAqLwotICB3aWxsRGVzdHJveTogRW1i
ZXIuSywKLQotICAvKioKLSAgICBJbnZva2VkIGJ5IHRoZSBydW4gbG9vcCB0byBhY3R1YWxseSBk
ZXN0cm95IHRoZSBvYmplY3QuIFRoaXMgaXMKLSAgICBzY2hlZHVsZWQgZm9yIGV4ZWN1dGlvbiBi
eSB0aGUgYGRlc3Ryb3lgIG1ldGhvZC4KLQotICAgIEBwcml2YXRlCi0gICAgQG1ldGhvZCBfc2No
ZWR1bGVkRGVzdHJveQotICAqLwotICBfc2NoZWR1bGVkRGVzdHJveTogZnVuY3Rpb24oKSB7Ci0g
ICAgaWYgKHRoaXMuaXNEZXN0cm95ZWQpIHsgcmV0dXJuOyB9Ci0gICAgZGVzdHJveSh0aGlzKTsK
LSAgICB0aGlzLmlzRGVzdHJveWVkID0gdHJ1ZTsKLSAgfSwKLQotICBiaW5kOiBmdW5jdGlvbih0
bywgZnJvbSkgewotICAgIGlmICghKGZyb20gaW5zdGFuY2VvZiBFbWJlci5CaW5kaW5nKSkgeyBm
cm9tID0gRW1iZXIuQmluZGluZy5mcm9tKGZyb20pOyB9Ci0gICAgZnJvbS50byh0bykuY29ubmVj
dCh0aGlzKTsKLSAgICByZXR1cm4gZnJvbTsKLSAgfSwKLQotICAvKioKLSAgICBSZXR1cm5zIGEg
c3RyaW5nIHJlcHJlc2VudGF0aW9uIHdoaWNoIGF0dGVtcHRzIHRvIHByb3ZpZGUgbW9yZSBpbmZv
cm1hdGlvbgotICAgIHRoYW4gSmF2YXNjcmlwdCdzIGB0b1N0cmluZ2AgdHlwaWNhbGx5IGRvZXMs
IGluIGEgZ2VuZXJpYyB3YXkgZm9yIGFsbCBFbWJlcgotICAgIG9iamVjdHMuCi0KLSAgICBgYGBq
YXZhc2NyaXB0Ci0gICAgQXBwLlBlcnNvbiA9IEVtLk9iamVjdC5leHRlbmQoKQotICAgIHBlcnNv
biA9IEFwcC5QZXJzb24uY3JlYXRlKCkKLSAgICBwZXJzb24udG9TdHJpbmcoKSAvLz0+ICI8QXBw
LlBlcnNvbjplbWJlcjEwMjQ+IgotICAgIGBgYAotCi0gICAgSWYgdGhlIG9iamVjdCdzIGNsYXNz
IGlzIG5vdCBkZWZpbmVkIG9uIGFuIEVtYmVyIG5hbWVzcGFjZSwgaXQgd2lsbAotICAgIGluZGlj
YXRlIGl0IGlzIGEgc3ViY2xhc3Mgb2YgdGhlIHJlZ2lzdGVyZWQgc3VwZXJjbGFzczoKLQotICAg
YGBgamF2YXNjcmlwdAotICAgIFN0dWRlbnQgPSBBcHAuUGVyc29uLmV4dGVuZCgpCi0gICAgc3R1
ZGVudCA9IFN0dWRlbnQuY3JlYXRlKCkKLSAgICBzdHVkZW50LnRvU3RyaW5nKCkgLy89PiAiPChz
dWJjbGFzcyBvZiBBcHAuUGVyc29uKTplbWJlcjEwMjU+IgotICAgIGBgYAotCi0gICAgSWYgdGhl
IG1ldGhvZCBgdG9TdHJpbmdFeHRlbnNpb25gIGlzIGRlZmluZWQsIGl0cyByZXR1cm4gdmFsdWUg
d2lsbCBiZQotICAgIGluY2x1ZGVkIGluIHRoZSBvdXRwdXQuCi0KLSAgICBgYGBqYXZhc2NyaXB0
Ci0gICAgQXBwLlRlYWNoZXIgPSBBcHAuUGVyc29uLmV4dGVuZCh7Ci0gICAgICB0b1N0cmluZ0V4
dGVuc2lvbjogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmdldCgnZnVsbE5hbWUn
KTsKLSAgICAgIH0KLSAgICB9KTsKLSAgICB0ZWFjaGVyID0gQXBwLlRlYWNoZXIuY3JlYXRlKCkK
LSAgICB0ZWFjaGVyLnRvU3RyaW5nKCk7IC8vPT4gIjxBcHAuVGVhY2hlcjplbWJlcjEwMjY6VG9t
IERhbGU+IgotICAgIGBgYAotCi0gICAgQG1ldGhvZCB0b1N0cmluZwotICAgIEByZXR1cm4ge1N0
cmluZ30gc3RyaW5nIHJlcHJlc2VudGF0aW9uCi0gICovCi0gIHRvU3RyaW5nOiBmdW5jdGlvbiB0
b1N0cmluZygpIHsKLSAgICB2YXIgaGFzVG9TdHJpbmdFeHRlbnNpb24gPSB0eXBlb2YgdGhpcy50
b1N0cmluZ0V4dGVuc2lvbiA9PT0gJ2Z1bmN0aW9uJywKLSAgICAgICAgZXh0ZW5zaW9uID0gaGFz
VG9TdHJpbmdFeHRlbnNpb24gPyAiOiIgKyB0aGlzLnRvU3RyaW5nRXh0ZW5zaW9uKCkgOiAnJzsK
LSAgICB2YXIgcmV0ID0gJzwnK3RoaXMuY29uc3RydWN0b3IudG9TdHJpbmcoKSsnOicrZ3VpZEZv
cih0aGlzKStleHRlbnNpb24rJz4nOwotICAgIHRoaXMudG9TdHJpbmcgPSBtYWtlVG9TdHJpbmco
cmV0KTsKLSAgICByZXR1cm4gcmV0OwotICB9Ci19KTsKLQotQ29yZU9iamVjdC5Qcm90b3R5cGVN
aXhpbi5vd25lckNvbnN0cnVjdG9yID0gQ29yZU9iamVjdDsKLQotZnVuY3Rpb24gbWFrZVRvU3Ry
aW5nKHJldCkgewotICByZXR1cm4gZnVuY3Rpb24oKSB7IHJldHVybiByZXQ7IH07Ci19Ci0KLWlm
IChFbWJlci5jb25maWcub3ZlcnJpZGVQcm90b3R5cGVNaXhpbikgewotICBFbWJlci5jb25maWcu
b3ZlcnJpZGVQcm90b3R5cGVNaXhpbihDb3JlT2JqZWN0LlByb3RvdHlwZU1peGluKTsKLX0KLQot
Q29yZU9iamVjdC5fX3N1cGVyX18gPSBudWxsOwotCi12YXIgQ2xhc3NNaXhpbiA9IE1peGluLmNy
ZWF0ZSh7Ci0KLSAgQ2xhc3NNaXhpbjogRW1iZXIucmVxdWlyZWQoKSwKLQotICBQcm90b3R5cGVN
aXhpbjogRW1iZXIucmVxdWlyZWQoKSwKLQotICBpc0NsYXNzOiB0cnVlLAotCi0gIGlzTWV0aG9k
OiBmYWxzZSwKLQotICAvKioKLSAgICBDcmVhdGVzIGEgbmV3IHN1YmNsYXNzLgotCi0gICAgYGBg
amF2YXNjcmlwdAotICAgIEFwcC5QZXJzb24gPSBFbWJlci5PYmplY3QuZXh0ZW5kKHsKLSAgICAg
IHNheTogZnVuY3Rpb24odGhpbmcpIHsKLSAgICAgICAgYWxlcnQodGhpbmcpOwotICAgICAgIH0K
LSAgICB9KTsKLSAgICBgYGAKLQotICAgIFRoaXMgZGVmaW5lcyBhIG5ldyBzdWJjbGFzcyBvZiBF
bWJlci5PYmplY3Q6IGBBcHAuUGVyc29uYC4gSXQgY29udGFpbnMgb25lIG1ldGhvZDogYHNheSgp
YC4KLQotICAgIFlvdSBjYW4gYWxzbyBjcmVhdGUgYSBzdWJjbGFzcyBmcm9tIGFueSBleGlzdGlu
ZyBjbGFzcyBieSBjYWxsaW5nIGl0cyBgZXh0ZW5kKClgICBtZXRob2QuIEZvciBleGFtcGxlLCB5
b3UgbWlnaHQgd2FudCB0byBjcmVhdGUgYSBzdWJjbGFzcyBvZiBFbWJlcidzIGJ1aWx0LWluIGBF
bWJlci5WaWV3YCBjbGFzczoKLQotICAgIGBgYGphdmFzY3JpcHQKLSAgICBBcHAuUGVyc29uVmll
dyA9IEVtYmVyLlZpZXcuZXh0ZW5kKHsKLSAgICAgIHRhZ05hbWU6ICdsaScsCi0gICAgICBjbGFz
c05hbWVCaW5kaW5nczogWydpc0FkbWluaXN0cmF0b3InXQotICAgIH0pOwotICAgIGBgYAotCi0g
ICAgV2hlbiBkZWZpbmluZyBhIHN1YmNsYXNzLCB5b3UgY2FuIG92ZXJyaWRlIG1ldGhvZHMgYnV0
IHN0aWxsIGFjY2VzcyB0aGUgaW1wbGVtZW50YXRpb24gb2YgeW91ciBwYXJlbnQgY2xhc3MgYnkg
Y2FsbGluZyB0aGUgc3BlY2lhbCBgX3N1cGVyKClgIG1ldGhvZDoKLQotICAgIGBgYGphdmFzY3Jp
cHQKLSAgICBBcHAuUGVyc29uID0gRW1iZXIuT2JqZWN0LmV4dGVuZCh7Ci0gICAgICBzYXk6IGZ1
bmN0aW9uKHRoaW5nKSB7Ci0gICAgICAgIHZhciBuYW1lID0gdGhpcy5nZXQoJ25hbWUnKTsKLSAg
ICAgICAgYWxlcnQobmFtZSArICcgc2F5czogJyArIHRoaW5nKTsKLSAgICAgIH0KLSAgICB9KTsK
LQotICAgIEFwcC5Tb2xkaWVyID0gQXBwLlBlcnNvbi5leHRlbmQoewotICAgICAgc2F5OiBmdW5j
dGlvbih0aGluZykgewotICAgICAgICB0aGlzLl9zdXBlcih0aGluZyArICIsIHNpciEiKTsKLSAg
ICAgIH0sCi0gICAgICBtYXJjaDogZnVuY3Rpb24obnVtYmVyT2ZIb3VycykgewotICAgICAgICBh
bGVydCh0aGlzLmdldCgnbmFtZScpICsgJyBtYXJjaGVzIGZvciAnICsgbnVtYmVyT2ZIb3VycyAr
ICcgaG91cnMuJykKLSAgICAgIH0KLSAgICB9KTsKLQotICAgIHZhciB5ZWh1ZGEgPSBBcHAuU29s
ZGllci5jcmVhdGUoewotICAgICAgbmFtZTogIlllaHVkYSBLYXR6IgotICAgIH0pOwotCi0gICAg
eWVodWRhLnNheSgiWWVzIik7ICAvLyBhbGVydHMgIlllaHVkYSBLYXR6IHNheXM6IFllcywgc2ly
ISIKLSAgICBgYGAKLQotICAgIFRoZSBgY3JlYXRlKClgIG9uIGxpbmUgIzE3IGNyZWF0ZXMgYW4g
Kmluc3RhbmNlKiBvZiB0aGUgYEFwcC5Tb2xkaWVyYCBjbGFzcy4gVGhlIGBleHRlbmQoKWAgb24g
bGluZSAjOCBjcmVhdGVzIGEgKnN1YmNsYXNzKiBvZiBgQXBwLlBlcnNvbmAuIEFueSBpbnN0YW5j
ZSBvZiB0aGUgYEFwcC5QZXJzb25gIGNsYXNzIHdpbGwgKm5vdCogaGF2ZSB0aGUgYG1hcmNoKClg
IG1ldGhvZC4KLQotICAgIFlvdSBjYW4gYWxzbyBwYXNzIGBFbWJlci5NaXhpbmAgY2xhc3NlcyB0
byBhZGQgYWRkaXRpb25hbCBwcm9wZXJ0aWVzIHRvIHRoZSBzdWJjbGFzcy4KLQotICAgIGBgYGph
dmFzY3JpcHQKLSAgICBBcHAuUGVyc29uID0gRW1iZXIuT2JqZWN0LmV4dGVuZCh7Ci0gICAgICBz
YXk6IGZ1bmN0aW9uKHRoaW5nKSB7Ci0gICAgICAgIGFsZXJ0KHRoaXMuZ2V0KCduYW1lJykgKyAn
IHNheXM6ICcgKyB0aGluZyk7Ci0gICAgICB9Ci0gICAgfSk7Ci0KLSAgICBBcHAuU2luZ2luZ01p
eGluID0gRW1iZXIuTWl4aW4uY3JlYXRlKHsKLSAgICAgIHNpbmc6IGZ1bmN0aW9uKHRoaW5nKXsK
LSAgICAgICAgYWxlcnQodGhpcy5nZXQoJ25hbWUnKSArICcgc2luZ3M6IGxhIGxhIGxhICcgKyB0
aGluZyk7Ci0gICAgICB9Ci0gICAgfSk7Ci0KLSAgICBBcHAuQnJvYWR3YXlTdGFyID0gQXBwLlBl
cnNvbi5leHRlbmQoQXBwLlNpbmdpbmdNaXhpbiwgewotICAgICAgZGFuY2U6IGZ1bmN0aW9uKCkg
ewotICAgICAgICBhbGVydCh0aGlzLmdldCgnbmFtZScpICsgJyBkYW5jZXM6IHRhcCB0YXAgdGFw
IHRhcCAnKTsKLSAgICAgIH0KLSAgICB9KTsKLSAgICBgYGAKLQotICAgIFRoZSBgQXBwLkJyb2Fk
d2F5U3RhcmAgY2xhc3MgY29udGFpbnMgdGhyZWUgbWV0aG9kczogYHNheSgpYCwgYHNpbmcoKWAs
IGFuZCBgZGFuY2UoKWAuCi0KLSAgICBAbWV0aG9kIGV4dGVuZAotICAgIEBzdGF0aWMKLQotICAg
IEBwYXJhbSB7RW1iZXIuTWl4aW59IFttaXhpbnNdKiBPbmUgb3IgbW9yZSBFbWJlci5NaXhpbiBj
bGFzc2VzCi0gICAgQHBhcmFtIHtPYmplY3R9IFthcmd1bWVudHNdKiBPYmplY3QgY29udGFpbmlu
ZyB2YWx1ZXMgdG8gdXNlIHdpdGhpbiB0aGUgbmV3IGNsYXNzCi0gICovCi0gIGV4dGVuZDogZnVu
Y3Rpb24oKSB7Ci0gICAgdmFyIENsYXNzID0gbWFrZUN0b3IoKSwgcHJvdG87Ci0gICAgQ2xhc3Mu
Q2xhc3NNaXhpbiA9IE1peGluLmNyZWF0ZSh0aGlzLkNsYXNzTWl4aW4pOwotICAgIENsYXNzLlBy
b3RvdHlwZU1peGluID0gTWl4aW4uY3JlYXRlKHRoaXMuUHJvdG90eXBlTWl4aW4pOwotCi0gICAg
Q2xhc3MuQ2xhc3NNaXhpbi5vd25lckNvbnN0cnVjdG9yID0gQ2xhc3M7Ci0gICAgQ2xhc3MuUHJv
dG90eXBlTWl4aW4ub3duZXJDb25zdHJ1Y3RvciA9IENsYXNzOwotCi0gICAgcmVvcGVuLmFwcGx5
KENsYXNzLlByb3RvdHlwZU1peGluLCBhcmd1bWVudHMpOwotCi0gICAgQ2xhc3Muc3VwZXJjbGFz
cyA9IHRoaXM7Ci0gICAgQ2xhc3MuX19zdXBlcl9fICA9IHRoaXMucHJvdG90eXBlOwotCi0gICAg
cHJvdG8gPSBDbGFzcy5wcm90b3R5cGUgPSBvX2NyZWF0ZSh0aGlzLnByb3RvdHlwZSk7Ci0gICAg
cHJvdG8uY29uc3RydWN0b3IgPSBDbGFzczsKLSAgICBnZW5lcmF0ZUd1aWQocHJvdG8pOwotICAg
IG1ldGEocHJvdG8pLnByb3RvID0gcHJvdG87IC8vIHRoaXMgd2lsbCBkaXNhYmxlIG9ic2VydmVy
cyBvbiBwcm90b3R5cGUKLQotICAgIENsYXNzLkNsYXNzTWl4aW4uYXBwbHkoQ2xhc3MpOwotICAg
IHJldHVybiBDbGFzczsKLSAgfSwKLQotICAvKioKLSAgICBFcXVpdmFsZW50IHRvIGRvaW5nIGBl
eHRlbmQoYXJndW1lbnRzKS5jcmVhdGUoKWAuCi0gICAgSWYgcG9zc2libGUgdXNlIHRoZSBub3Jt
YWwgYGNyZWF0ZWAgbWV0aG9kIGluc3RlYWQuCi0KLSAgICBAbWV0aG9kIGNyZWF0ZVdpdGhNaXhp
bnMKLSAgICBAc3RhdGljCi0gICAgQHBhcmFtIFthcmd1bWVudHNdKgotICAqLwotICBjcmVhdGVX
aXRoTWl4aW5zOiBmdW5jdGlvbigpIHsKLSAgICB2YXIgQyA9IHRoaXM7Ci0gICAgaWYgKGFyZ3Vt
ZW50cy5sZW5ndGg+MCkgeyB0aGlzLl9pbml0TWl4aW5zKGFyZ3VtZW50cyk7IH0KLSAgICByZXR1
cm4gbmV3IEMoKTsKLSAgfSwKLQotICAvKioKLSAgICBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIGEg
Y2xhc3MuIEFjY2VwdHMgZWl0aGVyIG5vIGFyZ3VtZW50cywgb3IgYW4gb2JqZWN0Ci0gICAgY29u
dGFpbmluZyB2YWx1ZXMgdG8gaW5pdGlhbGl6ZSB0aGUgbmV3bHkgaW5zdGFudGlhdGVkIG9iamVj
dCB3aXRoLgotCi0gICAgYGBgamF2YXNjcmlwdAotICAgIEFwcC5QZXJzb24gPSBFbWJlci5PYmpl
Y3QuZXh0ZW5kKHsKLSAgICAgIGhlbGxvV29ybGQ6IGZ1bmN0aW9uKCkgewotICAgICAgICBhbGVy
dCgiSGksIG15IG5hbWUgaXMgIiArIHRoaXMuZ2V0KCduYW1lJykpOwotICAgICAgfQotICAgIH0p
OwotCi0gICAgdmFyIHRvbSA9IEFwcC5QZXJzb24uY3JlYXRlKHsKLSAgICAgIG5hbWU6ICdUb20g
RGFsZScKLSAgICB9KTsKLQotICAgIHRvbS5oZWxsb1dvcmxkKCk7IC8vIGFsZXJ0cyAiSGksIG15
IG5hbWUgaXMgVG9tIERhbGUiLgotICAgIGBgYAotCi0gICAgYGNyZWF0ZWAgd2lsbCBjYWxsIHRo
ZSBgaW5pdGAgZnVuY3Rpb24gaWYgZGVmaW5lZCBkdXJpbmcKLSAgICBgRW1iZXIuQW55T2JqZWN0
LmV4dGVuZGAKLQotICAgIElmIG5vIGFyZ3VtZW50cyBhcmUgcGFzc2VkIHRvIGBjcmVhdGVgLCBp
dCB3aWxsIG5vdCBzZXQgdmFsdWVzIHRvIHRoZSBuZXcKLSAgICBpbnN0YW5jZSBkdXJpbmcgaW5p
dGlhbGl6YXRpb246Ci0KLSAgICBgYGBqYXZhc2NyaXB0Ci0gICAgdmFyIG5vTmFtZSA9IEFwcC5Q
ZXJzb24uY3JlYXRlKCk7Ci0gICAgbm9OYW1lLmhlbGxvV29ybGQoKTsgLy8gYWxlcnRzIHVuZGVm
aW5lZAotICAgIGBgYAotCi0gICAgTk9URTogRm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMsIHlvdSBj
YW5ub3QgZGVjbGFyZSBtZXRob2RzIG9yIGNvbXB1dGVkCi0gICAgcHJvcGVydGllcyBkdXJpbmcg
YGNyZWF0ZWAuIFlvdSBzaG91bGQgaW5zdGVhZCBkZWNsYXJlIG1ldGhvZHMgYW5kIGNvbXB1dGVk
Ci0gICAgcHJvcGVydGllcyB3aGVuIHVzaW5nIGBleHRlbmRgIG9yIHVzZSB0aGUgYGNyZWF0ZVdp
dGhNaXhpbnNgIHNob3J0aGFuZC4KLQotICAgIEBtZXRob2QgY3JlYXRlCi0gICAgQHN0YXRpYwot
ICAgIEBwYXJhbSBbYXJndW1lbnRzXSoKLSAgKi8KLSAgY3JlYXRlOiBmdW5jdGlvbigpIHsKLSAg
ICB2YXIgQyA9IHRoaXM7Ci0gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGg+MCkgeyB0aGlzLl9pbml0
UHJvcGVydGllcyhhcmd1bWVudHMpOyB9Ci0gICAgcmV0dXJuIG5ldyBDKCk7Ci0gIH0sCi0KLSAg
LyoqCi0gICAgQXVnbWVudHMgYSBjb25zdHJ1Y3RvcidzIHByb3RvdHlwZSB3aXRoIGFkZGl0aW9u
YWwKLSAgICBwcm9wZXJ0aWVzIGFuZCBmdW5jdGlvbnM6Ci0KLSAgICBgYGBqYXZhc2NyaXB0Ci0g
ICAgTXlPYmplY3QgPSBFbWJlci5PYmplY3QuZXh0ZW5kKHsKLSAgICAgIG5hbWU6ICdhbiBvYmpl
Y3QnCi0gICAgfSk7Ci0KLSAgICBvID0gTXlPYmplY3QuY3JlYXRlKCk7Ci0gICAgby5nZXQoJ25h
bWUnKTsgLy8gJ2FuIG9iamVjdCcKLQotICAgIE15T2JqZWN0LnJlb3Blbih7Ci0gICAgICBzYXk6
IGZ1bmN0aW9uKG1zZyl7Ci0gICAgICAgIGNvbnNvbGUubG9nKG1zZyk7Ci0gICAgICB9Ci0gICAg
fSkKLQotICAgIG8yID0gTXlPYmplY3QuY3JlYXRlKCk7Ci0gICAgbzIuc2F5KCJoZWxsbyIpOyAv
LyBsb2dzICJoZWxsbyIKLQotICAgIG8uc2F5KCJnb29kYnllIik7IC8vIGxvZ3MgImdvb2RieWUi
Ci0gICAgYGBgCi0KLSAgICBUbyBhZGQgZnVuY3Rpb25zIGFuZCBwcm9wZXJ0aWVzIHRvIHRoZSBj
b25zdHJ1Y3RvciBpdHNlbGYsCi0gICAgc2VlIGByZW9wZW5DbGFzc2AKLQotICAgIEBtZXRob2Qg
cmVvcGVuCi0gICovCi0gIHJlb3BlbjogZnVuY3Rpb24oKSB7Ci0gICAgdGhpcy53aWxsUmVvcGVu
KCk7Ci0gICAgcmVvcGVuLmFwcGx5KHRoaXMuUHJvdG90eXBlTWl4aW4sIGFyZ3VtZW50cyk7Ci0g
ICAgcmV0dXJuIHRoaXM7Ci0gIH0sCi0KLSAgLyoqCi0gICAgQXVnbWVudHMgYSBjb25zdHJ1Y3Rv
cidzIG93biBwcm9wZXJ0aWVzIGFuZCBmdW5jdGlvbnM6Ci0KLSAgICBgYGBqYXZhc2NyaXB0Ci0g
ICAgTXlPYmplY3QgPSBFbWJlci5PYmplY3QuZXh0ZW5kKHsKLSAgICAgIG5hbWU6ICdhbiBvYmpl
Y3QnCi0gICAgfSk7Ci0KLSAgICBNeU9iamVjdC5yZW9wZW5DbGFzcyh7Ci0gICAgICBjYW5CdWls
ZDogZmFsc2UKLSAgICB9KTsKLQotICAgIE15T2JqZWN0LmNhbkJ1aWxkOyAvLyBmYWxzZQotICAg
IG8gPSBNeU9iamVjdC5jcmVhdGUoKTsKLSAgICBgYGAKLQotICAgIEluIG90aGVyIHdvcmRzLCB0
aGlzIGNyZWF0ZXMgc3RhdGljIHByb3BlcnRpZXMgYW5kIGZ1bmN0aW9ucyBmb3IgdGhlIGNsYXNz
LiBUaGVzZSBhcmUgb25seSBhdmFpbGFibGUgb24gdGhlIGNsYXNzCi0gICAgYW5kIG5vdCBvbiBh
bnkgaW5zdGFuY2Ugb2YgdGhhdCBjbGFzcy4KLQotICAgIGBgYGphdmFzY3JpcHQKLSAgICBBcHAu
UGVyc29uID0gRW1iZXIuT2JqZWN0LmV4dGVuZCh7Ci0gICAgICBuYW1lIDogIiIsCi0gICAgICBz
YXlIZWxsbyA6IGZ1bmN0aW9uKCl7Ci0gICAgICAgIGFsZXJ0KCJIZWxsby4gTXkgbmFtZSBpcyAi
ICsgdGhpcy5nZXQoJ25hbWUnKSk7Ci0gICAgICB9Ci0gICAgfSk7Ci0KLSAgICBBcHAuUGVyc29u
LnJlb3BlbkNsYXNzKHsKLSAgICAgIHNwZWNpZXMgOiAiSG9tbyBzYXBpZW5zIiwKLSAgICAgIGNy
ZWF0ZVBlcnNvbjogZnVuY3Rpb24obmV3UGVyc29uc05hbWUpewotICAgICAgICByZXR1cm4gQXBw
LlBlcnNvbi5jcmVhdGUoewotICAgICAgICAgIG5hbWU6bmV3UGVyc29uc05hbWUKLSAgICAgICAg
fSk7Ci0gICAgICB9Ci0gICAgfSk7Ci0KLSAgICB2YXIgdG9tID0gQXBwLlBlcnNvbi5jcmVhdGUo
ewotICAgICAgbmFtZSA6ICJUb20gRGFsZSIKLSAgICB9KTsKLSAgICB2YXIgeWVodWRhID0gQXBw
LlBlcnNvbi5jcmVhdGVQZXJzb24oIlllaHVkYSBLYXR6Iik7Ci0KLSAgICB0b20uc2F5SGVsbG8o
KTsgLy8gIkhlbGxvLiBNeSBuYW1lIGlzIFRvbSBEYWxlIgotICAgIHllaHVkYS5zYXlIZWxsbygp
OyAvLyAiSGVsbG8uIE15IG5hbWUgaXMgWWVodWRhIEthdHoiCi0gICAgYWxlcnQoQXBwLlBlcnNv
bi5zcGVjaWVzKTsgLy8gIkhvbW8gc2FwaWVucyIKLSAgICBgYGAKLQotICAgIE5vdGUgdGhhdCBg
c3BlY2llc2AgYW5kIGBjcmVhdGVQZXJzb25gIGFyZSAqbm90KiB2YWxpZCBvbiB0aGUgYHRvbWAg
YW5kIGB5ZWh1ZGFgCi0gICAgdmFyaWFibGVzLiBUaGV5IGFyZSBvbmx5IHZhbGlkIG9uIGBBcHAu
UGVyc29uYC4KLQotICAgIFRvIGFkZCBmdW5jdGlvbnMgYW5kIHByb3BlcnRpZXMgdG8gaW5zdGFu
Y2VzIG9mCi0gICAgYSBjb25zdHJ1Y3RvciBieSBleHRlbmRpbmcgdGhlIGNvbnN0cnVjdG9yJ3Mg
cHJvdG90eXBlCi0gICAgc2VlIGByZW9wZW5gCi0KLSAgICBAbWV0aG9kIHJlb3BlbkNsYXNzCi0g
ICovCi0gIHJlb3BlbkNsYXNzOiBmdW5jdGlvbigpIHsKLSAgICByZW9wZW4uYXBwbHkodGhpcy5D
bGFzc01peGluLCBhcmd1bWVudHMpOwotICAgIGFwcGx5TWl4aW4odGhpcywgYXJndW1lbnRzLCBm
YWxzZSk7Ci0gICAgcmV0dXJuIHRoaXM7Ci0gIH0sCi0KLSAgZGV0ZWN0OiBmdW5jdGlvbihvYmop
IHsKLSAgICBpZiAoJ2Z1bmN0aW9uJyAhPT0gdHlwZW9mIG9iaikgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICB3aGlsZShvYmopIHsKLSAgICAgIGlmIChvYmo9PT10aGlzKSB7IHJldHVybiB0cnVlOyB9
Ci0gICAgICBvYmogPSBvYmouc3VwZXJjbGFzczsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwot
ICB9LAotCi0gIGRldGVjdEluc3RhbmNlOiBmdW5jdGlvbihvYmopIHsKLSAgICByZXR1cm4gb2Jq
IGluc3RhbmNlb2YgdGhpczsKLSAgfSwKLQotICAvKioKLSAgICBJbiBzb21lIGNhc2VzLCB5b3Ug
bWF5IHdhbnQgdG8gYW5ub3RhdGUgY29tcHV0ZWQgcHJvcGVydGllcyB3aXRoIGFkZGl0aW9uYWwK
LSAgICBtZXRhZGF0YSBhYm91dCBob3cgdGhleSBmdW5jdGlvbiBvciB3aGF0IHZhbHVlcyB0aGV5
IG9wZXJhdGUgb24uIEZvcgotICAgIGV4YW1wbGUsIGNvbXB1dGVkIHByb3BlcnR5IGZ1bmN0aW9u
cyBtYXkgY2xvc2Ugb3ZlciB2YXJpYWJsZXMgdGhhdCBhcmUgdGhlbgotICAgIG5vIGxvbmdlciBh
dmFpbGFibGUgZm9yIGludHJvc3BlY3Rpb24uCi0KLSAgICBZb3UgY2FuIHBhc3MgYSBoYXNoIG9m
IHRoZXNlIHZhbHVlcyB0byBhIGNvbXB1dGVkIHByb3BlcnR5IGxpa2UgdGhpczoKLQotICAgIGBg
YGphdmFzY3JpcHQKLSAgICBwZXJzb246IGZ1bmN0aW9uKCkgewotICAgICAgdmFyIHBlcnNvbklk
ID0gdGhpcy5nZXQoJ3BlcnNvbklkJyk7Ci0gICAgICByZXR1cm4gQXBwLlBlcnNvbi5jcmVhdGUo
eyBpZDogcGVyc29uSWQgfSk7Ci0gICAgfS5wcm9wZXJ0eSgpLm1ldGEoeyB0eXBlOiBBcHAuUGVy
c29uIH0pCi0gICAgYGBgCi0KLSAgICBPbmNlIHlvdSd2ZSBkb25lIHRoaXMsIHlvdSBjYW4gcmV0
cmlldmUgdGhlIHZhbHVlcyBzYXZlZCB0byB0aGUgY29tcHV0ZWQKLSAgICBwcm9wZXJ0eSBmcm9t
IHlvdXIgY2xhc3MgbGlrZSB0aGlzOgotCi0gICAgYGBgamF2YXNjcmlwdAotICAgIE15Q2xhc3Mu
bWV0YUZvclByb3BlcnR5KCdwZXJzb24nKTsKLSAgICBgYGAKLQotICAgIFRoaXMgd2lsbCByZXR1
cm4gdGhlIG9yaWdpbmFsIGhhc2ggdGhhdCB3YXMgcGFzc2VkIHRvIGBtZXRhKClgLgotCi0gICAg
QG1ldGhvZCBtZXRhRm9yUHJvcGVydHkKLSAgICBAcGFyYW0ga2V5IHtTdHJpbmd9IHByb3BlcnR5
IG5hbWUKLSAgKi8KLSAgbWV0YUZvclByb3BlcnR5OiBmdW5jdGlvbihrZXkpIHsKLSAgICB2YXIg
ZGVzYyA9IG1ldGEodGhpcy5wcm90bygpLCBmYWxzZSkuZGVzY3Nba2V5XTsKLQotICAgIEVtYmVy
LmFzc2VydCgibWV0YUZvclByb3BlcnR5KCkgY291bGQgbm90IGZpbmQgYSBjb21wdXRlZCBwcm9w
ZXJ0eSB3aXRoIGtleSAnIitrZXkrIicuIiwgISFkZXNjICYmIGRlc2MgaW5zdGFuY2VvZiBFbWJl
ci5Db21wdXRlZFByb3BlcnR5KTsKLSAgICByZXR1cm4gZGVzYy5fbWV0YSB8fCB7fTsKLSAgfSwK
LQotICAvKioKLSAgICBJdGVyYXRlIG92ZXIgZWFjaCBjb21wdXRlZCBwcm9wZXJ0eSBmb3IgdGhl
IGNsYXNzLCBwYXNzaW5nIGl0cyBuYW1lCi0gICAgYW5kIGFueSBhc3NvY2lhdGVkIG1ldGFkYXRh
IChzZWUgYG1ldGFGb3JQcm9wZXJ0eWApIHRvIHRoZSBjYWxsYmFjay4KLQotICAgIEBtZXRob2Qg
ZWFjaENvbXB1dGVkUHJvcGVydHkKLSAgICBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFjawotICAg
IEBwYXJhbSB7T2JqZWN0fSBiaW5kaW5nCi0gICovCi0gIGVhY2hDb21wdXRlZFByb3BlcnR5OiBm
dW5jdGlvbihjYWxsYmFjaywgYmluZGluZykgewotICAgIHZhciBwcm90byA9IHRoaXMucHJvdG8o
KSwKLSAgICAgICAgZGVzY3MgPSBtZXRhKHByb3RvKS5kZXNjcywKLSAgICAgICAgZW1wdHkgPSB7
fSwKLSAgICAgICAgcHJvcGVydHk7Ci0KLSAgICBmb3IgKHZhciBuYW1lIGluIGRlc2NzKSB7Ci0g
ICAgICBwcm9wZXJ0eSA9IGRlc2NzW25hbWVdOwotCi0gICAgICBpZiAocHJvcGVydHkgaW5zdGFu
Y2VvZiBFbWJlci5Db21wdXRlZFByb3BlcnR5KSB7Ci0gICAgICAgIGNhbGxiYWNrLmNhbGwoYmlu
ZGluZyB8fCB0aGlzLCBuYW1lLCBwcm9wZXJ0eS5fbWV0YSB8fCBlbXB0eSk7Ci0gICAgICB9Ci0g
ICAgfQotICB9Ci0KLX0pOwotCi1DbGFzc01peGluLm93bmVyQ29uc3RydWN0b3IgPSBDb3JlT2Jq
ZWN0OwotCi1pZiAoRW1iZXIuY29uZmlnLm92ZXJyaWRlQ2xhc3NNaXhpbikgewotICBFbWJlci5j
b25maWcub3ZlcnJpZGVDbGFzc01peGluKENsYXNzTWl4aW4pOwotfQotCi1Db3JlT2JqZWN0LkNs
YXNzTWl4aW4gPSBDbGFzc01peGluOwotQ2xhc3NNaXhpbi5hcHBseShDb3JlT2JqZWN0KTsKLQot
RW1iZXIuQ29yZU9iamVjdCA9IENvcmVPYmplY3Q7Ci0KLX0pKCk7Ci0KLQotCi0oZnVuY3Rpb24o
KSB7Ci0vKioKLUBtb2R1bGUgZW1iZXIKLUBzdWJtb2R1bGUgZW1iZXItcnVudGltZQotKi8KLQot
LyoqCi0gIGBFbWJlci5PYmplY3RgIGlzIHRoZSBtYWluIGJhc2UgY2xhc3MgZm9yIGFsbCBFbWJl
ciBvYmplY3RzLiBJdCBpcyBhIHN1YmNsYXNzCi0gIG9mIGBFbWJlci5Db3JlT2JqZWN0YCB3aXRo
IHRoZSBgRW1iZXIuT2JzZXJ2YWJsZWAgbWl4aW4gYXBwbGllZC4gRm9yIGRldGFpbHMsCi0gIHNl
ZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgZWFjaCBvZiB0aGVzZS4KLQotICBAY2xhc3MgT2JqZWN0
Ci0gIEBuYW1lc3BhY2UgRW1iZXIKLSAgQGV4dGVuZHMgRW1iZXIuQ29yZU9iamVjdAotICBAdXNl
cyBFbWJlci5PYnNlcnZhYmxlCi0qLwotRW1iZXIuT2JqZWN0ID0gRW1iZXIuQ29yZU9iamVjdC5l
eHRlbmQoRW1iZXIuT2JzZXJ2YWJsZSk7Ci1FbWJlci5PYmplY3QudG9TdHJpbmcgPSBmdW5jdGlv
bigpIHsgcmV0dXJuICJFbWJlci5PYmplY3QiOyB9OwotCi19KSgpOwotCi0KLQotKGZ1bmN0aW9u
KCkgewotLyoqCi1AbW9kdWxlIGVtYmVyCi1Ac3VibW9kdWxlIGVtYmVyLXJ1bnRpbWUKLSovCi0K
LXZhciBnZXQgPSBFbWJlci5nZXQsIGluZGV4T2YgPSBFbWJlci5BcnJheVBvbHlmaWxscy5pbmRl
eE9mOwotCi0vKioKLSAgQSBOYW1lc3BhY2UgaXMgYW4gb2JqZWN0IHVzdWFsbHkgdXNlZCB0byBj
b250YWluIG90aGVyIG9iamVjdHMgb3IgbWV0aG9kcwotICBzdWNoIGFzIGFuIGFwcGxpY2F0aW9u
IG9yIGZyYW1ld29yay4gQ3JlYXRlIGEgbmFtZXNwYWNlIGFueXRpbWUgeW91IHdhbnQKLSAgdG8g
ZGVmaW5lIG9uZSBvZiB0aGVzZSBuZXcgY29udGFpbmVycy4KLQotICAjIEV4YW1wbGUgVXNhZ2UK
LQotICBgYGBqYXZhc2NyaXB0Ci0gIE15RnJhbWV3b3JrID0gRW1iZXIuTmFtZXNwYWNlLmNyZWF0
ZSh7Ci0gICAgVkVSU0lPTjogJzEuMC4wJwotICB9KTsKLSAgYGBgCi0KLSAgQGNsYXNzIE5hbWVz
cGFjZQotICBAbmFtZXNwYWNlIEVtYmVyCi0gIEBleHRlbmRzIEVtYmVyLk9iamVjdAotKi8KLXZh
ciBOYW1lc3BhY2UgPSBFbWJlci5OYW1lc3BhY2UgPSBFbWJlci5PYmplY3QuZXh0ZW5kKHsKLSAg
aXNOYW1lc3BhY2U6IHRydWUsCi0KLSAgaW5pdDogZnVuY3Rpb24oKSB7Ci0gICAgRW1iZXIuTmFt
ZXNwYWNlLk5BTUVTUEFDRVMucHVzaCh0aGlzKTsKLSAgICBFbWJlci5OYW1lc3BhY2UuUFJPQ0VT
U0VEID0gZmFsc2U7Ci0gIH0sCi0KLSAgdG9TdHJpbmc6IGZ1bmN0aW9uKCkgewotICAgIHZhciBu
YW1lID0gZ2V0KHRoaXMsICduYW1lJyk7Ci0gICAgaWYgKG5hbWUpIHsgcmV0dXJuIG5hbWU7IH0K
LQotICAgIGZpbmROYW1lc3BhY2VzKCk7Ci0gICAgcmV0dXJuIHRoaXNbRW1iZXIuR1VJRF9LRVkr
J19uYW1lJ107Ci0gIH0sCi0KLSAgbmFtZUNsYXNzZXM6IGZ1bmN0aW9uKCkgewotICAgIHByb2Nl
c3NOYW1lc3BhY2UoW3RoaXMudG9TdHJpbmcoKV0sIHRoaXMsIHt9KTsKLSAgfSwKLQotICBkZXN0
cm95OiBmdW5jdGlvbigpIHsKLSAgICB2YXIgbmFtZXNwYWNlcyA9IEVtYmVyLk5hbWVzcGFjZS5O
QU1FU1BBQ0VTOwotICAgIEVtYmVyLmxvb2t1cFt0aGlzLnRvU3RyaW5nKCldID0gdW5kZWZpbmVk
OwotICAgIG5hbWVzcGFjZXMuc3BsaWNlKGluZGV4T2YuY2FsbChuYW1lc3BhY2VzLCB0aGlzKSwg
MSk7Ci0gICAgdGhpcy5fc3VwZXIoKTsKLSAgfQotfSk7Ci0KLU5hbWVzcGFjZS5yZW9wZW5DbGFz
cyh7Ci0gIE5BTUVTUEFDRVM6IFtFbWJlcl0sCi0gIE5BTUVTUEFDRVNfQllfSUQ6IHt9LAotICBQ
Uk9DRVNTRUQ6IGZhbHNlLAotICBwcm9jZXNzQWxsOiBwcm9jZXNzQWxsTmFtZXNwYWNlcywKLSAg
YnlOYW1lOiBmdW5jdGlvbihuYW1lKSB7Ci0gICAgaWYgKCFFbWJlci5CT09URUQpIHsKLSAgICAg
IHByb2Nlc3NBbGxOYW1lc3BhY2VzKCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIE5BTUVTUEFDRVNf
QllfSURbbmFtZV07Ci0gIH0KLX0pOwotCi12YXIgTkFNRVNQQUNFU19CWV9JRCA9IE5hbWVzcGFj
ZS5OQU1FU1BBQ0VTX0JZX0lEOwotCi12YXIgaGFzT3duUHJvcCA9ICh7fSkuaGFzT3duUHJvcGVy
dHksCi0gICAgZ3VpZEZvciA9IEVtYmVyLmd1aWRGb3I7Ci0KLWZ1bmN0aW9uIHByb2Nlc3NOYW1l
c3BhY2UocGF0aHMsIHJvb3QsIHNlZW4pIHsKLSAgdmFyIGlkeCA9IHBhdGhzLmxlbmd0aDsKLQot
ICBOQU1FU1BBQ0VTX0JZX0lEW3BhdGhzLmpvaW4oJy4nKV0gPSByb290OwotCi0gIC8vIExvb3Ag
b3ZlciBhbGwgb2YgdGhlIGtleXMgaW4gdGhlIG5hbWVzcGFjZSwgbG9va2luZyBmb3IgY2xhc3Nl
cwotICBmb3IodmFyIGtleSBpbiByb290KSB7Ci0gICAgaWYgKCFoYXNPd25Qcm9wLmNhbGwocm9v
dCwga2V5KSkgeyBjb250aW51ZTsgfQotICAgIHZhciBvYmogPSByb290W2tleV07Ci0KLSAgICAv
LyBJZiB3ZSBhcmUgcHJvY2Vzc2luZyB0aGUgYEVtYmVyYCBuYW1lc3BhY2UsIGZvciBleGFtcGxl
LCB0aGUKLSAgICAvLyBgcGF0aHNgIHdpbGwgc3RhcnQgd2l0aCBgWyJFbWJlciJdYC4gRXZlcnkg
aXRlcmF0aW9uIHRocm91Z2gKLSAgICAvLyB0aGUgbG9vcCB3aWxsIHVwZGF0ZSB0aGUgKipzZWNv
bmQqKiBlbGVtZW50IG9mIHRoaXMgbGlzdCB3aXRoCi0gICAgLy8gdGhlIGtleSwgc28gcHJvY2Vz
c2luZyBgRW1iZXIuVmlld2Agd2lsbCBtYWtlIHRoZSBBcnJheQotICAgIC8vIGBbJ0VtYmVyJywg
J1ZpZXcnXWAuCi0gICAgcGF0aHNbaWR4XSA9IGtleTsKLQotICAgIC8vIElmIHdlIGhhdmUgZm91
bmQgYW4gdW5wcm9jZXNzZWQgY2xhc3MKLSAgICBpZiAob2JqICYmIG9iai50b1N0cmluZyA9PT0g
Y2xhc3NUb1N0cmluZykgewotICAgICAgLy8gUmVwbGFjZSB0aGUgY2xhc3MnIGB0b1N0cmluZ2Ag
d2l0aCB0aGUgZG90LXNlcGFyYXRlZCBwYXRoCi0gICAgICAvLyBhbmQgc2V0IGl0cyBgTkFNRV9L
RVlgCi0gICAgICBvYmoudG9TdHJpbmcgPSBtYWtlVG9TdHJpbmcocGF0aHMuam9pbignLicpKTsK
LSAgICAgIG9ialtOQU1FX0tFWV0gPSBwYXRocy5qb2luKCcuJyk7Ci0KLSAgICAvLyBTdXBwb3J0
IG5lc3RlZCBuYW1lc3BhY2VzCi0gICAgfSBlbHNlIGlmIChvYmogJiYgb2JqLmlzTmFtZXNwYWNl
KSB7Ci0gICAgICAvLyBTa2lwIGFsaWFzZWQgbmFtZXNwYWNlcwotICAgICAgaWYgKHNlZW5bZ3Vp
ZEZvcihvYmopXSkgeyBjb250aW51ZTsgfQotICAgICAgc2VlbltndWlkRm9yKG9iaildID0gdHJ1
ZTsKLQotICAgICAgLy8gUHJvY2VzcyB0aGUgY2hpbGQgbmFtZXNwYWNlCi0gICAgICBwcm9jZXNz
TmFtZXNwYWNlKHBhdGhzLCBvYmosIHNlZW4pOwotICAgIH0KLSAgfQotCi0gIHBhdGhzLmxlbmd0
aCA9IGlkeDsgLy8gY3V0IG91dCBsYXN0IGl0ZW0KLX0KLQotZnVuY3Rpb24gZmluZE5hbWVzcGFj
ZXMoKSB7Ci0gIHZhciBOYW1lc3BhY2UgPSBFbWJlci5OYW1lc3BhY2UsIGxvb2t1cCA9IEVtYmVy
Lmxvb2t1cCwgb2JqLCBpc05hbWVzcGFjZTsKLQotICBpZiAoTmFtZXNwYWNlLlBST0NFU1NFRCkg
eyByZXR1cm47IH0KLQotICBmb3IgKHZhciBwcm9wIGluIGxvb2t1cCkgewotICAgIC8vIFRoZXNl
IGRvbid0IHJhaXNlIGV4Y2VwdGlvbnMgYnV0IGNhbiBjYXVzZSB3YXJuaW5ncwotICAgIGlmIChw
cm9wID09PSAicGFyZW50IiB8fCBwcm9wID09PSAidG9wIiB8fCBwcm9wID09PSAiZnJhbWVFbGVt
ZW50IiB8fCBwcm9wID09PSAid2Via2l0U3RvcmFnZUluZm8iKSB7IGNvbnRpbnVlOyB9Ci0KLSAg
ICAvLyAgZ2V0KHdpbmRvdy5nbG9iYWxTdG9yYWdlLCAnaXNOYW1lc3BhY2UnKSB3b3VsZCB0cnkg
dG8gcmVhZCB0aGUgc3RvcmFnZSBmb3IgZG9tYWluIGlzTmFtZXNwYWNlIGFuZCBjYXVzZSBleGNl
cHRpb24gaW4gRmlyZWZveC4KLSAgICAvLyBnbG9iYWxTdG9yYWdlIGlzIGEgc3RvcmFnZSBvYnNv
bGV0ZWQgYnkgdGhlIFdoYXRXRyBzdG9yYWdlIHNwZWNpZmljYXRpb24uIFNlZSBodHRwczovL2Rl
dmVsb3Blci5tb3ppbGxhLm9yZy9lbi9ET00vU3RvcmFnZSNnbG9iYWxTdG9yYWdlCi0gICAgaWYg
KHByb3AgPT09ICJnbG9iYWxTdG9yYWdlIiAmJiBsb29rdXAuU3RvcmFnZUxpc3QgJiYgbG9va3Vw
Lmdsb2JhbFN0b3JhZ2UgaW5zdGFuY2VvZiBsb29rdXAuU3RvcmFnZUxpc3QpIHsgY29udGludWU7
IH0KLSAgICAvLyBVbmZvcnR1bmF0ZWx5LCBzb21lIHZlcnNpb25zIG9mIElFIGRvbid0IHN1cHBv
cnQgd2luZG93Lmhhc093blByb3BlcnR5Ci0gICAgaWYgKGxvb2t1cC5oYXNPd25Qcm9wZXJ0eSAm
JiAhbG9va3VwLmhhc093blByb3BlcnR5KHByb3ApKSB7IGNvbnRpbnVlOyB9Ci0KLSAgICAvLyBB
dCB0aW1lcyB3ZSBhcmUgbm90IGFsbG93ZWQgdG8gYWNjZXNzIGNlcnRhaW4gcHJvcGVydGllcyBm
b3Igc2VjdXJpdHkgcmVhc29ucy4KLSAgICAvLyBUaGVyZSBhcmUgYWxzbyB0aW1lcyB3aGVyZSBl
dmVuIGlmIHdlIGNhbiBhY2Nlc3MgdGhlbSwgd2UgYXJlIG5vdCBhbGxvd2VkIHRvIGFjY2VzcyB0
aGVpciBwcm9wZXJ0aWVzLgotICAgIHRyeSB7Ci0gICAgICBvYmogPSBFbWJlci5sb29rdXBbcHJv
cF07Ci0gICAgICBpc05hbWVzcGFjZSA9IG9iaiAmJiBvYmouaXNOYW1lc3BhY2U7Ci0gICAgfSBj
YXRjaCAoZSkgewotICAgICAgY29udGludWU7Ci0gICAgfQotCi0gICAgaWYgKGlzTmFtZXNwYWNl
KSB7Ci0gICAgICBFbWJlci5kZXByZWNhdGUoIk5hbWVzcGFjZXMgc2hvdWxkIG5vdCBiZWdpbiB3
aXRoIGxvd2VyY2FzZS4iLCAvXltBLVpdLy50ZXN0KHByb3ApKTsKLSAgICAgIG9ialtOQU1FX0tF
WV0gPSBwcm9wOwotICAgIH0KLSAgfQotfQotCi12YXIgTkFNRV9LRVkgPSBFbWJlci5OQU1FX0tF
WSA9IEVtYmVyLkdVSURfS0VZICsgJ19uYW1lJzsKLQotZnVuY3Rpb24gc3VwZXJDbGFzc1N0cmlu
ZyhtaXhpbikgewotICB2YXIgc3VwZXJjbGFzcyA9IG1peGluLnN1cGVyY2xhc3M7Ci0gIGlmIChz
dXBlcmNsYXNzKSB7Ci0gICAgaWYgKHN1cGVyY2xhc3NbTkFNRV9LRVldKSB7IHJldHVybiBzdXBl
cmNsYXNzW05BTUVfS0VZXTsgfQotICAgIGVsc2UgeyByZXR1cm4gc3VwZXJDbGFzc1N0cmluZyhz
dXBlcmNsYXNzKTsgfQotICB9IGVsc2UgewotICAgIHJldHVybjsKLSAgfQotfQotCi1mdW5jdGlv
biBjbGFzc1RvU3RyaW5nKCkgewotICBpZiAoIUVtYmVyLkJPT1RFRCAmJiAhdGhpc1tOQU1FX0tF
WV0pIHsKLSAgICBwcm9jZXNzQWxsTmFtZXNwYWNlcygpOwotICB9Ci0KLSAgdmFyIHJldDsKLQot
ICBpZiAodGhpc1tOQU1FX0tFWV0pIHsKLSAgICByZXQgPSB0aGlzW05BTUVfS0VZXTsKLSAgfSBl
bHNlIGlmICh0aGlzLl90b1N0cmluZykgewotICAgIHJldCA9IHRoaXMuX3RvU3RyaW5nOyAKLSAg
fSBlbHNlIHsKLSAgICB2YXIgc3RyID0gc3VwZXJDbGFzc1N0cmluZyh0aGlzKTsKLSAgICBpZiAo
c3RyKSB7Ci0gICAgICByZXQgPSAiKHN1YmNsYXNzIG9mICIgKyBzdHIgKyAiKSI7Ci0gICAgfSBl
bHNlIHsKLSAgICAgIHJldCA9ICIodW5rbm93biBtaXhpbikiOwotICAgIH0KLSAgICB0aGlzLnRv
U3RyaW5nID0gbWFrZVRvU3RyaW5nKHJldCk7Ci0gIH0KLQotICByZXR1cm4gcmV0OwotfQotCi1m
dW5jdGlvbiBwcm9jZXNzQWxsTmFtZXNwYWNlcygpIHsKLSAgdmFyIHVucHJvY2Vzc2VkTmFtZXNw
YWNlcyA9ICFOYW1lc3BhY2UuUFJPQ0VTU0VELAotICAgICAgdW5wcm9jZXNzZWRNaXhpbnMgPSBF
bWJlci5hbnlVbnByb2Nlc3NlZE1peGluczsKLQotICBpZiAodW5wcm9jZXNzZWROYW1lc3BhY2Vz
KSB7Ci0gICAgZmluZE5hbWVzcGFjZXMoKTsKLSAgICBOYW1lc3BhY2UuUFJPQ0VTU0VEID0gdHJ1
ZTsKLSAgfQotCi0gIGlmICh1bnByb2Nlc3NlZE5hbWVzcGFjZXMgfHwgdW5wcm9jZXNzZWRNaXhp
bnMpIHsKLSAgICB2YXIgbmFtZXNwYWNlcyA9IE5hbWVzcGFjZS5OQU1FU1BBQ0VTLCBuYW1lc3Bh
Y2U7Ci0gICAgZm9yICh2YXIgaT0wLCBsPW5hbWVzcGFjZXMubGVuZ3RoOyBpPGw7IGkrKykgewot
ICAgICAgbmFtZXNwYWNlID0gbmFtZXNwYWNlc1tpXTsKLSAgICAgIHByb2Nlc3NOYW1lc3BhY2Uo
W25hbWVzcGFjZS50b1N0cmluZygpXSwgbmFtZXNwYWNlLCB7fSk7Ci0gICAgfQotCi0gICAgRW1i
ZXIuYW55VW5wcm9jZXNzZWRNaXhpbnMgPSBmYWxzZTsKLSAgfQotfQotCi1mdW5jdGlvbiBtYWtl
VG9TdHJpbmcocmV0KSB7Ci0gIHJldHVybiBmdW5jdGlvbigpIHsgcmV0dXJuIHJldDsgfTsKLX0K
LQotRW1iZXIuTWl4aW4ucHJvdG90eXBlLnRvU3RyaW5nID0gY2xhc3NUb1N0cmluZzsKLQotfSko
KTsKLQotCi0KLShmdW5jdGlvbigpIHsKLS8qKgotQG1vZHVsZSBlbWJlcgotQHN1Ym1vZHVsZSBl
bWJlci1ydW50aW1lCi0qLwotCi12YXIgZ2V0ID0gRW1iZXIuZ2V0LAotICAgIHNldCA9IEVtYmVy
LnNldCwKLSAgICBmbXQgPSBFbWJlci5TdHJpbmcuZm10LAotICAgIGFkZEJlZm9yZU9ic2VydmVy
ID0gRW1iZXIuYWRkQmVmb3JlT2JzZXJ2ZXIsCi0gICAgYWRkT2JzZXJ2ZXIgPSBFbWJlci5hZGRP
YnNlcnZlciwKLSAgICByZW1vdmVCZWZvcmVPYnNlcnZlciA9IEVtYmVyLnJlbW92ZUJlZm9yZU9i
c2VydmVyLAotICAgIHJlbW92ZU9ic2VydmVyID0gRW1iZXIucmVtb3ZlT2JzZXJ2ZXIsCi0gICAg
cHJvcGVydHlXaWxsQ2hhbmdlID0gRW1iZXIucHJvcGVydHlXaWxsQ2hhbmdlLAotICAgIHByb3Bl
cnR5RGlkQ2hhbmdlID0gRW1iZXIucHJvcGVydHlEaWRDaGFuZ2UsCi0gICAgbWV0YSA9IEVtYmVy
Lm1ldGEsCi0gICAgZGVmaW5lUHJvcGVydHkgPSBFbWJlci5kZWZpbmVQcm9wZXJ0eTsKLQotZnVu
Y3Rpb24gY29udGVudFByb3BlcnR5V2lsbENoYW5nZShjb250ZW50LCBjb250ZW50S2V5KSB7Ci0g
IHZhciBrZXkgPSBjb250ZW50S2V5LnNsaWNlKDgpOyAvLyByZW1vdmUgImNvbnRlbnQuIgotICBp
ZiAoa2V5IGluIHRoaXMpIHsgcmV0dXJuOyB9ICAvLyBpZiBzaGFkb3dlZCBpbiBwcm94eQotICBw
cm9wZXJ0eVdpbGxDaGFuZ2UodGhpcywga2V5KTsKLX0KLQotZnVuY3Rpb24gY29udGVudFByb3Bl
cnR5RGlkQ2hhbmdlKGNvbnRlbnQsIGNvbnRlbnRLZXkpIHsKLSAgdmFyIGtleSA9IGNvbnRlbnRL
ZXkuc2xpY2UoOCk7IC8vIHJlbW92ZSAiY29udGVudC4iCi0gIGlmIChrZXkgaW4gdGhpcykgeyBy
ZXR1cm47IH0gLy8gaWYgc2hhZG93ZWQgaW4gcHJveHkKLSAgcHJvcGVydHlEaWRDaGFuZ2UodGhp
cywga2V5KTsKLX0KLQotLyoqCi0gIGBFbWJlci5PYmplY3RQcm94eWAgZm9yd2FyZHMgYWxsIHBy
b3BlcnRpZXMgbm90IGRlZmluZWQgYnkgdGhlIHByb3h5IGl0c2VsZgotICB0byBhIHByb3hpZWQg
YGNvbnRlbnRgIG9iamVjdC4KLQotICBgYGBqYXZhc2NyaXB0Ci0gIG9iamVjdCA9IEVtYmVyLk9i
amVjdC5jcmVhdGUoewotICAgIG5hbWU6ICdGb28nCi0gIH0pOwotCi0gIHByb3h5ID0gRW1iZXIu
T2JqZWN0UHJveHkuY3JlYXRlKHsKLSAgICBjb250ZW50OiBvYmplY3QKLSAgfSk7Ci0KLSAgLy8g
QWNjZXNzIGFuZCBjaGFuZ2UgZXhpc3RpbmcgcHJvcGVydGllcwotICBwcm94eS5nZXQoJ25hbWUn
KSAgICAgICAgICAvLyAnRm9vJwotICBwcm94eS5zZXQoJ25hbWUnLCAnQmFyJyk7Ci0gIG9iamVj
dC5nZXQoJ25hbWUnKSAgICAgICAgIC8vICdCYXInCi0KLSAgLy8gQ3JlYXRlIG5ldyAnZGVzY3Jp
cHRpb24nIHByb3BlcnR5IG9uIGBvYmplY3RgCi0gIHByb3h5LnNldCgnZGVzY3JpcHRpb24nLCAn
Rm9vIGlzIGEgd2hpemJvbyBiYXonKTsKLSAgb2JqZWN0LmdldCgnZGVzY3JpcHRpb24nKSAgLy8g
J0ZvbyBpcyBhIHdoaXpib28gYmF6JwotICBgYGAKLQotICBXaGlsZSBgY29udGVudGAgaXMgdW5z
ZXQsIHNldHRpbmcgYSBwcm9wZXJ0eSB0byBiZSBkZWxlZ2F0ZWQgd2lsbCB0aHJvdyBhbgotICBF
cnJvci4KLQotICBgYGBqYXZhc2NyaXB0Ci0gIHByb3h5ID0gRW1iZXIuT2JqZWN0UHJveHkuY3Jl
YXRlKHsKLSAgICBjb250ZW50OiBudWxsLAotICAgIGZsYWc6IG51bGwKLSAgfSk7Ci0gIHByb3h5
LnNldCgnZmxhZycsIHRydWUpOwotICBwcm94eS5nZXQoJ2ZsYWcnKTsgICAgICAgICAvLyB0cnVl
Ci0gIHByb3h5LmdldCgnZm9vJyk7ICAgICAgICAgIC8vIHVuZGVmaW5lZAotICBwcm94eS5zZXQo
J2ZvbycsICdkYXRhJyk7ICAvLyB0aHJvd3MgRXJyb3IKLSAgYGBgCi0KLSAgRGVsZWdhdGVkIHBy
b3BlcnRpZXMgY2FuIGJlIGJvdW5kIHRvIGFuZCB3aWxsIGNoYW5nZSB3aGVuIGNvbnRlbnQgaXMg
dXBkYXRlZC4KLQotICBDb21wdXRlZCBwcm9wZXJ0aWVzIG9uIHRoZSBwcm94eSBpdHNlbGYgY2Fu
IGRlcGVuZCBvbiBkZWxlZ2F0ZWQgcHJvcGVydGllcy4KLQotICBgYGBqYXZhc2NyaXB0Ci0gIFBy
b3h5V2l0aENvbXB1dGVkUHJvcGVydHkgPSBFbWJlci5PYmplY3RQcm94eS5leHRlbmQoewotICAg
IGZ1bGxOYW1lOiBmdW5jdGlvbiAoKSB7Ci0gICAgICB2YXIgZmlyc3ROYW1lID0gdGhpcy5nZXQo
J2ZpcnN0TmFtZScpLAotICAgICAgICAgIGxhc3ROYW1lID0gdGhpcy5nZXQoJ2xhc3ROYW1lJyk7
Ci0gICAgICBpZiAoZmlyc3ROYW1lICYmIGxhc3ROYW1lKSB7Ci0gICAgICAgIHJldHVybiBmaXJz
dE5hbWUgKyAnICcgKyBsYXN0TmFtZTsKLSAgICAgIH0KLSAgICAgIHJldHVybiBmaXJzdE5hbWUg
fHwgbGFzdE5hbWU7Ci0gICAgfS5wcm9wZXJ0eSgnZmlyc3ROYW1lJywgJ2xhc3ROYW1lJykKLSAg
fSk7Ci0KLSAgcHJveHkgPSBQcm94eVdpdGhDb21wdXRlZFByb3BlcnR5LmNyZWF0ZSgpOwotCi0g
IHByb3h5LmdldCgnZnVsbE5hbWUnKTsgIC8vIHVuZGVmaW5lZAotICBwcm94eS5zZXQoJ2NvbnRl
bnQnLCB7Ci0gICAgZmlyc3ROYW1lOiAnVG9tJywgbGFzdE5hbWU6ICdEYWxlJwotICB9KTsgLy8g
dHJpZ2dlcnMgcHJvcGVydHkgY2hhbmdlIGZvciBmdWxsTmFtZSBvbiBwcm94eQotCi0gIHByb3h5
LmdldCgnZnVsbE5hbWUnKTsgIC8vICdUb20gRGFsZScKLSAgYGBgCi0KLSAgQGNsYXNzIE9iamVj
dFByb3h5Ci0gIEBuYW1lc3BhY2UgRW1iZXIKLSAgQGV4dGVuZHMgRW1iZXIuT2JqZWN0Ci0qLwot
RW1iZXIuT2JqZWN0UHJveHkgPSBFbWJlci5PYmplY3QuZXh0ZW5kKHsKLSAgLyoqCi0gICAgVGhl
IG9iamVjdCB3aG9zZSBwcm9wZXJ0aWVzIHdpbGwgYmUgZm9yd2FyZGVkLgotCi0gICAgQHByb3Bl
cnR5IGNvbnRlbnQKLSAgICBAdHlwZSBFbWJlci5PYmplY3QKLSAgICBAZGVmYXVsdCBudWxsCi0g
ICovCi0gIGNvbnRlbnQ6IG51bGwsCi0gIF9jb250ZW50RGlkQ2hhbmdlOiBFbWJlci5vYnNlcnZl
cignY29udGVudCcsIGZ1bmN0aW9uKCkgewotICAgIEVtYmVyLmFzc2VydCgiQ2FuJ3Qgc2V0IE9i
amVjdFByb3h5J3MgY29udGVudCB0byBpdHNlbGYiLCB0aGlzLmdldCgnY29udGVudCcpICE9PSB0
aGlzKTsKLSAgfSksCi0KLSAgaXNUcnV0aHk6IEVtYmVyLmNvbXB1dGVkLmJvb2woJ2NvbnRlbnQn
KSwKLQotICBfZGVidWdDb250YWluZXJLZXk6IG51bGwsCi0KLSAgd2lsbFdhdGNoUHJvcGVydHk6
IGZ1bmN0aW9uIChrZXkpIHsKLSAgICB2YXIgY29udGVudEtleSA9ICdjb250ZW50LicgKyBrZXk7
Ci0gICAgYWRkQmVmb3JlT2JzZXJ2ZXIodGhpcywgY29udGVudEtleSwgbnVsbCwgY29udGVudFBy
b3BlcnR5V2lsbENoYW5nZSk7Ci0gICAgYWRkT2JzZXJ2ZXIodGhpcywgY29udGVudEtleSwgbnVs
bCwgY29udGVudFByb3BlcnR5RGlkQ2hhbmdlKTsKLSAgfSwKLQotICBkaWRVbndhdGNoUHJvcGVy
dHk6IGZ1bmN0aW9uIChrZXkpIHsKLSAgICB2YXIgY29udGVudEtleSA9ICdjb250ZW50LicgKyBr
ZXk7Ci0gICAgcmVtb3ZlQmVmb3JlT2JzZXJ2ZXIodGhpcywgY29udGVudEtleSwgbnVsbCwgY29u
dGVudFByb3BlcnR5V2lsbENoYW5nZSk7Ci0gICAgcmVtb3ZlT2JzZXJ2ZXIodGhpcywgY29udGVu
dEtleSwgbnVsbCwgY29udGVudFByb3BlcnR5RGlkQ2hhbmdlKTsKLSAgfSwKLQotICB1bmtub3du
UHJvcGVydHk6IGZ1bmN0aW9uIChrZXkpIHsKLSAgICB2YXIgY29udGVudCA9IGdldCh0aGlzLCAn
Y29udGVudCcpOwotICAgIGlmIChjb250ZW50KSB7Ci0gICAgICByZXR1cm4gZ2V0KGNvbnRlbnQs
IGtleSk7Ci0gICAgfQotICB9LAotCi0gIHNldFVua25vd25Qcm9wZXJ0eTogZnVuY3Rpb24gKGtl
eSwgdmFsdWUpIHsKLSAgICB2YXIgbSA9IG1ldGEodGhpcyk7Ci0gICAgaWYgKG0ucHJvdG8gPT09
IHRoaXMpIHsKLSAgICAgIC8vIGlmIG1hcmtlZCBhcyBwcm90b3R5cGUgdGhlbiBqdXN0IGRlZmlu
ZVByb3BlcnR5Ci0gICAgICAvLyByYXRoZXIgdGhhbiBkZWxlZ2F0ZQotICAgICAgZGVmaW5lUHJv
cGVydHkodGhpcywga2V5LCBudWxsLCB2YWx1ZSk7Ci0gICAgICByZXR1cm4gdmFsdWU7Ci0gICAg
fQotCi0gICAgdmFyIGNvbnRlbnQgPSBnZXQodGhpcywgJ2NvbnRlbnQnKTsKLSAgICBFbWJlci5h
c3NlcnQoZm10KCJDYW5ub3QgZGVsZWdhdGUgc2V0KCclQCcsICVAKSB0byB0aGUgJ2NvbnRlbnQn
IHByb3BlcnR5IG9mIG9iamVjdCBwcm94eSAlQDogaXRzICdjb250ZW50JyBpcyB1bmRlZmluZWQu
IiwgW2tleSwgdmFsdWUsIHRoaXNdKSwgY29udGVudCk7Ci0gICAgcmV0dXJuIHNldChjb250ZW50
LCBrZXksIHZhbHVlKTsKLSAgfQotCi19KTsKLQotfSkoKTsKLQotCi0KLShmdW5jdGlvbigpIHsK
LS8qKgotQG1vZHVsZSBlbWJlcgotQHN1Ym1vZHVsZSBlbWJlci1ydW50aW1lCi0qLwotCi0vLyAu
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Ci0vLyBIRUxQRVJTCi0vLwotCi12YXIgZ2V0ID0gRW1iZXIuZ2V0LCBzZXQgPSBFbWJlci5zZXQ7
Ci12YXIgYV9zbGljZSA9IEFycmF5LnByb3RvdHlwZS5zbGljZTsKLXZhciBhX2luZGV4T2YgPSBF
bWJlci5FbnVtZXJhYmxlVXRpbHMuaW5kZXhPZjsKLQotdmFyIGNvbnRleHRzID0gW107Ci0KLWZ1
bmN0aW9uIHBvcEN0eCgpIHsKLSAgcmV0dXJuIGNvbnRleHRzLmxlbmd0aD09PTAgPyB7fSA6IGNv
bnRleHRzLnBvcCgpOwotfQotCi1mdW5jdGlvbiBwdXNoQ3R4KGN0eCkgewotICBjb250ZXh0cy5w
dXNoKGN0eCk7Ci0gIHJldHVybiBudWxsOwotfQotCi1mdW5jdGlvbiBpdGVyKGtleSwgdmFsdWUp
IHsKLSAgdmFyIHZhbHVlUHJvdmlkZWQgPSBhcmd1bWVudHMubGVuZ3RoID09PSAyOwotCi0gIGZ1
bmN0aW9uIGkoaXRlbSkgewotICAgIHZhciBjdXIgPSBnZXQoaXRlbSwga2V5KTsKLSAgICByZXR1
cm4gdmFsdWVQcm92aWRlZCA/IHZhbHVlPT09Y3VyIDogISFjdXI7Ci0gIH0KLSAgcmV0dXJuIGkg
OwotfQotCi0vKioKLSAgVGhpcyBtaXhpbiBkZWZpbmVzIHRoZSBjb21tb24gaW50ZXJmYWNlIGlt
cGxlbWVudGVkIGJ5IGVudW1lcmFibGUgb2JqZWN0cwotICBpbiBFbWJlci4gTW9zdCBvZiB0aGVz
ZSBtZXRob2RzIGZvbGxvdyB0aGUgc3RhbmRhcmQgQXJyYXkgaXRlcmF0aW9uCi0gIEFQSSBkZWZp
bmVkIHVwIHRvIEphdmFTY3JpcHQgMS44IChleGNsdWRpbmcgbGFuZ3VhZ2Utc3BlY2lmaWMgZmVh
dHVyZXMgdGhhdAotICBjYW5ub3QgYmUgZW11bGF0ZWQgaW4gb2xkZXIgdmVyc2lvbnMgb2YgSmF2
YVNjcmlwdCkuCi0KLSAgVGhpcyBtaXhpbiBpcyBhcHBsaWVkIGF1dG9tYXRpY2FsbHkgdG8gdGhl
IEFycmF5IGNsYXNzIG9uIHBhZ2UgbG9hZCwgc28geW91Ci0gIGNhbiB1c2UgYW55IG9mIHRoZXNl
IG1ldGhvZHMgb24gc2ltcGxlIGFycmF5cy4gSWYgQXJyYXkgYWxyZWFkeSBpbXBsZW1lbnRzCi0g
IG9uZSBvZiB0aGVzZSBtZXRob2RzLCB0aGUgbWl4aW4gd2lsbCBub3Qgb3ZlcnJpZGUgdGhlbS4K
LQotICAjIyBXcml0aW5nIFlvdXIgT3duIEVudW1lcmFibGUKLQotICBUbyBtYWtlIHlvdXIgb3du
IGN1c3RvbSBjbGFzcyBlbnVtZXJhYmxlLCB5b3UgbmVlZCB0d28gaXRlbXM6Ci0KLSAgMS4gWW91
IG11c3QgaGF2ZSBhIGxlbmd0aCBwcm9wZXJ0eS4gVGhpcyBwcm9wZXJ0eSBzaG91bGQgY2hhbmdl
IHdoZW5ldmVyCi0gICAgIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4geW91ciBlbnVtZXJhYmxlIG9i
amVjdCBjaGFuZ2VzLiBJZiB5b3UgdXNpbmcgdGhpcwotICAgICB3aXRoIGFuIGBFbWJlci5PYmpl
Y3RgIHN1YmNsYXNzLCB5b3Ugc2hvdWxkIGJlIHN1cmUgdG8gY2hhbmdlIHRoZSBsZW5ndGgKLSAg
ICAgcHJvcGVydHkgdXNpbmcgYHNldCgpLmAKLQotICAyLiBZb3UgbXVzdCBpbXBsZW1lbnQgYG5l
eHRPYmplY3QoKS5gIFNlZSBkb2N1bWVudGF0aW9uLgotCi0gIE9uY2UgeW91IGhhdmUgdGhlc2Ug
dHdvIG1ldGhvZHMgaW1wbGVtZW50LCBhcHBseSB0aGUgYEVtYmVyLkVudW1lcmFibGVgIG1peGlu
Ci0gIHRvIHlvdXIgY2xhc3MgYW5kIHlvdSB3aWxsIGJlIGFibGUgdG8gZW51bWVyYXRlIHRoZSBj
b250ZW50cyBvZiB5b3VyIG9iamVjdAotICBsaWtlIGFueSBvdGhlciBjb2xsZWN0aW9uLgotCi0g
ICMjIFVzaW5nIEVtYmVyIEVudW1lcmF0aW9uIHdpdGggT3RoZXIgTGlicmFyaWVzCi0KLSAgTWFu
eSBvdGhlciBsaWJyYXJpZXMgcHJvdmlkZSBzb21lIGtpbmQgb2YgaXRlcmF0b3Igb3IgZW51bWVy
YXRpb24gbGlrZQotICBmYWNpbGl0eS4gVGhpcyBpcyBvZnRlbiB3aGVyZSB0aGUgbW9zdCBjb21t
b24gQVBJIGNvbmZsaWN0cyBvY2N1ci4KLSAgRW1iZXIncyBBUEkgaXMgZGVzaWduZWQgdG8gYmUg
YXMgZnJpZW5kbHkgYXMgcG9zc2libGUgd2l0aCBvdGhlcgotICBsaWJyYXJpZXMgYnkgaW1wbGVt
ZW50aW5nIG9ubHkgbWV0aG9kcyB0aGF0IG1vc3RseSBjb3JyZXNwb25kIHRvIHRoZQotICBKYXZh
U2NyaXB0IDEuOCBBUEkuCi0KLSAgQGNsYXNzIEVudW1lcmFibGUKLSAgQG5hbWVzcGFjZSBFbWJl
cgotICBAc2luY2UgRW1iZXIgMC45Ci0qLwotRW1iZXIuRW51bWVyYWJsZSA9IEVtYmVyLk1peGlu
LmNyZWF0ZSh7Ci0KLSAgLyoqCi0gICAgSW1wbGVtZW50IHRoaXMgbWV0aG9kIHRvIG1ha2UgeW91
ciBjbGFzcyBlbnVtZXJhYmxlLgotCi0gICAgVGhpcyBtZXRob2Qgd2lsbCBiZSBjYWxsIHJlcGVh
dGVkbHkgZHVyaW5nIGVudW1lcmF0aW9uLiBUaGUgaW5kZXggdmFsdWUKLSAgICB3aWxsIGFsd2F5
cyBiZWdpbiB3aXRoIDAgYW5kIGluY3JlbWVudCBtb25vdG9uaWNhbGx5LiBZb3UgZG9uJ3QgaGF2
ZSB0bwotICAgIHJlbHkgb24gdGhlIGluZGV4IHZhbHVlIHRvIGRldGVybWluZSB3aGF0IG9iamVj
dCB0byByZXR1cm4sIGJ1dCB5b3Ugc2hvdWxkCi0gICAgYWx3YXlzIGNoZWNrIHRoZSB2YWx1ZSBh
bmQgc3RhcnQgZnJvbSB0aGUgYmVnaW5uaW5nIHdoZW4geW91IHNlZSB0aGUKLSAgICByZXF1ZXN0
ZWQgaW5kZXggaXMgMC4KLQotICAgIFRoZSBgcHJldmlvdXNPYmplY3RgIGlzIHRoZSBvYmplY3Qg
dGhhdCB3YXMgcmV0dXJuZWQgZnJvbSB0aGUgbGFzdCBjYWxsCi0gICAgdG8gYG5leHRPYmplY3Rg
IGZvciB0aGUgY3VycmVudCBpdGVyYXRpb24uIFRoaXMgaXMgYSB1c2VmdWwgd2F5IHRvCi0gICAg
bWFuYWdlIGl0ZXJhdGlvbiBpZiB5b3UgYXJlIHRyYWNpbmcgYSBsaW5rZWQgbGlzdCwgZm9yIGV4
YW1wbGUuCi0KLSAgICBGaW5hbGx5IHRoZSBjb250ZXh0IHBhcmFtZXRlciB3aWxsIGFsd2F5cyBj
b250YWluIGEgaGFzaCB5b3UgY2FuIHVzZSBhcwotICAgIGEgInNjcmF0Y2hwYWQiIHRvIG1haW50
YWluIGFueSBvdGhlciBzdGF0ZSB5b3UgbmVlZCBpbiBvcmRlciB0byBpdGVyYXRlCi0gICAgcHJv
cGVybHkuIFRoZSBjb250ZXh0IG9iamVjdCBpcyByZXVzZWQgYW5kIGlzIG5vdCByZXNldCBiZXR3
ZWVuCi0gICAgaXRlcmF0aW9ucyBzbyBtYWtlIHN1cmUgeW91IHNldHVwIHRoZSBjb250ZXh0IHdp
dGggYSBmcmVzaCBzdGF0ZSB3aGVuZXZlcgotICAgIHRoZSBpbmRleCBwYXJhbWV0ZXIgaXMgMC4K
LQotICAgIEdlbmVyYWxseSBpdGVyYXRvcnMgd2lsbCBjb250aW51ZSB0byBjYWxsIGBuZXh0T2Jq
ZWN0YCB1bnRpbCB0aGUgaW5kZXgKLSAgICByZWFjaGVzIHRoZSB5b3VyIGN1cnJlbnQgbGVuZ3Ro
LTEuIElmIHlvdSBydW4gb3V0IG9mIGRhdGEgYmVmb3JlIHRoaXMKLSAgICB0aW1lIGZvciBzb21l
IHJlYXNvbiwgeW91IHNob3VsZCBzaW1wbHkgcmV0dXJuIHVuZGVmaW5lZC4KLQotICAgIFRoZSBk
ZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mIHRoaXMgbWV0aG9kIHNpbXBseSBsb29rcyB1cCB0aGUg
aW5kZXguCi0gICAgVGhpcyB3b3JrcyBncmVhdCBvbiBhbnkgQXJyYXktbGlrZSBvYmplY3RzLgot
Ci0gICAgQG1ldGhvZCBuZXh0T2JqZWN0Ci0gICAgQHBhcmFtIHtOdW1iZXJ9IGluZGV4IHRoZSBj
dXJyZW50IGluZGV4IG9mIHRoZSBpdGVyYXRpb24KLSAgICBAcGFyYW0ge09iamVjdH0gcHJldmlv
dXNPYmplY3QgdGhlIHZhbHVlIHJldHVybmVkIGJ5IHRoZSBsYXN0IGNhbGwgdG8KLSAgICAgIGBu
ZXh0T2JqZWN0YC4KLSAgICBAcGFyYW0ge09iamVjdH0gY29udGV4dCBhIGNvbnRleHQgb2JqZWN0
IHlvdSBjYW4gdXNlIHRvIG1haW50YWluIHN0YXRlLgotICAgIEByZXR1cm4ge09iamVjdH0gdGhl
IG5leHQgb2JqZWN0IGluIHRoZSBpdGVyYXRpb24gb3IgdW5kZWZpbmVkCi0gICovCi0gIG5leHRP
YmplY3Q6IEVtYmVyLnJlcXVpcmVkKEZ1bmN0aW9uKSwKLQotICAvKioKLSAgICBIZWxwZXIgbWV0
aG9kIHJldHVybnMgdGhlIGZpcnN0IG9iamVjdCBmcm9tIGEgY29sbGVjdGlvbi4gVGhpcyBpcyB1
c3VhbGx5Ci0gICAgdXNlZCBieSBiaW5kaW5ncyBhbmQgb3RoZXIgcGFydHMgb2YgdGhlIGZyYW1l
d29yayB0byBleHRyYWN0IGEgc2luZ2xlCi0gICAgb2JqZWN0IGlmIHRoZSBlbnVtZXJhYmxlIGNv
bnRhaW5zIG9ubHkgb25lIGl0ZW0uCi0KLSAgICBJZiB5b3Ugb3ZlcnJpZGUgdGhpcyBtZXRob2Qs
IHlvdSBzaG91bGQgaW1wbGVtZW50IGl0IHNvIHRoYXQgaXQgd2lsbAotICAgIGFsd2F5cyByZXR1
cm4gdGhlIHNhbWUgdmFsdWUgZWFjaCB0aW1lIGl0IGlzIGNhbGxlZC4gSWYgeW91ciBlbnVtZXJh
YmxlCi0gICAgY29udGFpbnMgb25seSBvbmUgb2JqZWN0LCB0aGlzIG1ldGhvZCBzaG91bGQgYWx3
YXlzIHJldHVybiB0aGF0IG9iamVjdC4KLSAgICBJZiB5b3VyIGVudW1lcmFibGUgaXMgZW1wdHks
IHRoaXMgbWV0aG9kIHNob3VsZCByZXR1cm4gYHVuZGVmaW5lZGAuCi0KLSAgICBgYGBqYXZhc2Ny
aXB0Ci0gICAgdmFyIGFyciA9IFsiYSIsICJiIiwgImMiXTsKLSAgICBhcnIuZ2V0KCdmaXJzdE9i
amVjdCcpOyAgLy8gImEiCi0KLSAgICB2YXIgYXJyID0gW107Ci0gICAgYXJyLmdldCgnZmlyc3RP
YmplY3QnKTsgIC8vIHVuZGVmaW5lZAotICAgIGBgYAotCi0gICAgQHByb3BlcnR5IGZpcnN0T2Jq
ZWN0Ci0gICAgQHJldHVybiB7T2JqZWN0fSB0aGUgb2JqZWN0IG9yIHVuZGVmaW5lZAotICAqLwot
ICBmaXJzdE9iamVjdDogRW1iZXIuY29tcHV0ZWQoZnVuY3Rpb24oKSB7Ci0gICAgaWYgKGdldCh0
aGlzLCAnbGVuZ3RoJyk9PT0wKSByZXR1cm4gdW5kZWZpbmVkIDsKLQotICAgIC8vIGhhbmRsZSBn
ZW5lcmljIGVudW1lcmFibGVzCi0gICAgdmFyIGNvbnRleHQgPSBwb3BDdHgoKSwgcmV0OwotICAg
IHJldCA9IHRoaXMubmV4dE9iamVjdCgwLCBudWxsLCBjb250ZXh0KTsKLSAgICBwdXNoQ3R4KGNv
bnRleHQpOwotICAgIHJldHVybiByZXQgOwotICB9KS5wcm9wZXJ0eSgnW10nKSwKLQotICAvKioK
LSAgICBIZWxwZXIgbWV0aG9kIHJldHVybnMgdGhlIGxhc3Qgb2JqZWN0IGZyb20gYSBjb2xsZWN0
aW9uLiBJZiB5b3VyIGVudW1lcmFibGUKLSAgICBjb250YWlucyBvbmx5IG9uZSBvYmplY3QsIHRo
aXMgbWV0aG9kIHNob3VsZCBhbHdheXMgcmV0dXJuIHRoYXQgb2JqZWN0LgotICAgIElmIHlvdXIg
ZW51bWVyYWJsZSBpcyBlbXB0eSwgdGhpcyBtZXRob2Qgc2hvdWxkIHJldHVybiBgdW5kZWZpbmVk
YC4KLQotICAgIGBgYGphdmFzY3JpcHQKLSAgICB2YXIgYXJyID0gWyJhIiwgImIiLCAiYyJdOwot
ICAgIGFyci5nZXQoJ2xhc3RPYmplY3QnKTsgIC8vICJjIgotCi0gICAgdmFyIGFyciA9IFtdOwot
ICAgIGFyci5nZXQoJ2xhc3RPYmplY3QnKTsgIC8vIHVuZGVmaW5lZAotICAgIGBgYAotCi0gICAg
QHByb3BlcnR5IGxhc3RPYmplY3QKLSAgICBAcmV0dXJuIHtPYmplY3R9IHRoZSBsYXN0IG9iamVj
dCBvciB1bmRlZmluZWQKLSAgKi8KLSAgbGFzdE9iamVjdDogRW1iZXIuY29tcHV0ZWQoZnVuY3Rp
b24oKSB7Ci0gICAgdmFyIGxlbiA9IGdldCh0aGlzLCAnbGVuZ3RoJyk7Ci0gICAgaWYgKGxlbj09
PTApIHJldHVybiB1bmRlZmluZWQgOwotICAgIHZhciBjb250ZXh0ID0gcG9wQ3R4KCksIGlkeD0w
LCBjdXIsIGxhc3QgPSBudWxsOwotICAgIGRvIHsKLSAgICAgIGxhc3QgPSBjdXI7Ci0gICAgICBj
dXIgPSB0aGlzLm5leHRPYmplY3QoaWR4KyssIGxhc3QsIGNvbnRleHQpOwotICAgIH0gd2hpbGUg
KGN1ciAhPT0gdW5kZWZpbmVkKTsKLSAgICBwdXNoQ3R4KGNvbnRleHQpOwotICAgIHJldHVybiBs
YXN0OwotICB9KS5wcm9wZXJ0eSgnW10nKSwKLQotICAvKioKLSAgICBSZXR1cm5zIGB0cnVlYCBp
ZiB0aGUgcGFzc2VkIG9iamVjdCBjYW4gYmUgZm91bmQgaW4gdGhlIHJlY2VpdmVyLiBUaGUKLSAg
ICBkZWZhdWx0IHZlcnNpb24gd2lsbCBpdGVyYXRlIHRocm91Z2ggdGhlIGVudW1lcmFibGUgdW50
aWwgdGhlIG9iamVjdAotICAgIGlzIGZvdW5kLiBZb3UgbWF5IHdhbnQgdG8gb3ZlcnJpZGUgdGhp
cyB3aXRoIGEgbW9yZSBlZmZpY2llbnQgdmVyc2lvbi4KLQotICAgIGBgYGphdmFzY3JpcHQKLSAg
ICB2YXIgYXJyID0gWyJhIiwgImIiLCAiYyJdOwotICAgIGFyci5jb250YWlucygiYSIpOyAvLyB0
cnVlCi0gICAgYXJyLmNvbnRhaW5zKCJ6Iik7IC8vIGZhbHNlCi0gICAgYGBgCi0KLSAgICBAbWV0
aG9kIGNvbnRhaW5zCi0gICAgQHBhcmFtIHtPYmplY3R9IG9iaiBUaGUgb2JqZWN0IHRvIHNlYXJj
aCBmb3IuCi0gICAgQHJldHVybiB7Qm9vbGVhbn0gYHRydWVgIGlmIG9iamVjdCBpcyBmb3VuZCBp
biBlbnVtZXJhYmxlLgotICAqLwotICBjb250YWluczogZnVuY3Rpb24ob2JqKSB7Ci0gICAgcmV0
dXJuIHRoaXMuZmluZChmdW5jdGlvbihpdGVtKSB7IHJldHVybiBpdGVtPT09b2JqOyB9KSAhPT0g
dW5kZWZpbmVkOwotICB9LAotCi0gIC8qKgotICAgIEl0ZXJhdGVzIHRocm91Z2ggdGhlIGVudW1l
cmFibGUsIGNhbGxpbmcgdGhlIHBhc3NlZCBmdW5jdGlvbiBvbiBlYWNoCi0gICAgaXRlbS4gVGhp
cyBtZXRob2QgY29ycmVzcG9uZHMgdG8gdGhlIGBmb3JFYWNoKClgIG1ldGhvZCBkZWZpbmVkIGlu
Ci0gICAgSmF2YVNjcmlwdCAxLjYuCi0KLSAgICBUaGUgY2FsbGJhY2sgbWV0aG9kIHlvdSBwcm92
aWRlIHNob3VsZCBoYXZlIHRoZSBmb2xsb3dpbmcgc2lnbmF0dXJlIChhbGwKLSAgICBwYXJhbWV0
ZXJzIGFyZSBvcHRpb25hbCk6Ci0KLSAgICBgYGBqYXZhc2NyaXB0Ci0gICAgZnVuY3Rpb24oaXRl
bSwgaW5kZXgsIGVudW1lcmFibGUpOwotICAgIGBgYAotCi0gICAgLSBgaXRlbWAgaXMgdGhlIGN1
cnJlbnQgaXRlbSBpbiB0aGUgaXRlcmF0aW9uLgotICAgIC0gYGluZGV4YCBpcyB0aGUgY3VycmVu
dCBpbmRleCBpbiB0aGUgaXRlcmF0aW9uLgotICAgIC0gYGVudW1lcmFibGVgIGlzIHRoZSBlbnVt
ZXJhYmxlIG9iamVjdCBpdHNlbGYuCi0KLSAgICBOb3RlIHRoYXQgaW4gYWRkaXRpb24gdG8gYSBj
YWxsYmFjaywgeW91IGNhbiBhbHNvIHBhc3MgYW4gb3B0aW9uYWwgdGFyZ2V0Ci0gICAgb2JqZWN0
IHRoYXQgd2lsbCBiZSBzZXQgYXMgYHRoaXNgIG9uIHRoZSBjb250ZXh0LiBUaGlzIGlzIGEgZ29v
ZCB3YXkKLSAgICB0byBnaXZlIHlvdXIgaXRlcmF0b3IgZnVuY3Rpb24gYWNjZXNzIHRvIHRoZSBj
dXJyZW50IG9iamVjdC4KLQotICAgIEBtZXRob2QgZm9yRWFjaAotICAgIEBwYXJhbSB7RnVuY3Rp
b259IGNhbGxiYWNrIFRoZSBjYWxsYmFjayB0byBleGVjdXRlCi0gICAgQHBhcmFtIHtPYmplY3R9
IFt0YXJnZXRdIFRoZSB0YXJnZXQgb2JqZWN0IHRvIHVzZQotICAgIEByZXR1cm4ge09iamVjdH0g
cmVjZWl2ZXIKLSAgKi8KLSAgZm9yRWFjaDogZnVuY3Rpb24oY2FsbGJhY2ssIHRhcmdldCkgewot
ICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICJmdW5jdGlvbiIpIHRocm93IG5ldyBUeXBlRXJy
b3IoKSA7Ci0gICAgdmFyIGxlbiA9IGdldCh0aGlzLCAnbGVuZ3RoJyksIGxhc3QgPSBudWxsLCBj
b250ZXh0ID0gcG9wQ3R4KCk7Ci0KLSAgICBpZiAodGFyZ2V0ID09PSB1bmRlZmluZWQpIHRhcmdl
dCA9IG51bGw7Ci0KLSAgICBmb3IodmFyIGlkeD0wO2lkeDxsZW47aWR4KyspIHsKLSAgICAgIHZh
ciBuZXh0ID0gdGhpcy5uZXh0T2JqZWN0KGlkeCwgbGFzdCwgY29udGV4dCkgOwotICAgICAgY2Fs
bGJhY2suY2FsbCh0YXJnZXQsIG5leHQsIGlkeCwgdGhpcyk7Ci0gICAgICBsYXN0ID0gbmV4dCA7
Ci0gICAgfQotICAgIGxhc3QgPSBudWxsIDsKLSAgICBjb250ZXh0ID0gcHVzaEN0eChjb250ZXh0
KTsKLSAgICByZXR1cm4gdGhpcyA7Ci0gIH0sCi0KLSAgLyoqCi0gICAgQWxpYXMgZm9yIGBtYXBC
eWAKLQotICAgIEBtZXRob2QgZ2V0RWFjaAotICAgIEBwYXJhbSB7U3RyaW5nfSBrZXkgbmFtZSBv
ZiB0aGUgcHJvcGVydHkKLSAgICBAcmV0dXJuIHtBcnJheX0gVGhlIG1hcHBlZCBhcnJheS4KLSAg
Ki8KLSAgZ2V0RWFjaDogZnVuY3Rpb24oa2V5KSB7Ci0gICAgcmV0dXJuIHRoaXMubWFwQnkoa2V5
KTsKLSAgfSwKLQotICAvKioKLSAgICBTZXRzIHRoZSB2YWx1ZSBvbiB0aGUgbmFtZWQgcHJvcGVy
dHkgZm9yIGVhY2ggbWVtYmVyLiBUaGlzIGlzIG1vcmUKLSAgICBlZmZpY2llbnQgdGhhbiB1c2lu
ZyBvdGhlciBtZXRob2RzIGRlZmluZWQgb24gdGhpcyBoZWxwZXIuIElmIHRoZSBvYmplY3QKLSAg
ICBpbXBsZW1lbnRzIEVtYmVyLk9ic2VydmFibGUsIHRoZSB2YWx1ZSB3aWxsIGJlIGNoYW5nZWQg
dG8gYHNldCgpLGAgb3RoZXJ3aXNlCi0gICAgaXQgd2lsbCBiZSBzZXQgZGlyZWN0bHkuIGBudWxs
YCBvYmplY3RzIGFyZSBza2lwcGVkLgotCi0gICAgQG1ldGhvZCBzZXRFYWNoCi0gICAgQHBhcmFt
IHtTdHJpbmd9IGtleSBUaGUga2V5IHRvIHNldAotICAgIEBwYXJhbSB7T2JqZWN0fSB2YWx1ZSBU
aGUgb2JqZWN0IHRvIHNldAotICAgIEByZXR1cm4ge09iamVjdH0gcmVjZWl2ZXIKLSAgKi8KLSAg
c2V0RWFjaDogZnVuY3Rpb24oa2V5LCB2YWx1ZSkgewotICAgIHJldHVybiB0aGlzLmZvckVhY2go
ZnVuY3Rpb24oaXRlbSkgewotICAgICAgc2V0KGl0ZW0sIGtleSwgdmFsdWUpOwotICAgIH0pOwot
ICB9LAotCi0gIC8qKgotICAgIE1hcHMgYWxsIG9mIHRoZSBpdGVtcyBpbiB0aGUgZW51bWVyYXRp
b24gdG8gYW5vdGhlciB2YWx1ZSwgcmV0dXJuaW5nCi0gICAgYSBuZXcgYXJyYXkuIFRoaXMgbWV0
aG9kIGNvcnJlc3BvbmRzIHRvIGBtYXAoKWAgZGVmaW5lZCBpbiBKYXZhU2NyaXB0IDEuNi4KLQot
ICAgIFRoZSBjYWxsYmFjayBtZXRob2QgeW91IHByb3ZpZGUgc2hvdWxkIGhhdmUgdGhlIGZvbGxv
d2luZyBzaWduYXR1cmUgKGFsbAotICAgIHBhcmFtZXRlcnMgYXJlIG9wdGlvbmFsKToKLQotICAg
IGBgYGphdmFzY3JpcHQKLSAgICBmdW5jdGlvbihpdGVtLCBpbmRleCwgZW51bWVyYWJsZSk7Ci0g
ICAgYGBgCi0KLSAgICAtIGBpdGVtYCBpcyB0aGUgY3VycmVudCBpdGVtIGluIHRoZSBpdGVyYXRp
b24uCi0gICAgLSBgaW5kZXhgIGlzIHRoZSBjdXJyZW50IGluZGV4IGluIHRoZSBpdGVyYXRpb24u
Ci0gICAgLSBgZW51bWVyYWJsZWAgaXMgdGhlIGVudW1lcmFibGUgb2JqZWN0IGl0c2VsZi4KLQot
ICAgIEl0IHNob3VsZCByZXR1cm4gdGhlIG1hcHBlZCB2YWx1ZS4KLQotICAgIE5vdGUgdGhhdCBp
biBhZGRpdGlvbiB0byBhIGNhbGxiYWNrLCB5b3UgY2FuIGFsc28gcGFzcyBhbiBvcHRpb25hbCB0
YXJnZXQKLSAgICBvYmplY3QgdGhhdCB3aWxsIGJlIHNldCBhcyBgdGhpc2Agb24gdGhlIGNvbnRl
eHQuIFRoaXMgaXMgYSBnb29kIHdheQotICAgIHRvIGdpdmUgeW91ciBpdGVyYXRvciBmdW5jdGlv
biBhY2Nlc3MgdG8gdGhlIGN1cnJlbnQgb2JqZWN0LgotCi0gICAgQG1ldGhvZCBtYXAKLSAgICBA
cGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgdG8gZXhlY3V0ZQotICAgIEBw
YXJhbSB7T2JqZWN0fSBbdGFyZ2V0XSBUaGUgdGFyZ2V0IG9iamVjdCB0byB1c2UKLSAgICBAcmV0
dXJuIHtBcnJheX0gVGhlIG1hcHBlZCBhcnJheS4KLSAgKi8KLSAgbWFwOiBmdW5jdGlvbihjYWxs
YmFjaywgdGFyZ2V0KSB7Ci0gICAgdmFyIHJldCA9IEVtYmVyLkEoKTsKLSAgICB0aGlzLmZvckVh
Y2goZnVuY3Rpb24oeCwgaWR4LCBpKSB7Ci0gICAgICByZXRbaWR4XSA9IGNhbGxiYWNrLmNhbGwo
dGFyZ2V0LCB4LCBpZHgsaSk7Ci0gICAgfSk7Ci0gICAgcmV0dXJuIHJldCA7Ci0gIH0sCi0KLSAg
LyoqCi0gICAgU2ltaWxhciB0byBtYXAsIHRoaXMgc3BlY2lhbGl6ZWQgZnVuY3Rpb24gcmV0dXJu
cyB0aGUgdmFsdWUgb2YgdGhlIG5hbWVkCi0gICAgcHJvcGVydHkgb24gYWxsIGl0ZW1zIGluIHRo
ZSBlbnVtZXJhdGlvbi4KLQotICAgIEBtZXRob2QgbWFwQnkKLSAgICBAcGFyYW0ge1N0cmluZ30g
a2V5IG5hbWUgb2YgdGhlIHByb3BlcnR5Ci0gICAgQHJldHVybiB7QXJyYXl9IFRoZSBtYXBwZWQg
YXJyYXkuCi0gICovCi0gIG1hcEJ5OiBmdW5jdGlvbihrZXkpIHsKLSAgICByZXR1cm4gdGhpcy5t
YXAoZnVuY3Rpb24obmV4dCkgewotICAgICAgcmV0dXJuIGdldChuZXh0LCBrZXkpOwotICAgIH0p
OwotICB9LAotCi0gIC8qKgotICAgIFNpbWlsYXIgdG8gbWFwLCB0aGlzIHNwZWNpYWxpemVkIGZ1
bmN0aW9uIHJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBuYW1lZAotICAgIHByb3BlcnR5IG9uIGFs
bCBpdGVtcyBpbiB0aGUgZW51bWVyYXRpb24uCi0KLSAgICBAbWV0aG9kIG1hcFByb3BlcnR5Ci0g
ICAgQHBhcmFtIHtTdHJpbmd9IGtleSBuYW1lIG9mIHRoZSBwcm9wZXJ0eQotICAgIEByZXR1cm4g
e0FycmF5fSBUaGUgbWFwcGVkIGFycmF5LgotICAgIEBkZXByZWNhdGVkIFVzZSBgbWFwQnlgIGlu
c3RlYWQKLSAgKi8KLQotICBtYXBQcm9wZXJ0eTogRW1iZXIuYWxpYXNNZXRob2QoJ21hcEJ5Jyks
Ci0KLSAgLyoqCi0gICAgUmV0dXJucyBhbiBhcnJheSB3aXRoIGFsbCBvZiB0aGUgaXRlbXMgaW4g
dGhlIGVudW1lcmF0aW9uIHRoYXQgdGhlIHBhc3NlZAotICAgIGZ1bmN0aW9uIHJldHVybnMgdHJ1
ZSBmb3IuIFRoaXMgbWV0aG9kIGNvcnJlc3BvbmRzIHRvIGBmaWx0ZXIoKWAgZGVmaW5lZCBpbgot
ICAgIEphdmFTY3JpcHQgMS42LgotCi0gICAgVGhlIGNhbGxiYWNrIG1ldGhvZCB5b3UgcHJvdmlk
ZSBzaG91bGQgaGF2ZSB0aGUgZm9sbG93aW5nIHNpZ25hdHVyZSAoYWxsCi0gICAgcGFyYW1ldGVy
cyBhcmUgb3B0aW9uYWwpOgotCi0gICAgYGBgamF2YXNjcmlwdAotICAgIGZ1bmN0aW9uKGl0ZW0s
IGluZGV4LCBlbnVtZXJhYmxlKTsKLSAgICBgYGAKLQotICAgIC0gYGl0ZW1gIGlzIHRoZSBjdXJy
ZW50IGl0ZW0gaW4gdGhlIGl0ZXJhdGlvbi4KLSAgICAtIGBpbmRleGAgaXMgdGhlIGN1cnJlbnQg
aW5kZXggaW4gdGhlIGl0ZXJhdGlvbi4KLSAgICAtIGBlbnVtZXJhYmxlYCBpcyB0aGUgZW51bWVy
YWJsZSBvYmplY3QgaXRzZWxmLgotCi0gICAgSXQgc2hvdWxkIHJldHVybiB0aGUgYHRydWVgIHRv
IGluY2x1ZGUgdGhlIGl0ZW0gaW4gdGhlIHJlc3VsdHMsIGBmYWxzZWAKLSAgICBvdGhlcndpc2Uu
Ci0KLSAgICBOb3RlIHRoYXQgaW4gYWRkaXRpb24gdG8gYSBjYWxsYmFjaywgeW91IGNhbiBhbHNv
IHBhc3MgYW4gb3B0aW9uYWwgdGFyZ2V0Ci0gICAgb2JqZWN0IHRoYXQgd2lsbCBiZSBzZXQgYXMg
YHRoaXNgIG9uIHRoZSBjb250ZXh0LiBUaGlzIGlzIGEgZ29vZCB3YXkKLSAgICB0byBnaXZlIHlv
dXIgaXRlcmF0b3IgZnVuY3Rpb24gYWNjZXNzIHRvIHRoZSBjdXJyZW50IG9iamVjdC4KLQotICAg
IEBtZXRob2QgZmlsdGVyCi0gICAgQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGNhbGxi
YWNrIHRvIGV4ZWN1dGUKLSAgICBAcGFyYW0ge09iamVjdH0gW3RhcmdldF0gVGhlIHRhcmdldCBv
YmplY3QgdG8gdXNlCi0gICAgQHJldHVybiB7QXJyYXl9IEEgZmlsdGVyZWQgYXJyYXkuCi0gICov
Ci0gIGZpbHRlcjogZnVuY3Rpb24oY2FsbGJhY2ssIHRhcmdldCkgewotICAgIHZhciByZXQgPSBF
bWJlci5BKCk7Ci0gICAgdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKHgsIGlkeCwgaSkgewotICAgICAg
aWYgKGNhbGxiYWNrLmNhbGwodGFyZ2V0LCB4LCBpZHgsIGkpKSByZXQucHVzaCh4KTsKLSAgICB9
KTsKLSAgICByZXR1cm4gcmV0IDsKLSAgfSwKLQotICAvKioKLSAgICBSZXR1cm5zIGFuIGFycmF5
IHdpdGggYWxsIG9mIHRoZSBpdGVtcyBpbiB0aGUgZW51bWVyYXRpb24gd2hlcmUgdGhlIHBhc3Nl
ZAotICAgIGZ1bmN0aW9uIHJldHVybnMgZmFsc2UgZm9yLiBUaGlzIG1ldGhvZCBpcyB0aGUgaW52
ZXJzZSBvZiBmaWx0ZXIoKS4KLQotICAgIFRoZSBjYWxsYmFjayBtZXRob2QgeW91IHByb3ZpZGUg
c2hvdWxkIGhhdmUgdGhlIGZvbGxvd2luZyBzaWduYXR1cmUgKGFsbAotICAgIHBhcmFtZXRlcnMg
YXJlIG9wdGlvbmFsKToKLQotICAgIGBgYGphdmFzY3JpcHQKLSAgICBmdW5jdGlvbihpdGVtLCBp
bmRleCwgZW51bWVyYWJsZSk7Ci0gICAgYGBgCi0KLSAgICAtICppdGVtKiBpcyB0aGUgY3VycmVu
dCBpdGVtIGluIHRoZSBpdGVyYXRpb24uCi0gICAgLSAqaW5kZXgqIGlzIHRoZSBjdXJyZW50IGlu
ZGV4IGluIHRoZSBpdGVyYXRpb24KLSAgICAtICplbnVtZXJhYmxlKiBpcyB0aGUgZW51bWVyYWJs
ZSBvYmplY3QgaXRzZWxmLgotCi0gICAgSXQgc2hvdWxkIHJldHVybiB0aGUgYSBmYWxzZXkgdmFs
dWUgdG8gaW5jbHVkZSB0aGUgaXRlbSBpbiB0aGUgcmVzdWx0cy4KLQotICAgIE5vdGUgdGhhdCBp
biBhZGRpdGlvbiB0byBhIGNhbGxiYWNrLCB5b3UgY2FuIGFsc28gcGFzcyBhbiBvcHRpb25hbCB0
YXJnZXQKLSAgICBvYmplY3QgdGhhdCB3aWxsIGJlIHNldCBhcyAidGhpcyIgb24gdGhlIGNvbnRl
eHQuIFRoaXMgaXMgYSBnb29kIHdheQotICAgIHRvIGdpdmUgeW91ciBpdGVyYXRvciBmdW5jdGlv
biBhY2Nlc3MgdG8gdGhlIGN1cnJlbnQgb2JqZWN0LgotCi0gICAgQG1ldGhvZCByZWplY3QKLSAg
ICBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgdG8gZXhlY3V0ZQotICAg
IEBwYXJhbSB7T2JqZWN0fSBbdGFyZ2V0XSBUaGUgdGFyZ2V0IG9iamVjdCB0byB1c2UKLSAgICBA
cmV0dXJuIHtBcnJheX0gQSByZWplY3RlZCBhcnJheS4KLSAgICovCi0gIHJlamVjdDogZnVuY3Rp
b24oY2FsbGJhY2ssIHRhcmdldCkgewotICAgIHJldHVybiB0aGlzLmZpbHRlcihmdW5jdGlvbigp
IHsKLSAgICAgIHJldHVybiAhKGNhbGxiYWNrLmFwcGx5KHRhcmdldCwgYXJndW1lbnRzKSk7Ci0g
ICAgfSk7Ci0gIH0sCi0KLSAgLyoqCi0gICAgUmV0dXJucyBhbiBhcnJheSB3aXRoIGp1c3QgdGhl
IGl0ZW1zIHdpdGggdGhlIG1hdGNoZWQgcHJvcGVydHkuIFlvdQotICAgIGNhbiBwYXNzIGFuIG9w
dGlvbmFsIHNlY29uZCBhcmd1bWVudCB3aXRoIHRoZSB0YXJnZXQgdmFsdWUuIE90aGVyd2lzZQot
ICAgIHRoaXMgd2lsbCBtYXRjaCBhbnkgcHJvcGVydHkgdGhhdCBldmFsdWF0ZXMgdG8gYHRydWVg
LgotCi0gICAgQG1ldGhvZCBmaWx0ZXJCeQotICAgIEBwYXJhbSB7U3RyaW5nfSBrZXkgdGhlIHBy
b3BlcnR5IHRvIHRlc3QKLSAgICBAcGFyYW0ge1N0cmluZ30gW3ZhbHVlXSBvcHRpb25hbCB2YWx1
ZSB0byB0ZXN0IGFnYWluc3QuCi0gICAgQHJldHVybiB7QXJyYXl9IGZpbHRlcmVkIGFycmF5Ci0g
ICovCi0gIGZpbHRlckJ5OiBmdW5jdGlvbihrZXksIHZhbHVlKSB7Ci0gICAgcmV0dXJuIHRoaXMu
ZmlsdGVyKGl0ZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSk7Ci0gIH0sCi0KLSAgLyoqCi0gICAg
UmV0dXJucyBhbiBhcnJheSB3aXRoIGp1c3QgdGhlIGl0ZW1zIHdpdGggdGhlIG1hdGNoZWQgcHJv
cGVydHkuIFlvdQotICAgIGNhbiBwYXNzIGFuIG9wdGlvbmFsIHNlY29uZCBhcmd1bWVudCB3aXRo
IHRoZSB0YXJnZXQgdmFsdWUuIE90aGVyd2lzZQotICAgIHRoaXMgd2lsbCBtYXRjaCBhbnkgcHJv
cGVydHkgdGhhdCBldmFsdWF0ZXMgdG8gYHRydWVgLgotCi0gICAgQG1ldGhvZCBmaWx0ZXJQcm9w
ZXJ0eQotICAgIEBwYXJhbSB7U3RyaW5nfSBrZXkgdGhlIHByb3BlcnR5IHRvIHRlc3QKLSAgICBA
cGFyYW0ge1N0cmluZ30gW3ZhbHVlXSBvcHRpb25hbCB2YWx1ZSB0byB0ZXN0IGFnYWluc3QuCi0g
ICAgQHJldHVybiB7QXJyYXl9IGZpbHRlcmVkIGFycmF5Ci0gICAgQGRlcHJlY2F0ZWQgVXNlIGBm
aWx0ZXJCeWAgaW5zdGVhZAotICAqLwotICBmaWx0ZXJQcm9wZXJ0eTogRW1iZXIuYWxpYXNNZXRo
b2QoJ2ZpbHRlckJ5JyksCi0KLSAgLyoqCi0gICAgUmV0dXJucyBhbiBhcnJheSB3aXRoIHRoZSBp
dGVtcyB0aGF0IGRvIG5vdCBoYXZlIHRydXRoeSB2YWx1ZXMgZm9yCi0gICAga2V5LiAgWW91IGNh
biBwYXNzIGFuIG9wdGlvbmFsIHNlY29uZCBhcmd1bWVudCB3aXRoIHRoZSB0YXJnZXQgdmFsdWUu
ICBPdGhlcndpc2UKLSAgICB0aGlzIHdpbGwgbWF0Y2ggYW55IHByb3BlcnR5IHRoYXQgZXZhbHVh
dGVzIHRvIGZhbHNlLgotCi0gICAgQG1ldGhvZCByZWplY3RCeQotICAgIEBwYXJhbSB7U3RyaW5n
fSBrZXkgdGhlIHByb3BlcnR5IHRvIHRlc3QKLSAgICBAcGFyYW0ge1N0cmluZ30gW3ZhbHVlXSBv
cHRpb25hbCB2YWx1ZSB0byB0ZXN0IGFnYWluc3QuCi0gICAgQHJldHVybiB7QXJyYXl9IHJlamVj
dGVkIGFycmF5Ci0gICovCi0gIHJlamVjdEJ5OiBmdW5jdGlvbihrZXksIHZhbHVlKSB7Ci0gICAg
dmFyIGV4YWN0VmFsdWUgPSBmdW5jdGlvbihpdGVtKSB7IHJldHVybiBnZXQoaXRlbSwga2V5KSA9
PT0gdmFsdWU7IH0sCi0gICAgICAgIGhhc1ZhbHVlID0gZnVuY3Rpb24oaXRlbSkgeyByZXR1cm4g
ISFnZXQoaXRlbSwga2V5KTsgfSwKLSAgICAgICAgdXNlID0gKGFyZ3VtZW50cy5sZW5ndGggPT09
IDIgPyBleGFjdFZhbHVlIDogaGFzVmFsdWUpOwotCi0gICAgcmV0dXJuIHRoaXMucmVqZWN0KHVz
ZSk7Ci0gIH0sCi0KLSAgLyoqCi0gICAgUmV0dXJucyBhbiBhcnJheSB3aXRoIHRoZSBpdGVtcyB0
aGF0IGRvIG5vdCBoYXZlIHRydXRoeSB2YWx1ZXMgZm9yCi0gICAga2V5LiAgWW91IGNhbiBwYXNz
IGFuIG9wdGlvbmFsIHNlY29uZCBhcmd1bWVudCB3aXRoIHRoZSB0YXJnZXQgdmFsdWUuICBPdGhl
cndpc2UKLSAgICB0aGlzIHdpbGwgbWF0Y2ggYW55IHByb3BlcnR5IHRoYXQgZXZhbHVhdGVzIHRv
IGZhbHNlLgotCi0gICAgQG1ldGhvZCByZWplY3RQcm9wZXJ0eQotICAgIEBwYXJhbSB7U3RyaW5n
fSBrZXkgdGhlIHByb3BlcnR5IHRvIHRlc3QKLSAgICBAcGFyYW0ge1N0cmluZ30gW3ZhbHVlXSBv
cHRpb25hbCB2YWx1ZSB0byB0ZXN0IGFnYWluc3QuCi0gICAgQHJldHVybiB7QXJyYXl9IHJlamVj
dGVkIGFycmF5Ci0gICAgQGRlcHJlY2F0ZWQgVXNlIGByZWplY3RCeWAgaW5zdGVhZAotICAqLwot
ICByZWplY3RQcm9wZXJ0eTogRW1iZXIuYWxpYXNNZXRob2QoJ3JlamVjdEJ5JyksCi0KLSAgLyoq
Ci0gICAgUmV0dXJucyB0aGUgZmlyc3QgaXRlbSBpbiB0aGUgYXJyYXkgZm9yIHdoaWNoIHRoZSBj
YWxsYmFjayByZXR1cm5zIHRydWUuCi0gICAgVGhpcyBtZXRob2Qgd29ya3Mgc2ltaWxhciB0byB0
aGUgYGZpbHRlcigpYCBtZXRob2QgZGVmaW5lZCBpbiBKYXZhU2NyaXB0IDEuNgotICAgIGV4Y2Vw
dCB0aGF0IGl0IHdpbGwgc3RvcCB3b3JraW5nIG9uIHRoZSBhcnJheSBvbmNlIGEgbWF0Y2ggaXMg
Zm91bmQuCi0KLSAgICBUaGUgY2FsbGJhY2sgbWV0aG9kIHlvdSBwcm92aWRlIHNob3VsZCBoYXZl
IHRoZSBmb2xsb3dpbmcgc2lnbmF0dXJlIChhbGwKLSAgICBwYXJhbWV0ZXJzIGFyZSBvcHRpb25h
bCk6Ci0KLSAgICBgYGBqYXZhc2NyaXB0Ci0gICAgZnVuY3Rpb24oaXRlbSwgaW5kZXgsIGVudW1l
cmFibGUpOwotICAgIGBgYAotCi0gICAgLSBgaXRlbWAgaXMgdGhlIGN1cnJlbnQgaXRlbSBpbiB0
aGUgaXRlcmF0aW9uLgotICAgIC0gYGluZGV4YCBpcyB0aGUgY3VycmVudCBpbmRleCBpbiB0aGUg
aXRlcmF0aW9uLgotICAgIC0gYGVudW1lcmFibGVgIGlzIHRoZSBlbnVtZXJhYmxlIG9iamVjdCBp
dHNlbGYuCi0KLSAgICBJdCBzaG91bGQgcmV0dXJuIHRoZSBgdHJ1ZWAgdG8gaW5jbHVkZSB0aGUg
aXRlbSBpbiB0aGUgcmVzdWx0cywgYGZhbHNlYAotICAgIG90aGVyd2lzZS4KLQotICAgIE5vdGUg
dGhhdCBpbiBhZGRpdGlvbiB0byBhIGNhbGxiYWNrLCB5b3UgY2FuIGFsc28gcGFzcyBhbiBvcHRp
b25hbCB0YXJnZXQKLSAgICBvYmplY3QgdGhhdCB3aWxsIGJlIHNldCBhcyBgdGhpc2Agb24gdGhl
IGNvbnRleHQuIFRoaXMgaXMgYSBnb29kIHdheQotICAgIHRvIGdpdmUgeW91ciBpdGVyYXRvciBm
dW5jdGlvbiBhY2Nlc3MgdG8gdGhlIGN1cnJlbnQgb2JqZWN0LgotCi0gICAgQG1ldGhvZCBmaW5k
Ci0gICAgQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGNhbGxiYWNrIHRvIGV4ZWN1dGUK
LSAgICBAcGFyYW0ge09iamVjdH0gW3RhcmdldF0gVGhlIHRhcmdldCBvYmplY3QgdG8gdXNlCi0g
ICAgQHJldHVybiB7T2JqZWN0fSBGb3VuZCBpdGVtIG9yIGB1bmRlZmluZWRgLgotICAqLwotICBm
aW5kOiBmdW5jdGlvbihjYWxsYmFjaywgdGFyZ2V0KSB7Ci0gICAgdmFyIGxlbiA9IGdldCh0aGlz
LCAnbGVuZ3RoJykgOwotICAgIGlmICh0YXJnZXQgPT09IHVuZGVmaW5lZCkgdGFyZ2V0ID0gbnVs
bDsKLQotICAgIHZhciBsYXN0ID0gbnVsbCwgbmV4dCwgZm91bmQgPSBmYWxzZSwgcmV0IDsKLSAg
ICB2YXIgY29udGV4dCA9IHBvcEN0eCgpOwotICAgIGZvcih2YXIgaWR4PTA7aWR4PGxlbiAmJiAh
Zm91bmQ7aWR4KyspIHsKLSAgICAgIG5leHQgPSB0aGlzLm5leHRPYmplY3QoaWR4LCBsYXN0LCBj
b250ZXh0KSA7Ci0gICAgICBpZiAoZm91bmQgPSBjYWxsYmFjay5jYWxsKHRhcmdldCwgbmV4dCwg
aWR4LCB0aGlzKSkgcmV0ID0gbmV4dCA7Ci0gICAgICBsYXN0ID0gbmV4dCA7Ci0gICAgfQotICAg
IG5leHQgPSBsYXN0ID0gbnVsbCA7Ci0gICAgY29udGV4dCA9IHB1c2hDdHgoY29udGV4dCk7Ci0g
ICAgcmV0dXJuIHJldCA7Ci0gIH0sCi0KLSAgLyoqCi0gICAgUmV0dXJucyB0aGUgZmlyc3QgaXRl
bSB3aXRoIGEgcHJvcGVydHkgbWF0Y2hpbmcgdGhlIHBhc3NlZCB2YWx1ZS4gWW91Ci0gICAgY2Fu
IHBhc3MgYW4gb3B0aW9uYWwgc2Vjb25kIGFyZ3VtZW50IHdpdGggdGhlIHRhcmdldCB2YWx1ZS4g
T3RoZXJ3aXNlCi0gICAgdGhpcyB3aWxsIG1hdGNoIGFueSBwcm9wZXJ0eSB0aGF0IGV2YWx1YXRl
cyB0byBgdHJ1ZWAuCi0KLSAgICBUaGlzIG1ldGhvZCB3b3JrcyBtdWNoIGxpa2UgdGhlIG1vcmUg
Z2VuZXJpYyBgZmluZCgpYCBtZXRob2QuCi0KLSAgICBAbWV0aG9kIGZpbmRCeQotICAgIEBwYXJh
bSB7U3RyaW5nfSBrZXkgdGhlIHByb3BlcnR5IHRvIHRlc3QKLSAgICBAcGFyYW0ge1N0cmluZ30g
W3ZhbHVlXSBvcHRpb25hbCB2YWx1ZSB0byB0ZXN0IGFnYWluc3QuCi0gICAgQHJldHVybiB7T2Jq
ZWN0fSBmb3VuZCBpdGVtIG9yIGB1bmRlZmluZWRgCi0gICovCi0gIGZpbmRCeTogZnVuY3Rpb24o
a2V5LCB2YWx1ZSkgewotICAgIHJldHVybiB0aGlzLmZpbmQoaXRlci5hcHBseSh0aGlzLCBhcmd1
bWVudHMpKTsKLSAgfSwKLQotICAvKioKLSAgICBSZXR1cm5zIHRoZSBmaXJzdCBpdGVtIHdpdGgg
YSBwcm9wZXJ0eSBtYXRjaGluZyB0aGUgcGFzc2VkIHZhbHVlLiBZb3UKLSAgICBjYW4gcGFzcyBh
biBvcHRpb25hbCBzZWNvbmQgYXJndW1lbnQgd2l0aCB0aGUgdGFyZ2V0IHZhbHVlLiBPdGhlcndp
c2UKLSAgICB0aGlzIHdpbGwgbWF0Y2ggYW55IHByb3BlcnR5IHRoYXQgZXZhbHVhdGVzIHRvIGB0
cnVlYC4KLQotICAgIFRoaXMgbWV0aG9kIHdvcmtzIG11Y2ggbGlrZSB0aGUgbW9yZSBnZW5lcmlj
IGBmaW5kKClgIG1ldGhvZC4KLQotICAgIEBtZXRob2QgZmluZFByb3BlcnR5Ci0gICAgQHBhcmFt
IHtTdHJpbmd9IGtleSB0aGUgcHJvcGVydHkgdG8gdGVzdAotICAgIEBwYXJhbSB7U3RyaW5nfSBb
dmFsdWVdIG9wdGlvbmFsIHZhbHVlIHRvIHRlc3QgYWdhaW5zdC4KLSAgICBAcmV0dXJuIHtPYmpl
Y3R9IGZvdW5kIGl0ZW0gb3IgYHVuZGVmaW5lZGAKLSAgICBAZGVwcmVjYXRlZCBVc2UgYGZpbmRC
eWAgaW5zdGVhZAotICAqLwotICBmaW5kUHJvcGVydHk6IEVtYmVyLmFsaWFzTWV0aG9kKCdmaW5k
QnknKSwKLQotICAvKioKLSAgICBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgcGFzc2VkIGZ1bmN0aW9u
IHJldHVybnMgdHJ1ZSBmb3IgZXZlcnkgaXRlbSBpbiB0aGUKLSAgICBlbnVtZXJhdGlvbi4gVGhp
cyBjb3JyZXNwb25kcyB3aXRoIHRoZSBgZXZlcnkoKWAgbWV0aG9kIGluIEphdmFTY3JpcHQgMS42
LgotCi0gICAgVGhlIGNhbGxiYWNrIG1ldGhvZCB5b3UgcHJvdmlkZSBzaG91bGQgaGF2ZSB0aGUg
Zm9sbG93aW5nIHNpZ25hdHVyZSAoYWxsCi0gICAgcGFyYW1ldGVycyBhcmUgb3B0aW9uYWwpOgot
Ci0gICAgYGBgamF2YXNjcmlwdAotICAgIGZ1bmN0aW9uKGl0ZW0sIGluZGV4LCBlbnVtZXJhYmxl
KTsKLSAgICBgYGAKLQotICAgIC0gYGl0ZW1gIGlzIHRoZSBjdXJyZW50IGl0ZW0gaW4gdGhlIGl0
ZXJhdGlvbi4KLSAgICAtIGBpbmRleGAgaXMgdGhlIGN1cnJlbnQgaW5kZXggaW4gdGhlIGl0ZXJh
dGlvbi4KLSAgICAtIGBlbnVtZXJhYmxlYCBpcyB0aGUgZW51bWVyYWJsZSBvYmplY3QgaXRzZWxm
LgotCi0gICAgSXQgc2hvdWxkIHJldHVybiB0aGUgYHRydWVgIG9yIGBmYWxzZWAuCi0KLSAgICBO
b3RlIHRoYXQgaW4gYWRkaXRpb24gdG8gYSBjYWxsYmFjaywgeW91IGNhbiBhbHNvIHBhc3MgYW4g
b3B0aW9uYWwgdGFyZ2V0Ci0gICAgb2JqZWN0IHRoYXQgd2lsbCBiZSBzZXQgYXMgYHRoaXNgIG9u
IHRoZSBjb250ZXh0LiBUaGlzIGlzIGEgZ29vZCB3YXkKLSAgICB0byBnaXZlIHlvdXIgaXRlcmF0
b3IgZnVuY3Rpb24gYWNjZXNzIHRvIHRoZSBjdXJyZW50IG9iamVjdC4KLQotICAgIEV4YW1wbGUg
VXNhZ2U6Ci0KLSAgICBgYGBqYXZhc2NyaXB0Ci0gICAgaWYgKHBlb3BsZS5ldmVyeShpc0VuZ2lu
ZWVyKSkgeyBQYXljaGVja3MuYWRkQmlnQm9udXMoKTsgfQotICAgIGBgYAotCi0gICAgQG1ldGhv
ZCBldmVyeQotICAgIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrIFRoZSBjYWxsYmFjayB0byBl
eGVjdXRlCi0gICAgQHBhcmFtIHtPYmplY3R9IFt0YXJnZXRdIFRoZSB0YXJnZXQgb2JqZWN0IHRv
IHVzZQotICAgIEByZXR1cm4ge0Jvb2xlYW59Ci0gICovCi0gIGV2ZXJ5OiBmdW5jdGlvbihjYWxs
YmFjaywgdGFyZ2V0KSB7Ci0gICAgcmV0dXJuICF0aGlzLmZpbmQoZnVuY3Rpb24oeCwgaWR4LCBp
KSB7Ci0gICAgICByZXR1cm4gIWNhbGxiYWNrLmNhbGwodGFyZ2V0LCB4LCBpZHgsIGkpOwotICAg
IH0pOwotICB9LAotCi0gIC8qKgotICAgIEBtZXRob2QgZXZlcnlCeQotICAgIEBwYXJhbSB7U3Ry
aW5nfSBrZXkgdGhlIHByb3BlcnR5IHRvIHRlc3QKLSAgICBAcGFyYW0ge1N0cmluZ30gW3ZhbHVl
XSBvcHRpb25hbCB2YWx1ZSB0byB0ZXN0IGFnYWluc3QuCi0gICAgQGRlcHJlY2F0ZWQgVXNlIGBp
c0V2ZXJ5YCBpbnN0ZWFkCi0gICAgQHJldHVybiB7Qm9vbGVhbn0KLSAgKi8KLSAgZXZlcnlCeTog
RW1iZXIuYWxpYXNNZXRob2QoJ2lzRXZlcnknKSwKLQotICAvKioKLSAgICBAbWV0aG9kIGV2ZXJ5
UHJvcGVydHkKLSAgICBAcGFyYW0ge1N0cmluZ30ga2V5IHRoZSBwcm9wZXJ0eSB0byB0ZXN0Ci0g
ICAgQHBhcmFtIHtTdHJpbmd9IFt2YWx1ZV0gb3B0aW9uYWwgdmFsdWUgdG8gdGVzdCBhZ2FpbnN0
LgotICAgIEBkZXByZWNhdGVkIFVzZSBgaXNFdmVyeWAgaW5zdGVhZAotICAgIEByZXR1cm4ge0Jv
b2xlYW59Ci0gICovCi0gIGV2ZXJ5UHJvcGVydHk6IEVtYmVyLmFsaWFzTWV0aG9kKCdpc0V2ZXJ5
JyksCi0KLSAgLyoqCi0gICAgUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHBhc3NlZCBwcm9wZXJ0eSBy
ZXNvbHZlcyB0byBgdHJ1ZWAgZm9yIGFsbCBpdGVtcyBpbgotICAgIHRoZSBlbnVtZXJhYmxlLiBU
aGlzIG1ldGhvZCBpcyBvZnRlbiBzaW1wbGVyL2Zhc3RlciB0aGFuIHVzaW5nIGEgY2FsbGJhY2su
Ci0KLSAgICBAbWV0aG9kIGlzRXZlcnkKLSAgICBAcGFyYW0ge1N0cmluZ30ga2V5IHRoZSBwcm9w
ZXJ0eSB0byB0ZXN0Ci0gICAgQHBhcmFtIHtTdHJpbmd9IFt2YWx1ZV0gb3B0aW9uYWwgdmFsdWUg
dG8gdGVzdCBhZ2FpbnN0LgotICAgIEByZXR1cm4ge0Jvb2xlYW59Ci0gICovCi0gIGlzRXZlcnk6
IGZ1bmN0aW9uKGtleSwgdmFsdWUpIHsKLSAgICByZXR1cm4gdGhpcy5ldmVyeShpdGVyLmFwcGx5
KHRoaXMsIGFyZ3VtZW50cykpOwotICB9LAotCi0gIC8qKgotICAgIFJldHVybnMgYHRydWVgIGlm
IHRoZSBwYXNzZWQgZnVuY3Rpb24gcmV0dXJucyB0cnVlIGZvciBhbnkgaXRlbSBpbiB0aGUKLSAg
ICBlbnVtZXJhdGlvbi4gVGhpcyBjb3JyZXNwb25kcyB3aXRoIHRoZSBgc29tZSgpYCBtZXRob2Qg
aW4gSmF2YVNjcmlwdCAxLjYuCi0KLSAgICBUaGUgY2FsbGJhY2sgbWV0aG9kIHlvdSBwcm92aWRl
IHNob3VsZCBoYXZlIHRoZSBmb2xsb3dpbmcgc2lnbmF0dXJlIChhbGwKLSAgICBwYXJhbWV0ZXJz
IGFyZSBvcHRpb25hbCk6Ci0KLSAgICBgYGBqYXZhc2NyaXB0Ci0gICAgZnVuY3Rpb24oaXRlbSwg
aW5kZXgsIGVudW1lcmFibGUpOwotICAgIGBgYAotCi0gICAgLSBgaXRlbWAgaXMgdGhlIGN1cnJl
bnQgaXRlbSBpbiB0aGUgaXRlcmF0aW9uLgotICAgIC0gYGluZGV4YCBpcyB0aGUgY3VycmVudCBp
bmRleCBpbiB0aGUgaXRlcmF0aW9uLgotICAgIC0gYGVudW1lcmFibGVgIGlzIHRoZSBlbnVtZXJh
YmxlIG9iamVjdCBpdHNlbGYuCi0KLSAgICBJdCBzaG91bGQgcmV0dXJuIHRoZSBgdHJ1ZWAgdG8g
aW5jbHVkZSB0aGUgaXRlbSBpbiB0aGUgcmVzdWx0cywgYGZhbHNlYAotICAgIG90aGVyd2lzZS4K
LQotICAgIE5vdGUgdGhhdCBpbiBhZGRpdGlvbiB0byBhIGNhbGxiYWNrLCB5b3UgY2FuIGFsc28g
cGFzcyBhbiBvcHRpb25hbCB0YXJnZXQKLSAgICBvYmplY3QgdGhhdCB3aWxsIGJlIHNldCBhcyBg
dGhpc2Agb24gdGhlIGNvbnRleHQuIFRoaXMgaXMgYSBnb29kIHdheQotICAgIHRvIGdpdmUgeW91
ciBpdGVyYXRvciBmdW5jdGlvbiBhY2Nlc3MgdG8gdGhlIGN1cnJlbnQgb2JqZWN0LgotCi0gICAg
VXNhZ2UgRXhhbXBsZToKLQotICAgIGBgYGphdmFzY3JpcHQKLSAgICBpZiAocGVvcGxlLmFueShp
c01hbmFnZXIpKSB7IFBheWNoZWNrcy5hZGRCaWdnZXJCb251cygpOyB9Ci0gICAgYGBgCi0KLSAg
ICBAbWV0aG9kIGFueQotICAgIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrIFRoZSBjYWxsYmFj
ayB0byBleGVjdXRlCi0gICAgQHBhcmFtIHtPYmplY3R9IFt0YXJnZXRdIFRoZSB0YXJnZXQgb2Jq
ZWN0IHRvIHVzZQotICAgIEByZXR1cm4ge0Jvb2xlYW59IGB0cnVlYCBpZiB0aGUgcGFzc2VkIGZ1
bmN0aW9uIHJldHVybnMgYHRydWVgIGZvciBhbnkgaXRlbQotICAqLwotICBhbnk6IGZ1bmN0aW9u
KGNhbGxiYWNrLCB0YXJnZXQpIHsKLSAgICB2YXIgZm91bmQgPSB0aGlzLmZpbmQoZnVuY3Rpb24o
eCwgaWR4LCBpKSB7Ci0gICAgICByZXR1cm4gISFjYWxsYmFjay5jYWxsKHRhcmdldCwgeCwgaWR4
LCBpKTsKLSAgICB9KTsKLQotICAgIHJldHVybiB0eXBlb2YgZm91bmQgIT09ICd1bmRlZmluZWQn
OwotICB9LAotCi0gIC8qKgotICAgIFJldHVybnMgYHRydWVgIGlmIHRoZSBwYXNzZWQgZnVuY3Rp
b24gcmV0dXJucyB0cnVlIGZvciBhbnkgaXRlbSBpbiB0aGUKLSAgICBlbnVtZXJhdGlvbi4gVGhp
cyBjb3JyZXNwb25kcyB3aXRoIHRoZSBgc29tZSgpYCBtZXRob2QgaW4gSmF2YVNjcmlwdCAxLjYu
Ci0KLSAgICBUaGUgY2FsbGJhY2sgbWV0aG9kIHlvdSBwcm92aWRlIHNob3VsZCBoYXZlIHRoZSBm
b2xsb3dpbmcgc2lnbmF0dXJlIChhbGwKLSAgICBwYXJhbWV0ZXJzIGFyZSBvcHRpb25hbCk6Ci0K
LSAgICBgYGBqYXZhc2NyaXB0Ci0gICAgZnVuY3Rpb24oaXRlbSwgaW5kZXgsIGVudW1lcmFibGUp
OwotICAgIGBgYAotCi0gICAgLSBgaXRlbWAgaXMgdGhlIGN1cnJlbnQgaXRlbSBpbiB0aGUgaXRl
cmF0aW9uLgotICAgIC0gYGluZGV4YCBpcyB0aGUgY3VycmVudCBpbmRleCBpbiB0aGUgaXRlcmF0
aW9uLgotICAgIC0gYGVudW1lcmFibGVgIGlzIHRoZSBlbnVtZXJhYmxlIG9iamVjdCBpdHNlbGYu
Ci0KLSAgICBJdCBzaG91bGQgcmV0dXJuIHRoZSBgdHJ1ZWAgdG8gaW5jbHVkZSB0aGUgaXRlbSBp
biB0aGUgcmVzdWx0cywgYGZhbHNlYAotICAgIG90aGVyd2lzZS4KLQotICAgIE5vdGUgdGhhdCBp
biBhZGRpdGlvbiB0byBhIGNhbGxiYWNrLCB5b3UgY2FuIGFsc28gcGFzcyBhbiBvcHRpb25hbCB0
YXJnZXQKLSAgICBvYmplY3QgdGhhdCB3aWxsIGJlIHNldCBhcyBgdGhpc2Agb24gdGhlIGNvbnRl
eHQuIFRoaXMgaXMgYSBnb29kIHdheQotICAgIHRvIGdpdmUgeW91ciBpdGVyYXRvciBmdW5jdGlv
biBhY2Nlc3MgdG8gdGhlIGN1cnJlbnQgb2JqZWN0LgotCi0gICAgVXNhZ2UgRXhhbXBsZToKLQot
ICAgIGBgYGphdmFzY3JpcHQKLSAgICBpZiAocGVvcGxlLnNvbWUoaXNNYW5hZ2VyKSkgeyBQYXlj
aGVja3MuYWRkQmlnZ2VyQm9udXMoKTsgfQotICAgIGBgYAotCi0gICAgQG1ldGhvZCBzb21lCi0g
ICAgQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGNhbGxiYWNrIHRvIGV4ZWN1dGUKLSAg
ICBAcGFyYW0ge09iamVjdH0gW3RhcmdldF0gVGhlIHRhcmdldCBvYmplY3QgdG8gdXNlCi0gICAg
QHJldHVybiB7Qm9vbGVhbn0gYHRydWVgIGlmIHRoZSBwYXNzZWQgZnVuY3Rpb24gcmV0dXJucyBg
dHJ1ZWAgZm9yIGFueSBpdGVtCi0gICAgQGRlcHJlY2F0ZWQgVXNlIGBhbnlgIGluc3RlYWQKLSAg
Ki8KLSAgc29tZTogRW1iZXIuYWxpYXNNZXRob2QoJ2FueScpLAotCi0gIC8qKgotICAgIFJldHVy
bnMgYHRydWVgIGlmIHRoZSBwYXNzZWQgcHJvcGVydHkgcmVzb2x2ZXMgdG8gYHRydWVgIGZvciBh
bnkgaXRlbSBpbgotICAgIHRoZSBlbnVtZXJhYmxlLiBUaGlzIG1ldGhvZCBpcyBvZnRlbiBzaW1w
bGVyL2Zhc3RlciB0aGFuIHVzaW5nIGEgY2FsbGJhY2suCi0KLSAgICBAbWV0aG9kIGlzQW55Ci0g
ICAgQHBhcmFtIHtTdHJpbmd9IGtleSB0aGUgcHJvcGVydHkgdG8gdGVzdAotICAgIEBwYXJhbSB7
U3RyaW5nfSBbdmFsdWVdIG9wdGlvbmFsIHZhbHVlIHRvIHRlc3QgYWdhaW5zdC4KLSAgICBAcmV0
dXJuIHtCb29sZWFufSBgdHJ1ZWAgaWYgdGhlIHBhc3NlZCBmdW5jdGlvbiByZXR1cm5zIGB0cnVl
YCBmb3IgYW55IGl0ZW0KLSAgKi8KLSAgaXNBbnk6IGZ1bmN0aW9uKGtleSwgdmFsdWUpIHsKLSAg
ICByZXR1cm4gdGhpcy5hbnkoaXRlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpKTsKLSAgfSwKLQot
ICAvKioKLSAgICBAbWV0aG9kIGFueUJ5Ci0gICAgQHBhcmFtIHtTdHJpbmd9IGtleSB0aGUgcHJv
cGVydHkgdG8gdGVzdAotICAgIEBwYXJhbSB7U3RyaW5nfSBbdmFsdWVdIG9wdGlvbmFsIHZhbHVl
IHRvIHRlc3QgYWdhaW5zdC4KLSAgICBAcmV0dXJuIHtCb29sZWFufSBgdHJ1ZWAgaWYgdGhlIHBh
c3NlZCBmdW5jdGlvbiByZXR1cm5zIGB0cnVlYCBmb3IgYW55IGl0ZW0KLSAgICBAZGVwcmVjYXRl
ZCBVc2UgYGlzQW55YCBpbnN0ZWFkCi0gICovCi0gIGFueUJ5OiBFbWJlci5hbGlhc01ldGhvZCgn
aXNBbnknKSwKLQotICAvKioKLSAgICBAbWV0aG9kIHNvbWVQcm9wZXJ0eQotICAgIEBwYXJhbSB7
U3RyaW5nfSBrZXkgdGhlIHByb3BlcnR5IHRvIHRlc3QKLSAgICBAcGFyYW0ge1N0cmluZ30gW3Zh
bHVlXSBvcHRpb25hbCB2YWx1ZSB0byB0ZXN0IGFnYWluc3QuCi0gICAgQHJldHVybiB7Qm9vbGVh
bn0gYHRydWVgIGlmIHRoZSBwYXNzZWQgZnVuY3Rpb24gcmV0dXJucyBgdHJ1ZWAgZm9yIGFueSBp
dGVtCi0gICAgQGRlcHJlY2F0ZWQgVXNlIGBpc0FueWAgaW5zdGVhZAotICAqLwotICBzb21lUHJv
cGVydHk6IEVtYmVyLmFsaWFzTWV0aG9kKCdpc0FueScpLAotCi0gIC8qKgotICAgIFRoaXMgd2ls
bCBjb21iaW5lIHRoZSB2YWx1ZXMgb2YgdGhlIGVudW1lcmF0b3IgaW50byBhIHNpbmdsZSB2YWx1
ZS4gSXQKLSAgICBpcyBhIHVzZWZ1bCB3YXkgdG8gY29sbGVjdCBhIHN1bW1hcnkgdmFsdWUgZnJv
bSBhbiBlbnVtZXJhdGlvbi4gVGhpcwotICAgIGNvcnJlc3BvbmRzIHRvIHRoZSBgcmVkdWNlKClg
IG1ldGhvZCBkZWZpbmVkIGluIEphdmFTY3JpcHQgMS44LgotCi0gICAgVGhlIGNhbGxiYWNrIG1l
dGhvZCB5b3UgcHJvdmlkZSBzaG91bGQgaGF2ZSB0aGUgZm9sbG93aW5nIHNpZ25hdHVyZSAoYWxs
Ci0gICAgcGFyYW1ldGVycyBhcmUgb3B0aW9uYWwpOgotCi0gICAgYGBgamF2YXNjcmlwdAotICAg
IGZ1bmN0aW9uKHByZXZpb3VzVmFsdWUsIGl0ZW0sIGluZGV4LCBlbnVtZXJhYmxlKTsKLSAgICBg
YGAKLQotICAgIC0gYHByZXZpb3VzVmFsdWVgIGlzIHRoZSB2YWx1ZSByZXR1cm5lZCBieSB0aGUg
bGFzdCBjYWxsIHRvIHRoZSBpdGVyYXRvci4KLSAgICAtIGBpdGVtYCBpcyB0aGUgY3VycmVudCBp
dGVtIGluIHRoZSBpdGVyYXRpb24uCi0gICAgLSBgaW5kZXhgIGlzIHRoZSBjdXJyZW50IGluZGV4
IGluIHRoZSBpdGVyYXRpb24uCi0gICAgLSBgZW51bWVyYWJsZWAgaXMgdGhlIGVudW1lcmFibGUg
b2JqZWN0IGl0c2VsZi4KLQotICAgIFJldHVybiB0aGUgbmV3IGN1bXVsYXRpdmUgdmFsdWUuCi0K
LSAgICBJbiBhZGRpdGlvbiB0byB0aGUgY2FsbGJhY2sgeW91IGNhbiBhbHNvIHBhc3MgYW4gYGlu
aXRpYWxWYWx1ZWAuIEFuIGVycm9yCi0gICAgd2lsbCBiZSByYWlzZWQgaWYgeW91IGRvIG5vdCBw
YXNzIGFuIGluaXRpYWwgdmFsdWUgYW5kIHRoZSBlbnVtZXJhdG9yIGlzCi0gICAgZW1wdHkuCi0K
LSAgICBOb3RlIHRoYXQgdW5saWtlIHRoZSBvdGhlciBtZXRob2RzLCB0aGlzIG1ldGhvZCBkb2Vz
IG5vdCBhbGxvdyB5b3UgdG8KLSAgICBwYXNzIGEgdGFyZ2V0IG9iamVjdCB0byBzZXQgYXMgdGhp
cyBmb3IgdGhlIGNhbGxiYWNrLiBJdCdzIHBhcnQgb2YgdGhlCi0gICAgc3BlYy4gU29ycnkuCi0K
LSAgICBAbWV0aG9kIHJlZHVjZQotICAgIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrIFRoZSBj
YWxsYmFjayB0byBleGVjdXRlCi0gICAgQHBhcmFtIHtPYmplY3R9IGluaXRpYWxWYWx1ZSBJbml0
aWFsIHZhbHVlIGZvciB0aGUgcmVkdWNlCi0gICAgQHBhcmFtIHtTdHJpbmd9IHJlZHVjZXJQcm9w
ZXJ0eSBpbnRlcm5hbCB1c2Ugb25seS4KLSAgICBAcmV0dXJuIHtPYmplY3R9IFRoZSByZWR1Y2Vk
IHZhbHVlLgotICAqLwotICByZWR1Y2U6IGZ1bmN0aW9uKGNhbGxiYWNrLCBpbml0aWFsVmFsdWUs
IHJlZHVjZXJQcm9wZXJ0eSkgewotICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICJmdW5jdGlv
biIpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcigpOyB9Ci0KLSAgICB2YXIgcmV0ID0gaW5pdGlhbFZh
bHVlOwotCi0gICAgdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGkpIHsKLSAgICAgIHJldCA9
IGNhbGxiYWNrLmNhbGwobnVsbCwgcmV0LCBpdGVtLCBpLCB0aGlzLCByZWR1Y2VyUHJvcGVydHkp
OwotICAgIH0sIHRoaXMpOwotCi0gICAgcmV0dXJuIHJldDsKLSAgfSwKLQotICAvKioKLSAgICBJ
bnZva2VzIHRoZSBuYW1lZCBtZXRob2Qgb24gZXZlcnkgb2JqZWN0IGluIHRoZSByZWNlaXZlciB0
aGF0Ci0gICAgaW1wbGVtZW50cyBpdC4gVGhpcyBtZXRob2QgY29ycmVzcG9uZHMgdG8gdGhlIGlt
cGxlbWVudGF0aW9uIGluCi0gICAgUHJvdG90eXBlIDEuNi4KLQotICAgIEBtZXRob2QgaW52b2tl
Ci0gICAgQHBhcmFtIHtTdHJpbmd9IG1ldGhvZE5hbWUgdGhlIG5hbWUgb2YgdGhlIG1ldGhvZAot
ICAgIEBwYXJhbSB7T2JqZWN0Li4ufSBhcmdzIG9wdGlvbmFsIGFyZ3VtZW50cyB0byBwYXNzIGFz
IHdlbGwuCi0gICAgQHJldHVybiB7QXJyYXl9IHJldHVybiB2YWx1ZXMgZnJvbSBjYWxsaW5nIGlu
dm9rZS4KLSAgKi8KLSAgaW52b2tlOiBmdW5jdGlvbihtZXRob2ROYW1lKSB7Ci0gICAgdmFyIGFy
Z3MsIHJldCA9IEVtYmVyLkEoKTsKLSAgICBpZiAoYXJndW1lbnRzLmxlbmd0aD4xKSBhcmdzID0g
YV9zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7Ci0KLSAgICB0aGlzLmZvckVhY2goZnVuY3Rpb24o
eCwgaWR4KSB7Ci0gICAgICB2YXIgbWV0aG9kID0geCAmJiB4W21ldGhvZE5hbWVdOwotICAgICAg
aWYgKCdmdW5jdGlvbicgPT09IHR5cGVvZiBtZXRob2QpIHsKLSAgICAgICAgcmV0W2lkeF0gPSBh
cmdzID8gbWV0aG9kLmFwcGx5KHgsIGFyZ3MpIDogbWV0aG9kLmNhbGwoeCk7Ci0gICAgICB9Ci0g
ICAgfSwgdGhpcyk7Ci0KLSAgICByZXR1cm4gcmV0OwotICB9LAotCi0gIC8qKgotICAgIFNpbXBs
eSBjb252ZXJ0cyB0aGUgZW51bWVyYWJsZSBpbnRvIGEgZ2VudWluZSBhcnJheS4gVGhlIG9yZGVy
IGlzIG5vdAotICAgIGd1YXJhbnRlZWQuIENvcnJlc3BvbmRzIHRvIHRoZSBtZXRob2QgaW1wbGVt
ZW50ZWQgYnkgUHJvdG90eXBlLgotCi0gICAgQG1ldGhvZCB0b0FycmF5Ci0gICAgQHJldHVybiB7
QXJyYXl9IHRoZSBlbnVtZXJhYmxlIGFzIGFuIGFycmF5LgotICAqLwotICB0b0FycmF5OiBmdW5j
dGlvbigpIHsKLSAgICB2YXIgcmV0ID0gRW1iZXIuQSgpOwotICAgIHRoaXMuZm9yRWFjaChmdW5j
dGlvbihvLCBpZHgpIHsgcmV0W2lkeF0gPSBvOyB9KTsKLSAgICByZXR1cm4gcmV0IDsKLSAgfSwK
LQotICAvKioKLSAgICBSZXR1cm5zIGEgY29weSBvZiB0aGUgYXJyYXkgd2l0aCBhbGwgbnVsbCBh
bmQgdW5kZWZpbmVkIGVsZW1lbnRzIHJlbW92ZWQuCi0KLSAgICBgYGBqYXZhc2NyaXB0Ci0gICAg
dmFyIGFyciA9IFsiYSIsIG51bGwsICJjIiwgdW5kZWZpbmVkXTsKLSAgICBhcnIuY29tcGFjdCgp
OyAgLy8gWyJhIiwgImMiXQotICAgIGBgYAotCi0gICAgQG1ldGhvZCBjb21wYWN0Ci0gICAgQHJl
dHVybiB7QXJyYXl9IHRoZSBhcnJheSB3aXRob3V0IG51bGwgYW5kIHVuZGVmaW5lZCBlbGVtZW50
cy4KLSAgKi8KLSAgY29tcGFjdDogZnVuY3Rpb24oKSB7Ci0gICAgcmV0dXJuIHRoaXMuZmlsdGVy
KGZ1bmN0aW9uKHZhbHVlKSB7IHJldHVybiB2YWx1ZSAhPSBudWxsOyB9KTsKLSAgfSwKLQotICAv
KioKLSAgICBSZXR1cm5zIGEgbmV3IGVudW1lcmFibGUgdGhhdCBleGNsdWRlcyB0aGUgcGFzc2Vk
IHZhbHVlLiBUaGUgZGVmYXVsdAotICAgIGltcGxlbWVudGF0aW9uIHJldHVybnMgYW4gYXJyYXkg
cmVnYXJkbGVzcyBvZiB0aGUgcmVjZWl2ZXIgdHlwZSB1bmxlc3MKLSAgICB0aGUgcmVjZWl2ZXIg
ZG9lcyBub3QgY29udGFpbiB0aGUgdmFsdWUuCi0KLSAgICBgYGBqYXZhc2NyaXB0Ci0gICAgdmFy
IGFyciA9IFsiYSIsICJiIiwgImEiLCAiYyJdOwotICAgIGFyci53aXRob3V0KCJhIik7ICAvLyBb
ImIiLCAiYyJdCi0gICAgYGBgCi0KLSAgICBAbWV0aG9kIHdpdGhvdXQKLSAgICBAcGFyYW0ge09i
amVjdH0gdmFsdWUKLSAgICBAcmV0dXJuIHtFbWJlci5FbnVtZXJhYmxlfQotICAqLwotICB3aXRo
b3V0OiBmdW5jdGlvbih2YWx1ZSkgewotICAgIGlmICghdGhpcy5jb250YWlucyh2YWx1ZSkpIHJl
dHVybiB0aGlzOyAvLyBub3RoaW5nIHRvIGRvCi0gICAgdmFyIHJldCA9IEVtYmVyLkEoKTsKLSAg
ICB0aGlzLmZvckVhY2goZnVuY3Rpb24oaykgewotICAgICAgaWYgKGsgIT09IHZhbHVlKSByZXRb
cmV0Lmxlbmd0aF0gPSBrOwotICAgIH0pIDsKLSAgICByZXR1cm4gcmV0IDsKLSAgfSwKLQotICAv
KioKLSAgICBSZXR1cm5zIGEgbmV3IGVudW1lcmFibGUgdGhhdCBjb250YWlucyBvbmx5IHVuaXF1
ZSB2YWx1ZXMuIFRoZSBkZWZhdWx0Ci0gICAgaW1wbGVtZW50YXRpb24gcmV0dXJucyBhbiBhcnJh
eSByZWdhcmRsZXNzIG9mIHRoZSByZWNlaXZlciB0eXBlLgotCi0gICAgYGBgamF2YXNjcmlwdAot
ICAgIHZhciBhcnIgPSBbImEiLCAiYSIsICJiIiwgImIiXTsKLSAgICBhcnIudW5pcSgpOyAgLy8g
WyJhIiwgImIiXQotICAgIGBgYAotCi0gICAgQG1ldGhvZCB1bmlxCi0gICAgQHJldHVybiB7RW1i
ZXIuRW51bWVyYWJsZX0KLSAgKi8KLSAgdW5pcTogZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHJldCA9
IEVtYmVyLkEoKTsKLSAgICB0aGlzLmZvckVhY2goZnVuY3Rpb24oaykgewotICAgICAgaWYgKGFf
aW5kZXhPZihyZXQsIGspPDApIHJldC5wdXNoKGspOwotICAgIH0pOwotICAgIHJldHVybiByZXQ7
Ci0gIH0sCi0KLSAgLyoqCi0gICAgVGhpcyBwcm9wZXJ0eSB3aWxsIHRyaWdnZXIgYW55dGltZSB0
aGUgZW51bWVyYWJsZSdzIGNvbnRlbnQgY2hhbmdlcy4KLSAgICBZb3UgY2FuIG9ic2VydmUgdGhp
cyBwcm9wZXJ0eSB0byBiZSBub3RpZmllZCBvZiBjaGFuZ2VzIHRvIHRoZSBlbnVtZXJhYmxlcwot
ICAgIGNvbnRlbnQuCi0KLSAgICBGb3IgcGxhaW4gZW51bWVyYWJsZXMsIHRoaXMgcHJvcGVydHkg
aXMgcmVhZCBvbmx5LiBgRW1iZXIuQXJyYXlgIG92ZXJyaWRlcwotICAgIHRoaXMgbWV0aG9kLgot
Ci0gICAgQHByb3BlcnR5IFtdCi0gICAgQHR5cGUgRW1iZXIuQXJyYXkKLSAgICBAcmV0dXJuIHRo
aXMKLSAgKi8KLSAgJ1tdJzogRW1iZXIuY29tcHV0ZWQoZnVuY3Rpb24oa2V5LCB2YWx1ZSkgewot
ICAgIHJldHVybiB0aGlzOwotICB9KSwKLQotICAvLyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi0gIC8vIEVOVU1FUkFCTEUgT0JTRVJW
RVJTCi0gIC8vCi0KLSAgLyoqCi0gICAgUmVnaXN0ZXJzIGFuIGVudW1lcmFibGUgb2JzZXJ2ZXIu
IE11c3QgaW1wbGVtZW50IGBFbWJlci5FbnVtZXJhYmxlT2JzZXJ2ZXJgCi0gICAgbWl4aW4uCi0K
LSAgICBAbWV0aG9kIGFkZEVudW1lcmFibGVPYnNlcnZlcgotICAgIEBwYXJhbSB7T2JqZWN0fSB0
YXJnZXQKLSAgICBAcGFyYW0ge0hhc2h9IFtvcHRzXQotICAgIEByZXR1cm4gdGhpcwotICAqLwot
ICBhZGRFbnVtZXJhYmxlT2JzZXJ2ZXI6IGZ1bmN0aW9uKHRhcmdldCwgb3B0cykgewotICAgIHZh
ciB3aWxsQ2hhbmdlID0gKG9wdHMgJiYgb3B0cy53aWxsQ2hhbmdlKSB8fCAnZW51bWVyYWJsZVdp
bGxDaGFuZ2UnLAotICAgICAgICBkaWRDaGFuZ2UgID0gKG9wdHMgJiYgb3B0cy5kaWRDaGFuZ2Up
IHx8ICdlbnVtZXJhYmxlRGlkQ2hhbmdlJzsKLQotICAgIHZhciBoYXNPYnNlcnZlcnMgPSBnZXQo
dGhpcywgJ2hhc0VudW1lcmFibGVPYnNlcnZlcnMnKTsKLSAgICBpZiAoIWhhc09ic2VydmVycykg
RW1iZXIucHJvcGVydHlXaWxsQ2hhbmdlKHRoaXMsICdoYXNFbnVtZXJhYmxlT2JzZXJ2ZXJzJyk7
Ci0gICAgRW1iZXIuYWRkTGlzdGVuZXIodGhpcywgJ0BlbnVtZXJhYmxlOmJlZm9yZScsIHRhcmdl
dCwgd2lsbENoYW5nZSk7Ci0gICAgRW1iZXIuYWRkTGlzdGVuZXIodGhpcywgJ0BlbnVtZXJhYmxl
OmNoYW5nZScsIHRhcmdldCwgZGlkQ2hhbmdlKTsKLSAgICBpZiAoIWhhc09ic2VydmVycykgRW1i
ZXIucHJvcGVydHlEaWRDaGFuZ2UodGhpcywgJ2hhc0VudW1lcmFibGVPYnNlcnZlcnMnKTsKLSAg
ICByZXR1cm4gdGhpczsKLSAgfSwKLQotICAvKioKLSAgICBSZW1vdmVzIGEgcmVnaXN0ZXJlZCBl
bnVtZXJhYmxlIG9ic2VydmVyLgotCi0gICAgQG1ldGhvZCByZW1vdmVFbnVtZXJhYmxlT2JzZXJ2
ZXIKLSAgICBAcGFyYW0ge09iamVjdH0gdGFyZ2V0Ci0gICAgQHBhcmFtIHtIYXNofSBbb3B0c10K
LSAgICBAcmV0dXJuIHRoaXMKLSAgKi8KLSAgcmVtb3ZlRW51bWVyYWJsZU9ic2VydmVyOiBmdW5j
dGlvbih0YXJnZXQsIG9wdHMpIHsKLSAgICB2YXIgd2lsbENoYW5nZSA9IChvcHRzICYmIG9wdHMu
d2lsbENoYW5nZSkgfHwgJ2VudW1lcmFibGVXaWxsQ2hhbmdlJywKLSAgICAgICAgZGlkQ2hhbmdl
ICA9IChvcHRzICYmIG9wdHMuZGlkQ2hhbmdlKSB8fCAnZW51bWVyYWJsZURpZENoYW5nZSc7Ci0K
LSAgICB2YXIgaGFzT2JzZXJ2ZXJzID0gZ2V0KHRoaXMsICdoYXNFbnVtZXJhYmxlT2JzZXJ2ZXJz
Jyk7Ci0gICAgaWYgKGhhc09ic2VydmVycykgRW1iZXIucHJvcGVydHlXaWxsQ2hhbmdlKHRoaXMs
ICdoYXNFbnVtZXJhYmxlT2JzZXJ2ZXJzJyk7Ci0gICAgRW1iZXIucmVtb3ZlTGlzdGVuZXIodGhp
cywgJ0BlbnVtZXJhYmxlOmJlZm9yZScsIHRhcmdldCwgd2lsbENoYW5nZSk7Ci0gICAgRW1iZXIu
cmVtb3ZlTGlzdGVuZXIodGhpcywgJ0BlbnVtZXJhYmxlOmNoYW5nZScsIHRhcmdldCwgZGlkQ2hh
bmdlKTsKLSAgICBpZiAoaGFzT2JzZXJ2ZXJzKSBFbWJlci5wcm9wZXJ0eURpZENoYW5nZSh0aGlz
LCAnaGFzRW51bWVyYWJsZU9ic2VydmVycycpOwotICAgIHJldHVybiB0aGlzOwotICB9LAotCi0g
IC8qKgotICAgIEJlY29tZXMgdHJ1ZSB3aGVuZXZlciB0aGUgYXJyYXkgY3VycmVudGx5IGhhcyBv
YnNlcnZlcnMgd2F0Y2hpbmcgY2hhbmdlcwotICAgIG9uIHRoZSBhcnJheS4KLQotICAgIEBwcm9w
ZXJ0eSBoYXNFbnVtZXJhYmxlT2JzZXJ2ZXJzCi0gICAgQHR5cGUgQm9vbGVhbgotICAqLwotICBo
YXNFbnVtZXJhYmxlT2JzZXJ2ZXJzOiBFbWJlci5jb21wdXRlZChmdW5jdGlvbigpIHsKLSAgICBy
ZXR1cm4gRW1iZXIuaGFzTGlzdGVuZXJzKHRoaXMsICdAZW51bWVyYWJsZTpjaGFuZ2UnKSB8fCBF
bWJlci5oYXNMaXN0ZW5lcnModGhpcywgJ0BlbnVtZXJhYmxlOmJlZm9yZScpOwotICB9KSwKLQot
Ci0gIC8qKgotICAgIEludm9rZSB0aGlzIG1ldGhvZCBqdXN0IGJlZm9yZSB0aGUgY29udGVudHMg
b2YgeW91ciBlbnVtZXJhYmxlIHdpbGwKLSAgICBjaGFuZ2UuIFlvdSBjYW4gZWl0aGVyIG9taXQg
dGhlIHBhcmFtZXRlcnMgY29tcGxldGVseSBvciBwYXNzIHRoZSBvYmplY3RzCi0gICAgdG8gYmUg
cmVtb3ZlZCBvciBhZGRlZCBpZiBhdmFpbGFibGUgb3IganVzdCBhIGNvdW50LgotCi0gICAgQG1l
dGhvZCBlbnVtZXJhYmxlQ29udGVudFdpbGxDaGFuZ2UKLSAgICBAcGFyYW0ge0VtYmVyLkVudW1l
cmFibGV8TnVtYmVyfSByZW1vdmluZyBBbiBlbnVtZXJhYmxlIG9mIHRoZSBvYmplY3RzIHRvCi0g
ICAgICBiZSByZW1vdmVkIG9yIHRoZSBudW1iZXIgb2YgaXRlbXMgdG8gYmUgcmVtb3ZlZC4KLSAg
ICBAcGFyYW0ge0VtYmVyLkVudW1lcmFibGV8TnVtYmVyfSBhZGRpbmcgQW4gZW51bWVyYWJsZSBv
ZiB0aGUgb2JqZWN0cyB0byBiZQotICAgICAgYWRkZWQgb3IgdGhlIG51bWJlciBvZiBpdGVtcyB0
byBiZSBhZGRlZC4KLSAgICBAY2hhaW5hYmxlCi0gICovCi0gIGVudW1lcmFibGVDb250ZW50V2ls
bENoYW5nZTogZnVuY3Rpb24ocmVtb3ZpbmcsIGFkZGluZykgewotCi0gICAgdmFyIHJlbW92ZUNu
dCwgYWRkQ250LCBoYXNEZWx0YTsKLQotICAgIGlmICgnbnVtYmVyJyA9PT0gdHlwZW9mIHJlbW92
aW5nKSByZW1vdmVDbnQgPSByZW1vdmluZzsKLSAgICBlbHNlIGlmIChyZW1vdmluZykgcmVtb3Zl
Q250ID0gZ2V0KHJlbW92aW5nLCAnbGVuZ3RoJyk7Ci0gICAgZWxzZSByZW1vdmVDbnQgPSByZW1v
dmluZyA9IC0xOwotCi0gICAgaWYgKCdudW1iZXInID09PSB0eXBlb2YgYWRkaW5nKSBhZGRDbnQg
PSBhZGRpbmc7Ci0gICAgZWxzZSBpZiAoYWRkaW5nKSBhZGRDbnQgPSBnZXQoYWRkaW5nLCdsZW5n
dGgnKTsKLSAgICBlbHNlIGFkZENudCA9IGFkZGluZyA9IC0xOwotCi0gICAgaGFzRGVsdGEgPSBh
ZGRDbnQ8MCB8fCByZW1vdmVDbnQ8MCB8fCBhZGRDbnQtcmVtb3ZlQ250IT09MDsKLQotICAgIGlm
IChyZW1vdmluZyA9PT0gLTEpIHJlbW92aW5nID0gbnVsbDsKLSAgICBpZiAoYWRkaW5nICAgPT09
IC0xKSBhZGRpbmcgICA9IG51bGw7Ci0KLSAgICBFbWJlci5wcm9wZXJ0eVdpbGxDaGFuZ2UodGhp
cywgJ1tdJyk7Ci0gICAgaWYgKGhhc0RlbHRhKSBFbWJlci5wcm9wZXJ0eVdpbGxDaGFuZ2UodGhp
cywgJ2xlbmd0aCcpOwotICAgIEVtYmVyLnNlbmRFdmVudCh0aGlzLCAnQGVudW1lcmFibGU6YmVm
b3JlJywgW3RoaXMsIHJlbW92aW5nLCBhZGRpbmddKTsKLQotICAgIHJldHVybiB0aGlzOwotICB9
LAotCi0gIC8qKgotICAgIEludm9rZSB0aGlzIG1ldGhvZCB3aGVuIHRoZSBjb250ZW50cyBvZiB5
b3VyIGVudW1lcmFibGUgaGFzIGNoYW5nZWQuCi0gICAgVGhpcyB3aWxsIG5vdGlmeSBhbnkgb2Jz
ZXJ2ZXJzIHdhdGNoaW5nIGZvciBjb250ZW50IGNoYW5nZXMuIElmIHlvdXIgYXJlCi0gICAgaW1w
bGVtZW50aW5nIGFuIG9yZGVyZWQgZW51bWVyYWJsZSAoc3VjaCBhcyBhbiBhcnJheSksIGFsc28g
cGFzcyB0aGUKLSAgICBzdGFydCBhbmQgZW5kIHZhbHVlcyB3aGVyZSB0aGUgY29udGVudCBjaGFu
Z2VkIHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQgdG8KLSAgICBub3RpZnkgcmFuZ2Ugb2JzZXJ2ZXJz
LgotCi0gICAgQG1ldGhvZCBlbnVtZXJhYmxlQ29udGVudERpZENoYW5nZQotICAgIEBwYXJhbSB7
TnVtYmVyfSBbc3RhcnRdIG9wdGlvbmFsIHN0YXJ0IG9mZnNldCBmb3IgdGhlIGNvbnRlbnQgY2hh
bmdlLgotICAgICAgRm9yIHVub3JkZXJlZCBlbnVtZXJhYmxlcywgeW91IHNob3VsZCBhbHdheXMg
cGFzcyAtMS4KLSAgICBAcGFyYW0ge0VtYmVyLkVudW1lcmFibGV8TnVtYmVyfSByZW1vdmluZyBB
biBlbnVtZXJhYmxlIG9mIHRoZSBvYmplY3RzIHRvCi0gICAgICBiZSByZW1vdmVkIG9yIHRoZSBu
dW1iZXIgb2YgaXRlbXMgdG8gYmUgcmVtb3ZlZC4KLSAgICBAcGFyYW0ge0VtYmVyLkVudW1lcmFi
bGV8TnVtYmVyfSBhZGRpbmcgIEFuIGVudW1lcmFibGUgb2YgdGhlIG9iamVjdHMgdG8KLSAgICAg
IGJlIGFkZGVkIG9yIHRoZSBudW1iZXIgb2YgaXRlbXMgdG8gYmUgYWRkZWQuCi0gICAgQGNoYWlu
YWJsZQotICAqLwotICBlbnVtZXJhYmxlQ29udGVudERpZENoYW5nZTogZnVuY3Rpb24ocmVtb3Zp
bmcsIGFkZGluZykgewotICAgIHZhciByZW1vdmVDbnQsIGFkZENudCwgaGFzRGVsdGE7Ci0KLSAg
ICBpZiAoJ251bWJlcicgPT09IHR5cGVvZiByZW1vdmluZykgcmVtb3ZlQ250ID0gcmVtb3Zpbmc7
Ci0gICAgZWxzZSBpZiAocmVtb3ZpbmcpIHJlbW92ZUNudCA9IGdldChyZW1vdmluZywgJ2xlbmd0
aCcpOwotICAgIGVsc2UgcmVtb3ZlQ250ID0gcmVtb3ZpbmcgPSAtMTsKLQotICAgIGlmICgnbnVt
YmVyJyA9PT0gdHlwZW9mIGFkZGluZykgYWRkQ250ID0gYWRkaW5nOwotICAgIGVsc2UgaWYgKGFk
ZGluZykgYWRkQ250ID0gZ2V0KGFkZGluZywgJ2xlbmd0aCcpOwotICAgIGVsc2UgYWRkQ250ID0g
YWRkaW5nID0gLTE7Ci0KLSAgICBoYXNEZWx0YSA9IGFkZENudDwwIHx8IHJlbW92ZUNudDwwIHx8
IGFkZENudC1yZW1vdmVDbnQhPT0wOwotCi0gICAgaWYgKHJlbW92aW5nID09PSAtMSkgcmVtb3Zp
bmcgPSBudWxsOwotICAgIGlmIChhZGRpbmcgICA9PT0gLTEpIGFkZGluZyAgID0gbnVsbDsKLQot
ICAgIEVtYmVyLnNlbmRFdmVudCh0aGlzLCAnQGVudW1lcmFibGU6Y2hhbmdlJywgW3RoaXMsIHJl
bW92aW5nLCBhZGRpbmddKTsKLSAgICBpZiAoaGFzRGVsdGEpIEVtYmVyLnByb3BlcnR5RGlkQ2hh
bmdlKHRoaXMsICdsZW5ndGgnKTsKLSAgICBFbWJlci5wcm9wZXJ0eURpZENoYW5nZSh0aGlzLCAn
W10nKTsKLQotICAgIHJldHVybiB0aGlzIDsKLSAgfSwKLQotICAvKioKLSAgICBDb252ZXJ0cyB0
aGUgZW51bWVyYWJsZSBpbnRvIGFuIGFycmF5IGFuZCBzb3J0cyBieSB0aGUga2V5cwotICAgIHNw
ZWNpZmllZCBpbiB0aGUgYXJndW1lbnQuCi0KLSAgICBZb3UgbWF5IHByb3ZpZGUgbXVsdGlwbGUg
YXJndW1lbnRzIHRvIHNvcnQgYnkgbXVsdGlwbGUgcHJvcGVydGllcy4KLQotICAgIEBtZXRob2Qg
c29ydEJ5Ci0gICAgQHBhcmFtIHtTdHJpbmd9IHByb3BlcnR5IG5hbWUocykgdG8gc29ydCBvbgot
ICAgIEByZXR1cm4ge0FycmF5fSBUaGUgc29ydGVkIGFycmF5LgotICAgICovCi0gIHNvcnRCeTog
ZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHNvcnRLZXlzID0gYXJndW1lbnRzOwotICAgIHJldHVybiB0
aGlzLnRvQXJyYXkoKS5zb3J0KGZ1bmN0aW9uKGEsIGIpewotICAgICAgZm9yKHZhciBpID0gMDsg
aSA8IHNvcnRLZXlzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgIHZhciBrZXkgPSBzb3J0S2V5c1tp
XSwKLSAgICAgICAgcHJvcEEgPSBnZXQoYSwga2V5KSwKLSAgICAgICAgcHJvcEIgPSBnZXQoYiwg
a2V5KTsKLSAgICAgICAgLy8gcmV0dXJuIDEgb3IgLTEgZWxzZSBjb250aW51ZSB0byB0aGUgbmV4
dCBzb3J0S2V5Ci0gICAgICAgIHZhciBjb21wYXJlVmFsdWUgPSBFbWJlci5jb21wYXJlKHByb3BB
LCBwcm9wQik7Ci0gICAgICAgIGlmIChjb21wYXJlVmFsdWUpIHsgcmV0dXJuIGNvbXBhcmVWYWx1
ZTsgfQotICAgICAgfQotICAgICAgcmV0dXJuIDA7Ci0gICAgfSk7Ci0gIH0KLX0pOwotCi19KSgp
OwotCi0KLQotKGZ1bmN0aW9uKCkgewotLyoqCi1AbW9kdWxlIGVtYmVyCi1Ac3VibW9kdWxlIGVt
YmVyLXJ1bnRpbWUKLSovCi0KLS8vIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLS8vIEhFTFBFUlMKLS8vCi0KLXZhciBnZXQgPSBFbWJl
ci5nZXQsIHNldCA9IEVtYmVyLnNldCwgaXNOb25lID0gRW1iZXIuaXNOb25lLCBtYXAgPSBFbWJl
ci5FbnVtZXJhYmxlVXRpbHMubWFwLCBjYWNoZUZvciA9IEVtYmVyLmNhY2hlRm9yOwotCi0vLyAu
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Ci0vLyBBUlJBWQotLy8KLS8qKgotICBUaGlzIG1vZHVsZSBpbXBsZW1lbnRzIE9ic2VydmVyLWZy
aWVuZGx5IEFycmF5LWxpa2UgYmVoYXZpb3IuIFRoaXMgbWl4aW4gaXMKLSAgcGlja2VkIHVwIGJ5
IHRoZSBBcnJheSBjbGFzcyBhcyB3ZWxsIGFzIG90aGVyIGNvbnRyb2xsZXJzLCBldGMuIHRoYXQg
d2FudCB0bwotICBhcHBlYXIgdG8gYmUgYXJyYXlzLgotCi0gIFVubGlrZSBgRW1iZXIuRW51bWVy
YWJsZSxgIHRoaXMgbWl4aW4gZGVmaW5lcyBtZXRob2RzIHNwZWNpZmljYWxseSBmb3IKLSAgY29s
bGVjdGlvbnMgdGhhdCBwcm92aWRlIGluZGV4LW9yZGVyZWQgYWNjZXNzIHRvIHRoZWlyIGNvbnRl
bnRzLiBXaGVuIHlvdQotICBhcmUgZGVzaWduaW5nIGNvZGUgdGhhdCBuZWVkcyB0byBhY2NlcHQg
YW55IGtpbmQgb2YgQXJyYXktbGlrZSBvYmplY3QsIHlvdQotICBzaG91bGQgdXNlIHRoZXNlIG1l
dGhvZHMgaW5zdGVhZCBvZiBBcnJheSBwcmltaXRpdmVzIGJlY2F1c2UgdGhlc2Ugd2lsbAotICBw
cm9wZXJseSBub3RpZnkgb2JzZXJ2ZXJzIG9mIGNoYW5nZXMgdG8gdGhlIGFycmF5LgotCi0gIEFs
dGhvdWdoIHRoZXNlIG1ldGhvZHMgYXJlIGVmZmljaWVudCwgdGhleSBkbyBhZGQgYSBsYXllciBv
ZiBpbmRpcmVjdGlvbiB0bwotICB5b3VyIGFwcGxpY2F0aW9uIHNvIGl0IGlzIGEgZ29vZCBpZGVh
IHRvIHVzZSB0aGVtIG9ubHkgd2hlbiB5b3UgbmVlZCB0aGUKLSAgZmxleGliaWxpdHkgb2YgdXNp
bmcgYm90aCB0cnVlIEphdmFTY3JpcHQgYXJyYXlzIGFuZCAidmlydHVhbCIgYXJyYXlzIHN1Y2gK
LSAgYXMgY29udHJvbGxlcnMgYW5kIGNvbGxlY3Rpb25zLgotCi0gIFlvdSBjYW4gdXNlIHRoZSBt
ZXRob2RzIGRlZmluZWQgaW4gdGhpcyBtb2R1bGUgdG8gYWNjZXNzIGFuZCBtb2RpZnkgYXJyYXkK
LSAgY29udGVudHMgaW4gYSBLVk8tZnJpZW5kbHkgd2F5LiBZb3UgY2FuIGFsc28gYmUgbm90aWZp
ZWQgd2hlbmV2ZXIgdGhlCi0gIG1lbWJlcnNoaXAgb2YgYW4gYXJyYXkgY2hhbmdlcyBieSBjaGFu
Z2luZyB0aGUgc3ludGF4IG9mIHRoZSBwcm9wZXJ0eSB0bwotICBgLm9ic2VydmVzKCcqbXlQcm9w
ZXJ0eS5bXScpYC4KLQotICBUbyBzdXBwb3J0IGBFbWJlci5BcnJheWAgaW4geW91ciBvd24gY2xh
c3MsIHlvdSBtdXN0IG92ZXJyaWRlIHR3bwotICBwcmltaXRpdmVzIHRvIHVzZSBpdDogYHJlcGxh
Y2UoKWAgYW5kIGBvYmplY3RBdCgpYC4KLQotICBOb3RlIHRoYXQgdGhlIEVtYmVyLkFycmF5IG1p
eGluIGFsc28gaW5jb3Jwb3JhdGVzIHRoZSBgRW1iZXIuRW51bWVyYWJsZWAKLSAgbWl4aW4uIEFs
bCBgRW1iZXIuQXJyYXlgLWxpa2Ugb2JqZWN0cyBhcmUgYWxzbyBlbnVtZXJhYmxlLgotCi0gIEBj
bGFzcyBBcnJheQotICBAbmFtZXNwYWNlIEVtYmVyCi0gIEB1c2VzIEVtYmVyLkVudW1lcmFibGUK
LSAgQHNpbmNlIEVtYmVyIDAuOS4wCi0qLwotRW1iZXIuQXJyYXkgPSBFbWJlci5NaXhpbi5jcmVh
dGUoRW1iZXIuRW51bWVyYWJsZSwgewotCi0gIC8qKgotICAgIFlvdXIgYXJyYXkgbXVzdCBzdXBw
b3J0IHRoZSBgbGVuZ3RoYCBwcm9wZXJ0eS4gWW91ciByZXBsYWNlIG1ldGhvZHMgc2hvdWxkCi0g
ICAgc2V0IHRoaXMgcHJvcGVydHkgd2hlbmV2ZXIgaXQgY2hhbmdlcy4KLQotICAgIEBwcm9wZXJ0
eSB7TnVtYmVyfSBsZW5ndGgKLSAgKi8KLSAgbGVuZ3RoOiBFbWJlci5yZXF1aXJlZCgpLAotCi0g
IC8qKgotICAgIFJldHVybnMgdGhlIG9iamVjdCBhdCB0aGUgZ2l2ZW4gYGluZGV4YC4gSWYgdGhl
IGdpdmVuIGBpbmRleGAgaXMgbmVnYXRpdmUKLSAgICBvciBpcyBncmVhdGVyIG9yIGVxdWFsIHRo
YW4gdGhlIGFycmF5IGxlbmd0aCwgcmV0dXJucyBgdW5kZWZpbmVkYC4KLQotICAgIFRoaXMgaXMg
b25lIG9mIHRoZSBwcmltaXRpdmVzIHlvdSBtdXN0IGltcGxlbWVudCB0byBzdXBwb3J0IGBFbWJl
ci5BcnJheWAuCi0gICAgSWYgeW91ciBvYmplY3Qgc3VwcG9ydHMgcmV0cmlldmluZyB0aGUgdmFs
dWUgb2YgYW4gYXJyYXkgaXRlbSB1c2luZyBgZ2V0KClgCi0gICAgKGkuZS4gYG15QXJyYXkuZ2V0
KDApYCksIHRoZW4geW91IGRvIG5vdCBuZWVkIHRvIGltcGxlbWVudCB0aGlzIG1ldGhvZAotICAg
IHlvdXJzZWxmLgotCi0gICAgYGBgamF2YXNjcmlwdAotICAgIHZhciBhcnIgPSBbJ2EnLCAnYics
ICdjJywgJ2QnXTsKLSAgICBhcnIub2JqZWN0QXQoMCk7ICAgLy8gImEiCi0gICAgYXJyLm9iamVj
dEF0KDMpOyAgIC8vICJkIgotICAgIGFyci5vYmplY3RBdCgtMSk7ICAvLyB1bmRlZmluZWQKLSAg
ICBhcnIub2JqZWN0QXQoNCk7ICAgLy8gdW5kZWZpbmVkCi0gICAgYXJyLm9iamVjdEF0KDUpOyAg
IC8vIHVuZGVmaW5lZAotICAgIGBgYAotCi0gICAgQG1ldGhvZCBvYmplY3RBdAotICAgIEBwYXJh
bSB7TnVtYmVyfSBpZHggVGhlIGluZGV4IG9mIHRoZSBpdGVtIHRvIHJldHVybi4KLSAgICBAcmV0
dXJuIHsqfSBpdGVtIGF0IGluZGV4IG9yIHVuZGVmaW5lZAotICAqLwotICBvYmplY3RBdDogZnVu
Y3Rpb24oaWR4KSB7Ci0gICAgaWYgKChpZHggPCAwKSB8fCAoaWR4Pj1nZXQodGhpcywgJ2xlbmd0
aCcpKSkgcmV0dXJuIHVuZGVmaW5lZCA7Ci0gICAgcmV0dXJuIGdldCh0aGlzLCBpZHgpOwotICB9
LAotCi0gIC8qKgotICAgIFRoaXMgcmV0dXJucyB0aGUgb2JqZWN0cyBhdCB0aGUgc3BlY2lmaWVk
IGluZGV4ZXMsIHVzaW5nIGBvYmplY3RBdGAuCi0KLSAgICBgYGBqYXZhc2NyaXB0Ci0gICAgdmFy
IGFyciA9wqBbJ2EnLCAnYicsICdjJywgJ2QnXTsKLSAgICBhcnIub2JqZWN0c0F0KFswLCAxLCAy
XSk7ICAvLyBbImEiLCAiYiIsICJjIl0KLSAgICBhcnIub2JqZWN0c0F0KFsyLCAzLCA0XSk7ICAv
LyBbImMiLCAiZCIsIHVuZGVmaW5lZF0KLSAgICBgYGAKLQotICAgIEBtZXRob2Qgb2JqZWN0c0F0
Ci0gICAgQHBhcmFtIHtBcnJheX0gaW5kZXhlcyBBbiBhcnJheSBvZiBpbmRleGVzIG9mIGl0ZW1z
IHRvIHJldHVybi4KLSAgICBAcmV0dXJuIHtBcnJheX0KLSAgICovCi0gIG9iamVjdHNBdDogZnVu
Y3Rpb24oaW5kZXhlcykgewotICAgIHZhciBzZWxmID0gdGhpczsKLSAgICByZXR1cm4gbWFwKGlu
ZGV4ZXMsIGZ1bmN0aW9uKGlkeCkgeyByZXR1cm4gc2VsZi5vYmplY3RBdChpZHgpOyB9KTsKLSAg
fSwKLQotICAvLyBvdmVycmlkZXMgRW1iZXIuRW51bWVyYWJsZSB2ZXJzaW9uCi0gIG5leHRPYmpl
Y3Q6IGZ1bmN0aW9uKGlkeCkgewotICAgIHJldHVybiB0aGlzLm9iamVjdEF0KGlkeCk7Ci0gIH0s
Ci0KLSAgLyoqCi0gICAgVGhpcyBpcyB0aGUgaGFuZGxlciBmb3IgdGhlIHNwZWNpYWwgYXJyYXkg
Y29udGVudCBwcm9wZXJ0eS4gSWYgeW91IGdldAotICAgIHRoaXMgcHJvcGVydHksIGl0IHdpbGwg
cmV0dXJuIHRoaXMuIElmIHlvdSBzZXQgdGhpcyBwcm9wZXJ0eSBpdCBhIG5ldwotICAgIGFycmF5
LCBpdCB3aWxsIHJlcGxhY2UgdGhlIGN1cnJlbnQgY29udGVudC4KLQotICAgIFRoaXMgcHJvcGVy
dHkgb3ZlcnJpZGVzIHRoZSBkZWZhdWx0IHByb3BlcnR5IGRlZmluZWQgaW4gYEVtYmVyLkVudW1l
cmFibGVgLgotCi0gICAgQHByb3BlcnR5IFtdCi0gICAgQHJldHVybiB0aGlzCi0gICovCi0gICdb
XSc6IEVtYmVyLmNvbXB1dGVkKGZ1bmN0aW9uKGtleSwgdmFsdWUpIHsKLSAgICBpZiAodmFsdWUg
IT09IHVuZGVmaW5lZCkgdGhpcy5yZXBsYWNlKDAsIGdldCh0aGlzLCAnbGVuZ3RoJyksIHZhbHVl
KSA7Ci0gICAgcmV0dXJuIHRoaXMgOwotICB9KSwKLQotICBmaXJzdE9iamVjdDogRW1iZXIuY29t
cHV0ZWQoZnVuY3Rpb24oKSB7Ci0gICAgcmV0dXJuIHRoaXMub2JqZWN0QXQoMCk7Ci0gIH0pLAot
Ci0gIGxhc3RPYmplY3Q6IEVtYmVyLmNvbXB1dGVkKGZ1bmN0aW9uKCkgewotICAgIHJldHVybiB0
aGlzLm9iamVjdEF0KGdldCh0aGlzLCAnbGVuZ3RoJyktMSk7Ci0gIH0pLAotCi0gIC8vIG9wdGlt
aXplZCB2ZXJzaW9uIGZyb20gRW51bWVyYWJsZQotICBjb250YWluczogZnVuY3Rpb24ob2JqKSB7
Ci0gICAgcmV0dXJuIHRoaXMuaW5kZXhPZihvYmopID49IDA7Ci0gIH0sCi0KLSAgLy8gQWRkIGFu
eSBleHRyYSBtZXRob2RzIHRvIEVtYmVyLkFycmF5IHRoYXQgYXJlIG5hdGl2ZSB0byB0aGUgYnVp
bHQtaW4gQXJyYXkuCi0gIC8qKgotICAgIFJldHVybnMgYSBuZXcgYXJyYXkgdGhhdCBpcyBhIHNs
aWNlIG9mIHRoZSByZWNlaXZlci4gVGhpcyBpbXBsZW1lbnRhdGlvbgotICAgIHVzZXMgdGhlIG9i
c2VydmFibGUgYXJyYXkgbWV0aG9kcyB0byByZXRyaWV2ZSB0aGUgb2JqZWN0cyBmb3IgdGhlIG5l
dwotICAgIHNsaWNlLgotCi0gICAgYGBgamF2YXNjcmlwdAotICAgIHZhciBhcnIgPSBbJ3JlZCcs
ICdncmVlbicsICdibHVlJ107Ci0gICAgYXJyLnNsaWNlKDApOyAgICAgICAvLyBbJ3JlZCcsICdn
cmVlbicsICdibHVlJ10KLSAgICBhcnIuc2xpY2UoMCwgMik7ICAgIC8vIFsncmVkJywgJ2dyZWVu
J10KLSAgICBhcnIuc2xpY2UoMSwgMTAwKTsgIC8vIFsnZ3JlZW4nLCAnYmx1ZSddCi0gICAgYGBg
Ci0KLSAgICBAbWV0aG9kIHNsaWNlCi0gICAgQHBhcmFtIHtJbnRlZ2VyfSBiZWdpbkluZGV4IChP
cHRpb25hbCkgaW5kZXggdG8gYmVnaW4gc2xpY2luZyBmcm9tLgotICAgIEBwYXJhbSB7SW50ZWdl
cn0gZW5kSW5kZXggKE9wdGlvbmFsKSBpbmRleCB0byBlbmQgdGhlIHNsaWNlIGF0LgotICAgIEBy
ZXR1cm4ge0FycmF5fSBOZXcgYXJyYXkgd2l0aCBzcGVjaWZpZWQgc2xpY2UKLSAgKi8KLSAgc2xp
Y2U6IGZ1bmN0aW9uKGJlZ2luSW5kZXgsIGVuZEluZGV4KSB7Ci0gICAgdmFyIHJldCA9IEVtYmVy
LkEoKTsKLSAgICB2YXIgbGVuZ3RoID0gZ2V0KHRoaXMsICdsZW5ndGgnKSA7Ci0gICAgaWYgKGlz
Tm9uZShiZWdpbkluZGV4KSkgYmVnaW5JbmRleCA9IDAgOwotICAgIGlmIChpc05vbmUoZW5kSW5k
ZXgpIHx8IChlbmRJbmRleCA+IGxlbmd0aCkpIGVuZEluZGV4ID0gbGVuZ3RoIDsKLQotICAgIGlm
IChiZWdpbkluZGV4IDwgMCkgYmVnaW5JbmRleCA9IGxlbmd0aCArIGJlZ2luSW5kZXg7Ci0gICAg
aWYgKGVuZEluZGV4IDwgMCkgZW5kSW5kZXggPSBsZW5ndGggKyBlbmRJbmRleDsKLQotICAgIHdo
aWxlKGJlZ2luSW5kZXggPCBlbmRJbmRleCkgewotICAgICAgcmV0W3JldC5sZW5ndGhdID0gdGhp
cy5vYmplY3RBdChiZWdpbkluZGV4KyspIDsKLSAgICB9Ci0gICAgcmV0dXJuIHJldCA7Ci0gIH0s
Ci0KLSAgLyoqCi0gICAgUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGdpdmVuIG9iamVjdCdzIGZp
cnN0IG9jY3VycmVuY2UuCi0gICAgSWYgbm8gYHN0YXJ0QXRgIGFyZ3VtZW50IGlzIGdpdmVuLCB0
aGUgc3RhcnRpbmcgbG9jYXRpb24gdG8KLSAgICBzZWFyY2ggaXMgMC4gSWYgaXQncyBuZWdhdGl2
ZSwgd2lsbCBjb3VudCBiYWNrd2FyZCBmcm9tCi0gICAgdGhlIGVuZCBvZiB0aGUgYXJyYXkuIFJl
dHVybnMgLTEgaWYgbm8gbWF0Y2ggaXMgZm91bmQuCi0KLSAgICBgYGBqYXZhc2NyaXB0Ci0gICAg
dmFyIGFyciA9IFsiYSIsICJiIiwgImMiLCAiZCIsICJhIl07Ci0gICAgYXJyLmluZGV4T2YoImEi
KTsgICAgICAgLy8gIDAKLSAgICBhcnIuaW5kZXhPZigieiIpOyAgICAgICAvLyAtMQotICAgIGFy
ci5pbmRleE9mKCJhIiwgMik7ICAgIC8vICA0Ci0gICAgYXJyLmluZGV4T2YoImEiLCAtMSk7ICAg
Ly8gIDQKLSAgICBhcnIuaW5kZXhPZigiYiIsIDMpOyAgICAvLyAtMQotICAgIGFyci5pbmRleE9m
KCJhIiwgMTAwKTsgIC8vIC0xCi0gICAgYGBgCi0KLSAgICBAbWV0aG9kIGluZGV4T2YKLSAgICBA
cGFyYW0ge09iamVjdH0gb2JqZWN0IHRoZSBpdGVtIHRvIHNlYXJjaCBmb3IKLSAgICBAcGFyYW0g
e051bWJlcn0gc3RhcnRBdCBvcHRpb25hbCBzdGFydGluZyBsb2NhdGlvbiB0byBzZWFyY2gsIGRl
ZmF1bHQgMAotICAgIEByZXR1cm4ge051bWJlcn0gaW5kZXggb3IgLTEgaWYgbm90IGZvdW5kCi0g
ICovCi0gIGluZGV4T2Y6IGZ1bmN0aW9uKG9iamVjdCwgc3RhcnRBdCkgewotICAgIHZhciBpZHgs
IGxlbiA9IGdldCh0aGlzLCAnbGVuZ3RoJyk7Ci0KLSAgICBpZiAoc3RhcnRBdCA9PT0gdW5kZWZp
bmVkKSBzdGFydEF0ID0gMDsKLSAgICBpZiAoc3RhcnRBdCA8IDApIHN0YXJ0QXQgKz0gbGVuOwot
Ci0gICAgZm9yKGlkeD1zdGFydEF0O2lkeDxsZW47aWR4KyspIHsKLSAgICAgIGlmICh0aGlzLm9i
amVjdEF0KGlkeCkgPT09IG9iamVjdCkgcmV0dXJuIGlkeCA7Ci0gICAgfQotICAgIHJldHVybiAt
MTsKLSAgfSwKLQotICAvKioKLSAgICBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgZ2l2ZW4gb2Jq
ZWN0J3MgbGFzdCBvY2N1cnJlbmNlLgotICAgIElmIG5vIGBzdGFydEF0YCBhcmd1bWVudCBpcyBn
aXZlbiwgdGhlIHNlYXJjaCBzdGFydHMgZnJvbQotICAgIHRoZSBsYXN0IHBvc2l0aW9uLiBJZiBp
dCdzIG5lZ2F0aXZlLCB3aWxsIGNvdW50IGJhY2t3YXJkCi0gICAgZnJvbSB0aGUgZW5kIG9mIHRo
ZSBhcnJheS4gUmV0dXJucyAtMSBpZiBubyBtYXRjaCBpcyBmb3VuZC4KLQotICAgIGBgYGphdmFz
Y3JpcHQKLSAgICB2YXIgYXJyID0gWyJhIiwgImIiLCAiYyIsICJkIiwgImEiXTsKLSAgICBhcnIu
bGFzdEluZGV4T2YoImEiKTsgICAgICAgLy8gIDQKLSAgICBhcnIubGFzdEluZGV4T2YoInoiKTsg
ICAgICAgLy8gLTEKLSAgICBhcnIubGFzdEluZGV4T2YoImEiLCAyKTsgICAgLy8gIDAKLSAgICBh
cnIubGFzdEluZGV4T2YoImEiLCAtMSk7ICAgLy8gIDQKLSAgICBhcnIubGFzdEluZGV4T2YoImIi
LCAzKTsgICAgLy8gIDEKLSAgICBhcnIubGFzdEluZGV4T2YoImEiLCAxMDApOyAgLy8gIDQKLSAg
ICBgYGAKLQotICAgIEBtZXRob2QgbGFzdEluZGV4T2YKLSAgICBAcGFyYW0ge09iamVjdH0gb2Jq
ZWN0IHRoZSBpdGVtIHRvIHNlYXJjaCBmb3IKLSAgICBAcGFyYW0ge051bWJlcn0gc3RhcnRBdCBv
cHRpb25hbCBzdGFydGluZyBsb2NhdGlvbiB0byBzZWFyY2gsIGRlZmF1bHQgMAotICAgIEByZXR1
cm4ge051bWJlcn0gaW5kZXggb3IgLTEgaWYgbm90IGZvdW5kCi0gICovCi0gIGxhc3RJbmRleE9m
OiBmdW5jdGlvbihvYmplY3QsIHN0YXJ0QXQpIHsKLSAgICB2YXIgaWR4LCBsZW4gPSBnZXQodGhp
cywgJ2xlbmd0aCcpOwotCi0gICAgaWYgKHN0YXJ0QXQgPT09IHVuZGVmaW5lZCB8fCBzdGFydEF0
ID49IGxlbikgc3RhcnRBdCA9IGxlbi0xOwotICAgIGlmIChzdGFydEF0IDwgMCkgc3RhcnRBdCAr
PSBsZW47Ci0KLSAgICBmb3IoaWR4PXN0YXJ0QXQ7aWR4Pj0wO2lkeC0tKSB7Ci0gICAgICBpZiAo
dGhpcy5vYmplY3RBdChpZHgpID09PSBvYmplY3QpIHJldHVybiBpZHggOwotICAgIH0KLSAgICBy
ZXR1cm4gLTE7Ci0gIH0sCi0KLSAgLy8gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgotICAvLyBBUlJBWSBPQlNFUlZFUlMKLSAgLy8KLQot
ICAvKioKLSAgICBBZGRzIGFuIGFycmF5IG9ic2VydmVyIHRvIHRoZSByZWNlaXZpbmcgYXJyYXku
IFRoZSBhcnJheSBvYnNlcnZlciBvYmplY3QKLSAgICBub3JtYWxseSBtdXN0IGltcGxlbWVudCB0
d28gbWV0aG9kczoKLQotICAgICogYGFycmF5V2lsbENoYW5nZShvYnNlcnZlZE9iaiwgc3RhcnQs
IHJlbW92ZUNvdW50LCBhZGRDb3VudClgIC0gVGhpcyBtZXRob2Qgd2lsbCBiZQotICAgICAgY2Fs
bGVkIGp1c3QgYmVmb3JlIHRoZSBhcnJheSBpcyBtb2RpZmllZC4KLSAgICAqIGBhcnJheURpZENo
YW5nZShvYnNlcnZlZE9iaiwgc3RhcnQsIHJlbW92ZUNvdW50LCBhZGRDb3VudClgIC0gVGhpcyBt
ZXRob2Qgd2lsbCBiZQotICAgICAgY2FsbGVkIGp1c3QgYWZ0ZXIgdGhlIGFycmF5IGlzIG1vZGlm
aWVkLgotCi0gICAgQm90aCBjYWxsYmFja3Mgd2lsbCBiZSBwYXNzZWQgdGhlIG9ic2VydmVkIG9i
amVjdCwgc3RhcnRpbmcgaW5kZXggb2YgdGhlCi0gICAgY2hhbmdlIGFzIHdlbGwgYSBhIGNvdW50
IG9mIHRoZSBpdGVtcyB0byBiZSByZW1vdmVkIGFuZCBhZGRlZC4gWW91IGNhbiB1c2UKLSAgICB0
aGVzZSBjYWxsYmFja3MgdG8gb3B0aW9uYWxseSBpbnNwZWN0IHRoZSBhcnJheSBkdXJpbmcgdGhl
IGNoYW5nZSwgY2xlYXIKLSAgICBjYWNoZXMsIG9yIGRvIGFueSBvdGhlciBib29ra2VlcGluZyBu
ZWNlc3NhcnkuCi0KLSAgICBJbiBhZGRpdGlvbiB0byBwYXNzaW5nIGEgdGFyZ2V0LCB5b3UgY2Fu
IGFsc28gaW5jbHVkZSBhbiBvcHRpb25zIGhhc2gKLSAgICB3aGljaCB5b3UgY2FuIHVzZSB0byBv
dmVycmlkZSB0aGUgbWV0aG9kIG5hbWVzIHRoYXQgd2lsbCBiZSBpbnZva2VkIG9uIHRoZQotICAg
IHRhcmdldC4KLQotICAgIEBtZXRob2QgYWRkQXJyYXlPYnNlcnZlcgotICAgIEBwYXJhbSB7T2Jq
ZWN0fSB0YXJnZXQgVGhlIG9ic2VydmVyIG9iamVjdC4KLSAgICBAcGFyYW0ge0hhc2h9IG9wdHMg
T3B0aW9uYWwgaGFzaCBvZiBjb25maWd1cmF0aW9uIG9wdGlvbnMgaW5jbHVkaW5nCi0gICAgICBg
d2lsbENoYW5nZWAgYW5kIGBkaWRDaGFuZ2VgIG9wdGlvbi4KLSAgICBAcmV0dXJuIHtFbWJlci5B
cnJheX0gcmVjZWl2ZXIKLSAgKi8KLSAgYWRkQXJyYXlPYnNlcnZlcjogZnVuY3Rpb24odGFyZ2V0
LCBvcHRzKSB7Ci0gICAgdmFyIHdpbGxDaGFuZ2UgPSAob3B0cyAmJiBvcHRzLndpbGxDaGFuZ2Up
IHx8ICdhcnJheVdpbGxDaGFuZ2UnLAotICAgICAgICBkaWRDaGFuZ2UgID0gKG9wdHMgJiYgb3B0
cy5kaWRDaGFuZ2UpIHx8ICdhcnJheURpZENoYW5nZSc7Ci0KLSAgICB2YXIgaGFzT2JzZXJ2ZXJz
ID0gZ2V0KHRoaXMsICdoYXNBcnJheU9ic2VydmVycycpOwotICAgIGlmICghaGFzT2JzZXJ2ZXJz
KSBFbWJlci5wcm9wZXJ0eVdpbGxDaGFuZ2UodGhpcywgJ2hhc0FycmF5T2JzZXJ2ZXJzJyk7Ci0g
ICAgRW1iZXIuYWRkTGlzdGVuZXIodGhpcywgJ0BhcnJheTpiZWZvcmUnLCB0YXJnZXQsIHdpbGxD
aGFuZ2UpOwotICAgIEVtYmVyLmFkZExpc3RlbmVyKHRoaXMsICdAYXJyYXk6Y2hhbmdlJywgdGFy
Z2V0LCBkaWRDaGFuZ2UpOwotICAgIGlmICghaGFzT2JzZXJ2ZXJzKSBFbWJlci5wcm9wZXJ0eURp
ZENoYW5nZSh0aGlzLCAnaGFzQXJyYXlPYnNlcnZlcnMnKTsKLSAgICByZXR1cm4gdGhpczsKLSAg
fSwKLQotICAvKioKLSAgICBSZW1vdmVzIGFuIGFycmF5IG9ic2VydmVyIGZyb20gdGhlIG9iamVj
dCBpZiB0aGUgb2JzZXJ2ZXIgaXMgY3VycmVudAotICAgIHJlZ2lzdGVyZWQuIENhbGxpbmcgdGhp
cyBtZXRob2QgbXVsdGlwbGUgdGltZXMgd2l0aCB0aGUgc2FtZSBvYmplY3Qgd2lsbAotICAgIGhh
dmUgbm8gZWZmZWN0LgotCi0gICAgQG1ldGhvZCByZW1vdmVBcnJheU9ic2VydmVyCi0gICAgQHBh
cmFtIHtPYmplY3R9IHRhcmdldCBUaGUgb2JqZWN0IG9ic2VydmluZyB0aGUgYXJyYXkuCi0gICAg
QHBhcmFtIHtIYXNofSBvcHRzIE9wdGlvbmFsIGhhc2ggb2YgY29uZmlndXJhdGlvbiBvcHRpb25z
IGluY2x1ZGluZwotICAgICAgYHdpbGxDaGFuZ2VgIGFuZCBgZGlkQ2hhbmdlYCBvcHRpb24uCi0g
ICAgQHJldHVybiB7RW1iZXIuQXJyYXl9IHJlY2VpdmVyCi0gICovCi0gIHJlbW92ZUFycmF5T2Jz
ZXJ2ZXI6IGZ1bmN0aW9uKHRhcmdldCwgb3B0cykgewotICAgIHZhciB3aWxsQ2hhbmdlID0gKG9w
dHMgJiYgb3B0cy53aWxsQ2hhbmdlKSB8fCAnYXJyYXlXaWxsQ2hhbmdlJywKLSAgICAgICAgZGlk
Q2hhbmdlICA9IChvcHRzICYmIG9wdHMuZGlkQ2hhbmdlKSB8fCAnYXJyYXlEaWRDaGFuZ2UnOwot
Ci0gICAgdmFyIGhhc09ic2VydmVycyA9IGdldCh0aGlzLCAnaGFzQXJyYXlPYnNlcnZlcnMnKTsK
LSAgICBpZiAoaGFzT2JzZXJ2ZXJzKSBFbWJlci5wcm9wZXJ0eVdpbGxDaGFuZ2UodGhpcywgJ2hh
c0FycmF5T2JzZXJ2ZXJzJyk7Ci0gICAgRW1iZXIucmVtb3ZlTGlzdGVuZXIodGhpcywgJ0BhcnJh
eTpiZWZvcmUnLCB0YXJnZXQsIHdpbGxDaGFuZ2UpOwotICAgIEVtYmVyLnJlbW92ZUxpc3RlbmVy
KHRoaXMsICdAYXJyYXk6Y2hhbmdlJywgdGFyZ2V0LCBkaWRDaGFuZ2UpOwotICAgIGlmIChoYXNP
YnNlcnZlcnMpIEVtYmVyLnByb3BlcnR5RGlkQ2hhbmdlKHRoaXMsICdoYXNBcnJheU9ic2VydmVy
cycpOwotICAgIHJldHVybiB0aGlzOwotICB9LAotCi0gIC8qKgotICAgIEJlY29tZXMgdHJ1ZSB3
aGVuZXZlciB0aGUgYXJyYXkgY3VycmVudGx5IGhhcyBvYnNlcnZlcnMgd2F0Y2hpbmcgY2hhbmdl
cwotICAgIG9uIHRoZSBhcnJheS4KLQotICAgIEBwcm9wZXJ0eSBCb29sZWFuCi0gICovCi0gIGhh
c0FycmF5T2JzZXJ2ZXJzOiBFbWJlci5jb21wdXRlZChmdW5jdGlvbigpIHsKLSAgICByZXR1cm4g
RW1iZXIuaGFzTGlzdGVuZXJzKHRoaXMsICdAYXJyYXk6Y2hhbmdlJykgfHwgRW1iZXIuaGFzTGlz
dGVuZXJzKHRoaXMsICdAYXJyYXk6YmVmb3JlJyk7Ci0gIH0pLAotCi0gIC8qKgotICAgIElmIHlv
dSBhcmUgaW1wbGVtZW50aW5nIGFuIG9iamVjdCB0aGF0IHN1cHBvcnRzIGBFbWJlci5BcnJheWAs
IGNhbGwgdGhpcwotICAgIG1ldGhvZCBqdXN0IGJlZm9yZSB0aGUgYXJyYXkgY29udGVudCBjaGFu
Z2VzIHRvIG5vdGlmeSBhbnkgb2JzZXJ2ZXJzIGFuZAotICAgIGludmFsaWRhdGUgYW55IHJlbGF0
ZWQgcHJvcGVydGllcy4gUGFzcyB0aGUgc3RhcnRpbmcgaW5kZXggb2YgdGhlIGNoYW5nZQotICAg
IGFzIHdlbGwgYXMgYSBkZWx0YSBvZiB0aGUgYW1vdW50cyB0byBjaGFuZ2UuCi0KLSAgICBAbWV0
aG9kIGFycmF5Q29udGVudFdpbGxDaGFuZ2UKLSAgICBAcGFyYW0ge051bWJlcn0gc3RhcnRJZHgg
VGhlIHN0YXJ0aW5nIGluZGV4IGluIHRoZSBhcnJheSB0aGF0IHdpbGwgY2hhbmdlLgotICAgIEBw
YXJhbSB7TnVtYmVyfSByZW1vdmVBbXQgVGhlIG51bWJlciBvZiBpdGVtcyB0aGF0IHdpbGwgYmUg
cmVtb3ZlZC4gSWYgeW91Ci0gICAgICBwYXNzIGBudWxsYCBhc3N1bWVzIDAKLSAgICBAcGFyYW0g
e051bWJlcn0gYWRkQW10IFRoZSBudW1iZXIgb2YgaXRlbXMgdGhhdCB3aWxsIGJlIGFkZGVkLiBJ
ZiB5b3UKLSAgICAgIHBhc3MgYG51bGxgIGFzc3VtZXMgMC4KLSAgICBAcmV0dXJuIHtFbWJlci5B
cnJheX0gcmVjZWl2ZXIKLSAgKi8KLSAgYXJyYXlDb250ZW50V2lsbENoYW5nZTogZnVuY3Rpb24o
c3RhcnRJZHgsIHJlbW92ZUFtdCwgYWRkQW10KSB7Ci0KLSAgICAvLyBpZiBubyBhcmdzIGFyZSBw
YXNzZWQgYXNzdW1lIGV2ZXJ5dGhpbmcgY2hhbmdlcwotICAgIGlmIChzdGFydElkeD09PXVuZGVm
aW5lZCkgewotICAgICAgc3RhcnRJZHggPSAwOwotICAgICAgcmVtb3ZlQW10ID0gYWRkQW10ID0g
LTE7Ci0gICAgfSBlbHNlIHsKLSAgICAgIGlmIChyZW1vdmVBbXQgPT09IHVuZGVmaW5lZCkgcmVt
b3ZlQW10PS0xOwotICAgICAgaWYgKGFkZEFtdCAgICA9PT0gdW5kZWZpbmVkKSBhZGRBbXQ9LTE7
Ci0gICAgfQotCi0gICAgLy8gTWFrZSBzdXJlIHRoZSBAZWFjaCBwcm94eSBpcyBzZXQgdXAgaWYg
YW55b25lIGlzIG9ic2VydmluZyBAZWFjaAotICAgIGlmIChFbWJlci5pc1dhdGNoaW5nKHRoaXMs
ICdAZWFjaCcpKSB7IGdldCh0aGlzLCAnQGVhY2gnKTsgfQotCi0gICAgRW1iZXIuc2VuZEV2ZW50
KHRoaXMsICdAYXJyYXk6YmVmb3JlJywgW3RoaXMsIHN0YXJ0SWR4LCByZW1vdmVBbXQsIGFkZEFt
dF0pOwotCi0gICAgdmFyIHJlbW92aW5nLCBsaW07Ci0gICAgaWYgKHN0YXJ0SWR4Pj0wICYmIHJl
bW92ZUFtdD49MCAmJiBnZXQodGhpcywgJ2hhc0VudW1lcmFibGVPYnNlcnZlcnMnKSkgewotICAg
ICAgcmVtb3ZpbmcgPSBbXTsKLSAgICAgIGxpbSA9IHN0YXJ0SWR4K3JlbW92ZUFtdDsKLSAgICAg
IGZvcih2YXIgaWR4PXN0YXJ0SWR4O2lkeDxsaW07aWR4KyspIHJlbW92aW5nLnB1c2godGhpcy5v
YmplY3RBdChpZHgpKTsKLSAgICB9IGVsc2UgewotICAgICAgcmVtb3ZpbmcgPSByZW1vdmVBbXQ7
Ci0gICAgfQotCi0gICAgdGhpcy5lbnVtZXJhYmxlQ29udGVudFdpbGxDaGFuZ2UocmVtb3Zpbmcs
IGFkZEFtdCk7Ci0KLSAgICByZXR1cm4gdGhpczsKLSAgfSwKLQotICAvKioKLSAgICBJZiB5b3Ug
YXJlIGltcGxlbWVudGluZyBhbiBvYmplY3QgdGhhdCBzdXBwb3J0cyBgRW1iZXIuQXJyYXlgLCBj
YWxsIHRoaXMKLSAgICBtZXRob2QganVzdCBhZnRlciB0aGUgYXJyYXkgY29udGVudCBjaGFuZ2Vz
IHRvIG5vdGlmeSBhbnkgb2JzZXJ2ZXJzIGFuZAotICAgIGludmFsaWRhdGUgYW55IHJlbGF0ZWQg
cHJvcGVydGllcy4gUGFzcyB0aGUgc3RhcnRpbmcgaW5kZXggb2YgdGhlIGNoYW5nZQotICAgIGFz
IHdlbGwgYXMgYSBkZWx0YSBvZiB0aGUgYW1vdW50cyB0byBjaGFuZ2UuCi0KLSAgICBAbWV0aG9k
IGFycmF5Q29udGVudERpZENoYW5nZQotICAgIEBwYXJhbSB7TnVtYmVyfSBzdGFydElkeCBUaGUg
c3RhcnRpbmcgaW5kZXggaW4gdGhlIGFycmF5IHRoYXQgZGlkIGNoYW5nZS4KLSAgICBAcGFyYW0g
e051bWJlcn0gcmVtb3ZlQW10IFRoZSBudW1iZXIgb2YgaXRlbXMgdGhhdCB3ZXJlIHJlbW92ZWQu
IElmIHlvdQotICAgICAgcGFzcyBgbnVsbGAgYXNzdW1lcyAwCi0gICAgQHBhcmFtIHtOdW1iZXJ9
IGFkZEFtdCBUaGUgbnVtYmVyIG9mIGl0ZW1zIHRoYXQgd2VyZSBhZGRlZC4gSWYgeW91Ci0gICAg
ICBwYXNzIGBudWxsYCBhc3N1bWVzIDAuCi0gICAgQHJldHVybiB7RW1iZXIuQXJyYXl9IHJlY2Vp
dmVyCi0gICovCi0gIGFycmF5Q29udGVudERpZENoYW5nZTogZnVuY3Rpb24oc3RhcnRJZHgsIHJl
bW92ZUFtdCwgYWRkQW10KSB7Ci0KLSAgICAvLyBpZiBubyBhcmdzIGFyZSBwYXNzZWQgYXNzdW1l
IGV2ZXJ5dGhpbmcgY2hhbmdlcwotICAgIGlmIChzdGFydElkeD09PXVuZGVmaW5lZCkgewotICAg
ICAgc3RhcnRJZHggPSAwOwotICAgICAgcmVtb3ZlQW10ID0gYWRkQW10ID0gLTE7Ci0gICAgfSBl
bHNlIHsKLSAgICAgIGlmIChyZW1vdmVBbXQgPT09IHVuZGVmaW5lZCkgcmVtb3ZlQW10PS0xOwot
ICAgICAgaWYgKGFkZEFtdCAgICA9PT0gdW5kZWZpbmVkKSBhZGRBbXQ9LTE7Ci0gICAgfQotCi0g
ICAgdmFyIGFkZGluZywgbGltOwotICAgIGlmIChzdGFydElkeD49MCAmJiBhZGRBbXQ+PTAgJiYg
Z2V0KHRoaXMsICdoYXNFbnVtZXJhYmxlT2JzZXJ2ZXJzJykpIHsKLSAgICAgIGFkZGluZyA9IFtd
OwotICAgICAgbGltID0gc3RhcnRJZHgrYWRkQW10OwotICAgICAgZm9yKHZhciBpZHg9c3RhcnRJ
ZHg7aWR4PGxpbTtpZHgrKykgYWRkaW5nLnB1c2godGhpcy5vYmplY3RBdChpZHgpKTsKLSAgICB9
IGVsc2UgewotICAgICAgYWRkaW5nID0gYWRkQW10OwotICAgIH0KLQotICAgIHRoaXMuZW51bWVy
YWJsZUNvbnRlbnREaWRDaGFuZ2UocmVtb3ZlQW10LCBhZGRpbmcpOwotICAgIEVtYmVyLnNlbmRF
dmVudCh0aGlzLCAnQGFycmF5OmNoYW5nZScsIFt0aGlzLCBzdGFydElkeCwgcmVtb3ZlQW10LCBh
ZGRBbXRdKTsKLQotICAgIHZhciBsZW5ndGggICAgICA9IGdldCh0aGlzLCAnbGVuZ3RoJyksCi0g
ICAgICAgIGNhY2hlZEZpcnN0ID0gY2FjaGVGb3IodGhpcywgJ2ZpcnN0T2JqZWN0JyksCi0gICAg
ICAgIGNhY2hlZExhc3QgID0gY2FjaGVGb3IodGhpcywgJ2xhc3RPYmplY3QnKTsKLSAgICBpZiAo
dGhpcy5vYmplY3RBdCgwKSAhPT0gY2FjaGVkRmlyc3QpIHsKLSAgICAgIEVtYmVyLnByb3BlcnR5
V2lsbENoYW5nZSh0aGlzLCAnZmlyc3RPYmplY3QnKTsKLSAgICAgIEVtYmVyLnByb3BlcnR5RGlk
Q2hhbmdlKHRoaXMsICdmaXJzdE9iamVjdCcpOwotICAgIH0KLSAgICBpZiAodGhpcy5vYmplY3RB
dChsZW5ndGgtMSkgIT09IGNhY2hlZExhc3QpIHsKLSAgICAgIEVtYmVyLnByb3BlcnR5V2lsbENo
YW5nZSh0aGlzLCAnbGFzdE9iamVjdCcpOwotICAgICAgRW1iZXIucHJvcGVydHlEaWRDaGFuZ2Uo
dGhpcywgJ2xhc3RPYmplY3QnKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdGhpczsKLSAgfSwKLQot
ICAvLyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uCi0gIC8vIEVOVU1FUkFURUQgUFJPUEVSVElFUwotICAvLwotCi0gIC8qKgotICAgIFJl
dHVybnMgYSBzcGVjaWFsIG9iamVjdCB0aGF0IGNhbiBiZSB1c2VkIHRvIG9ic2VydmUgaW5kaXZp
ZHVhbCBwcm9wZXJ0aWVzCi0gICAgb24gdGhlIGFycmF5LiBKdXN0IGdldCBhbiBlcXVpdmFsZW50
IHByb3BlcnR5IG9uIHRoaXMgb2JqZWN0IGFuZCBpdCB3aWxsCi0gICAgcmV0dXJuIGFuIGVudW1l
cmFibGUgdGhhdCBtYXBzIGF1dG9tYXRpY2FsbHkgdG8gdGhlIG5hbWVkIGtleSBvbiB0aGUKLSAg
ICBtZW1iZXIgb2JqZWN0cy4KLQotICAgIElmIHlvdSBtZXJlbHkgd2FudCB0byB3YXRjaCBmb3Ig
YW55IGl0ZW1zIGJlaW5nIGFkZGVkIG9yIHJlbW92ZWQgdG8gdGhlIGFycmF5LAotICAgIHVzZSB0
aGUgYFtdYCBwcm9wZXJ0eSBpbnN0ZWFkIG9mIGBAZWFjaGAuCi0KLSAgICBAcHJvcGVydHkgQGVh
Y2gKLSAgKi8KLSAgJ0BlYWNoJzogRW1iZXIuY29tcHV0ZWQoZnVuY3Rpb24oKSB7Ci0gICAgaWYg
KCF0aGlzLl9fZWFjaCkgdGhpcy5fX2VhY2ggPSBuZXcgRW1iZXIuRWFjaFByb3h5KHRoaXMpOwot
ICAgIHJldHVybiB0aGlzLl9fZWFjaDsKLSAgfSkKLQotfSkgOwotCi19KSgpOwotCi0KLQotKGZ1
bmN0aW9uKCkgewotdmFyIGVfZ2V0ID0gRW1iZXIuZ2V0LAotICAgIHNldCA9IEVtYmVyLnNldCwK
LSAgICBndWlkRm9yID0gRW1iZXIuZ3VpZEZvciwKLSAgICBtZXRhRm9yID0gRW1iZXIubWV0YSwK
LSAgICBwcm9wZXJ0eVdpbGxDaGFuZ2UgPSBFbWJlci5wcm9wZXJ0eVdpbGxDaGFuZ2UsCi0gICAg
cHJvcGVydHlEaWRDaGFuZ2UgPSBFbWJlci5wcm9wZXJ0eURpZENoYW5nZSwKLSAgICBhZGRCZWZv
cmVPYnNlcnZlciA9IEVtYmVyLmFkZEJlZm9yZU9ic2VydmVyLAotICAgIHJlbW92ZUJlZm9yZU9i
c2VydmVyID0gRW1iZXIucmVtb3ZlQmVmb3JlT2JzZXJ2ZXIsCi0gICAgYWRkT2JzZXJ2ZXIgPSBF
bWJlci5hZGRPYnNlcnZlciwKLSAgICByZW1vdmVPYnNlcnZlciA9IEVtYmVyLnJlbW92ZU9ic2Vy
dmVyLAotICAgIENvbXB1dGVkUHJvcGVydHkgPSBFbWJlci5Db21wdXRlZFByb3BlcnR5LAotICAg
IGFfc2xpY2UgPSBbXS5zbGljZSwKLSAgICBvX2NyZWF0ZSA9IEVtYmVyLmNyZWF0ZSwKLSAgICBm
b3JFYWNoID0gRW1iZXIuRW51bWVyYWJsZVV0aWxzLmZvckVhY2gsCi0gICAgLy8gSGVyZSB3ZSBl
eHBsaWNpdGx5IGRvbid0IGFsbG93IGBAZWFjaC5mb29gOyBpdCB3b3VsZCByZXF1aXJlIHNvbWUg
c3BlY2lhbAotICAgIC8vIHRlc3RpbmcsIGJ1dCB0aGVyZSdzIG5vIHBhcnRpY3VsYXIgcmVhc29u
IHdoeSBpdCBzaG91bGQgYmUgZGlzYWxsb3dlZC4KLSAgICBlYWNoUHJvcGVydHlQYXR0ZXJuID0g
L14oLiopXC5AZWFjaFwuKC4qKS8sCi0gICAgZG91YmxlRWFjaFByb3BlcnR5UGF0dGVybiA9IC8o
LipcLkBlYWNoKXsyLH0vLAotICAgIGFycmF5QnJhY2tldFBhdHRlcm4gPSAvXC5cW1xdJC87Ci0K
LQotZnVuY3Rpb24gZ2V0KG9iaiwga2V5KSB7Ci0gIGlmIChrZXkgPT09ICdAdGhpcycpIHsKLSAg
ICByZXR1cm4gb2JqOwotICB9Ci0KLSAgcmV0dXJuIGVfZ2V0KG9iaiwga2V5KTsKLX0KLQotLyoK
LSAgVHJhY2tzIGNoYW5nZXMgdG8gZGVwZW5kZW50IGFycmF5cywgYXMgd2VsbCBhcyB0byBwcm9w
ZXJ0aWVzIG9mIGl0ZW1zIGluCi0gIGRlcGVuZGVudCBhcnJheXMuCi0KLSAgQGNsYXNzIERlcGVu
ZGVudEFycmF5c09ic2VydmVyCi0qLwotZnVuY3Rpb24gRGVwZW5kZW50QXJyYXlzT2JzZXJ2ZXIo
Y2FsbGJhY2tzLCBjcCwgaW5zdGFuY2VNZXRhLCBjb250ZXh0LCBwcm9wZXJ0eU5hbWUsIHN1Z2Fy
TWV0YSkgewotICAvLyB1c2VyIHNwZWNpZmllZCBjYWxsYmFja3MgZm9yIGBhZGRlZEl0ZW1gIGFu
ZCBgcmVtb3ZlZEl0ZW1gCi0gIHRoaXMuY2FsbGJhY2tzID0gY2FsbGJhY2tzOwotCi0gIC8vIHRo
ZSBjb21wdXRlZCBwcm9wZXJ0eTogcmVtZW1iZXIgdGhlc2UgYXJlIHNoYXJlZCBhY3Jvc3MgaW5z
dGFuY2VzCi0gIHRoaXMuY3AgPSBjcDsKLQotICAvLyB0aGUgUmVkdWNlQ29tcHV0ZWRQcm9wZXJ0
eUluc3RhbmNlTWV0YSB0aGlzIERlcGVuZGVudEFycmF5c09ic2VydmVyIGlzCi0gIC8vIGFzc29j
aWF0ZWQgd2l0aAotICB0aGlzLmluc3RhbmNlTWV0YSA9IGluc3RhbmNlTWV0YTsKLQotICAvLyBB
IG1hcCBvZiBhcnJheSBndWlkcyB0byBkZXBlbmRlbnRLZXlzLCBmb3IgdGhlIGdpdmVuIGNvbnRl
eHQuICBXZSB0cmFjawotICAvLyB0aGlzIGJlY2F1c2Ugd2Ugd2FudCB0byBzZXQgdXAgdGhlIGNv
bXB1dGVkIHByb3BlcnR5IHBvdGVudGlhbGx5IGJlZm9yZSB0aGUKLSAgLy8gZGVwZW5kZW50IGFy
cmF5IGV2ZW4gZXhpc3RzLCBidXQgd2hlbiB0aGUgYXJyYXkgb2JzZXJ2ZXIgZmlyZXMsIHdlIGxh
Y2sKLSAgLy8gZW5vdWdoIGNvbnRleHQgdG8ga25vdyB3aGF0IHRvIHVwZGF0ZTogd2UgY2FuIHJl
Y292ZXIgdGhhdCBjb250ZXh0IGJ5Ci0gIC8vIGdldHRpbmcgdGhlIGRlcGVuZGVudEtleS4KLSAg
dGhpcy5kZXBlbmRlbnRLZXlzQnlHdWlkID0ge307Ci0KLSAgLy8gYSBtYXAgb2YgZGVwZW5kZW50
IGFycmF5IGd1aWRzIC0+IEVtYmVyLlRyYWNrZWRBcnJheSBpbnN0YW5jZXMuICBXZSB1c2UKLSAg
Ly8gdGhpcyB0byBsYXppbHkgcmVjb21wdXRlIGluZGV4ZXMgZm9yIGl0ZW0gcHJvcGVydHkgb2Jz
ZXJ2ZXJzLgotICB0aGlzLnRyYWNrZWRBcnJheXNCeUd1aWQgPSB7fTsKLQotICAvLyBXZSBzdXNw
ZW5kIG9ic2VydmVycyB0byBpZ25vcmUgcmVwbGFjZW1lbnRzIGZyb20gYHJlc2V0YCB3aGVuIHRv
dGFsbHkKLSAgLy8gcmVjb21wdXRpbmcuICBVbmZvcnR1bmF0ZWx5IHdlIGNhbm5vdCBwcm9wZXJs
eSBzdXNwZW5kIHRoZSBvYnNlcnZlcnMKLSAgLy8gYmVjYXVzZSB3ZSBvbmx5IGhhdmUgdGhlIGtl
eTsgaW5zdGVhZCB3ZSBtYWtlIHRoZSBvYnNlcnZlcnMgbm8tb3BzCi0gIHRoaXMuc3VzcGVuZGVk
ID0gZmFsc2U7Ci0KLSAgLy8gVGhpcyBpcyB1c2VkIHRvIGNvYWxlc2NlIGl0ZW0gY2hhbmdlcyBm
cm9tIHByb3BlcnR5IG9ic2VydmVycy4KLSAgdGhpcy5jaGFuZ2VkSXRlbXMgPSB7fTsKLX0KLQot
ZnVuY3Rpb24gSXRlbVByb3BlcnR5T2JzZXJ2ZXJDb250ZXh0IChkZXBlbmRlbnRBcnJheSwgaW5k
ZXgsIHRyYWNrZWRBcnJheSkgewotICBFbWJlci5hc3NlcnQoIkludGVybmFsIGVycm9yOiB0cmFj
a2VkQXJyYXkgaXMgbnVsbCBvciB1bmRlZmluZWQiLCB0cmFja2VkQXJyYXkpOwotCi0gIHRoaXMu
ZGVwZW5kZW50QXJyYXkgPSBkZXBlbmRlbnRBcnJheTsKLSAgdGhpcy5pbmRleCA9IGluZGV4Owot
ICB0aGlzLml0ZW0gPSBkZXBlbmRlbnRBcnJheS5vYmplY3RBdChpbmRleCk7Ci0gIHRoaXMudHJh
Y2tlZEFycmF5ID0gdHJhY2tlZEFycmF5OwotICB0aGlzLmJlZm9yZU9ic2VydmVyID0gbnVsbDsK
LSAgdGhpcy5vYnNlcnZlciA9IG51bGw7Ci0KLSAgdGhpcy5kZXN0cm95ZWQgPSBmYWxzZTsKLX0K
LQotRGVwZW5kZW50QXJyYXlzT2JzZXJ2ZXIucHJvdG90eXBlID0gewotICBzZXRWYWx1ZTogZnVu
Y3Rpb24gKG5ld1ZhbHVlKSB7Ci0gICAgdGhpcy5pbnN0YW5jZU1ldGEuc2V0VmFsdWUobmV3VmFs
dWUsIHRydWUpOwotICB9LAotICBnZXRWYWx1ZTogZnVuY3Rpb24gKCkgewotICAgIHJldHVybiB0
aGlzLmluc3RhbmNlTWV0YS5nZXRWYWx1ZSgpOwotICB9LAotCi0gIHNldHVwT2JzZXJ2ZXJzOiBm
dW5jdGlvbiAoZGVwZW5kZW50QXJyYXksIGRlcGVuZGVudEtleSkgewotICAgIEVtYmVyLmFzc2Vy
dCgiZGVwZW5kZW50IGFycmF5IG11c3QgYmUgYW4gYEVtYmVyLkFycmF5YCIsIEVtYmVyLkFycmF5
LmRldGVjdChkZXBlbmRlbnRBcnJheSkpOwotCi0gICAgdGhpcy5kZXBlbmRlbnRLZXlzQnlHdWlk
W2d1aWRGb3IoZGVwZW5kZW50QXJyYXkpXSA9IGRlcGVuZGVudEtleTsKLQotICAgIGRlcGVuZGVu
dEFycmF5LmFkZEFycmF5T2JzZXJ2ZXIodGhpcywgewotICAgICAgd2lsbENoYW5nZTogJ2RlcGVu
ZGVudEFycmF5V2lsbENoYW5nZScsCi0gICAgICBkaWRDaGFuZ2U6ICdkZXBlbmRlbnRBcnJheURp
ZENoYW5nZScKLSAgICB9KTsKLQotICAgIGlmICh0aGlzLmNwLl9pdGVtUHJvcGVydHlLZXlzW2Rl
cGVuZGVudEtleV0pIHsKLSAgICAgIHRoaXMuc2V0dXBQcm9wZXJ0eU9ic2VydmVycyhkZXBlbmRl
bnRLZXksIHRoaXMuY3AuX2l0ZW1Qcm9wZXJ0eUtleXNbZGVwZW5kZW50S2V5XSk7Ci0gICAgfQot
ICB9LAotCi0gIHRlYXJkb3duT2JzZXJ2ZXJzOiBmdW5jdGlvbiAoZGVwZW5kZW50QXJyYXksIGRl
cGVuZGVudEtleSkgewotICAgIHZhciBpdGVtUHJvcGVydHlLZXlzID0gdGhpcy5jcC5faXRlbVBy
b3BlcnR5S2V5c1tkZXBlbmRlbnRLZXldIHx8IFtdOwotCi0gICAgZGVsZXRlIHRoaXMuZGVwZW5k
ZW50S2V5c0J5R3VpZFtndWlkRm9yKGRlcGVuZGVudEFycmF5KV07Ci0KLSAgICB0aGlzLnRlYXJk
b3duUHJvcGVydHlPYnNlcnZlcnMoZGVwZW5kZW50S2V5LCBpdGVtUHJvcGVydHlLZXlzKTsKLQot
ICAgIGRlcGVuZGVudEFycmF5LnJlbW92ZUFycmF5T2JzZXJ2ZXIodGhpcywgewotICAgICAgd2ls
bENoYW5nZTogJ2RlcGVuZGVudEFycmF5V2lsbENoYW5nZScsCi0gICAgICBkaWRDaGFuZ2U6ICdk
ZXBlbmRlbnRBcnJheURpZENoYW5nZScKLSAgICB9KTsKLSAgfSwKLQotICBzdXNwZW5kQXJyYXlP
YnNlcnZlcnM6IGZ1bmN0aW9uIChjYWxsYmFjaywgYmluZGluZykgewotICAgIHZhciBvbGRTdXNw
ZW5kZWQgPSB0aGlzLnN1c3BlbmRlZDsKLSAgICB0aGlzLnN1c3BlbmRlZCA9IHRydWU7Ci0gICAg
Y2FsbGJhY2suY2FsbChiaW5kaW5nKTsKLSAgICB0aGlzLnN1c3BlbmRlZCA9IG9sZFN1c3BlbmRl
ZDsKLSAgfSwKLQotICBzZXR1cFByb3BlcnR5T2JzZXJ2ZXJzOiBmdW5jdGlvbiAoZGVwZW5kZW50
S2V5LCBpdGVtUHJvcGVydHlLZXlzKSB7Ci0gICAgdmFyIGRlcGVuZGVudEFycmF5ID0gZ2V0KHRo
aXMuaW5zdGFuY2VNZXRhLmNvbnRleHQsIGRlcGVuZGVudEtleSksCi0gICAgICAgIGxlbmd0aCA9
IGdldChkZXBlbmRlbnRBcnJheSwgJ2xlbmd0aCcpLAotICAgICAgICBvYnNlcnZlckNvbnRleHRz
ID0gbmV3IEFycmF5KGxlbmd0aCk7Ci0KLSAgICB0aGlzLnJlc2V0VHJhbnNmb3JtYXRpb25zKGRl
cGVuZGVudEtleSwgb2JzZXJ2ZXJDb250ZXh0cyk7Ci0KLSAgICBmb3JFYWNoKGRlcGVuZGVudEFy
cmF5LCBmdW5jdGlvbiAoaXRlbSwgaW5kZXgpIHsKLSAgICAgIHZhciBvYnNlcnZlckNvbnRleHQg
PSB0aGlzLmNyZWF0ZVByb3BlcnR5T2JzZXJ2ZXJDb250ZXh0KGRlcGVuZGVudEFycmF5LCBpbmRl
eCwgdGhpcy50cmFja2VkQXJyYXlzQnlHdWlkW2RlcGVuZGVudEtleV0pOwotICAgICAgb2JzZXJ2
ZXJDb250ZXh0c1tpbmRleF0gPSBvYnNlcnZlckNvbnRleHQ7Ci0KLSAgICAgIGZvckVhY2goaXRl
bVByb3BlcnR5S2V5cywgZnVuY3Rpb24gKHByb3BlcnR5S2V5KSB7Ci0gICAgICAgIGFkZEJlZm9y
ZU9ic2VydmVyKGl0ZW0sIHByb3BlcnR5S2V5LCB0aGlzLCBvYnNlcnZlckNvbnRleHQuYmVmb3Jl
T2JzZXJ2ZXIpOwotICAgICAgICBhZGRPYnNlcnZlcihpdGVtLCBwcm9wZXJ0eUtleSwgdGhpcywg
b2JzZXJ2ZXJDb250ZXh0Lm9ic2VydmVyKTsKLSAgICAgIH0sIHRoaXMpOwotICAgIH0sIHRoaXMp
OwotICB9LAotCi0gIHRlYXJkb3duUHJvcGVydHlPYnNlcnZlcnM6IGZ1bmN0aW9uIChkZXBlbmRl
bnRLZXksIGl0ZW1Qcm9wZXJ0eUtleXMpIHsKLSAgICB2YXIgZGVwZW5kZW50QXJyYXlPYnNlcnZl
ciA9IHRoaXMsCi0gICAgICAgIHRyYWNrZWRBcnJheSA9IHRoaXMudHJhY2tlZEFycmF5c0J5R3Vp
ZFtkZXBlbmRlbnRLZXldLAotICAgICAgICBiZWZvcmVPYnNlcnZlciwKLSAgICAgICAgb2JzZXJ2
ZXIsCi0gICAgICAgIGl0ZW07Ci0KLSAgICBpZiAoIXRyYWNrZWRBcnJheSkgeyByZXR1cm47IH0K
LQotICAgIHRyYWNrZWRBcnJheS5hcHBseShmdW5jdGlvbiAob2JzZXJ2ZXJDb250ZXh0cywgb2Zm
c2V0LCBvcGVyYXRpb24pIHsKLSAgICAgIGlmIChvcGVyYXRpb24gPT09IEVtYmVyLlRyYWNrZWRB
cnJheS5ERUxFVEUpIHsgcmV0dXJuOyB9Ci0KLSAgICAgIGZvckVhY2gob2JzZXJ2ZXJDb250ZXh0
cywgZnVuY3Rpb24gKG9ic2VydmVyQ29udGV4dCkgewotICAgICAgICBvYnNlcnZlckNvbnRleHQu
ZGVzdHJveWVkID0gdHJ1ZTsKLSAgICAgICAgYmVmb3JlT2JzZXJ2ZXIgPSBvYnNlcnZlckNvbnRl
eHQuYmVmb3JlT2JzZXJ2ZXI7Ci0gICAgICAgIG9ic2VydmVyID0gb2JzZXJ2ZXJDb250ZXh0Lm9i
c2VydmVyOwotICAgICAgICBpdGVtID0gb2JzZXJ2ZXJDb250ZXh0Lml0ZW07Ci0KLSAgICAgICAg
Zm9yRWFjaChpdGVtUHJvcGVydHlLZXlzLCBmdW5jdGlvbiAocHJvcGVydHlLZXkpIHsKLSAgICAg
ICAgICByZW1vdmVCZWZvcmVPYnNlcnZlcihpdGVtLCBwcm9wZXJ0eUtleSwgZGVwZW5kZW50QXJy
YXlPYnNlcnZlciwgYmVmb3JlT2JzZXJ2ZXIpOwotICAgICAgICAgIHJlbW92ZU9ic2VydmVyKGl0
ZW0sIHByb3BlcnR5S2V5LCBkZXBlbmRlbnRBcnJheU9ic2VydmVyLCBvYnNlcnZlcik7Ci0gICAg
ICAgIH0pOwotICAgICAgfSk7Ci0gICAgfSk7Ci0gIH0sCi0KLSAgY3JlYXRlUHJvcGVydHlPYnNl
cnZlckNvbnRleHQ6IGZ1bmN0aW9uIChkZXBlbmRlbnRBcnJheSwgaW5kZXgsIHRyYWNrZWRBcnJh
eSkgewotICAgIHZhciBvYnNlcnZlckNvbnRleHQgPSBuZXcgSXRlbVByb3BlcnR5T2JzZXJ2ZXJD
b250ZXh0KGRlcGVuZGVudEFycmF5LCBpbmRleCwgdHJhY2tlZEFycmF5KTsKLQotICAgIHRoaXMu
Y3JlYXRlUHJvcGVydHlPYnNlcnZlcihvYnNlcnZlckNvbnRleHQpOwotCi0gICAgcmV0dXJuIG9i
c2VydmVyQ29udGV4dDsKLSAgfSwKLQotICBjcmVhdGVQcm9wZXJ0eU9ic2VydmVyOiBmdW5jdGlv
biAob2JzZXJ2ZXJDb250ZXh0KSB7Ci0gICAgdmFyIGRlcGVuZGVudEFycmF5T2JzZXJ2ZXIgPSB0
aGlzOwotCi0gICAgb2JzZXJ2ZXJDb250ZXh0LmJlZm9yZU9ic2VydmVyID0gZnVuY3Rpb24gKG9i
aiwga2V5TmFtZSkgewotICAgICAgcmV0dXJuIGRlcGVuZGVudEFycmF5T2JzZXJ2ZXIuaXRlbVBy
b3BlcnR5V2lsbENoYW5nZShvYmosIGtleU5hbWUsIG9ic2VydmVyQ29udGV4dC5kZXBlbmRlbnRB
cnJheSwgb2JzZXJ2ZXJDb250ZXh0KTsKLSAgICB9OwotICAgIG9ic2VydmVyQ29udGV4dC5vYnNl
cnZlciA9IGZ1bmN0aW9uIChvYmosIGtleU5hbWUpIHsKLSAgICAgIHJldHVybiBkZXBlbmRlbnRB
cnJheU9ic2VydmVyLml0ZW1Qcm9wZXJ0eURpZENoYW5nZShvYmosIGtleU5hbWUsIG9ic2VydmVy
Q29udGV4dC5kZXBlbmRlbnRBcnJheSwgb2JzZXJ2ZXJDb250ZXh0KTsKLSAgICB9OwotICB9LAot
Ci0gIHJlc2V0VHJhbnNmb3JtYXRpb25zOiBmdW5jdGlvbiAoZGVwZW5kZW50S2V5LCBvYnNlcnZl
ckNvbnRleHRzKSB7Ci0gICAgdGhpcy50cmFja2VkQXJyYXlzQnlHdWlkW2RlcGVuZGVudEtleV0g
PSBuZXcgRW1iZXIuVHJhY2tlZEFycmF5KG9ic2VydmVyQ29udGV4dHMpOwotICB9LAotCi0gIHRy
YWNrQWRkOiBmdW5jdGlvbiAoZGVwZW5kZW50S2V5LCBpbmRleCwgbmV3SXRlbXMpIHsKLSAgICB2
YXIgdHJhY2tlZEFycmF5ID0gdGhpcy50cmFja2VkQXJyYXlzQnlHdWlkW2RlcGVuZGVudEtleV07
Ci0gICAgaWYgKHRyYWNrZWRBcnJheSkgewotICAgICAgdHJhY2tlZEFycmF5LmFkZEl0ZW1zKGlu
ZGV4LCBuZXdJdGVtcyk7Ci0gICAgfQotICB9LAotCi0gIHRyYWNrUmVtb3ZlOiBmdW5jdGlvbiAo
ZGVwZW5kZW50S2V5LCBpbmRleCwgcmVtb3ZlZENvdW50KSB7Ci0gICAgdmFyIHRyYWNrZWRBcnJh
eSA9IHRoaXMudHJhY2tlZEFycmF5c0J5R3VpZFtkZXBlbmRlbnRLZXldOwotCi0gICAgaWYgKHRy
YWNrZWRBcnJheSkgewotICAgICAgcmV0dXJuIHRyYWNrZWRBcnJheS5yZW1vdmVJdGVtcyhpbmRl
eCwgcmVtb3ZlZENvdW50KTsKLSAgICB9Ci0KLSAgICByZXR1cm4gW107Ci0gIH0sCi0KLSAgdXBk
YXRlSW5kZXhlczogZnVuY3Rpb24gKHRyYWNrZWRBcnJheSwgYXJyYXkpIHsKLSAgICB2YXIgbGVu
Z3RoID0gZ2V0KGFycmF5LCAnbGVuZ3RoJyk7Ci0gICAgLy8gT1BUSU1JWkU6IHdlIGNvdWxkIHN0
b3AgdXBkYXRpbmcgb25jZSB3ZSBoaXQgdGhlIG9iamVjdCB3aG9zZSBvYnNlcnZlcgotICAgIC8v
IGZpcmVkOyBpZSBwYXJ0aWFsbHkgYXBwbHkgdGhlIHRyYW5zZm9ybWF0aW9ucwotICAgIHRyYWNr
ZWRBcnJheS5hcHBseShmdW5jdGlvbiAob2JzZXJ2ZXJDb250ZXh0cywgb2Zmc2V0LCBvcGVyYXRp
b24pIHsKLSAgICAgIC8vIHdlIGRvbid0IGV2ZW4gaGF2ZSBvYnNlcnZlciBjb250ZXh0cyBmb3Ig
cmVtb3ZlZCBpdGVtcywgZXZlbiBpZiB3ZSBkaWQsCi0gICAgICAvLyB0aGV5IG5vIGxvbmdlciBo
YXZlIGFueSBpbmRleCBpbiB0aGUgYXJyYXkKLSAgICAgIGlmIChvcGVyYXRpb24gPT09IEVtYmVy
LlRyYWNrZWRBcnJheS5ERUxFVEUpIHsgcmV0dXJuOyB9Ci0gICAgICBpZiAob3BlcmF0aW9uID09
PSBFbWJlci5UcmFja2VkQXJyYXkuUkVUQUlOICYmIG9ic2VydmVyQ29udGV4dHMubGVuZ3RoID09
PSBsZW5ndGggJiYgb2Zmc2V0ID09PSAwKSB7Ci0gICAgICAgIC8vIElmIHdlIHVwZGF0ZSBtYW55
IGl0ZW1zIHdlIGRvbid0IHdhbnQgdG8gd2FsayB0aGUgYXJyYXkgZWFjaCB0aW1lOiB3ZQotICAg
ICAgICAvLyBvbmx5IG5lZWQgdG8gdXBkYXRlIHRoZSBpbmRleGVzIGF0IG1vc3Qgb25jZSBwZXIg
cnVuIGxvb3AuCi0gICAgICAgIHJldHVybjsKLSAgICAgIH0KLQotICAgICAgZm9yRWFjaChvYnNl
cnZlckNvbnRleHRzLCBmdW5jdGlvbiAoY29udGV4dCwgaW5kZXgpIHsKLSAgICAgICAgY29udGV4
dC5pbmRleCA9IGluZGV4ICsgb2Zmc2V0OwotICAgICAgfSk7Ci0gICAgfSk7Ci0gIH0sCi0KLSAg
ZGVwZW5kZW50QXJyYXlXaWxsQ2hhbmdlOiBmdW5jdGlvbiAoZGVwZW5kZW50QXJyYXksIGluZGV4
LCByZW1vdmVkQ291bnQsIGFkZGVkQ291bnQpIHsKLSAgICBpZiAodGhpcy5zdXNwZW5kZWQpIHsg
cmV0dXJuOyB9Ci0KLSAgICB2YXIgcmVtb3ZlZEl0ZW0gPSB0aGlzLmNhbGxiYWNrcy5yZW1vdmVk
SXRlbSwKLSAgICAgICAgY2hhbmdlTWV0YSwKLSAgICAgICAgZ3VpZCA9IGd1aWRGb3IoZGVwZW5k
ZW50QXJyYXkpLAotICAgICAgICBkZXBlbmRlbnRLZXkgPSB0aGlzLmRlcGVuZGVudEtleXNCeUd1
aWRbZ3VpZF0sCi0gICAgICAgIGl0ZW1Qcm9wZXJ0eUtleXMgPSB0aGlzLmNwLl9pdGVtUHJvcGVy
dHlLZXlzW2RlcGVuZGVudEtleV0gfHwgW10sCi0gICAgICAgIGxlbmd0aCA9IGdldChkZXBlbmRl
bnRBcnJheSwgJ2xlbmd0aCcpLAotICAgICAgICBub3JtYWxpemVkSW5kZXggPSBub3JtYWxpemVJ
bmRleChpbmRleCwgbGVuZ3RoLCAwKSwKLSAgICAgICAgbm9ybWFsaXplZFJlbW92ZUNvdW50ID0g
bm9ybWFsaXplUmVtb3ZlQ291bnQobm9ybWFsaXplZEluZGV4LCBsZW5ndGgsIHJlbW92ZWRDb3Vu
dCksCi0gICAgICAgIGl0ZW0sCi0gICAgICAgIGl0ZW1JbmRleCwKLSAgICAgICAgc2xpY2VJbmRl
eCwKLSAgICAgICAgb2JzZXJ2ZXJDb250ZXh0czsKLQotICAgIG9ic2VydmVyQ29udGV4dHMgPSB0
aGlzLnRyYWNrUmVtb3ZlKGRlcGVuZGVudEtleSwgbm9ybWFsaXplZEluZGV4LCBub3JtYWxpemVk
UmVtb3ZlQ291bnQpOwotCi0gICAgZnVuY3Rpb24gcmVtb3ZlT2JzZXJ2ZXJzKHByb3BlcnR5S2V5
KSB7Ci0gICAgICBvYnNlcnZlckNvbnRleHRzW3NsaWNlSW5kZXhdLmRlc3Ryb3llZCA9IHRydWU7
Ci0gICAgICByZW1vdmVCZWZvcmVPYnNlcnZlcihpdGVtLCBwcm9wZXJ0eUtleSwgdGhpcywgb2Jz
ZXJ2ZXJDb250ZXh0c1tzbGljZUluZGV4XS5iZWZvcmVPYnNlcnZlcik7Ci0gICAgICByZW1vdmVP
YnNlcnZlcihpdGVtLCBwcm9wZXJ0eUtleSwgdGhpcywgb2JzZXJ2ZXJDb250ZXh0c1tzbGljZUlu
ZGV4XS5vYnNlcnZlcik7Ci0gICAgfQotCi0gICAgZm9yIChzbGljZUluZGV4ID0gbm9ybWFsaXpl
ZFJlbW92ZUNvdW50IC0gMTsgc2xpY2VJbmRleCA+PSAwOyAtLXNsaWNlSW5kZXgpIHsKLSAgICAg
IGl0ZW1JbmRleCA9IG5vcm1hbGl6ZWRJbmRleCArIHNsaWNlSW5kZXg7Ci0gICAgICBpZiAoaXRl
bUluZGV4ID49IGxlbmd0aCkgeyBicmVhazsgfQotCi0gICAgICBpdGVtID0gZGVwZW5kZW50QXJy
YXkub2JqZWN0QXQoaXRlbUluZGV4KTsKLQotICAgICAgZm9yRWFjaChpdGVtUHJvcGVydHlLZXlz
LCByZW1vdmVPYnNlcnZlcnMsIHRoaXMpOwotCi0gICAgICBjaGFuZ2VNZXRhID0gY3JlYXRlQ2hh
bmdlTWV0YShkZXBlbmRlbnRBcnJheSwgaXRlbSwgaXRlbUluZGV4LCB0aGlzLmluc3RhbmNlTWV0
YS5wcm9wZXJ0eU5hbWUsIHRoaXMuY3ApOwotICAgICAgdGhpcy5zZXRWYWx1ZSggcmVtb3ZlZEl0
ZW0uY2FsbCgKLSAgICAgICAgdGhpcy5pbnN0YW5jZU1ldGEuY29udGV4dCwgdGhpcy5nZXRWYWx1
ZSgpLCBpdGVtLCBjaGFuZ2VNZXRhLCB0aGlzLmluc3RhbmNlTWV0YS5zdWdhck1ldGEpKTsKLSAg
ICB9Ci0gIH0sCi0KLSAgZGVwZW5kZW50QXJyYXlEaWRDaGFuZ2U6IGZ1bmN0aW9uIChkZXBlbmRl
bnRBcnJheSwgaW5kZXgsIHJlbW92ZWRDb3VudCwgYWRkZWRDb3VudCkgewotICAgIGlmICh0aGlz
LnN1c3BlbmRlZCkgeyByZXR1cm47IH0KLQotICAgIHZhciBhZGRlZEl0ZW0gPSB0aGlzLmNhbGxi
YWNrcy5hZGRlZEl0ZW0sCi0gICAgICAgIGd1aWQgPSBndWlkRm9yKGRlcGVuZGVudEFycmF5KSwK
LSAgICAgICAgZGVwZW5kZW50S2V5ID0gdGhpcy5kZXBlbmRlbnRLZXlzQnlHdWlkW2d1aWRdLAot
ICAgICAgICBvYnNlcnZlckNvbnRleHRzID0gbmV3IEFycmF5KGFkZGVkQ291bnQpLAotICAgICAg
ICBpdGVtUHJvcGVydHlLZXlzID0gdGhpcy5jcC5faXRlbVByb3BlcnR5S2V5c1tkZXBlbmRlbnRL
ZXldLAotICAgICAgICBsZW5ndGggPSBnZXQoZGVwZW5kZW50QXJyYXksICdsZW5ndGgnKSwKLSAg
ICAgICAgbm9ybWFsaXplZEluZGV4ID0gbm9ybWFsaXplSW5kZXgoaW5kZXgsIGxlbmd0aCwgYWRk
ZWRDb3VudCksCi0gICAgICAgIGNoYW5nZU1ldGEsCi0gICAgICAgIG9ic2VydmVyQ29udGV4dDsK
LQotICAgIGZvckVhY2goZGVwZW5kZW50QXJyYXkuc2xpY2Uobm9ybWFsaXplZEluZGV4LCBub3Jt
YWxpemVkSW5kZXggKyBhZGRlZENvdW50KSwgZnVuY3Rpb24gKGl0ZW0sIHNsaWNlSW5kZXgpIHsK
LSAgICAgIGlmIChpdGVtUHJvcGVydHlLZXlzKSB7Ci0gICAgICAgIG9ic2VydmVyQ29udGV4dCA9
Ci0gICAgICAgICAgb2JzZXJ2ZXJDb250ZXh0c1tzbGljZUluZGV4XSA9Ci0gICAgICAgICAgdGhp
cy5jcmVhdGVQcm9wZXJ0eU9ic2VydmVyQ29udGV4dChkZXBlbmRlbnRBcnJheSwgbm9ybWFsaXpl
ZEluZGV4ICsgc2xpY2VJbmRleCwgdGhpcy50cmFja2VkQXJyYXlzQnlHdWlkW2RlcGVuZGVudEtl
eV0pOwotICAgICAgICBmb3JFYWNoKGl0ZW1Qcm9wZXJ0eUtleXMsIGZ1bmN0aW9uIChwcm9wZXJ0
eUtleSkgewotICAgICAgICAgIGFkZEJlZm9yZU9ic2VydmVyKGl0ZW0sIHByb3BlcnR5S2V5LCB0
aGlzLCBvYnNlcnZlckNvbnRleHQuYmVmb3JlT2JzZXJ2ZXIpOwotICAgICAgICAgIGFkZE9ic2Vy
dmVyKGl0ZW0sIHByb3BlcnR5S2V5LCB0aGlzLCBvYnNlcnZlckNvbnRleHQub2JzZXJ2ZXIpOwot
ICAgICAgICB9LCB0aGlzKTsKLSAgICAgIH0KLQotICAgICAgY2hhbmdlTWV0YSA9IGNyZWF0ZUNo
YW5nZU1ldGEoZGVwZW5kZW50QXJyYXksIGl0ZW0sIG5vcm1hbGl6ZWRJbmRleCArIHNsaWNlSW5k
ZXgsIHRoaXMuaW5zdGFuY2VNZXRhLnByb3BlcnR5TmFtZSwgdGhpcy5jcCk7Ci0gICAgICB0aGlz
LnNldFZhbHVlKCBhZGRlZEl0ZW0uY2FsbCgKLSAgICAgICAgdGhpcy5pbnN0YW5jZU1ldGEuY29u
dGV4dCwgdGhpcy5nZXRWYWx1ZSgpLCBpdGVtLCBjaGFuZ2VNZXRhLCB0aGlzLmluc3RhbmNlTWV0
YS5zdWdhck1ldGEpKTsKLSAgICB9LCB0aGlzKTsKLQotICAgIHRoaXMudHJhY2tBZGQoZGVwZW5k
ZW50S2V5LCBub3JtYWxpemVkSW5kZXgsIG9ic2VydmVyQ29udGV4dHMpOwotICB9LAotCi0gIGl0
ZW1Qcm9wZXJ0eVdpbGxDaGFuZ2U6IGZ1bmN0aW9uIChvYmosIGtleU5hbWUsIGFycmF5LCBvYnNl
cnZlckNvbnRleHQpIHsKLSAgICB2YXIgZ3VpZCA9IGd1aWRGb3Iob2JqKTsKLQotICAgIGlmICgh
dGhpcy5jaGFuZ2VkSXRlbXNbZ3VpZF0pIHsKLSAgICAgIHRoaXMuY2hhbmdlZEl0ZW1zW2d1aWRd
ID0gewotICAgICAgICBhcnJheTogICAgICAgICAgICBhcnJheSwKLSAgICAgICAgb2JzZXJ2ZXJD
b250ZXh0OiAgb2JzZXJ2ZXJDb250ZXh0LAotICAgICAgICBvYmo6ICAgICAgICAgICAgICBvYmos
Ci0gICAgICAgIHByZXZpb3VzVmFsdWVzOiAgIHt9Ci0gICAgICB9OwotICAgIH0KLQotICAgIHRo
aXMuY2hhbmdlZEl0ZW1zW2d1aWRdLnByZXZpb3VzVmFsdWVzW2tleU5hbWVdID0gZ2V0KG9iaiwg
a2V5TmFtZSk7Ci0gIH0sCi0KLSAgaXRlbVByb3BlcnR5RGlkQ2hhbmdlOiBmdW5jdGlvbihvYmos
IGtleU5hbWUsIGFycmF5LCBvYnNlcnZlckNvbnRleHQpIHsKLSAgICB0aGlzLmZsdXNoQ2hhbmdl
cygpOwotICB9LAotCi0gIGZsdXNoQ2hhbmdlczogZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGNoYW5n
ZWRJdGVtcyA9IHRoaXMuY2hhbmdlZEl0ZW1zLCBrZXksIGMsIGNoYW5nZU1ldGE7Ci0KLSAgICBm
b3IgKGtleSBpbiBjaGFuZ2VkSXRlbXMpIHsKLSAgICAgIGMgPSBjaGFuZ2VkSXRlbXNba2V5XTsK
LSAgICAgIGlmIChjLm9ic2VydmVyQ29udGV4dC5kZXN0cm95ZWQpIHsgY29udGludWU7IH0KLQot
ICAgICAgdGhpcy51cGRhdGVJbmRleGVzKGMub2JzZXJ2ZXJDb250ZXh0LnRyYWNrZWRBcnJheSwg
Yy5vYnNlcnZlckNvbnRleHQuZGVwZW5kZW50QXJyYXkpOwotCi0gICAgICBjaGFuZ2VNZXRhID0g
Y3JlYXRlQ2hhbmdlTWV0YShjLmFycmF5LCBjLm9iaiwgYy5vYnNlcnZlckNvbnRleHQuaW5kZXgs
IHRoaXMuaW5zdGFuY2VNZXRhLnByb3BlcnR5TmFtZSwgdGhpcy5jcCwgYy5wcmV2aW91c1ZhbHVl
cyk7Ci0gICAgICB0aGlzLnNldFZhbHVlKAotICAgICAgICB0aGlzLmNhbGxiYWNrcy5yZW1vdmVk
SXRlbS5jYWxsKHRoaXMuaW5zdGFuY2VNZXRhLmNvbnRleHQsIHRoaXMuZ2V0VmFsdWUoKSwgYy5v
YmosIGNoYW5nZU1ldGEsIHRoaXMuaW5zdGFuY2VNZXRhLnN1Z2FyTWV0YSkpOwotICAgICAgdGhp
cy5zZXRWYWx1ZSgKLSAgICAgICAgdGhpcy5jYWxsYmFja3MuYWRkZWRJdGVtLmNhbGwodGhpcy5p
bnN0YW5jZU1ldGEuY29udGV4dCwgdGhpcy5nZXRWYWx1ZSgpLCBjLm9iaiwgY2hhbmdlTWV0YSwg
dGhpcy5pbnN0YW5jZU1ldGEuc3VnYXJNZXRhKSk7Ci0gICAgfQotICAgIHRoaXMuY2hhbmdlZEl0
ZW1zID0ge307Ci0gIH0KLX07Ci0KLWZ1bmN0aW9uIG5vcm1hbGl6ZUluZGV4KGluZGV4LCBsZW5n
dGgsIG5ld0l0ZW1zT2Zmc2V0KSB7Ci0gIGlmIChpbmRleCA8IDApIHsKLSAgICByZXR1cm4gTWF0
aC5tYXgoMCwgbGVuZ3RoICsgaW5kZXgpOwotICB9IGVsc2UgaWYgKGluZGV4IDwgbGVuZ3RoKSB7
Ci0gICAgcmV0dXJuIGluZGV4OwotICB9IGVsc2UgLyogaW5kZXggPiBsZW5ndGggKi8gewotICAg
IHJldHVybiBNYXRoLm1pbihsZW5ndGggLSBuZXdJdGVtc09mZnNldCwgaW5kZXgpOwotICB9Ci19
Ci0KLWZ1bmN0aW9uIG5vcm1hbGl6ZVJlbW92ZUNvdW50KGluZGV4LCBsZW5ndGgsIHJlbW92ZWRD
b3VudCkgewotICByZXR1cm4gTWF0aC5taW4ocmVtb3ZlZENvdW50LCBsZW5ndGggLSBpbmRleCk7
Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZUNoYW5nZU1ldGEoZGVwZW5kZW50QXJyYXksIGl0ZW0sIGlu
ZGV4LCBwcm9wZXJ0eU5hbWUsIHByb3BlcnR5LCBwcmV2aW91c1ZhbHVlcykgewotICB2YXIgbWV0
YSA9IHsKLSAgICBhcnJheUNoYW5nZWQ6IGRlcGVuZGVudEFycmF5LAotICAgIGluZGV4OiBpbmRl
eCwKLSAgICBpdGVtOiBpdGVtLAotICAgIHByb3BlcnR5TmFtZTogcHJvcGVydHlOYW1lLAotICAg
IHByb3BlcnR5OiBwcm9wZXJ0eQotICB9OwotCi0gIGlmIChwcmV2aW91c1ZhbHVlcykgewotICAg
IC8vIHByZXZpb3VzIHZhbHVlcyBvbmx5IGF2YWlsYWJsZSBmb3IgaXRlbSBwcm9wZXJ0eSBjaGFu
Z2VzCi0gICAgbWV0YS5wcmV2aW91c1ZhbHVlcyA9IHByZXZpb3VzVmFsdWVzOwotICB9Ci0KLSAg
cmV0dXJuIG1ldGE7Ci19Ci0KLWZ1bmN0aW9uIGFkZEl0ZW1zIChkZXBlbmRlbnRBcnJheSwgY2Fs
bGJhY2tzLCBjcCwgcHJvcGVydHlOYW1lLCBtZXRhKSB7Ci0gIGZvckVhY2goZGVwZW5kZW50QXJy
YXksIGZ1bmN0aW9uIChpdGVtLCBpbmRleCkgewotICAgIG1ldGEuc2V0VmFsdWUoIGNhbGxiYWNr
cy5hZGRlZEl0ZW0uY2FsbCgKLSAgICAgIHRoaXMsIG1ldGEuZ2V0VmFsdWUoKSwgaXRlbSwgY3Jl
YXRlQ2hhbmdlTWV0YShkZXBlbmRlbnRBcnJheSwgaXRlbSwgaW5kZXgsIHByb3BlcnR5TmFtZSwg
Y3ApLCBtZXRhLnN1Z2FyTWV0YSkpOwotICB9LCB0aGlzKTsKLX0KLQotZnVuY3Rpb24gcmVzZXQo
Y3AsIHByb3BlcnR5TmFtZSkgewotICB2YXIgY2FsbGJhY2tzID0gY3AuX2NhbGxiYWNrcygpLAot
ICAgICAgbWV0YTsKLQotICBpZiAoY3AuX2hhc0luc3RhbmNlTWV0YSh0aGlzLCBwcm9wZXJ0eU5h
bWUpKSB7Ci0gICAgbWV0YSA9IGNwLl9pbnN0YW5jZU1ldGEodGhpcywgcHJvcGVydHlOYW1lKTsK
LSAgICBtZXRhLnNldFZhbHVlKGNwLnJlc2V0VmFsdWUobWV0YS5nZXRWYWx1ZSgpKSk7Ci0gIH0g
ZWxzZSB7Ci0gICAgbWV0YSA9IGNwLl9pbnN0YW5jZU1ldGEodGhpcywgcHJvcGVydHlOYW1lKTsK
LSAgfQotCi0gIGlmIChjcC5vcHRpb25zLmluaXRpYWxpemUpIHsKLSAgICBjcC5vcHRpb25zLmlu
aXRpYWxpemUuY2FsbCh0aGlzLCBtZXRhLmdldFZhbHVlKCksIHsgcHJvcGVydHk6IGNwLCBwcm9w
ZXJ0eU5hbWU6IHByb3BlcnR5TmFtZSB9LCBtZXRhLnN1Z2FyTWV0YSk7Ci0gIH0KLX0KLQotZnVu
Y3Rpb24gcGFydGlhbGx5UmVjb21wdXRlRm9yKG9iaiwgZGVwZW5kZW50S2V5KSB7Ci0gIGlmIChh
cnJheUJyYWNrZXRQYXR0ZXJuLnRlc3QoZGVwZW5kZW50S2V5KSkgewotICAgIHJldHVybiBmYWxz
ZTsKLSAgfQotCi0gIHZhciB2YWx1ZSA9IGdldChvYmosIGRlcGVuZGVudEtleSk7Ci0gIHJldHVy
biBFbWJlci5BcnJheS5kZXRlY3QodmFsdWUpOwotfQotCi1mdW5jdGlvbiBSZWR1Y2VDb21wdXRl
ZFByb3BlcnR5SW5zdGFuY2VNZXRhKGNvbnRleHQsIHByb3BlcnR5TmFtZSwgaW5pdGlhbFZhbHVl
KSB7Ci0gIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7Ci0gIHRoaXMucHJvcGVydHlOYW1lID0gcHJv
cGVydHlOYW1lOwotICB0aGlzLmNhY2hlID0gbWV0YUZvcihjb250ZXh0KS5jYWNoZTsKLQotICB0
aGlzLmRlcGVuZGVudEFycmF5cyA9IHt9OwotICB0aGlzLnN1Z2FyTWV0YSA9IHt9OwotCi0gIHRo
aXMuaW5pdGlhbFZhbHVlID0gaW5pdGlhbFZhbHVlOwotfQotCi1SZWR1Y2VDb21wdXRlZFByb3Bl
cnR5SW5zdGFuY2VNZXRhLnByb3RvdHlwZSA9IHsKLSAgZ2V0VmFsdWU6IGZ1bmN0aW9uICgpIHsK
LSAgICBpZiAodGhpcy5wcm9wZXJ0eU5hbWUgaW4gdGhpcy5jYWNoZSkgewotICAgICAgcmV0dXJu
IHRoaXMuY2FjaGVbdGhpcy5wcm9wZXJ0eU5hbWVdOwotICAgIH0gZWxzZSB7Ci0gICAgICByZXR1
cm4gdGhpcy5pbml0aWFsVmFsdWU7Ci0gICAgfQotICB9LAotCi0gIHNldFZhbHVlOiBmdW5jdGlv
bihuZXdWYWx1ZSwgdHJpZ2dlck9ic2VydmVycykgewotICAgIC8vIFRoaXMgbGV0cyBzdWdhcnMg
Zm9yY2UgYSByZWNvbXB1dGF0aW9uLCBoYW5keSBmb3IgdmVyeSBzaW1wbGUKLSAgICAvLyBpbXBs
ZW1lbnRhdGlvbnMgb2YgZWcgbWF4LgotICAgIGlmIChuZXdWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7
Ci0gICAgICB2YXIgZmlyZU9ic2VydmVycyA9IHRyaWdnZXJPYnNlcnZlcnMgJiYgKG5ld1ZhbHVl
ICE9PSB0aGlzLmNhY2hlW3RoaXMucHJvcGVydHlOYW1lXSk7Ci0KLSAgICAgIGlmIChmaXJlT2Jz
ZXJ2ZXJzKSB7Ci0gICAgICAgIHByb3BlcnR5V2lsbENoYW5nZSh0aGlzLmNvbnRleHQsIHRoaXMu
cHJvcGVydHlOYW1lKTsKLSAgICAgIH0KLQotICAgICAgdGhpcy5jYWNoZVt0aGlzLnByb3BlcnR5
TmFtZV0gPSBuZXdWYWx1ZTsKLQotICAgICAgaWYgKGZpcmVPYnNlcnZlcnMpIHsKLSAgICAgICAg
cHJvcGVydHlEaWRDaGFuZ2UodGhpcy5jb250ZXh0LCB0aGlzLnByb3BlcnR5TmFtZSk7Ci0gICAg
ICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgIGRlbGV0ZSB0aGlzLmNhY2hlW3RoaXMucHJvcGVydHlO
YW1lXTsKLSAgICB9Ci0gIH0KLX07Ci0KLS8qKgotICBBIGNvbXB1dGVkIHByb3BlcnR5IHdob3Nl
IGRlcGVuZGVudCBrZXlzIGFyZSBhcnJheXMgYW5kIHdoaWNoIGlzIHVwZGF0ZWQgd2l0aAotICAi
b25lIGF0IGEgdGltZSIgc2VtYW50aWNzLgotCi0gIEBjbGFzcyBSZWR1Y2VDb21wdXRlZFByb3Bl
cnR5Ci0gIEBuYW1lc3BhY2UgRW1iZXIKLSAgQGV4dGVuZHMgRW1iZXIuQ29tcHV0ZWRQcm9wZXJ0
eQotICBAY29uc3RydWN0b3IKLSovCi1mdW5jdGlvbiBSZWR1Y2VDb21wdXRlZFByb3BlcnR5KG9w
dGlvbnMpIHsKLSAgdmFyIGNwID0gdGhpczsKLQotICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zOwot
ICB0aGlzLl9pbnN0YW5jZU1ldGFzID0ge307Ci0KLSAgdGhpcy5fZGVwZW5kZW50S2V5cyA9IG51
bGw7Ci0gIC8vIEEgbWFwIG9mIGRlcGVuZGVudEtleSAtPiBbaXRlbVByb3BlcnR5LCAuLi5dIHRo
YXQgdHJhY2tzIHdoYXQgcHJvcGVydGllcyBvZgotICAvLyBpdGVtcyBpbiB0aGUgYXJyYXkgd2Ug
bXVzdCB0cmFjayB0byB1cGRhdGUgdGhpcyBwcm9wZXJ0eS4KLSAgdGhpcy5faXRlbVByb3BlcnR5
S2V5cyA9IHt9OwotICB0aGlzLl9wcmV2aW91c0l0ZW1Qcm9wZXJ0eUtleXMgPSB7fTsKLQotICB0
aGlzLnJlYWRPbmx5KCk7Ci0gIHRoaXMuY2FjaGVhYmxlKCk7Ci0KLSAgdGhpcy5yZWNvbXB1dGVP
bmNlID0gZnVuY3Rpb24ocHJvcGVydHlOYW1lKSB7Ci0gICAgLy8gV2hhdCB3ZSByZWFsbHkgd2Fu
dCB0byBkbyBpcyBjb2FsZXNjZSBieSA8Y3AsIHByb3BlcnR5TmFtZT4uCi0gICAgLy8gV2UgbmVl
ZCBhIGZvcm0gb2YgYHNjaGVkdWxlT25jZWAgdGhhdCBhY2NlcHRzIGFuIGFyYml0cmFyeSB0b2tl
biB0bwotICAgIC8vIGNvYWxlc2NlIGJ5LCBpbiBhZGRpdGlvbiB0byB0aGUgdGFyZ2V0IGFuZCBt
ZXRob2QuCi0gICAgRW1iZXIucnVuLm9uY2UodGhpcywgcmVjb21wdXRlLCBwcm9wZXJ0eU5hbWUp
OwotICB9OwotICB2YXIgcmVjb21wdXRlID0gZnVuY3Rpb24ocHJvcGVydHlOYW1lKSB7Ci0gICAg
dmFyIGRlcGVuZGVudEtleXMgPSBjcC5fZGVwZW5kZW50S2V5cywKLSAgICAgICAgbWV0YSA9IGNw
Ll9pbnN0YW5jZU1ldGEodGhpcywgcHJvcGVydHlOYW1lKSwKLSAgICAgICAgY2FsbGJhY2tzID0g
Y3AuX2NhbGxiYWNrcygpOwotCi0gICAgcmVzZXQuY2FsbCh0aGlzLCBjcCwgcHJvcGVydHlOYW1l
KTsKLQotICAgIG1ldGEuZGVwZW5kZW50QXJyYXlzT2JzZXJ2ZXIuc3VzcGVuZEFycmF5T2JzZXJ2
ZXJzKGZ1bmN0aW9uICgpIHsKLSAgICAgIGZvckVhY2goY3AuX2RlcGVuZGVudEtleXMsIGZ1bmN0
aW9uIChkZXBlbmRlbnRLZXkpIHsKLSAgICAgICAgaWYgKCFwYXJ0aWFsbHlSZWNvbXB1dGVGb3Io
dGhpcywgZGVwZW5kZW50S2V5KSkgeyByZXR1cm47IH0KLQotICAgICAgICB2YXIgZGVwZW5kZW50
QXJyYXkgPSBnZXQodGhpcywgZGVwZW5kZW50S2V5KSwKLSAgICAgICAgICAgIHByZXZpb3VzRGVw
ZW5kZW50QXJyYXkgPSBtZXRhLmRlcGVuZGVudEFycmF5c1tkZXBlbmRlbnRLZXldOwotCi0gICAg
ICAgIGlmIChkZXBlbmRlbnRBcnJheSA9PT0gcHJldmlvdXNEZXBlbmRlbnRBcnJheSkgewotICAg
ICAgICAgIC8vIFRoZSBhcnJheSBtYXkgYmUgdGhlIHNhbWUsIGJ1dCBvdXIgaXRlbSBwcm9wZXJ0
eSBrZXlzIG1heSBoYXZlCi0gICAgICAgICAgLy8gY2hhbmdlZCwgc28gd2Ugc2V0IHRoZW0gdXAg
YWdhaW4uICBXZSBjYW4ndCBlYXNpbHkgdGVsbCBpZiB0aGV5J3ZlCi0gICAgICAgICAgLy8gY2hh
bmdlZDogdGhlIGFycmF5IG1heSBiZSB0aGUgc2FtZSBvYmplY3QsIGJ1dCB3aXRoIGRpZmZlcmVu
dAotICAgICAgICAgIC8vIGNvbnRlbnRzLgotICAgICAgICAgIGlmIChjcC5fcHJldmlvdXNJdGVt
UHJvcGVydHlLZXlzW2RlcGVuZGVudEtleV0pIHsKLSAgICAgICAgICAgIGRlbGV0ZSBjcC5fcHJl
dmlvdXNJdGVtUHJvcGVydHlLZXlzW2RlcGVuZGVudEtleV07Ci0gICAgICAgICAgICBtZXRhLmRl
cGVuZGVudEFycmF5c09ic2VydmVyLnNldHVwUHJvcGVydHlPYnNlcnZlcnMoZGVwZW5kZW50S2V5
LCBjcC5faXRlbVByb3BlcnR5S2V5c1tkZXBlbmRlbnRLZXldKTsKLSAgICAgICAgICB9Ci0gICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgbWV0YS5kZXBlbmRlbnRBcnJheXNbZGVwZW5kZW50S2V5
XSA9IGRlcGVuZGVudEFycmF5OwotCi0gICAgICAgICAgaWYgKHByZXZpb3VzRGVwZW5kZW50QXJy
YXkpIHsKLSAgICAgICAgICAgIG1ldGEuZGVwZW5kZW50QXJyYXlzT2JzZXJ2ZXIudGVhcmRvd25P
YnNlcnZlcnMocHJldmlvdXNEZXBlbmRlbnRBcnJheSwgZGVwZW5kZW50S2V5KTsKLSAgICAgICAg
ICB9Ci0KLSAgICAgICAgICBpZiAoZGVwZW5kZW50QXJyYXkpIHsKLSAgICAgICAgICAgIG1ldGEu
ZGVwZW5kZW50QXJyYXlzT2JzZXJ2ZXIuc2V0dXBPYnNlcnZlcnMoZGVwZW5kZW50QXJyYXksIGRl
cGVuZGVudEtleSk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9LCB0aGlzKTsKLSAg
ICB9LCB0aGlzKTsKLQotICAgIGZvckVhY2goY3AuX2RlcGVuZGVudEtleXMsIGZ1bmN0aW9uKGRl
cGVuZGVudEtleSkgewotICAgICAgaWYgKCFwYXJ0aWFsbHlSZWNvbXB1dGVGb3IodGhpcywgZGVw
ZW5kZW50S2V5KSkgeyByZXR1cm47IH0KLQotICAgICAgdmFyIGRlcGVuZGVudEFycmF5ID0gZ2V0
KHRoaXMsIGRlcGVuZGVudEtleSk7Ci0gICAgICBpZiAoZGVwZW5kZW50QXJyYXkpIHsKLSAgICAg
ICAgYWRkSXRlbXMuY2FsbCh0aGlzLCBkZXBlbmRlbnRBcnJheSwgY2FsbGJhY2tzLCBjcCwgcHJv
cGVydHlOYW1lLCBtZXRhKTsKLSAgICAgIH0KLSAgICB9LCB0aGlzKTsKLSAgfTsKLQotICB0aGlz
LmZ1bmMgPSBmdW5jdGlvbiAocHJvcGVydHlOYW1lKSB7Ci0gICAgRW1iZXIuYXNzZXJ0KCJDb21w
dXRlZCByZWR1Y2UgdmFsdWVzIHJlcXVpcmUgYXQgbGVhc3Qgb25lIGRlcGVuZGVudCBrZXkiLCBj
cC5fZGVwZW5kZW50S2V5cyk7Ci0KLSAgICByZWNvbXB1dGUuY2FsbCh0aGlzLCBwcm9wZXJ0eU5h
bWUpOwotCi0gICAgcmV0dXJuIGNwLl9pbnN0YW5jZU1ldGEodGhpcywgcHJvcGVydHlOYW1lKS5n
ZXRWYWx1ZSgpOwotICB9OwotfQotCi1FbWJlci5SZWR1Y2VDb21wdXRlZFByb3BlcnR5ID0gUmVk
dWNlQ29tcHV0ZWRQcm9wZXJ0eTsKLVJlZHVjZUNvbXB1dGVkUHJvcGVydHkucHJvdG90eXBlID0g
b19jcmVhdGUoQ29tcHV0ZWRQcm9wZXJ0eS5wcm90b3R5cGUpOwotCi1mdW5jdGlvbiBkZWZhdWx0
Q2FsbGJhY2soY29tcHV0ZWRWYWx1ZSkgewotICByZXR1cm4gY29tcHV0ZWRWYWx1ZTsKLX0KLQot
UmVkdWNlQ29tcHV0ZWRQcm9wZXJ0eS5wcm90b3R5cGUuX2NhbGxiYWNrcyA9IGZ1bmN0aW9uICgp
IHsKLSAgaWYgKCF0aGlzLmNhbGxiYWNrcykgewotICAgIHZhciBvcHRpb25zID0gdGhpcy5vcHRp
b25zOwotICAgIHRoaXMuY2FsbGJhY2tzID0gewotICAgICAgcmVtb3ZlZEl0ZW06IG9wdGlvbnMu
cmVtb3ZlZEl0ZW0gfHwgZGVmYXVsdENhbGxiYWNrLAotICAgICAgYWRkZWRJdGVtOiBvcHRpb25z
LmFkZGVkSXRlbSB8fCBkZWZhdWx0Q2FsbGJhY2sKLSAgICB9OwotICB9Ci0gIHJldHVybiB0aGlz
LmNhbGxiYWNrczsKLX07Ci0KLVJlZHVjZUNvbXB1dGVkUHJvcGVydHkucHJvdG90eXBlLl9oYXNJ
bnN0YW5jZU1ldGEgPSBmdW5jdGlvbiAoY29udGV4dCwgcHJvcGVydHlOYW1lKSB7Ci0gIHZhciBn
dWlkID0gZ3VpZEZvcihjb250ZXh0KSwKLSAgICAgIGtleSA9IGd1aWQgKyAnOicgKyBwcm9wZXJ0
eU5hbWU7Ci0KLSAgcmV0dXJuICEhdGhpcy5faW5zdGFuY2VNZXRhc1trZXldOwotfTsKLQotUmVk
dWNlQ29tcHV0ZWRQcm9wZXJ0eS5wcm90b3R5cGUuX2luc3RhbmNlTWV0YSA9IGZ1bmN0aW9uIChj
b250ZXh0LCBwcm9wZXJ0eU5hbWUpIHsKLSAgdmFyIGd1aWQgPSBndWlkRm9yKGNvbnRleHQpLAot
ICAgICAga2V5ID0gZ3VpZCArICc6JyArIHByb3BlcnR5TmFtZSwKLSAgICAgIG1ldGEgPSB0aGlz
Ll9pbnN0YW5jZU1ldGFzW2tleV07Ci0KLSAgaWYgKCFtZXRhKSB7Ci0gICAgbWV0YSA9IHRoaXMu
X2luc3RhbmNlTWV0YXNba2V5XSA9IG5ldyBSZWR1Y2VDb21wdXRlZFByb3BlcnR5SW5zdGFuY2VN
ZXRhKGNvbnRleHQsIHByb3BlcnR5TmFtZSwgdGhpcy5pbml0aWFsVmFsdWUoKSk7Ci0gICAgbWV0
YS5kZXBlbmRlbnRBcnJheXNPYnNlcnZlciA9IG5ldyBEZXBlbmRlbnRBcnJheXNPYnNlcnZlcih0
aGlzLl9jYWxsYmFja3MoKSwgdGhpcywgbWV0YSwgY29udGV4dCwgcHJvcGVydHlOYW1lLCBtZXRh
LnN1Z2FyTWV0YSk7Ci0gIH0KLQotICByZXR1cm4gbWV0YTsKLX07Ci0KLVJlZHVjZUNvbXB1dGVk
UHJvcGVydHkucHJvdG90eXBlLmluaXRpYWxWYWx1ZSA9IGZ1bmN0aW9uICgpIHsKLSAgaWYgKHR5
cGVvZiB0aGlzLm9wdGlvbnMuaW5pdGlhbFZhbHVlID09PSAnZnVuY3Rpb24nKSB7Ci0gICAgcmV0
dXJuIHRoaXMub3B0aW9ucy5pbml0aWFsVmFsdWUoKTsKLSAgfQotICBlbHNlIHsKLSAgICByZXR1
cm4gdGhpcy5vcHRpb25zLmluaXRpYWxWYWx1ZTsKLSAgfQotfTsKLQotUmVkdWNlQ29tcHV0ZWRQ
cm9wZXJ0eS5wcm90b3R5cGUucmVzZXRWYWx1ZSA9IGZ1bmN0aW9uICh2YWx1ZSkgewotICByZXR1
cm4gdGhpcy5pbml0aWFsVmFsdWUoKTsKLX07Ci0KLVJlZHVjZUNvbXB1dGVkUHJvcGVydHkucHJv
dG90eXBlLml0ZW1Qcm9wZXJ0eUtleSA9IGZ1bmN0aW9uIChkZXBlbmRlbnRBcnJheUtleSwgaXRl
bVByb3BlcnR5S2V5KSB7Ci0gIHRoaXMuX2l0ZW1Qcm9wZXJ0eUtleXNbZGVwZW5kZW50QXJyYXlL
ZXldID0gdGhpcy5faXRlbVByb3BlcnR5S2V5c1tkZXBlbmRlbnRBcnJheUtleV0gfHwgW107Ci0g
IHRoaXMuX2l0ZW1Qcm9wZXJ0eUtleXNbZGVwZW5kZW50QXJyYXlLZXldLnB1c2goaXRlbVByb3Bl
cnR5S2V5KTsKLX07Ci0KLVJlZHVjZUNvbXB1dGVkUHJvcGVydHkucHJvdG90eXBlLmNsZWFySXRl
bVByb3BlcnR5S2V5cyA9IGZ1bmN0aW9uIChkZXBlbmRlbnRBcnJheUtleSkgewotICBpZiAodGhp
cy5faXRlbVByb3BlcnR5S2V5c1tkZXBlbmRlbnRBcnJheUtleV0pIHsKLSAgICB0aGlzLl9wcmV2
aW91c0l0ZW1Qcm9wZXJ0eUtleXNbZGVwZW5kZW50QXJyYXlLZXldID0gdGhpcy5faXRlbVByb3Bl
cnR5S2V5c1tkZXBlbmRlbnRBcnJheUtleV07Ci0gICAgdGhpcy5faXRlbVByb3BlcnR5S2V5c1tk
ZXBlbmRlbnRBcnJheUtleV0gPSBbXTsKLSAgfQotfTsKLQotUmVkdWNlQ29tcHV0ZWRQcm9wZXJ0
eS5wcm90b3R5cGUucHJvcGVydHkgPSBmdW5jdGlvbiAoKSB7Ci0gIHZhciBjcCA9IHRoaXMsCi0g
ICAgICBhcmdzID0gYV9zbGljZS5jYWxsKGFyZ3VtZW50cyksCi0gICAgICBwcm9wZXJ0eUFyZ3Mg
PSBuZXcgRW1iZXIuU2V0KCksCi0gICAgICBtYXRjaCwKLSAgICAgIGRlcGVuZGVudEFycmF5S2V5
LAotICAgICAgaXRlbVByb3BlcnR5S2V5OwotCi0gIGZvckVhY2goYV9zbGljZS5jYWxsKGFyZ3Vt
ZW50cyksIGZ1bmN0aW9uIChkZXBlbmRlbnRLZXkpIHsKLSAgICBpZiAoZG91YmxlRWFjaFByb3Bl
cnR5UGF0dGVybi50ZXN0KGRlcGVuZGVudEtleSkpIHsKLSAgICAgIHRocm93IG5ldyBFbWJlci5F
cnJvcigiTmVzdGVkIEBlYWNoIHByb3BlcnRpZXMgbm90IHN1cHBvcnRlZDogIiArIGRlcGVuZGVu
dEtleSk7Ci0gICAgfSBlbHNlIGlmIChtYXRjaCA9IGVhY2hQcm9wZXJ0eVBhdHRlcm4uZXhlYyhk
ZXBlbmRlbnRLZXkpKSB7Ci0gICAgICBkZXBlbmRlbnRBcnJheUtleSA9IG1hdGNoWzFdOwotCi0g
ICAgICAKLSAgICAgICAgaXRlbVByb3BlcnR5S2V5ID0gbWF0Y2hbMl07Ci0gICAgICAgIGNwLml0
ZW1Qcm9wZXJ0eUtleShkZXBlbmRlbnRBcnJheUtleSwgaXRlbVByb3BlcnR5S2V5KTsKLSAgICAg
IAotICAgICAgcHJvcGVydHlBcmdzLmFkZChkZXBlbmRlbnRBcnJheUtleSk7Ci0gICAgfSBlbHNl
IHsKLSAgICAgIHByb3BlcnR5QXJncy5hZGQoZGVwZW5kZW50S2V5KTsKLSAgICB9Ci0gIH0pOwot
Ci0gIHJldHVybiBDb21wdXRlZFByb3BlcnR5LnByb3RvdHlwZS5wcm9wZXJ0eS5hcHBseSh0aGlz
LCBwcm9wZXJ0eUFyZ3MudG9BcnJheSgpKTsKLQotfTsKLQotLyoqCi0gIENyZWF0ZXMgYSBjb21w
dXRlZCBwcm9wZXJ0eSB3aGljaCBvcGVyYXRlcyBvbiBkZXBlbmRlbnQgYXJyYXlzIGFuZAotICBp
cyB1cGRhdGVkIHdpdGggIm9uZSBhdCBhIHRpbWUiIHNlbWFudGljcy4gV2hlbiBpdGVtcyBhcmUg
YWRkZWQgb3IKLSAgcmVtb3ZlZCBmcm9tIHRoZSBkZXBlbmRlbnQgYXJyYXkocykgYSByZWR1Y2Ug
Y29tcHV0ZWQgb25seSBvcGVyYXRlcwotICBvbiB0aGUgY2hhbmdlIGluc3RlYWQgb2YgcmUtZXZh
bHVhdGluZyB0aGUgZW50aXJlIGFycmF5LgotCi0gIElmIHRoZXJlIGFyZSBtb3JlIHRoYW4gb25l
IGFyZ3VtZW50cyB0aGUgZmlyc3QgYXJndW1lbnRzIGFyZQotICBjb25zaWRlcmVkIHRvIGJlIGRl
cGVuZGVudCBwcm9wZXJ0eSBrZXlzLiBUaGUgbGFzdCBhcmd1bWVudCBpcwotICByZXF1aXJlZCB0
byBiZSBhbiBvcHRpb25zIG9iamVjdC4gVGhlIG9wdGlvbnMgb2JqZWN0IGNhbiBoYXZlIHRoZQot
ICBmb2xsb3dpbmcgZm91ciBwcm9wZXJ0aWVzOgotCi0gIGBpbml0aWFsVmFsdWVgIC0gQSB2YWx1
ZSBvciBmdW5jdGlvbiB0aGF0IHdpbGwgYmUgdXNlZCBhcyB0aGUgaW5pdGlhbAotICB2YWx1ZSBm
b3IgdGhlIGNvbXB1dGVkLiBJZiB0aGlzIHByb3BlcnR5IGlzIGEgZnVuY3Rpb24gdGhlIHJlc3Vs
dCBvZiBjYWxsaW5nCi0gIHRoZSBmdW5jdGlvbiB3aWxsIGJlIHVzZWQgYXMgdGhlIGluaXRpYWwg
dmFsdWUuIFRoaXMgcHJvcGVydHkgaXMgcmVxdWlyZWQuCi0KLSAgYGluaXRpYWxpemVgIC0gQW4g
b3B0aW9uYWwgaW5pdGlhbGl6ZSBmdW5jdGlvbi4gVHlwaWNhbGx5IHRoaXMgd2lsbCBiZSB1c2Vk
Ci0gIHRvIHNldCB1cCBzdGF0ZSBvbiB0aGUgaW5zdGFuY2VNZXRhIG9iamVjdC4KLQotICBgcmVt
b3ZlZEl0ZW1gIC0gQSBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCBlYWNoIHRpbWUgYW4gZWxlbWVu
dCBpcyByZW1vdmVkCi0gIGZyb20gdGhlIGFycmF5LgotCi0gIGBhZGRlZEl0ZW1gIC0gQSBmdW5j
dGlvbiB0aGF0IGlzIGNhbGxlZCBlYWNoIHRpbWUgYW4gZWxlbWVudCBpcyBhZGRlZCB0bwotICB0
aGUgYXJyYXkuCi0KLQotICBUaGUgYGluaXRpYWxpemVgIGZ1bmN0aW9uIGhhcyB0aGUgZm9sbG93
aW5nIHNpZ25hdHVyZToKLQotICBgYGBqYXZhc2NyaXB0Ci0gICBmdW5jdGlvbiAoaW5pdGlhbFZh
bHVlLCBjaGFuZ2VNZXRhLCBpbnN0YW5jZU1ldGEpCi0gIGBgYAotCi0gIGBpbml0aWFsVmFsdWVg
IC0gVGhlIHZhbHVlIG9mIHRoZSBgaW5pdGlhbFZhbHVlYCBwcm9wZXJ0eSBmcm9tIHRoZQotICBv
cHRpb25zIG9iamVjdC4KLQotICBgY2hhbmdlTWV0YWAgLSBBbiBvYmplY3Qgd2hpY2ggY29udGFp
bnMgbWV0YSBpbmZvcm1hdGlvbiBhYm91dCB0aGUKLSAgY29tcHV0ZWQuIEl0IGNvbnRhaW5zIHRo
ZSBmb2xsb3dpbmcgcHJvcGVydGllczoKLQotICAgICAtIGBwcm9wZXJ0eWAgdGhlIGNvbXB1dGVk
IHByb3BlcnR5Ci0gICAgIC0gYHByb3BlcnR5TmFtZWAgdGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5
IG9uIHRoZSBvYmplY3QKLQotICBgaW5zdGFuY2VNZXRhYCAtIEFuIG9iamVjdCB0aGF0IGNhbiBi
ZSB1c2VkIHRvIHN0b3JlIG1ldGEKLSAgaW5mb3JtYXRpb24gbmVlZGVkIGZvciBjYWxjdWxhdGlu
ZyB5b3VyIGNvbXB1dGVkLiBGb3IgZXhhbXBsZSBhCi0gIHVuaXF1ZSBjb21wdXRlZCBtaWdodCB1
c2UgdGhpcyB0byBzdG9yZSB0aGUgbnVtYmVyIG9mIHRpbWVzIGEgZ2l2ZW4KLSAgZWxlbWVudCBp
cyBmb3VuZCBpbiB0aGUgZGVwZW5kZW50IGFycmF5LgotCi0KLSAgVGhlIGByZW1vdmVkSXRlbWAg
YW5kIGBhZGRlZEl0ZW1gIGZ1bmN0aW9ucyBib3RoIGhhdmUgdGhlIGZvbGxvd2luZyBzaWduYXR1
cmU6Ci0KLSAgYGBgamF2YXNjcmlwdAotICBmdW5jdGlvbiAoYWNjdW11bGF0ZWRWYWx1ZSwgaXRl
bSwgY2hhbmdlTWV0YSwgaW5zdGFuY2VNZXRhKQotICBgYGAKLQotICBgYWNjdW11bGF0ZWRWYWx1
ZWAgLSBUaGUgdmFsdWUgcmV0dXJuZWQgZnJvbSB0aGUgbGFzdCB0aW1lCi0gIGByZW1vdmVkSXRl
bWAgb3IgYGFkZGVkSXRlbWAgd2FzIGNhbGxlZCBvciBgaW5pdGlhbFZhbHVlYC4KLQotICBgaXRl
bWAgLSB0aGUgZWxlbWVudCBhZGRlZCBvciByZW1vdmVkIGZyb20gdGhlIGFycmF5Ci0KLSAgYGNo
YW5nZU1ldGFgIC0gQW4gb2JqZWN0IHdoaWNoIGNvbnRhaW5zIG1ldGEgaW5mb3JtYXRpb24gYWJv
dXQgdGhlCi0gIGNoYW5nZS4gSXQgY29udGFpbnMgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOgot
Ci0gICAgLSBgcHJvcGVydHlgIHRoZSBjb21wdXRlZCBwcm9wZXJ0eQotICAgIC0gYHByb3BlcnR5
TmFtZWAgdGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IG9uIHRoZSBvYmplY3QKLSAgICAtIGBpbmRl
eGAgdGhlIGluZGV4IG9mIHRoZSBhZGRlZCBvciByZW1vdmVkIGl0ZW0KLSAgICAtIGBpdGVtYCB0
aGUgYWRkZWQgb3IgcmVtb3ZlZCBpdGVtOiB0aGlzIGlzIGV4YWN0bHkgdGhlIHNhbWUgYXMKLSAg
ICAgIHRoZSBzZWNvbmQgYXJnCi0gICAgLSBgYXJyYXlDaGFuZ2VkYCB0aGUgYXJyYXkgdGhhdCB0
cmlnZ2VyZWQgdGhlIGNoYW5nZS4gQ2FuIGJlCi0gICAgICB1c2VmdWwgd2hlbiBkZXBlbmRpbmcg
b24gbXVsdGlwbGUgYXJyYXlzLgotCi0gIEZvciBwcm9wZXJ0eSBjaGFuZ2VzIHRyaWdnZXJlZCBv
biBhbiBpdGVtIHByb3BlcnR5IGNoYW5nZSAod2hlbgotICBkZXBLZXkgaXMgc29tZXRoaW5nIGxp
a2UgYHNvbWVBcnJheS5AZWFjaC5zb21lUHJvcGVydHlgKSwKLSAgYGNoYW5nZU1ldGFgIHdpbGwg
YWxzbyBjb250YWluIHRoZSBmb2xsb3dpbmcgcHJvcGVydHk6Ci0KLSAgICAtIGBwcmV2aW91c1Zh
bHVlc2AgYW4gb2JqZWN0IHdob3NlIGtleXMgYXJlIHRoZSBwcm9wZXJ0aWVzIHRoYXQgY2hhbmdl
ZCBvbgotICAgIHRoZSBpdGVtLCBhbmQgd2hvc2UgdmFsdWVzIGFyZSB0aGUgaXRlbSdzIHByZXZp
b3VzIHZhbHVlcy4KLQotICBgcHJldmlvdXNWYWx1ZXNgIGlzIGltcG9ydGFudCBFbWJlciBjb2Fs
ZXNjZXMgaXRlbSBwcm9wZXJ0eSBjaGFuZ2VzIHZpYQotICBFbWJlci5ydW4ub25jZS4gVGhpcyBt
ZWFucyB0aGF0IGJ5IHRoZSB0aW1lIHJlbW92ZWRJdGVtIGdldHMgY2FsbGVkLCBpdGVtIGhhcwot
ICB0aGUgbmV3IHZhbHVlcywgYnV0IHlvdSBtYXkgbmVlZCB0aGUgcHJldmlvdXMgdmFsdWUgKGVn
IGZvciBzb3J0aW5nICYKLSAgZmlsdGVyaW5nKS4KLQotICBgaW5zdGFuY2VNZXRhYCAtIEFuIG9i
amVjdCB0aGF0IGNhbiBiZSB1c2VkIHRvIHN0b3JlIG1ldGEKLSAgaW5mb3JtYXRpb24gbmVlZGVk
IGZvciBjYWxjdWxhdGluZyB5b3VyIGNvbXB1dGVkLiBGb3IgZXhhbXBsZSBhCi0gIHVuaXF1ZSBj
b21wdXRlZCBtaWdodCB1c2UgdGhpcyB0byBzdG9yZSB0aGUgbnVtYmVyIG9mIHRpbWVzIGEgZ2l2
ZW4KLSAgZWxlbWVudCBpcyBmb3VuZCBpbiB0aGUgZGVwZW5kZW50IGFycmF5LgotCi0gIFRoZSBg
cmVtb3ZlZEl0ZW1gIGFuZCBgYWRkZWRJdGVtYCBmdW5jdGlvbnMgc2hvdWxkIHJldHVybiB0aGUg
YWNjdW11bGF0ZWQKLSAgdmFsdWUuIEl0IGlzIGFjY2VwdGFibGUgdG8gbm90IHJldHVybiBhbnl0
aGluZyAoaWUgcmV0dXJuIHVuZGVmaW5lZCkKLSAgdG8gaW52YWxpZGF0ZSB0aGUgY29tcHV0YXRp
b24uIFRoaXMgaXMgZ2VuZXJhbGx5IG5vdCBhIGdvb2QgaWRlYSBmb3IKLSAgYXJyYXlDb21wdXRl
ZCBidXQgaXQncyB1c2VkIGluIGVnIG1heCBhbmQgbWluLgotCi0gIE5vdGUgdGhhdCBvYnNlcnZl
cnMgd2lsbCBiZSBmaXJlZCBpZiBlaXRoZXIgb2YgdGhlc2UgZnVuY3Rpb25zIHJldHVybiBhIHZh
bHVlCi0gIHRoYXQgZGlmZmVycyBmcm9tIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS4gIFdoZW4gcmV0
dXJuaW5nIGFuIG9iamVjdCB0aGF0Ci0gIG11dGF0ZXMgaW4gcmVzcG9uc2UgdG8gYXJyYXkgY2hh
bmdlcywgZm9yIGV4YW1wbGUgYW4gYXJyYXkgdGhhdCBtYXBzCi0gIGV2ZXJ5dGhpbmcgZnJvbSBz
b21lIG90aGVyIGFycmF5IChzZWUgYEVtYmVyLmNvbXB1dGVkLm1hcGApLCBpdCBpcyB1c3VhbGx5
Ci0gIGltcG9ydGFudCB0aGF0IHRoZSAqc2FtZSogYXJyYXkgYmUgcmV0dXJuZWQgdG8gYXZvaWQg
YWNjaWRlbnRhbGx5IHRyaWdnZXJpbmcgb2JzZXJ2ZXJzLgotCi0gIEV4YW1wbGUKLQotICBgYGBq
YXZhc2NyaXB0Ci0gIEVtYmVyLmNvbXB1dGVkLm1heCA9IGZ1bmN0aW9uIChkZXBlbmRlbnRLZXkp
IHsKLSAgICByZXR1cm4gRW1iZXIucmVkdWNlQ29tcHV0ZWQuY2FsbChudWxsLCBkZXBlbmRlbnRL
ZXksIHsKLSAgICAgIGluaXRpYWxWYWx1ZTogLUluZmluaXR5LAotCi0gICAgICBhZGRlZEl0ZW06
IGZ1bmN0aW9uIChhY2N1bXVsYXRlZFZhbHVlLCBpdGVtLCBjaGFuZ2VNZXRhLCBpbnN0YW5jZU1l
dGEpIHsKLSAgICAgICAgcmV0dXJuIE1hdGgubWF4KGFjY3VtdWxhdGVkVmFsdWUsIGl0ZW0pOwot
ICAgICAgfSwKLQotICAgICAgcmVtb3ZlZEl0ZW06IGZ1bmN0aW9uIChhY2N1bXVsYXRlZFZhbHVl
LCBpdGVtLCBjaGFuZ2VNZXRhLCBpbnN0YW5jZU1ldGEpIHsKLSAgICAgICAgaWYgKGl0ZW0gPCBh
Y2N1bXVsYXRlZFZhbHVlKSB7Ci0gICAgICAgICAgcmV0dXJuIGFjY3VtdWxhdGVkVmFsdWU7Ci0g
ICAgICAgIH0KLSAgICAgIH0KLSAgICB9KTsKLSAgfTsKLSAgYGBgCi0KLSAgRGVwZW5kZW50IGtl
eXMgbWF5IHJlZmVyIHRvIGBAdGhpc2AgdG8gb2JzZXJ2ZSBjaGFuZ2VzIHRvIHRoZSBvYmplY3Qg
aXRzZWxmLAotICB3aGljaCBtdXN0IGJlIGFycmF5LWxpa2UsIHJhdGhlciB0aGFuIGEgcHJvcGVy
dHkgb2YgdGhlIG9iamVjdC4gIFRoaXMgaXMKLSAgbW9zdGx5IHVzZWZ1bCBmb3IgYXJyYXkgcHJv
eGllcywgdG8gZW5zdXJlIG9iamVjdHMgYXJlIHJldHJpZXZlZCB2aWEKLSAgYG9iamVjdEF0Q29u
dGVudGAuICBUaGlzIGlzIGhvdyB5b3UgY291bGQgc29ydCBpdGVtcyBieSBwcm9wZXJ0aWVzIGRl
ZmluZWQgb24gYW4gaXRlbSBjb250cm9sbGVyLgotCi0gIEV4YW1wbGUKLQotICBgYGBqYXZhc2Ny
aXB0Ci0gIEFwcC5QZW9wbGVDb250cm9sbGVyID0gRW1iZXIuQXJyYXlDb250cm9sbGVyLmV4dGVu
ZCh7Ci0gICAgaXRlbUNvbnRyb2xsZXI6ICdwZXJzb24nLAotCi0gICAgc29ydGVkUGVvcGxlOiBF
bWJlci5jb21wdXRlZC5zb3J0KCdAdGhpcy5AZWFjaC5yZXZlcnNlZE5hbWUnLCBmdW5jdGlvbihw
ZXJzb25BLCBwZXJzb25CKSB7Ci0gICAgICAvLyBgcmV2ZXJzZWROYW1lYCBpc24ndCBkZWZpbmVk
IG9uIFBlcnNvbiwgYnV0IHdlIGhhdmUgYWNjZXNzIHRvIGl0IHZpYQotICAgICAgLy8gdGhlIGl0
ZW0gY29udHJvbGxlciBBcHAuUGVyc29uQ29udHJvbGxlci4gIElmIHdlJ2QgdXNlZAotICAgICAg
Ly8gYGNvbnRlbnQuQGVhY2gucmV2ZXJzZWROYW1lYCBhYm92ZSwgd2Ugd291bGQgYmUgZ2V0dGlu
ZyB0aGUgb2JqZWN0cwotICAgICAgLy8gZGlyZWN0bHkgYW5kIG5vdCBoYXZlIGFjY2VzcyB0byBg
cmV2ZXJzZWROYW1lYC4KLSAgICAgIC8vCi0gICAgICB2YXIgcmV2ZXJzZWROYW1lQSA9IGdldChw
ZXJzb25BLCAncmV2ZXJzZWROYW1lJyksCi0gICAgICAgICAgcmV2ZXJzZWROYW1lQiA9IGdldChw
ZXJzb25CLCAncmV2ZXJzZWROYW1lJyk7Ci0KLSAgICAgIHJldHVybiBFbWJlci5jb21wYXJlKHJl
dmVyc2VkTmFtZUEsIHJldmVyc2VkTmFtZUIpOwotICAgIH0pCi0gIH0pOwotCi0gIEFwcC5QZXJz
b25Db250cm9sbGVyID0gRW1iZXIuT2JqZWN0Q29udHJvbGxlci5leHRlbmQoewotICAgIHJldmVy
c2VkTmFtZTogZnVuY3Rpb24gKCkgewotICAgICAgcmV0dXJuIHJldmVyc2UoZ2V0KHRoaXMsICdu
YW1lJykpOwotICAgIH0ucHJvcGVydHkoJ25hbWUnKQotICB9KQotICBgYGAKLQotICBEZXBlbmRl
bnQga2V5cyB3aG9zZSB2YWx1ZXMgYXJlIG5vdCBhcnJheXMgYXJlIHRyZWF0ZWQgYXMgcmVndWxh
cgotICBkZXBlbmRlbmNpZXM6IHdoZW4gdGhleSBjaGFuZ2UsIHRoZSBjb21wdXRlZCBwcm9wZXJ0
eSBpcyBjb21wbGV0ZWx5Ci0gIHJlY2FsY3VsYXRlZC4gIEl0IGlzIHNvbWV0aW1lcyB1c2VmdWwg
dG8gaGF2ZSBkZXBlbmRlbnQgYXJyYXlzIHdpdGggc2ltaWxhcgotICBzZW1hbnRpY3MuICBEZXBl
bmRlbnQga2V5cyB3aGljaCBlbmQgaW4gYC5bXWAgZG8gbm90IHVzZSAib25lIGF0IGEgdGltZSIK
LSAgc2VtYW50aWNzLiAgV2hlbiBhbiBpdGVtIGlzIGFkZGVkIG9yIHJlbW92ZWQgZnJvbSBzdWNo
IGEgZGVwZW5kZW5jeSwgdGhlCi0gIGNvbXB1dGVkIHByb3BlcnR5IGlzIGNvbXBsZXRlbHkgcmVj
b21wdXRlZC4KLQotICBFeGFtcGxlCi0KLSAgYGBgamF2YXNjcmlwdAotICBFbWJlci5PYmplY3Qu
ZXh0ZW5kKHsKLSAgICAvLyBXaGVuIGBzdHJpbmdgIGlzIGNoYW5nZWQsIGBjb21wdXRlZGAgaXMg
Y29tcGxldGVseSByZWNvbXB1dGVkLgotICAgIHN0cmluZzogJ2Egc3RyaW5nJywKLQotICAgIC8v
IFdoZW4gYW4gaXRlbSBpcyBhZGRlZCB0byBgYXJyYXlgLCBgYWRkZWRJdGVtYCBpcyBjYWxsZWQu
Ci0gICAgYXJyYXk6IFtdLAotCi0gICAgLy8gV2hlbiBhbiBpdGVtIGlzIGFkZGVkIHRvIGBhbm90
aGVyQXJyYXlgLCBgY29tcHV0ZWRgIGlzIGNvbXBsZXRlbHkKLSAgICAvLyByZWNvbXB1dGVkLgot
ICAgIGFub3RoZXJBcnJheTogW10sCi0KLSAgICBjb21wdXRlZDogRW1iZXIucmVkdWNlQ29tcHV0
ZWQoJ3N0cmluZycsICdhcnJheScsICdhbm90aGVyQXJyYXkuW10nLCB7Ci0gICAgICBhZGRlZEl0
ZW06IGFkZGVkSXRlbUNhbGxiYWNrLAotICAgICAgcmVtb3ZlZEl0ZW06IHJlbW92ZWRJdGVtQ2Fs
bGJhY2sKLSAgICB9KQotICB9KTsKLSAgYGBgCi0KLSAgQG1ldGhvZCByZWR1Y2VDb21wdXRlZAot
ICBAZm9yIEVtYmVyCi0gIEBwYXJhbSB7U3RyaW5nfSBbZGVwZW5kZW50S2V5cypdCi0gIEBwYXJh
bSB7T2JqZWN0fSBvcHRpb25zCi0gIEByZXR1cm4ge0VtYmVyLkNvbXB1dGVkUHJvcGVydHl9Ci0q
LwotRW1iZXIucmVkdWNlQ29tcHV0ZWQgPSBmdW5jdGlvbiAob3B0aW9ucykgewotICB2YXIgYXJn
czsKLQotICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHsKLSAgICBhcmdzID0gYV9zbGljZS5j
YWxsKGFyZ3VtZW50cywgMCwgLTEpOwotICAgIG9wdGlvbnMgPSBhX3NsaWNlLmNhbGwoYXJndW1l
bnRzLCAtMSlbMF07Ci0gIH0KLQotICBpZiAodHlwZW9mIG9wdGlvbnMgIT09ICJvYmplY3QiKSB7
Ci0gICAgdGhyb3cgbmV3IEVtYmVyLkVycm9yKCJSZWR1Y2UgQ29tcHV0ZWQgUHJvcGVydHkgZGVj
bGFyZWQgd2l0aG91dCBhbiBvcHRpb25zIGhhc2giKTsKLSAgfQotCi0gIGlmICghKCdpbml0aWFs
VmFsdWUnIGluIG9wdGlvbnMpKSB7Ci0gICAgdGhyb3cgbmV3IEVtYmVyLkVycm9yKCJSZWR1Y2Ug
Q29tcHV0ZWQgUHJvcGVydHkgZGVjbGFyZWQgd2l0aG91dCBhbiBpbml0aWFsIHZhbHVlIik7Ci0g
IH0KLQotICB2YXIgY3AgPSBuZXcgUmVkdWNlQ29tcHV0ZWRQcm9wZXJ0eShvcHRpb25zKTsKLQot
ICBpZiAoYXJncykgewotICAgIGNwLnByb3BlcnR5LmFwcGx5KGNwLCBhcmdzKTsKLSAgfQotCi0g
IHJldHVybiBjcDsKLX07Ci0KLX0pKCk7Ci0KLQotCi0oZnVuY3Rpb24oKSB7Ci12YXIgUmVkdWNl
Q29tcHV0ZWRQcm9wZXJ0eSA9IEVtYmVyLlJlZHVjZUNvbXB1dGVkUHJvcGVydHksCi0gICAgYV9z
bGljZSA9IFtdLnNsaWNlLAotICAgIG9fY3JlYXRlID0gRW1iZXIuY3JlYXRlLAotICAgIGZvckVh
Y2ggPSBFbWJlci5FbnVtZXJhYmxlVXRpbHMuZm9yRWFjaDsKLQotZnVuY3Rpb24gQXJyYXlDb21w
dXRlZFByb3BlcnR5KCkgewotICB2YXIgY3AgPSB0aGlzOwotCi0gIFJlZHVjZUNvbXB1dGVkUHJv
cGVydHkuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKLQotICB0aGlzLmZ1bmMgPSAoZnVuY3Rpb24o
cmVkdWNlRnVuYykgewotICAgIHJldHVybiBmdW5jdGlvbiAocHJvcGVydHlOYW1lKSB7Ci0gICAg
ICBpZiAoIWNwLl9oYXNJbnN0YW5jZU1ldGEodGhpcywgcHJvcGVydHlOYW1lKSkgewotICAgICAg
ICAvLyBXaGVuIHdlIHJlY29tcHV0ZSBhbiBhcnJheSBjb21wdXRlZCBwcm9wZXJ0eSwgd2UgbmVl
ZCBhbHJlYWR5Ci0gICAgICAgIC8vIHJldHJpZXZlZCBhcnJheXMgdG8gYmUgdXBkYXRlZDsgd2Ug
Y2FuJ3Qgc2ltcGx5IGVtcHR5IHRoZSBjYWNoZSBhbmQKLSAgICAgICAgLy8gaG9wZSB0aGUgYXJy
YXkgaXMgcmUtcmV0cmlldmVkLgotICAgICAgICBmb3JFYWNoKGNwLl9kZXBlbmRlbnRLZXlzLCBm
dW5jdGlvbihkZXBlbmRlbnRLZXkpIHsKLSAgICAgICAgICBFbWJlci5hZGRPYnNlcnZlcih0aGlz
LCBkZXBlbmRlbnRLZXksIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgY3AucmVjb21wdXRlT25j
ZS5jYWxsKHRoaXMsIHByb3BlcnR5TmFtZSk7Ci0gICAgICAgICAgfSk7Ci0gICAgICAgIH0sIHRo
aXMpOwotICAgICAgfQotCi0gICAgICByZXR1cm4gcmVkdWNlRnVuYy5hcHBseSh0aGlzLCBhcmd1
bWVudHMpOwotICAgIH07Ci0gIH0pKHRoaXMuZnVuYyk7Ci0KLSAgcmV0dXJuIHRoaXM7Ci19Ci1F
bWJlci5BcnJheUNvbXB1dGVkUHJvcGVydHkgPSBBcnJheUNvbXB1dGVkUHJvcGVydHk7Ci1BcnJh
eUNvbXB1dGVkUHJvcGVydHkucHJvdG90eXBlID0gb19jcmVhdGUoUmVkdWNlQ29tcHV0ZWRQcm9w
ZXJ0eS5wcm90b3R5cGUpOwotQXJyYXlDb21wdXRlZFByb3BlcnR5LnByb3RvdHlwZS5pbml0aWFs
VmFsdWUgPSBmdW5jdGlvbiAoKSB7Ci0gIHJldHVybiBFbWJlci5BKCk7Ci19OwotQXJyYXlDb21w
dXRlZFByb3BlcnR5LnByb3RvdHlwZS5yZXNldFZhbHVlID0gZnVuY3Rpb24gKGFycmF5KSB7Ci0g
IGFycmF5LmNsZWFyKCk7Ci0gIHJldHVybiBhcnJheTsKLX07Ci0KLS8vIFRoaXMgaXMgYSBzdG9w
Z2FwIHRvIGtlZXAgdGhlIHJlZmVyZW5jZSBjb3VudHMgY29ycmVjdCB3aXRoIGxhenkgQ1BzLgot
QXJyYXlDb21wdXRlZFByb3BlcnR5LnByb3RvdHlwZS5kaWRDaGFuZ2UgPSBmdW5jdGlvbiAob2Jq
LCBrZXlOYW1lKSB7Ci0gIHJldHVybjsKLX07Ci0KLS8qKgotICBDcmVhdGVzIGEgY29tcHV0ZWQg
cHJvcGVydHkgd2hpY2ggb3BlcmF0ZXMgb24gZGVwZW5kZW50IGFycmF5cyBhbmQKLSAgaXMgdXBk
YXRlZCB3aXRoICJvbmUgYXQgYSB0aW1lIiBzZW1hbnRpY3MuIFdoZW4gaXRlbXMgYXJlIGFkZGVk
IG9yCi0gIHJlbW92ZWQgZnJvbSB0aGUgZGVwZW5kZW50IGFycmF5KHMpIGFuIGFycmF5IGNvbXB1
dGVkIG9ubHkgb3BlcmF0ZXMKLSAgb24gdGhlIGNoYW5nZSBpbnN0ZWFkIG9mIHJlLWV2YWx1YXRp
bmcgdGhlIGVudGlyZSBhcnJheS4gVGhpcyBzaG91bGQKLSAgcmV0dXJuIGFuIGFycmF5LCBpZiB5
b3UnZCBsaWtlIHRvIHVzZSAib25lIGF0IGEgdGltZSIgc2VtYW50aWNzIGFuZAotICBjb21wdXRl
IHNvbWUgdmFsdWUgb3RoZXIgdGhlbiBhbiBhcnJheSBsb29rIGF0Ci0gIGBFbWJlci5yZWR1Y2VD
b21wdXRlZGAuCi0KLSAgSWYgdGhlcmUgYXJlIG1vcmUgdGhhbiBvbmUgYXJndW1lbnRzIHRoZSBm
aXJzdCBhcmd1bWVudHMgYXJlCi0gIGNvbnNpZGVyZWQgdG8gYmUgZGVwZW5kZW50IHByb3BlcnR5
IGtleXMuIFRoZSBsYXN0IGFyZ3VtZW50IGlzCi0gIHJlcXVpcmVkIHRvIGJlIGFuIG9wdGlvbnMg
b2JqZWN0LiBUaGUgb3B0aW9ucyBvYmplY3QgY2FuIGhhdmUgdGhlCi0gIGZvbGxvd2luZyB0aHJl
ZSBwcm9wZXJ0aWVzLgotCi0gIGBpbml0aWFsaXplYCAtIEFuIG9wdGlvbmFsIGluaXRpYWxpemUg
ZnVuY3Rpb24uIFR5cGljYWxseSB0aGlzIHdpbGwgYmUgdXNlZAotICB0byBzZXQgdXAgc3RhdGUg
b24gdGhlIGluc3RhbmNlTWV0YSBvYmplY3QuCi0KLSAgYHJlbW92ZWRJdGVtYCAtIEEgZnVuY3Rp
b24gdGhhdCBpcyBjYWxsZWQgZWFjaCB0aW1lIGFuIGVsZW1lbnQgaXMKLSAgcmVtb3ZlZCBmcm9t
IHRoZSBhcnJheS4KLQotICBgYWRkZWRJdGVtYCAtIEEgZnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQg
ZWFjaCB0aW1lIGFuIGVsZW1lbnQgaXMKLSAgYWRkZWQgdG8gdGhlIGFycmF5LgotCi0KLSAgVGhl
IGBpbml0aWFsaXplYCBmdW5jdGlvbiBoYXMgdGhlIGZvbGxvd2luZyBzaWduYXR1cmU6Ci0KLSAg
YGBgamF2YXNjcmlwdAotICAgZnVuY3Rpb24gKGFycmF5LCBjaGFuZ2VNZXRhLCBpbnN0YW5jZU1l
dGEpCi0gIGBgYAotCi0gIGBhcnJheWAgLSBUaGUgaW5pdGlhbCB2YWx1ZSBvZiB0aGUgYXJyYXlD
b21wdXRlZCwgYW4gZW1wdHkgYXJyYXkuCi0KLSAgYGNoYW5nZU1ldGFgIC0gQW4gb2JqZWN0IHdo
aWNoIGNvbnRhaW5zIG1ldGEgaW5mb3JtYXRpb24gYWJvdXQgdGhlCi0gIGNvbXB1dGVkLiBJdCBj
b250YWlucyB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6Ci0KLSAgICAgLSBgcHJvcGVydHlgIHRo
ZSBjb21wdXRlZCBwcm9wZXJ0eQotICAgICAtIGBwcm9wZXJ0eU5hbWVgIHRoZSBuYW1lIG9mIHRo
ZSBwcm9wZXJ0eSBvbiB0aGUgb2JqZWN0Ci0KLSAgYGluc3RhbmNlTWV0YWAgLSBBbiBvYmplY3Qg
dGhhdCBjYW4gYmUgdXNlZCB0byBzdG9yZSBtZXRhCi0gIGluZm9ybWF0aW9uIG5lZWRlZCBmb3Ig
Y2FsY3VsYXRpbmcgeW91ciBjb21wdXRlZC4gRm9yIGV4YW1wbGUgYQotICB1bmlxdWUgY29tcHV0
ZWQgbWlnaHQgdXNlIHRoaXMgdG8gc3RvcmUgdGhlIG51bWJlciBvZiB0aW1lcyBhIGdpdmVuCi0g
IGVsZW1lbnQgaXMgZm91bmQgaW4gdGhlIGRlcGVuZGVudCBhcnJheS4KLQotCi0gIFRoZSBgcmVt
b3ZlZEl0ZW1gIGFuZCBgYWRkZWRJdGVtYCBmdW5jdGlvbnMgYm90aCBoYXZlIHRoZSBmb2xsb3dp
bmcgc2lnbmF0dXJlOgotCi0gIGBgYGphdmFzY3JpcHQKLSAgZnVuY3Rpb24gKGFjY3VtdWxhdGVk
VmFsdWUsIGl0ZW0sIGNoYW5nZU1ldGEsIGluc3RhbmNlTWV0YSkKLSAgYGBgCi0KLSAgYGFjY3Vt
dWxhdGVkVmFsdWVgIC0gVGhlIHZhbHVlIHJldHVybmVkIGZyb20gdGhlIGxhc3QgdGltZQotICBg
cmVtb3ZlZEl0ZW1gIG9yIGBhZGRlZEl0ZW1gIHdhcyBjYWxsZWQgb3IgYW4gZW1wdHkgYXJyYXku
Ci0KLSAgYGl0ZW1gIC0gdGhlIGVsZW1lbnQgYWRkZWQgb3IgcmVtb3ZlZCBmcm9tIHRoZSBhcnJh
eQotCi0gIGBjaGFuZ2VNZXRhYCAtIEFuIG9iamVjdCB3aGljaCBjb250YWlucyBtZXRhIGluZm9y
bWF0aW9uIGFib3V0IHRoZQotICBjaGFuZ2UuIEl0IGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgcHJv
cGVydGllczoKLQotICAgIC0gYHByb3BlcnR5YCB0aGUgY29tcHV0ZWQgcHJvcGVydHkKLSAgICAt
IGBwcm9wZXJ0eU5hbWVgIHRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSBvbiB0aGUgb2JqZWN0Ci0g
ICAgLSBgaW5kZXhgIHRoZSBpbmRleCBvZiB0aGUgYWRkZWQgb3IgcmVtb3ZlZCBpdGVtCi0gICAg
LSBgaXRlbWAgdGhlIGFkZGVkIG9yIHJlbW92ZWQgaXRlbTogdGhpcyBpcyBleGFjdGx5IHRoZSBz
YW1lIGFzCi0gICAgICB0aGUgc2Vjb25kIGFyZwotICAgIC0gYGFycmF5Q2hhbmdlZGAgdGhlIGFy
cmF5IHRoYXQgdHJpZ2dlcmVkIHRoZSBjaGFuZ2UuIENhbiBiZQotICAgICAgdXNlZnVsIHdoZW4g
ZGVwZW5kaW5nIG9uIG11bHRpcGxlIGFycmF5cy4KLQotICBGb3IgcHJvcGVydHkgY2hhbmdlcyB0
cmlnZ2VyZWQgb24gYW4gaXRlbSBwcm9wZXJ0eSBjaGFuZ2UgKHdoZW4KLSAgZGVwS2V5IGlzIHNv
bWV0aGluZyBsaWtlIGBzb21lQXJyYXkuQGVhY2guc29tZVByb3BlcnR5YCksCi0gIGBjaGFuZ2VN
ZXRhYCB3aWxsIGFsc28gY29udGFpbiB0aGUgZm9sbG93aW5nIHByb3BlcnR5OgotCi0gICAgLSBg
cHJldmlvdXNWYWx1ZXNgIGFuIG9iamVjdCB3aG9zZSBrZXlzIGFyZSB0aGUgcHJvcGVydGllcyB0
aGF0IGNoYW5nZWQgb24KLSAgICB0aGUgaXRlbSwgYW5kIHdob3NlIHZhbHVlcyBhcmUgdGhlIGl0
ZW0ncyBwcmV2aW91cyB2YWx1ZXMuCi0KLSAgYHByZXZpb3VzVmFsdWVzYCBpcyBpbXBvcnRhbnQg
RW1iZXIgY29hbGVzY2VzIGl0ZW0gcHJvcGVydHkgY2hhbmdlcyB2aWEKLSAgRW1iZXIucnVuLm9u
Y2UuIFRoaXMgbWVhbnMgdGhhdCBieSB0aGUgdGltZSByZW1vdmVkSXRlbSBnZXRzIGNhbGxlZCwg
aXRlbSBoYXMKLSAgdGhlIG5ldyB2YWx1ZXMsIGJ1dCB5b3UgbWF5IG5lZWQgdGhlIHByZXZpb3Vz
IHZhbHVlIChlZyBmb3Igc29ydGluZyAmCi0gIGZpbHRlcmluZykuCi0KLSAgYGluc3RhbmNlTWV0
YWAgLSBBbiBvYmplY3QgdGhhdCBjYW4gYmUgdXNlZCB0byBzdG9yZSBtZXRhCi0gIGluZm9ybWF0
aW9uIG5lZWRlZCBmb3IgY2FsY3VsYXRpbmcgeW91ciBjb21wdXRlZC4gRm9yIGV4YW1wbGUgYQot
ICB1bmlxdWUgY29tcHV0ZWQgbWlnaHQgdXNlIHRoaXMgdG8gc3RvcmUgdGhlIG51bWJlciBvZiB0
aW1lcyBhIGdpdmVuCi0gIGVsZW1lbnQgaXMgZm91bmQgaW4gdGhlIGRlcGVuZGVudCBhcnJheS4K
LQotICBUaGUgYHJlbW92ZWRJdGVtYCBhbmQgYGFkZGVkSXRlbWAgZnVuY3Rpb25zIHNob3VsZCBy
ZXR1cm4gdGhlIGFjY3VtdWxhdGVkCi0gIHZhbHVlLiBJdCBpcyBhY2NlcHRhYmxlIHRvIG5vdCBy
ZXR1cm4gYW55dGhpbmcgKGllIHJldHVybiB1bmRlZmluZWQpCi0gIHRvIGludmFsaWRhdGUgdGhl
IGNvbXB1dGF0aW9uLiBUaGlzIGlzIGdlbmVyYWxseSBub3QgYSBnb29kIGlkZWEgZm9yCi0gIGFy
cmF5Q29tcHV0ZWQgYnV0IGl0J3MgdXNlZCBpbiBlZyBtYXggYW5kIG1pbi4KLQotICBFeGFtcGxl
Ci0KLSAgYGBgamF2YXNjcmlwdAotICBFbWJlci5jb21wdXRlZC5tYXAgPSBmdW5jdGlvbihkZXBl
bmRlbnRLZXksIGNhbGxiYWNrKSB7Ci0gICAgdmFyIG9wdGlvbnMgPSB7Ci0gICAgICBhZGRlZEl0
ZW06IGZ1bmN0aW9uKGFycmF5LCBpdGVtLCBjaGFuZ2VNZXRhLCBpbnN0YW5jZU1ldGEpIHsKLSAg
ICAgICAgdmFyIG1hcHBlZCA9IGNhbGxiYWNrKGl0ZW0pOwotICAgICAgICBhcnJheS5pbnNlcnRB
dChjaGFuZ2VNZXRhLmluZGV4LCBtYXBwZWQpOwotICAgICAgICByZXR1cm4gYXJyYXk7Ci0gICAg
ICB9LAotICAgICAgcmVtb3ZlZEl0ZW06IGZ1bmN0aW9uKGFycmF5LCBpdGVtLCBjaGFuZ2VNZXRh
LCBpbnN0YW5jZU1ldGEpIHsKLSAgICAgICAgYXJyYXkucmVtb3ZlQXQoY2hhbmdlTWV0YS5pbmRl
eCwgMSk7Ci0gICAgICAgIHJldHVybiBhcnJheTsKLSAgICAgIH0KLSAgICB9OwotCi0gICAgcmV0
dXJuIEVtYmVyLmFycmF5Q29tcHV0ZWQoZGVwZW5kZW50S2V5LCBvcHRpb25zKTsKLSAgfTsKLSAg
YGBgCi0KLSAgQG1ldGhvZCBhcnJheUNvbXB1dGVkCi0gIEBmb3IgRW1iZXIKLSAgQHBhcmFtIHtT
dHJpbmd9IFtkZXBlbmRlbnRLZXlzKl0KLSAgQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMKLSAgQHJl
dHVybiB7RW1iZXIuQ29tcHV0ZWRQcm9wZXJ0eX0KLSovCi1FbWJlci5hcnJheUNvbXB1dGVkID0g
ZnVuY3Rpb24gKG9wdGlvbnMpIHsKLSAgdmFyIGFyZ3M7Ci0KLSAgaWYgKGFyZ3VtZW50cy5sZW5n
dGggPiAxKSB7Ci0gICAgYXJncyA9IGFfc2xpY2UuY2FsbChhcmd1bWVudHMsIDAsIC0xKTsKLSAg
ICBvcHRpb25zID0gYV9zbGljZS5jYWxsKGFyZ3VtZW50cywgLTEpWzBdOwotICB9Ci0KLSAgaWYg
KHR5cGVvZiBvcHRpb25zICE9PSAib2JqZWN0IikgewotICAgIHRocm93IG5ldyBFbWJlci5FcnJv
cigiQXJyYXkgQ29tcHV0ZWQgUHJvcGVydHkgZGVjbGFyZWQgd2l0aG91dCBhbiBvcHRpb25zIGhh
c2giKTsKLSAgfQotCi0gIHZhciBjcCA9IG5ldyBBcnJheUNvbXB1dGVkUHJvcGVydHkob3B0aW9u
cyk7Ci0KLSAgaWYgKGFyZ3MpIHsKLSAgICBjcC5wcm9wZXJ0eS5hcHBseShjcCwgYXJncyk7Ci0g
IH0KLQotICByZXR1cm4gY3A7Ci19OwotCi19KSgpOwotCi0KLQotKGZ1bmN0aW9uKCkgewotLyoq
Ci1AbW9kdWxlIGVtYmVyCi1Ac3VibW9kdWxlIGVtYmVyLXJ1bnRpbWUKLSovCi0KLXZhciBnZXQg
PSBFbWJlci5nZXQsCi0gICAgc2V0ID0gRW1iZXIuc2V0LAotICAgIGd1aWRGb3IgPSBFbWJlci5n
dWlkRm9yLAotICAgIG1lcmdlID0gRW1iZXIubWVyZ2UsCi0gICAgYV9zbGljZSA9IFtdLnNsaWNl
LAotICAgIGZvckVhY2ggPSBFbWJlci5FbnVtZXJhYmxlVXRpbHMuZm9yRWFjaCwKLSAgICBtYXAg
PSBFbWJlci5FbnVtZXJhYmxlVXRpbHMubWFwLAotICAgIFNlYXJjaFByb3h5OwotCi0vKioKLSAg
QSBjb21wdXRlZCBwcm9wZXJ0eSB0aGF0IGNhbGN1bGF0ZXMgdGhlIG1heGltdW0gdmFsdWUgaW4g
dGhlCi0gIGRlcGVuZGVudCBhcnJheS4gVGhpcyB3aWxsIHJldHVybiBgLUluZmluaXR5YCB3aGVu
IHRoZSBkZXBlbmRlbnQKLSAgYXJyYXkgaXMgZW1wdHkuCi0KLSAgYGBgamF2YXNjcmlwdAotICBB
cHAuUGVyc29uID0gRW1iZXIuT2JqZWN0LmV4dGVuZCh7Ci0gICAgY2hpbGRBZ2VzOiBFbWJlci5j
b21wdXRlZC5tYXBCeSgnY2hpbGRyZW4nLCAnYWdlJyksCi0gICAgbWF4Q2hpbGRBZ2U6IEVtYmVy
LmNvbXB1dGVkLm1heCgnY2hpbGRBZ2VzJykKLSAgfSk7Ci0KLSAgdmFyIGxvcmRCeXJvbiA9IEFw
cC5QZXJzb24uY3JlYXRlKHtjaGlsZHJlbjogW119KTsKLSAgbG9yZEJ5cm9uLmdldCgnbWF4Q2hp
bGRBZ2UnKTsgLy8gLUluZmluaXR5Ci0gIGxvcmRCeXJvbi5nZXQoJ2NoaWxkcmVuJykucHVzaE9i
amVjdCh7Ci0gICAgbmFtZTogJ0F1Z3VzdGEgQWRhIEJ5cm9uJywgYWdlOiA3Ci0gIH0pOwotICBs
b3JkQnlyb24uZ2V0KCdtYXhDaGlsZEFnZScpOyAvLyA3Ci0gIGxvcmRCeXJvbi5nZXQoJ2NoaWxk
cmVuJykucHVzaE9iamVjdHMoW3sKLSAgICBuYW1lOiAnQWxsZWdyYSBCeXJvbicsCi0gICAgYWdl
OiA1Ci0gIH0sIHsKLSAgICBuYW1lOiAnRWxpemFiZXRoIE1lZG9yYSBMZWlnaCcsCi0gICAgYWdl
OiA4Ci0gIH1dKTsKLSAgbG9yZEJ5cm9uLmdldCgnbWF4Q2hpbGRBZ2UnKTsgLy8gOAotICBgYGAK
LQotICBAbWV0aG9kIGNvbXB1dGVkLm1heAotICBAZm9yIEVtYmVyCi0gIEBwYXJhbSB7U3RyaW5n
fSBkZXBlbmRlbnRLZXkKLSAgQHJldHVybiB7RW1iZXIuQ29tcHV0ZWRQcm9wZXJ0eX0gY29tcHV0
ZXMgdGhlIGxhcmdlc3QgdmFsdWUgaW4gdGhlIGRlcGVuZGVudEtleSdzIGFycmF5Ci0qLwotRW1i
ZXIuY29tcHV0ZWQubWF4ID0gZnVuY3Rpb24gKGRlcGVuZGVudEtleSkgewotICByZXR1cm4gRW1i
ZXIucmVkdWNlQ29tcHV0ZWQuY2FsbChudWxsLCBkZXBlbmRlbnRLZXksIHsKLSAgICBpbml0aWFs
VmFsdWU6IC1JbmZpbml0eSwKLQotICAgIGFkZGVkSXRlbTogZnVuY3Rpb24gKGFjY3VtdWxhdGVk
VmFsdWUsIGl0ZW0sIGNoYW5nZU1ldGEsIGluc3RhbmNlTWV0YSkgewotICAgICAgcmV0dXJuIE1h
dGgubWF4KGFjY3VtdWxhdGVkVmFsdWUsIGl0ZW0pOwotICAgIH0sCi0KLSAgICByZW1vdmVkSXRl
bTogZnVuY3Rpb24gKGFjY3VtdWxhdGVkVmFsdWUsIGl0ZW0sIGNoYW5nZU1ldGEsIGluc3RhbmNl
TWV0YSkgewotICAgICAgaWYgKGl0ZW0gPCBhY2N1bXVsYXRlZFZhbHVlKSB7Ci0gICAgICAgIHJl
dHVybiBhY2N1bXVsYXRlZFZhbHVlOwotICAgICAgfQotICAgIH0KLSAgfSk7Ci19OwotCi0vKioK
LSAgQSBjb21wdXRlZCBwcm9wZXJ0eSB0aGF0IGNhbGN1bGF0ZXMgdGhlIG1pbmltdW0gdmFsdWUg
aW4gdGhlCi0gIGRlcGVuZGVudCBhcnJheS4gVGhpcyB3aWxsIHJldHVybiBgSW5maW5pdHlgIHdo
ZW4gdGhlIGRlcGVuZGVudAotICBhcnJheSBpcyBlbXB0eS4KLQotICBgYGBqYXZhc2NyaXB0Ci0g
IEFwcC5QZXJzb24gPSBFbWJlci5PYmplY3QuZXh0ZW5kKHsKLSAgICBjaGlsZEFnZXM6IEVtYmVy
LmNvbXB1dGVkLm1hcEJ5KCdjaGlsZHJlbicsICdhZ2UnKSwKLSAgICBtaW5DaGlsZEFnZTogRW1i
ZXIuY29tcHV0ZWQubWluKCdjaGlsZEFnZXMnKQotICB9KTsKLQotICB2YXIgbG9yZEJ5cm9uID0g
QXBwLlBlcnNvbi5jcmVhdGUoe2NoaWxkcmVuOiBbXX0pOwotICBsb3JkQnlyb24uZ2V0KCdtaW5D
aGlsZEFnZScpOyAvLyBJbmZpbml0eQotICBsb3JkQnlyb24uZ2V0KCdjaGlsZHJlbicpLnB1c2hP
YmplY3QoewotICAgIG5hbWU6ICdBdWd1c3RhIEFkYSBCeXJvbicsIGFnZTogNwotICB9KTsKLSAg
bG9yZEJ5cm9uLmdldCgnbWluQ2hpbGRBZ2UnKTsgLy8gNwotICBsb3JkQnlyb24uZ2V0KCdjaGls
ZHJlbicpLnB1c2hPYmplY3RzKFt7Ci0gICAgbmFtZTogJ0FsbGVncmEgQnlyb24nLAotICAgIGFn
ZTogNQotICB9LCB7Ci0gICAgbmFtZTogJ0VsaXphYmV0aCBNZWRvcmEgTGVpZ2gnLAotICAgIGFn
ZTogOAotICB9XSk7Ci0gIGxvcmRCeXJvbi5nZXQoJ21pbkNoaWxkQWdlJyk7IC8vIDUKLSAgYGBg
Ci0KLSAgQG1ldGhvZCBjb21wdXRlZC5taW4KLSAgQGZvciBFbWJlcgotICBAcGFyYW0ge1N0cmlu
Z30gZGVwZW5kZW50S2V5Ci0gIEByZXR1cm4ge0VtYmVyLkNvbXB1dGVkUHJvcGVydHl9IGNvbXB1
dGVzIHRoZSBzbWFsbGVzdCB2YWx1ZSBpbiB0aGUgZGVwZW5kZW50S2V5J3MgYXJyYXkKLSovCi1F
bWJlci5jb21wdXRlZC5taW4gPSBmdW5jdGlvbiAoZGVwZW5kZW50S2V5KSB7Ci0gIHJldHVybiBF
bWJlci5yZWR1Y2VDb21wdXRlZC5jYWxsKG51bGwsIGRlcGVuZGVudEtleSwgewotICAgIGluaXRp
YWxWYWx1ZTogSW5maW5pdHksCi0KLSAgICBhZGRlZEl0ZW06IGZ1bmN0aW9uIChhY2N1bXVsYXRl
ZFZhbHVlLCBpdGVtLCBjaGFuZ2VNZXRhLCBpbnN0YW5jZU1ldGEpIHsKLSAgICAgIHJldHVybiBN
YXRoLm1pbihhY2N1bXVsYXRlZFZhbHVlLCBpdGVtKTsKLSAgICB9LAotCi0gICAgcmVtb3ZlZEl0
ZW06IGZ1bmN0aW9uIChhY2N1bXVsYXRlZFZhbHVlLCBpdGVtLCBjaGFuZ2VNZXRhLCBpbnN0YW5j
ZU1ldGEpIHsKLSAgICAgIGlmIChpdGVtID4gYWNjdW11bGF0ZWRWYWx1ZSkgewotICAgICAgICBy
ZXR1cm4gYWNjdW11bGF0ZWRWYWx1ZTsKLSAgICAgIH0KLSAgICB9Ci0gIH0pOwotfTsKLQotLyoq
Ci0gIFJldHVybnMgYW4gYXJyYXkgbWFwcGVkIHZpYSB0aGUgY2FsbGJhY2sKLQotICBUaGUgY2Fs
bGJhY2sgbWV0aG9kIHlvdSBwcm92aWRlIHNob3VsZCBoYXZlIHRoZSBmb2xsb3dpbmcgc2lnbmF0
dXJlLgotICBgaXRlbWAgaXMgdGhlIGN1cnJlbnQgaXRlbSBpbiB0aGUgaXRlcmF0aW9uLgotCi0g
IGBgYGphdmFzY3JpcHQKLSAgZnVuY3Rpb24oaXRlbSk7Ci0gIGBgYAotCi0gIEV4YW1wbGUKLQot
ICBgYGBqYXZhc2NyaXB0Ci0gIEFwcC5IYW1zdGVyID0gRW1iZXIuT2JqZWN0LmV4dGVuZCh7Ci0g
ICAgZXhjaXRpbmdDaG9yZXM6IEVtYmVyLmNvbXB1dGVkLm1hcCgnY2hvcmVzJywgZnVuY3Rpb24o
Y2hvcmUpIHsKLSAgICAgIHJldHVybiBjaG9yZS50b1VwcGVyQ2FzZSgpICsgJyEnOwotICAgIH0p
Ci0gIH0pOwotCi0gIHZhciBoYW1zdGVyID0gQXBwLkhhbXN0ZXIuY3JlYXRlKHsKLSAgICBjaG9y
ZXM6IFsnY2xlYW4nLCAnd3JpdGUgbW9yZSB1bml0IHRlc3RzJ10KLSAgfSk7Ci0gIGhhbXN0ZXIu
Z2V0KCdleGNpdGluZ0Nob3JlcycpOyAvLyBbJ0NMRUFOIScsICdXUklURSBNT1JFIFVOSVQgVEVT
VFMhJ10KLSAgYGBgCi0KLSAgQG1ldGhvZCBjb21wdXRlZC5tYXAKLSAgQGZvciBFbWJlcgotICBA
cGFyYW0ge1N0cmluZ30gZGVwZW5kZW50S2V5Ci0gIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNr
Ci0gIEByZXR1cm4ge0VtYmVyLkNvbXB1dGVkUHJvcGVydHl9IGFuIGFycmF5IG1hcHBlZCB2aWEg
dGhlIGNhbGxiYWNrCi0qLwotRW1iZXIuY29tcHV0ZWQubWFwID0gZnVuY3Rpb24oZGVwZW5kZW50
S2V5LCBjYWxsYmFjaykgewotICB2YXIgb3B0aW9ucyA9IHsKLSAgICBhZGRlZEl0ZW06IGZ1bmN0
aW9uKGFycmF5LCBpdGVtLCBjaGFuZ2VNZXRhLCBpbnN0YW5jZU1ldGEpIHsKLSAgICAgIHZhciBt
YXBwZWQgPSBjYWxsYmFjay5jYWxsKHRoaXMsIGl0ZW0pOwotICAgICAgYXJyYXkuaW5zZXJ0QXQo
Y2hhbmdlTWV0YS5pbmRleCwgbWFwcGVkKTsKLSAgICAgIHJldHVybiBhcnJheTsKLSAgICB9LAot
ICAgIHJlbW92ZWRJdGVtOiBmdW5jdGlvbihhcnJheSwgaXRlbSwgY2hhbmdlTWV0YSwgaW5zdGFu
Y2VNZXRhKSB7Ci0gICAgICBhcnJheS5yZW1vdmVBdChjaGFuZ2VNZXRhLmluZGV4LCAxKTsKLSAg
ICAgIHJldHVybiBhcnJheTsKLSAgICB9Ci0gIH07Ci0KLSAgcmV0dXJuIEVtYmVyLmFycmF5Q29t
cHV0ZWQoZGVwZW5kZW50S2V5LCBvcHRpb25zKTsKLX07Ci0KLS8qKgotICBSZXR1cm5zIGFuIGFy
cmF5IG1hcHBlZCB0byB0aGUgc3BlY2lmaWVkIGtleS4KLQotICBgYGBqYXZhc2NyaXB0Ci0gIEFw
cC5QZXJzb24gPSBFbWJlci5PYmplY3QuZXh0ZW5kKHsKLSAgICBjaGlsZEFnZXM6IEVtYmVyLmNv
bXB1dGVkLm1hcEJ5KCdjaGlsZHJlbicsICdhZ2UnKQotICB9KTsKLQotICB2YXIgbG9yZEJ5cm9u
ID0gQXBwLlBlcnNvbi5jcmVhdGUoe2NoaWxkcmVuOiBbXX0pOwotICBsb3JkQnlyb24uZ2V0KCdj
aGlsZEFnZXMnKTsgLy8gW10KLSAgbG9yZEJ5cm9uLmdldCgnY2hpbGRyZW4nKS5wdXNoT2JqZWN0
KHtuYW1lOiAnQXVndXN0YSBBZGEgQnlyb24nLCBhZ2U6IDd9KTsKLSAgbG9yZEJ5cm9uLmdldCgn
Y2hpbGRBZ2VzJyk7IC8vIFs3XQotICBsb3JkQnlyb24uZ2V0KCdjaGlsZHJlbicpLnB1c2hPYmpl
Y3RzKFt7Ci0gICAgbmFtZTogJ0FsbGVncmEgQnlyb24nLAotICAgIGFnZTogNQotICB9LCB7Ci0g
ICAgbmFtZTogJ0VsaXphYmV0aCBNZWRvcmEgTGVpZ2gnLAotICAgIGFnZTogOAotICB9XSk7Ci0g
IGxvcmRCeXJvbi5nZXQoJ2NoaWxkQWdlcycpOyAvLyBbNywgNSwgOF0KLSAgYGBgCi0KLSAgQG1l
dGhvZCBjb21wdXRlZC5tYXBCeQotICBAZm9yIEVtYmVyCi0gIEBwYXJhbSB7U3RyaW5nfSBkZXBl
bmRlbnRLZXkKLSAgQHBhcmFtIHtTdHJpbmd9IHByb3BlcnR5S2V5Ci0gIEByZXR1cm4ge0VtYmVy
LkNvbXB1dGVkUHJvcGVydHl9IGFuIGFycmF5IG1hcHBlZCB0byB0aGUgc3BlY2lmaWVkIGtleQot
Ki8KLUVtYmVyLmNvbXB1dGVkLm1hcEJ5ID0gZnVuY3Rpb24oZGVwZW5kZW50S2V5LCBwcm9wZXJ0
eUtleSkgewotICB2YXIgY2FsbGJhY2sgPSBmdW5jdGlvbihpdGVtKSB7IHJldHVybiBnZXQoaXRl
bSwgcHJvcGVydHlLZXkpOyB9OwotICByZXR1cm4gRW1iZXIuY29tcHV0ZWQubWFwKGRlcGVuZGVu
dEtleSArICcuQGVhY2guJyArIHByb3BlcnR5S2V5LCBjYWxsYmFjayk7Ci19OwotCi0vKioKLSAg
QG1ldGhvZCBjb21wdXRlZC5tYXBQcm9wZXJ0eQotICBAZm9yIEVtYmVyCi0gIEBkZXByZWNhdGVk
IFVzZSBgRW1iZXIuY29tcHV0ZWQubWFwQnlgIGluc3RlYWQKLSAgQHBhcmFtIGRlcGVuZGVudEtl
eQotICBAcGFyYW0gcHJvcGVydHlLZXkKLSovCi1FbWJlci5jb21wdXRlZC5tYXBQcm9wZXJ0eSA9
IEVtYmVyLmNvbXB1dGVkLm1hcEJ5OwotCi0vKioKLSAgRmlsdGVycyB0aGUgYXJyYXkgYnkgdGhl
IGNhbGxiYWNrLgotCi0gIFRoZSBjYWxsYmFjayBtZXRob2QgeW91IHByb3ZpZGUgc2hvdWxkIGhh
dmUgdGhlIGZvbGxvd2luZyBzaWduYXR1cmUuCi0gIGBpdGVtYCBpcyB0aGUgY3VycmVudCBpdGVt
IGluIHRoZSBpdGVyYXRpb24uCi0KLSAgYGBgamF2YXNjcmlwdAotICBmdW5jdGlvbihpdGVtKTsK
LSAgYGBgCi0KLSAgYGBgamF2YXNjcmlwdAotICBBcHAuSGFtc3RlciA9IEVtYmVyLk9iamVjdC5l
eHRlbmQoewotICAgIHJlbWFpbmluZ0Nob3JlczogRW1iZXIuY29tcHV0ZWQuZmlsdGVyKCdjaG9y
ZXMnLCBmdW5jdGlvbihjaG9yZSkgewotICAgICAgcmV0dXJuICFjaG9yZS5kb25lOwotICAgIH0p
Ci0gIH0pOwotCi0gIHZhciBoYW1zdGVyID0gQXBwLkhhbXN0ZXIuY3JlYXRlKHtjaG9yZXM6IFsK
LSAgICB7bmFtZTogJ2Nvb2snLCBkb25lOiB0cnVlfSwKLSAgICB7bmFtZTogJ2NsZWFuJywgZG9u
ZTogdHJ1ZX0sCi0gICAge25hbWU6ICd3cml0ZSBtb3JlIHVuaXQgdGVzdHMnLCBkb25lOiBmYWxz
ZX0KLSAgXX0pOwotICBoYW1zdGVyLmdldCgncmVtYWluaW5nQ2hvcmVzJyk7IC8vIFt7bmFtZTog
J3dyaXRlIG1vcmUgdW5pdCB0ZXN0cycsIGRvbmU6IGZhbHNlfV0KLSAgYGBgCi0KLSAgQG1ldGhv
ZCBjb21wdXRlZC5maWx0ZXIKLSAgQGZvciBFbWJlcgotICBAcGFyYW0ge1N0cmluZ30gZGVwZW5k
ZW50S2V5Ci0gIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrCi0gIEByZXR1cm4ge0VtYmVyLkNv
bXB1dGVkUHJvcGVydHl9IHRoZSBmaWx0ZXJlZCBhcnJheQotKi8KLUVtYmVyLmNvbXB1dGVkLmZp
bHRlciA9IGZ1bmN0aW9uKGRlcGVuZGVudEtleSwgY2FsbGJhY2spIHsKLSAgdmFyIG9wdGlvbnMg
PSB7Ci0gICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24gKGFycmF5LCBjaGFuZ2VNZXRhLCBpbnN0YW5j
ZU1ldGEpIHsKLSAgICAgIGluc3RhbmNlTWV0YS5maWx0ZXJlZEFycmF5SW5kZXhlcyA9IG5ldyBF
bWJlci5TdWJBcnJheSgpOwotICAgIH0sCi0KLSAgICBhZGRlZEl0ZW06IGZ1bmN0aW9uKGFycmF5
LCBpdGVtLCBjaGFuZ2VNZXRhLCBpbnN0YW5jZU1ldGEpIHsKLSAgICAgIHZhciBtYXRjaCA9ICEh
Y2FsbGJhY2suY2FsbCh0aGlzLCBpdGVtKSwKLSAgICAgICAgICBmaWx0ZXJJbmRleCA9IGluc3Rh
bmNlTWV0YS5maWx0ZXJlZEFycmF5SW5kZXhlcy5hZGRJdGVtKGNoYW5nZU1ldGEuaW5kZXgsIG1h
dGNoKTsKLQotICAgICAgaWYgKG1hdGNoKSB7Ci0gICAgICAgIGFycmF5Lmluc2VydEF0KGZpbHRl
ckluZGV4LCBpdGVtKTsKLSAgICAgIH0KLQotICAgICAgcmV0dXJuIGFycmF5OwotICAgIH0sCi0K
LSAgICByZW1vdmVkSXRlbTogZnVuY3Rpb24oYXJyYXksIGl0ZW0sIGNoYW5nZU1ldGEsIGluc3Rh
bmNlTWV0YSkgewotICAgICAgdmFyIGZpbHRlckluZGV4ID0gaW5zdGFuY2VNZXRhLmZpbHRlcmVk
QXJyYXlJbmRleGVzLnJlbW92ZUl0ZW0oY2hhbmdlTWV0YS5pbmRleCk7Ci0KLSAgICAgIGlmIChm
aWx0ZXJJbmRleCA+IC0xKSB7Ci0gICAgICAgIGFycmF5LnJlbW92ZUF0KGZpbHRlckluZGV4KTsK
LSAgICAgIH0KLQotICAgICAgcmV0dXJuIGFycmF5OwotICAgIH0KLSAgfTsKLQotICByZXR1cm4g
RW1iZXIuYXJyYXlDb21wdXRlZChkZXBlbmRlbnRLZXksIG9wdGlvbnMpOwotfTsKLQotLyoqCi0g
IEZpbHRlcnMgdGhlIGFycmF5IGJ5IHRoZSBwcm9wZXJ0eSBhbmQgdmFsdWUKLQotICBgYGBqYXZh
c2NyaXB0Ci0gIEFwcC5IYW1zdGVyID0gRW1iZXIuT2JqZWN0LmV4dGVuZCh7Ci0gICAgcmVtYWlu
aW5nQ2hvcmVzOiBFbWJlci5jb21wdXRlZC5maWx0ZXJCeSgnY2hvcmVzJywgJ2RvbmUnLCBmYWxz
ZSkKLSAgfSk7Ci0KLSAgdmFyIGhhbXN0ZXIgPSBBcHAuSGFtc3Rlci5jcmVhdGUoe2Nob3Jlczog
WwotICAgIHtuYW1lOiAnY29vaycsIGRvbmU6IHRydWV9LAotICAgIHtuYW1lOiAnY2xlYW4nLCBk
b25lOiB0cnVlfSwKLSAgICB7bmFtZTogJ3dyaXRlIG1vcmUgdW5pdCB0ZXN0cycsIGRvbmU6IGZh
bHNlfQotICBdfSk7Ci0gIGhhbXN0ZXIuZ2V0KCdyZW1haW5pbmdDaG9yZXMnKTsgLy8gW3tuYW1l
OiAnd3JpdGUgbW9yZSB1bml0IHRlc3RzJywgZG9uZTogZmFsc2V9XQotICBgYGAKLQotICBAbWV0
aG9kIGNvbXB1dGVkLmZpbHRlckJ5Ci0gIEBmb3IgRW1iZXIKLSAgQHBhcmFtIHtTdHJpbmd9IGRl
cGVuZGVudEtleQotICBAcGFyYW0ge1N0cmluZ30gcHJvcGVydHlLZXkKLSAgQHBhcmFtIHtTdHJp
bmd9IHZhbHVlCi0gIEByZXR1cm4ge0VtYmVyLkNvbXB1dGVkUHJvcGVydHl9IHRoZSBmaWx0ZXJl
ZCBhcnJheQotKi8KLUVtYmVyLmNvbXB1dGVkLmZpbHRlckJ5ID0gZnVuY3Rpb24oZGVwZW5kZW50
S2V5LCBwcm9wZXJ0eUtleSwgdmFsdWUpIHsKLSAgdmFyIGNhbGxiYWNrOwotCi0gIGlmIChhcmd1
bWVudHMubGVuZ3RoID09PSAyKSB7Ci0gICAgY2FsbGJhY2sgPSBmdW5jdGlvbihpdGVtKSB7Ci0g
ICAgICByZXR1cm4gZ2V0KGl0ZW0sIHByb3BlcnR5S2V5KTsKLSAgICB9OwotICB9IGVsc2Ugewot
ICAgIGNhbGxiYWNrID0gZnVuY3Rpb24oaXRlbSkgewotICAgICAgcmV0dXJuIGdldChpdGVtLCBw
cm9wZXJ0eUtleSkgPT09IHZhbHVlOwotICAgIH07Ci0gIH0KLQotICByZXR1cm4gRW1iZXIuY29t
cHV0ZWQuZmlsdGVyKGRlcGVuZGVudEtleSArICcuQGVhY2guJyArIHByb3BlcnR5S2V5LCBjYWxs
YmFjayk7Ci19OwotCi0vKioKLSAgQG1ldGhvZCBjb21wdXRlZC5maWx0ZXJQcm9wZXJ0eQotICBA
Zm9yIEVtYmVyCi0gIEBwYXJhbSBkZXBlbmRlbnRLZXkKLSAgQHBhcmFtIHByb3BlcnR5S2V5Ci0g
IEBwYXJhbSB2YWx1ZQotICBAZGVwcmVjYXRlZCBVc2UgYEVtYmVyLmNvbXB1dGVkLmZpbHRlckJ5
YCBpbnN0ZWFkCi0qLwotRW1iZXIuY29tcHV0ZWQuZmlsdGVyUHJvcGVydHkgPSBFbWJlci5jb21w
dXRlZC5maWx0ZXJCeTsKLQotLyoqCi0gIEEgY29tcHV0ZWQgcHJvcGVydHkgd2hpY2ggcmV0dXJu
cyBhIG5ldyBhcnJheSB3aXRoIGFsbCB0aGUgdW5pcXVlCi0gIGVsZW1lbnRzIGZyb20gb25lIG9y
IG1vcmUgZGVwZW5kZW50IGFycmF5cy4KLQotICBFeGFtcGxlCi0KLSAgYGBgamF2YXNjcmlwdAot
ICBBcHAuSGFtc3RlciA9IEVtYmVyLk9iamVjdC5leHRlbmQoewotICAgIHVuaXF1ZUZydWl0czog
RW1iZXIuY29tcHV0ZWQudW5pcSgnZnJ1aXRzJykKLSAgfSk7Ci0KLSAgdmFyIGhhbXN0ZXIgPSBB
cHAuSGFtc3Rlci5jcmVhdGUoe2ZydWl0czogWwotICAgICdiYW5hbmEnLAotICAgICdncmFwZScs
Ci0gICAgJ2thbGUnLAotICAgICdiYW5hbmEnCi0gIF19KTsKLSAgaGFtc3Rlci5nZXQoJ3VuaXF1
ZUZydWl0cycpOyAvLyBbJ2JhbmFuYScsICdncmFwZScsICdrYWxlJ10KLSAgYGBgCi0KLSAgQG1l
dGhvZCBjb21wdXRlZC51bmlxCi0gIEBmb3IgRW1iZXIKLSAgQHBhcmFtIHtTdHJpbmd9IHByb3Bl
cnR5S2V5KgotICBAcmV0dXJuIHtFbWJlci5Db21wdXRlZFByb3BlcnR5fSBjb21wdXRlcyBhIG5l
dyBhcnJheSB3aXRoIGFsbCB0aGUKLSAgdW5pcXVlIGVsZW1lbnRzIGZyb20gdGhlIGRlcGVuZGVu
dCBhcnJheQotKi8KLUVtYmVyLmNvbXB1dGVkLnVuaXEgPSBmdW5jdGlvbigpIHsKLSAgdmFyIGFy
Z3MgPSBhX3NsaWNlLmNhbGwoYXJndW1lbnRzKTsKLSAgYXJncy5wdXNoKHsKLSAgICBpbml0aWFs
aXplOiBmdW5jdGlvbihhcnJheSwgY2hhbmdlTWV0YSwgaW5zdGFuY2VNZXRhKSB7Ci0gICAgICBp
bnN0YW5jZU1ldGEuaXRlbUNvdW50cyA9IHt9OwotICAgIH0sCi0KLSAgICBhZGRlZEl0ZW06IGZ1
bmN0aW9uKGFycmF5LCBpdGVtLCBjaGFuZ2VNZXRhLCBpbnN0YW5jZU1ldGEpIHsKLSAgICAgIHZh
ciBndWlkID0gZ3VpZEZvcihpdGVtKTsKLQotICAgICAgaWYgKCFpbnN0YW5jZU1ldGEuaXRlbUNv
dW50c1tndWlkXSkgewotICAgICAgICBpbnN0YW5jZU1ldGEuaXRlbUNvdW50c1tndWlkXSA9IDE7
Ci0gICAgICB9IGVsc2UgewotICAgICAgICArK2luc3RhbmNlTWV0YS5pdGVtQ291bnRzW2d1aWRd
OwotICAgICAgfQotICAgICAgYXJyYXkuYWRkT2JqZWN0KGl0ZW0pOwotICAgICAgcmV0dXJuIGFy
cmF5OwotICAgIH0sCi0gICAgcmVtb3ZlZEl0ZW06IGZ1bmN0aW9uKGFycmF5LCBpdGVtLCBfLCBp
bnN0YW5jZU1ldGEpIHsKLSAgICAgIHZhciBndWlkID0gZ3VpZEZvcihpdGVtKSwKLSAgICAgICAg
ICBpdGVtQ291bnRzID0gaW5zdGFuY2VNZXRhLml0ZW1Db3VudHM7Ci0KLSAgICAgIGlmICgtLWl0
ZW1Db3VudHNbZ3VpZF0gPT09IDApIHsKLSAgICAgICAgYXJyYXkucmVtb3ZlT2JqZWN0KGl0ZW0p
OwotICAgICAgfQotICAgICAgcmV0dXJuIGFycmF5OwotICAgIH0KLSAgfSk7Ci0gIHJldHVybiBF
bWJlci5hcnJheUNvbXB1dGVkLmFwcGx5KG51bGwsIGFyZ3MpOwotfTsKLQotLyoqCi0gIEFsaWFz
IGZvciBbRW1iZXIuY29tcHV0ZWQudW5pcV0oL2FwaS8jbWV0aG9kX2NvbXB1dGVkX3VuaXEpLgot
Ci0gIEBtZXRob2QgY29tcHV0ZWQudW5pb24KLSAgQGZvciBFbWJlcgotICBAcGFyYW0ge1N0cmlu
Z30gcHJvcGVydHlLZXkqCi0gIEByZXR1cm4ge0VtYmVyLkNvbXB1dGVkUHJvcGVydHl9IGNvbXB1
dGVzIGEgbmV3IGFycmF5IHdpdGggYWxsIHRoZQotICB1bmlxdWUgZWxlbWVudHMgZnJvbSB0aGUg
ZGVwZW5kZW50IGFycmF5Ci0qLwotRW1iZXIuY29tcHV0ZWQudW5pb24gPSBFbWJlci5jb21wdXRl
ZC51bmlxOwotCi0vKioKLSAgQSBjb21wdXRlZCBwcm9wZXJ0eSB3aGljaCByZXR1cm5zIGEgbmV3
IGFycmF5IHdpdGggYWxsIHRoZSBkdXBsaWNhdGVkCi0gIGVsZW1lbnRzIGZyb20gdHdvIG9yIG1v
cmUgZGVwZW5kZW55IGFycmF5cy4KLQotICBFeGFtcGxlCi0KLSAgYGBgamF2YXNjcmlwdAotICB2
YXIgb2JqID0gRW1iZXIuT2JqZWN0LmNyZWF0ZVdpdGhNaXhpbnMoewotICAgIGFkYUZyaWVuZHM6
IFsnQ2hhcmxlcyBCYWJiYWdlJywgJ0pvaG4gSG9iaG91c2UnLCAnV2lsbGlhbSBLaW5nJywgJ01h
cnkgU29tZXJ2aWxsZSddLAotICAgIGNoYXJsZXNGcmllbmRzOiBbJ1dpbGxpYW0gS2luZycsICdN
YXJ5IFNvbWVydmlsbGUnLCAnQWRhIExvdmVsYWNlJywgJ0dlb3JnZSBQZWFjb2NrJ10sCi0gICAg
ZnJpZW5kc0luQ29tbW9uOiBFbWJlci5jb21wdXRlZC5pbnRlcnNlY3QoJ2FkYUZyaWVuZHMnLCAn
Y2hhcmxlc0ZyaWVuZHMnKQotICB9KTsKLQotICBvYmouZ2V0KCdmcmllbmRzSW5Db21tb24nKTsg
Ly8gWydXaWxsaWFtIEtpbmcnLCAnTWFyeSBTb21lcnZpbGxlJ10KLSAgYGBgCi0KLSAgQG1ldGhv
ZCBjb21wdXRlZC5pbnRlcnNlY3QKLSAgQGZvciBFbWJlcgotICBAcGFyYW0ge1N0cmluZ30gcHJv
cGVydHlLZXkqCi0gIEByZXR1cm4ge0VtYmVyLkNvbXB1dGVkUHJvcGVydHl9IGNvbXB1dGVzIGEg
bmV3IGFycmF5IHdpdGggYWxsIHRoZQotICBkdXBsaWNhdGVkIGVsZW1lbnRzIGZyb20gdGhlIGRl
cGVuZGVudCBhcnJheXMKLSovCi1FbWJlci5jb21wdXRlZC5pbnRlcnNlY3QgPSBmdW5jdGlvbiAo
KSB7Ci0gIHZhciBnZXREZXBlbmRlbnRLZXlHdWlkcyA9IGZ1bmN0aW9uIChjaGFuZ2VNZXRhKSB7
Ci0gICAgcmV0dXJuIG1hcChjaGFuZ2VNZXRhLnByb3BlcnR5Ll9kZXBlbmRlbnRLZXlzLCBmdW5j
dGlvbiAoZGVwZW5kZW50S2V5KSB7Ci0gICAgICByZXR1cm4gZ3VpZEZvcihkZXBlbmRlbnRLZXkp
OwotICAgIH0pOwotICB9OwotCi0gIHZhciBhcmdzID0gYV9zbGljZS5jYWxsKGFyZ3VtZW50cyk7
Ci0gIGFyZ3MucHVzaCh7Ci0gICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24gKGFycmF5LCBjaGFuZ2VN
ZXRhLCBpbnN0YW5jZU1ldGEpIHsKLSAgICAgIGluc3RhbmNlTWV0YS5pdGVtQ291bnRzID0ge307
Ci0gICAgfSwKLQotICAgIGFkZGVkSXRlbTogZnVuY3Rpb24oYXJyYXksIGl0ZW0sIGNoYW5nZU1l
dGEsIGluc3RhbmNlTWV0YSkgewotICAgICAgdmFyIGl0ZW1HdWlkID0gZ3VpZEZvcihpdGVtKSwK
LSAgICAgICAgICBkZXBlbmRlbnRHdWlkcyA9IGdldERlcGVuZGVudEtleUd1aWRzKGNoYW5nZU1l
dGEpLAotICAgICAgICAgIGRlcGVuZGVudEd1aWQgPSBndWlkRm9yKGNoYW5nZU1ldGEuYXJyYXlD
aGFuZ2VkKSwKLSAgICAgICAgICBudW1iZXJPZkRlcGVuZGVudEFycmF5cyA9IGNoYW5nZU1ldGEu
cHJvcGVydHkuX2RlcGVuZGVudEtleXMubGVuZ3RoLAotICAgICAgICAgIGl0ZW1Db3VudHMgPSBp
bnN0YW5jZU1ldGEuaXRlbUNvdW50czsKLQotICAgICAgaWYgKCFpdGVtQ291bnRzW2l0ZW1HdWlk
XSkgeyBpdGVtQ291bnRzW2l0ZW1HdWlkXSA9IHt9OyB9Ci0gICAgICBpZiAoaXRlbUNvdW50c1tp
dGVtR3VpZF1bZGVwZW5kZW50R3VpZF0gPT09IHVuZGVmaW5lZCkgeyBpdGVtQ291bnRzW2l0ZW1H
dWlkXVtkZXBlbmRlbnRHdWlkXSA9IDA7IH0KLQotICAgICAgaWYgKCsraXRlbUNvdW50c1tpdGVt
R3VpZF1bZGVwZW5kZW50R3VpZF0gPT09IDEgJiYKLSAgICAgICAgICBudW1iZXJPZkRlcGVuZGVu
dEFycmF5cyA9PT0gRW1iZXIua2V5cyhpdGVtQ291bnRzW2l0ZW1HdWlkXSkubGVuZ3RoKSB7Ci0K
LSAgICAgICAgYXJyYXkuYWRkT2JqZWN0KGl0ZW0pOwotICAgICAgfQotICAgICAgcmV0dXJuIGFy
cmF5OwotICAgIH0sCi0gICAgcmVtb3ZlZEl0ZW06IGZ1bmN0aW9uKGFycmF5LCBpdGVtLCBjaGFu
Z2VNZXRhLCBpbnN0YW5jZU1ldGEpIHsKLSAgICAgIHZhciBpdGVtR3VpZCA9IGd1aWRGb3IoaXRl
bSksCi0gICAgICAgICAgZGVwZW5kZW50R3VpZHMgPSBnZXREZXBlbmRlbnRLZXlHdWlkcyhjaGFu
Z2VNZXRhKSwKLSAgICAgICAgICBkZXBlbmRlbnRHdWlkID0gZ3VpZEZvcihjaGFuZ2VNZXRhLmFy
cmF5Q2hhbmdlZCksCi0gICAgICAgICAgbnVtYmVyT2ZEZXBlbmRlbnRBcnJheXMgPSBjaGFuZ2VN
ZXRhLnByb3BlcnR5Ll9kZXBlbmRlbnRLZXlzLmxlbmd0aCwKLSAgICAgICAgICBudW1iZXJPZkFy
cmF5c0l0ZW1BcHBlYXJzSW4sCi0gICAgICAgICAgaXRlbUNvdW50cyA9IGluc3RhbmNlTWV0YS5p
dGVtQ291bnRzOwotCi0gICAgICBpZiAoaXRlbUNvdW50c1tpdGVtR3VpZF1bZGVwZW5kZW50R3Vp
ZF0gPT09IHVuZGVmaW5lZCkgeyBpdGVtQ291bnRzW2l0ZW1HdWlkXVtkZXBlbmRlbnRHdWlkXSA9
IDA7IH0KLSAgICAgIGlmICgtLWl0ZW1Db3VudHNbaXRlbUd1aWRdW2RlcGVuZGVudEd1aWRdID09
PSAwKSB7Ci0gICAgICAgIGRlbGV0ZSBpdGVtQ291bnRzW2l0ZW1HdWlkXVtkZXBlbmRlbnRHdWlk
XTsKLSAgICAgICAgbnVtYmVyT2ZBcnJheXNJdGVtQXBwZWFyc0luID0gRW1iZXIua2V5cyhpdGVt
Q291bnRzW2l0ZW1HdWlkXSkubGVuZ3RoOwotCi0gICAgICAgIGlmIChudW1iZXJPZkFycmF5c0l0
ZW1BcHBlYXJzSW4gPT09IDApIHsKLSAgICAgICAgICBkZWxldGUgaXRlbUNvdW50c1tpdGVtR3Vp
ZF07Ci0gICAgICAgIH0KLSAgICAgICAgYXJyYXkucmVtb3ZlT2JqZWN0KGl0ZW0pOwotICAgICAg
fQotICAgICAgcmV0dXJuIGFycmF5OwotICAgIH0KLSAgfSk7Ci0gIHJldHVybiBFbWJlci5hcnJh
eUNvbXB1dGVkLmFwcGx5KG51bGwsIGFyZ3MpOwotfTsKLQotLyoqCi0gIEEgY29tcHV0ZWQgcHJv
cGVydHkgd2hpY2ggcmV0dXJucyBhIG5ldyBhcnJheSB3aXRoIGFsbCB0aGUKLSAgcHJvcGVydGll
cyBmcm9tIHRoZSBmaXJzdCBkZXBlbmRlbnQgYXJyYXkgdGhhdCBhcmUgbm90IGluIHRoZSBzZWNv
bmQKLSAgZGVwZW5kZW50IGFycmF5LgotCi0gIEV4YW1wbGUKLQotICBgYGBqYXZhc2NyaXB0Ci0g
IEFwcC5IYW1zdGVyID0gRW1iZXIuT2JqZWN0LmV4dGVuZCh7Ci0gICAgbGlrZXM6IFsnYmFuYW5h
JywgJ2dyYXBlJywgJ2thbGUnXSwKLSAgICB3YW50czogRW1iZXIuY29tcHV0ZWQuc2V0RGlmZign
bGlrZXMnLCAnZnJ1aXRzJykKLSAgfSk7Ci0KLSAgdmFyIGhhbXN0ZXIgPSBBcHAuSGFtc3Rlci5j
cmVhdGUoe2ZydWl0czogWwotICAgICdncmFwZScsCi0gICAgJ2thbGUnLAotICBdfSk7Ci0gIGhh
bXN0ZXIuZ2V0KCd3YW50cycpOyAvLyBbJ2JhbmFuYSddCi0gIGBgYAotCi0gIEBtZXRob2QgY29t
cHV0ZWQuc2V0RGlmZgotICBAZm9yIEVtYmVyCi0gIEBwYXJhbSB7U3RyaW5nfSBzZXRBUHJvcGVy
dHkKLSAgQHBhcmFtIHtTdHJpbmd9IHNldEJQcm9wZXJ0eQotICBAcmV0dXJuIHtFbWJlci5Db21w
dXRlZFByb3BlcnR5fSBjb21wdXRlcyBhIG5ldyBhcnJheSB3aXRoIGFsbCB0aGUKLSAgaXRlbXMg
ZnJvbSB0aGUgZmlyc3QgZGVwZW5kZW50IGFycmF5IHRoYXQgYXJlIG5vdCBpbiB0aGUgc2Vjb25k
Ci0gIGRlcGVuZGVudCBhcnJheQotKi8KLUVtYmVyLmNvbXB1dGVkLnNldERpZmYgPSBmdW5jdGlv
biAoc2V0QVByb3BlcnR5LCBzZXRCUHJvcGVydHkpIHsKLSAgaWYgKGFyZ3VtZW50cy5sZW5ndGgg
IT09IDIpIHsKLSAgICB0aHJvdyBuZXcgRW1iZXIuRXJyb3IoInNldERpZmYgcmVxdWlyZXMgZXhh
Y3RseSB0d28gZGVwZW5kZW50IGFycmF5cy4iKTsKLSAgfQotICByZXR1cm4gRW1iZXIuYXJyYXlD
b21wdXRlZC5jYWxsKG51bGwsIHNldEFQcm9wZXJ0eSwgc2V0QlByb3BlcnR5LCB7Ci0gICAgYWRk
ZWRJdGVtOiBmdW5jdGlvbiAoYXJyYXksIGl0ZW0sIGNoYW5nZU1ldGEsIGluc3RhbmNlTWV0YSkg
ewotICAgICAgdmFyIHNldEEgPSBnZXQodGhpcywgc2V0QVByb3BlcnR5KSwKLSAgICAgICAgICBz
ZXRCID0gZ2V0KHRoaXMsIHNldEJQcm9wZXJ0eSk7Ci0KLSAgICAgIGlmIChjaGFuZ2VNZXRhLmFy
cmF5Q2hhbmdlZCA9PT0gc2V0QSkgewotICAgICAgICBpZiAoIXNldEIuY29udGFpbnMoaXRlbSkp
IHsKLSAgICAgICAgICBhcnJheS5hZGRPYmplY3QoaXRlbSk7Ci0gICAgICAgIH0KLSAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgIGFycmF5LnJlbW92ZU9iamVjdChpdGVtKTsKLSAgICAgIH0KLSAgICAg
IHJldHVybiBhcnJheTsKLSAgICB9LAotCi0gICAgcmVtb3ZlZEl0ZW06IGZ1bmN0aW9uIChhcnJh
eSwgaXRlbSwgY2hhbmdlTWV0YSwgaW5zdGFuY2VNZXRhKSB7Ci0gICAgICB2YXIgc2V0QSA9IGdl
dCh0aGlzLCBzZXRBUHJvcGVydHkpLAotICAgICAgICAgIHNldEIgPSBnZXQodGhpcywgc2V0QlBy
b3BlcnR5KTsKLQotICAgICAgaWYgKGNoYW5nZU1ldGEuYXJyYXlDaGFuZ2VkID09PSBzZXRCKSB7
Ci0gICAgICAgIGlmIChzZXRBLmNvbnRhaW5zKGl0ZW0pKSB7Ci0gICAgICAgICAgYXJyYXkuYWRk
T2JqZWN0KGl0ZW0pOwotICAgICAgICB9Ci0gICAgICB9IGVsc2UgewotICAgICAgICBhcnJheS5y
ZW1vdmVPYmplY3QoaXRlbSk7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gYXJyYXk7Ci0gICAgfQot
ICB9KTsKLX07Ci0KLWZ1bmN0aW9uIGJpbmFyeVNlYXJjaChhcnJheSwgaXRlbSwgbG93LCBoaWdo
KSB7Ci0gIHZhciBtaWQsIG1pZEl0ZW0sIHJlcywgZ3VpZE1pZCwgZ3VpZEl0ZW07Ci0KLSAgaWYg
KGFyZ3VtZW50cy5sZW5ndGggPCA0KSB7IGhpZ2ggPSBnZXQoYXJyYXksICdsZW5ndGgnKTsgfQot
ICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDMpIHsgbG93ID0gMDsgfQotCi0gIGlmIChsb3cgPT09
IGhpZ2gpIHsKLSAgICByZXR1cm4gbG93OwotICB9Ci0KLSAgbWlkID0gbG93ICsgTWF0aC5mbG9v
cigoaGlnaCAtIGxvdykgLyAyKTsKLSAgbWlkSXRlbSA9IGFycmF5Lm9iamVjdEF0KG1pZCk7Ci0K
LSAgZ3VpZE1pZCA9IF9ndWlkRm9yKG1pZEl0ZW0pOwotICBndWlkSXRlbSA9IF9ndWlkRm9yKGl0
ZW0pOwotCi0gIGlmIChndWlkTWlkID09PSBndWlkSXRlbSkgewotICAgIHJldHVybiBtaWQ7Ci0g
IH0KLQotICByZXMgPSB0aGlzLm9yZGVyKG1pZEl0ZW0sIGl0ZW0pOwotICBpZiAocmVzID09PSAw
KSB7Ci0gICAgcmVzID0gZ3VpZE1pZCA8IGd1aWRJdGVtID8gLTEgOiAxOwotICB9Ci0KLQotICBp
ZiAocmVzIDwgMCkgewotICAgIHJldHVybiB0aGlzLmJpbmFyeVNlYXJjaChhcnJheSwgaXRlbSwg
bWlkKzEsIGhpZ2gpOwotICB9IGVsc2UgaWYgKHJlcyA+IDApIHsKLSAgICByZXR1cm4gdGhpcy5i
aW5hcnlTZWFyY2goYXJyYXksIGl0ZW0sIGxvdywgbWlkKTsKLSAgfQotCi0gIHJldHVybiBtaWQ7
Ci0KLSAgZnVuY3Rpb24gX2d1aWRGb3IoaXRlbSkgewotICAgIGlmIChTZWFyY2hQcm94eS5kZXRl
Y3RJbnN0YW5jZShpdGVtKSkgewotICAgICAgcmV0dXJuIGd1aWRGb3IoZ2V0KGl0ZW0sICdjb250
ZW50JykpOwotICAgIH0KLSAgICByZXR1cm4gZ3VpZEZvcihpdGVtKTsKLSAgfQotfQotCi0KLVNl
YXJjaFByb3h5ID0gRW1iZXIuT2JqZWN0UHJveHkuZXh0ZW5kKCk7Ci0KLS8qKgotICBBIGNvbXB1
dGVkIHByb3BlcnR5IHdoaWNoIHJldHVybnMgYSBuZXcgYXJyYXkgd2l0aCBhbGwgdGhlCi0gIHBy
b3BlcnRpZXMgZnJvbSB0aGUgZmlyc3QgZGVwZW5kZW50IGFycmF5IHNvcnRlZCBiYXNlZCBvbiBh
IHByb3BlcnR5Ci0gIG9yIHNvcnQgZnVuY3Rpb24uCi0KLSAgVGhlIGNhbGxiYWNrIG1ldGhvZCB5
b3UgcHJvdmlkZSBzaG91bGQgaGF2ZSB0aGUgZm9sbG93aW5nIHNpZ25hdHVyZToKLQotICBgYGBq
YXZhc2NyaXB0Ci0gIGZ1bmN0aW9uKGl0ZW1BLCBpdGVtQik7Ci0gIGBgYAotCi0gIC0gYGl0ZW1B
YCB0aGUgZmlyc3QgaXRlbSB0byBjb21wYXJlLgotICAtIGBpdGVtQmAgdGhlIHNlY29uZCBpdGVt
IHRvIGNvbXBhcmUuCi0KLSAgVGhpcyBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIGAtMWAgd2hlbiBg
aXRlbUFgIHNob3VsZCBjb21lIGJlZm9yZQotICBgaXRlbUJgLiBJdCBzaG91bGQgcmV0dXJuIGAx
YCB3aGVuIGBpdGVtQWAgc2hvdWxkIGNvbWUgYWZ0ZXIKLSAgYGl0ZW1CYC4gSWYgdGhlIGBpdGVt
QWAgYW5kIGBpdGVtQmAgYXJlIGVxdWFsIHRoaXMgZnVuY3Rpb24gc2hvdWxkIHJldHVybiBgMGAu
Ci0KLSAgRXhhbXBsZQotCi0gIGBgYGphdmFzY3JpcHQKLSAgdmFyIFRvRG9MaXN0ID0gRW1iZXIu
T2JqZWN0LmV4dGVuZCh7Ci0gICAgdG9kb3NTb3J0aW5nOiBbJ25hbWUnXSwKLSAgICBzb3J0ZWRU
b2RvczogRW1iZXIuY29tcHV0ZWQuc29ydCgndG9kb3MnLCAndG9kb3NTb3J0aW5nJyksCi0gICAg
cHJpb3JpdHlUb2RvczogRW1iZXIuY29tcHV0ZWQuc29ydCgndG9kb3MnLCBmdW5jdGlvbihhLCBi
KXsKLSAgICAgIGlmIChhLnByaW9yaXR5ID4gYi5wcmlvcml0eSkgewotICAgICAgICByZXR1cm4g
MTsKLSAgICAgIH0gZWxzZSBpZiAoYS5wcmlvcml0eSA8IGIucHJpb3JpdHkpIHsKLSAgICAgICAg
cmV0dXJuIC0xOwotICAgICAgfQotICAgICAgcmV0dXJuIDA7Ci0gICAgfSksCi0gIH0pOwotICB2
YXIgdG9kb0xpc3QgPSBUb0RvTGlzdC5jcmVhdGUoe3RvZG9zOiBbCi0gICAge25hbWU6ICdVbml0
IFRlc3QnLCBwcmlvcml0eTogMn0sCi0gICAge25hbWU6ICdEb2N1bWVudGF0aW9uJywgcHJpb3Jp
dHk6IDN9LAotICAgIHtuYW1lOiAnUmVsZWFzZScsIHByaW9yaXR5OiAxfQotICBdfSk7Ci0KLSAg
dG9kb0xpc3QuZ2V0KCdzb3J0ZWRUb2RvcycpOyAvLyBbe25hbWU6J0RvY3VtZW50YXRpb24nLCBw
cmlvcml0eTozfSwge25hbWU6J1JlbGVhc2UnLCBwcmlvcml0eToxfSwge25hbWU6J1VuaXQgVGVz
dCcsIHByaW9yaXR5OjJ9XQotICB0b2RvTGlzdC5nZXQoJ3ByaW9yaXR5VG9kb3MnKTsgLy8gW3tu
YW1lOidSZWxlYXNlJywgcHJpb3JpdHk6MX0sIHtuYW1lOidVbml0IFRlc3QnLCBwcmlvcml0eToy
fSwge25hbWU6J0RvY3VtZW50YXRpb24nLCBwcmlvcml0eTozfV0KLSAgYGBgCi0KLSAgQG1ldGhv
ZCBjb21wdXRlZC5zb3J0Ci0gIEBmb3IgRW1iZXIKLSAgQHBhcmFtIHtTdHJpbmd9IGRlcGVuZGVu
dEtleQotICBAcGFyYW0ge1N0cmluZyBvciBGdW5jdGlvbn0gc29ydERlZmluaXRpb24gYSBkZXBl
bmRlbnQga2V5IHRvIGFuCi0gIGFycmF5IG9mIHNvcnQgcHJvcGVydGllcyBvciBhIGZ1bmN0aW9u
IHRvIHVzZSB3aGVuIHNvcnRpbmcKLSAgQHJldHVybiB7RW1iZXIuQ29tcHV0ZWRQcm9wZXJ0eX0g
Y29tcHV0ZXMgYSBuZXcgc29ydGVkIGFycmF5IGJhc2VkCi0gIG9uIHRoZSBzb3J0IHByb3BlcnR5
IGFycmF5IG9yIGNhbGxiYWNrIGZ1bmN0aW9uCi0qLwotRW1iZXIuY29tcHV0ZWQuc29ydCA9IGZ1
bmN0aW9uIChpdGVtc0tleSwgc29ydERlZmluaXRpb24pIHsKLSAgRW1iZXIuYXNzZXJ0KCJFbWJl
ci5jb21wdXRlZC5zb3J0IHJlcXVpcmVzIHR3byBhcmd1bWVudHM6IGFuIGFycmF5IGtleSB0byBz
b3J0IGFuZCBlaXRoZXIgYSBzb3J0IHByb3BlcnRpZXMga2V5IG9yIHNvcnQgZnVuY3Rpb24iLCBh
cmd1bWVudHMubGVuZ3RoID09PSAyKTsKLQotICB2YXIgaW5pdEZuLCBzb3J0UHJvcGVydGllc0tl
eTsKLQotICBpZiAodHlwZW9mIHNvcnREZWZpbml0aW9uID09PSAnZnVuY3Rpb24nKSB7Ci0gICAg
aW5pdEZuID0gZnVuY3Rpb24gKGFycmF5LCBjaGFuZ2VNZXRhLCBpbnN0YW5jZU1ldGEpIHsKLSAg
ICAgIGluc3RhbmNlTWV0YS5vcmRlciA9IHNvcnREZWZpbml0aW9uOwotICAgICAgaW5zdGFuY2VN
ZXRhLmJpbmFyeVNlYXJjaCA9IGJpbmFyeVNlYXJjaDsKLSAgICB9OwotICB9IGVsc2UgewotICAg
IHNvcnRQcm9wZXJ0aWVzS2V5ID0gc29ydERlZmluaXRpb247Ci0gICAgaW5pdEZuID0gZnVuY3Rp
b24gKGFycmF5LCBjaGFuZ2VNZXRhLCBpbnN0YW5jZU1ldGEpIHsKLSAgICAgIGZ1bmN0aW9uIHNl
dHVwU29ydFByb3BlcnRpZXMoKSB7Ci0gICAgICAgIHZhciBzb3J0UHJvcGVydHlEZWZpbml0aW9u
cyA9IGdldCh0aGlzLCBzb3J0UHJvcGVydGllc0tleSksCi0gICAgICAgICAgICBzb3J0UHJvcGVy
dHksCi0gICAgICAgICAgICBzb3J0UHJvcGVydGllcyA9IGluc3RhbmNlTWV0YS5zb3J0UHJvcGVy
dGllcyA9IFtdLAotICAgICAgICAgICAgc29ydFByb3BlcnR5QXNjZW5kaW5nID0gaW5zdGFuY2VN
ZXRhLnNvcnRQcm9wZXJ0eUFzY2VuZGluZyA9IHt9LAotICAgICAgICAgICAgaWR4LAotICAgICAg
ICAgICAgYXNjOwotCi0gICAgICAgIEVtYmVyLmFzc2VydCgiQ2Fubm90IHNvcnQ6ICciICsgc29y
dFByb3BlcnRpZXNLZXkgKyAiJyBpcyBub3QgYW4gYXJyYXkuIiwgRW1iZXIuaXNBcnJheShzb3J0
UHJvcGVydHlEZWZpbml0aW9ucykpOwotCi0gICAgICAgIGNoYW5nZU1ldGEucHJvcGVydHkuY2xl
YXJJdGVtUHJvcGVydHlLZXlzKGl0ZW1zS2V5KTsKLQotICAgICAgICBmb3JFYWNoKHNvcnRQcm9w
ZXJ0eURlZmluaXRpb25zLCBmdW5jdGlvbiAoc29ydFByb3BlcnR5RGVmaW5pdGlvbikgewotICAg
ICAgICAgIGlmICgoaWR4ID0gc29ydFByb3BlcnR5RGVmaW5pdGlvbi5pbmRleE9mKCc6JykpICE9
PSAtMSkgewotICAgICAgICAgICAgc29ydFByb3BlcnR5ID0gc29ydFByb3BlcnR5RGVmaW5pdGlv
bi5zdWJzdHJpbmcoMCwgaWR4KTsKLSAgICAgICAgICAgIGFzYyA9IHNvcnRQcm9wZXJ0eURlZmlu
aXRpb24uc3Vic3RyaW5nKGlkeCsxKS50b0xvd2VyQ2FzZSgpICE9PSAnZGVzYyc7Ci0gICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHNvcnRQcm9wZXJ0eSA9IHNvcnRQcm9wZXJ0eURlZmlu
aXRpb247Ci0gICAgICAgICAgICBhc2MgPSB0cnVlOwotICAgICAgICAgIH0KLQotICAgICAgICAg
IHNvcnRQcm9wZXJ0aWVzLnB1c2goc29ydFByb3BlcnR5KTsKLSAgICAgICAgICBzb3J0UHJvcGVy
dHlBc2NlbmRpbmdbc29ydFByb3BlcnR5XSA9IGFzYzsKLSAgICAgICAgICBjaGFuZ2VNZXRhLnBy
b3BlcnR5Lml0ZW1Qcm9wZXJ0eUtleShpdGVtc0tleSwgc29ydFByb3BlcnR5KTsKLSAgICAgICAg
fSk7Ci0KLSAgICAgICAgc29ydFByb3BlcnR5RGVmaW5pdGlvbnMuYWRkT2JzZXJ2ZXIoJ0BlYWNo
JywgdGhpcywgdXBkYXRlU29ydFByb3BlcnRpZXNPbmNlKTsKLSAgICAgIH0KLQotICAgICAgZnVu
Y3Rpb24gdXBkYXRlU29ydFByb3BlcnRpZXNPbmNlKCkgewotICAgICAgICBFbWJlci5ydW4ub25j
ZSh0aGlzLCB1cGRhdGVTb3J0UHJvcGVydGllcywgY2hhbmdlTWV0YS5wcm9wZXJ0eU5hbWUpOwot
ICAgICAgfQotCi0gICAgICBmdW5jdGlvbiB1cGRhdGVTb3J0UHJvcGVydGllcyhwcm9wZXJ0eU5h
bWUpIHsKLSAgICAgICAgc2V0dXBTb3J0UHJvcGVydGllcy5jYWxsKHRoaXMpOwotICAgICAgICBj
aGFuZ2VNZXRhLnByb3BlcnR5LnJlY29tcHV0ZU9uY2UuY2FsbCh0aGlzLCBwcm9wZXJ0eU5hbWUp
OwotICAgICAgfQotCi0gICAgICBFbWJlci5hZGRPYnNlcnZlcih0aGlzLCBzb3J0UHJvcGVydGll
c0tleSwgdXBkYXRlU29ydFByb3BlcnRpZXNPbmNlKTsKLQotICAgICAgc2V0dXBTb3J0UHJvcGVy
dGllcy5jYWxsKHRoaXMpOwotCi0KLSAgICAgIGluc3RhbmNlTWV0YS5vcmRlciA9IGZ1bmN0aW9u
IChpdGVtQSwgaXRlbUIpIHsKLSAgICAgICAgdmFyIHNvcnRQcm9wZXJ0eSwgcmVzdWx0LCBhc2M7
Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5zb3J0UHJvcGVydGllcy5sZW5ndGg7
ICsraSkgewotICAgICAgICAgIHNvcnRQcm9wZXJ0eSA9IHRoaXMuc29ydFByb3BlcnRpZXNbaV07
Ci0gICAgICAgICAgcmVzdWx0ID0gRW1iZXIuY29tcGFyZShnZXQoaXRlbUEsIHNvcnRQcm9wZXJ0
eSksIGdldChpdGVtQiwgc29ydFByb3BlcnR5KSk7Ci0KLSAgICAgICAgICBpZiAocmVzdWx0ICE9
PSAwKSB7Ci0gICAgICAgICAgICBhc2MgPSB0aGlzLnNvcnRQcm9wZXJ0eUFzY2VuZGluZ1tzb3J0
UHJvcGVydHldOwotICAgICAgICAgICAgcmV0dXJuIGFzYyA/IHJlc3VsdCA6ICgtMSAqIHJlc3Vs
dCk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgICB9
OwotCi0gICAgICBpbnN0YW5jZU1ldGEuYmluYXJ5U2VhcmNoID0gYmluYXJ5U2VhcmNoOwotICAg
IH07Ci0gIH0KLQotICByZXR1cm4gRW1iZXIuYXJyYXlDb21wdXRlZC5jYWxsKG51bGwsIGl0ZW1z
S2V5LCB7Ci0gICAgaW5pdGlhbGl6ZTogaW5pdEZuLAotCi0gICAgYWRkZWRJdGVtOiBmdW5jdGlv
biAoYXJyYXksIGl0ZW0sIGNoYW5nZU1ldGEsIGluc3RhbmNlTWV0YSkgewotICAgICAgdmFyIGlu
ZGV4ID0gaW5zdGFuY2VNZXRhLmJpbmFyeVNlYXJjaChhcnJheSwgaXRlbSk7Ci0gICAgICBhcnJh
eS5pbnNlcnRBdChpbmRleCwgaXRlbSk7Ci0gICAgICByZXR1cm4gYXJyYXk7Ci0gICAgfSwKLQot
ICAgIHJlbW92ZWRJdGVtOiBmdW5jdGlvbiAoYXJyYXksIGl0ZW0sIGNoYW5nZU1ldGEsIGluc3Rh
bmNlTWV0YSkgewotICAgICAgdmFyIHByb3h5UHJvcGVydGllcywgaW5kZXgsIHNlYXJjaEl0ZW07
Ci0KLSAgICAgIGlmIChjaGFuZ2VNZXRhLnByZXZpb3VzVmFsdWVzKSB7Ci0gICAgICAgIHByb3h5
UHJvcGVydGllcyA9IG1lcmdlKHsgY29udGVudDogaXRlbSB9LCBjaGFuZ2VNZXRhLnByZXZpb3Vz
VmFsdWVzKTsKLQotICAgICAgICBzZWFyY2hJdGVtID0gU2VhcmNoUHJveHkuY3JlYXRlKHByb3h5
UHJvcGVydGllcyk7Ci0gICAgICB9IGVsc2UgewotICAgICAgICBzZWFyY2hJdGVtID0gaXRlbTsK
LSAgICAgIH0KLQotICAgICAgaW5kZXggPSBpbnN0YW5jZU1ldGEuYmluYXJ5U2VhcmNoKGFycmF5
LCBzZWFyY2hJdGVtKTsKLSAgICAgIGFycmF5LnJlbW92ZUF0KGluZGV4KTsKLSAgICAgIHJldHVy
biBhcnJheTsKLSAgICB9Ci0gIH0pOwotfTsKLQotfSkoKTsKLQotCi0KLShmdW5jdGlvbigpIHsK
LUVtYmVyLlJTVlAgPSByZXF1aXJlTW9kdWxlKCdyc3ZwJyk7Ci0KLUVtYmVyLlJTVlAub25lcnJv
ckRlZmF1bHQgPSBmdW5jdGlvbihlcnJvcikgewotICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJv
cikgewotICAgIGlmIChFbWJlci50ZXN0aW5nKSB7Ci0gICAgICBpZiAoRW1iZXIuVGVzdCAmJiBF
bWJlci5UZXN0LmFkYXB0ZXIpIHsKLSAgICAgICAgRW1iZXIuVGVzdC5hZGFwdGVyLmV4Y2VwdGlv
bihlcnJvcik7Ci0gICAgICB9IGVsc2UgewotICAgICAgICB0aHJvdyBlcnJvcjsKLSAgICAgIH0K
LSAgICB9IGVsc2UgewotICAgICAgRW1iZXIuTG9nZ2VyLmVycm9yKGVycm9yLnN0YWNrKTsKLSAg
ICAgIEVtYmVyLmFzc2VydChlcnJvciwgZmFsc2UpOwotICAgIH0KLSAgfQotfTsKLQotRW1iZXIu
UlNWUC5vbignZXJyb3InLCBFbWJlci5SU1ZQLm9uZXJyb3JEZWZhdWx0KTsKLQotfSkoKTsKLQot
Ci0KLShmdW5jdGlvbigpIHsKLS8qKgotQG1vZHVsZSBlbWJlcgotQHN1Ym1vZHVsZSBlbWJlci1y
dW50aW1lCi0qLwotCi12YXIgYV9zbGljZSA9IEFycmF5LnByb3RvdHlwZS5zbGljZTsKLQotCi1p
ZiAoRW1iZXIuRVhURU5EX1BST1RPVFlQRVMgPT09IHRydWUgfHwgRW1iZXIuRVhURU5EX1BST1RP
VFlQRVMuRnVuY3Rpb24pIHsKLQotICAvKioKLSAgICBUaGUgYHByb3BlcnR5YCBleHRlbnNpb24g
b2YgSmF2YXNjcmlwdCdzIEZ1bmN0aW9uIHByb3RvdHlwZSBpcyBhdmFpbGFibGUKLSAgICB3aGVu
IGBFbWJlci5FWFRFTkRfUFJPVE9UWVBFU2Agb3IgYEVtYmVyLkVYVEVORF9QUk9UT1RZUEVTLkZ1
bmN0aW9uYCBpcwotICAgIGB0cnVlYCwgd2hpY2ggaXMgdGhlIGRlZmF1bHQuCi0KLSAgICBDb21w
dXRlZCBwcm9wZXJ0aWVzIGFsbG93IHlvdSB0byB0cmVhdCBhIGZ1bmN0aW9uIGxpa2UgYSBwcm9w
ZXJ0eToKLQotICAgIGBgYGphdmFzY3JpcHQKLSAgICBNeUFwcC5QcmVzaWRlbnQgPSBFbWJlci5P
YmplY3QuZXh0ZW5kKHsKLSAgICAgIGZpcnN0TmFtZTogJycsCi0gICAgICBsYXN0TmFtZTogICcn
LAotCi0gICAgICBmdWxsTmFtZTogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmdl
dCgnZmlyc3ROYW1lJykgKyAnICcgKyB0aGlzLmdldCgnbGFzdE5hbWUnKTsKLQotICAgICAgICAv
LyBDYWxsIHRoaXMgZmxhZyB0byBtYXJrIHRoZSBmdW5jdGlvbiBhcyBhIHByb3BlcnR5Ci0gICAg
ICB9LnByb3BlcnR5KCkKLSAgICB9KTsKLQotICAgIHZhciBwcmVzaWRlbnQgPSBNeUFwcC5QcmVz
aWRlbnQuY3JlYXRlKHsKLSAgICAgIGZpcnN0TmFtZTogIkJhcmFjayIsCi0gICAgICBsYXN0TmFt
ZTogIk9iYW1hIgotICAgIH0pOwotCi0gICAgcHJlc2lkZW50LmdldCgnZnVsbE5hbWUnKTsgICAg
Ly8gIkJhcmFjayBPYmFtYSIKLSAgICBgYGAKLQotICAgIFRyZWF0aW5nIGEgZnVuY3Rpb24gbGlr
ZSBhIHByb3BlcnR5IGlzIHVzZWZ1bCBiZWNhdXNlIHRoZXkgY2FuIHdvcmsgd2l0aAotICAgIGJp
bmRpbmdzLCBqdXN0IGxpa2UgYW55IG90aGVyIHByb3BlcnR5LgotCi0gICAgTWFueSBjb21wdXRl
ZCBwcm9wZXJ0aWVzIGhhdmUgZGVwZW5kZW5jaWVzIG9uIG90aGVyIHByb3BlcnRpZXMuIEZvcgot
ICAgIGV4YW1wbGUsIGluIHRoZSBhYm92ZSBleGFtcGxlLCB0aGUgYGZ1bGxOYW1lYCBwcm9wZXJ0
eSBkZXBlbmRzIG9uCi0gICAgYGZpcnN0TmFtZWAgYW5kIGBsYXN0TmFtZWAgdG8gZGV0ZXJtaW5l
IGl0cyB2YWx1ZS4gWW91IGNhbiB0ZWxsIEVtYmVyCi0gICAgYWJvdXQgdGhlc2UgZGVwZW5kZW5j
aWVzIGxpa2UgdGhpczoKLQotICAgIGBgYGphdmFzY3JpcHQKLSAgICBNeUFwcC5QcmVzaWRlbnQg
PSBFbWJlci5PYmplY3QuZXh0ZW5kKHsKLSAgICAgIGZpcnN0TmFtZTogJycsCi0gICAgICBsYXN0
TmFtZTogICcnLAotCi0gICAgICBmdWxsTmFtZTogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHJldHVy
biB0aGlzLmdldCgnZmlyc3ROYW1lJykgKyAnICcgKyB0aGlzLmdldCgnbGFzdE5hbWUnKTsKLQot
ICAgICAgICAvLyBUZWxsIEVtYmVyLmpzIHRoYXQgdGhpcyBjb21wdXRlZCBwcm9wZXJ0eSBkZXBl
bmRzIG9uIGZpcnN0TmFtZQotICAgICAgICAvLyBhbmQgbGFzdE5hbWUKLSAgICAgIH0ucHJvcGVy
dHkoJ2ZpcnN0TmFtZScsICdsYXN0TmFtZScpCi0gICAgfSk7Ci0gICAgYGBgCi0KLSAgICBNYWtl
IHN1cmUgeW91IGxpc3QgdGhlc2UgZGVwZW5kZW5jaWVzIHNvIEVtYmVyIGtub3dzIHdoZW4gdG8g
dXBkYXRlCi0gICAgYmluZGluZ3MgdGhhdCBjb25uZWN0IHRvIGEgY29tcHV0ZWQgcHJvcGVydHku
IENoYW5naW5nIGEgZGVwZW5kZW5jeQotICAgIHdpbGwgbm90IGltbWVkaWF0ZWx5IHRyaWdnZXIg
YW4gdXBkYXRlIG9mIHRoZSBjb21wdXRlZCBwcm9wZXJ0eSwgYnV0Ci0gICAgd2lsbCBpbnN0ZWFk
IGNsZWFyIHRoZSBjYWNoZSBzbyB0aGF0IGl0IGlzIHVwZGF0ZWQgd2hlbiB0aGUgbmV4dCBgZ2V0
YAotICAgIGlzIGNhbGxlZCBvbiB0aGUgcHJvcGVydHkuCi0KLSAgICBTZWUgW0VtYmVyLkNvbXB1
dGVkUHJvcGVydHldKC9hcGkvY2xhc3Nlcy9FbWJlci5Db21wdXRlZFByb3BlcnR5Lmh0bWwpLCBb
RW1iZXIuY29tcHV0ZWRdKC9hcGkvI21ldGhvZF9jb21wdXRlZCkuCi0KLSAgICBAbWV0aG9kIHBy
b3BlcnR5Ci0gICAgQGZvciBGdW5jdGlvbgotICAqLwotICBGdW5jdGlvbi5wcm90b3R5cGUucHJv
cGVydHkgPSBmdW5jdGlvbigpIHsKLSAgICB2YXIgcmV0ID0gRW1iZXIuY29tcHV0ZWQodGhpcyk7
Ci0gICAgLy8gQ29tcHV0ZWRQcm9wZXJ0eS5wcm90b3R5cGUucHJvcGVydHkgZXhwYW5kcyBwcm9w
ZXJ0aWVzOyBubyBuZWVkIGZvciB1cyB0bwotICAgIC8vIGRvIHNvIGhlcmUuCi0gICAgcmV0dXJu
IHJldC5wcm9wZXJ0eS5hcHBseShyZXQsIGFyZ3VtZW50cyk7Ci0gIH07Ci0KLSAgLyoqCi0gICAg
VGhlIGBvYnNlcnZlc2AgZXh0ZW5zaW9uIG9mIEphdmFzY3JpcHQncyBGdW5jdGlvbiBwcm90b3R5
cGUgaXMgYXZhaWxhYmxlCi0gICAgd2hlbiBgRW1iZXIuRVhURU5EX1BST1RPVFlQRVNgIG9yIGBF
bWJlci5FWFRFTkRfUFJPVE9UWVBFUy5GdW5jdGlvbmAgaXMKLSAgICB0cnVlLCB3aGljaCBpcyB0
aGUgZGVmYXVsdC4KLQotICAgIFlvdSBjYW4gb2JzZXJ2ZSBwcm9wZXJ0eSBjaGFuZ2VzIHNpbXBs
eSBieSBhZGRpbmcgdGhlIGBvYnNlcnZlc2AKLSAgICBjYWxsIHRvIHRoZSBlbmQgb2YgeW91ciBt
ZXRob2QgZGVjbGFyYXRpb25zIGluIGNsYXNzZXMgdGhhdCB5b3Ugd3JpdGUuCi0gICAgRm9yIGV4
YW1wbGU6Ci0KLSAgICBgYGBqYXZhc2NyaXB0Ci0gICAgRW1iZXIuT2JqZWN0LmV4dGVuZCh7Ci0g
ICAgICB2YWx1ZU9ic2VydmVyOiBmdW5jdGlvbigpIHsKLSAgICAgICAgLy8gRXhlY3V0ZXMgd2hl
bmV2ZXIgdGhlICJ2YWx1ZSIgcHJvcGVydHkgY2hhbmdlcwotICAgICAgfS5vYnNlcnZlcygndmFs
dWUnKQotICAgIH0pOwotICAgIGBgYAotCi0gICAgSW4gdGhlIGZ1dHVyZSB0aGlzIG1ldGhvZCBt
YXkgYmVjb21lIGFzeW5jaHJvbm91cy4gSWYgeW91IHdhbnQgdG8gZW5zdXJlCi0gICAgc3luY2hy
b25vdXMgYmVoYXZpb3IsIHVzZSBgb2JzZXJ2ZXNJbW1lZGlhdGVseWAuCi0KLSAgICBTZWUgYEVt
YmVyLm9ic2VydmVyYC4KLQotICAgIEBtZXRob2Qgb2JzZXJ2ZXMKLSAgICBAZm9yIEZ1bmN0aW9u
Ci0gICovCi0gIEZ1bmN0aW9uLnByb3RvdHlwZS5vYnNlcnZlcyA9IGZ1bmN0aW9uKCkgewotICAg
IAotICAgICAgdGhpcy5fX2VtYmVyX29ic2VydmVzX18gPSBhX3NsaWNlLmNhbGwoYXJndW1lbnRz
KTsKLSAgICAKLQotICAgIHJldHVybiB0aGlzOwotICB9OwotCi0gIC8qKgotICAgIFRoZSBgb2Jz
ZXJ2ZXNJbW1lZGlhdGVseWAgZXh0ZW5zaW9uIG9mIEphdmFzY3JpcHQncyBGdW5jdGlvbiBwcm90
b3R5cGUgaXMKLSAgICBhdmFpbGFibGUgd2hlbiBgRW1iZXIuRVhURU5EX1BST1RPVFlQRVNgIG9y
Ci0gICAgYEVtYmVyLkVYVEVORF9QUk9UT1RZUEVTLkZ1bmN0aW9uYCBpcyB0cnVlLCB3aGljaCBp
cyB0aGUgZGVmYXVsdC4KLQotICAgIFlvdSBjYW4gb2JzZXJ2ZSBwcm9wZXJ0eSBjaGFuZ2VzIHNp
bXBseSBieSBhZGRpbmcgdGhlIGBvYnNlcnZlc0ltbWVkaWF0ZWx5YAotICAgIGNhbGwgdG8gdGhl
IGVuZCBvZiB5b3VyIG1ldGhvZCBkZWNsYXJhdGlvbnMgaW4gY2xhc3NlcyB0aGF0IHlvdSB3cml0
ZS4KLSAgICBGb3IgZXhhbXBsZToKLQotICAgIGBgYGphdmFzY3JpcHQKLSAgICBFbWJlci5PYmpl
Y3QuZXh0ZW5kKHsKLSAgICAgIHZhbHVlT2JzZXJ2ZXI6IGZ1bmN0aW9uKCkgewotICAgICAgICAv
LyBFeGVjdXRlcyBpbW1lZGlhdGVseSBhZnRlciB0aGUgInZhbHVlIiBwcm9wZXJ0eSBjaGFuZ2Vz
Ci0gICAgICB9Lm9ic2VydmVzSW1tZWRpYXRlbHkoJ3ZhbHVlJykKLSAgICB9KTsKLSAgICBgYGAK
LQotICAgIEluIHRoZSBmdXR1cmUsIGBvYnNlcnZlc2AgbWF5IGJlY29tZSBhc3luY2hyb25vdXMu
IEluIHRoaXMgZXZlbnQsCi0gICAgYG9ic2VydmVzSW1tZWRpYXRlbHlgIHdpbGwgbWFpbnRhaW4g
dGhlIHN5bmNocm9ub3VzIGJlaGF2aW9yLgotCi0gICAgU2VlIGBFbWJlci5pbW1lZGlhdGVPYnNl
cnZlcmAuCi0KLSAgICBAbWV0aG9kIG9ic2VydmVzSW1tZWRpYXRlbHkKLSAgICBAZm9yIEZ1bmN0
aW9uCi0gICovCi0gIEZ1bmN0aW9uLnByb3RvdHlwZS5vYnNlcnZlc0ltbWVkaWF0ZWx5ID0gZnVu
Y3Rpb24oKSB7Ci0gICAgZm9yICh2YXIgaT0wLCBsPWFyZ3VtZW50cy5sZW5ndGg7IGk8bDsgaSsr
KSB7Ci0gICAgICB2YXIgYXJnID0gYXJndW1lbnRzW2ldOwotICAgICAgRW1iZXIuYXNzZXJ0KCJJ
bW1lZGlhdGUgb2JzZXJ2ZXJzIG11c3Qgb2JzZXJ2ZSBpbnRlcm5hbCBwcm9wZXJ0aWVzIG9ubHks
IG5vdCBwcm9wZXJ0aWVzIG9uIG90aGVyIG9iamVjdHMuIiwgYXJnLmluZGV4T2YoJy4nKSA9PT0g
LTEpOwotICAgIH0KLQotICAgIC8vIG9ic2VydmVzIGhhbmRsZXMgcHJvcGVydHkgZXhwYW5zaW9u
Ci0gICAgcmV0dXJuIHRoaXMub2JzZXJ2ZXMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKLSAgfTsK
LQotICAvKioKLSAgICBUaGUgYG9ic2VydmVzQmVmb3JlYCBleHRlbnNpb24gb2YgSmF2YXNjcmlw
dCdzIEZ1bmN0aW9uIHByb3RvdHlwZSBpcwotICAgIGF2YWlsYWJsZSB3aGVuIGBFbWJlci5FWFRF
TkRfUFJPVE9UWVBFU2Agb3IKLSAgICBgRW1iZXIuRVhURU5EX1BST1RPVFlQRVMuRnVuY3Rpb25g
IGlzIHRydWUsIHdoaWNoIGlzIHRoZSBkZWZhdWx0LgotCi0gICAgWW91IGNhbiBnZXQgbm90aWZp
ZWQgd2hlbiBhIHByb3BlcnR5IGNoYW5nZSBpcyBhYm91dCB0byBoYXBwZW4gYnkKLSAgICBieSBh
ZGRpbmcgdGhlIGBvYnNlcnZlc0JlZm9yZWAgY2FsbCB0byB0aGUgZW5kIG9mIHlvdXIgbWV0aG9k
Ci0gICAgZGVjbGFyYXRpb25zIGluIGNsYXNzZXMgdGhhdCB5b3Ugd3JpdGUuIEZvciBleGFtcGxl
OgotCi0gICAgYGBgamF2YXNjcmlwdAotICAgIEVtYmVyLk9iamVjdC5leHRlbmQoewotICAgICAg
dmFsdWVPYnNlcnZlcjogZnVuY3Rpb24oKSB7Ci0gICAgICAgIC8vIEV4ZWN1dGVzIHdoZW5ldmVy
IHRoZSAidmFsdWUiIHByb3BlcnR5IGlzIGFib3V0IHRvIGNoYW5nZQotICAgICAgfS5vYnNlcnZl
c0JlZm9yZSgndmFsdWUnKQotICAgIH0pOwotICAgIGBgYAotCi0gICAgU2VlIGBFbWJlci5iZWZv
cmVPYnNlcnZlcmAuCi0KLSAgICBAbWV0aG9kIG9ic2VydmVzQmVmb3JlCi0gICAgQGZvciBGdW5j
dGlvbgotICAqLwotICBGdW5jdGlvbi5wcm90b3R5cGUub2JzZXJ2ZXNCZWZvcmUgPSBmdW5jdGlv
bigpIHsKLSAgICAKLSAgICAgIHRoaXMuX19lbWJlcl9vYnNlcnZlc0JlZm9yZV9fID0gYV9zbGlj
ZS5jYWxsKGFyZ3VtZW50cyk7Ci0gICAgCi0KLSAgICByZXR1cm4gdGhpczsKLSAgfTsKLQotICAv
KioKLSAgICBUaGUgYG9uYCBleHRlbnNpb24gb2YgSmF2YXNjcmlwdCdzIEZ1bmN0aW9uIHByb3Rv
dHlwZSBpcyBhdmFpbGFibGUKLSAgICB3aGVuIGBFbWJlci5FWFRFTkRfUFJPVE9UWVBFU2Agb3Ig
YEVtYmVyLkVYVEVORF9QUk9UT1RZUEVTLkZ1bmN0aW9uYCBpcwotICAgIHRydWUsIHdoaWNoIGlz
IHRoZSBkZWZhdWx0LgotCi0gICAgWW91IGNhbiBsaXN0ZW4gZm9yIGV2ZW50cyBzaW1wbHkgYnkg
YWRkaW5nIHRoZSBgb25gIGNhbGwgdG8gdGhlIGVuZCBvZgotICAgIHlvdXIgbWV0aG9kIGRlY2xh
cmF0aW9ucyBpbiBjbGFzc2VzIG9yIG1peGlucyB0aGF0IHlvdSB3cml0ZS4gRm9yIGV4YW1wbGU6
Ci0KLSAgICBgYGBqYXZhc2NyaXB0Ci0gICAgRW1iZXIuTWl4aW4uY3JlYXRlKHsKLSAgICAgIGRv
U29tZXRoaW5nV2l0aEVsZW1lbnQ6IGZ1bmN0aW9uKCkgewotICAgICAgICAvLyBFeGVjdXRlcyB3
aGVuZXZlciB0aGUgImRpZEluc2VydEVsZW1lbnQiIGV2ZW50IGZpcmVzCi0gICAgICB9Lm9uKCdk
aWRJbnNlcnRFbGVtZW50JykKLSAgICB9KTsKLSAgICBgYGAKLQotICAgIFNlZSBgRW1iZXIub25g
LgotCi0gICAgQG1ldGhvZCBvbgotICAgIEBmb3IgRnVuY3Rpb24KLSAgKi8KLSAgRnVuY3Rpb24u
cHJvdG90eXBlLm9uID0gZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGV2ZW50cyA9IGFfc2xpY2UuY2Fs
bChhcmd1bWVudHMpOwotICAgIHRoaXMuX19lbWJlcl9saXN0ZW5zX18gPSBldmVudHM7Ci0gICAg
cmV0dXJuIHRoaXM7Ci0gIH07Ci19Ci0KLQotfSkoKTsKLQotCi0KLShmdW5jdGlvbigpIHsKLQot
fSkoKTsKLQotCi0KLShmdW5jdGlvbigpIHsKLS8qKgotQG1vZHVsZSBlbWJlcgotQHN1Ym1vZHVs
ZSBlbWJlci1ydW50aW1lCi0qLwotCi0KLS8qKgotICBJbXBsZW1lbnRzIHNvbWUgc3RhbmRhcmQg
bWV0aG9kcyBmb3IgY29tcGFyaW5nIG9iamVjdHMuIEFkZCB0aGlzIG1peGluIHRvCi0gIGFueSBj
bGFzcyB5b3UgY3JlYXRlIHRoYXQgY2FuIGNvbXBhcmUgaXRzIGluc3RhbmNlcy4KLQotICBZb3Ug
c2hvdWxkIGltcGxlbWVudCB0aGUgYGNvbXBhcmUoKWAgbWV0aG9kLgotCi0gIEBjbGFzcyBDb21w
YXJhYmxlCi0gIEBuYW1lc3BhY2UgRW1iZXIKLSAgQHNpbmNlIEVtYmVyIDAuOQotKi8KLUVtYmVy
LkNvbXBhcmFibGUgPSBFbWJlci5NaXhpbi5jcmVhdGUoewotCi0gIC8qKgotICAgIE92ZXJyaWRl
IHRvIHJldHVybiB0aGUgcmVzdWx0IG9mIHRoZSBjb21wYXJpc29uIG9mIHRoZSB0d28gcGFyYW1l
dGVycy4gVGhlCi0gICAgY29tcGFyZSBtZXRob2Qgc2hvdWxkIHJldHVybjoKLQotICAgIC0gYC0x
YCBpZiBgYSA8IGJgCi0gICAgLSBgMGAgaWYgYGEgPT0gYmAKLSAgICAtIGAxYCBpZiBgYSA+IGJg
Ci0KLSAgICBEZWZhdWx0IGltcGxlbWVudGF0aW9uIHJhaXNlcyBhbiBleGNlcHRpb24uCi0KLSAg
ICBAbWV0aG9kIGNvbXBhcmUKLSAgICBAcGFyYW0gYSB7T2JqZWN0fSB0aGUgZmlyc3Qgb2JqZWN0
IHRvIGNvbXBhcmUKLSAgICBAcGFyYW0gYiB7T2JqZWN0fSB0aGUgc2Vjb25kIG9iamVjdCB0byBj
b21wYXJlCi0gICAgQHJldHVybiB7SW50ZWdlcn0gdGhlIHJlc3VsdCBvZiB0aGUgY29tcGFyaXNv
bgotICAqLwotICBjb21wYXJlOiBFbWJlci5yZXF1aXJlZChGdW5jdGlvbikKLQotfSk7Ci0KLQot
fSkoKTsKLQotCi0KLShmdW5jdGlvbigpIHsKLS8qKgotQG1vZHVsZSBlbWJlcgotQHN1Ym1vZHVs
ZSBlbWJlci1ydW50aW1lCi0qLwotCi0KLQotdmFyIGdldCA9IEVtYmVyLmdldCwgc2V0ID0gRW1i
ZXIuc2V0OwotCi0vKioKLSAgSW1wbGVtZW50cyBzb21lIHN0YW5kYXJkIG1ldGhvZHMgZm9yIGNv
cHlpbmcgYW4gb2JqZWN0LiBBZGQgdGhpcyBtaXhpbiB0bwotICBhbnkgb2JqZWN0IHlvdSBjcmVh
dGUgdGhhdCBjYW4gY3JlYXRlIGEgY29weSBvZiBpdHNlbGYuIFRoaXMgbWl4aW4gaXMKLSAgYWRk
ZWQgYXV0b21hdGljYWxseSB0byB0aGUgYnVpbHQtaW4gYXJyYXkuCi0KLSAgWW91IHNob3VsZCBn
ZW5lcmFsbHkgaW1wbGVtZW50IHRoZSBgY29weSgpYCBtZXRob2QgdG8gcmV0dXJuIGEgY29weSBv
ZiB0aGUKLSAgcmVjZWl2ZXIuCi0KLSAgTm90ZSB0aGF0IGBmcm96ZW5Db3B5KClgIHdpbGwgb25s
eSB3b3JrIGlmIHlvdSBhbHNvIGltcGxlbWVudAotICBgRW1iZXIuRnJlZXphYmxlYC4KLQotICBA
Y2xhc3MgQ29weWFibGUKLSAgQG5hbWVzcGFjZSBFbWJlcgotICBAc2luY2UgRW1iZXIgMC45Ci0q
LwotRW1iZXIuQ29weWFibGUgPSBFbWJlci5NaXhpbi5jcmVhdGUoewotCi0gIC8qKgotICAgIE92
ZXJyaWRlIHRvIHJldHVybiBhIGNvcHkgb2YgdGhlIHJlY2VpdmVyLiBEZWZhdWx0IGltcGxlbWVu
dGF0aW9uIHJhaXNlcwotICAgIGFuIGV4Y2VwdGlvbi4KLQotICAgIEBtZXRob2QgY29weQotICAg
IEBwYXJhbSB7Qm9vbGVhbn0gZGVlcCBpZiBgdHJ1ZWAsIGEgZGVlcCBjb3B5IG9mIHRoZSBvYmpl
Y3Qgc2hvdWxkIGJlIG1hZGUKLSAgICBAcmV0dXJuIHtPYmplY3R9IGNvcHkgb2YgcmVjZWl2ZXIK
LSAgKi8KLSAgY29weTogRW1iZXIucmVxdWlyZWQoRnVuY3Rpb24pLAotCi0gIC8qKgotICAgIElm
IHRoZSBvYmplY3QgaW1wbGVtZW50cyBgRW1iZXIuRnJlZXphYmxlYCwgdGhlbiB0aGlzIHdpbGwg
cmV0dXJuIGEgbmV3Ci0gICAgY29weSBpZiB0aGUgb2JqZWN0IGlzIG5vdCBmcm96ZW4gYW5kIHRo
ZSByZWNlaXZlciBpZiB0aGUgb2JqZWN0IGlzIGZyb3plbi4KLQotICAgIFJhaXNlcyBhbiBleGNl
cHRpb24gaWYgeW91IHRyeSB0byBjYWxsIHRoaXMgbWV0aG9kIG9uIGEgb2JqZWN0IHRoYXQgZG9l
cwotICAgIG5vdCBzdXBwb3J0IGZyZWV6aW5nLgotCi0gICAgWW91IHNob3VsZCB1c2UgdGhpcyBt
ZXRob2Qgd2hlbmV2ZXIgeW91IHdhbnQgYSBjb3B5IG9mIGEgZnJlZXphYmxlIG9iamVjdAotICAg
IHNpbmNlIGEgZnJlZXphYmxlIG9iamVjdCBjYW4gc2ltcGx5IHJldHVybiBpdHNlbGYgd2l0aG91
dCBhY3R1YWxseQotICAgIGNvbnN1bWluZyBtb3JlIG1lbW9yeS4KLQotICAgIEBtZXRob2QgZnJv
emVuQ29weQotICAgIEByZXR1cm4ge09iamVjdH0gY29weSBvZiByZWNlaXZlciBvciByZWNlaXZl
cgotICAqLwotICBmcm96ZW5Db3B5OiBmdW5jdGlvbigpIHsKLSAgICBpZiAoRW1iZXIuRnJlZXph
YmxlICYmIEVtYmVyLkZyZWV6YWJsZS5kZXRlY3QodGhpcykpIHsKLSAgICAgIHJldHVybiBnZXQo
dGhpcywgJ2lzRnJvemVuJykgPyB0aGlzIDogdGhpcy5jb3B5KCkuZnJlZXplKCk7Ci0gICAgfSBl
bHNlIHsKLSAgICAgIHRocm93IG5ldyBFbWJlci5FcnJvcihFbWJlci5TdHJpbmcuZm10KCIlQCBk
b2VzIG5vdCBzdXBwb3J0IGZyZWV6aW5nIiwgW3RoaXNdKSk7Ci0gICAgfQotICB9Ci19KTsKLQot
fSkoKTsKLQotCi0KLShmdW5jdGlvbigpIHsKLS8qKgotQG1vZHVsZSBlbWJlcgotQHN1Ym1vZHVs
ZSBlbWJlci1ydW50aW1lCi0qLwotCi0KLXZhciBnZXQgPSBFbWJlci5nZXQsIHNldCA9IEVtYmVy
LnNldDsKLQotLyoqCi0gIFRoZSBgRW1iZXIuRnJlZXphYmxlYCBtaXhpbiBpbXBsZW1lbnRzIHNv
bWUgYmFzaWMgbWV0aG9kcyBmb3IgbWFya2luZyBhbgotICBvYmplY3QgYXMgZnJvemVuLiBPbmNl
IGFuIG9iamVjdCBpcyBmcm96ZW4gaXQgc2hvdWxkIGJlIHJlYWQgb25seS4gTm8gY2hhbmdlcwot
ICBtYXkgYmUgbWFkZSB0aGUgaW50ZXJuYWwgc3RhdGUgb2YgdGhlIG9iamVjdC4KLQotICAjIyBF
bmZvcmNlbWVudAotCi0gIFRvIGZ1bGx5IHN1cHBvcnQgZnJlZXppbmcgaW4geW91ciBzdWJjbGFz
cywgeW91IG11c3QgaW5jbHVkZSB0aGlzIG1peGluIGFuZAotICBvdmVycmlkZSBhbnkgbWV0aG9k
IHRoYXQgbWlnaHQgYWx0ZXIgYW55IHByb3BlcnR5IG9uIHRoZSBvYmplY3QgdG8gaW5zdGVhZAot
ICByYWlzZSBhbiBleGNlcHRpb24uIFlvdSBjYW4gY2hlY2sgdGhlIHN0YXRlIG9mIGFuIG9iamVj
dCBieSBjaGVja2luZyB0aGUKLSAgYGlzRnJvemVuYCBwcm9wZXJ0eS4KLQotICBBbHRob3VnaCBm
dXR1cmUgdmVyc2lvbnMgb2YgSmF2YVNjcmlwdCBtYXkgc3VwcG9ydCBsYW5ndWFnZS1sZXZlbCBm
cmVlemluZwotICBvYmplY3Qgb2JqZWN0cywgdGhhdCBpcyBub3QgdGhlIGNhc2UgdG9kYXkuIEV2
ZW4gaWYgYW4gb2JqZWN0IGlzIGZyZWV6YWJsZSwKLSAgaXQgaXMgc3RpbGwgdGVjaG5pY2FsbHkg
cG9zc2libGUgdG8gbW9kaWZ5IHRoZSBvYmplY3QsIGV2ZW4gdGhvdWdoIGl0IGNvdWxkCi0gIGJy
ZWFrIG90aGVyIHBhcnRzIG9mIHlvdXIgYXBwbGljYXRpb24gdGhhdCBkbyBub3QgZXhwZWN0IGEg
ZnJvemVuIG9iamVjdCB0bwotICBjaGFuZ2UuIEl0IGlzLCB0aGVyZWZvcmUsIHZlcnkgaW1wb3J0
YW50IHRoYXQgeW91IGFsd2F5cyByZXNwZWN0IHRoZQotICBgaXNGcm96ZW5gIHByb3BlcnR5IG9u
IGFsbCBmcmVlemFibGUgb2JqZWN0cy4KLQotICAjIyBFeGFtcGxlIFVzYWdlCi0KLSAgVGhlIGV4
YW1wbGUgYmVsb3cgc2hvd3MgYSBzaW1wbGUgb2JqZWN0IHRoYXQgaW1wbGVtZW50IHRoZSBgRW1i
ZXIuRnJlZXphYmxlYAotICBwcm90b2NvbC4KLQotICBgYGBqYXZhc2NyaXB0Ci0gIENvbnRhY3Qg
PSBFbWJlci5PYmplY3QuZXh0ZW5kKEVtYmVyLkZyZWV6YWJsZSwgewotICAgIGZpcnN0TmFtZTog
bnVsbCwKLSAgICBsYXN0TmFtZTogbnVsbCwKLQotICAgIC8vIHN3YXBzIHRoZSBuYW1lcwotICAg
IHN3YXBOYW1lczogZnVuY3Rpb24oKSB7Ci0gICAgICBpZiAodGhpcy5nZXQoJ2lzRnJvemVuJykp
IHRocm93IEVtYmVyLkZST1pFTl9FUlJPUjsKLSAgICAgIHZhciB0bXAgPSB0aGlzLmdldCgnZmly
c3ROYW1lJyk7Ci0gICAgICB0aGlzLnNldCgnZmlyc3ROYW1lJywgdGhpcy5nZXQoJ2xhc3ROYW1l
JykpOwotICAgICAgdGhpcy5zZXQoJ2xhc3ROYW1lJywgdG1wKTsKLSAgICAgIHJldHVybiB0aGlz
OwotICAgIH0KLQotICB9KTsKLQotICBjID0gQ29udGFjdC5jcmVhdGUoeyBmaXJzdE5hbWU6ICJK
b2huIiwgbGFzdE5hbWU6ICJEb2UiIH0pOwotICBjLnN3YXBOYW1lcygpOyAgLy8gcmV0dXJucyBj
Ci0gIGMuZnJlZXplKCk7Ci0gIGMuc3dhcE5hbWVzKCk7ICAvLyBFWENFUFRJT04KLSAgYGBgCi0K
LSAgIyMgQ29weWluZwotCi0gIFVzdWFsbHkgdGhlIGBFbWJlci5GcmVlemFibGVgIHByb3RvY29s
IGlzIGltcGxlbWVudGVkIGluIGNvb3BlcmF0aW9uIHdpdGggdGhlCi0gIGBFbWJlci5Db3B5YWJs
ZWAgcHJvdG9jb2wsIHdoaWNoIGRlZmluZXMgYSBgZnJvemVuQ29weSgpYCBtZXRob2QgdGhhdCB3
aWxsCi0gIHJldHVybiBhIGZyb3plbiBvYmplY3QsIGlmIHRoZSBvYmplY3QgaW1wbGVtZW50cyB0
aGlzIG1ldGhvZCBhcyB3ZWxsLgotCi0gIEBjbGFzcyBGcmVlemFibGUKLSAgQG5hbWVzcGFjZSBF
bWJlcgotICBAc2luY2UgRW1iZXIgMC45Ci0qLwotRW1iZXIuRnJlZXphYmxlID0gRW1iZXIuTWl4
aW4uY3JlYXRlKHsKLQotICAvKioKLSAgICBTZXQgdG8gYHRydWVgIHdoZW4gdGhlIG9iamVjdCBp
cyBmcm96ZW4uIFVzZSB0aGlzIHByb3BlcnR5IHRvIGRldGVjdAotICAgIHdoZXRoZXIgeW91ciBv
YmplY3QgaXMgZnJvemVuIG9yIG5vdC4KLQotICAgIEBwcm9wZXJ0eSBpc0Zyb3plbgotICAgIEB0
eXBlIEJvb2xlYW4KLSAgKi8KLSAgaXNGcm96ZW46IGZhbHNlLAotCi0gIC8qKgotICAgIEZyZWV6
ZXMgdGhlIG9iamVjdC4gT25jZSB0aGlzIG1ldGhvZCBoYXMgYmVlbiBjYWxsZWQgdGhlIG9iamVj
dCBzaG91bGQKLSAgICBubyBsb25nZXIgYWxsb3cgYW55IHByb3BlcnRpZXMgdG8gYmUgZWRpdGVk
LgotCi0gICAgQG1ldGhvZCBmcmVlemUKLSAgICBAcmV0dXJuIHtPYmplY3R9IHJlY2VpdmVyCi0g
ICovCi0gIGZyZWV6ZTogZnVuY3Rpb24oKSB7Ci0gICAgaWYgKGdldCh0aGlzLCAnaXNGcm96ZW4n
KSkgcmV0dXJuIHRoaXM7Ci0gICAgc2V0KHRoaXMsICdpc0Zyb3plbicsIHRydWUpOwotICAgIHJl
dHVybiB0aGlzOwotICB9Ci0KLX0pOwotCi1FbWJlci5GUk9aRU5fRVJST1IgPSAiRnJvemVuIG9i
amVjdCBjYW5ub3QgYmUgbW9kaWZpZWQuIjsKLQotfSkoKTsKLQotCi0KLShmdW5jdGlvbigpIHsK
LS8qKgotQG1vZHVsZSBlbWJlcgotQHN1Ym1vZHVsZSBlbWJlci1ydW50aW1lCi0qLwotCi12YXIg
Zm9yRWFjaCA9IEVtYmVyLkVudW1lcmFibGVVdGlscy5mb3JFYWNoOwotCi0vKioKLSAgVGhpcyBt
aXhpbiBkZWZpbmVzIHRoZSBBUEkgZm9yIG1vZGlmeWluZyBnZW5lcmljIGVudW1lcmFibGVzLiBU
aGVzZSBtZXRob2RzCi0gIGNhbiBiZSBhcHBsaWVkIHRvIGFuIG9iamVjdCByZWdhcmRsZXNzIG9m
IHdoZXRoZXIgaXQgaXMgb3JkZXJlZCBvcgotICB1bm9yZGVyZWQuCi0KLSAgTm90ZSB0aGF0IGFu
IEVudW1lcmFibGUgY2FuIGNoYW5nZSBldmVuIGlmIGl0IGRvZXMgbm90IGltcGxlbWVudCB0aGlz
IG1peGluLgotICBGb3IgZXhhbXBsZSwgYSBNYXBwZWRFbnVtZXJhYmxlIGNhbm5vdCBiZSBkaXJl
Y3RseSBtb2RpZmllZCBidXQgaWYgaXRzCi0gIHVuZGVybHlpbmcgZW51bWVyYWJsZSBjaGFuZ2Vz
LCBpdCB3aWxsIGNoYW5nZSBhbHNvLgotCi0gICMjIEFkZGluZyBPYmplY3RzCi0KLSAgVG8gYWRk
IGFuIG9iamVjdCB0byBhbiBlbnVtZXJhYmxlLCB1c2UgdGhlIGBhZGRPYmplY3QoKWAgbWV0aG9k
LiBUaGlzCi0gIG1ldGhvZCB3aWxsIG9ubHkgYWRkIHRoZSBvYmplY3QgdG8gdGhlIGVudW1lcmFi
bGUgaWYgdGhlIG9iamVjdCBpcyBub3QKLSAgYWxyZWFkeSBwcmVzZW50IGFuZCBpcyBvZiBhIHR5
cGUgc3VwcG9ydGVkIGJ5IHRoZSBlbnVtZXJhYmxlLgotCi0gIGBgYGphdmFzY3JpcHQKLSAgc2V0
LmFkZE9iamVjdChjb250YWN0KTsKLSAgYGBgCi0KLSAgIyMgUmVtb3ZpbmcgT2JqZWN0cwotCi0g
IFRvIHJlbW92ZSBhbiBvYmplY3QgZnJvbSBhbiBlbnVtZXJhYmxlLCB1c2UgdGhlIGByZW1vdmVP
YmplY3QoKWAgbWV0aG9kLiBUaGlzCi0gIHdpbGwgb25seSByZW1vdmUgdGhlIG9iamVjdCBpZiBp
dCBpcyBwcmVzZW50IGluIHRoZSBlbnVtZXJhYmxlLCBvdGhlcndpc2UKLSAgdGhpcyBtZXRob2Qg
aGFzIG5vIGVmZmVjdC4KLQotICBgYGBqYXZhc2NyaXB0Ci0gIHNldC5yZW1vdmVPYmplY3QoY29u
dGFjdCk7Ci0gIGBgYAotCi0gICMjIEltcGxlbWVudGluZyBJbiBZb3VyIE93biBDb2RlCi0KLSAg
SWYgeW91IGFyZSBpbXBsZW1lbnRpbmcgYW4gb2JqZWN0IGFuZCB3YW50IHRvIHN1cHBvcnQgdGhp
cyBBUEksIGp1c3QgaW5jbHVkZQotICB0aGlzIG1peGluIGluIHlvdXIgY2xhc3MgYW5kIGltcGxl
bWVudCB0aGUgcmVxdWlyZWQgbWV0aG9kcy4gSW4geW91ciB1bml0Ci0gIHRlc3RzLCBiZSBzdXJl
IHRvIGFwcGx5IHRoZSBFbWJlci5NdXRhYmxlRW51bWVyYWJsZVRlc3RzIHRvIHlvdXIgb2JqZWN0
LgotCi0gIEBjbGFzcyBNdXRhYmxlRW51bWVyYWJsZQotICBAbmFtZXNwYWNlIEVtYmVyCi0gIEB1
c2VzIEVtYmVyLkVudW1lcmFibGUKLSovCi1FbWJlci5NdXRhYmxlRW51bWVyYWJsZSA9IEVtYmVy
Lk1peGluLmNyZWF0ZShFbWJlci5FbnVtZXJhYmxlLCB7Ci0KLSAgLyoqCi0gICAgX19SZXF1aXJl
ZC5fXyBZb3UgbXVzdCBpbXBsZW1lbnQgdGhpcyBtZXRob2QgdG8gYXBwbHkgdGhpcyBtaXhpbi4K
LQotICAgIEF0dGVtcHRzIHRvIGFkZCB0aGUgcGFzc2VkIG9iamVjdCB0byB0aGUgcmVjZWl2ZXIg
aWYgdGhlIG9iamVjdCBpcyBub3QKLSAgICBhbHJlYWR5IHByZXNlbnQgaW4gdGhlIGNvbGxlY3Rp
b24uIElmIHRoZSBvYmplY3QgaXMgcHJlc2VudCwgdGhpcyBtZXRob2QKLSAgICBoYXMgbm8gZWZm
ZWN0LgotCi0gICAgSWYgdGhlIHBhc3NlZCBvYmplY3QgaXMgb2YgYSB0eXBlIG5vdCBzdXBwb3J0
ZWQgYnkgdGhlIHJlY2VpdmVyLAotICAgIHRoZW4gdGhpcyBtZXRob2Qgc2hvdWxkIHJhaXNlIGFu
IGV4Y2VwdGlvbi4KLQotICAgIEBtZXRob2QgYWRkT2JqZWN0Ci0gICAgQHBhcmFtIHtPYmplY3R9
IG9iamVjdCBUaGUgb2JqZWN0IHRvIGFkZCB0byB0aGUgZW51bWVyYWJsZS4KLSAgICBAcmV0dXJu
IHtPYmplY3R9IHRoZSBwYXNzZWQgb2JqZWN0Ci0gICovCi0gIGFkZE9iamVjdDogRW1iZXIucmVx
dWlyZWQoRnVuY3Rpb24pLAotCi0gIC8qKgotICAgIEFkZHMgZWFjaCBvYmplY3QgaW4gdGhlIHBh
c3NlZCBlbnVtZXJhYmxlIHRvIHRoZSByZWNlaXZlci4KLQotICAgIEBtZXRob2QgYWRkT2JqZWN0
cwotICAgIEBwYXJhbSB7RW1iZXIuRW51bWVyYWJsZX0gb2JqZWN0cyB0aGUgb2JqZWN0cyB0byBh
ZGQuCi0gICAgQHJldHVybiB7T2JqZWN0fSByZWNlaXZlcgotICAqLwotICBhZGRPYmplY3RzOiBm
dW5jdGlvbihvYmplY3RzKSB7Ci0gICAgRW1iZXIuYmVnaW5Qcm9wZXJ0eUNoYW5nZXModGhpcyk7
Ci0gICAgZm9yRWFjaChvYmplY3RzLCBmdW5jdGlvbihvYmopIHsgdGhpcy5hZGRPYmplY3Qob2Jq
KTsgfSwgdGhpcyk7Ci0gICAgRW1iZXIuZW5kUHJvcGVydHlDaGFuZ2VzKHRoaXMpOwotICAgIHJl
dHVybiB0aGlzOwotICB9LAotCi0gIC8qKgotICAgIF9fUmVxdWlyZWQuX18gWW91IG11c3QgaW1w
bGVtZW50IHRoaXMgbWV0aG9kIHRvIGFwcGx5IHRoaXMgbWl4aW4uCi0KLSAgICBBdHRlbXB0cyB0
byByZW1vdmUgdGhlIHBhc3NlZCBvYmplY3QgZnJvbSB0aGUgcmVjZWl2ZXIgY29sbGVjdGlvbiBp
ZiB0aGUKLSAgICBvYmplY3QgaXMgcHJlc2VudCBpbiB0aGUgY29sbGVjdGlvbi4gSWYgdGhlIG9i
amVjdCBpcyBub3QgcHJlc2VudCwKLSAgICB0aGlzIG1ldGhvZCBoYXMgbm8gZWZmZWN0LgotCi0g
ICAgSWYgdGhlIHBhc3NlZCBvYmplY3QgaXMgb2YgYSB0eXBlIG5vdCBzdXBwb3J0ZWQgYnkgdGhl
IHJlY2VpdmVyLAotICAgIHRoZW4gdGhpcyBtZXRob2Qgc2hvdWxkIHJhaXNlIGFuIGV4Y2VwdGlv
bi4KLQotICAgIEBtZXRob2QgcmVtb3ZlT2JqZWN0Ci0gICAgQHBhcmFtIHtPYmplY3R9IG9iamVj
dCBUaGUgb2JqZWN0IHRvIHJlbW92ZSBmcm9tIHRoZSBlbnVtZXJhYmxlLgotICAgIEByZXR1cm4g
e09iamVjdH0gdGhlIHBhc3NlZCBvYmplY3QKLSAgKi8KLSAgcmVtb3ZlT2JqZWN0OiBFbWJlci5y
ZXF1aXJlZChGdW5jdGlvbiksCi0KLQotICAvKioKLSAgICBSZW1vdmVzIGVhY2ggb2JqZWN0IGlu
IHRoZSBwYXNzZWQgZW51bWVyYWJsZSBmcm9tIHRoZSByZWNlaXZlci4KLQotICAgIEBtZXRob2Qg
cmVtb3ZlT2JqZWN0cwotICAgIEBwYXJhbSB7RW1iZXIuRW51bWVyYWJsZX0gb2JqZWN0cyB0aGUg
b2JqZWN0cyB0byByZW1vdmUKLSAgICBAcmV0dXJuIHtPYmplY3R9IHJlY2VpdmVyCi0gICovCi0g
IHJlbW92ZU9iamVjdHM6IGZ1bmN0aW9uKG9iamVjdHMpIHsKLSAgICBFbWJlci5iZWdpblByb3Bl
cnR5Q2hhbmdlcyh0aGlzKTsKLSAgICBmb3JFYWNoKG9iamVjdHMsIGZ1bmN0aW9uKG9iaikgeyB0
aGlzLnJlbW92ZU9iamVjdChvYmopOyB9LCB0aGlzKTsKLSAgICBFbWJlci5lbmRQcm9wZXJ0eUNo
YW5nZXModGhpcyk7Ci0gICAgcmV0dXJuIHRoaXM7Ci0gIH0KLQotfSk7Ci0KLX0pKCk7Ci0KLQot
Ci0oZnVuY3Rpb24oKSB7Ci0vKioKLUBtb2R1bGUgZW1iZXIKLUBzdWJtb2R1bGUgZW1iZXItcnVu
dGltZQotKi8KLS8vIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4KLS8vIENPTlNUQU5UUwotLy8KLQotdmFyIE9VVF9PRl9SQU5HRV9FWENF
UFRJT04gPSAiSW5kZXggb3V0IG9mIHJhbmdlIiA7Ci12YXIgRU1QVFkgPSBbXTsKLQotLy8gLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgot
Ly8gSEVMUEVSUwotLy8KLQotdmFyIGdldCA9IEVtYmVyLmdldCwgc2V0ID0gRW1iZXIuc2V0Owot
Ci0vKioKLSAgVGhpcyBtaXhpbiBkZWZpbmVzIHRoZSBBUEkgZm9yIG1vZGlmeWluZyBhcnJheS1s
aWtlIG9iamVjdHMuIFRoZXNlIG1ldGhvZHMKLSAgY2FuIGJlIGFwcGxpZWQgb25seSB0byBhIGNv
bGxlY3Rpb24gdGhhdCBrZWVwcyBpdHMgaXRlbXMgaW4gYW4gb3JkZXJlZCBzZXQuCi0KLSAgTm90
ZSB0aGF0IGFuIEFycmF5IGNhbiBjaGFuZ2UgZXZlbiBpZiBpdCBkb2VzIG5vdCBpbXBsZW1lbnQg
dGhpcyBtaXhpbi4KLSAgRm9yIGV4YW1wbGUsIG9uZSBtaWdodCBpbXBsZW1lbnQgYSBTcGFyc2VB
cnJheSB0aGF0IGNhbm5vdCBiZSBkaXJlY3RseQotICBtb2RpZmllZCwgYnV0IGlmIGl0cyB1bmRl
cmx5aW5nIGVudW1lcmFibGUgY2hhbmdlcywgaXQgd2lsbCBjaGFuZ2UgYWxzby4KLQotICBAY2xh
c3MgTXV0YWJsZUFycmF5Ci0gIEBuYW1lc3BhY2UgRW1iZXIKLSAgQHVzZXMgRW1iZXIuQXJyYXkK
LSAgQHVzZXMgRW1iZXIuTXV0YWJsZUVudW1lcmFibGUKLSovCi1FbWJlci5NdXRhYmxlQXJyYXkg
PSBFbWJlci5NaXhpbi5jcmVhdGUoRW1iZXIuQXJyYXksIEVtYmVyLk11dGFibGVFbnVtZXJhYmxl
LCB7Ci0KLSAgLyoqCi0gICAgX19SZXF1aXJlZC5fXyBZb3UgbXVzdCBpbXBsZW1lbnQgdGhpcyBt
ZXRob2QgdG8gYXBwbHkgdGhpcyBtaXhpbi4KLQotICAgIFRoaXMgaXMgb25lIG9mIHRoZSBwcmlt
aXRpdmVzIHlvdSBtdXN0IGltcGxlbWVudCB0byBzdXBwb3J0IGBFbWJlci5BcnJheWAuCi0gICAg
WW91IHNob3VsZCByZXBsYWNlIGFtdCBvYmplY3RzIHN0YXJ0ZWQgYXQgaWR4IHdpdGggdGhlIG9i
amVjdHMgaW4gdGhlCi0gICAgcGFzc2VkIGFycmF5LiBZb3Ugc2hvdWxkIGFsc28gY2FsbCBgdGhp
cy5lbnVtZXJhYmxlQ29udGVudERpZENoYW5nZSgpYAotCi0gICAgQG1ldGhvZCByZXBsYWNlCi0g
ICAgQHBhcmFtIHtOdW1iZXJ9IGlkeCBTdGFydGluZyBpbmRleCBpbiB0aGUgYXJyYXkgdG8gcmVw
bGFjZS4gSWYKLSAgICAgIGlkeCA+PSBsZW5ndGgsIHRoZW4gYXBwZW5kIHRvIHRoZSBlbmQgb2Yg
dGhlIGFycmF5LgotICAgIEBwYXJhbSB7TnVtYmVyfSBhbXQgTnVtYmVyIG9mIGVsZW1lbnRzIHRo
YXQgc2hvdWxkIGJlIHJlbW92ZWQgZnJvbQotICAgICAgdGhlIGFycmF5LCBzdGFydGluZyBhdCAq
aWR4Ki4KLSAgICBAcGFyYW0ge0FycmF5fSBvYmplY3RzIEFuIGFycmF5IG9mIHplcm8gb3IgbW9y
ZSBvYmplY3RzIHRoYXQgc2hvdWxkIGJlCi0gICAgICBpbnNlcnRlZCBpbnRvIHRoZSBhcnJheSBh
dCAqaWR4KgotICAqLwotICByZXBsYWNlOiBFbWJlci5yZXF1aXJlZCgpLAotCi0gIC8qKgotICAg
IFJlbW92ZSBhbGwgZWxlbWVudHMgZnJvbSBzZWxmLiBUaGlzIGlzIHVzZWZ1bCBpZiB5b3UKLSAg
ICB3YW50IHRvIHJldXNlIGFuIGV4aXN0aW5nIGFycmF5IHdpdGhvdXQgaGF2aW5nIHRvIHJlY3Jl
YXRlIGl0LgotCi0gICAgYGBgamF2YXNjcmlwdAotICAgIHZhciBjb2xvcnMgPSBbInJlZCIsICJn
cmVlbiIsICJibHVlIl07Ci0gICAgY29sb3IubGVuZ3RoKCk7ICAgLy8gIDMKLSAgICBjb2xvcnMu
Y2xlYXIoKTsgICAvLyAgW10KLSAgICBjb2xvcnMubGVuZ3RoKCk7ICAvLyAgMAotICAgIGBgYAot
Ci0gICAgQG1ldGhvZCBjbGVhcgotICAgIEByZXR1cm4ge0VtYmVyLkFycmF5fSBBbiBlbXB0eSBB
cnJheS4KLSAgKi8KLSAgY2xlYXI6IGZ1bmN0aW9uICgpIHsKLSAgICB2YXIgbGVuID0gZ2V0KHRo
aXMsICdsZW5ndGgnKTsKLSAgICBpZiAobGVuID09PSAwKSByZXR1cm4gdGhpczsKLSAgICB0aGlz
LnJlcGxhY2UoMCwgbGVuLCBFTVBUWSk7Ci0gICAgcmV0dXJuIHRoaXM7Ci0gIH0sCi0KLSAgLyoq
Ci0gICAgVGhpcyB3aWxsIHVzZSB0aGUgcHJpbWl0aXZlIGByZXBsYWNlKClgIG1ldGhvZCB0byBp
bnNlcnQgYW4gb2JqZWN0IGF0IHRoZQotICAgIHNwZWNpZmllZCBpbmRleC4KLQotICAgIGBgYGph
dmFzY3JpcHQKLSAgICB2YXIgY29sb3JzID0gWyJyZWQiLCAiZ3JlZW4iLCAiYmx1ZSJdOwotICAg
IGNvbG9ycy5pbnNlcnRBdCgyLCAieWVsbG93Iik7ICAvLyBbInJlZCIsICJncmVlbiIsICJ5ZWxs
b3ciLCAiYmx1ZSJdCi0gICAgY29sb3JzLmluc2VydEF0KDUsICJvcmFuZ2UiKTsgIC8vIEVycm9y
OiBJbmRleCBvdXQgb2YgcmFuZ2UKLSAgICBgYGAKLQotICAgIEBtZXRob2QgaW5zZXJ0QXQKLSAg
ICBAcGFyYW0ge051bWJlcn0gaWR4IGluZGV4IG9mIGluc2VydCB0aGUgb2JqZWN0IGF0LgotICAg
IEBwYXJhbSB7T2JqZWN0fSBvYmplY3Qgb2JqZWN0IHRvIGluc2VydAotICAgIEByZXR1cm4gdGhp
cwotICAqLwotICBpbnNlcnRBdDogZnVuY3Rpb24oaWR4LCBvYmplY3QpIHsKLSAgICBpZiAoaWR4
ID4gZ2V0KHRoaXMsICdsZW5ndGgnKSkgdGhyb3cgbmV3IEVtYmVyLkVycm9yKE9VVF9PRl9SQU5H
RV9FWENFUFRJT04pIDsKLSAgICB0aGlzLnJlcGxhY2UoaWR4LCAwLCBbb2JqZWN0XSkgOwotICAg
IHJldHVybiB0aGlzIDsKLSAgfSwKLQotICAvKioKLSAgICBSZW1vdmUgYW4gb2JqZWN0IGF0IHRo
ZSBzcGVjaWZpZWQgaW5kZXggdXNpbmcgdGhlIGByZXBsYWNlKClgIHByaW1pdGl2ZQotICAgIG1l
dGhvZC4gWW91IGNhbiBwYXNzIGVpdGhlciBhIHNpbmdsZSBpbmRleCwgb3IgYSBzdGFydCBhbmQg
YSBsZW5ndGguCi0KLSAgICBJZiB5b3UgcGFzcyBhIHN0YXJ0IGFuZCBsZW5ndGggdGhhdCBpcyBi
ZXlvbmQgdGhlCi0gICAgbGVuZ3RoIHRoaXMgbWV0aG9kIHdpbGwgdGhyb3cgYW4gYE9VVF9PRl9S
QU5HRV9FWENFUFRJT05gLgotCi0gICAgYGBgamF2YXNjcmlwdAotICAgIHZhciBjb2xvcnMgPSBb
InJlZCIsICJncmVlbiIsICJibHVlIiwgInllbGxvdyIsICJvcmFuZ2UiXTsKLSAgICBjb2xvcnMu
cmVtb3ZlQXQoMCk7ICAgICAvLyBbImdyZWVuIiwgImJsdWUiLCAieWVsbG93IiwgIm9yYW5nZSJd
Ci0gICAgY29sb3JzLnJlbW92ZUF0KDIsIDIpOyAgLy8gWyJncmVlbiIsICJibHVlIl0KLSAgICBj
b2xvcnMucmVtb3ZlQXQoNCwgMik7ICAvLyBFcnJvcjogSW5kZXggb3V0IG9mIHJhbmdlCi0gICAg
YGBgCi0KLSAgICBAbWV0aG9kIHJlbW92ZUF0Ci0gICAgQHBhcmFtIHtOdW1iZXJ9IHN0YXJ0IGlu
ZGV4LCBzdGFydCBvZiByYW5nZQotICAgIEBwYXJhbSB7TnVtYmVyfSBsZW4gbGVuZ3RoIG9mIHBh
c3NpbmcgcmFuZ2UKLSAgICBAcmV0dXJuIHtPYmplY3R9IHJlY2VpdmVyCi0gICovCi0gIHJlbW92
ZUF0OiBmdW5jdGlvbihzdGFydCwgbGVuKSB7Ci0gICAgaWYgKCdudW1iZXInID09PSB0eXBlb2Yg
c3RhcnQpIHsKLQotICAgICAgaWYgKChzdGFydCA8IDApIHx8IChzdGFydCA+PSBnZXQodGhpcywg
J2xlbmd0aCcpKSkgewotICAgICAgICB0aHJvdyBuZXcgRW1iZXIuRXJyb3IoT1VUX09GX1JBTkdF
X0VYQ0VQVElPTik7Ci0gICAgICB9Ci0KLSAgICAgIC8vIGZhc3QgY2FzZQotICAgICAgaWYgKGxl
biA9PT0gdW5kZWZpbmVkKSBsZW4gPSAxOwotICAgICAgdGhpcy5yZXBsYWNlKHN0YXJ0LCBsZW4s
IEVNUFRZKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdGhpcyA7Ci0gIH0sCi0KLSAgLyoqCi0gICAg
UHVzaCB0aGUgb2JqZWN0IG9udG8gdGhlIGVuZCBvZiB0aGUgYXJyYXkuIFdvcmtzIGp1c3QgbGlr
ZSBgcHVzaCgpYCBidXQgaXQKLSAgICBpcyBLVk8tY29tcGxpYW50LgotCi0gICAgYGBgamF2YXNj
cmlwdAotICAgIHZhciBjb2xvcnMgPSBbInJlZCIsICJncmVlbiJdOwotICAgIGNvbG9ycy5wdXNo
T2JqZWN0KCJibGFjayIpOyAgICAgLy8gWyJyZWQiLCAiZ3JlZW4iLCAiYmxhY2siXQotICAgIGNv
bG9ycy5wdXNoT2JqZWN0KFsieWVsbG93Il0pOyAgLy8gWyJyZWQiLCAiZ3JlZW4iLCBbInllbGxv
dyJdXQotICAgIGBgYAotCi0gICAgQG1ldGhvZCBwdXNoT2JqZWN0Ci0gICAgQHBhcmFtIHsqfSBv
Ymogb2JqZWN0IHRvIHB1c2gKLSAgICBAcmV0dXJuIFRoZSBzYW1lIG9iaiBwYXNzZWQgYXMgcGFy
YW0KLSAgKi8KLSAgcHVzaE9iamVjdDogZnVuY3Rpb24ob2JqKSB7Ci0gICAgdGhpcy5pbnNlcnRB
dChnZXQodGhpcywgJ2xlbmd0aCcpLCBvYmopIDsKLSAgICByZXR1cm4gb2JqOwotICB9LAotCi0g
IC8qKgotICAgIEFkZCB0aGUgb2JqZWN0cyBpbiB0aGUgcGFzc2VkIG51bWVyYWJsZSB0byB0aGUg
ZW5kIG9mIHRoZSBhcnJheS4gRGVmZXJzCi0gICAgbm90aWZ5aW5nIG9ic2VydmVycyBvZiB0aGUg
Y2hhbmdlIHVudGlsIGFsbCBvYmplY3RzIGFyZSBhZGRlZC4KLQotICAgIGBgYGphdmFzY3JpcHQK
LSAgICB2YXIgY29sb3JzID0gWyJyZWQiXTsKLSAgICBjb2xvcnMucHVzaE9iamVjdHMoWyJ5ZWxs
b3ciLCAib3JhbmdlIl0pOyAgLy8gWyJyZWQiLCAieWVsbG93IiwgIm9yYW5nZSJdCi0gICAgYGBg
Ci0KLSAgICBAbWV0aG9kIHB1c2hPYmplY3RzCi0gICAgQHBhcmFtIHtFbWJlci5FbnVtZXJhYmxl
fSBvYmplY3RzIHRoZSBvYmplY3RzIHRvIGFkZAotICAgIEByZXR1cm4ge0VtYmVyLkFycmF5fSBy
ZWNlaXZlcgotICAqLwotICBwdXNoT2JqZWN0czogZnVuY3Rpb24ob2JqZWN0cykgewotICAgIGlm
ICghKEVtYmVyLkVudW1lcmFibGUuZGV0ZWN0KG9iamVjdHMpIHx8IEVtYmVyLmlzQXJyYXkob2Jq
ZWN0cykpKSB7Ci0gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCJNdXN0IHBhc3MgRW1iZXIuRW51
bWVyYWJsZSB0byBFbWJlci5NdXRhYmxlQXJyYXkjcHVzaE9iamVjdHMiKTsKLSAgICB9Ci0gICAg
dGhpcy5yZXBsYWNlKGdldCh0aGlzLCAnbGVuZ3RoJyksIDAsIG9iamVjdHMpOwotICAgIHJldHVy
biB0aGlzOwotICB9LAotCi0gIC8qKgotICAgIFBvcCBvYmplY3QgZnJvbSBhcnJheSBvciBuaWwg
aWYgbm9uZSBhcmUgbGVmdC4gV29ya3MganVzdCBsaWtlIGBwb3AoKWAgYnV0Ci0gICAgaXQgaXMg
S1ZPLWNvbXBsaWFudC4KLQotICAgIGBgYGphdmFzY3JpcHQKLSAgICB2YXIgY29sb3JzID0gWyJy
ZWQiLCAiZ3JlZW4iLCAiYmx1ZSJdOwotICAgIGNvbG9ycy5wb3BPYmplY3QoKTsgICAvLyAiYmx1
ZSIKLSAgICBjb25zb2xlLmxvZyhjb2xvcnMpOyAgLy8gWyJyZWQiLCAiZ3JlZW4iXQotICAgIGBg
YAotCi0gICAgQG1ldGhvZCBwb3BPYmplY3QKLSAgICBAcmV0dXJuIG9iamVjdAotICAqLwotICBw
b3BPYmplY3Q6IGZ1bmN0aW9uKCkgewotICAgIHZhciBsZW4gPSBnZXQodGhpcywgJ2xlbmd0aCcp
IDsKLSAgICBpZiAobGVuID09PSAwKSByZXR1cm4gbnVsbCA7Ci0KLSAgICB2YXIgcmV0ID0gdGhp
cy5vYmplY3RBdChsZW4tMSkgOwotICAgIHRoaXMucmVtb3ZlQXQobGVuLTEsIDEpIDsKLSAgICBy
ZXR1cm4gcmV0IDsKLSAgfSwKLQotICAvKioKLSAgICBTaGlmdCBhbiBvYmplY3QgZnJvbSBzdGFy
dCBvZiBhcnJheSBvciBuaWwgaWYgbm9uZSBhcmUgbGVmdC4gV29ya3MganVzdAotICAgIGxpa2Ug
YHNoaWZ0KClgIGJ1dCBpdCBpcyBLVk8tY29tcGxpYW50LgotCi0gICAgYGBgamF2YXNjcmlwdAot
ICAgIHZhciBjb2xvcnMgPSBbInJlZCIsICJncmVlbiIsICJibHVlIl07Ci0gICAgY29sb3JzLnNo
aWZ0T2JqZWN0KCk7ICAvLyAicmVkIgotICAgIGNvbnNvbGUubG9nKGNvbG9ycyk7ICAgLy8gWyJn
cmVlbiIsICJibHVlIl0KLSAgICBgYGAKLQotICAgIEBtZXRob2Qgc2hpZnRPYmplY3QKLSAgICBA
cmV0dXJuIG9iamVjdAotICAqLwotICBzaGlmdE9iamVjdDogZnVuY3Rpb24oKSB7Ci0gICAgaWYg
KGdldCh0aGlzLCAnbGVuZ3RoJykgPT09IDApIHJldHVybiBudWxsIDsKLSAgICB2YXIgcmV0ID0g
dGhpcy5vYmplY3RBdCgwKSA7Ci0gICAgdGhpcy5yZW1vdmVBdCgwKSA7Ci0gICAgcmV0dXJuIHJl
dCA7Ci0gIH0sCi0KLSAgLyoqCi0gICAgVW5zaGlmdCBhbiBvYmplY3QgdG8gc3RhcnQgb2YgYXJy
YXkuIFdvcmtzIGp1c3QgbGlrZSBgdW5zaGlmdCgpYCBidXQgaXQgaXMKLSAgICBLVk8tY29tcGxp
YW50LgotCi0gICAgYGBgamF2YXNjcmlwdAotICAgIHZhciBjb2xvcnMgPSBbInJlZCJdOwotICAg
IGNvbG9ycy51bnNoaWZ0T2JqZWN0KCJ5ZWxsb3ciKTsgICAgLy8gWyJ5ZWxsb3ciLCAicmVkIl0K
LSAgICBjb2xvcnMudW5zaGlmdE9iamVjdChbImJsYWNrIl0pOyAgIC8vIFtbImJsYWNrIl0sICJ5
ZWxsb3ciLCAicmVkIl0KLSAgICBgYGAKLQotICAgIEBtZXRob2QgdW5zaGlmdE9iamVjdAotICAg
IEBwYXJhbSB7Kn0gb2JqIG9iamVjdCB0byB1bnNoaWZ0Ci0gICAgQHJldHVybiBUaGUgc2FtZSBv
YmogcGFzc2VkIGFzIHBhcmFtCi0gICovCi0gIHVuc2hpZnRPYmplY3Q6IGZ1bmN0aW9uKG9iaikg
ewotICAgIHRoaXMuaW5zZXJ0QXQoMCwgb2JqKSA7Ci0gICAgcmV0dXJuIG9iaiA7Ci0gIH0sCi0K
LSAgLyoqCi0gICAgQWRkcyB0aGUgbmFtZWQgb2JqZWN0cyB0byB0aGUgYmVnaW5uaW5nIG9mIHRo
ZSBhcnJheS4gRGVmZXJzIG5vdGlmeWluZwotICAgIG9ic2VydmVycyB1bnRpbCBhbGwgb2JqZWN0
cyBoYXZlIGJlZW4gYWRkZWQuCi0KLSAgICBgYGBqYXZhc2NyaXB0Ci0gICAgdmFyIGNvbG9ycyA9
IFsicmVkIl07Ci0gICAgY29sb3JzLnVuc2hpZnRPYmplY3RzKFsiYmxhY2siLCAid2hpdGUiXSk7
ICAgLy8gWyJibGFjayIsICJ3aGl0ZSIsICJyZWQiXQotICAgIGNvbG9ycy51bnNoaWZ0T2JqZWN0
cygieWVsbG93Iik7IC8vIFR5cGUgRXJyb3I6ICd1bmRlZmluZWQnIGlzIG5vdCBhIGZ1bmN0aW9u
Ci0gICAgYGBgCi0KLSAgICBAbWV0aG9kIHVuc2hpZnRPYmplY3RzCi0gICAgQHBhcmFtIHtFbWJl
ci5FbnVtZXJhYmxlfSBvYmplY3RzIHRoZSBvYmplY3RzIHRvIGFkZAotICAgIEByZXR1cm4ge0Vt
YmVyLkFycmF5fSByZWNlaXZlcgotICAqLwotICB1bnNoaWZ0T2JqZWN0czogZnVuY3Rpb24ob2Jq
ZWN0cykgewotICAgIHRoaXMucmVwbGFjZSgwLCAwLCBvYmplY3RzKTsKLSAgICByZXR1cm4gdGhp
czsKLSAgfSwKLQotICAvKioKLSAgICBSZXZlcnNlIG9iamVjdHMgaW4gdGhlIGFycmF5LiBXb3Jr
cyBqdXN0IGxpa2UgYHJldmVyc2UoKWAgYnV0IGl0IGlzCi0gICAgS1ZPLWNvbXBsaWFudC4KLQot
ICAgIEBtZXRob2QgcmV2ZXJzZU9iamVjdHMKLSAgICBAcmV0dXJuIHtFbWJlci5BcnJheX0gcmVj
ZWl2ZXIKLSAgICovCi0gIHJldmVyc2VPYmplY3RzOiBmdW5jdGlvbigpIHsKLSAgICB2YXIgbGVu
ID0gZ2V0KHRoaXMsICdsZW5ndGgnKTsKLSAgICBpZiAobGVuID09PSAwKSByZXR1cm4gdGhpczsK
LSAgICB2YXIgb2JqZWN0cyA9IHRoaXMudG9BcnJheSgpLnJldmVyc2UoKTsKLSAgICB0aGlzLnJl
cGxhY2UoMCwgbGVuLCBvYmplY3RzKTsKLSAgICByZXR1cm4gdGhpczsKLSAgfSwKLQotICAvKioK
LSAgICBSZXBsYWNlIGFsbCB0aGUgdGhlIHJlY2VpdmVyJ3MgY29udGVudCB3aXRoIGNvbnRlbnQg
b2YgdGhlIGFyZ3VtZW50LgotICAgIElmIGFyZ3VtZW50IGlzIGFuIGVtcHR5IGFycmF5IHJlY2Vp
dmVyIHdpbGwgYmUgY2xlYXJlZC4KLQotICAgIGBgYGphdmFzY3JpcHQKLSAgICB2YXIgY29sb3Jz
ID0gWyJyZWQiLCAiZ3JlZW4iLCAiYmx1ZSJdOwotICAgIGNvbG9ycy5zZXRPYmplY3RzKFsiYmxh
Y2siLCAid2hpdGUiXSk7ICAvLyBbImJsYWNrIiwgIndoaXRlIl0KLSAgICBjb2xvcnMuc2V0T2Jq
ZWN0cyhbXSk7ICAgICAgICAgICAgICAgICAgLy8gW10KLSAgICBgYGAKLQotICAgIEBtZXRob2Qg
c2V0T2JqZWN0cwotICAgIEBwYXJhbSB7RW1iZXIuQXJyYXl9IG9iamVjdHMgYXJyYXkgd2hvc2Ug
Y29udGVudCB3aWxsIGJlIHVzZWQgZm9yIHJlcGxhY2luZwotICAgICAgICB0aGUgY29udGVudCBv
ZiB0aGUgcmVjZWl2ZXIKLSAgICBAcmV0dXJuIHtFbWJlci5BcnJheX0gcmVjZWl2ZXIgd2l0aCB0
aGUgbmV3IGNvbnRlbnQKLSAgICovCi0gIHNldE9iamVjdHM6IGZ1bmN0aW9uKG9iamVjdHMpIHsK
LSAgICBpZiAob2JqZWN0cy5sZW5ndGggPT09IDApIHJldHVybiB0aGlzLmNsZWFyKCk7Ci0KLSAg
ICB2YXIgbGVuID0gZ2V0KHRoaXMsICdsZW5ndGgnKTsKLSAgICB0aGlzLnJlcGxhY2UoMCwgbGVu
LCBvYmplY3RzKTsKLSAgICByZXR1cm4gdGhpczsKLSAgfSwKLQotICAvLyAuLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi0gIC8vIElNUExF
TUVOVCBFbWJlci5NdXRhYmxlRW51bWVyYWJsZQotICAvLwotCi0gIHJlbW92ZU9iamVjdDogZnVu
Y3Rpb24ob2JqKSB7Ci0gICAgdmFyIGxvYyA9IGdldCh0aGlzLCAnbGVuZ3RoJykgfHwgMDsKLSAg
ICB3aGlsZSgtLWxvYyA+PSAwKSB7Ci0gICAgICB2YXIgY3VyT2JqZWN0ID0gdGhpcy5vYmplY3RB
dChsb2MpIDsKLSAgICAgIGlmIChjdXJPYmplY3QgPT09IG9iaikgdGhpcy5yZW1vdmVBdChsb2Mp
IDsKLSAgICB9Ci0gICAgcmV0dXJuIHRoaXMgOwotICB9LAotCi0gIGFkZE9iamVjdDogZnVuY3Rp
b24ob2JqKSB7Ci0gICAgaWYgKCF0aGlzLmNvbnRhaW5zKG9iaikpIHRoaXMucHVzaE9iamVjdChv
YmopOwotICAgIHJldHVybiB0aGlzIDsKLSAgfQotCi19KTsKLQotfSkoKTsKLQotCi0KLShmdW5j
dGlvbigpIHsKLS8qKgotQG1vZHVsZSBlbWJlcgotQHN1Ym1vZHVsZSBlbWJlci1ydW50aW1lCi0q
LwotCi12YXIgZ2V0ID0gRW1iZXIuZ2V0LCBzZXQgPSBFbWJlci5zZXQ7Ci0KLS8qKgotYEVtYmVy
LlRhcmdldEFjdGlvblN1cHBvcnRgIGlzIGEgbWl4aW4gdGhhdCBjYW4gYmUgaW5jbHVkZWQgaW4g
YSBjbGFzcwotdG8gYWRkIGEgYHRyaWdnZXJBY3Rpb25gIG1ldGhvZCB3aXRoIHNlbWFudGljcyBz
aW1pbGFyIHRvIHRoZSBIYW5kbGViYXJzCi1ge3thY3Rpb259fWAgaGVscGVyLiBJbiBub3JtYWwg
RW1iZXIgdXNhZ2UsIHRoZSBge3thY3Rpb259fWAgaGVscGVyIGlzCi11c3VhbGx5IHRoZSBiZXN0
IGNob2ljZS4gVGhpcyBtaXhpbiBpcyBtb3N0IG9mdGVuIHVzZWZ1bCB3aGVuIHlvdSBhcmUKLWRv
aW5nIG1vcmUgY29tcGxleCBldmVudCBoYW5kbGluZyBpbiBWaWV3IG9iamVjdHMuCi0KLVNlZSBh
bHNvIGBFbWJlci5WaWV3VGFyZ2V0QWN0aW9uU3VwcG9ydGAsIHdoaWNoIGhhcwotdmlldy1hd2Fy
ZSBkZWZhdWx0cyBmb3IgdGFyZ2V0IGFuZCBhY3Rpb25Db250ZXh0LgotCi1AY2xhc3MgVGFyZ2V0
QWN0aW9uU3VwcG9ydAotQG5hbWVzcGFjZSBFbWJlcgotQGV4dGVuZHMgRW1iZXIuTWl4aW4KLSov
Ci1FbWJlci5UYXJnZXRBY3Rpb25TdXBwb3J0ID0gRW1iZXIuTWl4aW4uY3JlYXRlKHsKLSAgdGFy
Z2V0OiBudWxsLAotICBhY3Rpb246IG51bGwsCi0gIGFjdGlvbkNvbnRleHQ6IG51bGwsCi0KLSAg
dGFyZ2V0T2JqZWN0OiBFbWJlci5jb21wdXRlZChmdW5jdGlvbigpIHsKLSAgICB2YXIgdGFyZ2V0
ID0gZ2V0KHRoaXMsICd0YXJnZXQnKTsKLQotICAgIGlmIChFbWJlci50eXBlT2YodGFyZ2V0KSA9
PT0gInN0cmluZyIpIHsKLSAgICAgIHZhciB2YWx1ZSA9IGdldCh0aGlzLCB0YXJnZXQpOwotICAg
ICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHsgdmFsdWUgPSBnZXQoRW1iZXIubG9va3VwLCB0
YXJnZXQpOyB9Ci0gICAgICByZXR1cm4gdmFsdWU7Ci0gICAgfSBlbHNlIHsKLSAgICAgIHJldHVy
biB0YXJnZXQ7Ci0gICAgfQotICB9KS5wcm9wZXJ0eSgndGFyZ2V0JyksCi0KLSAgYWN0aW9uQ29u
dGV4dE9iamVjdDogRW1iZXIuY29tcHV0ZWQoZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGFjdGlvbkNv
bnRleHQgPSBnZXQodGhpcywgJ2FjdGlvbkNvbnRleHQnKTsKLQotICAgIGlmIChFbWJlci50eXBl
T2YoYWN0aW9uQ29udGV4dCkgPT09ICJzdHJpbmciKSB7Ci0gICAgICB2YXIgdmFsdWUgPSBnZXQo
dGhpcywgYWN0aW9uQ29udGV4dCk7Ci0gICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkgeyB2
YWx1ZSA9IGdldChFbWJlci5sb29rdXAsIGFjdGlvbkNvbnRleHQpOyB9Ci0gICAgICByZXR1cm4g
dmFsdWU7Ci0gICAgfSBlbHNlIHsKLSAgICAgIHJldHVybiBhY3Rpb25Db250ZXh0OwotICAgIH0K
LSAgfSkucHJvcGVydHkoJ2FjdGlvbkNvbnRleHQnKSwKLQotICAvKioKLSAgU2VuZCBhbiAiYWN0
aW9uIiB3aXRoIGFuICJhY3Rpb25Db250ZXh0IiB0byBhICJ0YXJnZXQiLiBUaGUgYWN0aW9uLCBh
Y3Rpb25Db250ZXh0Ci0gIGFuZCB0YXJnZXQgd2lsbCBiZSByZXRyaWV2ZWQgZnJvbSBwcm9wZXJ0
aWVzIG9mIHRoZSBvYmplY3QuIEZvciBleGFtcGxlOgotCi0gIGBgYGphdmFzY3JpcHQKLSAgQXBw
LlNhdmVCdXR0b25WaWV3ID0gRW1iZXIuVmlldy5leHRlbmQoRW1iZXIuVGFyZ2V0QWN0aW9uU3Vw
cG9ydCwgewotICAgIHRhcmdldDogRW1iZXIuY29tcHV0ZWQuYWxpYXMoJ2NvbnRyb2xsZXInKSwK
LSAgICBhY3Rpb246ICdzYXZlJywKLSAgICBhY3Rpb25Db250ZXh0OiBFbWJlci5jb21wdXRlZC5h
bGlhcygnY29udGV4dCcpLAotICAgIGNsaWNrOiBmdW5jdGlvbigpIHsKLSAgICAgIHRoaXMudHJp
Z2dlckFjdGlvbigpOyAvLyBTZW5kcyB0aGUgYHNhdmVgIGFjdGlvbiwgYWxvbmcgd2l0aCB0aGUg
Y3VycmVudCBjb250ZXh0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gdGhlIGN1
cnJlbnQgY29udHJvbGxlcgotICAgIH0KLSAgfSk7Ci0gIGBgYAotCi0gIFRoZSBgdGFyZ2V0YCwg
YGFjdGlvbmAsIGFuZCBgYWN0aW9uQ29udGV4dGAgY2FuIGJlIHByb3ZpZGVkIGFzIHByb3BlcnRp
ZXMgb2YKLSAgYW4gb3B0aW9uYWwgb2JqZWN0IGFyZ3VtZW50IHRvIGB0cmlnZ2VyQWN0aW9uYCBh
cyB3ZWxsLgotCi0gIGBgYGphdmFzY3JpcHQKLSAgQXBwLlNhdmVCdXR0b25WaWV3ID0gRW1iZXIu
Vmlldy5leHRlbmQoRW1iZXIuVGFyZ2V0QWN0aW9uU3VwcG9ydCwgewotICAgIGNsaWNrOiBmdW5j
dGlvbigpIHsKLSAgICAgIHRoaXMudHJpZ2dlckFjdGlvbih7Ci0gICAgICAgIGFjdGlvbjogJ3Nh
dmUnLAotICAgICAgICB0YXJnZXQ6IHRoaXMuZ2V0KCdjb250cm9sbGVyJyksCi0gICAgICAgIGFj
dGlvbkNvbnRleHQ6IHRoaXMuZ2V0KCdjb250ZXh0JyksCi0gICAgICB9KTsgLy8gU2VuZHMgdGhl
IGBzYXZlYCBhY3Rpb24sIGFsb25nIHdpdGggdGhlIGN1cnJlbnQgY29udGV4dAotICAgICAgICAg
IC8vIHRvIHRoZSBjdXJyZW50IGNvbnRyb2xsZXIKLSAgICB9Ci0gIH0pOwotICBgYGAKLQotICBU
aGUgYGFjdGlvbkNvbnRleHRgIGRlZmF1bHRzIHRvIHRoZSBvYmplY3QgeW91IG1peGluZyBgVGFy
Z2V0QWN0aW9uU3VwcG9ydGAgaW50by4KLSAgQnV0IGB0YXJnZXRgIGFuZCBgYWN0aW9uYCBtdXN0
IGJlIHNwZWNpZmllZCBlaXRoZXIgYXMgcHJvcGVydGllcyBvciB3aXRoIHRoZSBhcmd1bWVudAot
ICB0byBgdHJpZ2dlckFjdGlvbmAsIG9yIGEgY29tYmluYXRpb246Ci0KLSAgYGBgamF2YXNjcmlw
dAotICBBcHAuU2F2ZUJ1dHRvblZpZXcgPSBFbWJlci5WaWV3LmV4dGVuZChFbWJlci5UYXJnZXRB
Y3Rpb25TdXBwb3J0LCB7Ci0gICAgdGFyZ2V0OiBFbWJlci5jb21wdXRlZC5hbGlhcygnY29udHJv
bGxlcicpLAotICAgIGNsaWNrOiBmdW5jdGlvbigpIHsKLSAgICAgIHRoaXMudHJpZ2dlckFjdGlv
bih7Ci0gICAgICAgIGFjdGlvbjogJ3NhdmUnCi0gICAgICB9KTsgLy8gU2VuZHMgdGhlIGBzYXZl
YCBhY3Rpb24sIGFsb25nIHdpdGggYSByZWZlcmVuY2UgdG8gYHRoaXNgLAotICAgICAgICAgIC8v
IHRvIHRoZSBjdXJyZW50IGNvbnRyb2xsZXIKLSAgICB9Ci0gIH0pOwotICBgYGAKLQotICBAbWV0
aG9kIHRyaWdnZXJBY3Rpb24KLSAgQHBhcmFtIG9wdHMge0hhc2h9IChvcHRpb25hbCwgd2l0aCB0
aGUgb3B0aW9uYWwga2V5cyBhY3Rpb24sIHRhcmdldCBhbmQvb3IgYWN0aW9uQ29udGV4dCkKLSAg
QHJldHVybiB7Qm9vbGVhbn0gdHJ1ZSBpZiB0aGUgYWN0aW9uIHdhcyBzZW50IHN1Y2Nlc3NmdWxs
eSBhbmQgZGlkIG5vdCByZXR1cm4gZmFsc2UKLSAgKi8KLSAgdHJpZ2dlckFjdGlvbjogZnVuY3Rp
b24ob3B0cykgewotICAgIG9wdHMgPSBvcHRzIHx8IHt9OwotICAgIHZhciBhY3Rpb24gPSBvcHRz
LmFjdGlvbiB8fCBnZXQodGhpcywgJ2FjdGlvbicpLAotICAgICAgICB0YXJnZXQgPSBvcHRzLnRh
cmdldCB8fCBnZXQodGhpcywgJ3RhcmdldE9iamVjdCcpLAotICAgICAgICBhY3Rpb25Db250ZXh0
ID0gb3B0cy5hY3Rpb25Db250ZXh0OwotCi0gICAgZnVuY3Rpb24gYXJncyhvcHRpb25zLCBhY3Rp
b25OYW1lKSB7Ci0gICAgICB2YXIgcmV0ID0gW107Ci0gICAgICBpZiAoYWN0aW9uTmFtZSkgeyBy
ZXQucHVzaChhY3Rpb25OYW1lKTsgfQotCi0gICAgICByZXR1cm4gcmV0LmNvbmNhdChvcHRpb25z
KTsKLSAgICB9Ci0KLSAgICBpZiAodHlwZW9mIGFjdGlvbkNvbnRleHQgPT09ICd1bmRlZmluZWQn
KSB7Ci0gICAgICBhY3Rpb25Db250ZXh0ID0gZ2V0KHRoaXMsICdhY3Rpb25Db250ZXh0T2JqZWN0
JykgfHwgdGhpczsKLSAgICB9Ci0KLSAgICBpZiAodGFyZ2V0ICYmIGFjdGlvbikgewotICAgICAg
dmFyIHJldDsKLQotICAgICAgaWYgKHRhcmdldC5zZW5kKSB7Ci0gICAgICAgIHJldCA9IHRhcmdl
dC5zZW5kLmFwcGx5KHRhcmdldCwgYXJncyhhY3Rpb25Db250ZXh0LCBhY3Rpb24pKTsKLSAgICAg
IH0gZWxzZSB7Ci0gICAgICAgIEVtYmVyLmFzc2VydCgiVGhlIGFjdGlvbiAnIiArIGFjdGlvbiAr
ICInIGRpZCBub3QgZXhpc3Qgb24gIiArIHRhcmdldCwgdHlwZW9mIHRhcmdldFthY3Rpb25dID09
PSAnZnVuY3Rpb24nKTsKLSAgICAgICAgcmV0ID0gdGFyZ2V0W2FjdGlvbl0uYXBwbHkodGFyZ2V0
LCBhcmdzKGFjdGlvbkNvbnRleHQpKTsKLSAgICAgIH0KLQotICAgICAgaWYgKHJldCAhPT0gZmFs
c2UpIHJldCA9IHRydWU7Ci0KLSAgICAgIHJldHVybiByZXQ7Ci0gICAgfSBlbHNlIHsKLSAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB9Ci0gIH0KLX0pOwotCi19KSgpOwotCi0KLQotKGZ1bmN0aW9u
KCkgewotLyoqCi1AbW9kdWxlIGVtYmVyCi1Ac3VibW9kdWxlIGVtYmVyLXJ1bnRpbWUKLSovCi0K
LS8qKgotICBUaGlzIG1peGluIGFsbG93cyBmb3IgRW1iZXIgb2JqZWN0cyB0byBzdWJzY3JpYmUg
dG8gYW5kIGVtaXQgZXZlbnRzLgotCi0gIGBgYGphdmFzY3JpcHQKLSAgQXBwLlBlcnNvbiA9IEVt
YmVyLk9iamVjdC5leHRlbmQoRW1iZXIuRXZlbnRlZCwgewotICAgIGdyZWV0OiBmdW5jdGlvbigp
IHsKLSAgICAgIC8vIC4uLgotICAgICAgdGhpcy50cmlnZ2VyKCdncmVldCcpOwotICAgIH0KLSAg
fSk7Ci0KLSAgdmFyIHBlcnNvbiA9IEFwcC5QZXJzb24uY3JlYXRlKCk7Ci0KLSAgcGVyc29uLm9u
KCdncmVldCcsIGZ1bmN0aW9uKCkgewotICAgIGNvbnNvbGUubG9nKCdPdXIgcGVyc29uIGhhcyBn
cmVldGVkJyk7Ci0gIH0pOwotCi0gIHBlcnNvbi5ncmVldCgpOwotCi0gIC8vIG91dHB1dHM6ICdP
dXIgcGVyc29uIGhhcyBncmVldGVkJwotICBgYGAKLQotICBZb3UgY2FuIGFsc28gY2hhaW4gbXVs
dGlwbGUgZXZlbnQgc3Vic2NyaXB0aW9uczoKLQotICBgYGBqYXZhc2NyaXB0Ci0gIHBlcnNvbi5v
bignZ3JlZXQnLCBmdW5jdGlvbigpIHsKLSAgICBjb25zb2xlLmxvZygnT3VyIHBlcnNvbiBoYXMg
Z3JlZXRlZCcpOwotICB9KS5vbmUoJ2dyZWV0JywgZnVuY3Rpb24oKSB7Ci0gICAgY29uc29sZS5s
b2coJ09mZmVyIG9uZS10aW1lIHNwZWNpYWwnKTsKLSAgfSkub2ZmKCdldmVudCcsIHRoaXMsIGZv
cmdldFRoaXMpOwotICBgYGAKLQotICBAY2xhc3MgRXZlbnRlZAotICBAbmFtZXNwYWNlIEVtYmVy
Ci0gKi8KLUVtYmVyLkV2ZW50ZWQgPSBFbWJlci5NaXhpbi5jcmVhdGUoewotCi0gIC8qKgotICAg
U3Vic2NyaWJlcyB0byBhIG5hbWVkIGV2ZW50IHdpdGggZ2l2ZW4gZnVuY3Rpb24uCi0KLSAgIGBg
YGphdmFzY3JpcHQKLSAgIHBlcnNvbi5vbignZGlkTG9hZCcsIGZ1bmN0aW9uKCkgewotICAgICAv
LyBmaXJlZCBvbmNlIHRoZSBwZXJzb24gaGFzIGxvYWRlZAotICAgfSk7Ci0gICBgYGAKLQotICAg
QW4gb3B0aW9uYWwgdGFyZ2V0IGNhbiBiZSBwYXNzZWQgaW4gYXMgdGhlIDJuZCBhcmd1bWVudCB0
aGF0IHdpbGwKLSAgIGJlIHNldCBhcyB0aGUgInRoaXMiIGZvciB0aGUgY2FsbGJhY2suIFRoaXMg
aXMgYSBnb29kIHdheSB0byBnaXZlIHlvdXIKLSAgIGZ1bmN0aW9uIGFjY2VzcyB0byB0aGUgb2Jq
ZWN0IHRyaWdnZXJpbmcgdGhlIGV2ZW50LiBXaGVuIHRoZSB0YXJnZXQKLSAgIHBhcmFtZXRlciBp
cyB1c2VkIHRoZSBjYWxsYmFjayBiZWNvbWVzIHRoZSB0aGlyZCBhcmd1bWVudC4KLQotICAgQG1l
dGhvZCBvbgotICAgQHBhcmFtIHtTdHJpbmd9IG5hbWUgVGhlIG5hbWUgb2YgdGhlIGV2ZW50Ci0g
ICBAcGFyYW0ge09iamVjdH0gW3RhcmdldF0gVGhlICJ0aGlzIiBiaW5kaW5nIGZvciB0aGUgY2Fs
bGJhY2sKLSAgIEBwYXJhbSB7RnVuY3Rpb259IG1ldGhvZCBUaGUgY2FsbGJhY2sgdG8gZXhlY3V0
ZQotICAgQHJldHVybiB0aGlzCi0gICovCi0gIG9uOiBmdW5jdGlvbihuYW1lLCB0YXJnZXQsIG1l
dGhvZCkgewotICAgIEVtYmVyLmFkZExpc3RlbmVyKHRoaXMsIG5hbWUsIHRhcmdldCwgbWV0aG9k
KTsKLSAgICByZXR1cm4gdGhpczsKLSAgfSwKLQotICAvKioKLSAgICBTdWJzY3JpYmVzIGEgZnVu
Y3Rpb24gdG8gYSBuYW1lZCBldmVudCBhbmQgdGhlbiBjYW5jZWxzIHRoZSBzdWJzY3JpcHRpb24K
LSAgICBhZnRlciB0aGUgZmlyc3QgdGltZSB0aGUgZXZlbnQgaXMgdHJpZ2dlcmVkLiBJdCBpcyBn
b29kIHRvIHVzZSBgYG9uZWBgIHdoZW4KLSAgICB5b3Ugb25seSBjYXJlIGFib3V0IHRoZSBmaXJz
dCB0aW1lIGFuIGV2ZW50IGhhcyB0YWtlbiBwbGFjZS4KLQotICAgIFRoaXMgZnVuY3Rpb24gdGFr
ZXMgYW4gb3B0aW9uYWwgMm5kIGFyZ3VtZW50IHRoYXQgd2lsbCBiZWNvbWUgdGhlICJ0aGlzIgot
ICAgIHZhbHVlIGZvciB0aGUgY2FsbGJhY2suIElmIHRoaXMgYXJndW1lbnQgaXMgcGFzc2VkIHRo
ZW4gdGhlIDNyZCBhcmd1bWVudAotICAgIGJlY29tZXMgdGhlIGZ1bmN0aW9uLgotCi0gICAgQG1l
dGhvZCBvbmUKLSAgICBAcGFyYW0ge1N0cmluZ30gbmFtZSBUaGUgbmFtZSBvZiB0aGUgZXZlbnQK
LSAgICBAcGFyYW0ge09iamVjdH0gW3RhcmdldF0gVGhlICJ0aGlzIiBiaW5kaW5nIGZvciB0aGUg
Y2FsbGJhY2sKLSAgICBAcGFyYW0ge0Z1bmN0aW9ufSBtZXRob2QgVGhlIGNhbGxiYWNrIHRvIGV4
ZWN1dGUKLSAgICBAcmV0dXJuIHRoaXMKLSAgKi8KLSAgb25lOiBmdW5jdGlvbihuYW1lLCB0YXJn
ZXQsIG1ldGhvZCkgewotICAgIGlmICghbWV0aG9kKSB7Ci0gICAgICBtZXRob2QgPSB0YXJnZXQ7
Ci0gICAgICB0YXJnZXQgPSBudWxsOwotICAgIH0KLQotICAgIEVtYmVyLmFkZExpc3RlbmVyKHRo
aXMsIG5hbWUsIHRhcmdldCwgbWV0aG9kLCB0cnVlKTsKLSAgICByZXR1cm4gdGhpczsKLSAgfSwK
LQotICAvKioKLSAgICBUcmlnZ2VycyBhIG5hbWVkIGV2ZW50IGZvciB0aGUgb2JqZWN0LiBBbnkg
YWRkaXRpb25hbCBhcmd1bWVudHMKLSAgICB3aWxsIGJlIHBhc3NlZCBhcyBwYXJhbWV0ZXJzIHRv
IHRoZSBmdW5jdGlvbnMgdGhhdCBhcmUgc3Vic2NyaWJlZCB0byB0aGUKLSAgICBldmVudC4KLQot
ICAgIGBgYGphdmFzY3JpcHQKLSAgICBwZXJzb24ub24oJ2RpZEVhdCcsIGZ1bmN0aW9uKGZvb2Qp
IHsKLSAgICAgIGNvbnNvbGUubG9nKCdwZXJzb24gYXRlIHNvbWUgJyArIGZvb2QpOwotICAgIH0p
OwotCi0gICAgcGVyc29uLnRyaWdnZXIoJ2RpZEVhdCcsICdicm9jY29saScpOwotCi0gICAgLy8g
b3V0cHV0czogcGVyc29uIGF0ZSBzb21lIGJyb2Njb2xpCi0gICAgYGBgCi0gICAgQG1ldGhvZCB0
cmlnZ2VyCi0gICAgQHBhcmFtIHtTdHJpbmd9IG5hbWUgVGhlIG5hbWUgb2YgdGhlIGV2ZW50Ci0g
ICAgQHBhcmFtIHtPYmplY3QuLi59IGFyZ3MgT3B0aW9uYWwgYXJndW1lbnRzIHRvIHBhc3Mgb24K
LSAgKi8KLSAgdHJpZ2dlcjogZnVuY3Rpb24obmFtZSkgewotICAgIHZhciBhcmdzID0gW10sIGks
IGw7Ci0gICAgZm9yIChpID0gMSwgbCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBsOyBpKyspIHsK
LSAgICAgIGFyZ3MucHVzaChhcmd1bWVudHNbaV0pOwotICAgIH0KLSAgICBFbWJlci5zZW5kRXZl
bnQodGhpcywgbmFtZSwgYXJncyk7Ci0gIH0sCi0KLSAgLyoqCi0gICAgQ2FuY2VscyBzdWJzY3Jp
cHRpb24gZm9yIGdpdmVuIG5hbWUsIHRhcmdldCwgYW5kIG1ldGhvZC4KLQotICAgIEBtZXRob2Qg
b2ZmCi0gICAgQHBhcmFtIHtTdHJpbmd9IG5hbWUgVGhlIG5hbWUgb2YgdGhlIGV2ZW50Ci0gICAg
QHBhcmFtIHtPYmplY3R9IHRhcmdldCBUaGUgdGFyZ2V0IG9mIHRoZSBzdWJzY3JpcHRpb24KLSAg
ICBAcGFyYW0ge0Z1bmN0aW9ufSBtZXRob2QgVGhlIGZ1bmN0aW9uIG9mIHRoZSBzdWJzY3JpcHRp
b24KLSAgICBAcmV0dXJuIHRoaXMKLSAgKi8KLSAgb2ZmOiBmdW5jdGlvbihuYW1lLCB0YXJnZXQs
IG1ldGhvZCkgewotICAgIEVtYmVyLnJlbW92ZUxpc3RlbmVyKHRoaXMsIG5hbWUsIHRhcmdldCwg
bWV0aG9kKTsKLSAgICByZXR1cm4gdGhpczsKLSAgfSwKLQotICAvKioKLSAgICBDaGVja3MgdG8g
c2VlIGlmIG9iamVjdCBoYXMgYW55IHN1YnNjcmlwdGlvbnMgZm9yIG5hbWVkIGV2ZW50LgotCi0g
ICAgQG1ldGhvZCBoYXMKLSAgICBAcGFyYW0ge1N0cmluZ30gbmFtZSBUaGUgbmFtZSBvZiB0aGUg
ZXZlbnQKLSAgICBAcmV0dXJuIHtCb29sZWFufSBkb2VzIHRoZSBvYmplY3QgaGF2ZSBhIHN1YnNj
cmlwdGlvbiBmb3IgZXZlbnQKLSAgICovCi0gIGhhczogZnVuY3Rpb24obmFtZSkgewotICAgIHJl
dHVybiBFbWJlci5oYXNMaXN0ZW5lcnModGhpcywgbmFtZSk7Ci0gIH0KLX0pOwotCi19KSgpOwot
Ci0KLQotKGZ1bmN0aW9uKCkgewotdmFyIFJTVlAgPSByZXF1aXJlTW9kdWxlKCJyc3ZwIik7Ci0K
LVJTVlAuY29uZmlndXJlKCdhc3luYycsIGZ1bmN0aW9uKGNhbGxiYWNrLCBwcm9taXNlKSB7Ci0g
IEVtYmVyLnJ1bi5zY2hlZHVsZSgnYWN0aW9ucycsIHByb21pc2UsIGNhbGxiYWNrLCBwcm9taXNl
KTsKLX0pOwotCi1SU1ZQLlByb21pc2UucHJvdG90eXBlLmZhaWwgPSBmdW5jdGlvbihjYWxsYmFj
aywgbGFiZWwpewotICBFbWJlci5kZXByZWNhdGUoJ1JTVlAuUHJvbWlzZS5mYWlsIGhhcyBiZWVu
IHJlbmFtZWQgYXMgUlNWUC5Qcm9taXNlLmNhdGNoJyk7Ci0gIHJldHVybiB0aGlzWydjYXRjaCdd
KGNhbGxiYWNrLCBsYWJlbCk7Ci19OwotCi0vKioKLUBtb2R1bGUgZW1iZXIKLUBzdWJtb2R1bGUg
ZW1iZXItcnVudGltZQotKi8KLQotdmFyIGdldCA9IEVtYmVyLmdldDsKLQotLyoqCi0gIEBjbGFz
cyBEZWZlcnJlZAotICBAbmFtZXNwYWNlIEVtYmVyCi0gKi8KLUVtYmVyLkRlZmVycmVkTWl4aW4g
PSBFbWJlci5NaXhpbi5jcmVhdGUoewotICAvKioKLSAgICBBZGQgaGFuZGxlcnMgdG8gYmUgY2Fs
bGVkIHdoZW4gdGhlIERlZmVycmVkIG9iamVjdCBpcyByZXNvbHZlZCBvciByZWplY3RlZC4KLQot
ICAgIEBtZXRob2QgdGhlbgotICAgIEBwYXJhbSB7RnVuY3Rpb259IHJlc29sdmUgYSBjYWxsYmFj
ayBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbiBkb25lCi0gICAgQHBhcmFtIHtGdW5jdGlvbn0g
cmVqZWN0ICBhIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIGZhaWxlZAotICAq
LwotICB0aGVuOiBmdW5jdGlvbihyZXNvbHZlLCByZWplY3QsIGxhYmVsKSB7Ci0gICAgdmFyIGRl
ZmVycmVkLCBwcm9taXNlLCBlbnRpdHk7Ci0KLSAgICBlbnRpdHkgPSB0aGlzOwotICAgIGRlZmVy
cmVkID0gZ2V0KHRoaXMsICdfZGVmZXJyZWQnKTsKLSAgICBwcm9taXNlID0gZGVmZXJyZWQucHJv
bWlzZTsKLQotICAgIGZ1bmN0aW9uIGZ1bGZpbGxtZW50SGFuZGxlcihmdWxmaWxsbWVudCkgewot
ICAgICAgaWYgKGZ1bGZpbGxtZW50ID09PSBwcm9taXNlKSB7Ci0gICAgICAgIHJldHVybiByZXNv
bHZlKGVudGl0eSk7Ci0gICAgICB9IGVsc2UgewotICAgICAgICByZXR1cm4gcmVzb2x2ZShmdWxm
aWxsbWVudCk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHByb21pc2UudGhlbihyZXNv
bHZlICYmIGZ1bGZpbGxtZW50SGFuZGxlciwgcmVqZWN0LCBsYWJlbCk7Ci0gIH0sCi0KLSAgLyoq
Ci0gICAgUmVzb2x2ZSBhIERlZmVycmVkIG9iamVjdCBhbmQgY2FsbCBhbnkgYGRvbmVDYWxsYmFj
a3NgIHdpdGggdGhlIGdpdmVuIGFyZ3MuCi0KLSAgICBAbWV0aG9kIHJlc29sdmUKLSAgKi8KLSAg
cmVzb2x2ZTogZnVuY3Rpb24odmFsdWUpIHsKLSAgICB2YXIgZGVmZXJyZWQsIHByb21pc2U7Ci0K
LSAgICBkZWZlcnJlZCA9IGdldCh0aGlzLCAnX2RlZmVycmVkJyk7Ci0gICAgcHJvbWlzZSA9IGRl
ZmVycmVkLnByb21pc2U7Ci0KLSAgICBpZiAodmFsdWUgPT09IHRoaXMpIHsKLSAgICAgIGRlZmVy
cmVkLnJlc29sdmUocHJvbWlzZSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIGRlZmVycmVkLnJlc29s
dmUodmFsdWUpOwotICAgIH0KLSAgfSwKLQotICAvKioKLSAgICBSZWplY3QgYSBEZWZlcnJlZCBv
YmplY3QgYW5kIGNhbGwgYW55IGBmYWlsQ2FsbGJhY2tzYCB3aXRoIHRoZSBnaXZlbiBhcmdzLgot
Ci0gICAgQG1ldGhvZCByZWplY3QKLSAgKi8KLSAgcmVqZWN0OiBmdW5jdGlvbih2YWx1ZSkgewot
ICAgIGdldCh0aGlzLCAnX2RlZmVycmVkJykucmVqZWN0KHZhbHVlKTsKLSAgfSwKLQotICBfZGVm
ZXJyZWQ6IEVtYmVyLmNvbXB1dGVkKGZ1bmN0aW9uKCkgewotICAgIHJldHVybiBSU1ZQLmRlZmVy
KCdFbWJlcjogRGVmZXJyZWRNaXhpbiAtICcgKyB0aGlzKTsKLSAgfSkKLX0pOwotCi0KLX0pKCk7
Ci0KLQotCi0oZnVuY3Rpb24oKSB7Ci0vKioKLUBtb2R1bGUgZW1iZXIKLUBzdWJtb2R1bGUgZW1i
ZXItcnVudGltZQotKi8KLQotdmFyIGdldCA9IEVtYmVyLmdldCwgdHlwZU9mID0gRW1iZXIudHlw
ZU9mOwotCi0vKioKLSAgVGhlIGBFbWJlci5BY3Rpb25IYW5kbGVyYCBtaXhpbiBpbXBsZW1lbnRz
IHN1cHBvcnQgZm9yIG1vdmluZyBhbiBgYWN0aW9uc2AKLSAgcHJvcGVydHkgdG8gYW4gYF9hY3Rp
b25zYCBwcm9wZXJ0eSBhdCBleHRlbmQgdGltZSwgYW5kIGFkZGluZyBgX2FjdGlvbnNgCi0gIHRv
IHRoZSBvYmplY3QncyBtZXJnZWRQcm9wZXJ0aWVzIGxpc3QuCi0KLSAgYEVtYmVyLkFjdGlvbkhh
bmRsZXJgIGlzIHVzZWQgaW50ZXJuYWxseSBieSBFbWJlciBpbiAgYEVtYmVyLlZpZXdgLAotICBg
RW1iZXIuQ29udHJvbGxlcmAsIGFuZCBgRW1iZXIuUm91dGVgLgotCi0gIEBjbGFzcyBBY3Rpb25I
YW5kbGVyCi0gIEBuYW1lc3BhY2UgRW1iZXIKLSovCi1FbWJlci5BY3Rpb25IYW5kbGVyID0gRW1i
ZXIuTWl4aW4uY3JlYXRlKHsKLSAgbWVyZ2VkUHJvcGVydGllczogWydfYWN0aW9ucyddLAotCi0g
IC8qKgotICAgIFRoZSBjb2xsZWN0aW9uIG9mIGZ1bmN0aW9ucywga2V5ZWQgYnkgbmFtZSwgYXZh
aWxhYmxlIG9uIHRoaXMKLSAgICBgQWN0aW9uSGFuZGxlcmAgYXMgYWN0aW9uIHRhcmdldHMuCi0K
LSAgICBUaGVzZSBmdW5jdGlvbnMgd2lsbCBiZSBpbnZva2VkIHdoZW4gYSBtYXRjaGluZyBge3th
Y3Rpb259fWAgaXMgdHJpZ2dlcmVkCi0gICAgZnJvbSB3aXRoaW4gYSB0ZW1wbGF0ZSBhbmQgdGhl
IGFwcGxpY2F0aW9uJ3MgY3VycmVudCByb3V0ZSBpcyB0aGlzIHJvdXRlLgotCi0gICAgQWN0aW9u
cyBjYW4gYWxzbyBiZSBpbnZva2VkIGZyb20gb3RoZXIgcGFydHMgb2YgeW91ciBhcHBsaWNhdGlv
bgotICAgIHZpYSBgQWN0aW9uSGFuZGxlciNzZW5kYC4KLQotICAgIFRoZSBgYWN0aW9uc2AgaGFz
aCB3aWxsIGluaGVyaXQgYWN0aW9uIGhhbmRsZXJzIGZyb20KLSAgICB0aGUgYGFjdGlvbnNgIGhh
c2ggZGVmaW5lZCBvbiBleHRlbmRlZCBwYXJlbnQgY2xhc3NlcwotICAgIG9yIG1peGlucyByYXRo
ZXIgdGhhbiBqdXN0IHJlcGxhY2UgdGhlIGVudGlyZSBoYXNoLCBlLmcuOgotCi0gICAgYGBganMK
LSAgICBBcHAuQ2FuRGlzcGxheUJhbm5lciA9IEVtYmVyLk1peGluLmNyZWF0ZSh7Ci0gICAgICBh
Y3Rpb25zOiB7Ci0gICAgICAgIGRpc3BsYXlCYW5uZXI6IGZ1bmN0aW9uKG1zZykgewotICAgICAg
ICAgIC8vIC4uLgotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfSk7Ci0KLSAgICBBcHAuV2VsY29t
ZVJvdXRlID0gRW1iZXIuUm91dGUuZXh0ZW5kKEFwcC5DYW5EaXNwbGF5QmFubmVyLCB7Ci0gICAg
ICBhY3Rpb25zOiB7Ci0gICAgICAgIHBsYXlNdXNpYzogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAg
Ly8gLi4uCi0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9KTsKLQotICAgIC8vIGBXZWxjb21lUm91
dGVgLCB3aGVuIGFjdGl2ZSwgd2lsbCBiZSBhYmxlIHRvIHJlc3BvbmQKLSAgICAvLyB0byBib3Ro
IGFjdGlvbnMsIHNpbmNlIHRoZSBhY3Rpb25zIGhhc2ggaXMgbWVyZ2VkIHJhdGhlcgotICAgIC8v
IHRoZW4gcmVwbGFjZWQgd2hlbiBleHRlbmRpbmcgbWl4aW5zIC8gcGFyZW50IGNsYXNzZXMuCi0g
ICAgdGhpcy5zZW5kKCdkaXNwbGF5QmFubmVyJyk7Ci0gICAgdGhpcy5zZW5kKCdwbGF5TXVzaWMn
KTsKLSAgICBgYGAKLQotICAgIFdpdGhpbiBhIENvbnRyb2xsZXIsIFJvdXRlLCBWaWV3IG9yIENv
bXBvbmVudCdzIGFjdGlvbiBoYW5kbGVyLAotICAgIHRoZSB2YWx1ZSBvZiB0aGUgYHRoaXNgIGNv
bnRleHQgaXMgdGhlIENvbnRyb2xsZXIsIFJvdXRlLCBWaWV3IG9yCi0gICAgQ29tcG9uZW50IG9i
amVjdDoKLQotICAgIGBgYGpzCi0gICAgQXBwLlNvbmdSb3V0ZSA9IEVtYmVyLlJvdXRlLmV4dGVu
ZCh7Ci0gICAgICBhY3Rpb25zOiB7Ci0gICAgICAgIG15QWN0aW9uOiBmdW5jdGlvbigpIHsKLSAg
ICAgICAgICB0aGlzLmNvbnRyb2xsZXJGb3IoInNvbmciKTsKLSAgICAgICAgICB0aGlzLnRyYW5z
aXRpb25Ubygib3RoZXIucm91dGUiKTsKLSAgICAgICAgICAuLi4KLSAgICAgICAgfQotICAgICAg
fQotICAgIH0pOwotICAgIGBgYAotCi0gICAgSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBjYWxsIGB0
aGlzLl9zdXBlcigpYCBmcm9tIHdpdGhpbiBhbgotICAgIGFjdGlvbiBoYW5kbGVyIGlmIGl0IG92
ZXJyaWRlcyBhIGhhbmRsZXIgZGVmaW5lZCBvbiBhIHBhcmVudAotICAgIGNsYXNzIG9yIG1peGlu
OgotCi0gICAgVGFrZSBmb3IgZXhhbXBsZSB0aGUgZm9sbG93aW5nIHJvdXRlczoKLQotICAgIGBg
YGpzCi0gICAgQXBwLkRlYnVnUm91dGUgPSBFbWJlci5NaXhpbi5jcmVhdGUoewotICAgICAgYWN0
aW9uczogewotICAgICAgICBkZWJ1Z1JvdXRlSW5mb3JtYXRpb246IGZ1bmN0aW9uKCkgewotICAg
ICAgICAgIGNvbnNvbGUuZGVidWcoInRyb2xvbG8iKTsKLSAgICAgICAgfQotICAgICAgfQotICAg
IH0pOwotCi0gICAgQXBwLkFubm95aW5nRGVidWdSb3V0ZSA9IEVtYmVyLlJvdXRlLmV4dGVuZChB
cHAuRGVidWdSb3V0ZSwgewotICAgICAgYWN0aW9uczogewotICAgICAgICBkZWJ1Z1JvdXRlSW5m
b3JtYXRpb246IGZ1bmN0aW9uKCkgewotICAgICAgICAgIC8vIGFsc28gY2FsbCB0aGUgZGVidWdS
b3V0ZUluZm9ybWF0aW9uIG9mIG1peGVkIGluIEFwcC5EZWJ1Z1JvdXRlCi0gICAgICAgICAgdGhp
cy5fc3VwZXIoKTsKLQotICAgICAgICAgIC8vIHNob3cgYWRkaXRpb25hbCBhbm5veWFuY2UKLSAg
ICAgICAgICB3aW5kb3cuYWxlcnQoLi4uKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0pOwot
ICAgIGBgYAotCi0gICAgIyMgQnViYmxpbmcKLQotICAgIEJ5IGRlZmF1bHQsIGFuIGFjdGlvbiB3
aWxsIHN0b3AgYnViYmxpbmcgb25jZSBhIGhhbmRsZXIgZGVmaW5lZAotICAgIG9uIHRoZSBgYWN0
aW9uc2AgaGFzaCBoYW5kbGVzIGl0LiBUbyBjb250aW51ZSBidWJibGluZyB0aGUgYWN0aW9uLAot
ICAgIHlvdSBtdXN0IHJldHVybiBgdHJ1ZWAgZnJvbSB0aGUgaGFuZGxlcjoKLQotICAgIGBgYGpz
Ci0gICAgQXBwLlJvdXRlci5tYXAoZnVuY3Rpb24oKSB7Ci0gICAgICB0aGlzLnJlc291cmNlKCJh
bGJ1bSIsIGZ1bmN0aW9uKCkgewotICAgICAgICB0aGlzLnJvdXRlKCJzb25nIik7Ci0gICAgICB9
KTsKLSAgICB9KTsKLQotICAgIEFwcC5BbGJ1bVJvdXRlID0gRW1iZXIuUm91dGUuZXh0ZW5kKHsK
LSAgICAgIGFjdGlvbnM6IHsKLSAgICAgICAgc3RhcnRQbGF5aW5nOiBmdW5jdGlvbigpIHsKLSAg
ICAgICAgfQotICAgICAgfQotICAgIH0pOwotCi0gICAgQXBwLkFsYnVtU29uZ1JvdXRlID0gRW1i
ZXIuUm91dGUuZXh0ZW5kKHsKLSAgICAgIGFjdGlvbnM6IHsKLSAgICAgICAgc3RhcnRQbGF5aW5n
OiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAvLyAuLi4KLQotICAgICAgICAgIGlmIChhY3Rpb25T
aG91bGRBbHNvQmVUcmlnZ2VyZWRPblBhcmVudFJvdXRlKSB7Ci0gICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9KTsKLSAgICBgYGAK
LQotICAgIEBwcm9wZXJ0eSBhY3Rpb25zCi0gICAgQHR5cGUgSGFzaAotICAgIEBkZWZhdWx0IG51
bGwKLSAgKi8KLQotICAvKioKLSAgICBNb3ZlcyBgYWN0aW9uc2AgdG8gYF9hY3Rpb25zYCBhdCBl
eHRlbmQgdGltZS4gTm90ZSB0aGF0IHRoaXMgY3VycmVudGx5Ci0gICAgbW9kaWZpZXMgdGhlIG1p
eGluIHRoZW1zZWx2ZXMsIHdoaWNoIGlzIHRlY2huaWNhbGx5IGR1YmlvdXMgYnV0Ci0gICAgaXMg
cHJhY3RpY2FsbHkgb2YgbGl0dGxlIGNvbnNlcXVlbmNlLiBUaGlzIG1heSBjaGFuZ2UgaW4gdGhl
IGZ1dHVyZS4KLQotICAgIEBwcml2YXRlCi0gICAgQG1ldGhvZCB3aWxsTWVyZ2VNaXhpbgotICAq
LwotICB3aWxsTWVyZ2VNaXhpbjogZnVuY3Rpb24ocHJvcHMpIHsKLSAgICB2YXIgaGFzaE5hbWU7
Ci0KLSAgICBpZiAoIXByb3BzLl9hY3Rpb25zKSB7Ci0gICAgICBpZiAodHlwZU9mKHByb3BzLmFj
dGlvbnMpID09PSAnb2JqZWN0JykgewotICAgICAgICBoYXNoTmFtZSA9ICdhY3Rpb25zJzsKLSAg
ICAgIH0gZWxzZSBpZiAodHlwZU9mKHByb3BzLmV2ZW50cykgPT09ICdvYmplY3QnKSB7Ci0gICAg
ICAgIEVtYmVyLmRlcHJlY2F0ZSgnQWN0aW9uIGhhbmRsZXJzIGNvbnRhaW5lZCBpbiBhbiBgZXZl
bnRzYCBvYmplY3QgYXJlIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgcHV0dGluZyB0aGVtIGluIGFu
IGBhY3Rpb25zYCBvYmplY3QnLCBmYWxzZSk7Ci0gICAgICAgIGhhc2hOYW1lID0gJ2V2ZW50cyc7
Ci0gICAgICB9Ci0KLSAgICAgIGlmIChoYXNoTmFtZSkgewotICAgICAgICBwcm9wcy5fYWN0aW9u
cyA9IEVtYmVyLm1lcmdlKHByb3BzLl9hY3Rpb25zIHx8IHt9LCBwcm9wc1toYXNoTmFtZV0pOwot
ICAgICAgfQotCi0gICAgICBkZWxldGUgcHJvcHNbaGFzaE5hbWVdOwotICAgIH0KLSAgfSwKLQot
ICBzZW5kOiBmdW5jdGlvbihhY3Rpb25OYW1lKSB7Ci0gICAgdmFyIGFyZ3MgPSBbXS5zbGljZS5j
YWxsKGFyZ3VtZW50cywgMSksIHRhcmdldDsKLQotICAgIGlmICh0aGlzLl9hY3Rpb25zICYmIHRo
aXMuX2FjdGlvbnNbYWN0aW9uTmFtZV0pIHsKLSAgICAgIGlmICh0aGlzLl9hY3Rpb25zW2FjdGlv
bk5hbWVdLmFwcGx5KHRoaXMsIGFyZ3MpID09PSB0cnVlKSB7Ci0gICAgICAgIC8vIGhhbmRsZXIg
cmV0dXJuZWQgdHJ1ZSwgc28gdGhpcyBhY3Rpb24gd2lsbCBidWJibGUKLSAgICAgIH0gZWxzZSB7
Ci0gICAgICAgIHJldHVybjsKLSAgICAgIH0KLSAgICB9IGVsc2UgaWYgKHRoaXMuZGVwcmVjYXRl
ZFNlbmQgJiYgdGhpcy5kZXByZWNhdGVkU2VuZEhhbmRsZXMgJiYgdGhpcy5kZXByZWNhdGVkU2Vu
ZEhhbmRsZXMoYWN0aW9uTmFtZSkpIHsKLSAgICAgIGlmICh0aGlzLmRlcHJlY2F0ZWRTZW5kLmFw
cGx5KHRoaXMsIFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKSkgPT09IHRydWUpIHsKLSAgICAgICAg
Ly8gaGFuZGxlciByZXR1cm4gdHJ1ZSwgc28gdGhpcyBhY3Rpb24gd2lsbCBidWJibGUKLSAgICAg
IH0gZWxzZSB7Ci0gICAgICAgIHJldHVybjsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAodGFy
Z2V0ID0gZ2V0KHRoaXMsICd0YXJnZXQnKSkgewotICAgICAgRW1iZXIuYXNzZXJ0KCJUaGUgYHRh
cmdldGAgZm9yICIgKyB0aGlzICsgIiAoIiArIHRhcmdldCArICIpIGRvZXMgbm90IGhhdmUgYSBg
c2VuZGAgbWV0aG9kIiwgdHlwZW9mIHRhcmdldC5zZW5kID09PSAnZnVuY3Rpb24nKTsKLSAgICAg
IHRhcmdldC5zZW5kLmFwcGx5KHRhcmdldCwgYXJndW1lbnRzKTsKLSAgICB9Ci0gIH0KLQotfSk7
Ci0KLX0pKCk7Ci0KLQotCi0oZnVuY3Rpb24oKSB7Ci12YXIgc2V0ID0gRW1iZXIuc2V0LCBnZXQg
PSBFbWJlci5nZXQsCi0gICAgcmVzb2x2ZSA9IEVtYmVyLlJTVlAucmVzb2x2ZSwKLSAgICByZXRo
cm93ID0gRW1iZXIuUlNWUC5yZXRocm93LAotICAgIG5vdCA9IEVtYmVyLmNvbXB1dGVkLm5vdCwK
LSAgICBvciA9IEVtYmVyLmNvbXB1dGVkLm9yOwotCi0vKioKLSAgQG1vZHVsZSBlbWJlcgotICBA
c3VibW9kdWxlIGVtYmVyLXJ1bnRpbWUKLSAqLwotCi1mdW5jdGlvbiBvYnNlcnZlUHJvbWlzZShw
cm94eSwgcHJvbWlzZSkgewotICBwcm9taXNlLnRoZW4oZnVuY3Rpb24odmFsdWUpIHsKLSAgICBz
ZXQocHJveHksICdpc0Z1bGZpbGxlZCcsIHRydWUpOwotICAgIHNldChwcm94eSwgJ2NvbnRlbnQn
LCB2YWx1ZSk7Ci0gIH0sIGZ1bmN0aW9uKHJlYXNvbikgewotICAgIHNldChwcm94eSwgJ2lzUmVq
ZWN0ZWQnLCB0cnVlKTsKLSAgICBzZXQocHJveHksICdyZWFzb24nLCByZWFzb24pOwotICAgIC8v
IGRvbid0IHJlLXRocm93LCBhcyB3ZSBhcmUgbWVyZWx5IG9ic2VydmluZwotICB9LCAiRW1iZXI6
IFByb21pc2VQcm94eSIpOwotfQotCi0vKioKLSAgQSBsb3cgbGV2ZWwgbWl4aW4gbWFraW5nIE9i
amVjdFByb3h5LCBPYmplY3RDb250cm9sbGVyIG9yIEFycmF5Q29udHJvbGxlcidzIHByb21pc2Ug
YXdhcmUuCi0KLSAgYGBgamF2YXNjcmlwdAotICB2YXIgT2JqZWN0UHJvbWlzZUNvbnRyb2xsZXIg
PSBFbWJlci5PYmplY3RDb250cm9sbGVyLmV4dGVuZChFbWJlci5Qcm9taXNlUHJveHlNaXhpbik7
Ci0KLSAgdmFyIGNvbnRyb2xsZXIgPSBPYmplY3RQcm9taXNlQ29udHJvbGxlci5jcmVhdGUoewot
ICAgIHByb21pc2U6ICQuZ2V0SlNPTignL3NvbWUvcmVtb3RlL2RhdGEuanNvbicpCi0gIH0pOwot
Ci0gIGNvbnRyb2xsZXIudGhlbihmdW5jdGlvbihqc29uKXsKLSAgICAgLy8gdGhlIGpzb24KLSAg
fSwgZnVuY3Rpb24ocmVhc29uKSB7Ci0gICAgIC8vIHRoZSByZWFzb24gd2h5IHlvdSBoYXZlIG5v
IGpzb24KLSAgfSk7Ci0gIGBgYAotCi0gIHRoZSBjb250cm9sbGVyIGhhcyBiaW5kYWJsZSBhdHRy
aWJ1dGVzIHdoaWNoCi0gIHRyYWNrIHRoZSBwcm9taXNlcyBsaWZlIGN5Y2xlCi0KLSAgYGBgamF2
YXNjcmlwdAotICBjb250cm9sbGVyLmdldCgnaXNQZW5kaW5nJykgICAvLz0+IHRydWUKLSAgY29u
dHJvbGxlci5nZXQoJ2lzU2V0dGxlZCcpICAvLz0+IGZhbHNlCi0gIGNvbnRyb2xsZXIuZ2V0KCdp
c1JlamVjdGVkJykgIC8vPT4gZmFsc2UKLSAgY29udHJvbGxlci5nZXQoJ2lzRnVsZmlsbGVkJykg
Ly89PiBmYWxzZQotICBgYGAKLQotICBXaGVuIHRoZSB0aGUgJC5nZXRKU09OIGNvbXBsZXRlcywg
YW5kIHRoZSBwcm9taXNlIGlzIGZ1bGZpbGxlZAotICB3aXRoIGpzb24sIHRoZSBsaWZlIGN5Y2xl
IGF0dHJpYnV0ZXMgd2lsbCB1cGRhdGUgYWNjb3JkaW5nbHkuCi0KLSAgYGBgamF2YXNjcmlwdAot
ICBjb250cm9sbGVyLmdldCgnaXNQZW5kaW5nJykgICAvLz0+IGZhbHNlCi0gIGNvbnRyb2xsZXIu
Z2V0KCdpc1NldHRsZWQnKSAgIC8vPT4gdHJ1ZQotICBjb250cm9sbGVyLmdldCgnaXNSZWplY3Rl
ZCcpICAvLz0+IGZhbHNlCi0gIGNvbnRyb2xsZXIuZ2V0KCdpc0Z1bGZpbGxlZCcpIC8vPT4gdHJ1
ZQotICBgYGAKLQotICBBcyB0aGUgY29udHJvbGxlciBpcyBhbiBPYmplY3RDb250cm9sbGVyLCBh
bmQgdGhlIGpzb24gbm93IGl0cyBjb250ZW50LAotICBhbGwgdGhlIGpzb24gcHJvcGVydGllcyB3
aWxsIGJlIGF2YWlsYWJsZSBkaXJlY3RseSBmcm9tIHRoZSBjb250cm9sbGVyLgotCi0gIGBgYGph
dmFzY3JpcHQKLSAgLy8gQXNzdW1pbmcgdGhlIGZvbGxvd2luZyBqc29uOgotICB7Ci0gICAgZmly
c3ROYW1lOiAnU3RlZmFuJywKLSAgICBsYXN0TmFtZTogJ1Blbm5lcicKLSAgfQotCi0gIC8vIGJv
dGggcHJvcGVydGllcyB3aWxsIGFjY2Vzc2libGUgb24gdGhlIGNvbnRyb2xsZXIKLSAgY29udHJv
bGxlci5nZXQoJ2ZpcnN0TmFtZScpIC8vPT4gJ1N0ZWZhbicKLSAgY29udHJvbGxlci5nZXQoJ2xh
c3ROYW1lJykgIC8vPT4gJ1Blbm5lcicKLSAgYGBgCi0KLSAgSWYgdGhlIGNvbnRyb2xsZXIgaXMg
YmFja2luZyBhIHRlbXBsYXRlLCB0aGUgYXR0cmlidXRlcyBhcmUKLSAgYmluZGFibGUgZnJvbSB3
aXRoaW4gdGhhdCB0ZW1wbGF0ZQotCi0gIGBgYGhhbmRsZWJhcnMKLSAge3sjaWYgaXNQZW5kaW5n
fX0KLSAgICBsb2FkaW5nLi4uCi0gIHt7ZWxzZX19Ci0gICAgZmlyc3ROYW1lOiB7e2ZpcnN0TmFt
ZX19Ci0gICAgbGFzdE5hbWU6IHt7bGFzdE5hbWV9fQotICB7ey9pZn19Ci0gIGBgYAotICBAY2xh
c3MgRW1iZXIuUHJvbWlzZVByb3h5TWl4aW4KLSovCi1FbWJlci5Qcm9taXNlUHJveHlNaXhpbiA9
IEVtYmVyLk1peGluLmNyZWF0ZSh7Ci0gIC8qKgotICAgIElmIHRoZSBwcm94aWVkIHByb21pc2Ug
aXMgcmVqZWN0ZWQgdGhpcyB3aWxsIGNvbnRhaW4gdGhlIHJlYXNvbgotICAgIHByb3ZpZGVkLgot
Ci0gICAgQHByb3BlcnR5IHJlYXNvbgotICAgIEBkZWZhdWx0IG51bGwKLSAgKi8KLSAgcmVhc29u
OiAgICBudWxsLAotCi0gIC8qKgotICAgIE9uY2UgdGhlIHByb3hpZWQgcHJvbWlzZSBoYXMgc2V0
dGxlZCB0aGlzIHdpbGwgYmVjb21lIGBmYWxzZWAuCi0KLSAgICBAcHJvcGVydHkgaXNQZW5kaW5n
Ci0gICAgQGRlZmF1bHQgdHJ1ZQotICAqLwotICBpc1BlbmRpbmc6ICBub3QoJ2lzU2V0dGxlZCcp
LnJlYWRPbmx5KCksCi0KLSAgLyoqCi0gICAgT25jZSB0aGUgcHJveGllZCBwcm9taXNlIGhhcyBz
ZXR0bGVkIHRoaXMgd2lsbCBiZWNvbWUgYHRydWVgLgotCi0gICAgQHByb3BlcnR5IGlzU2V0dGxl
ZAotICAgIEBkZWZhdWx0IGZhbHNlCi0gICovCi0gIGlzU2V0dGxlZDogIG9yKCdpc1JlamVjdGVk
JywgJ2lzRnVsZmlsbGVkJykucmVhZE9ubHkoKSwKLQotICAvKioKLSAgICBXaWxsIGJlY29tZSBg
dHJ1ZWAgaWYgdGhlIHByb3hpZWQgcHJvbWlzZSBpcyByZWplY3RlZC4KLQotICAgIEBwcm9wZXJ0
eSBpc1JlamVjdGVkCi0gICAgQGRlZmF1bHQgZmFsc2UKLSAgKi8KLSAgaXNSZWplY3RlZDogIGZh
bHNlLAotCi0gIC8qKgotICAgIFdpbGwgYmVjb21lIGB0cnVlYCBpZiB0aGUgcHJveGllZCBwcm9t
aXNlIGlzIGZ1bGZpbGxlZC4KLQotICAgIEBwcm9wZXJ0eSBpc0Z1bGxmaWxsZWQKLSAgICBAZGVm
YXVsdCBmYWxzZQotICAqLwotICBpc0Z1bGZpbGxlZDogZmFsc2UsCi0KLSAgLyoqCi0gICAgVGhl
IHByb21pc2Ugd2hvc2UgZnVsZmlsbG1lbnQgdmFsdWUgaXMgYmVpbmcgcHJveGllZCBieSB0aGlz
IG9iamVjdC4KLQotICAgIFRoaXMgcHJvcGVydHkgbXVzdCBiZSBzcGVjaWZpZWQgdXBvbiBjcmVh
dGlvbiwgYW5kIHNob3VsZCBub3QgYmUKLSAgICBjaGFuZ2VkIG9uY2UgY3JlYXRlZC4KLQotICAg
IEV4YW1wbGU6Ci0KLSAgICBgYGBqYXZhc2NyaXB0Ci0gICAgRW1iZXIuT2JqZWN0Q29udHJvbGxl
ci5leHRlbmQoRW1iZXIuUHJvbWlzZVByb3h5TWl4aW4pLmNyZWF0ZSh7Ci0gICAgICBwcm9taXNl
OiA8dGhlbmFibGU+Ci0gICAgfSk7Ci0gICAgYGBgCi0KLSAgICBAcHJvcGVydHkgcHJvbWlzZQot
ICAqLwotICBwcm9taXNlOiBFbWJlci5jb21wdXRlZChmdW5jdGlvbihrZXksIHByb21pc2UpIHsK
LSAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgewotICAgICAgcHJvbWlzZSA9IHJlc29s
dmUocHJvbWlzZSk7Ci0gICAgICBvYnNlcnZlUHJvbWlzZSh0aGlzLCBwcm9taXNlKTsKLSAgICAg
IHJldHVybiBwcm9taXNlLnRoZW4oKTsgLy8gZm9yayB0aGUgcHJvbWlzZS4KLSAgICB9IGVsc2Ug
ewotICAgICAgdGhyb3cgbmV3IEVtYmVyLkVycm9yKCJQcm9taXNlUHJveHkncyBwcm9taXNlIG11
c3QgYmUgc2V0Iik7Ci0gICAgfQotICB9KSwKLQotICAvKioKLSAgICBBbiBhbGlhcyB0byB0aGUg
cHJveGllZCBwcm9taXNlJ3MgYHRoZW5gLgotCi0gICAgU2VlIFJTVlAuUHJvbWlzZS50aGVuLgot
Ci0gICAgQG1ldGhvZCB0aGVuCi0gICAgQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2sKLSAgICBA
cmV0dXJuIHtSU1ZQLlByb21pc2V9Ci0gICovCi0gIHRoZW46IHByb21pc2VBbGlhcygndGhlbicp
LAotCi0gIC8qKgotICAgIEFuIGFsaWFzIHRvIHRoZSBwcm94aWVkIHByb21pc2UncyBgY2F0Y2hg
LgotCi0gICAgU2VlIFJTVlAuUHJvbWlzZS5jYXRjaC4KLQotICAgIEBtZXRob2QgY2F0Y2gKLSAg
ICBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFjawotICAgIEByZXR1cm4ge1JTVlAuUHJvbWlzZX0K
LSAgKi8KLSAgJ2NhdGNoJzogcHJvbWlzZUFsaWFzKCdjYXRjaCcpLAotCi0gIC8qKgotICAgIEFu
IGFsaWFzIHRvIHRoZSBwcm94aWVkIHByb21pc2UncyBgZmluYWxseWAuCi0KLSAgICBTZWUgUlNW
UC5Qcm9taXNlLmZpbmFsbHkuCi0KLSAgICBAbWV0aG9kIGZpbmFsbHkKLSAgICBAcGFyYW0ge0Z1
bmN0aW9ufSBjYWxsYmFjawotICAgIEByZXR1cm4ge1JTVlAuUHJvbWlzZX0KLSAgKi8KLSAgJ2Zp
bmFsbHknOiBwcm9taXNlQWxpYXMoJ2ZpbmFsbHknKQotCi19KTsKLQotZnVuY3Rpb24gcHJvbWlz
ZUFsaWFzKG5hbWUpIHsKLSAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKLSAgICB2YXIgcHJvbWlzZSA9
IGdldCh0aGlzLCAncHJvbWlzZScpOwotICAgIHJldHVybiBwcm9taXNlW25hbWVdLmFwcGx5KHBy
b21pc2UsIGFyZ3VtZW50cyk7Ci0gIH07Ci19Ci0KLX0pKCk7Ci0KLQotCi0oZnVuY3Rpb24oKSB7
Ci0KLX0pKCk7Ci0KLQotCi0oZnVuY3Rpb24oKSB7Ci12YXIgZ2V0ID0gRW1iZXIuZ2V0LAotICAg
IGZvckVhY2ggPSBFbWJlci5FbnVtZXJhYmxlVXRpbHMuZm9yRWFjaCwKLSAgICBSRVRBSU4gPSAn
cicsCi0gICAgSU5TRVJUID0gJ2knLAotICAgIERFTEVURSA9ICdkJzsKLQotLyoqCi0gIEFuIGBF
bWJlci5UcmFja2VkQXJyYXlgIHRyYWNrcyBhcnJheSBvcGVyYXRpb25zLiAgSXQncyB1c2VmdWwg
d2hlbiB5b3Ugd2FudCB0bwotICBsYXppbHkgY29tcHV0ZSB0aGUgaW5kZXhlcyBvZiBpdGVtcyBp
biBhbiBhcnJheSBhZnRlciB0aGV5J3ZlIGJlZW4gc2hpZnRlZCBieQotICBzdWJzZXF1ZW50IG9w
ZXJhdGlvbnMuCi0KLSAgQGNsYXNzIFRyYWNrZWRBcnJheQotICBAbmFtZXNwYWNlIEVtYmVyCi0g
IEBwYXJhbSB7YXJyYXl9IFtpdGVtcz1bXV0gVGhlIGFycmF5IHRvIGJlIHRyYWNrZWQuICBUaGlz
IGlzIHVzZWQganVzdCB0byBnZXQKLSAgdGhlIGluaXRpYWwgaXRlbXMgZm9yIHRoZSBzdGFydGlu
ZyBzdGF0ZSBvZiByZXRhaW46bi4KLSovCi1FbWJlci5UcmFja2VkQXJyYXkgPSBmdW5jdGlvbiAo
aXRlbXMpIHsKLSAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAxKSB7IGl0ZW1zID0gW107IH0KLQot
ICB2YXIgbGVuZ3RoID0gZ2V0KGl0ZW1zLCAnbGVuZ3RoJyk7Ci0KLSAgaWYgKGxlbmd0aCkgewot
ICAgIHRoaXMuX29wZXJhdGlvbnMgPSBbbmV3IEFycmF5T3BlcmF0aW9uKFJFVEFJTiwgbGVuZ3Ro
LCBpdGVtcyldOwotICB9IGVsc2UgewotICAgIHRoaXMuX29wZXJhdGlvbnMgPSBbXTsKLSAgfQot
fTsKLQotRW1iZXIuVHJhY2tlZEFycmF5LlJFVEFJTiA9IFJFVEFJTjsKLUVtYmVyLlRyYWNrZWRB
cnJheS5JTlNFUlQgPSBJTlNFUlQ7Ci1FbWJlci5UcmFja2VkQXJyYXkuREVMRVRFID0gREVMRVRF
OwotCi1FbWJlci5UcmFja2VkQXJyYXkucHJvdG90eXBlID0gewotCi0gIC8qKgotICAgIFRyYWNr
IHRoYXQgYG5ld0l0ZW1zYCB3ZXJlIGFkZGVkIHRvIHRoZSB0cmFja2VkIGFycmF5IGF0IGBpbmRl
eGAuCi0KLSAgICBAbWV0aG9kIGFkZEl0ZW1zCi0gICAgQHBhcmFtIGluZGV4Ci0gICAgQHBhcmFt
IG5ld0l0ZW1zCi0gICovCi0gIGFkZEl0ZW1zOiBmdW5jdGlvbiAoaW5kZXgsIG5ld0l0ZW1zKSB7
Ci0gICAgdmFyIGNvdW50ID0gZ2V0KG5ld0l0ZW1zLCAnbGVuZ3RoJyk7Ci0gICAgaWYgKGNvdW50
IDwgMSkgeyByZXR1cm47IH0KLQotICAgIHZhciBtYXRjaCA9IHRoaXMuX2ZpbmRBcnJheU9wZXJh
dGlvbihpbmRleCksCi0gICAgICAgIGFycmF5T3BlcmF0aW9uID0gbWF0Y2gub3BlcmF0aW9uLAot
ICAgICAgICBhcnJheU9wZXJhdGlvbkluZGV4ID0gbWF0Y2guaW5kZXgsCi0gICAgICAgIGFycmF5
T3BlcmF0aW9uUmFuZ2VTdGFydCA9IG1hdGNoLnJhbmdlU3RhcnQsCi0gICAgICAgIGNvbXBvc2VJ
bmRleCwKLSAgICAgICAgc3BsaXRJbmRleCwKLSAgICAgICAgc3BsaXRJdGVtcywKLSAgICAgICAg
c3BsaXRBcnJheU9wZXJhdGlvbiwKLSAgICAgICAgbmV3QXJyYXlPcGVyYXRpb247Ci0KLSAgICBu
ZXdBcnJheU9wZXJhdGlvbiA9IG5ldyBBcnJheU9wZXJhdGlvbihJTlNFUlQsIGNvdW50LCBuZXdJ
dGVtcyk7Ci0KLSAgICBpZiAoYXJyYXlPcGVyYXRpb24pIHsKLSAgICAgIGlmICghbWF0Y2guc3Bs
aXQpIHsKLSAgICAgICAgLy8gaW5zZXJ0IGxlZnQgb2YgYXJyYXlPcGVyYXRpb24KLSAgICAgICAg
dGhpcy5fb3BlcmF0aW9ucy5zcGxpY2UoYXJyYXlPcGVyYXRpb25JbmRleCwgMCwgbmV3QXJyYXlP
cGVyYXRpb24pOwotICAgICAgICBjb21wb3NlSW5kZXggPSBhcnJheU9wZXJhdGlvbkluZGV4Owot
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgdGhpcy5fc3BsaXQoYXJyYXlPcGVyYXRpb25JbmRleCwg
aW5kZXggLSBhcnJheU9wZXJhdGlvblJhbmdlU3RhcnQsIG5ld0FycmF5T3BlcmF0aW9uKTsKLSAg
ICAgICAgY29tcG9zZUluZGV4ID0gYXJyYXlPcGVyYXRpb25JbmRleCArIDE7Ci0gICAgICB9Ci0g
ICAgfSBlbHNlIHsKLSAgICAgIC8vIGluc2VydCBhdCBlbmQKLSAgICAgIHRoaXMuX29wZXJhdGlv
bnMucHVzaChuZXdBcnJheU9wZXJhdGlvbik7Ci0gICAgICBjb21wb3NlSW5kZXggPSBhcnJheU9w
ZXJhdGlvbkluZGV4OwotICAgIH0KLQotICAgIHRoaXMuX2NvbXBvc2VJbnNlcnQoY29tcG9zZUlu
ZGV4KTsKLSAgfSwKLQotICAvKioKLSAgICBUcmFjayB0aGF0IGBjb3VudGAgaXRlbXMgd2VyZSBy
ZW1vdmVkIGF0IGBpbmRleGAuCi0KLSAgICBAbWV0aG9kIHJlbW92ZUl0ZW1zCi0gICAgQHBhcmFt
IGluZGV4Ci0gICAgQHBhcmFtIGNvdW50Ci0gICovCi0gIHJlbW92ZUl0ZW1zOiBmdW5jdGlvbiAo
aW5kZXgsIGNvdW50KSB7Ci0gICAgaWYgKGNvdW50IDwgMSkgeyByZXR1cm47IH0KLQotICAgIHZh
ciBtYXRjaCA9IHRoaXMuX2ZpbmRBcnJheU9wZXJhdGlvbihpbmRleCksCi0gICAgICAgIGFycmF5
T3BlcmF0aW9uID0gbWF0Y2gub3BlcmF0aW9uLAotICAgICAgICBhcnJheU9wZXJhdGlvbkluZGV4
ID0gbWF0Y2guaW5kZXgsCi0gICAgICAgIGFycmF5T3BlcmF0aW9uUmFuZ2VTdGFydCA9IG1hdGNo
LnJhbmdlU3RhcnQsCi0gICAgICAgIG5ld0FycmF5T3BlcmF0aW9uLAotICAgICAgICBjb21wb3Nl
SW5kZXg7Ci0KLSAgICBuZXdBcnJheU9wZXJhdGlvbiA9IG5ldyBBcnJheU9wZXJhdGlvbihERUxF
VEUsIGNvdW50KTsKLSAgICBpZiAoIW1hdGNoLnNwbGl0KSB7Ci0gICAgICAvLyBpbnNlcnQgbGVm
dCBvZiBhcnJheU9wZXJhdGlvbgotICAgICAgdGhpcy5fb3BlcmF0aW9ucy5zcGxpY2UoYXJyYXlP
cGVyYXRpb25JbmRleCwgMCwgbmV3QXJyYXlPcGVyYXRpb24pOwotICAgICAgY29tcG9zZUluZGV4
ID0gYXJyYXlPcGVyYXRpb25JbmRleDsKLSAgICB9IGVsc2UgewotICAgICAgdGhpcy5fc3BsaXQo
YXJyYXlPcGVyYXRpb25JbmRleCwgaW5kZXggLSBhcnJheU9wZXJhdGlvblJhbmdlU3RhcnQsIG5l
d0FycmF5T3BlcmF0aW9uKTsKLSAgICAgIGNvbXBvc2VJbmRleCA9IGFycmF5T3BlcmF0aW9uSW5k
ZXggKyAxOwotICAgIH0KLQotICAgIHJldHVybiB0aGlzLl9jb21wb3NlRGVsZXRlKGNvbXBvc2VJ
bmRleCk7Ci0gIH0sCi0KLSAgLyoqCi0gICAgQXBwbHkgYWxsIG9wZXJhdGlvbnMsIHJlZHVjaW5n
IHRoZW0gdG8gcmV0YWluOm4sIGZvciBgbmAsIHRoZSBudW1iZXIgb2YKLSAgICBpdGVtcyBpbiB0
aGUgYXJyYXkuCi0KLSAgICBgY2FsbGJhY2tgIHdpbGwgYmUgY2FsbGVkIGZvciBlYWNoIG9wZXJh
dGlvbiBhbmQgd2lsbCBiZSBwYXNzZWQgdGhlIGZvbGxvd2luZyBhcmd1bWVudHM6Ci0KLSAgICAq
IHthcnJheX0gaXRlbXMgVGhlIGl0ZW1zIGZvciB0aGUgZ2l2ZW4gb3BlcmF0aW9uCi0gICAgKiB7
bnVtYmVyfSBvZmZzZXQgVGhlIGNvbXB1dGVkIG9mZnNldCBvZiB0aGUgaXRlbXMsIGllIHRoZSBp
bmRleCBpbiB0aGUKLSAgICBhcnJheSBvZiB0aGUgZmlyc3QgaXRlbSBmb3IgdGhpcyBvcGVyYXRp
b24uCi0gICAgKiB7c3RyaW5nfSBvcGVyYXRpb24gVGhlIHR5cGUgb2YgdGhlIG9wZXJhdGlvbi4g
IE9uZSBvZgotICAgIGBFbWJlci5UcmFja2VkQXJyYXkue1JFVEFJTiwgREVMRVRFLCBJTlNFUlR9
YAotCi0gICAgQG1ldGhvZCBhcHBseQotICAgIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrCi0g
ICovCi0gIGFwcGx5OiBmdW5jdGlvbiAoY2FsbGJhY2spIHsKLSAgICB2YXIgaXRlbXMgPSBbXSwK
LSAgICAgICAgb2Zmc2V0ID0gMDsKLQotICAgIGZvckVhY2godGhpcy5fb3BlcmF0aW9ucywgZnVu
Y3Rpb24gKGFycmF5T3BlcmF0aW9uKSB7Ci0gICAgICBjYWxsYmFjayhhcnJheU9wZXJhdGlvbi5p
dGVtcywgb2Zmc2V0LCBhcnJheU9wZXJhdGlvbi50eXBlKTsKLQotICAgICAgaWYgKGFycmF5T3Bl
cmF0aW9uLnR5cGUgIT09IERFTEVURSkgewotICAgICAgICBvZmZzZXQgKz0gYXJyYXlPcGVyYXRp
b24uY291bnQ7Ci0gICAgICAgIGl0ZW1zID0gaXRlbXMuY29uY2F0KGFycmF5T3BlcmF0aW9uLml0
ZW1zKTsKLSAgICAgIH0KLSAgICB9KTsKLQotICAgIHRoaXMuX29wZXJhdGlvbnMgPSBbbmV3IEFy
cmF5T3BlcmF0aW9uKFJFVEFJTiwgaXRlbXMubGVuZ3RoLCBpdGVtcyldOwotICB9LAotCi0gIC8q
KgotICAgIFJldHVybiBhbiBgQXJyYXlPcGVyYXRpb25NYXRjaGAgZm9yIHRoZSBvcGVyYXRpb24g
dGhhdCBjb250YWlucyB0aGUgaXRlbSBhdCBgaW5kZXhgLgotCi0gICAgQG1ldGhvZCBfZmluZEFy
cmF5T3BlcmF0aW9uCi0KLSAgICBAcGFyYW0ge251bWJlcn0gaW5kZXggdGhlIGluZGV4IG9mIHRo
ZSBpdGVtIHdob3NlIG9wZXJhdGlvbiBpbmZvcm1hdGlvbgotICAgIHNob3VsZCBiZSByZXR1cm5l
ZC4KLSAgICBAcHJpdmF0ZQotICAqLwotICBfZmluZEFycmF5T3BlcmF0aW9uOiBmdW5jdGlvbiAo
aW5kZXgpIHsKLSAgICB2YXIgYXJyYXlPcGVyYXRpb25JbmRleCwKLSAgICAgICAgbGVuLAotICAg
ICAgICBzcGxpdCA9IGZhbHNlLAotICAgICAgICBhcnJheU9wZXJhdGlvbiwKLSAgICAgICAgYXJy
YXlPcGVyYXRpb25SYW5nZVN0YXJ0LAotICAgICAgICBhcnJheU9wZXJhdGlvblJhbmdlRW5kOwot
Ci0gICAgLy8gT1BUSU1JWkU6IHdlIGNvdWxkIHNlYXJjaCB0aGVzZSBmYXN0ZXIgaWYgd2Uga2Vw
dCBhIGJhbGFuY2VkIHRyZWUuCi0gICAgLy8gZmluZCBsZWZ0bW9zdCBhcnJheU9wZXJhdGlvbiB0
byB0aGUgcmlnaHQgb2YgYGluZGV4YAotICAgIGZvciAoYXJyYXlPcGVyYXRpb25JbmRleCA9IGFy
cmF5T3BlcmF0aW9uUmFuZ2VTdGFydCA9IDAsIGxlbiA9IHRoaXMuX29wZXJhdGlvbnMubGVuZ3Ro
OyBhcnJheU9wZXJhdGlvbkluZGV4IDwgbGVuOyArK2FycmF5T3BlcmF0aW9uSW5kZXgpIHsKLSAg
ICAgIGFycmF5T3BlcmF0aW9uID0gdGhpcy5fb3BlcmF0aW9uc1thcnJheU9wZXJhdGlvbkluZGV4
XTsKLQotICAgICAgaWYgKGFycmF5T3BlcmF0aW9uLnR5cGUgPT09IERFTEVURSkgeyBjb250aW51
ZTsgfQotCi0gICAgICBhcnJheU9wZXJhdGlvblJhbmdlRW5kID0gYXJyYXlPcGVyYXRpb25SYW5n
ZVN0YXJ0ICsgYXJyYXlPcGVyYXRpb24uY291bnQgLSAxOwotCi0gICAgICBpZiAoaW5kZXggPT09
IGFycmF5T3BlcmF0aW9uUmFuZ2VTdGFydCkgewotICAgICAgICBicmVhazsKLSAgICAgIH0gZWxz
ZSBpZiAoaW5kZXggPiBhcnJheU9wZXJhdGlvblJhbmdlU3RhcnQgJiYgaW5kZXggPD0gYXJyYXlP
cGVyYXRpb25SYW5nZUVuZCkgewotICAgICAgICBzcGxpdCA9IHRydWU7Ci0gICAgICAgIGJyZWFr
OwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgYXJyYXlPcGVyYXRpb25SYW5nZVN0YXJ0ID0gYXJy
YXlPcGVyYXRpb25SYW5nZUVuZCArIDE7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIG5l
dyBBcnJheU9wZXJhdGlvbk1hdGNoKGFycmF5T3BlcmF0aW9uLCBhcnJheU9wZXJhdGlvbkluZGV4
LCBzcGxpdCwgYXJyYXlPcGVyYXRpb25SYW5nZVN0YXJ0KTsKLSAgfSwKLQotICBfc3BsaXQ6IGZ1
bmN0aW9uIChhcnJheU9wZXJhdGlvbkluZGV4LCBzcGxpdEluZGV4LCBuZXdBcnJheU9wZXJhdGlv
bikgewotICAgIHZhciBhcnJheU9wZXJhdGlvbiA9IHRoaXMuX29wZXJhdGlvbnNbYXJyYXlPcGVy
YXRpb25JbmRleF0sCi0gICAgICAgIHNwbGl0SXRlbXMgPSBhcnJheU9wZXJhdGlvbi5pdGVtcy5z
bGljZShzcGxpdEluZGV4KSwKLSAgICAgICAgc3BsaXRBcnJheU9wZXJhdGlvbiA9IG5ldyBBcnJh
eU9wZXJhdGlvbihhcnJheU9wZXJhdGlvbi50eXBlLCBzcGxpdEl0ZW1zLmxlbmd0aCwgc3BsaXRJ
dGVtcyk7Ci0KLSAgICAvLyB0cnVuY2F0ZSBMSFMKLSAgICBhcnJheU9wZXJhdGlvbi5jb3VudCA9
IHNwbGl0SW5kZXg7Ci0gICAgYXJyYXlPcGVyYXRpb24uaXRlbXMgPSBhcnJheU9wZXJhdGlvbi5p
dGVtcy5zbGljZSgwLCBzcGxpdEluZGV4KTsKLQotICAgIHRoaXMuX29wZXJhdGlvbnMuc3BsaWNl
KGFycmF5T3BlcmF0aW9uSW5kZXggKyAxLCAwLCBuZXdBcnJheU9wZXJhdGlvbiwgc3BsaXRBcnJh
eU9wZXJhdGlvbik7Ci0gIH0sCi0KLSAgLy8gc2VlIFN1YkFycmF5IGZvciBhIGJldHRlciBpbXBs
ZW1lbnRhdGlvbi4KLSAgX2NvbXBvc2VJbnNlcnQ6IGZ1bmN0aW9uIChpbmRleCkgewotICAgIHZh
ciBuZXdBcnJheU9wZXJhdGlvbiA9IHRoaXMuX29wZXJhdGlvbnNbaW5kZXhdLAotICAgICAgICBs
ZWZ0QXJyYXlPcGVyYXRpb24gPSB0aGlzLl9vcGVyYXRpb25zW2luZGV4LTFdLCAvLyBtYXkgYmUg
dW5kZWZpbmVkCi0gICAgICAgIHJpZ2h0QXJyYXlPcGVyYXRpb24gPSB0aGlzLl9vcGVyYXRpb25z
W2luZGV4KzFdLCAvLyBtYXkgYmUgdW5kZWZpbmVkCi0gICAgICAgIGxlZnRPcCA9IGxlZnRBcnJh
eU9wZXJhdGlvbiAmJiBsZWZ0QXJyYXlPcGVyYXRpb24udHlwZSwKLSAgICAgICAgcmlnaHRPcCA9
IHJpZ2h0QXJyYXlPcGVyYXRpb24gJiYgcmlnaHRBcnJheU9wZXJhdGlvbi50eXBlOwotCi0gICAg
aWYgKGxlZnRPcCA9PT0gSU5TRVJUKSB7Ci0gICAgICAgIC8vIG1lcmdlIGxlZnQKLSAgICAgICAg
bGVmdEFycmF5T3BlcmF0aW9uLmNvdW50ICs9IG5ld0FycmF5T3BlcmF0aW9uLmNvdW50OwotICAg
ICAgICBsZWZ0QXJyYXlPcGVyYXRpb24uaXRlbXMgPSBsZWZ0QXJyYXlPcGVyYXRpb24uaXRlbXMu
Y29uY2F0KG5ld0FycmF5T3BlcmF0aW9uLml0ZW1zKTsKLQotICAgICAgaWYgKHJpZ2h0T3AgPT09
IElOU0VSVCkgewotICAgICAgICAvLyBhbHNvIG1lcmdlIHJpZ2h0ICh3ZSBoYXZlIHNwbGl0IGFu
IGluc2VydCB3aXRoIGFuIGluc2VydCkKLSAgICAgICAgbGVmdEFycmF5T3BlcmF0aW9uLmNvdW50
ICs9IHJpZ2h0QXJyYXlPcGVyYXRpb24uY291bnQ7Ci0gICAgICAgIGxlZnRBcnJheU9wZXJhdGlv
bi5pdGVtcyA9IGxlZnRBcnJheU9wZXJhdGlvbi5pdGVtcy5jb25jYXQocmlnaHRBcnJheU9wZXJh
dGlvbi5pdGVtcyk7Ci0gICAgICAgIHRoaXMuX29wZXJhdGlvbnMuc3BsaWNlKGluZGV4LCAyKTsK
LSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIG9ubHkgbWVyZ2UgbGVmdAotICAgICAgICB0aGlz
Ll9vcGVyYXRpb25zLnNwbGljZShpbmRleCwgMSk7Ci0gICAgICB9Ci0gICAgfSBlbHNlIGlmIChy
aWdodE9wID09PSBJTlNFUlQpIHsKLSAgICAgIC8vIG1lcmdlIHJpZ2h0Ci0gICAgICBuZXdBcnJh
eU9wZXJhdGlvbi5jb3VudCArPSByaWdodEFycmF5T3BlcmF0aW9uLmNvdW50OwotICAgICAgbmV3
QXJyYXlPcGVyYXRpb24uaXRlbXMgPSBuZXdBcnJheU9wZXJhdGlvbi5pdGVtcy5jb25jYXQocmln
aHRBcnJheU9wZXJhdGlvbi5pdGVtcyk7Ci0gICAgICB0aGlzLl9vcGVyYXRpb25zLnNwbGljZShp
bmRleCArIDEsIDEpOwotICAgIH0KLSAgfSwKLQotICBfY29tcG9zZURlbGV0ZTogZnVuY3Rpb24g
KGluZGV4KSB7Ci0gICAgdmFyIGFycmF5T3BlcmF0aW9uID0gdGhpcy5fb3BlcmF0aW9uc1tpbmRl
eF0sCi0gICAgICAgIGRlbGV0ZXNUb0dvID0gYXJyYXlPcGVyYXRpb24uY291bnQsCi0gICAgICAg
IGxlZnRBcnJheU9wZXJhdGlvbiA9IHRoaXMuX29wZXJhdGlvbnNbaW5kZXgtMV0sIC8vIG1heSBi
ZSB1bmRlZmluZWQKLSAgICAgICAgbGVmdE9wID0gbGVmdEFycmF5T3BlcmF0aW9uICYmIGxlZnRB
cnJheU9wZXJhdGlvbi50eXBlLAotICAgICAgICBuZXh0QXJyYXlPcGVyYXRpb24sCi0gICAgICAg
IG5leHRPcCwKLSAgICAgICAgbmV4dENvdW50LAotICAgICAgICByZW1vdmVOZXdBbmROZXh0T3Ag
PSBmYWxzZSwKLSAgICAgICAgcmVtb3ZlZEl0ZW1zID0gW107Ci0KLSAgICBpZiAobGVmdE9wID09
PSBERUxFVEUpIHsKLSAgICAgIGFycmF5T3BlcmF0aW9uID0gbGVmdEFycmF5T3BlcmF0aW9uOwot
ICAgICAgaW5kZXggLT0gMTsKLSAgICB9Ci0KLSAgICBmb3IgKHZhciBpID0gaW5kZXggKyAxOyBk
ZWxldGVzVG9HbyA+IDA7ICsraSkgewotICAgICAgbmV4dEFycmF5T3BlcmF0aW9uID0gdGhpcy5f
b3BlcmF0aW9uc1tpXTsKLSAgICAgIG5leHRPcCA9IG5leHRBcnJheU9wZXJhdGlvbi50eXBlOwot
ICAgICAgbmV4dENvdW50ID0gbmV4dEFycmF5T3BlcmF0aW9uLmNvdW50OwotCi0gICAgICBpZiAo
bmV4dE9wID09PSBERUxFVEUpIHsKLSAgICAgICAgYXJyYXlPcGVyYXRpb24uY291bnQgKz0gbmV4
dENvdW50OwotICAgICAgICBjb250aW51ZTsKLSAgICAgIH0KLQotICAgICAgaWYgKG5leHRDb3Vu
dCA+IGRlbGV0ZXNUb0dvKSB7Ci0gICAgICAgIC8vIGQ6MiB7cixpfTo1ICB3ZSByZWR1Y2UgdGhl
IHJldGFpbiBvciBpbnNlcnQsIGJ1dCBpdCBzdGF5cwotICAgICAgICByZW1vdmVkSXRlbXMgPSBy
ZW1vdmVkSXRlbXMuY29uY2F0KG5leHRBcnJheU9wZXJhdGlvbi5pdGVtcy5zcGxpY2UoMCwgZGVs
ZXRlc1RvR28pKTsKLSAgICAgICAgbmV4dEFycmF5T3BlcmF0aW9uLmNvdW50IC09IGRlbGV0ZXNU
b0dvOwotCi0gICAgICAgIC8vIEluIHRoZSBjYXNlIHdoZXJlIHdlIHRydW5jYXRlIHRoZSBsYXN0
IGFycmF5T3BlcmF0aW9uLCB3ZSBkb24ndCBuZWVkIHRvCi0gICAgICAgIC8vIHJlbW92ZSBpdDsg
YWxzbyB0aGUgZGVsZXRlc1RvR28gcmVkdWN0aW9uIGlzIG5vdCB0aGUgZW50aXJldHkgb2YKLSAg
ICAgICAgLy8gbmV4dENvdW50Ci0gICAgICAgIGkgLT0gMTsKLSAgICAgICAgbmV4dENvdW50ID0g
ZGVsZXRlc1RvR287Ci0KLSAgICAgICAgZGVsZXRlc1RvR28gPSAwOwotICAgICAgfSBlbHNlIHsK
LSAgICAgICAgaWYgKG5leHRDb3VudCA9PT0gZGVsZXRlc1RvR28pIHsKLSAgICAgICAgICAvLyBI
YW5kbGUgZWRnZSBjYXNlIG9mIGQ6MiBpOjIgaW4gd2hpY2ggY2FzZSBib3RoIG9wZXJhdGlvbnMg
Z28gYXdheQotICAgICAgICAgIC8vIGR1cmluZyBjb21wb3NpdGlvbi4KLSAgICAgICAgICByZW1v
dmVOZXdBbmROZXh0T3AgPSB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIHJlbW92ZWRJdGVtcyA9
IHJlbW92ZWRJdGVtcy5jb25jYXQobmV4dEFycmF5T3BlcmF0aW9uLml0ZW1zKTsKLSAgICAgICAg
ZGVsZXRlc1RvR28gLT0gbmV4dENvdW50OwotICAgICAgfQotCi0gICAgICBpZiAobmV4dE9wID09
PSBJTlNFUlQpIHsKLSAgICAgICAgLy8gZDoyIGk6MyB3aWxsIHJlc3VsdCBpbiBkZWxldGUgZ29p
bmcgYXdheQotICAgICAgICBhcnJheU9wZXJhdGlvbi5jb3VudCAtPSBuZXh0Q291bnQ7Ci0gICAg
ICB9Ci0gICAgfQotCi0gICAgaWYgKGFycmF5T3BlcmF0aW9uLmNvdW50ID4gMCkgewotICAgICAg
Ly8gY29tcG9zZSBvdXIgbmV3IGRlbGV0ZSB3aXRoIHBvc3NpYmx5IHNldmVyYWwgb3BlcmF0aW9u
cyB0byB0aGUgcmlnaHQgb2YKLSAgICAgIC8vIGRpc3BhcmF0ZSB0eXBlcwotICAgICAgdGhpcy5f
b3BlcmF0aW9ucy5zcGxpY2UoaW5kZXgrMSwgaS0xLWluZGV4KTsKLSAgICB9IGVsc2UgewotICAg
ICAgLy8gVGhlIGRlbGV0ZSBvcGVyYXRpb24gY2FuIGdvIGF3YXk7IGl0IGhhcyBtZXJlbHkgcmVk
dWNlZCBzb21lIG90aGVyCi0gICAgICAvLyBvcGVyYXRpb24sIGFzIGluIGQ6MyBpOjQ7IGl0IG1h
eSBhbHNvIGhhdmUgZWxpbWluYXRlZCB0aGF0IG9wZXJhdGlvbiwKLSAgICAgIC8vIGFzIGluIGQ6
MyBpOjMuCi0gICAgICB0aGlzLl9vcGVyYXRpb25zLnNwbGljZShpbmRleCwgcmVtb3ZlTmV3QW5k
TmV4dE9wID8gMiA6IDEpOwotICAgIH0KLQotICAgIHJldHVybiByZW1vdmVkSXRlbXM7Ci0gIH0s
Ci0KLSAgdG9TdHJpbmc6IGZ1bmN0aW9uICgpIHsKLSAgICB2YXIgc3RyID0gIiI7Ci0gICAgZm9y
RWFjaCh0aGlzLl9vcGVyYXRpb25zLCBmdW5jdGlvbiAob3BlcmF0aW9uKSB7Ci0gICAgICBzdHIg
Kz0gIiAiICsgb3BlcmF0aW9uLnR5cGUgKyAiOiIgKyBvcGVyYXRpb24uY291bnQ7Ci0gICAgfSk7
Ci0gICAgcmV0dXJuIHN0ci5zdWJzdHJpbmcoMSk7Ci0gIH0KLX07Ci0KLS8qKgotICBJbnRlcm5h
bCBkYXRhIHN0cnVjdHVyZSB0byByZXByZXNlbnQgYW4gYXJyYXkgb3BlcmF0aW9uLgotCi0gIEBt
ZXRob2QgQXJyYXlPcGVyYXRpb24KLSAgQHByaXZhdGUKLSAgQHBhcmFtIHtzdHJpbmd9IHR5cGUg
VGhlIHR5cGUgb2YgdGhlIG9wZXJhdGlvbi4gIE9uZSBvZgotICBgRW1iZXIuVHJhY2tlZEFycmF5
LntSRVRBSU4sIElOU0VSVCwgREVMRVRFfWAKLSAgQHBhcmFtIHtudW1iZXJ9IGNvdW50IFRoZSBu
dW1iZXIgb2YgaXRlbXMgaW4gdGhpcyBvcGVyYXRpb24uCi0gIEBwYXJhbSB7YXJyYXl9IGl0ZW1z
IFRoZSBpdGVtcyBvZiB0aGUgb3BlcmF0aW9uLCBpZiBpbmNsdWRlZC4gIFJFVEFJTiBhbmQKLSAg
SU5TRVJUIGluY2x1ZGUgdGhlaXIgaXRlbXMsIERFTEVURSBkb2VzIG5vdC4KLSovCi1mdW5jdGlv
biBBcnJheU9wZXJhdGlvbiAob3BlcmF0aW9uLCBjb3VudCwgaXRlbXMpIHsKLSAgdGhpcy50eXBl
ID0gb3BlcmF0aW9uOyAvLyBSRVRBSU4gfCBJTlNFUlQgfCBERUxFVEUKLSAgdGhpcy5jb3VudCA9
IGNvdW50OwotICB0aGlzLml0ZW1zID0gaXRlbXM7Ci19Ci0KLS8qKgotICBJbnRlcm5hbCBkYXRh
IHN0cnVjdHVyZSB1c2VkIHRvIGluY2x1ZGUgaW5mb3JtYXRpb24gd2hlbiBsb29raW5nIHVwIG9w
ZXJhdGlvbnMKLSAgYnkgaXRlbSBpbmRleC4KLQotICBAbWV0aG9kIEFycmF5T3BlcmF0aW9uTWF0
Y2gKLSAgQHByaXZhdGUKLSAgQHBhcmFtIHtBcnJheU9wZXJhdGlvbn0gb3BlcmF0aW9uCi0gIEBw
YXJhbSB7bnVtYmVyfSBpbmRleCBUaGUgaW5kZXggb2YgYG9wZXJhdGlvbmAgaW4gdGhlIGFycmF5
IG9mIG9wZXJhdGlvbnMuCi0gIEBwYXJhbSB7Ym9vbGVhbn0gc3BsaXQgV2hldGhlciBvciBub3Qg
dGhlIGl0ZW0gaW5kZXggc2VhcmNoZWQgZm9yIHdvdWxkCi0gIHJlcXVpcmUgYSBzcGxpdCBmb3Ig
YSBuZXcgb3BlcmF0aW9uIHR5cGUuCi0gIEBwYXJhbSB7bnVtYmVyfSByYW5nZVN0YXJ0IFRoZSBp
bmRleCBvZiB0aGUgZmlyc3QgaXRlbSBpbiB0aGUgb3BlcmF0aW9uLAotICB3aXRoIHJlc3BlY3Qg
dG8gdGhlIHRyYWNrZWQgYXJyYXkuICBUaGUgaW5kZXggb2YgdGhlIGxhc3QgaXRlbSBjYW4gYmUg
Y29tcHV0ZWQKLSAgZnJvbSBgcmFuZ2VTdGFydGAgYW5kIGBvcGVyYXRpb24uY291bnRgLgotKi8K
LWZ1bmN0aW9uIEFycmF5T3BlcmF0aW9uTWF0Y2gob3BlcmF0aW9uLCBpbmRleCwgc3BsaXQsIHJh
bmdlU3RhcnQpIHsKLSAgdGhpcy5vcGVyYXRpb24gPSBvcGVyYXRpb247Ci0gIHRoaXMuaW5kZXgg
PSBpbmRleDsKLSAgdGhpcy5zcGxpdCA9IHNwbGl0OwotICB0aGlzLnJhbmdlU3RhcnQgPSByYW5n
ZVN0YXJ0OwotfQotCi19KSgpOwotCi0KLQotKGZ1bmN0aW9uKCkgewotdmFyIGdldCA9IEVtYmVy
LmdldCwKLSAgICBmb3JFYWNoID0gRW1iZXIuRW51bWVyYWJsZVV0aWxzLmZvckVhY2gsCi0gICAg
UkVUQUlOID0gJ3InLAotICAgIEZJTFRFUiA9ICdmJzsKLQotZnVuY3Rpb24gT3BlcmF0aW9uICh0
eXBlLCBjb3VudCkgewotICB0aGlzLnR5cGUgPSB0eXBlOwotICB0aGlzLmNvdW50ID0gY291bnQ7
Ci19Ci0KLS8qKgotICBBbiBgRW1iZXIuU3ViQXJyYXlgIHRyYWNrcyBhbiBhcnJheSBpbiBhIHdh
eSBzaW1pbGFyIHRvLCBidXQgbW9yZSBzcGVjaWFsaXplZAotICB0aGFuLCBgRW1iZXIuVHJhY2tl
ZEFycmF5YC4gIEl0IGlzIHVzZWZ1bCBmb3Iga2VlcGluZyB0cmFjayBvZiB0aGUgaW5kZXhlcyBv
ZgotICBpdGVtcyB3aXRoaW4gYSBmaWx0ZXJlZCBhcnJheS4KLQotICBAY2xhc3MgU3ViQXJyYXkK
LSAgQG5hbWVzcGFjZSBFbWJlcgotKi8KLUVtYmVyLlN1YkFycmF5ID0gZnVuY3Rpb24gKGxlbmd0
aCkgewotICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDEpIHsgbGVuZ3RoID0gMDsgfQotCi0gIGlm
IChsZW5ndGggPiAwKSB7Ci0gICAgdGhpcy5fb3BlcmF0aW9ucyA9IFtuZXcgT3BlcmF0aW9uKFJF
VEFJTiwgbGVuZ3RoKV07Ci0gIH0gZWxzZSB7Ci0gICAgdGhpcy5fb3BlcmF0aW9ucyA9IFtdOwot
ICB9Ci19OwotCi1FbWJlci5TdWJBcnJheS5wcm90b3R5cGUgPSB7Ci0gIC8qKgotICAgIFRyYWNr
IHRoYXQgYW4gaXRlbSB3YXMgYWRkZWQgdG8gdGhlIHRyYWNrZWQgYXJyYXkuCi0KLSAgICBAbWV0
aG9kIGFkZEl0ZW0KLQotICAgIEBwYXJhbSB7bnVtYmVyfSBpbmRleCBUaGUgaW5kZXggb2YgdGhl
IGl0ZW0gaW4gdGhlIHRyYWNrZWQgYXJyYXkuCi0gICAgQHBhcmFtIHtib29sZWFufSBtYXRjaCBg
dHJ1ZWAgaWZmIHRoZSBpdGVtIGlzIGluY2x1ZGVkIGluIHRoZSBzdWJhcnJheS4KLQotICAgIEBy
ZXR1cm4ge251bWJlcn0gVGhlIGluZGV4IG9mIHRoZSBpdGVtIGluIHRoZSBzdWJhcnJheS4KLSAg
Ki8KLSAgYWRkSXRlbTogZnVuY3Rpb24oaW5kZXgsIG1hdGNoKSB7Ci0gICAgdmFyIHJldHVyblZh
bHVlID0gLTEsCi0gICAgICAgIGl0ZW1UeXBlID0gbWF0Y2ggPyBSRVRBSU4gOiBGSUxURVIsCi0g
ICAgICAgIHNlbGYgPSB0aGlzOwotCi0gICAgdGhpcy5fZmluZE9wZXJhdGlvbihpbmRleCwgZnVu
Y3Rpb24ob3BlcmF0aW9uLCBvcGVyYXRpb25JbmRleCwgcmFuZ2VTdGFydCwgcmFuZ2VFbmQsIHNl
ZW5JblN1YkFycmF5KSB7Ci0gICAgICB2YXIgbmV3T3BlcmF0aW9uLCBzcGxpdE9wZXJhdGlvbjsK
LQotICAgICAgaWYgKGl0ZW1UeXBlID09PSBvcGVyYXRpb24udHlwZSkgewotICAgICAgICArK29w
ZXJhdGlvbi5jb3VudDsKLSAgICAgIH0gZWxzZSBpZiAoaW5kZXggPT09IHJhbmdlU3RhcnQpIHsK
LSAgICAgICAgLy8gaW5zZXJ0IHRvIHRoZSBsZWZ0IG9mIGBvcGVyYXRpb25gCi0gICAgICAgIHNl
bGYuX29wZXJhdGlvbnMuc3BsaWNlKG9wZXJhdGlvbkluZGV4LCAwLCBuZXcgT3BlcmF0aW9uKGl0
ZW1UeXBlLCAxKSk7Ci0gICAgICB9IGVsc2UgewotICAgICAgICBuZXdPcGVyYXRpb24gPSBuZXcg
T3BlcmF0aW9uKGl0ZW1UeXBlLCAxKTsKLSAgICAgICAgc3BsaXRPcGVyYXRpb24gPSBuZXcgT3Bl
cmF0aW9uKG9wZXJhdGlvbi50eXBlLCByYW5nZUVuZCAtIGluZGV4ICsgMSk7Ci0gICAgICAgIG9w
ZXJhdGlvbi5jb3VudCA9IGluZGV4IC0gcmFuZ2VTdGFydDsKLQotICAgICAgICBzZWxmLl9vcGVy
YXRpb25zLnNwbGljZShvcGVyYXRpb25JbmRleCArIDEsIDAsIG5ld09wZXJhdGlvbiwgc3BsaXRP
cGVyYXRpb24pOwotICAgICAgfQotCi0gICAgICBpZiAobWF0Y2gpIHsKLSAgICAgICAgaWYgKG9w
ZXJhdGlvbi50eXBlID09PSBSRVRBSU4pIHsKLSAgICAgICAgICByZXR1cm5WYWx1ZSA9IHNlZW5J
blN1YkFycmF5ICsgKGluZGV4IC0gcmFuZ2VTdGFydCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgcmV0dXJuVmFsdWUgPSBzZWVuSW5TdWJBcnJheTsKLSAgICAgICAgfQotICAgICAgfQot
Ci0gICAgICBzZWxmLl9jb21wb3NlQXQob3BlcmF0aW9uSW5kZXgpOwotICAgIH0sIGZ1bmN0aW9u
KHNlZW5JblN1YkFycmF5KSB7Ci0gICAgICBzZWxmLl9vcGVyYXRpb25zLnB1c2gobmV3IE9wZXJh
dGlvbihpdGVtVHlwZSwgMSkpOwotCi0gICAgICBpZiAobWF0Y2gpIHsKLSAgICAgICAgcmV0dXJu
VmFsdWUgPSBzZWVuSW5TdWJBcnJheTsKLSAgICAgIH0KLQotICAgICAgc2VsZi5fY29tcG9zZUF0
KHNlbGYuX29wZXJhdGlvbnMubGVuZ3RoLTEpOwotICAgIH0pOwotCi0gICAgcmV0dXJuIHJldHVy
blZhbHVlOwotICB9LAotCi0gIC8qKgotICAgIFRyYWNrIHRoYXQgYW4gaXRlbSB3YXMgcmVtb3Zl
ZCBmcm9tIHRoZSB0cmFja2VkIGFycmF5LgotCi0gICAgQG1ldGhvZCByZW1vdmVJdGVtCi0KLSAg
ICBAcGFyYW0ge251bWJlcn0gaW5kZXggVGhlIGluZGV4IG9mIHRoZSBpdGVtIGluIHRoZSB0cmFj
a2VkIGFycmF5LgotCi0gICAgQHJldHVybiB7bnVtYmVyfSBUaGUgaW5kZXggb2YgdGhlIGl0ZW0g
aW4gdGhlIHN1YmFycmF5LCBvciBgLTFgIGlmIHRoZSBpdGVtCi0gICAgd2FzIG5vdCBpbiB0aGUg
c3ViYXJyYXkuCi0gICovCi0gIHJlbW92ZUl0ZW06IGZ1bmN0aW9uKGluZGV4KSB7Ci0gICAgdmFy
IHJldHVyblZhbHVlID0gLTEsCi0gICAgICAgIHNlbGYgPSB0aGlzOwotCi0gICAgdGhpcy5fZmlu
ZE9wZXJhdGlvbihpbmRleCwgZnVuY3Rpb24gKG9wZXJhdGlvbiwgb3BlcmF0aW9uSW5kZXgsIHJh
bmdlU3RhcnQsIHJhbmdlRW5kLCBzZWVuSW5TdWJBcnJheSkgewotICAgICAgaWYgKG9wZXJhdGlv
bi50eXBlID09PSBSRVRBSU4pIHsKLSAgICAgICAgcmV0dXJuVmFsdWUgPSBzZWVuSW5TdWJBcnJh
eSArIChpbmRleCAtIHJhbmdlU3RhcnQpOwotICAgICAgfQotCi0gICAgICBpZiAob3BlcmF0aW9u
LmNvdW50ID4gMSkgewotICAgICAgICAtLW9wZXJhdGlvbi5jb3VudDsKLSAgICAgIH0gZWxzZSB7
Ci0gICAgICAgIHNlbGYuX29wZXJhdGlvbnMuc3BsaWNlKG9wZXJhdGlvbkluZGV4LCAxKTsKLSAg
ICAgICAgc2VsZi5fY29tcG9zZUF0KG9wZXJhdGlvbkluZGV4KTsKLSAgICAgIH0KLSAgICB9LCBm
dW5jdGlvbigpIHsKLSAgICAgIHRocm93IG5ldyBFbWJlci5FcnJvcigiQ2FuJ3QgcmVtb3ZlIGFu
IGl0ZW0gdGhhdCBoYXMgbmV2ZXIgYmVlbiBhZGRlZC4iKTsKLSAgICB9KTsKLQotICAgIHJldHVy
biByZXR1cm5WYWx1ZTsKLSAgfSwKLQotCi0gIF9maW5kT3BlcmF0aW9uOiBmdW5jdGlvbiAoaW5k
ZXgsIGZvdW5kQ2FsbGJhY2ssIG5vdEZvdW5kQ2FsbGJhY2spIHsKLSAgICB2YXIgb3BlcmF0aW9u
SW5kZXgsCi0gICAgICAgIGxlbiwKLSAgICAgICAgb3BlcmF0aW9uLAotICAgICAgICByYW5nZVN0
YXJ0LAotICAgICAgICByYW5nZUVuZCwKLSAgICAgICAgc2VlbkluU3ViQXJyYXkgPSAwOwotCi0g
ICAgLy8gT1BUSU1JWkU6IGNoYW5nZSB0byBiYWxhbmNlZCB0cmVlCi0gICAgLy8gZmluZCBsZWZ0
bW9zdCBvcGVyYXRpb24gdG8gdGhlIHJpZ2h0IG9mIGBpbmRleGAKLSAgICBmb3IgKG9wZXJhdGlv
bkluZGV4ID0gcmFuZ2VTdGFydCA9IDAsIGxlbiA9IHRoaXMuX29wZXJhdGlvbnMubGVuZ3RoOyBv
cGVyYXRpb25JbmRleCA8IGxlbjsgcmFuZ2VTdGFydCA9IHJhbmdlRW5kICsgMSwgKytvcGVyYXRp
b25JbmRleCkgewotICAgICAgb3BlcmF0aW9uID0gdGhpcy5fb3BlcmF0aW9uc1tvcGVyYXRpb25J
bmRleF07Ci0gICAgICByYW5nZUVuZCA9IHJhbmdlU3RhcnQgKyBvcGVyYXRpb24uY291bnQgLSAx
OwotCi0gICAgICBpZiAoaW5kZXggPj0gcmFuZ2VTdGFydCAmJiBpbmRleCA8PSByYW5nZUVuZCkg
ewotICAgICAgICBmb3VuZENhbGxiYWNrKG9wZXJhdGlvbiwgb3BlcmF0aW9uSW5kZXgsIHJhbmdl
U3RhcnQsIHJhbmdlRW5kLCBzZWVuSW5TdWJBcnJheSk7Ci0gICAgICAgIHJldHVybjsKLSAgICAg
IH0gZWxzZSBpZiAob3BlcmF0aW9uLnR5cGUgPT09IFJFVEFJTikgewotICAgICAgICBzZWVuSW5T
dWJBcnJheSArPSBvcGVyYXRpb24uY291bnQ7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgbm90Rm91
bmRDYWxsYmFjayhzZWVuSW5TdWJBcnJheSk7Ci0gIH0sCi0KLSAgX2NvbXBvc2VBdDogZnVuY3Rp
b24oaW5kZXgpIHsKLSAgICB2YXIgb3AgPSB0aGlzLl9vcGVyYXRpb25zW2luZGV4XSwKLSAgICAg
ICAgb3RoZXJPcDsKLQotICAgIGlmICghb3ApIHsKLSAgICAgIC8vIENvbXBvc2luZyBvdXQgb2Yg
Ym91bmRzIGlzIGEgbm8tb3AsIGFzIHdoZW4gcmVtb3ZpbmcgdGhlIGxhc3Qgb3BlcmF0aW9uCi0g
ICAgICAvLyBpbiB0aGUgbGlzdC4KLSAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoaW5k
ZXggPiAwKSB7Ci0gICAgICBvdGhlck9wID0gdGhpcy5fb3BlcmF0aW9uc1tpbmRleC0xXTsKLSAg
ICAgIGlmIChvdGhlck9wLnR5cGUgPT09IG9wLnR5cGUpIHsKLSAgICAgICAgb3AuY291bnQgKz0g
b3RoZXJPcC5jb3VudDsKLSAgICAgICAgdGhpcy5fb3BlcmF0aW9ucy5zcGxpY2UoaW5kZXgtMSwg
MSk7Ci0gICAgICAgIC0taW5kZXg7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgaWYgKGluZGV4IDwg
dGhpcy5fb3BlcmF0aW9ucy5sZW5ndGgtMSkgewotICAgICAgb3RoZXJPcCA9IHRoaXMuX29wZXJh
dGlvbnNbaW5kZXgrMV07Ci0gICAgICBpZiAob3RoZXJPcC50eXBlID09PSBvcC50eXBlKSB7Ci0g
ICAgICAgIG9wLmNvdW50ICs9IG90aGVyT3AuY291bnQ7Ci0gICAgICAgIHRoaXMuX29wZXJhdGlv
bnMuc3BsaWNlKGluZGV4KzEsIDEpOwotICAgICAgfQotICAgIH0KLSAgfSwKLQotICB0b1N0cmlu
ZzogZnVuY3Rpb24gKCkgewotICAgIHZhciBzdHIgPSAiIjsKLSAgICBmb3JFYWNoKHRoaXMuX29w
ZXJhdGlvbnMsIGZ1bmN0aW9uIChvcGVyYXRpb24pIHsKLSAgICAgIHN0ciArPSAiICIgKyBvcGVy
YXRpb24udHlwZSArICI6IiArIG9wZXJhdGlvbi5jb3VudDsKLSAgICB9KTsKLSAgICByZXR1cm4g
c3RyLnN1YnN0cmluZygxKTsKLSAgfQotfTsKLQotfSkoKTsKLQotCi0KLShmdW5jdGlvbigpIHsK
LUVtYmVyLkNvbnRhaW5lciA9IHJlcXVpcmVNb2R1bGUoJ2NvbnRhaW5lcicpOwotRW1iZXIuQ29u
dGFpbmVyLnNldCA9IEVtYmVyLnNldDsKLQotfSkoKTsKLQotCi0KLShmdW5jdGlvbigpIHsKLUVt
YmVyLkFwcGxpY2F0aW9uID0gRW1iZXIuTmFtZXNwYWNlLmV4dGVuZCgpOwotCi19KSgpOwotCi0K
LQotKGZ1bmN0aW9uKCkgewotLyoqCi1AbW9kdWxlIGVtYmVyCi1Ac3VibW9kdWxlIGVtYmVyLXJ1
bnRpbWUKLSovCi0KLXZhciBPVVRfT0ZfUkFOR0VfRVhDRVBUSU9OID0gIkluZGV4IG91dCBvZiBy
YW5nZSI7Ci12YXIgRU1QVFkgPSBbXTsKLQotdmFyIGdldCA9IEVtYmVyLmdldCwgc2V0ID0gRW1i
ZXIuc2V0OwotCi0vKioKLSAgQW4gQXJyYXlQcm94eSB3cmFwcyBhbnkgb3RoZXIgb2JqZWN0IHRo
YXQgaW1wbGVtZW50cyBgRW1iZXIuQXJyYXlgIGFuZC9vcgotICBgRW1iZXIuTXV0YWJsZUFycmF5
LGAgZm9yd2FyZGluZyBhbGwgcmVxdWVzdHMuIFRoaXMgbWFrZXMgaXQgdmVyeSB1c2VmdWwgZm9y
Ci0gIGEgbnVtYmVyIG9mIGJpbmRpbmcgdXNlIGNhc2VzIG9yIG90aGVyIGNhc2VzIHdoZXJlIGJl
aW5nIGFibGUgdG8gc3dhcAotICBvdXQgdGhlIHVuZGVybHlpbmcgYXJyYXkgaXMgdXNlZnVsLgot
Ci0gIEEgc2ltcGxlIGV4YW1wbGUgb2YgdXNhZ2U6Ci0KLSAgYGBgamF2YXNjcmlwdAotICB2YXIg
cGV0cyA9IFsnZG9nJywgJ2NhdCcsICdmaXNoJ107Ci0gIHZhciBhcCA9IEVtYmVyLkFycmF5UHJv
eHkuY3JlYXRlKHsgY29udGVudDogRW1iZXIuQShwZXRzKSB9KTsKLQotICBhcC5nZXQoJ2ZpcnN0
T2JqZWN0Jyk7ICAgICAgICAgICAgICAgICAgICAgICAgLy8gJ2RvZycKLSAgYXAuc2V0KCdjb250
ZW50JywgWydhbW9lYmEnLCAncGFyYW1lY2l1bSddKTsKLSAgYXAuZ2V0KCdmaXJzdE9iamVjdCcp
OyAgICAgICAgICAgICAgICAgICAgICAgIC8vICdhbW9lYmEnCi0gIGBgYAotCi0gIFRoaXMgY2xh
c3MgY2FuIGFsc28gYmUgdXNlZnVsIGFzIGEgbGF5ZXIgdG8gdHJhbnNmb3JtIHRoZSBjb250ZW50
cyBvZgotICBhbiBhcnJheSwgYXMgdGhleSBhcmUgYWNjZXNzZWQuIFRoaXMgY2FuIGJlIGRvbmUg
Ynkgb3ZlcnJpZGluZwotICBgb2JqZWN0QXRDb250ZW50YDoKLQotICBgYGBqYXZhc2NyaXB0Ci0g
IHZhciBwZXRzID0gWydkb2cnLCAnY2F0JywgJ2Zpc2gnXTsKLSAgdmFyIGFwID0gRW1iZXIuQXJy
YXlQcm94eS5jcmVhdGUoewotICAgICAgY29udGVudDogRW1iZXIuQShwZXRzKSwKLSAgICAgIG9i
amVjdEF0Q29udGVudDogZnVuY3Rpb24oaWR4KSB7Ci0gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0
KCdjb250ZW50Jykub2JqZWN0QXQoaWR4KS50b1VwcGVyQ2FzZSgpOwotICAgICAgfQotICB9KTsK
LQotICBhcC5nZXQoJ2ZpcnN0T2JqZWN0Jyk7IC8vIC4gJ0RPRycKLSAgYGBgCi0KLSAgQGNsYXNz
IEFycmF5UHJveHkKLSAgQG5hbWVzcGFjZSBFbWJlcgotICBAZXh0ZW5kcyBFbWJlci5PYmplY3QK
LSAgQHVzZXMgRW1iZXIuTXV0YWJsZUFycmF5Ci0qLwotRW1iZXIuQXJyYXlQcm94eSA9IEVtYmVy
Lk9iamVjdC5leHRlbmQoRW1iZXIuTXV0YWJsZUFycmF5LCB7Ci0KLSAgLyoqCi0gICAgVGhlIGNv
bnRlbnQgYXJyYXkuIE11c3QgYmUgYW4gb2JqZWN0IHRoYXQgaW1wbGVtZW50cyBgRW1iZXIuQXJy
YXlgIGFuZC9vcgotICAgIGBFbWJlci5NdXRhYmxlQXJyYXkuYAotCi0gICAgQHByb3BlcnR5IGNv
bnRlbnQKLSAgICBAdHlwZSBFbWJlci5BcnJheQotICAqLwotICBjb250ZW50OiBudWxsLAotCi0g
IC8qKgotICAgVGhlIGFycmF5IHRoYXQgdGhlIHByb3h5IHByZXRlbmRzIHRvIGJlLiBJbiB0aGUg
ZGVmYXVsdCBgQXJyYXlQcm94eWAKLSAgIGltcGxlbWVudGF0aW9uLCB0aGlzIGFuZCBgY29udGVu
dGAgYXJlIHRoZSBzYW1lLiBTdWJjbGFzc2VzIG9mIGBBcnJheVByb3h5YAotICAgY2FuIG92ZXJy
aWRlIHRoaXMgcHJvcGVydHkgdG8gcHJvdmlkZSB0aGluZ3MgbGlrZSBzb3J0aW5nIGFuZCBmaWx0
ZXJpbmcuCi0KLSAgIEBwcm9wZXJ0eSBhcnJhbmdlZENvbnRlbnQKLSAgKi8KLSAgYXJyYW5nZWRD
b250ZW50OiBFbWJlci5jb21wdXRlZC5hbGlhcygnY29udGVudCcpLAotCi0gIC8qKgotICAgIFNo
b3VsZCBhY3R1YWxseSByZXRyaWV2ZSB0aGUgb2JqZWN0IGF0IHRoZSBzcGVjaWZpZWQgaW5kZXgg
ZnJvbSB0aGUKLSAgICBjb250ZW50LiBZb3UgY2FuIG92ZXJyaWRlIHRoaXMgbWV0aG9kIGluIHN1
YmNsYXNzZXMgdG8gdHJhbnNmb3JtIHRoZQotICAgIGNvbnRlbnQgaXRlbSB0byBzb21ldGhpbmcg
bmV3LgotCi0gICAgVGhpcyBtZXRob2Qgd2lsbCBvbmx5IGJlIGNhbGxlZCBpZiBjb250ZW50IGlz
IG5vbi1gbnVsbGAuCi0KLSAgICBAbWV0aG9kIG9iamVjdEF0Q29udGVudAotICAgIEBwYXJhbSB7
TnVtYmVyfSBpZHggVGhlIGluZGV4IHRvIHJldHJpZXZlLgotICAgIEByZXR1cm4ge09iamVjdH0g
dGhlIHZhbHVlIG9yIHVuZGVmaW5lZCBpZiBub25lIGZvdW5kCi0gICovCi0gIG9iamVjdEF0Q29u
dGVudDogZnVuY3Rpb24oaWR4KSB7Ci0gICAgcmV0dXJuIGdldCh0aGlzLCAnYXJyYW5nZWRDb250
ZW50Jykub2JqZWN0QXQoaWR4KTsKLSAgfSwKLQotICAvKioKLSAgICBTaG91bGQgYWN0dWFsbHkg
cmVwbGFjZSB0aGUgc3BlY2lmaWVkIG9iamVjdHMgb24gdGhlIGNvbnRlbnQgYXJyYXkuCi0gICAg
WW91IGNhbiBvdmVycmlkZSB0aGlzIG1ldGhvZCBpbiBzdWJjbGFzc2VzIHRvIHRyYW5zZm9ybSB0
aGUgY29udGVudCBpdGVtCi0gICAgaW50byBzb21ldGhpbmcgbmV3LgotCi0gICAgVGhpcyBtZXRo
b2Qgd2lsbCBvbmx5IGJlIGNhbGxlZCBpZiBjb250ZW50IGlzIG5vbi1gbnVsbGAuCi0KLSAgICBA
bWV0aG9kIHJlcGxhY2VDb250ZW50Ci0gICAgQHBhcmFtIHtOdW1iZXJ9IGlkeCBUaGUgc3RhcnRp
bmcgaW5kZXgKLSAgICBAcGFyYW0ge051bWJlcn0gYW10IFRoZSBudW1iZXIgb2YgaXRlbXMgdG8g
cmVtb3ZlIGZyb20gdGhlIGNvbnRlbnQuCi0gICAgQHBhcmFtIHtBcnJheX0gb2JqZWN0cyBPcHRp
b25hbCBhcnJheSBvZiBvYmplY3RzIHRvIGluc2VydCBvciBudWxsIGlmIG5vCi0gICAgICBvYmpl
Y3RzLgotICAgIEByZXR1cm4ge3ZvaWR9Ci0gICovCi0gIHJlcGxhY2VDb250ZW50OiBmdW5jdGlv
bihpZHgsIGFtdCwgb2JqZWN0cykgewotICAgIGdldCh0aGlzLCAnY29udGVudCcpLnJlcGxhY2Uo
aWR4LCBhbXQsIG9iamVjdHMpOwotICB9LAotCi0gIC8qKgotICAgIEludm9rZWQgd2hlbiB0aGUg
Y29udGVudCBwcm9wZXJ0eSBpcyBhYm91dCB0byBjaGFuZ2UuIE5vdGlmaWVzIG9ic2VydmVycyB0
aGF0IHRoZQotICAgIGVudGlyZSBhcnJheSBjb250ZW50IHdpbGwgY2hhbmdlLgotCi0gICAgQHBy
aXZhdGUKLSAgICBAbWV0aG9kIF9jb250ZW50V2lsbENoYW5nZQotICAqLwotICBfY29udGVudFdp
bGxDaGFuZ2U6IEVtYmVyLmJlZm9yZU9ic2VydmVyKCdjb250ZW50JywgZnVuY3Rpb24oKSB7Ci0g
ICAgdGhpcy5fdGVhcmRvd25Db250ZW50KCk7Ci0gIH0pLAotCi0gIF90ZWFyZG93bkNvbnRlbnQ6
IGZ1bmN0aW9uKCkgewotICAgIHZhciBjb250ZW50ID0gZ2V0KHRoaXMsICdjb250ZW50Jyk7Ci0K
LSAgICBpZiAoY29udGVudCkgewotICAgICAgY29udGVudC5yZW1vdmVBcnJheU9ic2VydmVyKHRo
aXMsIHsKLSAgICAgICAgd2lsbENoYW5nZTogJ2NvbnRlbnRBcnJheVdpbGxDaGFuZ2UnLAotICAg
ICAgICBkaWRDaGFuZ2U6ICdjb250ZW50QXJyYXlEaWRDaGFuZ2UnCi0gICAgICB9KTsKLSAgICB9
Ci0gIH0sCi0KLSAgY29udGVudEFycmF5V2lsbENoYW5nZTogRW1iZXIuSywKLSAgY29udGVudEFy
cmF5RGlkQ2hhbmdlOiBFbWJlci5LLAotCi0gIC8qKgotICAgIEludm9rZWQgd2hlbiB0aGUgY29u
dGVudCBwcm9wZXJ0eSBjaGFuZ2VzLiBOb3RpZmllcyBvYnNlcnZlcnMgdGhhdCB0aGUKLSAgICBl
bnRpcmUgYXJyYXkgY29udGVudCBoYXMgY2hhbmdlZC4KLQotICAgIEBwcml2YXRlCi0gICAgQG1l
dGhvZCBfY29udGVudERpZENoYW5nZQotICAqLwotICBfY29udGVudERpZENoYW5nZTogRW1iZXIu
b2JzZXJ2ZXIoJ2NvbnRlbnQnLCBmdW5jdGlvbigpIHsKLSAgICB2YXIgY29udGVudCA9IGdldCh0
aGlzLCAnY29udGVudCcpOwotCi0gICAgRW1iZXIuYXNzZXJ0KCJDYW4ndCBzZXQgQXJyYXlQcm94
eSdzIGNvbnRlbnQgdG8gaXRzZWxmIiwgY29udGVudCAhPT0gdGhpcyk7Ci0KLSAgICB0aGlzLl9z
ZXR1cENvbnRlbnQoKTsKLSAgfSksCi0KLSAgX3NldHVwQ29udGVudDogZnVuY3Rpb24oKSB7Ci0g
ICAgdmFyIGNvbnRlbnQgPSBnZXQodGhpcywgJ2NvbnRlbnQnKTsKLQotICAgIGlmIChjb250ZW50
KSB7Ci0gICAgICBjb250ZW50LmFkZEFycmF5T2JzZXJ2ZXIodGhpcywgewotICAgICAgICB3aWxs
Q2hhbmdlOiAnY29udGVudEFycmF5V2lsbENoYW5nZScsCi0gICAgICAgIGRpZENoYW5nZTogJ2Nv
bnRlbnRBcnJheURpZENoYW5nZScKLSAgICAgIH0pOwotICAgIH0KLSAgfSwKLQotICBfYXJyYW5n
ZWRDb250ZW50V2lsbENoYW5nZTogRW1iZXIuYmVmb3JlT2JzZXJ2ZXIoJ2FycmFuZ2VkQ29udGVu
dCcsIGZ1bmN0aW9uKCkgewotICAgIHZhciBhcnJhbmdlZENvbnRlbnQgPSBnZXQodGhpcywgJ2Fy
cmFuZ2VkQ29udGVudCcpLAotICAgICAgICBsZW4gPSBhcnJhbmdlZENvbnRlbnQgPyBnZXQoYXJy
YW5nZWRDb250ZW50LCAnbGVuZ3RoJykgOiAwOwotCi0gICAgdGhpcy5hcnJhbmdlZENvbnRlbnRB
cnJheVdpbGxDaGFuZ2UodGhpcywgMCwgbGVuLCB1bmRlZmluZWQpOwotICAgIHRoaXMuYXJyYW5n
ZWRDb250ZW50V2lsbENoYW5nZSh0aGlzKTsKLQotICAgIHRoaXMuX3RlYXJkb3duQXJyYW5nZWRD
b250ZW50KGFycmFuZ2VkQ29udGVudCk7Ci0gIH0pLAotCi0gIF9hcnJhbmdlZENvbnRlbnREaWRD
aGFuZ2U6IEVtYmVyLm9ic2VydmVyKCdhcnJhbmdlZENvbnRlbnQnLCBmdW5jdGlvbigpIHsKLSAg
ICB2YXIgYXJyYW5nZWRDb250ZW50ID0gZ2V0KHRoaXMsICdhcnJhbmdlZENvbnRlbnQnKSwKLSAg
ICAgICAgbGVuID0gYXJyYW5nZWRDb250ZW50ID8gZ2V0KGFycmFuZ2VkQ29udGVudCwgJ2xlbmd0
aCcpIDogMDsKLQotICAgIEVtYmVyLmFzc2VydCgiQ2FuJ3Qgc2V0IEFycmF5UHJveHkncyBjb250
ZW50IHRvIGl0c2VsZiIsIGFycmFuZ2VkQ29udGVudCAhPT0gdGhpcyk7Ci0KLSAgICB0aGlzLl9z
ZXR1cEFycmFuZ2VkQ29udGVudCgpOwotCi0gICAgdGhpcy5hcnJhbmdlZENvbnRlbnREaWRDaGFu
Z2UodGhpcyk7Ci0gICAgdGhpcy5hcnJhbmdlZENvbnRlbnRBcnJheURpZENoYW5nZSh0aGlzLCAw
LCB1bmRlZmluZWQsIGxlbik7Ci0gIH0pLAotCi0gIF9zZXR1cEFycmFuZ2VkQ29udGVudDogZnVu
Y3Rpb24oKSB7Ci0gICAgdmFyIGFycmFuZ2VkQ29udGVudCA9IGdldCh0aGlzLCAnYXJyYW5nZWRD
b250ZW50Jyk7Ci0KLSAgICBpZiAoYXJyYW5nZWRDb250ZW50KSB7Ci0gICAgICBhcnJhbmdlZENv
bnRlbnQuYWRkQXJyYXlPYnNlcnZlcih0aGlzLCB7Ci0gICAgICAgIHdpbGxDaGFuZ2U6ICdhcnJh
bmdlZENvbnRlbnRBcnJheVdpbGxDaGFuZ2UnLAotICAgICAgICBkaWRDaGFuZ2U6ICdhcnJhbmdl
ZENvbnRlbnRBcnJheURpZENoYW5nZScKLSAgICAgIH0pOwotICAgIH0KLSAgfSwKLQotICBfdGVh
cmRvd25BcnJhbmdlZENvbnRlbnQ6IGZ1bmN0aW9uKCkgewotICAgIHZhciBhcnJhbmdlZENvbnRl
bnQgPSBnZXQodGhpcywgJ2FycmFuZ2VkQ29udGVudCcpOwotCi0gICAgaWYgKGFycmFuZ2VkQ29u
dGVudCkgewotICAgICAgYXJyYW5nZWRDb250ZW50LnJlbW92ZUFycmF5T2JzZXJ2ZXIodGhpcywg
ewotICAgICAgICB3aWxsQ2hhbmdlOiAnYXJyYW5nZWRDb250ZW50QXJyYXlXaWxsQ2hhbmdlJywK
LSAgICAgICAgZGlkQ2hhbmdlOiAnYXJyYW5nZWRDb250ZW50QXJyYXlEaWRDaGFuZ2UnCi0gICAg
ICB9KTsKLSAgICB9Ci0gIH0sCi0KLSAgYXJyYW5nZWRDb250ZW50V2lsbENoYW5nZTogRW1iZXIu
SywKLSAgYXJyYW5nZWRDb250ZW50RGlkQ2hhbmdlOiBFbWJlci5LLAotCi0gIG9iamVjdEF0OiBm
dW5jdGlvbihpZHgpIHsKLSAgICByZXR1cm4gZ2V0KHRoaXMsICdjb250ZW50JykgJiYgdGhpcy5v
YmplY3RBdENvbnRlbnQoaWR4KTsKLSAgfSwKLQotICBsZW5ndGg6IEVtYmVyLmNvbXB1dGVkKGZ1
bmN0aW9uKCkgewotICAgIHZhciBhcnJhbmdlZENvbnRlbnQgPSBnZXQodGhpcywgJ2FycmFuZ2Vk
Q29udGVudCcpOwotICAgIHJldHVybiBhcnJhbmdlZENvbnRlbnQgPyBnZXQoYXJyYW5nZWRDb250
ZW50LCAnbGVuZ3RoJykgOiAwOwotICAgIC8vIE5vIGRlcGVuZGVuY2llcyBzaW5jZSBFbnVtZXJh
YmxlIG5vdGlmaWVzIGxlbmd0aCBvZiBjaGFuZ2UKLSAgfSksCi0KLSAgX3JlcGxhY2U6IGZ1bmN0
aW9uKGlkeCwgYW10LCBvYmplY3RzKSB7Ci0gICAgdmFyIGNvbnRlbnQgPSBnZXQodGhpcywgJ2Nv
bnRlbnQnKTsKLSAgICBFbWJlci5hc3NlcnQoJ1RoZSBjb250ZW50IHByb3BlcnR5IG9mICcrIHRo
aXMuY29uc3RydWN0b3IgKyAnIHNob3VsZCBiZSBzZXQgYmVmb3JlIG1vZGlmeWluZyBpdCcsIGNv
bnRlbnQpOwotICAgIGlmIChjb250ZW50KSB0aGlzLnJlcGxhY2VDb250ZW50KGlkeCwgYW10LCBv
YmplY3RzKTsKLSAgICByZXR1cm4gdGhpczsKLSAgfSwKLQotICByZXBsYWNlOiBmdW5jdGlvbigp
IHsKLSAgICBpZiAoZ2V0KHRoaXMsICdhcnJhbmdlZENvbnRlbnQnKSA9PT0gZ2V0KHRoaXMsICdj
b250ZW50JykpIHsKLSAgICAgIHRoaXMuX3JlcGxhY2UuYXBwbHkodGhpcywgYXJndW1lbnRzKTsK
LSAgICB9IGVsc2UgewotICAgICAgdGhyb3cgbmV3IEVtYmVyLkVycm9yKCJVc2luZyByZXBsYWNl
IG9uIGFuIGFycmFuZ2VkIEFycmF5UHJveHkgaXMgbm90IGFsbG93ZWQuIik7Ci0gICAgfQotICB9
LAotCi0gIF9pbnNlcnRBdDogZnVuY3Rpb24oaWR4LCBvYmplY3QpIHsKLSAgICBpZiAoaWR4ID4g
Z2V0KHRoaXMsICdjb250ZW50Lmxlbmd0aCcpKSB0aHJvdyBuZXcgRW1iZXIuRXJyb3IoT1VUX09G
X1JBTkdFX0VYQ0VQVElPTik7Ci0gICAgdGhpcy5fcmVwbGFjZShpZHgsIDAsIFtvYmplY3RdKTsK
LSAgICByZXR1cm4gdGhpczsKLSAgfSwKLQotICBpbnNlcnRBdDogZnVuY3Rpb24oaWR4LCBvYmpl
Y3QpIHsKLSAgICBpZiAoZ2V0KHRoaXMsICdhcnJhbmdlZENvbnRlbnQnKSA9PT0gZ2V0KHRoaXMs
ICdjb250ZW50JykpIHsKLSAgICAgIHJldHVybiB0aGlzLl9pbnNlcnRBdChpZHgsIG9iamVjdCk7
Ci0gICAgfSBlbHNlIHsKLSAgICAgIHRocm93IG5ldyBFbWJlci5FcnJvcigiVXNpbmcgaW5zZXJ0
QXQgb24gYW4gYXJyYW5nZWQgQXJyYXlQcm94eSBpcyBub3QgYWxsb3dlZC4iKTsKLSAgICB9Ci0g
IH0sCi0KLSAgcmVtb3ZlQXQ6IGZ1bmN0aW9uKHN0YXJ0LCBsZW4pIHsKLSAgICBpZiAoJ251bWJl
cicgPT09IHR5cGVvZiBzdGFydCkgewotICAgICAgdmFyIGNvbnRlbnQgPSBnZXQodGhpcywgJ2Nv
bnRlbnQnKSwKLSAgICAgICAgICBhcnJhbmdlZENvbnRlbnQgPSBnZXQodGhpcywgJ2FycmFuZ2Vk
Q29udGVudCcpLAotICAgICAgICAgIGluZGljZXMgPSBbXSwgaTsKLQotICAgICAgaWYgKChzdGFy
dCA8IDApIHx8IChzdGFydCA+PSBnZXQodGhpcywgJ2xlbmd0aCcpKSkgewotICAgICAgICB0aHJv
dyBuZXcgRW1iZXIuRXJyb3IoT1VUX09GX1JBTkdFX0VYQ0VQVElPTik7Ci0gICAgICB9Ci0KLSAg
ICAgIGlmIChsZW4gPT09IHVuZGVmaW5lZCkgbGVuID0gMTsKLQotICAgICAgLy8gR2V0IGEgbGlz
dCBvZiBpbmRpY2VzIGluIG9yaWdpbmFsIGNvbnRlbnQgdG8gcmVtb3ZlCi0gICAgICBmb3IgKGk9
c3RhcnQ7IGk8c3RhcnQrbGVuOyBpKyspIHsKLSAgICAgICAgLy8gVXNlIGFycmFuZ2VkQ29udGVu
dCBoZXJlIHNvIHdlIGF2b2lkIGNvbmZ1c2lvbiB3aXRoIG9iamVjdHMgdHJhbnNmb3JtZWQgYnkg
b2JqZWN0QXRDb250ZW50Ci0gICAgICAgIGluZGljZXMucHVzaChjb250ZW50LmluZGV4T2YoYXJy
YW5nZWRDb250ZW50Lm9iamVjdEF0KGkpKSk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIFJlcGxhY2Ug
aW4gcmV2ZXJzZSBvcmRlciBzaW5jZSBpbmRpY2VzIHdpbGwgY2hhbmdlCi0gICAgICBpbmRpY2Vz
LnNvcnQoZnVuY3Rpb24oYSxiKSB7IHJldHVybiBiIC0gYTsgfSk7Ci0KLSAgICAgIEVtYmVyLmJl
Z2luUHJvcGVydHlDaGFuZ2VzKCk7Ci0gICAgICBmb3IgKGk9MDsgaTxpbmRpY2VzLmxlbmd0aDsg
aSsrKSB7Ci0gICAgICAgIHRoaXMuX3JlcGxhY2UoaW5kaWNlc1tpXSwgMSwgRU1QVFkpOwotICAg
ICAgfQotICAgICAgRW1iZXIuZW5kUHJvcGVydHlDaGFuZ2VzKCk7Ci0gICAgfQotCi0gICAgcmV0
dXJuIHRoaXMgOwotICB9LAotCi0gIHB1c2hPYmplY3Q6IGZ1bmN0aW9uKG9iaikgewotICAgIHRo
aXMuX2luc2VydEF0KGdldCh0aGlzLCAnY29udGVudC5sZW5ndGgnKSwgb2JqKSA7Ci0gICAgcmV0
dXJuIG9iaiA7Ci0gIH0sCi0KLSAgcHVzaE9iamVjdHM6IGZ1bmN0aW9uKG9iamVjdHMpIHsKLSAg
ICBpZiAoIShFbWJlci5FbnVtZXJhYmxlLmRldGVjdChvYmplY3RzKSB8fCBFbWJlci5pc0FycmF5
KG9iamVjdHMpKSkgewotICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigiTXVzdCBwYXNzIEVtYmVy
LkVudW1lcmFibGUgdG8gRW1iZXIuTXV0YWJsZUFycmF5I3B1c2hPYmplY3RzIik7Ci0gICAgfQot
ICAgIHRoaXMuX3JlcGxhY2UoZ2V0KHRoaXMsICdsZW5ndGgnKSwgMCwgb2JqZWN0cyk7Ci0gICAg
cmV0dXJuIHRoaXM7Ci0gIH0sCi0KLSAgc2V0T2JqZWN0czogZnVuY3Rpb24ob2JqZWN0cykgewot
ICAgIGlmIChvYmplY3RzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHRoaXMuY2xlYXIoKTsKLQotICAg
IHZhciBsZW4gPSBnZXQodGhpcywgJ2xlbmd0aCcpOwotICAgIHRoaXMuX3JlcGxhY2UoMCwgbGVu
LCBvYmplY3RzKTsKLSAgICByZXR1cm4gdGhpczsKLSAgfSwKLQotICB1bnNoaWZ0T2JqZWN0OiBm
dW5jdGlvbihvYmopIHsKLSAgICB0aGlzLl9pbnNlcnRBdCgwLCBvYmopIDsKLSAgICByZXR1cm4g
b2JqIDsKLSAgfSwKLQotICB1bnNoaWZ0T2JqZWN0czogZnVuY3Rpb24ob2JqZWN0cykgewotICAg
IHRoaXMuX3JlcGxhY2UoMCwgMCwgb2JqZWN0cyk7Ci0gICAgcmV0dXJuIHRoaXM7Ci0gIH0sCi0K
LSAgc2xpY2U6IGZ1bmN0aW9uKCkgewotICAgIHZhciBhcnIgPSB0aGlzLnRvQXJyYXkoKTsKLSAg
ICByZXR1cm4gYXJyLnNsaWNlLmFwcGx5KGFyciwgYXJndW1lbnRzKTsKLSAgfSwKLQotICBhcnJh
bmdlZENvbnRlbnRBcnJheVdpbGxDaGFuZ2U6IGZ1bmN0aW9uKGl0ZW0sIGlkeCwgcmVtb3ZlZENu
dCwgYWRkZWRDbnQpIHsKLSAgICB0aGlzLmFycmF5Q29udGVudFdpbGxDaGFuZ2UoaWR4LCByZW1v
dmVkQ250LCBhZGRlZENudCk7Ci0gIH0sCi0KLSAgYXJyYW5nZWRDb250ZW50QXJyYXlEaWRDaGFu
Z2U6IGZ1bmN0aW9uKGl0ZW0sIGlkeCwgcmVtb3ZlZENudCwgYWRkZWRDbnQpIHsKLSAgICB0aGlz
LmFycmF5Q29udGVudERpZENoYW5nZShpZHgsIHJlbW92ZWRDbnQsIGFkZGVkQ250KTsKLSAgfSwK
LQotICBpbml0OiBmdW5jdGlvbigpIHsKLSAgICB0aGlzLl9zdXBlcigpOwotICAgIHRoaXMuX3Nl
dHVwQ29udGVudCgpOwotICAgIHRoaXMuX3NldHVwQXJyYW5nZWRDb250ZW50KCk7Ci0gIH0sCi0K
LSAgd2lsbERlc3Ryb3k6IGZ1bmN0aW9uKCkgewotICAgIHRoaXMuX3RlYXJkb3duQXJyYW5nZWRD
b250ZW50KCk7Ci0gICAgdGhpcy5fdGVhcmRvd25Db250ZW50KCk7Ci0gIH0KLX0pOwotCi19KSgp
OwotCi0KLQotKGZ1bmN0aW9uKCkgewotLyoqCi1AbW9kdWxlIGVtYmVyCi1Ac3VibW9kdWxlIGVt
YmVyLXJ1bnRpbWUKLSovCi0KLQotdmFyIHNldCA9IEVtYmVyLnNldCwgZ2V0ID0gRW1iZXIuZ2V0
LCBndWlkRm9yID0gRW1iZXIuZ3VpZEZvcjsKLXZhciBmb3JFYWNoID0gRW1iZXIuRW51bWVyYWJs
ZVV0aWxzLmZvckVhY2gsCi0gICAgaW5kZXhPZiA9IEVtYmVyLkFycmF5UG9seWZpbGxzLmluZGV4
T2Y7Ci0KLXZhciBFYWNoQXJyYXkgPSBFbWJlci5PYmplY3QuZXh0ZW5kKEVtYmVyLkFycmF5LCB7
Ci0KLSAgaW5pdDogZnVuY3Rpb24oY29udGVudCwga2V5TmFtZSwgb3duZXIpIHsKLSAgICB0aGlz
Ll9zdXBlcigpOwotICAgIHRoaXMuX2tleU5hbWUgPSBrZXlOYW1lOwotICAgIHRoaXMuX293bmVy
ICAgPSBvd25lcjsKLSAgICB0aGlzLl9jb250ZW50ID0gY29udGVudDsKLSAgfSwKLQotICBvYmpl
Y3RBdDogZnVuY3Rpb24oaWR4KSB7Ci0gICAgdmFyIGl0ZW0gPSB0aGlzLl9jb250ZW50Lm9iamVj
dEF0KGlkeCk7Ci0gICAgcmV0dXJuIGl0ZW0gJiYgZ2V0KGl0ZW0sIHRoaXMuX2tleU5hbWUpOwot
ICB9LAotCi0gIGxlbmd0aDogRW1iZXIuY29tcHV0ZWQoZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGNv
bnRlbnQgPSB0aGlzLl9jb250ZW50OwotICAgIHJldHVybiBjb250ZW50ID8gZ2V0KGNvbnRlbnQs
ICdsZW5ndGgnKSA6IDA7Ci0gIH0pCi0KLX0pOwotCi12YXIgSVNfT0JTRVJWRVIgPSAvXi4rOihi
ZWZvcmV8Y2hhbmdlKSQvOwotCi1mdW5jdGlvbiBhZGRPYnNlcnZlckZvckNvbnRlbnRLZXkoY29u
dGVudCwga2V5TmFtZSwgcHJveHksIGlkeCwgbG9jKSB7Ci0gIHZhciBvYmplY3RzID0gcHJveHku
X29iamVjdHMsIGd1aWQ7Ci0gIGlmICghb2JqZWN0cykgb2JqZWN0cyA9IHByb3h5Ll9vYmplY3Rz
ID0ge307Ci0KLSAgd2hpbGUoLS1sb2M+PWlkeCkgewotICAgIHZhciBpdGVtID0gY29udGVudC5v
YmplY3RBdChsb2MpOwotICAgIGlmIChpdGVtKSB7Ci0gICAgICBFbWJlci5hc3NlcnQoJ1doZW4g
dXNpbmcgQGVhY2ggdG8gb2JzZXJ2ZSB0aGUgYXJyYXkgJyArIGNvbnRlbnQgKyAnLCB0aGUgYXJy
YXkgbXVzdCByZXR1cm4gYW4gb2JqZWN0JywgRW1iZXIudHlwZU9mKGl0ZW0pID09PSAnaW5zdGFu
Y2UnIHx8IEVtYmVyLnR5cGVPZihpdGVtKSA9PT0gJ29iamVjdCcpOwotICAgICAgRW1iZXIuYWRk
QmVmb3JlT2JzZXJ2ZXIoaXRlbSwga2V5TmFtZSwgcHJveHksICdjb250ZW50S2V5V2lsbENoYW5n
ZScpOwotICAgICAgRW1iZXIuYWRkT2JzZXJ2ZXIoaXRlbSwga2V5TmFtZSwgcHJveHksICdjb250
ZW50S2V5RGlkQ2hhbmdlJyk7Ci0KLSAgICAgIC8vIGtlZXAgdHJhY2sgb2YgdGhlIGluZGV4IGVh
Y2ggaXRlbSB3YXMgZm91bmQgYXQgc28gd2UgY2FuIG1hcAotICAgICAgLy8gaXQgYmFjayB3aGVu
IHRoZSBvYmogY2hhbmdlcy4KLSAgICAgIGd1aWQgPSBndWlkRm9yKGl0ZW0pOwotICAgICAgaWYg
KCFvYmplY3RzW2d1aWRdKSBvYmplY3RzW2d1aWRdID0gW107Ci0gICAgICBvYmplY3RzW2d1aWRd
LnB1c2gobG9jKTsKLSAgICB9Ci0gIH0KLX0KLQotZnVuY3Rpb24gcmVtb3ZlT2JzZXJ2ZXJGb3JD
b250ZW50S2V5KGNvbnRlbnQsIGtleU5hbWUsIHByb3h5LCBpZHgsIGxvYykgewotICB2YXIgb2Jq
ZWN0cyA9IHByb3h5Ll9vYmplY3RzOwotICBpZiAoIW9iamVjdHMpIG9iamVjdHMgPSBwcm94eS5f
b2JqZWN0cyA9IHt9OwotICB2YXIgaW5kaWNpZXMsIGd1aWQ7Ci0KLSAgd2hpbGUoLS1sb2M+PWlk
eCkgewotICAgIHZhciBpdGVtID0gY29udGVudC5vYmplY3RBdChsb2MpOwotICAgIGlmIChpdGVt
KSB7Ci0gICAgICBFbWJlci5yZW1vdmVCZWZvcmVPYnNlcnZlcihpdGVtLCBrZXlOYW1lLCBwcm94
eSwgJ2NvbnRlbnRLZXlXaWxsQ2hhbmdlJyk7Ci0gICAgICBFbWJlci5yZW1vdmVPYnNlcnZlcihp
dGVtLCBrZXlOYW1lLCBwcm94eSwgJ2NvbnRlbnRLZXlEaWRDaGFuZ2UnKTsKLQotICAgICAgZ3Vp
ZCA9IGd1aWRGb3IoaXRlbSk7Ci0gICAgICBpbmRpY2llcyA9IG9iamVjdHNbZ3VpZF07Ci0gICAg
ICBpbmRpY2llc1tpbmRleE9mLmNhbGwoaW5kaWNpZXMsIGxvYyldID0gbnVsbDsKLSAgICB9Ci0g
IH0KLX0KLQotLyoqCi0gIFRoaXMgaXMgdGhlIG9iamVjdCBpbnN0YW5jZSByZXR1cm5lZCB3aGVu
IHlvdSBnZXQgdGhlIGBAZWFjaGAgcHJvcGVydHkgb24gYW4KLSAgYXJyYXkuIEl0IHVzZXMgdGhl
IHVua25vd25Qcm9wZXJ0eSBoYW5kbGVyIHRvIGF1dG9tYXRpY2FsbHkgY3JlYXRlCi0gIEVhY2hB
cnJheSBpbnN0YW5jZXMgZm9yIHByb3BlcnR5IG5hbWVzLgotCi0gIEBwcml2YXRlCi0gIEBjbGFz
cyBFYWNoUHJveHkKLSAgQG5hbWVzcGFjZSBFbWJlcgotICBAZXh0ZW5kcyBFbWJlci5PYmplY3QK
LSovCi1FbWJlci5FYWNoUHJveHkgPSBFbWJlci5PYmplY3QuZXh0ZW5kKHsKLQotICBpbml0OiBm
dW5jdGlvbihjb250ZW50KSB7Ci0gICAgdGhpcy5fc3VwZXIoKTsKLSAgICB0aGlzLl9jb250ZW50
ID0gY29udGVudDsKLSAgICBjb250ZW50LmFkZEFycmF5T2JzZXJ2ZXIodGhpcyk7Ci0KLSAgICAv
LyBpbiBjYXNlIHNvbWVvbmUgaXMgYWxyZWFkeSBvYnNlcnZpbmcgc29tZSBrZXlzIG1ha2Ugc3Vy
ZSB0aGV5IGFyZQotICAgIC8vIGFkZGVkCi0gICAgZm9yRWFjaChFbWJlci53YXRjaGVkRXZlbnRz
KHRoaXMpLCBmdW5jdGlvbihldmVudE5hbWUpIHsKLSAgICAgIHRoaXMuZGlkQWRkTGlzdGVuZXIo
ZXZlbnROYW1lKTsKLSAgICB9LCB0aGlzKTsKLSAgfSwKLQotICAvKioKLSAgICBZb3UgY2FuIGRp
cmVjdGx5IGFjY2VzcyBtYXBwZWQgcHJvcGVydGllcyBieSBzaW1wbHkgcmVxdWVzdGluZyB0aGVt
LgotICAgIFRoZSBgdW5rbm93blByb3BlcnR5YCBoYW5kbGVyIHdpbGwgZ2VuZXJhdGUgYW4gRWFj
aEFycmF5IG9mIGVhY2ggaXRlbS4KLQotICAgIEBtZXRob2QgdW5rbm93blByb3BlcnR5Ci0gICAg
QHBhcmFtIGtleU5hbWUge1N0cmluZ30KLSAgICBAcGFyYW0gdmFsdWUgeyp9Ci0gICovCi0gIHVu
a25vd25Qcm9wZXJ0eTogZnVuY3Rpb24oa2V5TmFtZSwgdmFsdWUpIHsKLSAgICB2YXIgcmV0Owot
ICAgIHJldCA9IG5ldyBFYWNoQXJyYXkodGhpcy5fY29udGVudCwga2V5TmFtZSwgdGhpcyk7Ci0g
ICAgRW1iZXIuZGVmaW5lUHJvcGVydHkodGhpcywga2V5TmFtZSwgbnVsbCwgcmV0KTsKLSAgICB0
aGlzLmJlZ2luT2JzZXJ2aW5nQ29udGVudEtleShrZXlOYW1lKTsKLSAgICByZXR1cm4gcmV0Owot
ICB9LAotCi0gIC8vIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4KLSAgLy8gQVJSQVkgQ0hBTkdFUwotICAvLyBJbnZva2VzIHdoZW5ldmVy
IHRoZSBjb250ZW50IGFycmF5IGl0c2VsZiBjaGFuZ2VzLgotCi0gIGFycmF5V2lsbENoYW5nZTog
ZnVuY3Rpb24oY29udGVudCwgaWR4LCByZW1vdmVkQ250LCBhZGRlZENudCkgewotICAgIHZhciBr
ZXlzID0gdGhpcy5fa2V5cywga2V5LCBsaW07Ci0KLSAgICBsaW0gPSByZW1vdmVkQ250PjAgPyBp
ZHgrcmVtb3ZlZENudCA6IC0xOwotICAgIEVtYmVyLmJlZ2luUHJvcGVydHlDaGFuZ2VzKHRoaXMp
OwotCi0gICAgZm9yKGtleSBpbiBrZXlzKSB7Ci0gICAgICBpZiAoIWtleXMuaGFzT3duUHJvcGVy
dHkoa2V5KSkgeyBjb250aW51ZTsgfQotCi0gICAgICBpZiAobGltPjApIHsgcmVtb3ZlT2JzZXJ2
ZXJGb3JDb250ZW50S2V5KGNvbnRlbnQsIGtleSwgdGhpcywgaWR4LCBsaW0pOyB9Ci0KLSAgICAg
IEVtYmVyLnByb3BlcnR5V2lsbENoYW5nZSh0aGlzLCBrZXkpOwotICAgIH0KLQotICAgIEVtYmVy
LnByb3BlcnR5V2lsbENoYW5nZSh0aGlzLl9jb250ZW50LCAnQGVhY2gnKTsKLSAgICBFbWJlci5l
bmRQcm9wZXJ0eUNoYW5nZXModGhpcyk7Ci0gIH0sCi0KLSAgYXJyYXlEaWRDaGFuZ2U6IGZ1bmN0
aW9uKGNvbnRlbnQsIGlkeCwgcmVtb3ZlZENudCwgYWRkZWRDbnQpIHsKLSAgICB2YXIga2V5cyA9
IHRoaXMuX2tleXMsIGxpbTsKLQotICAgIGxpbSA9IGFkZGVkQ250PjAgPyBpZHgrYWRkZWRDbnQg
OiAtMTsKLSAgICBFbWJlci5jaGFuZ2VQcm9wZXJ0aWVzKGZ1bmN0aW9uKCkgewotICAgICAgZm9y
KHZhciBrZXkgaW4ga2V5cykgewotICAgICAgICBpZiAoIWtleXMuaGFzT3duUHJvcGVydHkoa2V5
KSkgeyBjb250aW51ZTsgfQotCi0gICAgICAgIGlmIChsaW0+MCkgeyBhZGRPYnNlcnZlckZvckNv
bnRlbnRLZXkoY29udGVudCwga2V5LCB0aGlzLCBpZHgsIGxpbSk7IH0KLQotICAgICAgICBFbWJl
ci5wcm9wZXJ0eURpZENoYW5nZSh0aGlzLCBrZXkpOwotICAgICAgfQotCi0gICAgICBFbWJlci5w
cm9wZXJ0eURpZENoYW5nZSh0aGlzLl9jb250ZW50LCAnQGVhY2gnKTsKLSAgICB9LCB0aGlzKTsK
LSAgfSwKLQotICAvLyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uCi0gIC8vIExJU1RFTiBGT1IgTkVXIE9CU0VSVkVSUyBBTkQgT1RIRVIg
RVZFTlQgTElTVEVORVJTCi0gIC8vIFN0YXJ0IG1vbml0b3Jpbmcga2V5cyBiYXNlZCBvbiB3aG8g
aXMgbGlzdGVuaW5nLi4uCi0KLSAgZGlkQWRkTGlzdGVuZXI6IGZ1bmN0aW9uKGV2ZW50TmFtZSkg
ewotICAgIGlmIChJU19PQlNFUlZFUi50ZXN0KGV2ZW50TmFtZSkpIHsKLSAgICAgIHRoaXMuYmVn
aW5PYnNlcnZpbmdDb250ZW50S2V5KGV2ZW50TmFtZS5zbGljZSgwLCAtNykpOwotICAgIH0KLSAg
fSwKLQotICBkaWRSZW1vdmVMaXN0ZW5lcjogZnVuY3Rpb24oZXZlbnROYW1lKSB7Ci0gICAgaWYg
KElTX09CU0VSVkVSLnRlc3QoZXZlbnROYW1lKSkgewotICAgICAgdGhpcy5zdG9wT2JzZXJ2aW5n
Q29udGVudEtleShldmVudE5hbWUuc2xpY2UoMCwgLTcpKTsKLSAgICB9Ci0gIH0sCi0KLSAgLy8g
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
LgotICAvLyBDT05URU5UIEtFWSBPQlNFUlZJTkcKLSAgLy8gQWN0dWFsIHdhdGNoIGtleXMgb24g
dGhlIHNvdXJjZSBjb250ZW50LgotCi0gIGJlZ2luT2JzZXJ2aW5nQ29udGVudEtleTogZnVuY3Rp
b24oa2V5TmFtZSkgewotICAgIHZhciBrZXlzID0gdGhpcy5fa2V5czsKLSAgICBpZiAoIWtleXMp
IGtleXMgPSB0aGlzLl9rZXlzID0ge307Ci0gICAgaWYgKCFrZXlzW2tleU5hbWVdKSB7Ci0gICAg
ICBrZXlzW2tleU5hbWVdID0gMTsKLSAgICAgIHZhciBjb250ZW50ID0gdGhpcy5fY29udGVudCwK
LSAgICAgICAgICBsZW4gPSBnZXQoY29udGVudCwgJ2xlbmd0aCcpOwotICAgICAgYWRkT2JzZXJ2
ZXJGb3JDb250ZW50S2V5KGNvbnRlbnQsIGtleU5hbWUsIHRoaXMsIDAsIGxlbik7Ci0gICAgfSBl
bHNlIHsKLSAgICAgIGtleXNba2V5TmFtZV0rKzsKLSAgICB9Ci0gIH0sCi0KLSAgc3RvcE9ic2Vy
dmluZ0NvbnRlbnRLZXk6IGZ1bmN0aW9uKGtleU5hbWUpIHsKLSAgICB2YXIga2V5cyA9IHRoaXMu
X2tleXM7Ci0gICAgaWYgKGtleXMgJiYgKGtleXNba2V5TmFtZV0+MCkgJiYgKC0ta2V5c1trZXlO
YW1lXTw9MCkpIHsKLSAgICAgIHZhciBjb250ZW50ID0gdGhpcy5fY29udGVudCwKLSAgICAgICAg
ICBsZW4gICAgID0gZ2V0KGNvbnRlbnQsICdsZW5ndGgnKTsKLSAgICAgIHJlbW92ZU9ic2VydmVy
Rm9yQ29udGVudEtleShjb250ZW50LCBrZXlOYW1lLCB0aGlzLCAwLCBsZW4pOwotICAgIH0KLSAg
fSwKLQotICBjb250ZW50S2V5V2lsbENoYW5nZTogZnVuY3Rpb24ob2JqLCBrZXlOYW1lKSB7Ci0g
ICAgRW1iZXIucHJvcGVydHlXaWxsQ2hhbmdlKHRoaXMsIGtleU5hbWUpOwotICB9LAotCi0gIGNv
bnRlbnRLZXlEaWRDaGFuZ2U6IGZ1bmN0aW9uKG9iaiwga2V5TmFtZSkgewotICAgIEVtYmVyLnBy
b3BlcnR5RGlkQ2hhbmdlKHRoaXMsIGtleU5hbWUpOwotICB9Ci0KLX0pOwotCi0KLQotfSkoKTsK
LQotCi0KLShmdW5jdGlvbigpIHsKLS8qKgotQG1vZHVsZSBlbWJlcgotQHN1Ym1vZHVsZSBlbWJl
ci1ydW50aW1lCi0qLwotCi0KLXZhciBnZXQgPSBFbWJlci5nZXQsIHNldCA9IEVtYmVyLnNldCwg
cmVwbGFjZSA9IEVtYmVyLkVudW1lcmFibGVVdGlscy5fcmVwbGFjZTsKLQotLy8gQWRkIEVtYmVy
LkFycmF5IHRvIEFycmF5LnByb3RvdHlwZS4gUmVtb3ZlIG1ldGhvZHMgd2l0aCBuYXRpdmUKLS8v
IGltcGxlbWVudGF0aW9ucyBhbmQgc3VwcGx5IHNvbWUgbW9yZSBvcHRpbWl6ZWQgdmVyc2lvbnMg
b2YgZ2VuZXJpYyBtZXRob2RzCi0vLyBiZWNhdXNlIHRoZXkgYXJlIHNvIGNvbW1vbi4KLXZhciBO
YXRpdmVBcnJheSA9IEVtYmVyLk1peGluLmNyZWF0ZShFbWJlci5NdXRhYmxlQXJyYXksIEVtYmVy
Lk9ic2VydmFibGUsIEVtYmVyLkNvcHlhYmxlLCB7Ci0KLSAgLy8gYmVjYXVzZSBsZW5ndGggaXMg
YSBidWlsdC1pbiBwcm9wZXJ0eSB3ZSBuZWVkIHRvIGtub3cgdG8ganVzdCBnZXQgdGhlCi0gIC8v
IG9yaWdpbmFsIHByb3BlcnR5LgotICBnZXQ6IGZ1bmN0aW9uKGtleSkgewotICAgIGlmIChrZXk9
PT0nbGVuZ3RoJykgcmV0dXJuIHRoaXMubGVuZ3RoOwotICAgIGVsc2UgaWYgKCdudW1iZXInID09
PSB0eXBlb2Yga2V5KSByZXR1cm4gdGhpc1trZXldOwotICAgIGVsc2UgcmV0dXJuIHRoaXMuX3N1
cGVyKGtleSk7Ci0gIH0sCi0KLSAgb2JqZWN0QXQ6IGZ1bmN0aW9uKGlkeCkgewotICAgIHJldHVy
biB0aGlzW2lkeF07Ci0gIH0sCi0KLSAgLy8gcHJpbWl0aXZlIGZvciBhcnJheSBzdXBwb3J0Lgot
ICByZXBsYWNlOiBmdW5jdGlvbihpZHgsIGFtdCwgb2JqZWN0cykgewotCi0gICAgaWYgKHRoaXMu
aXNGcm96ZW4pIHRocm93IEVtYmVyLkZST1pFTl9FUlJPUjsKLQotICAgIC8vIGlmIHdlIHJlcGxh
Y2VkIGV4YWN0bHkgdGhlIHNhbWUgbnVtYmVyIG9mIGl0ZW1zLCB0aGVuIHBhc3Mgb25seSB0aGUK
LSAgICAvLyByZXBsYWNlZCByYW5nZS4gT3RoZXJ3aXNlLCBwYXNzIHRoZSBmdWxsIHJlbWFpbmlu
ZyBhcnJheSBsZW5ndGgKLSAgICAvLyBzaW5jZSBldmVyeXRoaW5nIGhhcyBzaGlmdGVkCi0gICAg
dmFyIGxlbiA9IG9iamVjdHMgPyBnZXQob2JqZWN0cywgJ2xlbmd0aCcpIDogMDsKLSAgICB0aGlz
LmFycmF5Q29udGVudFdpbGxDaGFuZ2UoaWR4LCBhbXQsIGxlbik7Ci0KLSAgICBpZiAobGVuID09
PSAwKSB7Ci0gICAgICB0aGlzLnNwbGljZShpZHgsIGFtdCk7Ci0gICAgfSBlbHNlIHsKLSAgICAg
IHJlcGxhY2UodGhpcywgaWR4LCBhbXQsIG9iamVjdHMpOwotICAgIH0KLQotICAgIHRoaXMuYXJy
YXlDb250ZW50RGlkQ2hhbmdlKGlkeCwgYW10LCBsZW4pOwotICAgIHJldHVybiB0aGlzOwotICB9
LAotCi0gIC8vIElmIHlvdSBhc2sgZm9yIGFuIHVua25vd24gcHJvcGVydHksIHRoZW4gdHJ5IHRv
IGNvbGxlY3QgdGhlIHZhbHVlCi0gIC8vIGZyb20gbWVtYmVyIGl0ZW1zLgotICB1bmtub3duUHJv
cGVydHk6IGZ1bmN0aW9uKGtleSwgdmFsdWUpIHsKLSAgICB2YXIgcmV0Oy8vID0gdGhpcy5yZWR1
Y2VkUHJvcGVydHkoa2V5LCB2YWx1ZSkgOwotICAgIGlmICgodmFsdWUgIT09IHVuZGVmaW5lZCkg
JiYgcmV0ID09PSB1bmRlZmluZWQpIHsKLSAgICAgIHJldCA9IHRoaXNba2V5XSA9IHZhbHVlOwot
ICAgIH0KLSAgICByZXR1cm4gcmV0IDsKLSAgfSwKLQotICAvLyBJZiBicm93c2VyIGRpZCBub3Qg
aW1wbGVtZW50IGluZGV4T2YgbmF0aXZlbHksIHRoZW4gb3ZlcnJpZGUgd2l0aAotICAvLyBzcGVj
aWFsaXplZCB2ZXJzaW9uCi0gIGluZGV4T2Y6IGZ1bmN0aW9uKG9iamVjdCwgc3RhcnRBdCkgewot
ICAgIHZhciBpZHgsIGxlbiA9IHRoaXMubGVuZ3RoOwotCi0gICAgaWYgKHN0YXJ0QXQgPT09IHVu
ZGVmaW5lZCkgc3RhcnRBdCA9IDA7Ci0gICAgZWxzZSBzdGFydEF0ID0gKHN0YXJ0QXQgPCAwKSA/
IE1hdGguY2VpbChzdGFydEF0KSA6IE1hdGguZmxvb3Ioc3RhcnRBdCk7Ci0gICAgaWYgKHN0YXJ0
QXQgPCAwKSBzdGFydEF0ICs9IGxlbjsKLQotICAgIGZvcihpZHg9c3RhcnRBdDtpZHg8bGVuO2lk
eCsrKSB7Ci0gICAgICBpZiAodGhpc1tpZHhdID09PSBvYmplY3QpIHJldHVybiBpZHggOwotICAg
IH0KLSAgICByZXR1cm4gLTE7Ci0gIH0sCi0KLSAgbGFzdEluZGV4T2Y6IGZ1bmN0aW9uKG9iamVj
dCwgc3RhcnRBdCkgewotICAgIHZhciBpZHgsIGxlbiA9IHRoaXMubGVuZ3RoOwotCi0gICAgaWYg
KHN0YXJ0QXQgPT09IHVuZGVmaW5lZCkgc3RhcnRBdCA9IGxlbi0xOwotICAgIGVsc2Ugc3RhcnRB
dCA9IChzdGFydEF0IDwgMCkgPyBNYXRoLmNlaWwoc3RhcnRBdCkgOiBNYXRoLmZsb29yKHN0YXJ0
QXQpOwotICAgIGlmIChzdGFydEF0IDwgMCkgc3RhcnRBdCArPSBsZW47Ci0KLSAgICBmb3IoaWR4
PXN0YXJ0QXQ7aWR4Pj0wO2lkeC0tKSB7Ci0gICAgICBpZiAodGhpc1tpZHhdID09PSBvYmplY3Qp
IHJldHVybiBpZHggOwotICAgIH0KLSAgICByZXR1cm4gLTE7Ci0gIH0sCi0KLSAgY29weTogZnVu
Y3Rpb24oZGVlcCkgewotICAgIGlmIChkZWVwKSB7Ci0gICAgICByZXR1cm4gdGhpcy5tYXAoZnVu
Y3Rpb24oaXRlbSkgeyByZXR1cm4gRW1iZXIuY29weShpdGVtLCB0cnVlKTsgfSk7Ci0gICAgfQot
Ci0gICAgcmV0dXJuIHRoaXMuc2xpY2UoKTsKLSAgfQotfSk7Ci0KLS8vIFJlbW92ZSBhbnkgbWV0
aG9kcyBpbXBsZW1lbnRlZCBuYXRpdmVseSBzbyB3ZSBkb24ndCBvdmVycmlkZSB0aGVtCi12YXIg
aWdub3JlID0gWydsZW5ndGgnXTsKLUVtYmVyLkVudW1lcmFibGVVdGlscy5mb3JFYWNoKE5hdGl2
ZUFycmF5LmtleXMoKSwgZnVuY3Rpb24obWV0aG9kTmFtZSkgewotICBpZiAoQXJyYXkucHJvdG90
eXBlW21ldGhvZE5hbWVdKSBpZ25vcmUucHVzaChtZXRob2ROYW1lKTsKLX0pOwotCi1pZiAoaWdu
b3JlLmxlbmd0aD4wKSB7Ci0gIE5hdGl2ZUFycmF5ID0gTmF0aXZlQXJyYXkud2l0aG91dC5hcHBs
eShOYXRpdmVBcnJheSwgaWdub3JlKTsKLX0KLQotLyoqCi0gIFRoZSBOYXRpdmVBcnJheSBtaXhp
biBjb250YWlucyB0aGUgcHJvcGVydGllcyBuZWVkZWQgdG8gdG8gbWFrZSB0aGUgbmF0aXZlCi0g
IEFycmF5IHN1cHBvcnQgRW1iZXIuTXV0YWJsZUFycmF5IGFuZCBhbGwgb2YgaXRzIGRlcGVuZGVu
dCBBUElzLiBVbmxlc3MgeW91Ci0gIGhhdmUgYEVtYmVyLkVYVEVORF9QUk9UT1RZUEVTYCBvciBg
RW1iZXIuRVhURU5EX1BST1RPVFlQRVMuQXJyYXlgIHNldCB0bwotICBmYWxzZSwgdGhpcyB3aWxs
IGJlIGFwcGxpZWQgYXV0b21hdGljYWxseS4gT3RoZXJ3aXNlIHlvdSBjYW4gYXBwbHkgdGhlIG1p
eGluCi0gIGF0IGFueXRpbWUgYnkgY2FsbGluZyBgRW1iZXIuTmF0aXZlQXJyYXkuYWN0aXZhdGVg
LgotCi0gIEBjbGFzcyBOYXRpdmVBcnJheQotICBAbmFtZXNwYWNlIEVtYmVyCi0gIEB1c2VzIEVt
YmVyLk11dGFibGVBcnJheQotICBAdXNlcyBFbWJlci5PYnNlcnZhYmxlCi0gIEB1c2VzIEVtYmVy
LkNvcHlhYmxlCi0qLwotRW1iZXIuTmF0aXZlQXJyYXkgPSBOYXRpdmVBcnJheTsKLQotLyoqCi0g
IENyZWF0ZXMgYW4gYEVtYmVyLk5hdGl2ZUFycmF5YCBmcm9tIGFuIEFycmF5IGxpa2Ugb2JqZWN0
LgotICBEb2VzIG5vdCBtb2RpZnkgdGhlIG9yaWdpbmFsIG9iamVjdC4gRW1iZXIuQSBpcyBub3Qg
bmVlZGVkIGlmCi0gIGBFbWJlci5FWFRFTkRfUFJPVE9UWVBFU2AgaXMgYHRydWVgICh0aGUgZGVm
YXVsdCB2YWx1ZSkuIEhvd2V2ZXIsCi0gIGl0IGlzIHJlY29tbWVuZGVkIHRoYXQgeW91IHVzZSBF
bWJlci5BIHdoZW4gY3JlYXRpbmcgYWRkb25zIGZvcgotICBlbWJlciBvciB3aGVuIHlvdSBjYW4g
bm90IGd1YXJhbnRlZSB0aGF0IGBFbWJlci5FWFRFTkRfUFJPVE9UWVBFU2AKLSAgd2lsbCBiZSBg
dHJ1ZWAuCi0KLSAgRXhhbXBsZQotCi0gIGBgYGpzCi0gIHZhciBQYWdpbmF0aW9uID0gRW1iZXIu
Q29sbGVjdGlvblZpZXcuZXh0ZW5kKHsKLSAgICB0YWdOYW1lOiAndWwnLAotICAgIGNsYXNzTmFt
ZXM6IFsncGFnaW5hdGlvbiddLAotICAgIGluaXQ6IGZ1bmN0aW9uKCkgewotICAgICAgdGhpcy5f
c3VwZXIoKTsKLSAgICAgIGlmICghdGhpcy5nZXQoJ2NvbnRlbnQnKSkgewotICAgICAgICB0aGlz
LnNldCgnY29udGVudCcsIEVtYmVyLkEoW10pKTsKLSAgICAgIH0KLSAgICB9Ci0gIH0pOwotICBg
YGAKLQotICBAbWV0aG9kIEEKLSAgQGZvciBFbWJlcgotICBAcmV0dXJuIHtFbWJlci5OYXRpdmVB
cnJheX0KLSovCi1FbWJlci5BID0gZnVuY3Rpb24oYXJyKSB7Ci0gIGlmIChhcnIgPT09IHVuZGVm
aW5lZCkgeyBhcnIgPSBbXTsgfQotICByZXR1cm4gRW1iZXIuQXJyYXkuZGV0ZWN0KGFycikgPyBh
cnIgOiBFbWJlci5OYXRpdmVBcnJheS5hcHBseShhcnIpOwotfTsKLQotLyoqCi0gIEFjdGl2YXRl
cyB0aGUgbWl4aW4gb24gdGhlIEFycmF5LnByb3RvdHlwZSBpZiBub3QgYWxyZWFkeSBhcHBsaWVk
LiBDYWxsaW5nCi0gIHRoaXMgbWV0aG9kIG1vcmUgdGhhbiBvbmNlIGlzIHNhZmUuIFRoaXMgd2ls
bCBiZSBjYWxsZWQgd2hlbiBlbWJlciBpcyBsb2FkZWQKLSAgdW5sZXNzIHlvdSBoYXZlIGBFbWJl
ci5FWFRFTkRfUFJPVE9UWVBFU2Agb3IgYEVtYmVyLkVYVEVORF9QUk9UT1RZUEVTLkFycmF5YAot
ICBzZXQgdG8gYGZhbHNlYC4KLQotICBFeGFtcGxlCi0KLSAgYGBganMKLSAgaWYgKEVtYmVyLkVY
VEVORF9QUk9UT1RZUEVTID09PSB0cnVlIHx8IEVtYmVyLkVYVEVORF9QUk9UT1RZUEVTLkFycmF5
KSB7Ci0gICAgRW1iZXIuTmF0aXZlQXJyYXkuYWN0aXZhdGUoKTsKLSAgfQotICBgYGAKLQotICBA
bWV0aG9kIGFjdGl2YXRlCi0gIEBmb3IgRW1iZXIuTmF0aXZlQXJyYXkKLSAgQHN0YXRpYwotICBA
cmV0dXJuIHt2b2lkfQotKi8KLUVtYmVyLk5hdGl2ZUFycmF5LmFjdGl2YXRlID0gZnVuY3Rpb24o
KSB7Ci0gIE5hdGl2ZUFycmF5LmFwcGx5KEFycmF5LnByb3RvdHlwZSk7Ci0KLSAgRW1iZXIuQSA9
IGZ1bmN0aW9uKGFycikgeyByZXR1cm4gYXJyIHx8IFtdOyB9OwotfTsKLQotaWYgKEVtYmVyLkVY
VEVORF9QUk9UT1RZUEVTID09PSB0cnVlIHx8IEVtYmVyLkVYVEVORF9QUk9UT1RZUEVTLkFycmF5
KSB7Ci0gIEVtYmVyLk5hdGl2ZUFycmF5LmFjdGl2YXRlKCk7Ci19Ci0KLQotfSkoKTsKLQotCi0K
LShmdW5jdGlvbigpIHsKLS8qKgotQG1vZHVsZSBlbWJlcgotQHN1Ym1vZHVsZSBlbWJlci1ydW50
aW1lCi0qLwotCi12YXIgZ2V0ID0gRW1iZXIuZ2V0LCBzZXQgPSBFbWJlci5zZXQsIGd1aWRGb3Ig
PSBFbWJlci5ndWlkRm9yLCBpc05vbmUgPSBFbWJlci5pc05vbmUsIGZtdCA9IEVtYmVyLlN0cmlu
Zy5mbXQ7Ci0KLS8qKgotICBBbiB1bm9yZGVyZWQgY29sbGVjdGlvbiBvZiBvYmplY3RzLgotCi0g
IEEgU2V0IHdvcmtzIGEgYml0IGxpa2UgYW4gYXJyYXkgZXhjZXB0IHRoYXQgaXRzIGl0ZW1zIGFy
ZSBub3Qgb3JkZXJlZC4gWW91Ci0gIGNhbiBjcmVhdGUgYSBzZXQgdG8gZWZmaWNpZW50bHkgdGVz
dCBmb3IgbWVtYmVyc2hpcCBmb3IgYW4gb2JqZWN0LiBZb3UgY2FuCi0gIGFsc28gaXRlcmF0ZSB0
aHJvdWdoIGEgc2V0IGp1c3QgbGlrZSBhbiBhcnJheSwgZXZlbiBhY2Nlc3Npbmcgb2JqZWN0cyBi
eQotICBpbmRleCwgaG93ZXZlciB0aGVyZSBpcyBubyBndWFyYW50ZWUgYXMgdG8gdGhlaXIgb3Jk
ZXIuCi0KLSAgQWxsIFNldHMgYXJlIG9ic2VydmFibGUgdmlhIHRoZSBFbnVtZXJhYmxlIE9ic2Vy
dmVyIEFQSSAtIHdoaWNoIHdvcmtzCi0gIG9uIGFueSBlbnVtZXJhYmxlIG9iamVjdCBpbmNsdWRp
bmcgYm90aCBTZXRzIGFuZCBBcnJheXMuCi0KLSAgIyMgQ3JlYXRpbmcgYSBTZXQKLQotICBZb3Ug
Y2FuIGNyZWF0ZSBhIHNldCBsaWtlIHlvdSB3b3VsZCBtb3N0IG9iamVjdHMgdXNpbmcKLSAgYG5l
dyBFbWJlci5TZXQoKWAuIE1vc3QgbmV3IHNldHMgeW91IGNyZWF0ZSB3aWxsIGJlIGVtcHR5LCBi
dXQgeW91IGNhbgotICBhbHNvIGluaXRpYWxpemUgdGhlIHNldCB3aXRoIHNvbWUgY29udGVudCBi
eSBwYXNzaW5nIGFuIGFycmF5IG9yIG90aGVyCi0gIGVudW1lcmFibGUgb2Ygb2JqZWN0cyB0byB0
aGUgY29uc3RydWN0b3IuCi0KLSAgRmluYWxseSwgeW91IGNhbiBwYXNzIGluIGFuIGV4aXN0aW5n
IHNldCBhbmQgdGhlIHNldCB3aWxsIGJlIGNvcGllZC4gWW91Ci0gIGNhbiBhbHNvIGNyZWF0ZSBh
IGNvcHkgb2YgYSBzZXQgYnkgY2FsbGluZyBgRW1iZXIuU2V0I2NvcHkoKWAuCi0KLSAgYGBgamF2
YXNjcmlwdAotICAvLyBjcmVhdGVzIGEgbmV3IGVtcHR5IHNldAotICB2YXIgZm91bmROYW1lcyA9
IG5ldyBFbWJlci5TZXQoKTsKLQotICAvLyBjcmVhdGVzIGEgc2V0IHdpdGggZm91ciBuYW1lcyBp
biBpdC4KLSAgdmFyIG5hbWVzID0gbmV3IEVtYmVyLlNldChbIkNoYXJsZXMiLCAiVG9tIiwgIkp1
YW4iLCAiQWxleCJdKTsgLy8gOlAKLQotICAvLyBjcmVhdGVzIGEgY29weSBvZiB0aGUgbmFtZXMg
c2V0LgotICB2YXIgbmFtZXNDb3B5ID0gbmV3IEVtYmVyLlNldChuYW1lcyk7Ci0KLSAgLy8gc2Ft
ZSBhcyBhYm92ZS4KLSAgdmFyIGFub3RoZXJOYW1lc0NvcHkgPSBuYW1lcy5jb3B5KCk7Ci0gIGBg
YAotCi0gICMjIEFkZGluZy9SZW1vdmluZyBPYmplY3RzCi0KLSAgWW91IGdlbmVyYWxseSBhZGQg
b3IgcmVtb3ZlIG9iamVjdHMgZnJvbSBhIHNldCB1c2luZyBgYWRkKClgIG9yCi0gIGByZW1vdmUo
KWAuIFlvdSBjYW4gYWRkIGFueSB0eXBlIG9mIG9iamVjdCBpbmNsdWRpbmcgcHJpbWl0aXZlcyBz
dWNoIGFzCi0gIG51bWJlcnMsIHN0cmluZ3MsIGFuZCBib29sZWFucy4KLQotICBVbmxpa2UgYXJy
YXlzLCBvYmplY3RzIGNhbiBvbmx5IGV4aXN0IG9uZSB0aW1lIGluIGEgc2V0LiBJZiB5b3UgY2Fs
bCBgYWRkKClgCi0gIG9uIGEgc2V0IHdpdGggdGhlIHNhbWUgb2JqZWN0IG11bHRpcGxlIHRpbWVz
LCB0aGUgb2JqZWN0IHdpbGwgb25seSBiZSBhZGRlZAotICBvbmNlLiBMaWtld2lzZSwgY2FsbGlu
ZyBgcmVtb3ZlKClgIHdpdGggdGhlIHNhbWUgb2JqZWN0IG11bHRpcGxlIHRpbWVzIHdpbGwKLSAg
cmVtb3ZlIHRoZSBvYmplY3QgdGhlIGZpcnN0IHRpbWUgYW5kIGhhdmUgbm8gZWZmZWN0IG9uIGZ1
dHVyZSBjYWxscyB1bnRpbAotICB5b3UgYWRkIHRoZSBvYmplY3QgdG8gdGhlIHNldCBhZ2Fpbi4K
LQotICBOT1RFOiBZb3UgY2Fubm90IGFkZC9yZW1vdmUgYG51bGxgIG9yIGB1bmRlZmluZWRgIHRv
IGEgc2V0LiBBbnkgYXR0ZW1wdCB0byBkbwotICBzbyB3aWxsIGJlIGlnbm9yZWQuCi0KLSAgSW4g
YWRkaXRpb24gdG8gYWRkL3JlbW92ZSB5b3UgY2FuIGFsc28gY2FsbCBgcHVzaCgpYC9gcG9wKClg
LiBQdXNoIGJlaGF2ZXMKLSAganVzdCBsaWtlIGBhZGQoKWAgYnV0IGBwb3AoKWAsIHVubGlrZSBg
cmVtb3ZlKClgIHdpbGwgcGljayBhbiBhcmJpdHJhcnkKLSAgb2JqZWN0LCByZW1vdmUgaXQgYW5k
IHJldHVybiBpdC4gVGhpcyBpcyBhIGdvb2Qgd2F5IHRvIHVzZSBhIHNldCBhcyBhIGpvYgotICBx
dWV1ZSB3aGVuIHlvdSBkb24ndCBjYXJlIHdoaWNoIG9yZGVyIHRoZSBqb2JzIGFyZSBleGVjdXRl
ZCBpbi4KLQotICAjIyBUZXN0aW5nIGZvciBhbiBPYmplY3QKLQotICBUbyB0ZXN0IGZvciBhbiBv
YmplY3QncyBwcmVzZW5jZSBpbiBhIHNldCB5b3Ugc2ltcGx5IGNhbGwKLSAgYEVtYmVyLlNldCNj
b250YWlucygpYC4KLQotICAjIyBPYnNlcnZpbmcgY2hhbmdlcwotCi0gIFdoZW4gdXNpbmcgYEVt
YmVyLlNldGAsIHlvdSBjYW4gb2JzZXJ2ZSB0aGUgYCJbXSJgIHByb3BlcnR5IHRvIGJlCi0gIGFs
ZXJ0ZWQgd2hlbmV2ZXIgdGhlIGNvbnRlbnQgY2hhbmdlcy4gWW91IGNhbiBhbHNvIGFkZCBhbiBl
bnVtZXJhYmxlCi0gIG9ic2VydmVyIHRvIHRoZSBzZXQgdG8gYmUgbm90aWZpZWQgb2Ygc3BlY2lm
aWMgb2JqZWN0cyB0aGF0IGFyZSBhZGRlZCBhbmQKLSAgcmVtb3ZlZCBmcm9tIHRoZSBzZXQuIFNl
ZSBbRW1iZXIuRW51bWVyYWJsZV0oL2FwaS9jbGFzc2VzL0VtYmVyLkVudW1lcmFibGUuaHRtbCkK
LSAgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gZW51bWVyYWJsZXMuCi0KLSAgVGhpcyBpcyBvZnRl
biB1bmhlbHBmdWwuIElmIHlvdSBhcmUgZmlsdGVyaW5nIHNldHMgb2Ygb2JqZWN0cywgZm9yIGlu
c3RhbmNlLAotICBpdCBpcyB2ZXJ5IGluZWZmaWNpZW50IHRvIHJlLWZpbHRlciBhbGwgb2YgdGhl
IGl0ZW1zIGVhY2ggdGltZSB0aGUgc2V0Ci0gIGNoYW5nZXMuIEl0IHdvdWxkIGJlIGJldHRlciBp
ZiB5b3UgY291bGQganVzdCBhZGp1c3QgdGhlIGZpbHRlcmVkIHNldCBiYXNlZAotICBvbiB3aGF0
IHdhcyBjaGFuZ2VkIG9uIHRoZSBvcmlnaW5hbCBzZXQuIFRoZSBzYW1lIGlzc3VlIGFwcGxpZXMg
dG8gbWVyZ2luZwotICBzZXRzLCBhcyB3ZWxsLgotCi0gICMjIE90aGVyIE1ldGhvZHMKLQotICBg
RW1iZXIuU2V0YCBwcmltYXJ5IGltcGxlbWVudHMgb3RoZXIgbWl4aW4gQVBJcy4gRm9yIGEgY29t
cGxldGUgcmVmZXJlbmNlCi0gIG9uIHRoZSBtZXRob2RzIHlvdSB3aWxsIHVzZSB3aXRoIGBFbWJl
ci5TZXRgLCBwbGVhc2UgY29uc3VsdCB0aGVzZSBtaXhpbnMuCi0gIFRoZSBtb3N0IHVzZWZ1bCBv
bmVzIHdpbGwgYmUgYEVtYmVyLkVudW1lcmFibGVgIGFuZAotICBgRW1iZXIuTXV0YWJsZUVudW1l
cmFibGVgIHdoaWNoIGltcGxlbWVudCBtb3N0IG9mIHRoZSBjb21tb24gaXRlcmF0b3IKLSAgbWV0
aG9kcyB5b3UgYXJlIHVzZWQgdG8gb24gQXJyYXkuCi0KLSAgTm90ZSB0aGF0IHlvdSBjYW4gYWxz
byB1c2UgdGhlIGBFbWJlci5Db3B5YWJsZWAgYW5kIGBFbWJlci5GcmVlemFibGVgCi0gIEFQSXMg
b24gYEVtYmVyLlNldGAgYXMgd2VsbC4gT25jZSBhIHNldCBpcyBmcm96ZW4gaXQgY2FuIG5vIGxv
bmdlciBiZQotICBtb2RpZmllZC4gVGhlIGJlbmVmaXQgb2YgdGhpcyBpcyB0aGF0IHdoZW4geW91
IGNhbGwgYGZyb3plbkNvcHkoKWAgb24gaXQsCi0gIEVtYmVyIHdpbGwgYXZvaWQgbWFraW5nIGNv
cGllcyBvZiB0aGUgc2V0LiBUaGlzIGFsbG93cyB5b3UgdG8gd3JpdGUKLSAgY29kZSB0aGF0IGNh
biBrbm93IHdpdGggY2VydGFpbnR5IHdoZW4gdGhlIHVuZGVybHlpbmcgc2V0IGRhdGEgd2lsbCBv
cgotICB3aWxsIG5vdCBiZSBtb2RpZmllZC4KLQotICBAY2xhc3MgU2V0Ci0gIEBuYW1lc3BhY2Ug
RW1iZXIKLSAgQGV4dGVuZHMgRW1iZXIuQ29yZU9iamVjdAotICBAdXNlcyBFbWJlci5NdXRhYmxl
RW51bWVyYWJsZQotICBAdXNlcyBFbWJlci5Db3B5YWJsZQotICBAdXNlcyBFbWJlci5GcmVlemFi
bGUKLSAgQHNpbmNlIEVtYmVyIDAuOQotKi8KLUVtYmVyLlNldCA9IEVtYmVyLkNvcmVPYmplY3Qu
ZXh0ZW5kKEVtYmVyLk11dGFibGVFbnVtZXJhYmxlLCBFbWJlci5Db3B5YWJsZSwgRW1iZXIuRnJl
ZXphYmxlLAotICB7Ci0KLSAgLy8gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLgotICAvLyBJTVBMRU1FTlQgRU5VTUVSQUJMRSBBUElTCi0g
IC8vCi0KLSAgLyoqCi0gICAgVGhpcyBwcm9wZXJ0eSB3aWxsIGNoYW5nZSBhcyB0aGUgbnVtYmVy
IG9mIG9iamVjdHMgaW4gdGhlIHNldCBjaGFuZ2VzLgotCi0gICAgQHByb3BlcnR5IGxlbmd0aAot
ICAgIEB0eXBlIG51bWJlcgotICAgIEBkZWZhdWx0IDAKLSAgKi8KLSAgbGVuZ3RoOiAwLAotCi0g
IC8qKgotICAgIENsZWFycyB0aGUgc2V0LiBUaGlzIGlzIHVzZWZ1bCBpZiB5b3Ugd2FudCB0byBy
ZXVzZSBhbiBleGlzdGluZyBzZXQKLSAgICB3aXRob3V0IGhhdmluZyB0byByZWNyZWF0ZSBpdC4K
LQotICAgIGBgYGphdmFzY3JpcHQKLSAgICB2YXIgY29sb3JzID0gbmV3IEVtYmVyLlNldChbInJl
ZCIsICJncmVlbiIsICJibHVlIl0pOwotICAgIGNvbG9ycy5sZW5ndGg7ICAvLyAzCi0gICAgY29s
b3JzLmNsZWFyKCk7Ci0gICAgY29sb3JzLmxlbmd0aDsgIC8vIDAKLSAgICBgYGAKLQotICAgIEBt
ZXRob2QgY2xlYXIKLSAgICBAcmV0dXJuIHtFbWJlci5TZXR9IEFuIGVtcHR5IFNldAotICAqLwot
ICBjbGVhcjogZnVuY3Rpb24oKSB7Ci0gICAgaWYgKHRoaXMuaXNGcm96ZW4pIHsgdGhyb3cgbmV3
IEVtYmVyLkVycm9yKEVtYmVyLkZST1pFTl9FUlJPUik7IH0KLQotICAgIHZhciBsZW4gPSBnZXQo
dGhpcywgJ2xlbmd0aCcpOwotICAgIGlmIChsZW4gPT09IDApIHsgcmV0dXJuIHRoaXM7IH0KLQot
ICAgIHZhciBndWlkOwotCi0gICAgdGhpcy5lbnVtZXJhYmxlQ29udGVudFdpbGxDaGFuZ2UobGVu
LCAwKTsKLSAgICBFbWJlci5wcm9wZXJ0eVdpbGxDaGFuZ2UodGhpcywgJ2ZpcnN0T2JqZWN0Jyk7
Ci0gICAgRW1iZXIucHJvcGVydHlXaWxsQ2hhbmdlKHRoaXMsICdsYXN0T2JqZWN0Jyk7Ci0KLSAg
ICBmb3IgKHZhciBpPTA7IGkgPCBsZW47IGkrKykgewotICAgICAgZ3VpZCA9IGd1aWRGb3IodGhp
c1tpXSk7Ci0gICAgICBkZWxldGUgdGhpc1tndWlkXTsKLSAgICAgIGRlbGV0ZSB0aGlzW2ldOwot
ICAgIH0KLQotICAgIHNldCh0aGlzLCAnbGVuZ3RoJywgMCk7Ci0KLSAgICBFbWJlci5wcm9wZXJ0
eURpZENoYW5nZSh0aGlzLCAnZmlyc3RPYmplY3QnKTsKLSAgICBFbWJlci5wcm9wZXJ0eURpZENo
YW5nZSh0aGlzLCAnbGFzdE9iamVjdCcpOwotICAgIHRoaXMuZW51bWVyYWJsZUNvbnRlbnREaWRD
aGFuZ2UobGVuLCAwKTsKLQotICAgIHJldHVybiB0aGlzOwotICB9LAotCi0gIC8qKgotICAgIFJl
dHVybnMgdHJ1ZSBpZiB0aGUgcGFzc2VkIG9iamVjdCBpcyBhbHNvIGFuIGVudW1lcmFibGUgdGhh
dCBjb250YWlucyB0aGUKLSAgICBzYW1lIG9iamVjdHMgYXMgdGhlIHJlY2VpdmVyLgotCi0gICAg
YGBgamF2YXNjcmlwdAotICAgIHZhciBjb2xvcnMgPSBbInJlZCIsICJncmVlbiIsICJibHVlIl0s
Ci0gICAgICAgIHNhbWVfY29sb3JzID0gbmV3IEVtYmVyLlNldChjb2xvcnMpOwotCi0gICAgc2Ft
ZV9jb2xvcnMuaXNFcXVhbChjb2xvcnMpOyAgICAgICAgICAgICAgIC8vIHRydWUKLSAgICBzYW1l
X2NvbG9ycy5pc0VxdWFsKFsicHVycGxlIiwgImJyb3duIl0pOyAgLy8gZmFsc2UKLSAgICBgYGAK
LQotICAgIEBtZXRob2QgaXNFcXVhbAotICAgIEBwYXJhbSB7RW1iZXIuU2V0fSBvYmogdGhlIG90
aGVyIG9iamVjdC4KLSAgICBAcmV0dXJuIHtCb29sZWFufQotICAqLwotICBpc0VxdWFsOiBmdW5j
dGlvbihvYmopIHsKLSAgICAvLyBmYWlsIGZhc3QKLSAgICBpZiAoIUVtYmVyLkVudW1lcmFibGUu
ZGV0ZWN0KG9iaikpIHJldHVybiBmYWxzZTsKLQotICAgIHZhciBsb2MgPSBnZXQodGhpcywgJ2xl
bmd0aCcpOwotICAgIGlmIChnZXQob2JqLCAnbGVuZ3RoJykgIT09IGxvYykgcmV0dXJuIGZhbHNl
OwotCi0gICAgd2hpbGUoLS1sb2MgPj0gMCkgewotICAgICAgaWYgKCFvYmouY29udGFpbnModGhp
c1tsb2NdKSkgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotICB9LAot
Ci0gIC8qKgotICAgIEFkZHMgYW4gb2JqZWN0IHRvIHRoZSBzZXQuIE9ubHkgbm9uLWBudWxsYCBv
YmplY3RzIGNhbiBiZSBhZGRlZCB0byBhIHNldAotICAgIGFuZCB0aG9zZSBjYW4gb25seSBiZSBh
ZGRlZCBvbmNlLiBJZiB0aGUgb2JqZWN0IGlzIGFscmVhZHkgaW4gdGhlIHNldCBvcgotICAgIHRo
ZSBwYXNzZWQgdmFsdWUgaXMgbnVsbCB0aGlzIG1ldGhvZCB3aWxsIGhhdmUgbm8gZWZmZWN0Lgot
Ci0gICAgVGhpcyBpcyBhbiBhbGlhcyBmb3IgYEVtYmVyLk11dGFibGVFbnVtZXJhYmxlLmFkZE9i
amVjdCgpYC4KLQotICAgIGBgYGphdmFzY3JpcHQKLSAgICB2YXIgY29sb3JzID0gbmV3IEVtYmVy
LlNldCgpOwotICAgIGNvbG9ycy5hZGQoImJsdWUiKTsgICAgIC8vIFsiYmx1ZSJdCi0gICAgY29s
b3JzLmFkZCgiYmx1ZSIpOyAgICAgLy8gWyJibHVlIl0KLSAgICBjb2xvcnMuYWRkKCJyZWQiKTsg
ICAgICAvLyBbImJsdWUiLCAicmVkIl0KLSAgICBjb2xvcnMuYWRkKG51bGwpOyAgICAgICAvLyBb
ImJsdWUiLCAicmVkIl0KLSAgICBjb2xvcnMuYWRkKHVuZGVmaW5lZCk7ICAvLyBbImJsdWUiLCAi
cmVkIl0KLSAgICBgYGAKLQotICAgIEBtZXRob2QgYWRkCi0gICAgQHBhcmFtIHtPYmplY3R9IG9i
aiBUaGUgb2JqZWN0IHRvIGFkZC4KLSAgICBAcmV0dXJuIHtFbWJlci5TZXR9IFRoZSBzZXQgaXRz
ZWxmLgotICAqLwotICBhZGQ6IEVtYmVyLmFsaWFzTWV0aG9kKCdhZGRPYmplY3QnKSwKLQotICAv
KioKLSAgICBSZW1vdmVzIHRoZSBvYmplY3QgZnJvbSB0aGUgc2V0IGlmIGl0IGlzIGZvdW5kLiBJ
ZiB5b3UgcGFzcyBhIGBudWxsYCB2YWx1ZQotICAgIG9yIGFuIG9iamVjdCB0aGF0IGlzIGFscmVh
ZHkgbm90IGluIHRoZSBzZXQsIHRoaXMgbWV0aG9kIHdpbGwgaGF2ZSBubwotICAgIGVmZmVjdC4g
VGhpcyBpcyBhbiBhbGlhcyBmb3IgYEVtYmVyLk11dGFibGVFbnVtZXJhYmxlLnJlbW92ZU9iamVj
dCgpYC4KLQotICAgIGBgYGphdmFzY3JpcHQKLSAgICB2YXIgY29sb3JzID0gbmV3IEVtYmVyLlNl
dChbInJlZCIsICJncmVlbiIsICJibHVlIl0pOwotICAgIGNvbG9ycy5yZW1vdmUoInJlZCIpOyAg
ICAgLy8gWyJibHVlIiwgImdyZWVuIl0KLSAgICBjb2xvcnMucmVtb3ZlKCJwdXJwbGUiKTsgIC8v
IFsiYmx1ZSIsICJncmVlbiJdCi0gICAgY29sb3JzLnJlbW92ZShudWxsKTsgICAgICAvLyBbImJs
dWUiLCAiZ3JlZW4iXQotICAgIGBgYAotCi0gICAgQG1ldGhvZCByZW1vdmUKLSAgICBAcGFyYW0g
e09iamVjdH0gb2JqIFRoZSBvYmplY3QgdG8gcmVtb3ZlCi0gICAgQHJldHVybiB7RW1iZXIuU2V0
fSBUaGUgc2V0IGl0c2VsZi4KLSAgKi8KLSAgcmVtb3ZlOiBFbWJlci5hbGlhc01ldGhvZCgncmVt
b3ZlT2JqZWN0JyksCi0KLSAgLyoqCi0gICAgUmVtb3ZlcyB0aGUgbGFzdCBlbGVtZW50IGZyb20g
dGhlIHNldCBhbmQgcmV0dXJucyBpdCwgb3IgYG51bGxgIGlmIGl0J3MgZW1wdHkuCi0KLSAgICBg
YGBqYXZhc2NyaXB0Ci0gICAgdmFyIGNvbG9ycyA9IG5ldyBFbWJlci5TZXQoWyJncmVlbiIsICJi
bHVlIl0pOwotICAgIGNvbG9ycy5wb3AoKTsgIC8vICJibHVlIgotICAgIGNvbG9ycy5wb3AoKTsg
IC8vICJncmVlbiIKLSAgICBjb2xvcnMucG9wKCk7ICAvLyBudWxsCi0gICAgYGBgCi0KLSAgICBA
bWV0aG9kIHBvcAotICAgIEByZXR1cm4ge09iamVjdH0gVGhlIHJlbW92ZWQgb2JqZWN0IGZyb20g
dGhlIHNldCBvciBudWxsLgotICAqLwotICBwb3A6IGZ1bmN0aW9uKCkgewotICAgIGlmIChnZXQo
dGhpcywgJ2lzRnJvemVuJykpIHRocm93IG5ldyBFbWJlci5FcnJvcihFbWJlci5GUk9aRU5fRVJS
T1IpOwotICAgIHZhciBvYmogPSB0aGlzLmxlbmd0aCA+IDAgPyB0aGlzW3RoaXMubGVuZ3RoLTFd
IDogbnVsbDsKLSAgICB0aGlzLnJlbW92ZShvYmopOwotICAgIHJldHVybiBvYmo7Ci0gIH0sCi0K
LSAgLyoqCi0gICAgSW5zZXJ0cyB0aGUgZ2l2ZW4gb2JqZWN0IG9uIHRvIHRoZSBlbmQgb2YgdGhl
IHNldC4gSXQgcmV0dXJucwotICAgIHRoZSBzZXQgaXRzZWxmLgotCi0gICAgVGhpcyBpcyBhbiBh
bGlhcyBmb3IgYEVtYmVyLk11dGFibGVFbnVtZXJhYmxlLmFkZE9iamVjdCgpYC4KLQotICAgIGBg
YGphdmFzY3JpcHQKLSAgICB2YXIgY29sb3JzID0gbmV3IEVtYmVyLlNldCgpOwotICAgIGNvbG9y
cy5wdXNoKCJyZWQiKTsgICAvLyBbInJlZCJdCi0gICAgY29sb3JzLnB1c2goImdyZWVuIik7IC8v
IFsicmVkIiwgImdyZWVuIl0KLSAgICBjb2xvcnMucHVzaCgiYmx1ZSIpOyAgLy8gWyJyZWQiLCAi
Z3JlZW4iLCAiYmx1ZSJdCi0gICAgYGBgCi0KLSAgICBAbWV0aG9kIHB1c2gKLSAgICBAcmV0dXJu
IHtFbWJlci5TZXR9IFRoZSBzZXQgaXRzZWxmLgotICAqLwotICBwdXNoOiBFbWJlci5hbGlhc01l
dGhvZCgnYWRkT2JqZWN0JyksCi0KLSAgLyoqCi0gICAgUmVtb3ZlcyB0aGUgbGFzdCBlbGVtZW50
IGZyb20gdGhlIHNldCBhbmQgcmV0dXJucyBpdCwgb3IgYG51bGxgIGlmIGl0J3MgZW1wdHkuCi0K
LSAgICBUaGlzIGlzIGFuIGFsaWFzIGZvciBgRW1iZXIuU2V0LnBvcCgpYC4KLQotICAgIGBgYGph
dmFzY3JpcHQKLSAgICB2YXIgY29sb3JzID0gbmV3IEVtYmVyLlNldChbImdyZWVuIiwgImJsdWUi
XSk7Ci0gICAgY29sb3JzLnNoaWZ0KCk7ICAvLyAiYmx1ZSIKLSAgICBjb2xvcnMuc2hpZnQoKTsg
IC8vICJncmVlbiIKLSAgICBjb2xvcnMuc2hpZnQoKTsgIC8vIG51bGwKLSAgICBgYGAKLQotICAg
IEBtZXRob2Qgc2hpZnQKLSAgICBAcmV0dXJuIHtPYmplY3R9IFRoZSByZW1vdmVkIG9iamVjdCBm
cm9tIHRoZSBzZXQgb3IgbnVsbC4KLSAgKi8KLSAgc2hpZnQ6IEVtYmVyLmFsaWFzTWV0aG9kKCdw
b3AnKSwKLQotICAvKioKLSAgICBJbnNlcnRzIHRoZSBnaXZlbiBvYmplY3Qgb24gdG8gdGhlIGVu
ZCBvZiB0aGUgc2V0LiBJdCByZXR1cm5zCi0gICAgdGhlIHNldCBpdHNlbGYuCi0KLSAgICBUaGlz
IGlzIGFuIGFsaWFzIG9mIGBFbWJlci5TZXQucHVzaCgpYAotCi0gICAgYGBgamF2YXNjcmlwdAot
ICAgIHZhciBjb2xvcnMgPSBuZXcgRW1iZXIuU2V0KCk7Ci0gICAgY29sb3JzLnVuc2hpZnQoInJl
ZCIpOyAgICAvLyBbInJlZCJdCi0gICAgY29sb3JzLnVuc2hpZnQoImdyZWVuIik7ICAvLyBbInJl
ZCIsICJncmVlbiJdCi0gICAgY29sb3JzLnVuc2hpZnQoImJsdWUiKTsgICAvLyBbInJlZCIsICJn
cmVlbiIsICJibHVlIl0KLSAgICBgYGAKLQotICAgIEBtZXRob2QgdW5zaGlmdAotICAgIEByZXR1
cm4ge0VtYmVyLlNldH0gVGhlIHNldCBpdHNlbGYuCi0gICovCi0gIHVuc2hpZnQ6IEVtYmVyLmFs
aWFzTWV0aG9kKCdwdXNoJyksCi0KLSAgLyoqCi0gICAgQWRkcyBlYWNoIG9iamVjdCBpbiB0aGUg
cGFzc2VkIGVudW1lcmFibGUgdG8gdGhlIHNldC4KLQotICAgIFRoaXMgaXMgYW4gYWxpYXMgb2Yg
YEVtYmVyLk11dGFibGVFbnVtZXJhYmxlLmFkZE9iamVjdHMoKWAKLQotICAgIGBgYGphdmFzY3Jp
cHQKLSAgICB2YXIgY29sb3JzID0gbmV3IEVtYmVyLlNldCgpOwotICAgIGNvbG9ycy5hZGRFYWNo
KFsicmVkIiwgImdyZWVuIiwgImJsdWUiXSk7ICAvLyBbInJlZCIsICJncmVlbiIsICJibHVlIl0K
LSAgICBgYGAKLQotICAgIEBtZXRob2QgYWRkRWFjaAotICAgIEBwYXJhbSB7RW1iZXIuRW51bWVy
YWJsZX0gb2JqZWN0cyB0aGUgb2JqZWN0cyB0byBhZGQuCi0gICAgQHJldHVybiB7RW1iZXIuU2V0
fSBUaGUgc2V0IGl0c2VsZi4KLSAgKi8KLSAgYWRkRWFjaDogRW1iZXIuYWxpYXNNZXRob2QoJ2Fk
ZE9iamVjdHMnKSwKLQotICAvKioKLSAgICBSZW1vdmVzIGVhY2ggb2JqZWN0IGluIHRoZSBwYXNz
ZWQgZW51bWVyYWJsZSB0byB0aGUgc2V0LgotCi0gICAgVGhpcyBpcyBhbiBhbGlhcyBvZiBgRW1i
ZXIuTXV0YWJsZUVudW1lcmFibGUucmVtb3ZlT2JqZWN0cygpYAotCi0gICAgYGBgamF2YXNjcmlw
dAotICAgIHZhciBjb2xvcnMgPSBuZXcgRW1iZXIuU2V0KFsicmVkIiwgImdyZWVuIiwgImJsdWUi
XSk7Ci0gICAgY29sb3JzLnJlbW92ZUVhY2goWyJyZWQiLCAiYmx1ZSJdKTsgIC8vICBbImdyZWVu
Il0KLSAgICBgYGAKLQotICAgIEBtZXRob2QgcmVtb3ZlRWFjaAotICAgIEBwYXJhbSB7RW1iZXIu
RW51bWVyYWJsZX0gb2JqZWN0cyB0aGUgb2JqZWN0cyB0byByZW1vdmUuCi0gICAgQHJldHVybiB7
RW1iZXIuU2V0fSBUaGUgc2V0IGl0c2VsZi4KLSAgKi8KLSAgcmVtb3ZlRWFjaDogRW1iZXIuYWxp
YXNNZXRob2QoJ3JlbW92ZU9iamVjdHMnKSwKLQotICAvLyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi0gIC8vIFBSSVZBVEUgRU5VTUVS
QUJMRSBTVVBQT1JUCi0gIC8vCi0KLSAgaW5pdDogZnVuY3Rpb24oaXRlbXMpIHsKLSAgICB0aGlz
Ll9zdXBlcigpOwotICAgIGlmIChpdGVtcykgdGhpcy5hZGRPYmplY3RzKGl0ZW1zKTsKLSAgfSwK
LQotICAvLyBpbXBsZW1lbnQgRW1iZXIuRW51bWVyYWJsZQotICBuZXh0T2JqZWN0OiBmdW5jdGlv
bihpZHgpIHsKLSAgICByZXR1cm4gdGhpc1tpZHhdOwotICB9LAotCi0gIC8vIG1vcmUgb3B0aW1p
emVkIHZlcnNpb24KLSAgZmlyc3RPYmplY3Q6IEVtYmVyLmNvbXB1dGVkKGZ1bmN0aW9uKCkgewot
ICAgIHJldHVybiB0aGlzLmxlbmd0aCA+IDAgPyB0aGlzWzBdIDogdW5kZWZpbmVkOwotICB9KSwK
LQotICAvLyBtb3JlIG9wdGltaXplZCB2ZXJzaW9uCi0gIGxhc3RPYmplY3Q6IEVtYmVyLmNvbXB1
dGVkKGZ1bmN0aW9uKCkgewotICAgIHJldHVybiB0aGlzLmxlbmd0aCA+IDAgPyB0aGlzW3RoaXMu
bGVuZ3RoLTFdIDogdW5kZWZpbmVkOwotICB9KSwKLQotICAvLyBpbXBsZW1lbnRzIEVtYmVyLk11
dGFibGVFbnVtZXJhYmxlCi0gIGFkZE9iamVjdDogZnVuY3Rpb24ob2JqKSB7Ci0gICAgaWYgKGdl
dCh0aGlzLCAnaXNGcm96ZW4nKSkgdGhyb3cgbmV3IEVtYmVyLkVycm9yKEVtYmVyLkZST1pFTl9F
UlJPUik7Ci0gICAgaWYgKGlzTm9uZShvYmopKSByZXR1cm4gdGhpczsgLy8gbm90aGluZyB0byBk
bwotCi0gICAgdmFyIGd1aWQgPSBndWlkRm9yKG9iaiksCi0gICAgICAgIGlkeCAgPSB0aGlzW2d1
aWRdLAotICAgICAgICBsZW4gID0gZ2V0KHRoaXMsICdsZW5ndGgnKSwKLSAgICAgICAgYWRkZWQg
OwotCi0gICAgaWYgKGlkeD49MCAmJiBpZHg8bGVuICYmICh0aGlzW2lkeF0gPT09IG9iaikpIHJl
dHVybiB0aGlzOyAvLyBhZGRlZAotCi0gICAgYWRkZWQgPSBbb2JqXTsKLQotICAgIHRoaXMuZW51
bWVyYWJsZUNvbnRlbnRXaWxsQ2hhbmdlKG51bGwsIGFkZGVkKTsKLSAgICBFbWJlci5wcm9wZXJ0
eVdpbGxDaGFuZ2UodGhpcywgJ2xhc3RPYmplY3QnKTsKLQotICAgIGxlbiA9IGdldCh0aGlzLCAn
bGVuZ3RoJyk7Ci0gICAgdGhpc1tndWlkXSA9IGxlbjsKLSAgICB0aGlzW2xlbl0gPSBvYmo7Ci0g
ICAgc2V0KHRoaXMsICdsZW5ndGgnLCBsZW4rMSk7Ci0KLSAgICBFbWJlci5wcm9wZXJ0eURpZENo
YW5nZSh0aGlzLCAnbGFzdE9iamVjdCcpOwotICAgIHRoaXMuZW51bWVyYWJsZUNvbnRlbnREaWRD
aGFuZ2UobnVsbCwgYWRkZWQpOwotCi0gICAgcmV0dXJuIHRoaXM7Ci0gIH0sCi0KLSAgLy8gaW1w
bGVtZW50cyBFbWJlci5NdXRhYmxlRW51bWVyYWJsZQotICByZW1vdmVPYmplY3Q6IGZ1bmN0aW9u
KG9iaikgewotICAgIGlmIChnZXQodGhpcywgJ2lzRnJvemVuJykpIHRocm93IG5ldyBFbWJlci5F
cnJvcihFbWJlci5GUk9aRU5fRVJST1IpOwotICAgIGlmIChpc05vbmUob2JqKSkgcmV0dXJuIHRo
aXM7IC8vIG5vdGhpbmcgdG8gZG8KLQotICAgIHZhciBndWlkID0gZ3VpZEZvcihvYmopLAotICAg
ICAgICBpZHggID0gdGhpc1tndWlkXSwKLSAgICAgICAgbGVuID0gZ2V0KHRoaXMsICdsZW5ndGgn
KSwKLSAgICAgICAgaXNGaXJzdCA9IGlkeCA9PT0gMCwKLSAgICAgICAgaXNMYXN0ID0gaWR4ID09
PSBsZW4tMSwKLSAgICAgICAgbGFzdCwgcmVtb3ZlZDsKLQotCi0gICAgaWYgKGlkeD49MCAmJiBp
ZHg8bGVuICYmICh0aGlzW2lkeF0gPT09IG9iaikpIHsKLSAgICAgIHJlbW92ZWQgPSBbb2JqXTsK
LQotICAgICAgdGhpcy5lbnVtZXJhYmxlQ29udGVudFdpbGxDaGFuZ2UocmVtb3ZlZCwgbnVsbCk7
Ci0gICAgICBpZiAoaXNGaXJzdCkgeyBFbWJlci5wcm9wZXJ0eVdpbGxDaGFuZ2UodGhpcywgJ2Zp
cnN0T2JqZWN0Jyk7IH0KLSAgICAgIGlmIChpc0xhc3QpICB7IEVtYmVyLnByb3BlcnR5V2lsbENo
YW5nZSh0aGlzLCAnbGFzdE9iamVjdCcpOyB9Ci0KLSAgICAgIC8vIHN3YXAgaXRlbXMgLSBiYXNp
Y2FsbHkgbW92ZSB0aGUgaXRlbSB0byB0aGUgZW5kIHNvIGl0IGNhbiBiZSByZW1vdmVkCi0gICAg
ICBpZiAoaWR4IDwgbGVuLTEpIHsKLSAgICAgICAgbGFzdCA9IHRoaXNbbGVuLTFdOwotICAgICAg
ICB0aGlzW2lkeF0gPSBsYXN0OwotICAgICAgICB0aGlzW2d1aWRGb3IobGFzdCldID0gaWR4Owot
ICAgICAgfQotCi0gICAgICBkZWxldGUgdGhpc1tndWlkXTsKLSAgICAgIGRlbGV0ZSB0aGlzW2xl
bi0xXTsKLSAgICAgIHNldCh0aGlzLCAnbGVuZ3RoJywgbGVuLTEpOwotCi0gICAgICBpZiAoaXNG
aXJzdCkgeyBFbWJlci5wcm9wZXJ0eURpZENoYW5nZSh0aGlzLCAnZmlyc3RPYmplY3QnKTsgfQot
ICAgICAgaWYgKGlzTGFzdCkgIHsgRW1iZXIucHJvcGVydHlEaWRDaGFuZ2UodGhpcywgJ2xhc3RP
YmplY3QnKTsgfQotICAgICAgdGhpcy5lbnVtZXJhYmxlQ29udGVudERpZENoYW5nZShyZW1vdmVk
LCBudWxsKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdGhpczsKLSAgfSwKLQotICAvLyBvcHRpbWl6
ZWQgdmVyc2lvbgotICBjb250YWluczogZnVuY3Rpb24ob2JqKSB7Ci0gICAgcmV0dXJuIHRoaXNb
Z3VpZEZvcihvYmopXT49MDsKLSAgfSwKLQotICBjb3B5OiBmdW5jdGlvbigpIHsKLSAgICB2YXIg
QyA9IHRoaXMuY29uc3RydWN0b3IsIHJldCA9IG5ldyBDKCksIGxvYyA9IGdldCh0aGlzLCAnbGVu
Z3RoJyk7Ci0gICAgc2V0KHJldCwgJ2xlbmd0aCcsIGxvYyk7Ci0gICAgd2hpbGUoLS1sb2M+PTAp
IHsKLSAgICAgIHJldFtsb2NdID0gdGhpc1tsb2NdOwotICAgICAgcmV0W2d1aWRGb3IodGhpc1ts
b2NdKV0gPSBsb2M7Ci0gICAgfQotICAgIHJldHVybiByZXQ7Ci0gIH0sCi0KLSAgdG9TdHJpbmc6
IGZ1bmN0aW9uKCkgewotICAgIHZhciBsZW4gPSB0aGlzLmxlbmd0aCwgaWR4LCBhcnJheSA9IFtd
OwotICAgIGZvcihpZHggPSAwOyBpZHggPCBsZW47IGlkeCsrKSB7Ci0gICAgICBhcnJheVtpZHhd
ID0gdGhpc1tpZHhdOwotICAgIH0KLSAgICByZXR1cm4gZm10KCJFbWJlci5TZXQ8JUA+IiwgW2Fy
cmF5LmpvaW4oJywnKV0pOwotICB9Ci0KLX0pOwotCi19KSgpOwotCi0KLQotKGZ1bmN0aW9uKCkg
ewotdmFyIERlZmVycmVkTWl4aW4gPSBFbWJlci5EZWZlcnJlZE1peGluLCAvLyBtaXhpbnMvZGVm
ZXJyZWQKLSAgICBnZXQgPSBFbWJlci5nZXQ7Ci0KLXZhciBEZWZlcnJlZCA9IEVtYmVyLk9iamVj
dC5leHRlbmQoRGVmZXJyZWRNaXhpbik7Ci0KLURlZmVycmVkLnJlb3BlbkNsYXNzKHsKLSAgcHJv
bWlzZTogZnVuY3Rpb24oY2FsbGJhY2ssIGJpbmRpbmcpIHsKLSAgICB2YXIgZGVmZXJyZWQgPSBE
ZWZlcnJlZC5jcmVhdGUoKTsKLSAgICBjYWxsYmFjay5jYWxsKGJpbmRpbmcsIGRlZmVycmVkKTsK
LSAgICByZXR1cm4gZGVmZXJyZWQ7Ci0gIH0KLX0pOwotCi1FbWJlci5EZWZlcnJlZCA9IERlZmVy
cmVkOwotCi19KSgpOwotCi0KLQotKGZ1bmN0aW9uKCkgewotdmFyIGZvckVhY2ggPSBFbWJlci5B
cnJheVBvbHlmaWxscy5mb3JFYWNoOwotCi0vKioKLSAgQG1vZHVsZSBlbWJlcgotICBAc3VibW9k
dWxlIGVtYmVyLXJ1bnRpbWUKLSovCi0KLXZhciBsb2FkSG9va3MgPSBFbWJlci5FTlYuRU1CRVJf
TE9BRF9IT09LUyB8fCB7fTsKLXZhciBsb2FkZWQgPSB7fTsKLQotLyoqCi0gIERldGVjdHMgd2hl
biBhIHNwZWNpZmljIHBhY2thZ2Ugb2YgRW1iZXIgKGUuZy4gJ0VtYmVyLkhhbmRsZWJhcnMnKQot
ICBoYXMgZnVsbHkgbG9hZGVkIGFuZCBpcyBhdmFpbGFibGUgZm9yIGV4dGVuc2lvbi4KLQotICBU
aGUgcHJvdmlkZWQgYGNhbGxiYWNrYCB3aWxsIGJlIGNhbGxlZCB3aXRoIHRoZSBgbmFtZWAgcGFz
c2VkCi0gIHJlc29sdmVkIGZyb20gYSBzdHJpbmcgaW50byB0aGUgb2JqZWN0OgotCi0gIGBgYCBq
YXZhc2NyaXB0Ci0gIEVtYmVyLm9uTG9hZCgnRW1iZXIuSGFuZGxlYmFycycgZnVuY3Rpb24oaGJh
cnMpewotICAgIGhiYXJzLnJlZ2lzdGVySGVscGVyKC4uLik7Ci0gIH0pOwotICBgYGAKLQotICBA
bWV0aG9kIG9uTG9hZAotICBAZm9yIEVtYmVyCi0gIEBwYXJhbSBuYW1lIHtTdHJpbmd9IG5hbWUg
b2YgaG9vawotICBAcGFyYW0gY2FsbGJhY2sge0Z1bmN0aW9ufSBjYWxsYmFjayB0byBiZSBjYWxs
ZWQKLSovCi1FbWJlci5vbkxvYWQgPSBmdW5jdGlvbihuYW1lLCBjYWxsYmFjaykgewotICB2YXIg
b2JqZWN0OwotCi0gIGxvYWRIb29rc1tuYW1lXSA9IGxvYWRIb29rc1tuYW1lXSB8fCBFbWJlci5B
KCk7Ci0gIGxvYWRIb29rc1tuYW1lXS5wdXNoT2JqZWN0KGNhbGxiYWNrKTsKLQotICBpZiAob2Jq
ZWN0ID0gbG9hZGVkW25hbWVdKSB7Ci0gICAgY2FsbGJhY2sob2JqZWN0KTsKLSAgfQotfTsKLQot
LyoqCi0gIENhbGxlZCB3aGVuIGFuIEVtYmVyLmpzIHBhY2thZ2UgKGUuZyBFbWJlci5IYW5kbGVi
YXJzKSBoYXMgZmluaXNoZWQKLSAgbG9hZGluZy4gVHJpZ2dlcnMgYW55IGNhbGxiYWNrcyByZWdp
c3RlcmVkIGZvciB0aGlzIGV2ZW50LgotCi0gIEBtZXRob2QgcnVuTG9hZEhvb2tzCi0gIEBmb3Ig
RW1iZXIKLSAgQHBhcmFtIG5hbWUge1N0cmluZ30gbmFtZSBvZiBob29rCi0gIEBwYXJhbSBvYmpl
Y3Qge09iamVjdH0gb2JqZWN0IHRvIHBhc3MgdG8gY2FsbGJhY2tzCi0qLwotRW1iZXIucnVuTG9h
ZEhvb2tzID0gZnVuY3Rpb24obmFtZSwgb2JqZWN0KSB7Ci0gIGxvYWRlZFtuYW1lXSA9IG9iamVj
dDsKLQotICBpZiAobG9hZEhvb2tzW25hbWVdKSB7Ci0gICAgZm9yRWFjaC5jYWxsKGxvYWRIb29r
c1tuYW1lXSwgZnVuY3Rpb24oY2FsbGJhY2spIHsKLSAgICAgIGNhbGxiYWNrKG9iamVjdCk7Ci0g
ICAgfSk7Ci0gIH0KLX07Ci0KLX0pKCk7Ci0KLQotCi0oZnVuY3Rpb24oKSB7Ci0KLX0pKCk7Ci0K
LQotCi0oZnVuY3Rpb24oKSB7Ci12YXIgZ2V0ID0gRW1iZXIuZ2V0OwotCi0vKioKLUBtb2R1bGUg
ZW1iZXIKLUBzdWJtb2R1bGUgZW1iZXItcnVudGltZQotKi8KLQotLyoqCi0gIGBFbWJlci5Db250
cm9sbGVyTWl4aW5gIHByb3ZpZGVzIGEgc3RhbmRhcmQgaW50ZXJmYWNlIGZvciBhbGwgY2xhc3Nl
cyB0aGF0Ci0gIGNvbXBvc2UgRW1iZXIncyBjb250cm9sbGVyIGxheWVyOiBgRW1iZXIuQ29udHJv
bGxlcmAsCi0gIGBFbWJlci5BcnJheUNvbnRyb2xsZXJgLCBhbmQgYEVtYmVyLk9iamVjdENvbnRy
b2xsZXJgLgotCi0gIEBjbGFzcyBDb250cm9sbGVyTWl4aW4KLSAgQG5hbWVzcGFjZSBFbWJlcgot
ICBAdXNlcyBFbWJlci5BY3Rpb25IYW5kbGVyCi0qLwotRW1iZXIuQ29udHJvbGxlck1peGluID0g
RW1iZXIuTWl4aW4uY3JlYXRlKEVtYmVyLkFjdGlvbkhhbmRsZXIsIHsKLSAgLyogZHVja3R5cGUg
YXMgYSBjb250cm9sbGVyICovCi0gIGlzQ29udHJvbGxlcjogdHJ1ZSwKLQotICAvKioKLSAgICBU
aGUgb2JqZWN0IHRvIHdoaWNoIGFjdGlvbnMgZnJvbSB0aGUgdmlldyBzaG91bGQgYmUgc2VudC4K
LQotICAgIEZvciBleGFtcGxlLCB3aGVuIGEgSGFuZGxlYmFycyB0ZW1wbGF0ZSB1c2VzIHRoZSBg
e3thY3Rpb259fWAgaGVscGVyLAotICAgIGl0IHdpbGwgYXR0ZW1wdCB0byBzZW5kIHRoZSBhY3Rp
b24gdG8gdGhlIHZpZXcncyBjb250cm9sbGVyJ3MgYHRhcmdldGAuCi0KLSAgICBCeSBkZWZhdWx0
LCBhIGNvbnRyb2xsZXIncyBgdGFyZ2V0YCBpcyBzZXQgdG8gdGhlIHJvdXRlciBhZnRlciBpdCBp
cwotICAgIGluc3RhbnRpYXRlZCBieSBgRW1iZXIuQXBwbGljYXRpb24jaW5pdGlhbGl6ZWAuCi0K
LSAgICBAcHJvcGVydHkgdGFyZ2V0Ci0gICAgQGRlZmF1bHQgbnVsbAotICAqLwotICB0YXJnZXQ6
IG51bGwsCi0KLSAgY29udGFpbmVyOiBudWxsLAotCi0gIHBhcmVudENvbnRyb2xsZXI6IG51bGws
Ci0KLSAgc3RvcmU6IG51bGwsCi0KLSAgbW9kZWw6IEVtYmVyLmNvbXB1dGVkLmFsaWFzKCdjb250
ZW50JyksCi0KLSAgZGVwcmVjYXRlZFNlbmRIYW5kbGVzOiBmdW5jdGlvbihhY3Rpb25OYW1lKSB7
Ci0gICAgcmV0dXJuICEhdGhpc1thY3Rpb25OYW1lXTsKLSAgfSwKLQotICBkZXByZWNhdGVkU2Vu
ZDogZnVuY3Rpb24oYWN0aW9uTmFtZSkgewotICAgIHZhciBhcmdzID0gW10uc2xpY2UuY2FsbChh
cmd1bWVudHMsIDEpOwotICAgIEVtYmVyLmFzc2VydCgnJyArIHRoaXMgKyAiIGhhcyB0aGUgYWN0
aW9uICIgKyBhY3Rpb25OYW1lICsgIiBidXQgaXQgaXMgbm90IGEgZnVuY3Rpb24iLCB0eXBlb2Yg
dGhpc1thY3Rpb25OYW1lXSA9PT0gJ2Z1bmN0aW9uJyk7Ci0gICAgRW1iZXIuZGVwcmVjYXRlKCdB
Y3Rpb24gaGFuZGxlcnMgaW1wbGVtZW50ZWQgZGlyZWN0bHkgb24gY29udHJvbGxlcnMgYXJlIGRl
cHJlY2F0ZWQgaW4gZmF2b3Igb2YgYWN0aW9uIGhhbmRsZXJzIG9uIGFuIGBhY3Rpb25zYCBvYmpl
Y3QgKCcgKyBhY3Rpb25OYW1lICsgJyBvbiAnICsgdGhpcyArICcpJywgZmFsc2UpOwotICAgIHRo
aXNbYWN0aW9uTmFtZV0uYXBwbHkodGhpcywgYXJncyk7Ci0gICAgcmV0dXJuOwotICB9Ci19KTsK
LQotLyoqCi0gIEBjbGFzcyBDb250cm9sbGVyCi0gIEBuYW1lc3BhY2UgRW1iZXIKLSAgQGV4dGVu
ZHMgRW1iZXIuT2JqZWN0Ci0gIEB1c2VzIEVtYmVyLkNvbnRyb2xsZXJNaXhpbgotKi8KLUVtYmVy
LkNvbnRyb2xsZXIgPSBFbWJlci5PYmplY3QuZXh0ZW5kKEVtYmVyLkNvbnRyb2xsZXJNaXhpbik7
Ci0KLX0pKCk7Ci0KLQotCi0oZnVuY3Rpb24oKSB7Ci0vKioKLUBtb2R1bGUgZW1iZXIKLUBzdWJt
b2R1bGUgZW1iZXItcnVudGltZQotKi8KLQotdmFyIGdldCA9IEVtYmVyLmdldCwgc2V0ID0gRW1i
ZXIuc2V0LCBmb3JFYWNoID0gRW1iZXIuRW51bWVyYWJsZVV0aWxzLmZvckVhY2g7Ci0KLS8qKgot
ICBgRW1iZXIuU29ydGFibGVNaXhpbmAgcHJvdmlkZXMgYSBzdGFuZGFyZCBpbnRlcmZhY2UgZm9y
IGFycmF5IHByb3hpZXMKLSAgdG8gc3BlY2lmeSBhIHNvcnQgb3JkZXIgYW5kIG1haW50YWluIHRo
aXMgc29ydGluZyB3aGVuIG9iamVjdHMgYXJlIGFkZGVkLAotICByZW1vdmVkLCBvciB1cGRhdGVk
IHdpdGhvdXQgY2hhbmdpbmcgdGhlIGltcGxpY2l0IG9yZGVyIG9mIHRoZWlyIHVuZGVybHlpbmcK
LSAgY29udGVudCBhcnJheToKLQotICBgYGBqYXZhc2NyaXB0Ci0gIHNvbmdzID0gWwotICAgIHt0
cmFja051bWJlcjogNCwgdGl0bGU6ICdPYi1MYS1EaSwgT2ItTGEtRGEnfSwKLSAgICB7dHJhY2tO
dW1iZXI6IDIsIHRpdGxlOiAnQmFjayBpbiB0aGUgVS5TLlMuUi4nfSwKLSAgICB7dHJhY2tOdW1i
ZXI6IDMsIHRpdGxlOiAnR2xhc3MgT25pb24nfSwKLSAgXTsKLQotICBzb25nc0NvbnRyb2xsZXIg
PSBFbWJlci5BcnJheUNvbnRyb2xsZXIuY3JlYXRlKHsKLSAgICBjb250ZW50OiBzb25ncywKLSAg
ICBzb3J0UHJvcGVydGllczogWyd0cmFja051bWJlciddLAotICAgIHNvcnRBc2NlbmRpbmc6IHRy
dWUKLSAgfSk7Ci0KLSAgc29uZ3NDb250cm9sbGVyLmdldCgnZmlyc3RPYmplY3QnKTsgIC8vIHt0
cmFja051bWJlcjogMiwgdGl0bGU6ICdCYWNrIGluIHRoZSBVLlMuUy5SLid9Ci0KLSAgc29uZ3ND
b250cm9sbGVyLmFkZE9iamVjdCh7dHJhY2tOdW1iZXI6IDEsIHRpdGxlOiAnRGVhciBQcnVkZW5j
ZSd9KTsKLSAgc29uZ3NDb250cm9sbGVyLmdldCgnZmlyc3RPYmplY3QnKTsgIC8vIHt0cmFja051
bWJlcjogMSwgdGl0bGU6ICdEZWFyIFBydWRlbmNlJ30KLSAgYGBgCi0KLSAgSWYgeW91IGFkZCBv
ciByZW1vdmUgdGhlIHByb3BlcnRpZXMgdG8gc29ydCBieSBvciBjaGFuZ2UgdGhlIHNvcnQgZGly
ZWN0aW9uIHRoZSBjb250ZW50Ci0gIHNvcnQgb3JkZXIgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IHVw
ZGF0ZWQuCi0KLSAgYGBgamF2YXNjcmlwdAotICBzb25nc0NvbnRyb2xsZXIuc2V0KCdzb3J0UHJv
cGVydGllcycsIFsndGl0bGUnXSk7Ci0gIHNvbmdzQ29udHJvbGxlci5nZXQoJ2ZpcnN0T2JqZWN0
Jyk7IC8vIHt0cmFja051bWJlcjogMiwgdGl0bGU6ICdCYWNrIGluIHRoZSBVLlMuUy5SLid9Ci0K
LSAgc29uZ3NDb250cm9sbGVyLnRvZ2dsZVByb3BlcnR5KCdzb3J0QXNjZW5kaW5nJyk7Ci0gIHNv
bmdzQ29udHJvbGxlci5nZXQoJ2ZpcnN0T2JqZWN0Jyk7IC8vIHt0cmFja051bWJlcjogNCwgdGl0
bGU6ICdPYi1MYS1EaSwgT2ItTGEtRGEnfQotICBgYGAKLQotICBTb3J0YWJsZU1peGluIHdvcmtz
IGJ5IHNvcnRpbmcgdGhlIGFycmFuZ2VkQ29udGVudCBhcnJheSwgd2hpY2ggaXMgdGhlIGFycmF5
IHRoYXQKLSAgYXJyYXlQcm94eSBkaXNwbGF5cy4gRHVlIHRvIHRoZSBmYWN0IHRoYXQgdGhlIHVu
ZGVybHlpbmcgJ2NvbnRlbnQnIGFycmF5IGlzIG5vdCBjaGFuZ2VkLCB0aGF0Ci0gIGFycmF5IHdp
bGwgbm90IGRpc3BsYXkgdGhlIHNvcnRlZCBsaXN0OgotCi0gICBgYGBqYXZhc2NyaXB0Ci0gIHNv
bmdzQ29udHJvbGxlci5nZXQoJ2NvbnRlbnQnKS5nZXQoJ2ZpcnN0T2JqZWN0Jyk7IC8vIFJldHVy
bnMgdGhlIHVuc29ydGVkIG9yaWdpbmFsIGNvbnRlbnQKLSAgc29uZ3NDb250cm9sbGVyLmdldCgn
Zmlyc3RPYmplY3QnKTsgLy8gUmV0dXJucyB0aGUgc29ydGVkIGNvbnRlbnQuCi0gIGBgYCAKLSAg
Ci0gIEFsdGhvdWdoIHRoZSBzb3J0ZWQgY29udGVudCBjYW4gYWxzbyBiZSBhY2Nlc3NlZCB0aHJv
dWdoIHRoZSBhcnJhbmdlZENvbnRlbnQgcHJvcGVydHksCi0gIGl0IGlzIHByZWZlcmFibGUgdG8g
dXNlIHRoZSBwcm94aWVkIGNsYXNzIGFuZCBub3QgdGhlIGFycmFuZ2VkQ29udGVudCBhcnJheSBk
aXJlY3RseS4KLQotICBAY2xhc3MgU29ydGFibGVNaXhpbgotICBAbmFtZXNwYWNlIEVtYmVyCi0g
IEB1c2VzIEVtYmVyLk11dGFibGVFbnVtZXJhYmxlCi0qLwotRW1iZXIuU29ydGFibGVNaXhpbiA9
IEVtYmVyLk1peGluLmNyZWF0ZShFbWJlci5NdXRhYmxlRW51bWVyYWJsZSwgewotCi0gIC8qKgot
ICAgIFNwZWNpZmllcyB3aGljaCBwcm9wZXJ0aWVzIGRpY3RhdGUgdGhlIGFycmFuZ2VkQ29udGVu
dCdzIHNvcnQgb3JkZXIuCi0KLSAgICBXaGVuIHNwZWNpZnlpbmcgbXVsdGlwbGUgcHJvcGVydGll
cyB0aGUgc29ydGluZyB3aWxsIHVzZSBwcm9wZXJ0aWVzCi0gICAgZnJvbSB0aGUgYHNvcnRQcm9w
ZXJ0aWVzYCBhcnJheSBwcmlvcml0aXplZCBmcm9tIGZpcnN0IHRvIGxhc3QuCi0KLSAgICBAcHJv
cGVydHkge0FycmF5fSBzb3J0UHJvcGVydGllcwotICAqLwotICBzb3J0UHJvcGVydGllczogbnVs
bCwKLQotICAvKioKLSAgICBTcGVjaWZpZXMgdGhlIGFycmFuZ2VkQ29udGVudCdzIHNvcnQgZGly
ZWN0aW9uCi0KLSAgICBAcHJvcGVydHkge0Jvb2xlYW59IHNvcnRBc2NlbmRpbmcKLSAgKi8KLSAg
c29ydEFzY2VuZGluZzogdHJ1ZSwKLQotICAvKioKLSAgICBUaGUgZnVuY3Rpb24gdXNlZCB0byBj
b21wYXJlIHR3byB2YWx1ZXMuIFlvdSBjYW4gb3ZlcnJpZGUgdGhpcyBpZiB5b3UKLSAgICB3YW50
IHRvIGRvIGN1c3RvbSBjb21wYXJpc29ucy4gRnVuY3Rpb25zIG11c3QgYmUgb2YgdGhlIHR5cGUg
ZXhwZWN0ZWQgYnkKLSAgICBBcnJheSNzb3J0LCBpLmUuCi0gICAgICByZXR1cm4gMCBpZiB0aGUg
dHdvIHBhcmFtZXRlcnMgYXJlIGVxdWFsLAotICAgICAgcmV0dXJuIGEgbmVnYXRpdmUgdmFsdWUg
aWYgdGhlIGZpcnN0IHBhcmFtZXRlciBpcyBzbWFsbGVyIHRoYW4gdGhlIHNlY29uZCBvcgotICAg
ICAgcmV0dXJuIGEgcG9zaXRpdmUgdmFsdWUgb3RoZXJ3aXNlOgotCi0gICAgYGBgamF2YXNjcmlw
dAotICAgIGZ1bmN0aW9uKHgseSkgeyAvLyBUaGVzZSBhcmUgYXNzdW1lZCB0byBiZSBpbnRlZ2Vy
cwotICAgICAgaWYgKHggPT09IHkpCi0gICAgICAgIHJldHVybiAwOwotICAgICAgcmV0dXJuIHgg
PCB5ID8gLTEgOiAxOwotICAgIH0KLSAgICBgYGAKLQotICAgIEBwcm9wZXJ0eSBzb3J0RnVuY3Rp
b24KLSAgICBAdHlwZSB7RnVuY3Rpb259Ci0gICAgQGRlZmF1bHQgRW1iZXIuY29tcGFyZQotICAq
LwotICBzb3J0RnVuY3Rpb246IEVtYmVyLmNvbXBhcmUsCi0KLSAgb3JkZXJCeTogZnVuY3Rpb24o
aXRlbTEsIGl0ZW0yKSB7Ci0gICAgdmFyIHJlc3VsdCA9IDAsCi0gICAgICAgIHNvcnRQcm9wZXJ0
aWVzID0gZ2V0KHRoaXMsICdzb3J0UHJvcGVydGllcycpLAotICAgICAgICBzb3J0QXNjZW5kaW5n
ID0gZ2V0KHRoaXMsICdzb3J0QXNjZW5kaW5nJyksCi0gICAgICAgIHNvcnRGdW5jdGlvbiA9IGdl
dCh0aGlzLCAnc29ydEZ1bmN0aW9uJyk7Ci0KLSAgICBFbWJlci5hc3NlcnQoInlvdSBuZWVkIHRv
IGRlZmluZSBgc29ydFByb3BlcnRpZXNgIiwgISFzb3J0UHJvcGVydGllcyk7Ci0KLSAgICBmb3JF
YWNoKHNvcnRQcm9wZXJ0aWVzLCBmdW5jdGlvbihwcm9wZXJ0eU5hbWUpIHsKLSAgICAgIGlmIChy
ZXN1bHQgPT09IDApIHsKLSAgICAgICAgcmVzdWx0ID0gc29ydEZ1bmN0aW9uKGdldChpdGVtMSwg
cHJvcGVydHlOYW1lKSwgZ2V0KGl0ZW0yLCBwcm9wZXJ0eU5hbWUpKTsKLSAgICAgICAgaWYgKChy
ZXN1bHQgIT09IDApICYmICFzb3J0QXNjZW5kaW5nKSB7Ci0gICAgICAgICAgcmVzdWx0ID0gKC0x
KSAqIHJlc3VsdDsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0pOwotCi0gICAgcmV0dXJuIHJl
c3VsdDsKLSAgfSwKLQotICBkZXN0cm95OiBmdW5jdGlvbigpIHsKLSAgICB2YXIgY29udGVudCA9
IGdldCh0aGlzLCAnY29udGVudCcpLAotICAgICAgICBzb3J0UHJvcGVydGllcyA9IGdldCh0aGlz
LCAnc29ydFByb3BlcnRpZXMnKTsKLQotICAgIGlmIChjb250ZW50ICYmIHNvcnRQcm9wZXJ0aWVz
KSB7Ci0gICAgICBmb3JFYWNoKGNvbnRlbnQsIGZ1bmN0aW9uKGl0ZW0pIHsKLSAgICAgICAgZm9y
RWFjaChzb3J0UHJvcGVydGllcywgZnVuY3Rpb24oc29ydFByb3BlcnR5KSB7Ci0gICAgICAgICAg
RW1iZXIucmVtb3ZlT2JzZXJ2ZXIoaXRlbSwgc29ydFByb3BlcnR5LCB0aGlzLCAnY29udGVudEl0
ZW1Tb3J0UHJvcGVydHlEaWRDaGFuZ2UnKTsKLSAgICAgICAgfSwgdGhpcyk7Ci0gICAgICB9LCB0
aGlzKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdGhpcy5fc3VwZXIoKTsKLSAgfSwKLQotICBpc1Nv
cnRlZDogRW1iZXIuY29tcHV0ZWQuYm9vbCgnc29ydFByb3BlcnRpZXMnKSwKLQotICAvKioKLSAg
ICBPdmVycmlkZXMgdGhlIGRlZmF1bHQgYXJyYW5nZWRDb250ZW50IGZyb20gYXJyYXlQcm94eSBp
biBvcmRlciB0byBzb3J0IGJ5IHNvcnRGdW5jdGlvbi4KLSAgICBBbHNvIHNldHMgdXAgb2JzZXJ2
ZXJzIGZvciBlYWNoIHNvcnRQcm9wZXJ0eSBvbiBlYWNoIGl0ZW0gaW4gdGhlIGNvbnRlbnQgQXJy
YXkuCi0gICAgCi0gICAgQHByb3BlcnR5IGFycmFuZ2VkQ29udGVudAotICAqLwotCi0gIGFycmFu
Z2VkQ29udGVudDogRW1iZXIuY29tcHV0ZWQoJ2NvbnRlbnQnLCAnc29ydFByb3BlcnRpZXMuQGVh
Y2gnLCBmdW5jdGlvbihrZXksIHZhbHVlKSB7Ci0gICAgdmFyIGNvbnRlbnQgPSBnZXQodGhpcywg
J2NvbnRlbnQnKSwKLSAgICAgICAgaXNTb3J0ZWQgPSBnZXQodGhpcywgJ2lzU29ydGVkJyksCi0g
ICAgICAgIHNvcnRQcm9wZXJ0aWVzID0gZ2V0KHRoaXMsICdzb3J0UHJvcGVydGllcycpLAotICAg
ICAgICBzZWxmID0gdGhpczsKLQotICAgIGlmIChjb250ZW50ICYmIGlzU29ydGVkKSB7Ci0gICAg
ICBjb250ZW50ID0gY29udGVudC5zbGljZSgpOwotICAgICAgY29udGVudC5zb3J0KGZ1bmN0aW9u
KGl0ZW0xLCBpdGVtMikgewotICAgICAgICByZXR1cm4gc2VsZi5vcmRlckJ5KGl0ZW0xLCBpdGVt
Mik7Ci0gICAgICB9KTsKLSAgICAgIGZvckVhY2goY29udGVudCwgZnVuY3Rpb24oaXRlbSkgewot
ICAgICAgICBmb3JFYWNoKHNvcnRQcm9wZXJ0aWVzLCBmdW5jdGlvbihzb3J0UHJvcGVydHkpIHsK
LSAgICAgICAgICBFbWJlci5hZGRPYnNlcnZlcihpdGVtLCBzb3J0UHJvcGVydHksIHRoaXMsICdj
b250ZW50SXRlbVNvcnRQcm9wZXJ0eURpZENoYW5nZScpOwotICAgICAgICB9LCB0aGlzKTsKLSAg
ICAgIH0sIHRoaXMpOwotICAgICAgcmV0dXJuIEVtYmVyLkEoY29udGVudCk7Ci0gICAgfQotCi0g
ICAgcmV0dXJuIGNvbnRlbnQ7Ci0gIH0pLAotCi0gIF9jb250ZW50V2lsbENoYW5nZTogRW1iZXIu
YmVmb3JlT2JzZXJ2ZXIoJ2NvbnRlbnQnLCBmdW5jdGlvbigpIHsKLSAgICB2YXIgY29udGVudCA9
IGdldCh0aGlzLCAnY29udGVudCcpLAotICAgICAgICBzb3J0UHJvcGVydGllcyA9IGdldCh0aGlz
LCAnc29ydFByb3BlcnRpZXMnKTsKLQotICAgIGlmIChjb250ZW50ICYmIHNvcnRQcm9wZXJ0aWVz
KSB7Ci0gICAgICBmb3JFYWNoKGNvbnRlbnQsIGZ1bmN0aW9uKGl0ZW0pIHsKLSAgICAgICAgZm9y
RWFjaChzb3J0UHJvcGVydGllcywgZnVuY3Rpb24oc29ydFByb3BlcnR5KSB7Ci0gICAgICAgICAg
RW1iZXIucmVtb3ZlT2JzZXJ2ZXIoaXRlbSwgc29ydFByb3BlcnR5LCB0aGlzLCAnY29udGVudEl0
ZW1Tb3J0UHJvcGVydHlEaWRDaGFuZ2UnKTsKLSAgICAgICAgfSwgdGhpcyk7Ci0gICAgICB9LCB0
aGlzKTsKLSAgICB9Ci0KLSAgICB0aGlzLl9zdXBlcigpOwotICB9KSwKLQotICBzb3J0QXNjZW5k
aW5nV2lsbENoYW5nZTogRW1iZXIuYmVmb3JlT2JzZXJ2ZXIoJ3NvcnRBc2NlbmRpbmcnLCBmdW5j
dGlvbigpIHsKLSAgICB0aGlzLl9sYXN0U29ydEFzY2VuZGluZyA9IGdldCh0aGlzLCAnc29ydEFz
Y2VuZGluZycpOwotICB9KSwKLQotICBzb3J0QXNjZW5kaW5nRGlkQ2hhbmdlOiBFbWJlci5vYnNl
cnZlcignc29ydEFzY2VuZGluZycsIGZ1bmN0aW9uKCkgewotICAgIGlmIChnZXQodGhpcywgJ3Nv
cnRBc2NlbmRpbmcnKSAhPT0gdGhpcy5fbGFzdFNvcnRBc2NlbmRpbmcpIHsKLSAgICAgIHZhciBh
cnJhbmdlZENvbnRlbnQgPSBnZXQodGhpcywgJ2FycmFuZ2VkQ29udGVudCcpOwotICAgICAgYXJy
YW5nZWRDb250ZW50LnJldmVyc2VPYmplY3RzKCk7Ci0gICAgfQotICB9KSwKLQotICBjb250ZW50
QXJyYXlXaWxsQ2hhbmdlOiBmdW5jdGlvbihhcnJheSwgaWR4LCByZW1vdmVkQ291bnQsIGFkZGVk
Q291bnQpIHsKLSAgICB2YXIgaXNTb3J0ZWQgPSBnZXQodGhpcywgJ2lzU29ydGVkJyk7Ci0KLSAg
ICBpZiAoaXNTb3J0ZWQpIHsKLSAgICAgIHZhciBhcnJhbmdlZENvbnRlbnQgPSBnZXQodGhpcywg
J2FycmFuZ2VkQ29udGVudCcpOwotICAgICAgdmFyIHJlbW92ZWRPYmplY3RzID0gYXJyYXkuc2xp
Y2UoaWR4LCBpZHgrcmVtb3ZlZENvdW50KTsKLSAgICAgIHZhciBzb3J0UHJvcGVydGllcyA9IGdl
dCh0aGlzLCAnc29ydFByb3BlcnRpZXMnKTsKLQotICAgICAgZm9yRWFjaChyZW1vdmVkT2JqZWN0
cywgZnVuY3Rpb24oaXRlbSkgewotICAgICAgICBhcnJhbmdlZENvbnRlbnQucmVtb3ZlT2JqZWN0
KGl0ZW0pOwotCi0gICAgICAgIGZvckVhY2goc29ydFByb3BlcnRpZXMsIGZ1bmN0aW9uKHNvcnRQ
cm9wZXJ0eSkgewotICAgICAgICAgIEVtYmVyLnJlbW92ZU9ic2VydmVyKGl0ZW0sIHNvcnRQcm9w
ZXJ0eSwgdGhpcywgJ2NvbnRlbnRJdGVtU29ydFByb3BlcnR5RGlkQ2hhbmdlJyk7Ci0gICAgICAg
IH0sIHRoaXMpOwotICAgICAgfSwgdGhpcyk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRoaXMuX3N1
cGVyKGFycmF5LCBpZHgsIHJlbW92ZWRDb3VudCwgYWRkZWRDb3VudCk7Ci0gIH0sCi0KLSAgY29u
dGVudEFycmF5RGlkQ2hhbmdlOiBmdW5jdGlvbihhcnJheSwgaWR4LCByZW1vdmVkQ291bnQsIGFk
ZGVkQ291bnQpIHsKLSAgICB2YXIgaXNTb3J0ZWQgPSBnZXQodGhpcywgJ2lzU29ydGVkJyksCi0g
ICAgICAgIHNvcnRQcm9wZXJ0aWVzID0gZ2V0KHRoaXMsICdzb3J0UHJvcGVydGllcycpOwotCi0g
ICAgaWYgKGlzU29ydGVkKSB7Ci0gICAgICB2YXIgYWRkZWRPYmplY3RzID0gYXJyYXkuc2xpY2Uo
aWR4LCBpZHgrYWRkZWRDb3VudCk7Ci0KLSAgICAgIGZvckVhY2goYWRkZWRPYmplY3RzLCBmdW5j
dGlvbihpdGVtKSB7Ci0gICAgICAgIHRoaXMuaW5zZXJ0SXRlbVNvcnRlZChpdGVtKTsKLQotICAg
ICAgICBmb3JFYWNoKHNvcnRQcm9wZXJ0aWVzLCBmdW5jdGlvbihzb3J0UHJvcGVydHkpIHsKLSAg
ICAgICAgICBFbWJlci5hZGRPYnNlcnZlcihpdGVtLCBzb3J0UHJvcGVydHksIHRoaXMsICdjb250
ZW50SXRlbVNvcnRQcm9wZXJ0eURpZENoYW5nZScpOwotICAgICAgICB9LCB0aGlzKTsKLSAgICAg
IH0sIHRoaXMpOwotICAgIH0KLQotICAgIHJldHVybiB0aGlzLl9zdXBlcihhcnJheSwgaWR4LCBy
ZW1vdmVkQ291bnQsIGFkZGVkQ291bnQpOwotICB9LAotCi0gIGluc2VydEl0ZW1Tb3J0ZWQ6IGZ1
bmN0aW9uKGl0ZW0pIHsKLSAgICB2YXIgYXJyYW5nZWRDb250ZW50ID0gZ2V0KHRoaXMsICdhcnJh
bmdlZENvbnRlbnQnKTsKLSAgICB2YXIgbGVuZ3RoID0gZ2V0KGFycmFuZ2VkQ29udGVudCwgJ2xl
bmd0aCcpOwotCi0gICAgdmFyIGlkeCA9IHRoaXMuX2JpbmFyeVNlYXJjaChpdGVtLCAwLCBsZW5n
dGgpOwotICAgIGFycmFuZ2VkQ29udGVudC5pbnNlcnRBdChpZHgsIGl0ZW0pOwotICB9LAotCi0g
IGNvbnRlbnRJdGVtU29ydFByb3BlcnR5RGlkQ2hhbmdlOiBmdW5jdGlvbihpdGVtKSB7Ci0gICAg
dmFyIGFycmFuZ2VkQ29udGVudCA9IGdldCh0aGlzLCAnYXJyYW5nZWRDb250ZW50JyksCi0gICAg
ICAgIG9sZEluZGV4ID0gYXJyYW5nZWRDb250ZW50LmluZGV4T2YoaXRlbSksCi0gICAgICAgIGxl
ZnRJdGVtID0gYXJyYW5nZWRDb250ZW50Lm9iamVjdEF0KG9sZEluZGV4IC0gMSksCi0gICAgICAg
IHJpZ2h0SXRlbSA9IGFycmFuZ2VkQ29udGVudC5vYmplY3RBdChvbGRJbmRleCArIDEpLAotICAg
ICAgICBsZWZ0UmVzdWx0ID0gbGVmdEl0ZW0gJiYgdGhpcy5vcmRlckJ5KGl0ZW0sIGxlZnRJdGVt
KSwKLSAgICAgICAgcmlnaHRSZXN1bHQgPSByaWdodEl0ZW0gJiYgdGhpcy5vcmRlckJ5KGl0ZW0s
IHJpZ2h0SXRlbSk7Ci0KLSAgICBpZiAobGVmdFJlc3VsdCA8IDAgfHwgcmlnaHRSZXN1bHQgPiAw
KSB7Ci0gICAgICBhcnJhbmdlZENvbnRlbnQucmVtb3ZlT2JqZWN0KGl0ZW0pOwotICAgICAgdGhp
cy5pbnNlcnRJdGVtU29ydGVkKGl0ZW0pOwotICAgIH0KLSAgfSwKLQotICBfYmluYXJ5U2VhcmNo
OiBmdW5jdGlvbihpdGVtLCBsb3csIGhpZ2gpIHsKLSAgICB2YXIgbWlkLCBtaWRJdGVtLCByZXMs
IGFycmFuZ2VkQ29udGVudDsKLQotICAgIGlmIChsb3cgPT09IGhpZ2gpIHsKLSAgICAgIHJldHVy
biBsb3c7Ci0gICAgfQotCi0gICAgYXJyYW5nZWRDb250ZW50ID0gZ2V0KHRoaXMsICdhcnJhbmdl
ZENvbnRlbnQnKTsKLQotICAgIG1pZCA9IGxvdyArIE1hdGguZmxvb3IoKGhpZ2ggLSBsb3cpIC8g
Mik7Ci0gICAgbWlkSXRlbSA9IGFycmFuZ2VkQ29udGVudC5vYmplY3RBdChtaWQpOwotCi0gICAg
cmVzID0gdGhpcy5vcmRlckJ5KG1pZEl0ZW0sIGl0ZW0pOwotCi0gICAgaWYgKHJlcyA8IDApIHsK
LSAgICAgIHJldHVybiB0aGlzLl9iaW5hcnlTZWFyY2goaXRlbSwgbWlkKzEsIGhpZ2gpOwotICAg
IH0gZWxzZSBpZiAocmVzID4gMCkgewotICAgICAgcmV0dXJuIHRoaXMuX2JpbmFyeVNlYXJjaChp
dGVtLCBsb3csIG1pZCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIG1pZDsKLSAgfQotfSk7Ci0KLX0p
KCk7Ci0KLQotCi0oZnVuY3Rpb24oKSB7Ci0vKioKLUBtb2R1bGUgZW1iZXIKLUBzdWJtb2R1bGUg
ZW1iZXItcnVudGltZQotKi8KLQotdmFyIGdldCA9IEVtYmVyLmdldCwgc2V0ID0gRW1iZXIuc2V0
LCBmb3JFYWNoID0gRW1iZXIuRW51bWVyYWJsZVV0aWxzLmZvckVhY2gsCi0gICAgcmVwbGFjZSA9
IEVtYmVyLkVudW1lcmFibGVVdGlscy5yZXBsYWNlOwotCi0vKioKLSAgYEVtYmVyLkFycmF5Q29u
dHJvbGxlcmAgcHJvdmlkZXMgYSB3YXkgZm9yIHlvdSB0byBwdWJsaXNoIGEgY29sbGVjdGlvbiBv
ZgotICBvYmplY3RzIHNvIHRoYXQgeW91IGNhbiBlYXNpbHkgYmluZCB0byB0aGUgY29sbGVjdGlv
biBmcm9tIGEgSGFuZGxlYmFycwotICBgI2VhY2hgIGhlbHBlciwgYW4gYEVtYmVyLkNvbGxlY3Rp
b25WaWV3YCwgb3Igb3RoZXIgY29udHJvbGxlcnMuCi0KLSAgVGhlIGFkdmFudGFnZSBvZiB1c2lu
ZyBhbiBgQXJyYXlDb250cm9sbGVyYCBpcyB0aGF0IHlvdSBvbmx5IGhhdmUgdG8gc2V0IHVwCi0g
IHlvdXIgdmlldyBiaW5kaW5ncyBvbmNlOyB0byBjaGFuZ2Ugd2hhdCdzIGRpc3BsYXllZCwgc2lt
cGx5IHN3YXAgb3V0IHRoZQotICBgY29udGVudGAgcHJvcGVydHkgb24gdGhlIGNvbnRyb2xsZXIu
Ci0KLSAgRm9yIGV4YW1wbGUsIGltYWdpbmUgeW91IHdhbnRlZCB0byBkaXNwbGF5IGEgbGlzdCBv
ZiBpdGVtcyBmZXRjaGVkIHZpYSBhbiBYSFIKLSAgcmVxdWVzdC4gQ3JlYXRlIGFuIGBFbWJlci5B
cnJheUNvbnRyb2xsZXJgIGFuZCBzZXQgaXRzIGBjb250ZW50YCBwcm9wZXJ0eToKLQotICBgYGBq
YXZhc2NyaXB0Ci0gIE15QXBwLmxpc3RDb250cm9sbGVyID0gRW1iZXIuQXJyYXlDb250cm9sbGVy
LmNyZWF0ZSgpOwotCi0gICQuZ2V0KCdwZW9wbGUuanNvbicsIGZ1bmN0aW9uKGRhdGEpIHsKLSAg
ICBNeUFwcC5saXN0Q29udHJvbGxlci5zZXQoJ2NvbnRlbnQnLCBkYXRhKTsKLSAgfSk7Ci0gIGBg
YAotCi0gIFRoZW4sIGNyZWF0ZSBhIHZpZXcgdGhhdCBiaW5kcyB0byB5b3VyIG5ldyBjb250cm9s
bGVyOgotCi0gIGBgYGhhbmRsZWJhcnMKLSAge3sjZWFjaCBNeUFwcC5saXN0Q29udHJvbGxlcn19
Ci0gICAge3tmaXJzdE5hbWV9fSB7e2xhc3ROYW1lfX0KLSAge3svZWFjaH19Ci0gIGBgYAotCi0g
IEFsdGhvdWdoIHlvdSBhcmUgYmluZGluZyB0byB0aGUgY29udHJvbGxlciwgdGhlIGJlaGF2aW9y
IG9mIHRoaXMgY29udHJvbGxlcgotICBpcyB0byBwYXNzIHRocm91Z2ggYW55IG1ldGhvZHMgb3Ig
cHJvcGVydGllcyB0byB0aGUgdW5kZXJseWluZyBhcnJheS4gVGhpcwotICBjYXBhYmlsaXR5IGNv
bWVzIGZyb20gYEVtYmVyLkFycmF5UHJveHlgLCB3aGljaCB0aGlzIGNsYXNzIGluaGVyaXRzIGZy
b20uCi0KLSAgU29tZXRpbWVzIHlvdSB3YW50IHRvIGRpc3BsYXkgY29tcHV0ZWQgcHJvcGVydGll
cyB3aXRoaW4gdGhlIGJvZHkgb2YgYW4KLSAgYCNlYWNoYCBoZWxwZXIgdGhhdCBkZXBlbmQgb24g
dGhlIHVuZGVybHlpbmcgaXRlbXMgaW4gYGNvbnRlbnRgLCBidXQgYXJlIG5vdAotICBwcmVzZW50
IG9uIHRob3NlIGl0ZW1zLiAgIFRvIGRvIHRoaXMsIHNldCBgaXRlbUNvbnRyb2xsZXJgIHRvIHRo
ZSBuYW1lIG9mIGEKLSAgY29udHJvbGxlciAocHJvYmFibHkgYW4gYE9iamVjdENvbnRyb2xsZXJg
KSB0aGF0IHdpbGwgd3JhcCBlYWNoIGluZGl2aWR1YWwgaXRlbS4KLQotICBGb3IgZXhhbXBsZToK
LQotICBgYGBoYW5kbGViYXJzCi0gICAge3sjZWFjaCBwb3N0IGluIGNvbnRyb2xsZXJ9fQotICAg
ICAgPGxpPnt7dGl0bGV9fSAoe3t0aXRsZUxlbmd0aH19IGNoYXJhY3RlcnMpPC9saT4KLSAgICB7
ey9lYWNofX0KLSAgYGBgCi0KLSAgYGBgamF2YXNjcmlwdAotICBBcHAuUG9zdHNDb250cm9sbGVy
ID0gRW1iZXIuQXJyYXlDb250cm9sbGVyLmV4dGVuZCh7Ci0gICAgaXRlbUNvbnRyb2xsZXI6ICdw
b3N0JwotICB9KTsKLQotICBBcHAuUG9zdENvbnRyb2xsZXIgPSBFbWJlci5PYmplY3RDb250cm9s
bGVyLmV4dGVuZCh7Ci0gICAgLy8gdGhlIGB0aXRsZWAgcHJvcGVydHkgd2lsbCBiZSBwcm94aWVk
IHRvIHRoZSB1bmRlcmx5aW5nIHBvc3QuCi0KLSAgICB0aXRsZUxlbmd0aDogZnVuY3Rpb24oKSB7
Ci0gICAgICByZXR1cm4gdGhpcy5nZXQoJ3RpdGxlJykubGVuZ3RoOwotICAgIH0ucHJvcGVydHko
J3RpdGxlJykKLSAgfSk7Ci0gIGBgYAotCi0gIEluIHNvbWUgY2FzZXMgaXQgaXMgaGVscGZ1bCB0
byByZXR1cm4gYSBkaWZmZXJlbnQgYGl0ZW1Db250cm9sbGVyYCBkZXBlbmRpbmcKLSAgb24gdGhl
IHBhcnRpY3VsYXIgaXRlbS4gIFN1YmNsYXNzZXMgY2FuIGRvIHRoaXMgYnkgb3ZlcnJpZGluZwot
ICBgbG9va3VwSXRlbUNvbnRyb2xsZXJgLgotCi0gIEZvciBleGFtcGxlOgotCi0gIGBgYGphdmFz
Y3JpcHQKLSAgQXBwLk15QXJyYXlDb250cm9sbGVyID0gRW1iZXIuQXJyYXlDb250cm9sbGVyLmV4
dGVuZCh7Ci0gICAgbG9va3VwSXRlbUNvbnRyb2xsZXI6IGZ1bmN0aW9uKCBvYmplY3QgKSB7Ci0g
ICAgICBpZiAob2JqZWN0LmdldCgnaXNTcGVjaWFsJykpIHsKLSAgICAgICAgcmV0dXJuICJzcGVj
aWFsIjsgLy8gdXNlIEFwcC5TcGVjaWFsQ29udHJvbGxlcgotICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgcmV0dXJuICJyZWd1bGFyIjsgLy8gdXNlIEFwcC5SZWd1bGFyQ29udHJvbGxlcgotICAgICAg
fQotICAgIH0KLSAgfSk7Ci0gIGBgYAotCi0gIFRoZSBpdGVtQ29udHJvbGxlciBpbnN0YW5jZXMg
d2lsbCBoYXZlIGEgYHBhcmVudENvbnRyb2xsZXJgIHByb3BlcnR5IHNldCB0bwotICBlaXRoZXIg
dGhlIHRoZSBgcGFyZW50Q29udHJvbGxlcmAgcHJvcGVydHkgb2YgdGhlIGBBcnJheUNvbnRyb2xs
ZXJgCi0gIG9yIHRvIHRoZSBgQXJyYXlDb250cm9sbGVyYCBpbnN0YW5jZSBpdHNlbGYuCi0KLSAg
QGNsYXNzIEFycmF5Q29udHJvbGxlcgotICBAbmFtZXNwYWNlIEVtYmVyCi0gIEBleHRlbmRzIEVt
YmVyLkFycmF5UHJveHkKLSAgQHVzZXMgRW1iZXIuU29ydGFibGVNaXhpbgotICBAdXNlcyBFbWJl
ci5Db250cm9sbGVyTWl4aW4KLSovCi0KLUVtYmVyLkFycmF5Q29udHJvbGxlciA9IEVtYmVyLkFy
cmF5UHJveHkuZXh0ZW5kKEVtYmVyLkNvbnRyb2xsZXJNaXhpbiwKLSAgRW1iZXIuU29ydGFibGVN
aXhpbiwgewotCi0gIC8qKgotICAgIFRoZSBjb250cm9sbGVyIHVzZWQgdG8gd3JhcCBpdGVtcywg
aWYgYW55LgotCi0gICAgQHByb3BlcnR5IGl0ZW1Db250cm9sbGVyCi0gICAgQHR5cGUgU3RyaW5n
Ci0gICAgQGRlZmF1bHQgbnVsbAotICAqLwotICBpdGVtQ29udHJvbGxlcjogbnVsbCwKLQotICAv
KioKLSAgICBSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGNvbnRyb2xsZXIgdG8gd3JhcCBpdGVtcywg
b3IgYG51bGxgIGlmIGl0ZW1zIHNob3VsZAotICAgIGJlIHJldHVybmVkIGRpcmVjdGx5LiAgVGhl
IGRlZmF1bHQgaW1wbGVtZW50YXRpb24gc2ltcGx5IHJldHVybnMgdGhlCi0gICAgYGl0ZW1Db250
cm9sbGVyYCBwcm9wZXJ0eSwgYnV0IHN1YmNsYXNzZXMgY2FuIG92ZXJyaWRlIHRoaXMgbWV0aG9k
IHRvIHJldHVybgotICAgIGRpZmZlcmVudCBjb250cm9sbGVycyBmb3IgZGlmZmVyZW50IG9iamVj
dHMuCi0KLSAgICBGb3IgZXhhbXBsZToKLQotICAgIGBgYGphdmFzY3JpcHQKLSAgICBBcHAuTXlB
cnJheUNvbnRyb2xsZXIgPSBFbWJlci5BcnJheUNvbnRyb2xsZXIuZXh0ZW5kKHsKLSAgICAgIGxv
b2t1cEl0ZW1Db250cm9sbGVyOiBmdW5jdGlvbiggb2JqZWN0ICkgewotICAgICAgICBpZiAob2Jq
ZWN0LmdldCgnaXNTcGVjaWFsJykpIHsKLSAgICAgICAgICByZXR1cm4gInNwZWNpYWwiOyAvLyB1
c2UgQXBwLlNwZWNpYWxDb250cm9sbGVyCi0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgcmV0
dXJuICJyZWd1bGFyIjsgLy8gdXNlIEFwcC5SZWd1bGFyQ29udHJvbGxlcgotICAgICAgICB9Ci0g
ICAgICB9Ci0gICAgfSk7Ci0gICAgYGBgCi0KLSAgICBAbWV0aG9kIGxvb2t1cEl0ZW1Db250cm9s
bGVyCi0gICAgQHBhcmFtIHtPYmplY3R9IG9iamVjdAotICAgIEByZXR1cm4ge1N0cmluZ30KLSAg
Ki8KLSAgbG9va3VwSXRlbUNvbnRyb2xsZXI6IGZ1bmN0aW9uKG9iamVjdCkgewotICAgIHJldHVy
biBnZXQodGhpcywgJ2l0ZW1Db250cm9sbGVyJyk7Ci0gIH0sCi0KLSAgb2JqZWN0QXRDb250ZW50
OiBmdW5jdGlvbihpZHgpIHsKLSAgICB2YXIgbGVuZ3RoID0gZ2V0KHRoaXMsICdsZW5ndGgnKSwK
LSAgICAgICAgYXJyYW5nZWRDb250ZW50ID0gZ2V0KHRoaXMsJ2FycmFuZ2VkQ29udGVudCcpLAot
ICAgICAgICBvYmplY3QgPSBhcnJhbmdlZENvbnRlbnQgJiYgYXJyYW5nZWRDb250ZW50Lm9iamVj
dEF0KGlkeCk7Ci0KLSAgICBpZiAoaWR4ID49IDAgJiYgaWR4IDwgbGVuZ3RoKSB7Ci0gICAgICB2
YXIgY29udHJvbGxlckNsYXNzID0gdGhpcy5sb29rdXBJdGVtQ29udHJvbGxlcihvYmplY3QpOwot
ICAgICAgaWYgKGNvbnRyb2xsZXJDbGFzcykgewotICAgICAgICByZXR1cm4gdGhpcy5jb250cm9s
bGVyQXQoaWR4LCBvYmplY3QsIGNvbnRyb2xsZXJDbGFzcyk7Ci0gICAgICB9Ci0gICAgfQotCi0g
ICAgLy8gV2hlbiBgY29udHJvbGxlckNsYXNzYCBpcyBmYWxzeSwgd2UgaGF2ZSBub3Qgb3B0ZWQg
aW4gdG8gdXNpbmcgaXRlbQotICAgIC8vIGNvbnRyb2xsZXJzLCBzbyByZXR1cm4gdGhlIG9iamVj
dCBkaXJlY3RseS4KLQotICAgIC8vIFdoZW4gdGhlIGluZGV4IGlzIG91dCBvZiByYW5nZSwgd2Ug
d2FudCB0byByZXR1cm4gdGhlICJvdXQgb2YgcmFuZ2UiCi0gICAgLy8gdmFsdWUsIHdoYXRldmVy
IHRoYXQgbWlnaHQgYmUuICBSYXRoZXIgdGhhbiBtYWtlIGFzc3VtcHRpb25zCi0gICAgLy8gKGUu
Zy4gZ3Vlc3NpbmcgYG51bGxgIG9yIGB1bmRlZmluZWRgKSB3ZSBkZWZlciB0aGlzIHRvIGBhcnJh
bmdlZENvbnRlbnRgLgotICAgIHJldHVybiBvYmplY3Q7Ci0gIH0sCi0KLSAgYXJyYW5nZWRDb250
ZW50RGlkQ2hhbmdlOiBmdW5jdGlvbigpIHsKLSAgICB0aGlzLl9zdXBlcigpOwotICAgIHRoaXMu
X3Jlc2V0U3ViQ29udHJvbGxlcnMoKTsKLSAgfSwKLQotICBhcnJheUNvbnRlbnREaWRDaGFuZ2U6
IGZ1bmN0aW9uKGlkeCwgcmVtb3ZlZENudCwgYWRkZWRDbnQpIHsKLSAgICB2YXIgc3ViQ29udHJv
bGxlcnMgPSBnZXQodGhpcywgJ19zdWJDb250cm9sbGVycycpLAotICAgICAgICBzdWJDb250cm9s
bGVyc1RvUmVtb3ZlID0gc3ViQ29udHJvbGxlcnMuc2xpY2UoaWR4LCBpZHgrcmVtb3ZlZENudCk7
Ci0KLSAgICBmb3JFYWNoKHN1YkNvbnRyb2xsZXJzVG9SZW1vdmUsIGZ1bmN0aW9uKHN1YkNvbnRy
b2xsZXIpIHsKLSAgICAgIGlmIChzdWJDb250cm9sbGVyKSB7IHN1YkNvbnRyb2xsZXIuZGVzdHJv
eSgpOyB9Ci0gICAgfSk7Ci0KLSAgICByZXBsYWNlKHN1YkNvbnRyb2xsZXJzLCBpZHgsIHJlbW92
ZWRDbnQsIG5ldyBBcnJheShhZGRlZENudCkpOwotCi0gICAgLy8gVGhlIHNoYWRvdyBhcnJheSBv
ZiBzdWJjb250cm9sbGVycyBtdXN0IGJlIHVwZGF0ZWQgYmVmb3JlIHdlIHRyaWdnZXIKLSAgICAv
LyBvYnNlcnZlcnMsIG90aGVyd2lzZSBvYnNlcnZlcnMgd2lsbCBnZXQgdGhlIHdyb25nIHN1YmNv
bnRhaW5lciB3aGVuCi0gICAgLy8gY2FsbGluZyBgb2JqZWN0QXRgCi0gICAgdGhpcy5fc3VwZXIo
aWR4LCByZW1vdmVkQ250LCBhZGRlZENudCk7Ci0gIH0sCi0KLSAgaW5pdDogZnVuY3Rpb24oKSB7
Ci0gICAgdGhpcy5fc3VwZXIoKTsKLQotICAgIHRoaXMuc2V0KCdfc3ViQ29udHJvbGxlcnMnLCBF
bWJlci5BKCkpOwotICB9LAotCi0gIGNvbnRlbnQ6IEVtYmVyLmNvbXB1dGVkKGZ1bmN0aW9uICgp
IHsKLSAgICByZXR1cm4gRW1iZXIuQSgpOwotICB9KSwKLQotICBjb250cm9sbGVyQXQ6IGZ1bmN0
aW9uKGlkeCwgb2JqZWN0LCBjb250cm9sbGVyQ2xhc3MpIHsKLSAgICB2YXIgY29udGFpbmVyID0g
Z2V0KHRoaXMsICdjb250YWluZXInKSwKLSAgICAgICAgc3ViQ29udHJvbGxlcnMgPSBnZXQodGhp
cywgJ19zdWJDb250cm9sbGVycycpLAotICAgICAgICBzdWJDb250cm9sbGVyID0gc3ViQ29udHJv
bGxlcnNbaWR4XSwKLSAgICAgICAgZmFjdG9yeSwgZnVsbE5hbWU7Ci0KLSAgICBpZiAoc3ViQ29u
dHJvbGxlcikgeyByZXR1cm4gc3ViQ29udHJvbGxlcjsgfQotCi0gICAgZnVsbE5hbWUgPSAiY29u
dHJvbGxlcjoiICsgY29udHJvbGxlckNsYXNzOwotCi0gICAgaWYgKCFjb250YWluZXIuaGFzKGZ1
bGxOYW1lKSkgewotICAgICAgdGhyb3cgbmV3IEVtYmVyLkVycm9yKCdDb3VsZCBub3QgcmVzb2x2
ZSBpdGVtQ29udHJvbGxlcjogIicgKyBjb250cm9sbGVyQ2xhc3MgKyAnIicpOwotICAgIH0KLQot
ICAgIHN1YkNvbnRyb2xsZXIgPSBjb250YWluZXIubG9va3VwRmFjdG9yeShmdWxsTmFtZSkuY3Jl
YXRlKHsKLSAgICAgIHRhcmdldDogdGhpcywKLSAgICAgIHBhcmVudENvbnRyb2xsZXI6IGdldCh0
aGlzLCAncGFyZW50Q29udHJvbGxlcicpIHx8IHRoaXMsCi0gICAgICBjb250ZW50OiBvYmplY3QK
LSAgICB9KTsKLQotICAgIHN1YkNvbnRyb2xsZXJzW2lkeF0gPSBzdWJDb250cm9sbGVyOwotCi0g
ICAgcmV0dXJuIHN1YkNvbnRyb2xsZXI7Ci0gIH0sCi0KLSAgX3N1YkNvbnRyb2xsZXJzOiBudWxs
LAotCi0gIF9yZXNldFN1YkNvbnRyb2xsZXJzOiBmdW5jdGlvbigpIHsKLSAgICB2YXIgc3ViQ29u
dHJvbGxlcnMgPSBnZXQodGhpcywgJ19zdWJDb250cm9sbGVycycpOwotICAgIGlmIChzdWJDb250
cm9sbGVycykgewotICAgICAgZm9yRWFjaChzdWJDb250cm9sbGVycywgZnVuY3Rpb24oc3ViQ29u
dHJvbGxlcikgewotICAgICAgICBpZiAoc3ViQ29udHJvbGxlcikgeyBzdWJDb250cm9sbGVyLmRl
c3Ryb3koKTsgfQotICAgICAgfSk7Ci0gICAgfQotCi0gICAgdGhpcy5zZXQoJ19zdWJDb250cm9s
bGVycycsIEVtYmVyLkEoKSk7Ci0gIH0KLX0pOwotCi19KSgpOwotCi0KLQotKGZ1bmN0aW9uKCkg
ewotLyoqCi1AbW9kdWxlIGVtYmVyCi1Ac3VibW9kdWxlIGVtYmVyLXJ1bnRpbWUKLSovCi0KLS8q
KgotICBgRW1iZXIuT2JqZWN0Q29udHJvbGxlcmAgaXMgcGFydCBvZiBFbWJlcidzIENvbnRyb2xs
ZXIgbGF5ZXIuIEl0IGlzIGludGVuZGVkCi0gIHRvIHdyYXAgYSBzaW5nbGUgb2JqZWN0LCBwcm94
eWluZyB1bmhhbmRsZWQgYXR0ZW1wdHMgdG8gYGdldGAgYW5kIGBzZXRgIHRvIHRoZSB1bmRlcmx5
aW5nCi0gIGNvbnRlbnQgb2JqZWN0LCBhbmQgdG8gZm9yd2FyZCB1bmhhbmRsZWQgYWN0aW9uIGF0
dGVtcHRzIHRvIGl0cyBgdGFyZ2V0YC4KLQotICBgRW1iZXIuT2JqZWN0Q29udHJvbGxlcmAgZGVy
aXZlcyB0aGlzIGZ1bmN0aW9uYWxpdHkgZnJvbSBpdHMgc3VwZXJjbGFzcwotICBgRW1iZXIuT2Jq
ZWN0UHJveHlgIGFuZCB0aGUgYEVtYmVyLkNvbnRyb2xsZXJNaXhpbmAgbWl4aW4uCi0KLSAgQGNs
YXNzIE9iamVjdENvbnRyb2xsZXIKLSAgQG5hbWVzcGFjZSBFbWJlcgotICBAZXh0ZW5kcyBFbWJl
ci5PYmplY3RQcm94eQotICBAdXNlcyBFbWJlci5Db250cm9sbGVyTWl4aW4KLSoqLwotRW1iZXIu
T2JqZWN0Q29udHJvbGxlciA9IEVtYmVyLk9iamVjdFByb3h5LmV4dGVuZChFbWJlci5Db250cm9s
bGVyTWl4aW4pOwotCi19KSgpOwotCi0KLQotKGZ1bmN0aW9uKCkgewotCi19KSgpOwotCi0KLQot
KGZ1bmN0aW9uKCkgewotLyoqCi1FbWJlciBSdW50aW1lCi0KLUBtb2R1bGUgZW1iZXIKLUBzdWJt
b2R1bGUgZW1iZXItcnVudGltZQotQHJlcXVpcmVzIGVtYmVyLW1ldGFsCi0qLwotCi19KSgpOwot
Ci0oZnVuY3Rpb24oKSB7Ci0vKioKLUBtb2R1bGUgZW1iZXIKLUBzdWJtb2R1bGUgZW1iZXItdmll
d3MKLSovCi0KLXZhciBqUXVlcnkgPSB0aGlzLmpRdWVyeSB8fCAoRW1iZXIuaW1wb3J0cyAmJiBF
bWJlci5pbXBvcnRzLmpRdWVyeSk7Ci1pZiAoIWpRdWVyeSAmJiB0eXBlb2YgcmVxdWlyZSA9PT0g
J2Z1bmN0aW9uJykgewotICBqUXVlcnkgPSByZXF1aXJlKCdqcXVlcnknKTsKLX0KLQotRW1iZXIu
YXNzZXJ0KCJFbWJlciBWaWV3cyByZXF1aXJlIGpRdWVyeSBiZXR3ZWVuIDEuNyBhbmQgMi4xIiwg
alF1ZXJ5ICYmIChqUXVlcnkoKS5qcXVlcnkubWF0Y2goL14oKDFcLig3fDh8OXwxMHwxMSkpfCgy
XC4oMHwxKSkpKFwuXGQrKT8ocHJlfHJjXGQ/KT8vKSB8fCBFbWJlci5FTlYuRk9SQ0VfSlFVRVJZ
KSk7Ci0KLS8qKgotICBBbGlhcyBmb3IgalF1ZXJ5Ci0KLSAgQG1ldGhvZCAkCi0gIEBmb3IgRW1i
ZXIKLSovCi1FbWJlci4kID0galF1ZXJ5OwotCi19KSgpOwotCi0KLQotKGZ1bmN0aW9uKCkgewot
LyoqCi1AbW9kdWxlIGVtYmVyCi1Ac3VibW9kdWxlIGVtYmVyLXZpZXdzCi0qLwotaWYgKEVtYmVy
LiQpIHsKLSAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQt
d29yay9tdWx0aXBhZ2UvZG5kLmh0bWwjZG5kZXZlbnRzCi0gIHZhciBkcmFnRXZlbnRzID0gRW1i
ZXIuU3RyaW5nLncoJ2RyYWdzdGFydCBkcmFnIGRyYWdlbnRlciBkcmFnbGVhdmUgZHJhZ292ZXIg
ZHJvcCBkcmFnZW5kJyk7Ci0KLSAgLy8gQ29waWVzIHRoZSBgZGF0YVRyYW5zZmVyYCBwcm9wZXJ0
eSBmcm9tIGEgYnJvd3NlciBldmVudCBvYmplY3Qgb250byB0aGUKLSAgLy8galF1ZXJ5IGV2ZW50
IG9iamVjdCBmb3IgdGhlIHNwZWNpZmllZCBldmVudHMKLSAgRW1iZXIuRW51bWVyYWJsZVV0aWxz
LmZvckVhY2goZHJhZ0V2ZW50cywgZnVuY3Rpb24oZXZlbnROYW1lKSB7Ci0gICAgRW1iZXIuJC5l
dmVudC5maXhIb29rc1tldmVudE5hbWVdID0geyBwcm9wczogWydkYXRhVHJhbnNmZXInXSB9Owot
ICB9KTsKLX0KLQotfSkoKTsKLQotCi0KLShmdW5jdGlvbigpIHsKLS8qKgotQG1vZHVsZSBlbWJl
cgotQHN1Ym1vZHVsZSBlbWJlci12aWV3cwotKi8KLQotLyogQkVHSU4gTUVUQU1PUlBIIEhFTFBF
UlMgKi8KLQotLy8gSW50ZXJuZXQgRXhwbG9yZXIgcHJpb3IgdG8gOSBkb2VzIG5vdCBhbGxvdyBz
ZXR0aW5nIGlubmVySFRNTCBpZiB0aGUgZmlyc3QgZWxlbWVudAotLy8gaXMgYSAiemVyby1zY29w
ZSIgZWxlbWVudC4gVGhpcyBwcm9ibGVtIGNhbiBiZSB3b3JrZWQgYXJvdW5kIGJ5IG1ha2luZwot
Ly8gdGhlIGZpcnN0IG5vZGUgYW4gaW52aXNpYmxlIHRleHQgbm9kZS4gV2UsIGxpa2UgTW9kZXJu
aXpyLCB1c2UgJnNoeTsKLQotdmFyIG5lZWRzU2h5ID0gdGhpcy5kb2N1bWVudCAmJiAoZnVuY3Rp
b24oKSB7Ci0gIHZhciB0ZXN0RWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKLSAg
dGVzdEVsLmlubmVySFRNTCA9ICI8ZGl2PjwvZGl2PiI7Ci0gIHRlc3RFbC5maXJzdENoaWxkLmlu
bmVySFRNTCA9ICI8c2NyaXB0Pjwvc2NyaXB0PiI7Ci0gIHJldHVybiB0ZXN0RWwuZmlyc3RDaGls
ZC5pbm5lckhUTUwgPT09ICcnOwotfSkoKTsKLQotLy8gSUUgOCAoYW5kIGxpa2VseSBlYXJsaWVy
KSBsaWtlcyB0byBtb3ZlIHdoaXRlc3BhY2UgcHJlY2VlZGluZwotLy8gYSBzY3JpcHQgdGFnIHRv
IGFwcGVhciBhZnRlciBpdC4gVGhpcyBtZWFucyB0aGF0IHdlIGNhbgotLy8gYWNjaWRlbnRhbGx5
IHJlbW92ZSB3aGl0ZXNwYWNlIHdoZW4gdXBkYXRpbmcgYSBtb3JwaC4KLXZhciBtb3Zlc1doaXRl
c3BhY2UgPSB0aGlzLmRvY3VtZW50ICYmIChmdW5jdGlvbigpIHsKLSAgdmFyIHRlc3RFbCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwotICB0ZXN0RWwuaW5uZXJIVE1MID0gIlRlc3Q6
IDxzY3JpcHQgdHlwZT0ndGV4dC94LXBsYWNlaG9sZGVyJz48L3NjcmlwdD5WYWx1ZSI7Ci0gIHJl
dHVybiB0ZXN0RWwuY2hpbGROb2Rlc1swXS5ub2RlVmFsdWUgPT09ICdUZXN0OicgJiYKLSAgICAg
ICAgICB0ZXN0RWwuY2hpbGROb2Rlc1syXS5ub2RlVmFsdWUgPT09ICcgVmFsdWUnOwotfSkoKTsK
LQotLy8gVXNlIHRoaXMgdG8gZmluZCBjaGlsZHJlbiBieSBJRCBpbnN0ZWFkIG9mIHVzaW5nIGpR
dWVyeQotdmFyIGZpbmRDaGlsZEJ5SWQgPSBmdW5jdGlvbihlbGVtZW50LCBpZCkgewotICBpZiAo
ZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2lkJykgPT09IGlkKSB7IHJldHVybiBlbGVtZW50OyB9Ci0K
LSAgdmFyIGxlbiA9IGVsZW1lbnQuY2hpbGROb2Rlcy5sZW5ndGgsIGlkeCwgbm9kZSwgZm91bmQ7
Ci0gIGZvciAoaWR4PTA7IGlkeDxsZW47IGlkeCsrKSB7Ci0gICAgbm9kZSA9IGVsZW1lbnQuY2hp
bGROb2Rlc1tpZHhdOwotICAgIGZvdW5kID0gbm9kZS5ub2RlVHlwZSA9PT0gMSAmJiBmaW5kQ2hp
bGRCeUlkKG5vZGUsIGlkKTsKLSAgICBpZiAoZm91bmQpIHsgcmV0dXJuIGZvdW5kOyB9Ci0gIH0K
LX07Ci0KLXZhciBzZXRJbm5lckhUTUxXaXRob3V0Rml4ID0gZnVuY3Rpb24oZWxlbWVudCwgaHRt
bCkgewotICBpZiAobmVlZHNTaHkpIHsKLSAgICBodG1sID0gJyZzaHk7JyArIGh0bWw7Ci0gIH0K
LQotICB2YXIgbWF0Y2hlcyA9IFtdOwotICBpZiAobW92ZXNXaGl0ZXNwYWNlKSB7Ci0gICAgLy8g
UmlnaHQgbm93IHdlIG9ubHkgY2hlY2sgZm9yIHNjcmlwdCB0YWdzIHdpdGggaWRzIHdpdGggdGhl
Ci0gICAgLy8gZ29hbCBvZiB0YXJnZXRpbmcgbW9ycGhzLgotICAgIGh0bWwgPSBodG1sLnJlcGxh
Y2UoLyhccyspKDxzY3JpcHQgaWQ9JyhbXiddKyknKS9nLCBmdW5jdGlvbihtYXRjaCwgc3BhY2Vz
LCB0YWcsIGlkKSB7Ci0gICAgICBtYXRjaGVzLnB1c2goW2lkLCBzcGFjZXNdKTsKLSAgICAgIHJl
dHVybiB0YWc7Ci0gICAgfSk7Ci0gIH0KLQotICBlbGVtZW50LmlubmVySFRNTCA9IGh0bWw7Ci0K
LSAgLy8gSWYgd2UgaGF2ZSB0byBkbyBhbnkgd2hpdGVzcGFjZSBhZGp1c3RtZW50cyBkbyB0aGVt
IG5vdwotICBpZiAobWF0Y2hlcy5sZW5ndGggPiAwKSB7Ci0gICAgdmFyIGxlbiA9IG1hdGNoZXMu
bGVuZ3RoLCBpZHg7Ci0gICAgZm9yIChpZHg9MDsgaWR4PGxlbjsgaWR4KyspIHsKLSAgICAgIHZh
ciBzY3JpcHQgPSBmaW5kQ2hpbGRCeUlkKGVsZW1lbnQsIG1hdGNoZXNbaWR4XVswXSksCi0gICAg
ICAgICAgbm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1hdGNoZXNbaWR4XVsxXSk7Ci0g
ICAgICBzY3JpcHQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobm9kZSwgc2NyaXB0KTsKLSAgICB9
Ci0gIH0KLQotICBpZiAobmVlZHNTaHkpIHsKLSAgICB2YXIgc2h5RWxlbWVudCA9IGVsZW1lbnQu
Zmlyc3RDaGlsZDsKLSAgICB3aGlsZSAoc2h5RWxlbWVudC5ub2RlVHlwZSA9PT0gMSAmJiAhc2h5
RWxlbWVudC5ub2RlTmFtZSkgewotICAgICAgc2h5RWxlbWVudCA9IHNoeUVsZW1lbnQuZmlyc3RD
aGlsZDsKLSAgICB9Ci0gICAgaWYgKHNoeUVsZW1lbnQubm9kZVR5cGUgPT09IDMgJiYgc2h5RWxl
bWVudC5ub2RlVmFsdWUuY2hhckF0KDApID09PSAiXHUwMEFEIikgewotICAgICAgc2h5RWxlbWVu
dC5ub2RlVmFsdWUgPSBzaHlFbGVtZW50Lm5vZGVWYWx1ZS5zbGljZSgxKTsKLSAgICB9Ci0gIH0K
LX07Ci0KLS8qIEVORCBNRVRBTU9SUEggSEVMUEVSUyAqLwotCi0KLXZhciBpbm5lckhUTUxUYWdz
ID0ge307Ci12YXIgY2FuU2V0SW5uZXJIVE1MID0gZnVuY3Rpb24odGFnTmFtZSkgewotICBpZiAo
aW5uZXJIVE1MVGFnc1t0YWdOYW1lXSAhPT0gdW5kZWZpbmVkKSB7Ci0gICAgcmV0dXJuIGlubmVy
SFRNTFRhZ3NbdGFnTmFtZV07Ci0gIH0KLQotICB2YXIgY2FuU2V0ID0gdHJ1ZTsKLQotICAvLyBJ
RSA4IGFuZCBlYXJsaWVyIGRvbid0IGFsbG93IHVzIHRvIGRvIGlubmVySFRNTCBvbiBzZWxlY3QK
LSAgaWYgKHRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ3NlbGVjdCcpIHsKLSAgICB2YXIgZWwg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzZWxlY3QnKTsKLSAgICBzZXRJbm5lckhUTUxXaXRo
b3V0Rml4KGVsLCAnPG9wdGlvbiB2YWx1ZT0idGVzdCI+VGVzdDwvb3B0aW9uPicpOwotICAgIGNh
blNldCA9IGVsLm9wdGlvbnMubGVuZ3RoID09PSAxOwotICB9Ci0KLSAgaW5uZXJIVE1MVGFnc1t0
YWdOYW1lXSA9IGNhblNldDsKLQotICByZXR1cm4gY2FuU2V0OwotfTsKLQotdmFyIHNldElubmVy
SFRNTCA9IGZ1bmN0aW9uKGVsZW1lbnQsIGh0bWwpIHsKLSAgdmFyIHRhZ05hbWUgPSBlbGVtZW50
LnRhZ05hbWU7Ci0KLSAgaWYgKGNhblNldElubmVySFRNTCh0YWdOYW1lKSkgewotICAgIHNldElu
bmVySFRNTFdpdGhvdXRGaXgoZWxlbWVudCwgaHRtbCk7Ci0gIH0gZWxzZSB7Ci0gICAgLy8gRmly
ZWZveCB2ZXJzaW9ucyA8IDExIGRvIG5vdCBoYXZlIHN1cHBvcnQgZm9yIGVsZW1lbnQub3V0ZXJI
VE1MLgotICAgIHZhciBvdXRlckhUTUwgPSBlbGVtZW50Lm91dGVySFRNTCB8fCBuZXcgWE1MU2Vy
aWFsaXplcigpLnNlcmlhbGl6ZVRvU3RyaW5nKGVsZW1lbnQpOwotICAgIEVtYmVyLmFzc2VydCgi
Q2FuJ3Qgc2V0IGlubmVySFRNTCBvbiAiK2VsZW1lbnQudGFnTmFtZSsiIGluIHRoaXMgYnJvd3Nl
ciIsIG91dGVySFRNTCk7Ci0KLSAgICB2YXIgc3RhcnRUYWcgPSBvdXRlckhUTUwubWF0Y2gobmV3
IFJlZ0V4cCgiPCIrdGFnTmFtZSsiKFtePl0qKT4iLCAnaScpKVswXSwKLSAgICAgICAgZW5kVGFn
ID0gJzwvJyt0YWdOYW1lKyc+JzsKLQotICAgIHZhciB3cmFwcGVyID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnZGl2Jyk7Ci0gICAgc2V0SW5uZXJIVE1MV2l0aG91dEZpeCh3cmFwcGVyLCBzdGFy
dFRhZyArIGh0bWwgKyBlbmRUYWcpOwotICAgIGVsZW1lbnQgPSB3cmFwcGVyLmZpcnN0Q2hpbGQ7
Ci0gICAgd2hpbGUgKGVsZW1lbnQudGFnTmFtZSAhPT0gdGFnTmFtZSkgewotICAgICAgZWxlbWVu
dCA9IGVsZW1lbnQubmV4dFNpYmxpbmc7Ci0gICAgfQotICB9Ci0KLSAgcmV0dXJuIGVsZW1lbnQ7
Ci19OwotCi1mdW5jdGlvbiBpc1NpbXBsZUNsaWNrKGV2ZW50KSB7Ci0gIHZhciBtb2RpZmllciA9
IGV2ZW50LnNoaWZ0S2V5IHx8IGV2ZW50Lm1ldGFLZXkgfHwgZXZlbnQuYWx0S2V5IHx8IGV2ZW50
LmN0cmxLZXksCi0gICAgICBzZWNvbmRhcnlDbGljayA9IGV2ZW50LndoaWNoID4gMTsgLy8gSUU5
IG1heSByZXR1cm4gdW5kZWZpbmVkCi0KLSAgcmV0dXJuICFtb2RpZmllciAmJiAhc2Vjb25kYXJ5
Q2xpY2s7Ci19Ci0KLUVtYmVyLlZpZXdVdGlscyA9IHsKLSAgc2V0SW5uZXJIVE1MOiBzZXRJbm5l
ckhUTUwsCi0gIGlzU2ltcGxlQ2xpY2s6IGlzU2ltcGxlQ2xpY2sKLX07Ci0KLX0pKCk7Ci0KLQot
Ci0oZnVuY3Rpb24oKSB7Ci0vKioKLUBtb2R1bGUgZW1iZXIKLUBzdWJtb2R1bGUgZW1iZXItdmll
d3MKLSovCi0KLXZhciBnZXQgPSBFbWJlci5nZXQsIHNldCA9IEVtYmVyLnNldDsKLQotdmFyIENs
YXNzU2V0ID0gZnVuY3Rpb24oKSB7Ci0gIHRoaXMuc2VlbiA9IHt9OwotICB0aGlzLmxpc3QgPSBb
XTsKLX07Ci0KLUNsYXNzU2V0LnByb3RvdHlwZSA9IHsKLSAgYWRkOiBmdW5jdGlvbihzdHJpbmcp
IHsKLSAgICBpZiAoc3RyaW5nIGluIHRoaXMuc2VlbikgeyByZXR1cm47IH0KLSAgICB0aGlzLnNl
ZW5bc3RyaW5nXSA9IHRydWU7Ci0KLSAgICB0aGlzLmxpc3QucHVzaChzdHJpbmcpOwotICB9LAot
Ci0gIHRvRE9NOiBmdW5jdGlvbigpIHsKLSAgICByZXR1cm4gdGhpcy5saXN0LmpvaW4oIiAiKTsK
LSAgfQotfTsKLQotdmFyIEJBRF9UQUdfTkFNRV9URVNUX1JFR0VYUCA9IC9bXmEtekEtWjAtOVwt
XS87Ci12YXIgQkFEX1RBR19OQU1FX1JFUExBQ0VfUkVHRVhQID0gL1teYS16QS1aMC05XC1dL2c7
Ci0KLWZ1bmN0aW9uIHN0cmlwVGFnTmFtZSh0YWdOYW1lKSB7Ci0gIGlmICghdGFnTmFtZSkgewot
ICAgIHJldHVybiB0YWdOYW1lOwotICB9Ci0KLSAgaWYgKCFCQURfVEFHX05BTUVfVEVTVF9SRUdF
WFAudGVzdCh0YWdOYW1lKSkgewotICAgIHJldHVybiB0YWdOYW1lOwotICB9Ci0KLSAgcmV0dXJu
IHRhZ05hbWUucmVwbGFjZShCQURfVEFHX05BTUVfUkVQTEFDRV9SRUdFWFAsICcnKTsKLX0KLQot
dmFyIEJBRF9DSEFSU19SRUdFWFAgPSAvJig/IVx3KzspfFs8PiInYF0vZzsKLXZhciBQT1NTSUJM
RV9DSEFSU19SRUdFWFAgPSAvWyY8PiInYF0vOwotCi1mdW5jdGlvbiBlc2NhcGVBdHRyaWJ1dGUo
dmFsdWUpIHsKLSAgLy8gU3RvbGVuIHNoYW1lbGVzc2x5IGZyb20gSGFuZGxlYmFycwotCi0gIHZh
ciBlc2NhcGUgPSB7Ci0gICAgIjwiOiAiJmx0OyIsCi0gICAgIj4iOiAiJmd0OyIsCi0gICAgJyIn
OiAiJnF1b3Q7IiwKLSAgICAiJyI6ICImI3gyNzsiLAotICAgICJgIjogIiYjeDYwOyIKLSAgfTsK
LQotICB2YXIgZXNjYXBlQ2hhciA9IGZ1bmN0aW9uKGNocikgewotICAgIHJldHVybiBlc2NhcGVb
Y2hyXSB8fCAiJmFtcDsiOwotICB9OwotCi0gIHZhciBzdHJpbmcgPSB2YWx1ZS50b1N0cmluZygp
OwotCi0gIGlmKCFQT1NTSUJMRV9DSEFSU19SRUdFWFAudGVzdChzdHJpbmcpKSB7IHJldHVybiBz
dHJpbmc7IH0KLSAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKEJBRF9DSEFSU19SRUdFWFAsIGVzY2Fw
ZUNoYXIpOwotfQotCi0vLyBJRSA2LzcgaGF2ZSBidWdzIGFyb25kIHNldHRpbmcgbmFtZXMgb24g
aW5wdXRzIGR1cmluZyBjcmVhdGlvbi4KLS8vIEZyb20gaHR0cDovL21zZG4ubWljcm9zb2Z0LmNv
bS9lbi11cy9saWJyYXJ5L2llL21zNTM2Mzg5KHY9dnMuODUpLmFzcHg6Ci0vLyAiVG8gaW5jbHVk
ZSB0aGUgTkFNRSBhdHRyaWJ1dGUgYXQgcnVuIHRpbWUgb24gb2JqZWN0cyBjcmVhdGVkIHdpdGgg
dGhlIGNyZWF0ZUVsZW1lbnQgbWV0aG9kLCB1c2UgdGhlIGVUYWcuIgotdmFyIGNhblNldE5hbWVP
bklucHV0cyA9IChmdW5jdGlvbigpIHsKLSAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2RpdicpLAotICAgICAgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpOwot
Ci0gIGVsLnNldEF0dHJpYnV0ZSgnbmFtZScsICdmb28nKTsKLSAgZGl2LmFwcGVuZENoaWxkKGVs
KTsKLQotICByZXR1cm4gISFkaXYuaW5uZXJIVE1MLm1hdGNoKCdmb28nKTsKLX0pKCk7Ci0KLS8q
KgotICBgRW1iZXIuUmVuZGVyQnVmZmVyYCBnYXRoZXJzIGluZm9ybWF0aW9uIHJlZ2FyZGluZyB0
aGUgYSB2aWV3IGFuZCBnZW5lcmF0ZXMgdGhlCi0gIGZpbmFsIHJlcHJlc2VudGF0aW9uLiBgRW1i
ZXIuUmVuZGVyQnVmZmVyYCB3aWxsIGdlbmVyYXRlIEhUTUwgd2hpY2ggY2FuIGJlIHB1c2hlZAot
ICB0byB0aGUgRE9NLgotCi0gICBgYGBqYXZhc2NyaXB0Ci0gICB2YXIgYnVmZmVyID0gRW1iZXIu
UmVuZGVyQnVmZmVyKCdkaXYnKTsKLSAgYGBgCi0KLSAgQGNsYXNzIFJlbmRlckJ1ZmZlcgotICBA
bmFtZXNwYWNlIEVtYmVyCi0gIEBjb25zdHJ1Y3RvcgotICBAcGFyYW0ge1N0cmluZ30gdGFnTmFt
ZSB0YWcgbmFtZSAoc3VjaCBhcyAnZGl2JyBvciAncCcpIHVzZWQgZm9yIHRoZSBidWZmZXIKLSov
Ci1FbWJlci5SZW5kZXJCdWZmZXIgPSBmdW5jdGlvbih0YWdOYW1lKSB7Ci0gIHJldHVybiBuZXcg
RW1iZXIuX1JlbmRlckJ1ZmZlcih0YWdOYW1lKTsKLX07Ci0KLUVtYmVyLl9SZW5kZXJCdWZmZXIg
PSBmdW5jdGlvbih0YWdOYW1lKSB7Ci0gIHRoaXMudGFnTmFtZXMgPSBbdGFnTmFtZSB8fCBudWxs
XTsKLSAgdGhpcy5idWZmZXIgPSAiIjsKLX07Ci0KLUVtYmVyLl9SZW5kZXJCdWZmZXIucHJvdG90
eXBlID0gewotCi0gIC8vIFRoZSByb290IHZpZXcncyBlbGVtZW50Ci0gIF9lbGVtZW50OiBudWxs
LAotCi0gIF9oYXNFbGVtZW50OiB0cnVlLAotCi0gIC8qKgotICAgIEFuIGludGVybmFsIHNldCB1
c2VkIHRvIGRlLWR1cGUgY2xhc3MgbmFtZXMgd2hlbiBgYWRkQ2xhc3MoKWAgaXMKLSAgICB1c2Vk
LiBBZnRlciBlYWNoIGNhbGwgdG8gYGFkZENsYXNzKClgLCB0aGUgYGNsYXNzZXNgIHByb3BlcnR5
Ci0gICAgd2lsbCBiZSB1cGRhdGVkLgotCi0gICAgQHByaXZhdGUKLSAgICBAcHJvcGVydHkgZWxl
bWVudENsYXNzZXMKLSAgICBAdHlwZSBBcnJheQotICAgIEBkZWZhdWx0IFtdCi0gICovCi0gIGVs
ZW1lbnRDbGFzc2VzOiBudWxsLAotCi0gIC8qKgotICAgIEFycmF5IG9mIGNsYXNzIG5hbWVzIHdo
aWNoIHdpbGwgYmUgYXBwbGllZCBpbiB0aGUgY2xhc3MgYXR0cmlidXRlLgotCi0gICAgWW91IGNh
biB1c2UgYHNldENsYXNzZXMoKWAgdG8gc2V0IHRoaXMgcHJvcGVydHkgZGlyZWN0bHkuIElmIHlv
dQotICAgIHVzZSBgYWRkQ2xhc3MoKWAsIGl0IHdpbGwgYmUgbWFpbnRhaW5lZCBmb3IgeW91Lgot
Ci0gICAgQHByb3BlcnR5IGNsYXNzZXMKLSAgICBAdHlwZSBBcnJheQotICAgIEBkZWZhdWx0IFtd
Ci0gICovCi0gIGNsYXNzZXM6IG51bGwsCi0KLSAgLyoqCi0gICAgVGhlIGlkIGluIG9mIHRoZSBl
bGVtZW50LCB0byBiZSBhcHBsaWVkIGluIHRoZSBpZCBhdHRyaWJ1dGUuCi0KLSAgICBZb3Ugc2hv
dWxkIG5vdCBzZXQgdGhpcyBwcm9wZXJ0eSB5b3Vyc2VsZiwgcmF0aGVyLCB5b3Ugc2hvdWxkIHVz
ZQotICAgIHRoZSBgaWQoKWAgbWV0aG9kIG9mIGBFbWJlci5SZW5kZXJCdWZmZXJgLgotCi0gICAg
QHByb3BlcnR5IGVsZW1lbnRJZAotICAgIEB0eXBlIFN0cmluZwotICAgIEBkZWZhdWx0IG51bGwK
LSAgKi8KLSAgZWxlbWVudElkOiBudWxsLAotCi0gIC8qKgotICAgIEEgaGFzaCBrZXllZCBvbiB0
aGUgbmFtZSBvZiB0aGUgYXR0cmlidXRlIGFuZCB3aG9zZSB2YWx1ZSB3aWxsIGJlCi0gICAgYXBw
bGllZCB0byB0aGF0IGF0dHJpYnV0ZS4gRm9yIGV4YW1wbGUsIGlmIHlvdSB3YW50ZWQgdG8gYXBw
bHkgYQotICAgIGBkYXRhLXZpZXc9IkZvby5iYXIiYCBwcm9wZXJ0eSB0byBhbiBlbGVtZW50LCB5
b3Ugd291bGQgc2V0IHRoZQotICAgIGVsZW1lbnRBdHRyaWJ1dGVzIGhhc2ggdG8gYHsnZGF0YS12
aWV3JzonRm9vLmJhcid9YC4KLQotICAgIFlvdSBzaG91bGQgbm90IG1haW50YWluIHRoaXMgaGFz
aCB5b3Vyc2VsZiwgcmF0aGVyLCB5b3Ugc2hvdWxkIHVzZQotICAgIHRoZSBgYXR0cigpYCBtZXRo
b2Qgb2YgYEVtYmVyLlJlbmRlckJ1ZmZlcmAuCi0KLSAgICBAcHJvcGVydHkgZWxlbWVudEF0dHJp
YnV0ZXMKLSAgICBAdHlwZSBIYXNoCi0gICAgQGRlZmF1bHQge30KLSAgKi8KLSAgZWxlbWVudEF0
dHJpYnV0ZXM6IG51bGwsCi0KLSAgLyoqCi0gICAgQSBoYXNoIGtleWVkIG9uIHRoZSBuYW1lIG9m
IHRoZSBwcm9wZXJ0aWVzIGFuZCB3aG9zZSB2YWx1ZSB3aWxsIGJlCi0gICAgYXBwbGllZCB0byB0
aGF0IHByb3BlcnR5LiBGb3IgZXhhbXBsZSwgaWYgeW91IHdhbnRlZCB0byBhcHBseSBhCi0gICAg
YGNoZWNrZWQ9dHJ1ZWAgcHJvcGVydHkgdG8gYW4gZWxlbWVudCwgeW91IHdvdWxkIHNldCB0aGUK
LSAgICBlbGVtZW50UHJvcGVydGllcyBoYXNoIHRvIGB7J2NoZWNrZWQnOnRydWV9YC4KLQotICAg
IFlvdSBzaG91bGQgbm90IG1haW50YWluIHRoaXMgaGFzaCB5b3Vyc2VsZiwgcmF0aGVyLCB5b3Ug
c2hvdWxkIHVzZQotICAgIHRoZSBgcHJvcCgpYCBtZXRob2Qgb2YgYEVtYmVyLlJlbmRlckJ1ZmZl
cmAuCi0KLSAgICBAcHJvcGVydHkgZWxlbWVudFByb3BlcnRpZXMKLSAgICBAdHlwZSBIYXNoCi0g
ICAgQGRlZmF1bHQge30KLSAgKi8KLSAgZWxlbWVudFByb3BlcnRpZXM6IG51bGwsCi0KLSAgLyoq
Ci0gICAgVGhlIHRhZ25hbWUgb2YgdGhlIGVsZW1lbnQgYW4gaW5zdGFuY2Ugb2YgYEVtYmVyLlJl
bmRlckJ1ZmZlcmAgcmVwcmVzZW50cy4KLQotICAgIFVzdWFsbHksIHRoaXMgZ2V0cyBzZXQgYXMg
dGhlIGZpcnN0IHBhcmFtZXRlciB0byBgRW1iZXIuUmVuZGVyQnVmZmVyYC4gRm9yCi0gICAgZXhh
bXBsZSwgaWYgeW91IHdhbnRlZCB0byBjcmVhdGUgYSBgcGAgdGFnLCB0aGVuIHlvdSB3b3VsZCBj
YWxsCi0KLSAgICBgYGBqYXZhc2NyaXB0Ci0gICAgRW1iZXIuUmVuZGVyQnVmZmVyKCdwJykKLSAg
ICBgYGAKLQotICAgIEBwcm9wZXJ0eSBlbGVtZW50VGFnCi0gICAgQHR5cGUgU3RyaW5nCi0gICAg
QGRlZmF1bHQgbnVsbAotICAqLwotICBlbGVtZW50VGFnOiBudWxsLAotCi0gIC8qKgotICAgIEEg
aGFzaCBrZXllZCBvbiB0aGUgbmFtZSBvZiB0aGUgc3R5bGUgYXR0cmlidXRlIGFuZCB3aG9zZSB2
YWx1ZSB3aWxsCi0gICAgYmUgYXBwbGllZCB0byB0aGF0IGF0dHJpYnV0ZS4gRm9yIGV4YW1wbGUs
IGlmIHlvdSB3YW50ZWQgdG8gYXBwbHkgYQotICAgIGBiYWNrZ3JvdW5kLWNvbG9yOmJsYWNrO2Ag
c3R5bGUgdG8gYW4gZWxlbWVudCwgeW91IHdvdWxkIHNldCB0aGUKLSAgICBlbGVtZW50U3R5bGUg
aGFzaCB0byBgeydiYWNrZ3JvdW5kLWNvbG9yJzonYmxhY2snfWAuCi0KLSAgICBZb3Ugc2hvdWxk
IG5vdCBtYWludGFpbiB0aGlzIGhhc2ggeW91cnNlbGYsIHJhdGhlciwgeW91IHNob3VsZCB1c2UK
LSAgICB0aGUgYHN0eWxlKClgIG1ldGhvZCBvZiBgRW1iZXIuUmVuZGVyQnVmZmVyYC4KLQotICAg
IEBwcm9wZXJ0eSBlbGVtZW50U3R5bGUKLSAgICBAdHlwZSBIYXNoCi0gICAgQGRlZmF1bHQge30K
LSAgKi8KLSAgZWxlbWVudFN0eWxlOiBudWxsLAotCi0gIC8qKgotICAgIE5lc3RlZCBgUmVuZGVy
QnVmZmVyc2Agd2lsbCBzZXQgdGhpcyB0byB0aGVpciBwYXJlbnQgYFJlbmRlckJ1ZmZlcmAKLSAg
ICBpbnN0YW5jZS4KLQotICAgIEBwcm9wZXJ0eSBwYXJlbnRCdWZmZXIKLSAgICBAdHlwZSBFbWJl
ci5fUmVuZGVyQnVmZmVyCi0gICovCi0gIHBhcmVudEJ1ZmZlcjogbnVsbCwKLQotICAvKioKLSAg
ICBBZGRzIGEgc3RyaW5nIG9mIEhUTUwgdG8gdGhlIGBSZW5kZXJCdWZmZXJgLgotCi0gICAgQG1l
dGhvZCBwdXNoCi0gICAgQHBhcmFtIHtTdHJpbmd9IHN0cmluZyBIVE1MIHRvIHB1c2ggaW50byB0
aGUgYnVmZmVyCi0gICAgQGNoYWluYWJsZQotICAqLwotICBwdXNoOiBmdW5jdGlvbihzdHJpbmcp
IHsKLSAgICB0aGlzLmJ1ZmZlciArPSBzdHJpbmc7Ci0gICAgcmV0dXJuIHRoaXM7Ci0gIH0sCi0K
LSAgLyoqCi0gICAgQWRkcyBhIGNsYXNzIHRvIHRoZSBidWZmZXIsIHdoaWNoIHdpbGwgYmUgcmVu
ZGVyZWQgdG8gdGhlIGNsYXNzIGF0dHJpYnV0ZS4KLQotICAgIEBtZXRob2QgYWRkQ2xhc3MKLSAg
ICBAcGFyYW0ge1N0cmluZ30gY2xhc3NOYW1lIENsYXNzIG5hbWUgdG8gYWRkIHRvIHRoZSBidWZm
ZXIKLSAgICBAY2hhaW5hYmxlCi0gICovCi0gIGFkZENsYXNzOiBmdW5jdGlvbihjbGFzc05hbWUp
IHsKLSAgICAvLyBsYXppbHkgY3JlYXRlIGVsZW1lbnRDbGFzc2VzCi0gICAgdGhpcy5lbGVtZW50
Q2xhc3NlcyA9ICh0aGlzLmVsZW1lbnRDbGFzc2VzIHx8IG5ldyBDbGFzc1NldCgpKTsKLSAgICB0
aGlzLmVsZW1lbnRDbGFzc2VzLmFkZChjbGFzc05hbWUpOwotICAgIHRoaXMuY2xhc3NlcyA9IHRo
aXMuZWxlbWVudENsYXNzZXMubGlzdDsKLQotICAgIHJldHVybiB0aGlzOwotICB9LAotCi0gIHNl
dENsYXNzZXM6IGZ1bmN0aW9uKGNsYXNzTmFtZXMpIHsKLSAgICB0aGlzLmNsYXNzZXMgPSBjbGFz
c05hbWVzOwotICB9LAotCi0gIC8qKgotICAgIFNldHMgdGhlIGVsZW1lbnRJRCB0byBiZSB1c2Vk
IGZvciB0aGUgZWxlbWVudC4KLQotICAgIEBtZXRob2QgaWQKLSAgICBAcGFyYW0ge1N0cmluZ30g
aWQKLSAgICBAY2hhaW5hYmxlCi0gICovCi0gIGlkOiBmdW5jdGlvbihpZCkgewotICAgIHRoaXMu
ZWxlbWVudElkID0gaWQ7Ci0gICAgcmV0dXJuIHRoaXM7Ci0gIH0sCi0KLSAgLy8gZHVjayB0eXBl
IGF0dHJpYnV0ZSBmdW5jdGlvbmFsaXR5IGxpa2UgalF1ZXJ5IHNvIGEgcmVuZGVyIGJ1ZmZlcgot
ICAvLyBjYW4gYmUgdXNlZCBsaWtlIGEgalF1ZXJ5IG9iamVjdCBpbiBhdHRyaWJ1dGUgYmluZGlu
ZyBzY2VuYXJpb3MuCi0KLSAgLyoqCi0gICAgQWRkcyBhbiBhdHRyaWJ1dGUgd2hpY2ggd2lsbCBi
ZSByZW5kZXJlZCB0byB0aGUgZWxlbWVudC4KLQotICAgIEBtZXRob2QgYXR0cgotICAgIEBwYXJh
bSB7U3RyaW5nfSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBhdHRyaWJ1dGUKLSAgICBAcGFyYW0ge1N0
cmluZ30gdmFsdWUgVGhlIHZhbHVlIHRvIGFkZCB0byB0aGUgYXR0cmlidXRlCi0gICAgQGNoYWlu
YWJsZQotICAgIEByZXR1cm4ge0VtYmVyLlJlbmRlckJ1ZmZlcnxTdHJpbmd9IHRoaXMgb3IgdGhl
IGN1cnJlbnQgYXR0cmlidXRlIHZhbHVlCi0gICovCi0gIGF0dHI6IGZ1bmN0aW9uKG5hbWUsIHZh
bHVlKSB7Ci0gICAgdmFyIGF0dHJpYnV0ZXMgPSB0aGlzLmVsZW1lbnRBdHRyaWJ1dGVzID0gKHRo
aXMuZWxlbWVudEF0dHJpYnV0ZXMgfHwge30pOwotCi0gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGgg
PT09IDEpIHsKLSAgICAgIHJldHVybiBhdHRyaWJ1dGVzW25hbWVdOwotICAgIH0gZWxzZSB7Ci0g
ICAgICBhdHRyaWJ1dGVzW25hbWVdID0gdmFsdWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRoaXM7
Ci0gIH0sCi0KLSAgLyoqCi0gICAgUmVtb3ZlIGFuIGF0dHJpYnV0ZSBmcm9tIHRoZSBsaXN0IG9m
IGF0dHJpYnV0ZXMgdG8gcmVuZGVyLgotCi0gICAgQG1ldGhvZCByZW1vdmVBdHRyCi0gICAgQHBh
cmFtIHtTdHJpbmd9IG5hbWUgVGhlIG5hbWUgb2YgdGhlIGF0dHJpYnV0ZQotICAgIEBjaGFpbmFi
bGUKLSAgKi8KLSAgcmVtb3ZlQXR0cjogZnVuY3Rpb24obmFtZSkgewotICAgIHZhciBhdHRyaWJ1
dGVzID0gdGhpcy5lbGVtZW50QXR0cmlidXRlczsKLSAgICBpZiAoYXR0cmlidXRlcykgeyBkZWxl
dGUgYXR0cmlidXRlc1tuYW1lXTsgfQotCi0gICAgcmV0dXJuIHRoaXM7Ci0gIH0sCi0KLSAgLyoq
Ci0gICAgQWRkcyBhbiBwcm9wZXJ0eSB3aGljaCB3aWxsIGJlIHJlbmRlcmVkIHRvIHRoZSBlbGVt
ZW50LgotCi0gICAgQG1ldGhvZCBwcm9wCi0gICAgQHBhcmFtIHtTdHJpbmd9IG5hbWUgVGhlIG5h
bWUgb2YgdGhlIHByb3BlcnR5Ci0gICAgQHBhcmFtIHtTdHJpbmd9IHZhbHVlIFRoZSB2YWx1ZSB0
byBhZGQgdG8gdGhlIHByb3BlcnR5Ci0gICAgQGNoYWluYWJsZQotICAgIEByZXR1cm4ge0VtYmVy
LlJlbmRlckJ1ZmZlcnxTdHJpbmd9IHRoaXMgb3IgdGhlIGN1cnJlbnQgcHJvcGVydHkgdmFsdWUK
LSAgKi8KLSAgcHJvcDogZnVuY3Rpb24obmFtZSwgdmFsdWUpIHsKLSAgICB2YXIgcHJvcGVydGll
cyA9IHRoaXMuZWxlbWVudFByb3BlcnRpZXMgPSAodGhpcy5lbGVtZW50UHJvcGVydGllcyB8fCB7
fSk7Ci0KLSAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkgewotICAgICAgcmV0dXJuIHBy
b3BlcnRpZXNbbmFtZV07Ci0gICAgfSBlbHNlIHsKLSAgICAgIHByb3BlcnRpZXNbbmFtZV0gPSB2
YWx1ZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdGhpczsKLSAgfSwKLQotICAvKioKLSAgICBSZW1v
dmUgYW4gcHJvcGVydHkgZnJvbSB0aGUgbGlzdCBvZiBwcm9wZXJ0aWVzIHRvIHJlbmRlci4KLQot
ICAgIEBtZXRob2QgcmVtb3ZlUHJvcAotICAgIEBwYXJhbSB7U3RyaW5nfSBuYW1lIFRoZSBuYW1l
IG9mIHRoZSBwcm9wZXJ0eQotICAgIEBjaGFpbmFibGUKLSAgKi8KLSAgcmVtb3ZlUHJvcDogZnVu
Y3Rpb24obmFtZSkgewotICAgIHZhciBwcm9wZXJ0aWVzID0gdGhpcy5lbGVtZW50UHJvcGVydGll
czsKLSAgICBpZiAocHJvcGVydGllcykgeyBkZWxldGUgcHJvcGVydGllc1tuYW1lXTsgfQotCi0g
ICAgcmV0dXJuIHRoaXM7Ci0gIH0sCi0KLSAgLyoqCi0gICAgQWRkcyBhIHN0eWxlIHRvIHRoZSBz
dHlsZSBhdHRyaWJ1dGUgd2hpY2ggd2lsbCBiZSByZW5kZXJlZCB0byB0aGUgZWxlbWVudC4KLQot
ICAgIEBtZXRob2Qgc3R5bGUKLSAgICBAcGFyYW0ge1N0cmluZ30gbmFtZSBOYW1lIG9mIHRoZSBz
dHlsZQotICAgIEBwYXJhbSB7U3RyaW5nfSB2YWx1ZQotICAgIEBjaGFpbmFibGUKLSAgKi8KLSAg
c3R5bGU6IGZ1bmN0aW9uKG5hbWUsIHZhbHVlKSB7Ci0gICAgdGhpcy5lbGVtZW50U3R5bGUgPSAo
dGhpcy5lbGVtZW50U3R5bGUgfHwge30pOwotCi0gICAgdGhpcy5lbGVtZW50U3R5bGVbbmFtZV0g
PSB2YWx1ZTsKLSAgICByZXR1cm4gdGhpczsKLSAgfSwKLQotICBiZWdpbjogZnVuY3Rpb24odGFn
TmFtZSkgewotICAgIHRoaXMudGFnTmFtZXMucHVzaCh0YWdOYW1lIHx8IG51bGwpOwotICAgIHJl
dHVybiB0aGlzOwotICB9LAotCi0gIHB1c2hPcGVuaW5nVGFnOiBmdW5jdGlvbigpIHsKLSAgICB2
YXIgdGFnTmFtZSA9IHRoaXMuY3VycmVudFRhZ05hbWUoKTsKLSAgICBpZiAoIXRhZ05hbWUpIHsg
cmV0dXJuOyB9Ci0KLSAgICBpZiAodGhpcy5faGFzRWxlbWVudCAmJiAhdGhpcy5fZWxlbWVudCAm
JiB0aGlzLmJ1ZmZlci5sZW5ndGggPT09IDApIHsKLSAgICAgIHRoaXMuX2VsZW1lbnQgPSB0aGlz
LmdlbmVyYXRlRWxlbWVudCgpOwotICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHZhciBidWZm
ZXIgPSB0aGlzLmJ1ZmZlciwKLSAgICAgICAgaWQgPSB0aGlzLmVsZW1lbnRJZCwKLSAgICAgICAg
Y2xhc3NlcyA9IHRoaXMuY2xhc3NlcywKLSAgICAgICAgYXR0cnMgPSB0aGlzLmVsZW1lbnRBdHRy
aWJ1dGVzLAotICAgICAgICBwcm9wcyA9IHRoaXMuZWxlbWVudFByb3BlcnRpZXMsCi0gICAgICAg
IHN0eWxlID0gdGhpcy5lbGVtZW50U3R5bGUsCi0gICAgICAgIGF0dHIsIHByb3A7Ci0KLSAgICBi
dWZmZXIgKz0gJzwnICsgc3RyaXBUYWdOYW1lKHRhZ05hbWUpOwotCi0gICAgaWYgKGlkKSB7Ci0g
ICAgICBidWZmZXIgKz0gJyBpZD0iJyArIGVzY2FwZUF0dHJpYnV0ZShpZCkgKyAnIic7Ci0gICAg
ICB0aGlzLmVsZW1lbnRJZCA9IG51bGw7Ci0gICAgfQotICAgIGlmIChjbGFzc2VzKSB7Ci0gICAg
ICBidWZmZXIgKz0gJyBjbGFzcz0iJyArIGVzY2FwZUF0dHJpYnV0ZShjbGFzc2VzLmpvaW4oJyAn
KSkgKyAnIic7Ci0gICAgICB0aGlzLmNsYXNzZXMgPSBudWxsOwotICAgIH0KLQotICAgIGlmIChz
dHlsZSkgewotICAgICAgYnVmZmVyICs9ICcgc3R5bGU9Iic7Ci0KLSAgICAgIGZvciAocHJvcCBp
biBzdHlsZSkgewotICAgICAgICBpZiAoc3R5bGUuaGFzT3duUHJvcGVydHkocHJvcCkpIHsKLSAg
ICAgICAgICBidWZmZXIgKz0gcHJvcCArICc6JyArIGVzY2FwZUF0dHJpYnV0ZShzdHlsZVtwcm9w
XSkgKyAnOyc7Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgICAgYnVmZmVyICs9ICciJzsKLQot
ICAgICAgdGhpcy5lbGVtZW50U3R5bGUgPSBudWxsOwotICAgIH0KLQotICAgIGlmIChhdHRycykg
ewotICAgICAgZm9yIChhdHRyIGluIGF0dHJzKSB7Ci0gICAgICAgIGlmIChhdHRycy5oYXNPd25Q
cm9wZXJ0eShhdHRyKSkgewotICAgICAgICAgIGJ1ZmZlciArPSAnICcgKyBhdHRyICsgJz0iJyAr
IGVzY2FwZUF0dHJpYnV0ZShhdHRyc1thdHRyXSkgKyAnIic7Ci0gICAgICAgIH0KLSAgICAgIH0K
LQotICAgICAgdGhpcy5lbGVtZW50QXR0cmlidXRlcyA9IG51bGw7Ci0gICAgfQotCi0gICAgaWYg
KHByb3BzKSB7Ci0gICAgICBmb3IgKHByb3AgaW4gcHJvcHMpIHsKLSAgICAgICAgaWYgKHByb3Bz
Lmhhc093blByb3BlcnR5KHByb3ApKSB7Ci0gICAgICAgICAgdmFyIHZhbHVlID0gcHJvcHNbcHJv
cF07Ci0gICAgICAgICAgaWYgKHZhbHVlIHx8IHR5cGVvZih2YWx1ZSkgPT09ICdudW1iZXInKSB7
Ci0gICAgICAgICAgICBpZiAodmFsdWUgPT09IHRydWUpIHsKLSAgICAgICAgICAgICAgYnVmZmVy
ICs9ICcgJyArIHByb3AgKyAnPSInICsgcHJvcCArICciJzsKLSAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgIGJ1ZmZlciArPSAnICcgKyBwcm9wICsgJz0iJyArIGVzY2FwZUF0dHJp
YnV0ZShwcm9wc1twcm9wXSkgKyAnIic7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAg
ICAgICB9Ci0gICAgICB9Ci0KLSAgICAgIHRoaXMuZWxlbWVudFByb3BlcnRpZXMgPSBudWxsOwot
ICAgIH0KLQotICAgIGJ1ZmZlciArPSAnPic7Ci0gICAgdGhpcy5idWZmZXIgPSBidWZmZXI7Ci0g
IH0sCi0KLSAgcHVzaENsb3NpbmdUYWc6IGZ1bmN0aW9uKCkgewotICAgIHZhciB0YWdOYW1lID0g
dGhpcy50YWdOYW1lcy5wb3AoKTsKLSAgICBpZiAodGFnTmFtZSkgeyB0aGlzLmJ1ZmZlciArPSAn
PC8nICsgc3RyaXBUYWdOYW1lKHRhZ05hbWUpICsgJz4nOyB9Ci0gIH0sCi0KLSAgY3VycmVudFRh
Z05hbWU6IGZ1bmN0aW9uKCkgewotICAgIHJldHVybiB0aGlzLnRhZ05hbWVzW3RoaXMudGFnTmFt
ZXMubGVuZ3RoLTFdOwotICB9LAotCi0gIGdlbmVyYXRlRWxlbWVudDogZnVuY3Rpb24oKSB7Ci0g
ICAgdmFyIHRhZ05hbWUgPSB0aGlzLnRhZ05hbWVzLnBvcCgpLCAvLyBwb3Agc2luY2Ugd2UgZG9u
J3QgbmVlZCB0byBjbG9zZQotICAgICAgICBpZCA9IHRoaXMuZWxlbWVudElkLAotICAgICAgICBj
bGFzc2VzID0gdGhpcy5jbGFzc2VzLAotICAgICAgICBhdHRycyA9IHRoaXMuZWxlbWVudEF0dHJp
YnV0ZXMsCi0gICAgICAgIHByb3BzID0gdGhpcy5lbGVtZW50UHJvcGVydGllcywKLSAgICAgICAg
c3R5bGUgPSB0aGlzLmVsZW1lbnRTdHlsZSwKLSAgICAgICAgc3R5bGVCdWZmZXIgPSAnJywgYXR0
ciwgcHJvcCwgdGFnU3RyaW5nOwotCi0gICAgaWYgKGF0dHJzICYmIGF0dHJzLm5hbWUgJiYgIWNh
blNldE5hbWVPbklucHV0cykgewotICAgICAgLy8gSUUgYWxsb3dzIHBhc3NpbmcgYSB0YWcgdG8g
Y3JlYXRlRWxlbWVudC4gU2VlIG5vdGUgb24gYGNhblNldE5hbWVPbklucHV0c2AgYWJvdmUgYXMg
d2VsbC4KLSAgICAgIHRhZ1N0cmluZyA9ICc8JytzdHJpcFRhZ05hbWUodGFnTmFtZSkrJyBuYW1l
PSInK2VzY2FwZUF0dHJpYnV0ZShhdHRycy5uYW1lKSsnIj4nOwotICAgIH0gZWxzZSB7Ci0gICAg
ICB0YWdTdHJpbmcgPSB0YWdOYW1lOwotICAgIH0KLQotICAgIHZhciBlbGVtZW50ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCh0YWdTdHJpbmcpLAotICAgICAgICAkZWxlbWVudCA9IEVtYmVyLiQo
ZWxlbWVudCk7Ci0KLSAgICBpZiAoaWQpIHsKLSAgICAgICRlbGVtZW50LmF0dHIoJ2lkJywgaWQp
OwotICAgICAgdGhpcy5lbGVtZW50SWQgPSBudWxsOwotICAgIH0KLSAgICBpZiAoY2xhc3Nlcykg
ewotICAgICAgJGVsZW1lbnQuYXR0cignY2xhc3MnLCBjbGFzc2VzLmpvaW4oJyAnKSk7Ci0gICAg
ICB0aGlzLmNsYXNzZXMgPSBudWxsOwotICAgIH0KLQotICAgIGlmIChzdHlsZSkgewotICAgICAg
Zm9yIChwcm9wIGluIHN0eWxlKSB7Ci0gICAgICAgIGlmIChzdHlsZS5oYXNPd25Qcm9wZXJ0eShw
cm9wKSkgewotICAgICAgICAgIHN0eWxlQnVmZmVyICs9IChwcm9wICsgJzonICsgc3R5bGVbcHJv
cF0gKyAnOycpOwotICAgICAgICB9Ci0gICAgICB9Ci0KLSAgICAgICRlbGVtZW50LmF0dHIoJ3N0
eWxlJywgc3R5bGVCdWZmZXIpOwotCi0gICAgICB0aGlzLmVsZW1lbnRTdHlsZSA9IG51bGw7Ci0g
ICAgfQotCi0gICAgaWYgKGF0dHJzKSB7Ci0gICAgICBmb3IgKGF0dHIgaW4gYXR0cnMpIHsKLSAg
ICAgICAgaWYgKGF0dHJzLmhhc093blByb3BlcnR5KGF0dHIpKSB7Ci0gICAgICAgICAgJGVsZW1l
bnQuYXR0cihhdHRyLCBhdHRyc1thdHRyXSk7Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgICAg
dGhpcy5lbGVtZW50QXR0cmlidXRlcyA9IG51bGw7Ci0gICAgfQotCi0gICAgaWYgKHByb3BzKSB7
Ci0gICAgICBmb3IgKHByb3AgaW4gcHJvcHMpIHsKLSAgICAgICAgaWYgKHByb3BzLmhhc093blBy
b3BlcnR5KHByb3ApKSB7Ci0gICAgICAgICAgJGVsZW1lbnQucHJvcChwcm9wLCBwcm9wc1twcm9w
XSk7Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgICAgdGhpcy5lbGVtZW50UHJvcGVydGllcyA9
IG51bGw7Ci0gICAgfQotCi0gICAgcmV0dXJuIGVsZW1lbnQ7Ci0gIH0sCi0KLSAgLyoqCi0gICAg
QG1ldGhvZCBlbGVtZW50Ci0gICAgQHJldHVybiB7RE9NRWxlbWVudH0gVGhlIGVsZW1lbnQgY29y
cmVzcG9uZGluZyB0byB0aGUgZ2VuZXJhdGVkIEhUTUwKLSAgICAgIG9mIHRoaXMgYnVmZmVyCi0g
ICovCi0gIGVsZW1lbnQ6IGZ1bmN0aW9uKCkgewotICAgIHZhciBodG1sID0gdGhpcy5pbm5lclN0
cmluZygpOwotCi0gICAgaWYgKGh0bWwpIHsKLSAgICAgIHRoaXMuX2VsZW1lbnQgPSBFbWJlci5W
aWV3VXRpbHMuc2V0SW5uZXJIVE1MKHRoaXMuX2VsZW1lbnQsIGh0bWwpOwotICAgIH0KLQotICAg
IHJldHVybiB0aGlzLl9lbGVtZW50OwotICB9LAotCi0gIC8qKgotICAgIEdlbmVyYXRlcyB0aGUg
SFRNTCBjb250ZW50IGZvciB0aGlzIGJ1ZmZlci4KLQotICAgIEBtZXRob2Qgc3RyaW5nCi0gICAg
QHJldHVybiB7U3RyaW5nfSBUaGUgZ2VuZXJhdGVkIEhUTUwKLSAgKi8KLSAgc3RyaW5nOiBmdW5j
dGlvbigpIHsKLSAgICBpZiAodGhpcy5faGFzRWxlbWVudCAmJiB0aGlzLl9lbGVtZW50KSB7Ci0g
ICAgICAvLyBGaXJlZm94IHZlcnNpb25zIDwgMTEgZG8gbm90IGhhdmUgc3VwcG9ydCBmb3IgZWxl
bWVudC5vdXRlckhUTUwuCi0gICAgICB2YXIgdGhpc0VsZW1lbnQgPSB0aGlzLmVsZW1lbnQoKSwg
b3V0ZXJIVE1MID0gdGhpc0VsZW1lbnQub3V0ZXJIVE1MOwotICAgICAgaWYgKHR5cGVvZiBvdXRl
ckhUTUwgPT09ICd1bmRlZmluZWQnKSB7Ci0gICAgICAgIHJldHVybiBFbWJlci4kKCc8ZGl2Lz4n
KS5hcHBlbmQodGhpc0VsZW1lbnQpLmh0bWwoKTsKLSAgICAgIH0KLSAgICAgIHJldHVybiBvdXRl
ckhUTUw7Ci0gICAgfSBlbHNlIHsKLSAgICAgIHJldHVybiB0aGlzLmlubmVyU3RyaW5nKCk7Ci0g
ICAgfQotICB9LAotCi0gIGlubmVyU3RyaW5nOiBmdW5jdGlvbigpIHsKLSAgICByZXR1cm4gdGhp
cy5idWZmZXI7Ci0gIH0KLX07Ci0KLX0pKCk7Ci0KLQotCi0oZnVuY3Rpb24oKSB7Ci0vKioKLUBt
b2R1bGUgZW1iZXIKLUBzdWJtb2R1bGUgZW1iZXItdmlld3MKLSovCi0KLXZhciBnZXQgPSBFbWJl
ci5nZXQsIHNldCA9IEVtYmVyLnNldCwgZm10ID0gRW1iZXIuU3RyaW5nLmZtdDsKLQotLyoqCi0g
IGBFbWJlci5FdmVudERpc3BhdGNoZXJgIGhhbmRsZXMgZGVsZWdhdGluZyBicm93c2VyIGV2ZW50
cyB0byB0aGVpcgotICBjb3JyZXNwb25kaW5nIGBFbWJlci5WaWV3cy5gIEZvciBleGFtcGxlLCB3
aGVuIHlvdSBjbGljayBvbiBhIHZpZXcsCi0gIGBFbWJlci5FdmVudERpc3BhdGNoZXJgIGVuc3Vy
ZXMgdGhhdCB0aGF0IHZpZXcncyBgbW91c2VEb3duYCBtZXRob2QgZ2V0cwotICBjYWxsZWQuCi0K
LSAgQGNsYXNzIEV2ZW50RGlzcGF0Y2hlcgotICBAbmFtZXNwYWNlIEVtYmVyCi0gIEBwcml2YXRl
Ci0gIEBleHRlbmRzIEVtYmVyLk9iamVjdAotKi8KLUVtYmVyLkV2ZW50RGlzcGF0Y2hlciA9IEVt
YmVyLk9iamVjdC5leHRlbmQoewotCi0gIC8qKgotICAgIFRoZSBzZXQgb2YgZXZlbnRzIG5hbWVz
IChhbmQgYXNzb2NpYXRlZCBoYW5kbGVyIGZ1bmN0aW9uIG5hbWVzKSB0byBiZSBzZXR1cAotICAg
IGFuZCBkaXNwYXRjaGVkIGJ5IHRoZSBgRXZlbnREaXNwYXRjaGVyYC4gQ3VzdG9tIGV2ZW50cyBj
YW4gYWRkZWQgdG8gdGhpcyBsaXN0IGF0IHNldHVwCi0gICAgdGltZSwgZ2VuZXJhbGx5IHZpYSB0
aGUgYEVtYmVyLkFwcGxpY2F0aW9uLmN1c3RvbUV2ZW50c2AgaGFzaC4gT25seSBvdmVycmlkZSB0
aGlzCi0gICAgZGVmYXVsdCBzZXQgdG8gcHJldmVudCB0aGUgRXZlbnREaXNwYXRjaGVyIGZyb20g
bGlzdGVuaW5nIG9uIHNvbWUgZXZlbnRzIGFsbCB0b2dldGhlci4KLQotICAgIFRoaXMgc2V0IHdp
bGwgYmUgbW9kaWZpZWQgYnkgYHNldHVwYCB0byBhbHNvIGluY2x1ZGUgYW55IGV2ZW50cyBhZGRl
ZCBhdCB0aGF0IHRpbWUuCi0KLSAgICBAcHJvcGVydHkgZXZlbnRzCi0gICAgQHR5cGUgT2JqZWN0
Ci0gICovCi0gIGV2ZW50czogewotICAgIHRvdWNoc3RhcnQgIDogJ3RvdWNoU3RhcnQnLAotICAg
IHRvdWNobW92ZSAgIDogJ3RvdWNoTW92ZScsCi0gICAgdG91Y2hlbmQgICAgOiAndG91Y2hFbmQn
LAotICAgIHRvdWNoY2FuY2VsIDogJ3RvdWNoQ2FuY2VsJywKLSAgICBrZXlkb3duICAgICA6ICdr
ZXlEb3duJywKLSAgICBrZXl1cCAgICAgICA6ICdrZXlVcCcsCi0gICAga2V5cHJlc3MgICAgOiAn
a2V5UHJlc3MnLAotICAgIG1vdXNlZG93biAgIDogJ21vdXNlRG93bicsCi0gICAgbW91c2V1cCAg
ICAgOiAnbW91c2VVcCcsCi0gICAgY29udGV4dG1lbnUgOiAnY29udGV4dE1lbnUnLAotICAgIGNs
aWNrICAgICAgIDogJ2NsaWNrJywKLSAgICBkYmxjbGljayAgICA6ICdkb3VibGVDbGljaycsCi0g
ICAgbW91c2Vtb3ZlICAgOiAnbW91c2VNb3ZlJywKLSAgICBmb2N1c2luICAgICA6ICdmb2N1c0lu
JywKLSAgICBmb2N1c291dCAgICA6ICdmb2N1c091dCcsCi0gICAgbW91c2VlbnRlciAgOiAnbW91
c2VFbnRlcicsCi0gICAgbW91c2VsZWF2ZSAgOiAnbW91c2VMZWF2ZScsCi0gICAgc3VibWl0ICAg
ICAgOiAnc3VibWl0JywKLSAgICBpbnB1dCAgICAgICA6ICdpbnB1dCcsCi0gICAgY2hhbmdlICAg
ICAgOiAnY2hhbmdlJywKLSAgICBkcmFnc3RhcnQgICA6ICdkcmFnU3RhcnQnLAotICAgIGRyYWcg
ICAgICAgIDogJ2RyYWcnLAotICAgIGRyYWdlbnRlciAgIDogJ2RyYWdFbnRlcicsCi0gICAgZHJh
Z2xlYXZlICAgOiAnZHJhZ0xlYXZlJywKLSAgICBkcmFnb3ZlciAgICA6ICdkcmFnT3ZlcicsCi0g
ICAgZHJvcCAgICAgICAgOiAnZHJvcCcsCi0gICAgZHJhZ2VuZCAgICAgOiAnZHJhZ0VuZCcKLSAg
fSwKLQotICAvKioKLSAgICBUaGUgcm9vdCBET00gZWxlbWVudCB0byB3aGljaCBldmVudCBsaXN0
ZW5lcnMgc2hvdWxkIGJlIGF0dGFjaGVkLiBFdmVudAotICAgIGxpc3RlbmVycyB3aWxsIGJlIGF0
dGFjaGVkIHRvIHRoZSBkb2N1bWVudCB1bmxlc3MgdGhpcyBpcyBvdmVycmlkZGVuLgotCi0gICAg
Q2FuIGJlIHNwZWNpZmllZCBhcyBhIERPTUVsZW1lbnQgb3IgYSBzZWxlY3RvciBzdHJpbmcuCi0K
LSAgICBUaGUgZGVmYXVsdCBib2R5IGlzIGEgc3RyaW5nIHNpbmNlIHRoaXMgbWF5IGJlIGV2YWx1
YXRlZCBiZWZvcmUgZG9jdW1lbnQuYm9keQotICAgIGV4aXN0cyBpbiB0aGUgRE9NLgotCi0gICAg
QHByaXZhdGUKLSAgICBAcHJvcGVydHkgcm9vdEVsZW1lbnQKLSAgICBAdHlwZSBET01FbGVtZW50
Ci0gICAgQGRlZmF1bHQgJ2JvZHknCi0gICovCi0gIHJvb3RFbGVtZW50OiAnYm9keScsCi0KLSAg
LyoqCi0gICAgU2V0cyB1cCBldmVudCBsaXN0ZW5lcnMgZm9yIHN0YW5kYXJkIGJyb3dzZXIgZXZl
bnRzLgotCi0gICAgVGhpcyB3aWxsIGJlIGNhbGxlZCBhZnRlciB0aGUgYnJvd3NlciBzZW5kcyBh
IGBET01Db250ZW50UmVhZHlgIGV2ZW50LiBCeQotICAgIGRlZmF1bHQsIGl0IHdpbGwgc2V0IHVw
IGFsbCBvZiB0aGUgbGlzdGVuZXJzIG9uIHRoZSBkb2N1bWVudCBib2R5LiBJZiB5b3UKLSAgICB3
b3VsZCBsaWtlIHRvIHJlZ2lzdGVyIHRoZSBsaXN0ZW5lcnMgb24gYSBkaWZmZXJlbnQgZWxlbWVu
dCwgc2V0IHRoZSBldmVudAotICAgIGRpc3BhdGNoZXIncyBgcm9vdGAgcHJvcGVydHkuCi0KLSAg
ICBAcHJpdmF0ZQotICAgIEBtZXRob2Qgc2V0dXAKLSAgICBAcGFyYW0gYWRkZWRFdmVudHMge0hh
c2h9Ci0gICovCi0gIHNldHVwOiBmdW5jdGlvbihhZGRlZEV2ZW50cywgcm9vdEVsZW1lbnQpIHsK
LSAgICB2YXIgZXZlbnQsIGV2ZW50cyA9IGdldCh0aGlzLCAnZXZlbnRzJyk7Ci0KLSAgICBFbWJl
ci4kLmV4dGVuZChldmVudHMsIGFkZGVkRXZlbnRzIHx8IHt9KTsKLQotCi0gICAgaWYgKCFFbWJl
ci5pc05vbmUocm9vdEVsZW1lbnQpKSB7Ci0gICAgICBzZXQodGhpcywgJ3Jvb3RFbGVtZW50Jywg
cm9vdEVsZW1lbnQpOwotICAgIH0KLQotICAgIHJvb3RFbGVtZW50ID0gRW1iZXIuJChnZXQodGhp
cywgJ3Jvb3RFbGVtZW50JykpOwotCi0gICAgRW1iZXIuYXNzZXJ0KGZtdCgnWW91IGNhbm5vdCB1
c2UgdGhlIHNhbWUgcm9vdCBlbGVtZW50ICglQCkgbXVsdGlwbGUgdGltZXMgaW4gYW4gRW1iZXIu
QXBwbGljYXRpb24nLCBbcm9vdEVsZW1lbnQuc2VsZWN0b3IgfHwgcm9vdEVsZW1lbnRbMF0udGFn
TmFtZV0pLCAhcm9vdEVsZW1lbnQuaXMoJy5lbWJlci1hcHBsaWNhdGlvbicpKTsKLSAgICBFbWJl
ci5hc3NlcnQoJ1lvdSBjYW5ub3QgbWFrZSBhIG5ldyBFbWJlci5BcHBsaWNhdGlvbiB1c2luZyBh
IHJvb3QgZWxlbWVudCB0aGF0IGlzIGEgZGVzY2VuZGVudCBvZiBhbiBleGlzdGluZyBFbWJlci5B
cHBsaWNhdGlvbicsICFyb290RWxlbWVudC5jbG9zZXN0KCcuZW1iZXItYXBwbGljYXRpb24nKS5s
ZW5ndGgpOwotICAgIEVtYmVyLmFzc2VydCgnWW91IGNhbm5vdCBtYWtlIGEgbmV3IEVtYmVyLkFw
cGxpY2F0aW9uIHVzaW5nIGEgcm9vdCBlbGVtZW50IHRoYXQgaXMgYW4gYW5jZXN0b3Igb2YgYW4g
ZXhpc3RpbmcgRW1iZXIuQXBwbGljYXRpb24nLCAhcm9vdEVsZW1lbnQuZmluZCgnLmVtYmVyLWFw
cGxpY2F0aW9uJykubGVuZ3RoKTsKLQotICAgIHJvb3RFbGVtZW50LmFkZENsYXNzKCdlbWJlci1h
cHBsaWNhdGlvbicpOwotCi0gICAgRW1iZXIuYXNzZXJ0KCdVbmFibGUgdG8gYWRkICJlbWJlci1h
cHBsaWNhdGlvbiIgY2xhc3MgdG8gcm9vdEVsZW1lbnQuIE1ha2Ugc3VyZSB5b3Ugc2V0IHJvb3RF
bGVtZW50IHRvIHRoZSBib2R5IG9yIGFuIGVsZW1lbnQgaW4gdGhlIGJvZHkuJywgcm9vdEVsZW1l
bnQuaXMoJy5lbWJlci1hcHBsaWNhdGlvbicpKTsKLQotICAgIGZvciAoZXZlbnQgaW4gZXZlbnRz
KSB7Ci0gICAgICBpZiAoZXZlbnRzLmhhc093blByb3BlcnR5KGV2ZW50KSkgewotICAgICAgICB0
aGlzLnNldHVwSGFuZGxlcihyb290RWxlbWVudCwgZXZlbnQsIGV2ZW50c1tldmVudF0pOwotICAg
ICAgfQotICAgIH0KLSAgfSwKLQotICAvKioKLSAgICBSZWdpc3RlcnMgYW4gZXZlbnQgbGlzdGVu
ZXIgb24gdGhlIGRvY3VtZW50LiBJZiB0aGUgZ2l2ZW4gZXZlbnQgaXMKLSAgICB0cmlnZ2VyZWQs
IHRoZSBwcm92aWRlZCBldmVudCBoYW5kbGVyIHdpbGwgYmUgdHJpZ2dlcmVkIG9uIHRoZSB0YXJn
ZXQgdmlldy4KLQotICAgIElmIHRoZSB0YXJnZXQgdmlldyBkb2VzIG5vdCBpbXBsZW1lbnQgdGhl
IGV2ZW50IGhhbmRsZXIsIG9yIGlmIHRoZSBoYW5kbGVyCi0gICAgcmV0dXJucyBgZmFsc2VgLCB0
aGUgcGFyZW50IHZpZXcgd2lsbCBiZSBjYWxsZWQuIFRoZSBldmVudCB3aWxsIGNvbnRpbnVlIHRv
Ci0gICAgYnViYmxlIHRvIGVhY2ggc3VjY2Vzc2l2ZSBwYXJlbnQgdmlldyB1bnRpbCBpdCByZWFj
aGVzIHRoZSB0b3AuCi0KLSAgICBGb3IgZXhhbXBsZSwgdG8gaGF2ZSB0aGUgYG1vdXNlRG93bmAg
bWV0aG9kIGNhbGxlZCBvbiB0aGUgdGFyZ2V0IHZpZXcgd2hlbgotICAgIGEgYG1vdXNlZG93bmAg
ZXZlbnQgaXMgcmVjZWl2ZWQgZnJvbSB0aGUgYnJvd3NlciwgZG8gdGhlIGZvbGxvd2luZzoKLQot
ICAgIGBgYGphdmFzY3JpcHQKLSAgICBzZXR1cEhhbmRsZXIoJ21vdXNlZG93bicsICdtb3VzZURv
d24nKTsKLSAgICBgYGAKLQotICAgIEBwcml2YXRlCi0gICAgQG1ldGhvZCBzZXR1cEhhbmRsZXIK
LSAgICBAcGFyYW0ge0VsZW1lbnR9IHJvb3RFbGVtZW50Ci0gICAgQHBhcmFtIHtTdHJpbmd9IGV2
ZW50IHRoZSBicm93c2VyLW9yaWdpbmF0ZWQgZXZlbnQgdG8gbGlzdGVuIHRvCi0gICAgQHBhcmFt
IHtTdHJpbmd9IGV2ZW50TmFtZSB0aGUgbmFtZSBvZiB0aGUgbWV0aG9kIHRvIGNhbGwgb24gdGhl
IHZpZXcKLSAgKi8KLSAgc2V0dXBIYW5kbGVyOiBmdW5jdGlvbihyb290RWxlbWVudCwgZXZlbnQs
IGV2ZW50TmFtZSkgewotICAgIHZhciBzZWxmID0gdGhpczsKLQotICAgIHJvb3RFbGVtZW50Lm9u
KGV2ZW50ICsgJy5lbWJlcicsICcuZW1iZXItdmlldycsIGZ1bmN0aW9uKGV2dCwgdHJpZ2dlcmlu
Z01hbmFnZXIpIHsKLSAgICAgIHJldHVybiBFbWJlci5oYW5kbGVFcnJvcnMoZnVuY3Rpb24gaGFu
ZGxlVmlld0V2ZW50KCkgewotICAgICAgICB2YXIgdmlldyA9IEVtYmVyLlZpZXcudmlld3NbdGhp
cy5pZF0sCi0gICAgICAgICAgICByZXN1bHQgPSB0cnVlLCBtYW5hZ2VyID0gbnVsbDsKLQotICAg
ICAgICBtYW5hZ2VyID0gc2VsZi5fZmluZE5lYXJlc3RFdmVudE1hbmFnZXIodmlldyxldmVudE5h
bWUpOwotCi0gICAgICAgIGlmIChtYW5hZ2VyICYmIG1hbmFnZXIgIT09IHRyaWdnZXJpbmdNYW5h
Z2VyKSB7Ci0gICAgICAgICAgcmVzdWx0ID0gc2VsZi5fZGlzcGF0Y2hFdmVudChtYW5hZ2VyLCBl
dnQsIGV2ZW50TmFtZSwgdmlldyk7Ci0gICAgICAgIH0gZWxzZSBpZiAodmlldykgewotICAgICAg
ICAgIHJlc3VsdCA9IHNlbGYuX2J1YmJsZUV2ZW50KHZpZXcsZXZ0LGV2ZW50TmFtZSk7Ci0gICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpOwotICAgICAgICB9
Ci0KLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgIH0sIHRoaXMpOwotICAgIH0pOwotCi0g
ICAgcm9vdEVsZW1lbnQub24oZXZlbnQgKyAnLmVtYmVyJywgJ1tkYXRhLWVtYmVyLWFjdGlvbl0n
LCBmdW5jdGlvbihldnQpIHsKLSAgICAgIHJldHVybiBFbWJlci5oYW5kbGVFcnJvcnMoZnVuY3Rp
b24gaGFuZGxlQWN0aW9uRXZlbnQoKSB7Ci0gICAgICAgIHZhciBhY3Rpb25JZCA9IEVtYmVyLiQo
ZXZ0LmN1cnJlbnRUYXJnZXQpLmF0dHIoJ2RhdGEtZW1iZXItYWN0aW9uJyksCi0gICAgICAgICAg
ICBhY3Rpb24gICA9IEVtYmVyLkhhbmRsZWJhcnMuQWN0aW9uSGVscGVyLnJlZ2lzdGVyZWRBY3Rp
b25zW2FjdGlvbklkXTsKLQotICAgICAgICAvLyBXZSBoYXZlIHRvIGNoZWNrIGZvciBhY3Rpb24g
aGVyZSBzaW5jZSBpbiBzb21lIGNhc2VzLCBqUXVlcnkgd2lsbCB0cmlnZ2VyCi0gICAgICAgIC8v
IGFuIGV2ZW50IG9uIGByZW1vdmVDaGlsZGAgKGkuZS4gZm9jdXNvdXQpIGFmdGVyIHdlJ3ZlIGFs
cmVhZHkgdG9ybiBkb3duIHRoZQotICAgICAgICAvLyBhY3Rpb24gaGFuZGxlcnMgZm9yIHRoZSB2
aWV3LgotICAgICAgICBpZiAoYWN0aW9uICYmIGFjdGlvbi5ldmVudE5hbWUgPT09IGV2ZW50TmFt
ZSkgewotICAgICAgICAgIHJldHVybiBhY3Rpb24uaGFuZGxlcihldnQpOwotICAgICAgICB9Ci0g
ICAgICB9LCB0aGlzKTsKLSAgICB9KTsKLSAgfSwKLQotICBfZmluZE5lYXJlc3RFdmVudE1hbmFn
ZXI6IGZ1bmN0aW9uKHZpZXcsIGV2ZW50TmFtZSkgewotICAgIHZhciBtYW5hZ2VyID0gbnVsbDsK
LQotICAgIHdoaWxlICh2aWV3KSB7Ci0gICAgICBtYW5hZ2VyID0gZ2V0KHZpZXcsICdldmVudE1h
bmFnZXInKTsKLSAgICAgIGlmIChtYW5hZ2VyICYmIG1hbmFnZXJbZXZlbnROYW1lXSkgeyBicmVh
azsgfQotCi0gICAgICB2aWV3ID0gZ2V0KHZpZXcsICdwYXJlbnRWaWV3Jyk7Ci0gICAgfQotCi0g
ICAgcmV0dXJuIG1hbmFnZXI7Ci0gIH0sCi0KLSAgX2Rpc3BhdGNoRXZlbnQ6IGZ1bmN0aW9uKG9i
amVjdCwgZXZ0LCBldmVudE5hbWUsIHZpZXcpIHsKLSAgICB2YXIgcmVzdWx0ID0gdHJ1ZTsKLQot
ICAgIHZhciBoYW5kbGVyID0gb2JqZWN0W2V2ZW50TmFtZV07Ci0gICAgaWYgKEVtYmVyLnR5cGVP
ZihoYW5kbGVyKSA9PT0gJ2Z1bmN0aW9uJykgewotICAgICAgcmVzdWx0ID0gRW1iZXIucnVuKGZ1
bmN0aW9uKCkgewotICAgICAgICByZXR1cm4gaGFuZGxlci5jYWxsKG9iamVjdCwgZXZ0LCB2aWV3
KTsKLSAgICAgIH0pOwotICAgICAgLy8gRG8gbm90IHByZXZlbnREZWZhdWx0IGluIGV2ZW50TWFu
YWdlcnMuCi0gICAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7Ci0gICAgfQotICAgIGVsc2Ugewot
ICAgICAgcmVzdWx0ID0gdGhpcy5fYnViYmxlRXZlbnQodmlldywgZXZ0LCBldmVudE5hbWUpOwot
ICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci0gIH0sCi0KLSAgX2J1YmJsZUV2ZW50OiBmdW5j
dGlvbih2aWV3LCBldnQsIGV2ZW50TmFtZSkgewotICAgIHJldHVybiBFbWJlci5ydW4oZnVuY3Rp
b24gYnViYmxlRXZlbnQoKSB7Ci0gICAgICByZXR1cm4gdmlldy5oYW5kbGVFdmVudChldmVudE5h
bWUsIGV2dCk7Ci0gICAgfSk7Ci0gIH0sCi0KLSAgZGVzdHJveTogZnVuY3Rpb24oKSB7Ci0gICAg
dmFyIHJvb3RFbGVtZW50ID0gZ2V0KHRoaXMsICdyb290RWxlbWVudCcpOwotICAgIEVtYmVyLiQo
cm9vdEVsZW1lbnQpLm9mZignLmVtYmVyJywgJyoqJykucmVtb3ZlQ2xhc3MoJ2VtYmVyLWFwcGxp
Y2F0aW9uJyk7Ci0gICAgcmV0dXJuIHRoaXMuX3N1cGVyKCk7Ci0gIH0KLX0pOwotCi19KSgpOwot
Ci0KLQotKGZ1bmN0aW9uKCkgewotLyoqCi1AbW9kdWxlIGVtYmVyCi1Ac3VibW9kdWxlIGVtYmVy
LXZpZXdzCi0qLwotCi0vLyBBZGQgYSBuZXcgbmFtZWQgcXVldWUgZm9yIHJlbmRlcmluZyB2aWV3
cyB0aGF0IGhhcHBlbnMKLS8vIGFmdGVyIGJpbmRpbmdzIGhhdmUgc3luY2VkLCBhbmQgYSBxdWV1
ZSBmb3Igc2NoZWR1bGluZyBhY3Rpb25zCi0vLyB0aGF0IHRoYXQgc2hvdWxkIG9jY3VyIGFmdGVy
IHZpZXcgcmVuZGVyaW5nLgotdmFyIHF1ZXVlcyA9IEVtYmVyLnJ1bi5xdWV1ZXMsCi0gICAgaW5k
ZXhPZiA9IEVtYmVyLkFycmF5UG9seWZpbGxzLmluZGV4T2Y7Ci1xdWV1ZXMuc3BsaWNlKGluZGV4
T2YuY2FsbChxdWV1ZXMsICdhY3Rpb25zJykrMSwgMCwgJ3JlbmRlcicsICdhZnRlclJlbmRlcicp
OwotCi19KSgpOwotCi0KLQotKGZ1bmN0aW9uKCkgewotLyoqCi1AbW9kdWxlIGVtYmVyCi1Ac3Vi
bW9kdWxlIGVtYmVyLXZpZXdzCi0qLwotCi12YXIgZ2V0ID0gRW1iZXIuZ2V0LCBzZXQgPSBFbWJl
ci5zZXQ7Ci0KLS8vIE9yaWdpbmFsIGNsYXNzIGRlY2xhcmF0aW9uIGFuZCBkb2N1bWVudGF0aW9u
IGluIHJ1bnRpbWUvbGliL2NvbnRyb2xsZXJzL2NvbnRyb2xsZXIuanMKLS8vIE5PVEU6IEl0IG1h
eSBiZSBwb3NzaWJsZSB3aXRoIFlVSURvYyB0byBjb21iaW5lIGRvY3MgaW4gdHdvIGxvY2F0aW9u
cwotCi0vKioKLUFkZGl0aW9uYWwgbWV0aG9kcyBmb3IgdGhlIENvbnRyb2xsZXJNaXhpbgotCi1A
Y2xhc3MgQ29udHJvbGxlck1peGluCi1AbmFtZXNwYWNlIEVtYmVyCi0qLwotRW1iZXIuQ29udHJv
bGxlck1peGluLnJlb3Blbih7Ci0gIHRhcmdldDogbnVsbCwKLSAgbmFtZXNwYWNlOiBudWxsLAot
ICB2aWV3OiBudWxsLAotICBjb250YWluZXI6IG51bGwsCi0gIF9jaGlsZENvbnRhaW5lcnM6IG51
bGwsCi0KLSAgaW5pdDogZnVuY3Rpb24oKSB7Ci0gICAgdGhpcy5fc3VwZXIoKTsKLSAgICBzZXQo
dGhpcywgJ19jaGlsZENvbnRhaW5lcnMnLCB7fSk7Ci0gIH0sCi0KLSAgX21vZGVsRGlkQ2hhbmdl
OiBFbWJlci5vYnNlcnZlcignbW9kZWwnLCBmdW5jdGlvbigpIHsKLSAgICB2YXIgY29udGFpbmVy
cyA9IGdldCh0aGlzLCAnX2NoaWxkQ29udGFpbmVycycpOwotCi0gICAgZm9yICh2YXIgcHJvcCBp
biBjb250YWluZXJzKSB7Ci0gICAgICBpZiAoIWNvbnRhaW5lcnMuaGFzT3duUHJvcGVydHkocHJv
cCkpIHsgY29udGludWU7IH0KLSAgICAgIGNvbnRhaW5lcnNbcHJvcF0uZGVzdHJveSgpOwotICAg
IH0KLQotICAgIHNldCh0aGlzLCAnX2NoaWxkQ29udGFpbmVycycsIHt9KTsKLSAgfSkKLX0pOwot
Ci19KSgpOwotCi0KLQotKGZ1bmN0aW9uKCkgewotCi19KSgpOwotCi0KLQotKGZ1bmN0aW9uKCkg
ewotdmFyIHN0YXRlcyA9IHt9OwotCi0vKioKLUBtb2R1bGUgZW1iZXIKLUBzdWJtb2R1bGUgZW1i
ZXItdmlld3MKLSovCi0KLXZhciBnZXQgPSBFbWJlci5nZXQsIHNldCA9IEVtYmVyLnNldDsKLXZh
ciBndWlkRm9yID0gRW1iZXIuZ3VpZEZvcjsKLXZhciBhX2ZvckVhY2ggPSBFbWJlci5FbnVtZXJh
YmxlVXRpbHMuZm9yRWFjaDsKLXZhciBhX2FkZE9iamVjdCA9IEVtYmVyLkVudW1lcmFibGVVdGls
cy5hZGRPYmplY3Q7Ci12YXIgbWV0YSA9IEVtYmVyLm1ldGE7Ci0KLXZhciBjaGlsZFZpZXdzUHJv
cGVydHkgPSBFbWJlci5jb21wdXRlZChmdW5jdGlvbigpIHsKLSAgdmFyIGNoaWxkVmlld3MgPSB0
aGlzLl9jaGlsZFZpZXdzLCByZXQgPSBFbWJlci5BKCksIHZpZXcgPSB0aGlzOwotCi0gIGFfZm9y
RWFjaChjaGlsZFZpZXdzLCBmdW5jdGlvbih2aWV3KSB7Ci0gICAgdmFyIGN1cnJlbnRDaGlsZFZp
ZXdzOwotICAgIGlmICh2aWV3LmlzVmlydHVhbCkgewotICAgICAgaWYgKGN1cnJlbnRDaGlsZFZp
ZXdzID0gZ2V0KHZpZXcsICdjaGlsZFZpZXdzJykpIHsKLSAgICAgICAgcmV0LnB1c2hPYmplY3Rz
KGN1cnJlbnRDaGlsZFZpZXdzKTsKLSAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgcmV0LnB1
c2godmlldyk7Ci0gICAgfQotICB9KTsKLQotICByZXQucmVwbGFjZSA9IGZ1bmN0aW9uIChpZHgs
IHJlbW92ZWRDb3VudCwgYWRkZWRWaWV3cykgewotICAgIGlmICh2aWV3IGluc3RhbmNlb2YgRW1i
ZXIuQ29udGFpbmVyVmlldykgewotICAgICAgRW1iZXIuZGVwcmVjYXRlKCJNYW5pcHVsYXRpbmcg
YW4gRW1iZXIuQ29udGFpbmVyVmlldyB0aHJvdWdoIGl0cyBjaGlsZFZpZXdzIHByb3BlcnR5IGlz
IGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgdGhlIENvbnRhaW5lclZpZXcgaW5zdGFuY2UgaXRzZWxm
IGFzIGFuIEVtYmVyLk11dGFibGVBcnJheS4iKTsKLSAgICAgIHJldHVybiB2aWV3LnJlcGxhY2Uo
aWR4LCByZW1vdmVkQ291bnQsIGFkZGVkVmlld3MpOwotICAgIH0KLSAgICB0aHJvdyBuZXcgRW1i
ZXIuRXJyb3IoImNoaWxkVmlld3MgaXMgaW1tdXRhYmxlIik7Ci0gIH07Ci0KLSAgcmV0dXJuIHJl
dDsKLX0pOwotCi1FbWJlci53YXJuKCJUaGUgVklFV19QUkVTRVJWRVNfQ09OVEVYVCBmbGFnIGhh
cyBiZWVuIHJlbW92ZWQgYW5kIHRoZSBmdW5jdGlvbmFsaXR5IGNhbiBubyBsb25nZXIgYmUgZGlz
YWJsZWQuIiwgRW1iZXIuRU5WLlZJRVdfUFJFU0VSVkVTX0NPTlRFWFQgIT09IGZhbHNlKTsKLQot
LyoqCi0gIEdsb2JhbCBoYXNoIG9mIHNoYXJlZCB0ZW1wbGF0ZXMuIFRoaXMgd2lsbCBhdXRvbWF0
aWNhbGx5IGJlIHBvcHVsYXRlZAotICBieSB0aGUgYnVpbGQgdG9vbHMgc28gdGhhdCB5b3UgY2Fu
IHN0b3JlIHlvdXIgSGFuZGxlYmFycyB0ZW1wbGF0ZXMgaW4KLSAgc2VwYXJhdGUgZmlsZXMgdGhh
dCBnZXQgbG9hZGVkIGludG8gSmF2YVNjcmlwdCBhdCBidWlsZHRpbWUuCi0KLSAgQHByb3BlcnR5
IFRFTVBMQVRFUwotICBAZm9yIEVtYmVyCi0gIEB0eXBlIEhhc2gKLSovCi1FbWJlci5URU1QTEFU
RVMgPSB7fTsKLQotLyoqCi0gIGBFbWJlci5Db3JlVmlld2AgaXMgYW4gYWJzdHJhY3QgY2xhc3Mg
dGhhdCBleGlzdHMgdG8gZ2l2ZSB2aWV3LWxpa2UgYmVoYXZpb3IKLSAgdG8gYm90aCBFbWJlcidz
IG1haW4gdmlldyBjbGFzcyBgRW1iZXIuVmlld2AgYW5kIG90aGVyIGNsYXNzZXMgbGlrZQotICBg
RW1iZXIuX1NpbXBsZU1ldGFtb3JwaFZpZXdgIHRoYXQgZG9uJ3QgbmVlZCB0aGUgZnVsbHkgZnVu
Y3Rpb25hbHRpeSBvZgotICBgRW1iZXIuVmlld2AuCi0KLSAgVW5sZXNzIHlvdSBoYXZlIHNwZWNp
ZmljIG5lZWRzIGZvciBgQ29yZVZpZXdgLCB5b3Ugd2lsbCB1c2UgYEVtYmVyLlZpZXdgCi0gIGlu
IHlvdXIgYXBwbGljYXRpb25zLgotCi0gIEBjbGFzcyBDb3JlVmlldwotICBAbmFtZXNwYWNlIEVt
YmVyCi0gIEBleHRlbmRzIEVtYmVyLk9iamVjdAotICBAdXNlcyBFbWJlci5FdmVudGVkCi0gIEB1
c2VzIEVtYmVyLkFjdGlvbkhhbmRsZXIKLSovCi0KLUVtYmVyLkNvcmVWaWV3ID0gRW1iZXIuT2Jq
ZWN0LmV4dGVuZChFbWJlci5FdmVudGVkLCBFbWJlci5BY3Rpb25IYW5kbGVyLCB7Ci0gIGlzVmll
dzogdHJ1ZSwKLQotICBzdGF0ZXM6IHN0YXRlcywKLQotICBpbml0OiBmdW5jdGlvbigpIHsKLSAg
ICB0aGlzLl9zdXBlcigpOwotICAgIHRoaXMudHJhbnNpdGlvblRvKCdwcmVSZW5kZXInKTsKLSAg
fSwKLQotICAvKioKLSAgICBJZiB0aGUgdmlldyBpcyBjdXJyZW50bHkgaW5zZXJ0ZWQgaW50byB0
aGUgRE9NIG9mIGEgcGFyZW50IHZpZXcsIHRoaXMKLSAgICBwcm9wZXJ0eSB3aWxsIHBvaW50IHRv
IHRoZSBwYXJlbnQgb2YgdGhlIHZpZXcuCi0KLSAgICBAcHJvcGVydHkgcGFyZW50VmlldwotICAg
IEB0eXBlIEVtYmVyLlZpZXcKLSAgICBAZGVmYXVsdCBudWxsCi0gICovCi0gIHBhcmVudFZpZXc6
IEVtYmVyLmNvbXB1dGVkKGZ1bmN0aW9uKCkgewotICAgIHZhciBwYXJlbnQgPSB0aGlzLl9wYXJl
bnRWaWV3OwotCi0gICAgaWYgKHBhcmVudCAmJiBwYXJlbnQuaXNWaXJ0dWFsKSB7Ci0gICAgICBy
ZXR1cm4gZ2V0KHBhcmVudCwgJ3BhcmVudFZpZXcnKTsKLSAgICB9IGVsc2UgewotICAgICAgcmV0
dXJuIHBhcmVudDsKLSAgICB9Ci0gIH0pLnByb3BlcnR5KCdfcGFyZW50VmlldycpLAotCi0gIHN0
YXRlOiBudWxsLAotCi0gIF9wYXJlbnRWaWV3OiBudWxsLAotCi0gIC8vIHJldHVybiB0aGUgY3Vy
cmVudCB2aWV3LCBub3QgaW5jbHVkaW5nIHZpcnR1YWwgdmlld3MKLSAgY29uY3JldGVWaWV3OiBF
bWJlci5jb21wdXRlZChmdW5jdGlvbigpIHsKLSAgICBpZiAoIXRoaXMuaXNWaXJ0dWFsKSB7IHJl
dHVybiB0aGlzOyB9Ci0gICAgZWxzZSB7IHJldHVybiBnZXQodGhpcywgJ3BhcmVudFZpZXcnKTsg
fQotICB9KS5wcm9wZXJ0eSgncGFyZW50VmlldycpLAotCi0gIGluc3RydW1lbnROYW1lOiAnY29y
ZV92aWV3JywKLQotICBpbnN0cnVtZW50RGV0YWlsczogZnVuY3Rpb24oaGFzaCkgewotICAgIGhh
c2gub2JqZWN0ID0gdGhpcy50b1N0cmluZygpOwotICB9LAotCi0gIC8qKgotICAgIEludm9rZWQg
YnkgdGhlIHZpZXcgc3lzdGVtIHdoZW4gdGhpcyB2aWV3IG5lZWRzIHRvIHByb2R1Y2UgYW4gSFRN
TAotICAgIHJlcHJlc2VudGF0aW9uLiBUaGlzIG1ldGhvZCB3aWxsIGNyZWF0ZSBhIG5ldyByZW5k
ZXIgYnVmZmVyLCBpZiBuZWVkZWQsCi0gICAgdGhlbiBhcHBseSBhbnkgZGVmYXVsdCBhdHRyaWJ1
dGVzLCBzdWNoIGFzIGNsYXNzIG5hbWVzIGFuZCB2aXNpYmlsaXR5LgotICAgIEZpbmFsbHksIHRo
ZSBgcmVuZGVyKClgIG1ldGhvZCBpcyBpbnZva2VkLCB3aGljaCBpcyByZXNwb25zaWJsZSBmb3IK
LSAgICBkb2luZyB0aGUgYnVsayBvZiB0aGUgcmVuZGVyaW5nLgotCi0gICAgWW91IHNob3VsZCBu
b3QgbmVlZCB0byBvdmVycmlkZSB0aGlzIG1ldGhvZDsgaW5zdGVhZCwgaW1wbGVtZW50IHRoZQot
ICAgIGB0ZW1wbGF0ZWAgcHJvcGVydHksIG9yIGlmIHlvdSBuZWVkIG1vcmUgY29udHJvbCwgb3Zl
cnJpZGUgdGhlIGByZW5kZXJgCi0gICAgbWV0aG9kLgotCi0gICAgQG1ldGhvZCByZW5kZXJUb0J1
ZmZlcgotICAgIEBwYXJhbSB7RW1iZXIuUmVuZGVyQnVmZmVyfSBidWZmZXIgdGhlIHJlbmRlciBi
dWZmZXIuIElmIG5vIGJ1ZmZlciBpcwotICAgICAgcGFzc2VkLCBhIGRlZmF1bHQgYnVmZmVyLCB1
c2luZyB0aGUgY3VycmVudCB2aWV3J3MgYHRhZ05hbWVgLCB3aWxsCi0gICAgICBiZSB1c2VkLgot
ICAgIEBwcml2YXRlCi0gICovCi0gIHJlbmRlclRvQnVmZmVyOiBmdW5jdGlvbihwYXJlbnRCdWZm
ZXIsIGJ1ZmZlck9wZXJhdGlvbikgewotICAgIHZhciBuYW1lID0gJ3JlbmRlci4nICsgdGhpcy5p
bnN0cnVtZW50TmFtZSwKLSAgICAgICAgZGV0YWlscyA9IHt9OwotCi0gICAgdGhpcy5pbnN0cnVt
ZW50RGV0YWlscyhkZXRhaWxzKTsKLQotICAgIHJldHVybiBFbWJlci5pbnN0cnVtZW50KG5hbWUs
IGRldGFpbHMsIGZ1bmN0aW9uIGluc3RydW1lbnRSZW5kZXJUb0J1ZmZlcigpIHsKLSAgICAgIHJl
dHVybiB0aGlzLl9yZW5kZXJUb0J1ZmZlcihwYXJlbnRCdWZmZXIsIGJ1ZmZlck9wZXJhdGlvbik7
Ci0gICAgfSwgdGhpcyk7Ci0gIH0sCi0KLSAgX3JlbmRlclRvQnVmZmVyOiBmdW5jdGlvbihwYXJl
bnRCdWZmZXIsIGJ1ZmZlck9wZXJhdGlvbikgewotICAgIC8vIElmIHRoaXMgaXMgdGhlIHRvcC1t
b3N0IHZpZXcsIHN0YXJ0IGEgbmV3IGJ1ZmZlci4gT3RoZXJ3aXNlLAotICAgIC8vIGNyZWF0ZSBh
IG5ldyBidWZmZXIgcmVsYXRpdmUgdG8gdGhlIG9yaWdpbmFsIHVzaW5nIHRoZQotICAgIC8vIHBy
b3ZpZGVkIGJ1ZmZlciBvcGVyYXRpb24gKGZvciBleGFtcGxlLCBgaW5zZXJ0QWZ0ZXJgIHdpbGwK
LSAgICAvLyBpbnNlcnQgYSBuZXcgYnVmZmVyIGFmdGVyIHRoZSAicGFyZW50IGJ1ZmZlciIpLgot
ICAgIHZhciB0YWdOYW1lID0gdGhpcy50YWdOYW1lOwotCi0gICAgaWYgKHRhZ05hbWUgPT09IG51
bGwgfHwgdGFnTmFtZSA9PT0gdW5kZWZpbmVkKSB7Ci0gICAgICB0YWdOYW1lID0gJ2Rpdic7Ci0g
ICAgfQotCi0gICAgdmFyIGJ1ZmZlciA9IHRoaXMuYnVmZmVyID0gcGFyZW50QnVmZmVyICYmIHBh
cmVudEJ1ZmZlci5iZWdpbih0YWdOYW1lKSB8fCBFbWJlci5SZW5kZXJCdWZmZXIodGFnTmFtZSk7
Ci0gICAgdGhpcy50cmFuc2l0aW9uVG8oJ2luQnVmZmVyJywgZmFsc2UpOwotCi0gICAgdGhpcy5i
ZWZvcmVSZW5kZXIoYnVmZmVyKTsKLSAgICB0aGlzLnJlbmRlcihidWZmZXIpOwotICAgIHRoaXMu
YWZ0ZXJSZW5kZXIoYnVmZmVyKTsKLQotICAgIHJldHVybiBidWZmZXI7Ci0gIH0sCi0KLSAgLyoq
Ci0gICAgT3ZlcnJpZGUgdGhlIGRlZmF1bHQgZXZlbnQgZmlyaW5nIGZyb20gYEVtYmVyLkV2ZW50
ZWRgIHRvCi0gICAgYWxzbyBjYWxsIG1ldGhvZHMgd2l0aCB0aGUgZ2l2ZW4gbmFtZS4KLQotICAg
IEBtZXRob2QgdHJpZ2dlcgotICAgIEBwYXJhbSBuYW1lIHtTdHJpbmd9Ci0gICAgQHByaXZhdGUK
LSAgKi8KLSAgdHJpZ2dlcjogZnVuY3Rpb24obmFtZSkgewotICAgIHRoaXMuX3N1cGVyLmFwcGx5
KHRoaXMsIGFyZ3VtZW50cyk7Ci0gICAgdmFyIG1ldGhvZCA9IHRoaXNbbmFtZV07Ci0gICAgaWYg
KG1ldGhvZCkgewotICAgICAgdmFyIGFyZ3MgPSBbXSwgaSwgbDsKLSAgICAgIGZvciAoaSA9IDEs
IGwgPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7Ci0gICAgICAgIGFyZ3MucHVzaChh
cmd1bWVudHNbaV0pOwotICAgICAgfQotICAgICAgcmV0dXJuIG1ldGhvZC5hcHBseSh0aGlzLCBh
cmdzKTsKLSAgICB9Ci0gIH0sCi0KLSAgZGVwcmVjYXRlZFNlbmRIYW5kbGVzOiBmdW5jdGlvbihh
Y3Rpb25OYW1lKSB7Ci0gICAgcmV0dXJuICEhdGhpc1thY3Rpb25OYW1lXTsKLSAgfSwKLQotICBk
ZXByZWNhdGVkU2VuZDogZnVuY3Rpb24oYWN0aW9uTmFtZSkgewotICAgIHZhciBhcmdzID0gW10u
c2xpY2UuY2FsbChhcmd1bWVudHMsIDEpOwotICAgIEVtYmVyLmFzc2VydCgnJyArIHRoaXMgKyAi
IGhhcyB0aGUgYWN0aW9uICIgKyBhY3Rpb25OYW1lICsgIiBidXQgaXQgaXMgbm90IGEgZnVuY3Rp
b24iLCB0eXBlb2YgdGhpc1thY3Rpb25OYW1lXSA9PT0gJ2Z1bmN0aW9uJyk7Ci0gICAgRW1iZXIu
ZGVwcmVjYXRlKCdBY3Rpb24gaGFuZGxlcnMgaW1wbGVtZW50ZWQgZGlyZWN0bHkgb24gdmlld3Mg
YXJlIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgYWN0aW9uIGhhbmRsZXJzIG9uIGFuIGBhY3Rpb25z
YCBvYmplY3QgKCcgKyBhY3Rpb25OYW1lICsgJyBvbiAnICsgdGhpcyArICcpJywgZmFsc2UpOwot
ICAgIHRoaXNbYWN0aW9uTmFtZV0uYXBwbHkodGhpcywgYXJncyk7Ci0gICAgcmV0dXJuOwotICB9
LAotCi0gIGhhczogZnVuY3Rpb24obmFtZSkgewotICAgIHJldHVybiBFbWJlci50eXBlT2YodGhp
c1tuYW1lXSkgPT09ICdmdW5jdGlvbicgfHwgdGhpcy5fc3VwZXIobmFtZSk7Ci0gIH0sCi0KLSAg
ZGVzdHJveTogZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHBhcmVudCA9IHRoaXMuX3BhcmVudFZpZXc7
Ci0KLSAgICBpZiAoIXRoaXMuX3N1cGVyKCkpIHsgcmV0dXJuOyB9Ci0KLSAgICAvLyBkZXN0cm95
IHRoZSBlbGVtZW50IC0tIHRoaXMgd2lsbCBhdm9pZCBlYWNoIGNoaWxkIHZpZXcgZGVzdHJveWlu
ZwotICAgIC8vIHRoZSBlbGVtZW50IG92ZXIgYW5kIG92ZXIgYWdhaW4uLi4KLSAgICBpZiAoIXRo
aXMucmVtb3ZlZEZyb21ET00pIHsgdGhpcy5kZXN0cm95RWxlbWVudCgpOyB9Ci0KLSAgICAvLyBy
ZW1vdmUgZnJvbSBwYXJlbnQgaWYgZm91bmQuIERvbid0IGNhbGwgcmVtb3ZlRnJvbVBhcmVudCwK
LSAgICAvLyBhcyByZW1vdmVGcm9tUGFyZW50IHdpbGwgdHJ5IHRvIHJlbW92ZSB0aGUgZWxlbWVu
dCBmcm9tCi0gICAgLy8gdGhlIERPTSBhZ2Fpbi4KLSAgICBpZiAocGFyZW50KSB7IHBhcmVudC5y
ZW1vdmVDaGlsZCh0aGlzKTsgfQotCi0gICAgdGhpcy50cmFuc2l0aW9uVG8oJ2Rlc3Ryb3lpbmcn
LCBmYWxzZSk7Ci0KLSAgICByZXR1cm4gdGhpczsKLSAgfSwKLQotICBjbGVhclJlbmRlcmVkQ2hp
bGRyZW46IEVtYmVyLkssCi0gIHRyaWdnZXJSZWN1cnNpdmVseTogRW1iZXIuSywKLSAgaW52b2tl
UmVjdXJzaXZlbHk6IEVtYmVyLkssCi0gIHRyYW5zaXRpb25UbzogRW1iZXIuSywKLSAgZGVzdHJv
eUVsZW1lbnQ6IEVtYmVyLksKLX0pOwotCi12YXIgVmlld0NvbGxlY3Rpb24gPSBFbWJlci5fVmll
d0NvbGxlY3Rpb24gPSBmdW5jdGlvbihpbml0aWFsVmlld3MpIHsKLSAgdmFyIHZpZXdzID0gdGhp
cy52aWV3cyA9IGluaXRpYWxWaWV3cyB8fCBbXTsKLSAgdGhpcy5sZW5ndGggPSB2aWV3cy5sZW5n
dGg7Ci19OwotCi1WaWV3Q29sbGVjdGlvbi5wcm90b3R5cGUgPSB7Ci0gIGxlbmd0aDogMCwKLQot
ICB0cmlnZ2VyOiBmdW5jdGlvbihldmVudE5hbWUpIHsKLSAgICB2YXIgdmlld3MgPSB0aGlzLnZp
ZXdzLCB2aWV3OwotICAgIGZvciAodmFyIGkgPSAwLCBsID0gdmlld3MubGVuZ3RoOyBpIDwgbDsg
aSsrKSB7Ci0gICAgICB2aWV3ID0gdmlld3NbaV07Ci0gICAgICBpZiAodmlldy50cmlnZ2VyKSB7
IHZpZXcudHJpZ2dlcihldmVudE5hbWUpOyB9Ci0gICAgfQotICB9LAotCi0gIHRyaWdnZXJSZWN1
cnNpdmVseTogZnVuY3Rpb24oZXZlbnROYW1lKSB7Ci0gICAgdmFyIHZpZXdzID0gdGhpcy52aWV3
czsKLSAgICBmb3IgKHZhciBpID0gMCwgbCA9IHZpZXdzLmxlbmd0aDsgaSA8IGw7IGkrKykgewot
ICAgICAgdmlld3NbaV0udHJpZ2dlclJlY3Vyc2l2ZWx5KGV2ZW50TmFtZSk7Ci0gICAgfQotICB9
LAotCi0gIGludm9rZVJlY3Vyc2l2ZWx5OiBmdW5jdGlvbihmbikgewotICAgIHZhciB2aWV3cyA9
IHRoaXMudmlld3MsIHZpZXc7Ci0KLSAgICBmb3IgKHZhciBpID0gMCwgbCA9IHZpZXdzLmxlbmd0
aDsgaSA8IGw7IGkrKykgewotICAgICAgdmlldyA9IHZpZXdzW2ldOwotICAgICAgZm4odmlldyk7
Ci0gICAgfQotICB9LAotCi0gIHRyYW5zaXRpb25UbzogZnVuY3Rpb24oc3RhdGUsIGNoaWxkcmVu
KSB7Ci0gICAgdmFyIHZpZXdzID0gdGhpcy52aWV3czsKLSAgICBmb3IgKHZhciBpID0gMCwgbCA9
IHZpZXdzLmxlbmd0aDsgaSA8IGw7IGkrKykgewotICAgICAgdmlld3NbaV0udHJhbnNpdGlvblRv
KHN0YXRlLCBjaGlsZHJlbik7Ci0gICAgfQotICB9LAotCi0gIHB1c2g6IGZ1bmN0aW9uKCkgewot
ICAgIHRoaXMubGVuZ3RoICs9IGFyZ3VtZW50cy5sZW5ndGg7Ci0gICAgdmFyIHZpZXdzID0gdGhp
cy52aWV3czsKLSAgICByZXR1cm4gdmlld3MucHVzaC5hcHBseSh2aWV3cywgYXJndW1lbnRzKTsK
LSAgfSwKLQotICBvYmplY3RBdDogZnVuY3Rpb24oaWR4KSB7Ci0gICAgcmV0dXJuIHRoaXMudmll
d3NbaWR4XTsKLSAgfSwKLQotICBmb3JFYWNoOiBmdW5jdGlvbihjYWxsYmFjaykgewotICAgIHZh
ciB2aWV3cyA9IHRoaXMudmlld3M7Ci0gICAgcmV0dXJuIGFfZm9yRWFjaCh2aWV3cywgY2FsbGJh
Y2spOwotICB9LAotCi0gIGNsZWFyOiBmdW5jdGlvbigpIHsKLSAgICB0aGlzLmxlbmd0aCA9IDA7
Ci0gICAgdGhpcy52aWV3cy5sZW5ndGggPSAwOwotICB9Ci19OwotCi12YXIgRU1QVFlfQVJSQVkg
PSBbXTsKLQotLyoqCi0gIGBFbWJlci5WaWV3YCBpcyB0aGUgY2xhc3MgaW4gRW1iZXIgcmVzcG9u
c2libGUgZm9yIGVuY2Fwc3VsYXRpbmcgdGVtcGxhdGVzIG9mCi0gIEhUTUwgY29udGVudCwgY29t
YmluaW5nIHRlbXBsYXRlcyB3aXRoIGRhdGEgdG8gcmVuZGVyIGFzIHNlY3Rpb25zIG9mIGEgcGFn
ZSdzCi0gIERPTSwgYW5kIHJlZ2lzdGVyaW5nIGFuZCByZXNwb25kaW5nIHRvIHVzZXItaW5pdGlh
dGVkIGV2ZW50cy4KLQotICAjIyBIVE1MIFRhZwotCi0gIFRoZSBkZWZhdWx0IEhUTUwgdGFnIG5h
bWUgdXNlZCBmb3IgYSB2aWV3J3MgRE9NIHJlcHJlc2VudGF0aW9uIGlzIGBkaXZgLiBUaGlzCi0g
IGNhbiBiZSBjdXN0b21pemVkIGJ5IHNldHRpbmcgdGhlIGB0YWdOYW1lYCBwcm9wZXJ0eS4gVGhl
IGZvbGxvd2luZyB2aWV3Ci0gIGNsYXNzOgotCi0gIGBgYGphdmFzY3JpcHQKLSAgUGFyYWdyYXBo
VmlldyA9IEVtYmVyLlZpZXcuZXh0ZW5kKHsKLSAgICB0YWdOYW1lOiAnZW0nCi0gIH0pOwotICBg
YGAKLQotICBXb3VsZCByZXN1bHQgaW4gaW5zdGFuY2VzIHdpdGggdGhlIGZvbGxvd2luZyBIVE1M
OgotCi0gIGBgYGh0bWwKLSAgPGVtIGlkPSJlbWJlcjEiIGNsYXNzPSJlbWJlci12aWV3Ij48L2Vt
PgotICBgYGAKLQotICAjIyBIVE1MIGBjbGFzc2AgQXR0cmlidXRlCi0KLSAgVGhlIEhUTUwgYGNs
YXNzYCBhdHRyaWJ1dGUgb2YgYSB2aWV3J3MgdGFnIGNhbiBiZSBzZXQgYnkgcHJvdmlkaW5nIGEK
LSAgYGNsYXNzTmFtZXNgIHByb3BlcnR5IHRoYXQgaXMgc2V0IHRvIGFuIGFycmF5IG9mIHN0cmlu
Z3M6Ci0KLSAgYGBgamF2YXNjcmlwdAotICBNeVZpZXcgPSBFbWJlci5WaWV3LmV4dGVuZCh7Ci0g
ICAgY2xhc3NOYW1lczogWydteS1jbGFzcycsICdteS1vdGhlci1jbGFzcyddCi0gIH0pOwotICBg
YGAKLQotICBXaWxsIHJlc3VsdCBpbiB2aWV3IGluc3RhbmNlcyB3aXRoIGFuIEhUTUwgcmVwcmVz
ZW50YXRpb24gb2Y6Ci0KLSAgYGBgaHRtbAotICA8ZGl2IGlkPSJlbWJlcjEiIGNsYXNzPSJlbWJl
ci12aWV3IG15LWNsYXNzIG15LW90aGVyLWNsYXNzIj48L2Rpdj4KLSAgYGBgCi0KLSAgYGNsYXNz
YCBhdHRyaWJ1dGUgdmFsdWVzIGNhbiBhbHNvIGJlIHNldCBieSBwcm92aWRpbmcgYSBgY2xhc3NO
YW1lQmluZGluZ3NgCi0gIHByb3BlcnR5IHNldCB0byBhbiBhcnJheSBvZiBwcm9wZXJ0aWVzIG5h
bWVzIGZvciB0aGUgdmlldy4gVGhlIHJldHVybiB2YWx1ZQotICBvZiB0aGVzZSBwcm9wZXJ0aWVz
IHdpbGwgYmUgYWRkZWQgYXMgcGFydCBvZiB0aGUgdmFsdWUgZm9yIHRoZSB2aWV3J3MgYGNsYXNz
YAotICBhdHRyaWJ1dGUuIFRoZXNlIHByb3BlcnRpZXMgY2FuIGJlIGNvbXB1dGVkIHByb3BlcnRp
ZXM6Ci0KLSAgYGBgamF2YXNjcmlwdAotICBNeVZpZXcgPSBFbWJlci5WaWV3LmV4dGVuZCh7Ci0g
ICAgY2xhc3NOYW1lQmluZGluZ3M6IFsncHJvcGVydHlBJywgJ3Byb3BlcnR5QiddLAotICAgIHBy
b3BlcnR5QTogJ2Zyb20tYScsCi0gICAgcHJvcGVydHlCOiBmdW5jdGlvbigpIHsKLSAgICAgIGlm
IChzb21lTG9naWMpIHsgcmV0dXJuICdmcm9tLWInOyB9Ci0gICAgfS5wcm9wZXJ0eSgpCi0gIH0p
OwotICBgYGAKLQotICBXaWxsIHJlc3VsdCBpbiB2aWV3IGluc3RhbmNlcyB3aXRoIGFuIEhUTUwg
cmVwcmVzZW50YXRpb24gb2Y6Ci0KLSAgYGBgaHRtbAotICA8ZGl2IGlkPSJlbWJlcjEiIGNsYXNz
PSJlbWJlci12aWV3IGZyb20tYSBmcm9tLWIiPjwvZGl2PgotICBgYGAKLQotICBJZiB0aGUgdmFs
dWUgb2YgYSBjbGFzcyBuYW1lIGJpbmRpbmcgcmV0dXJucyBhIGJvb2xlYW4gdGhlIHByb3BlcnR5
IG5hbWUKLSAgaXRzZWxmIHdpbGwgYmUgdXNlZCBhcyB0aGUgY2xhc3MgbmFtZSBpZiB0aGUgcHJv
cGVydHkgaXMgdHJ1ZS4gVGhlIGNsYXNzIG5hbWUKLSAgd2lsbCBub3QgYmUgYWRkZWQgaWYgdGhl
IHZhbHVlIGlzIGBmYWxzZWAgb3IgYHVuZGVmaW5lZGAuCi0KLSAgYGBgamF2YXNjcmlwdAotICBN
eVZpZXcgPSBFbWJlci5WaWV3LmV4dGVuZCh7Ci0gICAgY2xhc3NOYW1lQmluZGluZ3M6IFsnaG92
ZXJlZCddLAotICAgIGhvdmVyZWQ6IHRydWUKLSAgfSk7Ci0gIGBgYAotCi0gIFdpbGwgcmVzdWx0
IGluIHZpZXcgaW5zdGFuY2VzIHdpdGggYW4gSFRNTCByZXByZXNlbnRhdGlvbiBvZjoKLQotICBg
YGBodG1sCi0gIDxkaXYgaWQ9ImVtYmVyMSIgY2xhc3M9ImVtYmVyLXZpZXcgaG92ZXJlZCI+PC9k
aXY+Ci0gIGBgYAotCi0gIFdoZW4gdXNpbmcgYm9vbGVhbiBjbGFzcyBuYW1lIGJpbmRpbmdzIHlv
dSBjYW4gc3VwcGx5IGEgc3RyaW5nIHZhbHVlIG90aGVyCi0gIHRoYW4gdGhlIHByb3BlcnR5IG5h
bWUgZm9yIHVzZSBhcyB0aGUgYGNsYXNzYCBIVE1MIGF0dHJpYnV0ZSBieSBhcHBlbmRpbmcgdGhl
Ci0gIHByZWZlcnJlZCB2YWx1ZSBhZnRlciBhICI6IiBjaGFyYWN0ZXIgd2hlbiBkZWZpbmluZyB0
aGUgYmluZGluZzoKLQotICBgYGBqYXZhc2NyaXB0Ci0gIE15VmlldyA9IEVtYmVyLlZpZXcuZXh0
ZW5kKHsKLSAgICBjbGFzc05hbWVCaW5kaW5nczogWydhd2Vzb21lOnNvLXZlcnktY29vbCddLAot
ICAgIGF3ZXNvbWU6IHRydWUKLSAgfSk7Ci0gIGBgYAotCi0gIFdpbGwgcmVzdWx0IGluIHZpZXcg
aW5zdGFuY2VzIHdpdGggYW4gSFRNTCByZXByZXNlbnRhdGlvbiBvZjoKLQotICBgYGBodG1sCi0g
IDxkaXYgaWQ9ImVtYmVyMSIgY2xhc3M9ImVtYmVyLXZpZXcgc28tdmVyeS1jb29sIj48L2Rpdj4K
LSAgYGBgCi0KLSAgQm9vbGVhbiB2YWx1ZSBjbGFzcyBuYW1lIGJpbmRpbmdzIHdob3NlIHByb3Bl
cnR5IG5hbWVzIGFyZSBpbiBhCi0gIGNhbWVsQ2FzZS1zdHlsZSBmb3JtYXQgd2lsbCBiZSBjb252
ZXJ0ZWQgdG8gYSBkYXNoZXJpemVkIGZvcm1hdDoKLQotICBgYGBqYXZhc2NyaXB0Ci0gIE15Vmll
dyA9IEVtYmVyLlZpZXcuZXh0ZW5kKHsKLSAgICBjbGFzc05hbWVCaW5kaW5nczogWydpc1VyZ2Vu
dCddLAotICAgIGlzVXJnZW50OiB0cnVlCi0gIH0pOwotICBgYGAKLQotICBXaWxsIHJlc3VsdCBp
biB2aWV3IGluc3RhbmNlcyB3aXRoIGFuIEhUTUwgcmVwcmVzZW50YXRpb24gb2Y6Ci0KLSAgYGBg
aHRtbAotICA8ZGl2IGlkPSJlbWJlcjEiIGNsYXNzPSJlbWJlci12aWV3IGlzLXVyZ2VudCI+PC9k
aXY+Ci0gIGBgYAotCi0gIENsYXNzIG5hbWUgYmluZGluZ3MgY2FuIGFsc28gcmVmZXIgdG8gb2Jq
ZWN0IHZhbHVlcyB0aGF0IGFyZSBmb3VuZCBieQotICB0cmF2ZXJzaW5nIGEgcGF0aCByZWxhdGl2
ZSB0byB0aGUgdmlldyBpdHNlbGY6Ci0KLSAgYGBgamF2YXNjcmlwdAotICBNeVZpZXcgPSBFbWJl
ci5WaWV3LmV4dGVuZCh7Ci0gICAgY2xhc3NOYW1lQmluZGluZ3M6IFsnbWVzc2FnZXMuZW1wdHkn
XQotICAgIG1lc3NhZ2VzOiBFbWJlci5PYmplY3QuY3JlYXRlKHsKLSAgICAgIGVtcHR5OiB0cnVl
Ci0gICAgfSkKLSAgfSk7Ci0gIGBgYAotCi0gIFdpbGwgcmVzdWx0IGluIHZpZXcgaW5zdGFuY2Vz
IHdpdGggYW4gSFRNTCByZXByZXNlbnRhdGlvbiBvZjoKLQotICBgYGBodG1sCi0gIDxkaXYgaWQ9
ImVtYmVyMSIgY2xhc3M9ImVtYmVyLXZpZXcgZW1wdHkiPjwvZGl2PgotICBgYGAKLQotICBJZiB5
b3Ugd2FudCB0byBhZGQgYSBjbGFzcyBuYW1lIGZvciBhIHByb3BlcnR5IHdoaWNoIGV2YWx1YXRl
cyB0byB0cnVlIGFuZAotICBhbmQgYSBkaWZmZXJlbnQgY2xhc3MgbmFtZSBpZiBpdCBldmFsdWF0
ZXMgdG8gZmFsc2UsIHlvdSBjYW4gcGFzcyBhIGJpbmRpbmcKLSAgbGlrZSB0aGlzOgotCi0gIGBg
YGphdmFzY3JpcHQKLSAgLy8gQXBwbGllcyAnZW5hYmxlZCcgY2xhc3Mgd2hlbiBpc0VuYWJsZWQg
aXMgdHJ1ZSBhbmQgJ2Rpc2FibGVkJyB3aGVuIGlzRW5hYmxlZCBpcyBmYWxzZQotICBFbWJlci5W
aWV3LmV4dGVuZCh7Ci0gICAgY2xhc3NOYW1lQmluZGluZ3M6IFsnaXNFbmFibGVkOmVuYWJsZWQ6
ZGlzYWJsZWQnXQotICAgIGlzRW5hYmxlZDogdHJ1ZQotICB9KTsKLSAgYGBgCi0KLSAgV2lsbCBy
ZXN1bHQgaW4gdmlldyBpbnN0YW5jZXMgd2l0aCBhbiBIVE1MIHJlcHJlc2VudGF0aW9uIG9mOgot
Ci0gIGBgYGh0bWwKLSAgPGRpdiBpZD0iZW1iZXIxIiBjbGFzcz0iZW1iZXItdmlldyBlbmFibGVk
Ij48L2Rpdj4KLSAgYGBgCi0KLSAgV2hlbiBpc0VuYWJsZWQgaXMgYGZhbHNlYCwgdGhlIHJlc3Vs
dGluZyBIVE1MIHJlcHJlbnNlbnRhdGlvbiBsb29rcyBsaWtlCi0gIHRoaXM6Ci0KLSAgYGBgaHRt
bAotICA8ZGl2IGlkPSJlbWJlcjEiIGNsYXNzPSJlbWJlci12aWV3IGRpc2FibGVkIj48L2Rpdj4K
LSAgYGBgCi0KLSAgVGhpcyBzeW50YXggb2ZmZXJzIHRoZSBjb252ZW5pZW5jZSB0byBhZGQgYSBj
bGFzcyBpZiBhIHByb3BlcnR5IGlzIGBmYWxzZWA6Ci0KLSAgYGBgamF2YXNjcmlwdAotICAvLyBB
cHBsaWVzIG5vIGNsYXNzIHdoZW4gaXNFbmFibGVkIGlzIHRydWUgYW5kIGNsYXNzICdkaXNhYmxl
ZCcgd2hlbiBpc0VuYWJsZWQgaXMgZmFsc2UKLSAgRW1iZXIuVmlldy5leHRlbmQoewotICAgIGNs
YXNzTmFtZUJpbmRpbmdzOiBbJ2lzRW5hYmxlZDo6ZGlzYWJsZWQnXQotICAgIGlzRW5hYmxlZDog
dHJ1ZQotICB9KTsKLSAgYGBgCi0KLSAgV2lsbCByZXN1bHQgaW4gdmlldyBpbnN0YW5jZXMgd2l0
aCBhbiBIVE1MIHJlcHJlc2VudGF0aW9uIG9mOgotCi0gIGBgYGh0bWwKLSAgPGRpdiBpZD0iZW1i
ZXIxIiBjbGFzcz0iZW1iZXItdmlldyI+PC9kaXY+Ci0gIGBgYAotCi0gIFdoZW4gdGhlIGBpc0Vu
YWJsZWRgIHByb3BlcnR5IG9uIHRoZSB2aWV3IGlzIHNldCB0byBgZmFsc2VgLCBpdCB3aWxsIHJl
c3VsdAotICBpbiB2aWV3IGluc3RhbmNlcyB3aXRoIGFuIEhUTUwgcmVwcmVzZW50YXRpb24gb2Y6
Ci0KLSAgYGBgaHRtbAotICA8ZGl2IGlkPSJlbWJlcjEiIGNsYXNzPSJlbWJlci12aWV3IGRpc2Fi
bGVkIj48L2Rpdj4KLSAgYGBgCi0KLSAgVXBkYXRlcyB0byB0aGUgdGhlIHZhbHVlIG9mIGEgY2xh
c3MgbmFtZSBiaW5kaW5nIHdpbGwgcmVzdWx0IGluIGF1dG9tYXRpYwotICB1cGRhdGUgb2YgdGhl
ICBIVE1MIGBjbGFzc2AgYXR0cmlidXRlIGluIHRoZSB2aWV3J3MgcmVuZGVyZWQgSFRNTAotICBy
ZXByZXNlbnRhdGlvbi4gSWYgdGhlIHZhbHVlIGJlY29tZXMgYGZhbHNlYCBvciBgdW5kZWZpbmVk
YCB0aGUgY2xhc3MgbmFtZQotICB3aWxsIGJlIHJlbW92ZWQuCi0KLSAgQm90aCBgY2xhc3NOYW1l
c2AgYW5kIGBjbGFzc05hbWVCaW5kaW5nc2AgYXJlIGNvbmNhdGVuYXRlZCBwcm9wZXJ0aWVzLiBT
ZWUKLSAgW0VtYmVyLk9iamVjdF0oL2FwaS9jbGFzc2VzL0VtYmVyLk9iamVjdC5odG1sKSBkb2N1
bWVudGF0aW9uIGZvciBtb3JlCi0gIGluZm9ybWF0aW9uIGFib3V0IGNvbmNhdGVuYXRlZCBwcm9w
ZXJ0aWVzLgotCi0gICMjIEhUTUwgQXR0cmlidXRlcwotCi0gIFRoZSBIVE1MIGF0dHJpYnV0ZSBz
ZWN0aW9uIG9mIGEgdmlldydzIHRhZyBjYW4gYmUgc2V0IGJ5IHByb3ZpZGluZyBhbgotICBgYXR0
cmlidXRlQmluZGluZ3NgIHByb3BlcnR5IHNldCB0byBhbiBhcnJheSBvZiBwcm9wZXJ0eSBuYW1l
cyBvbiB0aGUgdmlldy4KLSAgVGhlIHJldHVybiB2YWx1ZSBvZiB0aGVzZSBwcm9wZXJ0aWVzIHdp
bGwgYmUgdXNlZCBhcyB0aGUgdmFsdWUgb2YgdGhlIHZpZXcncwotICBIVE1MIGFzc29jaWF0ZWQg
YXR0cmlidXRlOgotCi0gIGBgYGphdmFzY3JpcHQKLSAgQW5jaG9yVmlldyA9IEVtYmVyLlZpZXcu
ZXh0ZW5kKHsKLSAgICB0YWdOYW1lOiAnYScsCi0gICAgYXR0cmlidXRlQmluZGluZ3M6IFsnaHJl
ZiddLAotICAgIGhyZWY6ICdodHRwOi8vZ29vZ2xlLmNvbScKLSAgfSk7Ci0gIGBgYAotCi0gIFdp
bGwgcmVzdWx0IGluIHZpZXcgaW5zdGFuY2VzIHdpdGggYW4gSFRNTCByZXByZXNlbnRhdGlvbiBv
ZjoKLQotICBgYGBodG1sCi0gIDxhIGlkPSJlbWJlcjEiIGNsYXNzPSJlbWJlci12aWV3IiBocmVm
PSJodHRwOi8vZ29vZ2xlLmNvbSI+PC9hPgotICBgYGAKLQotICBJZiB0aGUgcmV0dXJuIHZhbHVl
IG9mIGFuIGBhdHRyaWJ1dGVCaW5kaW5nc2AgbW9uaXRvcmVkIHByb3BlcnR5IGlzIGEgYm9vbGVh
bgotICB0aGUgcHJvcGVydHkgd2lsbCBmb2xsb3cgSFRNTCdzIHBhdHRlcm4gb2YgcmVwZWF0aW5n
IHRoZSBhdHRyaWJ1dGUncyBuYW1lIGFzCi0gIGl0cyB2YWx1ZToKLQotICBgYGBqYXZhc2NyaXB0
Ci0gIE15VGV4dElucHV0ID0gRW1iZXIuVmlldy5leHRlbmQoewotICAgIHRhZ05hbWU6ICdpbnB1
dCcsCi0gICAgYXR0cmlidXRlQmluZGluZ3M6IFsnZGlzYWJsZWQnXSwKLSAgICBkaXNhYmxlZDog
dHJ1ZQotICB9KTsKLSAgYGBgCi0KLSAgV2lsbCByZXN1bHQgaW4gdmlldyBpbnN0YW5jZXMgd2l0
aCBhbiBIVE1MIHJlcHJlc2VudGF0aW9uIG9mOgotCi0gIGBgYGh0bWwKLSAgPGlucHV0IGlkPSJl
bWJlcjEiIGNsYXNzPSJlbWJlci12aWV3IiBkaXNhYmxlZD0iZGlzYWJsZWQiIC8+Ci0gIGBgYAot
Ci0gIGBhdHRyaWJ1dGVCaW5kaW5nc2AgY2FuIHJlZmVyIHRvIGNvbXB1dGVkIHByb3BlcnRpZXM6
Ci0KLSAgYGBgamF2YXNjcmlwdAotICBNeVRleHRJbnB1dCA9IEVtYmVyLlZpZXcuZXh0ZW5kKHsK
LSAgICB0YWdOYW1lOiAnaW5wdXQnLAotICAgIGF0dHJpYnV0ZUJpbmRpbmdzOiBbJ2Rpc2FibGVk
J10sCi0gICAgZGlzYWJsZWQ6IGZ1bmN0aW9uKCkgewotICAgICAgaWYgKHNvbWVMb2dpYykgewot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgIH0KLSAgICB9LnByb3BlcnR5KCkKLSAgfSk7Ci0gIGBgYAotCi0gIFVwZGF0ZXMg
dG8gdGhlIHRoZSBwcm9wZXJ0eSBvZiBhbiBhdHRyaWJ1dGUgYmluZGluZyB3aWxsIHJlc3VsdCBp
biBhdXRvbWF0aWMKLSAgdXBkYXRlIG9mIHRoZSAgSFRNTCBhdHRyaWJ1dGUgaW4gdGhlIHZpZXcn
cyByZW5kZXJlZCBIVE1MIHJlcHJlc2VudGF0aW9uLgotCi0gIGBhdHRyaWJ1dGVCaW5kaW5nc2Ag
aXMgYSBjb25jYXRlbmF0ZWQgcHJvcGVydHkuIFNlZSBbRW1iZXIuT2JqZWN0XSgvYXBpL2NsYXNz
ZXMvRW1iZXIuT2JqZWN0Lmh0bWwpCi0gIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRp
b24gYWJvdXQgY29uY2F0ZW5hdGVkIHByb3BlcnRpZXMuCi0KLSAgIyMgVGVtcGxhdGVzCi0KLSAg
VGhlIEhUTUwgY29udGVudHMgb2YgYSB2aWV3J3MgcmVuZGVyZWQgcmVwcmVzZW50YXRpb24gYXJl
IGRldGVybWluZWQgYnkgaXRzCi0gIHRlbXBsYXRlLiBUZW1wbGF0ZXMgY2FuIGJlIGFueSBmdW5j
dGlvbiB0aGF0IGFjY2VwdHMgYW4gb3B0aW9uYWwgY29udGV4dAotICBwYXJhbWV0ZXIgYW5kIHJl
dHVybnMgYSBzdHJpbmcgb2YgSFRNTCB0aGF0IHdpbGwgYmUgaW5zZXJ0ZWQgd2l0aGluIHRoZQot
ICB2aWV3J3MgdGFnLiBNb3N0IHR5cGljYWxseSBpbiBFbWJlciB0aGlzIGZ1bmN0aW9uIHdpbGwg
YmUgYSBjb21waWxlZAotICBgRW1iZXIuSGFuZGxlYmFyc2AgdGVtcGxhdGUuCi0KLSAgYGBgamF2
YXNjcmlwdAotICBBVmlldyA9IEVtYmVyLlZpZXcuZXh0ZW5kKHsKLSAgICB0ZW1wbGF0ZTogRW1i
ZXIuSGFuZGxlYmFycy5jb21waWxlKCdJIGFtIHRoZSB0ZW1wbGF0ZScpCi0gIH0pOwotICBgYGAK
LQotICBXaWxsIHJlc3VsdCBpbiB2aWV3IGluc3RhbmNlcyB3aXRoIGFuIEhUTUwgcmVwcmVzZW50
YXRpb24gb2Y6Ci0KLSAgYGBgaHRtbAotICA8ZGl2IGlkPSJlbWJlcjEiIGNsYXNzPSJlbWJlci12
aWV3Ij5JIGFtIHRoZSB0ZW1wbGF0ZTwvZGl2PgotICBgYGAKLQotICBXaXRoaW4gYW4gRW1iZXIg
YXBwbGljYXRpb24gaXMgbW9yZSBjb21tb24gdG8gZGVmaW5lIGEgSGFuZGxlYmFycyB0ZW1wbGF0
ZXMgYXMKLSAgcGFydCBvZiBhIHBhZ2U6Ci0KLSAgYGBgaHRtbAotICA8c2NyaXB0IHR5cGU9J3Rl
eHQveC1oYW5kbGViYXJzJyBkYXRhLXRlbXBsYXRlLW5hbWU9J3NvbWUtdGVtcGxhdGUnPgotICAg
IEhlbGxvCi0gIDwvc2NyaXB0PgotICBgYGAKLQotICBBbmQgYXNzb2NpYXRlIGl0IGJ5IG5hbWUg
dXNpbmcgYSB2aWV3J3MgYHRlbXBsYXRlTmFtZWAgcHJvcGVydHk6Ci0KLSAgYGBgamF2YXNjcmlw
dAotICBBVmlldyA9IEVtYmVyLlZpZXcuZXh0ZW5kKHsKLSAgICB0ZW1wbGF0ZU5hbWU6ICdzb21l
LXRlbXBsYXRlJwotICB9KTsKLSAgYGBgCi0KLSAgSWYgeW91IGhhdmUgbmVzdGVkIHJlc291cmNl
cywgeW91ciBIYW5kbGViYXJzIHRlbXBsYXRlIHdpbGwgbG9vayBsaWtlIHRoaXM6Ci0KLSAgYGBg
aHRtbAotICA8c2NyaXB0IHR5cGU9J3RleHQveC1oYW5kbGViYXJzJyBkYXRhLXRlbXBsYXRlLW5h
bWU9J3Bvc3RzL25ldyc+Ci0gICAgPGgxPk5ldyBQb3N0PC9oMT4KLSAgPC9zY3JpcHQ+Ci0gIGBg
YAotCi0gIEFuZCBgdGVtcGxhdGVOYW1lYCBwcm9wZXJ0eToKLQotICBgYGBqYXZhc2NyaXB0Ci0g
IEFWaWV3ID0gRW1iZXIuVmlldy5leHRlbmQoewotICAgIHRlbXBsYXRlTmFtZTogJ3Bvc3RzL25l
dycKLSAgfSk7Ci0gIGBgYAotCi0gIFVzaW5nIGEgdmFsdWUgZm9yIGB0ZW1wbGF0ZU5hbWVgIHRo
YXQgZG9lcyBub3QgaGF2ZSBhIEhhbmRsZWJhcnMgdGVtcGxhdGUKLSAgd2l0aCBhIG1hdGNoaW5n
IGBkYXRhLXRlbXBsYXRlLW5hbWVgIGF0dHJpYnV0ZSB3aWxsIHRocm93IGFuIGVycm9yLgotCi0g
IEZvciB2aWV3cyBjbGFzc2VzIHRoYXQgbWF5IGhhdmUgYSB0ZW1wbGF0ZSBsYXRlciBkZWZpbmVk
IChlLmcuIGFzIHRoZSBibG9jawotICBwb3J0aW9uIG9mIGEgYHt7dmlld319YCBIYW5kbGViYXJz
IGhlbHBlciBjYWxsIGluIGFub3RoZXIgdGVtcGxhdGUgb3IgaW4KLSAgYSBzdWJjbGFzcyksIHlv
dSBjYW4gcHJvdmlkZSBhIGBkZWZhdWx0VGVtcGxhdGVgIHByb3BlcnR5IHNldCB0byBjb21waWxl
ZAotICB0ZW1wbGF0ZSBmdW5jdGlvbi4gSWYgYSB0ZW1wbGF0ZSBpcyBub3QgbGF0ZXIgcHJvdmlk
ZWQgZm9yIHRoZSB2aWV3IGluc3RhbmNlCi0gIHRoZSBgZGVmYXVsdFRlbXBsYXRlYCB2YWx1ZSB3
aWxsIGJlIHVzZWQ6Ci0KLSAgYGBgamF2YXNjcmlwdAotICBBVmlldyA9IEVtYmVyLlZpZXcuZXh0
ZW5kKHsKLSAgICBkZWZhdWx0VGVtcGxhdGU6IEVtYmVyLkhhbmRsZWJhcnMuY29tcGlsZSgnSSB3
YXMgdGhlIGRlZmF1bHQnKSwKLSAgICB0ZW1wbGF0ZTogbnVsbCwKLSAgICB0ZW1wbGF0ZU5hbWU6
IG51bGwKLSAgfSk7Ci0gIGBgYAotCi0gIFdpbGwgcmVzdWx0IGluIGluc3RhbmNlcyB3aXRoIGFu
IEhUTUwgcmVwcmVzZW50YXRpb24gb2Y6Ci0KLSAgYGBgaHRtbAotICA8ZGl2IGlkPSJlbWJlcjEi
IGNsYXNzPSJlbWJlci12aWV3Ij5JIHdhcyB0aGUgZGVmYXVsdDwvZGl2PgotICBgYGAKLQotICBJ
ZiBhIGB0ZW1wbGF0ZWAgb3IgYHRlbXBsYXRlTmFtZWAgaXMgcHJvdmlkZWQgaXQgd2lsbCB0YWtl
IHByZWNlZGVuY2Ugb3ZlcgotICBgZGVmYXVsdFRlbXBsYXRlYDoKLQotICBgYGBqYXZhc2NyaXB0
Ci0gIEFWaWV3ID0gRW1iZXIuVmlldy5leHRlbmQoewotICAgIGRlZmF1bHRUZW1wbGF0ZTogRW1i
ZXIuSGFuZGxlYmFycy5jb21waWxlKCdJIHdhcyB0aGUgZGVmYXVsdCcpCi0gIH0pOwotCi0gIGFW
aWV3ID0gQVZpZXcuY3JlYXRlKHsKLSAgICB0ZW1wbGF0ZTogRW1iZXIuSGFuZGxlYmFycy5jb21w
aWxlKCdJIHdhcyB0aGUgdGVtcGxhdGUsIG5vdCBkZWZhdWx0JykKLSAgfSk7Ci0gIGBgYAotCi0g
IFdpbGwgcmVzdWx0IGluIHRoZSBmb2xsb3dpbmcgSFRNTCByZXByZXNlbnRhdGlvbiB3aGVuIHJl
bmRlcmVkOgotCi0gIGBgYGh0bWwKLSAgPGRpdiBpZD0iZW1iZXIxIiBjbGFzcz0iZW1iZXItdmll
dyI+SSB3YXMgdGhlIHRlbXBsYXRlLCBub3QgZGVmYXVsdDwvZGl2PgotICBgYGAKLQotICAjIyBW
aWV3IENvbnRleHQKLQotICBUaGUgZGVmYXVsdCBjb250ZXh0IG9mIHRoZSBjb21waWxlZCB0ZW1w
bGF0ZSBpcyB0aGUgdmlldydzIGNvbnRyb2xsZXI6Ci0KLSAgYGBgamF2YXNjcmlwdAotICBBVmll
dyA9IEVtYmVyLlZpZXcuZXh0ZW5kKHsKLSAgICB0ZW1wbGF0ZTogRW1iZXIuSGFuZGxlYmFycy5j
b21waWxlKCdIZWxsbyB7e2V4Y2l0ZWRHcmVldGluZ319JykKLSAgfSk7Ci0KLSAgYUNvbnRyb2xs
ZXIgPSBFbWJlci5PYmplY3QuY3JlYXRlKHsKLSAgICBmaXJzdE5hbWU6ICdCYXJyeScsCi0gICAg
ZXhjaXRlZEdyZWV0aW5nOiBmdW5jdGlvbigpIHsKLSAgICAgIHJldHVybiB0aGlzLmdldCgiY29u
dGVudC5maXJzdE5hbWUiKSArICIhISEiCi0gICAgfS5wcm9wZXJ0eSgpCi0gIH0pOwotCi0gIGFW
aWV3ID0gQVZpZXcuY3JlYXRlKHsKLSAgICBjb250cm9sbGVyOiBhQ29udHJvbGxlciwKLSAgfSk7
Ci0gIGBgYAotCi0gIFdpbGwgcmVzdWx0IGluIGFuIEhUTUwgcmVwcmVzZW50YXRpb24gb2Y6Ci0K
LSAgYGBgaHRtbAotICA8ZGl2IGlkPSJlbWJlcjEiIGNsYXNzPSJlbWJlci12aWV3Ij5IZWxsbyBC
YXJyeSEhITwvZGl2PgotICBgYGAKLQotICBBIGNvbnRleHQgY2FuIGFsc28gYmUgZXhwbGljaXRs
eSBzdXBwbGllZCB0aHJvdWdoIHRoZSB2aWV3J3MgYGNvbnRleHRgCi0gIHByb3BlcnR5LiBJZiB0
aGUgdmlldyBoYXMgbmVpdGhlciBgY29udGV4dGAgbm9yIGBjb250cm9sbGVyYCBwcm9wZXJ0aWVz
LCB0aGUKLSAgYHBhcmVudFZpZXdgJ3MgY29udGV4dCB3aWxsIGJlIHVzZWQuCi0KLSAgIyMgTGF5
b3V0cwotCi0gIFZpZXdzIGNhbiBoYXZlIGEgc2Vjb25kYXJ5IHRlbXBsYXRlIHRoYXQgd3JhcHMg
dGhlaXIgbWFpbiB0ZW1wbGF0ZS4gTGlrZQotICBwcmltYXJ5IHRlbXBsYXRlcywgbGF5b3V0cyBj
YW4gYmUgYW55IGZ1bmN0aW9uIHRoYXQgIGFjY2VwdHMgYW4gb3B0aW9uYWwKLSAgY29udGV4dCBw
YXJhbWV0ZXIgYW5kIHJldHVybnMgYSBzdHJpbmcgb2YgSFRNTCB0aGF0IHdpbGwgYmUgaW5zZXJ0
ZWQgaW5zaWRlCi0gIHZpZXcncyB0YWcuIFZpZXdzIHdob3NlIEhUTUwgZWxlbWVudCBpcyBzZWxm
IGNsb3NpbmcgKGUuZy4gYDxpbnB1dCAvPmApCi0gIGNhbm5vdCBoYXZlIGEgbGF5b3V0IGFuZCB0
aGlzIHByb3BlcnR5IHdpbGwgYmUgaWdub3JlZC4KLQotICBNb3N0IHR5cGljYWxseSBpbiBFbWJl
ciBhIGxheW91dCB3aWxsIGJlIGEgY29tcGlsZWQgYEVtYmVyLkhhbmRsZWJhcnNgCi0gIHRlbXBs
YXRlLgotCi0gIEEgdmlldydzIGxheW91dCBjYW4gYmUgc2V0IGRpcmVjdGx5IHdpdGggdGhlIGBs
YXlvdXRgIHByb3BlcnR5IG9yIHJlZmVyZW5jZQotICBhbiBleGlzdGluZyBIYW5kbGViYXJzIHRl
bXBsYXRlIGJ5IG5hbWUgd2l0aCB0aGUgYGxheW91dE5hbWVgIHByb3BlcnR5LgotCi0gIEEgdGVt
cGxhdGUgdXNlZCBhcyBhIGxheW91dCBtdXN0IGNvbnRhaW4gYSBzaW5nbGUgdXNlIG9mIHRoZSBI
YW5kbGViYXJzCi0gIGB7e3lpZWxkfX1gIGhlbHBlci4gVGhlIEhUTUwgY29udGVudHMgb2YgYSB2
aWV3J3MgcmVuZGVyZWQgYHRlbXBsYXRlYCB3aWxsIGJlCi0gIGluc2VydGVkIGF0IHRoaXMgbG9j
YXRpb246Ci0KLSAgYGBgamF2YXNjcmlwdAotICBBVmlld1dpdGhMYXlvdXQgPSBFbWJlci5WaWV3
LmV4dGVuZCh7Ci0gICAgbGF5b3V0OiBFbWJlci5IYW5kbGViYXJzLmNvbXBpbGUoIjxkaXYgY2xh
c3M9J215LWRlY29yYXRpdmUtY2xhc3MnPnt7eWllbGR9fTwvZGl2PiIpCi0gICAgdGVtcGxhdGU6
IEVtYmVyLkhhbmRsZWJhcnMuY29tcGlsZSgiSSBnb3Qgd3JhcHBlZCIpLAotICB9KTsKLSAgYGBg
Ci0KLSAgV2lsbCByZXN1bHQgaW4gdmlldyBpbnN0YW5jZXMgd2l0aCBhbiBIVE1MIHJlcHJlc2Vu
dGF0aW9uIG9mOgotCi0gIGBgYGh0bWwKLSAgPGRpdiBpZD0iZW1iZXIxIiBjbGFzcz0iZW1iZXIt
dmlldyI+Ci0gICAgPGRpdiBjbGFzcz0ibXktZGVjb3JhdGl2ZS1jbGFzcyI+Ci0gICAgICBJIGdv
dCB3cmFwcGVkCi0gICAgPC9kaXY+Ci0gIDwvZGl2PgotICBgYGAKLQotICBTZWUgW0VtYmVyLkhh
bmRsZWJhcnMuaGVscGVycy55aWVsZF0oL2FwaS9jbGFzc2VzL0VtYmVyLkhhbmRsZWJhcnMuaGVs
cGVycy5odG1sI21ldGhvZF95aWVsZCkKLSAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCi0KLSAgIyMg
UmVzcG9uZGluZyB0byBCcm93c2VyIEV2ZW50cwotCi0gIFZpZXdzIGNhbiByZXNwb25kIHRvIHVz
ZXItaW5pdGlhdGVkIGV2ZW50cyBpbiBvbmUgb2YgdGhyZWUgd2F5czogbWV0aG9kCi0gIGltcGxl
bWVudGF0aW9uLCB0aHJvdWdoIGFuIGV2ZW50IG1hbmFnZXIsIGFuZCB0aHJvdWdoIGB7e2FjdGlv
bn19YCBoZWxwZXIgdXNlCi0gIGluIHRoZWlyIHRlbXBsYXRlIG9yIGxheW91dC4KLQotICAjIyMg
TWV0aG9kIEltcGxlbWVudGF0aW9uCi0KLSAgVmlld3MgY2FuIHJlc3BvbmQgdG8gdXNlci1pbml0
aWF0ZWQgZXZlbnRzIGJ5IGltcGxlbWVudGluZyBhIG1ldGhvZCB0aGF0Ci0gIG1hdGNoZXMgdGhl
IGV2ZW50IG5hbWUuIEEgYGpRdWVyeS5FdmVudGAgb2JqZWN0IHdpbGwgYmUgcGFzc2VkIGFzIHRo
ZQotICBhcmd1bWVudCB0byB0aGlzIG1ldGhvZC4KLQotICBgYGBqYXZhc2NyaXB0Ci0gIEFWaWV3
ID0gRW1iZXIuVmlldy5leHRlbmQoewotICAgIGNsaWNrOiBmdW5jdGlvbihldmVudCkgewotICAg
ICAgLy8gd2lsbCBiZSBjYWxsZWQgd2hlbiB3aGVuIGFuIGluc3RhbmNlJ3MKLSAgICAgIC8vIHJl
bmRlcmVkIGVsZW1lbnQgaXMgY2xpY2tlZAotICAgIH0KLSAgfSk7Ci0gIGBgYAotCi0gICMjIyBF
dmVudCBNYW5hZ2VycwotCi0gIFZpZXdzIGNhbiBkZWZpbmUgYW4gb2JqZWN0IGFzIHRoZWlyIGBl
dmVudE1hbmFnZXJgIHByb3BlcnR5LiBUaGlzIG9iamVjdCBjYW4KLSAgdGhlbiBpbXBsZW1lbnQg
bWV0aG9kcyB0aGF0IG1hdGNoIHRoZSBkZXNpcmVkIGV2ZW50IG5hbWVzLiBNYXRjaGluZyBldmVu
dHMKLSAgdGhhdCBvY2N1ciBvbiB0aGUgdmlldydzIHJlbmRlcmVkIEhUTUwgb3IgdGhlIHJlbmRl
cmVkIEhUTUwgb2YgYW55IG9mIGl0cyBET00KLSAgZGVzY2VuZGFudHMgd2lsbCB0cmlnZ2VyIHRo
aXMgbWV0aG9kLiBBIGBqUXVlcnkuRXZlbnRgIG9iamVjdCB3aWxsIGJlIHBhc3NlZAotICBhcyB0
aGUgZmlyc3QgYXJndW1lbnQgdG8gdGhlIG1ldGhvZCBhbmQgYW4gIGBFbWJlci5WaWV3YCBvYmpl
Y3QgYXMgdGhlCi0gIHNlY29uZC4gVGhlIGBFbWJlci5WaWV3YCB3aWxsIGJlIHRoZSB2aWV3IHdo
b3NlIHJlbmRlcmVkIEhUTUwgd2FzIGludGVyYWN0ZWQKLSAgd2l0aC4gVGhpcyBtYXkgYmUgdGhl
IHZpZXcgd2l0aCB0aGUgYGV2ZW50TWFuYWdlcmAgcHJvcGVydHkgb3Igb25lIG9mIGl0cwotICBk
ZXNjZW5kZW50IHZpZXdzLgotCi0gIGBgYGphdmFzY3JpcHQKLSAgQVZpZXcgPSBFbWJlci5WaWV3
LmV4dGVuZCh7Ci0gICAgZXZlbnRNYW5hZ2VyOiBFbWJlci5PYmplY3QuY3JlYXRlKHsKLSAgICAg
IGRvdWJsZUNsaWNrOiBmdW5jdGlvbihldmVudCwgdmlldykgewotICAgICAgICAvLyB3aWxsIGJl
IGNhbGxlZCB3aGVuIHdoZW4gYW4gaW5zdGFuY2UncwotICAgICAgICAvLyByZW5kZXJlZCBlbGVt
ZW50IG9yIGFueSByZW5kZXJpbmcKLSAgICAgICAgLy8gb2YgdGhpcyB2aWV3cydzIGRlc2NlbmRl
bnQKLSAgICAgICAgLy8gZWxlbWVudHMgaXMgY2xpY2tlZAotICAgICAgfQotICAgIH0pCi0gIH0p
OwotICBgYGAKLQotICBBbiBldmVudCBkZWZpbmVkIGZvciBhbiBldmVudCBtYW5hZ2VyIHRha2Vz
IHByZWNlZGVuY2Ugb3ZlciBldmVudHMgb2YgdGhlCi0gIHNhbWUgbmFtZSBoYW5kbGVkIHRocm91
Z2ggbWV0aG9kcyBvbiB0aGUgdmlldy4KLQotICBgYGBqYXZhc2NyaXB0Ci0gIEFWaWV3ID0gRW1i
ZXIuVmlldy5leHRlbmQoewotICAgIG1vdXNlRW50ZXI6IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAg
ICAvLyB3aWxsIG5ldmVyIHRyaWdnZXIuCi0gICAgfSwKLSAgICBldmVudE1hbmFnZXI6IEVtYmVy
Lk9iamVjdC5jcmVhdGUoewotICAgICAgbW91c2VFbnRlcjogZnVuY3Rpb24oZXZlbnQsIHZpZXcp
IHsKLSAgICAgICAgLy8gdGFrZXMgcHJlY2VkZW5jZSBvdmVyIEFWaWV3I21vdXNlRW50ZXIKLSAg
ICAgIH0KLSAgICB9KQotICB9KTsKLSAgYGBgCi0KLSAgU2ltaWxhcmx5IGEgdmlldydzIGV2ZW50
IG1hbmFnZXIgd2lsbCB0YWtlIHByZWNlZGVuY2UgZm9yIGV2ZW50cyBvZiBhbnkgdmlld3MKLSAg
cmVuZGVyZWQgYXMgYSBkZXNjZW5kZW50LiBBIG1ldGhvZCBuYW1lIHRoYXQgbWF0Y2hlcyBhbiBl
dmVudCBuYW1lIHdpbGwgbm90Ci0gIGJlIGNhbGxlZCBpZiB0aGUgdmlldyBpbnN0YW5jZSB3YXMg
cmVuZGVyZWQgaW5zaWRlIHRoZSBIVE1MIHJlcHJlc2VudGF0aW9uIG9mCi0gIGEgdmlldyB0aGF0
IGhhcyBhbiBgZXZlbnRNYW5hZ2VyYCBwcm9wZXJ0eSBkZWZpbmVkIHRoYXQgaGFuZGxlcyBldmVu
dHMgb2YgdGhlCi0gIG5hbWUuIEV2ZW50cyBub3QgaGFuZGxlZCBieSB0aGUgZXZlbnQgbWFuYWdl
ciB3aWxsIHN0aWxsIHRyaWdnZXIgbWV0aG9kIGNhbGxzCi0gIG9uIHRoZSBkZXNjZW5kZW50Lgot
Ci0gIGBgYGphdmFzY3JpcHQKLSAgT3V0ZXJWaWV3ID0gRW1iZXIuVmlldy5leHRlbmQoewotICAg
IHRlbXBsYXRlOiBFbWJlci5IYW5kbGViYXJzLmNvbXBpbGUoIm91dGVyIHt7I3ZpZXcgSW5uZXJW
aWV3fX1pbm5lcnt7L3ZpZXd9fSBvdXRlciIpLAotICAgIGV2ZW50TWFuYWdlcjogRW1iZXIuT2Jq
ZWN0LmNyZWF0ZSh7Ci0gICAgICBtb3VzZUVudGVyOiBmdW5jdGlvbihldmVudCwgdmlldykgewot
ICAgICAgICAvLyB2aWV3IG1pZ2h0IGJlIGluc3RhbmNlIG9mIGVpdGhlcgotICAgICAgICAvLyBP
dXRlclZpZXcgb3IgSW5uZXJWaWV3IGRlcGVuZGluZyBvbgotICAgICAgICAvLyB3aGVyZSBvbiB0
aGUgcGFnZSB0aGUgdXNlciBpbnRlcmFjdGlvbiBvY2N1cmVkCi0gICAgICB9Ci0gICAgfSkKLSAg
fSk7Ci0KLSAgSW5uZXJWaWV3ID0gRW1iZXIuVmlldy5leHRlbmQoewotICAgIGNsaWNrOiBmdW5j
dGlvbihldmVudCkgewotICAgICAgLy8gd2lsbCBiZSBjYWxsZWQgaWYgcmVuZGVyZWQgaW5zaWRl
Ci0gICAgICAvLyBhbiBPdXRlclZpZXcgYmVjYXVzZSBPdXRlclZpZXcncwotICAgICAgLy8gZXZl
bnRNYW5hZ2VyIGRvZXNuJ3QgaGFuZGxlIGNsaWNrIGV2ZW50cwotICAgIH0sCi0gICAgbW91c2VF
bnRlcjogZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgIC8vIHdpbGwgbmV2ZXIgYmUgY2FsbGVkIGlm
IHJlbmRlcmVkIGluc2lkZQotICAgICAgLy8gYW4gT3V0ZXJWaWV3LgotICAgIH0KLSAgfSk7Ci0g
IGBgYAotCi0gICMjIyBIYW5kbGViYXJzIGB7e2FjdGlvbn19YCBIZWxwZXIKLQotICBTZWUgW0hh
bmRsZWJhcnMuaGVscGVycy5hY3Rpb25dKC9hcGkvY2xhc3Nlcy9FbWJlci5IYW5kbGViYXJzLmhl
bHBlcnMuaHRtbCNtZXRob2RfYWN0aW9uKS4KLQotICAjIyMgRXZlbnQgTmFtZXMKLQotICBBbGwg
b2YgdGhlIGV2ZW50IGhhbmRsaW5nIGFwcHJvYWNoZXMgZGVzY3JpYmVkIGFib3ZlIHJlc3BvbmQg
dG8gdGhlIHNhbWUgc2V0Ci0gIG9mIGV2ZW50cy4gVGhlIG5hbWVzIG9mIHRoZSBidWlsdC1pbiBl
dmVudHMgYXJlIGxpc3RlZCBiZWxvdy4gKFRoZSBoYXNoIG9mCi0gIGJ1aWx0LWluIGV2ZW50cyBl
eGlzdHMgaW4gYEVtYmVyLkV2ZW50RGlzcGF0Y2hlcmAuKSBBZGRpdGlvbmFsLCBjdXN0b20gZXZl
bnRzCi0gIGNhbiBiZSByZWdpc3RlcmVkIGJ5IHVzaW5nIGBFbWJlci5BcHBsaWNhdGlvbi5jdXN0
b21FdmVudHNgLgotCi0gIFRvdWNoIGV2ZW50czoKLQotICAqIGB0b3VjaFN0YXJ0YAotICAqIGB0
b3VjaE1vdmVgCi0gICogYHRvdWNoRW5kYAotICAqIGB0b3VjaENhbmNlbGAKLQotICBLZXlib2Fy
ZCBldmVudHMKLQotICAqIGBrZXlEb3duYAotICAqIGBrZXlVcGAKLSAgKiBga2V5UHJlc3NgCi0K
LSAgTW91c2UgZXZlbnRzCi0KLSAgKiBgbW91c2VEb3duYAotICAqIGBtb3VzZVVwYAotICAqIGBj
b250ZXh0TWVudWAKLSAgKiBgY2xpY2tgCi0gICogYGRvdWJsZUNsaWNrYAotICAqIGBtb3VzZU1v
dmVgCi0gICogYGZvY3VzSW5gCi0gICogYGZvY3VzT3V0YAotICAqIGBtb3VzZUVudGVyYAotICAq
IGBtb3VzZUxlYXZlYAotCi0gIEZvcm0gZXZlbnRzOgotCi0gICogYHN1Ym1pdGAKLSAgKiBgY2hh
bmdlYAotICAqIGBmb2N1c0luYAotICAqIGBmb2N1c091dGAKLSAgKiBgaW5wdXRgCi0KLSAgSFRN
TDUgZHJhZyBhbmQgZHJvcCBldmVudHM6Ci0KLSAgKiBgZHJhZ1N0YXJ0YAotICAqIGBkcmFnYAot
ICAqIGBkcmFnRW50ZXJgCi0gICogYGRyYWdMZWF2ZWAKLSAgKiBgZHJvcGAKLSAgKiBgZHJhZ0Vu
ZGAKLQotICAjIyBIYW5kbGViYXJzIGB7e3ZpZXd9fWAgSGVscGVyCi0KLSAgT3RoZXIgYEVtYmVy
LlZpZXdgIGluc3RhbmNlcyBjYW4gYmUgaW5jbHVkZWQgYXMgcGFydCBvZiBhIHZpZXcncyB0ZW1w
bGF0ZSBieQotICB1c2luZyB0aGUgYHt7dmlld319YCBIYW5kbGViYXJzIGhlbHBlci4gU2VlIFtF
bWJlci5IYW5kbGViYXJzLmhlbHBlcnMudmlld10oL2FwaS9jbGFzc2VzL0VtYmVyLkhhbmRsZWJh
cnMuaGVscGVycy5odG1sI21ldGhvZF92aWV3KQotICBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlv
bi4KLQotICBAY2xhc3MgVmlldwotICBAbmFtZXNwYWNlIEVtYmVyCi0gIEBleHRlbmRzIEVtYmVy
LkNvcmVWaWV3Ci0qLwotRW1iZXIuVmlldyA9IEVtYmVyLkNvcmVWaWV3LmV4dGVuZCh7Ci0KLSAg
Y29uY2F0ZW5hdGVkUHJvcGVydGllczogWydjbGFzc05hbWVzJywgJ2NsYXNzTmFtZUJpbmRpbmdz
JywgJ2F0dHJpYnV0ZUJpbmRpbmdzJ10sCi0KLSAgLyoqCi0gICAgQHByb3BlcnR5IGlzVmlldwot
ICAgIEB0eXBlIEJvb2xlYW4KLSAgICBAZGVmYXVsdCB0cnVlCi0gICAgQHN0YXRpYwotICAqLwot
ICBpc1ZpZXc6IHRydWUsCi0KLSAgLy8gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgotICAvLyBURU1QTEFURSBTVVBQT1JUCi0gIC8vCi0K
LSAgLyoqCi0gICAgVGhlIG5hbWUgb2YgdGhlIHRlbXBsYXRlIHRvIGxvb2t1cCBpZiBubyB0ZW1w
bGF0ZSBpcyBwcm92aWRlZC4KLQotICAgIEJ5IGRlZmF1bHQgYEVtYmVyLlZpZXdgIHdpbGwgbG9v
a3VwIGEgdGVtcGxhdGUgd2l0aCB0aGlzIG5hbWUgaW4KLSAgICBgRW1iZXIuVEVNUExBVEVTYCAo
YSBzaGFyZWQgZ2xvYmFsIG9iamVjdCkuCi0KLSAgICBAcHJvcGVydHkgdGVtcGxhdGVOYW1lCi0g
ICAgQHR5cGUgU3RyaW5nCi0gICAgQGRlZmF1bHQgbnVsbAotICAqLwotICB0ZW1wbGF0ZU5hbWU6
IG51bGwsCi0KLSAgLyoqCi0gICAgVGhlIG5hbWUgb2YgdGhlIGxheW91dCB0byBsb29rdXAgaWYg
bm8gbGF5b3V0IGlzIHByb3ZpZGVkLgotCi0gICAgQnkgZGVmYXVsdCBgRW1iZXIuVmlld2Agd2ls
bCBsb29rdXAgYSB0ZW1wbGF0ZSB3aXRoIHRoaXMgbmFtZSBpbgotICAgIGBFbWJlci5URU1QTEFU
RVNgIChhIHNoYXJlZCBnbG9iYWwgb2JqZWN0KS4KLQotICAgIEBwcm9wZXJ0eSBsYXlvdXROYW1l
Ci0gICAgQHR5cGUgU3RyaW5nCi0gICAgQGRlZmF1bHQgbnVsbAotICAqLwotICBsYXlvdXROYW1l
OiBudWxsLAotCi0gIC8qKgotICAgIFRoZSB0ZW1wbGF0ZSB1c2VkIHRvIHJlbmRlciB0aGUgdmll
dy4gVGhpcyBzaG91bGQgYmUgYSBmdW5jdGlvbiB0aGF0Ci0gICAgYWNjZXB0cyBhbiBvcHRpb25h
bCBjb250ZXh0IHBhcmFtZXRlciBhbmQgcmV0dXJucyBhIHN0cmluZyBvZiBIVE1MIHRoYXQKLSAg
ICB3aWxsIGJlIGluc2VydGVkIGludG8gdGhlIERPTSByZWxhdGl2ZSB0byBpdHMgcGFyZW50IHZp
ZXcuCi0KLSAgICBJbiBnZW5lcmFsLCB5b3Ugc2hvdWxkIHNldCB0aGUgYHRlbXBsYXRlTmFtZWAg
cHJvcGVydHkgaW5zdGVhZCBvZiBzZXR0aW5nCi0gICAgdGhlIHRlbXBsYXRlIHlvdXJzZWxmLgot
Ci0gICAgQHByb3BlcnR5IHRlbXBsYXRlCi0gICAgQHR5cGUgRnVuY3Rpb24KLSAgKi8KLSAgdGVt
cGxhdGU6IEVtYmVyLmNvbXB1dGVkKGZ1bmN0aW9uKGtleSwgdmFsdWUpIHsKLSAgICBpZiAodmFs
dWUgIT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdmFsdWU7IH0KLQotICAgIHZhciB0ZW1wbGF0ZU5h
bWUgPSBnZXQodGhpcywgJ3RlbXBsYXRlTmFtZScpLAotICAgICAgICB0ZW1wbGF0ZSA9IHRoaXMu
dGVtcGxhdGVGb3JOYW1lKHRlbXBsYXRlTmFtZSwgJ3RlbXBsYXRlJyk7Ci0KLSAgICBFbWJlci5h
c3NlcnQoIllvdSBzcGVjaWZpZWQgdGhlIHRlbXBsYXRlTmFtZSAiICsgdGVtcGxhdGVOYW1lICsg
IiBmb3IgIiArIHRoaXMgKyAiLCBidXQgaXQgZGlkIG5vdCBleGlzdC4iLCAhdGVtcGxhdGVOYW1l
IHx8IHRlbXBsYXRlKTsKLQotICAgIHJldHVybiB0ZW1wbGF0ZSB8fCBnZXQodGhpcywgJ2RlZmF1
bHRUZW1wbGF0ZScpOwotICB9KS5wcm9wZXJ0eSgndGVtcGxhdGVOYW1lJyksCi0KLSAgLyoqCi0g
ICAgVGhlIGNvbnRyb2xsZXIgbWFuYWdpbmcgdGhpcyB2aWV3LiBJZiB0aGlzIHByb3BlcnR5IGlz
IHNldCwgaXQgd2lsbCBiZQotICAgIG1hZGUgYXZhaWxhYmxlIGZvciB1c2UgYnkgdGhlIHRlbXBs
YXRlLgotCi0gICAgQHByb3BlcnR5IGNvbnRyb2xsZXIKLSAgICBAdHlwZSBPYmplY3QKLSAgKi8K
LSAgY29udHJvbGxlcjogRW1iZXIuY29tcHV0ZWQoZnVuY3Rpb24oa2V5KSB7Ci0gICAgdmFyIHBh
cmVudFZpZXcgPSBnZXQodGhpcywgJ19wYXJlbnRWaWV3Jyk7Ci0gICAgcmV0dXJuIHBhcmVudFZp
ZXcgPyBnZXQocGFyZW50VmlldywgJ2NvbnRyb2xsZXInKSA6IG51bGw7Ci0gIH0pLnByb3BlcnR5
KCdfcGFyZW50VmlldycpLAotCi0gIC8qKgotICAgIEEgdmlldyBtYXkgY29udGFpbiBhIGxheW91
dC4gQSBsYXlvdXQgaXMgYSByZWd1bGFyIHRlbXBsYXRlIGJ1dAotICAgIHN1cGVyc2VkZXMgdGhl
IGB0ZW1wbGF0ZWAgcHJvcGVydHkgZHVyaW5nIHJlbmRlcmluZy4gSXQgaXMgdGhlCi0gICAgcmVz
cG9uc2liaWxpdHkgb2YgdGhlIGxheW91dCB0ZW1wbGF0ZSB0byByZXRyaWV2ZSB0aGUgYHRlbXBs
YXRlYAotICAgIHByb3BlcnR5IGZyb20gdGhlIHZpZXcgKG9yIGFsdGVybmF0aXZlbHksIGNhbGwg
YEhhbmRsZWJhcnMuaGVscGVycy55aWVsZGAsCi0gICAgYHt7eWllbGR9fWApIHRvIHJlbmRlciBp
dCBpbiB0aGUgY29ycmVjdCBsb2NhdGlvbi4KLQotICAgIFRoaXMgaXMgdXNlZnVsIGZvciBhIHZp
ZXcgdGhhdCBoYXMgYSBzaGFyZWQgd3JhcHBlciwgYnV0IHdoaWNoIGRlbGVnYXRlcwotICAgIHRo
ZSByZW5kZXJpbmcgb2YgdGhlIGNvbnRlbnRzIG9mIHRoZSB3cmFwcGVyIHRvIHRoZSBgdGVtcGxh
dGVgIHByb3BlcnR5Ci0gICAgb24gYSBzdWJjbGFzcy4KLQotICAgIEBwcm9wZXJ0eSBsYXlvdXQK
LSAgICBAdHlwZSBGdW5jdGlvbgotICAqLwotICBsYXlvdXQ6IEVtYmVyLmNvbXB1dGVkKGZ1bmN0
aW9uKGtleSkgewotICAgIHZhciBsYXlvdXROYW1lID0gZ2V0KHRoaXMsICdsYXlvdXROYW1lJyks
Ci0gICAgICAgIGxheW91dCA9IHRoaXMudGVtcGxhdGVGb3JOYW1lKGxheW91dE5hbWUsICdsYXlv
dXQnKTsKLQotICAgIEVtYmVyLmFzc2VydCgiWW91IHNwZWNpZmllZCB0aGUgbGF5b3V0TmFtZSAi
ICsgbGF5b3V0TmFtZSArICIgZm9yICIgKyB0aGlzICsgIiwgYnV0IGl0IGRpZCBub3QgZXhpc3Qu
IiwgIWxheW91dE5hbWUgfHwgbGF5b3V0KTsKLQotICAgIHJldHVybiBsYXlvdXQgfHwgZ2V0KHRo
aXMsICdkZWZhdWx0TGF5b3V0Jyk7Ci0gIH0pLnByb3BlcnR5KCdsYXlvdXROYW1lJyksCi0KLSAg
X3lpZWxkOiBmdW5jdGlvbihjb250ZXh0LCBvcHRpb25zKSB7Ci0gICAgdmFyIHRlbXBsYXRlID0g
Z2V0KHRoaXMsICd0ZW1wbGF0ZScpOwotICAgIGlmICh0ZW1wbGF0ZSkgeyB0ZW1wbGF0ZShjb250
ZXh0LCBvcHRpb25zKTsgfQotICB9LAotCi0gIHRlbXBsYXRlRm9yTmFtZTogZnVuY3Rpb24obmFt
ZSwgdHlwZSkgewotICAgIGlmICghbmFtZSkgeyByZXR1cm47IH0KLSAgICBFbWJlci5hc3NlcnQo
InRlbXBsYXRlTmFtZXMgYXJlIG5vdCBhbGxvd2VkIHRvIGNvbnRhaW4gcGVyaW9kczogIituYW1l
LCBuYW1lLmluZGV4T2YoJy4nKSA9PT0gLTEpOwotCi0gICAgLy8gdGhlIGRlZmF1bHRDb250YWlu
ZXIgaXMgZGVwcmVjYXRlZAotICAgIHZhciBjb250YWluZXIgPSB0aGlzLmNvbnRhaW5lciB8fCAo
RW1iZXIuQ29udGFpbmVyICYmIEVtYmVyLkNvbnRhaW5lci5kZWZhdWx0Q29udGFpbmVyKTsKLSAg
ICByZXR1cm4gY29udGFpbmVyICYmIGNvbnRhaW5lci5sb29rdXAoJ3RlbXBsYXRlOicgKyBuYW1l
KTsKLSAgfSwKLQotICAvKioKLSAgICBUaGUgb2JqZWN0IGZyb20gd2hpY2ggdGVtcGxhdGVzIHNo
b3VsZCBhY2Nlc3MgcHJvcGVydGllcy4KLQotICAgIFRoaXMgb2JqZWN0IHdpbGwgYmUgcGFzc2Vk
IHRvIHRoZSB0ZW1wbGF0ZSBmdW5jdGlvbiBlYWNoIHRpbWUgdGhlIHJlbmRlcgotICAgIG1ldGhv
ZCBpcyBjYWxsZWQsIGJ1dCBpdCBpcyB1cCB0byB0aGUgaW5kaXZpZHVhbCBmdW5jdGlvbiB0byBk
ZWNpZGUgd2hhdAotICAgIHRvIGRvIHdpdGggaXQuCi0KLSAgICBCeSBkZWZhdWx0LCB0aGlzIHdp
bGwgYmUgdGhlIHZpZXcncyBjb250cm9sbGVyLgotCi0gICAgQHByb3BlcnR5IGNvbnRleHQKLSAg
ICBAdHlwZSBPYmplY3QKLSAgKi8KLSAgY29udGV4dDogRW1iZXIuY29tcHV0ZWQoZnVuY3Rpb24o
a2V5LCB2YWx1ZSkgewotICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyKSB7Ci0gICAgICBz
ZXQodGhpcywgJ19jb250ZXh0JywgdmFsdWUpOwotICAgICAgcmV0dXJuIHZhbHVlOwotICAgIH0g
ZWxzZSB7Ci0gICAgICByZXR1cm4gZ2V0KHRoaXMsICdfY29udGV4dCcpOwotICAgIH0KLSAgfSku
dm9sYXRpbGUoKSwKLQotICAvKioKLSAgICBQcml2YXRlIGNvcHkgb2YgdGhlIHZpZXcncyB0ZW1w
bGF0ZSBjb250ZXh0LiBUaGlzIGNhbiBiZSBzZXQgZGlyZWN0bHkKLSAgICBieSBIYW5kbGViYXJz
IHdpdGhvdXQgdHJpZ2dlcmluZyB0aGUgb2JzZXJ2ZXIgdGhhdCBjYXVzZXMgdGhlIHZpZXcKLSAg
ICB0byBiZSByZS1yZW5kZXJlZC4KLQotICAgIFRoZSBjb250ZXh0IG9mIGEgdmlldyBpcyBsb29r
ZWQgdXAgYXMgZm9sbG93czoKLQotICAgIDEuIFN1cHBsaWVkIGNvbnRleHQgKHVzdWFsbHkgYnkg
SGFuZGxlYmFycykKLSAgICAyLiBTcGVjaWZpZWQgY29udHJvbGxlcgotICAgIDMuIGBwYXJlbnRW
aWV3YCdzIGNvbnRleHQgKGZvciBhIGNoaWxkIG9mIGEgQ29udGFpbmVyVmlldykKLQotICAgIFRo
ZSBjb2RlIGluIEhhbmRsZWJhcnMgdGhhdCBvdmVycmlkZXMgdGhlIGBfY29udGV4dGAgcHJvcGVy
dHkgZmlyc3QKLSAgICBjaGVja3MgdG8gc2VlIHdoZXRoZXIgdGhlIHZpZXcgaGFzIGEgc3BlY2lm
aWVkIGNvbnRyb2xsZXIuIFRoaXMgaXMKLSAgICBzb21ldGhpbmcgb2YgYSBoYWNrIGFuZCBzaG91
bGQgYmUgcmV2aXNpdGVkLgotCi0gICAgQHByb3BlcnR5IF9jb250ZXh0Ci0gICAgQHByaXZhdGUK
LSAgKi8KLSAgX2NvbnRleHQ6IEVtYmVyLmNvbXB1dGVkKGZ1bmN0aW9uKGtleSkgewotICAgIHZh
ciBwYXJlbnRWaWV3LCBjb250cm9sbGVyOwotCi0gICAgaWYgKGNvbnRyb2xsZXIgPSBnZXQodGhp
cywgJ2NvbnRyb2xsZXInKSkgewotICAgICAgcmV0dXJuIGNvbnRyb2xsZXI7Ci0gICAgfQotCi0g
ICAgcGFyZW50VmlldyA9IHRoaXMuX3BhcmVudFZpZXc7Ci0gICAgaWYgKHBhcmVudFZpZXcpIHsK
LSAgICAgIHJldHVybiBnZXQocGFyZW50VmlldywgJ19jb250ZXh0Jyk7Ci0gICAgfQotCi0gICAg
cmV0dXJuIG51bGw7Ci0gIH0pLAotCi0gIC8qKgotICAgIElmIGEgdmFsdWUgdGhhdCBhZmZlY3Rz
IHRlbXBsYXRlIHJlbmRlcmluZyBjaGFuZ2VzLCB0aGUgdmlldyBzaG91bGQgYmUKLSAgICByZS1y
ZW5kZXJlZCB0byByZWZsZWN0IHRoZSBuZXcgdmFsdWUuCi0KLSAgICBAbWV0aG9kIF9jb250ZXh0
RGlkQ2hhbmdlCi0gICAgQHByaXZhdGUKLSAgKi8KLSAgX2NvbnRleHREaWRDaGFuZ2U6IEVtYmVy
Lm9ic2VydmVyKCdjb250ZXh0JywgZnVuY3Rpb24oKSB7Ci0gICAgdGhpcy5yZXJlbmRlcigpOwot
ICB9KSwKLQotICAvKioKLSAgICBJZiBgZmFsc2VgLCB0aGUgdmlldyB3aWxsIGFwcGVhciBoaWRk
ZW4gaW4gRE9NLgotCi0gICAgQHByb3BlcnR5IGlzVmlzaWJsZQotICAgIEB0eXBlIEJvb2xlYW4K
LSAgICBAZGVmYXVsdCBudWxsCi0gICovCi0gIGlzVmlzaWJsZTogdHJ1ZSwKLQotICAvKioKLSAg
ICBBcnJheSBvZiBjaGlsZCB2aWV3cy4gWW91IHNob3VsZCBuZXZlciBlZGl0IHRoaXMgYXJyYXkg
ZGlyZWN0bHkuCi0gICAgSW5zdGVhZCwgdXNlIGBhcHBlbmRDaGlsZGAgYW5kIGByZW1vdmVGcm9t
UGFyZW50YC4KLQotICAgIEBwcm9wZXJ0eSBjaGlsZFZpZXdzCi0gICAgQHR5cGUgQXJyYXkKLSAg
ICBAZGVmYXVsdCBbXQotICAgIEBwcml2YXRlCi0gICovCi0gIGNoaWxkVmlld3M6IGNoaWxkVmll
d3NQcm9wZXJ0eSwKLQotICBfY2hpbGRWaWV3czogRU1QVFlfQVJSQVksCi0KLSAgLy8gV2hlbiBp
dCdzIGEgdmlydHVhbCB2aWV3LCB3ZSBuZWVkIHRvIG5vdGlmeSB0aGUgcGFyZW50IHRoYXQgdGhl
aXIKLSAgLy8gY2hpbGRWaWV3cyB3aWxsIGNoYW5nZS4KLSAgX2NoaWxkVmlld3NXaWxsQ2hhbmdl
OiBFbWJlci5iZWZvcmVPYnNlcnZlcignY2hpbGRWaWV3cycsIGZ1bmN0aW9uKCkgewotICAgIGlm
ICh0aGlzLmlzVmlydHVhbCkgewotICAgICAgdmFyIHBhcmVudFZpZXcgPSBnZXQodGhpcywgJ3Bh
cmVudFZpZXcnKTsKLSAgICAgIGlmIChwYXJlbnRWaWV3KSB7IEVtYmVyLnByb3BlcnR5V2lsbENo
YW5nZShwYXJlbnRWaWV3LCAnY2hpbGRWaWV3cycpOyB9Ci0gICAgfQotICB9KSwKLQotICAvLyBX
aGVuIGl0J3MgYSB2aXJ0dWFsIHZpZXcsIHdlIG5lZWQgdG8gbm90aWZ5IHRoZSBwYXJlbnQgdGhh
dCB0aGVpcgotICAvLyBjaGlsZFZpZXdzIGRpZCBjaGFuZ2UuCi0gIF9jaGlsZFZpZXdzRGlkQ2hh
bmdlOiBFbWJlci5vYnNlcnZlcignY2hpbGRWaWV3cycsIGZ1bmN0aW9uKCkgewotICAgIGlmICh0
aGlzLmlzVmlydHVhbCkgewotICAgICAgdmFyIHBhcmVudFZpZXcgPSBnZXQodGhpcywgJ3BhcmVu
dFZpZXcnKTsKLSAgICAgIGlmIChwYXJlbnRWaWV3KSB7IEVtYmVyLnByb3BlcnR5RGlkQ2hhbmdl
KHBhcmVudFZpZXcsICdjaGlsZFZpZXdzJyk7IH0KLSAgICB9Ci0gIH0pLAotCi0gIC8qKgotICAg
IFJldHVybiB0aGUgbmVhcmVzdCBhbmNlc3RvciB0aGF0IGlzIGFuIGluc3RhbmNlIG9mIHRoZSBw
cm92aWRlZAotICAgIGNsYXNzLgotCi0gICAgQHByb3BlcnR5IG5lYXJlc3RJbnN0YW5jZU9mCi0g
ICAgQHBhcmFtIHtDbGFzc30ga2xhc3MgU3ViY2xhc3Mgb2YgRW1iZXIuVmlldyAob3IgRW1iZXIu
VmlldyBpdHNlbGYpCi0gICAgQHJldHVybiBFbWJlci5WaWV3Ci0gICAgQGRlcHJlY2F0ZWQKLSAg
Ki8KLSAgbmVhcmVzdEluc3RhbmNlT2Y6IGZ1bmN0aW9uKGtsYXNzKSB7Ci0gICAgRW1iZXIuZGVw
cmVjYXRlKCJuZWFyZXN0SW5zdGFuY2VPZiBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92
ZWQgZnJvbSBmdXR1cmUgcmVsZWFzZXMuIFVzZSBuZWFyZXN0T2ZUeXBlLiIpOwotICAgIHZhciB2
aWV3ID0gZ2V0KHRoaXMsICdwYXJlbnRWaWV3Jyk7Ci0KLSAgICB3aGlsZSAodmlldykgewotICAg
ICAgaWYgKHZpZXcgaW5zdGFuY2VvZiBrbGFzcykgeyByZXR1cm4gdmlldzsgfQotICAgICAgdmll
dyA9IGdldCh2aWV3LCAncGFyZW50VmlldycpOwotICAgIH0KLSAgfSwKLQotICAvKioKLSAgICBS
ZXR1cm4gdGhlIG5lYXJlc3QgYW5jZXN0b3IgdGhhdCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgcHJv
dmlkZWQKLSAgICBjbGFzcyBvciBtaXhpbi4KLQotICAgIEBwcm9wZXJ0eSBuZWFyZXN0T2ZUeXBl
Ci0gICAgQHBhcmFtIHtDbGFzcyxNaXhpbn0ga2xhc3MgU3ViY2xhc3Mgb2YgRW1iZXIuVmlldyAo
b3IgRW1iZXIuVmlldyBpdHNlbGYpLAotICAgICAgICAgICBvciBhbiBpbnN0YW5jZSBvZiBFbWJl
ci5NaXhpbi4KLSAgICBAcmV0dXJuIEVtYmVyLlZpZXcKLSAgKi8KLSAgbmVhcmVzdE9mVHlwZTog
ZnVuY3Rpb24oa2xhc3MpIHsKLSAgICB2YXIgdmlldyA9IGdldCh0aGlzLCAncGFyZW50Vmlldycp
LAotICAgICAgICBpc09mVHlwZSA9IGtsYXNzIGluc3RhbmNlb2YgRW1iZXIuTWl4aW4gPwotICAg
ICAgICAgICAgICAgICAgIGZ1bmN0aW9uKHZpZXcpIHsgcmV0dXJuIGtsYXNzLmRldGVjdCh2aWV3
KTsgfSA6Ci0gICAgICAgICAgICAgICAgICAgZnVuY3Rpb24odmlldykgeyByZXR1cm4ga2xhc3Mu
ZGV0ZWN0KHZpZXcuY29uc3RydWN0b3IpOyB9OwotCi0gICAgd2hpbGUgKHZpZXcpIHsKLSAgICAg
IGlmIChpc09mVHlwZSh2aWV3KSkgeyByZXR1cm4gdmlldzsgfQotICAgICAgdmlldyA9IGdldCh2
aWV3LCAncGFyZW50VmlldycpOwotICAgIH0KLSAgfSwKLQotICAvKioKLSAgICBSZXR1cm4gdGhl
IG5lYXJlc3QgYW5jZXN0b3IgdGhhdCBoYXMgYSBnaXZlbiBwcm9wZXJ0eS4KLQotICAgIEBmdW5j
dGlvbiBuZWFyZXN0V2l0aFByb3BlcnR5Ci0gICAgQHBhcmFtIHtTdHJpbmd9IHByb3BlcnR5IEEg
cHJvcGVydHkgbmFtZQotICAgIEByZXR1cm4gRW1iZXIuVmlldwotICAqLwotICBuZWFyZXN0V2l0
aFByb3BlcnR5OiBmdW5jdGlvbihwcm9wZXJ0eSkgewotICAgIHZhciB2aWV3ID0gZ2V0KHRoaXMs
ICdwYXJlbnRWaWV3Jyk7Ci0KLSAgICB3aGlsZSAodmlldykgewotICAgICAgaWYgKHByb3BlcnR5
IGluIHZpZXcpIHsgcmV0dXJuIHZpZXc7IH0KLSAgICAgIHZpZXcgPSBnZXQodmlldywgJ3BhcmVu
dFZpZXcnKTsKLSAgICB9Ci0gIH0sCi0KLSAgLyoqCi0gICAgUmV0dXJuIHRoZSBuZWFyZXN0IGFu
Y2VzdG9yIHdob3NlIHBhcmVudCBpcyBhbiBpbnN0YW5jZSBvZgotICAgIGBrbGFzc2AuCi0KLSAg
ICBAbWV0aG9kIG5lYXJlc3RDaGlsZE9mCi0gICAgQHBhcmFtIHtDbGFzc30ga2xhc3MgU3ViY2xh
c3Mgb2YgRW1iZXIuVmlldyAob3IgRW1iZXIuVmlldyBpdHNlbGYpCi0gICAgQHJldHVybiBFbWJl
ci5WaWV3Ci0gICovCi0gIG5lYXJlc3RDaGlsZE9mOiBmdW5jdGlvbihrbGFzcykgewotICAgIHZh
ciB2aWV3ID0gZ2V0KHRoaXMsICdwYXJlbnRWaWV3Jyk7Ci0KLSAgICB3aGlsZSAodmlldykgewot
ICAgICAgaWYgKGdldCh2aWV3LCAncGFyZW50VmlldycpIGluc3RhbmNlb2Yga2xhc3MpIHsgcmV0
dXJuIHZpZXc7IH0KLSAgICAgIHZpZXcgPSBnZXQodmlldywgJ3BhcmVudFZpZXcnKTsKLSAgICB9
Ci0gIH0sCi0KLSAgLyoqCi0gICAgV2hlbiB0aGUgcGFyZW50IHZpZXcgY2hhbmdlcywgcmVjdXJz
aXZlbHkgaW52YWxpZGF0ZSBgY29udHJvbGxlcmAKLQotICAgIEBtZXRob2QgX3BhcmVudFZpZXdE
aWRDaGFuZ2UKLSAgICBAcHJpdmF0ZQotICAqLwotICBfcGFyZW50Vmlld0RpZENoYW5nZTogRW1i
ZXIub2JzZXJ2ZXIoJ19wYXJlbnRWaWV3JywgZnVuY3Rpb24oKSB7Ci0gICAgaWYgKHRoaXMuaXNE
ZXN0cm95aW5nKSB7IHJldHVybjsgfQotCi0gICAgdGhpcy50cmlnZ2VyKCdwYXJlbnRWaWV3RGlk
Q2hhbmdlJyk7Ci0KLSAgICBpZiAoZ2V0KHRoaXMsICdwYXJlbnRWaWV3LmNvbnRyb2xsZXInKSAm
JiAhZ2V0KHRoaXMsICdjb250cm9sbGVyJykpIHsKLSAgICAgIHRoaXMubm90aWZ5UHJvcGVydHlD
aGFuZ2UoJ2NvbnRyb2xsZXInKTsKLSAgICB9Ci0gIH0pLAotCi0gIF9jb250cm9sbGVyRGlkQ2hh
bmdlOiBFbWJlci5vYnNlcnZlcignY29udHJvbGxlcicsIGZ1bmN0aW9uKCkgewotICAgIGlmICh0
aGlzLmlzRGVzdHJveWluZykgeyByZXR1cm47IH0KLQotICAgIHRoaXMucmVyZW5kZXIoKTsKLQot
ICAgIHRoaXMuZm9yRWFjaENoaWxkVmlldyhmdW5jdGlvbih2aWV3KSB7Ci0gICAgICB2aWV3LnBy
b3BlcnR5RGlkQ2hhbmdlKCdjb250cm9sbGVyJyk7Ci0gICAgfSk7Ci0gIH0pLAotCi0gIGNsb25l
S2V5d29yZHM6IGZ1bmN0aW9uKCkgewotICAgIHZhciB0ZW1wbGF0ZURhdGEgPSBnZXQodGhpcywg
J3RlbXBsYXRlRGF0YScpOwotCi0gICAgdmFyIGtleXdvcmRzID0gdGVtcGxhdGVEYXRhID8gRW1i
ZXIuY29weSh0ZW1wbGF0ZURhdGEua2V5d29yZHMpIDoge307Ci0gICAgc2V0KGtleXdvcmRzLCAn
dmlldycsIGdldCh0aGlzLCAnY29uY3JldGVWaWV3JykpOwotICAgIHNldChrZXl3b3JkcywgJ192
aWV3JywgdGhpcyk7Ci0gICAgc2V0KGtleXdvcmRzLCAnY29udHJvbGxlcicsIGdldCh0aGlzLCAn
Y29udHJvbGxlcicpKTsKLQotICAgIHJldHVybiBrZXl3b3JkczsKLSAgfSwKLQotICAvKioKLSAg
ICBDYWxsZWQgb24geW91ciB2aWV3IHdoZW4gaXQgc2hvdWxkIHB1c2ggc3RyaW5ncyBvZiBIVE1M
IGludG8gYQotICAgIGBFbWJlci5SZW5kZXJCdWZmZXJgLiBNb3N0IHVzZXJzIHdpbGwgd2FudCB0
byBvdmVycmlkZSB0aGUgYHRlbXBsYXRlYAotICAgIG9yIGB0ZW1wbGF0ZU5hbWVgIHByb3BlcnRp
ZXMgaW5zdGVhZCBvZiB0aGlzIG1ldGhvZC4KLQotICAgIEJ5IGRlZmF1bHQsIGBFbWJlci5WaWV3
YCB3aWxsIGxvb2sgZm9yIGEgZnVuY3Rpb24gaW4gdGhlIGB0ZW1wbGF0ZWAKLSAgICBwcm9wZXJ0
eSBhbmQgaW52b2tlIGl0IHdpdGggdGhlIHZhbHVlIG9mIGBjb250ZXh0YC4gVGhlIHZhbHVlIG9m
Ci0gICAgYGNvbnRleHRgIHdpbGwgYmUgdGhlIHZpZXcncyBjb250cm9sbGVyIHVubGVzcyB5b3Ug
b3ZlcnJpZGUgaXQuCi0KLSAgICBAbWV0aG9kIHJlbmRlcgotICAgIEBwYXJhbSB7RW1iZXIuUmVu
ZGVyQnVmZmVyfSBidWZmZXIgVGhlIHJlbmRlciBidWZmZXIKLSAgKi8KLSAgcmVuZGVyOiBmdW5j
dGlvbihidWZmZXIpIHsKLSAgICAvLyBJZiB0aGlzIHZpZXcgaGFzIGEgbGF5b3V0LCBpdCBpcyB0
aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlCi0gICAgLy8gdGhlIGxheW91dCB0byByZW5kZXIgdGhl
IHZpZXcncyB0ZW1wbGF0ZS4gT3RoZXJ3aXNlLCByZW5kZXIgdGhlIHRlbXBsYXRlCi0gICAgLy8g
ZGlyZWN0bHkuCi0gICAgdmFyIHRlbXBsYXRlID0gZ2V0KHRoaXMsICdsYXlvdXQnKSB8fCBnZXQo
dGhpcywgJ3RlbXBsYXRlJyk7Ci0KLSAgICBpZiAodGVtcGxhdGUpIHsKLSAgICAgIHZhciBjb250
ZXh0ID0gZ2V0KHRoaXMsICdjb250ZXh0Jyk7Ci0gICAgICB2YXIga2V5d29yZHMgPSB0aGlzLmNs
b25lS2V5d29yZHMoKTsKLSAgICAgIHZhciBvdXRwdXQ7Ci0KLSAgICAgIHZhciBkYXRhID0gewot
ICAgICAgICB2aWV3OiB0aGlzLAotICAgICAgICBidWZmZXI6IGJ1ZmZlciwKLSAgICAgICAgaXNS
ZW5kZXJEYXRhOiB0cnVlLAotICAgICAgICBrZXl3b3Jkczoga2V5d29yZHMsCi0gICAgICAgIGlu
c2lkZUdyb3VwOiBnZXQodGhpcywgJ3RlbXBsYXRlRGF0YS5pbnNpZGVHcm91cCcpCi0gICAgICB9
OwotCi0gICAgICAvLyBJbnZva2UgdGhlIHRlbXBsYXRlIHdpdGggdGhlIHByb3ZpZGVkIHRlbXBs
YXRlIGNvbnRleHQsIHdoaWNoCi0gICAgICAvLyBpcyB0aGUgdmlldydzIGNvbnRyb2xsZXIgYnkg
ZGVmYXVsdC4gQSBoYXNoIG9mIGRhdGEgaXMgYWxzbyBwYXNzZWQgdGhhdCBwcm92aWRlcwotICAg
ICAgLy8gdGhlIHRlbXBsYXRlIHdpdGggYWNjZXNzIHRvIHRoZSB2aWV3IGFuZCByZW5kZXIgYnVm
ZmVyLgotCi0gICAgICBFbWJlci5hc3NlcnQoJ3RlbXBsYXRlIG11c3QgYmUgYSBmdW5jdGlvbi4g
RGlkIHlvdSBtZWFuIHRvIGNhbGwgRW1iZXIuSGFuZGxlYmFycy5jb21waWxlKCIuLi4iKSBvciBz
cGVjaWZ5IHRlbXBsYXRlTmFtZSBpbnN0ZWFkPycsIHR5cGVvZiB0ZW1wbGF0ZSA9PT0gJ2Z1bmN0
aW9uJyk7Ci0gICAgICAvLyBUaGUgdGVtcGxhdGUgc2hvdWxkIHdyaXRlIGRpcmVjdGx5IHRvIHRo
ZSByZW5kZXIgYnVmZmVyIGluc3RlYWQKLSAgICAgIC8vIG9mIHJldHVybmluZyBhIHN0cmluZy4K
LSAgICAgIG91dHB1dCA9IHRlbXBsYXRlKGNvbnRleHQsIHsgZGF0YTogZGF0YSB9KTsKLQotICAg
ICAgLy8gSWYgdGhlIHRlbXBsYXRlIHJldHVybmVkIGEgc3RyaW5nIGluc3RlYWQgb2Ygd3JpdGlu
ZyB0byB0aGUgYnVmZmVyLAotICAgICAgLy8gcHVzaCB0aGUgc3RyaW5nIG9udG8gdGhlIGJ1ZmZl
ci4KLSAgICAgIGlmIChvdXRwdXQgIT09IHVuZGVmaW5lZCkgeyBidWZmZXIucHVzaChvdXRwdXQp
OyB9Ci0gICAgfQotICB9LAotCi0gIC8qKgotICAgIFJlbmRlcnMgdGhlIHZpZXcgYWdhaW4uIFRo
aXMgd2lsbCB3b3JrIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGUKLSAgICB2aWV3IGlzIGFscmVh
ZHkgaW4gdGhlIERPTSBvciBub3QuIElmIHRoZSB2aWV3IGlzIGluIHRoZSBET00sIHRoZQotICAg
IHJlbmRlcmluZyBwcm9jZXNzIHdpbGwgYmUgZGVmZXJyZWQgdG8gZ2l2ZSBiaW5kaW5ncyBhIGNo
YW5jZQotICAgIHRvIHN5bmNocm9uaXplLgotCi0gICAgSWYgY2hpbGRyZW4gd2VyZSBhZGRlZCBk
dXJpbmcgdGhlIHJlbmRlcmluZyBwcm9jZXNzIHVzaW5nIGBhcHBlbmRDaGlsZGAsCi0gICAgYHJl
cmVuZGVyYCB3aWxsIHJlbW92ZSB0aGVtLCBiZWNhdXNlIHRoZXkgd2lsbCBiZSBhZGRlZCBhZ2Fp
bgotICAgIGlmIG5lZWRlZCBieSB0aGUgbmV4dCBgcmVuZGVyYC4KLQotICAgIEluIGdlbmVyYWws
IGlmIHRoZSBkaXNwbGF5IG9mIHlvdXIgdmlldyBjaGFuZ2VzLCB5b3Ugc2hvdWxkIG1vZGlmeQot
ICAgIHRoZSBET00gZWxlbWVudCBkaXJlY3RseSBpbnN0ZWFkIG9mIG1hbnVhbGx5IGNhbGxpbmcg
YHJlcmVuZGVyYCwgd2hpY2ggY2FuCi0gICAgYmUgc2xvdy4KLQotICAgIEBtZXRob2QgcmVyZW5k
ZXIKLSAgKi8KLSAgcmVyZW5kZXI6IGZ1bmN0aW9uKCkgewotICAgIHJldHVybiB0aGlzLmN1cnJl
bnRTdGF0ZS5yZXJlbmRlcih0aGlzKTsKLSAgfSwKLQotICBjbGVhclJlbmRlcmVkQ2hpbGRyZW46
IGZ1bmN0aW9uKCkgewotICAgIHZhciBsZW5ndGhCZWZvcmUgPSB0aGlzLmxlbmd0aEJlZm9yZVJl
bmRlciwKLSAgICAgICAgbGVuZ3RoQWZ0ZXIgID0gdGhpcy5sZW5ndGhBZnRlclJlbmRlcjsKLQot
ICAgIC8vIElmIHRoZXJlIHdlcmUgY2hpbGQgdmlld3MgY3JlYXRlZCBkdXJpbmcgdGhlIGxhc3Qg
Y2FsbCB0byByZW5kZXIoKSwKLSAgICAvLyByZW1vdmUgdGhlbSB1bmRlciB0aGUgYXNzdW1wdGlv
biB0aGF0IHRoZXkgd2lsbCBiZSByZS1jcmVhdGVkIHdoZW4KLSAgICAvLyB3ZSByZS1yZW5kZXIu
Ci0KLSAgICAvLyBWSUVXLVRPRE86IFVuaXQgdGVzdCB0aGlzIHBhdGguCi0gICAgdmFyIGNoaWxk
Vmlld3MgPSB0aGlzLl9jaGlsZFZpZXdzOwotICAgIGZvciAodmFyIGk9bGVuZ3RoQWZ0ZXItMTsg
aT49bGVuZ3RoQmVmb3JlOyBpLS0pIHsKLSAgICAgIGlmIChjaGlsZFZpZXdzW2ldKSB7IGNoaWxk
Vmlld3NbaV0uZGVzdHJveSgpOyB9Ci0gICAgfQotICB9LAotCi0gIC8qKgotICAgIEl0ZXJhdGVz
IG92ZXIgdGhlIHZpZXcncyBgY2xhc3NOYW1lQmluZGluZ3NgIGFycmF5LCBpbnNlcnRzIHRoZSB2
YWx1ZQotICAgIG9mIHRoZSBzcGVjaWZpZWQgcHJvcGVydHkgaW50byB0aGUgYGNsYXNzTmFtZXNg
IGFycmF5LCB0aGVuIGNyZWF0ZXMgYW4KLSAgICBvYnNlcnZlciB0byB1cGRhdGUgdGhlIHZpZXcn
cyBlbGVtZW50IGlmIHRoZSBib3VuZCBwcm9wZXJ0eSBldmVyIGNoYW5nZXMKLSAgICBpbiB0aGUg
ZnV0dXJlLgotCi0gICAgQG1ldGhvZCBfYXBwbHlDbGFzc05hbWVCaW5kaW5ncwotICAgIEBwcml2
YXRlCi0gICovCi0gIF9hcHBseUNsYXNzTmFtZUJpbmRpbmdzOiBmdW5jdGlvbihjbGFzc0JpbmRp
bmdzKSB7Ci0gICAgdmFyIGNsYXNzTmFtZXMgPSB0aGlzLmNsYXNzTmFtZXMsCi0gICAgZWxlbSwg
bmV3Q2xhc3MsIGRhc2hlcml6ZWRDbGFzczsKLQotICAgIC8vIExvb3AgdGhyb3VnaCBhbGwgb2Yg
dGhlIGNvbmZpZ3VyZWQgYmluZGluZ3MuIFRoZXNlIHdpbGwgYmUgZWl0aGVyCi0gICAgLy8gcHJv
cGVydHkgbmFtZXMgKCdpc1VyZ2VudCcpIG9yIHByb3BlcnR5IHBhdGhzIHJlbGF0aXZlIHRvIHRo
ZSB2aWV3Ci0gICAgLy8gKCdjb250ZW50LmlzVXJnZW50JykKLSAgICBhX2ZvckVhY2goY2xhc3NC
aW5kaW5ncywgZnVuY3Rpb24oYmluZGluZykgewotCi0gICAgICAvLyBWYXJpYWJsZSBpbiB3aGlj
aCB0aGUgb2xkIGNsYXNzIHZhbHVlIGlzIHNhdmVkLiBUaGUgb2JzZXJ2ZXIgZnVuY3Rpb24KLSAg
ICAgIC8vIGNsb3NlcyBvdmVyIHRoaXMgdmFyaWFibGUsIHNvIGl0IGtub3dzIHdoaWNoIHN0cmlu
ZyB0byByZW1vdmUgd2hlbgotICAgICAgLy8gdGhlIHByb3BlcnR5IGNoYW5nZXMuCi0gICAgICB2
YXIgb2xkQ2xhc3M7Ci0gICAgICAvLyBFeHRyYWN0IGp1c3QgdGhlIHByb3BlcnR5IG5hbWUgZnJv
bSBiaW5kaW5ncyBsaWtlICdmb286YmFyJwotICAgICAgdmFyIHBhcnNlZFBhdGggPSBFbWJlci5W
aWV3Ll9wYXJzZVByb3BlcnR5UGF0aChiaW5kaW5nKTsKLQotICAgICAgLy8gU2V0IHVwIGFuIG9i
c2VydmVyIG9uIHRoZSBjb250ZXh0LiBJZiB0aGUgcHJvcGVydHkgY2hhbmdlcywgdG9nZ2xlIHRo
ZQotICAgICAgLy8gY2xhc3MgbmFtZS4KLSAgICAgIHZhciBvYnNlcnZlciA9IGZ1bmN0aW9uKCkg
ewotICAgICAgICAvLyBHZXQgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIHByb3BlcnR5Ci0gICAg
ICAgIG5ld0NsYXNzID0gdGhpcy5fY2xhc3NTdHJpbmdGb3JQcm9wZXJ0eShiaW5kaW5nKTsKLSAg
ICAgICAgZWxlbSA9IHRoaXMuJCgpOwotCi0gICAgICAgIC8vIElmIHdlIGhhZCBwcmV2aW91c2x5
IGFkZGVkIGEgY2xhc3MgdG8gdGhlIGVsZW1lbnQsIHJlbW92ZSBpdC4KLSAgICAgICAgaWYgKG9s
ZENsYXNzKSB7Ci0gICAgICAgICAgZWxlbS5yZW1vdmVDbGFzcyhvbGRDbGFzcyk7Ci0gICAgICAg
ICAgLy8gQWxzbyByZW1vdmUgZnJvbSBjbGFzc05hbWVzIHNvIHRoYXQgaWYgdGhlIHZpZXcgZ2V0
cyByZXJlbmRlcmVkLAotICAgICAgICAgIC8vIHRoZSBjbGFzcyBkb2Vzbid0IGdldCBhZGRlZCBi
YWNrIHRvIHRoZSBET00uCi0gICAgICAgICAgY2xhc3NOYW1lcy5yZW1vdmVPYmplY3Qob2xkQ2xh
c3MpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gSWYgbmVjZXNzYXJ5LCBhZGQgYSBuZXcgY2xh
c3MuIE1ha2Ugc3VyZSB3ZSBrZWVwIHRyYWNrIG9mIGl0IHNvCi0gICAgICAgIC8vIGl0IGNhbiBi
ZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuCi0gICAgICAgIGlmIChuZXdDbGFzcykgewotICAgICAg
ICAgIGVsZW0uYWRkQ2xhc3MobmV3Q2xhc3MpOwotICAgICAgICAgIG9sZENsYXNzID0gbmV3Q2xh
c3M7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgb2xkQ2xhc3MgPSBudWxsOwotICAgICAg
ICB9Ci0gICAgICB9OwotCi0gICAgICAvLyBHZXQgdGhlIGNsYXNzIG5hbWUgZm9yIHRoZSBwcm9w
ZXJ0eSBhdCBpdHMgY3VycmVudCB2YWx1ZQotICAgICAgZGFzaGVyaXplZENsYXNzID0gdGhpcy5f
Y2xhc3NTdHJpbmdGb3JQcm9wZXJ0eShiaW5kaW5nKTsKLQotICAgICAgaWYgKGRhc2hlcml6ZWRD
bGFzcykgewotICAgICAgICAvLyBFbnN1cmUgdGhhdCBpdCBnZXRzIGludG8gdGhlIGNsYXNzTmFt
ZXMgYXJyYXkKLSAgICAgICAgLy8gc28gaXQgaXMgZGlzcGxheWVkIHdoZW4gd2UgcmVuZGVyLgot
ICAgICAgICBhX2FkZE9iamVjdChjbGFzc05hbWVzLCBkYXNoZXJpemVkQ2xhc3MpOwotCi0gICAg
ICAgIC8vIFNhdmUgYSByZWZlcmVuY2UgdG8gdGhlIGNsYXNzIG5hbWUgc28gd2UgY2FuIHJlbW92
ZSBpdAotICAgICAgICAvLyBpZiB0aGUgb2JzZXJ2ZXIgZmlyZXMuIFJlbWVtYmVyIHRoYXQgdGhp
cyB2YXJpYWJsZSBoYXMKLSAgICAgICAgLy8gYmVlbiBjbG9zZWQgb3ZlciBieSB0aGUgb2JzZXJ2
ZXIuCi0gICAgICAgIG9sZENsYXNzID0gZGFzaGVyaXplZENsYXNzOwotICAgICAgfQotCi0gICAg
ICB0aGlzLnJlZ2lzdGVyT2JzZXJ2ZXIodGhpcywgcGFyc2VkUGF0aC5wYXRoLCBvYnNlcnZlcik7
Ci0gICAgICAvLyBSZW1vdmUgY2xhc3NOYW1lIHNvIHdoZW4gdGhlIHZpZXcgaXMgcmVyZW5kZXJl
ZCwKLSAgICAgIC8vIHRoZSBjbGFzc05hbWUgaXMgYWRkZWQgYmFzZWQgb24gYmluZGluZyByZWV2
YWx1YXRpb24KLSAgICAgIHRoaXMub25lKCd3aWxsQ2xlYXJSZW5kZXInLCBmdW5jdGlvbigpIHsK
LSAgICAgICAgaWYgKG9sZENsYXNzKSB7Ci0gICAgICAgICAgY2xhc3NOYW1lcy5yZW1vdmVPYmpl
Y3Qob2xkQ2xhc3MpOwotICAgICAgICAgIG9sZENsYXNzID0gbnVsbDsKLSAgICAgICAgfQotICAg
ICAgfSk7Ci0KLSAgICB9LCB0aGlzKTsKLSAgfSwKLQotICAvKioKLSAgICBJdGVyYXRlcyB0aHJv
dWdoIHRoZSB2aWV3J3MgYXR0cmlidXRlIGJpbmRpbmdzLCBzZXRzIHVwIG9ic2VydmVycyBmb3Ig
ZWFjaCwKLSAgICB0aGVuIGFwcGxpZXMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGF0dHJpYnV0
ZXMgdG8gdGhlIHBhc3NlZCByZW5kZXIgYnVmZmVyLgotCi0gICAgQG1ldGhvZCBfYXBwbHlBdHRy
aWJ1dGVCaW5kaW5ncwotICAgIEBwYXJhbSB7RW1iZXIuUmVuZGVyQnVmZmVyfSBidWZmZXIKLSAg
ICBAcHJpdmF0ZQotICAqLwotICBfYXBwbHlBdHRyaWJ1dGVCaW5kaW5nczogZnVuY3Rpb24oYnVm
ZmVyLCBhdHRyaWJ1dGVCaW5kaW5ncykgewotICAgIHZhciBhdHRyaWJ1dGVWYWx1ZSwgZWxlbTsK
LQotICAgIGFfZm9yRWFjaChhdHRyaWJ1dGVCaW5kaW5ncywgZnVuY3Rpb24oYmluZGluZykgewot
ICAgICAgdmFyIHNwbGl0ID0gYmluZGluZy5zcGxpdCgnOicpLAotICAgICAgICAgIHByb3BlcnR5
ID0gc3BsaXRbMF0sCi0gICAgICAgICAgYXR0cmlidXRlTmFtZSA9IHNwbGl0WzFdIHx8IHByb3Bl
cnR5OwotCi0gICAgICAvLyBDcmVhdGUgYW4gb2JzZXJ2ZXIgdG8gYWRkL3JlbW92ZS9jaGFuZ2Ug
dGhlIGF0dHJpYnV0ZSBpZiB0aGUKLSAgICAgIC8vIEphdmFTY3JpcHQgcHJvcGVydHkgY2hhbmdl
cy4KLSAgICAgIHZhciBvYnNlcnZlciA9IGZ1bmN0aW9uKCkgewotICAgICAgICBlbGVtID0gdGhp
cy4kKCk7Ci0KLSAgICAgICAgYXR0cmlidXRlVmFsdWUgPSBnZXQodGhpcywgcHJvcGVydHkpOwot
Ci0gICAgICAgIEVtYmVyLlZpZXcuYXBwbHlBdHRyaWJ1dGVCaW5kaW5ncyhlbGVtLCBhdHRyaWJ1
dGVOYW1lLCBhdHRyaWJ1dGVWYWx1ZSk7Ci0gICAgICB9OwotCi0gICAgICB0aGlzLnJlZ2lzdGVy
T2JzZXJ2ZXIodGhpcywgcHJvcGVydHksIG9ic2VydmVyKTsKLQotICAgICAgLy8gRGV0ZXJtaW5l
IHRoZSBjdXJyZW50IHZhbHVlIGFuZCBhZGQgaXQgdG8gdGhlIHJlbmRlciBidWZmZXIKLSAgICAg
IC8vIGlmIG5lY2Vzc2FyeS4KLSAgICAgIGF0dHJpYnV0ZVZhbHVlID0gZ2V0KHRoaXMsIHByb3Bl
cnR5KTsKLSAgICAgIEVtYmVyLlZpZXcuYXBwbHlBdHRyaWJ1dGVCaW5kaW5ncyhidWZmZXIsIGF0
dHJpYnV0ZU5hbWUsIGF0dHJpYnV0ZVZhbHVlKTsKLSAgICB9LCB0aGlzKTsKLSAgfSwKLQotICAv
KioKLSAgICBHaXZlbiBhIHByb3BlcnR5IG5hbWUsIHJldHVybnMgYSBkYXNoZXJpemVkIHZlcnNp
b24gb2YgdGhhdAotICAgIHByb3BlcnR5IG5hbWUgaWYgdGhlIHByb3BlcnR5IGV2YWx1YXRlcyB0
byBhIG5vbi1mYWxzeSB2YWx1ZS4KLQotICAgIEZvciBleGFtcGxlLCBpZiB0aGUgdmlldyBoYXMg
cHJvcGVydHkgYGlzVXJnZW50YCB0aGF0IGV2YWx1YXRlcyB0byB0cnVlLAotICAgIHBhc3Npbmcg
YGlzVXJnZW50YCB0byB0aGlzIG1ldGhvZCB3aWxsIHJldHVybiBgImlzLXVyZ2VudCJgLgotCi0g
ICAgQG1ldGhvZCBfY2xhc3NTdHJpbmdGb3JQcm9wZXJ0eQotICAgIEBwYXJhbSBwcm9wZXJ0eQot
ICAgIEBwcml2YXRlCi0gICovCi0gIF9jbGFzc1N0cmluZ0ZvclByb3BlcnR5OiBmdW5jdGlvbihw
cm9wZXJ0eSkgewotICAgIHZhciBwYXJzZWRQYXRoID0gRW1iZXIuVmlldy5fcGFyc2VQcm9wZXJ0
eVBhdGgocHJvcGVydHkpOwotICAgIHZhciBwYXRoID0gcGFyc2VkUGF0aC5wYXRoOwotCi0gICAg
dmFyIHZhbCA9IGdldCh0aGlzLCBwYXRoKTsKLSAgICBpZiAodmFsID09PSB1bmRlZmluZWQgJiYg
RW1iZXIuaXNHbG9iYWxQYXRoKHBhdGgpKSB7Ci0gICAgICB2YWwgPSBnZXQoRW1iZXIubG9va3Vw
LCBwYXRoKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gRW1iZXIuVmlldy5fY2xhc3NTdHJpbmdGb3JW
YWx1ZShwYXRoLCB2YWwsIHBhcnNlZFBhdGguY2xhc3NOYW1lLCBwYXJzZWRQYXRoLmZhbHN5Q2xh
c3NOYW1lKTsKLSAgfSwKLQotICAvLyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi0gIC8vIEVMRU1FTlQgU1VQUE9SVAotICAvLwotCi0g
IC8qKgotICAgIFJldHVybnMgdGhlIGN1cnJlbnQgRE9NIGVsZW1lbnQgZm9yIHRoZSB2aWV3Lgot
Ci0gICAgQHByb3BlcnR5IGVsZW1lbnQKLSAgICBAdHlwZSBET01FbGVtZW50Ci0gICovCi0gIGVs
ZW1lbnQ6IEVtYmVyLmNvbXB1dGVkKGZ1bmN0aW9uKGtleSwgdmFsdWUpIHsKLSAgICBpZiAodmFs
dWUgIT09IHVuZGVmaW5lZCkgewotICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFN0YXRlLnNldEVs
ZW1lbnQodGhpcywgdmFsdWUpOwotICAgIH0gZWxzZSB7Ci0gICAgICByZXR1cm4gdGhpcy5jdXJy
ZW50U3RhdGUuZ2V0RWxlbWVudCh0aGlzKTsKLSAgICB9Ci0gIH0pLnByb3BlcnR5KCdfcGFyZW50
VmlldycpLAotCi0gIC8qKgotICAgIFJldHVybnMgYSBqUXVlcnkgb2JqZWN0IGZvciB0aGlzIHZp
ZXcncyBlbGVtZW50LiBJZiB5b3UgcGFzcyBpbiBhIHNlbGVjdG9yCi0gICAgc3RyaW5nLCB0aGlz
IG1ldGhvZCB3aWxsIHJldHVybiBhIGpRdWVyeSBvYmplY3QsIHVzaW5nIHRoZSBjdXJyZW50IGVs
ZW1lbnQKLSAgICBhcyBpdHMgYnVmZmVyLgotCi0gICAgRm9yIGV4YW1wbGUsIGNhbGxpbmcgYHZp
ZXcuJCgnbGknKWAgd2lsbCByZXR1cm4gYSBqUXVlcnkgb2JqZWN0IGNvbnRhaW5pbmcKLSAgICBh
bGwgb2YgdGhlIGBsaWAgZWxlbWVudHMgaW5zaWRlIHRoZSBET00gZWxlbWVudCBvZiB0aGlzIHZp
ZXcuCi0KLSAgICBAbWV0aG9kICQKLSAgICBAcGFyYW0ge1N0cmluZ30gW3NlbGVjdG9yXSBhIGpR
dWVyeS1jb21wYXRpYmxlIHNlbGVjdG9yIHN0cmluZwotICAgIEByZXR1cm4ge2pRdWVyeX0gdGhl
IGpRdWVyeSBvYmplY3QgZm9yIHRoZSBET00gbm9kZQotICAqLwotICAkOiBmdW5jdGlvbihzZWwp
IHsKLSAgICByZXR1cm4gdGhpcy5jdXJyZW50U3RhdGUuJCh0aGlzLCBzZWwpOwotICB9LAotCi0g
IG11dGF0ZUNoaWxkVmlld3M6IGZ1bmN0aW9uKGNhbGxiYWNrKSB7Ci0gICAgdmFyIGNoaWxkVmll
d3MgPSB0aGlzLl9jaGlsZFZpZXdzLAotICAgICAgICBpZHggPSBjaGlsZFZpZXdzLmxlbmd0aCwK
LSAgICAgICAgdmlldzsKLQotICAgIHdoaWxlKC0taWR4ID49IDApIHsKLSAgICAgIHZpZXcgPSBj
aGlsZFZpZXdzW2lkeF07Ci0gICAgICBjYWxsYmFjayh0aGlzLCB2aWV3LCBpZHgpOwotICAgIH0K
LQotICAgIHJldHVybiB0aGlzOwotICB9LAotCi0gIGZvckVhY2hDaGlsZFZpZXc6IGZ1bmN0aW9u
KGNhbGxiYWNrKSB7Ci0gICAgdmFyIGNoaWxkVmlld3MgPSB0aGlzLl9jaGlsZFZpZXdzOwotCi0g
ICAgaWYgKCFjaGlsZFZpZXdzKSB7IHJldHVybiB0aGlzOyB9Ci0KLSAgICB2YXIgbGVuID0gY2hp
bGRWaWV3cy5sZW5ndGgsCi0gICAgICAgIHZpZXcsIGlkeDsKLQotICAgIGZvciAoaWR4ID0gMDsg
aWR4IDwgbGVuOyBpZHgrKykgewotICAgICAgdmlldyA9IGNoaWxkVmlld3NbaWR4XTsKLSAgICAg
IGNhbGxiYWNrKHZpZXcpOwotICAgIH0KLQotICAgIHJldHVybiB0aGlzOwotICB9LAotCi0gIC8q
KgotICAgIEFwcGVuZHMgdGhlIHZpZXcncyBlbGVtZW50IHRvIHRoZSBzcGVjaWZpZWQgcGFyZW50
IGVsZW1lbnQuCi0KLSAgICBJZiB0aGUgdmlldyBkb2VzIG5vdCBoYXZlIGFuIEhUTUwgcmVwcmVz
ZW50YXRpb24geWV0LCBgY3JlYXRlRWxlbWVudCgpYAotICAgIHdpbGwgYmUgY2FsbGVkIGF1dG9t
YXRpY2FsbHkuCi0KLSAgICBOb3RlIHRoYXQgdGhpcyBtZXRob2QganVzdCBzY2hlZHVsZXMgdGhl
IHZpZXcgdG8gYmUgYXBwZW5kZWQ7IHRoZSBET00KLSAgICBlbGVtZW50IHdpbGwgbm90IGJlIGFw
cGVuZGVkIHRvIHRoZSBnaXZlbiBlbGVtZW50IHVudGlsIGFsbCBiaW5kaW5ncyBoYXZlCi0gICAg
ZmluaXNoZWQgc3luY2hyb25pemluZy4KLQotICAgIFRoaXMgaXMgbm90IHR5cGljYWxseSBhIGZ1
bmN0aW9uIHRoYXQgeW91IHdpbGwgbmVlZCB0byBjYWxsIGRpcmVjdGx5IHdoZW4KLSAgICBidWls
ZGluZyB5b3VyIGFwcGxpY2F0aW9uLiBZb3UgbWlnaHQgY29uc2lkZXIgdXNpbmcgYEVtYmVyLkNv
bnRhaW5lclZpZXdgCi0gICAgaW5zdGVhZC4gSWYgeW91IGRvIG5lZWQgdG8gdXNlIGBhcHBlbmRU
b2AsIGJlIHN1cmUgdGhhdCB0aGUgdGFyZ2V0IGVsZW1lbnQKLSAgICB5b3UgYXJlIHByb3ZpZGlu
ZyBpcyBhc3NvY2lhdGVkIHdpdGggYW4gYEVtYmVyLkFwcGxpY2F0aW9uYCBhbmQgZG9lcyBub3QK
LSAgICBoYXZlIGFuIGFuY2VzdG9yIGVsZW1lbnQgdGhhdCBpcyBhc3NvY2lhdGVkIHdpdGggYW4g
RW1iZXIgdmlldy4KLQotICAgIEBtZXRob2QgYXBwZW5kVG8KLSAgICBAcGFyYW0ge1N0cmluZ3xE
T01FbGVtZW50fGpRdWVyeX0gQSBzZWxlY3RvciwgZWxlbWVudCwgSFRNTCBzdHJpbmcsIG9yIGpR
dWVyeSBvYmplY3QKLSAgICBAcmV0dXJuIHtFbWJlci5WaWV3fSByZWNlaXZlcgotICAqLwotICBh
cHBlbmRUbzogZnVuY3Rpb24odGFyZ2V0KSB7Ci0gICAgLy8gU2NoZWR1bGUgdGhlIERPTSBlbGVt
ZW50IHRvIGJlIGNyZWF0ZWQgYW5kIGFwcGVuZGVkIHRvIHRoZSBnaXZlbgotICAgIC8vIGVsZW1l
bnQgYWZ0ZXIgYmluZGluZ3MgaGF2ZSBzeW5jaHJvbml6ZWQuCi0gICAgdGhpcy5faW5zZXJ0RWxl
bWVudExhdGVyKGZ1bmN0aW9uKCkgewotICAgICAgRW1iZXIuYXNzZXJ0KCJZb3UgdHJpZWQgdG8g
YXBwZW5kIHRvICgiICsgdGFyZ2V0ICsgIikgYnV0IHRoYXQgaXNuJ3QgaW4gdGhlIERPTSIsIEVt
YmVyLiQodGFyZ2V0KS5sZW5ndGggPiAwKTsKLSAgICAgIEVtYmVyLmFzc2VydCgiWW91IGNhbm5v
dCBhcHBlbmQgdG8gYW4gZXhpc3RpbmcgRW1iZXIuVmlldy4gQ29uc2lkZXIgdXNpbmcgRW1iZXIu
Q29udGFpbmVyVmlldyBpbnN0ZWFkLiIsICFFbWJlci4kKHRhcmdldCkuaXMoJy5lbWJlci12aWV3
JykgJiYgIUVtYmVyLiQodGFyZ2V0KS5wYXJlbnRzKCkuaXMoJy5lbWJlci12aWV3JykpOwotICAg
ICAgdGhpcy4kKCkuYXBwZW5kVG8odGFyZ2V0KTsKLSAgICB9KTsKLQotICAgIHJldHVybiB0aGlz
OwotICB9LAotCi0gIC8qKgotICAgIFJlcGxhY2VzIHRoZSBjb250ZW50IG9mIHRoZSBzcGVjaWZp
ZWQgcGFyZW50IGVsZW1lbnQgd2l0aCB0aGlzIHZpZXcncwotICAgIGVsZW1lbnQuIElmIHRoZSB2
aWV3IGRvZXMgbm90IGhhdmUgYW4gSFRNTCByZXByZXNlbnRhdGlvbiB5ZXQsCi0gICAgYGNyZWF0
ZUVsZW1lbnQoKWAgd2lsbCBiZSBjYWxsZWQgYXV0b21hdGljYWxseS4KLQotICAgIE5vdGUgdGhh
dCB0aGlzIG1ldGhvZCBqdXN0IHNjaGVkdWxlcyB0aGUgdmlldyB0byBiZSBhcHBlbmRlZDsgdGhl
IERPTQotICAgIGVsZW1lbnQgd2lsbCBub3QgYmUgYXBwZW5kZWQgdG8gdGhlIGdpdmVuIGVsZW1l
bnQgdW50aWwgYWxsIGJpbmRpbmdzIGhhdmUKLSAgICBmaW5pc2hlZCBzeW5jaHJvbml6aW5nCi0K
LSAgICBAbWV0aG9kIHJlcGxhY2VJbgotICAgIEBwYXJhbSB7U3RyaW5nfERPTUVsZW1lbnR8alF1
ZXJ5fSB0YXJnZXQgQSBzZWxlY3RvciwgZWxlbWVudCwgSFRNTCBzdHJpbmcsIG9yIGpRdWVyeSBv
YmplY3QKLSAgICBAcmV0dXJuIHtFbWJlci5WaWV3fSByZWNlaXZlZAotICAqLwotICByZXBsYWNl
SW46IGZ1bmN0aW9uKHRhcmdldCkgewotICAgIEVtYmVyLmFzc2VydCgiWW91IHRyaWVkIHRvIHJl
cGxhY2UgaW4gKCIgKyB0YXJnZXQgKyAiKSBidXQgdGhhdCBpc24ndCBpbiB0aGUgRE9NIiwgRW1i
ZXIuJCh0YXJnZXQpLmxlbmd0aCA+IDApOwotICAgIEVtYmVyLmFzc2VydCgiWW91IGNhbm5vdCBy
ZXBsYWNlIGFuIGV4aXN0aW5nIEVtYmVyLlZpZXcuIENvbnNpZGVyIHVzaW5nIEVtYmVyLkNvbnRh
aW5lclZpZXcgaW5zdGVhZC4iLCAhRW1iZXIuJCh0YXJnZXQpLmlzKCcuZW1iZXItdmlldycpICYm
ICFFbWJlci4kKHRhcmdldCkucGFyZW50cygpLmlzKCcuZW1iZXItdmlldycpKTsKLQotICAgIHRo
aXMuX2luc2VydEVsZW1lbnRMYXRlcihmdW5jdGlvbigpIHsKLSAgICAgIEVtYmVyLiQodGFyZ2V0
KS5lbXB0eSgpOwotICAgICAgdGhpcy4kKCkuYXBwZW5kVG8odGFyZ2V0KTsKLSAgICB9KTsKLQot
ICAgIHJldHVybiB0aGlzOwotICB9LAotCi0gIC8qKgotICAgIFNjaGVkdWxlcyBhIERPTSBvcGVy
YXRpb24gdG8gb2NjdXIgZHVyaW5nIHRoZSBuZXh0IHJlbmRlciBwaGFzZS4gVGhpcwotICAgIGVu
c3VyZXMgdGhhdCBhbGwgYmluZGluZ3MgaGF2ZSBmaW5pc2hlZCBzeW5jaHJvbml6aW5nIGJlZm9y
ZSB0aGUgdmlldyBpcwotICAgIHJlbmRlcmVkLgotCi0gICAgVG8gdXNlLCBwYXNzIGEgZnVuY3Rp
b24gdGhhdCBwZXJmb3JtcyBhIERPTSBvcGVyYXRpb24uCi0KLSAgICBCZWZvcmUgeW91ciBmdW5j
dGlvbiBpcyBjYWxsZWQsIHRoaXMgdmlldyBhbmQgYWxsIGNoaWxkIHZpZXdzIHdpbGwgcmVjZWl2
ZQotICAgIHRoZSBgd2lsbEluc2VydEVsZW1lbnRgIGV2ZW50LiBBZnRlciB5b3VyIGZ1bmN0aW9u
IGlzIGludm9rZWQsIHRoaXMgdmlldwotICAgIGFuZCBhbGwgb2YgaXRzIGNoaWxkIHZpZXdzIHdp
bGwgcmVjZWl2ZSB0aGUgYGRpZEluc2VydEVsZW1lbnRgIGV2ZW50LgotCi0gICAgYGBgamF2YXNj
cmlwdAotICAgIHZpZXcuX2luc2VydEVsZW1lbnRMYXRlcihmdW5jdGlvbigpIHsKLSAgICAgIHRo
aXMuY3JlYXRlRWxlbWVudCgpOwotICAgICAgdGhpcy4kKCkuYXBwZW5kVG8oJ2JvZHknKTsKLSAg
ICB9KTsKLSAgICBgYGAKLQotICAgIEBtZXRob2QgX2luc2VydEVsZW1lbnRMYXRlcgotICAgIEBw
YXJhbSB7RnVuY3Rpb259IGZuIHRoZSBmdW5jdGlvbiB0aGF0IGluc2VydHMgdGhlIGVsZW1lbnQg
aW50byB0aGUgRE9NCi0gICAgQHByaXZhdGUKLSAgKi8KLSAgX2luc2VydEVsZW1lbnRMYXRlcjog
ZnVuY3Rpb24oZm4pIHsKLSAgICB0aGlzLl9zY2hlZHVsZWRJbnNlcnQgPSBFbWJlci5ydW4uc2No
ZWR1bGVPbmNlKCdyZW5kZXInLCB0aGlzLCAnX2luc2VydEVsZW1lbnQnLCBmbik7Ci0gIH0sCi0K
LSAgX2luc2VydEVsZW1lbnQ6IGZ1bmN0aW9uIChmbikgewotICAgIHRoaXMuX3NjaGVkdWxlZElu
c2VydCA9IG51bGw7Ci0gICAgdGhpcy5jdXJyZW50U3RhdGUuaW5zZXJ0RWxlbWVudCh0aGlzLCBm
bik7Ci0gIH0sCi0KLSAgLyoqCi0gICAgQXBwZW5kcyB0aGUgdmlldydzIGVsZW1lbnQgdG8gdGhl
IGRvY3VtZW50IGJvZHkuIElmIHRoZSB2aWV3IGRvZXMKLSAgICBub3QgaGF2ZSBhbiBIVE1MIHJl
cHJlc2VudGF0aW9uIHlldCwgYGNyZWF0ZUVsZW1lbnQoKWAgd2lsbCBiZSBjYWxsZWQKLSAgICBh
dXRvbWF0aWNhbGx5LgotCi0gICAgSWYgeW91ciBhcHBsaWNhdGlvbiB1c2VzIHRoZSBgcm9vdEVs
ZW1lbnRgIHByb3BlcnR5LCB5b3UgbXVzdCBhcHBlbmQKLSAgICB0aGUgdmlldyB3aXRoaW4gdGhh
dCBlbGVtZW50LiBSZW5kZXJpbmcgdmlld3Mgb3V0c2lkZSBvZiB0aGUgYHJvb3RFbGVtZW50YAot
ICAgIGlzIG5vdCBzdXBwb3J0ZWQuCi0KLSAgICBOb3RlIHRoYXQgdGhpcyBtZXRob2QganVzdCBz
Y2hlZHVsZXMgdGhlIHZpZXcgdG8gYmUgYXBwZW5kZWQ7IHRoZSBET00KLSAgICBlbGVtZW50IHdp
bGwgbm90IGJlIGFwcGVuZGVkIHRvIHRoZSBkb2N1bWVudCBib2R5IHVudGlsIGFsbCBiaW5kaW5n
cyBoYXZlCi0gICAgZmluaXNoZWQgc3luY2hyb25pemluZy4KLQotICAgIEBtZXRob2QgYXBwZW5k
Ci0gICAgQHJldHVybiB7RW1iZXIuVmlld30gcmVjZWl2ZXIKLSAgKi8KLSAgYXBwZW5kOiBmdW5j
dGlvbigpIHsKLSAgICByZXR1cm4gdGhpcy5hcHBlbmRUbyhkb2N1bWVudC5ib2R5KTsKLSAgfSwK
LQotICAvKioKLSAgICBSZW1vdmVzIHRoZSB2aWV3J3MgZWxlbWVudCBmcm9tIHRoZSBlbGVtZW50
IHRvIHdoaWNoIGl0IGlzIGF0dGFjaGVkLgotCi0gICAgQG1ldGhvZCByZW1vdmUKLSAgICBAcmV0
dXJuIHtFbWJlci5WaWV3fSByZWNlaXZlcgotICAqLwotICByZW1vdmU6IGZ1bmN0aW9uKCkgewot
ICAgIC8vIFdoYXQgd2Ugc2hvdWxkIHJlYWxseSBkbyBoZXJlIGlzIHdhaXQgdW50aWwgdGhlIGVu
ZCBvZiB0aGUgcnVuIGxvb3AKLSAgICAvLyB0byBkZXRlcm1pbmUgaWYgdGhlIGVsZW1lbnQgaGFz
IGJlZW4gcmUtYXBwZW5kZWQgdG8gYSBkaWZmZXJlbnQKLSAgICAvLyBlbGVtZW50LgotICAgIC8v
IEluIHRoZSBpbnRlcmltLCB3ZSB3aWxsIGp1c3QgcmUtcmVuZGVyIGlmIHRoYXQgaGFwcGVucy4g
SXQgaXMgbW9yZQotICAgIC8vIGltcG9ydGFudCB0aGFuIGVsZW1lbnRzIGdldCBnYXJiYWdlIGNv
bGxlY3RlZC4KLSAgICBpZiAoIXRoaXMucmVtb3ZlZEZyb21ET00pIHsgdGhpcy5kZXN0cm95RWxl
bWVudCgpOyB9Ci0gICAgdGhpcy5pbnZva2VSZWN1cnNpdmVseShmdW5jdGlvbih2aWV3KSB7Ci0g
ICAgICBpZiAodmlldy5jbGVhclJlbmRlcmVkQ2hpbGRyZW4pIHsgdmlldy5jbGVhclJlbmRlcmVk
Q2hpbGRyZW4oKTsgfQotICAgIH0pOwotICB9LAotCi0gIGVsZW1lbnRJZDogbnVsbCwKLQotICAv
KioKLSAgICBBdHRlbXB0cyB0byBkaXNjb3ZlciB0aGUgZWxlbWVudCBpbiB0aGUgcGFyZW50IGVs
ZW1lbnQuIFRoZSBkZWZhdWx0Ci0gICAgaW1wbGVtZW50YXRpb24gbG9va3MgZm9yIGFuIGVsZW1l
bnQgd2l0aCBhbiBJRCBvZiBgZWxlbWVudElkYCAob3IgdGhlCi0gICAgdmlldydzIGd1aWQgaWYg
YGVsZW1lbnRJZGAgaXMgbnVsbCkuIFlvdSBjYW4gb3ZlcnJpZGUgdGhpcyBtZXRob2QgdG8KLSAg
ICBwcm92aWRlIHlvdXIgb3duIGZvcm0gb2YgbG9va3VwLiBGb3IgZXhhbXBsZSwgaWYgeW91IHdh
bnQgdG8gZGlzY292ZXIgeW91cgotICAgIGVsZW1lbnQgdXNpbmcgYSBDU1MgY2xhc3MgbmFtZSBp
bnN0ZWFkIG9mIGFuIElELgotCi0gICAgQG1ldGhvZCBmaW5kRWxlbWVudEluUGFyZW50RWxlbWVu
dAotICAgIEBwYXJhbSB7RE9NRWxlbWVudH0gcGFyZW50RWxlbWVudCBUaGUgcGFyZW50J3MgRE9N
IGVsZW1lbnQKLSAgICBAcmV0dXJuIHtET01FbGVtZW50fSBUaGUgZGlzY292ZXJlZCBlbGVtZW50
Ci0gICovCi0gIGZpbmRFbGVtZW50SW5QYXJlbnRFbGVtZW50OiBmdW5jdGlvbihwYXJlbnRFbGVt
KSB7Ci0gICAgdmFyIGlkID0gIiMiICsgdGhpcy5lbGVtZW50SWQ7Ci0gICAgcmV0dXJuIEVtYmVy
LiQoaWQpWzBdIHx8IEVtYmVyLiQoaWQsIHBhcmVudEVsZW0pWzBdOwotICB9LAotCi0gIC8qKgot
ICAgIENyZWF0ZXMgYSBET00gcmVwcmVzZW50YXRpb24gb2YgdGhlIHZpZXcgYW5kIGFsbCBvZiBp
dHMKLSAgICBjaGlsZCB2aWV3cyBieSByZWN1cnNpdmVseSBjYWxsaW5nIHRoZSBgcmVuZGVyKClg
IG1ldGhvZC4KLQotICAgIEFmdGVyIHRoZSBlbGVtZW50IGhhcyBiZWVuIGNyZWF0ZWQsIGBkaWRJ
bnNlcnRFbGVtZW50YCB3aWxsCi0gICAgYmUgY2FsbGVkIG9uIHRoaXMgdmlldyBhbmQgYWxsIG9m
IGl0cyBjaGlsZCB2aWV3cy4KLQotICAgIEBtZXRob2QgY3JlYXRlRWxlbWVudAotICAgIEByZXR1
cm4ge0VtYmVyLlZpZXd9IHJlY2VpdmVyCi0gICovCi0gIGNyZWF0ZUVsZW1lbnQ6IGZ1bmN0aW9u
KCkgewotICAgIGlmIChnZXQodGhpcywgJ2VsZW1lbnQnKSkgeyByZXR1cm4gdGhpczsgfQotCi0g
ICAgdmFyIGJ1ZmZlciA9IHRoaXMucmVuZGVyVG9CdWZmZXIoKTsKLSAgICBzZXQodGhpcywgJ2Vs
ZW1lbnQnLCBidWZmZXIuZWxlbWVudCgpKTsKLQotICAgIHJldHVybiB0aGlzOwotICB9LAotCi0g
IC8qKgotICAgIENhbGxlZCB3aGVuIGEgdmlldyBpcyBnb2luZyB0byBpbnNlcnQgYW4gZWxlbWVu
dCBpbnRvIHRoZSBET00uCi0KLSAgICBAZXZlbnQgd2lsbEluc2VydEVsZW1lbnQKLSAgKi8KLSAg
d2lsbEluc2VydEVsZW1lbnQ6IEVtYmVyLkssCi0KLSAgLyoqCi0gICAgQ2FsbGVkIHdoZW4gdGhl
IGVsZW1lbnQgb2YgdGhlIHZpZXcgaGFzIGJlZW4gaW5zZXJ0ZWQgaW50byB0aGUgRE9NCi0gICAg
b3IgYWZ0ZXIgdGhlIHZpZXcgd2FzIHJlLXJlbmRlcmVkLiBPdmVycmlkZSB0aGlzIGZ1bmN0aW9u
IHRvIGRvIGFueQotICAgIHNldCB1cCB0aGF0IHJlcXVpcmVzIGFuIGVsZW1lbnQgaW4gdGhlIGRv
Y3VtZW50IGJvZHkuCi0KLSAgICBAZXZlbnQgZGlkSW5zZXJ0RWxlbWVudAotICAqLwotICBkaWRJ
bnNlcnRFbGVtZW50OiBFbWJlci5LLAotCi0gIC8qKgotICAgIENhbGxlZCB3aGVuIHRoZSB2aWV3
IGlzIGFib3V0IHRvIHJlcmVuZGVyLCBidXQgYmVmb3JlIGFueXRoaW5nIGhhcwotICAgIGJlZW4g
dG9ybiBkb3duLiBUaGlzIGlzIGEgZ29vZCBvcHBvcnR1bml0eSB0byB0ZWFyIGRvd24gYW55IG1h
bnVhbAotICAgIG9ic2VydmVycyB5b3UgaGF2ZSBpbnN0YWxsZWQgYmFzZWQgb24gdGhlIERPTSBz
dGF0ZQotCi0gICAgQGV2ZW50IHdpbGxDbGVhclJlbmRlcgotICAqLwotICB3aWxsQ2xlYXJSZW5k
ZXI6IEVtYmVyLkssCi0KLSAgLyoqCi0gICAgUnVuIHRoaXMgY2FsbGJhY2sgb24gdGhlIGN1cnJl
bnQgdmlldyAodW5sZXNzIGluY2x1ZGVTZWxmIGlzIGZhbHNlKSBhbmQgcmVjdXJzaXZlbHkgb24g
Y2hpbGQgdmlld3MuCi0KLSAgICBAbWV0aG9kIGludm9rZVJlY3Vyc2l2ZWx5Ci0gICAgQHBhcmFt
IGZuIHtGdW5jdGlvbn0KLSAgICBAcGFyYW0gaW5jbHVkZVNlbGYge0Jvb2xlYW59IEluY2x1ZGVz
IGl0c2VsZiBpZiB0cnVlLgotICAgIEBwcml2YXRlCi0gICovCi0gIGludm9rZVJlY3Vyc2l2ZWx5
OiBmdW5jdGlvbihmbiwgaW5jbHVkZVNlbGYpIHsKLSAgICB2YXIgY2hpbGRWaWV3cyA9IChpbmNs
dWRlU2VsZiA9PT0gZmFsc2UpID8gdGhpcy5fY2hpbGRWaWV3cyA6IFt0aGlzXTsKLSAgICB2YXIg
Y3VycmVudFZpZXdzLCB2aWV3LCBjdXJyZW50Q2hpbGRWaWV3czsKLQotICAgIHdoaWxlIChjaGls
ZFZpZXdzLmxlbmd0aCkgewotICAgICAgY3VycmVudFZpZXdzID0gY2hpbGRWaWV3cy5zbGljZSgp
OwotICAgICAgY2hpbGRWaWV3cyA9IFtdOwotCi0gICAgICBmb3IgKHZhciBpPTAsIGw9Y3VycmVu
dFZpZXdzLmxlbmd0aDsgaTxsOyBpKyspIHsKLSAgICAgICAgdmlldyA9IGN1cnJlbnRWaWV3c1tp
XTsKLSAgICAgICAgY3VycmVudENoaWxkVmlld3MgPSB2aWV3Ll9jaGlsZFZpZXdzID8gdmlldy5f
Y2hpbGRWaWV3cy5zbGljZSgwKSA6IG51bGw7Ci0gICAgICAgIGZuKHZpZXcpOwotICAgICAgICBp
ZiAoY3VycmVudENoaWxkVmlld3MpIHsKLSAgICAgICAgICBjaGlsZFZpZXdzLnB1c2guYXBwbHko
Y2hpbGRWaWV3cywgY3VycmVudENoaWxkVmlld3MpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAg
fQotICB9LAotCi0gIHRyaWdnZXJSZWN1cnNpdmVseTogZnVuY3Rpb24oZXZlbnROYW1lKSB7Ci0g
ICAgdmFyIGNoaWxkVmlld3MgPSBbdGhpc10sIGN1cnJlbnRWaWV3cywgdmlldywgY3VycmVudENo
aWxkVmlld3M7Ci0KLSAgICB3aGlsZSAoY2hpbGRWaWV3cy5sZW5ndGgpIHsKLSAgICAgIGN1cnJl
bnRWaWV3cyA9IGNoaWxkVmlld3Muc2xpY2UoKTsKLSAgICAgIGNoaWxkVmlld3MgPSBbXTsKLQot
ICAgICAgZm9yICh2YXIgaT0wLCBsPWN1cnJlbnRWaWV3cy5sZW5ndGg7IGk8bDsgaSsrKSB7Ci0g
ICAgICAgIHZpZXcgPSBjdXJyZW50Vmlld3NbaV07Ci0gICAgICAgIGN1cnJlbnRDaGlsZFZpZXdz
ID0gdmlldy5fY2hpbGRWaWV3cyA/IHZpZXcuX2NoaWxkVmlld3Muc2xpY2UoMCkgOiBudWxsOwot
ICAgICAgICBpZiAodmlldy50cmlnZ2VyKSB7IHZpZXcudHJpZ2dlcihldmVudE5hbWUpOyB9Ci0g
ICAgICAgIGlmIChjdXJyZW50Q2hpbGRWaWV3cykgewotICAgICAgICAgIGNoaWxkVmlld3MucHVz
aC5hcHBseShjaGlsZFZpZXdzLCBjdXJyZW50Q2hpbGRWaWV3cyk7Ci0gICAgICAgIH0KLQotICAg
ICAgfQotICAgIH0KLSAgfSwKLQotICB2aWV3SGllcmFyY2h5Q29sbGVjdGlvbjogZnVuY3Rpb24o
KSB7Ci0gICAgdmFyIGN1cnJlbnRWaWV3LCB2aWV3Q29sbGVjdGlvbiA9IG5ldyBWaWV3Q29sbGVj
dGlvbihbdGhpc10pOwotCi0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2aWV3Q29sbGVjdGlvbi5s
ZW5ndGg7IGkrKykgewotICAgICAgY3VycmVudFZpZXcgPSB2aWV3Q29sbGVjdGlvbi5vYmplY3RB
dChpKTsKLSAgICAgIGlmIChjdXJyZW50Vmlldy5fY2hpbGRWaWV3cykgewotICAgICAgICB2aWV3
Q29sbGVjdGlvbi5wdXNoLmFwcGx5KHZpZXdDb2xsZWN0aW9uLCBjdXJyZW50Vmlldy5fY2hpbGRW
aWV3cyk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHZpZXdDb2xsZWN0aW9uOwotICB9
LAotCi0gIC8qKgotICAgIERlc3Ryb3lzIGFueSBleGlzdGluZyBlbGVtZW50IGFsb25nIHdpdGgg
dGhlIGVsZW1lbnQgZm9yIGFueSBjaGlsZCB2aWV3cwotICAgIGFzIHdlbGwuIElmIHRoZSB2aWV3
IGRvZXMgbm90IGN1cnJlbnRseSBoYXZlIGEgZWxlbWVudCwgdGhlbiB0aGlzIG1ldGhvZAotICAg
IHdpbGwgZG8gbm90aGluZy4KLQotICAgIElmIHlvdSBpbXBsZW1lbnQgYHdpbGxEZXN0cm95RWxl
bWVudCgpYCBvbiB5b3VyIHZpZXcsIHRoZW4gdGhpcyBtZXRob2Qgd2lsbAotICAgIGJlIGludm9r
ZWQgb24geW91ciB2aWV3IGJlZm9yZSB5b3VyIGVsZW1lbnQgaXMgZGVzdHJveWVkIHRvIGdpdmUg
eW91IGEKLSAgICBjaGFuY2UgdG8gY2xlYW4gdXAgYW55IGV2ZW50IGhhbmRsZXJzLCBldGMuCi0K
LSAgICBJZiB5b3Ugd3JpdGUgYSBgd2lsbERlc3Ryb3lFbGVtZW50KClgIGhhbmRsZXIsIHlvdSBj
YW4gYXNzdW1lIHRoYXQgeW91cgotICAgIGBkaWRJbnNlcnRFbGVtZW50KClgIGhhbmRsZXIgd2Fz
IGNhbGxlZCBlYXJsaWVyIGZvciB0aGUgc2FtZSBlbGVtZW50LgotCi0gICAgWW91IHNob3VsZCBu
b3QgY2FsbCBvciBvdmVycmlkZSB0aGlzIG1ldGhvZCB5b3Vyc2VsZiwgYnV0IHlvdSBtYXkKLSAg
ICB3YW50IHRvIGltcGxlbWVudCB0aGUgYWJvdmUgY2FsbGJhY2tzLgotCi0gICAgQG1ldGhvZCBk
ZXN0cm95RWxlbWVudAotICAgIEByZXR1cm4ge0VtYmVyLlZpZXd9IHJlY2VpdmVyCi0gICovCi0g
IGRlc3Ryb3lFbGVtZW50OiBmdW5jdGlvbigpIHsKLSAgICByZXR1cm4gdGhpcy5jdXJyZW50U3Rh
dGUuZGVzdHJveUVsZW1lbnQodGhpcyk7Ci0gIH0sCi0KLSAgLyoqCi0gICAgQ2FsbGVkIHdoZW4g
dGhlIGVsZW1lbnQgb2YgdGhlIHZpZXcgaXMgZ29pbmcgdG8gYmUgZGVzdHJveWVkLiBPdmVycmlk
ZQotICAgIHRoaXMgZnVuY3Rpb24gdG8gZG8gYW55IHRlYXJkb3duIHRoYXQgcmVxdWlyZXMgYW4g
ZWxlbWVudCwgbGlrZSByZW1vdmluZwotICAgIGV2ZW50IGxpc3RlbmVycy4KLQotICAgIEBldmVu
dCB3aWxsRGVzdHJveUVsZW1lbnQKLSAgKi8KLSAgd2lsbERlc3Ryb3lFbGVtZW50OiBFbWJlci5L
LAotCi0gIC8qKgotICAgIFRyaWdnZXJzIHRoZSBgd2lsbERlc3Ryb3lFbGVtZW50YCBldmVudCAo
d2hpY2ggaW52b2tlcyB0aGUKLSAgICBgd2lsbERlc3Ryb3lFbGVtZW50KClgIG1ldGhvZCBpZiBp
dCBleGlzdHMpIG9uIHRoaXMgdmlldyBhbmQgYWxsIGNoaWxkCi0gICAgdmlld3MuCi0KLSAgICBC
ZWZvcmUgdHJpZ2dlcmluZyBgd2lsbERlc3Ryb3lFbGVtZW50YCwgaXQgZmlyc3QgdHJpZ2dlcnMg
dGhlCi0gICAgYHdpbGxDbGVhclJlbmRlcmAgZXZlbnQgcmVjdXJzaXZlbHkuCi0KLSAgICBAbWV0
aG9kIF9ub3RpZnlXaWxsRGVzdHJveUVsZW1lbnQKLSAgICBAcHJpdmF0ZQotICAqLwotICBfbm90
aWZ5V2lsbERlc3Ryb3lFbGVtZW50OiBmdW5jdGlvbigpIHsKLSAgICB2YXIgdmlld0NvbGxlY3Rp
b24gPSB0aGlzLnZpZXdIaWVyYXJjaHlDb2xsZWN0aW9uKCk7Ci0gICAgdmlld0NvbGxlY3Rpb24u
dHJpZ2dlcignd2lsbENsZWFyUmVuZGVyJyk7Ci0gICAgdmlld0NvbGxlY3Rpb24udHJpZ2dlcign
d2lsbERlc3Ryb3lFbGVtZW50Jyk7Ci0gICAgcmV0dXJuIHZpZXdDb2xsZWN0aW9uOwotICB9LAot
Ci0gIC8qKgotICAgIElmIHRoaXMgdmlldydzIGVsZW1lbnQgY2hhbmdlcywgd2UgbmVlZCB0byBp
bnZhbGlkYXRlIHRoZSBjYWNoZXMgb2Ygb3VyCi0gICAgY2hpbGQgdmlld3Mgc28gdGhhdCB3ZSBk
byBub3QgcmV0YWluIHJlZmVyZW5jZXMgdG8gRE9NIGVsZW1lbnRzIHRoYXQgYXJlCi0gICAgbm8g
bG9uZ2VyIG5lZWRlZC4KLQotICAgIEBtZXRob2QgX2VsZW1lbnREaWRDaGFuZ2UKLSAgICBAcHJp
dmF0ZQotICAqLwotICBfZWxlbWVudERpZENoYW5nZTogRW1iZXIub2JzZXJ2ZXIoJ2VsZW1lbnQn
LCBmdW5jdGlvbigpIHsKLSAgICB0aGlzLmZvckVhY2hDaGlsZFZpZXcoZnVuY3Rpb24odmlldykg
ewotICAgICAgZGVsZXRlIG1ldGEodmlldykuY2FjaGUuZWxlbWVudDsKLSAgICB9KTsKLSAgfSks
Ci0KLSAgLyoqCi0gICAgQ2FsbGVkIHdoZW4gdGhlIHBhcmVudFZpZXcgcHJvcGVydHkgaGFzIGNo
YW5nZWQuCi0KLSAgICBAZXZlbnQgcGFyZW50Vmlld0RpZENoYW5nZQotICAqLwotICBwYXJlbnRW
aWV3RGlkQ2hhbmdlOiBFbWJlci5LLAotCi0gIGluc3RydW1lbnROYW1lOiAndmlldycsCi0KLSAg
aW5zdHJ1bWVudERldGFpbHM6IGZ1bmN0aW9uKGhhc2gpIHsKLSAgICBoYXNoLnRlbXBsYXRlID0g
Z2V0KHRoaXMsICd0ZW1wbGF0ZU5hbWUnKTsKLSAgICB0aGlzLl9zdXBlcihoYXNoKTsKLSAgfSwK
LQotICBfcmVuZGVyVG9CdWZmZXI6IGZ1bmN0aW9uKHBhcmVudEJ1ZmZlciwgYnVmZmVyT3BlcmF0
aW9uKSB7Ci0gICAgdGhpcy5sZW5ndGhCZWZvcmVSZW5kZXIgPSB0aGlzLl9jaGlsZFZpZXdzLmxl
bmd0aDsKLSAgICB2YXIgYnVmZmVyID0gdGhpcy5fc3VwZXIocGFyZW50QnVmZmVyLCBidWZmZXJP
cGVyYXRpb24pOwotICAgIHRoaXMubGVuZ3RoQWZ0ZXJSZW5kZXIgPSB0aGlzLl9jaGlsZFZpZXdz
Lmxlbmd0aDsKLQotICAgIHJldHVybiBidWZmZXI7Ci0gIH0sCi0KLSAgcmVuZGVyVG9CdWZmZXJJ
Zk5lZWRlZDogZnVuY3Rpb24gKGJ1ZmZlcikgewotICAgIHJldHVybiB0aGlzLmN1cnJlbnRTdGF0
ZS5yZW5kZXJUb0J1ZmZlcklmTmVlZGVkKHRoaXMsIGJ1ZmZlcik7Ci0gIH0sCi0KLSAgYmVmb3Jl
UmVuZGVyOiBmdW5jdGlvbihidWZmZXIpIHsKLSAgICB0aGlzLmFwcGx5QXR0cmlidXRlc1RvQnVm
ZmVyKGJ1ZmZlcik7Ci0gICAgYnVmZmVyLnB1c2hPcGVuaW5nVGFnKCk7Ci0gIH0sCi0KLSAgYWZ0
ZXJSZW5kZXI6IGZ1bmN0aW9uKGJ1ZmZlcikgewotICAgIGJ1ZmZlci5wdXNoQ2xvc2luZ1RhZygp
OwotICB9LAotCi0gIGFwcGx5QXR0cmlidXRlc1RvQnVmZmVyOiBmdW5jdGlvbihidWZmZXIpIHsK
LSAgICAvLyBDcmVhdGVzIG9ic2VydmVycyBmb3IgYWxsIHJlZ2lzdGVyZWQgY2xhc3MgbmFtZSBh
bmQgYXR0cmlidXRlIGJpbmRpbmdzLAotICAgIC8vIHRoZW4gYWRkcyB0aGVtIHRvIHRoZSBlbGVt
ZW50LgotICAgIHZhciBjbGFzc05hbWVCaW5kaW5ncyA9IGdldCh0aGlzLCAnY2xhc3NOYW1lQmlu
ZGluZ3MnKTsKLSAgICBpZiAoY2xhc3NOYW1lQmluZGluZ3MubGVuZ3RoKSB7Ci0gICAgICB0aGlz
Ll9hcHBseUNsYXNzTmFtZUJpbmRpbmdzKGNsYXNzTmFtZUJpbmRpbmdzKTsKLSAgICB9Ci0KLSAg
ICAvLyBQYXNzIHRoZSByZW5kZXIgYnVmZmVyIHNvIHRoZSBtZXRob2QgY2FuIGFwcGx5IGF0dHJp
YnV0ZXMgZGlyZWN0bHkuCi0gICAgLy8gVGhpcyBpc24ndCBuZWVkZWQgZm9yIGNsYXNzIG5hbWUg
YmluZGluZ3MgYmVjYXVzZSB0aGV5IHVzZSB0aGUKLSAgICAvLyBleGlzdGluZyBjbGFzc05hbWVz
IGluZnJhc3RydWN0dXJlLgotICAgIHZhciBhdHRyaWJ1dGVCaW5kaW5ncyA9IGdldCh0aGlzLCAn
YXR0cmlidXRlQmluZGluZ3MnKTsKLSAgICBpZiAoYXR0cmlidXRlQmluZGluZ3MubGVuZ3RoKSB7
Ci0gICAgICB0aGlzLl9hcHBseUF0dHJpYnV0ZUJpbmRpbmdzKGJ1ZmZlciwgYXR0cmlidXRlQmlu
ZGluZ3MpOwotICAgIH0KLQotICAgIGJ1ZmZlci5zZXRDbGFzc2VzKHRoaXMuY2xhc3NOYW1lcyk7
Ci0gICAgYnVmZmVyLmlkKHRoaXMuZWxlbWVudElkKTsKLQotICAgIHZhciByb2xlID0gZ2V0KHRo
aXMsICdhcmlhUm9sZScpOwotICAgIGlmIChyb2xlKSB7Ci0gICAgICBidWZmZXIuYXR0cigncm9s
ZScsIHJvbGUpOwotICAgIH0KLQotICAgIGlmIChnZXQodGhpcywgJ2lzVmlzaWJsZScpID09PSBm
YWxzZSkgewotICAgICAgYnVmZmVyLnN0eWxlKCdkaXNwbGF5JywgJ25vbmUnKTsKLSAgICB9Ci0g
IH0sCi0KLSAgLy8gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLgotICAvLyBTVEFOREFSRCBSRU5ERVIgUFJPUEVSVElFUwotICAvLwotCi0g
IC8qKgotICAgIFRhZyBuYW1lIGZvciB0aGUgdmlldydzIG91dGVyIGVsZW1lbnQuIFRoZSB0YWcg
bmFtZSBpcyBvbmx5IHVzZWQgd2hlbiBhbgotICAgIGVsZW1lbnQgaXMgZmlyc3QgY3JlYXRlZC4g
SWYgeW91IGNoYW5nZSB0aGUgYHRhZ05hbWVgIGZvciBhbiBlbGVtZW50LCB5b3UKLSAgICBtdXN0
IGRlc3Ryb3kgYW5kIHJlY3JlYXRlIHRoZSB2aWV3IGVsZW1lbnQuCi0KLSAgICBCeSBkZWZhdWx0
LCB0aGUgcmVuZGVyIGJ1ZmZlciB3aWxsIHVzZSBhIGA8ZGl2PmAgdGFnIGZvciB2aWV3cy4KLQot
ICAgIEBwcm9wZXJ0eSB0YWdOYW1lCi0gICAgQHR5cGUgU3RyaW5nCi0gICAgQGRlZmF1bHQgbnVs
bAotICAqLwotCi0gIC8vIFdlIGxlYXZlIHRoaXMgbnVsbCBieSBkZWZhdWx0IHNvIHdlIGNhbiB0
ZWxsIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4KLSAgLy8gdGhlIGRlZmF1bHQgY2FzZSBhbmQgYSB1
c2VyLXNwZWNpZmllZCB0YWcuCi0gIHRhZ05hbWU6IG51bGwsCi0KLSAgLyoqCi0gICAgVGhlIFdB
SS1BUklBIHJvbGUgb2YgdGhlIGNvbnRyb2wgcmVwcmVzZW50ZWQgYnkgdGhpcyB2aWV3LiBGb3Ig
ZXhhbXBsZSwgYQotICAgIGJ1dHRvbiBtYXkgaGF2ZSBhIHJvbGUgb2YgdHlwZSAnYnV0dG9uJywg
b3IgYSBwYW5lIG1heSBoYXZlIGEgcm9sZSBvZgotICAgIHR5cGUgJ2FsZXJ0ZGlhbG9nJy4gVGhp
cyBwcm9wZXJ0eSBpcyB1c2VkIGJ5IGFzc2lzdGl2ZSBzb2Z0d2FyZSB0byBoZWxwCi0gICAgdmlz
dWFsbHkgY2hhbGxlbmdlZCB1c2VycyBuYXZpZ2F0ZSByaWNoIHdlYiBhcHBsaWNhdGlvbnMuCi0K
LSAgICBUaGUgZnVsbCBsaXN0IG9mIHZhbGlkIFdBSS1BUklBIHJvbGVzIGlzIGF2YWlsYWJsZSBh
dDoKLSAgICBbaHR0cDovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEvcm9sZXMjcm9sZXNfY2F0ZWdv
cml6YXRpb25dKGh0dHA6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhL3JvbGVzI3JvbGVzX2NhdGVn
b3JpemF0aW9uKQotCi0gICAgQHByb3BlcnR5IGFyaWFSb2xlCi0gICAgQHR5cGUgU3RyaW5nCi0g
ICAgQGRlZmF1bHQgbnVsbAotICAqLwotICBhcmlhUm9sZTogbnVsbCwKLQotICAvKioKLSAgICBT
dGFuZGFyZCBDU1MgY2xhc3MgbmFtZXMgdG8gYXBwbHkgdG8gdGhlIHZpZXcncyBvdXRlciBlbGVt
ZW50LiBUaGlzCi0gICAgcHJvcGVydHkgYXV0b21hdGljYWxseSBpbmhlcml0cyBhbnkgY2xhc3Mg
bmFtZXMgZGVmaW5lZCBieSB0aGUgdmlldydzCi0gICAgc3VwZXJjbGFzc2VzIGFzIHdlbGwuCi0K
LSAgICBAcHJvcGVydHkgY2xhc3NOYW1lcwotICAgIEB0eXBlIEFycmF5Ci0gICAgQGRlZmF1bHQg
WydlbWJlci12aWV3J10KLSAgKi8KLSAgY2xhc3NOYW1lczogWydlbWJlci12aWV3J10sCi0KLSAg
LyoqCi0gICAgQSBsaXN0IG9mIHByb3BlcnRpZXMgb2YgdGhlIHZpZXcgdG8gYXBwbHkgYXMgY2xh
c3MgbmFtZXMuIElmIHRoZSBwcm9wZXJ0eQotICAgIGlzIGEgc3RyaW5nIHZhbHVlLCB0aGUgdmFs
dWUgb2YgdGhhdCBzdHJpbmcgd2lsbCBiZSBhcHBsaWVkIGFzIGEgY2xhc3MKLSAgICBuYW1lLgot
Ci0gICAgYGBgamF2YXNjcmlwdAotICAgIC8vIEFwcGxpZXMgdGhlICdoaWdoJyBjbGFzcyB0byB0
aGUgdmlldyBlbGVtZW50Ci0gICAgRW1iZXIuVmlldy5leHRlbmQoewotICAgICAgY2xhc3NOYW1l
QmluZGluZ3M6IFsncHJpb3JpdHknXQotICAgICAgcHJpb3JpdHk6ICdoaWdoJwotICAgIH0pOwot
ICAgIGBgYAotCi0gICAgSWYgdGhlIHZhbHVlIG9mIHRoZSBwcm9wZXJ0eSBpcyBhIEJvb2xlYW4s
IHRoZSBuYW1lIG9mIHRoYXQgcHJvcGVydHkgaXMKLSAgICBhZGRlZCBhcyBhIGRhc2hlcml6ZWQg
Y2xhc3MgbmFtZS4KLQotICAgIGBgYGphdmFzY3JpcHQKLSAgICAvLyBBcHBsaWVzIHRoZSAnaXMt
dXJnZW50JyBjbGFzcyB0byB0aGUgdmlldyBlbGVtZW50Ci0gICAgRW1iZXIuVmlldy5leHRlbmQo
ewotICAgICAgY2xhc3NOYW1lQmluZGluZ3M6IFsnaXNVcmdlbnQnXQotICAgICAgaXNVcmdlbnQ6
IHRydWUKLSAgICB9KTsKLSAgICBgYGAKLQotICAgIElmIHlvdSB3b3VsZCBwcmVmZXIgdG8gdXNl
IGEgY3VzdG9tIHZhbHVlIGluc3RlYWQgb2YgdGhlIGRhc2hlcml6ZWQKLSAgICBwcm9wZXJ0eSBu
YW1lLCB5b3UgY2FuIHBhc3MgYSBiaW5kaW5nIGxpa2UgdGhpczoKLQotICAgIGBgYGphdmFzY3Jp
cHQKLSAgICAvLyBBcHBsaWVzIHRoZSAndXJnZW50JyBjbGFzcyB0byB0aGUgdmlldyBlbGVtZW50
Ci0gICAgRW1iZXIuVmlldy5leHRlbmQoewotICAgICAgY2xhc3NOYW1lQmluZGluZ3M6IFsnaXNV
cmdlbnQ6dXJnZW50J10KLSAgICAgIGlzVXJnZW50OiB0cnVlCi0gICAgfSk7Ci0gICAgYGBgCi0K
LSAgICBUaGlzIGxpc3Qgb2YgcHJvcGVydGllcyBpcyBpbmhlcml0ZWQgZnJvbSB0aGUgdmlldydz
IHN1cGVyY2xhc3NlcyBhcyB3ZWxsLgotCi0gICAgQHByb3BlcnR5IGNsYXNzTmFtZUJpbmRpbmdz
Ci0gICAgQHR5cGUgQXJyYXkKLSAgICBAZGVmYXVsdCBbXQotICAqLwotICBjbGFzc05hbWVCaW5k
aW5nczogRU1QVFlfQVJSQVksCi0KLSAgLyoqCi0gICAgQSBsaXN0IG9mIHByb3BlcnRpZXMgb2Yg
dGhlIHZpZXcgdG8gYXBwbHkgYXMgYXR0cmlidXRlcy4gSWYgdGhlIHByb3BlcnR5IGlzCi0gICAg
YSBzdHJpbmcgdmFsdWUsIHRoZSB2YWx1ZSBvZiB0aGF0IHN0cmluZyB3aWxsIGJlIGFwcGxpZWQg
YXMgdGhlIGF0dHJpYnV0ZS4KLQotICAgIGBgYGphdmFzY3JpcHQKLSAgICAvLyBBcHBsaWVzIHRo
ZSB0eXBlIGF0dHJpYnV0ZSB0byB0aGUgZWxlbWVudAotICAgIC8vIHdpdGggdGhlIHZhbHVlICJi
dXR0b24iLCBsaWtlIDxkaXYgdHlwZT0iYnV0dG9uIj4KLSAgICBFbWJlci5WaWV3LmV4dGVuZCh7
Ci0gICAgICBhdHRyaWJ1dGVCaW5kaW5nczogWyd0eXBlJ10sCi0gICAgICB0eXBlOiAnYnV0dG9u
JwotICAgIH0pOwotICAgIGBgYAotCi0gICAgSWYgdGhlIHZhbHVlIG9mIHRoZSBwcm9wZXJ0eSBp
cyBhIEJvb2xlYW4sIHRoZSBuYW1lIG9mIHRoYXQgcHJvcGVydHkgaXMKLSAgICBhZGRlZCBhcyBh
biBhdHRyaWJ1dGUuCi0KLSAgICBgYGBqYXZhc2NyaXB0Ci0gICAgLy8gUmVuZGVycyBzb21ldGhp
bmcgbGlrZSA8ZGl2IGVuYWJsZWQ9ImVuYWJsZWQiPgotICAgIEVtYmVyLlZpZXcuZXh0ZW5kKHsK
LSAgICAgIGF0dHJpYnV0ZUJpbmRpbmdzOiBbJ2VuYWJsZWQnXSwKLSAgICAgIGVuYWJsZWQ6IHRy
dWUKLSAgICB9KTsKLSAgICBgYGAKLQotICAgIEBwcm9wZXJ0eSBhdHRyaWJ1dGVCaW5kaW5ncwot
ICAqLwotICBhdHRyaWJ1dGVCaW5kaW5nczogRU1QVFlfQVJSQVksCi0KLSAgLy8gLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgotICAvLyBDT1JF
IERJU1BMQVkgTUVUSE9EUwotICAvLwotCi0gIC8qKgotICAgIFNldHVwIGEgdmlldywgYnV0IGRv
IG5vdCBmaW5pc2ggd2FraW5nIGl0IHVwLgotCi0gICAgKiBjb25maWd1cmUgYGNoaWxkVmlld3Ng
Ci0gICAgKiByZWdpc3RlciB0aGUgdmlldyB3aXRoIHRoZSBnbG9iYWwgdmlld3MgaGFzaCwgd2hp
Y2ggaXMgdXNlZCBmb3IgZXZlbnQKLSAgICAgIGRpc3BhdGNoCi0KLSAgICBAbWV0aG9kIGluaXQK
LSAgICBAcHJpdmF0ZQotICAqLwotICBpbml0OiBmdW5jdGlvbigpIHsKLSAgICB0aGlzLmVsZW1l
bnRJZCA9IHRoaXMuZWxlbWVudElkIHx8IGd1aWRGb3IodGhpcyk7Ci0KLSAgICB0aGlzLl9zdXBl
cigpOwotCi0gICAgLy8gc2V0dXAgY2hpbGQgdmlld3MuIGJlIHN1cmUgdG8gY2xvbmUgdGhlIGNo
aWxkIHZpZXdzIGFycmF5IGZpcnN0Ci0gICAgdGhpcy5fY2hpbGRWaWV3cyA9IHRoaXMuX2NoaWxk
Vmlld3Muc2xpY2UoKTsKLQotICAgIEVtYmVyLmFzc2VydCgiT25seSBhcnJheXMgYXJlIGFsbG93
ZWQgZm9yICdjbGFzc05hbWVCaW5kaW5ncyciLCBFbWJlci50eXBlT2YodGhpcy5jbGFzc05hbWVC
aW5kaW5ncykgPT09ICdhcnJheScpOwotICAgIHRoaXMuY2xhc3NOYW1lQmluZGluZ3MgPSBFbWJl
ci5BKHRoaXMuY2xhc3NOYW1lQmluZGluZ3Muc2xpY2UoKSk7Ci0KLSAgICBFbWJlci5hc3NlcnQo
Ik9ubHkgYXJyYXlzIGFyZSBhbGxvd2VkIGZvciAnY2xhc3NOYW1lcyciLCBFbWJlci50eXBlT2Yo
dGhpcy5jbGFzc05hbWVzKSA9PT0gJ2FycmF5Jyk7Ci0gICAgdGhpcy5jbGFzc05hbWVzID0gRW1i
ZXIuQSh0aGlzLmNsYXNzTmFtZXMuc2xpY2UoKSk7Ci0gIH0sCi0KLSAgYXBwZW5kQ2hpbGQ6IGZ1
bmN0aW9uKHZpZXcsIG9wdGlvbnMpIHsKLSAgICByZXR1cm4gdGhpcy5jdXJyZW50U3RhdGUuYXBw
ZW5kQ2hpbGQodGhpcywgdmlldywgb3B0aW9ucyk7Ci0gIH0sCi0KLSAgLyoqCi0gICAgUmVtb3Zl
cyB0aGUgY2hpbGQgdmlldyBmcm9tIHRoZSBwYXJlbnQgdmlldy4KLQotICAgIEBtZXRob2QgcmVt
b3ZlQ2hpbGQKLSAgICBAcGFyYW0ge0VtYmVyLlZpZXd9IHZpZXcKLSAgICBAcmV0dXJuIHtFbWJl
ci5WaWV3fSByZWNlaXZlcgotICAqLwotICByZW1vdmVDaGlsZDogZnVuY3Rpb24odmlldykgewot
ICAgIC8vIElmIHdlJ3JlIGRlc3Ryb3lpbmcsIHRoZSBlbnRpcmUgc3VidHJlZSB3aWxsIGJlCi0g
ICAgLy8gZnJlZWQsIGFuZCB0aGUgRE9NIHdpbGwgYmUgaGFuZGxlZCBzZXBhcmF0ZWx5LAotICAg
IC8vIHNvIG5vIG5lZWQgdG8gbWVzcyB3aXRoIGNoaWxkVmlld3MuCi0gICAgaWYgKHRoaXMuaXNE
ZXN0cm95aW5nKSB7IHJldHVybjsgfQotCi0gICAgLy8gdXBkYXRlIHBhcmVudCBub2RlCi0gICAg
c2V0KHZpZXcsICdfcGFyZW50VmlldycsIG51bGwpOwotCi0gICAgLy8gcmVtb3ZlIHZpZXcgZnJv
bSBjaGlsZFZpZXdzIGFycmF5LgotICAgIHZhciBjaGlsZFZpZXdzID0gdGhpcy5fY2hpbGRWaWV3
czsKLQotICAgIEVtYmVyLkVudW1lcmFibGVVdGlscy5yZW1vdmVPYmplY3QoY2hpbGRWaWV3cywg
dmlldyk7Ci0KLSAgICB0aGlzLnByb3BlcnR5RGlkQ2hhbmdlKCdjaGlsZFZpZXdzJyk7IC8vIEhV
SD8hIHdoYXQgaGFwcGVuZWQgdG8gd2lsbCBjaGFuZ2U/Ci0KLSAgICByZXR1cm4gdGhpczsKLSAg
fSwKLQotICAvKioKLSAgICBSZW1vdmVzIGFsbCBjaGlsZHJlbiBmcm9tIHRoZSBgcGFyZW50Vmll
d2AuCi0KLSAgICBAbWV0aG9kIHJlbW92ZUFsbENoaWxkcmVuCi0gICAgQHJldHVybiB7RW1iZXIu
Vmlld30gcmVjZWl2ZXIKLSAgKi8KLSAgcmVtb3ZlQWxsQ2hpbGRyZW46IGZ1bmN0aW9uKCkgewot
ICAgIHJldHVybiB0aGlzLm11dGF0ZUNoaWxkVmlld3MoZnVuY3Rpb24ocGFyZW50Vmlldywgdmll
dykgewotICAgICAgcGFyZW50Vmlldy5yZW1vdmVDaGlsZCh2aWV3KTsKLSAgICB9KTsKLSAgfSwK
LQotICBkZXN0cm95QWxsQ2hpbGRyZW46IGZ1bmN0aW9uKCkgewotICAgIHJldHVybiB0aGlzLm11
dGF0ZUNoaWxkVmlld3MoZnVuY3Rpb24ocGFyZW50VmlldywgdmlldykgewotICAgICAgdmlldy5k
ZXN0cm95KCk7Ci0gICAgfSk7Ci0gIH0sCi0KLSAgLyoqCi0gICAgUmVtb3ZlcyB0aGUgdmlldyBm
cm9tIGl0cyBgcGFyZW50Vmlld2AsIGlmIG9uZSBpcyBmb3VuZC4gT3RoZXJ3aXNlCi0gICAgZG9l
cyBub3RoaW5nLgotCi0gICAgQG1ldGhvZCByZW1vdmVGcm9tUGFyZW50Ci0gICAgQHJldHVybiB7
RW1iZXIuVmlld30gcmVjZWl2ZXIKLSAgKi8KLSAgcmVtb3ZlRnJvbVBhcmVudDogZnVuY3Rpb24o
KSB7Ci0gICAgdmFyIHBhcmVudCA9IHRoaXMuX3BhcmVudFZpZXc7Ci0KLSAgICAvLyBSZW1vdmUg
RE9NIGVsZW1lbnQgZnJvbSBwYXJlbnQKLSAgICB0aGlzLnJlbW92ZSgpOwotCi0gICAgaWYgKHBh
cmVudCkgeyBwYXJlbnQucmVtb3ZlQ2hpbGQodGhpcyk7IH0KLSAgICByZXR1cm4gdGhpczsKLSAg
fSwKLQotICAvKioKLSAgICBZb3UgbXVzdCBjYWxsIGBkZXN0cm95YCBvbiBhIHZpZXcgdG8gZGVz
dHJveSB0aGUgdmlldyAoYW5kIGFsbCBvZiBpdHMKLSAgICBjaGlsZCB2aWV3cykuIFRoaXMgd2ls
bCByZW1vdmUgdGhlIHZpZXcgZnJvbSBhbnkgcGFyZW50IG5vZGUsIHRoZW4gbWFrZQotICAgIHN1
cmUgdGhhdCB0aGUgRE9NIGVsZW1lbnQgbWFuYWdlZCBieSB0aGUgdmlldyBjYW4gYmUgcmVsZWFz
ZWQgYnkgdGhlCi0gICAgbWVtb3J5IG1hbmFnZXIuCi0KLSAgICBAbWV0aG9kIGRlc3Ryb3kKLSAg
Ki8KLSAgZGVzdHJveTogZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGNoaWxkVmlld3MgPSB0aGlzLl9j
aGlsZFZpZXdzLAotICAgICAgICAvLyBnZXQgcGFyZW50VmlldyBiZWZvcmUgY2FsbGluZyBzdXBl
ciBiZWNhdXNlIGl0J2xsIGJlIGRlc3Ryb3llZAotICAgICAgICBub25WaXJ0dWFsUGFyZW50Vmll
dyA9IGdldCh0aGlzLCAncGFyZW50VmlldycpLAotICAgICAgICB2aWV3TmFtZSA9IHRoaXMudmll
d05hbWUsCi0gICAgICAgIGNoaWxkTGVuLCBpOwotCi0gICAgaWYgKCF0aGlzLl9zdXBlcigpKSB7
IHJldHVybjsgfQotCi0gICAgY2hpbGRMZW4gPSBjaGlsZFZpZXdzLmxlbmd0aDsKLSAgICBmb3Ig
KGk9Y2hpbGRMZW4tMTsgaT49MDsgaS0tKSB7Ci0gICAgICBjaGlsZFZpZXdzW2ldLnJlbW92ZWRG
cm9tRE9NID0gdHJ1ZTsKLSAgICB9Ci0KLSAgICAvLyByZW1vdmUgZnJvbSBub24tdmlydHVhbCBw
YXJlbnQgdmlldyBpZiB2aWV3TmFtZSB3YXMgc3BlY2lmaWVkCi0gICAgaWYgKHZpZXdOYW1lICYm
IG5vblZpcnR1YWxQYXJlbnRWaWV3KSB7Ci0gICAgICBub25WaXJ0dWFsUGFyZW50Vmlldy5zZXQo
dmlld05hbWUsIG51bGwpOwotICAgIH0KLQotICAgIGNoaWxkTGVuID0gY2hpbGRWaWV3cy5sZW5n
dGg7Ci0gICAgZm9yIChpPWNoaWxkTGVuLTE7IGk+PTA7IGktLSkgewotICAgICAgY2hpbGRWaWV3
c1tpXS5kZXN0cm95KCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRoaXM7Ci0gIH0sCi0KLSAgLyoq
Ci0gICAgSW5zdGFudGlhdGVzIGEgdmlldyB0byBiZSBhZGRlZCB0byB0aGUgY2hpbGRWaWV3cyBh
cnJheSBkdXJpbmcgdmlldwotICAgIGluaXRpYWxpemF0aW9uLiBZb3UgZ2VuZXJhbGx5IHdpbGwg
bm90IGNhbGwgdGhpcyBtZXRob2QgZGlyZWN0bHkgdW5sZXNzCi0gICAgeW91IGFyZSBvdmVycmlk
aW5nIGBjcmVhdGVDaGlsZFZpZXdzKClgLiBOb3RlIHRoYXQgdGhpcyBtZXRob2Qgd2lsbAotICAg
IGF1dG9tYXRpY2FsbHkgY29uZmlndXJlIHRoZSBjb3JyZWN0IHNldHRpbmdzIG9uIHRoZSBuZXcg
dmlldyBpbnN0YW5jZSB0bwotICAgIGFjdCBhcyBhIGNoaWxkIG9mIHRoZSBwYXJlbnQuCi0KLSAg
ICBAbWV0aG9kIGNyZWF0ZUNoaWxkVmlldwotICAgIEBwYXJhbSB7Q2xhc3N8U3RyaW5nfSB2aWV3
Q2xhc3MKLSAgICBAcGFyYW0ge0hhc2h9IFthdHRyc10gQXR0cmlidXRlcyB0byBhZGQKLSAgICBA
cmV0dXJuIHtFbWJlci5WaWV3fSBuZXcgaW5zdGFuY2UKLSAgKi8KLSAgY3JlYXRlQ2hpbGRWaWV3
OiBmdW5jdGlvbih2aWV3LCBhdHRycykgewotICAgIGlmICghdmlldykgewotICAgICAgdGhyb3cg
bmV3IFR5cGVFcnJvcigiY3JlYXRlQ2hpbGRWaWV3cyBmaXJzdCBhcmd1bWVudCBtdXN0IGV4aXN0
Iik7Ci0gICAgfQotCi0gICAgaWYgKHZpZXcuaXNWaWV3ICYmIHZpZXcuX3BhcmVudFZpZXcgPT09
IHRoaXMgJiYgdmlldy5jb250YWluZXIgPT09IHRoaXMuY29udGFpbmVyKSB7Ci0gICAgICByZXR1
cm4gdmlldzsKLSAgICB9Ci0KLSAgICBhdHRycyA9IGF0dHJzIHx8IHt9OwotICAgIGF0dHJzLl9w
YXJlbnRWaWV3ID0gdGhpczsKLQotICAgIGlmIChFbWJlci5Db3JlVmlldy5kZXRlY3Qodmlldykp
IHsKLSAgICAgIGF0dHJzLnRlbXBsYXRlRGF0YSA9IGF0dHJzLnRlbXBsYXRlRGF0YSB8fCBnZXQo
dGhpcywgJ3RlbXBsYXRlRGF0YScpOwotCi0gICAgICBhdHRycy5jb250YWluZXIgPSB0aGlzLmNv
bnRhaW5lcjsKLSAgICAgIHZpZXcgPSB2aWV3LmNyZWF0ZShhdHRycyk7Ci0KLSAgICAgIC8vIGRv
bid0IHNldCB0aGUgcHJvcGVydHkgb24gYSB2aXJ0dWFsIHZpZXcsIGFzIHRoZXkgYXJlIGludmlz
aWJsZSB0bwotICAgICAgLy8gY29uc3VtZXJzIG9mIHRoZSB2aWV3IEFQSQotICAgICAgaWYgKHZp
ZXcudmlld05hbWUpIHsKLSAgICAgICAgc2V0KGdldCh0aGlzLCAnY29uY3JldGVWaWV3JyksIHZp
ZXcudmlld05hbWUsIHZpZXcpOwotICAgICAgfQotICAgIH0gZWxzZSBpZiAoJ3N0cmluZycgPT09
IHR5cGVvZiB2aWV3KSB7Ci0gICAgICB2YXIgZnVsbE5hbWUgPSAndmlldzonICsgdmlldzsKLSAg
ICAgIHZhciBWaWV3ID0gdGhpcy5jb250YWluZXIubG9va3VwRmFjdG9yeShmdWxsTmFtZSk7Ci0K
LSAgICAgIEVtYmVyLmFzc2VydCgiQ291bGQgbm90IGZpbmQgdmlldzogJyIgKyBmdWxsTmFtZSAr
ICInIiwgISFWaWV3KTsKLQotICAgICAgYXR0cnMudGVtcGxhdGVEYXRhID0gZ2V0KHRoaXMsICd0
ZW1wbGF0ZURhdGEnKTsKLSAgICAgIHZpZXcgPSBWaWV3LmNyZWF0ZShhdHRycyk7Ci0gICAgfSBl
bHNlIHsKLSAgICAgIEVtYmVyLmFzc2VydCgnWW91IG11c3QgcGFzcyBpbnN0YW5jZSBvciBzdWJj
bGFzcyBvZiBWaWV3Jywgdmlldy5pc1ZpZXcpOwotICAgICAgYXR0cnMuY29udGFpbmVyID0gdGhp
cy5jb250YWluZXI7Ci0KLSAgICAgIGlmICghZ2V0KHZpZXcsICd0ZW1wbGF0ZURhdGEnKSkgewot
ICAgICAgICBhdHRycy50ZW1wbGF0ZURhdGEgPSBnZXQodGhpcywgJ3RlbXBsYXRlRGF0YScpOwot
ICAgICAgfQotCi0gICAgICBFbWJlci5zZXRQcm9wZXJ0aWVzKHZpZXcsIGF0dHJzKTsKLQotICAg
IH0KLQotICAgIHJldHVybiB2aWV3OwotICB9LAotCi0gIGJlY2FtZVZpc2libGU6IEVtYmVyLkss
Ci0gIGJlY2FtZUhpZGRlbjogRW1iZXIuSywKLQotICAvKioKLSAgICBXaGVuIHRoZSB2aWV3J3Mg
YGlzVmlzaWJsZWAgcHJvcGVydHkgY2hhbmdlcywgdG9nZ2xlIHRoZSB2aXNpYmlsaXR5Ci0gICAg
ZWxlbWVudCBvZiB0aGUgYWN0dWFsIERPTSBlbGVtZW50LgotCi0gICAgQG1ldGhvZCBfaXNWaXNp
YmxlRGlkQ2hhbmdlCi0gICAgQHByaXZhdGUKLSAgKi8KLSAgX2lzVmlzaWJsZURpZENoYW5nZTog
RW1iZXIub2JzZXJ2ZXIoJ2lzVmlzaWJsZScsIGZ1bmN0aW9uKCkgewotICAgIHZhciAkZWwgPSB0
aGlzLiQoKTsKLSAgICBpZiAoISRlbCkgeyByZXR1cm47IH0KLQotICAgIHZhciBpc1Zpc2libGUg
PSBnZXQodGhpcywgJ2lzVmlzaWJsZScpOwotCi0gICAgJGVsLnRvZ2dsZShpc1Zpc2libGUpOwot
Ci0gICAgaWYgKHRoaXMuX2lzQW5jZXN0b3JIaWRkZW4oKSkgeyByZXR1cm47IH0KLQotICAgIGlm
IChpc1Zpc2libGUpIHsKLSAgICAgIHRoaXMuX25vdGlmeUJlY2FtZVZpc2libGUoKTsKLSAgICB9
IGVsc2UgewotICAgICAgdGhpcy5fbm90aWZ5QmVjYW1lSGlkZGVuKCk7Ci0gICAgfQotICB9KSwK
LQotICBfbm90aWZ5QmVjYW1lVmlzaWJsZTogZnVuY3Rpb24oKSB7Ci0gICAgdGhpcy50cmlnZ2Vy
KCdiZWNhbWVWaXNpYmxlJyk7Ci0KLSAgICB0aGlzLmZvckVhY2hDaGlsZFZpZXcoZnVuY3Rpb24o
dmlldykgewotICAgICAgdmFyIGlzVmlzaWJsZSA9IGdldCh2aWV3LCAnaXNWaXNpYmxlJyk7Ci0K
LSAgICAgIGlmIChpc1Zpc2libGUgfHwgaXNWaXNpYmxlID09PSBudWxsKSB7Ci0gICAgICAgIHZp
ZXcuX25vdGlmeUJlY2FtZVZpc2libGUoKTsKLSAgICAgIH0KLSAgICB9KTsKLSAgfSwKLQotICBf
bm90aWZ5QmVjYW1lSGlkZGVuOiBmdW5jdGlvbigpIHsKLSAgICB0aGlzLnRyaWdnZXIoJ2JlY2Ft
ZUhpZGRlbicpOwotICAgIHRoaXMuZm9yRWFjaENoaWxkVmlldyhmdW5jdGlvbih2aWV3KSB7Ci0g
ICAgICB2YXIgaXNWaXNpYmxlID0gZ2V0KHZpZXcsICdpc1Zpc2libGUnKTsKLQotICAgICAgaWYg
KGlzVmlzaWJsZSB8fCBpc1Zpc2libGUgPT09IG51bGwpIHsKLSAgICAgICAgdmlldy5fbm90aWZ5
QmVjYW1lSGlkZGVuKCk7Ci0gICAgICB9Ci0gICAgfSk7Ci0gIH0sCi0KLSAgX2lzQW5jZXN0b3JI
aWRkZW46IGZ1bmN0aW9uKCkgewotICAgIHZhciBwYXJlbnQgPSBnZXQodGhpcywgJ3BhcmVudFZp
ZXcnKTsKLQotICAgIHdoaWxlIChwYXJlbnQpIHsKLSAgICAgIGlmIChnZXQocGFyZW50LCAnaXNW
aXNpYmxlJykgPT09IGZhbHNlKSB7IHJldHVybiB0cnVlOyB9Ci0KLSAgICAgIHBhcmVudCA9IGdl
dChwYXJlbnQsICdwYXJlbnRWaWV3Jyk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwotICB9
LAotCi0gIGNsZWFyQnVmZmVyOiBmdW5jdGlvbigpIHsKLSAgICB0aGlzLmludm9rZVJlY3Vyc2l2
ZWx5KGZ1bmN0aW9uKHZpZXcpIHsKLSAgICAgIHZpZXcuYnVmZmVyID0gbnVsbDsKLSAgICB9KTsK
LSAgfSwKLQotICB0cmFuc2l0aW9uVG86IGZ1bmN0aW9uKHN0YXRlLCBjaGlsZHJlbikgewotICAg
IHZhciBwcmlvclN0YXRlID0gdGhpcy5jdXJyZW50U3RhdGUsCi0gICAgICAgIGN1cnJlbnRTdGF0
ZSA9IHRoaXMuY3VycmVudFN0YXRlID0gdGhpcy5zdGF0ZXNbc3RhdGVdOwotICAgIHRoaXMuc3Rh
dGUgPSBzdGF0ZTsKLQotICAgIGlmIChwcmlvclN0YXRlICYmIHByaW9yU3RhdGUuZXhpdCkgeyBw
cmlvclN0YXRlLmV4aXQodGhpcyk7IH0KLSAgICBpZiAoY3VycmVudFN0YXRlLmVudGVyKSB7IGN1
cnJlbnRTdGF0ZS5lbnRlcih0aGlzKTsgfQotICAgIGlmIChzdGF0ZSA9PT0gJ2luRE9NJykgeyBk
ZWxldGUgRW1iZXIubWV0YSh0aGlzKS5jYWNoZS5lbGVtZW50OyB9Ci0KLSAgICBpZiAoY2hpbGRy
ZW4gIT09IGZhbHNlKSB7Ci0gICAgICB0aGlzLmZvckVhY2hDaGlsZFZpZXcoZnVuY3Rpb24odmll
dykgewotICAgICAgICB2aWV3LnRyYW5zaXRpb25UbyhzdGF0ZSk7Ci0gICAgICB9KTsKLSAgICB9
Ci0gIH0sCi0KLSAgLy8gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLgotICAvLyBFVkVOVCBIQU5ETElORwotICAvLwotCi0gIC8qKgotICAgIEhh
bmRsZSBldmVudHMgZnJvbSBgRW1iZXIuRXZlbnREaXNwYXRjaGVyYAotCi0gICAgQG1ldGhvZCBo
YW5kbGVFdmVudAotICAgIEBwYXJhbSBldmVudE5hbWUge1N0cmluZ30KLSAgICBAcGFyYW0gZXZ0
IHtFdmVudH0KLSAgICBAcHJpdmF0ZQotICAqLwotICBoYW5kbGVFdmVudDogZnVuY3Rpb24oZXZl
bnROYW1lLCBldnQpIHsKLSAgICByZXR1cm4gdGhpcy5jdXJyZW50U3RhdGUuaGFuZGxlRXZlbnQo
dGhpcywgZXZlbnROYW1lLCBldnQpOwotICB9LAotCi0gIHJlZ2lzdGVyT2JzZXJ2ZXI6IGZ1bmN0
aW9uKHJvb3QsIHBhdGgsIHRhcmdldCwgb2JzZXJ2ZXIpIHsKLSAgICBpZiAoIW9ic2VydmVyICYm
ICdmdW5jdGlvbicgPT09IHR5cGVvZiB0YXJnZXQpIHsKLSAgICAgIG9ic2VydmVyID0gdGFyZ2V0
OwotICAgICAgdGFyZ2V0ID0gbnVsbDsKLSAgICB9Ci0KLSAgICBpZiAoIXJvb3QgfHwgdHlwZW9m
IHJvb3QgIT09ICdvYmplY3QnKSB7Ci0gICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgdmFyIHZp
ZXcgPSB0aGlzLAotICAgICAgICBzdGF0ZUNoZWNrZWRPYnNlcnZlciA9IGZ1bmN0aW9uKCkgewot
ICAgICAgICAgIHZpZXcuY3VycmVudFN0YXRlLmludm9rZU9ic2VydmVyKHRoaXMsIG9ic2VydmVy
KTsKLSAgICAgICAgfSwKLSAgICAgICAgc2NoZWR1bGVkT2JzZXJ2ZXIgPSBmdW5jdGlvbigpIHsK
LSAgICAgICAgICBFbWJlci5ydW4uc2NoZWR1bGVPbmNlKCdyZW5kZXInLCB0aGlzLCBzdGF0ZUNo
ZWNrZWRPYnNlcnZlcik7Ci0gICAgICAgIH07Ci0KLSAgICBFbWJlci5hZGRPYnNlcnZlcihyb290
LCBwYXRoLCB0YXJnZXQsIHNjaGVkdWxlZE9ic2VydmVyKTsKLQotICAgIHRoaXMub25lKCd3aWxs
Q2xlYXJSZW5kZXInLCBmdW5jdGlvbigpIHsKLSAgICAgIEVtYmVyLnJlbW92ZU9ic2VydmVyKHJv
b3QsIHBhdGgsIHRhcmdldCwgc2NoZWR1bGVkT2JzZXJ2ZXIpOwotICAgIH0pOwotICB9Ci0KLX0p
OwotCi0vKgotICBEZXNjcmliZSBob3cgdGhlIHNwZWNpZmllZCBhY3Rpb25zIHNob3VsZCBiZWhh
dmUgaW4gdGhlIHZhcmlvdXMKLSAgc3RhdGVzIHRoYXQgYSB2aWV3IGNhbiBleGlzdCBpbi4gUG9z
c2libGUgc3RhdGVzOgotCi0gICogcHJlUmVuZGVyOiB3aGVuIGEgdmlldyBpcyBmaXJzdCBpbnN0
YW50aWF0ZWQsIGFuZCBhZnRlciBpdHMKLSAgICBlbGVtZW50IHdhcyBkZXN0cm95ZWQsIGl0IGlz
IGluIHRoZSBwcmVSZW5kZXIgc3RhdGUKLSAgKiBpbkJ1ZmZlcjogb25jZSBhIHZpZXcgaGFzIGJl
ZW4gcmVuZGVyZWQsIGJ1dCBiZWZvcmUgaXQgaGFzCi0gICAgYmVlbiBpbnNlcnRlZCBpbnRvIHRo
ZSBET00sIGl0IGlzIGluIHRoZSBpbkJ1ZmZlciBzdGF0ZQotICAqIGluRE9NOiBvbmNlIGEgdmll
dyBoYXMgYmVlbiBpbnNlcnRlZCBpbnRvIHRoZSBET00gaXQgaXMgaW4KLSAgICB0aGUgaW5ET00g
c3RhdGUuIEEgdmlldyBzcGVuZHMgdGhlIHZhc3QgbWFqb3JpdHkgb2YgaXRzCi0gICAgZXhpc3Rl
bmNlIGluIHRoaXMgc3RhdGUuCi0gICogZGVzdHJveWVkOiBvbmNlIGEgdmlldyBoYXMgYmVlbiBk
ZXN0cm95ZWQgKHVzaW5nIHRoZSBkZXN0cm95Ci0gICAgbWV0aG9kKSwgaXQgaXMgaW4gdGhpcyBz
dGF0ZS4gTm8gZnVydGhlciBhY3Rpb25zIGNhbiBiZSBpbnZva2VkCi0gICAgb24gYSBkZXN0cm95
ZWQgdmlldy4KLSovCi0KLSAgLy8gaW4gdGhlIGRlc3Ryb3llZCBzdGF0ZSwgZXZlcnl0aGluZyBp
cyBpbGxlZ2FsCi0KLSAgLy8gYmVmb3JlIHJlbmRlcmluZyBoYXMgYmVndW4sIGFsbCBsZWdhbCBt
YW5pcHVsYXRpb25zIGFyZSBub29wcy4KLQotICAvLyBpbnNpZGUgdGhlIGJ1ZmZlciwgbGVnYWwg
bWFuaXB1bGF0aW9ucyBhcmUgZG9uZSBvbiB0aGUgYnVmZmVyCi0KLSAgLy8gb25jZSB0aGUgdmll
dyBoYXMgYmVlbiBpbnNlcnRlZCBpbnRvIHRoZSBET00sIGxlZ2FsIG1hbmlwdWxhdGlvbnMKLSAg
Ly8gYXJlIGRvbmUgb24gdGhlIERPTSBlbGVtZW50LgotCi1mdW5jdGlvbiBub3RpZnlNdXRhdGlv
bkxpc3RlbmVycygpIHsKLSAgRW1iZXIucnVuLm9uY2UoRW1iZXIuVmlldywgJ25vdGlmeU11dGF0
aW9uTGlzdGVuZXJzJyk7Ci19Ci0KLXZhciBET01NYW5hZ2VyID0gewotICBwcmVwZW5kOiBmdW5j
dGlvbih2aWV3LCBodG1sKSB7Ci0gICAgdmlldy4kKCkucHJlcGVuZChodG1sKTsKLSAgICBub3Rp
ZnlNdXRhdGlvbkxpc3RlbmVycygpOwotICB9LAotCi0gIGFmdGVyOiBmdW5jdGlvbih2aWV3LCBo
dG1sKSB7Ci0gICAgdmlldy4kKCkuYWZ0ZXIoaHRtbCk7Ci0gICAgbm90aWZ5TXV0YXRpb25MaXN0
ZW5lcnMoKTsKLSAgfSwKLQotICBodG1sOiBmdW5jdGlvbih2aWV3LCBodG1sKSB7Ci0gICAgdmll
dy4kKCkuaHRtbChodG1sKTsKLSAgICBub3RpZnlNdXRhdGlvbkxpc3RlbmVycygpOwotICB9LAot
Ci0gIHJlcGxhY2U6IGZ1bmN0aW9uKHZpZXcpIHsKLSAgICB2YXIgZWxlbWVudCA9IGdldCh2aWV3
LCAnZWxlbWVudCcpOwotCi0gICAgc2V0KHZpZXcsICdlbGVtZW50JywgbnVsbCk7Ci0KLSAgICB2
aWV3Ll9pbnNlcnRFbGVtZW50TGF0ZXIoZnVuY3Rpb24oKSB7Ci0gICAgICBFbWJlci4kKGVsZW1l
bnQpLnJlcGxhY2VXaXRoKGdldCh2aWV3LCAnZWxlbWVudCcpKTsKLSAgICAgIG5vdGlmeU11dGF0
aW9uTGlzdGVuZXJzKCk7Ci0gICAgfSk7Ci0gIH0sCi0KLSAgcmVtb3ZlOiBmdW5jdGlvbih2aWV3
KSB7Ci0gICAgdmlldy4kKCkucmVtb3ZlKCk7Ci0gICAgbm90aWZ5TXV0YXRpb25MaXN0ZW5lcnMo
KTsKLSAgfSwKLQotICBlbXB0eTogZnVuY3Rpb24odmlldykgewotICAgIHZpZXcuJCgpLmVtcHR5
KCk7Ci0gICAgbm90aWZ5TXV0YXRpb25MaXN0ZW5lcnMoKTsKLSAgfQotfTsKLQotRW1iZXIuVmll
dy5yZW9wZW4oewotICBkb21NYW5hZ2VyOiBET01NYW5hZ2VyCi19KTsKLQotRW1iZXIuVmlldy5y
ZW9wZW5DbGFzcyh7Ci0KLSAgLyoqCi0gICAgUGFyc2UgYSBwYXRoIGFuZCByZXR1cm4gYW4gb2Jq
ZWN0IHdoaWNoIGhvbGRzIHRoZSBwYXJzZWQgcHJvcGVydGllcy4KLQotICAgIEZvciBleGFtcGxl
IGEgcGF0aCBsaWtlICJjb250ZW50LmlzRW5hYmxlZDplbmFibGVkOmRpc2FibGVkIiB3aWxsIHJl
dHVybiB0aGUKLSAgICBmb2xsb3dpbmcgb2JqZWN0OgotCi0gICAgYGBgamF2YXNjcmlwdAotICAg
IHsKLSAgICAgIHBhdGg6ICJjb250ZW50LmlzRW5hYmxlZCIsCi0gICAgICBjbGFzc05hbWU6ICJl
bmFibGVkIiwKLSAgICAgIGZhbHN5Q2xhc3NOYW1lOiAiZGlzYWJsZWQiLAotICAgICAgY2xhc3NO
YW1lczogIjplbmFibGVkOmRpc2FibGVkIgotICAgIH0KLSAgICBgYGAKLQotICAgIEBtZXRob2Qg
X3BhcnNlUHJvcGVydHlQYXRoCi0gICAgQHN0YXRpYwotICAgIEBwcml2YXRlCi0gICovCi0gIF9w
YXJzZVByb3BlcnR5UGF0aDogZnVuY3Rpb24ocGF0aCkgewotICAgIHZhciBzcGxpdCA9IHBhdGgu
c3BsaXQoJzonKSwKLSAgICAgICAgcHJvcGVydHlQYXRoID0gc3BsaXRbMF0sCi0gICAgICAgIGNs
YXNzTmFtZXMgPSAiIiwKLSAgICAgICAgY2xhc3NOYW1lLAotICAgICAgICBmYWxzeUNsYXNzTmFt
ZTsKLQotICAgIC8vIGNoZWNrIGlmIHRoZSBwcm9wZXJ0eSBpcyBkZWZpbmVkIGFzIHByb3A6Y2xh
c3Mgb3IgcHJvcDp0cnVlQ2xhc3M6ZmFsc2VDbGFzcwotICAgIGlmIChzcGxpdC5sZW5ndGggPiAx
KSB7Ci0gICAgICBjbGFzc05hbWUgPSBzcGxpdFsxXTsKLSAgICAgIGlmIChzcGxpdC5sZW5ndGgg
PT09IDMpIHsgZmFsc3lDbGFzc05hbWUgPSBzcGxpdFsyXTsgfQotCi0gICAgICBjbGFzc05hbWVz
ID0gJzonICsgY2xhc3NOYW1lOwotICAgICAgaWYgKGZhbHN5Q2xhc3NOYW1lKSB7IGNsYXNzTmFt
ZXMgKz0gIjoiICsgZmFsc3lDbGFzc05hbWU7IH0KLSAgICB9Ci0KLSAgICByZXR1cm4gewotICAg
ICAgcGF0aDogcHJvcGVydHlQYXRoLAotICAgICAgY2xhc3NOYW1lczogY2xhc3NOYW1lcywKLSAg
ICAgIGNsYXNzTmFtZTogKGNsYXNzTmFtZSA9PT0gJycpID8gdW5kZWZpbmVkIDogY2xhc3NOYW1l
LAotICAgICAgZmFsc3lDbGFzc05hbWU6IGZhbHN5Q2xhc3NOYW1lCi0gICAgfTsKLSAgfSwKLQot
ICAvKioKLSAgICBHZXQgdGhlIGNsYXNzIG5hbWUgZm9yIGEgZ2l2ZW4gdmFsdWUsIGJhc2VkIG9u
IHRoZSBwYXRoLCBvcHRpb25hbAotICAgIGBjbGFzc05hbWVgIGFuZCBvcHRpb25hbCBgZmFsc3lD
bGFzc05hbWVgLgotCi0gICAgLSBpZiBhIGBjbGFzc05hbWVgIG9yIGBmYWxzeUNsYXNzTmFtZWAg
aGFzIGJlZW4gc3BlY2lmaWVkOgotICAgICAgLSBpZiB0aGUgdmFsdWUgaXMgdHJ1dGh5IGFuZCBg
Y2xhc3NOYW1lYCBoYXMgYmVlbiBzcGVjaWZpZWQsCi0gICAgICAgIGBjbGFzc05hbWVgIGlzIHJl
dHVybmVkCi0gICAgICAtIGlmIHRoZSB2YWx1ZSBpcyBmYWxzeSBhbmQgYGZhbHN5Q2xhc3NOYW1l
YCBoYXMgYmVlbiBzcGVjaWZpZWQsCi0gICAgICAgIGBmYWxzeUNsYXNzTmFtZWAgaXMgcmV0dXJu
ZWQKLSAgICAgIC0gb3RoZXJ3aXNlIGBudWxsYCBpcyByZXR1cm5lZAotICAgIC0gaWYgdGhlIHZh
bHVlIGlzIGB0cnVlYCwgdGhlIGRhc2hlcml6ZWQgbGFzdCBwYXJ0IG9mIHRoZSBzdXBwbGllZCBw
YXRoCi0gICAgICBpcyByZXR1cm5lZAotICAgIC0gaWYgdGhlIHZhbHVlIGlzIG5vdCBgZmFsc2Vg
LCBgdW5kZWZpbmVkYCBvciBgbnVsbGAsIHRoZSBgdmFsdWVgCi0gICAgICBpcyByZXR1cm5lZAot
ICAgIC0gaWYgbm9uZSBvZiB0aGUgYWJvdmUgcnVsZXMgYXBwbHksIGBudWxsYCBpcyByZXR1cm5l
ZAotCi0gICAgQG1ldGhvZCBfY2xhc3NTdHJpbmdGb3JWYWx1ZQotICAgIEBwYXJhbSBwYXRoCi0g
ICAgQHBhcmFtIHZhbAotICAgIEBwYXJhbSBjbGFzc05hbWUKLSAgICBAcGFyYW0gZmFsc3lDbGFz
c05hbWUKLSAgICBAc3RhdGljCi0gICAgQHByaXZhdGUKLSAgKi8KLSAgX2NsYXNzU3RyaW5nRm9y
VmFsdWU6IGZ1bmN0aW9uKHBhdGgsIHZhbCwgY2xhc3NOYW1lLCBmYWxzeUNsYXNzTmFtZSkgewot
ICAgIC8vIFdoZW4gdXNpbmcgdGhlIGNvbG9uIHN5bnRheCwgZXZhbHVhdGUgdGhlIHRydXRoaW5l
c3Mgb3IgZmFsc2luZXNzCi0gICAgLy8gb2YgdGhlIHZhbHVlIHRvIGRldGVybWluZSB3aGljaCBj
bGFzc05hbWUgdG8gcmV0dXJuCi0gICAgaWYgKGNsYXNzTmFtZSB8fCBmYWxzeUNsYXNzTmFtZSkg
ewotICAgICAgaWYgKGNsYXNzTmFtZSAmJiAhIXZhbCkgewotICAgICAgICByZXR1cm4gY2xhc3NO
YW1lOwotCi0gICAgICB9IGVsc2UgaWYgKGZhbHN5Q2xhc3NOYW1lICYmICF2YWwpIHsKLSAgICAg
ICAgcmV0dXJuIGZhbHN5Q2xhc3NOYW1lOwotCi0gICAgICB9IGVsc2UgewotICAgICAgICByZXR1
cm4gbnVsbDsKLSAgICAgIH0KLQotICAgIC8vIElmIHZhbHVlIGlzIGEgQm9vbGVhbiBhbmQgdHJ1
ZSwgcmV0dXJuIHRoZSBkYXNoZXJpemVkIHByb3BlcnR5Ci0gICAgLy8gbmFtZS4KLSAgICB9IGVs
c2UgaWYgKHZhbCA9PT0gdHJ1ZSkgewotICAgICAgLy8gTm9ybWFsaXplIHByb3BlcnR5IHBhdGgg
dG8gYmUgc3VpdGFibGUgZm9yIHVzZQotICAgICAgLy8gYXMgYSBjbGFzcyBuYW1lLiBGb3IgZXhh
cGxlLCBjb250ZW50LmZvby5iYXJCYXoKLSAgICAgIC8vIGJlY29tZXMgYmFyLWJhei4KLSAgICAg
IHZhciBwYXJ0cyA9IHBhdGguc3BsaXQoJy4nKTsKLSAgICAgIHJldHVybiBFbWJlci5TdHJpbmcu
ZGFzaGVyaXplKHBhcnRzW3BhcnRzLmxlbmd0aC0xXSk7Ci0KLSAgICAvLyBJZiB0aGUgdmFsdWUg
aXMgbm90IGZhbHNlLCB1bmRlZmluZWQsIG9yIG51bGwsIHJldHVybiB0aGUgY3VycmVudAotICAg
IC8vIHZhbHVlIG9mIHRoZSBwcm9wZXJ0eS4KLSAgICB9IGVsc2UgaWYgKHZhbCAhPT0gZmFsc2Ug
JiYgdmFsICE9IG51bGwpIHsKLSAgICAgIHJldHVybiB2YWw7Ci0KLSAgICAvLyBOb3RoaW5nIHRv
IGRpc3BsYXkuIFJldHVybiBudWxsIHNvIHRoYXQgdGhlIG9sZCBjbGFzcyBpcyByZW1vdmVkCi0g
ICAgLy8gYnV0IG5vIG5ldyBjbGFzcyBpcyBhZGRlZC4KLSAgICB9IGVsc2UgewotICAgICAgcmV0
dXJuIG51bGw7Ci0gICAgfQotICB9Ci19KTsKLQotdmFyIG11dGF0aW9uID0gRW1iZXIuT2JqZWN0
LmV4dGVuZChFbWJlci5FdmVudGVkKS5jcmVhdGUoKTsKLQotRW1iZXIuVmlldy5hZGRNdXRhdGlv
bkxpc3RlbmVyID0gZnVuY3Rpb24oY2FsbGJhY2spIHsKLSAgbXV0YXRpb24ub24oJ2NoYW5nZScs
IGNhbGxiYWNrKTsKLX07Ci0KLUVtYmVyLlZpZXcucmVtb3ZlTXV0YXRpb25MaXN0ZW5lciA9IGZ1
bmN0aW9uKGNhbGxiYWNrKSB7Ci0gIG11dGF0aW9uLm9mZignY2hhbmdlJywgY2FsbGJhY2spOwot
fTsKLQotRW1iZXIuVmlldy5ub3RpZnlNdXRhdGlvbkxpc3RlbmVycyA9IGZ1bmN0aW9uKCkgewot
ICBtdXRhdGlvbi50cmlnZ2VyKCdjaGFuZ2UnKTsKLX07Ci0KLS8qKgotICBHbG9iYWwgdmlld3Mg
aGFzaAotCi0gIEBwcm9wZXJ0eSB2aWV3cwotICBAc3RhdGljCi0gIEB0eXBlIEhhc2gKLSovCi1F
bWJlci5WaWV3LnZpZXdzID0ge307Ci0KLS8vIElmIHNvbWVvbmUgb3ZlcnJpZGVzIHRoZSBjaGls
ZCB2aWV3cyBjb21wdXRlZCBwcm9wZXJ0eSB3aGVuCi0vLyBkZWZpbmluZyB0aGVpciBjbGFzcywg
d2Ugd2FudCB0byBiZSBhYmxlIHRvIHByb2Nlc3MgdGhlIHVzZXIncwotLy8gc3VwcGxpZWQgY2hp
bGRWaWV3cyBhbmQgdGhlbiByZXN0b3JlIHRoZSBvcmlnaW5hbCBjb21wdXRlZCBwcm9wZXJ0eQot
Ly8gYXQgdmlldyBpbml0aWFsaXphdGlvbiB0aW1lLiBUaGlzIGhhcHBlbnMgaW4gRW1iZXIuQ29u
dGFpbmVyVmlldydzIGluaXQKLS8vIG1ldGhvZC4KLUVtYmVyLlZpZXcuY2hpbGRWaWV3c1Byb3Bl
cnR5ID0gY2hpbGRWaWV3c1Byb3BlcnR5OwotCi1FbWJlci5WaWV3LmFwcGx5QXR0cmlidXRlQmlu
ZGluZ3MgPSBmdW5jdGlvbihlbGVtLCBuYW1lLCB2YWx1ZSkgewotICB2YXIgdHlwZSA9IEVtYmVy
LnR5cGVPZih2YWx1ZSk7Ci0KLSAgLy8gaWYgdGhpcyBjaGFuZ2VzLCBhbHNvIGNoYW5nZSB0aGUg
bG9naWMgaW4gZW1iZXItaGFuZGxlYmFycy9saWIvaGVscGVycy9iaW5kaW5nLmpzCi0gIGlmIChu
YW1lICE9PSAndmFsdWUnICYmICh0eXBlID09PSAnc3RyaW5nJyB8fCAodHlwZSA9PT0gJ251bWJl
cicgJiYgIWlzTmFOKHZhbHVlKSkpKSB7Ci0gICAgaWYgKHZhbHVlICE9PSBlbGVtLmF0dHIobmFt
ZSkpIHsKLSAgICAgIGVsZW0uYXR0cihuYW1lLCB2YWx1ZSk7Ci0gICAgfQotICB9IGVsc2UgaWYg
KG5hbWUgPT09ICd2YWx1ZScgfHwgdHlwZSA9PT0gJ2Jvb2xlYW4nKSB7Ci0gICAgLy8gV2UgY2Fu
J3Qgc2V0IHByb3BlcnRpZXMgdG8gdW5kZWZpbmVkIG9yIG51bGwKLSAgICBpZiAoRW1iZXIuaXNO
b25lKHZhbHVlKSkgeyB2YWx1ZSA9ICcnOyB9Ci0KLSAgICBpZiAoIXZhbHVlKSB7Ci0gICAgICBl
bGVtLnJlbW92ZUF0dHIobmFtZSk7Ci0gICAgfQotCi0gICAgaWYgKHZhbHVlICE9PSBlbGVtLnBy
b3AobmFtZSkpIHsKLSAgICAgIC8vIHZhbHVlIGFuZCBib29sZWFucyBzaG91bGQgYWx3YXlzIGJl
IHByb3BlcnRpZXMKLSAgICAgIGVsZW0ucHJvcChuYW1lLCB2YWx1ZSk7Ci0gICAgfQotICB9IGVs
c2UgaWYgKCF2YWx1ZSkgewotICAgIGVsZW0ucmVtb3ZlQXR0cihuYW1lKTsKLSAgfQotfTsKLQot
RW1iZXIuVmlldy5zdGF0ZXMgPSBzdGF0ZXM7Ci0KLX0pKCk7Ci0KLQotCi0oZnVuY3Rpb24oKSB7
Ci0vKioKLUBtb2R1bGUgZW1iZXIKLUBzdWJtb2R1bGUgZW1iZXItdmlld3MKLSovCi0KLXZhciBn
ZXQgPSBFbWJlci5nZXQsIHNldCA9IEVtYmVyLnNldDsKLQotRW1iZXIuVmlldy5zdGF0ZXMuX2Rl
ZmF1bHQgPSB7Ci0gIC8vIGFwcGVuZENoaWxkIGlzIG9ubHkgbGVnYWwgd2hpbGUgcmVuZGVyaW5n
IHRoZSBidWZmZXIuCi0gIGFwcGVuZENoaWxkOiBmdW5jdGlvbigpIHsKLSAgICB0aHJvdyAiWW91
IGNhbid0IHVzZSBhcHBlbmRDaGlsZCBvdXRzaWRlIG9mIHRoZSByZW5kZXJpbmcgcHJvY2VzcyI7
Ci0gIH0sCi0KLSAgJDogZnVuY3Rpb24oKSB7Ci0gICAgcmV0dXJuIHVuZGVmaW5lZDsKLSAgfSwK
LQotICBnZXRFbGVtZW50OiBmdW5jdGlvbigpIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfSwKLQot
ICAvLyBIYW5kbGUgZXZlbnRzIGZyb20gYEVtYmVyLkV2ZW50RGlzcGF0Y2hlcmAKLSAgaGFuZGxl
RXZlbnQ6IGZ1bmN0aW9uKCkgewotICAgIHJldHVybiB0cnVlOyAvLyBjb250aW51ZSBldmVudCBw
cm9wYWdhdGlvbgotICB9LAotCi0gIGRlc3Ryb3lFbGVtZW50OiBmdW5jdGlvbih2aWV3KSB7Ci0g
ICAgc2V0KHZpZXcsICdlbGVtZW50JywgbnVsbCk7Ci0gICAgaWYgKHZpZXcuX3NjaGVkdWxlZElu
c2VydCkgewotICAgICAgRW1iZXIucnVuLmNhbmNlbCh2aWV3Ll9zY2hlZHVsZWRJbnNlcnQpOwot
ICAgICAgdmlldy5fc2NoZWR1bGVkSW5zZXJ0ID0gbnVsbDsKLSAgICB9Ci0gICAgcmV0dXJuIHZp
ZXc7Ci0gIH0sCi0KLSAgcmVuZGVyVG9CdWZmZXJJZk5lZWRlZDogZnVuY3Rpb24gKCkgewotICAg
IHJldHVybiBmYWxzZTsKLSAgfSwKLQotICByZXJlbmRlcjogRW1iZXIuSywKLSAgaW52b2tlT2Jz
ZXJ2ZXI6IEVtYmVyLksKLX07Ci0KLX0pKCk7Ci0KLQotCi0oZnVuY3Rpb24oKSB7Ci0vKioKLUBt
b2R1bGUgZW1iZXIKLUBzdWJtb2R1bGUgZW1iZXItdmlld3MKLSovCi0KLXZhciBwcmVSZW5kZXIg
PSBFbWJlci5WaWV3LnN0YXRlcy5wcmVSZW5kZXIgPSBFbWJlci5jcmVhdGUoRW1iZXIuVmlldy5z
dGF0ZXMuX2RlZmF1bHQpOwotCi1FbWJlci5tZXJnZShwcmVSZW5kZXIsIHsKLSAgLy8gYSB2aWV3
IGxlYXZlcyB0aGUgcHJlUmVuZGVyIHN0YXRlIG9uY2UgaXRzIGVsZW1lbnQgaGFzIGJlZW4KLSAg
Ly8gY3JlYXRlZCAoY3JlYXRlRWxlbWVudCkuCi0gIGluc2VydEVsZW1lbnQ6IGZ1bmN0aW9uKHZp
ZXcsIGZuKSB7Ci0gICAgdmlldy5jcmVhdGVFbGVtZW50KCk7Ci0gICAgdmFyIHZpZXdDb2xsZWN0
aW9uID0gdmlldy52aWV3SGllcmFyY2h5Q29sbGVjdGlvbigpOwotCi0gICAgdmlld0NvbGxlY3Rp
b24udHJpZ2dlcignd2lsbEluc2VydEVsZW1lbnQnKTsKLQotICAgIGZuLmNhbGwodmlldyk7Ci0K
LSAgICAvLyBXZSB0cmFuc2l0aW9uIHRvIGBpbkRPTWAgaWYgdGhlIGVsZW1lbnQgZXhpc3RzIGlu
IHRoZSBET00KLSAgICB2YXIgZWxlbWVudCA9IHZpZXcuZ2V0KCdlbGVtZW50Jyk7Ci0gICAgd2hp
bGUgKGVsZW1lbnQgPSBlbGVtZW50LnBhcmVudE5vZGUpIHsKLSAgICAgIGlmIChlbGVtZW50ID09
PSBkb2N1bWVudCkgewotICAgICAgICB2aWV3Q29sbGVjdGlvbi50cmFuc2l0aW9uVG8oJ2luRE9N
JywgZmFsc2UpOwotICAgICAgICB2aWV3Q29sbGVjdGlvbi50cmlnZ2VyKCdkaWRJbnNlcnRFbGVt
ZW50Jyk7Ci0gICAgICB9Ci0gICAgfQotCi0gIH0sCi0KLSAgcmVuZGVyVG9CdWZmZXJJZk5lZWRl
ZDogZnVuY3Rpb24odmlldywgYnVmZmVyKSB7Ci0gICAgdmlldy5yZW5kZXJUb0J1ZmZlcihidWZm
ZXIpOwotICAgIHJldHVybiB0cnVlOwotICB9LAotCi0gIGVtcHR5OiBFbWJlci5LLAotCi0gIHNl
dEVsZW1lbnQ6IGZ1bmN0aW9uKHZpZXcsIHZhbHVlKSB7Ci0gICAgaWYgKHZhbHVlICE9PSBudWxs
KSB7Ci0gICAgICB2aWV3LnRyYW5zaXRpb25UbygnaGFzRWxlbWVudCcpOwotICAgIH0KLSAgICBy
ZXR1cm4gdmFsdWU7Ci0gIH0KLX0pOwotCi19KSgpOwotCi0KLQotKGZ1bmN0aW9uKCkgewotLyoq
Ci1AbW9kdWxlIGVtYmVyCi1Ac3VibW9kdWxlIGVtYmVyLXZpZXdzCi0qLwotCi12YXIgZ2V0ID0g
RW1iZXIuZ2V0LCBzZXQgPSBFbWJlci5zZXQ7Ci0KLXZhciBpbkJ1ZmZlciA9IEVtYmVyLlZpZXcu
c3RhdGVzLmluQnVmZmVyID0gRW1iZXIuY3JlYXRlKEVtYmVyLlZpZXcuc3RhdGVzLl9kZWZhdWx0
KTsKLQotRW1iZXIubWVyZ2UoaW5CdWZmZXIsIHsKLSAgJDogZnVuY3Rpb24odmlldywgc2VsKSB7
Ci0gICAgLy8gaWYgd2UgZG9uJ3QgaGF2ZSBhbiBlbGVtZW50IHlldCwgc29tZW9uZSBjYWxsaW5n
IHRoaXMuJCgpIGlzCi0gICAgLy8gdHJ5aW5nIHRvIHVwZGF0ZSBhbiBlbGVtZW50IHRoYXQgaXNu
J3QgaW4gdGhlIERPTS4gSW5zdGVhZCwKLSAgICAvLyByZXJlbmRlciB0aGUgdmlldyB0byBhbGxv
dyB0aGUgcmVuZGVyIG1ldGhvZCB0byByZWZsZWN0IHRoZQotICAgIC8vIGNoYW5nZXMuCi0gICAg
dmlldy5yZXJlbmRlcigpOwotICAgIHJldHVybiBFbWJlci4kKCk7Ci0gIH0sCi0KLSAgLy8gd2hl
biBhIHZpZXcgaXMgcmVuZGVyZWQgaW4gYSBidWZmZXIsIHJlcmVuZGVyaW5nIGl0IHNpbXBseQot
ICAvLyByZXBsYWNlcyB0aGUgZXhpc3RpbmcgYnVmZmVyIHdpdGggYSBuZXcgb25lCi0gIHJlcmVu
ZGVyOiBmdW5jdGlvbih2aWV3KSB7Ci0gICAgdGhyb3cgbmV3IEVtYmVyLkVycm9yKCJTb21ldGhp
bmcgeW91IGRpZCBjYXVzZWQgYSB2aWV3IHRvIHJlLXJlbmRlciBhZnRlciBpdCByZW5kZXJlZCBi
dXQgYmVmb3JlIGl0IHdhcyBpbnNlcnRlZCBpbnRvIHRoZSBET00uIik7Ci0gIH0sCi0KLSAgLy8g
d2hlbiBhIHZpZXcgaXMgcmVuZGVyZWQgaW4gYSBidWZmZXIsIGFwcGVuZGluZyBhIGNoaWxkCi0g
IC8vIHZpZXcgd2lsbCByZW5kZXIgdGhhdCB2aWV3IGFuZCBhcHBlbmQgdGhlIHJlc3VsdGluZwot
ICAvLyBidWZmZXIgaW50byBpdHMgYnVmZmVyLgotICBhcHBlbmRDaGlsZDogZnVuY3Rpb24odmll
dywgY2hpbGRWaWV3LCBvcHRpb25zKSB7Ci0gICAgdmFyIGJ1ZmZlciA9IHZpZXcuYnVmZmVyLCBf
Y2hpbGRWaWV3cyA9IHZpZXcuX2NoaWxkVmlld3M7Ci0KLSAgICBjaGlsZFZpZXcgPSB2aWV3LmNy
ZWF0ZUNoaWxkVmlldyhjaGlsZFZpZXcsIG9wdGlvbnMpOwotICAgIGlmICghX2NoaWxkVmlld3Mu
bGVuZ3RoKSB7IF9jaGlsZFZpZXdzID0gdmlldy5fY2hpbGRWaWV3cyA9IF9jaGlsZFZpZXdzLnNs
aWNlKCk7IH0KLSAgICBfY2hpbGRWaWV3cy5wdXNoKGNoaWxkVmlldyk7Ci0KLSAgICBjaGlsZFZp
ZXcucmVuZGVyVG9CdWZmZXIoYnVmZmVyKTsKLQotICAgIHZpZXcucHJvcGVydHlEaWRDaGFuZ2Uo
J2NoaWxkVmlld3MnKTsKLQotICAgIHJldHVybiBjaGlsZFZpZXc7Ci0gIH0sCi0KLSAgLy8gd2hl
biBhIHZpZXcgaXMgcmVuZGVyZWQgaW4gYSBidWZmZXIsIGRlc3Ryb3lpbmcgdGhlCi0gIC8vIGVs
ZW1lbnQgd2lsbCBzaW1wbHkgZGVzdHJveSB0aGUgYnVmZmVyIGFuZCBwdXQgdGhlCi0gIC8vIHN0
YXRlIGJhY2sgaW50byB0aGUgcHJlUmVuZGVyIHN0YXRlLgotICBkZXN0cm95RWxlbWVudDogZnVu
Y3Rpb24odmlldykgewotICAgIHZpZXcuY2xlYXJCdWZmZXIoKTsKLSAgICB2YXIgdmlld0NvbGxl
Y3Rpb24gPSB2aWV3Ll9ub3RpZnlXaWxsRGVzdHJveUVsZW1lbnQoKTsKLSAgICB2aWV3Q29sbGVj
dGlvbi50cmFuc2l0aW9uVG8oJ3ByZVJlbmRlcicsIGZhbHNlKTsKLQotICAgIHJldHVybiB2aWV3
OwotICB9LAotCi0gIGVtcHR5OiBmdW5jdGlvbigpIHsKLSAgICBFbWJlci5hc3NlcnQoIkVtcHR5
aW5nIGEgdmlldyBpbiB0aGUgaW5CdWZmZXIgc3RhdGUgaXMgbm90IGFsbG93ZWQgYW5kICIgKwot
ICAgICAgICAgICAgICAgICAic2hvdWxkIG5vdCBoYXBwZW4gdW5kZXIgbm9ybWFsIGNpcmN1bXN0
YW5jZXMuIE1vc3QgbGlrZWx5ICIgKwotICAgICAgICAgICAgICAgICAidGhlcmUgaXMgYSBidWcg
aW4geW91ciBhcHBsaWNhdGlvbi4gVGhpcyBtYXkgYmUgZHVlIHRvICIgKwotICAgICAgICAgICAg
ICAgICAiZXhjZXNzaXZlIHByb3BlcnR5IGNoYW5nZSBub3RpZmljYXRpb25zLiIpOwotICB9LAot
Ci0gIHJlbmRlclRvQnVmZmVySWZOZWVkZWQ6IGZ1bmN0aW9uICh2aWV3LCBidWZmZXIpIHsKLSAg
ICByZXR1cm4gZmFsc2U7Ci0gIH0sCi0KLSAgLy8gSXQgc2hvdWxkIGJlIGltcG9zc2libGUgZm9y
IGEgcmVuZGVyZWQgdmlldyB0byBiZSBzY2hlZHVsZWQgZm9yCi0gIC8vIGluc2VydGlvbi4KLSAg
aW5zZXJ0RWxlbWVudDogZnVuY3Rpb24oKSB7Ci0gICAgdGhyb3cgIllvdSBjYW4ndCBpbnNlcnQg
YW4gZWxlbWVudCB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gcmVuZGVyZWQiOwotICB9LAotCi0gIHNl
dEVsZW1lbnQ6IGZ1bmN0aW9uKHZpZXcsIHZhbHVlKSB7Ci0gICAgaWYgKHZhbHVlID09PSBudWxs
KSB7Ci0gICAgICB2aWV3LnRyYW5zaXRpb25UbygncHJlUmVuZGVyJyk7Ci0gICAgfSBlbHNlIHsK
LSAgICAgIHZpZXcuY2xlYXJCdWZmZXIoKTsKLSAgICAgIHZpZXcudHJhbnNpdGlvblRvKCdoYXNF
bGVtZW50Jyk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHZhbHVlOwotICB9LAotCi0gIGludm9rZU9i
c2VydmVyOiBmdW5jdGlvbih0YXJnZXQsIG9ic2VydmVyKSB7Ci0gICAgb2JzZXJ2ZXIuY2FsbCh0
YXJnZXQpOwotICB9Ci19KTsKLQotCi19KSgpOwotCi0KLQotKGZ1bmN0aW9uKCkgewotLyoqCi1A
bW9kdWxlIGVtYmVyCi1Ac3VibW9kdWxlIGVtYmVyLXZpZXdzCi0qLwotCi12YXIgZ2V0ID0gRW1i
ZXIuZ2V0LCBzZXQgPSBFbWJlci5zZXQ7Ci0KLXZhciBoYXNFbGVtZW50ID0gRW1iZXIuVmlldy5z
dGF0ZXMuaGFzRWxlbWVudCA9IEVtYmVyLmNyZWF0ZShFbWJlci5WaWV3LnN0YXRlcy5fZGVmYXVs
dCk7Ci0KLUVtYmVyLm1lcmdlKGhhc0VsZW1lbnQsIHsKLSAgJDogZnVuY3Rpb24odmlldywgc2Vs
KSB7Ci0gICAgdmFyIGVsZW0gPSBnZXQodmlldywgJ2VsZW1lbnQnKTsKLSAgICByZXR1cm4gc2Vs
ID8gRW1iZXIuJChzZWwsIGVsZW0pIDogRW1iZXIuJChlbGVtKTsKLSAgfSwKLQotICBnZXRFbGVt
ZW50OiBmdW5jdGlvbih2aWV3KSB7Ci0gICAgdmFyIHBhcmVudCA9IGdldCh2aWV3LCAncGFyZW50
VmlldycpOwotICAgIGlmIChwYXJlbnQpIHsgcGFyZW50ID0gZ2V0KHBhcmVudCwgJ2VsZW1lbnQn
KTsgfQotICAgIGlmIChwYXJlbnQpIHsgcmV0dXJuIHZpZXcuZmluZEVsZW1lbnRJblBhcmVudEVs
ZW1lbnQocGFyZW50KTsgfQotICAgIHJldHVybiBFbWJlci4kKCIjIiArIGdldCh2aWV3LCAnZWxl
bWVudElkJykpWzBdOwotICB9LAotCi0gIHNldEVsZW1lbnQ6IGZ1bmN0aW9uKHZpZXcsIHZhbHVl
KSB7Ci0gICAgaWYgKHZhbHVlID09PSBudWxsKSB7Ci0gICAgICB2aWV3LnRyYW5zaXRpb25Ubygn
cHJlUmVuZGVyJyk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIHRocm93ICJZb3UgY2Fubm90IHNldCBh
biBlbGVtZW50IHRvIGEgbm9uLW51bGwgdmFsdWUgd2hlbiB0aGUgZWxlbWVudCBpcyBhbHJlYWR5
IGluIHRoZSBET00uIjsKLSAgICB9Ci0KLSAgICByZXR1cm4gdmFsdWU7Ci0gIH0sCi0KLSAgLy8g
b25jZSB0aGUgdmlldyBoYXMgYmVlbiBpbnNlcnRlZCBpbnRvIHRoZSBET00sIHJlcmVuZGVyaW5n
IGlzCi0gIC8vIGRlZmVycmVkIHRvIGFsbG93IGJpbmRpbmdzIHRvIHN5bmNocm9uaXplLgotICBy
ZXJlbmRlcjogZnVuY3Rpb24odmlldykgewotICAgIHZpZXcudHJpZ2dlclJlY3Vyc2l2ZWx5KCd3
aWxsQ2xlYXJSZW5kZXInKTsKLQotICAgIHZpZXcuY2xlYXJSZW5kZXJlZENoaWxkcmVuKCk7Ci0K
LSAgICB2aWV3LmRvbU1hbmFnZXIucmVwbGFjZSh2aWV3KTsKLSAgICByZXR1cm4gdmlldzsKLSAg
fSwKLQotICAvLyBvbmNlIHRoZSB2aWV3IGlzIGFscmVhZHkgaW4gdGhlIERPTSwgZGVzdHJveWlu
ZyBpdCByZW1vdmVzIGl0Ci0gIC8vIGZyb20gdGhlIERPTSwgbnVrZXMgaXRzIGVsZW1lbnQsIGFu
ZCBwdXRzIGl0IGJhY2sgaW50byB0aGUKLSAgLy8gcHJlUmVuZGVyIHN0YXRlIGlmIGluRE9NLgot
Ci0gIGRlc3Ryb3lFbGVtZW50OiBmdW5jdGlvbih2aWV3KSB7Ci0gICAgdmlldy5fbm90aWZ5V2ls
bERlc3Ryb3lFbGVtZW50KCk7Ci0gICAgdmlldy5kb21NYW5hZ2VyLnJlbW92ZSh2aWV3KTsKLSAg
ICBzZXQodmlldywgJ2VsZW1lbnQnLCBudWxsKTsKLSAgICBpZiAodmlldy5fc2NoZWR1bGVkSW5z
ZXJ0KSB7Ci0gICAgICBFbWJlci5ydW4uY2FuY2VsKHZpZXcuX3NjaGVkdWxlZEluc2VydCk7Ci0g
ICAgICB2aWV3Ll9zY2hlZHVsZWRJbnNlcnQgPSBudWxsOwotICAgIH0KLSAgICByZXR1cm4gdmll
dzsKLSAgfSwKLQotICBlbXB0eTogZnVuY3Rpb24odmlldykgewotICAgIHZhciBfY2hpbGRWaWV3
cyA9IHZpZXcuX2NoaWxkVmlld3MsIGxlbiwgaWR4OwotICAgIGlmIChfY2hpbGRWaWV3cykgewot
ICAgICAgbGVuID0gX2NoaWxkVmlld3MubGVuZ3RoOwotICAgICAgZm9yIChpZHggPSAwOyBpZHgg
PCBsZW47IGlkeCsrKSB7Ci0gICAgICAgIF9jaGlsZFZpZXdzW2lkeF0uX25vdGlmeVdpbGxEZXN0
cm95RWxlbWVudCgpOwotICAgICAgfQotICAgIH0KLSAgICB2aWV3LmRvbU1hbmFnZXIuZW1wdHko
dmlldyk7Ci0gIH0sCi0KLSAgLy8gSGFuZGxlIGV2ZW50cyBmcm9tIGBFbWJlci5FdmVudERpc3Bh
dGNoZXJgCi0gIGhhbmRsZUV2ZW50OiBmdW5jdGlvbih2aWV3LCBldmVudE5hbWUsIGV2dCkgewot
ICAgIGlmICh2aWV3LmhhcyhldmVudE5hbWUpKSB7Ci0gICAgICAvLyBIYW5kbGVyIHNob3VsZCBi
ZSBhYmxlIHRvIHJlLWRpc3BhdGNoIGV2ZW50cywgc28gd2UgZG9uJ3QKLSAgICAgIC8vIHByZXZl
bnREZWZhdWx0IG9yIHN0b3BQcm9wYWdhdGlvbi4KLSAgICAgIHJldHVybiB2aWV3LnRyaWdnZXIo
ZXZlbnROYW1lLCBldnQpOwotICAgIH0gZWxzZSB7Ci0gICAgICByZXR1cm4gdHJ1ZTsgLy8gY29u
dGludWUgZXZlbnQgcHJvcGFnYXRpb24KLSAgICB9Ci0gIH0sCi0KLSAgaW52b2tlT2JzZXJ2ZXI6
IGZ1bmN0aW9uKHRhcmdldCwgb2JzZXJ2ZXIpIHsKLSAgICBvYnNlcnZlci5jYWxsKHRhcmdldCk7
Ci0gIH0KLX0pOwotCi12YXIgaW5ET00gPSBFbWJlci5WaWV3LnN0YXRlcy5pbkRPTSA9IEVtYmVy
LmNyZWF0ZShoYXNFbGVtZW50KTsKLQotRW1iZXIubWVyZ2UoaW5ET00sIHsKLSAgZW50ZXI6IGZ1
bmN0aW9uKHZpZXcpIHsKLSAgICAvLyBSZWdpc3RlciB0aGUgdmlldyBmb3IgZXZlbnQgaGFuZGxp
bmcuIFRoaXMgaGFzaCBpcyB1c2VkIGJ5Ci0gICAgLy8gRW1iZXIuRXZlbnREaXNwYXRjaGVyIHRv
IGRpc3BhdGNoIGluY29taW5nIGV2ZW50cy4KLSAgICBpZiAoIXZpZXcuaXNWaXJ0dWFsKSB7Ci0g
ICAgICBFbWJlci5hc3NlcnQoIkF0dGVtcHRlZCB0byByZWdpc3RlciBhIHZpZXcgd2l0aCBhbiBp
ZCBhbHJlYWR5IGluIHVzZTogIit2aWV3LmVsZW1lbnRJZCwgIUVtYmVyLlZpZXcudmlld3Nbdmll
dy5lbGVtZW50SWRdKTsKLSAgICAgIEVtYmVyLlZpZXcudmlld3Nbdmlldy5lbGVtZW50SWRdID0g
dmlldzsKLSAgICB9Ci0KLSAgICB2aWV3LmFkZEJlZm9yZU9ic2VydmVyKCdlbGVtZW50SWQnLCBm
dW5jdGlvbigpIHsKLSAgICAgIHRocm93IG5ldyBFbWJlci5FcnJvcigiQ2hhbmdpbmcgYSB2aWV3
J3MgZWxlbWVudElkIGFmdGVyIGNyZWF0aW9uIGlzIG5vdCBhbGxvd2VkIik7Ci0gICAgfSk7Ci0g
IH0sCi0KLSAgZXhpdDogZnVuY3Rpb24odmlldykgewotICAgIGlmICghdGhpcy5pc1ZpcnR1YWwp
IGRlbGV0ZSBFbWJlci5WaWV3LnZpZXdzW3ZpZXcuZWxlbWVudElkXTsKLSAgfSwKLQotICBpbnNl
cnRFbGVtZW50OiBmdW5jdGlvbih2aWV3LCBmbikgewotICAgIHRocm93ICJZb3UgY2FuJ3QgaW5z
ZXJ0IGFuIGVsZW1lbnQgaW50byB0aGUgRE9NIHRoYXQgaGFzIGFscmVhZHkgYmVlbiBpbnNlcnRl
ZCI7Ci0gIH0KLX0pOwotCi19KSgpOwotCi0KLQotKGZ1bmN0aW9uKCkgewotLyoqCi1AbW9kdWxl
IGVtYmVyCi1Ac3VibW9kdWxlIGVtYmVyLXZpZXdzCi0qLwotCi12YXIgZGVzdHJveWluZ0Vycm9y
ID0gIllvdSBjYW4ndCBjYWxsICVAIG9uIGEgdmlldyBiZWluZyBkZXN0cm95ZWQiLCBmbXQgPSBF
bWJlci5TdHJpbmcuZm10OwotCi12YXIgZGVzdHJveWluZyA9IEVtYmVyLlZpZXcuc3RhdGVzLmRl
c3Ryb3lpbmcgPSBFbWJlci5jcmVhdGUoRW1iZXIuVmlldy5zdGF0ZXMuX2RlZmF1bHQpOwotCi1F
bWJlci5tZXJnZShkZXN0cm95aW5nLCB7Ci0gIGFwcGVuZENoaWxkOiBmdW5jdGlvbigpIHsKLSAg
ICB0aHJvdyBmbXQoZGVzdHJveWluZ0Vycm9yLCBbJ2FwcGVuZENoaWxkJ10pOwotICB9LAotICBy
ZXJlbmRlcjogZnVuY3Rpb24oKSB7Ci0gICAgdGhyb3cgZm10KGRlc3Ryb3lpbmdFcnJvciwgWydy
ZXJlbmRlciddKTsKLSAgfSwKLSAgZGVzdHJveUVsZW1lbnQ6IGZ1bmN0aW9uKCkgewotICAgIHRo
cm93IGZtdChkZXN0cm95aW5nRXJyb3IsIFsnZGVzdHJveUVsZW1lbnQnXSk7Ci0gIH0sCi0gIGVt
cHR5OiBmdW5jdGlvbigpIHsKLSAgICB0aHJvdyBmbXQoZGVzdHJveWluZ0Vycm9yLCBbJ2VtcHR5
J10pOwotICB9LAotCi0gIHNldEVsZW1lbnQ6IGZ1bmN0aW9uKCkgewotICAgIHRocm93IGZtdChk
ZXN0cm95aW5nRXJyb3IsIFsic2V0KCdlbGVtZW50JywgLi4uKSJdKTsKLSAgfSwKLQotICByZW5k
ZXJUb0J1ZmZlcklmTmVlZGVkOiBmdW5jdGlvbigpIHsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0s
Ci0KLSAgLy8gU2luY2UgZWxlbWVudCBpbnNlcnRpb24gaXMgc2NoZWR1bGVkLCBkb24ndCBkbyBh
bnl0aGluZyBpZgotICAvLyB0aGUgdmlldyBoYXMgYmVlbiBkZXN0cm95ZWQgYmV0d2VlbiBzY2hl
ZHVsaW5nIGFuZCBleGVjdXRpb24KLSAgaW5zZXJ0RWxlbWVudDogRW1iZXIuSwotfSk7Ci0KLQot
fSkoKTsKLQotCi0KLShmdW5jdGlvbigpIHsKLUVtYmVyLlZpZXcuY2xvbmVTdGF0ZXMgPSBmdW5j
dGlvbihmcm9tKSB7Ci0gIHZhciBpbnRvID0ge307Ci0KLSAgaW50by5fZGVmYXVsdCA9IHt9Owot
ICBpbnRvLnByZVJlbmRlciA9IEVtYmVyLmNyZWF0ZShpbnRvLl9kZWZhdWx0KTsKLSAgaW50by5k
ZXN0cm95aW5nID0gRW1iZXIuY3JlYXRlKGludG8uX2RlZmF1bHQpOwotICBpbnRvLmluQnVmZmVy
ID0gRW1iZXIuY3JlYXRlKGludG8uX2RlZmF1bHQpOwotICBpbnRvLmhhc0VsZW1lbnQgPSBFbWJl
ci5jcmVhdGUoaW50by5fZGVmYXVsdCk7Ci0gIGludG8uaW5ET00gPSBFbWJlci5jcmVhdGUoaW50
by5oYXNFbGVtZW50KTsKLQotICBmb3IgKHZhciBzdGF0ZU5hbWUgaW4gZnJvbSkgewotICAgIGlm
ICghZnJvbS5oYXNPd25Qcm9wZXJ0eShzdGF0ZU5hbWUpKSB7IGNvbnRpbnVlOyB9Ci0gICAgRW1i
ZXIubWVyZ2UoaW50b1tzdGF0ZU5hbWVdLCBmcm9tW3N0YXRlTmFtZV0pOwotICB9Ci0KLSAgcmV0
dXJuIGludG87Ci19OwotCi19KSgpOwotCi0KLQotKGZ1bmN0aW9uKCkgewotdmFyIHN0YXRlcyA9
IEVtYmVyLlZpZXcuY2xvbmVTdGF0ZXMoRW1iZXIuVmlldy5zdGF0ZXMpOwotCi0vKioKLUBtb2R1
bGUgZW1iZXIKLUBzdWJtb2R1bGUgZW1iZXItdmlld3MKLSovCi0KLXZhciBnZXQgPSBFbWJlci5n
ZXQsIHNldCA9IEVtYmVyLnNldDsKLXZhciBmb3JFYWNoID0gRW1iZXIuRW51bWVyYWJsZVV0aWxz
LmZvckVhY2g7Ci12YXIgVmlld0NvbGxlY3Rpb24gPSBFbWJlci5fVmlld0NvbGxlY3Rpb247Ci0K
LS8qKgotICBBIGBDb250YWluZXJWaWV3YCBpcyBhbiBgRW1iZXIuVmlld2Agc3ViY2xhc3MgdGhh
dCBpbXBsZW1lbnRzIGBFbWJlci5NdXRhYmxlQXJyYXlgCi0gIGFsbG93aW5nIHByb2dyYW1tYXRp
YyBtYW5hZ2VtZW50IG9mIGl0cyBjaGlsZCB2aWV3cy4KLQotICAjIyBTZXR0aW5nIEluaXRpYWwg
Q2hpbGQgVmlld3MKLQotICBUaGUgaW5pdGlhbCBhcnJheSBvZiBjaGlsZCB2aWV3cyBjYW4gYmUg
c2V0IGluIG9uZSBvZiB0d28gd2F5cy4gWW91IGNhbgotICBwcm92aWRlIGEgYGNoaWxkVmlld3Ng
IHByb3BlcnR5IGF0IGNyZWF0aW9uIHRpbWUgdGhhdCBjb250YWlucyBpbnN0YW5jZSBvZgotICBg
RW1iZXIuVmlld2A6Ci0KLSAgYGBgamF2YXNjcmlwdAotICBhQ29udGFpbmVyID0gRW1iZXIuQ29u
dGFpbmVyVmlldy5jcmVhdGUoewotICAgIGNoaWxkVmlld3M6IFtFbWJlci5WaWV3LmNyZWF0ZSgp
LCBFbWJlci5WaWV3LmNyZWF0ZSgpXQotICB9KTsKLSAgYGBgCi0KLSAgWW91IGNhbiBhbHNvIHBy
b3ZpZGUgYSBsaXN0IG9mIHByb3BlcnR5IG5hbWVzIHdob3NlIHZhbHVlcyBhcmUgaW5zdGFuY2Vz
IG9mCi0gIGBFbWJlci5WaWV3YDoKLQotICBgYGBqYXZhc2NyaXB0Ci0gIGFDb250YWluZXIgPSBF
bWJlci5Db250YWluZXJWaWV3LmNyZWF0ZSh7Ci0gICAgY2hpbGRWaWV3czogWydhVmlldycsICdi
VmlldycsICdjVmlldyddLAotICAgIGFWaWV3OiBFbWJlci5WaWV3LmNyZWF0ZSgpLAotICAgIGJW
aWV3OiBFbWJlci5WaWV3LmNyZWF0ZSgpLAotICAgIGNWaWV3OiBFbWJlci5WaWV3LmNyZWF0ZSgp
Ci0gIH0pOwotICBgYGAKLQotICBUaGUgdHdvIHN0cmF0ZWdpZXMgY2FuIGJlIGNvbWJpbmVkOgot
Ci0gIGBgYGphdmFzY3JpcHQKLSAgYUNvbnRhaW5lciA9IEVtYmVyLkNvbnRhaW5lclZpZXcuY3Jl
YXRlKHsKLSAgICBjaGlsZFZpZXdzOiBbJ2FWaWV3JywgRW1iZXIuVmlldy5jcmVhdGUoKV0sCi0g
ICAgYVZpZXc6IEVtYmVyLlZpZXcuY3JlYXRlKCkKLSAgfSk7Ci0gIGBgYAotCi0gIEVhY2ggY2hp
bGQgdmlldydzIHJlbmRlcmluZyB3aWxsIGJlIGluc2VydGVkIGludG8gdGhlIGNvbnRhaW5lcidz
IHJlbmRlcmVkCi0gIEhUTUwgaW4gdGhlIHNhbWUgb3JkZXIgYXMgaXRzIHBvc2l0aW9uIGluIHRo
ZSBgY2hpbGRWaWV3c2AgcHJvcGVydHkuCi0KLSAgIyMgQWRkaW5nIGFuZCBSZW1vdmluZyBDaGls
ZCBWaWV3cwotCi0gIFRoZSBjb250YWluZXIgdmlldyBpbXBsZW1lbnRzIGBFbWJlci5NdXRhYmxl
QXJyYXlgIGFsbG93aW5nIHByb2dyYW1tYXRpYyBtYW5hZ2VtZW50IG9mIGl0cyBjaGlsZCB2aWV3
cy4KLQotICBUbyByZW1vdmUgYSB2aWV3LCBwYXNzIHRoYXQgdmlldyBpbnRvIGEgYHJlbW92ZU9i
amVjdGAgY2FsbCBvbiB0aGUgY29udGFpbmVyIHZpZXcuCi0KLSAgR2l2ZW4gYW4gZW1wdHkgYDxi
b2R5PmAgdGhlIGZvbGxvd2luZyBjb2RlCi0KLSAgYGBgamF2YXNjcmlwdAotICBhQ29udGFpbmVy
ID0gRW1iZXIuQ29udGFpbmVyVmlldy5jcmVhdGUoewotICAgIGNsYXNzTmFtZXM6IFsndGhlLWNv
bnRhaW5lciddLAotICAgIGNoaWxkVmlld3M6IFsnYVZpZXcnLCAnYlZpZXcnXSwKLSAgICBhVmll
dzogRW1iZXIuVmlldy5jcmVhdGUoewotICAgICAgdGVtcGxhdGU6IEVtYmVyLkhhbmRsZWJhcnMu
Y29tcGlsZSgiQSIpCi0gICAgfSksCi0gICAgYlZpZXc6IEVtYmVyLlZpZXcuY3JlYXRlKHsKLSAg
ICAgIHRlbXBsYXRlOiBFbWJlci5IYW5kbGViYXJzLmNvbXBpbGUoIkIiKQotICAgIH0pCi0gIH0p
OwotCi0gIGFDb250YWluZXIuYXBwZW5kVG8oJ2JvZHknKTsKLSAgYGBgCi0KLSAgUmVzdWx0cyBp
biB0aGUgSFRNTAotCi0gIGBgYGh0bWwKLSAgPGRpdiBjbGFzcz0iZW1iZXItdmlldyB0aGUtY29u
dGFpbmVyIj4KLSAgICA8ZGl2IGNsYXNzPSJlbWJlci12aWV3Ij5BPC9kaXY+Ci0gICAgPGRpdiBj
bGFzcz0iZW1iZXItdmlldyI+QjwvZGl2PgotICA8L2Rpdj4KLSAgYGBgCi0KLSAgUmVtb3Zpbmcg
YSB2aWV3Ci0KLSAgYGBgamF2YXNjcmlwdAotICBhQ29udGFpbmVyLnRvQXJyYXkoKTsgIC8vIFth
Q29udGFpbmVyLmFWaWV3LCBhQ29udGFpbmVyLmJWaWV3XQotICBhQ29udGFpbmVyLnJlbW92ZU9i
amVjdChhQ29udGFpbmVyLmdldCgnYlZpZXcnKSk7Ci0gIGFDb250YWluZXIudG9BcnJheSgpOyAg
Ly8gW2FDb250YWluZXIuYVZpZXddCi0gIGBgYAotCi0gIFdpbGwgcmVzdWx0IGluIHRoZSBmb2xs
b3dpbmcgSFRNTAotCi0gIGBgYGh0bWwKLSAgPGRpdiBjbGFzcz0iZW1iZXItdmlldyB0aGUtY29u
dGFpbmVyIj4KLSAgICA8ZGl2IGNsYXNzPSJlbWJlci12aWV3Ij5BPC9kaXY+Ci0gIDwvZGl2Pgot
ICBgYGAKLQotICBTaW1pbGFybHksIGFkZGluZyBhIGNoaWxkIHZpZXcgaXMgYWNjb21wbGlzaGVk
IGJ5IGFkZGluZyBgRW1iZXIuVmlld2AgaW5zdGFuY2VzIHRvIHRoZQotICBjb250YWluZXIgdmll
dy4KLQotICBHaXZlbiBhbiBlbXB0eSBgPGJvZHk+YCB0aGUgZm9sbG93aW5nIGNvZGUKLQotICBg
YGBqYXZhc2NyaXB0Ci0gIGFDb250YWluZXIgPSBFbWJlci5Db250YWluZXJWaWV3LmNyZWF0ZSh7
Ci0gICAgY2xhc3NOYW1lczogWyd0aGUtY29udGFpbmVyJ10sCi0gICAgY2hpbGRWaWV3czogWydh
VmlldycsICdiVmlldyddLAotICAgIGFWaWV3OiBFbWJlci5WaWV3LmNyZWF0ZSh7Ci0gICAgICB0
ZW1wbGF0ZTogRW1iZXIuSGFuZGxlYmFycy5jb21waWxlKCJBIikKLSAgICB9KSwKLSAgICBiVmll
dzogRW1iZXIuVmlldy5jcmVhdGUoewotICAgICAgdGVtcGxhdGU6IEVtYmVyLkhhbmRsZWJhcnMu
Y29tcGlsZSgiQiIpCi0gICAgfSkKLSAgfSk7Ci0KLSAgYUNvbnRhaW5lci5hcHBlbmRUbygnYm9k
eScpOwotICBgYGAKLQotICBSZXN1bHRzIGluIHRoZSBIVE1MCi0KLSAgYGBgaHRtbAotICA8ZGl2
IGNsYXNzPSJlbWJlci12aWV3IHRoZS1jb250YWluZXIiPgotICAgIDxkaXYgY2xhc3M9ImVtYmVy
LXZpZXciPkE8L2Rpdj4KLSAgICA8ZGl2IGNsYXNzPSJlbWJlci12aWV3Ij5CPC9kaXY+Ci0gIDwv
ZGl2PgotICBgYGAKLQotICBBZGRpbmcgYSB2aWV3Ci0KLSAgYGBgamF2YXNjcmlwdAotICBBbm90
aGVyVmlld0NsYXNzID0gRW1iZXIuVmlldy5leHRlbmQoewotICAgIHRlbXBsYXRlOiBFbWJlci5I
YW5kbGViYXJzLmNvbXBpbGUoIkFub3RoZXIgdmlldyIpCi0gIH0pOwotCi0gIGFDb250YWluZXIu
dG9BcnJheSgpOyAgLy8gW2FDb250YWluZXIuYVZpZXcsIGFDb250YWluZXIuYlZpZXddCi0gIGFD
b250YWluZXIucHVzaE9iamVjdChBbm90aGVyVmlld0NsYXNzLmNyZWF0ZSgpKTsKLSAgYUNvbnRh
aW5lci50b0FycmF5KCk7IC8vIFthQ29udGFpbmVyLmFWaWV3LCBhQ29udGFpbmVyLmJWaWV3LCA8
QW5vdGhlclZpZXdDbGFzcyBpbnN0YW5jZT5dCi0gIGBgYAotCi0gIFdpbGwgcmVzdWx0IGluIHRo
ZSBmb2xsb3dpbmcgSFRNTAotCi0gIGBgYGh0bWwKLSAgPGRpdiBjbGFzcz0iZW1iZXItdmlldyB0
aGUtY29udGFpbmVyIj4KLSAgICA8ZGl2IGNsYXNzPSJlbWJlci12aWV3Ij5BPC9kaXY+Ci0gICAg
PGRpdiBjbGFzcz0iZW1iZXItdmlldyI+QjwvZGl2PgotICAgIDxkaXYgY2xhc3M9ImVtYmVyLXZp
ZXciPkFub3RoZXIgdmlldzwvZGl2PgotICA8L2Rpdj4KLSAgYGBgCi0KLSAgIyMgVGVtcGxhdGVz
IGFuZCBMYXlvdXQKLQotICBBIGB0ZW1wbGF0ZWAsIGB0ZW1wbGF0ZU5hbWVgLCBgZGVmYXVsdFRl
bXBsYXRlYCwgYGxheW91dGAsIGBsYXlvdXROYW1lYCBvcgotICBgZGVmYXVsdExheW91dGAgcHJv
cGVydHkgb24gYSBjb250YWluZXIgdmlldyB3aWxsIG5vdCByZXN1bHQgaW4gdGhlIHRlbXBsYXRl
Ci0gIG9yIGxheW91dCBiZWluZyByZW5kZXJlZC4gVGhlIEhUTUwgY29udGVudHMgb2YgYSBgRW1i
ZXIuQ29udGFpbmVyVmlld2AncyBET00KLSAgcmVwcmVzZW50YXRpb24gd2lsbCBvbmx5IGJlIHRo
ZSByZW5kZXJlZCBIVE1MIG9mIGl0cyBjaGlsZCB2aWV3cy4KLQotICBAY2xhc3MgQ29udGFpbmVy
VmlldwotICBAbmFtZXNwYWNlIEVtYmVyCi0gIEBleHRlbmRzIEVtYmVyLlZpZXcKLSovCi1FbWJl
ci5Db250YWluZXJWaWV3ID0gRW1iZXIuVmlldy5leHRlbmQoRW1iZXIuTXV0YWJsZUFycmF5LCB7
Ci0gIHN0YXRlczogc3RhdGVzLAotCi0gIGluaXQ6IGZ1bmN0aW9uKCkgewotICAgIHRoaXMuX3N1
cGVyKCk7Ci0KLSAgICB2YXIgY2hpbGRWaWV3cyA9IGdldCh0aGlzLCAnY2hpbGRWaWV3cycpOwot
Ci0gICAgLy8gcmVkZWZpbmUgdmlldydzIGNoaWxkVmlld3MgcHJvcGVydHkgdGhhdCB3YXMgb2Js
aXRlcmF0ZWQKLSAgICBFbWJlci5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAnY2hpbGRWaWV3cycsIEVt
YmVyLlZpZXcuY2hpbGRWaWV3c1Byb3BlcnR5KTsKLQotICAgIHZhciBfY2hpbGRWaWV3cyA9IHRo
aXMuX2NoaWxkVmlld3M7Ci0KLSAgICBmb3JFYWNoKGNoaWxkVmlld3MsIGZ1bmN0aW9uKHZpZXdO
YW1lLCBpZHgpIHsKLSAgICAgIHZhciB2aWV3OwotCi0gICAgICBpZiAoJ3N0cmluZycgPT09IHR5
cGVvZiB2aWV3TmFtZSkgewotICAgICAgICB2aWV3ID0gZ2V0KHRoaXMsIHZpZXdOYW1lKTsKLSAg
ICAgICAgdmlldyA9IHRoaXMuY3JlYXRlQ2hpbGRWaWV3KHZpZXcpOwotICAgICAgICBzZXQodGhp
cywgdmlld05hbWUsIHZpZXcpOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgdmlldyA9IHRoaXMu
Y3JlYXRlQ2hpbGRWaWV3KHZpZXdOYW1lKTsKLSAgICAgIH0KLQotICAgICAgX2NoaWxkVmlld3Nb
aWR4XSA9IHZpZXc7Ci0gICAgfSwgdGhpcyk7Ci0KLSAgICB2YXIgY3VycmVudFZpZXcgPSBnZXQo
dGhpcywgJ2N1cnJlbnRWaWV3Jyk7Ci0gICAgaWYgKGN1cnJlbnRWaWV3KSB7Ci0gICAgICBpZiAo
IV9jaGlsZFZpZXdzLmxlbmd0aCkgeyBfY2hpbGRWaWV3cyA9IHRoaXMuX2NoaWxkVmlld3MgPSB0
aGlzLl9jaGlsZFZpZXdzLnNsaWNlKCk7IH0KLSAgICAgIF9jaGlsZFZpZXdzLnB1c2godGhpcy5j
cmVhdGVDaGlsZFZpZXcoY3VycmVudFZpZXcpKTsKLSAgICB9Ci0gIH0sCi0KLSAgcmVwbGFjZTog
ZnVuY3Rpb24oaWR4LCByZW1vdmVkQ291bnQsIGFkZGVkVmlld3MpIHsKLSAgICB2YXIgYWRkZWRD
b3VudCA9IGFkZGVkVmlld3MgPyBnZXQoYWRkZWRWaWV3cywgJ2xlbmd0aCcpIDogMDsKLSAgICB2
YXIgc2VsZiA9IHRoaXM7Ci0gICAgRW1iZXIuYXNzZXJ0KCJZb3UgY2FuJ3QgYWRkIGEgY2hpbGQg
dG8gYSBjb250YWluZXIgdGhhdCBpcyBhbHJlYWR5IGEgY2hpbGQgb2YgYW5vdGhlciB2aWV3Iiwg
RW1iZXIuQShhZGRlZFZpZXdzKS5ldmVyeShmdW5jdGlvbihpdGVtKSB7IHJldHVybiAhZ2V0KGl0
ZW0sICdfcGFyZW50VmlldycpIHx8IGdldChpdGVtLCAnX3BhcmVudFZpZXcnKSA9PT0gc2VsZjsg
fSkpOwotCi0gICAgdGhpcy5hcnJheUNvbnRlbnRXaWxsQ2hhbmdlKGlkeCwgcmVtb3ZlZENvdW50
LCBhZGRlZENvdW50KTsKLSAgICB0aGlzLmNoaWxkVmlld3NXaWxsQ2hhbmdlKHRoaXMuX2NoaWxk
Vmlld3MsIGlkeCwgcmVtb3ZlZENvdW50KTsKLQotICAgIGlmIChhZGRlZENvdW50ID09PSAwKSB7
Ci0gICAgICB0aGlzLl9jaGlsZFZpZXdzLnNwbGljZShpZHgsIHJlbW92ZWRDb3VudCkgOwotICAg
IH0gZWxzZSB7Ci0gICAgICB2YXIgYXJncyA9IFtpZHgsIHJlbW92ZWRDb3VudF0uY29uY2F0KGFk
ZGVkVmlld3MpOwotICAgICAgaWYgKGFkZGVkVmlld3MubGVuZ3RoICYmICF0aGlzLl9jaGlsZFZp
ZXdzLmxlbmd0aCkgeyB0aGlzLl9jaGlsZFZpZXdzID0gdGhpcy5fY2hpbGRWaWV3cy5zbGljZSgp
OyB9Ci0gICAgICB0aGlzLl9jaGlsZFZpZXdzLnNwbGljZS5hcHBseSh0aGlzLl9jaGlsZFZpZXdz
LCBhcmdzKTsKLSAgICB9Ci0KLSAgICB0aGlzLmFycmF5Q29udGVudERpZENoYW5nZShpZHgsIHJl
bW92ZWRDb3VudCwgYWRkZWRDb3VudCk7Ci0gICAgdGhpcy5jaGlsZFZpZXdzRGlkQ2hhbmdlKHRo
aXMuX2NoaWxkVmlld3MsIGlkeCwgcmVtb3ZlZENvdW50LCBhZGRlZENvdW50KTsKLQotICAgIHJl
dHVybiB0aGlzOwotICB9LAotCi0gIG9iamVjdEF0OiBmdW5jdGlvbihpZHgpIHsKLSAgICByZXR1
cm4gdGhpcy5fY2hpbGRWaWV3c1tpZHhdOwotICB9LAotCi0gIGxlbmd0aDogRW1iZXIuY29tcHV0
ZWQoZnVuY3Rpb24gKCkgewotICAgIHJldHVybiB0aGlzLl9jaGlsZFZpZXdzLmxlbmd0aDsKLSAg
fSkudm9sYXRpbGUoKSwKLQotICAvKioKLSAgICBJbnN0cnVjdHMgZWFjaCBjaGlsZCB2aWV3IHRv
IHJlbmRlciB0byB0aGUgcGFzc2VkIHJlbmRlciBidWZmZXIuCi0KLSAgICBAcHJpdmF0ZQotICAg
IEBtZXRob2QgcmVuZGVyCi0gICAgQHBhcmFtIHtFbWJlci5SZW5kZXJCdWZmZXJ9IGJ1ZmZlciB0
aGUgYnVmZmVyIHRvIHJlbmRlciB0bwotICAqLwotICByZW5kZXI6IGZ1bmN0aW9uKGJ1ZmZlcikg
ewotICAgIHRoaXMuZm9yRWFjaENoaWxkVmlldyhmdW5jdGlvbih2aWV3KSB7Ci0gICAgICB2aWV3
LnJlbmRlclRvQnVmZmVyKGJ1ZmZlcik7Ci0gICAgfSk7Ci0gIH0sCi0KLSAgaW5zdHJ1bWVudE5h
bWU6ICdjb250YWluZXInLAotCi0gIC8qKgotICAgIFdoZW4gYSBjaGlsZCB2aWV3IGlzIHJlbW92
ZWQsIGRlc3Ryb3kgaXRzIGVsZW1lbnQgc28gdGhhdAotICAgIGl0IGlzIHJlbW92ZWQgZnJvbSB0
aGUgRE9NLgotCi0gICAgVGhlIGFycmF5IG9ic2VydmVyIHRoYXQgdHJpZ2dlcnMgdGhpcyBhY3Rp
b24gaXMgc2V0IHVwIGluIHRoZQotICAgIGByZW5kZXJUb0J1ZmZlcmAgbWV0aG9kLgotCi0gICAg
QHByaXZhdGUKLSAgICBAbWV0aG9kIGNoaWxkVmlld3NXaWxsQ2hhbmdlCi0gICAgQHBhcmFtIHtF
bWJlci5BcnJheX0gdmlld3MgdGhlIGNoaWxkIHZpZXdzIGFycmF5IGJlZm9yZSBtdXRhdGlvbgot
ICAgIEBwYXJhbSB7TnVtYmVyfSBzdGFydCB0aGUgc3RhcnQgcG9zaXRpb24gb2YgdGhlIG11dGF0
aW9uCi0gICAgQHBhcmFtIHtOdW1iZXJ9IHJlbW92ZWQgdGhlIG51bWJlciBvZiBjaGlsZCB2aWV3
cyByZW1vdmVkCi0gICoqLwotICBjaGlsZFZpZXdzV2lsbENoYW5nZTogZnVuY3Rpb24odmlld3Ms
IHN0YXJ0LCByZW1vdmVkKSB7Ci0gICAgdGhpcy5wcm9wZXJ0eVdpbGxDaGFuZ2UoJ2NoaWxkVmll
d3MnKTsKLQotICAgIGlmIChyZW1vdmVkID4gMCkgewotICAgICAgdmFyIGNoYW5nZWRWaWV3cyA9
IHZpZXdzLnNsaWNlKHN0YXJ0LCBzdGFydCtyZW1vdmVkKTsKLSAgICAgIC8vIHRyYW5zaXRpb24g
dG8gcHJlUmVuZGVyIGJlZm9yZSBjbGVhcmluZyBwYXJlbnRWaWV3Ci0gICAgICB0aGlzLmN1cnJl
bnRTdGF0ZS5jaGlsZFZpZXdzV2lsbENoYW5nZSh0aGlzLCB2aWV3cywgc3RhcnQsIHJlbW92ZWQp
OwotICAgICAgdGhpcy5pbml0aWFsaXplVmlld3MoY2hhbmdlZFZpZXdzLCBudWxsLCBudWxsKTsK
LSAgICB9Ci0gIH0sCi0KLSAgcmVtb3ZlQ2hpbGQ6IGZ1bmN0aW9uKGNoaWxkKSB7Ci0gICAgdGhp
cy5yZW1vdmVPYmplY3QoY2hpbGQpOwotICAgIHJldHVybiB0aGlzOwotICB9LAotCi0gIC8qKgot
ICAgIFdoZW4gYSBjaGlsZCB2aWV3IGlzIGFkZGVkLCBtYWtlIHN1cmUgdGhlIERPTSBnZXRzIHVw
ZGF0ZWQgYXBwcm9wcmlhdGVseS4KLQotICAgIElmIHRoZSB2aWV3IGhhcyBhbHJlYWR5IHJlbmRl
cmVkIGFuIGVsZW1lbnQsIHdlIHRlbGwgdGhlIGNoaWxkIHZpZXcgdG8KLSAgICBjcmVhdGUgYW4g
ZWxlbWVudCBhbmQgaW5zZXJ0IGl0IGludG8gdGhlIERPTS4gSWYgdGhlIGVuY2xvc2luZyBjb250
YWluZXIKLSAgICB2aWV3IGhhcyBhbHJlYWR5IHdyaXR0ZW4gdG8gYSBidWZmZXIsIGJ1dCBub3Qg
eWV0IGNvbnZlcnRlZCB0aGF0IGJ1ZmZlcgotICAgIGludG8gYW4gZWxlbWVudCwgd2UgaW5zZXJ0
IHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIGNoaWxkIGludG8gdGhlCi0gICAgYXBw
cm9wcmlhdGUgcGxhY2UgaW4gdGhlIGJ1ZmZlci4KLQotICAgIEBwcml2YXRlCi0gICAgQG1ldGhv
ZCBjaGlsZFZpZXdzRGlkQ2hhbmdlCi0gICAgQHBhcmFtIHtFbWJlci5BcnJheX0gdmlld3MgdGhl
IGFycmF5IG9mIGNoaWxkIHZpZXdzIGFmdGUgdGhlIG11dGF0aW9uIGhhcyBvY2N1cnJlZAotICAg
IEBwYXJhbSB7TnVtYmVyfSBzdGFydCB0aGUgc3RhcnQgcG9zaXRpb24gb2YgdGhlIG11dGF0aW9u
Ci0gICAgQHBhcmFtIHtOdW1iZXJ9IHJlbW92ZWQgdGhlIG51bWJlciBvZiBjaGlsZCB2aWV3cyBy
ZW1vdmVkCi0gICAgQHBhcmFtIHtOdW1iZXJ9IHRoZSBudW1iZXIgb2YgY2hpbGQgdmlld3MgYWRk
ZWQKLSAgKi8KLSAgY2hpbGRWaWV3c0RpZENoYW5nZTogZnVuY3Rpb24odmlld3MsIHN0YXJ0LCBy
ZW1vdmVkLCBhZGRlZCkgewotICAgIGlmIChhZGRlZCA+IDApIHsKLSAgICAgIHZhciBjaGFuZ2Vk
Vmlld3MgPSB2aWV3cy5zbGljZShzdGFydCwgc3RhcnQrYWRkZWQpOwotICAgICAgdGhpcy5pbml0
aWFsaXplVmlld3MoY2hhbmdlZFZpZXdzLCB0aGlzLCBnZXQodGhpcywgJ3RlbXBsYXRlRGF0YScp
KTsKLSAgICAgIHRoaXMuY3VycmVudFN0YXRlLmNoaWxkVmlld3NEaWRDaGFuZ2UodGhpcywgdmll
d3MsIHN0YXJ0LCBhZGRlZCk7Ci0gICAgfQotICAgIHRoaXMucHJvcGVydHlEaWRDaGFuZ2UoJ2No
aWxkVmlld3MnKTsKLSAgfSwKLQotICBpbml0aWFsaXplVmlld3M6IGZ1bmN0aW9uKHZpZXdzLCBw
YXJlbnRWaWV3LCB0ZW1wbGF0ZURhdGEpIHsKLSAgICBmb3JFYWNoKHZpZXdzLCBmdW5jdGlvbih2
aWV3KSB7Ci0gICAgICBzZXQodmlldywgJ19wYXJlbnRWaWV3JywgcGFyZW50Vmlldyk7Ci0KLSAg
ICAgIGlmICghdmlldy5jb250YWluZXIgJiYgcGFyZW50VmlldykgewotICAgICAgICBzZXQodmll
dywgJ2NvbnRhaW5lcicsIHBhcmVudFZpZXcuY29udGFpbmVyKTsKLSAgICAgIH0KLQotICAgICAg
aWYgKCFnZXQodmlldywgJ3RlbXBsYXRlRGF0YScpKSB7Ci0gICAgICAgIHNldCh2aWV3LCAndGVt
cGxhdGVEYXRhJywgdGVtcGxhdGVEYXRhKTsKLSAgICAgIH0KLSAgICB9KTsKLSAgfSwKLQotICBj
dXJyZW50VmlldzogbnVsbCwKLQotICBfY3VycmVudFZpZXdXaWxsQ2hhbmdlOiBFbWJlci5iZWZv
cmVPYnNlcnZlcignY3VycmVudFZpZXcnLCBmdW5jdGlvbigpIHsKLSAgICB2YXIgY3VycmVudFZp
ZXcgPSBnZXQodGhpcywgJ2N1cnJlbnRWaWV3Jyk7Ci0gICAgaWYgKGN1cnJlbnRWaWV3KSB7Ci0g
ICAgICBjdXJyZW50Vmlldy5kZXN0cm95KCk7Ci0gICAgfQotICB9KSwKLQotICBfY3VycmVudFZp
ZXdEaWRDaGFuZ2U6IEVtYmVyLm9ic2VydmVyKCdjdXJyZW50VmlldycsIGZ1bmN0aW9uKCkgewot
ICAgIHZhciBjdXJyZW50VmlldyA9IGdldCh0aGlzLCAnY3VycmVudFZpZXcnKTsKLSAgICBpZiAo
Y3VycmVudFZpZXcpIHsKLSAgICAgIEVtYmVyLmFzc2VydCgiWW91IHRyaWVkIHRvIHNldCBhIGN1
cnJlbnQgdmlldyB0aGF0IGFscmVhZHkgaGFzIGEgcGFyZW50LiBNYWtlIHN1cmUgeW91IGRvbid0
IGhhdmUgbXVsdGlwbGUgb3V0bGV0cyBpbiB0aGUgc2FtZSB2aWV3LiIsICFnZXQoY3VycmVudFZp
ZXcsICdfcGFyZW50VmlldycpKTsKLSAgICAgIHRoaXMucHVzaE9iamVjdChjdXJyZW50Vmlldyk7
Ci0gICAgfQotICB9KSwKLQotICBfZW5zdXJlQ2hpbGRyZW5BcmVJbkRPTTogZnVuY3Rpb24gKCkg
ewotICAgIHRoaXMuY3VycmVudFN0YXRlLmVuc3VyZUNoaWxkcmVuQXJlSW5ET00odGhpcyk7Ci0g
IH0KLX0pOwotCi1FbWJlci5tZXJnZShzdGF0ZXMuX2RlZmF1bHQsIHsKLSAgY2hpbGRWaWV3c1dp
bGxDaGFuZ2U6IEVtYmVyLkssCi0gIGNoaWxkVmlld3NEaWRDaGFuZ2U6IEVtYmVyLkssCi0gIGVu
c3VyZUNoaWxkcmVuQXJlSW5ET006IEVtYmVyLksKLX0pOwotCi1FbWJlci5tZXJnZShzdGF0ZXMu
aW5CdWZmZXIsIHsKLSAgY2hpbGRWaWV3c0RpZENoYW5nZTogZnVuY3Rpb24ocGFyZW50Vmlldywg
dmlld3MsIHN0YXJ0LCBhZGRlZCkgewotICAgIHRocm93IG5ldyBFbWJlci5FcnJvcignWW91IGNh
bm5vdCBtb2RpZnkgY2hpbGQgdmlld3Mgd2hpbGUgaW4gdGhlIGluQnVmZmVyIHN0YXRlJyk7Ci0g
IH0KLX0pOwotCi1FbWJlci5tZXJnZShzdGF0ZXMuaGFzRWxlbWVudCwgewotICBjaGlsZFZpZXdz
V2lsbENoYW5nZTogZnVuY3Rpb24odmlldywgdmlld3MsIHN0YXJ0LCByZW1vdmVkKSB7Ci0gICAg
Zm9yICh2YXIgaT1zdGFydDsgaTxzdGFydCtyZW1vdmVkOyBpKyspIHsKLSAgICAgIHZpZXdzW2ld
LnJlbW92ZSgpOwotICAgIH0KLSAgfSwKLQotICBjaGlsZFZpZXdzRGlkQ2hhbmdlOiBmdW5jdGlv
bih2aWV3LCB2aWV3cywgc3RhcnQsIGFkZGVkKSB7Ci0gICAgRW1iZXIucnVuLnNjaGVkdWxlT25j
ZSgncmVuZGVyJywgdmlldywgJ19lbnN1cmVDaGlsZHJlbkFyZUluRE9NJyk7Ci0gIH0sCi0KLSAg
ZW5zdXJlQ2hpbGRyZW5BcmVJbkRPTTogZnVuY3Rpb24odmlldykgewotICAgIHZhciBjaGlsZFZp
ZXdzID0gdmlldy5fY2hpbGRWaWV3cywgaSwgbGVuLCBjaGlsZFZpZXcsIHByZXZpb3VzLCBidWZm
ZXIsIHZpZXdDb2xsZWN0aW9uID0gbmV3IFZpZXdDb2xsZWN0aW9uKCk7Ci0KLSAgICBmb3IgKGkg
PSAwLCBsZW4gPSBjaGlsZFZpZXdzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICBjaGls
ZFZpZXcgPSBjaGlsZFZpZXdzW2ldOwotCi0gICAgICBpZiAoIWJ1ZmZlcikgeyBidWZmZXIgPSBF
bWJlci5SZW5kZXJCdWZmZXIoKTsgYnVmZmVyLl9oYXNFbGVtZW50ID0gZmFsc2U7IH0KLQotICAg
ICAgaWYgKGNoaWxkVmlldy5yZW5kZXJUb0J1ZmZlcklmTmVlZGVkKGJ1ZmZlcikpIHsKLSAgICAg
ICAgdmlld0NvbGxlY3Rpb24ucHVzaChjaGlsZFZpZXcpOwotICAgICAgfSBlbHNlIGlmICh2aWV3
Q29sbGVjdGlvbi5sZW5ndGgpIHsKLSAgICAgICAgaW5zZXJ0Vmlld0NvbGxlY3Rpb24odmlldywg
dmlld0NvbGxlY3Rpb24sIHByZXZpb3VzLCBidWZmZXIpOwotICAgICAgICBidWZmZXIgPSBudWxs
OwotICAgICAgICBwcmV2aW91cyA9IGNoaWxkVmlldzsKLSAgICAgICAgdmlld0NvbGxlY3Rpb24u
Y2xlYXIoKTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIHByZXZpb3VzID0gY2hpbGRWaWV3Owot
ICAgICAgfQotICAgIH0KLQotICAgIGlmICh2aWV3Q29sbGVjdGlvbi5sZW5ndGgpIHsKLSAgICAg
IGluc2VydFZpZXdDb2xsZWN0aW9uKHZpZXcsIHZpZXdDb2xsZWN0aW9uLCBwcmV2aW91cywgYnVm
ZmVyKTsKLSAgICB9Ci0gIH0KLX0pOwotCi1mdW5jdGlvbiBpbnNlcnRWaWV3Q29sbGVjdGlvbih2
aWV3LCB2aWV3Q29sbGVjdGlvbiwgcHJldmlvdXMsIGJ1ZmZlcikgewotICB2aWV3Q29sbGVjdGlv
bi50cmlnZ2VyUmVjdXJzaXZlbHkoJ3dpbGxJbnNlcnRFbGVtZW50Jyk7Ci0KLSAgaWYgKHByZXZp
b3VzKSB7Ci0gICAgcHJldmlvdXMuZG9tTWFuYWdlci5hZnRlcihwcmV2aW91cywgYnVmZmVyLnN0
cmluZygpKTsKLSAgfSBlbHNlIHsKLSAgICB2aWV3LmRvbU1hbmFnZXIucHJlcGVuZCh2aWV3LCBi
dWZmZXIuc3RyaW5nKCkpOwotICB9Ci0KLSAgdmlld0NvbGxlY3Rpb24uZm9yRWFjaChmdW5jdGlv
bih2KSB7Ci0gICAgdi50cmFuc2l0aW9uVG8oJ2luRE9NJyk7Ci0gICAgdi5wcm9wZXJ0eURpZENo
YW5nZSgnZWxlbWVudCcpOwotICAgIHYudHJpZ2dlclJlY3Vyc2l2ZWx5KCdkaWRJbnNlcnRFbGVt
ZW50Jyk7Ci0gIH0pOwotfQotCi0KLX0pKCk7Ci0KLQotCi0oZnVuY3Rpb24oKSB7Ci0vKioKLUBt
b2R1bGUgZW1iZXIKLUBzdWJtb2R1bGUgZW1iZXItdmlld3MKLSovCi0KLXZhciBnZXQgPSBFbWJl
ci5nZXQsIHNldCA9IEVtYmVyLnNldCwgZm10ID0gRW1iZXIuU3RyaW5nLmZtdDsKLQotLyoqCi0g
IGBFbWJlci5Db2xsZWN0aW9uVmlld2AgaXMgYW4gYEVtYmVyLlZpZXdgIGRlc2NlbmRlbnQgcmVz
cG9uc2libGUgZm9yIG1hbmFnaW5nCi0gIGEgY29sbGVjdGlvbiAoYW4gYXJyYXkgb3IgYXJyYXkt
bGlrZSBvYmplY3QpIGJ5IG1haW50YWluaW5nIGEgY2hpbGQgdmlldyBvYmplY3QKLSAgYW5kIGFz
c29jaWF0ZWQgRE9NIHJlcHJlc2VudGF0aW9uIGZvciBlYWNoIGl0ZW0gaW4gdGhlIGFycmF5IGFu
ZCBlbnN1cmluZwotICB0aGF0IGNoaWxkIHZpZXdzIGFuZCB0aGVpciBhc3NvY2lhdGVkIHJlbmRl
cmVkIEhUTUwgYXJlIHVwZGF0ZWQgd2hlbiBpdGVtcyBpbgotICB0aGUgYXJyYXkgYXJlIGFkZGVk
LCByZW1vdmVkLCBvciByZXBsYWNlZC4KLQotICAjIyBTZXR0aW5nIGNvbnRlbnQKLQotICBUaGUg
bWFuYWdlZCBjb2xsZWN0aW9uIG9mIG9iamVjdHMgaXMgcmVmZXJlbmNlZCBhcyB0aGUgYEVtYmVy
LkNvbGxlY3Rpb25WaWV3YAotICBpbnN0YW5jZSdzIGBjb250ZW50YCBwcm9wZXJ0eS4KLQotICBg
YGBqYXZhc2NyaXB0Ci0gIHNvbWVJdGVtc1ZpZXcgPSBFbWJlci5Db2xsZWN0aW9uVmlldy5jcmVh
dGUoewotICAgIGNvbnRlbnQ6IFsnQScsICdCJywnQyddCi0gIH0pCi0gIGBgYAotCi0gIFRoZSB2
aWV3IGZvciBlYWNoIGl0ZW0gaW4gdGhlIGNvbGxlY3Rpb24gd2lsbCBoYXZlIGl0cyBgY29udGVu
dGAgcHJvcGVydHkgc2V0Ci0gIHRvIHRoZSBpdGVtLgotCi0gICMjIFNwZWNpZnlpbmcgaXRlbVZp
ZXdDbGFzcwotCi0gIEJ5IGRlZmF1bHQgdGhlIHZpZXcgY2xhc3MgZm9yIGVhY2ggaXRlbSBpbiB0
aGUgbWFuYWdlZCBjb2xsZWN0aW9uIHdpbGwgYmUgYW4KLSAgaW5zdGFuY2Ugb2YgYEVtYmVyLlZp
ZXdgLiBZb3UgY2FuIHN1cHBseSBhIGRpZmZlcmVudCBjbGFzcyBieSBzZXR0aW5nIHRoZQotICBg
Q29sbGVjdGlvblZpZXdgJ3MgYGl0ZW1WaWV3Q2xhc3NgIHByb3BlcnR5LgotCi0gIEdpdmVuIGFu
IGVtcHR5IGA8Ym9keT5gIGFuZCB0aGUgZm9sbG93aW5nIGNvZGU6Ci0KLSAgYGBgamF2YXNjcmlw
dAotICBzb21lSXRlbXNWaWV3ID0gRW1iZXIuQ29sbGVjdGlvblZpZXcuY3JlYXRlKHsKLSAgICBj
bGFzc05hbWVzOiBbJ2EtY29sbGVjdGlvbiddLAotICAgIGNvbnRlbnQ6IFsnQScsJ0InLCdDJ10s
Ci0gICAgaXRlbVZpZXdDbGFzczogRW1iZXIuVmlldy5leHRlbmQoewotICAgICAgdGVtcGxhdGU6
IEVtYmVyLkhhbmRsZWJhcnMuY29tcGlsZSgidGhlIGxldHRlcjoge3t2aWV3LmNvbnRlbnR9fSIp
Ci0gICAgfSkKLSAgfSk7Ci0KLSAgc29tZUl0ZW1zVmlldy5hcHBlbmRUbygnYm9keScpOwotICBg
YGAKLQotICBXaWxsIHJlc3VsdCBpbiB0aGUgZm9sbG93aW5nIEhUTUwgc3RydWN0dXJlCi0KLSAg
YGBgaHRtbAotICA8ZGl2IGNsYXNzPSJlbWJlci12aWV3IGEtY29sbGVjdGlvbiI+Ci0gICAgPGRp
diBjbGFzcz0iZW1iZXItdmlldyI+dGhlIGxldHRlcjogQTwvZGl2PgotICAgIDxkaXYgY2xhc3M9
ImVtYmVyLXZpZXciPnRoZSBsZXR0ZXI6IEI8L2Rpdj4KLSAgICA8ZGl2IGNsYXNzPSJlbWJlci12
aWV3Ij50aGUgbGV0dGVyOiBDPC9kaXY+Ci0gIDwvZGl2PgotICBgYGAKLQotICAjIyBBdXRvbWF0
aWMgbWF0Y2hpbmcgb2YgcGFyZW50L2NoaWxkIHRhZ05hbWVzCi0KLSAgU2V0dGluZyB0aGUgYHRh
Z05hbWVgIHByb3BlcnR5IG9mIGEgYENvbGxlY3Rpb25WaWV3YCB0byBhbnkgb2YKLSAgInVsIiwg
Im9sIiwgInRhYmxlIiwgInRoZWFkIiwgInRib2R5IiwgInRmb290IiwgInRyIiwgb3IgInNlbGVj
dCIgd2lsbCByZXN1bHQKLSAgaW4gdGhlIGl0ZW0gdmlld3MgcmVjZWl2aW5nIGFuIGFwcHJvcHJp
YXRlbHkgbWF0Y2hlZCBgdGFnTmFtZWAgcHJvcGVydHkuCi0KLSAgR2l2ZW4gYW4gZW1wdHkgYDxi
b2R5PmAgYW5kIHRoZSBmb2xsb3dpbmcgY29kZToKLQotICBgYGBqYXZhc2NyaXB0Ci0gIGFuVW5k
b3JkZXJlZExpc3RWaWV3ID0gRW1iZXIuQ29sbGVjdGlvblZpZXcuY3JlYXRlKHsKLSAgICB0YWdO
YW1lOiAndWwnLAotICAgIGNvbnRlbnQ6IFsnQScsJ0InLCdDJ10sCi0gICAgaXRlbVZpZXdDbGFz
czogRW1iZXIuVmlldy5leHRlbmQoewotICAgICAgdGVtcGxhdGU6IEVtYmVyLkhhbmRsZWJhcnMu
Y29tcGlsZSgidGhlIGxldHRlcjoge3t2aWV3LmNvbnRlbnR9fSIpCi0gICAgfSkKLSAgfSk7Ci0K
LSAgYW5VbmRvcmRlcmVkTGlzdFZpZXcuYXBwZW5kVG8oJ2JvZHknKTsKLSAgYGBgCi0KLSAgV2ls
bCByZXN1bHQgaW4gdGhlIGZvbGxvd2luZyBIVE1MIHN0cnVjdHVyZQotCi0gIGBgYGh0bWwKLSAg
PHVsIGNsYXNzPSJlbWJlci12aWV3IGEtY29sbGVjdGlvbiI+Ci0gICAgPGxpIGNsYXNzPSJlbWJl
ci12aWV3Ij50aGUgbGV0dGVyOiBBPC9saT4KLSAgICA8bGkgY2xhc3M9ImVtYmVyLXZpZXciPnRo
ZSBsZXR0ZXI6IEI8L2xpPgotICAgIDxsaSBjbGFzcz0iZW1iZXItdmlldyI+dGhlIGxldHRlcjog
QzwvbGk+Ci0gIDwvdWw+Ci0gIGBgYAotCi0gIEFkZGl0aW9uYWwgYHRhZ05hbWVgIHBhaXJzIGNh
biBiZSBwcm92aWRlZCBieSBhZGRpbmcgdG8KLSAgYEVtYmVyLkNvbGxlY3Rpb25WaWV3LkNPTlRB
SU5FUl9NQVAgYAotCi0gIGBgYGphdmFzY3JpcHQKLSAgRW1iZXIuQ29sbGVjdGlvblZpZXcuQ09O
VEFJTkVSX01BUFsnYXJ0aWNsZSddID0gJ3NlY3Rpb24nCi0gIGBgYAotCi0gICMjIFByb2dyYW1t
YXRpYyBjcmVhdGlvbiBvZiBjaGlsZCB2aWV3cwotCi0gIEZvciBjYXNlcyB3aGVyZSBhZGRpdGlv
bmFsIGN1c3RvbWl6YXRpb24gYmV5b25kIHRoZSB1c2Ugb2YgYSBzaW5nbGUKLSAgYGl0ZW1WaWV3
Q2xhc3NgIG9yIGB0YWdOYW1lYCBtYXRjaGluZyBpcyByZXF1aXJlZCBDb2xsZWN0aW9uVmlldydz
Ci0gIGBjcmVhdGVDaGlsZFZpZXdgIG1ldGhvZCBjYW4gYmUgb3ZlcmlkZGVuOgotCi0gIGBgYGph
dmFzY3JpcHQKLSAgQ3VzdG9tQ29sbGVjdGlvblZpZXcgPSBFbWJlci5Db2xsZWN0aW9uVmlldy5l
eHRlbmQoewotICAgIGNyZWF0ZUNoaWxkVmlldzogZnVuY3Rpb24odmlld0NsYXNzLCBhdHRycykg
ewotICAgICAgaWYgKGF0dHJzLmNvbnRlbnQua2luZCA9PSAnYWxidW0nKSB7Ci0gICAgICAgIHZp
ZXdDbGFzcyA9IEFwcC5BbGJ1bVZpZXc7Ci0gICAgICB9IGVsc2UgewotICAgICAgICB2aWV3Q2xh
c3MgPSBBcHAuU29uZ1ZpZXc7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gdGhpcy5fc3VwZXIodmll
d0NsYXNzLCBhdHRycyk7Ci0gICAgfQotICB9KTsKLSAgYGBgCi0KLSAgIyMgRW1wdHkgVmlldwot
Ci0gIFlvdSBjYW4gcHJvdmlkZSBhbiBgRW1iZXIuVmlld2Agc3ViY2xhc3MgdG8gdGhlIGBFbWJl
ci5Db2xsZWN0aW9uVmlld2AKLSAgaW5zdGFuY2UgYXMgaXRzIGBlbXB0eVZpZXdgIHByb3BlcnR5
LiBJZiB0aGUgYGNvbnRlbnRgIHByb3BlcnR5IG9mIGEKLSAgYENvbGxlY3Rpb25WaWV3YCBpcyBz
ZXQgdG8gYG51bGxgIG9yIGFuIGVtcHR5IGFycmF5LCBhbiBpbnN0YW5jZSBvZiB0aGlzIHZpZXcK
LSAgd2lsbCBiZSB0aGUgYENvbGxlY3Rpb25WaWV3YHMgb25seSBjaGlsZC4KLQotICBgYGBqYXZh
c2NyaXB0Ci0gIGFMaXN0V2l0aE5vdGhpbmcgPSBFbWJlci5Db2xsZWN0aW9uVmlldy5jcmVhdGUo
ewotICAgIGNsYXNzTmFtZXM6IFsnbm90aGluZyddCi0gICAgY29udGVudDogbnVsbCwKLSAgICBl
bXB0eVZpZXc6IEVtYmVyLlZpZXcuZXh0ZW5kKHsKLSAgICAgIHRlbXBsYXRlOiBFbWJlci5IYW5k
bGViYXJzLmNvbXBpbGUoIlRoZSBjb2xsZWN0aW9uIGlzIGVtcHR5IikKLSAgICB9KQotICB9KTsK
LQotICBhTGlzdFdpdGhOb3RoaW5nLmFwcGVuZFRvKCdib2R5Jyk7Ci0gIGBgYAotCi0gIFdpbGwg
cmVzdWx0IGluIHRoZSBmb2xsb3dpbmcgSFRNTCBzdHJ1Y3R1cmUKLQotICBgYGBodG1sCi0gIDxk
aXYgY2xhc3M9ImVtYmVyLXZpZXcgbm90aGluZyI+Ci0gICAgPGRpdiBjbGFzcz0iZW1iZXItdmll
dyI+Ci0gICAgICBUaGUgY29sbGVjdGlvbiBpcyBlbXB0eQotICAgIDwvZGl2PgotICA8L2Rpdj4K
LSAgYGBgCi0KLSAgIyMgQWRkaW5nIGFuZCBSZW1vdmluZyBpdGVtcwotCi0gIFRoZSBgY2hpbGRW
aWV3c2AgcHJvcGVydHkgb2YgYSBgQ29sbGVjdGlvblZpZXdgIHNob3VsZCBub3QgYmUgZGlyZWN0
bHkKLSAgbWFuaXB1bGF0ZWQuIEluc3RlYWQsIGFkZCwgcmVtb3ZlLCByZXBsYWNlIGl0ZW1zIGZy
b20gaXRzIGBjb250ZW50YCBwcm9wZXJ0eS4KLSAgVGhpcyB3aWxsIHRyaWdnZXIgYXBwcm9wcmlh
dGUgY2hhbmdlcyB0byBpdHMgcmVuZGVyZWQgSFRNTC4KLQotCi0gIEBjbGFzcyBDb2xsZWN0aW9u
VmlldwotICBAbmFtZXNwYWNlIEVtYmVyCi0gIEBleHRlbmRzIEVtYmVyLkNvbnRhaW5lclZpZXcK
LSAgQHNpbmNlIEVtYmVyIDAuOQotKi8KLUVtYmVyLkNvbGxlY3Rpb25WaWV3ID0gRW1iZXIuQ29u
dGFpbmVyVmlldy5leHRlbmQoewotCi0gIC8qKgotICAgIEEgbGlzdCBvZiBpdGVtcyB0byBiZSBk
aXNwbGF5ZWQgYnkgdGhlIGBFbWJlci5Db2xsZWN0aW9uVmlld2AuCi0KLSAgICBAcHJvcGVydHkg
Y29udGVudAotICAgIEB0eXBlIEVtYmVyLkFycmF5Ci0gICAgQGRlZmF1bHQgbnVsbAotICAqLwot
ICBjb250ZW50OiBudWxsLAotCi0gIC8qKgotICAgIFRoaXMgcHJvdmlkZXMgbWV0YWRhdGEgYWJv
dXQgd2hhdCBraW5kIG9mIGVtcHR5IHZpZXcgY2xhc3MgdGhpcwotICAgIGNvbGxlY3Rpb24gd291
bGQgbGlrZSBpZiBpdCBpcyBiZWluZyBpbnN0YW50aWF0ZWQgZnJvbSBhbm90aGVyCi0gICAgc3lz
dGVtIChsaWtlIEhhbmRsZWJhcnMpCi0KLSAgICBAcHJpdmF0ZQotICAgIEBwcm9wZXJ0eSBlbXB0
eVZpZXdDbGFzcwotICAqLwotICBlbXB0eVZpZXdDbGFzczogRW1iZXIuVmlldywKLQotICAvKioK
LSAgICBBbiBvcHRpb25hbCB2aWV3IHRvIGRpc3BsYXkgaWYgY29udGVudCBpcyBzZXQgdG8gYW4g
ZW1wdHkgYXJyYXkuCi0KLSAgICBAcHJvcGVydHkgZW1wdHlWaWV3Ci0gICAgQHR5cGUgRW1iZXIu
VmlldwotICAgIEBkZWZhdWx0IG51bGwKLSAgKi8KLSAgZW1wdHlWaWV3OiBudWxsLAotCi0gIC8q
KgotICAgIEBwcm9wZXJ0eSBpdGVtVmlld0NsYXNzCi0gICAgQHR5cGUgRW1iZXIuVmlldwotICAg
IEBkZWZhdWx0IEVtYmVyLlZpZXcKLSAgKi8KLSAgaXRlbVZpZXdDbGFzczogRW1iZXIuVmlldywK
LQotICAvKioKLSAgICBTZXR1cCBhIENvbGxlY3Rpb25WaWV3Ci0KLSAgICBAbWV0aG9kIGluaXQK
LSAgKi8KLSAgaW5pdDogZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHJldCA9IHRoaXMuX3N1cGVyKCk7
Ci0gICAgdGhpcy5fY29udGVudERpZENoYW5nZSgpOwotICAgIHJldHVybiByZXQ7Ci0gIH0sCi0K
LSAgLyoqCi0gICAgSW52b2tlZCB3aGVuIHRoZSBjb250ZW50IHByb3BlcnR5IGlzIGFib3V0IHRv
IGNoYW5nZS4gTm90aWZpZXMgb2JzZXJ2ZXJzIHRoYXQgdGhlCi0gICAgZW50aXJlIGFycmF5IGNv
bnRlbnQgd2lsbCBjaGFuZ2UuCi0KLSAgICBAcHJpdmF0ZQotICAgIEBtZXRob2QgX2NvbnRlbnRX
aWxsQ2hhbmdlCi0gICovCi0gIF9jb250ZW50V2lsbENoYW5nZTogRW1iZXIuYmVmb3JlT2JzZXJ2
ZXIoJ2NvbnRlbnQnLCBmdW5jdGlvbigpIHsKLSAgICB2YXIgY29udGVudCA9IHRoaXMuZ2V0KCdj
b250ZW50Jyk7Ci0KLSAgICBpZiAoY29udGVudCkgeyBjb250ZW50LnJlbW92ZUFycmF5T2JzZXJ2
ZXIodGhpcyk7IH0KLSAgICB2YXIgbGVuID0gY29udGVudCA/IGdldChjb250ZW50LCAnbGVuZ3Ro
JykgOiAwOwotICAgIHRoaXMuYXJyYXlXaWxsQ2hhbmdlKGNvbnRlbnQsIDAsIGxlbik7Ci0gIH0p
LAotCi0gIC8qKgotICAgIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBjb250ZW50IGhhcyBj
aGFuZ2VkLCBhbmQgaWYgc28sCi0gICAgdXBkYXRlIHRoZSBjaGlsZHJlbiBkaXJlY3RseS4gVGhp
cyBpcyBhbHdheXMgc2NoZWR1bGVkCi0gICAgYXN5bmNocm9ub3VzbHksIHRvIGFsbG93IHRoZSBl
bGVtZW50IHRvIGJlIGNyZWF0ZWQgYmVmb3JlCi0gICAgYmluZGluZ3MgaGF2ZSBzeW5jaHJvbml6
ZWQgYW5kIHZpY2UgdmVyc2EuCi0KLSAgICBAcHJpdmF0ZQotICAgIEBtZXRob2QgX2NvbnRlbnRE
aWRDaGFuZ2UKLSAgKi8KLSAgX2NvbnRlbnREaWRDaGFuZ2U6IEVtYmVyLm9ic2VydmVyKCdjb250
ZW50JywgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGNvbnRlbnQgPSBnZXQodGhpcywgJ2NvbnRlbnQn
KTsKLQotICAgIGlmIChjb250ZW50KSB7Ci0gICAgICB0aGlzLl9hc3NlcnRBcnJheUxpa2UoY29u
dGVudCk7Ci0gICAgICBjb250ZW50LmFkZEFycmF5T2JzZXJ2ZXIodGhpcyk7Ci0gICAgfQotCi0g
ICAgdmFyIGxlbiA9IGNvbnRlbnQgPyBnZXQoY29udGVudCwgJ2xlbmd0aCcpIDogMDsKLSAgICB0
aGlzLmFycmF5RGlkQ2hhbmdlKGNvbnRlbnQsIDAsIG51bGwsIGxlbik7Ci0gIH0pLAotCi0gIC8q
KgotICAgIEVuc3VyZSB0aGF0IHRoZSBjb250ZW50IGltcGxlbWVudHMgRW1iZXIuQXJyYXkKLQot
ICAgIEBwcml2YXRlCi0gICAgQG1ldGhvZCBfYXNzZXJ0QXJyYXlMaWtlCi0gICovCi0gIF9hc3Nl
cnRBcnJheUxpa2U6IGZ1bmN0aW9uKGNvbnRlbnQpIHsKLSAgICBFbWJlci5hc3NlcnQoZm10KCJh
biBFbWJlci5Db2xsZWN0aW9uVmlldydzIGNvbnRlbnQgbXVzdCBpbXBsZW1lbnQgRW1iZXIuQXJy
YXkuIFlvdSBwYXNzZWQgJUAiLCBbY29udGVudF0pLCBFbWJlci5BcnJheS5kZXRlY3QoY29udGVu
dCkpOwotICB9LAotCi0gIC8qKgotICAgIFJlbW92ZXMgdGhlIGNvbnRlbnQgYW5kIGNvbnRlbnQg
b2JzZXJ2ZXJzLgotCi0gICAgQG1ldGhvZCBkZXN0cm95Ci0gICovCi0gIGRlc3Ryb3k6IGZ1bmN0
aW9uKCkgewotICAgIGlmICghdGhpcy5fc3VwZXIoKSkgeyByZXR1cm47IH0KLQotICAgIHZhciBj
b250ZW50ID0gZ2V0KHRoaXMsICdjb250ZW50Jyk7Ci0gICAgaWYgKGNvbnRlbnQpIHsgY29udGVu
dC5yZW1vdmVBcnJheU9ic2VydmVyKHRoaXMpOyB9Ci0KLSAgICBpZiAodGhpcy5fY3JlYXRlZEVt
cHR5VmlldykgewotICAgICAgdGhpcy5fY3JlYXRlZEVtcHR5Vmlldy5kZXN0cm95KCk7Ci0gICAg
fQotCi0gICAgcmV0dXJuIHRoaXM7Ci0gIH0sCi0KLSAgLyoqCi0gICAgQ2FsbGVkIHdoZW4gYSBt
dXRhdGlvbiB0byB0aGUgdW5kZXJseWluZyBjb250ZW50IGFycmF5IHdpbGwgb2NjdXIuCi0KLSAg
ICBUaGlzIG1ldGhvZCB3aWxsIHJlbW92ZSBhbnkgdmlld3MgdGhhdCBhcmUgbm8gbG9uZ2VyIGlu
IHRoZSB1bmRlcmx5aW5nCi0gICAgY29udGVudCBhcnJheS4KLQotICAgIEludm9rZXMgd2hlbmV2
ZXIgdGhlIGNvbnRlbnQgYXJyYXkgaXRzZWxmIHdpbGwgY2hhbmdlLgotCi0gICAgQG1ldGhvZCBh
cnJheVdpbGxDaGFuZ2UKLSAgICBAcGFyYW0ge0FycmF5fSBjb250ZW50IHRoZSBtYW5hZ2VkIGNv
bGxlY3Rpb24gb2Ygb2JqZWN0cwotICAgIEBwYXJhbSB7TnVtYmVyfSBzdGFydCB0aGUgaW5kZXgg
YXQgd2hpY2ggdGhlIGNoYW5nZXMgd2lsbCBvY2N1cnIKLSAgICBAcGFyYW0ge051bWJlcn0gcmVt
b3ZlZCBudW1iZXIgb2Ygb2JqZWN0IHRvIGJlIHJlbW92ZWQgZnJvbSBjb250ZW50Ci0gICovCi0g
IGFycmF5V2lsbENoYW5nZTogZnVuY3Rpb24oY29udGVudCwgc3RhcnQsIHJlbW92ZWRDb3VudCkg
ewotICAgIC8vIElmIHRoZSBjb250ZW50cyB3ZXJlIGVtcHR5IGJlZm9yZSBhbmQgdGhpcyB0ZW1w
bGF0ZSBjb2xsZWN0aW9uIGhhcyBhbgotICAgIC8vIGVtcHR5IHZpZXcgcmVtb3ZlIGl0IG5vdy4K
LSAgICB2YXIgZW1wdHlWaWV3ID0gZ2V0KHRoaXMsICdlbXB0eVZpZXcnKTsKLSAgICBpZiAoZW1w
dHlWaWV3ICYmIGVtcHR5VmlldyBpbnN0YW5jZW9mIEVtYmVyLlZpZXcpIHsKLSAgICAgIGVtcHR5
Vmlldy5yZW1vdmVGcm9tUGFyZW50KCk7Ci0gICAgfQotCi0gICAgLy8gTG9vcCB0aHJvdWdoIGNo
aWxkIHZpZXdzIHRoYXQgY29ycmVzcG9uZCB3aXRoIHRoZSByZW1vdmVkIGl0ZW1zLgotICAgIC8v
IE5vdGUgdGhhdCB3ZSBsb29wIGZyb20gdGhlIGVuZCBvZiB0aGUgYXJyYXkgdG8gdGhlIGJlZ2lu
bmluZyBiZWNhdXNlCi0gICAgLy8gd2UgYXJlIG11dGF0aW5nIGl0IGFzIHdlIGdvLgotICAgIHZh
ciBjaGlsZFZpZXdzID0gdGhpcy5fY2hpbGRWaWV3cywgY2hpbGRWaWV3LCBpZHgsIGxlbjsKLQot
ICAgIGxlbiA9IHRoaXMuX2NoaWxkVmlld3MubGVuZ3RoOwotCi0gICAgdmFyIHJlbW92aW5nQWxs
ID0gcmVtb3ZlZENvdW50ID09PSBsZW47Ci0KLSAgICBpZiAocmVtb3ZpbmdBbGwpIHsKLSAgICAg
IHRoaXMuY3VycmVudFN0YXRlLmVtcHR5KHRoaXMpOwotICAgICAgdGhpcy5pbnZva2VSZWN1cnNp
dmVseShmdW5jdGlvbih2aWV3KSB7Ci0gICAgICAgIHZpZXcucmVtb3ZlZEZyb21ET00gPSB0cnVl
OwotICAgICAgfSwgZmFsc2UpOwotICAgIH0KLQotICAgIGZvciAoaWR4ID0gc3RhcnQgKyByZW1v
dmVkQ291bnQgLSAxOyBpZHggPj0gc3RhcnQ7IGlkeC0tKSB7Ci0gICAgICBjaGlsZFZpZXcgPSBj
aGlsZFZpZXdzW2lkeF07Ci0gICAgICBjaGlsZFZpZXcuZGVzdHJveSgpOwotICAgIH0KLSAgfSwK
LQotICAvKioKLSAgICBDYWxsZWQgd2hlbiBhIG11dGF0aW9uIHRvIHRoZSB1bmRlcmx5aW5nIGNv
bnRlbnQgYXJyYXkgb2NjdXJzLgotCi0gICAgVGhpcyBtZXRob2Qgd2lsbCByZXBsYXkgdGhhdCBt
dXRhdGlvbiBhZ2FpbnN0IHRoZSB2aWV3cyB0aGF0IGNvbXBvc2UgdGhlCi0gICAgYEVtYmVyLkNv
bGxlY3Rpb25WaWV3YCwgZW5zdXJpbmcgdGhhdCB0aGUgdmlldyByZWZsZWN0cyB0aGUgbW9kZWwu
Ci0KLSAgICBUaGlzIGFycmF5IG9ic2VydmVyIGlzIGFkZGVkIGluIGBjb250ZW50RGlkQ2hhbmdl
YC4KLQotICAgIEBtZXRob2QgYXJyYXlEaWRDaGFuZ2UKLSAgICBAcGFyYW0ge0FycmF5fSBjb250
ZW50IHRoZSBtYW5hZ2VkIGNvbGxlY3Rpb24gb2Ygb2JqZWN0cwotICAgIEBwYXJhbSB7TnVtYmVy
fSBzdGFydCB0aGUgaW5kZXggYXQgd2hpY2ggdGhlIGNoYW5nZXMgb2NjdXJyZWQKLSAgICBAcGFy
YW0ge051bWJlcn0gcmVtb3ZlZCBudW1iZXIgb2Ygb2JqZWN0IHJlbW92ZWQgZnJvbSBjb250ZW50
Ci0gICAgQHBhcmFtIHtOdW1iZXJ9IGFkZGVkIG51bWJlciBvZiBvYmplY3QgYWRkZWQgdG8gY29u
dGVudAotICAqLwotICBhcnJheURpZENoYW5nZTogZnVuY3Rpb24oY29udGVudCwgc3RhcnQsIHJl
bW92ZWQsIGFkZGVkKSB7Ci0gICAgdmFyIGFkZGVkVmlld3MgPSBbXSwgdmlldywgaXRlbSwgaWR4
LCBsZW4sIGl0ZW1WaWV3Q2xhc3MsCi0gICAgICBlbXB0eVZpZXc7Ci0KLSAgICBsZW4gPSBjb250
ZW50ID8gZ2V0KGNvbnRlbnQsICdsZW5ndGgnKSA6IDA7Ci0KLSAgICBpZiAobGVuKSB7Ci0gICAg
ICBpdGVtVmlld0NsYXNzID0gZ2V0KHRoaXMsICdpdGVtVmlld0NsYXNzJyk7Ci0KLSAgICAgIGlm
ICgnc3RyaW5nJyA9PT0gdHlwZW9mIGl0ZW1WaWV3Q2xhc3MpIHsKLSAgICAgICAgaXRlbVZpZXdD
bGFzcyA9IGdldChpdGVtVmlld0NsYXNzKSB8fCBpdGVtVmlld0NsYXNzOwotICAgICAgfQotCi0g
ICAgICBFbWJlci5hc3NlcnQoZm10KCJpdGVtVmlld0NsYXNzIG11c3QgYmUgYSBzdWJjbGFzcyBv
ZiBFbWJlci5WaWV3LCBub3QgJUAiLCBbaXRlbVZpZXdDbGFzc10pLCAnc3RyaW5nJyA9PT0gdHlw
ZW9mIGl0ZW1WaWV3Q2xhc3MgfHwgRW1iZXIuVmlldy5kZXRlY3QoaXRlbVZpZXdDbGFzcykpOwot
Ci0gICAgICBmb3IgKGlkeCA9IHN0YXJ0OyBpZHggPCBzdGFydCthZGRlZDsgaWR4KyspIHsKLSAg
ICAgICAgaXRlbSA9IGNvbnRlbnQub2JqZWN0QXQoaWR4KTsKLQotICAgICAgICB2aWV3ID0gdGhp
cy5jcmVhdGVDaGlsZFZpZXcoaXRlbVZpZXdDbGFzcywgewotICAgICAgICAgIGNvbnRlbnQ6IGl0
ZW0sCi0gICAgICAgICAgY29udGVudEluZGV4OiBpZHgKLSAgICAgICAgfSk7Ci0KLSAgICAgICAg
YWRkZWRWaWV3cy5wdXNoKHZpZXcpOwotICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICBlbXB0
eVZpZXcgPSBnZXQodGhpcywgJ2VtcHR5VmlldycpOwotCi0gICAgICBpZiAoIWVtcHR5Vmlldykg
eyByZXR1cm47IH0KLQotICAgICAgaWYgKCdzdHJpbmcnID09PSB0eXBlb2YgZW1wdHlWaWV3KSB7
Ci0gICAgICAgIGVtcHR5VmlldyA9IGdldChlbXB0eVZpZXcpIHx8IGVtcHR5VmlldzsKLSAgICAg
IH0KLQotICAgICAgZW1wdHlWaWV3ID0gdGhpcy5jcmVhdGVDaGlsZFZpZXcoZW1wdHlWaWV3KTsK
LSAgICAgIGFkZGVkVmlld3MucHVzaChlbXB0eVZpZXcpOwotICAgICAgc2V0KHRoaXMsICdlbXB0
eVZpZXcnLCBlbXB0eVZpZXcpOwotCi0gICAgICBpZiAoRW1iZXIuQ29yZVZpZXcuZGV0ZWN0KGVt
cHR5VmlldykpIHsKLSAgICAgICAgdGhpcy5fY3JlYXRlZEVtcHR5VmlldyA9IGVtcHR5VmlldzsK
LSAgICAgIH0KLSAgICB9Ci0KLSAgICB0aGlzLnJlcGxhY2Uoc3RhcnQsIDAsIGFkZGVkVmlld3Mp
OwotICB9LAotCi0gIC8qKgotICAgIEluc3RhbnRpYXRlcyBhIHZpZXcgdG8gYmUgYWRkZWQgdG8g
dGhlIGNoaWxkVmlld3MgYXJyYXkgZHVyaW5nIHZpZXcKLSAgICBpbml0aWFsaXphdGlvbi4gWW91
IGdlbmVyYWxseSB3aWxsIG5vdCBjYWxsIHRoaXMgbWV0aG9kIGRpcmVjdGx5IHVubGVzcwotICAg
IHlvdSBhcmUgb3ZlcnJpZGluZyBgY3JlYXRlQ2hpbGRWaWV3cygpYC4gTm90ZSB0aGF0IHRoaXMg
bWV0aG9kIHdpbGwKLSAgICBhdXRvbWF0aWNhbGx5IGNvbmZpZ3VyZSB0aGUgY29ycmVjdCBzZXR0
aW5ncyBvbiB0aGUgbmV3IHZpZXcgaW5zdGFuY2UgdG8KLSAgICBhY3QgYXMgYSBjaGlsZCBvZiB0
aGUgcGFyZW50LgotCi0gICAgVGhlIHRhZyBuYW1lIGZvciB0aGUgdmlldyB3aWxsIGJlIHNldCB0
byB0aGUgdGFnTmFtZSBvZiB0aGUgdmlld0NsYXNzCi0gICAgcGFzc2VkIGluLgotCi0gICAgQG1l
dGhvZCBjcmVhdGVDaGlsZFZpZXcKLSAgICBAcGFyYW0ge0NsYXNzfSB2aWV3Q2xhc3MKLSAgICBA
cGFyYW0ge0hhc2h9IFthdHRyc10gQXR0cmlidXRlcyB0byBhZGQKLSAgICBAcmV0dXJuIHtFbWJl
ci5WaWV3fSBuZXcgaW5zdGFuY2UKLSAgKi8KLSAgY3JlYXRlQ2hpbGRWaWV3OiBmdW5jdGlvbih2
aWV3LCBhdHRycykgewotICAgIHZpZXcgPSB0aGlzLl9zdXBlcih2aWV3LCBhdHRycyk7Ci0KLSAg
ICB2YXIgaXRlbVRhZ05hbWUgPSBnZXQodmlldywgJ3RhZ05hbWUnKTsKLQotICAgIGlmIChpdGVt
VGFnTmFtZSA9PT0gbnVsbCB8fCBpdGVtVGFnTmFtZSA9PT0gdW5kZWZpbmVkKSB7Ci0gICAgICBp
dGVtVGFnTmFtZSA9IEVtYmVyLkNvbGxlY3Rpb25WaWV3LkNPTlRBSU5FUl9NQVBbZ2V0KHRoaXMs
ICd0YWdOYW1lJyldOwotICAgICAgc2V0KHZpZXcsICd0YWdOYW1lJywgaXRlbVRhZ05hbWUpOwot
ICAgIH0KLQotICAgIHJldHVybiB2aWV3OwotICB9Ci19KTsKLQotLyoqCi0gIEEgbWFwIG9mIHBh
cmVudCB0YWdzIHRvIHRoZWlyIGRlZmF1bHQgY2hpbGQgdGFncy4gWW91IGNhbiBhZGQKLSAgYWRk
aXRpb25hbCBwYXJlbnQgdGFncyBpZiB5b3Ugd2FudCBjb2xsZWN0aW9uIHZpZXdzIHRoYXQgdXNl
Ci0gIGEgcGFydGljdWxhciBwYXJlbnQgdGFnIHRvIGRlZmF1bHQgdG8gYSBjaGlsZCB0YWcuCi0K
LSAgQHByb3BlcnR5IENPTlRBSU5FUl9NQVAKLSAgQHR5cGUgSGFzaAotICBAc3RhdGljCi0gIEBm
aW5hbAotKi8KLUVtYmVyLkNvbGxlY3Rpb25WaWV3LkNPTlRBSU5FUl9NQVAgPSB7Ci0gIHVsOiAn
bGknLAotICBvbDogJ2xpJywKLSAgdGFibGU6ICd0cicsCi0gIHRoZWFkOiAndHInLAotICB0Ym9k
eTogJ3RyJywKLSAgdGZvb3Q6ICd0cicsCi0gIHRyOiAndGQnLAotICBzZWxlY3Q6ICdvcHRpb24n
Ci19OwotCi19KSgpOwotCi0KLQotKGZ1bmN0aW9uKCkgewotdmFyIGdldCA9IEVtYmVyLmdldCwg
c2V0ID0gRW1iZXIuc2V0LCBpc05vbmUgPSBFbWJlci5pc05vbmUsCi0gICAgYV9zbGljZSA9IEFy
cmF5LnByb3RvdHlwZS5zbGljZTsKLQotCi0vKioKLUBtb2R1bGUgZW1iZXIKLUBzdWJtb2R1bGUg
ZW1iZXItdmlld3MKLSovCi0KLS8qKgotICBBbiBgRW1iZXIuQ29tcG9uZW50YCBpcyBhIHZpZXcg
dGhhdCBpcyBjb21wbGV0ZWx5Ci0gIGlzb2xhdGVkLiBQcm9wZXJ0eSBhY2Nlc3MgaW4gaXRzIHRl
bXBsYXRlcyBnbwotICB0byB0aGUgdmlldyBvYmplY3QgYW5kIGFjdGlvbnMgYXJlIHRhcmdldGVk
IGF0Ci0gIHRoZSB2aWV3IG9iamVjdC4gVGhlcmUgaXMgbm8gYWNjZXNzIHRvIHRoZQotICBzdXJy
b3VuZGluZyBjb250ZXh0IG9yIG91dGVyIGNvbnRyb2xsZXI7IGFsbAotICBjb250ZXh0dWFsIGlu
Zm9ybWF0aW9uIG11c3QgYmUgcGFzc2VkIGluLgotCi0gIFRoZSBlYXNpZXN0IHdheSB0byBjcmVh
dGUgYW4gYEVtYmVyLkNvbXBvbmVudGAgaXMgdmlhCi0gIGEgdGVtcGxhdGUuIElmIHlvdSBuYW1l
IGEgdGVtcGxhdGUKLSAgYGNvbXBvbmVudHMvbXktZm9vYCwgeW91IHdpbGwgYmUgYWJsZSB0byB1
c2UKLSAgYHt7bXktZm9vfX1gIGluIG90aGVyIHRlbXBsYXRlcywgd2hpY2ggd2lsbCBtYWtlCi0g
IGFuIGluc3RhbmNlIG9mIHRoZSBpc29sYXRlZCBjb21wb25lbnQuCi0KLSAgYGBgaHRtbAotICB7
e2FwcC1wcm9maWxlIHBlcnNvbj1jdXJyZW50VXNlcn19Ci0gIGBgYAotCi0gIGBgYGh0bWwKLSAg
PCEtLSBhcHAtcHJvZmlsZSB0ZW1wbGF0ZSAtLT4KLSAgPGgxPnt7cGVyc29uLnRpdGxlfX08L2gx
PgotICA8aW1nIHt7YmluZC1hdHRyIHNyYz1wZXJzb24uYXZhdGFyfX0+Ci0gIDxwIGNsYXNzPSdz
aWduYXR1cmUnPnt7cGVyc29uLnNpZ25hdHVyZX19PC9wPgotICBgYGAKLQotICBZb3UgY2FuIHVz
ZSBgeWllbGRgIGluc2lkZSBhIHRlbXBsYXRlIHRvCi0gIGluY2x1ZGUgdGhlICoqY29udGVudHMq
KiBvZiBhbnkgYmxvY2sgYXR0YWNoZWQgdG8KLSAgdGhlIGNvbXBvbmVudC4gVGhlIGJsb2NrIHdp
bGwgYmUgZXhlY3V0ZWQgaW4gdGhlCi0gIGNvbnRleHQgb2YgdGhlIHN1cnJvdW5kaW5nIGNvbnRl
eHQgb3Igb3V0ZXIgY29udHJvbGxlcjoKLQotICBgYGBoYW5kbGViYXJzCi0gIHt7I2FwcC1wcm9m
aWxlIHBlcnNvbj1jdXJyZW50VXNlcn19Ci0gICAgPHA+QWRtaW4gbW9kZTwvcD4KLSAgICB7eyEg
RXhlY3V0ZWQgaW4gdGhlIGNvbnRyb2xsZXJzIGNvbnRleHQuIH19Ci0gIHt7L2FwcC1wcm9maWxl
fX0KLSAgYGBgCi0KLSAgYGBgaGFuZGxlYmFycwotICA8IS0tIGFwcC1wcm9maWxlIHRlbXBsYXRl
IC0tPgotICA8aDE+e3twZXJzb24udGl0bGV9fTwvaDE+Ci0gIHt7ISBFeGVjdXRlZCBpbiB0aGUg
Y29tcG9uZW50cyBjb250ZXh0LiB9fQotICB7e3lpZWxkfX0ge3shIGJsb2NrIGNvbnRlbnRzIH19
Ci0gIGBgYAotCi0gIElmIHlvdSB3YW50IHRvIGN1c3RvbWl6ZSB0aGUgY29tcG9uZW50LCBpbiBv
cmRlciB0bwotICBoYW5kbGUgZXZlbnRzIG9yIGFjdGlvbnMsIHlvdSBpbXBsZW1lbnQgYSBzdWJj
bGFzcwotICBvZiBgRW1iZXIuQ29tcG9uZW50YCBuYW1lZCBhZnRlciB0aGUgbmFtZSBvZiB0aGUK
LSAgY29tcG9uZW50LiBOb3RlIHRoYXQgYENvbXBvbmVudGAgbmVlZHMgdG8gYmUgYXBwZW5kZWQg
dG8gdGhlIG5hbWUgb2YKLSAgeW91ciBzdWJjbGFzcyBsaWtlIGBBcHBQcm9maWxlQ29tcG9uZW50
YC4KLQotICBGb3IgZXhhbXBsZSwgeW91IGNvdWxkIGltcGxlbWVudCB0aGUgYWN0aW9uCi0gIGBo
ZWxsb2AgZm9yIHRoZSBgYXBwLXByb2ZpbGVgIGNvbXBvbmVudDoKLQotICBgYGBqYXZhc2NyaXB0
Ci0gIEFwcC5BcHBQcm9maWxlQ29tcG9uZW50ID0gRW1iZXIuQ29tcG9uZW50LmV4dGVuZCh7Ci0g
ICAgYWN0aW9uczogewotICAgICAgaGVsbG86IGZ1bmN0aW9uKG5hbWUpIHsKLSAgICAgICAgY29u
c29sZS5sb2coIkhlbGxvIiwgbmFtZSk7Ci0gICAgICB9Ci0gICAgfQotICB9KTsKLSAgYGBgCi0K
LSAgQW5kIHRoZW4gdXNlIGl0IGluIHRoZSBjb21wb25lbnQncyB0ZW1wbGF0ZToKLQotICBgYGBo
dG1sCi0gIDwhLS0gYXBwLXByb2ZpbGUgdGVtcGxhdGUgLS0+Ci0KLSAgPGgxPnt7cGVyc29uLnRp
dGxlfX08L2gxPgotICB7e3lpZWxkfX0gPCEtLSBibG9jayBjb250ZW50cyAtLT4KLQotICA8YnV0
dG9uIHt7YWN0aW9uICdoZWxsbycgcGVyc29uLm5hbWV9fT4KLSAgICBTYXkgSGVsbG8gdG8ge3tw
ZXJzb24ubmFtZX19Ci0gIDwvYnV0dG9uPgotICBgYGAKLQotICBDb21wb25lbnRzIG11c3QgaGF2
ZSBhIGAtYCBpbiB0aGVpciBuYW1lIHRvIGF2b2lkCi0gIGNvbmZsaWN0cyB3aXRoIGJ1aWx0LWlu
IGNvbnRyb2xzIHRoYXQgd3JhcCBIVE1MCi0gIGVsZW1lbnRzLiBUaGlzIGlzIGNvbnNpc3RlbnQg
d2l0aCB0aGUgc2FtZQotICByZXF1aXJlbWVudCBpbiB3ZWIgY29tcG9uZW50cy4KLQotICBAY2xh
c3MgQ29tcG9uZW50Ci0gIEBuYW1lc3BhY2UgRW1iZXIKLSAgQGV4dGVuZHMgRW1iZXIuVmlldwot
Ki8KLUVtYmVyLkNvbXBvbmVudCA9IEVtYmVyLlZpZXcuZXh0ZW5kKEVtYmVyLlRhcmdldEFjdGlv
blN1cHBvcnQsIHsKLSAgaW5pdDogZnVuY3Rpb24oKSB7Ci0gICAgdGhpcy5fc3VwZXIoKTsKLSAg
ICBzZXQodGhpcywgJ2NvbnRleHQnLCB0aGlzKTsKLSAgICBzZXQodGhpcywgJ2NvbnRyb2xsZXIn
LCB0aGlzKTsKLSAgfSwKLQotICBkZWZhdWx0TGF5b3V0OiBmdW5jdGlvbihvcHRpb25zKXsKLSAg
ICBvcHRpb25zLmRhdGEgPSB7dmlldzogb3B0aW9ucy5fY29udGV4dH07Ci0gICAgRW1iZXIuSGFu
ZGxlYmFycy5oZWxwZXJzWyd5aWVsZCddLmFwcGx5KHRoaXMsIFtvcHRpb25zXSk7Ci0gIH0sCi0K
LSAgLy8gZHVyaW5nIHJlbmRlciwgaXNvbGF0ZSBrZXl3b3JkcwotICBjbG9uZUtleXdvcmRzOiBm
dW5jdGlvbigpIHsKLSAgICByZXR1cm4gewotICAgICAgdmlldzogdGhpcywKLSAgICAgIGNvbnRy
b2xsZXI6IHRoaXMKLSAgICB9OwotICB9LAotCi0gIF95aWVsZDogZnVuY3Rpb24oY29udGV4dCwg
b3B0aW9ucykgewotICAgIHZhciB2aWV3ID0gb3B0aW9ucy5kYXRhLnZpZXcsCi0gICAgICAgIHBh
cmVudFZpZXcgPSB0aGlzLl9wYXJlbnRWaWV3LAotICAgICAgICB0ZW1wbGF0ZSA9IGdldCh0aGlz
LCAndGVtcGxhdGUnKTsKLQotICAgIGlmICh0ZW1wbGF0ZSkgewotICAgICAgRW1iZXIuYXNzZXJ0
KCJBIENvbXBvbmVudCBtdXN0IGhhdmUgYSBwYXJlbnQgdmlldyBpbiBvcmRlciB0byB5aWVsZC4i
LCBwYXJlbnRWaWV3KTsKLQotICAgICAgdmlldy5hcHBlbmRDaGlsZChFbWJlci5WaWV3LCB7Ci0g
ICAgICAgIGlzVmlydHVhbDogdHJ1ZSwKLSAgICAgICAgdGFnTmFtZTogJycsCi0gICAgICAgIF9j
b250ZXh0VmlldzogcGFyZW50VmlldywKLSAgICAgICAgdGVtcGxhdGU6IHRlbXBsYXRlLAotICAg
ICAgICBjb250ZXh0OiBnZXQocGFyZW50VmlldywgJ2NvbnRleHQnKSwKLSAgICAgICAgY29udHJv
bGxlcjogZ2V0KHBhcmVudFZpZXcsICdjb250cm9sbGVyJyksCi0gICAgICAgIHRlbXBsYXRlRGF0
YTogeyBrZXl3b3JkczogcGFyZW50Vmlldy5jbG9uZUtleXdvcmRzKCkgfQotICAgICAgfSk7Ci0g
ICAgfQotICB9LAotCi0gIC8qKgotICAgIElmIHRoZSBjb21wb25lbnQgaXMgY3VycmVudGx5IGlu
c2VydGVkIGludG8gdGhlIERPTSBvZiBhIHBhcmVudCB2aWV3LCB0aGlzCi0gICAgcHJvcGVydHkg
d2lsbCBwb2ludCB0byB0aGUgY29udHJvbGxlciBvZiB0aGUgcGFyZW50IHZpZXcuCi0KLSAgICBA
cHJvcGVydHkgdGFyZ2V0T2JqZWN0Ci0gICAgQHR5cGUgRW1iZXIuQ29udHJvbGxlcgotICAgIEBk
ZWZhdWx0IG51bGwKLSAgKi8KLSAgdGFyZ2V0T2JqZWN0OiBFbWJlci5jb21wdXRlZChmdW5jdGlv
bihrZXkpIHsKLSAgICB2YXIgcGFyZW50VmlldyA9IGdldCh0aGlzLCAnX3BhcmVudFZpZXcnKTsK
LSAgICByZXR1cm4gcGFyZW50VmlldyA/IGdldChwYXJlbnRWaWV3LCAnY29udHJvbGxlcicpIDog
bnVsbDsKLSAgfSkucHJvcGVydHkoJ19wYXJlbnRWaWV3JyksCi0KLSAgLyoqCi0gICAgVHJpZ2dl
cnMgYSBuYW1lZCBhY3Rpb24gb24gdGhlIGNvbnRyb2xsZXIgY29udGV4dCB3aGVyZSB0aGUgY29t
cG9uZW50IGlzIHVzZWQgaWYKLSAgICB0aGlzIGNvbnRyb2xsZXIgaGFzIHJlZ2lzdGVyZWQgZm9y
IG5vdGlmaWNhdGlvbnMgb2YgdGhlIGFjdGlvbi4KLQotICAgIEZvciBleGFtcGxlIGEgY29tcG9u
ZW50IGZvciBwbGF5aW5nIG9yIHBhdXNpbmcgbXVzaWMgbWF5IHRyYW5zbGF0ZSBjbGljayBldmVu
dHMKLSAgICBpbnRvIGFjdGlvbiBub3RpZmljYXRpb25zIG9mICJwbGF5IiBvciAic3RvcCIgZGVw
ZW5kaW5nIG9uIHNvbWUgaW50ZXJuYWwgc3RhdGUKLSAgICBvZiB0aGUgY29tcG9uZW50OgotCi0K
LSAgICBgYGBqYXZhc2NyaXB0Ci0gICAgQXBwLlBsYXlCdXR0b25Db21wb25lbnQgPSBFbWJlci5D
b21wb25lbnQuZXh0ZW5kKHsKLSAgICAgIGNsaWNrOiBmdW5jdGlvbigpewotICAgICAgICBpZiAo
dGhpcy5nZXQoJ2lzUGxheWluZycpKSB7Ci0gICAgICAgICAgdGhpcy50cmlnZ2VyQWN0aW9uKCdw
bGF5Jyk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgdGhpcy50cmlnZ2VyQWN0aW9uKCdz
dG9wJyk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9KTsKLSAgICBgYGAKLQotICAgIFdoZW4g
dXNlZCBpbnNpZGUgYSB0ZW1wbGF0ZSB0aGVzZSBjb21wb25lbnQgYWN0aW9ucyBhcmUgY29uZmln
dXJlZCB0bwotICAgIHRyaWdnZXIgYWN0aW9ucyBpbiB0aGUgb3V0ZXIgYXBwbGljYXRpb24gY29u
dGV4dDoKLQotICAgIGBgYGhhbmRsZWJhcnMKLSAgICB7eyEgYXBwbGljYXRpb24uaGJzIH19Ci0g
ICAge3twbGF5LWJ1dHRvbiBwbGF5PSJtdXNpY1N0YXJ0ZWQiIHN0b3A9Im11c2ljU3RvcHBlZCJ9
fQotICAgIGBgYAotCi0gICAgV2hlbiB0aGUgY29tcG9uZW50IHJlY2VpdmVzIGEgYnJvd3NlciBg
Y2xpY2tgIGV2ZW50IGl0IHRyYW5zbGF0ZSB0aGlzCi0gICAgaW50ZXJhY3Rpb24gaW50byBhcHBs
aWNhdGlvbi1zcGVjaWZpYyBzZW1hbnRpY3MgKCJwbGF5IiBvciAic3RvcCIpIGFuZAotICAgIHRy
aWdnZXJzIHRoZSBzcGVjaWZpZWQgYWN0aW9uIG5hbWUgb24gdGhlIGNvbnRyb2xsZXIgZm9yIHRo
ZSB0ZW1wbGF0ZQotICAgIHdoZXJlIHRoZSBjb21wb25lbnQgaXMgdXNlZDogCi0KLQotICAgIGBg
YGphdmFzY3JpcHQKLSAgICBBcHAuQXBwbGljYXRpb25Db250cm9sbGVyID0gRW1iZXIuQ29udHJv
bGxlci5leHRlbmQoewotICAgICAgYWN0aW9uczogewotICAgICAgICBtdXNpY1N0YXJ0ZWQ6IGZ1
bmN0aW9uKCl7Ci0gICAgICAgICAgLy8gY2FsbGVkIHdoZW4gdGhlIHBsYXkgYnV0dG9uIGlzIGNs
aWNrZWQKLSAgICAgICAgICAvLyBhbmQgdGhlIG11c2ljIHN0YXJ0ZWQgcGxheWluZwotICAgICAg
ICB9LAotICAgICAgICBtdXNpY1N0b3BwZWQ6IGZ1bmN0aW9uKCl7Ci0gICAgICAgICAgLy8gY2Fs
bGVkIHdoZW4gdGhlIHBsYXkgYnV0dG9uIGlzIGNsaWNrZWQKLSAgICAgICAgICAvLyBhbmQgdGhl
IG11c2ljIHN0b3BwZWQgcGxheWluZwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfSk7Ci0gICAg
YGBgCi0KLSAgICBJZiBubyBhY3Rpb24gbmFtZSBpcyBwYXNzZWQgdG8gYHNlbmRBY3Rpb25gIGEg
ZGVmYXVsdCBuYW1lIG9mICJhY3Rpb24iCi0gICAgaXMgYXNzdW1lZC4KLQotICAgIGBgYGphdmFz
Y3JpcHQKLSAgICBBcHAuTmV4dEJ1dHRvbkNvbXBvbmVudCA9IEVtYmVyLkNvbXBvbmVudC5leHRl
bmQoewotICAgICAgY2xpY2s6IGZ1bmN0aW9uKCl7Ci0gICAgICAgIHRoaXMuc2VuZEFjdGlvbigp
OwotICAgICAgfQotICAgIH0pOwotICAgIGBgYAotCi0gICAgYGBgaGFuZGxlYmFycwotICAgIHt7
ISBhcHBsaWNhdGlvbi5oYnMgfX0KLSAgICB7e25leHQtYnV0dG9uIGFjdGlvbj0icGxheU5leHRT
b25nSW5BbGJ1bSJ9fQotICAgIGBgYAotCi0gICAgYGBgamF2YXNjcmlwdAotICAgIEFwcC5BcHBs
aWNhdGlvbkNvbnRyb2xsZXIgPSBFbWJlci5Db250cm9sbGVyLmV4dGVuZCh7Ci0gICAgICBhY3Rp
b25zOiB7Ci0gICAgICAgIHBsYXlOZXh0U29uZ0luQWxidW06IGZ1bmN0aW9uKCl7Ci0gICAgICAg
ICAgLi4uCi0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9KTsKLSAgICBgYGAKLQotICAgIEBtZXRo
b2Qgc2VuZEFjdGlvbgotICAgIEBwYXJhbSBbYWN0aW9uXSB7U3RyaW5nfSB0aGUgYWN0aW9uIHRv
IHRyaWdnZXIKLSAgICBAcGFyYW0gW2NvbnRleHRdIHsqfSBhIGNvbnRleHQgdG8gc2VuZCB3aXRo
IHRoZSBhY3Rpb24KLSAgKi8KLSAgc2VuZEFjdGlvbjogZnVuY3Rpb24oYWN0aW9uKSB7Ci0gICAg
dmFyIGFjdGlvbk5hbWUsCi0gICAgICAgIGNvbnRleHRzID0gYV9zbGljZS5jYWxsKGFyZ3VtZW50
cywgMSk7Ci0KLSAgICAvLyBTZW5kIHRoZSBkZWZhdWx0IGFjdGlvbgotICAgIGlmIChhY3Rpb24g
PT09IHVuZGVmaW5lZCkgewotICAgICAgYWN0aW9uTmFtZSA9IGdldCh0aGlzLCAnYWN0aW9uJyk7
Ci0gICAgICBFbWJlci5hc3NlcnQoIlRoZSBkZWZhdWx0IGFjdGlvbiB3YXMgdHJpZ2dlcmVkIG9u
IHRoZSBjb21wb25lbnQgIiArIHRoaXMudG9TdHJpbmcoKSArCi0gICAgICAgICAgICAgICAgICAg
IiwgYnV0IHRoZSBhY3Rpb24gbmFtZSAoIiArIGFjdGlvbk5hbWUgKyAiKSB3YXMgbm90IGEgc3Ry
aW5nLiIsCi0gICAgICAgICAgICAgICAgICAgaXNOb25lKGFjdGlvbk5hbWUpIHx8IHR5cGVvZiBh
Y3Rpb25OYW1lID09PSAnc3RyaW5nJyk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIGFjdGlvbk5hbWUg
PSBnZXQodGhpcywgYWN0aW9uKTsKLSAgICAgIEVtYmVyLmFzc2VydCgiVGhlICIgKyBhY3Rpb24g
KyAiIGFjdGlvbiB3YXMgdHJpZ2dlcmVkIG9uIHRoZSBjb21wb25lbnQgIiArCi0gICAgICAgICAg
ICAgICAgICAgdGhpcy50b1N0cmluZygpICsgIiwgYnV0IHRoZSBhY3Rpb24gbmFtZSAoIiArIGFj
dGlvbk5hbWUgKwotICAgICAgICAgICAgICAgICAgICIpIHdhcyBub3QgYSBzdHJpbmcuIiwKLSAg
ICAgICAgICAgICAgICAgICBpc05vbmUoYWN0aW9uTmFtZSkgfHwgdHlwZW9mIGFjdGlvbk5hbWUg
PT09ICdzdHJpbmcnKTsKLSAgICB9Ci0KLSAgICAvLyBJZiBubyBhY3Rpb24gbmFtZSBmb3IgdGhh
dCBhY3Rpb24gY291bGQgYmUgZm91bmQsIGp1c3QgYWJvcnQuCi0gICAgaWYgKGFjdGlvbk5hbWUg
PT09IHVuZGVmaW5lZCkgeyByZXR1cm47IH0KLQotICAgIHRoaXMudHJpZ2dlckFjdGlvbih7Ci0g
ICAgICBhY3Rpb246IGFjdGlvbk5hbWUsCi0gICAgICBhY3Rpb25Db250ZXh0OiBjb250ZXh0cwot
ICAgIH0pOwotICB9Ci19KTsKLQotfSkoKTsKLQotCi0KLShmdW5jdGlvbigpIHsKLQotfSkoKTsK
LQotCi0KLShmdW5jdGlvbigpIHsKLS8qKgotYEVtYmVyLlZpZXdUYXJnZXRBY3Rpb25TdXBwb3J0
YCBpcyBhIG1peGluIHRoYXQgY2FuIGJlIGluY2x1ZGVkIGluIGEKLXZpZXcgY2xhc3MgdG8gYWRk
IGEgYHRyaWdnZXJBY3Rpb25gIG1ldGhvZCB3aXRoIHNlbWFudGljcyBzaW1pbGFyIHRvCi10aGUg
SGFuZGxlYmFycyBge3thY3Rpb259fWAgaGVscGVyLiBJdCBwcm92aWRlcyBpbnRlbGxpZ2VudCBk
ZWZhdWx0cwotZm9yIHRoZSBhY3Rpb24ncyB0YXJnZXQ6IHRoZSB2aWV3J3MgY29udHJvbGxlcjsg
YW5kIHRoZSBjb250ZXh0IHRoYXQgaXMKLXNlbnQgd2l0aCB0aGUgYWN0aW9uOiB0aGUgdmlldydz
IGNvbnRleHQuCi0KLU5vdGU6IEluIG5vcm1hbCBFbWJlciB1c2FnZSwgdGhlIGB7e2FjdGlvbn19
YCBoZWxwZXIgaXMgdXN1YWxseSB0aGUgYmVzdAotY2hvaWNlLiBUaGlzIG1peGluIGlzIG1vc3Qg
b2Z0ZW4gdXNlZnVsIHdoZW4geW91IGFyZSBkb2luZyBtb3JlIGNvbXBsZXgKLWV2ZW50IGhhbmRs
aW5nIGluIGN1c3RvbSBWaWV3IHN1YmNsYXNzZXMuCi0KLUZvciBleGFtcGxlOgotCi1gYGBqYXZh
c2NyaXB0Ci1BcHAuU2F2ZUJ1dHRvblZpZXcgPSBFbWJlci5WaWV3LmV4dGVuZChFbWJlci5WaWV3
VGFyZ2V0QWN0aW9uU3VwcG9ydCwgewotICBhY3Rpb246ICdzYXZlJywKLSAgY2xpY2s6IGZ1bmN0
aW9uKCkgewotICAgIHRoaXMudHJpZ2dlckFjdGlvbigpOyAvLyBTZW5kcyB0aGUgYHNhdmVgIGFj
dGlvbiwgYWxvbmcgd2l0aCB0aGUgY3VycmVudCBjb250ZXh0Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIHRvIHRoZSBjdXJyZW50IGNvbnRyb2xsZXIKLSAgfQotfSk7Ci1gYGAKLQotVGhl
IGBhY3Rpb25gIGNhbiBiZSBwcm92aWRlZCBhcyBwcm9wZXJ0aWVzIG9mIGFuIG9wdGlvbmFsIG9i
amVjdCBhcmd1bWVudAotdG8gYHRyaWdnZXJBY3Rpb25gIGFzIHdlbGwuCi0KLWBgYGphdmFzY3Jp
cHQKLUFwcC5TYXZlQnV0dG9uVmlldyA9IEVtYmVyLlZpZXcuZXh0ZW5kKEVtYmVyLlZpZXdUYXJn
ZXRBY3Rpb25TdXBwb3J0LCB7Ci0gIGNsaWNrOiBmdW5jdGlvbigpIHsKLSAgICB0aGlzLnRyaWdn
ZXJBY3Rpb24oewotICAgICAgYWN0aW9uOiAnc2F2ZScKLSAgICB9KTsgLy8gU2VuZHMgdGhlIGBz
YXZlYCBhY3Rpb24sIGFsb25nIHdpdGggdGhlIGN1cnJlbnQgY29udGV4dAotICAgICAgICAvLyB0
byB0aGUgY3VycmVudCBjb250cm9sbGVyCi0gIH0KLX0pOwotYGBgCi0KLUBjbGFzcyBWaWV3VGFy
Z2V0QWN0aW9uU3VwcG9ydAotQG5hbWVzcGFjZSBFbWJlcgotQGV4dGVuZHMgRW1iZXIuVGFyZ2V0
QWN0aW9uU3VwcG9ydAotKi8KLUVtYmVyLlZpZXdUYXJnZXRBY3Rpb25TdXBwb3J0ID0gRW1iZXIu
TWl4aW4uY3JlYXRlKEVtYmVyLlRhcmdldEFjdGlvblN1cHBvcnQsIHsKLSAgLyoqCi0gIEBwcm9w
ZXJ0eSB0YXJnZXQKLSAgKi8KLSAgdGFyZ2V0OiBFbWJlci5jb21wdXRlZC5hbGlhcygnY29udHJv
bGxlcicpLAotICAvKioKLSAgQHByb3BlcnR5IGFjdGlvbkNvbnRleHQKLSAgKi8KLSAgYWN0aW9u
Q29udGV4dDogRW1iZXIuY29tcHV0ZWQuYWxpYXMoJ2NvbnRleHQnKQotfSk7Ci0KLX0pKCk7Ci0K
LQotCi0oZnVuY3Rpb24oKSB7Ci0KLX0pKCk7Ci0KLQotCi0oZnVuY3Rpb24oKSB7Ci0vKioKLUVt
YmVyIFZpZXdzCi0KLUBtb2R1bGUgZW1iZXIKLUBzdWJtb2R1bGUgZW1iZXItdmlld3MKLUByZXF1
aXJlcyBlbWJlci1ydW50aW1lCi1AbWFpbiBlbWJlci12aWV3cwotKi8KLQotfSkoKTsKLQotKGZ1
bmN0aW9uKCkgewotZGVmaW5lKCJtZXRhbW9ycGgiLAotICBbXSwKLSAgZnVuY3Rpb24oKSB7Ci0g
ICAgInVzZSBzdHJpY3QiOwotICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gICAgLy8gUHJvamVj
dDogICBtZXRhbW9ycGgKLSAgICAvLyBDb3B5cmlnaHQ6IMKpMjAxNCBUaWxkZSwgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSAgICB2YXIgSyA9
IGZ1bmN0aW9uKCkge30sCi0gICAgICAgIGd1aWQgPSAwLAotICAgICAgICBkaXNhYmxlUmFuZ2Ug
PSAoZnVuY3Rpb24oKXsKLSAgICAgICAgICBpZiAoJ3VuZGVmaW5lZCcgIT09IHR5cGVvZiBNZXRh
bW9ycGhFTlYpIHsKLSAgICAgICAgICAgIHJldHVybiBNZXRhbW9ycGhFTlYuRElTQUJMRV9SQU5H
RV9BUEk7Ci0gICAgICAgICAgfSBlbHNlIGlmICgndW5kZWZpbmVkJyAhPT0gRU5WKSB7Ci0gICAg
ICAgICAgICByZXR1cm4gRU5WLkRJU0FCTEVfUkFOR0VfQVBJOwotICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgfQotICAgICAgICB9KSgpLAot
Ci0gICAgICAgIC8vIEZlYXR1cmUtZGV0ZWN0IHRoZSBXM0MgcmFuZ2UgQVBJLCB0aGUgZXh0ZW5k
ZWQgY2hlY2sgaXMgZm9yIElFOSB3aGljaCBvbmx5IHBhcnRpYWxseSBzdXBwb3J0cyByYW5nZXMK
LSAgICAgICAgc3VwcG9ydHNSYW5nZSA9ICghZGlzYWJsZVJhbmdlKSAmJiBkb2N1bWVudCAmJiAo
J2NyZWF0ZVJhbmdlJyBpbiBkb2N1bWVudCkgJiYgKHR5cGVvZiBSYW5nZSAhPT0gJ3VuZGVmaW5l
ZCcpICYmIFJhbmdlLnByb3RvdHlwZS5jcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQsCi0KLSAgICAg
ICAgLy8gSW50ZXJuZXQgRXhwbG9yZXIgcHJpb3IgdG8gOSBkb2VzIG5vdCBhbGxvdyBzZXR0aW5n
IGlubmVySFRNTCBpZiB0aGUgZmlyc3QgZWxlbWVudAotICAgICAgICAvLyBpcyBhICJ6ZXJvLXNj
b3BlIiBlbGVtZW50LiBUaGlzIHByb2JsZW0gY2FuIGJlIHdvcmtlZCBhcm91bmQgYnkgbWFraW5n
Ci0gICAgICAgIC8vIHRoZSBmaXJzdCBub2RlIGFuIGludmlzaWJsZSB0ZXh0IG5vZGUuIFdlLCBs
aWtlIE1vZGVybml6ciwgdXNlICZzaHk7Ci0gICAgICAgIG5lZWRzU2h5ID0gZG9jdW1lbnQgJiYg
KGZ1bmN0aW9uKCkgewotICAgICAgICAgIHZhciB0ZXN0RWwgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdkaXYnKTsKLSAgICAgICAgICB0ZXN0RWwuaW5uZXJIVE1MID0gIjxkaXY+PC9kaXY+IjsK
LSAgICAgICAgICB0ZXN0RWwuZmlyc3RDaGlsZC5pbm5lckhUTUwgPSAiPHNjcmlwdD48L3Njcmlw
dD4iOwotICAgICAgICAgIHJldHVybiB0ZXN0RWwuZmlyc3RDaGlsZC5pbm5lckhUTUwgPT09ICcn
OwotICAgICAgICB9KSgpLAotCi0KLSAgICAgICAgLy8gSUUgOCAoYW5kIGxpa2VseSBlYXJsaWVy
KSBsaWtlcyB0byBtb3ZlIHdoaXRlc3BhY2UgcHJlY2VlZGluZwotICAgICAgICAvLyBhIHNjcmlw
dCB0YWcgdG8gYXBwZWFyIGFmdGVyIGl0LiBUaGlzIG1lYW5zIHRoYXQgd2UgY2FuCi0gICAgICAg
IC8vIGFjY2lkZW50YWxseSByZW1vdmUgd2hpdGVzcGFjZSB3aGVuIHVwZGF0aW5nIGEgbW9ycGgu
Ci0gICAgICAgIG1vdmVzV2hpdGVzcGFjZSA9IGRvY3VtZW50ICYmIChmdW5jdGlvbigpIHsKLSAg
ICAgICAgICB2YXIgdGVzdEVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Ci0gICAg
ICAgICAgdGVzdEVsLmlubmVySFRNTCA9ICJUZXN0OiA8c2NyaXB0IHR5cGU9J3RleHQveC1wbGFj
ZWhvbGRlcic+PC9zY3JpcHQ+VmFsdWUiOwotICAgICAgICAgIHJldHVybiB0ZXN0RWwuY2hpbGRO
b2Rlc1swXS5ub2RlVmFsdWUgPT09ICdUZXN0OicgJiYKLSAgICAgICAgICAgICAgICAgIHRlc3RF
bC5jaGlsZE5vZGVzWzJdLm5vZGVWYWx1ZSA9PT0gJyBWYWx1ZSc7Ci0gICAgICAgIH0pKCk7Ci0K
LSAgICAvLyBDb25zdHJ1Y3RvciB0aGF0IHN1cHBvcnRzIGVpdGhlciBNZXRhbW9ycGgoJ2Zvbycp
IG9yIG5ldwotICAgIC8vIE1ldGFtb3JwaCgnZm9vJyk7Ci0gICAgLy8KLSAgICAvLyBUYWtlcyBh
IHN0cmluZyBvZiBIVE1MIGFzIHRoZSBhcmd1bWVudC4KLQotICAgIHZhciBNZXRhbW9ycGggPSBm
dW5jdGlvbihodG1sKSB7Ci0gICAgICB2YXIgc2VsZjsKLQotICAgICAgaWYgKHRoaXMgaW5zdGFu
Y2VvZiBNZXRhbW9ycGgpIHsKLSAgICAgICAgc2VsZiA9IHRoaXM7Ci0gICAgICB9IGVsc2Ugewot
ICAgICAgICBzZWxmID0gbmV3IEsoKTsKLSAgICAgIH0KLQotICAgICAgc2VsZi5pbm5lckhUTUwg
PSBodG1sOwotICAgICAgdmFyIG15R3VpZCA9ICdtZXRhbW9ycGgtJysoZ3VpZCsrKTsKLSAgICAg
IHNlbGYuc3RhcnQgPSBteUd1aWQgKyAnLXN0YXJ0JzsKLSAgICAgIHNlbGYuZW5kID0gbXlHdWlk
ICsgJy1lbmQnOwotCi0gICAgICByZXR1cm4gc2VsZjsKLSAgICB9OwotCi0gICAgSy5wcm90b3R5
cGUgPSBNZXRhbW9ycGgucHJvdG90eXBlOwotCi0gICAgdmFyIHJhbmdlRm9yLCBodG1sRnVuYywg
cmVtb3ZlRnVuYywgb3V0ZXJIVE1MRnVuYywgYXBwZW5kVG9GdW5jLCBhZnRlckZ1bmMsIHByZXBl
bmRGdW5jLCBzdGFydFRhZ0Z1bmMsIGVuZFRhZ0Z1bmM7Ci0KLSAgICBvdXRlckhUTUxGdW5jID0g
ZnVuY3Rpb24oKSB7Ci0gICAgICByZXR1cm4gdGhpcy5zdGFydFRhZygpICsgdGhpcy5pbm5lckhU
TUwgKyB0aGlzLmVuZFRhZygpOwotICAgIH07Ci0KLSAgICBzdGFydFRhZ0Z1bmMgPSBmdW5jdGlv
bigpIHsKLSAgICAgIC8qCi0gICAgICAgKiBXZSByZXBsYWNlIGNoZXZyb24gYnkgaXRzIGhleCBj
b2RlIGluIG9yZGVyIHRvIHByZXZlbnQgZXNjYXBpbmcgcHJvYmxlbXMuCi0gICAgICAgKiBDaGVj
ayB0aGlzIHRocmVhZCBmb3IgbW9yZSBleHBsYWluYXRpb246Ci0gICAgICAgKiBodHRwOi8vc3Rh
Y2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzgyMzEwNDgvd2h5LXVzZS14M2MtaW5zdGVhZC1vZi13
aGVuLWdlbmVyYXRpbmctaHRtbC1mcm9tLWphdmFzY3JpcHQKLSAgICAgICAqLwotICAgICAgcmV0
dXJuICI8c2NyaXB0IGlkPSciICsgdGhpcy5zdGFydCArICInIHR5cGU9J3RleHQveC1wbGFjZWhv
bGRlcic+XHgzQy9zY3JpcHQ+IjsKLSAgICB9OwotCi0gICAgZW5kVGFnRnVuYyA9IGZ1bmN0aW9u
KCkgewotICAgICAgLyoKLSAgICAgICAqIFdlIHJlcGxhY2UgY2hldnJvbiBieSBpdHMgaGV4IGNv
ZGUgaW4gb3JkZXIgdG8gcHJldmVudCBlc2NhcGluZyBwcm9ibGVtcy4KLSAgICAgICAqIENoZWNr
IHRoaXMgdGhyZWFkIGZvciBtb3JlIGV4cGxhaW5hdGlvbjoKLSAgICAgICAqIGh0dHA6Ly9zdGFj
a292ZXJmbG93LmNvbS9xdWVzdGlvbnMvODIzMTA0OC93aHktdXNlLXgzYy1pbnN0ZWFkLW9mLXdo
ZW4tZ2VuZXJhdGluZy1odG1sLWZyb20tamF2YXNjcmlwdAotICAgICAgICovCi0gICAgICByZXR1
cm4gIjxzY3JpcHQgaWQ9JyIgKyB0aGlzLmVuZCArICInIHR5cGU9J3RleHQveC1wbGFjZWhvbGRl
cic+XHgzQy9zY3JpcHQ+IjsKLSAgICB9OwotCi0gICAgLy8gSWYgd2UgaGF2ZSB0aGUgVzNDIHJh
bmdlIEFQSSwgdGhpcyBwcm9jZXNzIGlzIHJlbGF0aXZlbHkgc3RyYWlnaHQgZm9yd2FyZC4KLSAg
ICBpZiAoc3VwcG9ydHNSYW5nZSkgewotCi0gICAgICAvLyBHZXQgYSByYW5nZSBmb3IgdGhlIGN1
cnJlbnQgbW9ycGguIE9wdGlvbmFsbHkgaW5jbHVkZSB0aGUgc3RhcnRpbmcgYW5kCi0gICAgICAv
LyBlbmRpbmcgcGxhY2Vob2xkZXJzLgotICAgICAgcmFuZ2VGb3IgPSBmdW5jdGlvbihtb3JwaCwg
b3V0ZXJUb28pIHsKLSAgICAgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
LSAgICAgICAgdmFyIGJlZm9yZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG1vcnBoLnN0YXJ0
KTsKLSAgICAgICAgdmFyIGFmdGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobW9ycGguZW5k
KTsKLQotICAgICAgICBpZiAob3V0ZXJUb28pIHsKLSAgICAgICAgICByYW5nZS5zZXRTdGFydEJl
Zm9yZShiZWZvcmUpOwotICAgICAgICAgIHJhbmdlLnNldEVuZEFmdGVyKGFmdGVyKTsKLSAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICByYW5nZS5zZXRTdGFydEFmdGVyKGJlZm9yZSk7Ci0gICAg
ICAgICAgcmFuZ2Uuc2V0RW5kQmVmb3JlKGFmdGVyKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJl
dHVybiByYW5nZTsKLSAgICAgIH07Ci0KLSAgICAgIGh0bWxGdW5jID0gZnVuY3Rpb24oaHRtbCwg
b3V0ZXJUb28pIHsKLSAgICAgICAgLy8gZ2V0IGEgcmFuZ2UgZm9yIHRoZSBjdXJyZW50IG1ldGFt
b3JwaCBvYmplY3QKLSAgICAgICAgdmFyIHJhbmdlID0gcmFuZ2VGb3IodGhpcywgb3V0ZXJUb28p
OwotCi0gICAgICAgIC8vIGRlbGV0ZSB0aGUgY29udGVudHMgb2YgdGhlIHJhbmdlLCB3aGljaCB3
aWxsIGJlIHRoZQotICAgICAgICAvLyBub2RlcyBiZXR3ZWVuIHRoZSBzdGFydGluZyBhbmQgZW5k
aW5nIHBsYWNlaG9sZGVyLgotICAgICAgICByYW5nZS5kZWxldGVDb250ZW50cygpOwotCi0gICAg
ICAgIC8vIGNyZWF0ZSBhIG5ldyBkb2N1bWVudCBmcmFnbWVudCBmb3IgdGhlIEhUTUwKLSAgICAg
ICAgdmFyIGZyYWdtZW50ID0gcmFuZ2UuY3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KGh0bWwpOwot
Ci0gICAgICAgIC8vIGluc2VydCB0aGUgZnJhZ21lbnQgaW50byB0aGUgcmFuZ2UKLSAgICAgICAg
cmFuZ2UuaW5zZXJ0Tm9kZShmcmFnbWVudCk7Ci0gICAgICB9OwotCi0gICAgICAvKioKLSAgICAg
ICogQHB1YmxpYwotICAgICAgKgotICAgICAgKiBSZW1vdmUgdGhpcyBvYmplY3QgKGluY2x1ZGlu
ZyBzdGFydGluZyBhbmQgZW5kaW5nCi0gICAgICAqIHBsYWNlaG9sZGVycykuCi0gICAgICAqCi0g
ICAgICAqIEBtZXRob2QgcmVtb3ZlCi0gICAgICAqLwotICAgICAgcmVtb3ZlRnVuYyA9IGZ1bmN0
aW9uKCkgewotICAgICAgICAvLyBnZXQgYSByYW5nZSBmb3IgdGhlIGN1cnJlbnQgbWV0YW1vcnBo
IG9iamVjdCBpbmNsdWRpbmcKLSAgICAgICAgLy8gdGhlIHN0YXJ0aW5nIGFuZCBlbmRpbmcgcGxh
Y2Vob2xkZXJzLgotICAgICAgICB2YXIgcmFuZ2UgPSByYW5nZUZvcih0aGlzLCB0cnVlKTsKLQot
ICAgICAgICAvLyBkZWxldGUgdGhlIGVudGlyZSByYW5nZS4KLSAgICAgICAgcmFuZ2UuZGVsZXRl
Q29udGVudHMoKTsKLSAgICAgIH07Ci0KLSAgICAgIGFwcGVuZFRvRnVuYyA9IGZ1bmN0aW9uKG5v
ZGUpIHsKLSAgICAgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKLSAgICAg
ICAgcmFuZ2Uuc2V0U3RhcnQobm9kZSk7Ci0gICAgICAgIHJhbmdlLmNvbGxhcHNlKGZhbHNlKTsK
LSAgICAgICAgdmFyIGZyYWcgPSByYW5nZS5jcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQodGhpcy5v
dXRlckhUTUwoKSk7Ci0gICAgICAgIG5vZGUuYXBwZW5kQ2hpbGQoZnJhZyk7Ci0gICAgICB9Owot
Ci0gICAgICBhZnRlckZ1bmMgPSBmdW5jdGlvbihodG1sKSB7Ci0gICAgICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Ci0gICAgICAgIHZhciBhZnRlciA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRoaXMuZW5kKTsKLQotICAgICAgICByYW5nZS5zZXRTdGFydEFmdGVyKGFm
dGVyKTsKLSAgICAgICAgcmFuZ2Uuc2V0RW5kQWZ0ZXIoYWZ0ZXIpOwotCi0gICAgICAgIHZhciBm
cmFnbWVudCA9IHJhbmdlLmNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudChodG1sKTsKLSAgICAgICAg
cmFuZ2UuaW5zZXJ0Tm9kZShmcmFnbWVudCk7Ci0gICAgICB9OwotCi0gICAgICBwcmVwZW5kRnVu
YyA9IGZ1bmN0aW9uKGh0bWwpIHsKLSAgICAgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKLSAgICAgICAgdmFyIHN0YXJ0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhp
cy5zdGFydCk7Ci0KLSAgICAgICAgcmFuZ2Uuc2V0U3RhcnRBZnRlcihzdGFydCk7Ci0gICAgICAg
IHJhbmdlLnNldEVuZEFmdGVyKHN0YXJ0KTsKLQotICAgICAgICB2YXIgZnJhZ21lbnQgPSByYW5n
ZS5jcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQoaHRtbCk7Ci0gICAgICAgIHJhbmdlLmluc2VydE5v
ZGUoZnJhZ21lbnQpOwotICAgICAgfTsKLQotICAgIH0gZWxzZSB7Ci0gICAgICAvKgotICAgICAg
ICogVGhpcyBjb2RlIGlzIG1vc3RseSB0YWtlbiBmcm9tIGpRdWVyeSwgd2l0aCBvbmUgZXhjZXB0
aW9uLiBJbiBqUXVlcnkncyBjYXNlLCB3ZQotICAgICAgICogaGF2ZSBzb21lIEhUTUwgYW5kIHdl
IG5lZWQgdG8gZmlndXJlIG91dCBob3cgdG8gY29udmVydCBpdCBpbnRvIHNvbWUgbm9kZXMuCi0g
ICAgICAgKgotICAgICAgICogSW4gdGhpcyBjYXNlLCBqUXVlcnkgbmVlZHMgdG8gc2NhbiB0aGUg
SFRNTCBsb29raW5nIGZvciBhbiBvcGVuaW5nIHRhZyBhbmQgdXNlCi0gICAgICAgKiB0aGF0IGFz
IHRoZSBrZXkgZm9yIHRoZSB3cmFwIG1hcC4gSW4gb3VyIGNhc2UsIHdlIGtub3cgdGhlIHBhcmVu
dCBub2RlLCBhbmQKLSAgICAgICAqIGNhbiB1c2UgaXRzIHR5cGUgYXMgdGhlIGtleSBmb3IgdGhl
IHdyYXAgbWFwLgotICAgICAgICoqLwotICAgICAgdmFyIHdyYXBNYXAgPSB7Ci0gICAgICAgIHNl
bGVjdDogWyAxLCAiPHNlbGVjdCBtdWx0aXBsZT0nbXVsdGlwbGUnPiIsICI8L3NlbGVjdD4iIF0s
Ci0gICAgICAgIGZpZWxkc2V0OiBbIDEsICI8ZmllbGRzZXQ+IiwgIjwvZmllbGRzZXQ+IiBdLAot
ICAgICAgICB0YWJsZTogWyAxLCAiPHRhYmxlPiIsICI8L3RhYmxlPiIgXSwKLSAgICAgICAgdGJv
ZHk6IFsgMiwgIjx0YWJsZT48dGJvZHk+IiwgIjwvdGJvZHk+PC90YWJsZT4iIF0sCi0gICAgICAg
IHRyOiBbIDMsICI8dGFibGU+PHRib2R5Pjx0cj4iLCAiPC90cj48L3Rib2R5PjwvdGFibGU+IiBd
LAotICAgICAgICBjb2xncm91cDogWyAyLCAiPHRhYmxlPjx0Ym9keT48L3Rib2R5Pjxjb2xncm91
cD4iLCAiPC9jb2xncm91cD48L3RhYmxlPiIgXSwKLSAgICAgICAgbWFwOiBbIDEsICI8bWFwPiIs
ICI8L21hcD4iIF0sCi0gICAgICAgIF9kZWZhdWx0OiBbIDAsICIiLCAiIiBdCi0gICAgICB9Owot
Ci0gICAgICB2YXIgZmluZENoaWxkQnlJZCA9IGZ1bmN0aW9uKGVsZW1lbnQsIGlkKSB7Ci0gICAg
ICAgIGlmIChlbGVtZW50LmdldEF0dHJpYnV0ZSgnaWQnKSA9PT0gaWQpIHsgcmV0dXJuIGVsZW1l
bnQ7IH0KLQotICAgICAgICB2YXIgbGVuID0gZWxlbWVudC5jaGlsZE5vZGVzLmxlbmd0aCwgaWR4
LCBub2RlLCBmb3VuZDsKLSAgICAgICAgZm9yIChpZHg9MDsgaWR4PGxlbjsgaWR4KyspIHsKLSAg
ICAgICAgICBub2RlID0gZWxlbWVudC5jaGlsZE5vZGVzW2lkeF07Ci0gICAgICAgICAgZm91bmQg
PSBub2RlLm5vZGVUeXBlID09PSAxICYmIGZpbmRDaGlsZEJ5SWQobm9kZSwgaWQpOwotICAgICAg
ICAgIGlmIChmb3VuZCkgeyByZXR1cm4gZm91bmQ7IH0KLSAgICAgICAgfQotICAgICAgfTsKLQot
ICAgICAgdmFyIHNldElubmVySFRNTCA9IGZ1bmN0aW9uKGVsZW1lbnQsIGh0bWwpIHsKLSAgICAg
ICAgdmFyIG1hdGNoZXMgPSBbXTsKLSAgICAgICAgaWYgKG1vdmVzV2hpdGVzcGFjZSkgewotICAg
ICAgICAgIC8vIFJpZ2h0IG5vdyB3ZSBvbmx5IGNoZWNrIGZvciBzY3JpcHQgdGFncyB3aXRoIGlk
cyB3aXRoIHRoZQotICAgICAgICAgIC8vIGdvYWwgb2YgdGFyZ2V0aW5nIG1vcnBocy4KLSAgICAg
ICAgICBodG1sID0gaHRtbC5yZXBsYWNlKC8oXHMrKSg8c2NyaXB0IGlkPScoW14nXSspJykvZywg
ZnVuY3Rpb24obWF0Y2gsIHNwYWNlcywgdGFnLCBpZCkgewotICAgICAgICAgICAgbWF0Y2hlcy5w
dXNoKFtpZCwgc3BhY2VzXSk7Ci0gICAgICAgICAgICByZXR1cm4gdGFnOwotICAgICAgICAgIH0p
OwotICAgICAgICB9Ci0KLSAgICAgICAgZWxlbWVudC5pbm5lckhUTUwgPSBodG1sOwotCi0gICAg
ICAgIC8vIElmIHdlIGhhdmUgdG8gZG8gYW55IHdoaXRlc3BhY2UgYWRqdXN0bWVudHMgZG8gdGhl
bSBub3cKLSAgICAgICAgaWYgKG1hdGNoZXMubGVuZ3RoID4gMCkgewotICAgICAgICAgIHZhciBs
ZW4gPSBtYXRjaGVzLmxlbmd0aCwgaWR4OwotICAgICAgICAgIGZvciAoaWR4PTA7IGlkeDxsZW47
IGlkeCsrKSB7Ci0gICAgICAgICAgICB2YXIgc2NyaXB0ID0gZmluZENoaWxkQnlJZChlbGVtZW50
LCBtYXRjaGVzW2lkeF1bMF0pLAotICAgICAgICAgICAgICAgIG5vZGUgPSBkb2N1bWVudC5jcmVh
dGVUZXh0Tm9kZShtYXRjaGVzW2lkeF1bMV0pOwotICAgICAgICAgICAgc2NyaXB0LnBhcmVudE5v
ZGUuaW5zZXJ0QmVmb3JlKG5vZGUsIHNjcmlwdCk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgICB9OwotCi0gICAgICAvKgotICAgICAgICogR2l2ZW4gYSBwYXJlbnQgbm9kZSBhbmQgc29t
ZSBIVE1MLCBnZW5lcmF0ZSBhIHNldCBvZiBub2Rlcy4gUmV0dXJuIHRoZSBmaXJzdAotICAgICAg
ICogbm9kZSwgd2hpY2ggd2lsbCBhbGxvdyB1cyB0byB0cmF2ZXJzZSB0aGUgcmVzdCB1c2luZyBu
ZXh0U2libGluZy4KLSAgICAgICAqCi0gICAgICAgKiBXZSBuZWVkIHRvIGRvIHRoaXMgYmVjYXVz
ZSBpbm5lckhUTUwgaW4gSUUgZG9lcyBub3QgcmVhbGx5IHBhcnNlIHRoZSBub2Rlcy4KLSAgICAg
ICAqLwotICAgICAgdmFyIGZpcnN0Tm9kZUZvciA9IGZ1bmN0aW9uKHBhcmVudE5vZGUsIGh0bWwp
IHsKLSAgICAgICAgdmFyIGFyciA9IHdyYXBNYXBbcGFyZW50Tm9kZS50YWdOYW1lLnRvTG93ZXJD
YXNlKCldIHx8IHdyYXBNYXAuX2RlZmF1bHQ7Ci0gICAgICAgIHZhciBkZXB0aCA9IGFyclswXSwg
c3RhcnQgPSBhcnJbMV0sIGVuZCA9IGFyclsyXTsKLQotICAgICAgICBpZiAobmVlZHNTaHkpIHsg
aHRtbCA9ICcmc2h5OycraHRtbDsgfQotCi0gICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnZGl2Jyk7Ci0KLSAgICAgICAgc2V0SW5uZXJIVE1MKGVsZW1lbnQsIHN0
YXJ0ICsgaHRtbCArIGVuZCk7Ci0KLSAgICAgICAgZm9yICh2YXIgaT0wOyBpPD1kZXB0aDsgaSsr
KSB7Ci0gICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQuZmlyc3RDaGlsZDsKLSAgICAgICAgfQot
Ci0gICAgICAgIC8vIExvb2sgZm9yICZzaHk7IHRvIHJlbW92ZSBpdC4KLSAgICAgICAgaWYgKG5l
ZWRzU2h5KSB7Ci0gICAgICAgICAgdmFyIHNoeUVsZW1lbnQgPSBlbGVtZW50OwotCi0gICAgICAg
ICAgLy8gU29tZXRpbWVzIHdlIGdldCBuYW1lbGVzcyBlbGVtZW50cyB3aXRoIHRoZSBzaHkgaW5z
aWRlCi0gICAgICAgICAgd2hpbGUgKHNoeUVsZW1lbnQubm9kZVR5cGUgPT09IDEgJiYgIXNoeUVs
ZW1lbnQubm9kZU5hbWUpIHsKLSAgICAgICAgICAgIHNoeUVsZW1lbnQgPSBzaHlFbGVtZW50LmZp
cnN0Q2hpbGQ7Ci0gICAgICAgICAgfQotCi0gICAgICAgICAgLy8gQXQgdGhpcyBwb2ludCBpdCdz
IHRoZSBhY3R1YWwgdW5pY29kZSBjaGFyYWN0ZXIuCi0gICAgICAgICAgaWYgKHNoeUVsZW1lbnQu
bm9kZVR5cGUgPT09IDMgJiYgc2h5RWxlbWVudC5ub2RlVmFsdWUuY2hhckF0KDApID09PSAiXHUw
MEFEIikgewotICAgICAgICAgICAgc2h5RWxlbWVudC5ub2RlVmFsdWUgPSBzaHlFbGVtZW50Lm5v
ZGVWYWx1ZS5zbGljZSgxKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1
cm4gZWxlbWVudDsKLSAgICAgIH07Ci0KLSAgICAgIC8qCi0gICAgICAgKiBJbiBzb21lIGNhc2Vz
LCBJbnRlcm5ldCBFeHBsb3JlciBjYW4gY3JlYXRlIGFuIGFub255bW91cyBub2RlIGluCi0gICAg
ICAgKiB0aGUgaGllcmFyY2h5IHdpdGggbm8gdGFnTmFtZS4gWW91IGNhbiBjcmVhdGUgdGhpcyBz
Y2VuYXJpbyB2aWE6Ci0gICAgICAgKgotICAgICAgICogICAgIGRpdiA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICogICAgIGRpdi5pbm5lckhUTUwgPSAiPHRhYmxlPiZz
aHk8c2NyaXB0Pjwvc2NyaXB0Pjx0cj48dGQ+aGk8L3RkPjwvdHI+PC90YWJsZT4iOwotICAgICAg
ICogICAgIGRpdi5maXJzdENoaWxkLmZpcnN0Q2hpbGQudGFnTmFtZSAvLz0+ICIiCi0gICAgICAg
KgotICAgICAgICogSWYgb3VyIHNjcmlwdCBtYXJrZXJzIGFyZSBpbnNpZGUgc3VjaCBhIG5vZGUs
IHdlIG5lZWQgdG8gZmluZCB0aGF0Ci0gICAgICAgKiBub2RlIGFuZCB1c2UgKml0KiBhcyB0aGUg
bWFya2VyLgotICAgICAgICovCi0gICAgICB2YXIgcmVhbE5vZGUgPSBmdW5jdGlvbihzdGFydCkg
ewotICAgICAgICB3aGlsZSAoc3RhcnQucGFyZW50Tm9kZS50YWdOYW1lID09PSAiIikgewotICAg
ICAgICAgIHN0YXJ0ID0gc3RhcnQucGFyZW50Tm9kZTsKLSAgICAgICAgfQotCi0gICAgICAgIHJl
dHVybiBzdGFydDsKLSAgICAgIH07Ci0KLSAgICAgIC8qCi0gICAgICAgKiBXaGVuIGF1dG9tYXRp
Y2FsbHkgYWRkaW5nIGEgdGJvZHksIEludGVybmV0IEV4cGxvcmVyIGluc2VydHMgdGhlCi0gICAg
ICAgKiB0Ym9keSBpbW1lZGlhdGVseSBiZWZvcmUgdGhlIGZpcnN0IDx0cj4uIE90aGVyIGJyb3dz
ZXJzIGNyZWF0ZSBpdAotICAgICAgICogYmVmb3JlIHRoZSBmaXJzdCBub2RlLCBubyBtYXR0ZXIg
d2hhdC4KLSAgICAgICAqCi0gICAgICAgKiBUaGlzIG1lYW5zIHRoZSB0aGUgZm9sbG93aW5nIGNv
ZGU6Ci0gICAgICAgKgotICAgICAgICogICAgIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpOwotICAgICAgICogICAgIGRpdi5pbm5lckhUTUwgPSAiPHRhYmxlPjxzY3JpcHQgaWQ9
J2ZpcnN0Jz48L3NjcmlwdD48dHI+PHRkPmhpPC90ZD48L3RyPjxzY3JpcHQgaWQ9J2xhc3QnPjwv
c2NyaXB0PjwvdGFibGU+Ci0gICAgICAgKgotICAgICAgICogR2VuZXJhdGVzIHRoZSBmb2xsb3dp
bmcgRE9NIGluIElFOgotICAgICAgICoKLSAgICAgICAqICAgICArIGRpdgotICAgICAgICogICAg
ICAgKyB0YWJsZQotICAgICAgICogICAgICAgICAtIHNjcmlwdCBpZD0nZmlyc3QnCi0gICAgICAg
KiAgICAgICAgICsgdGJvZHkKLSAgICAgICAqICAgICAgICAgICArIHRyCi0gICAgICAgKiAgICAg
ICAgICAgICArIHRkCi0gICAgICAgKiAgICAgICAgICAgICAgIC0gImhpIgotICAgICAgICogICAg
ICAgICAgIC0gc2NyaXB0IGlkPSdsYXN0JwotICAgICAgICoKLSAgICAgICAqIFdoaWNoIG1lYW5z
IHRoYXQgdGhlIHR3byBzY3JpcHQgdGFncywgZXZlbiB0aG91Z2ggdGhleSB3ZXJlCi0gICAgICAg
KiBpbnNlcnRlZCBhdCB0aGUgc2FtZSBwb2ludCBpbiB0aGUgaGllcmFyY2h5IGluIHRoZSBvcmln
aW5hbAotICAgICAgICogSFRNTCwgbm93IGhhdmUgZGlmZmVyZW50IHBhcmVudHMuCi0gICAgICAg
KgotICAgICAgICogVGhpcyBjb2RlIHJlcGFyZW50cyB0aGUgZmlyc3Qgc2NyaXB0IHRhZyBieSBt
YWtpbmcgaXQgdGhlIHRib2R5J3MKLSAgICAgICAqIGZpcnN0IGNoaWxkLgotICAgICAgICoKLSAg
ICAgICAqLwotICAgICAgdmFyIGZpeFBhcmVudGFnZSA9IGZ1bmN0aW9uKHN0YXJ0LCBlbmQpIHsK
LSAgICAgICAgaWYgKHN0YXJ0LnBhcmVudE5vZGUgIT09IGVuZC5wYXJlbnROb2RlKSB7Ci0gICAg
ICAgICAgZW5kLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHN0YXJ0LCBlbmQucGFyZW50Tm9kZS5m
aXJzdENoaWxkKTsKLSAgICAgICAgfQotICAgICAgfTsKLQotICAgICAgaHRtbEZ1bmMgPSBmdW5j
dGlvbihodG1sLCBvdXRlclRvbykgewotICAgICAgICAvLyBnZXQgdGhlIHJlYWwgc3RhcnRpbmcg
bm9kZS4gc2VlIHJlYWxOb2RlIGZvciBkZXRhaWxzLgotICAgICAgICB2YXIgc3RhcnQgPSByZWFs
Tm9kZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLnN0YXJ0KSk7Ci0gICAgICAgIHZhciBl
bmQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLmVuZCk7Ci0gICAgICAgIHZhciBwYXJl
bnROb2RlID0gZW5kLnBhcmVudE5vZGU7Ci0gICAgICAgIHZhciBub2RlLCBuZXh0U2libGluZywg
bGFzdDsKLQotICAgICAgICAvLyBtYWtlIHN1cmUgdGhhdCB0aGUgc3RhcnQgYW5kIGVuZCBub2Rl
cyBzaGFyZSB0aGUgc2FtZQotICAgICAgICAvLyBwYXJlbnQuIElmIG5vdCwgZml4IGl0LgotICAg
ICAgICBmaXhQYXJlbnRhZ2Uoc3RhcnQsIGVuZCk7Ci0KLSAgICAgICAgLy8gcmVtb3ZlIGFsbCBv
ZiB0aGUgbm9kZXMgYWZ0ZXIgdGhlIHN0YXJ0aW5nIHBsYWNlaG9sZGVyIGFuZAotICAgICAgICAv
LyBiZWZvcmUgdGhlIGVuZGluZyBwbGFjZWhvbGRlci4KLSAgICAgICAgbm9kZSA9IHN0YXJ0Lm5l
eHRTaWJsaW5nOwotICAgICAgICB3aGlsZSAobm9kZSkgewotICAgICAgICAgIG5leHRTaWJsaW5n
ID0gbm9kZS5uZXh0U2libGluZzsKLSAgICAgICAgICBsYXN0ID0gbm9kZSA9PT0gZW5kOwotCi0g
ICAgICAgICAgLy8gaWYgdGhpcyBpcyB0aGUgbGFzdCBub2RlLCBhbmQgd2Ugd2FudCB0byByZW1v
dmUgaXQgYXMgd2VsbCwKLSAgICAgICAgICAvLyBzZXQgdGhlIGBlbmRgIG5vZGUgdG8gdGhlIG5l
eHQgc2libGluZy4gVGhpcyBpcyBiZWNhdXNlCi0gICAgICAgICAgLy8gZm9yIHRoZSByZXN0IG9m
IHRoZSBmdW5jdGlvbiwgd2UgaW5zZXJ0IHRoZSBuZXcgbm9kZXMKLSAgICAgICAgICAvLyBiZWZv
cmUgdGhlIGVuZCAobm90ZSB0aGF0IGluc2VydEJlZm9yZShub2RlLCBudWxsKSBpcwotICAgICAg
ICAgIC8vIHRoZSBzYW1lIGFzIGFwcGVuZENoaWxkKG5vZGUpKS4KLSAgICAgICAgICAvLwotICAg
ICAgICAgIC8vIGlmIHdlIGRvIG5vdCB3YW50IHRvIHJlbW92ZSBpdCwganVzdCBicmVhay4KLSAg
ICAgICAgICBpZiAobGFzdCkgewotICAgICAgICAgICAgaWYgKG91dGVyVG9vKSB7IGVuZCA9IG5v
ZGUubmV4dFNpYmxpbmc7IH0gZWxzZSB7IGJyZWFrOyB9Ci0gICAgICAgICAgfQotCi0gICAgICAg
ICAgbm9kZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG5vZGUpOwotCi0gICAgICAgICAgLy8gaWYg
dGhpcyBpcyB0aGUgbGFzdCBub2RlIGFuZCB3ZSBkaWRuJ3QgYnJlYWsgYmVmb3JlCi0gICAgICAg
ICAgLy8gKGJlY2F1c2Ugd2Ugd2FudGVkIHRvIHJlbW92ZSB0aGUgb3V0ZXIgbm9kZXMpLCBicmVh
awotICAgICAgICAgIC8vIG5vdy4KLSAgICAgICAgICBpZiAobGFzdCkgeyBicmVhazsgfQotCi0g
ICAgICAgICAgbm9kZSA9IG5leHRTaWJsaW5nOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gZ2V0
IHRoZSBmaXJzdCBub2RlIGZvciB0aGUgSFRNTCBzdHJpbmcsIGV2ZW4gaW4gY2FzZXMgbGlrZQot
ICAgICAgICAvLyB0YWJsZXMgYW5kIGxpc3RzIHdoZXJlIGEgc2ltcGxlIGlubmVySFRNTCBvbiBh
IGRpdiB3b3VsZAotICAgICAgICAvLyBzd2FsbG93IHNvbWUgb2YgdGhlIGNvbnRlbnQuCi0gICAg
ICAgIG5vZGUgPSBmaXJzdE5vZGVGb3Ioc3RhcnQucGFyZW50Tm9kZSwgaHRtbCk7Ci0KLSAgICAg
ICAgaWYgKG91dGVyVG9vKSB7Ci0gICAgICAgICAgc3RhcnQucGFyZW50Tm9kZS5yZW1vdmVDaGls
ZChzdGFydCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBjb3B5IHRoZSBub2RlcyBmb3IgdGhl
IEhUTUwgYmV0d2VlbiB0aGUgc3RhcnRpbmcgYW5kIGVuZGluZwotICAgICAgICAvLyBwbGFjZWhv
bGRlci4KLSAgICAgICAgd2hpbGUgKG5vZGUpIHsKLSAgICAgICAgICBuZXh0U2libGluZyA9IG5v
ZGUubmV4dFNpYmxpbmc7Ci0gICAgICAgICAgcGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobm9kZSwg
ZW5kKTsKLSAgICAgICAgICBub2RlID0gbmV4dFNpYmxpbmc7Ci0gICAgICAgIH0KLSAgICAgIH07
Ci0KLSAgICAgIC8vIHJlbW92ZSB0aGUgbm9kZXMgaW4gdGhlIERPTSByZXByZXNlbnRpbmcgdGhp
cyBtZXRhbW9ycGguCi0gICAgICAvLwotICAgICAgLy8gdGhpcyBpbmNsdWRlcyB0aGUgc3RhcnRp
bmcgYW5kIGVuZGluZyBwbGFjZWhvbGRlcnMuCi0gICAgICByZW1vdmVGdW5jID0gZnVuY3Rpb24o
KSB7Ci0gICAgICAgIHZhciBzdGFydCA9IHJlYWxOb2RlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRoaXMuc3RhcnQpKTsKLSAgICAgICAgdmFyIGVuZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRoaXMuZW5kKTsKLQotICAgICAgICB0aGlzLmh0bWwoJycpOwotICAgICAgICBzdGFydC5wYXJl
bnROb2RlLnJlbW92ZUNoaWxkKHN0YXJ0KTsKLSAgICAgICAgZW5kLnBhcmVudE5vZGUucmVtb3Zl
Q2hpbGQoZW5kKTsKLSAgICAgIH07Ci0KLSAgICAgIGFwcGVuZFRvRnVuYyA9IGZ1bmN0aW9uKHBh
cmVudE5vZGUpIHsKLSAgICAgICAgdmFyIG5vZGUgPSBmaXJzdE5vZGVGb3IocGFyZW50Tm9kZSwg
dGhpcy5vdXRlckhUTUwoKSk7Ci0gICAgICAgIHZhciBuZXh0U2libGluZzsKLQotICAgICAgICB3
aGlsZSAobm9kZSkgewotICAgICAgICAgIG5leHRTaWJsaW5nID0gbm9kZS5uZXh0U2libGluZzsK
LSAgICAgICAgICBwYXJlbnROb2RlLmFwcGVuZENoaWxkKG5vZGUpOwotICAgICAgICAgIG5vZGUg
PSBuZXh0U2libGluZzsKLSAgICAgICAgfQotICAgICAgfTsKLQotICAgICAgYWZ0ZXJGdW5jID0g
ZnVuY3Rpb24oaHRtbCkgewotICAgICAgICAvLyBnZXQgdGhlIHJlYWwgc3RhcnRpbmcgbm9kZS4g
c2VlIHJlYWxOb2RlIGZvciBkZXRhaWxzLgotICAgICAgICB2YXIgZW5kID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGhpcy5lbmQpOwotICAgICAgICB2YXIgaW5zZXJ0QmVmb3JlID0gZW5kLm5l
eHRTaWJsaW5nOwotICAgICAgICB2YXIgcGFyZW50Tm9kZSA9IGVuZC5wYXJlbnROb2RlOwotICAg
ICAgICB2YXIgbmV4dFNpYmxpbmc7Ci0gICAgICAgIHZhciBub2RlOwotCi0gICAgICAgIC8vIGdl
dCB0aGUgZmlyc3Qgbm9kZSBmb3IgdGhlIEhUTUwgc3RyaW5nLCBldmVuIGluIGNhc2VzIGxpa2UK
LSAgICAgICAgLy8gdGFibGVzIGFuZCBsaXN0cyB3aGVyZSBhIHNpbXBsZSBpbm5lckhUTUwgb24g
YSBkaXYgd291bGQKLSAgICAgICAgLy8gc3dhbGxvdyBzb21lIG9mIHRoZSBjb250ZW50LgotICAg
ICAgICBub2RlID0gZmlyc3ROb2RlRm9yKHBhcmVudE5vZGUsIGh0bWwpOwotCi0gICAgICAgIC8v
IGNvcHkgdGhlIG5vZGVzIGZvciB0aGUgSFRNTCBiZXR3ZWVuIHRoZSBzdGFydGluZyBhbmQgZW5k
aW5nCi0gICAgICAgIC8vIHBsYWNlaG9sZGVyLgotICAgICAgICB3aGlsZSAobm9kZSkgewotICAg
ICAgICAgIG5leHRTaWJsaW5nID0gbm9kZS5uZXh0U2libGluZzsKLSAgICAgICAgICBwYXJlbnRO
b2RlLmluc2VydEJlZm9yZShub2RlLCBpbnNlcnRCZWZvcmUpOwotICAgICAgICAgIG5vZGUgPSBu
ZXh0U2libGluZzsKLSAgICAgICAgfQotICAgICAgfTsKLQotICAgICAgcHJlcGVuZEZ1bmMgPSBm
dW5jdGlvbihodG1sKSB7Ci0gICAgICAgIHZhciBzdGFydCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRoaXMuc3RhcnQpOwotICAgICAgICB2YXIgcGFyZW50Tm9kZSA9IHN0YXJ0LnBhcmVudE5v
ZGU7Ci0gICAgICAgIHZhciBuZXh0U2libGluZzsKLSAgICAgICAgdmFyIG5vZGU7Ci0KLSAgICAg
ICAgbm9kZSA9IGZpcnN0Tm9kZUZvcihwYXJlbnROb2RlLCBodG1sKTsKLSAgICAgICAgdmFyIGlu
c2VydEJlZm9yZSA9IHN0YXJ0Lm5leHRTaWJsaW5nOwotCi0gICAgICAgIHdoaWxlIChub2RlKSB7
Ci0gICAgICAgICAgbmV4dFNpYmxpbmcgPSBub2RlLm5leHRTaWJsaW5nOwotICAgICAgICAgIHBh
cmVudE5vZGUuaW5zZXJ0QmVmb3JlKG5vZGUsIGluc2VydEJlZm9yZSk7Ci0gICAgICAgICAgbm9k
ZSA9IG5leHRTaWJsaW5nOwotICAgICAgICB9Ci0gICAgICB9OwotICAgIH0KLQotICAgIE1ldGFt
b3JwaC5wcm90b3R5cGUuaHRtbCA9IGZ1bmN0aW9uKGh0bWwpIHsKLSAgICAgIHRoaXMuY2hlY2tS
ZW1vdmVkKCk7Ci0gICAgICBpZiAoaHRtbCA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB0aGlzLmlu
bmVySFRNTDsgfQotCi0gICAgICBodG1sRnVuYy5jYWxsKHRoaXMsIGh0bWwpOwotCi0gICAgICB0
aGlzLmlubmVySFRNTCA9IGh0bWw7Ci0gICAgfTsKLQotICAgIE1ldGFtb3JwaC5wcm90b3R5cGUu
cmVwbGFjZVdpdGggPSBmdW5jdGlvbihodG1sKSB7Ci0gICAgICB0aGlzLmNoZWNrUmVtb3ZlZCgp
OwotICAgICAgaHRtbEZ1bmMuY2FsbCh0aGlzLCBodG1sLCB0cnVlKTsKLSAgICB9OwotCi0gICAg
TWV0YW1vcnBoLnByb3RvdHlwZS5yZW1vdmUgPSByZW1vdmVGdW5jOwotICAgIE1ldGFtb3JwaC5w
cm90b3R5cGUub3V0ZXJIVE1MID0gb3V0ZXJIVE1MRnVuYzsKLSAgICBNZXRhbW9ycGgucHJvdG90
eXBlLmFwcGVuZFRvID0gYXBwZW5kVG9GdW5jOwotICAgIE1ldGFtb3JwaC5wcm90b3R5cGUuYWZ0
ZXIgPSBhZnRlckZ1bmM7Ci0gICAgTWV0YW1vcnBoLnByb3RvdHlwZS5wcmVwZW5kID0gcHJlcGVu
ZEZ1bmM7Ci0gICAgTWV0YW1vcnBoLnByb3RvdHlwZS5zdGFydFRhZyA9IHN0YXJ0VGFnRnVuYzsK
LSAgICBNZXRhbW9ycGgucHJvdG90eXBlLmVuZFRhZyA9IGVuZFRhZ0Z1bmM7Ci0KLSAgICBNZXRh
bW9ycGgucHJvdG90eXBlLmlzUmVtb3ZlZCA9IGZ1bmN0aW9uKCkgewotICAgICAgdmFyIGJlZm9y
ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuc3RhcnQpOwotICAgICAgdmFyIGFmdGVy
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5lbmQpOwotCi0gICAgICByZXR1cm4gIWJl
Zm9yZSB8fCAhYWZ0ZXI7Ci0gICAgfTsKLQotICAgIE1ldGFtb3JwaC5wcm90b3R5cGUuY2hlY2tS
ZW1vdmVkID0gZnVuY3Rpb24oKSB7Ci0gICAgICBpZiAodGhpcy5pc1JlbW92ZWQoKSkgewotICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBwZXJmb3JtIG9wZXJhdGlvbnMgb24gYSBNZXRh
bW9ycGggdGhhdCBpcyBub3QgaW4gdGhlIERPTS4iKTsKLSAgICAgIH0KLSAgICB9OwotCi0gICAg
cmV0dXJuIE1ldGFtb3JwaDsKLSAgfSk7Ci0KLX0pKCk7Ci0KLShmdW5jdGlvbigpIHsKLS8qKgot
QG1vZHVsZSBlbWJlcgotQHN1Ym1vZHVsZSBlbWJlci1oYW5kbGViYXJzLWNvbXBpbGVyCi0qLwot
Ci0vLyBFbGltaW5hdGUgZGVwZW5kZW5jeSBvbiBhbnkgRW1iZXIgdG8gc2ltcGxpZnkgcHJlY29t
cGlsYXRpb24gd29ya2Zsb3cKLXZhciBvYmplY3RDcmVhdGUgPSBPYmplY3QuY3JlYXRlIHx8IGZ1
bmN0aW9uKHBhcmVudCkgewotICBmdW5jdGlvbiBGKCkge30KLSAgRi5wcm90b3R5cGUgPSBwYXJl
bnQ7Ci0gIHJldHVybiBuZXcgRigpOwotfTsKLQotdmFyIEhhbmRsZWJhcnMgPSAoRW1iZXIuaW1w
b3J0cyAmJiBFbWJlci5pbXBvcnRzLkhhbmRsZWJhcnMpIHx8ICh0aGlzICYmIHRoaXMuSGFuZGxl
YmFycyk7Ci1pZiAoIUhhbmRsZWJhcnMgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicp
IHsKLSAgSGFuZGxlYmFycyA9IHJlcXVpcmUoJ2hhbmRsZWJhcnMnKTsKLX0KLQotRW1iZXIuYXNz
ZXJ0KCJFbWJlciBIYW5kbGViYXJzIHJlcXVpcmVzIEhhbmRsZWJhcnMgdmVyc2lvbiAxLjAgb3Ig
MS4xLiBJbmNsdWRlICIgKwotICAgICAgICAgICAgICJhIFNDUklQVCB0YWcgaW4gdGhlIEhUTUwg
SEVBRCBsaW5raW5nIHRvIHRoZSBIYW5kbGViYXJzIGZpbGUgIiArCi0gICAgICAgICAgICAgImJl
Zm9yZSB5b3UgbGluayB0byBFbWJlci4iLCBIYW5kbGViYXJzKTsKLQotRW1iZXIuYXNzZXJ0KCJF
bWJlciBIYW5kbGViYXJzIHJlcXVpcmVzIEhhbmRsZWJhcnMgdmVyc2lvbiAxLjAgb3IgMS4xLCAi
ICsKLSAgICAgICAgICAgICAiQ09NUElMRVJfUkVWSVNJT04gZXhwZWN0ZWQ6IDQsIGdvdDogIiAr
ICBIYW5kbGViYXJzLkNPTVBJTEVSX1JFVklTSU9OICsKLSAgICAgICAgICAgICAiIC0gUGxlYXNl
IG5vdGU6IEJ1aWxkcyBvZiBtYXN0ZXIgbWF5IGhhdmUgb3RoZXIgQ09NUElMRVJfUkVWSVNJT04g
dmFsdWVzLiIsCi0gICAgICAgICAgICAgSGFuZGxlYmFycy5DT01QSUxFUl9SRVZJU0lPTiA9PT0g
NCk7Ci0KLS8qKgotICBQcmVwYXJlcyB0aGUgSGFuZGxlYmFycyB0ZW1wbGF0aW5nIGxpYnJhcnkg
Zm9yIHVzZSBpbnNpZGUgRW1iZXIncyB2aWV3Ci0gIHN5c3RlbS4KLQotICBUaGUgYEVtYmVyLkhh
bmRsZWJhcnNgIG9iamVjdCBpcyB0aGUgc3RhbmRhcmQgSGFuZGxlYmFycyBsaWJyYXJ5LCBleHRl
bmRlZCB0bwotICB1c2UgRW1iZXIncyBgZ2V0KClgIG1ldGhvZCBpbnN0ZWFkIG9mIGRpcmVjdCBw
cm9wZXJ0eSBhY2Nlc3MsIHdoaWNoIGFsbG93cwotICBjb21wdXRlZCBwcm9wZXJ0aWVzIHRvIGJl
IHVzZWQgaW5zaWRlIHRlbXBsYXRlcy4KLQotICBUbyBjcmVhdGUgYW4gYEVtYmVyLkhhbmRsZWJh
cnNgIHRlbXBsYXRlLCBjYWxsIGBFbWJlci5IYW5kbGViYXJzLmNvbXBpbGUoKWAuCi0gIFRoaXMg
d2lsbCByZXR1cm4gYSBmdW5jdGlvbiB0aGF0IGNhbiBiZSB1c2VkIGJ5IGBFbWJlci5WaWV3YCBm
b3IgcmVuZGVyaW5nLgotCi0gIEBjbGFzcyBIYW5kbGViYXJzCi0gIEBuYW1lc3BhY2UgRW1iZXIK
LSovCi1FbWJlci5IYW5kbGViYXJzID0gb2JqZWN0Q3JlYXRlKEhhbmRsZWJhcnMpOwotCi0vKioK
LSAgUmVnaXN0ZXIgYSBib3VuZCBoZWxwZXIgb3IgY3VzdG9tIHZpZXcgaGVscGVyLgotCi0gICMj
IFNpbXBsZSBib3VuZCBoZWxwZXIgZXhhbXBsZQotCi0gIGBgYGphdmFzY3JpcHQKLSAgRW1iZXIu
SGFuZGxlYmFycy5oZWxwZXIoJ2NhcGl0YWxpemUnLCBmdW5jdGlvbih2YWx1ZSkgewotICAgIHJl
dHVybiB2YWx1ZS50b1VwcGVyQ2FzZSgpOwotICB9KTsKLSAgYGBgCi0KLSAgVGhlIGFib3ZlIGJv
dW5kIGhlbHBlciBjYW4gYmUgdXNlZCBpbnNpZGUgb2YgdGVtcGxhdGVzIGFzIGZvbGxvd3M6Ci0K
LSAgYGBgaGFuZGxlYmFycwotICB7e2NhcGl0YWxpemUgbmFtZX19Ci0gIGBgYAotCi0gIEluIHRo
aXMgY2FzZSwgd2hlbiB0aGUgYG5hbWVgIHByb3BlcnR5IG9mIHRoZSB0ZW1wbGF0ZSdzIGNvbnRl
eHQgY2hhbmdlcywKLSAgdGhlIHJlbmRlcmVkIHZhbHVlIG9mIHRoZSBoZWxwZXIgd2lsbCB1cGRh
dGUgdG8gcmVmbGVjdCB0aGlzIGNoYW5nZS4KLQotICBGb3IgbW9yZSBleGFtcGxlcyBvZiBib3Vu
ZCBoZWxwZXJzLCBzZWUgZG9jdW1lbnRhdGlvbiBmb3IKLSAgYEVtYmVyLkhhbmRsZWJhcnMucmVn
aXN0ZXJCb3VuZEhlbHBlcmAuCi0KLSAgIyMgQ3VzdG9tIHZpZXcgaGVscGVyIGV4YW1wbGUKLQot
ICBBc3N1bWluZyBhIHZpZXcgc3ViY2xhc3MgbmFtZWQgYEFwcC5DYWxlbmRhclZpZXdgIHdlcmUg
ZGVmaW5lZCwgYSBoZWxwZXIKLSAgZm9yIHJlbmRlcmluZyBpbnN0YW5jZXMgb2YgdGhpcyB2aWV3
IGNvdWxkIGJlIHJlZ2lzdGVyZWQgYXMgZm9sbG93czoKLQotICBgYGBqYXZhc2NyaXB0Ci0gIEVt
YmVyLkhhbmRsZWJhcnMuaGVscGVyKCdjYWxlbmRhcicsIEFwcC5DYWxlbmRhclZpZXcpOgotICBg
YGAKLQotICBUaGUgYWJvdmUgYm91bmQgaGVscGVyIGNhbiBiZSB1c2VkIGluc2lkZSBvZiB0ZW1w
bGF0ZXMgYXMgZm9sbG93czoKLQotICBgYGBoYW5kbGViYXJzCi0gIHt7Y2FsZW5kYXJ9fQotICBg
YGAKLQotICBXaGljaCBpcyBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCB0bzoKLQotICBgYGBoYW5k
bGViYXJzCi0gIHt7dmlldyBBcHAuQ2FsZW5kYXJWaWV3fX0KLSAgYGBgCi0KLSAgT3B0aW9ucyBp
biB0aGUgaGVscGVyIHdpbGwgYmUgcGFzc2VkIHRvIHRoZSB2aWV3IGluIGV4YWN0bHkgdGhlIHNh
bWUKLSAgbWFubmVyIGFzIHdpdGggdGhlIGB2aWV3YCBoZWxwZXIuCi0KLSAgQG1ldGhvZCBoZWxw
ZXIKLSAgQGZvciBFbWJlci5IYW5kbGViYXJzCi0gIEBwYXJhbSB7U3RyaW5nfSBuYW1lCi0gIEBw
YXJhbSB7RnVuY3Rpb258RW1iZXIuVmlld30gZnVuY3Rpb24gb3IgdmlldyBjbGFzcyBjb25zdHJ1
Y3RvcgotICBAcGFyYW0ge1N0cmluZ30gZGVwZW5kZW50S2V5cyoKLSovCi1FbWJlci5IYW5kbGVi
YXJzLmhlbHBlciA9IGZ1bmN0aW9uKG5hbWUsIHZhbHVlKSB7Ci0gIEVtYmVyLmFzc2VydCgiWW91
IHRyaWVkIHRvIHJlZ2lzdGVyIGEgY29tcG9uZW50IG5hbWVkICciICsgbmFtZSArICInLCBidXQg
Y29tcG9uZW50IG5hbWVzIG11c3QgaW5jbHVkZSBhICctJyIsICFFbWJlci5Db21wb25lbnQuZGV0
ZWN0KHZhbHVlKSB8fCBuYW1lLm1hdGNoKC8tLykpOwotCi0gIGlmIChFbWJlci5WaWV3LmRldGVj
dCh2YWx1ZSkpIHsKLSAgICBFbWJlci5IYW5kbGViYXJzLnJlZ2lzdGVySGVscGVyKG5hbWUsIEVt
YmVyLkhhbmRsZWJhcnMubWFrZVZpZXdIZWxwZXIodmFsdWUpKTsKLSAgfSBlbHNlIHsKLSAgICBF
bWJlci5IYW5kbGViYXJzLnJlZ2lzdGVyQm91bmRIZWxwZXIuYXBwbHkobnVsbCwgYXJndW1lbnRz
KTsKLSAgfQotfTsKLQotLyoqCi0gIFJldHVybnMgYSBoZWxwZXIgZnVuY3Rpb24gdGhhdCByZW5k
ZXJzIHRoZSBwcm92aWRlZCBWaWV3Q2xhc3MuCi0KLSAgVXNlZCBpbnRlcm5hbGx5IGJ5IEVtYmVy
LkhhbmRsZWJhcnMuaGVscGVyIGFuZCBvdGhlciBtZXRob2RzCi0gIGludm9sdmluZyBoZWxwZXIv
Y29tcG9uZW50IHJlZ2lzdHJhdGlvbi4KLQotICBAcHJpdmF0ZQotICBAbWV0aG9kIGhlbHBlcgot
ICBAZm9yIEVtYmVyLkhhbmRsZWJhcnMKLSAgQHBhcmFtIHtGdW5jdGlvbn0gVmlld0NsYXNzIHZp
ZXcgY2xhc3MgY29uc3RydWN0b3IKLSovCi1FbWJlci5IYW5kbGViYXJzLm1ha2VWaWV3SGVscGVy
ID0gZnVuY3Rpb24oVmlld0NsYXNzKSB7Ci0gIHJldHVybiBmdW5jdGlvbihvcHRpb25zKSB7Ci0g
ICAgRW1iZXIuYXNzZXJ0KCJZb3UgY2FuIG9ubHkgcGFzcyBhdHRyaWJ1dGVzIChzdWNoIGFzIG5h
bWU9dmFsdWUpIG5vdCBiYXJlIHZhbHVlcyB0byBhIGhlbHBlciBmb3IgYSBWaWV3IGZvdW5kIGlu
ICciICsgVmlld0NsYXNzLnRvU3RyaW5nKCkgKyAiJyIsIGFyZ3VtZW50cy5sZW5ndGggPCAyKTsK
LSAgICByZXR1cm4gRW1iZXIuSGFuZGxlYmFycy5oZWxwZXJzLnZpZXcuY2FsbCh0aGlzLCBWaWV3
Q2xhc3MsIG9wdGlvbnMpOwotICB9OwotfTsKLQotLyoqCi1AY2xhc3MgaGVscGVycwotQG5hbWVz
cGFjZSBFbWJlci5IYW5kbGViYXJzCi0qLwotRW1iZXIuSGFuZGxlYmFycy5oZWxwZXJzID0gb2Jq
ZWN0Q3JlYXRlKEhhbmRsZWJhcnMuaGVscGVycyk7Ci0KLS8qKgotICBPdmVycmlkZSB0aGUgdGhl
IG9wY29kZSBjb21waWxlciBhbmQgSmF2YVNjcmlwdCBjb21waWxlciBmb3IgSGFuZGxlYmFycy4K
LQotICBAY2xhc3MgQ29tcGlsZXIKLSAgQG5hbWVzcGFjZSBFbWJlci5IYW5kbGViYXJzCi0gIEBw
cml2YXRlCi0gIEBjb25zdHJ1Y3RvcgotKi8KLUVtYmVyLkhhbmRsZWJhcnMuQ29tcGlsZXIgPSBm
dW5jdGlvbigpIHt9OwotCi0vLyBIYW5kbGViYXJzLkNvbXBpbGVyIGRvZXNuJ3QgZXhpc3QgaW4g
cnVudGltZS1vbmx5Ci1pZiAoSGFuZGxlYmFycy5Db21waWxlcikgewotICBFbWJlci5IYW5kbGVi
YXJzLkNvbXBpbGVyLnByb3RvdHlwZSA9IG9iamVjdENyZWF0ZShIYW5kbGViYXJzLkNvbXBpbGVy
LnByb3RvdHlwZSk7Ci19Ci0KLUVtYmVyLkhhbmRsZWJhcnMuQ29tcGlsZXIucHJvdG90eXBlLmNv
bXBpbGVyID0gRW1iZXIuSGFuZGxlYmFycy5Db21waWxlcjsKLQotLyoqCi0gIEBjbGFzcyBKYXZh
U2NyaXB0Q29tcGlsZXIKLSAgQG5hbWVzcGFjZSBFbWJlci5IYW5kbGViYXJzCi0gIEBwcml2YXRl
Ci0gIEBjb25zdHJ1Y3RvcgotKi8KLUVtYmVyLkhhbmRsZWJhcnMuSmF2YVNjcmlwdENvbXBpbGVy
ID0gZnVuY3Rpb24oKSB7fTsKLQotLy8gSGFuZGxlYmFycy5KYXZhU2NyaXB0Q29tcGlsZXIgZG9l
c24ndCBleGlzdCBpbiBydW50aW1lLW9ubHkKLWlmIChIYW5kbGViYXJzLkphdmFTY3JpcHRDb21w
aWxlcikgewotICBFbWJlci5IYW5kbGViYXJzLkphdmFTY3JpcHRDb21waWxlci5wcm90b3R5cGUg
PSBvYmplY3RDcmVhdGUoSGFuZGxlYmFycy5KYXZhU2NyaXB0Q29tcGlsZXIucHJvdG90eXBlKTsK
LSAgRW1iZXIuSGFuZGxlYmFycy5KYXZhU2NyaXB0Q29tcGlsZXIucHJvdG90eXBlLmNvbXBpbGVy
ID0gRW1iZXIuSGFuZGxlYmFycy5KYXZhU2NyaXB0Q29tcGlsZXI7Ci19Ci0KLQotRW1iZXIuSGFu
ZGxlYmFycy5KYXZhU2NyaXB0Q29tcGlsZXIucHJvdG90eXBlLm5hbWVzcGFjZSA9ICJFbWJlci5I
YW5kbGViYXJzIjsKLQotRW1iZXIuSGFuZGxlYmFycy5KYXZhU2NyaXB0Q29tcGlsZXIucHJvdG90
eXBlLmluaXRpYWxpemVCdWZmZXIgPSBmdW5jdGlvbigpIHsKLSAgcmV0dXJuICInJyI7Ci19Owot
Ci0vKioKLSAgT3ZlcnJpZGUgdGhlIGRlZmF1bHQgYnVmZmVyIGZvciBFbWJlciBIYW5kbGViYXJz
LiBCeSBkZWZhdWx0LCBIYW5kbGViYXJzCi0gIGNyZWF0ZXMgYW4gZW1wdHkgU3RyaW5nIGF0IHRo
ZSBiZWdpbm5pbmcgb2YgZWFjaCBpbnZvY2F0aW9uIGFuZCBhcHBlbmRzIHRvCi0gIGl0LiBFbWJl
cidzIEhhbmRsZWJhcnMgb3ZlcnJpZGVzIHRoaXMgdG8gYXBwZW5kIHRvIGEgc2luZ2xlIHNoYXJl
ZCBidWZmZXIuCi0KLSAgQHByaXZhdGUKLSAgQG1ldGhvZCBhcHBlbmRUb0J1ZmZlcgotICBAcGFy
YW0gc3RyaW5nIHtTdHJpbmd9Ci0qLwotRW1iZXIuSGFuZGxlYmFycy5KYXZhU2NyaXB0Q29tcGls
ZXIucHJvdG90eXBlLmFwcGVuZFRvQnVmZmVyID0gZnVuY3Rpb24oc3RyaW5nKSB7Ci0gIHJldHVy
biAiZGF0YS5idWZmZXIucHVzaCgiK3N0cmluZysiKTsiOwotfTsKLQotLy8gSGFja3MgYWhlYWQ6
Ci0vLyBIYW5kbGViYXJzIHByZXNlbnRseSBoYXMgYSBidWcgd2hlcmUgdGhlIGBibG9ja0hlbHBl
ck1pc3NpbmdgIGhvb2sKLS8vIGRvZXNuJ3QgZ2V0IHBhc3NlZCB0aGUgbmFtZSBvZiB0aGUgbWlz
c2luZyBoZWxwZXIgbmFtZSwgYnV0IHJhdGhlcgotLy8gZ2V0cyBwYXNzZWQgdGhlIHZhbHVlIG9m
IHRoYXQgbWlzc2luZyBoZWxwZXIgZXZhbHVhdGVkIG9uIHRoZSBjdXJyZW50Ci0vLyBjb250ZXh0
LCB3aGljaCBpcyBtb3N0IGxpa2VseSBgdW5kZWZpbmVkYCBhbmQgdG90YWxseSB1c2VsZXNzLgot
Ly8KLS8vIFNvIHdlIGFsdGVyIHRoZSBjb21waWxlZCB0ZW1wbGF0ZSBmdW5jdGlvbiB0byBwYXNz
IHRoZSBuYW1lIG9mIHRoZSBoZWxwZXIKLS8vIGluc3RlYWQsIGFzIGV4cGVjdGVkLgotLy8KLS8v
IFRoaXMgY2FuIGdvIGF3YXkgb25jZSB0aGUgZm9sbG93aW5nIGlzIGNsb3NlZDoKLS8vIGh0dHBz
Oi8vZ2l0aHViLmNvbS93eWNhdHMvaGFuZGxlYmFycy5qcy9pc3N1ZXMvNjM0Ci0KLXZhciBET1Rf
TE9PS1VQX1JFR0VYID0gL2hlbHBlcnNcLiguKj8pXCkvLAotICAgIEJSQUNLRVRfU1RSSU5HX0xP
T0tVUF9SRUdFWCA9IC9oZWxwZXJzXFsnKC4qPyknLywKLSAgICBJTlZPQ0FUSU9OX1NQTElUVElO
R19SRUdFWCA9IC8oLipibG9ja0hlbHBlck1pc3NpbmdcLmNhbGxcKC4qKShzdGFja1swLTldKyko
LC4qKS87Ci0KLUVtYmVyLkhhbmRsZWJhcnMuSmF2YVNjcmlwdENvbXBpbGVyLnN0cmluZ2lmeUxh
c3RCbG9ja0hlbHBlck1pc3NpbmdJbnZvY2F0aW9uID0gZnVuY3Rpb24oc291cmNlKSB7Ci0gIHZh
ciBoZWxwZXJJbnZvY2F0aW9uID0gc291cmNlW3NvdXJjZS5sZW5ndGggLSAxXSwKLSAgICAgIGhl
bHBlck5hbWUgPSAoRE9UX0xPT0tVUF9SRUdFWC5leGVjKGhlbHBlckludm9jYXRpb24pIHx8IEJS
QUNLRVRfU1RSSU5HX0xPT0tVUF9SRUdFWC5leGVjKGhlbHBlckludm9jYXRpb24pKVsxXSwKLSAg
ICAgIG1hdGNoZXMgPSBJTlZPQ0FUSU9OX1NQTElUVElOR19SRUdFWC5leGVjKGhlbHBlckludm9j
YXRpb24pOwotCi0gIHNvdXJjZVtzb3VyY2UubGVuZ3RoIC0gMV0gPSBtYXRjaGVzWzFdICsgIici
ICsgaGVscGVyTmFtZSArICInIiArIG1hdGNoZXNbM107Ci19Ci12YXIgc3RyaW5naWZ5QmxvY2tI
ZWxwZXJNaXNzaW5nID0gRW1iZXIuSGFuZGxlYmFycy5KYXZhU2NyaXB0Q29tcGlsZXIuc3RyaW5n
aWZ5TGFzdEJsb2NrSGVscGVyTWlzc2luZ0ludm9jYXRpb247Ci0KLXZhciBvcmlnaW5hbEJsb2Nr
VmFsdWUgPSBFbWJlci5IYW5kbGViYXJzLkphdmFTY3JpcHRDb21waWxlci5wcm90b3R5cGUuYmxv
Y2tWYWx1ZTsKLUVtYmVyLkhhbmRsZWJhcnMuSmF2YVNjcmlwdENvbXBpbGVyLnByb3RvdHlwZS5i
bG9ja1ZhbHVlID0gZnVuY3Rpb24oKSB7Ci0gIG9yaWdpbmFsQmxvY2tWYWx1ZS5hcHBseSh0aGlz
LCBhcmd1bWVudHMpOwotICBzdHJpbmdpZnlCbG9ja0hlbHBlck1pc3NpbmcodGhpcy5zb3VyY2Up
OwotfTsKLQotdmFyIG9yaWdpbmFsQW1iaWd1b3VzQmxvY2tWYWx1ZSA9IEVtYmVyLkhhbmRsZWJh
cnMuSmF2YVNjcmlwdENvbXBpbGVyLnByb3RvdHlwZS5hbWJpZ3VvdXNCbG9ja1ZhbHVlOwotRW1i
ZXIuSGFuZGxlYmFycy5KYXZhU2NyaXB0Q29tcGlsZXIucHJvdG90eXBlLmFtYmlndW91c0Jsb2Nr
VmFsdWUgPSBmdW5jdGlvbigpIHsKLSAgb3JpZ2luYWxBbWJpZ3VvdXNCbG9ja1ZhbHVlLmFwcGx5
KHRoaXMsIGFyZ3VtZW50cyk7Ci0gIHN0cmluZ2lmeUJsb2NrSGVscGVyTWlzc2luZyh0aGlzLnNv
dXJjZSk7Ci19OwotCi12YXIgcHJlZml4ID0gImVtYmVyIiArICgrbmV3IERhdGUoKSksIGluY3Ig
PSAxOwotCi0vKioKLSAgUmV3cml0ZSBzaW1wbGUgbXVzdGFjaGVzIGZyb20gYHt7Zm9vfX1gIHRv
IGB7e2JpbmQgImZvbyJ9fWAuIFRoaXMgbWVhbnMgdGhhdAotICBhbGwgc2ltcGxlIG11c3RhY2hl
cyBpbiBFbWJlcidzIEhhbmRsZWJhcnMgd2lsbCBhbHNvIHNldCB1cCBhbiBvYnNlcnZlciB0bwot
ICBrZWVwIHRoZSBET00gdXAgdG8gZGF0ZSB3aGVuIHRoZSB1bmRlcmx5aW5nIHByb3BlcnR5IGNo
YW5nZXMuCi0KLSAgQHByaXZhdGUKLSAgQG1ldGhvZCBtdXN0YWNoZQotICBAZm9yIEVtYmVyLkhh
bmRsZWJhcnMuQ29tcGlsZXIKLSAgQHBhcmFtIG11c3RhY2hlCi0qLwotRW1iZXIuSGFuZGxlYmFy
cy5Db21waWxlci5wcm90b3R5cGUubXVzdGFjaGUgPSBmdW5jdGlvbihtdXN0YWNoZSkgewotICBp
ZiAobXVzdGFjaGUuaXNIZWxwZXIgJiYgbXVzdGFjaGUuaWQuc3RyaW5nID09PSAnY29udHJvbCcp
IHsKLSAgICBtdXN0YWNoZS5oYXNoID0gbXVzdGFjaGUuaGFzaCB8fCBuZXcgSGFuZGxlYmFycy5B
U1QuSGFzaE5vZGUoW10pOwotICAgIG11c3RhY2hlLmhhc2gucGFpcnMucHVzaChbImNvbnRyb2xJ
RCIsIG5ldyBIYW5kbGViYXJzLkFTVC5TdHJpbmdOb2RlKHByZWZpeCArIGluY3IrKyldKTsKLSAg
fSBlbHNlIGlmIChtdXN0YWNoZS5wYXJhbXMubGVuZ3RoIHx8IG11c3RhY2hlLmhhc2gpIHsKLSAg
ICAvLyBubyBjaGFuZ2VzIHJlcXVpcmVkCi0gIH0gZWxzZSB7Ci0gICAgdmFyIGlkID0gbmV3IEhh
bmRsZWJhcnMuQVNULklkTm9kZShbeyBwYXJ0OiAnX3RyaWFnZU11c3RhY2hlJyB9XSk7Ci0KLSAg
ICAvLyBVcGRhdGUgdGhlIG11c3RhY2hlIG5vZGUgdG8gaW5jbHVkZSBhIGhhc2ggdmFsdWUgaW5k
aWNhdGluZyB3aGV0aGVyIHRoZSBvcmlnaW5hbCBub2RlCi0gICAgLy8gd2FzIGVzY2FwZWQuIFRo
aXMgd2lsbCBhbGxvdyB1cyB0byBwcm9wZXJseSBlc2NhcGUgdmFsdWVzIHdoZW4gdGhlIHVuZGVy
bHlpbmcgdmFsdWUKLSAgICAvLyBjaGFuZ2VzIGFuZCB3ZSBuZWVkIHRvIHJlLXJlbmRlciB0aGUg
dmFsdWUuCi0gICAgaWYgKCFtdXN0YWNoZS5lc2NhcGVkKSB7Ci0gICAgICBtdXN0YWNoZS5oYXNo
ID0gbXVzdGFjaGUuaGFzaCB8fCBuZXcgSGFuZGxlYmFycy5BU1QuSGFzaE5vZGUoW10pOwotICAg
ICAgbXVzdGFjaGUuaGFzaC5wYWlycy5wdXNoKFsidW5lc2NhcGVkIiwgbmV3IEhhbmRsZWJhcnMu
QVNULlN0cmluZ05vZGUoInRydWUiKV0pOwotICAgIH0KLSAgICBtdXN0YWNoZSA9IG5ldyBIYW5k
bGViYXJzLkFTVC5NdXN0YWNoZU5vZGUoW2lkXS5jb25jYXQoW211c3RhY2hlLmlkXSksIG11c3Rh
Y2hlLmhhc2gsICFtdXN0YWNoZS5lc2NhcGVkKTsKLSAgfQotCi0gIHJldHVybiBIYW5kbGViYXJz
LkNvbXBpbGVyLnByb3RvdHlwZS5tdXN0YWNoZS5jYWxsKHRoaXMsIG11c3RhY2hlKTsKLX07Ci0K
LS8qKgotICBVc2VkIGZvciBwcmVjb21waWxhdGlvbiBvZiBFbWJlciBIYW5kbGViYXJzIHRlbXBs
YXRlcy4gVGhpcyB3aWxsIG5vdCBiZSB1c2VkCi0gIGR1cmluZyBub3JtYWwgYXBwIGV4ZWN1dGlv
bi4KLQotICBAbWV0aG9kIHByZWNvbXBpbGUKLSAgQGZvciBFbWJlci5IYW5kbGViYXJzCi0gIEBz
dGF0aWMKLSAgQHBhcmFtIHtTdHJpbmd9IHN0cmluZyBUaGUgdGVtcGxhdGUgdG8gcHJlY29tcGls
ZQotKi8KLUVtYmVyLkhhbmRsZWJhcnMucHJlY29tcGlsZSA9IGZ1bmN0aW9uKHN0cmluZykgewot
ICB2YXIgYXN0ID0gSGFuZGxlYmFycy5wYXJzZShzdHJpbmcpOwotCi0gIHZhciBvcHRpb25zID0g
ewotICAgIGtub3duSGVscGVyczogewotICAgICAgYWN0aW9uOiB0cnVlLAotICAgICAgdW5ib3Vu
ZDogdHJ1ZSwKLSAgICAgICdiaW5kLWF0dHInOiB0cnVlLAotICAgICAgdGVtcGxhdGU6IHRydWUs
Ci0gICAgICB2aWV3OiB0cnVlLAotICAgICAgX3RyaWFnZU11c3RhY2hlOiB0cnVlCi0gICAgfSwK
LSAgICBkYXRhOiB0cnVlLAotICAgIHN0cmluZ1BhcmFtczogdHJ1ZQotICB9OwotCi0gIHZhciBl
bnZpcm9ubWVudCA9IG5ldyBFbWJlci5IYW5kbGViYXJzLkNvbXBpbGVyKCkuY29tcGlsZShhc3Qs
IG9wdGlvbnMpOwotICByZXR1cm4gbmV3IEVtYmVyLkhhbmRsZWJhcnMuSmF2YVNjcmlwdENvbXBp
bGVyKCkuY29tcGlsZShlbnZpcm9ubWVudCwgb3B0aW9ucywgdW5kZWZpbmVkLCB0cnVlKTsKLX07
Ci0KLS8vIFdlIGRvbid0IHN1cHBvcnQgdGhpcyBmb3IgSGFuZGxlYmFycyBydW50aW1lLW9ubHkK
LWlmIChIYW5kbGViYXJzLmNvbXBpbGUpIHsKLSAgLyoqCi0gICAgVGhlIGVudHJ5IHBvaW50IGZv
ciBFbWJlciBIYW5kbGViYXJzLiBUaGlzIHJlcGxhY2VzIHRoZSBkZWZhdWx0Ci0gICAgYEhhbmRs
ZWJhcnMuY29tcGlsZWAgYW5kIHR1cm5zIG9uIHRlbXBsYXRlLWxvY2FsIGRhdGEgYW5kIFN0cmlu
ZwotICAgIHBhcmFtZXRlcnMuCi0KLSAgICBAbWV0aG9kIGNvbXBpbGUKLSAgICBAZm9yIEVtYmVy
LkhhbmRsZWJhcnMKLSAgICBAc3RhdGljCi0gICAgQHBhcmFtIHtTdHJpbmd9IHN0cmluZyBUaGUg
dGVtcGxhdGUgdG8gY29tcGlsZQotICAgIEByZXR1cm4ge0Z1bmN0aW9ufQotICAqLwotICBFbWJl
ci5IYW5kbGViYXJzLmNvbXBpbGUgPSBmdW5jdGlvbihzdHJpbmcpIHsKLSAgICB2YXIgYXN0ID0g
SGFuZGxlYmFycy5wYXJzZShzdHJpbmcpOwotICAgIHZhciBvcHRpb25zID0geyBkYXRhOiB0cnVl
LCBzdHJpbmdQYXJhbXM6IHRydWUgfTsKLSAgICB2YXIgZW52aXJvbm1lbnQgPSBuZXcgRW1iZXIu
SGFuZGxlYmFycy5Db21waWxlcigpLmNvbXBpbGUoYXN0LCBvcHRpb25zKTsKLSAgICB2YXIgdGVt
cGxhdGVTcGVjID0gbmV3IEVtYmVyLkhhbmRsZWJhcnMuSmF2YVNjcmlwdENvbXBpbGVyKCkuY29t
cGlsZShlbnZpcm9ubWVudCwgb3B0aW9ucywgdW5kZWZpbmVkLCB0cnVlKTsKLQotICAgIHZhciB0
ZW1wbGF0ZSA9IEVtYmVyLkhhbmRsZWJhcnMudGVtcGxhdGUodGVtcGxhdGVTcGVjKTsKLSAgICB0
ZW1wbGF0ZS5pc01ldGhvZCA9IGZhbHNlOyAvL01ha2Ugc3VyZSB3ZSBkb24ndCB3cmFwIHRlbXBs
YXRlcyB3aXRoIC5fc3VwZXIKLQotICAgIHJldHVybiB0ZW1wbGF0ZTsKLSAgfTsKLX0KLQotCi19
KSgpOwotCi0oZnVuY3Rpb24oKSB7Ci12YXIgc2xpY2UgPSBBcnJheS5wcm90b3R5cGUuc2xpY2Us
Ci0gICAgb3JpZ2luYWxUZW1wbGF0ZSA9IEVtYmVyLkhhbmRsZWJhcnMudGVtcGxhdGU7Ci0KLS8q
KgotICBJZiBhIHBhdGggc3RhcnRzIHdpdGggYSByZXNlcnZlZCBrZXl3b3JkLCByZXR1cm5zIHRo
ZSByb290Ci0gIHRoYXQgc2hvdWxkIGJlIHVzZWQuCi0KLSAgQHByaXZhdGUKLSAgQG1ldGhvZCBu
b3JtYWxpemVQYXRoCi0gIEBmb3IgRW1iZXIKLSAgQHBhcmFtIHJvb3Qge09iamVjdH0KLSAgQHBh
cmFtIHBhdGgge1N0cmluZ30KLSAgQHBhcmFtIGRhdGEge0hhc2h9Ci0qLwotdmFyIG5vcm1hbGl6
ZVBhdGggPSBFbWJlci5IYW5kbGViYXJzLm5vcm1hbGl6ZVBhdGggPSBmdW5jdGlvbihyb290LCBw
YXRoLCBkYXRhKSB7Ci0gIHZhciBrZXl3b3JkcyA9IChkYXRhICYmIGRhdGEua2V5d29yZHMpIHx8
IHt9LAotICAgICAga2V5d29yZCwgaXNLZXl3b3JkOwotCi0gIC8vIEdldCB0aGUgZmlyc3Qgc2Vn
bWVudCBvZiB0aGUgcGF0aC4gRm9yIGV4YW1wbGUsIGlmIHRoZQotICAvLyBwYXRoIGlzICJmb28u
YmFyLmJheiIsIHJldHVybnMgImZvbyIuCi0gIGtleXdvcmQgPSBwYXRoLnNwbGl0KCcuJywgMSlb
MF07Ci0KLSAgLy8gVGVzdCB0byBzZWUgaWYgdGhlIGZpcnN0IHBhdGggaXMgYSBrZXl3b3JkIHRo
YXQgaGFzIGJlZW4KLSAgLy8gcGFzc2VkIGFsb25nIGluIHRoZSB2aWV3J3MgZGF0YSBoYXNoLiBJ
ZiBzbywgd2Ugd2lsbCB0cmVhdAotICAvLyB0aGF0IG9iamVjdCBhcyB0aGUgbmV3IHJvb3QuCi0g
IGlmIChrZXl3b3Jkcy5oYXNPd25Qcm9wZXJ0eShrZXl3b3JkKSkgewotICAgIC8vIExvb2sgdXAg
dGhlIHZhbHVlIGluIHRoZSB0ZW1wbGF0ZSdzIGRhdGEgaGFzaC4KLSAgICByb290ID0ga2V5d29y
ZHNba2V5d29yZF07Ci0gICAgaXNLZXl3b3JkID0gdHJ1ZTsKLQotICAgIC8vIEhhbmRsZSBjYXNl
cyB3aGVyZSB0aGUgZW50aXJlIHBhdGggaXMgdGhlIHJlc2VydmVkCi0gICAgLy8gd29yZC4gSW4g
dGhhdCBjYXNlLCByZXR1cm4gdGhlIG9iamVjdCBpdHNlbGYuCi0gICAgaWYgKHBhdGggPT09IGtl
eXdvcmQpIHsKLSAgICAgIHBhdGggPSAnJzsKLSAgICB9IGVsc2UgewotICAgICAgLy8gU3RyaXAg
dGhlIGtleXdvcmQgZnJvbSB0aGUgcGF0aCBhbmQgbG9vayB1cAotICAgICAgLy8gdGhlIHJlbWFp
bmRlciBmcm9tIHRoZSBuZXdseSBmb3VuZCByb290LgotICAgICAgcGF0aCA9IHBhdGguc3Vic3Ry
KGtleXdvcmQubGVuZ3RoKzEpOwotICAgIH0KLSAgfQotCi0gIHJldHVybiB7IHJvb3Q6IHJvb3Qs
IHBhdGg6IHBhdGgsIGlzS2V5d29yZDogaXNLZXl3b3JkIH07Ci19OwotCi0KLS8qKgotICBMb29r
dXAgYm90aCBvbiByb290IGFuZCBvbiB3aW5kb3cuIElmIHRoZSBwYXRoIHN0YXJ0cyB3aXRoCi0g
IGEga2V5d29yZCwgdGhlIGNvcnJlc3BvbmRpbmcgb2JqZWN0IHdpbGwgYmUgbG9va2VkIHVwIGlu
IHRoZQotICB0ZW1wbGF0ZSdzIGRhdGEgaGFzaCBhbmQgdXNlZCB0byByZXNvbHZlIHRoZSBwYXRo
LgotCi0gIEBtZXRob2QgZ2V0Ci0gIEBmb3IgRW1iZXIuSGFuZGxlYmFycwotICBAcGFyYW0ge09i
amVjdH0gcm9vdCBUaGUgb2JqZWN0IHRvIGxvb2sgdXAgdGhlIHByb3BlcnR5IG9uCi0gIEBwYXJh
bSB7U3RyaW5nfSBwYXRoIFRoZSBwYXRoIHRvIGJlIGxvb2tlZHVwCi0gIEBwYXJhbSB7T2JqZWN0
fSBvcHRpb25zIFRoZSB0ZW1wbGF0ZSdzIG9wdGlvbiBoYXNoCi0qLwotdmFyIGhhbmRsZWJhcnNH
ZXQgPSBFbWJlci5IYW5kbGViYXJzLmdldCA9IGZ1bmN0aW9uKHJvb3QsIHBhdGgsIG9wdGlvbnMp
IHsKLSAgdmFyIGRhdGEgPSBvcHRpb25zICYmIG9wdGlvbnMuZGF0YSwKLSAgICAgIG5vcm1hbGl6
ZWRQYXRoID0gbm9ybWFsaXplUGF0aChyb290LCBwYXRoLCBkYXRhKSwKLSAgICAgIHZhbHVlOwot
Ci0gIAotICAgIHJvb3QgPSBub3JtYWxpemVkUGF0aC5yb290OwotICAgIHBhdGggPSBub3JtYWxp
emVkUGF0aC5wYXRoOwotCi0gICAgdmFsdWUgPSBFbWJlci5nZXQocm9vdCwgcGF0aCk7Ci0KLSAg
ICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCAmJiByb290ICE9PSBFbWJlci5sb29rdXAgJiYgRW1i
ZXIuaXNHbG9iYWxQYXRoKHBhdGgpKSB7Ci0gICAgICB2YWx1ZSA9IEVtYmVyLmdldChFbWJlci5s
b29rdXAsIHBhdGgpOwotICAgIH0KLSAgCi0KLSAgcmV0dXJuIHZhbHVlOwotfTsKLQotRW1iZXIu
SGFuZGxlYmFycy5yZXNvbHZlUGFyYW1zID0gZnVuY3Rpb24oY29udGV4dCwgcGFyYW1zLCBvcHRp
b25zKSB7Ci0gIHZhciByZXNvbHZlZFBhcmFtcyA9IFtdLCB0eXBlcyA9IG9wdGlvbnMudHlwZXMs
IHBhcmFtLCB0eXBlOwotCi0gIGZvciAodmFyIGk9MCwgbD1wYXJhbXMubGVuZ3RoOyBpPGw7IGkr
KykgewotICAgIHBhcmFtID0gcGFyYW1zW2ldOwotICAgIHR5cGUgPSB0eXBlc1tpXTsKLQotICAg
IGlmICh0eXBlID09PSAnSUQnKSB7Ci0gICAgICByZXNvbHZlZFBhcmFtcy5wdXNoKGhhbmRsZWJh
cnNHZXQoY29udGV4dCwgcGFyYW0sIG9wdGlvbnMpKTsKLSAgICB9IGVsc2UgewotICAgICAgcmVz
b2x2ZWRQYXJhbXMucHVzaChwYXJhbSk7Ci0gICAgfQotICB9Ci0KLSAgcmV0dXJuIHJlc29sdmVk
UGFyYW1zOwotfTsKLQotRW1iZXIuSGFuZGxlYmFycy5yZXNvbHZlSGFzaCA9IGZ1bmN0aW9uKGNv
bnRleHQsIGhhc2gsIG9wdGlvbnMpIHsKLSAgdmFyIHJlc29sdmVkSGFzaCA9IHt9LCB0eXBlcyA9
IG9wdGlvbnMuaGFzaFR5cGVzLCB0eXBlOwotCi0gIGZvciAodmFyIGtleSBpbiBoYXNoKSB7Ci0g
ICAgaWYgKCFoYXNoLmhhc093blByb3BlcnR5KGtleSkpIHsgY29udGludWU7IH0KLQotICAgIHR5
cGUgPSB0eXBlc1trZXldOwotCi0gICAgaWYgKHR5cGUgPT09ICdJRCcpIHsKLSAgICAgIHJlc29s
dmVkSGFzaFtrZXldID0gaGFuZGxlYmFyc0dldChjb250ZXh0LCBoYXNoW2tleV0sIG9wdGlvbnMp
OwotICAgIH0gZWxzZSB7Ci0gICAgICByZXNvbHZlZEhhc2hba2V5XSA9IGhhc2hba2V5XTsKLSAg
ICB9Ci0gIH0KLQotICByZXR1cm4gcmVzb2x2ZWRIYXNoOwotfTsKLQotLyoqCi0gIFJlZ2lzdGVy
cyBhIGhlbHBlciBpbiBIYW5kbGViYXJzIHRoYXQgd2lsbCBiZSBjYWxsZWQgaWYgbm8gcHJvcGVy
dHkgd2l0aCB0aGUKLSAgZ2l2ZW4gbmFtZSBjYW4gYmUgZm91bmQgb24gdGhlIGN1cnJlbnQgY29u
dGV4dCBvYmplY3QsIGFuZCBubyBoZWxwZXIgd2l0aAotICB0aGF0IG5hbWUgaXMgcmVnaXN0ZXJl
ZC4KLQotICBUaGlzIHRocm93cyBhbiBleGNlcHRpb24gd2l0aCBhIG1vcmUgaGVscGZ1bCBlcnJv
ciBtZXNzYWdlIHNvIHRoZSB1c2VyIGNhbgotICB0cmFjayBkb3duIHdoZXJlIHRoZSBwcm9ibGVt
IGlzIGhhcHBlbmluZy4KLQotICBAcHJpdmF0ZQotICBAbWV0aG9kIGhlbHBlck1pc3NpbmcKLSAg
QGZvciBFbWJlci5IYW5kbGViYXJzLmhlbHBlcnMKLSAgQHBhcmFtIHtTdHJpbmd9IHBhdGgKLSAg
QHBhcmFtIHtIYXNofSBvcHRpb25zCi0qLwotRW1iZXIuSGFuZGxlYmFycy5yZWdpc3RlckhlbHBl
cignaGVscGVyTWlzc2luZycsIGZ1bmN0aW9uKHBhdGgpIHsKLSAgdmFyIGVycm9yLCB2aWV3ID0g
IiI7Ci0KLSAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aCAtIDFdOwot
Ci0gIHZhciBoZWxwZXIgPSBFbWJlci5IYW5kbGViYXJzLnJlc29sdmVIZWxwZXIob3B0aW9ucy5k
YXRhLnZpZXcuY29udGFpbmVyLCBwYXRoKTsKLQotICBpZiAoaGVscGVyKSB7Ci0gICAgcmV0dXJu
IGhlbHBlci5hcHBseSh0aGlzLCBzbGljZS5jYWxsKGFyZ3VtZW50cywgMSkpOwotICB9Ci0KLSAg
ZXJyb3IgPSAiJUAgSGFuZGxlYmFycyBlcnJvcjogQ291bGQgbm90IGZpbmQgcHJvcGVydHkgJyVA
JyBvbiBvYmplY3QgJUAuIjsKLSAgaWYgKG9wdGlvbnMuZGF0YSkgewotICAgIHZpZXcgPSBvcHRp
b25zLmRhdGEudmlldzsKLSAgfQotICB0aHJvdyBuZXcgRW1iZXIuRXJyb3IoRW1iZXIuU3RyaW5n
LmZtdChlcnJvciwgW3ZpZXcsIHBhdGgsIHRoaXNdKSk7Ci19KTsKLQotLyoqCi0gIFJlZ2lzdGVy
cyBhIGhlbHBlciBpbiBIYW5kbGViYXJzIHRoYXQgd2lsbCBiZSBjYWxsZWQgaWYgbm8gcHJvcGVy
dHkgd2l0aCB0aGUKLSAgZ2l2ZW4gbmFtZSBjYW4gYmUgZm91bmQgb24gdGhlIGN1cnJlbnQgY29u
dGV4dCBvYmplY3QsIGFuZCBubyBoZWxwZXIgd2l0aAotICB0aGF0IG5hbWUgaXMgcmVnaXN0ZXJl
ZC4KLQotICBUaGlzIHRocm93cyBhbiBleGNlcHRpb24gd2l0aCBhIG1vcmUgaGVscGZ1bCBlcnJv
ciBtZXNzYWdlIHNvIHRoZSB1c2VyIGNhbgotICB0cmFjayBkb3duIHdoZXJlIHRoZSBwcm9ibGVt
IGlzIGhhcHBlbmluZy4KLQotICBAcHJpdmF0ZQotICBAbWV0aG9kIGhlbHBlck1pc3NpbmcKLSAg
QGZvciBFbWJlci5IYW5kbGViYXJzLmhlbHBlcnMKLSAgQHBhcmFtIHtTdHJpbmd9IHBhdGgKLSAg
QHBhcmFtIHtIYXNofSBvcHRpb25zCi0qLwotRW1iZXIuSGFuZGxlYmFycy5yZWdpc3RlckhlbHBl
cignYmxvY2tIZWxwZXJNaXNzaW5nJywgZnVuY3Rpb24ocGF0aCkgewotCi0gIHZhciBvcHRpb25z
ID0gYXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGggLSAxXTsKLQotICBFbWJlci5hc3NlcnQoImBi
bG9ja0hlbHBlck1pc3NpbmdgIHdhcyBpbnZva2VkIHdpdGhvdXQgYSBoZWxwZXIgbmFtZSwgd2hp
Y2ggIiArCi0gICAgICAgICAgICAgICAiaXMgbW9zdCBsaWtlbHkgZHVlIHRvIGEgbWlzbWF0Y2gg
YmV0d2VlbiB0aGUgdmVyc2lvbiBvZiAiICsKLSAgICAgICAgICAgICAgICJFbWJlci5qcyB5b3Un
cmUgcnVubmluZyBub3cgYW5kIHRoZSBvbmUgdXNlZCB0byBwcmVjb21waWxlIHlvdXIgIiArCi0g
ICAgICAgICAgICAgICAidGVtcGxhdGVzLiBQbGVhc2UgbWFrZSBzdXJlIHRoZSB2ZXJzaW9uIG9m
ICIgKwotICAgICAgICAgICAgICAgImBlbWJlci1oYW5kbGViYXJzLWNvbXBpbGVyYCB5b3UncmUg
dXNpbmcgaXMgdXAgdG8gZGF0ZS4iLCBwYXRoKTsKLQotICB2YXIgaGVscGVyID0gRW1iZXIuSGFu
ZGxlYmFycy5yZXNvbHZlSGVscGVyKG9wdGlvbnMuZGF0YS52aWV3LmNvbnRhaW5lciwgcGF0aCk7
Ci0KLSAgaWYgKGhlbHBlcikgewotICAgIHJldHVybiBoZWxwZXIuYXBwbHkodGhpcywgc2xpY2Uu
Y2FsbChhcmd1bWVudHMsIDEpKTsKLSAgfSBlbHNlIHsKLSAgICByZXR1cm4gSGFuZGxlYmFycy5o
ZWxwZXJzLmhlbHBlck1pc3NpbmcuY2FsbCh0aGlzLCBwYXRoKTsKLSAgfQotCi0gIHJldHVybiBI
YW5kbGViYXJzLmhlbHBlcnMuYmxvY2tIZWxwZXJNaXNzaW5nLmFwcGx5KHRoaXMsIGFyZ3VtZW50
cyk7Ci19KTsKLQotLyoqCi0gIFJlZ2lzdGVyIGEgYm91bmQgaGFuZGxlYmFycyBoZWxwZXIuIEJv
dW5kIGhlbHBlcnMgYmVoYXZlIHNpbWlsYXJseSB0byByZWd1bGFyCi0gIGhhbmRsZWJhcnMgaGVs
cGVycywgd2l0aCB0aGUgYWRkZWQgYWJpbGl0eSB0byByZS1yZW5kZXIgd2hlbiB0aGUgdW5kZXJs
eWluZyBkYXRhCi0gIGNoYW5nZXMuCi0KLSAgIyMgU2ltcGxlIGV4YW1wbGUKLQotICBgYGBqYXZh
c2NyaXB0Ci0gIEVtYmVyLkhhbmRsZWJhcnMucmVnaXN0ZXJCb3VuZEhlbHBlcignY2FwaXRhbGl6
ZScsIGZ1bmN0aW9uKHZhbHVlKSB7Ci0gICAgcmV0dXJuIHZhbHVlLnRvVXBwZXJDYXNlKCk7Ci0g
IH0pOwotICBgYGAKLQotICBUaGUgYWJvdmUgYm91bmQgaGVscGVyIGNhbiBiZSB1c2VkIGluc2lk
ZSBvZiB0ZW1wbGF0ZXMgYXMgZm9sbG93czoKLQotICBgYGBoYW5kbGViYXJzCi0gIHt7Y2FwaXRh
bGl6ZSBuYW1lfX0KLSAgYGBgCi0KLSAgSW4gdGhpcyBjYXNlLCB3aGVuIHRoZSBgbmFtZWAgcHJv
cGVydHkgb2YgdGhlIHRlbXBsYXRlJ3MgY29udGV4dCBjaGFuZ2VzLAotICB0aGUgcmVuZGVyZWQg
dmFsdWUgb2YgdGhlIGhlbHBlciB3aWxsIHVwZGF0ZSB0byByZWZsZWN0IHRoaXMgY2hhbmdlLgot
Ci0gICMjIEV4YW1wbGUgd2l0aCBvcHRpb25zCi0KLSAgTGlrZSBub3JtYWwgaGFuZGxlYmFycyBo
ZWxwZXJzLCBib3VuZCBoZWxwZXJzIGhhdmUgYWNjZXNzIHRvIHRoZSBvcHRpb25zCi0gIHBhc3Nl
ZCBpbnRvIHRoZSBoZWxwZXIgY2FsbC4KLQotICBgYGBqYXZhc2NyaXB0Ci0gIEVtYmVyLkhhbmRs
ZWJhcnMucmVnaXN0ZXJCb3VuZEhlbHBlcigncmVwZWF0JywgZnVuY3Rpb24odmFsdWUsIG9wdGlv
bnMpIHsKLSAgICB2YXIgY291bnQgPSBvcHRpb25zLmhhc2guY291bnQ7Ci0gICAgdmFyIGEgPSBb
XTsKLSAgICB3aGlsZShhLmxlbmd0aCA8IGNvdW50KSB7Ci0gICAgICAgIGEucHVzaCh2YWx1ZSk7
Ci0gICAgfQotICAgIHJldHVybiBhLmpvaW4oJycpOwotICB9KTsKLSAgYGBgCi0KLSAgVGhpcyBo
ZWxwZXIgY291bGQgYmUgdXNlZCBpbiBhIHRlbXBsYXRlIGFzIGZvbGxvd3M6Ci0KLSAgYGBgaGFu
ZGxlYmFycwotICB7e3JlcGVhdCB0ZXh0IGNvdW50PTN9fQotICBgYGAKLQotICAjIyBFeGFtcGxl
IHdpdGggYm91bmQgb3B0aW9ucwotCi0gIEJvdW5kIGhhc2ggb3B0aW9ucyBhcmUgYWxzbyBzdXBw
b3J0ZWQuIEV4YW1wbGU6Ci0KLSAgYGBgaGFuZGxlYmFycwotICB7e3JlcGVhdCB0ZXh0IGNvdW50
QmluZGluZz0ibnVtUmVwZWF0cyJ9fQotICBgYGAKLQotICBJbiB0aGlzIGV4YW1wbGUsIGNvdW50
IHdpbGwgYmUgYm91bmQgdG8gdGhlIHZhbHVlIG9mCi0gIHRoZSBgbnVtUmVwZWF0c2AgcHJvcGVy
dHkgb24gdGhlIGNvbnRleHQuIElmIHRoYXQgcHJvcGVydHkKLSAgY2hhbmdlcywgdGhlIGhlbHBl
ciB3aWxsIGJlIHJlLXJlbmRlcmVkLgotCi0gICMjIEV4YW1wbGUgd2l0aCBleHRyYSBkZXBlbmRl
bmNpZXMKLQotICBUaGUgYEVtYmVyLkhhbmRsZWJhcnMucmVnaXN0ZXJCb3VuZEhlbHBlcmAgbWV0
aG9kIHRha2VzIGEgdmFyaWFibGUgbGVuZ3RoCi0gIHRoaXJkIHBhcmFtZXRlciB3aGljaCBpbmRp
Y2F0ZXMgZXh0cmEgZGVwZW5kZW5jaWVzIG9uIHRoZSBwYXNzZWQgaW4gdmFsdWUuCi0gIFRoaXMg
YWxsb3dzIHRoZSBoYW5kbGViYXJzIGhlbHBlciB0byB1cGRhdGUgd2hlbiB0aGVzZSBkZXBlbmRl
bmNpZXMgY2hhbmdlLgotCi0gIGBgYGphdmFzY3JpcHQKLSAgRW1iZXIuSGFuZGxlYmFycy5yZWdp
c3RlckJvdW5kSGVscGVyKCdjYXBpdGFsaXplTmFtZScsIGZ1bmN0aW9uKHZhbHVlKSB7Ci0gICAg
cmV0dXJuIHZhbHVlLmdldCgnbmFtZScpLnRvVXBwZXJDYXNlKCk7Ci0gIH0sICduYW1lJyk7Ci0g
IGBgYAotCi0gICMjIEV4YW1wbGUgd2l0aCBtdWx0aXBsZSBib3VuZCBwcm9wZXJ0aWVzCi0KLSAg
YEVtYmVyLkhhbmRsZWJhcnMucmVnaXN0ZXJCb3VuZEhlbHBlcmAgc3VwcG9ydHMgYmluZGluZyB0
bwotICBtdWx0aXBsZSBwcm9wZXJ0aWVzLCBlLmcuOgotCi0gIGBgYGphdmFzY3JpcHQKLSAgRW1i
ZXIuSGFuZGxlYmFycy5yZWdpc3RlckJvdW5kSGVscGVyKCdjb25jYXRlbmF0ZScsIGZ1bmN0aW9u
KCkgewotICAgIHZhciB2YWx1ZXMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVu
dHMsIDAsIC0xKTsKLSAgICByZXR1cm4gdmFsdWVzLmpvaW4oJ3x8Jyk7Ci0gIH0pOwotICBgYGAK
LQotICBXaGljaCBhbGxvd3MgZm9yIHRlbXBsYXRlIHN5bnRheCBzdWNoIGFzIGB7e2NvbmNhdGVu
YXRlIHByb3AxIHByb3AyfX1gIG9yCi0gIGB7e2NvbmNhdGVuYXRlIHByb3AxIHByb3AyIHByb3Az
fX1gLiBJZiBhbnkgb2YgdGhlIHByb3BlcnRpZXMgY2hhbmdlLAotICB0aGUgaGVscHIgd2lsbCBy
ZS1yZW5kZXIuICBOb3RlIHRoYXQgZGVwZW5kZW5jeSBrZXlzIGNhbm5vdCBiZQotICB1c2luZyBp
biBjb25qdW5jdGlvbiB3aXRoIG11bHRpLXByb3BlcnR5IGhlbHBlcnMsIHNpbmNlIGl0IGlzIGFt
YmlndW91cwotICB3aGljaCBwcm9wZXJ0eSB0aGUgZGVwZW5kZW50IGtleXMgd291bGQgYmVsb25n
IHRvLgotCi0gICMjIFVzZSB3aXRoIHVuYm91bmQgaGVscGVyCi0KLSAgVGhlIGB7e3VuYm91bmR9
fWAgaGVscGVyIGNhbiBiZSB1c2VkIHdpdGggYm91bmQgaGVscGVyIGludm9jYXRpb25zCi0gIHRv
IHJlbmRlciB0aGVtIGluIHRoZWlyIHVuYm91bmQgZm9ybSwgZS5nLgotCi0gIGBgYGhhbmRsZWJh
cnMKLSAge3t1bmJvdW5kIGNhcGl0YWxpemUgbmFtZX19Ci0gIGBgYAotCi0gIEluIHRoaXMgZXhh
bXBsZSwgaWYgdGhlIG5hbWUgcHJvcGVydHkgY2hhbmdlcywgdGhlIGhlbHBlcgotICB3aWxsIG5v
dCByZS1yZW5kZXIuCi0KLSAgIyMgVXNlIHdpdGggYmxvY2tzIG5vdCBzdXBwb3J0ZWQKLQotICBC
b3VuZCBoZWxwZXJzIGRvIG5vdCBzdXBwb3J0IHVzZSB3aXRoIEhhbmRsZWJhcnMgYmxvY2tzIG9y
Ci0gIHRoZSBhZGRpdGlvbiBvZiBjaGlsZCB2aWV3cyBvZiBhbnkga2luZC4KLQotICBAbWV0aG9k
IHJlZ2lzdGVyQm91bmRIZWxwZXIKLSAgQGZvciBFbWJlci5IYW5kbGViYXJzCi0gIEBwYXJhbSB7
U3RyaW5nfSBuYW1lCi0gIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmN0aW9uCi0gIEBwYXJhbSB7U3Ry
aW5nfSBkZXBlbmRlbnRLZXlzKgotKi8KLUVtYmVyLkhhbmRsZWJhcnMucmVnaXN0ZXJCb3VuZEhl
bHBlciA9IGZ1bmN0aW9uKG5hbWUsIGZuKSB7Ci0gIHZhciBib3VuZEhlbHBlckFyZ3MgPSBzbGlj
ZS5jYWxsKGFyZ3VtZW50cywgMSksCi0gICAgICBib3VuZEZuID0gRW1iZXIuSGFuZGxlYmFycy5t
YWtlQm91bmRIZWxwZXIuYXBwbHkodGhpcywgYm91bmRIZWxwZXJBcmdzKTsKLSAgRW1iZXIuSGFu
ZGxlYmFycy5yZWdpc3RlckhlbHBlcihuYW1lLCBib3VuZEZuKTsKLX07Ci0KLS8qKgotICBBICht
b3N0bHkpIHByaXZhdGUgaGVscGVyIGZ1bmN0aW9uIHRvIGByZWdpc3RlckJvdW5kSGVscGVyYC4g
VGFrZXMgdGhlCi0gIHByb3ZpZGVkIEhhbmRsZWJhcnMgaGVscGVyIGZ1bmN0aW9uIGZuIGFuZCBy
ZXR1cm5zIGl0IGluIHdyYXBwZWQKLSAgYm91bmQgaGVscGVyIGZvcm0uCi0KLSAgVGhlIG1haW4g
dXNlIGNhc2UgZm9yIHVzaW5nIHRoaXMgb3V0c2lkZSBvZiBgcmVnaXN0ZXJCb3VuZEhlbHBlcmAK
LSAgaXMgZm9yIHJlZ2lzdGVyaW5nIGhlbHBlcnMgb24gdGhlIGNvbnRhaW5lcjoKLQotICBgYGBq
cwotICB2YXIgYm91bmRIZWxwZXJGbiA9IEVtYmVyLkhhbmRsZWJhcnMubWFrZUJvdW5kSGVscGVy
KGZ1bmN0aW9uKHdvcmQpIHsKLSAgICByZXR1cm4gd29yZC50b1VwcGVyQ2FzZSgpOwotICB9KTsK
LQotICBjb250YWluZXIucmVnaXN0ZXIoJ2hlbHBlcjpteS1ib3VuZC1oZWxwZXInLCBib3VuZEhl
bHBlckZuKTsKLSAgYGBgCi0KLSAgSW4gdGhlIGFib3ZlIGV4YW1wbGUsIGlmIHRoZSBoZWxwZXIg
ZnVuY3Rpb24gaGFkbid0IGJlZW4gd3JhcHBlZCBpbgotICBgbWFrZUJvdW5kSGVscGVyYCwgdGhl
IHJlZ2lzdGVyZWQgaGVscGVyIHdvdWxkIGJlIHVuYm91bmQuCi0KLSAgQHByaXZhdGUKLSAgQG1l
dGhvZCBtYWtlQm91bmRIZWxwZXIKLSAgQGZvciBFbWJlci5IYW5kbGViYXJzCi0gIEBwYXJhbSB7
RnVuY3Rpb259IGZ1bmN0aW9uCi0gIEBwYXJhbSB7U3RyaW5nfSBkZXBlbmRlbnRLZXlzKgotKi8K
LUVtYmVyLkhhbmRsZWJhcnMubWFrZUJvdW5kSGVscGVyID0gZnVuY3Rpb24oZm4pIHsKLSAgdmFy
IGRlcGVuZGVudEtleXMgPSBzbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7Ci0KLSAgZnVuY3Rpb24g
aGVscGVyKCkgewotICAgIHZhciBwcm9wZXJ0aWVzID0gc2xpY2UuY2FsbChhcmd1bWVudHMsIDAs
IC0xKSwKLSAgICAgIG51bVByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzLmxlbmd0aCwKLSAgICAgIG9w
dGlvbnMgPSBhcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aCAtIDFdLAotICAgICAgbm9ybWFsaXpl
ZFByb3BlcnRpZXMgPSBbXSwKLSAgICAgIGRhdGEgPSBvcHRpb25zLmRhdGEsCi0gICAgICB0eXBl
cyA9IGRhdGEuaXNVbmJvdW5kID8gc2xpY2UuY2FsbChvcHRpb25zLnR5cGVzLCAxKSA6IG9wdGlv
bnMudHlwZXMsCi0gICAgICBoYXNoID0gb3B0aW9ucy5oYXNoLAotICAgICAgdmlldyA9IGRhdGEu
dmlldywKLSAgICAgIGNvbnRleHRzID0gb3B0aW9ucy5jb250ZXh0cywKLSAgICAgIGN1cnJlbnRD
b250ZXh0ID0gKGNvbnRleHRzICYmIGNvbnRleHRzLmxlbmd0aCkgPyBjb250ZXh0c1swXSA6IHRo
aXMsCi0gICAgICBwcmVmaXhQYXRoRm9yRGVwZW5kZW50S2V5cyA9ICcnLAotICAgICAgbG9jLCBs
ZW4sIGhhc2hPcHRpb24sCi0gICAgICBib3VuZE9wdGlvbiwgcHJvcGVydHksCi0gICAgICBub3Jt
YWxpemVkVmFsdWUgPSBFbWJlci5fU2ltcGxlSGFuZGxlYmFyc1ZpZXcucHJvdG90eXBlLm5vcm1h
bGl6ZWRWYWx1ZTsKLQotICAgIEVtYmVyLmFzc2VydCgicmVnaXN0ZXJCb3VuZEhlbHBlci1nZW5l
cmF0ZWQgaGVscGVycyBkbyBub3Qgc3VwcG9ydCB1c2Ugd2l0aCBIYW5kbGViYXJzIGJsb2Nrcy4i
LCAhb3B0aW9ucy5mbik7Ci0KLSAgICAvLyBEZXRlY3QgYm91bmQgb3B0aW9ucyAoZS5nLiBjb3Vu
dEJpbmRpbmc9Im90aGVyQ291bnQiKQotICAgIHZhciBib3VuZE9wdGlvbnMgPSBoYXNoLmJvdW5k
T3B0aW9ucyA9IHt9OwotICAgIGZvciAoaGFzaE9wdGlvbiBpbiBoYXNoKSB7Ci0gICAgICBpZiAo
RW1iZXIuSVNfQklORElORy50ZXN0KGhhc2hPcHRpb24pKSB7Ci0gICAgICAgIC8vIExvcCBvZmYg
J0JpbmRpbmcnIHN1ZmZpeC4KLSAgICAgICAgYm91bmRPcHRpb25zW2hhc2hPcHRpb24uc2xpY2Uo
MCwgLTcpXSA9IGhhc2hbaGFzaE9wdGlvbl07Ci0gICAgICB9Ci0gICAgfQotCi0gICAgLy8gRXhw
b3NlIHByb3BlcnR5IG5hbWVzIG9uIGRhdGEucHJvcGVydGllcyBvYmplY3QuCi0gICAgdmFyIHdh
dGNoZWRQcm9wZXJ0aWVzID0gW107Ci0gICAgZGF0YS5wcm9wZXJ0aWVzID0gW107Ci0gICAgZm9y
IChsb2MgPSAwOyBsb2MgPCBudW1Qcm9wZXJ0aWVzOyArK2xvYykgewotICAgICAgZGF0YS5wcm9w
ZXJ0aWVzLnB1c2gocHJvcGVydGllc1tsb2NdKTsKLSAgICAgIGlmICh0eXBlc1tsb2NdID09PSAn
SUQnKSB7Ci0gICAgICAgIHZhciBub3JtYWxpemVkUHJvcCA9IG5vcm1hbGl6ZVBhdGgoY3VycmVu
dENvbnRleHQsIHByb3BlcnRpZXNbbG9jXSwgZGF0YSk7Ci0gICAgICAgIG5vcm1hbGl6ZWRQcm9w
ZXJ0aWVzLnB1c2gobm9ybWFsaXplZFByb3ApOwotICAgICAgICB3YXRjaGVkUHJvcGVydGllcy5w
dXNoKG5vcm1hbGl6ZWRQcm9wKTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmKGRhdGEuaXNV
bmJvdW5kKSB7Ci0gICAgICAgICAgbm9ybWFsaXplZFByb3BlcnRpZXMucHVzaCh7cGF0aDogcHJv
cGVydGllc1tsb2NdfSk7Ci0gICAgICAgIH1lbHNlIHsKLSAgICAgICAgICBub3JtYWxpemVkUHJv
cGVydGllcy5wdXNoKG51bGwpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotCi0gICAgLy8g
SGFuZGxlIGNhc2Ugd2hlbiBoZWxwZXIgaW52b2NhdGlvbiBpcyBwcmVjZWRlZCBieSBgdW5ib3Vu
ZGAsIGUuZy4KLSAgICAvLyB7e3VuYm91bmQgbXlIZWxwZXIgZm9vfX0KLSAgICBpZiAoZGF0YS5p
c1VuYm91bmQpIHsKLSAgICAgIHJldHVybiBldmFsdWF0ZVVuYm91bmRIZWxwZXIodGhpcywgZm4s
IG5vcm1hbGl6ZWRQcm9wZXJ0aWVzLCBvcHRpb25zKTsKLSAgICB9Ci0KLSAgICB2YXIgYmluZFZp
ZXcgPSBuZXcgRW1iZXIuX1NpbXBsZUhhbmRsZWJhcnNWaWV3KG51bGwsIG51bGwsICFvcHRpb25z
Lmhhc2gudW5lc2NhcGVkLCBvcHRpb25zLmRhdGEpOwotCi0gICAgLy8gT3ZlcnJpZGUgU2ltcGxl
SGFuZGxlYmFyc1ZpZXcncyBtZXRob2QgZm9yIGdlbmVyYXRpbmcgdGhlIHZpZXcncyBjb250ZW50
LgotICAgIGJpbmRWaWV3Lm5vcm1hbGl6ZWRWYWx1ZSA9IGZ1bmN0aW9uKCkgewotICAgICAgdmFy
IGFyZ3MgPSBbXSwgYm91bmRPcHRpb247Ci0KLSAgICAgIC8vIENvcHkgb3ZlciBib3VuZCBoYXNo
IG9wdGlvbnMuCi0gICAgICBmb3IgKGJvdW5kT3B0aW9uIGluIGJvdW5kT3B0aW9ucykgewotICAg
ICAgICBpZiAoIWJvdW5kT3B0aW9ucy5oYXNPd25Qcm9wZXJ0eShib3VuZE9wdGlvbikpIHsgY29u
dGludWU7IH0KLSAgICAgICAgcHJvcGVydHkgPSBub3JtYWxpemVQYXRoKGN1cnJlbnRDb250ZXh0
LCBib3VuZE9wdGlvbnNbYm91bmRPcHRpb25dLCBkYXRhKTsKLSAgICAgICAgYmluZFZpZXcucGF0
aCA9IHByb3BlcnR5LnBhdGg7Ci0gICAgICAgIGJpbmRWaWV3LnBhdGhSb290ID0gcHJvcGVydHku
cm9vdDsKLSAgICAgICAgaGFzaFtib3VuZE9wdGlvbl0gPSBub3JtYWxpemVkVmFsdWUuY2FsbChi
aW5kVmlldyk7Ci0gICAgICB9Ci0KLSAgICAgIGZvciAobG9jID0gMDsgbG9jIDwgbnVtUHJvcGVy
dGllczsgKytsb2MpIHsKLSAgICAgICAgcHJvcGVydHkgPSBub3JtYWxpemVkUHJvcGVydGllc1ts
b2NdOwotICAgICAgICBpZiAocHJvcGVydHkpIHsKLSAgICAgICAgICBiaW5kVmlldy5wYXRoID0g
cHJvcGVydHkucGF0aDsKLSAgICAgICAgICBiaW5kVmlldy5wYXRoUm9vdCA9IHByb3BlcnR5LnJv
b3Q7Ci0gICAgICAgICAgYXJncy5wdXNoKG5vcm1hbGl6ZWRWYWx1ZS5jYWxsKGJpbmRWaWV3KSk7
Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgYXJncy5wdXNoKHByb3BlcnRpZXNbbG9jXSk7
Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGFyZ3MucHVzaChvcHRpb25zKTsKLQotICAgICAg
Ly8gUnVuIHRoZSBzdXBwbGllZCBoZWxwZXIgZnVuY3Rpb24uCi0gICAgICByZXR1cm4gZm4uYXBw
bHkoY3VycmVudENvbnRleHQsIGFyZ3MpOwotICAgIH07Ci0KLSAgICB2aWV3LmFwcGVuZENoaWxk
KGJpbmRWaWV3KTsKLQotICAgIC8vIEFzc2VtYmxlIGxpc3Qgb2Ygd2F0Y2hlZCBwcm9wZXJ0aWVz
IHRoYXQnbGwgcmUtcmVuZGVyIHRoaXMgaGVscGVyLgotICAgIGZvciAoYm91bmRPcHRpb24gaW4g
Ym91bmRPcHRpb25zKSB7Ci0gICAgICBpZiAoYm91bmRPcHRpb25zLmhhc093blByb3BlcnR5KGJv
dW5kT3B0aW9uKSkgewotICAgICAgICB3YXRjaGVkUHJvcGVydGllcy5wdXNoKG5vcm1hbGl6ZVBh
dGgoY3VycmVudENvbnRleHQsIGJvdW5kT3B0aW9uc1tib3VuZE9wdGlvbl0sIGRhdGEpKTsKLSAg
ICAgIH0KLSAgICB9Ci0KLSAgICAvLyBPYnNlcnZlIGVhY2ggcHJvcGVydHkuCi0gICAgZm9yIChs
b2MgPSAwLCBsZW4gPSB3YXRjaGVkUHJvcGVydGllcy5sZW5ndGg7IGxvYyA8IGxlbjsgKytsb2Mp
IHsKLSAgICAgIHByb3BlcnR5ID0gd2F0Y2hlZFByb3BlcnRpZXNbbG9jXTsKLSAgICAgIHZpZXcu
cmVnaXN0ZXJPYnNlcnZlcihwcm9wZXJ0eS5yb290LCBwcm9wZXJ0eS5wYXRoLCBiaW5kVmlldywg
YmluZFZpZXcucmVyZW5kZXIpOwotICAgIH0KLQotICAgIGlmICh0eXBlc1swXSAhPT0gJ0lEJyB8
fCBub3JtYWxpemVkUHJvcGVydGllcy5sZW5ndGggPT09IDApIHsKLSAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICAvLyBBZGQgZGVwZW5kZW50IGtleSBvYnNlcnZlcnMgdG8gdGhlIGZpcnN0IHBh
cmFtCi0gICAgdmFyIG5vcm1hbGl6ZWQgPSBub3JtYWxpemVkUHJvcGVydGllc1swXSwKLSAgICAg
ICAgcGF0aFJvb3QgPSBub3JtYWxpemVkLnJvb3QsCi0gICAgICAgIHBhdGggPSBub3JtYWxpemVk
LnBhdGg7Ci0KLSAgICBpZighRW1iZXIuaXNFbXB0eShwYXRoKSkgewotICAgICAgcHJlZml4UGF0
aEZvckRlcGVuZGVudEtleXMgPSBwYXRoICsgJy4nOwotICAgIH0KLSAgICBmb3IgKHZhciBpPTAs
IGw9ZGVwZW5kZW50S2V5cy5sZW5ndGg7IGk8bDsgaSsrKSB7Ci0gICAgICB2aWV3LnJlZ2lzdGVy
T2JzZXJ2ZXIocGF0aFJvb3QsIHByZWZpeFBhdGhGb3JEZXBlbmRlbnRLZXlzICsgZGVwZW5kZW50
S2V5c1tpXSwgYmluZFZpZXcsIGJpbmRWaWV3LnJlcmVuZGVyKTsKLSAgICB9Ci0gIH0KLQotICBo
ZWxwZXIuX3Jhd0Z1bmN0aW9uID0gZm47Ci0gIHJldHVybiBoZWxwZXI7Ci19OwotCi0vKioKLSAg
UmVuZGVycyB0aGUgdW5ib3VuZCBmb3JtIG9mIGFuIG90aGVyd2lzZSBib3VuZCBoZWxwZXIgZnVu
Y3Rpb24uCi0KLSAgQHByaXZhdGUKLSAgQG1ldGhvZCBldmFsdWF0ZVVuYm91bmRIZWxwZXIKLSAg
QHBhcmFtIHtGdW5jdGlvbn0gZm4KLSAgQHBhcmFtIHtPYmplY3R9IGNvbnRleHQKLSAgQHBhcmFt
IHtBcnJheX0gbm9ybWFsaXplZFByb3BlcnRpZXMKLSAgQHBhcmFtIHtTdHJpbmd9IG9wdGlvbnMK
LSovCi1mdW5jdGlvbiBldmFsdWF0ZVVuYm91bmRIZWxwZXIoY29udGV4dCwgZm4sIG5vcm1hbGl6
ZWRQcm9wZXJ0aWVzLCBvcHRpb25zKSB7Ci0gIHZhciBhcmdzID0gW10sCi0gICBoYXNoID0gb3B0
aW9ucy5oYXNoLAotICAgYm91bmRPcHRpb25zID0gaGFzaC5ib3VuZE9wdGlvbnMsCi0gICB0eXBl
cyA9IHNsaWNlLmNhbGwob3B0aW9ucy50eXBlcywgMSksCi0gICBsb2MsCi0gICBsZW4sCi0gICBw
cm9wZXJ0eSwKLSAgIHByb3BlcnR5VHlwZSwKLSAgIGJvdW5kT3B0aW9uOwotCi0gIGZvciAoYm91
bmRPcHRpb24gaW4gYm91bmRPcHRpb25zKSB7Ci0gICAgaWYgKCFib3VuZE9wdGlvbnMuaGFzT3du
UHJvcGVydHkoYm91bmRPcHRpb24pKSB7IGNvbnRpbnVlOyB9Ci0gICAgaGFzaFtib3VuZE9wdGlv
bl0gPSBFbWJlci5IYW5kbGViYXJzLmdldChjb250ZXh0LCBib3VuZE9wdGlvbnNbYm91bmRPcHRp
b25dLCBvcHRpb25zKTsKLSAgfQotCi0gIGZvcihsb2MgPSAwLCBsZW4gPSBub3JtYWxpemVkUHJv
cGVydGllcy5sZW5ndGg7IGxvYyA8IGxlbjsgKytsb2MpIHsKLSAgICBwcm9wZXJ0eSA9IG5vcm1h
bGl6ZWRQcm9wZXJ0aWVzW2xvY107Ci0gICAgcHJvcGVydHlUeXBlID0gdHlwZXNbbG9jXTsKLSAg
ICBpZihwcm9wZXJ0eVR5cGUgPT09ICJJRCIpIHsKLSAgICAgIGFyZ3MucHVzaChFbWJlci5IYW5k
bGViYXJzLmdldChwcm9wZXJ0eS5yb290LCBwcm9wZXJ0eS5wYXRoLCBvcHRpb25zKSk7Ci0gICAg
fSBlbHNlIHsKLSAgICAgIGFyZ3MucHVzaChwcm9wZXJ0eS5wYXRoKTsKLSAgICB9Ci0gIH0KLSAg
YXJncy5wdXNoKG9wdGlvbnMpOwotICByZXR1cm4gZm4uYXBwbHkoY29udGV4dCwgYXJncyk7Ci19
Ci0KLS8qKgotICBPdmVycmlkZXMgSGFuZGxlYmFycy50ZW1wbGF0ZSBzbyB0aGF0IHdlIGNhbiBk
aXN0aW5ndWlzaAotICB1c2VyLWNyZWF0ZWQsIHRvcC1sZXZlbCB0ZW1wbGF0ZXMgZnJvbSBpbm5l
ciBjb250ZXh0cy4KLQotICBAcHJpdmF0ZQotICBAbWV0aG9kIHRlbXBsYXRlCi0gIEBmb3IgRW1i
ZXIuSGFuZGxlYmFycwotICBAcGFyYW0ge1N0cmluZ30gc3BlYwotKi8KLUVtYmVyLkhhbmRsZWJh
cnMudGVtcGxhdGUgPSBmdW5jdGlvbihzcGVjKSB7Ci0gIHZhciB0ID0gb3JpZ2luYWxUZW1wbGF0
ZShzcGVjKTsKLSAgdC5pc1RvcCA9IHRydWU7Ci0gIHJldHVybiB0OwotfTsKLQotfSkoKTsKLQot
Ci0KLShmdW5jdGlvbigpIHsKLS8qKgotICBNYXJrIGEgc3RyaW5nIGFzIHNhZmUgZm9yIHVuZXNj
YXBlZCBvdXRwdXQgd2l0aCBIYW5kbGViYXJzLiBJZiB5b3UKLSAgcmV0dXJuIEhUTUwgZnJvbSBh
IEhhbmRsZWJhcnMgaGVscGVyLCB1c2UgdGhpcyBmdW5jdGlvbiB0bwotICBlbnN1cmUgSGFuZGxl
YmFycyBkb2VzIG5vdCBlc2NhcGUgdGhlIEhUTUwuCi0KLSAgYGBgamF2YXNjcmlwdAotICBFbWJl
ci5TdHJpbmcuaHRtbFNhZmUoJzxkaXY+c29tZVN0cmluZzwvZGl2PicpCi0gIGBgYAotCi0gIEBt
ZXRob2QgaHRtbFNhZmUKLSAgQGZvciBFbWJlci5TdHJpbmcKLSAgQHN0YXRpYwotICBAcmV0dXJu
IHtIYW5kbGViYXJzLlNhZmVTdHJpbmd9IGEgc3RyaW5nIHRoYXQgd2lsbCBub3QgYmUgaHRtbCBl
c2NhcGVkIGJ5IEhhbmRsZWJhcnMKLSovCi1FbWJlci5TdHJpbmcuaHRtbFNhZmUgPSBmdW5jdGlv
bihzdHIpIHsKLSAgcmV0dXJuIG5ldyBIYW5kbGViYXJzLlNhZmVTdHJpbmcoc3RyKTsKLX07Ci0K
LXZhciBodG1sU2FmZSA9IEVtYmVyLlN0cmluZy5odG1sU2FmZTsKLQotaWYgKEVtYmVyLkVYVEVO
RF9QUk9UT1RZUEVTID09PSB0cnVlIHx8IEVtYmVyLkVYVEVORF9QUk9UT1RZUEVTLlN0cmluZykg
ewotCi0gIC8qKgotICAgIE1hcmsgYSBzdHJpbmcgYXMgYmVpbmcgc2FmZSBmb3IgdW5lc2NhcGVk
IG91dHB1dCB3aXRoIEhhbmRsZWJhcnMuCi0KLSAgICBgYGBqYXZhc2NyaXB0Ci0gICAgJzxkaXY+
c29tZVN0cmluZzwvZGl2PicuaHRtbFNhZmUoKQotICAgIGBgYAotCi0gICAgU2VlIFtFbWJlci5T
dHJpbmcuaHRtbFNhZmVdKC9hcGkvY2xhc3Nlcy9FbWJlci5TdHJpbmcuaHRtbCNtZXRob2RfaHRt
bFNhZmUpLgotCi0gICAgQG1ldGhvZCBodG1sU2FmZQotICAgIEBmb3IgU3RyaW5nCi0gICAgQHJl
dHVybiB7SGFuZGxlYmFycy5TYWZlU3RyaW5nfSBhIHN0cmluZyB0aGF0IHdpbGwgbm90IGJlIGh0
bWwgZXNjYXBlZCBieSBIYW5kbGViYXJzCi0gICovCi0gIFN0cmluZy5wcm90b3R5cGUuaHRtbFNh
ZmUgPSBmdW5jdGlvbigpIHsKLSAgICByZXR1cm4gaHRtbFNhZmUodGhpcyk7Ci0gIH07Ci19Ci0K
LX0pKCk7Ci0KLQotCi0oZnVuY3Rpb24oKSB7Ci1FbWJlci5IYW5kbGViYXJzLnJlc29sdmVQYXRo
cyA9IGZ1bmN0aW9uKG9wdGlvbnMpIHsKLSAgdmFyIHJldCA9IFtdLAotICAgICAgY29udGV4dHMg
PSBvcHRpb25zLmNvbnRleHRzLAotICAgICAgcm9vdHMgPSBvcHRpb25zLnJvb3RzLAotICAgICAg
ZGF0YSA9IG9wdGlvbnMuZGF0YTsKLQotICBmb3IgKHZhciBpPTAsIGw9Y29udGV4dHMubGVuZ3Ro
OyBpPGw7IGkrKykgewotICAgIHJldC5wdXNoKCBFbWJlci5IYW5kbGViYXJzLmdldChyb290c1tp
XSwgY29udGV4dHNbaV0sIHsgZGF0YTogZGF0YSB9KSApOwotICB9Ci0KLSAgcmV0dXJuIHJldDsK
LX07Ci0KLX0pKCk7Ci0KLQotCi0oZnVuY3Rpb24oKSB7Ci0vKmpzaGludCBuZXdjYXA6ZmFsc2Uq
LwotLyoqCi1AbW9kdWxlIGVtYmVyCi1Ac3VibW9kdWxlIGVtYmVyLWhhbmRsZWJhcnMKLSovCi0K
LXZhciBzZXQgPSBFbWJlci5zZXQsIGdldCA9IEVtYmVyLmdldDsKLXZhciBNZXRhbW9ycGggPSBy
ZXF1aXJlTW9kdWxlKCdtZXRhbW9ycGgnKTsKLQotZnVuY3Rpb24gbm90aWZ5TXV0YXRpb25MaXN0
ZW5lcnMoKSB7Ci0gIEVtYmVyLnJ1bi5vbmNlKEVtYmVyLlZpZXcsICdub3RpZnlNdXRhdGlvbkxp
c3RlbmVycycpOwotfQotCi0vLyBET01NYW5hZ2VyIHNob3VsZCBqdXN0IGFic3RyYWN0IGRvbSBt
YW5pcHVsYXRpb24gYmV0d2VlbiBqcXVlcnkgYW5kIG1ldGFtb3JwaAotdmFyIERPTU1hbmFnZXIg
PSB7Ci0gIHJlbW92ZTogZnVuY3Rpb24odmlldykgewotICAgIHZpZXcubW9ycGgucmVtb3ZlKCk7
Ci0gICAgbm90aWZ5TXV0YXRpb25MaXN0ZW5lcnMoKTsKLSAgfSwKLQotICBwcmVwZW5kOiBmdW5j
dGlvbih2aWV3LCBodG1sKSB7Ci0gICAgdmlldy5tb3JwaC5wcmVwZW5kKGh0bWwpOwotICAgIG5v
dGlmeU11dGF0aW9uTGlzdGVuZXJzKCk7Ci0gIH0sCi0KLSAgYWZ0ZXI6IGZ1bmN0aW9uKHZpZXcs
IGh0bWwpIHsKLSAgICB2aWV3Lm1vcnBoLmFmdGVyKGh0bWwpOwotICAgIG5vdGlmeU11dGF0aW9u
TGlzdGVuZXJzKCk7Ci0gIH0sCi0KLSAgaHRtbDogZnVuY3Rpb24odmlldywgaHRtbCkgewotICAg
IHZpZXcubW9ycGguaHRtbChodG1sKTsKLSAgICBub3RpZnlNdXRhdGlvbkxpc3RlbmVycygpOwot
ICB9LAotCi0gIC8vIFRoaXMgaXMgbWVzc2VkIHVwLgotICByZXBsYWNlOiBmdW5jdGlvbih2aWV3
KSB7Ci0gICAgdmFyIG1vcnBoID0gdmlldy5tb3JwaDsKLQotICAgIHZpZXcudHJhbnNpdGlvblRv
KCdwcmVSZW5kZXInKTsKLQotICAgIEVtYmVyLnJ1bi5zY2hlZHVsZSgncmVuZGVyJywgdGhpcywg
ZnVuY3Rpb24gcmVuZGVyTWV0YW1vcnBoVmlldygpIHsKLSAgICAgIGlmICh2aWV3LmlzRGVzdHJv
eWluZykgeyByZXR1cm47IH0KLQotICAgICAgdmlldy5jbGVhclJlbmRlcmVkQ2hpbGRyZW4oKTsK
LSAgICAgIHZhciBidWZmZXIgPSB2aWV3LnJlbmRlclRvQnVmZmVyKCk7Ci0KLSAgICAgIHZpZXcu
aW52b2tlUmVjdXJzaXZlbHkoZnVuY3Rpb24odmlldykgewotICAgICAgICB2aWV3LnByb3BlcnR5
V2lsbENoYW5nZSgnZWxlbWVudCcpOwotICAgICAgfSk7Ci0gICAgICB2aWV3LnRyaWdnZXJSZWN1
cnNpdmVseSgnd2lsbEluc2VydEVsZW1lbnQnKTsKLQotICAgICAgbW9ycGgucmVwbGFjZVdpdGgo
YnVmZmVyLnN0cmluZygpKTsKLSAgICAgIHZpZXcudHJhbnNpdGlvblRvKCdpbkRPTScpOwotCi0g
ICAgICB2aWV3Lmludm9rZVJlY3Vyc2l2ZWx5KGZ1bmN0aW9uKHZpZXcpIHsKLSAgICAgICAgdmll
dy5wcm9wZXJ0eURpZENoYW5nZSgnZWxlbWVudCcpOwotICAgICAgfSk7Ci0gICAgICB2aWV3LnRy
aWdnZXJSZWN1cnNpdmVseSgnZGlkSW5zZXJ0RWxlbWVudCcpOwotCi0gICAgICBub3RpZnlNdXRh
dGlvbkxpc3RlbmVycygpOwotICAgIH0pOwotICB9LAotCi0gIGVtcHR5OiBmdW5jdGlvbih2aWV3
KSB7Ci0gICAgdmlldy5tb3JwaC5odG1sKCIiKTsKLSAgICBub3RpZnlNdXRhdGlvbkxpc3RlbmVy
cygpOwotICB9Ci19OwotCi0vLyBUaGUgYG1vcnBoYCBhbmQgYG91dGVySFRNTGAgcHJvcGVydGll
cyBhcmUgaW50ZXJuYWwgb25seQotLy8gYW5kIG5vdCBvYnNlcnZhYmxlLgotCi0vKioKLSAgQGNs
YXNzIF9NZXRhbW9ycGgKLSAgQG5hbWVzcGFjZSBFbWJlcgotICBAcHJpdmF0ZQotKi8KLUVtYmVy
Ll9NZXRhbW9ycGggPSBFbWJlci5NaXhpbi5jcmVhdGUoewotICBpc1ZpcnR1YWw6IHRydWUsCi0g
IHRhZ05hbWU6ICcnLAotCi0gIGluc3RydW1lbnROYW1lOiAnbWV0YW1vcnBoJywKLQotICBpbml0
OiBmdW5jdGlvbigpIHsKLSAgICB0aGlzLl9zdXBlcigpOwotICAgIHRoaXMubW9ycGggPSBNZXRh
bW9ycGgoKTsKLSAgICBFbWJlci5kZXByZWNhdGUoJ1N1cHBseWluZyBhIHRhZ05hbWUgdG8gTWV0
YW1vcnBoIHZpZXdzIGlzIHVucmVsaWFibGUgYW5kIGlzIGRlcHJlY2F0ZWQuIFlvdSBtYXkgYmUg
c2V0dGluZyB0aGUgdGFnTmFtZSBvbiBhIEhhbmRsZWJhcnMgaGVscGVyIHRoYXQgY3JlYXRlcyBh
IE1ldGFtb3JwaC4nLCAhdGhpcy50YWdOYW1lKTsKLSAgfSwKLQotICBiZWZvcmVSZW5kZXI6IGZ1
bmN0aW9uKGJ1ZmZlcikgewotICAgIGJ1ZmZlci5wdXNoKHRoaXMubW9ycGguc3RhcnRUYWcoKSk7
Ci0gICAgYnVmZmVyLnB1c2hPcGVuaW5nVGFnKCk7Ci0gIH0sCi0KLSAgYWZ0ZXJSZW5kZXI6IGZ1
bmN0aW9uKGJ1ZmZlcikgewotICAgIGJ1ZmZlci5wdXNoQ2xvc2luZ1RhZygpOwotICAgIGJ1ZmZl
ci5wdXNoKHRoaXMubW9ycGguZW5kVGFnKCkpOwotICB9LAotCi0gIGNyZWF0ZUVsZW1lbnQ6IGZ1
bmN0aW9uKCkgewotICAgIHZhciBidWZmZXIgPSB0aGlzLnJlbmRlclRvQnVmZmVyKCk7Ci0gICAg
dGhpcy5vdXRlckhUTUwgPSBidWZmZXIuc3RyaW5nKCk7Ci0gICAgdGhpcy5jbGVhckJ1ZmZlcigp
OwotICB9LAotCi0gIGRvbU1hbmFnZXI6IERPTU1hbmFnZXIKLX0pOwotCi0vKioKLSAgQGNsYXNz
IF9NZXRhbW9ycGhWaWV3Ci0gIEBuYW1lc3BhY2UgRW1iZXIKLSAgQGV4dGVuZHMgRW1iZXIuVmll
dwotICBAdXNlcyBFbWJlci5fTWV0YW1vcnBoCi0gIEBwcml2YXRlCi0qLwotRW1iZXIuX01ldGFt
b3JwaFZpZXcgPSBFbWJlci5WaWV3LmV4dGVuZChFbWJlci5fTWV0YW1vcnBoKTsKLQotLyoqCi0g
IEBjbGFzcyBfU2ltcGxlTWV0YW1vcnBoVmlldwotICBAbmFtZXNwYWNlIEVtYmVyCi0gIEBleHRl
bmRzIEVtYmVyLkNvcmVWaWV3Ci0gIEB1c2VzIEVtYmVyLl9NZXRhbW9ycGgKLSAgQHByaXZhdGUK
LSovCi1FbWJlci5fU2ltcGxlTWV0YW1vcnBoVmlldyA9IEVtYmVyLkNvcmVWaWV3LmV4dGVuZChF
bWJlci5fTWV0YW1vcnBoKTsKLQotCi19KSgpOwotCi0KLQotKGZ1bmN0aW9uKCkgewotLypnbG9i
YWxzIEhhbmRsZWJhcnMgKi8KLS8qanNoaW50IG5ld2NhcDpmYWxzZSovCi0vKioKLUBtb2R1bGUg
ZW1iZXIKLUBzdWJtb2R1bGUgZW1iZXItaGFuZGxlYmFycwotKi8KLQotdmFyIGdldCA9IEVtYmVy
LmdldCwgc2V0ID0gRW1iZXIuc2V0LCBoYW5kbGViYXJzR2V0ID0gRW1iZXIuSGFuZGxlYmFycy5n
ZXQ7Ci12YXIgTWV0YW1vcnBoID0gcmVxdWlyZU1vZHVsZSgnbWV0YW1vcnBoJyk7Ci1mdW5jdGlv
biBTaW1wbGVIYW5kbGViYXJzVmlldyhwYXRoLCBwYXRoUm9vdCwgaXNFc2NhcGVkLCB0ZW1wbGF0
ZURhdGEpIHsKLSAgdGhpcy5wYXRoID0gcGF0aDsKLSAgdGhpcy5wYXRoUm9vdCA9IHBhdGhSb290
OwotICB0aGlzLmlzRXNjYXBlZCA9IGlzRXNjYXBlZDsKLSAgdGhpcy50ZW1wbGF0ZURhdGEgPSB0
ZW1wbGF0ZURhdGE7Ci0KLSAgdGhpcy5tb3JwaCA9IE1ldGFtb3JwaCgpOwotICB0aGlzLnN0YXRl
ID0gJ3ByZVJlbmRlcic7Ci0gIHRoaXMudXBkYXRlSWQgPSBudWxsOwotICB0aGlzLl9wYXJlbnRW
aWV3ID0gbnVsbDsKLSAgdGhpcy5idWZmZXIgPSBudWxsOwotfQotCi1FbWJlci5fU2ltcGxlSGFu
ZGxlYmFyc1ZpZXcgPSBTaW1wbGVIYW5kbGViYXJzVmlldzsKLQotU2ltcGxlSGFuZGxlYmFyc1Zp
ZXcucHJvdG90eXBlID0gewotICBpc1ZpcnR1YWw6IHRydWUsCi0gIGlzVmlldzogdHJ1ZSwKLQot
ICBkZXN0cm95OiBmdW5jdGlvbiAoKSB7Ci0gICAgaWYgKHRoaXMudXBkYXRlSWQpIHsKLSAgICAg
IEVtYmVyLnJ1bi5jYW5jZWwodGhpcy51cGRhdGVJZCk7Ci0gICAgICB0aGlzLnVwZGF0ZUlkID0g
bnVsbDsKLSAgICB9Ci0gICAgaWYgKHRoaXMuX3BhcmVudFZpZXcpIHsKLSAgICAgIHRoaXMuX3Bh
cmVudFZpZXcucmVtb3ZlQ2hpbGQodGhpcyk7Ci0gICAgfQotICAgIHRoaXMubW9ycGggPSBudWxs
OwotICAgIHRoaXMuc3RhdGUgPSAnZGVzdHJveWVkJzsKLSAgfSwKLQotICBwcm9wZXJ0eVdpbGxD
aGFuZ2U6IEVtYmVyLkssCi0KLSAgcHJvcGVydHlEaWRDaGFuZ2U6IEVtYmVyLkssCi0KLSAgbm9y
bWFsaXplZFZhbHVlOiBmdW5jdGlvbigpIHsKLSAgICB2YXIgcGF0aCA9IHRoaXMucGF0aCwKLSAg
ICAgICAgcGF0aFJvb3QgPSB0aGlzLnBhdGhSb290LAotICAgICAgICByZXN1bHQsIHRlbXBsYXRl
RGF0YTsKLQotICAgIC8vIFVzZSB0aGUgcGF0aFJvb3QgYXMgdGhlIHJlc3VsdCBpZiBubyBwYXRo
IGlzIHByb3ZpZGVkLiBUaGlzCi0gICAgLy8gaGFwcGVucyBpZiB0aGUgcGF0aCBpcyBgdGhpc2As
IHdoaWNoIGdldHMgbm9ybWFsaXplZCBpbnRvCi0gICAgLy8gYSBgcGF0aFJvb3RgIG9mIHRoZSBj
dXJyZW50IEhhbmRsZWJhcnMgY29udGV4dCBhbmQgYSBwYXRoCi0gICAgLy8gb2YgYCcnYC4KLSAg
ICBpZiAocGF0aCA9PT0gJycpIHsKLSAgICAgIHJlc3VsdCA9IHBhdGhSb290OwotICAgIH0gZWxz
ZSB7Ci0gICAgICB0ZW1wbGF0ZURhdGEgPSB0aGlzLnRlbXBsYXRlRGF0YTsKLSAgICAgIHJlc3Vs
dCA9IGhhbmRsZWJhcnNHZXQocGF0aFJvb3QsIHBhdGgsIHsgZGF0YTogdGVtcGxhdGVEYXRhIH0p
OwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci0gIH0sCi0KLSAgcmVuZGVyVG9CdWZmZXI6
IGZ1bmN0aW9uKGJ1ZmZlcikgewotICAgIHZhciBzdHJpbmcgPSAnJzsKLQotICAgIHN0cmluZyAr
PSB0aGlzLm1vcnBoLnN0YXJ0VGFnKCk7Ci0gICAgc3RyaW5nICs9IHRoaXMucmVuZGVyKCk7Ci0g
ICAgc3RyaW5nICs9IHRoaXMubW9ycGguZW5kVGFnKCk7Ci0KLSAgICBidWZmZXIucHVzaChzdHJp
bmcpOwotICB9LAotCi0gIHJlbmRlcjogZnVuY3Rpb24oKSB7Ci0gICAgLy8gSWYgbm90IGludm9r
ZWQgdmlhIGEgdHJpcGxlLW11c3RhY2hlICh7e3tmb299fX0pLCBlc2NhcGUKLSAgICAvLyB0aGUg
Y29udGVudCBvZiB0aGUgdGVtcGxhdGUuCi0gICAgdmFyIGVzY2FwZSA9IHRoaXMuaXNFc2NhcGVk
OwotICAgIHZhciByZXN1bHQgPSB0aGlzLm5vcm1hbGl6ZWRWYWx1ZSgpOwotCi0gICAgaWYgKHJl
c3VsdCA9PT0gbnVsbCB8fCByZXN1bHQgPT09IHVuZGVmaW5lZCkgewotICAgICAgcmVzdWx0ID0g
IiI7Ci0gICAgfSBlbHNlIGlmICghKHJlc3VsdCBpbnN0YW5jZW9mIEhhbmRsZWJhcnMuU2FmZVN0
cmluZykpIHsKLSAgICAgIHJlc3VsdCA9IFN0cmluZyhyZXN1bHQpOwotICAgIH0KLQotICAgIGlm
IChlc2NhcGUpIHsgcmVzdWx0ID0gSGFuZGxlYmFycy5VdGlscy5lc2NhcGVFeHByZXNzaW9uKHJl
c3VsdCk7IH0KLSAgICByZXR1cm4gcmVzdWx0OwotICB9LAotCi0gIHJlcmVuZGVyOiBmdW5jdGlv
bigpIHsKLSAgICBzd2l0Y2godGhpcy5zdGF0ZSkgewotICAgICAgY2FzZSAncHJlUmVuZGVyJzoK
LSAgICAgIGNhc2UgJ2Rlc3Ryb3llZCc6Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSAnaW5C
dWZmZXInOgotICAgICAgICB0aHJvdyBuZXcgRW1iZXIuRXJyb3IoIlNvbWV0aGluZyB5b3UgZGlk
IHRyaWVkIHRvIHJlcGxhY2UgYW4ge3tleHByZXNzaW9ufX0gYmVmb3JlIGl0IHdhcyBpbnNlcnRl
ZCBpbnRvIHRoZSBET00uIik7Ci0gICAgICBjYXNlICdoYXNFbGVtZW50JzoKLSAgICAgIGNhc2Ug
J2luRE9NJzoKLSAgICAgICAgdGhpcy51cGRhdGVJZCA9IEVtYmVyLnJ1bi5zY2hlZHVsZU9uY2Uo
J3JlbmRlcicsIHRoaXMsICd1cGRhdGUnKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAg
cmV0dXJuIHRoaXM7Ci0gIH0sCi0KLSAgdXBkYXRlOiBmdW5jdGlvbiAoKSB7Ci0gICAgdGhpcy51
cGRhdGVJZCA9IG51bGw7Ci0gICAgdGhpcy5tb3JwaC5odG1sKHRoaXMucmVuZGVyKCkpOwotICB9
LAotCi0gIHRyYW5zaXRpb25UbzogZnVuY3Rpb24oc3RhdGUpIHsKLSAgICB0aGlzLnN0YXRlID0g
c3RhdGU7Ci0gIH0KLX07Ci0KLXZhciBzdGF0ZXMgPSBFbWJlci5WaWV3LmNsb25lU3RhdGVzKEVt
YmVyLlZpZXcuc3RhdGVzKSwgbWVyZ2UgPSBFbWJlci5tZXJnZTsKLQotbWVyZ2Uoc3RhdGVzLl9k
ZWZhdWx0LCB7Ci0gIHJlcmVuZGVySWZOZWVkZWQ6IEVtYmVyLksKLX0pOwotCi1tZXJnZShzdGF0
ZXMuaW5ET00sIHsKLSAgcmVyZW5kZXJJZk5lZWRlZDogZnVuY3Rpb24odmlldykgewotICAgIGlm
ICh2aWV3Lm5vcm1hbGl6ZWRWYWx1ZSgpICE9PSB2aWV3Ll9sYXN0Tm9ybWFsaXplZFZhbHVlKSB7
Ci0gICAgICB2aWV3LnJlcmVuZGVyKCk7Ci0gICAgfQotICB9Ci19KTsKLQotLyoqCi0gIGBFbWJl
ci5fSGFuZGxlYmFyc0JvdW5kVmlld2AgaXMgYSBwcml2YXRlIHZpZXcgY3JlYXRlZCBieSB0aGUg
SGFuZGxlYmFycwotICBge3tiaW5kfX1gIGhlbHBlcnMgdGhhdCBpcyB1c2VkIHRvIGtlZXAgdHJh
Y2sgb2YgYm91bmQgcHJvcGVydGllcy4KLQotICBFdmVyeSB0aW1lIGEgcHJvcGVydHkgaXMgYm91
bmQgdXNpbmcgYSBge3ttdXN0YWNoZX19YCwgYW4gYW5vbnltb3VzIHN1YmNsYXNzCi0gIG9mIGBF
bWJlci5fSGFuZGxlYmFyc0JvdW5kVmlld2AgaXMgY3JlYXRlZCB3aXRoIHRoZSBhcHByb3ByaWF0
ZSBzdWItdGVtcGxhdGUKLSAgYW5kIGNvbnRleHQgc2V0IHVwLiBXaGVuIHRoZSBhc3NvY2lhdGVk
IHByb3BlcnR5IGNoYW5nZXMsIGp1c3QgdGhlIHRlbXBsYXRlCi0gIGZvciB0aGlzIHZpZXcgd2ls
bCByZS1yZW5kZXIuCi0KLSAgQGNsYXNzIF9IYW5kbGViYXJzQm91bmRWaWV3Ci0gIEBuYW1lc3Bh
Y2UgRW1iZXIKLSAgQGV4dGVuZHMgRW1iZXIuX01ldGFtb3JwaFZpZXcKLSAgQHByaXZhdGUKLSov
Ci1FbWJlci5fSGFuZGxlYmFyc0JvdW5kVmlldyA9IEVtYmVyLl9NZXRhbW9ycGhWaWV3LmV4dGVu
ZCh7Ci0gIGluc3RydW1lbnROYW1lOiAnYm91bmRIYW5kbGViYXJzJywKLSAgc3RhdGVzOiBzdGF0
ZXMsCi0KLSAgLyoqCi0gICAgVGhlIGZ1bmN0aW9uIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZSBg
ZGlzcGxheVRlbXBsYXRlYCBvcgotICAgIGBpbnZlcnNlVGVtcGxhdGVgIHNob3VsZCBiZSByZW5k
ZXJlZC4gVGhpcyBzaG91bGQgYmUgYSBmdW5jdGlvbiB0aGF0IHRha2VzCi0gICAgYSB2YWx1ZSBh
bmQgcmV0dXJucyBhIEJvb2xlYW4uCi0KLSAgICBAcHJvcGVydHkgc2hvdWxkRGlzcGxheUZ1bmMK
LSAgICBAdHlwZSBGdW5jdGlvbgotICAgIEBkZWZhdWx0IG51bGwKLSAgKi8KLSAgc2hvdWxkRGlz
cGxheUZ1bmM6IG51bGwsCi0KLSAgLyoqCi0gICAgV2hldGhlciB0aGUgdGVtcGxhdGUgcmVuZGVy
ZWQgYnkgdGhpcyB2aWV3IGdldHMgcGFzc2VkIHRoZSBjb250ZXh0IG9iamVjdAotICAgIG9mIGl0
cyBwYXJlbnQgdGVtcGxhdGUsIG9yIGdldHMgcGFzc2VkIHRoZSB2YWx1ZSBvZiByZXRyaWV2aW5n
IGBwYXRoYAotICAgIGZyb20gdGhlIGBwYXRoUm9vdGAuCi0KLSAgICBGb3IgZXhhbXBsZSwgdGhp
cyBpcyB0cnVlIHdoZW4gdXNpbmcgdGhlIGB7eyNpZn19YCBoZWxwZXIsIGJlY2F1c2UgdGhlCi0g
ICAgdGVtcGxhdGUgaW5zaWRlIHRoZSBoZWxwZXIgc2hvdWxkIGxvb2sgdXAgcHJvcGVydGllcyBy
ZWxhdGl2ZSB0byB0aGUgc2FtZQotICAgIG9iamVjdCBhcyBvdXRzaWRlIHRoZSBibG9jay4gVGhp
cyB3b3VsZCBiZSBgZmFsc2VgIHdoZW4gdXNlZCB3aXRoIGB7eyN3aXRoCi0gICAgZm9vfX1gIGJl
Y2F1c2UgdGhlIHRlbXBsYXRlIHNob3VsZCByZWNlaXZlIHRoZSBvYmplY3QgZm91bmQgYnkgZXZh
bHVhdGluZwotICAgIGBmb29gLgotCi0gICAgQHByb3BlcnR5IHByZXNlcnZlQ29udGV4dAotICAg
IEB0eXBlIEJvb2xlYW4KLSAgICBAZGVmYXVsdCBmYWxzZQotICAqLwotICBwcmVzZXJ2ZUNvbnRl
eHQ6IGZhbHNlLAotCi0gIC8qKgotICAgIElmIGBwcmVzZXJ2ZUNvbnRleHRgIGlzIHRydWUsIHRo
aXMgaXMgdGhlIG9iamVjdCB0aGF0IHdpbGwgYmUgdXNlZAotICAgIHRvIHJlbmRlciB0aGUgdGVt
cGxhdGUuCi0KLSAgICBAcHJvcGVydHkgcHJldmlvdXNDb250ZXh0Ci0gICAgQHR5cGUgT2JqZWN0
Ci0gICovCi0gIHByZXZpb3VzQ29udGV4dDogbnVsbCwKLQotICAvKioKLSAgICBUaGUgdGVtcGxh
dGUgdG8gcmVuZGVyIHdoZW4gYHNob3VsZERpc3BsYXlGdW5jYCBldmFsdWF0ZXMgdG8gYHRydWVg
LgotCi0gICAgQHByb3BlcnR5IGRpc3BsYXlUZW1wbGF0ZQotICAgIEB0eXBlIEZ1bmN0aW9uCi0g
ICAgQGRlZmF1bHQgbnVsbAotICAqLwotICBkaXNwbGF5VGVtcGxhdGU6IG51bGwsCi0KLSAgLyoq
Ci0gICAgVGhlIHRlbXBsYXRlIHRvIHJlbmRlciB3aGVuIGBzaG91bGREaXNwbGF5RnVuY2AgZXZh
bHVhdGVzIHRvIGBmYWxzZWAuCi0KLSAgICBAcHJvcGVydHkgaW52ZXJzZVRlbXBsYXRlCi0gICAg
QHR5cGUgRnVuY3Rpb24KLSAgICBAZGVmYXVsdCBudWxsCi0gICovCi0gIGludmVyc2VUZW1wbGF0
ZTogbnVsbCwKLQotCi0gIC8qKgotICAgIFRoZSBwYXRoIHRvIGxvb2sgdXAgb24gYHBhdGhSb290
YCB0aGF0IGlzIHBhc3NlZCB0bwotICAgIGBzaG91bGREaXNwbGF5RnVuY2AgdG8gZGV0ZXJtaW5l
IHdoaWNoIHRlbXBsYXRlIHRvIHJlbmRlci4KLQotICAgIEluIGFkZGl0aW9uLCBpZiBgcHJlc2Vy
dmVDb250ZXh0YCBpcyBgZmFsc2UsYCB0aGUgb2JqZWN0IGF0IHRoaXMgcGF0aCB3aWxsCi0gICAg
YmUgcGFzc2VkIHRvIHRoZSB0ZW1wbGF0ZSB3aGVuIHJlbmRlcmluZy4KLQotICAgIEBwcm9wZXJ0
eSBwYXRoCi0gICAgQHR5cGUgU3RyaW5nCi0gICAgQGRlZmF1bHQgbnVsbAotICAqLwotICBwYXRo
OiBudWxsLAotCi0gIC8qKgotICAgIFRoZSBvYmplY3QgZnJvbSB3aGljaCB0aGUgYHBhdGhgIHdp
bGwgYmUgbG9va2VkIHVwLiBTb21ldGltZXMgdGhpcyBpcyB0aGUKLSAgICBzYW1lIGFzIHRoZSBg
cHJldmlvdXNDb250ZXh0YCwgYnV0IGluIGNhc2VzIHdoZXJlIHRoaXMgdmlldyBoYXMgYmVlbgot
ICAgIGdlbmVyYXRlZCBmb3IgcGF0aHMgdGhhdCBzdGFydCB3aXRoIGEga2V5d29yZCBzdWNoIGFz
IGB2aWV3YCBvcgotICAgIGBjb250cm9sbGVyYCwgdGhlIHBhdGggcm9vdCB3aWxsIGJlIHRoYXQg
cmVzb2x2ZWQgb2JqZWN0LgotCi0gICAgQHByb3BlcnR5IHBhdGhSb290Ci0gICAgQHR5cGUgT2Jq
ZWN0Ci0gICovCi0gIHBhdGhSb290OiBudWxsLAotCi0gIG5vcm1hbGl6ZWRWYWx1ZTogZnVuY3Rp
b24oKSB7Ci0gICAgdmFyIHBhdGggPSBnZXQodGhpcywgJ3BhdGgnKSwKLSAgICAgICAgcGF0aFJv
b3QgID0gZ2V0KHRoaXMsICdwYXRoUm9vdCcpLAotICAgICAgICB2YWx1ZU5vcm1hbGl6ZXIgPSBn
ZXQodGhpcywgJ3ZhbHVlTm9ybWFsaXplckZ1bmMnKSwKLSAgICAgICAgcmVzdWx0LCB0ZW1wbGF0
ZURhdGE7Ci0KLSAgICAvLyBVc2UgdGhlIHBhdGhSb290IGFzIHRoZSByZXN1bHQgaWYgbm8gcGF0
aCBpcyBwcm92aWRlZC4gVGhpcwotICAgIC8vIGhhcHBlbnMgaWYgdGhlIHBhdGggaXMgYHRoaXNg
LCB3aGljaCBnZXRzIG5vcm1hbGl6ZWQgaW50bwotICAgIC8vIGEgYHBhdGhSb290YCBvZiB0aGUg
Y3VycmVudCBIYW5kbGViYXJzIGNvbnRleHQgYW5kIGEgcGF0aAotICAgIC8vIG9mIGAnJ2AuCi0g
ICAgaWYgKHBhdGggPT09ICcnKSB7Ci0gICAgICByZXN1bHQgPSBwYXRoUm9vdDsKLSAgICB9IGVs
c2UgewotICAgICAgdGVtcGxhdGVEYXRhID0gZ2V0KHRoaXMsICd0ZW1wbGF0ZURhdGEnKTsKLSAg
ICAgIHJlc3VsdCA9IGhhbmRsZWJhcnNHZXQocGF0aFJvb3QsIHBhdGgsIHsgZGF0YTogdGVtcGxh
dGVEYXRhIH0pOwotICAgIH0KLQotICAgIHJldHVybiB2YWx1ZU5vcm1hbGl6ZXIgPyB2YWx1ZU5v
cm1hbGl6ZXIocmVzdWx0KSA6IHJlc3VsdDsKLSAgfSwKLQotICByZXJlbmRlcklmTmVlZGVkOiBm
dW5jdGlvbigpIHsKLSAgICB0aGlzLmN1cnJlbnRTdGF0ZS5yZXJlbmRlcklmTmVlZGVkKHRoaXMp
OwotICB9LAotCi0gIC8qKgotICAgIERldGVybWluZXMgd2hpY2ggdGVtcGxhdGUgdG8gaW52b2tl
LCBzZXRzIHVwIHRoZSBjb3JyZWN0IHN0YXRlIGJhc2VkIG9uCi0gICAgdGhhdCBsb2dpYywgdGhl
biBpbnZva2VzIHRoZSBkZWZhdWx0IGBFbWJlci5WaWV3YCBgcmVuZGVyYCBpbXBsZW1lbnRhdGlv
bi4KLQotICAgIFRoaXMgbWV0aG9kIHdpbGwgZmlyc3QgbG9vayB1cCB0aGUgYHBhdGhgIGtleSBv
biBgcGF0aFJvb3RgLAotICAgIHRoZW4gcGFzcyB0aGF0IHZhbHVlIHRvIHRoZSBgc2hvdWxkRGlz
cGxheUZ1bmNgIGZ1bmN0aW9uLiBJZiB0aGF0IHJldHVybnMKLSAgICBgdHJ1ZSxgIHRoZSBgZGlz
cGxheVRlbXBsYXRlYCBmdW5jdGlvbiB3aWxsIGJlIHJlbmRlcmVkIHRvIERPTS4gT3RoZXJ3aXNl
LAotICAgIGBpbnZlcnNlVGVtcGxhdGVgLCBpZiBzcGVjaWZpZWQsIHdpbGwgYmUgcmVuZGVyZWQu
Ci0KLSAgICBGb3IgZXhhbXBsZSwgaWYgdGhpcyBgRW1iZXIuX0hhbmRsZWJhcnNCb3VuZFZpZXdg
IHJlcHJlc2VudGVkIHRoZSBge3sjd2l0aAotICAgIGZvb319YCBoZWxwZXIsIGl0IHdvdWxkIGxv
b2sgdXAgdGhlIGBmb29gIHByb3BlcnR5IG9mIGl0cyBjb250ZXh0LCBhbmQKLSAgICBgc2hvdWxk
RGlzcGxheUZ1bmNgIHdvdWxkIGFsd2F5cyByZXR1cm4gdHJ1ZS4gVGhlIG9iamVjdCBmb3VuZCBi
eSBsb29raW5nCi0gICAgdXAgYGZvb2Agd291bGQgYmUgcGFzc2VkIHRvIGBkaXNwbGF5VGVtcGxh
dGVgLgotCi0gICAgQG1ldGhvZCByZW5kZXIKLSAgICBAcGFyYW0ge0VtYmVyLlJlbmRlckJ1ZmZl
cn0gYnVmZmVyCi0gICovCi0gIHJlbmRlcjogZnVuY3Rpb24oYnVmZmVyKSB7Ci0gICAgLy8gSWYg
bm90IGludm9rZWQgdmlhIGEgdHJpcGxlLW11c3RhY2hlICh7e3tmb299fX0pLCBlc2NhcGUKLSAg
ICAvLyB0aGUgY29udGVudCBvZiB0aGUgdGVtcGxhdGUuCi0gICAgdmFyIGVzY2FwZSA9IGdldCh0
aGlzLCAnaXNFc2NhcGVkJyk7Ci0KLSAgICB2YXIgc2hvdWxkRGlzcGxheSA9IGdldCh0aGlzLCAn
c2hvdWxkRGlzcGxheUZ1bmMnKSwKLSAgICAgICAgcHJlc2VydmVDb250ZXh0ID0gZ2V0KHRoaXMs
ICdwcmVzZXJ2ZUNvbnRleHQnKSwKLSAgICAgICAgY29udGV4dCA9IGdldCh0aGlzLCAncHJldmlv
dXNDb250ZXh0Jyk7Ci0KLSAgICB2YXIgaW52ZXJzZVRlbXBsYXRlID0gZ2V0KHRoaXMsICdpbnZl
cnNlVGVtcGxhdGUnKSwKLSAgICAgICAgZGlzcGxheVRlbXBsYXRlID0gZ2V0KHRoaXMsICdkaXNw
bGF5VGVtcGxhdGUnKTsKLQotICAgIHZhciByZXN1bHQgPSB0aGlzLm5vcm1hbGl6ZWRWYWx1ZSgp
OwotICAgIHRoaXMuX2xhc3ROb3JtYWxpemVkVmFsdWUgPSByZXN1bHQ7Ci0KLSAgICAvLyBGaXJz
dCwgdGVzdCB0aGUgY29uZGl0aW9uYWwgdG8gc2VlIGlmIHdlIHNob3VsZAotICAgIC8vIHJlbmRl
ciB0aGUgdGVtcGxhdGUgb3Igbm90LgotICAgIGlmIChzaG91bGREaXNwbGF5KHJlc3VsdCkpIHsK
LSAgICAgIHNldCh0aGlzLCAndGVtcGxhdGUnLCBkaXNwbGF5VGVtcGxhdGUpOwotCi0gICAgICAv
LyBJZiB3ZSBhcmUgcHJlc2VydmluZyB0aGUgY29udGV4dCAoZm9yIGV4YW1wbGUsIGlmIHRoaXMK
LSAgICAgIC8vIGlzIGFuICNpZiBibG9jaywgY2FsbCB0aGUgdGVtcGxhdGUgd2l0aCB0aGUgc2Ft
ZSBvYmplY3QuCi0gICAgICBpZiAocHJlc2VydmVDb250ZXh0KSB7Ci0gICAgICAgIHNldCh0aGlz
LCAnX2NvbnRleHQnLCBjb250ZXh0KTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAvLyBPdGhlcndp
c2UsIGRldGVybWluZSBpZiB0aGlzIGlzIGEgYmxvY2sgYmluZCBvciBub3QuCi0gICAgICAvLyBJ
ZiBzbywgcGFzcyB0aGUgc3BlY2lmaWVkIG9iamVjdCB0byB0aGUgdGVtcGxhdGUKLSAgICAgICAg
aWYgKGRpc3BsYXlUZW1wbGF0ZSkgewotICAgICAgICAgIHNldCh0aGlzLCAnX2NvbnRleHQnLCBy
ZXN1bHQpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAvLyBUaGlzIGlzIG5vdCBhIGJpbmQg
YmxvY2ssIGp1c3QgcHVzaCB0aGUgcmVzdWx0IG9mIHRoZQotICAgICAgICAvLyBleHByZXNzaW9u
IHRvIHRoZSByZW5kZXIgY29udGV4dCBhbmQgcmV0dXJuLgotICAgICAgICAgIGlmIChyZXN1bHQg
PT09IG51bGwgfHwgcmVzdWx0ID09PSB1bmRlZmluZWQpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9
ICIiOwotICAgICAgICAgIH0gZWxzZSBpZiAoIShyZXN1bHQgaW5zdGFuY2VvZiBIYW5kbGViYXJz
LlNhZmVTdHJpbmcpKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBTdHJpbmcocmVzdWx0KTsKLSAg
ICAgICAgICB9Ci0KLSAgICAgICAgICBpZiAoZXNjYXBlKSB7IHJlc3VsdCA9IEhhbmRsZWJhcnMu
VXRpbHMuZXNjYXBlRXhwcmVzc2lvbihyZXN1bHQpOyB9Ci0gICAgICAgICAgYnVmZmVyLnB1c2go
cmVzdWx0KTsKLSAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9IGVs
c2UgaWYgKGludmVyc2VUZW1wbGF0ZSkgewotICAgICAgc2V0KHRoaXMsICd0ZW1wbGF0ZScsIGlu
dmVyc2VUZW1wbGF0ZSk7Ci0KLSAgICAgIGlmIChwcmVzZXJ2ZUNvbnRleHQpIHsKLSAgICAgICAg
c2V0KHRoaXMsICdfY29udGV4dCcsIGNvbnRleHQpOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAg
c2V0KHRoaXMsICdfY29udGV4dCcsIHJlc3VsdCk7Ci0gICAgICB9Ci0gICAgfSBlbHNlIHsKLSAg
ICAgIHNldCh0aGlzLCAndGVtcGxhdGUnLCBmdW5jdGlvbigpIHsgcmV0dXJuICcnOyB9KTsKLSAg
ICB9Ci0KLSAgICByZXR1cm4gdGhpcy5fc3VwZXIoYnVmZmVyKTsKLSAgfQotfSk7Ci0KLX0pKCk7
Ci0KLQotCi0oZnVuY3Rpb24oKSB7Ci0vKioKLUBtb2R1bGUgZW1iZXIKLUBzdWJtb2R1bGUgZW1i
ZXItaGFuZGxlYmFycwotKi8KLQotdmFyIGdldCA9IEVtYmVyLmdldCwgc2V0ID0gRW1iZXIuc2V0
LCBmbXQgPSBFbWJlci5TdHJpbmcuZm10OwotdmFyIGhhbmRsZWJhcnNHZXQgPSBFbWJlci5IYW5k
bGViYXJzLmdldCwgbm9ybWFsaXplUGF0aCA9IEVtYmVyLkhhbmRsZWJhcnMubm9ybWFsaXplUGF0
aDsKLXZhciBmb3JFYWNoID0gRW1iZXIuQXJyYXlQb2x5ZmlsbHMuZm9yRWFjaDsKLXZhciBvX2Ny
ZWF0ZSA9IEVtYmVyLmNyZWF0ZTsKLQotdmFyIEVtYmVySGFuZGxlYmFycyA9IEVtYmVyLkhhbmRs
ZWJhcnMsIGhlbHBlcnMgPSBFbWJlckhhbmRsZWJhcnMuaGVscGVyczsKLQotZnVuY3Rpb24gZXhp
c3RzKHZhbHVlKSB7Ci0gIHJldHVybiAhRW1iZXIuaXNOb25lKHZhbHVlKTsKLX0KLQotZnVuY3Rp
b24gc2FuaXRpemVkSGFuZGxlYmFyc0dldChjdXJyZW50Q29udGV4dCwgcHJvcGVydHksIG9wdGlv
bnMpIHsKLSAgdmFyIHJlc3VsdCA9IGhhbmRsZWJhcnNHZXQoY3VycmVudENvbnRleHQsIHByb3Bl
cnR5LCBvcHRpb25zKTsKLSAgaWYgKHJlc3VsdCA9PT0gbnVsbCB8fCByZXN1bHQgPT09IHVuZGVm
aW5lZCkgewotICAgIHJlc3VsdCA9ICIiOwotICB9IGVsc2UgaWYgKCEocmVzdWx0IGluc3RhbmNl
b2YgSGFuZGxlYmFycy5TYWZlU3RyaW5nKSkgewotICAgIHJlc3VsdCA9IFN0cmluZyhyZXN1bHQp
OwotICB9Ci0gIGlmICghb3B0aW9ucy5oYXNoLnVuZXNjYXBlZCl7Ci0gICAgcmVzdWx0ID0gSGFu
ZGxlYmFycy5VdGlscy5lc2NhcGVFeHByZXNzaW9uKHJlc3VsdCk7Ci0gIH0KLQotICByZXR1cm4g
cmVzdWx0OwotfQotCi0vLyBCaW5kcyBhIHByb3BlcnR5IGludG8gdGhlIERPTS4gVGhpcyB3aWxs
IGNyZWF0ZSBhIGhvb2sgaW4gRE9NIHRoYXQgdGhlCi0vLyBLVk8gc3lzdGVtIHdpbGwgbG9vayBm
b3IgYW5kIHVwZGF0ZSBpZiB0aGUgcHJvcGVydHkgY2hhbmdlcy4KLWZ1bmN0aW9uIGJpbmQocHJv
cGVydHksIG9wdGlvbnMsIHByZXNlcnZlQ29udGV4dCwgc2hvdWxkRGlzcGxheSwgdmFsdWVOb3Jt
YWxpemVyLCBjaGlsZFByb3BlcnRpZXMpIHsKLSAgdmFyIGRhdGEgPSBvcHRpb25zLmRhdGEsCi0g
ICAgICBmbiA9IG9wdGlvbnMuZm4sCi0gICAgICBpbnZlcnNlID0gb3B0aW9ucy5pbnZlcnNlLAot
ICAgICAgdmlldyA9IGRhdGEudmlldywKLSAgICAgIGN1cnJlbnRDb250ZXh0ID0gdGhpcywKLSAg
ICAgIG5vcm1hbGl6ZWQsIG9ic2VydmVyLCBpOwotCi0gIG5vcm1hbGl6ZWQgPSBub3JtYWxpemVQ
YXRoKGN1cnJlbnRDb250ZXh0LCBwcm9wZXJ0eSwgZGF0YSk7Ci0KLSAgLy8gU2V0IHVwIG9ic2Vy
dmVycyBmb3Igb2JzZXJ2YWJsZSBvYmplY3RzCi0gIGlmICgnb2JqZWN0JyA9PT0gdHlwZW9mIHRo
aXMpIHsKLSAgICBpZiAoZGF0YS5pbnNpZGVHcm91cCkgewotICAgICAgb2JzZXJ2ZXIgPSBmdW5j
dGlvbigpIHsKLSAgICAgICAgRW1iZXIucnVuLm9uY2UodmlldywgJ3JlcmVuZGVyJyk7Ci0gICAg
ICB9OwotCi0gICAgICB2YXIgdGVtcGxhdGUsIGNvbnRleHQsIHJlc3VsdCA9IGhhbmRsZWJhcnNH
ZXQoY3VycmVudENvbnRleHQsIHByb3BlcnR5LCBvcHRpb25zKTsKLQotICAgICAgcmVzdWx0ID0g
dmFsdWVOb3JtYWxpemVyID8gdmFsdWVOb3JtYWxpemVyKHJlc3VsdCkgOiByZXN1bHQ7Ci0KLSAg
ICAgIGNvbnRleHQgPSBwcmVzZXJ2ZUNvbnRleHQgPyBjdXJyZW50Q29udGV4dCA6IHJlc3VsdDsK
LSAgICAgIGlmIChzaG91bGREaXNwbGF5KHJlc3VsdCkpIHsKLSAgICAgICAgdGVtcGxhdGUgPSBm
bjsKLSAgICAgIH0gZWxzZSBpZiAoaW52ZXJzZSkgewotICAgICAgICB0ZW1wbGF0ZSA9IGludmVy
c2U7Ci0gICAgICB9Ci0KLSAgICAgIHRlbXBsYXRlKGNvbnRleHQsIHsgZGF0YTogb3B0aW9ucy5k
YXRhIH0pOwotICAgIH0gZWxzZSB7Ci0gICAgICAvLyBDcmVhdGUgdGhlIHZpZXcgdGhhdCB3aWxs
IHdyYXAgdGhlIG91dHB1dCBvZiB0aGlzIHRlbXBsYXRlL3Byb3BlcnR5Ci0gICAgICAvLyBhbmQg
YWRkIGl0IHRvIHRoZSBuZWFyZXN0IHZpZXcncyBjaGlsZFZpZXdzIGFycmF5LgotICAgICAgLy8g
U2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mIEVtYmVyLl9IYW5kbGViYXJzQm91bmRWaWV3IGZvciBt
b3JlLgotICAgICAgdmFyIGJpbmRWaWV3ID0gdmlldy5jcmVhdGVDaGlsZFZpZXcoRW1iZXIuX0hh
bmRsZWJhcnNCb3VuZFZpZXcsIHsKLSAgICAgICAgcHJlc2VydmVDb250ZXh0OiBwcmVzZXJ2ZUNv
bnRleHQsCi0gICAgICAgIHNob3VsZERpc3BsYXlGdW5jOiBzaG91bGREaXNwbGF5LAotICAgICAg
ICB2YWx1ZU5vcm1hbGl6ZXJGdW5jOiB2YWx1ZU5vcm1hbGl6ZXIsCi0gICAgICAgIGRpc3BsYXlU
ZW1wbGF0ZTogZm4sCi0gICAgICAgIGludmVyc2VUZW1wbGF0ZTogaW52ZXJzZSwKLSAgICAgICAg
cGF0aDogcHJvcGVydHksCi0gICAgICAgIHBhdGhSb290OiBjdXJyZW50Q29udGV4dCwKLSAgICAg
ICAgcHJldmlvdXNDb250ZXh0OiBjdXJyZW50Q29udGV4dCwKLSAgICAgICAgaXNFc2NhcGVkOiAh
b3B0aW9ucy5oYXNoLnVuZXNjYXBlZCwKLSAgICAgICAgdGVtcGxhdGVEYXRhOiBvcHRpb25zLmRh
dGEKLSAgICAgIH0pOwotCi0gICAgICB2aWV3LmFwcGVuZENoaWxkKGJpbmRWaWV3KTsKLQotICAg
ICAgb2JzZXJ2ZXIgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgRW1iZXIucnVuLnNjaGVkdWxlT25j
ZSgncmVuZGVyJywgYmluZFZpZXcsICdyZXJlbmRlcklmTmVlZGVkJyk7Ci0gICAgICB9OwotICAg
IH0KLQotICAgIC8vIE9ic2VydmVzIHRoZSBnaXZlbiBwcm9wZXJ0eSBvbiB0aGUgY29udGV4dCBh
bmQKLSAgICAvLyB0ZWxscyB0aGUgRW1iZXIuX0hhbmRsZWJhcnNCb3VuZFZpZXcgdG8gcmUtcmVu
ZGVyLiBJZiBwcm9wZXJ0eQotICAgIC8vIGlzIGFuIGVtcHR5IHN0cmluZywgd2UgYXJlIHByaW50
aW5nIHRoZSBjdXJyZW50IGNvbnRleHQKLSAgICAvLyBvYmplY3QgKHt7dGhpc319KSBzbyB1cGRh
dGluZyBpdCBpcyBub3Qgb3VyIHJlc3BvbnNpYmlsaXR5LgotICAgIGlmIChub3JtYWxpemVkLnBh
dGggIT09ICcnKSB7Ci0gICAgICB2aWV3LnJlZ2lzdGVyT2JzZXJ2ZXIobm9ybWFsaXplZC5yb290
LCBub3JtYWxpemVkLnBhdGgsIG9ic2VydmVyKTsKLSAgICAgIGlmIChjaGlsZFByb3BlcnRpZXMp
IHsKLSAgICAgICAgZm9yIChpPTA7IGk8Y2hpbGRQcm9wZXJ0aWVzLmxlbmd0aDsgaSsrKSB7Ci0g
ICAgICAgICAgdmlldy5yZWdpc3Rlck9ic2VydmVyKG5vcm1hbGl6ZWQucm9vdCwgbm9ybWFsaXpl
ZC5wYXRoKycuJytjaGlsZFByb3BlcnRpZXNbaV0sIG9ic2VydmVyKTsKLSAgICAgICAgfQotICAg
ICAgfQotICAgIH0KLSAgfSBlbHNlIHsKLSAgICAvLyBUaGUgb2JqZWN0IGlzIG5vdCBvYnNlcnZh
YmxlLCBzbyBqdXN0IHJlbmRlciBpdCBvdXQgYW5kCi0gICAgLy8gYmUgZG9uZSB3aXRoIGl0Lgot
ICAgIGRhdGEuYnVmZmVyLnB1c2goaGFuZGxlYmFyc0dldChjdXJyZW50Q29udGV4dCwgcHJvcGVy
dHksIG9wdGlvbnMpKTsKLSAgfQotfQotCi1FbWJlckhhbmRsZWJhcnMuYmluZCA9IGJpbmQ7Ci0K
LWZ1bmN0aW9uIHNpbXBsZUJpbmQoY3VycmVudENvbnRleHQsIHByb3BlcnR5LCBvcHRpb25zKSB7
Ci0gIHZhciBkYXRhID0gb3B0aW9ucy5kYXRhLAotICAgICAgdmlldyA9IGRhdGEudmlldywKLSAg
ICAgIG5vcm1hbGl6ZWQsIG9ic2VydmVyLCBwYXRoUm9vdCwgb3V0cHV0OwotCi0gIG5vcm1hbGl6
ZWQgPSBub3JtYWxpemVQYXRoKGN1cnJlbnRDb250ZXh0LCBwcm9wZXJ0eSwgZGF0YSk7Ci0gIHBh
dGhSb290ID0gbm9ybWFsaXplZC5yb290OwotCi0gIC8vIFNldCB1cCBvYnNlcnZlcnMgZm9yIG9i
c2VydmFibGUgb2JqZWN0cwotICBpZiAocGF0aFJvb3QgJiYgKCdvYmplY3QnID09PSB0eXBlb2Yg
cGF0aFJvb3QpKSB7Ci0gICAgaWYgKGRhdGEuaW5zaWRlR3JvdXApIHsKLSAgICAgIG9ic2VydmVy
ID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIEVtYmVyLnJ1bi5vbmNlKHZpZXcsICdyZXJlbmRlcicp
OwotICAgICAgfTsKLQotICAgICAgb3V0cHV0ID0gc2FuaXRpemVkSGFuZGxlYmFyc0dldChjdXJy
ZW50Q29udGV4dCwgcHJvcGVydHksIG9wdGlvbnMpOwotCi0gICAgICBkYXRhLmJ1ZmZlci5wdXNo
KG91dHB1dCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIHZhciBiaW5kVmlldyA9IG5ldyBFbWJlci5f
U2ltcGxlSGFuZGxlYmFyc1ZpZXcoCi0gICAgICAgIHByb3BlcnR5LCBjdXJyZW50Q29udGV4dCwg
IW9wdGlvbnMuaGFzaC51bmVzY2FwZWQsIG9wdGlvbnMuZGF0YQotICAgICAgKTsKLQotICAgICAg
YmluZFZpZXcuX3BhcmVudFZpZXcgPSB2aWV3OwotICAgICAgdmlldy5hcHBlbmRDaGlsZChiaW5k
Vmlldyk7Ci0KLSAgICAgIG9ic2VydmVyID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIEVtYmVyLnJ1
bi5zY2hlZHVsZU9uY2UoJ3JlbmRlcicsIGJpbmRWaWV3LCAncmVyZW5kZXInKTsKLSAgICAgIH07
Ci0gICAgfQotCi0gICAgLy8gT2JzZXJ2ZXMgdGhlIGdpdmVuIHByb3BlcnR5IG9uIHRoZSBjb250
ZXh0IGFuZAotICAgIC8vIHRlbGxzIHRoZSBFbWJlci5fSGFuZGxlYmFyc0JvdW5kVmlldyB0byBy
ZS1yZW5kZXIuIElmIHByb3BlcnR5Ci0gICAgLy8gaXMgYW4gZW1wdHkgc3RyaW5nLCB3ZSBhcmUg
cHJpbnRpbmcgdGhlIGN1cnJlbnQgY29udGV4dAotICAgIC8vIG9iamVjdCAoe3t0aGlzfX0pIHNv
IHVwZGF0aW5nIGl0IGlzIG5vdCBvdXIgcmVzcG9uc2liaWxpdHkuCi0gICAgaWYgKG5vcm1hbGl6
ZWQucGF0aCAhPT0gJycpIHsKLSAgICAgIHZpZXcucmVnaXN0ZXJPYnNlcnZlcihub3JtYWxpemVk
LnJvb3QsIG5vcm1hbGl6ZWQucGF0aCwgb2JzZXJ2ZXIpOwotICAgIH0KLSAgfSBlbHNlIHsKLSAg
ICAvLyBUaGUgb2JqZWN0IGlzIG5vdCBvYnNlcnZhYmxlLCBzbyBqdXN0IHJlbmRlciBpdCBvdXQg
YW5kCi0gICAgLy8gYmUgZG9uZSB3aXRoIGl0LgotICAgIG91dHB1dCA9IHNhbml0aXplZEhhbmRs
ZWJhcnNHZXQoY3VycmVudENvbnRleHQsIHByb3BlcnR5LCBvcHRpb25zKTsKLQotICAgIGRhdGEu
YnVmZmVyLnB1c2gob3V0cHV0KTsKLSAgfQotfQotCi0vKioKLSAgJ190cmlhZ2VNdXN0YWNoZScg
aXMgdXNlZCBpbnRlcm5hbGx5IHNlbGVjdCBiZXR3ZWVuIGEgYmluZGluZywgaGVscGVyLCBvciBj
b21wb25lbnQgZm9yCi0gIHRoZSBnaXZlbiBjb250ZXh0LiBVbnRpbCB0aGlzIHBvaW50LCBpdCB3
b3VsZCBiZSBoYXJkIHRvIGRldGVybWluZSBpZiB0aGUKLSAgbXVzdGFjaGUgaXMgYSBwcm9wZXJ0
eSByZWZlcmVuY2Ugb3IgYSByZWd1bGFyIGhlbHBlciByZWZlcmVuY2UuIFRoaXMgdHJpYWdlCi0g
IGhlbHBlciByZXNvbHZlcyB0aGF0LgotCi0gIFRoaXMgd291bGQgbm90IGJlIHR5cGljYWxseSBp
bnZva2VkIGJ5IGRpcmVjdGx5LgotCi0gIEBwcml2YXRlCi0gIEBtZXRob2QgX3RyaWFnZU11c3Rh
Y2hlCi0gIEBmb3IgRW1iZXIuSGFuZGxlYmFycy5oZWxwZXJzCi0gIEBwYXJhbSB7U3RyaW5nfSBw
cm9wZXJ0eSBQcm9wZXJ0eS9oZWxwZXJJRCB0byB0cmlhZ2UKLSAgQHBhcmFtIHtPYmplY3R9IG9w
dGlvbnMgaGFzaCBvZiB0ZW1wbGF0ZS9yZW5kZXJpbmcgb3B0aW9ucwotICBAcmV0dXJuIHtTdHJp
bmd9IEhUTUwgc3RyaW5nCi0qLwotRW1iZXJIYW5kbGViYXJzLnJlZ2lzdGVySGVscGVyKCdfdHJp
YWdlTXVzdGFjaGUnLCBmdW5jdGlvbihwcm9wZXJ0eSwgb3B0aW9ucykgewotICBFbWJlci5hc3Nl
cnQoIllvdSBjYW5ub3QgcGFzcyBtb3JlIHRoYW4gb25lIGFyZ3VtZW50IHRvIHRoZSBfdHJpYWdl
TXVzdGFjaGUgaGVscGVyIiwgYXJndW1lbnRzLmxlbmd0aCA8PSAyKTsKLQotICBpZiAoaGVscGVy
c1twcm9wZXJ0eV0pIHsKLSAgICByZXR1cm4gaGVscGVyc1twcm9wZXJ0eV0uY2FsbCh0aGlzLCBv
cHRpb25zKTsKLSAgfQotCi0gIHZhciBoZWxwZXIgPSBFbWJlci5IYW5kbGViYXJzLnJlc29sdmVI
ZWxwZXIob3B0aW9ucy5kYXRhLnZpZXcuY29udGFpbmVyLCBwcm9wZXJ0eSk7Ci0gIGlmIChoZWxw
ZXIpIHsKLSAgICByZXR1cm4gaGVscGVyLmNhbGwodGhpcywgb3B0aW9ucyk7Ci0gIH0KLQotICBy
ZXR1cm4gaGVscGVycy5iaW5kLmNhbGwodGhpcywgcHJvcGVydHksIG9wdGlvbnMpOwotfSk7Ci0K
LUVtYmVyLkhhbmRsZWJhcnMucmVzb2x2ZUhlbHBlciA9IGZ1bmN0aW9uKGNvbnRhaW5lciwgbmFt
ZSkgewotCi0gIGlmICghY29udGFpbmVyIHx8IG5hbWUuaW5kZXhPZignLScpID09PSAtMSkgewot
ICAgIHJldHVybjsKLSAgfQotCi0gIHZhciBoZWxwZXIgPSBjb250YWluZXIubG9va3VwKCdoZWxw
ZXI6JyArIG5hbWUpOwotICBpZiAoIWhlbHBlcikgewotICAgIHZhciBjb21wb25lbnRMb29rdXAg
PSBjb250YWluZXIubG9va3VwKCdjb21wb25lbnQtbG9va3VwOm1haW4nKTsKLSAgICBFbWJlci5h
c3NlcnQoIkNvdWxkIG5vdCBmaW5kICdjb21wb25lbnQtbG9va3VwOm1haW4nIG9uIHRoZSBwcm92
aWRlZCBjb250YWluZXIsIHdoaWNoIGlzIG5lY2Vzc2FyeSBmb3IgcGVyZm9ybWluZyBjb21wb25l
bnQgbG9va3VwcyIsIGNvbXBvbmVudExvb2t1cCk7Ci0KLSAgICB2YXIgQ29tcG9uZW50ID0gY29t
cG9uZW50TG9va3VwLmxvb2t1cEZhY3RvcnkobmFtZSwgY29udGFpbmVyKTsKLSAgICBpZiAoQ29t
cG9uZW50KSB7Ci0gICAgICBoZWxwZXIgPSBFbWJlckhhbmRsZWJhcnMubWFrZVZpZXdIZWxwZXIo
Q29tcG9uZW50KTsKLSAgICAgIGNvbnRhaW5lci5yZWdpc3RlcignaGVscGVyOicgKyBuYW1lLCBo
ZWxwZXIpOwotICAgIH0KLSAgfQotICByZXR1cm4gaGVscGVyOwotfTsKLQotLyoqCi0gIGBiaW5k
YCBjYW4gYmUgdXNlZCB0byBkaXNwbGF5IGEgdmFsdWUsIHRoZW4gdXBkYXRlIHRoYXQgdmFsdWUg
aWYgaXQKLSAgY2hhbmdlcy4gRm9yIGV4YW1wbGUsIGlmIHlvdSB3YW50ZWQgdG8gcHJpbnQgdGhl
IGB0aXRsZWAgcHJvcGVydHkgb2YKLSAgYGNvbnRlbnRgOgotCi0gIGBgYGhhbmRsZWJhcnMKLSAg
e3tiaW5kICJjb250ZW50LnRpdGxlIn19Ci0gIGBgYAotCi0gIFRoaXMgd2lsbCByZXR1cm4gdGhl
IGB0aXRsZWAgcHJvcGVydHkgYXMgYSBzdHJpbmcsIHRoZW4gY3JlYXRlIGEgbmV3IG9ic2VydmVy
Ci0gIGF0IHRoZSBzcGVjaWZpZWQgcGF0aC4gSWYgaXQgY2hhbmdlcywgaXQgd2lsbCB1cGRhdGUg
dGhlIHZhbHVlIGluIERPTS4gTm90ZQotICB0aGF0IGlmIHlvdSBuZWVkIHRvIHN1cHBvcnQgSUU3
IGFuZCBJRTggeW91IG11c3QgbW9kaWZ5IHRoZSBtb2RlbCBvYmplY3RzCi0gIHByb3BlcnRpZXMg
dXNpbmcgYEVtYmVyLmdldCgpYCBhbmQgYEVtYmVyLnNldCgpYCBmb3IgdGhpcyB0byB3b3JrIGFz
IGl0Ci0gIHJlbGllcyBvbiBFbWJlcidzIEtWTyBzeXN0ZW0uIEZvciBhbGwgb3RoZXIgYnJvd3Nl
cnMgdGhpcyB3aWxsIGJlIGhhbmRsZWQgZm9yCi0gIHlvdSBhdXRvbWF0aWNhbGx5LgotCi0gIEBw
cml2YXRlCi0gIEBtZXRob2QgYmluZAotICBAZm9yIEVtYmVyLkhhbmRsZWJhcnMuaGVscGVycwot
ICBAcGFyYW0ge1N0cmluZ30gcHJvcGVydHkgUHJvcGVydHkgdG8gYmluZAotICBAcGFyYW0ge0Z1
bmN0aW9ufSBmbiBDb250ZXh0IHRvIHByb3ZpZGUgZm9yIHJlbmRlcmluZwotICBAcmV0dXJuIHtT
dHJpbmd9IEhUTUwgc3RyaW5nCi0qLwotRW1iZXJIYW5kbGViYXJzLnJlZ2lzdGVySGVscGVyKCdi
aW5kJywgZnVuY3Rpb24gYmluZEhlbHBlcihwcm9wZXJ0eSwgb3B0aW9ucykgewotICBFbWJlci5h
c3NlcnQoIllvdSBjYW5ub3QgcGFzcyBtb3JlIHRoYW4gb25lIGFyZ3VtZW50IHRvIHRoZSBiaW5k
IGhlbHBlciIsIGFyZ3VtZW50cy5sZW5ndGggPD0gMik7Ci0KLSAgdmFyIGNvbnRleHQgPSAob3B0
aW9ucy5jb250ZXh0cyAmJiBvcHRpb25zLmNvbnRleHRzLmxlbmd0aCkgPyBvcHRpb25zLmNvbnRl
eHRzWzBdIDogdGhpczsKLQotICBpZiAoIW9wdGlvbnMuZm4pIHsKLSAgICByZXR1cm4gc2ltcGxl
QmluZChjb250ZXh0LCBwcm9wZXJ0eSwgb3B0aW9ucyk7Ci0gIH0KLQotICByZXR1cm4gYmluZC5j
YWxsKGNvbnRleHQsIHByb3BlcnR5LCBvcHRpb25zLCBmYWxzZSwgZXhpc3RzKTsKLX0pOwotCi0v
KioKLSAgVXNlIHRoZSBgYm91bmRJZmAgaGVscGVyIHRvIGNyZWF0ZSBhIGNvbmRpdGlvbmFsIHRo
YXQgcmUtZXZhbHVhdGVzCi0gIHdoZW5ldmVyIHRoZSB0cnV0aGluZXNzIG9mIHRoZSBib3VuZCB2
YWx1ZSBjaGFuZ2VzLgotCi0gIGBgYGhhbmRsZWJhcnMKLSAge3sjYm91bmRJZiAiY29udGVudC5z
aG91bGREaXNwbGF5VGl0bGUifX0KLSAgICB7e2NvbnRlbnQudGl0bGV9fQotICB7ey9ib3VuZElm
fX0KLSAgYGBgCi0KLSAgQHByaXZhdGUKLSAgQG1ldGhvZCBib3VuZElmCi0gIEBmb3IgRW1iZXIu
SGFuZGxlYmFycy5oZWxwZXJzCi0gIEBwYXJhbSB7U3RyaW5nfSBwcm9wZXJ0eSBQcm9wZXJ0eSB0
byBiaW5kCi0gIEBwYXJhbSB7RnVuY3Rpb259IGZuIENvbnRleHQgdG8gcHJvdmlkZSBmb3IgcmVu
ZGVyaW5nCi0gIEByZXR1cm4ge1N0cmluZ30gSFRNTCBzdHJpbmcKLSovCi1FbWJlckhhbmRsZWJh
cnMucmVnaXN0ZXJIZWxwZXIoJ2JvdW5kSWYnLCBmdW5jdGlvbiBib3VuZElmSGVscGVyKHByb3Bl
cnR5LCBmbikgewotICB2YXIgY29udGV4dCA9IChmbi5jb250ZXh0cyAmJiBmbi5jb250ZXh0cy5s
ZW5ndGgpID8gZm4uY29udGV4dHNbMF0gOiB0aGlzOwotICB2YXIgZnVuYyA9IGZ1bmN0aW9uKHJl
c3VsdCkgewotICAgIHZhciB0cnV0aHkgPSByZXN1bHQgJiYgZ2V0KHJlc3VsdCwgJ2lzVHJ1dGh5
Jyk7Ci0gICAgaWYgKHR5cGVvZiB0cnV0aHkgPT09ICdib29sZWFuJykgeyByZXR1cm4gdHJ1dGh5
OyB9Ci0KLSAgICBpZiAoRW1iZXIuaXNBcnJheShyZXN1bHQpKSB7Ci0gICAgICByZXR1cm4gZ2V0
KHJlc3VsdCwgJ2xlbmd0aCcpICE9PSAwOwotICAgIH0gZWxzZSB7Ci0gICAgICByZXR1cm4gISFy
ZXN1bHQ7Ci0gICAgfQotICB9OwotCi0gIHJldHVybiBiaW5kLmNhbGwoY29udGV4dCwgcHJvcGVy
dHksIGZuLCB0cnVlLCBmdW5jLCBmdW5jLCBbJ2lzVHJ1dGh5JywgJ2xlbmd0aCddKTsKLX0pOwot
Ci0vKioKLSAgVXNlIHRoZSBge3t3aXRofX1gIGhlbHBlciB3aGVuIHlvdSB3YW50IHRvIHNjb3Bl
IGNvbnRleHQuIFRha2UgdGhlIGZvbGxvd2luZyBjb2RlIGFzIGFuIGV4YW1wbGU6Ci0KLSAgYGBg
aGFuZGxlYmFycwotICA8aDU+e3t1c2VyLm5hbWV9fTwvaDU+Ci0KLSAgPGRpdiBjbGFzcz0icm9s
ZSI+Ci0gICAgPGg2Pnt7dXNlci5yb2xlLmxhYmVsfX08L2g2PgotICAgIDxzcGFuIGNsYXNzPSJy
b2xlLWlkIj57e3VzZXIucm9sZS5pZH19PC9zcGFuPgotCi0gICAgPHAgY2xhc3M9InJvbGUtZGVz
YyI+e3t1c2VyLnJvbGUuZGVzY3JpcHRpb259fTwvcD4KLSAgPC9kaXY+Ci0gIGBgYAotCi0gIGB7
e3dpdGh9fWAgY2FuIGJlIG91ciBiZXN0IGZyaWVuZCBpbiB0aGVzZSBjYXNlcywgCi0gIGluc3Rl
YWQgb2Ygd3JpdGluZyBgdXNlci5yb2xlLipgIG92ZXIgYW5kIG92ZXIsIHdlIHVzZSBge3sjd2l0
aCB1c2VyLnJvbGV9fWAuCi0gIE5vdyB0aGUgY29udGV4dCB3aXRoaW4gdGhlIGB7eyN3aXRofX0g
Li4ge3svd2l0aH19YCBibG9jayBpcyBgdXNlci5yb2xlYCBzbyB5b3UgY2FuIGRvIHRoZSBmb2xs
b3dpbmc6Ci0KLSAgYGBgaGFuZGxlYmFycwotICA8aDU+e3t1c2VyLm5hbWV9fTwvaDU+Ci0KLSAg
PGRpdiBjbGFzcz0icm9sZSI+Ci0gICAge3sjd2l0aCB1c2VyLnJvbGV9fQotICAgICAgPGg2Pnt7
bGFiZWx9fTwvaDY+Ci0gICAgICA8c3BhbiBjbGFzcz0icm9sZS1pZCI+e3tpZH19PC9zcGFuPgot
Ci0gICAgICA8cCBjbGFzcz0icm9sZS1kZXNjIj57e2Rlc2NyaXB0aW9ufX08L3A+Ci0gICAge3sv
d2l0aH19Ci0gIDwvZGl2PgotICBgYGAKLQotICAjIyMgYGFzYCBvcGVyYXRvcgotCi0gIFRoaXMg
b3BlcmF0b3IgYWxpYXNlcyB0aGUgc2NvcGUgdG8gYSBuZXcgbmFtZS4gSXQncyBoZWxwZnVsIGZv
ciBzZW1hbnRpYyBjbGFyaXR5IGFuZCB0byByZXRhaW4gCi0gIGRlZmF1bHQgc2NvcGUgb3IgdG8g
cmVmZXJlbmNlIGZyb20gYW5vdGhlciBge3t3aXRofX1gIGJsb2NrLgotCi0gIGBgYGhhbmRsZWJh
cnMKLSAgLy8gcG9zdHMgbWlnaHQgbm90IGJlCi0gIHt7I3dpdGggdXNlci5wb3N0cyBhcyBibG9n
UG9zdHN9fQotICAgIDxkaXYgY2xhc3M9Im5vdGljZSI+Ci0gICAgICBUaGVyZSBhcmUge3tibG9n
UG9zdHMubGVuZ3RofX0gYmxvZyBwb3N0cyB3cml0dGVuIGJ5IHt7dXNlci5uYW1lfX0uCi0gICAg
PC9kaXY+Ci0KLSAgICB7eyNlYWNoIHBvc3QgaW4gYmxvZ1Bvc3RzfX0KLSAgICAgIDxsaT57e3Bv
c3QudGl0bGV9fTwvbGk+Ci0gICAge3svZWFjaH19Ci0gIHt7L3dpdGh9fQotICBgYGAKLQotICBX
aXRob3V0IHRoZSBgYXNgIG9wZXJhdG9yLCBpdCB3b3VsZCBiZSBpbXBvc3NpYmxlIHRvIHJlZmVy
ZW5jZSBgdXNlci5uYW1lYCBpbiB0aGUgZXhhbXBsZSBhYm92ZS4KLQotICBAbWV0aG9kIHdpdGgK
LSAgQGZvciBFbWJlci5IYW5kbGViYXJzLmhlbHBlcnMKLSAgQHBhcmFtIHtGdW5jdGlvbn0gY29u
dGV4dAotICBAcGFyYW0ge0hhc2h9IG9wdGlvbnMKLSAgQHJldHVybiB7U3RyaW5nfSBIVE1MIHN0
cmluZwotKi8KLUVtYmVySGFuZGxlYmFycy5yZWdpc3RlckhlbHBlcignd2l0aCcsIGZ1bmN0aW9u
IHdpdGhIZWxwZXIoY29udGV4dCwgb3B0aW9ucykgewotICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9
PT0gNCkgewotICAgIHZhciBrZXl3b3JkTmFtZSwgcGF0aCwgcm9vdFBhdGgsIG5vcm1hbGl6ZWQs
IGNvbnRleHRQYXRoOwotCi0gICAgRW1iZXIuYXNzZXJ0KCJJZiB5b3UgcGFzcyBtb3JlIHRoYW4g
b25lIGFyZ3VtZW50IHRvIHRoZSB3aXRoIGhlbHBlciwgaXQgbXVzdCBiZSBpbiB0aGUgZm9ybSAj
d2l0aCBmb28gYXMgYmFyIiwgYXJndW1lbnRzWzFdID09PSAiYXMiKTsKLSAgICBvcHRpb25zID0g
YXJndW1lbnRzWzNdOwotICAgIGtleXdvcmROYW1lID0gYXJndW1lbnRzWzJdOwotICAgIHBhdGgg
PSBhcmd1bWVudHNbMF07Ci0KLSAgICBFbWJlci5hc3NlcnQoIllvdSBtdXN0IHBhc3MgYSBibG9j
ayB0byB0aGUgd2l0aCBoZWxwZXIiLCBvcHRpb25zLmZuICYmIG9wdGlvbnMuZm4gIT09IEhhbmRs
ZWJhcnMuVk0ubm9vcCk7Ci0KLSAgICB2YXIgbG9jYWxpemVkT3B0aW9ucyA9IG9fY3JlYXRlKG9w
dGlvbnMpOwotICAgIGxvY2FsaXplZE9wdGlvbnMuZGF0YSA9IG9fY3JlYXRlKG9wdGlvbnMuZGF0
YSk7Ci0gICAgbG9jYWxpemVkT3B0aW9ucy5kYXRhLmtleXdvcmRzID0gb19jcmVhdGUob3B0aW9u
cy5kYXRhLmtleXdvcmRzIHx8IHt9KTsKLQotICAgIGlmIChFbWJlci5pc0dsb2JhbFBhdGgocGF0
aCkpIHsKLSAgICAgIGNvbnRleHRQYXRoID0gcGF0aDsKLSAgICB9IGVsc2UgewotICAgICAgbm9y
bWFsaXplZCA9IG5vcm1hbGl6ZVBhdGgodGhpcywgcGF0aCwgb3B0aW9ucy5kYXRhKTsKLSAgICAg
IHBhdGggPSBub3JtYWxpemVkLnBhdGg7Ci0gICAgICByb290UGF0aCA9IG5vcm1hbGl6ZWQucm9v
dDsKLQotICAgICAgLy8gVGhpcyBpcyBhIHdvcmthcm91bmQgZm9yIHRoZSBmYWN0IHRoYXQgeW91
IGNhbm5vdCBiaW5kIHNlcGFyYXRlIG9iamVjdHMKLSAgICAgIC8vIHRvZ2V0aGVyLiBXaGVuIHdl
IGltcGxlbWVudCB0aGF0IGZ1bmN0aW9uYWxpdHksIHdlIHNob3VsZCB1c2UgaXQgaGVyZS4KLSAg
ICAgIHZhciBjb250ZXh0S2V5ID0gRW1iZXIuJC5leHBhbmRvICsgRW1iZXIuZ3VpZEZvcihyb290
UGF0aCk7Ci0gICAgICBsb2NhbGl6ZWRPcHRpb25zLmRhdGEua2V5d29yZHNbY29udGV4dEtleV0g
PSByb290UGF0aDsKLSAgICAgIC8vIGlmIHRoZSBwYXRoIGlzICcnICgidGhpcyIpLCBqdXN0IGJp
bmQgZGlyZWN0bHkgdG8gdGhlIGN1cnJlbnQgY29udGV4dAotICAgICAgY29udGV4dFBhdGggPSBw
YXRoID8gY29udGV4dEtleSArICcuJyArIHBhdGggOiBjb250ZXh0S2V5OwotICAgIH0KLQotICAg
IEVtYmVyLmJpbmQobG9jYWxpemVkT3B0aW9ucy5kYXRhLmtleXdvcmRzLCBrZXl3b3JkTmFtZSwg
Y29udGV4dFBhdGgpOwotCi0gICAgcmV0dXJuIGJpbmQuY2FsbCh0aGlzLCBwYXRoLCBsb2NhbGl6
ZWRPcHRpb25zLCB0cnVlLCBleGlzdHMpOwotICB9IGVsc2UgewotICAgIEVtYmVyLmFzc2VydCgi
WW91IG11c3QgcGFzcyBleGFjdGx5IG9uZSBhcmd1bWVudCB0byB0aGUgd2l0aCBoZWxwZXIiLCBh
cmd1bWVudHMubGVuZ3RoID09PSAyKTsKLSAgICBFbWJlci5hc3NlcnQoIllvdSBtdXN0IHBhc3Mg
YSBibG9jayB0byB0aGUgd2l0aCBoZWxwZXIiLCBvcHRpb25zLmZuICYmIG9wdGlvbnMuZm4gIT09
IEhhbmRsZWJhcnMuVk0ubm9vcCk7Ci0gICAgcmV0dXJuIGhlbHBlcnMuYmluZC5jYWxsKG9wdGlv
bnMuY29udGV4dHNbMF0sIGNvbnRleHQsIG9wdGlvbnMpOwotICB9Ci19KTsKLQotCi0vKioKLSAg
U2VlIFtib3VuZElmXSgvYXBpL2NsYXNzZXMvRW1iZXIuSGFuZGxlYmFycy5oZWxwZXJzLmh0bWwj
bWV0aG9kX2JvdW5kSWYpCi0KLSAgQG1ldGhvZCBpZgotICBAZm9yIEVtYmVyLkhhbmRsZWJhcnMu
aGVscGVycwotICBAcGFyYW0ge0Z1bmN0aW9ufSBjb250ZXh0Ci0gIEBwYXJhbSB7SGFzaH0gb3B0
aW9ucwotICBAcmV0dXJuIHtTdHJpbmd9IEhUTUwgc3RyaW5nCi0qLwotRW1iZXJIYW5kbGViYXJz
LnJlZ2lzdGVySGVscGVyKCdpZicsIGZ1bmN0aW9uIGlmSGVscGVyKGNvbnRleHQsIG9wdGlvbnMp
IHsKLSAgRW1iZXIuYXNzZXJ0KCJZb3UgbXVzdCBwYXNzIGV4YWN0bHkgb25lIGFyZ3VtZW50IHRv
IHRoZSBpZiBoZWxwZXIiLCBhcmd1bWVudHMubGVuZ3RoID09PSAyKTsKLSAgRW1iZXIuYXNzZXJ0
KCJZb3UgbXVzdCBwYXNzIGEgYmxvY2sgdG8gdGhlIGlmIGhlbHBlciIsIG9wdGlvbnMuZm4gJiYg
b3B0aW9ucy5mbiAhPT0gSGFuZGxlYmFycy5WTS5ub29wKTsKLQotICByZXR1cm4gaGVscGVycy5i
b3VuZElmLmNhbGwob3B0aW9ucy5jb250ZXh0c1swXSwgY29udGV4dCwgb3B0aW9ucyk7Ci19KTsK
LQotLyoqCi0gIEBtZXRob2QgdW5sZXNzCi0gIEBmb3IgRW1iZXIuSGFuZGxlYmFycy5oZWxwZXJz
Ci0gIEBwYXJhbSB7RnVuY3Rpb259IGNvbnRleHQKLSAgQHBhcmFtIHtIYXNofSBvcHRpb25zCi0g
IEByZXR1cm4ge1N0cmluZ30gSFRNTCBzdHJpbmcKLSovCi1FbWJlckhhbmRsZWJhcnMucmVnaXN0
ZXJIZWxwZXIoJ3VubGVzcycsIGZ1bmN0aW9uIHVubGVzc0hlbHBlcihjb250ZXh0LCBvcHRpb25z
KSB7Ci0gIEVtYmVyLmFzc2VydCgiWW91IG11c3QgcGFzcyBleGFjdGx5IG9uZSBhcmd1bWVudCB0
byB0aGUgdW5sZXNzIGhlbHBlciIsIGFyZ3VtZW50cy5sZW5ndGggPT09IDIpOwotICBFbWJlci5h
c3NlcnQoIllvdSBtdXN0IHBhc3MgYSBibG9jayB0byB0aGUgdW5sZXNzIGhlbHBlciIsIG9wdGlv
bnMuZm4gJiYgb3B0aW9ucy5mbiAhPT0gSGFuZGxlYmFycy5WTS5ub29wKTsKLQotICB2YXIgZm4g
PSBvcHRpb25zLmZuLCBpbnZlcnNlID0gb3B0aW9ucy5pbnZlcnNlOwotCi0gIG9wdGlvbnMuZm4g
PSBpbnZlcnNlOwotICBvcHRpb25zLmludmVyc2UgPSBmbjsKLQotICByZXR1cm4gaGVscGVycy5i
b3VuZElmLmNhbGwob3B0aW9ucy5jb250ZXh0c1swXSwgY29udGV4dCwgb3B0aW9ucyk7Ci19KTsK
LQotLyoqCi0gIGBiaW5kLWF0dHJgIGFsbG93cyB5b3UgdG8gY3JlYXRlIGEgYmluZGluZyBiZXR3
ZWVuIERPTSBlbGVtZW50IGF0dHJpYnV0ZXMgYW5kCi0gIEVtYmVyIG9iamVjdHMuIEZvciBleGFt
cGxlOgotCi0gIGBgYGhhbmRsZWJhcnMKLSAgPGltZyB7e2JpbmQtYXR0ciBzcmM9ImltYWdlVXJs
IiBhbHQ9ImltYWdlVGl0bGUifX0+Ci0gIGBgYAotCi0gIFRoZSBhYm92ZSBoYW5kbGViYXJzIHRl
bXBsYXRlIHdpbGwgZmlsbCB0aGUgYDxpbWc+YCdzIGBzcmNgIGF0dHJpYnV0ZSB3aWxsCi0gIHRo
ZSB2YWx1ZSBvZiB0aGUgcHJvcGVydHkgcmVmZXJlbmNlZCB3aXRoIGAiaW1hZ2VVcmwiYCBhbmQg
aXRzIGBhbHRgCi0gIGF0dHJpYnV0ZSB3aXRoIHRoZSB2YWx1ZSBvZiB0aGUgcHJvcGVydHkgcmVm
ZXJlbmNlZCB3aXRoIGAiaW1hZ2VUaXRsZSJgLgotCi0gIElmIHRoZSByZW5kZXJpbmcgY29udGV4
dCBvZiB0aGlzIHRlbXBsYXRlIGlzIHRoZSBmb2xsb3dpbmcgb2JqZWN0OgotCi0gIGBgYGphdmFz
Y3JpcHQKLSAgewotICAgIGltYWdlVXJsOiAnaHR0cDovL2xvbGNhdHMuaW5mby9oYXotYS1mdW5u
eScsCi0gICAgaW1hZ2VUaXRsZTogJ0EgaHVtb3JvdXMgaW1hZ2Ugb2YgYSBjYXQnCi0gIH0KLSAg
YGBgCi0KLSAgVGhlIHJlc3VsdGluZyBIVE1MIG91dHB1dCB3aWxsIGJlOgotCi0gIGBgYGh0bWwK
LSAgPGltZyBzcmM9Imh0dHA6Ly9sb2xjYXRzLmluZm8vaGF6LWEtZnVubnkiIGFsdD0iQSBodW1v
cm91cyBpbWFnZSBvZiBhIGNhdCI+Ci0gIGBgYAotCi0gIGBiaW5kLWF0dHJgIGNhbm5vdCByZWRl
Y2xhcmUgZXhpc3RpbmcgRE9NIGVsZW1lbnQgYXR0cmlidXRlcy4gVGhlIHVzZSBvZiBgc3JjYAot
ICBpbiB0aGUgZm9sbG93aW5nIGBiaW5kLWF0dHJgIGV4YW1wbGUgd2lsbCBiZSBpZ25vcmVkIGFu
ZCB0aGUgaGFyZCBjb2RlZCB2YWx1ZQotICBvZiBgc3JjPSIvZmFpbHdoYWxlLmdpZiJgIHdpbGwg
dGFrZSBwcmVjZWRlbmNlOgotCi0gIGBgYGhhbmRsZWJhcnMKLSAgPGltZyBzcmM9Ii9mYWlsd2hh
bGUuZ2lmIiB7e2JpbmQtYXR0ciBzcmM9ImltYWdlVXJsIiBhbHQ9ImltYWdlVGl0bGUifX0+Ci0g
IGBgYAotCi0gICMjIyBgYmluZC1hdHRyYCBhbmQgdGhlIGBjbGFzc2AgYXR0cmlidXRlCi0KLSAg
YGJpbmQtYXR0cmAgc3VwcG9ydHMgYSBzcGVjaWFsIHN5bnRheCBmb3IgaGFuZGxpbmcgYSBudW1i
ZXIgb2YgY2FzZXMgdW5pcXVlCi0gIHRvIHRoZSBgY2xhc3NgIERPTSBlbGVtZW50IGF0dHJpYnV0
ZS4gVGhlIGBjbGFzc2AgYXR0cmlidXRlIGNvbWJpbmVzCi0gIG11bHRpcGxlIGRpc2NyZXRlIHZh
bHVlcyBpbnRvIGEgc2luZ2xlIGF0dHJpYnV0ZSBhcyBhIHNwYWNlLWRlbGltaXRlZAotICBsaXN0
IG9mIHN0cmluZ3MuIEVhY2ggc3RyaW5nIGNhbiBiZToKLQotICAqIGEgc3RyaW5nIHJldHVybiB2
YWx1ZSBvZiBhbiBvYmplY3QncyBwcm9wZXJ0eS4KLSAgKiBhIGJvb2xlYW4gcmV0dXJuIHZhbHVl
IG9mIGFuIG9iamVjdCdzIHByb3BlcnR5Ci0gICogYSBoYXJkLWNvZGVkIHZhbHVlCi0KLSAgQSBz
dHJpbmcgcmV0dXJuIHZhbHVlIHdvcmtzIGlkZW50aWNhbGx5IHRvIG90aGVyIHVzZXMgb2YgYGJp
bmQtYXR0cmAuIFRoZQotICByZXR1cm4gdmFsdWUgb2YgdGhlIHByb3BlcnR5IHdpbGwgYmVjb21l
IHRoZSB2YWx1ZSBvZiB0aGUgYXR0cmlidXRlLiBGb3IKLSAgZXhhbXBsZSwgdGhlIGZvbGxvd2lu
ZyB2aWV3IGFuZCB0ZW1wbGF0ZToKLQotICBgYGBqYXZhc2NyaXB0Ci0gICAgQVZpZXcgPSBFbWJl
ci5WaWV3LmV4dGVuZCh7Ci0gICAgICBzb21lUHJvcGVydHk6IGZ1bmN0aW9uKCkgewotICAgICAg
ICByZXR1cm4gImFWYWx1ZSI7Ci0gICAgICB9LnByb3BlcnR5KCkKLSAgICB9KQotICBgYGAKLQot
ICBgYGBoYW5kbGViYXJzCi0gIDxpbWcge3tiaW5kLWF0dHIgY2xhc3M9InZpZXcuc29tZVByb3Bl
cnR5fX0+Ci0gIGBgYAotCi0gIFJlc3VsdCBpbiB0aGUgZm9sbG93aW5nIHJlbmRlcmVkIG91dHB1
dDoKLQotICBgYGBodG1sCi0gIDxpbWcgY2xhc3M9ImFWYWx1ZSI+Ci0gIGBgYAotCi0gIEEgYm9v
bGVhbiByZXR1cm4gdmFsdWUgd2lsbCBpbnNlcnQgYSBzcGVjaWZpZWQgY2xhc3MgbmFtZSBpZiB0
aGUgcHJvcGVydHkKLSAgcmV0dXJucyBgdHJ1ZWAgYW5kIHJlbW92ZSB0aGUgY2xhc3MgbmFtZSBp
ZiB0aGUgcHJvcGVydHkgcmV0dXJucyBgZmFsc2VgLgotCi0gIEEgY2xhc3MgbmFtZSBpcyBwcm92
aWRlZCB2aWEgdGhlIHN5bnRheAotICBgc29tZVByb3BlcnR5TmFtZTpjbGFzcy1uYW1lLWlmLXRy
dWVgLgotCi0gIGBgYGphdmFzY3JpcHQKLSAgQVZpZXcgPSBFbWJlci5WaWV3LmV4dGVuZCh7Ci0g
ICAgc29tZUJvb2w6IHRydWUKLSAgfSkKLSAgYGBgCi0KLSAgYGBgaGFuZGxlYmFycwotICA8aW1n
IHt7YmluZC1hdHRyIGNsYXNzPSJ2aWV3LnNvbWVCb29sOmNsYXNzLW5hbWUtaWYtdHJ1ZSJ9fT4K
LSAgYGBgCi0KLSAgUmVzdWx0IGluIHRoZSBmb2xsb3dpbmcgcmVuZGVyZWQgb3V0cHV0OgotCi0g
IGBgYGh0bWwKLSAgPGltZyBjbGFzcz0iY2xhc3MtbmFtZS1pZi10cnVlIj4KLSAgYGBgCi0KLSAg
QW4gYWRkaXRpb25hbCBzZWN0aW9uIG9mIHRoZSBiaW5kaW5nIGNhbiBiZSBwcm92aWRlZCBpZiB5
b3Ugd2FudCB0bwotICByZXBsYWNlIHRoZSBleGlzdGluZyBjbGFzcyBpbnN0ZWFkIG9mIHJlbW92
aW5nIGl0IHdoZW4gdGhlIGJvb2xlYW4KLSAgdmFsdWUgY2hhbmdlczoKLQotICBgYGBoYW5kbGVi
YXJzCi0gIDxpbWcge3tiaW5kLWF0dHIgY2xhc3M9InZpZXcuc29tZUJvb2w6Y2xhc3MtbmFtZS1p
Zi10cnVlOmNsYXNzLW5hbWUtaWYtZmFsc2UifX0+Ci0gIGBgYAotCi0gIEEgaGFyZC1jb2RlZCB2
YWx1ZSBjYW4gYmUgdXNlZCBieSBwcmVwZW5kaW5nIGA6YCB0byB0aGUgZGVzaXJlZAotICBjbGFz
cyBuYW1lOiBgOmNsYXNzLW5hbWUtdG8tYWx3YXlzLWFwcGx5YC4KLQotICBgYGBoYW5kbGViYXJz
Ci0gIDxpbWcge3tiaW5kLWF0dHIgY2xhc3M9IjpjbGFzcy1uYW1lLXRvLWFsd2F5cy1hcHBseSJ9
fT4KLSAgYGBgCi0KLSAgUmVzdWx0cyBpbiB0aGUgZm9sbG93aW5nIHJlbmRlcmVkIG91dHB1dDoK
LQotICBgYGBodG1sCi0gIDxpbWcgY2xhc3M9ImNsYXNzLW5hbWUtdG8tYWx3YXlzLWFwcGx5Ij4K
LSAgYGBgCi0KLSAgQWxsIHRocmVlIHN0cmF0ZWdpZXMgLSBzdHJpbmcgcmV0dXJuIHZhbHVlLCBi
b29sZWFuIHJldHVybiB2YWx1ZSwgYW5kCi0gIGhhcmQtY29kZWQgdmFsdWUg4oCTIGNhbiBiZSBj
b21iaW5lZCBpbiBhIHNpbmdsZSBkZWNsYXJhdGlvbjoKLQotICBgYGBoYW5kbGViYXJzCi0gIDxp
bWcge3tiaW5kLWF0dHIgY2xhc3M9IjpjbGFzcy1uYW1lLXRvLWFsd2F5cy1hcHBseSB2aWV3LnNv
bWVCb29sOmNsYXNzLW5hbWUtaWYtdHJ1ZSB2aWV3LnNvbWVQcm9wZXJ0eSJ9fT4KLSAgYGBgCi0K
LSAgQG1ldGhvZCBiaW5kLWF0dHIKLSAgQGZvciBFbWJlci5IYW5kbGViYXJzLmhlbHBlcnMKLSAg
QHBhcmFtIHtIYXNofSBvcHRpb25zCi0gIEByZXR1cm4ge1N0cmluZ30gSFRNTCBzdHJpbmcKLSov
Ci1FbWJlckhhbmRsZWJhcnMucmVnaXN0ZXJIZWxwZXIoJ2JpbmQtYXR0cicsIGZ1bmN0aW9uIGJp
bmRBdHRySGVscGVyKG9wdGlvbnMpIHsKLQotICB2YXIgYXR0cnMgPSBvcHRpb25zLmhhc2g7Ci0K
LSAgRW1iZXIuYXNzZXJ0KCJZb3UgbXVzdCBzcGVjaWZ5IGF0IGxlYXN0IG9uZSBoYXNoIGFyZ3Vt
ZW50IHRvIGJpbmQtYXR0ciIsICEhRW1iZXIua2V5cyhhdHRycykubGVuZ3RoKTsKLQotICB2YXIg
dmlldyA9IG9wdGlvbnMuZGF0YS52aWV3OwotICB2YXIgcmV0ID0gW107Ci0gIHZhciBjdHggPSB0
aGlzOwotCi0gIC8vIEdlbmVyYXRlIGEgdW5pcXVlIGlkIGZvciB0aGlzIGVsZW1lbnQuIFRoaXMg
d2lsbCBiZSBhZGRlZCBhcyBhCi0gIC8vIGRhdGEgYXR0cmlidXRlIHRvIHRoZSBlbGVtZW50IHNv
IGl0IGNhbiBiZSBsb29rZWQgdXAgd2hlbgotICAvLyB0aGUgYm91bmQgcHJvcGVydHkgY2hhbmdl
cy4KLSAgdmFyIGRhdGFJZCA9ICsrRW1iZXIudXVpZDsKLQotICAvLyBIYW5kbGUgY2xhc3NlcyBk
aWZmZXJlbnRseSwgYXMgd2UgY2FuIGJpbmQgbXVsdGlwbGUgY2xhc3NlcwotICB2YXIgY2xhc3NC
aW5kaW5ncyA9IGF0dHJzWydjbGFzcyddOwotICBpZiAoY2xhc3NCaW5kaW5ncyAhPSBudWxsKSB7
Ci0gICAgdmFyIGNsYXNzUmVzdWx0cyA9IEVtYmVySGFuZGxlYmFycy5iaW5kQ2xhc3Nlcyh0aGlz
LCBjbGFzc0JpbmRpbmdzLCB2aWV3LCBkYXRhSWQsIG9wdGlvbnMpOwotCi0gICAgcmV0LnB1c2go
J2NsYXNzPSInICsgSGFuZGxlYmFycy5VdGlscy5lc2NhcGVFeHByZXNzaW9uKGNsYXNzUmVzdWx0
cy5qb2luKCcgJykpICsgJyInKTsKLSAgICBkZWxldGUgYXR0cnNbJ2NsYXNzJ107Ci0gIH0KLQot
ICB2YXIgYXR0cktleXMgPSBFbWJlci5rZXlzKGF0dHJzKTsKLQotICAvLyBGb3IgZWFjaCBhdHRy
aWJ1dGUgcGFzc2VkLCBjcmVhdGUgYW4gb2JzZXJ2ZXIgYW5kIGVtaXQgdGhlCi0gIC8vIGN1cnJl
bnQgdmFsdWUgb2YgdGhlIHByb3BlcnR5IGFzIGFuIGF0dHJpYnV0ZS4KLSAgZm9yRWFjaC5jYWxs
KGF0dHJLZXlzLCBmdW5jdGlvbihhdHRyKSB7Ci0gICAgdmFyIHBhdGggPSBhdHRyc1thdHRyXSwK
LSAgICAgICAgbm9ybWFsaXplZDsKLQotICAgIEVtYmVyLmFzc2VydChmbXQoIllvdSBtdXN0IHBy
b3ZpZGUgYW4gZXhwcmVzc2lvbiBhcyB0aGUgdmFsdWUgb2YgYm91bmQgYXR0cmlidXRlLiBZb3Ug
c3BlY2lmaWVkOiAlQD0lQCIsIFthdHRyLCBwYXRoXSksIHR5cGVvZiBwYXRoID09PSAnc3RyaW5n
Jyk7Ci0KLSAgICBub3JtYWxpemVkID0gbm9ybWFsaXplUGF0aChjdHgsIHBhdGgsIG9wdGlvbnMu
ZGF0YSk7Ci0KLSAgICB2YXIgdmFsdWUgPSAocGF0aCA9PT0gJ3RoaXMnKSA/IG5vcm1hbGl6ZWQu
cm9vdCA6IGhhbmRsZWJhcnNHZXQoY3R4LCBwYXRoLCBvcHRpb25zKSwKLSAgICAgICAgdHlwZSA9
IEVtYmVyLnR5cGVPZih2YWx1ZSk7Ci0KLSAgICBFbWJlci5hc3NlcnQoZm10KCJBdHRyaWJ1dGVz
IG11c3QgYmUgbnVtYmVycywgc3RyaW5ncyBvciBib29sZWFucywgbm90ICVAIiwgW3ZhbHVlXSks
IHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdHlwZSA9PT0gJ251bWJl
cicgfHwgdHlwZSA9PT0gJ3N0cmluZycgfHwgdHlwZSA9PT0gJ2Jvb2xlYW4nKTsKLQotICAgIHZh
ciBvYnNlcnZlciwgaW52b2tlcjsKLQotICAgIG9ic2VydmVyID0gZnVuY3Rpb24gb2JzZXJ2ZXIo
KSB7Ci0gICAgICB2YXIgcmVzdWx0ID0gaGFuZGxlYmFyc0dldChjdHgsIHBhdGgsIG9wdGlvbnMp
OwotCi0gICAgICBFbWJlci5hc3NlcnQoZm10KCJBdHRyaWJ1dGVzIG11c3QgYmUgbnVtYmVycywg
c3RyaW5ncyBvciBib29sZWFucywgbm90ICVAIiwgW3Jlc3VsdF0pLAotICAgICAgICAgICAgICAg
ICAgIHJlc3VsdCA9PT0gbnVsbCB8fCByZXN1bHQgPT09IHVuZGVmaW5lZCB8fCB0eXBlb2YgcmVz
dWx0ID09PSAnbnVtYmVyJyB8fAotICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHJlc3VsdCA9
PT0gJ3N0cmluZycgfHwgdHlwZW9mIHJlc3VsdCA9PT0gJ2Jvb2xlYW4nKTsKLQotICAgICAgdmFy
IGVsZW0gPSB2aWV3LiQoIltkYXRhLWJpbmRhdHRyLSIgKyBkYXRhSWQgKyAiPSciICsgZGF0YUlk
ICsgIiddIik7Ci0KLSAgICAgIC8vIElmIHdlIGFyZW4ndCBhYmxlIHRvIGZpbmQgdGhlIGVsZW1l
bnQsIGl0IG1lYW5zIHRoZSBlbGVtZW50Ci0gICAgICAvLyB0byB3aGljaCB3ZSB3ZXJlIGJvdW5k
IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgdmlldy4KLSAgICAgIC8vIEluIHRoYXQgY2FzZSwg
d2UgY2FuIGFzc3VtZSB0aGUgdGVtcGxhdGUgaGFzIGJlZW4gcmUtcmVuZGVyZWQKLSAgICAgIC8v
IGFuZCB3ZSBuZWVkIHRvIGNsZWFuIHVwIHRoZSBvYnNlcnZlci4KLSAgICAgIGlmICghZWxlbSB8
fCBlbGVtLmxlbmd0aCA9PT0gMCkgewotICAgICAgICBFbWJlci5yZW1vdmVPYnNlcnZlcihub3Jt
YWxpemVkLnJvb3QsIG5vcm1hbGl6ZWQucGF0aCwgaW52b2tlcik7Ci0gICAgICAgIHJldHVybjsK
LSAgICAgIH0KLQotICAgICAgRW1iZXIuVmlldy5hcHBseUF0dHJpYnV0ZUJpbmRpbmdzKGVsZW0s
IGF0dHIsIHJlc3VsdCk7Ci0gICAgfTsKLQotICAgIC8vIEFkZCBhbiBvYnNlcnZlciB0byB0aGUg
dmlldyBmb3Igd2hlbiB0aGUgcHJvcGVydHkgY2hhbmdlcy4KLSAgICAvLyBXaGVuIHRoZSBvYnNl
cnZlciBmaXJlcywgZmluZCB0aGUgZWxlbWVudCB1c2luZyB0aGUKLSAgICAvLyB1bmlxdWUgZGF0
YSBpZCBhbmQgdXBkYXRlIHRoZSBhdHRyaWJ1dGUgdG8gdGhlIG5ldyB2YWx1ZS4KLSAgICAvLyBO
b3RlOiBkb24ndCBhZGQgb2JzZXJ2ZXIgd2hlbiBwYXRoIGlzICd0aGlzJyBvciBwYXRoCi0gICAg
Ly8gaXMgd2hvbGUga2V5d29yZCBlLmcuIHt7I2VhY2ggeCBpbiBsaXN0fX0gLi4uIHt7YmluZC1h
dHRyIGF0dHI9IngifX0KLSAgICBpZiAocGF0aCAhPT0gJ3RoaXMnICYmICEobm9ybWFsaXplZC5p
c0tleXdvcmQgJiYgbm9ybWFsaXplZC5wYXRoID09PSAnJyApKSB7Ci0gICAgICB2aWV3LnJlZ2lz
dGVyT2JzZXJ2ZXIobm9ybWFsaXplZC5yb290LCBub3JtYWxpemVkLnBhdGgsIG9ic2VydmVyKTsK
LSAgICB9Ci0KLSAgICAvLyBpZiB0aGlzIGNoYW5nZXMsIGFsc28gY2hhbmdlIHRoZSBsb2dpYyBp
biBlbWJlci12aWV3cy9saWIvdmlld3Mvdmlldy5qcwotICAgIGlmICgodHlwZSA9PT0gJ3N0cmlu
ZycgfHwgKHR5cGUgPT09ICdudW1iZXInICYmICFpc05hTih2YWx1ZSkpKSkgewotICAgICAgcmV0
LnB1c2goYXR0ciArICc9IicgKyBIYW5kbGViYXJzLlV0aWxzLmVzY2FwZUV4cHJlc3Npb24odmFs
dWUpICsgJyInKTsKLSAgICB9IGVsc2UgaWYgKHZhbHVlICYmIHR5cGUgPT09ICdib29sZWFuJykg
ewotICAgICAgLy8gVGhlIGRldmVsb3BlciBjb250cm9scyB0aGUgYXR0ciBuYW1lLCBzbyBpdCBz
aG91bGQgYWx3YXlzIGJlIHNhZmUKLSAgICAgIHJldC5wdXNoKGF0dHIgKyAnPSInICsgYXR0ciAr
ICciJyk7Ci0gICAgfQotICB9LCB0aGlzKTsKLQotICAvLyBBZGQgdGhlIHVuaXF1ZSBpZGVudGlm
aWVyCi0gIC8vIE5PVEU6IFdlIHVzZSBhbGwgbG93ZXItY2FzZSBzaW5jZSBGaXJlZm94IGhhcyBw
cm9ibGVtcyB3aXRoIG1peGVkIGNhc2UgaW4gU1ZHCi0gIHJldC5wdXNoKCdkYXRhLWJpbmRhdHRy
LScgKyBkYXRhSWQgKyAnPSInICsgZGF0YUlkICsgJyInKTsKLSAgcmV0dXJuIG5ldyBFbWJlckhh
bmRsZWJhcnMuU2FmZVN0cmluZyhyZXQuam9pbignICcpKTsKLX0pOwotCi0vKioKLSAgU2VlIGBi
aW5kLWF0dHJgCi0KLSAgQG1ldGhvZCBiaW5kQXR0cgotICBAZm9yIEVtYmVyLkhhbmRsZWJhcnMu
aGVscGVycwotICBAZGVwcmVjYXRlZAotICBAcGFyYW0ge0Z1bmN0aW9ufSBjb250ZXh0Ci0gIEBw
YXJhbSB7SGFzaH0gb3B0aW9ucwotICBAcmV0dXJuIHtTdHJpbmd9IEhUTUwgc3RyaW5nCi0qLwot
RW1iZXJIYW5kbGViYXJzLnJlZ2lzdGVySGVscGVyKCdiaW5kQXR0cicsIGZ1bmN0aW9uIGJpbmRB
dHRySGVscGVyKCkgewotICBFbWJlci53YXJuKCJUaGUgJ2JpbmRBdHRyJyB2aWV3IGhlbHBlciBp
cyBkZXByZWNhdGVkIGluIGZhdm9yIG9mICdiaW5kLWF0dHInIik7Ci0gIHJldHVybiBFbWJlckhh
bmRsZWJhcnMuaGVscGVyc1snYmluZC1hdHRyJ10uYXBwbHkodGhpcywgYXJndW1lbnRzKTsKLX0p
OwotCi0vKioKLSAgSGVscGVyIHRoYXQsIGdpdmVuIGEgc3BhY2Utc2VwYXJhdGVkIHN0cmluZyBv
ZiBwcm9wZXJ0eSBwYXRocyBhbmQgYSBjb250ZXh0LAotICByZXR1cm5zIGFuIGFycmF5IG9mIGNs
YXNzIG5hbWVzLiBDYWxsaW5nIHRoaXMgbWV0aG9kIGFsc28gaGFzIHRoZSBzaWRlCi0gIGVmZmVj
dCBvZiBzZXR0aW5nIHVwIG9ic2VydmVycyBhdCB0aG9zZSBwcm9wZXJ0eSBwYXRocywgc3VjaCB0
aGF0IGlmIHRoZXkKLSAgY2hhbmdlLCB0aGUgY29ycmVjdCBjbGFzcyBuYW1lIHdpbGwgYmUgcmVh
cHBsaWVkIHRvIHRoZSBET00gZWxlbWVudC4KLQotICBGb3IgZXhhbXBsZSwgaWYgeW91IHBhc3Mg
dGhlIHN0cmluZyAiZm9vQmFyIiwgaXQgd2lsbCBmaXJzdCBsb29rIHVwIHRoZQotICAiZm9vQmFy
IiB2YWx1ZSBvZiB0aGUgY29udGV4dC4gSWYgdGhhdCB2YWx1ZSBpcyB0cnVlLCBpdCB3aWxsIGFk
ZCB0aGUKLSAgImZvby1iYXIiIGNsYXNzIHRvIHRoZSBjdXJyZW50IGVsZW1lbnQgKGkuZS4sIHRo
ZSBkYXNoZXJpemVkIGZvcm0gb2YKLSAgImZvb0JhciIpLiBJZiB0aGUgdmFsdWUgaXMgYSBzdHJp
bmcsIGl0IHdpbGwgYWRkIHRoYXQgc3RyaW5nIGFzIHRoZSBjbGFzcy4KLSAgT3RoZXJ3aXNlLCBp
dCB3aWxsIG5vdCBhZGQgYW55IG5ldyBjbGFzcyBuYW1lLgotCi0gIEBwcml2YXRlCi0gIEBtZXRo
b2QgYmluZENsYXNzZXMKLSAgQGZvciBFbWJlci5IYW5kbGViYXJzCi0gIEBwYXJhbSB7RW1iZXIu
T2JqZWN0fSBjb250ZXh0IFRoZSBjb250ZXh0IGZyb20gd2hpY2ggdG8gbG9va3VwIHByb3BlcnRp
ZXMKLSAgQHBhcmFtIHtTdHJpbmd9IGNsYXNzQmluZGluZ3MgQSBzdHJpbmcsIHNwYWNlLXNlcGFy
YXRlZCwgb2YgY2xhc3MgYmluZGluZ3MKLSAgICB0byB1c2UKLSAgQHBhcmFtIHtFbWJlci5WaWV3
fSB2aWV3IFRoZSB2aWV3IGluIHdoaWNoIG9ic2VydmVycyBzaG91bGQgbG9vayBmb3IgdGhlCi0g
ICAgZWxlbWVudCB0byB1cGRhdGUKLSAgQHBhcmFtIHtTcnRpbmd9IGJpbmRBdHRySWQgT3B0aW9u
YWwgYmluZEF0dHIgaWQgdXNlZCB0byBsb29rdXAgZWxlbWVudHMKLSAgQHJldHVybiB7QXJyYXl9
IEFuIGFycmF5IG9mIGNsYXNzIG5hbWVzIHRvIGFkZAotKi8KLUVtYmVySGFuZGxlYmFycy5iaW5k
Q2xhc3NlcyA9IGZ1bmN0aW9uKGNvbnRleHQsIGNsYXNzQmluZGluZ3MsIHZpZXcsIGJpbmRBdHRy
SWQsIG9wdGlvbnMpIHsKLSAgdmFyIHJldCA9IFtdLCBuZXdDbGFzcywgdmFsdWUsIGVsZW07Ci0K
LSAgLy8gSGVscGVyIG1ldGhvZCB0byByZXRyaWV2ZSB0aGUgcHJvcGVydHkgZnJvbSB0aGUgY29u
dGV4dCBhbmQKLSAgLy8gZGV0ZXJtaW5lIHdoaWNoIGNsYXNzIHN0cmluZyB0byByZXR1cm4sIGJh
c2VkIG9uIHdoZXRoZXIgaXQgaXMKLSAgLy8gYSBCb29sZWFuIG9yIG5vdC4KLSAgdmFyIGNsYXNz
U3RyaW5nRm9yUGF0aCA9IGZ1bmN0aW9uKHJvb3QsIHBhcnNlZFBhdGgsIG9wdGlvbnMpIHsKLSAg
ICB2YXIgdmFsLAotICAgICAgICBwYXRoID0gcGFyc2VkUGF0aC5wYXRoOwotCi0gICAgaWYgKHBh
dGggPT09ICd0aGlzJykgewotICAgICAgdmFsID0gcm9vdDsKLSAgICB9IGVsc2UgaWYgKHBhdGgg
PT09ICcnKSB7Ci0gICAgICB2YWwgPSB0cnVlOwotICAgIH0gZWxzZSB7Ci0gICAgICB2YWwgPSBo
YW5kbGViYXJzR2V0KHJvb3QsIHBhdGgsIG9wdGlvbnMpOwotICAgIH0KLQotICAgIHJldHVybiBF
bWJlci5WaWV3Ll9jbGFzc1N0cmluZ0ZvclZhbHVlKHBhdGgsIHZhbCwgcGFyc2VkUGF0aC5jbGFz
c05hbWUsIHBhcnNlZFBhdGguZmFsc3lDbGFzc05hbWUpOwotICB9OwotCi0gIC8vIEZvciBlYWNo
IHByb3BlcnR5IHBhc3NlZCwgbG9vcCB0aHJvdWdoIGFuZCBzZXR1cAotICAvLyBhbiBvYnNlcnZl
ci4KLSAgZm9yRWFjaC5jYWxsKGNsYXNzQmluZGluZ3Muc3BsaXQoJyAnKSwgZnVuY3Rpb24oYmlu
ZGluZykgewotCi0gICAgLy8gVmFyaWFibGUgaW4gd2hpY2ggdGhlIG9sZCBjbGFzcyB2YWx1ZSBp
cyBzYXZlZC4gVGhlIG9ic2VydmVyIGZ1bmN0aW9uCi0gICAgLy8gY2xvc2VzIG92ZXIgdGhpcyB2
YXJpYWJsZSwgc28gaXQga25vd3Mgd2hpY2ggc3RyaW5nIHRvIHJlbW92ZSB3aGVuCi0gICAgLy8g
dGhlIHByb3BlcnR5IGNoYW5nZXMuCi0gICAgdmFyIG9sZENsYXNzOwotCi0gICAgdmFyIG9ic2Vy
dmVyLCBpbnZva2VyOwotCi0gICAgdmFyIHBhcnNlZFBhdGggPSBFbWJlci5WaWV3Ll9wYXJzZVBy
b3BlcnR5UGF0aChiaW5kaW5nKSwKLSAgICAgICAgcGF0aCA9IHBhcnNlZFBhdGgucGF0aCwKLSAg
ICAgICAgcGF0aFJvb3QgPSBjb250ZXh0LAotICAgICAgICBub3JtYWxpemVkOwotCi0gICAgaWYg
KHBhdGggIT09ICcnICYmIHBhdGggIT09ICd0aGlzJykgewotICAgICAgbm9ybWFsaXplZCA9IG5v
cm1hbGl6ZVBhdGgoY29udGV4dCwgcGF0aCwgb3B0aW9ucy5kYXRhKTsKLQotICAgICAgcGF0aFJv
b3QgPSBub3JtYWxpemVkLnJvb3Q7Ci0gICAgICBwYXRoID0gbm9ybWFsaXplZC5wYXRoOwotICAg
IH0KLQotICAgIC8vIFNldCB1cCBhbiBvYnNlcnZlciBvbiB0aGUgY29udGV4dC4gSWYgdGhlIHBy
b3BlcnR5IGNoYW5nZXMsIHRvZ2dsZSB0aGUKLSAgICAvLyBjbGFzcyBuYW1lLgotICAgIG9ic2Vy
dmVyID0gZnVuY3Rpb24oKSB7Ci0gICAgICAvLyBHZXQgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhl
IHByb3BlcnR5Ci0gICAgICBuZXdDbGFzcyA9IGNsYXNzU3RyaW5nRm9yUGF0aChjb250ZXh0LCBw
YXJzZWRQYXRoLCBvcHRpb25zKTsKLSAgICAgIGVsZW0gPSBiaW5kQXR0cklkID8gdmlldy4kKCJb
ZGF0YS1iaW5kYXR0ci0iICsgYmluZEF0dHJJZCArICI9JyIgKyBiaW5kQXR0cklkICsgIiddIikg
OiB2aWV3LiQoKTsKLQotICAgICAgLy8gSWYgd2UgY2FuJ3QgZmluZCB0aGUgZWxlbWVudCBhbnlt
b3JlLCBhIHBhcmVudCB0ZW1wbGF0ZSBoYXMgYmVlbgotICAgICAgLy8gcmUtcmVuZGVyZWQgYW5k
IHdlJ3ZlIGJlZW4gbnVrZWQuIFJlbW92ZSB0aGUgb2JzZXJ2ZXIuCi0gICAgICBpZiAoIWVsZW0g
fHwgZWxlbS5sZW5ndGggPT09IDApIHsKLSAgICAgICAgRW1iZXIucmVtb3ZlT2JzZXJ2ZXIocGF0
aFJvb3QsIHBhdGgsIGludm9rZXIpOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgLy8gSWYgd2Ug
aGFkIHByZXZpb3VzbHkgYWRkZWQgYSBjbGFzcyB0byB0aGUgZWxlbWVudCwgcmVtb3ZlIGl0Lgot
ICAgICAgICBpZiAob2xkQ2xhc3MpIHsKLSAgICAgICAgICBlbGVtLnJlbW92ZUNsYXNzKG9sZENs
YXNzKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIElmIG5lY2Vzc2FyeSwgYWRkIGEgbmV3IGNs
YXNzLiBNYWtlIHN1cmUgd2Uga2VlcCB0cmFjayBvZiBpdCBzbwotICAgICAgICAvLyBpdCBjYW4g
YmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLgotICAgICAgICBpZiAobmV3Q2xhc3MpIHsKLSAgICAg
ICAgICBlbGVtLmFkZENsYXNzKG5ld0NsYXNzKTsKLSAgICAgICAgICBvbGRDbGFzcyA9IG5ld0Ns
YXNzOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIG9sZENsYXNzID0gbnVsbDsKLSAgICAg
ICAgfQotICAgICAgfQotICAgIH07Ci0KLSAgICBpZiAocGF0aCAhPT0gJycgJiYgcGF0aCAhPT0g
J3RoaXMnKSB7Ci0gICAgICB2aWV3LnJlZ2lzdGVyT2JzZXJ2ZXIocGF0aFJvb3QsIHBhdGgsIG9i
c2VydmVyKTsKLSAgICB9Ci0KLSAgICAvLyBXZSd2ZSBhbHJlYWR5IHNldHVwIHRoZSBvYnNlcnZl
cjsgbm93IHdlIGp1c3QgbmVlZCB0byBmaWd1cmUgb3V0IHRoZQotICAgIC8vIGNvcnJlY3QgYmVo
YXZpb3IgcmlnaHQgbm93IG9uIHRoZSBmaXJzdCBwYXNzIHRocm91Z2guCi0gICAgdmFsdWUgPSBj
bGFzc1N0cmluZ0ZvclBhdGgoY29udGV4dCwgcGFyc2VkUGF0aCwgb3B0aW9ucyk7Ci0KLSAgICBp
ZiAodmFsdWUpIHsKLSAgICAgIHJldC5wdXNoKHZhbHVlKTsKLQotICAgICAgLy8gTWFrZSBzdXJl
IHdlIHNhdmUgdGhlIGN1cnJlbnQgdmFsdWUgc28gdGhhdCBpdCBjYW4gYmUgcmVtb3ZlZCBpZiB0
aGUKLSAgICAgIC8vIG9ic2VydmVyIGZpcmVzLgotICAgICAgb2xkQ2xhc3MgPSB2YWx1ZTsKLSAg
ICB9Ci0gIH0pOwotCi0gIHJldHVybiByZXQ7Ci19OwotCi0KLX0pKCk7Ci0KLQotCi0oZnVuY3Rp
b24oKSB7Ci0vKmdsb2JhbHMgSGFuZGxlYmFycyAqLwotCi0vLyBUT0RPOiBEb24ndCByZXF1aXJl
IHRoZSBlbnRpcmUgbW9kdWxlCi0vKioKLUBtb2R1bGUgZW1iZXIKLUBzdWJtb2R1bGUgZW1iZXIt
aGFuZGxlYmFycwotKi8KLQotdmFyIGdldCA9IEVtYmVyLmdldCwgc2V0ID0gRW1iZXIuc2V0Owot
dmFyIEVtYmVySGFuZGxlYmFycyA9IEVtYmVyLkhhbmRsZWJhcnM7Ci12YXIgTE9XRVJDQVNFX0Ff
WiA9IC9eW2Etel0vOwotdmFyIFZJRVdfUFJFRklYID0gL152aWV3XC4vOwotCi1mdW5jdGlvbiBt
YWtlQmluZGluZ3ModGhpc0NvbnRleHQsIG9wdGlvbnMpIHsKLSAgdmFyIGhhc2ggPSBvcHRpb25z
Lmhhc2gsCi0gICAgICBoYXNoVHlwZSA9IG9wdGlvbnMuaGFzaFR5cGVzOwotCi0gIGZvciAodmFy
IHByb3AgaW4gaGFzaCkgewotICAgIGlmIChoYXNoVHlwZVtwcm9wXSA9PT0gJ0lEJykgewotCi0g
ICAgICB2YXIgdmFsdWUgPSBoYXNoW3Byb3BdOwotCi0gICAgICBpZiAoRW1iZXIuSVNfQklORElO
Ry50ZXN0KHByb3ApKSB7Ci0gICAgICAgIEVtYmVyLndhcm4oIllvdSdyZSBhdHRlbXB0aW5nIHRv
IHJlbmRlciBhIHZpZXcgYnkgcGFzc2luZyAiICsgcHJvcCArICI9IiArIHZhbHVlICsgIiB0byBh
IHZpZXcgaGVscGVyLCBidXQgdGhpcyBzeW50YXggaXMgYW1iaWd1b3VzLiBZb3Ugc2hvdWxkIGVp
dGhlciBzdXJyb3VuZCAiICsgdmFsdWUgKyAiIGluIHF1b3RlcyBvciByZW1vdmUgYEJpbmRpbmdg
IGZyb20gIiArIHByb3AgKyAiLiIpOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgaGFzaFtwcm9w
ICsgJ0JpbmRpbmcnXSA9IHZhbHVlOwotICAgICAgICBoYXNoVHlwZVtwcm9wICsgJ0JpbmRpbmcn
XSA9ICdTVFJJTkcnOwotICAgICAgICBkZWxldGUgaGFzaFtwcm9wXTsKLSAgICAgICAgZGVsZXRl
IGhhc2hUeXBlW3Byb3BdOwotICAgICAgfQotICAgIH0KLSAgfQotCi0gIGlmIChoYXNoLmhhc093
blByb3BlcnR5KCdpZEJpbmRpbmcnKSkgewotICAgIC8vIGlkIGNhbid0IGJlIGJvdW5kLCBzbyBq
dXN0IHBlcmZvcm0gb25lLXRpbWUgbG9va3VwLgotICAgIGhhc2guaWQgPSBFbWJlckhhbmRsZWJh
cnMuZ2V0KHRoaXNDb250ZXh0LCBoYXNoLmlkQmluZGluZywgb3B0aW9ucyk7Ci0gICAgaGFzaFR5
cGUuaWQgPSAnU1RSSU5HJzsKLSAgICBkZWxldGUgaGFzaC5pZEJpbmRpbmc7Ci0gICAgZGVsZXRl
IGhhc2hUeXBlLmlkQmluZGluZzsKLSAgfQotfQotCi1FbWJlckhhbmRsZWJhcnMuVmlld0hlbHBl
ciA9IEVtYmVyLk9iamVjdC5jcmVhdGUoewotCi0gIHByb3BlcnRpZXNGcm9tSFRNTE9wdGlvbnM6
IGZ1bmN0aW9uKG9wdGlvbnMpIHsKLSAgICB2YXIgaGFzaCA9IG9wdGlvbnMuaGFzaCwgZGF0YSA9
IG9wdGlvbnMuZGF0YTsKLSAgICB2YXIgZXh0ZW5zaW9ucyA9IHt9LAotICAgICAgICBjbGFzc2Vz
ID0gaGFzaFsnY2xhc3MnXSwKLSAgICAgICAgZHVwID0gZmFsc2U7Ci0KLSAgICBpZiAoaGFzaC5p
ZCkgewotICAgICAgZXh0ZW5zaW9ucy5lbGVtZW50SWQgPSBoYXNoLmlkOwotICAgICAgZHVwID0g
dHJ1ZTsKLSAgICB9Ci0KLSAgICBpZiAoaGFzaC50YWcpIHsKLSAgICAgIGV4dGVuc2lvbnMudGFn
TmFtZSA9IGhhc2gudGFnOwotICAgICAgZHVwID0gdHJ1ZTsKLSAgICB9Ci0KLSAgICBpZiAoY2xh
c3NlcykgewotICAgICAgY2xhc3NlcyA9IGNsYXNzZXMuc3BsaXQoJyAnKTsKLSAgICAgIGV4dGVu
c2lvbnMuY2xhc3NOYW1lcyA9IGNsYXNzZXM7Ci0gICAgICBkdXAgPSB0cnVlOwotICAgIH0KLQot
ICAgIGlmIChoYXNoLmNsYXNzQmluZGluZykgewotICAgICAgZXh0ZW5zaW9ucy5jbGFzc05hbWVC
aW5kaW5ncyA9IGhhc2guY2xhc3NCaW5kaW5nLnNwbGl0KCcgJyk7Ci0gICAgICBkdXAgPSB0cnVl
OwotICAgIH0KLQotICAgIGlmIChoYXNoLmNsYXNzTmFtZUJpbmRpbmdzKSB7Ci0gICAgICBpZiAo
ZXh0ZW5zaW9ucy5jbGFzc05hbWVCaW5kaW5ncyA9PT0gdW5kZWZpbmVkKSBleHRlbnNpb25zLmNs
YXNzTmFtZUJpbmRpbmdzID0gW107Ci0gICAgICBleHRlbnNpb25zLmNsYXNzTmFtZUJpbmRpbmdz
ID0gZXh0ZW5zaW9ucy5jbGFzc05hbWVCaW5kaW5ncy5jb25jYXQoaGFzaC5jbGFzc05hbWVCaW5k
aW5ncy5zcGxpdCgnICcpKTsKLSAgICAgIGR1cCA9IHRydWU7Ci0gICAgfQotCi0gICAgaWYgKGhh
c2guYXR0cmlidXRlQmluZGluZ3MpIHsKLSAgICAgIEVtYmVyLmFzc2VydCgiU2V0dGluZyAnYXR0
cmlidXRlQmluZGluZ3MnIHZpYSBIYW5kbGViYXJzIGlzIG5vdCBhbGxvd2VkLiBQbGVhc2Ugc3Vi
Y2xhc3MgRW1iZXIuVmlldyBhbmQgc2V0IGl0IHRoZXJlIGluc3RlYWQuIik7Ci0gICAgICBleHRl
bnNpb25zLmF0dHJpYnV0ZUJpbmRpbmdzID0gbnVsbDsKLSAgICAgIGR1cCA9IHRydWU7Ci0gICAg
fQotCi0gICAgaWYgKGR1cCkgewotICAgICAgaGFzaCA9IEVtYmVyLiQuZXh0ZW5kKHt9LCBoYXNo
KTsKLSAgICAgIGRlbGV0ZSBoYXNoLmlkOwotICAgICAgZGVsZXRlIGhhc2gudGFnOwotICAgICAg
ZGVsZXRlIGhhc2hbJ2NsYXNzJ107Ci0gICAgICBkZWxldGUgaGFzaC5jbGFzc0JpbmRpbmc7Ci0g
ICAgfQotCi0gICAgLy8gU2V0IHRoZSBwcm9wZXIgY29udGV4dCBmb3IgYWxsIGJpbmRpbmdzIHBh
c3NlZCB0byB0aGUgaGVscGVyLiBUaGlzIGFwcGxpZXMgdG8gcmVndWxhciBhdHRyaWJ1dGUgYmlu
ZGluZ3MKLSAgICAvLyBhcyB3ZWxsIGFzIGNsYXNzIG5hbWUgYmluZGluZ3MuIElmIHRoZSBiaW5k
aW5ncyBhcmUgbG9jYWwsIG1ha2UgdGhlbSByZWxhdGl2ZSB0byB0aGUgY3VycmVudCBjb250ZXh0
Ci0gICAgLy8gaW5zdGVhZCBvZiB0aGUgdmlldy4KLSAgICB2YXIgcGF0aDsKLQotICAgIC8vIEV2
YWx1YXRlIHRoZSBjb250ZXh0IG9mIHJlZ3VsYXIgYXR0cmlidXRlIGJpbmRpbmdzOgotICAgIGZv
ciAodmFyIHByb3AgaW4gaGFzaCkgewotICAgICAgaWYgKCFoYXNoLmhhc093blByb3BlcnR5KHBy
b3ApKSB7IGNvbnRpbnVlOyB9Ci0KLSAgICAgIC8vIFRlc3QgaWYgdGhlIHByb3BlcnR5IGVuZHMg
aW4gIkJpbmRpbmciCi0gICAgICBpZiAoRW1iZXIuSVNfQklORElORy50ZXN0KHByb3ApICYmIHR5
cGVvZiBoYXNoW3Byb3BdID09PSAnc3RyaW5nJykgewotICAgICAgICBwYXRoID0gdGhpcy5jb250
ZXh0dWFsaXplQmluZGluZ1BhdGgoaGFzaFtwcm9wXSwgZGF0YSk7Ci0gICAgICAgIGlmIChwYXRo
KSB7IGhhc2hbcHJvcF0gPSBwYXRoOyB9Ci0gICAgICB9Ci0gICAgfQotCi0gICAgLy8gRXZhbHVh
dGUgdGhlIGNvbnRleHQgb2YgY2xhc3MgbmFtZSBiaW5kaW5nczoKLSAgICBpZiAoZXh0ZW5zaW9u
cy5jbGFzc05hbWVCaW5kaW5ncykgewotICAgICAgZm9yICh2YXIgYiBpbiBleHRlbnNpb25zLmNs
YXNzTmFtZUJpbmRpbmdzKSB7Ci0gICAgICAgIHZhciBmdWxsID0gZXh0ZW5zaW9ucy5jbGFzc05h
bWVCaW5kaW5nc1tiXTsKLSAgICAgICAgaWYgKHR5cGVvZiBmdWxsID09PSAnc3RyaW5nJykgewot
ICAgICAgICAgIC8vIENvbnRleHR1YWxpemUgdGhlIHBhdGggb2YgY2xhc3NOYW1lQmluZGluZyBz
byB0aGlzOgotICAgICAgICAgIC8vCi0gICAgICAgICAgLy8gICAgIGNsYXNzTmFtZUJpbmRpbmc9
ImlzR3JlZW46Z3JlZW4iCi0gICAgICAgICAgLy8KLSAgICAgICAgICAvLyBpcyBjb252ZXJ0ZWQg
dG8gdGhpczoKLSAgICAgICAgICAvLwotICAgICAgICAgIC8vICAgICBjbGFzc05hbWVCaW5kaW5n
PSJfcGFyZW50Vmlldy5jb250ZXh0LmlzR3JlZW46Z3JlZW4iCi0gICAgICAgICAgdmFyIHBhcnNl
ZFBhdGggPSBFbWJlci5WaWV3Ll9wYXJzZVByb3BlcnR5UGF0aChmdWxsKTsKLSAgICAgICAgICBw
YXRoID0gdGhpcy5jb250ZXh0dWFsaXplQmluZGluZ1BhdGgocGFyc2VkUGF0aC5wYXRoLCBkYXRh
KTsKLSAgICAgICAgICBpZiAocGF0aCkgeyBleHRlbnNpb25zLmNsYXNzTmFtZUJpbmRpbmdzW2Jd
ID0gcGF0aCArIHBhcnNlZFBhdGguY2xhc3NOYW1lczsgfQotICAgICAgICB9Ci0gICAgICB9Ci0g
ICAgfQotCi0gICAgcmV0dXJuIEVtYmVyLiQuZXh0ZW5kKGhhc2gsIGV4dGVuc2lvbnMpOwotICB9
LAotCi0gIC8vIFRyYW5zZm9ybSBiaW5kaW5ncyBmcm9tIHRoZSBjdXJyZW50IGNvbnRleHQgdG8g
YSBjb250ZXh0IHRoYXQgY2FuIGJlIGV2YWx1YXRlZCB3aXRoaW4gdGhlIHZpZXcuCi0gIC8vIFJl
dHVybnMgbnVsbCBpZiB0aGUgcGF0aCBzaG91bGRuJ3QgYmUgY2hhbmdlZC4KLSAgLy8KLSAgLy8g
VE9ETzogY29uc2lkZXIgdGhlIGFkZGl0aW9uIG9mIGEgcHJlZml4IHRoYXQgd291bGQgYWxsb3cg
dGhpcyBtZXRob2QgdG8gcmV0dXJuIGBwYXRoYC4KLSAgY29udGV4dHVhbGl6ZUJpbmRpbmdQYXRo
OiBmdW5jdGlvbihwYXRoLCBkYXRhKSB7Ci0gICAgdmFyIG5vcm1hbGl6ZWQgPSBFbWJlci5IYW5k
bGViYXJzLm5vcm1hbGl6ZVBhdGgobnVsbCwgcGF0aCwgZGF0YSk7Ci0gICAgaWYgKG5vcm1hbGl6
ZWQuaXNLZXl3b3JkKSB7Ci0gICAgICByZXR1cm4gJ3RlbXBsYXRlRGF0YS5rZXl3b3Jkcy4nICsg
cGF0aDsKLSAgICB9IGVsc2UgaWYgKEVtYmVyLmlzR2xvYmFsUGF0aChwYXRoKSkgewotICAgICAg
cmV0dXJuIG51bGw7Ci0gICAgfSBlbHNlIGlmIChwYXRoID09PSAndGhpcycgfHwgcGF0aCA9PT0g
JycpIHsKLSAgICAgIHJldHVybiAnX3BhcmVudFZpZXcuY29udGV4dCc7Ci0gICAgfSBlbHNlIHsK
LSAgICAgIHJldHVybiAnX3BhcmVudFZpZXcuY29udGV4dC4nICsgcGF0aDsKLSAgICB9Ci0gIH0s
Ci0KLSAgaGVscGVyOiBmdW5jdGlvbih0aGlzQ29udGV4dCwgcGF0aCwgb3B0aW9ucykgewotICAg
IHZhciBkYXRhID0gb3B0aW9ucy5kYXRhLAotICAgICAgICBmbiA9IG9wdGlvbnMuZm4sCi0gICAg
ICAgIG5ld1ZpZXc7Ci0KLSAgICBtYWtlQmluZGluZ3ModGhpc0NvbnRleHQsIG9wdGlvbnMpOwot
Ci0gICAgaWYgKCdzdHJpbmcnID09PSB0eXBlb2YgcGF0aCkgewotCi0gICAgICAvLyBUT0RPOiB0
aGlzIGlzIGEgbGFtZSBjb25kaXRpb25hbCwgdGhpcyBzaG91bGQgbGlrZWx5IGNoYW5nZQotICAg
ICAgLy8gYnV0IHNvbWV0aGluZyBhbG9uZyB0aGVzZSBsaW5lcyB3aWxsIGxpa2VseSBuZWVkIHRv
IGJlIGFkZGVkCi0gICAgICAvLyBhcyBkZXByZWNhdGlvbiB3YXJuaW5ncwotICAgICAgLy8KLSAg
ICAgIGlmIChvcHRpb25zLnR5cGVzWzBdID09PSAnU1RSSU5HJyAmJiBMT1dFUkNBU0VfQV9aLnRl
c3QocGF0aCkgJiYgIVZJRVdfUFJFRklYLnRlc3QocGF0aCkpIHsKLSAgICAgICAgRW1iZXIuYXNz
ZXJ0KCJWaWV3IHJlcXVpcmVzIGEgY29udGFpbmVyIiwgISFkYXRhLnZpZXcuY29udGFpbmVyKTsK
LSAgICAgICAgbmV3VmlldyA9IGRhdGEudmlldy5jb250YWluZXIubG9va3VwRmFjdG9yeSgndmll
dzonICsgcGF0aCk7Ci0gICAgICB9IGVsc2UgewotICAgICAgICBuZXdWaWV3ID0gRW1iZXJIYW5k
bGViYXJzLmdldCh0aGlzQ29udGV4dCwgcGF0aCwgb3B0aW9ucyk7Ci0gICAgICB9Ci0KLSAgICAg
IEVtYmVyLmFzc2VydCgiVW5hYmxlIHRvIGZpbmQgdmlldyBhdCBwYXRoICciICsgcGF0aCArICIn
IiwgISFuZXdWaWV3KTsKLSAgICB9IGVsc2UgewotICAgICAgbmV3VmlldyA9IHBhdGg7Ci0gICAg
fQotCi0gICAgRW1iZXIuYXNzZXJ0KEVtYmVyLlN0cmluZy5mbXQoJ1lvdSBtdXN0IHBhc3MgYSB2
aWV3IHRvIHRoZSAjdmlldyBoZWxwZXIsIG5vdCAlQCAoJUApJywgW3BhdGgsIG5ld1ZpZXddKSwg
RW1iZXIuVmlldy5kZXRlY3QobmV3VmlldykgfHwgRW1iZXIuVmlldy5kZXRlY3RJbnN0YW5jZShu
ZXdWaWV3KSk7Ci0KLSAgICB2YXIgdmlld09wdGlvbnMgPSB0aGlzLnByb3BlcnRpZXNGcm9tSFRN
TE9wdGlvbnMob3B0aW9ucywgdGhpc0NvbnRleHQpOwotICAgIHZhciBjdXJyZW50VmlldyA9IGRh
dGEudmlldzsKLSAgICB2aWV3T3B0aW9ucy50ZW1wbGF0ZURhdGEgPSBkYXRhOwotICAgIHZhciBu
ZXdWaWV3UHJvdG8gPSBuZXdWaWV3LnByb3RvID8gbmV3Vmlldy5wcm90bygpIDogbmV3VmlldzsK
LQotICAgIGlmIChmbikgewotICAgICAgRW1iZXIuYXNzZXJ0KCJZb3UgY2Fubm90IHByb3ZpZGUg
YSB0ZW1wbGF0ZSBibG9jayBpZiB5b3UgYWxzbyBzcGVjaWZpZWQgYSB0ZW1wbGF0ZU5hbWUiLCAh
Z2V0KHZpZXdPcHRpb25zLCAndGVtcGxhdGVOYW1lJykgJiYgIWdldChuZXdWaWV3UHJvdG8sICd0
ZW1wbGF0ZU5hbWUnKSk7Ci0gICAgICB2aWV3T3B0aW9ucy50ZW1wbGF0ZSA9IGZuOwotICAgIH0K
LQotICAgIC8vIFdlIG9ubHkgd2FudCB0byBvdmVycmlkZSB0aGUgYF9jb250ZXh0YCBjb21wdXRl
ZCBwcm9wZXJ0eSBpZiB0aGVyZSBpcwotICAgIC8vIG5vIHNwZWNpZmllZCBjb250cm9sbGVyLiBT
ZWUgVmlldyNfY29udGV4dCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLSAgICBpZiAoIW5ld1ZpZXdQ
cm90by5jb250cm9sbGVyICYmICFuZXdWaWV3UHJvdG8uY29udHJvbGxlckJpbmRpbmcgJiYgIXZp
ZXdPcHRpb25zLmNvbnRyb2xsZXIgJiYgIXZpZXdPcHRpb25zLmNvbnRyb2xsZXJCaW5kaW5nKSB7
Ci0gICAgICB2aWV3T3B0aW9ucy5fY29udGV4dCA9IHRoaXNDb250ZXh0OwotICAgIH0KLQotICAg
IGN1cnJlbnRWaWV3LmFwcGVuZENoaWxkKG5ld1ZpZXcsIHZpZXdPcHRpb25zKTsKLSAgfQotfSk7
Ci0KLS8qKgotICBge3t2aWV3fX1gIGluc2VydHMgYSBuZXcgaW5zdGFuY2Ugb2YgYEVtYmVyLlZp
ZXdgIGludG8gYSB0ZW1wbGF0ZSBwYXNzaW5nIGl0cwotICBvcHRpb25zIHRvIHRoZSBgRW1iZXIu
Vmlld2AncyBgY3JlYXRlYCBtZXRob2QgYW5kIHVzaW5nIHRoZSBzdXBwbGllZCBibG9jayBhcwot
ICB0aGUgdmlldydzIG93biB0ZW1wbGF0ZS4KLQotICBBbiBlbXB0eSBgPGJvZHk+YCBhbmQgdGhl
IGZvbGxvd2luZyB0ZW1wbGF0ZToKLQotICBgYGBoYW5kbGViYXJzCi0gIEEgc3BhbjoKLSAge3sj
dmlldyB0YWdOYW1lPSJzcGFuIn19Ci0gICAgaGVsbG8uCi0gIHt7L3ZpZXd9fQotICBgYGAKLQot
ICBXaWxsIHJlc3VsdCBpbiBIVE1MIHN0cnVjdHVyZToKLQotICBgYGBodG1sCi0gIDxib2R5Pgot
ICAgIDwhLS0gTm90ZTogdGhlIGhhbmRsZWJhcnMgdGVtcGxhdGUgc2NyaXB0Ci0gICAgICAgICBh
bHNvIHJlc3VsdHMgaW4gYSByZW5kZXJlZCBFbWJlci5WaWV3Ci0gICAgICAgICB3aGljaCBpcyB0
aGUgb3V0ZXIgPGRpdj4gaGVyZSAtLT4KLQotICAgIDxkaXYgY2xhc3M9ImVtYmVyLXZpZXciPgot
ICAgICAgQSBzcGFuOgotICAgICAgPHNwYW4gaWQ9ImVtYmVyMSIgY2xhc3M9ImVtYmVyLXZpZXci
PgotICAgICAgICBIZWxsby4KLSAgICAgIDwvc3Bhbj4KLSAgICA8L2Rpdj4KLSAgPC9ib2R5Pgot
ICBgYGAKLQotICAjIyMgYHBhcmVudFZpZXdgIHNldHRpbmcKLQotICBUaGUgYHBhcmVudFZpZXdg
IHByb3BlcnR5IG9mIHRoZSBuZXcgYEVtYmVyLlZpZXdgIGluc3RhbmNlIGNyZWF0ZWQgdGhyb3Vn
aAotICBge3t2aWV3fX1gIHdpbGwgYmUgc2V0IHRvIHRoZSBgRW1iZXIuVmlld2AgaW5zdGFuY2Ug
b2YgdGhlIHRlbXBsYXRlIHdoZXJlCi0gIGB7e3ZpZXd9fWAgd2FzIGNhbGxlZC4KLQotICBgYGBq
YXZhc2NyaXB0Ci0gIGFWaWV3ID0gRW1iZXIuVmlldy5jcmVhdGUoewotICAgIHRlbXBsYXRlOiBF
bWJlci5IYW5kbGViYXJzLmNvbXBpbGUoInt7I3ZpZXd9fSBteSBwYXJlbnQ6IHt7cGFyZW50Vmll
dy5lbGVtZW50SWR9fSB7ey92aWV3fX0iKQotICB9KTsKLQotICBhVmlldy5hcHBlbmRUbygnYm9k
eScpOwotICBgYGAKLQotICBXaWxsIHJlc3VsdCBpbiBIVE1MIHN0cnVjdHVyZToKLQotICBgYGBo
dG1sCi0gIDxkaXYgaWQ9ImVtYmVyMSIgY2xhc3M9ImVtYmVyLXZpZXciPgotICAgIDxkaXYgaWQ9
ImVtYmVyMiIgY2xhc3M9ImVtYmVyLXZpZXciPgotICAgICAgbXkgcGFyZW50OiBlbWJlcjEKLSAg
ICA8L2Rpdj4KLSAgPC9kaXY+Ci0gIGBgYAotCi0gICMjIyBTZXR0aW5nIENTUyBpZCBhbmQgY2xh
c3MgYXR0cmlidXRlcwotCi0gIFRoZSBIVE1MIGBpZGAgYXR0cmlidXRlIGNhbiBiZSBzZXQgb24g
dGhlIGB7e3ZpZXd9fWAncyByZXN1bHRpbmcgZWxlbWVudCB3aXRoCi0gIHRoZSBgaWRgIG9wdGlv
bi4gVGhpcyBvcHRpb24gd2lsbCBfbm90XyBiZSBwYXNzZWQgdG8gYEVtYmVyLlZpZXcuY3JlYXRl
YC4KLQotICBgYGBoYW5kbGViYXJzCi0gIHt7I3ZpZXcgdGFnTmFtZT0ic3BhbiIgaWQ9ImEtY3Vz
dG9tLWlkIn19Ci0gICAgaGVsbG8uCi0gIHt7L3ZpZXd9fQotICBgYGAKLQotICBSZXN1bHRzIGlu
IHRoZSBmb2xsb3dpbmcgSFRNTCBzdHJ1Y3R1cmU6Ci0KLSAgYGBgaHRtbAotICA8ZGl2IGNsYXNz
PSJlbWJlci12aWV3Ij4KLSAgICA8c3BhbiBpZD0iYS1jdXN0b20taWQiIGNsYXNzPSJlbWJlci12
aWV3Ij4KLSAgICAgIGhlbGxvLgotICAgIDwvc3Bhbj4KLSAgPC9kaXY+Ci0gIGBgYAotCi0gIFRo
ZSBIVE1MIGBjbGFzc2AgYXR0cmlidXRlIGNhbiBiZSBzZXQgb24gdGhlIGB7e3ZpZXd9fWAncyBy
ZXN1bHRpbmcgZWxlbWVudAotICB3aXRoIHRoZSBgY2xhc3NgIG9yIGBjbGFzc05hbWVCaW5kaW5n
c2Agb3B0aW9ucy4gVGhlIGBjbGFzc2Agb3B0aW9uIHdpbGwKLSAgZGlyZWN0bHkgc2V0IHRoZSBD
U1MgYGNsYXNzYCBhdHRyaWJ1dGUgYW5kIHdpbGwgbm90IGJlIHBhc3NlZCB0bwotICBgRW1iZXIu
Vmlldy5jcmVhdGVgLiBgY2xhc3NOYW1lQmluZGluZ3NgIHdpbGwgYmUgcGFzc2VkIHRvIGBjcmVh
dGVgIGFuZCB1c2UKLSAgYEVtYmVyLlZpZXdgJ3MgY2xhc3MgbmFtZSBiaW5kaW5nIGZ1bmN0aW9u
YWxpdHk6Ci0KLSAgYGBgaGFuZGxlYmFycwotICB7eyN2aWV3IHRhZ05hbWU9InNwYW4iIGNsYXNz
PSJhLWN1c3RvbS1jbGFzcyJ9fQotICAgIGhlbGxvLgotICB7ey92aWV3fX0KLSAgYGBgCi0KLSAg
UmVzdWx0cyBpbiB0aGUgZm9sbG93aW5nIEhUTUwgc3RydWN0dXJlOgotCi0gIGBgYGh0bWwKLSAg
PGRpdiBjbGFzcz0iZW1iZXItdmlldyI+Ci0gICAgPHNwYW4gaWQ9ImVtYmVyMiIgY2xhc3M9ImVt
YmVyLXZpZXcgYS1jdXN0b20tY2xhc3MiPgotICAgICAgaGVsbG8uCi0gICAgPC9zcGFuPgotICA8
L2Rpdj4KLSAgYGBgCi0KLSAgIyMjIFN1cHBseWluZyBhIGRpZmZlcmVudCB2aWV3IGNsYXNzCi0K
LSAgYHt7dmlld319YCBjYW4gdGFrZSBhbiBvcHRpb25hbCBmaXJzdCBhcmd1bWVudCBiZWZvcmUg
aXRzIHN1cHBsaWVkIG9wdGlvbnMgdG8KLSAgc3BlY2lmeSBhIHBhdGggdG8gYSBjdXN0b20gdmll
dyBjbGFzcy4KLQotICBgYGBoYW5kbGViYXJzCi0gIHt7I3ZpZXcgIk15QXBwLkN1c3RvbVZpZXci
fX0KLSAgICBoZWxsby4KLSAge3svdmlld319Ci0gIGBgYAotCi0gIFRoZSBmaXJzdCBhcmd1bWVu
dCBjYW4gYWxzbyBiZSBhIHJlbGF0aXZlIHBhdGggYWNjZXNzaWJsZSBmcm9tIHRoZSBjdXJyZW50
Ci0gIGNvbnRleHQuCi0KLSAgYGBgamF2YXNjcmlwdAotICBNeUFwcCA9IEVtYmVyLkFwcGxpY2F0
aW9uLmNyZWF0ZSh7fSk7Ci0gIE15QXBwLk91dGVyVmlldyA9IEVtYmVyLlZpZXcuZXh0ZW5kKHsK
LSAgICBpbm5lclZpZXdDbGFzczogRW1iZXIuVmlldy5leHRlbmQoewotICAgICAgY2xhc3NOYW1l
czogWydhLWN1c3RvbS12aWV3LWNsYXNzLWFzLXByb3BlcnR5J10KLSAgICB9KSwKLSAgICB0ZW1w
bGF0ZTogRW1iZXIuSGFuZGxlYmFycy5jb21waWxlKCd7eyN2aWV3ICJ2aWV3LmlubmVyVmlld0Ns
YXNzIn19IGhpIHt7L3ZpZXd9fScpCi0gIH0pOwotCi0gIE15QXBwLk91dGVyVmlldy5jcmVhdGUo
KS5hcHBlbmRUbygnYm9keScpOwotICBgYGAKLQotICBXaWxsIHJlc3VsdCBpbiB0aGUgZm9sbG93
aW5nIEhUTUw6Ci0KLSAgYGBgaHRtbAotICA8ZGl2IGlkPSJlbWJlcjEiIGNsYXNzPSJlbWJlci12
aWV3Ij4KLSAgICA8ZGl2IGlkPSJlbWJlcjIiIGNsYXNzPSJlbWJlci12aWV3IGEtY3VzdG9tLXZp
ZXctY2xhc3MtYXMtcHJvcGVydHkiPgotICAgICAgaGkKLSAgICA8L2Rpdj4KLSAgPC9kaXY+Ci0g
IGBgYAotCi0gICMjIyBCbG9ja2xlc3MgdXNlCi0KLSAgSWYgeW91IHN1cHBseSBhIGN1c3RvbSBg
RW1iZXIuVmlld2Agc3ViY2xhc3MgdGhhdCBzcGVjaWZpZXMgaXRzIG93biB0ZW1wbGF0ZQotICBv
ciBwcm92aWRlIGEgYHRlbXBsYXRlTmFtZWAgb3B0aW9uIHRvIGB7e3ZpZXd9fWAgaXQgY2FuIGJl
IHVzZWQgd2l0aG91dAotICBzdXBwbHlpbmcgYSBibG9jay4gQXR0ZW1wdHMgdG8gdXNlIGJvdGgg
YSBgdGVtcGxhdGVOYW1lYCBvcHRpb24gYW5kIHN1cHBseSBhCi0gIGJsb2NrIHdpbGwgdGhyb3cg
YW4gZXJyb3IuCi0KLSAgYGBgaGFuZGxlYmFycwotICB7e3ZpZXcgIk15QXBwLlZpZXdXaXRoQVRl
bXBsYXRlRGVmaW5lZCJ9fQotICBgYGAKLQotICAjIyMgYHZpZXdOYW1lYCBwcm9wZXJ0eQotCi0g
IFlvdSBjYW4gc3VwcGx5IGEgYHZpZXdOYW1lYCBvcHRpb24gdG8gYHt7dmlld319YC4gVGhlIGBF
bWJlci5WaWV3YCBpbnN0YW5jZQotICB3aWxsIGJlIHJlZmVyZW5jZWQgYXMgYSBwcm9wZXJ0eSBv
ZiBpdHMgcGFyZW50IHZpZXcgYnkgdGhpcyBuYW1lLgotCi0gIGBgYGphdmFzY3JpcHQKLSAgYVZp
ZXcgPSBFbWJlci5WaWV3LmNyZWF0ZSh7Ci0gICAgdGVtcGxhdGU6IEVtYmVyLkhhbmRsZWJhcnMu
Y29tcGlsZSgne3sjdmlldyB2aWV3TmFtZT0iYUNoaWxkQnlOYW1lIn19IGhpIHt7L3ZpZXd9fScp
Ci0gIH0pOwotCi0gIGFWaWV3LmFwcGVuZFRvKCdib2R5Jyk7Ci0gIGFWaWV3LmdldCgnYUNoaWxk
QnlOYW1lJykgLy8gdGhlIGluc3RhbmNlIG9mIEVtYmVyLlZpZXcgY3JlYXRlZCBieSB7e3ZpZXd9
fSBoZWxwZXIKLSAgYGBgCi0KLSAgQG1ldGhvZCB2aWV3Ci0gIEBmb3IgRW1iZXIuSGFuZGxlYmFy
cy5oZWxwZXJzCi0gIEBwYXJhbSB7U3RyaW5nfSBwYXRoCi0gIEBwYXJhbSB7SGFzaH0gb3B0aW9u
cwotICBAcmV0dXJuIHtTdHJpbmd9IEhUTUwgc3RyaW5nCi0qLwotRW1iZXJIYW5kbGViYXJzLnJl
Z2lzdGVySGVscGVyKCd2aWV3JywgZnVuY3Rpb24gdmlld0hlbHBlcihwYXRoLCBvcHRpb25zKSB7
Ci0gIEVtYmVyLmFzc2VydCgiVGhlIHZpZXcgaGVscGVyIG9ubHkgdGFrZXMgYSBzaW5nbGUgYXJn
dW1lbnQiLCBhcmd1bWVudHMubGVuZ3RoIDw9IDIpOwotCi0gIC8vIElmIG5vIHBhdGggaXMgcHJv
dmlkZWQsIHRyZWF0IHBhdGggcGFyYW0gYXMgb3B0aW9ucy4KLSAgaWYgKHBhdGggJiYgcGF0aC5k
YXRhICYmIHBhdGguZGF0YS5pc1JlbmRlckRhdGEpIHsKLSAgICBvcHRpb25zID0gcGF0aDsKLSAg
ICBwYXRoID0gIkVtYmVyLlZpZXciOwotICB9Ci0KLSAgcmV0dXJuIEVtYmVySGFuZGxlYmFycy5W
aWV3SGVscGVyLmhlbHBlcih0aGlzLCBwYXRoLCBvcHRpb25zKTsKLX0pOwotCi0KLX0pKCk7Ci0K
LQotCi0oZnVuY3Rpb24oKSB7Ci0vLyBUT0RPOiBEb24ndCByZXF1aXJlIGFsbCBvZiB0aGlzIG1v
ZHVsZQotLyoqCi1AbW9kdWxlIGVtYmVyCi1Ac3VibW9kdWxlIGVtYmVyLWhhbmRsZWJhcnMKLSov
Ci0KLXZhciBnZXQgPSBFbWJlci5nZXQsIGhhbmRsZWJhcnNHZXQgPSBFbWJlci5IYW5kbGViYXJz
LmdldCwgZm10ID0gRW1iZXIuU3RyaW5nLmZtdDsKLQotLyoqCi0gIGB7e2NvbGxlY3Rpb259fWAg
aXMgYSBgRW1iZXIuSGFuZGxlYmFyc2AgaGVscGVyIGZvciBhZGRpbmcgaW5zdGFuY2VzIG9mCi0g
IGBFbWJlci5Db2xsZWN0aW9uVmlld2AgdG8gYSB0ZW1wbGF0ZS4gU2VlIFtFbWJlci5Db2xsZWN0
aW9uVmlld10oL2FwaS9jbGFzc2VzL0VtYmVyLkNvbGxlY3Rpb25WaWV3Lmh0bWwpCi0gICBmb3Ig
YWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiBob3cgYSBgQ29sbGVjdGlvblZpZXdgIGZ1bmN0aW9u
cy4KLQotICBge3tjb2xsZWN0aW9ufX1gJ3MgcHJpbWFyeSB1c2UgaXMgYXMgYSBibG9jayBoZWxw
ZXIgd2l0aCBhIGBjb250ZW50QmluZGluZ2AKLSAgb3B0aW9uIHBvaW50aW5nIHRvd2FyZHMgYW4g
YEVtYmVyLkFycmF5YC1jb21wYXRpYmxlIG9iamVjdC4gQW4gYEVtYmVyLlZpZXdgCi0gIGluc3Rh
bmNlIHdpbGwgYmUgY3JlYXRlZCBmb3IgZWFjaCBpdGVtIGluIGl0cyBgY29udGVudGAgcHJvcGVy
dHkuIEVhY2ggdmlldwotICB3aWxsIGhhdmUgaXRzIG93biBgY29udGVudGAgcHJvcGVydHkgc2V0
IHRvIHRoZSBhcHByb3ByaWF0ZSBpdGVtIGluIHRoZQotICBjb2xsZWN0aW9uLgotCi0gIFRoZSBw
cm92aWRlZCBibG9jayB3aWxsIGJlIGFwcGxpZWQgYXMgdGhlIHRlbXBsYXRlIGZvciBlYWNoIGl0
ZW0ncyB2aWV3LgotCi0gIEdpdmVuIGFuIGVtcHR5IGA8Ym9keT5gIHRoZSBmb2xsb3dpbmcgdGVt
cGxhdGU6Ci0KLSAgYGBgaGFuZGxlYmFycwotICB7eyNjb2xsZWN0aW9uIGNvbnRlbnRCaW5kaW5n
PSJBcHAuaXRlbXMifX0KLSAgICBIaSB7e3ZpZXcuY29udGVudC5uYW1lfX0KLSAge3svY29sbGVj
dGlvbn19Ci0gIGBgYAotCi0gIEFuZCB0aGUgZm9sbG93aW5nIGFwcGxpY2F0aW9uIGNvZGUKLQot
ICBgYGBqYXZhc2NyaXB0Ci0gIEFwcCA9IEVtYmVyLkFwcGxpY2F0aW9uLmNyZWF0ZSgpCi0gIEFw
cC5pdGVtcyA9IFsKLSAgICBFbWJlci5PYmplY3QuY3JlYXRlKHtuYW1lOiAnRGF2ZSd9KSwKLSAg
ICBFbWJlci5PYmplY3QuY3JlYXRlKHtuYW1lOiAnTWFyeSd9KSwKLSAgICBFbWJlci5PYmplY3Qu
Y3JlYXRlKHtuYW1lOiAnU2FyYSd9KQotICBdCi0gIGBgYAotCi0gIFdpbGwgcmVzdWx0IGluIHRo
ZSBIVE1MIHN0cnVjdHVyZSBiZWxvdwotCi0gIGBgYGh0bWwKLSAgPGRpdiBjbGFzcz0iZW1iZXIt
dmlldyI+Ci0gICAgPGRpdiBjbGFzcz0iZW1iZXItdmlldyI+SGkgRGF2ZTwvZGl2PgotICAgIDxk
aXYgY2xhc3M9ImVtYmVyLXZpZXciPkhpIE1hcnk8L2Rpdj4KLSAgICA8ZGl2IGNsYXNzPSJlbWJl
ci12aWV3Ij5IaSBTYXJhPC9kaXY+Ci0gIDwvZGl2PgotICBgYGAKLQotICAjIyMgQmxvY2tsZXNz
IFVzZQotCi0gIElmIHlvdSBwcm92aWRlIGFuIGBpdGVtVmlld0NsYXNzYCBvcHRpb24gdGhhdCBo
YXMgaXRzIG93biBgdGVtcGxhdGVgIHlvdSBjYW4KLSAgb21pdCB0aGUgYmxvY2suCi0KLSAgVGhl
IGZvbGxvd2luZyB0ZW1wbGF0ZToKLQotICBgYGBoYW5kbGViYXJzCi0gIHt7Y29sbGVjdGlvbiBj
b250ZW50QmluZGluZz0iQXBwLml0ZW1zIiBpdGVtVmlld0NsYXNzPSJBcHAuQW5JdGVtVmlldyJ9
fQotICBgYGAKLQotICBBbmQgYXBwbGljYXRpb24gY29kZQotCi0gIGBgYGphdmFzY3JpcHQKLSAg
QXBwID0gRW1iZXIuQXBwbGljYXRpb24uY3JlYXRlKCk7Ci0gIEFwcC5pdGVtcyA9IFsKLSAgICBF
bWJlci5PYmplY3QuY3JlYXRlKHtuYW1lOiAnRGF2ZSd9KSwKLSAgICBFbWJlci5PYmplY3QuY3Jl
YXRlKHtuYW1lOiAnTWFyeSd9KSwKLSAgICBFbWJlci5PYmplY3QuY3JlYXRlKHtuYW1lOiAnU2Fy
YSd9KQotICBdOwotCi0gIEFwcC5Bbkl0ZW1WaWV3ID0gRW1iZXIuVmlldy5leHRlbmQoewotICAg
IHRlbXBsYXRlOiBFbWJlci5IYW5kbGViYXJzLmNvbXBpbGUoIkdyZWV0aW5ncyB7e3ZpZXcuY29u
dGVudC5uYW1lfX0iKQotICB9KTsKLSAgYGBgCi0KLSAgV2lsbCByZXN1bHQgaW4gdGhlIEhUTUwg
c3RydWN0dXJlIGJlbG93Ci0KLSAgYGBgaHRtbAotICA8ZGl2IGNsYXNzPSJlbWJlci12aWV3Ij4K
LSAgICA8ZGl2IGNsYXNzPSJlbWJlci12aWV3Ij5HcmVldGluZ3MgRGF2ZTwvZGl2PgotICAgIDxk
aXYgY2xhc3M9ImVtYmVyLXZpZXciPkdyZWV0aW5ncyBNYXJ5PC9kaXY+Ci0gICAgPGRpdiBjbGFz
cz0iZW1iZXItdmlldyI+R3JlZXRpbmdzIFNhcmE8L2Rpdj4KLSAgPC9kaXY+Ci0gIGBgYAotCi0g
ICMjIyBTcGVjaWZ5aW5nIGEgQ29sbGVjdGlvblZpZXcgc3ViY2xhc3MKLQotICBCeSBkZWZhdWx0
IHRoZSBge3tjb2xsZWN0aW9ufX1gIGhlbHBlciB3aWxsIGNyZWF0ZSBhbiBpbnN0YW5jZSBvZgot
ICBgRW1iZXIuQ29sbGVjdGlvblZpZXdgLiBZb3UgY2FuIHN1cHBseSBhIGBFbWJlci5Db2xsZWN0
aW9uVmlld2Agc3ViY2xhc3MgdG8KLSAgdGhlIGhlbHBlciBieSBwYXNzaW5nIGl0IGFzIHRoZSBm
aXJzdCBhcmd1bWVudDoKLQotICBgYGBoYW5kbGViYXJzCi0gIHt7I2NvbGxlY3Rpb24gQXBwLk15
Q3VzdG9tQ29sbGVjdGlvbkNsYXNzIGNvbnRlbnRCaW5kaW5nPSJBcHAuaXRlbXMifX0KLSAgICBI
aSB7e3ZpZXcuY29udGVudC5uYW1lfX0KLSAge3svY29sbGVjdGlvbn19Ci0gIGBgYAotCi0gICMj
IyBGb3J3YXJkZWQgYGl0ZW0uKmAtbmFtZWQgT3B0aW9ucwotCi0gIEFzIHdpdGggdGhlIGB7e3Zp
ZXd9fWAsIGhlbHBlciBvcHRpb25zIHBhc3NlZCB0byB0aGUgYHt7Y29sbGVjdGlvbn19YCB3aWxs
IGJlCi0gIHNldCBvbiB0aGUgcmVzdWx0aW5nIGBFbWJlci5Db2xsZWN0aW9uVmlld2AgYXMgcHJv
cGVydGllcy4gQWRkaXRpb25hbGx5LAotICBvcHRpb25zIHByZWZpeGVkIHdpdGggYGl0ZW1gIHdp
bGwgYmUgYXBwbGllZCB0byB0aGUgdmlld3MgcmVuZGVyZWQgZm9yIGVhY2gKLSAgaXRlbSAobm90
ZSB0aGUgY2FtZWxjYXNpbmcpOgotCi0gIGBgYGhhbmRsZWJhcnMKLSAge3sjY29sbGVjdGlvbiBj
b250ZW50QmluZGluZz0iQXBwLml0ZW1zIgotICAgICAgICAgICAgICAgIGl0ZW1UYWdOYW1lPSJw
IgotICAgICAgICAgICAgICAgIGl0ZW1DbGFzc05hbWVzPSJncmVldGluZyJ9fQotICAgIEhvd2R5
IHt7dmlldy5jb250ZW50Lm5hbWV9fQotICB7ey9jb2xsZWN0aW9ufX0KLSAgYGBgCi0KLSAgV2ls
bCByZXN1bHQgaW4gdGhlIGZvbGxvd2luZyBIVE1MIHN0cnVjdHVyZToKLQotICBgYGBodG1sCi0g
IDxkaXYgY2xhc3M9ImVtYmVyLXZpZXciPgotICAgIDxwIGNsYXNzPSJlbWJlci12aWV3IGdyZWV0
aW5nIj5Ib3dkeSBEYXZlPC9wPgotICAgIDxwIGNsYXNzPSJlbWJlci12aWV3IGdyZWV0aW5nIj5I
b3dkeSBNYXJ5PC9wPgotICAgIDxwIGNsYXNzPSJlbWJlci12aWV3IGdyZWV0aW5nIj5Ib3dkeSBT
YXJhPC9wPgotICA8L2Rpdj4KLSAgYGBgCi0KLSAgQG1ldGhvZCBjb2xsZWN0aW9uCi0gIEBmb3Ig
RW1iZXIuSGFuZGxlYmFycy5oZWxwZXJzCi0gIEBwYXJhbSB7U3RyaW5nfSBwYXRoCi0gIEBwYXJh
bSB7SGFzaH0gb3B0aW9ucwotICBAcmV0dXJuIHtTdHJpbmd9IEhUTUwgc3RyaW5nCi0gIEBkZXBy
ZWNhdGVkIFVzZSBge3tlYWNofX1gIGhlbHBlciBpbnN0ZWFkLgotKi8KLUVtYmVyLkhhbmRsZWJh
cnMucmVnaXN0ZXJIZWxwZXIoJ2NvbGxlY3Rpb24nLCBmdW5jdGlvbiBjb2xsZWN0aW9uSGVscGVy
KHBhdGgsIG9wdGlvbnMpIHsKLSAgRW1iZXIuZGVwcmVjYXRlKCJVc2luZyB0aGUge3tjb2xsZWN0
aW9ufX0gaGVscGVyIHdpdGhvdXQgc3BlY2lmeWluZyBhIGNsYXNzIGhhcyBiZWVuIGRlcHJlY2F0
ZWQgYXMgdGhlIHt7ZWFjaH19IGhlbHBlciBub3cgc3VwcG9ydHMgdGhlIHNhbWUgZnVuY3Rpb25h
bGl0eS4iLCBwYXRoICE9PSAnY29sbGVjdGlvbicpOwotCi0gIC8vIElmIG5vIHBhdGggaXMgcHJv
dmlkZWQsIHRyZWF0IHBhdGggcGFyYW0gYXMgb3B0aW9ucy4KLSAgaWYgKHBhdGggJiYgcGF0aC5k
YXRhICYmIHBhdGguZGF0YS5pc1JlbmRlckRhdGEpIHsKLSAgICBvcHRpb25zID0gcGF0aDsKLSAg
ICBwYXRoID0gdW5kZWZpbmVkOwotICAgIEVtYmVyLmFzc2VydCgiWW91IGNhbm5vdCBwYXNzIG1v
cmUgdGhhbiBvbmUgYXJndW1lbnQgdG8gdGhlIGNvbGxlY3Rpb24gaGVscGVyIiwgYXJndW1lbnRz
Lmxlbmd0aCA9PT0gMSk7Ci0gIH0gZWxzZSB7Ci0gICAgRW1iZXIuYXNzZXJ0KCJZb3UgY2Fubm90
IHBhc3MgbW9yZSB0aGFuIG9uZSBhcmd1bWVudCB0byB0aGUgY29sbGVjdGlvbiBoZWxwZXIiLCBh
cmd1bWVudHMubGVuZ3RoID09PSAyKTsKLSAgfQotCi0gIHZhciBmbiA9IG9wdGlvbnMuZm47Ci0g
IHZhciBkYXRhID0gb3B0aW9ucy5kYXRhOwotICB2YXIgaW52ZXJzZSA9IG9wdGlvbnMuaW52ZXJz
ZTsKLSAgdmFyIHZpZXcgPSBvcHRpb25zLmRhdGEudmlldzsKLQotICAvLyBJZiBwYXNzZWQgYSBw
YXRoIHN0cmluZywgY29udmVydCB0aGF0IGludG8gYW4gb2JqZWN0LgotICAvLyBPdGhlcndpc2Us
IGp1c3QgZGVmYXVsdCB0byB0aGUgc3RhbmRhcmQgY2xhc3MuCi0gIHZhciBjb2xsZWN0aW9uQ2xh
c3M7Ci0gIGNvbGxlY3Rpb25DbGFzcyA9IHBhdGggPyBoYW5kbGViYXJzR2V0KHRoaXMsIHBhdGgs
IG9wdGlvbnMpIDogRW1iZXIuQ29sbGVjdGlvblZpZXc7Ci0gIEVtYmVyLmFzc2VydChmbXQoIiVA
ICNjb2xsZWN0aW9uOiBDb3VsZCBub3QgZmluZCBjb2xsZWN0aW9uIGNsYXNzICVAIiwgW2RhdGEu
dmlldywgcGF0aF0pLCAhIWNvbGxlY3Rpb25DbGFzcyk7Ci0KLSAgdmFyIGhhc2ggPSBvcHRpb25z
Lmhhc2gsIGl0ZW1IYXNoID0ge30sIG1hdGNoOwotCi0gIC8vIEV4dHJhY3QgaXRlbSB2aWV3IGNs
YXNzIGlmIHByb3ZpZGVkIGVsc2UgZGVmYXVsdCB0byB0aGUgc3RhbmRhcmQgY2xhc3MKLSAgdmFy
IGNvbGxlY3Rpb25Qcm90b3R5cGUgPSBjb2xsZWN0aW9uQ2xhc3MucHJvdG8oKSwKLSAgICAgIGl0
ZW1WaWV3Q2xhc3M7Ci0KLSAgaWYgKGhhc2guaXRlbVZpZXcpIHsKLSAgICB2YXIgY29udHJvbGxl
ciA9IGRhdGEua2V5d29yZHMuY29udHJvbGxlcjsKLSAgICBFbWJlci5hc3NlcnQoJ1lvdSBzcGVj
aWZpZWQgYW4gaXRlbVZpZXcsIGJ1dCB0aGUgY3VycmVudCBjb250ZXh0IGhhcyBubyAnICsKLSAg
ICAgICAgICAgICAgICAgJ2NvbnRhaW5lciB0byBsb29rIHRoZSBpdGVtVmlldyB1cCBpbi4gVGhp
cyBwcm9iYWJseSBtZWFucyAnICsKLSAgICAgICAgICAgICAgICAgJ3RoYXQgeW91IGNyZWF0ZWQg
YSB2aWV3IG1hbnVhbGx5LCBpbnN0ZWFkIG9mIHRocm91Z2ggdGhlICcgKwotICAgICAgICAgICAg
ICAgICAnY29udGFpbmVyLiBJbnN0ZWFkLCB1c2UgY29udGFpbmVyLmxvb2t1cCgidmlldzp2aWV3
TmFtZSIpLCAnICsKLSAgICAgICAgICAgICAgICAgJ3doaWNoIHdpbGwgcHJvcGVybHkgaW5zdGFu
dGlhdGUgeW91ciB2aWV3LicsCi0gICAgICAgICAgICAgICAgIGNvbnRyb2xsZXIgJiYgY29udHJv
bGxlci5jb250YWluZXIpOwotICAgIHZhciBjb250YWluZXIgPSBjb250cm9sbGVyLmNvbnRhaW5l
cjsKLSAgICBpdGVtVmlld0NsYXNzID0gY29udGFpbmVyLnJlc29sdmUoJ3ZpZXc6JyArIGhhc2gu
aXRlbVZpZXcpOwotICAgIEVtYmVyLmFzc2VydCgnWW91IHNwZWNpZmllZCB0aGUgaXRlbVZpZXcg
JyArIGhhc2guaXRlbVZpZXcgKyAiLCBidXQgaXQgd2FzICIgKwotICAgICAgICAgICAgICAgICAi
bm90IGZvdW5kIGF0ICIgKyBjb250YWluZXIuZGVzY3JpYmUoInZpZXc6IiArIGhhc2guaXRlbVZp
ZXcpICsKLSAgICAgICAgICAgICAgICAgIiAoYW5kIGl0IHdhcyBub3QgcmVnaXN0ZXJlZCBpbiB0
aGUgY29udGFpbmVyKSIsICEhaXRlbVZpZXdDbGFzcyk7Ci0gIH0gZWxzZSBpZiAoaGFzaC5pdGVt
Vmlld0NsYXNzKSB7Ci0gICAgaXRlbVZpZXdDbGFzcyA9IGhhbmRsZWJhcnNHZXQoY29sbGVjdGlv
blByb3RvdHlwZSwgaGFzaC5pdGVtVmlld0NsYXNzLCBvcHRpb25zKTsKLSAgfSBlbHNlIHsKLSAg
ICBpdGVtVmlld0NsYXNzID0gY29sbGVjdGlvblByb3RvdHlwZS5pdGVtVmlld0NsYXNzOwotICB9
Ci0KLSAgRW1iZXIuYXNzZXJ0KGZtdCgiJUAgI2NvbGxlY3Rpb246IENvdWxkIG5vdCBmaW5kIGl0
ZW1WaWV3Q2xhc3MgJUAiLCBbZGF0YS52aWV3LCBpdGVtVmlld0NsYXNzXSksICEhaXRlbVZpZXdD
bGFzcyk7Ci0KLSAgZGVsZXRlIGhhc2guaXRlbVZpZXdDbGFzczsKLSAgZGVsZXRlIGhhc2guaXRl
bVZpZXc7Ci0KLSAgLy8gR28gdGhyb3VnaCBvcHRpb25zIHBhc3NlZCB0byB0aGUge3tjb2xsZWN0
aW9ufX0gaGVscGVyIGFuZCBleHRyYWN0IG9wdGlvbnMKLSAgLy8gdGhhdCBjb25maWd1cmUgaXRl
bSB2aWV3cyBpbnN0ZWFkIG9mIHRoZSBjb2xsZWN0aW9uIGl0c2VsZi4KLSAgZm9yICh2YXIgcHJv
cCBpbiBoYXNoKSB7Ci0gICAgaWYgKGhhc2guaGFzT3duUHJvcGVydHkocHJvcCkpIHsKLSAgICAg
IG1hdGNoID0gcHJvcC5tYXRjaCgvXml0ZW0oLikoLiopJC8pOwotCi0gICAgICBpZiAobWF0Y2gg
JiYgcHJvcCAhPT0gJ2l0ZW1Db250cm9sbGVyJykgewotICAgICAgICAvLyBDb252ZXJ0IGl0ZW1T
aG91bGRGb28gLT4gc2hvdWxkRm9vCi0gICAgICAgIGl0ZW1IYXNoW21hdGNoWzFdLnRvTG93ZXJD
YXNlKCkgKyBtYXRjaFsyXV0gPSBoYXNoW3Byb3BdOwotICAgICAgICAvLyBEZWxldGUgZnJvbSBo
YXNoIGFzIHRoaXMgd2lsbCBlbmQgdXAgZ2V0dGluZyBwYXNzZWQgdG8gdGhlCi0gICAgICAgIC8v
IHt7dmlld319IGhlbHBlciBtZXRob2QuCi0gICAgICAgIGRlbGV0ZSBoYXNoW3Byb3BdOwotICAg
ICAgfQotICAgIH0KLSAgfQotCi0gIGlmIChmbikgewotICAgIGl0ZW1IYXNoLnRlbXBsYXRlID0g
Zm47Ci0gICAgZGVsZXRlIG9wdGlvbnMuZm47Ci0gIH0KLQotICB2YXIgZW1wdHlWaWV3Q2xhc3M7
Ci0gIGlmIChpbnZlcnNlICYmIGludmVyc2UgIT09IEVtYmVyLkhhbmRsZWJhcnMuVk0ubm9vcCkg
ewotICAgIGVtcHR5Vmlld0NsYXNzID0gZ2V0KGNvbGxlY3Rpb25Qcm90b3R5cGUsICdlbXB0eVZp
ZXdDbGFzcycpOwotICAgIGVtcHR5Vmlld0NsYXNzID0gZW1wdHlWaWV3Q2xhc3MuZXh0ZW5kKHsK
LSAgICAgICAgICB0ZW1wbGF0ZTogaW52ZXJzZSwKLSAgICAgICAgICB0YWdOYW1lOiBpdGVtSGFz
aC50YWdOYW1lCi0gICAgfSk7Ci0gIH0gZWxzZSBpZiAoaGFzaC5lbXB0eVZpZXdDbGFzcykgewot
ICAgIGVtcHR5Vmlld0NsYXNzID0gaGFuZGxlYmFyc0dldCh0aGlzLCBoYXNoLmVtcHR5Vmlld0Ns
YXNzLCBvcHRpb25zKTsKLSAgfQotICBpZiAoZW1wdHlWaWV3Q2xhc3MpIHsgaGFzaC5lbXB0eVZp
ZXcgPSBlbXB0eVZpZXdDbGFzczsgfQotCi0gIGlmICghaGFzaC5rZXl3b3JkKSB7Ci0gICAgaXRl
bUhhc2guX2NvbnRleHQgPSBFbWJlci5jb21wdXRlZC5hbGlhcygnY29udGVudCcpOwotICB9Ci0K
LSAgdmFyIHZpZXdPcHRpb25zID0gRW1iZXIuSGFuZGxlYmFycy5WaWV3SGVscGVyLnByb3BlcnRp
ZXNGcm9tSFRNTE9wdGlvbnMoeyBkYXRhOiBkYXRhLCBoYXNoOiBpdGVtSGFzaCB9LCB0aGlzKTsK
LSAgaGFzaC5pdGVtVmlld0NsYXNzID0gaXRlbVZpZXdDbGFzcy5leHRlbmQodmlld09wdGlvbnMp
OwotCi0gIHJldHVybiBFbWJlci5IYW5kbGViYXJzLmhlbHBlcnMudmlldy5jYWxsKHRoaXMsIGNv
bGxlY3Rpb25DbGFzcywgb3B0aW9ucyk7Ci19KTsKLQotCi19KSgpOwotCi0KLQotKGZ1bmN0aW9u
KCkgewotLypnbG9iYWxzIEhhbmRsZWJhcnMgKi8KLS8qKgotQG1vZHVsZSBlbWJlcgotQHN1Ym1v
ZHVsZSBlbWJlci1oYW5kbGViYXJzCi0qLwotCi12YXIgaGFuZGxlYmFyc0dldCA9IEVtYmVyLkhh
bmRsZWJhcnMuZ2V0OwotCi0vKioKLSAgYHVuYm91bmRgIGFsbG93cyB5b3UgdG8gb3V0cHV0IGEg
cHJvcGVydHkgd2l0aG91dCBiaW5kaW5nLiAqSW1wb3J0YW50OiogVGhlCi0gIG91dHB1dCB3aWxs
IG5vdCBiZSB1cGRhdGVkIGlmIHRoZSBwcm9wZXJ0eSBjaGFuZ2VzLiBVc2Ugd2l0aCBjYXV0aW9u
LgotCi0gIGBgYGhhbmRsZWJhcnMKLSAgPGRpdj57e3VuYm91bmQgc29tZVByb3BlcnR5VGhhdERv
ZXNudENoYW5nZX19PC9kaXY+Ci0gIGBgYAotCi0gIGB1bmJvdW5kYCBjYW4gYWxzbyBiZSB1c2Vk
IGluIGNvbmp1bmN0aW9uIHdpdGggYSBib3VuZCBoZWxwZXIgdG8KLSAgcmVuZGVyIGl0IGluIGl0
cyB1bmJvdW5kIGZvcm06Ci0KLSAgYGBgaGFuZGxlYmFycwotICA8ZGl2Pnt7dW5ib3VuZCBoZWxw
ZXJOYW1lIHNvbWVQcm9wZXJ0eVRoYXREb2VzbnRDaGFuZ2V9fTwvZGl2PgotICBgYGAKLQotICBA
bWV0aG9kIHVuYm91bmQKLSAgQGZvciBFbWJlci5IYW5kbGViYXJzLmhlbHBlcnMKLSAgQHBhcmFt
IHtTdHJpbmd9IHByb3BlcnR5Ci0gIEByZXR1cm4ge1N0cmluZ30gSFRNTCBzdHJpbmcKLSovCi1F
bWJlci5IYW5kbGViYXJzLnJlZ2lzdGVySGVscGVyKCd1bmJvdW5kJywgZnVuY3Rpb24gdW5ib3Vu
ZEhlbHBlcihwcm9wZXJ0eSwgZm4pIHsKLSAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHNbYXJndW1l
bnRzLmxlbmd0aCAtIDFdLCBoZWxwZXIsIGNvbnRleHQsIG91dDsKLQotICBpZiAoYXJndW1lbnRz
Lmxlbmd0aCA+IDIpIHsKLSAgICAvLyBVbmJvdW5kIGhlbHBlciBjYWxsLgotICAgIG9wdGlvbnMu
ZGF0YS5pc1VuYm91bmQgPSB0cnVlOwotICAgIGhlbHBlciA9IEVtYmVyLkhhbmRsZWJhcnMuaGVs
cGVyc1thcmd1bWVudHNbMF1dIHx8IEVtYmVyLkhhbmRsZWJhcnMuaGVscGVycy5oZWxwZXJNaXNz
aW5nOwotICAgIG91dCA9IGhlbHBlci5hcHBseSh0aGlzLCBBcnJheS5wcm90b3R5cGUuc2xpY2Uu
Y2FsbChhcmd1bWVudHMsIDEpKTsKLSAgICBkZWxldGUgb3B0aW9ucy5kYXRhLmlzVW5ib3VuZDsK
LSAgICByZXR1cm4gb3V0OwotICB9Ci0KLSAgY29udGV4dCA9IChmbi5jb250ZXh0cyAmJiBmbi5j
b250ZXh0cy5sZW5ndGgpID8gZm4uY29udGV4dHNbMF0gOiB0aGlzOwotICByZXR1cm4gaGFuZGxl
YmFyc0dldChjb250ZXh0LCBwcm9wZXJ0eSwgZm4pOwotfSk7Ci0KLX0pKCk7Ci0KLQotCi0oZnVu
Y3Rpb24oKSB7Ci0vKmpzaGludCBkZWJ1Zzp0cnVlKi8KLS8qKgotQG1vZHVsZSBlbWJlcgotQHN1
Ym1vZHVsZSBlbWJlci1oYW5kbGViYXJzCi0qLwotCi12YXIgZ2V0ID0gRW1iZXIuZ2V0LCBoYW5k
bGViYXJzR2V0ID0gRW1iZXIuSGFuZGxlYmFycy5nZXQsIG5vcm1hbGl6ZVBhdGggPSBFbWJlci5I
YW5kbGViYXJzLm5vcm1hbGl6ZVBhdGg7Ci0KLS8qKgotICBgbG9nYCBhbGxvd3MgeW91IHRvIG91
dHB1dCB0aGUgdmFsdWUgb2YgYSB2YXJpYWJsZSBpbiB0aGUgY3VycmVudCByZW5kZXJpbmcKLSAg
Y29udGV4dC4KLQotICBgYGBoYW5kbGViYXJzCi0gIHt7bG9nIG15VmFyaWFibGV9fQotICBgYGAK
LQotICBAbWV0aG9kIGxvZwotICBAZm9yIEVtYmVyLkhhbmRsZWJhcnMuaGVscGVycwotICBAcGFy
YW0ge1N0cmluZ30gcHJvcGVydHkKLSovCi1FbWJlci5IYW5kbGViYXJzLnJlZ2lzdGVySGVscGVy
KCdsb2cnLCBmdW5jdGlvbiBsb2dIZWxwZXIocHJvcGVydHksIG9wdGlvbnMpIHsKLSAgdmFyIGNv
bnRleHQgPSAob3B0aW9ucy5jb250ZXh0cyAmJiBvcHRpb25zLmNvbnRleHRzLmxlbmd0aCkgPyBv
cHRpb25zLmNvbnRleHRzWzBdIDogdGhpcywKLSAgICAgIG5vcm1hbGl6ZWQgPSBub3JtYWxpemVQ
YXRoKGNvbnRleHQsIHByb3BlcnR5LCBvcHRpb25zLmRhdGEpLAotICAgICAgcGF0aFJvb3QgPSBu
b3JtYWxpemVkLnJvb3QsCi0gICAgICBwYXRoID0gbm9ybWFsaXplZC5wYXRoLAotICAgICAgdmFs
dWUgPSAocGF0aCA9PT0gJ3RoaXMnKSA/IHBhdGhSb290IDogaGFuZGxlYmFyc0dldChwYXRoUm9v
dCwgcGF0aCwgb3B0aW9ucyk7Ci0gIEVtYmVyLkxvZ2dlci5sb2codmFsdWUpOwotfSk7Ci0KLS8q
KgotICBFeGVjdXRlIHRoZSBgZGVidWdnZXJgIHN0YXRlbWVudCBpbiB0aGUgY3VycmVudCBjb250
ZXh0LgotCi0gIGBgYGhhbmRsZWJhcnMKLSAge3tkZWJ1Z2dlcn19Ci0gIGBgYAotCi0gIEJlZm9y
ZSBpbnZva2luZyB0aGUgYGRlYnVnZ2VyYCBzdGF0ZW1lbnQsIHRoZXJlCi0gIGFyZSBhIGZldyBo
ZWxwZnVsIHZhcmlhYmxlcyBkZWZpbmVkIGluIHRoZQotICBib2R5IG9mIHRoaXMgaGVscGVyIHRo
YXQgeW91IGNhbiBpbnNwZWN0IHdoaWxlCi0gIGRlYnVnZ2luZyB0aGF0IGRlc2NyaWJlIGhvdyBh
bmQgd2hlcmUgdGhpcwotICBoZWxwZXIgd2FzIGludm9rZWQ6Ci0KLSAgLSB0ZW1wbGF0ZUNvbnRl
eHQ6IHRoaXMgaXMgbW9zdCBsaWtlbHkgYSBjb250cm9sbGVyCi0gICAgZnJvbSB3aGljaCB0aGlz
IHRlbXBsYXRlIGxvb2tzIHVwIC8gZGlzcGxheXMgcHJvcGVydGllcwotICAtIHR5cGVPZlRlbXBs
YXRlQ29udGV4dDogYSBzdHJpbmcgZGVzY3JpcHRpb24gb2YKLSAgICB3aGF0IHRoZSB0ZW1wbGF0
ZUNvbnRleHQgaXMKLQotICBGb3IgZXhhbXBsZSwgaWYgeW91J3JlIHdvbmRlcmluZyB3aHkgYSB2
YWx1ZSBge3tmb299fWAKLSAgaXNuJ3QgcmVuZGVyaW5nIGFzIGV4cGVjdGVkIHdpdGhpbiBhIHRl
bXBsYXRlLCB5b3UKLSAgY291bGQgcGxhY2UgYSBge3tkZWJ1Z2dlcn19YCBzdGF0ZW1lbnQsIGFu
ZCB3aGVuCi0gIHRoZSBgZGVidWdnZXI7YCBicmVha3BvaW50IGlzIGhpdCwgeW91IGNhbiBpbnNw
ZWN0Ci0gIGB0ZW1wbGF0ZUNvbnRleHRgLCBkZXRlcm1pbmUgaWYgaXQncyB0aGUgb2JqZWN0IHlv
dQotICBleHBlY3QsIGFuZC9vciBldmFsdWF0ZSBleHByZXNzaW9ucyBpbiB0aGUgY29uc29sZQot
ICB0byBwZXJmb3JtIHByb3BlcnR5IGxvb2t1cHMgb24gdGhlIGB0ZW1wbGF0ZUNvbnRleHRgOgot
Ci0gIGBgYAotICAgID4gdGVtcGxhdGVDb250ZXh0LmdldCgnZm9vJykgLy8gLT4gIjx2YWx1ZSBv
ZiB7e2Zvb319PiIKLSAgYGBgCi0KLSAgQG1ldGhvZCBkZWJ1Z2dlcgotICBAZm9yIEVtYmVyLkhh
bmRsZWJhcnMuaGVscGVycwotICBAcGFyYW0ge1N0cmluZ30gcHJvcGVydHkKLSovCi1FbWJlci5I
YW5kbGViYXJzLnJlZ2lzdGVySGVscGVyKCdkZWJ1Z2dlcicsIGZ1bmN0aW9uIGRlYnVnZ2VySGVs
cGVyKG9wdGlvbnMpIHsKLQotICAvLyBUaGVzZSBhcmUgaGVscGZ1bCB2YWx1ZXMgeW91IGNhbiBp
bnNwZWN0IHdoaWxlIGRlYnVnZ2luZy4KLSAgdmFyIHRlbXBsYXRlQ29udGV4dCA9IHRoaXM7Ci0g
IHZhciB0eXBlT2ZUZW1wbGF0ZUNvbnRleHQgPSBFbWJlci5pbnNwZWN0KHRlbXBsYXRlQ29udGV4
dCk7Ci0KLSAgZGVidWdnZXI7Ci19KTsKLQotCi0KLX0pKCk7Ci0KLQotCi0oZnVuY3Rpb24oKSB7
Ci0vKioKLUBtb2R1bGUgZW1iZXIKLUBzdWJtb2R1bGUgZW1iZXItaGFuZGxlYmFycwotKi8KLQot
dmFyIGdldCA9IEVtYmVyLmdldCwgc2V0ID0gRW1iZXIuc2V0OwotCi1FbWJlci5IYW5kbGViYXJz
LkVhY2hWaWV3ID0gRW1iZXIuQ29sbGVjdGlvblZpZXcuZXh0ZW5kKEVtYmVyLl9NZXRhbW9ycGgs
IHsKLSAgaW5pdDogZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGl0ZW1Db250cm9sbGVyID0gZ2V0KHRo
aXMsICdpdGVtQ29udHJvbGxlcicpOwotICAgIHZhciBiaW5kaW5nOwotCi0gICAgaWYgKGl0ZW1D
b250cm9sbGVyKSB7Ci0gICAgICB2YXIgY29udHJvbGxlciA9IGdldCh0aGlzLCAnY29udHJvbGxl
ci5jb250YWluZXInKS5sb29rdXBGYWN0b3J5KCdjb250cm9sbGVyOmFycmF5JykuY3JlYXRlKHsK
LSAgICAgICAgcGFyZW50Q29udHJvbGxlcjogZ2V0KHRoaXMsICdjb250cm9sbGVyJyksCi0gICAg
ICAgIGl0ZW1Db250cm9sbGVyOiBpdGVtQ29udHJvbGxlciwKLSAgICAgICAgdGFyZ2V0OiBnZXQo
dGhpcywgJ2NvbnRyb2xsZXInKSwKLSAgICAgICAgX2VhY2hWaWV3OiB0aGlzCi0gICAgICB9KTsK
LQotICAgICAgdGhpcy5kaXNhYmxlQ29udGVudE9ic2VydmVycyhmdW5jdGlvbigpIHsKLSAgICAg
ICAgc2V0KHRoaXMsICdjb250ZW50JywgY29udHJvbGxlcik7Ci0gICAgICAgIGJpbmRpbmcgPSBu
ZXcgRW1iZXIuQmluZGluZygnY29udGVudCcsICdfZWFjaFZpZXcuZGF0YVNvdXJjZScpLm9uZVdh
eSgpOwotICAgICAgICBiaW5kaW5nLmNvbm5lY3QoY29udHJvbGxlcik7Ci0gICAgICB9KTsKLQot
ICAgICAgc2V0KHRoaXMsICdfYXJyYXlDb250cm9sbGVyJywgY29udHJvbGxlcik7Ci0gICAgfSBl
bHNlIHsKLSAgICAgIHRoaXMuZGlzYWJsZUNvbnRlbnRPYnNlcnZlcnMoZnVuY3Rpb24oKSB7Ci0g
ICAgICAgIGJpbmRpbmcgPSBuZXcgRW1iZXIuQmluZGluZygnY29udGVudCcsICdkYXRhU291cmNl
Jykub25lV2F5KCk7Ci0gICAgICAgIGJpbmRpbmcuY29ubmVjdCh0aGlzKTsKLSAgICAgIH0pOwot
ICAgIH0KLQotICAgIHJldHVybiB0aGlzLl9zdXBlcigpOwotICB9LAotCi0gIF9hc3NlcnRBcnJh
eUxpa2U6IGZ1bmN0aW9uKGNvbnRlbnQpIHsKLSAgICBFbWJlci5hc3NlcnQoIlRoZSB2YWx1ZSB0
aGF0ICNlYWNoIGxvb3BzIG92ZXIgbXVzdCBiZSBhbiBBcnJheS4gWW91IHBhc3NlZCAiICsgY29u
dGVudC5jb25zdHJ1Y3RvciArICIsIGJ1dCBpdCBzaG91bGQgaGF2ZSBiZWVuIGFuIEFycmF5Q29u
dHJvbGxlciIsICFFbWJlci5Db250cm9sbGVyTWl4aW4uZGV0ZWN0KGNvbnRlbnQpIHx8IChjb250
ZW50ICYmIGNvbnRlbnQuaXNHZW5lcmF0ZWQpIHx8IGNvbnRlbnQgaW5zdGFuY2VvZiBFbWJlci5B
cnJheUNvbnRyb2xsZXIpOwotICAgIEVtYmVyLmFzc2VydCgiVGhlIHZhbHVlIHRoYXQgI2VhY2gg
bG9vcHMgb3ZlciBtdXN0IGJlIGFuIEFycmF5LiBZb3UgcGFzc2VkICIgKyAoKEVtYmVyLkNvbnRy
b2xsZXJNaXhpbi5kZXRlY3QoY29udGVudCkgJiYgY29udGVudC5nZXQoJ21vZGVsJykgIT09IHVu
ZGVmaW5lZCkgPyAoIiIgKyBjb250ZW50LmdldCgnbW9kZWwnKSArICIgKHdyYXBwZWQgaW4gIiAr
IGNvbnRlbnQgKyAiKSIpIDogKCIiICsgY29udGVudCkpLCBFbWJlci5BcnJheS5kZXRlY3QoY29u
dGVudCkpOwotICB9LAotCi0gIGRpc2FibGVDb250ZW50T2JzZXJ2ZXJzOiBmdW5jdGlvbihjYWxs
YmFjaykgewotICAgIEVtYmVyLnJlbW92ZUJlZm9yZU9ic2VydmVyKHRoaXMsICdjb250ZW50Jywg
bnVsbCwgJ19jb250ZW50V2lsbENoYW5nZScpOwotICAgIEVtYmVyLnJlbW92ZU9ic2VydmVyKHRo
aXMsICdjb250ZW50JywgbnVsbCwgJ19jb250ZW50RGlkQ2hhbmdlJyk7Ci0KLSAgICBjYWxsYmFj
ay5jYWxsKHRoaXMpOwotCi0gICAgRW1iZXIuYWRkQmVmb3JlT2JzZXJ2ZXIodGhpcywgJ2NvbnRl
bnQnLCBudWxsLCAnX2NvbnRlbnRXaWxsQ2hhbmdlJyk7Ci0gICAgRW1iZXIuYWRkT2JzZXJ2ZXIo
dGhpcywgJ2NvbnRlbnQnLCBudWxsLCAnX2NvbnRlbnREaWRDaGFuZ2UnKTsKLSAgfSwKLQotICBp
dGVtVmlld0NsYXNzOiBFbWJlci5fTWV0YW1vcnBoVmlldywKLSAgZW1wdHlWaWV3Q2xhc3M6IEVt
YmVyLl9NZXRhbW9ycGhWaWV3LAotCi0gIGNyZWF0ZUNoaWxkVmlldzogZnVuY3Rpb24odmlldywg
YXR0cnMpIHsKLSAgICB2aWV3ID0gdGhpcy5fc3VwZXIodmlldywgYXR0cnMpOwotCi0gICAgLy8g
QXQgdGhlIG1vbWVudCwgaWYgYSBjb250YWluZXIgdmlldyBzdWJjbGFzcyB3YW50cwotICAgIC8v
IHRvIGluc2VydCBrZXl3b3JkcywgaXQgaXMgcmVzcG9uc2libGUgZm9yIGNsb25pbmcKLSAgICAv
LyB0aGUga2V5d29yZHMgaGFzaC4gVGhpcyB3aWxsIGJlIGZpeGVkIG1vbWVudGFyaWx5LgotICAg
IHZhciBrZXl3b3JkID0gZ2V0KHRoaXMsICdrZXl3b3JkJyk7Ci0gICAgdmFyIGNvbnRlbnQgPSBn
ZXQodmlldywgJ2NvbnRlbnQnKTsKLQotICAgIGlmIChrZXl3b3JkKSB7Ci0gICAgICB2YXIgZGF0
YSA9IGdldCh2aWV3LCAndGVtcGxhdGVEYXRhJyk7Ci0KLSAgICAgIGRhdGEgPSBFbWJlci5jb3B5
KGRhdGEpOwotICAgICAgZGF0YS5rZXl3b3JkcyA9IHZpZXcuY2xvbmVLZXl3b3JkcygpOwotICAg
ICAgc2V0KHZpZXcsICd0ZW1wbGF0ZURhdGEnLCBkYXRhKTsKLQotICAgICAgLy8gSW4gdGhpcyBj
YXNlLCB3ZSBkbyBub3QgYmluZCwgYmVjYXVzZSB0aGUgYGNvbnRlbnRgIG9mCi0gICAgICAvLyBh
ICNlYWNoIGl0ZW0gY2Fubm90IGNoYW5nZS4KLSAgICAgIGRhdGEua2V5d29yZHNba2V5d29yZF0g
PSBjb250ZW50OwotICAgIH0KLQotICAgIC8vIElmIHt7I2VhY2h9fSBpcyBsb29waW5nIG92ZXIg
YW4gYXJyYXkgb2YgY29udHJvbGxlcnMsCi0gICAgLy8gcG9pbnQgZWFjaCBjaGlsZCB2aWV3IGF0
IHRoZWlyIHJlc3BlY3RpdmUgY29udHJvbGxlci4KLSAgICBpZiAoY29udGVudCAmJiBnZXQoY29u
dGVudCwgJ2lzQ29udHJvbGxlcicpKSB7Ci0gICAgICBzZXQodmlldywgJ2NvbnRyb2xsZXInLCBj
b250ZW50KTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdmlldzsKLSAgfSwKLQotICBkZXN0cm95OiBm
dW5jdGlvbigpIHsKLSAgICBpZiAoIXRoaXMuX3N1cGVyKCkpIHsgcmV0dXJuOyB9Ci0KLSAgICB2
YXIgYXJyYXlDb250cm9sbGVyID0gZ2V0KHRoaXMsICdfYXJyYXlDb250cm9sbGVyJyk7Ci0KLSAg
ICBpZiAoYXJyYXlDb250cm9sbGVyKSB7Ci0gICAgICBhcnJheUNvbnRyb2xsZXIuZGVzdHJveSgp
OwotICAgIH0KLQotICAgIHJldHVybiB0aGlzOwotICB9Ci19KTsKLQotdmFyIEdyb3VwZWRFYWNo
ID0gRW1iZXIuSGFuZGxlYmFycy5Hcm91cGVkRWFjaCA9IGZ1bmN0aW9uKGNvbnRleHQsIHBhdGgs
IG9wdGlvbnMpIHsKLSAgdmFyIHNlbGYgPSB0aGlzLAotICAgICAgbm9ybWFsaXplZCA9IEVtYmVy
LkhhbmRsZWJhcnMubm9ybWFsaXplUGF0aChjb250ZXh0LCBwYXRoLCBvcHRpb25zLmRhdGEpOwot
Ci0gIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7Ci0gIHRoaXMucGF0aCA9IHBhdGg7Ci0gIHRoaXMu
b3B0aW9ucyA9IG9wdGlvbnM7Ci0gIHRoaXMudGVtcGxhdGUgPSBvcHRpb25zLmZuOwotICB0aGlz
LmNvbnRhaW5pbmdWaWV3ID0gb3B0aW9ucy5kYXRhLnZpZXc7Ci0gIHRoaXMubm9ybWFsaXplZFJv
b3QgPSBub3JtYWxpemVkLnJvb3Q7Ci0gIHRoaXMubm9ybWFsaXplZFBhdGggPSBub3JtYWxpemVk
LnBhdGg7Ci0gIHRoaXMuY29udGVudCA9IHRoaXMubG9va3VwQ29udGVudCgpOwotCi0gIHRoaXMu
YWRkQ29udGVudE9ic2VydmVycygpOwotICB0aGlzLmFkZEFycmF5T2JzZXJ2ZXJzKCk7Ci0KLSAg
dGhpcy5jb250YWluaW5nVmlldy5vbignd2lsbENsZWFyUmVuZGVyJywgZnVuY3Rpb24oKSB7Ci0g
ICAgc2VsZi5kZXN0cm95KCk7Ci0gIH0pOwotfTsKLQotR3JvdXBlZEVhY2gucHJvdG90eXBlID0g
ewotICBjb250ZW50V2lsbENoYW5nZTogZnVuY3Rpb24oKSB7Ci0gICAgdGhpcy5yZW1vdmVBcnJh
eU9ic2VydmVycygpOwotICB9LAotCi0gIGNvbnRlbnREaWRDaGFuZ2U6IGZ1bmN0aW9uKCkgewot
ICAgIHRoaXMuY29udGVudCA9IHRoaXMubG9va3VwQ29udGVudCgpOwotICAgIHRoaXMuYWRkQXJy
YXlPYnNlcnZlcnMoKTsKLSAgICB0aGlzLnJlcmVuZGVyQ29udGFpbmluZ1ZpZXcoKTsKLSAgfSwK
LQotICBjb250ZW50QXJyYXlXaWxsQ2hhbmdlOiBFbWJlci5LLAotCi0gIGNvbnRlbnRBcnJheURp
ZENoYW5nZTogZnVuY3Rpb24oKSB7Ci0gICAgdGhpcy5yZXJlbmRlckNvbnRhaW5pbmdWaWV3KCk7
Ci0gIH0sCi0KLSAgbG9va3VwQ29udGVudDogZnVuY3Rpb24oKSB7Ci0gICAgcmV0dXJuIEVtYmVy
LkhhbmRsZWJhcnMuZ2V0KHRoaXMubm9ybWFsaXplZFJvb3QsIHRoaXMubm9ybWFsaXplZFBhdGgs
IHRoaXMub3B0aW9ucyk7Ci0gIH0sCi0KLSAgYWRkQXJyYXlPYnNlcnZlcnM6IGZ1bmN0aW9uKCkg
ewotICAgIGlmICghdGhpcy5jb250ZW50KSB7IHJldHVybjsgfQotCi0gICAgdGhpcy5jb250ZW50
LmFkZEFycmF5T2JzZXJ2ZXIodGhpcywgewotICAgICAgd2lsbENoYW5nZTogJ2NvbnRlbnRBcnJh
eVdpbGxDaGFuZ2UnLAotICAgICAgZGlkQ2hhbmdlOiAnY29udGVudEFycmF5RGlkQ2hhbmdlJwot
ICAgIH0pOwotICB9LAotCi0gIHJlbW92ZUFycmF5T2JzZXJ2ZXJzOiBmdW5jdGlvbigpIHsKLSAg
ICBpZiAoIXRoaXMuY29udGVudCkgeyByZXR1cm47IH0KLQotICAgIHRoaXMuY29udGVudC5yZW1v
dmVBcnJheU9ic2VydmVyKHRoaXMsIHsKLSAgICAgIHdpbGxDaGFuZ2U6ICdjb250ZW50QXJyYXlX
aWxsQ2hhbmdlJywKLSAgICAgIGRpZENoYW5nZTogJ2NvbnRlbnRBcnJheURpZENoYW5nZScKLSAg
ICB9KTsKLSAgfSwKLQotICBhZGRDb250ZW50T2JzZXJ2ZXJzOiBmdW5jdGlvbigpIHsKLSAgICBF
bWJlci5hZGRCZWZvcmVPYnNlcnZlcih0aGlzLm5vcm1hbGl6ZWRSb290LCB0aGlzLm5vcm1hbGl6
ZWRQYXRoLCB0aGlzLCB0aGlzLmNvbnRlbnRXaWxsQ2hhbmdlKTsKLSAgICBFbWJlci5hZGRPYnNl
cnZlcih0aGlzLm5vcm1hbGl6ZWRSb290LCB0aGlzLm5vcm1hbGl6ZWRQYXRoLCB0aGlzLCB0aGlz
LmNvbnRlbnREaWRDaGFuZ2UpOwotICB9LAotCi0gIHJlbW92ZUNvbnRlbnRPYnNlcnZlcnM6IGZ1
bmN0aW9uKCkgewotICAgIEVtYmVyLnJlbW92ZUJlZm9yZU9ic2VydmVyKHRoaXMubm9ybWFsaXpl
ZFJvb3QsIHRoaXMubm9ybWFsaXplZFBhdGgsIHRoaXMuY29udGVudFdpbGxDaGFuZ2UpOwotICAg
IEVtYmVyLnJlbW92ZU9ic2VydmVyKHRoaXMubm9ybWFsaXplZFJvb3QsIHRoaXMubm9ybWFsaXpl
ZFBhdGgsIHRoaXMuY29udGVudERpZENoYW5nZSk7Ci0gIH0sCi0KLSAgcmVuZGVyOiBmdW5jdGlv
bigpIHsKLSAgICBpZiAoIXRoaXMuY29udGVudCkgeyByZXR1cm47IH0KLQotICAgIHZhciBjb250
ZW50ID0gdGhpcy5jb250ZW50LAotICAgICAgICBjb250ZW50TGVuZ3RoID0gZ2V0KGNvbnRlbnQs
ICdsZW5ndGgnKSwKLSAgICAgICAgZGF0YSA9IHRoaXMub3B0aW9ucy5kYXRhLAotICAgICAgICB0
ZW1wbGF0ZSA9IHRoaXMudGVtcGxhdGU7Ci0KLSAgICBkYXRhLmluc2lkZUVhY2ggPSB0cnVlOwot
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29udGVudExlbmd0aDsgaSsrKSB7Ci0gICAgICB0ZW1w
bGF0ZShjb250ZW50Lm9iamVjdEF0KGkpLCB7IGRhdGE6IGRhdGEgfSk7Ci0gICAgfQotICB9LAot
Ci0gIHJlcmVuZGVyQ29udGFpbmluZ1ZpZXc6IGZ1bmN0aW9uKCkgewotICAgIHZhciBzZWxmID0g
dGhpczsKLSAgICBFbWJlci5ydW4uc2NoZWR1bGVPbmNlKCdyZW5kZXInLCB0aGlzLCBmdW5jdGlv
bigpIHsKLSAgICAgIC8vIEl0J3MgcG9zc2libGUgaXQncyBiZWVuIGRlc3Ryb3llZCBhZnRlciB3
ZSBlbnF1ZXVlZCBhIHJlLXJlbmRlciBjYWxsLgotICAgICAgaWYgKCFzZWxmLmRlc3Ryb3llZCkg
ewotICAgICAgICBzZWxmLmNvbnRhaW5pbmdWaWV3LnJlcmVuZGVyKCk7Ci0gICAgICB9Ci0gICAg
fSk7Ci0gIH0sCi0KLSAgZGVzdHJveTogZnVuY3Rpb24oKSB7Ci0gICAgdGhpcy5yZW1vdmVDb250
ZW50T2JzZXJ2ZXJzKCk7Ci0gICAgaWYgKHRoaXMuY29udGVudCkgewotICAgICAgdGhpcy5yZW1v
dmVBcnJheU9ic2VydmVycygpOwotICAgIH0KLSAgICB0aGlzLmRlc3Ryb3llZCA9IHRydWU7Ci0g
IH0KLX07Ci0KLS8qKgotICBUaGUgYHt7I2VhY2h9fWAgaGVscGVyIGxvb3BzIG92ZXIgZWxlbWVu
dHMgaW4gYSBjb2xsZWN0aW9uLCByZW5kZXJpbmcgaXRzCi0gIGJsb2NrIG9uY2UgZm9yIGVhY2gg
aXRlbS4gSXQgaXMgYW4gZXh0ZW5zaW9uIG9mIHRoZSBiYXNlIEhhbmRsZWJhcnMgYHt7I2VhY2h9
fWAKLSAgaGVscGVyOgotCi0gIGBgYGphdmFzY3JpcHQKLSAgRGV2ZWxvcGVycyA9IFt7bmFtZTog
J1llaHVkYSd9LHtuYW1lOiAnVG9tJ30sIHtuYW1lOiAnUGF1bCd9XTsKLSAgYGBgCi0KLSAgYGBg
aGFuZGxlYmFycwotICB7eyNlYWNoIERldmVsb3BlcnN9fQotICAgIHt7bmFtZX19Ci0gIHt7L2Vh
Y2h9fQotICBgYGAKLQotICBge3tlYWNofX1gIHN1cHBvcnRzIGFuIGFsdGVybmF0aXZlIHN5bnRh
eCB3aXRoIGVsZW1lbnQgbmFtaW5nOgotCi0gIGBgYGhhbmRsZWJhcnMKLSAge3sjZWFjaCBwZXJz
b24gaW4gRGV2ZWxvcGVyc319Ci0gICAge3twZXJzb24ubmFtZX19Ci0gIHt7L2VhY2h9fQotICBg
YGAKLQotICBXaGVuIGxvb3Bpbmcgb3ZlciBvYmplY3RzIHRoYXQgZG8gbm90IGhhdmUgcHJvcGVy
dGllcywgYHt7dGhpc319YCBjYW4gYmUgdXNlZAotICB0byByZW5kZXIgdGhlIG9iamVjdDoKLQot
ICBgYGBqYXZhc2NyaXB0Ci0gIERldmVsb3Blck5hbWVzID0gWydZZWh1ZGEnLCAnVG9tJywgJ1Bh
dWwnXQotICBgYGAKLQotICBgYGBoYW5kbGViYXJzCi0gIHt7I2VhY2ggRGV2ZWxvcGVyTmFtZXN9
fQotICAgIHt7dGhpc319Ci0gIHt7L2VhY2h9fQotICBgYGAKLSAgIyMjIHt7ZWxzZX19IGNvbmRp
dGlvbgotICBge3sjZWFjaH19YCBjYW4gaGF2ZSBhIG1hdGNoaW5nIGB7e2Vsc2V9fWAuIFRoZSBj
b250ZW50cyBvZiB0aGlzIGJsb2NrIHdpbGwgcmVuZGVyCi0gIGlmIHRoZSBjb2xsZWN0aW9uIGlz
IGVtcHR5LgotCi0gIGBgYAotICB7eyNlYWNoIHBlcnNvbiBpbiBEZXZlbG9wZXJzfX0KLSAgICB7
e3BlcnNvbi5uYW1lfX0KLSAge3tlbHNlfX0KLSAgICA8cD5Tb3JyeSwgbm9ib2R5IGlzIGF2YWls
YWJsZSBmb3IgdGhpcyB0YXNrLjwvcD4KLSAge3svZWFjaH19Ci0gIGBgYAotICAjIyMgU3BlY2lm
eWluZyBhIFZpZXcgY2xhc3MgZm9yIGl0ZW1zCi0gIElmIHlvdSBwcm92aWRlIGFuIGBpdGVtVmll
d0NsYXNzYCBvcHRpb24gdGhhdCByZWZlcmVuY2VzIGEgdmlldyBjbGFzcwotICB3aXRoIGl0cyBv
d24gYHRlbXBsYXRlYCB5b3UgY2FuIG9taXQgdGhlIGJsb2NrLgotCi0gIFRoZSBmb2xsb3dpbmcg
dGVtcGxhdGU6Ci0KLSAgYGBgaGFuZGxlYmFycwotICB7eyN2aWV3IEFwcC5NeVZpZXcgfX0KLSAg
ICB7e2VhY2ggdmlldy5pdGVtcyBpdGVtVmlld0NsYXNzPSJBcHAuQW5JdGVtVmlldyJ9fQotICB7
ey92aWV3fX0KLSAgYGBgCi0KLSAgQW5kIGFwcGxpY2F0aW9uIGNvZGUKLQotICBgYGBqYXZhc2Ny
aXB0Ci0gIEFwcCA9IEVtYmVyLkFwcGxpY2F0aW9uLmNyZWF0ZSh7Ci0gICAgTXlWaWV3OiBFbWJl
ci5WaWV3LmV4dGVuZCh7Ci0gICAgICBpdGVtczogWwotICAgICAgICBFbWJlci5PYmplY3QuY3Jl
YXRlKHtuYW1lOiAnRGF2ZSd9KSwKLSAgICAgICAgRW1iZXIuT2JqZWN0LmNyZWF0ZSh7bmFtZTog
J01hcnknfSksCi0gICAgICAgIEVtYmVyLk9iamVjdC5jcmVhdGUoe25hbWU6ICdTYXJhJ30pCi0g
ICAgICBdCi0gICAgfSkKLSAgfSk7Ci0KLSAgQXBwLkFuSXRlbVZpZXcgPSBFbWJlci5WaWV3LmV4
dGVuZCh7Ci0gICAgdGVtcGxhdGU6IEVtYmVyLkhhbmRsZWJhcnMuY29tcGlsZSgiR3JlZXRpbmdz
IHt7bmFtZX19IikKLSAgfSk7Ci0gIGBgYAotCi0gIFdpbGwgcmVzdWx0IGluIHRoZSBIVE1MIHN0
cnVjdHVyZSBiZWxvdwotCi0gIGBgYGh0bWwKLSAgPGRpdiBjbGFzcz0iZW1iZXItdmlldyI+Ci0g
ICAgPGRpdiBjbGFzcz0iZW1iZXItdmlldyI+R3JlZXRpbmdzIERhdmU8L2Rpdj4KLSAgICA8ZGl2
IGNsYXNzPSJlbWJlci12aWV3Ij5HcmVldGluZ3MgTWFyeTwvZGl2PgotICAgIDxkaXYgY2xhc3M9
ImVtYmVyLXZpZXciPkdyZWV0aW5ncyBTYXJhPC9kaXY+Ci0gIDwvZGl2PgotICBgYGAKLQotICBJ
ZiBhbiBgaXRlbVZpZXdDbGFzc2AgaXMgZGVmaW5lZCBvbiB0aGUgaGVscGVyLCBhbmQgdGhlcmVm
b3JlIHRoZSBoZWxwZXIgaXMgbm90Ci0gIGJlaW5nIHVzZWQgYXMgYSBibG9jaywgYW4gYGVtcHR5
Vmlld0NsYXNzYCBjYW4gYWxzbyBiZSBwcm92aWRlZCBvcHRpb25hbGx5LgotICBUaGUgYGVtcHR5
Vmlld0NsYXNzYCB3aWxsIG1hdGNoIHRoZSBiZWhhdmlvciBvZiB0aGUgYHt7ZWxzZX19YCBjb25k
aXRpb24KLSAgZGVzY3JpYmVkIGFib3ZlLiBUaGF0IGlzLCB0aGUgYGVtcHR5Vmlld0NsYXNzYCB3
aWxsIHJlbmRlciBpZiB0aGUgY29sbGVjdGlvbgotICBpcyBlbXB0eS4KLQotICAjIyMgUmVwcmVz
ZW50aW5nIGVhY2ggaXRlbSB3aXRoIGEgQ29udHJvbGxlci4KLSAgQnkgZGVmYXVsdCB0aGUgY29u
dHJvbGxlciBsb29rdXAgd2l0aGluIGFuIGB7eyNlYWNofX1gIGJsb2NrIHdpbGwgYmUKLSAgdGhl
IGNvbnRyb2xsZXIgb2YgdGhlIHRlbXBsYXRlIHdoZXJlIHRoZSBge3sjZWFjaH19YCB3YXMgdXNl
ZC4gSWYgZWFjaAotICBpdGVtIG5lZWRzIHRvIGJlIHByZXNlbnRlZCBieSBhIGN1c3RvbSBjb250
cm9sbGVyIHlvdSBjYW4gcHJvdmlkZSBhCi0gIGBpdGVtQ29udHJvbGxlcmAgb3B0aW9uIHdoaWNo
IHJlZmVyZW5jZXMgYSBjb250cm9sbGVyIGJ5IGxvb2t1cCBuYW1lLgotICBFYWNoIGl0ZW0gaW4g
dGhlIGxvb3Agd2lsbCBiZSB3cmFwcGVkIGluIGFuIGluc3RhbmNlIG9mIHRoaXMgY29udHJvbGxl
cgotICBhbmQgdGhlIGl0ZW0gaXRzZWxmIHdpbGwgYmUgc2V0IHRvIHRoZSBgY29udGVudGAgcHJv
cGVydHkgb2YgdGhhdCBjb250cm9sbGVyLgotCi0gIFRoaXMgaXMgdXNlZnVsIGluIGNhc2VzIHdo
ZXJlIHByb3BlcnRpZXMgb2YgbW9kZWwgb2JqZWN0cyBuZWVkIHRyYW5zZm9ybWF0aW9uCi0gIG9y
IHN5bnRoZXNpcyBmb3IgZGlzcGxheToKLQotICBgYGBqYXZhc2NyaXB0Ci0gIEFwcC5EZXZlbG9w
ZXJDb250cm9sbGVyID0gRW1iZXIuT2JqZWN0Q29udHJvbGxlci5leHRlbmQoewotICAgIGlzQXZh
aWxhYmxlRm9ySGlyZTogZnVuY3Rpb24oKSB7Ci0gICAgICByZXR1cm4gIXRoaXMuZ2V0KCdjb250
ZW50LmlzRW1wbG95ZWQnKSAmJiB0aGlzLmdldCgnY29udGVudC5pc1NlZWtpbmdXb3JrJyk7Ci0g
ICAgfS5wcm9wZXJ0eSgnaXNFbXBsb3llZCcsICdpc1NlZWtpbmdXb3JrJykKLSAgfSkKLSAgYGBg
Ci0KLSAgYGBgaGFuZGxlYmFycwotICB7eyNlYWNoIHBlcnNvbiBpbiBkZXZlbG9wZXJzIGl0ZW1D
b250cm9sbGVyPSJkZXZlbG9wZXIifX0KLSAgICB7e3BlcnNvbi5uYW1lfX0ge3sjaWYgcGVyc29u
LmlzQXZhaWxhYmxlRm9ySGlyZX19SGlyZSBtZSF7ey9pZn19Ci0gIHt7L2VhY2h9fQotICBgYGAK
LQotICBFYWNoIGl0ZW1Db250cm9sbGVyIHdpbGwgcmVjZWl2ZSBhIHJlZmVyZW5jZSB0byB0aGUg
Y3VycmVudCBjb250cm9sbGVyIGFzCi0gIGEgYHBhcmVudENvbnRyb2xsZXJgIHByb3BlcnR5Lgot
Ci0gICMjIyAoRXhwZXJpbWVudGFsKSBHcm91cGVkIEVhY2gKLQotICBXaGVuIHVzZWQgaW4gY29u
anVuY3Rpb24gd2l0aCB0aGUgZXhwZXJpbWVudGFsIFtncm91cCBoZWxwZXJdKGh0dHBzOi8vZ2l0
aHViLmNvbS9lbWJlcmpzL2dyb3VwLWhlbHBlciksCi0gIHlvdSBjYW4gaW5mb3JtIEhhbmRsZWJh
cnMgdG8gcmUtcmVuZGVyIGFuIGVudGlyZSBncm91cCBvZiBpdGVtcyBpbnN0ZWFkIG9mCi0gIHJl
LXJlbmRlcmluZyB0aGVtIG9uZSBhdCBhIHRpbWUgKGluIHRoZSBldmVudCB0aGF0IHRoZXkgYXJl
IGNoYW5nZWQgZW4gbWFzc2UKLSAgb3IgYW4gaXRlbSBpcyBhZGRlZC9yZW1vdmVkKS4KLQotICBg
YGBoYW5kbGViYXJzCi0gIHt7I2dyb3VwfX0KLSAgICB7eyNlYWNoIHBlb3BsZX19Ci0gICAgICB7
e2ZpcnN0TmFtZX19IHt7bGFzdE5hbWV9fQotICAgIHt7L2VhY2h9fQotICB7ey9ncm91cH19Ci0g
IGBgYAotCi0gIFRoaXMgY2FuIGJlIGZhc3RlciB0aGFuIHRoZSBub3JtYWwgd2F5IHRoYXQgSGFu
ZGxlYmFycyByZS1yZW5kZXJzIGl0ZW1zCi0gIGluIHNvbWUgY2FzZXMuCi0KLSAgSWYgZm9yIHNv
bWUgcmVhc29uIHlvdSBoYXZlIGEgZ3JvdXAgd2l0aCBtb3JlIHRoYW4gb25lIGAjZWFjaGAsIHlv
dSBjYW4gbWFrZQotICBvbmUgb2YgdGhlIGNvbGxlY3Rpb25zIGJlIHVwZGF0ZWQgaW4gbm9ybWFs
IChub24tZ3JvdXBlZCkgZmFzaGlvbiBieSBzZXR0aW5nCi0gIHRoZSBvcHRpb24gYGdyb3VwZWRS
b3dzPXRydWVgIChjb3VudGVyLWludHVpdGl2ZSwgSSBrbm93KS4KLQotICBGb3IgZXhhbXBsZSwK
LQotICBgYGBoYW5kbGViYXJzCi0gIHt7ZGVhbGVyc2hpcE5hbWV9fQotCi0gIHt7I2dyb3VwfX0K
LSAgICB7eyNlYWNoIGRlYWxlcnN9fQotICAgICAge3tmaXJzdE5hbWV9fSB7e2xhc3ROYW1lfX0K
LSAgICB7ey9lYWNofX0KLQotICAgIHt7I2VhY2ggY2FyIGluIGNhcnMgZ3JvdXBlZFJvd3M9dHJ1
ZX19Ci0gICAgICB7e2Nhci5tYWtlfX0ge3tjYXIubW9kZWx9fSB7e2Nhci5jb2xvcn19Ci0gICAg
e3svZWFjaH19Ci0gIHt7L2dyb3VwfX0KLSAgYGBgCi0gIEFueSBjaGFuZ2UgdG8gYGRlYWxlcnNo
aXBOYW1lYCBvciB0aGUgYGRlYWxlcnNgIGNvbGxlY3Rpb24gd2lsbCBjYXVzZSB0aGUKLSAgZW50
aXJlIGdyb3VwIHRvIGJlIHJlLXJlbmRlcmVkLiBIb3dldmVyLCBjaGFuZ2VzIHRvIHRoZSBgY2Fy
c2AgY29sbGVjdGlvbgotICB3aWxsIGJlIHJlLXJlbmRlcmVkIGluZGl2aWR1YWxseSAoYXMgbm9y
bWFsKS4KLQotICBOb3RlIHRoYXQgYGdyb3VwYCBiZWhhdmlvciBpcyBhbHNvIGRpc2FibGVkIGJ5
IHNwZWNpZnlpbmcgYW4gYGl0ZW1WaWV3Q2xhc3NgLgotCi0gIEBtZXRob2QgZWFjaAotICBAZm9y
IEVtYmVyLkhhbmRsZWJhcnMuaGVscGVycwotICBAcGFyYW0gW25hbWVdIHtTdHJpbmd9IG5hbWUg
Zm9yIGl0ZW0gKHVzZWQgd2l0aCBgaW5gKQotICBAcGFyYW0gW3BhdGhdIHtTdHJpbmd9IHBhdGgK
LSAgQHBhcmFtIFtvcHRpb25zXSB7T2JqZWN0fSBIYW5kbGViYXJzIGtleS92YWx1ZSBwYWlycyBv
ZiBvcHRpb25zCi0gIEBwYXJhbSBbb3B0aW9ucy5pdGVtVmlld0NsYXNzXSB7U3RyaW5nfSBhIHBh
dGggdG8gYSB2aWV3IGNsYXNzIHVzZWQgZm9yIGVhY2ggaXRlbQotICBAcGFyYW0gW29wdGlvbnMu
aXRlbUNvbnRyb2xsZXJdIHtTdHJpbmd9IG5hbWUgb2YgYSBjb250cm9sbGVyIHRvIGJlIGNyZWF0
ZWQgZm9yIGVhY2ggaXRlbQotICBAcGFyYW0gW29wdGlvbnMuZ3JvdXBlZFJvd3NdIHtib29sZWFu
fSBlbmFibGUgbm9ybWFsIGl0ZW0tYnktaXRlbSByZW5kZXJpbmcgd2hlbiBpbnNpZGUgYSBgI2dy
b3VwYCBoZWxwZXIKLSovCi1FbWJlci5IYW5kbGViYXJzLnJlZ2lzdGVySGVscGVyKCdlYWNoJywg
ZnVuY3Rpb24gZWFjaEhlbHBlcihwYXRoLCBvcHRpb25zKSB7Ci0gIGlmIChhcmd1bWVudHMubGVu
Z3RoID09PSA0KSB7Ci0gICAgRW1iZXIuYXNzZXJ0KCJJZiB5b3UgcGFzcyBtb3JlIHRoYW4gb25l
IGFyZ3VtZW50IHRvIHRoZSBlYWNoIGhlbHBlciwgaXQgbXVzdCBiZSBpbiB0aGUgZm9ybSAjZWFj
aCBmb28gaW4gYmFyIiwgYXJndW1lbnRzWzFdID09PSAiaW4iKTsKLQotICAgIHZhciBrZXl3b3Jk
TmFtZSA9IGFyZ3VtZW50c1swXTsKLQotICAgIG9wdGlvbnMgPSBhcmd1bWVudHNbM107Ci0gICAg
cGF0aCA9IGFyZ3VtZW50c1syXTsKLSAgICBpZiAocGF0aCA9PT0gJycpIHsgcGF0aCA9ICJ0aGlz
IjsgfQotCi0gICAgb3B0aW9ucy5oYXNoLmtleXdvcmQgPSBrZXl3b3JkTmFtZTsKLSAgfQotCi0g
IGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxKSB7Ci0gICAgb3B0aW9ucyA9IHBhdGg7Ci0gICAg
cGF0aCA9ICd0aGlzJzsKLSAgfQotCi0gIG9wdGlvbnMuaGFzaC5kYXRhU291cmNlQmluZGluZyA9
IHBhdGg7Ci0gIC8vIFNldCB1cCBlbXB0eVZpZXcgYXMgYSBtZXRhbW9ycGggd2l0aCBubyB0YWcK
LSAgLy9vcHRpb25zLmhhc2guZW1wdHlWaWV3Q2xhc3MgPSBFbWJlci5fTWV0YW1vcnBoVmlldzsK
LQotICBpZiAob3B0aW9ucy5kYXRhLmluc2lkZUdyb3VwICYmICFvcHRpb25zLmhhc2guZ3JvdXBl
ZFJvd3MgJiYgIW9wdGlvbnMuaGFzaC5pdGVtVmlld0NsYXNzKSB7Ci0gICAgbmV3IEVtYmVyLkhh
bmRsZWJhcnMuR3JvdXBlZEVhY2godGhpcywgcGF0aCwgb3B0aW9ucykucmVuZGVyKCk7Ci0gIH0g
ZWxzZSB7Ci0gICAgcmV0dXJuIEVtYmVyLkhhbmRsZWJhcnMuaGVscGVycy5jb2xsZWN0aW9uLmNh
bGwodGhpcywgJ0VtYmVyLkhhbmRsZWJhcnMuRWFjaFZpZXcnLCBvcHRpb25zKTsKLSAgfQotfSk7
Ci0KLX0pKCk7Ci0KLQotCi0oZnVuY3Rpb24oKSB7Ci0vKioKLUBtb2R1bGUgZW1iZXIKLUBzdWJt
b2R1bGUgZW1iZXItaGFuZGxlYmFycwotKi8KLQotLyoqCi0gIGB0ZW1wbGF0ZWAgYWxsb3dzIHlv
dSB0byByZW5kZXIgYSB0ZW1wbGF0ZSBmcm9tIGluc2lkZSBhbm90aGVyIHRlbXBsYXRlLgotICBU
aGlzIGFsbG93cyB5b3UgdG8gcmUtdXNlIHRoZSBzYW1lIHRlbXBsYXRlIGluIG11bHRpcGxlIHBs
YWNlcy4gRm9yIGV4YW1wbGU6Ci0KLSAgYGBgaHRtbAotICA8c2NyaXB0IHR5cGU9InRleHQveC1o
YW5kbGViYXJzIiBkYXRhLXRlbXBsYXRlLW5hbWU9ImxvZ2dlZF9pbl91c2VyIj4KLSAgICB7eyN3
aXRoIGxvZ2dlZEluVXNlcn19Ci0gICAgICBMYXN0IExvZ2luOiB7e2xhc3RMb2dpbn19Ci0gICAg
ICBVc2VyIEluZm86IHt7dGVtcGxhdGUgInVzZXJfaW5mbyJ9fQotICAgIHt7L3dpdGh9fQotICA8
L3NjcmlwdD4KLSAgYGBgCi0KLSAgYGBgaHRtbAotICA8c2NyaXB0IHR5cGU9InRleHQveC1oYW5k
bGViYXJzIiBkYXRhLXRlbXBsYXRlLW5hbWU9InVzZXJfaW5mbyI+Ci0gICAgTmFtZTogPGVtPnt7
bmFtZX19PC9lbT4KLSAgICBLYXJtYTogPGVtPnt7a2FybWF9fTwvZW0+Ci0gIDwvc2NyaXB0Pgot
ICBgYGAKLQotICBgYGBoYW5kbGViYXJzCi0gIHt7I2lmIGlzVXNlcn19Ci0gICAge3t0ZW1wbGF0
ZSAidXNlcl9pbmZvIn19Ci0gIHt7ZWxzZX19Ci0gICAge3t0ZW1wbGF0ZSAidW5sb2dnZWRfdXNl
cl9pbmZvIn19Ci0gIHt7L2lmfX0KLSAgYGBgCi0KLSAgVGhpcyBoZWxwZXIgbG9va3MgZm9yIHRl
bXBsYXRlcyBpbiB0aGUgZ2xvYmFsIGBFbWJlci5URU1QTEFURVNgIGhhc2guIElmIHlvdQotICBh
ZGQgYDxzY3JpcHQ+YCB0YWdzIHRvIHlvdXIgcGFnZSB3aXRoIHRoZSBgZGF0YS10ZW1wbGF0ZS1u
YW1lYCBhdHRyaWJ1dGUgc2V0LAotICB0aGV5IHdpbGwgYmUgY29tcGlsZWQgYW5kIHBsYWNlZCBp
biB0aGlzIGhhc2ggYXV0b21hdGljYWxseS4KLQotICBZb3UgY2FuIGFsc28gbWFudWFsbHkgcmVn
aXN0ZXIgdGVtcGxhdGVzIGJ5IGFkZGluZyB0aGVtIHRvIHRoZSBoYXNoOgotCi0gIGBgYGphdmFz
Y3JpcHQKLSAgRW1iZXIuVEVNUExBVEVTWyJteV9jb29sX3RlbXBsYXRlIl0gPSBFbWJlci5IYW5k
bGViYXJzLmNvbXBpbGUoJzxiPnt7dXNlcn19PC9iPicpOwotICBgYGAKLQotICBAZGVwcmVjYXRl
ZAotICBAbWV0aG9kIHRlbXBsYXRlCi0gIEBmb3IgRW1iZXIuSGFuZGxlYmFycy5oZWxwZXJzCi0g
IEBwYXJhbSB7U3RyaW5nfSB0ZW1wbGF0ZU5hbWUgdGhlIHRlbXBsYXRlIHRvIHJlbmRlcgotKi8K
LQotRW1iZXIuSGFuZGxlYmFycy5yZWdpc3RlckhlbHBlcigndGVtcGxhdGUnLCBmdW5jdGlvbihu
YW1lLCBvcHRpb25zKSB7Ci0gIEVtYmVyLmRlcHJlY2F0ZSgiVGhlIGB0ZW1wbGF0ZWAgaGVscGVy
IGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgdGhlIGBwYXJ0aWFsYCBoZWxwZXIuIFBs
ZWFzZSB1c2UgYHBhcnRpYWxgIGluc3RlYWQsIHdoaWNoIHdpbGwgd29yayB0aGUgc2FtZSB3YXku
Iik7Ci0gIHJldHVybiBFbWJlci5IYW5kbGViYXJzLmhlbHBlcnMucGFydGlhbC5hcHBseSh0aGlz
LCBhcmd1bWVudHMpOwotfSk7Ci0KLX0pKCk7Ci0KLQotCi0oZnVuY3Rpb24oKSB7Ci0vKioKLUBt
b2R1bGUgZW1iZXIKLUBzdWJtb2R1bGUgZW1iZXItaGFuZGxlYmFycwotKi8KLQotLyoqCi0gIFRo
ZSBgcGFydGlhbGAgaGVscGVyIHJlbmRlcnMgYW5vdGhlciB0ZW1wbGF0ZSB3aXRob3V0Ci0gIGNo
YW5naW5nIHRoZSB0ZW1wbGF0ZSBjb250ZXh0OgotCi0gIGBgYGhhbmRsZWJhcnMKLSAge3tmb299
fQotICB7e3BhcnRpYWwgIm5hdiJ9fQotICBgYGAKLQotICBUaGUgYWJvdmUgZXhhbXBsZSB0ZW1w
bGF0ZSB3aWxsIHJlbmRlciBhIHRlbXBsYXRlIG5hbWVkCi0gICJfbmF2Iiwgd2hpY2ggaGFzIHRo
ZSBzYW1lIGNvbnRleHQgYXMgdGhlIHBhcmVudCB0ZW1wbGF0ZQotICBpdCdzIHJlbmRlcmVkIGlu
dG8sIHNvIGlmIHRoZSAiX25hdiIgdGVtcGxhdGUgYWxzbyByZWZlcmVuY2VkCi0gIGB7e2Zvb319
YCwgaXQgd291bGQgcHJpbnQgdGhlIHNhbWUgdGhpbmcgYXMgdGhlIGB7e2Zvb319YAotICBpbiB0
aGUgYWJvdmUgZXhhbXBsZS4KLQotICBJZiBhICJfbmF2IiB0ZW1wbGF0ZSBpc24ndCBmb3VuZCwg
dGhlIGBwYXJ0aWFsYCBoZWxwZXIgd2lsbAotICBmYWxsIGJhY2sgdG8gYSB0ZW1wbGF0ZSBuYW1l
ZCAibmF2Ii4KLQotICAjIyBCb3VuZCB0ZW1wbGF0ZSBuYW1lcwotCi0gIFRoZSBwYXJhbWV0ZXIg
c3VwcGxpZWQgdG8gYHBhcnRpYWxgIGNhbiBhbHNvIGJlIGEgcGF0aAotICB0byBhIHByb3BlcnR5
IGNvbnRhaW5pbmcgYSB0ZW1wbGF0ZSBuYW1lLCBlLmcuOgotCi0gIGBgYGhhbmRsZWJhcnMKLSAg
e3twYXJ0aWFsIHNvbWVUZW1wbGF0ZU5hbWV9fQotICBgYGAKLQotICBUaGUgYWJvdmUgZXhhbXBs
ZSB3aWxsIGxvb2sgdXAgdGhlIHZhbHVlIG9mIGBzb21lVGVtcGxhdGVOYW1lYAotICBvbiB0aGUg
dGVtcGxhdGUgY29udGV4dCAoZS5nLiBhIGNvbnRyb2xsZXIpIGFuZCB1c2UgdGhhdAotICB2YWx1
ZSBhcyB0aGUgbmFtZSBvZiB0aGUgdGVtcGxhdGUgdG8gcmVuZGVyLiBJZiB0aGUgcmVzb2x2ZWQK
LSAgdmFsdWUgaXMgZmFsc3ksIG5vdGhpbmcgd2lsbCBiZSByZW5kZXJlZC4gSWYgYHNvbWVUZW1w
bGF0ZU5hbWVgCi0gIGNoYW5nZXMsIHRoZSBwYXJ0aWFsIHdpbGwgYmUgcmUtcmVuZGVyZWQgdXNp
bmcgdGhlIG5ldyB0ZW1wbGF0ZQotICBuYW1lLgotCi0gICMjIFNldHRpbmcgdGhlIHBhcnRpYWwn
cyBjb250ZXh0IHdpdGggYHdpdGhgCi0KLSAgVGhlIGBwYXJ0aWFsYCBoZWxwZXIgY2FuIGJlIHVz
ZWQgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgYHdpdGhgCi0gIGhlbHBlciB0byBzZXQgYSBjb250
ZXh0IHRoYXQgd2lsbCBiZSB1c2VkIGJ5IHRoZSBwYXJ0aWFsOgotCi0gIGBgYGhhbmRsZWJhcnMK
LSAge3sjd2l0aCBjdXJyZW50VXNlcn19Ci0gICAge3twYXJ0aWFsICJ1c2VyX2luZm8ifX0KLSAg
e3svd2l0aH19Ci0gIGBgYAotCi0gIEBtZXRob2QgcGFydGlhbAotICBAZm9yIEVtYmVyLkhhbmRs
ZWJhcnMuaGVscGVycwotICBAcGFyYW0ge1N0cmluZ30gcGFydGlhbE5hbWUgdGhlIG5hbWUgb2Yg
dGhlIHRlbXBsYXRlIHRvIHJlbmRlciBtaW51cyB0aGUgbGVhZGluZyB1bmRlcnNjb3JlCi0qLwot
Ci1FbWJlci5IYW5kbGViYXJzLnJlZ2lzdGVySGVscGVyKCdwYXJ0aWFsJywgZnVuY3Rpb24gcGFy
dGlhbEhlbHBlcihuYW1lLCBvcHRpb25zKSB7Ci0KLSAgdmFyIGNvbnRleHQgPSAob3B0aW9ucy5j
b250ZXh0cyAmJiBvcHRpb25zLmNvbnRleHRzLmxlbmd0aCkgPyBvcHRpb25zLmNvbnRleHRzWzBd
IDogdGhpczsKLQotICBpZiAob3B0aW9ucy50eXBlc1swXSA9PT0gIklEIikgewotICAgIC8vIEhl
bHBlciB3YXMgcGFzc2VkIGEgcHJvcGVydHkgcGF0aDsgd2UgbmVlZCB0bwotICAgIC8vIGNyZWF0
ZSBhIGJpbmRpbmcgdGhhdCB3aWxsIHJlLXJlbmRlciB3aGVuZXZlcgotICAgIC8vIHRoaXMgcHJv
cGVydHkgY2hhbmdlcy4KLSAgICBvcHRpb25zLmZuID0gZnVuY3Rpb24oY29udGV4dCwgZm5PcHRp
b25zKSB7Ci0gICAgICB2YXIgcGFydGlhbE5hbWUgPSBFbWJlci5IYW5kbGViYXJzLmdldChjb250
ZXh0LCBuYW1lLCBmbk9wdGlvbnMpOwotICAgICAgcmVuZGVyUGFydGlhbChjb250ZXh0LCBwYXJ0
aWFsTmFtZSwgZm5PcHRpb25zKTsKLSAgICB9OwotCi0gICAgcmV0dXJuIEVtYmVyLkhhbmRsZWJh
cnMuYmluZC5jYWxsKGNvbnRleHQsIG5hbWUsIG9wdGlvbnMsIHRydWUsIGV4aXN0cyk7Ci0gIH0g
ZWxzZSB7Ci0gICAgLy8gUmVuZGVyIHRoZSBwYXJ0aWFsIHJpZ2h0IGludG8gcGFyZW50IHRlbXBs
YXRlLgotICAgIHJlbmRlclBhcnRpYWwoY29udGV4dCwgbmFtZSwgb3B0aW9ucyk7Ci0gIH0KLX0p
OwotCi1mdW5jdGlvbiBleGlzdHModmFsdWUpIHsKLSAgcmV0dXJuICFFbWJlci5pc05vbmUodmFs
dWUpOwotfQotCi1mdW5jdGlvbiByZW5kZXJQYXJ0aWFsKGNvbnRleHQsIG5hbWUsIG9wdGlvbnMp
IHsKLSAgdmFyIG5hbWVQYXJ0cyA9IG5hbWUuc3BsaXQoIi8iKSwKLSAgICAgIGxhc3RQYXJ0ID0g
bmFtZVBhcnRzW25hbWVQYXJ0cy5sZW5ndGggLSAxXTsKLQotICBuYW1lUGFydHNbbmFtZVBhcnRz
Lmxlbmd0aCAtIDFdID0gIl8iICsgbGFzdFBhcnQ7Ci0KLSAgdmFyIHZpZXcgPSBvcHRpb25zLmRh
dGEudmlldywKLSAgICAgIHVuZGVyc2NvcmVkTmFtZSA9IG5hbWVQYXJ0cy5qb2luKCIvIiksCi0g
ICAgICB0ZW1wbGF0ZSA9IHZpZXcudGVtcGxhdGVGb3JOYW1lKHVuZGVyc2NvcmVkTmFtZSksCi0g
ICAgICBkZXByZWNhdGVkVGVtcGxhdGUgPSAhdGVtcGxhdGUgJiYgdmlldy50ZW1wbGF0ZUZvck5h
bWUobmFtZSk7Ci0KLSAgRW1iZXIuYXNzZXJ0KCJVbmFibGUgdG8gZmluZCBwYXJ0aWFsIHdpdGgg
bmFtZSAnIituYW1lKyInLiIsIHRlbXBsYXRlIHx8IGRlcHJlY2F0ZWRUZW1wbGF0ZSk7Ci0KLSAg
dGVtcGxhdGUgPSB0ZW1wbGF0ZSB8fCBkZXByZWNhdGVkVGVtcGxhdGU7Ci0KLSAgdGVtcGxhdGUo
Y29udGV4dCwgeyBkYXRhOiBvcHRpb25zLmRhdGEgfSk7Ci19Ci0KLX0pKCk7Ci0KLQotCi0oZnVu
Y3Rpb24oKSB7Ci0vKioKLUBtb2R1bGUgZW1iZXIKLUBzdWJtb2R1bGUgZW1iZXItaGFuZGxlYmFy
cwotKi8KLQotdmFyIGdldCA9IEVtYmVyLmdldCwgc2V0ID0gRW1iZXIuc2V0OwotCi0vKioKLSAg
YHt7eWllbGR9fWAgZGVub3RlcyBhbiBhcmVhIG9mIGEgdGVtcGxhdGUgdGhhdCB3aWxsIGJlIHJl
bmRlcmVkIGluc2lkZQotICBvZiBhbm90aGVyIHRlbXBsYXRlLiBJdCBoYXMgdHdvIG1haW4gdXNl
czoKLQotICAjIyMgVXNlIHdpdGggYGxheW91dGAKLSAgV2hlbiB1c2VkIGluIGEgSGFuZGxlYmFy
cyB0ZW1wbGF0ZSB0aGF0IGlzIGFzc2lnbmVkIHRvIGFuIGBFbWJlci5WaWV3YAotICBpbnN0YW5j
ZSdzIGBsYXlvdXRgIHByb3BlcnR5IEVtYmVyIHdpbGwgcmVuZGVyIHRoZSBsYXlvdXQgdGVtcGxh
dGUgZmlyc3QsCi0gIGluc2VydGluZyB0aGUgdmlldydzIG93biByZW5kZXJlZCBvdXRwdXQgYXQg
dGhlIGB7e3lpZWxkfX1gIGxvY2F0aW9uLgotCi0gIEFuIGVtcHR5IGA8Ym9keT5gIGFuZCB0aGUg
Zm9sbG93aW5nIGFwcGxpY2F0aW9uIGNvZGU6Ci0KLSAgYGBgamF2YXNjcmlwdAotICBBVmlldyA9
IEVtYmVyLlZpZXcuZXh0ZW5kKHsKLSAgICBjbGFzc05hbWVzOiBbJ2Etdmlldy13aXRoLWxheW91
dCddLAotICAgIGxheW91dDogRW1iZXIuSGFuZGxlYmFycy5jb21waWxlKCc8ZGl2IGNsYXNzPSJ3
cmFwcGVyIj57e3lpZWxkfX08L2Rpdj4nKSwKLSAgICB0ZW1wbGF0ZTogRW1iZXIuSGFuZGxlYmFy
cy5jb21waWxlKCc8c3Bhbj5JIGFtIHdyYXBwZWQ8L3NwYW4+JykKLSAgfSk7Ci0KLSAgYVZpZXcg
PSBBVmlldy5jcmVhdGUoKTsKLSAgYVZpZXcuYXBwZW5kVG8oJ2JvZHknKTsKLSAgYGBgCi0KLSAg
V2lsbCByZXN1bHQgaW4gdGhlIGZvbGxvd2luZyBIVE1MIG91dHB1dDoKLQotICBgYGBodG1sCi0g
IDxib2R5PgotICAgIDxkaXYgY2xhc3M9J2VtYmVyLXZpZXcgYS12aWV3LXdpdGgtbGF5b3V0Jz4K
LSAgICAgIDxkaXYgY2xhc3M9IndyYXBwZXIiPgotICAgICAgICA8c3Bhbj5JIGFtIHdyYXBwZWQ8
L3NwYW4+Ci0gICAgICA8L2Rpdj4KLSAgICA8L2Rpdj4KLSAgPC9ib2R5PgotICBgYGAKLQotICBU
aGUgYHlpZWxkYCBoZWxwZXIgY2Fubm90IGJlIHVzZWQgb3V0c2lkZSBvZiBhIHRlbXBsYXRlIGFz
c2lnbmVkIHRvIGFuCi0gIGBFbWJlci5WaWV3YCdzIGBsYXlvdXRgIHByb3BlcnR5IGFuZCB3aWxs
IHRocm93IGFuIGVycm9yIGlmIGF0dGVtcHRlZC4KLQotICBgYGBqYXZhc2NyaXB0Ci0gIEJWaWV3
ID0gRW1iZXIuVmlldy5leHRlbmQoewotICAgIGNsYXNzTmFtZXM6IFsnYS12aWV3LXdpdGgtbGF5
b3V0J10sCi0gICAgdGVtcGxhdGU6IEVtYmVyLkhhbmRsZWJhcnMuY29tcGlsZSgne3t5aWVsZH19
JykKLSAgfSk7Ci0KLSAgYlZpZXcgPSBCVmlldy5jcmVhdGUoKTsKLSAgYlZpZXcuYXBwZW5kVG8o
J2JvZHknKTsKLQotICAvLyB0aHJvd3MKLSAgLy8gVW5jYXVnaHQgRXJyb3I6IGFzc2VydGlvbiBm
YWlsZWQ6Ci0gIC8vIFlvdSBjYWxsZWQgeWllbGQgaW4gYSB0ZW1wbGF0ZSB0aGF0IHdhcyBub3Qg
YSBsYXlvdXQKLSAgYGBgCi0KLSAgIyMjIFVzZSB3aXRoIEVtYmVyLkNvbXBvbmVudAotICBXaGVu
IGRlc2lnbmluZyBjb21wb25lbnRzIGB7e3lpZWxkfX1gIGlzIHVzZWQgdG8gZGVub3RlIHdoZXJl
LCBpbnNpZGUgdGhlIGNvbXBvbmVudCdzCi0gIHRlbXBsYXRlLCBhbiBvcHRpb25hbCBibG9jayBw
YXNzZWQgdG8gdGhlIGNvbXBvbmVudCBzaG91bGQgcmVuZGVyOgotCi0gIGBgYGhhbmRsZWJhcnMK
LSAgPCEtLSBhcHBsaWNhdGlvbi5oYnMgLS0+Ci0gIHt7I2xhYmVsZWQtdGV4dGZpZWxkIHZhbHVl
PXNvbWVQcm9wZXJ0eX19Ci0gICAgRmlyc3QgbmFtZToKLSAge3svbGFiZWxlZC10ZXh0ZmllbGR9
fQotICBgYGAKLQotICBgYGBoYW5kbGViYXJzCi0gIDwhLS0gY29tcG9uZW50cy9sYWJlbGVkLXRl
eHRmaWVsZC5oYnMgLS0+Ci0gIDxsYWJlbD4KLSAgICB7e3lpZWxkfX0ge3tpbnB1dCB2YWx1ZT12
YWx1ZX19Ci0gIDwvbGFiZWw+Ci0gIGBgYAotCi0gIFJlc3VsdDoKLQotICBgYGBodG1sCi0gIDxs
YWJlbD4KLSAgICBGaXJzdCBuYW1lOiA8aW5wdXQgdHlwZT0idGV4dCIgLz4KLSAgPGxhYmVsPgot
ICBgYGAKLQotICBAbWV0aG9kIHlpZWxkCi0gIEBmb3IgRW1iZXIuSGFuZGxlYmFycy5oZWxwZXJz
Ci0gIEBwYXJhbSB7SGFzaH0gb3B0aW9ucwotICBAcmV0dXJuIHtTdHJpbmd9IEhUTUwgc3RyaW5n
Ci0qLwotRW1iZXIuSGFuZGxlYmFycy5yZWdpc3RlckhlbHBlcigneWllbGQnLCBmdW5jdGlvbiB5
aWVsZEhlbHBlcihvcHRpb25zKSB7Ci0gIHZhciB2aWV3ID0gb3B0aW9ucy5kYXRhLnZpZXc7Ci0K
LSAgd2hpbGUgKHZpZXcgJiYgIWdldCh2aWV3LCAnbGF5b3V0JykpIHsKLSAgICBpZiAodmlldy5f
Y29udGV4dFZpZXcpIHsKLSAgICAgIHZpZXcgPSB2aWV3Ll9jb250ZXh0VmlldzsKLSAgICB9IGVs
c2UgewotICAgICAgdmlldyA9IGdldCh2aWV3LCAncGFyZW50VmlldycpOwotICAgIH0KLSAgfQot
Ci0gIEVtYmVyLmFzc2VydCgiWW91IGNhbGxlZCB5aWVsZCBpbiBhIHRlbXBsYXRlIHRoYXQgd2Fz
IG5vdCBhIGxheW91dCIsICEhdmlldyk7Ci0KLSAgdmlldy5feWllbGQodGhpcywgb3B0aW9ucyk7
Ci19KTsKLQotfSkoKTsKLQotCi0KLShmdW5jdGlvbigpIHsKLS8qKgotQG1vZHVsZSBlbWJlcgot
QHN1Ym1vZHVsZSBlbWJlci1oYW5kbGViYXJzCi0qLwotCi0vKioKLSAgYGxvY2AgbG9va3MgdXAg
dGhlIHN0cmluZyBpbiB0aGUgbG9jYWxpemVkIHN0cmluZ3MgaGFzaC4KLSAgVGhpcyBpcyBhIGNv
bnZlbmllbnQgd2F5IHRvIGxvY2FsaXplIHRleHQuIEZvciBleGFtcGxlOgotCi0gIGBgYGh0bWwK
LSAgPHNjcmlwdCB0eXBlPSJ0ZXh0L3gtaGFuZGxlYmFycyIgZGF0YS10ZW1wbGF0ZS1uYW1lPSJo
b21lIj4KLSAgICB7e2xvYyAid2VsY29tZSJ9fQotICA8L3NjcmlwdD4KLSAgYGBgCi0KLSAgVGFr
ZSBub3RlIHRoYXQgYCJ3ZWxjb21lImAgaXMgYSBzdHJpbmcgYW5kIG5vdCBhbiBvYmplY3QKLSAg
cmVmZXJlbmNlLgotCi0gIEBtZXRob2QgbG9jCi0gIEBmb3IgRW1iZXIuSGFuZGxlYmFycy5oZWxw
ZXJzCi0gIEBwYXJhbSB7U3RyaW5nfSBzdHIgVGhlIHN0cmluZyB0byBmb3JtYXQKLSovCi0KLUVt
YmVyLkhhbmRsZWJhcnMucmVnaXN0ZXJIZWxwZXIoJ2xvYycsIGZ1bmN0aW9uIGxvY0hlbHBlcihz
dHIpIHsKLSAgcmV0dXJuIEVtYmVyLlN0cmluZy5sb2Moc3RyKTsKLX0pOwotCi19KSgpOwotCi0K
LQotKGZ1bmN0aW9uKCkgewotCi19KSgpOwotCi0KLQotKGZ1bmN0aW9uKCkgewotCi19KSgpOwot
Ci0KLQotKGZ1bmN0aW9uKCkgewotLyoqCi1AbW9kdWxlIGVtYmVyCi1Ac3VibW9kdWxlIGVtYmVy
LWhhbmRsZWJhcnMKLSovCi0KLXZhciBzZXQgPSBFbWJlci5zZXQsIGdldCA9IEVtYmVyLmdldDsK
LQotLyoqCi0gIFRoZSBpbnRlcm5hbCBjbGFzcyB1c2VkIHRvIGNyZWF0ZSB0ZXh0IGlucHV0cyB3
aGVuIHRoZSBge3tpbnB1dH19YAotICBoZWxwZXIgaXMgdXNlZCB3aXRoIGB0eXBlYCBvZiBgY2hl
Y2tib3hgLgotCi0gIFNlZSBbaGFuZGxlYmFycy5oZWxwZXJzLmlucHV0XSgvYXBpL2NsYXNzZXMv
RW1iZXIuSGFuZGxlYmFycy5oZWxwZXJzLmh0bWwjbWV0aG9kX2lucHV0KSAgZm9yIHVzYWdlIGRl
dGFpbHMuCi0KLSAgIyMgRGlyZWN0IG1hbmlwdWxhdGlvbiBvZiBgY2hlY2tlZGAKLQotICBUaGUg
YGNoZWNrZWRgIGF0dHJpYnV0ZSBvZiBhbiBgRW1iZXIuQ2hlY2tib3hgIG9iamVjdCBzaG91bGQg
YWx3YXlzIGJlIHNldAotICB0aHJvdWdoIHRoZSBFbWJlciBvYmplY3Qgb3IgYnkgaW50ZXJhY3Rp
bmcgd2l0aCBpdHMgcmVuZGVyZWQgZWxlbWVudAotICByZXByZXNlbnRhdGlvbiB2aWEgdGhlIG1v
dXNlLCBrZXlib2FyZCwgb3IgdG91Y2guIFVwZGF0aW5nIHRoZSB2YWx1ZSBvZiB0aGUKLSAgY2hl
Y2tib3ggdmlhIGpRdWVyeSB3aWxsIHJlc3VsdCBpbiB0aGUgY2hlY2tlZCB2YWx1ZSBvZiB0aGUg
b2JqZWN0IGFuZCBpdHMKLSAgZWxlbWVudCBsb3Npbmcgc3luY2hyb25pemF0aW9uLgotCi0gICMj
IExheW91dCBhbmQgTGF5b3V0TmFtZSBwcm9wZXJ0aWVzCi0KLSAgQmVjYXVzZSBIVE1MIGBpbnB1
dGAgZWxlbWVudHMgYXJlIHNlbGYgY2xvc2luZyBgbGF5b3V0YCBhbmQgYGxheW91dE5hbWVgCi0g
IHByb3BlcnRpZXMgd2lsbCBub3QgYmUgYXBwbGllZC4gU2VlIFtFbWJlci5WaWV3XSgvYXBpL2Ns
YXNzZXMvRW1iZXIuVmlldy5odG1sKSdzCi0gIGxheW91dCBzZWN0aW9uIGZvciBtb3JlIGluZm9y
bWF0aW9uLgotCi0gIEBjbGFzcyBDaGVja2JveAotICBAbmFtZXNwYWNlIEVtYmVyCi0gIEBleHRl
bmRzIEVtYmVyLlZpZXcKLSovCi1FbWJlci5DaGVja2JveCA9IEVtYmVyLlZpZXcuZXh0ZW5kKHsK
LSAgY2xhc3NOYW1lczogWydlbWJlci1jaGVja2JveCddLAotCi0gIHRhZ05hbWU6ICdpbnB1dCcs
Ci0KLSAgYXR0cmlidXRlQmluZGluZ3M6IFsndHlwZScsICdjaGVja2VkJywgJ2luZGV0ZXJtaW5h
dGUnLCAnZGlzYWJsZWQnLCAndGFiaW5kZXgnLCAnbmFtZSddLAotCi0gIHR5cGU6ICJjaGVja2Jv
eCIsCi0gIGNoZWNrZWQ6IGZhbHNlLAotICBkaXNhYmxlZDogZmFsc2UsCi0gIGluZGV0ZXJtaW5h
dGU6IGZhbHNlLAotCi0gIGluaXQ6IGZ1bmN0aW9uKCkgewotICAgIHRoaXMuX3N1cGVyKCk7Ci0g
ICAgdGhpcy5vbigiY2hhbmdlIiwgdGhpcywgdGhpcy5fdXBkYXRlRWxlbWVudFZhbHVlKTsKLSAg
fSwKLQotICBkaWRJbnNlcnRFbGVtZW50OiBmdW5jdGlvbigpIHsKLSAgICB0aGlzLl9zdXBlcigp
OwotICAgIHRoaXMuZ2V0KCdlbGVtZW50JykuaW5kZXRlcm1pbmF0ZSA9ICEhdGhpcy5nZXQoJ2lu
ZGV0ZXJtaW5hdGUnKTsKLSAgfSwKLQotICBfdXBkYXRlRWxlbWVudFZhbHVlOiBmdW5jdGlvbigp
IHsKLSAgICBzZXQodGhpcywgJ2NoZWNrZWQnLCB0aGlzLiQoKS5wcm9wKCdjaGVja2VkJykpOwot
ICB9Ci19KTsKLQotfSkoKTsKLQotCi0KLShmdW5jdGlvbigpIHsKLS8qKgotQG1vZHVsZSBlbWJl
cgotQHN1Ym1vZHVsZSBlbWJlci1oYW5kbGViYXJzCi0qLwotCi12YXIgZ2V0ID0gRW1iZXIuZ2V0
LCBzZXQgPSBFbWJlci5zZXQ7Ci0KLS8qKgotICBTaGFyZWQgbWl4aW4gdXNlZCBieSBgRW1iZXIu
VGV4dEZpZWxkYCBhbmQgYEVtYmVyLlRleHRBcmVhYC4KLQotICBAY2xhc3MgVGV4dFN1cHBvcnQK
LSAgQG5hbWVzcGFjZSBFbWJlcgotICBAcHJpdmF0ZQotKi8KLUVtYmVyLlRleHRTdXBwb3J0ID0g
RW1iZXIuTWl4aW4uY3JlYXRlKHsKLSAgdmFsdWU6ICIiLAotCi0gIGF0dHJpYnV0ZUJpbmRpbmdz
OiBbJ3BsYWNlaG9sZGVyJywgJ2Rpc2FibGVkJywgJ21heGxlbmd0aCcsICd0YWJpbmRleCcsICdy
ZWFkb25seSddLAotICBwbGFjZWhvbGRlcjogbnVsbCwKLSAgZGlzYWJsZWQ6IGZhbHNlLAotICBt
YXhsZW5ndGg6IG51bGwsCi0KLSAgaW5pdDogZnVuY3Rpb24oKSB7Ci0gICAgdGhpcy5fc3VwZXIo
KTsKLSAgICB0aGlzLm9uKCJmb2N1c091dCIsIHRoaXMsIHRoaXMuX2VsZW1lbnRWYWx1ZURpZENo
YW5nZSk7Ci0gICAgdGhpcy5vbigiY2hhbmdlIiwgdGhpcywgdGhpcy5fZWxlbWVudFZhbHVlRGlk
Q2hhbmdlKTsKLSAgICB0aGlzLm9uKCJwYXN0ZSIsIHRoaXMsIHRoaXMuX2VsZW1lbnRWYWx1ZURp
ZENoYW5nZSk7Ci0gICAgdGhpcy5vbigiY3V0IiwgdGhpcywgdGhpcy5fZWxlbWVudFZhbHVlRGlk
Q2hhbmdlKTsKLSAgICB0aGlzLm9uKCJpbnB1dCIsIHRoaXMsIHRoaXMuX2VsZW1lbnRWYWx1ZURp
ZENoYW5nZSk7Ci0gICAgdGhpcy5vbigia2V5VXAiLCB0aGlzLCB0aGlzLmludGVycHJldEtleUV2
ZW50cyk7Ci0gIH0sCi0KLSAgLyoqCi0gICAgVGhlIGFjdGlvbiB0byBiZSBzZW50IHdoZW4gdGhl
IHVzZXIgcHJlc3NlcyB0aGUgcmV0dXJuIGtleS4KLQotICAgIFRoaXMgaXMgc2ltaWxhciB0byB0
aGUgYHt7YWN0aW9ufX1gIGhlbHBlciwgYnV0IGlzIGZpcmVkIHdoZW4KLSAgICB0aGUgdXNlciBw
cmVzc2VzIHRoZSByZXR1cm4ga2V5IHdoZW4gZWRpdGluZyBhIHRleHQgZmllbGQsIGFuZCBzZW5k
cwotICAgIHRoZSB2YWx1ZSBvZiB0aGUgZmllbGQgYXMgdGhlIGNvbnRleHQuCi0KLSAgICBAcHJv
cGVydHkgYWN0aW9uCi0gICAgQHR5cGUgU3RyaW5nCi0gICAgQGRlZmF1bHQgbnVsbAotICAqLwot
ICBhY3Rpb246IG51bGwsCi0KLSAgLyoqCi0gICAgVGhlIGV2ZW50IHRoYXQgc2hvdWxkIHNlbmQg
dGhlIGFjdGlvbi4KLQotICAgIE9wdGlvbnMgYXJlOgotCi0gICAgKiBgZW50ZXJgOiB0aGUgdXNl
ciBwcmVzc2VkIGVudGVyCi0gICAgKiBga2V5UHJlc3NgOiB0aGUgdXNlciBwcmVzc2VkIGEga2V5
Ci0KLSAgICBAcHJvcGVydHkgb25FdmVudAotICAgIEB0eXBlIFN0cmluZwotICAgIEBkZWZhdWx0
IGVudGVyCi0gICovCi0gIG9uRXZlbnQ6ICdlbnRlcicsCi0KLSAgLyoqCi0gICAgV2hldGhlciB0
aGV5IGBrZXlVcGAgZXZlbnQgdGhhdCB0cmlnZ2VycyBhbiBgYWN0aW9uYCB0byBiZSBzZW50IGNv
bnRpbnVlcwotICAgIHByb3BhZ2F0aW5nIHRvIG90aGVyIHZpZXdzLgotCi0gICAgQnkgZGVmYXVs
dCwgd2hlbiB0aGUgdXNlciBwcmVzc2VzIHRoZSByZXR1cm4ga2V5IG9uIHRoZWlyIGtleWJvYXJk
IGFuZAotICAgIHRoZSB0ZXh0IGZpZWxkIGhhcyBhbiBgYWN0aW9uYCBzZXQsIHRoZSBhY3Rpb24g
d2lsbCBiZSBzZW50IHRvIHRoZSB2aWV3J3MKLSAgICBjb250cm9sbGVyIGFuZCB0aGUga2V5IGV2
ZW50IHdpbGwgc3RvcCBwcm9wYWdhdGluZy4KLQotICAgIElmIHlvdSB3b3VsZCBsaWtlIHBhcmVu
dCB2aWV3cyB0byByZWNlaXZlIHRoZSBga2V5VXBgIGV2ZW50IGV2ZW4gYWZ0ZXIgYW4KLSAgICBh
Y3Rpb24gaGFzIGJlZW4gZGlzcGF0Y2hlZCwgc2V0IGBidWJibGVzYCB0byB0cnVlLgotCi0gICAg
QHByb3BlcnR5IGJ1YmJsZXMKLSAgICBAdHlwZSBCb29sZWFuCi0gICAgQGRlZmF1bHQgZmFsc2UK
LSAgKi8KLSAgYnViYmxlczogZmFsc2UsCi0KLSAgaW50ZXJwcmV0S2V5RXZlbnRzOiBmdW5jdGlv
bihldmVudCkgewotICAgIHZhciBtYXAgPSBFbWJlci5UZXh0U3VwcG9ydC5LRVlfRVZFTlRTOwot
ICAgIHZhciBtZXRob2QgPSBtYXBbZXZlbnQua2V5Q29kZV07Ci0KLSAgICB0aGlzLl9lbGVtZW50
VmFsdWVEaWRDaGFuZ2UoKTsKLSAgICBpZiAobWV0aG9kKSB7IHJldHVybiB0aGlzW21ldGhvZF0o
ZXZlbnQpOyB9Ci0gIH0sCi0KLSAgX2VsZW1lbnRWYWx1ZURpZENoYW5nZTogZnVuY3Rpb24oKSB7
Ci0gICAgc2V0KHRoaXMsICd2YWx1ZScsIHRoaXMuJCgpLnZhbCgpKTsKLSAgfSwKLQotICAvKioK
LSAgICBUaGUgYWN0aW9uIHRvIGJlIHNlbnQgd2hlbiB0aGUgdXNlciBpbnNlcnRzIGEgbmV3IGxp
bmUuCi0KLSAgICBDYWxsZWQgYnkgdGhlIGBFbWJlci5UZXh0U3VwcG9ydGAgbWl4aW4gb24ga2V5
VXAgaWYga2V5Y29kZSBtYXRjaGVzIDEzLgotICAgIFVzZXMgc2VuZEFjdGlvbiB0byBzZW5kIHRo
ZSBgZW50ZXJgIGFjdGlvbiB0byB0aGUgY29udHJvbGxlci4KLQotICAgIEBtZXRob2QgaW5zZXJ0
TmV3bGluZQotICAgIEBwYXJhbSB7RXZlbnR9IGV2ZW50Ci0gICovCi0gIGluc2VydE5ld2xpbmU6
IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgc2VuZEFjdGlvbignZW50ZXInLCB0aGlzLCBldmVudCk7
Ci0gICAgc2VuZEFjdGlvbignaW5zZXJ0LW5ld2xpbmUnLCB0aGlzLCBldmVudCk7Ci0gIH0sCi0K
LSAgLyoqCi0gICAgQ2FsbGVkIHdoZW4gdGhlIHVzZXIgaGl0cyBlc2NhcGUuCi0KLSAgICBDYWxs
ZWQgYnkgdGhlIGBFbWJlci5UZXh0U3VwcG9ydGAgbWl4aW4gb24ga2V5VXAgaWYga2V5Y29kZSBt
YXRjaGVzIDI3LgotICAgIFVzZXMgc2VuZEFjdGlvbiB0byBzZW5kIHRoZSBgZXNjYXBlLXByZXNz
YCBhY3Rpb24gdG8gdGhlIGNvbnRyb2xsZXIuCi0KLSAgICBAbWV0aG9kIGNhbmNlbAotICAgIEBw
YXJhbSB7RXZlbnR9IGV2ZW50Ci0gICovCi0gIGNhbmNlbDogZnVuY3Rpb24oZXZlbnQpIHsKLSAg
ICBzZW5kQWN0aW9uKCdlc2NhcGUtcHJlc3MnLCB0aGlzLCBldmVudCk7Ci0gIH0sCi0KLSAgLyoq
Ci0gICAgQ2FsbGVkIHdoZW4gdGhlIHRleHQgYXJlYSBpcyBmb2N1c2VkLgotCi0gICAgQG1ldGhv
ZCBmb2N1c0luCi0gICAgQHBhcmFtIHtFdmVudH0gZXZlbnQKLSAgKi8KLSAgZm9jdXNJbjogZnVu
Y3Rpb24oZXZlbnQpIHsKLSAgICBzZW5kQWN0aW9uKCdmb2N1cy1pbicsIHRoaXMsIGV2ZW50KTsK
LSAgfSwKLQotICAvKioKLSAgICBDYWxsZWQgd2hlbiB0aGUgdGV4dCBhcmVhIGlzIGJsdXJyZWQu
Ci0KLSAgICBAbWV0aG9kIGZvY3VzT3V0Ci0gICAgQHBhcmFtIHtFdmVudH0gZXZlbnQKLSAgKi8K
LSAgZm9jdXNPdXQ6IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgc2VuZEFjdGlvbignZm9jdXMtb3V0
JywgdGhpcywgZXZlbnQpOwotICB9LAotCi0gIC8qKgotICAgIFRoZSBhY3Rpb24gdG8gYmUgc2Vu
dCB3aGVuIHRoZSB1c2VyIHByZXNzZXMgYSBrZXkuIEVuYWJsZWQgYnkgc2V0dGluZwotICAgIHRo
ZSBgb25FdmVudGAgcHJvcGVydHkgdG8gYGtleVByZXNzYC4KLQotICAgIFVzZXMgc2VuZEFjdGlv
biB0byBzZW5kIHRoZSBga2V5UHJlc3NgIGFjdGlvbiB0byB0aGUgY29udHJvbGxlci4KLQotICAg
IEBtZXRob2Qga2V5UHJlc3MKLSAgICBAcGFyYW0ge0V2ZW50fSBldmVudAotICAqLwotICBrZXlQ
cmVzczogZnVuY3Rpb24oZXZlbnQpIHsKLSAgICBzZW5kQWN0aW9uKCdrZXktcHJlc3MnLCB0aGlz
LCBldmVudCk7Ci0gIH0KLQotfSk7Ci0KLUVtYmVyLlRleHRTdXBwb3J0LktFWV9FVkVOVFMgPSB7
Ci0gIDEzOiAnaW5zZXJ0TmV3bGluZScsCi0gIDI3OiAnY2FuY2VsJwotfTsKLQotLy8gSW4gcHJp
bmNpcGxlLCB0aGlzIHNob3VsZG4ndCBiZSBuZWNlc3NhcnksIGJ1dCB0aGUgbGVnYWN5Ci0vLyBz
ZWN0aW9uQWN0aW9uIHNlbWFudGljcyBmb3IgVGV4dEZpZWxkIGFyZSBkaWZmZXJlbnQgZnJvbQot
Ly8gdGhlIGNvbXBvbmVudCBzZW1hbnRpY3Mgc28gdGhpcyBtZXRob2Qgbm9ybWFsaXplcyB0aGVt
LgotZnVuY3Rpb24gc2VuZEFjdGlvbihldmVudE5hbWUsIHZpZXcsIGV2ZW50KSB7Ci0gIHZhciBh
Y3Rpb24gPSBnZXQodmlldywgZXZlbnROYW1lKSwKLSAgICAgIG9uID0gZ2V0KHZpZXcsICdvbkV2
ZW50JyksCi0gICAgICB2YWx1ZSA9IGdldCh2aWV3LCAndmFsdWUnKTsKLQotICAvLyBiYWNrLWNv
bXBhdCBzdXBwb3J0IGZvciBrZXlQcmVzcyBhcyBhbiBldmVudCBuYW1lIGV2ZW4gdGhvdWdoCi0g
IC8vIGl0J3MgYWxzbyBhIG1ldGhvZCBuYW1lIHRoYXQgY29uc3VtZXMgdGhlIGV2ZW50IChhbmQg
dGhlcmVmb3JlCi0gIC8vIGluY29tcGF0aWJsZSB3aXRoIHNlbmRBY3Rpb24gc2VtYW50aWNzKS4K
LSAgaWYgKG9uID09PSBldmVudE5hbWUgfHwgKG9uID09PSAna2V5UHJlc3MnICYmIGV2ZW50TmFt
ZSA9PT0gJ2tleS1wcmVzcycpKSB7Ci0gICAgdmlldy5zZW5kQWN0aW9uKCdhY3Rpb24nLCB2YWx1
ZSk7Ci0gIH0KLQotICB2aWV3LnNlbmRBY3Rpb24oZXZlbnROYW1lLCB2YWx1ZSk7Ci0KLSAgaWYg
KGFjdGlvbiB8fCBvbiA9PT0gZXZlbnROYW1lKSB7Ci0gICAgaWYoIWdldCh2aWV3LCAnYnViYmxl
cycpKSB7Ci0gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKLSAgICB9Ci0gIH0KLX0KLQot
fSkoKTsKLQotCi0KLShmdW5jdGlvbigpIHsKLS8qKgotQG1vZHVsZSBlbWJlcgotQHN1Ym1vZHVs
ZSBlbWJlci1oYW5kbGViYXJzCi0qLwotCi12YXIgZ2V0ID0gRW1iZXIuZ2V0LCBzZXQgPSBFbWJl
ci5zZXQ7Ci0KLS8qKgotCi0gIFRoZSBpbnRlcm5hbCBjbGFzcyB1c2VkIHRvIGNyZWF0ZSB0ZXh0
IGlucHV0cyB3aGVuIHRoZSBge3tpbnB1dH19YAotICBoZWxwZXIgaXMgdXNlZCB3aXRoIGB0eXBl
YCBvZiBgdGV4dGAuCi0KLSAgU2VlIFtIYW5kbGViYXJzLmhlbHBlcnMuaW5wdXRdKC9hcGkvY2xh
c3Nlcy9FbWJlci5IYW5kbGViYXJzLmhlbHBlcnMuaHRtbCNtZXRob2RfaW5wdXQpICBmb3IgdXNh
Z2UgZGV0YWlscy4KLQotICAjIyBMYXlvdXQgYW5kIExheW91dE5hbWUgcHJvcGVydGllcwotCi0g
IEJlY2F1c2UgSFRNTCBgaW5wdXRgIGVsZW1lbnRzIGFyZSBzZWxmIGNsb3NpbmcgYGxheW91dGAg
YW5kIGBsYXlvdXROYW1lYAotICBwcm9wZXJ0aWVzIHdpbGwgbm90IGJlIGFwcGxpZWQuIFNlZSBb
RW1iZXIuVmlld10oL2FwaS9jbGFzc2VzL0VtYmVyLlZpZXcuaHRtbCkncwotICBsYXlvdXQgc2Vj
dGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLQotICBAY2xhc3MgVGV4dEZpZWxkCi0gIEBuYW1l
c3BhY2UgRW1iZXIKLSAgQGV4dGVuZHMgRW1iZXIuQ29tcG9uZW50Ci0gIEB1c2VzIEVtYmVyLlRl
eHRTdXBwb3J0Ci0qLwotRW1iZXIuVGV4dEZpZWxkID0gRW1iZXIuQ29tcG9uZW50LmV4dGVuZChF
bWJlci5UZXh0U3VwcG9ydCwgewotCi0gIGNsYXNzTmFtZXM6IFsnZW1iZXItdGV4dC1maWVsZCdd
LAotICB0YWdOYW1lOiAiaW5wdXQiLAotICBhdHRyaWJ1dGVCaW5kaW5nczogWyd0eXBlJywgJ3Zh
bHVlJywgJ3NpemUnLCAncGF0dGVybicsICduYW1lJ10sCi0KLSAgLyoqCi0gICAgVGhlIGB2YWx1
ZWAgYXR0cmlidXRlIG9mIHRoZSBpbnB1dCBlbGVtZW50LiBBcyB0aGUgdXNlciBpbnB1dHMgdGV4
dCwgdGhpcwotICAgIHByb3BlcnR5IGlzIHVwZGF0ZWQgbGl2ZS4KLQotICAgIEBwcm9wZXJ0eSB2
YWx1ZQotICAgIEB0eXBlIFN0cmluZwotICAgIEBkZWZhdWx0ICIiCi0gICovCi0gIHZhbHVlOiAi
IiwKLQotICAvKioKLSAgICBUaGUgYHR5cGVgIGF0dHJpYnV0ZSBvZiB0aGUgaW5wdXQgZWxlbWVu
dC4KLQotICAgIEBwcm9wZXJ0eSB0eXBlCi0gICAgQHR5cGUgU3RyaW5nCi0gICAgQGRlZmF1bHQg
InRleHQiCi0gICovCi0gIHR5cGU6ICJ0ZXh0IiwKLQotICAvKioKLSAgICBUaGUgYHNpemVgIG9m
IHRoZSB0ZXh0IGZpZWxkIGluIGNoYXJhY3RlcnMuCi0KLSAgICBAcHJvcGVydHkgc2l6ZQotICAg
IEB0eXBlIFN0cmluZwotICAgIEBkZWZhdWx0IG51bGwKLSAgKi8KLSAgc2l6ZTogbnVsbCwKLQot
ICAvKioKLSAgICBUaGUgYHBhdHRlcm5gIHRoZSBwYXR0ZXJuIGF0dHJpYnV0ZSBvZiBpbnB1dCBl
bGVtZW50LgotCi0gICAgQHByb3BlcnR5IHBhdHRlcm4KLSAgICBAdHlwZSBTdHJpbmcKLSAgICBA
ZGVmYXVsdCBudWxsCi0gICovCi0gIHBhdHRlcm46IG51bGwKLX0pOwotCi19KSgpOwotCi0KLQot
KGZ1bmN0aW9uKCkgewotLyoKLUBtb2R1bGUgZW1iZXIKLUBzdWJtb2R1bGUgZW1iZXItaGFuZGxl
YmFycwotKi8KLQotdmFyIGdldCA9IEVtYmVyLmdldCwgc2V0ID0gRW1iZXIuc2V0OwotCi0vKgot
ICBAY2xhc3MgQnV0dG9uCi0gIEBuYW1lc3BhY2UgRW1iZXIKLSAgQGV4dGVuZHMgRW1iZXIuVmll
dwotICBAdXNlcyBFbWJlci5UYXJnZXRBY3Rpb25TdXBwb3J0Ci0gIEBkZXByZWNhdGVkCi0qLwot
RW1iZXIuQnV0dG9uID0gRW1iZXIuVmlldy5leHRlbmQoRW1iZXIuVGFyZ2V0QWN0aW9uU3VwcG9y
dCwgewotICBjbGFzc05hbWVzOiBbJ2VtYmVyLWJ1dHRvbiddLAotICBjbGFzc05hbWVCaW5kaW5n
czogWydpc0FjdGl2ZSddLAotCi0gIHRhZ05hbWU6ICdidXR0b24nLAotCi0gIHByb3BhZ2F0ZUV2
ZW50czogZmFsc2UsCi0KLSAgYXR0cmlidXRlQmluZGluZ3M6IFsndHlwZScsICdkaXNhYmxlZCcs
ICdocmVmJywgJ3RhYmluZGV4J10sCi0KLSAgLyoKLSAgICBAcHJpdmF0ZQotCi0gICAgT3ZlcnJp
ZGVzIGBUYXJnZXRBY3Rpb25TdXBwb3J0YCdzIGB0YXJnZXRPYmplY3RgIGNvbXB1dGVkCi0gICAg
cHJvcGVydHkgdG8gdXNlIEhhbmRsZWJhcnMtc3BlY2lmaWMgcGF0aCByZXNvbHV0aW9uLgotCi0g
ICAgQHByb3BlcnR5IHRhcmdldE9iamVjdAotICAqLwotICB0YXJnZXRPYmplY3Q6IEVtYmVyLmNv
bXB1dGVkKGZ1bmN0aW9uKCkgewotICAgIHZhciB0YXJnZXQgPSBnZXQodGhpcywgJ3RhcmdldCcp
LAotICAgICAgICByb290ID0gZ2V0KHRoaXMsICdjb250ZXh0JyksCi0gICAgICAgIGRhdGEgPSBn
ZXQodGhpcywgJ3RlbXBsYXRlRGF0YScpOwotCi0gICAgaWYgKHR5cGVvZiB0YXJnZXQgIT09ICdz
dHJpbmcnKSB7IHJldHVybiB0YXJnZXQ7IH0KLQotICAgIHJldHVybiBFbWJlci5IYW5kbGViYXJz
LmdldChyb290LCB0YXJnZXQsIHsgZGF0YTogZGF0YSB9KTsKLSAgfSkucHJvcGVydHkoJ3Rhcmdl
dCcpLAotCi0gIC8vIERlZmF1bHRzIHRvICdidXR0b24nIGlmIHRhZ05hbWUgaXMgJ2lucHV0JyBv
ciAnYnV0dG9uJwotICB0eXBlOiBFbWJlci5jb21wdXRlZChmdW5jdGlvbihrZXkpIHsKLSAgICB2
YXIgdGFnTmFtZSA9IHRoaXMudGFnTmFtZTsKLSAgICBpZiAodGFnTmFtZSA9PT0gJ2lucHV0JyB8
fCB0YWdOYW1lID09PSAnYnV0dG9uJykgeyByZXR1cm4gJ2J1dHRvbic7IH0KLSAgfSksCi0KLSAg
ZGlzYWJsZWQ6IGZhbHNlLAotCi0gIC8vIEFsbG93ICdhJyB0YWdzIHRvIGFjdCBsaWtlIGJ1dHRv
bnMKLSAgaHJlZjogRW1iZXIuY29tcHV0ZWQoZnVuY3Rpb24oKSB7Ci0gICAgcmV0dXJuIHRoaXMu
dGFnTmFtZSA9PT0gJ2EnID8gJyMnIDogbnVsbDsKLSAgfSksCi0KLSAgbW91c2VEb3duOiBmdW5j
dGlvbigpIHsKLSAgICBpZiAoIWdldCh0aGlzLCAnZGlzYWJsZWQnKSkgewotICAgICAgc2V0KHRo
aXMsICdpc0FjdGl2ZScsIHRydWUpOwotICAgICAgdGhpcy5fbW91c2VEb3duID0gdHJ1ZTsKLSAg
ICAgIHRoaXMuX21vdXNlRW50ZXJlZCA9IHRydWU7Ci0gICAgfQotICAgIHJldHVybiBnZXQodGhp
cywgJ3Byb3BhZ2F0ZUV2ZW50cycpOwotICB9LAotCi0gIG1vdXNlTGVhdmU6IGZ1bmN0aW9uKCkg
ewotICAgIGlmICh0aGlzLl9tb3VzZURvd24pIHsKLSAgICAgIHNldCh0aGlzLCAnaXNBY3RpdmUn
LCBmYWxzZSk7Ci0gICAgICB0aGlzLl9tb3VzZUVudGVyZWQgPSBmYWxzZTsKLSAgICB9Ci0gIH0s
Ci0KLSAgbW91c2VFbnRlcjogZnVuY3Rpb24oKSB7Ci0gICAgaWYgKHRoaXMuX21vdXNlRG93bikg
ewotICAgICAgc2V0KHRoaXMsICdpc0FjdGl2ZScsIHRydWUpOwotICAgICAgdGhpcy5fbW91c2VF
bnRlcmVkID0gdHJ1ZTsKLSAgICB9Ci0gIH0sCi0KLSAgbW91c2VVcDogZnVuY3Rpb24oZXZlbnQp
IHsKLSAgICBpZiAoZ2V0KHRoaXMsICdpc0FjdGl2ZScpKSB7Ci0gICAgICAvLyBBY3R1YWxseSBp
bnZva2UgdGhlIGJ1dHRvbidzIHRhcmdldCBhbmQgYWN0aW9uLgotICAgICAgLy8gVGhpcyBtZXRo
b2QgY29tZXMgZnJvbSB0aGUgRW1iZXIuVGFyZ2V0QWN0aW9uU3VwcG9ydCBtaXhpbi4KLSAgICAg
IHRoaXMudHJpZ2dlckFjdGlvbigpOwotICAgICAgc2V0KHRoaXMsICdpc0FjdGl2ZScsIGZhbHNl
KTsKLSAgICB9Ci0KLSAgICB0aGlzLl9tb3VzZURvd24gPSBmYWxzZTsKLSAgICB0aGlzLl9tb3Vz
ZUVudGVyZWQgPSBmYWxzZTsKLSAgICByZXR1cm4gZ2V0KHRoaXMsICdwcm9wYWdhdGVFdmVudHMn
KTsKLSAgfSwKLQotICBrZXlEb3duOiBmdW5jdGlvbihldmVudCkgewotICAgIC8vIEhhbmRsZSBz
cGFjZSBvciBlbnRlcgotICAgIGlmIChldmVudC5rZXlDb2RlID09PSAxMyB8fCBldmVudC5rZXlD
b2RlID09PSAzMikgewotICAgICAgdGhpcy5tb3VzZURvd24oKTsKLSAgICB9Ci0gIH0sCi0KLSAg
a2V5VXA6IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgLy8gSGFuZGxlIHNwYWNlIG9yIGVudGVyCi0g
ICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IDEzIHx8IGV2ZW50LmtleUNvZGUgPT09IDMyKSB7Ci0g
ICAgICB0aGlzLm1vdXNlVXAoKTsKLSAgICB9Ci0gIH0sCi0KLSAgLy8gVE9ETzogSGFuZGxlIHBy
b3BlciB0b3VjaCBiZWhhdmlvci4gSW5jbHVkaW5nIHNob3VsZCBtYWtlIGluYWN0aXZlIHdoZW4K
LSAgLy8gZmluZ2VyIG1vdmVzIG1vcmUgdGhhbiAyMHggb3V0c2lkZSBvZiB0aGUgZWRnZSBvZiB0
aGUgYnV0dG9uICh2cyBtb3VzZQotICAvLyB3aGljaCBnb2VzIGluYWN0aXZlIGFzIHNvb24gYXMg
bW91c2UgZ29lcyBvdXQgb2YgZWRnZXMuKQotCi0gIHRvdWNoU3RhcnQ6IGZ1bmN0aW9uKHRvdWNo
KSB7Ci0gICAgcmV0dXJuIHRoaXMubW91c2VEb3duKHRvdWNoKTsKLSAgfSwKLQotICB0b3VjaEVu
ZDogZnVuY3Rpb24odG91Y2gpIHsKLSAgICByZXR1cm4gdGhpcy5tb3VzZVVwKHRvdWNoKTsKLSAg
fSwKLQotICBpbml0OiBmdW5jdGlvbigpIHsKLSAgICBFbWJlci5kZXByZWNhdGUoIkVtYmVyLkJ1
dHRvbiBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgZnJvbSBmdXR1cmUgcmVsZWFz
ZXMuIENvbnNpZGVyIHVzaW5nIHRoZSBge3thY3Rpb259fWAgaGVscGVyLiIpOwotICAgIHRoaXMu
X3N1cGVyKCk7Ci0gIH0KLX0pOwotCi19KSgpOwotCi0KLQotKGZ1bmN0aW9uKCkgewotLyoqCi1A
bW9kdWxlIGVtYmVyCi1Ac3VibW9kdWxlIGVtYmVyLWhhbmRsZWJhcnMKLSovCi0KLXZhciBnZXQg
PSBFbWJlci5nZXQsIHNldCA9IEVtYmVyLnNldDsKLQotLyoqCi0gIFRoZSBpbnRlcm5hbCBjbGFz
cyB1c2VkIHRvIGNyZWF0ZSB0ZXh0YXJlYSBlbGVtZW50IHdoZW4gdGhlIGB7e3RleHRhcmVhfX1g
Ci0gIGhlbHBlciBpcyB1c2VkLgotCi0gIFNlZSBbaGFuZGxlYmFycy5oZWxwZXJzLnRleHRhcmVh
XSgvYXBpL2NsYXNzZXMvRW1iZXIuSGFuZGxlYmFycy5oZWxwZXJzLmh0bWwjbWV0aG9kX3RleHRh
cmVhKSAgZm9yIHVzYWdlIGRldGFpbHMuCi0KLSAgIyMgTGF5b3V0IGFuZCBMYXlvdXROYW1lIHBy
b3BlcnRpZXMKLQotICBCZWNhdXNlIEhUTUwgYHRleHRhcmVhYCBlbGVtZW50cyBkbyBub3QgY29u
dGFpbiBpbm5lciBIVE1MIHRoZSBgbGF5b3V0YCBhbmQKLSAgYGxheW91dE5hbWVgIHByb3BlcnRp
ZXMgd2lsbCBub3QgYmUgYXBwbGllZC4gU2VlIFtFbWJlci5WaWV3XSgvYXBpL2NsYXNzZXMvRW1i
ZXIuVmlldy5odG1sKSdzCi0gIGxheW91dCBzZWN0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgot
Ci0gIEBjbGFzcyBUZXh0QXJlYQotICBAbmFtZXNwYWNlIEVtYmVyCi0gIEBleHRlbmRzIEVtYmVy
LkNvbXBvbmVudAotICBAdXNlcyBFbWJlci5UZXh0U3VwcG9ydAotKi8KLUVtYmVyLlRleHRBcmVh
ID0gRW1iZXIuQ29tcG9uZW50LmV4dGVuZChFbWJlci5UZXh0U3VwcG9ydCwgewotICBjbGFzc05h
bWVzOiBbJ2VtYmVyLXRleHQtYXJlYSddLAotCi0gIHRhZ05hbWU6ICJ0ZXh0YXJlYSIsCi0gIGF0
dHJpYnV0ZUJpbmRpbmdzOiBbJ3Jvd3MnLCAnY29scycsICduYW1lJ10sCi0gIHJvd3M6IG51bGws
Ci0gIGNvbHM6IG51bGwsCi0KLSAgX3VwZGF0ZUVsZW1lbnRWYWx1ZTogRW1iZXIub2JzZXJ2ZXIo
J3ZhbHVlJywgZnVuY3Rpb24oKSB7Ci0gICAgLy8gV2UgZG8gdGhpcyBjaGVjayBzbyBjdXJzb3Ig
cG9zaXRpb24gZG9lc24ndCBnZXQgYWZmZWN0ZWQgaW4gSUUKLSAgICB2YXIgdmFsdWUgPSBnZXQo
dGhpcywgJ3ZhbHVlJyksCi0gICAgICAgICRlbCA9IHRoaXMuJCgpOwotICAgIGlmICgkZWwgJiYg
dmFsdWUgIT09ICRlbC52YWwoKSkgewotICAgICAgJGVsLnZhbCh2YWx1ZSk7Ci0gICAgfQotICB9
KSwKLQotICBpbml0OiBmdW5jdGlvbigpIHsKLSAgICB0aGlzLl9zdXBlcigpOwotICAgIHRoaXMu
b24oImRpZEluc2VydEVsZW1lbnQiLCB0aGlzLCB0aGlzLl91cGRhdGVFbGVtZW50VmFsdWUpOwot
ICB9Ci0KLX0pOwotCi19KSgpOwotCi0KLQotKGZ1bmN0aW9uKCkgewotLypqc2hpbnQgZXFlcWVx
OmZhbHNlICovCi0KLS8qKgotQG1vZHVsZSBlbWJlcgotQHN1Ym1vZHVsZSBlbWJlci1oYW5kbGVi
YXJzCi0qLwotCi12YXIgc2V0ID0gRW1iZXIuc2V0LAotICAgIGdldCA9IEVtYmVyLmdldCwKLSAg
ICBpbmRleE9mID0gRW1iZXIuRW51bWVyYWJsZVV0aWxzLmluZGV4T2YsCi0gICAgaW5kZXhlc09m
ID0gRW1iZXIuRW51bWVyYWJsZVV0aWxzLmluZGV4ZXNPZiwKLSAgICBmb3JFYWNoID0gRW1iZXIu
RW51bWVyYWJsZVV0aWxzLmZvckVhY2gsCi0gICAgcmVwbGFjZSA9IEVtYmVyLkVudW1lcmFibGVV
dGlscy5yZXBsYWNlLAotICAgIGlzQXJyYXkgPSBFbWJlci5pc0FycmF5LAotICAgIHByZWNvbXBp
bGVUZW1wbGF0ZSA9IEVtYmVyLkhhbmRsZWJhcnMuY29tcGlsZTsKLQotRW1iZXIuU2VsZWN0T3B0
aW9uID0gRW1iZXIuVmlldy5leHRlbmQoewotICB0YWdOYW1lOiAnb3B0aW9uJywKLSAgYXR0cmli
dXRlQmluZGluZ3M6IFsndmFsdWUnLCAnc2VsZWN0ZWQnXSwKLQotICBkZWZhdWx0VGVtcGxhdGU6
IGZ1bmN0aW9uKGNvbnRleHQsIG9wdGlvbnMpIHsKLSAgICBvcHRpb25zID0geyBkYXRhOiBvcHRp
b25zLmRhdGEsIGhhc2g6IHt9IH07Ci0gICAgRW1iZXIuSGFuZGxlYmFycy5oZWxwZXJzLmJpbmQu
Y2FsbChjb250ZXh0LCAidmlldy5sYWJlbCIsIG9wdGlvbnMpOwotICB9LAotCi0gIGluaXQ6IGZ1
bmN0aW9uKCkgewotICAgIHRoaXMubGFiZWxQYXRoRGlkQ2hhbmdlKCk7Ci0gICAgdGhpcy52YWx1
ZVBhdGhEaWRDaGFuZ2UoKTsKLQotICAgIHRoaXMuX3N1cGVyKCk7Ci0gIH0sCi0KLSAgc2VsZWN0
ZWQ6IEVtYmVyLmNvbXB1dGVkKGZ1bmN0aW9uKCkgewotICAgIHZhciBjb250ZW50ID0gZ2V0KHRo
aXMsICdjb250ZW50JyksCi0gICAgICAgIHNlbGVjdGlvbiA9IGdldCh0aGlzLCAncGFyZW50Vmll
dy5zZWxlY3Rpb24nKTsKLSAgICBpZiAoZ2V0KHRoaXMsICdwYXJlbnRWaWV3Lm11bHRpcGxlJykp
IHsKLSAgICAgIHJldHVybiBzZWxlY3Rpb24gJiYgaW5kZXhPZihzZWxlY3Rpb24sIGNvbnRlbnQu
dmFsdWVPZigpKSA+IC0xOwotICAgIH0gZWxzZSB7Ci0gICAgICAvLyBQcmltaXRpdmVzIGdldCBw
YXNzZWQgdGhyb3VnaCBiaW5kaW5ncyBhcyBvYmplY3RzLi4uIHNpbmNlCi0gICAgICAvLyBgbmV3
IE51bWJlcig0KSAhPT0gNGAsIHdlIHVzZSBgPT1gIGJlbG93Ci0gICAgICByZXR1cm4gY29udGVu
dCA9PSBzZWxlY3Rpb247Ci0gICAgfQotICB9KS5wcm9wZXJ0eSgnY29udGVudCcsICdwYXJlbnRW
aWV3LnNlbGVjdGlvbicpLAotCi0gIGxhYmVsUGF0aERpZENoYW5nZTogRW1iZXIub2JzZXJ2ZXIo
J3BhcmVudFZpZXcub3B0aW9uTGFiZWxQYXRoJywgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGxhYmVs
UGF0aCA9IGdldCh0aGlzLCAncGFyZW50Vmlldy5vcHRpb25MYWJlbFBhdGgnKTsKLQotICAgIGlm
ICghbGFiZWxQYXRoKSB7IHJldHVybjsgfQotCi0gICAgRW1iZXIuZGVmaW5lUHJvcGVydHkodGhp
cywgJ2xhYmVsJywgRW1iZXIuY29tcHV0ZWQoZnVuY3Rpb24oKSB7Ci0gICAgICByZXR1cm4gZ2V0
KHRoaXMsIGxhYmVsUGF0aCk7Ci0gICAgfSkucHJvcGVydHkobGFiZWxQYXRoKSk7Ci0gIH0pLAot
Ci0gIHZhbHVlUGF0aERpZENoYW5nZTogRW1iZXIub2JzZXJ2ZXIoJ3BhcmVudFZpZXcub3B0aW9u
VmFsdWVQYXRoJywgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHZhbHVlUGF0aCA9IGdldCh0aGlzLCAn
cGFyZW50Vmlldy5vcHRpb25WYWx1ZVBhdGgnKTsKLQotICAgIGlmICghdmFsdWVQYXRoKSB7IHJl
dHVybjsgfQotCi0gICAgRW1iZXIuZGVmaW5lUHJvcGVydHkodGhpcywgJ3ZhbHVlJywgRW1iZXIu
Y29tcHV0ZWQoZnVuY3Rpb24oKSB7Ci0gICAgICByZXR1cm4gZ2V0KHRoaXMsIHZhbHVlUGF0aCk7
Ci0gICAgfSkucHJvcGVydHkodmFsdWVQYXRoKSk7Ci0gIH0pCi19KTsKLQotRW1iZXIuU2VsZWN0
T3B0Z3JvdXAgPSBFbWJlci5Db2xsZWN0aW9uVmlldy5leHRlbmQoewotICB0YWdOYW1lOiAnb3B0
Z3JvdXAnLAotICBhdHRyaWJ1dGVCaW5kaW5nczogWydsYWJlbCddLAotCi0gIHNlbGVjdGlvbkJp
bmRpbmc6ICdwYXJlbnRWaWV3LnNlbGVjdGlvbicsCi0gIG11bHRpcGxlQmluZGluZzogJ3BhcmVu
dFZpZXcubXVsdGlwbGUnLAotICBvcHRpb25MYWJlbFBhdGhCaW5kaW5nOiAncGFyZW50Vmlldy5v
cHRpb25MYWJlbFBhdGgnLAotICBvcHRpb25WYWx1ZVBhdGhCaW5kaW5nOiAncGFyZW50Vmlldy5v
cHRpb25WYWx1ZVBhdGgnLAotCi0gIGl0ZW1WaWV3Q2xhc3NCaW5kaW5nOiAncGFyZW50Vmlldy5v
cHRpb25WaWV3JwotfSk7Ci0KLS8qKgotICBUaGUgYEVtYmVyLlNlbGVjdGAgdmlldyBjbGFzcyBy
ZW5kZXJzIGEKLSAgW3NlbGVjdF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4vSFRN
TC9FbGVtZW50L3NlbGVjdCkgSFRNTCBlbGVtZW50LAotICBhbGxvd2luZyB0aGUgdXNlciB0byBj
aG9vc2UgZnJvbSBhIGxpc3Qgb2Ygb3B0aW9ucy4KLQotICBUaGUgdGV4dCBhbmQgYHZhbHVlYCBw
cm9wZXJ0eSBvZiBlYWNoIGA8b3B0aW9uPmAgZWxlbWVudCB3aXRoaW4gdGhlCi0gIGA8c2VsZWN0
PmAgZWxlbWVudCBhcmUgcG9wdWxhdGVkIGZyb20gdGhlIG9iamVjdHMgaW4gdGhlIGBFbGVtZW50
LlNlbGVjdGAncwotICBgY29udGVudGAgcHJvcGVydHkuIFRoZSB1bmRlcmx5aW5nIGRhdGEgb2Jq
ZWN0IG9mIHRoZSBzZWxlY3RlZCBgPG9wdGlvbj5gIGlzCi0gIHN0b3JlZCBpbiB0aGUgYEVsZW1l
bnQuU2VsZWN0YCdzIGB2YWx1ZWAgcHJvcGVydHkuCi0KLSAgIyMgVGhlIENvbnRlbnQgUHJvcGVy
dHkgKGFycmF5IG9mIHN0cmluZ3MpCi0KLSAgVGhlIHNpbXBsZXN0IHZlcnNpb24gb2YgYW4gYEVt
YmVyLlNlbGVjdGAgdGFrZXMgYW4gYXJyYXkgb2Ygc3RyaW5ncyBhcyBpdHMKLSAgYGNvbnRlbnRg
IHByb3BlcnR5LiBUaGUgc3RyaW5nIHdpbGwgYmUgdXNlZCBhcyBib3RoIHRoZSBgdmFsdWVgIHBy
b3BlcnR5IGFuZAotICB0aGUgaW5uZXIgdGV4dCBvZiBlYWNoIGA8b3B0aW9uPmAgZWxlbWVudCBp
bnNpZGUgdGhlIHJlbmRlcmVkIGA8c2VsZWN0PmAuCi0KLSAgRXhhbXBsZToKLQotICBgYGBqYXZh
c2NyaXB0Ci0gIEFwcC5BcHBsaWNhdGlvbkNvbnRyb2xsZXIgPSBFbWJlci5Db250cm9sbGVyLmV4
dGVuZCh7Ci0gICAgbmFtZXM6IFsiWWVodWRhIiwgIlRvbSJdCi0gIH0pOwotICBgYGAKLQotICBg
YGBoYW5kbGViYXJzCi0gIHt7dmlldyBFbWJlci5TZWxlY3QgY29udGVudD1uYW1lc319Ci0gIGBg
YAotCi0gIFdvdWxkIHJlc3VsdCBpbiB0aGUgZm9sbG93aW5nIEhUTUw6Ci0KLSAgYGBgaHRtbAot
ICA8c2VsZWN0IGNsYXNzPSJlbWJlci1zZWxlY3QiPgotICAgIDxvcHRpb24gdmFsdWU9IlllaHVk
YSI+WWVodWRhPC9vcHRpb24+Ci0gICAgPG9wdGlvbiB2YWx1ZT0iVG9tIj5Ub208L29wdGlvbj4K
LSAgPC9zZWxlY3Q+Ci0gIGBgYAotCi0gIFlvdSBjYW4gY29udHJvbCB3aGljaCBgPG9wdGlvbj5g
IGlzIHNlbGVjdGVkIHRocm91Z2ggdGhlIGBFbWJlci5TZWxlY3RgJ3MKLSAgYHZhbHVlYCBwcm9w
ZXJ0eToKLQotICBgYGBqYXZhc2NyaXB0Ci0gIEFwcC5BcHBsaWNhdGlvbkNvbnRyb2xsZXIgPSBF
bWJlci5Db250cm9sbGVyLmV4dGVuZCh7Ci0gICAgc2VsZWN0ZWROYW1lOiAnVG9tJywKLSAgICBu
YW1lczogWyJZZWh1ZGEiLCAiVG9tIl0KLSAgfSk7Ci0gIGBgYAotCi0gIGBgYGhhbmRsZWJhcnMK
LSAge3t2aWV3IEVtYmVyLlNlbGVjdAotICAgICAgICAgY29udGVudD1uYW1lcwotICAgICAgICAg
dmFsdWU9c2VsZWN0ZWROYW1lCi0gIH19Ci0gIGBgYAotCi0gIFdvdWxkIHJlc3VsdCBpbiB0aGUg
Zm9sbG93aW5nIEhUTUwgd2l0aCB0aGUgYDxvcHRpb24+YCBmb3IgJ1RvbScgc2VsZWN0ZWQ6Ci0K
LSAgYGBgaHRtbAotICA8c2VsZWN0IGNsYXNzPSJlbWJlci1zZWxlY3QiPgotICAgIDxvcHRpb24g
dmFsdWU9IlllaHVkYSI+WWVodWRhPC9vcHRpb24+Ci0gICAgPG9wdGlvbiB2YWx1ZT0iVG9tIiBz
ZWxlY3RlZD0ic2VsZWN0ZWQiPlRvbTwvb3B0aW9uPgotICA8L3NlbGVjdD4KLSAgYGBgCi0KLSAg
QSB1c2VyIGludGVyYWN0aW5nIHdpdGggdGhlIHJlbmRlcmVkIGA8c2VsZWN0PmAgdG8gY2hvb3Nl
ICJZZWh1ZGEiIHdvdWxkCi0gIHVwZGF0ZSB0aGUgdmFsdWUgb2YgYHNlbGVjdGVkTmFtZWAgdG8g
IlllaHVkYSIuCi0KLSAgIyMgVGhlIENvbnRlbnQgUHJvcGVydHkgKGFycmF5IG9mIE9iamVjdHMp
Ci0KLSAgQW4gYEVtYmVyLlNlbGVjdGAgY2FuIGFsc28gdGFrZSBhbiBhcnJheSBvZiBKYXZhU2Ny
aXB0IG9yIEVtYmVyIG9iamVjdHMgYXMKLSAgaXRzIGBjb250ZW50YCBwcm9wZXJ0eS4KLQotICBX
aGVuIHVzaW5nIG9iamVjdHMgeW91IG5lZWQgdG8gdGVsbCB0aGUgYEVtYmVyLlNlbGVjdGAgd2hp
Y2ggcHJvcGVydHkgc2hvdWxkCi0gIGJlIGFjY2Vzc2VkIG9uIGVhY2ggb2JqZWN0IHRvIHN1cHBs
eSB0aGUgYHZhbHVlYCBhdHRyaWJ1dGUgb2YgdGhlIGA8b3B0aW9uPmAKLSAgYW5kIHdoaWNoIHBy
b3BlcnR5IHNob3VsZCBiZSB1c2VkIHRvIHN1cHBseSB0aGUgZWxlbWVudCB0ZXh0LgotCi0gIFRo
ZSBgb3B0aW9uVmFsdWVQYXRoYCBvcHRpb24gaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSBwYXRoIG9u
IGVhY2ggb2JqZWN0IHRvCi0gIHRoZSBkZXNpcmVkIHByb3BlcnR5IGZvciB0aGUgYHZhbHVlYCBh
dHRyaWJ1dGUuIFRoZSBgb3B0aW9uTGFiZWxQYXRoYAotICBzcGVjaWZpZXMgdGhlIHBhdGggb24g
ZWFjaCBvYmplY3QgdG8gdGhlIGRlc2lyZWQgcHJvcGVydHkgZm9yIHRoZQotICBlbGVtZW50J3Mg
dGV4dC4gQm90aCBwYXRocyBtdXN0IHJlZmVyZW5jZSBlYWNoIG9iamVjdCBpdHNlbGYgYXMgYGNv
bnRlbnRgOgotCi0gIGBgYGphdmFzY3JpcHQKLSAgQXBwLkFwcGxpY2F0aW9uQ29udHJvbGxlciA9
IEVtYmVyLkNvbnRyb2xsZXIuZXh0ZW5kKHsKLSAgICBwcm9ncmFtbWVyczogWwotICAgICAge2Zp
cnN0TmFtZTogIlllaHVkYSIsIGlkOiAxfSwKLSAgICAgIHtmaXJzdE5hbWU6ICJUb20iLCAgICBp
ZDogMn0KLSAgICBdCi0gIH0pOwotICBgYGAKLQotICBgYGBoYW5kbGViYXJzCi0gIHt7dmlldyBF
bWJlci5TZWxlY3QKLSAgICAgICAgIGNvbnRlbnQ9cHJvZ3JhbW1lcnMKLSAgICAgICAgIG9wdGlv
blZhbHVlUGF0aD0iY29udGVudC5pZCIKLSAgICAgICAgIG9wdGlvbkxhYmVsUGF0aD0iY29udGVu
dC5maXJzdE5hbWUifX0KLSAgYGBgCi0KLSAgV291bGQgcmVzdWx0IGluIHRoZSBmb2xsb3dpbmcg
SFRNTDoKLQotICBgYGBodG1sCi0gIDxzZWxlY3QgY2xhc3M9ImVtYmVyLXNlbGVjdCI+Ci0gICAg
PG9wdGlvbiB2YWx1ZT0iMSI+WWVodWRhPC9vcHRpb24+Ci0gICAgPG9wdGlvbiB2YWx1ZT0iMiI+
VG9tPC9vcHRpb24+Ci0gIDwvc2VsZWN0PgotICBgYGAKLQotICBUaGUgYHZhbHVlYCBhdHRyaWJ1
dGUgb2YgdGhlIHNlbGVjdGVkIGA8b3B0aW9uPmAgd2l0aGluIGFuIGBFbWJlci5TZWxlY3RgCi0g
IGNhbiBiZSBib3VuZCB0byBhIHByb3BlcnR5IG9uIGFub3RoZXIgb2JqZWN0OgotCi0gIGBgYGph
dmFzY3JpcHQKLSAgQXBwLkFwcGxpY2F0aW9uQ29udHJvbGxlciA9IEVtYmVyLkNvbnRyb2xsZXIu
ZXh0ZW5kKHsKLSAgICBwcm9ncmFtbWVyczogWwotICAgICAge2ZpcnN0TmFtZTogIlllaHVkYSIs
IGlkOiAxfSwKLSAgICAgIHtmaXJzdE5hbWU6ICJUb20iLCAgICBpZDogMn0KLSAgICBdLAotICAg
IGN1cnJlbnRQcm9ncmFtbWVyOiB7Ci0gICAgICBpZDogMgotICAgIH0KLSAgfSk7Ci0gIGBgYAot
Ci0gIGBgYGhhbmRsZWJhcnMKLSAge3t2aWV3IEVtYmVyLlNlbGVjdAotICAgICAgICAgY29udGVu
dD1wcm9ncmFtbWVycwotICAgICAgICAgb3B0aW9uVmFsdWVQYXRoPSJjb250ZW50LmlkIgotICAg
ICAgICAgb3B0aW9uTGFiZWxQYXRoPSJjb250ZW50LmZpcnN0TmFtZSIKLSAgICAgICAgIHZhbHVl
PWN1cnJlbnRQcm9ncmFtbWVyLmlkfX0KLSAgYGBgCi0KLSAgV291bGQgcmVzdWx0IGluIHRoZSBm
b2xsb3dpbmcgSFRNTCB3aXRoIGEgc2VsZWN0ZWQgb3B0aW9uOgotCi0gIGBgYGh0bWwKLSAgPHNl
bGVjdCBjbGFzcz0iZW1iZXItc2VsZWN0Ij4KLSAgICA8b3B0aW9uIHZhbHVlPSIxIj5ZZWh1ZGE8
L29wdGlvbj4KLSAgICA8b3B0aW9uIHZhbHVlPSIyIiBzZWxlY3RlZD0ic2VsZWN0ZWQiPlRvbTwv
b3B0aW9uPgotICA8L3NlbGVjdD4KLSAgYGBgCi0KLSAgSW50ZXJhY3Rpbmcgd2l0aCB0aGUgcmVu
ZGVyZWQgZWxlbWVudCBieSBzZWxlY3RpbmcgdGhlIGZpcnN0IG9wdGlvbgotICAoJ1llaHVkYScp
IHdpbGwgdXBkYXRlIHRoZSBgaWRgIG9mIGBjdXJyZW50UHJvZ3JhbW1lcmAKLSAgdG8gbWF0Y2gg
dGhlIGB2YWx1ZWAgcHJvcGVydHkgb2YgdGhlIG5ld2x5IHNlbGVjdGVkIGA8b3B0aW9uPmAuCi0K
LSAgQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBjb250cm9sIHNlbGVjdGlvbiB0aHJvdWdoIHRoZSB1
bmRlcmx5aW5nIG9iamVjdHMKLSAgdXNlZCB0byByZW5kZXIgZWFjaCBvYmplY3QgYnkgYmluZGlu
ZyB0aGUgYHNlbGVjdGlvbmAgb3B0aW9uLiBXaGVuIHRoZSBzZWxlY3RlZAotICBgPG9wdGlvbj5g
IGlzIGNoYW5nZWQsIHRoZSBwcm9wZXJ0eSBwYXRoIHByb3ZpZGVkIHRvIGBzZWxlY3Rpb25gCi0g
IHdpbGwgYmUgdXBkYXRlZCB0byBtYXRjaCB0aGUgY29udGVudCBvYmplY3Qgb2YgdGhlIHJlbmRl
cmVkIGA8b3B0aW9uPmAKLSAgZWxlbWVudDoKLQotICBgYGBqYXZhc2NyaXB0Ci0gIEFwcC5BcHBs
aWNhdGlvbkNvbnRyb2xsZXIgPSBFbWJlci5Db250cm9sbGVyLmV4dGVuZCh7Ci0gICAgc2VsZWN0
ZWRQZXJzb246IG51bGwsCi0gICAgcHJvZ3JhbW1lcnM6IFsKLSAgICAgIHtmaXJzdE5hbWU6ICJZ
ZWh1ZGEiLCBpZDogMX0sCi0gICAgICB7Zmlyc3ROYW1lOiAiVG9tIiwgICAgaWQ6IDJ9Ci0gICAg
XQotICB9KTsKLSAgYGBgCi0KLSAgYGBgaGFuZGxlYmFycwotICB7e3ZpZXcgRW1iZXIuU2VsZWN0
Ci0gICAgICAgICBjb250ZW50PXByb2dyYW1tZXJzCi0gICAgICAgICBvcHRpb25WYWx1ZVBhdGg9
ImNvbnRlbnQuaWQiCi0gICAgICAgICBvcHRpb25MYWJlbFBhdGg9ImNvbnRlbnQuZmlyc3ROYW1l
IgotICAgICAgICAgc2VsZWN0aW9uPXNlbGVjdGVkUGVyc29ufX0KLSAgYGBgCi0KLSAgV291bGQg
cmVzdWx0IGluIHRoZSBmb2xsb3dpbmcgSFRNTCB3aXRoIGEgc2VsZWN0ZWQgb3B0aW9uOgotCi0g
IGBgYGh0bWwKLSAgPHNlbGVjdCBjbGFzcz0iZW1iZXItc2VsZWN0Ij4KLSAgICA8b3B0aW9uIHZh
bHVlPSIxIj5ZZWh1ZGE8L29wdGlvbj4KLSAgICA8b3B0aW9uIHZhbHVlPSIyIiBzZWxlY3RlZD0i
c2VsZWN0ZWQiPlRvbTwvb3B0aW9uPgotICA8L3NlbGVjdD4KLSAgYGBgCi0KLSAgSW50ZXJhY3Rp
bmcgd2l0aCB0aGUgcmVuZGVyZWQgZWxlbWVudCBieSBzZWxlY3RpbmcgdGhlIGZpcnN0IG9wdGlv
bgotICAoJ1llaHVkYScpIHdpbGwgdXBkYXRlIHRoZSBgc2VsZWN0ZWRQZXJzb25gIHRvIG1hdGNo
IHRoZSBvYmplY3Qgb2YKLSAgdGhlIG5ld2x5IHNlbGVjdGVkIGA8b3B0aW9uPmAuIEluIHRoaXMg
Y2FzZSBpdCBpcyB0aGUgZmlyc3Qgb2JqZWN0Ci0gIGluIHRoZSBgcHJvZ3JhbW1lcnNgCi0KLSAg
IyMgU3VwcGx5aW5nIGEgUHJvbXB0Ci0KLSAgQSBgbnVsbGAgdmFsdWUgZm9yIHRoZSBgRW1iZXIu
U2VsZWN0YCdzIGB2YWx1ZWAgb3IgYHNlbGVjdGlvbmAgcHJvcGVydHkKLSAgcmVzdWx0cyBpbiB0
aGVyZSBiZWluZyBubyBgPG9wdGlvbj5gIHdpdGggYSBgc2VsZWN0ZWRgIGF0dHJpYnV0ZToKLQot
ICBgYGBqYXZhc2NyaXB0Ci0gIEFwcC5BcHBsaWNhdGlvbkNvbnRyb2xsZXIgPSBFbWJlci5Db250
cm9sbGVyLmV4dGVuZCh7Ci0gICAgc2VsZWN0ZWRQcm9ncmFtbWVyOiBudWxsLAotICAgIHByb2dy
YW1tZXJzOiBbCi0gICAgICAiWWVodWRhIiwKLSAgICAgICJUb20iCi0gICAgXQotICB9KTsKLSAg
YGBgCi0KLSAgYGBgIGhhbmRsZWJhcnMKLSAge3t2aWV3IEVtYmVyLlNlbGVjdAotICAgICAgICAg
Y29udGVudD1wcm9ncmFtbWVycwotICAgICAgICAgdmFsdWU9c2VsZWN0ZWRQcm9ncmFtbWVyCi0g
IH19Ci0gIGBgYAotCi0gIFdvdWxkIHJlc3VsdCBpbiB0aGUgZm9sbG93aW5nIEhUTUw6Ci0KLSAg
YGBgaHRtbAotICA8c2VsZWN0IGNsYXNzPSJlbWJlci1zZWxlY3QiPgotICAgIDxvcHRpb24gdmFs
dWU9IlllaHVkYSI+WWVodWRhPC9vcHRpb24+Ci0gICAgPG9wdGlvbiB2YWx1ZT0iVG9tIj5Ub208
L29wdGlvbj4KLSAgPC9zZWxlY3Q+Ci0gIGBgYAotCi0gIEFsdGhvdWdoIGBzZWxlY3RlZFByb2dy
YW1tZXJgIGlzIGBudWxsYCBhbmQgbm8gYDxvcHRpb24+YAotICBoYXMgYSBgc2VsZWN0ZWRgIGF0
dHJpYnV0ZSB0aGUgcmVuZGVyZWQgSFRNTCB3aWxsIGRpc3BsYXkgdGhlCi0gIGZpcnN0IGl0ZW0g
YXMgdGhvdWdoIGl0IHdlcmUgc2VsZWN0ZWQuIFlvdSBjYW4gc3VwcGx5IGEgc3RyaW5nCi0gIHZh
bHVlIGZvciB0aGUgYEVtYmVyLlNlbGVjdGAgdG8gZGlzcGxheSB3aGVuIHRoZXJlIGlzIG5vIHNl
bGVjdGlvbgotICB3aXRoIHRoZSBgcHJvbXB0YCBvcHRpb246Ci0KLSAgYGBgamF2YXNjcmlwdAot
ICBBcHAuQXBwbGljYXRpb25Db250cm9sbGVyID0gRW1iZXIuQ29udHJvbGxlci5leHRlbmQoewot
ICAgIHNlbGVjdGVkUHJvZ3JhbW1lcjogbnVsbCwKLSAgICBwcm9ncmFtbWVyczogWwotICAgICAg
IlllaHVkYSIsCi0gICAgICAiVG9tIgotICAgIF0KLSAgfSk7Ci0gIGBgYAotCi0gIGBgYGhhbmRs
ZWJhcnMKLSAge3t2aWV3IEVtYmVyLlNlbGVjdAotICAgICAgICAgY29udGVudD1wcm9ncmFtbWVy
cwotICAgICAgICAgdmFsdWU9c2VsZWN0ZWRQcm9ncmFtbWVyCi0gICAgICAgICBwcm9tcHQ9IlBs
ZWFzZSBzZWxlY3QgYSBuYW1lIgotICB9fQotICBgYGAKLQotICBXb3VsZCByZXN1bHQgaW4gdGhl
IGZvbGxvd2luZyBIVE1MOgotCi0gIGBgYGh0bWwKLSAgPHNlbGVjdCBjbGFzcz0iZW1iZXItc2Vs
ZWN0Ij4KLSAgICA8b3B0aW9uPlBsZWFzZSBzZWxlY3QgYSBuYW1lPC9vcHRpb24+Ci0gICAgPG9w
dGlvbiB2YWx1ZT0iWWVodWRhIj5ZZWh1ZGE8L29wdGlvbj4KLSAgICA8b3B0aW9uIHZhbHVlPSJU
b20iPlRvbTwvb3B0aW9uPgotICA8L3NlbGVjdD4KLSAgYGBgCi0KLSAgQGNsYXNzIFNlbGVjdAot
ICBAbmFtZXNwYWNlIEVtYmVyCi0gIEBleHRlbmRzIEVtYmVyLlZpZXcKLSovCi1FbWJlci5TZWxl
Y3QgPSBFbWJlci5WaWV3LmV4dGVuZCh7Ci0gIHRhZ05hbWU6ICdzZWxlY3QnLAotICBjbGFzc05h
bWVzOiBbJ2VtYmVyLXNlbGVjdCddLAotICBkZWZhdWx0VGVtcGxhdGU6IEVtYmVyLkhhbmRsZWJh
cnMudGVtcGxhdGUoZnVuY3Rpb24gYW5vbnltb3VzKEhhbmRsZWJhcnMsZGVwdGgwLGhlbHBlcnMs
cGFydGlhbHMsZGF0YSkgewotdGhpcy5jb21waWxlckluZm8gPSBbNCwnPj0gMS4wLjAnXTsKLWhl
bHBlcnMgPSB0aGlzLm1lcmdlKGhlbHBlcnMsIEVtYmVyLkhhbmRsZWJhcnMuaGVscGVycyk7IGRh
dGEgPSBkYXRhIHx8IHt9OwotICB2YXIgYnVmZmVyID0gJycsIHN0YWNrMSwgaGFzaFR5cGVzLCBo
YXNoQ29udGV4dHMsIGVzY2FwZUV4cHJlc3Npb249dGhpcy5lc2NhcGVFeHByZXNzaW9uLCBzZWxm
PXRoaXM7Ci0KLWZ1bmN0aW9uIHByb2dyYW0xKGRlcHRoMCxkYXRhKSB7Ci0gIAotICB2YXIgYnVm
ZmVyID0gJycsIHN0YWNrMSwgaGFzaFR5cGVzLCBoYXNoQ29udGV4dHM7Ci0gIGRhdGEuYnVmZmVy
LnB1c2goIjxvcHRpb24gdmFsdWU9XCJcIj4iKTsKLSAgaGFzaFR5cGVzID0ge307Ci0gIGhhc2hD
b250ZXh0cyA9IHt9OwotICBzdGFjazEgPSBoZWxwZXJzLl90cmlhZ2VNdXN0YWNoZS5jYWxsKGRl
cHRoMCwgInZpZXcucHJvbXB0Iiwge2hhc2g6e30sY29udGV4dHM6W2RlcHRoMF0sdHlwZXM6WyJJ
RCJdLGhhc2hDb250ZXh0czpoYXNoQ29udGV4dHMsaGFzaFR5cGVzOmhhc2hUeXBlcyxkYXRhOmRh
dGF9KTsKLSAgaWYoc3RhY2sxIHx8IHN0YWNrMSA9PT0gMCkgeyBkYXRhLmJ1ZmZlci5wdXNoKHN0
YWNrMSk7IH0KLSAgZGF0YS5idWZmZXIucHVzaCgiPC9vcHRpb24+Iik7Ci0gIHJldHVybiBidWZm
ZXI7Ci0gIH0KLQotZnVuY3Rpb24gcHJvZ3JhbTMoZGVwdGgwLGRhdGEpIHsKLSAgCi0gIHZhciBz
dGFjazEsIGhhc2hUeXBlcywgaGFzaENvbnRleHRzOwotICBoYXNoVHlwZXMgPSB7fTsKLSAgaGFz
aENvbnRleHRzID0ge307Ci0gIHN0YWNrMSA9IGhlbHBlcnMuZWFjaC5jYWxsKGRlcHRoMCwgInZp
ZXcuZ3JvdXBlZENvbnRlbnQiLCB7aGFzaDp7fSxpbnZlcnNlOnNlbGYubm9vcCxmbjpzZWxmLnBy
b2dyYW0oNCwgcHJvZ3JhbTQsIGRhdGEpLGNvbnRleHRzOltkZXB0aDBdLHR5cGVzOlsiSUQiXSxo
YXNoQ29udGV4dHM6aGFzaENvbnRleHRzLGhhc2hUeXBlczpoYXNoVHlwZXMsZGF0YTpkYXRhfSk7
Ci0gIGlmKHN0YWNrMSB8fCBzdGFjazEgPT09IDApIHsgZGF0YS5idWZmZXIucHVzaChzdGFjazEp
OyB9Ci0gIGVsc2UgeyBkYXRhLmJ1ZmZlci5wdXNoKCcnKTsgfQotICB9Ci1mdW5jdGlvbiBwcm9n
cmFtNChkZXB0aDAsZGF0YSkgewotICAKLSAgdmFyIGhhc2hDb250ZXh0cywgaGFzaFR5cGVzOwot
ICBoYXNoQ29udGV4dHMgPSB7J2NvbnRlbnQnOiBkZXB0aDAsJ2xhYmVsJzogZGVwdGgwfTsKLSAg
aGFzaFR5cGVzID0geydjb250ZW50JzogIklEIiwnbGFiZWwnOiAiSUQifTsKLSAgZGF0YS5idWZm
ZXIucHVzaChlc2NhcGVFeHByZXNzaW9uKGhlbHBlcnMudmlldy5jYWxsKGRlcHRoMCwgInZpZXcu
Z3JvdXBWaWV3Iiwge2hhc2g6ewotICAgICdjb250ZW50JzogKCJjb250ZW50IiksCi0gICAgJ2xh
YmVsJzogKCJsYWJlbCIpCi0gIH0sY29udGV4dHM6W2RlcHRoMF0sdHlwZXM6WyJJRCJdLGhhc2hD
b250ZXh0czpoYXNoQ29udGV4dHMsaGFzaFR5cGVzOmhhc2hUeXBlcyxkYXRhOmRhdGF9KSkpOwot
ICB9Ci0KLWZ1bmN0aW9uIHByb2dyYW02KGRlcHRoMCxkYXRhKSB7Ci0gIAotICB2YXIgc3RhY2sx
LCBoYXNoVHlwZXMsIGhhc2hDb250ZXh0czsKLSAgaGFzaFR5cGVzID0ge307Ci0gIGhhc2hDb250
ZXh0cyA9IHt9OwotICBzdGFjazEgPSBoZWxwZXJzLmVhY2guY2FsbChkZXB0aDAsICJ2aWV3LmNv
bnRlbnQiLCB7aGFzaDp7fSxpbnZlcnNlOnNlbGYubm9vcCxmbjpzZWxmLnByb2dyYW0oNywgcHJv
Z3JhbTcsIGRhdGEpLGNvbnRleHRzOltkZXB0aDBdLHR5cGVzOlsiSUQiXSxoYXNoQ29udGV4dHM6
aGFzaENvbnRleHRzLGhhc2hUeXBlczpoYXNoVHlwZXMsZGF0YTpkYXRhfSk7Ci0gIGlmKHN0YWNr
MSB8fCBzdGFjazEgPT09IDApIHsgZGF0YS5idWZmZXIucHVzaChzdGFjazEpOyB9Ci0gIGVsc2Ug
eyBkYXRhLmJ1ZmZlci5wdXNoKCcnKTsgfQotICB9Ci1mdW5jdGlvbiBwcm9ncmFtNyhkZXB0aDAs
ZGF0YSkgewotICAKLSAgdmFyIGhhc2hDb250ZXh0cywgaGFzaFR5cGVzOwotICBoYXNoQ29udGV4
dHMgPSB7J2NvbnRlbnQnOiBkZXB0aDB9OwotICBoYXNoVHlwZXMgPSB7J2NvbnRlbnQnOiAiSUQi
fTsKLSAgZGF0YS5idWZmZXIucHVzaChlc2NhcGVFeHByZXNzaW9uKGhlbHBlcnMudmlldy5jYWxs
KGRlcHRoMCwgInZpZXcub3B0aW9uVmlldyIsIHtoYXNoOnsKLSAgICAnY29udGVudCc6ICgiIikK
LSAgfSxjb250ZXh0czpbZGVwdGgwXSx0eXBlczpbIklEIl0saGFzaENvbnRleHRzOmhhc2hDb250
ZXh0cyxoYXNoVHlwZXM6aGFzaFR5cGVzLGRhdGE6ZGF0YX0pKSk7Ci0gIH0KLQotICBoYXNoVHlw
ZXMgPSB7fTsKLSAgaGFzaENvbnRleHRzID0ge307Ci0gIHN0YWNrMSA9IGhlbHBlcnNbJ2lmJ10u
Y2FsbChkZXB0aDAsICJ2aWV3LnByb21wdCIsIHtoYXNoOnt9LGludmVyc2U6c2VsZi5ub29wLGZu
OnNlbGYucHJvZ3JhbSgxLCBwcm9ncmFtMSwgZGF0YSksY29udGV4dHM6W2RlcHRoMF0sdHlwZXM6
WyJJRCJdLGhhc2hDb250ZXh0czpoYXNoQ29udGV4dHMsaGFzaFR5cGVzOmhhc2hUeXBlcyxkYXRh
OmRhdGF9KTsKLSAgaWYoc3RhY2sxIHx8IHN0YWNrMSA9PT0gMCkgeyBkYXRhLmJ1ZmZlci5wdXNo
KHN0YWNrMSk7IH0KLSAgaGFzaFR5cGVzID0ge307Ci0gIGhhc2hDb250ZXh0cyA9IHt9OwotICBz
dGFjazEgPSBoZWxwZXJzWydpZiddLmNhbGwoZGVwdGgwLCAidmlldy5vcHRpb25Hcm91cFBhdGgi
LCB7aGFzaDp7fSxpbnZlcnNlOnNlbGYucHJvZ3JhbSg2LCBwcm9ncmFtNiwgZGF0YSksZm46c2Vs
Zi5wcm9ncmFtKDMsIHByb2dyYW0zLCBkYXRhKSxjb250ZXh0czpbZGVwdGgwXSx0eXBlczpbIklE
Il0saGFzaENvbnRleHRzOmhhc2hDb250ZXh0cyxoYXNoVHlwZXM6aGFzaFR5cGVzLGRhdGE6ZGF0
YX0pOwotICBpZihzdGFjazEgfHwgc3RhY2sxID09PSAwKSB7IGRhdGEuYnVmZmVyLnB1c2goc3Rh
Y2sxKTsgfQotICByZXR1cm4gYnVmZmVyOwotICAKLX0pLAotICBhdHRyaWJ1dGVCaW5kaW5nczog
WydtdWx0aXBsZScsICdkaXNhYmxlZCcsICd0YWJpbmRleCcsICduYW1lJ10sCi0KLSAgLyoqCi0g
ICAgVGhlIGBtdWx0aXBsZWAgYXR0cmlidXRlIG9mIHRoZSBzZWxlY3QgZWxlbWVudC4gSW5kaWNh
dGVzIHdoZXRoZXIgbXVsdGlwbGUKLSAgICBvcHRpb25zIGNhbiBiZSBzZWxlY3RlZC4KLQotICAg
IEBwcm9wZXJ0eSBtdWx0aXBsZQotICAgIEB0eXBlIEJvb2xlYW4KLSAgICBAZGVmYXVsdCBmYWxz
ZQotICAqLwotICBtdWx0aXBsZTogZmFsc2UsCi0KLSAgLyoqCi0gICAgVGhlIGBkaXNhYmxlZGAg
YXR0cmlidXRlIG9mIHRoZSBzZWxlY3QgZWxlbWVudC4gSW5kaWNhdGVzIHdoZXRoZXIKLSAgICB0
aGUgZWxlbWVudCBpcyBkaXNhYmxlZCBmcm9tIGludGVyYWN0aW9ucy4KLQotICAgIEBwcm9wZXJ0
eSBkaXNhYmxlZAotICAgIEB0eXBlIEJvb2xlYW4KLSAgICBAZGVmYXVsdCBmYWxzZQotICAqLwot
ICBkaXNhYmxlZDogZmFsc2UsCi0KLSAgLyoqCi0gICAgVGhlIGxpc3Qgb2Ygb3B0aW9ucy4KLQot
ICAgIElmIGBvcHRpb25MYWJlbFBhdGhgIGFuZCBgb3B0aW9uVmFsdWVQYXRoYCBhcmUgbm90IG92
ZXJyaWRkZW4sIHRoaXMgc2hvdWxkCi0gICAgYmUgYSBsaXN0IG9mIHN0cmluZ3MsIHdoaWNoIHdp
bGwgc2VydmUgc2ltdWx0YW5lb3VzbHkgYXMgbGFiZWxzIGFuZCB2YWx1ZXMuCi0KLSAgICBPdGhl
cndpc2UsIHRoaXMgc2hvdWxkIGJlIGEgbGlzdCBvZiBvYmplY3RzLiBGb3IgaW5zdGFuY2U6Ci0K
LSAgICBgYGBqYXZhc2NyaXB0Ci0gICAgRW1iZXIuU2VsZWN0LmNyZWF0ZSh7Ci0gICAgICBjb250
ZW50OiBFbWJlci5BKFsKLSAgICAgICAgICB7IGlkOiAxLCBmaXJzdE5hbWU6ICdZZWh1ZGEnIH0s
Ci0gICAgICAgICAgeyBpZDogMiwgZmlyc3ROYW1lOiAnVG9tJyB9Ci0gICAgICAgIF0pLAotICAg
ICAgb3B0aW9uTGFiZWxQYXRoOiAnY29udGVudC5maXJzdE5hbWUnLAotICAgICAgb3B0aW9uVmFs
dWVQYXRoOiAnY29udGVudC5pZCcKLSAgICB9KTsKLSAgICBgYGAKLQotICAgIEBwcm9wZXJ0eSBj
b250ZW50Ci0gICAgQHR5cGUgQXJyYXkKLSAgICBAZGVmYXVsdCBudWxsCi0gICovCi0gIGNvbnRl
bnQ6IG51bGwsCi0KLSAgLyoqCi0gICAgV2hlbiBgbXVsdGlwbGVgIGlzIGBmYWxzZWAsIHRoZSBl
bGVtZW50IG9mIGBjb250ZW50YCB0aGF0IGlzIGN1cnJlbnRseQotICAgIHNlbGVjdGVkLCBpZiBh
bnkuCi0KLSAgICBXaGVuIGBtdWx0aXBsZWAgaXMgYHRydWVgLCBhbiBhcnJheSBvZiBzdWNoIGVs
ZW1lbnRzLgotCi0gICAgQHByb3BlcnR5IHNlbGVjdGlvbgotICAgIEB0eXBlIE9iamVjdCBvciBB
cnJheQotICAgIEBkZWZhdWx0IG51bGwKLSAgKi8KLSAgc2VsZWN0aW9uOiBudWxsLAotCi0gIC8q
KgotICAgIEluIHNpbmdsZSBzZWxlY3Rpb24gbW9kZSAod2hlbiBgbXVsdGlwbGVgIGlzIGBmYWxz
ZWApLCB2YWx1ZSBjYW4gYmUgdXNlZCB0bwotICAgIGdldCB0aGUgY3VycmVudCBzZWxlY3Rpb24n
cyB2YWx1ZSBvciBzZXQgdGhlIHNlbGVjdGlvbiBieSBpdCdzIHZhbHVlLgotCi0gICAgSXQgaXMg
bm90IGN1cnJlbnRseSBzdXBwb3J0ZWQgaW4gbXVsdGlwbGUgc2VsZWN0aW9uIG1vZGUuCi0KLSAg
ICBAcHJvcGVydHkgdmFsdWUKLSAgICBAdHlwZSBTdHJpbmcKLSAgICBAZGVmYXVsdCBudWxsCi0g
ICovCi0gIHZhbHVlOiBFbWJlci5jb21wdXRlZChmdW5jdGlvbihrZXksIHZhbHVlKSB7Ci0gICAg
aWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIHsgcmV0dXJuIHZhbHVlOyB9Ci0gICAgdmFyIHZh
bHVlUGF0aCA9IGdldCh0aGlzLCAnb3B0aW9uVmFsdWVQYXRoJykucmVwbGFjZSgvXmNvbnRlbnRc
Lj8vLCAnJyk7Ci0gICAgcmV0dXJuIHZhbHVlUGF0aCA/IGdldCh0aGlzLCAnc2VsZWN0aW9uLicg
KyB2YWx1ZVBhdGgpIDogZ2V0KHRoaXMsICdzZWxlY3Rpb24nKTsKLSAgfSkucHJvcGVydHkoJ3Nl
bGVjdGlvbicpLAotCi0gIC8qKgotICAgIElmIGdpdmVuLCBhIHRvcC1tb3N0IGR1bW15IG9wdGlv
biB3aWxsIGJlIHJlbmRlcmVkIHRvIHNlcnZlIGFzIGEgdXNlcgotICAgIHByb21wdC4KLQotICAg
IEBwcm9wZXJ0eSBwcm9tcHQKLSAgICBAdHlwZSBTdHJpbmcKLSAgICBAZGVmYXVsdCBudWxsCi0g
ICovCi0gIHByb21wdDogbnVsbCwKLQotICAvKioKLSAgICBUaGUgcGF0aCBvZiB0aGUgb3B0aW9u
IGxhYmVscy4gU2VlIFtjb250ZW50XSgvYXBpL2NsYXNzZXMvRW1iZXIuU2VsZWN0Lmh0bWwjcHJv
cGVydHlfY29udGVudCkuCi0KLSAgICBAcHJvcGVydHkgb3B0aW9uTGFiZWxQYXRoCi0gICAgQHR5
cGUgU3RyaW5nCi0gICAgQGRlZmF1bHQgJ2NvbnRlbnQnCi0gICovCi0gIG9wdGlvbkxhYmVsUGF0
aDogJ2NvbnRlbnQnLAotCi0gIC8qKgotICAgIFRoZSBwYXRoIG9mIHRoZSBvcHRpb24gdmFsdWVz
LiBTZWUgW2NvbnRlbnRdKC9hcGkvY2xhc3Nlcy9FbWJlci5TZWxlY3QuaHRtbCNwcm9wZXJ0eV9j
b250ZW50KS4KLQotICAgIEBwcm9wZXJ0eSBvcHRpb25WYWx1ZVBhdGgKLSAgICBAdHlwZSBTdHJp
bmcKLSAgICBAZGVmYXVsdCAnY29udGVudCcKLSAgKi8KLSAgb3B0aW9uVmFsdWVQYXRoOiAnY29u
dGVudCcsCi0KLSAgLyoqCi0gICAgVGhlIHBhdGggb2YgdGhlIG9wdGlvbiBncm91cC4KLSAgICBX
aGVuIHRoaXMgcHJvcGVydHkgaXMgdXNlZCwgYGNvbnRlbnRgIHNob3VsZCBiZSBzb3J0ZWQgYnkg
YG9wdGlvbkdyb3VwUGF0aGAuCi0KLSAgICBAcHJvcGVydHkgb3B0aW9uR3JvdXBQYXRoCi0gICAg
QHR5cGUgU3RyaW5nCi0gICAgQGRlZmF1bHQgbnVsbAotICAqLwotICBvcHRpb25Hcm91cFBhdGg6
IG51bGwsCi0KLSAgLyoqCi0gICAgVGhlIHZpZXcgY2xhc3MgZm9yIG9wdGdyb3VwLgotCi0gICAg
QHByb3BlcnR5IGdyb3VwVmlldwotICAgIEB0eXBlIEVtYmVyLlZpZXcKLSAgICBAZGVmYXVsdCBF
bWJlci5TZWxlY3RPcHRncm91cAotICAqLwotICBncm91cFZpZXc6IEVtYmVyLlNlbGVjdE9wdGdy
b3VwLAotCi0gIGdyb3VwZWRDb250ZW50OiBFbWJlci5jb21wdXRlZChmdW5jdGlvbigpIHsKLSAg
ICB2YXIgZ3JvdXBQYXRoID0gZ2V0KHRoaXMsICdvcHRpb25Hcm91cFBhdGgnKTsKLSAgICB2YXIg
Z3JvdXBlZENvbnRlbnQgPSBFbWJlci5BKCk7Ci0gICAgdmFyIGNvbnRlbnQgPSBnZXQodGhpcywg
J2NvbnRlbnQnKSB8fCBbXTsKLQotICAgIGZvckVhY2goY29udGVudCwgZnVuY3Rpb24oaXRlbSkg
ewotICAgICAgdmFyIGxhYmVsID0gZ2V0KGl0ZW0sIGdyb3VwUGF0aCk7Ci0KLSAgICAgIGlmIChn
ZXQoZ3JvdXBlZENvbnRlbnQsICdsYXN0T2JqZWN0LmxhYmVsJykgIT09IGxhYmVsKSB7Ci0gICAg
ICAgIGdyb3VwZWRDb250ZW50LnB1c2hPYmplY3QoewotICAgICAgICAgIGxhYmVsOiBsYWJlbCwK
LSAgICAgICAgICBjb250ZW50OiBFbWJlci5BKCkKLSAgICAgICAgfSk7Ci0gICAgICB9Ci0KLSAg
ICAgIGdldChncm91cGVkQ29udGVudCwgJ2xhc3RPYmplY3QuY29udGVudCcpLnB1c2goaXRlbSk7
Ci0gICAgfSk7Ci0KLSAgICByZXR1cm4gZ3JvdXBlZENvbnRlbnQ7Ci0gIH0pLnByb3BlcnR5KCdv
cHRpb25Hcm91cFBhdGgnLCAnY29udGVudC5AZWFjaCcpLAotCi0gIC8qKgotICAgIFRoZSB2aWV3
IGNsYXNzIGZvciBvcHRpb24uCi0KLSAgICBAcHJvcGVydHkgb3B0aW9uVmlldwotICAgIEB0eXBl
IEVtYmVyLlZpZXcKLSAgICBAZGVmYXVsdCBFbWJlci5TZWxlY3RPcHRpb24KLSAgKi8KLSAgb3B0
aW9uVmlldzogRW1iZXIuU2VsZWN0T3B0aW9uLAotCi0gIF9jaGFuZ2U6IGZ1bmN0aW9uKCkgewot
ICAgIGlmIChnZXQodGhpcywgJ211bHRpcGxlJykpIHsKLSAgICAgIHRoaXMuX2NoYW5nZU11bHRp
cGxlKCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIHRoaXMuX2NoYW5nZVNpbmdsZSgpOwotICAgIH0K
LSAgfSwKLQotICBzZWxlY3Rpb25EaWRDaGFuZ2U6IEVtYmVyLm9ic2VydmVyKCdzZWxlY3Rpb24u
QGVhY2gnLCBmdW5jdGlvbigpIHsKLSAgICB2YXIgc2VsZWN0aW9uID0gZ2V0KHRoaXMsICdzZWxl
Y3Rpb24nKTsKLSAgICBpZiAoZ2V0KHRoaXMsICdtdWx0aXBsZScpKSB7Ci0gICAgICBpZiAoIWlz
QXJyYXkoc2VsZWN0aW9uKSkgewotICAgICAgICBzZXQodGhpcywgJ3NlbGVjdGlvbicsIEVtYmVy
LkEoW3NlbGVjdGlvbl0pKTsKLSAgICAgICAgcmV0dXJuOwotICAgICAgfQotICAgICAgdGhpcy5f
c2VsZWN0aW9uRGlkQ2hhbmdlTXVsdGlwbGUoKTsKLSAgICB9IGVsc2UgewotICAgICAgdGhpcy5f
c2VsZWN0aW9uRGlkQ2hhbmdlU2luZ2xlKCk7Ci0gICAgfQotICB9KSwKLQotICB2YWx1ZURpZENo
YW5nZTogRW1iZXIub2JzZXJ2ZXIoJ3ZhbHVlJywgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGNvbnRl
bnQgPSBnZXQodGhpcywgJ2NvbnRlbnQnKSwKLSAgICAgICAgdmFsdWUgPSBnZXQodGhpcywgJ3Zh
bHVlJyksCi0gICAgICAgIHZhbHVlUGF0aCA9IGdldCh0aGlzLCAnb3B0aW9uVmFsdWVQYXRoJyku
cmVwbGFjZSgvXmNvbnRlbnRcLj8vLCAnJyksCi0gICAgICAgIHNlbGVjdGVkVmFsdWUgPSAodmFs
dWVQYXRoID8gZ2V0KHRoaXMsICdzZWxlY3Rpb24uJyArIHZhbHVlUGF0aCkgOiBnZXQodGhpcywg
J3NlbGVjdGlvbicpKSwKLSAgICAgICAgc2VsZWN0aW9uOwotCi0gICAgaWYgKHZhbHVlICE9PSBz
ZWxlY3RlZFZhbHVlKSB7Ci0gICAgICBzZWxlY3Rpb24gPSBjb250ZW50ID8gY29udGVudC5maW5k
KGZ1bmN0aW9uKG9iaikgewotICAgICAgICByZXR1cm4gdmFsdWUgPT09ICh2YWx1ZVBhdGggPyBn
ZXQob2JqLCB2YWx1ZVBhdGgpIDogb2JqKTsKLSAgICAgIH0pIDogbnVsbDsKLQotICAgICAgdGhp
cy5zZXQoJ3NlbGVjdGlvbicsIHNlbGVjdGlvbik7Ci0gICAgfQotICB9KSwKLQotCi0gIF90cmln
Z2VyQ2hhbmdlOiBmdW5jdGlvbigpIHsKLSAgICB2YXIgc2VsZWN0aW9uID0gZ2V0KHRoaXMsICdz
ZWxlY3Rpb24nKTsKLSAgICB2YXIgdmFsdWUgPSBnZXQodGhpcywgJ3ZhbHVlJyk7Ci0KLSAgICBp
ZiAoIUVtYmVyLmlzTm9uZShzZWxlY3Rpb24pKSB7IHRoaXMuc2VsZWN0aW9uRGlkQ2hhbmdlKCk7
IH0KLSAgICBpZiAoIUVtYmVyLmlzTm9uZSh2YWx1ZSkpIHsgdGhpcy52YWx1ZURpZENoYW5nZSgp
OyB9Ci0KLSAgICB0aGlzLl9jaGFuZ2UoKTsKLSAgfSwKLQotICBfY2hhbmdlU2luZ2xlOiBmdW5j
dGlvbigpIHsKLSAgICB2YXIgc2VsZWN0ZWRJbmRleCA9IHRoaXMuJCgpWzBdLnNlbGVjdGVkSW5k
ZXgsCi0gICAgICAgIGNvbnRlbnQgPSBnZXQodGhpcywgJ2NvbnRlbnQnKSwKLSAgICAgICAgcHJv
bXB0ID0gZ2V0KHRoaXMsICdwcm9tcHQnKTsKLQotICAgIGlmICghY29udGVudCB8fCAhZ2V0KGNv
bnRlbnQsICdsZW5ndGgnKSkgeyByZXR1cm47IH0KLSAgICBpZiAocHJvbXB0ICYmIHNlbGVjdGVk
SW5kZXggPT09IDApIHsgc2V0KHRoaXMsICdzZWxlY3Rpb24nLCBudWxsKTsgcmV0dXJuOyB9Ci0K
LSAgICBpZiAocHJvbXB0KSB7IHNlbGVjdGVkSW5kZXggLT0gMTsgfQotICAgIHNldCh0aGlzLCAn
c2VsZWN0aW9uJywgY29udGVudC5vYmplY3RBdChzZWxlY3RlZEluZGV4KSk7Ci0gIH0sCi0KLQot
ICBfY2hhbmdlTXVsdGlwbGU6IGZ1bmN0aW9uKCkgewotICAgIHZhciBvcHRpb25zID0gdGhpcy4k
KCdvcHRpb246c2VsZWN0ZWQnKSwKLSAgICAgICAgcHJvbXB0ID0gZ2V0KHRoaXMsICdwcm9tcHQn
KSwKLSAgICAgICAgb2Zmc2V0ID0gcHJvbXB0ID8gMSA6IDAsCi0gICAgICAgIGNvbnRlbnQgPSBn
ZXQodGhpcywgJ2NvbnRlbnQnKSwKLSAgICAgICAgc2VsZWN0aW9uID0gZ2V0KHRoaXMsICdzZWxl
Y3Rpb24nKTsKLQotICAgIGlmICghY29udGVudCkgeyByZXR1cm47IH0KLSAgICBpZiAob3B0aW9u
cykgewotICAgICAgdmFyIHNlbGVjdGVkSW5kZXhlcyA9IG9wdGlvbnMubWFwKGZ1bmN0aW9uKCkg
ewotICAgICAgICByZXR1cm4gdGhpcy5pbmRleCAtIG9mZnNldDsKLSAgICAgIH0pLnRvQXJyYXko
KTsKLSAgICAgIHZhciBuZXdTZWxlY3Rpb24gPSBjb250ZW50Lm9iamVjdHNBdChzZWxlY3RlZElu
ZGV4ZXMpOwotCi0gICAgICBpZiAoaXNBcnJheShzZWxlY3Rpb24pKSB7Ci0gICAgICAgIHJlcGxh
Y2Uoc2VsZWN0aW9uLCAwLCBnZXQoc2VsZWN0aW9uLCAnbGVuZ3RoJyksIG5ld1NlbGVjdGlvbik7
Ci0gICAgICB9IGVsc2UgewotICAgICAgICBzZXQodGhpcywgJ3NlbGVjdGlvbicsIG5ld1NlbGVj
dGlvbik7Ci0gICAgICB9Ci0gICAgfQotICB9LAotCi0gIF9zZWxlY3Rpb25EaWRDaGFuZ2VTaW5n
bGU6IGZ1bmN0aW9uKCkgewotICAgIHZhciBlbCA9IHRoaXMuZ2V0KCdlbGVtZW50Jyk7Ci0gICAg
aWYgKCFlbCkgeyByZXR1cm47IH0KLQotICAgIHZhciBjb250ZW50ID0gZ2V0KHRoaXMsICdjb250
ZW50JyksCi0gICAgICAgIHNlbGVjdGlvbiA9IGdldCh0aGlzLCAnc2VsZWN0aW9uJyksCi0gICAg
ICAgIHNlbGVjdGlvbkluZGV4ID0gY29udGVudCA/IGluZGV4T2YoY29udGVudCwgc2VsZWN0aW9u
KSA6IC0xLAotICAgICAgICBwcm9tcHQgPSBnZXQodGhpcywgJ3Byb21wdCcpOwotCi0gICAgaWYg
KHByb21wdCkgeyBzZWxlY3Rpb25JbmRleCArPSAxOyB9Ci0gICAgaWYgKGVsKSB7IGVsLnNlbGVj
dGVkSW5kZXggPSBzZWxlY3Rpb25JbmRleDsgfQotICB9LAotCi0gIF9zZWxlY3Rpb25EaWRDaGFu
Z2VNdWx0aXBsZTogZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGNvbnRlbnQgPSBnZXQodGhpcywgJ2Nv
bnRlbnQnKSwKLSAgICAgICAgc2VsZWN0aW9uID0gZ2V0KHRoaXMsICdzZWxlY3Rpb24nKSwKLSAg
ICAgICAgc2VsZWN0ZWRJbmRleGVzID0gY29udGVudCA/IGluZGV4ZXNPZihjb250ZW50LCBzZWxl
Y3Rpb24pIDogWy0xXSwKLSAgICAgICAgcHJvbXB0ID0gZ2V0KHRoaXMsICdwcm9tcHQnKSwKLSAg
ICAgICAgb2Zmc2V0ID0gcHJvbXB0ID8gMSA6IDAsCi0gICAgICAgIG9wdGlvbnMgPSB0aGlzLiQo
J29wdGlvbicpLAotICAgICAgICBhZGp1c3RlZDsKLQotICAgIGlmIChvcHRpb25zKSB7Ci0gICAg
ICBvcHRpb25zLmVhY2goZnVuY3Rpb24oKSB7Ci0gICAgICAgIGFkanVzdGVkID0gdGhpcy5pbmRl
eCA+IC0xID8gdGhpcy5pbmRleCAtIG9mZnNldCA6IC0xOwotICAgICAgICB0aGlzLnNlbGVjdGVk
ID0gaW5kZXhPZihzZWxlY3RlZEluZGV4ZXMsIGFkanVzdGVkKSA+IC0xOwotICAgICAgfSk7Ci0g
ICAgfQotICB9LAotCi0gIGluaXQ6IGZ1bmN0aW9uKCkgewotICAgIHRoaXMuX3N1cGVyKCk7Ci0g
ICAgdGhpcy5vbigiZGlkSW5zZXJ0RWxlbWVudCIsIHRoaXMsIHRoaXMuX3RyaWdnZXJDaGFuZ2Up
OwotICAgIHRoaXMub24oImNoYW5nZSIsIHRoaXMsIHRoaXMuX2NoYW5nZSk7Ci0gIH0KLX0pOwot
Ci19KSgpOwotCi0KLQotKGZ1bmN0aW9uKCkgewotLyoqCi1AbW9kdWxlIGVtYmVyCi1Ac3VibW9k
dWxlIGVtYmVyLWhhbmRsZWJhcnMtY29tcGlsZXIKLSovCi0KLS8qKgotCi0gIFRoZSBge3tpbnB1
dH19YCBoZWxwZXIgaW5zZXJ0cyBhbiBIVE1MIGA8aW5wdXQ+YCB0YWcgaW50byB0aGUgdGVtcGxh
dGUsCi0gIHdpdGggYSBgdHlwZWAgdmFsdWUgb2YgZWl0aGVyIGB0ZXh0YCBvciBgY2hlY2tib3hg
LiBJZiBubyBgdHlwZWAgaXMgcHJvdmlkZWQsCi0gIGB0ZXh0YCB3aWxsIGJlIHRoZSBkZWZhdWx0
IHZhbHVlIGFwcGxpZWQuIFRoZSBhdHRyaWJ1dGVzIG9mIGB7e2lucHV0fX1gCi0gIG1hdGNoIHRo
b3NlIG9mIHRoZSBuYXRpdmUgSFRNTCB0YWcgYXMgY2xvc2VseSBhcyBwb3NzaWJsZSBmb3IgdGhl
c2UgdHdvIHR5cGVzLgotCi0gICMjIFVzZSBhcyB0ZXh0IGZpZWxkCi0gIEFuIGB7e2lucHV0fX1g
IHdpdGggbm8gYHR5cGVgIG9yIGEgYHR5cGVgIG9mIGB0ZXh0YCB3aWxsIHJlbmRlciBhbiBIVE1M
IHRleHQgaW5wdXQuCi0gIFRoZSBmb2xsb3dpbmcgSFRNTCBhdHRyaWJ1dGVzIGNhbiBiZSBzZXQg
dmlhIHRoZSBoZWxwZXI6Ci0KLSogYHZhbHVlYAotKiBgc2l6ZWAKLSogYG5hbWVgCi0qIGBwYXR0
ZXJuYAotKiBgcGxhY2Vob2xkZXJgCi0qIGBkaXNhYmxlZGAKLSogYG1heGxlbmd0aGAKLSogYHRh
YmluZGV4YAotCi0KLSAgV2hlbiBzZXQgdG8gYSBxdW90ZWQgc3RyaW5nLCB0aGVzZSB2YWx1ZXMg
d2lsbCBiZSBkaXJlY3RseSBhcHBsaWVkIHRvIHRoZSBIVE1MCi0gIGVsZW1lbnQuIFdoZW4gbGVm
dCB1bnF1b3RlZCwgdGhlc2UgdmFsdWVzIHdpbGwgYmUgYm91bmQgdG8gYSBwcm9wZXJ0eSBvbiB0
aGUKLSAgdGVtcGxhdGUncyBjdXJyZW50IHJlbmRlcmluZyBjb250ZXh0IChtb3N0IHR5cGljYWxs
eSBhIGNvbnRyb2xsZXIgaW5zdGFuY2UpLgotCi0gICMjIFVuYm91bmQ6Ci0KLSAgYGBgaGFuZGxl
YmFycwotICB7e2lucHV0IHZhbHVlPSJodHRwOi8vd3d3LmZhY2Vib29rLmNvbSJ9fQotICBgYGAK
LQotCi0gIGBgYGh0bWwKLSAgPGlucHV0IHR5cGU9InRleHQiIHZhbHVlPSJodHRwOi8vd3d3LmZh
Y2Vib29rLmNvbSIvPgotICBgYGAKLQotICAjIyBCb3VuZDoKLQotICBgYGBqYXZhc2NyaXB0Ci0g
IEFwcC5BcHBsaWNhdGlvbkNvbnRyb2xsZXIgPSBFbWJlci5Db250cm9sbGVyLmV4dGVuZCh7Ci0g
ICAgZmlyc3ROYW1lOiAiU3RhbmxleSIsCi0gICAgZW50cnlOb3RBbGxvd2VkOiB0cnVlCi0gIH0p
OwotICBgYGAKLQotCi0gIGBgYGhhbmRsZWJhcnMKLSAge3tpbnB1dCB0eXBlPSJ0ZXh0IiB2YWx1
ZT1maXJzdE5hbWUgZGlzYWJsZWQ9ZW50cnlOb3RBbGxvd2VkIHNpemU9IjUwIn19Ci0gIGBgYAot
Ci0KLSAgYGBgaHRtbAotICA8aW5wdXQgdHlwZT0idGV4dCIgdmFsdWU9IlN0YW5sZXkiIGRpc2Fi
bGVkPSJkaXNhYmxlZCIgc2l6ZT0iNTAiLz4KLSAgYGBgCi0KLSAgIyMgRXh0ZW5zaW9uCi0KLSAg
SW50ZXJuYWxseSwgYHt7aW5wdXQgdHlwZT0idGV4dCJ9fWAgY3JlYXRlcyBhbiBpbnN0YW5jZSBv
ZiBgRW1iZXIuVGV4dEZpZWxkYCwgcGFzc2luZwotICBhcmd1bWVudHMgZnJvbSB0aGUgaGVscGVy
IHRvIGBFbWJlci5UZXh0RmllbGRgJ3MgYGNyZWF0ZWAgbWV0aG9kLiBZb3UgY2FuIGV4dGVuZCB0
aGUKLSAgY2FwYWJsaWx0aWVzIG9mIHRleHQgaW5wdXRzIGluIHlvdXIgYXBwbGljYXRpb25zIGJ5
IHJlb3BlbmluZyB0aGlzIGNsYXNzLiBGb3IgZXhhbXBsZSwKLSAgaWYgeW91IGFyZSBkZXBsb3lp
bmcgdG8gYnJvd3NlcnMgd2hlcmUgdGhlIGByZXF1aXJlZGAgYXR0cmlidXRlIGlzIHVzZWQsIHlv
dQotICBjYW4gYWRkIHRoaXMgdG8gdGhlIGBUZXh0RmllbGRgJ3MgYGF0dHJpYnV0ZUJpbmRpbmdz
YCBwcm9wZXJ0eToKLQotCi0gIGBgYGphdmFzY3JpcHQKLSAgRW1iZXIuVGV4dEZpZWxkLnJlb3Bl
bih7Ci0gICAgYXR0cmlidXRlQmluZGluZ3M6IFsncmVxdWlyZWQnXQotICB9KTsKLSAgYGBgCi0K
LSAgS2VlcCBpbiBtaW5kIHdoZW4gd3JpdGluZyBgRW1iZXIuVGV4dEZpZWxkYCBzdWJjbGFzc2Vz
IHRoYXQgYEVtYmVyLlRleHRGaWVsZGAKLSAgaXRzZWxmIGV4dGVuZHMgYEVtYmVyLkNvbXBvbmVu
dGAsIG1lYW5pbmcgdGhhdCBpdCBkb2VzIE5PVCBpbmhlcml0Ci0gIHRoZSBgY29udHJvbGxlcmAg
b2YgdGhlIHBhcmVudCB2aWV3LgotCi0gIFNlZSBtb3JlIGFib3V0IFtFbWJlciBjb21wb25lbnRz
XShhcGkvY2xhc3Nlcy9FbWJlci5Db21wb25lbnQuaHRtbCkKLQotCi0gICMjIFVzZSBhcyBjaGVj
a2JveAotCi0gIEFuIGB7e2lucHV0fX1gIHdpdGggYSBgdHlwZWAgb2YgYGNoZWNrYm94YCB3aWxs
IHJlbmRlciBhbiBIVE1MIGNoZWNrYm94IGlucHV0LgotICBUaGUgZm9sbG93aW5nIEhUTUwgYXR0
cmlidXRlcyBjYW4gYmUgc2V0IHZpYSB0aGUgaGVscGVyOgotCi0qIGBjaGVja2VkYAotKiBgZGlz
YWJsZWRgCi0qIGB0YWJpbmRleGAKLSogYGluZGV0ZXJtaW5hdGVgCi0qIGBuYW1lYAotCi0KLSAg
V2hlbiBzZXQgdG8gYSBxdW90ZWQgc3RyaW5nLCB0aGVzZSB2YWx1ZXMgd2lsbCBiZSBkaXJlY3Rs
eSBhcHBsaWVkIHRvIHRoZSBIVE1MCi0gIGVsZW1lbnQuIFdoZW4gbGVmdCB1bnF1b3RlZCwgdGhl
c2UgdmFsdWVzIHdpbGwgYmUgYm91bmQgdG8gYSBwcm9wZXJ0eSBvbiB0aGUKLSAgdGVtcGxhdGUn
cyBjdXJyZW50IHJlbmRlcmluZyBjb250ZXh0IChtb3N0IHR5cGljYWxseSBhIGNvbnRyb2xsZXIg
aW5zdGFuY2UpLgotCi0gICMjIFVuYm91bmQ6Ci0KLSAgYGBgaGFuZGxlYmFycwotICB7e2lucHV0
IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJpc0FkbWluIn19Ci0gIGBgYAotCi0gIGBgYGh0bWwKLSAg
PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJpc0FkbWluIiAvPgotICBgYGAKLQotICAjIyBC
b3VuZDoKLQotICBgYGBqYXZhc2NyaXB0Ci0gIEFwcC5BcHBsaWNhdGlvbkNvbnRyb2xsZXIgPSBF
bWJlci5Db250cm9sbGVyLmV4dGVuZCh7Ci0gICAgaXNBZG1pbjogdHJ1ZQotICB9KTsKLSAgYGBg
Ci0KLQotICBgYGBoYW5kbGViYXJzCi0gIHt7aW5wdXQgdHlwZT0iY2hlY2tib3giIGNoZWNrZWQ9
aXNBZG1pbiB9fQotICBgYGAKLQotCi0gIGBgYGh0bWwKLSAgPGlucHV0IHR5cGU9ImNoZWNrYm94
IiBjaGVja2VkPSJjaGVja2VkIiAvPgotICBgYGAKLQotICAjIyBFeHRlbnNpb24KLQotICBJbnRl
cm5hbGx5LCBge3tpbnB1dCB0eXBlPSJjaGVja2JveCJ9fWAgY3JlYXRlcyBhbiBpbnN0YW5jZSBv
ZiBgRW1iZXIuQ2hlY2tib3hgLCBwYXNzaW5nCi0gIGFyZ3VtZW50cyBmcm9tIHRoZSBoZWxwZXIg
dG8gYEVtYmVyLkNoZWNrYm94YCdzIGBjcmVhdGVgIG1ldGhvZC4gWW91IGNhbiBleHRlbmQgdGhl
Ci0gIGNhcGFibGlsdGllcyBvZiBjaGVja2JveCBpbnB1dHMgaW4geW91ciBhcHBsaWNhdGlvbnMg
YnkgcmVvcGVuaW5nIHRoaXMgY2xhc3MuIEZvciBleGFtcGxlLAotICBpZiB5b3Ugd2FudGVkIHRv
IGFkZCBhIGNzcyBjbGFzcyB0byBhbGwgY2hlY2tib3hlcyBpbiB5b3VyIGFwcGxpY2F0aW9uOgot
Ci0KLSAgYGBgamF2YXNjcmlwdAotICBFbWJlci5DaGVja2JveC5yZW9wZW4oewotICAgIGNsYXNz
TmFtZXM6IFsnbXktYXBwLWNoZWNrYm94J10KLSAgfSk7Ci0gIGBgYAotCi0KLSAgQG1ldGhvZCBp
bnB1dAotICBAZm9yIEVtYmVyLkhhbmRsZWJhcnMuaGVscGVycwotICBAcGFyYW0ge0hhc2h9IG9w
dGlvbnMKLSovCi1FbWJlci5IYW5kbGViYXJzLnJlZ2lzdGVySGVscGVyKCdpbnB1dCcsIGZ1bmN0
aW9uKG9wdGlvbnMpIHsKLSAgRW1iZXIuYXNzZXJ0KCdZb3UgY2FuIG9ubHkgcGFzcyBhdHRyaWJ1
dGVzIHRvIHRoZSBgaW5wdXRgIGhlbHBlciwgbm90IGFyZ3VtZW50cycsIGFyZ3VtZW50cy5sZW5n
dGggPCAyKTsKLQotICB2YXIgaGFzaCA9IG9wdGlvbnMuaGFzaCwKLSAgICAgIHR5cGVzID0gb3B0
aW9ucy5oYXNoVHlwZXMsCi0gICAgICBpbnB1dFR5cGUgPSBoYXNoLnR5cGUsCi0gICAgICBvbkV2
ZW50ID0gaGFzaC5vbjsKLQotICBkZWxldGUgaGFzaC50eXBlOwotICBkZWxldGUgaGFzaC5vbjsK
LQotICBpZiAoaW5wdXRUeXBlID09PSAnY2hlY2tib3gnKSB7Ci0gICAgcmV0dXJuIEVtYmVyLkhh
bmRsZWJhcnMuaGVscGVycy52aWV3LmNhbGwodGhpcywgRW1iZXIuQ2hlY2tib3gsIG9wdGlvbnMp
OwotICB9IGVsc2UgewotICAgIGlmIChpbnB1dFR5cGUpIHsgaGFzaC50eXBlID0gaW5wdXRUeXBl
OyB9Ci0gICAgaGFzaC5vbkV2ZW50ID0gb25FdmVudCB8fCAnZW50ZXInOwotICAgIHJldHVybiBF
bWJlci5IYW5kbGViYXJzLmhlbHBlcnMudmlldy5jYWxsKHRoaXMsIEVtYmVyLlRleHRGaWVsZCwg
b3B0aW9ucyk7Ci0gIH0KLX0pOwotCi0vKioKLSAgYHt7dGV4dGFyZWF9fWAgaW5zZXJ0cyBhIG5l
dyBpbnN0YW5jZSBvZiBgPHRleHRhcmVhPmAgdGFnIGludG8gdGhlIHRlbXBsYXRlLgotICBUaGUg
YXR0cmlidXRlcyBvZiBge3t0ZXh0YXJlYX19YCBtYXRjaCB0aG9zZSBvZiB0aGUgbmF0aXZlIEhU
TUwgdGFncyBhcwotICBjbG9zZWx5IGFzIHBvc3NpYmxlLgotCi0gIFRoZSBmb2xsb3dpbmcgSFRN
TCBhdHRyaWJ1dGVzIGNhbiBiZSBzZXQ6Ci0KLSAgICAqIGB2YWx1ZWAKLSAgICAqIGBuYW1lYAot
ICAgICogYHJvd3NgCi0gICAgKiBgY29sc2AKLSAgICAqIGBwbGFjZWhvbGRlcmAKLSAgICAqIGBk
aXNhYmxlZGAKLSAgICAqIGBtYXhsZW5ndGhgCi0gICAgKiBgdGFiaW5kZXhgCi0KLSAgV2hlbiBz
ZXQgdG8gYSBxdW90ZWQgc3RyaW5nLCB0aGVzZSB2YWx1ZSB3aWxsIGJlIGRpcmVjdGx5IGFwcGxp
ZWQgdG8gdGhlIEhUTUwKLSAgZWxlbWVudC4gV2hlbiBsZWZ0IHVucXVvdGVkLCB0aGVzZSB2YWx1
ZXMgd2lsbCBiZSBib3VuZCB0byBhIHByb3BlcnR5IG9uIHRoZQotICB0ZW1wbGF0ZSdzIGN1cnJl
bnQgcmVuZGVyaW5nIGNvbnRleHQgKG1vc3QgdHlwaWNhbGx5IGEgY29udHJvbGxlciBpbnN0YW5j
ZSkuCi0KLSAgVW5ib3VuZDoKLQotICBgYGBoYW5kbGViYXJzCi0gIHt7dGV4dGFyZWEgdmFsdWU9
IkxvdHMgb2Ygc3RhdGljIHRleHQgdGhhdCBJU04nVCBib3VuZCJ9fQotICBgYGAKLQotICBXb3Vs
ZCByZXN1bHQgaW4gdGhlIGZvbGxvd2luZyBIVE1MOgotCi0gIGBgYGh0bWwKLSAgPHRleHRhcmVh
IGNsYXNzPSJlbWJlci10ZXh0LWFyZWEiPgotICAgIExvdHMgb2Ygc3RhdGljIHRleHQgdGhhdCBJ
U04nVCBib3VuZAotICA8L3RleHRhcmVhPgotICBgYGAKLQotICBCb3VuZDoKLQotICBJbiB0aGUg
Zm9sbG93aW5nIGV4YW1wbGUsIHRoZSBgd3JpdHRlbldvcmRzYCBwcm9wZXJ0eSBvbiBgQXBwLkFw
cGxpY2F0aW9uQ29udHJvbGxlcmAKLSAgd2lsbCBiZSB1cGRhdGVkIGxpdmUgYXMgdGhlIHVzZXIg
dHlwZXMgJ0xvdHMgb2YgdGV4dCB0aGF0IElTIGJvdW5kJyBpbnRvCi0gIHRoZSB0ZXh0IGFyZWEg
b2YgdGhlaXIgYnJvd3NlcidzIHdpbmRvdy4KLQotICBgYGBqYXZhc2NyaXB0Ci0gIEFwcC5BcHBs
aWNhdGlvbkNvbnRyb2xsZXIgPSBFbWJlci5Db250cm9sbGVyLmV4dGVuZCh7Ci0gICAgd3JpdHRl
bldvcmRzOiAiTG90cyBvZiB0ZXh0IHRoYXQgSVMgYm91bmQiCi0gIH0pOwotICBgYGAKLQotICBg
YGBoYW5kbGViYXJzCi0gIHt7dGV4dGFyZWEgdmFsdWU9d3JpdHRlbldvcmRzfX0KLSAgYGBgCi0K
LSAgIFdvdWxkIHJlc3VsdCBpbiB0aGUgZm9sbG93aW5nIEhUTUw6Ci0KLSAgYGBgaHRtbAotICA8
dGV4dGFyZWEgY2xhc3M9ImVtYmVyLXRleHQtYXJlYSI+Ci0gICAgTG90cyBvZiB0ZXh0IHRoYXQg
SVMgYm91bmQKLSAgPC90ZXh0YXJlYT4KLSAgYGBgCi0KLSAgSWYgeW91IHdhbnRlZCBhIG9uZSB3
YXkgYmluZGluZyBiZXR3ZWVuIHRoZSB0ZXh0IGFyZWEgYW5kIGEgZGl2IHRhZwotICBzb21ld2hl
cmUgZWxzZSBvbiB5b3VyIHNjcmVlbiwgeW91IGNvdWxkIHVzZSBgRW1iZXIuY29tcHV0ZWQub25l
V2F5YDoKLQotICBgYGBqYXZhc2NyaXB0Ci0gIEFwcC5BcHBsaWNhdGlvbkNvbnRyb2xsZXIgPSBF
bWJlci5Db250cm9sbGVyLmV4dGVuZCh7Ci0gICAgd3JpdHRlbldvcmRzOiAiTG90cyBvZiB0ZXh0
IHRoYXQgSVMgYm91bmQiLAotICAgIG91dHB1dFdyaXR0ZW5Xb3JkczogRW1iZXIuY29tcHV0ZWQu
b25lV2F5KCJ3cml0dGVuV29yZHMiKQotICB9KTsKLSAgYGBgCi0KLSAgYGBgaGFuZGxlYmFycwot
ICB7e3RleHRhcmVhIHZhbHVlPXdyaXR0ZW5Xb3Jkc319Ci0KLSAgPGRpdj4KLSAgICB7e291dHB1
dFdyaXR0ZW5Xb3Jkc319Ci0gIDwvZGl2PgotICBgYGAKLQotICBXb3VsZCByZXN1bHQgaW4gdGhl
IGZvbGxvd2luZyBIVE1MOgotCi0gIGBgYGh0bWwKLSAgPHRleHRhcmVhIGNsYXNzPSJlbWJlci10
ZXh0LWFyZWEiPgotICAgIExvdHMgb2YgdGV4dCB0aGF0IElTIGJvdW5kCi0gIDwvdGV4dGFyZWE+
Ci0KLSAgPC0tIHRoZSBmb2xsb3dpbmcgZGl2IHdpbGwgYmUgdXBkYXRlZCBpbiByZWFsIHRpbWUg
YXMgeW91IHR5cGUgLS0+Ci0KLSAgPGRpdj4KLSAgICBMb3RzIG9mIHRleHQgdGhhdCBJUyBib3Vu
ZAotICA8L2Rpdj4KLSAgYGBgCi0KLSAgRmluYWxseSwgdGhpcyBleGFtcGxlIHJlYWxseSBzaG93
cyB0aGUgcG93ZXIgYW5kIGVhc2Ugb2YgRW1iZXIgd2hlbiB0d28KLSAgcHJvcGVydGllcyBhcmUg
Ym91bmQgdG8gZWFjaG90aGVyIHZpYSBgRW1iZXIuY29tcHV0ZWQuYWxpYXNgLiBUeXBlIGludG8K
LSAgZWl0aGVyIHRleHQgYXJlYSBib3ggYW5kIHRoZXknbGwgYm90aCBzdGF5IGluIHN5bmMuIE5v
dGUgdGhhdAotICBgRW1iZXIuY29tcHV0ZWQuYWxpYXNgIGNvc3RzIG1vcmUgaW4gdGVybXMgb2Yg
cGVyZm9ybWFuY2UsIHNvIG9ubHkgdXNlIGl0IHdoZW4KLSAgeW91ciByZWFsbHkgYmluZGluZyBp
biBib3RoIGRpcmVjdGlvbnM6Ci0KLSAgYGBgamF2YXNjcmlwdAotICBBcHAuQXBwbGljYXRpb25D
b250cm9sbGVyID0gRW1iZXIuQ29udHJvbGxlci5leHRlbmQoewotICAgIHdyaXR0ZW5Xb3Jkczog
IkxvdHMgb2YgdGV4dCB0aGF0IElTIGJvdW5kIiwKLSAgICB0d29XYXlXcml0dGVuV29yZHM6IEVt
YmVyLmNvbXB1dGVkLmFsaWFzKCJ3cml0dGVuV29yZHMiKQotICB9KTsKLSAgYGBgCi0KLSAgYGBg
aGFuZGxlYmFycwotICB7e3RleHRhcmVhIHZhbHVlPXdyaXR0ZW5Xb3Jkc319Ci0gIHt7dGV4dGFy
ZWEgdmFsdWU9dHdvV2F5V3JpdHRlbldvcmRzfX0KLSAgYGBgCi0KLSAgYGBgaHRtbAotICA8dGV4
dGFyZWEgaWQ9ImVtYmVyMSIgY2xhc3M9ImVtYmVyLXRleHQtYXJlYSI+Ci0gICAgTG90cyBvZiB0
ZXh0IHRoYXQgSVMgYm91bmQKLSAgPC90ZXh0YXJlYT4KLQotICA8LS0gYm90aCB1cGRhdGVkIGlu
IHJlYWwgdGltZSAtLT4KLQotICA8dGV4dGFyZWEgaWQ9ImVtYmVyMiIgY2xhc3M9ImVtYmVyLXRl
eHQtYXJlYSI+Ci0gICAgTG90cyBvZiB0ZXh0IHRoYXQgSVMgYm91bmQKLSAgPC90ZXh0YXJlYT4K
LSAgYGBgCi0KLSAgIyMgRXh0ZW5zaW9uCi0KLSAgSW50ZXJuYWxseSwgYHt7dGV4dGFyZWF9fWAg
Y3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBgRW1iZXIuVGV4dEFyZWFgLCBwYXNzaW5nCi0gIGFyZ3Vt
ZW50cyBmcm9tIHRoZSBoZWxwZXIgdG8gYEVtYmVyLlRleHRBcmVhYCdzIGBjcmVhdGVgIG1ldGhv
ZC4gWW91IGNhbgotICBleHRlbmQgdGhlIGNhcGFiaWxpdGllcyBvZiB0ZXh0IGFyZWFzIGluIHlv
dXIgYXBwbGljYXRpb24gYnkgcmVvcGVuaW5nIHRoaXMKLSAgY2xhc3MuIEZvciBleGFtcGxlLCBp
ZiB5b3UgYXJlIGRlcGxveWluZyB0byBicm93c2VycyB3aGVyZSB0aGUgYHJlcXVpcmVkYAotICBh
dHRyaWJ1dGUgaXMgdXNlZCwgeW91IGNhbiBnbG9iYWxseSBhZGQgc3VwcG9ydCBmb3IgdGhlIGBy
ZXF1aXJlZGAgYXR0cmlidXRlCi0gIG9uIGFsbCBge3t0ZXh0YXJlYX19YHMnIGluIHlvdXIgYXBw
IGJ5IHJlb3BlbmluZyBgRW1iZXIuVGV4dEFyZWFgIG9yCi0gIGBFbWJlci5UZXh0U3VwcG9ydGAg
YW5kIGFkZGluZyBpdCB0byB0aGUgYGF0dHJpYnV0ZUJpbmRpbmdzYCBjb25jYXRlbmF0ZWQKLSAg
cHJvcGVydHk6Ci0KLSAgYGBgamF2YXNjcmlwdAotICBFbWJlci5UZXh0QXJlYS5yZW9wZW4oewot
ICAgIGF0dHJpYnV0ZUJpbmRpbmdzOiBbJ3JlcXVpcmVkJ10KLSAgfSk7Ci0gIGBgYAotCi0gIEtl
ZXAgaW4gbWluZCB3aGVuIHdyaXRpbmcgYEVtYmVyLlRleHRBcmVhYCBzdWJjbGFzc2VzIHRoYXQg
YEVtYmVyLlRleHRBcmVhYAotICBpdHNlbGYgZXh0ZW5kcyBgRW1iZXIuQ29tcG9uZW50YCwgbWVh
bmluZyB0aGF0IGl0IGRvZXMgTk9UIGluaGVyaXQKLSAgdGhlIGBjb250cm9sbGVyYCBvZiB0aGUg
cGFyZW50IHZpZXcuCi0KLSAgU2VlIG1vcmUgYWJvdXQgW0VtYmVyIGNvbXBvbmVudHNdKGFwaS9j
bGFzc2VzL0VtYmVyLkNvbXBvbmVudC5odG1sKQotCi0gIEBtZXRob2QgdGV4dGFyZWEKLSAgQGZv
ciBFbWJlci5IYW5kbGViYXJzLmhlbHBlcnMKLSAgQHBhcmFtIHtIYXNofSBvcHRpb25zCi0qLwot
RW1iZXIuSGFuZGxlYmFycy5yZWdpc3RlckhlbHBlcigndGV4dGFyZWEnLCBmdW5jdGlvbihvcHRp
b25zKSB7Ci0gIEVtYmVyLmFzc2VydCgnWW91IGNhbiBvbmx5IHBhc3MgYXR0cmlidXRlcyB0byB0
aGUgYHRleHRhcmVhYCBoZWxwZXIsIG5vdCBhcmd1bWVudHMnLCBhcmd1bWVudHMubGVuZ3RoIDwg
Mik7Ci0KLSAgdmFyIGhhc2ggPSBvcHRpb25zLmhhc2gsCi0gICAgICB0eXBlcyA9IG9wdGlvbnMu
aGFzaFR5cGVzOwotCi0gIHJldHVybiBFbWJlci5IYW5kbGViYXJzLmhlbHBlcnMudmlldy5jYWxs
KHRoaXMsIEVtYmVyLlRleHRBcmVhLCBvcHRpb25zKTsKLX0pOwotCi19KSgpOwotCi0KLQotKGZ1
bmN0aW9uKCkgewotRW1iZXIuQ29tcG9uZW50TG9va3VwID0gRW1iZXIuT2JqZWN0LmV4dGVuZCh7
Ci0gIGxvb2t1cEZhY3Rvcnk6IGZ1bmN0aW9uKG5hbWUsIGNvbnRhaW5lcikgewotCi0gICAgY29u
dGFpbmVyID0gY29udGFpbmVyIHx8IHRoaXMuY29udGFpbmVyOwotCi0gICAgdmFyIGZ1bGxOYW1l
ID0gJ2NvbXBvbmVudDonICsgbmFtZSwKLSAgICAgICAgdGVtcGxhdGVGdWxsTmFtZSA9ICd0ZW1w
bGF0ZTpjb21wb25lbnRzLycgKyBuYW1lLAotICAgICAgICB0ZW1wbGF0ZVJlZ2lzdGVyZWQgPSBj
b250YWluZXIgJiYgY29udGFpbmVyLmhhcyh0ZW1wbGF0ZUZ1bGxOYW1lKTsKLQotICAgIGlmICh0
ZW1wbGF0ZVJlZ2lzdGVyZWQpIHsKLSAgICAgIGNvbnRhaW5lci5pbmplY3Rpb24oZnVsbE5hbWUs
ICdsYXlvdXQnLCB0ZW1wbGF0ZUZ1bGxOYW1lKTsKLSAgICB9Ci0KLSAgICB2YXIgQ29tcG9uZW50
ID0gY29udGFpbmVyLmxvb2t1cEZhY3RvcnkoZnVsbE5hbWUpOwotCi0gICAgLy8gT25seSB0cmVh
dCBhcyBhIGNvbXBvbmVudCBpZiBlaXRoZXIgdGhlIGNvbXBvbmVudAotICAgIC8vIG9yIGEgdGVt
cGxhdGUgaGFzIGJlZW4gcmVnaXN0ZXJlZC4KLSAgICBpZiAodGVtcGxhdGVSZWdpc3RlcmVkIHx8
IENvbXBvbmVudCkgewotICAgICAgaWYgKCFDb21wb25lbnQpIHsKLSAgICAgICAgY29udGFpbmVy
LnJlZ2lzdGVyKGZ1bGxOYW1lLCBFbWJlci5Db21wb25lbnQpOwotICAgICAgICBDb21wb25lbnQg
PSBjb250YWluZXIubG9va3VwRmFjdG9yeShmdWxsTmFtZSk7Ci0gICAgICB9Ci0gICAgICByZXR1
cm4gQ29tcG9uZW50OwotICAgIH0KLSAgfQotfSk7Ci0KLX0pKCk7Ci0KLQotCi0oZnVuY3Rpb24o
KSB7Ci0vKmdsb2JhbHMgSGFuZGxlYmFycyAqLwotLyoqCi1AbW9kdWxlIGVtYmVyCi1Ac3VibW9k
dWxlIGVtYmVyLWhhbmRsZWJhcnMKLSovCi0KLS8qKgotICBGaW5kIHRlbXBsYXRlcyBzdG9yZWQg
aW4gdGhlIGhlYWQgdGFnIGFzIHNjcmlwdCB0YWdzIGFuZCBtYWtlIHRoZW0gYXZhaWxhYmxlCi0g
IHRvIGBFbWJlci5Db3JlVmlld2AgaW4gdGhlIGdsb2JhbCBgRW1iZXIuVEVNUExBVEVTYCBvYmpl
Y3QuIFRoaXMgd2lsbCBiZSBydW4KLSAgYXMgYXMgalF1ZXJ5IERPTS1yZWFkeSBjYWxsYmFjay4K
LQotICBTY3JpcHQgdGFncyB3aXRoIGB0ZXh0L3gtaGFuZGxlYmFyc2Agd2lsbCBiZSBjb21waWxl
ZAotICB3aXRoIEVtYmVyJ3MgSGFuZGxlYmFycyBhbmQgYXJlIHN1aXRhYmxlIGZvciB1c2UgYXMg
YSB2aWV3J3MgdGVtcGxhdGUuCi0gIFRob3NlIHdpdGggdHlwZSBgdGV4dC94LXJhdy1oYW5kbGVi
YXJzYCB3aWxsIGJlIGNvbXBpbGVkIHdpdGggcmVndWxhcgotICBIYW5kbGViYXJzIGFuZCBhcmUg
c3VpdGFibGUgZm9yIHVzZSBpbiB2aWV3cycgY29tcHV0ZWQgcHJvcGVydGllcy4KLQotICBAcHJp
dmF0ZQotICBAbWV0aG9kIGJvb3RzdHJhcAotICBAZm9yIEVtYmVyLkhhbmRsZWJhcnMKLSAgQHN0
YXRpYwotICBAcGFyYW0gY3R4Ci0qLwotRW1iZXIuSGFuZGxlYmFycy5ib290c3RyYXAgPSBmdW5j
dGlvbihjdHgpIHsKLSAgdmFyIHNlbGVjdG9ycyA9ICdzY3JpcHRbdHlwZT0idGV4dC94LWhhbmRs
ZWJhcnMiXSwgc2NyaXB0W3R5cGU9InRleHQveC1yYXctaGFuZGxlYmFycyJdJzsKLQotICBFbWJl
ci4kKHNlbGVjdG9ycywgY3R4KQotICAgIC5lYWNoKGZ1bmN0aW9uKCkgewotICAgIC8vIEdldCBh
IHJlZmVyZW5jZSB0byB0aGUgc2NyaXB0IHRhZwotICAgIHZhciBzY3JpcHQgPSBFbWJlci4kKHRo
aXMpOwotCi0gICAgdmFyIGNvbXBpbGUgPSAoc2NyaXB0LmF0dHIoJ3R5cGUnKSA9PT0gJ3RleHQv
eC1yYXctaGFuZGxlYmFycycpID8KLSAgICAgICAgICAgICAgICAgIEVtYmVyLiQucHJveHkoSGFu
ZGxlYmFycy5jb21waWxlLCBIYW5kbGViYXJzKSA6Ci0gICAgICAgICAgICAgICAgICBFbWJlci4k
LnByb3h5KEVtYmVyLkhhbmRsZWJhcnMuY29tcGlsZSwgRW1iZXIuSGFuZGxlYmFycyksCi0gICAg
ICAvLyBHZXQgdGhlIG5hbWUgb2YgdGhlIHNjcmlwdCwgdXNlZCBieSBFbWJlci5WaWV3J3MgdGVt
cGxhdGVOYW1lIHByb3BlcnR5LgotICAgICAgLy8gRmlyc3QgbG9vayBmb3IgZGF0YS10ZW1wbGF0
ZS1uYW1lIGF0dHJpYnV0ZSwgdGhlbiBmYWxsIGJhY2sgdG8gaXRzCi0gICAgICAvLyBpZCBpZiBu
byBuYW1lIGlzIGZvdW5kLgotICAgICAgdGVtcGxhdGVOYW1lID0gc2NyaXB0LmF0dHIoJ2RhdGEt
dGVtcGxhdGUtbmFtZScpIHx8IHNjcmlwdC5hdHRyKCdpZCcpIHx8ICdhcHBsaWNhdGlvbicsCi0g
ICAgICB0ZW1wbGF0ZSA9IGNvbXBpbGUoc2NyaXB0Lmh0bWwoKSk7Ci0KLSAgICAvLyBDaGVjayBp
ZiB0ZW1wbGF0ZSBvZiBzYW1lIG5hbWUgYWxyZWFkeSBleGlzdHMKLSAgICBpZiAoRW1iZXIuVEVN
UExBVEVTW3RlbXBsYXRlTmFtZV0gIT09IHVuZGVmaW5lZCkgewotICAgICAgdGhyb3cgbmV3IEVt
YmVyLkVycm9yKCdUZW1wbGF0ZSBuYW1lZCAiJyArIHRlbXBsYXRlTmFtZSAgKyAnIiBhbHJlYWR5
IGV4aXN0cy4nKTsKLSAgICB9Ci0KLSAgICAvLyBGb3IgdGVtcGxhdGVzIHdoaWNoIGhhdmUgYSBu
YW1lLCB3ZSBzYXZlIHRoZW0gYW5kIHRoZW4gcmVtb3ZlIHRoZW0gZnJvbSB0aGUgRE9NCi0gICAg
RW1iZXIuVEVNUExBVEVTW3RlbXBsYXRlTmFtZV0gPSB0ZW1wbGF0ZTsKLQotICAgIC8vIFJlbW92
ZSBzY3JpcHQgdGFnIGZyb20gRE9NCi0gICAgc2NyaXB0LnJlbW92ZSgpOwotICB9KTsKLX07Ci0K
LWZ1bmN0aW9uIGJvb3RzdHJhcCgpIHsKLSAgRW1iZXIuSGFuZGxlYmFycy5ib290c3RyYXAoIEVt
YmVyLiQoZG9jdW1lbnQpICk7Ci19Ci0KLWZ1bmN0aW9uIHJlZ2lzdGVyQ29tcG9uZW50TG9va3Vw
KGNvbnRhaW5lcikgewotICBjb250YWluZXIucmVnaXN0ZXIoJ2NvbXBvbmVudC1sb29rdXA6bWFp
bicsIEVtYmVyLkNvbXBvbmVudExvb2t1cCk7Ci19Ci0KLS8qCi0gIFdlIHRpZSB0aGlzIHRvIGFw
cGxpY2F0aW9uLmxvYWQgdG8gZW5zdXJlIHRoYXQgd2UndmUgYXQgbGVhc3QKLSAgYXR0ZW1wdGVk
IHRvIGJvb3RzdHJhcCBhdCB0aGUgcG9pbnQgdGhhdCB0aGUgYXBwbGljYXRpb24gaXMgbG9hZGVk
LgotCi0gIFdlIGFsc28gdGllIHRoaXMgdG8gZG9jdW1lbnQgcmVhZHkgc2luY2Ugd2UncmUgZ3Vh
cmFudGVlZCB0aGF0IGFsbAotICB0aGUgaW5saW5lIHRlbXBsYXRlcyBhcmUgcHJlc2VudCBhdCB0
aGlzIHBvaW50LgotCi0gIFRoZXJlJ3Mgbm8gaGFybSB0byBydW5uaW5nIHRoaXMgdHdpY2UsIHNp
bmNlIHdlIHJlbW92ZSB0aGUgdGVtcGxhdGVzCi0gIGZyb20gdGhlIERPTSBhZnRlciBwcm9jZXNz
aW5nLgotKi8KLQotRW1iZXIub25Mb2FkKCdFbWJlci5BcHBsaWNhdGlvbicsIGZ1bmN0aW9uKEFw
cGxpY2F0aW9uKSB7Ci0gIEFwcGxpY2F0aW9uLmluaXRpYWxpemVyKHsKLSAgICBuYW1lOiAnZG9t
VGVtcGxhdGVzJywKLSAgICBpbml0aWFsaXplOiBib290c3RyYXAKLSAgfSk7Ci0KLSAgQXBwbGlj
YXRpb24uaW5pdGlhbGl6ZXIoewotICAgIG5hbWU6ICdyZWdpc3RlckNvbXBvbmVudExvb2t1cCcs
Ci0gICAgYWZ0ZXI6ICdkb21UZW1wbGF0ZXMnLAotICAgIGluaXRpYWxpemU6IHJlZ2lzdGVyQ29t
cG9uZW50TG9va3VwCi0gIH0pOwotfSk7Ci0KLX0pKCk7Ci0KLQotCi0oZnVuY3Rpb24oKSB7Ci0v
KioKLUVtYmVyIEhhbmRsZWJhcnMKLQotQG1vZHVsZSBlbWJlcgotQHN1Ym1vZHVsZSBlbWJlci1o
YW5kbGViYXJzCi1AcmVxdWlyZXMgZW1iZXItdmlld3MKLSovCi0KLUVtYmVyLnJ1bkxvYWRIb29r
cygnRW1iZXIuSGFuZGxlYmFycycsIEVtYmVyLkhhbmRsZWJhcnMpOwotCi19KSgpOwotCi0oZnVu
Y3Rpb24oKSB7Ci1kZWZpbmUoInJvdXRlLXJlY29nbml6ZXIiLAotICBbXSwKLSAgZnVuY3Rpb24o
KSB7Ci0gICAgInVzZSBzdHJpY3QiOwotICAgIHZhciBzcGVjaWFscyA9IFsKLSAgICAgICcvJywg
Jy4nLCAnKicsICcrJywgJz8nLCAnfCcsCi0gICAgICAnKCcsICcpJywgJ1snLCAnXScsICd7Jywg
J30nLCAnXFwnCi0gICAgXTsKLQotICAgIHZhciBlc2NhcGVSZWdleCA9IG5ldyBSZWdFeHAoJyhc
XCcgKyBzcGVjaWFscy5qb2luKCd8XFwnKSArICcpJywgJ2cnKTsKLQotICAgIC8vIEEgU2VnbWVu
dCByZXByZXNlbnRzIGEgc2VnbWVudCBpbiB0aGUgb3JpZ2luYWwgcm91dGUgZGVzY3JpcHRpb24u
Ci0gICAgLy8gRWFjaCBTZWdtZW50IHR5cGUgcHJvdmlkZXMgYW4gYGVhY2hDaGFyYCBhbmQgYHJl
Z2V4YCBtZXRob2QuCi0gICAgLy8KLSAgICAvLyBUaGUgYGVhY2hDaGFyYCBtZXRob2QgaW52b2tl
cyB0aGUgY2FsbGJhY2sgd2l0aCBvbmUgb3IgbW9yZSBjaGFyYWN0ZXIKLSAgICAvLyBzcGVjaWZp
Y2F0aW9ucy4gQSBjaGFyYWN0ZXIgc3BlY2lmaWNhdGlvbiBjb25zdW1lcyBvbmUgb3IgbW9yZSBp
bnB1dAotICAgIC8vIGNoYXJhY3RlcnMuCi0gICAgLy8KLSAgICAvLyBUaGUgYHJlZ2V4YCBtZXRo
b2QgcmV0dXJucyBhIHJlZ2V4IGZyYWdtZW50IGZvciB0aGUgc2VnbWVudC4gSWYgdGhlCi0gICAg
Ly8gc2VnbWVudCBpcyBhIGR5bmFtaWMgb2Ygc3RhciBzZWdtZW50LCB0aGUgcmVnZXggZnJhZ21l
bnQgYWxzbyBpbmNsdWRlcwotICAgIC8vIGEgY2FwdHVyZS4KLSAgICAvLwotICAgIC8vIEEgY2hh
cmFjdGVyIHNwZWNpZmljYXRpb24gY29udGFpbnM6Ci0gICAgLy8KLSAgICAvLyAqIGB2YWxpZENo
YXJzYDogYSBTdHJpbmcgd2l0aCBhIGxpc3Qgb2YgYWxsIHZhbGlkIGNoYXJhY3RlcnMsIG9yCi0g
ICAgLy8gKiBgaW52YWxpZENoYXJzYDogYSBTdHJpbmcgd2l0aCBhIGxpc3Qgb2YgYWxsIGludmFs
aWQgY2hhcmFjdGVycwotICAgIC8vICogYHJlcGVhdGA6IHRydWUgaWYgdGhlIGNoYXJhY3RlciBz
cGVjaWZpY2F0aW9uIGNhbiByZXBlYXQKLQotICAgIGZ1bmN0aW9uIFN0YXRpY1NlZ21lbnQoc3Ry
aW5nKSB7IHRoaXMuc3RyaW5nID0gc3RyaW5nOyB9Ci0gICAgU3RhdGljU2VnbWVudC5wcm90b3R5
cGUgPSB7Ci0gICAgICBlYWNoQ2hhcjogZnVuY3Rpb24oY2FsbGJhY2spIHsKLSAgICAgICAgdmFy
IHN0cmluZyA9IHRoaXMuc3RyaW5nLCBjaGFyOwotCi0gICAgICAgIGZvciAodmFyIGk9MCwgbD1z
dHJpbmcubGVuZ3RoOyBpPGw7IGkrKykgewotICAgICAgICAgIGNoYXIgPSBzdHJpbmcuY2hhckF0
KGkpOwotICAgICAgICAgIGNhbGxiYWNrKHsgdmFsaWRDaGFyczogY2hhciB9KTsKLSAgICAgICAg
fQotICAgICAgfSwKLQotICAgICAgcmVnZXg6IGZ1bmN0aW9uKCkgewotICAgICAgICByZXR1cm4g
dGhpcy5zdHJpbmcucmVwbGFjZShlc2NhcGVSZWdleCwgJ1xcJDEnKTsKLSAgICAgIH0sCi0KLSAg
ICAgIGdlbmVyYXRlOiBmdW5jdGlvbigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuc3RyaW5nOwot
ICAgICAgfQotICAgIH07Ci0KLSAgICBmdW5jdGlvbiBEeW5hbWljU2VnbWVudChuYW1lKSB7IHRo
aXMubmFtZSA9IG5hbWU7IH0KLSAgICBEeW5hbWljU2VnbWVudC5wcm90b3R5cGUgPSB7Ci0gICAg
ICBlYWNoQ2hhcjogZnVuY3Rpb24oY2FsbGJhY2spIHsKLSAgICAgICAgY2FsbGJhY2soeyBpbnZh
bGlkQ2hhcnM6ICIvIiwgcmVwZWF0OiB0cnVlIH0pOwotICAgICAgfSwKLQotICAgICAgcmVnZXg6
IGZ1bmN0aW9uKCkgewotICAgICAgICByZXR1cm4gIihbXi9dKykiOwotICAgICAgfSwKLQotICAg
ICAgZ2VuZXJhdGU6IGZ1bmN0aW9uKHBhcmFtcykgewotICAgICAgICByZXR1cm4gcGFyYW1zW3Ro
aXMubmFtZV07Ci0gICAgICB9Ci0gICAgfTsKLQotICAgIGZ1bmN0aW9uIFN0YXJTZWdtZW50KG5h
bWUpIHsgdGhpcy5uYW1lID0gbmFtZTsgfQotICAgIFN0YXJTZWdtZW50LnByb3RvdHlwZSA9IHsK
LSAgICAgIGVhY2hDaGFyOiBmdW5jdGlvbihjYWxsYmFjaykgewotICAgICAgICBjYWxsYmFjayh7
IGludmFsaWRDaGFyczogIiIsIHJlcGVhdDogdHJ1ZSB9KTsKLSAgICAgIH0sCi0KLSAgICAgIHJl
Z2V4OiBmdW5jdGlvbigpIHsKLSAgICAgICAgcmV0dXJuICIoLispIjsKLSAgICAgIH0sCi0KLSAg
ICAgIGdlbmVyYXRlOiBmdW5jdGlvbihwYXJhbXMpIHsKLSAgICAgICAgcmV0dXJuIHBhcmFtc1t0
aGlzLm5hbWVdOwotICAgICAgfQotICAgIH07Ci0KLSAgICBmdW5jdGlvbiBFcHNpbG9uU2VnbWVu
dCgpIHt9Ci0gICAgRXBzaWxvblNlZ21lbnQucHJvdG90eXBlID0gewotICAgICAgZWFjaENoYXI6
IGZ1bmN0aW9uKCkge30sCi0gICAgICByZWdleDogZnVuY3Rpb24oKSB7IHJldHVybiAiIjsgfSwK
LSAgICAgIGdlbmVyYXRlOiBmdW5jdGlvbigpIHsgcmV0dXJuICIiOyB9Ci0gICAgfTsKLQotICAg
IGZ1bmN0aW9uIHBhcnNlKHJvdXRlLCBuYW1lcywgdHlwZXMpIHsKLSAgICAgIC8vIG5vcm1hbGl6
ZSByb3V0ZSBhcyBub3Qgc3RhcnRpbmcgd2l0aCBhICIvIi4gUmVjb2duaXRpb24gd2lsbAotICAg
ICAgLy8gYWxzbyBub3JtYWxpemUuCi0gICAgICBpZiAocm91dGUuY2hhckF0KDApID09PSAiLyIp
IHsgcm91dGUgPSByb3V0ZS5zdWJzdHIoMSk7IH0KLQotICAgICAgdmFyIHNlZ21lbnRzID0gcm91
dGUuc3BsaXQoIi8iKSwgcmVzdWx0cyA9IFtdOwotCi0gICAgICBmb3IgKHZhciBpPTAsIGw9c2Vn
bWVudHMubGVuZ3RoOyBpPGw7IGkrKykgewotICAgICAgICB2YXIgc2VnbWVudCA9IHNlZ21lbnRz
W2ldLCBtYXRjaDsKLQotICAgICAgICBpZiAobWF0Y2ggPSBzZWdtZW50Lm1hdGNoKC9eOihbXlwv
XSspJC8pKSB7Ci0gICAgICAgICAgcmVzdWx0cy5wdXNoKG5ldyBEeW5hbWljU2VnbWVudChtYXRj
aFsxXSkpOwotICAgICAgICAgIG5hbWVzLnB1c2gobWF0Y2hbMV0pOwotICAgICAgICAgIHR5cGVz
LmR5bmFtaWNzKys7Ci0gICAgICAgIH0gZWxzZSBpZiAobWF0Y2ggPSBzZWdtZW50Lm1hdGNoKC9e
XCooW15cL10rKSQvKSkgewotICAgICAgICAgIHJlc3VsdHMucHVzaChuZXcgU3RhclNlZ21lbnQo
bWF0Y2hbMV0pKTsKLSAgICAgICAgICBuYW1lcy5wdXNoKG1hdGNoWzFdKTsKLSAgICAgICAgICB0
eXBlcy5zdGFycysrOwotICAgICAgICB9IGVsc2UgaWYoc2VnbWVudCA9PT0gIiIpIHsKLSAgICAg
ICAgICByZXN1bHRzLnB1c2gobmV3IEVwc2lsb25TZWdtZW50KCkpOwotICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgIHJlc3VsdHMucHVzaChuZXcgU3RhdGljU2VnbWVudChzZWdtZW50KSk7Ci0g
ICAgICAgICAgdHlwZXMuc3RhdGljcysrOwotICAgICAgICB9Ci0gICAgICB9Ci0KLSAgICAgIHJl
dHVybiByZXN1bHRzOwotICAgIH0KLQotICAgIC8vIEEgU3RhdGUgaGFzIGEgY2hhcmFjdGVyIHNw
ZWNpZmljYXRpb24gYW5kIChgY2hhclNwZWNgKSBhbmQgYSBsaXN0IG9mIHBvc3NpYmxlCi0gICAg
Ly8gc3Vic2VxdWVudCBzdGF0ZXMgKGBuZXh0U3RhdGVzYCkuCi0gICAgLy8KLSAgICAvLyBJZiBh
IFN0YXRlIGlzIGFuIGFjY2VwdGluZyBzdGF0ZSwgaXQgd2lsbCBhbHNvIGhhdmUgc2V2ZXJhbCBh
ZGRpdGlvbmFsCi0gICAgLy8gcHJvcGVydGllczoKLSAgICAvLwotICAgIC8vICogYHJlZ2V4YDog
QSByZWd1bGFyIGV4cHJlc3Npb24gdGhhdCBpcyB1c2VkIHRvIGV4dHJhY3QgcGFyYW1ldGVycyBm
cm9tIHBhdGhzCi0gICAgLy8gICB0aGF0IHJlYWNoZWQgdGhpcyBhY2NlcHRpbmcgc3RhdGUuCi0g
ICAgLy8gKiBgaGFuZGxlcnNgOiBJbmZvcm1hdGlvbiBvbiBob3cgdG8gY29udmVydCB0aGUgbGlz
dCBvZiBjYXB0dXJlcyBpbnRvIGNhbGxzCi0gICAgLy8gICB0byByZWdpc3RlcmVkIGhhbmRsZXJz
IHdpdGggdGhlIHNwZWNpZmllZCBwYXJhbWV0ZXJzCi0gICAgLy8gKiBgdHlwZXNgOiBIb3cgbWFu
eSBzdGF0aWMsIGR5bmFtaWMgb3Igc3RhciBzZWdtZW50cyBpbiB0aGlzIHJvdXRlLiBVc2VkIHRv
Ci0gICAgLy8gICBkZWNpZGUgd2hpY2ggcm91dGUgdG8gdXNlIGlmIG11bHRpcGxlIHJlZ2lzdGVy
ZWQgcm91dGVzIG1hdGNoIGEgcGF0aC4KLSAgICAvLwotICAgIC8vIEN1cnJlbnRseSwgU3RhdGUg
aXMgaW1wbGVtZW50ZWQgbmFpdmVseSBieSBsb29waW5nIG92ZXIgYG5leHRTdGF0ZXNgIGFuZAot
ICAgIC8vIGNvbXBhcmluZyBhIGNoYXJhY3RlciBzcGVjaWZpY2F0aW9uIGFnYWluc3QgYSBjaGFy
YWN0ZXIuIEEgbW9yZSBlZmZpY2llbnQKLSAgICAvLyBpbXBsZW1lbnRhdGlvbiB3b3VsZCB1c2Ug
YSBoYXNoIG9mIGtleXMgcG9pbnRpbmcgYXQgb25lIG9yIG1vcmUgbmV4dCBzdGF0ZXMuCi0KLSAg
ICBmdW5jdGlvbiBTdGF0ZShjaGFyU3BlYykgewotICAgICAgdGhpcy5jaGFyU3BlYyA9IGNoYXJT
cGVjOwotICAgICAgdGhpcy5uZXh0U3RhdGVzID0gW107Ci0gICAgfQotCi0gICAgU3RhdGUucHJv
dG90eXBlID0gewotICAgICAgZ2V0OiBmdW5jdGlvbihjaGFyU3BlYykgewotICAgICAgICB2YXIg
bmV4dFN0YXRlcyA9IHRoaXMubmV4dFN0YXRlczsKLQotICAgICAgICBmb3IgKHZhciBpPTAsIGw9
bmV4dFN0YXRlcy5sZW5ndGg7IGk8bDsgaSsrKSB7Ci0gICAgICAgICAgdmFyIGNoaWxkID0gbmV4
dFN0YXRlc1tpXTsKLQotICAgICAgICAgIHZhciBpc0VxdWFsID0gY2hpbGQuY2hhclNwZWMudmFs
aWRDaGFycyA9PT0gY2hhclNwZWMudmFsaWRDaGFyczsKLSAgICAgICAgICBpc0VxdWFsID0gaXNF
cXVhbCAmJiBjaGlsZC5jaGFyU3BlYy5pbnZhbGlkQ2hhcnMgPT09IGNoYXJTcGVjLmludmFsaWRD
aGFyczsKLQotICAgICAgICAgIGlmIChpc0VxdWFsKSB7IHJldHVybiBjaGlsZDsgfQotICAgICAg
ICB9Ci0gICAgICB9LAotCi0gICAgICBwdXQ6IGZ1bmN0aW9uKGNoYXJTcGVjKSB7Ci0gICAgICAg
IHZhciBzdGF0ZTsKLQotICAgICAgICAvLyBJZiB0aGUgY2hhcmFjdGVyIHNwZWNpZmljYXRpb24g
YWxyZWFkeSBleGlzdHMgaW4gYSBjaGlsZCBvZiB0aGUgY3VycmVudAotICAgICAgICAvLyBzdGF0
ZSwganVzdCByZXR1cm4gdGhhdCBzdGF0ZS4KLSAgICAgICAgaWYgKHN0YXRlID0gdGhpcy5nZXQo
Y2hhclNwZWMpKSB7IHJldHVybiBzdGF0ZTsgfQotCi0gICAgICAgIC8vIE1ha2UgYSBuZXcgc3Rh
dGUgZm9yIHRoZSBjaGFyYWN0ZXIgc3BlYwotICAgICAgICBzdGF0ZSA9IG5ldyBTdGF0ZShjaGFy
U3BlYyk7Ci0KLSAgICAgICAgLy8gSW5zZXJ0IHRoZSBuZXcgc3RhdGUgYXMgYSBjaGlsZCBvZiB0
aGUgY3VycmVudCBzdGF0ZQotICAgICAgICB0aGlzLm5leHRTdGF0ZXMucHVzaChzdGF0ZSk7Ci0K
LSAgICAgICAgLy8gSWYgdGhpcyBjaGFyYWN0ZXIgc3BlY2lmaWNhdGlvbiByZXBlYXRzLCBpbnNl
cnQgdGhlIG5ldyBzdGF0ZSBhcyBhIGNoaWxkCi0gICAgICAgIC8vIG9mIGl0c2VsZi4gTm90ZSB0
aGF0IHRoaXMgd2lsbCBub3QgdHJpZ2dlciBhbiBpbmZpbml0ZSBsb29wIGJlY2F1c2UgZWFjaAot
ICAgICAgICAvLyB0cmFuc2l0aW9uIGR1cmluZyByZWNvZ25pdGlvbiBjb25zdW1lcyBhIGNoYXJh
Y3Rlci4KLSAgICAgICAgaWYgKGNoYXJTcGVjLnJlcGVhdCkgewotICAgICAgICAgIHN0YXRlLm5l
eHRTdGF0ZXMucHVzaChzdGF0ZSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBSZXR1cm4gdGhl
IG5ldyBzdGF0ZQotICAgICAgICByZXR1cm4gc3RhdGU7Ci0gICAgICB9LAotCi0gICAgICAvLyBG
aW5kIGEgbGlzdCBvZiBjaGlsZCBzdGF0ZXMgbWF0Y2hpbmcgdGhlIG5leHQgY2hhcmFjdGVyCi0g
ICAgICBtYXRjaDogZnVuY3Rpb24oY2hhcikgewotICAgICAgICAvLyBERUJVRyAiUHJvY2Vzc2lu
ZyBgIiArIGNoYXIgKyAiYDoiCi0gICAgICAgIHZhciBuZXh0U3RhdGVzID0gdGhpcy5uZXh0U3Rh
dGVzLAotICAgICAgICAgICAgY2hpbGQsIGNoYXJTcGVjLCBjaGFyczsKLQotICAgICAgICAvLyBE
RUJVRyAiICAiICsgZGVidWdTdGF0ZSh0aGlzKQotICAgICAgICB2YXIgcmV0dXJuZWQgPSBbXTsK
LQotICAgICAgICBmb3IgKHZhciBpPTAsIGw9bmV4dFN0YXRlcy5sZW5ndGg7IGk8bDsgaSsrKSB7
Ci0gICAgICAgICAgY2hpbGQgPSBuZXh0U3RhdGVzW2ldOwotCi0gICAgICAgICAgY2hhclNwZWMg
PSBjaGlsZC5jaGFyU3BlYzsKLQotICAgICAgICAgIGlmICh0eXBlb2YgKGNoYXJzID0gY2hhclNw
ZWMudmFsaWRDaGFycykgIT09ICd1bmRlZmluZWQnKSB7Ci0gICAgICAgICAgICBpZiAoY2hhcnMu
aW5kZXhPZihjaGFyKSAhPT0gLTEpIHsgcmV0dXJuZWQucHVzaChjaGlsZCk7IH0KLSAgICAgICAg
ICB9IGVsc2UgaWYgKHR5cGVvZiAoY2hhcnMgPSBjaGFyU3BlYy5pbnZhbGlkQ2hhcnMpICE9PSAn
dW5kZWZpbmVkJykgewotICAgICAgICAgICAgaWYgKGNoYXJzLmluZGV4T2YoY2hhcikgPT09IC0x
KSB7IHJldHVybmVkLnB1c2goY2hpbGQpOyB9Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0KLSAg
ICAgICAgcmV0dXJuIHJldHVybmVkOwotICAgICAgfQotCi0gICAgICAvKiogSUYgREVCVUcKLSAg
ICAgICwgZGVidWc6IGZ1bmN0aW9uKCkgewotICAgICAgICB2YXIgY2hhclNwZWMgPSB0aGlzLmNo
YXJTcGVjLAotICAgICAgICAgICAgZGVidWcgPSAiWyIsCi0gICAgICAgICAgICBjaGFycyA9IGNo
YXJTcGVjLnZhbGlkQ2hhcnMgfHwgY2hhclNwZWMuaW52YWxpZENoYXJzOwotCi0gICAgICAgIGlm
IChjaGFyU3BlYy5pbnZhbGlkQ2hhcnMpIHsgZGVidWcgKz0gIl4iOyB9Ci0gICAgICAgIGRlYnVn
ICs9IGNoYXJzOwotICAgICAgICBkZWJ1ZyArPSAiXSI7Ci0KLSAgICAgICAgaWYgKGNoYXJTcGVj
LnJlcGVhdCkgeyBkZWJ1ZyArPSAiKyI7IH0KLQotICAgICAgICByZXR1cm4gZGVidWc7Ci0gICAg
ICB9Ci0gICAgICBFTkQgSUYgKiovCi0gICAgfTsKLQotICAgIC8qKiBJRiBERUJVRwotICAgIGZ1
bmN0aW9uIGRlYnVnKGxvZykgewotICAgICAgY29uc29sZS5sb2cobG9nKTsKLSAgICB9Ci0KLSAg
ICBmdW5jdGlvbiBkZWJ1Z1N0YXRlKHN0YXRlKSB7Ci0gICAgICByZXR1cm4gc3RhdGUubmV4dFN0
YXRlcy5tYXAoZnVuY3Rpb24obikgewotICAgICAgICBpZiAobi5uZXh0U3RhdGVzLmxlbmd0aCA9
PT0gMCkgeyByZXR1cm4gIiggIiArIG4uZGVidWcoKSArICIgW2FjY2VwdGluZ10gKSI7IH0KLSAg
ICAgICAgcmV0dXJuICIoICIgKyBuLmRlYnVnKCkgKyAiIDx0aGVuPiAiICsgbi5uZXh0U3RhdGVz
Lm1hcChmdW5jdGlvbihzKSB7IHJldHVybiBzLmRlYnVnKCkgfSkuam9pbigiIG9yICIpICsgIiAp
IjsKLSAgICAgIH0pLmpvaW4oIiwgIikKLSAgICB9Ci0gICAgRU5EIElGICoqLwotCi0gICAgLy8g
VGhpcyBpcyBhIHNvbWV3aGF0IG5haXZlIHN0cmF0ZWd5LCBidXQgc2hvdWxkIHdvcmsgaW4gYSBs
b3Qgb2YgY2FzZXMKLSAgICAvLyBBIGJldHRlciBzdHJhdGVneSB3b3VsZCBwcm9wZXJseSByZXNv
bHZlIC9wb3N0cy86aWQvbmV3IGFuZCAvcG9zdHMvZWRpdC86aWQKLSAgICBmdW5jdGlvbiBzb3J0
U29sdXRpb25zKHN0YXRlcykgewotICAgICAgcmV0dXJuIHN0YXRlcy5zb3J0KGZ1bmN0aW9uKGEs
IGIpIHsKLSAgICAgICAgaWYgKGEudHlwZXMuc3RhcnMgIT09IGIudHlwZXMuc3RhcnMpIHsgcmV0
dXJuIGEudHlwZXMuc3RhcnMgLSBiLnR5cGVzLnN0YXJzOyB9Ci0gICAgICAgIGlmIChhLnR5cGVz
LmR5bmFtaWNzICE9PSBiLnR5cGVzLmR5bmFtaWNzKSB7IHJldHVybiBhLnR5cGVzLmR5bmFtaWNz
IC0gYi50eXBlcy5keW5hbWljczsgfQotICAgICAgICBpZiAoYS50eXBlcy5zdGF0aWNzICE9PSBi
LnR5cGVzLnN0YXRpY3MpIHsgcmV0dXJuIGIudHlwZXMuc3RhdGljcyAtIGEudHlwZXMuc3RhdGlj
czsgfQotCi0gICAgICAgIHJldHVybiAwOwotICAgICAgfSk7Ci0gICAgfQotCi0gICAgZnVuY3Rp
b24gcmVjb2duaXplQ2hhcihzdGF0ZXMsIGNoYXIpIHsKLSAgICAgIHZhciBuZXh0U3RhdGVzID0g
W107Ci0KLSAgICAgIGZvciAodmFyIGk9MCwgbD1zdGF0ZXMubGVuZ3RoOyBpPGw7IGkrKykgewot
ICAgICAgICB2YXIgc3RhdGUgPSBzdGF0ZXNbaV07Ci0KLSAgICAgICAgbmV4dFN0YXRlcyA9IG5l
eHRTdGF0ZXMuY29uY2F0KHN0YXRlLm1hdGNoKGNoYXIpKTsKLSAgICAgIH0KLQotICAgICAgcmV0
dXJuIG5leHRTdGF0ZXM7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gZmluZEhhbmRsZXIoc3RhdGUs
IHBhdGgsIHF1ZXJ5UGFyYW1zKSB7Ci0gICAgICB2YXIgaGFuZGxlcnMgPSBzdGF0ZS5oYW5kbGVy
cywgcmVnZXggPSBzdGF0ZS5yZWdleDsKLSAgICAgIHZhciBjYXB0dXJlcyA9IHBhdGgubWF0Y2go
cmVnZXgpLCBjdXJyZW50Q2FwdHVyZSA9IDE7Ci0gICAgICB2YXIgcmVzdWx0ID0gW107Ci0KLSAg
ICAgIGZvciAodmFyIGk9MCwgbD1oYW5kbGVycy5sZW5ndGg7IGk8bDsgaSsrKSB7Ci0gICAgICAg
IHZhciBoYW5kbGVyID0gaGFuZGxlcnNbaV0sIG5hbWVzID0gaGFuZGxlci5uYW1lcywgcGFyYW1z
ID0ge30sCi0gICAgICAgICAgd2F0Y2hlZFF1ZXJ5UGFyYW1zID0gaGFuZGxlci5xdWVyeVBhcmFt
cyB8fCBbXSwKLSAgICAgICAgICBhY3RpdmVRdWVyeVBhcmFtcyA9IHt9LAotICAgICAgICAgIGos
IG07Ci0KLSAgICAgICAgZm9yIChqPTAsIG09bmFtZXMubGVuZ3RoOyBqPG07IGorKykgewotICAg
ICAgICAgIHBhcmFtc1tuYW1lc1tqXV0gPSBjYXB0dXJlc1tjdXJyZW50Q2FwdHVyZSsrXTsKLSAg
ICAgICAgfQotICAgICAgICBmb3IgKGo9MCwgbT13YXRjaGVkUXVlcnlQYXJhbXMubGVuZ3RoOyBq
IDwgbTsgaisrKSB7Ci0gICAgICAgICAgdmFyIGtleSA9IHdhdGNoZWRRdWVyeVBhcmFtc1tqXTsK
LSAgICAgICAgICBpZihxdWVyeVBhcmFtc1trZXldKXsKLSAgICAgICAgICAgIGFjdGl2ZVF1ZXJ5
UGFyYW1zW2tleV0gPSBxdWVyeVBhcmFtc1trZXldOwotICAgICAgICAgIH0KLSAgICAgICAgfQot
ICAgICAgICB2YXIgY3VycmVudFJlc3VsdCA9IHsgaGFuZGxlcjogaGFuZGxlci5oYW5kbGVyLCBw
YXJhbXM6IHBhcmFtcywgaXNEeW5hbWljOiAhIW5hbWVzLmxlbmd0aCB9OwotICAgICAgICBpZih3
YXRjaGVkUXVlcnlQYXJhbXMgJiYgd2F0Y2hlZFF1ZXJ5UGFyYW1zLmxlbmd0aCA+IDApIHsKLSAg
ICAgICAgICBjdXJyZW50UmVzdWx0LnF1ZXJ5UGFyYW1zID0gYWN0aXZlUXVlcnlQYXJhbXM7Ci0g
ICAgICAgIH0KLSAgICAgICAgcmVzdWx0LnB1c2goY3VycmVudFJlc3VsdCk7Ci0gICAgICB9Ci0K
LSAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gYWRkU2VnbWVudChj
dXJyZW50U3RhdGUsIHNlZ21lbnQpIHsKLSAgICAgIHNlZ21lbnQuZWFjaENoYXIoZnVuY3Rpb24o
Y2hhcikgewotICAgICAgICB2YXIgc3RhdGU7Ci0KLSAgICAgICAgY3VycmVudFN0YXRlID0gY3Vy
cmVudFN0YXRlLnB1dChjaGFyKTsKLSAgICAgIH0pOwotCi0gICAgICByZXR1cm4gY3VycmVudFN0
YXRlOwotICAgIH0KLQotICAgIC8vIFRoZSBtYWluIGludGVyZmFjZQotCi0gICAgdmFyIFJvdXRl
UmVjb2duaXplciA9IGZ1bmN0aW9uKCkgewotICAgICAgdGhpcy5yb290U3RhdGUgPSBuZXcgU3Rh
dGUoKTsKLSAgICAgIHRoaXMubmFtZXMgPSB7fTsKLSAgICB9OwotCi0KLSAgICBSb3V0ZVJlY29n
bml6ZXIucHJvdG90eXBlID0gewotICAgICAgYWRkOiBmdW5jdGlvbihyb3V0ZXMsIG9wdGlvbnMp
IHsKLSAgICAgICAgdmFyIGN1cnJlbnRTdGF0ZSA9IHRoaXMucm9vdFN0YXRlLCByZWdleCA9ICJe
IiwKLSAgICAgICAgICAgIHR5cGVzID0geyBzdGF0aWNzOiAwLCBkeW5hbWljczogMCwgc3RhcnM6
IDAgfSwKLSAgICAgICAgICAgIGhhbmRsZXJzID0gW10sIGFsbFNlZ21lbnRzID0gW10sIG5hbWU7
Ci0KLSAgICAgICAgdmFyIGlzRW1wdHkgPSB0cnVlOwotCi0gICAgICAgIGZvciAodmFyIGk9MCwg
bD1yb3V0ZXMubGVuZ3RoOyBpPGw7IGkrKykgewotICAgICAgICAgIHZhciByb3V0ZSA9IHJvdXRl
c1tpXSwgbmFtZXMgPSBbXTsKLQotICAgICAgICAgIHZhciBzZWdtZW50cyA9IHBhcnNlKHJvdXRl
LnBhdGgsIG5hbWVzLCB0eXBlcyk7Ci0KLSAgICAgICAgICBhbGxTZWdtZW50cyA9IGFsbFNlZ21l
bnRzLmNvbmNhdChzZWdtZW50cyk7Ci0KLSAgICAgICAgICBmb3IgKHZhciBqPTAsIG09c2VnbWVu
dHMubGVuZ3RoOyBqPG07IGorKykgewotICAgICAgICAgICAgdmFyIHNlZ21lbnQgPSBzZWdtZW50
c1tqXTsKLQotICAgICAgICAgICAgaWYgKHNlZ21lbnQgaW5zdGFuY2VvZiBFcHNpbG9uU2VnbWVu
dCkgeyBjb250aW51ZTsgfQotCi0gICAgICAgICAgICBpc0VtcHR5ID0gZmFsc2U7Ci0KLSAgICAg
ICAgICAgIC8vIEFkZCBhICIvIiBmb3IgdGhlIG5ldyBzZWdtZW50Ci0gICAgICAgICAgICBjdXJy
ZW50U3RhdGUgPSBjdXJyZW50U3RhdGUucHV0KHsgdmFsaWRDaGFyczogIi8iIH0pOwotICAgICAg
ICAgICAgcmVnZXggKz0gIi8iOwotCi0gICAgICAgICAgICAvLyBBZGQgYSByZXByZXNlbnRhdGlv
biBvZiB0aGUgc2VnbWVudCB0byB0aGUgTkZBIGFuZCByZWdleAotICAgICAgICAgICAgY3VycmVu
dFN0YXRlID0gYWRkU2VnbWVudChjdXJyZW50U3RhdGUsIHNlZ21lbnQpOwotICAgICAgICAgICAg
cmVnZXggKz0gc2VnbWVudC5yZWdleCgpOwotICAgICAgICAgIH0KLQotICAgICAgICAgIHZhciBo
YW5kbGVyID0geyBoYW5kbGVyOiByb3V0ZS5oYW5kbGVyLCBuYW1lczogbmFtZXMgfTsKLSAgICAg
ICAgICBpZihyb3V0ZS5xdWVyeVBhcmFtcykgewotICAgICAgICAgICAgaGFuZGxlci5xdWVyeVBh
cmFtcyA9IHJvdXRlLnF1ZXJ5UGFyYW1zOwotICAgICAgICAgIH0KLSAgICAgICAgICBoYW5kbGVy
cy5wdXNoKGhhbmRsZXIpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGlzRW1wdHkpIHsKLSAg
ICAgICAgICBjdXJyZW50U3RhdGUgPSBjdXJyZW50U3RhdGUucHV0KHsgdmFsaWRDaGFyczogIi8i
IH0pOwotICAgICAgICAgIHJlZ2V4ICs9ICIvIjsKLSAgICAgICAgfQotCi0gICAgICAgIGN1cnJl
bnRTdGF0ZS5oYW5kbGVycyA9IGhhbmRsZXJzOwotICAgICAgICBjdXJyZW50U3RhdGUucmVnZXgg
PSBuZXcgUmVnRXhwKHJlZ2V4ICsgIiQiKTsKLSAgICAgICAgY3VycmVudFN0YXRlLnR5cGVzID0g
dHlwZXM7Ci0KLSAgICAgICAgaWYgKG5hbWUgPSBvcHRpb25zICYmIG9wdGlvbnMuYXMpIHsKLSAg
ICAgICAgICB0aGlzLm5hbWVzW25hbWVdID0gewotICAgICAgICAgICAgc2VnbWVudHM6IGFsbFNl
Z21lbnRzLAotICAgICAgICAgICAgaGFuZGxlcnM6IGhhbmRsZXJzCi0gICAgICAgICAgfTsKLSAg
ICAgICAgfQotICAgICAgfSwKLQotICAgICAgaGFuZGxlcnNGb3I6IGZ1bmN0aW9uKG5hbWUpIHsK
LSAgICAgICAgdmFyIHJvdXRlID0gdGhpcy5uYW1lc1tuYW1lXSwgcmVzdWx0ID0gW107Ci0gICAg
ICAgIGlmICghcm91dGUpIHsgdGhyb3cgbmV3IEVycm9yKCJUaGVyZSBpcyBubyByb3V0ZSBuYW1l
ZCAiICsgbmFtZSk7IH0KLQotICAgICAgICBmb3IgKHZhciBpPTAsIGw9cm91dGUuaGFuZGxlcnMu
bGVuZ3RoOyBpPGw7IGkrKykgewotICAgICAgICAgIHJlc3VsdC5wdXNoKHJvdXRlLmhhbmRsZXJz
W2ldKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICB9LAotCi0g
ICAgICBoYXNSb3V0ZTogZnVuY3Rpb24obmFtZSkgewotICAgICAgICByZXR1cm4gISF0aGlzLm5h
bWVzW25hbWVdOwotICAgICAgfSwKLQotICAgICAgZ2VuZXJhdGU6IGZ1bmN0aW9uKG5hbWUsIHBh
cmFtcykgewotICAgICAgICB2YXIgcm91dGUgPSB0aGlzLm5hbWVzW25hbWVdLCBvdXRwdXQgPSAi
IjsKLSAgICAgICAgaWYgKCFyb3V0ZSkgeyB0aHJvdyBuZXcgRXJyb3IoIlRoZXJlIGlzIG5vIHJv
dXRlIG5hbWVkICIgKyBuYW1lKTsgfQotCi0gICAgICAgIHZhciBzZWdtZW50cyA9IHJvdXRlLnNl
Z21lbnRzOwotCi0gICAgICAgIGZvciAodmFyIGk9MCwgbD1zZWdtZW50cy5sZW5ndGg7IGk8bDsg
aSsrKSB7Ci0gICAgICAgICAgdmFyIHNlZ21lbnQgPSBzZWdtZW50c1tpXTsKLQotICAgICAgICAg
IGlmIChzZWdtZW50IGluc3RhbmNlb2YgRXBzaWxvblNlZ21lbnQpIHsgY29udGludWU7IH0KLQot
ICAgICAgICAgIG91dHB1dCArPSAiLyI7Ci0gICAgICAgICAgb3V0cHV0ICs9IHNlZ21lbnQuZ2Vu
ZXJhdGUocGFyYW1zKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChvdXRwdXQuY2hhckF0KDAp
ICE9PSAnLycpIHsgb3V0cHV0ID0gJy8nICsgb3V0cHV0OyB9Ci0KLSAgICAgICAgaWYgKHBhcmFt
cyAmJiBwYXJhbXMucXVlcnlQYXJhbXMpIHsKLSAgICAgICAgICBvdXRwdXQgKz0gdGhpcy5nZW5l
cmF0ZVF1ZXJ5U3RyaW5nKHBhcmFtcy5xdWVyeVBhcmFtcywgcm91dGUuaGFuZGxlcnMpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIG91dHB1dDsKLSAgICAgIH0sCi0KLSAgICAgIGdlbmVy
YXRlUXVlcnlTdHJpbmc6IGZ1bmN0aW9uKHBhcmFtcywgaGFuZGxlcnMpIHsKLSAgICAgICAgdmFy
IHBhaXJzID0gW10sIGFsbG93ZWRQYXJhbXMgPSBbXTsKLSAgICAgICAgZm9yKHZhciBpPTA7IGkg
PCBoYW5kbGVycy5sZW5ndGg7IGkrKykgewotICAgICAgICAgIHZhciBjdXJyZW50UGFyYW1MaXN0
ID0gaGFuZGxlcnNbaV0ucXVlcnlQYXJhbXM7Ci0gICAgICAgICAgaWYoY3VycmVudFBhcmFtTGlz
dCkgewotICAgICAgICAgICAgYWxsb3dlZFBhcmFtcy5wdXNoLmFwcGx5KGFsbG93ZWRQYXJhbXMs
IGN1cnJlbnRQYXJhbUxpc3QpOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBmb3Io
dmFyIGtleSBpbiBwYXJhbXMpIHsKLSAgICAgICAgICBpZiAocGFyYW1zLmhhc093blByb3BlcnR5
KGtleSkpIHsKLSAgICAgICAgICAgIGlmKGFsbG93ZWRQYXJhbXMuaW5kZXhPZihrZXkpID09PSAt
MSkgewotICAgICAgICAgICAgICB0aHJvdyAnUXVlcnkgcGFyYW0gIicgKyBrZXkgKyAnIiBpcyBu
b3Qgc3BlY2lmaWVkIGFzIGEgdmFsaWQgcGFyYW0gZm9yIHRoaXMgcm91dGUnOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgdmFyIHZhbHVlID0gcGFyYW1zW2tleV07Ci0gICAgICAgICAgICB2
YXIgcGFpciA9IGVuY29kZVVSSUNvbXBvbmVudChrZXkpOwotICAgICAgICAgICAgaWYodmFsdWUg
IT09IHRydWUpIHsKLSAgICAgICAgICAgICAgcGFpciArPSAiPSIgKyBlbmNvZGVVUklDb21wb25l
bnQodmFsdWUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcGFpcnMucHVzaChwYWlyKTsK
LSAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAocGFpcnMubGVuZ3RoID09PSAw
KSB7IHJldHVybiAnJzsgfQotCi0gICAgICAgIHJldHVybiAiPyIgKyBwYWlycy5qb2luKCImIik7
Ci0gICAgICB9LAotCi0gICAgICBwYXJzZVF1ZXJ5U3RyaW5nOiBmdW5jdGlvbihxdWVyeVN0cmlu
ZykgewotICAgICAgICB2YXIgcGFpcnMgPSBxdWVyeVN0cmluZy5zcGxpdCgiJiIpLCBxdWVyeVBh
cmFtcyA9IHt9OwotICAgICAgICBmb3IodmFyIGk9MDsgaSA8IHBhaXJzLmxlbmd0aDsgaSsrKSB7
Ci0gICAgICAgICAgdmFyIHBhaXIgICAgICA9IHBhaXJzW2ldLnNwbGl0KCc9JyksCi0gICAgICAg
ICAgICAgIGtleSAgICAgICA9IGRlY29kZVVSSUNvbXBvbmVudChwYWlyWzBdKSwKLSAgICAgICAg
ICAgICAgdmFsdWUgICAgID0gcGFpclsxXSA/IGRlY29kZVVSSUNvbXBvbmVudChwYWlyWzFdKSA6
IHRydWU7Ci0gICAgICAgICAgcXVlcnlQYXJhbXNba2V5XSA9IHZhbHVlOwotICAgICAgICB9Ci0g
ICAgICAgIHJldHVybiBxdWVyeVBhcmFtczsKLSAgICAgIH0sCi0KLSAgICAgIHJlY29nbml6ZTog
ZnVuY3Rpb24ocGF0aCkgewotICAgICAgICB2YXIgc3RhdGVzID0gWyB0aGlzLnJvb3RTdGF0ZSBd
LAotICAgICAgICAgICAgcGF0aExlbiwgaSwgbCwgcXVlcnlTdGFydCwgcXVlcnlQYXJhbXMgPSB7
fTsKLQotICAgICAgICBxdWVyeVN0YXJ0ID0gcGF0aC5pbmRleE9mKCc/Jyk7Ci0gICAgICAgIGlm
IChxdWVyeVN0YXJ0ICE9PSAtMSkgewotICAgICAgICAgIHZhciBxdWVyeVN0cmluZyA9IHBhdGgu
c3Vic3RyKHF1ZXJ5U3RhcnQgKyAxLCBwYXRoLmxlbmd0aCk7Ci0gICAgICAgICAgcGF0aCA9IHBh
dGguc3Vic3RyKDAsIHF1ZXJ5U3RhcnQpOwotICAgICAgICAgIHF1ZXJ5UGFyYW1zID0gdGhpcy5w
YXJzZVF1ZXJ5U3RyaW5nKHF1ZXJ5U3RyaW5nKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIERF
QlVHIEdST1VQIHBhdGgKLQotICAgICAgICBpZiAocGF0aC5jaGFyQXQoMCkgIT09ICIvIikgeyBw
YXRoID0gIi8iICsgcGF0aDsgfQotCi0gICAgICAgIHBhdGhMZW4gPSBwYXRoLmxlbmd0aDsKLSAg
ICAgICAgaWYgKHBhdGhMZW4gPiAxICYmIHBhdGguY2hhckF0KHBhdGhMZW4gLSAxKSA9PT0gIi8i
KSB7Ci0gICAgICAgICAgcGF0aCA9IHBhdGguc3Vic3RyKDAsIHBhdGhMZW4gLSAxKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIGZvciAoaT0wLCBsPXBhdGgubGVuZ3RoOyBpPGw7IGkrKykgewotICAg
ICAgICAgIHN0YXRlcyA9IHJlY29nbml6ZUNoYXIoc3RhdGVzLCBwYXRoLmNoYXJBdChpKSk7Ci0g
ICAgICAgICAgaWYgKCFzdGF0ZXMubGVuZ3RoKSB7IGJyZWFrOyB9Ci0gICAgICAgIH0KLQotICAg
ICAgICAvLyBFTkQgREVCVUcgR1JPVVAKLQotICAgICAgICB2YXIgc29sdXRpb25zID0gW107Ci0g
ICAgICAgIGZvciAoaT0wLCBsPXN0YXRlcy5sZW5ndGg7IGk8bDsgaSsrKSB7Ci0gICAgICAgICAg
aWYgKHN0YXRlc1tpXS5oYW5kbGVycykgeyBzb2x1dGlvbnMucHVzaChzdGF0ZXNbaV0pOyB9Ci0g
ICAgICAgIH0KLQotICAgICAgICBzdGF0ZXMgPSBzb3J0U29sdXRpb25zKHNvbHV0aW9ucyk7Ci0K
LSAgICAgICAgdmFyIHN0YXRlID0gc29sdXRpb25zWzBdOwotCi0gICAgICAgIGlmIChzdGF0ZSAm
JiBzdGF0ZS5oYW5kbGVycykgewotICAgICAgICAgIHJldHVybiBmaW5kSGFuZGxlcihzdGF0ZSwg
cGF0aCwgcXVlcnlQYXJhbXMpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfTsKLQotICAgIGZ1
bmN0aW9uIFRhcmdldChwYXRoLCBtYXRjaGVyLCBkZWxlZ2F0ZSkgewotICAgICAgdGhpcy5wYXRo
ID0gcGF0aDsKLSAgICAgIHRoaXMubWF0Y2hlciA9IG1hdGNoZXI7Ci0gICAgICB0aGlzLmRlbGVn
YXRlID0gZGVsZWdhdGU7Ci0gICAgfQotCi0gICAgVGFyZ2V0LnByb3RvdHlwZSA9IHsKLSAgICAg
IHRvOiBmdW5jdGlvbih0YXJnZXQsIGNhbGxiYWNrKSB7Ci0gICAgICAgIHZhciBkZWxlZ2F0ZSA9
IHRoaXMuZGVsZWdhdGU7Ci0KLSAgICAgICAgaWYgKGRlbGVnYXRlICYmIGRlbGVnYXRlLndpbGxB
ZGRSb3V0ZSkgewotICAgICAgICAgIHRhcmdldCA9IGRlbGVnYXRlLndpbGxBZGRSb3V0ZSh0aGlz
Lm1hdGNoZXIudGFyZ2V0LCB0YXJnZXQpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5tYXRj
aGVyLmFkZCh0aGlzLnBhdGgsIHRhcmdldCk7Ci0KLSAgICAgICAgaWYgKGNhbGxiYWNrKSB7Ci0g
ICAgICAgICAgaWYgKGNhbGxiYWNrLmxlbmd0aCA9PT0gMCkgeyB0aHJvdyBuZXcgRXJyb3IoIllv
dSBtdXN0IGhhdmUgYW4gYXJndW1lbnQgaW4gdGhlIGZ1bmN0aW9uIHBhc3NlZCB0byBgdG9gIik7
IH0KLSAgICAgICAgICB0aGlzLm1hdGNoZXIuYWRkQ2hpbGQodGhpcy5wYXRoLCB0YXJnZXQsIGNh
bGxiYWNrLCB0aGlzLmRlbGVnYXRlKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhpczsK
LSAgICAgIH0sCi0KLSAgICAgIHdpdGhRdWVyeVBhcmFtczogZnVuY3Rpb24oKSB7Ci0gICAgICAg
IGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7IHRocm93IG5ldyBFcnJvcigieW91IG11c3Qg
cHJvdmlkZSBhcmd1bWVudHMgdG8gdGhlIHdpdGhRdWVyeVBhcmFtcyBtZXRob2QiKTsgfQotICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgewotICAgICAg
ICAgIGlmICh0eXBlb2YgYXJndW1lbnRzW2ldICE9PSAic3RyaW5nIikgewotICAgICAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCd5b3Ugc2hvdWxkIGNhbGwgd2l0aFF1ZXJ5UGFyYW1zIHdpdGggYSBs
aXN0IG9mIHN0cmluZ3MsIGUuZy4gd2l0aFF1ZXJ5UGFyYW1zKCJmb28iLCAiYmFyIiknKTsKLSAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgdmFyIHF1ZXJ5UGFyYW1zID0gW10uc2xpY2Uu
Y2FsbChhcmd1bWVudHMpOwotICAgICAgICB0aGlzLm1hdGNoZXIuYWRkUXVlcnlQYXJhbXModGhp
cy5wYXRoLCBxdWVyeVBhcmFtcyk7Ci0gICAgICB9Ci0gICAgfTsKLQotICAgIGZ1bmN0aW9uIE1h
dGNoZXIodGFyZ2V0KSB7Ci0gICAgICB0aGlzLnJvdXRlcyA9IHt9OwotICAgICAgdGhpcy5jaGls
ZHJlbiA9IHt9OwotICAgICAgdGhpcy5xdWVyeVBhcmFtcyA9IHt9OwotICAgICAgdGhpcy50YXJn
ZXQgPSB0YXJnZXQ7Ci0gICAgfQotCi0gICAgTWF0Y2hlci5wcm90b3R5cGUgPSB7Ci0gICAgICBh
ZGQ6IGZ1bmN0aW9uKHBhdGgsIGhhbmRsZXIpIHsKLSAgICAgICAgdGhpcy5yb3V0ZXNbcGF0aF0g
PSBoYW5kbGVyOwotICAgICAgfSwKLQotICAgICAgYWRkUXVlcnlQYXJhbXM6IGZ1bmN0aW9uKHBh
dGgsIHBhcmFtcykgewotICAgICAgICB0aGlzLnF1ZXJ5UGFyYW1zW3BhdGhdID0gcGFyYW1zOwot
ICAgICAgfSwKLQotICAgICAgYWRkQ2hpbGQ6IGZ1bmN0aW9uKHBhdGgsIHRhcmdldCwgY2FsbGJh
Y2ssIGRlbGVnYXRlKSB7Ci0gICAgICAgIHZhciBtYXRjaGVyID0gbmV3IE1hdGNoZXIodGFyZ2V0
KTsKLSAgICAgICAgdGhpcy5jaGlsZHJlbltwYXRoXSA9IG1hdGNoZXI7Ci0KLSAgICAgICAgdmFy
IG1hdGNoID0gZ2VuZXJhdGVNYXRjaChwYXRoLCBtYXRjaGVyLCBkZWxlZ2F0ZSk7Ci0KLSAgICAg
ICAgaWYgKGRlbGVnYXRlICYmIGRlbGVnYXRlLmNvbnRleHRFbnRlcmVkKSB7Ci0gICAgICAgICAg
ZGVsZWdhdGUuY29udGV4dEVudGVyZWQodGFyZ2V0LCBtYXRjaCk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBjYWxsYmFjayhtYXRjaCk7Ci0gICAgICB9Ci0gICAgfTsKLQotICAgIGZ1bmN0aW9uIGdl
bmVyYXRlTWF0Y2goc3RhcnRpbmdQYXRoLCBtYXRjaGVyLCBkZWxlZ2F0ZSkgewotICAgICAgcmV0
dXJuIGZ1bmN0aW9uKHBhdGgsIG5lc3RlZENhbGxiYWNrKSB7Ci0gICAgICAgIHZhciBmdWxsUGF0
aCA9IHN0YXJ0aW5nUGF0aCArIHBhdGg7Ci0KLSAgICAgICAgaWYgKG5lc3RlZENhbGxiYWNrKSB7
Ci0gICAgICAgICAgbmVzdGVkQ2FsbGJhY2soZ2VuZXJhdGVNYXRjaChmdWxsUGF0aCwgbWF0Y2hl
ciwgZGVsZWdhdGUpKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICByZXR1cm4gbmV3IFRh
cmdldChzdGFydGluZ1BhdGggKyBwYXRoLCBtYXRjaGVyLCBkZWxlZ2F0ZSk7Ci0gICAgICAgIH0K
LSAgICAgIH07Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gYWRkUm91dGUocm91dGVBcnJheSwgcGF0
aCwgaGFuZGxlciwgcXVlcnlQYXJhbXMpIHsKLSAgICAgIHZhciBsZW4gPSAwOwotICAgICAgZm9y
ICh2YXIgaT0wLCBsPXJvdXRlQXJyYXkubGVuZ3RoOyBpPGw7IGkrKykgewotICAgICAgICBsZW4g
Kz0gcm91dGVBcnJheVtpXS5wYXRoLmxlbmd0aDsKLSAgICAgIH0KLQotICAgICAgcGF0aCA9IHBh
dGguc3Vic3RyKGxlbik7Ci0gICAgICB2YXIgcm91dGUgPSB7IHBhdGg6IHBhdGgsIGhhbmRsZXI6
IGhhbmRsZXIgfTsKLSAgICAgIGlmKHF1ZXJ5UGFyYW1zKSB7IHJvdXRlLnF1ZXJ5UGFyYW1zID0g
cXVlcnlQYXJhbXM7IH0KLSAgICAgIHJvdXRlQXJyYXkucHVzaChyb3V0ZSk7Ci0gICAgfQotCi0g
ICAgZnVuY3Rpb24gZWFjaFJvdXRlKGJhc2VSb3V0ZSwgbWF0Y2hlciwgY2FsbGJhY2ssIGJpbmRp
bmcpIHsKLSAgICAgIHZhciByb3V0ZXMgPSBtYXRjaGVyLnJvdXRlczsKLSAgICAgIHZhciBxdWVy
eVBhcmFtcyA9IG1hdGNoZXIucXVlcnlQYXJhbXM7Ci0KLSAgICAgIGZvciAodmFyIHBhdGggaW4g
cm91dGVzKSB7Ci0gICAgICAgIGlmIChyb3V0ZXMuaGFzT3duUHJvcGVydHkocGF0aCkpIHsKLSAg
ICAgICAgICB2YXIgcm91dGVBcnJheSA9IGJhc2VSb3V0ZS5zbGljZSgpOwotICAgICAgICAgIGFk
ZFJvdXRlKHJvdXRlQXJyYXksIHBhdGgsIHJvdXRlc1twYXRoXSwgcXVlcnlQYXJhbXNbcGF0aF0p
OwotCi0gICAgICAgICAgaWYgKG1hdGNoZXIuY2hpbGRyZW5bcGF0aF0pIHsKLSAgICAgICAgICAg
IGVhY2hSb3V0ZShyb3V0ZUFycmF5LCBtYXRjaGVyLmNoaWxkcmVuW3BhdGhdLCBjYWxsYmFjaywg
YmluZGluZyk7Ci0gICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGNhbGxiYWNrLmNhbGwo
YmluZGluZywgcm91dGVBcnJheSk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0g
ICAgfQotCi0gICAgUm91dGVSZWNvZ25pemVyLnByb3RvdHlwZS5tYXAgPSBmdW5jdGlvbihjYWxs
YmFjaywgYWRkUm91dGVDYWxsYmFjaykgewotICAgICAgdmFyIG1hdGNoZXIgPSBuZXcgTWF0Y2hl
cigpOwotCi0gICAgICBjYWxsYmFjayhnZW5lcmF0ZU1hdGNoKCIiLCBtYXRjaGVyLCB0aGlzLmRl
bGVnYXRlKSk7Ci0KLSAgICAgIGVhY2hSb3V0ZShbXSwgbWF0Y2hlciwgZnVuY3Rpb24ocm91dGUp
IHsKLSAgICAgICAgaWYgKGFkZFJvdXRlQ2FsbGJhY2spIHsgYWRkUm91dGVDYWxsYmFjayh0aGlz
LCByb3V0ZSk7IH0KLSAgICAgICAgZWxzZSB7IHRoaXMuYWRkKHJvdXRlKTsgfQotICAgICAgfSwg
dGhpcyk7Ci0gICAgfTsKLSAgICByZXR1cm4gUm91dGVSZWNvZ25pemVyOwotICB9KTsKLQotfSko
KTsKLQotCi0KLShmdW5jdGlvbigpIHsKLWRlZmluZSgicm91dGVyIiwKLSAgWyJyb3V0ZS1yZWNv
Z25pemVyIiwicnN2cCIsImV4cG9ydHMiXSwKLSAgZnVuY3Rpb24oX19kZXBlbmRlbmN5MV9fLCBf
X2RlcGVuZGVuY3kyX18sIF9fZXhwb3J0c19fKSB7Ci0gICAgInVzZSBzdHJpY3QiOwotICAgIC8q
KgotICAgICAgQHByaXZhdGUKLQotICAgICAgVGhpcyBmaWxlIHJlZmVyZW5jZXMgc2V2ZXJhbCBp
bnRlcm5hbCBzdHJ1Y3R1cmVzOgotCi0gICAgICAjIyBgUmVjb2duaXplZEhhbmRsZXJgCi0KLSAg
ICAgICogYHtTdHJpbmd9IGhhbmRsZXJgOiBBIGhhbmRsZXIgbmFtZQotICAgICAgKiBge09iamVj
dH0gcGFyYW1zYDogQSBoYXNoIG9mIHJlY29nbml6ZWQgcGFyYW1ldGVycwotCi0gICAgICAjIyBg
SGFuZGxlckluZm9gCi0KLSAgICAgICogYHtCb29sZWFufSBpc0R5bmFtaWNgOiB3aGV0aGVyIGEg
aGFuZGxlciBoYXMgYW55IGR5bmFtaWMgc2VnbWVudHMKLSAgICAgICogYHtTdHJpbmd9IG5hbWVg
OiB0aGUgbmFtZSBvZiBhIGhhbmRsZXIKLSAgICAgICogYHtPYmplY3R9IGhhbmRsZXJgOiBhIGhh
bmRsZXIgb2JqZWN0Ci0gICAgICAqIGB7T2JqZWN0fSBjb250ZXh0YDogdGhlIGFjdGl2ZSBjb250
ZXh0IGZvciB0aGUgaGFuZGxlcgotICAgICovCi0KLSAgICB2YXIgUm91dGVSZWNvZ25pemVyID0g
X19kZXBlbmRlbmN5MV9fOwotICAgIHZhciBSU1ZQID0gX19kZXBlbmRlbmN5Ml9fOwotCi0gICAg
dmFyIHNsaWNlID0gQXJyYXkucHJvdG90eXBlLnNsaWNlOwotCi0KLQotICAgIC8qKgotICAgICAg
QHByaXZhdGUKLQotICAgICAgQSBUcmFuc2l0aW9uIGlzIGEgdGhlbm5hYmxlIChhIHByb21pc2Ut
bGlrZSBvYmplY3QpIHRoYXQgcmVwcmVzZW50cwotICAgICAgYW4gYXR0ZW1wdCB0byB0cmFuc2l0
aW9uIHRvIGFub3RoZXIgcm91dGUuIEl0IGNhbiBiZSBhYm9ydGVkLCBlaXRoZXIKLSAgICAgIGV4
cGxpY2l0bHkgdmlhIGBhYm9ydGAgb3IgYnkgYXR0ZW1wdGluZyBhbm90aGVyIHRyYW5zaXRpb24g
d2hpbGUgYQotICAgICAgcHJldmlvdXMgb25lIGlzIHN0aWxsIHVuZGVyd2F5LiBBbiBhYm9ydGVk
IHRyYW5zaXRpb24gY2FuIGFsc28KLSAgICAgIGJlIGByZXRyeSgpYGQgbGF0ZXIuCi0gICAgICov
Ci0KLSAgICBmdW5jdGlvbiBUcmFuc2l0aW9uKHJvdXRlciwgcHJvbWlzZSkgewotICAgICAgdGhp
cy5yb3V0ZXIgPSByb3V0ZXI7Ci0gICAgICB0aGlzLnByb21pc2UgPSBwcm9taXNlOwotICAgICAg
dGhpcy5kYXRhID0ge307Ci0gICAgICB0aGlzLnJlc29sdmVkTW9kZWxzID0ge307Ci0gICAgICB0
aGlzLnByb3ZpZGVkTW9kZWxzID0ge307Ci0gICAgICB0aGlzLnByb3ZpZGVkTW9kZWxzQXJyYXkg
PSBbXTsKLSAgICAgIHRoaXMuc2VxdWVuY2UgPSArK1RyYW5zaXRpb24uY3VycmVudFNlcXVlbmNl
OwotICAgICAgdGhpcy5wYXJhbXMgPSB7fTsKLSAgICB9Ci0KLSAgICBUcmFuc2l0aW9uLmN1cnJl
bnRTZXF1ZW5jZSA9IDA7Ci0KLSAgICBUcmFuc2l0aW9uLnByb3RvdHlwZSA9IHsKLSAgICAgIHRh
cmdldE5hbWU6IG51bGwsCi0gICAgICB1cmxNZXRob2Q6ICd1cGRhdGUnLAotICAgICAgcHJvdmlk
ZWRNb2RlbHM6IG51bGwsCi0gICAgICByZXNvbHZlZE1vZGVsczogbnVsbCwKLSAgICAgIHBhcmFt
czogbnVsbCwKLSAgICAgIHBpdm90SGFuZGxlcjogbnVsbCwKLSAgICAgIHJlc29sdmVJbmRleDog
MCwKLSAgICAgIGhhbmRsZXJJbmZvczogbnVsbCwKLQotICAgICAgaXNBY3RpdmU6IHRydWUsCi0K
LSAgICAgIC8qKgotICAgICAgICBUaGUgVHJhbnNpdGlvbidzIGludGVybmFsIHByb21pc2UuIENh
bGxpbmcgYC50aGVuYCBvbiB0aGlzIHByb3BlcnR5Ci0gICAgICAgIGlzIHRoYXQgc2FtZSBhcyBj
YWxsaW5nIGAudGhlbmAgb24gdGhlIFRyYW5zaXRpb24gb2JqZWN0IGl0c2VsZiwgYnV0Ci0gICAg
ICAgIHRoaXMgcHJvcGVydHkgaXMgZXhwb3NlZCBmb3Igd2hlbiB5b3Ugd2FudCB0byBwYXNzIGFy
b3VuZCBhCi0gICAgICAgIFRyYW5zaXRpb24ncyBwcm9taXNlLCBidXQgbm90IHRoZSBUcmFuc2l0
aW9uIG9iamVjdCBpdHNlbGYsIHNpbmNlCi0gICAgICAgIFRyYW5zaXRpb24gb2JqZWN0IGNhbiBi
ZSBleHRlcm5hbGx5IGBhYm9ydGBlZCwgd2hpbGUgdGhlIHByb21pc2UKLSAgICAgICAgY2Fubm90
LgotICAgICAgICovCi0gICAgICBwcm9taXNlOiBudWxsLAotCi0gICAgICAvKioKLSAgICAgICAg
Q3VzdG9tIHN0YXRlIGNhbiBiZSBzdG9yZWQgb24gYSBUcmFuc2l0aW9uJ3MgYGRhdGFgIG9iamVj
dC4KLSAgICAgICAgVGhpcyBjYW4gYmUgdXNlZnVsIGZvciBkZWNvcmF0aW5nIGEgVHJhbnNpdGlv
biB3aXRoaW4gYW4gZWFybGllcgotICAgICAgICBob29rIGFuZCBzaGFyZWQgd2l0aCBhIGxhdGVy
IGhvb2suIFByb3BlcnRpZXMgc2V0IG9uIGBkYXRhYCB3aWxsCi0gICAgICAgIGJlIGNvcGllZCB0
byBuZXcgdHJhbnNpdGlvbnMgZ2VuZXJhdGVkIGJ5IGNhbGxpbmcgYHJldHJ5YCBvbiB0aGlzCi0g
ICAgICAgIHRyYW5zaXRpb24uCi0gICAgICAgKi8KLSAgICAgIGRhdGE6IG51bGwsCi0KLSAgICAg
IC8qKgotICAgICAgICBBIHN0YW5kYXJkIHByb21pc2UgaG9vayB0aGF0IHJlc29sdmVzIGlmIHRo
ZSB0cmFuc2l0aW9uCi0gICAgICAgIHN1Y2NlZWRzIGFuZCByZWplY3RzIGlmIGl0IGZhaWxzL3Jl
ZGlyZWN0cy9hYm9ydHMuCi0KLSAgICAgICAgRm9yd2FyZHMgdG8gdGhlIGludGVybmFsIGBwcm9t
aXNlYCBwcm9wZXJ0eSB3aGljaCB5b3UgY2FuCi0gICAgICAgIHVzZSBpbiBzaXR1YXRpb25zIHdo
ZXJlIHlvdSB3YW50IHRvIHBhc3MgYXJvdW5kIGEgdGhlbm5hYmxlLAotICAgICAgICBidXQgbm90
IHRoZSBUcmFuc2l0aW9uIGl0c2VsZi4KLQotICAgICAgICBAcGFyYW0ge0Z1bmN0aW9ufSBzdWNj
ZXNzCi0gICAgICAgIEBwYXJhbSB7RnVuY3Rpb259IGZhaWx1cmUKLSAgICAgICAqLwotICAgICAg
dGhlbjogZnVuY3Rpb24oc3VjY2VzcywgZmFpbHVyZSkgewotICAgICAgICByZXR1cm4gdGhpcy5w
cm9taXNlLnRoZW4oc3VjY2VzcywgZmFpbHVyZSk7Ci0gICAgICB9LAotCi0gICAgICAvKioKLSAg
ICAgICAgQWJvcnRzIHRoZSBUcmFuc2l0aW9uLiBOb3RlIHlvdSBjYW4gYWxzbyBpbXBsaWNpdGx5
IGFib3J0IGEgdHJhbnNpdGlvbgotICAgICAgICBieSBpbml0aWF0aW5nIGFub3RoZXIgdHJhbnNp
dGlvbiB3aGlsZSBhIHByZXZpb3VzIG9uZSBpcyB1bmRlcndheS4KLSAgICAgICAqLwotICAgICAg
YWJvcnQ6IGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAodGhpcy5pc0Fib3J0ZWQpIHsgcmV0dXJu
IHRoaXM7IH0KLSAgICAgICAgbG9nKHRoaXMucm91dGVyLCB0aGlzLnNlcXVlbmNlLCB0aGlzLnRh
cmdldE5hbWUgKyAiOiB0cmFuc2l0aW9uIHdhcyBhYm9ydGVkIik7Ci0gICAgICAgIHRoaXMuaXNB
Ym9ydGVkID0gdHJ1ZTsKLSAgICAgICAgdGhpcy5pc0FjdGl2ZSA9IGZhbHNlOwotICAgICAgICB0
aGlzLnJvdXRlci5hY3RpdmVUcmFuc2l0aW9uID0gbnVsbDsKLSAgICAgICAgcmV0dXJuIHRoaXM7
Ci0gICAgICB9LAotCi0gICAgICAvKioKLSAgICAgICAgUmV0cmllcyBhIHByZXZpb3VzbHktYWJv
cnRlZCB0cmFuc2l0aW9uIChtYWtpbmcgc3VyZSB0byBhYm9ydCB0aGUKLSAgICAgICAgdHJhbnNp
dGlvbiBpZiBpdCdzIHN0aWxsIGFjdGl2ZSkuIFJldHVybnMgYSBuZXcgdHJhbnNpdGlvbiB0aGF0
Ci0gICAgICAgIHJlcHJlc2VudHMgdGhlIG5ldyBhdHRlbXB0IHRvIHRyYW5zaXRpb24uCi0gICAg
ICAgKi8KLSAgICAgIHJldHJ5OiBmdW5jdGlvbigpIHsKLSAgICAgICAgdGhpcy5hYm9ydCgpOwot
ICAgICAgICB2YXIgcmVjb2dIYW5kbGVycyA9IHRoaXMucm91dGVyLnJlY29nbml6ZXIuaGFuZGxl
cnNGb3IodGhpcy50YXJnZXROYW1lKSwKLSAgICAgICAgICAgIGhhbmRsZXJJbmZvcyAgPSBnZW5l
cmF0ZUhhbmRsZXJJbmZvc1dpdGhRdWVyeVBhcmFtcyh0aGlzLnJvdXRlciwgcmVjb2dIYW5kbGVy
cywgdGhpcy5xdWVyeVBhcmFtcyksCi0gICAgICAgICAgICBuZXdUcmFuc2l0aW9uID0gcGVyZm9y
bVRyYW5zaXRpb24odGhpcy5yb3V0ZXIsIGhhbmRsZXJJbmZvcywgdGhpcy5wcm92aWRlZE1vZGVs
c0FycmF5LCB0aGlzLnBhcmFtcywgdGhpcy5xdWVyeVBhcmFtcywgdGhpcy5kYXRhKTsKLQotICAg
ICAgICByZXR1cm4gbmV3VHJhbnNpdGlvbjsKLSAgICAgIH0sCi0KLSAgICAgIC8qKgotICAgICAg
ICBTZXRzIHRoZSBVUkwtY2hhbmdpbmcgbWV0aG9kIHRvIGJlIGVtcGxveWVkIGF0IHRoZSBlbmQg
b2YgYQotICAgICAgICBzdWNjZXNzZnVsIHRyYW5zaXRpb24uIEJ5IGRlZmF1bHQsIGEgbmV3IFRy
YW5zaXRpb24gd2lsbCBqdXN0Ci0gICAgICAgIHVzZSBgdXBkYXRlVVJMYCwgYnV0IHBhc3Npbmcg
J3JlcGxhY2UnIHRvIHRoaXMgbWV0aG9kIHdpbGwKLSAgICAgICAgY2F1c2UgdGhlIFVSTCB0byB1
cGRhdGUgdXNpbmcgJ3JlcGxhY2VXaXRoJyBpbnN0ZWFkLiBPbWl0dGluZwotICAgICAgICBhIHBh
cmFtZXRlciB3aWxsIGRpc2FibGUgdGhlIFVSTCBjaGFuZ2UsIGFsbG93aW5nIGZvciB0cmFuc2l0
aW9ucwotICAgICAgICB0aGF0IGRvbid0IHVwZGF0ZSB0aGUgVVJMIGF0IGNvbXBsZXRpb24gKHRo
aXMgaXMgYWxzbyB1c2VkIGZvcgotICAgICAgICBoYW5kbGVVUkwsIHNpbmNlIHRoZSBVUkwgaGFz
IGFscmVhZHkgY2hhbmdlZCBiZWZvcmUgdGhlCi0gICAgICAgIHRyYW5zaXRpb24gdG9vayBwbGFj
ZSkuCi0KLSAgICAgICAgQHBhcmFtIHtTdHJpbmd9IG1ldGhvZCB0aGUgdHlwZSBvZiBVUkwtY2hh
bmdpbmcgbWV0aG9kIHRvIHVzZQotICAgICAgICAgIGF0IHRoZSBlbmQgb2YgYSB0cmFuc2l0aW9u
LiBBY2NlcHRlZCB2YWx1ZXMgYXJlICdyZXBsYWNlJywKLSAgICAgICAgICBmYWxzeSB2YWx1ZXMs
IG9yIGFueSBvdGhlciBub24tZmFsc3kgdmFsdWUgKHdoaWNoIGlzCi0gICAgICAgICAgaW50ZXJw
cmV0ZWQgYXMgYW4gdXBkYXRlVVJMIHRyYW5zaXRpb24pLgotCi0gICAgICAgIEByZXR1cm4ge1Ry
YW5zaXRpb259IHRoaXMgdHJhbnNpdGlvbgotICAgICAgICovCi0gICAgICBtZXRob2Q6IGZ1bmN0
aW9uKG1ldGhvZCkgewotICAgICAgICB0aGlzLnVybE1ldGhvZCA9IG1ldGhvZDsKLSAgICAgICAg
cmV0dXJuIHRoaXM7Ci0gICAgICB9LAotCi0gICAgICAvKioKLSAgICAgICAgRmlyZXMgYW4gZXZl
bnQgb24gdGhlIGN1cnJlbnQgbGlzdCBvZiByZXNvbHZlZC9yZXNvbHZpbmcKLSAgICAgICAgaGFu
ZGxlcnMgd2l0aGluIHRoaXMgdHJhbnNpdGlvbi4gVXNlZnVsIGZvciBmaXJpbmcgZXZlbnRzCi0g
ICAgICAgIG9uIHJvdXRlIGhpZXJhcmNoaWVzIHRoYXQgaGF2ZW4ndCBmdWxseSBiZWVuIGVudGVy
ZWQgeWV0LgotCi0gICAgICAgIEBwYXJhbSB7Qm9vbGVhbn0gaWdub3JlRmFpbHVyZSB0aGUgbmFt
ZSBvZiB0aGUgZXZlbnQgdG8gZmlyZQotICAgICAgICBAcGFyYW0ge1N0cmluZ30gbmFtZSB0aGUg
bmFtZSBvZiB0aGUgZXZlbnQgdG8gZmlyZQotICAgICAgICovCi0gICAgICB0cmlnZ2VyOiBmdW5j
dGlvbihpZ25vcmVGYWlsdXJlKSB7Ci0gICAgICAgIHZhciBhcmdzID0gc2xpY2UuY2FsbChhcmd1
bWVudHMpOwotICAgICAgICBpZiAodHlwZW9mIGlnbm9yZUZhaWx1cmUgPT09ICdib29sZWFuJykg
ewotICAgICAgICAgIGFyZ3Muc2hpZnQoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAv
LyBUaHJvdyBlcnJvcnMgb24gdW5oYW5kbGVkIHRyaWdnZXIgZXZlbnRzIGJ5IGRlZmF1bHQKLSAg
ICAgICAgICBpZ25vcmVGYWlsdXJlID0gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgdHJpZ2dl
cih0aGlzLnJvdXRlciwgdGhpcy5oYW5kbGVySW5mb3Muc2xpY2UoMCwgdGhpcy5yZXNvbHZlSW5k
ZXggKyAxKSwgaWdub3JlRmFpbHVyZSwgYXJncyk7Ci0gICAgICB9LAotCi0gICAgICB0b1N0cmlu
ZzogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHJldHVybiAiVHJhbnNpdGlvbiAoc2VxdWVuY2UgIiAr
IHRoaXMuc2VxdWVuY2UgKyAiKSI7Ci0gICAgICB9Ci0gICAgfTsKLQotICAgIGZ1bmN0aW9uIFJv
dXRlcigpIHsKLSAgICAgIHRoaXMucmVjb2duaXplciA9IG5ldyBSb3V0ZVJlY29nbml6ZXIoKTsK
LSAgICB9Ci0KLSAgICAvLyBUT0RPOiBzZXBhcmF0ZSBpbnRvIG1vZHVsZT8KLSAgICBSb3V0ZXIu
VHJhbnNpdGlvbiA9IFRyYW5zaXRpb247Ci0KLSAgICBfX2V4cG9ydHNfX1siZGVmYXVsdCJdID0g
Um91dGVyOwotCi0KLSAgICAvKioKLSAgICAgIFByb21pc2UgcmVqZWN0IHJlYXNvbnMgcGFzc2Vk
IHRvIHByb21pc2UgcmVqZWN0aW9uCi0gICAgICBoYW5kbGVycyBmb3IgZmFpbGVkIHRyYW5zaXRp
b25zLgotICAgICAqLwotICAgIFJvdXRlci5VbnJlY29nbml6ZWRVUkxFcnJvciA9IGZ1bmN0aW9u
KG1lc3NhZ2UpIHsKLSAgICAgIHRoaXMubWVzc2FnZSA9IChtZXNzYWdlIHx8ICJVbnJlY29nbml6
ZWRVUkxFcnJvciIpOwotICAgICAgdGhpcy5uYW1lID0gIlVucmVjb2duaXplZFVSTEVycm9yIjsK
LSAgICB9OwotCi0gICAgUm91dGVyLlRyYW5zaXRpb25BYm9ydGVkID0gZnVuY3Rpb24obWVzc2Fn
ZSkgewotICAgICAgdGhpcy5tZXNzYWdlID0gKG1lc3NhZ2UgfHwgIlRyYW5zaXRpb25BYm9ydGVk
Iik7Ci0gICAgICB0aGlzLm5hbWUgPSAiVHJhbnNpdGlvbkFib3J0ZWQiOwotICAgIH07Ci0KLSAg
ICBmdW5jdGlvbiBlcnJvclRyYW5zaXRpb24ocm91dGVyLCByZWFzb24pIHsKLSAgICAgIHJldHVy
biBuZXcgVHJhbnNpdGlvbihyb3V0ZXIsIFJTVlAucmVqZWN0KHJlYXNvbikpOwotICAgIH0KLQot
Ci0gICAgUm91dGVyLnByb3RvdHlwZSA9IHsKLSAgICAgIC8qKgotICAgICAgICBUaGUgbWFpbiBl
bnRyeSBwb2ludCBpbnRvIHRoZSByb3V0ZXIuIFRoZSBBUEkgaXMgZXNzZW50aWFsbHkKLSAgICAg
ICAgdGhlIHNhbWUgYXMgdGhlIGBtYXBgIG1ldGhvZCBpbiBgcm91dGUtcmVjb2duaXplcmAuCi0K
LSAgICAgICAgVGhpcyBtZXRob2QgZXh0cmFjdHMgdGhlIFN0cmluZyBoYW5kbGVyIGF0IHRoZSBs
YXN0IGAudG8oKWAKLSAgICAgICAgY2FsbCBhbmQgdXNlcyBpdCBhcyB0aGUgbmFtZSBvZiB0aGUg
d2hvbGUgcm91dGUuCi0KLSAgICAgICAgQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2sKLSAgICAg
ICovCi0gICAgICBtYXA6IGZ1bmN0aW9uKGNhbGxiYWNrKSB7Ci0gICAgICAgIHRoaXMucmVjb2du
aXplci5kZWxlZ2F0ZSA9IHRoaXMuZGVsZWdhdGU7Ci0KLSAgICAgICAgdGhpcy5yZWNvZ25pemVy
Lm1hcChjYWxsYmFjaywgZnVuY3Rpb24ocmVjb2duaXplciwgcm91dGUpIHsKLSAgICAgICAgICB2
YXIgbGFzdEhhbmRsZXIgPSByb3V0ZVtyb3V0ZS5sZW5ndGggLSAxXS5oYW5kbGVyOwotICAgICAg
ICAgIHZhciBhcmdzID0gW3JvdXRlLCB7IGFzOiBsYXN0SGFuZGxlciB9XTsKLSAgICAgICAgICBy
ZWNvZ25pemVyLmFkZC5hcHBseShyZWNvZ25pemVyLCBhcmdzKTsKLSAgICAgICAgfSk7Ci0gICAg
ICB9LAotCi0gICAgICBoYXNSb3V0ZTogZnVuY3Rpb24ocm91dGUpIHsKLSAgICAgICAgcmV0dXJu
IHRoaXMucmVjb2duaXplci5oYXNSb3V0ZShyb3V0ZSk7Ci0gICAgICB9LAotCi0gICAgICAvKioK
LSAgICAgICAgQ2xlYXJzIHRoZSBjdXJyZW50IGFuZCB0YXJnZXQgcm91dGUgaGFuZGxlcnMgYW5k
IHRyaWdnZXJzIGV4aXQKLSAgICAgICAgb24gZWFjaCBvZiB0aGVtIHN0YXJ0aW5nIGF0IHRoZSBs
ZWFmIGFuZCB0cmF2ZXJzaW5nIHVwIHRocm91Z2gKLSAgICAgICAgaXRzIGFuY2VzdG9ycy4KLSAg
ICAgICovCi0gICAgICByZXNldDogZnVuY3Rpb24oKSB7Ci0gICAgICAgIGVhY2hIYW5kbGVyKHRo
aXMuY3VycmVudEhhbmRsZXJJbmZvcyB8fCBbXSwgZnVuY3Rpb24oaGFuZGxlckluZm8pIHsKLSAg
ICAgICAgICB2YXIgaGFuZGxlciA9IGhhbmRsZXJJbmZvLmhhbmRsZXI7Ci0gICAgICAgICAgaWYg
KGhhbmRsZXIuZXhpdCkgewotICAgICAgICAgICAgaGFuZGxlci5leGl0KCk7Ci0gICAgICAgICAg
fQotICAgICAgICB9KTsKLSAgICAgICAgdGhpcy5jdXJyZW50SGFuZGxlckluZm9zID0gbnVsbDsK
LSAgICAgICAgdGhpcy50YXJnZXRIYW5kbGVySW5mb3MgPSBudWxsOwotICAgICAgfSwKLQotICAg
ICAgYWN0aXZlVHJhbnNpdGlvbjogbnVsbCwKLQotICAgICAgLyoqCi0gICAgICAgIHZhciBoYW5k
bGVyID0gaGFuZGxlckluZm8uaGFuZGxlcjsKLSAgICAgICAgVGhlIGVudHJ5IHBvaW50IGZvciBo
YW5kbGluZyBhIGNoYW5nZSB0byB0aGUgVVJMICh1c3VhbGx5Ci0gICAgICAgIHZpYSB0aGUgYmFj
ayBhbmQgZm9yd2FyZCBidXR0b24pLgotCi0gICAgICAgIFJldHVybnMgYW4gQXJyYXkgb2YgaGFu
ZGxlcnMgYW5kIHRoZSBwYXJhbWV0ZXJzIGFzc29jaWF0ZWQKLSAgICAgICAgd2l0aCB0aG9zZSBw
YXJhbWV0ZXJzLgotCi0gICAgICAgIEBwYXJhbSB7U3RyaW5nfSB1cmwgYSBVUkwgdG8gcHJvY2Vz
cwotCi0gICAgICAgIEByZXR1cm4ge0FycmF5fSBhbiBBcnJheSBvZiBgW2hhbmRsZXIsIHBhcmFt
ZXRlcl1gIHR1cGxlcwotICAgICAgKi8KLSAgICAgIGhhbmRsZVVSTDogZnVuY3Rpb24odXJsKSB7
Ci0gICAgICAgIC8vIFBlcmZvcm0gYSBVUkwtYmFzZWQgdHJhbnNpdGlvbiwgYnV0IGRvbid0IGNo
YW5nZQotICAgICAgICAvLyB0aGUgVVJMIGFmdGVyd2FyZCwgc2luY2UgaXQgYWxyZWFkeSBoYXBw
ZW5lZC4KLSAgICAgICAgdmFyIGFyZ3MgPSBzbGljZS5jYWxsKGFyZ3VtZW50cyk7Ci0gICAgICAg
IGlmICh1cmwuY2hhckF0KDApICE9PSAnLycpIHsgYXJnc1swXSA9ICcvJyArIHVybDsgfQotICAg
ICAgICByZXR1cm4gZG9UcmFuc2l0aW9uKHRoaXMsIGFyZ3MpLm1ldGhvZChudWxsKTsKLSAgICAg
IH0sCi0KLSAgICAgIC8qKgotICAgICAgICBIb29rIHBvaW50IGZvciB1cGRhdGluZyB0aGUgVVJM
LgotCi0gICAgICAgIEBwYXJhbSB7U3RyaW5nfSB1cmwgYSBVUkwgdG8gdXBkYXRlIHRvCi0gICAg
ICAqLwotICAgICAgdXBkYXRlVVJMOiBmdW5jdGlvbigpIHsKLSAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJ1cGRhdGVVUkwgaXMgbm90IGltcGxlbWVudGVkIik7Ci0gICAgICB9LAotCi0gICAgICAv
KioKLSAgICAgICAgSG9vayBwb2ludCBmb3IgcmVwbGFjaW5nIHRoZSBjdXJyZW50IFVSTCwgaS5l
LiB3aXRoIHJlcGxhY2VTdGF0ZQotCi0gICAgICAgIEJ5IGRlZmF1bHQgdGhpcyBiZWhhdmVzIHRo
ZSBzYW1lIGFzIGB1cGRhdGVVUkxgCi0KLSAgICAgICAgQHBhcmFtIHtTdHJpbmd9IHVybCBhIFVS
TCB0byB1cGRhdGUgdG8KLSAgICAgICovCi0gICAgICByZXBsYWNlVVJMOiBmdW5jdGlvbih1cmwp
IHsKLSAgICAgICAgdGhpcy51cGRhdGVVUkwodXJsKTsKLSAgICAgIH0sCi0KLSAgICAgIC8qKgot
ICAgICAgICBUcmFuc2l0aW9uIGludG8gdGhlIHNwZWNpZmllZCBuYW1lZCByb3V0ZS4KLQotICAg
ICAgICBJZiBuZWNlc3NhcnksIHRyaWdnZXIgdGhlIGV4aXQgY2FsbGJhY2sgb24gYW55IGhhbmRs
ZXJzCi0gICAgICAgIHRoYXQgYXJlIG5vIGxvbmdlciByZXByZXNlbnRlZCBieSB0aGUgdGFyZ2V0
IHJvdXRlLgotCi0gICAgICAgIEBwYXJhbSB7U3RyaW5nfSBuYW1lIHRoZSBuYW1lIG9mIHRoZSBy
b3V0ZQotICAgICAgKi8KLSAgICAgIHRyYW5zaXRpb25UbzogZnVuY3Rpb24obmFtZSkgewotICAg
ICAgICByZXR1cm4gZG9UcmFuc2l0aW9uKHRoaXMsIGFyZ3VtZW50cyk7Ci0gICAgICB9LAotCi0g
ICAgICBpbnRlcm1lZGlhdGVUcmFuc2l0aW9uVG86IGZ1bmN0aW9uKG5hbWUpIHsKLSAgICAgICAg
ZG9UcmFuc2l0aW9uKHRoaXMsIGFyZ3VtZW50cywgdHJ1ZSk7Ci0gICAgICB9LAotCi0gICAgICAv
KioKLSAgICAgICAgSWRlbnRpY2FsIHRvIGB0cmFuc2l0aW9uVG9gIGV4Y2VwdCB0aGF0IHRoZSBj
dXJyZW50IFVSTCB3aWxsIGJlIHJlcGxhY2VkCi0gICAgICAgIGlmIHBvc3NpYmxlLgotCi0gICAg
ICAgIFRoaXMgbWV0aG9kIGlzIGludGVuZGVkIHByaW1hcmlseSBmb3IgdXNlIHdpdGggYHJlcGxh
Y2VTdGF0ZWAuCi0KLSAgICAgICAgQHBhcmFtIHtTdHJpbmd9IG5hbWUgdGhlIG5hbWUgb2YgdGhl
IHJvdXRlCi0gICAgICAqLwotICAgICAgcmVwbGFjZVdpdGg6IGZ1bmN0aW9uKG5hbWUpIHsKLSAg
ICAgICAgcmV0dXJuIGRvVHJhbnNpdGlvbih0aGlzLCBhcmd1bWVudHMpLm1ldGhvZCgncmVwbGFj
ZScpOwotICAgICAgfSwKLQotICAgICAgLyoqCi0gICAgICAgIEBwcml2YXRlCi0KLSAgICAgICAg
VGhpcyBtZXRob2QgdGFrZXMgYSBoYW5kbGVyIG5hbWUgYW5kIGEgbGlzdCBvZiBjb250ZXh0cyBh
bmQgcmV0dXJucwotICAgICAgICBhIHNlcmlhbGl6ZWQgcGFyYW1ldGVyIGhhc2ggc3VpdGFibGUg
dG8gcGFzcyB0byBgcmVjb2duaXplci5nZW5lcmF0ZSgpYC4KLQotICAgICAgICBAcGFyYW0ge1N0
cmluZ30gaGFuZGxlck5hbWUKLSAgICAgICAgQHBhcmFtIHtBcnJheVtPYmplY3RdfSBjb250ZXh0
cwotICAgICAgICBAcmV0dXJuIHtPYmplY3R9IGEgc2VyaWFsaXplZCBwYXJhbWV0ZXIgaGFzaAot
ICAgICAgKi8KLQotICAgICAgcGFyYW1zRm9ySGFuZGxlcjogZnVuY3Rpb24oaGFuZGxlck5hbWUs
IGNvbnRleHRzKSB7Ci0gICAgICAgIHZhciBwYXJ0aXRpb25lZEFyZ3MgPSBleHRyYWN0UXVlcnlQ
YXJhbXMoc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpKTsKLSAgICAgICAgcmV0dXJuIHBhcmFtc0Zv
ckhhbmRsZXIodGhpcywgaGFuZGxlck5hbWUsIHBhcnRpdGlvbmVkQXJnc1swXSwgcGFydGl0aW9u
ZWRBcmdzWzFdKTsKLSAgICAgIH0sCi0KLSAgICAgIC8qKgotICAgICAgICBUaGlzIG1ldGhvZCB0
YWtlcyBhIGhhbmRsZXIgbmFtZSBhbmQgcmV0dXJucyBhIGxpc3Qgb2YgcXVlcnkgcGFyYW1zCi0g
ICAgICAgIHRoYXQgYXJlIHZhbGlkIHRvIHBhc3MgdG8gdGhlIGhhbmRsZXIgb3IgaXRzIHBhcmVu
dHMKLQotICAgICAgICBAcGFyYW0ge1N0cmluZ30gaGFuZGxlck5hbWUKLSAgICAgICAgQHJldHVy
biB7QXJyYXlbU3RyaW5nXX0gYSBsaXN0IG9mIHF1ZXJ5IHBhcmFtZXRlcnMKLSAgICAgICovCi0g
ICAgICBxdWVyeVBhcmFtc0ZvckhhbmRsZXI6IGZ1bmN0aW9uIChoYW5kbGVyTmFtZSkgewotICAg
ICAgICByZXR1cm4gcXVlcnlQYXJhbXNGb3JIYW5kbGVyKHRoaXMsIGhhbmRsZXJOYW1lKTsKLSAg
ICAgIH0sCi0KLSAgICAgIC8qKgotICAgICAgICBUYWtlIGEgbmFtZWQgcm91dGUgYW5kIGNvbnRl
eHQgb2JqZWN0cyBhbmQgZ2VuZXJhdGUgYQotICAgICAgICBVUkwuCi0KLSAgICAgICAgQHBhcmFt
IHtTdHJpbmd9IG5hbWUgdGhlIG5hbWUgb2YgdGhlIHJvdXRlIHRvIGdlbmVyYXRlCi0gICAgICAg
ICAgYSBVUkwgZm9yCi0gICAgICAgIEBwYXJhbSB7Li4uT2JqZWN0fSBvYmplY3RzIGEgbGlzdCBv
ZiBvYmplY3RzIHRvIHNlcmlhbGl6ZQotCi0gICAgICAgIEByZXR1cm4ge1N0cmluZ30gYSBVUkwK
LSAgICAgICovCi0gICAgICBnZW5lcmF0ZTogZnVuY3Rpb24oaGFuZGxlck5hbWUpIHsKLSAgICAg
ICAgdmFyIHBhcnRpdGlvbmVkQXJncyA9IGV4dHJhY3RRdWVyeVBhcmFtcyhzbGljZS5jYWxsKGFy
Z3VtZW50cywgMSkpLAotICAgICAgICAgIHN1cHBsaWVkUGFyYW1zID0gcGFydGl0aW9uZWRBcmdz
WzBdLAotICAgICAgICAgIHF1ZXJ5UGFyYW1zID0gcGFydGl0aW9uZWRBcmdzWzFdOwotCi0gICAg
ICAgIHZhciBwYXJhbXMgPSBwYXJhbXNGb3JIYW5kbGVyKHRoaXMsIGhhbmRsZXJOYW1lLCBzdXBw
bGllZFBhcmFtcywgcXVlcnlQYXJhbXMpLAotICAgICAgICAgIHZhbGlkUXVlcnlQYXJhbXMgPSBx
dWVyeVBhcmFtc0ZvckhhbmRsZXIodGhpcywgaGFuZGxlck5hbWUpOwotCi0gICAgICAgIHZhciBt
aXNzaW5nUGFyYW1zID0gW107Ci0KLSAgICAgICAgZm9yICh2YXIga2V5IGluIHF1ZXJ5UGFyYW1z
KSB7Ci0gICAgICAgICAgaWYgKHF1ZXJ5UGFyYW1zLmhhc093blByb3BlcnR5KGtleSkgJiYgIX52
YWxpZFF1ZXJ5UGFyYW1zLmluZGV4T2Yoa2V5KSkgewotICAgICAgICAgICAgbWlzc2luZ1BhcmFt
cy5wdXNoKGtleSk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKG1pc3Np
bmdQYXJhbXMubGVuZ3RoID4gMCkgewotICAgICAgICAgIHZhciBlcnIgPSAnWW91IHN1cHBsaWVk
IHRoZSBwYXJhbXMgJzsKLSAgICAgICAgICBlcnIgKz0gbWlzc2luZ1BhcmFtcy5tYXAoZnVuY3Rp
b24ocGFyYW0pIHsKLSAgICAgICAgICAgIHJldHVybiAnIicgKyBwYXJhbSArICI9IiArIHF1ZXJ5
UGFyYW1zW3BhcmFtXSArICciJzsKLSAgICAgICAgICB9KS5qb2luKCcgYW5kICcpOwotCi0gICAg
ICAgICAgZXJyICs9ICcgd2hpY2ggYXJlIG5vdCB2YWxpZCBmb3IgdGhlICInICsgaGFuZGxlck5h
bWUgKyAnIiBoYW5kbGVyIG9yIGl0cyBwYXJlbnRzJzsKLQotICAgICAgICAgIHRocm93IG5ldyBF
cnJvcihlcnIpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHRoaXMucmVjb2duaXplci5n
ZW5lcmF0ZShoYW5kbGVyTmFtZSwgcGFyYW1zKTsKLSAgICAgIH0sCi0KLSAgICAgIGlzQWN0aXZl
OiBmdW5jdGlvbihoYW5kbGVyTmFtZSkgewotICAgICAgICB2YXIgcGFydGl0aW9uZWRBcmdzICAg
PSBleHRyYWN0UXVlcnlQYXJhbXMoc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpKSwKLSAgICAgICAg
ICAgIGNvbnRleHRzICAgICAgICAgID0gcGFydGl0aW9uZWRBcmdzWzBdLAotICAgICAgICAgICAg
cXVlcnlQYXJhbXMgICAgICAgPSBwYXJ0aXRpb25lZEFyZ3NbMV0sCi0gICAgICAgICAgICBhY3Rp
dmVRdWVyeVBhcmFtcyAgPSB7fSwKLSAgICAgICAgICAgIGVmZmVjdGl2ZVF1ZXJ5UGFyYW1zID0g
e307Ci0KLSAgICAgICAgdmFyIHRhcmdldEhhbmRsZXJJbmZvcyA9IHRoaXMudGFyZ2V0SGFuZGxl
ckluZm9zLAotICAgICAgICAgICAgZm91bmQgPSBmYWxzZSwgbmFtZXMsIG9iamVjdCwgaGFuZGxl
ckluZm8sIGhhbmRsZXJPYmo7Ci0KLSAgICAgICAgaWYgKCF0YXJnZXRIYW5kbGVySW5mb3MpIHsg
cmV0dXJuIGZhbHNlOyB9Ci0KLSAgICAgICAgdmFyIHJlY29nSGFuZGxlcnMgPSB0aGlzLnJlY29n
bml6ZXIuaGFuZGxlcnNGb3IodGFyZ2V0SGFuZGxlckluZm9zW3RhcmdldEhhbmRsZXJJbmZvcy5s
ZW5ndGggLSAxXS5uYW1lKTsKLSAgICAgICAgZm9yICh2YXIgaT10YXJnZXRIYW5kbGVySW5mb3Mu
bGVuZ3RoLTE7IGk+PTA7IGktLSkgewotICAgICAgICAgIGhhbmRsZXJJbmZvID0gdGFyZ2V0SGFu
ZGxlckluZm9zW2ldOwotICAgICAgICAgIGlmIChoYW5kbGVySW5mby5uYW1lID09PSBoYW5kbGVy
TmFtZSkgeyBmb3VuZCA9IHRydWU7IH0KLQotICAgICAgICAgIGlmIChmb3VuZCkgewotICAgICAg
ICAgICAgdmFyIHJlY29nSGFuZGxlciA9IHJlY29nSGFuZGxlcnNbaV07Ci0KLSAgICAgICAgICAg
IG1lcmdlKGFjdGl2ZVF1ZXJ5UGFyYW1zLCBoYW5kbGVySW5mby5xdWVyeVBhcmFtcyk7Ci0gICAg
ICAgICAgICBpZiAocXVlcnlQYXJhbXMgIT09IGZhbHNlKSB7Ci0gICAgICAgICAgICAgIG1lcmdl
KGVmZmVjdGl2ZVF1ZXJ5UGFyYW1zLCBoYW5kbGVySW5mby5xdWVyeVBhcmFtcyk7Ci0gICAgICAg
ICAgICAgIG1lcmdlU29tZUtleXMoZWZmZWN0aXZlUXVlcnlQYXJhbXMsIHF1ZXJ5UGFyYW1zLCBy
ZWNvZ0hhbmRsZXIucXVlcnlQYXJhbXMpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBp
ZiAoaGFuZGxlckluZm8uaXNEeW5hbWljICYmIGNvbnRleHRzLmxlbmd0aCA+IDApIHsKLSAgICAg
ICAgICAgICAgb2JqZWN0ID0gY29udGV4dHMucG9wKCk7Ci0KLSAgICAgICAgICAgICAgaWYgKGlz
UGFyYW0ob2JqZWN0KSkgewotICAgICAgICAgICAgICAgIHZhciBuYW1lID0gcmVjb2dIYW5kbGVy
Lm5hbWVzWzBdOwotICAgICAgICAgICAgICAgIGlmICghdGhpcy5jdXJyZW50UGFyYW1zIHx8ICIi
ICsgb2JqZWN0ICE9PSB0aGlzLmN1cnJlbnRQYXJhbXNbbmFtZV0pIHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgICAgICAgICAgIH0gZWxzZSBpZiAoaGFuZGxlckluZm8uY29udGV4dCAhPT0gb2JqZWN0
KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0KLQotICAgICAgICByZXR1cm4gY29u
dGV4dHMubGVuZ3RoID09PSAwICYmIGZvdW5kICYmIHF1ZXJ5UGFyYW1zRXF1YWwoYWN0aXZlUXVl
cnlQYXJhbXMsIGVmZmVjdGl2ZVF1ZXJ5UGFyYW1zKTsKLSAgICAgIH0sCi0KLSAgICAgIHRyaWdn
ZXI6IGZ1bmN0aW9uKG5hbWUpIHsKLSAgICAgICAgdmFyIGFyZ3MgPSBzbGljZS5jYWxsKGFyZ3Vt
ZW50cyk7Ci0gICAgICAgIHRyaWdnZXIodGhpcywgdGhpcy5jdXJyZW50SGFuZGxlckluZm9zLCBm
YWxzZSwgYXJncyk7Ci0gICAgICB9LAotCi0gICAgICAvKioKLSAgICAgICAgSG9vayBwb2ludCBm
b3IgbG9nZ2luZyB0cmFuc2l0aW9uIHN0YXR1cyB1cGRhdGVzLgotCi0gICAgICAgIEBwYXJhbSB7
U3RyaW5nfSBtZXNzYWdlIFRoZSBtZXNzYWdlIHRvIGxvZy4KLSAgICAgICovCi0gICAgICBsb2c6
IG51bGwKLSAgICB9OwotCi0gICAgLyoqCi0gICAgICBAcHJpdmF0ZQotCi0gICAgICBVc2VkIGlu
dGVybmFsbHkgZm9yIGJvdGggVVJMIGFuZCBuYW1lZCB0cmFuc2l0aW9uIHRvIGRldGVybWluZQot
ICAgICAgYSBzaGFyZWQgcGl2b3QgcGFyZW50IHJvdXRlIGFuZCBvdGhlciBkYXRhIG5lY2Vzc2Fy
eSB0byBwZXJmb3JtCi0gICAgICBhIHRyYW5zaXRpb24uCi0gICAgICovCi0gICAgZnVuY3Rpb24g
Z2V0TWF0Y2hQb2ludChyb3V0ZXIsIGhhbmRsZXJzLCBvYmplY3RzLCBpbnB1dFBhcmFtcywgcXVl
cnlQYXJhbXMpIHsKLQotICAgICAgdmFyIG1hdGNoUG9pbnQgPSBoYW5kbGVycy5sZW5ndGgsCi0g
ICAgICAgICAgcHJvdmlkZWRNb2RlbHMgPSB7fSwgaSwKLSAgICAgICAgICBjdXJyZW50SGFuZGxl
ckluZm9zID0gcm91dGVyLmN1cnJlbnRIYW5kbGVySW5mb3MgfHwgW10sCi0gICAgICAgICAgcGFy
YW1zID0ge30sCi0gICAgICAgICAgb2xkUGFyYW1zID0gcm91dGVyLmN1cnJlbnRQYXJhbXMgfHwg
e30sCi0gICAgICAgICAgYWN0aXZlVHJhbnNpdGlvbiA9IHJvdXRlci5hY3RpdmVUcmFuc2l0aW9u
LAotICAgICAgICAgIGhhbmRsZXJQYXJhbXMgPSB7fSwKLSAgICAgICAgICBvYmo7Ci0KLSAgICAg
IG9iamVjdHMgPSBzbGljZS5jYWxsKG9iamVjdHMpOwotICAgICAgbWVyZ2UocGFyYW1zLCBpbnB1
dFBhcmFtcyk7Ci0KLSAgICAgIGZvciAoaSA9IGhhbmRsZXJzLmxlbmd0aCAtIDE7IGkgPj0gMDsg
aS0tKSB7Ci0gICAgICAgIHZhciBoYW5kbGVyT2JqID0gaGFuZGxlcnNbaV0sCi0gICAgICAgICAg
ICBoYW5kbGVyTmFtZSA9IGhhbmRsZXJPYmouaGFuZGxlciwKLSAgICAgICAgICAgIG9sZEhhbmRs
ZXJJbmZvID0gY3VycmVudEhhbmRsZXJJbmZvc1tpXSwKLSAgICAgICAgICAgIGhhc0NoYW5nZWQg
PSBmYWxzZTsKLQotICAgICAgICAvLyBDaGVjayBpZiBoYW5kbGVyIG5hbWVzIGhhdmUgY2hhbmdl
ZC4KLSAgICAgICAgaWYgKCFvbGRIYW5kbGVySW5mbyB8fCBvbGRIYW5kbGVySW5mby5uYW1lICE9
PSBoYW5kbGVyT2JqLmhhbmRsZXIpIHsgaGFzQ2hhbmdlZCA9IHRydWU7IH0KLQotICAgICAgICBp
ZiAoaGFuZGxlck9iai5pc0R5bmFtaWMpIHsKLSAgICAgICAgICAvLyBVUkwgdHJhbnNpdGlvbi4K
LQotICAgICAgICAgIGlmIChvYmogPSBnZXRNYXRjaFBvaW50T2JqZWN0KG9iamVjdHMsIGhhbmRs
ZXJOYW1lLCBhY3RpdmVUcmFuc2l0aW9uLCB0cnVlLCBwYXJhbXMpKSB7Ci0gICAgICAgICAgICBo
YXNDaGFuZ2VkID0gdHJ1ZTsKLSAgICAgICAgICAgIHByb3ZpZGVkTW9kZWxzW2hhbmRsZXJOYW1l
XSA9IG9iajsKLSAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaGFuZGxlclBhcmFtc1to
YW5kbGVyTmFtZV0gPSB7fTsKLSAgICAgICAgICAgIGZvciAodmFyIHByb3AgaW4gaGFuZGxlck9i
ai5wYXJhbXMpIHsKLSAgICAgICAgICAgICAgaWYgKCFoYW5kbGVyT2JqLnBhcmFtcy5oYXNPd25Q
cm9wZXJ0eShwcm9wKSkgeyBjb250aW51ZTsgfQotICAgICAgICAgICAgICB2YXIgbmV3UGFyYW0g
PSBoYW5kbGVyT2JqLnBhcmFtc1twcm9wXTsKLSAgICAgICAgICAgICAgaWYgKG9sZFBhcmFtc1tw
cm9wXSAhPT0gbmV3UGFyYW0pIHsgaGFzQ2hhbmdlZCA9IHRydWU7IH0KLSAgICAgICAgICAgICAg
aGFuZGxlclBhcmFtc1toYW5kbGVyTmFtZV1bcHJvcF0gPSBwYXJhbXNbcHJvcF0gPSBuZXdQYXJh
bTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAoaGFuZGxl
ck9iai5oYXNPd25Qcm9wZXJ0eSgnbmFtZXMnKSkgewotICAgICAgICAgIC8vIE5hbWVkIHRyYW5z
aXRpb24uCi0KLSAgICAgICAgICBpZiAob2JqZWN0cy5sZW5ndGgpIHsgaGFzQ2hhbmdlZCA9IHRy
dWU7IH0KLQotICAgICAgICAgIGlmIChvYmogPSBnZXRNYXRjaFBvaW50T2JqZWN0KG9iamVjdHMs
IGhhbmRsZXJOYW1lLCBhY3RpdmVUcmFuc2l0aW9uLCBoYW5kbGVyT2JqLm5hbWVzWzBdLCBwYXJh
bXMpKSB7Ci0gICAgICAgICAgICBwcm92aWRlZE1vZGVsc1toYW5kbGVyTmFtZV0gPSBvYmo7Ci0g
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHZhciBuYW1lcyA9IGhhbmRsZXJPYmoubmFt
ZXM7Ci0gICAgICAgICAgICBoYW5kbGVyUGFyYW1zW2hhbmRsZXJOYW1lXSA9IHt9OwotICAgICAg
ICAgICAgZm9yICh2YXIgaiA9IDAsIGxlbiA9IG5hbWVzLmxlbmd0aDsgaiA8IGxlbjsgKytqKSB7
Ci0gICAgICAgICAgICAgIHZhciBuYW1lID0gbmFtZXNbal07Ci0gICAgICAgICAgICAgIGhhbmRs
ZXJQYXJhbXNbaGFuZGxlck5hbWVdW25hbWVdID0gcGFyYW1zW25hbWVdID0gcGFyYW1zW25hbWVd
IHx8IG9sZFBhcmFtc1tuYW1lXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAg
IH0KLQotICAgICAgICAvLyBJZiB0aGVyZSBpcyBhbiBvbGQgaGFuZGxlciwgc2VlIGlmIHF1ZXJ5
IHBhcmFtcyBhcmUgdGhlIHNhbWUuIElmIHRoZXJlIGlzbid0IGFuIG9sZCBoYW5kbGVyLAotICAg
ICAgICAvLyBoYXNDaGFuZ2VkIHdpbGwgYWxyZWFkeSBiZSB0cnVlIGhlcmUKLSAgICAgICAgaWYo
b2xkSGFuZGxlckluZm8gJiYgIXF1ZXJ5UGFyYW1zRXF1YWwob2xkSGFuZGxlckluZm8ucXVlcnlQ
YXJhbXMsIGhhbmRsZXJPYmoucXVlcnlQYXJhbXMpKSB7Ci0gICAgICAgICAgICBoYXNDaGFuZ2Vk
ID0gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChoYXNDaGFuZ2VkKSB7IG1hdGNoUG9p
bnQgPSBpOyB9Ci0gICAgICB9Ci0KLSAgICAgIGlmIChvYmplY3RzLmxlbmd0aCA+IDApIHsKLSAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJNb3JlIGNvbnRleHQgb2JqZWN0cyB3ZXJlIHBhc3NlZCB0
aGFuIHRoZXJlIGFyZSBkeW5hbWljIHNlZ21lbnRzIGZvciB0aGUgcm91dGU6ICIgKyBoYW5kbGVy
c1toYW5kbGVycy5sZW5ndGggLSAxXS5oYW5kbGVyKTsKLSAgICAgIH0KLQotICAgICAgdmFyIHBp
dm90SGFuZGxlckluZm8gPSBjdXJyZW50SGFuZGxlckluZm9zW21hdGNoUG9pbnQgLSAxXSwKLSAg
ICAgICAgICBwaXZvdEhhbmRsZXIgPSBwaXZvdEhhbmRsZXJJbmZvICYmIHBpdm90SGFuZGxlcklu
Zm8uaGFuZGxlcjsKLQotICAgICAgcmV0dXJuIHsgbWF0Y2hQb2ludDogbWF0Y2hQb2ludCwgcHJv
dmlkZWRNb2RlbHM6IHByb3ZpZGVkTW9kZWxzLCBwYXJhbXM6IHBhcmFtcywgaGFuZGxlclBhcmFt
czogaGFuZGxlclBhcmFtcywgcGl2b3RIYW5kbGVyOiBwaXZvdEhhbmRsZXIgfTsKLSAgICB9Ci0K
LSAgICBmdW5jdGlvbiBnZXRNYXRjaFBvaW50T2JqZWN0KG9iamVjdHMsIGhhbmRsZXJOYW1lLCBh
Y3RpdmVUcmFuc2l0aW9uLCBwYXJhbU5hbWUsIHBhcmFtcykgewotCi0gICAgICBpZiAob2JqZWN0
cy5sZW5ndGggJiYgcGFyYW1OYW1lKSB7Ci0KLSAgICAgICAgdmFyIG9iamVjdCA9IG9iamVjdHMu
cG9wKCk7Ci0KLSAgICAgICAgLy8gSWYgcHJvdmlkZWQgb2JqZWN0IGlzIHN0cmluZyBvciBudW1i
ZXIsIHRyZWF0IGFzIHBhcmFtLgotICAgICAgICBpZiAoaXNQYXJhbShvYmplY3QpKSB7Ci0gICAg
ICAgICAgcGFyYW1zW3BhcmFtTmFtZV0gPSBvYmplY3QudG9TdHJpbmcoKTsKLSAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICByZXR1cm4gb2JqZWN0OwotICAgICAgICB9Ci0gICAgICB9IGVsc2Ug
aWYgKGFjdGl2ZVRyYW5zaXRpb24pIHsKLSAgICAgICAgLy8gVXNlIG1vZGVsIGZyb20gcHJldmlv
dXMgdHJhbnNpdGlvbiBhdHRlbXB0LCBwcmVmZXJhYmx5IHRoZSByZXNvbHZlZCBvbmUuCi0gICAg
ICAgIHJldHVybiBhY3RpdmVUcmFuc2l0aW9uLnJlc29sdmVkTW9kZWxzW2hhbmRsZXJOYW1lXSB8
fAotICAgICAgICAgICAgICAgKHBhcmFtTmFtZSAmJiBhY3RpdmVUcmFuc2l0aW9uLnByb3ZpZGVk
TW9kZWxzW2hhbmRsZXJOYW1lXSk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gaXNQ
YXJhbShvYmplY3QpIHsKLSAgICAgIHJldHVybiAodHlwZW9mIG9iamVjdCA9PT0gInN0cmluZyIg
fHwgb2JqZWN0IGluc3RhbmNlb2YgU3RyaW5nIHx8IHR5cGVvZiBvYmplY3QgPT09ICJudW1iZXIi
IHx8IG9iamVjdCBpbnN0YW5jZW9mIE51bWJlcik7Ci0gICAgfQotCi0KLQotICAgIC8qKgotICAg
ICAgQHByaXZhdGUKLQotICAgICAgVGhpcyBtZXRob2QgdGFrZXMgYSBoYW5kbGVyIG5hbWUgYW5k
IHJldHVybnMgYSBsaXN0IG9mIHF1ZXJ5IHBhcmFtcwotICAgICAgdGhhdCBhcmUgdmFsaWQgdG8g
cGFzcyB0byB0aGUgaGFuZGxlciBvciBpdHMgcGFyZW50cwotCi0gICAgICBAcGFyYW0ge1JvdXRl
cn0gcm91dGVyCi0gICAgICBAcGFyYW0ge1N0cmluZ30gaGFuZGxlck5hbWUKLSAgICAgIEByZXR1
cm4ge0FycmF5W1N0cmluZ119IGEgbGlzdCBvZiBxdWVyeSBwYXJhbWV0ZXJzCi0gICAgKi8KLSAg
ICBmdW5jdGlvbiBxdWVyeVBhcmFtc0ZvckhhbmRsZXIocm91dGVyLCBoYW5kbGVyTmFtZSkgewot
ICAgICAgdmFyIGhhbmRsZXJzID0gcm91dGVyLnJlY29nbml6ZXIuaGFuZGxlcnNGb3IoaGFuZGxl
ck5hbWUpLAotICAgICAgICBxdWVyeVBhcmFtcyA9IFtdOwotCi0gICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGhhbmRsZXJzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgIHF1ZXJ5UGFyYW1zLnB1c2gu
YXBwbHkocXVlcnlQYXJhbXMsIGhhbmRsZXJzW2ldLnF1ZXJ5UGFyYW1zIHx8IFtdKTsKLSAgICAg
IH0KLQotICAgICAgcmV0dXJuIHF1ZXJ5UGFyYW1zOwotICAgIH0KLSAgICAvKioKLSAgICAgIEBw
cml2YXRlCi0KLSAgICAgIFRoaXMgbWV0aG9kIHRha2VzIGEgaGFuZGxlciBuYW1lIGFuZCBhIGxp
c3Qgb2YgY29udGV4dHMgYW5kIHJldHVybnMKLSAgICAgIGEgc2VyaWFsaXplZCBwYXJhbWV0ZXIg
aGFzaCBzdWl0YWJsZSB0byBwYXNzIHRvIGByZWNvZ25pemVyLmdlbmVyYXRlKClgLgotCi0gICAg
ICBAcGFyYW0ge1JvdXRlcn0gcm91dGVyCi0gICAgICBAcGFyYW0ge1N0cmluZ30gaGFuZGxlck5h
bWUKLSAgICAgIEBwYXJhbSB7QXJyYXlbT2JqZWN0XX0gb2JqZWN0cwotICAgICAgQHJldHVybiB7
T2JqZWN0fSBhIHNlcmlhbGl6ZWQgcGFyYW1ldGVyIGhhc2gKLSAgICAqLwotICAgIGZ1bmN0aW9u
IHBhcmFtc0ZvckhhbmRsZXIocm91dGVyLCBoYW5kbGVyTmFtZSwgb2JqZWN0cywgcXVlcnlQYXJh
bXMpIHsKLQotICAgICAgdmFyIGhhbmRsZXJzID0gcm91dGVyLnJlY29nbml6ZXIuaGFuZGxlcnNG
b3IoaGFuZGxlck5hbWUpLAotICAgICAgICAgIHBhcmFtcyA9IHt9LAotICAgICAgICAgIGhhbmRs
ZXJJbmZvcyA9IGdlbmVyYXRlSGFuZGxlckluZm9zV2l0aFF1ZXJ5UGFyYW1zKHJvdXRlciwgaGFu
ZGxlcnMsIHF1ZXJ5UGFyYW1zKSwKLSAgICAgICAgICBtYXRjaFBvaW50ID0gZ2V0TWF0Y2hQb2lu
dChyb3V0ZXIsIGhhbmRsZXJJbmZvcywgb2JqZWN0cykubWF0Y2hQb2ludCwKLSAgICAgICAgICBt
ZXJnZWRRdWVyeVBhcmFtcyA9IHt9LAotICAgICAgICAgIG9iamVjdCwgaGFuZGxlck9iaiwgaGFu
ZGxlciwgbmFtZXMsIGk7Ci0KLSAgICAgIHBhcmFtcy5xdWVyeVBhcmFtcyA9IHt9OwotCi0gICAg
ICBmb3IgKGk9MDsgaTxoYW5kbGVycy5sZW5ndGg7IGkrKykgewotICAgICAgICBoYW5kbGVyT2Jq
ID0gaGFuZGxlcnNbaV07Ci0gICAgICAgIGhhbmRsZXIgPSByb3V0ZXIuZ2V0SGFuZGxlcihoYW5k
bGVyT2JqLmhhbmRsZXIpOwotICAgICAgICBuYW1lcyA9IGhhbmRsZXJPYmoubmFtZXM7Ci0KLSAg
ICAgICAgLy8gSWYgaXQncyBhIGR5bmFtaWMgc2VnbWVudAotICAgICAgICBpZiAobmFtZXMubGVu
Z3RoKSB7Ci0gICAgICAgICAgLy8gSWYgd2UgaGF2ZSBvYmplY3RzLCB1c2UgdGhlbQotICAgICAg
ICAgIGlmIChpID49IG1hdGNoUG9pbnQpIHsKLSAgICAgICAgICAgIG9iamVjdCA9IG9iamVjdHMu
c2hpZnQoKTsKLSAgICAgICAgICAvLyBPdGhlcndpc2UgdXNlIGV4aXN0aW5nIGNvbnRleHQKLSAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgb2JqZWN0ID0gaGFuZGxlci5jb250ZXh0Owot
ICAgICAgICAgIH0KLQotICAgICAgICAgIC8vIFNlcmlhbGl6ZSB0byBnZW5lcmF0ZSBwYXJhbXMK
LSAgICAgICAgICBtZXJnZShwYXJhbXMsIHNlcmlhbGl6ZShoYW5kbGVyLCBvYmplY3QsIG5hbWVz
KSk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHF1ZXJ5UGFyYW1zICE9PSBmYWxzZSkgewotICAg
ICAgICAgIG1lcmdlU29tZUtleXMocGFyYW1zLnF1ZXJ5UGFyYW1zLCByb3V0ZXIuY3VycmVudFF1
ZXJ5UGFyYW1zLCBoYW5kbGVyT2JqLnF1ZXJ5UGFyYW1zKTsKLSAgICAgICAgICBtZXJnZVNvbWVL
ZXlzKHBhcmFtcy5xdWVyeVBhcmFtcywgcXVlcnlQYXJhbXMsIGhhbmRsZXJPYmoucXVlcnlQYXJh
bXMpOwotICAgICAgICB9Ci0gICAgICB9Ci0KLSAgICAgIGlmIChxdWVyeVBhcmFtc0VxdWFsKHBh
cmFtcy5xdWVyeVBhcmFtcywge30pKSB7IGRlbGV0ZSBwYXJhbXMucXVlcnlQYXJhbXM7IH0KLSAg
ICAgIHJldHVybiBwYXJhbXM7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gbWVyZ2UoaGFzaCwgb3Ro
ZXIpIHsKLSAgICAgIGZvciAodmFyIHByb3AgaW4gb3RoZXIpIHsKLSAgICAgICAgaWYgKG90aGVy
Lmhhc093blByb3BlcnR5KHByb3ApKSB7IGhhc2hbcHJvcF0gPSBvdGhlcltwcm9wXTsgfQotICAg
ICAgfQotICAgIH0KLQotICAgIGZ1bmN0aW9uIG1lcmdlU29tZUtleXMoaGFzaCwgb3RoZXIsIGtl
eXMpIHsKLSAgICAgIGlmICghb3RoZXIgfHwgIWtleXMpIHsgcmV0dXJuOyB9Ci0gICAgICBmb3Io
dmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykgewotICAgICAgICB2YXIga2V5ID0ga2V5
c1tpXSwgdmFsdWU7Ci0gICAgICAgIGlmKG90aGVyLmhhc093blByb3BlcnR5KGtleSkpIHsKLSAg
ICAgICAgICB2YWx1ZSA9IG90aGVyW2tleV07Ci0gICAgICAgICAgaWYodmFsdWUgPT09IG51bGwg
fHwgdmFsdWUgPT09IGZhbHNlIHx8IHR5cGVvZiB2YWx1ZSA9PT0gInVuZGVmaW5lZCIpIHsKLSAg
ICAgICAgICAgIGRlbGV0ZSBoYXNoW2tleV07Ci0gICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIGhhc2hba2V5XSA9IG90aGVyW2tleV07Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAg
ICB9Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICBAcHJpdmF0ZQotICAgICovCi0KLSAgICBmdW5j
dGlvbiBnZW5lcmF0ZUhhbmRsZXJJbmZvc1dpdGhRdWVyeVBhcmFtcyhyb3V0ZXIsIGhhbmRsZXJz
LCBxdWVyeVBhcmFtcykgewotICAgICAgdmFyIGhhbmRsZXJJbmZvcyA9IFtdOwotCi0gICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGhhbmRsZXJzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgIHZhciBo
YW5kbGVyID0gaGFuZGxlcnNbaV0sCi0gICAgICAgICAgaGFuZGxlckluZm8gPSB7IGhhbmRsZXI6
IGhhbmRsZXIuaGFuZGxlciwgbmFtZXM6IGhhbmRsZXIubmFtZXMsIGNvbnRleHQ6IGhhbmRsZXIu
Y29udGV4dCwgaXNEeW5hbWljOiBoYW5kbGVyLmlzRHluYW1pYyB9LAotICAgICAgICAgIGFjdGl2
ZVF1ZXJ5UGFyYW1zID0ge307Ci0KLSAgICAgICAgaWYgKHF1ZXJ5UGFyYW1zICE9PSBmYWxzZSkg
ewotICAgICAgICAgIG1lcmdlU29tZUtleXMoYWN0aXZlUXVlcnlQYXJhbXMsIHJvdXRlci5jdXJy
ZW50UXVlcnlQYXJhbXMsIGhhbmRsZXIucXVlcnlQYXJhbXMpOwotICAgICAgICAgIG1lcmdlU29t
ZUtleXMoYWN0aXZlUXVlcnlQYXJhbXMsIHF1ZXJ5UGFyYW1zLCBoYW5kbGVyLnF1ZXJ5UGFyYW1z
KTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChoYW5kbGVyLnF1ZXJ5UGFyYW1zICYmIGhhbmRs
ZXIucXVlcnlQYXJhbXMubGVuZ3RoID4gMCkgewotICAgICAgICAgIGhhbmRsZXJJbmZvLnF1ZXJ5
UGFyYW1zID0gYWN0aXZlUXVlcnlQYXJhbXM7Ci0gICAgICAgIH0KLQotICAgICAgICBoYW5kbGVy
SW5mb3MucHVzaChoYW5kbGVySW5mbyk7Ci0gICAgICB9Ci0KLSAgICAgIHJldHVybiBoYW5kbGVy
SW5mb3M7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICBAcHJpdmF0ZQotICAgICovCi0gICAgZnVu
Y3Rpb24gY3JlYXRlUXVlcnlQYXJhbVRyYW5zaXRpb24ocm91dGVyLCBxdWVyeVBhcmFtcywgaXNJ
bnRlcm1lZGlhdGUpIHsKLSAgICAgIHZhciBjdXJyZW50SGFuZGxlcnMgPSByb3V0ZXIuY3VycmVu
dEhhbmRsZXJJbmZvcywKLSAgICAgICAgICBjdXJyZW50SGFuZGxlciA9IGN1cnJlbnRIYW5kbGVy
c1tjdXJyZW50SGFuZGxlcnMubGVuZ3RoIC0gMV0sCi0gICAgICAgICAgbmFtZSA9IGN1cnJlbnRI
YW5kbGVyLm5hbWU7Ci0KLSAgICAgIGxvZyhyb3V0ZXIsICJBdHRlbXB0aW5nIHF1ZXJ5IHBhcmFt
IHRyYW5zaXRpb24iKTsKLQotICAgICAgcmV0dXJuIGNyZWF0ZU5hbWVkVHJhbnNpdGlvbihyb3V0
ZXIsIFtuYW1lLCBxdWVyeVBhcmFtc10sIGlzSW50ZXJtZWRpYXRlKTsKLSAgICB9Ci0KLSAgICAv
KioKLSAgICAgIEBwcml2YXRlCi0gICAgKi8KLSAgICBmdW5jdGlvbiBjcmVhdGVOYW1lZFRyYW5z
aXRpb24ocm91dGVyLCBhcmdzLCBpc0ludGVybWVkaWF0ZSkgewotICAgICAgdmFyIHBhcnRpdGlv
bmVkQXJncyAgICAgPSBleHRyYWN0UXVlcnlQYXJhbXMoYXJncyksCi0gICAgICAgIHB1cmVBcmdz
ICAgICAgICAgICAgICA9IHBhcnRpdGlvbmVkQXJnc1swXSwKLSAgICAgICAgcXVlcnlQYXJhbXMg
ICAgICAgICAgID0gcGFydGl0aW9uZWRBcmdzWzFdLAotICAgICAgICBoYW5kbGVycyAgICAgICAg
ICAgICAgPSByb3V0ZXIucmVjb2duaXplci5oYW5kbGVyc0ZvcihwdXJlQXJnc1swXSksCi0gICAg
ICAgIGhhbmRsZXJJbmZvcyAgICAgICAgICA9IGdlbmVyYXRlSGFuZGxlckluZm9zV2l0aFF1ZXJ5
UGFyYW1zKHJvdXRlciwgaGFuZGxlcnMsIHF1ZXJ5UGFyYW1zKTsKLQotCi0gICAgICBsb2cocm91
dGVyLCAiQXR0ZW1wdGluZyB0cmFuc2l0aW9uIHRvICIgKyBwdXJlQXJnc1swXSk7Ci0KLSAgICAg
IHJldHVybiBwZXJmb3JtVHJhbnNpdGlvbihyb3V0ZXIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaGFuZGxlckluZm9zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNs
aWNlLmNhbGwocHVyZUFyZ3MsIDEpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJv
dXRlci5jdXJyZW50UGFyYW1zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5
UGFyYW1zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaXNJbnRlcm1lZGlhdGUpOwotICAgIH0KLQotICAgIC8qKgot
ICAgICAgQHByaXZhdGUKLSAgICAqLwotICAgIGZ1bmN0aW9uIGNyZWF0ZVVSTFRyYW5zaXRpb24o
cm91dGVyLCB1cmwsIGlzSW50ZXJtZWRpYXRlKSB7Ci0gICAgICB2YXIgcmVzdWx0cyA9IHJvdXRl
ci5yZWNvZ25pemVyLnJlY29nbml6ZSh1cmwpLAotICAgICAgICAgIGN1cnJlbnRIYW5kbGVySW5m
b3MgPSByb3V0ZXIuY3VycmVudEhhbmRsZXJJbmZvcywKLSAgICAgICAgICBxdWVyeVBhcmFtcyA9
IHt9LAotICAgICAgICAgIGksIGxlbjsKLQotICAgICAgbG9nKHJvdXRlciwgIkF0dGVtcHRpbmcg
VVJMIHRyYW5zaXRpb24gdG8gIiArIHVybCk7Ci0KLSAgICAgIGlmIChyZXN1bHRzKSB7Ci0gICAg
ICAgIC8vIE1ha2Ugc3VyZSB0aGlzIHJvdXRlIGlzIGFjdHVhbGx5IGFjY2Vzc2libGUgYnkgVVJM
LgotICAgICAgICBmb3IgKGkgPSAwLCBsZW4gPSByZXN1bHRzLmxlbmd0aDsgaSA8IGxlbjsgKytp
KSB7Ci0KLSAgICAgICAgICBpZiAocm91dGVyLmdldEhhbmRsZXIocmVzdWx0c1tpXS5oYW5kbGVy
KS5pbmFjY2Vzc2libGVCeVVSTCkgewotICAgICAgICAgICAgcmVzdWx0cyA9IG51bGw7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgICAg
aWYgKCFyZXN1bHRzKSB7Ci0gICAgICAgIHJldHVybiBlcnJvclRyYW5zaXRpb24ocm91dGVyLCBu
ZXcgUm91dGVyLlVucmVjb2duaXplZFVSTEVycm9yKHVybCkpOwotICAgICAgfQotCi0gICAgICBm
b3IoaSA9IDAsIGxlbiA9IHJlc3VsdHMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHsKLSAgICAgICAg
bWVyZ2UocXVlcnlQYXJhbXMsIHJlc3VsdHNbaV0ucXVlcnlQYXJhbXMpOwotICAgICAgfQotCi0g
ICAgICByZXR1cm4gcGVyZm9ybVRyYW5zaXRpb24ocm91dGVyLCByZXN1bHRzLCBbXSwge30sIHF1
ZXJ5UGFyYW1zLCBudWxsLCBpc0ludGVybWVkaWF0ZSk7Ci0gICAgfQotCi0KLSAgICAvKioKLSAg
ICAgIEBwcml2YXRlCi0KLSAgICAgIFRha2VzIGFuIEFycmF5IG9mIGBIYW5kbGVySW5mb2BzLCBm
aWd1cmVzIG91dCB3aGljaCBvbmVzIGFyZQotICAgICAgZXhpdGluZywgZW50ZXJpbmcsIG9yIGNo
YW5naW5nIGNvbnRleHRzLCBhbmQgY2FsbHMgdGhlCi0gICAgICBwcm9wZXIgaGFuZGxlciBob29r
cy4KLQotICAgICAgRm9yIGV4YW1wbGUsIGNvbnNpZGVyIHRoZSBmb2xsb3dpbmcgdHJlZSBvZiBo
YW5kbGVycy4gRWFjaCBoYW5kbGVyIGlzCi0gICAgICBmb2xsb3dlZCBieSB0aGUgVVJMIHNlZ21l
bnQgaXQgaGFuZGxlcy4KLQotICAgICAgYGBgCi0gICAgICB8fmluZGV4ICgiLyIpCi0gICAgICB8
IHx+cG9zdHMgKCIvcG9zdHMiKQotICAgICAgfCB8IHwtc2hvd1Bvc3QgKCIvOmlkIikKLSAgICAg
IHwgfCB8LW5ld1Bvc3QgKCIvbmV3IikKLSAgICAgIHwgfCB8LWVkaXRQb3N0ICgiL2VkaXQiKQot
ICAgICAgfCB8fmFib3V0ICgiL2Fib3V0LzppZCIpCi0gICAgICBgYGAKLQotICAgICAgQ29uc2lk
ZXIgdGhlIGZvbGxvd2luZyB0cmFuc2l0aW9uczoKLQotICAgICAgMS4gQSBVUkwgdHJhbnNpdGlv
biB0byBgL3Bvc3RzLzFgLgotICAgICAgICAgMS4gVHJpZ2dlcnMgdGhlIGAqbW9kZWxgIGNhbGxi
YWNrcyBvbiB0aGUKLSAgICAgICAgICAgIGBpbmRleGAsIGBwb3N0c2AsIGFuZCBgc2hvd1Bvc3Rg
IGhhbmRsZXJzCi0gICAgICAgICAyLiBUcmlnZ2VycyB0aGUgYGVudGVyYCBjYWxsYmFjayBvbiB0
aGUgc2FtZQotICAgICAgICAgMy4gVHJpZ2dlcnMgdGhlIGBzZXR1cGAgY2FsbGJhY2sgb24gdGhl
IHNhbWUKLSAgICAgIDIuIEEgZGlyZWN0IHRyYW5zaXRpb24gdG8gYG5ld1Bvc3RgCi0gICAgICAg
ICAxLiBUcmlnZ2VycyB0aGUgYGV4aXRgIGNhbGxiYWNrIG9uIGBzaG93UG9zdGAKLSAgICAgICAg
IDIuIFRyaWdnZXJzIHRoZSBgZW50ZXJgIGNhbGxiYWNrIG9uIGBuZXdQb3N0YAotICAgICAgICAg
My4gVHJpZ2dlcnMgdGhlIGBzZXR1cGAgY2FsbGJhY2sgb24gYG5ld1Bvc3RgCi0gICAgICAzLiBB
IGRpcmVjdCB0cmFuc2l0aW9uIHRvIGBhYm91dGAgd2l0aCBhIHNwZWNpZmllZAotICAgICAgICAg
Y29udGV4dCBvYmplY3QKLSAgICAgICAgIDEuIFRyaWdnZXJzIHRoZSBgZXhpdGAgY2FsbGJhY2sg
b24gYG5ld1Bvc3RgCi0gICAgICAgICAgICBhbmQgYHBvc3RzYAotICAgICAgICAgMi4gVHJpZ2dl
cnMgdGhlIGBzZXJpYWxpemVgIGNhbGxiYWNrIG9uIGBhYm91dGAKLSAgICAgICAgIDMuIFRyaWdn
ZXJzIHRoZSBgZW50ZXJgIGNhbGxiYWNrIG9uIGBhYm91dGAKLSAgICAgICAgIDQuIFRyaWdnZXJz
IHRoZSBgc2V0dXBgIGNhbGxiYWNrIG9uIGBhYm91dGAKLQotICAgICAgQHBhcmFtIHtUcmFuc2l0
aW9ufSB0cmFuc2l0aW9uCi0gICAgICBAcGFyYW0ge0FycmF5W0hhbmRsZXJJbmZvXX0gaGFuZGxl
ckluZm9zCi0gICAgKi8KLSAgICBmdW5jdGlvbiBzZXR1cENvbnRleHRzKHRyYW5zaXRpb24sIGhh
bmRsZXJJbmZvcykgewotICAgICAgdmFyIHJvdXRlciA9IHRyYW5zaXRpb24ucm91dGVyLAotICAg
ICAgICAgIHBhcnRpdGlvbiA9IHBhcnRpdGlvbkhhbmRsZXJzKHJvdXRlci5jdXJyZW50SGFuZGxl
ckluZm9zIHx8IFtdLCBoYW5kbGVySW5mb3MpOwotCi0gICAgICByb3V0ZXIudGFyZ2V0SGFuZGxl
ckluZm9zID0gaGFuZGxlckluZm9zOwotCi0gICAgICBlYWNoSGFuZGxlcihwYXJ0aXRpb24uZXhp
dGVkLCBmdW5jdGlvbihoYW5kbGVySW5mbykgewotICAgICAgICB2YXIgaGFuZGxlciA9IGhhbmRs
ZXJJbmZvLmhhbmRsZXI7Ci0gICAgICAgIGRlbGV0ZSBoYW5kbGVyLmNvbnRleHQ7Ci0gICAgICAg
IGlmIChoYW5kbGVyLmV4aXQpIHsgaGFuZGxlci5leGl0KCk7IH0KLSAgICAgIH0pOwotCi0gICAg
ICB2YXIgY3VycmVudEhhbmRsZXJJbmZvcyA9IHBhcnRpdGlvbi51bmNoYW5nZWQuc2xpY2UoKTsK
LSAgICAgIHJvdXRlci5jdXJyZW50SGFuZGxlckluZm9zID0gY3VycmVudEhhbmRsZXJJbmZvczsK
LQotICAgICAgZWFjaEhhbmRsZXIocGFydGl0aW9uLnVwZGF0ZWRDb250ZXh0LCBmdW5jdGlvbiho
YW5kbGVySW5mbykgewotICAgICAgICBoYW5kbGVyRW50ZXJlZE9yVXBkYXRlZCh0cmFuc2l0aW9u
LCBjdXJyZW50SGFuZGxlckluZm9zLCBoYW5kbGVySW5mbywgZmFsc2UpOwotICAgICAgfSk7Ci0K
LSAgICAgIGVhY2hIYW5kbGVyKHBhcnRpdGlvbi5lbnRlcmVkLCBmdW5jdGlvbihoYW5kbGVySW5m
bykgewotICAgICAgICBoYW5kbGVyRW50ZXJlZE9yVXBkYXRlZCh0cmFuc2l0aW9uLCBjdXJyZW50
SGFuZGxlckluZm9zLCBoYW5kbGVySW5mbywgdHJ1ZSk7Ci0gICAgICB9KTsKLSAgICB9Ci0KLSAg
ICAvKioKLSAgICAgIEBwcml2YXRlCi0KLSAgICAgIEhlbHBlciBtZXRob2QgdXNlZCBieSBzZXR1
cENvbnRleHRzLiBIYW5kbGVzIGVycm9ycyBvciByZWRpcmVjdHMKLSAgICAgIHRoYXQgbWF5IGhh
cHBlbiBpbiBlbnRlci9zZXR1cC4KLSAgICAqLwotICAgIGZ1bmN0aW9uIGhhbmRsZXJFbnRlcmVk
T3JVcGRhdGVkKHRyYW5zaXRpb24sIGN1cnJlbnRIYW5kbGVySW5mb3MsIGhhbmRsZXJJbmZvLCBl
bnRlcikgewotICAgICAgdmFyIGhhbmRsZXIgPSBoYW5kbGVySW5mby5oYW5kbGVyLAotICAgICAg
ICAgIGNvbnRleHQgPSBoYW5kbGVySW5mby5jb250ZXh0OwotCi0gICAgICB0cnkgewotICAgICAg
ICBpZiAoZW50ZXIgJiYgaGFuZGxlci5lbnRlcikgeyBoYW5kbGVyLmVudGVyKCk7IH0KLSAgICAg
ICAgY2hlY2tBYm9ydCh0cmFuc2l0aW9uKTsKLQotICAgICAgICBzZXRDb250ZXh0KGhhbmRsZXIs
IGNvbnRleHQpOwotICAgICAgICBzZXRRdWVyeVBhcmFtcyhoYW5kbGVyLCBoYW5kbGVySW5mby5x
dWVyeVBhcmFtcyk7Ci0KLSAgICAgICAgaWYgKGhhbmRsZXIuc2V0dXApIHsgaGFuZGxlci5zZXR1
cChjb250ZXh0LCBoYW5kbGVySW5mby5xdWVyeVBhcmFtcyk7IH0KLSAgICAgICAgY2hlY2tBYm9y
dCh0cmFuc2l0aW9uKTsKLSAgICAgIH0gY2F0Y2goZSkgewotICAgICAgICBpZiAoIShlIGluc3Rh
bmNlb2YgUm91dGVyLlRyYW5zaXRpb25BYm9ydGVkKSkgewotICAgICAgICAgIC8vIFRyaWdnZXIg
dGhlIGBlcnJvcmAgZXZlbnQgc3RhcnRpbmcgZnJvbSB0aGlzIGZhaWxlZCBoYW5kbGVyLgotICAg
ICAgICAgIHRyYW5zaXRpb24udHJpZ2dlcih0cnVlLCAnZXJyb3InLCBlLCB0cmFuc2l0aW9uLCBo
YW5kbGVyKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFByb3BhZ2F0ZSB0aGUgZXJyb3Igc28g
dGhhdCB0aGUgdHJhbnNpdGlvbiBwcm9taXNlIHdpbGwgcmVqZWN0LgotICAgICAgICB0aHJvdyBl
OwotICAgICAgfQotCi0gICAgICBjdXJyZW50SGFuZGxlckluZm9zLnB1c2goaGFuZGxlckluZm8p
OwotICAgIH0KLQotCi0gICAgLyoqCi0gICAgICBAcHJpdmF0ZQotCi0gICAgICBJdGVyYXRlcyBv
dmVyIGFuIGFycmF5IG9mIGBIYW5kbGVySW5mb2BzLCBwYXNzaW5nIHRoZSBoYW5kbGVyCi0gICAg
ICBhbmQgY29udGV4dCBpbnRvIHRoZSBjYWxsYmFjay4KLQotICAgICAgQHBhcmFtIHtBcnJheVtI
YW5kbGVySW5mb119IGhhbmRsZXJJbmZvcwotICAgICAgQHBhcmFtIHtGdW5jdGlvbihPYmplY3Qs
IE9iamVjdCl9IGNhbGxiYWNrCi0gICAgKi8KLSAgICBmdW5jdGlvbiBlYWNoSGFuZGxlcihoYW5k
bGVySW5mb3MsIGNhbGxiYWNrKSB7Ci0gICAgICBmb3IgKHZhciBpPTAsIGw9aGFuZGxlckluZm9z
Lmxlbmd0aDsgaTxsOyBpKyspIHsKLSAgICAgICAgY2FsbGJhY2soaGFuZGxlckluZm9zW2ldKTsK
LSAgICAgIH0KLSAgICB9Ci0KLSAgICAvKioKLSAgICAgIEBwcml2YXRlCi0KLSAgICAgIGRldGVy
bWluZXMgaWYgdHdvIHF1ZXJ5cGFyYW0gb2JqZWN0cyBhcmUgdGhlIHNhbWUgb3Igbm90Ci0gICAg
KiovCi0gICAgZnVuY3Rpb24gcXVlcnlQYXJhbXNFcXVhbChhLCBiKSB7Ci0gICAgICBhID0gYSB8
fCB7fTsKLSAgICAgIGIgPSBiIHx8IHt9OwotICAgICAgdmFyIGNoZWNrZWRLZXlzID0gW10sIGtl
eTsKLSAgICAgIGZvcihrZXkgaW4gYSkgewotICAgICAgICBpZiAoIWEuaGFzT3duUHJvcGVydHko
a2V5KSkgeyBjb250aW51ZTsgfQotICAgICAgICBpZihiW2tleV0gIT09IGFba2V5XSkgeyByZXR1
cm4gZmFsc2U7IH0KLSAgICAgICAgY2hlY2tlZEtleXMucHVzaChrZXkpOwotICAgICAgfQotICAg
ICAgZm9yKGtleSBpbiBiKSB7Ci0gICAgICAgIGlmICghYi5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7
IGNvbnRpbnVlOyB9Ci0gICAgICAgIGlmICh+Y2hlY2tlZEtleXMuaW5kZXhPZihrZXkpKSB7IGNv
bnRpbnVlOyB9Ci0gICAgICAgIC8vIGIgaGFzIGEga2V5IG5vdCBpbiBhCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgIH0KLSAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIC8qKgot
ICAgICAgQHByaXZhdGUKLQotICAgICAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB0cmFu
c2l0aW9uaW5nIGZyb20gb25lIFVSTCB0bwotICAgICAgYW5vdGhlciB0byBkZXRlcm1pbmUgd2hp
Y2ggaGFuZGxlcnMgYXJlIG5vIGxvbmdlciBhY3RpdmUsCi0gICAgICB3aGljaCBoYW5kbGVycyBh
cmUgbmV3bHkgYWN0aXZlLCBhbmQgd2hpY2ggaGFuZGxlcnMgcmVtYWluCi0gICAgICBhY3RpdmUg
YnV0IGhhdmUgdGhlaXIgY29udGV4dCBjaGFuZ2VkLgotCi0gICAgICBUYWtlIGEgbGlzdCBvZiBv
bGQgaGFuZGxlcnMgYW5kIG5ldyBoYW5kbGVycyBhbmQgcGFydGl0aW9uCi0gICAgICB0aGVtIGlu
dG8gZm91ciBidWNrZXRzOgotCi0gICAgICAqIHVuY2hhbmdlZDogdGhlIGhhbmRsZXIgd2FzIGFj
dGl2ZSBpbiBib3RoIHRoZSBvbGQgYW5kCi0gICAgICAgIG5ldyBVUkwsIGFuZCBpdHMgY29udGV4
dCByZW1haW5zIHRoZSBzYW1lCi0gICAgICAqIHVwZGF0ZWQgY29udGV4dDogdGhlIGhhbmRsZXIg
d2FzIGFjdGl2ZSBpbiBib3RoIHRoZQotICAgICAgICBvbGQgYW5kIG5ldyBVUkwsIGJ1dCBpdHMg
Y29udGV4dCBjaGFuZ2VkLiBUaGUgaGFuZGxlcidzCi0gICAgICAgIGBzZXR1cGAgbWV0aG9kLCBp
ZiBhbnksIHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlIG5ldwotICAgICAgICBjb250ZXh0LgotICAg
ICAgKiBleGl0ZWQ6IHRoZSBoYW5kbGVyIHdhcyBhY3RpdmUgaW4gdGhlIG9sZCBVUkwsIGJ1dCBp
cwotICAgICAgICBubyBsb25nZXIgYWN0aXZlLgotICAgICAgKiBlbnRlcmVkOiB0aGUgaGFuZGxl
ciB3YXMgbm90IGFjdGl2ZSBpbiB0aGUgb2xkIFVSTCwgYnV0Ci0gICAgICAgIGlzIG5vdyBhY3Rp
dmUuCi0KLSAgICAgIFRoZSBQYXJ0aXRpb25lZEhhbmRsZXJzIHN0cnVjdHVyZSBoYXMgZm91ciBm
aWVsZHM6Ci0KLSAgICAgICogYHVwZGF0ZWRDb250ZXh0YDogYSBsaXN0IG9mIGBIYW5kbGVySW5m
b2Agb2JqZWN0cyB0aGF0Ci0gICAgICAgIHJlcHJlc2VudCBoYW5kbGVycyB0aGF0IHJlbWFpbiBh
Y3RpdmUgYnV0IGhhdmUgYSBjaGFuZ2VkCi0gICAgICAgIGNvbnRleHQKLSAgICAgICogYGVudGVy
ZWRgOiBhIGxpc3Qgb2YgYEhhbmRsZXJJbmZvYCBvYmplY3RzIHRoYXQgcmVwcmVzZW50Ci0gICAg
ICAgIGhhbmRsZXJzIHRoYXQgYXJlIG5ld2x5IGFjdGl2ZQotICAgICAgKiBgZXhpdGVkYDogYSBs
aXN0IG9mIGBIYW5kbGVySW5mb2Agb2JqZWN0cyB0aGF0IGFyZSBubwotICAgICAgICBsb25nZXIg
YWN0aXZlLgotICAgICAgKiBgdW5jaGFuZ2VkYDogYSBsaXN0IG9mIGBIYW5kZXJJbmZvYCBvYmpl
Y3RzIHRoYXQgcmVtYWluIGFjdGl2ZS4KLQotICAgICAgQHBhcmFtIHtBcnJheVtIYW5kbGVySW5m
b119IG9sZEhhbmRsZXJzIGEgbGlzdCBvZiB0aGUgaGFuZGxlcgotICAgICAgICBpbmZvcm1hdGlv
biBmb3IgdGhlIHByZXZpb3VzIFVSTCAob3IgYFtdYCBpZiB0aGlzIGlzIHRoZQotICAgICAgICBm
aXJzdCBoYW5kbGVkIHRyYW5zaXRpb24pCi0gICAgICBAcGFyYW0ge0FycmF5W0hhbmRsZXJJbmZv
XX0gbmV3SGFuZGxlcnMgYSBsaXN0IG9mIHRoZSBoYW5kbGVyCi0gICAgICAgIGluZm9ybWF0aW9u
IGZvciB0aGUgbmV3IFVSTAotCi0gICAgICBAcmV0dXJuIHtQYXJ0aXRpb259Ci0gICAgKi8KLSAg
ICBmdW5jdGlvbiBwYXJ0aXRpb25IYW5kbGVycyhvbGRIYW5kbGVycywgbmV3SGFuZGxlcnMpIHsK
LSAgICAgIHZhciBoYW5kbGVycyA9IHsKLSAgICAgICAgICAgIHVwZGF0ZWRDb250ZXh0OiBbXSwK
LSAgICAgICAgICAgIGV4aXRlZDogW10sCi0gICAgICAgICAgICBlbnRlcmVkOiBbXSwKLSAgICAg
ICAgICAgIHVuY2hhbmdlZDogW10KLSAgICAgICAgICB9OwotCi0gICAgICB2YXIgaGFuZGxlckNo
YW5nZWQsIGNvbnRleHRDaGFuZ2VkLCBxdWVyeVBhcmFtc0NoYW5nZWQsIGksIGw7Ci0KLSAgICAg
IGZvciAoaT0wLCBsPW5ld0hhbmRsZXJzLmxlbmd0aDsgaTxsOyBpKyspIHsKLSAgICAgICAgdmFy
IG9sZEhhbmRsZXIgPSBvbGRIYW5kbGVyc1tpXSwgbmV3SGFuZGxlciA9IG5ld0hhbmRsZXJzW2ld
OwotCi0gICAgICAgIGlmICghb2xkSGFuZGxlciB8fCBvbGRIYW5kbGVyLmhhbmRsZXIgIT09IG5l
d0hhbmRsZXIuaGFuZGxlcikgewotICAgICAgICAgIGhhbmRsZXJDaGFuZ2VkID0gdHJ1ZTsKLSAg
ICAgICAgfSBlbHNlIGlmICghcXVlcnlQYXJhbXNFcXVhbChvbGRIYW5kbGVyLnF1ZXJ5UGFyYW1z
LCBuZXdIYW5kbGVyLnF1ZXJ5UGFyYW1zKSkgewotICAgICAgICAgIHF1ZXJ5UGFyYW1zQ2hhbmdl
ZCA9IHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoaGFuZGxlckNoYW5nZWQpIHsKLSAg
ICAgICAgICBoYW5kbGVycy5lbnRlcmVkLnB1c2gobmV3SGFuZGxlcik7Ci0gICAgICAgICAgaWYg
KG9sZEhhbmRsZXIpIHsgaGFuZGxlcnMuZXhpdGVkLnVuc2hpZnQob2xkSGFuZGxlcik7IH0KLSAg
ICAgICAgfSBlbHNlIGlmIChjb250ZXh0Q2hhbmdlZCB8fCBvbGRIYW5kbGVyLmNvbnRleHQgIT09
IG5ld0hhbmRsZXIuY29udGV4dCB8fCBxdWVyeVBhcmFtc0NoYW5nZWQpIHsKLSAgICAgICAgICBj
b250ZXh0Q2hhbmdlZCA9IHRydWU7Ci0gICAgICAgICAgaGFuZGxlcnMudXBkYXRlZENvbnRleHQu
cHVzaChuZXdIYW5kbGVyKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICBoYW5kbGVycy51
bmNoYW5nZWQucHVzaChvbGRIYW5kbGVyKTsKLSAgICAgICAgfQotICAgICAgfQotCi0gICAgICBm
b3IgKGk9bmV3SGFuZGxlcnMubGVuZ3RoLCBsPW9sZEhhbmRsZXJzLmxlbmd0aDsgaTxsOyBpKysp
IHsKLSAgICAgICAgaGFuZGxlcnMuZXhpdGVkLnVuc2hpZnQob2xkSGFuZGxlcnNbaV0pOwotICAg
ICAgfQotCi0gICAgICByZXR1cm4gaGFuZGxlcnM7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gdHJp
Z2dlcihyb3V0ZXIsIGhhbmRsZXJJbmZvcywgaWdub3JlRmFpbHVyZSwgYXJncykgewotICAgICAg
aWYgKHJvdXRlci50cmlnZ2VyRXZlbnQpIHsKLSAgICAgICAgcm91dGVyLnRyaWdnZXJFdmVudCho
YW5kbGVySW5mb3MsIGlnbm9yZUZhaWx1cmUsIGFyZ3MpOwotICAgICAgICByZXR1cm47Ci0gICAg
ICB9Ci0KLSAgICAgIHZhciBuYW1lID0gYXJncy5zaGlmdCgpOwotCi0gICAgICBpZiAoIWhhbmRs
ZXJJbmZvcykgewotICAgICAgICBpZiAoaWdub3JlRmFpbHVyZSkgeyByZXR1cm47IH0KLSAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJDb3VsZCBub3QgdHJpZ2dlciBldmVudCAnIiArIG5hbWUgKyAi
Jy4gVGhlcmUgYXJlIG5vIGFjdGl2ZSBoYW5kbGVycyIpOwotICAgICAgfQotCi0gICAgICB2YXIg
ZXZlbnRXYXNIYW5kbGVkID0gZmFsc2U7Ci0KLSAgICAgIGZvciAodmFyIGk9aGFuZGxlckluZm9z
Lmxlbmd0aC0xOyBpPj0wOyBpLS0pIHsKLSAgICAgICAgdmFyIGhhbmRsZXJJbmZvID0gaGFuZGxl
ckluZm9zW2ldLAotICAgICAgICAgICAgaGFuZGxlciA9IGhhbmRsZXJJbmZvLmhhbmRsZXI7Ci0K
LSAgICAgICAgaWYgKGhhbmRsZXIuZXZlbnRzICYmIGhhbmRsZXIuZXZlbnRzW25hbWVdKSB7Ci0g
ICAgICAgICAgaWYgKGhhbmRsZXIuZXZlbnRzW25hbWVdLmFwcGx5KGhhbmRsZXIsIGFyZ3MpID09
PSB0cnVlKSB7Ci0gICAgICAgICAgICBldmVudFdhc0hhbmRsZWQgPSB0cnVlOwotICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgICB9Ci0KLSAgICAgIGlmICghZXZlbnRXYXNIYW5kbGVkICYmICFpZ25vcmVGYWlsdXJlKSB7
Ci0gICAgICAgIHRocm93IG5ldyBFcnJvcigiTm90aGluZyBoYW5kbGVkIHRoZSBldmVudCAnIiAr
IG5hbWUgKyAiJy4iKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBzZXRDb250ZXh0
KGhhbmRsZXIsIGNvbnRleHQpIHsKLSAgICAgIGhhbmRsZXIuY29udGV4dCA9IGNvbnRleHQ7Ci0g
ICAgICBpZiAoaGFuZGxlci5jb250ZXh0RGlkQ2hhbmdlKSB7IGhhbmRsZXIuY29udGV4dERpZENo
YW5nZSgpOyB9Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gc2V0UXVlcnlQYXJhbXMoaGFuZGxlciwg
cXVlcnlQYXJhbXMpIHsKLSAgICAgIGhhbmRsZXIucXVlcnlQYXJhbXMgPSBxdWVyeVBhcmFtczsK
LSAgICAgIGlmIChoYW5kbGVyLnF1ZXJ5UGFyYW1zRGlkQ2hhbmdlKSB7IGhhbmRsZXIucXVlcnlQ
YXJhbXNEaWRDaGFuZ2UoKTsgfQotICAgIH0KLQotCi0gICAgLyoqCi0gICAgICBAcHJpdmF0ZQot
Ci0gICAgICBFeHRyYWN0cyBxdWVyeSBwYXJhbXMgZnJvbSB0aGUgZW5kIG9mIGFuIGFycmF5Ci0g
ICAgKiovCi0KLSAgICBmdW5jdGlvbiBleHRyYWN0UXVlcnlQYXJhbXMoYXJyYXkpIHsKLSAgICAg
IHZhciBsZW4gPSAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKSwgaGVhZCwgcXVlcnlQYXJhbXM7Ci0K
LSAgICAgIGlmKGxlbiAmJiBsZW4gPiAwICYmIGFycmF5W2xlbiAtIDFdICYmIGFycmF5W2xlbiAt
IDFdLmhhc093blByb3BlcnR5KCdxdWVyeVBhcmFtcycpKSB7Ci0gICAgICAgIHF1ZXJ5UGFyYW1z
ID0gYXJyYXlbbGVuIC0gMV0ucXVlcnlQYXJhbXM7Ci0gICAgICAgIGhlYWQgPSBzbGljZS5jYWxs
KGFycmF5LCAwLCBsZW4gLSAxKTsKLSAgICAgICAgcmV0dXJuIFtoZWFkLCBxdWVyeVBhcmFtc107
Ci0gICAgICB9IGVsc2UgewotICAgICAgICByZXR1cm4gW2FycmF5LCBudWxsXTsKLSAgICAgIH0K
LSAgICB9Ci0KLSAgICBmdW5jdGlvbiBwZXJmb3JtSW50ZXJtZWRpYXRlVHJhbnNpdGlvbihyb3V0
ZXIsIHJlY29nSGFuZGxlcnMsIG1hdGNoUG9pbnRSZXN1bHRzKSB7Ci0KLSAgICAgIHZhciBoYW5k
bGVySW5mb3MgPSBnZW5lcmF0ZUhhbmRsZXJJbmZvcyhyb3V0ZXIsIHJlY29nSGFuZGxlcnMpOwot
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBoYW5kbGVySW5mb3MubGVuZ3RoOyArK2kpIHsKLSAg
ICAgICAgdmFyIGhhbmRsZXJJbmZvID0gaGFuZGxlckluZm9zW2ldOwotICAgICAgICBoYW5kbGVy
SW5mby5jb250ZXh0ID0gbWF0Y2hQb2ludFJlc3VsdHMucHJvdmlkZWRNb2RlbHNbaGFuZGxlcklu
Zm8ubmFtZV07Ci0gICAgICB9Ci0KLSAgICAgIHZhciBzdHViYmVkVHJhbnNpdGlvbiA9IHsKLSAg
ICAgICAgcm91dGVyOiByb3V0ZXIsCi0gICAgICAgIGlzQWJvcnRlZDogZmFsc2UKLSAgICAgIH07
Ci0KLSAgICAgIHNldHVwQ29udGV4dHMoc3R1YmJlZFRyYW5zaXRpb24sIGhhbmRsZXJJbmZvcyk7
Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICBAcHJpdmF0ZQotCi0gICAgICBDcmVhdGVzLCBiZWdp
bnMsIGFuZCByZXR1cm5zIGEgVHJhbnNpdGlvbi4KLSAgICAgKi8KLSAgICBmdW5jdGlvbiBwZXJm
b3JtVHJhbnNpdGlvbihyb3V0ZXIsIHJlY29nSGFuZGxlcnMsIHByb3ZpZGVkTW9kZWxzQXJyYXks
IHBhcmFtcywgcXVlcnlQYXJhbXMsIGRhdGEsIGlzSW50ZXJtZWRpYXRlKSB7Ci0KLSAgICAgIHZh
ciBtYXRjaFBvaW50UmVzdWx0cyA9IGdldE1hdGNoUG9pbnQocm91dGVyLCByZWNvZ0hhbmRsZXJz
LCBwcm92aWRlZE1vZGVsc0FycmF5LCBwYXJhbXMsIHF1ZXJ5UGFyYW1zKSwKLSAgICAgICAgICB0
YXJnZXROYW1lID0gcmVjb2dIYW5kbGVyc1tyZWNvZ0hhbmRsZXJzLmxlbmd0aCAtIDFdLmhhbmRs
ZXIsCi0gICAgICAgICAgd2FzVHJhbnNpdGlvbmluZyA9IGZhbHNlLAotICAgICAgICAgIGN1cnJl
bnRIYW5kbGVySW5mb3MgPSByb3V0ZXIuY3VycmVudEhhbmRsZXJJbmZvczsKLQotICAgICAgaWYg
KGlzSW50ZXJtZWRpYXRlKSB7Ci0gICAgICAgIHJldHVybiBwZXJmb3JtSW50ZXJtZWRpYXRlVHJh
bnNpdGlvbihyb3V0ZXIsIHJlY29nSGFuZGxlcnMsIG1hdGNoUG9pbnRSZXN1bHRzKTsKLSAgICAg
IH0KLQotICAgICAgLy8gQ2hlY2sgaWYgdGhlcmUncyBhbHJlYWR5IGEgdHJhbnNpdGlvbiB1bmRl
cndheS4KLSAgICAgIGlmIChyb3V0ZXIuYWN0aXZlVHJhbnNpdGlvbikgewotICAgICAgICBpZiAo
dHJhbnNpdGlvbnNJZGVudGljYWwocm91dGVyLmFjdGl2ZVRyYW5zaXRpb24sIHRhcmdldE5hbWUs
IHByb3ZpZGVkTW9kZWxzQXJyYXksIHF1ZXJ5UGFyYW1zKSkgewotICAgICAgICAgIHJldHVybiBy
b3V0ZXIuYWN0aXZlVHJhbnNpdGlvbjsKLSAgICAgICAgfQotICAgICAgICByb3V0ZXIuYWN0aXZl
VHJhbnNpdGlvbi5hYm9ydCgpOwotICAgICAgICB3YXNUcmFuc2l0aW9uaW5nID0gdHJ1ZTsKLSAg
ICAgIH0KLQotICAgICAgdmFyIGRlZmVycmVkID0gUlNWUC5kZWZlcigpLAotICAgICAgICAgIHRy
YW5zaXRpb24gPSBuZXcgVHJhbnNpdGlvbihyb3V0ZXIsIGRlZmVycmVkLnByb21pc2UpOwotCi0g
ICAgICB0cmFuc2l0aW9uLnRhcmdldE5hbWUgPSB0YXJnZXROYW1lOwotICAgICAgdHJhbnNpdGlv
bi5wcm92aWRlZE1vZGVscyA9IG1hdGNoUG9pbnRSZXN1bHRzLnByb3ZpZGVkTW9kZWxzOwotICAg
ICAgdHJhbnNpdGlvbi5wcm92aWRlZE1vZGVsc0FycmF5ID0gcHJvdmlkZWRNb2RlbHNBcnJheTsK
LSAgICAgIHRyYW5zaXRpb24ucGFyYW1zID0gbWF0Y2hQb2ludFJlc3VsdHMucGFyYW1zOwotICAg
ICAgdHJhbnNpdGlvbi5kYXRhID0gZGF0YSB8fCB7fTsKLSAgICAgIHRyYW5zaXRpb24ucXVlcnlQ
YXJhbXMgPSBxdWVyeVBhcmFtczsKLSAgICAgIHRyYW5zaXRpb24ucGl2b3RIYW5kbGVyID0gbWF0
Y2hQb2ludFJlc3VsdHMucGl2b3RIYW5kbGVyOwotICAgICAgcm91dGVyLmFjdGl2ZVRyYW5zaXRp
b24gPSB0cmFuc2l0aW9uOwotCi0gICAgICB2YXIgaGFuZGxlckluZm9zID0gZ2VuZXJhdGVIYW5k
bGVySW5mb3Mocm91dGVyLCByZWNvZ0hhbmRsZXJzKTsKLSAgICAgIHRyYW5zaXRpb24uaGFuZGxl
ckluZm9zID0gaGFuZGxlckluZm9zOwotCi0gICAgICAvLyBGaXJlICd3aWxsVHJhbnNpdGlvbicg
ZXZlbnQgb24gY3VycmVudCBoYW5kbGVycywgYnV0IGRvbid0IGZpcmUgaXQKLSAgICAgIC8vIGlm
IGEgdHJhbnNpdGlvbiB3YXMgYWxyZWFkeSB1bmRlcndheS4KLSAgICAgIGlmICghd2FzVHJhbnNp
dGlvbmluZykgewotICAgICAgICB0cmlnZ2VyKHJvdXRlciwgY3VycmVudEhhbmRsZXJJbmZvcywg
dHJ1ZSwgWyd3aWxsVHJhbnNpdGlvbicsIHRyYW5zaXRpb25dKTsKLSAgICAgIH0KLQotICAgICAg
bG9nKHJvdXRlciwgdHJhbnNpdGlvbi5zZXF1ZW5jZSwgIkJlZ2lubmluZyB2YWxpZGF0aW9uIGZv
ciB0cmFuc2l0aW9uIHRvICIgKyB0cmFuc2l0aW9uLnRhcmdldE5hbWUpOwotICAgICAgdmFsaWRh
dGVFbnRyeSh0cmFuc2l0aW9uLCBtYXRjaFBvaW50UmVzdWx0cy5tYXRjaFBvaW50LCBtYXRjaFBv
aW50UmVzdWx0cy5oYW5kbGVyUGFyYW1zKQotICAgICAgICAgICAgICAgICAgIC50aGVuKHRyYW5z
aXRpb25TdWNjZXNzLCB0cmFuc2l0aW9uRmFpbHVyZSk7Ci0KLSAgICAgIHJldHVybiB0cmFuc2l0
aW9uOwotCi0gICAgICBmdW5jdGlvbiB0cmFuc2l0aW9uU3VjY2VzcygpIHsKLSAgICAgICAgY2hl
Y2tBYm9ydCh0cmFuc2l0aW9uKTsKLQotICAgICAgICB0cnkgewotICAgICAgICAgIGZpbmFsaXpl
VHJhbnNpdGlvbih0cmFuc2l0aW9uLCBoYW5kbGVySW5mb3MpOwotCi0gICAgICAgICAgLy8gY3Vy
cmVudEhhbmRsZXJJbmZvcyB3YXMgdXBkYXRlZCBpbiBmaW5hbGl6ZVRyYW5zaXRpb24KLSAgICAg
ICAgICB0cmlnZ2VyKHJvdXRlciwgcm91dGVyLmN1cnJlbnRIYW5kbGVySW5mb3MsIHRydWUsIFsn
ZGlkVHJhbnNpdGlvbiddKTsKLQotICAgICAgICAgIGlmIChyb3V0ZXIuZGlkVHJhbnNpdGlvbikg
ewotICAgICAgICAgICAgcm91dGVyLmRpZFRyYW5zaXRpb24oaGFuZGxlckluZm9zKTsKLSAgICAg
ICAgICB9Ci0KLSAgICAgICAgICBsb2cocm91dGVyLCB0cmFuc2l0aW9uLnNlcXVlbmNlLCAiVFJB
TlNJVElPTiBDT01QTEVURS4iKTsKLQotICAgICAgICAgIC8vIFJlc29sdmUgd2l0aCB0aGUgZmlu
YWwgaGFuZGxlci4KLSAgICAgICAgICB0cmFuc2l0aW9uLmlzQWN0aXZlID0gZmFsc2U7Ci0gICAg
ICAgICAgZGVmZXJyZWQucmVzb2x2ZShoYW5kbGVySW5mb3NbaGFuZGxlckluZm9zLmxlbmd0aCAt
IDFdLmhhbmRsZXIpOwotICAgICAgICB9IGNhdGNoKGUpIHsKLSAgICAgICAgICBkZWZlcnJlZC5y
ZWplY3QoZSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBEb24ndCBudWxsaWZ5IGlmIGFub3Ro
ZXIgdHJhbnNpdGlvbiBpcyB1bmRlcndheSAobWVhbmluZwotICAgICAgICAvLyB0aGVyZSB3YXMg
YSB0cmFuc2l0aW9uIGluaXRpYXRlZCB3aXRoIGVudGVyL3NldHVwKS4KLSAgICAgICAgaWYgKCF0
cmFuc2l0aW9uLmlzQWJvcnRlZCkgewotICAgICAgICAgIHJvdXRlci5hY3RpdmVUcmFuc2l0aW9u
ID0gbnVsbDsKLSAgICAgICAgfQotICAgICAgfQotCi0gICAgICBmdW5jdGlvbiB0cmFuc2l0aW9u
RmFpbHVyZShyZWFzb24pIHsKLSAgICAgICAgZGVmZXJyZWQucmVqZWN0KHJlYXNvbik7Ci0gICAg
ICB9Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICBAcHJpdmF0ZQotCi0gICAgICBBY2NlcHRzIGhh
bmRsZXJzIGluIFJlY29nbml6ZXIgZm9ybWF0LCBlaXRoZXIgcmV0dXJuZWQgZnJvbQotICAgICAg
cmVjb2duaXplKCkgb3IgaGFuZGxlcnNGb3IoKSwgYW5kIHJldHVybnMgdW5pZmllZAotICAgICAg
YEhhbmRsZXJJbmZvYHMuCi0gICAgICovCi0gICAgZnVuY3Rpb24gZ2VuZXJhdGVIYW5kbGVySW5m
b3Mocm91dGVyLCByZWNvZ0hhbmRsZXJzKSB7Ci0gICAgICB2YXIgaGFuZGxlckluZm9zID0gW107
Ci0gICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gcmVjb2dIYW5kbGVycy5sZW5ndGg7IGkgPCBs
ZW47ICsraSkgewotICAgICAgICB2YXIgaGFuZGxlck9iaiA9IHJlY29nSGFuZGxlcnNbaV0sCi0g
ICAgICAgICAgICBpc0R5bmFtaWMgPSBoYW5kbGVyT2JqLmlzRHluYW1pYyB8fCAoaGFuZGxlck9i
ai5uYW1lcyAmJiBoYW5kbGVyT2JqLm5hbWVzLmxlbmd0aCk7Ci0KLSAgICAgICAgdmFyIGhhbmRs
ZXJJbmZvID0gewotICAgICAgICAgIGlzRHluYW1pYzogISFpc0R5bmFtaWMsCi0gICAgICAgICAg
bmFtZTogaGFuZGxlck9iai5oYW5kbGVyLAotICAgICAgICAgIGhhbmRsZXI6IHJvdXRlci5nZXRI
YW5kbGVyKGhhbmRsZXJPYmouaGFuZGxlcikKLSAgICAgICAgfTsKLSAgICAgICAgaWYoaGFuZGxl
ck9iai5xdWVyeVBhcmFtcykgewotICAgICAgICAgIGhhbmRsZXJJbmZvLnF1ZXJ5UGFyYW1zID0g
aGFuZGxlck9iai5xdWVyeVBhcmFtczsKLSAgICAgICAgfQotICAgICAgICBoYW5kbGVySW5mb3Mu
cHVzaChoYW5kbGVySW5mbyk7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gaGFuZGxlckluZm9zOwot
ICAgIH0KLQotICAgIC8qKgotICAgICAgQHByaXZhdGUKLSAgICAgKi8KLSAgICBmdW5jdGlvbiB0
cmFuc2l0aW9uc0lkZW50aWNhbChvbGRUcmFuc2l0aW9uLCB0YXJnZXROYW1lLCBwcm92aWRlZE1v
ZGVsc0FycmF5LCBxdWVyeVBhcmFtcykgewotCi0gICAgICBpZiAob2xkVHJhbnNpdGlvbi50YXJn
ZXROYW1lICE9PSB0YXJnZXROYW1lKSB7IHJldHVybiBmYWxzZTsgfQotCi0gICAgICB2YXIgb2xk
TW9kZWxzID0gb2xkVHJhbnNpdGlvbi5wcm92aWRlZE1vZGVsc0FycmF5OwotICAgICAgaWYgKG9s
ZE1vZGVscy5sZW5ndGggIT09IHByb3ZpZGVkTW9kZWxzQXJyYXkubGVuZ3RoKSB7IHJldHVybiBm
YWxzZTsgfQotCi0gICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gb2xkTW9kZWxzLmxlbmd0aDsg
aSA8IGxlbjsgKytpKSB7Ci0gICAgICAgIGlmIChvbGRNb2RlbHNbaV0gIT09IHByb3ZpZGVkTW9k
ZWxzQXJyYXlbaV0pIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgICB9Ci0KLSAgICAgIGlmKCFxdWVy
eVBhcmFtc0VxdWFsKG9sZFRyYW5zaXRpb24ucXVlcnlQYXJhbXMsIHF1ZXJ5UGFyYW1zKSkgewot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0KLSAgICAgIHJldHVybiB0cnVlOwotICAg
IH0KLQotICAgIC8qKgotICAgICAgQHByaXZhdGUKLQotICAgICAgVXBkYXRlcyB0aGUgVVJMIChp
ZiBuZWNlc3NhcnkpIGFuZCBjYWxscyBgc2V0dXBDb250ZXh0c2AKLSAgICAgIHRvIHVwZGF0ZSB0
aGUgcm91dGVyJ3MgYXJyYXkgb2YgYGN1cnJlbnRIYW5kbGVySW5mb3NgLgotICAgICAqLwotICAg
IGZ1bmN0aW9uIGZpbmFsaXplVHJhbnNpdGlvbih0cmFuc2l0aW9uLCBoYW5kbGVySW5mb3MpIHsK
LQotICAgICAgbG9nKHRyYW5zaXRpb24ucm91dGVyLCB0cmFuc2l0aW9uLnNlcXVlbmNlLCAiVmFs
aWRhdGlvbiBzdWNjZWVkZWQsIGZpbmFsaXppbmcgdHJhbnNpdGlvbjsiKTsKLQotICAgICAgdmFy
IHJvdXRlciA9IHRyYW5zaXRpb24ucm91dGVyLAotICAgICAgICAgIHNlcSA9IHRyYW5zaXRpb24u
c2VxdWVuY2UsCi0gICAgICAgICAgaGFuZGxlck5hbWUgPSBoYW5kbGVySW5mb3NbaGFuZGxlcklu
Zm9zLmxlbmd0aCAtIDFdLm5hbWUsCi0gICAgICAgICAgdXJsTWV0aG9kID0gdHJhbnNpdGlvbi51
cmxNZXRob2QsCi0gICAgICAgICAgaTsKLQotICAgICAgLy8gQ29sbGVjdCBwYXJhbXMgZm9yIFVS
TC4KLSAgICAgIHZhciBvYmplY3RzID0gW10sIHByb3ZpZGVkTW9kZWxzID0gdHJhbnNpdGlvbi5w
cm92aWRlZE1vZGVsc0FycmF5LnNsaWNlKCk7Ci0gICAgICBmb3IgKGkgPSBoYW5kbGVySW5mb3Mu
bGVuZ3RoIC0gMTsgaT49MDsgLS1pKSB7Ci0gICAgICAgIHZhciBoYW5kbGVySW5mbyA9IGhhbmRs
ZXJJbmZvc1tpXTsKLSAgICAgICAgaWYgKGhhbmRsZXJJbmZvLmlzRHluYW1pYykgewotICAgICAg
ICAgIHZhciBwcm92aWRlZE1vZGVsID0gcHJvdmlkZWRNb2RlbHMucG9wKCk7Ci0gICAgICAgICAg
b2JqZWN0cy51bnNoaWZ0KGlzUGFyYW0ocHJvdmlkZWRNb2RlbCkgPyBwcm92aWRlZE1vZGVsLnRv
U3RyaW5nKCkgOiBoYW5kbGVySW5mby5jb250ZXh0KTsKLSAgICAgICAgfQotCi0gICAgICAgIGlm
IChoYW5kbGVySW5mby5oYW5kbGVyLmluYWNjZXNzaWJsZUJ5VVJMKSB7Ci0gICAgICAgICAgdXJs
TWV0aG9kID0gbnVsbDsKLSAgICAgICAgfQotICAgICAgfQotCi0gICAgICB2YXIgbmV3UXVlcnlQ
YXJhbXMgPSB7fTsKLSAgICAgIGZvciAoaSA9IGhhbmRsZXJJbmZvcy5sZW5ndGggLSAxOyBpPj0w
OyAtLWkpIHsKLSAgICAgICAgbWVyZ2UobmV3UXVlcnlQYXJhbXMsIGhhbmRsZXJJbmZvc1tpXS5x
dWVyeVBhcmFtcyk7Ci0gICAgICB9Ci0gICAgICByb3V0ZXIuY3VycmVudFF1ZXJ5UGFyYW1zID0g
bmV3UXVlcnlQYXJhbXM7Ci0KLQotICAgICAgdmFyIHBhcmFtcyA9IHBhcmFtc0ZvckhhbmRsZXIo
cm91dGVyLCBoYW5kbGVyTmFtZSwgb2JqZWN0cywgdHJhbnNpdGlvbi5xdWVyeVBhcmFtcyk7Ci0K
LSAgICAgIHJvdXRlci5jdXJyZW50UGFyYW1zID0gcGFyYW1zOwotCi0gICAgICBpZiAodXJsTWV0
aG9kKSB7Ci0gICAgICAgIHZhciB1cmwgPSByb3V0ZXIucmVjb2duaXplci5nZW5lcmF0ZShoYW5k
bGVyTmFtZSwgcGFyYW1zKTsKLQotICAgICAgICBpZiAodXJsTWV0aG9kID09PSAncmVwbGFjZScp
IHsKLSAgICAgICAgICByb3V0ZXIucmVwbGFjZVVSTCh1cmwpOwotICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgIC8vIEFzc3VtZSBldmVyeXRoaW5nIGVsc2UgaXMganVzdCBhIFVSTCB1cGRhdGUg
Zm9yIG5vdy4KLSAgICAgICAgICByb3V0ZXIudXBkYXRlVVJMKHVybCk7Ci0gICAgICAgIH0KLSAg
ICAgIH0KLQotICAgICAgc2V0dXBDb250ZXh0cyh0cmFuc2l0aW9uLCBoYW5kbGVySW5mb3MpOwot
ICAgIH0KLQotICAgIC8qKgotICAgICAgQHByaXZhdGUKLQotICAgICAgSW50ZXJuYWwgZnVuY3Rp
b24gdXNlZCB0byBjb25zdHJ1Y3QgdGhlIGNoYWluIG9mIHByb21pc2VzIHVzZWQKLSAgICAgIHRv
IHZhbGlkYXRlIGEgdHJhbnNpdGlvbi4gV3JhcHMgY2FsbHMgdG8gYGJlZm9yZU1vZGVsYCwgYG1v
ZGVsYCwKLSAgICAgIGFuZCBgYWZ0ZXJNb2RlbGAgaW4gcHJvbWlzZXMsIGFuZCBjaGVja3MgZm9y
IHJlZGlyZWN0cy9hYm9ydHMKLSAgICAgIGJldHdlZW4gZWFjaC4KLSAgICAgKi8KLSAgICBmdW5j
dGlvbiB2YWxpZGF0ZUVudHJ5KHRyYW5zaXRpb24sIG1hdGNoUG9pbnQsIGhhbmRsZXJQYXJhbXMp
IHsKLQotICAgICAgdmFyIGhhbmRsZXJJbmZvcyA9IHRyYW5zaXRpb24uaGFuZGxlckluZm9zLAot
ICAgICAgICAgIGluZGV4ID0gdHJhbnNpdGlvbi5yZXNvbHZlSW5kZXg7Ci0KLSAgICAgIGlmIChp
bmRleCA9PT0gaGFuZGxlckluZm9zLmxlbmd0aCkgewotICAgICAgICAvLyBObyBtb3JlIGNvbnRl
eHRzIHRvIHJlc29sdmUuCi0gICAgICAgIHJldHVybiBSU1ZQLnJlc29sdmUodHJhbnNpdGlvbi5y
ZXNvbHZlZE1vZGVscyk7Ci0gICAgICB9Ci0KLSAgICAgIHZhciByb3V0ZXIgPSB0cmFuc2l0aW9u
LnJvdXRlciwKLSAgICAgICAgICBoYW5kbGVySW5mbyA9IGhhbmRsZXJJbmZvc1tpbmRleF0sCi0g
ICAgICAgICAgaGFuZGxlciA9IGhhbmRsZXJJbmZvLmhhbmRsZXIsCi0gICAgICAgICAgaGFuZGxl
ck5hbWUgPSBoYW5kbGVySW5mby5uYW1lLAotICAgICAgICAgIHNlcSA9IHRyYW5zaXRpb24uc2Vx
dWVuY2U7Ci0KLSAgICAgIGlmIChpbmRleCA8IG1hdGNoUG9pbnQpIHsKLSAgICAgICAgbG9nKHJv
dXRlciwgc2VxLCBoYW5kbGVyTmFtZSArICI6IHVzaW5nIGNvbnRleHQgZnJvbSBhbHJlYWR5LWFj
dGl2ZSBoYW5kbGVyIik7Ci0KLSAgICAgICAgLy8gV2UncmUgYmVmb3JlIHRoZSBtYXRjaCBwb2lu
dCwgc28gZG9uJ3QgcnVuIGFueSBob29rcywKLSAgICAgICAgLy8ganVzdCB1c2UgdGhlIGFscmVh
ZHkgcmVzb2x2ZWQgY29udGV4dCBmcm9tIHRoZSBoYW5kbGVyLgotICAgICAgICB0cmFuc2l0aW9u
LnJlc29sdmVkTW9kZWxzW2hhbmRsZXJJbmZvLm5hbWVdID0KLSAgICAgICAgICB0cmFuc2l0aW9u
LnByb3ZpZGVkTW9kZWxzW2hhbmRsZXJJbmZvLm5hbWVdIHx8Ci0gICAgICAgICAgaGFuZGxlcklu
Zm8uaGFuZGxlci5jb250ZXh0OwotICAgICAgICByZXR1cm4gcHJvY2VlZCgpOwotICAgICAgfQot
Ci0gICAgICB0cmFuc2l0aW9uLnRyaWdnZXIodHJ1ZSwgJ3dpbGxSZXNvbHZlTW9kZWwnLCB0cmFu
c2l0aW9uLCBoYW5kbGVyKTsKLQotICAgICAgcmV0dXJuIFJTVlAucmVzb2x2ZSgpLnRoZW4oaGFu
ZGxlQWJvcnQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAudGhlbihiZWZvcmVNb2RlbCkK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgIC50aGVuKGhhbmRsZUFib3J0KQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLnRoZW4obW9kZWwpCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAudGhlbihoYW5kbGVBYm9ydCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIC50aGVuKGFm
dGVyTW9kZWwpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAudGhlbihoYW5kbGVBYm9ydCkK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgIC50aGVuKG51bGwsIGhhbmRsZUVycm9yKQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4ocHJvY2VlZCk7Ci0KLSAgICAgIGZ1bmN0aW9u
IGhhbmRsZUFib3J0KHJlc3VsdCkgewotICAgICAgICBpZiAodHJhbnNpdGlvbi5pc0Fib3J0ZWQp
IHsKLSAgICAgICAgICBsb2codHJhbnNpdGlvbi5yb3V0ZXIsIHRyYW5zaXRpb24uc2VxdWVuY2Us
ICJkZXRlY3RlZCBhYm9ydC4iKTsKLSAgICAgICAgICByZXR1cm4gUlNWUC5yZWplY3QobmV3IFJv
dXRlci5UcmFuc2l0aW9uQWJvcnRlZCgpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBy
ZXN1bHQ7Ci0gICAgICB9Ci0KLSAgICAgIGZ1bmN0aW9uIGhhbmRsZUVycm9yKHJlYXNvbikgewot
ICAgICAgICBpZiAocmVhc29uIGluc3RhbmNlb2YgUm91dGVyLlRyYW5zaXRpb25BYm9ydGVkIHx8
IHRyYW5zaXRpb24uaXNBYm9ydGVkKSB7Ci0gICAgICAgICAgLy8gaWYgdGhlIHRyYW5zaXRpb24g
d2FzIGFib3J0ZWQgYW5kICpubyBhZGRpdGlvbmFsKiBlcnJvciB3YXMgdGhyb3duLAotICAgICAg
ICAgIC8vIHJlamVjdCB3aXRoIHRoZSBSb3V0ZXIuVHJhbnNpdGlvbkFib3J0ZWQgaW5zdGFuY2UK
LSAgICAgICAgICByZXR1cm4gUlNWUC5yZWplY3QocmVhc29uKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIC8vIG90aGVyd2lzZSwgd2UncmUgaGVyZSBiZWNhdXNlIG9mIGEgZGlmZmVyZW50IGVycm9y
Ci0gICAgICAgIHRyYW5zaXRpb24uYWJvcnQoKTsKLQotICAgICAgICBsb2cocm91dGVyLCBzZXEs
IGhhbmRsZXJOYW1lICsgIjogaGFuZGxpbmcgZXJyb3I6ICIgKyByZWFzb24pOwotCi0gICAgICAg
IC8vIEFuIGVycm9yIHdhcyB0aHJvd24gLyBwcm9taXNlIHJlamVjdGVkLCBzbyBmaXJlIGFuCi0g
ICAgICAgIC8vIGBlcnJvcmAgZXZlbnQgZnJvbSB0aGlzIGhhbmRsZXIgaW5mbyB1cCB0byByb290
LgotICAgICAgICB0cmFuc2l0aW9uLnRyaWdnZXIodHJ1ZSwgJ2Vycm9yJywgcmVhc29uLCB0cmFu
c2l0aW9uLCBoYW5kbGVySW5mby5oYW5kbGVyKTsKLQotICAgICAgICAvLyBQcm9wYWdhdGUgdGhl
IG9yaWdpbmFsIGVycm9yLgotICAgICAgICByZXR1cm4gUlNWUC5yZWplY3QocmVhc29uKTsKLSAg
ICAgIH0KLQotICAgICAgZnVuY3Rpb24gYmVmb3JlTW9kZWwoKSB7Ci0KLSAgICAgICAgbG9nKHJv
dXRlciwgc2VxLCBoYW5kbGVyTmFtZSArICI6IGNhbGxpbmcgYmVmb3JlTW9kZWwgaG9vayIpOwot
Ci0gICAgICAgIHZhciBhcmdzOwotCi0gICAgICAgIGlmIChoYW5kbGVySW5mby5xdWVyeVBhcmFt
cykgewotICAgICAgICAgIGFyZ3MgPSBbaGFuZGxlckluZm8ucXVlcnlQYXJhbXMsIHRyYW5zaXRp
b25dOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIGFyZ3MgPSBbdHJhbnNpdGlvbl07Ci0g
ICAgICAgIH0KLQotICAgICAgICB2YXIgcCA9IGhhbmRsZXIuYmVmb3JlTW9kZWwgJiYgaGFuZGxl
ci5iZWZvcmVNb2RlbC5hcHBseShoYW5kbGVyLCBhcmdzKTsKLSAgICAgICAgcmV0dXJuIChwIGlu
c3RhbmNlb2YgVHJhbnNpdGlvbikgPyBudWxsIDogcDsKLSAgICAgIH0KLQotICAgICAgZnVuY3Rp
b24gbW9kZWwoKSB7Ci0gICAgICAgIGxvZyhyb3V0ZXIsIHNlcSwgaGFuZGxlck5hbWUgKyAiOiBy
ZXNvbHZpbmcgbW9kZWwiKTsKLSAgICAgICAgdmFyIHAgPSBnZXRNb2RlbChoYW5kbGVySW5mbywg
dHJhbnNpdGlvbiwgaGFuZGxlclBhcmFtc1toYW5kbGVyTmFtZV0sIGluZGV4ID49IG1hdGNoUG9p
bnQpOwotICAgICAgICByZXR1cm4gKHAgaW5zdGFuY2VvZiBUcmFuc2l0aW9uKSA/IG51bGwgOiBw
OwotICAgICAgfQotCi0gICAgICBmdW5jdGlvbiBhZnRlck1vZGVsKGNvbnRleHQpIHsKLQotICAg
ICAgICBsb2cocm91dGVyLCBzZXEsIGhhbmRsZXJOYW1lICsgIjogY2FsbGluZyBhZnRlck1vZGVs
IGhvb2siKTsKLQotICAgICAgICAvLyBQYXNzIHRoZSBjb250ZXh0IGFuZCByZXNvbHZlZCBwYXJl
bnQgY29udGV4dHMgdG8gYWZ0ZXJNb2RlbCwgYnV0IHdlIGRvbid0Ci0gICAgICAgIC8vIHdhbnQg
dG8gdXNlIHRoZSB2YWx1ZSByZXR1cm5lZCBmcm9tIGBhZnRlck1vZGVsYCBpbiBhbnkgd2F5LCBi
dXQgcmF0aGVyCi0gICAgICAgIC8vIGFsd2F5cyByZXNvbHZlIHdpdGggdGhlIG9yaWdpbmFsIGBj
b250ZXh0YCBvYmplY3QuCi0KLSAgICAgICAgdHJhbnNpdGlvbi5yZXNvbHZlZE1vZGVsc1toYW5k
bGVySW5mby5uYW1lXSA9IGNvbnRleHQ7Ci0KLSAgICAgICAgdmFyIGFyZ3M7Ci0KLSAgICAgICAg
aWYgKGhhbmRsZXJJbmZvLnF1ZXJ5UGFyYW1zKSB7Ci0gICAgICAgICAgYXJncyA9IFtjb250ZXh0
LCBoYW5kbGVySW5mby5xdWVyeVBhcmFtcywgdHJhbnNpdGlvbl07Ci0gICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgYXJncyA9IFtjb250ZXh0LCB0cmFuc2l0aW9uXTsKLSAgICAgICAgfQotCi0g
ICAgICAgIHZhciBwID0gaGFuZGxlci5hZnRlck1vZGVsICYmIGhhbmRsZXIuYWZ0ZXJNb2RlbC5h
cHBseShoYW5kbGVyLCBhcmdzKTsKLSAgICAgICAgcmV0dXJuIChwIGluc3RhbmNlb2YgVHJhbnNp
dGlvbikgPyBudWxsIDogcDsKLSAgICAgIH0KLQotICAgICAgZnVuY3Rpb24gcHJvY2VlZCgpIHsK
LSAgICAgICAgbG9nKHJvdXRlciwgc2VxLCBoYW5kbGVyTmFtZSArICI6IHZhbGlkYXRpb24gc3Vj
Y2VlZGVkLCBwcm9jZWVkaW5nIik7Ci0KLSAgICAgICAgaGFuZGxlckluZm8uY29udGV4dCA9IHRy
YW5zaXRpb24ucmVzb2x2ZWRNb2RlbHNbaGFuZGxlckluZm8ubmFtZV07Ci0gICAgICAgIHRyYW5z
aXRpb24ucmVzb2x2ZUluZGV4Kys7Ci0gICAgICAgIHJldHVybiB2YWxpZGF0ZUVudHJ5KHRyYW5z
aXRpb24sIG1hdGNoUG9pbnQsIGhhbmRsZXJQYXJhbXMpOwotICAgICAgfQotICAgIH0KLQotICAg
IC8qKgotICAgICAgQHByaXZhdGUKLQotICAgICAgVGhyb3dzIGEgVHJhbnNpdGlvbkFib3J0ZWQg
aWYgdGhlIHByb3ZpZGVkIHRyYW5zaXRpb24gaGFzIGJlZW4gYWJvcnRlZC4KLSAgICAgKi8KLSAg
ICBmdW5jdGlvbiBjaGVja0Fib3J0KHRyYW5zaXRpb24pIHsKLSAgICAgIGlmICh0cmFuc2l0aW9u
LmlzQWJvcnRlZCkgewotICAgICAgICBsb2codHJhbnNpdGlvbi5yb3V0ZXIsIHRyYW5zaXRpb24u
c2VxdWVuY2UsICJkZXRlY3RlZCBhYm9ydC4iKTsKLSAgICAgICAgdGhyb3cgbmV3IFJvdXRlci5U
cmFuc2l0aW9uQWJvcnRlZCgpOwotICAgICAgfQotICAgIH0KLQotICAgIC8qKgotICAgICAgQHBy
aXZhdGUKLQotICAgICAgRW5jYXBzdWxhdGVzIHRoZSBsb2dpYyBmb3Igd2hldGhlciB0byBjYWxs
IGBtb2RlbGAgb24gYSByb3V0ZSwKLSAgICAgIG9yIHVzZSBvbmUgb2YgdGhlIG1vZGVscyBwcm92
aWRlZCB0byBgdHJhbnNpdGlvblRvYC4KLSAgICAgKi8KLSAgICBmdW5jdGlvbiBnZXRNb2RlbCho
YW5kbGVySW5mbywgdHJhbnNpdGlvbiwgaGFuZGxlclBhcmFtcywgbmVlZHNVcGRhdGUpIHsKLSAg
ICAgIHZhciBoYW5kbGVyID0gaGFuZGxlckluZm8uaGFuZGxlciwKLSAgICAgICAgICBoYW5kbGVy
TmFtZSA9IGhhbmRsZXJJbmZvLm5hbWUsIGFyZ3M7Ci0KLSAgICAgIGlmICghbmVlZHNVcGRhdGUg
JiYgaGFuZGxlci5oYXNPd25Qcm9wZXJ0eSgnY29udGV4dCcpKSB7Ci0gICAgICAgIHJldHVybiBo
YW5kbGVyLmNvbnRleHQ7Ci0gICAgICB9Ci0KLSAgICAgIGlmICh0cmFuc2l0aW9uLnByb3ZpZGVk
TW9kZWxzLmhhc093blByb3BlcnR5KGhhbmRsZXJOYW1lKSkgewotICAgICAgICB2YXIgcHJvdmlk
ZWRNb2RlbCA9IHRyYW5zaXRpb24ucHJvdmlkZWRNb2RlbHNbaGFuZGxlck5hbWVdOwotICAgICAg
ICByZXR1cm4gdHlwZW9mIHByb3ZpZGVkTW9kZWwgPT09ICdmdW5jdGlvbicgPyBwcm92aWRlZE1v
ZGVsKCkgOiBwcm92aWRlZE1vZGVsOwotICAgICAgfQotCi0gICAgICBpZiAoaGFuZGxlckluZm8u
cXVlcnlQYXJhbXMpIHsKLSAgICAgICAgYXJncyA9IFtoYW5kbGVyUGFyYW1zIHx8IHt9LCBoYW5k
bGVySW5mby5xdWVyeVBhcmFtcywgdHJhbnNpdGlvbl07Ci0gICAgICB9IGVsc2UgewotICAgICAg
ICBhcmdzID0gW2hhbmRsZXJQYXJhbXMgfHwge30sIHRyYW5zaXRpb24sIGhhbmRsZXJJbmZvLnF1
ZXJ5UGFyYW1zXTsKLSAgICAgIH0KLQotICAgICAgcmV0dXJuIGhhbmRsZXIubW9kZWwgJiYgaGFu
ZGxlci5tb2RlbC5hcHBseShoYW5kbGVyLCBhcmdzKTsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAg
IEBwcml2YXRlCi0gICAgICovCi0gICAgZnVuY3Rpb24gbG9nKHJvdXRlciwgc2VxdWVuY2UsIG1z
ZykgewotCi0gICAgICBpZiAoIXJvdXRlci5sb2cpIHsgcmV0dXJuOyB9Ci0KLSAgICAgIGlmIChh
cmd1bWVudHMubGVuZ3RoID09PSAzKSB7Ci0gICAgICAgIHJvdXRlci5sb2coIlRyYW5zaXRpb24g
IyIgKyBzZXF1ZW5jZSArICI6ICIgKyBtc2cpOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgbXNn
ID0gc2VxdWVuY2U7Ci0gICAgICAgIHJvdXRlci5sb2cobXNnKTsKLSAgICAgIH0KLSAgICB9Ci0K
LSAgICAvKioKLSAgICAgIEBwcml2YXRlCi0KLSAgICAgIEJlZ2lucyBhbmQgcmV0dXJucyBhIFRy
YW5zaXRpb24gYmFzZWQgb24gdGhlIHByb3ZpZGVkCi0gICAgICBhcmd1bWVudHMuIEFjY2VwdHMg
YXJndW1lbnRzIGluIHRoZSBmb3JtIG9mIGJvdGggVVJMCi0gICAgICB0cmFuc2l0aW9ucyBhbmQg
bmFtZWQgdHJhbnNpdGlvbnMuCi0KLSAgICAgIEBwYXJhbSB7Um91dGVyfSByb3V0ZXIKLSAgICAg
IEBwYXJhbSB7QXJyYXlbT2JqZWN0XX0gYXJncyBhcmd1bWVudHMgcGFzc2VkIHRvIHRyYW5zaXRp
b25UbywKLSAgICAgICAgcmVwbGFjZVdpdGgsIG9yIGhhbmRsZVVSTAotICAgICovCi0gICAgZnVu
Y3Rpb24gZG9UcmFuc2l0aW9uKHJvdXRlciwgYXJncywgaXNJbnRlcm1lZGlhdGUpIHsKLSAgICAg
IC8vIE5vcm1hbGl6ZSBibGFuayB0cmFuc2l0aW9ucyB0byByb290IFVSTCB0cmFuc2l0aW9ucy4K
LSAgICAgIHZhciBuYW1lID0gYXJnc1swXSB8fCAnLyc7Ci0KLSAgICAgIGlmKGFyZ3MubGVuZ3Ro
ID09PSAxICYmIGFyZ3NbMF0uaGFzT3duUHJvcGVydHkoJ3F1ZXJ5UGFyYW1zJykpIHsKLSAgICAg
ICAgcmV0dXJuIGNyZWF0ZVF1ZXJ5UGFyYW1UcmFuc2l0aW9uKHJvdXRlciwgYXJnc1swXSwgaXNJ
bnRlcm1lZGlhdGUpOwotICAgICAgfSBlbHNlIGlmIChuYW1lLmNoYXJBdCgwKSA9PT0gJy8nKSB7
Ci0gICAgICAgIHJldHVybiBjcmVhdGVVUkxUcmFuc2l0aW9uKHJvdXRlciwgbmFtZSwgaXNJbnRl
cm1lZGlhdGUpOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZU5hbWVkVHJh
bnNpdGlvbihyb3V0ZXIsIHNsaWNlLmNhbGwoYXJncyksIGlzSW50ZXJtZWRpYXRlKTsKLSAgICAg
IH0KLSAgICB9Ci0KLSAgICAvKioKLSAgICAgIEBwcml2YXRlCi0KLSAgICAgIFNlcmlhbGl6ZXMg
YSBoYW5kbGVyIHVzaW5nIGl0cyBjdXN0b20gYHNlcmlhbGl6ZWAgbWV0aG9kIG9yCi0gICAgICBi
eSBhIGRlZmF1bHQgdGhhdCBsb29rcyB1cCB0aGUgZXhwZWN0ZWQgcHJvcGVydHkgbmFtZSBmcm9t
Ci0gICAgICB0aGUgZHluYW1pYyBzZWdtZW50LgotCi0gICAgICBAcGFyYW0ge09iamVjdH0gaGFu
ZGxlciBhIHJvdXRlciBoYW5kbGVyCi0gICAgICBAcGFyYW0ge09iamVjdH0gbW9kZWwgdGhlIG1v
ZGVsIHRvIGJlIHNlcmlhbGl6ZWQgZm9yIHRoaXMgaGFuZGxlcgotICAgICAgQHBhcmFtIHtBcnJh
eVtPYmplY3RdfSBuYW1lcyB0aGUgbmFtZXMgYXJyYXkgYXR0YWNoZWQgdG8gYW4KLSAgICAgICAg
aGFuZGxlciBvYmplY3QgcmV0dXJuZWQgZnJvbSByb3V0ZXIucmVjb2duaXplci5oYW5kbGVyc0Zv
cigpCi0gICAgKi8KLSAgICBmdW5jdGlvbiBzZXJpYWxpemUoaGFuZGxlciwgbW9kZWwsIG5hbWVz
KSB7Ci0KLSAgICAgIHZhciBvYmplY3QgPSB7fTsKLSAgICAgIGlmIChpc1BhcmFtKG1vZGVsKSkg
ewotICAgICAgICBvYmplY3RbbmFtZXNbMF1dID0gbW9kZWw7Ci0gICAgICAgIHJldHVybiBvYmpl
Y3Q7Ci0gICAgICB9Ci0KLSAgICAgIC8vIFVzZSBjdXN0b20gc2VyaWFsaXplIGlmIGl0IGV4aXN0
cy4KLSAgICAgIGlmIChoYW5kbGVyLnNlcmlhbGl6ZSkgewotICAgICAgICByZXR1cm4gaGFuZGxl
ci5zZXJpYWxpemUobW9kZWwsIG5hbWVzKTsKLSAgICAgIH0KLQotICAgICAgaWYgKG5hbWVzLmxl
bmd0aCAhPT0gMSkgeyByZXR1cm47IH0KLQotICAgICAgdmFyIG5hbWUgPSBuYW1lc1swXTsKLQot
ICAgICAgaWYgKC9faWQkLy50ZXN0KG5hbWUpKSB7Ci0gICAgICAgIG9iamVjdFtuYW1lXSA9IG1v
ZGVsLmlkOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgb2JqZWN0W25hbWVdID0gbW9kZWw7Ci0g
ICAgICB9Ci0gICAgICByZXR1cm4gb2JqZWN0OwotICAgIH0KLSAgfSk7Ci0KLX0pKCk7Ci0KLQot
Ci0oZnVuY3Rpb24oKSB7Ci0vKioKLUBtb2R1bGUgZW1iZXIKLUBzdWJtb2R1bGUgZW1iZXItcm91
dGluZwotKi8KLQotZnVuY3Rpb24gRFNMKG5hbWUpIHsKLSAgdGhpcy5wYXJlbnQgPSBuYW1lOwot
ICB0aGlzLm1hdGNoZXMgPSBbXTsKLX0KLQotRFNMLnByb3RvdHlwZSA9IHsKLSAgcmVzb3VyY2U6
IGZ1bmN0aW9uKG5hbWUsIG9wdGlvbnMsIGNhbGxiYWNrKSB7Ci0gICAgaWYgKGFyZ3VtZW50cy5s
ZW5ndGggPT09IDIgJiYgdHlwZW9mIG9wdGlvbnMgPT09ICdmdW5jdGlvbicpIHsKLSAgICAgIGNh
bGxiYWNrID0gb3B0aW9uczsKLSAgICAgIG9wdGlvbnMgPSB7fTsKLSAgICB9Ci0KLSAgICBpZiAo
YXJndW1lbnRzLmxlbmd0aCA9PT0gMSkgewotICAgICAgb3B0aW9ucyA9IHt9OwotICAgIH0KLQot
ICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5wYXRoICE9PSAnc3RyaW5nJykgewotICAgICAgb3B0aW9u
cy5wYXRoID0gIi8iICsgbmFtZTsKLSAgICB9Ci0KLSAgICBpZiAoY2FsbGJhY2spIHsKLSAgICAg
IHZhciBkc2wgPSBuZXcgRFNMKG5hbWUpOwotICAgICAgcm91dGUoZHNsLCAnbG9hZGluZycpOwot
ICAgICAgcm91dGUoZHNsLCAnZXJyb3InLCB7IHBhdGg6ICIvX3VudXNlZF9kdW1teV9lcnJvcl9w
YXRoX3JvdXRlXyIgKyBuYW1lICsgIi86ZXJyb3IiIH0pOwotICAgICAgY2FsbGJhY2suY2FsbChk
c2wpOwotICAgICAgdGhpcy5wdXNoKG9wdGlvbnMucGF0aCwgbmFtZSwgZHNsLmdlbmVyYXRlKCks
IG9wdGlvbnMucXVlcnlQYXJhbXMpOwotICAgIH0gZWxzZSB7Ci0gICAgICB0aGlzLnB1c2gob3B0
aW9ucy5wYXRoLCBuYW1lLCBudWxsLCBvcHRpb25zLnF1ZXJ5UGFyYW1zKTsKLSAgICB9Ci0KLQot
ICAgICAgfSwKLQotICBwdXNoOiBmdW5jdGlvbih1cmwsIG5hbWUsIGNhbGxiYWNrLCBxdWVyeVBh
cmFtcykgewotICAgIHZhciBwYXJ0cyA9IG5hbWUuc3BsaXQoJy4nKTsKLSAgICBpZiAodXJsID09
PSAiIiB8fCB1cmwgPT09ICIvIiB8fCBwYXJ0c1twYXJ0cy5sZW5ndGgtMV0gPT09ICJpbmRleCIp
IHsgdGhpcy5leHBsaWNpdEluZGV4ID0gdHJ1ZTsgfQotCi0gICAgdGhpcy5tYXRjaGVzLnB1c2go
W3VybCwgbmFtZSwgY2FsbGJhY2ssIHF1ZXJ5UGFyYW1zXSk7Ci0gIH0sCi0KLSAgcm91dGU6IGZ1
bmN0aW9uKG5hbWUsIG9wdGlvbnMpIHsKLSAgICByb3V0ZSh0aGlzLCBuYW1lLCBvcHRpb25zKTsK
LSAgICAgIH0sCi0KLSAgZ2VuZXJhdGU6IGZ1bmN0aW9uKCkgewotICAgIHZhciBkc2xNYXRjaGVz
ID0gdGhpcy5tYXRjaGVzOwotCi0gICAgaWYgKCF0aGlzLmV4cGxpY2l0SW5kZXgpIHsKLSAgICAg
IHRoaXMucm91dGUoImluZGV4IiwgeyBwYXRoOiAiLyIgfSk7Ci0gICAgfQotCi0gICAgcmV0dXJu
IGZ1bmN0aW9uKG1hdGNoKSB7Ci0gICAgICBmb3IgKHZhciBpPTAsIGw9ZHNsTWF0Y2hlcy5sZW5n
dGg7IGk8bDsgaSsrKSB7Ci0gICAgICAgIHZhciBkc2xNYXRjaCA9IGRzbE1hdGNoZXNbaV07Ci0g
ICAgICAgIHZhciBtYXRjaE9iaiA9IG1hdGNoKGRzbE1hdGNoWzBdKS50byhkc2xNYXRjaFsxXSwg
ZHNsTWF0Y2hbMl0pOwotICAgICAgICAgICAgICB9Ci0gICAgfTsKLSAgfQotfTsKLQotZnVuY3Rp
b24gcm91dGUoZHNsLCBuYW1lLCBvcHRpb25zKSB7Ci0gIEVtYmVyLmFzc2VydCgiWW91IG11c3Qg
dXNlIGB0aGlzLnJlc291cmNlYCB0byBuZXN0IiwgdHlwZW9mIG9wdGlvbnMgIT09ICdmdW5jdGlv
bicpOwotCi0gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OwotCi0gIGlmICh0eXBlb2Ygb3B0aW9u
cy5wYXRoICE9PSAnc3RyaW5nJykgewotICAgIG9wdGlvbnMucGF0aCA9ICIvIiArIG5hbWU7Ci0g
IH0KLQotICBpZiAoZHNsLnBhcmVudCAmJiBkc2wucGFyZW50ICE9PSAnYXBwbGljYXRpb24nKSB7
Ci0gICAgbmFtZSA9IGRzbC5wYXJlbnQgKyAiLiIgKyBuYW1lOwotICB9Ci0KLSAgZHNsLnB1c2go
b3B0aW9ucy5wYXRoLCBuYW1lLCBudWxsLCBvcHRpb25zLnF1ZXJ5UGFyYW1zKTsKLX0KLQotRFNM
Lm1hcCA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7Ci0gIHZhciBkc2wgPSBuZXcgRFNMKCk7Ci0gIGNh
bGxiYWNrLmNhbGwoZHNsKTsKLSAgcmV0dXJuIGRzbDsKLX07Ci0KLUVtYmVyLlJvdXRlckRTTCA9
IERTTDsKLQotfSkoKTsKLQotCi0KLShmdW5jdGlvbigpIHsKLXZhciBnZXQgPSBFbWJlci5nZXQ7
Ci0KLS8qKgotQG1vZHVsZSBlbWJlcgotQHN1Ym1vZHVsZSBlbWJlci1yb3V0aW5nCi0qLwotCi0v
KioKLQotICBGaW5kcyBhIGNvbnRyb2xsZXIgaW5zdGFuY2UuCi0KLSAgQGZvciBFbWJlcgotICBA
bWV0aG9kIGNvbnRyb2xsZXJGb3IKLSAgQHByaXZhdGUKLSovCi1FbWJlci5jb250cm9sbGVyRm9y
ID0gZnVuY3Rpb24oY29udGFpbmVyLCBjb250cm9sbGVyTmFtZSwgbG9va3VwT3B0aW9ucykgewot
ICByZXR1cm4gY29udGFpbmVyLmxvb2t1cCgnY29udHJvbGxlcjonICsgY29udHJvbGxlck5hbWUs
IGxvb2t1cE9wdGlvbnMpOwotfTsKLQotLyoqCi0gIEdlbmVyYXRlcyBhIGNvbnRyb2xsZXIgZmFj
dG9yeQotCi0gIFRoZSB0eXBlIG9mIHRoZSBnZW5lcmF0ZWQgY29udHJvbGxlciBmYWN0b3J5IGlz
IGRlcml2ZWQKLSAgZnJvbSB0aGUgY29udGV4dC4gSWYgdGhlIGNvbnRleHQgaXMgYW4gYXJyYXkg
YW4gYXJyYXkgY29udHJvbGxlcgotICBpcyBnZW5lcmF0ZWQsIGlmIGFuIG9iamVjdCwgYW4gb2Jq
ZWN0IGNvbnRyb2xsZXIgb3RoZXJ3aXNlLCBhIGJhc2ljCi0gIGNvbnRyb2xsZXIgaXMgZ2VuZXJh
dGVkLgotCi0gIFlvdSBjYW4gY3VzdG9taXplIHlvdXIgZ2VuZXJhdGVkIGNvbnRyb2xsZXJzIGJ5
IGRlZmluaW5nCi0gIGBBcHAuT2JqZWN0Q29udHJvbGxlcmAgb3IgYEFwcC5BcnJheUNvbnRyb2xs
ZXJgLgotCi0gIEBmb3IgRW1iZXIKLSAgQG1ldGhvZCBnZW5lcmF0ZUNvbnRyb2xsZXJGYWN0b3J5
Ci0gIEBwcml2YXRlCi0qLwotRW1iZXIuZ2VuZXJhdGVDb250cm9sbGVyRmFjdG9yeSA9IGZ1bmN0
aW9uKGNvbnRhaW5lciwgY29udHJvbGxlck5hbWUsIGNvbnRleHQpIHsKLSAgdmFyIEZhY3Rvcnks
IGZ1bGxOYW1lLCBpbnN0YW5jZSwgbmFtZSwgZmFjdG9yeU5hbWUsIGNvbnRyb2xsZXJUeXBlOwot
Ci0gIGlmIChjb250ZXh0ICYmIEVtYmVyLmlzQXJyYXkoY29udGV4dCkpIHsKLSAgICBjb250cm9s
bGVyVHlwZSA9ICdhcnJheSc7Ci0gIH0gZWxzZSBpZiAoY29udGV4dCkgewotICAgIGNvbnRyb2xs
ZXJUeXBlID0gJ29iamVjdCc7Ci0gIH0gZWxzZSB7Ci0gICAgY29udHJvbGxlclR5cGUgPSAnYmFz
aWMnOwotICB9Ci0KLSAgZmFjdG9yeU5hbWUgPSAnY29udHJvbGxlcjonICsgY29udHJvbGxlclR5
cGU7Ci0KLSAgRmFjdG9yeSA9IGNvbnRhaW5lci5sb29rdXBGYWN0b3J5KGZhY3RvcnlOYW1lKS5l
eHRlbmQoewotICAgIGlzR2VuZXJhdGVkOiB0cnVlLAotICAgIHRvU3RyaW5nOiBmdW5jdGlvbigp
IHsKLSAgICAgIHJldHVybiAiKGdlbmVyYXRlZCAiICsgY29udHJvbGxlck5hbWUgKyAiIGNvbnRy
b2xsZXIpIjsKLSAgICB9Ci0gIH0pOwotCi0gIGZ1bGxOYW1lID0gJ2NvbnRyb2xsZXI6JyArIGNv
bnRyb2xsZXJOYW1lOwotCi0gIGNvbnRhaW5lci5yZWdpc3RlcihmdWxsTmFtZSwgIEZhY3Rvcnkp
OwotCi0gIHJldHVybiBGYWN0b3J5OwotfTsKLQotLyoqCi0gIEdlbmVyYXRlcyBhbmQgaW5zdGFu
dGlhdGVzIGEgY29udHJvbGxlci4KLQotICBUaGUgdHlwZSBvZiB0aGUgZ2VuZXJhdGVkIGNvbnRy
b2xsZXIgZmFjdG9yeSBpcyBkZXJpdmVkCi0gIGZyb20gdGhlIGNvbnRleHQuIElmIHRoZSBjb250
ZXh0IGlzIGFuIGFycmF5IGFuIGFycmF5IGNvbnRyb2xsZXIKLSAgaXMgZ2VuZXJhdGVkLCBpZiBh
biBvYmplY3QsIGFuIG9iamVjdCBjb250cm9sbGVyIG90aGVyd2lzZSwgYSBiYXNpYwotICBjb250
cm9sbGVyIGlzIGdlbmVyYXRlZC4KLQotICBAZm9yIEVtYmVyCi0gIEBtZXRob2QgZ2VuZXJhdGVD
b250cm9sbGVyCi0gIEBwcml2YXRlCi0qLwotRW1iZXIuZ2VuZXJhdGVDb250cm9sbGVyID0gZnVu
Y3Rpb24oY29udGFpbmVyLCBjb250cm9sbGVyTmFtZSwgY29udGV4dCkgewotICBFbWJlci5nZW5l
cmF0ZUNvbnRyb2xsZXJGYWN0b3J5KGNvbnRhaW5lciwgY29udHJvbGxlck5hbWUsIGNvbnRleHQp
OwotICB2YXIgZnVsbE5hbWUgPSAnY29udHJvbGxlcjonICsgY29udHJvbGxlck5hbWU7Ci0gIHZh
ciBpbnN0YW5jZSA9IGNvbnRhaW5lci5sb29rdXAoZnVsbE5hbWUpOwotCi0gIGlmIChnZXQoaW5z
dGFuY2UsICduYW1lc3BhY2UuTE9HX0FDVElWRV9HRU5FUkFUSU9OJykpIHsKLSAgICBFbWJlci5M
b2dnZXIuaW5mbygiZ2VuZXJhdGVkIC0+ICIgKyBmdWxsTmFtZSwgeyBmdWxsTmFtZTogZnVsbE5h
bWUgfSk7Ci0gIH0KLQotICByZXR1cm4gaW5zdGFuY2U7Ci19OwotCi19KSgpOwotCi0KLQotKGZ1
bmN0aW9uKCkgewotLyoqCi1AbW9kdWxlIGVtYmVyCi1Ac3VibW9kdWxlIGVtYmVyLXJvdXRpbmcK
LSovCi0KLXZhciBSb3V0ZXIgPSByZXF1aXJlTW9kdWxlKCJyb3V0ZXIiKVsnZGVmYXVsdCddOwot
dmFyIGdldCA9IEVtYmVyLmdldCwgc2V0ID0gRW1iZXIuc2V0OwotdmFyIGRlZmluZVByb3BlcnR5
ID0gRW1iZXIuZGVmaW5lUHJvcGVydHk7Ci12YXIgc2xpY2UgPSBBcnJheS5wcm90b3R5cGUuc2xp
Y2U7Ci0KLXZhciBEZWZhdWx0VmlldyA9IEVtYmVyLl9NZXRhbW9ycGhWaWV3OwotLyoqCi0gIFRo
ZSBgRW1iZXIuUm91dGVyYCBjbGFzcyBtYW5hZ2VzIHRoZSBhcHBsaWNhdGlvbiBzdGF0ZSBhbmQg
VVJMcy4gUmVmZXIgdG8KLSAgdGhlIFtyb3V0aW5nIGd1aWRlXShodHRwOi8vZW1iZXJqcy5jb20v
Z3VpZGVzL3JvdXRpbmcvKSBmb3IgZG9jdW1lbnRhdGlvbi4KLQotICBAY2xhc3MgUm91dGVyCi0g
IEBuYW1lc3BhY2UgRW1iZXIKLSAgQGV4dGVuZHMgRW1iZXIuT2JqZWN0Ci0qLwotRW1iZXIuUm91
dGVyID0gRW1iZXIuT2JqZWN0LmV4dGVuZChFbWJlci5FdmVudGVkLCB7Ci0gIC8qKgotICAgIFRo
ZSBgbG9jYXRpb25gIHByb3BlcnR5IGRldGVybWluZXMgdGhlIHR5cGUgb2YgVVJMJ3MgdGhhdCB5
b3VyCi0gICAgYXBwbGljYXRpb24gd2lsbCB1c2UuCi0KLSAgICBUaGUgZm9sbG93aW5nIGxvY2F0
aW9uIHR5cGVzIGFyZSBjdXJyZW50bHkgYXZhaWxhYmxlOgotCi0gICAgKiBgaGFzaGAKLSAgICAq
IGBoaXN0b3J5YAotICAgICogYG5vbmVgCi0KLSAgICBAcHJvcGVydHkgbG9jYXRpb24KLSAgICBA
ZGVmYXVsdCAnaGFzaCcKLSAgICBAc2VlIHtFbWJlci5Mb2NhdGlvbn0KLSAgKi8KLSAgbG9jYXRp
b246ICdoYXNoJywKLQotICBpbml0OiBmdW5jdGlvbigpIHsKLSAgICB0aGlzLnJvdXRlciA9IHRo
aXMuY29uc3RydWN0b3Iucm91dGVyIHx8IHRoaXMuY29uc3RydWN0b3IubWFwKEVtYmVyLkspOwot
ICAgIHRoaXMuX2FjdGl2ZVZpZXdzID0ge307Ci0gICAgdGhpcy5fc2V0dXBMb2NhdGlvbigpOwot
Ci0gICAgaWYgKGdldCh0aGlzLCAnbmFtZXNwYWNlLkxPR19UUkFOU0lUSU9OU19JTlRFUk5BTCcp
KSB7Ci0gICAgICB0aGlzLnJvdXRlci5sb2cgPSBFbWJlci5Mb2dnZXIuZGVidWc7Ci0gICAgfQot
ICB9LAotCi0gIC8qKgotICAgIFJlcHJlc2VudHMgdGhlIGN1cnJlbnQgVVJMLgotCi0gICAgQG1l
dGhvZCB1cmwKLSAgICBAcmV0dXJucyB7U3RyaW5nfSBUaGUgY3VycmVudCBVUkwuCi0gICovCi0g
IHVybDogRW1iZXIuY29tcHV0ZWQoZnVuY3Rpb24oKSB7Ci0gICAgcmV0dXJuIGdldCh0aGlzLCAn
bG9jYXRpb24nKS5nZXRVUkwoKTsKLSAgfSksCi0KLSAgLyoqCi0gICAgSW5pdGlhbGl6ZXMgdGhl
IGN1cnJlbnQgcm91dGVyIGluc3RhbmNlIGFuZCBzZXRzIHVwIHRoZSBjaGFuZ2UgaGFuZGxpbmcK
LSAgICBldmVudCBsaXN0ZW5lcnMgdXNlZCBieSB0aGUgaW5zdGFuY2VzIGBsb2NhdGlvbmAgaW1w
bGVtZW50YXRpb24uCi0KLSAgICBAbWV0aG9kIHN0YXJ0Um91dGluZwotICAgIEBwcml2YXRlCi0g
ICovCi0gIHN0YXJ0Um91dGluZzogZnVuY3Rpb24oKSB7Ci0gICAgdGhpcy5yb3V0ZXIgPSB0aGlz
LnJvdXRlciB8fCB0aGlzLmNvbnN0cnVjdG9yLm1hcChFbWJlci5LKTsKLQotICAgIHZhciByb3V0
ZXIgPSB0aGlzLnJvdXRlciwKLSAgICAgICAgbG9jYXRpb24gPSBnZXQodGhpcywgJ2xvY2F0aW9u
JyksCi0gICAgICAgIGNvbnRhaW5lciA9IHRoaXMuY29udGFpbmVyLAotICAgICAgICBzZWxmID0g
dGhpczsKLQotICAgIHRoaXMuX3NldHVwUm91dGVyKHJvdXRlciwgbG9jYXRpb24pOwotCi0gICAg
Y29udGFpbmVyLnJlZ2lzdGVyKCd2aWV3OmRlZmF1bHQnLCBEZWZhdWx0Vmlldyk7Ci0gICAgY29u
dGFpbmVyLnJlZ2lzdGVyKCd2aWV3OnRvcGxldmVsJywgRW1iZXIuVmlldy5leHRlbmQoKSk7Ci0K
LSAgICBsb2NhdGlvbi5vblVwZGF0ZVVSTChmdW5jdGlvbih1cmwpIHsKLSAgICAgIHNlbGYuaGFu
ZGxlVVJMKHVybCk7Ci0gICAgfSk7Ci0KLSAgICB0aGlzLmhhbmRsZVVSTChsb2NhdGlvbi5nZXRV
UkwoKSk7Ci0gIH0sCi0KLSAgLyoqCi0gICAgSGFuZGxlcyB1cGRhdGluZyB0aGUgcGF0aHMgYW5k
IG5vdGlmeWluZyBhbnkgbGlzdGVuZXJzIG9mIHRoZSBVUkwKLSAgICBjaGFuZ2UuCi0KLSAgICBU
cmlnZ2VycyB0aGUgcm91dGVyIGxldmVsIGBkaWRUcmFuc2l0aW9uYCBob29rLgotCi0gICAgQG1l
dGhvZCBkaWRUcmFuc2l0aW9uCi0gICAgQHByaXZhdGUKLSAgKi8KLSAgZGlkVHJhbnNpdGlvbjog
ZnVuY3Rpb24oaW5mb3MpIHsKLSAgICB1cGRhdGVQYXRocyh0aGlzKTsKLQotICAgIHRoaXMuX2Nh
bmNlbExvYWRpbmdFdmVudCgpOwotCi0gICAgdGhpcy5ub3RpZnlQcm9wZXJ0eUNoYW5nZSgndXJs
Jyk7Ci0KLSAgICAvLyBQdXQgdGhpcyBpbiB0aGUgcnVubG9vcCBzbyB1cmwgd2lsbCBiZSBhY2N1
cmF0ZS4gU2VlbXMKLSAgICAvLyBsZXNzIHN1cnByaXNpbmcgdGhhbiBkaWRUcmFuc2l0aW9uIGJl
aW5nIG91dCBvZiBzeW5jLgotICAgIEVtYmVyLnJ1bi5vbmNlKHRoaXMsIHRoaXMudHJpZ2dlciwg
J2RpZFRyYW5zaXRpb24nKTsKLQotICAgIGlmIChnZXQodGhpcywgJ25hbWVzcGFjZScpLkxPR19U
UkFOU0lUSU9OUykgewotICAgICAgRW1iZXIuTG9nZ2VyLmxvZygiVHJhbnNpdGlvbmVkIGludG8g
JyIgKyBFbWJlci5Sb3V0ZXIuX3JvdXRlUGF0aChpbmZvcykgKyAiJyIpOwotICAgIH0KLSAgfSwK
LQotICBoYW5kbGVVUkw6IGZ1bmN0aW9uKHVybCkgewotICAgIHJldHVybiB0aGlzLl9kb1RyYW5z
aXRpb24oJ2hhbmRsZVVSTCcsIFt1cmxdKTsKLSAgfSwKLQotICB0cmFuc2l0aW9uVG86IGZ1bmN0
aW9uKCkgewotICAgIHJldHVybiB0aGlzLl9kb1RyYW5zaXRpb24oJ3RyYW5zaXRpb25UbycsIGFy
Z3VtZW50cyk7Ci0gIH0sCi0KLSAgaW50ZXJtZWRpYXRlVHJhbnNpdGlvblRvOiBmdW5jdGlvbigp
IHsKLSAgICB0aGlzLnJvdXRlci5pbnRlcm1lZGlhdGVUcmFuc2l0aW9uVG8uYXBwbHkodGhpcy5y
b3V0ZXIsIGFyZ3VtZW50cyk7Ci0KLSAgICB1cGRhdGVQYXRocyh0aGlzKTsKLQotICAgIHZhciBp
bmZvcyA9IHRoaXMucm91dGVyLmN1cnJlbnRIYW5kbGVySW5mb3M7Ci0gICAgaWYgKGdldCh0aGlz
LCAnbmFtZXNwYWNlJykuTE9HX1RSQU5TSVRJT05TKSB7Ci0gICAgICBFbWJlci5Mb2dnZXIubG9n
KCJJbnRlcm1lZGlhdGUtdHJhbnNpdGlvbmVkIGludG8gJyIgKyBFbWJlci5Sb3V0ZXIuX3JvdXRl
UGF0aChpbmZvcykgKyAiJyIpOwotICAgIH0KLSAgfSwKLQotICByZXBsYWNlV2l0aDogZnVuY3Rp
b24oKSB7Ci0gICAgcmV0dXJuIHRoaXMuX2RvVHJhbnNpdGlvbigncmVwbGFjZVdpdGgnLCBhcmd1
bWVudHMpOwotICB9LAotCi0gIGdlbmVyYXRlOiBmdW5jdGlvbigpIHsKLSAgICB2YXIgdXJsID0g
dGhpcy5yb3V0ZXIuZ2VuZXJhdGUuYXBwbHkodGhpcy5yb3V0ZXIsIGFyZ3VtZW50cyk7Ci0gICAg
cmV0dXJuIHRoaXMubG9jYXRpb24uZm9ybWF0VVJMKHVybCk7Ci0gIH0sCi0KLSAgLyoqCi0gICAg
RGV0ZXJtaW5lcyBpZiB0aGUgc3VwcGxpZWQgcm91dGUgaXMgY3VycmVudGx5IGFjdGl2ZS4KLQot
ICAgIEBtZXRob2QgaXNBY3RpdmUKLSAgICBAcGFyYW0gcm91dGVOYW1lCi0gICAgQHJldHVybnMg
e0Jvb2xlYW59Ci0gICAgQHByaXZhdGUKLSAgKi8KLSAgaXNBY3RpdmU6IGZ1bmN0aW9uKHJvdXRl
TmFtZSkgewotICAgIHZhciByb3V0ZXIgPSB0aGlzLnJvdXRlcjsKLSAgICByZXR1cm4gcm91dGVy
LmlzQWN0aXZlLmFwcGx5KHJvdXRlciwgYXJndW1lbnRzKTsKLSAgfSwKLQotICBzZW5kOiBmdW5j
dGlvbihuYW1lLCBjb250ZXh0KSB7Ci0gICAgdGhpcy5yb3V0ZXIudHJpZ2dlci5hcHBseSh0aGlz
LnJvdXRlciwgYXJndW1lbnRzKTsKLSAgfSwKLQotICAvKioKLSAgICBEb2VzIHRoaXMgcm91dGVy
IGluc3RhbmNlIGhhdmUgdGhlIGdpdmVuIHJvdXRlLgotCi0gICAgQG1ldGhvZCBoYXNSb3V0ZQot
ICAgIEByZXR1cm5zIHtCb29sZWFufQotICAgIEBwcml2YXRlCi0gICovCi0gIGhhc1JvdXRlOiBm
dW5jdGlvbihyb3V0ZSkgewotICAgIHJldHVybiB0aGlzLnJvdXRlci5oYXNSb3V0ZShyb3V0ZSk7
Ci0gIH0sCi0KLSAgLyoqCi0gICAgUmVzZXRzIHRoZSBzdGF0ZSBvZiB0aGUgcm91dGVyIGJ5IGNs
ZWFyaW5nIHRoZSBjdXJyZW50IHJvdXRlCi0gICAgaGFuZGxlcnMgYW5kIGRlYWN0aXZhdGluZyB0
aGVtLgotCi0gICAgQHByaXZhdGUKLSAgICBAbWV0aG9kIHJlc2V0Ci0gICAqLwotICByZXNldDog
ZnVuY3Rpb24oKSB7Ci0gICAgdGhpcy5yb3V0ZXIucmVzZXQoKTsKLSAgfSwKLQotICB3aWxsRGVz
dHJveTogZnVuY3Rpb24oKXsKLSAgICB2YXIgbG9jYXRpb24gPSBnZXQodGhpcywgJ2xvY2F0aW9u
Jyk7Ci0gICAgbG9jYXRpb24uZGVzdHJveSgpOwotCi0gICAgdGhpcy5fc3VwZXIuYXBwbHkodGhp
cywgYXJndW1lbnRzKTsKLSAgfSwKLQotICBfbG9va3VwQWN0aXZlVmlldzogZnVuY3Rpb24odGVt
cGxhdGVOYW1lKSB7Ci0gICAgdmFyIGFjdGl2ZSA9IHRoaXMuX2FjdGl2ZVZpZXdzW3RlbXBsYXRl
TmFtZV07Ci0gICAgcmV0dXJuIGFjdGl2ZSAmJiBhY3RpdmVbMF07Ci0gIH0sCi0KLSAgX2Nvbm5l
Y3RBY3RpdmVWaWV3OiBmdW5jdGlvbih0ZW1wbGF0ZU5hbWUsIHZpZXcpIHsKLSAgICB2YXIgZXhp
c3RpbmcgPSB0aGlzLl9hY3RpdmVWaWV3c1t0ZW1wbGF0ZU5hbWVdOwotCi0gICAgaWYgKGV4aXN0
aW5nKSB7Ci0gICAgICBleGlzdGluZ1swXS5vZmYoJ3dpbGxEZXN0cm95RWxlbWVudCcsIHRoaXMs
IGV4aXN0aW5nWzFdKTsKLSAgICB9Ci0KLSAgICB2YXIgZGlzY29ubmVjdCA9IGZ1bmN0aW9uKCkg
ewotICAgICAgZGVsZXRlIHRoaXMuX2FjdGl2ZVZpZXdzW3RlbXBsYXRlTmFtZV07Ci0gICAgfTsK
LQotICAgIHRoaXMuX2FjdGl2ZVZpZXdzW3RlbXBsYXRlTmFtZV0gPSBbdmlldywgZGlzY29ubmVj
dF07Ci0gICAgdmlldy5vbmUoJ3dpbGxEZXN0cm95RWxlbWVudCcsIHRoaXMsIGRpc2Nvbm5lY3Qp
OwotICB9LAotCi0gIF9zZXR1cExvY2F0aW9uOiBmdW5jdGlvbigpIHsKLSAgICB2YXIgbG9jYXRp
b24gPSBnZXQodGhpcywgJ2xvY2F0aW9uJyksCi0gICAgICAgIHJvb3RVUkwgPSBnZXQodGhpcywg
J3Jvb3RVUkwnKSwKLSAgICAgICAgb3B0aW9ucyA9IHt9OwotCi0gICAgaWYgKHR5cGVvZiByb290
VVJMID09PSAnc3RyaW5nJykgewotICAgICAgb3B0aW9ucy5yb290VVJMID0gcm9vdFVSTDsKLSAg
ICB9Ci0KLSAgICBpZiAoJ3N0cmluZycgPT09IHR5cGVvZiBsb2NhdGlvbikgewotICAgICAgb3B0
aW9ucy5pbXBsZW1lbnRhdGlvbiA9IGxvY2F0aW9uOwotICAgICAgbG9jYXRpb24gPSBzZXQodGhp
cywgJ2xvY2F0aW9uJywgRW1iZXIuTG9jYXRpb24uY3JlYXRlKG9wdGlvbnMpKTsKLSAgICB9Ci0K
LSAgICAvLyBlbnN1cmUgdGhhdCBpbml0U3RhdGUgaXMgY2FsbGVkIEFGVEVSIHRoZSByb290VVJM
IGlzIHNldCBvbgotICAgIC8vIHRoZSBsb2NhdGlvbiBpbnN0YW5jZQotICAgIGlmICh0eXBlb2Yg
bG9jYXRpb24uaW5pdFN0YXRlID09PSAnZnVuY3Rpb24nKSB7IGxvY2F0aW9uLmluaXRTdGF0ZSgp
OyB9Ci0gIH0sCi0KLSAgX2dldEhhbmRsZXJGdW5jdGlvbjogZnVuY3Rpb24oKSB7Ci0gICAgdmFy
IHNlZW4gPSB7fSwgY29udGFpbmVyID0gdGhpcy5jb250YWluZXIsCi0gICAgICAgIERlZmF1bHRS
b3V0ZSA9IGNvbnRhaW5lci5sb29rdXBGYWN0b3J5KCdyb3V0ZTpiYXNpYycpLAotICAgICAgICBz
ZWxmID0gdGhpczsKLQotICAgIHJldHVybiBmdW5jdGlvbihuYW1lKSB7Ci0gICAgICB2YXIgcm91
dGVOYW1lID0gJ3JvdXRlOicgKyBuYW1lLAotICAgICAgICAgIGhhbmRsZXIgPSBjb250YWluZXIu
bG9va3VwKHJvdXRlTmFtZSk7Ci0KLSAgICAgIGlmIChzZWVuW25hbWVdKSB7IHJldHVybiBoYW5k
bGVyOyB9Ci0KLSAgICAgIHNlZW5bbmFtZV0gPSB0cnVlOwotCi0gICAgICBpZiAoIWhhbmRsZXIp
IHsKLSAgICAgICAgY29udGFpbmVyLnJlZ2lzdGVyKHJvdXRlTmFtZSwgRGVmYXVsdFJvdXRlLmV4
dGVuZCgpKTsKLSAgICAgICAgaGFuZGxlciA9IGNvbnRhaW5lci5sb29rdXAocm91dGVOYW1lKTsK
LQotICAgICAgICBpZiAoZ2V0KHNlbGYsICduYW1lc3BhY2UuTE9HX0FDVElWRV9HRU5FUkFUSU9O
JykpIHsKLSAgICAgICAgICBFbWJlci5Mb2dnZXIuaW5mbygiZ2VuZXJhdGVkIC0+ICIgKyByb3V0
ZU5hbWUsIHsgZnVsbE5hbWU6IHJvdXRlTmFtZSB9KTsKLSAgICAgICAgfQotICAgICAgfQotCi0g
ICAgICBoYW5kbGVyLnJvdXRlTmFtZSA9IG5hbWU7Ci0gICAgICByZXR1cm4gaGFuZGxlcjsKLSAg
ICB9OwotICB9LAotCi0gIF9zZXR1cFJvdXRlcjogZnVuY3Rpb24ocm91dGVyLCBsb2NhdGlvbikg
ewotICAgIHZhciBsYXN0VVJMLCBlbWJlclJvdXRlciA9IHRoaXM7Ci0KLSAgICByb3V0ZXIuZ2V0
SGFuZGxlciA9IHRoaXMuX2dldEhhbmRsZXJGdW5jdGlvbigpOwotCi0gICAgdmFyIGRvVXBkYXRl
VVJMID0gZnVuY3Rpb24oKSB7Ci0gICAgICBsb2NhdGlvbi5zZXRVUkwobGFzdFVSTCk7Ci0gICAg
fTsKLQotICAgIHJvdXRlci51cGRhdGVVUkwgPSBmdW5jdGlvbihwYXRoKSB7Ci0gICAgICBsYXN0
VVJMID0gcGF0aDsKLSAgICAgIEVtYmVyLnJ1bi5vbmNlKGRvVXBkYXRlVVJMKTsKLSAgICB9Owot
Ci0gICAgaWYgKGxvY2F0aW9uLnJlcGxhY2VVUkwpIHsKLSAgICAgIHZhciBkb1JlcGxhY2VVUkwg
PSBmdW5jdGlvbigpIHsKLSAgICAgICAgbG9jYXRpb24ucmVwbGFjZVVSTChsYXN0VVJMKTsKLSAg
ICAgIH07Ci0KLSAgICAgIHJvdXRlci5yZXBsYWNlVVJMID0gZnVuY3Rpb24ocGF0aCkgewotICAg
ICAgICBsYXN0VVJMID0gcGF0aDsKLSAgICAgICAgRW1iZXIucnVuLm9uY2UoZG9SZXBsYWNlVVJM
KTsKLSAgICAgIH07Ci0gICAgfQotCi0gICAgcm91dGVyLmRpZFRyYW5zaXRpb24gPSBmdW5jdGlv
bihpbmZvcykgewotICAgICAgZW1iZXJSb3V0ZXIuZGlkVHJhbnNpdGlvbihpbmZvcyk7Ci0gICAg
fTsKLSAgfSwKLQotICBfZG9UcmFuc2l0aW9uOiBmdW5jdGlvbihtZXRob2QsIGFyZ3MpIHsKLSAg
ICAvLyBOb3JtYWxpemUgYmxhbmsgcm91dGUgdG8gcm9vdCBVUkwuCi0gICAgYXJncyA9IHNsaWNl
LmNhbGwoYXJncyk7Ci0gICAgYXJnc1swXSA9IGFyZ3NbMF0gfHwgJy8nOwotCi0gICAgdmFyIHBh
c3NlZE5hbWUgPSBhcmdzWzBdLCBuYW1lLCBzZWxmID0gdGhpcywKLSAgICAgIGlzUXVlcnlQYXJh
bXNPbmx5ID0gZmFsc2U7Ci0KLSAgICAKLSAgICBpZiAoIWlzUXVlcnlQYXJhbXNPbmx5ICYmIHBh
c3NlZE5hbWUuY2hhckF0KDApID09PSAnLycpIHsKLSAgICAgIG5hbWUgPSBwYXNzZWROYW1lOwot
ICAgIH0gZWxzZSBpZiAoIWlzUXVlcnlQYXJhbXNPbmx5KSB7Ci0gICAgICBpZiAoIXRoaXMucm91
dGVyLmhhc1JvdXRlKHBhc3NlZE5hbWUpKSB7Ci0gICAgICAgIG5hbWUgPSBhcmdzWzBdID0gcGFz
c2VkTmFtZSArICcuaW5kZXgnOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgbmFtZSA9IHBhc3Nl
ZE5hbWU7Ci0gICAgICB9Ci0KLSAgICAgIEVtYmVyLmFzc2VydCgiVGhlIHJvdXRlICIgKyBwYXNz
ZWROYW1lICsgIiB3YXMgbm90IGZvdW5kIiwgdGhpcy5yb3V0ZXIuaGFzUm91dGUobmFtZSkpOwot
ICAgIH0KLQotICAgIHZhciB0cmFuc2l0aW9uUHJvbWlzZSA9IHRoaXMucm91dGVyW21ldGhvZF0u
YXBwbHkodGhpcy5yb3V0ZXIsIGFyZ3MpOwotCi0gICAgdHJhbnNpdGlvblByb21pc2UudGhlbihu
dWxsLCBmdW5jdGlvbihlcnJvcikgewotICAgICAgaWYgKGVycm9yLm5hbWUgPT09ICJVbnJlY29n
bml6ZWRVUkxFcnJvciIpIHsKLSAgICAgICAgRW1iZXIuYXNzZXJ0KCJUaGUgVVJMICciICsgZXJy
b3IubWVzc2FnZSArICInIGRpZCBub3QgbWF0Y2ggYW55IHJvdXRlcyBpbiB5b3VyIGFwcGxpY2F0
aW9uIik7Ci0gICAgICB9Ci0gICAgfSwgJ0VtYmVyOiBDaGVjayBmb3IgUm91dGVyIHVucmVjb2du
aXplZCBVUkwgZXJyb3InKTsKLQotICAgIC8vIFdlIHdhbnQgdG8gcmV0dXJuIHRoZSBjb25maWd1
cmFibGUgcHJvbWlzZSBvYmplY3QKLSAgICAvLyBzbyB0aGF0IGNhbGxlcnMgb2YgdGhpcyBmdW5j
dGlvbiBjYW4gdXNlIGAubWV0aG9kKClgIG9uIGl0LAotICAgIC8vIHdoaWNoIG9idmlvdXNseSBk
b2Vzbid0IGV4aXN0IGZvciBub3JtYWwgUlNWUCBwcm9taXNlcy4KLSAgICByZXR1cm4gdHJhbnNp
dGlvblByb21pc2U7Ci0gIH0sCi0KLSAgX3NjaGVkdWxlTG9hZGluZ0V2ZW50OiBmdW5jdGlvbih0
cmFuc2l0aW9uLCBvcmlnaW5Sb3V0ZSkgewotICAgIHRoaXMuX2NhbmNlbExvYWRpbmdFdmVudCgp
OwotICAgIHRoaXMuX2xvYWRpbmdTdGF0ZVRpbWVyID0gRW1iZXIucnVuLnNjaGVkdWxlT25jZSgn
cm91dGVyVHJhbnNpdGlvbnMnLCB0aGlzLCAnX2ZpcmVMb2FkaW5nRXZlbnQnLCB0cmFuc2l0aW9u
LCBvcmlnaW5Sb3V0ZSk7Ci0gIH0sCi0KLSAgX2ZpcmVMb2FkaW5nRXZlbnQ6IGZ1bmN0aW9uKHRy
YW5zaXRpb24sIG9yaWdpblJvdXRlKSB7Ci0gICAgaWYgKCF0aGlzLnJvdXRlci5hY3RpdmVUcmFu
c2l0aW9uKSB7Ci0gICAgICAvLyBEb24ndCBmaXJlIGFuIGV2ZW50IGlmIHdlJ3ZlIHNpbmNlIG1v
dmVkIG9uIGZyb20KLSAgICAgIC8vIHRoZSB0cmFuc2l0aW9uIHRoYXQgcHV0IHVzIGluIGEgbG9h
ZGluZyBzdGF0ZS4KLSAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICB0cmFuc2l0aW9uLnRyaWdn
ZXIodHJ1ZSwgJ2xvYWRpbmcnLCB0cmFuc2l0aW9uLCBvcmlnaW5Sb3V0ZSk7Ci0gIH0sCi0KLSAg
X2NhbmNlbExvYWRpbmdFdmVudDogZnVuY3Rpb24gKCkgewotICAgIGlmICh0aGlzLl9sb2FkaW5n
U3RhdGVUaW1lcikgewotICAgICAgRW1iZXIucnVuLmNhbmNlbCh0aGlzLl9sb2FkaW5nU3RhdGVU
aW1lcik7Ci0gICAgfQotICAgIHRoaXMuX2xvYWRpbmdTdGF0ZVRpbWVyID0gbnVsbDsKLSAgfQot
fSk7Ci0KLS8qKgotICBIZWxwZXIgZnVuY3Rpb24gZm9yIGl0ZXJhdGluZyByb290LXdhcmQsIHN0
YXJ0aW5nCi0gIGZyb20gKGJ1dCBub3QgaW5jbHVkaW5nKSB0aGUgcHJvdmlkZWQgYG9yaWdpblJv
dXRlYC4KLQotICBSZXR1cm5zIHRydWUgaWYgdGhlIGxhc3QgY2FsbGJhY2sgZmlyZWQgcmVxdWVz
dGVkCi0gIHRvIGJ1YmJsZSB1cHdhcmQuCi0KLSAgQHByaXZhdGUKLSAqLwotZnVuY3Rpb24gZm9y
RWFjaFJvdXRlQWJvdmUob3JpZ2luUm91dGUsIHRyYW5zaXRpb24sIGNhbGxiYWNrKSB7Ci0gIHZh
ciBoYW5kbGVySW5mb3MgPSB0cmFuc2l0aW9uLmhhbmRsZXJJbmZvcywKLSAgICAgIG9yaWdpblJv
dXRlRm91bmQgPSBmYWxzZTsKLQotICBmb3IgKHZhciBpID0gaGFuZGxlckluZm9zLmxlbmd0aCAt
IDE7IGkgPj0gMDsgLS1pKSB7Ci0gICAgdmFyIGhhbmRsZXJJbmZvID0gaGFuZGxlckluZm9zW2ld
LAotICAgICAgICByb3V0ZSA9IGhhbmRsZXJJbmZvLmhhbmRsZXI7Ci0KLSAgICBpZiAoIW9yaWdp
blJvdXRlRm91bmQpIHsKLSAgICAgIGlmIChvcmlnaW5Sb3V0ZSA9PT0gcm91dGUpIHsKLSAgICAg
ICAgb3JpZ2luUm91dGVGb3VuZCA9IHRydWU7Ci0gICAgICB9Ci0gICAgICBjb250aW51ZTsKLSAg
ICB9Ci0KLSAgICBpZiAoY2FsbGJhY2socm91dGUsIGhhbmRsZXJJbmZvc1tpICsgMV0uaGFuZGxl
cikgIT09IHRydWUpIHsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gIH0KLSAgcmV0dXJu
IHRydWU7Ci19Ci0KLS8vIFRoZXNlIGdldCBpbnZva2VkIHdoZW4gYW4gYWN0aW9uIGJ1YmJsZXMg
YWJvdmUgQXBwbGljYXRpb25Sb3V0ZQotLy8gYW5kIGFyZSBub3QgbWVhbnQgdG8gYmUgb3ZlcnJp
ZGFibGUuCi12YXIgZGVmYXVsdEFjdGlvbkhhbmRsZXJzID0gewotCi0gIHdpbGxSZXNvbHZlTW9k
ZWw6IGZ1bmN0aW9uKHRyYW5zaXRpb24sIG9yaWdpblJvdXRlKSB7Ci0gICAgb3JpZ2luUm91dGUu
cm91dGVyLl9zY2hlZHVsZUxvYWRpbmdFdmVudCh0cmFuc2l0aW9uLCBvcmlnaW5Sb3V0ZSk7Ci0g
IH0sCi0KLSAgZXJyb3I6IGZ1bmN0aW9uKGVycm9yLCB0cmFuc2l0aW9uLCBvcmlnaW5Sb3V0ZSkg
ewotICAgIC8vIEF0dGVtcHQgdG8gZmluZCBhbiBhcHByb3ByaWF0ZSBlcnJvciBzdWJzdGF0ZSB0
byBlbnRlci4KLSAgICB2YXIgcm91dGVyID0gb3JpZ2luUm91dGUucm91dGVyOwotCi0gICAgdmFy
IHRyeVRvcExldmVsID0gZm9yRWFjaFJvdXRlQWJvdmUob3JpZ2luUm91dGUsIHRyYW5zaXRpb24s
IGZ1bmN0aW9uKHJvdXRlLCBjaGlsZFJvdXRlKSB7Ci0gICAgICB2YXIgY2hpbGRFcnJvclJvdXRl
TmFtZSA9IGZpbmRDaGlsZFJvdXRlTmFtZShyb3V0ZSwgY2hpbGRSb3V0ZSwgJ2Vycm9yJyk7Ci0g
ICAgICBpZiAoY2hpbGRFcnJvclJvdXRlTmFtZSkgewotICAgICAgICByb3V0ZXIuaW50ZXJtZWRp
YXRlVHJhbnNpdGlvblRvKGNoaWxkRXJyb3JSb3V0ZU5hbWUsIGVycm9yKTsKLSAgICAgICAgcmV0
dXJuOwotICAgICAgfQotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSk7Ci0KLSAgICBpZiAodHJ5
VG9wTGV2ZWwpIHsKLSAgICAgIC8vIENoZWNrIGZvciB0b3AtbGV2ZWwgZXJyb3Igc3RhdGUgdG8g
ZW50ZXIuCi0gICAgICBpZiAocm91dGVIYXNCZWVuRGVmaW5lZChvcmlnaW5Sb3V0ZS5yb3V0ZXIs
ICdhcHBsaWNhdGlvbl9lcnJvcicpKSB7Ci0gICAgICAgIHJvdXRlci5pbnRlcm1lZGlhdGVUcmFu
c2l0aW9uVG8oJ2FwcGxpY2F0aW9uX2Vycm9yJywgZXJyb3IpOwotICAgICAgICByZXR1cm47Ci0g
ICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgIC8vIERvbid0IGZpcmUgYW4gYXNzZXJ0aW9uIGlm
IHdlIGZvdW5kIGFuIGVycm9yIHN1YnN0YXRlLgotICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IEVtYmVyLkxvZ2dlci5lcnJvcignRXJyb3Igd2hpbGUgbG9hZGluZyByb3V0ZTogJyArIGVycm9y
LnN0YWNrKTsKLSAgfSwKLQotICBsb2FkaW5nOiBmdW5jdGlvbih0cmFuc2l0aW9uLCBvcmlnaW5S
b3V0ZSkgewotICAgIC8vIEF0dGVtcHQgdG8gZmluZCBhbiBhcHByb3ByaWF0ZSBsb2FkaW5nIHN1
YnN0YXRlIHRvIGVudGVyLgotICAgIHZhciByb3V0ZXIgPSBvcmlnaW5Sb3V0ZS5yb3V0ZXI7Ci0K
LSAgICB2YXIgdHJ5VG9wTGV2ZWwgPSBmb3JFYWNoUm91dGVBYm92ZShvcmlnaW5Sb3V0ZSwgdHJh
bnNpdGlvbiwgZnVuY3Rpb24ocm91dGUsIGNoaWxkUm91dGUpIHsKLSAgICAgIHZhciBjaGlsZExv
YWRpbmdSb3V0ZU5hbWUgPSBmaW5kQ2hpbGRSb3V0ZU5hbWUocm91dGUsIGNoaWxkUm91dGUsICds
b2FkaW5nJyk7Ci0KLSAgICAgIGlmIChjaGlsZExvYWRpbmdSb3V0ZU5hbWUpIHsKLSAgICAgICAg
cm91dGVyLmludGVybWVkaWF0ZVRyYW5zaXRpb25UbyhjaGlsZExvYWRpbmdSb3V0ZU5hbWUpOwot
ICAgICAgICByZXR1cm47Ci0gICAgICB9Ci0KLSAgICAgIC8vIERvbid0IGJ1YmJsZSBhYm92ZSBw
aXZvdCByb3V0ZS4KLSAgICAgIGlmICh0cmFuc2l0aW9uLnBpdm90SGFuZGxlciAhPT0gcm91dGUp
IHsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9Ci0gICAgfSk7Ci0KLSAgICBpZiAodHJ5
VG9wTGV2ZWwpIHsKLSAgICAgIC8vIENoZWNrIGZvciB0b3AtbGV2ZWwgbG9hZGluZyBzdGF0ZSB0
byBlbnRlci4KLSAgICAgIGlmIChyb3V0ZUhhc0JlZW5EZWZpbmVkKG9yaWdpblJvdXRlLnJvdXRl
ciwgJ2FwcGxpY2F0aW9uX2xvYWRpbmcnKSkgewotICAgICAgICByb3V0ZXIuaW50ZXJtZWRpYXRl
VHJhbnNpdGlvblRvKCdhcHBsaWNhdGlvbl9sb2FkaW5nJyk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICAgIH0KLSAgICB9Ci0gIH0KLX07Ci0KLWZ1bmN0aW9uIGZpbmRDaGlsZFJvdXRlTmFtZShwYXJl
bnRSb3V0ZSwgb3JpZ2luYXRpbmdDaGlsZFJvdXRlLCBuYW1lKSB7Ci0gIHZhciByb3V0ZXIgPSBw
YXJlbnRSb3V0ZS5yb3V0ZXIsCi0gICAgICBjaGlsZE5hbWUsCi0gICAgICB0YXJnZXRDaGlsZFJv
dXRlTmFtZSA9IG9yaWdpbmF0aW5nQ2hpbGRSb3V0ZS5yb3V0ZU5hbWUuc3BsaXQoJy4nKS5wb3Ao
KSwKLSAgICAgIG5hbWVzcGFjZSA9IHBhcmVudFJvdXRlLnJvdXRlTmFtZSA9PT0gJ2FwcGxpY2F0
aW9uJyA/ICcnIDogcGFyZW50Um91dGUucm91dGVOYW1lICsgJy4nOwotCi0gIAotICAvLyBTZWNv
bmQsIHRyeSBnZW5lcmFsIGxvYWRpbmcgc3RhdGUsIGUuZy4gJ2xvYWRpbmcnCi0gIGNoaWxkTmFt
ZSA9IG5hbWVzcGFjZSArIG5hbWU7Ci0gIGlmIChyb3V0ZUhhc0JlZW5EZWZpbmVkKHJvdXRlciwg
Y2hpbGROYW1lKSkgewotICAgIHJldHVybiBjaGlsZE5hbWU7Ci0gIH0KLX0KLQotZnVuY3Rpb24g
cm91dGVIYXNCZWVuRGVmaW5lZChyb3V0ZXIsIG5hbWUpIHsKLSAgdmFyIGNvbnRhaW5lciA9IHJv
dXRlci5jb250YWluZXI7Ci0gIHJldHVybiByb3V0ZXIuaGFzUm91dGUobmFtZSkgJiYKLSAgICAg
ICAgIChjb250YWluZXIuaGFzKCd0ZW1wbGF0ZTonICsgbmFtZSkgfHwgY29udGFpbmVyLmhhcygn
cm91dGU6JyArIG5hbWUpKTsKLX0KLQotZnVuY3Rpb24gdHJpZ2dlckV2ZW50KGhhbmRsZXJJbmZv
cywgaWdub3JlRmFpbHVyZSwgYXJncykgewotICB2YXIgbmFtZSA9IGFyZ3Muc2hpZnQoKTsKLQot
ICBpZiAoIWhhbmRsZXJJbmZvcykgewotICAgIGlmIChpZ25vcmVGYWlsdXJlKSB7IHJldHVybjsg
fQotICAgIHRocm93IG5ldyBFbWJlci5FcnJvcigiQ2FuJ3QgdHJpZ2dlciBhY3Rpb24gJyIgKyBu
YW1lICsgIicgYmVjYXVzZSB5b3VyIGFwcCBoYXNuJ3QgZmluaXNoZWQgdHJhbnNpdGlvbmluZyBp
bnRvIGl0cyBmaXJzdCByb3V0ZS4gVG8gdHJpZ2dlciBhbiBhY3Rpb24gb24gZGVzdGluYXRpb24g
cm91dGVzIGR1cmluZyBhIHRyYW5zaXRpb24sIHlvdSBjYW4gY2FsbCBgLnNlbmQoKWAgb24gdGhl
IGBUcmFuc2l0aW9uYCBvYmplY3QgcGFzc2VkIHRvIHRoZSBgbW9kZWwvYmVmb3JlTW9kZWwvYWZ0
ZXJNb2RlbGAgaG9va3MuIik7Ci0gIH0KLQotICB2YXIgZXZlbnRXYXNIYW5kbGVkID0gZmFsc2U7
Ci0KLSAgZm9yICh2YXIgaSA9IGhhbmRsZXJJbmZvcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkg
ewotICAgIHZhciBoYW5kbGVySW5mbyA9IGhhbmRsZXJJbmZvc1tpXSwKLSAgICAgICAgaGFuZGxl
ciA9IGhhbmRsZXJJbmZvLmhhbmRsZXI7Ci0KLSAgICBpZiAoaGFuZGxlci5fYWN0aW9ucyAmJiBo
YW5kbGVyLl9hY3Rpb25zW25hbWVdKSB7Ci0gICAgICBpZiAoaGFuZGxlci5fYWN0aW9uc1tuYW1l
XS5hcHBseShoYW5kbGVyLCBhcmdzKSA9PT0gdHJ1ZSkgewotICAgICAgICBldmVudFdhc0hhbmRs
ZWQgPSB0cnVlOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgcmV0dXJuOwotICAgICAgfQotICAg
IH0KLSAgfQotCi0gIGlmIChkZWZhdWx0QWN0aW9uSGFuZGxlcnNbbmFtZV0pIHsKLSAgICBkZWZh
dWx0QWN0aW9uSGFuZGxlcnNbbmFtZV0uYXBwbHkobnVsbCwgYXJncyk7Ci0gICAgcmV0dXJuOwot
ICB9Ci0KLSAgaWYgKCFldmVudFdhc0hhbmRsZWQgJiYgIWlnbm9yZUZhaWx1cmUpIHsKLSAgICB0
aHJvdyBuZXcgRW1iZXIuRXJyb3IoIk5vdGhpbmcgaGFuZGxlZCB0aGUgYWN0aW9uICciICsgbmFt
ZSArICInLiBJZiB5b3UgZGlkIGhhbmRsZSB0aGUgYWN0aW9uLCB0aGlzIGVycm9yIGNhbiBiZSBj
YXVzZWQgYnkgcmV0dXJuaW5nIHRydWUgZnJvbSBhbiBhY3Rpb24gaGFuZGxlciBpbiBhIGNvbnRy
b2xsZXIsIGNhdXNpbmcgdGhlIGFjdGlvbiB0byBidWJibGUuIik7Ci0gIH0KLX0KLQotZnVuY3Rp
b24gdXBkYXRlUGF0aHMocm91dGVyKSB7Ci0gIHZhciBhcHBDb250cm9sbGVyID0gcm91dGVyLmNv
bnRhaW5lci5sb29rdXAoJ2NvbnRyb2xsZXI6YXBwbGljYXRpb24nKTsKLQotICBpZiAoIWFwcENv
bnRyb2xsZXIpIHsKLSAgICAvLyBhcHBDb250cm9sbGVyIG1pZ2h0IG5vdCBleGlzdCB3aGVuIHRv
cC1sZXZlbCBsb2FkaW5nL2Vycm9yCi0gICAgLy8gc3Vic3RhdGVzIGhhdmUgYmVlbiBlbnRlcmVk
IHNpbmNlIEFwcGxpY2F0aW9uUm91dGUgaGFzbid0Ci0gICAgLy8gYWN0dWFsbHkgYmVlbiBlbnRl
cmVkIGF0IHRoYXQgcG9pbnQuCi0gICAgcmV0dXJuOwotICB9Ci0KLSAgdmFyIGluZm9zID0gcm91
dGVyLnJvdXRlci5jdXJyZW50SGFuZGxlckluZm9zLAotICAgICAgcGF0aCA9IEVtYmVyLlJvdXRl
ci5fcm91dGVQYXRoKGluZm9zKTsKLQotICBpZiAoISgnY3VycmVudFBhdGgnIGluIGFwcENvbnRy
b2xsZXIpKSB7Ci0gICAgZGVmaW5lUHJvcGVydHkoYXBwQ29udHJvbGxlciwgJ2N1cnJlbnRQYXRo
Jyk7Ci0gIH0KLQotICBzZXQoYXBwQ29udHJvbGxlciwgJ2N1cnJlbnRQYXRoJywgcGF0aCk7Ci0K
LSAgaWYgKCEoJ2N1cnJlbnRSb3V0ZU5hbWUnIGluIGFwcENvbnRyb2xsZXIpKSB7Ci0gICAgZGVm
aW5lUHJvcGVydHkoYXBwQ29udHJvbGxlciwgJ2N1cnJlbnRSb3V0ZU5hbWUnKTsKLSAgfQotCi0g
IHNldChhcHBDb250cm9sbGVyLCAnY3VycmVudFJvdXRlTmFtZScsIGluZm9zW2luZm9zLmxlbmd0
aCAtIDFdLm5hbWUpOwotfQotCi1FbWJlci5Sb3V0ZXIucmVvcGVuQ2xhc3MoewotICByb3V0ZXI6
IG51bGwsCi0gIG1hcDogZnVuY3Rpb24oY2FsbGJhY2spIHsKLSAgICB2YXIgcm91dGVyID0gdGhp
cy5yb3V0ZXI7Ci0gICAgaWYgKCFyb3V0ZXIpIHsKLSAgICAgIHJvdXRlciA9IG5ldyBSb3V0ZXIo
KTsKLSAgICAgIHJvdXRlci5jYWxsYmFja3MgPSBbXTsKLSAgICAgIHJvdXRlci50cmlnZ2VyRXZl
bnQgPSB0cmlnZ2VyRXZlbnQ7Ci0gICAgICB0aGlzLnJlb3BlbkNsYXNzKHsgcm91dGVyOiByb3V0
ZXIgfSk7Ci0gICAgfQotCi0gICAgdmFyIGRzbCA9IEVtYmVyLlJvdXRlckRTTC5tYXAoZnVuY3Rp
b24oKSB7Ci0gICAgICB0aGlzLnJlc291cmNlKCdhcHBsaWNhdGlvbicsIHsgcGF0aDogIi8iIH0s
IGZ1bmN0aW9uKCkgewotICAgICAgICBmb3IgKHZhciBpPTA7IGkgPCByb3V0ZXIuY2FsbGJhY2tz
Lmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgcm91dGVyLmNhbGxiYWNrc1tpXS5jYWxsKHRoaXMp
OwotICAgICAgICB9Ci0gICAgICAgIGNhbGxiYWNrLmNhbGwodGhpcyk7Ci0gICAgICB9KTsKLSAg
ICB9KTsKLQotICAgIHJvdXRlci5jYWxsYmFja3MucHVzaChjYWxsYmFjayk7Ci0gICAgcm91dGVy
Lm1hcChkc2wuZ2VuZXJhdGUoKSk7Ci0gICAgcmV0dXJuIHJvdXRlcjsKLSAgfSwKLQotICBfcm91
dGVQYXRoOiBmdW5jdGlvbihoYW5kbGVySW5mb3MpIHsKLSAgICB2YXIgcGF0aCA9IFtdOwotCi0g
ICAgLy8gV2UgaGF2ZSB0byBoYW5kbGUgY29hbGVzY2luZyByZXNvdXJjZSBuYW1lcyB0aGF0Ci0g
ICAgLy8gYXJlIHByZWZpeGVkIHdpdGggdGhlaXIgcGFyZW50J3MgbmFtZXMsIGUuZy4KLSAgICAv
LyBbJ2ZvbycsICdmb28uYmFyLmJheiddID0+ICdmb28uYmFyLmJheicsIG5vdCAnZm9vLmZvby5i
YXIuYmF6JwotCi0gICAgZnVuY3Rpb24gaW50ZXJzZWN0aW9uTWF0Y2hlcyhhMSwgYTIpIHsKLSAg
ICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBhMS5sZW5ndGg7IGkgPCBsZW47ICsraSkgewotICAg
ICAgICBpZiAoYTFbaV0gIT09IGEyW2ldKSB7Ci0gICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICB9Ci0gICAgICB9Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBmb3IgKHZh
ciBpPTEsIGw9aGFuZGxlckluZm9zLmxlbmd0aDsgaTxsOyBpKyspIHsKLSAgICAgIHZhciBuYW1l
ID0gaGFuZGxlckluZm9zW2ldLm5hbWUsCi0gICAgICAgICAgbmFtZVBhcnRzID0gbmFtZS5zcGxp
dCgiLiIpLAotICAgICAgICAgIG9sZE5hbWVQYXJ0cyA9IHNsaWNlLmNhbGwocGF0aCk7Ci0KLSAg
ICAgIHdoaWxlIChvbGROYW1lUGFydHMubGVuZ3RoKSB7Ci0gICAgICAgIGlmIChpbnRlcnNlY3Rp
b25NYXRjaGVzKG9sZE5hbWVQYXJ0cywgbmFtZVBhcnRzKSkgewotICAgICAgICAgIGJyZWFrOwot
ICAgICAgICB9Ci0gICAgICAgIG9sZE5hbWVQYXJ0cy5zaGlmdCgpOwotICAgICAgfQotCi0gICAg
ICBwYXRoLnB1c2guYXBwbHkocGF0aCwgbmFtZVBhcnRzLnNsaWNlKG9sZE5hbWVQYXJ0cy5sZW5n
dGgpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gcGF0aC5qb2luKCIuIik7Ci0gIH0KLX0pOwotCi1S
b3V0ZXIuVHJhbnNpdGlvbi5wcm90b3R5cGUuc2VuZCA9IFJvdXRlci5UcmFuc2l0aW9uLnByb3Rv
dHlwZS50cmlnZ2VyOwotCi0KLQotfSkoKTsKLQotCi0KLShmdW5jdGlvbigpIHsKLS8qKgotQG1v
ZHVsZSBlbWJlcgotQHN1Ym1vZHVsZSBlbWJlci1yb3V0aW5nCi0qLwotCi12YXIgZ2V0ID0gRW1i
ZXIuZ2V0LCBzZXQgPSBFbWJlci5zZXQsCi0gICAgZ2V0UHJvcGVydGllcyA9IEVtYmVyLmdldFBy
b3BlcnRpZXMsCi0gICAgY2xhc3NpZnkgPSBFbWJlci5TdHJpbmcuY2xhc3NpZnksCi0gICAgZm10
ID0gRW1iZXIuU3RyaW5nLmZtdCwKLSAgICBhX2ZvckVhY2ggPSBFbWJlci5FbnVtZXJhYmxlVXRp
bHMuZm9yRWFjaCwKLSAgICBhX3JlcGxhY2UgPSBFbWJlci5FbnVtZXJhYmxlVXRpbHMucmVwbGFj
ZTsKLQotCi0vKioKLSAgVGhlIGBFbWJlci5Sb3V0ZWAgY2xhc3MgaXMgdXNlZCB0byBkZWZpbmUg
aW5kaXZpZHVhbCByb3V0ZXMuIFJlZmVyIHRvCi0gIHRoZSBbcm91dGluZyBndWlkZV0oaHR0cDov
L2VtYmVyanMuY29tL2d1aWRlcy9yb3V0aW5nLykgZm9yIGRvY3VtZW50YXRpb24uCi0KLSAgQGNs
YXNzIFJvdXRlCi0gIEBuYW1lc3BhY2UgRW1iZXIKLSAgQGV4dGVuZHMgRW1iZXIuT2JqZWN0Ci0g
IEB1c2VzIEVtYmVyLkFjdGlvbkhhbmRsZXIKLSovCi1FbWJlci5Sb3V0ZSA9IEVtYmVyLk9iamVj
dC5leHRlbmQoRW1iZXIuQWN0aW9uSGFuZGxlciwgewotCi0gIC8qKgotICAgIEBwcml2YXRlCi0K
LSAgICBAbWV0aG9kIGV4aXQKLSAgKi8KLSAgZXhpdDogZnVuY3Rpb24oKSB7Ci0gICAgdGhpcy5k
ZWFjdGl2YXRlKCk7Ci0gICAgdGhpcy50ZWFyZG93blZpZXdzKCk7Ci0gIH0sCi0KLSAgLyoqCi0g
ICAgQHByaXZhdGUKLQotICAgIEBtZXRob2QgZW50ZXIKLSAgKi8KLSAgZW50ZXI6IGZ1bmN0aW9u
KCkgewotICAgIHRoaXMuYWN0aXZhdGUoKTsKLSAgfSwKLQotICAvKioKLSAgICBUaGUgY29sbGVj
dGlvbiBvZiBmdW5jdGlvbnMsIGtleWVkIGJ5IG5hbWUsIGF2YWlsYWJsZSBvbiB0aGlzIHJvdXRl
IGFzCi0gICAgYWN0aW9uIHRhcmdldHMuCi0KLSAgICBUaGVzZSBmdW5jdGlvbnMgd2lsbCBiZSBp
bnZva2VkIHdoZW4gYSBtYXRjaGluZyBge3thY3Rpb259fWAgaXMgdHJpZ2dlcmVkCi0gICAgZnJv
bSB3aXRoaW4gYSB0ZW1wbGF0ZSBhbmQgdGhlIGFwcGxpY2F0aW9uJ3MgY3VycmVudCByb3V0ZSBp
cyB0aGlzIHJvdXRlLgotCi0gICAgQWN0aW9ucyBjYW4gYWxzbyBiZSBpbnZva2VkIGZyb20gb3Ro
ZXIgcGFydHMgb2YgeW91ciBhcHBsaWNhdGlvbiB2aWEgYFJvdXRlI3NlbmRgCi0gICAgb3IgYENv
bnRyb2xsZXIjc2VuZGAuCi0KLSAgICBUaGUgYGFjdGlvbnNgIGhhc2ggd2lsbCBpbmhlcml0IGFj
dGlvbiBoYW5kbGVycyBmcm9tCi0gICAgdGhlIGBhY3Rpb25zYCBoYXNoIGRlZmluZWQgb24gZXh0
ZW5kZWQgUm91dGUgcGFyZW50IGNsYXNzZXMKLSAgICBvciBtaXhpbnMgcmF0aGVyIHRoYW4ganVz
dCByZXBsYWNlIHRoZSBlbnRpcmUgaGFzaCwgZS5nLjoKLQotICAgIGBgYGpzCi0gICAgQXBwLkNh
bkRpc3BsYXlCYW5uZXIgPSBFbWJlci5NaXhpbi5jcmVhdGUoewotICAgICAgYWN0aW9uczogewot
ICAgICAgICBkaXNwbGF5QmFubmVyOiBmdW5jdGlvbihtc2cpIHsKLSAgICAgICAgICAvLyAuLi4K
LSAgICAgICAgfQotICAgICAgfQotICAgIH0pOwotCi0gICAgQXBwLldlbGNvbWVSb3V0ZSA9IEVt
YmVyLlJvdXRlLmV4dGVuZChBcHAuQ2FuRGlzcGxheUJhbm5lciwgewotICAgICAgYWN0aW9uczog
ewotICAgICAgICBwbGF5TXVzaWM6IGZ1bmN0aW9uKCkgewotICAgICAgICAgIC8vIC4uLgotICAg
ICAgICB9Ci0gICAgICB9Ci0gICAgfSk7Ci0KLSAgICAvLyBgV2VsY29tZVJvdXRlYCwgd2hlbiBh
Y3RpdmUsIHdpbGwgYmUgYWJsZSB0byByZXNwb25kCi0gICAgLy8gdG8gYm90aCBhY3Rpb25zLCBz
aW5jZSB0aGUgYWN0aW9ucyBoYXNoIGlzIG1lcmdlZCByYXRoZXIKLSAgICAvLyB0aGVuIHJlcGxh
Y2VkIHdoZW4gZXh0ZW5kaW5nIG1peGlucyAvIHBhcmVudCBjbGFzc2VzLgotICAgIHRoaXMuc2Vu
ZCgnZGlzcGxheUJhbm5lcicpOwotICAgIHRoaXMuc2VuZCgncGxheU11c2ljJyk7Ci0gICAgYGBg
Ci0KLSAgICBXaXRoaW4gYSByb3V0ZSdzIGFjdGlvbiBoYW5kbGVyLCB0aGUgdmFsdWUgb2YgdGhl
IGB0aGlzYCBjb250ZXh0Ci0gICAgaXMgdGhlIFJvdXRlIG9iamVjdDoKLQotICAgIGBgYGpzCi0g
ICAgQXBwLlNvbmdSb3V0ZSA9IEVtYmVyLlJvdXRlLmV4dGVuZCh7Ci0gICAgICBhY3Rpb25zOiB7
Ci0gICAgICAgIG15QWN0aW9uOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICB0aGlzLmNvbnRyb2xs
ZXJGb3IoInNvbmciKTsKLSAgICAgICAgICB0aGlzLnRyYW5zaXRpb25Ubygib3RoZXIucm91dGUi
KTsKLSAgICAgICAgICAuLi4KLSAgICAgICAgfQotICAgICAgfQotICAgIH0pOwotICAgIGBgYAot
Ci0gICAgSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBjYWxsIGB0aGlzLl9zdXBlcigpYCBmcm9tIHdp
dGhpbiBhbgotICAgIGFjdGlvbiBoYW5kbGVyIGlmIGl0IG92ZXJyaWRlcyBhIGhhbmRsZXIgZGVm
aW5lZCBvbiBhIHBhcmVudAotICAgIGNsYXNzIG9yIG1peGluOgotCi0gICAgVGFrZSBmb3IgZXhh
bXBsZSB0aGUgZm9sbG93aW5nIHJvdXRlczoKLQotICAgIGBgYGpzCi0gICAgQXBwLkRlYnVnUm91
dGUgPSBFbWJlci5NaXhpbi5jcmVhdGUoewotICAgICAgYWN0aW9uczogewotICAgICAgICBkZWJ1
Z1JvdXRlSW5mb3JtYXRpb246IGZ1bmN0aW9uKCkgewotICAgICAgICAgIGNvbnNvbGUuZGVidWco
InRyb2xvbG8iKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0pOwotCi0gICAgQXBwLkFubm95
aW5nRGVidWdSb3V0ZSA9IEVtYmVyLlJvdXRlLmV4dGVuZChBcHAuRGVidWdSb3V0ZSwgewotICAg
ICAgYWN0aW9uczogewotICAgICAgICBkZWJ1Z1JvdXRlSW5mb3JtYXRpb246IGZ1bmN0aW9uKCkg
ewotICAgICAgICAgIC8vIGFsc28gY2FsbCB0aGUgZGVidWdSb3V0ZUluZm9ybWF0aW9uIG9mIG1p
eGVkIGluIEFwcC5EZWJ1Z1JvdXRlCi0gICAgICAgICAgdGhpcy5fc3VwZXIoKTsKLQotICAgICAg
ICAgIC8vIHNob3cgYWRkaXRpb25hbCBhbm5veWFuY2UKLSAgICAgICAgICB3aW5kb3cuYWxlcnQo
Li4uKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0pOwotICAgIGBgYAotCi0gICAgIyMgQnVi
YmxpbmcKLQotICAgIEJ5IGRlZmF1bHQsIGFuIGFjdGlvbiB3aWxsIHN0b3AgYnViYmxpbmcgb25j
ZSBhIGhhbmRsZXIgZGVmaW5lZAotICAgIG9uIHRoZSBgYWN0aW9uc2AgaGFzaCBoYW5kbGVzIGl0
LiBUbyBjb250aW51ZSBidWJibGluZyB0aGUgYWN0aW9uLAotICAgIHlvdSBtdXN0IHJldHVybiBg
dHJ1ZWAgZnJvbSB0aGUgaGFuZGxlcjoKLQotICAgIGBgYGpzCi0gICAgQXBwLlJvdXRlci5tYXAo
ZnVuY3Rpb24oKSB7Ci0gICAgICB0aGlzLnJlc291cmNlKCJhbGJ1bSIsIGZ1bmN0aW9uKCkgewot
ICAgICAgICB0aGlzLnJvdXRlKCJzb25nIik7Ci0gICAgICB9KTsKLSAgICB9KTsKLQotICAgIEFw
cC5BbGJ1bVJvdXRlID0gRW1iZXIuUm91dGUuZXh0ZW5kKHsKLSAgICAgIGFjdGlvbnM6IHsKLSAg
ICAgICAgc3RhcnRQbGF5aW5nOiBmdW5jdGlvbigpIHsKLSAgICAgICAgfQotICAgICAgfQotICAg
IH0pOwotCi0gICAgQXBwLkFsYnVtU29uZ1JvdXRlID0gRW1iZXIuUm91dGUuZXh0ZW5kKHsKLSAg
ICAgIGFjdGlvbnM6IHsKLSAgICAgICAgc3RhcnRQbGF5aW5nOiBmdW5jdGlvbigpIHsKLSAgICAg
ICAgICAvLyAuLi4KLQotICAgICAgICAgIGlmIChhY3Rpb25TaG91bGRBbHNvQmVUcmlnZ2VyZWRP
blBhcmVudFJvdXRlKSB7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICAgIH0KLSAgICB9KTsKLSAgICBgYGAKLQotICAgICMjIEJ1aWx0LWluIGFj
dGlvbnMKLQotICAgIFRoZXJlIGFyZSBhIGZldyBidWlsdC1pbiBhY3Rpb25zIHBlcnRhaW5pbmcg
dG8gdHJhbnNpdGlvbnMgdGhhdCB5b3UKLSAgICBjYW4gdXNlIHRvIGN1c3RvbWl6ZSB0cmFuc2l0
aW9uIGJlaGF2aW9yOiBgd2lsbFRyYW5zaXRpb25gIGFuZAotICAgIGBlcnJvcmAuCi0KLSAgICAj
IyMgYHdpbGxUcmFuc2l0aW9uYAotCi0gICAgVGhlIGB3aWxsVHJhbnNpdGlvbmAgYWN0aW9uIGlz
IGZpcmVkIGF0IHRoZSBiZWdpbm5pbmcgb2YgYW55Ci0gICAgYXR0ZW1wdGVkIHRyYW5zaXRpb24g
d2l0aCBhIGBUcmFuc2l0aW9uYCBvYmplY3QgYXMgdGhlIHNvbGUKLSAgICBhcmd1bWVudC4gVGhp
cyBhY3Rpb24gY2FuIGJlIHVzZWQgZm9yIGFib3J0aW5nLCByZWRpcmVjdGluZywKLSAgICBvciBk
ZWNvcmF0aW5nIHRoZSB0cmFuc2l0aW9uIGZyb20gdGhlIGN1cnJlbnRseSBhY3RpdmUgcm91dGVz
LgotCi0gICAgQSBnb29kIGV4YW1wbGUgaXMgcHJldmVudGluZyBuYXZpZ2F0aW9uIHdoZW4gYSBm
b3JtIGlzCi0gICAgaGFsZi1maWxsZWQgb3V0OgotCi0gICAgYGBganMKLSAgICBBcHAuQ29udGFj
dEZvcm1Sb3V0ZSA9IEVtYmVyLlJvdXRlLmV4dGVuZCh7Ci0gICAgICBhY3Rpb25zOiB7Ci0gICAg
ICAgIHdpbGxUcmFuc2l0aW9uOiBmdW5jdGlvbih0cmFuc2l0aW9uKSB7Ci0gICAgICAgICAgaWYg
KHRoaXMuY29udHJvbGxlci5nZXQoJ3VzZXJIYXNFbnRlcmVkRGF0YScpKSB7Ci0gICAgICAgICAg
ICB0aGlzLmNvbnRyb2xsZXIuZGlzcGxheU5hdmlnYXRpb25Db25maXJtKCk7Ci0gICAgICAgICAg
ICB0cmFuc2l0aW9uLmFib3J0KCk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0g
ICAgfSk7Ci0gICAgYGBgCi0KLSAgICBZb3UgY2FuIGFsc28gcmVkaXJlY3QgZWxzZXdoZXJlIGJ5
IGNhbGxpbmcKLSAgICBgdGhpcy50cmFuc2l0aW9uVG8oJ2Vsc2V3aGVyZScpYCBmcm9tIHdpdGhp
biBgd2lsbFRyYW5zaXRpb25gLgotICAgIE5vdGUgdGhhdCBgd2lsbFRyYW5zaXRpb25gIHdpbGwg
bm90IGJlIGZpcmVkIGZvciB0aGUKLSAgICByZWRpcmVjdGluZyBgdHJhbnNpdGlvblRvYCwgc2lu
Y2UgYHdpbGxUcmFuc2l0aW9uYCBkb2Vzbid0Ci0gICAgZmlyZSB3aGVuIHRoZXJlIGlzIGFscmVh
ZHkgYSB0cmFuc2l0aW9uIHVuZGVyd2F5LiBJZiB5b3Ugd2FudAotICAgIHN1YnNlcXVlbnQgYHdp
bGxUcmFuc2l0aW9uYCBhY3Rpb25zIHRvIGZpcmUgZm9yIHRoZSByZWRpcmVjdGluZwotICAgIHRy
YW5zaXRpb24sIHlvdSBtdXN0IGZpcnN0IGV4cGxpY2l0bHkgY2FsbAotICAgIGB0cmFuc2l0aW9u
LmFib3J0KClgLgotCi0gICAgIyMjIGBlcnJvcmAKLQotICAgIFdoZW4gYXR0ZW1wdGluZyB0byB0
cmFuc2l0aW9uIGludG8gYSByb3V0ZSwgYW55IG9mIHRoZSBob29rcwotICAgIG1heSByZXR1cm4g
YSBwcm9taXNlIHRoYXQgcmVqZWN0cywgYXQgd2hpY2ggcG9pbnQgYW4gYGVycm9yYAotICAgIGFj
dGlvbiB3aWxsIGJlIGZpcmVkIG9uIHRoZSBwYXJ0aWFsbHktZW50ZXJlZCByb3V0ZXMsIGFsbG93
aW5nCi0gICAgZm9yIHBlci1yb3V0ZSBlcnJvciBoYW5kbGluZyBsb2dpYywgb3Igc2hhcmVkIGVy
cm9yIGhhbmRsaW5nCi0gICAgbG9naWMgZGVmaW5lZCBvbiBhIHBhcmVudCByb3V0ZS4KLQotICAg
IEhlcmUgaXMgYW4gZXhhbXBsZSBvZiBhbiBlcnJvciBoYW5kbGVyIHRoYXQgd2lsbCBiZSBpbnZv
a2VkCi0gICAgZm9yIHJlamVjdGVkIHByb21pc2VzIGZyb20gdGhlIHZhcmlvdXMgaG9va3Mgb24g
dGhlIHJvdXRlLAotICAgIGFzIHdlbGwgYXMgYW55IHVuaGFuZGxlZCBlcnJvcnMgZnJvbSBjaGls
ZCByb3V0ZXM6Ci0KLSAgICBgYGBqcwotICAgIEFwcC5BZG1pblJvdXRlID0gRW1iZXIuUm91dGUu
ZXh0ZW5kKHsKLSAgICAgIGJlZm9yZU1vZGVsOiBmdW5jdGlvbigpIHsKLSAgICAgICAgcmV0dXJu
IEVtYmVyLlJTVlAucmVqZWN0KCJiYWQgdGhpbmdzISIpOwotICAgICAgfSwKLQotICAgICAgYWN0
aW9uczogewotICAgICAgICBlcnJvcjogZnVuY3Rpb24oZXJyb3IsIHRyYW5zaXRpb24pIHsKLSAg
ICAgICAgICAvLyBBc3N1bWluZyB3ZSBnb3QgaGVyZSBkdWUgdG8gdGhlIGVycm9yIGluIGBiZWZv
cmVNb2RlbGAsCi0gICAgICAgICAgLy8gd2UgY2FuIGV4cGVjdCB0aGF0IGVycm9yID09PSAiYmFk
IHRoaW5ncyEiLAotICAgICAgICAgIC8vIGJ1dCBhIHByb21pc2UgbW9kZWwgcmVqZWN0aW5nIHdv
dWxkIGFsc28KLSAgICAgICAgICAvLyBjYWxsIHRoaXMgaG9vaywgYXMgd291bGQgYW55IGVycm9y
cyBlbmNvdW50ZXJlZAotICAgICAgICAgIC8vIGluIGBhZnRlck1vZGVsYC4KLQotICAgICAgICAg
IC8vIFRoZSBgZXJyb3JgIGhvb2sgaXMgYWxzbyBwcm92aWRlZCB0aGUgZmFpbGVkCi0gICAgICAg
ICAgLy8gYHRyYW5zaXRpb25gLCB3aGljaCBjYW4gYmUgc3RvcmVkIGFuZCBsYXRlcgotICAgICAg
ICAgIC8vIGAucmV0cnkoKWBkIGlmIGRlc2lyZWQuCi0KLSAgICAgICAgICB0aGlzLnRyYW5zaXRp
b25UbygnbG9naW4nKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0pOwotICAgIGBgYAotCi0g
ICAgYGVycm9yYCBhY3Rpb25zIHRoYXQgYnViYmxlIHVwIGFsbCB0aGUgd2F5IHRvIGBBcHBsaWNh
dGlvblJvdXRlYAotICAgIHdpbGwgZmlyZSBhIGRlZmF1bHQgZXJyb3IgaGFuZGxlciB0aGF0IGxv
Z3MgdGhlIGVycm9yLiBZb3UgY2FuCi0gICAgc3BlY2lmeSB5b3VyIG93biBnbG9iYWwgZGVmYXVs
dCBlcnJvciBoYW5kbGVyIGJ5IG92ZXJyaWRpbmcgdGhlCi0gICAgYGVycm9yYCBoYW5kbGVyIG9u
IGBBcHBsaWNhdGlvblJvdXRlYDoKLQotICAgIGBgYGpzCi0gICAgQXBwLkFwcGxpY2F0aW9uUm91
dGUgPSBFbWJlci5Sb3V0ZS5leHRlbmQoewotICAgICAgYWN0aW9uczogewotICAgICAgICBlcnJv
cjogZnVuY3Rpb24oZXJyb3IsIHRyYW5zaXRpb24pIHsKLSAgICAgICAgICB0aGlzLmNvbnRyb2xs
ZXJGb3IoJ2Jhbm5lcicpLmRpc3BsYXlFcnJvcihlcnJvci5tZXNzYWdlKTsKLSAgICAgICAgfQot
ICAgICAgfQotICAgIH0pOwotICAgIGBgYAotCi0gICAgQHByb3BlcnR5IGFjdGlvbnMKLSAgICBA
dHlwZSBIYXNoCi0gICAgQGRlZmF1bHQgbnVsbAotICAqLwotICBfYWN0aW9uczogewotICAgIGZp
bmFsaXplUXVlcnlQYXJhbUNoYW5nZTogZnVuY3Rpb24ocGFyYW1zLCBmaW5hbFBhcmFtcykgewot
ICAgICAgICAgIH0KLSAgfSwKLQotICAvKioKLSAgICBAZGVwcmVjYXRlZAotCi0gICAgUGxlYXNl
IHVzZSBgYWN0aW9uc2AgaW5zdGVhZC4KLSAgICBAbWV0aG9kIGV2ZW50cwotICAqLwotICBldmVu
dHM6IG51bGwsCi0KLSAgbWVyZ2VkUHJvcGVydGllczogWydldmVudHMnXSwKLQotICAvKioKLSAg
ICBUaGlzIGhvb2sgaXMgZXhlY3V0ZWQgd2hlbiB0aGUgcm91dGVyIGNvbXBsZXRlbHkgZXhpdHMg
dGhpcyByb3V0ZS4gSXQgaXMKLSAgICBub3QgZXhlY3V0ZWQgd2hlbiB0aGUgbW9kZWwgZm9yIHRo
ZSByb3V0ZSBjaGFuZ2VzLgotCi0gICAgQG1ldGhvZCBkZWFjdGl2YXRlCi0gICovCi0gIGRlYWN0
aXZhdGU6IEVtYmVyLkssCi0KLSAgLyoqCi0gICAgVGhpcyBob29rIGlzIGV4ZWN1dGVkIHdoZW4g
dGhlIHJvdXRlciBlbnRlcnMgdGhlIHJvdXRlLiBJdCBpcyBub3QgZXhlY3V0ZWQKLSAgICB3aGVu
IHRoZSBtb2RlbCBmb3IgdGhlIHJvdXRlIGNoYW5nZXMuCi0KLSAgICBAbWV0aG9kIGFjdGl2YXRl
Ci0gICovCi0gIGFjdGl2YXRlOiBFbWJlci5LLAotCi0gIC8qKgotICAgIFRyYW5zaXRpb24gaW50
byBhbm90aGVyIHJvdXRlLiBPcHRpb25hbGx5IHN1cHBseSBtb2RlbChzKSBmb3IgdGhlCi0gICAg
cm91dGUgaW4gcXVlc3Rpb24uIElmIG11bHRpcGxlIG1vZGVscyBhcmUgc3VwcGxpZWQgdGhleSB3
aWxsIGJlIGFwcGxpZWQKLSAgICBsYXN0IHRvIGZpcnN0IHJlY3Vyc2l2ZWx5IHVwIHRoZSByZXNv
dXJjZSB0cmVlIChzZWUgTXVsdGlwbGUgTW9kZWxzIEV4YW1wbGUKLSAgICBiZWxvdykuIFRoZSBt
b2RlbChzKSB3aWxsIGJlIHNlcmlhbGl6ZWQgaW50byB0aGUgVVJMIHVzaW5nIHRoZSBhcHByb3By
aWF0ZQotICAgIHJvdXRlJ3MgYHNlcmlhbGl6ZWAgaG9vay4gU2VlIGFsc28gJ3JlcGxhY2VXaXRo
Jy4KLQotICAgIFNpbXBsZSBUcmFuc2l0aW9uIEV4YW1wbGUKLQotICAgIGBgYGphdmFzY3JpcHQK
LSAgICBBcHAuUm91dGVyLm1hcChmdW5jdGlvbigpIHsKLSAgICAgIHRoaXMucm91dGUoImluZGV4
Iik7Ci0gICAgICB0aGlzLnJvdXRlKCJzZWNyZXQiKTsKLSAgICAgIHRoaXMucm91dGUoImZvdXJP
aEZvdXIiLCB7IHBhdGg6ICIqOiJ9KTsKLSAgICB9KTsKLQotICAgIEFwcC5JbmRleFJvdXRlID0g
RW1iZXIuUm91dGUuZXh0ZW5kKHsKLSAgICAgIGFjdGlvbnM6IHsKLSAgICAgICAgbW92ZVRvU2Vj
cmV0OiBmdW5jdGlvbihjb250ZXh0KXsKLSAgICAgICAgICBpZiAoYXV0aG9yaXplZCgpKXsKLSAg
ICAgICAgICAgIHRoaXMudHJhbnNpdGlvblRvKCdzZWNyZXQnLCBjb250ZXh0KTsKLSAgICAgICAg
ICB9Ci0gICAgICAgICAgICB0aGlzLnRyYW5zaXRpb25UbygnZm91ck9oRm91cicpOwotICAgICAg
ICB9Ci0gICAgICB9Ci0gICAgfSk7Ci0gICAgYGBgCi0KLSAgIFRyYW5zaXRpb24gdG8gYSBuZXN0
ZWQgcm91dGUKLQotICAgYGBgamF2YXNjcmlwdAotICAgQXBwLlJvdXRlci5tYXAoZnVuY3Rpb24o
KSB7Ci0gICAgIHRoaXMucmVzb3VyY2UoJ2FydGljbGVzJywgeyBwYXRoOiAnL2FydGljbGVzJyB9
LCBmdW5jdGlvbigpIHsKLSAgICAgICB0aGlzLnJvdXRlKCduZXcnKTsKLSAgICAgfSk7Ci0gICB9
KTsKLQotICAgQXBwLkluZGV4Um91dGUgPSBFbWJlci5Sb3V0ZS5leHRlbmQoewotICAgICBhY3Rp
b25zOiB7Ci0gICAgICAgdHJhbnNpdGlvblRvTmV3QXJ0aWNsZTogZnVuY3Rpb24oKSB7Ci0gICAg
ICAgICB0aGlzLnRyYW5zaXRpb25UbygnYXJ0aWNsZXMubmV3Jyk7Ci0gICAgICAgfQotICAgICB9
Ci0gICB9KTsKLSAgIGBgYAotCi0gICAgTXVsdGlwbGUgTW9kZWxzIEV4YW1wbGUKLQotICAgIGBg
YGphdmFzY3JpcHQKLSAgICBBcHAuUm91dGVyLm1hcChmdW5jdGlvbigpIHsKLSAgICAgIHRoaXMu
cm91dGUoImluZGV4Iik7Ci0gICAgICB0aGlzLnJlc291cmNlKCdicmVha2Zhc3QnLCB7cGF0aDon
OmJyZWFrZmFzdElkJ30sIGZ1bmN0aW9uKCl7Ci0gICAgICAgIHRoaXMucmVzb3VyY2UoJ2NlcmVh
bCcsIHtwYXRoOiAnOmNlcmVhbElkJ30pOwotICAgICAgfSk7Ci0gICAgfSk7Ci0KLSAgICBBcHAu
SW5kZXhSb3V0ZSA9IEVtYmVyLlJvdXRlLmV4dGVuZCh7Ci0gICAgICBhY3Rpb25zOiB7Ci0gICAg
ICAgIG1vdmVUb0Nob2NvbGF0ZUNlcmVhbDogZnVuY3Rpb24oKXsKLSAgICAgICAgICB2YXIgY2Vy
ZWFsID0geyBjZXJlYWxJZDogIkNob2NvbGF0ZVl1bW1pbmVzcyJ9LAotICAgICAgICAgICAgICBi
cmVha2Zhc3QgPSB7YnJlYWtmYXN0SWQ6ICJDZXJlYWxBbmRNaWxrIn07Ci0KLSAgICAgICAgICB0
aGlzLnRyYW5zaXRpb25UbygnY2VyZWFsJywgYnJlYWtmYXN0LCBjZXJlYWwpOwotICAgICAgICB9
Ci0gICAgICB9Ci0gICAgfSk7Ci0KLSAgICBAbWV0aG9kIHRyYW5zaXRpb25UbwotICAgIEBwYXJh
bSB7U3RyaW5nfSBuYW1lIHRoZSBuYW1lIG9mIHRoZSByb3V0ZQotICAgIEBwYXJhbSB7Li4uT2Jq
ZWN0fSBtb2RlbHMgdGhlIG1vZGVsKHMpIHRvIGJlIHVzZWQgd2hpbGUgdHJhbnNpdGlvbmluZwot
ICAgIHRvIHRoZSByb3V0ZS4KLSAgKi8KLSAgdHJhbnNpdGlvblRvOiBmdW5jdGlvbihuYW1lLCBj
b250ZXh0KSB7Ci0gICAgdmFyIHJvdXRlciA9IHRoaXMucm91dGVyOwotICAgIHJldHVybiByb3V0
ZXIudHJhbnNpdGlvblRvLmFwcGx5KHJvdXRlciwgYXJndW1lbnRzKTsKLSAgfSwKLQotICAvKioK
LSAgICBQZXJmb3JtIGEgc3luY2hyb25vdXMgdHJhbnNpdGlvbiBpbnRvIGFub3RoZXIgcm91dGUg
d2l0aCBvdXQgYXR0ZW1wdGluZwotICAgIHRvIHJlc29sdmUgcHJvbWlzZXMsIHVwZGF0ZSB0aGUg
VVJMLCBvciBhYm9ydCBhbnkgY3VycmVudGx5IGFjdGl2ZQotICAgIGFzeW5jaHJvbm91cyB0cmFu
c2l0aW9ucyAoaS5lLiByZWd1bGFyIHRyYW5zaXRpb25zIGNhdXNlZCBieQotICAgIGB0cmFuc2l0
aW9uVG9gIG9yIFVSTCBjaGFuZ2VzKS4KLQotICAgIFRoaXMgbWV0aG9kIGlzIGhhbmR5IGZvciBw
ZXJmb3JtaW5nIGludGVybWVkaWF0ZSB0cmFuc2l0aW9ucyBvbiB0aGUKLSAgICB3YXkgdG8gYSBm
aW5hbCBkZXN0aW5hdGlvbiByb3V0ZSwgYW5kIGlzIGNhbGxlZCBpbnRlcm5hbGx5IGJ5IHRoZQot
ICAgIGRlZmF1bHQgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBgZXJyb3JgIGFuZCBgbG9hZGluZ2Ag
aGFuZGxlcnMuCi0KLSAgICBAbWV0aG9kIGludGVybWVkaWF0ZVRyYW5zaXRpb25UbwotICAgIEBw
YXJhbSB7U3RyaW5nfSBuYW1lIHRoZSBuYW1lIG9mIHRoZSByb3V0ZQotICAgIEBwYXJhbSB7Li4u
T2JqZWN0fSBtb2RlbHMgdGhlIG1vZGVsKHMpIHRvIGJlIHVzZWQgd2hpbGUgdHJhbnNpdGlvbmlu
ZwotICAgIHRvIHRoZSByb3V0ZS4KLSAgICovCi0gIGludGVybWVkaWF0ZVRyYW5zaXRpb25Ubzog
ZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHJvdXRlciA9IHRoaXMucm91dGVyOwotICAgIHJvdXRlci5p
bnRlcm1lZGlhdGVUcmFuc2l0aW9uVG8uYXBwbHkocm91dGVyLCBhcmd1bWVudHMpOwotICB9LAot
Ci0gIC8qKgotICAgIFRyYW5zaXRpb24gaW50byBhbm90aGVyIHJvdXRlIHdoaWxlIHJlcGxhY2lu
ZyB0aGUgY3VycmVudCBVUkwsIGlmIHBvc3NpYmxlLgotICAgIFRoaXMgd2lsbCByZXBsYWNlIHRo
ZSBjdXJyZW50IGhpc3RvcnkgZW50cnkgaW5zdGVhZCBvZiBhZGRpbmcgYSBuZXcgb25lLgotICAg
IEJlc2lkZSB0aGF0LCBpdCBpcyBpZGVudGljYWwgdG8gYHRyYW5zaXRpb25Ub2AgaW4gYWxsIG90
aGVyIHJlc3BlY3RzLiBTZWUKLSAgICAndHJhbnNpdGlvblRvJyBmb3IgYWRkaXRpb25hbCBpbmZv
cm1hdGlvbiByZWdhcmRpbmcgbXVsdGlwbGUgbW9kZWxzLgotCi0gICAgRXhhbXBsZQotCi0gICAg
YGBgamF2YXNjcmlwdAotICAgIEFwcC5Sb3V0ZXIubWFwKGZ1bmN0aW9uKCkgewotICAgICAgdGhp
cy5yb3V0ZSgiaW5kZXgiKTsKLSAgICAgIHRoaXMucm91dGUoInNlY3JldCIpOwotICAgIH0pOwot
Ci0gICAgQXBwLlNlY3JldFJvdXRlID0gRW1iZXIuUm91dGUuZXh0ZW5kKHsKLSAgICAgIGFmdGVy
TW9kZWw6IGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAoIWF1dGhvcml6ZWQoKSl7Ci0gICAgICAg
ICAgdGhpcy5yZXBsYWNlV2l0aCgnaW5kZXgnKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0p
OwotICAgIGBgYAotCi0gICAgQG1ldGhvZCByZXBsYWNlV2l0aAotICAgIEBwYXJhbSB7U3RyaW5n
fSBuYW1lIHRoZSBuYW1lIG9mIHRoZSByb3V0ZQotICAgIEBwYXJhbSB7Li4uT2JqZWN0fSBtb2Rl
bHMgdGhlIG1vZGVsKHMpIHRvIGJlIHVzZWQgd2hpbGUgdHJhbnNpdGlvbmluZwotICAgIHRvIHRo
ZSByb3V0ZS4KLSAgKi8KLSAgcmVwbGFjZVdpdGg6IGZ1bmN0aW9uKCkgewotICAgIHZhciByb3V0
ZXIgPSB0aGlzLnJvdXRlcjsKLSAgICByZXR1cm4gcm91dGVyLnJlcGxhY2VXaXRoLmFwcGx5KHJv
dXRlciwgYXJndW1lbnRzKTsKLSAgfSwKLQotICAvKioKLSAgICBTZW5kcyBhbiBhY3Rpb24gdG8g
dGhlIHJvdXRlciwgd2hpY2ggd2lsbCBkZWxlZ2F0ZSBpdCB0byB0aGUgY3VycmVudGx5Ci0gICAg
YWN0aXZlIHJvdXRlIGhpZXJhcmNoeSBwZXIgdGhlIGJ1YmJsaW5nIHJ1bGVzIGV4cGxhaW5lZCB1
bmRlciBgYWN0aW9uc2AuCi0KLSAgICBFeGFtcGxlCi0KLSAgICBgYGBqYXZhc2NyaXB0Ci0gICAg
QXBwLlJvdXRlci5tYXAoZnVuY3Rpb24oKSB7Ci0gICAgICB0aGlzLnJvdXRlKCJpbmRleCIpOwot
ICAgIH0pOwotCi0gICAgQXBwLkFwcGxpY2F0aW9uUm91dGUgPSBFbWJlci5Sb3V0ZS5leHRlbmQo
ewotICAgICAgYWN0aW9uczogewotICAgICAgICB0cmFjazogZnVuY3Rpb24oYXJnKSB7Ci0gICAg
ICAgICAgY29uc29sZS5sb2coYXJnLCAnd2FzIGNsaWNrZWQnKTsKLSAgICAgICAgfQotICAgICAg
fQotICAgIH0pOwotCi0gICAgQXBwLkluZGV4Um91dGUgPSBFbWJlci5Sb3V0ZS5leHRlbmQoewot
ICAgICAgYWN0aW9uczogewotICAgICAgICB0cmFja0lmRGVidWc6IGZ1bmN0aW9uKGFyZykgewot
ICAgICAgICAgIGlmIChkZWJ1ZykgewotICAgICAgICAgICAgdGhpcy5zZW5kKCd0cmFjaycsIGFy
Zyk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfSk7Ci0gICAgYGBgCi0K
LSAgICBAbWV0aG9kIHNlbmQKLSAgICBAcGFyYW0ge1N0cmluZ30gbmFtZSB0aGUgbmFtZSBvZiB0
aGUgYWN0aW9uIHRvIHRyaWdnZXIKLSAgICBAcGFyYW0gey4uLip9IGFyZ3MKLSAgKi8KLSAgc2Vu
ZDogZnVuY3Rpb24oKSB7Ci0gICAgcmV0dXJuIHRoaXMucm91dGVyLnNlbmQuYXBwbHkodGhpcy5y
b3V0ZXIsIGFyZ3VtZW50cyk7Ci0gIH0sCi0KLSAgLyoqCi0gICAgVGhpcyBob29rIGlzIHRoZSBl
bnRyeSBwb2ludCBmb3Igcm91dGVyLmpzCi0KLSAgICBAcHJpdmF0ZQotICAgIEBtZXRob2Qgc2V0
dXAKLSAgKi8KLSAgc2V0dXA6IGZ1bmN0aW9uKGNvbnRleHQsIHF1ZXJ5UGFyYW1zKSB7Ci0gICAg
dmFyIGNvbnRyb2xsZXJOYW1lID0gdGhpcy5jb250cm9sbGVyTmFtZSB8fCB0aGlzLnJvdXRlTmFt
ZSwKLSAgICAgICAgY29udHJvbGxlciA9IHRoaXMuY29udHJvbGxlckZvcihjb250cm9sbGVyTmFt
ZSwgdHJ1ZSk7Ci0gICAgaWYgKCFjb250cm9sbGVyKSB7Ci0gICAgICBjb250cm9sbGVyID0gIHRo
aXMuZ2VuZXJhdGVDb250cm9sbGVyKGNvbnRyb2xsZXJOYW1lLCBjb250ZXh0KTsKLSAgICB9Ci0K
LSAgICAvLyBBc3NpZ24gdGhlIHJvdXRlJ3MgY29udHJvbGxlciBzbyB0aGF0IGl0IGNhbiBtb3Jl
IGVhc2lseSBiZQotICAgIC8vIHJlZmVyZW5jZWQgaW4gYWN0aW9uIGhhbmRsZXJzCi0gICAgdGhp
cy5jb250cm9sbGVyID0gY29udHJvbGxlcjsKLQotICAgIHZhciBhcmdzID0gW2NvbnRyb2xsZXIs
IGNvbnRleHRdOwotCi0gICAgCi0gICAgaWYgKHRoaXMuc2V0dXBDb250cm9sbGVycykgewotICAg
ICAgRW1iZXIuZGVwcmVjYXRlKCJFbWJlci5Sb3V0ZS5zZXR1cENvbnRyb2xsZXJzIGlzIGRlcHJl
Y2F0ZWQuIFBsZWFzZSB1c2UgRW1iZXIuUm91dGUuc2V0dXBDb250cm9sbGVyKGNvbnRyb2xsZXIs
IG1vZGVsKSBpbnN0ZWFkLiIpOwotICAgICAgdGhpcy5zZXR1cENvbnRyb2xsZXJzKGNvbnRyb2xs
ZXIsIGNvbnRleHQpOwotICAgIH0gZWxzZSB7Ci0gICAgICB0aGlzLnNldHVwQ29udHJvbGxlci5h
cHBseSh0aGlzLCBhcmdzKTsKLSAgICB9Ci0KLSAgICBpZiAodGhpcy5yZW5kZXJUZW1wbGF0ZXMp
IHsKLSAgICAgIEVtYmVyLmRlcHJlY2F0ZSgiRW1iZXIuUm91dGUucmVuZGVyVGVtcGxhdGVzIGlz
IGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgRW1iZXIuUm91dGUucmVuZGVyVGVtcGxhdGUoY29udHJv
bGxlciwgbW9kZWwpIGluc3RlYWQuIik7Ci0gICAgICB0aGlzLnJlbmRlclRlbXBsYXRlcyhjb250
ZXh0KTsKLSAgICB9IGVsc2UgewotICAgICAgdGhpcy5yZW5kZXJUZW1wbGF0ZS5hcHBseSh0aGlz
LCBhcmdzKTsKLSAgICB9Ci0gIH0sCi0KLSAgLyoqCi0gICAgQSBob29rIHlvdSBjYW4gaW1wbGVt
ZW50IHRvIG9wdGlvbmFsbHkgcmVkaXJlY3QgdG8gYW5vdGhlciByb3V0ZS4KLQotICAgIElmIHlv
dSBjYWxsIGB0aGlzLnRyYW5zaXRpb25Ub2AgZnJvbSBpbnNpZGUgb2YgdGhpcyBob29rLCB0aGlz
IHJvdXRlCi0gICAgd2lsbCBub3QgYmUgZW50ZXJlZCBpbiBmYXZvciBvZiB0aGUgb3RoZXIgaG9v
ay4KLQotICAgIE5vdGUgdGhhdCB0aGlzIGhvb2sgaXMgY2FsbGVkIGJ5IHRoZSBkZWZhdWx0IGlt
cGxlbWVudGF0aW9uIG9mCi0gICAgYGFmdGVyTW9kZWxgLCBzbyBpZiB5b3Ugb3ZlcnJpZGUgYGFm
dGVyTW9kZWxgLCB5b3UgbXVzdCBlaXRoZXIKLSAgICBleHBsaWNpdGx5IGNhbGwgYHJlZGlyZWN0
YCBvciBqdXN0IHB1dCB5b3VyIHJlZGlyZWN0aW5nCi0gICAgYHRoaXMudHJhbnNpdGlvblRvKClg
IGNhbGwgd2l0aGluIGBhZnRlck1vZGVsYC4KLQotICAgIEBtZXRob2QgcmVkaXJlY3QKLSAgICBA
cGFyYW0ge09iamVjdH0gbW9kZWwgdGhlIG1vZGVsIGZvciB0aGlzIHJvdXRlCi0gICovCi0gIHJl
ZGlyZWN0OiBFbWJlci5LLAotCi0gIC8qKgotICAgIFRoaXMgaG9vayBpcyB0aGUgZmlyc3Qgb2Yg
dGhlIHJvdXRlIGVudHJ5IHZhbGlkYXRpb24gaG9va3MKLSAgICBjYWxsZWQgd2hlbiBhbiBhdHRl
bXB0IGlzIG1hZGUgdG8gdHJhbnNpdGlvbiBpbnRvIGEgcm91dGUKLSAgICBvciBvbmUgb2YgaXRz
IGNoaWxkcmVuLiBJdCBpcyBjYWxsZWQgYmVmb3JlIGBtb2RlbGAgYW5kCi0gICAgYGFmdGVyTW9k
ZWxgLCBhbmQgaXMgYXBwcm9wcmlhdGUgZm9yIGNhc2VzIHdoZW46Ci0KLSAgICAxKSBBIGRlY2lz
aW9uIGNhbiBiZSBtYWRlIHRvIHJlZGlyZWN0IGVsc2V3aGVyZSB3aXRob3V0Ci0gICAgICAgbmVl
ZGluZyB0byByZXNvbHZlIHRoZSBtb2RlbCBmaXJzdC4KLSAgICAyKSBBbnkgYXN5bmMgb3BlcmF0
aW9ucyBuZWVkIHRvIG9jY3VyIGZpcnN0IGJlZm9yZSB0aGUKLSAgICAgICBtb2RlbCBpcyBhdHRl
bXB0ZWQgdG8gYmUgcmVzb2x2ZWQuCi0KLSAgICBUaGlzIGhvb2sgaXMgcHJvdmlkZWQgdGhlIGN1
cnJlbnQgYHRyYW5zaXRpb25gIGF0dGVtcHQKLSAgICBhcyBhIHBhcmFtZXRlciwgd2hpY2ggY2Fu
IGJlIHVzZWQgdG8gYC5hYm9ydCgpYCB0aGUgdHJhbnNpdGlvbiwKLSAgICBzYXZlIGl0IGZvciBh
IGxhdGVyIGAucmV0cnkoKWAsIG9yIHJldHJpZXZlIHZhbHVlcyBzZXQKLSAgICBvbiBpdCBmcm9t
IGEgcHJldmlvdXMgaG9vay4gWW91IGNhbiBhbHNvIGp1c3QgY2FsbAotICAgIGB0aGlzLnRyYW5z
aXRpb25Ub2AgdG8gYW5vdGhlciByb3V0ZSB0byBpbXBsaWNpdGx5Ci0gICAgYWJvcnQgdGhlIGB0
cmFuc2l0aW9uYC4KLQotICAgIFlvdSBjYW4gcmV0dXJuIGEgcHJvbWlzZSBmcm9tIHRoaXMgaG9v
ayB0byBwYXVzZSB0aGUKLSAgICB0cmFuc2l0aW9uIHVudGlsIHRoZSBwcm9taXNlIHJlc29sdmVz
IChvciByZWplY3RzKS4gVGhpcyBjb3VsZAotICAgIGJlIHVzZWZ1bCwgZm9yIGluc3RhbmNlLCBm
b3IgcmV0cmlldmluZyBhc3luYyBjb2RlIGZyb20KLSAgICB0aGUgc2VydmVyIHRoYXQgaXMgcmVx
dWlyZWQgdG8gZW50ZXIgYSByb3V0ZS4KLQotICAgIGBgYGpzCi0gICAgQXBwLlBvc3RSb3V0ZSA9
IEVtYmVyLlJvdXRlLmV4dGVuZCh7Ci0gICAgICBiZWZvcmVNb2RlbDogZnVuY3Rpb24odHJhbnNp
dGlvbikgewotICAgICAgICBpZiAoIUFwcC5Qb3N0KSB7Ci0gICAgICAgICAgcmV0dXJuIEVtYmVy
LiQuZ2V0U2NyaXB0KCcvbW9kZWxzL3Bvc3QuanMnKTsKLSAgICAgICAgfQotICAgICAgfQotICAg
IH0pOwotICAgIGBgYAotCi0gICAgSWYgYEFwcC5Qb3N0YCBkb2Vzbid0IGV4aXN0IGluIHRoZSBh
Ym92ZSBleGFtcGxlLAotICAgIGBiZWZvcmVNb2RlbGAgd2lsbCB1c2UgalF1ZXJ5J3MgYGdldFNj
cmlwdGAsIHdoaWNoCi0gICAgcmV0dXJucyBhIHByb21pc2UgdGhhdCByZXNvbHZlcyBhZnRlciB0
aGUgc2VydmVyIGhhcwotICAgIHN1Y2Nlc3NmdWxseSByZXRyaWV2ZWQgYW5kIGV4ZWN1dGVkIHRo
ZSBjb2RlIGZyb20gdGhlCi0gICAgc2VydmVyLiBOb3RlIHRoYXQgaWYgYW4gZXJyb3Igd2VyZSB0
byBvY2N1ciwgaXQgd291bGQKLSAgICBiZSBwYXNzZWQgdG8gdGhlIGBlcnJvcmAgaG9vayBvbiBg
RW1iZXIuUm91dGVgLCBidXQKLSAgICBpdCdzIGFsc28gcG9zc2libGUgdG8gaGFuZGxlIGVycm9y
cyBzcGVjaWZpYyB0bwotICAgIGBiZWZvcmVNb2RlbGAgcmlnaHQgZnJvbSB3aXRoaW4gdGhlIGhv
b2sgKHRvIGRpc3Rpbmd1aXNoCi0gICAgZnJvbSB0aGUgc2hhcmVkIGVycm9yIGhhbmRsaW5nIGJl
aGF2aW9yIG9mIHRoZSBgZXJyb3JgCi0gICAgaG9vayk6Ci0KLSAgICBgYGBqcwotICAgIEFwcC5Q
b3N0Um91dGUgPSBFbWJlci5Sb3V0ZS5leHRlbmQoewotICAgICAgYmVmb3JlTW9kZWw6IGZ1bmN0
aW9uKHRyYW5zaXRpb24pIHsKLSAgICAgICAgaWYgKCFBcHAuUG9zdCkgewotICAgICAgICAgIHZh
ciBzZWxmID0gdGhpczsKLSAgICAgICAgICByZXR1cm4gRW1iZXIuJC5nZXRTY3JpcHQoJ3Bvc3Qu
anMnKS50aGVuKG51bGwsIGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIHNlbGYudHJhbnNpdGlv
blRvKCdoZWxwJyk7Ci0KLSAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB0aGUgYWJvdmUgdHJhbnNp
dGlvblRvIHdpbGwgaW1wbGljaXRseQotICAgICAgICAgICAgLy8gaGFsdCB0aGUgdHJhbnNpdGlv
bi4gSWYgeW91IHdlcmUgdG8gcmV0dXJuCi0gICAgICAgICAgICAvLyBub3RoaW5nIGZyb20gdGhp
cyBwcm9taXNlIHJlamVjdCBoYW5kbGVyLAotICAgICAgICAgICAgLy8gYWNjb3JkaW5nIHRvIHBy
b21pc2Ugc2VtYW50aWNzLCB0aGF0IHdvdWxkCi0gICAgICAgICAgICAvLyBjb252ZXJ0IHRoZSBy
ZWplY3QgaW50byBhIHJlc29sdmUgYW5kIHRoZQotICAgICAgICAgICAgLy8gdHJhbnNpdGlvbiB3
b3VsZCBjb250aW51ZS4gVG8gcHJvcGFnYXRlIHRoZQotICAgICAgICAgICAgLy8gZXJyb3Igc28g
dGhhdCBpdCdkIGJlIGhhbmRsZWQgYnkgdGhlIGBlcnJvcmAKLSAgICAgICAgICAgIC8vIGhvb2ss
IHlvdSB3b3VsZCBoYXZlIHRvIGVpdGhlcgotICAgICAgICAgICAgcmV0dXJuIEVtYmVyLlJTVlAu
cmVqZWN0KGUpOwotICAgICAgICAgICAgLy8gb3IKLSAgICAgICAgICAgIHRocm93IGU7Ci0gICAg
ICAgICAgfSk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9KTsKLSAgICBgYGAKLQotICAgIEBt
ZXRob2QgYmVmb3JlTW9kZWwKLSAgICBAcGFyYW0ge1RyYW5zaXRpb259IHRyYW5zaXRpb24KLSAg
ICBAcGFyYW0ge09iamVjdH0gcXVlcnlQYXJhbXMgdGhlIGFjdGl2ZSBxdWVyeSBwYXJhbXMgZm9y
IHRoaXMgcm91dGUKLSAgICBAcmV0dXJuIHtQcm9taXNlfSBpZiB0aGUgdmFsdWUgcmV0dXJuZWQg
ZnJvbSB0aGlzIGhvb2sgaXMKLSAgICAgIGEgcHJvbWlzZSwgdGhlIHRyYW5zaXRpb24gd2lsbCBw
YXVzZSB1bnRpbCB0aGUgdHJhbnNpdGlvbgotICAgICAgcmVzb2x2ZXMuIE90aGVyd2lzZSwgbm9u
LXByb21pc2UgcmV0dXJuIHZhbHVlcyBhcmUgbm90Ci0gICAgICB1dGlsaXplZCBpbiBhbnkgd2F5
LgotICAqLwotICBiZWZvcmVNb2RlbDogRW1iZXIuSywKLQotICAvKioKLSAgICBUaGlzIGhvb2sg
aXMgY2FsbGVkIGFmdGVyIHRoaXMgcm91dGUncyBtb2RlbCBoYXMgcmVzb2x2ZWQuCi0gICAgSXQg
Zm9sbG93cyBpZGVudGljYWwgYXN5bmMvcHJvbWlzZSBzZW1hbnRpY3MgdG8gYGJlZm9yZU1vZGVs
YAotICAgIGJ1dCBpcyBwcm92aWRlZCB0aGUgcm91dGUncyByZXNvbHZlZCBtb2RlbCBpbiBhZGRp
dGlvbiB0bwotICAgIHRoZSBgdHJhbnNpdGlvbmAsIGFuZCBpcyB0aGVyZWZvcmUgc3VpdGVkIHRv
IHBlcmZvcm1pbmcKLSAgICBsb2dpYyB0aGF0IGNhbiBvbmx5IHRha2UgcGxhY2UgYWZ0ZXIgdGhl
IG1vZGVsIGhhcyBhbHJlYWR5Ci0gICAgcmVzb2x2ZWQuCi0KLSAgICBgYGBqcwotICAgIEFwcC5Q
b3N0c1JvdXRlID0gRW1iZXIuUm91dGUuZXh0ZW5kKHsKLSAgICAgIGFmdGVyTW9kZWw6IGZ1bmN0
aW9uKHBvc3RzLCB0cmFuc2l0aW9uKSB7Ci0gICAgICAgIGlmIChwb3N0cy5sZW5ndGggPT09IDEp
IHsKLSAgICAgICAgICB0aGlzLnRyYW5zaXRpb25UbygncG9zdC5zaG93JywgcG9zdHNbMF0pOwot
ICAgICAgICB9Ci0gICAgICB9Ci0gICAgfSk7Ci0gICAgYGBgCi0KLSAgICBSZWZlciB0byBkb2N1
bWVudGF0aW9uIGZvciBgYmVmb3JlTW9kZWxgIGZvciBhIGRlc2NyaXB0aW9uCi0gICAgb2YgdHJh
bnNpdGlvbi1wYXVzaW5nIHNlbWFudGljcyB3aGVuIGEgcHJvbWlzZSBpcyByZXR1cm5lZAotICAg
IGZyb20gdGhpcyBob29rLgotCi0gICAgQG1ldGhvZCBhZnRlck1vZGVsCi0gICAgQHBhcmFtIHtP
YmplY3R9IHJlc29sdmVkTW9kZWwgdGhlIHZhbHVlIHJldHVybmVkIGZyb20gYG1vZGVsYCwKLSAg
ICAgIG9yIGl0cyByZXNvbHZlZCB2YWx1ZSBpZiBpdCB3YXMgYSBwcm9taXNlCi0gICAgQHBhcmFt
IHtUcmFuc2l0aW9ufSB0cmFuc2l0aW9uCi0gICAgQHBhcmFtIHtPYmplY3R9IHF1ZXJ5UGFyYW1z
IHRoZSBhY3RpdmUgcXVlcnkgcGFyYW1zIGZvciB0aGlzIGhhbmRsZXIKLSAgICBAcmV0dXJuIHtQ
cm9taXNlfSBpZiB0aGUgdmFsdWUgcmV0dXJuZWQgZnJvbSB0aGlzIGhvb2sgaXMKLSAgICAgIGEg
cHJvbWlzZSwgdGhlIHRyYW5zaXRpb24gd2lsbCBwYXVzZSB1bnRpbCB0aGUgdHJhbnNpdGlvbgot
ICAgICAgcmVzb2x2ZXMuIE90aGVyd2lzZSwgbm9uLXByb21pc2UgcmV0dXJuIHZhbHVlcyBhcmUg
bm90Ci0gICAgICB1dGlsaXplZCBpbiBhbnkgd2F5LgotICAgKi8KLSAgYWZ0ZXJNb2RlbDogZnVu
Y3Rpb24ocmVzb2x2ZWRNb2RlbCwgdHJhbnNpdGlvbiwgcXVlcnlQYXJhbXMpIHsKLSAgICB0aGlz
LnJlZGlyZWN0KHJlc29sdmVkTW9kZWwsIHRyYW5zaXRpb24pOwotICB9LAotCi0KLSAgLyoqCi0g
ICAgQ2FsbGVkIHdoZW4gdGhlIGNvbnRleHQgaXMgY2hhbmdlZCBieSByb3V0ZXIuanMuCi0KLSAg
ICBAcHJpdmF0ZQotICAgIEBtZXRob2QgY29udGV4dERpZENoYW5nZQotICAqLwotICBjb250ZXh0
RGlkQ2hhbmdlOiBmdW5jdGlvbigpIHsKLSAgICB0aGlzLmN1cnJlbnRNb2RlbCA9IHRoaXMuY29u
dGV4dDsKLSAgfSwKLQotICAvKioKLSAgICBBIGhvb2sgeW91IGNhbiBpbXBsZW1lbnQgdG8gY29u
dmVydCB0aGUgVVJMIGludG8gdGhlIG1vZGVsIGZvcgotICAgIHRoaXMgcm91dGUuCi0KLSAgICBg
YGBqcwotICAgIEFwcC5Sb3V0ZXIubWFwKGZ1bmN0aW9uKCkgewotICAgICAgdGhpcy5yZXNvdXJj
ZSgncG9zdCcsIHtwYXRoOiAnL3Bvc3RzLzpwb3N0X2lkJ30pOwotICAgIH0pOwotICAgIGBgYAot
Ci0gICAgVGhlIG1vZGVsIGZvciB0aGUgYHBvc3RgIHJvdXRlIGlzIGBBcHAuUG9zdC5maW5kKHBh
cmFtcy5wb3N0X2lkKWAuCi0KLSAgICBCeSBkZWZhdWx0LCBpZiB5b3VyIHJvdXRlIGhhcyBhIGR5
bmFtaWMgc2VnbWVudCBlbmRpbmcgaW4gYF9pZGA6Ci0KLSAgICAqIFRoZSBtb2RlbCBjbGFzcyBp
cyBkZXRlcm1pbmVkIGZyb20gdGhlIHNlZ21lbnQgKGBwb3N0X2lkYCdzCi0gICAgICBjbGFzcyBp
cyBgQXBwLlBvc3RgKQotICAgICogVGhlIGZpbmQgbWV0aG9kIGlzIGNhbGxlZCBvbiB0aGUgbW9k
ZWwgY2xhc3Mgd2l0aCB0aGUgdmFsdWUgb2YKLSAgICAgIHRoZSBkeW5hbWljIHNlZ21lbnQuCi0K
LSAgICBOb3RlIHRoYXQgZm9yIHJvdXRlcyB3aXRoIGR5bmFtaWMgc2VnbWVudHMsIHRoaXMgaG9v
ayBpcyBvbmx5Ci0gICAgZXhlY3V0ZWQgd2hlbiBlbnRlcmVkIHZpYSB0aGUgVVJMLiBJZiB0aGUg
cm91dGUgaXMgZW50ZXJlZAotICAgIHRocm91Z2ggYSB0cmFuc2l0aW9uIChlLmcuIHdoZW4gdXNp
bmcgdGhlIGBsaW5rLXRvYCBIYW5kbGViYXJzCi0gICAgaGVscGVyKSwgdGhlbiBhIG1vZGVsIGNv
bnRleHQgaXMgYWxyZWFkeSBwcm92aWRlZCBhbmQgdGhpcyBob29rCi0gICAgaXMgbm90IGNhbGxl
ZC4gUm91dGVzIHdpdGhvdXQgZHluYW1pYyBzZWdtZW50cyB3aWxsIGFsd2F5cwotICAgIGV4ZWN1
dGUgdGhlIG1vZGVsIGhvb2suCi0KLSAgICBUaGlzIGhvb2sgZm9sbG93cyB0aGUgYXN5bmNocm9u
b3VzL3Byb21pc2Ugc2VtYW50aWNzCi0gICAgZGVzY3JpYmVkIGluIHRoZSBkb2N1bWVudGF0aW9u
IGZvciBgYmVmb3JlTW9kZWxgLiBJbiBwYXJ0aWN1bGFyLAotICAgIGlmIGEgcHJvbWlzZSByZXR1
cm5lZCBmcm9tIGBtb2RlbGAgZmFpbHMsIHRoZSBlcnJvciB3aWxsIGJlCi0gICAgaGFuZGxlZCBi
eSB0aGUgYGVycm9yYCBob29rIG9uIGBFbWJlci5Sb3V0ZWAuCi0KLSAgICBFeGFtcGxlCi0KLSAg
ICBgYGBqcwotICAgIEFwcC5Qb3N0Um91dGUgPSBFbWJlci5Sb3V0ZS5leHRlbmQoewotICAgICAg
bW9kZWw6IGZ1bmN0aW9uKHBhcmFtcykgewotICAgICAgICByZXR1cm4gQXBwLlBvc3QuZmluZChw
YXJhbXMucG9zdF9pZCk7Ci0gICAgICB9Ci0gICAgfSk7Ci0gICAgYGBgCi0KLSAgICBAbWV0aG9k
IG1vZGVsCi0gICAgQHBhcmFtIHtPYmplY3R9IHBhcmFtcyB0aGUgcGFyYW1ldGVycyBleHRyYWN0
ZWQgZnJvbSB0aGUgVVJMCi0gICAgQHBhcmFtIHtUcmFuc2l0aW9ufSB0cmFuc2l0aW9uCi0gICAg
QHBhcmFtIHtPYmplY3R9IHF1ZXJ5UGFyYW1zIHRoZSBxdWVyeSBwYXJhbXMgZm9yIHRoaXMgcm91
dGUKLSAgICBAcmV0dXJuIHtPYmplY3R8UHJvbWlzZX0gdGhlIG1vZGVsIGZvciB0aGlzIHJvdXRl
LiBJZgotICAgICAgYSBwcm9taXNlIGlzIHJldHVybmVkLCB0aGUgdHJhbnNpdGlvbiB3aWxsIHBh
dXNlIHVudGlsCi0gICAgICB0aGUgcHJvbWlzZSByZXNvbHZlcywgYW5kIHRoZSByZXNvbHZlZCB2
YWx1ZSBvZiB0aGUgcHJvbWlzZQotICAgICAgd2lsbCBiZSB1c2VkIGFzIHRoZSBtb2RlbCBmb3Ig
dGhpcyByb3V0ZS4KLSAgKi8KLSAgbW9kZWw6IGZ1bmN0aW9uKHBhcmFtcywgdHJhbnNpdGlvbikg
ewotICAgIHZhciBtYXRjaCwgbmFtZSwgc2F3UGFyYW1zLCB2YWx1ZTsKLQotICAgIGZvciAodmFy
IHByb3AgaW4gcGFyYW1zKSB7Ci0gICAgICBpZiAobWF0Y2ggPSBwcm9wLm1hdGNoKC9eKC4qKV9p
ZCQvKSkgewotICAgICAgICBuYW1lID0gbWF0Y2hbMV07Ci0gICAgICAgIHZhbHVlID0gcGFyYW1z
W3Byb3BdOwotICAgICAgfQotICAgICAgc2F3UGFyYW1zID0gdHJ1ZTsKLSAgICB9Ci0KLSAgICBp
ZiAoIW5hbWUgJiYgc2F3UGFyYW1zKSB7IHJldHVybiBwYXJhbXM7IH0KLSAgICBlbHNlIGlmICgh
bmFtZSkgeyByZXR1cm47IH0KLQotICAgIHJldHVybiB0aGlzLmZpbmRNb2RlbChuYW1lLCB2YWx1
ZSk7Ci0gIH0sCi0KLSAgLyoqCi0KLSAgICBAbWV0aG9kIGZpbmRNb2RlbAotICAgIEBwYXJhbSB7
U3RyaW5nfSB0eXBlIHRoZSBtb2RlbCB0eXBlCi0gICAgQHBhcmFtIHtPYmplY3R9IHZhbHVlIHRo
ZSB2YWx1ZSBwYXNzZWQgdG8gZmluZAotICAqLwotICBmaW5kTW9kZWw6IGZ1bmN0aW9uKCl7Ci0g
ICAgdmFyIHN0b3JlID0gZ2V0KHRoaXMsICdzdG9yZScpOwotICAgIHJldHVybiBzdG9yZS5maW5k
LmFwcGx5KHN0b3JlLCBhcmd1bWVudHMpOwotICB9LAotCi0gIC8qKgotICAgIFN0b3JlIHByb3Bl
cnR5IHByb3ZpZGVzIGEgaG9vayBmb3IgZGF0YSBwZXJzaXN0ZW5jZSBsaWJyYXJpZXMgdG8gaW5q
ZWN0IHRoZW1zZWx2ZXMuCi0KLSAgICBCeSBkZWZhdWx0LCB0aGlzIHN0b3JlIHByb3BlcnR5IHBy
b3ZpZGVzIHRoZSBleGFjdCBzYW1lIGZ1bmN0aW9uYWxpdHkgcHJldmlvdXNseQotICAgIGluIHRo
ZSBtb2RlbCBob29rLgotCi0gICAgQ3VycmVudGx5LCB0aGUgcmVxdWlyZWQgaW50ZXJmYWNlIGlz
OgotCi0gICAgYHN0b3JlLmZpbmQobW9kZWxOYW1lLCBmaW5kQXJndW1lbnRzKWAKLQotICAgIEBt
ZXRob2Qgc3RvcmUKLSAgICBAcGFyYW0ge09iamVjdH0gc3RvcmUKLSAgKi8KLSAgc3RvcmU6IEVt
YmVyLmNvbXB1dGVkKGZ1bmN0aW9uKCl7Ci0gICAgdmFyIGNvbnRhaW5lciA9IHRoaXMuY29udGFp
bmVyOwotICAgIHZhciByb3V0ZU5hbWUgPSB0aGlzLnJvdXRlTmFtZTsKLSAgICB2YXIgbmFtZXNw
YWNlID0gZ2V0KHRoaXMsICdyb3V0ZXIubmFtZXNwYWNlJyk7Ci0KLSAgICByZXR1cm4gewotICAg
ICAgZmluZDogZnVuY3Rpb24obmFtZSwgdmFsdWUpIHsKLSAgICAgICAgdmFyIG1vZGVsQ2xhc3Mg
PSBjb250YWluZXIubG9va3VwRmFjdG9yeSgnbW9kZWw6JyArIG5hbWUpOwotCi0gICAgICAgIEVt
YmVyLmFzc2VydCgiWW91IHVzZWQgdGhlIGR5bmFtaWMgc2VnbWVudCAiICsgbmFtZSArICJfaWQg
aW4geW91ciByb3V0ZSAiICsKLSAgICAgICAgICAgICAgICAgICAgIHJvdXRlTmFtZSArICIsIGJ1
dCAiICsgbmFtZXNwYWNlICsgIi4iICsgY2xhc3NpZnkobmFtZSkgKwotICAgICAgICAgICAgICAg
ICAgICAgIiBkaWQgbm90IGV4aXN0IGFuZCB5b3UgZGlkIG5vdCBvdmVycmlkZSB5b3VyIHJvdXRl
J3MgYG1vZGVsYCAiICsKLSAgICAgICAgICAgICAgICAgICAgICJob29rLiIsIG1vZGVsQ2xhc3Mp
OwotCi0gICAgICAgIHJldHVybiBtb2RlbENsYXNzLmZpbmQodmFsdWUpOwotICAgICAgfQotICAg
IH07Ci0gIH0pLAotCi0gIC8qKgotICAgIEEgaG9vayB5b3UgY2FuIGltcGxlbWVudCB0byBjb252
ZXJ0IHRoZSByb3V0ZSdzIG1vZGVsIGludG8gcGFyYW1ldGVycwotICAgIGZvciB0aGUgVVJMLgot
Ci0gICAgYGBganMKLSAgICBBcHAuUm91dGVyLm1hcChmdW5jdGlvbigpIHsKLSAgICAgIHRoaXMu
cmVzb3VyY2UoJ3Bvc3QnLCB7cGF0aDogJy9wb3N0cy86cG9zdF9pZCd9KTsKLSAgICB9KTsKLQot
ICAgIEFwcC5Qb3N0Um91dGUgPSBFbWJlci5Sb3V0ZS5leHRlbmQoewotICAgICAgbW9kZWw6IGZ1
bmN0aW9uKHBhcmFtcykgewotICAgICAgICAvLyB0aGUgc2VydmVyIHJldHVybnMgYHsgaWQ6IDEy
IH1gCi0gICAgICAgIHJldHVybiBqUXVlcnkuZ2V0SlNPTigiL3Bvc3RzLyIgKyBwYXJhbXMucG9z
dF9pZCk7Ci0gICAgICB9LAotCi0gICAgICBzZXJpYWxpemU6IGZ1bmN0aW9uKG1vZGVsKSB7Ci0g
ICAgICAgIC8vIHRoaXMgd2lsbCBtYWtlIHRoZSBVUkwgYC9wb3N0cy8xMmAKLSAgICAgICAgcmV0
dXJuIHsgcG9zdF9pZDogbW9kZWwuaWQgfTsKLSAgICAgIH0KLSAgICB9KTsKLSAgICBgYGAKLQot
ICAgIFRoZSBkZWZhdWx0IGBzZXJpYWxpemVgIG1ldGhvZCB3aWxsIGluc2VydCB0aGUgbW9kZWwn
cyBgaWRgIGludG8gdGhlCi0gICAgcm91dGUncyBkeW5hbWljIHNlZ21lbnQgKGluIHRoaXMgY2Fz
ZSwgYDpwb3N0X2lkYCkgaWYgdGhlIHNlZ21lbnQgY29udGFpbnMgJ19pZCcuCi0gICAgSWYgdGhl
IHJvdXRlIGhhcyBtdWx0aXBsZSBkeW5hbWljIHNlZ21lbnRzIG9yIGRvZXMgbm90IGNvbnRhaW4g
J19pZCcsIGBzZXJpYWxpemVgCi0gICAgd2lsbCByZXR1cm4gYEVtYmVyLmdldFByb3BlcnRpZXMo
bW9kZWwsIHBhcmFtcylgCi0KLSAgICBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiBgdHJhbnNp
dGlvblRvYCBpcyBjYWxsZWQgd2l0aCBhIGNvbnRleHQKLSAgICBpbiBvcmRlciB0byBwb3B1bGF0
ZSB0aGUgVVJMLgotCi0gICAgQG1ldGhvZCBzZXJpYWxpemUKLSAgICBAcGFyYW0ge09iamVjdH0g
bW9kZWwgdGhlIHJvdXRlJ3MgbW9kZWwKLSAgICBAcGFyYW0ge0FycmF5fSBwYXJhbXMgYW4gQXJy
YXkgb2YgcGFyYW1ldGVyIG5hbWVzIGZvciB0aGUgY3VycmVudAotICAgICAgcm91dGUgKGluIHRo
ZSBleGFtcGxlLCBgWydwb3N0X2lkJ11gLgotICAgIEByZXR1cm4ge09iamVjdH0gdGhlIHNlcmlh
bGl6ZWQgcGFyYW1ldGVycwotICAqLwotICBzZXJpYWxpemU6IGZ1bmN0aW9uKG1vZGVsLCBwYXJh
bXMpIHsKLSAgICBpZiAocGFyYW1zLmxlbmd0aCA8IDEpIHsgcmV0dXJuOyB9Ci0gICAgaWYgKCFt
b2RlbCkgeyByZXR1cm47IH0KLQotICAgIHZhciBuYW1lID0gcGFyYW1zWzBdLCBvYmplY3QgPSB7
fTsKLQotICAgIGlmICgvX2lkJC8udGVzdChuYW1lKSAmJiBwYXJhbXMubGVuZ3RoID09PSAxKSB7
Ci0gICAgICBvYmplY3RbbmFtZV0gPSBnZXQobW9kZWwsICJpZCIpOwotICAgIH0gZWxzZSB7Ci0g
ICAgICBvYmplY3QgPSBnZXRQcm9wZXJ0aWVzKG1vZGVsLCBwYXJhbXMpOwotICAgIH0KLQotICAg
IHJldHVybiBvYmplY3Q7Ci0gIH0sCi0KLSAgLyoqCi0gICAgQSBob29rIHlvdSBjYW4gdXNlIHRv
IHNldHVwIHRoZSBjb250cm9sbGVyIGZvciB0aGUgY3VycmVudCByb3V0ZS4KLQotICAgIFRoaXMg
bWV0aG9kIGlzIGNhbGxlZCB3aXRoIHRoZSBjb250cm9sbGVyIGZvciB0aGUgY3VycmVudCByb3V0
ZSBhbmQgdGhlCi0gICAgbW9kZWwgc3VwcGxpZWQgYnkgdGhlIGBtb2RlbGAgaG9vay4KLQotICAg
IEJ5IGRlZmF1bHQsIHRoZSBgc2V0dXBDb250cm9sbGVyYCBob29rIHNldHMgdGhlIGBjb250ZW50
YCBwcm9wZXJ0eSBvZgotICAgIHRoZSBjb250cm9sbGVyIHRvIHRoZSBgbW9kZWxgLgotCi0gICAg
VGhpcyBtZWFucyB0aGF0IHlvdXIgdGVtcGxhdGUgd2lsbCBnZXQgYSBwcm94eSBmb3IgdGhlIG1v
ZGVsIGFzIGl0cwotICAgIGNvbnRleHQsIGFuZCB5b3UgY2FuIGFjdCBhcyB0aG91Z2ggdGhlIG1v
ZGVsIGl0c2VsZiB3YXMgdGhlIGNvbnRleHQuCi0KLSAgICBUaGUgcHJvdmlkZWQgY29udHJvbGxl
ciB3aWxsIGJlIG9uZSByZXNvbHZlZCBiYXNlZCBvbiB0aGUgbmFtZQotICAgIG9mIHRoaXMgcm91
dGUuCi0KLSAgICBJZiBubyBleHBsaWNpdCBjb250cm9sbGVyIGlzIGRlZmluZWQsIEVtYmVyIHdp
bGwgYXV0b21hdGljYWxseSBjcmVhdGUKLSAgICBhbiBhcHByb3ByaWF0ZSBjb250cm9sbGVyIGZv
ciB0aGUgbW9kZWwuCi0KLSAgICAqIGlmIHRoZSBtb2RlbCBpcyBhbiBgRW1iZXIuQXJyYXlgIChp
bmNsdWRpbmcgcmVjb3JkIGFycmF5cyBmcm9tIEVtYmVyCi0gICAgICBEYXRhKSwgdGhlIGNvbnRy
b2xsZXIgaXMgYW4gYEVtYmVyLkFycmF5Q29udHJvbGxlcmAuCi0gICAgKiBvdGhlcndpc2UsIHRo
ZSBjb250cm9sbGVyIGlzIGFuIGBFbWJlci5PYmplY3RDb250cm9sbGVyYC4KLQotICAgIEFzIGFu
IGV4YW1wbGUsIGNvbnNpZGVyIHRoZSByb3V0ZXI6Ci0KLSAgICBgYGBqcwotICAgIEFwcC5Sb3V0
ZXIubWFwKGZ1bmN0aW9uKCkgewotICAgICAgdGhpcy5yZXNvdXJjZSgncG9zdCcsIHtwYXRoOiAn
L3Bvc3RzLzpwb3N0X2lkJ30pOwotICAgIH0pOwotICAgIGBgYAotCi0gICAgRm9yIHRoZSBgcG9z
dGAgcm91dGUsIGEgY29udHJvbGxlciBuYW1lZCBgQXBwLlBvc3RDb250cm9sbGVyYCB3b3VsZAot
ICAgIGJlIHVzZWQgaWYgaXQgaXMgZGVmaW5lZC4gSWYgaXQgaXMgbm90IGRlZmluZWQsIGFuIGBF
bWJlci5PYmplY3RDb250cm9sbGVyYAotICAgIGluc3RhbmNlIHdvdWxkIGJlIHVzZWQuCi0KLSAg
ICBFeGFtcGxlCi0KLSAgICBgYGBqcwotICAgIEFwcC5Qb3N0Um91dGUgPSBFbWJlci5Sb3V0ZS5l
eHRlbmQoewotICAgICAgc2V0dXBDb250cm9sbGVyOiBmdW5jdGlvbihjb250cm9sbGVyLCBtb2Rl
bCkgewotICAgICAgICBjb250cm9sbGVyLnNldCgnbW9kZWwnLCBtb2RlbCk7Ci0gICAgICB9Ci0g
ICAgfSk7Ci0gICAgYGBgCi0KLSAgICBAbWV0aG9kIHNldHVwQ29udHJvbGxlcgotICAgIEBwYXJh
bSB7Q29udHJvbGxlcn0gY29udHJvbGxlciBpbnN0YW5jZQotICAgIEBwYXJhbSB7T2JqZWN0fSBt
b2RlbAotICAqLwotICBzZXR1cENvbnRyb2xsZXI6IGZ1bmN0aW9uKGNvbnRyb2xsZXIsIGNvbnRl
eHQpIHsKLSAgICBpZiAoY29udHJvbGxlciAmJiAoY29udGV4dCAhPT0gdW5kZWZpbmVkKSkgewot
ICAgICAgc2V0KGNvbnRyb2xsZXIsICdtb2RlbCcsIGNvbnRleHQpOwotICAgIH0KLSAgfSwKLQot
ICAvKioKLSAgICBSZXR1cm5zIHRoZSBjb250cm9sbGVyIGZvciBhIHBhcnRpY3VsYXIgcm91dGUg
b3IgbmFtZS4KLQotICAgIFRoZSBjb250cm9sbGVyIGluc3RhbmNlIG11c3QgYWxyZWFkeSBoYXZl
IGJlZW4gY3JlYXRlZCwgZWl0aGVyIHRocm91Z2ggZW50ZXJpbmcgdGhlCi0gICAgYXNzb2NpYXRl
ZCByb3V0ZSBvciB1c2luZyBgZ2VuZXJhdGVDb250cm9sbGVyYC4KLQotICAgIGBgYGpzCi0gICAg
QXBwLlBvc3RSb3V0ZSA9IEVtYmVyLlJvdXRlLmV4dGVuZCh7Ci0gICAgICBzZXR1cENvbnRyb2xs
ZXI6IGZ1bmN0aW9uKGNvbnRyb2xsZXIsIHBvc3QpIHsKLSAgICAgICAgdGhpcy5fc3VwZXIoY29u
dHJvbGxlciwgcG9zdCk7Ci0gICAgICAgIHRoaXMuY29udHJvbGxlckZvcigncG9zdHMnKS5zZXQo
J2N1cnJlbnRQb3N0JywgcG9zdCk7Ci0gICAgICB9Ci0gICAgfSk7Ci0gICAgYGBgCi0KLSAgICBA
bWV0aG9kIGNvbnRyb2xsZXJGb3IKLSAgICBAcGFyYW0ge1N0cmluZ30gbmFtZSB0aGUgbmFtZSBv
ZiB0aGUgcm91dGUgb3IgY29udHJvbGxlcgotICAgIEByZXR1cm4ge0VtYmVyLkNvbnRyb2xsZXJ9
Ci0gICovCi0gIGNvbnRyb2xsZXJGb3I6IGZ1bmN0aW9uKG5hbWUsIF9za2lwQXNzZXJ0KSB7Ci0g
ICAgdmFyIGNvbnRhaW5lciA9IHRoaXMuY29udGFpbmVyLAotICAgICAgICByb3V0ZSA9IGNvbnRh
aW5lci5sb29rdXAoJ3JvdXRlOicrbmFtZSksCi0gICAgICAgIGNvbnRyb2xsZXI7Ci0KLSAgICBp
ZiAocm91dGUgJiYgcm91dGUuY29udHJvbGxlck5hbWUpIHsKLSAgICAgIG5hbWUgPSByb3V0ZS5j
b250cm9sbGVyTmFtZTsKLSAgICB9Ci0KLSAgICBjb250cm9sbGVyID0gY29udGFpbmVyLmxvb2t1
cCgnY29udHJvbGxlcjonICsgbmFtZSk7Ci0KLSAgICAvLyBOT1RFOiBXZSdyZSBzcGVjaWZpY2Fs
bHkgY2hlY2tpbmcgdGhhdCBza2lwQXNzZXJ0IGlzIHRydWUsIGJlY2F1c2UgYWNjb3JkaW5nCi0g
ICAgLy8gICB0byB0aGUgb2xkIEFQSSB0aGUgc2Vjb25kIHBhcmFtZXRlciB3YXMgbW9kZWwuIFdl
IGRvIG5vdCB3YW50IHBlb3BsZSB3aG8KLSAgICAvLyAgIHBhc3NlZCBhIG1vZGVsIHRvIHNraXAg
dGhlIGFzc2VydGlvbi4KLSAgICBFbWJlci5hc3NlcnQoIlRoZSBjb250cm9sbGVyIG5hbWVkICci
K25hbWUrIicgY291bGQgbm90IGJlIGZvdW5kLiBNYWtlIHN1cmUgIiArCi0gICAgICAgICAgICAg
ICAgICJ0aGF0IHRoaXMgcm91dGUgZXhpc3RzIGFuZCBoYXMgYWxyZWFkeSBiZWVuIGVudGVyZWQg
YXQgbGVhc3QgIiArCi0gICAgICAgICAgICAgICAgICJvbmNlLiBJZiB5b3UgYXJlIGFjY2Vzc2lu
ZyBhIGNvbnRyb2xsZXIgbm90IGFzc29jaWF0ZWQgd2l0aCBhICIgKwotICAgICAgICAgICAgICAg
ICAicm91dGUsIG1ha2Ugc3VyZSB0aGUgY29udHJvbGxlciBjbGFzcyBpcyBleHBsaWNpdGx5IGRl
ZmluZWQuIiwKLSAgICAgICAgICAgICAgICAgY29udHJvbGxlciB8fCBfc2tpcEFzc2VydCA9PT0g
dHJ1ZSk7Ci0KLSAgICByZXR1cm4gY29udHJvbGxlcjsKLSAgfSwKLQotICAvKioKLSAgICBHZW5l
cmF0ZXMgYSBjb250cm9sbGVyIGZvciBhIHJvdXRlLgotCi0gICAgSWYgdGhlIG9wdGlvbmFsIG1v
ZGVsIGlzIHBhc3NlZCB0aGVuIHRoZSBjb250cm9sbGVyIHR5cGUgaXMgZGV0ZXJtaW5lZCBhdXRv
bWF0aWNhbGx5LAotICAgIGUuZy4sIGFuIEFycmF5Q29udHJvbGxlciBmb3IgYXJyYXlzLgotCi0g
ICAgRXhhbXBsZQotCi0gICAgYGBganMKLSAgICBBcHAuUG9zdFJvdXRlID0gRW1iZXIuUm91dGUu
ZXh0ZW5kKHsKLSAgICAgIHNldHVwQ29udHJvbGxlcjogZnVuY3Rpb24oY29udHJvbGxlciwgcG9z
dCkgewotICAgICAgICB0aGlzLl9zdXBlcihjb250cm9sbGVyLCBwb3N0KTsKLSAgICAgICAgdGhp
cy5nZW5lcmF0ZUNvbnRyb2xsZXIoJ3Bvc3RzJywgcG9zdCk7Ci0gICAgICB9Ci0gICAgfSk7Ci0g
ICAgYGBgCi0KLSAgICBAbWV0aG9kIGdlbmVyYXRlQ29udHJvbGxlcgotICAgIEBwYXJhbSB7U3Ry
aW5nfSBuYW1lIHRoZSBuYW1lIG9mIHRoZSBjb250cm9sbGVyCi0gICAgQHBhcmFtIHtPYmplY3R9
IG1vZGVsIHRoZSBtb2RlbCB0byBpbmZlciB0aGUgdHlwZSBvZiB0aGUgY29udHJvbGxlciAob3B0
aW9uYWwpCi0gICovCi0gIGdlbmVyYXRlQ29udHJvbGxlcjogZnVuY3Rpb24obmFtZSwgbW9kZWwp
IHsKLSAgICB2YXIgY29udGFpbmVyID0gdGhpcy5jb250YWluZXI7Ci0KLSAgICBtb2RlbCA9IG1v
ZGVsIHx8IHRoaXMubW9kZWxGb3IobmFtZSk7Ci0KLSAgICByZXR1cm4gRW1iZXIuZ2VuZXJhdGVD
b250cm9sbGVyKGNvbnRhaW5lciwgbmFtZSwgbW9kZWwpOwotICB9LAotCi0gIC8qKgotICAgIFJl
dHVybnMgdGhlIG1vZGVsIG9mIGEgcGFyZW50IChvciBhbnkgYW5jZXN0b3IpIHJvdXRlCi0gICAg
aW4gYSByb3V0ZSBoaWVyYXJjaHkuICBEdXJpbmcgYSB0cmFuc2l0aW9uLCBhbGwgcm91dGVzCi0g
ICAgbXVzdCByZXNvbHZlIGEgbW9kZWwgb2JqZWN0LCBhbmQgaWYgYSByb3V0ZQotICAgIG5lZWRz
IGFjY2VzcyB0byBhIHBhcmVudCByb3V0ZSdzIG1vZGVsIGluIG9yZGVyIHRvCi0gICAgcmVzb2x2
ZSBhIG1vZGVsIChvciBqdXN0IHJldXNlIHRoZSBtb2RlbCBmcm9tIGEgcGFyZW50KSwKLSAgICBp
dCBjYW4gY2FsbCBgdGhpcy5tb2RlbEZvcih0aGVOYW1lT2ZQYXJlbnRSb3V0ZSlgIHRvCi0gICAg
cmV0cmlldmUgaXQuCi0KLSAgICBFeGFtcGxlCi0KLSAgICBgYGBqcwotICAgIEFwcC5Sb3V0ZXIu
bWFwKGZ1bmN0aW9uKCkgewotICAgICAgICB0aGlzLnJlc291cmNlKCdwb3N0JywgeyBwYXRoOiAn
L3Bvc3QvOnBvc3RfaWQnIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgdGhpcy5yZXNvdXJj
ZSgnY29tbWVudHMnKTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci0KLSAgICBBcHAuQ29tbWVudHNS
b3V0ZSA9IEVtYmVyLlJvdXRlLmV4dGVuZCh7Ci0gICAgICAgIGFmdGVyTW9kZWw6IGZ1bmN0aW9u
KCkgewotICAgICAgICAgICAgdGhpcy5zZXQoJ3Bvc3QnLCB0aGlzLm1vZGVsRm9yKCdwb3N0Jykp
OwotICAgICAgICB9Ci0gICAgfSk7Ci0gICAgYGBgCi0KLSAgICBAbWV0aG9kIG1vZGVsRm9yCi0g
ICAgQHBhcmFtIHtTdHJpbmd9IG5hbWUgdGhlIG5hbWUgb2YgdGhlIHJvdXRlCi0gICAgQHJldHVy
biB7T2JqZWN0fSB0aGUgbW9kZWwgb2JqZWN0Ci0gICovCi0gIG1vZGVsRm9yOiBmdW5jdGlvbihu
YW1lKSB7Ci0KLSAgICB2YXIgcm91dGUgPSB0aGlzLmNvbnRhaW5lci5sb29rdXAoJ3JvdXRlOicg
KyBuYW1lKSwKLSAgICAgICAgdHJhbnNpdGlvbiA9IHRoaXMucm91dGVyLnJvdXRlci5hY3RpdmVU
cmFuc2l0aW9uOwotCi0gICAgLy8gSWYgd2UgYXJlIG1pZC10cmFuc2l0aW9uLCB3ZSB3YW50IHRv
IHRyeSBhbmQgbG9vayB1cAotICAgIC8vIHJlc29sdmVkIHBhcmVudCBjb250ZXh0cyBvbiB0aGUg
Y3VycmVudCB0cmFuc2l0aW9uRXZlbnQuCi0gICAgaWYgKHRyYW5zaXRpb24pIHsKLSAgICAgIHZh
ciBtb2RlbExvb2t1cE5hbWUgPSAocm91dGUgJiYgcm91dGUucm91dGVOYW1lKSB8fCBuYW1lOwot
ICAgICAgaWYgKHRyYW5zaXRpb24ucmVzb2x2ZWRNb2RlbHMuaGFzT3duUHJvcGVydHkobW9kZWxM
b29rdXBOYW1lKSkgewotICAgICAgICByZXR1cm4gdHJhbnNpdGlvbi5yZXNvbHZlZE1vZGVsc1tt
b2RlbExvb2t1cE5hbWVdOwotICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiByb3V0ZSAmJiBy
b3V0ZS5jdXJyZW50TW9kZWw7Ci0gIH0sCi0KLSAgLyoqCi0gICAgQSBob29rIHlvdSBjYW4gdXNl
IHRvIHJlbmRlciB0aGUgdGVtcGxhdGUgZm9yIHRoZSBjdXJyZW50IHJvdXRlLgotCi0gICAgVGhp
cyBtZXRob2QgaXMgY2FsbGVkIHdpdGggdGhlIGNvbnRyb2xsZXIgZm9yIHRoZSBjdXJyZW50IHJv
dXRlIGFuZCB0aGUKLSAgICBtb2RlbCBzdXBwbGllZCBieSB0aGUgYG1vZGVsYCBob29rLiBCeSBk
ZWZhdWx0LCBpdCByZW5kZXJzIHRoZSByb3V0ZSdzCi0gICAgdGVtcGxhdGUsIGNvbmZpZ3VyZWQg
d2l0aCB0aGUgY29udHJvbGxlciBmb3IgdGhlIHJvdXRlLgotCi0gICAgVGhpcyBtZXRob2QgY2Fu
IGJlIG92ZXJyaWRkZW4gdG8gc2V0IHVwIGFuZCByZW5kZXIgYWRkaXRpb25hbCBvcgotICAgIGFs
dGVybmF0aXZlIHRlbXBsYXRlcy4KLQotICAgIGBgYGpzCi0gICAgQXBwLlBvc3RzUm91dGUgPSBF
bWJlci5Sb3V0ZS5leHRlbmQoewotICAgICAgcmVuZGVyVGVtcGxhdGU6IGZ1bmN0aW9uKGNvbnRy
b2xsZXIsIG1vZGVsKSB7Ci0gICAgICAgIHZhciBmYXZDb250cm9sbGVyID0gdGhpcy5jb250cm9s
bGVyRm9yKCdmYXZvcml0ZVBvc3QnKTsKLQotICAgICAgICAvLyBSZW5kZXIgdGhlIGBmYXZvcml0
ZVBvc3RgIHRlbXBsYXRlIGludG8KLSAgICAgICAgLy8gdGhlIG91dGxldCBgcG9zdHNgLCBhbmQg
ZGlzcGxheSB0aGUgYGZhdm9yaXRlUG9zdGAKLSAgICAgICAgLy8gY29udHJvbGxlci4KLSAgICAg
ICAgdGhpcy5yZW5kZXIoJ2Zhdm9yaXRlUG9zdCcsIHsKLSAgICAgICAgICBvdXRsZXQ6ICdwb3N0
cycsCi0gICAgICAgICAgY29udHJvbGxlcjogZmF2Q29udHJvbGxlcgotICAgICAgICB9KTsKLSAg
ICAgIH0KLSAgICB9KTsKLSAgICBgYGAKLQotICAgIEBtZXRob2QgcmVuZGVyVGVtcGxhdGUKLSAg
ICBAcGFyYW0ge09iamVjdH0gY29udHJvbGxlciB0aGUgcm91dGUncyBjb250cm9sbGVyCi0gICAg
QHBhcmFtIHtPYmplY3R9IG1vZGVsIHRoZSByb3V0ZSdzIG1vZGVsCi0gICovCi0gIHJlbmRlclRl
bXBsYXRlOiBmdW5jdGlvbihjb250cm9sbGVyLCBtb2RlbCkgewotICAgIHRoaXMucmVuZGVyKCk7
Ci0gIH0sCi0KLSAgLyoqCi0gICAgUmVuZGVycyBhIHRlbXBsYXRlIGludG8gYW4gb3V0bGV0Lgot
Ci0gICAgVGhpcyBtZXRob2QgaGFzIGEgbnVtYmVyIG9mIGRlZmF1bHRzLCBiYXNlZCBvbiB0aGUg
bmFtZSBvZiB0aGUKLSAgICByb3V0ZSBzcGVjaWZpZWQgaW4gdGhlIHJvdXRlci4KLQotICAgIEZv
ciBleGFtcGxlOgotCi0gICAgYGBganMKLSAgICBBcHAuUm91dGVyLm1hcChmdW5jdGlvbigpIHsK
LSAgICAgIHRoaXMucm91dGUoJ2luZGV4Jyk7Ci0gICAgICB0aGlzLnJlc291cmNlKCdwb3N0Jywg
e3BhdGg6ICcvcG9zdHMvOnBvc3RfaWQnfSk7Ci0gICAgfSk7Ci0KLSAgICBBcHAuUG9zdFJvdXRl
ID0gQXBwLlJvdXRlLmV4dGVuZCh7Ci0gICAgICByZW5kZXJUZW1wbGF0ZTogZnVuY3Rpb24oKSB7
Ci0gICAgICAgIHRoaXMucmVuZGVyKCk7Ci0gICAgICB9Ci0gICAgfSk7Ci0gICAgYGBgCi0KLSAg
ICBUaGUgbmFtZSBvZiB0aGUgYFBvc3RSb3V0ZWAsIGFzIGRlZmluZWQgYnkgdGhlIHJvdXRlciwg
aXMgYHBvc3RgLgotCi0gICAgQnkgZGVmYXVsdCwgcmVuZGVyIHdpbGw6Ci0KLSAgICAqIHJlbmRl
ciB0aGUgYHBvc3RgIHRlbXBsYXRlCi0gICAgKiB3aXRoIHRoZSBgcG9zdGAgdmlldyAoYFBvc3RW
aWV3YCkgZm9yIGV2ZW50IGhhbmRsaW5nLCBpZiBvbmUgZXhpc3RzCi0gICAgKiBhbmQgdGhlIGBw
b3N0YCBjb250cm9sbGVyIChgUG9zdENvbnRyb2xsZXJgKSwgaWYgb25lIGV4aXN0cwotICAgICog
aW50byB0aGUgYG1haW5gIG91dGxldCBvZiB0aGUgYGFwcGxpY2F0aW9uYCB0ZW1wbGF0ZQotCi0g
ICAgWW91IGNhbiBvdmVycmlkZSB0aGlzIGJlaGF2aW9yOgotCi0gICAgYGBganMKLSAgICBBcHAu
UG9zdFJvdXRlID0gQXBwLlJvdXRlLmV4dGVuZCh7Ci0gICAgICByZW5kZXJUZW1wbGF0ZTogZnVu
Y3Rpb24oKSB7Ci0gICAgICAgIHRoaXMucmVuZGVyKCdteVBvc3QnLCB7ICAgLy8gdGhlIHRlbXBs
YXRlIHRvIHJlbmRlcgotICAgICAgICAgIGludG86ICdpbmRleCcsICAgICAgICAgIC8vIHRoZSB0
ZW1wbGF0ZSB0byByZW5kZXIgaW50bwotICAgICAgICAgIG91dGxldDogJ2RldGFpbCcsICAgICAg
IC8vIHRoZSBuYW1lIG9mIHRoZSBvdXRsZXQgaW4gdGhhdCB0ZW1wbGF0ZQotICAgICAgICAgIGNv
bnRyb2xsZXI6ICdibG9nUG9zdCcgIC8vIHRoZSBjb250cm9sbGVyIHRvIHVzZSBmb3IgdGhlIHRl
bXBsYXRlCi0gICAgICAgIH0pOwotICAgICAgfQotICAgIH0pOwotICAgIGBgYAotCi0gICAgUmVt
ZW1iZXIgdGhhdCB0aGUgY29udHJvbGxlcidzIGBjb250ZW50YCB3aWxsIGJlIHRoZSByb3V0ZSdz
IG1vZGVsLiBJbgotICAgIHRoaXMgY2FzZSwgdGhlIGRlZmF1bHQgbW9kZWwgd2lsbCBiZSBgQXBw
LlBvc3QuZmluZChwYXJhbXMucG9zdF9pZClgLgotCi0gICAgQG1ldGhvZCByZW5kZXIKLSAgICBA
cGFyYW0ge1N0cmluZ30gbmFtZSB0aGUgbmFtZSBvZiB0aGUgdGVtcGxhdGUgdG8gcmVuZGVyCi0g
ICAgQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgdGhlIG9wdGlvbnMKLSAgKi8KLSAgcmVuZGVyOiBm
dW5jdGlvbihuYW1lLCBvcHRpb25zKSB7Ci0gICAgRW1iZXIuYXNzZXJ0KCJUaGUgbmFtZSBpbiB0
aGUgZ2l2ZW4gYXJndW1lbnRzIGlzIHVuZGVmaW5lZCIsIGFyZ3VtZW50cy5sZW5ndGggPiAwID8g
IUVtYmVyLmlzTm9uZShhcmd1bWVudHNbMF0pIDogdHJ1ZSk7Ci0KLSAgICB2YXIgbmFtZVBhc3Nl
ZCA9ICEhbmFtZTsKLQotICAgIGlmICh0eXBlb2YgbmFtZSA9PT0gJ29iamVjdCcgJiYgIW9wdGlv
bnMpIHsKLSAgICAgIG9wdGlvbnMgPSBuYW1lOwotICAgICAgbmFtZSA9IHRoaXMucm91dGVOYW1l
OwotICAgIH0KLQotICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OwotCi0gICAgdmFyIHRlbXBs
YXRlTmFtZTsKLQotICAgIGlmIChuYW1lKSB7Ci0gICAgICBuYW1lID0gbmFtZS5yZXBsYWNlKC9c
Ly9nLCAnLicpOwotICAgICAgdGVtcGxhdGVOYW1lID0gbmFtZTsKLSAgICB9IGVsc2UgewotICAg
ICAgbmFtZSA9IHRoaXMucm91dGVOYW1lOwotICAgICAgdGVtcGxhdGVOYW1lID0gdGhpcy50ZW1w
bGF0ZU5hbWUgfHwgbmFtZTsKLSAgICB9Ci0KLSAgICB2YXIgdmlld05hbWUgPSBvcHRpb25zLnZp
ZXcgfHwgdGhpcy52aWV3TmFtZSB8fCBuYW1lOwotCi0gICAgdmFyIGNvbnRhaW5lciA9IHRoaXMu
Y29udGFpbmVyLAotICAgICAgICB2aWV3ID0gY29udGFpbmVyLmxvb2t1cCgndmlldzonICsgdmll
d05hbWUpLAotICAgICAgICB0ZW1wbGF0ZSA9IHZpZXcgPyB2aWV3LmdldCgndGVtcGxhdGUnKSA6
IG51bGw7Ci0KLSAgICBpZiAoIXRlbXBsYXRlKSB7Ci0gICAgICB0ZW1wbGF0ZSA9IGNvbnRhaW5l
ci5sb29rdXAoJ3RlbXBsYXRlOicgKyB0ZW1wbGF0ZU5hbWUpOwotICAgIH0KLQotICAgIGlmICgh
dmlldyAmJiAhdGVtcGxhdGUpIHsKLSAgICAgIEVtYmVyLmFzc2VydCgiQ291bGQgbm90IGZpbmQg
XCIiICsgbmFtZSArICJcIiB0ZW1wbGF0ZSBvciB2aWV3LiIsICFuYW1lUGFzc2VkKTsKLSAgICAg
IGlmIChnZXQodGhpcy5yb3V0ZXIsICduYW1lc3BhY2UuTE9HX1ZJRVdfTE9PS1VQUycpKSB7Ci0g
ICAgICAgIEVtYmVyLkxvZ2dlci5pbmZvKCJDb3VsZCBub3QgZmluZCBcIiIgKyBuYW1lICsgIlwi
IHRlbXBsYXRlIG9yIHZpZXcuIE5vdGhpbmcgd2lsbCBiZSByZW5kZXJlZCIsIHsgZnVsbE5hbWU6
ICd0ZW1wbGF0ZTonICsgbmFtZSB9KTsKLSAgICAgIH0KLSAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBvcHRpb25zID0gbm9ybWFsaXplT3B0aW9ucyh0aGlzLCBuYW1lLCB0ZW1wbGF0ZSwgb3B0
aW9ucyk7Ci0gICAgdmlldyA9IHNldHVwVmlldyh2aWV3LCBjb250YWluZXIsIG9wdGlvbnMpOwot
Ci0gICAgaWYgKG9wdGlvbnMub3V0bGV0ID09PSAnbWFpbicpIHsgdGhpcy5sYXN0UmVuZGVyZWRU
ZW1wbGF0ZSA9IG5hbWU7IH0KLQotICAgIGFwcGVuZFZpZXcodGhpcywgdmlldywgb3B0aW9ucyk7
Ci0gIH0sCi0KLSAgLyoqCi0gICAgRGlzY29ubmVjdHMgYSB2aWV3IHRoYXQgaGFzIGJlZW4gcmVu
ZGVyZWQgaW50byBhbiBvdXRsZXQuCi0KLSAgICBZb3UgbWF5IHBhc3MgYW55IG9yIGFsbCBvZiB0
aGUgZm9sbG93aW5nIG9wdGlvbnMgdG8gYGRpc2Nvbm5lY3RPdXRsZXRgOgotCi0gICAgKiBgb3V0
bGV0YDogdGhlIG5hbWUgb2YgdGhlIG91dGxldCB0byBjbGVhciAoZGVmYXVsdDogJ21haW4nKQot
ICAgICogYHBhcmVudFZpZXdgOiB0aGUgbmFtZSBvZiB0aGUgdmlldyBjb250YWluaW5nIHRoZSBv
dXRsZXQgdG8gY2xlYXIKLSAgICAgICAoZGVmYXVsdDogdGhlIHZpZXcgcmVuZGVyZWQgYnkgdGhl
IHBhcmVudCByb3V0ZSkKLQotICAgIEV4YW1wbGU6Ci0KLSAgICBgYGBqcwotICAgIEFwcC5BcHBs
aWNhdGlvblJvdXRlID0gQXBwLlJvdXRlLmV4dGVuZCh7Ci0gICAgICBhY3Rpb25zOiB7Ci0gICAg
ICAgIHNob3dNb2RhbDogZnVuY3Rpb24oZXZ0KSB7Ci0gICAgICAgICAgdGhpcy5yZW5kZXIoZXZ0
Lm1vZGFsTmFtZSwgewotICAgICAgICAgICAgb3V0bGV0OiAnbW9kYWwnLAotICAgICAgICAgICAg
aW50bzogJ2FwcGxpY2F0aW9uJwotICAgICAgICAgIH0pOwotICAgICAgICB9LAotICAgICAgICBo
aWRlTW9kYWw6IGZ1bmN0aW9uKGV2dCkgewotICAgICAgICAgIHRoaXMuZGlzY29ubmVjdE91dGxl
dCh7Ci0gICAgICAgICAgICBvdXRsZXQ6ICdtb2RhbCcsCi0gICAgICAgICAgICBwYXJlbnRWaWV3
OiAnYXBwbGljYXRpb24nCi0gICAgICAgICAgfSk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9
KTsKLSAgICBgYGAKLQotICAgIEBtZXRob2QgZGlzY29ubmVjdE91dGxldAotICAgIEBwYXJhbSB7
T2JqZWN0fSBvcHRpb25zIHRoZSBvcHRpb25zCi0gICovCi0gIGRpc2Nvbm5lY3RPdXRsZXQ6IGZ1
bmN0aW9uKG9wdGlvbnMpIHsKLSAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKLSAgICBvcHRp
b25zLnBhcmVudFZpZXcgPSBvcHRpb25zLnBhcmVudFZpZXcgPyBvcHRpb25zLnBhcmVudFZpZXcu
cmVwbGFjZSgvXC8vZywgJy4nKSA6IHBhcmVudFRlbXBsYXRlKHRoaXMpOwotICAgIG9wdGlvbnMu
b3V0bGV0ID0gb3B0aW9ucy5vdXRsZXQgfHwgJ21haW4nOwotCi0gICAgdmFyIHBhcmVudFZpZXcg
PSB0aGlzLnJvdXRlci5fbG9va3VwQWN0aXZlVmlldyhvcHRpb25zLnBhcmVudFZpZXcpOwotICAg
IHBhcmVudFZpZXcuZGlzY29ubmVjdE91dGxldChvcHRpb25zLm91dGxldCk7Ci0gIH0sCi0KLSAg
d2lsbERlc3Ryb3k6IGZ1bmN0aW9uKCkgewotICAgIHRoaXMudGVhcmRvd25WaWV3cygpOwotICB9
LAotCi0gIC8qKgotICAgIEBwcml2YXRlCi0KLSAgICBAbWV0aG9kIHRlYXJkb3duVmlld3MKLSAg
Ki8KLSAgdGVhcmRvd25WaWV3czogZnVuY3Rpb24oKSB7Ci0gICAgLy8gVGVhciBkb3duIHRoZSB0
b3AgbGV2ZWwgdmlldwotICAgIGlmICh0aGlzLnRlYXJkb3duVG9wTGV2ZWxWaWV3KSB7IHRoaXMu
dGVhcmRvd25Ub3BMZXZlbFZpZXcoKTsgfQotCi0gICAgLy8gVGVhciBkb3duIGFueSBvdXRsZXRz
IHJlbmRlcmVkIHdpdGggJ2ludG8nCi0gICAgdmFyIHRlYXJkb3duT3V0bGV0Vmlld3MgPSB0aGlz
LnRlYXJkb3duT3V0bGV0Vmlld3MgfHwgW107Ci0gICAgYV9mb3JFYWNoKHRlYXJkb3duT3V0bGV0
Vmlld3MsIGZ1bmN0aW9uKHRlYXJkb3duT3V0bGV0VmlldykgewotICAgICAgdGVhcmRvd25PdXRs
ZXRWaWV3KCk7Ci0gICAgfSk7Ci0KLSAgICBkZWxldGUgdGhpcy50ZWFyZG93blRvcExldmVsVmll
dzsKLSAgICBkZWxldGUgdGhpcy50ZWFyZG93bk91dGxldFZpZXdzOwotICAgIGRlbGV0ZSB0aGlz
Lmxhc3RSZW5kZXJlZFRlbXBsYXRlOwotICB9Ci19KTsKLQotZnVuY3Rpb24gcGFyZW50Um91dGUo
cm91dGUpIHsKLSAgdmFyIGhhbmRsZXJJbmZvcyA9IHJvdXRlLnJvdXRlci5yb3V0ZXIudGFyZ2V0
SGFuZGxlckluZm9zOwotCi0gIGlmICghaGFuZGxlckluZm9zKSB7IHJldHVybjsgfQotCi0gIHZh
ciBwYXJlbnQsIGN1cnJlbnQ7Ci0KLSAgZm9yICh2YXIgaT0wLCBsPWhhbmRsZXJJbmZvcy5sZW5n
dGg7IGk8bDsgaSsrKSB7Ci0gICAgY3VycmVudCA9IGhhbmRsZXJJbmZvc1tpXS5oYW5kbGVyOwot
ICAgIGlmIChjdXJyZW50ID09PSByb3V0ZSkgeyByZXR1cm4gcGFyZW50OyB9Ci0gICAgcGFyZW50
ID0gY3VycmVudDsKLSAgfQotfQotCi1mdW5jdGlvbiBwYXJlbnRUZW1wbGF0ZShyb3V0ZSkgewot
ICB2YXIgcGFyZW50ID0gcGFyZW50Um91dGUocm91dGUpLCB0ZW1wbGF0ZTsKLQotICBpZiAoIXBh
cmVudCkgeyByZXR1cm47IH0KLQotICBpZiAodGVtcGxhdGUgPSBwYXJlbnQubGFzdFJlbmRlcmVk
VGVtcGxhdGUpIHsKLSAgICByZXR1cm4gdGVtcGxhdGU7Ci0gIH0gZWxzZSB7Ci0gICAgcmV0dXJu
IHBhcmVudFRlbXBsYXRlKHBhcmVudCk7Ci0gIH0KLX0KLQotZnVuY3Rpb24gbm9ybWFsaXplT3B0
aW9ucyhyb3V0ZSwgbmFtZSwgdGVtcGxhdGUsIG9wdGlvbnMpIHsKLSAgb3B0aW9ucyA9IG9wdGlv
bnMgfHwge307Ci0gIG9wdGlvbnMuaW50byA9IG9wdGlvbnMuaW50byA/IG9wdGlvbnMuaW50by5y
ZXBsYWNlKC9cLy9nLCAnLicpIDogcGFyZW50VGVtcGxhdGUocm91dGUpOwotICBvcHRpb25zLm91
dGxldCA9IG9wdGlvbnMub3V0bGV0IHx8ICdtYWluJzsKLSAgb3B0aW9ucy5uYW1lID0gbmFtZTsK
LSAgb3B0aW9ucy50ZW1wbGF0ZSA9IHRlbXBsYXRlOwotICBvcHRpb25zLkxPR19WSUVXX0xPT0tV
UFMgPSBnZXQocm91dGUucm91dGVyLCAnbmFtZXNwYWNlLkxPR19WSUVXX0xPT0tVUFMnKTsKLQot
ICBFbWJlci5hc3NlcnQoIkFuIG91dGxldCAoIitvcHRpb25zLm91dGxldCsiKSB3YXMgc3BlY2lm
aWVkIGJ1dCB3YXMgbm90IGZvdW5kLiIsIG9wdGlvbnMub3V0bGV0ID09PSAnbWFpbicgfHwgb3B0
aW9ucy5pbnRvKTsKLQotICB2YXIgY29udHJvbGxlciA9IG9wdGlvbnMuY29udHJvbGxlciwgbmFt
ZWRDb250cm9sbGVyOwotCi0gIGlmIChvcHRpb25zLmNvbnRyb2xsZXIpIHsKLSAgICBjb250cm9s
bGVyID0gb3B0aW9ucy5jb250cm9sbGVyOwotICB9IGVsc2UgaWYgKG5hbWVkQ29udHJvbGxlciA9
IHJvdXRlLmNvbnRhaW5lci5sb29rdXAoJ2NvbnRyb2xsZXI6JyArIG5hbWUpKSB7Ci0gICAgY29u
dHJvbGxlciA9IG5hbWVkQ29udHJvbGxlcjsKLSAgfSBlbHNlIHsKLSAgICBjb250cm9sbGVyID0g
cm91dGUuY29udHJvbGxlck5hbWUgfHwgcm91dGUucm91dGVOYW1lOwotICB9Ci0KLSAgaWYgKHR5
cGVvZiBjb250cm9sbGVyID09PSAnc3RyaW5nJykgewotICAgIGNvbnRyb2xsZXIgPSByb3V0ZS5j
b250YWluZXIubG9va3VwKCdjb250cm9sbGVyOicgKyBjb250cm9sbGVyKTsKLSAgfQotCi0gIG9w
dGlvbnMuY29udHJvbGxlciA9IGNvbnRyb2xsZXI7Ci0KLSAgcmV0dXJuIG9wdGlvbnM7Ci19Ci0K
LWZ1bmN0aW9uIHNldHVwVmlldyh2aWV3LCBjb250YWluZXIsIG9wdGlvbnMpIHsKLSAgaWYgKHZp
ZXcpIHsKLSAgICBpZiAob3B0aW9ucy5MT0dfVklFV19MT09LVVBTKSB7Ci0gICAgICBFbWJlci5M
b2dnZXIuaW5mbygiUmVuZGVyaW5nICIgKyBvcHRpb25zLm5hbWUgKyAiIHdpdGggIiArIHZpZXcs
IHsgZnVsbE5hbWU6ICd2aWV3OicgKyBvcHRpb25zLm5hbWUgfSk7Ci0gICAgfQotICB9IGVsc2Ug
ewotICAgIHZhciBkZWZhdWx0VmlldyA9IG9wdGlvbnMuaW50byA/ICd2aWV3OmRlZmF1bHQnIDog
J3ZpZXc6dG9wbGV2ZWwnOwotICAgIHZpZXcgPSBjb250YWluZXIubG9va3VwKGRlZmF1bHRWaWV3
KTsKLSAgICBpZiAob3B0aW9ucy5MT0dfVklFV19MT09LVVBTKSB7Ci0gICAgICBFbWJlci5Mb2dn
ZXIuaW5mbygiUmVuZGVyaW5nICIgKyBvcHRpb25zLm5hbWUgKyAiIHdpdGggZGVmYXVsdCB2aWV3
ICIgKyB2aWV3LCB7IGZ1bGxOYW1lOiAndmlldzonICsgb3B0aW9ucy5uYW1lIH0pOwotICAgIH0K
LSAgfQotCi0gIGlmICghZ2V0KHZpZXcsICd0ZW1wbGF0ZU5hbWUnKSkgewotICAgIHNldCh2aWV3
LCAndGVtcGxhdGUnLCBvcHRpb25zLnRlbXBsYXRlKTsKLQotICAgIHNldCh2aWV3LCAnX2RlYnVn
VGVtcGxhdGVOYW1lJywgb3B0aW9ucy5uYW1lKTsKLSAgfQotCi0gIHNldCh2aWV3LCAncmVuZGVy
ZWROYW1lJywgb3B0aW9ucy5uYW1lKTsKLSAgc2V0KHZpZXcsICdjb250cm9sbGVyJywgb3B0aW9u
cy5jb250cm9sbGVyKTsKLQotICByZXR1cm4gdmlldzsKLX0KLQotZnVuY3Rpb24gYXBwZW5kVmll
dyhyb3V0ZSwgdmlldywgb3B0aW9ucykgewotICBpZiAob3B0aW9ucy5pbnRvKSB7Ci0gICAgdmFy
IHBhcmVudFZpZXcgPSByb3V0ZS5yb3V0ZXIuX2xvb2t1cEFjdGl2ZVZpZXcob3B0aW9ucy5pbnRv
KTsKLSAgICB2YXIgdGVhcmRvd25PdXRsZXRWaWV3ID0gZ2VuZXJhdGVPdXRsZXRUZWFyZG93bihw
YXJlbnRWaWV3LCBvcHRpb25zLm91dGxldCk7Ci0gICAgaWYgKCFyb3V0ZS50ZWFyZG93bk91dGxl
dFZpZXdzKSB7IHJvdXRlLnRlYXJkb3duT3V0bGV0Vmlld3MgPSBbXTsgfQotICAgIGFfcmVwbGFj
ZShyb3V0ZS50ZWFyZG93bk91dGxldFZpZXdzLCAwLCAwLCBbdGVhcmRvd25PdXRsZXRWaWV3XSk7
Ci0gICAgcGFyZW50Vmlldy5jb25uZWN0T3V0bGV0KG9wdGlvbnMub3V0bGV0LCB2aWV3KTsKLSAg
fSBlbHNlIHsKLSAgICB2YXIgcm9vdEVsZW1lbnQgPSBnZXQocm91dGUsICdyb3V0ZXIubmFtZXNw
YWNlLnJvb3RFbGVtZW50Jyk7Ci0gICAgLy8gdGVhciBkb3duIHZpZXcgaWYgb25lIGlzIGFscmVh
ZHkgcmVuZGVyZWQKLSAgICBpZiAocm91dGUudGVhcmRvd25Ub3BMZXZlbFZpZXcpIHsKLSAgICAg
IHJvdXRlLnRlYXJkb3duVG9wTGV2ZWxWaWV3KCk7Ci0gICAgfQotICAgIHJvdXRlLnJvdXRlci5f
Y29ubmVjdEFjdGl2ZVZpZXcob3B0aW9ucy5uYW1lLCB2aWV3KTsKLSAgICByb3V0ZS50ZWFyZG93
blRvcExldmVsVmlldyA9IGdlbmVyYXRlVG9wTGV2ZWxUZWFyZG93bih2aWV3KTsKLSAgICB2aWV3
LmFwcGVuZFRvKHJvb3RFbGVtZW50KTsKLSAgfQotfQotCi1mdW5jdGlvbiBnZW5lcmF0ZVRvcExl
dmVsVGVhcmRvd24odmlldykgewotICByZXR1cm4gZnVuY3Rpb24oKSB7IHZpZXcuZGVzdHJveSgp
OyB9OwotfQotCi1mdW5jdGlvbiBnZW5lcmF0ZU91dGxldFRlYXJkb3duKHBhcmVudFZpZXcsIG91
dGxldCkgewotICByZXR1cm4gZnVuY3Rpb24oKSB7IHBhcmVudFZpZXcuZGlzY29ubmVjdE91dGxl
dChvdXRsZXQpOyB9OwotfQotCi19KSgpOwotCi0KLQotKGZ1bmN0aW9uKCkgewotCi19KSgpOwot
Ci0KLQotKGZ1bmN0aW9uKCkgewotRW1iZXIub25Mb2FkKCdFbWJlci5IYW5kbGViYXJzJywgZnVu
Y3Rpb24oKSB7Ci0gIHZhciBoYW5kbGViYXJzUmVzb2x2ZSA9IEVtYmVyLkhhbmRsZWJhcnMucmVz
b2x2ZVBhcmFtcywKLSAgICAgIG1hcCA9IEVtYmVyLkFycmF5UG9seWZpbGxzLm1hcCwKLSAgICAg
IGdldCA9IEVtYmVyLmdldCwKLSAgICAgIGhhbmRsZWJhcnNHZXQgPSBFbWJlci5IYW5kbGViYXJz
LmdldDsKLQotICBmdW5jdGlvbiByZXNvbHZlUGFyYW1zKGNvbnRleHQsIHBhcmFtcywgb3B0aW9u
cykgewotICAgIHJldHVybiBtYXAuY2FsbChyZXNvbHZlUGF0aHMoY29udGV4dCwgcGFyYW1zLCBv
cHRpb25zKSwgZnVuY3Rpb24ocGF0aCwgaSkgewotICAgICAgaWYgKG51bGwgPT09IHBhdGgpIHsK
LSAgICAgICAgLy8gUGFyYW0gd2FzIHN0cmluZy9udW1iZXIsIG5vdCBhIHBhdGgsIHNvIGp1c3Qg
cmV0dXJuIHJhdyBzdHJpbmcvbnVtYmVyLgotICAgICAgICByZXR1cm4gcGFyYW1zW2ldOwotICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgcmV0dXJuIGhhbmRsZWJhcnNHZXQoY29udGV4dCwgcGF0aCwg
b3B0aW9ucyk7Ci0gICAgICB9Ci0gICAgfSk7Ci0gIH0KLQotICBmdW5jdGlvbiByZXNvbHZlUGF0
aHMoY29udGV4dCwgcGFyYW1zLCBvcHRpb25zKSB7Ci0gICAgdmFyIHJlc29sdmVkID0gaGFuZGxl
YmFyc1Jlc29sdmUoY29udGV4dCwgcGFyYW1zLCBvcHRpb25zKSwKLSAgICAgICAgdHlwZXMgPSBv
cHRpb25zLnR5cGVzOwotCi0gICAgcmV0dXJuIG1hcC5jYWxsKHJlc29sdmVkLCBmdW5jdGlvbihv
YmplY3QsIGkpIHsKLSAgICAgIGlmICh0eXBlc1tpXSA9PT0gJ0lEJykgewotICAgICAgICByZXR1
cm4gdW53cmFwKG9iamVjdCwgcGFyYW1zW2ldKTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIHJl
dHVybiBudWxsOwotICAgICAgfQotICAgIH0pOwotCi0gICAgZnVuY3Rpb24gdW53cmFwKG9iamVj
dCwgcGF0aCkgewotICAgICAgaWYgKHBhdGggPT09ICdjb250cm9sbGVyJykgeyByZXR1cm4gcGF0
aDsgfQotCi0gICAgICBpZiAoRW1iZXIuQ29udHJvbGxlck1peGluLmRldGVjdChvYmplY3QpKSB7
Ci0gICAgICAgIHJldHVybiB1bndyYXAoZ2V0KG9iamVjdCwgJ21vZGVsJyksIHBhdGggPyBwYXRo
ICsgJy5tb2RlbCcgOiAnbW9kZWwnKTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIHJldHVybiBw
YXRoOwotICAgICAgfQotICAgIH0KLSAgfQotCi0gIEVtYmVyLlJvdXRlci5yZXNvbHZlUGFyYW1z
ID0gcmVzb2x2ZVBhcmFtczsKLSAgRW1iZXIuUm91dGVyLnJlc29sdmVQYXRocyA9IHJlc29sdmVQ
YXRoczsKLX0pOwotCi19KSgpOwotCi0KLQotKGZ1bmN0aW9uKCkgewotLyoqCi1AbW9kdWxlIGVt
YmVyCi1Ac3VibW9kdWxlIGVtYmVyLXJvdXRpbmcKLSovCi0KLXZhciBnZXQgPSBFbWJlci5nZXQs
IHNldCA9IEVtYmVyLnNldCwgZm10ID0gRW1iZXIuU3RyaW5nLmZtdDsKLUVtYmVyLm9uTG9hZCgn
RW1iZXIuSGFuZGxlYmFycycsIGZ1bmN0aW9uKEhhbmRsZWJhcnMpIHsKLQotICB2YXIgcmVzb2x2
ZVBhcmFtcyA9IEVtYmVyLlJvdXRlci5yZXNvbHZlUGFyYW1zLAotICAgICAgcmVzb2x2ZVBhdGhz
ICA9IEVtYmVyLlJvdXRlci5yZXNvbHZlUGF0aHMsCi0gICAgICBpc1NpbXBsZUNsaWNrID0gRW1i
ZXIuVmlld1V0aWxzLmlzU2ltcGxlQ2xpY2s7Ci0KLSAgZnVuY3Rpb24gZnVsbFJvdXRlTmFtZShy
b3V0ZXIsIG5hbWUpIHsKLSAgICB2YXIgbmFtZVdpdGhJbmRleDsKLSAgICBpZiAoIXJvdXRlci5o
YXNSb3V0ZShuYW1lKSkgewotICAgICAgbmFtZVdpdGhJbmRleCA9IG5hbWUgKyAnLmluZGV4JzsK
LSAgICAgIEVtYmVyLmFzc2VydChmbXQoIlRoZSBhdHRlbXB0IHRvIGxpbmstdG8gcm91dGUgJyVA
JyBmYWlsZWQgKGFsc28gdHJpZWQgJyVAJykuICIgKwotICAgICAgICAgICAgICAgICAgICAgICAi
VGhlIHJvdXRlciBkaWQgbm90IGZpbmQgJyVAJyBpbiBpdHMgcG9zc2libGUgcm91dGVzOiAnJUAn
IiwKLSAgICAgICAgICAgICAgICAgICAgICAgW25hbWUsIG5hbWVXaXRoSW5kZXgsIG5hbWUsIEVt
YmVyLmtleXMocm91dGVyLnJvdXRlci5yZWNvZ25pemVyLm5hbWVzKS5qb2luKCInLCAnIildKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgcm91dGVyLmhhc1JvdXRlKG5hbWVXaXRoSW5kZXgpKTsK
LSAgICAgIG5hbWUgPSBuYW1lV2l0aEluZGV4OwotICAgIH0KLQotICAgIHJldHVybiBuYW1lOwot
ICB9Ci0KLSAgZnVuY3Rpb24gZ2V0UmVzb2x2ZWRQYXRocyhvcHRpb25zKSB7Ci0KLSAgICB2YXIg
dHlwZXMgPSBvcHRpb25zLm9wdGlvbnMudHlwZXMsCi0gICAgICAgIGRhdGEgPSBvcHRpb25zLm9w
dGlvbnMuZGF0YTsKLQotICAgIHJldHVybiByZXNvbHZlUGF0aHMob3B0aW9ucy5jb250ZXh0LCBv
cHRpb25zLnBhcmFtcywgeyB0eXBlczogdHlwZXMsIGRhdGE6IGRhdGEgfSk7Ci0gIH0KLQotICAv
KioKLSAgICBgRW1iZXIuTGlua1ZpZXdgIHJlbmRlcnMgYW4gZWxlbWVudCB3aG9zZSBgY2xpY2tg
IGV2ZW50IHRyaWdnZXJzIGEKLSAgICB0cmFuc2l0aW9uIG9mIHRoZSBhcHBsaWNhdGlvbidzIGlu
c3RhbmNlIG9mIGBFbWJlci5Sb3V0ZXJgIHRvCi0gICAgYSBzdXBwbGllZCByb3V0ZSBieSBuYW1l
LgotCi0gICAgSW5zdGFuY2VzIG9mIGBMaW5rVmlld2Agd2lsbCBtb3N0IGxpa2VseSBiZSBjcmVh
dGVkIHRocm91Z2gKLSAgICB0aGUgYGxpbmstdG9gIEhhbmRsZWJhcnMgaGVscGVyLCBidXQgcHJv
cGVydGllcyBvZiB0aGlzIGNsYXNzCi0gICAgY2FuIGJlIG92ZXJyaWRkZW4gdG8gY3VzdG9taXpl
IGFwcGxpY2F0aW9uLXdpZGUgYmVoYXZpb3IuCi0KLSAgICBAY2xhc3MgTGlua1ZpZXcKLSAgICBA
bmFtZXNwYWNlIEVtYmVyCi0gICAgQGV4dGVuZHMgRW1iZXIuVmlldwotICAgIEBzZWUge0hhbmRs
ZWJhcnMuaGVscGVycy5saW5rLXRvfQotICAqKi8KLSAgdmFyIExpbmtWaWV3ID0gRW1iZXIuTGlu
a1ZpZXcgPSBFbWJlci5WaWV3LmV4dGVuZCh7Ci0gICAgdGFnTmFtZTogJ2EnLAotICAgIGN1cnJl
bnRXaGVuOiBudWxsLAotCi0gICAgLyoqCi0gICAgICBTZXRzIHRoZSBgdGl0bGVgIGF0dHJpYnV0
ZSBvZiB0aGUgYExpbmtWaWV3YCdzIEhUTUwgZWxlbWVudC4KLQotICAgICAgQHByb3BlcnR5IHRp
dGxlCi0gICAgICBAZGVmYXVsdCBudWxsCi0gICAgKiovCi0gICAgdGl0bGU6IG51bGwsCi0KLSAg
ICAvKioKLSAgICAgIFNldHMgdGhlIGByZWxgIGF0dHJpYnV0ZSBvZiB0aGUgYExpbmtWaWV3YCdz
IEhUTUwgZWxlbWVudC4KLQotICAgICAgQHByb3BlcnR5IHJlbAotICAgICAgQGRlZmF1bHQgbnVs
bAotICAgICoqLwotICAgIHJlbDogbnVsbCwKLQotICAgIC8qKgotICAgICAgVGhlIENTUyBjbGFz
cyB0byBhcHBseSB0byBgTGlua1ZpZXdgJ3MgZWxlbWVudCB3aGVuIGl0cyBgYWN0aXZlYAotICAg
ICAgcHJvcGVydHkgaXMgYHRydWVgLgotCi0gICAgICBAcHJvcGVydHkgYWN0aXZlQ2xhc3MKLSAg
ICAgIEB0eXBlIFN0cmluZwotICAgICAgQGRlZmF1bHQgYWN0aXZlCi0gICAgKiovCi0gICAgYWN0
aXZlQ2xhc3M6ICdhY3RpdmUnLAotCi0gICAgLyoqCi0gICAgICBUaGUgQ1NTIGNsYXNzIHRvIGFw
cGx5IHRvIGBMaW5rVmlld2AncyBlbGVtZW50IHdoZW4gaXRzIGBsb2FkaW5nYAotICAgICAgcHJv
cGVydHkgaXMgYHRydWVgLgotCi0gICAgICBAcHJvcGVydHkgbG9hZGluZ0NsYXNzCi0gICAgICBA
dHlwZSBTdHJpbmcKLSAgICAgIEBkZWZhdWx0IGxvYWRpbmcKLSAgICAqKi8KLSAgICBsb2FkaW5n
Q2xhc3M6ICdsb2FkaW5nJywKLQotICAgIC8qKgotICAgICAgVGhlIENTUyBjbGFzcyB0byBhcHBs
eSB0byBhIGBMaW5rVmlld2AncyBlbGVtZW50IHdoZW4gaXRzIGBkaXNhYmxlZGAKLSAgICAgIHBy
b3BlcnR5IGlzIGB0cnVlYC4KLQotICAgICAgQHByb3BlcnR5IGRpc2FibGVkQ2xhc3MKLSAgICAg
IEB0eXBlIFN0cmluZwotICAgICAgQGRlZmF1bHQgZGlzYWJsZWQKLSAgICAqKi8KLSAgICBkaXNh
YmxlZENsYXNzOiAnZGlzYWJsZWQnLAotICAgIF9pc0Rpc2FibGVkOiBmYWxzZSwKLQotICAgIC8q
KgotICAgICAgRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBgTGlua1ZpZXdgIHdpbGwgdHJpZ2dlciBy
b3V0aW5nIHZpYQotICAgICAgdGhlIGByZXBsYWNlV2l0aGAgcm91dGluZyBzdHJhdGVneS4KLQot
ICAgICAgQHByb3BlcnR5IHJlcGxhY2UKLSAgICAgIEB0eXBlIEJvb2xlYW4KLSAgICAgIEBkZWZh
dWx0IGZhbHNlCi0gICAgKiovCi0gICAgcmVwbGFjZTogZmFsc2UsCi0KLSAgICAvKioKLSAgICAg
IEJ5IGRlZmF1bHQgdGhlIGB7e2xpbmstdG99fWAgaGVscGVyIHdpbGwgYmluZCB0byB0aGUgYGhy
ZWZgIGFuZAotICAgICAgYHRpdGxlYCBhdHRyaWJ1dGVzLiBJdCdzIGRpc2NvdXJhZ2UgdGhhdCB5
b3Ugb3ZlcnJpZGUgdGhlc2UgZGVmYXVsdHMsCi0gICAgICBob3dldmVyIHlvdSBjYW4gcHVzaCBv
bnRvIHRoZSBhcnJheSBpZiBuZWVkZWQuCi0KLSAgICAgIEBwcm9wZXJ0eSBhdHRyaWJ1dGVCaW5k
aW5ncwotICAgICAgQHR5cGUgQXJyYXkgfCBTdHJpbmcKLSAgICAgIEBkZWZhdWx0IFsnaHJlZics
ICd0aXRsZScsICdyZWwnXQotICAgICAqKi8KLSAgICBhdHRyaWJ1dGVCaW5kaW5nczogWydocmVm
JywgJ3RpdGxlJywgJ3JlbCddLAotCi0gICAgLyoqCi0gICAgICBCeSBkZWZhdWx0IHRoZSBge3ts
aW5rLXRvfX1gIGhlbHBlciB3aWxsIGJpbmQgdG8gdGhlIGBhY3RpdmVgLCBgbG9hZGluZ2AsIGFu
ZAotICAgICAgYGRpc2FibGVkYCBjbGFzc2VzLiBJdCBpcyBkaXNjb3VyYWdlZCB0byBvdmVycmlk
ZSB0aGVzZSBkaXJlY3RseS4KLQotICAgICAgQHByb3BlcnR5IGNsYXNzTmFtZUJpbmRpbmdzCi0g
ICAgICBAdHlwZSBBcnJheQotICAgICAgQGRlZmF1bHQgWydhY3RpdmUnLCAnbG9hZGluZycsICdk
aXNhYmxlZCddCi0gICAgICoqLwotICAgIGNsYXNzTmFtZUJpbmRpbmdzOiBbJ2FjdGl2ZScsICds
b2FkaW5nJywgJ2Rpc2FibGVkJ10sCi0KLSAgICAvKioKLSAgICAgIEJ5IGRlZmF1bHQgdGhlIGB7
e2xpbmstdG99fWAgaGVscGVyIHJlc3BvbmRzIHRvIHRoZSBgY2xpY2tgIGV2ZW50LiBZb3UKLSAg
ICAgIGNhbiBvdmVycmlkZSB0aGlzIGdsb2JhbGx5IGJ5IHNldHRpbmcgdGhpcyBwcm9wZXJ0eSB0
byB5b3VyIGN1c3RvbQotICAgICAgZXZlbnQgbmFtZS4KLQotICAgICAgVGhpcyBpcyBwYXJ0aWN1
bGFybHkgdXNlZnVsIG9uIG1vYmlsZSB3aGVuIG9uZSB3YW50cyB0byBhdm9pZCB0aGUgMzAwbXMK
LSAgICAgIGNsaWNrIGRlbGF5IHVzaW5nIHNvbWUgc29ydCBvZiBjdXN0b20gYHRhcGAgZXZlbnQu
Ci0KLSAgICAgIEBwcm9wZXJ0eSBldmVudE5hbWUKLSAgICAgIEB0eXBlIFN0cmluZwotICAgICAg
QGRlZmF1bHQgY2xpY2sKLSAgICAqLwotICAgIGV2ZW50TmFtZTogJ2NsaWNrJywKLQotICAgIC8v
IHRoaXMgaXMgZG9jJ2VkIGhlcmUgc28gaXQgc2hvd3MgdXAgaW4gdGhlIGV2ZW50cwotICAgIC8v
IHNlY3Rpb24gb2YgdGhlIEFQSSBkb2N1bWVudGF0aW9uLCB3aGljaCBpcyB3aGVyZQotICAgIC8v
IHBlb3BsZSB3aWxsIGxpa2VseSBnbyBsb29raW5nIGZvciBpdC4KLSAgICAvKioKLSAgICAgIFRy
aWdnZXJzIHRoZSBgTGlua1ZpZXdgJ3Mgcm91dGluZyBiZWhhdmlvci4gSWYKLSAgICAgIGBldmVu
dE5hbWVgIGlzIGNoYW5nZWQgdG8gYSB2YWx1ZSBvdGhlciB0aGFuIGBjbGlja2AKLSAgICAgIHRo
ZSByb3V0aW5nIGJlaGF2aW9yIHdpbGwgdHJpZ2dlciBvbiB0aGF0IGN1c3RvbSBldmVudAotICAg
ICAgaW5zdGVhZC4KLQotICAgICAgQGV2ZW50IGNsaWNrCi0gICAgKiovCi0KLSAgICAvKioKLSAg
ICAgIEFuIG92ZXJyaWRhYmxlIG1ldGhvZCBjYWxsZWQgd2hlbiBMaW5rVmlldyBvYmplY3RzIGFy
ZSBpbnN0YW50aWF0ZWQuCi0KLSAgICAgIEV4YW1wbGU6Ci0KLSAgICAgIGBgYGphdmFzY3JpcHQK
LSAgICAgIEFwcC5NeUxpbmtWaWV3ID0gRW1iZXIuTGlua1ZpZXcuZXh0ZW5kKHsKLSAgICAgICAg
aW5pdDogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgdGhpcy5fc3VwZXIoKTsKLSAgICAgICAgICBF
bWJlci5Mb2dnZXIubG9nKCdFdmVudCBpcyAnICsgdGhpcy5nZXQoJ2V2ZW50TmFtZScpKTsKLSAg
ICAgICAgfQotICAgICAgfSk7Ci0gICAgICBgYGAKLQotICAgICAgTk9URTogSWYgeW91IGRvIG92
ZXJyaWRlIGBpbml0YCBmb3IgYSBmcmFtZXdvcmsgY2xhc3MgbGlrZSBgRW1iZXIuVmlld2Agb3IK
LSAgICAgIGBFbWJlci5BcnJheUNvbnRyb2xsZXJgLCBiZSBzdXJlIHRvIGNhbGwgYHRoaXMuX3N1
cGVyKClgIGluIHlvdXIKLSAgICAgIGBpbml0YCBkZWNsYXJhdGlvbiEgSWYgeW91IGRvbid0LCBF
bWJlciBtYXkgbm90IGhhdmUgYW4gb3Bwb3J0dW5pdHkgdG8KLSAgICAgIGRvIGltcG9ydGFudCBz
ZXR1cCB3b3JrLCBhbmQgeW91J2xsIHNlZSBzdHJhbmdlIGJlaGF2aW9yIGluIHlvdXIKLSAgICAg
IGFwcGxpY2F0aW9uLgotCi0gICAgICBAbWV0aG9kIGluaXQKLSAgICAqLwotICAgIGluaXQ6IGZ1
bmN0aW9uKCkgewotICAgICAgdGhpcy5fc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKLQot
ICAgICAgLy8gTWFwIGRlc2lyZWQgZXZlbnQgbmFtZSB0byBpbnZva2UgZnVuY3Rpb24KLSAgICAg
IHZhciBldmVudE5hbWUgPSBnZXQodGhpcywgJ2V2ZW50TmFtZScpLCBpOwotICAgICAgdGhpcy5v
bihldmVudE5hbWUsIHRoaXMsIHRoaXMuX2ludm9rZSk7Ci0KLSAgICAgICAgICB9LAotCi0gICAg
LyoqCi0gICAgICBUaGlzIG1ldGhvZCBpcyBpbnZva2VkIGJ5IG9ic2VydmVycyBpbnN0YWxsZWQg
ZHVyaW5nIGBpbml0YCB0aGF0IGZpcmUKLSAgICAgIHdoZW5ldmVyIHRoZSBwYXJhbXMgY2hhbmdl
Ci0KLSAgICAgIEBwcml2YXRlCi0gICAgICBAbWV0aG9kIF9wYXJhbXNDaGFuZ2VkCi0gICAgICov
Ci0gICAgX3BhcmFtc0NoYW5nZWQ6IGZ1bmN0aW9uKCkgewotICAgICAgdGhpcy5ub3RpZnlQcm9w
ZXJ0eUNoYW5nZSgncmVzb2x2ZWRQYXJhbXMnKTsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgIFRo
aXMgaXMgY2FsbGVkIHRvIHNldHVwIG9ic2VydmVycyB0aGF0IHdpbGwgdHJpZ2dlciBhIHJlcmVu
ZGVyLgotCi0gICAgIEBwcml2YXRlCi0gICAgIEBtZXRob2QgX3NldHVwUGF0aE9ic2VydmVycwot
ICAgICoqLwotICAgIF9zZXR1cFBhdGhPYnNlcnZlcnM6IGZ1bmN0aW9uKCl7Ci0gICAgICB2YXIg
aGVscGVyUGFyYW1ldGVycyA9IHRoaXMucGFyYW1ldGVycywKLSAgICAgICAgICBsaW5rVGV4dFBh
dGggICAgID0gaGVscGVyUGFyYW1ldGVycy5vcHRpb25zLmxpbmtUZXh0UGF0aCwKLSAgICAgICAg
ICBwYXRocyA9IGdldFJlc29sdmVkUGF0aHMoaGVscGVyUGFyYW1ldGVycyksCi0gICAgICAgICAg
bGVuZ3RoID0gcGF0aHMubGVuZ3RoLAotICAgICAgICAgIHBhdGgsIGksIG5vcm1hbGl6ZWRQYXRo
OwotCi0gICAgICBpZiAobGlua1RleHRQYXRoKSB7Ci0gICAgICAgIG5vcm1hbGl6ZWRQYXRoID0g
RW1iZXIuSGFuZGxlYmFycy5ub3JtYWxpemVQYXRoKGhlbHBlclBhcmFtZXRlcnMuY29udGV4dCwg
bGlua1RleHRQYXRoLCBoZWxwZXJQYXJhbWV0ZXJzLm9wdGlvbnMuZGF0YSk7Ci0gICAgICAgIHRo
aXMucmVnaXN0ZXJPYnNlcnZlcihub3JtYWxpemVkUGF0aC5yb290LCBub3JtYWxpemVkUGF0aC5w
YXRoLCB0aGlzLCB0aGlzLnJlcmVuZGVyKTsKLSAgICAgIH0KLQotICAgICAgZm9yKGk9MDsgaSA8
IGxlbmd0aDsgaSsrKSB7Ci0gICAgICAgIHBhdGggPSBwYXRoc1tpXTsKLSAgICAgICAgaWYgKG51
bGwgPT09IHBhdGgpIHsKLSAgICAgICAgICAvLyBBIGxpdGVyYWwgdmFsdWUgd2FzIHByb3ZpZGVk
LCBub3QgYSBwYXRoLCBzbyBub3RoaW5nIHRvIG9ic2VydmUuCi0gICAgICAgICAgY29udGludWU7
Ci0gICAgICAgIH0KLQotICAgICAgICBub3JtYWxpemVkUGF0aCA9IEVtYmVyLkhhbmRsZWJhcnMu
bm9ybWFsaXplUGF0aChoZWxwZXJQYXJhbWV0ZXJzLmNvbnRleHQsIHBhdGgsIGhlbHBlclBhcmFt
ZXRlcnMub3B0aW9ucy5kYXRhKTsKLSAgICAgICAgdGhpcy5yZWdpc3Rlck9ic2VydmVyKG5vcm1h
bGl6ZWRQYXRoLnJvb3QsIG5vcm1hbGl6ZWRQYXRoLnBhdGgsIHRoaXMsIHRoaXMuX3BhcmFtc0No
YW5nZWQpOwotICAgICAgfQotICAgIH0sCi0KLSAgICBhZnRlclJlbmRlcjogZnVuY3Rpb24oKXsK
LSAgICAgIHRoaXMuX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7Ci0gICAgICB0aGlzLl9z
ZXR1cFBhdGhPYnNlcnZlcnMoKTsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICBUaGlzIG1ldGhv
ZCBpcyBpbnZva2VkIGJ5IG9ic2VydmVycyBpbnN0YWxsZWQgZHVyaW5nIGBpbml0YCB0aGF0IGZp
cmUKLSAgICAgIHdoZW5ldmVyIHRoZSBxdWVyeSBwYXJhbXMgY2hhbmdlCi0gICAgICBAcHJpdmF0
ZQotICAgICAqLwotICAgIF9xdWVyeVBhcmFtc0NoYW5nZWQ6IGZ1bmN0aW9uIChvYmplY3QsIHBh
dGgpIHsKLSAgICAgIHRoaXMubm90aWZ5UHJvcGVydHlDaGFuZ2UoJ3F1ZXJ5UGFyYW1zJyk7Ci0g
ICAgfSwKLQotCi0gICAgLyoqCi0gICAgICBFdmVuIHRob3VnaCB0aGlzIGlzbid0IGEgdmlydHVh
bCB2aWV3LCB3ZSB3YW50IHRvIHRyZWF0IGl0IGFzIGlmIGl0IGlzCi0gICAgICBzbyB0aGF0IHlv
dSBjYW4gYWNjZXNzIHRoZSBwYXJlbnQgd2l0aCB7e3ZpZXcucHJvcH19Ci0KLSAgICAgIEBwcml2
YXRlCi0gICAgICBAbWV0aG9kIGNvbmNyZXRlVmlldwotICAgICoqLwotICAgIGNvbmNyZXRlVmll
dzogRW1iZXIuY29tcHV0ZWQoZnVuY3Rpb24oKSB7Ci0gICAgICByZXR1cm4gZ2V0KHRoaXMsICdw
YXJlbnRWaWV3Jyk7Ci0gICAgfSkucHJvcGVydHkoJ3BhcmVudFZpZXcnKSwKLQotICAgIC8qKgot
Ci0gICAgICBBY2Nlc3NlZCBhcyBhIGNsYXNzbmFtZSBiaW5kaW5nIHRvIGFwcGx5IHRoZSBgTGlu
a1ZpZXdgJ3MgYGRpc2FibGVkQ2xhc3NgCi0gICAgICBDU1MgYGNsYXNzYCB0byB0aGUgZWxlbWVu
dCB3aGVuIHRoZSBsaW5rIGlzIGRpc2FibGVkLgotCi0gICAgICBXaGVuIGB0cnVlYCBpbnRlcmFj
dGlvbnMgd2l0aCB0aGUgZWxlbWVudCB3aWxsIG5vdCB0cmlnZ2VyIHJvdXRlIGNoYW5nZXMuCi0g
ICAgICBAcHJvcGVydHkgZGlzYWJsZWQKLSAgICAqLwotICAgIGRpc2FibGVkOiBFbWJlci5jb21w
dXRlZChmdW5jdGlvbiBjb21wdXRlTGlua1ZpZXdEaXNhYmxlZChrZXksIHZhbHVlKSB7Ci0gICAg
ICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkgeyB0aGlzLnNldCgnX2lzRGlzYWJsZWQnLCB2YWx1
ZSk7IH0KLQotICAgICAgcmV0dXJuIHZhbHVlID8gZ2V0KHRoaXMsICdkaXNhYmxlZENsYXNzJykg
OiBmYWxzZTsKLSAgICB9KSwKLQotICAgIC8qKgotICAgICAgQWNjZXNzZWQgYXMgYSBjbGFzc25h
bWUgYmluZGluZyB0byBhcHBseSB0aGUgYExpbmtWaWV3YCdzIGBhY3RpdmVDbGFzc2AKLSAgICAg
IENTUyBgY2xhc3NgIHRvIHRoZSBlbGVtZW50IHdoZW4gdGhlIGxpbmsgaXMgYWN0aXZlLgotCi0g
ICAgICBBIGBMaW5rVmlld2AgaXMgY29uc2lkZXJlZCBhY3RpdmUgd2hlbiBpdHMgYGN1cnJlbnRX
aGVuYCBwcm9wZXJ0eSBpcyBgdHJ1ZWAKLSAgICAgIG9yIHRoZSBhcHBsaWNhdGlvbidzIGN1cnJl
bnQgcm91dGUgaXMgdGhlIHJvdXRlIHRoZSBgTGlua1ZpZXdgIHdvdWxkIHRyaWdnZXIKLSAgICAg
IHRyYW5zaXRpb25zIGludG8uCi0KLSAgICAgIEBwcm9wZXJ0eSBhY3RpdmUKLSAgICAqKi8KLSAg
ICBhY3RpdmU6IEVtYmVyLmNvbXB1dGVkKGZ1bmN0aW9uIGNvbXB1dGVMaW5rVmlld0FjdGl2ZSgp
IHsKLSAgICAgIGlmIChnZXQodGhpcywgJ2xvYWRpbmcnKSkgeyByZXR1cm4gZmFsc2U7IH0KLQot
ICAgICAgdmFyIHJvdXRlciA9IGdldCh0aGlzLCAncm91dGVyJyksCi0gICAgICAgICAgcm91dGVB
cmdzID0gZ2V0KHRoaXMsICdyb3V0ZUFyZ3MnKSwKLSAgICAgICAgICBjb250ZXh0cyA9IHJvdXRl
QXJncy5zbGljZSgxKSwKLSAgICAgICAgICByZXNvbHZlZFBhcmFtcyA9IGdldCh0aGlzLCAncmVz
b2x2ZWRQYXJhbXMnKSwKLSAgICAgICAgICBjdXJyZW50V2hlbiA9IHRoaXMuY3VycmVudFdoZW4g
fHwgcmVzb2x2ZWRQYXJhbXNbMF0sCi0gICAgICAgICAgY3VycmVudFdpdGhJbmRleCA9IGN1cnJl
bnRXaGVuICsgJy5pbmRleCcsCi0gICAgICAgICAgaXNBY3RpdmUgPSByb3V0ZXIuaXNBY3RpdmUu
YXBwbHkocm91dGVyLCBbY3VycmVudFdoZW5dLmNvbmNhdChjb250ZXh0cykpIHx8Ci0gICAgICAg
ICAgICAgICAgICAgICByb3V0ZXIuaXNBY3RpdmUuYXBwbHkocm91dGVyLCBbY3VycmVudFdpdGhJ
bmRleF0uY29uY2F0KGNvbnRleHRzKSk7Ci0KLSAgICAgIGlmIChpc0FjdGl2ZSkgeyByZXR1cm4g
Z2V0KHRoaXMsICdhY3RpdmVDbGFzcycpOyB9Ci0gICAgfSkucHJvcGVydHkoJ3Jlc29sdmVkUGFy
YW1zJywgJ3JvdXRlQXJncycsICdyb3V0ZXIudXJsJyksCi0KLSAgICAvKioKLSAgICAgIEFjY2Vz
c2VkIGFzIGEgY2xhc3NuYW1lIGJpbmRpbmcgdG8gYXBwbHkgdGhlIGBMaW5rVmlld2AncyBgbG9h
ZGluZ0NsYXNzYAotICAgICAgQ1NTIGBjbGFzc2AgdG8gdGhlIGVsZW1lbnQgd2hlbiB0aGUgbGlu
ayBpcyBsb2FkaW5nLgotCi0gICAgICBBIGBMaW5rVmlld2AgaXMgY29uc2lkZXJlZCBsb2FkaW5n
IHdoZW4gaXQgaGFzIGF0IGxlYXN0IG9uZQotICAgICAgcGFyYW1ldGVyIHdob3NlIHZhbHVlIGlz
IGN1cnJlbnRseSBudWxsIG9yIHVuZGVmaW5lZC4gRHVyaW5nCi0gICAgICB0aGlzIHRpbWUsIGNs
aWNraW5nIHRoZSBsaW5rIHdpbGwgcGVyZm9ybSBubyB0cmFuc2l0aW9uIGFuZAotICAgICAgZW1p
dCBhIHdhcm5pbmcgdGhhdCB0aGUgbGluayBpcyBzdGlsbCBpbiBhIGxvYWRpbmcgc3RhdGUuCi0K
LSAgICAgIEBwcm9wZXJ0eSBsb2FkaW5nCi0gICAgKiovCi0gICAgbG9hZGluZzogRW1iZXIuY29t
cHV0ZWQoZnVuY3Rpb24gY29tcHV0ZUxpbmtWaWV3TG9hZGluZygpIHsKLSAgICAgIGlmICghZ2V0
KHRoaXMsICdyb3V0ZUFyZ3MnKSkgeyByZXR1cm4gZ2V0KHRoaXMsICdsb2FkaW5nQ2xhc3MnKTsg
fQotICAgIH0pLnByb3BlcnR5KCdyb3V0ZUFyZ3MnKSwKLQotICAgIC8qKgotICAgICAgUmV0dXJu
cyB0aGUgYXBwbGljYXRpb24ncyBtYWluIHJvdXRlciBmcm9tIHRoZSBjb250YWluZXIuCi0KLSAg
ICAgIEBwcml2YXRlCi0gICAgICBAcHJvcGVydHkgcm91dGVyCi0gICAgKiovCi0gICAgcm91dGVy
OiBFbWJlci5jb21wdXRlZChmdW5jdGlvbigpIHsKLSAgICAgIHJldHVybiBnZXQodGhpcywgJ2Nv
bnRyb2xsZXInKS5jb250YWluZXIubG9va3VwKCdyb3V0ZXI6bWFpbicpOwotICAgIH0pLAotCi0g
ICAgLyoqCi0gICAgICBFdmVudCBoYW5kbGVyIHRoYXQgaW52b2tlcyB0aGUgbGluaywgYWN0aXZh
dGluZyB0aGUgYXNzb2NpYXRlZCByb3V0ZS4KLQotICAgICAgQHByaXZhdGUKLSAgICAgIEBtZXRo
b2QgX2ludm9rZQotICAgICAgQHBhcmFtIHtFdmVudH0gZXZlbnQKLSAgICAqLwotICAgIF9pbnZv
a2U6IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICBpZiAoIWlzU2ltcGxlQ2xpY2soZXZlbnQpKSB7
IHJldHVybiB0cnVlOyB9Ci0KLSAgICAgIGlmICh0aGlzLnByZXZlbnREZWZhdWx0ICE9PSBmYWxz
ZSkgeyBldmVudC5wcmV2ZW50RGVmYXVsdCgpOyB9Ci0gICAgICBpZiAodGhpcy5idWJibGVzID09
PSBmYWxzZSkgeyBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgfQotCi0gICAgICBpZiAoZ2V0KHRo
aXMsICdfaXNEaXNhYmxlZCcpKSB7IHJldHVybiBmYWxzZTsgfQotCi0gICAgICBpZiAoZ2V0KHRo
aXMsICdsb2FkaW5nJykpIHsKLSAgICAgICAgRW1iZXIuTG9nZ2VyLndhcm4oIlRoaXMgbGluay10
byBpcyBpbiBhbiBpbmFjdGl2ZSBsb2FkaW5nIHN0YXRlIGJlY2F1c2UgYXQgbGVhc3Qgb25lIG9m
IGl0cyBwYXJhbWV0ZXJzIHByZXNlbnRseSBoYXMgYSBudWxsL3VuZGVmaW5lZCB2YWx1ZSwgb3Ig
dGhlIHByb3ZpZGVkIHJvdXRlIG5hbWUgaXMgaW52YWxpZC4iKTsKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgfQotCi0gICAgICB2YXIgcm91dGVyID0gZ2V0KHRoaXMsICdyb3V0ZXInKSwK
LSAgICAgICAgICByb3V0ZUFyZ3MgPSBnZXQodGhpcywgJ3JvdXRlQXJncycpOwotCi0gICAgICBp
ZiAoZ2V0KHRoaXMsICdyZXBsYWNlJykpIHsKLSAgICAgICAgcm91dGVyLnJlcGxhY2VXaXRoLmFw
cGx5KHJvdXRlciwgcm91dGVBcmdzKTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIHJvdXRlci50
cmFuc2l0aW9uVG8uYXBwbHkocm91dGVyLCByb3V0ZUFyZ3MpOwotICAgICAgfQotICAgIH0sCi0K
LSAgICAvKioKLSAgICAgIENvbXB1dGVkIHByb3BlcnR5IHRoYXQgcmV0dXJucyB0aGUgcmVzb2x2
ZWQgcGFyYW1ldGVycy4KLQotICAgICAgQHByaXZhdGUKLSAgICAgIEBwcm9wZXJ0eQotICAgICAg
QHJldHVybiB7QXJyYXl9Ci0gICAgICovCi0gICAgcmVzb2x2ZWRQYXJhbXM6IEVtYmVyLmNvbXB1
dGVkKGZ1bmN0aW9uKCkgewotICAgICAgdmFyIHBhcmFtZXRlcnMgPSB0aGlzLnBhcmFtZXRlcnMs
Ci0gICAgICAgICAgb3B0aW9ucyA9IHBhcmFtZXRlcnMub3B0aW9ucywKLSAgICAgICAgICB0eXBl
cyA9IG9wdGlvbnMudHlwZXMsCi0gICAgICAgICAgZGF0YSA9IG9wdGlvbnMuZGF0YTsKLQotICAg
ICAgCi0gICAgICAvLyBPcmlnaW5hbCBpbXBsZW1lbnRhdGlvbiBpZiBxdWVyeSBwYXJhbXMgbm90
IGVuYWJsZWQKLSAgICAgIHJldHVybiByZXNvbHZlUGFyYW1zKHBhcmFtZXRlcnMuY29udGV4dCwg
cGFyYW1ldGVycy5wYXJhbXMsIHsgdHlwZXM6IHR5cGVzLCBkYXRhOiBkYXRhIH0pOwotICAgIH0p
LnByb3BlcnR5KCksCi0KLSAgICAvKioKLSAgICAgIENvbXB1dGVkIHByb3BlcnR5IHRoYXQgcmV0
dXJucyB0aGUgY3VycmVudCByb3V0ZSBuYW1lIGFuZAotICAgICAgYW55IGR5bmFtaWMgc2VnbWVu
dHMuCi0KLSAgICAgIEBwcml2YXRlCi0gICAgICBAcHJvcGVydHkKLSAgICAgIEByZXR1cm4ge0Fy
cmF5fSBBbiBhcnJheSB3aXRoIHRoZSByb3V0ZSBuYW1lIGFuZCBhbnkgZHluYW1pYyBzZWdtZW50
cwotICAgICAqLwotICAgIHJvdXRlQXJnczogRW1iZXIuY29tcHV0ZWQoZnVuY3Rpb24gY29tcHV0
ZUxpbmtWaWV3Um91dGVBcmdzKCkgewotICAgICAgdmFyIHJlc29sdmVkUGFyYW1zID0gZ2V0KHRo
aXMsICdyZXNvbHZlZFBhcmFtcycpLnNsaWNlKDApLAotICAgICAgICAgIHJvdXRlciA9IGdldCh0
aGlzLCAncm91dGVyJyksCi0gICAgICAgICAgbmFtZWRSb3V0ZSA9IHJlc29sdmVkUGFyYW1zWzBd
OwotCi0gICAgICBpZiAoIW5hbWVkUm91dGUpIHsgcmV0dXJuOyB9Ci0KLSAgICAgIG5hbWVkUm91
dGUgPSBmdWxsUm91dGVOYW1lKHJvdXRlciwgbmFtZWRSb3V0ZSk7Ci0gICAgICByZXNvbHZlZFBh
cmFtc1swXSA9IG5hbWVkUm91dGU7Ci0KLSAgICAgIGZvciAodmFyIGkgPSAxLCBsZW4gPSByZXNv
bHZlZFBhcmFtcy5sZW5ndGg7IGkgPCBsZW47ICsraSkgewotICAgICAgICB2YXIgcGFyYW0gPSBy
ZXNvbHZlZFBhcmFtc1tpXTsKLSAgICAgICAgaWYgKHBhcmFtID09PSBudWxsIHx8IHR5cGVvZiBw
YXJhbSA9PT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAgICAvLyBJZiBjb250ZXh0cyBhcmVuJ3Qg
cHJlc2VudCwgY29uc2lkZXIgdGhlIGxpbmtWaWV3IHVubG9hZGVkLgotICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotICAgICAgfQotCi0gICAgICAKLSAgICAgIHJldHVybiByZXNvbHZlZFBh
cmFtczsKLSAgICB9KS5wcm9wZXJ0eSgncmVzb2x2ZWRQYXJhbXMnLCAncXVlcnlQYXJhbXMnLCAn
cm91dGVyLnVybCcpLAotCi0KLSAgICBfcG90ZW50aWFsUXVlcnlQYXJhbXM6IEVtYmVyLmNvbXB1
dGVkKGZ1bmN0aW9uICgpIHsKLSAgICAgIHZhciBuYW1lZFJvdXRlID0gZ2V0KHRoaXMsICdyZXNv
bHZlZFBhcmFtcycpWzBdOwotICAgICAgaWYgKCFuYW1lZFJvdXRlKSB7IHJldHVybiBudWxsOyB9
Ci0gICAgICB2YXIgcm91dGVyICAgICAgICAgID0gZ2V0KHRoaXMsICdyb3V0ZXInKTsKLQotICAg
ICAgbmFtZWRSb3V0ZSA9IGZ1bGxSb3V0ZU5hbWUocm91dGVyLCBuYW1lZFJvdXRlKTsKLQotICAg
ICAgcmV0dXJuIHJvdXRlci5yb3V0ZXIucXVlcnlQYXJhbXNGb3JIYW5kbGVyKG5hbWVkUm91dGUp
OwotICAgIH0pLnByb3BlcnR5KCdyZXNvbHZlZFBhcmFtcycpLAotCi0gICAgcXVlcnlQYXJhbXM6
IEVtYmVyLmNvbXB1dGVkKGZ1bmN0aW9uICgpIHsKLSAgICAgIHZhciBzZWxmICAgICAgICAgICAg
ICA9IHRoaXMsCi0gICAgICAgIHF1ZXJ5UGFyYW1zICAgICAgICAgPSBudWxsLAotICAgICAgICBh
bGxvd2VkUXVlcnlQYXJhbXMgID0gZ2V0KHRoaXMsICdfcG90ZW50aWFsUXVlcnlQYXJhbXMnKTsK
LQotICAgICAgaWYgKCFhbGxvd2VkUXVlcnlQYXJhbXMpIHsgcmV0dXJuIG51bGw7IH0KLSAgICAg
IGFsbG93ZWRRdWVyeVBhcmFtcy5mb3JFYWNoKGZ1bmN0aW9uIChwYXJhbSkgewotICAgICAgICB2
YXIgdmFsdWUgPSBnZXQoc2VsZiwgcGFyYW0pOwotICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9
PSAndW5kZWZpbmVkJykgewotICAgICAgICAgIHF1ZXJ5UGFyYW1zID0gcXVlcnlQYXJhbXMgfHwg
e307Ci0gICAgICAgICAgcXVlcnlQYXJhbXNbcGFyYW1dID0gdmFsdWU7Ci0gICAgICAgIH0KLSAg
ICAgIH0pOwotCi0KLSAgICAgIHJldHVybiBxdWVyeVBhcmFtczsKLSAgICB9KS5wcm9wZXJ0eSgn
X3BvdGVudGlhbFF1ZXJ5UGFyYW1zLltdJyksCi0KLSAgICAvKioKLSAgICAgIFNldHMgdGhlIGVs
ZW1lbnQncyBgaHJlZmAgYXR0cmlidXRlIHRvIHRoZSB1cmwgZm9yCi0gICAgICB0aGUgYExpbmtW
aWV3YCdzIHRhcmdldGVkIHJvdXRlLgotCi0gICAgICBJZiB0aGUgYExpbmtWaWV3YCdzIGB0YWdO
YW1lYCBpcyBjaGFuZ2VkIHRvIGEgdmFsdWUgb3RoZXIKLSAgICAgIHRoYW4gYGFgLCB0aGlzIHBy
b3BlcnR5IHdpbGwgYmUgaWdub3JlZC4KLQotICAgICAgQHByb3BlcnR5IGhyZWYKLSAgICAqKi8K
LSAgICBocmVmOiBFbWJlci5jb21wdXRlZChmdW5jdGlvbiBjb21wdXRlTGlua1ZpZXdIcmVmKCkg
ewotICAgICAgaWYgKGdldCh0aGlzLCAndGFnTmFtZScpICE9PSAnYScpIHsgcmV0dXJuOyB9Ci0K
LSAgICAgIHZhciByb3V0ZXIgPSBnZXQodGhpcywgJ3JvdXRlcicpLAotICAgICAgICAgIHJvdXRl
QXJncyA9IGdldCh0aGlzLCAncm91dGVBcmdzJyk7Ci0KLSAgICAgIHJldHVybiByb3V0ZUFyZ3Mg
PyByb3V0ZXIuZ2VuZXJhdGUuYXBwbHkocm91dGVyLCByb3V0ZUFyZ3MpIDogZ2V0KHRoaXMsICds
b2FkaW5nSHJlZicpOwotICAgIH0pLnByb3BlcnR5KCdyb3V0ZUFyZ3MnKSwKLQotICAgIC8qKgot
ICAgICAgVGhlIGRlZmF1bHQgaHJlZiB2YWx1ZSB0byB1c2Ugd2hpbGUgYSBsaW5rLXRvIGlzIGxv
YWRpbmcuCi0gICAgICBPbmx5IGFwcGxpZXMgd2hlbiB0YWdOYW1lIGlzICdhJwotCi0gICAgICBA
cHJvcGVydHkgbG9hZGluZ0hyZWYKLSAgICAgIEB0eXBlIFN0cmluZwotICAgICAgQGRlZmF1bHQg
IwotICAgICovCi0gICAgbG9hZGluZ0hyZWY6ICcjJwotICB9KTsKLQotICBMaW5rVmlldy50b1N0
cmluZyA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gIkxpbmtWaWV3IjsgfTsKLQotICAvKioKLSAgICBU
aGUgYHt7bGluay10b319YCBoZWxwZXIgcmVuZGVycyBhIGxpbmsgdG8gdGhlIHN1cHBsaWVkCi0g
ICAgYHJvdXRlTmFtZWAgcGFzc2luZyBhbiBvcHRpb25hbGx5IHN1cHBsaWVkIG1vZGVsIHRvIHRo
ZQotICAgIHJvdXRlIGFzIGl0cyBgbW9kZWxgIGNvbnRleHQgb2YgdGhlIHJvdXRlLiBUaGUgYmxv
Y2sKLSAgICBmb3IgYHt7bGluay10b319YCBiZWNvbWVzIHRoZSBpbm5lckhUTUwgb2YgdGhlIHJl
bmRlcmVkCi0gICAgZWxlbWVudDoKLQotICAgIGBgYGhhbmRsZWJhcnMKLSAgICB7eyNsaW5rLXRv
ICdwaG90b0dhbGxlcnknfX0KLSAgICAgIEdyZWF0IEhhbXN0ZXIgUGhvdG9zCi0gICAge3svbGlu
ay10b319Ci0gICAgYGBgCi0KLSAgICBgYGBodG1sCi0gICAgPGEgaHJlZj0iL2hhbXN0ZXItcGhv
dG9zIj4KLSAgICAgIEdyZWF0IEhhbXN0ZXIgUGhvdG9zCi0gICAgPC9hPgotICAgIGBgYAotCi0g
ICAgIyMjIFN1cHBseWluZyBhIHRhZ05hbWUKLSAgICBCeSBkZWZhdWx0IGB7e2xpbmstdG99fWAg
cmVuZGVycyBhbiBgPGE+YCBlbGVtZW50LiBUaGlzIGNhbgotICAgIGJlIG92ZXJyaWRkZW4gZm9y
IGEgc2luZ2xlIHVzZSBvZiBge3tsaW5rLXRvfX1gIGJ5IHN1cHBseWluZwotICAgIGEgYHRhZ05h
bWVgIG9wdGlvbjoKLQotICAgIGBgYGhhbmRsZWJhcnMKLSAgICB7eyNsaW5rLXRvICdwaG90b0dh
bGxlcnknIHRhZ05hbWU9ImxpIn19Ci0gICAgICBHcmVhdCBIYW1zdGVyIFBob3RvcwotICAgIHt7
L2xpbmstdG99fQotICAgIGBgYAotCi0gICAgYGBgaHRtbAotICAgIDxsaT4KLSAgICAgIEdyZWF0
IEhhbXN0ZXIgUGhvdG9zCi0gICAgPC9saT4KLSAgICBgYGAKLQotICAgIFRvIG92ZXJyaWRlIHRo
aXMgb3B0aW9uIGZvciB5b3VyIGVudGlyZSBhcHBsaWNhdGlvbiwgc2VlCi0gICAgIk92ZXJyaWRp
bmcgQXBwbGljYXRpb24td2lkZSBEZWZhdWx0cyIuCi0KLSAgICAjIyMgRGlzYWJsaW5nIHRoZSBg
bGluay10b2AgaGVscGVyCi0gICAgQnkgZGVmYXVsdCBge3tsaW5rLXRvfX1gIGlzIGVuYWJsZWQu
Ci0gICAgYW55IHBhc3NlZCB2YWx1ZSB0byBgZGlzYWJsZWRgIGhlbHBlciBwcm9wZXJ0eSB3aWxs
IGRpc2FibGUgdGhlIGBsaW5rLXRvYCBoZWxwZXIuCi0KLSAgICBzdGF0aWMgdXNlOiB0aGUgYGRp
c2FibGVkYCBvcHRpb246Ci0KLSAgICBgYGBoYW5kbGViYXJzCi0gICAge3sjbGluay10byAncGhv
dG9HYWxsZXJ5JyBkaXNhYmxlZD10cnVlfX0KLSAgICAgIEdyZWF0IEhhbXN0ZXIgUGhvdG9zCi0g
ICAge3svbGluay10b319Ci0gICAgYGBgCi0KLSAgICBkeW5hbWljIHVzZTogdGhlIGBkaXNhYmxl
ZFdoZW5gIG9wdGlvbjoKLQotICAgIGBgYGhhbmRsZWJhcnMKLSAgICB7eyNsaW5rLXRvICdwaG90
b0dhbGxlcnknIGRpc2FibGVkV2hlbj1jb250cm9sbGVyLnNvbWVQcm9wZXJ0eX19Ci0gICAgICBH
cmVhdCBIYW1zdGVyIFBob3RvcwotICAgIHt7L2xpbmstdG99fQotICAgIGBgYAotCi0gICAgYW55
IHBhc3NlZCB2YWx1ZSB0byBgZGlzYWJsZWRgIHdpbGwgZGlzYWJsZSBpdCBleGNlcHQgYHVuZGVm
aW5lZGAuCi0gICAgdG8gZW5zdXJlIHRoYXQgb25seSBgdHJ1ZWAgZGlzYWJsZSB0aGUgYGxpbmst
dG9gIGhlbHBlciB5b3UgY2FuCi0gICAgb3ZlcnJpZGUgdGhlIGdsb2JhbCBiZWhhdmlvdXIgb2Yg
YEVtYmVyLkxpbmtWaWV3YC4KLQotICAgIGBgYGphdmFzY3JpcHQKLSAgICBFbWJlci5MaW5rVmll
dy5yZW9wZW4oewotICAgICAgZGlzYWJsZWQ6IEVtYmVyLmNvbXB1dGVkKGZ1bmN0aW9uKGtleSwg
dmFsdWUpIHsKLSAgICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHsKLSAgICAgICAgICB0
aGlzLnNldCgnX2lzRGlzYWJsZWQnLCB2YWx1ZSA9PT0gdHJ1ZSk7Ci0gICAgICAgIH0KLSAgICAg
ICAgcmV0dXJuIHZhbHVlID09PSB0cnVlID8gZ2V0KHRoaXMsICdkaXNhYmxlZENsYXNzJykgOiBm
YWxzZTsKLSAgICAgIH0pCi0gICAgfSk7Ci0gICAgYGBgCi0KLSAgICBzZWUgIk92ZXJyaWRpbmcg
QXBwbGljYXRpb24td2lkZSBEZWZhdWx0cyIgZm9yIG1vcmUuCi0KLSAgICAjIyMgSGFuZGxpbmcg
YGhyZWZgCi0gICAgYHt7bGluay10b319YCB3aWxsIHVzZSB5b3VyIGFwcGxpY2F0aW9uJ3MgUm91
dGVyIHRvCi0gICAgZmlsbCB0aGUgZWxlbWVudCdzIGBocmVmYCBwcm9wZXJ0eSB3aXRoIGEgdXJs
IHRoYXQKLSAgICBtYXRjaGVzIHRoZSBwYXRoIHRvIHRoZSBzdXBwbGllZCBgcm91dGVOYW1lYCBm
b3IgeW91cgotICAgIHJvdXRlcnMncyBjb25maWd1cmVkIGBMb2NhdGlvbmAgc2NoZW1lLCB3aGlj
aCBkZWZhdWx0cwotICAgIHRvIEVtYmVyLkhhc2hMb2NhdGlvbi4KLQotICAgICMjIyBIYW5kbGlu
ZyBjdXJyZW50IHJvdXRlCi0gICAgYHt7bGluay10b319YCB3aWxsIGFwcGx5IGEgQ1NTIGNsYXNz
IG5hbWUgb2YgJ2FjdGl2ZScKLSAgICB3aGVuIHRoZSBhcHBsaWNhdGlvbidzIGN1cnJlbnQgcm91
dGUgbWF0Y2hlcwotICAgIHRoZSBzdXBwbGllZCByb3V0ZU5hbWUuIEZvciBleGFtcGxlLCBpZiB0
aGUgYXBwbGljYXRpb24ncwotICAgIGN1cnJlbnQgcm91dGUgaXMgJ3Bob3RvR2FsbGVyeS5yZWNl
bnQnIHRoZSBmb2xsb3dpbmcKLSAgICB1c2Ugb2YgYHt7bGluay10b319YDoKLQotICAgIGBgYGhh
bmRsZWJhcnMKLSAgICB7eyNsaW5rLXRvICdwaG90b0dhbGxlcnkucmVjZW50J319Ci0gICAgICBH
cmVhdCBIYW1zdGVyIFBob3RvcyBmcm9tIHRoZSBsYXN0IHdlZWsKLSAgICB7ey9saW5rLXRvfX0K
LSAgICBgYGAKLQotICAgIHdpbGwgcmVzdWx0IGluCi0KLSAgICBgYGBodG1sCi0gICAgPGEgaHJl
Zj0iL2hhbXN0ZXItcGhvdG9zL3RoaXMtd2VlayIgY2xhc3M9ImFjdGl2ZSI+Ci0gICAgICBHcmVh
dCBIYW1zdGVyIFBob3RvcwotICAgIDwvYT4KLSAgICBgYGAKLQotICAgIFRoZSBDU1MgY2xhc3Mg
bmFtZSB1c2VkIGZvciBhY3RpdmUgY2xhc3NlcyBjYW4gYmUgY3VzdG9taXplZAotICAgIGZvciBh
IHNpbmdsZSB1c2Ugb2YgYHt7bGluay10b319YCBieSBwYXNzaW5nIGFuIGBhY3RpdmVDbGFzc2AK
LSAgICBvcHRpb246Ci0KLSAgICBgYGBoYW5kbGViYXJzCi0gICAge3sjbGluay10byAncGhvdG9H
YWxsZXJ5LnJlY2VudCcgYWN0aXZlQ2xhc3M9ImN1cnJlbnQtdXJsIn19Ci0gICAgICBHcmVhdCBI
YW1zdGVyIFBob3RvcyBmcm9tIHRoZSBsYXN0IHdlZWsKLSAgICB7ey9saW5rLXRvfX0KLSAgICBg
YGAKLQotICAgIGBgYGh0bWwKLSAgICA8YSBocmVmPSIvaGFtc3Rlci1waG90b3MvdGhpcy13ZWVr
IiBjbGFzcz0iY3VycmVudC11cmwiPgotICAgICAgR3JlYXQgSGFtc3RlciBQaG90b3MKLSAgICA8
L2E+Ci0gICAgYGBgCi0KLSAgICBUbyBvdmVycmlkZSB0aGlzIG9wdGlvbiBmb3IgeW91ciBlbnRp
cmUgYXBwbGljYXRpb24sIHNlZQotICAgICJPdmVycmlkaW5nIEFwcGxpY2F0aW9uLXdpZGUgRGVm
YXVsdHMiLgotCi0gICAgIyMjIFN1cHBseWluZyBhIG1vZGVsCi0gICAgQW4gb3B0aW9uYWwgbW9k
ZWwgYXJndW1lbnQgY2FuIGJlIHVzZWQgZm9yIHJvdXRlcyB3aG9zZQotICAgIHBhdGhzIGNvbnRh
aW4gZHluYW1pYyBzZWdtZW50cy4gVGhpcyBhcmd1bWVudCB3aWxsIGJlY29tZQotICAgIHRoZSBt
b2RlbCBjb250ZXh0IG9mIHRoZSBsaW5rZWQgcm91dGU6Ci0KLSAgICBgYGBqYXZhc2NyaXB0Ci0g
ICAgQXBwLlJvdXRlci5tYXAoZnVuY3Rpb24oKSB7Ci0gICAgICB0aGlzLnJlc291cmNlKCJwaG90
b0dhbGxlcnkiLCB7cGF0aDogImhhbXN0ZXItcGhvdG9zLzpwaG90b19pZCJ9KTsKLSAgICB9KTsK
LSAgICBgYGAKLQotICAgIGBgYGhhbmRsZWJhcnMKLSAgICB7eyNsaW5rLXRvICdwaG90b0dhbGxl
cnknIGFQaG90b319Ci0gICAgICB7e2FQaG90by50aXRsZX19Ci0gICAge3svbGluay10b319Ci0g
ICAgYGBgCi0KLSAgICBgYGBodG1sCi0gICAgPGEgaHJlZj0iL2hhbXN0ZXItcGhvdG9zLzQyIj4K
LSAgICAgIFRvbXN0ZXIKLSAgICA8L2E+Ci0gICAgYGBgCi0KLSAgICAjIyMgU3VwcGx5aW5nIG11
bHRpcGxlIG1vZGVscwotICAgIEZvciBkZWVwLWxpbmtpbmcgdG8gcm91dGUgcGF0aHMgdGhhdCBj
b250YWluIG11bHRpcGxlCi0gICAgZHluYW1pYyBzZWdtZW50cywgbXVsdGlwbGUgbW9kZWwgYXJn
dW1lbnRzIGNhbiBiZSB1c2VkLgotICAgIEFzIHRoZSByb3V0ZXIgdHJhbnNpdGlvbnMgdGhyb3Vn
aCB0aGUgcm91dGUgcGF0aCwgZWFjaAotICAgIHN1cHBsaWVkIG1vZGVsIGFyZ3VtZW50IHdpbGwg
YmVjb21lIHRoZSBjb250ZXh0IGZvciB0aGUKLSAgICByb3V0ZSB3aXRoIHRoZSBkeW5hbWljIHNl
Z21lbnRzOgotCi0gICAgYGBgamF2YXNjcmlwdAotICAgIEFwcC5Sb3V0ZXIubWFwKGZ1bmN0aW9u
KCkgewotICAgICAgdGhpcy5yZXNvdXJjZSgicGhvdG9HYWxsZXJ5Iiwge3BhdGg6ICJoYW1zdGVy
LXBob3Rvcy86cGhvdG9faWQifSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRoaXMucm91dGUoImNv
bW1lbnQiLCB7cGF0aDogImNvbW1lbnRzLzpjb21tZW50X2lkIn0pOwotICAgICAgfSk7Ci0gICAg
fSk7Ci0gICAgYGBgCi0gICAgVGhpcyBhcmd1bWVudCB3aWxsIGJlY29tZSB0aGUgbW9kZWwgY29u
dGV4dCBvZiB0aGUgbGlua2VkIHJvdXRlOgotCi0gICAgYGBgaGFuZGxlYmFycwotICAgIHt7I2xp
bmstdG8gJ3Bob3RvR2FsbGVyeS5jb21tZW50JyBhUGhvdG8gY29tbWVudH19Ci0gICAgICB7e2Nv
bW1lbnQuYm9keX19Ci0gICAge3svbGluay10b319Ci0gICAgYGBgCi0KLSAgICBgYGBodG1sCi0g
ICAgPGEgaHJlZj0iL2hhbXN0ZXItcGhvdG9zLzQyL2NvbW1lbnQvNzE4Ij4KLSAgICAgIEErKysg
d291bGQgc251Z2dsZSBhZ2Fpbi4KLSAgICA8L2E+Ci0gICAgYGBgCi0KLSAgICAjIyMgU3VwcGx5
aW5nIGFuIGV4cGxpY2l0IGR5bmFtaWMgc2VnbWVudCB2YWx1ZQotICAgIElmIHlvdSBkb24ndCBo
YXZlIGEgbW9kZWwgb2JqZWN0IGF2YWlsYWJsZSB0byBwYXNzIHRvIGB7e2xpbmstdG99fWAsCi0g
ICAgYW4gb3B0aW9uYWwgc3RyaW5nIG9yIGludGVnZXIgYXJndW1lbnQgY2FuIGJlIHBhc3NlZCBm
b3Igcm91dGVzIHdob3NlCi0gICAgcGF0aHMgY29udGFpbiBkeW5hbWljIHNlZ21lbnRzLiBUaGlz
IGFyZ3VtZW50IHdpbGwgYmVjb21lIHRoZSB2YWx1ZQotICAgIG9mIHRoZSBkeW5hbWljIHNlZ21l
bnQ6Ci0KLSAgICBgYGBqYXZhc2NyaXB0Ci0gICAgQXBwLlJvdXRlci5tYXAoZnVuY3Rpb24oKSB7
Ci0gICAgICB0aGlzLnJlc291cmNlKCJwaG90b0dhbGxlcnkiLCB7cGF0aDogImhhbXN0ZXItcGhv
dG9zLzpwaG90b19pZCJ9KTsKLSAgICB9KTsKLSAgICBgYGAKLQotICAgIGBgYGhhbmRsZWJhcnMK
LSAgICB7eyNsaW5rLXRvICdwaG90b0dhbGxlcnknIGFQaG90b0lkfX0KLSAgICAgIHt7YVBob3Rv
LnRpdGxlfX0KLSAgICB7ey9saW5rLXRvfX0KLSAgICBgYGAKLQotICAgIGBgYGh0bWwKLSAgICA8
YSBocmVmPSIvaGFtc3Rlci1waG90b3MvNDIiPgotICAgICAgVG9tc3RlcgotICAgIDwvYT4KLSAg
ICBgYGAKLQotICAgIFdoZW4gdHJhbnNpdGlvbmluZyBpbnRvIHRoZSBsaW5rZWQgcm91dGUsIHRo
ZSBgbW9kZWxgIGhvb2sgd2lsbAotICAgIGJlIHRyaWdnZXJlZCB3aXRoIHBhcmFtZXRlcnMgaW5j
bHVkaW5nIHRoaXMgcGFzc2VkIGlkZW50aWZpZXIuCi0KLSAgICAjIyMgQWxsb3dpbmcgRGVmYXVs
dCBBY3Rpb24KLQotICAgQnkgZGVmYXVsdCB0aGUgYHt7bGluay10b319YCBoZWxwZXIgcHJldmVu
dHMgdGhlIGRlZmF1bHQgYnJvd3NlciBhY3Rpb24KLSAgIGJ5IGNhbGxpbmcgYHByZXZlbnREZWZh
dWx0KClgIGFzIHRoaXMgc29ydCBvZiBhY3Rpb24gYnViYmxpbmcgaXMgbm9ybWFsbHkKLSAgIGhh
bmRsZWQgaW50ZXJuYWxseSBhbmQgd2UgZG8gbm90IHdhbnQgdG8gdGFrZSB0aGUgYnJvd3NlciB0
byBhIG5ldyBVUkwgKGZvcgotICAgZXhhbXBsZSkuCi0KLSAgIElmIHlvdSBuZWVkIHRvIG92ZXJy
aWRlIHRoaXMgYmVoYXZpb3Igc3BlY2lmeSBgcHJldmVudERlZmF1bHQ9ZmFsc2VgIGluCi0gICB5
b3VyIHRlbXBsYXRlOgotCi0gICAgYGBgaGFuZGxlYmFycwotICAgIHt7I2xpbmstdG8gJ3Bob3Rv
R2FsbGVyeScgYVBob3RvSWQgcHJldmVudERlZmF1bHQ9ZmFsc2V9fQotICAgICAge3thUGhvdG9J
ZC50aXRsZX19Ci0gICAge3svbGluay10b319Ci0gICAgYGBgCi0KLSAgICAjIyMgT3ZlcnJpZGlu
ZyBhdHRyaWJ1dGVzCi0gICAgWW91IGNhbiBvdmVycmlkZSBhbnkgZ2l2ZW4gcHJvcGVydHkgb2Yg
dGhlIEVtYmVyLkxpbmtWaWV3Ci0gICAgdGhhdCBpcyBnZW5lcmF0ZWQgYnkgdGhlIGB7e2xpbmst
dG99fWAgaGVscGVyIGJ5IHBhc3NpbmcKLSAgICBrZXkvdmFsdWUgcGFpcnMsIGxpa2Ugc286Ci0K
LSAgICBgYGBoYW5kbGViYXJzCi0gICAge3sjbGluay10byAgYVBob3RvIHRhZ05hbWU9J2xpJyB0
aXRsZT0nRm9sbG93aW5nIHRoaXMgbGluayB3aWxsIGNoYW5nZSB5b3VyIGxpZmUnIGNsYXNzTmFt
ZXM9J3BpYyBzd2VldCd9fQotICAgICAgVWgtbWF6aW5nIQotICAgIHt7L2xpbmstdG99fQotICAg
IGBgYAotCi0gICAgU2VlIFtFbWJlci5MaW5rVmlld10oL2FwaS9jbGFzc2VzL0VtYmVyLkxpbmtW
aWV3Lmh0bWwpIGZvciBhCi0gICAgY29tcGxldGUgbGlzdCBvZiBvdmVycmlkZWFibGUgcHJvcGVy
dGllcy4gQmUgc3VyZSB0byBhbHNvCi0gICAgY2hlY2sgb3V0IGluaGVyaXRlZCBwcm9wZXJ0aWVz
IG9mIGBMaW5rVmlld2AuCi0KLSAgICAjIyMgT3ZlcnJpZGluZyBBcHBsaWNhdGlvbi13aWRlIERl
ZmF1bHRzCi0gICAgYGB7e2xpbmstdG99fWBgIGNyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgRW1iZXIu
TGlua1ZpZXcKLSAgICBmb3IgcmVuZGVyaW5nLiBUbyBvdmVycmlkZSBvcHRpb25zIGZvciB5b3Vy
IGVudGlyZQotICAgIGFwcGxpY2F0aW9uLCByZW9wZW4gRW1iZXIuTGlua1ZpZXcgYW5kIHN1cHBs
eSB0aGUKLSAgICBkZXNpcmVkIHZhbHVlczoKLQotICAgIGBgYCBqYXZhc2NyaXB0Ci0gICAgRW1i
ZXIuTGlua1ZpZXcucmVvcGVuKHsKLSAgICAgIGFjdGl2ZUNsYXNzOiAiaXMtYWN0aXZlIiwKLSAg
ICAgIHRhZ05hbWU6ICdsaScKLSAgICB9KQotICAgIGBgYAotCi0gICAgSXQgaXMgYWxzbyBwb3Nz
aWJsZSB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBldmVudCBpbgotICAgIHRoaXMgbWFubmVyOgot
Ci0gICAgYGBgIGphdmFzY3JpcHQKLSAgICBFbWJlci5MaW5rVmlldy5yZW9wZW4oewotICAgICAg
ZXZlbnROYW1lOiAnY3VzdG9tRXZlbnROYW1lJwotICAgIH0pOwotICAgIGBgYAotCi0gICAgQG1l
dGhvZCBsaW5rLXRvCi0gICAgQGZvciBFbWJlci5IYW5kbGViYXJzLmhlbHBlcnMKLSAgICBAcGFy
YW0ge1N0cmluZ30gcm91dGVOYW1lCi0gICAgQHBhcmFtIHtPYmplY3R9IFtjb250ZXh0XSoKLSAg
ICBAcGFyYW0gW29wdGlvbnNdIHtPYmplY3R9IEhhbmRsZWJhcnMga2V5L3ZhbHVlIHBhaXJzIG9m
IG9wdGlvbnMsIHlvdSBjYW4gb3ZlcnJpZGUgYW55IHByb3BlcnR5IG9mIEVtYmVyLkxpbmtWaWV3
Ci0gICAgQHJldHVybiB7U3RyaW5nfSBIVE1MIHN0cmluZwotICAgIEBzZWUge0VtYmVyLkxpbmtW
aWV3fQotICAqLwotICBFbWJlci5IYW5kbGViYXJzLnJlZ2lzdGVySGVscGVyKCdsaW5rLXRvJywg
ZnVuY3Rpb24gbGlua1RvSGVscGVyKG5hbWUpIHsKLSAgICB2YXIgb3B0aW9ucyA9IFtdLnNsaWNl
LmNhbGwoYXJndW1lbnRzLCAtMSlbMF0sCi0gICAgICAgIHBhcmFtcyA9IFtdLnNsaWNlLmNhbGwo
YXJndW1lbnRzLCAwLCAtMSksCi0gICAgICAgIGhhc2ggPSBvcHRpb25zLmhhc2g7Ci0KLSAgICBo
YXNoLmRpc2FibGVkQmluZGluZyA9IGhhc2guZGlzYWJsZWRXaGVuOwotCi0gICAgaWYgKCFvcHRp
b25zLmZuKSB7Ci0gICAgICB2YXIgbGlua1RpdGxlID0gcGFyYW1zLnNoaWZ0KCk7Ci0gICAgICB2
YXIgbGlua1R5cGUgPSBvcHRpb25zLnR5cGVzLnNoaWZ0KCk7Ci0gICAgICB2YXIgY29udGV4dCA9
IHRoaXM7Ci0gICAgICBpZiAobGlua1R5cGUgPT09ICdJRCcpIHsKLSAgICAgICAgb3B0aW9ucy5s
aW5rVGV4dFBhdGggPSBsaW5rVGl0bGU7Ci0gICAgICAgIG9wdGlvbnMuZm4gPSBmdW5jdGlvbigp
IHsKLSAgICAgICAgICByZXR1cm4gRW1iZXIuSGFuZGxlYmFycy5nZXQoY29udGV4dCwgbGlua1Rp
dGxlLCBvcHRpb25zKTsKLSAgICAgICAgfTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIG9wdGlv
bnMuZm4gPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICByZXR1cm4gbGlua1RpdGxlOwotICAgICAg
ICB9OwotICAgICAgfQotICAgIH0KLQotICAgIGhhc2gucGFyYW1ldGVycyA9IHsKLSAgICAgIGNv
bnRleHQ6IHRoaXMsCi0gICAgICBvcHRpb25zOiBvcHRpb25zLAotICAgICAgcGFyYW1zOiBwYXJh
bXMKLSAgICB9OwotCi0gICAgcmV0dXJuIEVtYmVyLkhhbmRsZWJhcnMuaGVscGVycy52aWV3LmNh
bGwodGhpcywgTGlua1ZpZXcsIG9wdGlvbnMpOwotICB9KTsKLQotICAvKioKLSAgICBTZWUgW2xp
bmstdG9dKC9hcGkvY2xhc3Nlcy9FbWJlci5IYW5kbGViYXJzLmhlbHBlcnMuaHRtbCNtZXRob2Rf
bGluay10bykKLQotICAgIEBtZXRob2QgbGlua1RvCi0gICAgQGZvciBFbWJlci5IYW5kbGViYXJz
LmhlbHBlcnMKLSAgICBAZGVwcmVjYXRlZAotICAgIEBwYXJhbSB7U3RyaW5nfSByb3V0ZU5hbWUK
LSAgICBAcGFyYW0ge09iamVjdH0gW2NvbnRleHRdKgotICAgIEByZXR1cm4ge1N0cmluZ30gSFRN
TCBzdHJpbmcKLSAgKi8KLSAgRW1iZXIuSGFuZGxlYmFycy5yZWdpc3RlckhlbHBlcignbGlua1Rv
JywgZnVuY3Rpb24gbGlua1RvSGVscGVyKCkgewotICAgIEVtYmVyLndhcm4oIlRoZSAnbGlua1Rv
JyB2aWV3IGhlbHBlciBpcyBkZXByZWNhdGVkIGluIGZhdm9yIG9mICdsaW5rLXRvJyIpOwotICAg
IHJldHVybiBFbWJlci5IYW5kbGViYXJzLmhlbHBlcnNbJ2xpbmstdG8nXS5hcHBseSh0aGlzLCBh
cmd1bWVudHMpOwotICB9KTsKLX0pOwotCi0KLQotfSkoKTsKLQotCi0KLShmdW5jdGlvbigpIHsK
LS8qKgotQG1vZHVsZSBlbWJlcgotQHN1Ym1vZHVsZSBlbWJlci1yb3V0aW5nCi0qLwotCi12YXIg
Z2V0ID0gRW1iZXIuZ2V0LCBzZXQgPSBFbWJlci5zZXQ7Ci1FbWJlci5vbkxvYWQoJ0VtYmVyLkhh
bmRsZWJhcnMnLCBmdW5jdGlvbihIYW5kbGViYXJzKSB7Ci0gIC8qKgotICBAbW9kdWxlIGVtYmVy
Ci0gIEBzdWJtb2R1bGUgZW1iZXItcm91dGluZwotICAqLwotCi0gIEhhbmRsZWJhcnMuT3V0bGV0
VmlldyA9IEVtYmVyLkNvbnRhaW5lclZpZXcuZXh0ZW5kKEVtYmVyLl9NZXRhbW9ycGgpOwotCi0g
IC8qKgotICAgIFRoZSBgb3V0bGV0YCBoZWxwZXIgaXMgYSBwbGFjZWhvbGRlciB0aGF0IHRoZSBy
b3V0ZXIgd2lsbCBmaWxsIGluIHdpdGgKLSAgICB0aGUgYXBwcm9wcmlhdGUgdGVtcGxhdGUgYmFz
ZWQgb24gdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIGFwcGxpY2F0aW9uLgotCi0gICAgYGBgIGhh
bmRsZWJhcnMKLSAgICB7e291dGxldH19Ci0gICAgYGBgCi0KLSAgICBCeSBkZWZhdWx0LCBhIHRl
bXBsYXRlIGJhc2VkIG9uIEVtYmVyJ3MgbmFtaW5nIGNvbnZlbnRpb25zIHdpbGwgYmUgcmVuZGVy
ZWQKLSAgICBpbnRvIHRoZSBgb3V0bGV0YCAoZS5nLiBgQXBwLlBvc3RzUm91dGVgIHdpbGwgcmVu
ZGVyIHRoZSBgcG9zdHNgIHRlbXBsYXRlKS4KLQotICAgIFlvdSBjYW4gcmVuZGVyIGEgZGlmZmVy
ZW50IHRlbXBsYXRlIGJ5IHVzaW5nIHRoZSBgcmVuZGVyKClgIG1ldGhvZCBpbiB0aGUKLSAgICBy
b3V0ZSdzIGByZW5kZXJUZW1wbGF0ZWAgaG9vay4gVGhlIGZvbGxvd2luZyB3aWxsIHJlbmRlciB0
aGUgYGZhdm9yaXRlUG9zdGAKLSAgICB0ZW1wbGF0ZSBpbnRvIHRoZSBgb3V0bGV0YC4KLQotICAg
IGBgYCBqYXZhc2NyaXB0Ci0gICAgQXBwLlBvc3RzUm91dGUgPSBFbWJlci5Sb3V0ZS5leHRlbmQo
ewotICAgICAgcmVuZGVyVGVtcGxhdGU6IGZ1bmN0aW9uKCkgewotICAgICAgICB0aGlzLnJlbmRl
cignZmF2b3JpdGVQb3N0Jyk7Ci0gICAgICB9Ci0gICAgfSk7Ci0gICAgYGBgCi0KLSAgICBZb3Ug
Y2FuIGNyZWF0ZSBjdXN0b20gbmFtZWQgb3V0bGV0cyBmb3IgbW9yZSBjb250cm9sLgotCi0gICAg
YGBgIGhhbmRsZWJhcnMKLSAgICB7e291dGxldCAnZmF2b3JpdGVQb3N0J319Ci0gICAge3tvdXRs
ZXQgJ3Bvc3RzJ319Ci0gICAgYGBgCi0KLSAgICBUaGVuIHlvdSBjYW4gZGVmaW5lIHdoYXQgdGVt
cGxhdGUgaXMgcmVuZGVyZWQgaW50byBlYWNoIG91dGxldCBpbiB5b3VyCi0gICAgcm91dGUuCi0K
LQotICAgIGBgYCBqYXZhc2NyaXB0Ci0gICAgQXBwLlBvc3RzUm91dGUgPSBFbWJlci5Sb3V0ZS5l
eHRlbmQoewotICAgICAgcmVuZGVyVGVtcGxhdGU6IGZ1bmN0aW9uKCkgewotICAgICAgICB0aGlz
LnJlbmRlcignZmF2b3JpdGVQb3N0JywgeyBvdXRsZXQ6ICdmYXZvcml0ZVBvc3QnIH0pOwotICAg
ICAgICB0aGlzLnJlbmRlcigncG9zdHMnLCB7IG91dGxldDogJ3Bvc3RzJyB9KTsKLSAgICAgIH0K
LSAgICB9KTsKLSAgICBgYGAKLQotICAgIFlvdSBjYW4gc3BlY2lmeSB0aGUgdmlldyB0aGF0IHRo
ZSBvdXRsZXQgdXNlcyB0byBjb250YWluIGFuZCBtYW5hZ2UgdGhlCi0gICAgdGVtcGxhdGVzIHJl
bmRlcmVkIGludG8gaXQuCi0KLSAgICBgYGAgaGFuZGxlYmFycwotICAgIHt7b3V0bGV0IHZpZXc9
J3NlY3Rpb25Db250YWluZXInfX0KLSAgICBgYGAKLQotICAgIGBgYCBqYXZhc2NyaXB0Ci0gICAg
QXBwLlNlY3Rpb25Db250YWluZXIgPSBFbWJlci5Db250YWluZXJWaWV3LmV4dGVuZCh7Ci0gICAg
ICB0YWdOYW1lOiAnc2VjdGlvbicsCi0gICAgICBjbGFzc05hbWVzOiBbJ3NwZWNpYWwnXQotICAg
IH0pOwotICAgIGBgYAotCi0gICAgQG1ldGhvZCBvdXRsZXQKLSAgICBAZm9yIEVtYmVyLkhhbmRs
ZWJhcnMuaGVscGVycwotICAgIEBwYXJhbSB7U3RyaW5nfSBwcm9wZXJ0eSB0aGUgcHJvcGVydHkg
b24gdGhlIGNvbnRyb2xsZXIKLSAgICAgIHRoYXQgaG9sZHMgdGhlIHZpZXcgZm9yIHRoaXMgb3V0
bGV0Ci0gICAgQHJldHVybiB7U3RyaW5nfSBIVE1MIHN0cmluZwotICAqLwotICBIYW5kbGViYXJz
LnJlZ2lzdGVySGVscGVyKCdvdXRsZXQnLCBmdW5jdGlvbiBvdXRsZXRIZWxwZXIocHJvcGVydHks
IG9wdGlvbnMpIHsKLSAgIAotICAgIHZhciBvdXRsZXRTb3VyY2UsCi0gICAgICAgIGNvbnRhaW5l
ciwKLSAgICAgICAgdmlld05hbWUsCi0gICAgICAgIHZpZXdDbGFzcywKLSAgICAgICAgdmlld0Z1
bGxOYW1lOwotCi0gICAgaWYgKHByb3BlcnR5ICYmIHByb3BlcnR5LmRhdGEgJiYgcHJvcGVydHku
ZGF0YS5pc1JlbmRlckRhdGEpIHsKLSAgICAgIG9wdGlvbnMgPSBwcm9wZXJ0eTsKLSAgICAgIHBy
b3BlcnR5ID0gJ21haW4nOwotICAgIH0KLQotICAgIGNvbnRhaW5lciA9IG9wdGlvbnMuZGF0YS52
aWV3LmNvbnRhaW5lcjsKLQotICAgIG91dGxldFNvdXJjZSA9IG9wdGlvbnMuZGF0YS52aWV3Owot
ICAgIHdoaWxlICghb3V0bGV0U291cmNlLmdldCgndGVtcGxhdGUuaXNUb3AnKSkgewotICAgICAg
b3V0bGV0U291cmNlID0gb3V0bGV0U291cmNlLmdldCgnX3BhcmVudFZpZXcnKTsKLSAgICB9Ci0K
LSAgICAvLyBwcm92aWRlIGNvbnRyb2xsZXIgb3ZlcnJpZGUKLSAgICB2aWV3TmFtZSA9IG9wdGlv
bnMuaGFzaC52aWV3OwotCi0gICAgaWYgKHZpZXdOYW1lKSB7Ci0gICAgICB2aWV3RnVsbE5hbWUg
PSAndmlldzonICsgdmlld05hbWU7Ci0gICAgICBFbWJlci5hc3NlcnQoIlVzaW5nIGEgcXVvdGVs
ZXNzIHZpZXcgcGFyYW1ldGVyIHdpdGgge3tvdXRsZXR9fSBpcyBub3Qgc3VwcG9ydGVkLiBQbGVh
c2UgdXBkYXRlIHRvIHF1b3RlZCB1c2FnZSAne3tvdXRsZXQgXCIiICsgdmlld05hbWUgKyAiXCJ9
fS4iLCBvcHRpb25zLmhhc2hUeXBlcy52aWV3ICE9PSAnSUQnKTsKLSAgICAgIEVtYmVyLmFzc2Vy
dCgiVGhlIHZpZXcgbmFtZSB5b3Ugc3VwcGxpZWQgJyIgKyB2aWV3TmFtZSArICInIGRpZCBub3Qg
cmVzb2x2ZSB0byBhIHZpZXcuIiwgY29udGFpbmVyLmhhcyh2aWV3RnVsbE5hbWUpKTsKLSAgICB9
Ci0KLSAgICB2aWV3Q2xhc3MgPSB2aWV3TmFtZSA/IGNvbnRhaW5lci5sb29rdXBGYWN0b3J5KHZp
ZXdGdWxsTmFtZSkgOiBvcHRpb25zLmhhc2gudmlld0NsYXNzIHx8IEhhbmRsZWJhcnMuT3V0bGV0
VmlldzsKLQotICAgIG9wdGlvbnMuZGF0YS52aWV3LnNldCgnb3V0bGV0U291cmNlJywgb3V0bGV0
U291cmNlKTsKLSAgICBvcHRpb25zLmhhc2guY3VycmVudFZpZXdCaW5kaW5nID0gJ192aWV3Lm91
dGxldFNvdXJjZS5fb3V0bGV0cy4nICsgcHJvcGVydHk7Ci0KLSAgICByZXR1cm4gSGFuZGxlYmFy
cy5oZWxwZXJzLnZpZXcuY2FsbCh0aGlzLCB2aWV3Q2xhc3MsIG9wdGlvbnMpOwotICB9KTsKLX0p
OwotCi19KSgpOwotCi0KLQotKGZ1bmN0aW9uKCkgewotLyoqCi1AbW9kdWxlIGVtYmVyCi1Ac3Vi
bW9kdWxlIGVtYmVyLXJvdXRpbmcKLSovCi0KLXZhciBnZXQgPSBFbWJlci5nZXQsIHNldCA9IEVt
YmVyLnNldDsKLUVtYmVyLm9uTG9hZCgnRW1iZXIuSGFuZGxlYmFycycsIGZ1bmN0aW9uKEhhbmRs
ZWJhcnMpIHsKLQotICAvKioKLSAgICBDYWxsaW5nIGBge3tyZW5kZXJ9fWBgIGZyb20gd2l0aGlu
IGEgdGVtcGxhdGUgd2lsbCBpbnNlcnQgYW5vdGhlcgotICAgIHRlbXBsYXRlIHRoYXQgbWF0Y2hl
cyB0aGUgcHJvdmlkZWQgbmFtZS4gVGhlIGluc2VydGVkIHRlbXBsYXRlIHdpbGwKLSAgICBhY2Nl
c3MgaXRzIHByb3BlcnRpZXMgb24gaXRzIG93biBjb250cm9sbGVyIChyYXRoZXIgdGhhbiB0aGUg
Y29udHJvbGxlcgotICAgIG9mIHRoZSBwYXJlbnQgdGVtcGxhdGUpLgotCi0gICAgSWYgYSB2aWV3
IGNsYXNzIHdpdGggdGhlIHNhbWUgbmFtZSBleGlzdHMsIHRoZSB2aWV3IGNsYXNzIGFsc28gd2ls
bCBiZSB1c2VkLgotCi0gICAgTm90ZTogQSBnaXZlbiBjb250cm9sbGVyIG1heSBvbmx5IGJlIHVz
ZWQgKm9uY2UqIGluIHlvdXIgYXBwIGluIHRoaXMgbWFubmVyLgotICAgIEEgc2luZ2xldG9uIGlu
c3RhbmNlIG9mIHRoZSBjb250cm9sbGVyIHdpbGwgYmUgY3JlYXRlZCBmb3IgeW91LgotCi0gICAg
RXhhbXBsZToKLQotICAgIGBgYGphdmFzY3JpcHQKLSAgICBBcHAuTmF2aWdhdGlvbkNvbnRyb2xs
ZXIgPSBFbWJlci5Db250cm9sbGVyLmV4dGVuZCh7Ci0gICAgICB3aG86ICJ3b3JsZCIKLSAgICB9
KTsKLSAgICBgYGAKLQotICAgIGBgYGhhbmRsZWJhcnMKLSAgICA8IS0tIG5hdmlnYXRpb24uaGJz
IC0tPgotICAgIEhlbGxvLCB7e3dob319LgotICAgIGBgYAotCi0gICAgYGBgaGFuZGVsYmFycwot
ICAgIDwhLS0gYXBwbGljYXRpb24uaGJzIC0tPgotICAgIDxoMT5NeSBncmVhdCBhcHA8L2gxPgot
ICAgIHt7cmVuZGVyIG5hdmlnYXRpb259fQotICAgIGBgYAotCi0gICAgYGBgaHRtbAotICAgIDxo
MT5NeSBncmVhdCBhcHA8L2gxPgotICAgIDxkaXYgY2xhc3M9J2VtYmVyLXZpZXcnPgotICAgICAg
SGVsbG8sIHdvcmxkLgotICAgIDwvZGl2PgotICAgIGBgYAotCi0gICAgT3B0aW9uYWxseSB5b3Ug
bWF5IHByb3ZpZGUgYSBzZWNvbmQgYXJndW1lbnQ6IGEgcHJvcGVydHkgcGF0aAotICAgIHRoYXQg
d2lsbCBiZSBib3VuZCB0byB0aGUgYG1vZGVsYCBwcm9wZXJ0eSBvZiB0aGUgY29udHJvbGxlci4K
LQotICAgIElmIGEgYG1vZGVsYCBwcm9wZXJ0eSBwYXRoIGlzIHNwZWNpZmllZCwgdGhlbiBhIG5l
dyBpbnN0YW5jZSBvZiB0aGUKLSAgICBjb250cm9sbGVyIHdpbGwgYmUgY3JlYXRlZCBhbmQgYHt7
cmVuZGVyfX1gIGNhbiBiZSB1c2VkIG11bHRpcGxlIHRpbWVzCi0gICAgd2l0aCB0aGUgc2FtZSBu
YW1lLgotCi0gICBGb3IgZXhhbXBsZSBpZiB5b3UgaGFkIHRoaXMgYGF1dGhvcmAgdGVtcGxhdGUu
Ci0KLSAgIGBgYGhhbmRsZWJhcnMKLTxkaXYgY2xhc3M9ImF1dGhvciI+Ci0gIFdyaXR0ZW4gYnkg
e3tmaXJzdE5hbWV9fSB7e2xhc3ROYW1lfX0uCi0gIFRvdGFsIFBvc3RzOiB7e3Bvc3RDb3VudH19
Ci08L2Rpdj4KLSAgYGBgCi0KLSAgWW91IGNvdWxkIHJlbmRlciBpdCBpbnNpZGUgdGhlIGBwb3N0
YCB0ZW1wbGF0ZSB1c2luZyB0aGUgYHJlbmRlcmAgaGVscGVyLgotCi0gIGBgYGhhbmRsZWJhcnMK
LTxkaXYgY2xhc3M9InBvc3QiPgotICA8aDE+e3t0aXRsZX19PC9oMT4KLSAgPGRpdj57e2JvZHl9
fTwvZGl2PgotICB7e3JlbmRlciAiYXV0aG9yIiBhdXRob3J9fQotPC9kaXY+Ci0gICBgYGAKLQot
ICAgIEBtZXRob2QgcmVuZGVyCi0gICAgQGZvciBFbWJlci5IYW5kbGViYXJzLmhlbHBlcnMKLSAg
ICBAcGFyYW0ge1N0cmluZ30gbmFtZQotICAgIEBwYXJhbSB7T2JqZWN0P30gY29udGV4dFN0cmlu
ZwotICAgIEBwYXJhbSB7SGFzaH0gb3B0aW9ucwotICAgIEByZXR1cm4ge1N0cmluZ30gSFRNTCBz
dHJpbmcKLSAgKi8KLSAgRW1iZXIuSGFuZGxlYmFycy5yZWdpc3RlckhlbHBlcigncmVuZGVyJywg
ZnVuY3Rpb24gcmVuZGVySGVscGVyKG5hbWUsIGNvbnRleHRTdHJpbmcsIG9wdGlvbnMpIHsKLSAg
ICB2YXIgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDsKLSAgICBFbWJlci5hc3NlcnQoIllvdSBt
dXN0IHBhc3MgYSB0ZW1wbGF0ZSB0byByZW5kZXIiLCBsZW5ndGggPj0gMik7Ci0gICAgdmFyIGNv
bnRleHRQcm92aWRlZCA9IGxlbmd0aCA9PT0gMywKLSAgICAgICAgY29udGFpbmVyLCByb3V0ZXIs
IGNvbnRyb2xsZXIsIHZpZXcsIGNvbnRleHQsIGxvb2t1cE9wdGlvbnM7Ci0KLSAgICBjb250YWlu
ZXIgPSAob3B0aW9ucyB8fCBjb250ZXh0U3RyaW5nKS5kYXRhLmtleXdvcmRzLmNvbnRyb2xsZXIu
Y29udGFpbmVyOwotICAgIHJvdXRlciA9IGNvbnRhaW5lci5sb29rdXAoJ3JvdXRlcjptYWluJyk7
Ci0KLSAgICBpZiAobGVuZ3RoID09PSAyKSB7Ci0gICAgICAvLyB1c2UgdGhlIHNpbmdsZXRvbiBj
b250cm9sbGVyCi0gICAgICBvcHRpb25zID0gY29udGV4dFN0cmluZzsKLSAgICAgIGNvbnRleHRT
dHJpbmcgPSB1bmRlZmluZWQ7Ci0gICAgICBFbWJlci5hc3NlcnQoIllvdSBjYW4gb25seSB1c2Ug
dGhlIHt7cmVuZGVyfX0gaGVscGVyIG9uY2Ugd2l0aG91dCBhIG1vZGVsIG9iamVjdCBhcyBpdHMg
c2Vjb25kIGFyZ3VtZW50LCBhcyBpbiB7e3JlbmRlciBcInBvc3RcIiBwb3N0fX0uIiwgIXJvdXRl
ciB8fCAhcm91dGVyLl9sb29rdXBBY3RpdmVWaWV3KG5hbWUpKTsKLSAgICB9IGVsc2UgaWYgKGxl
bmd0aCA9PT0gMykgewotICAgICAgLy8gY3JlYXRlIGEgbmV3IGNvbnRyb2xsZXIKLSAgICAgIGNv
bnRleHQgPSBFbWJlci5IYW5kbGViYXJzLmdldChvcHRpb25zLmNvbnRleHRzWzFdLCBjb250ZXh0
U3RyaW5nLCBvcHRpb25zKTsKLSAgICB9IGVsc2UgewotICAgICAgdGhyb3cgRW1iZXIuRXJyb3Io
IllvdSBtdXN0IHBhc3MgYSB0ZW1wbGF0ZU5hbWUgdG8gcmVuZGVyIik7Ci0gICAgfQotCi0gICAg
Ly8gIyBsZWdhY3kgbmFtZXNwYWNlCi0gICAgbmFtZSA9IG5hbWUucmVwbGFjZSgvXC8vZywgJy4n
KTsKLSAgICAvLyBcIGxlZ2FjeSBzbGFzaCBhcyBuYW1lc3BhY2Ugc3VwcG9ydAotCi0KLSAgICB2
aWV3ID0gY29udGFpbmVyLmxvb2t1cCgndmlldzonICsgbmFtZSkgfHwgY29udGFpbmVyLmxvb2t1
cCgndmlldzpkZWZhdWx0Jyk7Ci0KLSAgICAvLyBwcm92aWRlIGNvbnRyb2xsZXIgb3ZlcnJpZGUK
LSAgICB2YXIgY29udHJvbGxlck5hbWUgPSBvcHRpb25zLmhhc2guY29udHJvbGxlciB8fCBuYW1l
OwotICAgIHZhciBjb250cm9sbGVyRnVsbE5hbWUgPSAnY29udHJvbGxlcjonICsgY29udHJvbGxl
ck5hbWU7Ci0KLSAgICBpZiAob3B0aW9ucy5oYXNoLmNvbnRyb2xsZXIpIHsKLSAgICAgIEVtYmVy
LmFzc2VydCgiVGhlIGNvbnRyb2xsZXIgbmFtZSB5b3Ugc3VwcGxpZWQgJyIgKyBjb250cm9sbGVy
TmFtZSArICInIGRpZCBub3QgcmVzb2x2ZSB0byBhIGNvbnRyb2xsZXIuIiwgY29udGFpbmVyLmhh
cyhjb250cm9sbGVyRnVsbE5hbWUpKTsKLSAgICB9Ci0KLSAgICB2YXIgcGFyZW50Q29udHJvbGxl
ciA9IG9wdGlvbnMuZGF0YS5rZXl3b3Jkcy5jb250cm9sbGVyOwotCi0gICAgLy8gY2hvb3NlIG5h
bWUKLSAgICBpZiAobGVuZ3RoID4gMikgewotICAgICAgdmFyIGZhY3RvcnkgPSBjb250YWluZXIu
bG9va3VwRmFjdG9yeShjb250cm9sbGVyRnVsbE5hbWUpIHx8Ci0gICAgICAgICAgICAgICAgICAg
IEVtYmVyLmdlbmVyYXRlQ29udHJvbGxlckZhY3RvcnkoY29udGFpbmVyLCBjb250cm9sbGVyTmFt
ZSwgY29udGV4dCk7Ci0KLSAgICAgIGNvbnRyb2xsZXIgPSBmYWN0b3J5LmNyZWF0ZSh7Ci0gICAg
ICAgIG1vZGVsOiBjb250ZXh0LAotICAgICAgICBwYXJlbnRDb250cm9sbGVyOiBwYXJlbnRDb250
cm9sbGVyLAotICAgICAgICB0YXJnZXQ6IHBhcmVudENvbnRyb2xsZXIKLSAgICAgIH0pOwotCi0g
ICAgfSBlbHNlIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjb250YWluZXIubG9va3VwKGNvbnRyb2xs
ZXJGdWxsTmFtZSkgfHwKLSAgICAgICAgICAgICAgICAgICBFbWJlci5nZW5lcmF0ZUNvbnRyb2xs
ZXIoY29udGFpbmVyLCBjb250cm9sbGVyTmFtZSk7Ci0KLSAgICAgIGNvbnRyb2xsZXIuc2V0UHJv
cGVydGllcyh7Ci0gICAgICAgIHRhcmdldDogcGFyZW50Q29udHJvbGxlciwKLSAgICAgICAgcGFy
ZW50Q29udHJvbGxlcjogcGFyZW50Q29udHJvbGxlcgotICAgICAgfSk7Ci0gICAgfQotCi0gICAg
dmFyIHJvb3QgPSBvcHRpb25zLmNvbnRleHRzWzFdOwotCi0gICAgaWYgKHJvb3QpIHsKLSAgICAg
IHZpZXcucmVnaXN0ZXJPYnNlcnZlcihyb290LCBjb250ZXh0U3RyaW5nLCBmdW5jdGlvbigpIHsK
LSAgICAgICAgY29udHJvbGxlci5zZXQoJ21vZGVsJywgRW1iZXIuSGFuZGxlYmFycy5nZXQocm9v
dCwgY29udGV4dFN0cmluZywgb3B0aW9ucykpOwotICAgICAgfSk7Ci0gICAgfQotCi0gICAgb3B0
aW9ucy5oYXNoLnZpZXdOYW1lID0gRW1iZXIuU3RyaW5nLmNhbWVsaXplKG5hbWUpOwotCi0gICAg
dmFyIHRlbXBsYXRlTmFtZSA9ICd0ZW1wbGF0ZTonICsgbmFtZTsKLSAgICBFbWJlci5hc3NlcnQo
IllvdSB1c2VkIGB7e3JlbmRlciAnIiArIG5hbWUgKyAiJ319YCwgYnV0ICciICsgbmFtZSArICIn
IGNhbiBub3QgYmUgZm91bmQgYXMgZWl0aGVyIGEgdGVtcGxhdGUgb3IgYSB2aWV3LiIsIGNvbnRh
aW5lci5oYXMoInZpZXc6IiArIG5hbWUpIHx8IGNvbnRhaW5lci5oYXModGVtcGxhdGVOYW1lKSk7
Ci0gICAgb3B0aW9ucy5oYXNoLnRlbXBsYXRlID0gY29udGFpbmVyLmxvb2t1cCh0ZW1wbGF0ZU5h
bWUpOwotCi0gICAgb3B0aW9ucy5oYXNoLmNvbnRyb2xsZXIgPSBjb250cm9sbGVyOwotCi0gICAg
aWYgKHJvdXRlciAmJiAhY29udGV4dCkgewotICAgICAgcm91dGVyLl9jb25uZWN0QWN0aXZlVmll
dyhuYW1lLCB2aWV3KTsKLSAgICB9Ci0KLSAgICBFbWJlci5IYW5kbGViYXJzLmhlbHBlcnMudmll
dy5jYWxsKHRoaXMsIHZpZXcsIG9wdGlvbnMpOwotICB9KTsKLX0pOwotCi19KSgpOwotCi0KLQot
KGZ1bmN0aW9uKCkgewotLyoqCi1AbW9kdWxlIGVtYmVyCi1Ac3VibW9kdWxlIGVtYmVyLXJvdXRp
bmcKLSovCi1FbWJlci5vbkxvYWQoJ0VtYmVyLkhhbmRsZWJhcnMnLCBmdW5jdGlvbihIYW5kbGVi
YXJzKSB7Ci0KLSAgdmFyIHJlc29sdmVQYXJhbXMgPSBFbWJlci5Sb3V0ZXIucmVzb2x2ZVBhcmFt
cywKLSAgICAgIGlzU2ltcGxlQ2xpY2sgPSBFbWJlci5WaWV3VXRpbHMuaXNTaW1wbGVDbGljazsK
LQotICB2YXIgRW1iZXJIYW5kbGViYXJzID0gRW1iZXIuSGFuZGxlYmFycywKLSAgICAgIGhhbmRs
ZWJhcnNHZXQgPSBFbWJlckhhbmRsZWJhcnMuZ2V0LAotICAgICAgU2FmZVN0cmluZyA9IEVtYmVy
SGFuZGxlYmFycy5TYWZlU3RyaW5nLAotICAgICAgZm9yRWFjaCA9IEVtYmVyLkFycmF5UG9seWZp
bGxzLmZvckVhY2gsCi0gICAgICBnZXQgPSBFbWJlci5nZXQsCi0gICAgICBhX3NsaWNlID0gQXJy
YXkucHJvdG90eXBlLnNsaWNlOwotCi0gIGZ1bmN0aW9uIGFyZ3Mob3B0aW9ucywgYWN0aW9uTmFt
ZSkgewotICAgIHZhciByZXQgPSBbXTsKLSAgICBpZiAoYWN0aW9uTmFtZSkgeyByZXQucHVzaChh
Y3Rpb25OYW1lKTsgfQotCi0gICAgdmFyIHR5cGVzID0gb3B0aW9ucy5vcHRpb25zLnR5cGVzLnNs
aWNlKDEpLAotICAgICAgICBkYXRhID0gb3B0aW9ucy5vcHRpb25zLmRhdGE7Ci0KLSAgICByZXR1
cm4gcmV0LmNvbmNhdChyZXNvbHZlUGFyYW1zKG9wdGlvbnMuY29udGV4dCwgb3B0aW9ucy5wYXJh
bXMsIHsgdHlwZXM6IHR5cGVzLCBkYXRhOiBkYXRhIH0pKTsKLSAgfQotCi0gIHZhciBBY3Rpb25I
ZWxwZXIgPSBFbWJlckhhbmRsZWJhcnMuQWN0aW9uSGVscGVyID0gewotICAgIHJlZ2lzdGVyZWRB
Y3Rpb25zOiB7fQotICB9OwotCi0gIHZhciBrZXlzID0gWyJhbHQiLCAic2hpZnQiLCAibWV0YSIs
ICJjdHJsIl07Ci0KLSAgdmFyIFBPSU5URVJfRVZFTlRfVFlQRV9SRUdFWCA9IC9eY2xpY2t8bW91
c2V8dG91Y2gvOwotCi0gIHZhciBpc0FsbG93ZWRFdmVudCA9IGZ1bmN0aW9uKGV2ZW50LCBhbGxv
d2VkS2V5cykgewotICAgIGlmICh0eXBlb2YgYWxsb3dlZEtleXMgPT09ICJ1bmRlZmluZWQiKSB7
Ci0gICAgICBpZiAoUE9JTlRFUl9FVkVOVF9UWVBFX1JFR0VYLnRlc3QoZXZlbnQudHlwZSkpIHsK
LSAgICAgICAgcmV0dXJuIGlzU2ltcGxlQ2xpY2soZXZlbnQpOwotICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgYWxsb3dlZEtleXMgPSAnJzsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoYWxsb3dl
ZEtleXMuaW5kZXhPZigiYW55IikgPj0gMCkgewotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQot
Ci0gICAgdmFyIGFsbG93ZWQgPSB0cnVlOwotCi0gICAgZm9yRWFjaC5jYWxsKGtleXMsIGZ1bmN0
aW9uKGtleSkgewotICAgICAgaWYgKGV2ZW50W2tleSArICJLZXkiXSAmJiBhbGxvd2VkS2V5cy5p
bmRleE9mKGtleSkgPT09IC0xKSB7Ci0gICAgICAgIGFsbG93ZWQgPSBmYWxzZTsKLSAgICAgIH0K
LSAgICB9KTsKLQotICAgIHJldHVybiBhbGxvd2VkOwotICB9OwotCi0gIEFjdGlvbkhlbHBlci5y
ZWdpc3RlckFjdGlvbiA9IGZ1bmN0aW9uKGFjdGlvbk5hbWUsIG9wdGlvbnMsIGFsbG93ZWRLZXlz
KSB7Ci0gICAgdmFyIGFjdGlvbklkID0gKCsrRW1iZXIudXVpZCkudG9TdHJpbmcoKTsKLQotICAg
IEFjdGlvbkhlbHBlci5yZWdpc3RlcmVkQWN0aW9uc1thY3Rpb25JZF0gPSB7Ci0gICAgICBldmVu
dE5hbWU6IG9wdGlvbnMuZXZlbnROYW1lLAotICAgICAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxl
UmVnaXN0ZXJlZEFjdGlvbihldmVudCkgewotICAgICAgICBpZiAoIWlzQWxsb3dlZEV2ZW50KGV2
ZW50LCBhbGxvd2VkS2V5cykpIHsgcmV0dXJuIHRydWU7IH0KLQotICAgICAgICBpZiAob3B0aW9u
cy5wcmV2ZW50RGVmYXVsdCAhPT0gZmFsc2UpIHsKLSAgICAgICAgICBldmVudC5wcmV2ZW50RGVm
YXVsdCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKG9wdGlvbnMuYnViYmxlcyA9PT0gZmFs
c2UpIHsKLSAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIHZhciB0YXJnZXQgPSBvcHRpb25zLnRhcmdldDsKLQotICAgICAgICBpZiAodGFyZ2V0
LnRhcmdldCkgewotICAgICAgICAgIHRhcmdldCA9IGhhbmRsZWJhcnNHZXQodGFyZ2V0LnJvb3Qs
IHRhcmdldC50YXJnZXQsIHRhcmdldC5vcHRpb25zKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICB0YXJnZXQgPSB0YXJnZXQucm9vdDsKLSAgICAgICAgfQotCi0gICAgICAgIEVtYmVyLnJ1
bihmdW5jdGlvbiBydW5SZWdpc3RlcmVkQWN0aW9uKCkgewotICAgICAgICAgIGlmICh0YXJnZXQu
c2VuZCkgewotICAgICAgICAgICAgdGFyZ2V0LnNlbmQuYXBwbHkodGFyZ2V0LCBhcmdzKG9wdGlv
bnMucGFyYW1ldGVycywgYWN0aW9uTmFtZSkpOwotICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICBFbWJlci5hc3NlcnQoIlRoZSBhY3Rpb24gJyIgKyBhY3Rpb25OYW1lICsgIicgZGlkIG5v
dCBleGlzdCBvbiAiICsgdGFyZ2V0LCB0eXBlb2YgdGFyZ2V0W2FjdGlvbk5hbWVdID09PSAnZnVu
Y3Rpb24nKTsKLSAgICAgICAgICAgIHRhcmdldFthY3Rpb25OYW1lXS5hcHBseSh0YXJnZXQsIGFy
Z3Mob3B0aW9ucy5wYXJhbWV0ZXJzKSk7Ci0gICAgICAgICAgfQotICAgICAgICB9KTsKLSAgICAg
IH0KLSAgICB9OwotCi0gICAgb3B0aW9ucy52aWV3Lm9uKCd3aWxsQ2xlYXJSZW5kZXInLCBmdW5j
dGlvbigpIHsKLSAgICAgIGRlbGV0ZSBBY3Rpb25IZWxwZXIucmVnaXN0ZXJlZEFjdGlvbnNbYWN0
aW9uSWRdOwotICAgIH0pOwotCi0gICAgcmV0dXJuIGFjdGlvbklkOwotICB9OwotCi0gIC8qKgot
ICAgIFRoZSBge3thY3Rpb259fWAgaGVscGVyIHJlZ2lzdGVycyBhbiBIVE1MIGVsZW1lbnQgd2l0
aGluIGEgdGVtcGxhdGUgZm9yIERPTQotICAgIGV2ZW50IGhhbmRsaW5nIGFuZCBmb3J3YXJkcyB0
aGF0IGludGVyYWN0aW9uIHRvIHRoZSB0ZW1wbGF0ZXMncyBjb250cm9sbGVyCi0gICAgb3Igc3Vw
cGxpZWQgYHRhcmdldGAgb3B0aW9uIChzZWUgJ1NwZWNpZnlpbmcgYSBUYXJnZXQnKS4KLQotICAg
IElmIHRoZSBjb250cm9sbGVyIGRvZXMgbm90IGltcGxlbWVudCB0aGUgZXZlbnQsIHRoZSBldmVu
dCBpcyBzZW50Ci0gICAgdG8gdGhlIGN1cnJlbnQgcm91dGUsIGFuZCBpdCBidWJibGVzIHVwIHRo
ZSByb3V0ZSBoaWVyYXJjaHkgZnJvbSB0aGVyZS4KLQotICAgIFVzZXIgaW50ZXJhY3Rpb24gd2l0
aCB0aGF0IGVsZW1lbnQgd2lsbCBpbnZva2UgdGhlIHN1cHBsaWVkIGFjdGlvbiBuYW1lIG9uCi0g
ICAgdGhlIGFwcHJvcHJpYXRlIHRhcmdldC4KLQotICAgIEdpdmVuIHRoZSBmb2xsb3dpbmcgYXBw
bGljYXRpb24gSGFuZGxlYmFycyB0ZW1wbGF0ZSBvbiB0aGUgcGFnZQotCi0gICAgYGBgaGFuZGxl
YmFycwotICAgIDxkaXYge3thY3Rpb24gJ2FuQWN0aW9uTmFtZSd9fT4KLSAgICAgIGNsaWNrIG1l
Ci0gICAgPC9kaXY+Ci0gICAgYGBgCi0KLSAgICBBbmQgYXBwbGljYXRpb24gY29kZQotCi0gICAg
YGBgamF2YXNjcmlwdAotICAgIEFwcC5BcHBsaWNhdGlvbkNvbnRyb2xsZXIgPSBFbWJlci5Db250
cm9sbGVyLmV4dGVuZCh7Ci0gICAgICBhY3Rpb25zOiB7Ci0gICAgICAgIGFuQWN0aW9uTmFtZTog
ZnVuY3Rpb24oKSB7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9KTsKLSAgICBgYGAKLQotICAg
IFdpbGwgcmVzdWx0IGluIHRoZSBmb2xsb3dpbmcgcmVuZGVyZWQgSFRNTAotCi0gICAgYGBgaHRt
bAotICAgIDxkaXYgY2xhc3M9ImVtYmVyLXZpZXciPgotICAgICAgPGRpdiBkYXRhLWVtYmVyLWFj
dGlvbj0iMSI+Ci0gICAgICAgIGNsaWNrIG1lCi0gICAgICA8L2Rpdj4KLSAgICA8L2Rpdj4KLSAg
ICBgYGAKLQotICAgIENsaWNraW5nICJjbGljayBtZSIgd2lsbCB0cmlnZ2VyIHRoZSBgYW5BY3Rp
b25OYW1lYCBhY3Rpb24gb2YgdGhlCi0gICAgYEFwcC5BcHBsaWNhdGlvbkNvbnRyb2xsZXJgLiBJ
biB0aGlzIGNhc2UsIG5vIGFkZGl0aW9uYWwgcGFyYW1ldGVycyB3aWxsIGJlIHBhc3NlZC4KLQot
ICAgIElmIHlvdSBwcm92aWRlIGFkZGl0aW9uYWwgcGFyYW1ldGVycyB0byB0aGUgaGVscGVyOgot
Ci0gICAgYGBgaGFuZGxlYmFycwotICAgIDxidXR0b24ge3thY3Rpb24gJ2VkaXQnIHBvc3R9fT5F
ZGl0PC9idXR0b24+Ci0gICAgYGBgCi0KLSAgICBUaG9zZSBwYXJhbWV0ZXJzIHdpbGwgYmUgcGFz
c2VkIGFsb25nIGFzIGFyZ3VtZW50cyB0byB0aGUgSmF2YVNjcmlwdAotICAgIGZ1bmN0aW9uIGlt
cGxlbWVudGluZyB0aGUgYWN0aW9uLgotCi0gICAgIyMjIEV2ZW50IFByb3BhZ2F0aW9uCi0KLSAg
ICBFdmVudHMgdHJpZ2dlcmVkIHRocm91Z2ggdGhlIGFjdGlvbiBoZWxwZXIgd2lsbCBhdXRvbWF0
aWNhbGx5IGhhdmUKLSAgICBgLnByZXZlbnREZWZhdWx0KClgIGNhbGxlZCBvbiB0aGVtLiBZb3Ug
ZG8gbm90IG5lZWQgdG8gZG8gc28gaW4geW91ciBldmVudAotICAgIGhhbmRsZXJzLiBJZiB5b3Ug
bmVlZCB0byBhbGxvdyBldmVudCBwcm9wYWdhdGlvbiAodG8gaGFuZGxlIGZpbGUgaW5wdXRzIGZv
cgotICAgIGV4YW1wbGUpIHlvdSBjYW4gc3VwcGx5IHRoZSBgcHJldmVudERlZmF1bHQ9ZmFsc2Vg
IG9wdGlvbiB0byB0aGUgYHt7YWN0aW9ufX1gIGhlbHBlcjoKLQotICAgIGBgYGhhbmRsZWJhcnMK
LSAgICA8ZGl2IHt7YWN0aW9uICJzYXlIZWxsbyIgcHJldmVudERlZmF1bHQ9ZmFsc2V9fT4KLSAg
ICAgIDxpbnB1dCB0eXBlPSJmaWxlIiAvPgotICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiAv
PgotICAgIDwvZGl2PgotICAgIGBgYAotCi0gICAgVG8gZGlzYWJsZSBidWJibGluZywgcGFzcyBg
YnViYmxlcz1mYWxzZWAgdG8gdGhlIGhlbHBlcjoKLQotICAgIGBgYGhhbmRsZWJhcnMKLSAgICA8
YnV0dG9uIHt7YWN0aW9uICdlZGl0JyBwb3N0IGJ1YmJsZXM9ZmFsc2V9fT5FZGl0PC9idXR0b24+
Ci0gICAgYGBgCi0KLSAgICBJZiB5b3UgbmVlZCB0aGUgZGVmYXVsdCBoYW5kbGVyIHRvIHRyaWdn
ZXIgeW91IHNob3VsZCBlaXRoZXIgcmVnaXN0ZXIgeW91cgotICAgIG93biBldmVudCBoYW5kbGVy
LCBvciB1c2UgZXZlbnQgbWV0aG9kcyBvbiB5b3VyIHZpZXcgY2xhc3MuIFNlZSBbRW1iZXIuVmll
d10oL2FwaS9jbGFzc2VzL0VtYmVyLlZpZXcuaHRtbCkKLSAgICAnUmVzcG9uZGluZyB0byBCcm93
c2VyIEV2ZW50cycgZm9yIG1vcmUgaW5mb3JtYXRpb24uCi0KLSAgICAjIyMgU3BlY2lmeWluZyBE
T00gZXZlbnQgdHlwZQotCi0gICAgQnkgZGVmYXVsdCB0aGUgYHt7YWN0aW9ufX1gIGhlbHBlciBy
ZWdpc3RlcnMgZm9yIERPTSBgY2xpY2tgIGV2ZW50cy4gWW91IGNhbgotICAgIHN1cHBseSBhbiBg
b25gIG9wdGlvbiB0byB0aGUgaGVscGVyIHRvIHNwZWNpZnkgYSBkaWZmZXJlbnQgRE9NIGV2ZW50
IG5hbWU6Ci0KLSAgICBgYGBoYW5kbGViYXJzCi0gICAgPGRpdiB7e2FjdGlvbiAiYW5BY3Rpb25O
YW1lIiBvbj0iZG91YmxlQ2xpY2sifX0+Ci0gICAgICBjbGljayBtZQotICAgIDwvZGl2PgotICAg
IGBgYAotCi0gICAgU2VlIGBFbWJlci5WaWV3YCAnUmVzcG9uZGluZyB0byBCcm93c2VyIEV2ZW50
cycgZm9yIGEgbGlzdCBvZgotICAgIGFjY2VwdGFibGUgRE9NIGV2ZW50IG5hbWVzLgotCi0gICAg
Tk9URTogQmVjYXVzZSBge3thY3Rpb259fWAgZGVwZW5kcyBvbiBFbWJlcidzIGV2ZW50IGRpc3Bh
dGNoIHN5c3RlbSBpdCB3aWxsCi0gICAgb25seSBmdW5jdGlvbiBpZiBhbiBgRW1iZXIuRXZlbnRE
aXNwYXRjaGVyYCBpbnN0YW5jZSBpcyBhdmFpbGFibGUuIEFuCi0gICAgYEVtYmVyLkV2ZW50RGlz
cGF0Y2hlcmAgaW5zdGFuY2Ugd2lsbCBiZSBjcmVhdGVkIHdoZW4gYSBuZXcgYEVtYmVyLkFwcGxp
Y2F0aW9uYAotICAgIGlzIGNyZWF0ZWQuIEhhdmluZyBhbiBpbnN0YW5jZSBvZiBgRW1iZXIuQXBw
bGljYXRpb25gIHdpbGwgc2F0aXNmeSB0aGlzCi0gICAgcmVxdWlyZW1lbnQuCi0KLSAgICAjIyMg
U3BlY2lmeWluZyB3aGl0ZWxpc3RlZCBtb2RpZmllciBrZXlzCi0KLSAgICBCeSBkZWZhdWx0IHRo
ZSBge3thY3Rpb259fWAgaGVscGVyIHdpbGwgaWdub3JlIGNsaWNrIGV2ZW50IHdpdGggcHJlc3Nl
ZCBtb2RpZmllcgotICAgIGtleXMuIFlvdSBjYW4gc3VwcGx5IGFuIGBhbGxvd2VkS2V5c2Agb3B0
aW9uIHRvIHNwZWNpZnkgd2hpY2gga2V5cyBzaG91bGQgbm90IGJlIGlnbm9yZWQuCi0KLSAgICBg
YGBoYW5kbGViYXJzCi0gICAgPGRpdiB7e2FjdGlvbiAiYW5BY3Rpb25OYW1lIiBhbGxvd2VkS2V5
cz0iYWx0In19PgotICAgICAgY2xpY2sgbWUKLSAgICA8L2Rpdj4KLSAgICBgYGAKLQotICAgIFRo
aXMgd2F5IHRoZSBge3thY3Rpb259fWAgd2lsbCBmaXJlIHdoZW4gY2xpY2tpbmcgd2l0aCB0aGUg
YWx0IGtleSBwcmVzc2VkIGRvd24uCi0KLSAgICBBbHRlcm5hdGl2ZWx5LCBzdXBwbHkgImFueSIg
dG8gdGhlIGBhbGxvd2VkS2V5c2Agb3B0aW9uIHRvIGFjY2VwdCBhbnkgY29tYmluYXRpb24gb2Yg
bW9kaWZpZXIga2V5cy4KLQotICAgIGBgYGhhbmRsZWJhcnMKLSAgICA8ZGl2IHt7YWN0aW9uICJh
bkFjdGlvbk5hbWUiIGFsbG93ZWRLZXlzPSJhbnkifX0+Ci0gICAgICBjbGljayBtZSB3aXRoIGFu
eSBrZXkgcHJlc3NlZAotICAgIDwvZGl2PgotICAgIGBgYAotCi0gICAgIyMjIFNwZWNpZnlpbmcg
YSBUYXJnZXQKLQotICAgIFRoZXJlIGFyZSBzZXZlcmFsIHBvc3NpYmxlIHRhcmdldCBvYmplY3Rz
IGZvciBge3thY3Rpb259fWAgaGVscGVyczoKLQotICAgIEluIGEgdHlwaWNhbCBFbWJlciBhcHBs
aWNhdGlvbiwgd2hlcmUgdmlld3MgYXJlIG1hbmFnZWQgdGhyb3VnaCB1c2Ugb2YgdGhlCi0gICAg
YHt7b3V0bGV0fX1gIGhlbHBlciwgYWN0aW9ucyB3aWxsIGJ1YmJsZSB0byB0aGUgY3VycmVudCBj
b250cm9sbGVyLCB0aGVuCi0gICAgdG8gdGhlIGN1cnJlbnQgcm91dGUsIGFuZCB0aGVuIHVwIHRo
ZSByb3V0ZSBoaWVyYXJjaHkuCi0KLSAgICBBbHRlcm5hdGl2ZWx5LCBhIGB0YXJnZXRgIG9wdGlv
biBjYW4gYmUgcHJvdmlkZWQgdG8gdGhlIGhlbHBlciB0byBjaGFuZ2UKLSAgICB3aGljaCBvYmpl
Y3Qgd2lsbCByZWNlaXZlIHRoZSBtZXRob2QgY2FsbC4gVGhpcyBvcHRpb24gbXVzdCBiZSBhIHBh
dGgKLSAgICB0byBhbiBvYmplY3QsIGFjY2Vzc2libGUgaW4gdGhlIGN1cnJlbnQgY29udGV4dDoK
LQotICAgIGBgYGhhbmRsZWJhcnMKLSAgICB7eyEgdGhlIGFwcGxpY2F0aW9uIHRlbXBsYXRlIH19
Ci0gICAgPGRpdiB7e2FjdGlvbiAiYW5BY3Rpb25OYW1lIiB0YXJnZXQ9dmlld319PgotICAgICAg
Y2xpY2sgbWUKLSAgICA8L2Rpdj4KLSAgICBgYGAKLQotICAgIGBgYGphdmFzY3JpcHQKLSAgICBB
cHAuQXBwbGljYXRpb25WaWV3ID0gRW1iZXIuVmlldy5leHRlbmQoewotICAgICAgYWN0aW9uczog
ewotICAgICAgICBhbkFjdGlvbk5hbWU6IGZ1bmN0aW9uKCl7fQotICAgICAgfQotICAgIH0pOwot
Ci0gICAgYGBgCi0KLSAgICAjIyMgQWRkaXRpb25hbCBQYXJhbWV0ZXJzCi0KLSAgICBZb3UgbWF5
IHNwZWNpZnkgYWRkaXRpb25hbCBwYXJhbWV0ZXJzIHRvIHRoZSBge3thY3Rpb259fWAgaGVscGVy
LiBUaGVzZQotICAgIHBhcmFtZXRlcnMgYXJlIHBhc3NlZCBhbG9uZyBhcyB0aGUgYXJndW1lbnRz
IHRvIHRoZSBKYXZhU2NyaXB0IGZ1bmN0aW9uCi0gICAgaW1wbGVtZW50aW5nIHRoZSBhY3Rpb24u
Ci0KLSAgICBgYGBoYW5kbGViYXJzCi0gICAge3sjZWFjaCBwZXJzb24gaW4gcGVvcGxlfX0KLSAg
ICAgIDxkaXYge3thY3Rpb24gImVkaXQiIHBlcnNvbn19PgotICAgICAgICBjbGljayBtZQotICAg
ICAgPC9kaXY+Ci0gICAge3svZWFjaH19Ci0gICAgYGBgCi0KLSAgICBDbGlja2luZyAiY2xpY2sg
bWUiIHdpbGwgdHJpZ2dlciB0aGUgYGVkaXRgIG1ldGhvZCBvbiB0aGUgY3VycmVudCBjb250cm9s
bGVyCi0gICAgd2l0aCB0aGUgdmFsdWUgb2YgYHBlcnNvbmAgYXMgYSBwYXJhbWV0ZXIuCi0KLSAg
ICBAbWV0aG9kIGFjdGlvbgotICAgIEBmb3IgRW1iZXIuSGFuZGxlYmFycy5oZWxwZXJzCi0gICAg
QHBhcmFtIHtTdHJpbmd9IGFjdGlvbk5hbWUKLSAgICBAcGFyYW0ge09iamVjdH0gW2NvbnRleHRd
KgotICAgIEBwYXJhbSB7SGFzaH0gb3B0aW9ucwotICAqLwotICBFbWJlckhhbmRsZWJhcnMucmVn
aXN0ZXJIZWxwZXIoJ2FjdGlvbicsIGZ1bmN0aW9uIGFjdGlvbkhlbHBlcihhY3Rpb25OYW1lKSB7
Ci0gICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aCAtIDFdLAotICAg
ICAgICBjb250ZXh0cyA9IGFfc2xpY2UuY2FsbChhcmd1bWVudHMsIDEsIC0xKTsKLQotICAgIHZh
ciBoYXNoID0gb3B0aW9ucy5oYXNoLAotICAgICAgICBjb250cm9sbGVyOwotCi0gICAgLy8gY3Jl
YXRlIGEgaGFzaCB0byBwYXNzIGFsb25nIHRvIHJlZ2lzdGVyQWN0aW9uCi0gICAgdmFyIGFjdGlv
biA9IHsKLSAgICAgIGV2ZW50TmFtZTogaGFzaC5vbiB8fCAiY2xpY2siCi0gICAgfTsKLQotICAg
IGFjdGlvbi5wYXJhbWV0ZXJzID0gewotICAgICAgY29udGV4dDogdGhpcywKLSAgICAgIG9wdGlv
bnM6IG9wdGlvbnMsCi0gICAgICBwYXJhbXM6IGNvbnRleHRzCi0gICAgfTsKLQotICAgIGFjdGlv
bi52aWV3ID0gb3B0aW9ucy5kYXRhLnZpZXc7Ci0KLSAgICB2YXIgcm9vdCwgdGFyZ2V0OwotCi0g
ICAgaWYgKGhhc2gudGFyZ2V0KSB7Ci0gICAgICByb290ID0gdGhpczsKLSAgICAgIHRhcmdldCA9
IGhhc2gudGFyZ2V0OwotICAgIH0gZWxzZSBpZiAoY29udHJvbGxlciA9IG9wdGlvbnMuZGF0YS5r
ZXl3b3Jkcy5jb250cm9sbGVyKSB7Ci0gICAgICByb290ID0gY29udHJvbGxlcjsKLSAgICB9Ci0K
LSAgICBhY3Rpb24udGFyZ2V0ID0geyByb290OiByb290LCB0YXJnZXQ6IHRhcmdldCwgb3B0aW9u
czogb3B0aW9ucyB9OwotICAgIGFjdGlvbi5idWJibGVzID0gaGFzaC5idWJibGVzOwotICAgIGFj
dGlvbi5wcmV2ZW50RGVmYXVsdCA9IGhhc2gucHJldmVudERlZmF1bHQ7Ci0KLSAgICB2YXIgYWN0
aW9uSWQgPSBBY3Rpb25IZWxwZXIucmVnaXN0ZXJBY3Rpb24oYWN0aW9uTmFtZSwgYWN0aW9uLCBo
YXNoLmFsbG93ZWRLZXlzKTsKLSAgICByZXR1cm4gbmV3IFNhZmVTdHJpbmcoJ2RhdGEtZW1iZXIt
YWN0aW9uPSInICsgYWN0aW9uSWQgKyAnIicpOwotICB9KTsKLQotfSk7Ci0KLX0pKCk7Ci0KLQot
Ci0oZnVuY3Rpb24oKSB7Ci0KLX0pKCk7Ci0KLQotCi0oZnVuY3Rpb24oKSB7Ci0vKioKLUBtb2R1
bGUgZW1iZXIKLUBzdWJtb2R1bGUgZW1iZXItcm91dGluZwotKi8KLQotdmFyIGdldCA9IEVtYmVy
LmdldCwgc2V0ID0gRW1iZXIuc2V0OwotCi1FbWJlci5Db250cm9sbGVyTWl4aW4ucmVvcGVuKHsK
LSAgLyoqCi0gICAgVHJhbnNpdGlvbiB0aGUgYXBwbGljYXRpb24gaW50byBhbm90aGVyIHJvdXRl
LiBUaGUgcm91dGUgbWF5Ci0gICAgYmUgZWl0aGVyIGEgc2luZ2xlIHJvdXRlIG9yIHJvdXRlIHBh
dGg6Ci0KLSAgICBgYGBqYXZhc2NyaXB0Ci0gICAgYUNvbnRyb2xsZXIudHJhbnNpdGlvblRvUm91
dGUoJ2Jsb2dQb3N0cycpOwotICAgIGFDb250cm9sbGVyLnRyYW5zaXRpb25Ub1JvdXRlKCdibG9n
UG9zdHMucmVjZW50RW50cmllcycpOwotICAgIGBgYAotCi0gICAgT3B0aW9uYWxseSBzdXBwbHkg
YSBtb2RlbCBmb3IgdGhlIHJvdXRlIGluIHF1ZXN0aW9uLiBUaGUgbW9kZWwKLSAgICB3aWxsIGJl
IHNlcmlhbGl6ZWQgaW50byB0aGUgVVJMIHVzaW5nIHRoZSBgc2VyaWFsaXplYCBob29rIG9mCi0g
ICAgdGhlIHJvdXRlOgotCi0gICAgYGBgamF2YXNjcmlwdAotICAgIGFDb250cm9sbGVyLnRyYW5z
aXRpb25Ub1JvdXRlKCdibG9nUG9zdCcsIGFQb3N0KTsKLSAgICBgYGAKLQotICAgIE11bHRpcGxl
IG1vZGVscyB3aWxsIGJlIGFwcGxpZWQgbGFzdCB0byBmaXJzdCByZWN1cnNpdmVseSB1cCB0aGUK
LSAgICByZXNvdXJjZSB0cmVlLgotCi0gICAgYGBgamF2YXNjcmlwdAotICAgIHRoaXMucmVzb3Vy
Y2UoJ2Jsb2dQb3N0Jywge3BhdGg6JzpibG9nUG9zdElkJ30sIGZ1bmN0aW9uKCl7Ci0gICAgICB0
aGlzLnJlc291cmNlKCdibG9nQ29tbWVudCcsIHtwYXRoOiAnOmJsb2dDb21tZW50SWQnfSk7Ci0g
ICAgfSk7Ci0KLSAgICBhQ29udHJvbGxlci50cmFuc2l0aW9uVG9Sb3V0ZSgnYmxvZ0NvbW1lbnQn
LCBhUG9zdCwgYUNvbW1lbnQpOwotICAgIGBgYAotCi0gICAgU2VlIGFsc28gJ3JlcGxhY2VSb3V0
ZScuCi0KLSAgICBAcGFyYW0ge1N0cmluZ30gbmFtZSB0aGUgbmFtZSBvZiB0aGUgcm91dGUKLSAg
ICBAcGFyYW0gey4uLk9iamVjdH0gbW9kZWxzIHRoZSBtb2RlbChzKSB0byBiZSB1c2VkIHdoaWxl
IHRyYW5zaXRpb25pbmcKLSAgICB0byB0aGUgcm91dGUuCi0gICAgQGZvciBFbWJlci5Db250cm9s
bGVyTWl4aW4KLSAgICBAbWV0aG9kIHRyYW5zaXRpb25Ub1JvdXRlCi0gICovCi0gIHRyYW5zaXRp
b25Ub1JvdXRlOiBmdW5jdGlvbigpIHsKLSAgICAvLyB0YXJnZXQgbWF5IGJlIGVpdGhlciBhbm90
aGVyIGNvbnRyb2xsZXIgb3IgYSByb3V0ZXIKLSAgICB2YXIgdGFyZ2V0ID0gZ2V0KHRoaXMsICd0
YXJnZXQnKSwKLSAgICAgICAgbWV0aG9kID0gdGFyZ2V0LnRyYW5zaXRpb25Ub1JvdXRlIHx8IHRh
cmdldC50cmFuc2l0aW9uVG87Ci0gICAgcmV0dXJuIG1ldGhvZC5hcHBseSh0YXJnZXQsIGFyZ3Vt
ZW50cyk7Ci0gIH0sCi0KLSAgLyoqCi0gICAgQGRlcHJlY2F0ZWQKLSAgICBAZm9yIEVtYmVyLkNv
bnRyb2xsZXJNaXhpbgotICAgIEBtZXRob2QgdHJhbnNpdGlvblRvCi0gICovCi0gIHRyYW5zaXRp
b25UbzogZnVuY3Rpb24oKSB7Ci0gICAgRW1iZXIuZGVwcmVjYXRlKCJ0cmFuc2l0aW9uVG8gaXMg
ZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSB0cmFuc2l0aW9uVG9Sb3V0ZS4iKTsKLSAgICByZXR1cm4g
dGhpcy50cmFuc2l0aW9uVG9Sb3V0ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwotICB9LAotCi0g
IC8qKgotICAgIFRyYW5zaXRpb24gaW50byBhbm90aGVyIHJvdXRlIHdoaWxlIHJlcGxhY2luZyB0
aGUgY3VycmVudCBVUkwsIGlmIHBvc3NpYmxlLgotICAgIFRoaXMgd2lsbCByZXBsYWNlIHRoZSBj
dXJyZW50IGhpc3RvcnkgZW50cnkgaW5zdGVhZCBvZiBhZGRpbmcgYSBuZXcgb25lLiAKLSAgICBC
ZXNpZGUgdGhhdCwgaXQgaXMgaWRlbnRpY2FsIHRvIGB0cmFuc2l0aW9uVG9Sb3V0ZWAgaW4gYWxs
IG90aGVyIHJlc3BlY3RzLgotCi0gICAgYGBgamF2YXNjcmlwdAotICAgIGFDb250cm9sbGVyLnJl
cGxhY2VSb3V0ZSgnYmxvZ1Bvc3RzJyk7Ci0gICAgYUNvbnRyb2xsZXIucmVwbGFjZVJvdXRlKCdi
bG9nUG9zdHMucmVjZW50RW50cmllcycpOwotICAgIGBgYAotCi0gICAgT3B0aW9uYWxseSBzdXBw
bHkgYSBtb2RlbCBmb3IgdGhlIHJvdXRlIGluIHF1ZXN0aW9uLiBUaGUgbW9kZWwKLSAgICB3aWxs
IGJlIHNlcmlhbGl6ZWQgaW50byB0aGUgVVJMIHVzaW5nIHRoZSBgc2VyaWFsaXplYCBob29rIG9m
Ci0gICAgdGhlIHJvdXRlOgotCi0gICAgYGBgamF2YXNjcmlwdAotICAgIGFDb250cm9sbGVyLnJl
cGxhY2VSb3V0ZSgnYmxvZ1Bvc3QnLCBhUG9zdCk7Ci0gICAgYGBgCi0KLSAgICBNdWx0aXBsZSBt
b2RlbHMgd2lsbCBiZSBhcHBsaWVkIGxhc3QgdG8gZmlyc3QgcmVjdXJzaXZlbHkgdXAgdGhlCi0g
ICAgcmVzb3VyY2UgdHJlZS4KLQotICAgIGBgYGphdmFzY3JpcHQKLSAgICB0aGlzLnJlc291cmNl
KCdibG9nUG9zdCcsIHtwYXRoOic6YmxvZ1Bvc3RJZCd9LCBmdW5jdGlvbigpewotICAgICAgdGhp
cy5yZXNvdXJjZSgnYmxvZ0NvbW1lbnQnLCB7cGF0aDogJzpibG9nQ29tbWVudElkJ30pOwotICAg
IH0pOwotCi0gICAgYUNvbnRyb2xsZXIucmVwbGFjZVJvdXRlKCdibG9nQ29tbWVudCcsIGFQb3N0
LCBhQ29tbWVudCk7Ci0gICAgYGBgCi0KLSAgICBAcGFyYW0ge1N0cmluZ30gbmFtZSB0aGUgbmFt
ZSBvZiB0aGUgcm91dGUKLSAgICBAcGFyYW0gey4uLk9iamVjdH0gbW9kZWxzIHRoZSBtb2RlbChz
KSB0byBiZSB1c2VkIHdoaWxlIHRyYW5zaXRpb25pbmcKLSAgICB0byB0aGUgcm91dGUuCi0gICAg
QGZvciBFbWJlci5Db250cm9sbGVyTWl4aW4KLSAgICBAbWV0aG9kIHJlcGxhY2VSb3V0ZQotICAq
LwotICByZXBsYWNlUm91dGU6IGZ1bmN0aW9uKCkgewotICAgIC8vIHRhcmdldCBtYXkgYmUgZWl0
aGVyIGFub3RoZXIgY29udHJvbGxlciBvciBhIHJvdXRlcgotICAgIHZhciB0YXJnZXQgPSBnZXQo
dGhpcywgJ3RhcmdldCcpLAotICAgICAgICBtZXRob2QgPSB0YXJnZXQucmVwbGFjZVJvdXRlIHx8
IHRhcmdldC5yZXBsYWNlV2l0aDsKLSAgICByZXR1cm4gbWV0aG9kLmFwcGx5KHRhcmdldCwgYXJn
dW1lbnRzKTsKLSAgfSwKLQotICAvKioKLSAgICBAZGVwcmVjYXRlZAotICAgIEBmb3IgRW1iZXIu
Q29udHJvbGxlck1peGluCi0gICAgQG1ldGhvZCByZXBsYWNlV2l0aAotICAqLwotICByZXBsYWNl
V2l0aDogZnVuY3Rpb24oKSB7Ci0gICAgRW1iZXIuZGVwcmVjYXRlKCJyZXBsYWNlV2l0aCBpcyBk
ZXByZWNhdGVkLiBQbGVhc2UgdXNlIHJlcGxhY2VSb3V0ZS4iKTsKLSAgICByZXR1cm4gdGhpcy5y
ZXBsYWNlUm91dGUuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKLSAgfQotfSk7Ci0KLX0pKCk7Ci0K
LQotCi0oZnVuY3Rpb24oKSB7Ci0vKioKLUBtb2R1bGUgZW1iZXIKLUBzdWJtb2R1bGUgZW1iZXIt
cm91dGluZwotKi8KLQotdmFyIGdldCA9IEVtYmVyLmdldCwgc2V0ID0gRW1iZXIuc2V0OwotCi1F
bWJlci5WaWV3LnJlb3Blbih7Ci0KLSAgLyoqCi0gICAgU2V0cyB0aGUgcHJpdmF0ZSBgX291dGxl
dHNgIG9iamVjdCBvbiB0aGUgdmlldy4KLQotICAgIEBtZXRob2QgaW5pdAotICAgKi8KLSAgaW5p
dDogZnVuY3Rpb24oKSB7Ci0gICAgc2V0KHRoaXMsICdfb3V0bGV0cycsIHt9KTsKLSAgICB0aGlz
Ll9zdXBlcigpOwotICB9LAotCi0gIC8qKgotICAgIE1hbnVhbGx5IGZpbGwgYW55IG9mIGEgdmll
dydzIGB7e291dGxldH19YCBhcmVhcyB3aXRoIHRoZQotICAgIHN1cHBsaWVkIHZpZXcuCi0KLSAg
ICBFeGFtcGxlCi0KLSAgICBgYGBqYXZhc2NyaXB0Ci0gICAgdmFyIE15VmlldyA9IEVtYmVyLlZp
ZXcuZXh0ZW5kKHsKLSAgICAgIHRlbXBsYXRlOiBFbWJlci5IYW5kbGViYXJzLmNvbXBpbGUoJ0No
aWxkIHZpZXc6IHt7b3V0bGV0ICJtYWluIn19ICcpCi0gICAgfSk7Ci0gICAgdmFyIG15VmlldyA9
IE15Vmlldy5jcmVhdGUoKTsKLSAgICBteVZpZXcuYXBwZW5kVG8oJ2JvZHknKTsKLSAgICAvLyBU
aGUgaHRtbCBmb3IgbXlWaWV3IG5vdyBsb29rcyBsaWtlOgotICAgIC8vIDxkaXYgaWQ9ImVtYmVy
MjI4IiBjbGFzcz0iZW1iZXItdmlldyI+Q2hpbGQgdmlldzogPC9kaXY+Ci0KLSAgICB2YXIgRm9v
VmlldyA9IEVtYmVyLlZpZXcuZXh0ZW5kKHsKLSAgICAgIHRlbXBsYXRlOiBFbWJlci5IYW5kbGVi
YXJzLmNvbXBpbGUoJzxoMT5Gb288L2gxPiAnKQotICAgIH0pOwotICAgIHZhciBmb29WaWV3ID0g
Rm9vVmlldy5jcmVhdGUoKTsKLSAgICBteVZpZXcuY29ubmVjdE91dGxldCgnbWFpbicsIGZvb1Zp
ZXcpOwotICAgIC8vIFRoZSBodG1sIGZvciBteVZpZXcgbm93IGxvb2tzIGxpa2U6Ci0gICAgLy8g
PGRpdiBpZD0iZW1iZXIyMjgiIGNsYXNzPSJlbWJlci12aWV3Ij5DaGlsZCB2aWV3OgotICAgIC8v
ICAgPGRpdiBpZD0iZW1iZXIyMzQiIGNsYXNzPSJlbWJlci12aWV3Ij48aDE+Rm9vPC9oMT4gPC9k
aXY+Ci0gICAgLy8gPC9kaXY+Ci0gICAgYGBgCi0gICAgQG1ldGhvZCBjb25uZWN0T3V0bGV0Ci0g
ICAgQHBhcmFtICB7U3RyaW5nfSBvdXRsZXROYW1lIEEgdW5pcXVlIG5hbWUgZm9yIHRoZSBvdXRs
ZXQKLSAgICBAcGFyYW0gIHtPYmplY3R9IHZpZXcgICAgICAgQW4gRW1iZXIuVmlldwotICAgKi8K
LSAgY29ubmVjdE91dGxldDogZnVuY3Rpb24ob3V0bGV0TmFtZSwgdmlldykgewotICAgIGlmICh0
aGlzLl9wZW5kaW5nRGlzY29ubmVjdGlvbnMpIHsKLSAgICAgIGRlbGV0ZSB0aGlzLl9wZW5kaW5n
RGlzY29ubmVjdGlvbnNbb3V0bGV0TmFtZV07Ci0gICAgfQotCi0gICAgaWYgKHRoaXMuX2hhc0Vx
dWl2YWxlbnRWaWV3KG91dGxldE5hbWUsIHZpZXcpKSB7Ci0gICAgICB2aWV3LmRlc3Ryb3koKTsK
LSAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICB2YXIgb3V0bGV0cyA9IGdldCh0aGlzLCAnX291
dGxldHMnKSwKLSAgICAgICAgY29udGFpbmVyID0gZ2V0KHRoaXMsICdjb250YWluZXInKSwKLSAg
ICAgICAgcm91dGVyID0gY29udGFpbmVyICYmIGNvbnRhaW5lci5sb29rdXAoJ3JvdXRlcjptYWlu
JyksCi0gICAgICAgIHJlbmRlcmVkTmFtZSA9IGdldCh2aWV3LCAncmVuZGVyZWROYW1lJyk7Ci0K
LSAgICBzZXQob3V0bGV0cywgb3V0bGV0TmFtZSwgdmlldyk7Ci0KLSAgICBpZiAocm91dGVyICYm
IHJlbmRlcmVkTmFtZSkgewotICAgICAgcm91dGVyLl9jb25uZWN0QWN0aXZlVmlldyhyZW5kZXJl
ZE5hbWUsIHZpZXcpOwotICAgIH0KLSAgfSwKLQotICAvKioKLSAgICBEZXRlcm1pbmVzIGlmIHRo
ZSB2aWV3IGhhcyBhbHJlYWR5IGJlZW4gY3JlYXRlZCBieSBjaGVja2luZyBpZgotICAgIHRoZSB2
aWV3IGhhcyB0aGUgc2FtZSBjb25zdHJ1Y3RvciwgdGVtcGxhdGUsIGFuZCBjb250ZXh0IGFzIHRo
ZQotICAgIHZpZXcgaW4gdGhlIGBfb3V0bGV0c2Agb2JqZWN0LgotCi0gICAgQHByaXZhdGUKLSAg
ICBAbWV0aG9kIF9oYXNFcXVpdmFsZW50VmlldwotICAgIEBwYXJhbSAge1N0cmluZ30gb3V0bGV0
TmFtZSBUaGUgbmFtZSBvZiB0aGUgb3V0bGV0IHdlIGFyZSBjaGVja2luZwotICAgIEBwYXJhbSAg
e09iamVjdH0gdmlldyAgICAgICBBbiBFbWJlci5WaWV3Ci0gICAgQHJldHVybiB7Qm9vbGVhbn0K
LSAgICovCi0gIF9oYXNFcXVpdmFsZW50VmlldzogZnVuY3Rpb24ob3V0bGV0TmFtZSwgdmlldykg
ewotICAgIHZhciBleGlzdGluZ1ZpZXcgPSBnZXQodGhpcywgJ19vdXRsZXRzLicrb3V0bGV0TmFt
ZSk7Ci0gICAgcmV0dXJuIGV4aXN0aW5nVmlldyAmJgotICAgICAgZXhpc3RpbmdWaWV3LmNvbnN0
cnVjdG9yID09PSB2aWV3LmNvbnN0cnVjdG9yICYmCi0gICAgICBleGlzdGluZ1ZpZXcuZ2V0KCd0
ZW1wbGF0ZScpID09PSB2aWV3LmdldCgndGVtcGxhdGUnKSAmJgotICAgICAgZXhpc3RpbmdWaWV3
LmdldCgnY29udGV4dCcpID09PSB2aWV3LmdldCgnY29udGV4dCcpOwotICB9LAotCi0gIC8qKgot
ICAgIFJlbW92ZXMgYW4gb3V0bGV0IGZyb20gdGhlIHZpZXcuCi0KLSAgICBFeGFtcGxlCi0KLSAg
ICBgYGBqYXZhc2NyaXB0Ci0gICAgdmFyIE15VmlldyA9IEVtYmVyLlZpZXcuZXh0ZW5kKHsKLSAg
ICAgIHRlbXBsYXRlOiBFbWJlci5IYW5kbGViYXJzLmNvbXBpbGUoJ0NoaWxkIHZpZXc6IHt7b3V0
bGV0ICJtYWluIn19ICcpCi0gICAgfSk7Ci0gICAgdmFyIG15VmlldyA9IE15Vmlldy5jcmVhdGUo
KTsKLSAgICBteVZpZXcuYXBwZW5kVG8oJ2JvZHknKTsKLSAgICAvLyBteVZpZXcncyBodG1sOgot
ICAgIC8vIDxkaXYgaWQ9ImVtYmVyMjI4IiBjbGFzcz0iZW1iZXItdmlldyI+Q2hpbGQgdmlldzog
PC9kaXY+Ci0KLSAgICB2YXIgRm9vVmlldyA9IEVtYmVyLlZpZXcuZXh0ZW5kKHsKLSAgICAgIHRl
bXBsYXRlOiBFbWJlci5IYW5kbGViYXJzLmNvbXBpbGUoJzxoMT5Gb288L2gxPiAnKQotICAgIH0p
OwotICAgIHZhciBmb29WaWV3ID0gRm9vVmlldy5jcmVhdGUoKTsKLSAgICBteVZpZXcuY29ubmVj
dE91dGxldCgnbWFpbicsIGZvb1ZpZXcpOwotICAgIC8vIG15VmlldydzIGh0bWw6Ci0gICAgLy8g
PGRpdiBpZD0iZW1iZXIyMjgiIGNsYXNzPSJlbWJlci12aWV3Ij5DaGlsZCB2aWV3OgotICAgIC8v
ICAgPGRpdiBpZD0iZW1iZXIyMzQiIGNsYXNzPSJlbWJlci12aWV3Ij48aDE+Rm9vPC9oMT4gPC9k
aXY+Ci0gICAgLy8gPC9kaXY+Ci0KLSAgICBteVZpZXcuZGlzY29ubmVjdE91dGxldCgnbWFpbicp
OwotICAgIC8vIG15VmlldydzIGh0bWw6Ci0gICAgLy8gPGRpdiBpZD0iZW1iZXIyMjgiIGNsYXNz
PSJlbWJlci12aWV3Ij5DaGlsZCB2aWV3OiA8L2Rpdj4KLSAgICBgYGAKLQotICAgIEBtZXRob2Qg
ZGlzY29ubmVjdE91dGxldAotICAgIEBwYXJhbSAge1N0cmluZ30gb3V0bGV0TmFtZSBUaGUgbmFt
ZSBvZiB0aGUgb3V0bGV0IHRvIGJlIHJlbW92ZWQKLSAgICovCi0gIGRpc2Nvbm5lY3RPdXRsZXQ6
IGZ1bmN0aW9uKG91dGxldE5hbWUpIHsKLSAgICBpZiAoIXRoaXMuX3BlbmRpbmdEaXNjb25uZWN0
aW9ucykgewotICAgICAgdGhpcy5fcGVuZGluZ0Rpc2Nvbm5lY3Rpb25zID0ge307Ci0gICAgfQot
ICAgIHRoaXMuX3BlbmRpbmdEaXNjb25uZWN0aW9uc1tvdXRsZXROYW1lXSA9IHRydWU7Ci0gICAg
RW1iZXIucnVuLm9uY2UodGhpcywgJ19maW5pc2hEaXNjb25uZWN0aW9ucycpOwotICB9LAotCi0g
IC8qKgotICAgIEdldHMgYW4gb3V0bGV0IHRoYXQgaXMgcGVuZGluZyBkaXNjb25uZWN0aW9uIGFu
ZCB0aGVuCi0gICAgbnVsbGlmeXMgdGhlIG9iamVjdCBvbiB0aGUgYF9vdXRsZXRgIG9iamVjdC4K
LQotICAgIEBwcml2YXRlCi0gICAgQG1ldGhvZCBfZmluaXNoRGlzY29ubmVjdGlvbnMKLSAgICov
Ci0gIF9maW5pc2hEaXNjb25uZWN0aW9uczogZnVuY3Rpb24oKSB7Ci0gICAgdmFyIG91dGxldHMg
PSBnZXQodGhpcywgJ19vdXRsZXRzJyk7Ci0gICAgdmFyIHBlbmRpbmdEaXNjb25uZWN0aW9ucyA9
IHRoaXMuX3BlbmRpbmdEaXNjb25uZWN0aW9uczsKLSAgICB0aGlzLl9wZW5kaW5nRGlzY29ubmVj
dGlvbnMgPSBudWxsOwotCi0gICAgZm9yICh2YXIgb3V0bGV0TmFtZSBpbiBwZW5kaW5nRGlzY29u
bmVjdGlvbnMpIHsKLSAgICAgIHNldChvdXRsZXRzLCBvdXRsZXROYW1lLCBudWxsKTsKLSAgICB9
Ci0gIH0KLX0pOwotCi19KSgpOwotCi0KLQotKGZ1bmN0aW9uKCkgewotLyoqCi1AbW9kdWxlIGVt
YmVyCi1Ac3VibW9kdWxlIGVtYmVyLXZpZXdzCi0qLwotCi0vLyBBZGQgYSBuZXcgbmFtZWQgcXVl
dWUgYWZ0ZXIgdGhlICdhY3Rpb25zJyBxdWV1ZSAod2hlcmUgUlNWUCBwcm9taXNlcwotLy8gcmVz
b2x2ZSksIHdoaWNoIGlzIHVzZWQgaW4gcm91dGVyIHRyYW5zaXRpb25zIHRvIHByZXZlbnQgdW5u
ZWNlc3NhcnkKLS8vIGxvYWRpbmcgc3RhdGUgZW50cnkgaWYgYWxsIGNvbnRleHQgcHJvbWlzZXMg
cmVzb2x2ZSBvbiB0aGUgCi0vLyAnYWN0aW9ucycgcXVldWUgZmlyc3QuCi0KLXZhciBxdWV1ZXMg
PSBFbWJlci5ydW4ucXVldWVzLAotICAgIGluZGV4T2YgPSBFbWJlci5BcnJheVBvbHlmaWxscy5p
bmRleE9mOwotcXVldWVzLnNwbGljZShpbmRleE9mLmNhbGwocXVldWVzLCAnYWN0aW9ucycpICsg
MSwgMCwgJ3JvdXRlclRyYW5zaXRpb25zJyk7Ci0KLX0pKCk7Ci0KLQotCi0oZnVuY3Rpb24oKSB7
Ci0vKioKLUBtb2R1bGUgZW1iZXIKLUBzdWJtb2R1bGUgZW1iZXItcm91dGluZwotKi8KLQotdmFy
IGdldCA9IEVtYmVyLmdldCwgc2V0ID0gRW1iZXIuc2V0OwotCi0vKioKLSAgRW1iZXIuTG9jYXRp
b24gcmV0dXJucyBhbiBpbnN0YW5jZSBvZiB0aGUgY29ycmVjdCBpbXBsZW1lbnRhdGlvbiBvZgot
ICB0aGUgYGxvY2F0aW9uYCBBUEkuCi0KLSAgIyMgSW1wbGVtZW50YXRpb25zCi0KLSAgWW91IGNh
biBwYXNzIGFuIGltcGxlbWVudGF0aW9uIG5hbWUgKGBoYXNoYCwgYGhpc3RvcnlgLCBgbm9uZWAp
IHRvIGZvcmNlIGEKLSAgcGFydGljdWxhciBpbXBsZW1lbnRhdGlvbiB0byBiZSB1c2VkIGluIHlv
dXIgYXBwbGljYXRpb24uCi0KLSAgIyMjIEhhc2hMb2NhdGlvbgotCi0gIFVzaW5nIGBIYXNoTG9j
YXRpb25gIHJlc3VsdHMgaW4gVVJMcyB3aXRoIGEgYCNgIChoYXNoIHNpZ24pIHNlcGFyYXRpbmcg
dGhlCi0gIHNlcnZlciBzaWRlIFVSTCBwb3J0aW9uIG9mIHRoZSBVUkwgZnJvbSB0aGUgcG9ydGlv
biB0aGF0IGlzIHVzZWQgYnkgRW1iZXIuCi0gIFRoaXMgcmVsaWVzIHVwb24gdGhlIGBoYXNoY2hh
bmdlYCBldmVudCBleGlzdGluZyBpbiB0aGUgYnJvd3Nlci4KLQotICBFeGFtcGxlOgotCi0gIGBg
YGphdmFzY3JpcHQKLSAgQXBwLlJvdXRlci5tYXAoZnVuY3Rpb24oKSB7Ci0gICAgdGhpcy5yZXNv
dXJjZSgncG9zdHMnLCBmdW5jdGlvbigpIHsKLSAgICAgIHRoaXMucm91dGUoJ25ldycpOwotICAg
IH0pOwotICB9KTsKLQotICBBcHAuUm91dGVyLnJlb3Blbih7Ci0gICAgbG9jYXRpb246ICdoYXNo
JwotICB9KTsKLSAgYGBgCi0KLSAgVGhpcyB3aWxsIHJlc3VsdCBpbiBhIHBvc3RzLm5ldyB1cmwg
b2YgYC8jL3Bvc3RzL25ld2AuCi0KLSAgIyMjIEhpc3RvcnlMb2NhdGlvbgotCi0gIFVzaW5nIGBI
aXN0b3J5TG9jYXRpb25gIHJlc3VsdHMgaW4gVVJMcyB0aGF0IGFyZSBpbmRpc3Rpbmd1aXNoYWJs
ZSBmcm9tIGEKLSAgc3RhbmRhcmQgVVJMLiBUaGlzIHJlbGllcyB1cG9uIHRoZSBicm93c2VyJ3Mg
YGhpc3RvcnlgIEFQSS4KLQotICBFeGFtcGxlOgotCi0gIGBgYGphdmFzY3JpcHQKLSAgQXBwLlJv
dXRlci5tYXAoZnVuY3Rpb24oKSB7Ci0gICAgdGhpcy5yZXNvdXJjZSgncG9zdHMnLCBmdW5jdGlv
bigpIHsKLSAgICAgIHRoaXMucm91dGUoJ25ldycpOwotICAgIH0pOwotICB9KTsKLQotICBBcHAu
Um91dGVyLnJlb3Blbih7Ci0gICAgbG9jYXRpb246ICdoaXN0b3J5JwotICB9KTsKLSAgYGBgCi0K
LSAgVGhpcyB3aWxsIHJlc3VsdCBpbiBhIHBvc3RzLm5ldyB1cmwgb2YgYC9wb3N0cy9uZXdgLgot
Ci0gICMjIyBOb25lTG9jYXRpb24KLQotICBVc2luZyBgTm9uZUxvY2F0aW9uYCBjYXVzZXMgRW1i
ZXIgdG8gbm90IHN0b3JlIHRoZSBhcHBsaWNhdGlvbnMgVVJMIHN0YXRlCi0gIGluIHRoZSBhY3R1
YWwgVVJMLiBUaGlzIGlzIGdlbmVyYWxseSB1c2VkIGZvciB0ZXN0aW5nIHB1cnBvc2VzLCBhbmQg
aXMgb25lCi0gIG9mIHRoZSBjaGFuZ2VzIG1hZGUgd2hlbiBjYWxsaW5nIGBBcHAuc2V0dXBGb3JU
ZXN0aW5nKClgLgotCi0gICMjIExvY2F0aW9uIEFQSQotCi0gIEVhY2ggbG9jYXRpb24gaW1wbGVt
ZW50YXRpb24gbXVzdCBwcm92aWRlIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKLQotICAqIGltcGxl
bWVudGF0aW9uOiByZXR1cm5zIHRoZSBzdHJpbmcgbmFtZSB1c2VkIHRvIHJlZmVyZW5jZSB0aGUg
aW1wbGVtZW50YXRpb24uCi0gICogZ2V0VVJMOiByZXR1cm5zIHRoZSBjdXJyZW50IFVSTC4KLSAg
KiBzZXRVUkwocGF0aCk6IHNldHMgdGhlIGN1cnJlbnQgVVJMLgotICAqIHJlcGxhY2VVUkwocGF0
aCk6IHJlcGxhY2UgdGhlIGN1cnJlbnQgVVJMIChvcHRpb25hbCkuCi0gICogb25VcGRhdGVVUkwo
Y2FsbGJhY2spOiB0cmlnZ2VycyB0aGUgY2FsbGJhY2sgd2hlbiB0aGUgVVJMIGNoYW5nZXMuCi0g
ICogZm9ybWF0VVJMKHVybCk6IGZvcm1hdHMgYHVybGAgdG8gYmUgcGxhY2VkIGludG8gYGhyZWZg
IGF0dHJpYnV0ZS4KLQotICBDYWxsaW5nIHNldFVSTCBvciByZXBsYWNlVVJMIHdpbGwgbm90IHRy
aWdnZXIgb25VcGRhdGVVUkwgY2FsbGJhY2tzLgotCi0gIEBjbGFzcyBMb2NhdGlvbgotICBAbmFt
ZXNwYWNlIEVtYmVyCi0gIEBzdGF0aWMKLSovCi1FbWJlci5Mb2NhdGlvbiA9IHsKLSAgLyoqCi0g
ICBUaGlzIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgdXNpbmcgdGhlIGNvbnRhaW5lciB0byBs
b29rdXAgdGhlIGxvY2F0aW9uCi0gICBpbXBsZW1lbnRhdGlvbiBhcyBkZXNpcmVkLgotCi0gICBG
b3IgZXhhbXBsZToKLQotICAgYGBgamF2YXNjcmlwdAotICAgLy8gR2l2ZW4gYSBsb2NhdGlvbiBy
ZWdpc3RlcmVkIGFzIGZvbGxvd3M6Ci0gICBjb250YWluZXIucmVnaXN0ZXIoJ2xvY2F0aW9uOmhp
c3RvcnktdGVzdCcsIEhpc3RvcnlUZXN0TG9jYXRpb24pOwotCi0gICAvLyBZb3UgY291bGQgY3Jl
YXRlIGEgbmV3IGluc3RhbmNlIHZpYToKLSAgIGNvbnRhaW5lci5sb29rdXAoJ2xvY2F0aW9uOmhp
c3RvcnktdGVzdCcpOwotICAgYGBgCi0KLSAgICBAbWV0aG9kIGNyZWF0ZQotICAgIEBwYXJhbSB7
T2JqZWN0fSBvcHRpb25zCi0gICAgQHJldHVybiB7T2JqZWN0fSBhbiBpbnN0YW5jZSBvZiBhbiBp
bXBsZW1lbnRhdGlvbiBvZiB0aGUgYGxvY2F0aW9uYCBBUEkKLSAgICBAZGVwcmVjYXRlZCBVc2Ug
dGhlIGNvbnRhaW5lciB0byBsb29rdXAgdGhlIGxvY2F0aW9uIGltcGxlbWVudGF0aW9uIHRoYXQg
eW91Ci0gICAgbmVlZC4KLSAgKi8KLSAgY3JlYXRlOiBmdW5jdGlvbihvcHRpb25zKSB7Ci0gICAg
dmFyIGltcGxlbWVudGF0aW9uID0gb3B0aW9ucyAmJiBvcHRpb25zLmltcGxlbWVudGF0aW9uOwot
ICAgIEVtYmVyLmFzc2VydCgiRW1iZXIuTG9jYXRpb24uY3JlYXRlOiB5b3UgbXVzdCBzcGVjaWZ5
IGEgJ2ltcGxlbWVudGF0aW9uJyBvcHRpb24iLCAhIWltcGxlbWVudGF0aW9uKTsKLQotICAgIHZh
ciBpbXBsZW1lbnRhdGlvbkNsYXNzID0gdGhpcy5pbXBsZW1lbnRhdGlvbnNbaW1wbGVtZW50YXRp
b25dOwotICAgIEVtYmVyLmFzc2VydCgiRW1iZXIuTG9jYXRpb24uY3JlYXRlOiAiICsgaW1wbGVt
ZW50YXRpb24gKyAiIGlzIG5vdCBhIHZhbGlkIGltcGxlbWVudGF0aW9uIiwgISFpbXBsZW1lbnRh
dGlvbkNsYXNzKTsKLQotICAgIHJldHVybiBpbXBsZW1lbnRhdGlvbkNsYXNzLmNyZWF0ZS5hcHBs
eShpbXBsZW1lbnRhdGlvbkNsYXNzLCBhcmd1bWVudHMpOwotICB9LAotCi0gIC8qKgotICAgVGhp
cyBpcyBkZXByZWNhdGVkIGluIGZhdm9yIG9mIHVzaW5nIHRoZSBjb250YWluZXIgdG8gcmVnaXN0
ZXIgdGhlCi0gICBsb2NhdGlvbiBpbXBsZW1lbnRhdGlvbiBhcyBkZXNpcmVkLgotCi0gICBFeGFt
cGxlOgotCi0gICBgYGBqYXZhc2NyaXB0Ci0gICBBcHBsaWNhdGlvbi5pbml0aWFsaXplcih7Ci0g
ICAgbmFtZTogImhpc3RvcnktdGVzdC1sb2NhdGlvbiIsCi0KLSAgICBpbml0aWFsaXplOiBmdW5j
dGlvbihjb250YWluZXIsIGFwcGxpY2F0aW9uKSB7Ci0gICAgICBhcHBsaWNhdGlvbi5yZWdpc3Rl
cignbG9jYXRpb246aGlzdG9yeS10ZXN0JywgSGlzdG9yeVRlc3RMb2NhdGlvbik7Ci0gICAgfQot
ICAgfSk7Ci0gICBgYGAKLQotICAgQG1ldGhvZCByZWdpc3RlckltcGxlbWVudGF0aW9uCi0gICBA
cGFyYW0ge1N0cmluZ30gbmFtZQotICAgQHBhcmFtIHtPYmplY3R9IGltcGxlbWVudGF0aW9uIG9m
IHRoZSBgbG9jYXRpb25gIEFQSQotICAgQGRlcHJlY2F0ZWQgUmVnaXN0ZXIgeW91ciBjdXN0b20g
bG9jYXRpb24gaW1wbGVtZW50YXRpb24gd2l0aCB0aGUKLSAgIGNvbnRhaW5lciBkaXJlY3RseS4K
LSAgKi8KLSAgcmVnaXN0ZXJJbXBsZW1lbnRhdGlvbjogZnVuY3Rpb24obmFtZSwgaW1wbGVtZW50
YXRpb24pIHsKLSAgICB0aGlzLmltcGxlbWVudGF0aW9uc1tuYW1lXSA9IGltcGxlbWVudGF0aW9u
OwotICB9LAotCi0gIGltcGxlbWVudGF0aW9uczoge30KLX07Ci0KLX0pKCk7Ci0KLQotCi0oZnVu
Y3Rpb24oKSB7Ci0vKioKLUBtb2R1bGUgZW1iZXIKLUBzdWJtb2R1bGUgZW1iZXItcm91dGluZwot
Ki8KLQotdmFyIGdldCA9IEVtYmVyLmdldCwgc2V0ID0gRW1iZXIuc2V0OwotCi0vKioKLSAgRW1i
ZXIuTm9uZUxvY2F0aW9uIGRvZXMgbm90IGludGVyYWN0IHdpdGggdGhlIGJyb3dzZXIuIEl0IGlz
IHVzZWZ1bCBmb3IKLSAgdGVzdGluZywgb3Igd2hlbiB5b3UgbmVlZCB0byBtYW5hZ2Ugc3RhdGUg
d2l0aCB5b3VyIFJvdXRlciwgYnV0IHRlbXBvcmFyaWx5Ci0gIGRvbid0IHdhbnQgaXQgdG8gbXVj
ayB3aXRoIHRoZSBVUkwgKGZvciBleGFtcGxlIHdoZW4geW91IGVtYmVkIHlvdXIKLSAgYXBwbGlj
YXRpb24gaW4gYSBsYXJnZXIgcGFnZSkuCi0KLSAgQGNsYXNzIE5vbmVMb2NhdGlvbgotICBAbmFt
ZXNwYWNlIEVtYmVyCi0gIEBleHRlbmRzIEVtYmVyLk9iamVjdAotKi8KLUVtYmVyLk5vbmVMb2Nh
dGlvbiA9IEVtYmVyLk9iamVjdC5leHRlbmQoewotICBwYXRoOiAnJywKLQotICAvKioKLSAgICBS
ZXR1cm5zIHRoZSBjdXJyZW50IHBhdGguCi0KLSAgICBAcHJpdmF0ZQotICAgIEBtZXRob2QgZ2V0
VVJMCi0gICAgQHJldHVybiB7U3RyaW5nfSBwYXRoCi0gICovCi0gIGdldFVSTDogZnVuY3Rpb24o
KSB7Ci0gICAgcmV0dXJuIGdldCh0aGlzLCAncGF0aCcpOwotICB9LAotCi0gIC8qKgotICAgIFNl
dCB0aGUgcGF0aCBhbmQgcmVtZW1iZXJzIHdoYXQgd2FzIHNldC4gVXNpbmcgdGhpcyBtZXRob2QK
LSAgICB0byBjaGFuZ2UgdGhlIHBhdGggd2lsbCBub3QgaW52b2tlIHRoZSBgdXBkYXRlVVJMYCBj
YWxsYmFjay4KLQotICAgIEBwcml2YXRlCi0gICAgQG1ldGhvZCBzZXRVUkwKLSAgICBAcGFyYW0g
cGF0aCB7U3RyaW5nfQotICAqLwotICBzZXRVUkw6IGZ1bmN0aW9uKHBhdGgpIHsKLSAgICBzZXQo
dGhpcywgJ3BhdGgnLCBwYXRoKTsKLSAgfSwKLQotICAvKioKLSAgICBSZWdpc3RlciBhIGNhbGxi
YWNrIHRvIGJlIGludm9rZWQgd2hlbiB0aGUgcGF0aCBjaGFuZ2VzLiBUaGVzZQotICAgIGNhbGxi
YWNrcyB3aWxsIGV4ZWN1dGUgd2hlbiB0aGUgdXNlciBwcmVzc2VzIHRoZSBiYWNrIG9yIGZvcndh
cmQKLSAgICBidXR0b24sIGJ1dCBub3QgYWZ0ZXIgYHNldFVSTGAgaXMgaW52b2tlZC4KLQotICAg
IEBwcml2YXRlCi0gICAgQG1ldGhvZCBvblVwZGF0ZVVSTAotICAgIEBwYXJhbSBjYWxsYmFjayB7
RnVuY3Rpb259Ci0gICovCi0gIG9uVXBkYXRlVVJMOiBmdW5jdGlvbihjYWxsYmFjaykgewotICAg
IHRoaXMudXBkYXRlQ2FsbGJhY2sgPSBjYWxsYmFjazsKLSAgfSwKLQotICAvKioKLSAgICBTZXRz
IHRoZSBwYXRoIGFuZCBjYWxscyB0aGUgYHVwZGF0ZVVSTGAgY2FsbGJhY2suCi0KLSAgICBAcHJp
dmF0ZQotICAgIEBtZXRob2QgaGFuZGxlVVJMCi0gICAgQHBhcmFtIGNhbGxiYWNrIHtGdW5jdGlv
bn0KLSAgKi8KLSAgaGFuZGxlVVJMOiBmdW5jdGlvbih1cmwpIHsKLSAgICBzZXQodGhpcywgJ3Bh
dGgnLCB1cmwpOwotICAgIHRoaXMudXBkYXRlQ2FsbGJhY2sodXJsKTsKLSAgfSwKLQotICAvKioK
LSAgICBHaXZlbiBhIFVSTCwgZm9ybWF0cyBpdCB0byBiZSBwbGFjZWQgaW50byB0aGUgcGFnZSBh
cyBwYXJ0Ci0gICAgb2YgYW4gZWxlbWVudCdzIGBocmVmYCBhdHRyaWJ1dGUuCi0KLSAgICBUaGlz
IGlzIHVzZWQsIGZvciBleGFtcGxlLCB3aGVuIHVzaW5nIHRoZSB7e2FjdGlvbn19IGhlbHBlcgot
ICAgIHRvIGdlbmVyYXRlIGEgVVJMIGJhc2VkIG9uIGFuIGV2ZW50LgotCi0gICAgQHByaXZhdGUK
LSAgICBAbWV0aG9kIGZvcm1hdFVSTAotICAgIEBwYXJhbSB1cmwge1N0cmluZ30KLSAgICBAcmV0
dXJuIHtTdHJpbmd9IHVybAotICAqLwotICBmb3JtYXRVUkw6IGZ1bmN0aW9uKHVybCkgewotICAg
IC8vIFRoZSByZXR1cm4gdmFsdWUgaXMgbm90IG92ZXJseSBtZWFuaW5nZnVsLCBidXQgd2UgZG8g
bm90IHdhbnQgdG8gdGhyb3cKLSAgICAvLyBlcnJvcnMgd2hlbiB0ZXN0IGNvZGUgcmVuZGVycyB0
ZW1wbGF0ZXMgY29udGFpbmluZyB7e2FjdGlvbiBocmVmPXRydWV9fQotICAgIC8vIGhlbHBlcnMu
Ci0gICAgcmV0dXJuIHVybDsKLSAgfQotfSk7Ci0KLUVtYmVyLkxvY2F0aW9uLnJlZ2lzdGVySW1w
bGVtZW50YXRpb24oJ25vbmUnLCBFbWJlci5Ob25lTG9jYXRpb24pOwotCi19KSgpOwotCi0KLQot
KGZ1bmN0aW9uKCkgewotLyoqCi1AbW9kdWxlIGVtYmVyCi1Ac3VibW9kdWxlIGVtYmVyLXJvdXRp
bmcKLSovCi0KLXZhciBnZXQgPSBFbWJlci5nZXQsIHNldCA9IEVtYmVyLnNldDsKLQotLyoqCi0g
IGBFbWJlci5IYXNoTG9jYXRpb25gIGltcGxlbWVudHMgdGhlIGxvY2F0aW9uIEFQSSB1c2luZyB0
aGUgYnJvd3NlcidzCi0gIGhhc2guIEF0IHByZXNlbnQsIGl0IHJlbGllcyBvbiBhIGBoYXNoY2hh
bmdlYCBldmVudCBleGlzdGluZyBpbiB0aGUKLSAgYnJvd3Nlci4KLQotICBAY2xhc3MgSGFzaExv
Y2F0aW9uCi0gIEBuYW1lc3BhY2UgRW1iZXIKLSAgQGV4dGVuZHMgRW1iZXIuT2JqZWN0Ci0qLwot
RW1iZXIuSGFzaExvY2F0aW9uID0gRW1iZXIuT2JqZWN0LmV4dGVuZCh7Ci0KLSAgaW5pdDogZnVu
Y3Rpb24oKSB7Ci0gICAgc2V0KHRoaXMsICdsb2NhdGlvbicsIGdldCh0aGlzLCAnbG9jYXRpb24n
KSB8fCB3aW5kb3cubG9jYXRpb24pOwotICB9LAotCi0gIC8qKgotICAgIFJldHVybnMgdGhlIGN1
cnJlbnQgYGxvY2F0aW9uLmhhc2hgLCBtaW51cyB0aGUgJyMnIGF0IHRoZSBmcm9udC4KLQotICAg
IEBwcml2YXRlCi0gICAgQG1ldGhvZCBnZXRVUkwKLSAgKi8KLSAgZ2V0VVJMOiBmdW5jdGlvbigp
IHsKLSAgICAgICAgLy8gRGVmYXVsdCBpbXBsZW1lbnRhdGlvbiB3aXRob3V0IGZlYXR1cmUgZmxh
ZyBlbmFibGVkCi0gICAgcmV0dXJuIGdldCh0aGlzLCAnbG9jYXRpb24nKS5oYXNoLnN1YnN0cigx
KTsKLSAgfSwKLQotICAvKioKLSAgICBTZXQgdGhlIGBsb2NhdGlvbi5oYXNoYCBhbmQgcmVtZW1i
ZXJzIHdoYXQgd2FzIHNldC4gVGhpcyBwcmV2ZW50cwotICAgIGBvblVwZGF0ZVVSTGAgY2FsbGJh
Y2tzIGZyb20gdHJpZ2dlcmluZyB3aGVuIHRoZSBoYXNoIHdhcyBzZXQgYnkKLSAgICBgSGFzaExv
Y2F0aW9uYC4KLQotICAgIEBwcml2YXRlCi0gICAgQG1ldGhvZCBzZXRVUkwKLSAgICBAcGFyYW0g
cGF0aCB7U3RyaW5nfQotICAqLwotICBzZXRVUkw6IGZ1bmN0aW9uKHBhdGgpIHsKLSAgICBnZXQo
dGhpcywgJ2xvY2F0aW9uJykuaGFzaCA9IHBhdGg7Ci0gICAgc2V0KHRoaXMsICdsYXN0U2V0VVJM
JywgcGF0aCk7Ci0gIH0sCi0KLSAgLyoqCi0gICAgVXNlcyBsb2NhdGlvbi5yZXBsYWNlIHRvIHVw
ZGF0ZSB0aGUgdXJsIHdpdGhvdXQgYSBwYWdlIHJlbG9hZAotICAgIG9yIGhpc3RvcnkgbW9kaWZp
Y2F0aW9uLgotCi0gICAgQHByaXZhdGUKLSAgICBAbWV0aG9kIHJlcGxhY2VVUkwKLSAgICBAcGFy
YW0gcGF0aCB7U3RyaW5nfQotICAqLwotICByZXBsYWNlVVJMOiBmdW5jdGlvbihwYXRoKSB7Ci0g
ICAgZ2V0KHRoaXMsICdsb2NhdGlvbicpLnJlcGxhY2UoJyMnICsgcGF0aCk7Ci0gIH0sCi0KLSAg
LyoqCi0gICAgUmVnaXN0ZXIgYSBjYWxsYmFjayB0byBiZSBpbnZva2VkIHdoZW4gdGhlIGhhc2gg
Y2hhbmdlcy4gVGhlc2UKLSAgICBjYWxsYmFja3Mgd2lsbCBleGVjdXRlIHdoZW4gdGhlIHVzZXIg
cHJlc3NlcyB0aGUgYmFjayBvciBmb3J3YXJkCi0gICAgYnV0dG9uLCBidXQgbm90IGFmdGVyIGBz
ZXRVUkxgIGlzIGludm9rZWQuCi0KLSAgICBAcHJpdmF0ZQotICAgIEBtZXRob2Qgb25VcGRhdGVV
UkwKLSAgICBAcGFyYW0gY2FsbGJhY2sge0Z1bmN0aW9ufQotICAqLwotICBvblVwZGF0ZVVSTDog
ZnVuY3Rpb24oY2FsbGJhY2spIHsKLSAgICB2YXIgc2VsZiA9IHRoaXM7Ci0gICAgdmFyIGd1aWQg
PSBFbWJlci5ndWlkRm9yKHRoaXMpOwotCi0gICAgRW1iZXIuJCh3aW5kb3cpLm9uKCdoYXNoY2hh
bmdlLmVtYmVyLWxvY2F0aW9uLScrZ3VpZCwgZnVuY3Rpb24oKSB7Ci0gICAgICBFbWJlci5ydW4o
ZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZhciBwYXRoID0gbG9jYXRpb24uaGFzaC5zdWJzdHIoMSk7
Ci0gICAgICAgIGlmIChnZXQoc2VsZiwgJ2xhc3RTZXRVUkwnKSA9PT0gcGF0aCkgeyByZXR1cm47
IH0KLQotICAgICAgICBzZXQoc2VsZiwgJ2xhc3RTZXRVUkwnLCBudWxsKTsKLQotICAgICAgICBj
YWxsYmFjayhwYXRoKTsKLSAgICAgIH0pOwotICAgIH0pOwotICB9LAotCi0gIC8qKgotICAgIEdp
dmVuIGEgVVJMLCBmb3JtYXRzIGl0IHRvIGJlIHBsYWNlZCBpbnRvIHRoZSBwYWdlIGFzIHBhcnQK
LSAgICBvZiBhbiBlbGVtZW50J3MgYGhyZWZgIGF0dHJpYnV0ZS4KLQotICAgIFRoaXMgaXMgdXNl
ZCwgZm9yIGV4YW1wbGUsIHdoZW4gdXNpbmcgdGhlIHt7YWN0aW9ufX0gaGVscGVyCi0gICAgdG8g
Z2VuZXJhdGUgYSBVUkwgYmFzZWQgb24gYW4gZXZlbnQuCi0KLSAgICBAcHJpdmF0ZQotICAgIEBt
ZXRob2QgZm9ybWF0VVJMCi0gICAgQHBhcmFtIHVybCB7U3RyaW5nfQotICAqLwotICBmb3JtYXRV
Ukw6IGZ1bmN0aW9uKHVybCkgewotICAgIHJldHVybiAnIycrdXJsOwotICB9LAotCi0gIC8qKgot
ICAgIENsZWFucyB1cCB0aGUgSGFzaExvY2F0aW9uIGV2ZW50IGxpc3RlbmVyLgotCi0gICAgQHBy
aXZhdGUKLSAgICBAbWV0aG9kIHdpbGxEZXN0cm95Ci0gICovCi0gIHdpbGxEZXN0cm95OiBmdW5j
dGlvbigpIHsKLSAgICB2YXIgZ3VpZCA9IEVtYmVyLmd1aWRGb3IodGhpcyk7Ci0KLSAgICBFbWJl
ci4kKHdpbmRvdykub2ZmKCdoYXNoY2hhbmdlLmVtYmVyLWxvY2F0aW9uLScrZ3VpZCk7Ci0gIH0K
LX0pOwotCi1FbWJlci5Mb2NhdGlvbi5yZWdpc3RlckltcGxlbWVudGF0aW9uKCdoYXNoJywgRW1i
ZXIuSGFzaExvY2F0aW9uKTsKLQotfSkoKTsKLQotCi0KLShmdW5jdGlvbigpIHsKLS8qKgotQG1v
ZHVsZSBlbWJlcgotQHN1Ym1vZHVsZSBlbWJlci1yb3V0aW5nCi0qLwotCi12YXIgZ2V0ID0gRW1i
ZXIuZ2V0LCBzZXQgPSBFbWJlci5zZXQ7Ci12YXIgcG9wc3RhdGVGaXJlZCA9IGZhbHNlOwotdmFy
IHN1cHBvcnRzSGlzdG9yeVN0YXRlID0gd2luZG93Lmhpc3RvcnkgJiYgJ3N0YXRlJyBpbiB3aW5k
b3cuaGlzdG9yeTsKLQotLyoqCi0gIEVtYmVyLkhpc3RvcnlMb2NhdGlvbiBpbXBsZW1lbnRzIHRo
ZSBsb2NhdGlvbiBBUEkgdXNpbmcgdGhlIGJyb3dzZXIncwotICBoaXN0b3J5LnB1c2hTdGF0ZSBB
UEkuCi0KLSAgQGNsYXNzIEhpc3RvcnlMb2NhdGlvbgotICBAbmFtZXNwYWNlIEVtYmVyCi0gIEBl
eHRlbmRzIEVtYmVyLk9iamVjdAotKi8KLUVtYmVyLkhpc3RvcnlMb2NhdGlvbiA9IEVtYmVyLk9i
amVjdC5leHRlbmQoewotCi0gIGluaXQ6IGZ1bmN0aW9uKCkgewotICAgIHNldCh0aGlzLCAnbG9j
YXRpb24nLCBnZXQodGhpcywgJ2xvY2F0aW9uJykgfHwgd2luZG93LmxvY2F0aW9uKTsKLSAgfSwK
LQotICAvKioKLSAgICBVc2VkIHRvIHNldCBzdGF0ZSBvbiBmaXJzdCBjYWxsIHRvIHNldFVSTAot
Ci0gICAgQHByaXZhdGUKLSAgICBAbWV0aG9kIGluaXRTdGF0ZQotICAqLwotICBpbml0U3RhdGU6
IGZ1bmN0aW9uKCkgewotICAgIHNldCh0aGlzLCAnaGlzdG9yeScsIGdldCh0aGlzLCAnaGlzdG9y
eScpIHx8IHdpbmRvdy5oaXN0b3J5KTsKLSAgICB0aGlzLnJlcGxhY2VTdGF0ZSh0aGlzLmZvcm1h
dFVSTCh0aGlzLmdldFVSTCgpKSk7Ci0gIH0sCi0KLSAgLyoqCi0gICAgV2lsbCBiZSBwcmUtcGVu
ZGVkIHRvIHBhdGggdXBvbiBzdGF0ZSBjaGFuZ2UKLQotICAgIEBwcm9wZXJ0eSByb290VVJMCi0g
ICAgQGRlZmF1bHQgJy8nCi0gICovCi0gIHJvb3RVUkw6ICcvJywKLQotICAvKioKLSAgICBSZXR1
cm5zIHRoZSBjdXJyZW50IGBsb2NhdGlvbi5wYXRobmFtZWAgd2l0aG91dCBgcm9vdFVSTGAuCi0K
LSAgICBAcHJpdmF0ZQotICAgIEBtZXRob2QgZ2V0VVJMCi0gICAgQHJldHVybiB1cmwge1N0cmlu
Z30KLSAgKi8KLSAgZ2V0VVJMOiBmdW5jdGlvbigpIHsKLSAgICB2YXIgcm9vdFVSTCA9IGdldCh0
aGlzLCAncm9vdFVSTCcpLAotICAgICAgICBsb2NhdGlvbiA9IGdldCh0aGlzLCAnbG9jYXRpb24n
KSwKLSAgICAgICAgcGF0aCA9IGxvY2F0aW9uLnBhdGhuYW1lOwotCi0gICAgcm9vdFVSTCA9IHJv
b3RVUkwucmVwbGFjZSgvXC8kLywgJycpOwotICAgIHZhciB1cmwgPSBwYXRoLnJlcGxhY2Uocm9v
dFVSTCwgJycpOwotCi0gICAgCi0gICAgcmV0dXJuIHVybDsKLSAgfSwKLQotICAvKioKLSAgICBV
c2VzIGBoaXN0b3J5LnB1c2hTdGF0ZWAgdG8gdXBkYXRlIHRoZSB1cmwgd2l0aG91dCBhIHBhZ2Ug
cmVsb2FkLgotCi0gICAgQHByaXZhdGUKLSAgICBAbWV0aG9kIHNldFVSTAotICAgIEBwYXJhbSBw
YXRoIHtTdHJpbmd9Ci0gICovCi0gIHNldFVSTDogZnVuY3Rpb24ocGF0aCkgewotICAgIHZhciBz
dGF0ZSA9IHRoaXMuZ2V0U3RhdGUoKTsKLSAgICBwYXRoID0gdGhpcy5mb3JtYXRVUkwocGF0aCk7
Ci0KLSAgICBpZiAoc3RhdGUgJiYgc3RhdGUucGF0aCAhPT0gcGF0aCkgewotICAgICAgdGhpcy5w
dXNoU3RhdGUocGF0aCk7Ci0gICAgfQotICB9LAotCi0gIC8qKgotICAgIFVzZXMgYGhpc3Rvcnku
cmVwbGFjZVN0YXRlYCB0byB1cGRhdGUgdGhlIHVybCB3aXRob3V0IGEgcGFnZSByZWxvYWQKLSAg
ICBvciBoaXN0b3J5IG1vZGlmaWNhdGlvbi4KLQotICAgIEBwcml2YXRlCi0gICAgQG1ldGhvZCBy
ZXBsYWNlVVJMCi0gICAgQHBhcmFtIHBhdGgge1N0cmluZ30KLSAgKi8KLSAgcmVwbGFjZVVSTDog
ZnVuY3Rpb24ocGF0aCkgewotICAgIHZhciBzdGF0ZSA9IHRoaXMuZ2V0U3RhdGUoKTsKLSAgICBw
YXRoID0gdGhpcy5mb3JtYXRVUkwocGF0aCk7Ci0KLSAgICBpZiAoc3RhdGUgJiYgc3RhdGUucGF0
aCAhPT0gcGF0aCkgewotICAgICAgdGhpcy5yZXBsYWNlU3RhdGUocGF0aCk7Ci0gICAgfQotICB9
LAotCi0gIC8qKgotICAgR2V0IHRoZSBjdXJyZW50IGBoaXN0b3J5LnN0YXRlYAotICAgUG9seWZp
bGwgY2hlY2tzIGZvciBuYXRpdmUgYnJvd3NlciBzdXBwb3J0IGFuZCBmYWxscyBiYWNrIHRvIHJl
dHJpZXZpbmcKLSAgIGZyb20gYSBwcml2YXRlIF9oaXN0b3J5U3RhdGUgdmFyaWFibGUKLQotICAg
QHByaXZhdGUKLSAgIEBtZXRob2QgZ2V0U3RhdGUKLSAgIEByZXR1cm4gc3RhdGUge09iamVjdH0K
LSAgKi8KLSAgZ2V0U3RhdGU6IGZ1bmN0aW9uKCkgewotICAgIHJldHVybiBzdXBwb3J0c0hpc3Rv
cnlTdGF0ZSA/IGdldCh0aGlzLCAnaGlzdG9yeScpLnN0YXRlIDogdGhpcy5faGlzdG9yeVN0YXRl
OwotICB9LAotCi0gIC8qKgotICAgUHVzaGVzIGEgbmV3IHN0YXRlLgotCi0gICBAcHJpdmF0ZQot
ICAgQG1ldGhvZCBwdXNoU3RhdGUKLSAgIEBwYXJhbSBwYXRoIHtTdHJpbmd9Ci0gICovCi0gIHB1
c2hTdGF0ZTogZnVuY3Rpb24ocGF0aCkgewotICAgIHZhciBzdGF0ZSA9IHsgcGF0aDogcGF0aCB9
OwotCi0gICAgZ2V0KHRoaXMsICdoaXN0b3J5JykucHVzaFN0YXRlKHN0YXRlLCBudWxsLCBwYXRo
KTsKLQotICAgIC8vIHN0b3JlIHN0YXRlIGlmIGJyb3dzZXIgZG9lc24ndCBzdXBwb3J0IGBoaXN0
b3J5LnN0YXRlYAotICAgIGlmICghc3VwcG9ydHNIaXN0b3J5U3RhdGUpIHsKLSAgICAgIHRoaXMu
X2hpc3RvcnlTdGF0ZSA9IHN0YXRlOwotICAgIH0KLQotICAgIC8vIHVzZWQgZm9yIHdlYmtpdCB3
b3JrYXJvdW5kCi0gICAgdGhpcy5fcHJldmlvdXNVUkwgPSB0aGlzLmdldFVSTCgpOwotICB9LAot
Ci0gIC8qKgotICAgUmVwbGFjZXMgdGhlIGN1cnJlbnQgc3RhdGUuCi0KLSAgIEBwcml2YXRlCi0g
ICBAbWV0aG9kIHJlcGxhY2VTdGF0ZQotICAgQHBhcmFtIHBhdGgge1N0cmluZ30KLSAgKi8KLSAg
cmVwbGFjZVN0YXRlOiBmdW5jdGlvbihwYXRoKSB7Ci0gICAgdmFyIHN0YXRlID0geyBwYXRoOiBw
YXRoIH07Ci0KLSAgICBnZXQodGhpcywgJ2hpc3RvcnknKS5yZXBsYWNlU3RhdGUoc3RhdGUsIG51
bGwsIHBhdGgpOwotCi0gICAgLy8gc3RvcmUgc3RhdGUgaWYgYnJvd3NlciBkb2Vzbid0IHN1cHBv
cnQgYGhpc3Rvcnkuc3RhdGVgCi0gICAgaWYgKCFzdXBwb3J0c0hpc3RvcnlTdGF0ZSkgewotICAg
ICAgdGhpcy5faGlzdG9yeVN0YXRlID0gc3RhdGU7Ci0gICAgfQotCi0gICAgLy8gdXNlZCBmb3Ig
d2Via2l0IHdvcmthcm91bmQKLSAgICB0aGlzLl9wcmV2aW91c1VSTCA9IHRoaXMuZ2V0VVJMKCk7
Ci0gIH0sCi0KLSAgLyoqCi0gICAgUmVnaXN0ZXIgYSBjYWxsYmFjayB0byBiZSBpbnZva2VkIHdo
ZW5ldmVyIHRoZSBicm93c2VyCi0gICAgaGlzdG9yeSBjaGFuZ2VzLCBpbmNsdWRpbmcgdXNpbmcg
Zm9yd2FyZCBhbmQgYmFjayBidXR0b25zLgotCi0gICAgQHByaXZhdGUKLSAgICBAbWV0aG9kIG9u
VXBkYXRlVVJMCi0gICAgQHBhcmFtIGNhbGxiYWNrIHtGdW5jdGlvbn0KLSAgKi8KLSAgb25VcGRh
dGVVUkw6IGZ1bmN0aW9uKGNhbGxiYWNrKSB7Ci0gICAgdmFyIGd1aWQgPSBFbWJlci5ndWlkRm9y
KHRoaXMpLAotICAgICAgICBzZWxmID0gdGhpczsKLQotICAgIEVtYmVyLiQod2luZG93KS5vbign
cG9wc3RhdGUuZW1iZXItbG9jYXRpb24tJytndWlkLCBmdW5jdGlvbihlKSB7Ci0gICAgICAvLyBJ
Z25vcmUgaW5pdGlhbCBwYWdlIGxvYWQgcG9wc3RhdGUgZXZlbnQgaW4gQ2hyb21lCi0gICAgICBp
ZiAoIXBvcHN0YXRlRmlyZWQpIHsKLSAgICAgICAgcG9wc3RhdGVGaXJlZCA9IHRydWU7Ci0gICAg
ICAgIGlmIChzZWxmLmdldFVSTCgpID09PSBzZWxmLl9wcmV2aW91c1VSTCkgeyByZXR1cm47IH0K
LSAgICAgIH0KLSAgICAgIGNhbGxiYWNrKHNlbGYuZ2V0VVJMKCkpOwotICAgIH0pOwotICB9LAot
Ci0gIC8qKgotICAgIFVzZWQgd2hlbiB1c2luZyBge3thY3Rpb259fWAgaGVscGVyLiAgVGhlIHVy
bCBpcyBhbHdheXMgYXBwZW5kZWQgdG8gdGhlIHJvb3RVUkwuCi0KLSAgICBAcHJpdmF0ZQotICAg
IEBtZXRob2QgZm9ybWF0VVJMCi0gICAgQHBhcmFtIHVybCB7U3RyaW5nfQotICAgIEByZXR1cm4g
Zm9ybWF0dGVkIHVybCB7U3RyaW5nfQotICAqLwotICBmb3JtYXRVUkw6IGZ1bmN0aW9uKHVybCkg
ewotICAgIHZhciByb290VVJMID0gZ2V0KHRoaXMsICdyb290VVJMJyk7Ci0KLSAgICBpZiAodXJs
ICE9PSAnJykgewotICAgICAgcm9vdFVSTCA9IHJvb3RVUkwucmVwbGFjZSgvXC8kLywgJycpOwot
ICAgIH0KLQotICAgIHJldHVybiByb290VVJMICsgdXJsOwotICB9LAotCi0gIC8qKgotICAgIENs
ZWFucyB1cCB0aGUgSGlzdG9yeUxvY2F0aW9uIGV2ZW50IGxpc3RlbmVyLgotCi0gICAgQHByaXZh
dGUKLSAgICBAbWV0aG9kIHdpbGxEZXN0cm95Ci0gICovCi0gIHdpbGxEZXN0cm95OiBmdW5jdGlv
bigpIHsKLSAgICB2YXIgZ3VpZCA9IEVtYmVyLmd1aWRGb3IodGhpcyk7Ci0KLSAgICBFbWJlci4k
KHdpbmRvdykub2ZmKCdwb3BzdGF0ZS5lbWJlci1sb2NhdGlvbi0nK2d1aWQpOwotICB9Ci19KTsK
LQotRW1iZXIuTG9jYXRpb24ucmVnaXN0ZXJJbXBsZW1lbnRhdGlvbignaGlzdG9yeScsIEVtYmVy
Lkhpc3RvcnlMb2NhdGlvbik7Ci0KLX0pKCk7Ci0KLQotCi0oZnVuY3Rpb24oKSB7Ci0KLX0pKCk7
Ci0KLQotCi0oZnVuY3Rpb24oKSB7Ci0vKioKLUVtYmVyIFJvdXRpbmcKLQotQG1vZHVsZSBlbWJl
cgotQHN1Ym1vZHVsZSBlbWJlci1yb3V0aW5nCi1AcmVxdWlyZXMgZW1iZXItdmlld3MKLSovCi0K
LX0pKCk7Ci0KLShmdW5jdGlvbigpIHsKLWZ1bmN0aW9uIHZpc2l0KHZlcnRleCwgZm4sIHZpc2l0
ZWQsIHBhdGgpIHsKLSAgdmFyIG5hbWUgPSB2ZXJ0ZXgubmFtZSwKLSAgICB2ZXJ0aWNlcyA9IHZl
cnRleC5pbmNvbWluZywKLSAgICBuYW1lcyA9IHZlcnRleC5pbmNvbWluZ05hbWVzLAotICAgIGxl
biA9IG5hbWVzLmxlbmd0aCwKLSAgICBpOwotICBpZiAoIXZpc2l0ZWQpIHsKLSAgICB2aXNpdGVk
ID0ge307Ci0gIH0KLSAgaWYgKCFwYXRoKSB7Ci0gICAgcGF0aCA9IFtdOwotICB9Ci0gIGlmICh2
aXNpdGVkLmhhc093blByb3BlcnR5KG5hbWUpKSB7Ci0gICAgcmV0dXJuOwotICB9Ci0gIHBhdGgu
cHVzaChuYW1lKTsKLSAgdmlzaXRlZFtuYW1lXSA9IHRydWU7Ci0gIGZvciAoaSA9IDA7IGkgPCBs
ZW47IGkrKykgewotICAgIHZpc2l0KHZlcnRpY2VzW25hbWVzW2ldXSwgZm4sIHZpc2l0ZWQsIHBh
dGgpOwotICB9Ci0gIGZuKHZlcnRleCwgcGF0aCk7Ci0gIHBhdGgucG9wKCk7Ci19Ci0KLWZ1bmN0
aW9uIERBRygpIHsKLSAgdGhpcy5uYW1lcyA9IFtdOwotICB0aGlzLnZlcnRpY2VzID0ge307Ci19
Ci0KLURBRy5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24obmFtZSkgewotICBpZiAoIW5hbWUpIHsg
cmV0dXJuOyB9Ci0gIGlmICh0aGlzLnZlcnRpY2VzLmhhc093blByb3BlcnR5KG5hbWUpKSB7Ci0g
ICAgcmV0dXJuIHRoaXMudmVydGljZXNbbmFtZV07Ci0gIH0KLSAgdmFyIHZlcnRleCA9IHsKLSAg
ICBuYW1lOiBuYW1lLCBpbmNvbWluZzoge30sIGluY29taW5nTmFtZXM6IFtdLCBoYXNPdXRnb2lu
ZzogZmFsc2UsIHZhbHVlOiBudWxsCi0gIH07Ci0gIHRoaXMudmVydGljZXNbbmFtZV0gPSB2ZXJ0
ZXg7Ci0gIHRoaXMubmFtZXMucHVzaChuYW1lKTsKLSAgcmV0dXJuIHZlcnRleDsKLX07Ci0KLURB
Ry5wcm90b3R5cGUubWFwID0gZnVuY3Rpb24obmFtZSwgdmFsdWUpIHsKLSAgdGhpcy5hZGQobmFt
ZSkudmFsdWUgPSB2YWx1ZTsKLX07Ci0KLURBRy5wcm90b3R5cGUuYWRkRWRnZSA9IGZ1bmN0aW9u
KGZyb21OYW1lLCB0b05hbWUpIHsKLSAgaWYgKCFmcm9tTmFtZSB8fCAhdG9OYW1lIHx8IGZyb21O
YW1lID09PSB0b05hbWUpIHsKLSAgICByZXR1cm47Ci0gIH0KLSAgdmFyIGZyb20gPSB0aGlzLmFk
ZChmcm9tTmFtZSksIHRvID0gdGhpcy5hZGQodG9OYW1lKTsKLSAgaWYgKHRvLmluY29taW5nLmhh
c093blByb3BlcnR5KGZyb21OYW1lKSkgewotICAgIHJldHVybjsKLSAgfQotICBmdW5jdGlvbiBj
aGVja0N5Y2xlKHZlcnRleCwgcGF0aCkgewotICAgIGlmICh2ZXJ0ZXgubmFtZSA9PT0gdG9OYW1l
KSB7Ci0gICAgICB0aHJvdyBuZXcgRW1iZXIuRXJyb3IoImN5Y2xlIGRldGVjdGVkOiAiICsgdG9O
YW1lICsgIiA8LSAiICsgcGF0aC5qb2luKCIgPC0gIikpOwotICAgIH0KLSAgfQotICB2aXNpdChm
cm9tLCBjaGVja0N5Y2xlKTsKLSAgZnJvbS5oYXNPdXRnb2luZyA9IHRydWU7Ci0gIHRvLmluY29t
aW5nW2Zyb21OYW1lXSA9IGZyb207Ci0gIHRvLmluY29taW5nTmFtZXMucHVzaChmcm9tTmFtZSk7
Ci19OwotCi1EQUcucHJvdG90eXBlLnRvcHNvcnQgPSBmdW5jdGlvbihmbikgewotICB2YXIgdmlz
aXRlZCA9IHt9LAotICAgIHZlcnRpY2VzID0gdGhpcy52ZXJ0aWNlcywKLSAgICBuYW1lcyA9IHRo
aXMubmFtZXMsCi0gICAgbGVuID0gbmFtZXMubGVuZ3RoLAotICAgIGksIHZlcnRleDsKLSAgZm9y
IChpID0gMDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgdmVydGV4ID0gdmVydGljZXNbbmFtZXNbaV1d
OwotICAgIGlmICghdmVydGV4Lmhhc091dGdvaW5nKSB7Ci0gICAgICB2aXNpdCh2ZXJ0ZXgsIGZu
LCB2aXNpdGVkKTsKLSAgICB9Ci0gIH0KLX07Ci0KLURBRy5wcm90b3R5cGUuYWRkRWRnZXMgPSBm
dW5jdGlvbihuYW1lLCB2YWx1ZSwgYmVmb3JlLCBhZnRlcikgewotICB2YXIgaTsKLSAgdGhpcy5t
YXAobmFtZSwgdmFsdWUpOwotICBpZiAoYmVmb3JlKSB7Ci0gICAgaWYgKHR5cGVvZiBiZWZvcmUg
PT09ICdzdHJpbmcnKSB7Ci0gICAgICB0aGlzLmFkZEVkZ2UobmFtZSwgYmVmb3JlKTsKLSAgICB9
IGVsc2UgewotICAgICAgZm9yIChpID0gMDsgaSA8IGJlZm9yZS5sZW5ndGg7IGkrKykgewotICAg
ICAgICB0aGlzLmFkZEVkZ2UobmFtZSwgYmVmb3JlW2ldKTsKLSAgICAgIH0KLSAgICB9Ci0gIH0K
LSAgaWYgKGFmdGVyKSB7Ci0gICAgaWYgKHR5cGVvZiBhZnRlciA9PT0gJ3N0cmluZycpIHsKLSAg
ICAgIHRoaXMuYWRkRWRnZShhZnRlciwgbmFtZSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIGZvciAo
aSA9IDA7IGkgPCBhZnRlci5sZW5ndGg7IGkrKykgewotICAgICAgICB0aGlzLmFkZEVkZ2UoYWZ0
ZXJbaV0sIG5hbWUpOwotICAgICAgfQotICAgIH0KLSAgfQotfTsKLQotRW1iZXIuREFHID0gREFH
OwotCi19KSgpOwotCi0KLQotKGZ1bmN0aW9uKCkgewotLyoqCi1AbW9kdWxlIGVtYmVyCi1Ac3Vi
bW9kdWxlIGVtYmVyLWFwcGxpY2F0aW9uCi0qLwotCi12YXIgZ2V0ID0gRW1iZXIuZ2V0LAotICAg
IGNsYXNzaWZ5ID0gRW1iZXIuU3RyaW5nLmNsYXNzaWZ5LAotICAgIGNhcGl0YWxpemUgPSBFbWJl
ci5TdHJpbmcuY2FwaXRhbGl6ZSwKLSAgICBkZWNhbWVsaXplID0gRW1iZXIuU3RyaW5nLmRlY2Ft
ZWxpemU7Ci0KLS8qKgotICBUaGUgRGVmYXVsdFJlc29sdmVyIGRlZmluZXMgdGhlIGRlZmF1bHQg
bG9va3VwIHJ1bGVzIHRvIHJlc29sdmUKLSAgY29udGFpbmVyIGxvb2t1cHMgYmVmb3JlIGNvbnN1
bHRpbmcgdGhlIGNvbnRhaW5lciBmb3IgcmVnaXN0ZXJlZAotICBpdGVtczoKLQotKiB0ZW1wbGF0
ZXMgYXJlIGxvb2tlZCB1cCBvbiBgRW1iZXIuVEVNUExBVEVTYAotKiBvdGhlciBuYW1lcyBhcmUg
bG9va2VkIHVwIG9uIHRoZSBhcHBsaWNhdGlvbiBhZnRlciBjb252ZXJ0aW5nCi0gIHRoZSBuYW1l
LiBGb3IgZXhhbXBsZSwgYGNvbnRyb2xsZXI6cG9zdGAgbG9va3MgdXAKLSAgYEFwcC5Qb3N0Q29u
dHJvbGxlcmAgYnkgZGVmYXVsdC4KLSogdGhlcmUgYXJlIHNvbWUgbnVhbmNlcyAoc2VlIGV4YW1w
bGVzIGJlbG93KQotCi0gICMjIyBIb3cgUmVzb2x2aW5nIFdvcmtzCi0KLSAgVGhlIGNvbnRhaW5l
ciBjYWxscyB0aGlzIG9iamVjdCdzIGByZXNvbHZlYCBtZXRob2Qgd2l0aCB0aGUKLSAgYGZ1bGxO
YW1lYCBhcmd1bWVudC4KLQotICBJdCBmaXJzdCBwYXJzZXMgdGhlIGZ1bGxOYW1lIGludG8gYW4g
b2JqZWN0IHVzaW5nIGBwYXJzZU5hbWVgLgotCi0gIFRoZW4gaXQgY2hlY2tzIGZvciB0aGUgcHJl
c2VuY2Ugb2YgYSB0eXBlLXNwZWNpZmljIGluc3RhbmNlCi0gIG1ldGhvZCBvZiB0aGUgZm9ybSBg
cmVzb2x2ZVtUeXBlXWAgYW5kIGNhbGxzIGl0IGlmIGl0IGV4aXN0cy4KLSAgRm9yIGV4YW1wbGUg
aWYgaXQgd2FzIHJlc29sdmluZyAndGVtcGxhdGU6cG9zdCcsIGl0IHdvdWxkIGNhbGwKLSAgdGhl
IGByZXNvbHZlVGVtcGxhdGVgIG1ldGhvZC4KLQotICBJdHMgbGFzdCByZXNvcnQgaXMgdG8gY2Fs
bCB0aGUgYHJlc29sdmVPdGhlcmAgbWV0aG9kLgotCi0gIFRoZSBtZXRob2RzIG9mIHRoaXMgb2Jq
ZWN0IGFyZSBkZXNpZ25lZCB0byBiZSBlYXN5IHRvIG92ZXJyaWRlCi0gIGluIGEgc3ViY2xhc3Mu
IEZvciBleGFtcGxlLCB5b3UgY291bGQgZW5oYW5jZSBob3cgYSB0ZW1wbGF0ZQotICBpcyByZXNv
bHZlZCBsaWtlIHNvOgotCi0gIGBgYGphdmFzY3JpcHQKLSAgQXBwID0gRW1iZXIuQXBwbGljYXRp
b24uY3JlYXRlKHsKLSAgICBSZXNvbHZlcjogRW1iZXIuRGVmYXVsdFJlc29sdmVyLmV4dGVuZCh7
Ci0gICAgICByZXNvbHZlVGVtcGxhdGU6IGZ1bmN0aW9uKHBhcnNlZE5hbWUpIHsKLSAgICAgICAg
dmFyIHJlc29sdmVkVGVtcGxhdGUgPSB0aGlzLl9zdXBlcihwYXJzZWROYW1lKTsKLSAgICAgICAg
aWYgKHJlc29sdmVkVGVtcGxhdGUpIHsgcmV0dXJuIHJlc29sdmVkVGVtcGxhdGU7IH0KLSAgICAg
ICAgcmV0dXJuIEVtYmVyLlRFTVBMQVRFU1snbm90X2ZvdW5kJ107Ci0gICAgICB9Ci0gICAgfSkK
LSAgfSk7Ci0gIGBgYAotCi0gIFNvbWUgZXhhbXBsZXMgb2YgaG93IG5hbWVzIGFyZSByZXNvbHZl
ZDoKLQotICBgYGAKLSAgJ3RlbXBsYXRlOnBvc3QnIC8vPT4gRW1iZXIuVEVNUExBVEVTWydwb3N0
J10KLSAgJ3RlbXBsYXRlOnBvc3RzL2J5bGluZScgLy89PiBFbWJlci5URU1QTEFURVNbJ3Bvc3Rz
L2J5bGluZSddCi0gICd0ZW1wbGF0ZTpwb3N0cy5ieWxpbmUnIC8vPT4gRW1iZXIuVEVNUExBVEVT
Wydwb3N0cy9ieWxpbmUnXQotICAndGVtcGxhdGU6YmxvZ1Bvc3QnIC8vPT4gRW1iZXIuVEVNUExB
VEVTWydibG9nUG9zdCddCi0gICAgICAgICAgICAgICAgICAgICAgLy8gICBPUgotICAgICAgICAg
ICAgICAgICAgICAgIC8vICAgRW1iZXIuVEVNUExBVEVTWydibG9nX3Bvc3QnXQotICAnY29udHJv
bGxlcjpwb3N0JyAvLz0+IEFwcC5Qb3N0Q29udHJvbGxlcgotICAnY29udHJvbGxlcjpwb3N0cy5p
bmRleCcgLy89PiBBcHAuUG9zdHNJbmRleENvbnRyb2xsZXIKLSAgJ2NvbnRyb2xsZXI6YmxvZy9w
b3N0JyAvLz0+IEJsb2cuUG9zdENvbnRyb2xsZXIKLSAgJ2NvbnRyb2xsZXI6YmFzaWMnIC8vPT4g
RW1iZXIuQ29udHJvbGxlcgotICAncm91dGU6cG9zdCcgLy89PiBBcHAuUG9zdFJvdXRlCi0gICdy
b3V0ZTpwb3N0cy5pbmRleCcgLy89PiBBcHAuUG9zdHNJbmRleFJvdXRlCi0gICdyb3V0ZTpibG9n
L3Bvc3QnIC8vPT4gQmxvZy5Qb3N0Um91dGUKLSAgJ3JvdXRlOmJhc2ljJyAvLz0+IEVtYmVyLlJv
dXRlCi0gICd2aWV3OnBvc3QnIC8vPT4gQXBwLlBvc3RWaWV3Ci0gICd2aWV3OnBvc3RzLmluZGV4
JyAvLz0+IEFwcC5Qb3N0c0luZGV4VmlldwotICAndmlldzpibG9nL3Bvc3QnIC8vPT4gQmxvZy5Q
b3N0VmlldwotICAndmlldzpiYXNpYycgLy89PiBFbWJlci5WaWV3Ci0gICdmb286cG9zdCcgLy89
PiBBcHAuUG9zdEZvbwotICAnbW9kZWw6cG9zdCcgLy89PiBBcHAuUG9zdAotICBgYGAKLQotICBA
Y2xhc3MgRGVmYXVsdFJlc29sdmVyCi0gIEBuYW1lc3BhY2UgRW1iZXIKLSAgQGV4dGVuZHMgRW1i
ZXIuT2JqZWN0Ci0qLwotRW1iZXIuRGVmYXVsdFJlc29sdmVyID0gRW1iZXIuT2JqZWN0LmV4dGVu
ZCh7Ci0gIC8qKgotICAgIFRoaXMgd2lsbCBiZSBzZXQgdG8gdGhlIEFwcGxpY2F0aW9uIGluc3Rh
bmNlIHdoZW4gaXQgaXMKLSAgICBjcmVhdGVkLgotCi0gICAgQHByb3BlcnR5IG5hbWVzcGFjZQot
ICAqLwotICBuYW1lc3BhY2U6IG51bGwsCi0KLSAgbm9ybWFsaXplOiBmdW5jdGlvbihmdWxsTmFt
ZSkgewotICAgIHZhciBzcGxpdCA9IGZ1bGxOYW1lLnNwbGl0KCc6JywgMiksCi0gICAgICAgIHR5
cGUgPSBzcGxpdFswXSwKLSAgICAgICAgbmFtZSA9IHNwbGl0WzFdOwotCi0gICAgRW1iZXIuYXNz
ZXJ0KCJUcmllZCB0byBub3JtYWxpemUgYSBjb250YWluZXIgbmFtZSB3aXRob3V0IGEgY29sb24g
KDopIGluICIgKwotICAgICAgICAgICAgICAgICAiaXQuIFlvdSBwcm9iYWJseSB0cmllZCB0byBs
b29rdXAgYSBuYW1lIHRoYXQgZGlkIG5vdCBjb250YWluICIgKwotICAgICAgICAgICAgICAgICAi
YSB0eXBlLCBhIGNvbG9uLCBhbmQgYSBuYW1lLiBBIHByb3BlciBsb29rdXAgbmFtZSB3b3VsZCBi
ZSAiICsKLSAgICAgICAgICAgICAgICAgImB2aWV3OnBvc3RgLiIsIHNwbGl0Lmxlbmd0aCA9PT0g
Mik7Ci0KLSAgICBpZiAodHlwZSAhPT0gJ3RlbXBsYXRlJykgewotICAgICAgdmFyIHJlc3VsdCA9
IG5hbWU7Ci0KLSAgICAgIGlmIChyZXN1bHQuaW5kZXhPZignLicpID4gLTEpIHsKLSAgICAgICAg
cmVzdWx0ID0gcmVzdWx0LnJlcGxhY2UoL1wuKC4pL2csIGZ1bmN0aW9uKG0pIHsgcmV0dXJuIG0u
Y2hhckF0KDEpLnRvVXBwZXJDYXNlKCk7IH0pOwotICAgICAgfQotCi0gICAgICBpZiAobmFtZS5p
bmRleE9mKCdfJykgPiAtMSkgewotICAgICAgICByZXN1bHQgPSByZXN1bHQucmVwbGFjZSgvXygu
KS9nLCBmdW5jdGlvbihtKSB7IHJldHVybiBtLmNoYXJBdCgxKS50b1VwcGVyQ2FzZSgpOyB9KTsK
LSAgICAgIH0KLQotICAgICAgcmV0dXJuIHR5cGUgKyAnOicgKyByZXN1bHQ7Ci0gICAgfSBlbHNl
IHsKLSAgICAgIHJldHVybiBmdWxsTmFtZTsKLSAgICB9Ci0gIH0sCi0KLQotICAvKioKLSAgICBU
aGlzIG1ldGhvZCBpcyBjYWxsZWQgdmlhIHRoZSBjb250YWluZXIncyByZXNvbHZlciBtZXRob2Qu
Ci0gICAgSXQgcGFyc2VzIHRoZSBwcm92aWRlZCBgZnVsbE5hbWVgIGFuZCB0aGVuIGxvb2tzIHVw
IGFuZAotICAgIHJldHVybnMgdGhlIGFwcHJvcHJpYXRlIHRlbXBsYXRlIG9yIGNsYXNzLgotCi0g
ICAgQG1ldGhvZCByZXNvbHZlCi0gICAgQHBhcmFtIHtTdHJpbmd9IGZ1bGxOYW1lIHRoZSBsb29r
dXAgc3RyaW5nCi0gICAgQHJldHVybiB7T2JqZWN0fSB0aGUgcmVzb2x2ZWQgZmFjdG9yeQotICAq
LwotICByZXNvbHZlOiBmdW5jdGlvbihmdWxsTmFtZSkgewotICAgIHZhciBwYXJzZWROYW1lID0g
dGhpcy5wYXJzZU5hbWUoZnVsbE5hbWUpLAotICAgICAgICB0eXBlU3BlY2lmaWNSZXNvbHZlTWV0
aG9kID0gdGhpc1twYXJzZWROYW1lLnJlc29sdmVNZXRob2ROYW1lXTsKLQotICAgIGlmICghcGFy
c2VkTmFtZS5uYW1lIHx8ICFwYXJzZWROYW1lLnR5cGUpIHsKLSAgICAgIHRocm93IG5ldyBUeXBl
RXJyb3IoIkludmFsaWQgZnVsbE5hbWU6IGAiICsgZnVsbE5hbWUgKyAiYCwgbXVzdCBiZSBvZiB0
aGUgZm9ybSBgdHlwZTpuYW1lYCAiKTsKLSAgICB9Ci0KLSAgICBpZiAodHlwZVNwZWNpZmljUmVz
b2x2ZU1ldGhvZCkgewotICAgICAgdmFyIHJlc29sdmVkID0gdHlwZVNwZWNpZmljUmVzb2x2ZU1l
dGhvZC5jYWxsKHRoaXMsIHBhcnNlZE5hbWUpOwotICAgICAgaWYgKHJlc29sdmVkKSB7IHJldHVy
biByZXNvbHZlZDsgfQotICAgIH0KLSAgICByZXR1cm4gdGhpcy5yZXNvbHZlT3RoZXIocGFyc2Vk
TmFtZSk7Ci0gIH0sCi0gIC8qKgotICAgIENvbnZlcnQgdGhlIHN0cmluZyBuYW1lIG9mIHRoZSBm
b3JtICJ0eXBlOm5hbWUiIHRvCi0gICAgYSBKYXZhc2NyaXB0IG9iamVjdCB3aXRoIHRoZSBwYXJz
ZWQgYXNwZWN0cyBvZiB0aGUgbmFtZQotICAgIGJyb2tlbiBvdXQuCi0KLSAgICBAcHJvdGVjdGVk
Ci0gICAgQHBhcmFtIHtTdHJpbmd9IGZ1bGxOYW1lIHRoZSBsb29rdXAgc3RyaW5nCi0gICAgQG1l
dGhvZCBwYXJzZU5hbWUKLSAgKi8KLSAgcGFyc2VOYW1lOiBmdW5jdGlvbihmdWxsTmFtZSkgewot
ICAgIHZhciBuYW1lUGFydHMgPSBmdWxsTmFtZS5zcGxpdCgiOiIpLAotICAgICAgICB0eXBlID0g
bmFtZVBhcnRzWzBdLCBmdWxsTmFtZVdpdGhvdXRUeXBlID0gbmFtZVBhcnRzWzFdLAotICAgICAg
ICBuYW1lID0gZnVsbE5hbWVXaXRob3V0VHlwZSwKLSAgICAgICAgbmFtZXNwYWNlID0gZ2V0KHRo
aXMsICduYW1lc3BhY2UnKSwKLSAgICAgICAgcm9vdCA9IG5hbWVzcGFjZTsKLQotICAgIGlmICh0
eXBlICE9PSAndGVtcGxhdGUnICYmIG5hbWUuaW5kZXhPZignLycpICE9PSAtMSkgewotICAgICAg
dmFyIHBhcnRzID0gbmFtZS5zcGxpdCgnLycpOwotICAgICAgbmFtZSA9IHBhcnRzW3BhcnRzLmxl
bmd0aCAtIDFdOwotICAgICAgdmFyIG5hbWVzcGFjZU5hbWUgPSBjYXBpdGFsaXplKHBhcnRzLnNs
aWNlKDAsIC0xKS5qb2luKCcuJykpOwotICAgICAgcm9vdCA9IEVtYmVyLk5hbWVzcGFjZS5ieU5h
bWUobmFtZXNwYWNlTmFtZSk7Ci0KLSAgICAgIEVtYmVyLmFzc2VydCgnWW91IGFyZSBsb29raW5n
IGZvciBhICcgKyBuYW1lICsgJyAnICsgdHlwZSArICcgaW4gdGhlICcgKyBuYW1lc3BhY2VOYW1l
ICsgJyBuYW1lc3BhY2UsIGJ1dCB0aGUgbmFtZXNwYWNlIGNvdWxkIG5vdCBiZSBmb3VuZCcsIHJv
b3QpOwotICAgIH0KLQotICAgIHJldHVybiB7Ci0gICAgICBmdWxsTmFtZTogZnVsbE5hbWUsCi0g
ICAgICB0eXBlOiB0eXBlLAotICAgICAgZnVsbE5hbWVXaXRob3V0VHlwZTogZnVsbE5hbWVXaXRo
b3V0VHlwZSwKLSAgICAgIG5hbWU6IG5hbWUsCi0gICAgICByb290OiByb290LAotICAgICAgcmVz
b2x2ZU1ldGhvZE5hbWU6ICJyZXNvbHZlIiArIGNsYXNzaWZ5KHR5cGUpCi0gICAgfTsKLSAgfSwK
LSAgLyoqCi0gICAgTG9vayB1cCB0aGUgdGVtcGxhdGUgaW4gRW1iZXIuVEVNUExBVEVTCi0KLSAg
ICBAcHJvdGVjdGVkCi0gICAgQHBhcmFtIHtPYmplY3R9IHBhcnNlZE5hbWUgYSBwYXJzZU5hbWUg
b2JqZWN0IHdpdGggdGhlIHBhcnNlZAotICAgICAgZnVsbE5hbWUgbG9va3VwIHN0cmluZwotICAg
IEBtZXRob2QgcmVzb2x2ZVRlbXBsYXRlCi0gICovCi0gIHJlc29sdmVUZW1wbGF0ZTogZnVuY3Rp
b24ocGFyc2VkTmFtZSkgewotICAgIHZhciB0ZW1wbGF0ZU5hbWUgPSBwYXJzZWROYW1lLmZ1bGxO
YW1lV2l0aG91dFR5cGUucmVwbGFjZSgvXC4vZywgJy8nKTsKLQotICAgIGlmIChFbWJlci5URU1Q
TEFURVNbdGVtcGxhdGVOYW1lXSkgewotICAgICAgcmV0dXJuIEVtYmVyLlRFTVBMQVRFU1t0ZW1w
bGF0ZU5hbWVdOwotICAgIH0KLQotICAgIHRlbXBsYXRlTmFtZSA9IGRlY2FtZWxpemUodGVtcGxh
dGVOYW1lKTsKLSAgICBpZiAoRW1iZXIuVEVNUExBVEVTW3RlbXBsYXRlTmFtZV0pIHsKLSAgICAg
IHJldHVybiBFbWJlci5URU1QTEFURVNbdGVtcGxhdGVOYW1lXTsKLSAgICB9Ci0gIH0sCi0gIC8q
KgotICAgIEdpdmVuIGEgcGFyc2VOYW1lIG9iamVjdCAob3V0cHV0IGZyb20gYHBhcnNlTmFtZWAp
LCBhcHBseQotICAgIHRoZSBjb252ZW50aW9ucyBleHBlY3RlZCBieSBgRW1iZXIuUm91dGVyYAot
Ci0gICAgQHByb3RlY3RlZAotICAgIEBwYXJhbSB7T2JqZWN0fSBwYXJzZWROYW1lIGEgcGFyc2VO
YW1lIG9iamVjdCB3aXRoIHRoZSBwYXJzZWQKLSAgICAgIGZ1bGxOYW1lIGxvb2t1cCBzdHJpbmcK
LSAgICBAbWV0aG9kIHVzZVJvdXRlck5hbWluZwotICAqLwotICB1c2VSb3V0ZXJOYW1pbmc6IGZ1
bmN0aW9uKHBhcnNlZE5hbWUpIHsKLSAgICBwYXJzZWROYW1lLm5hbWUgPSBwYXJzZWROYW1lLm5h
bWUucmVwbGFjZSgvXC4vZywgJ18nKTsKLSAgICBpZiAocGFyc2VkTmFtZS5uYW1lID09PSAnYmFz
aWMnKSB7Ci0gICAgICBwYXJzZWROYW1lLm5hbWUgPSAnJzsKLSAgICB9Ci0gIH0sCi0gIC8qKgot
ICAgIExvb2t1cCB0aGUgY29udHJvbGxlciB1c2luZyBgcmVzb2x2ZU90aGVyYAotCi0gICAgQHBy
b3RlY3RlZAotICAgIEBwYXJhbSB7T2JqZWN0fSBwYXJzZWROYW1lIGEgcGFyc2VOYW1lIG9iamVj
dCB3aXRoIHRoZSBwYXJzZWQKLSAgICAgIGZ1bGxOYW1lIGxvb2t1cCBzdHJpbmcKLSAgICBAbWV0
aG9kIHJlc29sdmVDb250cm9sbGVyCi0gICovCi0gIHJlc29sdmVDb250cm9sbGVyOiBmdW5jdGlv
bihwYXJzZWROYW1lKSB7Ci0gICAgdGhpcy51c2VSb3V0ZXJOYW1pbmcocGFyc2VkTmFtZSk7Ci0g
ICAgcmV0dXJuIHRoaXMucmVzb2x2ZU90aGVyKHBhcnNlZE5hbWUpOwotICB9LAotICAvKioKLSAg
ICBMb29rdXAgdGhlIHJvdXRlIHVzaW5nIGByZXNvbHZlT3RoZXJgCi0KLSAgICBAcHJvdGVjdGVk
Ci0gICAgQHBhcmFtIHtPYmplY3R9IHBhcnNlZE5hbWUgYSBwYXJzZU5hbWUgb2JqZWN0IHdpdGgg
dGhlIHBhcnNlZAotICAgICAgZnVsbE5hbWUgbG9va3VwIHN0cmluZwotICAgIEBtZXRob2QgcmVz
b2x2ZVJvdXRlCi0gICovCi0gIHJlc29sdmVSb3V0ZTogZnVuY3Rpb24ocGFyc2VkTmFtZSkgewot
ICAgIHRoaXMudXNlUm91dGVyTmFtaW5nKHBhcnNlZE5hbWUpOwotICAgIHJldHVybiB0aGlzLnJl
c29sdmVPdGhlcihwYXJzZWROYW1lKTsKLSAgfSwKLSAgLyoqCi0gICAgTG9va3VwIHRoZSB2aWV3
IHVzaW5nIGByZXNvbHZlT3RoZXJgCi0KLSAgICBAcHJvdGVjdGVkCi0gICAgQHBhcmFtIHtPYmpl
Y3R9IHBhcnNlZE5hbWUgYSBwYXJzZU5hbWUgb2JqZWN0IHdpdGggdGhlIHBhcnNlZAotICAgICAg
ZnVsbE5hbWUgbG9va3VwIHN0cmluZwotICAgIEBtZXRob2QgcmVzb2x2ZVZpZXcKLSAgKi8KLSAg
cmVzb2x2ZVZpZXc6IGZ1bmN0aW9uKHBhcnNlZE5hbWUpIHsKLSAgICB0aGlzLnVzZVJvdXRlck5h
bWluZyhwYXJzZWROYW1lKTsKLSAgICByZXR1cm4gdGhpcy5yZXNvbHZlT3RoZXIocGFyc2VkTmFt
ZSk7Ci0gIH0sCi0KLSAgcmVzb2x2ZUhlbHBlcjogZnVuY3Rpb24ocGFyc2VkTmFtZSkgewotICAg
IHJldHVybiB0aGlzLnJlc29sdmVPdGhlcihwYXJzZWROYW1lKSB8fCBFbWJlci5IYW5kbGViYXJz
LmhlbHBlcnNbcGFyc2VkTmFtZS5mdWxsTmFtZVdpdGhvdXRUeXBlXTsKLSAgfSwKLQotICAvKioK
LSAgICBMb29rdXAgdGhlIG1vZGVsIG9uIHRoZSBBcHBsaWNhdGlvbiBuYW1lc3BhY2UKLQotICAg
IEBwcm90ZWN0ZWQKLSAgICBAcGFyYW0ge09iamVjdH0gcGFyc2VkTmFtZSBhIHBhcnNlTmFtZSBv
YmplY3Qgd2l0aCB0aGUgcGFyc2VkCi0gICAgICBmdWxsTmFtZSBsb29rdXAgc3RyaW5nCi0gICAg
QG1ldGhvZCByZXNvbHZlTW9kZWwKLSAgKi8KLSAgcmVzb2x2ZU1vZGVsOiBmdW5jdGlvbihwYXJz
ZWROYW1lKSB7Ci0gICAgdmFyIGNsYXNzTmFtZSA9IGNsYXNzaWZ5KHBhcnNlZE5hbWUubmFtZSks
Ci0gICAgICAgIGZhY3RvcnkgPSBnZXQocGFyc2VkTmFtZS5yb290LCBjbGFzc05hbWUpOwotCi0g
ICAgIGlmIChmYWN0b3J5KSB7IHJldHVybiBmYWN0b3J5OyB9Ci0gIH0sCi0gIC8qKgotICAgIExv
b2sgdXAgdGhlIHNwZWNpZmllZCBvYmplY3QgKGZyb20gcGFyc2VkTmFtZSkgb24gdGhlIGFwcHJv
cHJpYXRlCi0gICAgbmFtZXNwYWNlICh1c3VhbGx5IG9uIHRoZSBBcHBsaWNhdGlvbikKLQotICAg
IEBwcm90ZWN0ZWQKLSAgICBAcGFyYW0ge09iamVjdH0gcGFyc2VkTmFtZSBhIHBhcnNlTmFtZSBv
YmplY3Qgd2l0aCB0aGUgcGFyc2VkCi0gICAgICBmdWxsTmFtZSBsb29rdXAgc3RyaW5nCi0gICAg
QG1ldGhvZCByZXNvbHZlT3RoZXIKLSAgKi8KLSAgcmVzb2x2ZU90aGVyOiBmdW5jdGlvbihwYXJz
ZWROYW1lKSB7Ci0gICAgdmFyIGNsYXNzTmFtZSA9IGNsYXNzaWZ5KHBhcnNlZE5hbWUubmFtZSkg
KyBjbGFzc2lmeShwYXJzZWROYW1lLnR5cGUpLAotICAgICAgICBmYWN0b3J5ID0gZ2V0KHBhcnNl
ZE5hbWUucm9vdCwgY2xhc3NOYW1lKTsKLSAgICBpZiAoZmFjdG9yeSkgeyByZXR1cm4gZmFjdG9y
eTsgfQotICB9LAotCi0gIC8qKgotICAgIFJldHVybnMgYSBodW1hbi1yZWFkYWJsZSBkZXNjcmlw
dGlvbiBmb3IgYSBmdWxsTmFtZS4gVXNlZCBieSB0aGUKLSAgICBBcHBsaWNhdGlvbiBuYW1lc3Bh
Y2UgaW4gYXNzZXJ0aW9ucyB0byBkZXNjcmliZSB0aGUKLSAgICBwcmVjaXNlIG5hbWUgb2YgdGhl
IGNsYXNzIHRoYXQgRW1iZXIgaXMgbG9va2luZyBmb3IsIHJhdGhlciB0aGFuCi0gICAgY29udGFp
bmVyIGtleXMuCi0KLSAgICBAcHJvdGVjdGVkCi0gICAgQHBhcmFtIHtTdHJpbmd9IGZ1bGxOYW1l
IHRoZSBsb29rdXAgc3RyaW5nCi0gICAgQG1ldGhvZCBsb29rdXBEZXNjcmlwdGlvbgotICAqLwot
ICBsb29rdXBEZXNjcmlwdGlvbjogZnVuY3Rpb24oZnVsbE5hbWUpIHsKLSAgICB2YXIgcGFyc2Vk
TmFtZSA9IHRoaXMucGFyc2VOYW1lKGZ1bGxOYW1lKTsKLQotICAgIGlmIChwYXJzZWROYW1lLnR5
cGUgPT09ICd0ZW1wbGF0ZScpIHsKLSAgICAgIHJldHVybiAidGVtcGxhdGUgYXQgIiArIHBhcnNl
ZE5hbWUuZnVsbE5hbWVXaXRob3V0VHlwZS5yZXBsYWNlKC9cLi9nLCAnLycpOwotICAgIH0KLQot
ICAgIHZhciBkZXNjcmlwdGlvbiA9IHBhcnNlZE5hbWUucm9vdCArICIuIiArIGNsYXNzaWZ5KHBh
cnNlZE5hbWUubmFtZSk7Ci0gICAgaWYgKHBhcnNlZE5hbWUudHlwZSAhPT0gJ21vZGVsJykgeyBk
ZXNjcmlwdGlvbiArPSBjbGFzc2lmeShwYXJzZWROYW1lLnR5cGUpOyB9Ci0KLSAgICByZXR1cm4g
ZGVzY3JpcHRpb247Ci0gIH0sCi0KLSAgbWFrZVRvU3RyaW5nOiBmdW5jdGlvbihmYWN0b3J5LCBm
dWxsTmFtZSkgewotICAgIHJldHVybiBmYWN0b3J5LnRvU3RyaW5nKCk7Ci0gIH0KLX0pOwotCi19
KSgpOwotCi0KLQotKGZ1bmN0aW9uKCkgewotLyoqCi1AbW9kdWxlIGVtYmVyCi1Ac3VibW9kdWxl
IGVtYmVyLWFwcGxpY2F0aW9uCi0qLwotCi12YXIgZ2V0ID0gRW1iZXIuZ2V0LCBzZXQgPSBFbWJl
ci5zZXQ7Ci0KLWZ1bmN0aW9uIERlcHJlY2F0ZWRDb250YWluZXIoY29udGFpbmVyKSB7Ci0gIHRo
aXMuX2NvbnRhaW5lciA9IGNvbnRhaW5lcjsKLX0KLQotRGVwcmVjYXRlZENvbnRhaW5lci5kZXBy
ZWNhdGUgPSBmdW5jdGlvbihtZXRob2QpIHsKLSAgcmV0dXJuIGZ1bmN0aW9uKCkgewotICAgIHZh
ciBjb250YWluZXIgPSB0aGlzLl9jb250YWluZXI7Ci0KLSAgICBFbWJlci5kZXByZWNhdGUoJ1Vz
aW5nIHRoZSBkZWZhdWx0Q29udGFpbmVyIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQuIFtkZWZhdWx0
Q29udGFpbmVyIycgKyBtZXRob2QgKyAnXSBzZWU6IGh0dHA6Ly9naXQuaW8vRUtQcG5BJywgZmFs
c2UpOwotICAgIHJldHVybiBjb250YWluZXJbbWV0aG9kXS5hcHBseShjb250YWluZXIsIGFyZ3Vt
ZW50cyk7Ci0gIH07Ci19OwotCi1EZXByZWNhdGVkQ29udGFpbmVyLnByb3RvdHlwZSA9IHsKLSAg
X2NvbnRhaW5lcjogbnVsbCwKLSAgbG9va3VwOiBEZXByZWNhdGVkQ29udGFpbmVyLmRlcHJlY2F0
ZSgnbG9va3VwJyksCi0gIHJlc29sdmU6IERlcHJlY2F0ZWRDb250YWluZXIuZGVwcmVjYXRlKCdy
ZXNvbHZlJyksCi0gIHJlZ2lzdGVyOiBEZXByZWNhdGVkQ29udGFpbmVyLmRlcHJlY2F0ZSgncmVn
aXN0ZXInKQotfTsKLQotLyoqCi0gIEFuIGluc3RhbmNlIG9mIGBFbWJlci5BcHBsaWNhdGlvbmAg
aXMgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciBldmVyeSBFbWJlcgotICBhcHBsaWNhdGlvbi4gSXQg
aGVscHMgdG8gaW5zdGFudGlhdGUsIGluaXRpYWxpemUgYW5kIGNvb3JkaW5hdGUgdGhlIG1hbnkK
LSAgb2JqZWN0cyB0aGF0IG1ha2UgdXAgeW91ciBhcHAuCi0KLSAgRWFjaCBFbWJlciBhcHAgaGFz
IG9uZSBhbmQgb25seSBvbmUgYEVtYmVyLkFwcGxpY2F0aW9uYCBvYmplY3QuIEluIGZhY3QsIHRo
ZQotICB2ZXJ5IGZpcnN0IHRoaW5nIHlvdSBzaG91bGQgZG8gaW4geW91ciBhcHBsaWNhdGlvbiBp
cyBjcmVhdGUgdGhlIGluc3RhbmNlOgotCi0gIGBgYGphdmFzY3JpcHQKLSAgd2luZG93LkFwcCA9
IEVtYmVyLkFwcGxpY2F0aW9uLmNyZWF0ZSgpOwotICBgYGAKLQotICBUeXBpY2FsbHksIHRoZSBh
cHBsaWNhdGlvbiBvYmplY3QgaXMgdGhlIG9ubHkgZ2xvYmFsIHZhcmlhYmxlLiBBbGwgb3RoZXIK
LSAgY2xhc3NlcyBpbiB5b3VyIGFwcCBzaG91bGQgYmUgcHJvcGVydGllcyBvbiB0aGUgYEVtYmVy
LkFwcGxpY2F0aW9uYCBpbnN0YW5jZSwKLSAgd2hpY2ggaGlnaGxpZ2h0cyBpdHMgZmlyc3Qgcm9s
ZTogYSBnbG9iYWwgbmFtZXNwYWNlLgotCi0gIEZvciBleGFtcGxlLCBpZiB5b3UgZGVmaW5lIGEg
dmlldyBjbGFzcywgaXQgbWlnaHQgbG9vayBsaWtlIHRoaXM6Ci0KLSAgYGBgamF2YXNjcmlwdAot
ICBBcHAuTXlWaWV3ID0gRW1iZXIuVmlldy5leHRlbmQoKTsKLSAgYGBgCi0KLSAgQnkgZGVmYXVs
dCwgY2FsbGluZyBgRW1iZXIuQXBwbGljYXRpb24uY3JlYXRlKClgIHdpbGwgYXV0b21hdGljYWxs
eSBpbml0aWFsaXplCi0gIHlvdXIgYXBwbGljYXRpb24gYnkgY2FsbGluZyB0aGUgYEVtYmVyLkFw
cGxpY2F0aW9uLmluaXRpYWxpemUoKWAgbWV0aG9kLiBJZgotICB5b3UgbmVlZCB0byBkZWxheSBp
bml0aWFsaXphdGlvbiwgeW91IGNhbiBjYWxsIHlvdXIgYXBwJ3MgYGRlZmVyUmVhZGluZXNzKClg
Ci0gIG1ldGhvZC4gV2hlbiB5b3UgYXJlIHJlYWR5IGZvciB5b3VyIGFwcCB0byBiZSBpbml0aWFs
aXplZCwgY2FsbCBpdHMKLSAgYGFkdmFuY2VSZWFkaW5lc3MoKWAgbWV0aG9kLgotCi0gIFlvdSBj
YW4gZGVmaW5lIGEgYHJlYWR5YCBtZXRob2Qgb24gdGhlIGBFbWJlci5BcHBsaWNhdGlvbmAgaW5z
dGFuY2UsIHdoaWNoCi0gIHdpbGwgYmUgcnVuIGJ5IEVtYmVyIHdoZW4gdGhlIGFwcGxpY2F0aW9u
IGlzIGluaXRpYWxpemVkLgotCi0gIEJlY2F1c2UgYEVtYmVyLkFwcGxpY2F0aW9uYCBpbmhlcml0
cyBmcm9tIGBFbWJlci5OYW1lc3BhY2VgLCBhbnkgY2xhc3NlcwotICB5b3UgY3JlYXRlIHdpbGwg
aGF2ZSB1c2VmdWwgc3RyaW5nIHJlcHJlc2VudGF0aW9ucyB3aGVuIGNhbGxpbmcgYHRvU3RyaW5n
KClgLgotICBTZWUgdGhlIGBFbWJlci5OYW1lc3BhY2VgIGRvY3VtZW50YXRpb24gZm9yIG1vcmUg
aW5mb3JtYXRpb24uCi0KLSAgV2hpbGUgeW91IGNhbiB0aGluayBvZiB5b3VyIGBFbWJlci5BcHBs
aWNhdGlvbmAgYXMgYSBjb250YWluZXIgdGhhdCBob2xkcyB0aGUKLSAgb3RoZXIgY2xhc3NlcyBp
biB5b3VyIGFwcGxpY2F0aW9uLCB0aGVyZSBhcmUgc2V2ZXJhbCBvdGhlciByZXNwb25zaWJpbGl0
aWVzCi0gIGdvaW5nIG9uIHVuZGVyLXRoZS1ob29kIHRoYXQgeW91IG1heSB3YW50IHRvIHVuZGVy
c3RhbmQuCi0KLSAgIyMjIEV2ZW50IERlbGVnYXRpb24KLQotICBFbWJlciB1c2VzIGEgdGVjaG5p
cXVlIGNhbGxlZCBfZXZlbnQgZGVsZWdhdGlvbl8uIFRoaXMgYWxsb3dzIHRoZSBmcmFtZXdvcmsK
LSAgdG8gc2V0IHVwIGEgZ2xvYmFsLCBzaGFyZWQgZXZlbnQgbGlzdGVuZXIgaW5zdGVhZCBvZiBy
ZXF1aXJpbmcgZWFjaCB2aWV3IHRvCi0gIGRvIGl0IG1hbnVhbGx5LiBGb3IgZXhhbXBsZSwgaW5z
dGVhZCBvZiBlYWNoIHZpZXcgcmVnaXN0ZXJpbmcgaXRzIG93bgotICBgbW91c2Vkb3duYCBsaXN0
ZW5lciBvbiBpdHMgYXNzb2NpYXRlZCBlbGVtZW50LCBFbWJlciBzZXRzIHVwIGEgYG1vdXNlZG93
bmAKLSAgbGlzdGVuZXIgb24gdGhlIGBib2R5YC4KLQotICBJZiBhIGBtb3VzZWRvd25gIGV2ZW50
IG9jY3VycywgRW1iZXIgd2lsbCBsb29rIGF0IHRoZSB0YXJnZXQgb2YgdGhlIGV2ZW50IGFuZAot
ICBzdGFydCB3YWxraW5nIHVwIHRoZSBET00gbm9kZSB0cmVlLCBmaW5kaW5nIGNvcnJlc3BvbmRp
bmcgdmlld3MgYW5kIGludm9raW5nCi0gIHRoZWlyIGBtb3VzZURvd25gIG1ldGhvZCBhcyBpdCBn
b2VzLgotCi0gIGBFbWJlci5BcHBsaWNhdGlvbmAgaGFzIGEgbnVtYmVyIG9mIGRlZmF1bHQgZXZl
bnRzIHRoYXQgaXQgbGlzdGVucyBmb3IsIGFzCi0gIHdlbGwgYXMgYSBtYXBwaW5nIGZyb20gbG93
ZXJjYXNlIGV2ZW50cyB0byBjYW1lbC1jYXNlZCB2aWV3IG1ldGhvZCBuYW1lcy4gRm9yCi0gIGV4
YW1wbGUsIHRoZSBga2V5cHJlc3NgIGV2ZW50IGNhdXNlcyB0aGUgYGtleVByZXNzYCBtZXRob2Qg
b24gdGhlIHZpZXcgdG8gYmUKLSAgY2FsbGVkLCB0aGUgYGRibGNsaWNrYCBldmVudCBjYXVzZXMg
YGRvdWJsZUNsaWNrYCB0byBiZSBjYWxsZWQsIGFuZCBzbyBvbi4KLQotICBJZiB0aGVyZSBpcyBh
IGJ1YmJsaW5nIGJyb3dzZXIgZXZlbnQgdGhhdCBFbWJlciBkb2VzIG5vdCBsaXN0ZW4gZm9yIGJ5
Ci0gIGRlZmF1bHQsIHlvdSBjYW4gc3BlY2lmeSBjdXN0b20gZXZlbnRzIGFuZCB0aGVpciBjb3Jy
ZXNwb25kaW5nIHZpZXcgbWV0aG9kCi0gIG5hbWVzIGJ5IHNldHRpbmcgdGhlIGFwcGxpY2F0aW9u
J3MgYGN1c3RvbUV2ZW50c2AgcHJvcGVydHk6Ci0KLSAgYGBgamF2YXNjcmlwdAotICBBcHAgPSBF
bWJlci5BcHBsaWNhdGlvbi5jcmVhdGUoewotICAgIGN1c3RvbUV2ZW50czogewotICAgICAgLy8g
YWRkIHN1cHBvcnQgZm9yIHRoZSBwYXN0ZSBldmVudAotICAgICAgcGFzdGU6ICJwYXN0ZSIKLSAg
ICB9Ci0gIH0pOwotICBgYGAKLQotICBCeSBkZWZhdWx0LCB0aGUgYXBwbGljYXRpb24gc2V0cyB1
cCB0aGVzZSBldmVudCBsaXN0ZW5lcnMgb24gdGhlIGRvY3VtZW50Ci0gIGJvZHkuIEhvd2V2ZXIs
IGluIGNhc2VzIHdoZXJlIHlvdSBhcmUgZW1iZWRkaW5nIGFuIEVtYmVyIGFwcGxpY2F0aW9uIGlu
c2lkZQotICBhbiBleGlzdGluZyBwYWdlLCB5b3UgbWF5IHdhbnQgaXQgdG8gc2V0IHVwIHRoZSBs
aXN0ZW5lcnMgb24gYW4gZWxlbWVudAotICBpbnNpZGUgdGhlIGJvZHkuCi0KLSAgRm9yIGV4YW1w
bGUsIGlmIG9ubHkgZXZlbnRzIGluc2lkZSBhIERPTSBlbGVtZW50IHdpdGggdGhlIElEIG9mIGBl
bWJlci1hcHBgCi0gIHNob3VsZCBiZSBkZWxlZ2F0ZWQsIHNldCB5b3VyIGFwcGxpY2F0aW9uJ3Mg
YHJvb3RFbGVtZW50YCBwcm9wZXJ0eToKLQotICBgYGBqYXZhc2NyaXB0Ci0gIHdpbmRvdy5BcHAg
PSBFbWJlci5BcHBsaWNhdGlvbi5jcmVhdGUoewotICAgIHJvb3RFbGVtZW50OiAnI2VtYmVyLWFw
cCcKLSAgfSk7Ci0gIGBgYAotCi0gIFRoZSBgcm9vdEVsZW1lbnRgIGNhbiBiZSBlaXRoZXIgYSBE
T00gZWxlbWVudCBvciBhIGpRdWVyeS1jb21wYXRpYmxlIHNlbGVjdG9yCi0gIHN0cmluZy4gTm90
ZSB0aGF0ICp2aWV3cyBhcHBlbmRlZCB0byB0aGUgRE9NIG91dHNpZGUgdGhlIHJvb3QgZWxlbWVu
dCB3aWxsCi0gIG5vdCByZWNlaXZlIGV2ZW50cy4qIElmIHlvdSBzcGVjaWZ5IGEgY3VzdG9tIHJv
b3QgZWxlbWVudCwgbWFrZSBzdXJlIHlvdSBvbmx5Ci0gIGFwcGVuZCB2aWV3cyBpbnNpZGUgaXQh
Ci0KLSAgVG8gbGVhcm4gbW9yZSBhYm91dCB0aGUgYWR2YW50YWdlcyBvZiBldmVudCBkZWxlZ2F0
aW9uIGFuZCB0aGUgRW1iZXIgdmlldwotICBsYXllciwgYW5kIGEgbGlzdCBvZiB0aGUgZXZlbnQg
bGlzdGVuZXJzIHRoYXQgYXJlIHNldHVwIGJ5IGRlZmF1bHQsIHZpc2l0IHRoZQotICBbRW1iZXIg
VmlldyBMYXllciBndWlkZV0oaHR0cDovL2VtYmVyanMuY29tL2d1aWRlcy91bmRlcnN0YW5kaW5n
LWVtYmVyL3RoZS12aWV3LWxheWVyLyN0b2NfZXZlbnQtZGVsZWdhdGlvbikuCi0KLSAgIyMjIElu
aXRpYWxpemVycwotCi0gIExpYnJhcmllcyBvbiB0b3Agb2YgRW1iZXIgY2FuIHJlZ2lzdGVyIGFk
ZGl0aW9uYWwgaW5pdGlhbGl6ZXJzLCBsaWtlIHNvOgotCi0gIGBgYGphdmFzY3JpcHQKLSAgRW1i
ZXIuQXBwbGljYXRpb24uaW5pdGlhbGl6ZXIoewotICAgIG5hbWU6ICJzdG9yZSIsCi0KLSAgICBp
bml0aWFsaXplOiBmdW5jdGlvbihjb250YWluZXIsIGFwcGxpY2F0aW9uKSB7Ci0gICAgICBjb250
YWluZXIucmVnaXN0ZXIoJ3N0b3JlOm1haW4nLCBhcHBsaWNhdGlvbi5TdG9yZSk7Ci0gICAgfQot
ICB9KTsKLSAgYGBgCi0KLSAgIyMjIFJvdXRpbmcKLQotICBJbiBhZGRpdGlvbiB0byBjcmVhdGlu
ZyB5b3VyIGFwcGxpY2F0aW9uJ3Mgcm91dGVyLCBgRW1iZXIuQXBwbGljYXRpb25gIGlzCi0gIGFs
c28gcmVzcG9uc2libGUgZm9yIHRlbGxpbmcgdGhlIHJvdXRlciB3aGVuIHRvIHN0YXJ0IHJvdXRp
bmcuIFRyYW5zaXRpb25zCi0gIGJldHdlZW4gcm91dGVzIGNhbiBiZSBsb2dnZWQgd2l0aCB0aGUg
YExPR19UUkFOU0lUSU9OU2AgZmxhZywgYW5kIG1vcmUKLSAgZGV0YWlsZWQgaW50cmEtdHJhbnNp
dGlvbiBsb2dnaW5nIGNhbiBiZSBsb2dnZWQgd2l0aAotICB0aGUgYExPR19UUkFOU0lUSU9OU19J
TlRFUk5BTGAgZmxhZzoKLQotICBgYGBqYXZhc2NyaXB0Ci0gIHdpbmRvdy5BcHAgPSBFbWJlci5B
cHBsaWNhdGlvbi5jcmVhdGUoewotICAgIExPR19UUkFOU0lUSU9OUzogdHJ1ZSwgLy8gYmFzaWMg
bG9nZ2luZyBvZiBzdWNjZXNzZnVsIHRyYW5zaXRpb25zCi0gICAgTE9HX1RSQU5TSVRJT05TX0lO
VEVSTkFMOiB0cnVlIC8vIGRldGFpbGVkIGxvZ2dpbmcgb2YgYWxsIHJvdXRpbmcgc3RlcHMKLSAg
fSk7Ci0gIGBgYAotCi0gIEJ5IGRlZmF1bHQsIHRoZSByb3V0ZXIgd2lsbCBiZWdpbiB0cnlpbmcg
dG8gdHJhbnNsYXRlIHRoZSBjdXJyZW50IFVSTCBpbnRvCi0gIGFwcGxpY2F0aW9uIHN0YXRlIG9u
Y2UgdGhlIGJyb3dzZXIgZW1pdHMgdGhlIGBET01Db250ZW50UmVhZHlgIGV2ZW50LiBJZiB5b3UK
LSAgbmVlZCB0byBkZWZlciByb3V0aW5nLCB5b3UgY2FuIGNhbGwgdGhlIGFwcGxpY2F0aW9uJ3Mg
YGRlZmVyUmVhZGluZXNzKClgCi0gIG1ldGhvZC4gT25jZSByb3V0aW5nIGNhbiBiZWdpbiwgY2Fs
bCB0aGUgYGFkdmFuY2VSZWFkaW5lc3MoKWAgbWV0aG9kLgotCi0gIElmIHRoZXJlIGlzIGFueSBz
ZXR1cCByZXF1aXJlZCBiZWZvcmUgcm91dGluZyBiZWdpbnMsIHlvdSBjYW4gaW1wbGVtZW50IGEK
LSAgYHJlYWR5KClgIG1ldGhvZCBvbiB5b3VyIGFwcCB0aGF0IHdpbGwgYmUgaW52b2tlZCBpbW1l
ZGlhdGVseSBiZWZvcmUgcm91dGluZwotICBiZWdpbnMuCi0gIGBgYAotCi0gIEBjbGFzcyBBcHBs
aWNhdGlvbgotICBAbmFtZXNwYWNlIEVtYmVyCi0gIEBleHRlbmRzIEVtYmVyLk5hbWVzcGFjZQot
Ki8KLQotdmFyIEFwcGxpY2F0aW9uID0gRW1iZXIuQXBwbGljYXRpb24gPSBFbWJlci5OYW1lc3Bh
Y2UuZXh0ZW5kKEVtYmVyLkRlZmVycmVkTWl4aW4sIHsKLQotICAvKioKLSAgICBUaGUgcm9vdCBE
T00gZWxlbWVudCBvZiB0aGUgQXBwbGljYXRpb24uIFRoaXMgY2FuIGJlIHNwZWNpZmllZCBhcyBh
bgotICAgIGVsZW1lbnQgb3IgYQotICAgIFtqUXVlcnktY29tcGF0aWJsZSBzZWxlY3RvciBzdHJp
bmddKGh0dHA6Ly9hcGkuanF1ZXJ5LmNvbS9jYXRlZ29yeS9zZWxlY3RvcnMvKS4KLQotICAgIFRo
aXMgaXMgdGhlIGVsZW1lbnQgdGhhdCB3aWxsIGJlIHBhc3NlZCB0byB0aGUgQXBwbGljYXRpb24n
cywKLSAgICBgZXZlbnREaXNwYXRjaGVyYCwgd2hpY2ggc2V0cyB1cCB0aGUgbGlzdGVuZXJzIGZv
ciBldmVudCBkZWxlZ2F0aW9uLiBFdmVyeQotICAgIHZpZXcgaW4geW91ciBhcHBsaWNhdGlvbiBz
aG91bGQgYmUgYSBjaGlsZCBvZiB0aGUgZWxlbWVudCB5b3Ugc3BlY2lmeSBoZXJlLgotCi0gICAg
QHByb3BlcnR5IHJvb3RFbGVtZW50Ci0gICAgQHR5cGUgRE9NRWxlbWVudAotICAgIEBkZWZhdWx0
ICdib2R5JwotICAqLwotICByb290RWxlbWVudDogJ2JvZHknLAotCi0gIC8qKgotICAgIFRoZSBg
RW1iZXIuRXZlbnREaXNwYXRjaGVyYCByZXNwb25zaWJsZSBmb3IgZGVsZWdhdGluZyBldmVudHMg
dG8gdGhpcwotICAgIGFwcGxpY2F0aW9uJ3Mgdmlld3MuCi0KLSAgICBUaGUgZXZlbnQgZGlzcGF0
Y2hlciBpcyBjcmVhdGVkIGJ5IHRoZSBhcHBsaWNhdGlvbiBhdCBpbml0aWFsaXphdGlvbiB0aW1l
Ci0gICAgYW5kIHNldHMgdXAgZXZlbnQgbGlzdGVuZXJzIG9uIHRoZSBET00gZWxlbWVudCBkZXNj
cmliZWQgYnkgdGhlCi0gICAgYXBwbGljYXRpb24ncyBgcm9vdEVsZW1lbnRgIHByb3BlcnR5Lgot
Ci0gICAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciBgRW1iZXIuRXZlbnREaXNwYXRjaGVyYCBm
b3IgbW9yZSBpbmZvcm1hdGlvbi4KLQotICAgIEBwcm9wZXJ0eSBldmVudERpc3BhdGNoZXIKLSAg
ICBAdHlwZSBFbWJlci5FdmVudERpc3BhdGNoZXIKLSAgICBAZGVmYXVsdCBudWxsCi0gICovCi0g
IGV2ZW50RGlzcGF0Y2hlcjogbnVsbCwKLQotICAvKioKLSAgICBUaGUgRE9NIGV2ZW50cyBmb3Ig
d2hpY2ggdGhlIGV2ZW50IGRpc3BhdGNoZXIgc2hvdWxkIGxpc3Rlbi4KLQotICAgIEJ5IGRlZmF1
bHQsIHRoZSBhcHBsaWNhdGlvbidzIGBFbWJlci5FdmVudERpc3BhdGNoZXJgIGxpc3RlbnMKLSAg
ICBmb3IgYSBzZXQgb2Ygc3RhbmRhcmQgRE9NIGV2ZW50cywgc3VjaCBhcyBgbW91c2Vkb3duYCBh
bmQKLSAgICBga2V5dXBgLCBhbmQgZGVsZWdhdGVzIHRoZW0gdG8geW91ciBhcHBsaWNhdGlvbidz
IGBFbWJlci5WaWV3YAotICAgIGluc3RhbmNlcy4KLQotICAgIElmIHlvdSB3b3VsZCBsaWtlIGFk
ZGl0aW9uYWwgYnViYmxpbmcgZXZlbnRzIHRvIGJlIGRlbGVnYXRlZCB0byB5b3VyCi0gICAgdmll
d3MsIHNldCB5b3VyIGBFbWJlci5BcHBsaWNhdGlvbmAncyBgY3VzdG9tRXZlbnRzYCBwcm9wZXJ0
eQotICAgIHRvIGEgaGFzaCBjb250YWluaW5nIHRoZSBET00gZXZlbnQgbmFtZSBhcyB0aGUga2V5
IGFuZCB0aGUKLSAgICBjb3JyZXNwb25kaW5nIHZpZXcgbWV0aG9kIG5hbWUgYXMgdGhlIHZhbHVl
LiBGb3IgZXhhbXBsZToKLQotICAgIGBgYGphdmFzY3JpcHQKLSAgICBBcHAgPSBFbWJlci5BcHBs
aWNhdGlvbi5jcmVhdGUoewotICAgICAgY3VzdG9tRXZlbnRzOiB7Ci0gICAgICAgIC8vIGFkZCBz
dXBwb3J0IGZvciB0aGUgcGFzdGUgZXZlbnQKLSAgICAgICAgcGFzdGU6ICJwYXN0ZSIKLSAgICAg
IH0KLSAgICB9KTsKLSAgICBgYGAKLQotICAgIEBwcm9wZXJ0eSBjdXN0b21FdmVudHMKLSAgICBA
dHlwZSBPYmplY3QKLSAgICBAZGVmYXVsdCBudWxsCi0gICovCi0gIGN1c3RvbUV2ZW50czogbnVs
bCwKLQotICAvLyBTdGFydCBvZmYgdGhlIG51bWJlciBvZiBkZWZlcnJhbHMgYXQgMS4gVGhpcyB3
aWxsIGJlCi0gIC8vIGRlY3JlbWVudGVkIGJ5IHRoZSBBcHBsaWNhdGlvbidzIG93biBgaW5pdGlh
bGl6ZWAgbWV0aG9kLgotICBfcmVhZGluZXNzRGVmZXJyYWxzOiAxLAotCi0gIGluaXQ6IGZ1bmN0
aW9uKCkgewotICAgIGlmICghdGhpcy4kKSB7IHRoaXMuJCA9IEVtYmVyLiQ7IH0KLSAgICB0aGlz
Ll9fY29udGFpbmVyX18gPSB0aGlzLmJ1aWxkQ29udGFpbmVyKCk7Ci0KLSAgICB0aGlzLlJvdXRl
ciA9IHRoaXMuZGVmYXVsdFJvdXRlcigpOwotCi0gICAgdGhpcy5fc3VwZXIoKTsKLQotICAgIHRo
aXMuc2NoZWR1bGVJbml0aWFsaXplKCk7Ci0KLSAgICBFbWJlci5saWJyYXJpZXMucmVnaXN0ZXJD
b3JlTGlicmFyeSgnSGFuZGxlYmFycycsIEVtYmVyLkhhbmRsZWJhcnMuVkVSU0lPTik7Ci0gICAg
RW1iZXIubGlicmFyaWVzLnJlZ2lzdGVyQ29yZUxpYnJhcnkoJ2pRdWVyeScsIEVtYmVyLiQoKS5q
cXVlcnkpOwotCi0gICAgaWYgKCBFbWJlci5MT0dfVkVSU0lPTiApIHsKLSAgICAgIEVtYmVyLkxP
R19WRVJTSU9OID0gZmFsc2U7IC8vIHdlIG9ubHkgbmVlZCB0byBzZWUgdGhpcyBvbmNlIHBlciBB
cHBsaWNhdGlvbiNpbml0Ci0gICAgICB2YXIgbWF4TmFtZUxlbmd0aCA9IE1hdGgubWF4LmFwcGx5
KHRoaXMsIEVtYmVyLkEoRW1iZXIubGlicmFyaWVzKS5tYXBCeSgibmFtZS5sZW5ndGgiKSk7Ci0K
LSAgICAgIEVtYmVyLmRlYnVnKCctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJyk7Ci0g
ICAgICBFbWJlci5saWJyYXJpZXMuZWFjaChmdW5jdGlvbihuYW1lLCB2ZXJzaW9uKSB7Ci0gICAg
ICAgIHZhciBzcGFjZXMgPSBuZXcgQXJyYXkobWF4TmFtZUxlbmd0aCAtIG5hbWUubGVuZ3RoICsg
MSkuam9pbigiICIpOwotICAgICAgICBFbWJlci5kZWJ1ZyhbbmFtZSwgc3BhY2VzLCAnIDogJywg
dmVyc2lvbl0uam9pbigiIikpOwotICAgICAgfSk7Ci0gICAgICBFbWJlci5kZWJ1ZygnLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLScpOwotICAgIH0KLSAgfSwKLQotICAvKioKLSAgICBC
dWlsZCB0aGUgY29udGFpbmVyIGZvciB0aGUgY3VycmVudCBhcHBsaWNhdGlvbi4KLQotICAgIEFs
c28gcmVnaXN0ZXIgYSBkZWZhdWx0IGFwcGxpY2F0aW9uIHZpZXcgaW4gY2FzZSB0aGUgYXBwbGlj
YXRpb24KLSAgICBpdHNlbGYgZG9lcyBub3QuCi0KLSAgICBAcHJpdmF0ZQotICAgIEBtZXRob2Qg
YnVpbGRDb250YWluZXIKLSAgICBAcmV0dXJuIHtFbWJlci5Db250YWluZXJ9IHRoZSBjb25maWd1
cmVkIGNvbnRhaW5lcgotICAqLwotICBidWlsZENvbnRhaW5lcjogZnVuY3Rpb24oKSB7Ci0gICAg
dmFyIGNvbnRhaW5lciA9IHRoaXMuX19jb250YWluZXJfXyA9IEFwcGxpY2F0aW9uLmJ1aWxkQ29u
dGFpbmVyKHRoaXMpOwotCi0gICAgcmV0dXJuIGNvbnRhaW5lcjsKLSAgfSwKLQotICAvKioKLSAg
ICBJZiB0aGUgYXBwbGljYXRpb24gaGFzIG5vdCBvcHRlZCBvdXQgb2Ygcm91dGluZyBhbmQgaGFz
IG5vdCBleHBsaWNpdGx5Ci0gICAgZGVmaW5lZCBhIHJvdXRlciwgc3VwcGx5IGEgZGVmYXVsdCBy
b3V0ZXIgZm9yIHRoZSBhcHBsaWNhdGlvbiBhdXRob3IKLSAgICB0byBjb25maWd1cmUuCi0KLSAg
ICBUaGlzIGFsbG93cyBhcHBsaWNhdGlvbiBkZXZlbG9wZXJzIHRvIGRvOgotCi0gICAgYGBgamF2
YXNjcmlwdAotICAgIHZhciBBcHAgPSBFbWJlci5BcHBsaWNhdGlvbi5jcmVhdGUoKTsKLQotICAg
IEFwcC5Sb3V0ZXIubWFwKGZ1bmN0aW9uKCkgewotICAgICAgdGhpcy5yZXNvdXJjZSgncG9zdHMn
KTsKLSAgICB9KTsKLSAgICBgYGAKLQotICAgIEBwcml2YXRlCi0gICAgQG1ldGhvZCBkZWZhdWx0
Um91dGVyCi0gICAgQHJldHVybiB7RW1iZXIuUm91dGVyfSB0aGUgZGVmYXVsdCByb3V0ZXIKLSAg
Ki8KLQotICBkZWZhdWx0Um91dGVyOiBmdW5jdGlvbigpIHsKLSAgICBpZiAodGhpcy5Sb3V0ZXIg
PT09IGZhbHNlKSB7IHJldHVybjsgfQotICAgIHZhciBjb250YWluZXIgPSB0aGlzLl9fY29udGFp
bmVyX187Ci0KLSAgICBpZiAodGhpcy5Sb3V0ZXIpIHsKLSAgICAgIGNvbnRhaW5lci51bnJlZ2lz
dGVyKCdyb3V0ZXI6bWFpbicpOwotICAgICAgY29udGFpbmVyLnJlZ2lzdGVyKCdyb3V0ZXI6bWFp
bicsIHRoaXMuUm91dGVyKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gY29udGFpbmVyLmxvb2t1cEZh
Y3RvcnkoJ3JvdXRlcjptYWluJyk7Ci0gIH0sCi0KLSAgLyoqCi0gICAgQXV0b21hdGljYWxseSBp
bml0aWFsaXplIHRoZSBhcHBsaWNhdGlvbiBvbmNlIHRoZSBET00gaGFzCi0gICAgYmVjb21lIHJl
YWR5LgotCi0gICAgVGhlIGluaXRpYWxpemF0aW9uIGl0c2VsZiBpcyBzY2hlZHVsZWQgb24gdGhl
IGFjdGlvbnMgcXVldWUKLSAgICB3aGljaCBlbnN1cmVzIHRoYXQgYXBwbGljYXRpb24gbG9hZGlu
ZyBmaW5pc2hlcyBiZWZvcmUKLSAgICBib290aW5nLgotCi0gICAgSWYgeW91IGFyZSBhc3luY2hy
b25vdXNseSBsb2FkaW5nIGNvZGUsIHlvdSBzaG91bGQgY2FsbAotICAgIGBkZWZlclJlYWRpbmVz
cygpYCB0byBkZWZlciBib290aW5nLCBhbmQgdGhlbiBjYWxsCi0gICAgYGFkdmFuY2VSZWFkaW5l
c3MoKWAgb25jZSBhbGwgb2YgeW91ciBjb2RlIGhhcyBmaW5pc2hlZAotICAgIGxvYWRpbmcuCi0K
LSAgICBAcHJpdmF0ZQotICAgIEBtZXRob2Qgc2NoZWR1bGVJbml0aWFsaXplCi0gICovCi0gIHNj
aGVkdWxlSW5pdGlhbGl6ZTogZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHNlbGYgPSB0aGlzOwotCi0g
ICAgaWYgKCF0aGlzLiQgfHwgdGhpcy4kLmlzUmVhZHkpIHsKLSAgICAgIEVtYmVyLnJ1bi5zY2hl
ZHVsZSgnYWN0aW9ucycsIHNlbGYsICdfaW5pdGlhbGl6ZScpOwotICAgIH0gZWxzZSB7Ci0gICAg
ICB0aGlzLiQoKS5yZWFkeShmdW5jdGlvbiBydW5Jbml0aWFsaXplKCkgewotICAgICAgICBFbWJl
ci5ydW4oc2VsZiwgJ19pbml0aWFsaXplJyk7Ci0gICAgICB9KTsKLSAgICB9Ci0gIH0sCi0KLSAg
LyoqCi0gICAgVXNlIHRoaXMgdG8gZGVmZXIgcmVhZGluZXNzIHVudGlsIHNvbWUgY29uZGl0aW9u
IGlzIHRydWUuCi0KLSAgICBFeGFtcGxlOgotCi0gICAgYGBgamF2YXNjcmlwdAotICAgIEFwcCA9
IEVtYmVyLkFwcGxpY2F0aW9uLmNyZWF0ZSgpOwotICAgIEFwcC5kZWZlclJlYWRpbmVzcygpOwot
Ci0gICAgalF1ZXJ5LmdldEpTT04oIi9hdXRoLXRva2VuIiwgZnVuY3Rpb24odG9rZW4pIHsKLSAg
ICAgIEFwcC50b2tlbiA9IHRva2VuOwotICAgICAgQXBwLmFkdmFuY2VSZWFkaW5lc3MoKTsKLSAg
ICB9KTsKLSAgICBgYGAKLQotICAgIFRoaXMgYWxsb3dzIHlvdSB0byBwZXJmb3JtIGFzeW5jaHJv
bm91cyBzZXR1cCBsb2dpYyBhbmQgZGVmZXIKLSAgICBib290aW5nIHlvdXIgYXBwbGljYXRpb24g
dW50aWwgdGhlIHNldHVwIGhhcyBmaW5pc2hlZC4KLQotICAgIEhvd2V2ZXIsIGlmIHRoZSBzZXR1
cCByZXF1aXJlcyBhIGxvYWRpbmcgVUksIGl0IG1pZ2h0IGJlIGJldHRlcgotICAgIHRvIHVzZSB0
aGUgcm91dGVyIGZvciB0aGlzIHB1cnBvc2UuCi0KLSAgICBAbWV0aG9kIGRlZmVyUmVhZGluZXNz
Ci0gICovCi0gIGRlZmVyUmVhZGluZXNzOiBmdW5jdGlvbigpIHsKLSAgICBFbWJlci5hc3NlcnQo
IllvdSBtdXN0IGNhbGwgZGVmZXJSZWFkaW5lc3Mgb24gYW4gaW5zdGFuY2Ugb2YgRW1iZXIuQXBw
bGljYXRpb24iLCB0aGlzIGluc3RhbmNlb2YgRW1iZXIuQXBwbGljYXRpb24pOwotICAgIEVtYmVy
LmFzc2VydCgiWW91IGNhbm5vdCBkZWZlciByZWFkaW5lc3Mgc2luY2UgdGhlIGByZWFkeSgpYCBo
b29rIGhhcyBhbHJlYWR5IGJlZW4gY2FsbGVkLiIsIHRoaXMuX3JlYWRpbmVzc0RlZmVycmFscyA+
IDApOwotICAgIHRoaXMuX3JlYWRpbmVzc0RlZmVycmFscysrOwotICB9LAotCi0gIC8qKgotICAg
IENhbGwgYGFkdmFuY2VSZWFkaW5lc3NgIGFmdGVyIGFueSBhc3luY2hyb25vdXMgc2V0dXAgbG9n
aWMgaGFzIGNvbXBsZXRlZC4KLSAgICBFYWNoIGNhbGwgdG8gYGRlZmVyUmVhZGluZXNzYCBtdXN0
IGJlIG1hdGNoZWQgYnkgYSBjYWxsIHRvIGBhZHZhbmNlUmVhZGluZXNzYAotICAgIG9yIHRoZSBh
cHBsaWNhdGlvbiB3aWxsIG5ldmVyIGJlY29tZSByZWFkeSBhbmQgcm91dGluZyB3aWxsIG5vdCBi
ZWdpbi4KLQotICAgIEBtZXRob2QgYWR2YW5jZVJlYWRpbmVzcwotICAgIEBzZWUge0VtYmVyLkFw
cGxpY2F0aW9uI2RlZmVyUmVhZGluZXNzfQotICAqLwotICBhZHZhbmNlUmVhZGluZXNzOiBmdW5j
dGlvbigpIHsKLSAgICBFbWJlci5hc3NlcnQoIllvdSBtdXN0IGNhbGwgYWR2YW5jZVJlYWRpbmVz
cyBvbiBhbiBpbnN0YW5jZSBvZiBFbWJlci5BcHBsaWNhdGlvbiIsIHRoaXMgaW5zdGFuY2VvZiBF
bWJlci5BcHBsaWNhdGlvbik7Ci0gICAgdGhpcy5fcmVhZGluZXNzRGVmZXJyYWxzLS07Ci0KLSAg
ICBpZiAodGhpcy5fcmVhZGluZXNzRGVmZXJyYWxzID09PSAwKSB7Ci0gICAgICBFbWJlci5ydW4u
b25jZSh0aGlzLCB0aGlzLmRpZEJlY29tZVJlYWR5KTsKLSAgICB9Ci0gIH0sCi0KLSAgLyoqCi0g
ICAgcmVnaXN0ZXJzIGEgZmFjdG9yeSBmb3IgbGF0ZXIgaW5qZWN0aW9uCi0KLSAgICBFeGFtcGxl
OgotCi0gICAgYGBgamF2YXNjcmlwdAotICAgIEFwcCA9IEVtYmVyLkFwcGxpY2F0aW9uLmNyZWF0
ZSgpOwotCi0gICAgQXBwLlBlcnNvbiAgPSBFbWJlci5PYmplY3QuZXh0ZW5kKHt9KTsKLSAgICBB
cHAuT3JhbmdlICA9IEVtYmVyLk9iamVjdC5leHRlbmQoe30pOwotICAgIEFwcC5FbWFpbCAgID0g
RW1iZXIuT2JqZWN0LmV4dGVuZCh7fSk7Ci0gICAgQXBwLnNlc3Npb24gPSBFbWJlci5PYmplY3Qu
Y3JlYXRlKHt9KTsKLQotICAgIEFwcC5yZWdpc3RlcignbW9kZWw6dXNlcicsIEFwcC5QZXJzb24s
IHtzaW5nbGV0b246IGZhbHNlIH0pOwotICAgIEFwcC5yZWdpc3RlcignZnJ1aXQ6ZmF2b3JpdGUn
LCBBcHAuT3JhbmdlKTsKLSAgICBBcHAucmVnaXN0ZXIoJ2NvbW11bmljYXRpb246bWFpbicsIEFw
cC5FbWFpbCwge3NpbmdsZXRvbjogZmFsc2V9KTsKLSAgICBBcHAucmVnaXN0ZXIoJ3Nlc3Npb24n
LCBBcHAuc2Vzc2lvbiwge2luc3RhbnRpYXRlOiBmYWxzZX0pOwotICAgIGBgYAotCi0gICAgQG1l
dGhvZCByZWdpc3RlcgotICAgIEBwYXJhbSAgZnVsbE5hbWUge1N0cmluZ30gdHlwZTpuYW1lIChl
LmcuLCAnbW9kZWw6dXNlcicpCi0gICAgQHBhcmFtICBmYWN0b3J5IHtGdW5jdGlvbn0gKGUuZy4s
IEFwcC5QZXJzb24pCi0gICAgQHBhcmFtICBvcHRpb25zIHtTdHJpbmd9IChvcHRpb25hbCkKLSAg
KiovCi0gIHJlZ2lzdGVyOiBmdW5jdGlvbigpIHsKLSAgICB2YXIgY29udGFpbmVyID0gdGhpcy5f
X2NvbnRhaW5lcl9fOwotICAgIGNvbnRhaW5lci5yZWdpc3Rlci5hcHBseShjb250YWluZXIsIGFy
Z3VtZW50cyk7Ci0gIH0sCi0gIC8qKgotICAgIGRlZmluZXMgYW4gaW5qZWN0aW9uIG9yIHR5cGVJ
bmplY3Rpb24KLQotICAgIEV4YW1wbGU6Ci0KLSAgICBgYGBqYXZhc2NyaXB0Ci0gICAgQXBwLmlu
amVjdCg8ZnVsbF9uYW1lIG9yIHR5cGU+LCA8cHJvcGVydHkgbmFtZT4sIDxmdWxsX25hbWU+KQot
ICAgIEFwcC5pbmplY3QoJ21vZGVsOnVzZXInLCAnZW1haWwnLCAnbW9kZWw6ZW1haWwnKQotICAg
IEFwcC5pbmplY3QoJ21vZGVsJywgJ3NvdXJjZScsICdzb3VyY2U6bWFpbicpCi0gICAgYGBgCi0K
LSAgICBAbWV0aG9kIGluamVjdAotICAgIEBwYXJhbSAgZmFjdG9yeU5hbWVPclR5cGUge1N0cmlu
Z30KLSAgICBAcGFyYW0gIHByb3BlcnR5IHtTdHJpbmd9Ci0gICAgQHBhcmFtICBpbmplY3Rpb25O
YW1lIHtTdHJpbmd9Ci0gICoqLwotICBpbmplY3Q6IGZ1bmN0aW9uKCkgewotICAgIHZhciBjb250
YWluZXIgPSB0aGlzLl9fY29udGFpbmVyX187Ci0gICAgY29udGFpbmVyLmluamVjdGlvbi5hcHBs
eShjb250YWluZXIsIGFyZ3VtZW50cyk7Ci0gIH0sCi0KLSAgLyoqCi0gICAgQ2FsbGluZyBpbml0
aWFsaXplIG1hbnVhbGx5IGlzIG5vdCBzdXBwb3J0ZWQuCi0KLSAgICBQbGVhc2Ugc2VlIEVtYmVy
LkFwcGxpY2F0aW9uI2FkdmFuY2VSZWFkaW5lc3MgYW5kCi0gICAgRW1iZXIuQXBwbGljYXRpb24j
ZGVmZXJSZWFkaW5lc3MuCi0KLSAgICBAcHJpdmF0ZQotICAgIEBkZXByZWNhdGVkCi0gICAgQG1l
dGhvZCBpbml0aWFsaXplCi0gICAqKi8KLSAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oKSB7Ci0gICAg
RW1iZXIuZGVwcmVjYXRlKCdDYWxsaW5nIGluaXRpYWxpemUgbWFudWFsbHkgaXMgbm90IHN1cHBv
cnRlZC4gUGxlYXNlIHNlZSBFbWJlci5BcHBsaWNhdGlvbiNhZHZhbmNlUmVhZGluZXNzIGFuZCBF
bWJlci5BcHBsaWNhdGlvbiNkZWZlclJlYWRpbmVzcycpOwotICB9LAotICAvKioKLSAgICBJbml0
aWFsaXplIHRoZSBhcHBsaWNhdGlvbi4gVGhpcyBoYXBwZW5zIGF1dG9tYXRpY2FsbHkuCi0KLSAg
ICBSdW4gYW55IGluaXRpYWxpemVycyBhbmQgcnVuIHRoZSBhcHBsaWNhdGlvbiBsb2FkIGhvb2su
IFRoZXNlIGhvb2tzIG1heQotICAgIGNob29zZSB0byBkZWZlciByZWFkaW5lc3MuIEZvciBleGFt
cGxlLCBhbiBhdXRoZW50aWNhdGlvbiBob29rIG1pZ2h0IHdhbnQKLSAgICB0byBkZWZlciByZWFk
aW5lc3MgdW50aWwgdGhlIGF1dGggdG9rZW4gaGFzIGJlZW4gcmV0cmlldmVkLgotCi0gICAgQHBy
aXZhdGUKLSAgICBAbWV0aG9kIF9pbml0aWFsaXplCi0gICovCi0gIF9pbml0aWFsaXplOiBmdW5j
dGlvbigpIHsKLSAgICBpZiAodGhpcy5pc0Rlc3Ryb3llZCkgeyByZXR1cm47IH0KLQotICAgIC8v
IEF0IHRoaXMgcG9pbnQsIHRoZSBBcHAuUm91dGVyIG11c3QgYWxyZWFkeSBiZSBhc3NpZ25lZAot
ICAgIGlmICh0aGlzLlJvdXRlcikgewotICAgICAgdmFyIGNvbnRhaW5lciA9IHRoaXMuX19jb250
YWluZXJfXzsKLSAgICAgIGNvbnRhaW5lci51bnJlZ2lzdGVyKCdyb3V0ZXI6bWFpbicpOwotICAg
ICAgY29udGFpbmVyLnJlZ2lzdGVyKCdyb3V0ZXI6bWFpbicsIHRoaXMuUm91dGVyKTsKLSAgICB9
Ci0KLSAgICB0aGlzLnJ1bkluaXRpYWxpemVycygpOwotICAgIEVtYmVyLnJ1bkxvYWRIb29rcygn
YXBwbGljYXRpb24nLCB0aGlzKTsKLQotICAgIC8vIEF0IHRoaXMgcG9pbnQsIGFueSBpbml0aWFs
aXplcnMgb3IgbG9hZCBob29rcyB0aGF0IHdvdWxkIGhhdmUgd2FudGVkCi0gICAgLy8gdG8gZGVm
ZXIgcmVhZGluZXNzIGhhdmUgZmlyZWQuIEluIGdlbmVyYWwsIGFkdmFuY2luZyByZWFkaW5lc3Mg
aGVyZQotICAgIC8vIHdpbGwgcHJvY2VlZCB0byBkaWRCZWNvbWVSZWFkeS4KLSAgICB0aGlzLmFk
dmFuY2VSZWFkaW5lc3MoKTsKLQotICAgIHJldHVybiB0aGlzOwotICB9LAotCi0gIC8qKgotICAg
IFJlc2V0IHRoZSBhcHBsaWNhdGlvbi4gVGhpcyBpcyB0eXBpY2FsbHkgdXNlZCBvbmx5IGluIHRl
c3RzLiBJdCBjbGVhbnMgdXAKLSAgICB0aGUgYXBwbGljYXRpb24gaW4gdGhlIGZvbGxvd2luZyBv
cmRlcjoKLQotICAgIDEuIERlYWN0aXZhdGUgZXhpc3Rpbmcgcm91dGVzCi0gICAgMi4gRGVzdHJv
eSBhbGwgb2JqZWN0cyBpbiB0aGUgY29udGFpbmVyCi0gICAgMy4gQ3JlYXRlIGEgbmV3IGFwcGxp
Y2F0aW9uIGNvbnRhaW5lcgotICAgIDQuIFJlLXJvdXRlIHRvIHRoZSBleGlzdGluZyB1cmwKLQot
ICAgIFR5cGljYWwgRXhhbXBsZToKLQotICAgIGBgYGphdmFzY3JpcHQKLQotICAgIHZhciBBcHA7
Ci0KLSAgICBFbWJlci5ydW4oZnVuY3Rpb24oKSB7Ci0gICAgICBBcHAgPSBFbWJlci5BcHBsaWNh
dGlvbi5jcmVhdGUoKTsKLSAgICB9KTsKLQotICAgIG1vZHVsZSgiYWNjZXB0YW5jZSB0ZXN0Iiwg
ewotICAgICAgc2V0dXA6IGZ1bmN0aW9uKCkgewotICAgICAgICBBcHAucmVzZXQoKTsKLSAgICAg
IH0KLSAgICB9KTsKLQotICAgIHRlc3QoImZpcnN0IHRlc3QiLCBmdW5jdGlvbigpIHsKLSAgICAg
IC8vIEFwcCBpcyBmcmVzaGx5IHJlc2V0Ci0gICAgfSk7Ci0KLSAgICB0ZXN0KCJmaXJzdCB0ZXN0
IiwgZnVuY3Rpb24oKSB7Ci0gICAgICAvLyBBcHAgaXMgYWdhaW4gZnJlc2hseSByZXNldAotICAg
IH0pOwotICAgIGBgYAotCi0gICAgQWR2YW5jZWQgRXhhbXBsZToKLQotICAgIE9jY2FzaW9uYWxs
eSB5b3UgbWF5IHdhbnQgdG8gcHJldmVudCB0aGUgYXBwIGZyb20gaW5pdGlhbGl6aW5nIGR1cmlu
ZwotICAgIHNldHVwLiBUaGlzIGNvdWxkIGVuYWJsZSBleHRyYSBjb25maWd1cmF0aW9uLCBvciBl
bmFibGUgYXNzZXJ0aW5nIHByaW9yCi0gICAgdG8gdGhlIGFwcCBiZWNvbWluZyByZWFkeS4KLQot
ICAgIGBgYGphdmFzY3JpcHQKLQotICAgIHZhciBBcHA7Ci0KLSAgICBFbWJlci5ydW4oZnVuY3Rp
b24oKSB7Ci0gICAgICBBcHAgPSBFbWJlci5BcHBsaWNhdGlvbi5jcmVhdGUoKTsKLSAgICB9KTsK
LQotICAgIG1vZHVsZSgiYWNjZXB0YW5jZSB0ZXN0IiwgewotICAgICAgc2V0dXA6IGZ1bmN0aW9u
KCkgewotICAgICAgICBFbWJlci5ydW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgQXBwLnJlc2V0
KCk7Ci0gICAgICAgICAgQXBwLmRlZmVyUmVhZGluZXNzKCk7Ci0gICAgICAgIH0pOwotICAgICAg
fQotICAgIH0pOwotCi0gICAgdGVzdCgiZmlyc3QgdGVzdCIsIGZ1bmN0aW9uKCkgewotICAgICAg
b2sodHJ1ZSwgJ3NvbWV0aGluZyBiZWZvcmUgYXBwIGlzIGluaXRpYWxpemVkJyk7Ci0KLSAgICAg
IEVtYmVyLnJ1bihmdW5jdGlvbigpIHsKLSAgICAgICAgQXBwLmFkdmFuY2VSZWFkaW5lc3MoKTsK
LSAgICAgIH0pOwotICAgICAgb2sodHJ1ZSwgJ3NvbWV0aGluZyBhZnRlciBhcHAgaXMgaW5pdGlh
bGl6ZWQnKTsKLSAgICB9KTsKLSAgICBgYGAKLQotICAgIEBtZXRob2QgcmVzZXQKLSAgKiovCi0g
IHJlc2V0OiBmdW5jdGlvbigpIHsKLSAgICB0aGlzLl9yZWFkaW5lc3NEZWZlcnJhbHMgPSAxOwot
Ci0gICAgZnVuY3Rpb24gaGFuZGxlUmVzZXQoKSB7Ci0gICAgICB2YXIgcm91dGVyID0gdGhpcy5f
X2NvbnRhaW5lcl9fLmxvb2t1cCgncm91dGVyOm1haW4nKTsKLSAgICAgIHJvdXRlci5yZXNldCgp
OwotCi0gICAgICBFbWJlci5ydW4odGhpcy5fX2NvbnRhaW5lcl9fLCAnZGVzdHJveScpOwotCi0g
ICAgICB0aGlzLmJ1aWxkQ29udGFpbmVyKCk7Ci0KLSAgICAgIEVtYmVyLnJ1bi5zY2hlZHVsZSgn
YWN0aW9ucycsIHRoaXMsIGZ1bmN0aW9uKCkgewotICAgICAgICB0aGlzLl9pbml0aWFsaXplKCk7
Ci0gICAgICB9KTsKLSAgICB9Ci0KLSAgICBFbWJlci5ydW4uam9pbih0aGlzLCBoYW5kbGVSZXNl
dCk7Ci0gIH0sCi0KLSAgLyoqCi0gICAgQHByaXZhdGUKLSAgICBAbWV0aG9kIHJ1bkluaXRpYWxp
emVycwotICAqLwotICBydW5Jbml0aWFsaXplcnM6IGZ1bmN0aW9uKCkgewotICAgIHZhciBpbml0
aWFsaXplcnMgPSBnZXQodGhpcy5jb25zdHJ1Y3RvciwgJ2luaXRpYWxpemVycycpLAotICAgICAg
ICBjb250YWluZXIgPSB0aGlzLl9fY29udGFpbmVyX18sCi0gICAgICAgIGdyYXBoID0gbmV3IEVt
YmVyLkRBRygpLAotICAgICAgICBuYW1lc3BhY2UgPSB0aGlzLAotICAgICAgICBuYW1lLCBpbml0
aWFsaXplcjsKLQotICAgIGZvciAobmFtZSBpbiBpbml0aWFsaXplcnMpIHsKLSAgICAgIGluaXRp
YWxpemVyID0gaW5pdGlhbGl6ZXJzW25hbWVdOwotICAgICAgZ3JhcGguYWRkRWRnZXMoaW5pdGlh
bGl6ZXIubmFtZSwgaW5pdGlhbGl6ZXIuaW5pdGlhbGl6ZSwgaW5pdGlhbGl6ZXIuYmVmb3JlLCBp
bml0aWFsaXplci5hZnRlcik7Ci0gICAgfQotCi0gICAgZ3JhcGgudG9wc29ydChmdW5jdGlvbiAo
dmVydGV4KSB7Ci0gICAgICB2YXIgaW5pdGlhbGl6ZXIgPSB2ZXJ0ZXgudmFsdWU7Ci0gICAgICBF
bWJlci5hc3NlcnQoIk5vIGFwcGxpY2F0aW9uIGluaXRpYWxpemVyIG5hbWVkICciK3ZlcnRleC5u
YW1lKyInIiwgaW5pdGlhbGl6ZXIpOwotICAgICAgaW5pdGlhbGl6ZXIoY29udGFpbmVyLCBuYW1l
c3BhY2UpOwotICAgIH0pOwotICB9LAotCi0gIC8qKgotICAgIEBwcml2YXRlCi0gICAgQG1ldGhv
ZCBkaWRCZWNvbWVSZWFkeQotICAqLwotICBkaWRCZWNvbWVSZWFkeTogZnVuY3Rpb24oKSB7Ci0g
ICAgdGhpcy5zZXR1cEV2ZW50RGlzcGF0Y2hlcigpOwotICAgIHRoaXMucmVhZHkoKTsgLy8gdXNl
ciBob29rCi0gICAgdGhpcy5zdGFydFJvdXRpbmcoKTsKLQotICAgIGlmICghRW1iZXIudGVzdGlu
ZykgewotICAgICAgLy8gRWFnZXJseSBuYW1lIGFsbCBjbGFzc2VzIHRoYXQgYXJlIGFscmVhZHkg
bG9hZGVkCi0gICAgICBFbWJlci5OYW1lc3BhY2UucHJvY2Vzc0FsbCgpOwotICAgICAgRW1iZXIu
Qk9PVEVEID0gdHJ1ZTsKLSAgICB9Ci0KLSAgICB0aGlzLnJlc29sdmUodGhpcyk7Ci0gIH0sCi0K
LSAgLyoqCi0gICAgU2V0dXAgdXAgdGhlIGV2ZW50IGRpc3BhdGNoZXIgdG8gcmVjZWl2ZSBldmVu
dHMgb24gdGhlCi0gICAgYXBwbGljYXRpb24ncyBgcm9vdEVsZW1lbnRgIHdpdGggYW55IHJlZ2lz
dGVyZWQKLSAgICBgY3VzdG9tRXZlbnRzYC4KLQotICAgIEBwcml2YXRlCi0gICAgQG1ldGhvZCBz
ZXR1cEV2ZW50RGlzcGF0Y2hlcgotICAqLwotICBzZXR1cEV2ZW50RGlzcGF0Y2hlcjogZnVuY3Rp
b24oKSB7Ci0gICAgdmFyIGN1c3RvbUV2ZW50cyA9IGdldCh0aGlzLCAnY3VzdG9tRXZlbnRzJyks
Ci0gICAgICAgIHJvb3RFbGVtZW50ID0gZ2V0KHRoaXMsICdyb290RWxlbWVudCcpLAotICAgICAg
ICBkaXNwYXRjaGVyID0gdGhpcy5fX2NvbnRhaW5lcl9fLmxvb2t1cCgnZXZlbnRfZGlzcGF0Y2hl
cjptYWluJyk7Ci0KLSAgICBzZXQodGhpcywgJ2V2ZW50RGlzcGF0Y2hlcicsIGRpc3BhdGNoZXIp
OwotICAgIGRpc3BhdGNoZXIuc2V0dXAoY3VzdG9tRXZlbnRzLCByb290RWxlbWVudCk7Ci0gIH0s
Ci0KLSAgLyoqCi0gICAgdHJpZ2dlciBhIG5ldyBjYWxsIHRvIGByb3V0ZWAgd2hlbmV2ZXIgdGhl
IFVSTCBjaGFuZ2VzLgotICAgIElmIHRoZSBhcHBsaWNhdGlvbiBoYXMgYSByb3V0ZXIsIHVzZSBp
dCB0byByb3V0ZSB0byB0aGUgY3VycmVudCBVUkwsIGFuZAotCi0gICAgQHByaXZhdGUKLSAgICBA
bWV0aG9kIHN0YXJ0Um91dGluZwotICAgIEBwcm9wZXJ0eSByb3V0ZXIge0VtYmVyLlJvdXRlcn0K
LSAgKi8KLSAgc3RhcnRSb3V0aW5nOiBmdW5jdGlvbigpIHsKLSAgICB2YXIgcm91dGVyID0gdGhp
cy5fX2NvbnRhaW5lcl9fLmxvb2t1cCgncm91dGVyOm1haW4nKTsKLSAgICBpZiAoIXJvdXRlcikg
eyByZXR1cm47IH0KLQotICAgIHJvdXRlci5zdGFydFJvdXRpbmcoKTsKLSAgfSwKLQotICBoYW5k
bGVVUkw6IGZ1bmN0aW9uKHVybCkgewotICAgIHZhciByb3V0ZXIgPSB0aGlzLl9fY29udGFpbmVy
X18ubG9va3VwKCdyb3V0ZXI6bWFpbicpOwotCi0gICAgcm91dGVyLmhhbmRsZVVSTCh1cmwpOwot
ICB9LAotCi0gIC8qKgotICAgIENhbGxlZCB3aGVuIHRoZSBBcHBsaWNhdGlvbiBoYXMgYmVjb21l
IHJlYWR5LgotICAgIFRoZSBjYWxsIHdpbGwgYmUgZGVsYXllZCB1bnRpbCB0aGUgRE9NIGhhcyBi
ZWNvbWUgcmVhZHkuCi0KLSAgICBAZXZlbnQgcmVhZHkKLSAgKi8KLSAgcmVhZHk6IEVtYmVyLkss
Ci0KLSAgLyoqCi0gICAgQGRlcHJlY2F0ZWQgVXNlICdSZXNvbHZlcicgaW5zdGVhZAotICAgIFNl
dCB0aGlzIHRvIHByb3ZpZGUgYW4gYWx0ZXJuYXRlIGNsYXNzIHRvIGBFbWJlci5EZWZhdWx0UmVz
b2x2ZXJgCi0KLQotICAgIEBwcm9wZXJ0eSByZXNvbHZlcgotICAqLwotICByZXNvbHZlcjogbnVs
bCwKLQotICAvKioKLSAgICBTZXQgdGhpcyB0byBwcm92aWRlIGFuIGFsdGVybmF0ZSBjbGFzcyB0
byBgRW1iZXIuRGVmYXVsdFJlc29sdmVyYAotCi0gICAgQHByb3BlcnR5IHJlc29sdmVyCi0gICov
Ci0gIFJlc29sdmVyOiBudWxsLAotCi0gIHdpbGxEZXN0cm95OiBmdW5jdGlvbigpIHsKLSAgICBF
bWJlci5CT09URUQgPSBmYWxzZTsKLQotICAgIHRoaXMuX19jb250YWluZXJfXy5kZXN0cm95KCk7
Ci0gIH0sCi0KLSAgaW5pdGlhbGl6ZXI6IGZ1bmN0aW9uKG9wdGlvbnMpIHsKLSAgICB0aGlzLmNv
bnN0cnVjdG9yLmluaXRpYWxpemVyKG9wdGlvbnMpOwotICB9Ci19KTsKLQotRW1iZXIuQXBwbGlj
YXRpb24ucmVvcGVuQ2xhc3MoewotICBpbml0aWFsaXplcnM6IHt9LAotICBpbml0aWFsaXplcjog
ZnVuY3Rpb24oaW5pdGlhbGl6ZXIpIHsKLSAgICAvLyBJZiB0aGlzIGlzIHRoZSBmaXJzdCBpbml0
aWFsaXplciBiZWluZyBhZGRlZCB0byBhIHN1YmNsYXNzLCB3ZSBhcmUgZ29pbmcgdG8gcmVvcGVu
IHRoZSBjbGFzcwotICAgIC8vIHRvIG1ha2Ugc3VyZSB3ZSBoYXZlIGEgbmV3IGBpbml0aWFsaXpl
cnNgIG9iamVjdCwgd2hpY2ggZXh0ZW5kcyBmcm9tIHRoZSBwYXJlbnQgY2xhc3MnIHVzaW5nCi0g
ICAgLy8gcHJvdG90eXBhbCBpbmhlcml0YW5jZS4gV2l0aG91dCB0aGlzLCBhdHRlbXB0aW5nIHRv
IGFkZCBpbml0aWFsaXplcnMgdG8gdGhlIHN1YmNsYXNzIHdvdWxkCi0gICAgLy8gcG9sbHV0ZSB0
aGUgcGFyZW50IGNsYXNzIGFzIHdlbGwgYXMgb3RoZXIgc3ViY2xhc3Nlcy4KLSAgICBpZiAodGhp
cy5zdXBlcmNsYXNzLmluaXRpYWxpemVycyAhPT0gdW5kZWZpbmVkICYmIHRoaXMuc3VwZXJjbGFz
cy5pbml0aWFsaXplcnMgPT09IHRoaXMuaW5pdGlhbGl6ZXJzKSB7Ci0gICAgICB0aGlzLnJlb3Bl
bkNsYXNzKHsKLSAgICAgICAgaW5pdGlhbGl6ZXJzOiBFbWJlci5jcmVhdGUodGhpcy5pbml0aWFs
aXplcnMpCi0gICAgICB9KTsKLSAgICB9Ci0KLSAgICBFbWJlci5hc3NlcnQoIlRoZSBpbml0aWFs
aXplciAnIiArIGluaXRpYWxpemVyLm5hbWUgKyAiJyBoYXMgYWxyZWFkeSBiZWVuIHJlZ2lzdGVy
ZWQiLCAhdGhpcy5pbml0aWFsaXplcnNbaW5pdGlhbGl6ZXIubmFtZV0pOwotICAgIEVtYmVyLmFz
c2VydCgiQW4gaW5pdGlhbGl6ZXIgY2Fubm90IGJlIHJlZ2lzdGVyZWQgd2l0aCBib3RoIGEgYmVm
b3JlIGFuZCBhbiBhZnRlciIsICEoaW5pdGlhbGl6ZXIuYmVmb3JlICYmIGluaXRpYWxpemVyLmFm
dGVyKSk7Ci0gICAgRW1iZXIuYXNzZXJ0KCJBbiBpbml0aWFsaXplciBjYW5ub3QgYmUgcmVnaXN0
ZXJlZCB3aXRob3V0IGFuIGluaXRpYWxpemUgZnVuY3Rpb24iLCBFbWJlci5jYW5JbnZva2UoaW5p
dGlhbGl6ZXIsICdpbml0aWFsaXplJykpOwotCi0gICAgdGhpcy5pbml0aWFsaXplcnNbaW5pdGlh
bGl6ZXIubmFtZV0gPSBpbml0aWFsaXplcjsKLSAgfSwKLQotICAvKioKLSAgICBUaGlzIGNyZWF0
ZXMgYSBjb250YWluZXIgd2l0aCB0aGUgZGVmYXVsdCBFbWJlciBuYW1pbmcgY29udmVudGlvbnMu
Ci0KLSAgICBJdCBhbHNvIGNvbmZpZ3VyZXMgdGhlIGNvbnRhaW5lcjoKLQotICAgICogcmVnaXN0
ZXJlZCB2aWV3cyBhcmUgY3JlYXRlZCBldmVyeSB0aW1lIHRoZXkgYXJlIGxvb2tlZCB1cCAodGhl
eSBhcmUKLSAgICAgIG5vdCBzaW5nbGV0b25zKQotICAgICogcmVnaXN0ZXJlZCB0ZW1wbGF0ZXMg
YXJlIG5vdCBmYWN0b3JpZXM7IHRoZSByZWdpc3RlcmVkIHZhbHVlIGlzCi0gICAgICByZXR1cm5l
ZCBkaXJlY3RseS4KLSAgICAqIHRoZSByb3V0ZXIgcmVjZWl2ZXMgdGhlIGFwcGxpY2F0aW9uIGFz
IGl0cyBgbmFtZXNwYWNlYCBwcm9wZXJ0eQotICAgICogYWxsIGNvbnRyb2xsZXJzIHJlY2VpdmUg
dGhlIHJvdXRlciBhcyB0aGVpciBgdGFyZ2V0YCBhbmQgYGNvbnRyb2xsZXJzYAotICAgICAgcHJv
cGVydGllcwotICAgICogYWxsIGNvbnRyb2xsZXJzIHJlY2VpdmUgdGhlIGFwcGxpY2F0aW9uIGFz
IHRoZWlyIGBuYW1lc3BhY2VgIHByb3BlcnR5Ci0gICAgKiB0aGUgYXBwbGljYXRpb24gdmlldyBy
ZWNlaXZlcyB0aGUgYXBwbGljYXRpb24gY29udHJvbGxlciBhcyBpdHMKLSAgICAgIGBjb250cm9s
bGVyYCBwcm9wZXJ0eQotICAgICogdGhlIGFwcGxpY2F0aW9uIHZpZXcgcmVjZWl2ZXMgdGhlIGFw
cGxpY2F0aW9uIHRlbXBsYXRlIGFzIGl0cwotICAgICAgYGRlZmF1bHRUZW1wbGF0ZWAgcHJvcGVy
dHkKLQotICAgIEBwcml2YXRlCi0gICAgQG1ldGhvZCBidWlsZENvbnRhaW5lcgotICAgIEBzdGF0
aWMKLSAgICBAcGFyYW0ge0VtYmVyLkFwcGxpY2F0aW9ufSBuYW1lc3BhY2UgdGhlIGFwcGxpY2F0
aW9uIHRvIGJ1aWxkIHRoZQotICAgICAgY29udGFpbmVyIGZvci4KLSAgICBAcmV0dXJuIHtFbWJl
ci5Db250YWluZXJ9IHRoZSBidWlsdCBjb250YWluZXIKLSAgKi8KLSAgYnVpbGRDb250YWluZXI6
IGZ1bmN0aW9uKG5hbWVzcGFjZSkgewotICAgIHZhciBjb250YWluZXIgPSBuZXcgRW1iZXIuQ29u
dGFpbmVyKCk7Ci0KLSAgICBFbWJlci5Db250YWluZXIuZGVmYXVsdENvbnRhaW5lciA9IG5ldyBE
ZXByZWNhdGVkQ29udGFpbmVyKGNvbnRhaW5lcik7Ci0KLSAgICBjb250YWluZXIuc2V0ID0gRW1i
ZXIuc2V0OwotICAgIGNvbnRhaW5lci5yZXNvbHZlciAgPSByZXNvbHZlckZvcihuYW1lc3BhY2Up
OwotICAgIGNvbnRhaW5lci5ub3JtYWxpemUgPSBjb250YWluZXIucmVzb2x2ZXIubm9ybWFsaXpl
OwotICAgIGNvbnRhaW5lci5kZXNjcmliZSAgPSBjb250YWluZXIucmVzb2x2ZXIuZGVzY3JpYmU7
Ci0gICAgY29udGFpbmVyLm1ha2VUb1N0cmluZyA9IGNvbnRhaW5lci5yZXNvbHZlci5tYWtlVG9T
dHJpbmc7Ci0KLSAgICBjb250YWluZXIub3B0aW9uc0ZvclR5cGUoJ2NvbXBvbmVudCcsIHsgc2lu
Z2xldG9uOiBmYWxzZSB9KTsKLSAgICBjb250YWluZXIub3B0aW9uc0ZvclR5cGUoJ3ZpZXcnLCB7
IHNpbmdsZXRvbjogZmFsc2UgfSk7Ci0gICAgY29udGFpbmVyLm9wdGlvbnNGb3JUeXBlKCd0ZW1w
bGF0ZScsIHsgaW5zdGFudGlhdGU6IGZhbHNlIH0pOwotICAgIGNvbnRhaW5lci5vcHRpb25zRm9y
VHlwZSgnaGVscGVyJywgeyBpbnN0YW50aWF0ZTogZmFsc2UgfSk7Ci0KLSAgICBjb250YWluZXIu
cmVnaXN0ZXIoJ2FwcGxpY2F0aW9uOm1haW4nLCBuYW1lc3BhY2UsIHsgaW5zdGFudGlhdGU6IGZh
bHNlIH0pOwotCi0gICAgY29udGFpbmVyLnJlZ2lzdGVyKCdjb250cm9sbGVyOmJhc2ljJywgRW1i
ZXIuQ29udHJvbGxlciwgeyBpbnN0YW50aWF0ZTogZmFsc2UgfSk7Ci0gICAgY29udGFpbmVyLnJl
Z2lzdGVyKCdjb250cm9sbGVyOm9iamVjdCcsIEVtYmVyLk9iamVjdENvbnRyb2xsZXIsIHsgaW5z
dGFudGlhdGU6IGZhbHNlIH0pOwotICAgIGNvbnRhaW5lci5yZWdpc3RlcignY29udHJvbGxlcjph
cnJheScsIEVtYmVyLkFycmF5Q29udHJvbGxlciwgeyBpbnN0YW50aWF0ZTogZmFsc2UgfSk7Ci0g
ICAgY29udGFpbmVyLnJlZ2lzdGVyKCdyb3V0ZTpiYXNpYycsIEVtYmVyLlJvdXRlLCB7IGluc3Rh
bnRpYXRlOiBmYWxzZSB9KTsKLSAgICBjb250YWluZXIucmVnaXN0ZXIoJ2V2ZW50X2Rpc3BhdGNo
ZXI6bWFpbicsIEVtYmVyLkV2ZW50RGlzcGF0Y2hlcik7Ci0KLSAgICBjb250YWluZXIucmVnaXN0
ZXIoJ3JvdXRlcjptYWluJywgIEVtYmVyLlJvdXRlcik7Ci0gICAgY29udGFpbmVyLmluamVjdGlv
bigncm91dGVyOm1haW4nLCAnbmFtZXNwYWNlJywgJ2FwcGxpY2F0aW9uOm1haW4nKTsKLQotICAg
IGNvbnRhaW5lci5pbmplY3Rpb24oJ2NvbnRyb2xsZXInLCAndGFyZ2V0JywgJ3JvdXRlcjptYWlu
Jyk7Ci0gICAgY29udGFpbmVyLmluamVjdGlvbignY29udHJvbGxlcicsICduYW1lc3BhY2UnLCAn
YXBwbGljYXRpb246bWFpbicpOwotCi0gICAgY29udGFpbmVyLmluamVjdGlvbigncm91dGUnLCAn
cm91dGVyJywgJ3JvdXRlcjptYWluJyk7Ci0KLSAgICByZXR1cm4gY29udGFpbmVyOwotICB9Ci19
KTsKLQotLyoqCi0gIFRoaXMgZnVuY3Rpb24gZGVmaW5lcyB0aGUgZGVmYXVsdCBsb29rdXAgcnVs
ZXMgZm9yIGNvbnRhaW5lciBsb29rdXBzOgotCi0gICogdGVtcGxhdGVzIGFyZSBsb29rZWQgdXAg
b24gYEVtYmVyLlRFTVBMQVRFU2AKLSAgKiBvdGhlciBuYW1lcyBhcmUgbG9va2VkIHVwIG9uIHRo
ZSBhcHBsaWNhdGlvbiBhZnRlciBjbGFzc2lmeWluZyB0aGUgbmFtZS4KLSAgICBGb3IgZXhhbXBs
ZSwgYGNvbnRyb2xsZXI6cG9zdGAgbG9va3MgdXAgYEFwcC5Qb3N0Q29udHJvbGxlcmAgYnkgZGVm
YXVsdC4KLSAgKiBpZiB0aGUgZGVmYXVsdCBsb29rdXAgZmFpbHMsIGxvb2sgZm9yIHJlZ2lzdGVy
ZWQgY2xhc3NlcyBvbiB0aGUgY29udGFpbmVyCi0KLSAgVGhpcyBhbGxvd3MgdGhlIGFwcGxpY2F0
aW9uIHRvIHJlZ2lzdGVyIGRlZmF1bHQgaW5qZWN0aW9ucyBpbiB0aGUgY29udGFpbmVyCi0gIHRo
YXQgY291bGQgYmUgb3ZlcnJpZGRlbiBieSB0aGUgbm9ybWFsIG5hbWluZyBjb252ZW50aW9uLgot
Ci0gIEBwcml2YXRlCi0gIEBtZXRob2QgcmVzb2x2ZXJGb3IKLSAgQHBhcmFtIHtFbWJlci5OYW1l
c3BhY2V9IG5hbWVzcGFjZSB0aGUgbmFtZXNwYWNlIHRvIGxvb2sgZm9yIGNsYXNzZXMKLSAgQHJl
dHVybiB7Kn0gdGhlIHJlc29sdmVkIHZhbHVlIGZvciBhIGdpdmVuIGxvb2t1cAotKi8KLWZ1bmN0
aW9uIHJlc29sdmVyRm9yKG5hbWVzcGFjZSkgewotICBpZiAobmFtZXNwYWNlLmdldCgncmVzb2x2
ZXInKSkgewotICAgIEVtYmVyLmRlcHJlY2F0ZSgnQXBwbGljYXRpb24ucmVzb2x2ZXIgaXMgZGVw
cmVjYXRlZCBpbiBmYXZvciBvZiBBcHBsaWNhdGlvbi5SZXNvbHZlcicsIGZhbHNlKTsKLSAgfQot
Ci0gIHZhciBSZXNvbHZlckNsYXNzID0gbmFtZXNwYWNlLmdldCgncmVzb2x2ZXInKSB8fCBuYW1l
c3BhY2UuZ2V0KCdSZXNvbHZlcicpIHx8IEVtYmVyLkRlZmF1bHRSZXNvbHZlcjsKLSAgdmFyIHJl
c29sdmVyID0gUmVzb2x2ZXJDbGFzcy5jcmVhdGUoewotICAgIG5hbWVzcGFjZTogbmFtZXNwYWNl
Ci0gIH0pOwotCi0gIGZ1bmN0aW9uIHJlc29sdmUoZnVsbE5hbWUpIHsKLSAgICByZXR1cm4gcmVz
b2x2ZXIucmVzb2x2ZShmdWxsTmFtZSk7Ci0gIH0KLQotICByZXNvbHZlLmRlc2NyaWJlID0gZnVu
Y3Rpb24oZnVsbE5hbWUpIHsKLSAgICByZXR1cm4gcmVzb2x2ZXIubG9va3VwRGVzY3JpcHRpb24o
ZnVsbE5hbWUpOwotICB9OwotCi0gIHJlc29sdmUubWFrZVRvU3RyaW5nID0gZnVuY3Rpb24oZmFj
dG9yeSwgZnVsbE5hbWUpIHsKLSAgICByZXR1cm4gcmVzb2x2ZXIubWFrZVRvU3RyaW5nKGZhY3Rv
cnksIGZ1bGxOYW1lKTsKLSAgfTsKLQotICByZXNvbHZlLm5vcm1hbGl6ZSA9IGZ1bmN0aW9uKGZ1
bGxOYW1lKSB7Ci0gICAgaWYgKHJlc29sdmVyLm5vcm1hbGl6ZSkgewotICAgICAgcmV0dXJuIHJl
c29sdmVyLm5vcm1hbGl6ZShmdWxsTmFtZSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIEVtYmVyLmRl
cHJlY2F0ZSgnVGhlIFJlc29sdmVyIHNob3VsZCBub3cgcHJvdmlkZSBhIFwnbm9ybWFsaXplXCcg
ZnVuY3Rpb24nLCBmYWxzZSk7Ci0gICAgICByZXR1cm4gZnVsbE5hbWU7Ci0gICAgfQotICB9Owot
Ci0gIHJldHVybiByZXNvbHZlOwotfQotCi1FbWJlci5ydW5Mb2FkSG9va3MoJ0VtYmVyLkFwcGxp
Y2F0aW9uJywgRW1iZXIuQXBwbGljYXRpb24pOwotCi19KSgpOwotCi0KLQotKGZ1bmN0aW9uKCkg
ewotCi19KSgpOwotCi0KLQotKGZ1bmN0aW9uKCkgewotLyoqCi1AbW9kdWxlIGVtYmVyCi1Ac3Vi
bW9kdWxlIGVtYmVyLWFwcGxpY2F0aW9uCi0qLwotCi12YXIgZ2V0ID0gRW1iZXIuZ2V0LCBzZXQg
PSBFbWJlci5zZXQ7Ci0KLWZ1bmN0aW9uIHZlcmlmeU5lZWRzRGVwZW5kZW5jaWVzKGNvbnRyb2xs
ZXIsIGNvbnRhaW5lciwgbmVlZHMpIHsKLSAgdmFyIGRlcGVuZGVuY3ksIGksIGwsIG1pc3Npbmcg
PSBbXTsKLQotICBmb3IgKGk9MCwgbD1uZWVkcy5sZW5ndGg7IGk8bDsgaSsrKSB7Ci0gICAgZGVw
ZW5kZW5jeSA9IG5lZWRzW2ldOwotCi0gICAgRW1iZXIuYXNzZXJ0KEVtYmVyLmluc3BlY3QoY29u
dHJvbGxlcikgKyAiI25lZWRzIG11c3Qgbm90IHNwZWNpZnkgZGVwZW5kZW5jaWVzIHdpdGggcGVy
aW9kcyBpbiB0aGVpciBuYW1lcyAoIiArIGRlcGVuZGVuY3kgKyAiKSIsIGRlcGVuZGVuY3kuaW5k
ZXhPZignLicpID09PSAtMSk7Ci0KLSAgICBpZiAoZGVwZW5kZW5jeS5pbmRleE9mKCc6JykgPT09
IC0xKSB7Ci0gICAgICBkZXBlbmRlbmN5ID0gImNvbnRyb2xsZXI6IiArIGRlcGVuZGVuY3k7Ci0g
ICAgfQotCi0gICAgLy8gU3RydWN0dXJlIGFzc2VydCB0byBzdGlsbCBkbyB2ZXJpZmljYXRpb24g
YnV0IG5vdCBzdHJpbmcgY29uY2F0IGluIHByb2R1Y3Rpb24KLSAgICBpZiAoIWNvbnRhaW5lci5o
YXMoZGVwZW5kZW5jeSkpIHsKLSAgICAgIG1pc3NpbmcucHVzaChkZXBlbmRlbmN5KTsKLSAgICB9
Ci0gIH0KLSAgaWYgKG1pc3NpbmcubGVuZ3RoKSB7Ci0gICAgdGhyb3cgbmV3IEVtYmVyLkVycm9y
KEVtYmVyLmluc3BlY3QoY29udHJvbGxlcikgKyAiIG5lZWRzIFsgIiArIG1pc3Npbmcuam9pbign
LCAnKSArICIgXSBidXQgIiArIChtaXNzaW5nLmxlbmd0aCA+IDEgPyAndGhleScgOiAnaXQnKSAr
ICIgY291bGQgbm90IGJlIGZvdW5kIik7Ci0gIH0KLX0KLQotdmFyIGRlZmF1bHRDb250cm9sbGVy
c0NvbXB1dGVkUHJvcGVydHkgPSBFbWJlci5jb21wdXRlZChmdW5jdGlvbigpIHsKLSAgdmFyIGNv
bnRyb2xsZXIgPSB0aGlzOwotCi0gIHJldHVybiB7Ci0gICAgbmVlZHM6IGdldChjb250cm9sbGVy
LCAnbmVlZHMnKSwKLSAgICBjb250YWluZXI6IGdldChjb250cm9sbGVyLCAnY29udGFpbmVyJyks
Ci0gICAgdW5rbm93blByb3BlcnR5OiBmdW5jdGlvbihjb250cm9sbGVyTmFtZSkgewotICAgICAg
dmFyIG5lZWRzID0gdGhpcy5uZWVkcywKLSAgICAgICAgZGVwZW5kZW5jeSwgaSwgbDsKLSAgICAg
IGZvciAoaT0wLCBsPW5lZWRzLmxlbmd0aDsgaTxsOyBpKyspIHsKLSAgICAgICAgZGVwZW5kZW5j
eSA9IG5lZWRzW2ldOwotICAgICAgICBpZiAoZGVwZW5kZW5jeSA9PT0gY29udHJvbGxlck5hbWUp
IHsKLSAgICAgICAgICByZXR1cm4gdGhpcy5jb250YWluZXIubG9va3VwKCdjb250cm9sbGVyOicg
KyBjb250cm9sbGVyTmFtZSk7Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgICAgdmFyIGVycm9y
TWVzc2FnZSA9IEVtYmVyLmluc3BlY3QoY29udHJvbGxlcikgKyAnI25lZWRzIGRvZXMgbm90IGlu
Y2x1ZGUgYCcgKyBjb250cm9sbGVyTmFtZSArICdgLiBUbyBhY2Nlc3MgdGhlICcgKyBjb250cm9s
bGVyTmFtZSArICcgY29udHJvbGxlciBmcm9tICcgKyBFbWJlci5pbnNwZWN0KGNvbnRyb2xsZXIp
ICsgJywgJyArIEVtYmVyLmluc3BlY3QoY29udHJvbGxlcikgKyAnIHNob3VsZCBoYXZlIGEgYG5l
ZWRzYCBwcm9wZXJ0eSB0aGF0IGlzIGFuIGFycmF5IG9mIHRoZSBjb250cm9sbGVycyBpdCBoYXMg
YWNjZXNzIHRvLic7Ci0gICAgICB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoZXJyb3JNZXNzYWdl
KTsKLSAgICB9LAotICAgIHNldFVua25vd25Qcm9wZXJ0eTogZnVuY3Rpb24gKGtleSwgdmFsdWUp
IHsKLSAgICAgIHRocm93IG5ldyBFcnJvcigiWW91IGNhbm5vdCBvdmVyd3JpdGUgdGhlIHZhbHVl
IG9mIGBjb250cm9sbGVycy4iICsga2V5ICsgImAgb2YgIiArIEVtYmVyLmluc3BlY3QoY29udHJv
bGxlcikpOwotICAgIH0KLSAgfTsKLX0pOwotCi0vKioKLSAgQGNsYXNzIENvbnRyb2xsZXJNaXhp
bgotICBAbmFtZXNwYWNlIEVtYmVyCi0qLwotRW1iZXIuQ29udHJvbGxlck1peGluLnJlb3Blbih7
Ci0gIGNvbmNhdGVuYXRlZFByb3BlcnRpZXM6IFsnbmVlZHMnXSwKLQotICAvKioKLSAgICBBbiBh
cnJheSBvZiBvdGhlciBjb250cm9sbGVyIG9iamVjdHMgYXZhaWxhYmxlIGluc2lkZQotICAgIGlu
c3RhbmNlcyBvZiB0aGlzIGNvbnRyb2xsZXIgdmlhIHRoZSBgY29udHJvbGxlcnNgCi0gICAgcHJv
cGVydHk6Ci0KLSAgICBGb3IgZXhhbXBsZSwgd2hlbiB5b3UgZGVmaW5lIGEgY29udHJvbGxlcjoK
LQotICAgIGBgYGphdmFzY3JpcHQKLSAgICBBcHAuQ29tbWVudHNDb250cm9sbGVyID0gRW1iZXIu
QXJyYXlDb250cm9sbGVyLmV4dGVuZCh7Ci0gICAgICBuZWVkczogWydwb3N0J10KLSAgICB9KTsK
LSAgICBgYGAKLQotICAgIFRoZSBhcHBsaWNhdGlvbidzIHNpbmdsZSBpbnN0YW5jZSBvZiB0aGVz
ZSBvdGhlcgotICAgIGNvbnRyb2xsZXJzIGFyZSBhY2Nlc3NpYmxlIGJ5IG5hbWUgdGhyb3VnaCB0
aGUKLSAgICBgY29udHJvbGxlcnNgIHByb3BlcnR5OgotCi0gICAgYGBgamF2YXNjcmlwdAotICAg
IHRoaXMuZ2V0KCdjb250cm9sbGVycy5wb3N0Jyk7IC8vIGluc3RhbmNlIG9mIEFwcC5Qb3N0Q29u
dHJvbGxlcgotICAgIGBgYAotCi0gICAgR2l2ZW4gdGhhdCB5b3UgaGF2ZSBhIG5lc3RlZCBjb250
cm9sbGVyIChuZXN0ZWQgcmVzb3VyY2UpOgotCi0gICAgYGBgamF2YXNjcmlwdAotICAgIEFwcC5D
b21tZW50c05ld0NvbnRyb2xsZXIgPSBFbWJlci5PYmplY3RDb250cm9sbGVyLmV4dGVuZCh7Ci0g
ICAgfSk7Ci0gICAgYGBgCi0KLSAgICBXaGVuIHlvdSBkZWZpbmUgYSBjb250cm9sbGVyIHRoYXQg
cmVxdWlyZXMgYWNjZXNzIHRvIGEgbmVzdGVkIG9uZToKLQotICAgIGBgYGphdmFzY3JpcHQKLSAg
ICBBcHAuSW5kZXhDb250cm9sbGVyID0gRW1iZXIuT2JqZWN0Q29udHJvbGxlci5leHRlbmQoewot
ICAgICAgbmVlZHM6IFsnY29tbWVudHNOZXcnXQotICAgIH0pOwotICAgIGBgYAotCi0gICAgWW91
IHdpbGwgYmUgYWJsZSB0byBnZXQgYWNjZXNzIHRvIGl0OgotCi0gICAgYGBgamF2YXNjcmlwdAot
ICAgIHRoaXMuZ2V0KCdjb250cm9sbGVycy5jb21tZW50c05ldycpOyAvLyBpbnN0YW5jZSBvZiBB
cHAuQ29tbWVudHNOZXdDb250cm9sbGVyCi0gICAgYGBgCi0KLSAgICBUaGlzIGlzIG9ubHkgYXZh
aWxhYmxlIGZvciBzaW5nbGV0b24gY29udHJvbGxlcnMuCi0KLSAgICBAcHJvcGVydHkge0FycmF5
fSBuZWVkcwotICAgIEBkZWZhdWx0IFtdCi0gICovCi0gIG5lZWRzOiBbXSwKLQotICBpbml0OiBm
dW5jdGlvbigpIHsKLSAgICB2YXIgbmVlZHMgPSBnZXQodGhpcywgJ25lZWRzJyksCi0gICAgbGVu
Z3RoID0gZ2V0KG5lZWRzLCAnbGVuZ3RoJyk7Ci0KLSAgICBpZiAobGVuZ3RoID4gMCkgewotICAg
ICAgRW1iZXIuYXNzZXJ0KCcgYCcgKyBFbWJlci5pbnNwZWN0KHRoaXMpICsgJyBzcGVjaWZpZXMg
YG5lZWRzYCwgYnV0IGRvZXMgJyArCi0gICAgICAgICAgICAgICAgICAgIm5vdCBoYXZlIGEgY29u
dGFpbmVyLiBQbGVhc2UgZW5zdXJlIHRoaXMgY29udHJvbGxlciB3YXMgIiArCi0gICAgICAgICAg
ICAgICAgICAgImluc3RhbnRpYXRlZCB3aXRoIGEgY29udGFpbmVyLiIsCi0gICAgICAgICAgICAg
ICAgICAgdGhpcy5jb250YWluZXIgfHwgRW1iZXIubWV0YSh0aGlzLCBmYWxzZSkuZGVzY3MuY29u
dHJvbGxlcnMgIT09IGRlZmF1bHRDb250cm9sbGVyc0NvbXB1dGVkUHJvcGVydHkpOwotCi0gICAg
ICBpZiAodGhpcy5jb250YWluZXIpIHsKLSAgICAgICAgdmVyaWZ5TmVlZHNEZXBlbmRlbmNpZXMo
dGhpcywgdGhpcy5jb250YWluZXIsIG5lZWRzKTsKLSAgICAgIH0KLQotICAgICAgLy8gaWYgbmVl
ZHMgdGhlbiBpbml0aWFsaXplIGNvbnRyb2xsZXJzIHByb3h5Ci0gICAgICBnZXQodGhpcywgJ2Nv
bnRyb2xsZXJzJyk7Ci0gICAgfQotCi0gICAgdGhpcy5fc3VwZXIuYXBwbHkodGhpcywgYXJndW1l
bnRzKTsKLSAgfSwKLQotICAvKioKLSAgICBAbWV0aG9kIGNvbnRyb2xsZXJGb3IKLSAgICBAc2Vl
IHtFbWJlci5Sb3V0ZSNjb250cm9sbGVyRm9yfQotICAgIEBkZXByZWNhdGVkIFVzZSBgbmVlZHNg
IGluc3RlYWQKLSAgKi8KLSAgY29udHJvbGxlckZvcjogZnVuY3Rpb24oY29udHJvbGxlck5hbWUp
IHsKLSAgICBFbWJlci5kZXByZWNhdGUoIkNvbnRyb2xsZXIjY29udHJvbGxlckZvciBpcyBkZXBy
ZWNhdGVkLCBwbGVhc2UgdXNlIENvbnRyb2xsZXIjbmVlZHMgaW5zdGVhZCIpOwotICAgIHJldHVy
biBFbWJlci5jb250cm9sbGVyRm9yKGdldCh0aGlzLCAnY29udGFpbmVyJyksIGNvbnRyb2xsZXJO
YW1lKTsKLSAgfSwKLQotICAvKioKLSAgICBTdG9yZXMgdGhlIGluc3RhbmNlcyBvZiBvdGhlciBj
b250cm9sbGVycyBhdmFpbGFibGUgZnJvbSB3aXRoaW4KLSAgICB0aGlzIGNvbnRyb2xsZXIuIEFu
eSBjb250cm9sbGVyIGxpc3RlZCBieSBuYW1lIGluIHRoZSBgbmVlZHNgCi0gICAgcHJvcGVydHkg
d2lsbCBiZSBhY2Nlc3NpYmxlIGJ5IG5hbWUgdGhyb3VnaCB0aGlzIHByb3BlcnR5LgotCi0gICAg
YGBgamF2YXNjcmlwdAotICAgIEFwcC5Db21tZW50c0NvbnRyb2xsZXIgPSBFbWJlci5BcnJheUNv
bnRyb2xsZXIuZXh0ZW5kKHsKLSAgICAgIG5lZWRzOiBbJ3Bvc3QnXSwKLSAgICAgIHBvc3RUaXRs
ZTogZnVuY3Rpb24oKXsKLSAgICAgICAgdmFyIGN1cnJlbnRQb3N0ID0gdGhpcy5nZXQoJ2NvbnRy
b2xsZXJzLnBvc3QnKTsgLy8gaW5zdGFuY2Ugb2YgQXBwLlBvc3RDb250cm9sbGVyCi0gICAgICAg
IHJldHVybiBjdXJyZW50UG9zdC5nZXQoJ3RpdGxlJyk7Ci0gICAgICB9LnByb3BlcnR5KCdjb250
cm9sbGVycy5wb3N0LnRpdGxlJykKLSAgICB9KTsKLSAgICBgYGAKLQotICAgIEBzZWUge0VtYmVy
LkNvbnRyb2xsZXJNaXhpbiNuZWVkc30KLSAgICBAcHJvcGVydHkge09iamVjdH0gY29udHJvbGxl
cnMKLSAgICBAZGVmYXVsdCBudWxsCi0gICovCi0gIGNvbnRyb2xsZXJzOiBkZWZhdWx0Q29udHJv
bGxlcnNDb21wdXRlZFByb3BlcnR5Ci19KTsKLQotfSkoKTsKLQotCi0KLShmdW5jdGlvbigpIHsK
LQotfSkoKTsKLQotCi0KLShmdW5jdGlvbigpIHsKLS8qKgotRW1iZXIgQXBwbGljYXRpb24KLQot
QG1vZHVsZSBlbWJlcgotQHN1Ym1vZHVsZSBlbWJlci1hcHBsaWNhdGlvbgotQHJlcXVpcmVzIGVt
YmVyLXZpZXdzLCBlbWJlci1yb3V0aW5nCi0qLwotCi19KSgpOwotCi0oZnVuY3Rpb24oKSB7Ci0v
KioKLUBtb2R1bGUgZW1iZXIKLUBzdWJtb2R1bGUgZW1iZXItZXh0ZW5zaW9uLXN1cHBvcnQKLSov
Ci0vKioKLSAgVGhlIGBEYXRhQWRhcHRlcmAgaGVscHMgYSBkYXRhIHBlcnNpc3RlbmNlIGxpYnJh
cnkKLSAgaW50ZXJmYWNlIHdpdGggdG9vbHMgdGhhdCBkZWJ1ZyBFbWJlciBzdWNoCi0gIGFzIHRo
ZSBbRW1iZXIgRXh0ZW5zaW9uXShodHRwczovL2dpdGh1Yi5jb20vdGlsZGVpby9lbWJlci1leHRl
bnNpb24pCi0gIGZvciBDaHJvbWUgYW5kIEZpcmVmb3guCi0KLSAgVGhpcyBjbGFzcyB3aWxsIGJl
IGV4dGVuZGVkIGJ5IGEgcGVyc2lzdGVuY2UgbGlicmFyeQotICB3aGljaCB3aWxsIG92ZXJyaWRl
IHNvbWUgb2YgdGhlIG1ldGhvZHMgd2l0aAotICBsaWJyYXJ5LXNwZWNpZmljIGNvZGUuCi0KLSAg
VGhlIG1ldGhvZHMgbGlrZWx5IHRvIGJlIG92ZXJyaWRkZW4gYXJlOgotCi0gICogYGdldEZpbHRl
cnNgCi0gICogYGRldGVjdGAKLSAgKiBgY29sdW1uc0ZvclR5cGVgCi0gICogYGdldFJlY29yZHNg
Ci0gICogYGdldFJlY29yZENvbHVtblZhbHVlc2AKLSAgKiBgZ2V0UmVjb3JkS2V5d29yZHNgCi0g
ICogYGdldFJlY29yZEZpbHRlclZhbHVlc2AKLSAgKiBgZ2V0UmVjb3JkQ29sb3JgCi0gICogYG9i
c2VydmVSZWNvcmRgCi0KLSAgVGhlIGFkYXB0ZXIgd2lsbCBuZWVkIHRvIGJlIHJlZ2lzdGVyZWQK
LSAgaW4gdGhlIGFwcGxpY2F0aW9uJ3MgY29udGFpbmVyIGFzIGBkYXRhQWRhcHRlcjptYWluYAot
Ci0gIEV4YW1wbGU6Ci0KLSAgYGBgamF2YXNjcmlwdAotICBBcHBsaWNhdGlvbi5pbml0aWFsaXpl
cih7Ci0gICAgbmFtZTogImRhdGFBZGFwdGVyIiwKLQotICAgIGluaXRpYWxpemU6IGZ1bmN0aW9u
KGNvbnRhaW5lciwgYXBwbGljYXRpb24pIHsKLSAgICAgIGFwcGxpY2F0aW9uLnJlZ2lzdGVyKCdk
YXRhQWRhcHRlcjptYWluJywgRFMuRGF0YUFkYXB0ZXIpOwotICAgIH0KLSAgfSk7Ci0gIGBgYAot
Ci0gIEBjbGFzcyBEYXRhQWRhcHRlcgotICBAbmFtZXNwYWNlIEVtYmVyCi0gIEBleHRlbmRzIEVt
YmVyLk9iamVjdAotKi8KLUVtYmVyLkRhdGFBZGFwdGVyID0gRW1iZXIuT2JqZWN0LmV4dGVuZCh7
Ci0gIGluaXQ6IGZ1bmN0aW9uKCkgewotICAgIHRoaXMuX3N1cGVyKCk7Ci0gICAgdGhpcy5yZWxl
YXNlTWV0aG9kcyA9IEVtYmVyLkEoKTsKLSAgfSwKLQotICAvKioKLSAgICBUaGUgY29udGFpbmVy
IG9mIHRoZSBhcHBsaWNhdGlvbiBiZWluZyBkZWJ1Z2dlZC4KLSAgICBUaGlzIHByb3BlcnR5IHdp
bGwgYmUgaW5qZWN0ZWQKLSAgICBvbiBjcmVhdGlvbi4KLQotICAgIEBwcm9wZXJ0eSBjb250YWlu
ZXIKLSAgICBAZGVmYXVsdCBudWxsCi0gICovCi0gIGNvbnRhaW5lcjogbnVsbCwKLQotICAvKioK
LSAgICBOdW1iZXIgb2YgYXR0cmlidXRlcyB0byBzZW5kCi0gICAgYXMgY29sdW1ucy4gKEVub3Vn
aCB0byBtYWtlIHRoZSByZWNvcmQKLSAgICBpZGVudGlmaWFibGUpLgotCi0gICAgQHByaXZhdGUK
LSAgICBAcHJvcGVydHkgYXR0cmlidXRlTGltaXQKLSAgICBAZGVmYXVsdCAzCi0gICovCi0gIGF0
dHJpYnV0ZUxpbWl0OiAzLAotCi0gIC8qKgotICAgIFN0b3JlcyBhbGwgbWV0aG9kcyB0aGF0IGNs
ZWFyIG9ic2VydmVycy4KLSAgICBUaGVzZSBtZXRob2RzIHdpbGwgYmUgY2FsbGVkIG9uIGRlc3Ry
dWN0aW9uLgotCi0gICAgQHByaXZhdGUKLSAgICBAcHJvcGVydHkgcmVsZWFzZU1ldGhvZHMKLSAg
Ki8KLSAgcmVsZWFzZU1ldGhvZHM6IEVtYmVyLkEoKSwKLQotICAvKioKLSAgICBTcGVjaWZpZXMg
aG93IHJlY29yZHMgY2FuIGJlIGZpbHRlcmVkLgotICAgIFJlY29yZHMgcmV0dXJuZWQgd2lsbCBu
ZWVkIHRvIGhhdmUgYSBgZmlsdGVyVmFsdWVzYAotICAgIHByb3BlcnR5IHdpdGggYSBrZXkgZm9y
IGV2ZXJ5IG5hbWUgaW4gdGhlIHJldHVybmVkIGFycmF5LgotCi0gICAgQHB1YmxpYwotICAgIEBt
ZXRob2QgZ2V0RmlsdGVycwotICAgIEByZXR1cm4ge0FycmF5fSBMaXN0IG9mIG9iamVjdHMgZGVm
aW5pbmcgZmlsdGVycy4KLSAgICAgVGhlIG9iamVjdCBzaG91bGQgaGF2ZSBhIGBuYW1lYCBhbmQg
YGRlc2NgIHByb3BlcnR5LgotICAqLwotICBnZXRGaWx0ZXJzOiBmdW5jdGlvbigpIHsKLSAgICBy
ZXR1cm4gRW1iZXIuQSgpOwotICB9LAotCi0gIC8qKgotICAgIEZldGNoIHRoZSBtb2RlbCB0eXBl
cyBhbmQgb2JzZXJ2ZSB0aGVtIGZvciBjaGFuZ2VzLgotCi0gICAgQHB1YmxpYwotICAgIEBtZXRo
b2Qgd2F0Y2hNb2RlbFR5cGVzCi0KLSAgICBAcGFyYW0ge0Z1bmN0aW9ufSB0eXBlc0FkZGVkIENh
bGxiYWNrIHRvIGNhbGwgdG8gYWRkIHR5cGVzLgotICAgIFRha2VzIGFuIGFycmF5IG9mIG9iamVj
dHMgY29udGFpbmluZyB3cmFwcGVkIHR5cGVzIChyZXR1cm5lZCBmcm9tIGB3cmFwTW9kZWxUeXBl
YCkuCi0KLSAgICBAcGFyYW0ge0Z1bmN0aW9ufSB0eXBlc1VwZGF0ZWQgQ2FsbGJhY2sgdG8gY2Fs
bCB3aGVuIGEgdHlwZSBoYXMgY2hhbmdlZC4KLSAgICBUYWtlcyBhbiBhcnJheSBvZiBvYmplY3Rz
IGNvbnRhaW5pbmcgd3JhcHBlZCB0eXBlcy4KLQotICAgIEByZXR1cm4ge0Z1bmN0aW9ufSBNZXRo
b2QgdG8gY2FsbCB0byByZW1vdmUgYWxsIG9ic2VydmVycwotICAqLwotICB3YXRjaE1vZGVsVHlw
ZXM6IGZ1bmN0aW9uKHR5cGVzQWRkZWQsIHR5cGVzVXBkYXRlZCkgewotICAgIHZhciBtb2RlbFR5
cGVzID0gdGhpcy5nZXRNb2RlbFR5cGVzKCksCi0gICAgICAgIHNlbGYgPSB0aGlzLCB0eXBlc1Rv
U2VuZCwgcmVsZWFzZU1ldGhvZHMgPSBFbWJlci5BKCk7Ci0KLSAgICB0eXBlc1RvU2VuZCA9IG1v
ZGVsVHlwZXMubWFwKGZ1bmN0aW9uKHR5cGUpIHsKLSAgICAgIHZhciB3cmFwcGVkID0gc2VsZi53
cmFwTW9kZWxUeXBlKHR5cGUpOwotICAgICAgcmVsZWFzZU1ldGhvZHMucHVzaChzZWxmLm9ic2Vy
dmVNb2RlbFR5cGUodHlwZSwgdHlwZXNVcGRhdGVkKSk7Ci0gICAgICByZXR1cm4gd3JhcHBlZDsK
LSAgICB9KTsKLQotICAgIHR5cGVzQWRkZWQodHlwZXNUb1NlbmQpOwotCi0gICAgdmFyIHJlbGVh
c2UgPSBmdW5jdGlvbigpIHsKLSAgICAgIHJlbGVhc2VNZXRob2RzLmZvckVhY2goZnVuY3Rpb24o
Zm4pIHsgZm4oKTsgfSk7Ci0gICAgICBzZWxmLnJlbGVhc2VNZXRob2RzLnJlbW92ZU9iamVjdChy
ZWxlYXNlKTsKLSAgICB9OwotICAgIHRoaXMucmVsZWFzZU1ldGhvZHMucHVzaE9iamVjdChyZWxl
YXNlKTsKLSAgICByZXR1cm4gcmVsZWFzZTsKLSAgfSwKLQotICAvKioKLSAgICBGZXRjaCB0aGUg
cmVjb3JkcyBvZiBhIGdpdmVuIHR5cGUgYW5kIG9ic2VydmUgdGhlbSBmb3IgY2hhbmdlcy4KLQot
ICAgIEBwdWJsaWMKLSAgICBAbWV0aG9kIHdhdGNoUmVjb3JkcwotCi0gICAgQHBhcmFtIHtGdW5j
dGlvbn0gcmVjb3Jkc0FkZGVkIENhbGxiYWNrIHRvIGNhbGwgdG8gYWRkIHJlY29yZHMuCi0gICAg
VGFrZXMgYW4gYXJyYXkgb2Ygb2JqZWN0cyBjb250YWluaW5nIHdyYXBwZWQgcmVjb3Jkcy4KLSAg
ICBUaGUgb2JqZWN0IHNob3VsZCBoYXZlIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczoKLSAgICAg
IGNvbHVtblZhbHVlczoge09iamVjdH0ga2V5IGFuZCB2YWx1ZSBvZiBhIHRhYmxlIGNlbGwKLSAg
ICAgIG9iamVjdDoge09iamVjdH0gdGhlIGFjdHVhbCByZWNvcmQgb2JqZWN0Ci0KLSAgICBAcGFy
YW0ge0Z1bmN0aW9ufSByZWNvcmRzVXBkYXRlZCBDYWxsYmFjayB0byBjYWxsIHdoZW4gYSByZWNv
cmQgaGFzIGNoYW5nZWQuCi0gICAgVGFrZXMgYW4gYXJyYXkgb2Ygb2JqZWN0cyBjb250YWluaW5n
IHdyYXBwZWQgcmVjb3Jkcy4KLQotICAgIEBwYXJhbSB7RnVuY3Rpb259IHJlY29yZHNSZW1vdmVk
IENhbGxiYWNrIHRvIGNhbGwgd2hlbiBhIHJlY29yZCBoYXMgcmVtb3ZlZC4KLSAgICBUYWtlcyB0
aGUgZm9sbG93aW5nIHBhcmFtZXRlcnM6Ci0gICAgICBpbmRleDogdGhlIGFycmF5IGluZGV4IHdo
ZXJlIHRoZSByZWNvcmRzIHdlcmUgcmVtb3ZlZAotICAgICAgY291bnQ6IHRoZSBudW1iZXIgb2Yg
cmVjb3JkcyByZW1vdmVkCi0KLSAgICBAcmV0dXJuIHtGdW5jdGlvbn0gTWV0aG9kIHRvIGNhbGwg
dG8gcmVtb3ZlIGFsbCBvYnNlcnZlcnMKLSAgKi8KLSAgd2F0Y2hSZWNvcmRzOiBmdW5jdGlvbih0
eXBlLCByZWNvcmRzQWRkZWQsIHJlY29yZHNVcGRhdGVkLCByZWNvcmRzUmVtb3ZlZCkgewotICAg
IHZhciBzZWxmID0gdGhpcywgcmVsZWFzZU1ldGhvZHMgPSBFbWJlci5BKCksIHJlY29yZHMgPSB0
aGlzLmdldFJlY29yZHModHlwZSksIHJlbGVhc2U7Ci0KLSAgICB2YXIgcmVjb3JkVXBkYXRlZCA9
IGZ1bmN0aW9uKHVwZGF0ZWRSZWNvcmQpIHsKLSAgICAgIHJlY29yZHNVcGRhdGVkKFt1cGRhdGVk
UmVjb3JkXSk7Ci0gICAgfTsKLQotICAgIHZhciByZWNvcmRzVG9TZW5kID0gcmVjb3Jkcy5tYXAo
ZnVuY3Rpb24ocmVjb3JkKSB7Ci0gICAgICByZWxlYXNlTWV0aG9kcy5wdXNoKHNlbGYub2JzZXJ2
ZVJlY29yZChyZWNvcmQsIHJlY29yZFVwZGF0ZWQpKTsKLSAgICAgIHJldHVybiBzZWxmLndyYXBS
ZWNvcmQocmVjb3JkKTsKLSAgICB9KTsKLQotCi0gICAgdmFyIGNvbnRlbnREaWRDaGFuZ2UgPSBm
dW5jdGlvbihhcnJheSwgaWR4LCByZW1vdmVkQ291bnQsIGFkZGVkQ291bnQpIHsKLSAgICAgIGZv
ciAodmFyIGkgPSBpZHg7IGkgPCBpZHggKyBhZGRlZENvdW50OyBpKyspIHsKLSAgICAgICAgdmFy
IHJlY29yZCA9IGFycmF5Lm9iamVjdEF0KGkpOwotICAgICAgICB2YXIgd3JhcHBlZCA9IHNlbGYu
d3JhcFJlY29yZChyZWNvcmQpOwotICAgICAgICByZWxlYXNlTWV0aG9kcy5wdXNoKHNlbGYub2Jz
ZXJ2ZVJlY29yZChyZWNvcmQsIHJlY29yZFVwZGF0ZWQpKTsKLSAgICAgICAgcmVjb3Jkc0FkZGVk
KFt3cmFwcGVkXSk7Ci0gICAgICB9Ci0KLSAgICAgIGlmIChyZW1vdmVkQ291bnQpIHsKLSAgICAg
ICAgcmVjb3Jkc1JlbW92ZWQoaWR4LCByZW1vdmVkQ291bnQpOwotICAgICAgfQotICAgIH07Ci0K
LSAgICB2YXIgb2JzZXJ2ZXIgPSB7IGRpZENoYW5nZTogY29udGVudERpZENoYW5nZSwgd2lsbENo
YW5nZTogRW1iZXIuSyB9OwotICAgIHJlY29yZHMuYWRkQXJyYXlPYnNlcnZlcihzZWxmLCBvYnNl
cnZlcik7Ci0KLSAgICByZWxlYXNlID0gZnVuY3Rpb24oKSB7Ci0gICAgICByZWxlYXNlTWV0aG9k
cy5mb3JFYWNoKGZ1bmN0aW9uKGZuKSB7IGZuKCk7IH0pOwotICAgICAgcmVjb3Jkcy5yZW1vdmVB
cnJheU9ic2VydmVyKHNlbGYsIG9ic2VydmVyKTsKLSAgICAgIHNlbGYucmVsZWFzZU1ldGhvZHMu
cmVtb3ZlT2JqZWN0KHJlbGVhc2UpOwotICAgIH07Ci0KLSAgICByZWNvcmRzQWRkZWQocmVjb3Jk
c1RvU2VuZCk7Ci0KLSAgICB0aGlzLnJlbGVhc2VNZXRob2RzLnB1c2hPYmplY3QocmVsZWFzZSk7
Ci0gICAgcmV0dXJuIHJlbGVhc2U7Ci0gIH0sCi0KLSAgLyoqCi0gICAgQ2xlYXIgYWxsIG9ic2Vy
dmVycyBiZWZvcmUgZGVzdHJ1Y3Rpb24KLSAgICBAcHJpdmF0ZQotICAqLwotICB3aWxsRGVzdHJv
eTogZnVuY3Rpb24oKSB7Ci0gICAgdGhpcy5fc3VwZXIoKTsKLSAgICB0aGlzLnJlbGVhc2VNZXRo
b2RzLmZvckVhY2goZnVuY3Rpb24oZm4pIHsKLSAgICAgIGZuKCk7Ci0gICAgfSk7Ci0gIH0sCi0K
LSAgLyoqCi0gICAgRGV0ZWN0IHdoZXRoZXIgYSBjbGFzcyBpcyBhIG1vZGVsLgotCi0gICAgVGVz
dCB0aGF0IGFnYWluc3QgdGhlIG1vZGVsIGNsYXNzCi0gICAgb2YgeW91ciBwZXJzaXN0ZW5jZSBs
aWJyYXJ5Ci0KLSAgICBAcHJpdmF0ZQotICAgIEBtZXRob2QgZGV0ZWN0Ci0gICAgQHBhcmFtIHtD
bGFzc30ga2xhc3MgVGhlIGNsYXNzIHRvIHRlc3QKLSAgICBAcmV0dXJuIGJvb2xlYW4gV2hldGhl
ciB0aGUgY2xhc3MgaXMgYSBtb2RlbCBjbGFzcyBvciBub3QKLSAgKi8KLSAgZGV0ZWN0OiBmdW5j
dGlvbihrbGFzcykgewotICAgIHJldHVybiBmYWxzZTsKLSAgfSwKLQotICAvKioKLSAgICBHZXQg
dGhlIGNvbHVtbnMgZm9yIGEgZ2l2ZW4gbW9kZWwgdHlwZS4KLQotICAgIEBwcml2YXRlCi0gICAg
QG1ldGhvZCBjb2x1bW5zRm9yVHlwZQotICAgIEBwYXJhbSB7Q2xhc3N9IHR5cGUgVGhlIG1vZGVs
IHR5cGUKLSAgICBAcmV0dXJuIHtBcnJheX0gQW4gYXJyYXkgb2YgY29sdW1ucyBvZiB0aGUgZm9s
bG93aW5nIGZvcm1hdDoKLSAgICAgbmFtZToge1N0cmluZ30gbmFtZSBvZiB0aGUgY29sdW1uCi0g
ICAgIGRlc2M6IHtTdHJpbmd9IEh1bWFuaXplZCBkZXNjcmlwdGlvbiAod2hhdCB3b3VsZCBzaG93
IGluIGEgdGFibGUgY29sdW1uIG5hbWUpCi0gICovCi0gIGNvbHVtbnNGb3JUeXBlOiBmdW5jdGlv
bih0eXBlKSB7Ci0gICAgcmV0dXJuIEVtYmVyLkEoKTsKLSAgfSwKLQotICAvKioKLSAgICBBZGRz
IG9ic2VydmVycyB0byBhIG1vZGVsIHR5cGUgY2xhc3MuCi0KLSAgICBAcHJpdmF0ZQotICAgIEBt
ZXRob2Qgb2JzZXJ2ZU1vZGVsVHlwZQotICAgIEBwYXJhbSB7Q2xhc3N9IHR5cGUgVGhlIG1vZGVs
IHR5cGUgY2xhc3MKLSAgICBAcGFyYW0ge0Z1bmN0aW9ufSB0eXBlc1VwZGF0ZWQgQ2FsbGVkIHdo
ZW4gYSB0eXBlIGlzIG1vZGlmaWVkLgotICAgIEByZXR1cm4ge0Z1bmN0aW9ufSBUaGUgZnVuY3Rp
b24gdG8gY2FsbCB0byByZW1vdmUgb2JzZXJ2ZXJzCi0gICovCi0KLSAgb2JzZXJ2ZU1vZGVsVHlw
ZTogZnVuY3Rpb24odHlwZSwgdHlwZXNVcGRhdGVkKSB7Ci0gICAgdmFyIHNlbGYgPSB0aGlzLCBy
ZWNvcmRzID0gdGhpcy5nZXRSZWNvcmRzKHR5cGUpOwotCi0gICAgdmFyIG9uQ2hhbmdlID0gZnVu
Y3Rpb24oKSB7Ci0gICAgICB0eXBlc1VwZGF0ZWQoW3NlbGYud3JhcE1vZGVsVHlwZSh0eXBlKV0p
OwotICAgIH07Ci0gICAgdmFyIG9ic2VydmVyID0gewotICAgICAgZGlkQ2hhbmdlOiBmdW5jdGlv
bigpIHsKLSAgICAgICAgRW1iZXIucnVuLnNjaGVkdWxlT25jZSgnYWN0aW9ucycsIHRoaXMsIG9u
Q2hhbmdlKTsKLSAgICAgIH0sCi0gICAgICB3aWxsQ2hhbmdlOiBFbWJlci5LCi0gICAgfTsKLQot
ICAgIHJlY29yZHMuYWRkQXJyYXlPYnNlcnZlcih0aGlzLCBvYnNlcnZlcik7Ci0KLSAgICB2YXIg
cmVsZWFzZSA9IGZ1bmN0aW9uKCkgewotICAgICAgcmVjb3Jkcy5yZW1vdmVBcnJheU9ic2VydmVy
KHNlbGYsIG9ic2VydmVyKTsKLSAgICB9OwotCi0gICAgcmV0dXJuIHJlbGVhc2U7Ci0gIH0sCi0K
LQotICAvKioKLSAgICBXcmFwcyBhIGdpdmVuIG1vZGVsIHR5cGUgYW5kIG9ic2VydmVzIGNoYW5n
ZXMgdG8gaXQuCi0KLSAgICBAcHJpdmF0ZQotICAgIEBtZXRob2Qgd3JhcE1vZGVsVHlwZQotICAg
IEBwYXJhbSB7Q2xhc3N9IHR5cGUgQSBtb2RlbCBjbGFzcwotICAgIEBwYXJhbSB7RnVuY3Rpb259
IHR5cGVzVXBkYXRlZCBjYWxsYmFjayB0byBjYWxsIHdoZW4gdGhlIHR5cGUgY2hhbmdlcwotICAg
IEByZXR1cm4ge09iamVjdH0gY29udGFpbnMgdGhlIHdyYXBwZWQgdHlwZSBhbmQgdGhlIGZ1bmN0
aW9uIHRvIHJlbW92ZSBvYnNlcnZlcnMKLSAgICBGb3JtYXQ6Ci0gICAgICB0eXBlOiB7T2JqZWN0
fSB0aGUgd3JhcHBlZCB0eXBlCi0gICAgICAgIFRoZSB3cmFwcGVkIHR5cGUgaGFzIHRoZSBmb2xs
b3dpbmcgZm9ybWF0OgotICAgICAgICAgIG5hbWU6IHtTdHJpbmd9IG5hbWUgb2YgdGhlIHR5cGUK
LSAgICAgICAgICBjb3VudDoge0ludGVnZXJ9IG51bWJlciBvZiByZWNvcmRzIGF2YWlsYWJsZQot
ICAgICAgICAgIGNvbHVtbnM6IHtDb2x1bW5zfSBhcnJheSBvZiBjb2x1bW5zIHRvIGRlc2NyaWJl
IHRoZSByZWNvcmQKLSAgICAgICAgICBvYmplY3Q6IHtDbGFzc30gdGhlIGFjdHVhbCBNb2RlbCB0
eXBlIGNsYXNzCi0gICAgICByZWxlYXNlOiB7RnVuY3Rpb259IFRoZSBmdW5jdGlvbiB0byByZW1v
dmUgb2JzZXJ2ZXJzCi0gICovCi0gIHdyYXBNb2RlbFR5cGU6IGZ1bmN0aW9uKHR5cGUsIHR5cGVz
VXBkYXRlZCkgewotICAgIHZhciByZWxlYXNlLCByZWNvcmRzID0gdGhpcy5nZXRSZWNvcmRzKHR5
cGUpLAotICAgICAgICB0eXBlVG9TZW5kLCBzZWxmID0gdGhpczsKLQotICAgIHR5cGVUb1NlbmQg
PSB7Ci0gICAgICBuYW1lOiB0eXBlLnRvU3RyaW5nKCksCi0gICAgICBjb3VudDogRW1iZXIuZ2V0
KHJlY29yZHMsICdsZW5ndGgnKSwKLSAgICAgIGNvbHVtbnM6IHRoaXMuY29sdW1uc0ZvclR5cGUo
dHlwZSksCi0gICAgICBvYmplY3Q6IHR5cGUKLSAgICB9OwotCi0KLSAgICByZXR1cm4gdHlwZVRv
U2VuZDsKLSAgfSwKLQotCi0gIC8qKgotICAgIEZldGNoZXMgYWxsIG1vZGVscyBkZWZpbmVkIGlu
IHRoZSBhcHBsaWNhdGlvbi4KLQotICAgIEBwcml2YXRlCi0gICAgQG1ldGhvZCBnZXRNb2RlbFR5
cGVzCi0gICAgQHJldHVybiB7QXJyYXl9IEFycmF5IG9mIG1vZGVsIHR5cGVzCi0gICovCi0KLSAv
LyBUT0RPOiBVc2UgdGhlIHJlc29sdmVyIGluc3RlYWQgb2YgbG9vcGluZyBvdmVyIG5hbWVzcGFj
ZXMuCi0gIGdldE1vZGVsVHlwZXM6IGZ1bmN0aW9uKCkgewotICAgIHZhciBuYW1lc3BhY2VzID0g
RW1iZXIuQShFbWJlci5OYW1lc3BhY2UuTkFNRVNQQUNFUyksIHR5cGVzID0gRW1iZXIuQSgpLCBz
ZWxmID0gdGhpczsKLQotICAgIG5hbWVzcGFjZXMuZm9yRWFjaChmdW5jdGlvbihuYW1lc3BhY2Up
IHsKLSAgICAgIGZvciAodmFyIGtleSBpbiBuYW1lc3BhY2UpIHsKLSAgICAgICAgaWYgKCFuYW1l
c3BhY2UuaGFzT3duUHJvcGVydHkoa2V5KSkgeyBjb250aW51ZTsgfQotICAgICAgICB2YXIga2xh
c3MgPSBuYW1lc3BhY2Vba2V5XTsKLSAgICAgICAgaWYgKHNlbGYuZGV0ZWN0KGtsYXNzKSkgewot
ICAgICAgICAgIHR5cGVzLnB1c2goa2xhc3MpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfSk7
Ci0gICAgcmV0dXJuIHR5cGVzOwotICB9LAotCi0gIC8qKgotICAgIEZldGNoZXMgYWxsIGxvYWRl
ZCByZWNvcmRzIGZvciBhIGdpdmVuIHR5cGUuCi0KLSAgICBAcHJpdmF0ZQotICAgIEBtZXRob2Qg
Z2V0UmVjb3JkcwotICAgIEByZXR1cm4ge0FycmF5fSBBbiBhcnJheSBvZiByZWNvcmRzLgotICAg
ICBUaGlzIGFycmF5IHdpbGwgYmUgb2JzZXJ2ZWQgZm9yIGNoYW5nZXMsCi0gICAgIHNvIGl0IHNo
b3VsZCB1cGRhdGUgd2hlbiBuZXcgcmVjb3JkcyBhcmUgYWRkZWQvcmVtb3ZlZC4KLSAgKi8KLSAg
Z2V0UmVjb3JkczogZnVuY3Rpb24odHlwZSkgewotICAgIHJldHVybiBFbWJlci5BKCk7Ci0gIH0s
Ci0KLSAgLyoqCi0gICAgV3JhcHMgYSByZWNvcmQgYW5kIG9ic2VydmVycyBjaGFuZ2VzIHRvIGl0
LgotCi0gICAgQHByaXZhdGUKLSAgICBAbWV0aG9kIHdyYXBSZWNvcmQKLSAgICBAcGFyYW0ge09i
amVjdH0gcmVjb3JkIFRoZSByZWNvcmQgaW5zdGFuY2UuCi0gICAgQHJldHVybiB7T2JqZWN0fSBU
aGUgd3JhcHBlZCByZWNvcmQuIEZvcm1hdDoKLSAgICBjb2x1bW5WYWx1ZXM6IHtBcnJheX0KLSAg
ICBzZWFyY2hLZXl3b3Jkczoge0FycmF5fQotICAqLwotICB3cmFwUmVjb3JkOiBmdW5jdGlvbihy
ZWNvcmQpIHsKLSAgICB2YXIgcmVjb3JkVG9TZW5kID0geyBvYmplY3Q6IHJlY29yZCB9LCBjb2x1
bW5WYWx1ZXMgPSB7fSwgc2VsZiA9IHRoaXM7Ci0KLSAgICByZWNvcmRUb1NlbmQuY29sdW1uVmFs
dWVzID0gdGhpcy5nZXRSZWNvcmRDb2x1bW5WYWx1ZXMocmVjb3JkKTsKLSAgICByZWNvcmRUb1Nl
bmQuc2VhcmNoS2V5d29yZHMgPSB0aGlzLmdldFJlY29yZEtleXdvcmRzKHJlY29yZCk7Ci0gICAg
cmVjb3JkVG9TZW5kLmZpbHRlclZhbHVlcyA9IHRoaXMuZ2V0UmVjb3JkRmlsdGVyVmFsdWVzKHJl
Y29yZCk7Ci0gICAgcmVjb3JkVG9TZW5kLmNvbG9yID0gdGhpcy5nZXRSZWNvcmRDb2xvcihyZWNv
cmQpOwotCi0gICAgcmV0dXJuIHJlY29yZFRvU2VuZDsKLSAgfSwKLQotICAvKioKLSAgICBHZXRz
IHRoZSB2YWx1ZXMgZm9yIGVhY2ggY29sdW1uLgotCi0gICAgQHByaXZhdGUKLSAgICBAbWV0aG9k
IGdldFJlY29yZENvbHVtblZhbHVlcwotICAgIEByZXR1cm4ge09iamVjdH0gS2V5cyBzaG91bGQg
bWF0Y2ggY29sdW1uIG5hbWVzIGRlZmluZWQKLSAgICBieSB0aGUgbW9kZWwgdHlwZS4KLSAgKi8K
LSAgZ2V0UmVjb3JkQ29sdW1uVmFsdWVzOiBmdW5jdGlvbihyZWNvcmQpIHsKLSAgICByZXR1cm4g
e307Ci0gIH0sCi0KLSAgLyoqCi0gICAgUmV0dXJucyBrZXl3b3JkcyB0byBtYXRjaCB3aGVuIHNl
YXJjaGluZyByZWNvcmRzLgotCi0gICAgQHByaXZhdGUKLSAgICBAbWV0aG9kIGdldFJlY29yZEtl
eXdvcmRzCi0gICAgQHJldHVybiB7QXJyYXl9IFJlbGV2YW50IGtleXdvcmRzIGZvciBzZWFyY2gu
Ci0gICovCi0gIGdldFJlY29yZEtleXdvcmRzOiBmdW5jdGlvbihyZWNvcmQpIHsKLSAgICByZXR1
cm4gRW1iZXIuQSgpOwotICB9LAotCi0gIC8qKgotICAgIFJldHVybnMgdGhlIHZhbHVlcyBvZiBm
aWx0ZXJzIGRlZmluZWQgYnkgYGdldEZpbHRlcnNgLgotCi0gICAgQHByaXZhdGUKLSAgICBAbWV0
aG9kIGdldFJlY29yZEZpbHRlclZhbHVlcwotICAgIEBwYXJhbSB7T2JqZWN0fSByZWNvcmQgVGhl
IHJlY29yZCBpbnN0YW5jZQotICAgIEByZXR1cm4ge09iamVjdH0gVGhlIGZpbHRlciB2YWx1ZXMK
LSAgKi8KLSAgZ2V0UmVjb3JkRmlsdGVyVmFsdWVzOiBmdW5jdGlvbihyZWNvcmQpIHsKLSAgICBy
ZXR1cm4ge307Ci0gIH0sCi0KLSAgLyoqCi0gICAgRWFjaCByZWNvcmQgY2FuIGhhdmUgYSBjb2xv
ciB0aGF0IHJlcHJlc2VudHMgaXRzIHN0YXRlLgotCi0gICAgQHByaXZhdGUKLSAgICBAbWV0aG9k
IGdldFJlY29yZENvbG9yCi0gICAgQHBhcmFtIHtPYmplY3R9IHJlY29yZCBUaGUgcmVjb3JkIGlu
c3RhbmNlCi0gICAgQHJldHVybiB7U3RyaW5nfSBUaGUgcmVjb3JkJ3MgY29sb3IKLSAgICAgIFBv
c3NpYmxlIG9wdGlvbnM6IGJsYWNrLCByZWQsIGJsdWUsIGdyZWVuCi0gICovCi0gIGdldFJlY29y
ZENvbG9yOiBmdW5jdGlvbihyZWNvcmQpIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfSwKLQotICAv
KioKLSAgICBPYnNlcnZlcyBhbGwgcmVsZXZhbnQgcHJvcGVydGllcyBhbmQgcmUtc2VuZHMgdGhl
IHdyYXBwZWQgcmVjb3JkCi0gICAgd2hlbiBhIGNoYW5nZSBvY2N1cnMuCi0KLSAgICBAcHJpdmF0
ZQotICAgIEBtZXRob2Qgb2JzZXJ2ZXJSZWNvcmQKLSAgICBAcGFyYW0ge09iamVjdH0gcmVjb3Jk
IFRoZSByZWNvcmQgaW5zdGFuY2UKLSAgICBAcGFyYW0ge0Z1bmN0aW9ufSByZWNvcmRVcGRhdGVk
IFRoZSBjYWxsYmFjayB0byBjYWxsIHdoZW4gYSByZWNvcmQgaXMgdXBkYXRlZC4KLSAgICBAcmV0
dXJuIHtGdW5jdGlvbn0gVGhlIGZ1bmN0aW9uIHRvIGNhbGwgdG8gcmVtb3ZlIGFsbCBvYnNlcnZl
cnMuCi0gICovCi0gIG9ic2VydmVSZWNvcmQ6IGZ1bmN0aW9uKHJlY29yZCwgcmVjb3JkVXBkYXRl
ZCkgewotICAgIHJldHVybiBmdW5jdGlvbigpe307Ci0gIH0KLQotfSk7Ci0KLQotfSkoKTsKLQot
Ci0KLShmdW5jdGlvbigpIHsKLS8qKgotRW1iZXIgRXh0ZW5zaW9uIFN1cHBvcnQKLQotQG1vZHVs
ZSBlbWJlcgotQHN1Ym1vZHVsZSBlbWJlci1leHRlbnNpb24tc3VwcG9ydAotQHJlcXVpcmVzIGVt
YmVyLWFwcGxpY2F0aW9uCi0qLwotCi19KSgpOwotCi0oZnVuY3Rpb24oKSB7Ci0vKioKLSAgQG1v
ZHVsZSBlbWJlcgotICBAc3VibW9kdWxlIGVtYmVyLXRlc3RpbmcKLSAqLwotdmFyIHNsaWNlID0g
W10uc2xpY2UsCi0gICAgaGVscGVycyA9IHt9LAotICAgIGluamVjdEhlbHBlcnNDYWxsYmFja3Mg
PSBbXTsKLQotLyoqCi0gIFRoaXMgaXMgYSBjb250YWluZXIgZm9yIGFuIGFzc29ydG1lbnQgb2Yg
dGVzdGluZyByZWxhdGVkIGZ1bmN0aW9uYWxpdHk6Ci0KLSAgKiBDaG9vc2UgeW91ciBkZWZhdWx0
IHRlc3QgYWRhcHRlciAoZm9yIHlvdXIgZnJhbWV3b3JrIG9mIGNob2ljZSkuCi0gICogUmVnaXN0
ZXIvVW5yZWdpc3RlciBhZGRpdGlvbmFsIHRlc3QgaGVscGVycy4KLSAgKiBTZXR1cCBjYWxsYmFj
a3MgdG8gYmUgZmlyZWQgd2hlbiB0aGUgdGVzdCBoZWxwZXJzIGFyZSBpbmplY3RlZCBpbnRvCi0g
ICAgeW91ciBhcHBsaWNhdGlvbi4KLQotICBAY2xhc3MgVGVzdAotICBAbmFtZXNwYWNlIEVtYmVy
Ci0qLwotRW1iZXIuVGVzdCA9IHsKLQotICAvKioKLSAgICBgcmVnaXN0ZXJIZWxwZXJgIGlzIHVz
ZWQgdG8gcmVnaXN0ZXIgYSB0ZXN0IGhlbHBlciB0aGF0IHdpbGwgYmUgaW5qZWN0ZWQKLSAgICB3
aGVuIGBBcHAuaW5qZWN0VGVzdEhlbHBlcnNgIGlzIGNhbGxlZC4KLQotICAgIFRoZSBoZWxwZXIg
bWV0aG9kIHdpbGwgYWx3YXlzIGJlIGNhbGxlZCB3aXRoIHRoZSBjdXJyZW50IEFwcGxpY2F0aW9u
IGFzCi0gICAgdGhlIGZpcnN0IHBhcmFtZXRlci4KLQotICAgIEZvciBleGFtcGxlOgotCi0gICAg
YGBgamF2YXNjcmlwdAotICAgIEVtYmVyLlRlc3QucmVnaXN0ZXJIZWxwZXIoJ2Jvb3QnLCBmdW5j
dGlvbihhcHApIHsKLSAgICAgIEVtYmVyLnJ1bihhcHAsIGFwcC5hZHZhbmNlUmVhZGluZXNzKTsK
LSAgICB9KTsKLSAgICBgYGAKLQotICAgIFRoaXMgaGVscGVyIGNhbiBsYXRlciBiZSBjYWxsZWQg
d2l0aG91dCBhcmd1bWVudHMgYmVjYXVzZSBpdCB3aWxsIGJlCi0gICAgY2FsbGVkIHdpdGggYGFw
cGAgYXMgdGhlIGZpcnN0IHBhcmFtZXRlci4KLQotICAgIGBgYGphdmFzY3JpcHQKLSAgICBBcHAg
PSBFbWJlci5BcHBsaWNhdGlvbi5jcmVhdGUoKTsKLSAgICBBcHAuaW5qZWN0VGVzdEhlbHBlcnMo
KTsKLSAgICBib290KCk7Ci0gICAgYGBgCi0KLSAgICBAcHVibGljCi0gICAgQG1ldGhvZCByZWdp
c3RlckhlbHBlcgotICAgIEBwYXJhbSB7U3RyaW5nfSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBoZWxw
ZXIgbWV0aG9kIHRvIGFkZC4KLSAgICBAcGFyYW0ge0Z1bmN0aW9ufSBoZWxwZXJNZXRob2QKLSAg
ICBAcGFyYW0gb3B0aW9ucyB7T2JqZWN0fQotICAqLwotICByZWdpc3RlckhlbHBlcjogZnVuY3Rp
b24obmFtZSwgaGVscGVyTWV0aG9kKSB7Ci0gICAgaGVscGVyc1tuYW1lXSA9IHsKLSAgICAgIG1l
dGhvZDogaGVscGVyTWV0aG9kLAotICAgICAgbWV0YTogeyB3YWl0OiBmYWxzZSB9Ci0gICAgfTsK
LSAgfSwKLQotICAvKioKLSAgICBgcmVnaXN0ZXJBc3luY0hlbHBlcmAgaXMgdXNlZCB0byByZWdp
c3RlciBhbiBhc3luYyB0ZXN0IGhlbHBlciB0aGF0IHdpbGwgYmUgaW5qZWN0ZWQKLSAgICB3aGVu
IGBBcHAuaW5qZWN0VGVzdEhlbHBlcnNgIGlzIGNhbGxlZC4KLQotICAgIFRoZSBoZWxwZXIgbWV0
aG9kIHdpbGwgYWx3YXlzIGJlIGNhbGxlZCB3aXRoIHRoZSBjdXJyZW50IEFwcGxpY2F0aW9uIGFz
Ci0gICAgdGhlIGZpcnN0IHBhcmFtZXRlci4KLQotICAgIEZvciBleGFtcGxlOgotCi0gICAgYGBg
amF2YXNjcmlwdAotICAgIEVtYmVyLlRlc3QucmVnaXN0ZXJBc3luY0hlbHBlcignYm9vdCcsIGZ1
bmN0aW9uKGFwcCkgewotICAgICAgRW1iZXIucnVuKGFwcCwgYXBwLmFkdmFuY2VSZWFkaW5lc3Mp
OwotICAgIH0pOwotICAgIGBgYAotCi0gICAgVGhlIGFkdmFudGFnZSBvZiBhbiBhc3luYyBoZWxw
ZXIgaXMgdGhhdCBpdCB3aWxsIG5vdCBydW4KLSAgICB1bnRpbCB0aGUgbGFzdCBhc3luYyBoZWxw
ZXIgaGFzIGNvbXBsZXRlZC4gIEFsbCBhc3luYyBoZWxwZXJzCi0gICAgYWZ0ZXIgaXQgd2lsbCB3
YWl0IGZvciBpdCBjb21wbGV0ZSBiZWZvcmUgcnVubmluZy4KLQotCi0gICAgRm9yIGV4YW1wbGU6
Ci0KLSAgICBgYGBqYXZhc2NyaXB0Ci0gICAgRW1iZXIuVGVzdC5yZWdpc3RlckFzeW5jSGVscGVy
KCdkZWxldGVQb3N0JywgZnVuY3Rpb24oYXBwLCBwb3N0SWQpIHsKLSAgICAgIGNsaWNrKCcuZGVs
ZXRlLScgKyBwb3N0SWQpOwotICAgIH0pOwotCi0gICAgLy8gLi4uIGluIHlvdXIgdGVzdAotICAg
IHZpc2l0KCcvcG9zdC8yJyk7Ci0gICAgZGVsZXRlUG9zdCgyKTsKLSAgICB2aXNpdCgnL3Bvc3Qv
MycpOwotICAgIGRlbGV0ZVBvc3QoMyk7Ci0gICAgYGBgCi0KLSAgICBAcHVibGljCi0gICAgQG1l
dGhvZCByZWdpc3RlckFzeW5jSGVscGVyCi0gICAgQHBhcmFtIHtTdHJpbmd9IG5hbWUgVGhlIG5h
bWUgb2YgdGhlIGhlbHBlciBtZXRob2QgdG8gYWRkLgotICAgIEBwYXJhbSB7RnVuY3Rpb259IGhl
bHBlck1ldGhvZAotICAqLwotICByZWdpc3RlckFzeW5jSGVscGVyOiBmdW5jdGlvbihuYW1lLCBo
ZWxwZXJNZXRob2QpIHsKLSAgICBoZWxwZXJzW25hbWVdID0gewotICAgICAgbWV0aG9kOiBoZWxw
ZXJNZXRob2QsCi0gICAgICBtZXRhOiB7IHdhaXQ6IHRydWUgfQotICAgIH07Ci0gIH0sCi0KLSAg
LyoqCi0gICAgUmVtb3ZlIGEgcHJldmlvdXNseSBhZGRlZCBoZWxwZXIgbWV0aG9kLgotCi0gICAg
RXhhbXBsZToKLQotICAgIGBgYAotICAgIEVtYmVyLlRlc3QudW5yZWdpc3RlckhlbHBlcignd2Fp
dCcpOwotICAgIGBgYAotCi0gICAgQHB1YmxpYwotICAgIEBtZXRob2QgdW5yZWdpc3RlckhlbHBl
cgotICAgIEBwYXJhbSB7U3RyaW5nfSBuYW1lIFRoZSBoZWxwZXIgdG8gcmVtb3ZlLgotICAqLwot
ICB1bnJlZ2lzdGVySGVscGVyOiBmdW5jdGlvbihuYW1lKSB7Ci0gICAgZGVsZXRlIGhlbHBlcnNb
bmFtZV07Ci0gICAgZGVsZXRlIEVtYmVyLlRlc3QuUHJvbWlzZS5wcm90b3R5cGVbbmFtZV07Ci0g
IH0sCi0KLSAgLyoqCi0gICAgVXNlZCB0byByZWdpc3RlciBjYWxsYmFja3MgdG8gYmUgZmlyZWQg
d2hlbmV2ZXIgYEFwcC5pbmplY3RUZXN0SGVscGVyc2AKLSAgICBpcyBjYWxsZWQuCi0KLSAgICBU
aGUgY2FsbGJhY2sgd2lsbCByZWNlaXZlIHRoZSBjdXJyZW50IGFwcGxpY2F0aW9uIGFzIGFuIGFy
Z3VtZW50LgotCi0gICAgRXhhbXBsZToKLSAgICBgYGAKLSAgICBFbWJlci5UZXN0Lm9uSW5qZWN0
SGVscGVycyhmdW5jdGlvbigpIHsKLSAgICAgIEVtYmVyLiQoZG9jdW1lbnQpLmFqYXhTdGFydChm
dW5jdGlvbigpIHsKLSAgICAgICAgVGVzdC5wZW5kaW5nQWpheFJlcXVlc3RzKys7Ci0gICAgICB9
KTsKLQotICAgICAgRW1iZXIuJChkb2N1bWVudCkuYWpheFN0b3AoZnVuY3Rpb24oKSB7Ci0gICAg
ICAgIFRlc3QucGVuZGluZ0FqYXhSZXF1ZXN0cy0tOwotICAgICAgfSk7Ci0gICAgfSk7Ci0gICAg
YGBgCi0KLSAgICBAcHVibGljCi0gICAgQG1ldGhvZCBvbkluamVjdEhlbHBlcnMKLSAgICBAcGFy
YW0ge0Z1bmN0aW9ufSBjYWxsYmFjayBUaGUgZnVuY3Rpb24gdG8gYmUgY2FsbGVkLgotICAqLwot
ICBvbkluamVjdEhlbHBlcnM6IGZ1bmN0aW9uKGNhbGxiYWNrKSB7Ci0gICAgaW5qZWN0SGVscGVy
c0NhbGxiYWNrcy5wdXNoKGNhbGxiYWNrKTsKLSAgfSwKLQotICAvKioKLSAgICBUaGlzIHJldHVy
bnMgYSB0aGVuYWJsZSB0YWlsb3JlZCBmb3IgdGVzdGluZy4gIEl0IGNhdGNoZXMgZmFpbGVkCi0g
ICAgYG9uU3VjY2Vzc2AgY2FsbGJhY2tzIGFuZCBpbnZva2VzIHRoZSBgRW1iZXIuVGVzdC5hZGFw
dGVyLmV4Y2VwdGlvbmAKLSAgICBjYWxsYmFjayBpbiB0aGUgbGFzdCBjaGFpbmVkIHRoZW4uCi0K
LSAgICBUaGlzIG1ldGhvZCBzaG91bGQgYmUgcmV0dXJuZWQgYnkgYXN5bmMgaGVscGVycyBzdWNo
IGFzIGB3YWl0YC4KLQotICAgIEBwdWJsaWMKLSAgICBAbWV0aG9kIHByb21pc2UKLSAgICBAcGFy
YW0ge0Z1bmN0aW9ufSByZXNvbHZlciBUaGUgZnVuY3Rpb24gdXNlZCB0byByZXNvbHZlIHRoZSBw
cm9taXNlLgotICAqLwotICBwcm9taXNlOiBmdW5jdGlvbihyZXNvbHZlcikgewotICAgIHJldHVy
biBuZXcgRW1iZXIuVGVzdC5Qcm9taXNlKHJlc29sdmVyKTsKLSAgfSwKLQotICAvKioKLSAgIFVz
ZWQgdG8gYWxsb3cgZW1iZXItdGVzdGluZyB0byBjb21tdW5pY2F0ZSB3aXRoIGEgc3BlY2lmaWMg
dGVzdGluZwotICAgZnJhbWV3b3JrLgotCi0gICBZb3UgY2FuIG1hbnVhbGx5IHNldCBpdCBiZWZv
cmUgY2FsbGluZyBgQXBwLnNldHVwRm9yVGVzdGluZygpYC4KLQotICAgRXhhbXBsZToKLQotICAg
YGBgCi0gICBFbWJlci5UZXN0LmFkYXB0ZXIgPSBNeUN1c3RvbUFkYXB0ZXIuY3JlYXRlKCkKLSAg
IGBgYAotCi0gICBJZiB5b3UgZG8gbm90IHNldCBpdCwgZW1iZXItdGVzdGluZyB3aWxsIGRlZmF1
bHQgdG8gYEVtYmVyLlRlc3QuUVVuaXRBZGFwdGVyYC4KLQotICAgQHB1YmxpYwotICAgQHByb3Bl
cnR5IGFkYXB0ZXIKLSAgIEB0eXBlIHtDbGFzc30gVGhlIGFkYXB0ZXIgdG8gYmUgdXNlZC4KLSAg
IEBkZWZhdWx0IEVtYmVyLlRlc3QuUVVuaXRBZGFwdGVyCi0gICovCi0gIGFkYXB0ZXI6IG51bGws
Ci0KLSAgLyoqCi0gICAgUmVwbGFjZW1lbnQgZm9yIGBFbWJlci5SU1ZQLnJlc29sdmVgCi0gICAg
VGhlIG9ubHkgZGlmZmVyZW5jZSBpcyB0aGlzIHVzZXMKLSAgICBhbmQgaW5zdGFuY2Ugb2YgYEVt
YmVyLlRlc3QuUHJvbWlzZWAKLQotICAgIEBwdWJsaWMKLSAgICBAbWV0aG9kIHJlc29sdmUKLSAg
ICBAcGFyYW0ge01peGVkfSBUaGUgdmFsdWUgdG8gcmVzb2x2ZQotICAqLwotICByZXNvbHZlOiBm
dW5jdGlvbih2YWwpIHsKLSAgICByZXR1cm4gRW1iZXIuVGVzdC5wcm9taXNlKGZ1bmN0aW9uKHJl
c29sdmUpIHsKLSAgICAgIHJldHVybiByZXNvbHZlKHZhbCk7Ci0gICAgfSk7Ci0gIH0sCi0KLSAg
LyoqCi0gICAgIFRoaXMgYWxsb3dzIGVtYmVyLXRlc3RpbmcgdG8gcGxheSBuaWNlbHkgd2l0aCBv
dGhlciBhc3luY2hyb25vdXMKLSAgICAgZXZlbnRzLCBzdWNoIGFzIGFuIGFwcGxpY2F0aW9uIHRo
YXQgaXMgd2FpdGluZyBmb3IgYSBDU1MzCi0gICAgIHRyYW5zaXRpb24gb3IgYW4gSW5kZXhEQiB0
cmFuc2FjdGlvbi4KLQotICAgICBGb3IgZXhhbXBsZToKLSAgICAgYGBgamF2YXNjcmlwdAotICAg
ICBFbWJlci5UZXN0LnJlZ2lzdGVyV2FpdGVyKGZ1bmN0aW9uKCkgewotICAgICByZXR1cm4gbXlQ
ZW5kaW5nVHJhbnNhY3Rpb25zKCkgPT0gMDsKLSAgICAgfSk7Ci0gICAgIGBgYAotICAgICBUaGUg
YGNvbnRleHRgIGFyZ3VtZW50IGFsbG93cyB5b3UgdG8gb3B0aW9uYWxseSBzcGVjaWZ5IHRoZSBg
dGhpc2AKLSAgICAgd2l0aCB3aGljaCB5b3VyIGNhbGxiYWNrIHdpbGwgYmUgaW52b2tlZC4KLQot
ICAgICBGb3IgZXhhbXBsZToKLSAgICAgYGBgamF2YXNjcmlwdAotICAgICBFbWJlci5UZXN0LnJl
Z2lzdGVyV2FpdGVyKE15REIsIE15REIuaGFzUGVuZGluZ1RyYW5zYWN0aW9ucyk7Ci0gICAgIGBg
YAotICAgICBAcHVibGljCi0gICAgIEBtZXRob2QgcmVnaXN0ZXJXYWl0ZXIKLSAgICAgQHBhcmFt
IHtPYmplY3R9IGNvbnRleHQgKG9wdGlvbmFsKQotICAgICBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxs
YmFjawotICAqLwotICByZWdpc3RlcldhaXRlcjogZnVuY3Rpb24oY29udGV4dCwgY2FsbGJhY2sp
IHsKLSAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkgewotICAgICAgY2FsbGJhY2sgPSBj
b250ZXh0OwotICAgICAgY29udGV4dCA9IG51bGw7Ci0gICAgfQotICAgIGlmICghdGhpcy53YWl0
ZXJzKSB7Ci0gICAgICB0aGlzLndhaXRlcnMgPSBFbWJlci5BKCk7Ci0gICAgfQotICAgIHRoaXMu
d2FpdGVycy5wdXNoKFtjb250ZXh0LCBjYWxsYmFja10pOwotICB9LAotICAvKioKLSAgICAgYHVu
cmVnaXN0ZXJXYWl0ZXJgIGlzIHVzZWQgdG8gdW5yZWdpc3RlciBhIGNhbGxiYWNrIHRoYXQgd2Fz
Ci0gICAgIHJlZ2lzdGVyZWQgd2l0aCBgcmVnaXN0ZXJXYWl0ZXJgLgotCi0gICAgIEBwdWJsaWMK
LSAgICAgQG1ldGhvZCB1bnJlZ2lzdGVyV2FpdGVyCi0gICAgIEBwYXJhbSB7T2JqZWN0fSBjb250
ZXh0IChvcHRpb25hbCkKLSAgICAgQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2sKLSAgKi8KLSAg
dW5yZWdpc3RlcldhaXRlcjogZnVuY3Rpb24oY29udGV4dCwgY2FsbGJhY2spIHsKLSAgICB2YXIg
cGFpcjsKLSAgICBpZiAoIXRoaXMud2FpdGVycykgeyByZXR1cm47IH0KLSAgICBpZiAoYXJndW1l
bnRzLmxlbmd0aCA9PT0gMSkgewotICAgICAgY2FsbGJhY2sgPSBjb250ZXh0OwotICAgICAgY29u
dGV4dCA9IG51bGw7Ci0gICAgfQotICAgIHBhaXIgPSBbY29udGV4dCwgY2FsbGJhY2tdOwotICAg
IHRoaXMud2FpdGVycyA9IEVtYmVyLkEodGhpcy53YWl0ZXJzLmZpbHRlcihmdW5jdGlvbihlbHQp
IHsKLSAgICAgIHJldHVybiBFbWJlci5jb21wYXJlKGVsdCwgcGFpcikhPT0wOwotICAgIH0pKTsK
LSAgfQotfTsKLQotZnVuY3Rpb24gaGVscGVyKGFwcCwgbmFtZSkgewotICB2YXIgZm4gPSBoZWxw
ZXJzW25hbWVdLm1ldGhvZCwKLSAgICAgIG1ldGEgPSBoZWxwZXJzW25hbWVdLm1ldGE7Ci0KLSAg
cmV0dXJuIGZ1bmN0aW9uKCkgewotICAgIHZhciBhcmdzID0gc2xpY2UuY2FsbChhcmd1bWVudHMp
LAotICAgICAgICBsYXN0UHJvbWlzZSA9IEVtYmVyLlRlc3QubGFzdFByb21pc2U7Ci0KLSAgICBh
cmdzLnVuc2hpZnQoYXBwKTsKLQotICAgIC8vIHNvbWUgaGVscGVycyBhcmUgbm90IGFzeW5jIGFu
ZAotICAgIC8vIG5lZWQgdG8gcmV0dXJuIGEgdmFsdWUgaW1tZWRpYXRlbHkuCi0gICAgLy8gZXhh
bXBsZTogYGZpbmRgCi0gICAgaWYgKCFtZXRhLndhaXQpIHsKLSAgICAgIHJldHVybiBmbi5hcHBs
eShhcHAsIGFyZ3MpOwotICAgIH0KLQotICAgIGlmICghbGFzdFByb21pc2UpIHsKLSAgICAgIC8v
IEl0J3MgdGhlIGZpcnN0IGFzeW5jIGhlbHBlciBpbiBjdXJyZW50IGNvbnRleHQKLSAgICAgIGxh
c3RQcm9taXNlID0gZm4uYXBwbHkoYXBwLCBhcmdzKTsKLSAgICB9IGVsc2UgewotICAgICAgLy8g
d2FpdCBmb3IgbGFzdCBoZWxwZXIncyBwcm9taXNlIHRvIHJlc29sdmUKLSAgICAgIC8vIGFuZCB0
aGVuIGV4ZWN1dGUKLSAgICAgIHJ1bihmdW5jdGlvbigpIHsKLSAgICAgICAgbGFzdFByb21pc2Ug
PSBFbWJlci5UZXN0LnJlc29sdmUobGFzdFByb21pc2UpLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAg
ICAgICAgcmV0dXJuIGZuLmFwcGx5KGFwcCwgYXJncyk7Ci0gICAgICAgIH0pOwotICAgICAgfSk7
Ci0gICAgfQotCi0gICAgcmV0dXJuIGxhc3RQcm9taXNlOwotICB9OwotfQotCi1mdW5jdGlvbiBy
dW4oZm4pIHsKLSAgaWYgKCFFbWJlci5ydW4uY3VycmVudFJ1bkxvb3ApIHsKLSAgICBFbWJlci5y
dW4oZm4pOwotICB9IGVsc2UgewotICAgIGZuKCk7Ci0gIH0KLX0KLQotRW1iZXIuQXBwbGljYXRp
b24ucmVvcGVuKHsKLSAgLyoqCi0gICBUaGlzIHByb3BlcnR5IGNvbnRhaW5zIHRoZSB0ZXN0aW5n
IGhlbHBlcnMgZm9yIHRoZSBjdXJyZW50IGFwcGxpY2F0aW9uLiBUaGVzZQotICAgYXJlIGNyZWF0
ZWQgb25jZSB5b3UgY2FsbCBgaW5qZWN0VGVzdEhlbHBlcnNgIG9uIHlvdXIgYEVtYmVyLkFwcGxp
Y2F0aW9uYAotICAgaW5zdGFuY2UuIFRoZSBpbmNsdWRlZCBoZWxwZXJzIGFyZSBhbHNvIGF2YWls
YWJsZSBvbiB0aGUgYHdpbmRvd2Agb2JqZWN0IGJ5Ci0gICBkZWZhdWx0LCBidXQgY2FuIGJlIHVz
ZWQgZnJvbSB0aGlzIG9iamVjdCBvbiB0aGUgaW5kaXZpZHVhbCBhcHBsaWNhdGlvbiBhbHNvLgot
Ci0gICAgQHByb3BlcnR5IHRlc3RIZWxwZXJzCi0gICAgQHR5cGUge09iamVjdH0KLSAgICBAZGVm
YXVsdCB7fQotICAqLwotICB0ZXN0SGVscGVyczoge30sCi0KLSAgLyoqCi0gICBUaGlzIHByb3Bl
cnR5IHdpbGwgY29udGFpbiB0aGUgb3JpZ2luYWwgbWV0aG9kcyB0aGF0IHdlcmUgcmVnaXN0ZXJl
ZAotICAgb24gdGhlIGBoZWxwZXJDb250YWluZXJgIGJlZm9yZSBgaW5qZWN0VGVzdEhlbHBlcnNg
IGlzIGNhbGxlZC4KLQotICAgV2hlbiBgcmVtb3ZlVGVzdEhlbHBlcnNgIGlzIGNhbGxlZCwgdGhl
c2UgbWV0aG9kcyBhcmUgcmVzdG9yZWQgdG8gdGhlCi0gICBgaGVscGVyQ29udGFpbmVyYC4KLQot
ICAgIEBwcm9wZXJ0eSBvcmlnaW5hbE1ldGhvZHMKLSAgICBAdHlwZSB7T2JqZWN0fQotICAgIEBk
ZWZhdWx0IHt9Ci0gICAgQHByaXZhdGUKLSAgKi8KLSAgb3JpZ2luYWxNZXRob2RzOiB7fSwKLQot
Ci0gIC8qKgotICBUaGlzIHByb3BlcnR5IGluZGljYXRlcyB3aGV0aGVyIG9yIG5vdCB0aGlzIGFw
cGxpY2F0aW9uIGlzIGN1cnJlbnRseSBpbgotICB0ZXN0aW5nIG1vZGUuIFRoaXMgaXMgc2V0IHdo
ZW4gYHNldHVwRm9yVGVzdGluZ2AgaXMgY2FsbGVkIG9uIHRoZSBjdXJyZW50Ci0gIGFwcGxpY2F0
aW9uLgotCi0gIEBwcm9wZXJ0eSB0ZXN0aW5nCi0gIEB0eXBlIHtCb29sZWFufQotICBAZGVmYXVs
dCBmYWxzZQotICAqLwotICB0ZXN0aW5nOiBmYWxzZSwKLQotICAvKioKLSAgIFRoaXMgaG9vayBk
ZWZlcnMgdGhlIHJlYWRpbmVzcyBvZiB0aGUgYXBwbGljYXRpb24sIHNvIHRoYXQgeW91IGNhbiBz
dGFydAotICAgdGhlIGFwcCB3aGVuIHlvdXIgdGVzdHMgYXJlIHJlYWR5IHRvIHJ1bi4gSXQgYWxz
byBzZXRzIHRoZSByb3V0ZXIncwotICAgbG9jYXRpb24gdG8gJ25vbmUnLCBzbyB0aGF0IHRoZSB3
aW5kb3cncyBsb2NhdGlvbiB3aWxsIG5vdCBiZSBtb2RpZmllZAotICAgKHByZXZlbnRpbmcgYm90
aCBhY2NpZGVudGFsIGxlYWtpbmcgb2Ygc3RhdGUgYmV0d2VlbiB0ZXN0cyBhbmQgaW50ZXJmZXJl
bmNlCi0gICB3aXRoIHlvdXIgdGVzdGluZyBmcmFtZXdvcmspLgotCi0gICBFeGFtcGxlOgotCi0g
IGBgYAotICBBcHAuc2V0dXBGb3JUZXN0aW5nKCk7Ci0gIGBgYAotCi0gICAgQG1ldGhvZCBzZXR1
cEZvclRlc3RpbmcKLSAgKi8KLSAgc2V0dXBGb3JUZXN0aW5nOiBmdW5jdGlvbigpIHsKLSAgICBF
bWJlci50ZXN0aW5nID0gdHJ1ZTsKLQotICAgIHRoaXMudGVzdGluZyA9IHRydWU7Ci0KLSAgICB0
aGlzLlJvdXRlci5yZW9wZW4oewotICAgICAgbG9jYXRpb246ICdub25lJwotICAgIH0pOwotCi0g
ICAgLy8gaWYgYWRhcHRlciBpcyBub3QgbWFudWFsbHkgc2V0IGRlZmF1bHQgdG8gUVVuaXQKLSAg
ICBpZiAoIUVtYmVyLlRlc3QuYWRhcHRlcikgewotICAgICAgIEVtYmVyLlRlc3QuYWRhcHRlciA9
IEVtYmVyLlRlc3QuUVVuaXRBZGFwdGVyLmNyZWF0ZSgpOwotICAgIH0KLQotICAgICAgfSwKLQot
ICAvKioKLSAgICBUaGlzIHdpbGwgYmUgdXNlZCBhcyB0aGUgY29udGFpbmVyIHRvIGluamVjdCB0
aGUgdGVzdCBoZWxwZXJzIGludG8uIEJ5Ci0gICAgZGVmYXVsdCB0aGUgaGVscGVycyBhcmUgaW5q
ZWN0ZWQgaW50byBgd2luZG93YC4KLQotICAgIEBwcm9wZXJ0eSBoZWxwZXJDb250YWluZXIKLSAg
IEB0eXBlIHtPYmplY3R9IFRoZSBvYmplY3QgdG8gYmUgdXNlZCBmb3IgdGVzdCBoZWxwZXJzLgot
ICAgQGRlZmF1bHQgd2luZG93Ci0gICovCi0gIGhlbHBlckNvbnRhaW5lcjogd2luZG93LAotCi0g
IC8qKgotICAgIFRoaXMgaW5qZWN0cyB0aGUgdGVzdCBoZWxwZXJzIGludG8gdGhlIGBoZWxwZXJD
b250YWluZXJgIG9iamVjdC4gSWYgYW4gb2JqZWN0IGlzIHByb3ZpZGVkCi0gICAgaXQgd2lsbCBi
ZSB1c2VkIGFzIHRoZSBoZWxwZXJDb250YWluZXIuIElmIGBoZWxwZXJDb250YWluZXJgIGlzIG5v
dCBzZXQgaXQgd2lsbCBkZWZhdWx0Ci0gICAgdG8gYHdpbmRvd2AuIElmIGEgZnVuY3Rpb24gb2Yg
dGhlIHNhbWUgbmFtZSBoYXMgYWxyZWFkeSBiZWVuIGRlZmluZWQgaXQgd2lsbCBiZSBjYWNoZWQK
LSAgICAoc28gdGhhdCBpdCBjYW4gYmUgcmVzZXQgaWYgdGhlIGhlbHBlciBpcyByZW1vdmVkIHdp
dGggYHVucmVnaXN0ZXJIZWxwZXJgIG9yCi0gICAgYHJlbW92ZVRlc3RIZWxwZXJzYCkuCi0KLSAg
IEFueSBjYWxsYmFja3MgcmVnaXN0ZXJlZCB3aXRoIGBvbkluamVjdEhlbHBlcnNgIHdpbGwgYmUg
Y2FsbGVkIG9uY2UgdGhlCi0gICBoZWxwZXJzIGhhdmUgYmVlbiBpbmplY3RlZC4KLQotICBFeGFt
cGxlOgotICBgYGAKLSAgQXBwLmluamVjdFRlc3RIZWxwZXJzKCk7Ci0gIGBgYAotCi0gICAgQG1l
dGhvZCBpbmplY3RUZXN0SGVscGVycwotICAqLwotICBpbmplY3RUZXN0SGVscGVyczogZnVuY3Rp
b24oaGVscGVyQ29udGFpbmVyKSB7Ci0gICAgaWYgKGhlbHBlckNvbnRhaW5lcikgeyB0aGlzLmhl
bHBlckNvbnRhaW5lciA9IGhlbHBlckNvbnRhaW5lcjsgfQotCi0gICAgdGhpcy50ZXN0SGVscGVy
cyA9IHt9OwotICAgIGZvciAodmFyIG5hbWUgaW4gaGVscGVycykgewotICAgICAgdGhpcy5vcmln
aW5hbE1ldGhvZHNbbmFtZV0gPSB0aGlzLmhlbHBlckNvbnRhaW5lcltuYW1lXTsKLSAgICAgIHRo
aXMudGVzdEhlbHBlcnNbbmFtZV0gPSB0aGlzLmhlbHBlckNvbnRhaW5lcltuYW1lXSA9IGhlbHBl
cih0aGlzLCBuYW1lKTsKLSAgICAgIHByb3RvV3JhcChFbWJlci5UZXN0LlByb21pc2UucHJvdG90
eXBlLCBuYW1lLCBoZWxwZXIodGhpcywgbmFtZSksIGhlbHBlcnNbbmFtZV0ubWV0YS53YWl0KTsK
LSAgICB9Ci0KLSAgICBmb3IodmFyIGkgPSAwLCBsID0gaW5qZWN0SGVscGVyc0NhbGxiYWNrcy5s
ZW5ndGg7IGkgPCBsOyBpKyspIHsKLSAgICAgIGluamVjdEhlbHBlcnNDYWxsYmFja3NbaV0odGhp
cyk7Ci0gICAgfQotICB9LAotCi0gIC8qKgotICAgIFRoaXMgcmVtb3ZlcyBhbGwgaGVscGVycyB0
aGF0IGhhdmUgYmVlbiByZWdpc3RlcmVkLCBhbmQgcmVzZXRzIGFuZCBmdW5jdGlvbnMKLSAgICB0
aGF0IHdlcmUgb3ZlcnJpZGRlbiBieSB0aGUgaGVscGVycy4KLQotICAgIEV4YW1wbGU6Ci0KLSAg
ICBgYGBqYXZhc2NyaXB0Ci0gICAgQXBwLnJlbW92ZVRlc3RIZWxwZXJzKCk7Ci0gICAgYGBgCi0K
LSAgICBAcHVibGljCi0gICAgQG1ldGhvZCByZW1vdmVUZXN0SGVscGVycwotICAqLwotICByZW1v
dmVUZXN0SGVscGVyczogZnVuY3Rpb24oKSB7Ci0gICAgZm9yICh2YXIgbmFtZSBpbiBoZWxwZXJz
KSB7Ci0gICAgICB0aGlzLmhlbHBlckNvbnRhaW5lcltuYW1lXSA9IHRoaXMub3JpZ2luYWxNZXRo
b2RzW25hbWVdOwotICAgICAgZGVsZXRlIHRoaXMudGVzdEhlbHBlcnNbbmFtZV07Ci0gICAgICBk
ZWxldGUgdGhpcy5vcmlnaW5hbE1ldGhvZHNbbmFtZV07Ci0gICAgfQotICB9Ci19KTsKLQotLy8g
VGhpcyBtZXRob2QgaXMgbm8gbG9uZ2VyIG5lZWRlZAotLy8gQnV0IHN0aWxsIGhlcmUgZm9yIGJh
Y2t3YXJkcyBjb21wYXRpYmlsaXR5Ci0vLyBvZiBoZWxwZXIgY2hhaW5pbmcKLWZ1bmN0aW9uIHBy
b3RvV3JhcChwcm90bywgbmFtZSwgY2FsbGJhY2ssIGlzQXN5bmMpIHsKLSAgcHJvdG9bbmFtZV0g
PSBmdW5jdGlvbigpIHsKLSAgICB2YXIgYXJncyA9IGFyZ3VtZW50czsKLSAgICBpZiAoaXNBc3lu
YykgewotICAgICAgcmV0dXJuIGNhbGxiYWNrLmFwcGx5KHRoaXMsIGFyZ3MpOwotICAgIH0gZWxz
ZSB7Ci0gICAgICByZXR1cm4gdGhpcy50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICByZXR1cm4g
Y2FsbGJhY2suYXBwbHkodGhpcywgYXJncyk7Ci0gICAgICB9KTsKLSAgICB9Ci0gIH07Ci19Ci0K
LUVtYmVyLlRlc3QuUHJvbWlzZSA9IGZ1bmN0aW9uKCkgewotICBFbWJlci5SU1ZQLlByb21pc2Uu
YXBwbHkodGhpcywgYXJndW1lbnRzKTsKLSAgRW1iZXIuVGVzdC5sYXN0UHJvbWlzZSA9IHRoaXM7
Ci19OwotCi1FbWJlci5UZXN0LlByb21pc2UucHJvdG90eXBlID0gRW1iZXIuY3JlYXRlKEVtYmVy
LlJTVlAuUHJvbWlzZS5wcm90b3R5cGUpOwotRW1iZXIuVGVzdC5Qcm9taXNlLnByb3RvdHlwZS5j
b25zdHJ1Y3RvciA9IEVtYmVyLlRlc3QuUHJvbWlzZTsKLQotLy8gUGF0Y2ggYHRoZW5gIHRvIGlz
b2xhdGUgYXN5bmMgbWV0aG9kcwotLy8gc3BlY2lmaWNhbGx5IGBFbWJlci5UZXN0Lmxhc3RQcm9t
aXNlYAotdmFyIG9yaWdpbmFsVGhlbiA9IEVtYmVyLlJTVlAuUHJvbWlzZS5wcm90b3R5cGUudGhl
bjsKLUVtYmVyLlRlc3QuUHJvbWlzZS5wcm90b3R5cGUudGhlbiA9IGZ1bmN0aW9uKG9uU3VjY2Vz
cywgb25GYWlsdXJlKSB7Ci0gIHJldHVybiBvcmlnaW5hbFRoZW4uY2FsbCh0aGlzLCBmdW5jdGlv
bih2YWwpIHsKLSAgICByZXR1cm4gaXNvbGF0ZShvblN1Y2Nlc3MsIHZhbCk7Ci0gIH0sIG9uRmFp
bHVyZSk7Ci19OwotCi0vLyBUaGlzIG1ldGhvZCBpc29sYXRlcyBuZXN0ZWQgYXN5bmMgbWV0aG9k
cwotLy8gc28gdGhhdCB0aGV5IGRvbid0IGNvbmZsaWN0IHdpdGggb3RoZXIgbGFzdCBwcm9taXNl
cy4KLS8vCi0vLyAxLiBTZXQgYEVtYmVyLlRlc3QubGFzdFByb21pc2VgIHRvIG51bGwKLS8vIDIu
IEludm9rZSBtZXRob2QKLS8vIDMuIFJldHVybiB0aGUgbGFzdCBwcm9taXNlIGNyZWF0ZWQgZHVy
aW5nIG1ldGhvZAotLy8gNC4gUmVzdG9yZSBgRW1iZXIuVGVzdC5sYXN0UHJvbWlzZWAgdG8gb3Jp
Z2luYWwgdmFsdWUKLWZ1bmN0aW9uIGlzb2xhdGUoZm4sIHZhbCkgewotICB2YXIgdmFsdWUsIGxh
c3RQcm9taXNlOwotCi0gIC8vIFJlc2V0IGxhc3RQcm9taXNlIGZvciBuZXN0ZWQgaGVscGVycwot
ICBFbWJlci5UZXN0Lmxhc3RQcm9taXNlID0gbnVsbDsKLQotICB2YWx1ZSA9IGZuLmNhbGwobnVs
bCwgdmFsKTsKLQotICBsYXN0UHJvbWlzZSA9IEVtYmVyLlRlc3QubGFzdFByb21pc2U7Ci0KLSAg
Ly8gSWYgdGhlIG1ldGhvZCByZXR1cm5lZCBhIHByb21pc2UKLSAgLy8gcmV0dXJuIHRoYXQgcHJv
bWlzZS4gSWYgbm90LAotICAvLyByZXR1cm4gdGhlIGxhc3QgYXN5bmMgaGVscGVyJ3MgcHJvbWlz
ZQotICBpZiAoKHZhbHVlICYmICh2YWx1ZSBpbnN0YW5jZW9mIEVtYmVyLlRlc3QuUHJvbWlzZSkp
IHx8ICFsYXN0UHJvbWlzZSkgewotICAgIHJldHVybiB2YWx1ZTsKLSAgfSBlbHNlIHsKLSAgICBy
dW4oZnVuY3Rpb24oKSB7Ci0gICAgICBsYXN0UHJvbWlzZSA9IEVtYmVyLlRlc3QucmVzb2x2ZShs
YXN0UHJvbWlzZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgcmV0dXJuIHZhbHVlOwotICAg
ICAgfSk7Ci0gICAgfSk7Ci0gICAgcmV0dXJuIGxhc3RQcm9taXNlOwotICB9Ci19Ci0KLX0pKCk7
Ci0KLQotCi0oZnVuY3Rpb24oKSB7Ci1FbWJlci5vbkxvYWQoJ0VtYmVyLkFwcGxpY2F0aW9uJywg
ZnVuY3Rpb24oQXBwbGljYXRpb24pIHsKLSAgQXBwbGljYXRpb24uaW5pdGlhbGl6ZXIoewotICAg
IG5hbWU6ICdkZWZlclJlYWRpbmVzcyBpbiBgdGVzdGluZ2AgbW9kZScsCi0KLSAgICBpbml0aWFs
aXplOiBmdW5jdGlvbihjb250YWluZXIsIGFwcGxpY2F0aW9uKXsKLSAgICAgIGlmIChhcHBsaWNh
dGlvbi50ZXN0aW5nKSB7Ci0gICAgICAgIGFwcGxpY2F0aW9uLmRlZmVyUmVhZGluZXNzKCk7Ci0g
ICAgICB9Ci0gICAgfQotICB9KTsKLQotICB9KTsKLQotfSkoKTsKLQotCi0KLShmdW5jdGlvbigp
IHsKLS8qKgotICBAbW9kdWxlIGVtYmVyCi0gIEBzdWJtb2R1bGUgZW1iZXItdGVzdGluZwotICov
Ci0KLXZhciAkID0gRW1iZXIuJDsKLQotLyoqCi0gIFRoaXMgbWV0aG9kIGNyZWF0ZXMgYSBjaGVj
a2JveCBhbmQgdHJpZ2dlcnMgdGhlIGNsaWNrIGV2ZW50IHRvIGZpcmUgdGhlCi0gIHBhc3NlZCBp
biBoYW5kbGVyLiBJdCBpcyB1c2VkIHRvIGNvcnJlY3QgZm9yIGEgYnVnIGluIG9sZGVyIHZlcnNp
b25zCi0gIG9mIGpRdWVyeSAoZS5nIDEuOC4zKS4KLQotICBAcHJpdmF0ZQotICBAbWV0aG9kIHRl
c3RDaGVja2JveENsaWNrCi0qLwotZnVuY3Rpb24gdGVzdENoZWNrYm94Q2xpY2soaGFuZGxlcikg
ewotICAkKCc8aW5wdXQgdHlwZT0iY2hlY2tib3giPicpCi0gICAgLmNzcyh7IHBvc2l0aW9uOiAn
YWJzb2x1dGUnLCBsZWZ0OiAnLTEwMDBweCcsIHRvcDogJy0xMDAwcHgnIH0pCi0gICAgLmFwcGVu
ZFRvKCdib2R5JykKLSAgICAub24oJ2NsaWNrJywgaGFuZGxlcikKLSAgICAudHJpZ2dlcignY2xp
Y2snKQotICAgIC5yZW1vdmUoKTsKLX0KLQotJChmdW5jdGlvbigpIHsKLSAgLyoKLSAgICBEZXRl
cm1pbmUgd2hldGhlciBhIGNoZWNrYm94IGNoZWNrZWQgdXNpbmcgalF1ZXJ5J3MgImNsaWNrIiBt
ZXRob2Qgd2lsbCBoYXZlCi0gICAgdGhlIGNvcnJlY3QgdmFsdWUgZm9yIGl0cyBjaGVja2VkIHBy
b3BlcnR5LgotCi0gICAgSWYgd2UgZGV0ZXJtaW5lIHRoYXQgdGhlIGN1cnJlbnQgalF1ZXJ5IHZl
cnNpb24gZXhoaWJpdHMgdGhpcyBiZWhhdmlvciwKLSAgICBwYXRjaCBpdCB0byB3b3JrIGNvcnJl
Y3RseSBhcyBpbiB0aGUgY29tbWl0IGZvciB0aGUgYWN0dWFsIGZpeDoKLSAgICBodHRwczovL2dp
dGh1Yi5jb20vanF1ZXJ5L2pxdWVyeS9jb21taXQvMWZiMmY5Mi4KLSAgKi8KLSAgdGVzdENoZWNr
Ym94Q2xpY2soZnVuY3Rpb24oKSB7Ci0gICAgaWYgKCF0aGlzLmNoZWNrZWQgJiYgISQuZXZlbnQu
c3BlY2lhbC5jbGljaykgewotICAgICAgJC5ldmVudC5zcGVjaWFsLmNsaWNrID0gewotICAgICAg
ICAvLyBGb3IgY2hlY2tib3gsIGZpcmUgbmF0aXZlIGV2ZW50IHNvIGNoZWNrZWQgc3RhdGUgd2ls
bCBiZSByaWdodAotICAgICAgICB0cmlnZ2VyOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICBpZiAo
JC5ub2RlTmFtZSggdGhpcywgImlucHV0IiApICYmIHRoaXMudHlwZSA9PT0gImNoZWNrYm94IiAm
JiB0aGlzLmNsaWNrKSB7Ci0gICAgICAgICAgICB0aGlzLmNsaWNrKCk7Ci0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9OwotICAgIH0KLSAg
fSk7Ci0KLSAgLy8gVHJ5IGFnYWluIHRvIHZlcmlmeSB0aGF0IHRoZSBwYXRjaCB0b29rIGVmZmVj
dCBvciBibG93IHVwLgotICB0ZXN0Q2hlY2tib3hDbGljayhmdW5jdGlvbigpIHsKLSAgICBFbWJl
ci53YXJuKCJjbGlja2VkIGNoZWNrYm94ZXMgc2hvdWxkIGJlIGNoZWNrZWQhIHRoZSBqUXVlcnkg
cGF0Y2ggZGlkbid0IHdvcmsiLCB0aGlzLmNoZWNrZWQpOwotICB9KTsKLX0pOwotCi19KSgpOwot
Ci0KLQotKGZ1bmN0aW9uKCkgewotLyoqCi0gQG1vZHVsZSBlbWJlcgotIEBzdWJtb2R1bGUgZW1i
ZXItdGVzdGluZwotKi8KLQotdmFyIFRlc3QgPSBFbWJlci5UZXN0OwotCi0vKioKLSAgVGhlIHBy
aW1hcnkgcHVycG9zZSBvZiB0aGlzIGNsYXNzIGlzIHRvIGNyZWF0ZSBob29rcyB0aGF0IGNhbiBi
ZSBpbXBsZW1lbnRlZAotICBieSBhbiBhZGFwdGVyIGZvciB2YXJpb3VzIHRlc3QgZnJhbWV3b3Jr
cy4KLQotICBAY2xhc3MgQWRhcHRlcgotICBAbmFtZXNwYWNlIEVtYmVyLlRlc3QKLSovCi1UZXN0
LkFkYXB0ZXIgPSBFbWJlci5PYmplY3QuZXh0ZW5kKHsKLSAgLyoqCi0gICAgVGhpcyBjYWxsYmFj
ayB3aWxsIGJlIGNhbGxlZCB3aGVuZXZlciBhbiBhc3luYyBvcGVyYXRpb24gaXMgYWJvdXQgdG8g
c3RhcnQuCi0KLSAgICBPdmVycmlkZSB0aGlzIHRvIGNhbGwgeW91ciBmcmFtZXdvcmsncyBtZXRo
b2RzIHRoYXQgaGFuZGxlIGFzeW5jCi0gICAgb3BlcmF0aW9ucy4KLQotICAgIEBwdWJsaWMKLSAg
ICBAbWV0aG9kIGFzeW5jU3RhcnQKLSAgKi8KLSAgYXN5bmNTdGFydDogRW1iZXIuSywKLQotICAv
KioKLSAgICBUaGlzIGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkIHdoZW5ldmVyIGFuIGFzeW5jIG9w
ZXJhdGlvbiBoYXMgY29tcGxldGVkLgotCi0gICAgQHB1YmxpYwotICAgIEBtZXRob2QgYXN5bmNF
bmQKLSAgKi8KLSAgYXN5bmNFbmQ6IEVtYmVyLkssCi0KLSAgLyoqCi0gICAgT3ZlcnJpZGUgdGhp
cyBtZXRob2Qgd2l0aCB5b3VyIHRlc3RpbmcgZnJhbWV3b3JrJ3MgZmFsc2UgYXNzZXJ0aW9uLgot
ICAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW5ldmVyIGFuIGV4Y2VwdGlvbiBvY2N1cnMg
Y2F1c2luZyB0aGUgdGVzdGluZwotICAgIHByb21pc2UgdG8gZmFpbC4KLQotICAgIFFVbml0IGV4
YW1wbGU6Ci0KLSAgICBgYGBqYXZhc2NyaXB0Ci0gICAgICBleGNlcHRpb246IGZ1bmN0aW9uKGVy
cm9yKSB7Ci0gICAgICAgIG9rKGZhbHNlLCBlcnJvcik7Ci0gICAgICB9OwotICAgIGBgYAotCi0g
ICAgQHB1YmxpYwotICAgIEBtZXRob2QgZXhjZXB0aW9uCi0gICAgQHBhcmFtIHtTdHJpbmd9IGVy
cm9yIFRoZSBleGNlcHRpb24gdG8gYmUgcmFpc2VkLgotICAqLwotICBleGNlcHRpb246IGZ1bmN0
aW9uKGVycm9yKSB7Ci0gICAgdGhyb3cgZXJyb3I7Ci0gIH0KLX0pOwotCi0vKioKLSAgVGhpcyBj
bGFzcyBpbXBsZW1lbnRzIHRoZSBtZXRob2RzIGRlZmluZWQgYnkgRW1iZXIuVGVzdC5BZGFwdGVy
IGZvciB0aGUKLSAgUVVuaXQgdGVzdGluZyBmcmFtZXdvcmsuCi0KLSAgQGNsYXNzIFFVbml0QWRh
cHRlcgotICBAbmFtZXNwYWNlIEVtYmVyLlRlc3QKLSAgQGV4dGVuZHMgRW1iZXIuVGVzdC5BZGFw
dGVyCi0qLwotVGVzdC5RVW5pdEFkYXB0ZXIgPSBUZXN0LkFkYXB0ZXIuZXh0ZW5kKHsKLSAgYXN5
bmNTdGFydDogZnVuY3Rpb24oKSB7Ci0gICAgc3RvcCgpOwotICB9LAotICBhc3luY0VuZDogZnVu
Y3Rpb24oKSB7Ci0gICAgc3RhcnQoKTsKLSAgfSwKLSAgZXhjZXB0aW9uOiBmdW5jdGlvbihlcnJv
cikgewotICAgIG9rKGZhbHNlLCBFbWJlci5pbnNwZWN0KGVycm9yKSk7Ci0gIH0KLX0pOwotCi19
KSgpOwotCi0KLQotKGZ1bmN0aW9uKCkgewotLyoqCi0qIEBtb2R1bGUgZW1iZXIKLSogQHN1Ym1v
ZHVsZSBlbWJlci10ZXN0aW5nCi0qLwotCi12YXIgZ2V0ID0gRW1iZXIuZ2V0LAotICAgIFRlc3Qg
PSBFbWJlci5UZXN0LAotICAgIGhlbHBlciA9IFRlc3QucmVnaXN0ZXJIZWxwZXIsCi0gICAgYXN5
bmNIZWxwZXIgPSBUZXN0LnJlZ2lzdGVyQXN5bmNIZWxwZXIsCi0gICAgY291bnRBc3luYyA9IDA7
Ci0KLVRlc3QucGVuZGluZ0FqYXhSZXF1ZXN0cyA9IDA7Ci0KLVRlc3Qub25JbmplY3RIZWxwZXJz
KGZ1bmN0aW9uKCkgewotICBFbWJlci4kKGRvY3VtZW50KS5hamF4U3RhcnQoZnVuY3Rpb24oKSB7
Ci0gICAgVGVzdC5wZW5kaW5nQWpheFJlcXVlc3RzKys7Ci0gIH0pOwotCi0gIEVtYmVyLiQoZG9j
dW1lbnQpLmFqYXhTdG9wKGZ1bmN0aW9uKCkgewotICAgIEVtYmVyLmFzc2VydCgiQW4gYWpheFN0
b3AgZXZlbnQgd2hpY2ggd291bGQgY2F1c2UgdGhlIG51bWJlciBvZiBwZW5kaW5nIEFKQVggIiAr
Ci0gICAgICAgICAgICAgICAgICJyZXF1ZXN0cyB0byBiZSBuZWdhdGl2ZSBoYXMgYmVlbiB0cmln
Z2VyZWQuIFRoaXMgaXMgbW9zdCBsaWtlbHkgIiArCi0gICAgICAgICAgICAgICAgICJjYXVzZWQg
YnkgQUpBWCBldmVudHMgdGhhdCB3ZXJlIHN0YXJ0ZWQgYmVmb3JlIGNhbGxpbmcgIiArCi0gICAg
ICAgICAgICAgICAgICJgaW5qZWN0VGVzdEhlbHBlcnMoKWAuIiwgVGVzdC5wZW5kaW5nQWpheFJl
cXVlc3RzICE9PSAwKTsKLSAgICBUZXN0LnBlbmRpbmdBamF4UmVxdWVzdHMtLTsKLSAgfSk7Ci19
KTsKLQotZnVuY3Rpb24gY3VycmVudFJvdXRlTmFtZShhcHApewotICB2YXIgYXBwQ29udHJvbGxl
ciA9IGFwcC5fX2NvbnRhaW5lcl9fLmxvb2t1cCgnY29udHJvbGxlcjphcHBsaWNhdGlvbicpOwot
Ci0gIHJldHVybiBnZXQoYXBwQ29udHJvbGxlciwgJ2N1cnJlbnRSb3V0ZU5hbWUnKTsKLX0KLQot
ZnVuY3Rpb24gY3VycmVudFBhdGgoYXBwKXsKLSAgdmFyIGFwcENvbnRyb2xsZXIgPSBhcHAuX19j
b250YWluZXJfXy5sb29rdXAoJ2NvbnRyb2xsZXI6YXBwbGljYXRpb24nKTsKLQotICByZXR1cm4g
Z2V0KGFwcENvbnRyb2xsZXIsICdjdXJyZW50UGF0aCcpOwotfQotCi1mdW5jdGlvbiBjdXJyZW50
VVJMKGFwcCl7Ci0gIHZhciByb3V0ZXIgPSBhcHAuX19jb250YWluZXJfXy5sb29rdXAoJ3JvdXRl
cjptYWluJyk7Ci0KLSAgcmV0dXJuIGdldChyb3V0ZXIsICdsb2NhdGlvbicpLmdldFVSTCgpOwot
fQotCi1mdW5jdGlvbiB2aXNpdChhcHAsIHVybCkgewotICBFbWJlci5ydW4oYXBwLCAnYWR2YW5j
ZVJlYWRpbmVzcycpOwotCi0gIGFwcC5fX2NvbnRhaW5lcl9fLmxvb2t1cCgncm91dGVyOm1haW4n
KS5sb2NhdGlvbi5zZXRVUkwodXJsKTsKLSAgRW1iZXIucnVuKGFwcCwgYXBwLmhhbmRsZVVSTCwg
dXJsKTsKLSAgcmV0dXJuIHdhaXQoYXBwKTsKLX0KLQotZnVuY3Rpb24gY2xpY2soYXBwLCBzZWxl
Y3RvciwgY29udGV4dCkgewotICB2YXIgJGVsID0gZmluZFdpdGhBc3NlcnQoYXBwLCBzZWxlY3Rv
ciwgY29udGV4dCk7Ci0gIEVtYmVyLnJ1bigkZWwsICdtb3VzZWRvd24nKTsKLQotICBpZiAoJGVs
LmlzKCc6aW5wdXQnKSkgewotICAgIHZhciB0eXBlID0gJGVsLnByb3AoJ3R5cGUnKTsKLSAgICBp
ZiAodHlwZSAhPT0gJ2NoZWNrYm94JyAmJiB0eXBlICE9PSAncmFkaW8nICYmIHR5cGUgIT09ICdo
aWRkZW4nKSB7Ci0gICAgICBFbWJlci5ydW4oJGVsLCBmdW5jdGlvbigpewotICAgICAgICAvLyBG
aXJlZm94IGRvZXMgbm90IHRyaWdnZXIgdGhlIGBmb2N1c2luYCBldmVudCBpZiB0aGUgd2luZG93
Ci0gICAgICAgIC8vIGRvZXMgbm90IGhhdmUgZm9jdXMuIElmIHRoZSBkb2N1bWVudCBkb2Vzbid0
IGhhdmUgZm9jdXMganVzdAotICAgICAgICAvLyB1c2UgdHJpZ2dlcignZm9jdXNpbicpIGluc3Rl
YWQuCi0gICAgICAgIGlmICghZG9jdW1lbnQuaGFzRm9jdXMgfHwgZG9jdW1lbnQuaGFzRm9jdXMo
KSkgewotICAgICAgICAgIHRoaXMuZm9jdXMoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICB0aGlzLnRyaWdnZXIoJ2ZvY3VzaW4nKTsKLSAgICAgICAgfQotICAgICAgfSk7Ci0gICAgfQot
ICB9Ci0KLSAgRW1iZXIucnVuKCRlbCwgJ21vdXNldXAnKTsKLSAgRW1iZXIucnVuKCRlbCwgJ2Ns
aWNrJyk7Ci0KLSAgcmV0dXJuIHdhaXQoYXBwKTsKLX0KLQotZnVuY3Rpb24gdHJpZ2dlckV2ZW50
KGFwcCwgc2VsZWN0b3IsIGNvbnRleHQsIGV2ZW50KXsKLSAgaWYgKHR5cGVvZiBtZXRob2QgPT09
ICd1bmRlZmluZWQnKSB7Ci0gICAgZXZlbnQgPSBjb250ZXh0OwotICAgIGNvbnRleHQgPSBudWxs
OwotICB9Ci0KLSAgdmFyICRlbCA9IGZpbmRXaXRoQXNzZXJ0KGFwcCwgc2VsZWN0b3IsIGNvbnRl
eHQpOwotCi0gIEVtYmVyLnJ1bigkZWwsICd0cmlnZ2VyJywgZXZlbnQpOwotCi0gIHJldHVybiB3
YWl0KGFwcCk7Ci19Ci0KLWZ1bmN0aW9uIGtleUV2ZW50KGFwcCwgc2VsZWN0b3IsIGNvbnRleHQs
IHR5cGUsIGtleUNvZGUpIHsKLSAgdmFyICRlbDsKLSAgaWYgKHR5cGVvZiBrZXlDb2RlID09PSAn
dW5kZWZpbmVkJykgewotICAgIGtleUNvZGUgPSB0eXBlOwotICAgIHR5cGUgPSBjb250ZXh0Owot
ICAgIGNvbnRleHQgPSBudWxsOwotICB9Ci0gICRlbCA9IGZpbmRXaXRoQXNzZXJ0KGFwcCwgc2Vs
ZWN0b3IsIGNvbnRleHQpOwotICB2YXIgZXZlbnQgPSBFbWJlci4kLkV2ZW50KHR5cGUsIHsga2V5
Q29kZToga2V5Q29kZSB9KTsKLSAgRW1iZXIucnVuKCRlbCwgJ3RyaWdnZXInLCBldmVudCk7Ci0g
IHJldHVybiB3YWl0KGFwcCk7Ci19Ci0KLWZ1bmN0aW9uIGZpbGxJbihhcHAsIHNlbGVjdG9yLCBj
b250ZXh0LCB0ZXh0KSB7Ci0gIHZhciAkZWw7Ci0gIGlmICh0eXBlb2YgdGV4dCA9PT0gJ3VuZGVm
aW5lZCcpIHsKLSAgICB0ZXh0ID0gY29udGV4dDsKLSAgICBjb250ZXh0ID0gbnVsbDsKLSAgfQot
ICAkZWwgPSBmaW5kV2l0aEFzc2VydChhcHAsIHNlbGVjdG9yLCBjb250ZXh0KTsKLSAgRW1iZXIu
cnVuKGZ1bmN0aW9uKCkgewotICAgICRlbC52YWwodGV4dCkuY2hhbmdlKCk7Ci0gIH0pOwotICBy
ZXR1cm4gd2FpdChhcHApOwotfQotCi1mdW5jdGlvbiBmaW5kV2l0aEFzc2VydChhcHAsIHNlbGVj
dG9yLCBjb250ZXh0KSB7Ci0gIHZhciAkZWwgPSBmaW5kKGFwcCwgc2VsZWN0b3IsIGNvbnRleHQp
OwotICBpZiAoJGVsLmxlbmd0aCA9PT0gMCkgewotICAgIHRocm93IG5ldyBFbWJlci5FcnJvcigi
RWxlbWVudCAiICsgc2VsZWN0b3IgKyAiIG5vdCBmb3VuZC4iKTsKLSAgfQotICByZXR1cm4gJGVs
OwotfQotCi1mdW5jdGlvbiBmaW5kKGFwcCwgc2VsZWN0b3IsIGNvbnRleHQpIHsKLSAgdmFyICRl
bDsKLSAgY29udGV4dCA9IGNvbnRleHQgfHwgZ2V0KGFwcCwgJ3Jvb3RFbGVtZW50Jyk7Ci0gICRl
bCA9IGFwcC4kKHNlbGVjdG9yLCBjb250ZXh0KTsKLQotICByZXR1cm4gJGVsOwotfQotCi1mdW5j
dGlvbiBhbmRUaGVuKGFwcCwgY2FsbGJhY2spIHsKLSAgcmV0dXJuIHdhaXQoYXBwLCBjYWxsYmFj
ayhhcHApKTsKLX0KLQotZnVuY3Rpb24gd2FpdChhcHAsIHZhbHVlKSB7Ci0gIHJldHVybiBUZXN0
LnByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSkgewotICAgIC8vIElmIHRoaXMgaXMgdGhlIGZpcnN0
IGFzeW5jIHByb21pc2UsIGtpY2sgb2ZmIHRoZSBhc3luYyB0ZXN0Ci0gICAgaWYgKCsrY291bnRB
c3luYyA9PT0gMSkgewotICAgICAgVGVzdC5hZGFwdGVyLmFzeW5jU3RhcnQoKTsKLSAgICB9Ci0K
LSAgICAvLyBFdmVyeSAxMG1zLCBwb2xsIGZvciB0aGUgYXN5bmMgdGhpbmcgdG8gaGF2ZSBmaW5p
c2hlZAotICAgIHZhciB3YXRjaGVyID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7Ci0gICAgICAv
LyAxLiBJZiB0aGUgcm91dGVyIGlzIGxvYWRpbmcsIGtlZXAgcG9sbGluZwotICAgICAgdmFyIHJv
dXRlcklzTG9hZGluZyA9IGFwcC5fX2NvbnRhaW5lcl9fLmxvb2t1cCgncm91dGVyOm1haW4nKS5y
b3V0ZXIuaXNMb2FkaW5nOwotICAgICAgaWYgKHJvdXRlcklzTG9hZGluZykgeyByZXR1cm47IH0K
LQotICAgICAgLy8gMi4gSWYgdGhlcmUgYXJlIHBlbmRpbmcgQWpheCByZXF1ZXN0cywga2VlcCBw
b2xsaW5nCi0gICAgICBpZiAoVGVzdC5wZW5kaW5nQWpheFJlcXVlc3RzKSB7IHJldHVybjsgfQot
Ci0gICAgICAvLyAzLiBJZiB0aGVyZSBhcmUgc2NoZWR1bGVkIHRpbWVycyBvciB3ZSBhcmUgaW5z
aWRlIG9mIGEgcnVuIGxvb3AsIGtlZXAgcG9sbGluZwotICAgICAgaWYgKEVtYmVyLnJ1bi5oYXNT
Y2hlZHVsZWRUaW1lcnMoKSB8fCBFbWJlci5ydW4uY3VycmVudFJ1bkxvb3ApIHsgcmV0dXJuOyB9
Ci0gICAgICBpZiAoVGVzdC53YWl0ZXJzICYmIFRlc3Qud2FpdGVycy5hbnkoZnVuY3Rpb24od2Fp
dGVyKSB7Ci0gICAgICAgIHZhciBjb250ZXh0ID0gd2FpdGVyWzBdOwotICAgICAgICB2YXIgY2Fs
bGJhY2sgPSB3YWl0ZXJbMV07Ci0gICAgICAgIHJldHVybiAhY2FsbGJhY2suY2FsbChjb250ZXh0
KTsKLSAgICAgIH0pKSB7IHJldHVybjsgfQotICAgICAgLy8gU3RvcCBwb2xsaW5nCi0gICAgICBj
bGVhckludGVydmFsKHdhdGNoZXIpOwotCi0gICAgICAvLyBJZiB0aGlzIGlzIHRoZSBsYXN0IGFz
eW5jIHByb21pc2UsIGVuZCB0aGUgYXN5bmMgdGVzdAotICAgICAgaWYgKC0tY291bnRBc3luYyA9
PT0gMCkgewotICAgICAgICBUZXN0LmFkYXB0ZXIuYXN5bmNFbmQoKTsKLSAgICAgIH0KLQotICAg
ICAgLy8gU3luY2hyb25vdXNseSByZXNvbHZlIHRoZSBwcm9taXNlCi0gICAgICBFbWJlci5ydW4o
bnVsbCwgcmVzb2x2ZSwgdmFsdWUpOwotICAgIH0sIDEwKTsKLSAgfSk7Ci0KLX0KLQotCi0vKioK
LSogTG9hZHMgYSByb3V0ZSwgc2V0cyB1cCBhbnkgY29udHJvbGxlcnMsIGFuZCByZW5kZXJzIGFu
eSB0ZW1wbGF0ZXMgYXNzb2NpYXRlZAotKiB3aXRoIHRoZSByb3V0ZSBhcyB0aG91Z2ggYSByZWFs
IHVzZXIgaGFkIHRyaWdnZXJlZCB0aGUgcm91dGUgY2hhbmdlIHdoaWxlCi0qIHVzaW5nIHlvdXIg
YXBwLgotKgotKiBFeGFtcGxlOgotKgotKiBgYGBqYXZhc2NyaXB0Ci0qIHZpc2l0KCdwb3N0cy9p
bmRleCcpLnRoZW4oZnVuY3Rpb24oKSB7Ci0qICAgLy8gYXNzZXJ0IHNvbWV0aGluZwotKiB9KTsK
LSogYGBgCi0qCi0qIEBtZXRob2QgdmlzaXQKLSogQHBhcmFtIHtTdHJpbmd9IHVybCB0aGUgbmFt
ZSBvZiB0aGUgcm91dGUKLSogQHJldHVybiB7UlNWUC5Qcm9taXNlfQotKi8KLWFzeW5jSGVscGVy
KCd2aXNpdCcsIHZpc2l0KTsKLQotLyoqCi0qIENsaWNrcyBhbiBlbGVtZW50IGFuZCB0cmlnZ2Vy
cyBhbnkgYWN0aW9ucyB0cmlnZ2VyZWQgYnkgdGhlIGVsZW1lbnQncyBgY2xpY2tgCi0qIGV2ZW50
LgotKgotKiBFeGFtcGxlOgotKgotKiBgYGBqYXZhc2NyaXB0Ci0qIGNsaWNrKCcuc29tZS1qUXVl
cnktc2VsZWN0b3InKS50aGVuKGZ1bmN0aW9uKCkgewotKiAgLy8gYXNzZXJ0IHNvbWV0aGluZwot
KiB9KTsKLSogYGBgCi0qCi0qIEBtZXRob2QgY2xpY2sKLSogQHBhcmFtIHtTdHJpbmd9IHNlbGVj
dG9yIGpRdWVyeSBzZWxlY3RvciBmb3IgZmluZGluZyBlbGVtZW50IG9uIHRoZSBET00KLSogQHJl
dHVybiB7UlNWUC5Qcm9taXNlfQotKi8KLWFzeW5jSGVscGVyKCdjbGljaycsIGNsaWNrKTsKLQot
LyoqCi0qIFNpbXVsYXRlcyBhIGtleSBldmVudCwgZS5nLiBga2V5cHJlc3NgLCBga2V5ZG93bmAs
IGBrZXl1cGAgd2l0aCB0aGUgZGVzaXJlZCBrZXlDb2RlCi0qCi0qIEV4YW1wbGU6Ci0qCi0qIGBg
YGphdmFzY3JpcHQKLSoga2V5RXZlbnQoJy5zb21lLWpRdWVyeS1zZWxlY3RvcicsICdrZXlwcmVz
cycsIDEzKS50aGVuKGZ1bmN0aW9uKCkgewotKiAgLy8gYXNzZXJ0IHNvbWV0aGluZwotKiB9KTsK
LSogYGBgCi0qCi0qIEBtZXRob2Qga2V5RXZlbnQKLSogQHBhcmFtIHtTdHJpbmd9IHNlbGVjdG9y
IGpRdWVyeSBzZWxlY3RvciBmb3IgZmluZGluZyBlbGVtZW50IG9uIHRoZSBET00KLSogQHBhcmFt
IHtTdHJpbmd9IHRoZSB0eXBlIG9mIGtleSBldmVudCwgZS5nLiBga2V5cHJlc3NgLCBga2V5ZG93
bmAsIGBrZXl1cGAKLSogQHBhcmFtIHtOdW1iZXJ9IHRoZSBrZXlDb2RlIG9mIHRoZSBzaW11bGF0
ZWQga2V5IGV2ZW50Ci0qIEByZXR1cm4ge1JTVlAuUHJvbWlzZX0KLSovCi1hc3luY0hlbHBlcign
a2V5RXZlbnQnLCBrZXlFdmVudCk7Ci0KLS8qKgotKiBGaWxscyBpbiBhbiBpbnB1dCBlbGVtZW50
IHdpdGggc29tZSB0ZXh0LgotKgotKiBFeGFtcGxlOgotKgotKiBgYGBqYXZhc2NyaXB0Ci0qIGZp
bGxJbignI2VtYWlsJywgJ3lvdUBleGFtcGxlLmNvbScpLnRoZW4oZnVuY3Rpb24oKSB7Ci0qICAg
Ly8gYXNzZXJ0IHNvbWV0aGluZwotKiB9KTsKLSogYGBgCi0qCi0qIEBtZXRob2QgZmlsbEluCi0q
IEBwYXJhbSB7U3RyaW5nfSBzZWxlY3RvciBqUXVlcnkgc2VsZWN0b3IgZmluZGluZyBhbiBpbnB1
dCBlbGVtZW50IG9uIHRoZSBET00KLSogdG8gZmlsbCB0ZXh0IHdpdGgKLSogQHBhcmFtIHtTdHJp
bmd9IHRleHQgdGV4dCB0byBwbGFjZSBpbnNpZGUgdGhlIGlucHV0IGVsZW1lbnQKLSogQHJldHVy
biB7UlNWUC5Qcm9taXNlfQotKi8KLWFzeW5jSGVscGVyKCdmaWxsSW4nLCBmaWxsSW4pOwotCi0v
KioKLSogRmluZHMgYW4gZWxlbWVudCBpbiB0aGUgY29udGV4dCBvZiB0aGUgYXBwJ3MgY29udGFp
bmVyIGVsZW1lbnQuIEEgc2ltcGxlIGFsaWFzCi0qIGZvciBgYXBwLiQoc2VsZWN0b3IpYC4KLSoK
LSogRXhhbXBsZToKLSoKLSogYGBgamF2YXNjcmlwdAotKiB2YXIgJGVsID0gZmluZCgnLm15LXNl
bGVjdG9yKTsKLSogYGBgCi0qCi0qIEBtZXRob2QgZmluZAotKiBAcGFyYW0ge1N0cmluZ30gc2Vs
ZWN0b3IgalF1ZXJ5IHN0cmluZyBzZWxlY3RvciBmb3IgZWxlbWVudCBsb29rdXAKLSogQHJldHVy
biB7T2JqZWN0fSBqUXVlcnkgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgcmVzdWx0cyBvZiB0aGUg
cXVlcnkKLSovCi1oZWxwZXIoJ2ZpbmQnLCBmaW5kKTsKLQotLyoqCi0qIExpa2UgYGZpbmRgLCBi
dXQgdGhyb3dzIGFuIGVycm9yIGlmIHRoZSBlbGVtZW50IHNlbGVjdG9yIHJldHVybnMgbm8gcmVz
dWx0cy4KLSoKLSogRXhhbXBsZToKLSoKLSogYGBgamF2YXNjcmlwdAotKiB2YXIgJGVsID0gZmlu
ZFdpdGhBc3NlcnQoJy5kb2VzbnQtZXhpc3QnKTsgLy8gdGhyb3dzIGVycm9yCi0qIGBgYAotKgot
KiBAbWV0aG9kIGZpbmRXaXRoQXNzZXJ0Ci0qIEBwYXJhbSB7U3RyaW5nfSBzZWxlY3RvciBqUXVl
cnkgc2VsZWN0b3Igc3RyaW5nIGZvciBmaW5kaW5nIGFuIGVsZW1lbnQgd2l0aGluCi0qIHRoZSBE
T00KLSogQHJldHVybiB7T2JqZWN0fSBqUXVlcnkgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgcmVz
dWx0cyBvZiB0aGUgcXVlcnkKLSogQHRocm93cyB7RXJyb3J9IHRocm93cyBlcnJvciBpZiBqUXVl
cnkgb2JqZWN0IHJldHVybmVkIGhhcyBhIGxlbmd0aCBvZiAwCi0qLwotaGVscGVyKCdmaW5kV2l0
aEFzc2VydCcsIGZpbmRXaXRoQXNzZXJ0KTsKLQotLyoqCi0gIENhdXNlcyB0aGUgcnVuIGxvb3Ag
dG8gcHJvY2VzcyBhbnkgcGVuZGluZyBldmVudHMuIFRoaXMgaXMgdXNlZCB0byBlbnN1cmUgdGhh
dAotICBhbnkgYXN5bmMgb3BlcmF0aW9ucyBmcm9tIG90aGVyIGhlbHBlcnMgKG9yIHlvdXIgYXNz
ZXJ0aW9ucykgaGF2ZSBiZWVuIHByb2Nlc3NlZC4KLQotICBUaGlzIGlzIG1vc3Qgb2Z0ZW4gdXNl
ZCBhcyB0aGUgcmV0dXJuIHZhbHVlIGZvciB0aGUgaGVscGVyIGZ1bmN0aW9ucyAoc2VlICdjbGlj
aycsCi0gICdmaWxsSW4nLCd2aXNpdCcsZXRjKS4KLQotICBFeGFtcGxlOgotCi0gIGBgYGphdmFz
Y3JpcHQKLSAgRW1iZXIuVGVzdC5yZWdpc3RlckFzeW5jSGVscGVyKCdsb2dpblVzZXInLCBmdW5j
dGlvbihhcHAsIHVzZXJuYW1lLCBwYXNzd29yZCkgewotICAgIHZpc2l0KCdzZWN1cmVkL3BhdGgv
aGVyZScpCi0gICAgLmZpbGxJbignI3VzZXJuYW1lJywgdXNlcm5hbWUpCi0gICAgLmZpbGxJbign
I3Bhc3N3b3JkJywgdXNlcm5hbWUpCi0gICAgLmNsaWNrKCcuc3VibWl0JykKLQotICAgIHJldHVy
biB3YWl0KCk7Ci0gIH0pOwotCi0gIEBtZXRob2Qgd2FpdAotICBAcGFyYW0ge09iamVjdH0gdmFs
dWUgVGhlIHZhbHVlIHRvIGJlIHJldHVybmVkLgotICBAcmV0dXJuIHtSU1ZQLlByb21pc2V9Ci0q
LwotYXN5bmNIZWxwZXIoJ3dhaXQnLCB3YWl0KTsKLWFzeW5jSGVscGVyKCdhbmRUaGVuJywgYW5k
VGhlbik7Ci0KLQotCi0KLX0pKCk7Ci0KLQotCi0oZnVuY3Rpb24oKSB7Ci0vKioKLSAgRW1iZXIg
VGVzdGluZwotCi0gIEBtb2R1bGUgZW1iZXIKLSAgQHN1Ym1vZHVsZSBlbWJlci10ZXN0aW5nCi0g
IEByZXF1aXJlcyBlbWJlci1hcHBsaWNhdGlvbgotKi8KLQotfSkoKTsKLQotKGZ1bmN0aW9uKCkg
ewotLyoqCi1FbWJlcgotCi1AbW9kdWxlIGVtYmVyCi0qLwotCi1mdW5jdGlvbiB0aHJvd1dpdGhN
ZXNzYWdlKG1zZykgewotICByZXR1cm4gZnVuY3Rpb24oKSB7Ci0gICAgdGhyb3cgbmV3IEVtYmVy
LkVycm9yKG1zZyk7Ci0gIH07Ci19Ci0KLWZ1bmN0aW9uIGdlbmVyYXRlUmVtb3ZlZENsYXNzKGNs
YXNzTmFtZSkgewotICB2YXIgbXNnID0gIiBoYXMgYmVlbiBtb3ZlZCBpbnRvIGEgcGx1Z2luOiBo
dHRwczovL2dpdGh1Yi5jb20vZW1iZXJqcy9lbWJlci1zdGF0ZXMiOwotCi0gIHJldHVybiB7Ci0g
ICAgZXh0ZW5kOiB0aHJvd1dpdGhNZXNzYWdlKGNsYXNzTmFtZSArIG1zZyksCi0gICAgY3JlYXRl
OiB0aHJvd1dpdGhNZXNzYWdlKGNsYXNzTmFtZSArIG1zZykKLSAgfTsKLX0KLQotRW1iZXIuU3Rh
dGVNYW5hZ2VyID0gZ2VuZXJhdGVSZW1vdmVkQ2xhc3MoIkVtYmVyLlN0YXRlTWFuYWdlciIpOwot
Ci0vKioKLSAgVGhpcyB3YXMgZXhwb3J0ZWQgdG8gZW1iZXItc3RhdGVzIHBsdWdpbiBmb3IgdiAx
LjAuMCByZWxlYXNlLiBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9lbWJlcmpzL2VtYmVyLXN0YXRl
cwotICAKLSAgQGNsYXNzIFN0YXRlTWFuYWdlcgotICBAbmFtZXNwYWNlIEVtYmVyCi0qLwotCi1F
bWJlci5TdGF0ZSA9IGdlbmVyYXRlUmVtb3ZlZENsYXNzKCJFbWJlci5TdGF0ZSIpOwotCi0vKioK
LSAgVGhpcyB3YXMgZXhwb3J0ZWQgdG8gZW1iZXItc3RhdGVzIHBsdWdpbiBmb3IgdiAxLjAuMCBy
ZWxlYXNlLiBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9lbWJlcmpzL2VtYmVyLXN0YXRlcwotICAK
LSAgQGNsYXNzIFN0YXRlCi0gIEBuYW1lc3BhY2UgRW1iZXIKLSovCi0KLX0pKCk7Ci0KLQotfSko
KTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvYm93ZXJfY29tcG9uZW50cy9oYW5k
bGViYXJzL2hhbmRsZWJhcnMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL2Jvd2VyX2NvbXBvbmVu
dHMvaGFuZGxlYmFycy9oYW5kbGViYXJzLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA3ZmEyNTEwMzNiNGNkZjM1MzBiMzhlN2NmOGRkODg5MTA3NGQyMjM2Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvYm93
ZXJfY29tcG9uZW50cy9oYW5kbGViYXJzL2hhbmRsZWJhcnMuanMKKysrIC9kZXYvbnVsbApAQCAt
MSwyNzQ2ICswLDAgQEAKLS8qIQotCi0gaGFuZGxlYmFycyB2MS4zLjAKLQotQ29weXJpZ2h0IChD
KSAyMDExIGJ5IFllaHVkYSBLYXR6Ci0KLVBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZy
ZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKLW9mIHRoaXMgc29m
dHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIp
LCB0byBkZWFsCi1pbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5n
IHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCi10byB1c2UsIGNvcHksIG1vZGlmeSwgbWVy
Z2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCi1jb3BpZXMg
b2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdh
cmUgaXMKLWZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnM6Ci0KLVRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24g
bm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCi1hbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBv
cnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLQotVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJ
UyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKLUlNUExJRUQsIElO
Q0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZLAotRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVO
VC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCi1BVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJF
IExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCi1MSUFCSUxJVFksIFdIRVRI
RVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBG
Uk9NLAotT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVT
RSBPUiBPVEhFUiBERUFMSU5HUyBJTgotVEhFIFNPRlRXQVJFLgotCi1AbGljZW5zZQotKi8KLS8q
IGV4cG9ydGVkIEhhbmRsZWJhcnMgKi8KLXZhciBIYW5kbGViYXJzID0gKGZ1bmN0aW9uKCkgewot
Ly8gaGFuZGxlYmFycy9zYWZlLXN0cmluZy5qcwotdmFyIF9fbW9kdWxlNF9fID0gKGZ1bmN0aW9u
KCkgewotICAidXNlIHN0cmljdCI7Ci0gIHZhciBfX2V4cG9ydHNfXzsKLSAgLy8gQnVpbGQgb3V0
IG91ciBiYXNpYyBTYWZlU3RyaW5nIHR5cGUKLSAgZnVuY3Rpb24gU2FmZVN0cmluZyhzdHJpbmcp
IHsKLSAgICB0aGlzLnN0cmluZyA9IHN0cmluZzsKLSAgfQotCi0gIFNhZmVTdHJpbmcucHJvdG90
eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7Ci0gICAgcmV0dXJuICIiICsgdGhpcy5zdHJpbmc7
Ci0gIH07Ci0KLSAgX19leHBvcnRzX18gPSBTYWZlU3RyaW5nOwotICByZXR1cm4gX19leHBvcnRz
X187Ci19KSgpOwotCi0vLyBoYW5kbGViYXJzL3V0aWxzLmpzCi12YXIgX19tb2R1bGUzX18gPSAo
ZnVuY3Rpb24oX19kZXBlbmRlbmN5MV9fKSB7Ci0gICJ1c2Ugc3RyaWN0IjsKLSAgdmFyIF9fZXhw
b3J0c19fID0ge307Ci0gIC8qanNoaW50IC1XMDA0ICovCi0gIHZhciBTYWZlU3RyaW5nID0gX19k
ZXBlbmRlbmN5MV9fOwotCi0gIHZhciBlc2NhcGUgPSB7Ci0gICAgIiYiOiAiJmFtcDsiLAotICAg
ICI8IjogIiZsdDsiLAotICAgICI+IjogIiZndDsiLAotICAgICciJzogIiZxdW90OyIsCi0gICAg
IiciOiAiJiN4Mjc7IiwKLSAgICAiYCI6ICImI3g2MDsiCi0gIH07Ci0KLSAgdmFyIGJhZENoYXJz
ID0gL1smPD4iJ2BdL2c7Ci0gIHZhciBwb3NzaWJsZSA9IC9bJjw+IidgXS87Ci0KLSAgZnVuY3Rp
b24gZXNjYXBlQ2hhcihjaHIpIHsKLSAgICByZXR1cm4gZXNjYXBlW2Nocl0gfHwgIiZhbXA7IjsK
LSAgfQotCi0gIGZ1bmN0aW9uIGV4dGVuZChvYmosIHZhbHVlKSB7Ci0gICAgZm9yKHZhciBrZXkg
aW4gdmFsdWUpIHsKLSAgICAgIGlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2Fs
bCh2YWx1ZSwga2V5KSkgewotICAgICAgICBvYmpba2V5XSA9IHZhbHVlW2tleV07Ci0gICAgICB9
Ci0gICAgfQotICB9Ci0KLSAgX19leHBvcnRzX18uZXh0ZW5kID0gZXh0ZW5kO3ZhciB0b1N0cmlu
ZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7Ci0gIF9fZXhwb3J0c19fLnRvU3RyaW5nID0g
dG9TdHJpbmc7Ci0gIC8vIFNvdXJjZWQgZnJvbSBsb2Rhc2gKLSAgLy8gaHR0cHM6Ly9naXRodWIu
Y29tL2Jlc3RpZWpzL2xvZGFzaC9ibG9iL21hc3Rlci9MSUNFTlNFLnR4dAotICB2YXIgaXNGdW5j
dGlvbiA9IGZ1bmN0aW9uKHZhbHVlKSB7Ci0gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1
bmN0aW9uJzsKLSAgfTsKLSAgLy8gZmFsbGJhY2sgZm9yIG9sZGVyIHZlcnNpb25zIG9mIENocm9t
ZSBhbmQgU2FmYXJpCi0gIGlmIChpc0Z1bmN0aW9uKC94LykpIHsKLSAgICBpc0Z1bmN0aW9uID0g
ZnVuY3Rpb24odmFsdWUpIHsKLSAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlv
bicgJiYgdG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT09ICdbb2JqZWN0IEZ1bmN0aW9uXSc7Ci0gICAg
fTsKLSAgfQotICB2YXIgaXNGdW5jdGlvbjsKLSAgX19leHBvcnRzX18uaXNGdW5jdGlvbiA9IGlz
RnVuY3Rpb247Ci0gIHZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheSB8fCBmdW5jdGlvbih2YWx1
ZSkgewotICAgIHJldHVybiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JykgPyB0
b1N0cmluZy5jYWxsKHZhbHVlKSA9PT0gJ1tvYmplY3QgQXJyYXldJyA6IGZhbHNlOwotICB9Owot
ICBfX2V4cG9ydHNfXy5pc0FycmF5ID0gaXNBcnJheTsKLQotICBmdW5jdGlvbiBlc2NhcGVFeHBy
ZXNzaW9uKHN0cmluZykgewotICAgIC8vIGRvbid0IGVzY2FwZSBTYWZlU3RyaW5ncywgc2luY2Ug
dGhleSdyZSBhbHJlYWR5IHNhZmUKLSAgICBpZiAoc3RyaW5nIGluc3RhbmNlb2YgU2FmZVN0cmlu
ZykgewotICAgICAgcmV0dXJuIHN0cmluZy50b1N0cmluZygpOwotICAgIH0gZWxzZSBpZiAoIXN0
cmluZyAmJiBzdHJpbmcgIT09IDApIHsKLSAgICAgIHJldHVybiAiIjsKLSAgICB9Ci0KLSAgICAv
LyBGb3JjZSBhIHN0cmluZyBjb252ZXJzaW9uIGFzIHRoaXMgd2lsbCBiZSBkb25lIGJ5IHRoZSBh
cHBlbmQgcmVnYXJkbGVzcyBhbmQKLSAgICAvLyB0aGUgcmVnZXggdGVzdCB3aWxsIGRvIHRoaXMg
dHJhbnNwYXJlbnRseSBiZWhpbmQgdGhlIHNjZW5lcywgY2F1c2luZyBpc3N1ZXMgaWYKLSAgICAv
LyBhbiBvYmplY3QncyB0byBzdHJpbmcgaGFzIGVzY2FwZWQgY2hhcmFjdGVycyBpbiBpdC4KLSAg
ICBzdHJpbmcgPSAiIiArIHN0cmluZzsKLQotICAgIGlmKCFwb3NzaWJsZS50ZXN0KHN0cmluZykp
IHsgcmV0dXJuIHN0cmluZzsgfQotICAgIHJldHVybiBzdHJpbmcucmVwbGFjZShiYWRDaGFycywg
ZXNjYXBlQ2hhcik7Ci0gIH0KLQotICBfX2V4cG9ydHNfXy5lc2NhcGVFeHByZXNzaW9uID0gZXNj
YXBlRXhwcmVzc2lvbjtmdW5jdGlvbiBpc0VtcHR5KHZhbHVlKSB7Ci0gICAgaWYgKCF2YWx1ZSAm
JiB2YWx1ZSAhPT0gMCkgewotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSBlbHNlIGlmIChpc0Fy
cmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPT09IDApIHsKLSAgICAgIHJldHVybiB0cnVlOwot
ICAgIH0gZWxzZSB7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICB9Ci0KLSAgX19leHBv
cnRzX18uaXNFbXB0eSA9IGlzRW1wdHk7Ci0gIHJldHVybiBfX2V4cG9ydHNfXzsKLX0pKF9fbW9k
dWxlNF9fKTsKLQotLy8gaGFuZGxlYmFycy9leGNlcHRpb24uanMKLXZhciBfX21vZHVsZTVfXyA9
IChmdW5jdGlvbigpIHsKLSAgInVzZSBzdHJpY3QiOwotICB2YXIgX19leHBvcnRzX187Ci0KLSAg
dmFyIGVycm9yUHJvcHMgPSBbJ2Rlc2NyaXB0aW9uJywgJ2ZpbGVOYW1lJywgJ2xpbmVOdW1iZXIn
LCAnbWVzc2FnZScsICduYW1lJywgJ251bWJlcicsICdzdGFjayddOwotCi0gIGZ1bmN0aW9uIEV4
Y2VwdGlvbihtZXNzYWdlLCBub2RlKSB7Ci0gICAgdmFyIGxpbmU7Ci0gICAgaWYgKG5vZGUgJiYg
bm9kZS5maXJzdExpbmUpIHsKLSAgICAgIGxpbmUgPSBub2RlLmZpcnN0TGluZTsKLQotICAgICAg
bWVzc2FnZSArPSAnIC0gJyArIGxpbmUgKyAnOicgKyBub2RlLmZpcnN0Q29sdW1uOwotICAgIH0K
LQotICAgIHZhciB0bXAgPSBFcnJvci5wcm90b3R5cGUuY29uc3RydWN0b3IuY2FsbCh0aGlzLCBt
ZXNzYWdlKTsKLQotICAgIC8vIFVuZm9ydHVuYXRlbHkgZXJyb3JzIGFyZSBub3QgZW51bWVyYWJs
ZSBpbiBDaHJvbWUgKGF0IGxlYXN0KSwgc28gYGZvciBwcm9wIGluIHRtcGAgZG9lc24ndCB3b3Jr
LgotICAgIGZvciAodmFyIGlkeCA9IDA7IGlkeCA8IGVycm9yUHJvcHMubGVuZ3RoOyBpZHgrKykg
ewotICAgICAgdGhpc1tlcnJvclByb3BzW2lkeF1dID0gdG1wW2Vycm9yUHJvcHNbaWR4XV07Ci0g
ICAgfQotCi0gICAgaWYgKGxpbmUpIHsKLSAgICAgIHRoaXMubGluZU51bWJlciA9IGxpbmU7Ci0g
ICAgICB0aGlzLmNvbHVtbiA9IG5vZGUuZmlyc3RDb2x1bW47Ci0gICAgfQotICB9Ci0KLSAgRXhj
ZXB0aW9uLnByb3RvdHlwZSA9IG5ldyBFcnJvcigpOwotCi0gIF9fZXhwb3J0c19fID0gRXhjZXB0
aW9uOwotICByZXR1cm4gX19leHBvcnRzX187Ci19KSgpOwotCi0vLyBoYW5kbGViYXJzL2Jhc2Uu
anMKLXZhciBfX21vZHVsZTJfXyA9IChmdW5jdGlvbihfX2RlcGVuZGVuY3kxX18sIF9fZGVwZW5k
ZW5jeTJfXykgewotICAidXNlIHN0cmljdCI7Ci0gIHZhciBfX2V4cG9ydHNfXyA9IHt9OwotICB2
YXIgVXRpbHMgPSBfX2RlcGVuZGVuY3kxX187Ci0gIHZhciBFeGNlcHRpb24gPSBfX2RlcGVuZGVu
Y3kyX187Ci0KLSAgdmFyIFZFUlNJT04gPSAiMS4zLjAiOwotICBfX2V4cG9ydHNfXy5WRVJTSU9O
ID0gVkVSU0lPTjt2YXIgQ09NUElMRVJfUkVWSVNJT04gPSA0OwotICBfX2V4cG9ydHNfXy5DT01Q
SUxFUl9SRVZJU0lPTiA9IENPTVBJTEVSX1JFVklTSU9OOwotICB2YXIgUkVWSVNJT05fQ0hBTkdF
UyA9IHsKLSAgICAxOiAnPD0gMS4wLnJjLjInLCAvLyAxLjAucmMuMiBpcyBhY3R1YWxseSByZXYy
IGJ1dCBkb2Vzbid0IHJlcG9ydCBpdAotICAgIDI6ICc9PSAxLjAuMC1yYy4zJywKLSAgICAzOiAn
PT0gMS4wLjAtcmMuNCcsCi0gICAgNDogJz49IDEuMC4wJwotICB9OwotICBfX2V4cG9ydHNfXy5S
RVZJU0lPTl9DSEFOR0VTID0gUkVWSVNJT05fQ0hBTkdFUzsKLSAgdmFyIGlzQXJyYXkgPSBVdGls
cy5pc0FycmF5LAotICAgICAgaXNGdW5jdGlvbiA9IFV0aWxzLmlzRnVuY3Rpb24sCi0gICAgICB0
b1N0cmluZyA9IFV0aWxzLnRvU3RyaW5nLAotICAgICAgb2JqZWN0VHlwZSA9ICdbb2JqZWN0IE9i
amVjdF0nOwotCi0gIGZ1bmN0aW9uIEhhbmRsZWJhcnNFbnZpcm9ubWVudChoZWxwZXJzLCBwYXJ0
aWFscykgewotICAgIHRoaXMuaGVscGVycyA9IGhlbHBlcnMgfHwge307Ci0gICAgdGhpcy5wYXJ0
aWFscyA9IHBhcnRpYWxzIHx8IHt9OwotCi0gICAgcmVnaXN0ZXJEZWZhdWx0SGVscGVycyh0aGlz
KTsKLSAgfQotCi0gIF9fZXhwb3J0c19fLkhhbmRsZWJhcnNFbnZpcm9ubWVudCA9IEhhbmRsZWJh
cnNFbnZpcm9ubWVudDtIYW5kbGViYXJzRW52aXJvbm1lbnQucHJvdG90eXBlID0gewotICAgIGNv
bnN0cnVjdG9yOiBIYW5kbGViYXJzRW52aXJvbm1lbnQsCi0KLSAgICBsb2dnZXI6IGxvZ2dlciwK
LSAgICBsb2c6IGxvZywKLQotICAgIHJlZ2lzdGVySGVscGVyOiBmdW5jdGlvbihuYW1lLCBmbiwg
aW52ZXJzZSkgewotICAgICAgaWYgKHRvU3RyaW5nLmNhbGwobmFtZSkgPT09IG9iamVjdFR5cGUp
IHsKLSAgICAgICAgaWYgKGludmVyc2UgfHwgZm4pIHsgdGhyb3cgbmV3IEV4Y2VwdGlvbignQXJn
IG5vdCBzdXBwb3J0ZWQgd2l0aCBtdWx0aXBsZSBoZWxwZXJzJyk7IH0KLSAgICAgICAgVXRpbHMu
ZXh0ZW5kKHRoaXMuaGVscGVycywgbmFtZSk7Ci0gICAgICB9IGVsc2UgewotICAgICAgICBpZiAo
aW52ZXJzZSkgeyBmbi5ub3QgPSBpbnZlcnNlOyB9Ci0gICAgICAgIHRoaXMuaGVscGVyc1tuYW1l
XSA9IGZuOwotICAgICAgfQotICAgIH0sCi0KLSAgICByZWdpc3RlclBhcnRpYWw6IGZ1bmN0aW9u
KG5hbWUsIHN0cikgewotICAgICAgaWYgKHRvU3RyaW5nLmNhbGwobmFtZSkgPT09IG9iamVjdFR5
cGUpIHsKLSAgICAgICAgVXRpbHMuZXh0ZW5kKHRoaXMucGFydGlhbHMsICBuYW1lKTsKLSAgICAg
IH0gZWxzZSB7Ci0gICAgICAgIHRoaXMucGFydGlhbHNbbmFtZV0gPSBzdHI7Ci0gICAgICB9Ci0g
ICAgfQotICB9OwotCi0gIGZ1bmN0aW9uIHJlZ2lzdGVyRGVmYXVsdEhlbHBlcnMoaW5zdGFuY2Up
IHsKLSAgICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcignaGVscGVyTWlzc2luZycsIGZ1bmN0aW9u
KGFyZykgewotICAgICAgaWYoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgewotICAgICAgICByZXR1
cm4gdW5kZWZpbmVkOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlv
bigiTWlzc2luZyBoZWxwZXI6ICciICsgYXJnICsgIiciKTsKLSAgICAgIH0KLSAgICB9KTsKLQot
ICAgIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCdibG9ja0hlbHBlck1pc3NpbmcnLCBmdW5jdGlv
bihjb250ZXh0LCBvcHRpb25zKSB7Ci0gICAgICB2YXIgaW52ZXJzZSA9IG9wdGlvbnMuaW52ZXJz
ZSB8fCBmdW5jdGlvbigpIHt9LCBmbiA9IG9wdGlvbnMuZm47Ci0KLSAgICAgIGlmIChpc0Z1bmN0
aW9uKGNvbnRleHQpKSB7IGNvbnRleHQgPSBjb250ZXh0LmNhbGwodGhpcyk7IH0KLQotICAgICAg
aWYoY29udGV4dCA9PT0gdHJ1ZSkgewotICAgICAgICByZXR1cm4gZm4odGhpcyk7Ci0gICAgICB9
IGVsc2UgaWYoY29udGV4dCA9PT0gZmFsc2UgfHwgY29udGV4dCA9PSBudWxsKSB7Ci0gICAgICAg
IHJldHVybiBpbnZlcnNlKHRoaXMpOwotICAgICAgfSBlbHNlIGlmIChpc0FycmF5KGNvbnRleHQp
KSB7Ci0gICAgICAgIGlmKGNvbnRleHQubGVuZ3RoID4gMCkgewotICAgICAgICAgIHJldHVybiBp
bnN0YW5jZS5oZWxwZXJzLmVhY2goY29udGV4dCwgb3B0aW9ucyk7Ci0gICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgcmV0dXJuIGludmVyc2UodGhpcyk7Ci0gICAgICAgIH0KLSAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgIHJldHVybiBmbihjb250ZXh0KTsKLSAgICAgIH0KLSAgICB9KTsKLQotICAg
IGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCdlYWNoJywgZnVuY3Rpb24oY29udGV4dCwgb3B0aW9u
cykgewotICAgICAgdmFyIGZuID0gb3B0aW9ucy5mbiwgaW52ZXJzZSA9IG9wdGlvbnMuaW52ZXJz
ZTsKLSAgICAgIHZhciBpID0gMCwgcmV0ID0gIiIsIGRhdGE7Ci0KLSAgICAgIGlmIChpc0Z1bmN0
aW9uKGNvbnRleHQpKSB7IGNvbnRleHQgPSBjb250ZXh0LmNhbGwodGhpcyk7IH0KLQotICAgICAg
aWYgKG9wdGlvbnMuZGF0YSkgewotICAgICAgICBkYXRhID0gY3JlYXRlRnJhbWUob3B0aW9ucy5k
YXRhKTsKLSAgICAgIH0KLQotICAgICAgaWYoY29udGV4dCAmJiB0eXBlb2YgY29udGV4dCA9PT0g
J29iamVjdCcpIHsKLSAgICAgICAgaWYgKGlzQXJyYXkoY29udGV4dCkpIHsKLSAgICAgICAgICBm
b3IodmFyIGogPSBjb250ZXh0Lmxlbmd0aDsgaTxqOyBpKyspIHsKLSAgICAgICAgICAgIGlmIChk
YXRhKSB7Ci0gICAgICAgICAgICAgIGRhdGEuaW5kZXggPSBpOwotICAgICAgICAgICAgICBkYXRh
LmZpcnN0ID0gKGkgPT09IDApOwotICAgICAgICAgICAgICBkYXRhLmxhc3QgID0gKGkgPT09IChj
b250ZXh0Lmxlbmd0aC0xKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXQgPSByZXQg
KyBmbihjb250ZXh0W2ldLCB7IGRhdGE6IGRhdGEgfSk7Ci0gICAgICAgICAgfQotICAgICAgICB9
IGVsc2UgewotICAgICAgICAgIGZvcih2YXIga2V5IGluIGNvbnRleHQpIHsKLSAgICAgICAgICAg
IGlmKGNvbnRleHQuaGFzT3duUHJvcGVydHkoa2V5KSkgewotICAgICAgICAgICAgICBpZihkYXRh
KSB7IAotICAgICAgICAgICAgICAgIGRhdGEua2V5ID0ga2V5OyAKLSAgICAgICAgICAgICAgICBk
YXRhLmluZGV4ID0gaTsKLSAgICAgICAgICAgICAgICBkYXRhLmZpcnN0ID0gKGkgPT09IDApOwot
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIHJldCA9IHJldCArIGZuKGNvbnRleHRba2V5
XSwge2RhdGE6IGRhdGF9KTsKLSAgICAgICAgICAgICAgaSsrOwotICAgICAgICAgICAgfQotICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotCi0gICAgICBpZihpID09PSAwKXsKLSAgICAg
ICAgcmV0ID0gaW52ZXJzZSh0aGlzKTsKLSAgICAgIH0KLQotICAgICAgcmV0dXJuIHJldDsKLSAg
ICB9KTsKLQotICAgIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCdpZicsIGZ1bmN0aW9uKGNvbmRp
dGlvbmFsLCBvcHRpb25zKSB7Ci0gICAgICBpZiAoaXNGdW5jdGlvbihjb25kaXRpb25hbCkpIHsg
Y29uZGl0aW9uYWwgPSBjb25kaXRpb25hbC5jYWxsKHRoaXMpOyB9Ci0KLSAgICAgIC8vIERlZmF1
bHQgYmVoYXZpb3IgaXMgdG8gcmVuZGVyIHRoZSBwb3NpdGl2ZSBwYXRoIGlmIHRoZSB2YWx1ZSBp
cyB0cnV0aHkgYW5kIG5vdCBlbXB0eS4KLSAgICAgIC8vIFRoZSBgaW5jbHVkZVplcm9gIG9wdGlv
biBtYXkgYmUgc2V0IHRvIHRyZWF0IHRoZSBjb25kdGlvbmFsIGFzIHB1cmVseSBub3QgZW1wdHkg
YmFzZWQgb24gdGhlCi0gICAgICAvLyBiZWhhdmlvciBvZiBpc0VtcHR5LiBFZmZlY3RpdmVseSB0
aGlzIGRldGVybWluZXMgaWYgMCBpcyBoYW5kbGVkIGJ5IHRoZSBwb3NpdGl2ZSBwYXRoIG9yIG5l
Z2F0aXZlLgotICAgICAgaWYgKCghb3B0aW9ucy5oYXNoLmluY2x1ZGVaZXJvICYmICFjb25kaXRp
b25hbCkgfHwgVXRpbHMuaXNFbXB0eShjb25kaXRpb25hbCkpIHsKLSAgICAgICAgcmV0dXJuIG9w
dGlvbnMuaW52ZXJzZSh0aGlzKTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIHJldHVybiBvcHRp
b25zLmZuKHRoaXMpOwotICAgICAgfQotICAgIH0pOwotCi0gICAgaW5zdGFuY2UucmVnaXN0ZXJI
ZWxwZXIoJ3VubGVzcycsIGZ1bmN0aW9uKGNvbmRpdGlvbmFsLCBvcHRpb25zKSB7Ci0gICAgICBy
ZXR1cm4gaW5zdGFuY2UuaGVscGVyc1snaWYnXS5jYWxsKHRoaXMsIGNvbmRpdGlvbmFsLCB7Zm46
IG9wdGlvbnMuaW52ZXJzZSwgaW52ZXJzZTogb3B0aW9ucy5mbiwgaGFzaDogb3B0aW9ucy5oYXNo
fSk7Ci0gICAgfSk7Ci0KLSAgICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcignd2l0aCcsIGZ1bmN0
aW9uKGNvbnRleHQsIG9wdGlvbnMpIHsKLSAgICAgIGlmIChpc0Z1bmN0aW9uKGNvbnRleHQpKSB7
IGNvbnRleHQgPSBjb250ZXh0LmNhbGwodGhpcyk7IH0KLQotICAgICAgaWYgKCFVdGlscy5pc0Vt
cHR5KGNvbnRleHQpKSByZXR1cm4gb3B0aW9ucy5mbihjb250ZXh0KTsKLSAgICB9KTsKLQotICAg
IGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCdsb2cnLCBmdW5jdGlvbihjb250ZXh0LCBvcHRpb25z
KSB7Ci0gICAgICB2YXIgbGV2ZWwgPSBvcHRpb25zLmRhdGEgJiYgb3B0aW9ucy5kYXRhLmxldmVs
ICE9IG51bGwgPyBwYXJzZUludChvcHRpb25zLmRhdGEubGV2ZWwsIDEwKSA6IDE7Ci0gICAgICBp
bnN0YW5jZS5sb2cobGV2ZWwsIGNvbnRleHQpOwotICAgIH0pOwotICB9Ci0KLSAgdmFyIGxvZ2dl
ciA9IHsKLSAgICBtZXRob2RNYXA6IHsgMDogJ2RlYnVnJywgMTogJ2luZm8nLCAyOiAnd2Fybics
IDM6ICdlcnJvcicgfSwKLQotICAgIC8vIFN0YXRlIGVudW0KLSAgICBERUJVRzogMCwKLSAgICBJ
TkZPOiAxLAotICAgIFdBUk46IDIsCi0gICAgRVJST1I6IDMsCi0gICAgbGV2ZWw6IDMsCi0KLSAg
ICAvLyBjYW4gYmUgb3ZlcnJpZGRlbiBpbiB0aGUgaG9zdCBlbnZpcm9ubWVudAotICAgIGxvZzog
ZnVuY3Rpb24obGV2ZWwsIG9iaikgewotICAgICAgaWYgKGxvZ2dlci5sZXZlbCA8PSBsZXZlbCkg
ewotICAgICAgICB2YXIgbWV0aG9kID0gbG9nZ2VyLm1ldGhvZE1hcFtsZXZlbF07Ci0gICAgICAg
IGlmICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcgJiYgY29uc29sZVttZXRob2RdKSB7
Ci0gICAgICAgICAgY29uc29sZVttZXRob2RdLmNhbGwoY29uc29sZSwgb2JqKTsKLSAgICAgICAg
fQotICAgICAgfQotICAgIH0KLSAgfTsKLSAgX19leHBvcnRzX18ubG9nZ2VyID0gbG9nZ2VyOwot
ICBmdW5jdGlvbiBsb2cobGV2ZWwsIG9iaikgeyBsb2dnZXIubG9nKGxldmVsLCBvYmopOyB9Ci0K
LSAgX19leHBvcnRzX18ubG9nID0gbG9nO3ZhciBjcmVhdGVGcmFtZSA9IGZ1bmN0aW9uKG9iamVj
dCkgewotICAgIHZhciBvYmogPSB7fTsKLSAgICBVdGlscy5leHRlbmQob2JqLCBvYmplY3QpOwot
ICAgIHJldHVybiBvYmo7Ci0gIH07Ci0gIF9fZXhwb3J0c19fLmNyZWF0ZUZyYW1lID0gY3JlYXRl
RnJhbWU7Ci0gIHJldHVybiBfX2V4cG9ydHNfXzsKLX0pKF9fbW9kdWxlM19fLCBfX21vZHVsZTVf
Xyk7Ci0KLS8vIGhhbmRsZWJhcnMvcnVudGltZS5qcwotdmFyIF9fbW9kdWxlNl9fID0gKGZ1bmN0
aW9uKF9fZGVwZW5kZW5jeTFfXywgX19kZXBlbmRlbmN5Ml9fLCBfX2RlcGVuZGVuY3kzX18pIHsK
LSAgInVzZSBzdHJpY3QiOwotICB2YXIgX19leHBvcnRzX18gPSB7fTsKLSAgdmFyIFV0aWxzID0g
X19kZXBlbmRlbmN5MV9fOwotICB2YXIgRXhjZXB0aW9uID0gX19kZXBlbmRlbmN5Ml9fOwotICB2
YXIgQ09NUElMRVJfUkVWSVNJT04gPSBfX2RlcGVuZGVuY3kzX18uQ09NUElMRVJfUkVWSVNJT047
Ci0gIHZhciBSRVZJU0lPTl9DSEFOR0VTID0gX19kZXBlbmRlbmN5M19fLlJFVklTSU9OX0NIQU5H
RVM7Ci0KLSAgZnVuY3Rpb24gY2hlY2tSZXZpc2lvbihjb21waWxlckluZm8pIHsKLSAgICB2YXIg
Y29tcGlsZXJSZXZpc2lvbiA9IGNvbXBpbGVySW5mbyAmJiBjb21waWxlckluZm9bMF0gfHwgMSwK
LSAgICAgICAgY3VycmVudFJldmlzaW9uID0gQ09NUElMRVJfUkVWSVNJT047Ci0KLSAgICBpZiAo
Y29tcGlsZXJSZXZpc2lvbiAhPT0gY3VycmVudFJldmlzaW9uKSB7Ci0gICAgICBpZiAoY29tcGls
ZXJSZXZpc2lvbiA8IGN1cnJlbnRSZXZpc2lvbikgewotICAgICAgICB2YXIgcnVudGltZVZlcnNp
b25zID0gUkVWSVNJT05fQ0hBTkdFU1tjdXJyZW50UmV2aXNpb25dLAotICAgICAgICAgICAgY29t
cGlsZXJWZXJzaW9ucyA9IFJFVklTSU9OX0NIQU5HRVNbY29tcGlsZXJSZXZpc2lvbl07Ci0gICAg
ICAgIHRocm93IG5ldyBFeGNlcHRpb24oIlRlbXBsYXRlIHdhcyBwcmVjb21waWxlZCB3aXRoIGFu
IG9sZGVyIHZlcnNpb24gb2YgSGFuZGxlYmFycyB0aGFuIHRoZSBjdXJyZW50IHJ1bnRpbWUuICIr
Ci0gICAgICAgICAgICAgICJQbGVhc2UgdXBkYXRlIHlvdXIgcHJlY29tcGlsZXIgdG8gYSBuZXdl
ciB2ZXJzaW9uICgiK3J1bnRpbWVWZXJzaW9ucysiKSBvciBkb3duZ3JhZGUgeW91ciBydW50aW1l
IHRvIGFuIG9sZGVyIHZlcnNpb24gKCIrY29tcGlsZXJWZXJzaW9ucysiKS4iKTsKLSAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgIC8vIFVzZSB0aGUgZW1iZWRkZWQgdmVyc2lvbiBpbmZvIHNpbmNlIHRo
ZSBydW50aW1lIGRvZXNuJ3Qga25vdyBhYm91dCB0aGlzIHJldmlzaW9uIHlldAotICAgICAgICB0
aHJvdyBuZXcgRXhjZXB0aW9uKCJUZW1wbGF0ZSB3YXMgcHJlY29tcGlsZWQgd2l0aCBhIG5ld2Vy
IHZlcnNpb24gb2YgSGFuZGxlYmFycyB0aGFuIHRoZSBjdXJyZW50IHJ1bnRpbWUuICIrCi0gICAg
ICAgICAgICAgICJQbGVhc2UgdXBkYXRlIHlvdXIgcnVudGltZSB0byBhIG5ld2VyIHZlcnNpb24g
KCIrY29tcGlsZXJJbmZvWzFdKyIpLiIpOwotICAgICAgfQotICAgIH0KLSAgfQotCi0gIF9fZXhw
b3J0c19fLmNoZWNrUmV2aXNpb24gPSBjaGVja1JldmlzaW9uOy8vIFRPRE86IFJlbW92ZSB0aGlz
IGxpbmUgYW5kIGJyZWFrIHVwIGNvbXBpbGVQYXJ0aWFsCi0KLSAgZnVuY3Rpb24gdGVtcGxhdGUo
dGVtcGxhdGVTcGVjLCBlbnYpIHsKLSAgICBpZiAoIWVudikgewotICAgICAgdGhyb3cgbmV3IEV4
Y2VwdGlvbigiTm8gZW52aXJvbm1lbnQgcGFzc2VkIHRvIHRlbXBsYXRlIik7Ci0gICAgfQotCi0g
ICAgLy8gTm90ZTogVXNpbmcgZW52LlZNIHJlZmVyZW5jZXMgcmF0aGVyIHRoYW4gbG9jYWwgdmFy
IHJlZmVyZW5jZXMgdGhyb3VnaG91dCB0aGlzIHNlY3Rpb24gdG8gYWxsb3cKLSAgICAvLyBmb3Ig
ZXh0ZXJuYWwgdXNlcnMgdG8gb3ZlcnJpZGUgdGhlc2UgYXMgcHNldWRvLXN1cHBvcnRlZCBBUElz
LgotICAgIHZhciBpbnZva2VQYXJ0aWFsV3JhcHBlciA9IGZ1bmN0aW9uKHBhcnRpYWwsIG5hbWUs
IGNvbnRleHQsIGhlbHBlcnMsIHBhcnRpYWxzLCBkYXRhKSB7Ci0gICAgICB2YXIgcmVzdWx0ID0g
ZW52LlZNLmludm9rZVBhcnRpYWwuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKLSAgICAgIGlmIChy
ZXN1bHQgIT0gbnVsbCkgeyByZXR1cm4gcmVzdWx0OyB9Ci0KLSAgICAgIGlmIChlbnYuY29tcGls
ZSkgewotICAgICAgICB2YXIgb3B0aW9ucyA9IHsgaGVscGVyczogaGVscGVycywgcGFydGlhbHM6
IHBhcnRpYWxzLCBkYXRhOiBkYXRhIH07Ci0gICAgICAgIHBhcnRpYWxzW25hbWVdID0gZW52LmNv
bXBpbGUocGFydGlhbCwgeyBkYXRhOiBkYXRhICE9PSB1bmRlZmluZWQgfSwgZW52KTsKLSAgICAg
ICAgcmV0dXJuIHBhcnRpYWxzW25hbWVdKGNvbnRleHQsIG9wdGlvbnMpOwotICAgICAgfSBlbHNl
IHsKLSAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigiVGhlIHBhcnRpYWwgIiArIG5hbWUgKyAi
IGNvdWxkIG5vdCBiZSBjb21waWxlZCB3aGVuIHJ1bm5pbmcgaW4gcnVudGltZS1vbmx5IG1vZGUi
KTsKLSAgICAgIH0KLSAgICB9OwotCi0gICAgLy8gSnVzdCBhZGQgd2F0ZXIKLSAgICB2YXIgY29u
dGFpbmVyID0gewotICAgICAgZXNjYXBlRXhwcmVzc2lvbjogVXRpbHMuZXNjYXBlRXhwcmVzc2lv
biwKLSAgICAgIGludm9rZVBhcnRpYWw6IGludm9rZVBhcnRpYWxXcmFwcGVyLAotICAgICAgcHJv
Z3JhbXM6IFtdLAotICAgICAgcHJvZ3JhbTogZnVuY3Rpb24oaSwgZm4sIGRhdGEpIHsKLSAgICAg
ICAgdmFyIHByb2dyYW1XcmFwcGVyID0gdGhpcy5wcm9ncmFtc1tpXTsKLSAgICAgICAgaWYoZGF0
YSkgewotICAgICAgICAgIHByb2dyYW1XcmFwcGVyID0gcHJvZ3JhbShpLCBmbiwgZGF0YSk7Ci0g
ICAgICAgIH0gZWxzZSBpZiAoIXByb2dyYW1XcmFwcGVyKSB7Ci0gICAgICAgICAgcHJvZ3JhbVdy
YXBwZXIgPSB0aGlzLnByb2dyYW1zW2ldID0gcHJvZ3JhbShpLCBmbik7Ci0gICAgICAgIH0KLSAg
ICAgICAgcmV0dXJuIHByb2dyYW1XcmFwcGVyOwotICAgICAgfSwKLSAgICAgIG1lcmdlOiBmdW5j
dGlvbihwYXJhbSwgY29tbW9uKSB7Ci0gICAgICAgIHZhciByZXQgPSBwYXJhbSB8fCBjb21tb247
Ci0KLSAgICAgICAgaWYgKHBhcmFtICYmIGNvbW1vbiAmJiAocGFyYW0gIT09IGNvbW1vbikpIHsK
LSAgICAgICAgICByZXQgPSB7fTsKLSAgICAgICAgICBVdGlscy5leHRlbmQocmV0LCBjb21tb24p
OwotICAgICAgICAgIFV0aWxzLmV4dGVuZChyZXQsIHBhcmFtKTsKLSAgICAgICAgfQotICAgICAg
ICByZXR1cm4gcmV0OwotICAgICAgfSwKLSAgICAgIHByb2dyYW1XaXRoRGVwdGg6IGVudi5WTS5w
cm9ncmFtV2l0aERlcHRoLAotICAgICAgbm9vcDogZW52LlZNLm5vb3AsCi0gICAgICBjb21waWxl
ckluZm86IG51bGwKLSAgICB9OwotCi0gICAgcmV0dXJuIGZ1bmN0aW9uKGNvbnRleHQsIG9wdGlv
bnMpIHsKLSAgICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OwotICAgICAgdmFyIG5hbWVzcGFj
ZSA9IG9wdGlvbnMucGFydGlhbCA/IG9wdGlvbnMgOiBlbnYsCi0gICAgICAgICAgaGVscGVycywK
LSAgICAgICAgICBwYXJ0aWFsczsKLQotICAgICAgaWYgKCFvcHRpb25zLnBhcnRpYWwpIHsKLSAg
ICAgICAgaGVscGVycyA9IG9wdGlvbnMuaGVscGVyczsKLSAgICAgICAgcGFydGlhbHMgPSBvcHRp
b25zLnBhcnRpYWxzOwotICAgICAgfQotICAgICAgdmFyIHJlc3VsdCA9IHRlbXBsYXRlU3BlYy5j
YWxsKAotICAgICAgICAgICAgY29udGFpbmVyLAotICAgICAgICAgICAgbmFtZXNwYWNlLCBjb250
ZXh0LAotICAgICAgICAgICAgaGVscGVycywKLSAgICAgICAgICAgIHBhcnRpYWxzLAotICAgICAg
ICAgICAgb3B0aW9ucy5kYXRhKTsKLQotICAgICAgaWYgKCFvcHRpb25zLnBhcnRpYWwpIHsKLSAg
ICAgICAgZW52LlZNLmNoZWNrUmV2aXNpb24oY29udGFpbmVyLmNvbXBpbGVySW5mbyk7Ci0gICAg
ICB9Ci0KLSAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfTsKLSAgfQotCi0gIF9fZXhwb3J0c19f
LnRlbXBsYXRlID0gdGVtcGxhdGU7ZnVuY3Rpb24gcHJvZ3JhbVdpdGhEZXB0aChpLCBmbiwgZGF0
YSAvKiwgJGRlcHRoICovKSB7Ci0gICAgdmFyIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2Uu
Y2FsbChhcmd1bWVudHMsIDMpOwotCi0gICAgdmFyIHByb2cgPSBmdW5jdGlvbihjb250ZXh0LCBv
cHRpb25zKSB7Ci0gICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKLQotICAgICAgcmV0dXJu
IGZuLmFwcGx5KHRoaXMsIFtjb250ZXh0LCBvcHRpb25zLmRhdGEgfHwgZGF0YV0uY29uY2F0KGFy
Z3MpKTsKLSAgICB9OwotICAgIHByb2cucHJvZ3JhbSA9IGk7Ci0gICAgcHJvZy5kZXB0aCA9IGFy
Z3MubGVuZ3RoOwotICAgIHJldHVybiBwcm9nOwotICB9Ci0KLSAgX19leHBvcnRzX18ucHJvZ3Jh
bVdpdGhEZXB0aCA9IHByb2dyYW1XaXRoRGVwdGg7ZnVuY3Rpb24gcHJvZ3JhbShpLCBmbiwgZGF0
YSkgewotICAgIHZhciBwcm9nID0gZnVuY3Rpb24oY29udGV4dCwgb3B0aW9ucykgewotICAgICAg
b3B0aW9ucyA9IG9wdGlvbnMgfHwge307Ci0KLSAgICAgIHJldHVybiBmbihjb250ZXh0LCBvcHRp
b25zLmRhdGEgfHwgZGF0YSk7Ci0gICAgfTsKLSAgICBwcm9nLnByb2dyYW0gPSBpOwotICAgIHBy
b2cuZGVwdGggPSAwOwotICAgIHJldHVybiBwcm9nOwotICB9Ci0KLSAgX19leHBvcnRzX18ucHJv
Z3JhbSA9IHByb2dyYW07ZnVuY3Rpb24gaW52b2tlUGFydGlhbChwYXJ0aWFsLCBuYW1lLCBjb250
ZXh0LCBoZWxwZXJzLCBwYXJ0aWFscywgZGF0YSkgewotICAgIHZhciBvcHRpb25zID0geyBwYXJ0
aWFsOiB0cnVlLCBoZWxwZXJzOiBoZWxwZXJzLCBwYXJ0aWFsczogcGFydGlhbHMsIGRhdGE6IGRh
dGEgfTsKLQotICAgIGlmKHBhcnRpYWwgPT09IHVuZGVmaW5lZCkgewotICAgICAgdGhyb3cgbmV3
IEV4Y2VwdGlvbigiVGhlIHBhcnRpYWwgIiArIG5hbWUgKyAiIGNvdWxkIG5vdCBiZSBmb3VuZCIp
OwotICAgIH0gZWxzZSBpZihwYXJ0aWFsIGluc3RhbmNlb2YgRnVuY3Rpb24pIHsKLSAgICAgIHJl
dHVybiBwYXJ0aWFsKGNvbnRleHQsIG9wdGlvbnMpOwotICAgIH0KLSAgfQotCi0gIF9fZXhwb3J0
c19fLmludm9rZVBhcnRpYWwgPSBpbnZva2VQYXJ0aWFsO2Z1bmN0aW9uIG5vb3AoKSB7IHJldHVy
biAiIjsgfQotCi0gIF9fZXhwb3J0c19fLm5vb3AgPSBub29wOwotICByZXR1cm4gX19leHBvcnRz
X187Ci19KShfX21vZHVsZTNfXywgX19tb2R1bGU1X18sIF9fbW9kdWxlMl9fKTsKLQotLy8gaGFu
ZGxlYmFycy5ydW50aW1lLmpzCi12YXIgX19tb2R1bGUxX18gPSAoZnVuY3Rpb24oX19kZXBlbmRl
bmN5MV9fLCBfX2RlcGVuZGVuY3kyX18sIF9fZGVwZW5kZW5jeTNfXywgX19kZXBlbmRlbmN5NF9f
LCBfX2RlcGVuZGVuY3k1X18pIHsKLSAgInVzZSBzdHJpY3QiOwotICB2YXIgX19leHBvcnRzX187
Ci0gIC8qZ2xvYmFscyBIYW5kbGViYXJzOiB0cnVlICovCi0gIHZhciBiYXNlID0gX19kZXBlbmRl
bmN5MV9fOwotCi0gIC8vIEVhY2ggb2YgdGhlc2UgYXVnbWVudCB0aGUgSGFuZGxlYmFycyBvYmpl
Y3QuIE5vIG5lZWQgdG8gc2V0dXAgaGVyZS4KLSAgLy8gKFRoaXMgaXMgZG9uZSB0byBlYXNpbHkg
c2hhcmUgY29kZSBiZXR3ZWVuIGNvbW1vbmpzIGFuZCBicm93c2UgZW52cykKLSAgdmFyIFNhZmVT
dHJpbmcgPSBfX2RlcGVuZGVuY3kyX187Ci0gIHZhciBFeGNlcHRpb24gPSBfX2RlcGVuZGVuY3kz
X187Ci0gIHZhciBVdGlscyA9IF9fZGVwZW5kZW5jeTRfXzsKLSAgdmFyIHJ1bnRpbWUgPSBfX2Rl
cGVuZGVuY3k1X187Ci0KLSAgLy8gRm9yIGNvbXBhdGliaWxpdHkgYW5kIHVzYWdlIG91dHNpZGUg
b2YgbW9kdWxlIHN5c3RlbXMsIG1ha2UgdGhlIEhhbmRsZWJhcnMgb2JqZWN0IGEgbmFtZXNwYWNl
Ci0gIHZhciBjcmVhdGUgPSBmdW5jdGlvbigpIHsKLSAgICB2YXIgaGIgPSBuZXcgYmFzZS5IYW5k
bGViYXJzRW52aXJvbm1lbnQoKTsKLQotICAgIFV0aWxzLmV4dGVuZChoYiwgYmFzZSk7Ci0gICAg
aGIuU2FmZVN0cmluZyA9IFNhZmVTdHJpbmc7Ci0gICAgaGIuRXhjZXB0aW9uID0gRXhjZXB0aW9u
OwotICAgIGhiLlV0aWxzID0gVXRpbHM7Ci0KLSAgICBoYi5WTSA9IHJ1bnRpbWU7Ci0gICAgaGIu
dGVtcGxhdGUgPSBmdW5jdGlvbihzcGVjKSB7Ci0gICAgICByZXR1cm4gcnVudGltZS50ZW1wbGF0
ZShzcGVjLCBoYik7Ci0gICAgfTsKLQotICAgIHJldHVybiBoYjsKLSAgfTsKLQotICB2YXIgSGFu
ZGxlYmFycyA9IGNyZWF0ZSgpOwotICBIYW5kbGViYXJzLmNyZWF0ZSA9IGNyZWF0ZTsKLQotICBf
X2V4cG9ydHNfXyA9IEhhbmRsZWJhcnM7Ci0gIHJldHVybiBfX2V4cG9ydHNfXzsKLX0pKF9fbW9k
dWxlMl9fLCBfX21vZHVsZTRfXywgX19tb2R1bGU1X18sIF9fbW9kdWxlM19fLCBfX21vZHVsZTZf
Xyk7Ci0KLS8vIGhhbmRsZWJhcnMvY29tcGlsZXIvYXN0LmpzCi12YXIgX19tb2R1bGU3X18gPSAo
ZnVuY3Rpb24oX19kZXBlbmRlbmN5MV9fKSB7Ci0gICJ1c2Ugc3RyaWN0IjsKLSAgdmFyIF9fZXhw
b3J0c19fOwotICB2YXIgRXhjZXB0aW9uID0gX19kZXBlbmRlbmN5MV9fOwotCi0gIGZ1bmN0aW9u
IExvY2F0aW9uSW5mbyhsb2NJbmZvKXsKLSAgICBsb2NJbmZvID0gbG9jSW5mbyB8fCB7fTsKLSAg
ICB0aGlzLmZpcnN0TGluZSAgID0gbG9jSW5mby5maXJzdF9saW5lOwotICAgIHRoaXMuZmlyc3RD
b2x1bW4gPSBsb2NJbmZvLmZpcnN0X2NvbHVtbjsKLSAgICB0aGlzLmxhc3RDb2x1bW4gID0gbG9j
SW5mby5sYXN0X2NvbHVtbjsKLSAgICB0aGlzLmxhc3RMaW5lICAgID0gbG9jSW5mby5sYXN0X2xp
bmU7Ci0gIH0KLQotICB2YXIgQVNUID0gewotICAgIFByb2dyYW1Ob2RlOiBmdW5jdGlvbihzdGF0
ZW1lbnRzLCBpbnZlcnNlU3RyaXAsIGludmVyc2UsIGxvY0luZm8pIHsKLSAgICAgIHZhciBpbnZl
cnNlTG9jYXRpb25JbmZvLCBmaXJzdEludmVyc2VOb2RlOwotICAgICAgaWYgKGFyZ3VtZW50cy5s
ZW5ndGggPT09IDMpIHsKLSAgICAgICAgbG9jSW5mbyA9IGludmVyc2U7Ci0gICAgICAgIGludmVy
c2UgPSBudWxsOwotICAgICAgfSBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyKSB7Ci0g
ICAgICAgIGxvY0luZm8gPSBpbnZlcnNlU3RyaXA7Ci0gICAgICAgIGludmVyc2VTdHJpcCA9IG51
bGw7Ci0gICAgICB9Ci0KLSAgICAgIExvY2F0aW9uSW5mby5jYWxsKHRoaXMsIGxvY0luZm8pOwot
ICAgICAgdGhpcy50eXBlID0gInByb2dyYW0iOwotICAgICAgdGhpcy5zdGF0ZW1lbnRzID0gc3Rh
dGVtZW50czsKLSAgICAgIHRoaXMuc3RyaXAgPSB7fTsKLQotICAgICAgaWYoaW52ZXJzZSkgewot
ICAgICAgICBmaXJzdEludmVyc2VOb2RlID0gaW52ZXJzZVswXTsKLSAgICAgICAgaWYgKGZpcnN0
SW52ZXJzZU5vZGUpIHsKLSAgICAgICAgICBpbnZlcnNlTG9jYXRpb25JbmZvID0gewotICAgICAg
ICAgICAgZmlyc3RfbGluZTogZmlyc3RJbnZlcnNlTm9kZS5maXJzdExpbmUsCi0gICAgICAgICAg
ICBsYXN0X2xpbmU6IGZpcnN0SW52ZXJzZU5vZGUubGFzdExpbmUsCi0gICAgICAgICAgICBsYXN0
X2NvbHVtbjogZmlyc3RJbnZlcnNlTm9kZS5sYXN0Q29sdW1uLAotICAgICAgICAgICAgZmlyc3Rf
Y29sdW1uOiBmaXJzdEludmVyc2VOb2RlLmZpcnN0Q29sdW1uCi0gICAgICAgICAgfTsKLSAgICAg
ICAgICB0aGlzLmludmVyc2UgPSBuZXcgQVNULlByb2dyYW1Ob2RlKGludmVyc2UsIGludmVyc2VT
dHJpcCwgaW52ZXJzZUxvY2F0aW9uSW5mbyk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
dGhpcy5pbnZlcnNlID0gbmV3IEFTVC5Qcm9ncmFtTm9kZShpbnZlcnNlLCBpbnZlcnNlU3RyaXAp
OwotICAgICAgICB9Ci0gICAgICAgIHRoaXMuc3RyaXAucmlnaHQgPSBpbnZlcnNlU3RyaXAubGVm
dDsKLSAgICAgIH0gZWxzZSBpZiAoaW52ZXJzZVN0cmlwKSB7Ci0gICAgICAgIHRoaXMuc3RyaXAu
bGVmdCA9IGludmVyc2VTdHJpcC5yaWdodDsKLSAgICAgIH0KLSAgICB9LAotCi0gICAgTXVzdGFj
aGVOb2RlOiBmdW5jdGlvbihyYXdQYXJhbXMsIGhhc2gsIG9wZW4sIHN0cmlwLCBsb2NJbmZvKSB7
Ci0gICAgICBMb2NhdGlvbkluZm8uY2FsbCh0aGlzLCBsb2NJbmZvKTsKLSAgICAgIHRoaXMudHlw
ZSA9ICJtdXN0YWNoZSI7Ci0gICAgICB0aGlzLnN0cmlwID0gc3RyaXA7Ci0KLSAgICAgIC8vIE9w
ZW4gbWF5IGJlIGEgc3RyaW5nIHBhcnNlZCBmcm9tIHRoZSBwYXJzZXIgb3IgYSBwYXNzZWQgYm9v
bGVhbiBmbGFnCi0gICAgICBpZiAob3BlbiAhPSBudWxsICYmIG9wZW4uY2hhckF0KSB7Ci0gICAg
ICAgIC8vIE11c3QgdXNlIGNoYXJBdCB0byBzdXBwb3J0IElFIHByZS0xMAotICAgICAgICB2YXIg
ZXNjYXBlRmxhZyA9IG9wZW4uY2hhckF0KDMpIHx8IG9wZW4uY2hhckF0KDIpOwotICAgICAgICB0
aGlzLmVzY2FwZWQgPSBlc2NhcGVGbGFnICE9PSAneycgJiYgZXNjYXBlRmxhZyAhPT0gJyYnOwot
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgdGhpcy5lc2NhcGVkID0gISFvcGVuOwotICAgICAgfQot
Ci0gICAgICBpZiAocmF3UGFyYW1zIGluc3RhbmNlb2YgQVNULlNleHByTm9kZSkgewotICAgICAg
ICB0aGlzLnNleHByID0gcmF3UGFyYW1zOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgLy8gU3Vw
cG9ydCBvbGQgQVNUIEFQSQotICAgICAgICB0aGlzLnNleHByID0gbmV3IEFTVC5TZXhwck5vZGUo
cmF3UGFyYW1zLCBoYXNoKTsKLSAgICAgIH0KLQotICAgICAgdGhpcy5zZXhwci5pc1Jvb3QgPSB0
cnVlOwotCi0gICAgICAvLyBTdXBwb3J0IG9sZCBBU1QgQVBJIHRoYXQgc3RvcmVkIHRoaXMgaW5m
byBpbiBNdXN0YWNoZU5vZGUKLSAgICAgIHRoaXMuaWQgPSB0aGlzLnNleHByLmlkOwotICAgICAg
dGhpcy5wYXJhbXMgPSB0aGlzLnNleHByLnBhcmFtczsKLSAgICAgIHRoaXMuaGFzaCA9IHRoaXMu
c2V4cHIuaGFzaDsKLSAgICAgIHRoaXMuZWxpZ2libGVIZWxwZXIgPSB0aGlzLnNleHByLmVsaWdp
YmxlSGVscGVyOwotICAgICAgdGhpcy5pc0hlbHBlciA9IHRoaXMuc2V4cHIuaXNIZWxwZXI7Ci0g
ICAgfSwKLQotICAgIFNleHByTm9kZTogZnVuY3Rpb24ocmF3UGFyYW1zLCBoYXNoLCBsb2NJbmZv
KSB7Ci0gICAgICBMb2NhdGlvbkluZm8uY2FsbCh0aGlzLCBsb2NJbmZvKTsKLQotICAgICAgdGhp
cy50eXBlID0gInNleHByIjsKLSAgICAgIHRoaXMuaGFzaCA9IGhhc2g7Ci0KLSAgICAgIHZhciBp
ZCA9IHRoaXMuaWQgPSByYXdQYXJhbXNbMF07Ci0gICAgICB2YXIgcGFyYW1zID0gdGhpcy5wYXJh
bXMgPSByYXdQYXJhbXMuc2xpY2UoMSk7Ci0KLSAgICAgIC8vIGEgbXVzdGFjaGUgaXMgYW4gZWxp
Z2libGUgaGVscGVyIGlmOgotICAgICAgLy8gKiBpdHMgaWQgaXMgc2ltcGxlIChhIHNpbmdsZSBw
YXJ0LCBub3QgYHRoaXNgIG9yIGAuLmApCi0gICAgICB2YXIgZWxpZ2libGVIZWxwZXIgPSB0aGlz
LmVsaWdpYmxlSGVscGVyID0gaWQuaXNTaW1wbGU7Ci0KLSAgICAgIC8vIGEgbXVzdGFjaGUgaXMg
ZGVmaW5pdGVseSBhIGhlbHBlciBpZjoKLSAgICAgIC8vICogaXQgaXMgYW4gZWxpZ2libGUgaGVs
cGVyLCBhbmQKLSAgICAgIC8vICogaXQgaGFzIGF0IGxlYXN0IG9uZSBwYXJhbWV0ZXIgb3IgaGFz
aCBzZWdtZW50Ci0gICAgICB0aGlzLmlzSGVscGVyID0gZWxpZ2libGVIZWxwZXIgJiYgKHBhcmFt
cy5sZW5ndGggfHwgaGFzaCk7Ci0KLSAgICAgIC8vIGlmIGEgbXVzdGFjaGUgaXMgYW4gZWxpZ2li
bGUgaGVscGVyIGJ1dCBub3QgYSBkZWZpbml0ZQotICAgICAgLy8gaGVscGVyLCBpdCBpcyBhbWJp
Z3VvdXMsIGFuZCB3aWxsIGJlIHJlc29sdmVkIGluIGEgbGF0ZXIKLSAgICAgIC8vIHBhc3Mgb3Ig
YXQgcnVudGltZS4KLSAgICB9LAotCi0gICAgUGFydGlhbE5vZGU6IGZ1bmN0aW9uKHBhcnRpYWxO
YW1lLCBjb250ZXh0LCBzdHJpcCwgbG9jSW5mbykgewotICAgICAgTG9jYXRpb25JbmZvLmNhbGwo
dGhpcywgbG9jSW5mbyk7Ci0gICAgICB0aGlzLnR5cGUgICAgICAgICA9ICJwYXJ0aWFsIjsKLSAg
ICAgIHRoaXMucGFydGlhbE5hbWUgID0gcGFydGlhbE5hbWU7Ci0gICAgICB0aGlzLmNvbnRleHQg
ICAgICA9IGNvbnRleHQ7Ci0gICAgICB0aGlzLnN0cmlwID0gc3RyaXA7Ci0gICAgfSwKLQotICAg
IEJsb2NrTm9kZTogZnVuY3Rpb24obXVzdGFjaGUsIHByb2dyYW0sIGludmVyc2UsIGNsb3NlLCBs
b2NJbmZvKSB7Ci0gICAgICBMb2NhdGlvbkluZm8uY2FsbCh0aGlzLCBsb2NJbmZvKTsKLQotICAg
ICAgaWYobXVzdGFjaGUuc2V4cHIuaWQub3JpZ2luYWwgIT09IGNsb3NlLnBhdGgub3JpZ2luYWwp
IHsKLSAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbihtdXN0YWNoZS5zZXhwci5pZC5vcmlnaW5h
bCArICIgZG9lc24ndCBtYXRjaCAiICsgY2xvc2UucGF0aC5vcmlnaW5hbCwgdGhpcyk7Ci0gICAg
ICB9Ci0KLSAgICAgIHRoaXMudHlwZSA9ICdibG9jayc7Ci0gICAgICB0aGlzLm11c3RhY2hlID0g
bXVzdGFjaGU7Ci0gICAgICB0aGlzLnByb2dyYW0gID0gcHJvZ3JhbTsKLSAgICAgIHRoaXMuaW52
ZXJzZSAgPSBpbnZlcnNlOwotCi0gICAgICB0aGlzLnN0cmlwID0gewotICAgICAgICBsZWZ0OiBt
dXN0YWNoZS5zdHJpcC5sZWZ0LAotICAgICAgICByaWdodDogY2xvc2Uuc3RyaXAucmlnaHQKLSAg
ICAgIH07Ci0KLSAgICAgIChwcm9ncmFtIHx8IGludmVyc2UpLnN0cmlwLmxlZnQgPSBtdXN0YWNo
ZS5zdHJpcC5yaWdodDsKLSAgICAgIChpbnZlcnNlIHx8IHByb2dyYW0pLnN0cmlwLnJpZ2h0ID0g
Y2xvc2Uuc3RyaXAubGVmdDsKLQotICAgICAgaWYgKGludmVyc2UgJiYgIXByb2dyYW0pIHsKLSAg
ICAgICAgdGhpcy5pc0ludmVyc2UgPSB0cnVlOwotICAgICAgfQotICAgIH0sCi0KLSAgICBDb250
ZW50Tm9kZTogZnVuY3Rpb24oc3RyaW5nLCBsb2NJbmZvKSB7Ci0gICAgICBMb2NhdGlvbkluZm8u
Y2FsbCh0aGlzLCBsb2NJbmZvKTsKLSAgICAgIHRoaXMudHlwZSA9ICJjb250ZW50IjsKLSAgICAg
IHRoaXMuc3RyaW5nID0gc3RyaW5nOwotICAgIH0sCi0KLSAgICBIYXNoTm9kZTogZnVuY3Rpb24o
cGFpcnMsIGxvY0luZm8pIHsKLSAgICAgIExvY2F0aW9uSW5mby5jYWxsKHRoaXMsIGxvY0luZm8p
OwotICAgICAgdGhpcy50eXBlID0gImhhc2giOwotICAgICAgdGhpcy5wYWlycyA9IHBhaXJzOwot
ICAgIH0sCi0KLSAgICBJZE5vZGU6IGZ1bmN0aW9uKHBhcnRzLCBsb2NJbmZvKSB7Ci0gICAgICBM
b2NhdGlvbkluZm8uY2FsbCh0aGlzLCBsb2NJbmZvKTsKLSAgICAgIHRoaXMudHlwZSA9ICJJRCI7
Ci0KLSAgICAgIHZhciBvcmlnaW5hbCA9ICIiLAotICAgICAgICAgIGRpZyA9IFtdLAotICAgICAg
ICAgIGRlcHRoID0gMDsKLQotICAgICAgZm9yKHZhciBpPTAsbD1wYXJ0cy5sZW5ndGg7IGk8bDsg
aSsrKSB7Ci0gICAgICAgIHZhciBwYXJ0ID0gcGFydHNbaV0ucGFydDsKLSAgICAgICAgb3JpZ2lu
YWwgKz0gKHBhcnRzW2ldLnNlcGFyYXRvciB8fCAnJykgKyBwYXJ0OwotCi0gICAgICAgIGlmIChw
YXJ0ID09PSAiLi4iIHx8IHBhcnQgPT09ICIuIiB8fCBwYXJ0ID09PSAidGhpcyIpIHsKLSAgICAg
ICAgICBpZiAoZGlnLmxlbmd0aCA+IDApIHsKLSAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRp
b24oIkludmFsaWQgcGF0aDogIiArIG9yaWdpbmFsLCB0aGlzKTsKLSAgICAgICAgICB9IGVsc2Ug
aWYgKHBhcnQgPT09ICIuLiIpIHsKLSAgICAgICAgICAgIGRlcHRoKys7Ci0gICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIHRoaXMuaXNTY29wZWQgPSB0cnVlOwotICAgICAgICAgIH0KLSAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICBkaWcucHVzaChwYXJ0KTsKLSAgICAgICAgfQotICAg
ICAgfQotCi0gICAgICB0aGlzLm9yaWdpbmFsID0gb3JpZ2luYWw7Ci0gICAgICB0aGlzLnBhcnRz
ICAgID0gZGlnOwotICAgICAgdGhpcy5zdHJpbmcgICA9IGRpZy5qb2luKCcuJyk7Ci0gICAgICB0
aGlzLmRlcHRoICAgID0gZGVwdGg7Ci0KLSAgICAgIC8vIGFuIElEIGlzIHNpbXBsZSBpZiBpdCBv
bmx5IGhhcyBvbmUgcGFydCwgYW5kIHRoYXQgcGFydCBpcyBub3QKLSAgICAgIC8vIGAuLmAgb3Ig
YHRoaXNgLgotICAgICAgdGhpcy5pc1NpbXBsZSA9IHBhcnRzLmxlbmd0aCA9PT0gMSAmJiAhdGhp
cy5pc1Njb3BlZCAmJiBkZXB0aCA9PT0gMDsKLQotICAgICAgdGhpcy5zdHJpbmdNb2RlVmFsdWUg
PSB0aGlzLnN0cmluZzsKLSAgICB9LAotCi0gICAgUGFydGlhbE5hbWVOb2RlOiBmdW5jdGlvbihu
YW1lLCBsb2NJbmZvKSB7Ci0gICAgICBMb2NhdGlvbkluZm8uY2FsbCh0aGlzLCBsb2NJbmZvKTsK
LSAgICAgIHRoaXMudHlwZSA9ICJQQVJUSUFMX05BTUUiOwotICAgICAgdGhpcy5uYW1lID0gbmFt
ZS5vcmlnaW5hbDsKLSAgICB9LAotCi0gICAgRGF0YU5vZGU6IGZ1bmN0aW9uKGlkLCBsb2NJbmZv
KSB7Ci0gICAgICBMb2NhdGlvbkluZm8uY2FsbCh0aGlzLCBsb2NJbmZvKTsKLSAgICAgIHRoaXMu
dHlwZSA9ICJEQVRBIjsKLSAgICAgIHRoaXMuaWQgPSBpZDsKLSAgICB9LAotCi0gICAgU3RyaW5n
Tm9kZTogZnVuY3Rpb24oc3RyaW5nLCBsb2NJbmZvKSB7Ci0gICAgICBMb2NhdGlvbkluZm8uY2Fs
bCh0aGlzLCBsb2NJbmZvKTsKLSAgICAgIHRoaXMudHlwZSA9ICJTVFJJTkciOwotICAgICAgdGhp
cy5vcmlnaW5hbCA9Ci0gICAgICAgIHRoaXMuc3RyaW5nID0KLSAgICAgICAgdGhpcy5zdHJpbmdN
b2RlVmFsdWUgPSBzdHJpbmc7Ci0gICAgfSwKLQotICAgIEludGVnZXJOb2RlOiBmdW5jdGlvbihp
bnRlZ2VyLCBsb2NJbmZvKSB7Ci0gICAgICBMb2NhdGlvbkluZm8uY2FsbCh0aGlzLCBsb2NJbmZv
KTsKLSAgICAgIHRoaXMudHlwZSA9ICJJTlRFR0VSIjsKLSAgICAgIHRoaXMub3JpZ2luYWwgPQot
ICAgICAgICB0aGlzLmludGVnZXIgPSBpbnRlZ2VyOwotICAgICAgdGhpcy5zdHJpbmdNb2RlVmFs
dWUgPSBOdW1iZXIoaW50ZWdlcik7Ci0gICAgfSwKLQotICAgIEJvb2xlYW5Ob2RlOiBmdW5jdGlv
bihib29sLCBsb2NJbmZvKSB7Ci0gICAgICBMb2NhdGlvbkluZm8uY2FsbCh0aGlzLCBsb2NJbmZv
KTsKLSAgICAgIHRoaXMudHlwZSA9ICJCT09MRUFOIjsKLSAgICAgIHRoaXMuYm9vbCA9IGJvb2w7
Ci0gICAgICB0aGlzLnN0cmluZ01vZGVWYWx1ZSA9IGJvb2wgPT09ICJ0cnVlIjsKLSAgICB9LAot
Ci0gICAgQ29tbWVudE5vZGU6IGZ1bmN0aW9uKGNvbW1lbnQsIGxvY0luZm8pIHsKLSAgICAgIExv
Y2F0aW9uSW5mby5jYWxsKHRoaXMsIGxvY0luZm8pOwotICAgICAgdGhpcy50eXBlID0gImNvbW1l
bnQiOwotICAgICAgdGhpcy5jb21tZW50ID0gY29tbWVudDsKLSAgICB9Ci0gIH07Ci0KLSAgLy8g
TXVzdCBiZSBleHBvcnRlZCBhcyBhbiBvYmplY3QgcmF0aGVyIHRoYW4gdGhlIHJvb3Qgb2YgdGhl
IG1vZHVsZSBhcyB0aGUgamlzb24gbGV4ZXIKLSAgLy8gbW9zdCBtb2RpZnkgdGhlIG9iamVjdCB0
byBvcGVyYXRlIHByb3Blcmx5LgotICBfX2V4cG9ydHNfXyA9IEFTVDsKLSAgcmV0dXJuIF9fZXhw
b3J0c19fOwotfSkoX19tb2R1bGU1X18pOwotCi0vLyBoYW5kbGViYXJzL2NvbXBpbGVyL3BhcnNl
ci5qcwotdmFyIF9fbW9kdWxlOV9fID0gKGZ1bmN0aW9uKCkgewotICAidXNlIHN0cmljdCI7Ci0g
IHZhciBfX2V4cG9ydHNfXzsKLSAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqLwotICAvKiBKaXNv
biBnZW5lcmF0ZWQgcGFyc2VyICovCi0gIHZhciBoYW5kbGViYXJzID0gKGZ1bmN0aW9uKCl7Ci0g
IHZhciBwYXJzZXIgPSB7dHJhY2U6IGZ1bmN0aW9uIHRyYWNlKCkgeyB9LAotICB5eToge30sCi0g
IHN5bWJvbHNfOiB7ImVycm9yIjoyLCJyb290IjozLCJzdGF0ZW1lbnRzIjo0LCJFT0YiOjUsInBy
b2dyYW0iOjYsInNpbXBsZUludmVyc2UiOjcsInN0YXRlbWVudCI6OCwib3BlbkludmVyc2UiOjks
ImNsb3NlQmxvY2siOjEwLCJvcGVuQmxvY2siOjExLCJtdXN0YWNoZSI6MTIsInBhcnRpYWwiOjEz
LCJDT05URU5UIjoxNCwiQ09NTUVOVCI6MTUsIk9QRU5fQkxPQ0siOjE2LCJzZXhwciI6MTcsIkNM
T1NFIjoxOCwiT1BFTl9JTlZFUlNFIjoxOSwiT1BFTl9FTkRCTE9DSyI6MjAsInBhdGgiOjIxLCJP
UEVOIjoyMiwiT1BFTl9VTkVTQ0FQRUQiOjIzLCJDTE9TRV9VTkVTQ0FQRUQiOjI0LCJPUEVOX1BB
UlRJQUwiOjI1LCJwYXJ0aWFsTmFtZSI6MjYsInBhcnRpYWxfb3B0aW9uMCI6MjcsInNleHByX3Jl
cGV0aXRpb24wIjoyOCwic2V4cHJfb3B0aW9uMCI6MjksImRhdGFOYW1lIjozMCwicGFyYW0iOjMx
LCJTVFJJTkciOjMyLCJJTlRFR0VSIjozMywiQk9PTEVBTiI6MzQsIk9QRU5fU0VYUFIiOjM1LCJD
TE9TRV9TRVhQUiI6MzYsImhhc2giOjM3LCJoYXNoX3JlcGV0aXRpb25fcGx1czAiOjM4LCJoYXNo
U2VnbWVudCI6MzksIklEIjo0MCwiRVFVQUxTIjo0MSwiREFUQSI6NDIsInBhdGhTZWdtZW50cyI6
NDMsIlNFUCI6NDQsIiRhY2NlcHQiOjAsIiRlbmQiOjF9LAotICB0ZXJtaW5hbHNfOiB7MjoiZXJy
b3IiLDU6IkVPRiIsMTQ6IkNPTlRFTlQiLDE1OiJDT01NRU5UIiwxNjoiT1BFTl9CTE9DSyIsMTg6
IkNMT1NFIiwxOToiT1BFTl9JTlZFUlNFIiwyMDoiT1BFTl9FTkRCTE9DSyIsMjI6Ik9QRU4iLDIz
OiJPUEVOX1VORVNDQVBFRCIsMjQ6IkNMT1NFX1VORVNDQVBFRCIsMjU6Ik9QRU5fUEFSVElBTCIs
MzI6IlNUUklORyIsMzM6IklOVEVHRVIiLDM0OiJCT09MRUFOIiwzNToiT1BFTl9TRVhQUiIsMzY6
IkNMT1NFX1NFWFBSIiw0MDoiSUQiLDQxOiJFUVVBTFMiLDQyOiJEQVRBIiw0NDoiU0VQIn0sCi0g
IHByb2R1Y3Rpb25zXzogWzAsWzMsMl0sWzMsMV0sWzYsMl0sWzYsM10sWzYsMl0sWzYsMV0sWzYs
MV0sWzYsMF0sWzQsMV0sWzQsMl0sWzgsM10sWzgsM10sWzgsMV0sWzgsMV0sWzgsMV0sWzgsMV0s
WzExLDNdLFs5LDNdLFsxMCwzXSxbMTIsM10sWzEyLDNdLFsxMyw0XSxbNywyXSxbMTcsM10sWzE3
LDFdLFszMSwxXSxbMzEsMV0sWzMxLDFdLFszMSwxXSxbMzEsMV0sWzMxLDNdLFszNywxXSxbMzks
M10sWzI2LDFdLFsyNiwxXSxbMjYsMV0sWzMwLDJdLFsyMSwxXSxbNDMsM10sWzQzLDFdLFsyNyww
XSxbMjcsMV0sWzI4LDBdLFsyOCwyXSxbMjksMF0sWzI5LDFdLFszOCwxXSxbMzgsMl1dLAotICBw
ZXJmb3JtQWN0aW9uOiBmdW5jdGlvbiBhbm9ueW1vdXMoeXl0ZXh0LHl5bGVuZyx5eWxpbmVubyx5
eSx5eXN0YXRlLCQkLF8kKSB7Ci0KLSAgdmFyICQwID0gJCQubGVuZ3RoIC0gMTsKLSAgc3dpdGNo
ICh5eXN0YXRlKSB7Ci0gIGNhc2UgMTogcmV0dXJuIG5ldyB5eS5Qcm9ncmFtTm9kZSgkJFskMC0x
XSwgdGhpcy5fJCk7IAotICBicmVhazsKLSAgY2FzZSAyOiByZXR1cm4gbmV3IHl5LlByb2dyYW1O
b2RlKFtdLCB0aGlzLl8kKTsgCi0gIGJyZWFrOwotICBjYXNlIDM6dGhpcy4kID0gbmV3IHl5LlBy
b2dyYW1Ob2RlKFtdLCAkJFskMC0xXSwgJCRbJDBdLCB0aGlzLl8kKTsKLSAgYnJlYWs7Ci0gIGNh
c2UgNDp0aGlzLiQgPSBuZXcgeXkuUHJvZ3JhbU5vZGUoJCRbJDAtMl0sICQkWyQwLTFdLCAkJFsk
MF0sIHRoaXMuXyQpOwotICBicmVhazsKLSAgY2FzZSA1OnRoaXMuJCA9IG5ldyB5eS5Qcm9ncmFt
Tm9kZSgkJFskMC0xXSwgJCRbJDBdLCBbXSwgdGhpcy5fJCk7Ci0gIGJyZWFrOwotICBjYXNlIDY6
dGhpcy4kID0gbmV3IHl5LlByb2dyYW1Ob2RlKCQkWyQwXSwgdGhpcy5fJCk7Ci0gIGJyZWFrOwot
ICBjYXNlIDc6dGhpcy4kID0gbmV3IHl5LlByb2dyYW1Ob2RlKFtdLCB0aGlzLl8kKTsKLSAgYnJl
YWs7Ci0gIGNhc2UgODp0aGlzLiQgPSBuZXcgeXkuUHJvZ3JhbU5vZGUoW10sIHRoaXMuXyQpOwot
ICBicmVhazsKLSAgY2FzZSA5OnRoaXMuJCA9IFskJFskMF1dOwotICBicmVhazsKLSAgY2FzZSAx
MDogJCRbJDAtMV0ucHVzaCgkJFskMF0pOyB0aGlzLiQgPSAkJFskMC0xXTsgCi0gIGJyZWFrOwot
ICBjYXNlIDExOnRoaXMuJCA9IG5ldyB5eS5CbG9ja05vZGUoJCRbJDAtMl0sICQkWyQwLTFdLmlu
dmVyc2UsICQkWyQwLTFdLCAkJFskMF0sIHRoaXMuXyQpOwotICBicmVhazsKLSAgY2FzZSAxMjp0
aGlzLiQgPSBuZXcgeXkuQmxvY2tOb2RlKCQkWyQwLTJdLCAkJFskMC0xXSwgJCRbJDAtMV0uaW52
ZXJzZSwgJCRbJDBdLCB0aGlzLl8kKTsKLSAgYnJlYWs7Ci0gIGNhc2UgMTM6dGhpcy4kID0gJCRb
JDBdOwotICBicmVhazsKLSAgY2FzZSAxNDp0aGlzLiQgPSAkJFskMF07Ci0gIGJyZWFrOwotICBj
YXNlIDE1OnRoaXMuJCA9IG5ldyB5eS5Db250ZW50Tm9kZSgkJFskMF0sIHRoaXMuXyQpOwotICBi
cmVhazsKLSAgY2FzZSAxNjp0aGlzLiQgPSBuZXcgeXkuQ29tbWVudE5vZGUoJCRbJDBdLCB0aGlz
Ll8kKTsKLSAgYnJlYWs7Ci0gIGNhc2UgMTc6dGhpcy4kID0gbmV3IHl5Lk11c3RhY2hlTm9kZSgk
JFskMC0xXSwgbnVsbCwgJCRbJDAtMl0sIHN0cmlwRmxhZ3MoJCRbJDAtMl0sICQkWyQwXSksIHRo
aXMuXyQpOwotICBicmVhazsKLSAgY2FzZSAxODp0aGlzLiQgPSBuZXcgeXkuTXVzdGFjaGVOb2Rl
KCQkWyQwLTFdLCBudWxsLCAkJFskMC0yXSwgc3RyaXBGbGFncygkJFskMC0yXSwgJCRbJDBdKSwg
dGhpcy5fJCk7Ci0gIGJyZWFrOwotICBjYXNlIDE5OnRoaXMuJCA9IHtwYXRoOiAkJFskMC0xXSwg
c3RyaXA6IHN0cmlwRmxhZ3MoJCRbJDAtMl0sICQkWyQwXSl9OwotICBicmVhazsKLSAgY2FzZSAy
MDp0aGlzLiQgPSBuZXcgeXkuTXVzdGFjaGVOb2RlKCQkWyQwLTFdLCBudWxsLCAkJFskMC0yXSwg
c3RyaXBGbGFncygkJFskMC0yXSwgJCRbJDBdKSwgdGhpcy5fJCk7Ci0gIGJyZWFrOwotICBjYXNl
IDIxOnRoaXMuJCA9IG5ldyB5eS5NdXN0YWNoZU5vZGUoJCRbJDAtMV0sIG51bGwsICQkWyQwLTJd
LCBzdHJpcEZsYWdzKCQkWyQwLTJdLCAkJFskMF0pLCB0aGlzLl8kKTsKLSAgYnJlYWs7Ci0gIGNh
c2UgMjI6dGhpcy4kID0gbmV3IHl5LlBhcnRpYWxOb2RlKCQkWyQwLTJdLCAkJFskMC0xXSwgc3Ry
aXBGbGFncygkJFskMC0zXSwgJCRbJDBdKSwgdGhpcy5fJCk7Ci0gIGJyZWFrOwotICBjYXNlIDIz
OnRoaXMuJCA9IHN0cmlwRmxhZ3MoJCRbJDAtMV0sICQkWyQwXSk7Ci0gIGJyZWFrOwotICBjYXNl
IDI0OnRoaXMuJCA9IG5ldyB5eS5TZXhwck5vZGUoWyQkWyQwLTJdXS5jb25jYXQoJCRbJDAtMV0p
LCAkJFskMF0sIHRoaXMuXyQpOwotICBicmVhazsKLSAgY2FzZSAyNTp0aGlzLiQgPSBuZXcgeXku
U2V4cHJOb2RlKFskJFskMF1dLCBudWxsLCB0aGlzLl8kKTsKLSAgYnJlYWs7Ci0gIGNhc2UgMjY6
dGhpcy4kID0gJCRbJDBdOwotICBicmVhazsKLSAgY2FzZSAyNzp0aGlzLiQgPSBuZXcgeXkuU3Ry
aW5nTm9kZSgkJFskMF0sIHRoaXMuXyQpOwotICBicmVhazsKLSAgY2FzZSAyODp0aGlzLiQgPSBu
ZXcgeXkuSW50ZWdlck5vZGUoJCRbJDBdLCB0aGlzLl8kKTsKLSAgYnJlYWs7Ci0gIGNhc2UgMjk6
dGhpcy4kID0gbmV3IHl5LkJvb2xlYW5Ob2RlKCQkWyQwXSwgdGhpcy5fJCk7Ci0gIGJyZWFrOwot
ICBjYXNlIDMwOnRoaXMuJCA9ICQkWyQwXTsKLSAgYnJlYWs7Ci0gIGNhc2UgMzE6JCRbJDAtMV0u
aXNIZWxwZXIgPSB0cnVlOyB0aGlzLiQgPSAkJFskMC0xXTsKLSAgYnJlYWs7Ci0gIGNhc2UgMzI6
dGhpcy4kID0gbmV3IHl5Lkhhc2hOb2RlKCQkWyQwXSwgdGhpcy5fJCk7Ci0gIGJyZWFrOwotICBj
YXNlIDMzOnRoaXMuJCA9IFskJFskMC0yXSwgJCRbJDBdXTsKLSAgYnJlYWs7Ci0gIGNhc2UgMzQ6
dGhpcy4kID0gbmV3IHl5LlBhcnRpYWxOYW1lTm9kZSgkJFskMF0sIHRoaXMuXyQpOwotICBicmVh
azsKLSAgY2FzZSAzNTp0aGlzLiQgPSBuZXcgeXkuUGFydGlhbE5hbWVOb2RlKG5ldyB5eS5TdHJp
bmdOb2RlKCQkWyQwXSwgdGhpcy5fJCksIHRoaXMuXyQpOwotICBicmVhazsKLSAgY2FzZSAzNjp0
aGlzLiQgPSBuZXcgeXkuUGFydGlhbE5hbWVOb2RlKG5ldyB5eS5JbnRlZ2VyTm9kZSgkJFskMF0s
IHRoaXMuXyQpKTsKLSAgYnJlYWs7Ci0gIGNhc2UgMzc6dGhpcy4kID0gbmV3IHl5LkRhdGFOb2Rl
KCQkWyQwXSwgdGhpcy5fJCk7Ci0gIGJyZWFrOwotICBjYXNlIDM4OnRoaXMuJCA9IG5ldyB5eS5J
ZE5vZGUoJCRbJDBdLCB0aGlzLl8kKTsKLSAgYnJlYWs7Ci0gIGNhc2UgMzk6ICQkWyQwLTJdLnB1
c2goe3BhcnQ6ICQkWyQwXSwgc2VwYXJhdG9yOiAkJFskMC0xXX0pOyB0aGlzLiQgPSAkJFskMC0y
XTsgCi0gIGJyZWFrOwotICBjYXNlIDQwOnRoaXMuJCA9IFt7cGFydDogJCRbJDBdfV07Ci0gIGJy
ZWFrOwotICBjYXNlIDQzOnRoaXMuJCA9IFtdOwotICBicmVhazsKLSAgY2FzZSA0NDokJFskMC0x
XS5wdXNoKCQkWyQwXSk7Ci0gIGJyZWFrOwotICBjYXNlIDQ3OnRoaXMuJCA9IFskJFskMF1dOwot
ICBicmVhazsKLSAgY2FzZSA0ODokJFskMC0xXS5wdXNoKCQkWyQwXSk7Ci0gIGJyZWFrOwotICB9
Ci0gIH0sCi0gIHRhYmxlOiBbezM6MSw0OjIsNTpbMSwzXSw4OjQsOTo1LDExOjYsMTI6NywxMzo4
LDE0OlsxLDldLDE1OlsxLDEwXSwxNjpbMSwxMl0sMTk6WzEsMTFdLDIyOlsxLDEzXSwyMzpbMSwx
NF0sMjU6WzEsMTVdfSx7MTpbM119LHs1OlsxLDE2XSw4OjE3LDk6NSwxMTo2LDEyOjcsMTM6OCwx
NDpbMSw5XSwxNTpbMSwxMF0sMTY6WzEsMTJdLDE5OlsxLDExXSwyMjpbMSwxM10sMjM6WzEsMTRd
LDI1OlsxLDE1XX0sezE6WzIsMl19LHs1OlsyLDldLDE0OlsyLDldLDE1OlsyLDldLDE2OlsyLDld
LDE5OlsyLDldLDIwOlsyLDldLDIyOlsyLDldLDIzOlsyLDldLDI1OlsyLDldfSx7NDoyMCw2OjE4
LDc6MTksODo0LDk6NSwxMTo2LDEyOjcsMTM6OCwxNDpbMSw5XSwxNTpbMSwxMF0sMTY6WzEsMTJd
LDE5OlsxLDIxXSwyMDpbMiw4XSwyMjpbMSwxM10sMjM6WzEsMTRdLDI1OlsxLDE1XX0sezQ6MjAs
NjoyMiw3OjE5LDg6NCw5OjUsMTE6NiwxMjo3LDEzOjgsMTQ6WzEsOV0sMTU6WzEsMTBdLDE2Olsx
LDEyXSwxOTpbMSwyMV0sMjA6WzIsOF0sMjI6WzEsMTNdLDIzOlsxLDE0XSwyNTpbMSwxNV19LHs1
OlsyLDEzXSwxNDpbMiwxM10sMTU6WzIsMTNdLDE2OlsyLDEzXSwxOTpbMiwxM10sMjA6WzIsMTNd
LDIyOlsyLDEzXSwyMzpbMiwxM10sMjU6WzIsMTNdfSx7NTpbMiwxNF0sMTQ6WzIsMTRdLDE1Olsy
LDE0XSwxNjpbMiwxNF0sMTk6WzIsMTRdLDIwOlsyLDE0XSwyMjpbMiwxNF0sMjM6WzIsMTRdLDI1
OlsyLDE0XX0sezU6WzIsMTVdLDE0OlsyLDE1XSwxNTpbMiwxNV0sMTY6WzIsMTVdLDE5OlsyLDE1
XSwyMDpbMiwxNV0sMjI6WzIsMTVdLDIzOlsyLDE1XSwyNTpbMiwxNV19LHs1OlsyLDE2XSwxNDpb
MiwxNl0sMTU6WzIsMTZdLDE2OlsyLDE2XSwxOTpbMiwxNl0sMjA6WzIsMTZdLDIyOlsyLDE2XSwy
MzpbMiwxNl0sMjU6WzIsMTZdfSx7MTc6MjMsMjE6MjQsMzA6MjUsNDA6WzEsMjhdLDQyOlsxLDI3
XSw0MzoyNn0sezE3OjI5LDIxOjI0LDMwOjI1LDQwOlsxLDI4XSw0MjpbMSwyN10sNDM6MjZ9LHsx
NzozMCwyMToyNCwzMDoyNSw0MDpbMSwyOF0sNDI6WzEsMjddLDQzOjI2fSx7MTc6MzEsMjE6MjQs
MzA6MjUsNDA6WzEsMjhdLDQyOlsxLDI3XSw0MzoyNn0sezIxOjMzLDI2OjMyLDMyOlsxLDM0XSwz
MzpbMSwzNV0sNDA6WzEsMjhdLDQzOjI2fSx7MTpbMiwxXX0sezU6WzIsMTBdLDE0OlsyLDEwXSwx
NTpbMiwxMF0sMTY6WzIsMTBdLDE5OlsyLDEwXSwyMDpbMiwxMF0sMjI6WzIsMTBdLDIzOlsyLDEw
XSwyNTpbMiwxMF19LHsxMDozNiwyMDpbMSwzN119LHs0OjM4LDg6NCw5OjUsMTE6NiwxMjo3LDEz
OjgsMTQ6WzEsOV0sMTU6WzEsMTBdLDE2OlsxLDEyXSwxOTpbMSwxMV0sMjA6WzIsN10sMjI6WzEs
MTNdLDIzOlsxLDE0XSwyNTpbMSwxNV19LHs3OjM5LDg6MTcsOTo1LDExOjYsMTI6NywxMzo4LDE0
OlsxLDldLDE1OlsxLDEwXSwxNjpbMSwxMl0sMTk6WzEsMjFdLDIwOlsyLDZdLDIyOlsxLDEzXSwy
MzpbMSwxNF0sMjU6WzEsMTVdfSx7MTc6MjMsMTg6WzEsNDBdLDIxOjI0LDMwOjI1LDQwOlsxLDI4
XSw0MjpbMSwyN10sNDM6MjZ9LHsxMDo0MSwyMDpbMSwzN119LHsxODpbMSw0Ml19LHsxODpbMiw0
M10sMjQ6WzIsNDNdLDI4OjQzLDMyOlsyLDQzXSwzMzpbMiw0M10sMzQ6WzIsNDNdLDM1OlsyLDQz
XSwzNjpbMiw0M10sNDA6WzIsNDNdLDQyOlsyLDQzXX0sezE4OlsyLDI1XSwyNDpbMiwyNV0sMzY6
WzIsMjVdfSx7MTg6WzIsMzhdLDI0OlsyLDM4XSwzMjpbMiwzOF0sMzM6WzIsMzhdLDM0OlsyLDM4
XSwzNTpbMiwzOF0sMzY6WzIsMzhdLDQwOlsyLDM4XSw0MjpbMiwzOF0sNDQ6WzEsNDRdfSx7MjE6
NDUsNDA6WzEsMjhdLDQzOjI2fSx7MTg6WzIsNDBdLDI0OlsyLDQwXSwzMjpbMiw0MF0sMzM6WzIs
NDBdLDM0OlsyLDQwXSwzNTpbMiw0MF0sMzY6WzIsNDBdLDQwOlsyLDQwXSw0MjpbMiw0MF0sNDQ6
WzIsNDBdfSx7MTg6WzEsNDZdfSx7MTg6WzEsNDddfSx7MjQ6WzEsNDhdfSx7MTg6WzIsNDFdLDIx
OjUwLDI3OjQ5LDQwOlsxLDI4XSw0MzoyNn0sezE4OlsyLDM0XSw0MDpbMiwzNF19LHsxODpbMiwz
NV0sNDA6WzIsMzVdfSx7MTg6WzIsMzZdLDQwOlsyLDM2XX0sezU6WzIsMTFdLDE0OlsyLDExXSwx
NTpbMiwxMV0sMTY6WzIsMTFdLDE5OlsyLDExXSwyMDpbMiwxMV0sMjI6WzIsMTFdLDIzOlsyLDEx
XSwyNTpbMiwxMV19LHsyMTo1MSw0MDpbMSwyOF0sNDM6MjZ9LHs4OjE3LDk6NSwxMTo2LDEyOjcs
MTM6OCwxNDpbMSw5XSwxNTpbMSwxMF0sMTY6WzEsMTJdLDE5OlsxLDExXSwyMDpbMiwzXSwyMjpb
MSwxM10sMjM6WzEsMTRdLDI1OlsxLDE1XX0sezQ6NTIsODo0LDk6NSwxMTo2LDEyOjcsMTM6OCwx
NDpbMSw5XSwxNTpbMSwxMF0sMTY6WzEsMTJdLDE5OlsxLDExXSwyMDpbMiw1XSwyMjpbMSwxM10s
MjM6WzEsMTRdLDI1OlsxLDE1XX0sezE0OlsyLDIzXSwxNTpbMiwyM10sMTY6WzIsMjNdLDE5Olsy
LDIzXSwyMDpbMiwyM10sMjI6WzIsMjNdLDIzOlsyLDIzXSwyNTpbMiwyM119LHs1OlsyLDEyXSwx
NDpbMiwxMl0sMTU6WzIsMTJdLDE2OlsyLDEyXSwxOTpbMiwxMl0sMjA6WzIsMTJdLDIyOlsyLDEy
XSwyMzpbMiwxMl0sMjU6WzIsMTJdfSx7MTQ6WzIsMThdLDE1OlsyLDE4XSwxNjpbMiwxOF0sMTk6
WzIsMThdLDIwOlsyLDE4XSwyMjpbMiwxOF0sMjM6WzIsMThdLDI1OlsyLDE4XX0sezE4OlsyLDQ1
XSwyMTo1NiwyNDpbMiw0NV0sMjk6NTMsMzA6NjAsMzE6NTQsMzI6WzEsNTddLDMzOlsxLDU4XSwz
NDpbMSw1OV0sMzU6WzEsNjFdLDM2OlsyLDQ1XSwzNzo1NSwzODo2MiwzOTo2Myw0MDpbMSw2NF0s
NDI6WzEsMjddLDQzOjI2fSx7NDA6WzEsNjVdfSx7MTg6WzIsMzddLDI0OlsyLDM3XSwzMjpbMiwz
N10sMzM6WzIsMzddLDM0OlsyLDM3XSwzNTpbMiwzN10sMzY6WzIsMzddLDQwOlsyLDM3XSw0Mjpb
MiwzN119LHsxNDpbMiwxN10sMTU6WzIsMTddLDE2OlsyLDE3XSwxOTpbMiwxN10sMjA6WzIsMTdd
LDIyOlsyLDE3XSwyMzpbMiwxN10sMjU6WzIsMTddfSx7NTpbMiwyMF0sMTQ6WzIsMjBdLDE1Olsy
LDIwXSwxNjpbMiwyMF0sMTk6WzIsMjBdLDIwOlsyLDIwXSwyMjpbMiwyMF0sMjM6WzIsMjBdLDI1
OlsyLDIwXX0sezU6WzIsMjFdLDE0OlsyLDIxXSwxNTpbMiwyMV0sMTY6WzIsMjFdLDE5OlsyLDIx
XSwyMDpbMiwyMV0sMjI6WzIsMjFdLDIzOlsyLDIxXSwyNTpbMiwyMV19LHsxODpbMSw2Nl19LHsx
ODpbMiw0Ml19LHsxODpbMSw2N119LHs4OjE3LDk6NSwxMTo2LDEyOjcsMTM6OCwxNDpbMSw5XSwx
NTpbMSwxMF0sMTY6WzEsMTJdLDE5OlsxLDExXSwyMDpbMiw0XSwyMjpbMSwxM10sMjM6WzEsMTRd
LDI1OlsxLDE1XX0sezE4OlsyLDI0XSwyNDpbMiwyNF0sMzY6WzIsMjRdfSx7MTg6WzIsNDRdLDI0
OlsyLDQ0XSwzMjpbMiw0NF0sMzM6WzIsNDRdLDM0OlsyLDQ0XSwzNTpbMiw0NF0sMzY6WzIsNDRd
LDQwOlsyLDQ0XSw0MjpbMiw0NF19LHsxODpbMiw0Nl0sMjQ6WzIsNDZdLDM2OlsyLDQ2XX0sezE4
OlsyLDI2XSwyNDpbMiwyNl0sMzI6WzIsMjZdLDMzOlsyLDI2XSwzNDpbMiwyNl0sMzU6WzIsMjZd
LDM2OlsyLDI2XSw0MDpbMiwyNl0sNDI6WzIsMjZdfSx7MTg6WzIsMjddLDI0OlsyLDI3XSwzMjpb
MiwyN10sMzM6WzIsMjddLDM0OlsyLDI3XSwzNTpbMiwyN10sMzY6WzIsMjddLDQwOlsyLDI3XSw0
MjpbMiwyN119LHsxODpbMiwyOF0sMjQ6WzIsMjhdLDMyOlsyLDI4XSwzMzpbMiwyOF0sMzQ6WzIs
MjhdLDM1OlsyLDI4XSwzNjpbMiwyOF0sNDA6WzIsMjhdLDQyOlsyLDI4XX0sezE4OlsyLDI5XSwy
NDpbMiwyOV0sMzI6WzIsMjldLDMzOlsyLDI5XSwzNDpbMiwyOV0sMzU6WzIsMjldLDM2OlsyLDI5
XSw0MDpbMiwyOV0sNDI6WzIsMjldfSx7MTg6WzIsMzBdLDI0OlsyLDMwXSwzMjpbMiwzMF0sMzM6
WzIsMzBdLDM0OlsyLDMwXSwzNTpbMiwzMF0sMzY6WzIsMzBdLDQwOlsyLDMwXSw0MjpbMiwzMF19
LHsxNzo2OCwyMToyNCwzMDoyNSw0MDpbMSwyOF0sNDI6WzEsMjddLDQzOjI2fSx7MTg6WzIsMzJd
LDI0OlsyLDMyXSwzNjpbMiwzMl0sMzk6NjksNDA6WzEsNzBdfSx7MTg6WzIsNDddLDI0OlsyLDQ3
XSwzNjpbMiw0N10sNDA6WzIsNDddfSx7MTg6WzIsNDBdLDI0OlsyLDQwXSwzMjpbMiw0MF0sMzM6
WzIsNDBdLDM0OlsyLDQwXSwzNTpbMiw0MF0sMzY6WzIsNDBdLDQwOlsyLDQwXSw0MTpbMSw3MV0s
NDI6WzIsNDBdLDQ0OlsyLDQwXX0sezE4OlsyLDM5XSwyNDpbMiwzOV0sMzI6WzIsMzldLDMzOlsy
LDM5XSwzNDpbMiwzOV0sMzU6WzIsMzldLDM2OlsyLDM5XSw0MDpbMiwzOV0sNDI6WzIsMzldLDQ0
OlsyLDM5XX0sezU6WzIsMjJdLDE0OlsyLDIyXSwxNTpbMiwyMl0sMTY6WzIsMjJdLDE5OlsyLDIy
XSwyMDpbMiwyMl0sMjI6WzIsMjJdLDIzOlsyLDIyXSwyNTpbMiwyMl19LHs1OlsyLDE5XSwxNDpb
MiwxOV0sMTU6WzIsMTldLDE2OlsyLDE5XSwxOTpbMiwxOV0sMjA6WzIsMTldLDIyOlsyLDE5XSwy
MzpbMiwxOV0sMjU6WzIsMTldfSx7MzY6WzEsNzJdfSx7MTg6WzIsNDhdLDI0OlsyLDQ4XSwzNjpb
Miw0OF0sNDA6WzIsNDhdfSx7NDE6WzEsNzFdfSx7MjE6NTYsMzA6NjAsMzE6NzMsMzI6WzEsNTdd
LDMzOlsxLDU4XSwzNDpbMSw1OV0sMzU6WzEsNjFdLDQwOlsxLDI4XSw0MjpbMSwyN10sNDM6MjZ9
LHsxODpbMiwzMV0sMjQ6WzIsMzFdLDMyOlsyLDMxXSwzMzpbMiwzMV0sMzQ6WzIsMzFdLDM1Olsy
LDMxXSwzNjpbMiwzMV0sNDA6WzIsMzFdLDQyOlsyLDMxXX0sezE4OlsyLDMzXSwyNDpbMiwzM10s
MzY6WzIsMzNdLDQwOlsyLDMzXX1dLAotICBkZWZhdWx0QWN0aW9uczogezM6WzIsMl0sMTY6WzIs
MV0sNTA6WzIsNDJdfSwKLSAgcGFyc2VFcnJvcjogZnVuY3Rpb24gcGFyc2VFcnJvcihzdHIsIGhh
c2gpIHsKLSAgICAgIHRocm93IG5ldyBFcnJvcihzdHIpOwotICB9LAotICBwYXJzZTogZnVuY3Rp
b24gcGFyc2UoaW5wdXQpIHsKLSAgICAgIHZhciBzZWxmID0gdGhpcywgc3RhY2sgPSBbMF0sIHZz
dGFjayA9IFtudWxsXSwgbHN0YWNrID0gW10sIHRhYmxlID0gdGhpcy50YWJsZSwgeXl0ZXh0ID0g
IiIsIHl5bGluZW5vID0gMCwgeXlsZW5nID0gMCwgcmVjb3ZlcmluZyA9IDAsIFRFUlJPUiA9IDIs
IEVPRiA9IDE7Ci0gICAgICB0aGlzLmxleGVyLnNldElucHV0KGlucHV0KTsKLSAgICAgIHRoaXMu
bGV4ZXIueXkgPSB0aGlzLnl5OwotICAgICAgdGhpcy55eS5sZXhlciA9IHRoaXMubGV4ZXI7Ci0g
ICAgICB0aGlzLnl5LnBhcnNlciA9IHRoaXM7Ci0gICAgICBpZiAodHlwZW9mIHRoaXMubGV4ZXIu
eXlsbG9jID09ICJ1bmRlZmluZWQiKQotICAgICAgICAgIHRoaXMubGV4ZXIueXlsbG9jID0ge307
Ci0gICAgICB2YXIgeXlsb2MgPSB0aGlzLmxleGVyLnl5bGxvYzsKLSAgICAgIGxzdGFjay5wdXNo
KHl5bG9jKTsKLSAgICAgIHZhciByYW5nZXMgPSB0aGlzLmxleGVyLm9wdGlvbnMgJiYgdGhpcy5s
ZXhlci5vcHRpb25zLnJhbmdlczsKLSAgICAgIGlmICh0eXBlb2YgdGhpcy55eS5wYXJzZUVycm9y
ID09PSAiZnVuY3Rpb24iKQotICAgICAgICAgIHRoaXMucGFyc2VFcnJvciA9IHRoaXMueXkucGFy
c2VFcnJvcjsKLSAgICAgIGZ1bmN0aW9uIHBvcFN0YWNrKG4pIHsKLSAgICAgICAgICBzdGFjay5s
ZW5ndGggPSBzdGFjay5sZW5ndGggLSAyICogbjsKLSAgICAgICAgICB2c3RhY2subGVuZ3RoID0g
dnN0YWNrLmxlbmd0aCAtIG47Ci0gICAgICAgICAgbHN0YWNrLmxlbmd0aCA9IGxzdGFjay5sZW5n
dGggLSBuOwotICAgICAgfQotICAgICAgZnVuY3Rpb24gbGV4KCkgewotICAgICAgICAgIHZhciB0
b2tlbjsKLSAgICAgICAgICB0b2tlbiA9IHNlbGYubGV4ZXIubGV4KCkgfHwgMTsKLSAgICAgICAg
ICBpZiAodHlwZW9mIHRva2VuICE9PSAibnVtYmVyIikgewotICAgICAgICAgICAgICB0b2tlbiA9
IHNlbGYuc3ltYm9sc19bdG9rZW5dIHx8IHRva2VuOwotICAgICAgICAgIH0KLSAgICAgICAgICBy
ZXR1cm4gdG9rZW47Ci0gICAgICB9Ci0gICAgICB2YXIgc3ltYm9sLCBwcmVFcnJvclN5bWJvbCwg
c3RhdGUsIGFjdGlvbiwgYSwgciwgeXl2YWwgPSB7fSwgcCwgbGVuLCBuZXdTdGF0ZSwgZXhwZWN0
ZWQ7Ci0gICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICAgIHN0YXRlID0gc3RhY2tbc3RhY2su
bGVuZ3RoIC0gMV07Ci0gICAgICAgICAgaWYgKHRoaXMuZGVmYXVsdEFjdGlvbnNbc3RhdGVdKSB7
Ci0gICAgICAgICAgICAgIGFjdGlvbiA9IHRoaXMuZGVmYXVsdEFjdGlvbnNbc3RhdGVdOwotICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgIGlmIChzeW1ib2wgPT09IG51bGwgfHwgdHlw
ZW9mIHN5bWJvbCA9PSAidW5kZWZpbmVkIikgewotICAgICAgICAgICAgICAgICAgc3ltYm9sID0g
bGV4KCk7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgYWN0aW9uID0gdGFibGVbc3Rh
dGVdICYmIHRhYmxlW3N0YXRlXVtzeW1ib2xdOwotICAgICAgICAgIH0KLSAgICAgICAgICBpZiAo
dHlwZW9mIGFjdGlvbiA9PT0gInVuZGVmaW5lZCIgfHwgIWFjdGlvbi5sZW5ndGggfHwgIWFjdGlv
blswXSkgewotICAgICAgICAgICAgICB2YXIgZXJyU3RyID0gIiI7Ci0gICAgICAgICAgICAgIGlm
ICghcmVjb3ZlcmluZykgewotICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSBbXTsKLSAgICAg
ICAgICAgICAgICAgIGZvciAocCBpbiB0YWJsZVtzdGF0ZV0pCi0gICAgICAgICAgICAgICAgICAg
ICAgaWYgKHRoaXMudGVybWluYWxzX1twXSAmJiBwID4gMikgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICBleHBlY3RlZC5wdXNoKCInIiArIHRoaXMudGVybWluYWxzX1twXSArICInIik7Ci0g
ICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubGV4ZXIu
c2hvd1Bvc2l0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgZXJyU3RyID0gIlBhcnNlIGVy
cm9yIG9uIGxpbmUgIiArICh5eWxpbmVubyArIDEpICsgIjpcbiIgKyB0aGlzLmxleGVyLnNob3dQ
b3NpdGlvbigpICsgIlxuRXhwZWN0aW5nICIgKyBleHBlY3RlZC5qb2luKCIsICIpICsgIiwgZ290
ICciICsgKHRoaXMudGVybWluYWxzX1tzeW1ib2xdIHx8IHN5bWJvbCkgKyAiJyI7Ci0gICAgICAg
ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgIGVyclN0ciA9ICJQYXJz
ZSBlcnJvciBvbiBsaW5lICIgKyAoeXlsaW5lbm8gKyAxKSArICI6IFVuZXhwZWN0ZWQgIiArIChz
eW1ib2wgPT0gMT8iZW5kIG9mIGlucHV0IjoiJyIgKyAodGhpcy50ZXJtaW5hbHNfW3N5bWJvbF0g
fHwgc3ltYm9sKSArICInIik7Ci0gICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ICB0aGlzLnBhcnNlRXJyb3IoZXJyU3RyLCB7dGV4dDogdGhpcy5sZXhlci5tYXRjaCwgdG9rZW46
IHRoaXMudGVybWluYWxzX1tzeW1ib2xdIHx8IHN5bWJvbCwgbGluZTogdGhpcy5sZXhlci55eWxp
bmVubywgbG9jOiB5eWxvYywgZXhwZWN0ZWQ6IGV4cGVjdGVkfSk7Ci0gICAgICAgICAgICAgIH0K
LSAgICAgICAgICB9Ci0gICAgICAgICAgaWYgKGFjdGlvblswXSBpbnN0YW5jZW9mIEFycmF5ICYm
IGFjdGlvbi5sZW5ndGggPiAxKSB7Ci0gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiUGFy
c2UgRXJyb3I6IG11bHRpcGxlIGFjdGlvbnMgcG9zc2libGUgYXQgc3RhdGU6ICIgKyBzdGF0ZSAr
ICIsIHRva2VuOiAiICsgc3ltYm9sKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgc3dpdGNoIChh
Y3Rpb25bMF0pIHsKLSAgICAgICAgICBjYXNlIDE6Ci0gICAgICAgICAgICAgIHN0YWNrLnB1c2go
c3ltYm9sKTsKLSAgICAgICAgICAgICAgdnN0YWNrLnB1c2godGhpcy5sZXhlci55eXRleHQpOwot
ICAgICAgICAgICAgICBsc3RhY2sucHVzaCh0aGlzLmxleGVyLnl5bGxvYyk7Ci0gICAgICAgICAg
ICAgIHN0YWNrLnB1c2goYWN0aW9uWzFdKTsKLSAgICAgICAgICAgICAgc3ltYm9sID0gbnVsbDsK
LSAgICAgICAgICAgICAgaWYgKCFwcmVFcnJvclN5bWJvbCkgewotICAgICAgICAgICAgICAgICAg
eXlsZW5nID0gdGhpcy5sZXhlci55eWxlbmc7Ci0gICAgICAgICAgICAgICAgICB5eXRleHQgPSB0
aGlzLmxleGVyLnl5dGV4dDsKLSAgICAgICAgICAgICAgICAgIHl5bGluZW5vID0gdGhpcy5sZXhl
ci55eWxpbmVubzsKLSAgICAgICAgICAgICAgICAgIHl5bG9jID0gdGhpcy5sZXhlci55eWxsb2M7
Ci0gICAgICAgICAgICAgICAgICBpZiAocmVjb3ZlcmluZyA+IDApCi0gICAgICAgICAgICAgICAg
ICAgICAgcmVjb3ZlcmluZy0tOwotICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgICAgc3ltYm9sID0gcHJlRXJyb3JTeW1ib2w7Ci0gICAgICAgICAgICAgICAgICBwcmVFcnJv
clN5bWJvbCA9IG51bGw7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgY2FzZSAyOgotICAgICAgICAgICAgICBsZW4gPSB0aGlzLnByb2R1Y3Rpb25zX1th
Y3Rpb25bMV1dWzFdOwotICAgICAgICAgICAgICB5eXZhbC4kID0gdnN0YWNrW3ZzdGFjay5sZW5n
dGggLSBsZW5dOwotICAgICAgICAgICAgICB5eXZhbC5fJCA9IHtmaXJzdF9saW5lOiBsc3RhY2tb
bHN0YWNrLmxlbmd0aCAtIChsZW4gfHwgMSldLmZpcnN0X2xpbmUsIGxhc3RfbGluZTogbHN0YWNr
W2xzdGFjay5sZW5ndGggLSAxXS5sYXN0X2xpbmUsIGZpcnN0X2NvbHVtbjogbHN0YWNrW2xzdGFj
ay5sZW5ndGggLSAobGVuIHx8IDEpXS5maXJzdF9jb2x1bW4sIGxhc3RfY29sdW1uOiBsc3RhY2tb
bHN0YWNrLmxlbmd0aCAtIDFdLmxhc3RfY29sdW1ufTsKLSAgICAgICAgICAgICAgaWYgKHJhbmdl
cykgewotICAgICAgICAgICAgICAgICAgeXl2YWwuXyQucmFuZ2UgPSBbbHN0YWNrW2xzdGFjay5s
ZW5ndGggLSAobGVuIHx8IDEpXS5yYW5nZVswXSwgbHN0YWNrW2xzdGFjay5sZW5ndGggLSAxXS5y
YW5nZVsxXV07Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgciA9IHRoaXMucGVyZm9y
bUFjdGlvbi5jYWxsKHl5dmFsLCB5eXRleHQsIHl5bGVuZywgeXlsaW5lbm8sIHRoaXMueXksIGFj
dGlvblsxXSwgdnN0YWNrLCBsc3RhY2spOwotICAgICAgICAgICAgICBpZiAodHlwZW9mIHIgIT09
ICJ1bmRlZmluZWQiKSB7Ci0gICAgICAgICAgICAgICAgICByZXR1cm4gcjsKLSAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICBpZiAobGVuKSB7Ci0gICAgICAgICAgICAgICAgICBzdGFjayA9
IHN0YWNrLnNsaWNlKDAsIC0xICogbGVuICogMik7Ci0gICAgICAgICAgICAgICAgICB2c3RhY2sg
PSB2c3RhY2suc2xpY2UoMCwgLTEgKiBsZW4pOwotICAgICAgICAgICAgICAgICAgbHN0YWNrID0g
bHN0YWNrLnNsaWNlKDAsIC0xICogbGVuKTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICBzdGFjay5wdXNoKHRoaXMucHJvZHVjdGlvbnNfW2FjdGlvblsxXV1bMF0pOwotICAgICAgICAg
ICAgICB2c3RhY2sucHVzaCh5eXZhbC4kKTsKLSAgICAgICAgICAgICAgbHN0YWNrLnB1c2goeXl2
YWwuXyQpOwotICAgICAgICAgICAgICBuZXdTdGF0ZSA9IHRhYmxlW3N0YWNrW3N0YWNrLmxlbmd0
aCAtIDJdXVtzdGFja1tzdGFjay5sZW5ndGggLSAxXV07Ci0gICAgICAgICAgICAgIHN0YWNrLnB1
c2gobmV3U3RhdGUpOwotICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIDM6Ci0g
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgIH0KLSAgICAgIH0KLSAgICAgIHJl
dHVybiB0cnVlOwotICB9Ci0gIH07Ci0KLQotICBmdW5jdGlvbiBzdHJpcEZsYWdzKG9wZW4sIGNs
b3NlKSB7Ci0gICAgcmV0dXJuIHsKLSAgICAgIGxlZnQ6IG9wZW4uY2hhckF0KDIpID09PSAnfics
Ci0gICAgICByaWdodDogY2xvc2UuY2hhckF0KDApID09PSAnficgfHwgY2xvc2UuY2hhckF0KDEp
ID09PSAnficKLSAgICB9OwotICB9Ci0KLSAgLyogSmlzb24gZ2VuZXJhdGVkIGxleGVyICovCi0g
IHZhciBsZXhlciA9IChmdW5jdGlvbigpewotICB2YXIgbGV4ZXIgPSAoe0VPRjoxLAotICBwYXJz
ZUVycm9yOmZ1bmN0aW9uIHBhcnNlRXJyb3Ioc3RyLCBoYXNoKSB7Ci0gICAgICAgICAgaWYgKHRo
aXMueXkucGFyc2VyKSB7Ci0gICAgICAgICAgICAgIHRoaXMueXkucGFyc2VyLnBhcnNlRXJyb3Io
c3RyLCBoYXNoKTsKLSAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICB0aHJvdyBuZXcg
RXJyb3Ioc3RyKTsKLSAgICAgICAgICB9Ci0gICAgICB9LAotICBzZXRJbnB1dDpmdW5jdGlvbiAo
aW5wdXQpIHsKLSAgICAgICAgICB0aGlzLl9pbnB1dCA9IGlucHV0OwotICAgICAgICAgIHRoaXMu
X21vcmUgPSB0aGlzLl9sZXNzID0gdGhpcy5kb25lID0gZmFsc2U7Ci0gICAgICAgICAgdGhpcy55
eWxpbmVubyA9IHRoaXMueXlsZW5nID0gMDsKLSAgICAgICAgICB0aGlzLnl5dGV4dCA9IHRoaXMu
bWF0Y2hlZCA9IHRoaXMubWF0Y2ggPSAnJzsKLSAgICAgICAgICB0aGlzLmNvbmRpdGlvblN0YWNr
ID0gWydJTklUSUFMJ107Ci0gICAgICAgICAgdGhpcy55eWxsb2MgPSB7Zmlyc3RfbGluZToxLGZp
cnN0X2NvbHVtbjowLGxhc3RfbGluZToxLGxhc3RfY29sdW1uOjB9OwotICAgICAgICAgIGlmICh0
aGlzLm9wdGlvbnMucmFuZ2VzKSB0aGlzLnl5bGxvYy5yYW5nZSA9IFswLDBdOwotICAgICAgICAg
IHRoaXMub2Zmc2V0ID0gMDsKLSAgICAgICAgICByZXR1cm4gdGhpczsKLSAgICAgIH0sCi0gIGlu
cHV0OmZ1bmN0aW9uICgpIHsKLSAgICAgICAgICB2YXIgY2ggPSB0aGlzLl9pbnB1dFswXTsKLSAg
ICAgICAgICB0aGlzLnl5dGV4dCArPSBjaDsKLSAgICAgICAgICB0aGlzLnl5bGVuZysrOwotICAg
ICAgICAgIHRoaXMub2Zmc2V0Kys7Ci0gICAgICAgICAgdGhpcy5tYXRjaCArPSBjaDsKLSAgICAg
ICAgICB0aGlzLm1hdGNoZWQgKz0gY2g7Ci0gICAgICAgICAgdmFyIGxpbmVzID0gY2gubWF0Y2go
Lyg/OlxyXG4/fFxuKS4qL2cpOwotICAgICAgICAgIGlmIChsaW5lcykgewotICAgICAgICAgICAg
ICB0aGlzLnl5bGluZW5vKys7Ci0gICAgICAgICAgICAgIHRoaXMueXlsbG9jLmxhc3RfbGluZSsr
OwotICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgIHRoaXMueXlsbG9jLmxhc3RfY29s
dW1uKys7Ci0gICAgICAgICAgfQotICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMucmFuZ2VzKSB0
aGlzLnl5bGxvYy5yYW5nZVsxXSsrOwotCi0gICAgICAgICAgdGhpcy5faW5wdXQgPSB0aGlzLl9p
bnB1dC5zbGljZSgxKTsKLSAgICAgICAgICByZXR1cm4gY2g7Ci0gICAgICB9LAotICB1bnB1dDpm
dW5jdGlvbiAoY2gpIHsKLSAgICAgICAgICB2YXIgbGVuID0gY2gubGVuZ3RoOwotICAgICAgICAg
IHZhciBsaW5lcyA9IGNoLnNwbGl0KC8oPzpcclxuP3xcbikvZyk7Ci0KLSAgICAgICAgICB0aGlz
Ll9pbnB1dCA9IGNoICsgdGhpcy5faW5wdXQ7Ci0gICAgICAgICAgdGhpcy55eXRleHQgPSB0aGlz
Lnl5dGV4dC5zdWJzdHIoMCwgdGhpcy55eXRleHQubGVuZ3RoLWxlbi0xKTsKLSAgICAgICAgICAv
L3RoaXMueXlsZW5nIC09IGxlbjsKLSAgICAgICAgICB0aGlzLm9mZnNldCAtPSBsZW47Ci0gICAg
ICAgICAgdmFyIG9sZExpbmVzID0gdGhpcy5tYXRjaC5zcGxpdCgvKD86XHJcbj98XG4pL2cpOwot
ICAgICAgICAgIHRoaXMubWF0Y2ggPSB0aGlzLm1hdGNoLnN1YnN0cigwLCB0aGlzLm1hdGNoLmxl
bmd0aC0xKTsKLSAgICAgICAgICB0aGlzLm1hdGNoZWQgPSB0aGlzLm1hdGNoZWQuc3Vic3RyKDAs
IHRoaXMubWF0Y2hlZC5sZW5ndGgtMSk7Ci0KLSAgICAgICAgICBpZiAobGluZXMubGVuZ3RoLTEp
IHRoaXMueXlsaW5lbm8gLT0gbGluZXMubGVuZ3RoLTE7Ci0gICAgICAgICAgdmFyIHIgPSB0aGlz
Lnl5bGxvYy5yYW5nZTsKLQotICAgICAgICAgIHRoaXMueXlsbG9jID0ge2ZpcnN0X2xpbmU6IHRo
aXMueXlsbG9jLmZpcnN0X2xpbmUsCi0gICAgICAgICAgICBsYXN0X2xpbmU6IHRoaXMueXlsaW5l
bm8rMSwKLSAgICAgICAgICAgIGZpcnN0X2NvbHVtbjogdGhpcy55eWxsb2MuZmlyc3RfY29sdW1u
LAotICAgICAgICAgICAgbGFzdF9jb2x1bW46IGxpbmVzID8KLSAgICAgICAgICAgICAgICAobGlu
ZXMubGVuZ3RoID09PSBvbGRMaW5lcy5sZW5ndGggPyB0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4g
OiAwKSArIG9sZExpbmVzW29sZExpbmVzLmxlbmd0aCAtIGxpbmVzLmxlbmd0aF0ubGVuZ3RoIC0g
bGluZXNbMF0ubGVuZ3RoOgotICAgICAgICAgICAgICAgIHRoaXMueXlsbG9jLmZpcnN0X2NvbHVt
biAtIGxlbgotICAgICAgICAgICAgfTsKLQotICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMucmFu
Z2VzKSB7Ci0gICAgICAgICAgICAgIHRoaXMueXlsbG9jLnJhbmdlID0gW3JbMF0sIHJbMF0gKyB0
aGlzLnl5bGVuZyAtIGxlbl07Ci0gICAgICAgICAgfQotICAgICAgICAgIHJldHVybiB0aGlzOwot
ICAgICAgfSwKLSAgbW9yZTpmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgdGhpcy5fbW9yZSA9IHRy
dWU7Ci0gICAgICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgICB9LAotICBsZXNzOmZ1bmN0aW9uIChu
KSB7Ci0gICAgICAgICAgdGhpcy51bnB1dCh0aGlzLm1hdGNoLnNsaWNlKG4pKTsKLSAgICAgIH0s
Ci0gIHBhc3RJbnB1dDpmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgdmFyIHBhc3QgPSB0aGlzLm1h
dGNoZWQuc3Vic3RyKDAsIHRoaXMubWF0Y2hlZC5sZW5ndGggLSB0aGlzLm1hdGNoLmxlbmd0aCk7
Ci0gICAgICAgICAgcmV0dXJuIChwYXN0Lmxlbmd0aCA+IDIwID8gJy4uLic6JycpICsgcGFzdC5z
dWJzdHIoLTIwKS5yZXBsYWNlKC9cbi9nLCAiIik7Ci0gICAgICB9LAotICB1cGNvbWluZ0lucHV0
OmZ1bmN0aW9uICgpIHsKLSAgICAgICAgICB2YXIgbmV4dCA9IHRoaXMubWF0Y2g7Ci0gICAgICAg
ICAgaWYgKG5leHQubGVuZ3RoIDwgMjApIHsKLSAgICAgICAgICAgICAgbmV4dCArPSB0aGlzLl9p
bnB1dC5zdWJzdHIoMCwgMjAtbmV4dC5sZW5ndGgpOwotICAgICAgICAgIH0KLSAgICAgICAgICBy
ZXR1cm4gKG5leHQuc3Vic3RyKDAsMjApKyhuZXh0Lmxlbmd0aCA+IDIwID8gJy4uLic6JycpKS5y
ZXBsYWNlKC9cbi9nLCAiIik7Ci0gICAgICB9LAotICBzaG93UG9zaXRpb246ZnVuY3Rpb24gKCkg
ewotICAgICAgICAgIHZhciBwcmUgPSB0aGlzLnBhc3RJbnB1dCgpOwotICAgICAgICAgIHZhciBj
ID0gbmV3IEFycmF5KHByZS5sZW5ndGggKyAxKS5qb2luKCItIik7Ci0gICAgICAgICAgcmV0dXJu
IHByZSArIHRoaXMudXBjb21pbmdJbnB1dCgpICsgIlxuIiArIGMrIl4iOwotICAgICAgfSwKLSAg
bmV4dDpmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgaWYgKHRoaXMuZG9uZSkgewotICAgICAgICAg
ICAgICByZXR1cm4gdGhpcy5FT0Y7Ci0gICAgICAgICAgfQotICAgICAgICAgIGlmICghdGhpcy5f
aW5wdXQpIHRoaXMuZG9uZSA9IHRydWU7Ci0KLSAgICAgICAgICB2YXIgdG9rZW4sCi0gICAgICAg
ICAgICAgIG1hdGNoLAotICAgICAgICAgICAgICB0ZW1wTWF0Y2gsCi0gICAgICAgICAgICAgIGlu
ZGV4LAotICAgICAgICAgICAgICBjb2wsCi0gICAgICAgICAgICAgIGxpbmVzOwotICAgICAgICAg
IGlmICghdGhpcy5fbW9yZSkgewotICAgICAgICAgICAgICB0aGlzLnl5dGV4dCA9ICcnOwotICAg
ICAgICAgICAgICB0aGlzLm1hdGNoID0gJyc7Ci0gICAgICAgICAgfQotICAgICAgICAgIHZhciBy
dWxlcyA9IHRoaXMuX2N1cnJlbnRSdWxlcygpOwotICAgICAgICAgIGZvciAodmFyIGk9MDtpIDwg
cnVsZXMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgICAgdGVtcE1hdGNoID0gdGhpcy5faW5w
dXQubWF0Y2godGhpcy5ydWxlc1tydWxlc1tpXV0pOwotICAgICAgICAgICAgICBpZiAodGVtcE1h
dGNoICYmICghbWF0Y2ggfHwgdGVtcE1hdGNoWzBdLmxlbmd0aCA+IG1hdGNoWzBdLmxlbmd0aCkp
IHsKLSAgICAgICAgICAgICAgICAgIG1hdGNoID0gdGVtcE1hdGNoOwotICAgICAgICAgICAgICAg
ICAgaW5kZXggPSBpOwotICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLm9wdGlvbnMuZmxleCkg
YnJlYWs7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgICAgaWYgKG1hdGNo
KSB7Ci0gICAgICAgICAgICAgIGxpbmVzID0gbWF0Y2hbMF0ubWF0Y2goLyg/OlxyXG4/fFxuKS4q
L2cpOwotICAgICAgICAgICAgICBpZiAobGluZXMpIHRoaXMueXlsaW5lbm8gKz0gbGluZXMubGVu
Z3RoOwotICAgICAgICAgICAgICB0aGlzLnl5bGxvYyA9IHtmaXJzdF9saW5lOiB0aGlzLnl5bGxv
Yy5sYXN0X2xpbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RfbGluZTogdGhp
cy55eWxpbmVubysxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJzdF9jb2x1bW46
IHRoaXMueXlsbG9jLmxhc3RfY29sdW1uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs
YXN0X2NvbHVtbjogbGluZXMgPyBsaW5lc1tsaW5lcy5sZW5ndGgtMV0ubGVuZ3RoLWxpbmVzW2xp
bmVzLmxlbmd0aC0xXS5tYXRjaCgvXHI/XG4/LylbMF0ubGVuZ3RoIDogdGhpcy55eWxsb2MubGFz
dF9jb2x1bW4gKyBtYXRjaFswXS5sZW5ndGh9OwotICAgICAgICAgICAgICB0aGlzLnl5dGV4dCAr
PSBtYXRjaFswXTsKLSAgICAgICAgICAgICAgdGhpcy5tYXRjaCArPSBtYXRjaFswXTsKLSAgICAg
ICAgICAgICAgdGhpcy5tYXRjaGVzID0gbWF0Y2g7Ci0gICAgICAgICAgICAgIHRoaXMueXlsZW5n
ID0gdGhpcy55eXRleHQubGVuZ3RoOwotICAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJh
bmdlcykgewotICAgICAgICAgICAgICAgICAgdGhpcy55eWxsb2MucmFuZ2UgPSBbdGhpcy5vZmZz
ZXQsIHRoaXMub2Zmc2V0ICs9IHRoaXMueXlsZW5nXTsKLSAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICB0aGlzLl9tb3JlID0gZmFsc2U7Ci0gICAgICAgICAgICAgIHRoaXMuX2lucHV0ID0g
dGhpcy5faW5wdXQuc2xpY2UobWF0Y2hbMF0ubGVuZ3RoKTsKLSAgICAgICAgICAgICAgdGhpcy5t
YXRjaGVkICs9IG1hdGNoWzBdOwotICAgICAgICAgICAgICB0b2tlbiA9IHRoaXMucGVyZm9ybUFj
dGlvbi5jYWxsKHRoaXMsIHRoaXMueXksIHRoaXMsIHJ1bGVzW2luZGV4XSx0aGlzLmNvbmRpdGlv
blN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTFdKTsKLSAgICAgICAgICAgICAgaWYg
KHRoaXMuZG9uZSAmJiB0aGlzLl9pbnB1dCkgdGhpcy5kb25lID0gZmFsc2U7Ci0gICAgICAgICAg
ICAgIGlmICh0b2tlbikgcmV0dXJuIHRva2VuOwotICAgICAgICAgICAgICBlbHNlIHJldHVybjsK
LSAgICAgICAgICB9Ci0gICAgICAgICAgaWYgKHRoaXMuX2lucHV0ID09PSAiIikgewotICAgICAg
ICAgICAgICByZXR1cm4gdGhpcy5FT0Y7Ci0gICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgcmV0dXJuIHRoaXMucGFyc2VFcnJvcignTGV4aWNhbCBlcnJvciBvbiBsaW5lICcrKHRoaXMu
eXlsaW5lbm8rMSkrJy4gVW5yZWNvZ25pemVkIHRleHQuXG4nK3RoaXMuc2hvd1Bvc2l0aW9uKCks
Ci0gICAgICAgICAgICAgICAgICAgICAge3RleHQ6ICIiLCB0b2tlbjogbnVsbCwgbGluZTogdGhp
cy55eWxpbmVub30pOwotICAgICAgICAgIH0KLSAgICAgIH0sCi0gIGxleDpmdW5jdGlvbiBsZXgo
KSB7Ci0gICAgICAgICAgdmFyIHIgPSB0aGlzLm5leHQoKTsKLSAgICAgICAgICBpZiAodHlwZW9m
IHIgIT09ICd1bmRlZmluZWQnKSB7Ci0gICAgICAgICAgICAgIHJldHVybiByOwotICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgIHJldHVybiB0aGlzLmxleCgpOwotICAgICAgICAgIH0K
LSAgICAgIH0sCi0gIGJlZ2luOmZ1bmN0aW9uIGJlZ2luKGNvbmRpdGlvbikgewotICAgICAgICAg
IHRoaXMuY29uZGl0aW9uU3RhY2sucHVzaChjb25kaXRpb24pOwotICAgICAgfSwKLSAgcG9wU3Rh
dGU6ZnVuY3Rpb24gcG9wU3RhdGUoKSB7Ci0gICAgICAgICAgcmV0dXJuIHRoaXMuY29uZGl0aW9u
U3RhY2sucG9wKCk7Ci0gICAgICB9LAotICBfY3VycmVudFJ1bGVzOmZ1bmN0aW9uIF9jdXJyZW50
UnVsZXMoKSB7Ci0gICAgICAgICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uc1t0aGlzLmNvbmRpdGlv
blN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTFdXS5ydWxlczsKLSAgICAgIH0sCi0g
IHRvcFN0YXRlOmZ1bmN0aW9uICgpIHsKLSAgICAgICAgICByZXR1cm4gdGhpcy5jb25kaXRpb25T
dGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0yXTsKLSAgICAgIH0sCi0gIHB1c2hTdGF0
ZTpmdW5jdGlvbiBiZWdpbihjb25kaXRpb24pIHsKLSAgICAgICAgICB0aGlzLmJlZ2luKGNvbmRp
dGlvbik7Ci0gICAgICB9fSk7Ci0gIGxleGVyLm9wdGlvbnMgPSB7fTsKLSAgbGV4ZXIucGVyZm9y
bUFjdGlvbiA9IGZ1bmN0aW9uIGFub255bW91cyh5eSx5eV8sJGF2b2lkaW5nX25hbWVfY29sbGlz
aW9ucyxZWV9TVEFSVCkgewotCi0KLSAgZnVuY3Rpb24gc3RyaXAoc3RhcnQsIGVuZCkgewotICAg
IHJldHVybiB5eV8ueXl0ZXh0ID0geXlfLnl5dGV4dC5zdWJzdHIoc3RhcnQsIHl5Xy55eWxlbmct
ZW5kKTsKLSAgfQotCi0KLSAgdmFyIFlZU1RBVEU9WVlfU1RBUlQKLSAgc3dpdGNoKCRhdm9pZGlu
Z19uYW1lX2NvbGxpc2lvbnMpIHsKLSAgY2FzZSAwOgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmKHl5Xy55eXRleHQuc2xpY2UoLTIpID09PSAiXFxcXCIpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmlwKDAsMSk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJlZ2luKCJtdSIpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZih5eV8ueXl0ZXh0LnNsaWNlKC0x
KSA9PT0gIlxcIikgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry
aXAoMCwxKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmVn
aW4oImVtdSIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJlZ2luKCJtdSIp
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZih5eV8ueXl0ZXh0KSByZXR1cm4gMTQ7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICBicmVhazsKLSAgY2FzZSAxOnJldHVybiAx
NDsKLSAgYnJlYWs7Ci0gIGNhc2UgMjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0aGlzLnBvcFN0YXRlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIDE0OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgYnJl
YWs7Ci0gIGNhc2UgMzpzdHJpcCgwLDQpOyB0aGlzLnBvcFN0YXRlKCk7IHJldHVybiAxNTsKLSAg
YnJlYWs7Ci0gIGNhc2UgNDpyZXR1cm4gMzU7Ci0gIGJyZWFrOwotICBjYXNlIDU6cmV0dXJuIDM2
OwotICBicmVhazsKLSAgY2FzZSA2OnJldHVybiAyNTsKLSAgYnJlYWs7Ci0gIGNhc2UgNzpyZXR1
cm4gMTY7Ci0gIGJyZWFrOwotICBjYXNlIDg6cmV0dXJuIDIwOwotICBicmVhazsKLSAgY2FzZSA5
OnJldHVybiAxOTsKLSAgYnJlYWs7Ci0gIGNhc2UgMTA6cmV0dXJuIDE5OwotICBicmVhazsKLSAg
Y2FzZSAxMTpyZXR1cm4gMjM7Ci0gIGJyZWFrOwotICBjYXNlIDEyOnJldHVybiAyMjsKLSAgYnJl
YWs7Ci0gIGNhc2UgMTM6dGhpcy5wb3BTdGF0ZSgpOyB0aGlzLmJlZ2luKCdjb20nKTsKLSAgYnJl
YWs7Ci0gIGNhc2UgMTQ6c3RyaXAoMyw1KTsgdGhpcy5wb3BTdGF0ZSgpOyByZXR1cm4gMTU7Ci0g
IGJyZWFrOwotICBjYXNlIDE1OnJldHVybiAyMjsKLSAgYnJlYWs7Ci0gIGNhc2UgMTY6cmV0dXJu
IDQxOwotICBicmVhazsKLSAgY2FzZSAxNzpyZXR1cm4gNDA7Ci0gIGJyZWFrOwotICBjYXNlIDE4
OnJldHVybiA0MDsKLSAgYnJlYWs7Ci0gIGNhc2UgMTk6cmV0dXJuIDQ0OwotICBicmVhazsKLSAg
Y2FzZSAyMDovLyBpZ25vcmUgd2hpdGVzcGFjZQotICBicmVhazsKLSAgY2FzZSAyMTp0aGlzLnBv
cFN0YXRlKCk7IHJldHVybiAyNDsKLSAgYnJlYWs7Ci0gIGNhc2UgMjI6dGhpcy5wb3BTdGF0ZSgp
OyByZXR1cm4gMTg7Ci0gIGJyZWFrOwotICBjYXNlIDIzOnl5Xy55eXRleHQgPSBzdHJpcCgxLDIp
LnJlcGxhY2UoL1xcIi9nLCciJyk7IHJldHVybiAzMjsKLSAgYnJlYWs7Ci0gIGNhc2UgMjQ6eXlf
Lnl5dGV4dCA9IHN0cmlwKDEsMikucmVwbGFjZSgvXFwnL2csIiciKTsgcmV0dXJuIDMyOwotICBi
cmVhazsKLSAgY2FzZSAyNTpyZXR1cm4gNDI7Ci0gIGJyZWFrOwotICBjYXNlIDI2OnJldHVybiAz
NDsKLSAgYnJlYWs7Ci0gIGNhc2UgMjc6cmV0dXJuIDM0OwotICBicmVhazsKLSAgY2FzZSAyODpy
ZXR1cm4gMzM7Ci0gIGJyZWFrOwotICBjYXNlIDI5OnJldHVybiA0MDsKLSAgYnJlYWs7Ci0gIGNh
c2UgMzA6eXlfLnl5dGV4dCA9IHN0cmlwKDEsMik7IHJldHVybiA0MDsKLSAgYnJlYWs7Ci0gIGNh
c2UgMzE6cmV0dXJuICdJTlZBTElEJzsKLSAgYnJlYWs7Ci0gIGNhc2UgMzI6cmV0dXJuIDU7Ci0g
IGJyZWFrOwotICB9Ci0gIH07Ci0gIGxleGVyLnJ1bGVzID0gWy9eKD86W15ceDAwXSo/KD89KFx7
XHspKSkvLC9eKD86W15ceDAwXSspLywvXig/OlteXHgwMF17Mix9Pyg/PShce1x7fFxcXHtce3xc
XFxcXHtce3wkKSkpLywvXig/Oltcc1xTXSo/LS1cfVx9KS8sL14oPzpcKCkvLC9eKD86XCkpLywv
Xig/Olx7XHsofik/PikvLC9eKD86XHtceyh+KT8jKS8sL14oPzpce1x7KH4pP1wvKS8sL14oPzpc
e1x7KH4pP1xeKS8sL14oPzpce1x7KH4pP1xzKmVsc2VcYikvLC9eKD86XHtceyh+KT9ceykvLC9e
KD86XHtceyh+KT8mKS8sL14oPzpce1x7IS0tKS8sL14oPzpce1x7IVtcc1xTXSo/XH1cfSkvLC9e
KD86XHtceyh+KT8pLywvXig/Oj0pLywvXig/OlwuXC4pLywvXig/OlwuKD89KFs9fn1cc1wvLild
KSkpLywvXig/OltcLy5dKS8sL14oPzpccyspLywvXig/Olx9KH4pP1x9XH0pLywvXig/Oih+KT9c
fVx9KS8sL14oPzoiKFxcWyJdfFteIl0pKiIpLywvXig/OicoXFxbJ118W14nXSkqJykvLC9eKD86
QCkvLC9eKD86dHJ1ZSg/PShbfn1ccyldKSkpLywvXig/OmZhbHNlKD89KFt+fVxzKV0pKSkvLC9e
KD86LT9bMC05XSsoPz0oW359XHMpXSkpKS8sL14oPzooW15ccyEiIyUtLFwuXC87LT5AXFstXF5g
XHstfl0rKD89KFs9fn1cc1wvLildKSkpKS8sL14oPzpcW1teXF1dKlxdKS8sL14oPzouKS8sL14o
PzokKS9dOwotICBsZXhlci5jb25kaXRpb25zID0geyJtdSI6eyJydWxlcyI6WzQsNSw2LDcsOCw5
LDEwLDExLDEyLDEzLDE0LDE1LDE2LDE3LDE4LDE5LDIwLDIxLDIyLDIzLDI0LDI1LDI2LDI3LDI4
LDI5LDMwLDMxLDMyXSwiaW5jbHVzaXZlIjpmYWxzZX0sImVtdSI6eyJydWxlcyI6WzJdLCJpbmNs
dXNpdmUiOmZhbHNlfSwiY29tIjp7InJ1bGVzIjpbM10sImluY2x1c2l2ZSI6ZmFsc2V9LCJJTklU
SUFMIjp7InJ1bGVzIjpbMCwxLDMyXSwiaW5jbHVzaXZlIjp0cnVlfX07Ci0gIHJldHVybiBsZXhl
cjt9KSgpCi0gIHBhcnNlci5sZXhlciA9IGxleGVyOwotICBmdW5jdGlvbiBQYXJzZXIgKCkgeyB0
aGlzLnl5ID0ge307IH1QYXJzZXIucHJvdG90eXBlID0gcGFyc2VyO3BhcnNlci5QYXJzZXIgPSBQ
YXJzZXI7Ci0gIHJldHVybiBuZXcgUGFyc2VyOwotICB9KSgpO19fZXhwb3J0c19fID0gaGFuZGxl
YmFyczsKLSAgLyoganNoaW50IGlnbm9yZTplbmQgKi8KLSAgcmV0dXJuIF9fZXhwb3J0c19fOwot
fSkoKTsKLQotLy8gaGFuZGxlYmFycy9jb21waWxlci9iYXNlLmpzCi12YXIgX19tb2R1bGU4X18g
PSAoZnVuY3Rpb24oX19kZXBlbmRlbmN5MV9fLCBfX2RlcGVuZGVuY3kyX18pIHsKLSAgInVzZSBz
dHJpY3QiOwotICB2YXIgX19leHBvcnRzX18gPSB7fTsKLSAgdmFyIHBhcnNlciA9IF9fZGVwZW5k
ZW5jeTFfXzsKLSAgdmFyIEFTVCA9IF9fZGVwZW5kZW5jeTJfXzsKLQotICBfX2V4cG9ydHNfXy5w
YXJzZXIgPSBwYXJzZXI7Ci0KLSAgZnVuY3Rpb24gcGFyc2UoaW5wdXQpIHsKLSAgICAvLyBKdXN0
IHJldHVybiBpZiBhbiBhbHJlYWR5LWNvbXBpbGUgQVNUIHdhcyBwYXNzZWQgaW4uCi0gICAgaWYo
aW5wdXQuY29uc3RydWN0b3IgPT09IEFTVC5Qcm9ncmFtTm9kZSkgeyByZXR1cm4gaW5wdXQ7IH0K
LQotICAgIHBhcnNlci55eSA9IEFTVDsKLSAgICByZXR1cm4gcGFyc2VyLnBhcnNlKGlucHV0KTsK
LSAgfQotCi0gIF9fZXhwb3J0c19fLnBhcnNlID0gcGFyc2U7Ci0gIHJldHVybiBfX2V4cG9ydHNf
XzsKLX0pKF9fbW9kdWxlOV9fLCBfX21vZHVsZTdfXyk7Ci0KLS8vIGhhbmRsZWJhcnMvY29tcGls
ZXIvY29tcGlsZXIuanMKLXZhciBfX21vZHVsZTEwX18gPSAoZnVuY3Rpb24oX19kZXBlbmRlbmN5
MV9fKSB7Ci0gICJ1c2Ugc3RyaWN0IjsKLSAgdmFyIF9fZXhwb3J0c19fID0ge307Ci0gIHZhciBF
eGNlcHRpb24gPSBfX2RlcGVuZGVuY3kxX187Ci0KLSAgZnVuY3Rpb24gQ29tcGlsZXIoKSB7fQot
Ci0gIF9fZXhwb3J0c19fLkNvbXBpbGVyID0gQ29tcGlsZXI7Ly8gdGhlIGZvdW5kSGVscGVyIHJl
Z2lzdGVyIHdpbGwgZGlzYW1iaWd1YXRlIGhlbHBlciBsb29rdXAgZnJvbSBmaW5kaW5nIGEKLSAg
Ly8gZnVuY3Rpb24gaW4gYSBjb250ZXh0LiBUaGlzIGlzIG5lY2Vzc2FyeSBmb3IgbXVzdGFjaGUg
Y29tcGF0aWJpbGl0eSwgd2hpY2gKLSAgLy8gcmVxdWlyZXMgdGhhdCBjb250ZXh0IGZ1bmN0aW9u
cyBpbiBibG9ja3MgYXJlIGV2YWx1YXRlZCBieSBibG9ja0hlbHBlck1pc3NpbmcsCi0gIC8vIGFu
ZCB0aGVuIHByb2NlZWQgYXMgaWYgdGhlIHJlc3VsdGluZyB2YWx1ZSB3YXMgcHJvdmlkZWQgdG8g
YmxvY2tIZWxwZXJNaXNzaW5nLgotCi0gIENvbXBpbGVyLnByb3RvdHlwZSA9IHsKLSAgICBjb21w
aWxlcjogQ29tcGlsZXIsCi0KLSAgICBkaXNhc3NlbWJsZTogZnVuY3Rpb24oKSB7Ci0gICAgICB2
YXIgb3Bjb2RlcyA9IHRoaXMub3Bjb2Rlcywgb3Bjb2RlLCBvdXQgPSBbXSwgcGFyYW1zLCBwYXJh
bTsKLQotICAgICAgZm9yICh2YXIgaT0wLCBsPW9wY29kZXMubGVuZ3RoOyBpPGw7IGkrKykgewot
ICAgICAgICBvcGNvZGUgPSBvcGNvZGVzW2ldOwotCi0gICAgICAgIGlmIChvcGNvZGUub3Bjb2Rl
ID09PSAnREVDTEFSRScpIHsKLSAgICAgICAgICBvdXQucHVzaCgiREVDTEFSRSAiICsgb3Bjb2Rl
Lm5hbWUgKyAiPSIgKyBvcGNvZGUudmFsdWUpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAg
IHBhcmFtcyA9IFtdOwotICAgICAgICAgIGZvciAodmFyIGo9MDsgajxvcGNvZGUuYXJncy5sZW5n
dGg7IGorKykgewotICAgICAgICAgICAgcGFyYW0gPSBvcGNvZGUuYXJnc1tqXTsKLSAgICAgICAg
ICAgIGlmICh0eXBlb2YgcGFyYW0gPT09ICJzdHJpbmciKSB7Ci0gICAgICAgICAgICAgIHBhcmFt
ID0gIlwiIiArIHBhcmFtLnJlcGxhY2UoIlxuIiwgIlxcbiIpICsgIlwiIjsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIHBhcmFtcy5wdXNoKHBhcmFtKTsKLSAgICAgICAgICB9Ci0gICAgICAg
ICAgb3V0LnB1c2gob3Bjb2RlLm9wY29kZSArICIgIiArIHBhcmFtcy5qb2luKCIgIikpOwotICAg
ICAgICB9Ci0gICAgICB9Ci0KLSAgICAgIHJldHVybiBvdXQuam9pbigiXG4iKTsKLSAgICB9LAot
Ci0gICAgZXF1YWxzOiBmdW5jdGlvbihvdGhlcikgewotICAgICAgdmFyIGxlbiA9IHRoaXMub3Bj
b2Rlcy5sZW5ndGg7Ci0gICAgICBpZiAob3RoZXIub3Bjb2Rlcy5sZW5ndGggIT09IGxlbikgewot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0KLSAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgbGVuOyBpKyspIHsKLSAgICAgICAgdmFyIG9wY29kZSA9IHRoaXMub3Bjb2Rlc1tpXSwKLSAg
ICAgICAgICAgIG90aGVyT3Bjb2RlID0gb3RoZXIub3Bjb2Rlc1tpXTsKLSAgICAgICAgaWYgKG9w
Y29kZS5vcGNvZGUgIT09IG90aGVyT3Bjb2RlLm9wY29kZSB8fCBvcGNvZGUuYXJncy5sZW5ndGgg
IT09IG90aGVyT3Bjb2RlLmFyZ3MubGVuZ3RoKSB7Ci0gICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICB9Ci0gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgb3Bjb2RlLmFyZ3MubGVuZ3Ro
OyBqKyspIHsKLSAgICAgICAgICBpZiAob3Bjb2RlLmFyZ3Nbal0gIT09IG90aGVyT3Bjb2RlLmFy
Z3Nbal0pIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICB9Ci0gICAgICAg
IH0KLSAgICAgIH0KLQotICAgICAgbGVuID0gdGhpcy5jaGlsZHJlbi5sZW5ndGg7Ci0gICAgICBp
ZiAob3RoZXIuY2hpbGRyZW4ubGVuZ3RoICE9PSBsZW4pIHsKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgfQotICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICAgIGlm
ICghdGhpcy5jaGlsZHJlbltpXS5lcXVhbHMob3RoZXIuY2hpbGRyZW5baV0pKSB7Ci0gICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICB9Ci0KLSAgICAgIHJldHVybiB0cnVl
OwotICAgIH0sCi0KLSAgICBndWlkOiAwLAotCi0gICAgY29tcGlsZTogZnVuY3Rpb24ocHJvZ3Jh
bSwgb3B0aW9ucykgewotICAgICAgdGhpcy5vcGNvZGVzID0gW107Ci0gICAgICB0aGlzLmNoaWxk
cmVuID0gW107Ci0gICAgICB0aGlzLmRlcHRocyA9IHtsaXN0OiBbXX07Ci0gICAgICB0aGlzLm9w
dGlvbnMgPSBvcHRpb25zOwotCi0gICAgICAvLyBUaGVzZSBjaGFuZ2VzIHdpbGwgcHJvcGFnYXRl
IHRvIHRoZSBvdGhlciBjb21waWxlciBjb21wb25lbnRzCi0gICAgICB2YXIga25vd25IZWxwZXJz
ID0gdGhpcy5vcHRpb25zLmtub3duSGVscGVyczsKLSAgICAgIHRoaXMub3B0aW9ucy5rbm93bkhl
bHBlcnMgPSB7Ci0gICAgICAgICdoZWxwZXJNaXNzaW5nJzogdHJ1ZSwKLSAgICAgICAgJ2Jsb2Nr
SGVscGVyTWlzc2luZyc6IHRydWUsCi0gICAgICAgICdlYWNoJzogdHJ1ZSwKLSAgICAgICAgJ2lm
JzogdHJ1ZSwKLSAgICAgICAgJ3VubGVzcyc6IHRydWUsCi0gICAgICAgICd3aXRoJzogdHJ1ZSwK
LSAgICAgICAgJ2xvZyc6IHRydWUKLSAgICAgIH07Ci0gICAgICBpZiAoa25vd25IZWxwZXJzKSB7
Ci0gICAgICAgIGZvciAodmFyIG5hbWUgaW4ga25vd25IZWxwZXJzKSB7Ci0gICAgICAgICAgdGhp
cy5vcHRpb25zLmtub3duSGVscGVyc1tuYW1lXSA9IGtub3duSGVscGVyc1tuYW1lXTsKLSAgICAg
ICAgfQotICAgICAgfQotCi0gICAgICByZXR1cm4gdGhpcy5hY2NlcHQocHJvZ3JhbSk7Ci0gICAg
fSwKLQotICAgIGFjY2VwdDogZnVuY3Rpb24obm9kZSkgewotICAgICAgdmFyIHN0cmlwID0gbm9k
ZS5zdHJpcCB8fCB7fSwKLSAgICAgICAgICByZXQ7Ci0gICAgICBpZiAoc3RyaXAubGVmdCkgewot
ICAgICAgICB0aGlzLm9wY29kZSgnc3RyaXAnKTsKLSAgICAgIH0KLQotICAgICAgcmV0ID0gdGhp
c1tub2RlLnR5cGVdKG5vZGUpOwotCi0gICAgICBpZiAoc3RyaXAucmlnaHQpIHsKLSAgICAgICAg
dGhpcy5vcGNvZGUoJ3N0cmlwJyk7Ci0gICAgICB9Ci0KLSAgICAgIHJldHVybiByZXQ7Ci0gICAg
fSwKLQotICAgIHByb2dyYW06IGZ1bmN0aW9uKHByb2dyYW0pIHsKLSAgICAgIHZhciBzdGF0ZW1l
bnRzID0gcHJvZ3JhbS5zdGF0ZW1lbnRzOwotCi0gICAgICBmb3IodmFyIGk9MCwgbD1zdGF0ZW1l
bnRzLmxlbmd0aDsgaTxsOyBpKyspIHsKLSAgICAgICAgdGhpcy5hY2NlcHQoc3RhdGVtZW50c1tp
XSk7Ci0gICAgICB9Ci0gICAgICB0aGlzLmlzU2ltcGxlID0gbCA9PT0gMTsKLQotICAgICAgdGhp
cy5kZXB0aHMubGlzdCA9IHRoaXMuZGVwdGhzLmxpc3Quc29ydChmdW5jdGlvbihhLCBiKSB7Ci0g
ICAgICAgIHJldHVybiBhIC0gYjsKLSAgICAgIH0pOwotCi0gICAgICByZXR1cm4gdGhpczsKLSAg
ICB9LAotCi0gICAgY29tcGlsZVByb2dyYW06IGZ1bmN0aW9uKHByb2dyYW0pIHsKLSAgICAgIHZh
ciByZXN1bHQgPSBuZXcgdGhpcy5jb21waWxlcigpLmNvbXBpbGUocHJvZ3JhbSwgdGhpcy5vcHRp
b25zKTsKLSAgICAgIHZhciBndWlkID0gdGhpcy5ndWlkKyssIGRlcHRoOwotCi0gICAgICB0aGlz
LnVzZVBhcnRpYWwgPSB0aGlzLnVzZVBhcnRpYWwgfHwgcmVzdWx0LnVzZVBhcnRpYWw7Ci0KLSAg
ICAgIHRoaXMuY2hpbGRyZW5bZ3VpZF0gPSByZXN1bHQ7Ci0KLSAgICAgIGZvcih2YXIgaT0wLCBs
PXJlc3VsdC5kZXB0aHMubGlzdC5sZW5ndGg7IGk8bDsgaSsrKSB7Ci0gICAgICAgIGRlcHRoID0g
cmVzdWx0LmRlcHRocy5saXN0W2ldOwotCi0gICAgICAgIGlmKGRlcHRoIDwgMikgeyBjb250aW51
ZTsgfQotICAgICAgICBlbHNlIHsgdGhpcy5hZGREZXB0aChkZXB0aCAtIDEpOyB9Ci0gICAgICB9
Ci0KLSAgICAgIHJldHVybiBndWlkOwotICAgIH0sCi0KLSAgICBibG9jazogZnVuY3Rpb24oYmxv
Y2spIHsKLSAgICAgIHZhciBtdXN0YWNoZSA9IGJsb2NrLm11c3RhY2hlLAotICAgICAgICAgIHBy
b2dyYW0gPSBibG9jay5wcm9ncmFtLAotICAgICAgICAgIGludmVyc2UgPSBibG9jay5pbnZlcnNl
OwotCi0gICAgICBpZiAocHJvZ3JhbSkgewotICAgICAgICBwcm9ncmFtID0gdGhpcy5jb21waWxl
UHJvZ3JhbShwcm9ncmFtKTsKLSAgICAgIH0KLQotICAgICAgaWYgKGludmVyc2UpIHsKLSAgICAg
ICAgaW52ZXJzZSA9IHRoaXMuY29tcGlsZVByb2dyYW0oaW52ZXJzZSk7Ci0gICAgICB9Ci0KLSAg
ICAgIHZhciBzZXhwciA9IG11c3RhY2hlLnNleHByOwotICAgICAgdmFyIHR5cGUgPSB0aGlzLmNs
YXNzaWZ5U2V4cHIoc2V4cHIpOwotCi0gICAgICBpZiAodHlwZSA9PT0gImhlbHBlciIpIHsKLSAg
ICAgICAgdGhpcy5oZWxwZXJTZXhwcihzZXhwciwgcHJvZ3JhbSwgaW52ZXJzZSk7Ci0gICAgICB9
IGVsc2UgaWYgKHR5cGUgPT09ICJzaW1wbGUiKSB7Ci0gICAgICAgIHRoaXMuc2ltcGxlU2V4cHIo
c2V4cHIpOwotCi0gICAgICAgIC8vIG5vdyB0aGF0IHRoZSBzaW1wbGUgbXVzdGFjaGUgaXMgcmVz
b2x2ZWQsIHdlIG5lZWQgdG8KLSAgICAgICAgLy8gZXZhbHVhdGUgaXQgYnkgZXhlY3V0aW5nIGBi
bG9ja0hlbHBlck1pc3NpbmdgCi0gICAgICAgIHRoaXMub3Bjb2RlKCdwdXNoUHJvZ3JhbScsIHBy
b2dyYW0pOwotICAgICAgICB0aGlzLm9wY29kZSgncHVzaFByb2dyYW0nLCBpbnZlcnNlKTsKLSAg
ICAgICAgdGhpcy5vcGNvZGUoJ2VtcHR5SGFzaCcpOwotICAgICAgICB0aGlzLm9wY29kZSgnYmxv
Y2tWYWx1ZScpOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgdGhpcy5hbWJpZ3VvdXNTZXhwcihz
ZXhwciwgcHJvZ3JhbSwgaW52ZXJzZSk7Ci0KLSAgICAgICAgLy8gbm93IHRoYXQgdGhlIHNpbXBs
ZSBtdXN0YWNoZSBpcyByZXNvbHZlZCwgd2UgbmVlZCB0bwotICAgICAgICAvLyBldmFsdWF0ZSBp
dCBieSBleGVjdXRpbmcgYGJsb2NrSGVscGVyTWlzc2luZ2AKLSAgICAgICAgdGhpcy5vcGNvZGUo
J3B1c2hQcm9ncmFtJywgcHJvZ3JhbSk7Ci0gICAgICAgIHRoaXMub3Bjb2RlKCdwdXNoUHJvZ3Jh
bScsIGludmVyc2UpOwotICAgICAgICB0aGlzLm9wY29kZSgnZW1wdHlIYXNoJyk7Ci0gICAgICAg
IHRoaXMub3Bjb2RlKCdhbWJpZ3VvdXNCbG9ja1ZhbHVlJyk7Ci0gICAgICB9Ci0KLSAgICAgIHRo
aXMub3Bjb2RlKCdhcHBlbmQnKTsKLSAgICB9LAotCi0gICAgaGFzaDogZnVuY3Rpb24oaGFzaCkg
ewotICAgICAgdmFyIHBhaXJzID0gaGFzaC5wYWlycywgcGFpciwgdmFsOwotCi0gICAgICB0aGlz
Lm9wY29kZSgncHVzaEhhc2gnKTsKLQotICAgICAgZm9yKHZhciBpPTAsIGw9cGFpcnMubGVuZ3Ro
OyBpPGw7IGkrKykgewotICAgICAgICBwYWlyID0gcGFpcnNbaV07Ci0gICAgICAgIHZhbCAgPSBw
YWlyWzFdOwotCi0gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuc3RyaW5nUGFyYW1zKSB7Ci0gICAg
ICAgICAgaWYodmFsLmRlcHRoKSB7Ci0gICAgICAgICAgICB0aGlzLmFkZERlcHRoKHZhbC5kZXB0
aCk7Ci0gICAgICAgICAgfQotICAgICAgICAgIHRoaXMub3Bjb2RlKCdnZXRDb250ZXh0JywgdmFs
LmRlcHRoIHx8IDApOwotICAgICAgICAgIHRoaXMub3Bjb2RlKCdwdXNoU3RyaW5nUGFyYW0nLCB2
YWwuc3RyaW5nTW9kZVZhbHVlLCB2YWwudHlwZSk7Ci0KLSAgICAgICAgICBpZiAodmFsLnR5cGUg
PT09ICdzZXhwcicpIHsKLSAgICAgICAgICAgIC8vIFN1YmV4cHJlc3Npb25zIGdldCBldmFsdWF0
ZWQgYW5kIHBhc3NlZCBpbgotICAgICAgICAgICAgLy8gaW4gc3RyaW5nIHBhcmFtcyBtb2RlLgot
ICAgICAgICAgICAgdGhpcy5zZXhwcih2YWwpOwotICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICB0aGlzLmFjY2VwdCh2YWwpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhp
cy5vcGNvZGUoJ2Fzc2lnblRvSGFzaCcsIHBhaXJbMF0pOwotICAgICAgfQotICAgICAgdGhpcy5v
cGNvZGUoJ3BvcEhhc2gnKTsKLSAgICB9LAotCi0gICAgcGFydGlhbDogZnVuY3Rpb24ocGFydGlh
bCkgewotICAgICAgdmFyIHBhcnRpYWxOYW1lID0gcGFydGlhbC5wYXJ0aWFsTmFtZTsKLSAgICAg
IHRoaXMudXNlUGFydGlhbCA9IHRydWU7Ci0KLSAgICAgIGlmKHBhcnRpYWwuY29udGV4dCkgewot
ICAgICAgICB0aGlzLklEKHBhcnRpYWwuY29udGV4dCk7Ci0gICAgICB9IGVsc2UgewotICAgICAg
ICB0aGlzLm9wY29kZSgncHVzaCcsICdkZXB0aDAnKTsKLSAgICAgIH0KLQotICAgICAgdGhpcy5v
cGNvZGUoJ2ludm9rZVBhcnRpYWwnLCBwYXJ0aWFsTmFtZS5uYW1lKTsKLSAgICAgIHRoaXMub3Bj
b2RlKCdhcHBlbmQnKTsKLSAgICB9LAotCi0gICAgY29udGVudDogZnVuY3Rpb24oY29udGVudCkg
ewotICAgICAgdGhpcy5vcGNvZGUoJ2FwcGVuZENvbnRlbnQnLCBjb250ZW50LnN0cmluZyk7Ci0g
ICAgfSwKLQotICAgIG11c3RhY2hlOiBmdW5jdGlvbihtdXN0YWNoZSkgewotICAgICAgdGhpcy5z
ZXhwcihtdXN0YWNoZS5zZXhwcik7Ci0KLSAgICAgIGlmKG11c3RhY2hlLmVzY2FwZWQgJiYgIXRo
aXMub3B0aW9ucy5ub0VzY2FwZSkgewotICAgICAgICB0aGlzLm9wY29kZSgnYXBwZW5kRXNjYXBl
ZCcpOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgdGhpcy5vcGNvZGUoJ2FwcGVuZCcpOwotICAg
ICAgfQotICAgIH0sCi0KLSAgICBhbWJpZ3VvdXNTZXhwcjogZnVuY3Rpb24oc2V4cHIsIHByb2dy
YW0sIGludmVyc2UpIHsKLSAgICAgIHZhciBpZCA9IHNleHByLmlkLAotICAgICAgICAgIG5hbWUg
PSBpZC5wYXJ0c1swXSwKLSAgICAgICAgICBpc0Jsb2NrID0gcHJvZ3JhbSAhPSBudWxsIHx8IGlu
dmVyc2UgIT0gbnVsbDsKLQotICAgICAgdGhpcy5vcGNvZGUoJ2dldENvbnRleHQnLCBpZC5kZXB0
aCk7Ci0KLSAgICAgIHRoaXMub3Bjb2RlKCdwdXNoUHJvZ3JhbScsIHByb2dyYW0pOwotICAgICAg
dGhpcy5vcGNvZGUoJ3B1c2hQcm9ncmFtJywgaW52ZXJzZSk7Ci0KLSAgICAgIHRoaXMub3Bjb2Rl
KCdpbnZva2VBbWJpZ3VvdXMnLCBuYW1lLCBpc0Jsb2NrKTsKLSAgICB9LAotCi0gICAgc2ltcGxl
U2V4cHI6IGZ1bmN0aW9uKHNleHByKSB7Ci0gICAgICB2YXIgaWQgPSBzZXhwci5pZDsKLQotICAg
ICAgaWYgKGlkLnR5cGUgPT09ICdEQVRBJykgewotICAgICAgICB0aGlzLkRBVEEoaWQpOwotICAg
ICAgfSBlbHNlIGlmIChpZC5wYXJ0cy5sZW5ndGgpIHsKLSAgICAgICAgdGhpcy5JRChpZCk7Ci0g
ICAgICB9IGVsc2UgewotICAgICAgICAvLyBTaW1wbGlmaWVkIElEIGZvciBgdGhpc2AKLSAgICAg
ICAgdGhpcy5hZGREZXB0aChpZC5kZXB0aCk7Ci0gICAgICAgIHRoaXMub3Bjb2RlKCdnZXRDb250
ZXh0JywgaWQuZGVwdGgpOwotICAgICAgICB0aGlzLm9wY29kZSgncHVzaENvbnRleHQnKTsKLSAg
ICAgIH0KLQotICAgICAgdGhpcy5vcGNvZGUoJ3Jlc29sdmVQb3NzaWJsZUxhbWJkYScpOwotICAg
IH0sCi0KLSAgICBoZWxwZXJTZXhwcjogZnVuY3Rpb24oc2V4cHIsIHByb2dyYW0sIGludmVyc2Up
IHsKLSAgICAgIHZhciBwYXJhbXMgPSB0aGlzLnNldHVwRnVsbE11c3RhY2hlUGFyYW1zKHNleHBy
LCBwcm9ncmFtLCBpbnZlcnNlKSwKLSAgICAgICAgICBuYW1lID0gc2V4cHIuaWQucGFydHNbMF07
Ci0KLSAgICAgIGlmICh0aGlzLm9wdGlvbnMua25vd25IZWxwZXJzW25hbWVdKSB7Ci0gICAgICAg
IHRoaXMub3Bjb2RlKCdpbnZva2VLbm93bkhlbHBlcicsIHBhcmFtcy5sZW5ndGgsIG5hbWUpOwot
ICAgICAgfSBlbHNlIGlmICh0aGlzLm9wdGlvbnMua25vd25IZWxwZXJzT25seSkgewotICAgICAg
ICB0aHJvdyBuZXcgRXhjZXB0aW9uKCJZb3Ugc3BlY2lmaWVkIGtub3duSGVscGVyc09ubHksIGJ1
dCB1c2VkIHRoZSB1bmtub3duIGhlbHBlciAiICsgbmFtZSwgc2V4cHIpOwotICAgICAgfSBlbHNl
IHsKLSAgICAgICAgdGhpcy5vcGNvZGUoJ2ludm9rZUhlbHBlcicsIHBhcmFtcy5sZW5ndGgsIG5h
bWUsIHNleHByLmlzUm9vdCk7Ci0gICAgICB9Ci0gICAgfSwKLQotICAgIHNleHByOiBmdW5jdGlv
bihzZXhwcikgewotICAgICAgdmFyIHR5cGUgPSB0aGlzLmNsYXNzaWZ5U2V4cHIoc2V4cHIpOwot
Ci0gICAgICBpZiAodHlwZSA9PT0gInNpbXBsZSIpIHsKLSAgICAgICAgdGhpcy5zaW1wbGVTZXhw
cihzZXhwcik7Ci0gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICJoZWxwZXIiKSB7Ci0gICAgICAg
IHRoaXMuaGVscGVyU2V4cHIoc2V4cHIpOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgdGhpcy5h
bWJpZ3VvdXNTZXhwcihzZXhwcik7Ci0gICAgICB9Ci0gICAgfSwKLQotICAgIElEOiBmdW5jdGlv
bihpZCkgewotICAgICAgdGhpcy5hZGREZXB0aChpZC5kZXB0aCk7Ci0gICAgICB0aGlzLm9wY29k
ZSgnZ2V0Q29udGV4dCcsIGlkLmRlcHRoKTsKLQotICAgICAgdmFyIG5hbWUgPSBpZC5wYXJ0c1sw
XTsKLSAgICAgIGlmICghbmFtZSkgewotICAgICAgICB0aGlzLm9wY29kZSgncHVzaENvbnRleHQn
KTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIHRoaXMub3Bjb2RlKCdsb29rdXBPbkNvbnRleHQn
LCBpZC5wYXJ0c1swXSk7Ci0gICAgICB9Ci0KLSAgICAgIGZvcih2YXIgaT0xLCBsPWlkLnBhcnRz
Lmxlbmd0aDsgaTxsOyBpKyspIHsKLSAgICAgICAgdGhpcy5vcGNvZGUoJ2xvb2t1cCcsIGlkLnBh
cnRzW2ldKTsKLSAgICAgIH0KLSAgICB9LAotCi0gICAgREFUQTogZnVuY3Rpb24oZGF0YSkgewot
ICAgICAgdGhpcy5vcHRpb25zLmRhdGEgPSB0cnVlOwotICAgICAgaWYgKGRhdGEuaWQuaXNTY29w
ZWQgfHwgZGF0YS5pZC5kZXB0aCkgewotICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdTY29w
ZWQgZGF0YSByZWZlcmVuY2VzIGFyZSBub3Qgc3VwcG9ydGVkOiAnICsgZGF0YS5vcmlnaW5hbCwg
ZGF0YSk7Ci0gICAgICB9Ci0KLSAgICAgIHRoaXMub3Bjb2RlKCdsb29rdXBEYXRhJyk7Ci0gICAg
ICB2YXIgcGFydHMgPSBkYXRhLmlkLnBhcnRzOwotICAgICAgZm9yKHZhciBpPTAsIGw9cGFydHMu
bGVuZ3RoOyBpPGw7IGkrKykgewotICAgICAgICB0aGlzLm9wY29kZSgnbG9va3VwJywgcGFydHNb
aV0pOwotICAgICAgfQotICAgIH0sCi0KLSAgICBTVFJJTkc6IGZ1bmN0aW9uKHN0cmluZykgewot
ICAgICAgdGhpcy5vcGNvZGUoJ3B1c2hTdHJpbmcnLCBzdHJpbmcuc3RyaW5nKTsKLSAgICB9LAot
Ci0gICAgSU5URUdFUjogZnVuY3Rpb24oaW50ZWdlcikgewotICAgICAgdGhpcy5vcGNvZGUoJ3B1
c2hMaXRlcmFsJywgaW50ZWdlci5pbnRlZ2VyKTsKLSAgICB9LAotCi0gICAgQk9PTEVBTjogZnVu
Y3Rpb24oYm9vbCkgewotICAgICAgdGhpcy5vcGNvZGUoJ3B1c2hMaXRlcmFsJywgYm9vbC5ib29s
KTsKLSAgICB9LAotCi0gICAgY29tbWVudDogZnVuY3Rpb24oKSB7fSwKLQotICAgIC8vIEhFTFBF
UlMKLSAgICBvcGNvZGU6IGZ1bmN0aW9uKG5hbWUpIHsKLSAgICAgIHRoaXMub3Bjb2Rlcy5wdXNo
KHsgb3Bjb2RlOiBuYW1lLCBhcmdzOiBbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSkgfSk7Ci0g
ICAgfSwKLQotICAgIGRlY2xhcmU6IGZ1bmN0aW9uKG5hbWUsIHZhbHVlKSB7Ci0gICAgICB0aGlz
Lm9wY29kZXMucHVzaCh7IG9wY29kZTogJ0RFQ0xBUkUnLCBuYW1lOiBuYW1lLCB2YWx1ZTogdmFs
dWUgfSk7Ci0gICAgfSwKLQotICAgIGFkZERlcHRoOiBmdW5jdGlvbihkZXB0aCkgewotICAgICAg
aWYoZGVwdGggPT09IDApIHsgcmV0dXJuOyB9Ci0KLSAgICAgIGlmKCF0aGlzLmRlcHRoc1tkZXB0
aF0pIHsKLSAgICAgICAgdGhpcy5kZXB0aHNbZGVwdGhdID0gdHJ1ZTsKLSAgICAgICAgdGhpcy5k
ZXB0aHMubGlzdC5wdXNoKGRlcHRoKTsKLSAgICAgIH0KLSAgICB9LAotCi0gICAgY2xhc3NpZnlT
ZXhwcjogZnVuY3Rpb24oc2V4cHIpIHsKLSAgICAgIHZhciBpc0hlbHBlciAgID0gc2V4cHIuaXNI
ZWxwZXI7Ci0gICAgICB2YXIgaXNFbGlnaWJsZSA9IHNleHByLmVsaWdpYmxlSGVscGVyOwotICAg
ICAgdmFyIG9wdGlvbnMgICAgPSB0aGlzLm9wdGlvbnM7Ci0KLSAgICAgIC8vIGlmIGFtYmlndW91
cywgd2UgY2FuIHBvc3NpYmx5IHJlc29sdmUgdGhlIGFtYmlndWl0eSBub3cKLSAgICAgIGlmIChp
c0VsaWdpYmxlICYmICFpc0hlbHBlcikgewotICAgICAgICB2YXIgbmFtZSA9IHNleHByLmlkLnBh
cnRzWzBdOwotCi0gICAgICAgIGlmIChvcHRpb25zLmtub3duSGVscGVyc1tuYW1lXSkgewotICAg
ICAgICAgIGlzSGVscGVyID0gdHJ1ZTsKLSAgICAgICAgfSBlbHNlIGlmIChvcHRpb25zLmtub3du
SGVscGVyc09ubHkpIHsKLSAgICAgICAgICBpc0VsaWdpYmxlID0gZmFsc2U7Ci0gICAgICAgIH0K
LSAgICAgIH0KLQotICAgICAgaWYgKGlzSGVscGVyKSB7IHJldHVybiAiaGVscGVyIjsgfQotICAg
ICAgZWxzZSBpZiAoaXNFbGlnaWJsZSkgeyByZXR1cm4gImFtYmlndW91cyI7IH0KLSAgICAgIGVs
c2UgeyByZXR1cm4gInNpbXBsZSI7IH0KLSAgICB9LAotCi0gICAgcHVzaFBhcmFtczogZnVuY3Rp
b24ocGFyYW1zKSB7Ci0gICAgICB2YXIgaSA9IHBhcmFtcy5sZW5ndGgsIHBhcmFtOwotCi0gICAg
ICB3aGlsZShpLS0pIHsKLSAgICAgICAgcGFyYW0gPSBwYXJhbXNbaV07Ci0KLSAgICAgICAgaWYo
dGhpcy5vcHRpb25zLnN0cmluZ1BhcmFtcykgewotICAgICAgICAgIGlmKHBhcmFtLmRlcHRoKSB7
Ci0gICAgICAgICAgICB0aGlzLmFkZERlcHRoKHBhcmFtLmRlcHRoKTsKLSAgICAgICAgICB9Ci0K
LSAgICAgICAgICB0aGlzLm9wY29kZSgnZ2V0Q29udGV4dCcsIHBhcmFtLmRlcHRoIHx8IDApOwot
ICAgICAgICAgIHRoaXMub3Bjb2RlKCdwdXNoU3RyaW5nUGFyYW0nLCBwYXJhbS5zdHJpbmdNb2Rl
VmFsdWUsIHBhcmFtLnR5cGUpOwotCi0gICAgICAgICAgaWYgKHBhcmFtLnR5cGUgPT09ICdzZXhw
cicpIHsKLSAgICAgICAgICAgIC8vIFN1YmV4cHJlc3Npb25zIGdldCBldmFsdWF0ZWQgYW5kIHBh
c3NlZCBpbgotICAgICAgICAgICAgLy8gaW4gc3RyaW5nIHBhcmFtcyBtb2RlLgotICAgICAgICAg
ICAgdGhpcy5zZXhwcihwYXJhbSk7Ci0gICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgIHRoaXNbcGFyYW0udHlwZV0ocGFyYW0pOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAg
fSwKLQotICAgIHNldHVwRnVsbE11c3RhY2hlUGFyYW1zOiBmdW5jdGlvbihzZXhwciwgcHJvZ3Jh
bSwgaW52ZXJzZSkgewotICAgICAgdmFyIHBhcmFtcyA9IHNleHByLnBhcmFtczsKLSAgICAgIHRo
aXMucHVzaFBhcmFtcyhwYXJhbXMpOwotCi0gICAgICB0aGlzLm9wY29kZSgncHVzaFByb2dyYW0n
LCBwcm9ncmFtKTsKLSAgICAgIHRoaXMub3Bjb2RlKCdwdXNoUHJvZ3JhbScsIGludmVyc2UpOwot
Ci0gICAgICBpZiAoc2V4cHIuaGFzaCkgewotICAgICAgICB0aGlzLmhhc2goc2V4cHIuaGFzaCk7
Ci0gICAgICB9IGVsc2UgewotICAgICAgICB0aGlzLm9wY29kZSgnZW1wdHlIYXNoJyk7Ci0gICAg
ICB9Ci0KLSAgICAgIHJldHVybiBwYXJhbXM7Ci0gICAgfQotICB9OwotCi0gIGZ1bmN0aW9uIHBy
ZWNvbXBpbGUoaW5wdXQsIG9wdGlvbnMsIGVudikgewotICAgIGlmIChpbnB1dCA9PSBudWxsIHx8
ICh0eXBlb2YgaW5wdXQgIT09ICdzdHJpbmcnICYmIGlucHV0LmNvbnN0cnVjdG9yICE9PSBlbnYu
QVNULlByb2dyYW1Ob2RlKSkgewotICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigiWW91IG11c3Qg
cGFzcyBhIHN0cmluZyBvciBIYW5kbGViYXJzIEFTVCB0byBIYW5kbGViYXJzLnByZWNvbXBpbGUu
IFlvdSBwYXNzZWQgIiArIGlucHV0KTsKLSAgICB9Ci0KLSAgICBvcHRpb25zID0gb3B0aW9ucyB8
fCB7fTsKLSAgICBpZiAoISgnZGF0YScgaW4gb3B0aW9ucykpIHsKLSAgICAgIG9wdGlvbnMuZGF0
YSA9IHRydWU7Ci0gICAgfQotCi0gICAgdmFyIGFzdCA9IGVudi5wYXJzZShpbnB1dCk7Ci0gICAg
dmFyIGVudmlyb25tZW50ID0gbmV3IGVudi5Db21waWxlcigpLmNvbXBpbGUoYXN0LCBvcHRpb25z
KTsKLSAgICByZXR1cm4gbmV3IGVudi5KYXZhU2NyaXB0Q29tcGlsZXIoKS5jb21waWxlKGVudmly
b25tZW50LCBvcHRpb25zKTsKLSAgfQotCi0gIF9fZXhwb3J0c19fLnByZWNvbXBpbGUgPSBwcmVj
b21waWxlO2Z1bmN0aW9uIGNvbXBpbGUoaW5wdXQsIG9wdGlvbnMsIGVudikgewotICAgIGlmIChp
bnB1dCA9PSBudWxsIHx8ICh0eXBlb2YgaW5wdXQgIT09ICdzdHJpbmcnICYmIGlucHV0LmNvbnN0
cnVjdG9yICE9PSBlbnYuQVNULlByb2dyYW1Ob2RlKSkgewotICAgICAgdGhyb3cgbmV3IEV4Y2Vw
dGlvbigiWW91IG11c3QgcGFzcyBhIHN0cmluZyBvciBIYW5kbGViYXJzIEFTVCB0byBIYW5kbGVi
YXJzLmNvbXBpbGUuIFlvdSBwYXNzZWQgIiArIGlucHV0KTsKLSAgICB9Ci0KLSAgICBvcHRpb25z
ID0gb3B0aW9ucyB8fCB7fTsKLQotICAgIGlmICghKCdkYXRhJyBpbiBvcHRpb25zKSkgewotICAg
ICAgb3B0aW9ucy5kYXRhID0gdHJ1ZTsKLSAgICB9Ci0KLSAgICB2YXIgY29tcGlsZWQ7Ci0KLSAg
ICBmdW5jdGlvbiBjb21waWxlSW5wdXQoKSB7Ci0gICAgICB2YXIgYXN0ID0gZW52LnBhcnNlKGlu
cHV0KTsKLSAgICAgIHZhciBlbnZpcm9ubWVudCA9IG5ldyBlbnYuQ29tcGlsZXIoKS5jb21waWxl
KGFzdCwgb3B0aW9ucyk7Ci0gICAgICB2YXIgdGVtcGxhdGVTcGVjID0gbmV3IGVudi5KYXZhU2Ny
aXB0Q29tcGlsZXIoKS5jb21waWxlKGVudmlyb25tZW50LCBvcHRpb25zLCB1bmRlZmluZWQsIHRy
dWUpOwotICAgICAgcmV0dXJuIGVudi50ZW1wbGF0ZSh0ZW1wbGF0ZVNwZWMpOwotICAgIH0KLQot
ICAgIC8vIFRlbXBsYXRlIGlzIG9ubHkgY29tcGlsZWQgb24gZmlyc3QgdXNlIGFuZCBjYWNoZWQg
YWZ0ZXIgdGhhdCBwb2ludC4KLSAgICByZXR1cm4gZnVuY3Rpb24oY29udGV4dCwgb3B0aW9ucykg
ewotICAgICAgaWYgKCFjb21waWxlZCkgewotICAgICAgICBjb21waWxlZCA9IGNvbXBpbGVJbnB1
dCgpOwotICAgICAgfQotICAgICAgcmV0dXJuIGNvbXBpbGVkLmNhbGwodGhpcywgY29udGV4dCwg
b3B0aW9ucyk7Ci0gICAgfTsKLSAgfQotCi0gIF9fZXhwb3J0c19fLmNvbXBpbGUgPSBjb21waWxl
OwotICByZXR1cm4gX19leHBvcnRzX187Ci19KShfX21vZHVsZTVfXyk7Ci0KLS8vIGhhbmRsZWJh
cnMvY29tcGlsZXIvamF2YXNjcmlwdC1jb21waWxlci5qcwotdmFyIF9fbW9kdWxlMTFfXyA9IChm
dW5jdGlvbihfX2RlcGVuZGVuY3kxX18sIF9fZGVwZW5kZW5jeTJfXykgewotICAidXNlIHN0cmlj
dCI7Ci0gIHZhciBfX2V4cG9ydHNfXzsKLSAgdmFyIENPTVBJTEVSX1JFVklTSU9OID0gX19kZXBl
bmRlbmN5MV9fLkNPTVBJTEVSX1JFVklTSU9OOwotICB2YXIgUkVWSVNJT05fQ0hBTkdFUyA9IF9f
ZGVwZW5kZW5jeTFfXy5SRVZJU0lPTl9DSEFOR0VTOwotICB2YXIgbG9nID0gX19kZXBlbmRlbmN5
MV9fLmxvZzsKLSAgdmFyIEV4Y2VwdGlvbiA9IF9fZGVwZW5kZW5jeTJfXzsKLQotICBmdW5jdGlv
biBMaXRlcmFsKHZhbHVlKSB7Ci0gICAgdGhpcy52YWx1ZSA9IHZhbHVlOwotICB9Ci0KLSAgZnVu
Y3Rpb24gSmF2YVNjcmlwdENvbXBpbGVyKCkge30KLQotICBKYXZhU2NyaXB0Q29tcGlsZXIucHJv
dG90eXBlID0gewotICAgIC8vIFBVQkxJQyBBUEk6IFlvdSBjYW4gb3ZlcnJpZGUgdGhlc2UgbWV0
aG9kcyBpbiBhIHN1YmNsYXNzIHRvIHByb3ZpZGUKLSAgICAvLyBhbHRlcm5hdGl2ZSBjb21waWxl
ZCBmb3JtcyBmb3IgbmFtZSBsb29rdXAgYW5kIGJ1ZmZlcmluZyBzZW1hbnRpY3MKLSAgICBuYW1l
TG9va3VwOiBmdW5jdGlvbihwYXJlbnQsIG5hbWUgLyogLCB0eXBlKi8pIHsKLSAgICAgIHZhciB3
cmFwLAotICAgICAgICAgIHJldDsKLSAgICAgIGlmIChwYXJlbnQuaW5kZXhPZignZGVwdGgnKSA9
PT0gMCkgewotICAgICAgICB3cmFwID0gdHJ1ZTsKLSAgICAgIH0KLQotICAgICAgaWYgKC9eWzAt
OV0rJC8udGVzdChuYW1lKSkgewotICAgICAgICByZXQgPSBwYXJlbnQgKyAiWyIgKyBuYW1lICsg
Il0iOwotICAgICAgfSBlbHNlIGlmIChKYXZhU2NyaXB0Q29tcGlsZXIuaXNWYWxpZEphdmFTY3Jp
cHRWYXJpYWJsZU5hbWUobmFtZSkpIHsKLSAgICAgICAgcmV0ID0gcGFyZW50ICsgIi4iICsgbmFt
ZTsKLSAgICAgIH0KLSAgICAgIGVsc2UgewotICAgICAgICByZXQgPSBwYXJlbnQgKyAiWyciICsg
bmFtZSArICInXSI7Ci0gICAgICB9Ci0KLSAgICAgIGlmICh3cmFwKSB7Ci0gICAgICAgIHJldHVy
biAnKCcgKyBwYXJlbnQgKyAnICYmICcgKyByZXQgKyAnKSc7Ci0gICAgICB9IGVsc2UgewotICAg
ICAgICByZXR1cm4gcmV0OwotICAgICAgfQotICAgIH0sCi0KLSAgICBjb21waWxlckluZm86IGZ1
bmN0aW9uKCkgewotICAgICAgdmFyIHJldmlzaW9uID0gQ09NUElMRVJfUkVWSVNJT04sCi0gICAg
ICAgICAgdmVyc2lvbnMgPSBSRVZJU0lPTl9DSEFOR0VTW3JldmlzaW9uXTsKLSAgICAgIHJldHVy
biAidGhpcy5jb21waWxlckluZm8gPSBbIityZXZpc2lvbisiLCciK3ZlcnNpb25zKyInXTtcbiI7
Ci0gICAgfSwKLQotICAgIGFwcGVuZFRvQnVmZmVyOiBmdW5jdGlvbihzdHJpbmcpIHsKLSAgICAg
IGlmICh0aGlzLmVudmlyb25tZW50LmlzU2ltcGxlKSB7Ci0gICAgICAgIHJldHVybiAicmV0dXJu
ICIgKyBzdHJpbmcgKyAiOyI7Ci0gICAgICB9IGVsc2UgewotICAgICAgICByZXR1cm4gewotICAg
ICAgICAgIGFwcGVuZFRvQnVmZmVyOiB0cnVlLAotICAgICAgICAgIGNvbnRlbnQ6IHN0cmluZywK
LSAgICAgICAgICB0b1N0cmluZzogZnVuY3Rpb24oKSB7IHJldHVybiAiYnVmZmVyICs9ICIgKyBz
dHJpbmcgKyAiOyI7IH0KLSAgICAgICAgfTsKLSAgICAgIH0KLSAgICB9LAotCi0gICAgaW5pdGlh
bGl6ZUJ1ZmZlcjogZnVuY3Rpb24oKSB7Ci0gICAgICByZXR1cm4gdGhpcy5xdW90ZWRTdHJpbmco
IiIpOwotICAgIH0sCi0KLSAgICBuYW1lc3BhY2U6ICJIYW5kbGViYXJzIiwKLSAgICAvLyBFTkQg
UFVCTElDIEFQSQotCi0gICAgY29tcGlsZTogZnVuY3Rpb24oZW52aXJvbm1lbnQsIG9wdGlvbnMs
IGNvbnRleHQsIGFzT2JqZWN0KSB7Ci0gICAgICB0aGlzLmVudmlyb25tZW50ID0gZW52aXJvbm1l
bnQ7Ci0gICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OwotCi0gICAgICBsb2coJ2Rl
YnVnJywgdGhpcy5lbnZpcm9ubWVudC5kaXNhc3NlbWJsZSgpICsgIlxuXG4iKTsKLQotICAgICAg
dGhpcy5uYW1lID0gdGhpcy5lbnZpcm9ubWVudC5uYW1lOwotICAgICAgdGhpcy5pc0NoaWxkID0g
ISFjb250ZXh0OwotICAgICAgdGhpcy5jb250ZXh0ID0gY29udGV4dCB8fCB7Ci0gICAgICAgIHBy
b2dyYW1zOiBbXSwKLSAgICAgICAgZW52aXJvbm1lbnRzOiBbXSwKLSAgICAgICAgYWxpYXNlczog
eyB9Ci0gICAgICB9OwotCi0gICAgICB0aGlzLnByZWFtYmxlKCk7Ci0KLSAgICAgIHRoaXMuc3Rh
Y2tTbG90ID0gMDsKLSAgICAgIHRoaXMuc3RhY2tWYXJzID0gW107Ci0gICAgICB0aGlzLnJlZ2lz
dGVycyA9IHsgbGlzdDogW10gfTsKLSAgICAgIHRoaXMuaGFzaGVzID0gW107Ci0gICAgICB0aGlz
LmNvbXBpbGVTdGFjayA9IFtdOwotICAgICAgdGhpcy5pbmxpbmVTdGFjayA9IFtdOwotCi0gICAg
ICB0aGlzLmNvbXBpbGVDaGlsZHJlbihlbnZpcm9ubWVudCwgb3B0aW9ucyk7Ci0KLSAgICAgIHZh
ciBvcGNvZGVzID0gZW52aXJvbm1lbnQub3Bjb2Rlcywgb3Bjb2RlOwotCi0gICAgICB0aGlzLmkg
PSAwOwotCi0gICAgICBmb3IodmFyIGw9b3Bjb2Rlcy5sZW5ndGg7IHRoaXMuaTxsOyB0aGlzLmkr
KykgewotICAgICAgICBvcGNvZGUgPSBvcGNvZGVzW3RoaXMuaV07Ci0KLSAgICAgICAgaWYob3Bj
b2RlLm9wY29kZSA9PT0gJ0RFQ0xBUkUnKSB7Ci0gICAgICAgICAgdGhpc1tvcGNvZGUubmFtZV0g
PSBvcGNvZGUudmFsdWU7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgdGhpc1tvcGNvZGUu
b3Bjb2RlXS5hcHBseSh0aGlzLCBvcGNvZGUuYXJncyk7Ci0gICAgICAgIH0KLQotICAgICAgICAv
LyBSZXNldCB0aGUgc3RyaXBOZXh0IGZsYWcgaWYgaXQgd2FzIG5vdCBzZXQgYnkgdGhpcyBvcGVy
YXRpb24uCi0gICAgICAgIGlmIChvcGNvZGUub3Bjb2RlICE9PSB0aGlzLnN0cmlwTmV4dCkgewot
ICAgICAgICAgIHRoaXMuc3RyaXBOZXh0ID0gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgIH0KLQot
ICAgICAgLy8gRmx1c2ggYW55IHRyYWlsaW5nIGNvbnRlbnQgdGhhdCBtaWdodCBiZSBwZW5kaW5n
LgotICAgICAgdGhpcy5wdXNoU291cmNlKCcnKTsKLQotICAgICAgaWYgKHRoaXMuc3RhY2tTbG90
IHx8IHRoaXMuaW5saW5lU3RhY2subGVuZ3RoIHx8IHRoaXMuY29tcGlsZVN0YWNrLmxlbmd0aCkg
ewotICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdDb21waWxlIGNvbXBsZXRlZCB3aXRoIGNv
bnRlbnQgbGVmdCBvbiBzdGFjaycpOwotICAgICAgfQotCi0gICAgICByZXR1cm4gdGhpcy5jcmVh
dGVGdW5jdGlvbkNvbnRleHQoYXNPYmplY3QpOwotICAgIH0sCi0KLSAgICBwcmVhbWJsZTogZnVu
Y3Rpb24oKSB7Ci0gICAgICB2YXIgb3V0ID0gW107Ci0KLSAgICAgIGlmICghdGhpcy5pc0NoaWxk
KSB7Ci0gICAgICAgIHZhciBuYW1lc3BhY2UgPSB0aGlzLm5hbWVzcGFjZTsKLQotICAgICAgICB2
YXIgY29waWVzID0gImhlbHBlcnMgPSB0aGlzLm1lcmdlKGhlbHBlcnMsICIgKyBuYW1lc3BhY2Ug
KyAiLmhlbHBlcnMpOyI7Ci0gICAgICAgIGlmICh0aGlzLmVudmlyb25tZW50LnVzZVBhcnRpYWwp
IHsgY29waWVzID0gY29waWVzICsgIiBwYXJ0aWFscyA9IHRoaXMubWVyZ2UocGFydGlhbHMsICIg
KyBuYW1lc3BhY2UgKyAiLnBhcnRpYWxzKTsiOyB9Ci0gICAgICAgIGlmICh0aGlzLm9wdGlvbnMu
ZGF0YSkgeyBjb3BpZXMgPSBjb3BpZXMgKyAiIGRhdGEgPSBkYXRhIHx8IHt9OyI7IH0KLSAgICAg
ICAgb3V0LnB1c2goY29waWVzKTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIG91dC5wdXNoKCcn
KTsKLSAgICAgIH0KLQotICAgICAgaWYgKCF0aGlzLmVudmlyb25tZW50LmlzU2ltcGxlKSB7Ci0g
ICAgICAgIG91dC5wdXNoKCIsIGJ1ZmZlciA9ICIgKyB0aGlzLmluaXRpYWxpemVCdWZmZXIoKSk7
Ci0gICAgICB9IGVsc2UgewotICAgICAgICBvdXQucHVzaCgiIik7Ci0gICAgICB9Ci0KLSAgICAg
IC8vIHRyYWNrIHRoZSBsYXN0IGNvbnRleHQgcHVzaGVkIGludG8gcGxhY2UgdG8gYWxsb3cgc2tp
cHBpbmcgdGhlCi0gICAgICAvLyBnZXRDb250ZXh0IG9wY29kZSB3aGVuIGl0IHdvdWxkIGJlIGEg
bm9vcAotICAgICAgdGhpcy5sYXN0Q29udGV4dCA9IDA7Ci0gICAgICB0aGlzLnNvdXJjZSA9IG91
dDsKLSAgICB9LAotCi0gICAgY3JlYXRlRnVuY3Rpb25Db250ZXh0OiBmdW5jdGlvbihhc09iamVj
dCkgewotICAgICAgdmFyIGxvY2FscyA9IHRoaXMuc3RhY2tWYXJzLmNvbmNhdCh0aGlzLnJlZ2lz
dGVycy5saXN0KTsKLQotICAgICAgaWYobG9jYWxzLmxlbmd0aCA+IDApIHsKLSAgICAgICAgdGhp
cy5zb3VyY2VbMV0gPSB0aGlzLnNvdXJjZVsxXSArICIsICIgKyBsb2NhbHMuam9pbigiLCAiKTsK
LSAgICAgIH0KLQotICAgICAgLy8gR2VuZXJhdGUgbWluaW1pemVyIGFsaWFzIG1hcHBpbmdzCi0g
ICAgICBpZiAoIXRoaXMuaXNDaGlsZCkgewotICAgICAgICBmb3IgKHZhciBhbGlhcyBpbiB0aGlz
LmNvbnRleHQuYWxpYXNlcykgewotICAgICAgICAgIGlmICh0aGlzLmNvbnRleHQuYWxpYXNlcy5o
YXNPd25Qcm9wZXJ0eShhbGlhcykpIHsKLSAgICAgICAgICAgIHRoaXMuc291cmNlWzFdID0gdGhp
cy5zb3VyY2VbMV0gKyAnLCAnICsgYWxpYXMgKyAnPScgKyB0aGlzLmNvbnRleHQuYWxpYXNlc1th
bGlhc107Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0KLSAgICAgIGlmICh0aGlz
LnNvdXJjZVsxXSkgewotICAgICAgICB0aGlzLnNvdXJjZVsxXSA9ICJ2YXIgIiArIHRoaXMuc291
cmNlWzFdLnN1YnN0cmluZygyKSArICI7IjsKLSAgICAgIH0KLQotICAgICAgLy8gTWVyZ2UgY2hp
bGRyZW4KLSAgICAgIGlmICghdGhpcy5pc0NoaWxkKSB7Ci0gICAgICAgIHRoaXMuc291cmNlWzFd
ICs9ICdcbicgKyB0aGlzLmNvbnRleHQucHJvZ3JhbXMuam9pbignXG4nKSArICdcbic7Ci0gICAg
ICB9Ci0KLSAgICAgIGlmICghdGhpcy5lbnZpcm9ubWVudC5pc1NpbXBsZSkgewotICAgICAgICB0
aGlzLnB1c2hTb3VyY2UoInJldHVybiBidWZmZXI7Iik7Ci0gICAgICB9Ci0KLSAgICAgIHZhciBw
YXJhbXMgPSB0aGlzLmlzQ2hpbGQgPyBbImRlcHRoMCIsICJkYXRhIl0gOiBbIkhhbmRsZWJhcnMi
LCAiZGVwdGgwIiwgImhlbHBlcnMiLCAicGFydGlhbHMiLCAiZGF0YSJdOwotCi0gICAgICBmb3Io
dmFyIGk9MCwgbD10aGlzLmVudmlyb25tZW50LmRlcHRocy5saXN0Lmxlbmd0aDsgaTxsOyBpKysp
IHsKLSAgICAgICAgcGFyYW1zLnB1c2goImRlcHRoIiArIHRoaXMuZW52aXJvbm1lbnQuZGVwdGhz
Lmxpc3RbaV0pOwotICAgICAgfQotCi0gICAgICAvLyBQZXJmb3JtIGEgc2Vjb25kIHBhc3Mgb3Zl
ciB0aGUgb3V0cHV0IHRvIG1lcmdlIGNvbnRlbnQgd2hlbiBwb3NzaWJsZQotICAgICAgdmFyIHNv
dXJjZSA9IHRoaXMubWVyZ2VTb3VyY2UoKTsKLQotICAgICAgaWYgKCF0aGlzLmlzQ2hpbGQpIHsK
LSAgICAgICAgc291cmNlID0gdGhpcy5jb21waWxlckluZm8oKStzb3VyY2U7Ci0gICAgICB9Ci0K
LSAgICAgIGlmIChhc09iamVjdCkgewotICAgICAgICBwYXJhbXMucHVzaChzb3VyY2UpOwotCi0g
ICAgICAgIHJldHVybiBGdW5jdGlvbi5hcHBseSh0aGlzLCBwYXJhbXMpOwotICAgICAgfSBlbHNl
IHsKLSAgICAgICAgdmFyIGZ1bmN0aW9uU291cmNlID0gJ2Z1bmN0aW9uICcgKyAodGhpcy5uYW1l
IHx8ICcnKSArICcoJyArIHBhcmFtcy5qb2luKCcsJykgKyAnKSB7XG4gICcgKyBzb3VyY2UgKyAn
fSc7Ci0gICAgICAgIGxvZygnZGVidWcnLCBmdW5jdGlvblNvdXJjZSArICJcblxuIik7Ci0gICAg
ICAgIHJldHVybiBmdW5jdGlvblNvdXJjZTsKLSAgICAgIH0KLSAgICB9LAotICAgIG1lcmdlU291
cmNlOiBmdW5jdGlvbigpIHsKLSAgICAgIC8vIFdBUk46IFdlIGFyZSBub3QgaGFuZGxpbmcgdGhl
IGNhc2Ugd2hlcmUgYnVmZmVyIGlzIHN0aWxsIHBvcHVsYXRlZCBhcyB0aGUgc291cmNlIHNob3Vs
ZAotICAgICAgLy8gbm90IGhhdmUgYnVmZmVyIGFwcGVuZCBvcGVyYXRpb25zIGFzIHRoZWlyIGZp
bmFsIGFjdGlvbi4KLSAgICAgIHZhciBzb3VyY2UgPSAnJywKLSAgICAgICAgICBidWZmZXI7Ci0g
ICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gdGhpcy5zb3VyY2UubGVuZ3RoOyBpIDwgbGVuOyBp
KyspIHsKLSAgICAgICAgdmFyIGxpbmUgPSB0aGlzLnNvdXJjZVtpXTsKLSAgICAgICAgaWYgKGxp
bmUuYXBwZW5kVG9CdWZmZXIpIHsKLSAgICAgICAgICBpZiAoYnVmZmVyKSB7Ci0gICAgICAgICAg
ICBidWZmZXIgPSBidWZmZXIgKyAnXG4gICAgKyAnICsgbGluZS5jb250ZW50OwotICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICBidWZmZXIgPSBsaW5lLmNvbnRlbnQ7Ci0gICAgICAgICAg
fQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIGlmIChidWZmZXIpIHsKLSAgICAgICAgICAg
IHNvdXJjZSArPSAnYnVmZmVyICs9ICcgKyBidWZmZXIgKyAnO1xuICAnOwotICAgICAgICAgICAg
YnVmZmVyID0gdW5kZWZpbmVkOwotICAgICAgICAgIH0KLSAgICAgICAgICBzb3VyY2UgKz0gbGlu
ZSArICdcbiAgJzsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgcmV0dXJuIHNvdXJjZTsKLSAg
ICB9LAotCi0gICAgLy8gW2Jsb2NrVmFsdWVdCi0gICAgLy8KLSAgICAvLyBPbiBzdGFjaywgYmVm
b3JlOiBoYXNoLCBpbnZlcnNlLCBwcm9ncmFtLCB2YWx1ZQotICAgIC8vIE9uIHN0YWNrLCBhZnRl
cjogcmV0dXJuIHZhbHVlIG9mIGJsb2NrSGVscGVyTWlzc2luZwotICAgIC8vCi0gICAgLy8gVGhl
IHB1cnBvc2Ugb2YgdGhpcyBvcGNvZGUgaXMgdG8gdGFrZSBhIGJsb2NrIG9mIHRoZSBmb3JtCi0g
ICAgLy8gYHt7I2Zvb319Li4ue3svZm9vfX1gLCByZXNvbHZlIHRoZSB2YWx1ZSBvZiBgZm9vYCwg
YW5kCi0gICAgLy8gcmVwbGFjZSBpdCBvbiB0aGUgc3RhY2sgd2l0aCB0aGUgcmVzdWx0IG9mIHBy
b3Blcmx5Ci0gICAgLy8gaW52b2tpbmcgYmxvY2tIZWxwZXJNaXNzaW5nLgotICAgIGJsb2NrVmFs
dWU6IGZ1bmN0aW9uKCkgewotICAgICAgdGhpcy5jb250ZXh0LmFsaWFzZXMuYmxvY2tIZWxwZXJN
aXNzaW5nID0gJ2hlbHBlcnMuYmxvY2tIZWxwZXJNaXNzaW5nJzsKLQotICAgICAgdmFyIHBhcmFt
cyA9IFsiZGVwdGgwIl07Ci0gICAgICB0aGlzLnNldHVwUGFyYW1zKDAsIHBhcmFtcyk7Ci0KLSAg
ICAgIHRoaXMucmVwbGFjZVN0YWNrKGZ1bmN0aW9uKGN1cnJlbnQpIHsKLSAgICAgICAgcGFyYW1z
LnNwbGljZSgxLCAwLCBjdXJyZW50KTsKLSAgICAgICAgcmV0dXJuICJibG9ja0hlbHBlck1pc3Np
bmcuY2FsbCgiICsgcGFyYW1zLmpvaW4oIiwgIikgKyAiKSI7Ci0gICAgICB9KTsKLSAgICB9LAot
Ci0gICAgLy8gW2FtYmlndW91c0Jsb2NrVmFsdWVdCi0gICAgLy8KLSAgICAvLyBPbiBzdGFjaywg
YmVmb3JlOiBoYXNoLCBpbnZlcnNlLCBwcm9ncmFtLCB2YWx1ZQotICAgIC8vIENvbXBpbGVyIHZh
bHVlLCBiZWZvcmU6IGxhc3RIZWxwZXI9dmFsdWUgb2YgbGFzdCBmb3VuZCBoZWxwZXIsIGlmIGFu
eQotICAgIC8vIE9uIHN0YWNrLCBhZnRlciwgaWYgbm8gbGFzdEhlbHBlcjogc2FtZSBhcyBbYmxv
Y2tWYWx1ZV0KLSAgICAvLyBPbiBzdGFjaywgYWZ0ZXIsIGlmIGxhc3RIZWxwZXI6IHZhbHVlCi0g
ICAgYW1iaWd1b3VzQmxvY2tWYWx1ZTogZnVuY3Rpb24oKSB7Ci0gICAgICB0aGlzLmNvbnRleHQu
YWxpYXNlcy5ibG9ja0hlbHBlck1pc3NpbmcgPSAnaGVscGVycy5ibG9ja0hlbHBlck1pc3Npbmcn
OwotCi0gICAgICB2YXIgcGFyYW1zID0gWyJkZXB0aDAiXTsKLSAgICAgIHRoaXMuc2V0dXBQYXJh
bXMoMCwgcGFyYW1zKTsKLQotICAgICAgdmFyIGN1cnJlbnQgPSB0aGlzLnRvcFN0YWNrKCk7Ci0g
ICAgICBwYXJhbXMuc3BsaWNlKDEsIDAsIGN1cnJlbnQpOwotCi0gICAgICB0aGlzLnB1c2hTb3Vy
Y2UoImlmICghIiArIHRoaXMubGFzdEhlbHBlciArICIpIHsgIiArIGN1cnJlbnQgKyAiID0gYmxv
Y2tIZWxwZXJNaXNzaW5nLmNhbGwoIiArIHBhcmFtcy5qb2luKCIsICIpICsgIik7IH0iKTsKLSAg
ICB9LAotCi0gICAgLy8gW2FwcGVuZENvbnRlbnRdCi0gICAgLy8KLSAgICAvLyBPbiBzdGFjaywg
YmVmb3JlOiAuLi4KLSAgICAvLyBPbiBzdGFjaywgYWZ0ZXI6IC4uLgotICAgIC8vCi0gICAgLy8g
QXBwZW5kcyB0aGUgc3RyaW5nIHZhbHVlIG9mIGBjb250ZW50YCB0byB0aGUgY3VycmVudCBidWZm
ZXIKLSAgICBhcHBlbmRDb250ZW50OiBmdW5jdGlvbihjb250ZW50KSB7Ci0gICAgICBpZiAodGhp
cy5wZW5kaW5nQ29udGVudCkgewotICAgICAgICBjb250ZW50ID0gdGhpcy5wZW5kaW5nQ29udGVu
dCArIGNvbnRlbnQ7Ci0gICAgICB9Ci0gICAgICBpZiAodGhpcy5zdHJpcE5leHQpIHsKLSAgICAg
ICAgY29udGVudCA9IGNvbnRlbnQucmVwbGFjZSgvXlxzKy8sICcnKTsKLSAgICAgIH0KLQotICAg
ICAgdGhpcy5wZW5kaW5nQ29udGVudCA9IGNvbnRlbnQ7Ci0gICAgfSwKLQotICAgIC8vIFtzdHJp
cF0KLSAgICAvLwotICAgIC8vIE9uIHN0YWNrLCBiZWZvcmU6IC4uLgotICAgIC8vIE9uIHN0YWNr
LCBhZnRlcjogLi4uCi0gICAgLy8KLSAgICAvLyBSZW1vdmVzIGFueSB0cmFpbGluZyB3aGl0ZXNw
YWNlIGZyb20gdGhlIHByaW9yIGNvbnRlbnQgbm9kZSBhbmQgZmxhZ3MKLSAgICAvLyB0aGUgbmV4
dCBvcGVyYXRpb24gZm9yIHN0cmlwcGluZyBpZiBpdCBpcyBhIGNvbnRlbnQgbm9kZS4KLSAgICBz
dHJpcDogZnVuY3Rpb24oKSB7Ci0gICAgICBpZiAodGhpcy5wZW5kaW5nQ29udGVudCkgewotICAg
ICAgICB0aGlzLnBlbmRpbmdDb250ZW50ID0gdGhpcy5wZW5kaW5nQ29udGVudC5yZXBsYWNlKC9c
cyskLywgJycpOwotICAgICAgfQotICAgICAgdGhpcy5zdHJpcE5leHQgPSAnc3RyaXAnOwotICAg
IH0sCi0KLSAgICAvLyBbYXBwZW5kXQotICAgIC8vCi0gICAgLy8gT24gc3RhY2ssIGJlZm9yZTog
dmFsdWUsIC4uLgotICAgIC8vIE9uIHN0YWNrLCBhZnRlcjogLi4uCi0gICAgLy8KLSAgICAvLyBD
b2VyY2VzIGB2YWx1ZWAgdG8gYSBTdHJpbmcgYW5kIGFwcGVuZHMgaXQgdG8gdGhlIGN1cnJlbnQg
YnVmZmVyLgotICAgIC8vCi0gICAgLy8gSWYgYHZhbHVlYCBpcyB0cnV0aHksIG9yIDAsIGl0IGlz
IGNvZXJjZWQgaW50byBhIHN0cmluZyBhbmQgYXBwZW5kZWQKLSAgICAvLyBPdGhlcndpc2UsIHRo
ZSBlbXB0eSBzdHJpbmcgaXMgYXBwZW5kZWQKLSAgICBhcHBlbmQ6IGZ1bmN0aW9uKCkgewotICAg
ICAgLy8gRm9yY2UgYW55dGhpbmcgdGhhdCBpcyBpbmxpbmVkIG9udG8gdGhlIHN0YWNrIHNvIHdl
IGRvbid0IGhhdmUgZHVwbGljYXRpb24KLSAgICAgIC8vIHdoZW4gd2UgZXhhbWluZSBsb2NhbAot
ICAgICAgdGhpcy5mbHVzaElubGluZSgpOwotICAgICAgdmFyIGxvY2FsID0gdGhpcy5wb3BTdGFj
aygpOwotICAgICAgdGhpcy5wdXNoU291cmNlKCJpZigiICsgbG9jYWwgKyAiIHx8ICIgKyBsb2Nh
bCArICIgPT09IDApIHsgIiArIHRoaXMuYXBwZW5kVG9CdWZmZXIobG9jYWwpICsgIiB9Iik7Ci0g
ICAgICBpZiAodGhpcy5lbnZpcm9ubWVudC5pc1NpbXBsZSkgewotICAgICAgICB0aGlzLnB1c2hT
b3VyY2UoImVsc2UgeyAiICsgdGhpcy5hcHBlbmRUb0J1ZmZlcigiJyciKSArICIgfSIpOwotICAg
ICAgfQotICAgIH0sCi0KLSAgICAvLyBbYXBwZW5kRXNjYXBlZF0KLSAgICAvLwotICAgIC8vIE9u
IHN0YWNrLCBiZWZvcmU6IHZhbHVlLCAuLi4KLSAgICAvLyBPbiBzdGFjaywgYWZ0ZXI6IC4uLgot
ICAgIC8vCi0gICAgLy8gRXNjYXBlIGB2YWx1ZWAgYW5kIGFwcGVuZCBpdCB0byB0aGUgYnVmZmVy
Ci0gICAgYXBwZW5kRXNjYXBlZDogZnVuY3Rpb24oKSB7Ci0gICAgICB0aGlzLmNvbnRleHQuYWxp
YXNlcy5lc2NhcGVFeHByZXNzaW9uID0gJ3RoaXMuZXNjYXBlRXhwcmVzc2lvbic7Ci0KLSAgICAg
IHRoaXMucHVzaFNvdXJjZSh0aGlzLmFwcGVuZFRvQnVmZmVyKCJlc2NhcGVFeHByZXNzaW9uKCIg
KyB0aGlzLnBvcFN0YWNrKCkgKyAiKSIpKTsKLSAgICB9LAotCi0gICAgLy8gW2dldENvbnRleHRd
Ci0gICAgLy8KLSAgICAvLyBPbiBzdGFjaywgYmVmb3JlOiAuLi4KLSAgICAvLyBPbiBzdGFjaywg
YWZ0ZXI6IC4uLgotICAgIC8vIENvbXBpbGVyIHZhbHVlLCBhZnRlcjogbGFzdENvbnRleHQ9ZGVw
dGgKLSAgICAvLwotICAgIC8vIFNldCB0aGUgdmFsdWUgb2YgdGhlIGBsYXN0Q29udGV4dGAgY29t
cGlsZXIgdmFsdWUgdG8gdGhlIGRlcHRoCi0gICAgZ2V0Q29udGV4dDogZnVuY3Rpb24oZGVwdGgp
IHsKLSAgICAgIGlmKHRoaXMubGFzdENvbnRleHQgIT09IGRlcHRoKSB7Ci0gICAgICAgIHRoaXMu
bGFzdENvbnRleHQgPSBkZXB0aDsKLSAgICAgIH0KLSAgICB9LAotCi0gICAgLy8gW2xvb2t1cE9u
Q29udGV4dF0KLSAgICAvLwotICAgIC8vIE9uIHN0YWNrLCBiZWZvcmU6IC4uLgotICAgIC8vIE9u
IHN0YWNrLCBhZnRlcjogY3VycmVudENvbnRleHRbbmFtZV0sIC4uLgotICAgIC8vCi0gICAgLy8g
TG9va3MgdXAgdGhlIHZhbHVlIG9mIGBuYW1lYCBvbiB0aGUgY3VycmVudCBjb250ZXh0IGFuZCBw
dXNoZXMKLSAgICAvLyBpdCBvbnRvIHRoZSBzdGFjay4KLSAgICBsb29rdXBPbkNvbnRleHQ6IGZ1
bmN0aW9uKG5hbWUpIHsKLSAgICAgIHRoaXMucHVzaCh0aGlzLm5hbWVMb29rdXAoJ2RlcHRoJyAr
IHRoaXMubGFzdENvbnRleHQsIG5hbWUsICdjb250ZXh0JykpOwotICAgIH0sCi0KLSAgICAvLyBb
cHVzaENvbnRleHRdCi0gICAgLy8KLSAgICAvLyBPbiBzdGFjaywgYmVmb3JlOiAuLi4KLSAgICAv
LyBPbiBzdGFjaywgYWZ0ZXI6IGN1cnJlbnRDb250ZXh0LCAuLi4KLSAgICAvLwotICAgIC8vIFB1
c2hlcyB0aGUgdmFsdWUgb2YgdGhlIGN1cnJlbnQgY29udGV4dCBvbnRvIHRoZSBzdGFjay4KLSAg
ICBwdXNoQ29udGV4dDogZnVuY3Rpb24oKSB7Ci0gICAgICB0aGlzLnB1c2hTdGFja0xpdGVyYWwo
J2RlcHRoJyArIHRoaXMubGFzdENvbnRleHQpOwotICAgIH0sCi0KLSAgICAvLyBbcmVzb2x2ZVBv
c3NpYmxlTGFtYmRhXQotICAgIC8vCi0gICAgLy8gT24gc3RhY2ssIGJlZm9yZTogdmFsdWUsIC4u
LgotICAgIC8vIE9uIHN0YWNrLCBhZnRlcjogcmVzb2x2ZWQgdmFsdWUsIC4uLgotICAgIC8vCi0g
ICAgLy8gSWYgdGhlIGB2YWx1ZWAgaXMgYSBsYW1iZGEsIHJlcGxhY2UgaXQgb24gdGhlIHN0YWNr
IGJ5Ci0gICAgLy8gdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgbGFtYmRhCi0gICAgcmVzb2x2ZVBv
c3NpYmxlTGFtYmRhOiBmdW5jdGlvbigpIHsKLSAgICAgIHRoaXMuY29udGV4dC5hbGlhc2VzLmZ1
bmN0aW9uVHlwZSA9ICciZnVuY3Rpb24iJzsKLQotICAgICAgdGhpcy5yZXBsYWNlU3RhY2soZnVu
Y3Rpb24oY3VycmVudCkgewotICAgICAgICByZXR1cm4gInR5cGVvZiAiICsgY3VycmVudCArICIg
PT09IGZ1bmN0aW9uVHlwZSA/ICIgKyBjdXJyZW50ICsgIi5hcHBseShkZXB0aDApIDogIiArIGN1
cnJlbnQ7Ci0gICAgICB9KTsKLSAgICB9LAotCi0gICAgLy8gW2xvb2t1cF0KLSAgICAvLwotICAg
IC8vIE9uIHN0YWNrLCBiZWZvcmU6IHZhbHVlLCAuLi4KLSAgICAvLyBPbiBzdGFjaywgYWZ0ZXI6
IHZhbHVlW25hbWVdLCAuLi4KLSAgICAvLwotICAgIC8vIFJlcGxhY2UgdGhlIHZhbHVlIG9uIHRo
ZSBzdGFjayB3aXRoIHRoZSByZXN1bHQgb2YgbG9va2luZwotICAgIC8vIHVwIGBuYW1lYCBvbiBg
dmFsdWVgCi0gICAgbG9va3VwOiBmdW5jdGlvbihuYW1lKSB7Ci0gICAgICB0aGlzLnJlcGxhY2VT
dGFjayhmdW5jdGlvbihjdXJyZW50KSB7Ci0gICAgICAgIHJldHVybiBjdXJyZW50ICsgIiA9PSBu
dWxsIHx8ICIgKyBjdXJyZW50ICsgIiA9PT0gZmFsc2UgPyAiICsgY3VycmVudCArICIgOiAiICsg
dGhpcy5uYW1lTG9va3VwKGN1cnJlbnQsIG5hbWUsICdjb250ZXh0Jyk7Ci0gICAgICB9KTsKLSAg
ICB9LAotCi0gICAgLy8gW2xvb2t1cERhdGFdCi0gICAgLy8KLSAgICAvLyBPbiBzdGFjaywgYmVm
b3JlOiAuLi4KLSAgICAvLyBPbiBzdGFjaywgYWZ0ZXI6IGRhdGEsIC4uLgotICAgIC8vCi0gICAg
Ly8gUHVzaCB0aGUgZGF0YSBsb29rdXAgb3BlcmF0b3IKLSAgICBsb29rdXBEYXRhOiBmdW5jdGlv
bigpIHsKLSAgICAgIHRoaXMucHVzaFN0YWNrTGl0ZXJhbCgnZGF0YScpOwotICAgIH0sCi0KLSAg
ICAvLyBbcHVzaFN0cmluZ1BhcmFtXQotICAgIC8vCi0gICAgLy8gT24gc3RhY2ssIGJlZm9yZTog
Li4uCi0gICAgLy8gT24gc3RhY2ssIGFmdGVyOiBzdHJpbmcsIGN1cnJlbnRDb250ZXh0LCAuLi4K
LSAgICAvLwotICAgIC8vIFRoaXMgb3Bjb2RlIGlzIGRlc2lnbmVkIGZvciB1c2UgaW4gc3RyaW5n
IG1vZGUsIHdoaWNoCi0gICAgLy8gcHJvdmlkZXMgdGhlIHN0cmluZyB2YWx1ZSBvZiBhIHBhcmFt
ZXRlciBhbG9uZyB3aXRoIGl0cwotICAgIC8vIGRlcHRoIHJhdGhlciB0aGFuIHJlc29sdmluZyBp
dCBpbW1lZGlhdGVseS4KLSAgICBwdXNoU3RyaW5nUGFyYW06IGZ1bmN0aW9uKHN0cmluZywgdHlw
ZSkgewotICAgICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFsKCdkZXB0aCcgKyB0aGlzLmxhc3RDb250
ZXh0KTsKLQotICAgICAgdGhpcy5wdXNoU3RyaW5nKHR5cGUpOwotCi0gICAgICAvLyBJZiBpdCdz
IGEgc3ViZXhwcmVzc2lvbiwgdGhlIHN0cmluZyByZXN1bHQKLSAgICAgIC8vIHdpbGwgYmUgcHVz
aGVkIGFmdGVyIHRoaXMgb3Bjb2RlLgotICAgICAgaWYgKHR5cGUgIT09ICdzZXhwcicpIHsKLSAg
ICAgICAgaWYgKHR5cGVvZiBzdHJpbmcgPT09ICdzdHJpbmcnKSB7Ci0gICAgICAgICAgdGhpcy5w
dXNoU3RyaW5nKHN0cmluZyk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgdGhpcy5wdXNo
U3RhY2tMaXRlcmFsKHN0cmluZyk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9LAotCi0gICAg
ZW1wdHlIYXNoOiBmdW5jdGlvbigpIHsKLSAgICAgIHRoaXMucHVzaFN0YWNrTGl0ZXJhbCgne30n
KTsKLQotICAgICAgaWYgKHRoaXMub3B0aW9ucy5zdHJpbmdQYXJhbXMpIHsKLSAgICAgICAgdGhp
cy5wdXNoKCd7fScpOyAvLyBoYXNoQ29udGV4dHMKLSAgICAgICAgdGhpcy5wdXNoKCd7fScpOyAv
LyBoYXNoVHlwZXMKLSAgICAgIH0KLSAgICB9LAotICAgIHB1c2hIYXNoOiBmdW5jdGlvbigpIHsK
LSAgICAgIGlmICh0aGlzLmhhc2gpIHsKLSAgICAgICAgdGhpcy5oYXNoZXMucHVzaCh0aGlzLmhh
c2gpOwotICAgICAgfQotICAgICAgdGhpcy5oYXNoID0ge3ZhbHVlczogW10sIHR5cGVzOiBbXSwg
Y29udGV4dHM6IFtdfTsKLSAgICB9LAotICAgIHBvcEhhc2g6IGZ1bmN0aW9uKCkgewotICAgICAg
dmFyIGhhc2ggPSB0aGlzLmhhc2g7Ci0gICAgICB0aGlzLmhhc2ggPSB0aGlzLmhhc2hlcy5wb3Ao
KTsKLQotICAgICAgaWYgKHRoaXMub3B0aW9ucy5zdHJpbmdQYXJhbXMpIHsKLSAgICAgICAgdGhp
cy5wdXNoKCd7JyArIGhhc2guY29udGV4dHMuam9pbignLCcpICsgJ30nKTsKLSAgICAgICAgdGhp
cy5wdXNoKCd7JyArIGhhc2gudHlwZXMuam9pbignLCcpICsgJ30nKTsKLSAgICAgIH0KLQotICAg
ICAgdGhpcy5wdXNoKCd7XG4gICAgJyArIGhhc2gudmFsdWVzLmpvaW4oJyxcbiAgICAnKSArICdc
biAgfScpOwotICAgIH0sCi0KLSAgICAvLyBbcHVzaFN0cmluZ10KLSAgICAvLwotICAgIC8vIE9u
IHN0YWNrLCBiZWZvcmU6IC4uLgotICAgIC8vIE9uIHN0YWNrLCBhZnRlcjogcXVvdGVkU3RyaW5n
KHN0cmluZyksIC4uLgotICAgIC8vCi0gICAgLy8gUHVzaCBhIHF1b3RlZCB2ZXJzaW9uIG9mIGBz
dHJpbmdgIG9udG8gdGhlIHN0YWNrCi0gICAgcHVzaFN0cmluZzogZnVuY3Rpb24oc3RyaW5nKSB7
Ci0gICAgICB0aGlzLnB1c2hTdGFja0xpdGVyYWwodGhpcy5xdW90ZWRTdHJpbmcoc3RyaW5nKSk7
Ci0gICAgfSwKLQotICAgIC8vIFtwdXNoXQotICAgIC8vCi0gICAgLy8gT24gc3RhY2ssIGJlZm9y
ZTogLi4uCi0gICAgLy8gT24gc3RhY2ssIGFmdGVyOiBleHByLCAuLi4KLSAgICAvLwotICAgIC8v
IFB1c2ggYW4gZXhwcmVzc2lvbiBvbnRvIHRoZSBzdGFjawotICAgIHB1c2g6IGZ1bmN0aW9uKGV4
cHIpIHsKLSAgICAgIHRoaXMuaW5saW5lU3RhY2sucHVzaChleHByKTsKLSAgICAgIHJldHVybiBl
eHByOwotICAgIH0sCi0KLSAgICAvLyBbcHVzaExpdGVyYWxdCi0gICAgLy8KLSAgICAvLyBPbiBz
dGFjaywgYmVmb3JlOiAuLi4KLSAgICAvLyBPbiBzdGFjaywgYWZ0ZXI6IHZhbHVlLCAuLi4KLSAg
ICAvLwotICAgIC8vIFB1c2hlcyBhIHZhbHVlIG9udG8gdGhlIHN0YWNrLiBUaGlzIG9wZXJhdGlv
biBwcmV2ZW50cwotICAgIC8vIHRoZSBjb21waWxlciBmcm9tIGNyZWF0aW5nIGEgdGVtcG9yYXJ5
IHZhcmlhYmxlIHRvIGhvbGQKLSAgICAvLyBpdC4KLSAgICBwdXNoTGl0ZXJhbDogZnVuY3Rpb24o
dmFsdWUpIHsKLSAgICAgIHRoaXMucHVzaFN0YWNrTGl0ZXJhbCh2YWx1ZSk7Ci0gICAgfSwKLQot
ICAgIC8vIFtwdXNoUHJvZ3JhbV0KLSAgICAvLwotICAgIC8vIE9uIHN0YWNrLCBiZWZvcmU6IC4u
LgotICAgIC8vIE9uIHN0YWNrLCBhZnRlcjogcHJvZ3JhbShndWlkKSwgLi4uCi0gICAgLy8KLSAg
ICAvLyBQdXNoIGEgcHJvZ3JhbSBleHByZXNzaW9uIG9udG8gdGhlIHN0YWNrLiBUaGlzIHRha2Vz
Ci0gICAgLy8gYSBjb21waWxlLXRpbWUgZ3VpZCBhbmQgY29udmVydHMgaXQgaW50byBhIHJ1bnRp
bWUtYWNjZXNzaWJsZQotICAgIC8vIGV4cHJlc3Npb24uCi0gICAgcHVzaFByb2dyYW06IGZ1bmN0
aW9uKGd1aWQpIHsKLSAgICAgIGlmIChndWlkICE9IG51bGwpIHsKLSAgICAgICAgdGhpcy5wdXNo
U3RhY2tMaXRlcmFsKHRoaXMucHJvZ3JhbUV4cHJlc3Npb24oZ3VpZCkpOwotICAgICAgfSBlbHNl
IHsKLSAgICAgICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFsKG51bGwpOwotICAgICAgfQotICAgIH0s
Ci0KLSAgICAvLyBbaW52b2tlSGVscGVyXQotICAgIC8vCi0gICAgLy8gT24gc3RhY2ssIGJlZm9y
ZTogaGFzaCwgaW52ZXJzZSwgcHJvZ3JhbSwgcGFyYW1zLi4uLCAuLi4KLSAgICAvLyBPbiBzdGFj
aywgYWZ0ZXI6IHJlc3VsdCBvZiBoZWxwZXIgaW52b2NhdGlvbgotICAgIC8vCi0gICAgLy8gUG9w
cyBvZmYgdGhlIGhlbHBlcidzIHBhcmFtZXRlcnMsIGludm9rZXMgdGhlIGhlbHBlciwKLSAgICAv
LyBhbmQgcHVzaGVzIHRoZSBoZWxwZXIncyByZXR1cm4gdmFsdWUgb250byB0aGUgc3RhY2suCi0g
ICAgLy8KLSAgICAvLyBJZiB0aGUgaGVscGVyIGlzIG5vdCBmb3VuZCwgYGhlbHBlck1pc3Npbmdg
IGlzIGNhbGxlZC4KLSAgICBpbnZva2VIZWxwZXI6IGZ1bmN0aW9uKHBhcmFtU2l6ZSwgbmFtZSwg
aXNSb290KSB7Ci0gICAgICB0aGlzLmNvbnRleHQuYWxpYXNlcy5oZWxwZXJNaXNzaW5nID0gJ2hl
bHBlcnMuaGVscGVyTWlzc2luZyc7Ci0gICAgICB0aGlzLnVzZVJlZ2lzdGVyKCdoZWxwZXInKTsK
LQotICAgICAgdmFyIGhlbHBlciA9IHRoaXMubGFzdEhlbHBlciA9IHRoaXMuc2V0dXBIZWxwZXIo
cGFyYW1TaXplLCBuYW1lLCB0cnVlKTsKLSAgICAgIHZhciBub25IZWxwZXIgPSB0aGlzLm5hbWVM
b29rdXAoJ2RlcHRoJyArIHRoaXMubGFzdENvbnRleHQsIG5hbWUsICdjb250ZXh0Jyk7Ci0KLSAg
ICAgIHZhciBsb29rdXAgPSAnaGVscGVyID0gJyArIGhlbHBlci5uYW1lICsgJyB8fCAnICsgbm9u
SGVscGVyOwotICAgICAgaWYgKGhlbHBlci5wYXJhbXNJbml0KSB7Ci0gICAgICAgIGxvb2t1cCAr
PSAnLCcgKyBoZWxwZXIucGFyYW1zSW5pdDsKLSAgICAgIH0KLQotICAgICAgdGhpcy5wdXNoKAot
ICAgICAgICAnKCcKLSAgICAgICAgICArIGxvb2t1cAotICAgICAgICAgICsgJyxoZWxwZXIgJwot
ICAgICAgICAgICAgKyAnPyBoZWxwZXIuY2FsbCgnICsgaGVscGVyLmNhbGxQYXJhbXMgKyAnKSAn
Ci0gICAgICAgICAgICArICc6IGhlbHBlck1pc3NpbmcuY2FsbCgnICsgaGVscGVyLmhlbHBlck1p
c3NpbmdQYXJhbXMgKyAnKSknKTsKLQotICAgICAgLy8gQWx3YXlzIGZsdXNoIHN1YmV4cHJlc3Np
b25zLiBUaGlzIGlzIGJvdGggdG8gcHJldmVudCB0aGUgY29tcG91bmRpbmcgc2l6ZSBpc3N1ZSB0
aGF0Ci0gICAgICAvLyBvY2N1cnMgd2hlbiB0aGUgY29kZSBoYXMgdG8gYmUgZHVwbGljYXRlZCBm
b3IgaW5saW5pbmcgYW5kIGFsc28gdG8gcHJldmVudCBlcnJvcnMKLSAgICAgIC8vIGR1ZSB0byB0
aGUgaW5jb3JyZWN0IG9wdGlvbnMgb2JqZWN0IGJlaW5nIHBhc3NlZCBkdWUgdG8gdGhlIHNoYXJl
ZCByZWdpc3Rlci4KLSAgICAgIGlmICghaXNSb290KSB7Ci0gICAgICAgIHRoaXMuZmx1c2hJbmxp
bmUoKTsKLSAgICAgIH0KLSAgICB9LAotCi0gICAgLy8gW2ludm9rZUtub3duSGVscGVyXQotICAg
IC8vCi0gICAgLy8gT24gc3RhY2ssIGJlZm9yZTogaGFzaCwgaW52ZXJzZSwgcHJvZ3JhbSwgcGFy
YW1zLi4uLCAuLi4KLSAgICAvLyBPbiBzdGFjaywgYWZ0ZXI6IHJlc3VsdCBvZiBoZWxwZXIgaW52
b2NhdGlvbgotICAgIC8vCi0gICAgLy8gVGhpcyBvcGVyYXRpb24gaXMgdXNlZCB3aGVuIHRoZSBo
ZWxwZXIgaXMga25vd24gdG8gZXhpc3QsCi0gICAgLy8gc28gYSBgaGVscGVyTWlzc2luZ2AgZmFs
bGJhY2sgaXMgbm90IHJlcXVpcmVkLgotICAgIGludm9rZUtub3duSGVscGVyOiBmdW5jdGlvbihw
YXJhbVNpemUsIG5hbWUpIHsKLSAgICAgIHZhciBoZWxwZXIgPSB0aGlzLnNldHVwSGVscGVyKHBh
cmFtU2l6ZSwgbmFtZSk7Ci0gICAgICB0aGlzLnB1c2goaGVscGVyLm5hbWUgKyAiLmNhbGwoIiAr
IGhlbHBlci5jYWxsUGFyYW1zICsgIikiKTsKLSAgICB9LAotCi0gICAgLy8gW2ludm9rZUFtYmln
dW91c10KLSAgICAvLwotICAgIC8vIE9uIHN0YWNrLCBiZWZvcmU6IGhhc2gsIGludmVyc2UsIHBy
b2dyYW0sIHBhcmFtcy4uLiwgLi4uCi0gICAgLy8gT24gc3RhY2ssIGFmdGVyOiByZXN1bHQgb2Yg
ZGlzYW1iaWd1YXRpb24KLSAgICAvLwotICAgIC8vIFRoaXMgb3BlcmF0aW9uIGlzIHVzZWQgd2hl
biBhbiBleHByZXNzaW9uIGxpa2UgYHt7Zm9vfX1gCi0gICAgLy8gaXMgcHJvdmlkZWQsIGJ1dCB3
ZSBkb24ndCBrbm93IGF0IGNvbXBpbGUtdGltZSB3aGV0aGVyIGl0Ci0gICAgLy8gaXMgYSBoZWxw
ZXIgb3IgYSBwYXRoLgotICAgIC8vCi0gICAgLy8gVGhpcyBvcGVyYXRpb24gZW1pdHMgbW9yZSBj
b2RlIHRoYW4gdGhlIG90aGVyIG9wdGlvbnMsCi0gICAgLy8gYW5kIGNhbiBiZSBhdm9pZGVkIGJ5
IHBhc3NpbmcgdGhlIGBrbm93bkhlbHBlcnNgIGFuZAotICAgIC8vIGBrbm93bkhlbHBlcnNPbmx5
YCBmbGFncyBhdCBjb21waWxlLXRpbWUuCi0gICAgaW52b2tlQW1iaWd1b3VzOiBmdW5jdGlvbihu
YW1lLCBoZWxwZXJDYWxsKSB7Ci0gICAgICB0aGlzLmNvbnRleHQuYWxpYXNlcy5mdW5jdGlvblR5
cGUgPSAnImZ1bmN0aW9uIic7Ci0gICAgICB0aGlzLnVzZVJlZ2lzdGVyKCdoZWxwZXInKTsKLQot
ICAgICAgdGhpcy5lbXB0eUhhc2goKTsKLSAgICAgIHZhciBoZWxwZXIgPSB0aGlzLnNldHVwSGVs
cGVyKDAsIG5hbWUsIGhlbHBlckNhbGwpOwotCi0gICAgICB2YXIgaGVscGVyTmFtZSA9IHRoaXMu
bGFzdEhlbHBlciA9IHRoaXMubmFtZUxvb2t1cCgnaGVscGVycycsIG5hbWUsICdoZWxwZXInKTsK
LQotICAgICAgdmFyIG5vbkhlbHBlciA9IHRoaXMubmFtZUxvb2t1cCgnZGVwdGgnICsgdGhpcy5s
YXN0Q29udGV4dCwgbmFtZSwgJ2NvbnRleHQnKTsKLSAgICAgIHZhciBuZXh0U3RhY2sgPSB0aGlz
Lm5leHRTdGFjaygpOwotCi0gICAgICBpZiAoaGVscGVyLnBhcmFtc0luaXQpIHsKLSAgICAgICAg
dGhpcy5wdXNoU291cmNlKGhlbHBlci5wYXJhbXNJbml0KTsKLSAgICAgIH0KLSAgICAgIHRoaXMu
cHVzaFNvdXJjZSgnaWYgKGhlbHBlciA9ICcgKyBoZWxwZXJOYW1lICsgJykgeyAnICsgbmV4dFN0
YWNrICsgJyA9IGhlbHBlci5jYWxsKCcgKyBoZWxwZXIuY2FsbFBhcmFtcyArICcpOyB9Jyk7Ci0g
ICAgICB0aGlzLnB1c2hTb3VyY2UoJ2Vsc2UgeyBoZWxwZXIgPSAnICsgbm9uSGVscGVyICsgJzsg
JyArIG5leHRTdGFjayArICcgPSB0eXBlb2YgaGVscGVyID09PSBmdW5jdGlvblR5cGUgPyBoZWxw
ZXIuY2FsbCgnICsgaGVscGVyLmNhbGxQYXJhbXMgKyAnKSA6IGhlbHBlcjsgfScpOwotICAgIH0s
Ci0KLSAgICAvLyBbaW52b2tlUGFydGlhbF0KLSAgICAvLwotICAgIC8vIE9uIHN0YWNrLCBiZWZv
cmU6IGNvbnRleHQsIC4uLgotICAgIC8vIE9uIHN0YWNrIGFmdGVyOiByZXN1bHQgb2YgcGFydGlh
bCBpbnZvY2F0aW9uCi0gICAgLy8KLSAgICAvLyBUaGlzIG9wZXJhdGlvbiBwb3BzIG9mZiBhIGNv
bnRleHQsIGludm9rZXMgYSBwYXJ0aWFsIHdpdGggdGhhdCBjb250ZXh0LAotICAgIC8vIGFuZCBw
dXNoZXMgdGhlIHJlc3VsdCBvZiB0aGUgaW52b2NhdGlvbiBiYWNrLgotICAgIGludm9rZVBhcnRp
YWw6IGZ1bmN0aW9uKG5hbWUpIHsKLSAgICAgIHZhciBwYXJhbXMgPSBbdGhpcy5uYW1lTG9va3Vw
KCdwYXJ0aWFscycsIG5hbWUsICdwYXJ0aWFsJyksICInIiArIG5hbWUgKyAiJyIsIHRoaXMucG9w
U3RhY2soKSwgImhlbHBlcnMiLCAicGFydGlhbHMiXTsKLQotICAgICAgaWYgKHRoaXMub3B0aW9u
cy5kYXRhKSB7Ci0gICAgICAgIHBhcmFtcy5wdXNoKCJkYXRhIik7Ci0gICAgICB9Ci0KLSAgICAg
IHRoaXMuY29udGV4dC5hbGlhc2VzLnNlbGYgPSAidGhpcyI7Ci0gICAgICB0aGlzLnB1c2goInNl
bGYuaW52b2tlUGFydGlhbCgiICsgcGFyYW1zLmpvaW4oIiwgIikgKyAiKSIpOwotICAgIH0sCi0K
LSAgICAvLyBbYXNzaWduVG9IYXNoXQotICAgIC8vCi0gICAgLy8gT24gc3RhY2ssIGJlZm9yZTog
dmFsdWUsIGhhc2gsIC4uLgotICAgIC8vIE9uIHN0YWNrLCBhZnRlcjogaGFzaCwgLi4uCi0gICAg
Ly8KLSAgICAvLyBQb3BzIGEgdmFsdWUgYW5kIGhhc2ggb2ZmIHRoZSBzdGFjaywgYXNzaWducyBg
aGFzaFtrZXldID0gdmFsdWVgCi0gICAgLy8gYW5kIHB1c2hlcyB0aGUgaGFzaCBiYWNrIG9udG8g
dGhlIHN0YWNrLgotICAgIGFzc2lnblRvSGFzaDogZnVuY3Rpb24oa2V5KSB7Ci0gICAgICB2YXIg
dmFsdWUgPSB0aGlzLnBvcFN0YWNrKCksCi0gICAgICAgICAgY29udGV4dCwKLSAgICAgICAgICB0
eXBlOwotCi0gICAgICBpZiAodGhpcy5vcHRpb25zLnN0cmluZ1BhcmFtcykgewotICAgICAgICB0
eXBlID0gdGhpcy5wb3BTdGFjaygpOwotICAgICAgICBjb250ZXh0ID0gdGhpcy5wb3BTdGFjaygp
OwotICAgICAgfQotCi0gICAgICB2YXIgaGFzaCA9IHRoaXMuaGFzaDsKLSAgICAgIGlmIChjb250
ZXh0KSB7Ci0gICAgICAgIGhhc2guY29udGV4dHMucHVzaCgiJyIgKyBrZXkgKyAiJzogIiArIGNv
bnRleHQpOwotICAgICAgfQotICAgICAgaWYgKHR5cGUpIHsKLSAgICAgICAgaGFzaC50eXBlcy5w
dXNoKCInIiArIGtleSArICInOiAiICsgdHlwZSk7Ci0gICAgICB9Ci0gICAgICBoYXNoLnZhbHVl
cy5wdXNoKCInIiArIGtleSArICInOiAoIiArIHZhbHVlICsgIikiKTsKLSAgICB9LAotCi0gICAg
Ly8gSEVMUEVSUwotCi0gICAgY29tcGlsZXI6IEphdmFTY3JpcHRDb21waWxlciwKLQotICAgIGNv
bXBpbGVDaGlsZHJlbjogZnVuY3Rpb24oZW52aXJvbm1lbnQsIG9wdGlvbnMpIHsKLSAgICAgIHZh
ciBjaGlsZHJlbiA9IGVudmlyb25tZW50LmNoaWxkcmVuLCBjaGlsZCwgY29tcGlsZXI7Ci0KLSAg
ICAgIGZvcih2YXIgaT0wLCBsPWNoaWxkcmVuLmxlbmd0aDsgaTxsOyBpKyspIHsKLSAgICAgICAg
Y2hpbGQgPSBjaGlsZHJlbltpXTsKLSAgICAgICAgY29tcGlsZXIgPSBuZXcgdGhpcy5jb21waWxl
cigpOwotCi0gICAgICAgIHZhciBpbmRleCA9IHRoaXMubWF0Y2hFeGlzdGluZ1Byb2dyYW0oY2hp
bGQpOwotCi0gICAgICAgIGlmIChpbmRleCA9PSBudWxsKSB7Ci0gICAgICAgICAgdGhpcy5jb250
ZXh0LnByb2dyYW1zLnB1c2goJycpOyAgICAgLy8gUGxhY2Vob2xkZXIgdG8gcHJldmVudCBuYW1l
IGNvbmZsaWN0cyBmb3IgbmVzdGVkIGNoaWxkcmVuCi0gICAgICAgICAgaW5kZXggPSB0aGlzLmNv
bnRleHQucHJvZ3JhbXMubGVuZ3RoOwotICAgICAgICAgIGNoaWxkLmluZGV4ID0gaW5kZXg7Ci0g
ICAgICAgICAgY2hpbGQubmFtZSA9ICdwcm9ncmFtJyArIGluZGV4OwotICAgICAgICAgIHRoaXMu
Y29udGV4dC5wcm9ncmFtc1tpbmRleF0gPSBjb21waWxlci5jb21waWxlKGNoaWxkLCBvcHRpb25z
LCB0aGlzLmNvbnRleHQpOwotICAgICAgICAgIHRoaXMuY29udGV4dC5lbnZpcm9ubWVudHNbaW5k
ZXhdID0gY2hpbGQ7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgY2hpbGQuaW5kZXggPSBp
bmRleDsKLSAgICAgICAgICBjaGlsZC5uYW1lID0gJ3Byb2dyYW0nICsgaW5kZXg7Ci0gICAgICAg
IH0KLSAgICAgIH0KLSAgICB9LAotICAgIG1hdGNoRXhpc3RpbmdQcm9ncmFtOiBmdW5jdGlvbihj
aGlsZCkgewotICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IHRoaXMuY29udGV4dC5lbnZpcm9u
bWVudHMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHsKLSAgICAgICAgdmFyIGVudmlyb25tZW50ID0g
dGhpcy5jb250ZXh0LmVudmlyb25tZW50c1tpXTsKLSAgICAgICAgaWYgKGVudmlyb25tZW50ICYm
IGVudmlyb25tZW50LmVxdWFscyhjaGlsZCkpIHsKLSAgICAgICAgICByZXR1cm4gaTsKLSAgICAg
ICAgfQotICAgICAgfQotICAgIH0sCi0KLSAgICBwcm9ncmFtRXhwcmVzc2lvbjogZnVuY3Rpb24o
Z3VpZCkgewotICAgICAgdGhpcy5jb250ZXh0LmFsaWFzZXMuc2VsZiA9ICJ0aGlzIjsKLQotICAg
ICAgaWYoZ3VpZCA9PSBudWxsKSB7Ci0gICAgICAgIHJldHVybiAic2VsZi5ub29wIjsKLSAgICAg
IH0KLQotICAgICAgdmFyIGNoaWxkID0gdGhpcy5lbnZpcm9ubWVudC5jaGlsZHJlbltndWlkXSwK
LSAgICAgICAgICBkZXB0aHMgPSBjaGlsZC5kZXB0aHMubGlzdCwgZGVwdGg7Ci0KLSAgICAgIHZh
ciBwcm9ncmFtUGFyYW1zID0gW2NoaWxkLmluZGV4LCBjaGlsZC5uYW1lLCAiZGF0YSJdOwotCi0g
ICAgICBmb3IodmFyIGk9MCwgbCA9IGRlcHRocy5sZW5ndGg7IGk8bDsgaSsrKSB7Ci0gICAgICAg
IGRlcHRoID0gZGVwdGhzW2ldOwotCi0gICAgICAgIGlmKGRlcHRoID09PSAxKSB7IHByb2dyYW1Q
YXJhbXMucHVzaCgiZGVwdGgwIik7IH0KLSAgICAgICAgZWxzZSB7IHByb2dyYW1QYXJhbXMucHVz
aCgiZGVwdGgiICsgKGRlcHRoIC0gMSkpOyB9Ci0gICAgICB9Ci0KLSAgICAgIHJldHVybiAoZGVw
dGhzLmxlbmd0aCA9PT0gMCA/ICJzZWxmLnByb2dyYW0oIiA6ICJzZWxmLnByb2dyYW1XaXRoRGVw
dGgoIikgKyBwcm9ncmFtUGFyYW1zLmpvaW4oIiwgIikgKyAiKSI7Ci0gICAgfSwKLQotICAgIHJl
Z2lzdGVyOiBmdW5jdGlvbihuYW1lLCB2YWwpIHsKLSAgICAgIHRoaXMudXNlUmVnaXN0ZXIobmFt
ZSk7Ci0gICAgICB0aGlzLnB1c2hTb3VyY2UobmFtZSArICIgPSAiICsgdmFsICsgIjsiKTsKLSAg
ICB9LAotCi0gICAgdXNlUmVnaXN0ZXI6IGZ1bmN0aW9uKG5hbWUpIHsKLSAgICAgIGlmKCF0aGlz
LnJlZ2lzdGVyc1tuYW1lXSkgewotICAgICAgICB0aGlzLnJlZ2lzdGVyc1tuYW1lXSA9IHRydWU7
Ci0gICAgICAgIHRoaXMucmVnaXN0ZXJzLmxpc3QucHVzaChuYW1lKTsKLSAgICAgIH0KLSAgICB9
LAotCi0gICAgcHVzaFN0YWNrTGl0ZXJhbDogZnVuY3Rpb24oaXRlbSkgewotICAgICAgcmV0dXJu
IHRoaXMucHVzaChuZXcgTGl0ZXJhbChpdGVtKSk7Ci0gICAgfSwKLQotICAgIHB1c2hTb3VyY2U6
IGZ1bmN0aW9uKHNvdXJjZSkgewotICAgICAgaWYgKHRoaXMucGVuZGluZ0NvbnRlbnQpIHsKLSAg
ICAgICAgdGhpcy5zb3VyY2UucHVzaCh0aGlzLmFwcGVuZFRvQnVmZmVyKHRoaXMucXVvdGVkU3Ry
aW5nKHRoaXMucGVuZGluZ0NvbnRlbnQpKSk7Ci0gICAgICAgIHRoaXMucGVuZGluZ0NvbnRlbnQg
PSB1bmRlZmluZWQ7Ci0gICAgICB9Ci0KLSAgICAgIGlmIChzb3VyY2UpIHsKLSAgICAgICAgdGhp
cy5zb3VyY2UucHVzaChzb3VyY2UpOwotICAgICAgfQotICAgIH0sCi0KLSAgICBwdXNoU3RhY2s6
IGZ1bmN0aW9uKGl0ZW0pIHsKLSAgICAgIHRoaXMuZmx1c2hJbmxpbmUoKTsKLQotICAgICAgdmFy
IHN0YWNrID0gdGhpcy5pbmNyU3RhY2soKTsKLSAgICAgIGlmIChpdGVtKSB7Ci0gICAgICAgIHRo
aXMucHVzaFNvdXJjZShzdGFjayArICIgPSAiICsgaXRlbSArICI7Iik7Ci0gICAgICB9Ci0gICAg
ICB0aGlzLmNvbXBpbGVTdGFjay5wdXNoKHN0YWNrKTsKLSAgICAgIHJldHVybiBzdGFjazsKLSAg
ICB9LAotCi0gICAgcmVwbGFjZVN0YWNrOiBmdW5jdGlvbihjYWxsYmFjaykgewotICAgICAgdmFy
IHByZWZpeCA9ICcnLAotICAgICAgICAgIGlubGluZSA9IHRoaXMuaXNJbmxpbmUoKSwKLSAgICAg
ICAgICBzdGFjaywKLSAgICAgICAgICBjcmVhdGVkU3RhY2ssCi0gICAgICAgICAgdXNlZExpdGVy
YWw7Ci0KLSAgICAgIC8vIElmIHdlIGFyZSBjdXJyZW50bHkgaW5saW5lIHRoZW4gd2Ugd2FudCB0
byBtZXJnZSB0aGUgaW5saW5lIHN0YXRlbWVudCBpbnRvIHRoZQotICAgICAgLy8gcmVwbGFjZW1l
bnQgc3RhdGVtZW50IHZpYSAnLCcKLSAgICAgIGlmIChpbmxpbmUpIHsKLSAgICAgICAgdmFyIHRv
cCA9IHRoaXMucG9wU3RhY2sodHJ1ZSk7Ci0KLSAgICAgICAgaWYgKHRvcCBpbnN0YW5jZW9mIExp
dGVyYWwpIHsKLSAgICAgICAgICAvLyBMaXRlcmFscyBkbyBub3QgbmVlZCB0byBiZSBpbmxpbmVk
Ci0gICAgICAgICAgc3RhY2sgPSB0b3AudmFsdWU7Ci0gICAgICAgICAgdXNlZExpdGVyYWwgPSB0
cnVlOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIC8vIEdldCBvciBjcmVhdGUgdGhlIGN1
cnJlbnQgc3RhY2sgbmFtZSBmb3IgdXNlIGJ5IHRoZSBpbmxpbmUKLSAgICAgICAgICBjcmVhdGVk
U3RhY2sgPSAhdGhpcy5zdGFja1Nsb3Q7Ci0gICAgICAgICAgdmFyIG5hbWUgPSAhY3JlYXRlZFN0
YWNrID8gdGhpcy50b3BTdGFja05hbWUoKSA6IHRoaXMuaW5jclN0YWNrKCk7Ci0KLSAgICAgICAg
ICBwcmVmaXggPSAnKCcgKyB0aGlzLnB1c2gobmFtZSkgKyAnID0gJyArIHRvcCArICcpLCc7Ci0g
ICAgICAgICAgc3RhY2sgPSB0aGlzLnRvcFN0YWNrKCk7Ci0gICAgICAgIH0KLSAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgIHN0YWNrID0gdGhpcy50b3BTdGFjaygpOwotICAgICAgfQotCi0gICAgICB2
YXIgaXRlbSA9IGNhbGxiYWNrLmNhbGwodGhpcywgc3RhY2spOwotCi0gICAgICBpZiAoaW5saW5l
KSB7Ci0gICAgICAgIGlmICghdXNlZExpdGVyYWwpIHsKLSAgICAgICAgICB0aGlzLnBvcFN0YWNr
KCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGNyZWF0ZWRTdGFjaykgewotICAgICAgICAgIHRo
aXMuc3RhY2tTbG90LS07Ci0gICAgICAgIH0KLSAgICAgICAgdGhpcy5wdXNoKCcoJyArIHByZWZp
eCArIGl0ZW0gKyAnKScpOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgLy8gUHJldmVudCBtb2Rp
ZmljYXRpb24gb2YgdGhlIGNvbnRleHQgZGVwdGggdmFyaWFibGUuIFRocm91Z2ggcmVwbGFjZVN0
YWNrCi0gICAgICAgIGlmICghL15zdGFjay8udGVzdChzdGFjaykpIHsKLSAgICAgICAgICBzdGFj
ayA9IHRoaXMubmV4dFN0YWNrKCk7Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLnB1c2hTb3Vy
Y2Uoc3RhY2sgKyAiID0gKCIgKyBwcmVmaXggKyBpdGVtICsgIik7Iik7Ci0gICAgICB9Ci0gICAg
ICByZXR1cm4gc3RhY2s7Ci0gICAgfSwKLQotICAgIG5leHRTdGFjazogZnVuY3Rpb24oKSB7Ci0g
ICAgICByZXR1cm4gdGhpcy5wdXNoU3RhY2soKTsKLSAgICB9LAotCi0gICAgaW5jclN0YWNrOiBm
dW5jdGlvbigpIHsKLSAgICAgIHRoaXMuc3RhY2tTbG90Kys7Ci0gICAgICBpZih0aGlzLnN0YWNr
U2xvdCA+IHRoaXMuc3RhY2tWYXJzLmxlbmd0aCkgeyB0aGlzLnN0YWNrVmFycy5wdXNoKCJzdGFj
ayIgKyB0aGlzLnN0YWNrU2xvdCk7IH0KLSAgICAgIHJldHVybiB0aGlzLnRvcFN0YWNrTmFtZSgp
OwotICAgIH0sCi0gICAgdG9wU3RhY2tOYW1lOiBmdW5jdGlvbigpIHsKLSAgICAgIHJldHVybiAi
c3RhY2siICsgdGhpcy5zdGFja1Nsb3Q7Ci0gICAgfSwKLSAgICBmbHVzaElubGluZTogZnVuY3Rp
b24oKSB7Ci0gICAgICB2YXIgaW5saW5lU3RhY2sgPSB0aGlzLmlubGluZVN0YWNrOwotICAgICAg
aWYgKGlubGluZVN0YWNrLmxlbmd0aCkgewotICAgICAgICB0aGlzLmlubGluZVN0YWNrID0gW107
Ci0gICAgICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBpbmxpbmVTdGFjay5sZW5ndGg7IGkgPCBs
ZW47IGkrKykgewotICAgICAgICAgIHZhciBlbnRyeSA9IGlubGluZVN0YWNrW2ldOwotICAgICAg
ICAgIGlmIChlbnRyeSBpbnN0YW5jZW9mIExpdGVyYWwpIHsKLSAgICAgICAgICAgIHRoaXMuY29t
cGlsZVN0YWNrLnB1c2goZW50cnkpOwotICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB0
aGlzLnB1c2hTdGFjayhlbnRyeSk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0g
ICAgfSwKLSAgICBpc0lubGluZTogZnVuY3Rpb24oKSB7Ci0gICAgICByZXR1cm4gdGhpcy5pbmxp
bmVTdGFjay5sZW5ndGg7Ci0gICAgfSwKLQotICAgIHBvcFN0YWNrOiBmdW5jdGlvbih3cmFwcGVk
KSB7Ci0gICAgICB2YXIgaW5saW5lID0gdGhpcy5pc0lubGluZSgpLAotICAgICAgICAgIGl0ZW0g
PSAoaW5saW5lID8gdGhpcy5pbmxpbmVTdGFjayA6IHRoaXMuY29tcGlsZVN0YWNrKS5wb3AoKTsK
LQotICAgICAgaWYgKCF3cmFwcGVkICYmIChpdGVtIGluc3RhbmNlb2YgTGl0ZXJhbCkpIHsKLSAg
ICAgICAgcmV0dXJuIGl0ZW0udmFsdWU7Ci0gICAgICB9IGVsc2UgewotICAgICAgICBpZiAoIWlu
bGluZSkgewotICAgICAgICAgIGlmICghdGhpcy5zdGFja1Nsb3QpIHsKLSAgICAgICAgICAgIHRo
cm93IG5ldyBFeGNlcHRpb24oJ0ludmFsaWQgc3RhY2sgcG9wJyk7Ci0gICAgICAgICAgfQotICAg
ICAgICAgIHRoaXMuc3RhY2tTbG90LS07Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGl0ZW07
Ci0gICAgICB9Ci0gICAgfSwKLQotICAgIHRvcFN0YWNrOiBmdW5jdGlvbih3cmFwcGVkKSB7Ci0g
ICAgICB2YXIgc3RhY2sgPSAodGhpcy5pc0lubGluZSgpID8gdGhpcy5pbmxpbmVTdGFjayA6IHRo
aXMuY29tcGlsZVN0YWNrKSwKLSAgICAgICAgICBpdGVtID0gc3RhY2tbc3RhY2subGVuZ3RoIC0g
MV07Ci0KLSAgICAgIGlmICghd3JhcHBlZCAmJiAoaXRlbSBpbnN0YW5jZW9mIExpdGVyYWwpKSB7
Ci0gICAgICAgIHJldHVybiBpdGVtLnZhbHVlOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgcmV0
dXJuIGl0ZW07Ci0gICAgICB9Ci0gICAgfSwKLQotICAgIHF1b3RlZFN0cmluZzogZnVuY3Rpb24o
c3RyKSB7Ci0gICAgICByZXR1cm4gJyInICsgc3RyCi0gICAgICAgIC5yZXBsYWNlKC9cXC9nLCAn
XFxcXCcpCi0gICAgICAgIC5yZXBsYWNlKC8iL2csICdcXCInKQotICAgICAgICAucmVwbGFjZSgv
XG4vZywgJ1xcbicpCi0gICAgICAgIC5yZXBsYWNlKC9cci9nLCAnXFxyJykKLSAgICAgICAgLnJl
cGxhY2UoL1x1MjAyOC9nLCAnXFx1MjAyOCcpICAgLy8gUGVyIEVjbWEtMjYyIDcuMyArIDcuOC40
Ci0gICAgICAgIC5yZXBsYWNlKC9cdTIwMjkvZywgJ1xcdTIwMjknKSArICciJzsKLSAgICB9LAot
Ci0gICAgc2V0dXBIZWxwZXI6IGZ1bmN0aW9uKHBhcmFtU2l6ZSwgbmFtZSwgbWlzc2luZ1BhcmFt
cykgewotICAgICAgdmFyIHBhcmFtcyA9IFtdLAotICAgICAgICAgIHBhcmFtc0luaXQgPSB0aGlz
LnNldHVwUGFyYW1zKHBhcmFtU2l6ZSwgcGFyYW1zLCBtaXNzaW5nUGFyYW1zKTsKLSAgICAgIHZh
ciBmb3VuZEhlbHBlciA9IHRoaXMubmFtZUxvb2t1cCgnaGVscGVycycsIG5hbWUsICdoZWxwZXIn
KTsKLQotICAgICAgcmV0dXJuIHsKLSAgICAgICAgcGFyYW1zOiBwYXJhbXMsCi0gICAgICAgIHBh
cmFtc0luaXQ6IHBhcmFtc0luaXQsCi0gICAgICAgIG5hbWU6IGZvdW5kSGVscGVyLAotICAgICAg
ICBjYWxsUGFyYW1zOiBbImRlcHRoMCJdLmNvbmNhdChwYXJhbXMpLmpvaW4oIiwgIiksCi0gICAg
ICAgIGhlbHBlck1pc3NpbmdQYXJhbXM6IG1pc3NpbmdQYXJhbXMgJiYgWyJkZXB0aDAiLCB0aGlz
LnF1b3RlZFN0cmluZyhuYW1lKV0uY29uY2F0KHBhcmFtcykuam9pbigiLCAiKQotICAgICAgfTsK
LSAgICB9LAotCi0gICAgc2V0dXBPcHRpb25zOiBmdW5jdGlvbihwYXJhbVNpemUsIHBhcmFtcykg
ewotICAgICAgdmFyIG9wdGlvbnMgPSBbXSwgY29udGV4dHMgPSBbXSwgdHlwZXMgPSBbXSwgcGFy
YW0sIGludmVyc2UsIHByb2dyYW07Ci0KLSAgICAgIG9wdGlvbnMucHVzaCgiaGFzaDoiICsgdGhp
cy5wb3BTdGFjaygpKTsKLQotICAgICAgaWYgKHRoaXMub3B0aW9ucy5zdHJpbmdQYXJhbXMpIHsK
LSAgICAgICAgb3B0aW9ucy5wdXNoKCJoYXNoVHlwZXM6IiArIHRoaXMucG9wU3RhY2soKSk7Ci0g
ICAgICAgIG9wdGlvbnMucHVzaCgiaGFzaENvbnRleHRzOiIgKyB0aGlzLnBvcFN0YWNrKCkpOwot
ICAgICAgfQotCi0gICAgICBpbnZlcnNlID0gdGhpcy5wb3BTdGFjaygpOwotICAgICAgcHJvZ3Jh
bSA9IHRoaXMucG9wU3RhY2soKTsKLQotICAgICAgLy8gQXZvaWQgc2V0dGluZyBmbiBhbmQgaW52
ZXJzZSBpZiBuZWl0aGVyIGFyZSBzZXQuIFRoaXMgYWxsb3dzCi0gICAgICAvLyBoZWxwZXJzIHRv
IGRvIGEgY2hlY2sgZm9yIGBpZiAob3B0aW9ucy5mbilgCi0gICAgICBpZiAocHJvZ3JhbSB8fCBp
bnZlcnNlKSB7Ci0gICAgICAgIGlmICghcHJvZ3JhbSkgewotICAgICAgICAgIHRoaXMuY29udGV4
dC5hbGlhc2VzLnNlbGYgPSAidGhpcyI7Ci0gICAgICAgICAgcHJvZ3JhbSA9ICJzZWxmLm5vb3Ai
OwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFpbnZlcnNlKSB7Ci0gICAgICAgICAgdGhpcy5j
b250ZXh0LmFsaWFzZXMuc2VsZiA9ICJ0aGlzIjsKLSAgICAgICAgICBpbnZlcnNlID0gInNlbGYu
bm9vcCI7Ci0gICAgICAgIH0KLQotICAgICAgICBvcHRpb25zLnB1c2goImludmVyc2U6IiArIGlu
dmVyc2UpOwotICAgICAgICBvcHRpb25zLnB1c2goImZuOiIgKyBwcm9ncmFtKTsKLSAgICAgIH0K
LQotICAgICAgZm9yKHZhciBpPTA7IGk8cGFyYW1TaXplOyBpKyspIHsKLSAgICAgICAgcGFyYW0g
PSB0aGlzLnBvcFN0YWNrKCk7Ci0gICAgICAgIHBhcmFtcy5wdXNoKHBhcmFtKTsKLQotICAgICAg
ICBpZih0aGlzLm9wdGlvbnMuc3RyaW5nUGFyYW1zKSB7Ci0gICAgICAgICAgdHlwZXMucHVzaCh0
aGlzLnBvcFN0YWNrKCkpOwotICAgICAgICAgIGNvbnRleHRzLnB1c2godGhpcy5wb3BTdGFjaygp
KTsKLSAgICAgICAgfQotICAgICAgfQotCi0gICAgICBpZiAodGhpcy5vcHRpb25zLnN0cmluZ1Bh
cmFtcykgewotICAgICAgICBvcHRpb25zLnB1c2goImNvbnRleHRzOlsiICsgY29udGV4dHMuam9p
bigiLCIpICsgIl0iKTsKLSAgICAgICAgb3B0aW9ucy5wdXNoKCJ0eXBlczpbIiArIHR5cGVzLmpv
aW4oIiwiKSArICJdIik7Ci0gICAgICB9Ci0KLSAgICAgIGlmKHRoaXMub3B0aW9ucy5kYXRhKSB7
Ci0gICAgICAgIG9wdGlvbnMucHVzaCgiZGF0YTpkYXRhIik7Ci0gICAgICB9Ci0KLSAgICAgIHJl
dHVybiBvcHRpb25zOwotICAgIH0sCi0KLSAgICAvLyB0aGUgcGFyYW1zIGFuZCBjb250ZXh0cyBh
cmd1bWVudHMgYXJlIHBhc3NlZCBpbiBhcnJheXMKLSAgICAvLyB0byBmaWxsIGluCi0gICAgc2V0
dXBQYXJhbXM6IGZ1bmN0aW9uKHBhcmFtU2l6ZSwgcGFyYW1zLCB1c2VSZWdpc3RlcikgewotICAg
ICAgdmFyIG9wdGlvbnMgPSAneycgKyB0aGlzLnNldHVwT3B0aW9ucyhwYXJhbVNpemUsIHBhcmFt
cykuam9pbignLCcpICsgJ30nOwotCi0gICAgICBpZiAodXNlUmVnaXN0ZXIpIHsKLSAgICAgICAg
dGhpcy51c2VSZWdpc3Rlcignb3B0aW9ucycpOwotICAgICAgICBwYXJhbXMucHVzaCgnb3B0aW9u
cycpOwotICAgICAgICByZXR1cm4gJ29wdGlvbnM9JyArIG9wdGlvbnM7Ci0gICAgICB9IGVsc2Ug
ewotICAgICAgICBwYXJhbXMucHVzaChvcHRpb25zKTsKLSAgICAgICAgcmV0dXJuICcnOwotICAg
ICAgfQotICAgIH0KLSAgfTsKLQotICB2YXIgcmVzZXJ2ZWRXb3JkcyA9ICgKLSAgICAiYnJlYWsg
ZWxzZSBuZXcgdmFyIiArCi0gICAgIiBjYXNlIGZpbmFsbHkgcmV0dXJuIHZvaWQiICsKLSAgICAi
IGNhdGNoIGZvciBzd2l0Y2ggd2hpbGUiICsKLSAgICAiIGNvbnRpbnVlIGZ1bmN0aW9uIHRoaXMg
d2l0aCIgKwotICAgICIgZGVmYXVsdCBpZiB0aHJvdyIgKwotICAgICIgZGVsZXRlIGluIHRyeSIg
KwotICAgICIgZG8gaW5zdGFuY2VvZiB0eXBlb2YiICsKLSAgICAiIGFic3RyYWN0IGVudW0gaW50
IHNob3J0IiArCi0gICAgIiBib29sZWFuIGV4cG9ydCBpbnRlcmZhY2Ugc3RhdGljIiArCi0gICAg
IiBieXRlIGV4dGVuZHMgbG9uZyBzdXBlciIgKwotICAgICIgY2hhciBmaW5hbCBuYXRpdmUgc3lu
Y2hyb25pemVkIiArCi0gICAgIiBjbGFzcyBmbG9hdCBwYWNrYWdlIHRocm93cyIgKwotICAgICIg
Y29uc3QgZ290byBwcml2YXRlIHRyYW5zaWVudCIgKwotICAgICIgZGVidWdnZXIgaW1wbGVtZW50
cyBwcm90ZWN0ZWQgdm9sYXRpbGUiICsKLSAgICAiIGRvdWJsZSBpbXBvcnQgcHVibGljIGxldCB5
aWVsZCIKLSAgKS5zcGxpdCgiICIpOwotCi0gIHZhciBjb21waWxlcldvcmRzID0gSmF2YVNjcmlw
dENvbXBpbGVyLlJFU0VSVkVEX1dPUkRTID0ge307Ci0KLSAgZm9yKHZhciBpPTAsIGw9cmVzZXJ2
ZWRXb3Jkcy5sZW5ndGg7IGk8bDsgaSsrKSB7Ci0gICAgY29tcGlsZXJXb3Jkc1tyZXNlcnZlZFdv
cmRzW2ldXSA9IHRydWU7Ci0gIH0KLQotICBKYXZhU2NyaXB0Q29tcGlsZXIuaXNWYWxpZEphdmFT
Y3JpcHRWYXJpYWJsZU5hbWUgPSBmdW5jdGlvbihuYW1lKSB7Ci0gICAgaWYoIUphdmFTY3JpcHRD
b21waWxlci5SRVNFUlZFRF9XT1JEU1tuYW1lXSAmJiAvXlthLXpBLVpfJF1bMC05YS16QS1aXyRd
KiQvLnRlc3QobmFtZSkpIHsKLSAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4g
ZmFsc2U7Ci0gIH07Ci0KLSAgX19leHBvcnRzX18gPSBKYXZhU2NyaXB0Q29tcGlsZXI7Ci0gIHJl
dHVybiBfX2V4cG9ydHNfXzsKLX0pKF9fbW9kdWxlMl9fLCBfX21vZHVsZTVfXyk7Ci0KLS8vIGhh
bmRsZWJhcnMuanMKLXZhciBfX21vZHVsZTBfXyA9IChmdW5jdGlvbihfX2RlcGVuZGVuY3kxX18s
IF9fZGVwZW5kZW5jeTJfXywgX19kZXBlbmRlbmN5M19fLCBfX2RlcGVuZGVuY3k0X18sIF9fZGVw
ZW5kZW5jeTVfXykgewotICAidXNlIHN0cmljdCI7Ci0gIHZhciBfX2V4cG9ydHNfXzsKLSAgLypn
bG9iYWxzIEhhbmRsZWJhcnM6IHRydWUgKi8KLSAgdmFyIEhhbmRsZWJhcnMgPSBfX2RlcGVuZGVu
Y3kxX187Ci0KLSAgLy8gQ29tcGlsZXIgaW1wb3J0cwotICB2YXIgQVNUID0gX19kZXBlbmRlbmN5
Ml9fOwotICB2YXIgUGFyc2VyID0gX19kZXBlbmRlbmN5M19fLnBhcnNlcjsKLSAgdmFyIHBhcnNl
ID0gX19kZXBlbmRlbmN5M19fLnBhcnNlOwotICB2YXIgQ29tcGlsZXIgPSBfX2RlcGVuZGVuY3k0
X18uQ29tcGlsZXI7Ci0gIHZhciBjb21waWxlID0gX19kZXBlbmRlbmN5NF9fLmNvbXBpbGU7Ci0g
IHZhciBwcmVjb21waWxlID0gX19kZXBlbmRlbmN5NF9fLnByZWNvbXBpbGU7Ci0gIHZhciBKYXZh
U2NyaXB0Q29tcGlsZXIgPSBfX2RlcGVuZGVuY3k1X187Ci0KLSAgdmFyIF9jcmVhdGUgPSBIYW5k
bGViYXJzLmNyZWF0ZTsKLSAgdmFyIGNyZWF0ZSA9IGZ1bmN0aW9uKCkgewotICAgIHZhciBoYiA9
IF9jcmVhdGUoKTsKLQotICAgIGhiLmNvbXBpbGUgPSBmdW5jdGlvbihpbnB1dCwgb3B0aW9ucykg
ewotICAgICAgcmV0dXJuIGNvbXBpbGUoaW5wdXQsIG9wdGlvbnMsIGhiKTsKLSAgICB9OwotICAg
IGhiLnByZWNvbXBpbGUgPSBmdW5jdGlvbiAoaW5wdXQsIG9wdGlvbnMpIHsKLSAgICAgIHJldHVy
biBwcmVjb21waWxlKGlucHV0LCBvcHRpb25zLCBoYik7Ci0gICAgfTsKLQotICAgIGhiLkFTVCA9
IEFTVDsKLSAgICBoYi5Db21waWxlciA9IENvbXBpbGVyOwotICAgIGhiLkphdmFTY3JpcHRDb21w
aWxlciA9IEphdmFTY3JpcHRDb21waWxlcjsKLSAgICBoYi5QYXJzZXIgPSBQYXJzZXI7Ci0gICAg
aGIucGFyc2UgPSBwYXJzZTsKLQotICAgIHJldHVybiBoYjsKLSAgfTsKLQotICBIYW5kbGViYXJz
ID0gY3JlYXRlKCk7Ci0gIEhhbmRsZWJhcnMuY3JlYXRlID0gY3JlYXRlOwotCi0gIF9fZXhwb3J0
c19fID0gSGFuZGxlYmFyczsKLSAgcmV0dXJuIF9fZXhwb3J0c19fOwotfSkoX19tb2R1bGUxX18s
IF9fbW9kdWxlN19fLCBfX21vZHVsZThfXywgX19tb2R1bGUxMF9fLCBfX21vZHVsZTExX18pOwot
Ci0gIHJldHVybiBfX21vZHVsZTBfXzsKLX0pKCk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9l
bWJlcmpzL2Jvd2VyX2NvbXBvbmVudHMvanF1ZXJ5L2pxdWVyeS5qcyBiL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2Vt
YmVyanMvYm93ZXJfY29tcG9uZW50cy9qcXVlcnkvanF1ZXJ5LmpzCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwZGRjYThjYTQyNTdkYzNiN2VjMDBiZTQyOWRlNmFlMTU2ZDM2Nzk5Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2VtYmVyanMvYm93ZXJfY29tcG9uZW50cy9qcXVlcnkvanF1ZXJ5LmpzCisrKyAvZGV2L251bGwK
QEAgLTEsOTExMSArMCwwIEBACi0vKiEKLSAqIGpRdWVyeSBKYXZhU2NyaXB0IExpYnJhcnkgdjIu
MS4wCi0gKiBodHRwOi8vanF1ZXJ5LmNvbS8KLSAqCi0gKiBJbmNsdWRlcyBTaXp6bGUuanMKLSAq
IGh0dHA6Ly9zaXp6bGVqcy5jb20vCi0gKgotICogQ29weXJpZ2h0IDIwMDUsIDIwMTQgalF1ZXJ5
IEZvdW5kYXRpb24sIEluYy4gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycwotICogUmVsZWFzZWQgdW5k
ZXIgdGhlIE1JVCBsaWNlbnNlCi0gKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlCi0gKgotICog
RGF0ZTogMjAxNC0wMS0yM1QyMToxMFoKLSAqLwotCi0oZnVuY3Rpb24oIGdsb2JhbCwgZmFjdG9y
eSApIHsKLQotICAgIGlmICggdHlwZW9mIG1vZHVsZSA9PT0gIm9iamVjdCIgJiYgdHlwZW9mIG1v
ZHVsZS5leHBvcnRzID09PSAib2JqZWN0IiApIHsKLSAgICAgICAgLy8gRm9yIENvbW1vbkpTIGFu
ZCBDb21tb25KUy1saWtlIGVudmlyb25tZW50cyB3aGVyZSBhIHByb3BlciB3aW5kb3cgaXMgcHJl
c2VudCwKLSAgICAgICAgLy8gZXhlY3V0ZSB0aGUgZmFjdG9yeSBhbmQgZ2V0IGpRdWVyeQotICAg
ICAgICAvLyBGb3IgZW52aXJvbm1lbnRzIHRoYXQgZG8gbm90IGluaGVyZW50bHkgcG9zc2VzIGEg
d2luZG93IHdpdGggYSBkb2N1bWVudAotICAgICAgICAvLyAoc3VjaCBhcyBOb2RlLmpzKSwgZXhw
b3NlIGEgalF1ZXJ5LW1ha2luZyBmYWN0b3J5IGFzIG1vZHVsZS5leHBvcnRzCi0gICAgICAgIC8v
IFRoaXMgYWNjZW50dWF0ZXMgdGhlIG5lZWQgZm9yIHRoZSBjcmVhdGlvbiBvZiBhIHJlYWwgd2lu
ZG93Ci0gICAgICAgIC8vIGUuZy4gdmFyIGpRdWVyeSA9IHJlcXVpcmUoImpxdWVyeSIpKHdpbmRv
dyk7Ci0gICAgICAgIC8vIFNlZSB0aWNrZXQgIzE0NTQ5IGZvciBtb3JlIGluZm8KLSAgICAgICAg
bW9kdWxlLmV4cG9ydHMgPSBnbG9iYWwuZG9jdW1lbnQgPwotICAgICAgICAgICAgZmFjdG9yeSgg
Z2xvYmFsLCB0cnVlICkgOgotICAgICAgICAgICAgZnVuY3Rpb24oIHcgKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKCAhdy5kb2N1bWVudCApIHsKLSAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCAialF1ZXJ5IHJlcXVpcmVzIGEgd2luZG93IHdpdGggYSBkb2N1bWVudCIgKTsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhY3RvcnkoIHcgKTsKLSAg
ICAgICAgICAgIH07Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZmFjdG9yeSggZ2xvYmFsICk7Ci0g
ICAgfQotCi0vLyBQYXNzIHRoaXMgaWYgd2luZG93IGlzIG5vdCBkZWZpbmVkIHlldAotfSh0eXBl
b2Ygd2luZG93ICE9PSAidW5kZWZpbmVkIiA/IHdpbmRvdyA6IHRoaXMsIGZ1bmN0aW9uKCB3aW5k
b3csIG5vR2xvYmFsICkgewotCi0vLyBDYW4ndCBkbyB0aGlzIGJlY2F1c2Ugc2V2ZXJhbCBhcHBz
IGluY2x1ZGluZyBBU1AuTkVUIHRyYWNlCi0vLyB0aGUgc3RhY2sgdmlhIGFyZ3VtZW50cy5jYWxs
ZXIuY2FsbGVlIGFuZCBGaXJlZm94IGRpZXMgaWYKLS8vIHlvdSB0cnkgdG8gdHJhY2UgdGhyb3Vn
aCAidXNlIHN0cmljdCIgY2FsbCBjaGFpbnMuICgjMTMzMzUpCi0vLyBTdXBwb3J0OiBGaXJlZm94
IDE4KwotLy8KLQotdmFyIGFyciA9IFtdOwotCi12YXIgc2xpY2UgPSBhcnIuc2xpY2U7Ci0KLXZh
ciBjb25jYXQgPSBhcnIuY29uY2F0OwotCi12YXIgcHVzaCA9IGFyci5wdXNoOwotCi12YXIgaW5k
ZXhPZiA9IGFyci5pbmRleE9mOwotCi12YXIgY2xhc3MydHlwZSA9IHt9OwotCi12YXIgdG9TdHJp
bmcgPSBjbGFzczJ0eXBlLnRvU3RyaW5nOwotCi12YXIgaGFzT3duID0gY2xhc3MydHlwZS5oYXNP
d25Qcm9wZXJ0eTsKLQotdmFyIHRyaW0gPSAiIi50cmltOwotCi12YXIgc3VwcG9ydCA9IHt9Owot
Ci0KLQotdmFyCi0gICAgLy8gVXNlIHRoZSBjb3JyZWN0IGRvY3VtZW50IGFjY29yZGluZ2x5IHdp
dGggd2luZG93IGFyZ3VtZW50IChzYW5kYm94KQotICAgIGRvY3VtZW50ID0gd2luZG93LmRvY3Vt
ZW50LAotCi0gICAgdmVyc2lvbiA9ICIyLjEuMCIsCi0KLSAgICAvLyBEZWZpbmUgYSBsb2NhbCBj
b3B5IG9mIGpRdWVyeQotICAgIGpRdWVyeSA9IGZ1bmN0aW9uKCBzZWxlY3RvciwgY29udGV4dCAp
IHsKLSAgICAgICAgLy8gVGhlIGpRdWVyeSBvYmplY3QgaXMgYWN0dWFsbHkganVzdCB0aGUgaW5p
dCBjb25zdHJ1Y3RvciAnZW5oYW5jZWQnCi0gICAgICAgIC8vIE5lZWQgaW5pdCBpZiBqUXVlcnkg
aXMgY2FsbGVkIChqdXN0IGFsbG93IGVycm9yIHRvIGJlIHRocm93biBpZiBub3QgaW5jbHVkZWQp
Ci0gICAgICAgIHJldHVybiBuZXcgalF1ZXJ5LmZuLmluaXQoIHNlbGVjdG9yLCBjb250ZXh0ICk7
Ci0gICAgfSwKLQotICAgIC8vIE1hdGNoZXMgZGFzaGVkIHN0cmluZyBmb3IgY2FtZWxpemluZwot
ICAgIHJtc1ByZWZpeCA9IC9eLW1zLS8sCi0gICAgcmRhc2hBbHBoYSA9IC8tKFtcZGEtel0pL2dp
LAotCi0gICAgLy8gVXNlZCBieSBqUXVlcnkuY2FtZWxDYXNlIGFzIGNhbGxiYWNrIHRvIHJlcGxh
Y2UoKQotICAgIGZjYW1lbENhc2UgPSBmdW5jdGlvbiggYWxsLCBsZXR0ZXIgKSB7Ci0gICAgICAg
IHJldHVybiBsZXR0ZXIudG9VcHBlckNhc2UoKTsKLSAgICB9OwotCi1qUXVlcnkuZm4gPSBqUXVl
cnkucHJvdG90eXBlID0gewotICAgIC8vIFRoZSBjdXJyZW50IHZlcnNpb24gb2YgalF1ZXJ5IGJl
aW5nIHVzZWQKLSAgICBqcXVlcnk6IHZlcnNpb24sCi0KLSAgICBjb25zdHJ1Y3RvcjogalF1ZXJ5
LAotCi0gICAgLy8gU3RhcnQgd2l0aCBhbiBlbXB0eSBzZWxlY3RvcgotICAgIHNlbGVjdG9yOiAi
IiwKLQotICAgIC8vIFRoZSBkZWZhdWx0IGxlbmd0aCBvZiBhIGpRdWVyeSBvYmplY3QgaXMgMAot
ICAgIGxlbmd0aDogMCwKLQotICAgIHRvQXJyYXk6IGZ1bmN0aW9uKCkgewotICAgICAgICByZXR1
cm4gc2xpY2UuY2FsbCggdGhpcyApOwotICAgIH0sCi0KLSAgICAvLyBHZXQgdGhlIE50aCBlbGVt
ZW50IGluIHRoZSBtYXRjaGVkIGVsZW1lbnQgc2V0IE9SCi0gICAgLy8gR2V0IHRoZSB3aG9sZSBt
YXRjaGVkIGVsZW1lbnQgc2V0IGFzIGEgY2xlYW4gYXJyYXkKLSAgICBnZXQ6IGZ1bmN0aW9uKCBu
dW0gKSB7Ci0gICAgICAgIHJldHVybiBudW0gIT0gbnVsbCA/Ci0KLSAgICAgICAgICAgIC8vIFJl
dHVybiBhICdjbGVhbicgYXJyYXkKLSAgICAgICAgICAgICggbnVtIDwgMCA/IHRoaXNbIG51bSAr
IHRoaXMubGVuZ3RoIF0gOiB0aGlzWyBudW0gXSApIDoKLQotICAgICAgICAgICAgLy8gUmV0dXJu
IGp1c3QgdGhlIG9iamVjdAotICAgICAgICAgICAgc2xpY2UuY2FsbCggdGhpcyApOwotICAgIH0s
Ci0KLSAgICAvLyBUYWtlIGFuIGFycmF5IG9mIGVsZW1lbnRzIGFuZCBwdXNoIGl0IG9udG8gdGhl
IHN0YWNrCi0gICAgLy8gKHJldHVybmluZyB0aGUgbmV3IG1hdGNoZWQgZWxlbWVudCBzZXQpCi0g
ICAgcHVzaFN0YWNrOiBmdW5jdGlvbiggZWxlbXMgKSB7Ci0KLSAgICAgICAgLy8gQnVpbGQgYSBu
ZXcgalF1ZXJ5IG1hdGNoZWQgZWxlbWVudCBzZXQKLSAgICAgICAgdmFyIHJldCA9IGpRdWVyeS5t
ZXJnZSggdGhpcy5jb25zdHJ1Y3RvcigpLCBlbGVtcyApOwotCi0gICAgICAgIC8vIEFkZCB0aGUg
b2xkIG9iamVjdCBvbnRvIHRoZSBzdGFjayAoYXMgYSByZWZlcmVuY2UpCi0gICAgICAgIHJldC5w
cmV2T2JqZWN0ID0gdGhpczsKLSAgICAgICAgcmV0LmNvbnRleHQgPSB0aGlzLmNvbnRleHQ7Ci0K
LSAgICAgICAgLy8gUmV0dXJuIHRoZSBuZXdseS1mb3JtZWQgZWxlbWVudCBzZXQKLSAgICAgICAg
cmV0dXJuIHJldDsKLSAgICB9LAotCi0gICAgLy8gRXhlY3V0ZSBhIGNhbGxiYWNrIGZvciBldmVy
eSBlbGVtZW50IGluIHRoZSBtYXRjaGVkIHNldC4KLSAgICAvLyAoWW91IGNhbiBzZWVkIHRoZSBh
cmd1bWVudHMgd2l0aCBhbiBhcnJheSBvZiBhcmdzLCBidXQgdGhpcyBpcwotICAgIC8vIG9ubHkg
dXNlZCBpbnRlcm5hbGx5LikKLSAgICBlYWNoOiBmdW5jdGlvbiggY2FsbGJhY2ssIGFyZ3MgKSB7
Ci0gICAgICAgIHJldHVybiBqUXVlcnkuZWFjaCggdGhpcywgY2FsbGJhY2ssIGFyZ3MgKTsKLSAg
ICB9LAotCi0gICAgbWFwOiBmdW5jdGlvbiggY2FsbGJhY2sgKSB7Ci0gICAgICAgIHJldHVybiB0
aGlzLnB1c2hTdGFjayggalF1ZXJ5Lm1hcCh0aGlzLCBmdW5jdGlvbiggZWxlbSwgaSApIHsKLSAg
ICAgICAgICAgIHJldHVybiBjYWxsYmFjay5jYWxsKCBlbGVtLCBpLCBlbGVtICk7Ci0gICAgICAg
IH0pKTsKLSAgICB9LAotCi0gICAgc2xpY2U6IGZ1bmN0aW9uKCkgewotICAgICAgICByZXR1cm4g
dGhpcy5wdXNoU3RhY2soIHNsaWNlLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKSApOwotICAgIH0s
Ci0KLSAgICBmaXJzdDogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmVxKCAwICk7
Ci0gICAgfSwKLQotICAgIGxhc3Q6IGZ1bmN0aW9uKCkgewotICAgICAgICByZXR1cm4gdGhpcy5l
cSggLTEgKTsKLSAgICB9LAotCi0gICAgZXE6IGZ1bmN0aW9uKCBpICkgewotICAgICAgICB2YXIg
bGVuID0gdGhpcy5sZW5ndGgsCi0gICAgICAgICAgICBqID0gK2kgKyAoIGkgPCAwID8gbGVuIDog
MCApOwotICAgICAgICByZXR1cm4gdGhpcy5wdXNoU3RhY2soIGogPj0gMCAmJiBqIDwgbGVuID8g
WyB0aGlzW2pdIF0gOiBbXSApOwotICAgIH0sCi0KLSAgICBlbmQ6IGZ1bmN0aW9uKCkgewotICAg
ICAgICByZXR1cm4gdGhpcy5wcmV2T2JqZWN0IHx8IHRoaXMuY29uc3RydWN0b3IobnVsbCk7Ci0g
ICAgfSwKLQotICAgIC8vIEZvciBpbnRlcm5hbCB1c2Ugb25seS4KLSAgICAvLyBCZWhhdmVzIGxp
a2UgYW4gQXJyYXkncyBtZXRob2QsIG5vdCBsaWtlIGEgalF1ZXJ5IG1ldGhvZC4KLSAgICBwdXNo
OiBwdXNoLAotICAgIHNvcnQ6IGFyci5zb3J0LAotICAgIHNwbGljZTogYXJyLnNwbGljZQotfTsK
LQotalF1ZXJ5LmV4dGVuZCA9IGpRdWVyeS5mbi5leHRlbmQgPSBmdW5jdGlvbigpIHsKLSAgICB2
YXIgb3B0aW9ucywgbmFtZSwgc3JjLCBjb3B5LCBjb3B5SXNBcnJheSwgY2xvbmUsCi0gICAgICAg
IHRhcmdldCA9IGFyZ3VtZW50c1swXSB8fCB7fSwKLSAgICAgICAgaSA9IDEsCi0gICAgICAgIGxl
bmd0aCA9IGFyZ3VtZW50cy5sZW5ndGgsCi0gICAgICAgIGRlZXAgPSBmYWxzZTsKLQotICAgIC8v
IEhhbmRsZSBhIGRlZXAgY29weSBzaXR1YXRpb24KLSAgICBpZiAoIHR5cGVvZiB0YXJnZXQgPT09
ICJib29sZWFuIiApIHsKLSAgICAgICAgZGVlcCA9IHRhcmdldDsKLQotICAgICAgICAvLyBza2lw
IHRoZSBib29sZWFuIGFuZCB0aGUgdGFyZ2V0Ci0gICAgICAgIHRhcmdldCA9IGFyZ3VtZW50c1sg
aSBdIHx8IHt9OwotICAgICAgICBpKys7Ci0gICAgfQotCi0gICAgLy8gSGFuZGxlIGNhc2Ugd2hl
biB0YXJnZXQgaXMgYSBzdHJpbmcgb3Igc29tZXRoaW5nIChwb3NzaWJsZSBpbiBkZWVwIGNvcHkp
Ci0gICAgaWYgKCB0eXBlb2YgdGFyZ2V0ICE9PSAib2JqZWN0IiAmJiAhalF1ZXJ5LmlzRnVuY3Rp
b24odGFyZ2V0KSApIHsKLSAgICAgICAgdGFyZ2V0ID0ge307Ci0gICAgfQotCi0gICAgLy8gZXh0
ZW5kIGpRdWVyeSBpdHNlbGYgaWYgb25seSBvbmUgYXJndW1lbnQgaXMgcGFzc2VkCi0gICAgaWYg
KCBpID09PSBsZW5ndGggKSB7Ci0gICAgICAgIHRhcmdldCA9IHRoaXM7Ci0gICAgICAgIGktLTsK
LSAgICB9Ci0KLSAgICBmb3IgKCA7IGkgPCBsZW5ndGg7IGkrKyApIHsKLSAgICAgICAgLy8gT25s
eSBkZWFsIHdpdGggbm9uLW51bGwvdW5kZWZpbmVkIHZhbHVlcwotICAgICAgICBpZiAoIChvcHRp
b25zID0gYXJndW1lbnRzWyBpIF0pICE9IG51bGwgKSB7Ci0gICAgICAgICAgICAvLyBFeHRlbmQg
dGhlIGJhc2Ugb2JqZWN0Ci0gICAgICAgICAgICBmb3IgKCBuYW1lIGluIG9wdGlvbnMgKSB7Ci0g
ICAgICAgICAgICAgICAgc3JjID0gdGFyZ2V0WyBuYW1lIF07Ci0gICAgICAgICAgICAgICAgY29w
eSA9IG9wdGlvbnNbIG5hbWUgXTsKLQotICAgICAgICAgICAgICAgIC8vIFByZXZlbnQgbmV2ZXIt
ZW5kaW5nIGxvb3AKLSAgICAgICAgICAgICAgICBpZiAoIHRhcmdldCA9PT0gY29weSApIHsKLSAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICAgICAgLy8gUmVjdXJzZSBpZiB3ZSdyZSBtZXJnaW5nIHBsYWluIG9iamVjdHMgb3IgYXJy
YXlzCi0gICAgICAgICAgICAgICAgaWYgKCBkZWVwICYmIGNvcHkgJiYgKCBqUXVlcnkuaXNQbGFp
bk9iamVjdChjb3B5KSB8fCAoY29weUlzQXJyYXkgPSBqUXVlcnkuaXNBcnJheShjb3B5KSkgKSAp
IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCBjb3B5SXNBcnJheSApIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGNvcHlJc0FycmF5ID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBjbG9uZSA9IHNyYyAmJiBqUXVlcnkuaXNBcnJheShzcmMpID8gc3JjIDogW107Ci0KLSAgICAg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNsb25lID0g
c3JjICYmIGpRdWVyeS5pc1BsYWluT2JqZWN0KHNyYykgPyBzcmMgOiB7fTsKLSAgICAgICAgICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIC8vIE5ldmVyIG1vdmUgb3JpZ2luYWwg
b2JqZWN0cywgY2xvbmUgdGhlbQotICAgICAgICAgICAgICAgICAgICB0YXJnZXRbIG5hbWUgXSA9
IGpRdWVyeS5leHRlbmQoIGRlZXAsIGNsb25lLCBjb3B5ICk7Ci0KLSAgICAgICAgICAgICAgICAv
LyBEb24ndCBicmluZyBpbiB1bmRlZmluZWQgdmFsdWVzCi0gICAgICAgICAgICAgICAgfSBlbHNl
IGlmICggY29weSAhPT0gdW5kZWZpbmVkICkgewotICAgICAgICAgICAgICAgICAgICB0YXJnZXRb
IG5hbWUgXSA9IGNvcHk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0gICAgfQotCi0gICAgLy8gUmV0dXJuIHRoZSBtb2RpZmllZCBvYmplY3QKLSAgICByZXR1
cm4gdGFyZ2V0OwotfTsKLQotalF1ZXJ5LmV4dGVuZCh7Ci0gICAgLy8gVW5pcXVlIGZvciBlYWNo
IGNvcHkgb2YgalF1ZXJ5IG9uIHRoZSBwYWdlCi0gICAgZXhwYW5kbzogImpRdWVyeSIgKyAoIHZl
cnNpb24gKyBNYXRoLnJhbmRvbSgpICkucmVwbGFjZSggL1xEL2csICIiICksCi0KLSAgICAvLyBB
c3N1bWUgalF1ZXJ5IGlzIHJlYWR5IHdpdGhvdXQgdGhlIHJlYWR5IG1vZHVsZQotICAgIGlzUmVh
ZHk6IHRydWUsCi0KLSAgICBlcnJvcjogZnVuY3Rpb24oIG1zZyApIHsKLSAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCBtc2cgKTsKLSAgICB9LAotCi0gICAgbm9vcDogZnVuY3Rpb24oKSB7fSwKLQot
ICAgIC8vIFNlZSB0ZXN0L3VuaXQvY29yZS5qcyBmb3IgZGV0YWlscyBjb25jZXJuaW5nIGlzRnVu
Y3Rpb24uCi0gICAgLy8gU2luY2UgdmVyc2lvbiAxLjMsIERPTSBtZXRob2RzIGFuZCBmdW5jdGlv
bnMgbGlrZSBhbGVydAotICAgIC8vIGFyZW4ndCBzdXBwb3J0ZWQuIFRoZXkgcmV0dXJuIGZhbHNl
IG9uIElFICgjMjk2OCkuCi0gICAgaXNGdW5jdGlvbjogZnVuY3Rpb24oIG9iaiApIHsKLSAgICAg
ICAgcmV0dXJuIGpRdWVyeS50eXBlKG9iaikgPT09ICJmdW5jdGlvbiI7Ci0gICAgfSwKLQotICAg
IGlzQXJyYXk6IEFycmF5LmlzQXJyYXksCi0KLSAgICBpc1dpbmRvdzogZnVuY3Rpb24oIG9iaiAp
IHsKLSAgICAgICAgcmV0dXJuIG9iaiAhPSBudWxsICYmIG9iaiA9PT0gb2JqLndpbmRvdzsKLSAg
ICB9LAotCi0gICAgaXNOdW1lcmljOiBmdW5jdGlvbiggb2JqICkgewotICAgICAgICAvLyBwYXJz
ZUZsb2F0IE5hTnMgbnVtZXJpYy1jYXN0IGZhbHNlIHBvc2l0aXZlcyAobnVsbHx0cnVlfGZhbHNl
fCIiKQotICAgICAgICAvLyAuLi5idXQgbWlzaW50ZXJwcmV0cyBsZWFkaW5nLW51bWJlciBzdHJp
bmdzLCBwYXJ0aWN1bGFybHkgaGV4IGxpdGVyYWxzICgiMHguLi4iKQotICAgICAgICAvLyBzdWJ0
cmFjdGlvbiBmb3JjZXMgaW5maW5pdGllcyB0byBOYU4KLSAgICAgICAgcmV0dXJuIG9iaiAtIHBh
cnNlRmxvYXQoIG9iaiApID49IDA7Ci0gICAgfSwKLQotICAgIGlzUGxhaW5PYmplY3Q6IGZ1bmN0
aW9uKCBvYmogKSB7Ci0gICAgICAgIC8vIE5vdCBwbGFpbiBvYmplY3RzOgotICAgICAgICAvLyAt
IEFueSBvYmplY3Qgb3IgdmFsdWUgd2hvc2UgaW50ZXJuYWwgW1tDbGFzc11dIHByb3BlcnR5IGlz
IG5vdCAiW29iamVjdCBPYmplY3RdIgotICAgICAgICAvLyAtIERPTSBub2RlcwotICAgICAgICAv
LyAtIHdpbmRvdwotICAgICAgICBpZiAoIGpRdWVyeS50eXBlKCBvYmogKSAhPT0gIm9iamVjdCIg
fHwgb2JqLm5vZGVUeXBlIHx8IGpRdWVyeS5pc1dpbmRvdyggb2JqICkgKSB7Ci0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBTdXBwb3J0OiBGaXJlZm94
IDwyMAotICAgICAgICAvLyBUaGUgdHJ5L2NhdGNoIHN1cHByZXNzZXMgZXhjZXB0aW9ucyB0aHJv
d24gd2hlbiBhdHRlbXB0aW5nIHRvIGFjY2VzcwotICAgICAgICAvLyB0aGUgImNvbnN0cnVjdG9y
IiBwcm9wZXJ0eSBvZiBjZXJ0YWluIGhvc3Qgb2JqZWN0cywgaWUuIHx3aW5kb3cubG9jYXRpb258
Ci0gICAgICAgIC8vIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lk
PTgxNDYyMgotICAgICAgICB0cnkgewotICAgICAgICAgICAgaWYgKCBvYmouY29uc3RydWN0b3Ig
JiYKLSAgICAgICAgICAgICAgICAgICAgIWhhc093bi5jYWxsKCBvYmouY29uc3RydWN0b3IucHJv
dG90eXBlLCAiaXNQcm90b3R5cGVPZiIgKSApIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gY2F0Y2ggKCBlICkgewotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gSWYgdGhlIGZ1bmN0aW9uIGhh
c24ndCByZXR1cm5lZCBhbHJlYWR5LCB3ZSdyZSBjb25maWRlbnQgdGhhdAotICAgICAgICAvLyB8
b2JqfCBpcyBhIHBsYWluIG9iamVjdCwgY3JlYXRlZCBieSB7fSBvciBjb25zdHJ1Y3RlZCB3aXRo
IG5ldyBPYmplY3QKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSwKLQotICAgIGlzRW1wdHlP
YmplY3Q6IGZ1bmN0aW9uKCBvYmogKSB7Ci0gICAgICAgIHZhciBuYW1lOwotICAgICAgICBmb3Ig
KCBuYW1lIGluIG9iaiApIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9LAotCi0gICAgdHlwZTogZnVuY3Rpb24oIG9iaiAp
IHsKLSAgICAgICAgaWYgKCBvYmogPT0gbnVsbCApIHsKLSAgICAgICAgICAgIHJldHVybiBvYmog
KyAiIjsKLSAgICAgICAgfQotICAgICAgICAvLyBTdXBwb3J0OiBBbmRyb2lkIDwgNC4wLCBpT1Mg
PCA2IChmdW5jdGlvbmlzaCBSZWdFeHApCi0gICAgICAgIHJldHVybiB0eXBlb2Ygb2JqID09PSAi
b2JqZWN0IiB8fCB0eXBlb2Ygb2JqID09PSAiZnVuY3Rpb24iID8KLSAgICAgICAgICAgIGNsYXNz
MnR5cGVbIHRvU3RyaW5nLmNhbGwob2JqKSBdIHx8ICJvYmplY3QiIDoKLSAgICAgICAgICAgIHR5
cGVvZiBvYmo7Ci0gICAgfSwKLQotICAgIC8vIEV2YWx1YXRlcyBhIHNjcmlwdCBpbiBhIGdsb2Jh
bCBjb250ZXh0Ci0gICAgZ2xvYmFsRXZhbDogZnVuY3Rpb24oIGNvZGUgKSB7Ci0gICAgICAgIHZh
ciBzY3JpcHQsCi0gICAgICAgICAgICBpbmRpcmVjdCA9IGV2YWw7Ci0KLSAgICAgICAgY29kZSA9
IGpRdWVyeS50cmltKCBjb2RlICk7Ci0KLSAgICAgICAgaWYgKCBjb2RlICkgewotICAgICAgICAg
ICAgLy8gSWYgdGhlIGNvZGUgaW5jbHVkZXMgYSB2YWxpZCwgcHJvbG9ndWUgcG9zaXRpb24KLSAg
ICAgICAgICAgIC8vIHN0cmljdCBtb2RlIHByYWdtYSwgZXhlY3V0ZSBjb2RlIGJ5IGluamVjdGlu
ZyBhCi0gICAgICAgICAgICAvLyBzY3JpcHQgdGFnIGludG8gdGhlIGRvY3VtZW50LgotICAgICAg
ICAgICAgaWYgKCBjb2RlLmluZGV4T2YoInVzZSBzdHJpY3QiKSA9PT0gMSApIHsKLSAgICAgICAg
ICAgICAgICBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTsKLSAgICAg
ICAgICAgICAgICBzY3JpcHQudGV4dCA9IGNvZGU7Ci0gICAgICAgICAgICAgICAgZG9jdW1lbnQu
aGVhZC5hcHBlbmRDaGlsZCggc2NyaXB0ICkucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCggc2NyaXB0
ICk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCBhdm9p
ZCB0aGUgRE9NIG5vZGUgY3JlYXRpb24sIGluc2VydGlvbgotICAgICAgICAgICAgLy8gYW5kIHJl
bW92YWwgYnkgdXNpbmcgYW4gaW5kaXJlY3QgZ2xvYmFsIGV2YWwKLSAgICAgICAgICAgICAgICBp
bmRpcmVjdCggY29kZSApOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfSwKLQotICAg
IC8vIENvbnZlcnQgZGFzaGVkIHRvIGNhbWVsQ2FzZTsgdXNlZCBieSB0aGUgY3NzIGFuZCBkYXRh
IG1vZHVsZXMKLSAgICAvLyBNaWNyb3NvZnQgZm9yZ290IHRvIGh1bXAgdGhlaXIgdmVuZG9yIHBy
ZWZpeCAoIzk1NzIpCi0gICAgY2FtZWxDYXNlOiBmdW5jdGlvbiggc3RyaW5nICkgewotICAgICAg
ICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoIHJtc1ByZWZpeCwgIm1zLSIgKS5yZXBsYWNlKCByZGFz
aEFscGhhLCBmY2FtZWxDYXNlICk7Ci0gICAgfSwKLQotICAgIG5vZGVOYW1lOiBmdW5jdGlvbigg
ZWxlbSwgbmFtZSApIHsKLSAgICAgICAgcmV0dXJuIGVsZW0ubm9kZU5hbWUgJiYgZWxlbS5ub2Rl
TmFtZS50b0xvd2VyQ2FzZSgpID09PSBuYW1lLnRvTG93ZXJDYXNlKCk7Ci0gICAgfSwKLQotICAg
IC8vIGFyZ3MgaXMgZm9yIGludGVybmFsIHVzYWdlIG9ubHkKLSAgICBlYWNoOiBmdW5jdGlvbigg
b2JqLCBjYWxsYmFjaywgYXJncyApIHsKLSAgICAgICAgdmFyIHZhbHVlLAotICAgICAgICAgICAg
aSA9IDAsCi0gICAgICAgICAgICBsZW5ndGggPSBvYmoubGVuZ3RoLAotICAgICAgICAgICAgaXNB
cnJheSA9IGlzQXJyYXlsaWtlKCBvYmogKTsKLQotICAgICAgICBpZiAoIGFyZ3MgKSB7Ci0gICAg
ICAgICAgICBpZiAoIGlzQXJyYXkgKSB7Ci0gICAgICAgICAgICAgICAgZm9yICggOyBpIDwgbGVu
Z3RoOyBpKysgKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gY2FsbGJhY2suYXBwbHko
IG9ialsgaSBdLCBhcmdzICk7Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKCB2YWx1ZSA9PT0g
ZmFsc2UgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgZm9yICggaSBpbiBvYmogKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhbHVlID0g
Y2FsbGJhY2suYXBwbHkoIG9ialsgaSBdLCBhcmdzICk7Ci0KLSAgICAgICAgICAgICAgICAgICAg
aWYgKCB2YWx1ZSA9PT0gZmFsc2UgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0K
LQotICAgICAgICAvLyBBIHNwZWNpYWwsIGZhc3QsIGNhc2UgZm9yIHRoZSBtb3N0IGNvbW1vbiB1
c2Ugb2YgZWFjaAotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKCBpc0FycmF5ICkg
ewotICAgICAgICAgICAgICAgIGZvciAoIDsgaSA8IGxlbmd0aDsgaSsrICkgewotICAgICAgICAg
ICAgICAgICAgICB2YWx1ZSA9IGNhbGxiYWNrLmNhbGwoIG9ialsgaSBdLCBpLCBvYmpbIGkgXSAp
OwotCi0gICAgICAgICAgICAgICAgICAgIGlmICggdmFsdWUgPT09IGZhbHNlICkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGZvciAoIGkg
aW4gb2JqICkgewotICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGNhbGxiYWNrLmNhbGwoIG9i
alsgaSBdLCBpLCBvYmpbIGkgXSApOwotCi0gICAgICAgICAgICAgICAgICAgIGlmICggdmFsdWUg
PT09IGZhbHNlICkgewotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LQotICAgICAgICByZXR1cm4gb2JqOwotICAgIH0sCi0KLSAgICB0cmltOiBmdW5jdGlvbiggdGV4
dCApIHsKLSAgICAgICAgcmV0dXJuIHRleHQgPT0gbnVsbCA/ICIiIDogdHJpbS5jYWxsKCB0ZXh0
ICk7Ci0gICAgfSwKLQotICAgIC8vIHJlc3VsdHMgaXMgZm9yIGludGVybmFsIHVzYWdlIG9ubHkK
LSAgICBtYWtlQXJyYXk6IGZ1bmN0aW9uKCBhcnIsIHJlc3VsdHMgKSB7Ci0gICAgICAgIHZhciBy
ZXQgPSByZXN1bHRzIHx8IFtdOwotCi0gICAgICAgIGlmICggYXJyICE9IG51bGwgKSB7Ci0gICAg
ICAgICAgICBpZiAoIGlzQXJyYXlsaWtlKCBPYmplY3QoYXJyKSApICkgewotICAgICAgICAgICAg
ICAgIGpRdWVyeS5tZXJnZSggcmV0LAotICAgICAgICAgICAgICAgICAgICB0eXBlb2YgYXJyID09
PSAic3RyaW5nIiA/Ci0gICAgICAgICAgICAgICAgICAgIFsgYXJyIF0gOiBhcnIKLSAgICAgICAg
ICAgICAgICApOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBwdXNoLmNh
bGwoIHJldCwgYXJyICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1
cm4gcmV0OwotICAgIH0sCi0KLSAgICBpbkFycmF5OiBmdW5jdGlvbiggZWxlbSwgYXJyLCBpICkg
ewotICAgICAgICByZXR1cm4gYXJyID09IG51bGwgPyAtMSA6IGluZGV4T2YuY2FsbCggYXJyLCBl
bGVtLCBpICk7Ci0gICAgfSwKLQotICAgIG1lcmdlOiBmdW5jdGlvbiggZmlyc3QsIHNlY29uZCAp
IHsKLSAgICAgICAgdmFyIGxlbiA9ICtzZWNvbmQubGVuZ3RoLAotICAgICAgICAgICAgaiA9IDAs
Ci0gICAgICAgICAgICBpID0gZmlyc3QubGVuZ3RoOwotCi0gICAgICAgIGZvciAoIDsgaiA8IGxl
bjsgaisrICkgewotICAgICAgICAgICAgZmlyc3RbIGkrKyBdID0gc2Vjb25kWyBqIF07Ci0gICAg
ICAgIH0KLQotICAgICAgICBmaXJzdC5sZW5ndGggPSBpOwotCi0gICAgICAgIHJldHVybiBmaXJz
dDsKLSAgICB9LAotCi0gICAgZ3JlcDogZnVuY3Rpb24oIGVsZW1zLCBjYWxsYmFjaywgaW52ZXJ0
ICkgewotICAgICAgICB2YXIgY2FsbGJhY2tJbnZlcnNlLAotICAgICAgICAgICAgbWF0Y2hlcyA9
IFtdLAotICAgICAgICAgICAgaSA9IDAsCi0gICAgICAgICAgICBsZW5ndGggPSBlbGVtcy5sZW5n
dGgsCi0gICAgICAgICAgICBjYWxsYmFja0V4cGVjdCA9ICFpbnZlcnQ7Ci0KLSAgICAgICAgLy8g
R28gdGhyb3VnaCB0aGUgYXJyYXksIG9ubHkgc2F2aW5nIHRoZSBpdGVtcwotICAgICAgICAvLyB0
aGF0IHBhc3MgdGhlIHZhbGlkYXRvciBmdW5jdGlvbgotICAgICAgICBmb3IgKCA7IGkgPCBsZW5n
dGg7IGkrKyApIHsKLSAgICAgICAgICAgIGNhbGxiYWNrSW52ZXJzZSA9ICFjYWxsYmFjayggZWxl
bXNbIGkgXSwgaSApOwotICAgICAgICAgICAgaWYgKCBjYWxsYmFja0ludmVyc2UgIT09IGNhbGxi
YWNrRXhwZWN0ICkgewotICAgICAgICAgICAgICAgIG1hdGNoZXMucHVzaCggZWxlbXNbIGkgXSAp
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIG1hdGNoZXM7Ci0g
ICAgfSwKLQotICAgIC8vIGFyZyBpcyBmb3IgaW50ZXJuYWwgdXNhZ2Ugb25seQotICAgIG1hcDog
ZnVuY3Rpb24oIGVsZW1zLCBjYWxsYmFjaywgYXJnICkgewotICAgICAgICB2YXIgdmFsdWUsCi0g
ICAgICAgICAgICBpID0gMCwKLSAgICAgICAgICAgIGxlbmd0aCA9IGVsZW1zLmxlbmd0aCwKLSAg
ICAgICAgICAgIGlzQXJyYXkgPSBpc0FycmF5bGlrZSggZWxlbXMgKSwKLSAgICAgICAgICAgIHJl
dCA9IFtdOwotCi0gICAgICAgIC8vIEdvIHRocm91Z2ggdGhlIGFycmF5LCB0cmFuc2xhdGluZyBl
YWNoIG9mIHRoZSBpdGVtcyB0byB0aGVpciBuZXcgdmFsdWVzCi0gICAgICAgIGlmICggaXNBcnJh
eSApIHsKLSAgICAgICAgICAgIGZvciAoIDsgaSA8IGxlbmd0aDsgaSsrICkgewotICAgICAgICAg
ICAgICAgIHZhbHVlID0gY2FsbGJhY2soIGVsZW1zWyBpIF0sIGksIGFyZyApOwotCi0gICAgICAg
ICAgICAgICAgaWYgKCB2YWx1ZSAhPSBudWxsICkgewotICAgICAgICAgICAgICAgICAgICByZXQu
cHVzaCggdmFsdWUgKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgLy8gR28gdGhyb3VnaCBldmVyeSBrZXkgb24gdGhlIG9iamVjdCwKLSAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIGZvciAoIGkgaW4gZWxlbXMgKSB7Ci0gICAgICAgICAgICAgICAgdmFs
dWUgPSBjYWxsYmFjayggZWxlbXNbIGkgXSwgaSwgYXJnICk7Ci0KLSAgICAgICAgICAgICAgICBp
ZiAoIHZhbHVlICE9IG51bGwgKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldC5wdXNoKCB2YWx1
ZSApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAg
ICAgIC8vIEZsYXR0ZW4gYW55IG5lc3RlZCBhcnJheXMKLSAgICAgICAgcmV0dXJuIGNvbmNhdC5h
cHBseSggW10sIHJldCApOwotICAgIH0sCi0KLSAgICAvLyBBIGdsb2JhbCBHVUlEIGNvdW50ZXIg
Zm9yIG9iamVjdHMKLSAgICBndWlkOiAxLAotCi0gICAgLy8gQmluZCBhIGZ1bmN0aW9uIHRvIGEg
Y29udGV4dCwgb3B0aW9uYWxseSBwYXJ0aWFsbHkgYXBwbHlpbmcgYW55Ci0gICAgLy8gYXJndW1l
bnRzLgotICAgIHByb3h5OiBmdW5jdGlvbiggZm4sIGNvbnRleHQgKSB7Ci0gICAgICAgIHZhciB0
bXAsIGFyZ3MsIHByb3h5OwotCi0gICAgICAgIGlmICggdHlwZW9mIGNvbnRleHQgPT09ICJzdHJp
bmciICkgewotICAgICAgICAgICAgdG1wID0gZm5bIGNvbnRleHQgXTsKLSAgICAgICAgICAgIGNv
bnRleHQgPSBmbjsKLSAgICAgICAgICAgIGZuID0gdG1wOwotICAgICAgICB9Ci0KLSAgICAgICAg
Ly8gUXVpY2sgY2hlY2sgdG8gZGV0ZXJtaW5lIGlmIHRhcmdldCBpcyBjYWxsYWJsZSwgaW4gdGhl
IHNwZWMKLSAgICAgICAgLy8gdGhpcyB0aHJvd3MgYSBUeXBlRXJyb3IsIGJ1dCB3ZSB3aWxsIGp1
c3QgcmV0dXJuIHVuZGVmaW5lZC4KLSAgICAgICAgaWYgKCAhalF1ZXJ5LmlzRnVuY3Rpb24oIGZu
ICkgKSB7Ci0gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOwotICAgICAgICB9Ci0KLSAgICAg
ICAgLy8gU2ltdWxhdGVkIGJpbmQKLSAgICAgICAgYXJncyA9IHNsaWNlLmNhbGwoIGFyZ3VtZW50
cywgMiApOwotICAgICAgICBwcm94eSA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgcmV0dXJu
IGZuLmFwcGx5KCBjb250ZXh0IHx8IHRoaXMsIGFyZ3MuY29uY2F0KCBzbGljZS5jYWxsKCBhcmd1
bWVudHMgKSApICk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgLy8gU2V0IHRoZSBndWlkIG9mIHVu
aXF1ZSBoYW5kbGVyIHRvIHRoZSBzYW1lIG9mIG9yaWdpbmFsIGhhbmRsZXIsIHNvIGl0IGNhbiBi
ZSByZW1vdmVkCi0gICAgICAgIHByb3h5Lmd1aWQgPSBmbi5ndWlkID0gZm4uZ3VpZCB8fCBqUXVl
cnkuZ3VpZCsrOwotCi0gICAgICAgIHJldHVybiBwcm94eTsKLSAgICB9LAotCi0gICAgbm93OiBE
YXRlLm5vdywKLQotICAgIC8vIGpRdWVyeS5zdXBwb3J0IGlzIG5vdCB1c2VkIGluIENvcmUgYnV0
IG90aGVyIHByb2plY3RzIGF0dGFjaCB0aGVpcgotICAgIC8vIHByb3BlcnRpZXMgdG8gaXQgc28g
aXQgbmVlZHMgdG8gZXhpc3QuCi0gICAgc3VwcG9ydDogc3VwcG9ydAotfSk7Ci0KLS8vIFBvcHVs
YXRlIHRoZSBjbGFzczJ0eXBlIG1hcAotalF1ZXJ5LmVhY2goIkJvb2xlYW4gTnVtYmVyIFN0cmlu
ZyBGdW5jdGlvbiBBcnJheSBEYXRlIFJlZ0V4cCBPYmplY3QgRXJyb3IiLnNwbGl0KCIgIiksIGZ1
bmN0aW9uKGksIG5hbWUpIHsKLSAgICBjbGFzczJ0eXBlWyAiW29iamVjdCAiICsgbmFtZSArICJd
IiBdID0gbmFtZS50b0xvd2VyQ2FzZSgpOwotfSk7Ci0KLWZ1bmN0aW9uIGlzQXJyYXlsaWtlKCBv
YmogKSB7Ci0gICAgdmFyIGxlbmd0aCA9IG9iai5sZW5ndGgsCi0gICAgICAgIHR5cGUgPSBqUXVl
cnkudHlwZSggb2JqICk7Ci0KLSAgICBpZiAoIHR5cGUgPT09ICJmdW5jdGlvbiIgfHwgalF1ZXJ5
LmlzV2luZG93KCBvYmogKSApIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAg
IGlmICggb2JqLm5vZGVUeXBlID09PSAxICYmIGxlbmd0aCApIHsKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIHR5cGUgPT09ICJhcnJheSIgfHwgbGVuZ3RoID09PSAw
IHx8Ci0gICAgICAgIHR5cGVvZiBsZW5ndGggPT09ICJudW1iZXIiICYmIGxlbmd0aCA+IDAgJiYg
KCBsZW5ndGggLSAxICkgaW4gb2JqOwotfQotdmFyIFNpenpsZSA9Ci0vKiEKLSAqIFNpenpsZSBD
U1MgU2VsZWN0b3IgRW5naW5lIHYxLjEwLjE2Ci0gKiBodHRwOi8vc2l6emxlanMuY29tLwotICoK
LSAqIENvcHlyaWdodCAyMDEzIGpRdWVyeSBGb3VuZGF0aW9uLCBJbmMuIGFuZCBvdGhlciBjb250
cmlidXRvcnMKLSAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZQotICogaHR0cDovL2px
dWVyeS5vcmcvbGljZW5zZQotICoKLSAqIERhdGU6IDIwMTQtMDEtMTMKLSAqLwotKGZ1bmN0aW9u
KCB3aW5kb3cgKSB7Ci0KLXZhciBpLAotICAgIHN1cHBvcnQsCi0gICAgRXhwciwKLSAgICBnZXRU
ZXh0LAotICAgIGlzWE1MLAotICAgIGNvbXBpbGUsCi0gICAgb3V0ZXJtb3N0Q29udGV4dCwKLSAg
ICBzb3J0SW5wdXQsCi0gICAgaGFzRHVwbGljYXRlLAotCi0gICAgLy8gTG9jYWwgZG9jdW1lbnQg
dmFycwotICAgIHNldERvY3VtZW50LAotICAgIGRvY3VtZW50LAotICAgIGRvY0VsZW0sCi0gICAg
ZG9jdW1lbnRJc0hUTUwsCi0gICAgcmJ1Z2d5UVNBLAotICAgIHJidWdneU1hdGNoZXMsCi0gICAg
bWF0Y2hlcywKLSAgICBjb250YWlucywKLQotICAgIC8vIEluc3RhbmNlLXNwZWNpZmljIGRhdGEK
LSAgICBleHBhbmRvID0gInNpenpsZSIgKyAtKG5ldyBEYXRlKCkpLAotICAgIHByZWZlcnJlZERv
YyA9IHdpbmRvdy5kb2N1bWVudCwKLSAgICBkaXJydW5zID0gMCwKLSAgICBkb25lID0gMCwKLSAg
ICBjbGFzc0NhY2hlID0gY3JlYXRlQ2FjaGUoKSwKLSAgICB0b2tlbkNhY2hlID0gY3JlYXRlQ2Fj
aGUoKSwKLSAgICBjb21waWxlckNhY2hlID0gY3JlYXRlQ2FjaGUoKSwKLSAgICBzb3J0T3JkZXIg
PSBmdW5jdGlvbiggYSwgYiApIHsKLSAgICAgICAgaWYgKCBhID09PSBiICkgewotICAgICAgICAg
ICAgaGFzRHVwbGljYXRlID0gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gMDsKLSAg
ICB9LAotCi0gICAgLy8gR2VuZXJhbC1wdXJwb3NlIGNvbnN0YW50cwotICAgIHN0cnVuZGVmaW5l
ZCA9IHR5cGVvZiB1bmRlZmluZWQsCi0gICAgTUFYX05FR0FUSVZFID0gMSA8PCAzMSwKLQotICAg
IC8vIEluc3RhbmNlIG1ldGhvZHMKLSAgICBoYXNPd24gPSAoe30pLmhhc093blByb3BlcnR5LAot
ICAgIGFyciA9IFtdLAotICAgIHBvcCA9IGFyci5wb3AsCi0gICAgcHVzaF9uYXRpdmUgPSBhcnIu
cHVzaCwKLSAgICBwdXNoID0gYXJyLnB1c2gsCi0gICAgc2xpY2UgPSBhcnIuc2xpY2UsCi0gICAg
Ly8gVXNlIGEgc3RyaXBwZWQtZG93biBpbmRleE9mIGlmIHdlIGNhbid0IHVzZSBhIG5hdGl2ZSBv
bmUKLSAgICBpbmRleE9mID0gYXJyLmluZGV4T2YgfHwgZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAg
ICAgIHZhciBpID0gMCwKLSAgICAgICAgICAgIGxlbiA9IHRoaXMubGVuZ3RoOwotICAgICAgICBm
b3IgKCA7IGkgPCBsZW47IGkrKyApIHsKLSAgICAgICAgICAgIGlmICggdGhpc1tpXSA9PT0gZWxl
bSApIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gaTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfSwKLQotICAgIGJvb2xlYW5zID0gImNoZWNrZWR8
c2VsZWN0ZWR8YXN5bmN8YXV0b2ZvY3VzfGF1dG9wbGF5fGNvbnRyb2xzfGRlZmVyfGRpc2FibGVk
fGhpZGRlbnxpc21hcHxsb29wfG11bHRpcGxlfG9wZW58cmVhZG9ubHl8cmVxdWlyZWR8c2NvcGVk
IiwKLQotICAgIC8vIFJlZ3VsYXIgZXhwcmVzc2lvbnMKLQotICAgIC8vIFdoaXRlc3BhY2UgY2hh
cmFjdGVycyBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLXNlbGVjdG9ycy8jd2hpdGVzcGFjZQot
ICAgIHdoaXRlc3BhY2UgPSAiW1xceDIwXFx0XFxyXFxuXFxmXSIsCi0gICAgLy8gaHR0cDovL3d3
dy53My5vcmcvVFIvY3NzMy1zeW50YXgvI2NoYXJhY3RlcnMKLSAgICBjaGFyYWN0ZXJFbmNvZGlu
ZyA9ICIoPzpcXFxcLnxbXFx3LV18W15cXHgwMC1cXHhhMF0pKyIsCi0KLSAgICAvLyBMb29zZWx5
IG1vZGVsZWQgb24gQ1NTIGlkZW50aWZpZXIgY2hhcmFjdGVycwotICAgIC8vIEFuIHVucXVvdGVk
IHZhbHVlIHNob3VsZCBiZSBhIENTUyBpZGVudGlmaWVyIGh0dHA6Ly93d3cudzMub3JnL1RSL2Nz
czMtc2VsZWN0b3JzLyNhdHRyaWJ1dGUtc2VsZWN0b3JzCi0gICAgLy8gUHJvcGVyIHN5bnRheDog
aHR0cDovL3d3dy53My5vcmcvVFIvQ1NTMjEvc3luZGF0YS5odG1sI3ZhbHVlLWRlZi1pZGVudGlm
aWVyCi0gICAgaWRlbnRpZmllciA9IGNoYXJhY3RlckVuY29kaW5nLnJlcGxhY2UoICJ3IiwgIncj
IiApLAotCi0gICAgLy8gQWNjZXB0YWJsZSBvcGVyYXRvcnMgaHR0cDovL3d3dy53My5vcmcvVFIv
c2VsZWN0b3JzLyNhdHRyaWJ1dGUtc2VsZWN0b3JzCi0gICAgYXR0cmlidXRlcyA9ICJcXFsiICsg
d2hpdGVzcGFjZSArICIqKCIgKyBjaGFyYWN0ZXJFbmNvZGluZyArICIpIiArIHdoaXRlc3BhY2Ug
KwotICAgICAgICAiKig/OihbKl4kfCF+XT89KSIgKyB3aGl0ZXNwYWNlICsgIiooPzooWydcIl0p
KCg/OlxcXFwufFteXFxcXF0pKj8pXFwzfCgiICsgaWRlbnRpZmllciArICIpfCl8KSIgKyB3aGl0
ZXNwYWNlICsgIipcXF0iLAotCi0gICAgLy8gUHJlZmVyIGFyZ3VtZW50cyBxdW90ZWQsCi0gICAg
Ly8gICB0aGVuIG5vdCBjb250YWluaW5nIHBzZXVkb3MvYnJhY2tldHMsCi0gICAgLy8gICB0aGVu
IGF0dHJpYnV0ZSBzZWxlY3RvcnMvbm9uLXBhcmVudGhldGljYWwgZXhwcmVzc2lvbnMsCi0gICAg
Ly8gICB0aGVuIGFueXRoaW5nIGVsc2UKLSAgICAvLyBUaGVzZSBwcmVmZXJlbmNlcyBhcmUgaGVy
ZSB0byByZWR1Y2UgdGhlIG51bWJlciBvZiBzZWxlY3RvcnMKLSAgICAvLyAgIG5lZWRpbmcgdG9r
ZW5pemUgaW4gdGhlIFBTRVVETyBwcmVGaWx0ZXIKLSAgICBwc2V1ZG9zID0gIjooIiArIGNoYXJh
Y3RlckVuY29kaW5nICsgIikoPzpcXCgoKFsnXCJdKSgoPzpcXFxcLnxbXlxcXFxdKSo/KVxcM3wo
KD86XFxcXC58W15cXFxcKClbXFxdXXwiICsgYXR0cmlidXRlcy5yZXBsYWNlKCAzLCA4ICkgKyAi
KSopfC4qKVxcKXwpIiwKLQotICAgIC8vIExlYWRpbmcgYW5kIG5vbi1lc2NhcGVkIHRyYWlsaW5n
IHdoaXRlc3BhY2UsIGNhcHR1cmluZyBzb21lIG5vbi13aGl0ZXNwYWNlIGNoYXJhY3RlcnMgcHJl
Y2VkaW5nIHRoZSBsYXR0ZXIKLSAgICBydHJpbSA9IG5ldyBSZWdFeHAoICJeIiArIHdoaXRlc3Bh
Y2UgKyAiK3woKD86XnxbXlxcXFxdKSg/OlxcXFwuKSopIiArIHdoaXRlc3BhY2UgKyAiKyQiLCAi
ZyIgKSwKLQotICAgIHJjb21tYSA9IG5ldyBSZWdFeHAoICJeIiArIHdoaXRlc3BhY2UgKyAiKiwi
ICsgd2hpdGVzcGFjZSArICIqIiApLAotICAgIHJjb21iaW5hdG9ycyA9IG5ldyBSZWdFeHAoICJe
IiArIHdoaXRlc3BhY2UgKyAiKihbPit+XXwiICsgd2hpdGVzcGFjZSArICIpIiArIHdoaXRlc3Bh
Y2UgKyAiKiIgKSwKLQotICAgIHJhdHRyaWJ1dGVRdW90ZXMgPSBuZXcgUmVnRXhwKCAiPSIgKyB3
aGl0ZXNwYWNlICsgIiooW15cXF0nXCJdKj8pIiArIHdoaXRlc3BhY2UgKyAiKlxcXSIsICJnIiAp
LAotCi0gICAgcnBzZXVkbyA9IG5ldyBSZWdFeHAoIHBzZXVkb3MgKSwKLSAgICByaWRlbnRpZmll
ciA9IG5ldyBSZWdFeHAoICJeIiArIGlkZW50aWZpZXIgKyAiJCIgKSwKLQotICAgIG1hdGNoRXhw
ciA9IHsKLSAgICAgICAgIklEIjogbmV3IFJlZ0V4cCggIl4jKCIgKyBjaGFyYWN0ZXJFbmNvZGlu
ZyArICIpIiApLAotICAgICAgICAiQ0xBU1MiOiBuZXcgUmVnRXhwKCAiXlxcLigiICsgY2hhcmFj
dGVyRW5jb2RpbmcgKyAiKSIgKSwKLSAgICAgICAgIlRBRyI6IG5ldyBSZWdFeHAoICJeKCIgKyBj
aGFyYWN0ZXJFbmNvZGluZy5yZXBsYWNlKCAidyIsICJ3KiIgKSArICIpIiApLAotICAgICAgICAi
QVRUUiI6IG5ldyBSZWdFeHAoICJeIiArIGF0dHJpYnV0ZXMgKSwKLSAgICAgICAgIlBTRVVETyI6
IG5ldyBSZWdFeHAoICJeIiArIHBzZXVkb3MgKSwKLSAgICAgICAgIkNISUxEIjogbmV3IFJlZ0V4
cCggIl46KG9ubHl8Zmlyc3R8bGFzdHxudGh8bnRoLWxhc3QpLShjaGlsZHxvZi10eXBlKSg/Olxc
KCIgKyB3aGl0ZXNwYWNlICsKLSAgICAgICAgICAgICIqKGV2ZW58b2RkfCgoWystXXwpKFxcZCop
bnwpIiArIHdoaXRlc3BhY2UgKyAiKig/OihbKy1dfCkiICsgd2hpdGVzcGFjZSArCi0gICAgICAg
ICAgICAiKihcXGQrKXwpKSIgKyB3aGl0ZXNwYWNlICsgIipcXCl8KSIsICJpIiApLAotICAgICAg
ICAiYm9vbCI6IG5ldyBSZWdFeHAoICJeKD86IiArIGJvb2xlYW5zICsgIikkIiwgImkiICksCi0g
ICAgICAgIC8vIEZvciB1c2UgaW4gbGlicmFyaWVzIGltcGxlbWVudGluZyAuaXMoKQotICAgICAg
ICAvLyBXZSB1c2UgdGhpcyBmb3IgUE9TIG1hdGNoaW5nIGluIGBzZWxlY3RgCi0gICAgICAgICJu
ZWVkc0NvbnRleHQiOiBuZXcgUmVnRXhwKCAiXiIgKyB3aGl0ZXNwYWNlICsgIipbPit+XXw6KGV2
ZW58b2RkfGVxfGd0fGx0fG50aHxmaXJzdHxsYXN0KSg/OlxcKCIgKwotICAgICAgICAgICAgd2hp
dGVzcGFjZSArICIqKCg/Oi1cXGQpP1xcZCopIiArIHdoaXRlc3BhY2UgKyAiKlxcKXwpKD89W14t
XXwkKSIsICJpIiApCi0gICAgfSwKLQotICAgIHJpbnB1dHMgPSAvXig/OmlucHV0fHNlbGVjdHx0
ZXh0YXJlYXxidXR0b24pJC9pLAotICAgIHJoZWFkZXIgPSAvXmhcZCQvaSwKLQotICAgIHJuYXRp
dmUgPSAvXltee10rXHtccypcW25hdGl2ZSBcdy8sCi0KLSAgICAvLyBFYXNpbHktcGFyc2VhYmxl
L3JldHJpZXZhYmxlIElEIG9yIFRBRyBvciBDTEFTUyBzZWxlY3RvcnMKLSAgICBycXVpY2tFeHBy
ID0gL14oPzojKFtcdy1dKyl8KFx3Kyl8XC4oW1x3LV0rKSkkLywKLQotICAgIHJzaWJsaW5nID0g
L1srfl0vLAotICAgIHJlc2NhcGUgPSAvJ3xcXC9nLAotCi0gICAgLy8gQ1NTIGVzY2FwZXMgaHR0
cDovL3d3dy53My5vcmcvVFIvQ1NTMjEvc3luZGF0YS5odG1sI2VzY2FwZWQtY2hhcmFjdGVycwot
ICAgIHJ1bmVzY2FwZSA9IG5ldyBSZWdFeHAoICJcXFxcKFtcXGRhLWZdezEsNn0iICsgd2hpdGVz
cGFjZSArICI/fCgiICsgd2hpdGVzcGFjZSArICIpfC4pIiwgImlnIiApLAotICAgIGZ1bmVzY2Fw
ZSA9IGZ1bmN0aW9uKCBfLCBlc2NhcGVkLCBlc2NhcGVkV2hpdGVzcGFjZSApIHsKLSAgICAgICAg
dmFyIGhpZ2ggPSAiMHgiICsgZXNjYXBlZCAtIDB4MTAwMDA7Ci0gICAgICAgIC8vIE5hTiBtZWFu
cyBub24tY29kZXBvaW50Ci0gICAgICAgIC8vIFN1cHBvcnQ6IEZpcmVmb3gKLSAgICAgICAgLy8g
V29ya2Fyb3VuZCBlcnJvbmVvdXMgbnVtZXJpYyBpbnRlcnByZXRhdGlvbiBvZiArIjB4IgotICAg
ICAgICByZXR1cm4gaGlnaCAhPT0gaGlnaCB8fCBlc2NhcGVkV2hpdGVzcGFjZSA/Ci0gICAgICAg
ICAgICBlc2NhcGVkIDoKLSAgICAgICAgICAgIGhpZ2ggPCAwID8KLSAgICAgICAgICAgICAgICAv
LyBCTVAgY29kZXBvaW50Ci0gICAgICAgICAgICAgICAgU3RyaW5nLmZyb21DaGFyQ29kZSggaGln
aCArIDB4MTAwMDAgKSA6Ci0gICAgICAgICAgICAgICAgLy8gU3VwcGxlbWVudGFsIFBsYW5lIGNv
ZGVwb2ludCAoc3Vycm9nYXRlIHBhaXIpCi0gICAgICAgICAgICAgICAgU3RyaW5nLmZyb21DaGFy
Q29kZSggaGlnaCA+PiAxMCB8IDB4RDgwMCwgaGlnaCAmIDB4M0ZGIHwgMHhEQzAwICk7Ci0gICAg
fTsKLQotLy8gT3B0aW1pemUgZm9yIHB1c2guYXBwbHkoIF8sIE5vZGVMaXN0ICkKLXRyeSB7Ci0g
ICAgcHVzaC5hcHBseSgKLSAgICAgICAgKGFyciA9IHNsaWNlLmNhbGwoIHByZWZlcnJlZERvYy5j
aGlsZE5vZGVzICkpLAotICAgICAgICBwcmVmZXJyZWREb2MuY2hpbGROb2RlcwotICAgICk7Ci0g
ICAgLy8gU3VwcG9ydDogQW5kcm9pZDw0LjAKLSAgICAvLyBEZXRlY3Qgc2lsZW50bHkgZmFpbGlu
ZyBwdXNoLmFwcGx5Ci0gICAgYXJyWyBwcmVmZXJyZWREb2MuY2hpbGROb2Rlcy5sZW5ndGggXS5u
b2RlVHlwZTsKLX0gY2F0Y2ggKCBlICkgewotICAgIHB1c2ggPSB7IGFwcGx5OiBhcnIubGVuZ3Ro
ID8KLQotICAgICAgICAvLyBMZXZlcmFnZSBzbGljZSBpZiBwb3NzaWJsZQotICAgICAgICBmdW5j
dGlvbiggdGFyZ2V0LCBlbHMgKSB7Ci0gICAgICAgICAgICBwdXNoX25hdGl2ZS5hcHBseSggdGFy
Z2V0LCBzbGljZS5jYWxsKGVscykgKTsKLSAgICAgICAgfSA6Ci0KLSAgICAgICAgLy8gU3VwcG9y
dDogSUU8OQotICAgICAgICAvLyBPdGhlcndpc2UgYXBwZW5kIGRpcmVjdGx5Ci0gICAgICAgIGZ1
bmN0aW9uKCB0YXJnZXQsIGVscyApIHsKLSAgICAgICAgICAgIHZhciBqID0gdGFyZ2V0Lmxlbmd0
aCwKLSAgICAgICAgICAgICAgICBpID0gMDsKLSAgICAgICAgICAgIC8vIENhbid0IHRydXN0IE5v
ZGVMaXN0Lmxlbmd0aAotICAgICAgICAgICAgd2hpbGUgKCAodGFyZ2V0W2orK10gPSBlbHNbaSsr
XSkgKSB7fQotICAgICAgICAgICAgdGFyZ2V0Lmxlbmd0aCA9IGogLSAxOwotICAgICAgICB9Ci0g
ICAgfTsKLX0KLQotZnVuY3Rpb24gU2l6emxlKCBzZWxlY3RvciwgY29udGV4dCwgcmVzdWx0cywg
c2VlZCApIHsKLSAgICB2YXIgbWF0Y2gsIGVsZW0sIG0sIG5vZGVUeXBlLAotICAgICAgICAvLyBR
U0EgdmFycwotICAgICAgICBpLCBncm91cHMsIG9sZCwgbmlkLCBuZXdDb250ZXh0LCBuZXdTZWxl
Y3RvcjsKLQotICAgIGlmICggKCBjb250ZXh0ID8gY29udGV4dC5vd25lckRvY3VtZW50IHx8IGNv
bnRleHQgOiBwcmVmZXJyZWREb2MgKSAhPT0gZG9jdW1lbnQgKSB7Ci0gICAgICAgIHNldERvY3Vt
ZW50KCBjb250ZXh0ICk7Ci0gICAgfQotCi0gICAgY29udGV4dCA9IGNvbnRleHQgfHwgZG9jdW1l
bnQ7Ci0gICAgcmVzdWx0cyA9IHJlc3VsdHMgfHwgW107Ci0KLSAgICBpZiAoICFzZWxlY3RvciB8
fCB0eXBlb2Ygc2VsZWN0b3IgIT09ICJzdHJpbmciICkgewotICAgICAgICByZXR1cm4gcmVzdWx0
czsKLSAgICB9Ci0KLSAgICBpZiAoIChub2RlVHlwZSA9IGNvbnRleHQubm9kZVR5cGUpICE9PSAx
ICYmIG5vZGVUeXBlICE9PSA5ICkgewotICAgICAgICByZXR1cm4gW107Ci0gICAgfQotCi0gICAg
aWYgKCBkb2N1bWVudElzSFRNTCAmJiAhc2VlZCApIHsKLQotICAgICAgICAvLyBTaG9ydGN1dHMK
LSAgICAgICAgaWYgKCAobWF0Y2ggPSBycXVpY2tFeHByLmV4ZWMoIHNlbGVjdG9yICkpICkgewot
ICAgICAgICAgICAgLy8gU3BlZWQtdXA6IFNpenpsZSgiI0lEIikKLSAgICAgICAgICAgIGlmICgg
KG0gPSBtYXRjaFsxXSkgKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCBub2RlVHlwZSA9PT0gOSAp
IHsKLSAgICAgICAgICAgICAgICAgICAgZWxlbSA9IGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQoIG0g
KTsKLSAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgcGFyZW50Tm9kZSB0byBjYXRjaCB3aGVu
IEJsYWNrYmVycnkgNC42IHJldHVybnMKLSAgICAgICAgICAgICAgICAgICAgLy8gbm9kZXMgdGhh
dCBhcmUgbm8gbG9uZ2VyIGluIHRoZSBkb2N1bWVudCAoalF1ZXJ5ICM2OTYzKQotICAgICAgICAg
ICAgICAgICAgICBpZiAoIGVsZW0gJiYgZWxlbS5wYXJlbnROb2RlICkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gSGFuZGxlIHRoZSBjYXNlIHdoZXJlIElFLCBPcGVyYSwgYW5kIFdlYmtp
dCByZXR1cm4gaXRlbXMKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ5IG5hbWUgaW5zdGVh
ZCBvZiBJRAotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBlbGVtLmlkID09PSBtICkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMucHVzaCggZWxlbSApOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRzOwotICAgICAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdHM7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAvLyBDb250ZXh0IGlzIG5vdCBhIGRv
Y3VtZW50Ci0gICAgICAgICAgICAgICAgICAgIGlmICggY29udGV4dC5vd25lckRvY3VtZW50ICYm
IChlbGVtID0gY29udGV4dC5vd25lckRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCBtICkpICYmCi0g
ICAgICAgICAgICAgICAgICAgICAgICBjb250YWlucyggY29udGV4dCwgZWxlbSApICYmIGVsZW0u
aWQgPT09IG0gKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzLnB1c2goIGVsZW0g
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRzOwotICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBTcGVlZC11cDog
U2l6emxlKCJUQUciKQotICAgICAgICAgICAgfSBlbHNlIGlmICggbWF0Y2hbMl0gKSB7Ci0gICAg
ICAgICAgICAgICAgcHVzaC5hcHBseSggcmVzdWx0cywgY29udGV4dC5nZXRFbGVtZW50c0J5VGFn
TmFtZSggc2VsZWN0b3IgKSApOwotICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRzOwotCi0g
ICAgICAgICAgICAvLyBTcGVlZC11cDogU2l6emxlKCIuQ0xBU1MiKQotICAgICAgICAgICAgfSBl
bHNlIGlmICggKG0gPSBtYXRjaFszXSkgJiYgc3VwcG9ydC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1l
ICYmIGNvbnRleHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSApIHsKLSAgICAgICAgICAgICAgICBw
dXNoLmFwcGx5KCByZXN1bHRzLCBjb250ZXh0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoIG0gKSAp
OwotICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRzOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0KLSAgICAgICAgLy8gUVNBIHBhdGgKLSAgICAgICAgaWYgKCBzdXBwb3J0LnFzYSAmJiAo
IXJidWdneVFTQSB8fCAhcmJ1Z2d5UVNBLnRlc3QoIHNlbGVjdG9yICkpICkgewotICAgICAgICAg
ICAgbmlkID0gb2xkID0gZXhwYW5kbzsKLSAgICAgICAgICAgIG5ld0NvbnRleHQgPSBjb250ZXh0
OwotICAgICAgICAgICAgbmV3U2VsZWN0b3IgPSBub2RlVHlwZSA9PT0gOSAmJiBzZWxlY3RvcjsK
LQotICAgICAgICAgICAgLy8gcVNBIHdvcmtzIHN0cmFuZ2VseSBvbiBFbGVtZW50LXJvb3RlZCBx
dWVyaWVzCi0gICAgICAgICAgICAvLyBXZSBjYW4gd29yayBhcm91bmQgdGhpcyBieSBzcGVjaWZ5
aW5nIGFuIGV4dHJhIElEIG9uIHRoZSByb290Ci0gICAgICAgICAgICAvLyBhbmQgd29ya2luZyB1
cCBmcm9tIHRoZXJlIChUaGFua3MgdG8gQW5kcmV3IER1cG9udCBmb3IgdGhlIHRlY2huaXF1ZSkK
LSAgICAgICAgICAgIC8vIElFIDggZG9lc24ndCB3b3JrIG9uIG9iamVjdCBlbGVtZW50cwotICAg
ICAgICAgICAgaWYgKCBub2RlVHlwZSA9PT0gMSAmJiBjb250ZXh0Lm5vZGVOYW1lLnRvTG93ZXJD
YXNlKCkgIT09ICJvYmplY3QiICkgewotICAgICAgICAgICAgICAgIGdyb3VwcyA9IHRva2VuaXpl
KCBzZWxlY3RvciApOwotCi0gICAgICAgICAgICAgICAgaWYgKCAob2xkID0gY29udGV4dC5nZXRB
dHRyaWJ1dGUoImlkIikpICkgewotICAgICAgICAgICAgICAgICAgICBuaWQgPSBvbGQucmVwbGFj
ZSggcmVzY2FwZSwgIlxcJCYiICk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICAgICAgY29udGV4dC5zZXRBdHRyaWJ1dGUoICJpZCIsIG5pZCApOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICBuaWQgPSAiW2lkPSciICsgbmlkICsgIiddICI7Ci0K
LSAgICAgICAgICAgICAgICBpID0gZ3JvdXBzLmxlbmd0aDsKLSAgICAgICAgICAgICAgICB3aGls
ZSAoIGktLSApIHsKLSAgICAgICAgICAgICAgICAgICAgZ3JvdXBzW2ldID0gbmlkICsgdG9TZWxl
Y3RvciggZ3JvdXBzW2ldICk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG5l
d0NvbnRleHQgPSByc2libGluZy50ZXN0KCBzZWxlY3RvciApICYmIHRlc3RDb250ZXh0KCBjb250
ZXh0LnBhcmVudE5vZGUgKSB8fCBjb250ZXh0OwotICAgICAgICAgICAgICAgIG5ld1NlbGVjdG9y
ID0gZ3JvdXBzLmpvaW4oIiwiKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKCBu
ZXdTZWxlY3RvciApIHsKLSAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAg
ICBwdXNoLmFwcGx5KCByZXN1bHRzLAotICAgICAgICAgICAgICAgICAgICAgICAgbmV3Q29udGV4
dC5xdWVyeVNlbGVjdG9yQWxsKCBuZXdTZWxlY3RvciApCi0gICAgICAgICAgICAgICAgICAgICk7
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRzOwotICAgICAgICAgICAgICAgIH0g
Y2F0Y2gocXNhRXJyb3IpIHsKLSAgICAgICAgICAgICAgICB9IGZpbmFsbHkgewotICAgICAgICAg
ICAgICAgICAgICBpZiAoICFvbGQgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0
LnJlbW92ZUF0dHJpYnV0ZSgiaWQiKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIEFsbCBv
dGhlcnMKLSAgICByZXR1cm4gc2VsZWN0KCBzZWxlY3Rvci5yZXBsYWNlKCBydHJpbSwgIiQxIiAp
LCBjb250ZXh0LCByZXN1bHRzLCBzZWVkICk7Ci19Ci0KLS8qKgotICogQ3JlYXRlIGtleS12YWx1
ZSBjYWNoZXMgb2YgbGltaXRlZCBzaXplCi0gKiBAcmV0dXJucyB7RnVuY3Rpb24oc3RyaW5nLCBP
YmplY3QpfSBSZXR1cm5zIHRoZSBPYmplY3QgZGF0YSBhZnRlciBzdG9yaW5nIGl0IG9uIGl0c2Vs
ZiB3aXRoCi0gKiAgcHJvcGVydHkgbmFtZSB0aGUgKHNwYWNlLXN1ZmZpeGVkKSBzdHJpbmcgYW5k
IChpZiB0aGUgY2FjaGUgaXMgbGFyZ2VyIHRoYW4gRXhwci5jYWNoZUxlbmd0aCkKLSAqICBkZWxl
dGluZyB0aGUgb2xkZXN0IGVudHJ5Ci0gKi8KLWZ1bmN0aW9uIGNyZWF0ZUNhY2hlKCkgewotICAg
IHZhciBrZXlzID0gW107Ci0KLSAgICBmdW5jdGlvbiBjYWNoZSgga2V5LCB2YWx1ZSApIHsKLSAg
ICAgICAgLy8gVXNlIChrZXkgKyAiICIpIHRvIGF2b2lkIGNvbGxpc2lvbiB3aXRoIG5hdGl2ZSBw
cm90b3R5cGUgcHJvcGVydGllcyAoc2VlIElzc3VlICMxNTcpCi0gICAgICAgIGlmICgga2V5cy5w
dXNoKCBrZXkgKyAiICIgKSA+IEV4cHIuY2FjaGVMZW5ndGggKSB7Ci0gICAgICAgICAgICAvLyBP
bmx5IGtlZXAgdGhlIG1vc3QgcmVjZW50IGVudHJpZXMKLSAgICAgICAgICAgIGRlbGV0ZSBjYWNo
ZVsga2V5cy5zaGlmdCgpIF07Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIChjYWNoZVsga2V5
ICsgIiAiIF0gPSB2YWx1ZSk7Ci0gICAgfQotICAgIHJldHVybiBjYWNoZTsKLX0KLQotLyoqCi0g
KiBNYXJrIGEgZnVuY3Rpb24gZm9yIHNwZWNpYWwgdXNlIGJ5IFNpenpsZQotICogQHBhcmFtIHtG
dW5jdGlvbn0gZm4gVGhlIGZ1bmN0aW9uIHRvIG1hcmsKLSAqLwotZnVuY3Rpb24gbWFya0Z1bmN0
aW9uKCBmbiApIHsKLSAgICBmblsgZXhwYW5kbyBdID0gdHJ1ZTsKLSAgICByZXR1cm4gZm47Ci19
Ci0KLS8qKgotICogU3VwcG9ydCB0ZXN0aW5nIHVzaW5nIGFuIGVsZW1lbnQKLSAqIEBwYXJhbSB7
RnVuY3Rpb259IGZuIFBhc3NlZCB0aGUgY3JlYXRlZCBkaXYgYW5kIGV4cGVjdHMgYSBib29sZWFu
IHJlc3VsdAotICovCi1mdW5jdGlvbiBhc3NlcnQoIGZuICkgewotICAgIHZhciBkaXYgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLQotICAgIHRyeSB7Ci0gICAgICAgIHJldHVybiAh
IWZuKCBkaXYgKTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9IGZpbmFsbHkgewotICAgICAgICAvLyBSZW1vdmUgZnJvbSBpdHMgcGFyZW50IGJ5IGRlZmF1
bHQKLSAgICAgICAgaWYgKCBkaXYucGFyZW50Tm9kZSApIHsKLSAgICAgICAgICAgIGRpdi5wYXJl
bnROb2RlLnJlbW92ZUNoaWxkKCBkaXYgKTsKLSAgICAgICAgfQotICAgICAgICAvLyByZWxlYXNl
IG1lbW9yeSBpbiBJRQotICAgICAgICBkaXYgPSBudWxsOwotICAgIH0KLX0KLQotLyoqCi0gKiBB
ZGRzIHRoZSBzYW1lIGhhbmRsZXIgZm9yIGFsbCBvZiB0aGUgc3BlY2lmaWVkIGF0dHJzCi0gKiBA
cGFyYW0ge1N0cmluZ30gYXR0cnMgUGlwZS1zZXBhcmF0ZWQgbGlzdCBvZiBhdHRyaWJ1dGVzCi0g
KiBAcGFyYW0ge0Z1bmN0aW9ufSBoYW5kbGVyIFRoZSBtZXRob2QgdGhhdCB3aWxsIGJlIGFwcGxp
ZWQKLSAqLwotZnVuY3Rpb24gYWRkSGFuZGxlKCBhdHRycywgaGFuZGxlciApIHsKLSAgICB2YXIg
YXJyID0gYXR0cnMuc3BsaXQoInwiKSwKLSAgICAgICAgaSA9IGF0dHJzLmxlbmd0aDsKLQotICAg
IHdoaWxlICggaS0tICkgewotICAgICAgICBFeHByLmF0dHJIYW5kbGVbIGFycltpXSBdID0gaGFu
ZGxlcjsKLSAgICB9Ci19Ci0KLS8qKgotICogQ2hlY2tzIGRvY3VtZW50IG9yZGVyIG9mIHR3byBz
aWJsaW5ncwotICogQHBhcmFtIHtFbGVtZW50fSBhCi0gKiBAcGFyYW0ge0VsZW1lbnR9IGIKLSAq
IEByZXR1cm5zIHtOdW1iZXJ9IFJldHVybnMgbGVzcyB0aGFuIDAgaWYgYSBwcmVjZWRlcyBiLCBn
cmVhdGVyIHRoYW4gMCBpZiBhIGZvbGxvd3MgYgotICovCi1mdW5jdGlvbiBzaWJsaW5nQ2hlY2so
IGEsIGIgKSB7Ci0gICAgdmFyIGN1ciA9IGIgJiYgYSwKLSAgICAgICAgZGlmZiA9IGN1ciAmJiBh
Lm5vZGVUeXBlID09PSAxICYmIGIubm9kZVR5cGUgPT09IDEgJiYKLSAgICAgICAgICAgICggfmIu
c291cmNlSW5kZXggfHwgTUFYX05FR0FUSVZFICkgLQotICAgICAgICAgICAgKCB+YS5zb3VyY2VJ
bmRleCB8fCBNQVhfTkVHQVRJVkUgKTsKLQotICAgIC8vIFVzZSBJRSBzb3VyY2VJbmRleCBpZiBh
dmFpbGFibGUgb24gYm90aCBub2RlcwotICAgIGlmICggZGlmZiApIHsKLSAgICAgICAgcmV0dXJu
IGRpZmY7Ci0gICAgfQotCi0gICAgLy8gQ2hlY2sgaWYgYiBmb2xsb3dzIGEKLSAgICBpZiAoIGN1
ciApIHsKLSAgICAgICAgd2hpbGUgKCAoY3VyID0gY3VyLm5leHRTaWJsaW5nKSApIHsKLSAgICAg
ICAgICAgIGlmICggY3VyID09PSBiICkgewotICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBhID8gMSA6IC0xOwot
fQotCi0vKioKLSAqIFJldHVybnMgYSBmdW5jdGlvbiB0byB1c2UgaW4gcHNldWRvcyBmb3IgaW5w
dXQgdHlwZXMKLSAqIEBwYXJhbSB7U3RyaW5nfSB0eXBlCi0gKi8KLWZ1bmN0aW9uIGNyZWF0ZUlu
cHV0UHNldWRvKCB0eXBlICkgewotICAgIHJldHVybiBmdW5jdGlvbiggZWxlbSApIHsKLSAgICAg
ICAgdmFyIG5hbWUgPSBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7Ci0gICAgICAgIHJldHVy
biBuYW1lID09PSAiaW5wdXQiICYmIGVsZW0udHlwZSA9PT0gdHlwZTsKLSAgICB9OwotfQotCi0v
KioKLSAqIFJldHVybnMgYSBmdW5jdGlvbiB0byB1c2UgaW4gcHNldWRvcyBmb3IgYnV0dG9ucwot
ICogQHBhcmFtIHtTdHJpbmd9IHR5cGUKLSAqLwotZnVuY3Rpb24gY3JlYXRlQnV0dG9uUHNldWRv
KCB0eXBlICkgewotICAgIHJldHVybiBmdW5jdGlvbiggZWxlbSApIHsKLSAgICAgICAgdmFyIG5h
bWUgPSBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7Ci0gICAgICAgIHJldHVybiAobmFtZSA9
PT0gImlucHV0IiB8fCBuYW1lID09PSAiYnV0dG9uIikgJiYgZWxlbS50eXBlID09PSB0eXBlOwot
ICAgIH07Ci19Ci0KLS8qKgotICogUmV0dXJucyBhIGZ1bmN0aW9uIHRvIHVzZSBpbiBwc2V1ZG9z
IGZvciBwb3NpdGlvbmFscwotICogQHBhcmFtIHtGdW5jdGlvbn0gZm4KLSAqLwotZnVuY3Rpb24g
Y3JlYXRlUG9zaXRpb25hbFBzZXVkbyggZm4gKSB7Ci0gICAgcmV0dXJuIG1hcmtGdW5jdGlvbihm
dW5jdGlvbiggYXJndW1lbnQgKSB7Ci0gICAgICAgIGFyZ3VtZW50ID0gK2FyZ3VtZW50OwotICAg
ICAgICByZXR1cm4gbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCBzZWVkLCBtYXRjaGVzICkgewotICAg
ICAgICAgICAgdmFyIGosCi0gICAgICAgICAgICAgICAgbWF0Y2hJbmRleGVzID0gZm4oIFtdLCBz
ZWVkLmxlbmd0aCwgYXJndW1lbnQgKSwKLSAgICAgICAgICAgICAgICBpID0gbWF0Y2hJbmRleGVz
Lmxlbmd0aDsKLQotICAgICAgICAgICAgLy8gTWF0Y2ggZWxlbWVudHMgZm91bmQgYXQgdGhlIHNw
ZWNpZmllZCBpbmRleGVzCi0gICAgICAgICAgICB3aGlsZSAoIGktLSApIHsKLSAgICAgICAgICAg
ICAgICBpZiAoIHNlZWRbIChqID0gbWF0Y2hJbmRleGVzW2ldKSBdICkgewotICAgICAgICAgICAg
ICAgICAgICBzZWVkW2pdID0gIShtYXRjaGVzW2pdID0gc2VlZFtqXSk7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9KTsKLSAgICB9KTsKLX0KLQotLyoqCi0gKiBD
aGVja3MgYSBub2RlIGZvciB2YWxpZGl0eSBhcyBhIFNpenpsZSBjb250ZXh0Ci0gKiBAcGFyYW0g
e0VsZW1lbnR8T2JqZWN0PX0gY29udGV4dAotICogQHJldHVybnMge0VsZW1lbnR8T2JqZWN0fEJv
b2xlYW59IFRoZSBpbnB1dCBub2RlIGlmIGFjY2VwdGFibGUsIG90aGVyd2lzZSBhIGZhbHN5IHZh
bHVlCi0gKi8KLWZ1bmN0aW9uIHRlc3RDb250ZXh0KCBjb250ZXh0ICkgewotICAgIHJldHVybiBj
b250ZXh0ICYmIHR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lICE9PSBzdHJ1bmRl
ZmluZWQgJiYgY29udGV4dDsKLX0KLQotLy8gRXhwb3NlIHN1cHBvcnQgdmFycyBmb3IgY29udmVu
aWVuY2UKLXN1cHBvcnQgPSBTaXp6bGUuc3VwcG9ydCA9IHt9OwotCi0vKioKLSAqIERldGVjdHMg
WE1MIG5vZGVzCi0gKiBAcGFyYW0ge0VsZW1lbnR8T2JqZWN0fSBlbGVtIEFuIGVsZW1lbnQgb3Ig
YSBkb2N1bWVudAotICogQHJldHVybnMge0Jvb2xlYW59IFRydWUgaWZmIGVsZW0gaXMgYSBub24t
SFRNTCBYTUwgbm9kZQotICovCi1pc1hNTCA9IFNpenpsZS5pc1hNTCA9IGZ1bmN0aW9uKCBlbGVt
ICkgewotICAgIC8vIGRvY3VtZW50RWxlbWVudCBpcyB2ZXJpZmllZCBmb3IgY2FzZXMgd2hlcmUg
aXQgZG9lc24ndCB5ZXQgZXhpc3QKLSAgICAvLyAoc3VjaCBhcyBsb2FkaW5nIGlmcmFtZXMgaW4g
SUUgLSAjNDgzMykKLSAgICB2YXIgZG9jdW1lbnRFbGVtZW50ID0gZWxlbSAmJiAoZWxlbS5vd25l
ckRvY3VtZW50IHx8IGVsZW0pLmRvY3VtZW50RWxlbWVudDsKLSAgICByZXR1cm4gZG9jdW1lbnRF
bGVtZW50ID8gZG9jdW1lbnRFbGVtZW50Lm5vZGVOYW1lICE9PSAiSFRNTCIgOiBmYWxzZTsKLX07
Ci0KLS8qKgotICogU2V0cyBkb2N1bWVudC1yZWxhdGVkIHZhcmlhYmxlcyBvbmNlIGJhc2VkIG9u
IHRoZSBjdXJyZW50IGRvY3VtZW50Ci0gKiBAcGFyYW0ge0VsZW1lbnR8T2JqZWN0fSBbZG9jXSBB
biBlbGVtZW50IG9yIGRvY3VtZW50IG9iamVjdCB0byB1c2UgdG8gc2V0IHRoZSBkb2N1bWVudAot
ICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY3VycmVudCBkb2N1bWVudAotICovCi1z
ZXREb2N1bWVudCA9IFNpenpsZS5zZXREb2N1bWVudCA9IGZ1bmN0aW9uKCBub2RlICkgewotICAg
IHZhciBoYXNDb21wYXJlLAotICAgICAgICBkb2MgPSBub2RlID8gbm9kZS5vd25lckRvY3VtZW50
IHx8IG5vZGUgOiBwcmVmZXJyZWREb2MsCi0gICAgICAgIHBhcmVudCA9IGRvYy5kZWZhdWx0Vmll
dzsKLQotICAgIC8vIElmIG5vIGRvY3VtZW50IGFuZCBkb2N1bWVudEVsZW1lbnQgaXMgYXZhaWxh
YmxlLCByZXR1cm4KLSAgICBpZiAoIGRvYyA9PT0gZG9jdW1lbnQgfHwgZG9jLm5vZGVUeXBlICE9
PSA5IHx8ICFkb2MuZG9jdW1lbnRFbGVtZW50ICkgewotICAgICAgICByZXR1cm4gZG9jdW1lbnQ7
Ci0gICAgfQotCi0gICAgLy8gU2V0IG91ciBkb2N1bWVudAotICAgIGRvY3VtZW50ID0gZG9jOwot
ICAgIGRvY0VsZW0gPSBkb2MuZG9jdW1lbnRFbGVtZW50OwotCi0gICAgLy8gU3VwcG9ydCB0ZXN0
cwotICAgIGRvY3VtZW50SXNIVE1MID0gIWlzWE1MKCBkb2MgKTsKLQotICAgIC8vIFN1cHBvcnQ6
IElFPjgKLSAgICAvLyBJZiBpZnJhbWUgZG9jdW1lbnQgaXMgYXNzaWduZWQgdG8gImRvY3VtZW50
IiB2YXJpYWJsZSBhbmQgaWYgaWZyYW1lIGhhcyBiZWVuIHJlbG9hZGVkLAotICAgIC8vIElFIHdp
bGwgdGhyb3cgInBlcm1pc3Npb24gZGVuaWVkIiBlcnJvciB3aGVuIGFjY2Vzc2luZyAiZG9jdW1l
bnQiIHZhcmlhYmxlLCBzZWUgalF1ZXJ5ICMxMzkzNgotICAgIC8vIElFNi04IGRvIG5vdCBzdXBw
b3J0IHRoZSBkZWZhdWx0VmlldyBwcm9wZXJ0eSBzbyBwYXJlbnQgd2lsbCBiZSB1bmRlZmluZWQK
LSAgICBpZiAoIHBhcmVudCAmJiBwYXJlbnQgIT09IHBhcmVudC50b3AgKSB7Ci0gICAgICAgIC8v
IElFMTEgZG9lcyBub3QgaGF2ZSBhdHRhY2hFdmVudCwgc28gYWxsIG11c3Qgc3VmZmVyCi0gICAg
ICAgIGlmICggcGFyZW50LmFkZEV2ZW50TGlzdGVuZXIgKSB7Ci0gICAgICAgICAgICBwYXJlbnQu
YWRkRXZlbnRMaXN0ZW5lciggInVubG9hZCIsIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAg
IHNldERvY3VtZW50KCk7Ci0gICAgICAgICAgICB9LCBmYWxzZSApOwotICAgICAgICB9IGVsc2Ug
aWYgKCBwYXJlbnQuYXR0YWNoRXZlbnQgKSB7Ci0gICAgICAgICAgICBwYXJlbnQuYXR0YWNoRXZl
bnQoICJvbnVubG9hZCIsIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIHNldERvY3VtZW50
KCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8qIEF0dHJpYnV0
ZXMKLSAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLSAgICAvLyBTdXBwb3J0OiBJRTw4Ci0gICAgLy8g
VmVyaWZ5IHRoYXQgZ2V0QXR0cmlidXRlIHJlYWxseSByZXR1cm5zIGF0dHJpYnV0ZXMgYW5kIG5v
dCBwcm9wZXJ0aWVzIChleGNlcHRpbmcgSUU4IGJvb2xlYW5zKQotICAgIHN1cHBvcnQuYXR0cmli
dXRlcyA9IGFzc2VydChmdW5jdGlvbiggZGl2ICkgewotICAgICAgICBkaXYuY2xhc3NOYW1lID0g
ImkiOwotICAgICAgICByZXR1cm4gIWRpdi5nZXRBdHRyaWJ1dGUoImNsYXNzTmFtZSIpOwotICAg
IH0pOwotCi0gICAgLyogZ2V0RWxlbWVudChzKUJ5KgotICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQot
ICAgIC8vIENoZWNrIGlmIGdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikgcmV0dXJucyBvbmx5IGVs
ZW1lbnRzCi0gICAgc3VwcG9ydC5nZXRFbGVtZW50c0J5VGFnTmFtZSA9IGFzc2VydChmdW5jdGlv
biggZGl2ICkgewotICAgICAgICBkaXYuYXBwZW5kQ2hpbGQoIGRvYy5jcmVhdGVDb21tZW50KCIi
KSApOwotICAgICAgICByZXR1cm4gIWRpdi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLmxlbmd0
aDsKLSAgICB9KTsKLQotICAgIC8vIENoZWNrIGlmIGdldEVsZW1lbnRzQnlDbGFzc05hbWUgY2Fu
IGJlIHRydXN0ZWQKLSAgICBzdXBwb3J0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUgPSBybmF0aXZl
LnRlc3QoIGRvYy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lICkgJiYgYXNzZXJ0KGZ1bmN0aW9uKCBk
aXYgKSB7Ci0gICAgICAgIGRpdi5pbm5lckhUTUwgPSAiPGRpdiBjbGFzcz0nYSc+PC9kaXY+PGRp
diBjbGFzcz0nYSBpJz48L2Rpdj4iOwotCi0gICAgICAgIC8vIFN1cHBvcnQ6IFNhZmFyaTw0Ci0g
ICAgICAgIC8vIENhdGNoIGNsYXNzIG92ZXItY2FjaGluZwotICAgICAgICBkaXYuZmlyc3RDaGls
ZC5jbGFzc05hbWUgPSAiaSI7Ci0gICAgICAgIC8vIFN1cHBvcnQ6IE9wZXJhPDEwCi0gICAgICAg
IC8vIENhdGNoIGdFQkNOIGZhaWx1cmUgdG8gZmluZCBub24tbGVhZGluZyBjbGFzc2VzCi0gICAg
ICAgIHJldHVybiBkaXYuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiaSIpLmxlbmd0aCA9PT0gMjsK
LSAgICB9KTsKLQotICAgIC8vIFN1cHBvcnQ6IElFPDEwCi0gICAgLy8gQ2hlY2sgaWYgZ2V0RWxl
bWVudEJ5SWQgcmV0dXJucyBlbGVtZW50cyBieSBuYW1lCi0gICAgLy8gVGhlIGJyb2tlbiBnZXRF
bGVtZW50QnlJZCBtZXRob2RzIGRvbid0IHBpY2sgdXAgcHJvZ3JhbWF0aWNhbGx5LXNldCBuYW1l
cywKLSAgICAvLyBzbyB1c2UgYSByb3VuZGFib3V0IGdldEVsZW1lbnRzQnlOYW1lIHRlc3QKLSAg
ICBzdXBwb3J0LmdldEJ5SWQgPSBhc3NlcnQoZnVuY3Rpb24oIGRpdiApIHsKLSAgICAgICAgZG9j
RWxlbS5hcHBlbmRDaGlsZCggZGl2ICkuaWQgPSBleHBhbmRvOwotICAgICAgICByZXR1cm4gIWRv
Yy5nZXRFbGVtZW50c0J5TmFtZSB8fCAhZG9jLmdldEVsZW1lbnRzQnlOYW1lKCBleHBhbmRvICku
bGVuZ3RoOwotICAgIH0pOwotCi0gICAgLy8gSUQgZmluZCBhbmQgZmlsdGVyCi0gICAgaWYgKCBz
dXBwb3J0LmdldEJ5SWQgKSB7Ci0gICAgICAgIEV4cHIuZmluZFsiSUQiXSA9IGZ1bmN0aW9uKCBp
ZCwgY29udGV4dCApIHsKLSAgICAgICAgICAgIGlmICggdHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVu
dEJ5SWQgIT09IHN0cnVuZGVmaW5lZCAmJiBkb2N1bWVudElzSFRNTCApIHsKLSAgICAgICAgICAg
ICAgICB2YXIgbSA9IGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQoIGlkICk7Ci0gICAgICAgICAgICAg
ICAgLy8gQ2hlY2sgcGFyZW50Tm9kZSB0byBjYXRjaCB3aGVuIEJsYWNrYmVycnkgNC42IHJldHVy
bnMKLSAgICAgICAgICAgICAgICAvLyBub2RlcyB0aGF0IGFyZSBubyBsb25nZXIgaW4gdGhlIGRv
Y3VtZW50ICM2OTYzCi0gICAgICAgICAgICAgICAgcmV0dXJuIG0gJiYgbS5wYXJlbnROb2RlID8g
W21dIDogW107Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0gICAgICAgIEV4cHIuZmlsdGVy
WyJJRCJdID0gZnVuY3Rpb24oIGlkICkgewotICAgICAgICAgICAgdmFyIGF0dHJJZCA9IGlkLnJl
cGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICk7Ci0gICAgICAgICAgICByZXR1cm4gZnVuY3Rp
b24oIGVsZW0gKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVsZW0uZ2V0QXR0cmlidXRlKCJp
ZCIpID09PSBhdHRySWQ7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotICAgIH0gZWxzZSB7
Ci0gICAgICAgIC8vIFN1cHBvcnQ6IElFNi83Ci0gICAgICAgIC8vIGdldEVsZW1lbnRCeUlkIGlz
IG5vdCByZWxpYWJsZSBhcyBhIGZpbmQgc2hvcnRjdXQKLSAgICAgICAgZGVsZXRlIEV4cHIuZmlu
ZFsiSUQiXTsKLQotICAgICAgICBFeHByLmZpbHRlclsiSUQiXSA9ICBmdW5jdGlvbiggaWQgKSB7
Ci0gICAgICAgICAgICB2YXIgYXR0cklkID0gaWQucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2Nh
cGUgKTsKLSAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiggZWxlbSApIHsKLSAgICAgICAgICAg
ICAgICB2YXIgbm9kZSA9IHR5cGVvZiBlbGVtLmdldEF0dHJpYnV0ZU5vZGUgIT09IHN0cnVuZGVm
aW5lZCAmJiBlbGVtLmdldEF0dHJpYnV0ZU5vZGUoImlkIik7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIG5vZGUgJiYgbm9kZS52YWx1ZSA9PT0gYXR0cklkOwotICAgICAgICAgICAgfTsKLSAgICAg
ICAgfTsKLSAgICB9Ci0KLSAgICAvLyBUYWcKLSAgICBFeHByLmZpbmRbIlRBRyJdID0gc3VwcG9y
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSA/Ci0gICAgICAgIGZ1bmN0aW9uKCB0YWcsIGNvbnRleHQg
KSB7Ci0gICAgICAgICAgICBpZiAoIHR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1l
ICE9PSBzdHJ1bmRlZmluZWQgKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoIHRhZyApOwotICAgICAgICAgICAgfQotICAgICAgICB9IDoKLSAg
ICAgICAgZnVuY3Rpb24oIHRhZywgY29udGV4dCApIHsKLSAgICAgICAgICAgIHZhciBlbGVtLAot
ICAgICAgICAgICAgICAgIHRtcCA9IFtdLAotICAgICAgICAgICAgICAgIGkgPSAwLAotICAgICAg
ICAgICAgICAgIHJlc3VsdHMgPSBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lKCB0YWcgKTsK
LQotICAgICAgICAgICAgLy8gRmlsdGVyIG91dCBwb3NzaWJsZSBjb21tZW50cwotICAgICAgICAg
ICAgaWYgKCB0YWcgPT09ICIqIiApIHsKLSAgICAgICAgICAgICAgICB3aGlsZSAoIChlbGVtID0g
cmVzdWx0c1tpKytdKSApIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCBlbGVtLm5vZGVUeXBl
ID09PSAxICkgewotICAgICAgICAgICAgICAgICAgICAgICAgdG1wLnB1c2goIGVsZW0gKTsKLSAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAg
IHJldHVybiB0bXA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0czsK
LSAgICAgICAgfTsKLQotICAgIC8vIENsYXNzCi0gICAgRXhwci5maW5kWyJDTEFTUyJdID0gc3Vw
cG9ydC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lICYmIGZ1bmN0aW9uKCBjbGFzc05hbWUsIGNvbnRl
eHQgKSB7Ci0gICAgICAgIGlmICggdHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFt
ZSAhPT0gc3RydW5kZWZpbmVkICYmIGRvY3VtZW50SXNIVE1MICkgewotICAgICAgICAgICAgcmV0
dXJuIGNvbnRleHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSggY2xhc3NOYW1lICk7Ci0gICAgICAg
IH0KLSAgICB9OwotCi0gICAgLyogUVNBL21hdGNoZXNTZWxlY3RvcgotICAgIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0gKi8KLQotICAgIC8vIFFTQSBhbmQgbWF0Y2hlc1NlbGVjdG9yIHN1cHBvcnQKLQotICAgIC8v
IG1hdGNoZXNTZWxlY3Rvcig6YWN0aXZlKSByZXBvcnRzIGZhbHNlIHdoZW4gdHJ1ZSAoSUU5L09w
ZXJhIDExLjUpCi0gICAgcmJ1Z2d5TWF0Y2hlcyA9IFtdOwotCi0gICAgLy8gcVNhKDpmb2N1cykg
cmVwb3J0cyBmYWxzZSB3aGVuIHRydWUgKENocm9tZSAyMSkKLSAgICAvLyBXZSBhbGxvdyB0aGlz
IGJlY2F1c2Ugb2YgYSBidWcgaW4gSUU4LzkgdGhhdCB0aHJvd3MgYW4gZXJyb3IKLSAgICAvLyB3
aGVuZXZlciBgZG9jdW1lbnQuYWN0aXZlRWxlbWVudGAgaXMgYWNjZXNzZWQgb24gYW4gaWZyYW1l
Ci0gICAgLy8gU28sIHdlIGFsbG93IDpmb2N1cyB0byBwYXNzIHRocm91Z2ggUVNBIGFsbCB0aGUg
dGltZSB0byBhdm9pZCB0aGUgSUUgZXJyb3IKLSAgICAvLyBTZWUgaHR0cDovL2J1Z3MuanF1ZXJ5
LmNvbS90aWNrZXQvMTMzNzgKLSAgICByYnVnZ3lRU0EgPSBbXTsKLQotICAgIGlmICggKHN1cHBv
cnQucXNhID0gcm5hdGl2ZS50ZXN0KCBkb2MucXVlcnlTZWxlY3RvckFsbCApKSApIHsKLSAgICAg
ICAgLy8gQnVpbGQgUVNBIHJlZ2V4Ci0gICAgICAgIC8vIFJlZ2V4IHN0cmF0ZWd5IGFkb3B0ZWQg
ZnJvbSBEaWVnbyBQZXJpbmkKLSAgICAgICAgYXNzZXJ0KGZ1bmN0aW9uKCBkaXYgKSB7Ci0gICAg
ICAgICAgICAvLyBTZWxlY3QgaXMgc2V0IHRvIGVtcHR5IHN0cmluZyBvbiBwdXJwb3NlCi0gICAg
ICAgICAgICAvLyBUaGlzIGlzIHRvIHRlc3QgSUUncyB0cmVhdG1lbnQgb2Ygbm90IGV4cGxpY2l0
bHkKLSAgICAgICAgICAgIC8vIHNldHRpbmcgYSBib29sZWFuIGNvbnRlbnQgYXR0cmlidXRlLAot
ICAgICAgICAgICAgLy8gc2luY2UgaXRzIHByZXNlbmNlIHNob3VsZCBiZSBlbm91Z2gKLSAgICAg
ICAgICAgIC8vIGh0dHA6Ly9idWdzLmpxdWVyeS5jb20vdGlja2V0LzEyMzU5Ci0gICAgICAgICAg
ICBkaXYuaW5uZXJIVE1MID0gIjxzZWxlY3QgdD0nJz48b3B0aW9uIHNlbGVjdGVkPScnPjwvb3B0
aW9uPjwvc2VsZWN0PiI7Ci0KLSAgICAgICAgICAgIC8vIFN1cHBvcnQ6IElFOCwgT3BlcmEgMTAt
MTIKLSAgICAgICAgICAgIC8vIE5vdGhpbmcgc2hvdWxkIGJlIHNlbGVjdGVkIHdoZW4gZW1wdHkg
c3RyaW5ncyBmb2xsb3cgXj0gb3IgJD0gb3IgKj0KLSAgICAgICAgICAgIGlmICggZGl2LnF1ZXJ5
U2VsZWN0b3JBbGwoIlt0Xj0nJ10iKS5sZW5ndGggKSB7Ci0gICAgICAgICAgICAgICAgcmJ1Z2d5
UVNBLnB1c2goICJbKl4kXT0iICsgd2hpdGVzcGFjZSArICIqKD86Jyd8XCJcIikiICk7Ci0gICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIFN1cHBvcnQ6IElFOAotICAgICAgICAgICAgLy8g
Qm9vbGVhbiBhdHRyaWJ1dGVzIGFuZCAidmFsdWUiIGFyZSBub3QgdHJlYXRlZCBjb3JyZWN0bHkK
LSAgICAgICAgICAgIGlmICggIWRpdi5xdWVyeVNlbGVjdG9yQWxsKCJbc2VsZWN0ZWRdIikubGVu
Z3RoICkgewotICAgICAgICAgICAgICAgIHJidWdneVFTQS5wdXNoKCAiXFxbIiArIHdoaXRlc3Bh
Y2UgKyAiKig/OnZhbHVlfCIgKyBib29sZWFucyArICIpIiApOwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICAvLyBXZWJraXQvT3BlcmEgLSA6Y2hlY2tlZCBzaG91bGQgcmV0dXJuIHNlbGVj
dGVkIG9wdGlvbiBlbGVtZW50cwotICAgICAgICAgICAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIv
MjAxMS9SRUMtY3NzMy1zZWxlY3RvcnMtMjAxMTA5MjkvI2NoZWNrZWQKLSAgICAgICAgICAgIC8v
IElFOCB0aHJvd3MgZXJyb3IgaGVyZSBhbmQgd2lsbCBub3Qgc2VlIGxhdGVyIHRlc3RzCi0gICAg
ICAgICAgICBpZiAoICFkaXYucXVlcnlTZWxlY3RvckFsbCgiOmNoZWNrZWQiKS5sZW5ndGggKSB7
Ci0gICAgICAgICAgICAgICAgcmJ1Z2d5UVNBLnB1c2goIjpjaGVja2VkIik7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGFzc2VydChmdW5jdGlvbiggZGl2ICkgewotICAg
ICAgICAgICAgLy8gU3VwcG9ydDogV2luZG93cyA4IE5hdGl2ZSBBcHBzCi0gICAgICAgICAgICAv
LyBUaGUgdHlwZSBhbmQgbmFtZSBhdHRyaWJ1dGVzIGFyZSByZXN0cmljdGVkIGR1cmluZyAuaW5u
ZXJIVE1MIGFzc2lnbm1lbnQKLSAgICAgICAgICAgIHZhciBpbnB1dCA9IGRvYy5jcmVhdGVFbGVt
ZW50KCJpbnB1dCIpOwotICAgICAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCAidHlwZSIsICJo
aWRkZW4iICk7Ci0gICAgICAgICAgICBkaXYuYXBwZW5kQ2hpbGQoIGlucHV0ICkuc2V0QXR0cmli
dXRlKCAibmFtZSIsICJEIiApOwotCi0gICAgICAgICAgICAvLyBTdXBwb3J0OiBJRTgKLSAgICAg
ICAgICAgIC8vIEVuZm9yY2UgY2FzZS1zZW5zaXRpdml0eSBvZiBuYW1lIGF0dHJpYnV0ZQotICAg
ICAgICAgICAgaWYgKCBkaXYucXVlcnlTZWxlY3RvckFsbCgiW25hbWU9ZF0iKS5sZW5ndGggKSB7
Ci0gICAgICAgICAgICAgICAgcmJ1Z2d5UVNBLnB1c2goICJuYW1lIiArIHdoaXRlc3BhY2UgKyAi
KlsqXiR8IX5dPz0iICk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIEZGIDMuNSAt
IDplbmFibGVkLzpkaXNhYmxlZCBhbmQgaGlkZGVuIGVsZW1lbnRzIChoaWRkZW4gZWxlbWVudHMg
YXJlIHN0aWxsIGVuYWJsZWQpCi0gICAgICAgICAgICAvLyBJRTggdGhyb3dzIGVycm9yIGhlcmUg
YW5kIHdpbGwgbm90IHNlZSBsYXRlciB0ZXN0cwotICAgICAgICAgICAgaWYgKCAhZGl2LnF1ZXJ5
U2VsZWN0b3JBbGwoIjplbmFibGVkIikubGVuZ3RoICkgewotICAgICAgICAgICAgICAgIHJidWdn
eVFTQS5wdXNoKCAiOmVuYWJsZWQiLCAiOmRpc2FibGVkIiApOwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICAvLyBPcGVyYSAxMC0xMSBkb2VzIG5vdCB0aHJvdyBvbiBwb3N0LWNvbW1hIGlu
dmFsaWQgcHNldWRvcwotICAgICAgICAgICAgZGl2LnF1ZXJ5U2VsZWN0b3JBbGwoIiosOngiKTsK
LSAgICAgICAgICAgIHJidWdneVFTQS5wdXNoKCIsLio6Iik7Ci0gICAgICAgIH0pOwotICAgIH0K
LQotICAgIGlmICggKHN1cHBvcnQubWF0Y2hlc1NlbGVjdG9yID0gcm5hdGl2ZS50ZXN0KCAobWF0
Y2hlcyA9IGRvY0VsZW0ud2Via2l0TWF0Y2hlc1NlbGVjdG9yIHx8Ci0gICAgICAgIGRvY0VsZW0u
bW96TWF0Y2hlc1NlbGVjdG9yIHx8Ci0gICAgICAgIGRvY0VsZW0ub01hdGNoZXNTZWxlY3RvciB8
fAotICAgICAgICBkb2NFbGVtLm1zTWF0Y2hlc1NlbGVjdG9yKSApKSApIHsKLQotICAgICAgICBh
c3NlcnQoZnVuY3Rpb24oIGRpdiApIHsKLSAgICAgICAgICAgIC8vIENoZWNrIHRvIHNlZSBpZiBp
dCdzIHBvc3NpYmxlIHRvIGRvIG1hdGNoZXNTZWxlY3RvcgotICAgICAgICAgICAgLy8gb24gYSBk
aXNjb25uZWN0ZWQgbm9kZSAoSUUgOSkKLSAgICAgICAgICAgIHN1cHBvcnQuZGlzY29ubmVjdGVk
TWF0Y2ggPSBtYXRjaGVzLmNhbGwoIGRpdiwgImRpdiIgKTsKLQotICAgICAgICAgICAgLy8gVGhp
cyBzaG91bGQgZmFpbCB3aXRoIGFuIGV4Y2VwdGlvbgotICAgICAgICAgICAgLy8gR2Vja28gZG9l
cyBub3QgZXJyb3IsIHJldHVybnMgZmFsc2UgaW5zdGVhZAotICAgICAgICAgICAgbWF0Y2hlcy5j
YWxsKCBkaXYsICJbcyE9JyddOngiICk7Ci0gICAgICAgICAgICByYnVnZ3lNYXRjaGVzLnB1c2go
ICIhPSIsIHBzZXVkb3MgKTsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAgcmJ1Z2d5UVNBID0g
cmJ1Z2d5UVNBLmxlbmd0aCAmJiBuZXcgUmVnRXhwKCByYnVnZ3lRU0Euam9pbigifCIpICk7Ci0g
ICAgcmJ1Z2d5TWF0Y2hlcyA9IHJidWdneU1hdGNoZXMubGVuZ3RoICYmIG5ldyBSZWdFeHAoIHJi
dWdneU1hdGNoZXMuam9pbigifCIpICk7Ci0KLSAgICAvKiBDb250YWlucwotICAgIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0gKi8KLSAgICBoYXNDb21wYXJlID0gcm5hdGl2ZS50ZXN0KCBkb2NFbGVtLmNvbXBhcmVE
b2N1bWVudFBvc2l0aW9uICk7Ci0KLSAgICAvLyBFbGVtZW50IGNvbnRhaW5zIGFub3RoZXIKLSAg
ICAvLyBQdXJwb3NlZnVsbHkgZG9lcyBub3QgaW1wbGVtZW50IGluY2x1c2l2ZSBkZXNjZW5kZW50
Ci0gICAgLy8gQXMgaW4sIGFuIGVsZW1lbnQgZG9lcyBub3QgY29udGFpbiBpdHNlbGYKLSAgICBj
b250YWlucyA9IGhhc0NvbXBhcmUgfHwgcm5hdGl2ZS50ZXN0KCBkb2NFbGVtLmNvbnRhaW5zICkg
PwotICAgICAgICBmdW5jdGlvbiggYSwgYiApIHsKLSAgICAgICAgICAgIHZhciBhZG93biA9IGEu
bm9kZVR5cGUgPT09IDkgPyBhLmRvY3VtZW50RWxlbWVudCA6IGEsCi0gICAgICAgICAgICAgICAg
YnVwID0gYiAmJiBiLnBhcmVudE5vZGU7Ci0gICAgICAgICAgICByZXR1cm4gYSA9PT0gYnVwIHx8
ICEhKCBidXAgJiYgYnVwLm5vZGVUeXBlID09PSAxICYmICgKLSAgICAgICAgICAgICAgICBhZG93
bi5jb250YWlucyA/Ci0gICAgICAgICAgICAgICAgICAgIGFkb3duLmNvbnRhaW5zKCBidXAgKSA6
Ci0gICAgICAgICAgICAgICAgICAgIGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24gJiYgYS5jb21w
YXJlRG9jdW1lbnRQb3NpdGlvbiggYnVwICkgJiAxNgotICAgICAgICAgICAgKSk7Ci0gICAgICAg
IH0gOgotICAgICAgICBmdW5jdGlvbiggYSwgYiApIHsKLSAgICAgICAgICAgIGlmICggYiApIHsK
LSAgICAgICAgICAgICAgICB3aGlsZSAoIChiID0gYi5wYXJlbnROb2RlKSApIHsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKCBiID09PSBhICkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH07Ci0KLSAgICAv
KiBTb3J0aW5nCi0gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0gICAgLy8gRG9jdW1lbnQgb3JkZXIg
c29ydGluZwotICAgIHNvcnRPcmRlciA9IGhhc0NvbXBhcmUgPwotICAgIGZ1bmN0aW9uKCBhLCBi
ICkgewotCi0gICAgICAgIC8vIEZsYWcgZm9yIGR1cGxpY2F0ZSByZW1vdmFsCi0gICAgICAgIGlm
ICggYSA9PT0gYiApIHsKLSAgICAgICAgICAgIGhhc0R1cGxpY2F0ZSA9IHRydWU7Ci0gICAgICAg
ICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFNvcnQgb24gbWV0aG9kIGV4
aXN0ZW5jZSBpZiBvbmx5IG9uZSBpbnB1dCBoYXMgY29tcGFyZURvY3VtZW50UG9zaXRpb24KLSAg
ICAgICAgdmFyIGNvbXBhcmUgPSAhYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiAtICFiLmNvbXBh
cmVEb2N1bWVudFBvc2l0aW9uOwotICAgICAgICBpZiAoIGNvbXBhcmUgKSB7Ci0gICAgICAgICAg
ICByZXR1cm4gY29tcGFyZTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIENhbGN1bGF0ZSBwb3Np
dGlvbiBpZiBib3RoIGlucHV0cyBiZWxvbmcgdG8gdGhlIHNhbWUgZG9jdW1lbnQKLSAgICAgICAg
Y29tcGFyZSA9ICggYS5vd25lckRvY3VtZW50IHx8IGEgKSA9PT0gKCBiLm93bmVyRG9jdW1lbnQg
fHwgYiApID8KLSAgICAgICAgICAgIGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oIGIgKSA6Ci0K
LSAgICAgICAgICAgIC8vIE90aGVyd2lzZSB3ZSBrbm93IHRoZXkgYXJlIGRpc2Nvbm5lY3RlZAot
ICAgICAgICAgICAgMTsKLQotICAgICAgICAvLyBEaXNjb25uZWN0ZWQgbm9kZXMKLSAgICAgICAg
aWYgKCBjb21wYXJlICYgMSB8fAotICAgICAgICAgICAgKCFzdXBwb3J0LnNvcnREZXRhY2hlZCAm
JiBiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKCBhICkgPT09IGNvbXBhcmUpICkgewotCi0gICAg
ICAgICAgICAvLyBDaG9vc2UgdGhlIGZpcnN0IGVsZW1lbnQgdGhhdCBpcyByZWxhdGVkIHRvIG91
ciBwcmVmZXJyZWQgZG9jdW1lbnQKLSAgICAgICAgICAgIGlmICggYSA9PT0gZG9jIHx8IGEub3du
ZXJEb2N1bWVudCA9PT0gcHJlZmVycmVkRG9jICYmIGNvbnRhaW5zKHByZWZlcnJlZERvYywgYSkg
KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgaWYgKCBiID09PSBkb2MgfHwgYi5vd25lckRvY3VtZW50ID09PSBwcmVmZXJyZWREb2MgJiYg
Y29udGFpbnMocHJlZmVycmVkRG9jLCBiKSApIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gMTsK
LSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gTWFpbnRhaW4gb3JpZ2luYWwgb3JkZXIK
LSAgICAgICAgICAgIHJldHVybiBzb3J0SW5wdXQgPwotICAgICAgICAgICAgICAgICggaW5kZXhP
Zi5jYWxsKCBzb3J0SW5wdXQsIGEgKSAtIGluZGV4T2YuY2FsbCggc29ydElucHV0LCBiICkgKSA6
Ci0gICAgICAgICAgICAgICAgMDsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBjb21wYXJl
ICYgNCA/IC0xIDogMTsKLSAgICB9IDoKLSAgICBmdW5jdGlvbiggYSwgYiApIHsKLSAgICAgICAg
Ly8gRXhpdCBlYXJseSBpZiB0aGUgbm9kZXMgYXJlIGlkZW50aWNhbAotICAgICAgICBpZiAoIGEg
PT09IGIgKSB7Ci0gICAgICAgICAgICBoYXNEdXBsaWNhdGUgPSB0cnVlOwotICAgICAgICAgICAg
cmV0dXJuIDA7Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgY3VyLAotICAgICAgICAgICAgaSA9
IDAsCi0gICAgICAgICAgICBhdXAgPSBhLnBhcmVudE5vZGUsCi0gICAgICAgICAgICBidXAgPSBi
LnBhcmVudE5vZGUsCi0gICAgICAgICAgICBhcCA9IFsgYSBdLAotICAgICAgICAgICAgYnAgPSBb
IGIgXTsKLQotICAgICAgICAvLyBQYXJlbnRsZXNzIG5vZGVzIGFyZSBlaXRoZXIgZG9jdW1lbnRz
IG9yIGRpc2Nvbm5lY3RlZAotICAgICAgICBpZiAoICFhdXAgfHwgIWJ1cCApIHsKLSAgICAgICAg
ICAgIHJldHVybiBhID09PSBkb2MgPyAtMSA6Ci0gICAgICAgICAgICAgICAgYiA9PT0gZG9jID8g
MSA6Ci0gICAgICAgICAgICAgICAgYXVwID8gLTEgOgotICAgICAgICAgICAgICAgIGJ1cCA/IDEg
OgotICAgICAgICAgICAgICAgIHNvcnRJbnB1dCA/Ci0gICAgICAgICAgICAgICAgKCBpbmRleE9m
LmNhbGwoIHNvcnRJbnB1dCwgYSApIC0gaW5kZXhPZi5jYWxsKCBzb3J0SW5wdXQsIGIgKSApIDoK
LSAgICAgICAgICAgICAgICAwOwotCi0gICAgICAgIC8vIElmIHRoZSBub2RlcyBhcmUgc2libGlu
Z3MsIHdlIGNhbiBkbyBhIHF1aWNrIGNoZWNrCi0gICAgICAgIH0gZWxzZSBpZiAoIGF1cCA9PT0g
YnVwICkgewotICAgICAgICAgICAgcmV0dXJuIHNpYmxpbmdDaGVjayggYSwgYiApOwotICAgICAg
ICB9Ci0KLSAgICAgICAgLy8gT3RoZXJ3aXNlIHdlIG5lZWQgZnVsbCBsaXN0cyBvZiB0aGVpciBh
bmNlc3RvcnMgZm9yIGNvbXBhcmlzb24KLSAgICAgICAgY3VyID0gYTsKLSAgICAgICAgd2hpbGUg
KCAoY3VyID0gY3VyLnBhcmVudE5vZGUpICkgewotICAgICAgICAgICAgYXAudW5zaGlmdCggY3Vy
ICk7Ci0gICAgICAgIH0KLSAgICAgICAgY3VyID0gYjsKLSAgICAgICAgd2hpbGUgKCAoY3VyID0g
Y3VyLnBhcmVudE5vZGUpICkgewotICAgICAgICAgICAgYnAudW5zaGlmdCggY3VyICk7Ci0gICAg
ICAgIH0KLQotICAgICAgICAvLyBXYWxrIGRvd24gdGhlIHRyZWUgbG9va2luZyBmb3IgYSBkaXNj
cmVwYW5jeQotICAgICAgICB3aGlsZSAoIGFwW2ldID09PSBicFtpXSApIHsKLSAgICAgICAgICAg
IGkrKzsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBpID8KLSAgICAgICAgICAgIC8vIERv
IGEgc2libGluZyBjaGVjayBpZiB0aGUgbm9kZXMgaGF2ZSBhIGNvbW1vbiBhbmNlc3RvcgotICAg
ICAgICAgICAgc2libGluZ0NoZWNrKCBhcFtpXSwgYnBbaV0gKSA6Ci0KLSAgICAgICAgICAgIC8v
IE90aGVyd2lzZSBub2RlcyBpbiBvdXIgZG9jdW1lbnQgc29ydCBmaXJzdAotICAgICAgICAgICAg
YXBbaV0gPT09IHByZWZlcnJlZERvYyA/IC0xIDoKLSAgICAgICAgICAgIGJwW2ldID09PSBwcmVm
ZXJyZWREb2MgPyAxIDoKLSAgICAgICAgICAgIDA7Ci0gICAgfTsKLQotICAgIHJldHVybiBkb2M7
Ci19OwotCi1TaXp6bGUubWF0Y2hlcyA9IGZ1bmN0aW9uKCBleHByLCBlbGVtZW50cyApIHsKLSAg
ICByZXR1cm4gU2l6emxlKCBleHByLCBudWxsLCBudWxsLCBlbGVtZW50cyApOwotfTsKLQotU2l6
emxlLm1hdGNoZXNTZWxlY3RvciA9IGZ1bmN0aW9uKCBlbGVtLCBleHByICkgewotICAgIC8vIFNl
dCBkb2N1bWVudCB2YXJzIGlmIG5lZWRlZAotICAgIGlmICggKCBlbGVtLm93bmVyRG9jdW1lbnQg
fHwgZWxlbSApICE9PSBkb2N1bWVudCApIHsKLSAgICAgICAgc2V0RG9jdW1lbnQoIGVsZW0gKTsK
LSAgICB9Ci0KLSAgICAvLyBNYWtlIHN1cmUgdGhhdCBhdHRyaWJ1dGUgc2VsZWN0b3JzIGFyZSBx
dW90ZWQKLSAgICBleHByID0gZXhwci5yZXBsYWNlKCByYXR0cmlidXRlUXVvdGVzLCAiPSckMSdd
IiApOwotCi0gICAgaWYgKCBzdXBwb3J0Lm1hdGNoZXNTZWxlY3RvciAmJiBkb2N1bWVudElzSFRN
TCAmJgotICAgICAgICAoICFyYnVnZ3lNYXRjaGVzIHx8ICFyYnVnZ3lNYXRjaGVzLnRlc3QoIGV4
cHIgKSApICYmCi0gICAgICAgICggIXJidWdneVFTQSAgICAgfHwgIXJidWdneVFTQS50ZXN0KCBl
eHByICkgKSApIHsKLQotICAgICAgICB0cnkgewotICAgICAgICAgICAgdmFyIHJldCA9IG1hdGNo
ZXMuY2FsbCggZWxlbSwgZXhwciApOwotCi0gICAgICAgICAgICAvLyBJRSA5J3MgbWF0Y2hlc1Nl
bGVjdG9yIHJldHVybnMgZmFsc2Ugb24gZGlzY29ubmVjdGVkIG5vZGVzCi0gICAgICAgICAgICBp
ZiAoIHJldCB8fCBzdXBwb3J0LmRpc2Nvbm5lY3RlZE1hdGNoIHx8Ci0gICAgICAgICAgICAgICAg
ICAgIC8vIEFzIHdlbGwsIGRpc2Nvbm5lY3RlZCBub2RlcyBhcmUgc2FpZCB0byBiZSBpbiBhIGRv
Y3VtZW50Ci0gICAgICAgICAgICAgICAgICAgIC8vIGZyYWdtZW50IGluIElFIDkKLSAgICAgICAg
ICAgICAgICAgICAgZWxlbS5kb2N1bWVudCAmJiBlbGVtLmRvY3VtZW50Lm5vZGVUeXBlICE9PSAx
MSApIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gcmV0OwotICAgICAgICAgICAgfQotICAgICAg
ICB9IGNhdGNoKGUpIHt9Ci0gICAgfQotCi0gICAgcmV0dXJuIFNpenpsZSggZXhwciwgZG9jdW1l
bnQsIG51bGwsIFtlbGVtXSApLmxlbmd0aCA+IDA7Ci19OwotCi1TaXp6bGUuY29udGFpbnMgPSBm
dW5jdGlvbiggY29udGV4dCwgZWxlbSApIHsKLSAgICAvLyBTZXQgZG9jdW1lbnQgdmFycyBpZiBu
ZWVkZWQKLSAgICBpZiAoICggY29udGV4dC5vd25lckRvY3VtZW50IHx8IGNvbnRleHQgKSAhPT0g
ZG9jdW1lbnQgKSB7Ci0gICAgICAgIHNldERvY3VtZW50KCBjb250ZXh0ICk7Ci0gICAgfQotICAg
IHJldHVybiBjb250YWlucyggY29udGV4dCwgZWxlbSApOwotfTsKLQotU2l6emxlLmF0dHIgPSBm
dW5jdGlvbiggZWxlbSwgbmFtZSApIHsKLSAgICAvLyBTZXQgZG9jdW1lbnQgdmFycyBpZiBuZWVk
ZWQKLSAgICBpZiAoICggZWxlbS5vd25lckRvY3VtZW50IHx8IGVsZW0gKSAhPT0gZG9jdW1lbnQg
KSB7Ci0gICAgICAgIHNldERvY3VtZW50KCBlbGVtICk7Ci0gICAgfQotCi0gICAgdmFyIGZuID0g
RXhwci5hdHRySGFuZGxlWyBuYW1lLnRvTG93ZXJDYXNlKCkgXSwKLSAgICAgICAgLy8gRG9uJ3Qg
Z2V0IGZvb2xlZCBieSBPYmplY3QucHJvdG90eXBlIHByb3BlcnRpZXMgKGpRdWVyeSAjMTM4MDcp
Ci0gICAgICAgIHZhbCA9IGZuICYmIGhhc093bi5jYWxsKCBFeHByLmF0dHJIYW5kbGUsIG5hbWUu
dG9Mb3dlckNhc2UoKSApID8KLSAgICAgICAgICAgIGZuKCBlbGVtLCBuYW1lLCAhZG9jdW1lbnRJ
c0hUTUwgKSA6Ci0gICAgICAgICAgICB1bmRlZmluZWQ7Ci0KLSAgICByZXR1cm4gdmFsICE9PSB1
bmRlZmluZWQgPwotICAgICAgICB2YWwgOgotICAgICAgICBzdXBwb3J0LmF0dHJpYnV0ZXMgfHwg
IWRvY3VtZW50SXNIVE1MID8KLSAgICAgICAgICAgIGVsZW0uZ2V0QXR0cmlidXRlKCBuYW1lICkg
OgotICAgICAgICAgICAgKHZhbCA9IGVsZW0uZ2V0QXR0cmlidXRlTm9kZShuYW1lKSkgJiYgdmFs
LnNwZWNpZmllZCA/Ci0gICAgICAgICAgICAgICAgdmFsLnZhbHVlIDoKLSAgICAgICAgICAgICAg
ICBudWxsOwotfTsKLQotU2l6emxlLmVycm9yID0gZnVuY3Rpb24oIG1zZyApIHsKLSAgICB0aHJv
dyBuZXcgRXJyb3IoICJTeW50YXggZXJyb3IsIHVucmVjb2duaXplZCBleHByZXNzaW9uOiAiICsg
bXNnICk7Ci19OwotCi0vKioKLSAqIERvY3VtZW50IHNvcnRpbmcgYW5kIHJlbW92aW5nIGR1cGxp
Y2F0ZXMKLSAqIEBwYXJhbSB7QXJyYXlMaWtlfSByZXN1bHRzCi0gKi8KLVNpenpsZS51bmlxdWVT
b3J0ID0gZnVuY3Rpb24oIHJlc3VsdHMgKSB7Ci0gICAgdmFyIGVsZW0sCi0gICAgICAgIGR1cGxp
Y2F0ZXMgPSBbXSwKLSAgICAgICAgaiA9IDAsCi0gICAgICAgIGkgPSAwOwotCi0gICAgLy8gVW5s
ZXNzIHdlICprbm93KiB3ZSBjYW4gZGV0ZWN0IGR1cGxpY2F0ZXMsIGFzc3VtZSB0aGVpciBwcmVz
ZW5jZQotICAgIGhhc0R1cGxpY2F0ZSA9ICFzdXBwb3J0LmRldGVjdER1cGxpY2F0ZXM7Ci0gICAg
c29ydElucHV0ID0gIXN1cHBvcnQuc29ydFN0YWJsZSAmJiByZXN1bHRzLnNsaWNlKCAwICk7Ci0g
ICAgcmVzdWx0cy5zb3J0KCBzb3J0T3JkZXIgKTsKLQotICAgIGlmICggaGFzRHVwbGljYXRlICkg
ewotICAgICAgICB3aGlsZSAoIChlbGVtID0gcmVzdWx0c1tpKytdKSApIHsKLSAgICAgICAgICAg
IGlmICggZWxlbSA9PT0gcmVzdWx0c1sgaSBdICkgewotICAgICAgICAgICAgICAgIGogPSBkdXBs
aWNhdGVzLnB1c2goIGkgKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICB3aGls
ZSAoIGotLSApIHsKLSAgICAgICAgICAgIHJlc3VsdHMuc3BsaWNlKCBkdXBsaWNhdGVzWyBqIF0s
IDEgKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIENsZWFyIGlucHV0IGFmdGVyIHNvcnRp
bmcgdG8gcmVsZWFzZSBvYmplY3RzCi0gICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9qcXVl
cnkvc2l6emxlL3B1bGwvMjI1Ci0gICAgc29ydElucHV0ID0gbnVsbDsKLQotICAgIHJldHVybiBy
ZXN1bHRzOwotfTsKLQotLyoqCi0gKiBVdGlsaXR5IGZ1bmN0aW9uIGZvciByZXRyaWV2aW5nIHRo
ZSB0ZXh0IHZhbHVlIG9mIGFuIGFycmF5IG9mIERPTSBub2RlcwotICogQHBhcmFtIHtBcnJheXxF
bGVtZW50fSBlbGVtCi0gKi8KLWdldFRleHQgPSBTaXp6bGUuZ2V0VGV4dCA9IGZ1bmN0aW9uKCBl
bGVtICkgewotICAgIHZhciBub2RlLAotICAgICAgICByZXQgPSAiIiwKLSAgICAgICAgaSA9IDAs
Ci0gICAgICAgIG5vZGVUeXBlID0gZWxlbS5ub2RlVHlwZTsKLQotICAgIGlmICggIW5vZGVUeXBl
ICkgewotICAgICAgICAvLyBJZiBubyBub2RlVHlwZSwgdGhpcyBpcyBleHBlY3RlZCB0byBiZSBh
biBhcnJheQotICAgICAgICB3aGlsZSAoIChub2RlID0gZWxlbVtpKytdKSApIHsKLSAgICAgICAg
ICAgIC8vIERvIG5vdCB0cmF2ZXJzZSBjb21tZW50IG5vZGVzCi0gICAgICAgICAgICByZXQgKz0g
Z2V0VGV4dCggbm9kZSApOwotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmICggbm9kZVR5cGUgPT09
IDEgfHwgbm9kZVR5cGUgPT09IDkgfHwgbm9kZVR5cGUgPT09IDExICkgewotICAgICAgICAvLyBV
c2UgdGV4dENvbnRlbnQgZm9yIGVsZW1lbnRzCi0gICAgICAgIC8vIGlubmVyVGV4dCB1c2FnZSBy
ZW1vdmVkIGZvciBjb25zaXN0ZW5jeSBvZiBuZXcgbGluZXMgKGpRdWVyeSAjMTExNTMpCi0gICAg
ICAgIGlmICggdHlwZW9mIGVsZW0udGV4dENvbnRlbnQgPT09ICJzdHJpbmciICkgewotICAgICAg
ICAgICAgcmV0dXJuIGVsZW0udGV4dENvbnRlbnQ7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAvLyBUcmF2ZXJzZSBpdHMgY2hpbGRyZW4KLSAgICAgICAgICAgIGZvciAoIGVsZW0gPSBl
bGVtLmZpcnN0Q2hpbGQ7IGVsZW07IGVsZW0gPSBlbGVtLm5leHRTaWJsaW5nICkgewotICAgICAg
ICAgICAgICAgIHJldCArPSBnZXRUZXh0KCBlbGVtICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLSAgICB9IGVsc2UgaWYgKCBub2RlVHlwZSA9PT0gMyB8fCBub2RlVHlwZSA9PT0gNCApIHsK
LSAgICAgICAgcmV0dXJuIGVsZW0ubm9kZVZhbHVlOwotICAgIH0KLSAgICAvLyBEbyBub3QgaW5j
bHVkZSBjb21tZW50IG9yIHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb24gbm9kZXMKLQotICAgIHJldHVy
biByZXQ7Ci19OwotCi1FeHByID0gU2l6emxlLnNlbGVjdG9ycyA9IHsKLQotICAgIC8vIENhbiBi
ZSBhZGp1c3RlZCBieSB0aGUgdXNlcgotICAgIGNhY2hlTGVuZ3RoOiA1MCwKLQotICAgIGNyZWF0
ZVBzZXVkbzogbWFya0Z1bmN0aW9uLAotCi0gICAgbWF0Y2g6IG1hdGNoRXhwciwKLQotICAgIGF0
dHJIYW5kbGU6IHt9LAotCi0gICAgZmluZDoge30sCi0KLSAgICByZWxhdGl2ZTogewotICAgICAg
ICAiPiI6IHsgZGlyOiAicGFyZW50Tm9kZSIsIGZpcnN0OiB0cnVlIH0sCi0gICAgICAgICIgIjog
eyBkaXI6ICJwYXJlbnROb2RlIiB9LAotICAgICAgICAiKyI6IHsgZGlyOiAicHJldmlvdXNTaWJs
aW5nIiwgZmlyc3Q6IHRydWUgfSwKLSAgICAgICAgIn4iOiB7IGRpcjogInByZXZpb3VzU2libGlu
ZyIgfQotICAgIH0sCi0KLSAgICBwcmVGaWx0ZXI6IHsKLSAgICAgICAgIkFUVFIiOiBmdW5jdGlv
biggbWF0Y2ggKSB7Ci0gICAgICAgICAgICBtYXRjaFsxXSA9IG1hdGNoWzFdLnJlcGxhY2UoIHJ1
bmVzY2FwZSwgZnVuZXNjYXBlICk7Ci0KLSAgICAgICAgICAgIC8vIE1vdmUgdGhlIGdpdmVuIHZh
bHVlIHRvIG1hdGNoWzNdIHdoZXRoZXIgcXVvdGVkIG9yIHVucXVvdGVkCi0gICAgICAgICAgICBt
YXRjaFszXSA9ICggbWF0Y2hbNF0gfHwgbWF0Y2hbNV0gfHwgIiIgKS5yZXBsYWNlKCBydW5lc2Nh
cGUsIGZ1bmVzY2FwZSApOwotCi0gICAgICAgICAgICBpZiAoIG1hdGNoWzJdID09PSAifj0iICkg
ewotICAgICAgICAgICAgICAgIG1hdGNoWzNdID0gIiAiICsgbWF0Y2hbM10gKyAiICI7Ci0gICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgIHJldHVybiBtYXRjaC5zbGljZSggMCwgNCApOwotICAg
ICAgICB9LAotCi0gICAgICAgICJDSElMRCI6IGZ1bmN0aW9uKCBtYXRjaCApIHsKLSAgICAgICAg
ICAgIC8qIG1hdGNoZXMgZnJvbSBtYXRjaEV4cHJbIkNISUxEIl0KLSAgICAgICAgICAgICAgICAx
IHR5cGUgKG9ubHl8bnRofC4uLikKLSAgICAgICAgICAgICAgICAyIHdoYXQgKGNoaWxkfG9mLXR5
cGUpCi0gICAgICAgICAgICAgICAgMyBhcmd1bWVudCAoZXZlbnxvZGR8XGQqfFxkKm4oWystXVxk
Kyk/fC4uLikKLSAgICAgICAgICAgICAgICA0IHhuLWNvbXBvbmVudCBvZiB4bit5IGFyZ3VtZW50
IChbKy1dP1xkKm58KQotICAgICAgICAgICAgICAgIDUgc2lnbiBvZiB4bi1jb21wb25lbnQKLSAg
ICAgICAgICAgICAgICA2IHggb2YgeG4tY29tcG9uZW50Ci0gICAgICAgICAgICAgICAgNyBzaWdu
IG9mIHktY29tcG9uZW50Ci0gICAgICAgICAgICAgICAgOCB5IG9mIHktY29tcG9uZW50Ci0gICAg
ICAgICAgICAqLwotICAgICAgICAgICAgbWF0Y2hbMV0gPSBtYXRjaFsxXS50b0xvd2VyQ2FzZSgp
OwotCi0gICAgICAgICAgICBpZiAoIG1hdGNoWzFdLnNsaWNlKCAwLCAzICkgPT09ICJudGgiICkg
ewotICAgICAgICAgICAgICAgIC8vIG50aC0qIHJlcXVpcmVzIGFyZ3VtZW50Ci0gICAgICAgICAg
ICAgICAgaWYgKCAhbWF0Y2hbM10gKSB7Ci0gICAgICAgICAgICAgICAgICAgIFNpenpsZS5lcnJv
ciggbWF0Y2hbMF0gKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBu
dW1lcmljIHggYW5kIHkgcGFyYW1ldGVycyBmb3IgRXhwci5maWx0ZXIuQ0hJTEQKLSAgICAgICAg
ICAgICAgICAvLyByZW1lbWJlciB0aGF0IGZhbHNlL3RydWUgY2FzdCByZXNwZWN0aXZlbHkgdG8g
MC8xCi0gICAgICAgICAgICAgICAgbWF0Y2hbNF0gPSArKCBtYXRjaFs0XSA/IG1hdGNoWzVdICsg
KG1hdGNoWzZdIHx8IDEpIDogMiAqICggbWF0Y2hbM10gPT09ICJldmVuIiB8fCBtYXRjaFszXSA9
PT0gIm9kZCIgKSApOwotICAgICAgICAgICAgICAgIG1hdGNoWzVdID0gKyggKCBtYXRjaFs3XSAr
IG1hdGNoWzhdICkgfHwgbWF0Y2hbM10gPT09ICJvZGQiICk7Ci0KLSAgICAgICAgICAgIC8vIG90
aGVyIHR5cGVzIHByb2hpYml0IGFyZ3VtZW50cwotICAgICAgICAgICAgfSBlbHNlIGlmICggbWF0
Y2hbM10gKSB7Ci0gICAgICAgICAgICAgICAgU2l6emxlLmVycm9yKCBtYXRjaFswXSApOwotICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICByZXR1cm4gbWF0Y2g7Ci0gICAgICAgIH0sCi0KLSAg
ICAgICAgIlBTRVVETyI6IGZ1bmN0aW9uKCBtYXRjaCApIHsKLSAgICAgICAgICAgIHZhciBleGNl
c3MsCi0gICAgICAgICAgICAgICAgdW5xdW90ZWQgPSAhbWF0Y2hbNV0gJiYgbWF0Y2hbMl07Ci0K
LSAgICAgICAgICAgIGlmICggbWF0Y2hFeHByWyJDSElMRCJdLnRlc3QoIG1hdGNoWzBdICkgKSB7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgIC8vIEFjY2VwdCBxdW90ZWQgYXJndW1lbnRzIGFzLWlzCi0gICAgICAgICAgICBpZiAoIG1h
dGNoWzNdICYmIG1hdGNoWzRdICE9PSB1bmRlZmluZWQgKSB7Ci0gICAgICAgICAgICAgICAgbWF0
Y2hbMl0gPSBtYXRjaFs0XTsKLQotICAgICAgICAgICAgLy8gU3RyaXAgZXhjZXNzIGNoYXJhY3Rl
cnMgZnJvbSB1bnF1b3RlZCBhcmd1bWVudHMKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoIHVucXVv
dGVkICYmIHJwc2V1ZG8udGVzdCggdW5xdW90ZWQgKSAmJgotICAgICAgICAgICAgICAgIC8vIEdl
dCBleGNlc3MgZnJvbSB0b2tlbml6ZSAocmVjdXJzaXZlbHkpCi0gICAgICAgICAgICAgICAgKGV4
Y2VzcyA9IHRva2VuaXplKCB1bnF1b3RlZCwgdHJ1ZSApKSAmJgotICAgICAgICAgICAgICAgIC8v
IGFkdmFuY2UgdG8gdGhlIG5leHQgY2xvc2luZyBwYXJlbnRoZXNpcwotICAgICAgICAgICAgICAg
IChleGNlc3MgPSB1bnF1b3RlZC5pbmRleE9mKCAiKSIsIHVucXVvdGVkLmxlbmd0aCAtIGV4Y2Vz
cyApIC0gdW5xdW90ZWQubGVuZ3RoKSApIHsKLQotICAgICAgICAgICAgICAgIC8vIGV4Y2VzcyBp
cyBhIG5lZ2F0aXZlIGluZGV4Ci0gICAgICAgICAgICAgICAgbWF0Y2hbMF0gPSBtYXRjaFswXS5z
bGljZSggMCwgZXhjZXNzICk7Ci0gICAgICAgICAgICAgICAgbWF0Y2hbMl0gPSB1bnF1b3RlZC5z
bGljZSggMCwgZXhjZXNzICk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIFJldHVy
biBvbmx5IGNhcHR1cmVzIG5lZWRlZCBieSB0aGUgcHNldWRvIGZpbHRlciBtZXRob2QgKHR5cGUg
YW5kIGFyZ3VtZW50KQotICAgICAgICAgICAgcmV0dXJuIG1hdGNoLnNsaWNlKCAwLCAzICk7Ci0g
ICAgICAgIH0KLSAgICB9LAotCi0gICAgZmlsdGVyOiB7Ci0KLSAgICAgICAgIlRBRyI6IGZ1bmN0
aW9uKCBub2RlTmFtZVNlbGVjdG9yICkgewotICAgICAgICAgICAgdmFyIG5vZGVOYW1lID0gbm9k
ZU5hbWVTZWxlY3Rvci5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApLnRvTG93ZXJDYXNl
KCk7Ci0gICAgICAgICAgICByZXR1cm4gbm9kZU5hbWVTZWxlY3RvciA9PT0gIioiID8KLSAgICAg
ICAgICAgICAgICBmdW5jdGlvbigpIHsgcmV0dXJuIHRydWU7IH0gOgotICAgICAgICAgICAgICAg
IGZ1bmN0aW9uKCBlbGVtICkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbS5ub2Rl
TmFtZSAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IG5vZGVOYW1lOwotICAgICAg
ICAgICAgICAgIH07Ci0gICAgICAgIH0sCi0KLSAgICAgICAgIkNMQVNTIjogZnVuY3Rpb24oIGNs
YXNzTmFtZSApIHsKLSAgICAgICAgICAgIHZhciBwYXR0ZXJuID0gY2xhc3NDYWNoZVsgY2xhc3NO
YW1lICsgIiAiIF07Ci0KLSAgICAgICAgICAgIHJldHVybiBwYXR0ZXJuIHx8Ci0gICAgICAgICAg
ICAgICAgKHBhdHRlcm4gPSBuZXcgUmVnRXhwKCAiKF58IiArIHdoaXRlc3BhY2UgKyAiKSIgKyBj
bGFzc05hbWUgKyAiKCIgKyB3aGl0ZXNwYWNlICsgInwkKSIgKSkgJiYKLSAgICAgICAgICAgICAg
ICBjbGFzc0NhY2hlKCBjbGFzc05hbWUsIGZ1bmN0aW9uKCBlbGVtICkgewotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gcGF0dGVybi50ZXN0KCB0eXBlb2YgZWxlbS5jbGFzc05hbWUgPT09ICJz
dHJpbmciICYmIGVsZW0uY2xhc3NOYW1lIHx8IHR5cGVvZiBlbGVtLmdldEF0dHJpYnV0ZSAhPT0g
c3RydW5kZWZpbmVkICYmIGVsZW0uZ2V0QXR0cmlidXRlKCJjbGFzcyIpIHx8ICIiICk7Ci0gICAg
ICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgIkFUVFIiOiBmdW5jdGlvbigg
bmFtZSwgb3BlcmF0b3IsIGNoZWNrICkgewotICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCBl
bGVtICkgewotICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSBTaXp6bGUuYXR0ciggZWxlbSwg
bmFtZSApOwotCi0gICAgICAgICAgICAgICAgaWYgKCByZXN1bHQgPT0gbnVsbCApIHsKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIG9wZXJhdG9yID09PSAiIT0iOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICBpZiAoICFvcGVyYXRvciApIHsKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgcmVz
dWx0ICs9ICIiOwotCi0gICAgICAgICAgICAgICAgcmV0dXJuIG9wZXJhdG9yID09PSAiPSIgPyBy
ZXN1bHQgPT09IGNoZWNrIDoKLSAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3IgPT09ICIhPSIg
PyByZXN1bHQgIT09IGNoZWNrIDoKLSAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3IgPT09ICJe
PSIgPyBjaGVjayAmJiByZXN1bHQuaW5kZXhPZiggY2hlY2sgKSA9PT0gMCA6Ci0gICAgICAgICAg
ICAgICAgICAgIG9wZXJhdG9yID09PSAiKj0iID8gY2hlY2sgJiYgcmVzdWx0LmluZGV4T2YoIGNo
ZWNrICkgPiAtMSA6Ci0gICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yID09PSAiJD0iID8gY2hl
Y2sgJiYgcmVzdWx0LnNsaWNlKCAtY2hlY2subGVuZ3RoICkgPT09IGNoZWNrIDoKLSAgICAgICAg
ICAgICAgICAgICAgb3BlcmF0b3IgPT09ICJ+PSIgPyAoICIgIiArIHJlc3VsdCArICIgIiApLmlu
ZGV4T2YoIGNoZWNrICkgPiAtMSA6Ci0gICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yID09PSAi
fD0iID8gcmVzdWx0ID09PSBjaGVjayB8fCByZXN1bHQuc2xpY2UoIDAsIGNoZWNrLmxlbmd0aCAr
IDEgKSA9PT0gY2hlY2sgKyAiLSIgOgotICAgICAgICAgICAgICAgICAgICBmYWxzZTsKLSAgICAg
ICAgICAgIH07Ci0gICAgICAgIH0sCi0KLSAgICAgICAgIkNISUxEIjogZnVuY3Rpb24oIHR5cGUs
IHdoYXQsIGFyZ3VtZW50LCBmaXJzdCwgbGFzdCApIHsKLSAgICAgICAgICAgIHZhciBzaW1wbGUg
PSB0eXBlLnNsaWNlKCAwLCAzICkgIT09ICJudGgiLAotICAgICAgICAgICAgICAgIGZvcndhcmQg
PSB0eXBlLnNsaWNlKCAtNCApICE9PSAibGFzdCIsCi0gICAgICAgICAgICAgICAgb2ZUeXBlID0g
d2hhdCA9PT0gIm9mLXR5cGUiOwotCi0gICAgICAgICAgICByZXR1cm4gZmlyc3QgPT09IDEgJiYg
bGFzdCA9PT0gMCA/Ci0KLSAgICAgICAgICAgICAgICAvLyBTaG9ydGN1dCBmb3IgOm50aC0qKG4p
Ci0gICAgICAgICAgICAgICAgZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgICAgICAgICAgICAgICAg
IHJldHVybiAhIWVsZW0ucGFyZW50Tm9kZTsKLSAgICAgICAgICAgICAgICB9IDoKLQotICAgICAg
ICAgICAgICAgIGZ1bmN0aW9uKCBlbGVtLCBjb250ZXh0LCB4bWwgKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHZhciBjYWNoZSwgb3V0ZXJDYWNoZSwgbm9kZSwgZGlmZiwgbm9kZUluZGV4LCBzdGFy
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRpciA9IHNpbXBsZSAhPT0gZm9yd2FyZCA/ICJu
ZXh0U2libGluZyIgOiAicHJldmlvdXNTaWJsaW5nIiwKLSAgICAgICAgICAgICAgICAgICAgICAg
IHBhcmVudCA9IGVsZW0ucGFyZW50Tm9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUg
PSBvZlR5cGUgJiYgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgdXNlQ2FjaGUgPSAheG1sICYmICFvZlR5cGU7Ci0KLSAgICAgICAgICAgICAgICAg
ICAgaWYgKCBwYXJlbnQgKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIDooZmlyc3R8
bGFzdHxvbmx5KS0oY2hpbGR8b2YtdHlwZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICgg
c2ltcGxlICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICggZGlyICkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlID0gZWxlbTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCAobm9kZSA9IG5vZGVbIGRpciBdKSApIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggb2ZUeXBlID8gbm9kZS5ub2Rl
TmFtZS50b0xvd2VyQ2FzZSgpID09PSBuYW1lIDogbm9kZS5ub2RlVHlwZSA9PT0gMSApIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmV2ZXJzZSBk
aXJlY3Rpb24gZm9yIDpvbmx5LSogKGlmIHdlIGhhdmVuJ3QgeWV0IGRvbmUgc28pCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0ID0gZGlyID0gdHlwZSA9PT0gIm9ubHkiICYm
ICFzdGFydCAmJiAibmV4dFNpYmxpbmciOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQgPSBbIGZvcndhcmQg
PyBwYXJlbnQuZmlyc3RDaGlsZCA6IHBhcmVudC5sYXN0Q2hpbGQgXTsKLQotICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gbm9uLXhtbCA6bnRoLWNoaWxkKC4uLikgc3RvcmVzIGNhY2hlIGRhdGEg
b24gYHBhcmVudGAKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICggZm9yd2FyZCAmJiB1c2VD
YWNoZSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTZWVrIGBlbGVtYCBmcm9t
IGEgcHJldmlvdXNseS1jYWNoZWQgaW5kZXgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBv
dXRlckNhY2hlID0gcGFyZW50WyBleHBhbmRvIF0gfHwgKHBhcmVudFsgZXhwYW5kbyBdID0ge30p
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlID0gb3V0ZXJDYWNoZVsgdHlwZSBd
IHx8IFtdOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVJbmRleCA9IGNhY2hlWzBd
ID09PSBkaXJydW5zICYmIGNhY2hlWzFdOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRp
ZmYgPSBjYWNoZVswXSA9PT0gZGlycnVucyAmJiBjYWNoZVsyXTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBub2RlID0gbm9kZUluZGV4ICYmIHBhcmVudC5jaGlsZE5vZGVzWyBub2RlSW5k
ZXggXTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICggKG5vZGUgPSArK25v
ZGVJbmRleCAmJiBub2RlICYmIG5vZGVbIGRpciBdIHx8Ci0KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gRmFsbGJhY2sgdG8gc2Vla2luZyBgZWxlbWAgZnJvbSB0aGUgc3RhcnQK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRpZmYgPSBub2RlSW5kZXggPSAwKSB8
fCBzdGFydC5wb3AoKSkgKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
V2hlbiBmb3VuZCwgY2FjaGUgaW5kZXhlcyBvbiBgcGFyZW50YCBhbmQgYnJlYWsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBub2RlLm5vZGVUeXBlID09PSAxICYmICsrZGlm
ZiAmJiBub2RlID09PSBlbGVtICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgb3V0ZXJDYWNoZVsgdHlwZSBdID0gWyBkaXJydW5zLCBub2RlSW5kZXgsIGRpZmYgXTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICAgICAgICAgICAgICAvLyBVc2UgcHJldmlvdXNseS1jYWNoZWQgZWxlbWVudCBpbmRl
eCBpZiBhdmFpbGFibGUKLSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIHVzZUNh
Y2hlICYmIChjYWNoZSA9IChlbGVtWyBleHBhbmRvIF0gfHwgKGVsZW1bIGV4cGFuZG8gXSA9IHt9
KSlbIHR5cGUgXSkgJiYgY2FjaGVbMF0gPT09IGRpcnJ1bnMgKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGlmZiA9IGNhY2hlWzFdOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAv
LyB4bWwgOm50aC1jaGlsZCguLi4pIG9yIDpudGgtbGFzdC1jaGlsZCguLi4pIG9yIDpudGgoLWxh
c3QpPy1vZi10eXBlKC4uLikKLSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gVXNlIHRoZSBzYW1lIGxvb3AgYXMgYWJvdmUgdG8g
c2VlayBgZWxlbWAgZnJvbSB0aGUgc3RhcnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3
aGlsZSAoIChub2RlID0gKytub2RlSW5kZXggJiYgbm9kZSAmJiBub2RlWyBkaXIgXSB8fAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGlmZiA9IG5vZGVJbmRleCA9IDApIHx8IHN0
YXJ0LnBvcCgpKSApIHsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICgg
b2ZUeXBlID8gbm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBuYW1lIDogbm9kZS5ub2Rl
VHlwZSA9PT0gMSApICYmICsrZGlmZiApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIENhY2hlIHRoZSBpbmRleCBvZiBlYWNoIGVuY291bnRlcmVkIGVsZW1lbnQKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggdXNlQ2FjaGUgKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vZGVbIGV4cGFuZG8gXSB8fCAo
bm9kZVsgZXhwYW5kbyBdID0ge30pKVsgdHlwZSBdID0gWyBkaXJydW5zLCBkaWZmIF07Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICggbm9kZSA9PT0gZWxlbSApIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gSW5jb3Jwb3JhdGUgdGhlIG9mZnNldCwgdGhlbiBjaGVjayBh
Z2FpbnN0IGN5Y2xlIHNpemUKLSAgICAgICAgICAgICAgICAgICAgICAgIGRpZmYgLT0gbGFzdDsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkaWZmID09PSBmaXJzdCB8fCAoIGRpZmYg
JSBmaXJzdCA9PT0gMCAmJiBkaWZmIC8gZmlyc3QgPj0gMCApOwotICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgfTsKLSAgICAgICAgfSwKLQotICAgICAgICAiUFNFVURPIjog
ZnVuY3Rpb24oIHBzZXVkbywgYXJndW1lbnQgKSB7Ci0gICAgICAgICAgICAvLyBwc2V1ZG8tY2xh
c3MgbmFtZXMgYXJlIGNhc2UtaW5zZW5zaXRpdmUKLSAgICAgICAgICAgIC8vIGh0dHA6Ly93d3cu
dzMub3JnL1RSL3NlbGVjdG9ycy8jcHNldWRvLWNsYXNzZXMKLSAgICAgICAgICAgIC8vIFByaW9y
aXRpemUgYnkgY2FzZSBzZW5zaXRpdml0eSBpbiBjYXNlIGN1c3RvbSBwc2V1ZG9zIGFyZSBhZGRl
ZCB3aXRoIHVwcGVyY2FzZSBsZXR0ZXJzCi0gICAgICAgICAgICAvLyBSZW1lbWJlciB0aGF0IHNl
dEZpbHRlcnMgaW5oZXJpdHMgZnJvbSBwc2V1ZG9zCi0gICAgICAgICAgICB2YXIgYXJncywKLSAg
ICAgICAgICAgICAgICBmbiA9IEV4cHIucHNldWRvc1sgcHNldWRvIF0gfHwgRXhwci5zZXRGaWx0
ZXJzWyBwc2V1ZG8udG9Mb3dlckNhc2UoKSBdIHx8Ci0gICAgICAgICAgICAgICAgICAgIFNpenps
ZS5lcnJvciggInVuc3VwcG9ydGVkIHBzZXVkbzogIiArIHBzZXVkbyApOwotCi0gICAgICAgICAg
ICAvLyBUaGUgdXNlciBtYXkgdXNlIGNyZWF0ZVBzZXVkbyB0byBpbmRpY2F0ZSB0aGF0Ci0gICAg
ICAgICAgICAvLyBhcmd1bWVudHMgYXJlIG5lZWRlZCB0byBjcmVhdGUgdGhlIGZpbHRlciBmdW5j
dGlvbgotICAgICAgICAgICAgLy8ganVzdCBhcyBTaXp6bGUgZG9lcwotICAgICAgICAgICAgaWYg
KCBmblsgZXhwYW5kbyBdICkgewotICAgICAgICAgICAgICAgIHJldHVybiBmbiggYXJndW1lbnQg
KTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gQnV0IG1haW50YWluIHN1cHBvcnQg
Zm9yIG9sZCBzaWduYXR1cmVzCi0gICAgICAgICAgICBpZiAoIGZuLmxlbmd0aCA+IDEgKSB7Ci0g
ICAgICAgICAgICAgICAgYXJncyA9IFsgcHNldWRvLCBwc2V1ZG8sICIiLCBhcmd1bWVudCBdOwot
ICAgICAgICAgICAgICAgIHJldHVybiBFeHByLnNldEZpbHRlcnMuaGFzT3duUHJvcGVydHkoIHBz
ZXVkby50b0xvd2VyQ2FzZSgpICkgPwotICAgICAgICAgICAgICAgICAgICBtYXJrRnVuY3Rpb24o
ZnVuY3Rpb24oIHNlZWQsIG1hdGNoZXMgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXIg
aWR4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZWQgPSBmbiggc2VlZCwgYXJn
dW1lbnQgKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gbWF0Y2hlZC5sZW5ndGg7
Ci0gICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoIGktLSApIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZHggPSBpbmRleE9mLmNhbGwoIHNlZWQsIG1hdGNoZWRbaV0gKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWVkWyBpZHggXSA9ICEoIG1hdGNoZXNbIGlkeCBd
ID0gbWF0Y2hlZFtpXSApOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgICAgICB9KSA6Ci0gICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCBlbGVtICkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZuKCBlbGVtLCAwLCBhcmdzICk7Ci0gICAgICAg
ICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHJldHVybiBmbjsK
LSAgICAgICAgfQotICAgIH0sCi0KLSAgICBwc2V1ZG9zOiB7Ci0gICAgICAgIC8vIFBvdGVudGlh
bGx5IGNvbXBsZXggcHNldWRvcwotICAgICAgICAibm90IjogbWFya0Z1bmN0aW9uKGZ1bmN0aW9u
KCBzZWxlY3RvciApIHsKLSAgICAgICAgICAgIC8vIFRyaW0gdGhlIHNlbGVjdG9yIHBhc3NlZCB0
byBjb21waWxlCi0gICAgICAgICAgICAvLyB0byBhdm9pZCB0cmVhdGluZyBsZWFkaW5nIGFuZCB0
cmFpbGluZwotICAgICAgICAgICAgLy8gc3BhY2VzIGFzIGNvbWJpbmF0b3JzCi0gICAgICAgICAg
ICB2YXIgaW5wdXQgPSBbXSwKLSAgICAgICAgICAgICAgICByZXN1bHRzID0gW10sCi0gICAgICAg
ICAgICAgICAgbWF0Y2hlciA9IGNvbXBpbGUoIHNlbGVjdG9yLnJlcGxhY2UoIHJ0cmltLCAiJDEi
ICkgKTsKLQotICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXJbIGV4cGFuZG8gXSA/Ci0gICAgICAg
ICAgICAgICAgbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCBzZWVkLCBtYXRjaGVzLCBjb250ZXh0LCB4
bWwgKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBlbGVtLAotICAgICAgICAgICAgICAgICAg
ICAgICAgdW5tYXRjaGVkID0gbWF0Y2hlciggc2VlZCwgbnVsbCwgeG1sLCBbXSApLAotICAgICAg
ICAgICAgICAgICAgICAgICAgaSA9IHNlZWQubGVuZ3RoOwotCi0gICAgICAgICAgICAgICAgICAg
IC8vIE1hdGNoIGVsZW1lbnRzIHVubWF0Y2hlZCBieSBgbWF0Y2hlcmAKLSAgICAgICAgICAgICAg
ICAgICAgd2hpbGUgKCBpLS0gKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIChlbGVt
ID0gdW5tYXRjaGVkW2ldKSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWVkW2ld
ID0gIShtYXRjaGVzW2ldID0gZWxlbSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9KSA6Ci0gICAgICAgICAgICAgICAg
ZnVuY3Rpb24oIGVsZW0sIGNvbnRleHQsIHhtbCApIHsKLSAgICAgICAgICAgICAgICAgICAgaW5w
dXRbMF0gPSBlbGVtOwotICAgICAgICAgICAgICAgICAgICBtYXRjaGVyKCBpbnB1dCwgbnVsbCwg
eG1sLCByZXN1bHRzICk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAhcmVzdWx0cy5wb3Ao
KTsKLSAgICAgICAgICAgICAgICB9OwotICAgICAgICB9KSwKLQotICAgICAgICAiaGFzIjogbWFy
a0Z1bmN0aW9uKGZ1bmN0aW9uKCBzZWxlY3RvciApIHsKLSAgICAgICAgICAgIHJldHVybiBmdW5j
dGlvbiggZWxlbSApIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gU2l6emxlKCBzZWxlY3Rvciwg
ZWxlbSApLmxlbmd0aCA+IDA7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9KSwKLQotICAgICAg
ICAiY29udGFpbnMiOiBtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIHRleHQgKSB7Ci0gICAgICAgICAg
ICByZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICggZWxl
bS50ZXh0Q29udGVudCB8fCBlbGVtLmlubmVyVGV4dCB8fCBnZXRUZXh0KCBlbGVtICkgKS5pbmRl
eE9mKCB0ZXh0ICkgPiAtMTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH0pLAotCi0gICAgICAg
IC8vICJXaGV0aGVyIGFuIGVsZW1lbnQgaXMgcmVwcmVzZW50ZWQgYnkgYSA6bGFuZygpIHNlbGVj
dG9yCi0gICAgICAgIC8vIGlzIGJhc2VkIHNvbGVseSBvbiB0aGUgZWxlbWVudCdzIGxhbmd1YWdl
IHZhbHVlCi0gICAgICAgIC8vIGJlaW5nIGVxdWFsIHRvIHRoZSBpZGVudGlmaWVyIEMsCi0gICAg
ICAgIC8vIG9yIGJlZ2lubmluZyB3aXRoIHRoZSBpZGVudGlmaWVyIEMgaW1tZWRpYXRlbHkgZm9s
bG93ZWQgYnkgIi0iLgotICAgICAgICAvLyBUaGUgbWF0Y2hpbmcgb2YgQyBhZ2FpbnN0IHRoZSBl
bGVtZW50J3MgbGFuZ3VhZ2UgdmFsdWUgaXMgcGVyZm9ybWVkIGNhc2UtaW5zZW5zaXRpdmVseS4K
LSAgICAgICAgLy8gVGhlIGlkZW50aWZpZXIgQyBkb2VzIG5vdCBoYXZlIHRvIGJlIGEgdmFsaWQg
bGFuZ3VhZ2UgbmFtZS4iCi0gICAgICAgIC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL3NlbGVjdG9y
cy8jbGFuZy1wc2V1ZG8KLSAgICAgICAgImxhbmciOiBtYXJrRnVuY3Rpb24oIGZ1bmN0aW9uKCBs
YW5nICkgewotICAgICAgICAgICAgLy8gbGFuZyB2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgaWRlbnRp
ZmllcgotICAgICAgICAgICAgaWYgKCAhcmlkZW50aWZpZXIudGVzdChsYW5nIHx8ICIiKSApIHsK
LSAgICAgICAgICAgICAgICBTaXp6bGUuZXJyb3IoICJ1bnN1cHBvcnRlZCBsYW5nOiAiICsgbGFu
ZyApOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbGFuZyA9IGxhbmcucmVwbGFjZSggcnVu
ZXNjYXBlLCBmdW5lc2NhcGUgKS50b0xvd2VyQ2FzZSgpOwotICAgICAgICAgICAgcmV0dXJuIGZ1
bmN0aW9uKCBlbGVtICkgewotICAgICAgICAgICAgICAgIHZhciBlbGVtTGFuZzsKLSAgICAgICAg
ICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICggKGVsZW1MYW5nID0gZG9jdW1l
bnRJc0hUTUwgPwotICAgICAgICAgICAgICAgICAgICAgICAgZWxlbS5sYW5nIDoKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGVsZW0uZ2V0QXR0cmlidXRlKCJ4bWw6bGFuZyIpIHx8IGVsZW0uZ2V0
QXR0cmlidXRlKCJsYW5nIikpICkgewotCi0gICAgICAgICAgICAgICAgICAgICAgICBlbGVtTGFu
ZyA9IGVsZW1MYW5nLnRvTG93ZXJDYXNlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZWxlbUxhbmcgPT09IGxhbmcgfHwgZWxlbUxhbmcuaW5kZXhPZiggbGFuZyArICItIiApID09
PSAwOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSB3aGlsZSAoIChl
bGVtID0gZWxlbS5wYXJlbnROb2RlKSAmJiBlbGVtLm5vZGVUeXBlID09PSAxICk7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfSksCi0KLSAg
ICAgICAgLy8gTWlzY2VsbGFuZW91cwotICAgICAgICAidGFyZ2V0IjogZnVuY3Rpb24oIGVsZW0g
KSB7Ci0gICAgICAgICAgICB2YXIgaGFzaCA9IHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9j
YXRpb24uaGFzaDsKLSAgICAgICAgICAgIHJldHVybiBoYXNoICYmIGhhc2guc2xpY2UoIDEgKSA9
PT0gZWxlbS5pZDsKLSAgICAgICAgfSwKLQotICAgICAgICAicm9vdCI6IGZ1bmN0aW9uKCBlbGVt
ICkgewotICAgICAgICAgICAgcmV0dXJuIGVsZW0gPT09IGRvY0VsZW07Ci0gICAgICAgIH0sCi0K
LSAgICAgICAgImZvY3VzIjogZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgICAgICAgICByZXR1cm4g
ZWxlbSA9PT0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAmJiAoIWRvY3VtZW50Lmhhc0ZvY3VzIHx8
IGRvY3VtZW50Lmhhc0ZvY3VzKCkpICYmICEhKGVsZW0udHlwZSB8fCBlbGVtLmhyZWYgfHwgfmVs
ZW0udGFiSW5kZXgpOwotICAgICAgICB9LAotCi0gICAgICAgIC8vIEJvb2xlYW4gcHJvcGVydGll
cwotICAgICAgICAiZW5hYmxlZCI6IGZ1bmN0aW9uKCBlbGVtICkgewotICAgICAgICAgICAgcmV0
dXJuIGVsZW0uZGlzYWJsZWQgPT09IGZhbHNlOwotICAgICAgICB9LAotCi0gICAgICAgICJkaXNh
YmxlZCI6IGZ1bmN0aW9uKCBlbGVtICkgewotICAgICAgICAgICAgcmV0dXJuIGVsZW0uZGlzYWJs
ZWQgPT09IHRydWU7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgImNoZWNrZWQiOiBmdW5jdGlvbigg
ZWxlbSApIHsKLSAgICAgICAgICAgIC8vIEluIENTUzMsIDpjaGVja2VkIHNob3VsZCByZXR1cm4g
Ym90aCBjaGVja2VkIGFuZCBzZWxlY3RlZCBlbGVtZW50cwotICAgICAgICAgICAgLy8gaHR0cDov
L3d3dy53My5vcmcvVFIvMjAxMS9SRUMtY3NzMy1zZWxlY3RvcnMtMjAxMTA5MjkvI2NoZWNrZWQK
LSAgICAgICAgICAgIHZhciBub2RlTmFtZSA9IGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTsK
LSAgICAgICAgICAgIHJldHVybiAobm9kZU5hbWUgPT09ICJpbnB1dCIgJiYgISFlbGVtLmNoZWNr
ZWQpIHx8IChub2RlTmFtZSA9PT0gIm9wdGlvbiIgJiYgISFlbGVtLnNlbGVjdGVkKTsKLSAgICAg
ICAgfSwKLQotICAgICAgICAic2VsZWN0ZWQiOiBmdW5jdGlvbiggZWxlbSApIHsKLSAgICAgICAg
ICAgIC8vIEFjY2Vzc2luZyB0aGlzIHByb3BlcnR5IG1ha2VzIHNlbGVjdGVkLWJ5LWRlZmF1bHQK
LSAgICAgICAgICAgIC8vIG9wdGlvbnMgaW4gU2FmYXJpIHdvcmsgcHJvcGVybHkKLSAgICAgICAg
ICAgIGlmICggZWxlbS5wYXJlbnROb2RlICkgewotICAgICAgICAgICAgICAgIGVsZW0ucGFyZW50
Tm9kZS5zZWxlY3RlZEluZGV4OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICByZXR1cm4g
ZWxlbS5zZWxlY3RlZCA9PT0gdHJ1ZTsKLSAgICAgICAgfSwKLQotICAgICAgICAvLyBDb250ZW50
cwotICAgICAgICAiZW1wdHkiOiBmdW5jdGlvbiggZWxlbSApIHsKLSAgICAgICAgICAgIC8vIGh0
dHA6Ly93d3cudzMub3JnL1RSL3NlbGVjdG9ycy8jZW1wdHktcHNldWRvCi0gICAgICAgICAgICAv
LyA6ZW1wdHkgaXMgbmVnYXRlZCBieSBlbGVtZW50ICgxKSBvciBjb250ZW50IG5vZGVzICh0ZXh0
OiAzOyBjZGF0YTogNDsgZW50aXR5IHJlZjogNSksCi0gICAgICAgICAgICAvLyAgIGJ1dCBub3Qg
Ynkgb3RoZXJzIChjb21tZW50OiA4OyBwcm9jZXNzaW5nIGluc3RydWN0aW9uOiA3OyBldGMuKQot
ICAgICAgICAgICAgLy8gbm9kZVR5cGUgPCA2IHdvcmtzIGJlY2F1c2UgYXR0cmlidXRlcyAoMikg
ZG8gbm90IGFwcGVhciBhcyBjaGlsZHJlbgotICAgICAgICAgICAgZm9yICggZWxlbSA9IGVsZW0u
Zmlyc3RDaGlsZDsgZWxlbTsgZWxlbSA9IGVsZW0ubmV4dFNpYmxpbmcgKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKCBlbGVtLm5vZGVUeXBlIDwgNiApIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IHJldHVybiB0cnVlOwotICAgICAgICB9LAotCi0gICAgICAgICJwYXJlbnQiOiBmdW5jdGlvbigg
ZWxlbSApIHsKLSAgICAgICAgICAgIHJldHVybiAhRXhwci5wc2V1ZG9zWyJlbXB0eSJdKCBlbGVt
ICk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgLy8gRWxlbWVudC9pbnB1dCB0eXBlcwotICAgICAg
ICAiaGVhZGVyIjogZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgICAgICAgICByZXR1cm4gcmhlYWRl
ci50ZXN0KCBlbGVtLm5vZGVOYW1lICk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgImlucHV0Ijog
ZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgICAgICAgICByZXR1cm4gcmlucHV0cy50ZXN0KCBlbGVt
Lm5vZGVOYW1lICk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgImJ1dHRvbiI6IGZ1bmN0aW9uKCBl
bGVtICkgewotICAgICAgICAgICAgdmFyIG5hbWUgPSBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNl
KCk7Ci0gICAgICAgICAgICByZXR1cm4gbmFtZSA9PT0gImlucHV0IiAmJiBlbGVtLnR5cGUgPT09
ICJidXR0b24iIHx8IG5hbWUgPT09ICJidXR0b24iOwotICAgICAgICB9LAotCi0gICAgICAgICJ0
ZXh0IjogZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgICAgICAgICB2YXIgYXR0cjsKLSAgICAgICAg
ICAgIHJldHVybiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICJpbnB1dCIgJiYKLSAg
ICAgICAgICAgICAgICBlbGVtLnR5cGUgPT09ICJ0ZXh0IiAmJgotCi0gICAgICAgICAgICAgICAg
Ly8gU3VwcG9ydDogSUU8OAotICAgICAgICAgICAgICAgIC8vIE5ldyBIVE1MNSBhdHRyaWJ1dGUg
dmFsdWVzIChlLmcuLCAic2VhcmNoIikgYXBwZWFyIHdpdGggZWxlbS50eXBlID09PSAidGV4dCIK
LSAgICAgICAgICAgICAgICAoIChhdHRyID0gZWxlbS5nZXRBdHRyaWJ1dGUoInR5cGUiKSkgPT0g
bnVsbCB8fCBhdHRyLnRvTG93ZXJDYXNlKCkgPT09ICJ0ZXh0IiApOwotICAgICAgICB9LAotCi0g
ICAgICAgIC8vIFBvc2l0aW9uLWluLWNvbGxlY3Rpb24KLSAgICAgICAgImZpcnN0IjogY3JlYXRl
UG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHJldHVybiBbIDAgXTsK
LSAgICAgICAgfSksCi0KLSAgICAgICAgImxhc3QiOiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1
bmN0aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0aCApIHsKLSAgICAgICAgICAgIHJldHVybiBbIGxl
bmd0aCAtIDEgXTsKLSAgICAgICAgfSksCi0KLSAgICAgICAgImVxIjogY3JlYXRlUG9zaXRpb25h
bFBzZXVkbyhmdW5jdGlvbiggbWF0Y2hJbmRleGVzLCBsZW5ndGgsIGFyZ3VtZW50ICkgewotICAg
ICAgICAgICAgcmV0dXJuIFsgYXJndW1lbnQgPCAwID8gYXJndW1lbnQgKyBsZW5ndGggOiBhcmd1
bWVudCBdOwotICAgICAgICB9KSwKLQotICAgICAgICAiZXZlbiI6IGNyZWF0ZVBvc2l0aW9uYWxQ
c2V1ZG8oZnVuY3Rpb24oIG1hdGNoSW5kZXhlcywgbGVuZ3RoICkgewotICAgICAgICAgICAgdmFy
IGkgPSAwOwotICAgICAgICAgICAgZm9yICggOyBpIDwgbGVuZ3RoOyBpICs9IDIgKSB7Ci0gICAg
ICAgICAgICAgICAgbWF0Y2hJbmRleGVzLnB1c2goIGkgKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIHJldHVybiBtYXRjaEluZGV4ZXM7Ci0gICAgICAgIH0pLAotCi0gICAgICAgICJvZGQi
OiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0aCAp
IHsKLSAgICAgICAgICAgIHZhciBpID0gMTsKLSAgICAgICAgICAgIGZvciAoIDsgaSA8IGxlbmd0
aDsgaSArPSAyICkgewotICAgICAgICAgICAgICAgIG1hdGNoSW5kZXhlcy5wdXNoKCBpICk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gbWF0Y2hJbmRleGVzOwotICAgICAgICB9
KSwKLQotICAgICAgICAibHQiOiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9uKCBtYXRj
aEluZGV4ZXMsIGxlbmd0aCwgYXJndW1lbnQgKSB7Ci0gICAgICAgICAgICB2YXIgaSA9IGFyZ3Vt
ZW50IDwgMCA/IGFyZ3VtZW50ICsgbGVuZ3RoIDogYXJndW1lbnQ7Ci0gICAgICAgICAgICBmb3Ig
KCA7IC0taSA+PSAwOyApIHsKLSAgICAgICAgICAgICAgICBtYXRjaEluZGV4ZXMucHVzaCggaSAp
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIG1hdGNoSW5kZXhlczsKLSAgICAg
ICAgfSksCi0KLSAgICAgICAgImd0IjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbigg
bWF0Y2hJbmRleGVzLCBsZW5ndGgsIGFyZ3VtZW50ICkgewotICAgICAgICAgICAgdmFyIGkgPSBh
cmd1bWVudCA8IDAgPyBhcmd1bWVudCArIGxlbmd0aCA6IGFyZ3VtZW50OwotICAgICAgICAgICAg
Zm9yICggOyArK2kgPCBsZW5ndGg7ICkgewotICAgICAgICAgICAgICAgIG1hdGNoSW5kZXhlcy5w
dXNoKCBpICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gbWF0Y2hJbmRleGVz
OwotICAgICAgICB9KQotICAgIH0KLX07Ci0KLUV4cHIucHNldWRvc1sibnRoIl0gPSBFeHByLnBz
ZXVkb3NbImVxIl07Ci0KLS8vIEFkZCBidXR0b24vaW5wdXQgdHlwZSBwc2V1ZG9zCi1mb3IgKCBp
IGluIHsgcmFkaW86IHRydWUsIGNoZWNrYm94OiB0cnVlLCBmaWxlOiB0cnVlLCBwYXNzd29yZDog
dHJ1ZSwgaW1hZ2U6IHRydWUgfSApIHsKLSAgICBFeHByLnBzZXVkb3NbIGkgXSA9IGNyZWF0ZUlu
cHV0UHNldWRvKCBpICk7Ci19Ci1mb3IgKCBpIGluIHsgc3VibWl0OiB0cnVlLCByZXNldDogdHJ1
ZSB9ICkgewotICAgIEV4cHIucHNldWRvc1sgaSBdID0gY3JlYXRlQnV0dG9uUHNldWRvKCBpICk7
Ci19Ci0KLS8vIEVhc3kgQVBJIGZvciBjcmVhdGluZyBuZXcgc2V0RmlsdGVycwotZnVuY3Rpb24g
c2V0RmlsdGVycygpIHt9Ci1zZXRGaWx0ZXJzLnByb3RvdHlwZSA9IEV4cHIuZmlsdGVycyA9IEV4
cHIucHNldWRvczsKLUV4cHIuc2V0RmlsdGVycyA9IG5ldyBzZXRGaWx0ZXJzKCk7Ci0KLWZ1bmN0
aW9uIHRva2VuaXplKCBzZWxlY3RvciwgcGFyc2VPbmx5ICkgewotICAgIHZhciBtYXRjaGVkLCBt
YXRjaCwgdG9rZW5zLCB0eXBlLAotICAgICAgICBzb0ZhciwgZ3JvdXBzLCBwcmVGaWx0ZXJzLAot
ICAgICAgICBjYWNoZWQgPSB0b2tlbkNhY2hlWyBzZWxlY3RvciArICIgIiBdOwotCi0gICAgaWYg
KCBjYWNoZWQgKSB7Ci0gICAgICAgIHJldHVybiBwYXJzZU9ubHkgPyAwIDogY2FjaGVkLnNsaWNl
KCAwICk7Ci0gICAgfQotCi0gICAgc29GYXIgPSBzZWxlY3RvcjsKLSAgICBncm91cHMgPSBbXTsK
LSAgICBwcmVGaWx0ZXJzID0gRXhwci5wcmVGaWx0ZXI7Ci0KLSAgICB3aGlsZSAoIHNvRmFyICkg
ewotCi0gICAgICAgIC8vIENvbW1hIGFuZCBmaXJzdCBydW4KLSAgICAgICAgaWYgKCAhbWF0Y2hl
ZCB8fCAobWF0Y2ggPSByY29tbWEuZXhlYyggc29GYXIgKSkgKSB7Ci0gICAgICAgICAgICBpZiAo
IG1hdGNoICkgewotICAgICAgICAgICAgICAgIC8vIERvbid0IGNvbnN1bWUgdHJhaWxpbmcgY29t
bWFzIGFzIHZhbGlkCi0gICAgICAgICAgICAgICAgc29GYXIgPSBzb0Zhci5zbGljZSggbWF0Y2hb
MF0ubGVuZ3RoICkgfHwgc29GYXI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBncm91cHMu
cHVzaCggKHRva2VucyA9IFtdKSApOwotICAgICAgICB9Ci0KLSAgICAgICAgbWF0Y2hlZCA9IGZh
bHNlOwotCi0gICAgICAgIC8vIENvbWJpbmF0b3JzCi0gICAgICAgIGlmICggKG1hdGNoID0gcmNv
bWJpbmF0b3JzLmV4ZWMoIHNvRmFyICkpICkgewotICAgICAgICAgICAgbWF0Y2hlZCA9IG1hdGNo
LnNoaWZ0KCk7Ci0gICAgICAgICAgICB0b2tlbnMucHVzaCh7Ci0gICAgICAgICAgICAgICAgdmFs
dWU6IG1hdGNoZWQsCi0gICAgICAgICAgICAgICAgLy8gQ2FzdCBkZXNjZW5kYW50IGNvbWJpbmF0
b3JzIHRvIHNwYWNlCi0gICAgICAgICAgICAgICAgdHlwZTogbWF0Y2hbMF0ucmVwbGFjZSggcnRy
aW0sICIgIiApCi0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIHNvRmFyID0gc29GYXIuc2xp
Y2UoIG1hdGNoZWQubGVuZ3RoICk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBGaWx0ZXJzCi0g
ICAgICAgIGZvciAoIHR5cGUgaW4gRXhwci5maWx0ZXIgKSB7Ci0gICAgICAgICAgICBpZiAoICht
YXRjaCA9IG1hdGNoRXhwclsgdHlwZSBdLmV4ZWMoIHNvRmFyICkpICYmICghcHJlRmlsdGVyc1sg
dHlwZSBdIHx8Ci0gICAgICAgICAgICAgICAgKG1hdGNoID0gcHJlRmlsdGVyc1sgdHlwZSBdKCBt
YXRjaCApKSkgKSB7Ci0gICAgICAgICAgICAgICAgbWF0Y2hlZCA9IG1hdGNoLnNoaWZ0KCk7Ci0g
ICAgICAgICAgICAgICAgdG9rZW5zLnB1c2goewotICAgICAgICAgICAgICAgICAgICB2YWx1ZTog
bWF0Y2hlZCwKLSAgICAgICAgICAgICAgICAgICAgdHlwZTogdHlwZSwKLSAgICAgICAgICAgICAg
ICAgICAgbWF0Y2hlczogbWF0Y2gKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAg
ICBzb0ZhciA9IHNvRmFyLnNsaWNlKCBtYXRjaGVkLmxlbmd0aCApOwotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCAhbWF0Y2hlZCApIHsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gUmV0dXJuIHRoZSBsZW5ndGggb2YgdGhlIGlu
dmFsaWQgZXhjZXNzCi0gICAgLy8gaWYgd2UncmUganVzdCBwYXJzaW5nCi0gICAgLy8gT3RoZXJ3
aXNlLCB0aHJvdyBhbiBlcnJvciBvciByZXR1cm4gdG9rZW5zCi0gICAgcmV0dXJuIHBhcnNlT25s
eSA/Ci0gICAgICAgIHNvRmFyLmxlbmd0aCA6Ci0gICAgICAgIHNvRmFyID8KLSAgICAgICAgICAg
IFNpenpsZS5lcnJvciggc2VsZWN0b3IgKSA6Ci0gICAgICAgICAgICAvLyBDYWNoZSB0aGUgdG9r
ZW5zCi0gICAgICAgICAgICB0b2tlbkNhY2hlKCBzZWxlY3RvciwgZ3JvdXBzICkuc2xpY2UoIDAg
KTsKLX0KLQotZnVuY3Rpb24gdG9TZWxlY3RvciggdG9rZW5zICkgewotICAgIHZhciBpID0gMCwK
LSAgICAgICAgbGVuID0gdG9rZW5zLmxlbmd0aCwKLSAgICAgICAgc2VsZWN0b3IgPSAiIjsKLSAg
ICBmb3IgKCA7IGkgPCBsZW47IGkrKyApIHsKLSAgICAgICAgc2VsZWN0b3IgKz0gdG9rZW5zW2ld
LnZhbHVlOwotICAgIH0KLSAgICByZXR1cm4gc2VsZWN0b3I7Ci19Ci0KLWZ1bmN0aW9uIGFkZENv
bWJpbmF0b3IoIG1hdGNoZXIsIGNvbWJpbmF0b3IsIGJhc2UgKSB7Ci0gICAgdmFyIGRpciA9IGNv
bWJpbmF0b3IuZGlyLAotICAgICAgICBjaGVja05vbkVsZW1lbnRzID0gYmFzZSAmJiBkaXIgPT09
ICJwYXJlbnROb2RlIiwKLSAgICAgICAgZG9uZU5hbWUgPSBkb25lKys7Ci0KLSAgICByZXR1cm4g
Y29tYmluYXRvci5maXJzdCA/Ci0gICAgICAgIC8vIENoZWNrIGFnYWluc3QgY2xvc2VzdCBhbmNl
c3Rvci9wcmVjZWRpbmcgZWxlbWVudAotICAgICAgICBmdW5jdGlvbiggZWxlbSwgY29udGV4dCwg
eG1sICkgewotICAgICAgICAgICAgd2hpbGUgKCAoZWxlbSA9IGVsZW1bIGRpciBdKSApIHsKLSAg
ICAgICAgICAgICAgICBpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgfHwgY2hlY2tOb25FbGVtZW50
cyApIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXIoIGVsZW0sIGNvbnRleHQs
IHhtbCApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfSA6Ci0K
LSAgICAgICAgLy8gQ2hlY2sgYWdhaW5zdCBhbGwgYW5jZXN0b3IvcHJlY2VkaW5nIGVsZW1lbnRz
Ci0gICAgICAgIGZ1bmN0aW9uKCBlbGVtLCBjb250ZXh0LCB4bWwgKSB7Ci0gICAgICAgICAgICB2
YXIgb2xkQ2FjaGUsIG91dGVyQ2FjaGUsCi0gICAgICAgICAgICAgICAgbmV3Q2FjaGUgPSBbIGRp
cnJ1bnMsIGRvbmVOYW1lIF07Ci0KLSAgICAgICAgICAgIC8vIFdlIGNhbid0IHNldCBhcmJpdHJh
cnkgZGF0YSBvbiBYTUwgbm9kZXMsIHNvIHRoZXkgZG9uJ3QgYmVuZWZpdCBmcm9tIGRpciBjYWNo
aW5nCi0gICAgICAgICAgICBpZiAoIHhtbCApIHsKLSAgICAgICAgICAgICAgICB3aGlsZSAoIChl
bGVtID0gZWxlbVsgZGlyIF0pICkgewotICAgICAgICAgICAgICAgICAgICBpZiAoIGVsZW0ubm9k
ZVR5cGUgPT09IDEgfHwgY2hlY2tOb25FbGVtZW50cyApIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICggbWF0Y2hlciggZWxlbSwgY29udGV4dCwgeG1sICkgKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgIHdoaWxlICggKGVsZW0gPSBlbGVtWyBkaXIgXSkgKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSB8fCBjaGVja05vbkVs
ZW1lbnRzICkgewotICAgICAgICAgICAgICAgICAgICAgICAgb3V0ZXJDYWNoZSA9IGVsZW1bIGV4
cGFuZG8gXSB8fCAoZWxlbVsgZXhwYW5kbyBdID0ge30pOwotICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCAob2xkQ2FjaGUgPSBvdXRlckNhY2hlWyBkaXIgXSkgJiYKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBvbGRDYWNoZVsgMCBdID09PSBkaXJydW5zICYmIG9sZENhY2hlWyAxIF0g
PT09IGRvbmVOYW1lICkgewotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXNzaWdu
IHRvIG5ld0NhY2hlIHNvIHJlc3VsdHMgYmFjay1wcm9wYWdhdGUgdG8gcHJldmlvdXMgZWxlbWVu
dHMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKG5ld0NhY2hlWyAyIF0gPSBv
bGRDYWNoZVsgMiBdKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gUmV1c2UgbmV3Y2FjaGUgc28gcmVzdWx0cyBiYWNrLXBy
b3BhZ2F0ZSB0byBwcmV2aW91cyBlbGVtZW50cwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG91dGVyQ2FjaGVbIGRpciBdID0gbmV3Q2FjaGU7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBBIG1hdGNoIG1lYW5zIHdlJ3JlIGRvbmU7IGEgZmFpbCBtZWFucyB3ZSBoYXZlIHRv
IGtlZXAgY2hlY2tpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIChuZXdDYWNo
ZVsgMiBdID0gbWF0Y2hlciggZWxlbSwgY29udGV4dCwgeG1sICkpICkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci19Ci0KLWZ1bmN0
aW9uIGVsZW1lbnRNYXRjaGVyKCBtYXRjaGVycyApIHsKLSAgICByZXR1cm4gbWF0Y2hlcnMubGVu
Z3RoID4gMSA/Ci0gICAgICAgIGZ1bmN0aW9uKCBlbGVtLCBjb250ZXh0LCB4bWwgKSB7Ci0gICAg
ICAgICAgICB2YXIgaSA9IG1hdGNoZXJzLmxlbmd0aDsKLSAgICAgICAgICAgIHdoaWxlICggaS0t
ICkgewotICAgICAgICAgICAgICAgIGlmICggIW1hdGNoZXJzW2ldKCBlbGVtLCBjb250ZXh0LCB4
bWwgKSApIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9
IDoKLSAgICAgICAgbWF0Y2hlcnNbMF07Ci19Ci0KLWZ1bmN0aW9uIGNvbmRlbnNlKCB1bm1hdGNo
ZWQsIG1hcCwgZmlsdGVyLCBjb250ZXh0LCB4bWwgKSB7Ci0gICAgdmFyIGVsZW0sCi0gICAgICAg
IG5ld1VubWF0Y2hlZCA9IFtdLAotICAgICAgICBpID0gMCwKLSAgICAgICAgbGVuID0gdW5tYXRj
aGVkLmxlbmd0aCwKLSAgICAgICAgbWFwcGVkID0gbWFwICE9IG51bGw7Ci0KLSAgICBmb3IgKCA7
IGkgPCBsZW47IGkrKyApIHsKLSAgICAgICAgaWYgKCAoZWxlbSA9IHVubWF0Y2hlZFtpXSkgKSB7
Ci0gICAgICAgICAgICBpZiAoICFmaWx0ZXIgfHwgZmlsdGVyKCBlbGVtLCBjb250ZXh0LCB4bWwg
KSApIHsKLSAgICAgICAgICAgICAgICBuZXdVbm1hdGNoZWQucHVzaCggZWxlbSApOwotICAgICAg
ICAgICAgICAgIGlmICggbWFwcGVkICkgewotICAgICAgICAgICAgICAgICAgICBtYXAucHVzaCgg
aSApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0K
LQotICAgIHJldHVybiBuZXdVbm1hdGNoZWQ7Ci19Ci0KLWZ1bmN0aW9uIHNldE1hdGNoZXIoIHBy
ZUZpbHRlciwgc2VsZWN0b3IsIG1hdGNoZXIsIHBvc3RGaWx0ZXIsIHBvc3RGaW5kZXIsIHBvc3RT
ZWxlY3RvciApIHsKLSAgICBpZiAoIHBvc3RGaWx0ZXIgJiYgIXBvc3RGaWx0ZXJbIGV4cGFuZG8g
XSApIHsKLSAgICAgICAgcG9zdEZpbHRlciA9IHNldE1hdGNoZXIoIHBvc3RGaWx0ZXIgKTsKLSAg
ICB9Ci0gICAgaWYgKCBwb3N0RmluZGVyICYmICFwb3N0RmluZGVyWyBleHBhbmRvIF0gKSB7Ci0g
ICAgICAgIHBvc3RGaW5kZXIgPSBzZXRNYXRjaGVyKCBwb3N0RmluZGVyLCBwb3N0U2VsZWN0b3Ig
KTsKLSAgICB9Ci0gICAgcmV0dXJuIG1hcmtGdW5jdGlvbihmdW5jdGlvbiggc2VlZCwgcmVzdWx0
cywgY29udGV4dCwgeG1sICkgewotICAgICAgICB2YXIgdGVtcCwgaSwgZWxlbSwKLSAgICAgICAg
ICAgIHByZU1hcCA9IFtdLAotICAgICAgICAgICAgcG9zdE1hcCA9IFtdLAotICAgICAgICAgICAg
cHJlZXhpc3RpbmcgPSByZXN1bHRzLmxlbmd0aCwKLQotICAgICAgICAgICAgLy8gR2V0IGluaXRp
YWwgZWxlbWVudHMgZnJvbSBzZWVkIG9yIGNvbnRleHQKLSAgICAgICAgICAgIGVsZW1zID0gc2Vl
ZCB8fCBtdWx0aXBsZUNvbnRleHRzKCBzZWxlY3RvciB8fCAiKiIsIGNvbnRleHQubm9kZVR5cGUg
PyBbIGNvbnRleHQgXSA6IGNvbnRleHQsIFtdICksCi0KLSAgICAgICAgICAgIC8vIFByZWZpbHRl
ciB0byBnZXQgbWF0Y2hlciBpbnB1dCwgcHJlc2VydmluZyBhIG1hcCBmb3Igc2VlZC1yZXN1bHRz
IHN5bmNocm9uaXphdGlvbgotICAgICAgICAgICAgbWF0Y2hlckluID0gcHJlRmlsdGVyICYmICgg
c2VlZCB8fCAhc2VsZWN0b3IgKSA/Ci0gICAgICAgICAgICAgICAgY29uZGVuc2UoIGVsZW1zLCBw
cmVNYXAsIHByZUZpbHRlciwgY29udGV4dCwgeG1sICkgOgotICAgICAgICAgICAgICAgIGVsZW1z
LAotCi0gICAgICAgICAgICBtYXRjaGVyT3V0ID0gbWF0Y2hlciA/Ci0gICAgICAgICAgICAgICAg
Ly8gSWYgd2UgaGF2ZSBhIHBvc3RGaW5kZXIsIG9yIGZpbHRlcmVkIHNlZWQsIG9yIG5vbi1zZWVk
IHBvc3RGaWx0ZXIgb3IgcHJlZXhpc3RpbmcgcmVzdWx0cywKLSAgICAgICAgICAgICAgICBwb3N0
RmluZGVyIHx8ICggc2VlZCA/IHByZUZpbHRlciA6IHByZWV4aXN0aW5nIHx8IHBvc3RGaWx0ZXIg
KSA/Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gLi4uaW50ZXJtZWRpYXRlIHByb2Nlc3Npbmcg
aXMgbmVjZXNzYXJ5Ci0gICAgICAgICAgICAgICAgICAgIFtdIDoKLQotICAgICAgICAgICAgICAg
ICAgICAvLyAuLi5vdGhlcndpc2UgdXNlIHJlc3VsdHMgZGlyZWN0bHkKLSAgICAgICAgICAgICAg
ICAgICAgcmVzdWx0cyA6Ci0gICAgICAgICAgICAgICAgbWF0Y2hlckluOwotCi0gICAgICAgIC8v
IEZpbmQgcHJpbWFyeSBtYXRjaGVzCi0gICAgICAgIGlmICggbWF0Y2hlciApIHsKLSAgICAgICAg
ICAgIG1hdGNoZXIoIG1hdGNoZXJJbiwgbWF0Y2hlck91dCwgY29udGV4dCwgeG1sICk7Ci0gICAg
ICAgIH0KLQotICAgICAgICAvLyBBcHBseSBwb3N0RmlsdGVyCi0gICAgICAgIGlmICggcG9zdEZp
bHRlciApIHsKLSAgICAgICAgICAgIHRlbXAgPSBjb25kZW5zZSggbWF0Y2hlck91dCwgcG9zdE1h
cCApOwotICAgICAgICAgICAgcG9zdEZpbHRlciggdGVtcCwgW10sIGNvbnRleHQsIHhtbCApOwot
Ci0gICAgICAgICAgICAvLyBVbi1tYXRjaCBmYWlsaW5nIGVsZW1lbnRzIGJ5IG1vdmluZyB0aGVt
IGJhY2sgdG8gbWF0Y2hlckluCi0gICAgICAgICAgICBpID0gdGVtcC5sZW5ndGg7Ci0gICAgICAg
ICAgICB3aGlsZSAoIGktLSApIHsKLSAgICAgICAgICAgICAgICBpZiAoIChlbGVtID0gdGVtcFtp
XSkgKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1hdGNoZXJPdXRbIHBvc3RNYXBbaV0gXSA9ICEo
bWF0Y2hlckluWyBwb3N0TWFwW2ldIF0gPSBlbGVtKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIHNlZWQgKSB7Ci0gICAgICAgICAg
ICBpZiAoIHBvc3RGaW5kZXIgfHwgcHJlRmlsdGVyICkgewotICAgICAgICAgICAgICAgIGlmICgg
cG9zdEZpbmRlciApIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gR2V0IHRoZSBmaW5hbCBtYXRj
aGVyT3V0IGJ5IGNvbmRlbnNpbmcgdGhpcyBpbnRlcm1lZGlhdGUgaW50byBwb3N0RmluZGVyIGNv
bnRleHRzCi0gICAgICAgICAgICAgICAgICAgIHRlbXAgPSBbXTsKLSAgICAgICAgICAgICAgICAg
ICAgaSA9IG1hdGNoZXJPdXQubGVuZ3RoOwotICAgICAgICAgICAgICAgICAgICB3aGlsZSAoIGkt
LSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICggKGVsZW0gPSBtYXRjaGVyT3V0W2ld
KSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXN0b3JlIG1hdGNoZXJJbiBz
aW5jZSBlbGVtIGlzIG5vdCB5ZXQgYSBmaW5hbCBtYXRjaAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRlbXAucHVzaCggKG1hdGNoZXJJbltpXSA9IGVsZW0pICk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg
cG9zdEZpbmRlciggbnVsbCwgKG1hdGNoZXJPdXQgPSBbXSksIHRlbXAsIHhtbCApOwotICAgICAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIC8vIE1vdmUgbWF0Y2hlZCBlbGVtZW50cyBm
cm9tIHNlZWQgdG8gcmVzdWx0cyB0byBrZWVwIHRoZW0gc3luY2hyb25pemVkCi0gICAgICAgICAg
ICAgICAgaSA9IG1hdGNoZXJPdXQubGVuZ3RoOwotICAgICAgICAgICAgICAgIHdoaWxlICggaS0t
ICkgewotICAgICAgICAgICAgICAgICAgICBpZiAoIChlbGVtID0gbWF0Y2hlck91dFtpXSkgJiYK
LSAgICAgICAgICAgICAgICAgICAgICAgICh0ZW1wID0gcG9zdEZpbmRlciA/IGluZGV4T2YuY2Fs
bCggc2VlZCwgZWxlbSApIDogcHJlTWFwW2ldKSA+IC0xICkgewotCi0gICAgICAgICAgICAgICAg
ICAgICAgICBzZWVkW3RlbXBdID0gIShyZXN1bHRzW3RlbXBdID0gZWxlbSk7Ci0gICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAg
Ly8gQWRkIGVsZW1lbnRzIHRvIHJlc3VsdHMsIHRocm91Z2ggcG9zdEZpbmRlciBpZiBkZWZpbmVk
Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtYXRjaGVyT3V0ID0gY29uZGVuc2UoCi0g
ICAgICAgICAgICAgICAgbWF0Y2hlck91dCA9PT0gcmVzdWx0cyA/Ci0gICAgICAgICAgICAgICAg
ICAgIG1hdGNoZXJPdXQuc3BsaWNlKCBwcmVleGlzdGluZywgbWF0Y2hlck91dC5sZW5ndGggKSA6
Ci0gICAgICAgICAgICAgICAgICAgIG1hdGNoZXJPdXQKLSAgICAgICAgICAgICk7Ci0gICAgICAg
ICAgICBpZiAoIHBvc3RGaW5kZXIgKSB7Ci0gICAgICAgICAgICAgICAgcG9zdEZpbmRlciggbnVs
bCwgcmVzdWx0cywgbWF0Y2hlck91dCwgeG1sICk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgIHB1c2guYXBwbHkoIHJlc3VsdHMsIG1hdGNoZXJPdXQgKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotICAgIH0pOwotfQotCi1mdW5jdGlvbiBtYXRjaGVyRnJvbVRva2Vu
cyggdG9rZW5zICkgewotICAgIHZhciBjaGVja0NvbnRleHQsIG1hdGNoZXIsIGosCi0gICAgICAg
IGxlbiA9IHRva2Vucy5sZW5ndGgsCi0gICAgICAgIGxlYWRpbmdSZWxhdGl2ZSA9IEV4cHIucmVs
YXRpdmVbIHRva2Vuc1swXS50eXBlIF0sCi0gICAgICAgIGltcGxpY2l0UmVsYXRpdmUgPSBsZWFk
aW5nUmVsYXRpdmUgfHwgRXhwci5yZWxhdGl2ZVsiICJdLAotICAgICAgICBpID0gbGVhZGluZ1Jl
bGF0aXZlID8gMSA6IDAsCi0KLSAgICAgICAgLy8gVGhlIGZvdW5kYXRpb25hbCBtYXRjaGVyIGVu
c3VyZXMgdGhhdCBlbGVtZW50cyBhcmUgcmVhY2hhYmxlIGZyb20gdG9wLWxldmVsIGNvbnRleHQo
cykKLSAgICAgICAgbWF0Y2hDb250ZXh0ID0gYWRkQ29tYmluYXRvciggZnVuY3Rpb24oIGVsZW0g
KSB7Ci0gICAgICAgICAgICByZXR1cm4gZWxlbSA9PT0gY2hlY2tDb250ZXh0OwotICAgICAgICB9
LCBpbXBsaWNpdFJlbGF0aXZlLCB0cnVlICksCi0gICAgICAgIG1hdGNoQW55Q29udGV4dCA9IGFk
ZENvbWJpbmF0b3IoIGZ1bmN0aW9uKCBlbGVtICkgewotICAgICAgICAgICAgcmV0dXJuIGluZGV4
T2YuY2FsbCggY2hlY2tDb250ZXh0LCBlbGVtICkgPiAtMTsKLSAgICAgICAgfSwgaW1wbGljaXRS
ZWxhdGl2ZSwgdHJ1ZSApLAotICAgICAgICBtYXRjaGVycyA9IFsgZnVuY3Rpb24oIGVsZW0sIGNv
bnRleHQsIHhtbCApIHsKLSAgICAgICAgICAgIHJldHVybiAoICFsZWFkaW5nUmVsYXRpdmUgJiYg
KCB4bWwgfHwgY29udGV4dCAhPT0gb3V0ZXJtb3N0Q29udGV4dCApICkgfHwgKAotICAgICAgICAg
ICAgICAgIChjaGVja0NvbnRleHQgPSBjb250ZXh0KS5ub2RlVHlwZSA/Ci0gICAgICAgICAgICAg
ICAgICAgIG1hdGNoQ29udGV4dCggZWxlbSwgY29udGV4dCwgeG1sICkgOgotICAgICAgICAgICAg
ICAgICAgICBtYXRjaEFueUNvbnRleHQoIGVsZW0sIGNvbnRleHQsIHhtbCApICk7Ci0gICAgICAg
IH0gXTsKLQotICAgIGZvciAoIDsgaSA8IGxlbjsgaSsrICkgewotICAgICAgICBpZiAoIChtYXRj
aGVyID0gRXhwci5yZWxhdGl2ZVsgdG9rZW5zW2ldLnR5cGUgXSkgKSB7Ci0gICAgICAgICAgICBt
YXRjaGVycyA9IFsgYWRkQ29tYmluYXRvcihlbGVtZW50TWF0Y2hlciggbWF0Y2hlcnMgKSwgbWF0
Y2hlcikgXTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1hdGNoZXIgPSBFeHByLmZp
bHRlclsgdG9rZW5zW2ldLnR5cGUgXS5hcHBseSggbnVsbCwgdG9rZW5zW2ldLm1hdGNoZXMgKTsK
LQotICAgICAgICAgICAgLy8gUmV0dXJuIHNwZWNpYWwgdXBvbiBzZWVpbmcgYSBwb3NpdGlvbmFs
IG1hdGNoZXIKLSAgICAgICAgICAgIGlmICggbWF0Y2hlclsgZXhwYW5kbyBdICkgewotICAgICAg
ICAgICAgICAgIC8vIEZpbmQgdGhlIG5leHQgcmVsYXRpdmUgb3BlcmF0b3IgKGlmIGFueSkgZm9y
IHByb3BlciBoYW5kbGluZwotICAgICAgICAgICAgICAgIGogPSArK2k7Ci0gICAgICAgICAgICAg
ICAgZm9yICggOyBqIDwgbGVuOyBqKysgKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICggRXhw
ci5yZWxhdGl2ZVsgdG9rZW5zW2pdLnR5cGUgXSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIHJldHVybiBzZXRNYXRjaGVyKAotICAgICAgICAgICAgICAgICAgICBpID4gMSAm
JiBlbGVtZW50TWF0Y2hlciggbWF0Y2hlcnMgKSwKLSAgICAgICAgICAgICAgICAgICAgaSA+IDEg
JiYgdG9TZWxlY3RvcigKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBwcmVjZWRp
bmcgdG9rZW4gd2FzIGEgZGVzY2VuZGFudCBjb21iaW5hdG9yLCBpbnNlcnQgYW4gaW1wbGljaXQg
YW55LWVsZW1lbnQgYCpgCi0gICAgICAgICAgICAgICAgICAgICAgICB0b2tlbnMuc2xpY2UoIDAs
IGkgLSAxICkuY29uY2F0KHsgdmFsdWU6IHRva2Vuc1sgaSAtIDIgXS50eXBlID09PSAiICIgPyAi
KiIgOiAiIiB9KQotICAgICAgICAgICAgICAgICAgICApLnJlcGxhY2UoIHJ0cmltLCAiJDEiICks
Ci0gICAgICAgICAgICAgICAgICAgIG1hdGNoZXIsCi0gICAgICAgICAgICAgICAgICAgIGkgPCBq
ICYmIG1hdGNoZXJGcm9tVG9rZW5zKCB0b2tlbnMuc2xpY2UoIGksIGogKSApLAotICAgICAgICAg
ICAgICAgICAgICBqIDwgbGVuICYmIG1hdGNoZXJGcm9tVG9rZW5zKCAodG9rZW5zID0gdG9rZW5z
LnNsaWNlKCBqICkpICksCi0gICAgICAgICAgICAgICAgICAgIGogPCBsZW4gJiYgdG9TZWxlY3Rv
ciggdG9rZW5zICkKLSAgICAgICAgICAgICAgICApOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgbWF0Y2hlcnMucHVzaCggbWF0Y2hlciApOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0
dXJuIGVsZW1lbnRNYXRjaGVyKCBtYXRjaGVycyApOwotfQotCi1mdW5jdGlvbiBtYXRjaGVyRnJv
bUdyb3VwTWF0Y2hlcnMoIGVsZW1lbnRNYXRjaGVycywgc2V0TWF0Y2hlcnMgKSB7Ci0gICAgdmFy
IGJ5U2V0ID0gc2V0TWF0Y2hlcnMubGVuZ3RoID4gMCwKLSAgICAgICAgYnlFbGVtZW50ID0gZWxl
bWVudE1hdGNoZXJzLmxlbmd0aCA+IDAsCi0gICAgICAgIHN1cGVyTWF0Y2hlciA9IGZ1bmN0aW9u
KCBzZWVkLCBjb250ZXh0LCB4bWwsIHJlc3VsdHMsIG91dGVybW9zdCApIHsKLSAgICAgICAgICAg
IHZhciBlbGVtLCBqLCBtYXRjaGVyLAotICAgICAgICAgICAgICAgIG1hdGNoZWRDb3VudCA9IDAs
Ci0gICAgICAgICAgICAgICAgaSA9ICIwIiwKLSAgICAgICAgICAgICAgICB1bm1hdGNoZWQgPSBz
ZWVkICYmIFtdLAotICAgICAgICAgICAgICAgIHNldE1hdGNoZWQgPSBbXSwKLSAgICAgICAgICAg
ICAgICBjb250ZXh0QmFja3VwID0gb3V0ZXJtb3N0Q29udGV4dCwKLSAgICAgICAgICAgICAgICAv
LyBXZSBtdXN0IGFsd2F5cyBoYXZlIGVpdGhlciBzZWVkIGVsZW1lbnRzIG9yIG91dGVybW9zdCBj
b250ZXh0Ci0gICAgICAgICAgICAgICAgZWxlbXMgPSBzZWVkIHx8IGJ5RWxlbWVudCAmJiBFeHBy
LmZpbmRbIlRBRyJdKCAiKiIsIG91dGVybW9zdCApLAotICAgICAgICAgICAgICAgIC8vIFVzZSBp
bnRlZ2VyIGRpcnJ1bnMgaWZmIHRoaXMgaXMgdGhlIG91dGVybW9zdCBtYXRjaGVyCi0gICAgICAg
ICAgICAgICAgZGlycnVuc1VuaXF1ZSA9IChkaXJydW5zICs9IGNvbnRleHRCYWNrdXAgPT0gbnVs
bCA/IDEgOiBNYXRoLnJhbmRvbSgpIHx8IDAuMSksCi0gICAgICAgICAgICAgICAgbGVuID0gZWxl
bXMubGVuZ3RoOwotCi0gICAgICAgICAgICBpZiAoIG91dGVybW9zdCApIHsKLSAgICAgICAgICAg
ICAgICBvdXRlcm1vc3RDb250ZXh0ID0gY29udGV4dCAhPT0gZG9jdW1lbnQgJiYgY29udGV4dDsK
LSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gQWRkIGVsZW1lbnRzIHBhc3NpbmcgZWxl
bWVudE1hdGNoZXJzIGRpcmVjdGx5IHRvIHJlc3VsdHMKLSAgICAgICAgICAgIC8vIEtlZXAgYGlg
IGEgc3RyaW5nIGlmIHRoZXJlIGFyZSBubyBlbGVtZW50cyBzbyBgbWF0Y2hlZENvdW50YCB3aWxs
IGJlICIwMCIgYmVsb3cKLSAgICAgICAgICAgIC8vIFN1cHBvcnQ6IElFPDksIFNhZmFyaQotICAg
ICAgICAgICAgLy8gVG9sZXJhdGUgTm9kZUxpc3QgcHJvcGVydGllcyAoSUU6ICJsZW5ndGgiOyBT
YWZhcmk6IDxudW1iZXI+KSBtYXRjaGluZyBlbGVtZW50cyBieSBpZAotICAgICAgICAgICAgZm9y
ICggOyBpICE9PSBsZW4gJiYgKGVsZW0gPSBlbGVtc1tpXSkgIT0gbnVsbDsgaSsrICkgewotICAg
ICAgICAgICAgICAgIGlmICggYnlFbGVtZW50ICYmIGVsZW0gKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGogPSAwOwotICAgICAgICAgICAgICAgICAgICB3aGlsZSAoIChtYXRjaGVyID0gZWxlbWVu
dE1hdGNoZXJzW2orK10pICkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBtYXRjaGVy
KCBlbGVtLCBjb250ZXh0LCB4bWwgKSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXN1bHRzLnB1c2goIGVsZW0gKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgICAgICBpZiAoIG91dGVybW9zdCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGRpcnJ1bnMgPSBkaXJydW5zVW5pcXVlOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgLy8gVHJhY2sgdW5tYXRjaGVkIGVsZW1lbnRz
IGZvciBzZXQgZmlsdGVycwotICAgICAgICAgICAgICAgIGlmICggYnlTZXQgKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIC8vIFRoZXkgd2lsbCBoYXZlIGdvbmUgdGhyb3VnaCBhbGwgcG9zc2libGUg
bWF0Y2hlcnMKLSAgICAgICAgICAgICAgICAgICAgaWYgKCAoZWxlbSA9ICFtYXRjaGVyICYmIGVs
ZW0pICkgewotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlZENvdW50LS07Ci0gICAgICAg
ICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAvLyBMZW5ndGhlbiB0aGUgYXJy
YXkgZm9yIGV2ZXJ5IGVsZW1lbnQsIG1hdGNoZWQgb3Igbm90Ci0gICAgICAgICAgICAgICAgICAg
IGlmICggc2VlZCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHVubWF0Y2hlZC5wdXNoKCBl
bGVtICk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgIC8vIEFwcGx5IHNldCBmaWx0ZXJzIHRvIHVubWF0Y2hlZCBl
bGVtZW50cwotICAgICAgICAgICAgbWF0Y2hlZENvdW50ICs9IGk7Ci0gICAgICAgICAgICBpZiAo
IGJ5U2V0ICYmIGkgIT09IG1hdGNoZWRDb3VudCApIHsKLSAgICAgICAgICAgICAgICBqID0gMDsK
LSAgICAgICAgICAgICAgICB3aGlsZSAoIChtYXRjaGVyID0gc2V0TWF0Y2hlcnNbaisrXSkgKSB7
Ci0gICAgICAgICAgICAgICAgICAgIG1hdGNoZXIoIHVubWF0Y2hlZCwgc2V0TWF0Y2hlZCwgY29u
dGV4dCwgeG1sICk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKCBz
ZWVkICkgewotICAgICAgICAgICAgICAgICAgICAvLyBSZWludGVncmF0ZSBlbGVtZW50IG1hdGNo
ZXMgdG8gZWxpbWluYXRlIHRoZSBuZWVkIGZvciBzb3J0aW5nCi0gICAgICAgICAgICAgICAgICAg
IGlmICggbWF0Y2hlZENvdW50ID4gMCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxl
ICggaS0tICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggISh1bm1hdGNoZWRb
aV0gfHwgc2V0TWF0Y2hlZFtpXSkgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNldE1hdGNoZWRbaV0gPSBwb3AuY2FsbCggcmVzdWx0cyApOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICAgICAgICAgIC8vIERpc2NhcmQgaW5kZXggcGxhY2Vob2xkZXIg
dmFsdWVzIHRvIGdldCBvbmx5IGFjdHVhbCBtYXRjaGVzCi0gICAgICAgICAgICAgICAgICAgIHNl
dE1hdGNoZWQgPSBjb25kZW5zZSggc2V0TWF0Y2hlZCApOwotICAgICAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgICAgIC8vIEFkZCBtYXRjaGVzIHRvIHJlc3VsdHMKLSAgICAgICAgICAgICAg
ICBwdXNoLmFwcGx5KCByZXN1bHRzLCBzZXRNYXRjaGVkICk7Ci0KLSAgICAgICAgICAgICAgICAv
LyBTZWVkbGVzcyBzZXQgbWF0Y2hlcyBzdWNjZWVkaW5nIG11bHRpcGxlIHN1Y2Nlc3NmdWwgbWF0
Y2hlcnMgc3RpcHVsYXRlIHNvcnRpbmcKLSAgICAgICAgICAgICAgICBpZiAoIG91dGVybW9zdCAm
JiAhc2VlZCAmJiBzZXRNYXRjaGVkLmxlbmd0aCA+IDAgJiYKLSAgICAgICAgICAgICAgICAgICAg
KCBtYXRjaGVkQ291bnQgKyBzZXRNYXRjaGVycy5sZW5ndGggKSA+IDEgKSB7Ci0KLSAgICAgICAg
ICAgICAgICAgICAgU2l6emxlLnVuaXF1ZVNvcnQoIHJlc3VsdHMgKTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIE92ZXJyaWRlIG1hbmlwdWxhdGlv
biBvZiBnbG9iYWxzIGJ5IG5lc3RlZCBtYXRjaGVycwotICAgICAgICAgICAgaWYgKCBvdXRlcm1v
c3QgKSB7Ci0gICAgICAgICAgICAgICAgZGlycnVucyA9IGRpcnJ1bnNVbmlxdWU7Ci0gICAgICAg
ICAgICAgICAgb3V0ZXJtb3N0Q29udGV4dCA9IGNvbnRleHRCYWNrdXA7Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIHJldHVybiB1bm1hdGNoZWQ7Ci0gICAgICAgIH07Ci0KLSAgICByZXR1
cm4gYnlTZXQgPwotICAgICAgICBtYXJrRnVuY3Rpb24oIHN1cGVyTWF0Y2hlciApIDoKLSAgICAg
ICAgc3VwZXJNYXRjaGVyOwotfQotCi1jb21waWxlID0gU2l6emxlLmNvbXBpbGUgPSBmdW5jdGlv
biggc2VsZWN0b3IsIGdyb3VwIC8qIEludGVybmFsIFVzZSBPbmx5ICovICkgewotICAgIHZhciBp
LAotICAgICAgICBzZXRNYXRjaGVycyA9IFtdLAotICAgICAgICBlbGVtZW50TWF0Y2hlcnMgPSBb
XSwKLSAgICAgICAgY2FjaGVkID0gY29tcGlsZXJDYWNoZVsgc2VsZWN0b3IgKyAiICIgXTsKLQot
ICAgIGlmICggIWNhY2hlZCApIHsKLSAgICAgICAgLy8gR2VuZXJhdGUgYSBmdW5jdGlvbiBvZiBy
ZWN1cnNpdmUgZnVuY3Rpb25zIHRoYXQgY2FuIGJlIHVzZWQgdG8gY2hlY2sgZWFjaCBlbGVtZW50
Ci0gICAgICAgIGlmICggIWdyb3VwICkgewotICAgICAgICAgICAgZ3JvdXAgPSB0b2tlbml6ZSgg
c2VsZWN0b3IgKTsKLSAgICAgICAgfQotICAgICAgICBpID0gZ3JvdXAubGVuZ3RoOwotICAgICAg
ICB3aGlsZSAoIGktLSApIHsKLSAgICAgICAgICAgIGNhY2hlZCA9IG1hdGNoZXJGcm9tVG9rZW5z
KCBncm91cFtpXSApOwotICAgICAgICAgICAgaWYgKCBjYWNoZWRbIGV4cGFuZG8gXSApIHsKLSAg
ICAgICAgICAgICAgICBzZXRNYXRjaGVycy5wdXNoKCBjYWNoZWQgKTsKLSAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgZWxlbWVudE1hdGNoZXJzLnB1c2goIGNhY2hlZCApOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLy8gQ2FjaGUgdGhlIGNvbXBpbGVk
IGZ1bmN0aW9uCi0gICAgICAgIGNhY2hlZCA9IGNvbXBpbGVyQ2FjaGUoIHNlbGVjdG9yLCBtYXRj
aGVyRnJvbUdyb3VwTWF0Y2hlcnMoIGVsZW1lbnRNYXRjaGVycywgc2V0TWF0Y2hlcnMgKSApOwot
ICAgIH0KLSAgICByZXR1cm4gY2FjaGVkOwotfTsKLQotZnVuY3Rpb24gbXVsdGlwbGVDb250ZXh0
cyggc2VsZWN0b3IsIGNvbnRleHRzLCByZXN1bHRzICkgewotICAgIHZhciBpID0gMCwKLSAgICAg
ICAgbGVuID0gY29udGV4dHMubGVuZ3RoOwotICAgIGZvciAoIDsgaSA8IGxlbjsgaSsrICkgewot
ICAgICAgICBTaXp6bGUoIHNlbGVjdG9yLCBjb250ZXh0c1tpXSwgcmVzdWx0cyApOwotICAgIH0K
LSAgICByZXR1cm4gcmVzdWx0czsKLX0KLQotZnVuY3Rpb24gc2VsZWN0KCBzZWxlY3RvciwgY29u
dGV4dCwgcmVzdWx0cywgc2VlZCApIHsKLSAgICB2YXIgaSwgdG9rZW5zLCB0b2tlbiwgdHlwZSwg
ZmluZCwKLSAgICAgICAgbWF0Y2ggPSB0b2tlbml6ZSggc2VsZWN0b3IgKTsKLQotICAgIGlmICgg
IXNlZWQgKSB7Ci0gICAgICAgIC8vIFRyeSB0byBtaW5pbWl6ZSBvcGVyYXRpb25zIGlmIHRoZXJl
IGlzIG9ubHkgb25lIGdyb3VwCi0gICAgICAgIGlmICggbWF0Y2gubGVuZ3RoID09PSAxICkgewot
Ci0gICAgICAgICAgICAvLyBUYWtlIGEgc2hvcnRjdXQgYW5kIHNldCB0aGUgY29udGV4dCBpZiB0
aGUgcm9vdCBzZWxlY3RvciBpcyBhbiBJRAotICAgICAgICAgICAgdG9rZW5zID0gbWF0Y2hbMF0g
PSBtYXRjaFswXS5zbGljZSggMCApOwotICAgICAgICAgICAgaWYgKCB0b2tlbnMubGVuZ3RoID4g
MiAmJiAodG9rZW4gPSB0b2tlbnNbMF0pLnR5cGUgPT09ICJJRCIgJiYKLSAgICAgICAgICAgICAg
ICAgICAgc3VwcG9ydC5nZXRCeUlkICYmIGNvbnRleHQubm9kZVR5cGUgPT09IDkgJiYgZG9jdW1l
bnRJc0hUTUwgJiYKLSAgICAgICAgICAgICAgICAgICAgRXhwci5yZWxhdGl2ZVsgdG9rZW5zWzFd
LnR5cGUgXSApIHsKLQotICAgICAgICAgICAgICAgIGNvbnRleHQgPSAoIEV4cHIuZmluZFsiSUQi
XSggdG9rZW4ubWF0Y2hlc1swXS5yZXBsYWNlKHJ1bmVzY2FwZSwgZnVuZXNjYXBlKSwgY29udGV4
dCApIHx8IFtdIClbMF07Ci0gICAgICAgICAgICAgICAgaWYgKCAhY29udGV4dCApIHsKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdHM7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIHNlbGVjdG9yID0gc2VsZWN0b3Iuc2xpY2UoIHRva2Vucy5zaGlmdCgpLnZhbHVl
Lmxlbmd0aCApOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBGZXRjaCBhIHNlZWQg
c2V0IGZvciByaWdodC10by1sZWZ0IG1hdGNoaW5nCi0gICAgICAgICAgICBpID0gbWF0Y2hFeHBy
WyJuZWVkc0NvbnRleHQiXS50ZXN0KCBzZWxlY3RvciApID8gMCA6IHRva2Vucy5sZW5ndGg7Ci0g
ICAgICAgICAgICB3aGlsZSAoIGktLSApIHsKLSAgICAgICAgICAgICAgICB0b2tlbiA9IHRva2Vu
c1tpXTsKLQotICAgICAgICAgICAgICAgIC8vIEFib3J0IGlmIHdlIGhpdCBhIGNvbWJpbmF0b3IK
LSAgICAgICAgICAgICAgICBpZiAoIEV4cHIucmVsYXRpdmVbICh0eXBlID0gdG9rZW4udHlwZSkg
XSApIHsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIGlmICggKGZpbmQgPSBFeHByLmZpbmRbIHR5cGUgXSkgKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIC8vIFNlYXJjaCwgZXhwYW5kaW5nIGNvbnRleHQgZm9yIGxlYWRpbmcgc2li
bGluZyBjb21iaW5hdG9ycwotICAgICAgICAgICAgICAgICAgICBpZiAoIChzZWVkID0gZmluZCgK
LSAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLm1hdGNoZXNbMF0ucmVwbGFjZSggcnVuZXNj
YXBlLCBmdW5lc2NhcGUgKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHJzaWJsaW5nLnRlc3Qo
IHRva2Vuc1swXS50eXBlICkgJiYgdGVzdENvbnRleHQoIGNvbnRleHQucGFyZW50Tm9kZSApIHx8
IGNvbnRleHQKLSAgICAgICAgICAgICAgICAgICAgKSkgKSB7Ci0KLSAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIElmIHNlZWQgaXMgZW1wdHkgb3Igbm8gdG9rZW5zIHJlbWFpbiwgd2UgY2FuIHJl
dHVybiBlYXJseQotICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5zLnNwbGljZSggaSwgMSAp
OwotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3IgPSBzZWVkLmxlbmd0aCAmJiB0b1Nl
bGVjdG9yKCB0b2tlbnMgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICggIXNlbGVjdG9y
ICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2guYXBwbHkoIHJlc3VsdHMsIHNl
ZWQgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0czsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBDb21waWxlIGFuZCBleGVjdXRlIGEgZmlsdGVyaW5n
IGZ1bmN0aW9uCi0gICAgLy8gUHJvdmlkZSBgbWF0Y2hgIHRvIGF2b2lkIHJldG9rZW5pemF0aW9u
IGlmIHdlIG1vZGlmaWVkIHRoZSBzZWxlY3RvciBhYm92ZQotICAgIGNvbXBpbGUoIHNlbGVjdG9y
LCBtYXRjaCApKAotICAgICAgICBzZWVkLAotICAgICAgICBjb250ZXh0LAotICAgICAgICAhZG9j
dW1lbnRJc0hUTUwsCi0gICAgICAgIHJlc3VsdHMsCi0gICAgICAgIHJzaWJsaW5nLnRlc3QoIHNl
bGVjdG9yICkgJiYgdGVzdENvbnRleHQoIGNvbnRleHQucGFyZW50Tm9kZSApIHx8IGNvbnRleHQK
LSAgICApOwotICAgIHJldHVybiByZXN1bHRzOwotfQotCi0vLyBPbmUtdGltZSBhc3NpZ25tZW50
cwotCi0vLyBTb3J0IHN0YWJpbGl0eQotc3VwcG9ydC5zb3J0U3RhYmxlID0gZXhwYW5kby5zcGxp
dCgiIikuc29ydCggc29ydE9yZGVyICkuam9pbigiIikgPT09IGV4cGFuZG87Ci0KLS8vIFN1cHBv
cnQ6IENocm9tZTwxNAotLy8gQWx3YXlzIGFzc3VtZSBkdXBsaWNhdGVzIGlmIHRoZXkgYXJlbid0
IHBhc3NlZCB0byB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbgotc3VwcG9ydC5kZXRlY3REdXBsaWNh
dGVzID0gISFoYXNEdXBsaWNhdGU7Ci0KLS8vIEluaXRpYWxpemUgYWdhaW5zdCB0aGUgZGVmYXVs
dCBkb2N1bWVudAotc2V0RG9jdW1lbnQoKTsKLQotLy8gU3VwcG9ydDogV2Via2l0PDUzNy4zMiAt
IFNhZmFyaSA2LjAuMy9DaHJvbWUgMjUgKGZpeGVkIGluIENocm9tZSAyNykKLS8vIERldGFjaGVk
IG5vZGVzIGNvbmZvdW5kaW5nbHkgZm9sbG93ICplYWNoIG90aGVyKgotc3VwcG9ydC5zb3J0RGV0
YWNoZWQgPSBhc3NlcnQoZnVuY3Rpb24oIGRpdjEgKSB7Ci0gICAgLy8gU2hvdWxkIHJldHVybiAx
LCBidXQgcmV0dXJucyA0IChmb2xsb3dpbmcpCi0gICAgcmV0dXJuIGRpdjEuY29tcGFyZURvY3Vt
ZW50UG9zaXRpb24oIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpICkgJiAxOwotfSk7Ci0K
LS8vIFN1cHBvcnQ6IElFPDgKLS8vIFByZXZlbnQgYXR0cmlidXRlL3Byb3BlcnR5ICJpbnRlcnBv
bGF0aW9uIgotLy8gaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L21zNTM2
NDI5JTI4VlMuODUlMjkuYXNweAotaWYgKCAhYXNzZXJ0KGZ1bmN0aW9uKCBkaXYgKSB7Ci0gICAg
ZGl2LmlubmVySFRNTCA9ICI8YSBocmVmPScjJz48L2E+IjsKLSAgICByZXR1cm4gZGl2LmZpcnN0
Q2hpbGQuZ2V0QXR0cmlidXRlKCJocmVmIikgPT09ICIjIiA7Ci19KSApIHsKLSAgICBhZGRIYW5k
bGUoICJ0eXBlfGhyZWZ8aGVpZ2h0fHdpZHRoIiwgZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGlzWE1M
ICkgewotICAgICAgICBpZiAoICFpc1hNTCApIHsKLSAgICAgICAgICAgIHJldHVybiBlbGVtLmdl
dEF0dHJpYnV0ZSggbmFtZSwgbmFtZS50b0xvd2VyQ2FzZSgpID09PSAidHlwZSIgPyAxIDogMiAp
OwotICAgICAgICB9Ci0gICAgfSk7Ci19Ci0KLS8vIFN1cHBvcnQ6IElFPDkKLS8vIFVzZSBkZWZh
dWx0VmFsdWUgaW4gcGxhY2Ugb2YgZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpCi1pZiAoICFzdXBwb3J0
LmF0dHJpYnV0ZXMgfHwgIWFzc2VydChmdW5jdGlvbiggZGl2ICkgewotICAgIGRpdi5pbm5lckhU
TUwgPSAiPGlucHV0Lz4iOwotICAgIGRpdi5maXJzdENoaWxkLnNldEF0dHJpYnV0ZSggInZhbHVl
IiwgIiIgKTsKLSAgICByZXR1cm4gZGl2LmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCAidmFsdWUi
ICkgPT09ICIiOwotfSkgKSB7Ci0gICAgYWRkSGFuZGxlKCAidmFsdWUiLCBmdW5jdGlvbiggZWxl
bSwgbmFtZSwgaXNYTUwgKSB7Ci0gICAgICAgIGlmICggIWlzWE1MICYmIGVsZW0ubm9kZU5hbWUu
dG9Mb3dlckNhc2UoKSA9PT0gImlucHV0IiApIHsKLSAgICAgICAgICAgIHJldHVybiBlbGVtLmRl
ZmF1bHRWYWx1ZTsKLSAgICAgICAgfQotICAgIH0pOwotfQotCi0vLyBTdXBwb3J0OiBJRTw5Ci0v
LyBVc2UgZ2V0QXR0cmlidXRlTm9kZSB0byBmZXRjaCBib29sZWFucyB3aGVuIGdldEF0dHJpYnV0
ZSBsaWVzCi1pZiAoICFhc3NlcnQoZnVuY3Rpb24oIGRpdiApIHsKLSAgICByZXR1cm4gZGl2Lmdl
dEF0dHJpYnV0ZSgiZGlzYWJsZWQiKSA9PSBudWxsOwotfSkgKSB7Ci0gICAgYWRkSGFuZGxlKCBi
b29sZWFucywgZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGlzWE1MICkgewotICAgICAgICB2YXIgdmFs
OwotICAgICAgICBpZiAoICFpc1hNTCApIHsKLSAgICAgICAgICAgIHJldHVybiBlbGVtWyBuYW1l
IF0gPT09IHRydWUgPyBuYW1lLnRvTG93ZXJDYXNlKCkgOgotICAgICAgICAgICAgICAgICAgICAo
dmFsID0gZWxlbS5nZXRBdHRyaWJ1dGVOb2RlKCBuYW1lICkpICYmIHZhbC5zcGVjaWZpZWQgPwot
ICAgICAgICAgICAgICAgICAgICB2YWwudmFsdWUgOgotICAgICAgICAgICAgICAgIG51bGw7Ci0g
ICAgICAgIH0KLSAgICB9KTsKLX0KLQotcmV0dXJuIFNpenpsZTsKLQotfSkoIHdpbmRvdyApOwot
Ci0KLQotalF1ZXJ5LmZpbmQgPSBTaXp6bGU7Ci1qUXVlcnkuZXhwciA9IFNpenpsZS5zZWxlY3Rv
cnM7Ci1qUXVlcnkuZXhwclsiOiJdID0galF1ZXJ5LmV4cHIucHNldWRvczsKLWpRdWVyeS51bmlx
dWUgPSBTaXp6bGUudW5pcXVlU29ydDsKLWpRdWVyeS50ZXh0ID0gU2l6emxlLmdldFRleHQ7Ci1q
UXVlcnkuaXNYTUxEb2MgPSBTaXp6bGUuaXNYTUw7Ci1qUXVlcnkuY29udGFpbnMgPSBTaXp6bGUu
Y29udGFpbnM7Ci0KLQotCi12YXIgcm5lZWRzQ29udGV4dCA9IGpRdWVyeS5leHByLm1hdGNoLm5l
ZWRzQ29udGV4dDsKLQotdmFyIHJzaW5nbGVUYWcgPSAoL148KFx3KylccypcLz8+KD86PFwvXDE+
fCkkLyk7Ci0KLQotCi12YXIgcmlzU2ltcGxlID0gL14uW146I1xbXC4sXSokLzsKLQotLy8gSW1w
bGVtZW50IHRoZSBpZGVudGljYWwgZnVuY3Rpb25hbGl0eSBmb3IgZmlsdGVyIGFuZCBub3QKLWZ1
bmN0aW9uIHdpbm5vdyggZWxlbWVudHMsIHF1YWxpZmllciwgbm90ICkgewotICAgIGlmICggalF1
ZXJ5LmlzRnVuY3Rpb24oIHF1YWxpZmllciApICkgewotICAgICAgICByZXR1cm4galF1ZXJ5Lmdy
ZXAoIGVsZW1lbnRzLCBmdW5jdGlvbiggZWxlbSwgaSApIHsKLSAgICAgICAgICAgIC8qIGpzaGlu
dCAtVzAxOCAqLwotICAgICAgICAgICAgcmV0dXJuICEhcXVhbGlmaWVyLmNhbGwoIGVsZW0sIGks
IGVsZW0gKSAhPT0gbm90OwotICAgICAgICB9KTsKLQotICAgIH0KLQotICAgIGlmICggcXVhbGlm
aWVyLm5vZGVUeXBlICkgewotICAgICAgICByZXR1cm4galF1ZXJ5LmdyZXAoIGVsZW1lbnRzLCBm
dW5jdGlvbiggZWxlbSApIHsKLSAgICAgICAgICAgIHJldHVybiAoIGVsZW0gPT09IHF1YWxpZmll
ciApICE9PSBub3Q7Ci0gICAgICAgIH0pOwotCi0gICAgfQotCi0gICAgaWYgKCB0eXBlb2YgcXVh
bGlmaWVyID09PSAic3RyaW5nIiApIHsKLSAgICAgICAgaWYgKCByaXNTaW1wbGUudGVzdCggcXVh
bGlmaWVyICkgKSB7Ci0gICAgICAgICAgICByZXR1cm4galF1ZXJ5LmZpbHRlciggcXVhbGlmaWVy
LCBlbGVtZW50cywgbm90ICk7Ci0gICAgICAgIH0KLQotICAgICAgICBxdWFsaWZpZXIgPSBqUXVl
cnkuZmlsdGVyKCBxdWFsaWZpZXIsIGVsZW1lbnRzICk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGpR
dWVyeS5ncmVwKCBlbGVtZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgICAgIHJldHVybiAo
IGluZGV4T2YuY2FsbCggcXVhbGlmaWVyLCBlbGVtICkgPj0gMCApICE9PSBub3Q7Ci0gICAgfSk7
Ci19Ci0KLWpRdWVyeS5maWx0ZXIgPSBmdW5jdGlvbiggZXhwciwgZWxlbXMsIG5vdCApIHsKLSAg
ICB2YXIgZWxlbSA9IGVsZW1zWyAwIF07Ci0KLSAgICBpZiAoIG5vdCApIHsKLSAgICAgICAgZXhw
ciA9ICI6bm90KCIgKyBleHByICsgIikiOwotICAgIH0KLQotICAgIHJldHVybiBlbGVtcy5sZW5n
dGggPT09IDEgJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSA/Ci0gICAgICAgIGpRdWVyeS5maW5kLm1h
dGNoZXNTZWxlY3RvciggZWxlbSwgZXhwciApID8gWyBlbGVtIF0gOiBbXSA6Ci0gICAgICAgIGpR
dWVyeS5maW5kLm1hdGNoZXMoIGV4cHIsIGpRdWVyeS5ncmVwKCBlbGVtcywgZnVuY3Rpb24oIGVs
ZW0gKSB7Ci0gICAgICAgICAgICByZXR1cm4gZWxlbS5ub2RlVHlwZSA9PT0gMTsKLSAgICAgICAg
fSkpOwotfTsKLQotalF1ZXJ5LmZuLmV4dGVuZCh7Ci0gICAgZmluZDogZnVuY3Rpb24oIHNlbGVj
dG9yICkgewotICAgICAgICB2YXIgaSwKLSAgICAgICAgICAgIGxlbiA9IHRoaXMubGVuZ3RoLAot
ICAgICAgICAgICAgcmV0ID0gW10sCi0gICAgICAgICAgICBzZWxmID0gdGhpczsKLQotICAgICAg
ICBpZiAoIHR5cGVvZiBzZWxlY3RvciAhPT0gInN0cmluZyIgKSB7Ci0gICAgICAgICAgICByZXR1
cm4gdGhpcy5wdXNoU3RhY2soIGpRdWVyeSggc2VsZWN0b3IgKS5maWx0ZXIoZnVuY3Rpb24oKSB7
Ci0gICAgICAgICAgICAgICAgZm9yICggaSA9IDA7IGkgPCBsZW47IGkrKyApIHsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKCBqUXVlcnkuY29udGFpbnMoIHNlbGZbIGkgXSwgdGhpcyApICkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9KSApOwotICAgICAgICB9Ci0KLSAg
ICAgICAgZm9yICggaSA9IDA7IGkgPCBsZW47IGkrKyApIHsKLSAgICAgICAgICAgIGpRdWVyeS5m
aW5kKCBzZWxlY3Rvciwgc2VsZlsgaSBdLCByZXQgKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8v
IE5lZWRlZCBiZWNhdXNlICQoIHNlbGVjdG9yLCBjb250ZXh0ICkgYmVjb21lcyAkKCBjb250ZXh0
ICkuZmluZCggc2VsZWN0b3IgKQotICAgICAgICByZXQgPSB0aGlzLnB1c2hTdGFjayggbGVuID4g
MSA/IGpRdWVyeS51bmlxdWUoIHJldCApIDogcmV0ICk7Ci0gICAgICAgIHJldC5zZWxlY3RvciA9
IHRoaXMuc2VsZWN0b3IgPyB0aGlzLnNlbGVjdG9yICsgIiAiICsgc2VsZWN0b3IgOiBzZWxlY3Rv
cjsKLSAgICAgICAgcmV0dXJuIHJldDsKLSAgICB9LAotICAgIGZpbHRlcjogZnVuY3Rpb24oIHNl
bGVjdG9yICkgewotICAgICAgICByZXR1cm4gdGhpcy5wdXNoU3RhY2soIHdpbm5vdyh0aGlzLCBz
ZWxlY3RvciB8fCBbXSwgZmFsc2UpICk7Ci0gICAgfSwKLSAgICBub3Q6IGZ1bmN0aW9uKCBzZWxl
Y3RvciApIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucHVzaFN0YWNrKCB3aW5ub3codGhpcywgc2Vs
ZWN0b3IgfHwgW10sIHRydWUpICk7Ci0gICAgfSwKLSAgICBpczogZnVuY3Rpb24oIHNlbGVjdG9y
ICkgewotICAgICAgICByZXR1cm4gISF3aW5ub3coCi0gICAgICAgICAgICB0aGlzLAotCi0gICAg
ICAgICAgICAvLyBJZiB0aGlzIGlzIGEgcG9zaXRpb25hbC9yZWxhdGl2ZSBzZWxlY3RvciwgY2hl
Y2sgbWVtYmVyc2hpcCBpbiB0aGUgcmV0dXJuZWQgc2V0Ci0gICAgICAgICAgICAvLyBzbyAkKCJw
OmZpcnN0IikuaXMoInA6bGFzdCIpIHdvbid0IHJldHVybiB0cnVlIGZvciBhIGRvYyB3aXRoIHR3
byAicCIuCi0gICAgICAgICAgICB0eXBlb2Ygc2VsZWN0b3IgPT09ICJzdHJpbmciICYmIHJuZWVk
c0NvbnRleHQudGVzdCggc2VsZWN0b3IgKSA/Ci0gICAgICAgICAgICAgICAgalF1ZXJ5KCBzZWxl
Y3RvciApIDoKLSAgICAgICAgICAgICAgICBzZWxlY3RvciB8fCBbXSwKLSAgICAgICAgICAgIGZh
bHNlCi0gICAgICAgICkubGVuZ3RoOwotICAgIH0KLX0pOwotCi0KLS8vIEluaXRpYWxpemUgYSBq
UXVlcnkgb2JqZWN0Ci0KLQotLy8gQSBjZW50cmFsIHJlZmVyZW5jZSB0byB0aGUgcm9vdCBqUXVl
cnkoZG9jdW1lbnQpCi12YXIgcm9vdGpRdWVyeSwKLQotICAgIC8vIEEgc2ltcGxlIHdheSB0byBj
aGVjayBmb3IgSFRNTCBzdHJpbmdzCi0gICAgLy8gUHJpb3JpdGl6ZSAjaWQgb3ZlciA8dGFnPiB0
byBhdm9pZCBYU1MgdmlhIGxvY2F0aW9uLmhhc2ggKCM5NTIxKQotICAgIC8vIFN0cmljdCBIVE1M
IHJlY29nbml0aW9uICgjMTEyOTA6IG11c3Qgc3RhcnQgd2l0aCA8KQotICAgIHJxdWlja0V4cHIg
PSAvXig/OlxzKig8W1x3XFddKz4pW14+XSp8IyhbXHctXSopKSQvLAotCi0gICAgaW5pdCA9IGpR
dWVyeS5mbi5pbml0ID0gZnVuY3Rpb24oIHNlbGVjdG9yLCBjb250ZXh0ICkgewotICAgICAgICB2
YXIgbWF0Y2gsIGVsZW07Ci0KLSAgICAgICAgLy8gSEFORExFOiAkKCIiKSwgJChudWxsKSwgJCh1
bmRlZmluZWQpLCAkKGZhbHNlKQotICAgICAgICBpZiAoICFzZWxlY3RvciApIHsKLSAgICAgICAg
ICAgIHJldHVybiB0aGlzOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gSGFuZGxlIEhUTUwgc3Ry
aW5ncwotICAgICAgICBpZiAoIHR5cGVvZiBzZWxlY3RvciA9PT0gInN0cmluZyIgKSB7Ci0gICAg
ICAgICAgICBpZiAoIHNlbGVjdG9yWzBdID09PSAiPCIgJiYgc2VsZWN0b3JbIHNlbGVjdG9yLmxl
bmd0aCAtIDEgXSA9PT0gIj4iICYmIHNlbGVjdG9yLmxlbmd0aCA+PSAzICkgewotICAgICAgICAg
ICAgICAgIC8vIEFzc3VtZSB0aGF0IHN0cmluZ3MgdGhhdCBzdGFydCBhbmQgZW5kIHdpdGggPD4g
YXJlIEhUTUwgYW5kIHNraXAgdGhlIHJlZ2V4IGNoZWNrCi0gICAgICAgICAgICAgICAgbWF0Y2gg
PSBbIG51bGwsIHNlbGVjdG9yLCBudWxsIF07Ci0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgbWF0Y2ggPSBycXVpY2tFeHByLmV4ZWMoIHNlbGVjdG9yICk7Ci0gICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgIC8vIE1hdGNoIGh0bWwgb3IgbWFrZSBzdXJlIG5vIGNvbnRl
eHQgaXMgc3BlY2lmaWVkIGZvciAjaWQKLSAgICAgICAgICAgIGlmICggbWF0Y2ggJiYgKG1hdGNo
WzFdIHx8ICFjb250ZXh0KSApIHsKLQotICAgICAgICAgICAgICAgIC8vIEhBTkRMRTogJChodG1s
KSAtPiAkKGFycmF5KQotICAgICAgICAgICAgICAgIGlmICggbWF0Y2hbMV0gKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGNvbnRleHQgPSBjb250ZXh0IGluc3RhbmNlb2YgalF1ZXJ5ID8gY29udGV4
dFswXSA6IGNvbnRleHQ7Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gc2NyaXB0cyBpcyB0cnVl
IGZvciBiYWNrLWNvbXBhdAotICAgICAgICAgICAgICAgICAgICAvLyBJbnRlbnRpb25hbGx5IGxl
dCB0aGUgZXJyb3IgYmUgdGhyb3duIGlmIHBhcnNlSFRNTCBpcyBub3QgcHJlc2VudAotICAgICAg
ICAgICAgICAgICAgICBqUXVlcnkubWVyZ2UoIHRoaXMsIGpRdWVyeS5wYXJzZUhUTUwoCi0gICAg
ICAgICAgICAgICAgICAgICAgICBtYXRjaFsxXSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnRleHQgJiYgY29udGV4dC5ub2RlVHlwZSA/IGNvbnRleHQub3duZXJEb2N1bWVudCB8fCBjb250
ZXh0IDogZG9jdW1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICB0cnVlCi0gICAgICAgICAg
ICAgICAgICAgICkgKTsKLQotICAgICAgICAgICAgICAgICAgICAvLyBIQU5ETEU6ICQoaHRtbCwg
cHJvcHMpCi0gICAgICAgICAgICAgICAgICAgIGlmICggcnNpbmdsZVRhZy50ZXN0KCBtYXRjaFsx
XSApICYmIGpRdWVyeS5pc1BsYWluT2JqZWN0KCBjb250ZXh0ICkgKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBmb3IgKCBtYXRjaCBpbiBjb250ZXh0ICkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIFByb3BlcnRpZXMgb2YgY29udGV4dCBhcmUgY2FsbGVkIGFzIG1ldGhvZHMg
aWYgcG9zc2libGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGpRdWVyeS5pc0Z1
bmN0aW9uKCB0aGlzWyBtYXRjaCBdICkgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRoaXNbIG1hdGNoIF0oIGNvbnRleHRbIG1hdGNoIF0gKTsKLQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIC4uLmFuZCBvdGhlcndpc2Ugc2V0IGFzIGF0dHJpYnV0ZXMKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0aGlzLmF0dHIoIG1hdGNoLCBjb250ZXh0WyBtYXRjaCBdICk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7Ci0KLSAgICAg
ICAgICAgICAgICAvLyBIQU5ETEU6ICQoI2lkKQotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGVsZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCggbWF0Y2hb
Ml0gKTsKLQotICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayBwYXJlbnROb2RlIHRvIGNhdGNo
IHdoZW4gQmxhY2tiZXJyeSA0LjYgcmV0dXJucwotICAgICAgICAgICAgICAgICAgICAvLyBub2Rl
cyB0aGF0IGFyZSBubyBsb25nZXIgaW4gdGhlIGRvY3VtZW50ICM2OTYzCi0gICAgICAgICAgICAg
ICAgICAgIGlmICggZWxlbSAmJiBlbGVtLnBhcmVudE5vZGUgKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAvLyBJbmplY3QgdGhlIGVsZW1lbnQgZGlyZWN0bHkgaW50byB0aGUgalF1ZXJ5IG9i
amVjdAotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sZW5ndGggPSAxOwotICAgICAgICAg
ICAgICAgICAgICAgICAgdGhpc1swXSA9IGVsZW07Ci0gICAgICAgICAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQgPSBkb2N1bWVudDsKLSAgICAgICAgICAg
ICAgICAgICAgdGhpcy5zZWxlY3RvciA9IHNlbGVjdG9yOwotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdGhpczsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIEhBTkRMRTog
JChleHByLCAkKC4uLikpCi0gICAgICAgICAgICB9IGVsc2UgaWYgKCAhY29udGV4dCB8fCBjb250
ZXh0LmpxdWVyeSApIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gKCBjb250ZXh0IHx8IHJvb3Rq
UXVlcnkgKS5maW5kKCBzZWxlY3RvciApOwotCi0gICAgICAgICAgICAvLyBIQU5ETEU6ICQoZXhw
ciwgY29udGV4dCkKLSAgICAgICAgICAgIC8vICh3aGljaCBpcyBqdXN0IGVxdWl2YWxlbnQgdG86
ICQoY29udGV4dCkuZmluZChleHByKQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gdGhpcy5jb25zdHJ1Y3RvciggY29udGV4dCApLmZpbmQoIHNlbGVjdG9yICk7
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgLy8gSEFORExFOiAkKERPTUVsZW1lbnQpCi0gICAg
ICAgIH0gZWxzZSBpZiAoIHNlbGVjdG9yLm5vZGVUeXBlICkgewotICAgICAgICAgICAgdGhpcy5j
b250ZXh0ID0gdGhpc1swXSA9IHNlbGVjdG9yOwotICAgICAgICAgICAgdGhpcy5sZW5ndGggPSAx
OwotICAgICAgICAgICAgcmV0dXJuIHRoaXM7Ci0KLSAgICAgICAgLy8gSEFORExFOiAkKGZ1bmN0
aW9uKQotICAgICAgICAvLyBTaG9ydGN1dCBmb3IgZG9jdW1lbnQgcmVhZHkKLSAgICAgICAgfSBl
bHNlIGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIHNlbGVjdG9yICkgKSB7Ci0gICAgICAgICAgICBy
ZXR1cm4gdHlwZW9mIHJvb3RqUXVlcnkucmVhZHkgIT09ICJ1bmRlZmluZWQiID8KLSAgICAgICAg
ICAgICAgICByb290alF1ZXJ5LnJlYWR5KCBzZWxlY3RvciApIDoKLSAgICAgICAgICAgICAgICAv
LyBFeGVjdXRlIGltbWVkaWF0ZWx5IGlmIHJlYWR5IGlzIG5vdCBwcmVzZW50Ci0gICAgICAgICAg
ICAgICAgc2VsZWN0b3IoIGpRdWVyeSApOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCBzZWxl
Y3Rvci5zZWxlY3RvciAhPT0gdW5kZWZpbmVkICkgewotICAgICAgICAgICAgdGhpcy5zZWxlY3Rv
ciA9IHNlbGVjdG9yLnNlbGVjdG9yOwotICAgICAgICAgICAgdGhpcy5jb250ZXh0ID0gc2VsZWN0
b3IuY29udGV4dDsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBqUXVlcnkubWFrZUFycmF5
KCBzZWxlY3RvciwgdGhpcyApOwotICAgIH07Ci0KLS8vIEdpdmUgdGhlIGluaXQgZnVuY3Rpb24g
dGhlIGpRdWVyeSBwcm90b3R5cGUgZm9yIGxhdGVyIGluc3RhbnRpYXRpb24KLWluaXQucHJvdG90
eXBlID0galF1ZXJ5LmZuOwotCi0vLyBJbml0aWFsaXplIGNlbnRyYWwgcmVmZXJlbmNlCi1yb290
alF1ZXJ5ID0galF1ZXJ5KCBkb2N1bWVudCApOwotCi0KLXZhciBycGFyZW50c3ByZXYgPSAvXig/
OnBhcmVudHN8cHJldig/OlVudGlsfEFsbCkpLywKLSAgICAvLyBtZXRob2RzIGd1YXJhbnRlZWQg
dG8gcHJvZHVjZSBhIHVuaXF1ZSBzZXQgd2hlbiBzdGFydGluZyBmcm9tIGEgdW5pcXVlIHNldAot
ICAgIGd1YXJhbnRlZWRVbmlxdWUgPSB7Ci0gICAgICAgIGNoaWxkcmVuOiB0cnVlLAotICAgICAg
ICBjb250ZW50czogdHJ1ZSwKLSAgICAgICAgbmV4dDogdHJ1ZSwKLSAgICAgICAgcHJldjogdHJ1
ZQotICAgIH07Ci0KLWpRdWVyeS5leHRlbmQoewotICAgIGRpcjogZnVuY3Rpb24oIGVsZW0sIGRp
ciwgdW50aWwgKSB7Ci0gICAgICAgIHZhciBtYXRjaGVkID0gW10sCi0gICAgICAgICAgICB0cnVu
Y2F0ZSA9IHVudGlsICE9PSB1bmRlZmluZWQ7Ci0KLSAgICAgICAgd2hpbGUgKCAoZWxlbSA9IGVs
ZW1bIGRpciBdKSAmJiBlbGVtLm5vZGVUeXBlICE9PSA5ICkgewotICAgICAgICAgICAgaWYgKCBl
bGVtLm5vZGVUeXBlID09PSAxICkgewotICAgICAgICAgICAgICAgIGlmICggdHJ1bmNhdGUgJiYg
alF1ZXJ5KCBlbGVtICkuaXMoIHVudGlsICkgKSB7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBtYXRjaGVkLnB1c2goIGVsZW0g
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICByZXR1cm4gbWF0Y2hlZDsKLSAg
ICB9LAotCi0gICAgc2libGluZzogZnVuY3Rpb24oIG4sIGVsZW0gKSB7Ci0gICAgICAgIHZhciBt
YXRjaGVkID0gW107Ci0KLSAgICAgICAgZm9yICggOyBuOyBuID0gbi5uZXh0U2libGluZyApIHsK
LSAgICAgICAgICAgIGlmICggbi5ub2RlVHlwZSA9PT0gMSAmJiBuICE9PSBlbGVtICkgewotICAg
ICAgICAgICAgICAgIG1hdGNoZWQucHVzaCggbiApOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0KLSAgICAgICAgcmV0dXJuIG1hdGNoZWQ7Ci0gICAgfQotfSk7Ci0KLWpRdWVyeS5mbi5leHRl
bmQoewotICAgIGhhczogZnVuY3Rpb24oIHRhcmdldCApIHsKLSAgICAgICAgdmFyIHRhcmdldHMg
PSBqUXVlcnkoIHRhcmdldCwgdGhpcyApLAotICAgICAgICAgICAgbCA9IHRhcmdldHMubGVuZ3Ro
OwotCi0gICAgICAgIHJldHVybiB0aGlzLmZpbHRlcihmdW5jdGlvbigpIHsKLSAgICAgICAgICAg
IHZhciBpID0gMDsKLSAgICAgICAgICAgIGZvciAoIDsgaSA8IGw7IGkrKyApIHsKLSAgICAgICAg
ICAgICAgICBpZiAoIGpRdWVyeS5jb250YWlucyggdGhpcywgdGFyZ2V0c1tpXSApICkgewotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0pOwotICAgIH0sCi0KLSAgICBjbG9zZXN0OiBmdW5jdGlvbiggc2Vs
ZWN0b3JzLCBjb250ZXh0ICkgewotICAgICAgICB2YXIgY3VyLAotICAgICAgICAgICAgaSA9IDAs
Ci0gICAgICAgICAgICBsID0gdGhpcy5sZW5ndGgsCi0gICAgICAgICAgICBtYXRjaGVkID0gW10s
Ci0gICAgICAgICAgICBwb3MgPSBybmVlZHNDb250ZXh0LnRlc3QoIHNlbGVjdG9ycyApIHx8IHR5
cGVvZiBzZWxlY3RvcnMgIT09ICJzdHJpbmciID8KLSAgICAgICAgICAgICAgICBqUXVlcnkoIHNl
bGVjdG9ycywgY29udGV4dCB8fCB0aGlzLmNvbnRleHQgKSA6Ci0gICAgICAgICAgICAgICAgMDsK
LQotICAgICAgICBmb3IgKCA7IGkgPCBsOyBpKysgKSB7Ci0gICAgICAgICAgICBmb3IgKCBjdXIg
PSB0aGlzW2ldOyBjdXIgJiYgY3VyICE9PSBjb250ZXh0OyBjdXIgPSBjdXIucGFyZW50Tm9kZSAp
IHsKLSAgICAgICAgICAgICAgICAvLyBBbHdheXMgc2tpcCBkb2N1bWVudCBmcmFnbWVudHMKLSAg
ICAgICAgICAgICAgICBpZiAoIGN1ci5ub2RlVHlwZSA8IDExICYmIChwb3MgPwotICAgICAgICAg
ICAgICAgICAgICBwb3MuaW5kZXgoY3VyKSA+IC0xIDoKLQotICAgICAgICAgICAgICAgICAgICAv
LyBEb24ndCBwYXNzIG5vbi1lbGVtZW50cyB0byBTaXp6bGUKLSAgICAgICAgICAgICAgICAgICAg
Y3VyLm5vZGVUeXBlID09PSAxICYmCi0gICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkuZmlu
ZC5tYXRjaGVzU2VsZWN0b3IoY3VyLCBzZWxlY3RvcnMpKSApIHsKLQotICAgICAgICAgICAgICAg
ICAgICBtYXRjaGVkLnB1c2goIGN1ciApOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1
cm4gdGhpcy5wdXNoU3RhY2soIG1hdGNoZWQubGVuZ3RoID4gMSA/IGpRdWVyeS51bmlxdWUoIG1h
dGNoZWQgKSA6IG1hdGNoZWQgKTsKLSAgICB9LAotCi0gICAgLy8gRGV0ZXJtaW5lIHRoZSBwb3Np
dGlvbiBvZiBhbiBlbGVtZW50IHdpdGhpbgotICAgIC8vIHRoZSBtYXRjaGVkIHNldCBvZiBlbGVt
ZW50cwotICAgIGluZGV4OiBmdW5jdGlvbiggZWxlbSApIHsKLQotICAgICAgICAvLyBObyBhcmd1
bWVudCwgcmV0dXJuIGluZGV4IGluIHBhcmVudAotICAgICAgICBpZiAoICFlbGVtICkgewotICAg
ICAgICAgICAgcmV0dXJuICggdGhpc1sgMCBdICYmIHRoaXNbIDAgXS5wYXJlbnROb2RlICkgPyB0
aGlzLmZpcnN0KCkucHJldkFsbCgpLmxlbmd0aCA6IC0xOwotICAgICAgICB9Ci0KLSAgICAgICAg
Ly8gaW5kZXggaW4gc2VsZWN0b3IKLSAgICAgICAgaWYgKCB0eXBlb2YgZWxlbSA9PT0gInN0cmlu
ZyIgKSB7Ci0gICAgICAgICAgICByZXR1cm4gaW5kZXhPZi5jYWxsKCBqUXVlcnkoIGVsZW0gKSwg
dGhpc1sgMCBdICk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBMb2NhdGUgdGhlIHBvc2l0aW9u
IG9mIHRoZSBkZXNpcmVkIGVsZW1lbnQKLSAgICAgICAgcmV0dXJuIGluZGV4T2YuY2FsbCggdGhp
cywKLQotICAgICAgICAgICAgLy8gSWYgaXQgcmVjZWl2ZXMgYSBqUXVlcnkgb2JqZWN0LCB0aGUg
Zmlyc3QgZWxlbWVudCBpcyB1c2VkCi0gICAgICAgICAgICBlbGVtLmpxdWVyeSA/IGVsZW1bIDAg
XSA6IGVsZW0KLSAgICAgICAgKTsKLSAgICB9LAotCi0gICAgYWRkOiBmdW5jdGlvbiggc2VsZWN0
b3IsIGNvbnRleHQgKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnB1c2hTdGFjaygKLSAgICAgICAg
ICAgIGpRdWVyeS51bmlxdWUoCi0gICAgICAgICAgICAgICAgalF1ZXJ5Lm1lcmdlKCB0aGlzLmdl
dCgpLCBqUXVlcnkoIHNlbGVjdG9yLCBjb250ZXh0ICkgKQotICAgICAgICAgICAgKQotICAgICAg
ICApOwotICAgIH0sCi0KLSAgICBhZGRCYWNrOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7Ci0gICAg
ICAgIHJldHVybiB0aGlzLmFkZCggc2VsZWN0b3IgPT0gbnVsbCA/Ci0gICAgICAgICAgICB0aGlz
LnByZXZPYmplY3QgOiB0aGlzLnByZXZPYmplY3QuZmlsdGVyKHNlbGVjdG9yKQotICAgICAgICAp
OwotICAgIH0KLX0pOwotCi1mdW5jdGlvbiBzaWJsaW5nKCBjdXIsIGRpciApIHsKLSAgICB3aGls
ZSAoIChjdXIgPSBjdXJbZGlyXSkgJiYgY3VyLm5vZGVUeXBlICE9PSAxICkge30KLSAgICByZXR1
cm4gY3VyOwotfQotCi1qUXVlcnkuZWFjaCh7Ci0gICAgcGFyZW50OiBmdW5jdGlvbiggZWxlbSAp
IHsKLSAgICAgICAgdmFyIHBhcmVudCA9IGVsZW0ucGFyZW50Tm9kZTsKLSAgICAgICAgcmV0dXJu
IHBhcmVudCAmJiBwYXJlbnQubm9kZVR5cGUgIT09IDExID8gcGFyZW50IDogbnVsbDsKLSAgICB9
LAotICAgIHBhcmVudHM6IGZ1bmN0aW9uKCBlbGVtICkgewotICAgICAgICByZXR1cm4galF1ZXJ5
LmRpciggZWxlbSwgInBhcmVudE5vZGUiICk7Ci0gICAgfSwKLSAgICBwYXJlbnRzVW50aWw6IGZ1
bmN0aW9uKCBlbGVtLCBpLCB1bnRpbCApIHsKLSAgICAgICAgcmV0dXJuIGpRdWVyeS5kaXIoIGVs
ZW0sICJwYXJlbnROb2RlIiwgdW50aWwgKTsKLSAgICB9LAotICAgIG5leHQ6IGZ1bmN0aW9uKCBl
bGVtICkgewotICAgICAgICByZXR1cm4gc2libGluZyggZWxlbSwgIm5leHRTaWJsaW5nIiApOwot
ICAgIH0sCi0gICAgcHJldjogZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgICAgIHJldHVybiBzaWJs
aW5nKCBlbGVtLCAicHJldmlvdXNTaWJsaW5nIiApOwotICAgIH0sCi0gICAgbmV4dEFsbDogZnVu
Y3Rpb24oIGVsZW0gKSB7Ci0gICAgICAgIHJldHVybiBqUXVlcnkuZGlyKCBlbGVtLCAibmV4dFNp
YmxpbmciICk7Ci0gICAgfSwKLSAgICBwcmV2QWxsOiBmdW5jdGlvbiggZWxlbSApIHsKLSAgICAg
ICAgcmV0dXJuIGpRdWVyeS5kaXIoIGVsZW0sICJwcmV2aW91c1NpYmxpbmciICk7Ci0gICAgfSwK
LSAgICBuZXh0VW50aWw6IGZ1bmN0aW9uKCBlbGVtLCBpLCB1bnRpbCApIHsKLSAgICAgICAgcmV0
dXJuIGpRdWVyeS5kaXIoIGVsZW0sICJuZXh0U2libGluZyIsIHVudGlsICk7Ci0gICAgfSwKLSAg
ICBwcmV2VW50aWw6IGZ1bmN0aW9uKCBlbGVtLCBpLCB1bnRpbCApIHsKLSAgICAgICAgcmV0dXJu
IGpRdWVyeS5kaXIoIGVsZW0sICJwcmV2aW91c1NpYmxpbmciLCB1bnRpbCApOwotICAgIH0sCi0g
ICAgc2libGluZ3M6IGZ1bmN0aW9uKCBlbGVtICkgewotICAgICAgICByZXR1cm4galF1ZXJ5LnNp
YmxpbmcoICggZWxlbS5wYXJlbnROb2RlIHx8IHt9ICkuZmlyc3RDaGlsZCwgZWxlbSApOwotICAg
IH0sCi0gICAgY2hpbGRyZW46IGZ1bmN0aW9uKCBlbGVtICkgewotICAgICAgICByZXR1cm4galF1
ZXJ5LnNpYmxpbmcoIGVsZW0uZmlyc3RDaGlsZCApOwotICAgIH0sCi0gICAgY29udGVudHM6IGZ1
bmN0aW9uKCBlbGVtICkgewotICAgICAgICByZXR1cm4gZWxlbS5jb250ZW50RG9jdW1lbnQgfHwg
alF1ZXJ5Lm1lcmdlKCBbXSwgZWxlbS5jaGlsZE5vZGVzICk7Ci0gICAgfQotfSwgZnVuY3Rpb24o
IG5hbWUsIGZuICkgewotICAgIGpRdWVyeS5mblsgbmFtZSBdID0gZnVuY3Rpb24oIHVudGlsLCBz
ZWxlY3RvciApIHsKLSAgICAgICAgdmFyIG1hdGNoZWQgPSBqUXVlcnkubWFwKCB0aGlzLCBmbiwg
dW50aWwgKTsKLQotICAgICAgICBpZiAoIG5hbWUuc2xpY2UoIC01ICkgIT09ICJVbnRpbCIgKSB7
Ci0gICAgICAgICAgICBzZWxlY3RvciA9IHVudGlsOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYg
KCBzZWxlY3RvciAmJiB0eXBlb2Ygc2VsZWN0b3IgPT09ICJzdHJpbmciICkgewotICAgICAgICAg
ICAgbWF0Y2hlZCA9IGpRdWVyeS5maWx0ZXIoIHNlbGVjdG9yLCBtYXRjaGVkICk7Ci0gICAgICAg
IH0KLQotICAgICAgICBpZiAoIHRoaXMubGVuZ3RoID4gMSApIHsKLSAgICAgICAgICAgIC8vIFJl
bW92ZSBkdXBsaWNhdGVzCi0gICAgICAgICAgICBpZiAoICFndWFyYW50ZWVkVW5pcXVlWyBuYW1l
IF0gKSB7Ci0gICAgICAgICAgICAgICAgalF1ZXJ5LnVuaXF1ZSggbWF0Y2hlZCApOwotICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICAvLyBSZXZlcnNlIG9yZGVyIGZvciBwYXJlbnRzKiBhbmQg
cHJldi1kZXJpdmF0aXZlcwotICAgICAgICAgICAgaWYgKCBycGFyZW50c3ByZXYudGVzdCggbmFt
ZSApICkgewotICAgICAgICAgICAgICAgIG1hdGNoZWQucmV2ZXJzZSgpOwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHRoaXMucHVzaFN0YWNrKCBtYXRjaGVkICk7
Ci0gICAgfTsKLX0pOwotdmFyIHJub3R3aGl0ZSA9ICgvXFMrL2cpOwotCi0KLQotLy8gU3RyaW5n
IHRvIE9iamVjdCBvcHRpb25zIGZvcm1hdCBjYWNoZQotdmFyIG9wdGlvbnNDYWNoZSA9IHt9Owot
Ci0vLyBDb252ZXJ0IFN0cmluZy1mb3JtYXR0ZWQgb3B0aW9ucyBpbnRvIE9iamVjdC1mb3JtYXR0
ZWQgb25lcyBhbmQgc3RvcmUgaW4gY2FjaGUKLWZ1bmN0aW9uIGNyZWF0ZU9wdGlvbnMoIG9wdGlv
bnMgKSB7Ci0gICAgdmFyIG9iamVjdCA9IG9wdGlvbnNDYWNoZVsgb3B0aW9ucyBdID0ge307Ci0g
ICAgalF1ZXJ5LmVhY2goIG9wdGlvbnMubWF0Y2goIHJub3R3aGl0ZSApIHx8IFtdLCBmdW5jdGlv
biggXywgZmxhZyApIHsKLSAgICAgICAgb2JqZWN0WyBmbGFnIF0gPSB0cnVlOwotICAgIH0pOwot
ICAgIHJldHVybiBvYmplY3Q7Ci19Ci0KLS8qCi0gKiBDcmVhdGUgYSBjYWxsYmFjayBsaXN0IHVz
aW5nIHRoZSBmb2xsb3dpbmcgcGFyYW1ldGVyczoKLSAqCi0gKiAgb3B0aW9uczogYW4gb3B0aW9u
YWwgbGlzdCBvZiBzcGFjZS1zZXBhcmF0ZWQgb3B0aW9ucyB0aGF0IHdpbGwgY2hhbmdlIGhvdwot
ICogICAgICAgICAgIHRoZSBjYWxsYmFjayBsaXN0IGJlaGF2ZXMgb3IgYSBtb3JlIHRyYWRpdGlv
bmFsIG9wdGlvbiBvYmplY3QKLSAqCi0gKiBCeSBkZWZhdWx0IGEgY2FsbGJhY2sgbGlzdCB3aWxs
IGFjdCBsaWtlIGFuIGV2ZW50IGNhbGxiYWNrIGxpc3QgYW5kIGNhbiBiZQotICogImZpcmVkIiBt
dWx0aXBsZSB0aW1lcy4KLSAqCi0gKiBQb3NzaWJsZSBvcHRpb25zOgotICoKLSAqICBvbmNlOiAg
ICAgICAgICAgd2lsbCBlbnN1cmUgdGhlIGNhbGxiYWNrIGxpc3QgY2FuIG9ubHkgYmUgZmlyZWQg
b25jZSAobGlrZSBhIERlZmVycmVkKQotICoKLSAqICBtZW1vcnk6ICAgICAgICAgd2lsbCBrZWVw
IHRyYWNrIG9mIHByZXZpb3VzIHZhbHVlcyBhbmQgd2lsbCBjYWxsIGFueSBjYWxsYmFjayBhZGRl
ZAotICogICAgICAgICAgICAgICAgICBhZnRlciB0aGUgbGlzdCBoYXMgYmVlbiBmaXJlZCByaWdo
dCBhd2F5IHdpdGggdGhlIGxhdGVzdCAibWVtb3JpemVkIgotICogICAgICAgICAgICAgICAgICB2
YWx1ZXMgKGxpa2UgYSBEZWZlcnJlZCkKLSAqCi0gKiAgdW5pcXVlOiAgICAgICAgIHdpbGwgZW5z
dXJlIGEgY2FsbGJhY2sgY2FuIG9ubHkgYmUgYWRkZWQgb25jZSAobm8gZHVwbGljYXRlIGluIHRo
ZSBsaXN0KQotICoKLSAqICBzdG9wT25GYWxzZTogICAgaW50ZXJydXB0IGNhbGxpbmdzIHdoZW4g
YSBjYWxsYmFjayByZXR1cm5zIGZhbHNlCi0gKgotICovCi1qUXVlcnkuQ2FsbGJhY2tzID0gZnVu
Y3Rpb24oIG9wdGlvbnMgKSB7Ci0KLSAgICAvLyBDb252ZXJ0IG9wdGlvbnMgZnJvbSBTdHJpbmct
Zm9ybWF0dGVkIHRvIE9iamVjdC1mb3JtYXR0ZWQgaWYgbmVlZGVkCi0gICAgLy8gKHdlIGNoZWNr
IGluIGNhY2hlIGZpcnN0KQotICAgIG9wdGlvbnMgPSB0eXBlb2Ygb3B0aW9ucyA9PT0gInN0cmlu
ZyIgPwotICAgICAgICAoIG9wdGlvbnNDYWNoZVsgb3B0aW9ucyBdIHx8IGNyZWF0ZU9wdGlvbnMo
IG9wdGlvbnMgKSApIDoKLSAgICAgICAgalF1ZXJ5LmV4dGVuZCgge30sIG9wdGlvbnMgKTsKLQot
ICAgIHZhciAvLyBMYXN0IGZpcmUgdmFsdWUgKGZvciBub24tZm9yZ2V0dGFibGUgbGlzdHMpCi0g
ICAgICAgIG1lbW9yeSwKLSAgICAgICAgLy8gRmxhZyB0byBrbm93IGlmIGxpc3Qgd2FzIGFscmVh
ZHkgZmlyZWQKLSAgICAgICAgZmlyZWQsCi0gICAgICAgIC8vIEZsYWcgdG8ga25vdyBpZiBsaXN0
IGlzIGN1cnJlbnRseSBmaXJpbmcKLSAgICAgICAgZmlyaW5nLAotICAgICAgICAvLyBGaXJzdCBj
YWxsYmFjayB0byBmaXJlICh1c2VkIGludGVybmFsbHkgYnkgYWRkIGFuZCBmaXJlV2l0aCkKLSAg
ICAgICAgZmlyaW5nU3RhcnQsCi0gICAgICAgIC8vIEVuZCBvZiB0aGUgbG9vcCB3aGVuIGZpcmlu
ZwotICAgICAgICBmaXJpbmdMZW5ndGgsCi0gICAgICAgIC8vIEluZGV4IG9mIGN1cnJlbnRseSBm
aXJpbmcgY2FsbGJhY2sgKG1vZGlmaWVkIGJ5IHJlbW92ZSBpZiBuZWVkZWQpCi0gICAgICAgIGZp
cmluZ0luZGV4LAotICAgICAgICAvLyBBY3R1YWwgY2FsbGJhY2sgbGlzdAotICAgICAgICBsaXN0
ID0gW10sCi0gICAgICAgIC8vIFN0YWNrIG9mIGZpcmUgY2FsbHMgZm9yIHJlcGVhdGFibGUgbGlz
dHMKLSAgICAgICAgc3RhY2sgPSAhb3B0aW9ucy5vbmNlICYmIFtdLAotICAgICAgICAvLyBGaXJl
IGNhbGxiYWNrcwotICAgICAgICBmaXJlID0gZnVuY3Rpb24oIGRhdGEgKSB7Ci0gICAgICAgICAg
ICBtZW1vcnkgPSBvcHRpb25zLm1lbW9yeSAmJiBkYXRhOwotICAgICAgICAgICAgZmlyZWQgPSB0
cnVlOwotICAgICAgICAgICAgZmlyaW5nSW5kZXggPSBmaXJpbmdTdGFydCB8fCAwOwotICAgICAg
ICAgICAgZmlyaW5nU3RhcnQgPSAwOwotICAgICAgICAgICAgZmlyaW5nTGVuZ3RoID0gbGlzdC5s
ZW5ndGg7Ci0gICAgICAgICAgICBmaXJpbmcgPSB0cnVlOwotICAgICAgICAgICAgZm9yICggOyBs
aXN0ICYmIGZpcmluZ0luZGV4IDwgZmlyaW5nTGVuZ3RoOyBmaXJpbmdJbmRleCsrICkgewotICAg
ICAgICAgICAgICAgIGlmICggbGlzdFsgZmlyaW5nSW5kZXggXS5hcHBseSggZGF0YVsgMCBdLCBk
YXRhWyAxIF0gKSA9PT0gZmFsc2UgJiYgb3B0aW9ucy5zdG9wT25GYWxzZSApIHsKLSAgICAgICAg
ICAgICAgICAgICAgbWVtb3J5ID0gZmFsc2U7IC8vIFRvIHByZXZlbnQgZnVydGhlciBjYWxscyB1
c2luZyBhZGQKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgZmlyaW5nID0gZmFsc2U7Ci0gICAgICAgICAgICBp
ZiAoIGxpc3QgKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCBzdGFjayApIHsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKCBzdGFjay5sZW5ndGggKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBm
aXJlKCBzdGFjay5zaGlmdCgpICk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICB9IGVsc2UgaWYgKCBtZW1vcnkgKSB7Ci0gICAgICAgICAgICAgICAgICAgIGxpc3QgPSBb
XTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBzZWxmLmRp
c2FibGUoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0sCi0g
ICAgICAgIC8vIEFjdHVhbCBDYWxsYmFja3Mgb2JqZWN0Ci0gICAgICAgIHNlbGYgPSB7Ci0gICAg
ICAgICAgICAvLyBBZGQgYSBjYWxsYmFjayBvciBhIGNvbGxlY3Rpb24gb2YgY2FsbGJhY2tzIHRv
IHRoZSBsaXN0Ci0gICAgICAgICAgICBhZGQ6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAg
IGlmICggbGlzdCApIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gRmlyc3QsIHdlIHNhdmUgdGhl
IGN1cnJlbnQgbGVuZ3RoCi0gICAgICAgICAgICAgICAgICAgIHZhciBzdGFydCA9IGxpc3QubGVu
Z3RoOwotICAgICAgICAgICAgICAgICAgICAoZnVuY3Rpb24gYWRkKCBhcmdzICkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgalF1ZXJ5LmVhY2goIGFyZ3MsIGZ1bmN0aW9uKCBfLCBhcmcgKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHR5cGUgPSBqUXVlcnkudHlwZSggYXJn
ICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCB0eXBlID09PSAiZnVuY3Rpb24i
ICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICFvcHRpb25zLnVuaXF1
ZSB8fCAhc2VsZi5oYXMoIGFyZyApICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbGlzdC5wdXNoKCBhcmcgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIGFyZyAmJiBhcmcubGVu
Z3RoICYmIHR5cGUgIT09ICJzdHJpbmciICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBJbnNwZWN0IHJlY3Vyc2l2ZWx5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGFkZCggYXJnICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgICAgIH0pKCBhcmd1bWVudHMgKTsK
LSAgICAgICAgICAgICAgICAgICAgLy8gRG8gd2UgbmVlZCB0byBhZGQgdGhlIGNhbGxiYWNrcyB0
byB0aGUKLSAgICAgICAgICAgICAgICAgICAgLy8gY3VycmVudCBmaXJpbmcgYmF0Y2g/Ci0gICAg
ICAgICAgICAgICAgICAgIGlmICggZmlyaW5nICkgewotICAgICAgICAgICAgICAgICAgICAgICAg
ZmlyaW5nTGVuZ3RoID0gbGlzdC5sZW5ndGg7Ci0gICAgICAgICAgICAgICAgICAgIC8vIFdpdGgg
bWVtb3J5LCBpZiB3ZSdyZSBub3QgZmlyaW5nIHRoZW4KLSAgICAgICAgICAgICAgICAgICAgLy8g
d2Ugc2hvdWxkIGNhbGwgcmlnaHQgYXdheQotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYg
KCBtZW1vcnkgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmaXJpbmdTdGFydCA9IHN0YXJ0
OwotICAgICAgICAgICAgICAgICAgICAgICAgZmlyZSggbWVtb3J5ICk7Ci0gICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7
Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgLy8gUmVtb3ZlIGEgY2FsbGJhY2sgZnJvbSB0
aGUgbGlzdAotICAgICAgICAgICAgcmVtb3ZlOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAg
ICBpZiAoIGxpc3QgKSB7Ci0gICAgICAgICAgICAgICAgICAgIGpRdWVyeS5lYWNoKCBhcmd1bWVu
dHMsIGZ1bmN0aW9uKCBfLCBhcmcgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXIgaW5k
ZXg7Ci0gICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoICggaW5kZXggPSBqUXVlcnkuaW5B
cnJheSggYXJnLCBsaXN0LCBpbmRleCApICkgPiAtMSApIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBsaXN0LnNwbGljZSggaW5kZXgsIDEgKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBIYW5kbGUgZmlyaW5nIGluZGV4ZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoIGZpcmluZyApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBp
bmRleCA8PSBmaXJpbmdMZW5ndGggKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmaXJpbmdMZW5ndGgtLTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGluZGV4IDw9IGZpcmluZ0luZGV4
ICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyaW5nSW5kZXgtLTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg
fSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOwotICAg
ICAgICAgICAgfSwKLSAgICAgICAgICAgIC8vIENoZWNrIGlmIGEgZ2l2ZW4gY2FsbGJhY2sgaXMg
aW4gdGhlIGxpc3QuCi0gICAgICAgICAgICAvLyBJZiBubyBhcmd1bWVudCBpcyBnaXZlbiwgcmV0
dXJuIHdoZXRoZXIgb3Igbm90IGxpc3QgaGFzIGNhbGxiYWNrcyBhdHRhY2hlZC4KLSAgICAgICAg
ICAgIGhhczogZnVuY3Rpb24oIGZuICkgewotICAgICAgICAgICAgICAgIHJldHVybiBmbiA/IGpR
dWVyeS5pbkFycmF5KCBmbiwgbGlzdCApID4gLTEgOiAhISggbGlzdCAmJiBsaXN0Lmxlbmd0aCAp
OwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIC8vIFJlbW92ZSBhbGwgY2FsbGJhY2tzIGZy
b20gdGhlIGxpc3QKLSAgICAgICAgICAgIGVtcHR5OiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAg
ICAgICBsaXN0ID0gW107Ci0gICAgICAgICAgICAgICAgZmlyaW5nTGVuZ3RoID0gMDsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gdGhpczsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAvLyBI
YXZlIHRoZSBsaXN0IGRvIG5vdGhpbmcgYW55bW9yZQotICAgICAgICAgICAgZGlzYWJsZTogZnVu
Y3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgbGlzdCA9IHN0YWNrID0gbWVtb3J5ID0gdW5kZWZp
bmVkOwotICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOwotICAgICAgICAgICAgfSwKLSAgICAg
ICAgICAgIC8vIElzIGl0IGRpc2FibGVkPwotICAgICAgICAgICAgZGlzYWJsZWQ6IGZ1bmN0aW9u
KCkgewotICAgICAgICAgICAgICAgIHJldHVybiAhbGlzdDsKLSAgICAgICAgICAgIH0sCi0gICAg
ICAgICAgICAvLyBMb2NrIHRoZSBsaXN0IGluIGl0cyBjdXJyZW50IHN0YXRlCi0gICAgICAgICAg
ICBsb2NrOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBzdGFjayA9IHVuZGVmaW5lZDsK
LSAgICAgICAgICAgICAgICBpZiAoICFtZW1vcnkgKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNl
bGYuZGlzYWJsZSgpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4g
dGhpczsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAvLyBJcyBpdCBsb2NrZWQ/Ci0gICAg
ICAgICAgICBsb2NrZWQ6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIHJldHVybiAhc3Rh
Y2s7Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgLy8gQ2FsbCBhbGwgY2FsbGJhY2tzIHdp
dGggdGhlIGdpdmVuIGNvbnRleHQgYW5kIGFyZ3VtZW50cwotICAgICAgICAgICAgZmlyZVdpdGg6
IGZ1bmN0aW9uKCBjb250ZXh0LCBhcmdzICkgewotICAgICAgICAgICAgICAgIGlmICggbGlzdCAm
JiAoICFmaXJlZCB8fCBzdGFjayApICkgewotICAgICAgICAgICAgICAgICAgICBhcmdzID0gYXJn
cyB8fCBbXTsKLSAgICAgICAgICAgICAgICAgICAgYXJncyA9IFsgY29udGV4dCwgYXJncy5zbGlj
ZSA/IGFyZ3Muc2xpY2UoKSA6IGFyZ3MgXTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCBmaXJp
bmcgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGFjay5wdXNoKCBhcmdzICk7Ci0gICAg
ICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmaXJlKCBh
cmdzICk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgLy8gQ2Fs
bCBhbGwgdGhlIGNhbGxiYWNrcyB3aXRoIHRoZSBnaXZlbiBhcmd1bWVudHMKLSAgICAgICAgICAg
IGZpcmU6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIHNlbGYuZmlyZVdpdGgoIHRoaXMs
IGFyZ3VtZW50cyApOwotICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOwotICAgICAgICAgICAg
fSwKLSAgICAgICAgICAgIC8vIFRvIGtub3cgaWYgdGhlIGNhbGxiYWNrcyBoYXZlIGFscmVhZHkg
YmVlbiBjYWxsZWQgYXQgbGVhc3Qgb25jZQotICAgICAgICAgICAgZmlyZWQ6IGZ1bmN0aW9uKCkg
ewotICAgICAgICAgICAgICAgIHJldHVybiAhIWZpcmVkOwotICAgICAgICAgICAgfQotICAgICAg
ICB9OwotCi0gICAgcmV0dXJuIHNlbGY7Ci19OwotCi0KLWpRdWVyeS5leHRlbmQoewotCi0gICAg
RGVmZXJyZWQ6IGZ1bmN0aW9uKCBmdW5jICkgewotICAgICAgICB2YXIgdHVwbGVzID0gWwotICAg
ICAgICAgICAgICAgIC8vIGFjdGlvbiwgYWRkIGxpc3RlbmVyLCBsaXN0ZW5lciBsaXN0LCBmaW5h
bCBzdGF0ZQotICAgICAgICAgICAgICAgIFsgInJlc29sdmUiLCAiZG9uZSIsIGpRdWVyeS5DYWxs
YmFja3MoIm9uY2UgbWVtb3J5IiksICJyZXNvbHZlZCIgXSwKLSAgICAgICAgICAgICAgICBbICJy
ZWplY3QiLCAiZmFpbCIsIGpRdWVyeS5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksICJyZWplY3Rl
ZCIgXSwKLSAgICAgICAgICAgICAgICBbICJub3RpZnkiLCAicHJvZ3Jlc3MiLCBqUXVlcnkuQ2Fs
bGJhY2tzKCJtZW1vcnkiKSBdCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgc3RhdGUgPSAi
cGVuZGluZyIsCi0gICAgICAgICAgICBwcm9taXNlID0gewotICAgICAgICAgICAgICAgIHN0YXRl
OiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRlOwotICAgICAg
ICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgYWx3YXlzOiBmdW5jdGlvbigpIHsKLSAgICAg
ICAgICAgICAgICAgICAgZGVmZXJyZWQuZG9uZSggYXJndW1lbnRzICkuZmFpbCggYXJndW1lbnRz
ICk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOwotICAgICAgICAgICAgICAgIH0s
Ci0gICAgICAgICAgICAgICAgdGhlbjogZnVuY3Rpb24oIC8qIGZuRG9uZSwgZm5GYWlsLCBmblBy
b2dyZXNzICovICkgewotICAgICAgICAgICAgICAgICAgICB2YXIgZm5zID0gYXJndW1lbnRzOwot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4galF1ZXJ5LkRlZmVycmVkKGZ1bmN0aW9uKCBuZXdE
ZWZlciApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5lYWNoKCB0dXBsZXMsIGZ1
bmN0aW9uKCBpLCB0dXBsZSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZm4g
PSBqUXVlcnkuaXNGdW5jdGlvbiggZm5zWyBpIF0gKSAmJiBmbnNbIGkgXTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBkZWZlcnJlZFsgZG9uZSB8IGZhaWwgfCBwcm9ncmVzcyBdIGZv
ciBmb3J3YXJkaW5nIGFjdGlvbnMgdG8gbmV3RGVmZXIKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkZWZlcnJlZFsgdHVwbGVbMV0gXShmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdmFyIHJldHVybmVkID0gZm4gJiYgZm4uYXBwbHkoIHRoaXMsIGFyZ3Vt
ZW50cyApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHJldHVybmVkICYm
IGpRdWVyeS5pc0Z1bmN0aW9uKCByZXR1cm5lZC5wcm9taXNlICkgKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5lZC5wcm9taXNlKCkKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAuZG9uZSggbmV3RGVmZXIucmVzb2x2ZSApCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZhaWwoIG5ld0RlZmVyLnJlamVj
dCApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnByb2dyZXNzKCBu
ZXdEZWZlci5ub3RpZnkgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0RlZmVyWyB0dXBsZVsg
MCBdICsgIldpdGgiIF0oIHRoaXMgPT09IHByb21pc2UgPyBuZXdEZWZlci5wcm9taXNlKCkgOiB0
aGlzLCBmbiA/IFsgcmV0dXJuZWQgXSA6IGFyZ3VtZW50cyApOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZucyA9IG51bGw7
Ci0gICAgICAgICAgICAgICAgICAgIH0pLnByb21pc2UoKTsKLSAgICAgICAgICAgICAgICB9LAot
ICAgICAgICAgICAgICAgIC8vIEdldCBhIHByb21pc2UgZm9yIHRoaXMgZGVmZXJyZWQKLSAgICAg
ICAgICAgICAgICAvLyBJZiBvYmogaXMgcHJvdmlkZWQsIHRoZSBwcm9taXNlIGFzcGVjdCBpcyBh
ZGRlZCB0byB0aGUgb2JqZWN0Ci0gICAgICAgICAgICAgICAgcHJvbWlzZTogZnVuY3Rpb24oIG9i
aiApIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9iaiAhPSBudWxsID8galF1ZXJ5LmV4
dGVuZCggb2JqLCBwcm9taXNlICkgOiBwcm9taXNlOwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIH0sCi0gICAgICAgICAgICBkZWZlcnJlZCA9IHt9OwotCi0gICAgICAgIC8vIEtlZXAg
cGlwZSBmb3IgYmFjay1jb21wYXQKLSAgICAgICAgcHJvbWlzZS5waXBlID0gcHJvbWlzZS50aGVu
OwotCi0gICAgICAgIC8vIEFkZCBsaXN0LXNwZWNpZmljIG1ldGhvZHMKLSAgICAgICAgalF1ZXJ5
LmVhY2goIHR1cGxlcywgZnVuY3Rpb24oIGksIHR1cGxlICkgewotICAgICAgICAgICAgdmFyIGxp
c3QgPSB0dXBsZVsgMiBdLAotICAgICAgICAgICAgICAgIHN0YXRlU3RyaW5nID0gdHVwbGVbIDMg
XTsKLQotICAgICAgICAgICAgLy8gcHJvbWlzZVsgZG9uZSB8IGZhaWwgfCBwcm9ncmVzcyBdID0g
bGlzdC5hZGQKLSAgICAgICAgICAgIHByb21pc2VbIHR1cGxlWzFdIF0gPSBsaXN0LmFkZDsKLQot
ICAgICAgICAgICAgLy8gSGFuZGxlIHN0YXRlCi0gICAgICAgICAgICBpZiAoIHN0YXRlU3RyaW5n
ICkgewotICAgICAgICAgICAgICAgIGxpc3QuYWRkKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAg
ICAgICAgICAvLyBzdGF0ZSA9IFsgcmVzb2x2ZWQgfCByZWplY3RlZCBdCi0gICAgICAgICAgICAg
ICAgICAgIHN0YXRlID0gc3RhdGVTdHJpbmc7Ci0KLSAgICAgICAgICAgICAgICAvLyBbIHJlamVj
dF9saXN0IHwgcmVzb2x2ZV9saXN0IF0uZGlzYWJsZTsgcHJvZ3Jlc3NfbGlzdC5sb2NrCi0gICAg
ICAgICAgICAgICAgfSwgdHVwbGVzWyBpIF4gMSBdWyAyIF0uZGlzYWJsZSwgdHVwbGVzWyAyIF1b
IDIgXS5sb2NrICk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIGRlZmVycmVkWyBy
ZXNvbHZlIHwgcmVqZWN0IHwgbm90aWZ5IF0KLSAgICAgICAgICAgIGRlZmVycmVkWyB0dXBsZVsw
XSBdID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgZGVmZXJyZWRbIHR1cGxlWzBdICsg
IldpdGgiIF0oIHRoaXMgPT09IGRlZmVycmVkID8gcHJvbWlzZSA6IHRoaXMsIGFyZ3VtZW50cyAp
OwotICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOwotICAgICAgICAgICAgfTsKLSAgICAgICAg
ICAgIGRlZmVycmVkWyB0dXBsZVswXSArICJXaXRoIiBdID0gbGlzdC5maXJlV2l0aDsKLSAgICAg
ICAgfSk7Ci0KLSAgICAgICAgLy8gTWFrZSB0aGUgZGVmZXJyZWQgYSBwcm9taXNlCi0gICAgICAg
IHByb21pc2UucHJvbWlzZSggZGVmZXJyZWQgKTsKLQotICAgICAgICAvLyBDYWxsIGdpdmVuIGZ1
bmMgaWYgYW55Ci0gICAgICAgIGlmICggZnVuYyApIHsKLSAgICAgICAgICAgIGZ1bmMuY2FsbCgg
ZGVmZXJyZWQsIGRlZmVycmVkICk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBBbGwgZG9uZSEK
LSAgICAgICAgcmV0dXJuIGRlZmVycmVkOwotICAgIH0sCi0KLSAgICAvLyBEZWZlcnJlZCBoZWxw
ZXIKLSAgICB3aGVuOiBmdW5jdGlvbiggc3Vib3JkaW5hdGUgLyogLCAuLi4sIHN1Ym9yZGluYXRl
TiAqLyApIHsKLSAgICAgICAgdmFyIGkgPSAwLAotICAgICAgICAgICAgcmVzb2x2ZVZhbHVlcyA9
IHNsaWNlLmNhbGwoIGFyZ3VtZW50cyApLAotICAgICAgICAgICAgbGVuZ3RoID0gcmVzb2x2ZVZh
bHVlcy5sZW5ndGgsCi0KLSAgICAgICAgICAgIC8vIHRoZSBjb3VudCBvZiB1bmNvbXBsZXRlZCBz
dWJvcmRpbmF0ZXMKLSAgICAgICAgICAgIHJlbWFpbmluZyA9IGxlbmd0aCAhPT0gMSB8fCAoIHN1
Ym9yZGluYXRlICYmIGpRdWVyeS5pc0Z1bmN0aW9uKCBzdWJvcmRpbmF0ZS5wcm9taXNlICkgKSA/
IGxlbmd0aCA6IDAsCi0KLSAgICAgICAgICAgIC8vIHRoZSBtYXN0ZXIgRGVmZXJyZWQuIElmIHJl
c29sdmVWYWx1ZXMgY29uc2lzdCBvZiBvbmx5IGEgc2luZ2xlIERlZmVycmVkLCBqdXN0IHVzZSB0
aGF0LgotICAgICAgICAgICAgZGVmZXJyZWQgPSByZW1haW5pbmcgPT09IDEgPyBzdWJvcmRpbmF0
ZSA6IGpRdWVyeS5EZWZlcnJlZCgpLAotCi0gICAgICAgICAgICAvLyBVcGRhdGUgZnVuY3Rpb24g
Zm9yIGJvdGggcmVzb2x2ZSBhbmQgcHJvZ3Jlc3MgdmFsdWVzCi0gICAgICAgICAgICB1cGRhdGVG
dW5jID0gZnVuY3Rpb24oIGksIGNvbnRleHRzLCB2YWx1ZXMgKSB7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIGZ1bmN0aW9uKCB2YWx1ZSApIHsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dHNb
IGkgXSA9IHRoaXM7Ci0gICAgICAgICAgICAgICAgICAgIHZhbHVlc1sgaSBdID0gYXJndW1lbnRz
Lmxlbmd0aCA+IDEgPyBzbGljZS5jYWxsKCBhcmd1bWVudHMgKSA6IHZhbHVlOwotICAgICAgICAg
ICAgICAgICAgICBpZiAoIHZhbHVlcyA9PT0gcHJvZ3Jlc3NWYWx1ZXMgKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBkZWZlcnJlZC5ub3RpZnlXaXRoKCBjb250ZXh0cywgdmFsdWVzICk7Ci0g
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoICEoIC0tcmVtYWluaW5nICkgKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlV2l0aCggY29udGV4dHMsIHZhbHVl
cyApOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfTsKLSAgICAgICAg
ICAgIH0sCi0KLSAgICAgICAgICAgIHByb2dyZXNzVmFsdWVzLCBwcm9ncmVzc0NvbnRleHRzLCBy
ZXNvbHZlQ29udGV4dHM7Ci0KLSAgICAgICAgLy8gYWRkIGxpc3RlbmVycyB0byBEZWZlcnJlZCBz
dWJvcmRpbmF0ZXM7IHRyZWF0IG90aGVycyBhcyByZXNvbHZlZAotICAgICAgICBpZiAoIGxlbmd0
aCA+IDEgKSB7Ci0gICAgICAgICAgICBwcm9ncmVzc1ZhbHVlcyA9IG5ldyBBcnJheSggbGVuZ3Ro
ICk7Ci0gICAgICAgICAgICBwcm9ncmVzc0NvbnRleHRzID0gbmV3IEFycmF5KCBsZW5ndGggKTsK
LSAgICAgICAgICAgIHJlc29sdmVDb250ZXh0cyA9IG5ldyBBcnJheSggbGVuZ3RoICk7Ci0gICAg
ICAgICAgICBmb3IgKCA7IGkgPCBsZW5ndGg7IGkrKyApIHsKLSAgICAgICAgICAgICAgICBpZiAo
IHJlc29sdmVWYWx1ZXNbIGkgXSAmJiBqUXVlcnkuaXNGdW5jdGlvbiggcmVzb2x2ZVZhbHVlc1sg
aSBdLnByb21pc2UgKSApIHsKLSAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZVZhbHVlc1sgaSBd
LnByb21pc2UoKQotICAgICAgICAgICAgICAgICAgICAgICAgLmRvbmUoIHVwZGF0ZUZ1bmMoIGks
IHJlc29sdmVDb250ZXh0cywgcmVzb2x2ZVZhbHVlcyApICkKLSAgICAgICAgICAgICAgICAgICAg
ICAgIC5mYWlsKCBkZWZlcnJlZC5yZWplY3QgKQotICAgICAgICAgICAgICAgICAgICAgICAgLnBy
b2dyZXNzKCB1cGRhdGVGdW5jKCBpLCBwcm9ncmVzc0NvbnRleHRzLCBwcm9ncmVzc1ZhbHVlcyAp
ICk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgLS1yZW1h
aW5pbmc7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAg
ICAgICAgLy8gaWYgd2UncmUgbm90IHdhaXRpbmcgb24gYW55dGhpbmcsIHJlc29sdmUgdGhlIG1h
c3RlcgotICAgICAgICBpZiAoICFyZW1haW5pbmcgKSB7Ci0gICAgICAgICAgICBkZWZlcnJlZC5y
ZXNvbHZlV2l0aCggcmVzb2x2ZUNvbnRleHRzLCByZXNvbHZlVmFsdWVzICk7Ci0gICAgICAgIH0K
LQotICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZSgpOwotICAgIH0KLX0pOwotCi0KLS8v
IFRoZSBkZWZlcnJlZCB1c2VkIG9uIERPTSByZWFkeQotdmFyIHJlYWR5TGlzdDsKLQotalF1ZXJ5
LmZuLnJlYWR5ID0gZnVuY3Rpb24oIGZuICkgewotICAgIC8vIEFkZCB0aGUgY2FsbGJhY2sKLSAg
ICBqUXVlcnkucmVhZHkucHJvbWlzZSgpLmRvbmUoIGZuICk7Ci0KLSAgICByZXR1cm4gdGhpczsK
LX07Ci0KLWpRdWVyeS5leHRlbmQoewotICAgIC8vIElzIHRoZSBET00gcmVhZHkgdG8gYmUgdXNl
ZD8gU2V0IHRvIHRydWUgb25jZSBpdCBvY2N1cnMuCi0gICAgaXNSZWFkeTogZmFsc2UsCi0KLSAg
ICAvLyBBIGNvdW50ZXIgdG8gdHJhY2sgaG93IG1hbnkgaXRlbXMgdG8gd2FpdCBmb3IgYmVmb3Jl
Ci0gICAgLy8gdGhlIHJlYWR5IGV2ZW50IGZpcmVzLiBTZWUgIzY3ODEKLSAgICByZWFkeVdhaXQ6
IDEsCi0KLSAgICAvLyBIb2xkIChvciByZWxlYXNlKSB0aGUgcmVhZHkgZXZlbnQKLSAgICBob2xk
UmVhZHk6IGZ1bmN0aW9uKCBob2xkICkgewotICAgICAgICBpZiAoIGhvbGQgKSB7Ci0gICAgICAg
ICAgICBqUXVlcnkucmVhZHlXYWl0Kys7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBq
UXVlcnkucmVhZHkoIHRydWUgKTsKLSAgICAgICAgfQotICAgIH0sCi0KLSAgICAvLyBIYW5kbGUg
d2hlbiB0aGUgRE9NIGlzIHJlYWR5Ci0gICAgcmVhZHk6IGZ1bmN0aW9uKCB3YWl0ICkgewotCi0g
ICAgICAgIC8vIEFib3J0IGlmIHRoZXJlIGFyZSBwZW5kaW5nIGhvbGRzIG9yIHdlJ3JlIGFscmVh
ZHkgcmVhZHkKLSAgICAgICAgaWYgKCB3YWl0ID09PSB0cnVlID8gLS1qUXVlcnkucmVhZHlXYWl0
IDogalF1ZXJ5LmlzUmVhZHkgKSB7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQot
ICAgICAgICAvLyBSZW1lbWJlciB0aGF0IHRoZSBET00gaXMgcmVhZHkKLSAgICAgICAgalF1ZXJ5
LmlzUmVhZHkgPSB0cnVlOwotCi0gICAgICAgIC8vIElmIGEgbm9ybWFsIERPTSBSZWFkeSBldmVu
dCBmaXJlZCwgZGVjcmVtZW50LCBhbmQgd2FpdCBpZiBuZWVkIGJlCi0gICAgICAgIGlmICggd2Fp
dCAhPT0gdHJ1ZSAmJiAtLWpRdWVyeS5yZWFkeVdhaXQgPiAwICkgewotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gSWYgdGhlcmUgYXJlIGZ1bmN0aW9ucyBib3Vu
ZCwgdG8gZXhlY3V0ZQotICAgICAgICByZWFkeUxpc3QucmVzb2x2ZVdpdGgoIGRvY3VtZW50LCBb
IGpRdWVyeSBdICk7Ci0KLSAgICAgICAgLy8gVHJpZ2dlciBhbnkgYm91bmQgcmVhZHkgZXZlbnRz
Ci0gICAgICAgIGlmICggalF1ZXJ5LmZuLnRyaWdnZXIgKSB7Ci0gICAgICAgICAgICBqUXVlcnko
IGRvY3VtZW50ICkudHJpZ2dlcigicmVhZHkiKS5vZmYoInJlYWR5Iik7Ci0gICAgICAgIH0KLSAg
ICB9Ci19KTsKLQotLyoqCi0gKiBUaGUgcmVhZHkgZXZlbnQgaGFuZGxlciBhbmQgc2VsZiBjbGVh
bnVwIG1ldGhvZAotICovCi1mdW5jdGlvbiBjb21wbGV0ZWQoKSB7Ci0gICAgZG9jdW1lbnQucmVt
b3ZlRXZlbnRMaXN0ZW5lciggIkRPTUNvbnRlbnRMb2FkZWQiLCBjb21wbGV0ZWQsIGZhbHNlICk7
Ci0gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoICJsb2FkIiwgY29tcGxldGVkLCBmYWxz
ZSApOwotICAgIGpRdWVyeS5yZWFkeSgpOwotfQotCi1qUXVlcnkucmVhZHkucHJvbWlzZSA9IGZ1
bmN0aW9uKCBvYmogKSB7Ci0gICAgaWYgKCAhcmVhZHlMaXN0ICkgewotCi0gICAgICAgIHJlYWR5
TGlzdCA9IGpRdWVyeS5EZWZlcnJlZCgpOwotCi0gICAgICAgIC8vIENhdGNoIGNhc2VzIHdoZXJl
ICQoZG9jdW1lbnQpLnJlYWR5KCkgaXMgY2FsbGVkIGFmdGVyIHRoZSBicm93c2VyIGV2ZW50IGhh
cyBhbHJlYWR5IG9jY3VycmVkLgotICAgICAgICAvLyB3ZSBvbmNlIHRyaWVkIHRvIHVzZSByZWFk
eVN0YXRlICJpbnRlcmFjdGl2ZSIgaGVyZSwgYnV0IGl0IGNhdXNlZCBpc3N1ZXMgbGlrZSB0aGUg
b25lCi0gICAgICAgIC8vIGRpc2NvdmVyZWQgYnkgQ2hyaXNTIGhlcmU6IGh0dHA6Ly9idWdzLmpx
dWVyeS5jb20vdGlja2V0LzEyMjgyI2NvbW1lbnQ6MTUKLSAgICAgICAgaWYgKCBkb2N1bWVudC5y
ZWFkeVN0YXRlID09PSAiY29tcGxldGUiICkgewotICAgICAgICAgICAgLy8gSGFuZGxlIGl0IGFz
eW5jaHJvbm91c2x5IHRvIGFsbG93IHNjcmlwdHMgdGhlIG9wcG9ydHVuaXR5IHRvIGRlbGF5IHJl
YWR5Ci0gICAgICAgICAgICBzZXRUaW1lb3V0KCBqUXVlcnkucmVhZHkgKTsKLQotICAgICAgICB9
IGVsc2UgewotCi0gICAgICAgICAgICAvLyBVc2UgdGhlIGhhbmR5IGV2ZW50IGNhbGxiYWNrCi0g
ICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCAiRE9NQ29udGVudExvYWRlZCIs
IGNvbXBsZXRlZCwgZmFsc2UgKTsKLQotICAgICAgICAgICAgLy8gQSBmYWxsYmFjayB0byB3aW5k
b3cub25sb2FkLCB0aGF0IHdpbGwgYWx3YXlzIHdvcmsKLSAgICAgICAgICAgIHdpbmRvdy5hZGRF
dmVudExpc3RlbmVyKCAibG9hZCIsIGNvbXBsZXRlZCwgZmFsc2UgKTsKLSAgICAgICAgfQotICAg
IH0KLSAgICByZXR1cm4gcmVhZHlMaXN0LnByb21pc2UoIG9iaiApOwotfTsKLQotLy8gS2ljayBv
ZmYgdGhlIERPTSByZWFkeSBjaGVjayBldmVuIGlmIHRoZSB1c2VyIGRvZXMgbm90Ci1qUXVlcnku
cmVhZHkucHJvbWlzZSgpOwotCi0KLQotCi0vLyBNdWx0aWZ1bmN0aW9uYWwgbWV0aG9kIHRvIGdl
dCBhbmQgc2V0IHZhbHVlcyBvZiBhIGNvbGxlY3Rpb24KLS8vIFRoZSB2YWx1ZS9zIGNhbiBvcHRp
b25hbGx5IGJlIGV4ZWN1dGVkIGlmIGl0J3MgYSBmdW5jdGlvbgotdmFyIGFjY2VzcyA9IGpRdWVy
eS5hY2Nlc3MgPSBmdW5jdGlvbiggZWxlbXMsIGZuLCBrZXksIHZhbHVlLCBjaGFpbmFibGUsIGVt
cHR5R2V0LCByYXcgKSB7Ci0gICAgdmFyIGkgPSAwLAotICAgICAgICBsZW4gPSBlbGVtcy5sZW5n
dGgsCi0gICAgICAgIGJ1bGsgPSBrZXkgPT0gbnVsbDsKLQotICAgIC8vIFNldHMgbWFueSB2YWx1
ZXMKLSAgICBpZiAoIGpRdWVyeS50eXBlKCBrZXkgKSA9PT0gIm9iamVjdCIgKSB7Ci0gICAgICAg
IGNoYWluYWJsZSA9IHRydWU7Ci0gICAgICAgIGZvciAoIGkgaW4ga2V5ICkgewotICAgICAgICAg
ICAgalF1ZXJ5LmFjY2VzcyggZWxlbXMsIGZuLCBpLCBrZXlbaV0sIHRydWUsIGVtcHR5R2V0LCBy
YXcgKTsKLSAgICAgICAgfQotCi0gICAgLy8gU2V0cyBvbmUgdmFsdWUKLSAgICB9IGVsc2UgaWYg
KCB2YWx1ZSAhPT0gdW5kZWZpbmVkICkgewotICAgICAgICBjaGFpbmFibGUgPSB0cnVlOwotCi0g
ICAgICAgIGlmICggIWpRdWVyeS5pc0Z1bmN0aW9uKCB2YWx1ZSApICkgewotICAgICAgICAgICAg
cmF3ID0gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICggYnVsayApIHsKLSAgICAgICAg
ICAgIC8vIEJ1bGsgb3BlcmF0aW9ucyBydW4gYWdhaW5zdCB0aGUgZW50aXJlIHNldAotICAgICAg
ICAgICAgaWYgKCByYXcgKSB7Ci0gICAgICAgICAgICAgICAgZm4uY2FsbCggZWxlbXMsIHZhbHVl
ICk7Ci0gICAgICAgICAgICAgICAgZm4gPSBudWxsOwotCi0gICAgICAgICAgICAvLyAuLi5leGNl
cHQgd2hlbiBleGVjdXRpbmcgZnVuY3Rpb24gdmFsdWVzCi0gICAgICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgICAgIGJ1bGsgPSBmbjsKLSAgICAgICAgICAgICAgICBmbiA9IGZ1bmN0aW9u
KCBlbGVtLCBrZXksIHZhbHVlICkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gYnVsay5j
YWxsKCBqUXVlcnkoIGVsZW0gKSwgdmFsdWUgKTsKLSAgICAgICAgICAgICAgICB9OwotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCBmbiApIHsKLSAgICAgICAgICAgIGZv
ciAoIDsgaSA8IGxlbjsgaSsrICkgewotICAgICAgICAgICAgICAgIGZuKCBlbGVtc1tpXSwga2V5
LCByYXcgPyB2YWx1ZSA6IHZhbHVlLmNhbGwoIGVsZW1zW2ldLCBpLCBmbiggZWxlbXNbaV0sIGtl
eSApICkgKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBj
aGFpbmFibGUgPwotICAgICAgICBlbGVtcyA6Ci0KLSAgICAgICAgLy8gR2V0cwotICAgICAgICBi
dWxrID8KLSAgICAgICAgICAgIGZuLmNhbGwoIGVsZW1zICkgOgotICAgICAgICAgICAgbGVuID8g
Zm4oIGVsZW1zWzBdLCBrZXkgKSA6IGVtcHR5R2V0OwotfTsKLQotCi0vKioKLSAqIERldGVybWlu
ZXMgd2hldGhlciBhbiBvYmplY3QgY2FuIGhhdmUgZGF0YQotICovCi1qUXVlcnkuYWNjZXB0RGF0
YSA9IGZ1bmN0aW9uKCBvd25lciApIHsKLSAgICAvLyBBY2NlcHRzIG9ubHk6Ci0gICAgLy8gIC0g
Tm9kZQotICAgIC8vICAgIC0gTm9kZS5FTEVNRU5UX05PREUKLSAgICAvLyAgICAtIE5vZGUuRE9D
VU1FTlRfTk9ERQotICAgIC8vICAtIE9iamVjdAotICAgIC8vICAgIC0gQW55Ci0gICAgLyoganNo
aW50IC1XMDE4ICovCi0gICAgcmV0dXJuIG93bmVyLm5vZGVUeXBlID09PSAxIHx8IG93bmVyLm5v
ZGVUeXBlID09PSA5IHx8ICEoICtvd25lci5ub2RlVHlwZSApOwotfTsKLQotCi1mdW5jdGlvbiBE
YXRhKCkgewotICAgIC8vIFN1cHBvcnQ6IEFuZHJvaWQgPCA0LAotICAgIC8vIE9sZCBXZWJLaXQg
ZG9lcyBub3QgaGF2ZSBPYmplY3QucHJldmVudEV4dGVuc2lvbnMvZnJlZXplIG1ldGhvZCwKLSAg
ICAvLyByZXR1cm4gbmV3IGVtcHR5IG9iamVjdCBpbnN0ZWFkIHdpdGggbm8gW1tzZXRdXSBhY2Nl
c3NvcgotICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSggdGhpcy5jYWNoZSA9IHt9LCAwLCB7Ci0g
ICAgICAgIGdldDogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICByZXR1cm4ge307Ci0gICAgICAg
IH0KLSAgICB9KTsKLQotICAgIHRoaXMuZXhwYW5kbyA9IGpRdWVyeS5leHBhbmRvICsgTWF0aC5y
YW5kb20oKTsKLX0KLQotRGF0YS51aWQgPSAxOwotRGF0YS5hY2NlcHRzID0galF1ZXJ5LmFjY2Vw
dERhdGE7Ci0KLURhdGEucHJvdG90eXBlID0gewotICAgIGtleTogZnVuY3Rpb24oIG93bmVyICkg
ewotICAgICAgICAvLyBXZSBjYW4gYWNjZXB0IGRhdGEgZm9yIG5vbi1lbGVtZW50IG5vZGVzIGlu
IG1vZGVybiBicm93c2VycywKLSAgICAgICAgLy8gYnV0IHdlIHNob3VsZCBub3QsIHNlZSAjODMz
NS4KLSAgICAgICAgLy8gQWx3YXlzIHJldHVybiB0aGUga2V5IGZvciBhIGZyb3plbiBvYmplY3Qu
Ci0gICAgICAgIGlmICggIURhdGEuYWNjZXB0cyggb3duZXIgKSApIHsKLSAgICAgICAgICAgIHJl
dHVybiAwOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIGRlc2NyaXB0b3IgPSB7fSwKLSAgICAg
ICAgICAgIC8vIENoZWNrIGlmIHRoZSBvd25lciBvYmplY3QgYWxyZWFkeSBoYXMgYSBjYWNoZSBr
ZXkKLSAgICAgICAgICAgIHVubG9jayA9IG93bmVyWyB0aGlzLmV4cGFuZG8gXTsKLQotICAgICAg
ICAvLyBJZiBub3QsIGNyZWF0ZSBvbmUKLSAgICAgICAgaWYgKCAhdW5sb2NrICkgewotICAgICAg
ICAgICAgdW5sb2NrID0gRGF0YS51aWQrKzsKLQotICAgICAgICAgICAgLy8gU2VjdXJlIGl0IGlu
IGEgbm9uLWVudW1lcmFibGUsIG5vbi13cml0YWJsZSBwcm9wZXJ0eQotICAgICAgICAgICAgdHJ5
IHsKLSAgICAgICAgICAgICAgICBkZXNjcmlwdG9yWyB0aGlzLmV4cGFuZG8gXSA9IHsgdmFsdWU6
IHVubG9jayB9OwotICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKCBvd25l
ciwgZGVzY3JpcHRvciApOwotCi0gICAgICAgICAgICAvLyBTdXBwb3J0OiBBbmRyb2lkIDwgNAot
ICAgICAgICAgICAgLy8gRmFsbGJhY2sgdG8gYSBsZXNzIHNlY3VyZSBkZWZpbml0aW9uCi0gICAg
ICAgICAgICB9IGNhdGNoICggZSApIHsKLSAgICAgICAgICAgICAgICBkZXNjcmlwdG9yWyB0aGlz
LmV4cGFuZG8gXSA9IHVubG9jazsKLSAgICAgICAgICAgICAgICBqUXVlcnkuZXh0ZW5kKCBvd25l
ciwgZGVzY3JpcHRvciApOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLy8g
RW5zdXJlIHRoZSBjYWNoZSBvYmplY3QKLSAgICAgICAgaWYgKCAhdGhpcy5jYWNoZVsgdW5sb2Nr
IF0gKSB7Ci0gICAgICAgICAgICB0aGlzLmNhY2hlWyB1bmxvY2sgXSA9IHt9OwotICAgICAgICB9
Ci0KLSAgICAgICAgcmV0dXJuIHVubG9jazsKLSAgICB9LAotICAgIHNldDogZnVuY3Rpb24oIG93
bmVyLCBkYXRhLCB2YWx1ZSApIHsKLSAgICAgICAgdmFyIHByb3AsCi0gICAgICAgICAgICAvLyBU
aGVyZSBtYXkgYmUgYW4gdW5sb2NrIGFzc2lnbmVkIHRvIHRoaXMgbm9kZSwKLSAgICAgICAgICAg
IC8vIGlmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciB0aGlzICJvd25lciIsIGNyZWF0ZSBvbmUgaW5s
aW5lCi0gICAgICAgICAgICAvLyBhbmQgc2V0IHRoZSB1bmxvY2sgYXMgdGhvdWdoIGFuIG93bmVy
IGVudHJ5IGhhZCBhbHdheXMgZXhpc3RlZAotICAgICAgICAgICAgdW5sb2NrID0gdGhpcy5rZXko
IG93bmVyICksCi0gICAgICAgICAgICBjYWNoZSA9IHRoaXMuY2FjaGVbIHVubG9jayBdOwotCi0g
ICAgICAgIC8vIEhhbmRsZTogWyBvd25lciwga2V5LCB2YWx1ZSBdIGFyZ3MKLSAgICAgICAgaWYg
KCB0eXBlb2YgZGF0YSA9PT0gInN0cmluZyIgKSB7Ci0gICAgICAgICAgICBjYWNoZVsgZGF0YSBd
ID0gdmFsdWU7Ci0KLSAgICAgICAgLy8gSGFuZGxlOiBbIG93bmVyLCB7IHByb3BlcnRpZXMgfSBd
IGFyZ3MKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIEZyZXNoIGFzc2lnbm1lbnRz
IGJ5IG9iamVjdCBhcmUgc2hhbGxvdyBjb3BpZWQKLSAgICAgICAgICAgIGlmICggalF1ZXJ5Lmlz
RW1wdHlPYmplY3QoIGNhY2hlICkgKSB7Ci0gICAgICAgICAgICAgICAgalF1ZXJ5LmV4dGVuZCgg
dGhpcy5jYWNoZVsgdW5sb2NrIF0sIGRhdGEgKTsKLSAgICAgICAgICAgIC8vIE90aGVyd2lzZSwg
Y29weSB0aGUgcHJvcGVydGllcyBvbmUtYnktb25lIHRvIHRoZSBjYWNoZSBvYmplY3QKLSAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZm9yICggcHJvcCBpbiBkYXRhICkgewot
ICAgICAgICAgICAgICAgICAgICBjYWNoZVsgcHJvcCBdID0gZGF0YVsgcHJvcCBdOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICByZXR1cm4gY2Fj
aGU7Ci0gICAgfSwKLSAgICBnZXQ6IGZ1bmN0aW9uKCBvd25lciwga2V5ICkgewotICAgICAgICAv
LyBFaXRoZXIgYSB2YWxpZCBjYWNoZSBpcyBmb3VuZCwgb3Igd2lsbCBiZSBjcmVhdGVkLgotICAg
ICAgICAvLyBOZXcgY2FjaGVzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlIHVubG9jayByZXR1cm5l
ZCwKLSAgICAgICAgLy8gYWxsb3dpbmcgZGlyZWN0IGFjY2VzcyB0byB0aGUgbmV3bHkgY3JlYXRl
ZAotICAgICAgICAvLyBlbXB0eSBkYXRhIG9iamVjdC4gQSB2YWxpZCBvd25lciBvYmplY3QgbXVz
dCBiZSBwcm92aWRlZC4KLSAgICAgICAgdmFyIGNhY2hlID0gdGhpcy5jYWNoZVsgdGhpcy5rZXko
IG93bmVyICkgXTsKLQotICAgICAgICByZXR1cm4ga2V5ID09PSB1bmRlZmluZWQgPwotICAgICAg
ICAgICAgY2FjaGUgOiBjYWNoZVsga2V5IF07Ci0gICAgfSwKLSAgICBhY2Nlc3M6IGZ1bmN0aW9u
KCBvd25lciwga2V5LCB2YWx1ZSApIHsKLSAgICAgICAgdmFyIHN0b3JlZDsKLSAgICAgICAgLy8g
SW4gY2FzZXMgd2hlcmUgZWl0aGVyOgotICAgICAgICAvLwotICAgICAgICAvLyAgIDEuIE5vIGtl
eSB3YXMgc3BlY2lmaWVkCi0gICAgICAgIC8vICAgMi4gQSBzdHJpbmcga2V5IHdhcyBzcGVjaWZp
ZWQsIGJ1dCBubyB2YWx1ZSBwcm92aWRlZAotICAgICAgICAvLwotICAgICAgICAvLyBUYWtlIHRo
ZSAicmVhZCIgcGF0aCBhbmQgYWxsb3cgdGhlIGdldCBtZXRob2QgdG8gZGV0ZXJtaW5lCi0gICAg
ICAgIC8vIHdoaWNoIHZhbHVlIHRvIHJldHVybiwgcmVzcGVjdGl2ZWx5IGVpdGhlcjoKLSAgICAg
ICAgLy8KLSAgICAgICAgLy8gICAxLiBUaGUgZW50aXJlIGNhY2hlIG9iamVjdAotICAgICAgICAv
LyAgIDIuIFRoZSBkYXRhIHN0b3JlZCBhdCB0aGUga2V5Ci0gICAgICAgIC8vCi0gICAgICAgIGlm
ICgga2V5ID09PSB1bmRlZmluZWQgfHwKLSAgICAgICAgICAgICAgICAoKGtleSAmJiB0eXBlb2Yg
a2V5ID09PSAic3RyaW5nIikgJiYgdmFsdWUgPT09IHVuZGVmaW5lZCkgKSB7Ci0KLSAgICAgICAg
ICAgIHN0b3JlZCA9IHRoaXMuZ2V0KCBvd25lciwga2V5ICk7Ci0KLSAgICAgICAgICAgIHJldHVy
biBzdG9yZWQgIT09IHVuZGVmaW5lZCA/Ci0gICAgICAgICAgICAgICAgc3RvcmVkIDogdGhpcy5n
ZXQoIG93bmVyLCBqUXVlcnkuY2FtZWxDYXNlKGtleSkgKTsKLSAgICAgICAgfQotCi0gICAgICAg
IC8vIFsqXVdoZW4gdGhlIGtleSBpcyBub3QgYSBzdHJpbmcsIG9yIGJvdGggYSBrZXkgYW5kIHZh
bHVlCi0gICAgICAgIC8vIGFyZSBzcGVjaWZpZWQsIHNldCBvciBleHRlbmQgKGV4aXN0aW5nIG9i
amVjdHMpIHdpdGggZWl0aGVyOgotICAgICAgICAvLwotICAgICAgICAvLyAgIDEuIEFuIG9iamVj
dCBvZiBwcm9wZXJ0aWVzCi0gICAgICAgIC8vICAgMi4gQSBrZXkgYW5kIHZhbHVlCi0gICAgICAg
IC8vCi0gICAgICAgIHRoaXMuc2V0KCBvd25lciwga2V5LCB2YWx1ZSApOwotCi0gICAgICAgIC8v
IFNpbmNlIHRoZSAic2V0IiBwYXRoIGNhbiBoYXZlIHR3byBwb3NzaWJsZSBlbnRyeSBwb2ludHMK
LSAgICAgICAgLy8gcmV0dXJuIHRoZSBleHBlY3RlZCBkYXRhIGJhc2VkIG9uIHdoaWNoIHBhdGgg
d2FzIHRha2VuWypdCi0gICAgICAgIHJldHVybiB2YWx1ZSAhPT0gdW5kZWZpbmVkID8gdmFsdWUg
OiBrZXk7Ci0gICAgfSwKLSAgICByZW1vdmU6IGZ1bmN0aW9uKCBvd25lciwga2V5ICkgewotICAg
ICAgICB2YXIgaSwgbmFtZSwgY2FtZWwsCi0gICAgICAgICAgICB1bmxvY2sgPSB0aGlzLmtleSgg
b3duZXIgKSwKLSAgICAgICAgICAgIGNhY2hlID0gdGhpcy5jYWNoZVsgdW5sb2NrIF07Ci0KLSAg
ICAgICAgaWYgKCBrZXkgPT09IHVuZGVmaW5lZCApIHsKLSAgICAgICAgICAgIHRoaXMuY2FjaGVb
IHVubG9jayBdID0ge307Ci0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIFN1cHBv
cnQgYXJyYXkgb3Igc3BhY2Ugc2VwYXJhdGVkIHN0cmluZyBvZiBrZXlzCi0gICAgICAgICAgICBp
ZiAoIGpRdWVyeS5pc0FycmF5KCBrZXkgKSApIHsKLSAgICAgICAgICAgICAgICAvLyBJZiAibmFt
ZSIgaXMgYW4gYXJyYXkgb2Yga2V5cy4uLgotICAgICAgICAgICAgICAgIC8vIFdoZW4gZGF0YSBp
cyBpbml0aWFsbHkgY3JlYXRlZCwgdmlhICgia2V5IiwgInZhbCIpIHNpZ25hdHVyZSwKLSAgICAg
ICAgICAgICAgICAvLyBrZXlzIHdpbGwgYmUgY29udmVydGVkIHRvIGNhbWVsQ2FzZS4KLSAgICAg
ICAgICAgICAgICAvLyBTaW5jZSB0aGVyZSBpcyBubyB3YXkgdG8gdGVsbCBfaG93XyBhIGtleSB3
YXMgYWRkZWQsIHJlbW92ZQotICAgICAgICAgICAgICAgIC8vIGJvdGggcGxhaW4ga2V5IGFuZCBj
YW1lbENhc2Uga2V5LiAjMTI3ODYKLSAgICAgICAgICAgICAgICAvLyBUaGlzIHdpbGwgb25seSBw
ZW5hbGl6ZSB0aGUgYXJyYXkgYXJndW1lbnQgcGF0aC4KLSAgICAgICAgICAgICAgICBuYW1lID0g
a2V5LmNvbmNhdCgga2V5Lm1hcCggalF1ZXJ5LmNhbWVsQ2FzZSApICk7Ci0gICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgIGNhbWVsID0galF1ZXJ5LmNhbWVsQ2FzZSgga2V5ICk7
Ci0gICAgICAgICAgICAgICAgLy8gVHJ5IHRoZSBzdHJpbmcgYXMgYSBrZXkgYmVmb3JlIGFueSBt
YW5pcHVsYXRpb24KLSAgICAgICAgICAgICAgICBpZiAoIGtleSBpbiBjYWNoZSApIHsKLSAgICAg
ICAgICAgICAgICAgICAgbmFtZSA9IFsga2V5LCBjYW1lbCBdOwotICAgICAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIElmIGEga2V5IHdpdGggdGhlIHNwYWNlcyBl
eGlzdHMsIHVzZSBpdC4KLSAgICAgICAgICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCBjcmVhdGUg
YW4gYXJyYXkgYnkgbWF0Y2hpbmcgbm9uLXdoaXRlc3BhY2UKLSAgICAgICAgICAgICAgICAgICAg
bmFtZSA9IGNhbWVsOwotICAgICAgICAgICAgICAgICAgICBuYW1lID0gbmFtZSBpbiBjYWNoZSA/
Ci0gICAgICAgICAgICAgICAgICAgICAgICBbIG5hbWUgXSA6ICggbmFtZS5tYXRjaCggcm5vdHdo
aXRlICkgfHwgW10gKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIGkgPSBuYW1lLmxlbmd0aDsKLSAgICAgICAgICAgIHdoaWxlICggaS0tICkgewotICAg
ICAgICAgICAgICAgIGRlbGV0ZSBjYWNoZVsgbmFtZVsgaSBdIF07Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICB9LAotICAgIGhhc0RhdGE6IGZ1bmN0aW9uKCBvd25lciApIHsKLSAgICAg
ICAgcmV0dXJuICFqUXVlcnkuaXNFbXB0eU9iamVjdCgKLSAgICAgICAgICAgIHRoaXMuY2FjaGVb
IG93bmVyWyB0aGlzLmV4cGFuZG8gXSBdIHx8IHt9Ci0gICAgICAgICk7Ci0gICAgfSwKLSAgICBk
aXNjYXJkOiBmdW5jdGlvbiggb3duZXIgKSB7Ci0gICAgICAgIGlmICggb3duZXJbIHRoaXMuZXhw
YW5kbyBdICkgewotICAgICAgICAgICAgZGVsZXRlIHRoaXMuY2FjaGVbIG93bmVyWyB0aGlzLmV4
cGFuZG8gXSBdOwotICAgICAgICB9Ci0gICAgfQotfTsKLXZhciBkYXRhX3ByaXYgPSBuZXcgRGF0
YSgpOwotCi12YXIgZGF0YV91c2VyID0gbmV3IERhdGEoKTsKLQotCi0KLS8qCi0gICAgSW1wbGVt
ZW50YXRpb24gU3VtbWFyeQotCi0gICAgMS4gRW5mb3JjZSBBUEkgc3VyZmFjZSBhbmQgc2VtYW50
aWMgY29tcGF0aWJpbGl0eSB3aXRoIDEuOS54IGJyYW5jaAotICAgIDIuIEltcHJvdmUgdGhlIG1v
ZHVsZSdzIG1haW50YWluYWJpbGl0eSBieSByZWR1Y2luZyB0aGUgc3RvcmFnZQotICAgICAgICBw
YXRocyB0byBhIHNpbmdsZSBtZWNoYW5pc20uCi0gICAgMy4gVXNlIHRoZSBzYW1lIHNpbmdsZSBt
ZWNoYW5pc20gdG8gc3VwcG9ydCAicHJpdmF0ZSIgYW5kICJ1c2VyIiBkYXRhLgotICAgIDQuIF9O
ZXZlcl8gZXhwb3NlICJwcml2YXRlIiBkYXRhIHRvIHVzZXIgY29kZSAoVE9ETzogRHJvcCBfZGF0
YSwgX3JlbW92ZURhdGEpCi0gICAgNS4gQXZvaWQgZXhwb3NpbmcgaW1wbGVtZW50YXRpb24gZGV0
YWlscyBvbiB1c2VyIG9iamVjdHMgKGVnLiBleHBhbmRvIHByb3BlcnRpZXMpCi0gICAgNi4gUHJv
dmlkZSBhIGNsZWFyIHBhdGggZm9yIGltcGxlbWVudGF0aW9uIHVwZ3JhZGUgdG8gV2Vha01hcCBp
biAyMDE0Ci0qLwotdmFyIHJicmFjZSA9IC9eKD86XHtbXHdcV10qXH18XFtbXHdcV10qXF0pJC8s
Ci0gICAgcm11bHRpRGFzaCA9IC8oW0EtWl0pL2c7Ci0KLWZ1bmN0aW9uIGRhdGFBdHRyKCBlbGVt
LCBrZXksIGRhdGEgKSB7Ci0gICAgdmFyIG5hbWU7Ci0KLSAgICAvLyBJZiBub3RoaW5nIHdhcyBm
b3VuZCBpbnRlcm5hbGx5LCB0cnkgdG8gZmV0Y2ggYW55Ci0gICAgLy8gZGF0YSBmcm9tIHRoZSBI
VE1MNSBkYXRhLSogYXR0cmlidXRlCi0gICAgaWYgKCBkYXRhID09PSB1bmRlZmluZWQgJiYgZWxl
bS5ub2RlVHlwZSA9PT0gMSApIHsKLSAgICAgICAgbmFtZSA9ICJkYXRhLSIgKyBrZXkucmVwbGFj
ZSggcm11bHRpRGFzaCwgIi0kMSIgKS50b0xvd2VyQ2FzZSgpOwotICAgICAgICBkYXRhID0gZWxl
bS5nZXRBdHRyaWJ1dGUoIG5hbWUgKTsKLQotICAgICAgICBpZiAoIHR5cGVvZiBkYXRhID09PSAi
c3RyaW5nIiApIHsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgZGF0YSA9IGRh
dGEgPT09ICJ0cnVlIiA/IHRydWUgOgotICAgICAgICAgICAgICAgICAgICBkYXRhID09PSAiZmFs
c2UiID8gZmFsc2UgOgotICAgICAgICAgICAgICAgICAgICBkYXRhID09PSAibnVsbCIgPyBudWxs
IDoKLSAgICAgICAgICAgICAgICAgICAgLy8gT25seSBjb252ZXJ0IHRvIGEgbnVtYmVyIGlmIGl0
IGRvZXNuJ3QgY2hhbmdlIHRoZSBzdHJpbmcKLSAgICAgICAgICAgICAgICAgICAgK2RhdGEgKyAi
IiA9PT0gZGF0YSA/ICtkYXRhIDoKLSAgICAgICAgICAgICAgICAgICAgcmJyYWNlLnRlc3QoIGRh
dGEgKSA/IGpRdWVyeS5wYXJzZUpTT04oIGRhdGEgKSA6Ci0gICAgICAgICAgICAgICAgICAgIGRh
dGE7Ci0gICAgICAgICAgICB9IGNhdGNoKCBlICkge30KLQotICAgICAgICAgICAgLy8gTWFrZSBz
dXJlIHdlIHNldCB0aGUgZGF0YSBzbyBpdCBpc24ndCBjaGFuZ2VkIGxhdGVyCi0gICAgICAgICAg
ICBkYXRhX3VzZXIuc2V0KCBlbGVtLCBrZXksIGRhdGEgKTsKLSAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIGRhdGEgPSB1bmRlZmluZWQ7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJu
IGRhdGE7Ci19Ci0KLWpRdWVyeS5leHRlbmQoewotICAgIGhhc0RhdGE6IGZ1bmN0aW9uKCBlbGVt
ICkgewotICAgICAgICByZXR1cm4gZGF0YV91c2VyLmhhc0RhdGEoIGVsZW0gKSB8fCBkYXRhX3By
aXYuaGFzRGF0YSggZWxlbSApOwotICAgIH0sCi0KLSAgICBkYXRhOiBmdW5jdGlvbiggZWxlbSwg
bmFtZSwgZGF0YSApIHsKLSAgICAgICAgcmV0dXJuIGRhdGFfdXNlci5hY2Nlc3MoIGVsZW0sIG5h
bWUsIGRhdGEgKTsKLSAgICB9LAotCi0gICAgcmVtb3ZlRGF0YTogZnVuY3Rpb24oIGVsZW0sIG5h
bWUgKSB7Ci0gICAgICAgIGRhdGFfdXNlci5yZW1vdmUoIGVsZW0sIG5hbWUgKTsKLSAgICB9LAot
Ci0gICAgLy8gVE9ETzogTm93IHRoYXQgYWxsIGNhbGxzIHRvIF9kYXRhIGFuZCBfcmVtb3ZlRGF0
YSBoYXZlIGJlZW4gcmVwbGFjZWQKLSAgICAvLyB3aXRoIGRpcmVjdCBjYWxscyB0byBkYXRhX3By
aXYgbWV0aG9kcywgdGhlc2UgY2FuIGJlIGRlcHJlY2F0ZWQuCi0gICAgX2RhdGE6IGZ1bmN0aW9u
KCBlbGVtLCBuYW1lLCBkYXRhICkgewotICAgICAgICByZXR1cm4gZGF0YV9wcml2LmFjY2Vzcygg
ZWxlbSwgbmFtZSwgZGF0YSApOwotICAgIH0sCi0KLSAgICBfcmVtb3ZlRGF0YTogZnVuY3Rpb24o
IGVsZW0sIG5hbWUgKSB7Ci0gICAgICAgIGRhdGFfcHJpdi5yZW1vdmUoIGVsZW0sIG5hbWUgKTsK
LSAgICB9Ci19KTsKLQotalF1ZXJ5LmZuLmV4dGVuZCh7Ci0gICAgZGF0YTogZnVuY3Rpb24oIGtl
eSwgdmFsdWUgKSB7Ci0gICAgICAgIHZhciBpLCBuYW1lLCBkYXRhLAotICAgICAgICAgICAgZWxl
bSA9IHRoaXNbIDAgXSwKLSAgICAgICAgICAgIGF0dHJzID0gZWxlbSAmJiBlbGVtLmF0dHJpYnV0
ZXM7Ci0KLSAgICAgICAgLy8gR2V0cyBhbGwgdmFsdWVzCi0gICAgICAgIGlmICgga2V5ID09PSB1
bmRlZmluZWQgKSB7Ci0gICAgICAgICAgICBpZiAoIHRoaXMubGVuZ3RoICkgewotICAgICAgICAg
ICAgICAgIGRhdGEgPSBkYXRhX3VzZXIuZ2V0KCBlbGVtICk7Ci0KLSAgICAgICAgICAgICAgICBp
ZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgJiYgIWRhdGFfcHJpdi5nZXQoIGVsZW0sICJoYXNEYXRh
QXR0cnMiICkgKSB7Ci0gICAgICAgICAgICAgICAgICAgIGkgPSBhdHRycy5sZW5ndGg7Ci0gICAg
ICAgICAgICAgICAgICAgIHdoaWxlICggaS0tICkgewotICAgICAgICAgICAgICAgICAgICAgICAg
bmFtZSA9IGF0dHJzWyBpIF0ubmFtZTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBu
YW1lLmluZGV4T2YoICJkYXRhLSIgKSA9PT0gMCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBuYW1lID0galF1ZXJ5LmNhbWVsQ2FzZSggbmFtZS5zbGljZSg1KSApOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRhdGFBdHRyKCBlbGVtLCBuYW1lLCBkYXRhWyBuYW1lIF0gKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgICAgICBkYXRhX3ByaXYuc2V0KCBlbGVtLCAiaGFzRGF0YUF0dHJzIiwgdHJ1ZSAp
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcmV0dXJu
IGRhdGE7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBTZXRzIG11bHRpcGxlIHZhbHVlcwotICAg
ICAgICBpZiAoIHR5cGVvZiBrZXkgPT09ICJvYmplY3QiICkgewotICAgICAgICAgICAgcmV0dXJu
IHRoaXMuZWFjaChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBkYXRhX3VzZXIuc2V0KCB0
aGlzLCBrZXkgKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJu
IGFjY2VzcyggdGhpcywgZnVuY3Rpb24oIHZhbHVlICkgewotICAgICAgICAgICAgdmFyIGRhdGEs
Ci0gICAgICAgICAgICAgICAgY2FtZWxLZXkgPSBqUXVlcnkuY2FtZWxDYXNlKCBrZXkgKTsKLQot
ICAgICAgICAgICAgLy8gVGhlIGNhbGxpbmcgalF1ZXJ5IG9iamVjdCAoZWxlbWVudCBtYXRjaGVz
KSBpcyBub3QgZW1wdHkKLSAgICAgICAgICAgIC8vIChhbmQgdGhlcmVmb3JlIGhhcyBhbiBlbGVt
ZW50IGFwcGVhcnMgYXQgdGhpc1sgMCBdKSBhbmQgdGhlCi0gICAgICAgICAgICAvLyBgdmFsdWVg
IHBhcmFtZXRlciB3YXMgbm90IHVuZGVmaW5lZC4gQW4gZW1wdHkgalF1ZXJ5IG9iamVjdAotICAg
ICAgICAgICAgLy8gd2lsbCByZXN1bHQgaW4gYHVuZGVmaW5lZGAgZm9yIGVsZW0gPSB0aGlzWyAw
IF0gd2hpY2ggd2lsbAotICAgICAgICAgICAgLy8gdGhyb3cgYW4gZXhjZXB0aW9uIGlmIGFuIGF0
dGVtcHQgdG8gcmVhZCBhIGRhdGEgY2FjaGUgaXMgbWFkZS4KLSAgICAgICAgICAgIGlmICggZWxl
bSAmJiB2YWx1ZSA9PT0gdW5kZWZpbmVkICkgewotICAgICAgICAgICAgICAgIC8vIEF0dGVtcHQg
dG8gZ2V0IGRhdGEgZnJvbSB0aGUgY2FjaGUKLSAgICAgICAgICAgICAgICAvLyB3aXRoIHRoZSBr
ZXkgYXMtaXMKLSAgICAgICAgICAgICAgICBkYXRhID0gZGF0YV91c2VyLmdldCggZWxlbSwga2V5
ICk7Ci0gICAgICAgICAgICAgICAgaWYgKCBkYXRhICE9PSB1bmRlZmluZWQgKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiBkYXRhOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgICAgIC8vIEF0dGVtcHQgdG8gZ2V0IGRhdGEgZnJvbSB0aGUgY2FjaGUKLSAgICAgICAgICAg
ICAgICAvLyB3aXRoIHRoZSBrZXkgY2FtZWxpemVkCi0gICAgICAgICAgICAgICAgZGF0YSA9IGRh
dGFfdXNlci5nZXQoIGVsZW0sIGNhbWVsS2V5ICk7Ci0gICAgICAgICAgICAgICAgaWYgKCBkYXRh
ICE9PSB1bmRlZmluZWQgKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhOwotICAg
ICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIC8vIEF0dGVtcHQgdG8gImRpc2NvdmVy
IiB0aGUgZGF0YSBpbgotICAgICAgICAgICAgICAgIC8vIEhUTUw1IGN1c3RvbSBkYXRhLSogYXR0
cnMKLSAgICAgICAgICAgICAgICBkYXRhID0gZGF0YUF0dHIoIGVsZW0sIGNhbWVsS2V5LCB1bmRl
ZmluZWQgKTsKLSAgICAgICAgICAgICAgICBpZiAoIGRhdGEgIT09IHVuZGVmaW5lZCApIHsKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGE7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICAgICAgLy8gV2UgdHJpZWQgcmVhbGx5IGhhcmQsIGJ1dCB0aGUgZGF0YSBkb2Vzbid0
IGV4aXN0LgotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgLy8gU2V0IHRoZSBkYXRhLi4uCi0gICAgICAgICAgICB0aGlzLmVhY2goZnVuY3Rpb24o
KSB7Ci0gICAgICAgICAgICAgICAgLy8gRmlyc3QsIGF0dGVtcHQgdG8gc3RvcmUgYSBjb3B5IG9y
IHJlZmVyZW5jZSBvZiBhbnkKLSAgICAgICAgICAgICAgICAvLyBkYXRhIHRoYXQgbWlnaHQndmUg
YmVlbiBzdG9yZSB3aXRoIGEgY2FtZWxDYXNlZCBrZXkuCi0gICAgICAgICAgICAgICAgdmFyIGRh
dGEgPSBkYXRhX3VzZXIuZ2V0KCB0aGlzLCBjYW1lbEtleSApOwotCi0gICAgICAgICAgICAgICAg
Ly8gRm9yIEhUTUw1IGRhdGEtKiBhdHRyaWJ1dGUgaW50ZXJvcCwgd2UgaGF2ZSB0bwotICAgICAg
ICAgICAgICAgIC8vIHN0b3JlIHByb3BlcnR5IG5hbWVzIHdpdGggZGFzaGVzIGluIGEgY2FtZWxD
YXNlIGZvcm0uCi0gICAgICAgICAgICAgICAgLy8gVGhpcyBtaWdodCBub3QgYXBwbHkgdG8gYWxs
IHByb3BlcnRpZXMuLi4qCi0gICAgICAgICAgICAgICAgZGF0YV91c2VyLnNldCggdGhpcywgY2Ft
ZWxLZXksIHZhbHVlICk7Ci0KLSAgICAgICAgICAgICAgICAvLyAqLi4uIEluIHRoZSBjYXNlIG9m
IHByb3BlcnRpZXMgdGhhdCBtaWdodCBfYWN0dWFsbHlfCi0gICAgICAgICAgICAgICAgLy8gaGF2
ZSBkYXNoZXMsIHdlIG5lZWQgdG8gYWxzbyBzdG9yZSBhIGNvcHkgb2YgdGhhdAotICAgICAgICAg
ICAgICAgIC8vIHVuY2hhbmdlZCBwcm9wZXJ0eS4KLSAgICAgICAgICAgICAgICBpZiAoIGtleS5p
bmRleE9mKCItIikgIT09IC0xICYmIGRhdGEgIT09IHVuZGVmaW5lZCApIHsKLSAgICAgICAgICAg
ICAgICAgICAgZGF0YV91c2VyLnNldCggdGhpcywga2V5LCB2YWx1ZSApOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIH0pOwotICAgICAgICB9LCBudWxsLCB2YWx1ZSwgYXJndW1lbnRz
Lmxlbmd0aCA+IDEsIG51bGwsIHRydWUgKTsKLSAgICB9LAotCi0gICAgcmVtb3ZlRGF0YTogZnVu
Y3Rpb24oIGtleSApIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKLSAg
ICAgICAgICAgIGRhdGFfdXNlci5yZW1vdmUoIHRoaXMsIGtleSApOwotICAgICAgICB9KTsKLSAg
ICB9Ci19KTsKLQotCi1qUXVlcnkuZXh0ZW5kKHsKLSAgICBxdWV1ZTogZnVuY3Rpb24oIGVsZW0s
IHR5cGUsIGRhdGEgKSB7Ci0gICAgICAgIHZhciBxdWV1ZTsKLQotICAgICAgICBpZiAoIGVsZW0g
KSB7Ci0gICAgICAgICAgICB0eXBlID0gKCB0eXBlIHx8ICJmeCIgKSArICJxdWV1ZSI7Ci0gICAg
ICAgICAgICBxdWV1ZSA9IGRhdGFfcHJpdi5nZXQoIGVsZW0sIHR5cGUgKTsKLQotICAgICAgICAg
ICAgLy8gU3BlZWQgdXAgZGVxdWV1ZSBieSBnZXR0aW5nIG91dCBxdWlja2x5IGlmIHRoaXMgaXMg
anVzdCBhIGxvb2t1cAotICAgICAgICAgICAgaWYgKCBkYXRhICkgewotICAgICAgICAgICAgICAg
IGlmICggIXF1ZXVlIHx8IGpRdWVyeS5pc0FycmF5KCBkYXRhICkgKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHF1ZXVlID0gZGF0YV9wcml2LmFjY2VzcyggZWxlbSwgdHlwZSwgalF1ZXJ5Lm1ha2VB
cnJheShkYXRhKSApOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
ICAgIHF1ZXVlLnB1c2goIGRhdGEgKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICByZXR1cm4gcXVldWUgfHwgW107Ci0gICAgICAgIH0KLSAgICB9LAotCi0g
ICAgZGVxdWV1ZTogZnVuY3Rpb24oIGVsZW0sIHR5cGUgKSB7Ci0gICAgICAgIHR5cGUgPSB0eXBl
IHx8ICJmeCI7Ci0KLSAgICAgICAgdmFyIHF1ZXVlID0galF1ZXJ5LnF1ZXVlKCBlbGVtLCB0eXBl
ICksCi0gICAgICAgICAgICBzdGFydExlbmd0aCA9IHF1ZXVlLmxlbmd0aCwKLSAgICAgICAgICAg
IGZuID0gcXVldWUuc2hpZnQoKSwKLSAgICAgICAgICAgIGhvb2tzID0galF1ZXJ5Ll9xdWV1ZUhv
b2tzKCBlbGVtLCB0eXBlICksCi0gICAgICAgICAgICBuZXh0ID0gZnVuY3Rpb24oKSB7Ci0gICAg
ICAgICAgICAgICAgalF1ZXJ5LmRlcXVldWUoIGVsZW0sIHR5cGUgKTsKLSAgICAgICAgICAgIH07
Ci0KLSAgICAgICAgLy8gSWYgdGhlIGZ4IHF1ZXVlIGlzIGRlcXVldWVkLCBhbHdheXMgcmVtb3Zl
IHRoZSBwcm9ncmVzcyBzZW50aW5lbAotICAgICAgICBpZiAoIGZuID09PSAiaW5wcm9ncmVzcyIg
KSB7Ci0gICAgICAgICAgICBmbiA9IHF1ZXVlLnNoaWZ0KCk7Ci0gICAgICAgICAgICBzdGFydExl
bmd0aC0tOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCBmbiApIHsKLQotICAgICAgICAgICAg
Ly8gQWRkIGEgcHJvZ3Jlc3Mgc2VudGluZWwgdG8gcHJldmVudCB0aGUgZnggcXVldWUgZnJvbSBi
ZWluZwotICAgICAgICAgICAgLy8gYXV0b21hdGljYWxseSBkZXF1ZXVlZAotICAgICAgICAgICAg
aWYgKCB0eXBlID09PSAiZngiICkgewotICAgICAgICAgICAgICAgIHF1ZXVlLnVuc2hpZnQoICJp
bnByb2dyZXNzIiApOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBjbGVhciB1cCB0
aGUgbGFzdCBxdWV1ZSBzdG9wIGZ1bmN0aW9uCi0gICAgICAgICAgICBkZWxldGUgaG9va3Muc3Rv
cDsKLSAgICAgICAgICAgIGZuLmNhbGwoIGVsZW0sIG5leHQsIGhvb2tzICk7Ci0gICAgICAgIH0K
LQotICAgICAgICBpZiAoICFzdGFydExlbmd0aCAmJiBob29rcyApIHsKLSAgICAgICAgICAgIGhv
b2tzLmVtcHR5LmZpcmUoKTsKLSAgICAgICAgfQotICAgIH0sCi0KLSAgICAvLyBub3QgaW50ZW5k
ZWQgZm9yIHB1YmxpYyBjb25zdW1wdGlvbiAtIGdlbmVyYXRlcyBhIHF1ZXVlSG9va3Mgb2JqZWN0
LCBvciByZXR1cm5zIHRoZSBjdXJyZW50IG9uZQotICAgIF9xdWV1ZUhvb2tzOiBmdW5jdGlvbigg
ZWxlbSwgdHlwZSApIHsKLSAgICAgICAgdmFyIGtleSA9IHR5cGUgKyAicXVldWVIb29rcyI7Ci0g
ICAgICAgIHJldHVybiBkYXRhX3ByaXYuZ2V0KCBlbGVtLCBrZXkgKSB8fCBkYXRhX3ByaXYuYWNj
ZXNzKCBlbGVtLCBrZXksIHsKLSAgICAgICAgICAgIGVtcHR5OiBqUXVlcnkuQ2FsbGJhY2tzKCJv
bmNlIG1lbW9yeSIpLmFkZChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBkYXRhX3ByaXYu
cmVtb3ZlKCBlbGVtLCBbIHR5cGUgKyAicXVldWUiLCBrZXkgXSApOwotICAgICAgICAgICAgfSkK
LSAgICAgICAgfSk7Ci0gICAgfQotfSk7Ci0KLWpRdWVyeS5mbi5leHRlbmQoewotICAgIHF1ZXVl
OiBmdW5jdGlvbiggdHlwZSwgZGF0YSApIHsKLSAgICAgICAgdmFyIHNldHRlciA9IDI7Ci0KLSAg
ICAgICAgaWYgKCB0eXBlb2YgdHlwZSAhPT0gInN0cmluZyIgKSB7Ci0gICAgICAgICAgICBkYXRh
ID0gdHlwZTsKLSAgICAgICAgICAgIHR5cGUgPSAiZngiOwotICAgICAgICAgICAgc2V0dGVyLS07
Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIGFyZ3VtZW50cy5sZW5ndGggPCBzZXR0ZXIgKSB7
Ci0gICAgICAgICAgICByZXR1cm4galF1ZXJ5LnF1ZXVlKCB0aGlzWzBdLCB0eXBlICk7Ci0gICAg
ICAgIH0KLQotICAgICAgICByZXR1cm4gZGF0YSA9PT0gdW5kZWZpbmVkID8KLSAgICAgICAgICAg
IHRoaXMgOgotICAgICAgICAgICAgdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAg
ICAgIHZhciBxdWV1ZSA9IGpRdWVyeS5xdWV1ZSggdGhpcywgdHlwZSwgZGF0YSApOwotCi0gICAg
ICAgICAgICAgICAgLy8gZW5zdXJlIGEgaG9va3MgZm9yIHRoaXMgcXVldWUKLSAgICAgICAgICAg
ICAgICBqUXVlcnkuX3F1ZXVlSG9va3MoIHRoaXMsIHR5cGUgKTsKLQotICAgICAgICAgICAgICAg
IGlmICggdHlwZSA9PT0gImZ4IiAmJiBxdWV1ZVswXSAhPT0gImlucHJvZ3Jlc3MiICkgewotICAg
ICAgICAgICAgICAgICAgICBqUXVlcnkuZGVxdWV1ZSggdGhpcywgdHlwZSApOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIH0pOwotICAgIH0sCi0gICAgZGVxdWV1ZTogZnVuY3Rpb24o
IHR5cGUgKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7Ci0gICAgICAg
ICAgICBqUXVlcnkuZGVxdWV1ZSggdGhpcywgdHlwZSApOwotICAgICAgICB9KTsKLSAgICB9LAot
ICAgIGNsZWFyUXVldWU6IGZ1bmN0aW9uKCB0eXBlICkgewotICAgICAgICByZXR1cm4gdGhpcy5x
dWV1ZSggdHlwZSB8fCAiZngiLCBbXSApOwotICAgIH0sCi0gICAgLy8gR2V0IGEgcHJvbWlzZSBy
ZXNvbHZlZCB3aGVuIHF1ZXVlcyBvZiBhIGNlcnRhaW4gdHlwZQotICAgIC8vIGFyZSBlbXB0aWVk
IChmeCBpcyB0aGUgdHlwZSBieSBkZWZhdWx0KQotICAgIHByb21pc2U6IGZ1bmN0aW9uKCB0eXBl
LCBvYmogKSB7Ci0gICAgICAgIHZhciB0bXAsCi0gICAgICAgICAgICBjb3VudCA9IDEsCi0gICAg
ICAgICAgICBkZWZlciA9IGpRdWVyeS5EZWZlcnJlZCgpLAotICAgICAgICAgICAgZWxlbWVudHMg
PSB0aGlzLAotICAgICAgICAgICAgaSA9IHRoaXMubGVuZ3RoLAotICAgICAgICAgICAgcmVzb2x2
ZSA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIGlmICggISggLS1jb3VudCApICkgewot
ICAgICAgICAgICAgICAgICAgICBkZWZlci5yZXNvbHZlV2l0aCggZWxlbWVudHMsIFsgZWxlbWVu
dHMgXSApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07Ci0KLSAgICAgICAgaWYg
KCB0eXBlb2YgdHlwZSAhPT0gInN0cmluZyIgKSB7Ci0gICAgICAgICAgICBvYmogPSB0eXBlOwot
ICAgICAgICAgICAgdHlwZSA9IHVuZGVmaW5lZDsKLSAgICAgICAgfQotICAgICAgICB0eXBlID0g
dHlwZSB8fCAiZngiOwotCi0gICAgICAgIHdoaWxlICggaS0tICkgewotICAgICAgICAgICAgdG1w
ID0gZGF0YV9wcml2LmdldCggZWxlbWVudHNbIGkgXSwgdHlwZSArICJxdWV1ZUhvb2tzIiApOwot
ICAgICAgICAgICAgaWYgKCB0bXAgJiYgdG1wLmVtcHR5ICkgewotICAgICAgICAgICAgICAgIGNv
dW50Kys7Ci0gICAgICAgICAgICAgICAgdG1wLmVtcHR5LmFkZCggcmVzb2x2ZSApOwotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHJlc29sdmUoKTsKLSAgICAgICAgcmV0dXJuIGRl
ZmVyLnByb21pc2UoIG9iaiApOwotICAgIH0KLX0pOwotdmFyIHBudW0gPSAoL1srLV0/KD86XGQq
XC58KVxkKyg/OltlRV1bKy1dP1xkK3wpLykuc291cmNlOwotCi12YXIgY3NzRXhwYW5kID0gWyAi
VG9wIiwgIlJpZ2h0IiwgIkJvdHRvbSIsICJMZWZ0IiBdOwotCi12YXIgaXNIaWRkZW4gPSBmdW5j
dGlvbiggZWxlbSwgZWwgKSB7Ci0gICAgICAgIC8vIGlzSGlkZGVuIG1pZ2h0IGJlIGNhbGxlZCBm
cm9tIGpRdWVyeSNmaWx0ZXIgZnVuY3Rpb247Ci0gICAgICAgIC8vIGluIHRoYXQgY2FzZSwgZWxl
bWVudCB3aWxsIGJlIHNlY29uZCBhcmd1bWVudAotICAgICAgICBlbGVtID0gZWwgfHwgZWxlbTsK
LSAgICAgICAgcmV0dXJuIGpRdWVyeS5jc3MoIGVsZW0sICJkaXNwbGF5IiApID09PSAibm9uZSIg
fHwgIWpRdWVyeS5jb250YWlucyggZWxlbS5vd25lckRvY3VtZW50LCBlbGVtICk7Ci0gICAgfTsK
LQotdmFyIHJjaGVja2FibGVUeXBlID0gKC9eKD86Y2hlY2tib3h8cmFkaW8pJC9pKTsKLQotCi0K
LShmdW5jdGlvbigpIHsKLSAgICB2YXIgZnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVu
dEZyYWdtZW50KCksCi0gICAgICAgIGRpdiA9IGZyYWdtZW50LmFwcGVuZENoaWxkKCBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCAiZGl2IiApICk7Ci0KLSAgICAvLyAjMTEyMTcgLSBXZWJLaXQgbG9z
ZXMgY2hlY2sgd2hlbiB0aGUgbmFtZSBpcyBhZnRlciB0aGUgY2hlY2tlZCBhdHRyaWJ1dGUKLSAg
ICBkaXYuaW5uZXJIVE1MID0gIjxpbnB1dCB0eXBlPSdyYWRpbycgY2hlY2tlZD0nY2hlY2tlZCcg
bmFtZT0ndCcvPiI7Ci0KLSAgICAvLyBTdXBwb3J0OiBTYWZhcmkgNS4xLCBpT1MgNS4xLCBBbmRy
b2lkIDQueCwgQW5kcm9pZCAyLjMKLSAgICAvLyBvbGQgV2ViS2l0IGRvZXNuJ3QgY2xvbmUgY2hl
Y2tlZCBzdGF0ZSBjb3JyZWN0bHkgaW4gZnJhZ21lbnRzCi0gICAgc3VwcG9ydC5jaGVja0Nsb25l
ID0gZGl2LmNsb25lTm9kZSggdHJ1ZSApLmNsb25lTm9kZSggdHJ1ZSApLmxhc3RDaGlsZC5jaGVj
a2VkOwotCi0gICAgLy8gTWFrZSBzdXJlIHRleHRhcmVhIChhbmQgY2hlY2tib3gpIGRlZmF1bHRW
YWx1ZSBpcyBwcm9wZXJseSBjbG9uZWQKLSAgICAvLyBTdXBwb3J0OiBJRTktSUUxMSsKLSAgICBk
aXYuaW5uZXJIVE1MID0gIjx0ZXh0YXJlYT54PC90ZXh0YXJlYT4iOwotICAgIHN1cHBvcnQubm9D
bG9uZUNoZWNrZWQgPSAhIWRpdi5jbG9uZU5vZGUoIHRydWUgKS5sYXN0Q2hpbGQuZGVmYXVsdFZh
bHVlOwotfSkoKTsKLXZhciBzdHJ1bmRlZmluZWQgPSB0eXBlb2YgdW5kZWZpbmVkOwotCi0KLQot
c3VwcG9ydC5mb2N1c2luQnViYmxlcyA9ICJvbmZvY3VzaW4iIGluIHdpbmRvdzsKLQotCi12YXIK
LSAgICBya2V5RXZlbnQgPSAvXmtleS8sCi0gICAgcm1vdXNlRXZlbnQgPSAvXig/Om1vdXNlfGNv
bnRleHRtZW51KXxjbGljay8sCi0gICAgcmZvY3VzTW9ycGggPSAvXig/OmZvY3VzaW5mb2N1c3xm
b2N1c291dGJsdXIpJC8sCi0gICAgcnR5cGVuYW1lc3BhY2UgPSAvXihbXi5dKikoPzpcLiguKyl8
KSQvOwotCi1mdW5jdGlvbiByZXR1cm5UcnVlKCkgewotICAgIHJldHVybiB0cnVlOwotfQotCi1m
dW5jdGlvbiByZXR1cm5GYWxzZSgpIHsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWZ1bmN0aW9u
IHNhZmVBY3RpdmVFbGVtZW50KCkgewotICAgIHRyeSB7Ci0gICAgICAgIHJldHVybiBkb2N1bWVu
dC5hY3RpdmVFbGVtZW50OwotICAgIH0gY2F0Y2ggKCBlcnIgKSB7IH0KLX0KLQotLyoKLSAqIEhl
bHBlciBmdW5jdGlvbnMgZm9yIG1hbmFnaW5nIGV2ZW50cyAtLSBub3QgcGFydCBvZiB0aGUgcHVi
bGljIGludGVyZmFjZS4KLSAqIFByb3BzIHRvIERlYW4gRWR3YXJkcycgYWRkRXZlbnQgbGlicmFy
eSBmb3IgbWFueSBvZiB0aGUgaWRlYXMuCi0gKi8KLWpRdWVyeS5ldmVudCA9IHsKLQotICAgIGds
b2JhbDoge30sCi0KLSAgICBhZGQ6IGZ1bmN0aW9uKCBlbGVtLCB0eXBlcywgaGFuZGxlciwgZGF0
YSwgc2VsZWN0b3IgKSB7Ci0KLSAgICAgICAgdmFyIGhhbmRsZU9iakluLCBldmVudEhhbmRsZSwg
dG1wLAotICAgICAgICAgICAgZXZlbnRzLCB0LCBoYW5kbGVPYmosCi0gICAgICAgICAgICBzcGVj
aWFsLCBoYW5kbGVycywgdHlwZSwgbmFtZXNwYWNlcywgb3JpZ1R5cGUsCi0gICAgICAgICAgICBl
bGVtRGF0YSA9IGRhdGFfcHJpdi5nZXQoIGVsZW0gKTsKLQotICAgICAgICAvLyBEb24ndCBhdHRh
Y2ggZXZlbnRzIHRvIG5vRGF0YSBvciB0ZXh0L2NvbW1lbnQgbm9kZXMgKGJ1dCBhbGxvdyBwbGFp
biBvYmplY3RzKQotICAgICAgICBpZiAoICFlbGVtRGF0YSApIHsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIENhbGxlciBjYW4gcGFzcyBpbiBhbiBvYmplY3Qg
b2YgY3VzdG9tIGRhdGEgaW4gbGlldSBvZiB0aGUgaGFuZGxlcgotICAgICAgICBpZiAoIGhhbmRs
ZXIuaGFuZGxlciApIHsKLSAgICAgICAgICAgIGhhbmRsZU9iakluID0gaGFuZGxlcjsKLSAgICAg
ICAgICAgIGhhbmRsZXIgPSBoYW5kbGVPYmpJbi5oYW5kbGVyOwotICAgICAgICAgICAgc2VsZWN0
b3IgPSBoYW5kbGVPYmpJbi5zZWxlY3RvcjsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIE1ha2Ug
c3VyZSB0aGF0IHRoZSBoYW5kbGVyIGhhcyBhIHVuaXF1ZSBJRCwgdXNlZCB0byBmaW5kL3JlbW92
ZSBpdCBsYXRlcgotICAgICAgICBpZiAoICFoYW5kbGVyLmd1aWQgKSB7Ci0gICAgICAgICAgICBo
YW5kbGVyLmd1aWQgPSBqUXVlcnkuZ3VpZCsrOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gSW5p
dCB0aGUgZWxlbWVudCdzIGV2ZW50IHN0cnVjdHVyZSBhbmQgbWFpbiBoYW5kbGVyLCBpZiB0aGlz
IGlzIHRoZSBmaXJzdAotICAgICAgICBpZiAoICEoZXZlbnRzID0gZWxlbURhdGEuZXZlbnRzKSAp
IHsKLSAgICAgICAgICAgIGV2ZW50cyA9IGVsZW1EYXRhLmV2ZW50cyA9IHt9OwotICAgICAgICB9
Ci0gICAgICAgIGlmICggIShldmVudEhhbmRsZSA9IGVsZW1EYXRhLmhhbmRsZSkgKSB7Ci0gICAg
ICAgICAgICBldmVudEhhbmRsZSA9IGVsZW1EYXRhLmhhbmRsZSA9IGZ1bmN0aW9uKCBlICkgewot
ICAgICAgICAgICAgICAgIC8vIERpc2NhcmQgdGhlIHNlY29uZCBldmVudCBvZiBhIGpRdWVyeS5l
dmVudC50cmlnZ2VyKCkgYW5kCi0gICAgICAgICAgICAgICAgLy8gd2hlbiBhbiBldmVudCBpcyBj
YWxsZWQgYWZ0ZXIgYSBwYWdlIGhhcyB1bmxvYWRlZAotICAgICAgICAgICAgICAgIHJldHVybiB0
eXBlb2YgalF1ZXJ5ICE9PSBzdHJ1bmRlZmluZWQgJiYgalF1ZXJ5LmV2ZW50LnRyaWdnZXJlZCAh
PT0gZS50eXBlID8KLSAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmV2ZW50LmRpc3BhdGNoLmFw
cGx5KCBlbGVtLCBhcmd1bWVudHMgKSA6IHVuZGVmaW5lZDsKLSAgICAgICAgICAgIH07Ci0gICAg
ICAgIH0KLQotICAgICAgICAvLyBIYW5kbGUgbXVsdGlwbGUgZXZlbnRzIHNlcGFyYXRlZCBieSBh
IHNwYWNlCi0gICAgICAgIHR5cGVzID0gKCB0eXBlcyB8fCAiIiApLm1hdGNoKCBybm90d2hpdGUg
KSB8fCBbICIiIF07Ci0gICAgICAgIHQgPSB0eXBlcy5sZW5ndGg7Ci0gICAgICAgIHdoaWxlICgg
dC0tICkgewotICAgICAgICAgICAgdG1wID0gcnR5cGVuYW1lc3BhY2UuZXhlYyggdHlwZXNbdF0g
KSB8fCBbXTsKLSAgICAgICAgICAgIHR5cGUgPSBvcmlnVHlwZSA9IHRtcFsxXTsKLSAgICAgICAg
ICAgIG5hbWVzcGFjZXMgPSAoIHRtcFsyXSB8fCAiIiApLnNwbGl0KCAiLiIgKS5zb3J0KCk7Ci0K
LSAgICAgICAgICAgIC8vIFRoZXJlICptdXN0KiBiZSBhIHR5cGUsIG5vIGF0dGFjaGluZyBuYW1l
c3BhY2Utb25seSBoYW5kbGVycwotICAgICAgICAgICAgaWYgKCAhdHlwZSApIHsKLSAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gSWYgZXZl
bnQgY2hhbmdlcyBpdHMgdHlwZSwgdXNlIHRoZSBzcGVjaWFsIGV2ZW50IGhhbmRsZXJzIGZvciB0
aGUgY2hhbmdlZCB0eXBlCi0gICAgICAgICAgICBzcGVjaWFsID0galF1ZXJ5LmV2ZW50LnNwZWNp
YWxbIHR5cGUgXSB8fCB7fTsKLQotICAgICAgICAgICAgLy8gSWYgc2VsZWN0b3IgZGVmaW5lZCwg
ZGV0ZXJtaW5lIHNwZWNpYWwgZXZlbnQgYXBpIHR5cGUsIG90aGVyd2lzZSBnaXZlbiB0eXBlCi0g
ICAgICAgICAgICB0eXBlID0gKCBzZWxlY3RvciA/IHNwZWNpYWwuZGVsZWdhdGVUeXBlIDogc3Bl
Y2lhbC5iaW5kVHlwZSApIHx8IHR5cGU7Ci0KLSAgICAgICAgICAgIC8vIFVwZGF0ZSBzcGVjaWFs
IGJhc2VkIG9uIG5ld2x5IHJlc2V0IHR5cGUKLSAgICAgICAgICAgIHNwZWNpYWwgPSBqUXVlcnku
ZXZlbnQuc3BlY2lhbFsgdHlwZSBdIHx8IHt9OwotCi0gICAgICAgICAgICAvLyBoYW5kbGVPYmog
aXMgcGFzc2VkIHRvIGFsbCBldmVudCBoYW5kbGVycwotICAgICAgICAgICAgaGFuZGxlT2JqID0g
alF1ZXJ5LmV4dGVuZCh7Ci0gICAgICAgICAgICAgICAgdHlwZTogdHlwZSwKLSAgICAgICAgICAg
ICAgICBvcmlnVHlwZTogb3JpZ1R5cGUsCi0gICAgICAgICAgICAgICAgZGF0YTogZGF0YSwKLSAg
ICAgICAgICAgICAgICBoYW5kbGVyOiBoYW5kbGVyLAotICAgICAgICAgICAgICAgIGd1aWQ6IGhh
bmRsZXIuZ3VpZCwKLSAgICAgICAgICAgICAgICBzZWxlY3Rvcjogc2VsZWN0b3IsCi0gICAgICAg
ICAgICAgICAgbmVlZHNDb250ZXh0OiBzZWxlY3RvciAmJiBqUXVlcnkuZXhwci5tYXRjaC5uZWVk
c0NvbnRleHQudGVzdCggc2VsZWN0b3IgKSwKLSAgICAgICAgICAgICAgICBuYW1lc3BhY2U6IG5h
bWVzcGFjZXMuam9pbigiLiIpCi0gICAgICAgICAgICB9LCBoYW5kbGVPYmpJbiApOwotCi0gICAg
ICAgICAgICAvLyBJbml0IHRoZSBldmVudCBoYW5kbGVyIHF1ZXVlIGlmIHdlJ3JlIHRoZSBmaXJz
dAotICAgICAgICAgICAgaWYgKCAhKGhhbmRsZXJzID0gZXZlbnRzWyB0eXBlIF0pICkgewotICAg
ICAgICAgICAgICAgIGhhbmRsZXJzID0gZXZlbnRzWyB0eXBlIF0gPSBbXTsKLSAgICAgICAgICAg
ICAgICBoYW5kbGVycy5kZWxlZ2F0ZUNvdW50ID0gMDsKLQotICAgICAgICAgICAgICAgIC8vIE9u
bHkgdXNlIGFkZEV2ZW50TGlzdGVuZXIgaWYgdGhlIHNwZWNpYWwgZXZlbnRzIGhhbmRsZXIgcmV0
dXJucyBmYWxzZQotICAgICAgICAgICAgICAgIGlmICggIXNwZWNpYWwuc2V0dXAgfHwgc3BlY2lh
bC5zZXR1cC5jYWxsKCBlbGVtLCBkYXRhLCBuYW1lc3BhY2VzLCBldmVudEhhbmRsZSApID09PSBm
YWxzZSApIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCBlbGVtLmFkZEV2ZW50TGlzdGVuZXIg
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbGVtLmFkZEV2ZW50TGlzdGVuZXIoIHR5cGUs
IGV2ZW50SGFuZGxlLCBmYWxzZSApOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoIHNwZWNpYWwuYWRkICkg
ewotICAgICAgICAgICAgICAgIHNwZWNpYWwuYWRkLmNhbGwoIGVsZW0sIGhhbmRsZU9iaiApOwot
Ci0gICAgICAgICAgICAgICAgaWYgKCAhaGFuZGxlT2JqLmhhbmRsZXIuZ3VpZCApIHsKLSAgICAg
ICAgICAgICAgICAgICAgaGFuZGxlT2JqLmhhbmRsZXIuZ3VpZCA9IGhhbmRsZXIuZ3VpZDsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIEFkZCB0byB0
aGUgZWxlbWVudCdzIGhhbmRsZXIgbGlzdCwgZGVsZWdhdGVzIGluIGZyb250Ci0gICAgICAgICAg
ICBpZiAoIHNlbGVjdG9yICkgewotICAgICAgICAgICAgICAgIGhhbmRsZXJzLnNwbGljZSggaGFu
ZGxlcnMuZGVsZWdhdGVDb3VudCsrLCAwLCBoYW5kbGVPYmogKTsKLSAgICAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgaGFuZGxlcnMucHVzaCggaGFuZGxlT2JqICk7Ci0gICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgIC8vIEtlZXAgdHJhY2sgb2Ygd2hpY2ggZXZlbnRzIGhhdmUg
ZXZlciBiZWVuIHVzZWQsIGZvciBldmVudCBvcHRpbWl6YXRpb24KLSAgICAgICAgICAgIGpRdWVy
eS5ldmVudC5nbG9iYWxbIHR5cGUgXSA9IHRydWU7Ci0gICAgICAgIH0KLQotICAgIH0sCi0KLSAg
ICAvLyBEZXRhY2ggYW4gZXZlbnQgb3Igc2V0IG9mIGV2ZW50cyBmcm9tIGFuIGVsZW1lbnQKLSAg
ICByZW1vdmU6IGZ1bmN0aW9uKCBlbGVtLCB0eXBlcywgaGFuZGxlciwgc2VsZWN0b3IsIG1hcHBl
ZFR5cGVzICkgewotCi0gICAgICAgIHZhciBqLCBvcmlnQ291bnQsIHRtcCwKLSAgICAgICAgICAg
IGV2ZW50cywgdCwgaGFuZGxlT2JqLAotICAgICAgICAgICAgc3BlY2lhbCwgaGFuZGxlcnMsIHR5
cGUsIG5hbWVzcGFjZXMsIG9yaWdUeXBlLAotICAgICAgICAgICAgZWxlbURhdGEgPSBkYXRhX3By
aXYuaGFzRGF0YSggZWxlbSApICYmIGRhdGFfcHJpdi5nZXQoIGVsZW0gKTsKLQotICAgICAgICBp
ZiAoICFlbGVtRGF0YSB8fCAhKGV2ZW50cyA9IGVsZW1EYXRhLmV2ZW50cykgKSB7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBPbmNlIGZvciBlYWNoIHR5cGUu
bmFtZXNwYWNlIGluIHR5cGVzOyB0eXBlIG1heSBiZSBvbWl0dGVkCi0gICAgICAgIHR5cGVzID0g
KCB0eXBlcyB8fCAiIiApLm1hdGNoKCBybm90d2hpdGUgKSB8fCBbICIiIF07Ci0gICAgICAgIHQg
PSB0eXBlcy5sZW5ndGg7Ci0gICAgICAgIHdoaWxlICggdC0tICkgewotICAgICAgICAgICAgdG1w
ID0gcnR5cGVuYW1lc3BhY2UuZXhlYyggdHlwZXNbdF0gKSB8fCBbXTsKLSAgICAgICAgICAgIHR5
cGUgPSBvcmlnVHlwZSA9IHRtcFsxXTsKLSAgICAgICAgICAgIG5hbWVzcGFjZXMgPSAoIHRtcFsy
XSB8fCAiIiApLnNwbGl0KCAiLiIgKS5zb3J0KCk7Ci0KLSAgICAgICAgICAgIC8vIFVuYmluZCBh
bGwgZXZlbnRzIChvbiB0aGlzIG5hbWVzcGFjZSwgaWYgcHJvdmlkZWQpIGZvciB0aGUgZWxlbWVu
dAotICAgICAgICAgICAgaWYgKCAhdHlwZSApIHsKLSAgICAgICAgICAgICAgICBmb3IgKCB0eXBl
IGluIGV2ZW50cyApIHsKLSAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmV2ZW50LnJlbW92ZSgg
ZWxlbSwgdHlwZSArIHR5cGVzWyB0IF0sIGhhbmRsZXIsIHNlbGVjdG9yLCB0cnVlICk7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICBzcGVjaWFsID0galF1ZXJ5LmV2ZW50LnNwZWNpYWxbIHR5cGUgXSB8fCB7
fTsKLSAgICAgICAgICAgIHR5cGUgPSAoIHNlbGVjdG9yID8gc3BlY2lhbC5kZWxlZ2F0ZVR5cGUg
OiBzcGVjaWFsLmJpbmRUeXBlICkgfHwgdHlwZTsKLSAgICAgICAgICAgIGhhbmRsZXJzID0gZXZl
bnRzWyB0eXBlIF0gfHwgW107Ci0gICAgICAgICAgICB0bXAgPSB0bXBbMl0gJiYgbmV3IFJlZ0V4
cCggIihefFxcLikiICsgbmFtZXNwYWNlcy5qb2luKCJcXC4oPzouKlxcLnwpIikgKyAiKFxcLnwk
KSIgKTsKLQotICAgICAgICAgICAgLy8gUmVtb3ZlIG1hdGNoaW5nIGV2ZW50cwotICAgICAgICAg
ICAgb3JpZ0NvdW50ID0gaiA9IGhhbmRsZXJzLmxlbmd0aDsKLSAgICAgICAgICAgIHdoaWxlICgg
ai0tICkgewotICAgICAgICAgICAgICAgIGhhbmRsZU9iaiA9IGhhbmRsZXJzWyBqIF07Ci0KLSAg
ICAgICAgICAgICAgICBpZiAoICggbWFwcGVkVHlwZXMgfHwgb3JpZ1R5cGUgPT09IGhhbmRsZU9i
ai5vcmlnVHlwZSApICYmCi0gICAgICAgICAgICAgICAgICAgICggIWhhbmRsZXIgfHwgaGFuZGxl
ci5ndWlkID09PSBoYW5kbGVPYmouZ3VpZCApICYmCi0gICAgICAgICAgICAgICAgICAgICggIXRt
cCB8fCB0bXAudGVzdCggaGFuZGxlT2JqLm5hbWVzcGFjZSApICkgJiYKLSAgICAgICAgICAgICAg
ICAgICAgKCAhc2VsZWN0b3IgfHwgc2VsZWN0b3IgPT09IGhhbmRsZU9iai5zZWxlY3RvciB8fCBz
ZWxlY3RvciA9PT0gIioqIiAmJiBoYW5kbGVPYmouc2VsZWN0b3IgKSApIHsKLSAgICAgICAgICAg
ICAgICAgICAgaGFuZGxlcnMuc3BsaWNlKCBqLCAxICk7Ci0KLSAgICAgICAgICAgICAgICAgICAg
aWYgKCBoYW5kbGVPYmouc2VsZWN0b3IgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBoYW5k
bGVycy5kZWxlZ2F0ZUNvdW50LS07Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICAgICAgaWYgKCBzcGVjaWFsLnJlbW92ZSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHNwZWNpYWwucmVtb3ZlLmNhbGwoIGVsZW0sIGhhbmRsZU9iaiApOwotICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAv
LyBSZW1vdmUgZ2VuZXJpYyBldmVudCBoYW5kbGVyIGlmIHdlIHJlbW92ZWQgc29tZXRoaW5nIGFu
ZCBubyBtb3JlIGhhbmRsZXJzIGV4aXN0Ci0gICAgICAgICAgICAvLyAoYXZvaWRzIHBvdGVudGlh
bCBmb3IgZW5kbGVzcyByZWN1cnNpb24gZHVyaW5nIHJlbW92YWwgb2Ygc3BlY2lhbCBldmVudCBo
YW5kbGVycykKLSAgICAgICAgICAgIGlmICggb3JpZ0NvdW50ICYmICFoYW5kbGVycy5sZW5ndGgg
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKCAhc3BlY2lhbC50ZWFyZG93biB8fCBzcGVjaWFsLnRl
YXJkb3duLmNhbGwoIGVsZW0sIG5hbWVzcGFjZXMsIGVsZW1EYXRhLmhhbmRsZSApID09PSBmYWxz
ZSApIHsKLSAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LnJlbW92ZUV2ZW50KCBlbGVtLCB0eXBl
LCBlbGVtRGF0YS5oYW5kbGUgKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAg
ICBkZWxldGUgZXZlbnRzWyB0eXBlIF07Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAg
ICAgICAvLyBSZW1vdmUgdGhlIGV4cGFuZG8gaWYgaXQncyBubyBsb25nZXIgdXNlZAotICAgICAg
ICBpZiAoIGpRdWVyeS5pc0VtcHR5T2JqZWN0KCBldmVudHMgKSApIHsKLSAgICAgICAgICAgIGRl
bGV0ZSBlbGVtRGF0YS5oYW5kbGU7Ci0gICAgICAgICAgICBkYXRhX3ByaXYucmVtb3ZlKCBlbGVt
LCAiZXZlbnRzIiApOwotICAgICAgICB9Ci0gICAgfSwKLQotICAgIHRyaWdnZXI6IGZ1bmN0aW9u
KCBldmVudCwgZGF0YSwgZWxlbSwgb25seUhhbmRsZXJzICkgewotCi0gICAgICAgIHZhciBpLCBj
dXIsIHRtcCwgYnViYmxlVHlwZSwgb250eXBlLCBoYW5kbGUsIHNwZWNpYWwsCi0gICAgICAgICAg
ICBldmVudFBhdGggPSBbIGVsZW0gfHwgZG9jdW1lbnQgXSwKLSAgICAgICAgICAgIHR5cGUgPSBo
YXNPd24uY2FsbCggZXZlbnQsICJ0eXBlIiApID8gZXZlbnQudHlwZSA6IGV2ZW50LAotICAgICAg
ICAgICAgbmFtZXNwYWNlcyA9IGhhc093bi5jYWxsKCBldmVudCwgIm5hbWVzcGFjZSIgKSA/IGV2
ZW50Lm5hbWVzcGFjZS5zcGxpdCgiLiIpIDogW107Ci0KLSAgICAgICAgY3VyID0gdG1wID0gZWxl
bSA9IGVsZW0gfHwgZG9jdW1lbnQ7Ci0KLSAgICAgICAgLy8gRG9uJ3QgZG8gZXZlbnRzIG9uIHRl
eHQgYW5kIGNvbW1lbnQgbm9kZXMKLSAgICAgICAgaWYgKCBlbGVtLm5vZGVUeXBlID09PSAzIHx8
IGVsZW0ubm9kZVR5cGUgPT09IDggKSB7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LQotICAgICAgICAvLyBmb2N1cy9ibHVyIG1vcnBocyB0byBmb2N1c2luL291dDsgZW5zdXJlIHdl
J3JlIG5vdCBmaXJpbmcgdGhlbSByaWdodCBub3cKLSAgICAgICAgaWYgKCByZm9jdXNNb3JwaC50
ZXN0KCB0eXBlICsgalF1ZXJ5LmV2ZW50LnRyaWdnZXJlZCApICkgewotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCB0eXBlLmluZGV4T2YoIi4iKSA+PSAwICkg
ewotICAgICAgICAgICAgLy8gTmFtZXNwYWNlZCB0cmlnZ2VyOyBjcmVhdGUgYSByZWdleHAgdG8g
bWF0Y2ggZXZlbnQgdHlwZSBpbiBoYW5kbGUoKQotICAgICAgICAgICAgbmFtZXNwYWNlcyA9IHR5
cGUuc3BsaXQoIi4iKTsKLSAgICAgICAgICAgIHR5cGUgPSBuYW1lc3BhY2VzLnNoaWZ0KCk7Ci0g
ICAgICAgICAgICBuYW1lc3BhY2VzLnNvcnQoKTsKLSAgICAgICAgfQotICAgICAgICBvbnR5cGUg
PSB0eXBlLmluZGV4T2YoIjoiKSA8IDAgJiYgIm9uIiArIHR5cGU7Ci0KLSAgICAgICAgLy8gQ2Fs
bGVyIGNhbiBwYXNzIGluIGEgalF1ZXJ5LkV2ZW50IG9iamVjdCwgT2JqZWN0LCBvciBqdXN0IGFu
IGV2ZW50IHR5cGUgc3RyaW5nCi0gICAgICAgIGV2ZW50ID0gZXZlbnRbIGpRdWVyeS5leHBhbmRv
IF0gPwotICAgICAgICAgICAgZXZlbnQgOgotICAgICAgICAgICAgbmV3IGpRdWVyeS5FdmVudCgg
dHlwZSwgdHlwZW9mIGV2ZW50ID09PSAib2JqZWN0IiAmJiBldmVudCApOwotCi0gICAgICAgIC8v
IFRyaWdnZXIgYml0bWFzazogJiAxIGZvciBuYXRpdmUgaGFuZGxlcnM7ICYgMiBmb3IgalF1ZXJ5
IChhbHdheXMgdHJ1ZSkKLSAgICAgICAgZXZlbnQuaXNUcmlnZ2VyID0gb25seUhhbmRsZXJzID8g
MiA6IDM7Ci0gICAgICAgIGV2ZW50Lm5hbWVzcGFjZSA9IG5hbWVzcGFjZXMuam9pbigiLiIpOwot
ICAgICAgICBldmVudC5uYW1lc3BhY2VfcmUgPSBldmVudC5uYW1lc3BhY2UgPwotICAgICAgICAg
ICAgbmV3IFJlZ0V4cCggIihefFxcLikiICsgbmFtZXNwYWNlcy5qb2luKCJcXC4oPzouKlxcLnwp
IikgKyAiKFxcLnwkKSIgKSA6Ci0gICAgICAgICAgICBudWxsOwotCi0gICAgICAgIC8vIENsZWFu
IHVwIHRoZSBldmVudCBpbiBjYXNlIGl0IGlzIGJlaW5nIHJldXNlZAotICAgICAgICBldmVudC5y
ZXN1bHQgPSB1bmRlZmluZWQ7Ci0gICAgICAgIGlmICggIWV2ZW50LnRhcmdldCApIHsKLSAgICAg
ICAgICAgIGV2ZW50LnRhcmdldCA9IGVsZW07Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBDbG9u
ZSBhbnkgaW5jb21pbmcgZGF0YSBhbmQgcHJlcGVuZCB0aGUgZXZlbnQsIGNyZWF0aW5nIHRoZSBo
YW5kbGVyIGFyZyBsaXN0Ci0gICAgICAgIGRhdGEgPSBkYXRhID09IG51bGwgPwotICAgICAgICAg
ICAgWyBldmVudCBdIDoKLSAgICAgICAgICAgIGpRdWVyeS5tYWtlQXJyYXkoIGRhdGEsIFsgZXZl
bnQgXSApOwotCi0gICAgICAgIC8vIEFsbG93IHNwZWNpYWwgZXZlbnRzIHRvIGRyYXcgb3V0c2lk
ZSB0aGUgbGluZXMKLSAgICAgICAgc3BlY2lhbCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsWyB0eXBl
IF0gfHwge307Ci0gICAgICAgIGlmICggIW9ubHlIYW5kbGVycyAmJiBzcGVjaWFsLnRyaWdnZXIg
JiYgc3BlY2lhbC50cmlnZ2VyLmFwcGx5KCBlbGVtLCBkYXRhICkgPT09IGZhbHNlICkgewotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gRGV0ZXJtaW5lIGV2ZW50
IHByb3BhZ2F0aW9uIHBhdGggaW4gYWR2YW5jZSwgcGVyIFczQyBldmVudHMgc3BlYyAoIzk5NTEp
Ci0gICAgICAgIC8vIEJ1YmJsZSB1cCB0byBkb2N1bWVudCwgdGhlbiB0byB3aW5kb3c7IHdhdGNo
IGZvciBhIGdsb2JhbCBvd25lckRvY3VtZW50IHZhciAoIzk3MjQpCi0gICAgICAgIGlmICggIW9u
bHlIYW5kbGVycyAmJiAhc3BlY2lhbC5ub0J1YmJsZSAmJiAhalF1ZXJ5LmlzV2luZG93KCBlbGVt
ICkgKSB7Ci0KLSAgICAgICAgICAgIGJ1YmJsZVR5cGUgPSBzcGVjaWFsLmRlbGVnYXRlVHlwZSB8
fCB0eXBlOwotICAgICAgICAgICAgaWYgKCAhcmZvY3VzTW9ycGgudGVzdCggYnViYmxlVHlwZSAr
IHR5cGUgKSApIHsKLSAgICAgICAgICAgICAgICBjdXIgPSBjdXIucGFyZW50Tm9kZTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGZvciAoIDsgY3VyOyBjdXIgPSBjdXIucGFyZW50Tm9kZSAp
IHsKLSAgICAgICAgICAgICAgICBldmVudFBhdGgucHVzaCggY3VyICk7Ci0gICAgICAgICAgICAg
ICAgdG1wID0gY3VyOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBPbmx5IGFkZCB3
aW5kb3cgaWYgd2UgZ290IHRvIGRvY3VtZW50IChlLmcuLCBub3QgcGxhaW4gb2JqIG9yIGRldGFj
aGVkIERPTSkKLSAgICAgICAgICAgIGlmICggdG1wID09PSAoZWxlbS5vd25lckRvY3VtZW50IHx8
IGRvY3VtZW50KSApIHsKLSAgICAgICAgICAgICAgICBldmVudFBhdGgucHVzaCggdG1wLmRlZmF1
bHRWaWV3IHx8IHRtcC5wYXJlbnRXaW5kb3cgfHwgd2luZG93ICk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLQotICAgICAgICAvLyBGaXJlIGhhbmRsZXJzIG9uIHRoZSBldmVudCBwYXRoCi0g
ICAgICAgIGkgPSAwOwotICAgICAgICB3aGlsZSAoIChjdXIgPSBldmVudFBhdGhbaSsrXSkgJiYg
IWV2ZW50LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkgKSB7Ci0KLSAgICAgICAgICAgIGV2ZW50LnR5
cGUgPSBpID4gMSA/Ci0gICAgICAgICAgICAgICAgYnViYmxlVHlwZSA6Ci0gICAgICAgICAgICAg
ICAgc3BlY2lhbC5iaW5kVHlwZSB8fCB0eXBlOwotCi0gICAgICAgICAgICAvLyBqUXVlcnkgaGFu
ZGxlcgotICAgICAgICAgICAgaGFuZGxlID0gKCBkYXRhX3ByaXYuZ2V0KCBjdXIsICJldmVudHMi
ICkgfHwge30gKVsgZXZlbnQudHlwZSBdICYmIGRhdGFfcHJpdi5nZXQoIGN1ciwgImhhbmRsZSIg
KTsKLSAgICAgICAgICAgIGlmICggaGFuZGxlICkgewotICAgICAgICAgICAgICAgIGhhbmRsZS5h
cHBseSggY3VyLCBkYXRhICk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIE5hdGl2
ZSBoYW5kbGVyCi0gICAgICAgICAgICBoYW5kbGUgPSBvbnR5cGUgJiYgY3VyWyBvbnR5cGUgXTsK
LSAgICAgICAgICAgIGlmICggaGFuZGxlICYmIGhhbmRsZS5hcHBseSAmJiBqUXVlcnkuYWNjZXB0
RGF0YSggY3VyICkgKSB7Ci0gICAgICAgICAgICAgICAgZXZlbnQucmVzdWx0ID0gaGFuZGxlLmFw
cGx5KCBjdXIsIGRhdGEgKTsKLSAgICAgICAgICAgICAgICBpZiAoIGV2ZW50LnJlc3VsdCA9PT0g
ZmFsc2UgKSB7Ci0gICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGV2ZW50
LnR5cGUgPSB0eXBlOwotCi0gICAgICAgIC8vIElmIG5vYm9keSBwcmV2ZW50ZWQgdGhlIGRlZmF1
bHQgYWN0aW9uLCBkbyBpdCBub3cKLSAgICAgICAgaWYgKCAhb25seUhhbmRsZXJzICYmICFldmVu
dC5pc0RlZmF1bHRQcmV2ZW50ZWQoKSApIHsKLQotICAgICAgICAgICAgaWYgKCAoIXNwZWNpYWwu
X2RlZmF1bHQgfHwgc3BlY2lhbC5fZGVmYXVsdC5hcHBseSggZXZlbnRQYXRoLnBvcCgpLCBkYXRh
ICkgPT09IGZhbHNlKSAmJgotICAgICAgICAgICAgICAgIGpRdWVyeS5hY2NlcHREYXRhKCBlbGVt
ICkgKSB7Ci0KLSAgICAgICAgICAgICAgICAvLyBDYWxsIGEgbmF0aXZlIERPTSBtZXRob2Qgb24g
dGhlIHRhcmdldCB3aXRoIHRoZSBzYW1lIG5hbWUgbmFtZSBhcyB0aGUgZXZlbnQuCi0gICAgICAg
ICAgICAgICAgLy8gRG9uJ3QgZG8gZGVmYXVsdCBhY3Rpb25zIG9uIHdpbmRvdywgdGhhdCdzIHdo
ZXJlIGdsb2JhbCB2YXJpYWJsZXMgYmUgKCM2MTcwKQotICAgICAgICAgICAgICAgIGlmICggb250
eXBlICYmIGpRdWVyeS5pc0Z1bmN0aW9uKCBlbGVtWyB0eXBlIF0gKSAmJiAhalF1ZXJ5LmlzV2lu
ZG93KCBlbGVtICkgKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gRG9uJ3QgcmUtdHJpZ2dl
ciBhbiBvbkZPTyBldmVudCB3aGVuIHdlIGNhbGwgaXRzIEZPTygpIG1ldGhvZAotICAgICAgICAg
ICAgICAgICAgICB0bXAgPSBlbGVtWyBvbnR5cGUgXTsKLQotICAgICAgICAgICAgICAgICAgICBp
ZiAoIHRtcCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1bIG9udHlwZSBdID0gbnVs
bDsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIC8vIFByZXZl
bnQgcmUtdHJpZ2dlcmluZyBvZiB0aGUgc2FtZSBldmVudCwgc2luY2Ugd2UgYWxyZWFkeSBidWJi
bGVkIGl0IGFib3ZlCi0gICAgICAgICAgICAgICAgICAgIGpRdWVyeS5ldmVudC50cmlnZ2VyZWQg
PSB0eXBlOwotICAgICAgICAgICAgICAgICAgICBlbGVtWyB0eXBlIF0oKTsKLSAgICAgICAgICAg
ICAgICAgICAgalF1ZXJ5LmV2ZW50LnRyaWdnZXJlZCA9IHVuZGVmaW5lZDsKLQotICAgICAgICAg
ICAgICAgICAgICBpZiAoIHRtcCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1bIG9u
dHlwZSBdID0gdG1wOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGV2ZW50LnJlc3VsdDsK
LSAgICB9LAotCi0gICAgZGlzcGF0Y2g6IGZ1bmN0aW9uKCBldmVudCApIHsKLQotICAgICAgICAv
LyBNYWtlIGEgd3JpdGFibGUgalF1ZXJ5LkV2ZW50IGZyb20gdGhlIG5hdGl2ZSBldmVudCBvYmpl
Y3QKLSAgICAgICAgZXZlbnQgPSBqUXVlcnkuZXZlbnQuZml4KCBldmVudCApOwotCi0gICAgICAg
IHZhciBpLCBqLCByZXQsIG1hdGNoZWQsIGhhbmRsZU9iaiwKLSAgICAgICAgICAgIGhhbmRsZXJR
dWV1ZSA9IFtdLAotICAgICAgICAgICAgYXJncyA9IHNsaWNlLmNhbGwoIGFyZ3VtZW50cyApLAot
ICAgICAgICAgICAgaGFuZGxlcnMgPSAoIGRhdGFfcHJpdi5nZXQoIHRoaXMsICJldmVudHMiICkg
fHwge30gKVsgZXZlbnQudHlwZSBdIHx8IFtdLAotICAgICAgICAgICAgc3BlY2lhbCA9IGpRdWVy
eS5ldmVudC5zcGVjaWFsWyBldmVudC50eXBlIF0gfHwge307Ci0KLSAgICAgICAgLy8gVXNlIHRo
ZSBmaXgtZWQgalF1ZXJ5LkV2ZW50IHJhdGhlciB0aGFuIHRoZSAocmVhZC1vbmx5KSBuYXRpdmUg
ZXZlbnQKLSAgICAgICAgYXJnc1swXSA9IGV2ZW50OwotICAgICAgICBldmVudC5kZWxlZ2F0ZVRh
cmdldCA9IHRoaXM7Ci0KLSAgICAgICAgLy8gQ2FsbCB0aGUgcHJlRGlzcGF0Y2ggaG9vayBmb3Ig
dGhlIG1hcHBlZCB0eXBlLCBhbmQgbGV0IGl0IGJhaWwgaWYgZGVzaXJlZAotICAgICAgICBpZiAo
IHNwZWNpYWwucHJlRGlzcGF0Y2ggJiYgc3BlY2lhbC5wcmVEaXNwYXRjaC5jYWxsKCB0aGlzLCBl
dmVudCApID09PSBmYWxzZSApIHsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0g
ICAgICAgIC8vIERldGVybWluZSBoYW5kbGVycwotICAgICAgICBoYW5kbGVyUXVldWUgPSBqUXVl
cnkuZXZlbnQuaGFuZGxlcnMuY2FsbCggdGhpcywgZXZlbnQsIGhhbmRsZXJzICk7Ci0KLSAgICAg
ICAgLy8gUnVuIGRlbGVnYXRlcyBmaXJzdDsgdGhleSBtYXkgd2FudCB0byBzdG9wIHByb3BhZ2F0
aW9uIGJlbmVhdGggdXMKLSAgICAgICAgaSA9IDA7Ci0gICAgICAgIHdoaWxlICggKG1hdGNoZWQg
PSBoYW5kbGVyUXVldWVbIGkrKyBdKSAmJiAhZXZlbnQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSAp
IHsKLSAgICAgICAgICAgIGV2ZW50LmN1cnJlbnRUYXJnZXQgPSBtYXRjaGVkLmVsZW07Ci0KLSAg
ICAgICAgICAgIGogPSAwOwotICAgICAgICAgICAgd2hpbGUgKCAoaGFuZGxlT2JqID0gbWF0Y2hl
ZC5oYW5kbGVyc1sgaisrIF0pICYmICFldmVudC5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBl
ZCgpICkgewotCi0gICAgICAgICAgICAgICAgLy8gVHJpZ2dlcmVkIGV2ZW50IG11c3QgZWl0aGVy
IDEpIGhhdmUgbm8gbmFtZXNwYWNlLCBvcgotICAgICAgICAgICAgICAgIC8vIDIpIGhhdmUgbmFt
ZXNwYWNlKHMpIGEgc3Vic2V0IG9yIGVxdWFsIHRvIHRob3NlIGluIHRoZSBib3VuZCBldmVudCAo
Ym90aCBjYW4gaGF2ZSBubyBuYW1lc3BhY2UpLgotICAgICAgICAgICAgICAgIGlmICggIWV2ZW50
Lm5hbWVzcGFjZV9yZSB8fCBldmVudC5uYW1lc3BhY2VfcmUudGVzdCggaGFuZGxlT2JqLm5hbWVz
cGFjZSApICkgewotCi0gICAgICAgICAgICAgICAgICAgIGV2ZW50LmhhbmRsZU9iaiA9IGhhbmRs
ZU9iajsKLSAgICAgICAgICAgICAgICAgICAgZXZlbnQuZGF0YSA9IGhhbmRsZU9iai5kYXRhOwot
Ci0gICAgICAgICAgICAgICAgICAgIHJldCA9ICggKGpRdWVyeS5ldmVudC5zcGVjaWFsWyBoYW5k
bGVPYmoub3JpZ1R5cGUgXSB8fCB7fSkuaGFuZGxlIHx8IGhhbmRsZU9iai5oYW5kbGVyICkKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAuYXBwbHkoIG1hdGNoZWQuZWxlbSwgYXJncyApOwot
Ci0gICAgICAgICAgICAgICAgICAgIGlmICggcmV0ICE9PSB1bmRlZmluZWQgKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoIChldmVudC5yZXN1bHQgPSByZXQpID09PSBmYWxzZSApIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLy8gQ2FsbCB0aGUgcG9z
dERpc3BhdGNoIGhvb2sgZm9yIHRoZSBtYXBwZWQgdHlwZQotICAgICAgICBpZiAoIHNwZWNpYWwu
cG9zdERpc3BhdGNoICkgewotICAgICAgICAgICAgc3BlY2lhbC5wb3N0RGlzcGF0Y2guY2FsbCgg
dGhpcywgZXZlbnQgKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBldmVudC5yZXN1bHQ7
Ci0gICAgfSwKLQotICAgIGhhbmRsZXJzOiBmdW5jdGlvbiggZXZlbnQsIGhhbmRsZXJzICkgewot
ICAgICAgICB2YXIgaSwgbWF0Y2hlcywgc2VsLCBoYW5kbGVPYmosCi0gICAgICAgICAgICBoYW5k
bGVyUXVldWUgPSBbXSwKLSAgICAgICAgICAgIGRlbGVnYXRlQ291bnQgPSBoYW5kbGVycy5kZWxl
Z2F0ZUNvdW50LAotICAgICAgICAgICAgY3VyID0gZXZlbnQudGFyZ2V0OwotCi0gICAgICAgIC8v
IEZpbmQgZGVsZWdhdGUgaGFuZGxlcnMKLSAgICAgICAgLy8gQmxhY2staG9sZSBTVkcgPHVzZT4g
aW5zdGFuY2UgdHJlZXMgKCMxMzE4MCkKLSAgICAgICAgLy8gQXZvaWQgbm9uLWxlZnQtY2xpY2sg
YnViYmxpbmcgaW4gRmlyZWZveCAoIzM4NjEpCi0gICAgICAgIGlmICggZGVsZWdhdGVDb3VudCAm
JiBjdXIubm9kZVR5cGUgJiYgKCFldmVudC5idXR0b24gfHwgZXZlbnQudHlwZSAhPT0gImNsaWNr
IikgKSB7Ci0KLSAgICAgICAgICAgIGZvciAoIDsgY3VyICE9PSB0aGlzOyBjdXIgPSBjdXIucGFy
ZW50Tm9kZSB8fCB0aGlzICkgewotCi0gICAgICAgICAgICAgICAgLy8gRG9uJ3QgcHJvY2VzcyBj
bGlja3Mgb24gZGlzYWJsZWQgZWxlbWVudHMgKCM2OTExLCAjODE2NSwgIzExMzgyLCAjMTE3NjQp
Ci0gICAgICAgICAgICAgICAgaWYgKCBjdXIuZGlzYWJsZWQgIT09IHRydWUgfHwgZXZlbnQudHlw
ZSAhPT0gImNsaWNrIiApIHsKLSAgICAgICAgICAgICAgICAgICAgbWF0Y2hlcyA9IFtdOwotICAg
ICAgICAgICAgICAgICAgICBmb3IgKCBpID0gMDsgaSA8IGRlbGVnYXRlQ291bnQ7IGkrKyApIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZU9iaiA9IGhhbmRsZXJzWyBpIF07Ci0KLSAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIERvbid0IGNvbmZsaWN0IHdpdGggT2JqZWN0LnByb3Rv
dHlwZSBwcm9wZXJ0aWVzICgjMTMyMDMpCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWwgPSBo
YW5kbGVPYmouc2VsZWN0b3IgKyAiICI7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICgg
bWF0Y2hlc1sgc2VsIF0gPT09IHVuZGVmaW5lZCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtYXRjaGVzWyBzZWwgXSA9IGhhbmRsZU9iai5uZWVkc0NvbnRleHQgPwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoIHNlbCwgdGhpcyApLmluZGV4KCBjdXIgKSA+
PSAwIDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmZpbmQoIHNlbCwg
dGhpcywgbnVsbCwgWyBjdXIgXSApLmxlbmd0aDsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgICAgICAgIGlmICggbWF0Y2hlc1sgc2VsIF0gKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlcy5wdXNoKCBoYW5kbGVPYmogKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
ICAgICBpZiAoIG1hdGNoZXMubGVuZ3RoICkgewotICAgICAgICAgICAgICAgICAgICAgICAgaGFu
ZGxlclF1ZXVlLnB1c2goeyBlbGVtOiBjdXIsIGhhbmRsZXJzOiBtYXRjaGVzIH0pOwotICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0KLSAgICAgICAgLy8gQWRkIHRoZSByZW1haW5pbmcgKGRpcmVjdGx5LWJvdW5kKSBoYW5k
bGVycwotICAgICAgICBpZiAoIGRlbGVnYXRlQ291bnQgPCBoYW5kbGVycy5sZW5ndGggKSB7Ci0g
ICAgICAgICAgICBoYW5kbGVyUXVldWUucHVzaCh7IGVsZW06IHRoaXMsIGhhbmRsZXJzOiBoYW5k
bGVycy5zbGljZSggZGVsZWdhdGVDb3VudCApIH0pOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0
dXJuIGhhbmRsZXJRdWV1ZTsKLSAgICB9LAotCi0gICAgLy8gSW5jbHVkZXMgc29tZSBldmVudCBw
cm9wcyBzaGFyZWQgYnkgS2V5RXZlbnQgYW5kIE1vdXNlRXZlbnQKLSAgICBwcm9wczogImFsdEtl
eSBidWJibGVzIGNhbmNlbGFibGUgY3RybEtleSBjdXJyZW50VGFyZ2V0IGV2ZW50UGhhc2UgbWV0
YUtleSByZWxhdGVkVGFyZ2V0IHNoaWZ0S2V5IHRhcmdldCB0aW1lU3RhbXAgdmlldyB3aGljaCIu
c3BsaXQoIiAiKSwKLQotICAgIGZpeEhvb2tzOiB7fSwKLQotICAgIGtleUhvb2tzOiB7Ci0gICAg
ICAgIHByb3BzOiAiY2hhciBjaGFyQ29kZSBrZXkga2V5Q29kZSIuc3BsaXQoIiAiKSwKLSAgICAg
ICAgZmlsdGVyOiBmdW5jdGlvbiggZXZlbnQsIG9yaWdpbmFsICkgewotCi0gICAgICAgICAgICAv
LyBBZGQgd2hpY2ggZm9yIGtleSBldmVudHMKLSAgICAgICAgICAgIGlmICggZXZlbnQud2hpY2gg
PT0gbnVsbCApIHsKLSAgICAgICAgICAgICAgICBldmVudC53aGljaCA9IG9yaWdpbmFsLmNoYXJD
b2RlICE9IG51bGwgPyBvcmlnaW5hbC5jaGFyQ29kZSA6IG9yaWdpbmFsLmtleUNvZGU7Ci0gICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgIHJldHVybiBldmVudDsKLSAgICAgICAgfQotICAgIH0s
Ci0KLSAgICBtb3VzZUhvb2tzOiB7Ci0gICAgICAgIHByb3BzOiAiYnV0dG9uIGJ1dHRvbnMgY2xp
ZW50WCBjbGllbnRZIG9mZnNldFggb2Zmc2V0WSBwYWdlWCBwYWdlWSBzY3JlZW5YIHNjcmVlblkg
dG9FbGVtZW50Ii5zcGxpdCgiICIpLAotICAgICAgICBmaWx0ZXI6IGZ1bmN0aW9uKCBldmVudCwg
b3JpZ2luYWwgKSB7Ci0gICAgICAgICAgICB2YXIgZXZlbnREb2MsIGRvYywgYm9keSwKLSAgICAg
ICAgICAgICAgICBidXR0b24gPSBvcmlnaW5hbC5idXR0b247Ci0KLSAgICAgICAgICAgIC8vIENh
bGN1bGF0ZSBwYWdlWC9ZIGlmIG1pc3NpbmcgYW5kIGNsaWVudFgvWSBhdmFpbGFibGUKLSAgICAg
ICAgICAgIGlmICggZXZlbnQucGFnZVggPT0gbnVsbCAmJiBvcmlnaW5hbC5jbGllbnRYICE9IG51
bGwgKSB7Ci0gICAgICAgICAgICAgICAgZXZlbnREb2MgPSBldmVudC50YXJnZXQub3duZXJEb2N1
bWVudCB8fCBkb2N1bWVudDsKLSAgICAgICAgICAgICAgICBkb2MgPSBldmVudERvYy5kb2N1bWVu
dEVsZW1lbnQ7Ci0gICAgICAgICAgICAgICAgYm9keSA9IGV2ZW50RG9jLmJvZHk7Ci0KLSAgICAg
ICAgICAgICAgICBldmVudC5wYWdlWCA9IG9yaWdpbmFsLmNsaWVudFggKyAoIGRvYyAmJiBkb2Mu
c2Nyb2xsTGVmdCB8fCBib2R5ICYmIGJvZHkuc2Nyb2xsTGVmdCB8fCAwICkgLSAoIGRvYyAmJiBk
b2MuY2xpZW50TGVmdCB8fCBib2R5ICYmIGJvZHkuY2xpZW50TGVmdCB8fCAwICk7Ci0gICAgICAg
ICAgICAgICAgZXZlbnQucGFnZVkgPSBvcmlnaW5hbC5jbGllbnRZICsgKCBkb2MgJiYgZG9jLnNj
cm9sbFRvcCAgfHwgYm9keSAmJiBib2R5LnNjcm9sbFRvcCAgfHwgMCApIC0gKCBkb2MgJiYgZG9j
LmNsaWVudFRvcCAgfHwgYm9keSAmJiBib2R5LmNsaWVudFRvcCAgfHwgMCApOwotICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICAvLyBBZGQgd2hpY2ggZm9yIGNsaWNrOiAxID09PSBsZWZ0OyAy
ID09PSBtaWRkbGU7IDMgPT09IHJpZ2h0Ci0gICAgICAgICAgICAvLyBOb3RlOiBidXR0b24gaXMg
bm90IG5vcm1hbGl6ZWQsIHNvIGRvbid0IHVzZSBpdAotICAgICAgICAgICAgaWYgKCAhZXZlbnQu
d2hpY2ggJiYgYnV0dG9uICE9PSB1bmRlZmluZWQgKSB7Ci0gICAgICAgICAgICAgICAgZXZlbnQu
d2hpY2ggPSAoIGJ1dHRvbiAmIDEgPyAxIDogKCBidXR0b24gJiAyID8gMyA6ICggYnV0dG9uICYg
NCA/IDIgOiAwICkgKSApOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICByZXR1cm4gZXZl
bnQ7Ci0gICAgICAgIH0KLSAgICB9LAotCi0gICAgZml4OiBmdW5jdGlvbiggZXZlbnQgKSB7Ci0g
ICAgICAgIGlmICggZXZlbnRbIGpRdWVyeS5leHBhbmRvIF0gKSB7Ci0gICAgICAgICAgICByZXR1
cm4gZXZlbnQ7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBDcmVhdGUgYSB3cml0YWJsZSBjb3B5
IG9mIHRoZSBldmVudCBvYmplY3QgYW5kIG5vcm1hbGl6ZSBzb21lIHByb3BlcnRpZXMKLSAgICAg
ICAgdmFyIGksIHByb3AsIGNvcHksCi0gICAgICAgICAgICB0eXBlID0gZXZlbnQudHlwZSwKLSAg
ICAgICAgICAgIG9yaWdpbmFsRXZlbnQgPSBldmVudCwKLSAgICAgICAgICAgIGZpeEhvb2sgPSB0
aGlzLmZpeEhvb2tzWyB0eXBlIF07Ci0KLSAgICAgICAgaWYgKCAhZml4SG9vayApIHsKLSAgICAg
ICAgICAgIHRoaXMuZml4SG9va3NbIHR5cGUgXSA9IGZpeEhvb2sgPQotICAgICAgICAgICAgICAg
IHJtb3VzZUV2ZW50LnRlc3QoIHR5cGUgKSA/IHRoaXMubW91c2VIb29rcyA6Ci0gICAgICAgICAg
ICAgICAgcmtleUV2ZW50LnRlc3QoIHR5cGUgKSA/IHRoaXMua2V5SG9va3MgOgotICAgICAgICAg
ICAgICAgIHt9OwotICAgICAgICB9Ci0gICAgICAgIGNvcHkgPSBmaXhIb29rLnByb3BzID8gdGhp
cy5wcm9wcy5jb25jYXQoIGZpeEhvb2sucHJvcHMgKSA6IHRoaXMucHJvcHM7Ci0KLSAgICAgICAg
ZXZlbnQgPSBuZXcgalF1ZXJ5LkV2ZW50KCBvcmlnaW5hbEV2ZW50ICk7Ci0KLSAgICAgICAgaSA9
IGNvcHkubGVuZ3RoOwotICAgICAgICB3aGlsZSAoIGktLSApIHsKLSAgICAgICAgICAgIHByb3Ag
PSBjb3B5WyBpIF07Ci0gICAgICAgICAgICBldmVudFsgcHJvcCBdID0gb3JpZ2luYWxFdmVudFsg
cHJvcCBdOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gU3VwcG9ydDogQ29yZG92YSAyLjUgKFdl
YktpdCkgKCMxMzI1NSkKLSAgICAgICAgLy8gQWxsIGV2ZW50cyBzaG91bGQgaGF2ZSBhIHRhcmdl
dDsgQ29yZG92YSBkZXZpY2VyZWFkeSBkb2Vzbid0Ci0gICAgICAgIGlmICggIWV2ZW50LnRhcmdl
dCApIHsKLSAgICAgICAgICAgIGV2ZW50LnRhcmdldCA9IGRvY3VtZW50OwotICAgICAgICB9Ci0K
LSAgICAgICAgLy8gU3VwcG9ydDogU2FmYXJpIDYuMCssIENocm9tZSA8IDI4Ci0gICAgICAgIC8v
IFRhcmdldCBzaG91bGQgbm90IGJlIGEgdGV4dCBub2RlICgjNTA0LCAjMTMxNDMpCi0gICAgICAg
IGlmICggZXZlbnQudGFyZ2V0Lm5vZGVUeXBlID09PSAzICkgewotICAgICAgICAgICAgZXZlbnQu
dGFyZ2V0ID0gZXZlbnQudGFyZ2V0LnBhcmVudE5vZGU7Ci0gICAgICAgIH0KLQotICAgICAgICBy
ZXR1cm4gZml4SG9vay5maWx0ZXIgPyBmaXhIb29rLmZpbHRlciggZXZlbnQsIG9yaWdpbmFsRXZl
bnQgKSA6IGV2ZW50OwotICAgIH0sCi0KLSAgICBzcGVjaWFsOiB7Ci0gICAgICAgIGxvYWQ6IHsK
LSAgICAgICAgICAgIC8vIFByZXZlbnQgdHJpZ2dlcmVkIGltYWdlLmxvYWQgZXZlbnRzIGZyb20g
YnViYmxpbmcgdG8gd2luZG93LmxvYWQKLSAgICAgICAgICAgIG5vQnViYmxlOiB0cnVlCi0gICAg
ICAgIH0sCi0gICAgICAgIGZvY3VzOiB7Ci0gICAgICAgICAgICAvLyBGaXJlIG5hdGl2ZSBldmVu
dCBpZiBwb3NzaWJsZSBzbyBibHVyL2ZvY3VzIHNlcXVlbmNlIGlzIGNvcnJlY3QKLSAgICAgICAg
ICAgIHRyaWdnZXI6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIGlmICggdGhpcyAhPT0g
c2FmZUFjdGl2ZUVsZW1lbnQoKSAmJiB0aGlzLmZvY3VzICkgewotICAgICAgICAgICAgICAgICAg
ICB0aGlzLmZvY3VzKCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgZGVsZWdhdGVUeXBlOiAi
Zm9jdXNpbiIKLSAgICAgICAgfSwKLSAgICAgICAgYmx1cjogewotICAgICAgICAgICAgdHJpZ2dl
cjogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCB0aGlzID09PSBzYWZlQWN0aXZl
RWxlbWVudCgpICYmIHRoaXMuYmx1ciApIHsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5ibHVy
KCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgZGVsZWdhdGVUeXBlOiAiZm9jdXNvdXQiCi0g
ICAgICAgIH0sCi0gICAgICAgIGNsaWNrOiB7Ci0gICAgICAgICAgICAvLyBGb3IgY2hlY2tib3gs
IGZpcmUgbmF0aXZlIGV2ZW50IHNvIGNoZWNrZWQgc3RhdGUgd2lsbCBiZSByaWdodAotICAgICAg
ICAgICAgdHJpZ2dlcjogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCB0aGlzLnR5
cGUgPT09ICJjaGVja2JveCIgJiYgdGhpcy5jbGljayAmJiBqUXVlcnkubm9kZU5hbWUoIHRoaXMs
ICJpbnB1dCIgKSApIHsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5jbGljaygpOwotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgfSwKLQotICAgICAgICAgICAgLy8gRm9yIGNyb3NzLWJyb3dzZXIgY29uc2lzdGVuY3ksIGRv
bid0IGZpcmUgbmF0aXZlIC5jbGljaygpIG9uIGxpbmtzCi0gICAgICAgICAgICBfZGVmYXVsdDog
ZnVuY3Rpb24oIGV2ZW50ICkgewotICAgICAgICAgICAgICAgIHJldHVybiBqUXVlcnkubm9kZU5h
bWUoIGV2ZW50LnRhcmdldCwgImEiICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0sCi0KLSAg
ICAgICAgYmVmb3JldW5sb2FkOiB7Ci0gICAgICAgICAgICBwb3N0RGlzcGF0Y2g6IGZ1bmN0aW9u
KCBldmVudCApIHsKLQotICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6IEZpcmVmb3ggMjArCi0g
ICAgICAgICAgICAgICAgLy8gRmlyZWZveCBkb2Vzbid0IGFsZXJ0IGlmIHRoZSByZXR1cm5WYWx1
ZSBmaWVsZCBpcyBub3Qgc2V0LgotICAgICAgICAgICAgICAgIGlmICggZXZlbnQucmVzdWx0ICE9
PSB1bmRlZmluZWQgKSB7Ci0gICAgICAgICAgICAgICAgICAgIGV2ZW50Lm9yaWdpbmFsRXZlbnQu
cmV0dXJuVmFsdWUgPSBldmVudC5yZXN1bHQ7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgfSwKLQotICAgIHNpbXVsYXRlOiBmdW5jdGlvbiggdHlwZSwg
ZWxlbSwgZXZlbnQsIGJ1YmJsZSApIHsKLSAgICAgICAgLy8gUGlnZ3liYWNrIG9uIGEgZG9ub3Ig
ZXZlbnQgdG8gc2ltdWxhdGUgYSBkaWZmZXJlbnQgb25lLgotICAgICAgICAvLyBGYWtlIG9yaWdp
bmFsRXZlbnQgdG8gYXZvaWQgZG9ub3IncyBzdG9wUHJvcGFnYXRpb24sIGJ1dCBpZiB0aGUKLSAg
ICAgICAgLy8gc2ltdWxhdGVkIGV2ZW50IHByZXZlbnRzIGRlZmF1bHQgdGhlbiB3ZSBkbyB0aGUg
c2FtZSBvbiB0aGUgZG9ub3IuCi0gICAgICAgIHZhciBlID0galF1ZXJ5LmV4dGVuZCgKLSAgICAg
ICAgICAgIG5ldyBqUXVlcnkuRXZlbnQoKSwKLSAgICAgICAgICAgIGV2ZW50LAotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIHR5cGU6IHR5cGUsCi0gICAgICAgICAgICAgICAgaXNTaW11
bGF0ZWQ6IHRydWUsCi0gICAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDoge30KLSAgICAgICAg
ICAgIH0KLSAgICAgICAgKTsKLSAgICAgICAgaWYgKCBidWJibGUgKSB7Ci0gICAgICAgICAgICBq
UXVlcnkuZXZlbnQudHJpZ2dlciggZSwgbnVsbCwgZWxlbSApOwotICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgalF1ZXJ5LmV2ZW50LmRpc3BhdGNoLmNhbGwoIGVsZW0sIGUgKTsKLSAgICAg
ICAgfQotICAgICAgICBpZiAoIGUuaXNEZWZhdWx0UHJldmVudGVkKCkgKSB7Ci0gICAgICAgICAg
ICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwotICAgICAgICB9Ci0gICAgfQotfTsKLQotalF1ZXJ5
LnJlbW92ZUV2ZW50ID0gZnVuY3Rpb24oIGVsZW0sIHR5cGUsIGhhbmRsZSApIHsKLSAgICBpZiAo
IGVsZW0ucmVtb3ZlRXZlbnRMaXN0ZW5lciApIHsKLSAgICAgICAgZWxlbS5yZW1vdmVFdmVudExp
c3RlbmVyKCB0eXBlLCBoYW5kbGUsIGZhbHNlICk7Ci0gICAgfQotfTsKLQotalF1ZXJ5LkV2ZW50
ID0gZnVuY3Rpb24oIHNyYywgcHJvcHMgKSB7Ci0gICAgLy8gQWxsb3cgaW5zdGFudGlhdGlvbiB3
aXRob3V0IHRoZSAnbmV3JyBrZXl3b3JkCi0gICAgaWYgKCAhKHRoaXMgaW5zdGFuY2VvZiBqUXVl
cnkuRXZlbnQpICkgewotICAgICAgICByZXR1cm4gbmV3IGpRdWVyeS5FdmVudCggc3JjLCBwcm9w
cyApOwotICAgIH0KLQotICAgIC8vIEV2ZW50IG9iamVjdAotICAgIGlmICggc3JjICYmIHNyYy50
eXBlICkgewotICAgICAgICB0aGlzLm9yaWdpbmFsRXZlbnQgPSBzcmM7Ci0gICAgICAgIHRoaXMu
dHlwZSA9IHNyYy50eXBlOwotCi0gICAgICAgIC8vIEV2ZW50cyBidWJibGluZyB1cCB0aGUgZG9j
dW1lbnQgbWF5IGhhdmUgYmVlbiBtYXJrZWQgYXMgcHJldmVudGVkCi0gICAgICAgIC8vIGJ5IGEg
aGFuZGxlciBsb3dlciBkb3duIHRoZSB0cmVlOyByZWZsZWN0IHRoZSBjb3JyZWN0IHZhbHVlLgot
ICAgICAgICB0aGlzLmlzRGVmYXVsdFByZXZlbnRlZCA9IHNyYy5kZWZhdWx0UHJldmVudGVkIHx8
Ci0gICAgICAgICAgICAgICAgLy8gU3VwcG9ydDogQW5kcm9pZCA8IDQuMAotICAgICAgICAgICAg
ICAgIHNyYy5kZWZhdWx0UHJldmVudGVkID09PSB1bmRlZmluZWQgJiYKLSAgICAgICAgICAgICAg
ICBzcmMuZ2V0UHJldmVudERlZmF1bHQgJiYgc3JjLmdldFByZXZlbnREZWZhdWx0KCkgPwotICAg
ICAgICAgICAgcmV0dXJuVHJ1ZSA6Ci0gICAgICAgICAgICByZXR1cm5GYWxzZTsKLQotICAgIC8v
IEV2ZW50IHR5cGUKLSAgICB9IGVsc2UgewotICAgICAgICB0aGlzLnR5cGUgPSBzcmM7Ci0gICAg
fQotCi0gICAgLy8gUHV0IGV4cGxpY2l0bHkgcHJvdmlkZWQgcHJvcGVydGllcyBvbnRvIHRoZSBl
dmVudCBvYmplY3QKLSAgICBpZiAoIHByb3BzICkgewotICAgICAgICBqUXVlcnkuZXh0ZW5kKCB0
aGlzLCBwcm9wcyApOwotICAgIH0KLQotICAgIC8vIENyZWF0ZSBhIHRpbWVzdGFtcCBpZiBpbmNv
bWluZyBldmVudCBkb2Vzbid0IGhhdmUgb25lCi0gICAgdGhpcy50aW1lU3RhbXAgPSBzcmMgJiYg
c3JjLnRpbWVTdGFtcCB8fCBqUXVlcnkubm93KCk7Ci0KLSAgICAvLyBNYXJrIGl0IGFzIGZpeGVk
Ci0gICAgdGhpc1sgalF1ZXJ5LmV4cGFuZG8gXSA9IHRydWU7Ci19OwotCi0vLyBqUXVlcnkuRXZl
bnQgaXMgYmFzZWQgb24gRE9NMyBFdmVudHMgYXMgc3BlY2lmaWVkIGJ5IHRoZSBFQ01BU2NyaXB0
IExhbmd1YWdlIEJpbmRpbmcKLS8vIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDMvV0QtRE9NLUxl
dmVsLTMtRXZlbnRzLTIwMDMwMzMxL2VjbWEtc2NyaXB0LWJpbmRpbmcuaHRtbAotalF1ZXJ5LkV2
ZW50LnByb3RvdHlwZSA9IHsKLSAgICBpc0RlZmF1bHRQcmV2ZW50ZWQ6IHJldHVybkZhbHNlLAot
ICAgIGlzUHJvcGFnYXRpb25TdG9wcGVkOiByZXR1cm5GYWxzZSwKLSAgICBpc0ltbWVkaWF0ZVBy
b3BhZ2F0aW9uU3RvcHBlZDogcmV0dXJuRmFsc2UsCi0KLSAgICBwcmV2ZW50RGVmYXVsdDogZnVu
Y3Rpb24oKSB7Ci0gICAgICAgIHZhciBlID0gdGhpcy5vcmlnaW5hbEV2ZW50OwotCi0gICAgICAg
IHRoaXMuaXNEZWZhdWx0UHJldmVudGVkID0gcmV0dXJuVHJ1ZTsKLQotICAgICAgICBpZiAoIGUg
JiYgZS5wcmV2ZW50RGVmYXVsdCApIHsKLSAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsK
LSAgICAgICAgfQotICAgIH0sCi0gICAgc3RvcFByb3BhZ2F0aW9uOiBmdW5jdGlvbigpIHsKLSAg
ICAgICAgdmFyIGUgPSB0aGlzLm9yaWdpbmFsRXZlbnQ7Ci0KLSAgICAgICAgdGhpcy5pc1Byb3Bh
Z2F0aW9uU3RvcHBlZCA9IHJldHVyblRydWU7Ci0KLSAgICAgICAgaWYgKCBlICYmIGUuc3RvcFBy
b3BhZ2F0aW9uICkgewotICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKLSAgICAgICAg
fQotICAgIH0sCi0gICAgc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uOiBmdW5jdGlvbigpIHsKLSAg
ICAgICAgdGhpcy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCA9IHJldHVyblRydWU7Ci0g
ICAgICAgIHRoaXMuc3RvcFByb3BhZ2F0aW9uKCk7Ci0gICAgfQotfTsKLQotLy8gQ3JlYXRlIG1v
dXNlZW50ZXIvbGVhdmUgZXZlbnRzIHVzaW5nIG1vdXNlb3Zlci9vdXQgYW5kIGV2ZW50LXRpbWUg
Y2hlY2tzCi0vLyBTdXBwb3J0OiBDaHJvbWUgMTUrCi1qUXVlcnkuZWFjaCh7Ci0gICAgbW91c2Vl
bnRlcjogIm1vdXNlb3ZlciIsCi0gICAgbW91c2VsZWF2ZTogIm1vdXNlb3V0IgotfSwgZnVuY3Rp
b24oIG9yaWcsIGZpeCApIHsKLSAgICBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgb3JpZyBdID0gewot
ICAgICAgICBkZWxlZ2F0ZVR5cGU6IGZpeCwKLSAgICAgICAgYmluZFR5cGU6IGZpeCwKLQotICAg
ICAgICBoYW5kbGU6IGZ1bmN0aW9uKCBldmVudCApIHsKLSAgICAgICAgICAgIHZhciByZXQsCi0g
ICAgICAgICAgICAgICAgdGFyZ2V0ID0gdGhpcywKLSAgICAgICAgICAgICAgICByZWxhdGVkID0g
ZXZlbnQucmVsYXRlZFRhcmdldCwKLSAgICAgICAgICAgICAgICBoYW5kbGVPYmogPSBldmVudC5o
YW5kbGVPYmo7Ci0KLSAgICAgICAgICAgIC8vIEZvciBtb3VzZW50ZXIvbGVhdmUgY2FsbCB0aGUg
aGFuZGxlciBpZiByZWxhdGVkIGlzIG91dHNpZGUgdGhlIHRhcmdldC4KLSAgICAgICAgICAgIC8v
IE5COiBObyByZWxhdGVkVGFyZ2V0IGlmIHRoZSBtb3VzZSBsZWZ0L2VudGVyZWQgdGhlIGJyb3dz
ZXIgd2luZG93Ci0gICAgICAgICAgICBpZiAoICFyZWxhdGVkIHx8IChyZWxhdGVkICE9PSB0YXJn
ZXQgJiYgIWpRdWVyeS5jb250YWlucyggdGFyZ2V0LCByZWxhdGVkICkpICkgewotICAgICAgICAg
ICAgICAgIGV2ZW50LnR5cGUgPSBoYW5kbGVPYmoub3JpZ1R5cGU7Ci0gICAgICAgICAgICAgICAg
cmV0ID0gaGFuZGxlT2JqLmhhbmRsZXIuYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApOwotICAgICAg
ICAgICAgICAgIGV2ZW50LnR5cGUgPSBmaXg7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBy
ZXR1cm4gcmV0OwotICAgICAgICB9Ci0gICAgfTsKLX0pOwotCi0vLyBDcmVhdGUgImJ1YmJsaW5n
IiBmb2N1cyBhbmQgYmx1ciBldmVudHMKLS8vIFN1cHBvcnQ6IEZpcmVmb3gsIENocm9tZSwgU2Fm
YXJpCi1pZiAoICFzdXBwb3J0LmZvY3VzaW5CdWJibGVzICkgewotICAgIGpRdWVyeS5lYWNoKHsg
Zm9jdXM6ICJmb2N1c2luIiwgYmx1cjogImZvY3Vzb3V0IiB9LCBmdW5jdGlvbiggb3JpZywgZml4
ICkgewotCi0gICAgICAgIC8vIEF0dGFjaCBhIHNpbmdsZSBjYXB0dXJpbmcgaGFuZGxlciBvbiB0
aGUgZG9jdW1lbnQgd2hpbGUgc29tZW9uZSB3YW50cyBmb2N1c2luL2ZvY3Vzb3V0Ci0gICAgICAg
IHZhciBoYW5kbGVyID0gZnVuY3Rpb24oIGV2ZW50ICkgewotICAgICAgICAgICAgICAgIGpRdWVy
eS5ldmVudC5zaW11bGF0ZSggZml4LCBldmVudC50YXJnZXQsIGpRdWVyeS5ldmVudC5maXgoIGV2
ZW50ICksIHRydWUgKTsKLSAgICAgICAgICAgIH07Ci0KLSAgICAgICAgalF1ZXJ5LmV2ZW50LnNw
ZWNpYWxbIGZpeCBdID0gewotICAgICAgICAgICAgc2V0dXA6IGZ1bmN0aW9uKCkgewotICAgICAg
ICAgICAgICAgIHZhciBkb2MgPSB0aGlzLm93bmVyRG9jdW1lbnQgfHwgdGhpcywKLSAgICAgICAg
ICAgICAgICAgICAgYXR0YWNoZXMgPSBkYXRhX3ByaXYuYWNjZXNzKCBkb2MsIGZpeCApOwotCi0g
ICAgICAgICAgICAgICAgaWYgKCAhYXR0YWNoZXMgKSB7Ci0gICAgICAgICAgICAgICAgICAgIGRv
Yy5hZGRFdmVudExpc3RlbmVyKCBvcmlnLCBoYW5kbGVyLCB0cnVlICk7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIGRhdGFfcHJpdi5hY2Nlc3MoIGRvYywgZml4LCAoIGF0dGFj
aGVzIHx8IDAgKSArIDEgKTsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICB0ZWFyZG93bjog
ZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGRvYyA9IHRoaXMub3duZXJEb2N1bWVu
dCB8fCB0aGlzLAotICAgICAgICAgICAgICAgICAgICBhdHRhY2hlcyA9IGRhdGFfcHJpdi5hY2Nl
c3MoIGRvYywgZml4ICkgLSAxOwotCi0gICAgICAgICAgICAgICAgaWYgKCAhYXR0YWNoZXMgKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGRvYy5yZW1vdmVFdmVudExpc3RlbmVyKCBvcmlnLCBoYW5k
bGVyLCB0cnVlICk7Ci0gICAgICAgICAgICAgICAgICAgIGRhdGFfcHJpdi5yZW1vdmUoIGRvYywg
Zml4ICk7Ci0KLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBk
YXRhX3ByaXYuYWNjZXNzKCBkb2MsIGZpeCwgYXR0YWNoZXMgKTsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0gICAgfSk7Ci19Ci0KLWpRdWVyeS5mbi5leHRl
bmQoewotCi0gICAgb246IGZ1bmN0aW9uKCB0eXBlcywgc2VsZWN0b3IsIGRhdGEsIGZuLCAvKklO
VEVSTkFMKi8gb25lICkgewotICAgICAgICB2YXIgb3JpZ0ZuLCB0eXBlOwotCi0gICAgICAgIC8v
IFR5cGVzIGNhbiBiZSBhIG1hcCBvZiB0eXBlcy9oYW5kbGVycwotICAgICAgICBpZiAoIHR5cGVv
ZiB0eXBlcyA9PT0gIm9iamVjdCIgKSB7Ci0gICAgICAgICAgICAvLyAoIHR5cGVzLU9iamVjdCwg
c2VsZWN0b3IsIGRhdGEgKQotICAgICAgICAgICAgaWYgKCB0eXBlb2Ygc2VsZWN0b3IgIT09ICJz
dHJpbmciICkgewotICAgICAgICAgICAgICAgIC8vICggdHlwZXMtT2JqZWN0LCBkYXRhICkKLSAg
ICAgICAgICAgICAgICBkYXRhID0gZGF0YSB8fCBzZWxlY3RvcjsKLSAgICAgICAgICAgICAgICBz
ZWxlY3RvciA9IHVuZGVmaW5lZDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZvciAoIHR5
cGUgaW4gdHlwZXMgKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5vbiggdHlwZSwgc2VsZWN0b3Is
IGRhdGEsIHR5cGVzWyB0eXBlIF0sIG9uZSApOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
cmV0dXJuIHRoaXM7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIGRhdGEgPT0gbnVsbCAmJiBm
biA9PSBudWxsICkgewotICAgICAgICAgICAgLy8gKCB0eXBlcywgZm4gKQotICAgICAgICAgICAg
Zm4gPSBzZWxlY3RvcjsKLSAgICAgICAgICAgIGRhdGEgPSBzZWxlY3RvciA9IHVuZGVmaW5lZDsK
LSAgICAgICAgfSBlbHNlIGlmICggZm4gPT0gbnVsbCApIHsKLSAgICAgICAgICAgIGlmICggdHlw
ZW9mIHNlbGVjdG9yID09PSAic3RyaW5nIiApIHsKLSAgICAgICAgICAgICAgICAvLyAoIHR5cGVz
LCBzZWxlY3RvciwgZm4gKQotICAgICAgICAgICAgICAgIGZuID0gZGF0YTsKLSAgICAgICAgICAg
ICAgICBkYXRhID0gdW5kZWZpbmVkOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAvLyAoIHR5cGVzLCBkYXRhLCBmbiApCi0gICAgICAgICAgICAgICAgZm4gPSBkYXRhOwot
ICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxlY3RvcjsKLSAgICAgICAgICAgICAgICBzZWxlY3Rv
ciA9IHVuZGVmaW5lZDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAoIGZu
ID09PSBmYWxzZSApIHsKLSAgICAgICAgICAgIGZuID0gcmV0dXJuRmFsc2U7Ci0gICAgICAgIH0g
ZWxzZSBpZiAoICFmbiApIHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzOwotICAgICAgICB9Ci0K
LSAgICAgICAgaWYgKCBvbmUgPT09IDEgKSB7Ci0gICAgICAgICAgICBvcmlnRm4gPSBmbjsKLSAg
ICAgICAgICAgIGZuID0gZnVuY3Rpb24oIGV2ZW50ICkgewotICAgICAgICAgICAgICAgIC8vIENh
biB1c2UgYW4gZW1wdHkgc2V0LCBzaW5jZSBldmVudCBjb250YWlucyB0aGUgaW5mbwotICAgICAg
ICAgICAgICAgIGpRdWVyeSgpLm9mZiggZXZlbnQgKTsKLSAgICAgICAgICAgICAgICByZXR1cm4g
b3JpZ0ZuLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKTsKLSAgICAgICAgICAgIH07Ci0gICAgICAg
ICAgICAvLyBVc2Ugc2FtZSBndWlkIHNvIGNhbGxlciBjYW4gcmVtb3ZlIHVzaW5nIG9yaWdGbgot
ICAgICAgICAgICAgZm4uZ3VpZCA9IG9yaWdGbi5ndWlkIHx8ICggb3JpZ0ZuLmd1aWQgPSBqUXVl
cnkuZ3VpZCsrICk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rp
b24oKSB7Ci0gICAgICAgICAgICBqUXVlcnkuZXZlbnQuYWRkKCB0aGlzLCB0eXBlcywgZm4sIGRh
dGEsIHNlbGVjdG9yICk7Ci0gICAgICAgIH0pOwotICAgIH0sCi0gICAgb25lOiBmdW5jdGlvbigg
dHlwZXMsIHNlbGVjdG9yLCBkYXRhLCBmbiApIHsKLSAgICAgICAgcmV0dXJuIHRoaXMub24oIHR5
cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4sIDEgKTsKLSAgICB9LAotICAgIG9mZjogZnVuY3Rpb24o
IHR5cGVzLCBzZWxlY3RvciwgZm4gKSB7Ci0gICAgICAgIHZhciBoYW5kbGVPYmosIHR5cGU7Ci0g
ICAgICAgIGlmICggdHlwZXMgJiYgdHlwZXMucHJldmVudERlZmF1bHQgJiYgdHlwZXMuaGFuZGxl
T2JqICkgewotICAgICAgICAgICAgLy8gKCBldmVudCApICBkaXNwYXRjaGVkIGpRdWVyeS5FdmVu
dAotICAgICAgICAgICAgaGFuZGxlT2JqID0gdHlwZXMuaGFuZGxlT2JqOwotICAgICAgICAgICAg
alF1ZXJ5KCB0eXBlcy5kZWxlZ2F0ZVRhcmdldCApLm9mZigKLSAgICAgICAgICAgICAgICBoYW5k
bGVPYmoubmFtZXNwYWNlID8gaGFuZGxlT2JqLm9yaWdUeXBlICsgIi4iICsgaGFuZGxlT2JqLm5h
bWVzcGFjZSA6IGhhbmRsZU9iai5vcmlnVHlwZSwKLSAgICAgICAgICAgICAgICBoYW5kbGVPYmou
c2VsZWN0b3IsCi0gICAgICAgICAgICAgICAgaGFuZGxlT2JqLmhhbmRsZXIKLSAgICAgICAgICAg
ICk7Ci0gICAgICAgICAgICByZXR1cm4gdGhpczsKLSAgICAgICAgfQotICAgICAgICBpZiAoIHR5
cGVvZiB0eXBlcyA9PT0gIm9iamVjdCIgKSB7Ci0gICAgICAgICAgICAvLyAoIHR5cGVzLW9iamVj
dCBbLCBzZWxlY3Rvcl0gKQotICAgICAgICAgICAgZm9yICggdHlwZSBpbiB0eXBlcyApIHsKLSAg
ICAgICAgICAgICAgICB0aGlzLm9mZiggdHlwZSwgc2VsZWN0b3IsIHR5cGVzWyB0eXBlIF0gKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiB0aGlzOwotICAgICAgICB9Ci0gICAg
ICAgIGlmICggc2VsZWN0b3IgPT09IGZhbHNlIHx8IHR5cGVvZiBzZWxlY3RvciA9PT0gImZ1bmN0
aW9uIiApIHsKLSAgICAgICAgICAgIC8vICggdHlwZXMgWywgZm5dICkKLSAgICAgICAgICAgIGZu
ID0gc2VsZWN0b3I7Ci0gICAgICAgICAgICBzZWxlY3RvciA9IHVuZGVmaW5lZDsKLSAgICAgICAg
fQotICAgICAgICBpZiAoIGZuID09PSBmYWxzZSApIHsKLSAgICAgICAgICAgIGZuID0gcmV0dXJu
RmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHsK
LSAgICAgICAgICAgIGpRdWVyeS5ldmVudC5yZW1vdmUoIHRoaXMsIHR5cGVzLCBmbiwgc2VsZWN0
b3IgKTsKLSAgICAgICAgfSk7Ci0gICAgfSwKLQotICAgIHRyaWdnZXI6IGZ1bmN0aW9uKCB0eXBl
LCBkYXRhICkgewotICAgICAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewotICAgICAg
ICAgICAgalF1ZXJ5LmV2ZW50LnRyaWdnZXIoIHR5cGUsIGRhdGEsIHRoaXMgKTsKLSAgICAgICAg
fSk7Ci0gICAgfSwKLSAgICB0cmlnZ2VySGFuZGxlcjogZnVuY3Rpb24oIHR5cGUsIGRhdGEgKSB7
Ci0gICAgICAgIHZhciBlbGVtID0gdGhpc1swXTsKLSAgICAgICAgaWYgKCBlbGVtICkgewotICAg
ICAgICAgICAgcmV0dXJuIGpRdWVyeS5ldmVudC50cmlnZ2VyKCB0eXBlLCBkYXRhLCBlbGVtLCB0
cnVlICk7Ci0gICAgICAgIH0KLSAgICB9Ci19KTsKLQotCi12YXIKLSAgICByeGh0bWxUYWcgPSAv
PCg/IWFyZWF8YnJ8Y29sfGVtYmVkfGhyfGltZ3xpbnB1dHxsaW5rfG1ldGF8cGFyYW0pKChbXHc6
XSspW14+XSopXC8+L2dpLAotICAgIHJ0YWdOYW1lID0gLzwoW1x3Ol0rKS8sCi0gICAgcmh0bWwg
PSAvPHwmIz9cdys7LywKLSAgICBybm9Jbm5lcmh0bWwgPSAvPCg/OnNjcmlwdHxzdHlsZXxsaW5r
KS9pLAotICAgIC8vIGNoZWNrZWQ9ImNoZWNrZWQiIG9yIGNoZWNrZWQKLSAgICByY2hlY2tlZCA9
IC9jaGVja2VkXHMqKD86W149XXw9XHMqLmNoZWNrZWQuKS9pLAotICAgIHJzY3JpcHRUeXBlID0g
L14kfFwvKD86amF2YXxlY21hKXNjcmlwdC9pLAotICAgIHJzY3JpcHRUeXBlTWFza2VkID0gL150
cnVlXC8oLiopLywKLSAgICByY2xlYW5TY3JpcHQgPSAvXlxzKjwhKD86XFtDREFUQVxbfC0tKXwo
PzpcXVxdfC0tKT5ccyokL2csCi0KLSAgICAvLyBXZSBoYXZlIHRvIGNsb3NlIHRoZXNlIHRhZ3Mg
dG8gc3VwcG9ydCBYSFRNTCAoIzEzMjAwKQotICAgIHdyYXBNYXAgPSB7Ci0KLSAgICAgICAgLy8g
U3VwcG9ydDogSUUgOQotICAgICAgICBvcHRpb246IFsgMSwgIjxzZWxlY3QgbXVsdGlwbGU9J211
bHRpcGxlJz4iLCAiPC9zZWxlY3Q+IiBdLAotCi0gICAgICAgIHRoZWFkOiBbIDEsICI8dGFibGU+
IiwgIjwvdGFibGU+IiBdLAotICAgICAgICBjb2w6IFsgMiwgIjx0YWJsZT48Y29sZ3JvdXA+Iiwg
IjwvY29sZ3JvdXA+PC90YWJsZT4iIF0sCi0gICAgICAgIHRyOiBbIDIsICI8dGFibGU+PHRib2R5
PiIsICI8L3Rib2R5PjwvdGFibGU+IiBdLAotICAgICAgICB0ZDogWyAzLCAiPHRhYmxlPjx0Ym9k
eT48dHI+IiwgIjwvdHI+PC90Ym9keT48L3RhYmxlPiIgXSwKLQotICAgICAgICBfZGVmYXVsdDog
WyAwLCAiIiwgIiIgXQotICAgIH07Ci0KLS8vIFN1cHBvcnQ6IElFIDkKLXdyYXBNYXAub3B0Z3Jv
dXAgPSB3cmFwTWFwLm9wdGlvbjsKLQotd3JhcE1hcC50Ym9keSA9IHdyYXBNYXAudGZvb3QgPSB3
cmFwTWFwLmNvbGdyb3VwID0gd3JhcE1hcC5jYXB0aW9uID0gd3JhcE1hcC50aGVhZDsKLXdyYXBN
YXAudGggPSB3cmFwTWFwLnRkOwotCi0vLyBTdXBwb3J0OiAxLnggY29tcGF0aWJpbGl0eQotLy8g
TWFuaXB1bGF0aW5nIHRhYmxlcyByZXF1aXJlcyBhIHRib2R5Ci1mdW5jdGlvbiBtYW5pcHVsYXRp
b25UYXJnZXQoIGVsZW0sIGNvbnRlbnQgKSB7Ci0gICAgcmV0dXJuIGpRdWVyeS5ub2RlTmFtZSgg
ZWxlbSwgInRhYmxlIiApICYmCi0gICAgICAgIGpRdWVyeS5ub2RlTmFtZSggY29udGVudC5ub2Rl
VHlwZSAhPT0gMTEgPyBjb250ZW50IDogY29udGVudC5maXJzdENoaWxkLCAidHIiICkgPwotCi0g
ICAgICAgIGVsZW0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRib2R5IilbMF0gfHwKLSAgICAgICAg
ICAgIGVsZW0uYXBwZW5kQ2hpbGQoIGVsZW0ub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0
Ym9keSIpICkgOgotICAgICAgICBlbGVtOwotfQotCi0vLyBSZXBsYWNlL3Jlc3RvcmUgdGhlIHR5
cGUgYXR0cmlidXRlIG9mIHNjcmlwdCBlbGVtZW50cyBmb3Igc2FmZSBET00gbWFuaXB1bGF0aW9u
Ci1mdW5jdGlvbiBkaXNhYmxlU2NyaXB0KCBlbGVtICkgewotICAgIGVsZW0udHlwZSA9IChlbGVt
LmdldEF0dHJpYnV0ZSgidHlwZSIpICE9PSBudWxsKSArICIvIiArIGVsZW0udHlwZTsKLSAgICBy
ZXR1cm4gZWxlbTsKLX0KLWZ1bmN0aW9uIHJlc3RvcmVTY3JpcHQoIGVsZW0gKSB7Ci0gICAgdmFy
IG1hdGNoID0gcnNjcmlwdFR5cGVNYXNrZWQuZXhlYyggZWxlbS50eXBlICk7Ci0KLSAgICBpZiAo
IG1hdGNoICkgewotICAgICAgICBlbGVtLnR5cGUgPSBtYXRjaFsgMSBdOwotICAgIH0gZWxzZSB7
Ci0gICAgICAgIGVsZW0ucmVtb3ZlQXR0cmlidXRlKCJ0eXBlIik7Ci0gICAgfQotCi0gICAgcmV0
dXJuIGVsZW07Ci19Ci0KLS8vIE1hcmsgc2NyaXB0cyBhcyBoYXZpbmcgYWxyZWFkeSBiZWVuIGV2
YWx1YXRlZAotZnVuY3Rpb24gc2V0R2xvYmFsRXZhbCggZWxlbXMsIHJlZkVsZW1lbnRzICkgewot
ICAgIHZhciBpID0gMCwKLSAgICAgICAgbCA9IGVsZW1zLmxlbmd0aDsKLQotICAgIGZvciAoIDsg
aSA8IGw7IGkrKyApIHsKLSAgICAgICAgZGF0YV9wcml2LnNldCgKLSAgICAgICAgICAgIGVsZW1z
WyBpIF0sICJnbG9iYWxFdmFsIiwgIXJlZkVsZW1lbnRzIHx8IGRhdGFfcHJpdi5nZXQoIHJlZkVs
ZW1lbnRzWyBpIF0sICJnbG9iYWxFdmFsIiApCi0gICAgICAgICk7Ci0gICAgfQotfQotCi1mdW5j
dGlvbiBjbG9uZUNvcHlFdmVudCggc3JjLCBkZXN0ICkgewotICAgIHZhciBpLCBsLCB0eXBlLCBw
ZGF0YU9sZCwgcGRhdGFDdXIsIHVkYXRhT2xkLCB1ZGF0YUN1ciwgZXZlbnRzOwotCi0gICAgaWYg
KCBkZXN0Lm5vZGVUeXBlICE9PSAxICkgewotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
Ly8gMS4gQ29weSBwcml2YXRlIGRhdGE6IGV2ZW50cywgaGFuZGxlcnMsIGV0Yy4KLSAgICBpZiAo
IGRhdGFfcHJpdi5oYXNEYXRhKCBzcmMgKSApIHsKLSAgICAgICAgcGRhdGFPbGQgPSBkYXRhX3By
aXYuYWNjZXNzKCBzcmMgKTsKLSAgICAgICAgcGRhdGFDdXIgPSBkYXRhX3ByaXYuc2V0KCBkZXN0
LCBwZGF0YU9sZCApOwotICAgICAgICBldmVudHMgPSBwZGF0YU9sZC5ldmVudHM7Ci0KLSAgICAg
ICAgaWYgKCBldmVudHMgKSB7Ci0gICAgICAgICAgICBkZWxldGUgcGRhdGFDdXIuaGFuZGxlOwot
ICAgICAgICAgICAgcGRhdGFDdXIuZXZlbnRzID0ge307Ci0KLSAgICAgICAgICAgIGZvciAoIHR5
cGUgaW4gZXZlbnRzICkgewotICAgICAgICAgICAgICAgIGZvciAoIGkgPSAwLCBsID0gZXZlbnRz
WyB0eXBlIF0ubGVuZ3RoOyBpIDwgbDsgaSsrICkgewotICAgICAgICAgICAgICAgICAgICBqUXVl
cnkuZXZlbnQuYWRkKCBkZXN0LCB0eXBlLCBldmVudHNbIHR5cGUgXVsgaSBdICk7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gMi4g
Q29weSB1c2VyIGRhdGEKLSAgICBpZiAoIGRhdGFfdXNlci5oYXNEYXRhKCBzcmMgKSApIHsKLSAg
ICAgICAgdWRhdGFPbGQgPSBkYXRhX3VzZXIuYWNjZXNzKCBzcmMgKTsKLSAgICAgICAgdWRhdGFD
dXIgPSBqUXVlcnkuZXh0ZW5kKCB7fSwgdWRhdGFPbGQgKTsKLQotICAgICAgICBkYXRhX3VzZXIu
c2V0KCBkZXN0LCB1ZGF0YUN1ciApOwotICAgIH0KLX0KLQotZnVuY3Rpb24gZ2V0QWxsKCBjb250
ZXh0LCB0YWcgKSB7Ci0gICAgdmFyIHJldCA9IGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUg
PyBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lKCB0YWcgfHwgIioiICkgOgotICAgICAgICAg
ICAgY29udGV4dC5xdWVyeVNlbGVjdG9yQWxsID8gY29udGV4dC5xdWVyeVNlbGVjdG9yQWxsKCB0
YWcgfHwgIioiICkgOgotICAgICAgICAgICAgW107Ci0KLSAgICByZXR1cm4gdGFnID09PSB1bmRl
ZmluZWQgfHwgdGFnICYmIGpRdWVyeS5ub2RlTmFtZSggY29udGV4dCwgdGFnICkgPwotICAgICAg
ICBqUXVlcnkubWVyZ2UoIFsgY29udGV4dCBdLCByZXQgKSA6Ci0gICAgICAgIHJldDsKLX0KLQot
Ly8gU3VwcG9ydDogSUUgPj0gOQotZnVuY3Rpb24gZml4SW5wdXQoIHNyYywgZGVzdCApIHsKLSAg
ICB2YXIgbm9kZU5hbWUgPSBkZXN0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7Ci0KLSAgICAvLyBG
YWlscyB0byBwZXJzaXN0IHRoZSBjaGVja2VkIHN0YXRlIG9mIGEgY2xvbmVkIGNoZWNrYm94IG9y
IHJhZGlvIGJ1dHRvbi4KLSAgICBpZiAoIG5vZGVOYW1lID09PSAiaW5wdXQiICYmIHJjaGVja2Fi
bGVUeXBlLnRlc3QoIHNyYy50eXBlICkgKSB7Ci0gICAgICAgIGRlc3QuY2hlY2tlZCA9IHNyYy5j
aGVja2VkOwotCi0gICAgLy8gRmFpbHMgdG8gcmV0dXJuIHRoZSBzZWxlY3RlZCBvcHRpb24gdG8g
dGhlIGRlZmF1bHQgc2VsZWN0ZWQgc3RhdGUgd2hlbiBjbG9uaW5nIG9wdGlvbnMKLSAgICB9IGVs
c2UgaWYgKCBub2RlTmFtZSA9PT0gImlucHV0IiB8fCBub2RlTmFtZSA9PT0gInRleHRhcmVhIiAp
IHsKLSAgICAgICAgZGVzdC5kZWZhdWx0VmFsdWUgPSBzcmMuZGVmYXVsdFZhbHVlOwotICAgIH0K
LX0KLQotalF1ZXJ5LmV4dGVuZCh7Ci0gICAgY2xvbmU6IGZ1bmN0aW9uKCBlbGVtLCBkYXRhQW5k
RXZlbnRzLCBkZWVwRGF0YUFuZEV2ZW50cyApIHsKLSAgICAgICAgdmFyIGksIGwsIHNyY0VsZW1l
bnRzLCBkZXN0RWxlbWVudHMsCi0gICAgICAgICAgICBjbG9uZSA9IGVsZW0uY2xvbmVOb2RlKCB0
cnVlICksCi0gICAgICAgICAgICBpblBhZ2UgPSBqUXVlcnkuY29udGFpbnMoIGVsZW0ub3duZXJE
b2N1bWVudCwgZWxlbSApOwotCi0gICAgICAgIC8vIFN1cHBvcnQ6IElFID49IDkKLSAgICAgICAg
Ly8gRml4IENsb25pbmcgaXNzdWVzCi0gICAgICAgIGlmICggIXN1cHBvcnQubm9DbG9uZUNoZWNr
ZWQgJiYgKCBlbGVtLm5vZGVUeXBlID09PSAxIHx8IGVsZW0ubm9kZVR5cGUgPT09IDExICkgJiYK
LSAgICAgICAgICAgICAgICAhalF1ZXJ5LmlzWE1MRG9jKCBlbGVtICkgKSB7Ci0KLSAgICAgICAg
ICAgIC8vIFdlIGVzY2hldyBTaXp6bGUgaGVyZSBmb3IgcGVyZm9ybWFuY2UgcmVhc29uczogaHR0
cDovL2pzcGVyZi5jb20vZ2V0YWxsLXZzLXNpenpsZS8yCi0gICAgICAgICAgICBkZXN0RWxlbWVu
dHMgPSBnZXRBbGwoIGNsb25lICk7Ci0gICAgICAgICAgICBzcmNFbGVtZW50cyA9IGdldEFsbCgg
ZWxlbSApOwotCi0gICAgICAgICAgICBmb3IgKCBpID0gMCwgbCA9IHNyY0VsZW1lbnRzLmxlbmd0
aDsgaSA8IGw7IGkrKyApIHsKLSAgICAgICAgICAgICAgICBmaXhJbnB1dCggc3JjRWxlbWVudHNb
IGkgXSwgZGVzdEVsZW1lbnRzWyBpIF0gKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0g
ICAgICAgIC8vIENvcHkgdGhlIGV2ZW50cyBmcm9tIHRoZSBvcmlnaW5hbCB0byB0aGUgY2xvbmUK
LSAgICAgICAgaWYgKCBkYXRhQW5kRXZlbnRzICkgewotICAgICAgICAgICAgaWYgKCBkZWVwRGF0
YUFuZEV2ZW50cyApIHsKLSAgICAgICAgICAgICAgICBzcmNFbGVtZW50cyA9IHNyY0VsZW1lbnRz
IHx8IGdldEFsbCggZWxlbSApOwotICAgICAgICAgICAgICAgIGRlc3RFbGVtZW50cyA9IGRlc3RF
bGVtZW50cyB8fCBnZXRBbGwoIGNsb25lICk7Ci0KLSAgICAgICAgICAgICAgICBmb3IgKCBpID0g
MCwgbCA9IHNyY0VsZW1lbnRzLmxlbmd0aDsgaSA8IGw7IGkrKyApIHsKLSAgICAgICAgICAgICAg
ICAgICAgY2xvbmVDb3B5RXZlbnQoIHNyY0VsZW1lbnRzWyBpIF0sIGRlc3RFbGVtZW50c1sgaSBd
ICk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICBjbG9uZUNvcHlFdmVudCggZWxlbSwgY2xvbmUgKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotCi0gICAgICAgIC8vIFByZXNlcnZlIHNjcmlwdCBldmFsdWF0aW9uIGhpc3RvcnkKLSAg
ICAgICAgZGVzdEVsZW1lbnRzID0gZ2V0QWxsKCBjbG9uZSwgInNjcmlwdCIgKTsKLSAgICAgICAg
aWYgKCBkZXN0RWxlbWVudHMubGVuZ3RoID4gMCApIHsKLSAgICAgICAgICAgIHNldEdsb2JhbEV2
YWwoIGRlc3RFbGVtZW50cywgIWluUGFnZSAmJiBnZXRBbGwoIGVsZW0sICJzY3JpcHQiICkgKTsK
LSAgICAgICAgfQotCi0gICAgICAgIC8vIFJldHVybiB0aGUgY2xvbmVkIHNldAotICAgICAgICBy
ZXR1cm4gY2xvbmU7Ci0gICAgfSwKLQotICAgIGJ1aWxkRnJhZ21lbnQ6IGZ1bmN0aW9uKCBlbGVt
cywgY29udGV4dCwgc2NyaXB0cywgc2VsZWN0aW9uICkgewotICAgICAgICB2YXIgZWxlbSwgdG1w
LCB0YWcsIHdyYXAsIGNvbnRhaW5zLCBqLAotICAgICAgICAgICAgZnJhZ21lbnQgPSBjb250ZXh0
LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSwKLSAgICAgICAgICAgIG5vZGVzID0gW10sCi0gICAg
ICAgICAgICBpID0gMCwKLSAgICAgICAgICAgIGwgPSBlbGVtcy5sZW5ndGg7Ci0KLSAgICAgICAg
Zm9yICggOyBpIDwgbDsgaSsrICkgewotICAgICAgICAgICAgZWxlbSA9IGVsZW1zWyBpIF07Ci0K
LSAgICAgICAgICAgIGlmICggZWxlbSB8fCBlbGVtID09PSAwICkgewotCi0gICAgICAgICAgICAg
ICAgLy8gQWRkIG5vZGVzIGRpcmVjdGx5Ci0gICAgICAgICAgICAgICAgaWYgKCBqUXVlcnkudHlw
ZSggZWxlbSApID09PSAib2JqZWN0IiApIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gU3VwcG9y
dDogUXRXZWJLaXQKLSAgICAgICAgICAgICAgICAgICAgLy8galF1ZXJ5Lm1lcmdlIGJlY2F1c2Ug
cHVzaC5hcHBseShfLCBhcnJheWxpa2UpIHRocm93cwotICAgICAgICAgICAgICAgICAgICBqUXVl
cnkubWVyZ2UoIG5vZGVzLCBlbGVtLm5vZGVUeXBlID8gWyBlbGVtIF0gOiBlbGVtICk7Ci0KLSAg
ICAgICAgICAgICAgICAvLyBDb252ZXJ0IG5vbi1odG1sIGludG8gYSB0ZXh0IG5vZGUKLSAgICAg
ICAgICAgICAgICB9IGVsc2UgaWYgKCAhcmh0bWwudGVzdCggZWxlbSApICkgewotICAgICAgICAg
ICAgICAgICAgICBub2Rlcy5wdXNoKCBjb250ZXh0LmNyZWF0ZVRleHROb2RlKCBlbGVtICkgKTsK
LQotICAgICAgICAgICAgICAgIC8vIENvbnZlcnQgaHRtbCBpbnRvIERPTSBub2RlcwotICAgICAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHRtcCA9IHRtcCB8fCBmcmFn
bWVudC5hcHBlbmRDaGlsZCggY29udGV4dC5jcmVhdGVFbGVtZW50KCJkaXYiKSApOwotCi0gICAg
ICAgICAgICAgICAgICAgIC8vIERlc2VyaWFsaXplIGEgc3RhbmRhcmQgcmVwcmVzZW50YXRpb24K
LSAgICAgICAgICAgICAgICAgICAgdGFnID0gKCBydGFnTmFtZS5leGVjKCBlbGVtICkgfHwgWyAi
IiwgIiIgXSApWyAxIF0udG9Mb3dlckNhc2UoKTsKLSAgICAgICAgICAgICAgICAgICAgd3JhcCA9
IHdyYXBNYXBbIHRhZyBdIHx8IHdyYXBNYXAuX2RlZmF1bHQ7Ci0gICAgICAgICAgICAgICAgICAg
IHRtcC5pbm5lckhUTUwgPSB3cmFwWyAxIF0gKyBlbGVtLnJlcGxhY2UoIHJ4aHRtbFRhZywgIjwk
MT48LyQyPiIgKSArIHdyYXBbIDIgXTsKLQotICAgICAgICAgICAgICAgICAgICAvLyBEZXNjZW5k
IHRocm91Z2ggd3JhcHBlcnMgdG8gdGhlIHJpZ2h0IGNvbnRlbnQKLSAgICAgICAgICAgICAgICAg
ICAgaiA9IHdyYXBbIDAgXTsKLSAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCBqLS0gKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSB0bXAubGFzdENoaWxkOwotICAgICAgICAgICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gU3VwcG9ydDogUXRXZWJLaXQKLSAg
ICAgICAgICAgICAgICAgICAgLy8galF1ZXJ5Lm1lcmdlIGJlY2F1c2UgcHVzaC5hcHBseShfLCBh
cnJheWxpa2UpIHRocm93cwotICAgICAgICAgICAgICAgICAgICBqUXVlcnkubWVyZ2UoIG5vZGVz
LCB0bXAuY2hpbGROb2RlcyApOwotCi0gICAgICAgICAgICAgICAgICAgIC8vIFJlbWVtYmVyIHRo
ZSB0b3AtbGV2ZWwgY29udGFpbmVyCi0gICAgICAgICAgICAgICAgICAgIHRtcCA9IGZyYWdtZW50
LmZpcnN0Q2hpbGQ7Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gRml4ZXMgIzEyMzQ2Ci0gICAg
ICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6IFdlYmtpdCwgSUUKLSAgICAgICAgICAgICAgICAg
ICAgdG1wLnRleHRDb250ZW50ID0gIiI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0KLSAgICAgICAgLy8gUmVtb3ZlIHdyYXBwZXIgZnJvbSBmcmFnbWVudAot
ICAgICAgICBmcmFnbWVudC50ZXh0Q29udGVudCA9ICIiOwotCi0gICAgICAgIGkgPSAwOwotICAg
ICAgICB3aGlsZSAoIChlbGVtID0gbm9kZXNbIGkrKyBdKSApIHsKLQotICAgICAgICAgICAgLy8g
IzQwODcgLSBJZiBvcmlnaW4gYW5kIGRlc3RpbmF0aW9uIGVsZW1lbnRzIGFyZSB0aGUgc2FtZSwg
YW5kIHRoaXMgaXMKLSAgICAgICAgICAgIC8vIHRoYXQgZWxlbWVudCwgZG8gbm90IGRvIGFueXRo
aW5nCi0gICAgICAgICAgICBpZiAoIHNlbGVjdGlvbiAmJiBqUXVlcnkuaW5BcnJheSggZWxlbSwg
c2VsZWN0aW9uICkgIT09IC0xICkgewotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICBjb250YWlucyA9IGpRdWVyeS5jb250YWlucyggZWxlbS5v
d25lckRvY3VtZW50LCBlbGVtICk7Ci0KLSAgICAgICAgICAgIC8vIEFwcGVuZCB0byBmcmFnbWVu
dAotICAgICAgICAgICAgdG1wID0gZ2V0QWxsKCBmcmFnbWVudC5hcHBlbmRDaGlsZCggZWxlbSAp
LCAic2NyaXB0IiApOwotCi0gICAgICAgICAgICAvLyBQcmVzZXJ2ZSBzY3JpcHQgZXZhbHVhdGlv
biBoaXN0b3J5Ci0gICAgICAgICAgICBpZiAoIGNvbnRhaW5zICkgewotICAgICAgICAgICAgICAg
IHNldEdsb2JhbEV2YWwoIHRtcCApOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBD
YXB0dXJlIGV4ZWN1dGFibGVzCi0gICAgICAgICAgICBpZiAoIHNjcmlwdHMgKSB7Ci0gICAgICAg
ICAgICAgICAgaiA9IDA7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKCAoZWxlbSA9IHRtcFsgaisr
IF0pICkgewotICAgICAgICAgICAgICAgICAgICBpZiAoIHJzY3JpcHRUeXBlLnRlc3QoIGVsZW0u
dHlwZSB8fCAiIiApICkgewotICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0cy5wdXNoKCBl
bGVtICk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gZnJhZ21lbnQ7Ci0gICAgfSwKLQot
ICAgIGNsZWFuRGF0YTogZnVuY3Rpb24oIGVsZW1zICkgewotICAgICAgICB2YXIgZGF0YSwgZWxl
bSwgZXZlbnRzLCB0eXBlLCBrZXksIGosCi0gICAgICAgICAgICBzcGVjaWFsID0galF1ZXJ5LmV2
ZW50LnNwZWNpYWwsCi0gICAgICAgICAgICBpID0gMDsKLQotICAgICAgICBmb3IgKCA7IChlbGVt
ID0gZWxlbXNbIGkgXSkgIT09IHVuZGVmaW5lZDsgaSsrICkgewotICAgICAgICAgICAgaWYgKCBq
UXVlcnkuYWNjZXB0RGF0YSggZWxlbSApICkgewotICAgICAgICAgICAgICAgIGtleSA9IGVsZW1b
IGRhdGFfcHJpdi5leHBhbmRvIF07Ci0KLSAgICAgICAgICAgICAgICBpZiAoIGtleSAmJiAoZGF0
YSA9IGRhdGFfcHJpdi5jYWNoZVsga2V5IF0pICkgewotICAgICAgICAgICAgICAgICAgICBldmVu
dHMgPSBPYmplY3Qua2V5cyggZGF0YS5ldmVudHMgfHwge30gKTsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKCBldmVudHMubGVuZ3RoICkgewotICAgICAgICAgICAgICAgICAgICAgICAgZm9yICgg
aiA9IDA7ICh0eXBlID0gZXZlbnRzW2pdKSAhPT0gdW5kZWZpbmVkOyBqKysgKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCBzcGVjaWFsWyB0eXBlIF0gKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5ldmVudC5yZW1vdmUoIGVsZW0sIHR5cGUgKTsK
LQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgYSBzaG9ydGN1dCB0byBh
dm9pZCBqUXVlcnkuZXZlbnQucmVtb3ZlJ3Mgb3ZlcmhlYWQKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnku
cmVtb3ZlRXZlbnQoIGVsZW0sIHR5cGUsIGRhdGEuaGFuZGxlICk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGlmICggZGF0YV9wcml2LmNhY2hlWyBrZXkgXSAp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIERpc2NhcmQgYW55IHJlbWFpbmluZyBgcHJp
dmF0ZWAgZGF0YQotICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGRhdGFfcHJpdi5jYWNo
ZVsga2V5IF07Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAvLyBEaXNjYXJkIGFueSByZW1haW5pbmcgYHVzZXJgIGRh
dGEKLSAgICAgICAgICAgIGRlbGV0ZSBkYXRhX3VzZXIuY2FjaGVbIGVsZW1bIGRhdGFfdXNlci5l
eHBhbmRvIF0gXTsKLSAgICAgICAgfQotICAgIH0KLX0pOwotCi1qUXVlcnkuZm4uZXh0ZW5kKHsK
LSAgICB0ZXh0OiBmdW5jdGlvbiggdmFsdWUgKSB7Ci0gICAgICAgIHJldHVybiBhY2Nlc3MoIHRo
aXMsIGZ1bmN0aW9uKCB2YWx1ZSApIHsKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZSA9PT0gdW5k
ZWZpbmVkID8KLSAgICAgICAgICAgICAgICBqUXVlcnkudGV4dCggdGhpcyApIDoKLSAgICAgICAg
ICAgICAgICB0aGlzLmVtcHR5KCkuZWFjaChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKCB0aGlzLm5vZGVUeXBlID09PSAxIHx8IHRoaXMubm9kZVR5cGUgPT09IDExIHx8IHRo
aXMubm9kZVR5cGUgPT09IDkgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHRD
b250ZW50ID0gdmFsdWU7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9
KTsKLSAgICAgICAgfSwgbnVsbCwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggKTsKLSAgICB9LAot
Ci0gICAgYXBwZW5kOiBmdW5jdGlvbigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZG9tTWFuaXAo
IGFyZ3VtZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgICAgICAgICBpZiAoIHRoaXMubm9k
ZVR5cGUgPT09IDEgfHwgdGhpcy5ub2RlVHlwZSA9PT0gMTEgfHwgdGhpcy5ub2RlVHlwZSA9PT0g
OSApIHsKLSAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gbWFuaXB1bGF0aW9uVGFyZ2V0KCB0
aGlzLCBlbGVtICk7Ci0gICAgICAgICAgICAgICAgdGFyZ2V0LmFwcGVuZENoaWxkKCBlbGVtICk7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOwotICAgIH0sCi0KLSAgICBwcmVwZW5kOiBmdW5j
dGlvbigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZG9tTWFuaXAoIGFyZ3VtZW50cywgZnVuY3Rp
b24oIGVsZW0gKSB7Ci0gICAgICAgICAgICBpZiAoIHRoaXMubm9kZVR5cGUgPT09IDEgfHwgdGhp
cy5ub2RlVHlwZSA9PT0gMTEgfHwgdGhpcy5ub2RlVHlwZSA9PT0gOSApIHsKLSAgICAgICAgICAg
ICAgICB2YXIgdGFyZ2V0ID0gbWFuaXB1bGF0aW9uVGFyZ2V0KCB0aGlzLCBlbGVtICk7Ci0gICAg
ICAgICAgICAgICAgdGFyZ2V0Lmluc2VydEJlZm9yZSggZWxlbSwgdGFyZ2V0LmZpcnN0Q2hpbGQg
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSk7Ci0gICAgfSwKLQotICAgIGJlZm9yZTogZnVu
Y3Rpb24oKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmRvbU1hbmlwKCBhcmd1bWVudHMsIGZ1bmN0
aW9uKCBlbGVtICkgewotICAgICAgICAgICAgaWYgKCB0aGlzLnBhcmVudE5vZGUgKSB7Ci0gICAg
ICAgICAgICAgICAgdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSggZWxlbSwgdGhpcyApOwot
ICAgICAgICAgICAgfQotICAgICAgICB9KTsKLSAgICB9LAotCi0gICAgYWZ0ZXI6IGZ1bmN0aW9u
KCkgewotICAgICAgICByZXR1cm4gdGhpcy5kb21NYW5pcCggYXJndW1lbnRzLCBmdW5jdGlvbigg
ZWxlbSApIHsKLSAgICAgICAgICAgIGlmICggdGhpcy5wYXJlbnROb2RlICkgewotICAgICAgICAg
ICAgICAgIHRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoIGVsZW0sIHRoaXMubmV4dFNpYmxp
bmcgKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSk7Ci0gICAgfSwKLQotICAgIHJlbW92ZTog
ZnVuY3Rpb24oIHNlbGVjdG9yLCBrZWVwRGF0YSAvKiBJbnRlcm5hbCBVc2UgT25seSAqLyApIHsK
LSAgICAgICAgdmFyIGVsZW0sCi0gICAgICAgICAgICBlbGVtcyA9IHNlbGVjdG9yID8galF1ZXJ5
LmZpbHRlciggc2VsZWN0b3IsIHRoaXMgKSA6IHRoaXMsCi0gICAgICAgICAgICBpID0gMDsKLQot
ICAgICAgICBmb3IgKCA7IChlbGVtID0gZWxlbXNbaV0pICE9IG51bGw7IGkrKyApIHsKLSAgICAg
ICAgICAgIGlmICggIWtlZXBEYXRhICYmIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7Ci0gICAgICAg
ICAgICAgICAgalF1ZXJ5LmNsZWFuRGF0YSggZ2V0QWxsKCBlbGVtICkgKTsKLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgaWYgKCBlbGVtLnBhcmVudE5vZGUgKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKCBrZWVwRGF0YSAmJiBqUXVlcnkuY29udGFpbnMoIGVsZW0ub3duZXJEb2N1bWVudCwg
ZWxlbSApICkgewotICAgICAgICAgICAgICAgICAgICBzZXRHbG9iYWxFdmFsKCBnZXRBbGwoIGVs
ZW0sICJzY3JpcHQiICkgKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxl
bS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKCBlbGVtICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLQotICAgICAgICByZXR1cm4gdGhpczsKLSAgICB9LAotCi0gICAgZW1wdHk6IGZ1bmN0aW9u
KCkgewotICAgICAgICB2YXIgZWxlbSwKLSAgICAgICAgICAgIGkgPSAwOwotCi0gICAgICAgIGZv
ciAoIDsgKGVsZW0gPSB0aGlzW2ldKSAhPSBudWxsOyBpKysgKSB7Ci0gICAgICAgICAgICBpZiAo
IGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7Ci0KLSAgICAgICAgICAgICAgICAvLyBQcmV2ZW50IG1l
bW9yeSBsZWFrcwotICAgICAgICAgICAgICAgIGpRdWVyeS5jbGVhbkRhdGEoIGdldEFsbCggZWxl
bSwgZmFsc2UgKSApOwotCi0gICAgICAgICAgICAgICAgLy8gUmVtb3ZlIGFueSByZW1haW5pbmcg
bm9kZXMKLSAgICAgICAgICAgICAgICBlbGVtLnRleHRDb250ZW50ID0gIiI7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gdGhpczsKLSAgICB9LAotCi0gICAgY2xv
bmU6IGZ1bmN0aW9uKCBkYXRhQW5kRXZlbnRzLCBkZWVwRGF0YUFuZEV2ZW50cyApIHsKLSAgICAg
ICAgZGF0YUFuZEV2ZW50cyA9IGRhdGFBbmRFdmVudHMgPT0gbnVsbCA/IGZhbHNlIDogZGF0YUFu
ZEV2ZW50czsKLSAgICAgICAgZGVlcERhdGFBbmRFdmVudHMgPSBkZWVwRGF0YUFuZEV2ZW50cyA9
PSBudWxsID8gZGF0YUFuZEV2ZW50cyA6IGRlZXBEYXRhQW5kRXZlbnRzOwotCi0gICAgICAgIHJl
dHVybiB0aGlzLm1hcChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHJldHVybiBqUXVlcnkuY2xv
bmUoIHRoaXMsIGRhdGFBbmRFdmVudHMsIGRlZXBEYXRhQW5kRXZlbnRzICk7Ci0gICAgICAgIH0p
OwotICAgIH0sCi0KLSAgICBodG1sOiBmdW5jdGlvbiggdmFsdWUgKSB7Ci0gICAgICAgIHJldHVy
biBhY2Nlc3MoIHRoaXMsIGZ1bmN0aW9uKCB2YWx1ZSApIHsKLSAgICAgICAgICAgIHZhciBlbGVt
ID0gdGhpc1sgMCBdIHx8IHt9LAotICAgICAgICAgICAgICAgIGkgPSAwLAotICAgICAgICAgICAg
ICAgIGwgPSB0aGlzLmxlbmd0aDsKLQotICAgICAgICAgICAgaWYgKCB2YWx1ZSA9PT0gdW5kZWZp
bmVkICYmIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVs
ZW0uaW5uZXJIVE1MOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBTZWUgaWYgd2Ug
Y2FuIHRha2UgYSBzaG9ydGN1dCBhbmQganVzdCB1c2UgaW5uZXJIVE1MCi0gICAgICAgICAgICBp
ZiAoIHR5cGVvZiB2YWx1ZSA9PT0gInN0cmluZyIgJiYgIXJub0lubmVyaHRtbC50ZXN0KCB2YWx1
ZSApICYmCi0gICAgICAgICAgICAgICAgIXdyYXBNYXBbICggcnRhZ05hbWUuZXhlYyggdmFsdWUg
KSB8fCBbICIiLCAiIiBdIClbIDEgXS50b0xvd2VyQ2FzZSgpIF0gKSB7Ci0KLSAgICAgICAgICAg
ICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoIHJ4aHRtbFRhZywgIjwkMT48LyQyPiIgKTsKLQot
ICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoIDsgaSA8IGw7
IGkrKyApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0gPSB0aGlzWyBpIF0gfHwge307
Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlbW92ZSBlbGVtZW50IG5vZGVzIGFuZCBw
cmV2ZW50IG1lbW9yeSBsZWFrcwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBlbGVtLm5v
ZGVUeXBlID09PSAxICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5jbGVh
bkRhdGEoIGdldEFsbCggZWxlbSwgZmFsc2UgKSApOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGVsZW0uaW5uZXJIVE1MID0gdmFsdWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICBlbGVtID0gMDsKLQot
ICAgICAgICAgICAgICAgIC8vIElmIHVzaW5nIGlubmVySFRNTCB0aHJvd3MgYW4gZXhjZXB0aW9u
LCB1c2UgdGhlIGZhbGxiYWNrIG1ldGhvZAotICAgICAgICAgICAgICAgIH0gY2F0Y2goIGUgKSB7
fQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoIGVsZW0gKSB7Ci0gICAgICAgICAg
ICAgICAgdGhpcy5lbXB0eSgpLmFwcGVuZCggdmFsdWUgKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfSwgbnVsbCwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggKTsKLSAgICB9LAotCi0gICAgcmVw
bGFjZVdpdGg6IGZ1bmN0aW9uKCkgewotICAgICAgICB2YXIgYXJnID0gYXJndW1lbnRzWyAwIF07
Ci0KLSAgICAgICAgLy8gTWFrZSB0aGUgY2hhbmdlcywgcmVwbGFjaW5nIGVhY2ggY29udGV4dCBl
bGVtZW50IHdpdGggdGhlIG5ldyBjb250ZW50Ci0gICAgICAgIHRoaXMuZG9tTWFuaXAoIGFyZ3Vt
ZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgICAgICAgICBhcmcgPSB0aGlzLnBhcmVudE5v
ZGU7Ci0KLSAgICAgICAgICAgIGpRdWVyeS5jbGVhbkRhdGEoIGdldEFsbCggdGhpcyApICk7Ci0K
LSAgICAgICAgICAgIGlmICggYXJnICkgewotICAgICAgICAgICAgICAgIGFyZy5yZXBsYWNlQ2hp
bGQoIGVsZW0sIHRoaXMgKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSk7Ci0KLSAgICAgICAg
Ly8gRm9yY2UgcmVtb3ZhbCBpZiB0aGVyZSB3YXMgbm8gbmV3IGNvbnRlbnQgKGUuZy4sIGZyb20g
ZW1wdHkgYXJndW1lbnRzKQotICAgICAgICByZXR1cm4gYXJnICYmIChhcmcubGVuZ3RoIHx8IGFy
Zy5ub2RlVHlwZSkgPyB0aGlzIDogdGhpcy5yZW1vdmUoKTsKLSAgICB9LAotCi0gICAgZGV0YWNo
OiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnJlbW92ZSggc2Vs
ZWN0b3IsIHRydWUgKTsKLSAgICB9LAotCi0gICAgZG9tTWFuaXA6IGZ1bmN0aW9uKCBhcmdzLCBj
YWxsYmFjayApIHsKLQotICAgICAgICAvLyBGbGF0dGVuIGFueSBuZXN0ZWQgYXJyYXlzCi0gICAg
ICAgIGFyZ3MgPSBjb25jYXQuYXBwbHkoIFtdLCBhcmdzICk7Ci0KLSAgICAgICAgdmFyIGZyYWdt
ZW50LCBmaXJzdCwgc2NyaXB0cywgaGFzU2NyaXB0cywgbm9kZSwgZG9jLAotICAgICAgICAgICAg
aSA9IDAsCi0gICAgICAgICAgICBsID0gdGhpcy5sZW5ndGgsCi0gICAgICAgICAgICBzZXQgPSB0
aGlzLAotICAgICAgICAgICAgaU5vQ2xvbmUgPSBsIC0gMSwKLSAgICAgICAgICAgIHZhbHVlID0g
YXJnc1sgMCBdLAotICAgICAgICAgICAgaXNGdW5jdGlvbiA9IGpRdWVyeS5pc0Z1bmN0aW9uKCB2
YWx1ZSApOwotCi0gICAgICAgIC8vIFdlIGNhbid0IGNsb25lTm9kZSBmcmFnbWVudHMgdGhhdCBj
b250YWluIGNoZWNrZWQsIGluIFdlYktpdAotICAgICAgICBpZiAoIGlzRnVuY3Rpb24gfHwKLSAg
ICAgICAgICAgICAgICAoIGwgPiAxICYmIHR5cGVvZiB2YWx1ZSA9PT0gInN0cmluZyIgJiYKLSAg
ICAgICAgICAgICAgICAgICAgIXN1cHBvcnQuY2hlY2tDbG9uZSAmJiByY2hlY2tlZC50ZXN0KCB2
YWx1ZSApICkgKSB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCBpbmRl
eCApIHsKLSAgICAgICAgICAgICAgICB2YXIgc2VsZiA9IHNldC5lcSggaW5kZXggKTsKLSAgICAg
ICAgICAgICAgICBpZiAoIGlzRnVuY3Rpb24gKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFyZ3Nb
IDAgXSA9IHZhbHVlLmNhbGwoIHRoaXMsIGluZGV4LCBzZWxmLmh0bWwoKSApOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICBzZWxmLmRvbU1hbmlwKCBhcmdzLCBjYWxsYmFjayAp
OwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIGwgKSB7Ci0gICAg
ICAgICAgICBmcmFnbWVudCA9IGpRdWVyeS5idWlsZEZyYWdtZW50KCBhcmdzLCB0aGlzWyAwIF0u
b3duZXJEb2N1bWVudCwgZmFsc2UsIHRoaXMgKTsKLSAgICAgICAgICAgIGZpcnN0ID0gZnJhZ21l
bnQuZmlyc3RDaGlsZDsKLQotICAgICAgICAgICAgaWYgKCBmcmFnbWVudC5jaGlsZE5vZGVzLmxl
bmd0aCA9PT0gMSApIHsKLSAgICAgICAgICAgICAgICBmcmFnbWVudCA9IGZpcnN0OwotICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICBpZiAoIGZpcnN0ICkgewotICAgICAgICAgICAgICAgIHNj
cmlwdHMgPSBqUXVlcnkubWFwKCBnZXRBbGwoIGZyYWdtZW50LCAic2NyaXB0IiApLCBkaXNhYmxl
U2NyaXB0ICk7Ci0gICAgICAgICAgICAgICAgaGFzU2NyaXB0cyA9IHNjcmlwdHMubGVuZ3RoOwot
Ci0gICAgICAgICAgICAgICAgLy8gVXNlIHRoZSBvcmlnaW5hbCBmcmFnbWVudCBmb3IgdGhlIGxh
c3QgaXRlbSBpbnN0ZWFkIG9mIHRoZSBmaXJzdCBiZWNhdXNlIGl0IGNhbiBlbmQgdXAKLSAgICAg
ICAgICAgICAgICAvLyBiZWluZyBlbXB0aWVkIGluY29ycmVjdGx5IGluIGNlcnRhaW4gc2l0dWF0
aW9ucyAoIzgwNzApLgotICAgICAgICAgICAgICAgIGZvciAoIDsgaSA8IGw7IGkrKyApIHsKLSAg
ICAgICAgICAgICAgICAgICAgbm9kZSA9IGZyYWdtZW50OwotCi0gICAgICAgICAgICAgICAgICAg
IGlmICggaSAhPT0gaU5vQ2xvbmUgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBub2RlID0g
alF1ZXJ5LmNsb25lKCBub2RlLCB0cnVlLCB0cnVlICk7Ci0KLSAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIEtlZXAgcmVmZXJlbmNlcyB0byBjbG9uZWQgc2NyaXB0cyBmb3IgbGF0ZXIgcmVzdG9y
YXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICggaGFzU2NyaXB0cyApIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBTdXBwb3J0OiBRdFdlYktpdAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIGpRdWVyeS5tZXJnZSBiZWNhdXNlIHB1c2guYXBwbHkoXywgYXJy
YXlsaWtlKSB0aHJvd3MKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkubWVyZ2Uo
IHNjcmlwdHMsIGdldEFsbCggbm9kZSwgInNjcmlwdCIgKSApOwotICAgICAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgY2Fs
bGJhY2suY2FsbCggdGhpc1sgaSBdLCBub2RlLCBpICk7Ci0gICAgICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICAgICAgaWYgKCBoYXNTY3JpcHRzICkgewotICAgICAgICAgICAgICAgICAgICBk
b2MgPSBzY3JpcHRzWyBzY3JpcHRzLmxlbmd0aCAtIDEgXS5vd25lckRvY3VtZW50OwotCi0gICAg
ICAgICAgICAgICAgICAgIC8vIFJlZW5hYmxlIHNjcmlwdHMKLSAgICAgICAgICAgICAgICAgICAg
alF1ZXJ5Lm1hcCggc2NyaXB0cywgcmVzdG9yZVNjcmlwdCApOwotCi0gICAgICAgICAgICAgICAg
ICAgIC8vIEV2YWx1YXRlIGV4ZWN1dGFibGUgc2NyaXB0cyBvbiBmaXJzdCBkb2N1bWVudCBpbnNl
cnRpb24KLSAgICAgICAgICAgICAgICAgICAgZm9yICggaSA9IDA7IGkgPCBoYXNTY3JpcHRzOyBp
KysgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBub2RlID0gc2NyaXB0c1sgaSBdOwotICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCByc2NyaXB0VHlwZS50ZXN0KCBub2RlLnR5cGUgfHwg
IiIgKSAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICFkYXRhX3ByaXYuYWNjZXNzKCBu
b2RlLCAiZ2xvYmFsRXZhbCIgKSAmJiBqUXVlcnkuY29udGFpbnMoIGRvYywgbm9kZSApICkgewot
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBub2RlLnNyYyApIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gT3B0aW9uYWwgQUpBWCBkZXBlbmRlbmN5LCBidXQg
d29uJ3QgcnVuIHNjcmlwdHMgaWYgbm90IHByZXNlbnQKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCBqUXVlcnkuX2V2YWxVcmwgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBqUXVlcnkuX2V2YWxVcmwoIG5vZGUuc3JjICk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkuZ2xvYmFsRXZhbCggbm9k
ZS50ZXh0Q29udGVudC5yZXBsYWNlKCByY2xlYW5TY3JpcHQsICIiICkgKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LQotICAgICAgICByZXR1cm4gdGhpczsKLSAgICB9Ci19KTsKLQotalF1ZXJ5LmVhY2goewotICAg
IGFwcGVuZFRvOiAiYXBwZW5kIiwKLSAgICBwcmVwZW5kVG86ICJwcmVwZW5kIiwKLSAgICBpbnNl
cnRCZWZvcmU6ICJiZWZvcmUiLAotICAgIGluc2VydEFmdGVyOiAiYWZ0ZXIiLAotICAgIHJlcGxh
Y2VBbGw6ICJyZXBsYWNlV2l0aCIKLX0sIGZ1bmN0aW9uKCBuYW1lLCBvcmlnaW5hbCApIHsKLSAg
ICBqUXVlcnkuZm5bIG5hbWUgXSA9IGZ1bmN0aW9uKCBzZWxlY3RvciApIHsKLSAgICAgICAgdmFy
IGVsZW1zLAotICAgICAgICAgICAgcmV0ID0gW10sCi0gICAgICAgICAgICBpbnNlcnQgPSBqUXVl
cnkoIHNlbGVjdG9yICksCi0gICAgICAgICAgICBsYXN0ID0gaW5zZXJ0Lmxlbmd0aCAtIDEsCi0g
ICAgICAgICAgICBpID0gMDsKLQotICAgICAgICBmb3IgKCA7IGkgPD0gbGFzdDsgaSsrICkgewot
ICAgICAgICAgICAgZWxlbXMgPSBpID09PSBsYXN0ID8gdGhpcyA6IHRoaXMuY2xvbmUoIHRydWUg
KTsKLSAgICAgICAgICAgIGpRdWVyeSggaW5zZXJ0WyBpIF0gKVsgb3JpZ2luYWwgXSggZWxlbXMg
KTsKLQotICAgICAgICAgICAgLy8gU3VwcG9ydDogUXRXZWJLaXQKLSAgICAgICAgICAgIC8vIC5n
ZXQoKSBiZWNhdXNlIHB1c2guYXBwbHkoXywgYXJyYXlsaWtlKSB0aHJvd3MKLSAgICAgICAgICAg
IHB1c2guYXBwbHkoIHJldCwgZWxlbXMuZ2V0KCkgKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJl
dHVybiB0aGlzLnB1c2hTdGFjayggcmV0ICk7Ci0gICAgfTsKLX0pOwotCi0KLXZhciBpZnJhbWUs
Ci0gICAgZWxlbWRpc3BsYXkgPSB7fTsKLQotLyoqCi0gKiBSZXRyaWV2ZSB0aGUgYWN0dWFsIGRp
c3BsYXkgb2YgYSBlbGVtZW50Ci0gKiBAcGFyYW0ge1N0cmluZ30gbmFtZSBub2RlTmFtZSBvZiB0
aGUgZWxlbWVudAotICogQHBhcmFtIHtPYmplY3R9IGRvYyBEb2N1bWVudCBvYmplY3QKLSAqLwot
Ly8gQ2FsbGVkIG9ubHkgZnJvbSB3aXRoaW4gZGVmYXVsdERpc3BsYXkKLWZ1bmN0aW9uIGFjdHVh
bERpc3BsYXkoIG5hbWUsIGRvYyApIHsKLSAgICB2YXIgZWxlbSA9IGpRdWVyeSggZG9jLmNyZWF0
ZUVsZW1lbnQoIG5hbWUgKSApLmFwcGVuZFRvKCBkb2MuYm9keSApLAotCi0gICAgICAgIC8vIGdl
dERlZmF1bHRDb21wdXRlZFN0eWxlIG1pZ2h0IGJlIHJlbGlhYmx5IHVzZWQgb25seSBvbiBhdHRh
Y2hlZCBlbGVtZW50Ci0gICAgICAgIGRpc3BsYXkgPSB3aW5kb3cuZ2V0RGVmYXVsdENvbXB1dGVk
U3R5bGUgPwotCi0gICAgICAgICAgICAvLyBVc2Ugb2YgdGhpcyBtZXRob2QgaXMgYSB0ZW1wb3Jh
cnkgZml4IChtb3JlIGxpa2Ugb3B0bWl6YXRpb24pIHVudGlsIHNvbWV0aGluZyBiZXR0ZXIgY29t
ZXMgYWxvbmcsCi0gICAgICAgICAgICAvLyBzaW5jZSBpdCB3YXMgcmVtb3ZlZCBmcm9tIHNwZWNp
ZmljYXRpb24gYW5kIHN1cHBvcnRlZCBvbmx5IGluIEZGCi0gICAgICAgICAgICB3aW5kb3cuZ2V0
RGVmYXVsdENvbXB1dGVkU3R5bGUoIGVsZW1bIDAgXSApLmRpc3BsYXkgOiBqUXVlcnkuY3NzKCBl
bGVtWyAwIF0sICJkaXNwbGF5IiApOwotCi0gICAgLy8gV2UgZG9uJ3QgaGF2ZSBhbnkgZGF0YSBz
dG9yZWQgb24gdGhlIGVsZW1lbnQsCi0gICAgLy8gc28gdXNlICJkZXRhY2giIG1ldGhvZCBhcyBm
YXN0IHdheSB0byBnZXQgcmlkIG9mIHRoZSBlbGVtZW50Ci0gICAgZWxlbS5kZXRhY2goKTsKLQot
ICAgIHJldHVybiBkaXNwbGF5OwotfQotCi0vKioKLSAqIFRyeSB0byBkZXRlcm1pbmUgdGhlIGRl
ZmF1bHQgZGlzcGxheSB2YWx1ZSBvZiBhbiBlbGVtZW50Ci0gKiBAcGFyYW0ge1N0cmluZ30gbm9k
ZU5hbWUKLSAqLwotZnVuY3Rpb24gZGVmYXVsdERpc3BsYXkoIG5vZGVOYW1lICkgewotICAgIHZh
ciBkb2MgPSBkb2N1bWVudCwKLSAgICAgICAgZGlzcGxheSA9IGVsZW1kaXNwbGF5WyBub2RlTmFt
ZSBdOwotCi0gICAgaWYgKCAhZGlzcGxheSApIHsKLSAgICAgICAgZGlzcGxheSA9IGFjdHVhbERp
c3BsYXkoIG5vZGVOYW1lLCBkb2MgKTsKLQotICAgICAgICAvLyBJZiB0aGUgc2ltcGxlIHdheSBm
YWlscywgcmVhZCBmcm9tIGluc2lkZSBhbiBpZnJhbWUKLSAgICAgICAgaWYgKCBkaXNwbGF5ID09
PSAibm9uZSIgfHwgIWRpc3BsYXkgKSB7Ci0KLSAgICAgICAgICAgIC8vIFVzZSB0aGUgYWxyZWFk
eS1jcmVhdGVkIGlmcmFtZSBpZiBwb3NzaWJsZQotICAgICAgICAgICAgaWZyYW1lID0gKGlmcmFt
ZSB8fCBqUXVlcnkoICI8aWZyYW1lIGZyYW1lYm9yZGVyPScwJyB3aWR0aD0nMCcgaGVpZ2h0PScw
Jy8+IiApKS5hcHBlbmRUbyggZG9jLmRvY3VtZW50RWxlbWVudCApOwotCi0gICAgICAgICAgICAv
LyBBbHdheXMgd3JpdGUgYSBuZXcgSFRNTCBza2VsZXRvbiBzbyBXZWJraXQgYW5kIEZpcmVmb3gg
ZG9uJ3QgY2hva2Ugb24gcmV1c2UKLSAgICAgICAgICAgIGRvYyA9IGlmcmFtZVsgMCBdLmNvbnRl
bnREb2N1bWVudDsKLQotICAgICAgICAgICAgLy8gU3VwcG9ydDogSUUKLSAgICAgICAgICAgIGRv
Yy53cml0ZSgpOwotICAgICAgICAgICAgZG9jLmNsb3NlKCk7Ci0KLSAgICAgICAgICAgIGRpc3Bs
YXkgPSBhY3R1YWxEaXNwbGF5KCBub2RlTmFtZSwgZG9jICk7Ci0gICAgICAgICAgICBpZnJhbWUu
ZGV0YWNoKCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBTdG9yZSB0aGUgY29ycmVjdCBkZWZh
dWx0IGRpc3BsYXkKLSAgICAgICAgZWxlbWRpc3BsYXlbIG5vZGVOYW1lIF0gPSBkaXNwbGF5Owot
ICAgIH0KLQotICAgIHJldHVybiBkaXNwbGF5OwotfQotdmFyIHJtYXJnaW4gPSAoL15tYXJnaW4v
KTsKLQotdmFyIHJudW1ub25weCA9IG5ldyBSZWdFeHAoICJeKCIgKyBwbnVtICsgIikoPyFweClb
YS16JV0rJCIsICJpIiApOwotCi12YXIgZ2V0U3R5bGVzID0gZnVuY3Rpb24oIGVsZW0gKSB7Ci0g
ICAgICAgIHJldHVybiBlbGVtLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRT
dHlsZSggZWxlbSwgbnVsbCApOwotICAgIH07Ci0KLQotCi1mdW5jdGlvbiBjdXJDU1MoIGVsZW0s
IG5hbWUsIGNvbXB1dGVkICkgewotICAgIHZhciB3aWR0aCwgbWluV2lkdGgsIG1heFdpZHRoLCBy
ZXQsCi0gICAgICAgIHN0eWxlID0gZWxlbS5zdHlsZTsKLQotICAgIGNvbXB1dGVkID0gY29tcHV0
ZWQgfHwgZ2V0U3R5bGVzKCBlbGVtICk7Ci0KLSAgICAvLyBTdXBwb3J0OiBJRTkKLSAgICAvLyBn
ZXRQcm9wZXJ0eVZhbHVlIGlzIG9ubHkgbmVlZGVkIGZvciAuY3NzKCdmaWx0ZXInKSBpbiBJRTks
IHNlZSAjMTI1MzcKLSAgICBpZiAoIGNvbXB1dGVkICkgewotICAgICAgICByZXQgPSBjb21wdXRl
ZC5nZXRQcm9wZXJ0eVZhbHVlKCBuYW1lICkgfHwgY29tcHV0ZWRbIG5hbWUgXTsKLSAgICB9Ci0K
LSAgICBpZiAoIGNvbXB1dGVkICkgewotCi0gICAgICAgIGlmICggcmV0ID09PSAiIiAmJiAhalF1
ZXJ5LmNvbnRhaW5zKCBlbGVtLm93bmVyRG9jdW1lbnQsIGVsZW0gKSApIHsKLSAgICAgICAgICAg
IHJldCA9IGpRdWVyeS5zdHlsZSggZWxlbSwgbmFtZSApOwotICAgICAgICB9Ci0KLSAgICAgICAg
Ly8gU3VwcG9ydDogaU9TIDwgNgotICAgICAgICAvLyBBIHRyaWJ1dGUgdG8gdGhlICJhd2Vzb21l
IGhhY2sgYnkgRGVhbiBFZHdhcmRzIgotICAgICAgICAvLyBpT1MgPCA2IChhdCBsZWFzdCkgcmV0
dXJucyBwZXJjZW50YWdlIGZvciBhIGxhcmdlciBzZXQgb2YgdmFsdWVzLCBidXQgd2lkdGggc2Vl
bXMgdG8gYmUgcmVsaWFibHkgcGl4ZWxzCi0gICAgICAgIC8vIHRoaXMgaXMgYWdhaW5zdCB0aGUg
Q1NTT00gZHJhZnQgc3BlYzogaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3Nzb20vI3Jlc29sdmVk
LXZhbHVlcwotICAgICAgICBpZiAoIHJudW1ub25weC50ZXN0KCByZXQgKSAmJiBybWFyZ2luLnRl
c3QoIG5hbWUgKSApIHsKLQotICAgICAgICAgICAgLy8gUmVtZW1iZXIgdGhlIG9yaWdpbmFsIHZh
bHVlcwotICAgICAgICAgICAgd2lkdGggPSBzdHlsZS53aWR0aDsKLSAgICAgICAgICAgIG1pbldp
ZHRoID0gc3R5bGUubWluV2lkdGg7Ci0gICAgICAgICAgICBtYXhXaWR0aCA9IHN0eWxlLm1heFdp
ZHRoOwotCi0gICAgICAgICAgICAvLyBQdXQgaW4gdGhlIG5ldyB2YWx1ZXMgdG8gZ2V0IGEgY29t
cHV0ZWQgdmFsdWUgb3V0Ci0gICAgICAgICAgICBzdHlsZS5taW5XaWR0aCA9IHN0eWxlLm1heFdp
ZHRoID0gc3R5bGUud2lkdGggPSByZXQ7Ci0gICAgICAgICAgICByZXQgPSBjb21wdXRlZC53aWR0
aDsKLQotICAgICAgICAgICAgLy8gUmV2ZXJ0IHRoZSBjaGFuZ2VkIHZhbHVlcwotICAgICAgICAg
ICAgc3R5bGUud2lkdGggPSB3aWR0aDsKLSAgICAgICAgICAgIHN0eWxlLm1pbldpZHRoID0gbWlu
V2lkdGg7Ci0gICAgICAgICAgICBzdHlsZS5tYXhXaWR0aCA9IG1heFdpZHRoOwotICAgICAgICB9
Ci0gICAgfQotCi0gICAgcmV0dXJuIHJldCAhPT0gdW5kZWZpbmVkID8KLSAgICAgICAgLy8gU3Vw
cG9ydDogSUUKLSAgICAgICAgLy8gSUUgcmV0dXJucyB6SW5kZXggdmFsdWUgYXMgYW4gaW50ZWdl
ci4KLSAgICAgICAgcmV0ICsgIiIgOgotICAgICAgICByZXQ7Ci19Ci0KLQotZnVuY3Rpb24gYWRk
R2V0SG9va0lmKCBjb25kaXRpb25GbiwgaG9va0ZuICkgewotICAgIC8vIERlZmluZSB0aGUgaG9v
aywgd2UnbGwgY2hlY2sgb24gdGhlIGZpcnN0IHJ1biBpZiBpdCdzIHJlYWxseSBuZWVkZWQuCi0g
ICAgcmV0dXJuIHsKLSAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGlmICgg
Y29uZGl0aW9uRm4oKSApIHsKLSAgICAgICAgICAgICAgICAvLyBIb29rIG5vdCBuZWVkZWQgKG9y
IGl0J3Mgbm90IHBvc3NpYmxlIHRvIHVzZSBpdCBkdWUgdG8gbWlzc2luZyBkZXBlbmRlbmN5KSwK
LSAgICAgICAgICAgICAgICAvLyByZW1vdmUgaXQuCi0gICAgICAgICAgICAgICAgLy8gU2luY2Ug
dGhlcmUgYXJlIG5vIG90aGVyIGhvb2tzIGZvciBtYXJnaW5SaWdodCwgcmVtb3ZlIHRoZSB3aG9s
ZSBvYmplY3QuCi0gICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMuZ2V0OwotICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gSG9vayBuZWVkZWQ7
IHJlZGVmaW5lIGl0IHNvIHRoYXQgdGhlIHN1cHBvcnQgdGVzdCBpcyBub3QgZXhlY3V0ZWQgYWdh
aW4uCi0KLSAgICAgICAgICAgIHJldHVybiAodGhpcy5nZXQgPSBob29rRm4pLmFwcGx5KCB0aGlz
LCBhcmd1bWVudHMgKTsKLSAgICAgICAgfQotICAgIH07Ci19Ci0KLQotKGZ1bmN0aW9uKCkgewot
ICAgIHZhciBwaXhlbFBvc2l0aW9uVmFsLCBib3hTaXppbmdSZWxpYWJsZVZhbCwKLSAgICAgICAg
Ly8gU3VwcG9ydDogRmlyZWZveCwgQW5kcm9pZCAyLjMgKFByZWZpeGVkIGJveC1zaXppbmcgdmVy
c2lvbnMpLgotICAgICAgICBkaXZSZXNldCA9ICJwYWRkaW5nOjA7bWFyZ2luOjA7Ym9yZGVyOjA7
ZGlzcGxheTpibG9jazstd2Via2l0LWJveC1zaXppbmc6Y29udGVudC1ib3g7IiArCi0gICAgICAg
ICAgICAiLW1vei1ib3gtc2l6aW5nOmNvbnRlbnQtYm94O2JveC1zaXppbmc6Y29udGVudC1ib3gi
LAotICAgICAgICBkb2NFbGVtID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LAotICAgICAgICBj
b250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCAiZGl2IiApLAotICAgICAgICBkaXYg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCAiZGl2IiApOwotCi0gICAgZGl2LnN0eWxlLmJhY2tn
cm91bmRDbGlwID0gImNvbnRlbnQtYm94IjsKLSAgICBkaXYuY2xvbmVOb2RlKCB0cnVlICkuc3R5
bGUuYmFja2dyb3VuZENsaXAgPSAiIjsKLSAgICBzdXBwb3J0LmNsZWFyQ2xvbmVTdHlsZSA9IGRp
di5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCA9PT0gImNvbnRlbnQtYm94IjsKLQotICAgIGNvbnRhaW5l
ci5zdHlsZS5jc3NUZXh0ID0gImJvcmRlcjowO3dpZHRoOjA7aGVpZ2h0OjA7cG9zaXRpb246YWJz
b2x1dGU7dG9wOjA7bGVmdDotOTk5OXB4OyIgKwotICAgICAgICAibWFyZ2luLXRvcDoxcHgiOwot
ICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZCggZGl2ICk7Ci0KLSAgICAvLyBFeGVjdXRpbmcgYm90
aCBwaXhlbFBvc2l0aW9uICYgYm94U2l6aW5nUmVsaWFibGUgdGVzdHMgcmVxdWlyZSBvbmx5IG9u
ZSBsYXlvdXQKLSAgICAvLyBzbyB0aGV5J3JlIGV4ZWN1dGVkIGF0IHRoZSBzYW1lIHRpbWUgdG8g
c2F2ZSB0aGUgc2Vjb25kIGNvbXB1dGF0aW9uLgotICAgIGZ1bmN0aW9uIGNvbXB1dGVQaXhlbFBv
c2l0aW9uQW5kQm94U2l6aW5nUmVsaWFibGUoKSB7Ci0gICAgICAgIC8vIFN1cHBvcnQ6IEZpcmVm
b3gsIEFuZHJvaWQgMi4zIChQcmVmaXhlZCBib3gtc2l6aW5nIHZlcnNpb25zKS4KLSAgICAgICAg
ZGl2LnN0eWxlLmNzc1RleHQgPSAiLXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7LW1vei1i
b3gtc2l6aW5nOmJvcmRlci1ib3g7IiArCi0gICAgICAgICAgICAiYm94LXNpemluZzpib3JkZXIt
Ym94O3BhZGRpbmc6MXB4O2JvcmRlcjoxcHg7ZGlzcGxheTpibG9jazt3aWR0aDo0cHg7bWFyZ2lu
LXRvcDoxJTsiICsKLSAgICAgICAgICAgICJwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MSUiOwotICAg
ICAgICBkb2NFbGVtLmFwcGVuZENoaWxkKCBjb250YWluZXIgKTsKLQotICAgICAgICB2YXIgZGl2
U3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSggZGl2LCBudWxsICk7Ci0gICAgICAgIHBp
eGVsUG9zaXRpb25WYWwgPSBkaXZTdHlsZS50b3AgIT09ICIxJSI7Ci0gICAgICAgIGJveFNpemlu
Z1JlbGlhYmxlVmFsID0gZGl2U3R5bGUud2lkdGggPT09ICI0cHgiOwotCi0gICAgICAgIGRvY0Vs
ZW0ucmVtb3ZlQ2hpbGQoIGNvbnRhaW5lciApOwotICAgIH0KLQotICAgIC8vIFVzZSB3aW5kb3cu
Z2V0Q29tcHV0ZWRTdHlsZSBiZWNhdXNlIGpzZG9tIG9uIG5vZGUuanMgd2lsbCBicmVhayB3aXRo
b3V0IGl0LgotICAgIGlmICggd2luZG93LmdldENvbXB1dGVkU3R5bGUgKSB7Ci0gICAgICAgIGpR
dWVyeS5leHRlbmQoc3VwcG9ydCwgewotICAgICAgICAgICAgcGl4ZWxQb3NpdGlvbjogZnVuY3Rp
b24oKSB7Ci0gICAgICAgICAgICAgICAgLy8gVGhpcyB0ZXN0IGlzIGV4ZWN1dGVkIG9ubHkgb25j
ZSBidXQgd2Ugc3RpbGwgZG8gbWVtb2l6aW5nCi0gICAgICAgICAgICAgICAgLy8gc2luY2Ugd2Ug
Y2FuIHVzZSB0aGUgYm94U2l6aW5nUmVsaWFibGUgcHJlLWNvbXB1dGluZy4KLSAgICAgICAgICAg
ICAgICAvLyBObyBuZWVkIHRvIGNoZWNrIGlmIHRoZSB0ZXN0IHdhcyBhbHJlYWR5IHBlcmZvcm1l
ZCwgdGhvdWdoLgotICAgICAgICAgICAgICAgIGNvbXB1dGVQaXhlbFBvc2l0aW9uQW5kQm94U2l6
aW5nUmVsaWFibGUoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gcGl4ZWxQb3NpdGlvblZhbDsK
LSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBib3hTaXppbmdSZWxpYWJsZTogZnVuY3Rpb24o
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKCBib3hTaXppbmdSZWxpYWJsZVZhbCA9PSBudWxsICkg
ewotICAgICAgICAgICAgICAgICAgICBjb21wdXRlUGl4ZWxQb3NpdGlvbkFuZEJveFNpemluZ1Jl
bGlhYmxlKCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiBib3hT
aXppbmdSZWxpYWJsZVZhbDsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICByZWxpYWJsZU1h
cmdpblJpZ2h0OiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAvLyBTdXBwb3J0OiBBbmRy
b2lkIDIuMwotICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIGRpdiB3aXRoIGV4cGxpY2l0IHdp
ZHRoIGFuZCBubyBtYXJnaW4tcmlnaHQgaW5jb3JyZWN0bHkKLSAgICAgICAgICAgICAgICAvLyBn
ZXRzIGNvbXB1dGVkIG1hcmdpbi1yaWdodCBiYXNlZCBvbiB3aWR0aCBvZiBjb250YWluZXIuICgj
MzMzMykKLSAgICAgICAgICAgICAgICAvLyBXZWJLaXQgQnVnIDEzMzQzIC0gZ2V0Q29tcHV0ZWRT
dHlsZSByZXR1cm5zIHdyb25nIHZhbHVlIGZvciBtYXJnaW4tcmlnaHQKLSAgICAgICAgICAgICAg
ICAvLyBUaGlzIHN1cHBvcnQgZnVuY3Rpb24gaXMgb25seSBleGVjdXRlZCBvbmNlIHNvIG5vIG1l
bW9pemluZyBpcyBuZWVkZWQuCi0gICAgICAgICAgICAgICAgdmFyIHJldCwKLSAgICAgICAgICAg
ICAgICAgICAgbWFyZ2luRGl2ID0gZGl2LmFwcGVuZENoaWxkKCBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCAiZGl2IiApICk7Ci0gICAgICAgICAgICAgICAgbWFyZ2luRGl2LnN0eWxlLmNzc1RleHQg
PSBkaXYuc3R5bGUuY3NzVGV4dCA9IGRpdlJlc2V0OwotICAgICAgICAgICAgICAgIG1hcmdpbkRp
di5zdHlsZS5tYXJnaW5SaWdodCA9IG1hcmdpbkRpdi5zdHlsZS53aWR0aCA9ICIwIjsKLSAgICAg
ICAgICAgICAgICBkaXYuc3R5bGUud2lkdGggPSAiMXB4IjsKLSAgICAgICAgICAgICAgICBkb2NF
bGVtLmFwcGVuZENoaWxkKCBjb250YWluZXIgKTsKLQotICAgICAgICAgICAgICAgIHJldCA9ICFw
YXJzZUZsb2F0KCB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSggbWFyZ2luRGl2LCBudWxsICkubWFy
Z2luUmlnaHQgKTsKLQotICAgICAgICAgICAgICAgIGRvY0VsZW0ucmVtb3ZlQ2hpbGQoIGNvbnRh
aW5lciApOwotCi0gICAgICAgICAgICAgICAgLy8gQ2xlYW4gdXAgdGhlIGRpdiBmb3Igb3RoZXIg
c3VwcG9ydCB0ZXN0cy4KLSAgICAgICAgICAgICAgICBkaXYuaW5uZXJIVE1MID0gIiI7Ci0KLSAg
ICAgICAgICAgICAgICByZXR1cm4gcmV0OwotICAgICAgICAgICAgfQotICAgICAgICB9KTsKLSAg
ICB9Ci19KSgpOwotCi0KLS8vIEEgbWV0aG9kIGZvciBxdWlja2x5IHN3YXBwaW5nIGluL291dCBD
U1MgcHJvcGVydGllcyB0byBnZXQgY29ycmVjdCBjYWxjdWxhdGlvbnMuCi1qUXVlcnkuc3dhcCA9
IGZ1bmN0aW9uKCBlbGVtLCBvcHRpb25zLCBjYWxsYmFjaywgYXJncyApIHsKLSAgICB2YXIgcmV0
LCBuYW1lLAotICAgICAgICBvbGQgPSB7fTsKLQotICAgIC8vIFJlbWVtYmVyIHRoZSBvbGQgdmFs
dWVzLCBhbmQgaW5zZXJ0IHRoZSBuZXcgb25lcwotICAgIGZvciAoIG5hbWUgaW4gb3B0aW9ucyAp
IHsKLSAgICAgICAgb2xkWyBuYW1lIF0gPSBlbGVtLnN0eWxlWyBuYW1lIF07Ci0gICAgICAgIGVs
ZW0uc3R5bGVbIG5hbWUgXSA9IG9wdGlvbnNbIG5hbWUgXTsKLSAgICB9Ci0KLSAgICByZXQgPSBj
YWxsYmFjay5hcHBseSggZWxlbSwgYXJncyB8fCBbXSApOwotCi0gICAgLy8gUmV2ZXJ0IHRoZSBv
bGQgdmFsdWVzCi0gICAgZm9yICggbmFtZSBpbiBvcHRpb25zICkgewotICAgICAgICBlbGVtLnN0
eWxlWyBuYW1lIF0gPSBvbGRbIG5hbWUgXTsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmV0OwotfTsK
LQotCi12YXIKLSAgICAvLyBzd2FwcGFibGUgaWYgZGlzcGxheSBpcyBub25lIG9yIHN0YXJ0cyB3
aXRoIHRhYmxlIGV4Y2VwdCAidGFibGUiLCAidGFibGUtY2VsbCIsIG9yICJ0YWJsZS1jYXB0aW9u
IgotICAgIC8vIHNlZSBoZXJlIGZvciBkaXNwbGF5IHZhbHVlczogaHR0cHM6Ly9kZXZlbG9wZXIu
bW96aWxsYS5vcmcvZW4tVVMvZG9jcy9DU1MvZGlzcGxheQotICAgIHJkaXNwbGF5c3dhcCA9IC9e
KG5vbmV8dGFibGUoPyEtY1tlYV0pLispLywKLSAgICBybnVtc3BsaXQgPSBuZXcgUmVnRXhwKCAi
XigiICsgcG51bSArICIpKC4qKSQiLCAiaSIgKSwKLSAgICBycmVsTnVtID0gbmV3IFJlZ0V4cCgg
Il4oWystXSk9KCIgKyBwbnVtICsgIikiLCAiaSIgKSwKLQotICAgIGNzc1Nob3cgPSB7IHBvc2l0
aW9uOiAiYWJzb2x1dGUiLCB2aXNpYmlsaXR5OiAiaGlkZGVuIiwgZGlzcGxheTogImJsb2NrIiB9
LAotICAgIGNzc05vcm1hbFRyYW5zZm9ybSA9IHsKLSAgICAgICAgbGV0dGVyU3BhY2luZzogMCwK
LSAgICAgICAgZm9udFdlaWdodDogNDAwCi0gICAgfSwKLQotICAgIGNzc1ByZWZpeGVzID0gWyAi
V2Via2l0IiwgIk8iLCAiTW96IiwgIm1zIiBdOwotCi0vLyByZXR1cm4gYSBjc3MgcHJvcGVydHkg
bWFwcGVkIHRvIGEgcG90ZW50aWFsbHkgdmVuZG9yIHByZWZpeGVkIHByb3BlcnR5Ci1mdW5jdGlv
biB2ZW5kb3JQcm9wTmFtZSggc3R5bGUsIG5hbWUgKSB7Ci0KLSAgICAvLyBzaG9ydGN1dCBmb3Ig
bmFtZXMgdGhhdCBhcmUgbm90IHZlbmRvciBwcmVmaXhlZAotICAgIGlmICggbmFtZSBpbiBzdHls
ZSApIHsKLSAgICAgICAgcmV0dXJuIG5hbWU7Ci0gICAgfQotCi0gICAgLy8gY2hlY2sgZm9yIHZl
bmRvciBwcmVmaXhlZCBuYW1lcwotICAgIHZhciBjYXBOYW1lID0gbmFtZVswXS50b1VwcGVyQ2Fz
ZSgpICsgbmFtZS5zbGljZSgxKSwKLSAgICAgICAgb3JpZ05hbWUgPSBuYW1lLAotICAgICAgICBp
ID0gY3NzUHJlZml4ZXMubGVuZ3RoOwotCi0gICAgd2hpbGUgKCBpLS0gKSB7Ci0gICAgICAgIG5h
bWUgPSBjc3NQcmVmaXhlc1sgaSBdICsgY2FwTmFtZTsKLSAgICAgICAgaWYgKCBuYW1lIGluIHN0
eWxlICkgewotICAgICAgICAgICAgcmV0dXJuIG5hbWU7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICByZXR1cm4gb3JpZ05hbWU7Ci19Ci0KLWZ1bmN0aW9uIHNldFBvc2l0aXZlTnVtYmVyKCBlbGVt
LCB2YWx1ZSwgc3VidHJhY3QgKSB7Ci0gICAgdmFyIG1hdGNoZXMgPSBybnVtc3BsaXQuZXhlYygg
dmFsdWUgKTsKLSAgICByZXR1cm4gbWF0Y2hlcyA/Ci0gICAgICAgIC8vIEd1YXJkIGFnYWluc3Qg
dW5kZWZpbmVkICJzdWJ0cmFjdCIsIGUuZy4sIHdoZW4gdXNlZCBhcyBpbiBjc3NIb29rcwotICAg
ICAgICBNYXRoLm1heCggMCwgbWF0Y2hlc1sgMSBdIC0gKCBzdWJ0cmFjdCB8fCAwICkgKSArICgg
bWF0Y2hlc1sgMiBdIHx8ICJweCIgKSA6Ci0gICAgICAgIHZhbHVlOwotfQotCi1mdW5jdGlvbiBh
dWdtZW50V2lkdGhPckhlaWdodCggZWxlbSwgbmFtZSwgZXh0cmEsIGlzQm9yZGVyQm94LCBzdHls
ZXMgKSB7Ci0gICAgdmFyIGkgPSBleHRyYSA9PT0gKCBpc0JvcmRlckJveCA/ICJib3JkZXIiIDog
ImNvbnRlbnQiICkgPwotICAgICAgICAvLyBJZiB3ZSBhbHJlYWR5IGhhdmUgdGhlIHJpZ2h0IG1l
YXN1cmVtZW50LCBhdm9pZCBhdWdtZW50YXRpb24KLSAgICAgICAgNCA6Ci0gICAgICAgIC8vIE90
aGVyd2lzZSBpbml0aWFsaXplIGZvciBob3Jpem9udGFsIG9yIHZlcnRpY2FsIHByb3BlcnRpZXMK
LSAgICAgICAgbmFtZSA9PT0gIndpZHRoIiA/IDEgOiAwLAotCi0gICAgICAgIHZhbCA9IDA7Ci0K
LSAgICBmb3IgKCA7IGkgPCA0OyBpICs9IDIgKSB7Ci0gICAgICAgIC8vIGJvdGggYm94IG1vZGVs
cyBleGNsdWRlIG1hcmdpbiwgc28gYWRkIGl0IGlmIHdlIHdhbnQgaXQKLSAgICAgICAgaWYgKCBl
eHRyYSA9PT0gIm1hcmdpbiIgKSB7Ci0gICAgICAgICAgICB2YWwgKz0galF1ZXJ5LmNzcyggZWxl
bSwgZXh0cmEgKyBjc3NFeHBhbmRbIGkgXSwgdHJ1ZSwgc3R5bGVzICk7Ci0gICAgICAgIH0KLQot
ICAgICAgICBpZiAoIGlzQm9yZGVyQm94ICkgewotICAgICAgICAgICAgLy8gYm9yZGVyLWJveCBp
bmNsdWRlcyBwYWRkaW5nLCBzbyByZW1vdmUgaXQgaWYgd2Ugd2FudCBjb250ZW50Ci0gICAgICAg
ICAgICBpZiAoIGV4dHJhID09PSAiY29udGVudCIgKSB7Ci0gICAgICAgICAgICAgICAgdmFsIC09
IGpRdWVyeS5jc3MoIGVsZW0sICJwYWRkaW5nIiArIGNzc0V4cGFuZFsgaSBdLCB0cnVlLCBzdHls
ZXMgKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gYXQgdGhpcyBwb2ludCwgZXh0
cmEgaXNuJ3QgYm9yZGVyIG5vciBtYXJnaW4sIHNvIHJlbW92ZSBib3JkZXIKLSAgICAgICAgICAg
IGlmICggZXh0cmEgIT09ICJtYXJnaW4iICkgewotICAgICAgICAgICAgICAgIHZhbCAtPSBqUXVl
cnkuY3NzKCBlbGVtLCAiYm9yZGVyIiArIGNzc0V4cGFuZFsgaSBdICsgIldpZHRoIiwgdHJ1ZSwg
c3R5bGVzICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAv
LyBhdCB0aGlzIHBvaW50LCBleHRyYSBpc24ndCBjb250ZW50LCBzbyBhZGQgcGFkZGluZwotICAg
ICAgICAgICAgdmFsICs9IGpRdWVyeS5jc3MoIGVsZW0sICJwYWRkaW5nIiArIGNzc0V4cGFuZFsg
aSBdLCB0cnVlLCBzdHlsZXMgKTsKLQotICAgICAgICAgICAgLy8gYXQgdGhpcyBwb2ludCwgZXh0
cmEgaXNuJ3QgY29udGVudCBub3IgcGFkZGluZywgc28gYWRkIGJvcmRlcgotICAgICAgICAgICAg
aWYgKCBleHRyYSAhPT0gInBhZGRpbmciICkgewotICAgICAgICAgICAgICAgIHZhbCArPSBqUXVl
cnkuY3NzKCBlbGVtLCAiYm9yZGVyIiArIGNzc0V4cGFuZFsgaSBdICsgIldpZHRoIiwgdHJ1ZSwg
c3R5bGVzICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4g
dmFsOwotfQotCi1mdW5jdGlvbiBnZXRXaWR0aE9ySGVpZ2h0KCBlbGVtLCBuYW1lLCBleHRyYSAp
IHsKLQotICAgIC8vIFN0YXJ0IHdpdGggb2Zmc2V0IHByb3BlcnR5LCB3aGljaCBpcyBlcXVpdmFs
ZW50IHRvIHRoZSBib3JkZXItYm94IHZhbHVlCi0gICAgdmFyIHZhbHVlSXNCb3JkZXJCb3ggPSB0
cnVlLAotICAgICAgICB2YWwgPSBuYW1lID09PSAid2lkdGgiID8gZWxlbS5vZmZzZXRXaWR0aCA6
IGVsZW0ub2Zmc2V0SGVpZ2h0LAotICAgICAgICBzdHlsZXMgPSBnZXRTdHlsZXMoIGVsZW0gKSwK
LSAgICAgICAgaXNCb3JkZXJCb3ggPSBqUXVlcnkuY3NzKCBlbGVtLCAiYm94U2l6aW5nIiwgZmFs
c2UsIHN0eWxlcyApID09PSAiYm9yZGVyLWJveCI7Ci0KLSAgICAvLyBzb21lIG5vbi1odG1sIGVs
ZW1lbnRzIHJldHVybiB1bmRlZmluZWQgZm9yIG9mZnNldFdpZHRoLCBzbyBjaGVjayBmb3IgbnVs
bC91bmRlZmluZWQKLSAgICAvLyBzdmcgLSBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3No
b3dfYnVnLmNnaT9pZD02NDkyODUKLSAgICAvLyBNYXRoTUwgLSBodHRwczovL2J1Z3ppbGxhLm1v
emlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD00OTE2NjgKLSAgICBpZiAoIHZhbCA8PSAwIHx8IHZh
bCA9PSBudWxsICkgewotICAgICAgICAvLyBGYWxsIGJhY2sgdG8gY29tcHV0ZWQgdGhlbiB1bmNv
bXB1dGVkIGNzcyBpZiBuZWNlc3NhcnkKLSAgICAgICAgdmFsID0gY3VyQ1NTKCBlbGVtLCBuYW1l
LCBzdHlsZXMgKTsKLSAgICAgICAgaWYgKCB2YWwgPCAwIHx8IHZhbCA9PSBudWxsICkgewotICAg
ICAgICAgICAgdmFsID0gZWxlbS5zdHlsZVsgbmFtZSBdOwotICAgICAgICB9Ci0KLSAgICAgICAg
Ly8gQ29tcHV0ZWQgdW5pdCBpcyBub3QgcGl4ZWxzLiBTdG9wIGhlcmUgYW5kIHJldHVybi4KLSAg
ICAgICAgaWYgKCBybnVtbm9ucHgudGVzdCh2YWwpICkgewotICAgICAgICAgICAgcmV0dXJuIHZh
bDsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIHdlIG5lZWQgdGhlIGNoZWNrIGZvciBzdHlsZSBp
biBjYXNlIGEgYnJvd3NlciB3aGljaCByZXR1cm5zIHVucmVsaWFibGUgdmFsdWVzCi0gICAgICAg
IC8vIGZvciBnZXRDb21wdXRlZFN0eWxlIHNpbGVudGx5IGZhbGxzIGJhY2sgdG8gdGhlIHJlbGlh
YmxlIGVsZW0uc3R5bGUKLSAgICAgICAgdmFsdWVJc0JvcmRlckJveCA9IGlzQm9yZGVyQm94ICYm
Ci0gICAgICAgICAgICAoIHN1cHBvcnQuYm94U2l6aW5nUmVsaWFibGUoKSB8fCB2YWwgPT09IGVs
ZW0uc3R5bGVbIG5hbWUgXSApOwotCi0gICAgICAgIC8vIE5vcm1hbGl6ZSAiIiwgYXV0bywgYW5k
IHByZXBhcmUgZm9yIGV4dHJhCi0gICAgICAgIHZhbCA9IHBhcnNlRmxvYXQoIHZhbCApIHx8IDA7
Ci0gICAgfQotCi0gICAgLy8gdXNlIHRoZSBhY3RpdmUgYm94LXNpemluZyBtb2RlbCB0byBhZGQv
c3VidHJhY3QgaXJyZWxldmFudCBzdHlsZXMKLSAgICByZXR1cm4gKCB2YWwgKwotICAgICAgICBh
dWdtZW50V2lkdGhPckhlaWdodCgKLSAgICAgICAgICAgIGVsZW0sCi0gICAgICAgICAgICBuYW1l
LAotICAgICAgICAgICAgZXh0cmEgfHwgKCBpc0JvcmRlckJveCA/ICJib3JkZXIiIDogImNvbnRl
bnQiICksCi0gICAgICAgICAgICB2YWx1ZUlzQm9yZGVyQm94LAotICAgICAgICAgICAgc3R5bGVz
Ci0gICAgICAgICkKLSAgICApICsgInB4IjsKLX0KLQotZnVuY3Rpb24gc2hvd0hpZGUoIGVsZW1l
bnRzLCBzaG93ICkgewotICAgIHZhciBkaXNwbGF5LCBlbGVtLCBoaWRkZW4sCi0gICAgICAgIHZh
bHVlcyA9IFtdLAotICAgICAgICBpbmRleCA9IDAsCi0gICAgICAgIGxlbmd0aCA9IGVsZW1lbnRz
Lmxlbmd0aDsKLQotICAgIGZvciAoIDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7Ci0gICAg
ICAgIGVsZW0gPSBlbGVtZW50c1sgaW5kZXggXTsKLSAgICAgICAgaWYgKCAhZWxlbS5zdHlsZSAp
IHsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFsdWVzWyBp
bmRleCBdID0gZGF0YV9wcml2LmdldCggZWxlbSwgIm9sZGRpc3BsYXkiICk7Ci0gICAgICAgIGRp
c3BsYXkgPSBlbGVtLnN0eWxlLmRpc3BsYXk7Ci0gICAgICAgIGlmICggc2hvdyApIHsKLSAgICAg
ICAgICAgIC8vIFJlc2V0IHRoZSBpbmxpbmUgZGlzcGxheSBvZiB0aGlzIGVsZW1lbnQgdG8gbGVh
cm4gaWYgaXQgaXMKLSAgICAgICAgICAgIC8vIGJlaW5nIGhpZGRlbiBieSBjYXNjYWRlZCBydWxl
cyBvciBub3QKLSAgICAgICAgICAgIGlmICggIXZhbHVlc1sgaW5kZXggXSAmJiBkaXNwbGF5ID09
PSAibm9uZSIgKSB7Ci0gICAgICAgICAgICAgICAgZWxlbS5zdHlsZS5kaXNwbGF5ID0gIiI7Ci0g
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIFNldCBlbGVtZW50cyB3aGljaCBoYXZlIGJl
ZW4gb3ZlcnJpZGRlbiB3aXRoIGRpc3BsYXk6IG5vbmUKLSAgICAgICAgICAgIC8vIGluIGEgc3R5
bGVzaGVldCB0byB3aGF0ZXZlciB0aGUgZGVmYXVsdCBicm93c2VyIHN0eWxlIGlzCi0gICAgICAg
ICAgICAvLyBmb3Igc3VjaCBhbiBlbGVtZW50Ci0gICAgICAgICAgICBpZiAoIGVsZW0uc3R5bGUu
ZGlzcGxheSA9PT0gIiIgJiYgaXNIaWRkZW4oIGVsZW0gKSApIHsKLSAgICAgICAgICAgICAgICB2
YWx1ZXNbIGluZGV4IF0gPSBkYXRhX3ByaXYuYWNjZXNzKCBlbGVtLCAib2xkZGlzcGxheSIsIGRl
ZmF1bHREaXNwbGF5KGVsZW0ubm9kZU5hbWUpICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0g
ZWxzZSB7Ci0KLSAgICAgICAgICAgIGlmICggIXZhbHVlc1sgaW5kZXggXSApIHsKLSAgICAgICAg
ICAgICAgICBoaWRkZW4gPSBpc0hpZGRlbiggZWxlbSApOwotCi0gICAgICAgICAgICAgICAgaWYg
KCBkaXNwbGF5ICYmIGRpc3BsYXkgIT09ICJub25lIiB8fCAhaGlkZGVuICkgewotICAgICAgICAg
ICAgICAgICAgICBkYXRhX3ByaXYuc2V0KCBlbGVtLCAib2xkZGlzcGxheSIsIGhpZGRlbiA/IGRp
c3BsYXkgOiBqUXVlcnkuY3NzKGVsZW0sICJkaXNwbGF5IikgKTsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBTZXQgdGhlIGRpc3Bs
YXkgb2YgbW9zdCBvZiB0aGUgZWxlbWVudHMgaW4gYSBzZWNvbmQgbG9vcAotICAgIC8vIHRvIGF2
b2lkIHRoZSBjb25zdGFudCByZWZsb3cKLSAgICBmb3IgKCBpbmRleCA9IDA7IGluZGV4IDwgbGVu
Z3RoOyBpbmRleCsrICkgewotICAgICAgICBlbGVtID0gZWxlbWVudHNbIGluZGV4IF07Ci0gICAg
ICAgIGlmICggIWVsZW0uc3R5bGUgKSB7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
fQotICAgICAgICBpZiAoICFzaG93IHx8IGVsZW0uc3R5bGUuZGlzcGxheSA9PT0gIm5vbmUiIHx8
IGVsZW0uc3R5bGUuZGlzcGxheSA9PT0gIiIgKSB7Ci0gICAgICAgICAgICBlbGVtLnN0eWxlLmRp
c3BsYXkgPSBzaG93ID8gdmFsdWVzWyBpbmRleCBdIHx8ICIiIDogIm5vbmUiOwotICAgICAgICB9
Ci0gICAgfQotCi0gICAgcmV0dXJuIGVsZW1lbnRzOwotfQotCi1qUXVlcnkuZXh0ZW5kKHsKLSAg
ICAvLyBBZGQgaW4gc3R5bGUgcHJvcGVydHkgaG9va3MgZm9yIG92ZXJyaWRpbmcgdGhlIGRlZmF1
bHQKLSAgICAvLyBiZWhhdmlvciBvZiBnZXR0aW5nIGFuZCBzZXR0aW5nIGEgc3R5bGUgcHJvcGVy
dHkKLSAgICBjc3NIb29rczogewotICAgICAgICBvcGFjaXR5OiB7Ci0gICAgICAgICAgICBnZXQ6
IGZ1bmN0aW9uKCBlbGVtLCBjb21wdXRlZCApIHsKLSAgICAgICAgICAgICAgICBpZiAoIGNvbXB1
dGVkICkgewotICAgICAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgYWx3YXlzIGdldCBhIG51
bWJlciBiYWNrIGZyb20gb3BhY2l0eQotICAgICAgICAgICAgICAgICAgICB2YXIgcmV0ID0gY3Vy
Q1NTKCBlbGVtLCAib3BhY2l0eSIgKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldCA9
PT0gIiIgPyAiMSIgOiByZXQ7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0gICAgfSwKLQotICAgIC8vIERvbid0IGF1dG9tYXRpY2FsbHkgYWRkICJweCIgdG8g
dGhlc2UgcG9zc2libHktdW5pdGxlc3MgcHJvcGVydGllcwotICAgIGNzc051bWJlcjogewotICAg
ICAgICAiY29sdW1uQ291bnQiOiB0cnVlLAotICAgICAgICAiZmlsbE9wYWNpdHkiOiB0cnVlLAot
ICAgICAgICAiZm9udFdlaWdodCI6IHRydWUsCi0gICAgICAgICJsaW5lSGVpZ2h0IjogdHJ1ZSwK
LSAgICAgICAgIm9wYWNpdHkiOiB0cnVlLAotICAgICAgICAib3JkZXIiOiB0cnVlLAotICAgICAg
ICAib3JwaGFucyI6IHRydWUsCi0gICAgICAgICJ3aWRvd3MiOiB0cnVlLAotICAgICAgICAieklu
ZGV4IjogdHJ1ZSwKLSAgICAgICAgInpvb20iOiB0cnVlCi0gICAgfSwKLQotICAgIC8vIEFkZCBp
biBwcm9wZXJ0aWVzIHdob3NlIG5hbWVzIHlvdSB3aXNoIHRvIGZpeCBiZWZvcmUKLSAgICAvLyBz
ZXR0aW5nIG9yIGdldHRpbmcgdGhlIHZhbHVlCi0gICAgY3NzUHJvcHM6IHsKLSAgICAgICAgLy8g
bm9ybWFsaXplIGZsb2F0IGNzcyBwcm9wZXJ0eQotICAgICAgICAiZmxvYXQiOiAiY3NzRmxvYXQi
Ci0gICAgfSwKLQotICAgIC8vIEdldCBhbmQgc2V0IHRoZSBzdHlsZSBwcm9wZXJ0eSBvbiBhIERP
TSBOb2RlCi0gICAgc3R5bGU6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCB2YWx1ZSwgZXh0cmEgKSB7
Ci0gICAgICAgIC8vIERvbid0IHNldCBzdHlsZXMgb24gdGV4dCBhbmQgY29tbWVudCBub2Rlcwot
ICAgICAgICBpZiAoICFlbGVtIHx8IGVsZW0ubm9kZVR5cGUgPT09IDMgfHwgZWxlbS5ub2RlVHlw
ZSA9PT0gOCB8fCAhZWxlbS5zdHlsZSApIHsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotCi0gICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHdlJ3JlIHdvcmtpbmcgd2l0aCB0aGUgcmln
aHQgbmFtZQotICAgICAgICB2YXIgcmV0LCB0eXBlLCBob29rcywKLSAgICAgICAgICAgIG9yaWdO
YW1lID0galF1ZXJ5LmNhbWVsQ2FzZSggbmFtZSApLAotICAgICAgICAgICAgc3R5bGUgPSBlbGVt
LnN0eWxlOwotCi0gICAgICAgIG5hbWUgPSBqUXVlcnkuY3NzUHJvcHNbIG9yaWdOYW1lIF0gfHwg
KCBqUXVlcnkuY3NzUHJvcHNbIG9yaWdOYW1lIF0gPSB2ZW5kb3JQcm9wTmFtZSggc3R5bGUsIG9y
aWdOYW1lICkgKTsKLQotICAgICAgICAvLyBnZXRzIGhvb2sgZm9yIHRoZSBwcmVmaXhlZCB2ZXJz
aW9uCi0gICAgICAgIC8vIGZvbGxvd2VkIGJ5IHRoZSB1bnByZWZpeGVkIHZlcnNpb24KLSAgICAg
ICAgaG9va3MgPSBqUXVlcnkuY3NzSG9va3NbIG5hbWUgXSB8fCBqUXVlcnkuY3NzSG9va3NbIG9y
aWdOYW1lIF07Ci0KLSAgICAgICAgLy8gQ2hlY2sgaWYgd2UncmUgc2V0dGluZyBhIHZhbHVlCi0g
ICAgICAgIGlmICggdmFsdWUgIT09IHVuZGVmaW5lZCApIHsKLSAgICAgICAgICAgIHR5cGUgPSB0
eXBlb2YgdmFsdWU7Ci0KLSAgICAgICAgICAgIC8vIGNvbnZlcnQgcmVsYXRpdmUgbnVtYmVyIHN0
cmluZ3MgKCs9IG9yIC09KSB0byByZWxhdGl2ZSBudW1iZXJzLiAjNzM0NQotICAgICAgICAgICAg
aWYgKCB0eXBlID09PSAic3RyaW5nIiAmJiAocmV0ID0gcnJlbE51bS5leGVjKCB2YWx1ZSApKSAp
IHsKLSAgICAgICAgICAgICAgICB2YWx1ZSA9ICggcmV0WzFdICsgMSApICogcmV0WzJdICsgcGFy
c2VGbG9hdCggalF1ZXJ5LmNzcyggZWxlbSwgbmFtZSApICk7Ci0gICAgICAgICAgICAgICAgLy8g
Rml4ZXMgYnVnICM5MjM3Ci0gICAgICAgICAgICAgICAgdHlwZSA9ICJudW1iZXIiOwotICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCBudWxsIGFuZCBOYU4gdmFs
dWVzIGFyZW4ndCBzZXQuIFNlZTogIzcxMTYKLSAgICAgICAgICAgIGlmICggdmFsdWUgPT0gbnVs
bCB8fCB2YWx1ZSAhPT0gdmFsdWUgKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICAvLyBJZiBhIG51bWJlciB3YXMgcGFzc2VkIGluLCBhZGQg
J3B4JyB0byB0aGUgKGV4Y2VwdCBmb3IgY2VydGFpbiBDU1MgcHJvcGVydGllcykKLSAgICAgICAg
ICAgIGlmICggdHlwZSA9PT0gIm51bWJlciIgJiYgIWpRdWVyeS5jc3NOdW1iZXJbIG9yaWdOYW1l
IF0gKSB7Ci0gICAgICAgICAgICAgICAgdmFsdWUgKz0gInB4IjsKLSAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgLy8gRml4ZXMgIzg5MDgsIGl0IGNhbiBiZSBkb25lIG1vcmUgY29ycmVjdGx5
IGJ5IHNwZWNpZnlpbmcgc2V0dGVycyBpbiBjc3NIb29rcywKLSAgICAgICAgICAgIC8vIGJ1dCBp
dCB3b3VsZCBtZWFuIHRvIGRlZmluZSBlaWdodCAoZm9yIGV2ZXJ5IHByb2JsZW1hdGljIHByb3Bl
cnR5KSBpZGVudGljYWwgZnVuY3Rpb25zCi0gICAgICAgICAgICBpZiAoICFzdXBwb3J0LmNsZWFy
Q2xvbmVTdHlsZSAmJiB2YWx1ZSA9PT0gIiIgJiYgbmFtZS5pbmRleE9mKCAiYmFja2dyb3VuZCIg
KSA9PT0gMCApIHsKLSAgICAgICAgICAgICAgICBzdHlsZVsgbmFtZSBdID0gImluaGVyaXQiOwot
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBJZiBhIGhvb2sgd2FzIHByb3ZpZGVkLCB1
c2UgdGhhdCB2YWx1ZSwgb3RoZXJ3aXNlIGp1c3Qgc2V0IHRoZSBzcGVjaWZpZWQgdmFsdWUKLSAg
ICAgICAgICAgIGlmICggIWhvb2tzIHx8ICEoInNldCIgaW4gaG9va3MpIHx8ICh2YWx1ZSA9IGhv
b2tzLnNldCggZWxlbSwgdmFsdWUsIGV4dHJhICkpICE9PSB1bmRlZmluZWQgKSB7Ci0gICAgICAg
ICAgICAgICAgLy8gU3VwcG9ydDogQ2hyb21lLCBTYWZhcmkKLSAgICAgICAgICAgICAgICAvLyBT
ZXR0aW5nIHN0eWxlIHRvIGJsYW5rIHN0cmluZyByZXF1aXJlZCB0byBkZWxldGUgInN0eWxlOiB4
ICFpbXBvcnRhbnQ7IgotICAgICAgICAgICAgICAgIHN0eWxlWyBuYW1lIF0gPSAiIjsKLSAgICAg
ICAgICAgICAgICBzdHlsZVsgbmFtZSBdID0gdmFsdWU7Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIElmIGEgaG9vayB3YXMgcHJvdmlkZWQgZ2V0IHRo
ZSBub24tY29tcHV0ZWQgdmFsdWUgZnJvbSB0aGVyZQotICAgICAgICAgICAgaWYgKCBob29rcyAm
JiAiZ2V0IiBpbiBob29rcyAmJiAocmV0ID0gaG9va3MuZ2V0KCBlbGVtLCBmYWxzZSwgZXh0cmEg
KSkgIT09IHVuZGVmaW5lZCApIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gcmV0OwotICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICAvLyBPdGhlcndpc2UganVzdCBnZXQgdGhlIHZhbHVlIGZy
b20gdGhlIHN0eWxlIG9iamVjdAotICAgICAgICAgICAgcmV0dXJuIHN0eWxlWyBuYW1lIF07Ci0g
ICAgICAgIH0KLSAgICB9LAotCi0gICAgY3NzOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgZXh0cmEs
IHN0eWxlcyApIHsKLSAgICAgICAgdmFyIHZhbCwgbnVtLCBob29rcywKLSAgICAgICAgICAgIG9y
aWdOYW1lID0galF1ZXJ5LmNhbWVsQ2FzZSggbmFtZSApOwotCi0gICAgICAgIC8vIE1ha2Ugc3Vy
ZSB0aGF0IHdlJ3JlIHdvcmtpbmcgd2l0aCB0aGUgcmlnaHQgbmFtZQotICAgICAgICBuYW1lID0g
alF1ZXJ5LmNzc1Byb3BzWyBvcmlnTmFtZSBdIHx8ICggalF1ZXJ5LmNzc1Byb3BzWyBvcmlnTmFt
ZSBdID0gdmVuZG9yUHJvcE5hbWUoIGVsZW0uc3R5bGUsIG9yaWdOYW1lICkgKTsKLQotICAgICAg
ICAvLyBnZXRzIGhvb2sgZm9yIHRoZSBwcmVmaXhlZCB2ZXJzaW9uCi0gICAgICAgIC8vIGZvbGxv
d2VkIGJ5IHRoZSB1bnByZWZpeGVkIHZlcnNpb24KLSAgICAgICAgaG9va3MgPSBqUXVlcnkuY3Nz
SG9va3NbIG5hbWUgXSB8fCBqUXVlcnkuY3NzSG9va3NbIG9yaWdOYW1lIF07Ci0KLSAgICAgICAg
Ly8gSWYgYSBob29rIHdhcyBwcm92aWRlZCBnZXQgdGhlIGNvbXB1dGVkIHZhbHVlIGZyb20gdGhl
cmUKLSAgICAgICAgaWYgKCBob29rcyAmJiAiZ2V0IiBpbiBob29rcyApIHsKLSAgICAgICAgICAg
IHZhbCA9IGhvb2tzLmdldCggZWxlbSwgdHJ1ZSwgZXh0cmEgKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIC8vIE90aGVyd2lzZSwgaWYgYSB3YXkgdG8gZ2V0IHRoZSBjb21wdXRlZCB2YWx1ZSBleGlz
dHMsIHVzZSB0aGF0Ci0gICAgICAgIGlmICggdmFsID09PSB1bmRlZmluZWQgKSB7Ci0gICAgICAg
ICAgICB2YWwgPSBjdXJDU1MoIGVsZW0sIG5hbWUsIHN0eWxlcyApOwotICAgICAgICB9Ci0KLSAg
ICAgICAgLy9jb252ZXJ0ICJub3JtYWwiIHRvIGNvbXB1dGVkIHZhbHVlCi0gICAgICAgIGlmICgg
dmFsID09PSAibm9ybWFsIiAmJiBuYW1lIGluIGNzc05vcm1hbFRyYW5zZm9ybSApIHsKLSAgICAg
ICAgICAgIHZhbCA9IGNzc05vcm1hbFRyYW5zZm9ybVsgbmFtZSBdOwotICAgICAgICB9Ci0KLSAg
ICAgICAgLy8gUmV0dXJuLCBjb252ZXJ0aW5nIHRvIG51bWJlciBpZiBmb3JjZWQgb3IgYSBxdWFs
aWZpZXIgd2FzIHByb3ZpZGVkIGFuZCB2YWwgbG9va3MgbnVtZXJpYwotICAgICAgICBpZiAoIGV4
dHJhID09PSAiIiB8fCBleHRyYSApIHsKLSAgICAgICAgICAgIG51bSA9IHBhcnNlRmxvYXQoIHZh
bCApOwotICAgICAgICAgICAgcmV0dXJuIGV4dHJhID09PSB0cnVlIHx8IGpRdWVyeS5pc051bWVy
aWMoIG51bSApID8gbnVtIHx8IDAgOiB2YWw7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHZh
bDsKLSAgICB9Ci19KTsKLQotalF1ZXJ5LmVhY2goWyAiaGVpZ2h0IiwgIndpZHRoIiBdLCBmdW5j
dGlvbiggaSwgbmFtZSApIHsKLSAgICBqUXVlcnkuY3NzSG9va3NbIG5hbWUgXSA9IHsKLSAgICAg
ICAgZ2V0OiBmdW5jdGlvbiggZWxlbSwgY29tcHV0ZWQsIGV4dHJhICkgewotICAgICAgICAgICAg
aWYgKCBjb21wdXRlZCApIHsKLSAgICAgICAgICAgICAgICAvLyBjZXJ0YWluIGVsZW1lbnRzIGNh
biBoYXZlIGRpbWVuc2lvbiBpbmZvIGlmIHdlIGludmlzaWJseSBzaG93IHRoZW0KLSAgICAgICAg
ICAgICAgICAvLyBob3dldmVyLCBpdCBtdXN0IGhhdmUgYSBjdXJyZW50IGRpc3BsYXkgc3R5bGUg
dGhhdCB3b3VsZCBiZW5lZml0IGZyb20gdGhpcwotICAgICAgICAgICAgICAgIHJldHVybiBlbGVt
Lm9mZnNldFdpZHRoID09PSAwICYmIHJkaXNwbGF5c3dhcC50ZXN0KCBqUXVlcnkuY3NzKCBlbGVt
LCAiZGlzcGxheSIgKSApID8KLSAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LnN3YXAoIGVsZW0s
IGNzc1Nob3csIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdl
dFdpZHRoT3JIZWlnaHQoIGVsZW0sIG5hbWUsIGV4dHJhICk7Ci0gICAgICAgICAgICAgICAgICAg
IH0pIDoKLSAgICAgICAgICAgICAgICAgICAgZ2V0V2lkdGhPckhlaWdodCggZWxlbSwgbmFtZSwg
ZXh0cmEgKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSwKLQotICAgICAgICBzZXQ6IGZ1bmN0
aW9uKCBlbGVtLCB2YWx1ZSwgZXh0cmEgKSB7Ci0gICAgICAgICAgICB2YXIgc3R5bGVzID0gZXh0
cmEgJiYgZ2V0U3R5bGVzKCBlbGVtICk7Ci0gICAgICAgICAgICByZXR1cm4gc2V0UG9zaXRpdmVO
dW1iZXIoIGVsZW0sIHZhbHVlLCBleHRyYSA/Ci0gICAgICAgICAgICAgICAgYXVnbWVudFdpZHRo
T3JIZWlnaHQoCi0gICAgICAgICAgICAgICAgICAgIGVsZW0sCi0gICAgICAgICAgICAgICAgICAg
IG5hbWUsCi0gICAgICAgICAgICAgICAgICAgIGV4dHJhLAotICAgICAgICAgICAgICAgICAgICBq
UXVlcnkuY3NzKCBlbGVtLCAiYm94U2l6aW5nIiwgZmFsc2UsIHN0eWxlcyApID09PSAiYm9yZGVy
LWJveCIsCi0gICAgICAgICAgICAgICAgICAgIHN0eWxlcwotICAgICAgICAgICAgICAgICkgOiAw
Ci0gICAgICAgICAgICApOwotICAgICAgICB9Ci0gICAgfTsKLX0pOwotCi0vLyBTdXBwb3J0OiBB
bmRyb2lkIDIuMwotalF1ZXJ5LmNzc0hvb2tzLm1hcmdpblJpZ2h0ID0gYWRkR2V0SG9va0lmKCBz
dXBwb3J0LnJlbGlhYmxlTWFyZ2luUmlnaHQsCi0gICAgZnVuY3Rpb24oIGVsZW0sIGNvbXB1dGVk
ICkgewotICAgICAgICBpZiAoIGNvbXB1dGVkICkgewotICAgICAgICAgICAgLy8gV2ViS2l0IEJ1
ZyAxMzM0MyAtIGdldENvbXB1dGVkU3R5bGUgcmV0dXJucyB3cm9uZyB2YWx1ZSBmb3IgbWFyZ2lu
LXJpZ2h0Ci0gICAgICAgICAgICAvLyBXb3JrIGFyb3VuZCBieSB0ZW1wb3JhcmlseSBzZXR0aW5n
IGVsZW1lbnQgZGlzcGxheSB0byBpbmxpbmUtYmxvY2sKLSAgICAgICAgICAgIHJldHVybiBqUXVl
cnkuc3dhcCggZWxlbSwgeyAiZGlzcGxheSI6ICJpbmxpbmUtYmxvY2siIH0sCi0gICAgICAgICAg
ICAgICAgY3VyQ1NTLCBbIGVsZW0sICJtYXJnaW5SaWdodCIgXSApOwotICAgICAgICB9Ci0gICAg
fQotKTsKLQotLy8gVGhlc2UgaG9va3MgYXJlIHVzZWQgYnkgYW5pbWF0ZSB0byBleHBhbmQgcHJv
cGVydGllcwotalF1ZXJ5LmVhY2goewotICAgIG1hcmdpbjogIiIsCi0gICAgcGFkZGluZzogIiIs
Ci0gICAgYm9yZGVyOiAiV2lkdGgiCi19LCBmdW5jdGlvbiggcHJlZml4LCBzdWZmaXggKSB7Ci0g
ICAgalF1ZXJ5LmNzc0hvb2tzWyBwcmVmaXggKyBzdWZmaXggXSA9IHsKLSAgICAgICAgZXhwYW5k
OiBmdW5jdGlvbiggdmFsdWUgKSB7Ci0gICAgICAgICAgICB2YXIgaSA9IDAsCi0gICAgICAgICAg
ICAgICAgZXhwYW5kZWQgPSB7fSwKLQotICAgICAgICAgICAgICAgIC8vIGFzc3VtZXMgYSBzaW5n
bGUgbnVtYmVyIGlmIG5vdCBhIHN0cmluZwotICAgICAgICAgICAgICAgIHBhcnRzID0gdHlwZW9m
IHZhbHVlID09PSAic3RyaW5nIiA/IHZhbHVlLnNwbGl0KCIgIikgOiBbIHZhbHVlIF07Ci0KLSAg
ICAgICAgICAgIGZvciAoIDsgaSA8IDQ7IGkrKyApIHsKLSAgICAgICAgICAgICAgICBleHBhbmRl
ZFsgcHJlZml4ICsgY3NzRXhwYW5kWyBpIF0gKyBzdWZmaXggXSA9Ci0gICAgICAgICAgICAgICAg
ICAgIHBhcnRzWyBpIF0gfHwgcGFydHNbIGkgLSAyIF0gfHwgcGFydHNbIDAgXTsKLSAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgcmV0dXJuIGV4cGFuZGVkOwotICAgICAgICB9Ci0gICAgfTsK
LQotICAgIGlmICggIXJtYXJnaW4udGVzdCggcHJlZml4ICkgKSB7Ci0gICAgICAgIGpRdWVyeS5j
c3NIb29rc1sgcHJlZml4ICsgc3VmZml4IF0uc2V0ID0gc2V0UG9zaXRpdmVOdW1iZXI7Ci0gICAg
fQotfSk7Ci0KLWpRdWVyeS5mbi5leHRlbmQoewotICAgIGNzczogZnVuY3Rpb24oIG5hbWUsIHZh
bHVlICkgewotICAgICAgICByZXR1cm4gYWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggZWxlbSwgbmFt
ZSwgdmFsdWUgKSB7Ci0gICAgICAgICAgICB2YXIgc3R5bGVzLCBsZW4sCi0gICAgICAgICAgICAg
ICAgbWFwID0ge30sCi0gICAgICAgICAgICAgICAgaSA9IDA7Ci0KLSAgICAgICAgICAgIGlmICgg
alF1ZXJ5LmlzQXJyYXkoIG5hbWUgKSApIHsKLSAgICAgICAgICAgICAgICBzdHlsZXMgPSBnZXRT
dHlsZXMoIGVsZW0gKTsKLSAgICAgICAgICAgICAgICBsZW4gPSBuYW1lLmxlbmd0aDsKLQotICAg
ICAgICAgICAgICAgIGZvciAoIDsgaSA8IGxlbjsgaSsrICkgewotICAgICAgICAgICAgICAgICAg
ICBtYXBbIG5hbWVbIGkgXSBdID0galF1ZXJ5LmNzcyggZWxlbSwgbmFtZVsgaSBdLCBmYWxzZSwg
c3R5bGVzICk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1h
cDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcmV0dXJuIHZhbHVlICE9PSB1bmRlZmlu
ZWQgPwotICAgICAgICAgICAgICAgIGpRdWVyeS5zdHlsZSggZWxlbSwgbmFtZSwgdmFsdWUgKSA6
Ci0gICAgICAgICAgICAgICAgalF1ZXJ5LmNzcyggZWxlbSwgbmFtZSApOwotICAgICAgICB9LCBu
YW1lLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDEgKTsKLSAgICB9LAotICAgIHNob3c6IGZ1
bmN0aW9uKCkgewotICAgICAgICByZXR1cm4gc2hvd0hpZGUoIHRoaXMsIHRydWUgKTsKLSAgICB9
LAotICAgIGhpZGU6IGZ1bmN0aW9uKCkgewotICAgICAgICByZXR1cm4gc2hvd0hpZGUoIHRoaXMg
KTsKLSAgICB9LAotICAgIHRvZ2dsZTogZnVuY3Rpb24oIHN0YXRlICkgewotICAgICAgICBpZiAo
IHR5cGVvZiBzdGF0ZSA9PT0gImJvb2xlYW4iICkgewotICAgICAgICAgICAgcmV0dXJuIHN0YXRl
ID8gdGhpcy5zaG93KCkgOiB0aGlzLmhpZGUoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVy
biB0aGlzLmVhY2goZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBpZiAoIGlzSGlkZGVuKCB0aGlz
ICkgKSB7Ci0gICAgICAgICAgICAgICAgalF1ZXJ5KCB0aGlzICkuc2hvdygpOwotICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBqUXVlcnkoIHRoaXMgKS5oaWRlKCk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0pOwotICAgIH0KLX0pOwotCi0KLWZ1bmN0aW9uIFR3ZWVuKCBl
bGVtLCBvcHRpb25zLCBwcm9wLCBlbmQsIGVhc2luZyApIHsKLSAgICByZXR1cm4gbmV3IFR3ZWVu
LnByb3RvdHlwZS5pbml0KCBlbGVtLCBvcHRpb25zLCBwcm9wLCBlbmQsIGVhc2luZyApOwotfQot
alF1ZXJ5LlR3ZWVuID0gVHdlZW47Ci0KLVR3ZWVuLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1
Y3RvcjogVHdlZW4sCi0gICAgaW5pdDogZnVuY3Rpb24oIGVsZW0sIG9wdGlvbnMsIHByb3AsIGVu
ZCwgZWFzaW5nLCB1bml0ICkgewotICAgICAgICB0aGlzLmVsZW0gPSBlbGVtOwotICAgICAgICB0
aGlzLnByb3AgPSBwcm9wOwotICAgICAgICB0aGlzLmVhc2luZyA9IGVhc2luZyB8fCAic3dpbmci
OwotICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zOwotICAgICAgICB0aGlzLnN0YXJ0ID0g
dGhpcy5ub3cgPSB0aGlzLmN1cigpOwotICAgICAgICB0aGlzLmVuZCA9IGVuZDsKLSAgICAgICAg
dGhpcy51bml0ID0gdW5pdCB8fCAoIGpRdWVyeS5jc3NOdW1iZXJbIHByb3AgXSA/ICIiIDogInB4
IiApOwotICAgIH0sCi0gICAgY3VyOiBmdW5jdGlvbigpIHsKLSAgICAgICAgdmFyIGhvb2tzID0g
VHdlZW4ucHJvcEhvb2tzWyB0aGlzLnByb3AgXTsKLQotICAgICAgICByZXR1cm4gaG9va3MgJiYg
aG9va3MuZ2V0ID8KLSAgICAgICAgICAgIGhvb2tzLmdldCggdGhpcyApIDoKLSAgICAgICAgICAg
IFR3ZWVuLnByb3BIb29rcy5fZGVmYXVsdC5nZXQoIHRoaXMgKTsKLSAgICB9LAotICAgIHJ1bjog
ZnVuY3Rpb24oIHBlcmNlbnQgKSB7Ci0gICAgICAgIHZhciBlYXNlZCwKLSAgICAgICAgICAgIGhv
b2tzID0gVHdlZW4ucHJvcEhvb2tzWyB0aGlzLnByb3AgXTsKLQotICAgICAgICBpZiAoIHRoaXMu
b3B0aW9ucy5kdXJhdGlvbiApIHsKLSAgICAgICAgICAgIHRoaXMucG9zID0gZWFzZWQgPSBqUXVl
cnkuZWFzaW5nWyB0aGlzLmVhc2luZyBdKAotICAgICAgICAgICAgICAgIHBlcmNlbnQsIHRoaXMu
b3B0aW9ucy5kdXJhdGlvbiAqIHBlcmNlbnQsIDAsIDEsIHRoaXMub3B0aW9ucy5kdXJhdGlvbgot
ICAgICAgICAgICAgKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHRoaXMucG9zID0g
ZWFzZWQgPSBwZXJjZW50OwotICAgICAgICB9Ci0gICAgICAgIHRoaXMubm93ID0gKCB0aGlzLmVu
ZCAtIHRoaXMuc3RhcnQgKSAqIGVhc2VkICsgdGhpcy5zdGFydDsKLQotICAgICAgICBpZiAoIHRo
aXMub3B0aW9ucy5zdGVwICkgewotICAgICAgICAgICAgdGhpcy5vcHRpb25zLnN0ZXAuY2FsbCgg
dGhpcy5lbGVtLCB0aGlzLm5vdywgdGhpcyApOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCBo
b29rcyAmJiBob29rcy5zZXQgKSB7Ci0gICAgICAgICAgICBob29rcy5zZXQoIHRoaXMgKTsKLSAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFR3ZWVuLnByb3BIb29rcy5fZGVmYXVsdC5zZXQo
IHRoaXMgKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhpczsKLSAgICB9Ci19OwotCi1U
d2Vlbi5wcm90b3R5cGUuaW5pdC5wcm90b3R5cGUgPSBUd2Vlbi5wcm90b3R5cGU7Ci0KLVR3ZWVu
LnByb3BIb29rcyA9IHsKLSAgICBfZGVmYXVsdDogewotICAgICAgICBnZXQ6IGZ1bmN0aW9uKCB0
d2VlbiApIHsKLSAgICAgICAgICAgIHZhciByZXN1bHQ7Ci0KLSAgICAgICAgICAgIGlmICggdHdl
ZW4uZWxlbVsgdHdlZW4ucHJvcCBdICE9IG51bGwgJiYKLSAgICAgICAgICAgICAgICAoIXR3ZWVu
LmVsZW0uc3R5bGUgfHwgdHdlZW4uZWxlbS5zdHlsZVsgdHdlZW4ucHJvcCBdID09IG51bGwpICkg
ewotICAgICAgICAgICAgICAgIHJldHVybiB0d2Vlbi5lbGVtWyB0d2Vlbi5wcm9wIF07Ci0gICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIHBhc3NpbmcgYW4gZW1wdHkgc3RyaW5nIGFzIGEg
M3JkIHBhcmFtZXRlciB0byAuY3NzIHdpbGwgYXV0b21hdGljYWxseQotICAgICAgICAgICAgLy8g
YXR0ZW1wdCBhIHBhcnNlRmxvYXQgYW5kIGZhbGxiYWNrIHRvIGEgc3RyaW5nIGlmIHRoZSBwYXJz
ZSBmYWlscwotICAgICAgICAgICAgLy8gc28sIHNpbXBsZSB2YWx1ZXMgc3VjaCBhcyAiMTBweCIg
YXJlIHBhcnNlZCB0byBGbG9hdC4KLSAgICAgICAgICAgIC8vIGNvbXBsZXggdmFsdWVzIHN1Y2gg
YXMgInJvdGF0ZSgxcmFkKSIgYXJlIHJldHVybmVkIGFzIGlzLgotICAgICAgICAgICAgcmVzdWx0
ID0galF1ZXJ5LmNzcyggdHdlZW4uZWxlbSwgdHdlZW4ucHJvcCwgIiIgKTsKLSAgICAgICAgICAg
IC8vIEVtcHR5IHN0cmluZ3MsIG51bGwsIHVuZGVmaW5lZCBhbmQgImF1dG8iIGFyZSBjb252ZXJ0
ZWQgdG8gMC4KLSAgICAgICAgICAgIHJldHVybiAhcmVzdWx0IHx8IHJlc3VsdCA9PT0gImF1dG8i
ID8gMCA6IHJlc3VsdDsKLSAgICAgICAgfSwKLSAgICAgICAgc2V0OiBmdW5jdGlvbiggdHdlZW4g
KSB7Ci0gICAgICAgICAgICAvLyB1c2Ugc3RlcCBob29rIGZvciBiYWNrIGNvbXBhdCAtIHVzZSBj
c3NIb29rIGlmIGl0cyB0aGVyZSAtIHVzZSAuc3R5bGUgaWYgaXRzCi0gICAgICAgICAgICAvLyBh
dmFpbGFibGUgYW5kIHVzZSBwbGFpbiBwcm9wZXJ0aWVzIHdoZXJlIGF2YWlsYWJsZQotICAgICAg
ICAgICAgaWYgKCBqUXVlcnkuZnguc3RlcFsgdHdlZW4ucHJvcCBdICkgewotICAgICAgICAgICAg
ICAgIGpRdWVyeS5meC5zdGVwWyB0d2Vlbi5wcm9wIF0oIHR3ZWVuICk7Ci0gICAgICAgICAgICB9
IGVsc2UgaWYgKCB0d2Vlbi5lbGVtLnN0eWxlICYmICggdHdlZW4uZWxlbS5zdHlsZVsgalF1ZXJ5
LmNzc1Byb3BzWyB0d2Vlbi5wcm9wIF0gXSAhPSBudWxsIHx8IGpRdWVyeS5jc3NIb29rc1sgdHdl
ZW4ucHJvcCBdICkgKSB7Ci0gICAgICAgICAgICAgICAgalF1ZXJ5LnN0eWxlKCB0d2Vlbi5lbGVt
LCB0d2Vlbi5wcm9wLCB0d2Vlbi5ub3cgKyB0d2Vlbi51bml0ICk7Ci0gICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgIHR3ZWVuLmVsZW1bIHR3ZWVuLnByb3AgXSA9IHR3ZWVuLm5v
dzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX07Ci0KLS8vIFN1cHBvcnQ6IElF
OQotLy8gUGFuaWMgYmFzZWQgYXBwcm9hY2ggdG8gc2V0dGluZyB0aGluZ3Mgb24gZGlzY29ubmVj
dGVkIG5vZGVzCi0KLVR3ZWVuLnByb3BIb29rcy5zY3JvbGxUb3AgPSBUd2Vlbi5wcm9wSG9va3Mu
c2Nyb2xsTGVmdCA9IHsKLSAgICBzZXQ6IGZ1bmN0aW9uKCB0d2VlbiApIHsKLSAgICAgICAgaWYg
KCB0d2Vlbi5lbGVtLm5vZGVUeXBlICYmIHR3ZWVuLmVsZW0ucGFyZW50Tm9kZSApIHsKLSAgICAg
ICAgICAgIHR3ZWVuLmVsZW1bIHR3ZWVuLnByb3AgXSA9IHR3ZWVuLm5vdzsKLSAgICAgICAgfQot
ICAgIH0KLX07Ci0KLWpRdWVyeS5lYXNpbmcgPSB7Ci0gICAgbGluZWFyOiBmdW5jdGlvbiggcCAp
IHsKLSAgICAgICAgcmV0dXJuIHA7Ci0gICAgfSwKLSAgICBzd2luZzogZnVuY3Rpb24oIHAgKSB7
Ci0gICAgICAgIHJldHVybiAwLjUgLSBNYXRoLmNvcyggcCAqIE1hdGguUEkgKSAvIDI7Ci0gICAg
fQotfTsKLQotalF1ZXJ5LmZ4ID0gVHdlZW4ucHJvdG90eXBlLmluaXQ7Ci0KLS8vIEJhY2sgQ29t
cGF0IDwxLjggZXh0ZW5zaW9uIHBvaW50Ci1qUXVlcnkuZnguc3RlcCA9IHt9OwotCi0KLQotCi12
YXIKLSAgICBmeE5vdywgdGltZXJJZCwKLSAgICByZnh0eXBlcyA9IC9eKD86dG9nZ2xlfHNob3d8
aGlkZSkkLywKLSAgICByZnhudW0gPSBuZXcgUmVnRXhwKCAiXig/OihbKy1dKT18KSgiICsgcG51
bSArICIpKFthLXolXSopJCIsICJpIiApLAotICAgIHJydW4gPSAvcXVldWVIb29rcyQvLAotICAg
IGFuaW1hdGlvblByZWZpbHRlcnMgPSBbIGRlZmF1bHRQcmVmaWx0ZXIgXSwKLSAgICB0d2VlbmVy
cyA9IHsKLSAgICAgICAgIioiOiBbIGZ1bmN0aW9uKCBwcm9wLCB2YWx1ZSApIHsKLSAgICAgICAg
ICAgIHZhciB0d2VlbiA9IHRoaXMuY3JlYXRlVHdlZW4oIHByb3AsIHZhbHVlICksCi0gICAgICAg
ICAgICAgICAgdGFyZ2V0ID0gdHdlZW4uY3VyKCksCi0gICAgICAgICAgICAgICAgcGFydHMgPSBy
ZnhudW0uZXhlYyggdmFsdWUgKSwKLSAgICAgICAgICAgICAgICB1bml0ID0gcGFydHMgJiYgcGFy
dHNbIDMgXSB8fCAoIGpRdWVyeS5jc3NOdW1iZXJbIHByb3AgXSA/ICIiIDogInB4IiApLAotCi0g
ICAgICAgICAgICAgICAgLy8gU3RhcnRpbmcgdmFsdWUgY29tcHV0YXRpb24gaXMgcmVxdWlyZWQg
Zm9yIHBvdGVudGlhbCB1bml0IG1pc21hdGNoZXMKLSAgICAgICAgICAgICAgICBzdGFydCA9ICgg
alF1ZXJ5LmNzc051bWJlclsgcHJvcCBdIHx8IHVuaXQgIT09ICJweCIgJiYgK3RhcmdldCApICYm
Ci0gICAgICAgICAgICAgICAgICAgIHJmeG51bS5leGVjKCBqUXVlcnkuY3NzKCB0d2Vlbi5lbGVt
LCBwcm9wICkgKSwKLSAgICAgICAgICAgICAgICBzY2FsZSA9IDEsCi0gICAgICAgICAgICAgICAg
bWF4SXRlcmF0aW9ucyA9IDIwOwotCi0gICAgICAgICAgICBpZiAoIHN0YXJ0ICYmIHN0YXJ0WyAz
IF0gIT09IHVuaXQgKSB7Ci0gICAgICAgICAgICAgICAgLy8gVHJ1c3QgdW5pdHMgcmVwb3J0ZWQg
YnkgalF1ZXJ5LmNzcwotICAgICAgICAgICAgICAgIHVuaXQgPSB1bml0IHx8IHN0YXJ0WyAzIF07
Ci0KLSAgICAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgd2UgdXBkYXRlIHRoZSB0d2VlbiBwcm9w
ZXJ0aWVzIGxhdGVyIG9uCi0gICAgICAgICAgICAgICAgcGFydHMgPSBwYXJ0cyB8fCBbXTsKLQot
ICAgICAgICAgICAgICAgIC8vIEl0ZXJhdGl2ZWx5IGFwcHJveGltYXRlIGZyb20gYSBub256ZXJv
IHN0YXJ0aW5nIHBvaW50Ci0gICAgICAgICAgICAgICAgc3RhcnQgPSArdGFyZ2V0IHx8IDE7Ci0K
LSAgICAgICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIElmIHByZXZpb3Vz
IGl0ZXJhdGlvbiB6ZXJvZWQgb3V0LCBkb3VibGUgdW50aWwgd2UgZ2V0ICpzb21ldGhpbmcqCi0g
ICAgICAgICAgICAgICAgICAgIC8vIFVzZSBhIHN0cmluZyBmb3IgZG91YmxpbmcgZmFjdG9yIHNv
IHdlIGRvbid0IGFjY2lkZW50YWxseSBzZWUgc2NhbGUgYXMgdW5jaGFuZ2VkIGJlbG93Ci0gICAg
ICAgICAgICAgICAgICAgIHNjYWxlID0gc2NhbGUgfHwgIi41IjsKLQotICAgICAgICAgICAgICAg
ICAgICAvLyBBZGp1c3QgYW5kIGFwcGx5Ci0gICAgICAgICAgICAgICAgICAgIHN0YXJ0ID0gc3Rh
cnQgLyBzY2FsZTsKLSAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LnN0eWxlKCB0d2Vlbi5lbGVt
LCBwcm9wLCBzdGFydCArIHVuaXQgKTsKLQotICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSBzY2Fs
ZSwgdG9sZXJhdGluZyB6ZXJvIG9yIE5hTiBmcm9tIHR3ZWVuLmN1cigpCi0gICAgICAgICAgICAg
ICAgLy8gQW5kIGJyZWFraW5nIHRoZSBsb29wIGlmIHNjYWxlIGlzIHVuY2hhbmdlZCBvciBwZXJm
ZWN0LCBvciBpZiB3ZSd2ZSBqdXN0IGhhZCBlbm91Z2gKLSAgICAgICAgICAgICAgICB9IHdoaWxl
ICggc2NhbGUgIT09IChzY2FsZSA9IHR3ZWVuLmN1cigpIC8gdGFyZ2V0KSAmJiBzY2FsZSAhPT0g
MSAmJiAtLW1heEl0ZXJhdGlvbnMgKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8g
VXBkYXRlIHR3ZWVuIHByb3BlcnRpZXMKLSAgICAgICAgICAgIGlmICggcGFydHMgKSB7Ci0gICAg
ICAgICAgICAgICAgc3RhcnQgPSB0d2Vlbi5zdGFydCA9ICtzdGFydCB8fCArdGFyZ2V0IHx8IDA7
Ci0gICAgICAgICAgICAgICAgdHdlZW4udW5pdCA9IHVuaXQ7Ci0gICAgICAgICAgICAgICAgLy8g
SWYgYSArPS8tPSB0b2tlbiB3YXMgcHJvdmlkZWQsIHdlJ3JlIGRvaW5nIGEgcmVsYXRpdmUgYW5p
bWF0aW9uCi0gICAgICAgICAgICAgICAgdHdlZW4uZW5kID0gcGFydHNbIDEgXSA/Ci0gICAgICAg
ICAgICAgICAgICAgIHN0YXJ0ICsgKCBwYXJ0c1sgMSBdICsgMSApICogcGFydHNbIDIgXSA6Ci0g
ICAgICAgICAgICAgICAgICAgICtwYXJ0c1sgMiBdOwotICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICByZXR1cm4gdHdlZW47Ci0gICAgICAgIH0gXQotICAgIH07Ci0KLS8vIEFuaW1hdGlvbnMg
Y3JlYXRlZCBzeW5jaHJvbm91c2x5IHdpbGwgcnVuIHN5bmNocm9ub3VzbHkKLWZ1bmN0aW9uIGNy
ZWF0ZUZ4Tm93KCkgewotICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgIGZ4Tm93
ID0gdW5kZWZpbmVkOwotICAgIH0pOwotICAgIHJldHVybiAoIGZ4Tm93ID0galF1ZXJ5Lm5vdygp
ICk7Ci19Ci0KLS8vIEdlbmVyYXRlIHBhcmFtZXRlcnMgdG8gY3JlYXRlIGEgc3RhbmRhcmQgYW5p
bWF0aW9uCi1mdW5jdGlvbiBnZW5GeCggdHlwZSwgaW5jbHVkZVdpZHRoICkgewotICAgIHZhciB3
aGljaCwKLSAgICAgICAgaSA9IDAsCi0gICAgICAgIGF0dHJzID0geyBoZWlnaHQ6IHR5cGUgfTsK
LQotICAgIC8vIGlmIHdlIGluY2x1ZGUgd2lkdGgsIHN0ZXAgdmFsdWUgaXMgMSB0byBkbyBhbGwg
Y3NzRXhwYW5kIHZhbHVlcywKLSAgICAvLyBpZiB3ZSBkb24ndCBpbmNsdWRlIHdpZHRoLCBzdGVw
IHZhbHVlIGlzIDIgdG8gc2tpcCBvdmVyIExlZnQgYW5kIFJpZ2h0Ci0gICAgaW5jbHVkZVdpZHRo
ID0gaW5jbHVkZVdpZHRoID8gMSA6IDA7Ci0gICAgZm9yICggOyBpIDwgNCA7IGkgKz0gMiAtIGlu
Y2x1ZGVXaWR0aCApIHsKLSAgICAgICAgd2hpY2ggPSBjc3NFeHBhbmRbIGkgXTsKLSAgICAgICAg
YXR0cnNbICJtYXJnaW4iICsgd2hpY2ggXSA9IGF0dHJzWyAicGFkZGluZyIgKyB3aGljaCBdID0g
dHlwZTsKLSAgICB9Ci0KLSAgICBpZiAoIGluY2x1ZGVXaWR0aCApIHsKLSAgICAgICAgYXR0cnMu
b3BhY2l0eSA9IGF0dHJzLndpZHRoID0gdHlwZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gYXR0cnM7
Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZVR3ZWVuKCB2YWx1ZSwgcHJvcCwgYW5pbWF0aW9uICkgewot
ICAgIHZhciB0d2VlbiwKLSAgICAgICAgY29sbGVjdGlvbiA9ICggdHdlZW5lcnNbIHByb3AgXSB8
fCBbXSApLmNvbmNhdCggdHdlZW5lcnNbICIqIiBdICksCi0gICAgICAgIGluZGV4ID0gMCwKLSAg
ICAgICAgbGVuZ3RoID0gY29sbGVjdGlvbi5sZW5ndGg7Ci0gICAgZm9yICggOyBpbmRleCA8IGxl
bmd0aDsgaW5kZXgrKyApIHsKLSAgICAgICAgaWYgKCAodHdlZW4gPSBjb2xsZWN0aW9uWyBpbmRl
eCBdLmNhbGwoIGFuaW1hdGlvbiwgcHJvcCwgdmFsdWUgKSkgKSB7Ci0KLSAgICAgICAgICAgIC8v
IHdlJ3JlIGRvbmUgd2l0aCB0aGlzIHByb3BlcnR5Ci0gICAgICAgICAgICByZXR1cm4gdHdlZW47
Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIGRlZmF1bHRQcmVmaWx0ZXIoIGVsZW0s
IHByb3BzLCBvcHRzICkgewotICAgIC8qIGpzaGludCB2YWxpZHRoaXM6IHRydWUgKi8KLSAgICB2
YXIgcHJvcCwgdmFsdWUsIHRvZ2dsZSwgdHdlZW4sIGhvb2tzLCBvbGRmaXJlLCBkaXNwbGF5LAot
ICAgICAgICBhbmltID0gdGhpcywKLSAgICAgICAgb3JpZyA9IHt9LAotICAgICAgICBzdHlsZSA9
IGVsZW0uc3R5bGUsCi0gICAgICAgIGhpZGRlbiA9IGVsZW0ubm9kZVR5cGUgJiYgaXNIaWRkZW4o
IGVsZW0gKSwKLSAgICAgICAgZGF0YVNob3cgPSBkYXRhX3ByaXYuZ2V0KCBlbGVtLCAiZnhzaG93
IiApOwotCi0gICAgLy8gaGFuZGxlIHF1ZXVlOiBmYWxzZSBwcm9taXNlcwotICAgIGlmICggIW9w
dHMucXVldWUgKSB7Ci0gICAgICAgIGhvb2tzID0galF1ZXJ5Ll9xdWV1ZUhvb2tzKCBlbGVtLCAi
ZngiICk7Ci0gICAgICAgIGlmICggaG9va3MudW5xdWV1ZWQgPT0gbnVsbCApIHsKLSAgICAgICAg
ICAgIGhvb2tzLnVucXVldWVkID0gMDsKLSAgICAgICAgICAgIG9sZGZpcmUgPSBob29rcy5lbXB0
eS5maXJlOwotICAgICAgICAgICAgaG9va3MuZW1wdHkuZmlyZSA9IGZ1bmN0aW9uKCkgewotICAg
ICAgICAgICAgICAgIGlmICggIWhvb2tzLnVucXVldWVkICkgewotICAgICAgICAgICAgICAgICAg
ICBvbGRmaXJlKCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLSAgICAgICAg
fQotICAgICAgICBob29rcy51bnF1ZXVlZCsrOwotCi0gICAgICAgIGFuaW0uYWx3YXlzKGZ1bmN0
aW9uKCkgewotICAgICAgICAgICAgLy8gZG9pbmcgdGhpcyBtYWtlcyBzdXJlIHRoYXQgdGhlIGNv
bXBsZXRlIGhhbmRsZXIgd2lsbCBiZSBjYWxsZWQKLSAgICAgICAgICAgIC8vIGJlZm9yZSB0aGlz
IGNvbXBsZXRlcwotICAgICAgICAgICAgYW5pbS5hbHdheXMoZnVuY3Rpb24oKSB7Ci0gICAgICAg
ICAgICAgICAgaG9va3MudW5xdWV1ZWQtLTsKLSAgICAgICAgICAgICAgICBpZiAoICFqUXVlcnku
cXVldWUoIGVsZW0sICJmeCIgKS5sZW5ndGggKSB7Ci0gICAgICAgICAgICAgICAgICAgIGhvb2tz
LmVtcHR5LmZpcmUoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9KTsKLSAgICAg
ICAgfSk7Ci0gICAgfQotCi0gICAgLy8gaGVpZ2h0L3dpZHRoIG92ZXJmbG93IHBhc3MKLSAgICBp
ZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgJiYgKCAiaGVpZ2h0IiBpbiBwcm9wcyB8fCAid2lkdGgi
IGluIHByb3BzICkgKSB7Ci0gICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IG5vdGhpbmcgc25lYWtz
IG91dAotICAgICAgICAvLyBSZWNvcmQgYWxsIDMgb3ZlcmZsb3cgYXR0cmlidXRlcyBiZWNhdXNl
IElFOS0xMCBkbyBub3QKLSAgICAgICAgLy8gY2hhbmdlIHRoZSBvdmVyZmxvdyBhdHRyaWJ1dGUg
d2hlbiBvdmVyZmxvd1ggYW5kCi0gICAgICAgIC8vIG92ZXJmbG93WSBhcmUgc2V0IHRvIHRoZSBz
YW1lIHZhbHVlCi0gICAgICAgIG9wdHMub3ZlcmZsb3cgPSBbIHN0eWxlLm92ZXJmbG93LCBzdHls
ZS5vdmVyZmxvd1gsIHN0eWxlLm92ZXJmbG93WSBdOwotCi0gICAgICAgIC8vIFNldCBkaXNwbGF5
IHByb3BlcnR5IHRvIGlubGluZS1ibG9jayBmb3IgaGVpZ2h0L3dpZHRoCi0gICAgICAgIC8vIGFu
aW1hdGlvbnMgb24gaW5saW5lIGVsZW1lbnRzIHRoYXQgYXJlIGhhdmluZyB3aWR0aC9oZWlnaHQg
YW5pbWF0ZWQKLSAgICAgICAgZGlzcGxheSA9IGpRdWVyeS5jc3MoIGVsZW0sICJkaXNwbGF5IiAp
OwotICAgICAgICAvLyBHZXQgZGVmYXVsdCBkaXNwbGF5IGlmIGRpc3BsYXkgaXMgY3VycmVudGx5
ICJub25lIgotICAgICAgICBpZiAoIGRpc3BsYXkgPT09ICJub25lIiApIHsKLSAgICAgICAgICAg
IGRpc3BsYXkgPSBkZWZhdWx0RGlzcGxheSggZWxlbS5ub2RlTmFtZSApOwotICAgICAgICB9Ci0g
ICAgICAgIGlmICggZGlzcGxheSA9PT0gImlubGluZSIgJiYKLSAgICAgICAgICAgICAgICBqUXVl
cnkuY3NzKCBlbGVtLCAiZmxvYXQiICkgPT09ICJub25lIiApIHsKLQotICAgICAgICAgICAgc3R5
bGUuZGlzcGxheSA9ICJpbmxpbmUtYmxvY2siOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYg
KCBvcHRzLm92ZXJmbG93ICkgewotICAgICAgICBzdHlsZS5vdmVyZmxvdyA9ICJoaWRkZW4iOwot
ICAgICAgICBhbmltLmFsd2F5cyhmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHN0eWxlLm92ZXJm
bG93ID0gb3B0cy5vdmVyZmxvd1sgMCBdOwotICAgICAgICAgICAgc3R5bGUub3ZlcmZsb3dYID0g
b3B0cy5vdmVyZmxvd1sgMSBdOwotICAgICAgICAgICAgc3R5bGUub3ZlcmZsb3dZID0gb3B0cy5v
dmVyZmxvd1sgMiBdOwotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICAvLyBzaG93L2hpZGUgcGFz
cwotICAgIGZvciAoIHByb3AgaW4gcHJvcHMgKSB7Ci0gICAgICAgIHZhbHVlID0gcHJvcHNbIHBy
b3AgXTsKLSAgICAgICAgaWYgKCByZnh0eXBlcy5leGVjKCB2YWx1ZSApICkgewotICAgICAgICAg
ICAgZGVsZXRlIHByb3BzWyBwcm9wIF07Ci0gICAgICAgICAgICB0b2dnbGUgPSB0b2dnbGUgfHwg
dmFsdWUgPT09ICJ0b2dnbGUiOwotICAgICAgICAgICAgaWYgKCB2YWx1ZSA9PT0gKCBoaWRkZW4g
PyAiaGlkZSIgOiAic2hvdyIgKSApIHsKLQotICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlz
IGRhdGFTaG93IGxlZnQgb3ZlciBmcm9tIGEgc3RvcHBlZCBoaWRlIG9yIHNob3cgYW5kIHdlIGFy
ZSBnb2luZyB0byBwcm9jZWVkIHdpdGggc2hvdywgd2Ugc2hvdWxkIHByZXRlbmQgdG8gYmUgaGlk
ZGVuCi0gICAgICAgICAgICAgICAgaWYgKCB2YWx1ZSA9PT0gInNob3ciICYmIGRhdGFTaG93ICYm
IGRhdGFTaG93WyBwcm9wIF0gIT09IHVuZGVmaW5lZCApIHsKLSAgICAgICAgICAgICAgICAgICAg
aGlkZGVuID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBvcmlnWyBwcm9wIF0gPSBkYXRhU2hvdyAmJiBkYXRhU2hvd1sgcHJvcCBdIHx8IGpRdWVy
eS5zdHlsZSggZWxlbSwgcHJvcCApOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKCAhalF1
ZXJ5LmlzRW1wdHlPYmplY3QoIG9yaWcgKSApIHsKLSAgICAgICAgaWYgKCBkYXRhU2hvdyApIHsK
LSAgICAgICAgICAgIGlmICggImhpZGRlbiIgaW4gZGF0YVNob3cgKSB7Ci0gICAgICAgICAgICAg
ICAgaGlkZGVuID0gZGF0YVNob3cuaGlkZGVuOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgZGF0YVNob3cgPSBkYXRhX3ByaXYuYWNjZXNzKCBlbGVtLCAiZnhz
aG93Iiwge30gKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIHN0b3JlIHN0YXRlIGlmIGl0cyB0
b2dnbGUgLSBlbmFibGVzIC5zdG9wKCkudG9nZ2xlKCkgdG8gInJldmVyc2UiCi0gICAgICAgIGlm
ICggdG9nZ2xlICkgewotICAgICAgICAgICAgZGF0YVNob3cuaGlkZGVuID0gIWhpZGRlbjsKLSAg
ICAgICAgfQotICAgICAgICBpZiAoIGhpZGRlbiApIHsKLSAgICAgICAgICAgIGpRdWVyeSggZWxl
bSApLnNob3coKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGFuaW0uZG9uZShmdW5j
dGlvbigpIHsKLSAgICAgICAgICAgICAgICBqUXVlcnkoIGVsZW0gKS5oaWRlKCk7Ci0gICAgICAg
ICAgICB9KTsKLSAgICAgICAgfQotICAgICAgICBhbmltLmRvbmUoZnVuY3Rpb24oKSB7Ci0gICAg
ICAgICAgICB2YXIgcHJvcDsKLQotICAgICAgICAgICAgZGF0YV9wcml2LnJlbW92ZSggZWxlbSwg
ImZ4c2hvdyIgKTsKLSAgICAgICAgICAgIGZvciAoIHByb3AgaW4gb3JpZyApIHsKLSAgICAgICAg
ICAgICAgICBqUXVlcnkuc3R5bGUoIGVsZW0sIHByb3AsIG9yaWdbIHByb3AgXSApOwotICAgICAg
ICAgICAgfQotICAgICAgICB9KTsKLSAgICAgICAgZm9yICggcHJvcCBpbiBvcmlnICkgewotICAg
ICAgICAgICAgdHdlZW4gPSBjcmVhdGVUd2VlbiggaGlkZGVuID8gZGF0YVNob3dbIHByb3AgXSA6
IDAsIHByb3AsIGFuaW0gKTsKLQotICAgICAgICAgICAgaWYgKCAhKCBwcm9wIGluIGRhdGFTaG93
ICkgKSB7Ci0gICAgICAgICAgICAgICAgZGF0YVNob3dbIHByb3AgXSA9IHR3ZWVuLnN0YXJ0Owot
ICAgICAgICAgICAgICAgIGlmICggaGlkZGVuICkgewotICAgICAgICAgICAgICAgICAgICB0d2Vl
bi5lbmQgPSB0d2Vlbi5zdGFydDsKLSAgICAgICAgICAgICAgICAgICAgdHdlZW4uc3RhcnQgPSBw
cm9wID09PSAid2lkdGgiIHx8IHByb3AgPT09ICJoZWlnaHQiID8gMSA6IDA7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQotCi1mdW5jdGlvbiBw
cm9wRmlsdGVyKCBwcm9wcywgc3BlY2lhbEVhc2luZyApIHsKLSAgICB2YXIgaW5kZXgsIG5hbWUs
IGVhc2luZywgdmFsdWUsIGhvb2tzOwotCi0gICAgLy8gY2FtZWxDYXNlLCBzcGVjaWFsRWFzaW5n
IGFuZCBleHBhbmQgY3NzSG9vayBwYXNzCi0gICAgZm9yICggaW5kZXggaW4gcHJvcHMgKSB7Ci0g
ICAgICAgIG5hbWUgPSBqUXVlcnkuY2FtZWxDYXNlKCBpbmRleCApOwotICAgICAgICBlYXNpbmcg
PSBzcGVjaWFsRWFzaW5nWyBuYW1lIF07Ci0gICAgICAgIHZhbHVlID0gcHJvcHNbIGluZGV4IF07
Ci0gICAgICAgIGlmICggalF1ZXJ5LmlzQXJyYXkoIHZhbHVlICkgKSB7Ci0gICAgICAgICAgICBl
YXNpbmcgPSB2YWx1ZVsgMSBdOwotICAgICAgICAgICAgdmFsdWUgPSBwcm9wc1sgaW5kZXggXSA9
IHZhbHVlWyAwIF07Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIGluZGV4ICE9PSBuYW1lICkg
ewotICAgICAgICAgICAgcHJvcHNbIG5hbWUgXSA9IHZhbHVlOwotICAgICAgICAgICAgZGVsZXRl
IHByb3BzWyBpbmRleCBdOwotICAgICAgICB9Ci0KLSAgICAgICAgaG9va3MgPSBqUXVlcnkuY3Nz
SG9va3NbIG5hbWUgXTsKLSAgICAgICAgaWYgKCBob29rcyAmJiAiZXhwYW5kIiBpbiBob29rcyAp
IHsKLSAgICAgICAgICAgIHZhbHVlID0gaG9va3MuZXhwYW5kKCB2YWx1ZSApOwotICAgICAgICAg
ICAgZGVsZXRlIHByb3BzWyBuYW1lIF07Ci0KLSAgICAgICAgICAgIC8vIG5vdCBxdWl0ZSAkLmV4
dGVuZCwgdGhpcyB3b250IG92ZXJ3cml0ZSBrZXlzIGFscmVhZHkgcHJlc2VudC4KLSAgICAgICAg
ICAgIC8vIGFsc28gLSByZXVzaW5nICdpbmRleCcgZnJvbSBhYm92ZSBiZWNhdXNlIHdlIGhhdmUg
dGhlIGNvcnJlY3QgIm5hbWUiCi0gICAgICAgICAgICBmb3IgKCBpbmRleCBpbiB2YWx1ZSApIHsK
LSAgICAgICAgICAgICAgICBpZiAoICEoIGluZGV4IGluIHByb3BzICkgKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHByb3BzWyBpbmRleCBdID0gdmFsdWVbIGluZGV4IF07Ci0gICAgICAgICAgICAg
ICAgICAgIHNwZWNpYWxFYXNpbmdbIGluZGV4IF0gPSBlYXNpbmc7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc3BlY2lhbEVh
c2luZ1sgbmFtZSBdID0gZWFzaW5nOwotICAgICAgICB9Ci0gICAgfQotfQotCi1mdW5jdGlvbiBB
bmltYXRpb24oIGVsZW0sIHByb3BlcnRpZXMsIG9wdGlvbnMgKSB7Ci0gICAgdmFyIHJlc3VsdCwK
LSAgICAgICAgc3RvcHBlZCwKLSAgICAgICAgaW5kZXggPSAwLAotICAgICAgICBsZW5ndGggPSBh
bmltYXRpb25QcmVmaWx0ZXJzLmxlbmd0aCwKLSAgICAgICAgZGVmZXJyZWQgPSBqUXVlcnkuRGVm
ZXJyZWQoKS5hbHdheXMoIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgLy8gZG9uJ3QgbWF0Y2gg
ZWxlbSBpbiB0aGUgOmFuaW1hdGVkIHNlbGVjdG9yCi0gICAgICAgICAgICBkZWxldGUgdGljay5l
bGVtOwotICAgICAgICB9KSwKLSAgICAgICAgdGljayA9IGZ1bmN0aW9uKCkgewotICAgICAgICAg
ICAgaWYgKCBzdG9wcGVkICkgewotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIHZhciBjdXJyZW50VGltZSA9IGZ4Tm93IHx8IGNyZWF0ZUZ4
Tm93KCksCi0gICAgICAgICAgICAgICAgcmVtYWluaW5nID0gTWF0aC5tYXgoIDAsIGFuaW1hdGlv
bi5zdGFydFRpbWUgKyBhbmltYXRpb24uZHVyYXRpb24gLSBjdXJyZW50VGltZSApLAotICAgICAg
ICAgICAgICAgIC8vIGFyY2hhaWMgY3Jhc2ggYnVnIHdvbid0IGFsbG93IHVzIHRvIHVzZSAxIC0g
KCAwLjUgfHwgMCApICgjMTI0OTcpCi0gICAgICAgICAgICAgICAgdGVtcCA9IHJlbWFpbmluZyAv
IGFuaW1hdGlvbi5kdXJhdGlvbiB8fCAwLAotICAgICAgICAgICAgICAgIHBlcmNlbnQgPSAxIC0g
dGVtcCwKLSAgICAgICAgICAgICAgICBpbmRleCA9IDAsCi0gICAgICAgICAgICAgICAgbGVuZ3Ro
ID0gYW5pbWF0aW9uLnR3ZWVucy5sZW5ndGg7Ci0KLSAgICAgICAgICAgIGZvciAoIDsgaW5kZXgg
PCBsZW5ndGggOyBpbmRleCsrICkgewotICAgICAgICAgICAgICAgIGFuaW1hdGlvbi50d2VlbnNb
IGluZGV4IF0ucnVuKCBwZXJjZW50ICk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGRl
ZmVycmVkLm5vdGlmeVdpdGgoIGVsZW0sIFsgYW5pbWF0aW9uLCBwZXJjZW50LCByZW1haW5pbmcg
XSk7Ci0KLSAgICAgICAgICAgIGlmICggcGVyY2VudCA8IDEgJiYgbGVuZ3RoICkgewotICAgICAg
ICAgICAgICAgIHJldHVybiByZW1haW5pbmc7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgICAgIGRlZmVycmVkLnJlc29sdmVXaXRoKCBlbGVtLCBbIGFuaW1hdGlvbiBdICk7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICB9LAot
ICAgICAgICBhbmltYXRpb24gPSBkZWZlcnJlZC5wcm9taXNlKHsKLSAgICAgICAgICAgIGVsZW06
IGVsZW0sCi0gICAgICAgICAgICBwcm9wczogalF1ZXJ5LmV4dGVuZCgge30sIHByb3BlcnRpZXMg
KSwKLSAgICAgICAgICAgIG9wdHM6IGpRdWVyeS5leHRlbmQoIHRydWUsIHsgc3BlY2lhbEVhc2lu
Zzoge30gfSwgb3B0aW9ucyApLAotICAgICAgICAgICAgb3JpZ2luYWxQcm9wZXJ0aWVzOiBwcm9w
ZXJ0aWVzLAotICAgICAgICAgICAgb3JpZ2luYWxPcHRpb25zOiBvcHRpb25zLAotICAgICAgICAg
ICAgc3RhcnRUaW1lOiBmeE5vdyB8fCBjcmVhdGVGeE5vdygpLAotICAgICAgICAgICAgZHVyYXRp
b246IG9wdGlvbnMuZHVyYXRpb24sCi0gICAgICAgICAgICB0d2VlbnM6IFtdLAotICAgICAgICAg
ICAgY3JlYXRlVHdlZW46IGZ1bmN0aW9uKCBwcm9wLCBlbmQgKSB7Ci0gICAgICAgICAgICAgICAg
dmFyIHR3ZWVuID0galF1ZXJ5LlR3ZWVuKCBlbGVtLCBhbmltYXRpb24ub3B0cywgcHJvcCwgZW5k
LAotICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLm9wdHMuc3BlY2lhbEVhc2luZ1sg
cHJvcCBdIHx8IGFuaW1hdGlvbi5vcHRzLmVhc2luZyApOwotICAgICAgICAgICAgICAgIGFuaW1h
dGlvbi50d2VlbnMucHVzaCggdHdlZW4gKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHdlZW47
Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgc3RvcDogZnVuY3Rpb24oIGdvdG9FbmQgKSB7
Ci0gICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gMCwKLSAgICAgICAgICAgICAgICAgICAgLy8g
aWYgd2UgYXJlIGdvaW5nIHRvIHRoZSBlbmQsIHdlIHdhbnQgdG8gcnVuIGFsbCB0aGUgdHdlZW5z
Ci0gICAgICAgICAgICAgICAgICAgIC8vIG90aGVyd2lzZSB3ZSBza2lwIHRoaXMgcGFydAotICAg
ICAgICAgICAgICAgICAgICBsZW5ndGggPSBnb3RvRW5kID8gYW5pbWF0aW9uLnR3ZWVucy5sZW5n
dGggOiAwOwotICAgICAgICAgICAgICAgIGlmICggc3RvcHBlZCApIHsKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHN0
b3BwZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgIGZvciAoIDsgaW5kZXggPCBsZW5ndGggOyBp
bmRleCsrICkgewotICAgICAgICAgICAgICAgICAgICBhbmltYXRpb24udHdlZW5zWyBpbmRleCBd
LnJ1biggMSApOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIC8vIHJlc29s
dmUgd2hlbiB3ZSBwbGF5ZWQgdGhlIGxhc3QgZnJhbWUKLSAgICAgICAgICAgICAgICAvLyBvdGhl
cndpc2UsIHJlamVjdAotICAgICAgICAgICAgICAgIGlmICggZ290b0VuZCApIHsKLSAgICAgICAg
ICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZVdpdGgoIGVsZW0sIFsgYW5pbWF0aW9uLCBnb3Rv
RW5kIF0gKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBk
ZWZlcnJlZC5yZWplY3RXaXRoKCBlbGVtLCBbIGFuaW1hdGlvbiwgZ290b0VuZCBdICk7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOwotICAgICAgICAgICAg
fQotICAgICAgICB9KSwKLSAgICAgICAgcHJvcHMgPSBhbmltYXRpb24ucHJvcHM7Ci0KLSAgICBw
cm9wRmlsdGVyKCBwcm9wcywgYW5pbWF0aW9uLm9wdHMuc3BlY2lhbEVhc2luZyApOwotCi0gICAg
Zm9yICggOyBpbmRleCA8IGxlbmd0aCA7IGluZGV4KysgKSB7Ci0gICAgICAgIHJlc3VsdCA9IGFu
aW1hdGlvblByZWZpbHRlcnNbIGluZGV4IF0uY2FsbCggYW5pbWF0aW9uLCBlbGVtLCBwcm9wcywg
YW5pbWF0aW9uLm9wdHMgKTsKLSAgICAgICAgaWYgKCByZXN1bHQgKSB7Ci0gICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgalF1ZXJ5Lm1hcCggcHJvcHMs
IGNyZWF0ZVR3ZWVuLCBhbmltYXRpb24gKTsKLQotICAgIGlmICggalF1ZXJ5LmlzRnVuY3Rpb24o
IGFuaW1hdGlvbi5vcHRzLnN0YXJ0ICkgKSB7Ci0gICAgICAgIGFuaW1hdGlvbi5vcHRzLnN0YXJ0
LmNhbGwoIGVsZW0sIGFuaW1hdGlvbiApOwotICAgIH0KLQotICAgIGpRdWVyeS5meC50aW1lcigK
LSAgICAgICAgalF1ZXJ5LmV4dGVuZCggdGljaywgewotICAgICAgICAgICAgZWxlbTogZWxlbSwK
LSAgICAgICAgICAgIGFuaW06IGFuaW1hdGlvbiwKLSAgICAgICAgICAgIHF1ZXVlOiBhbmltYXRp
b24ub3B0cy5xdWV1ZQotICAgICAgICB9KQotICAgICk7Ci0KLSAgICAvLyBhdHRhY2ggY2FsbGJh
Y2tzIGZyb20gb3B0aW9ucwotICAgIHJldHVybiBhbmltYXRpb24ucHJvZ3Jlc3MoIGFuaW1hdGlv
bi5vcHRzLnByb2dyZXNzICkKLSAgICAgICAgLmRvbmUoIGFuaW1hdGlvbi5vcHRzLmRvbmUsIGFu
aW1hdGlvbi5vcHRzLmNvbXBsZXRlICkKLSAgICAgICAgLmZhaWwoIGFuaW1hdGlvbi5vcHRzLmZh
aWwgKQotICAgICAgICAuYWx3YXlzKCBhbmltYXRpb24ub3B0cy5hbHdheXMgKTsKLX0KLQotalF1
ZXJ5LkFuaW1hdGlvbiA9IGpRdWVyeS5leHRlbmQoIEFuaW1hdGlvbiwgewotCi0gICAgdHdlZW5l
cjogZnVuY3Rpb24oIHByb3BzLCBjYWxsYmFjayApIHsKLSAgICAgICAgaWYgKCBqUXVlcnkuaXNG
dW5jdGlvbiggcHJvcHMgKSApIHsKLSAgICAgICAgICAgIGNhbGxiYWNrID0gcHJvcHM7Ci0gICAg
ICAgICAgICBwcm9wcyA9IFsgIioiIF07Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBw
cm9wcyA9IHByb3BzLnNwbGl0KCIgIik7Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgcHJvcCwK
LSAgICAgICAgICAgIGluZGV4ID0gMCwKLSAgICAgICAgICAgIGxlbmd0aCA9IHByb3BzLmxlbmd0
aDsKLQotICAgICAgICBmb3IgKCA7IGluZGV4IDwgbGVuZ3RoIDsgaW5kZXgrKyApIHsKLSAgICAg
ICAgICAgIHByb3AgPSBwcm9wc1sgaW5kZXggXTsKLSAgICAgICAgICAgIHR3ZWVuZXJzWyBwcm9w
IF0gPSB0d2VlbmVyc1sgcHJvcCBdIHx8IFtdOwotICAgICAgICAgICAgdHdlZW5lcnNbIHByb3Ag
XS51bnNoaWZ0KCBjYWxsYmFjayApOwotICAgICAgICB9Ci0gICAgfSwKLQotICAgIHByZWZpbHRl
cjogZnVuY3Rpb24oIGNhbGxiYWNrLCBwcmVwZW5kICkgewotICAgICAgICBpZiAoIHByZXBlbmQg
KSB7Ci0gICAgICAgICAgICBhbmltYXRpb25QcmVmaWx0ZXJzLnVuc2hpZnQoIGNhbGxiYWNrICk7
Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBhbmltYXRpb25QcmVmaWx0ZXJzLnB1c2go
IGNhbGxiYWNrICk7Ci0gICAgICAgIH0KLSAgICB9Ci19KTsKLQotalF1ZXJ5LnNwZWVkID0gZnVu
Y3Rpb24oIHNwZWVkLCBlYXNpbmcsIGZuICkgewotICAgIHZhciBvcHQgPSBzcGVlZCAmJiB0eXBl
b2Ygc3BlZWQgPT09ICJvYmplY3QiID8galF1ZXJ5LmV4dGVuZCgge30sIHNwZWVkICkgOiB7Ci0g
ICAgICAgIGNvbXBsZXRlOiBmbiB8fCAhZm4gJiYgZWFzaW5nIHx8Ci0gICAgICAgICAgICBqUXVl
cnkuaXNGdW5jdGlvbiggc3BlZWQgKSAmJiBzcGVlZCwKLSAgICAgICAgZHVyYXRpb246IHNwZWVk
LAotICAgICAgICBlYXNpbmc6IGZuICYmIGVhc2luZyB8fCBlYXNpbmcgJiYgIWpRdWVyeS5pc0Z1
bmN0aW9uKCBlYXNpbmcgKSAmJiBlYXNpbmcKLSAgICB9OwotCi0gICAgb3B0LmR1cmF0aW9uID0g
alF1ZXJ5LmZ4Lm9mZiA/IDAgOiB0eXBlb2Ygb3B0LmR1cmF0aW9uID09PSAibnVtYmVyIiA/IG9w
dC5kdXJhdGlvbiA6Ci0gICAgICAgIG9wdC5kdXJhdGlvbiBpbiBqUXVlcnkuZnguc3BlZWRzID8g
alF1ZXJ5LmZ4LnNwZWVkc1sgb3B0LmR1cmF0aW9uIF0gOiBqUXVlcnkuZnguc3BlZWRzLl9kZWZh
dWx0OwotCi0gICAgLy8gbm9ybWFsaXplIG9wdC5xdWV1ZSAtIHRydWUvdW5kZWZpbmVkL251bGwg
LT4gImZ4IgotICAgIGlmICggb3B0LnF1ZXVlID09IG51bGwgfHwgb3B0LnF1ZXVlID09PSB0cnVl
ICkgewotICAgICAgICBvcHQucXVldWUgPSAiZngiOwotICAgIH0KLQotICAgIC8vIFF1ZXVlaW5n
Ci0gICAgb3B0Lm9sZCA9IG9wdC5jb21wbGV0ZTsKLQotICAgIG9wdC5jb21wbGV0ZSA9IGZ1bmN0
aW9uKCkgewotICAgICAgICBpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBvcHQub2xkICkgKSB7Ci0g
ICAgICAgICAgICBvcHQub2xkLmNhbGwoIHRoaXMgKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlm
ICggb3B0LnF1ZXVlICkgewotICAgICAgICAgICAgalF1ZXJ5LmRlcXVldWUoIHRoaXMsIG9wdC5x
dWV1ZSApOwotICAgICAgICB9Ci0gICAgfTsKLQotICAgIHJldHVybiBvcHQ7Ci19OwotCi1qUXVl
cnkuZm4uZXh0ZW5kKHsKLSAgICBmYWRlVG86IGZ1bmN0aW9uKCBzcGVlZCwgdG8sIGVhc2luZywg
Y2FsbGJhY2sgKSB7Ci0KLSAgICAgICAgLy8gc2hvdyBhbnkgaGlkZGVuIGVsZW1lbnRzIGFmdGVy
IHNldHRpbmcgb3BhY2l0eSB0byAwCi0gICAgICAgIHJldHVybiB0aGlzLmZpbHRlciggaXNIaWRk
ZW4gKS5jc3MoICJvcGFjaXR5IiwgMCApLnNob3coKQotCi0gICAgICAgICAgICAvLyBhbmltYXRl
IHRvIHRoZSB2YWx1ZSBzcGVjaWZpZWQKLSAgICAgICAgICAgIC5lbmQoKS5hbmltYXRlKHsgb3Bh
Y2l0eTogdG8gfSwgc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKTsKLSAgICB9LAotICAgIGFuaW1h
dGU6IGZ1bmN0aW9uKCBwcm9wLCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApIHsKLSAgICAgICAg
dmFyIGVtcHR5ID0galF1ZXJ5LmlzRW1wdHlPYmplY3QoIHByb3AgKSwKLSAgICAgICAgICAgIG9w
dGFsbCA9IGpRdWVyeS5zcGVlZCggc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKSwKLSAgICAgICAg
ICAgIGRvQW5pbWF0aW9uID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgLy8gT3BlcmF0
ZSBvbiBhIGNvcHkgb2YgcHJvcCBzbyBwZXItcHJvcGVydHkgZWFzaW5nIHdvbid0IGJlIGxvc3QK
LSAgICAgICAgICAgICAgICB2YXIgYW5pbSA9IEFuaW1hdGlvbiggdGhpcywgalF1ZXJ5LmV4dGVu
ZCgge30sIHByb3AgKSwgb3B0YWxsICk7Ci0KLSAgICAgICAgICAgICAgICAvLyBFbXB0eSBhbmlt
YXRpb25zLCBvciBmaW5pc2hpbmcgcmVzb2x2ZXMgaW1tZWRpYXRlbHkKLSAgICAgICAgICAgICAg
ICBpZiAoIGVtcHR5IHx8IGRhdGFfcHJpdi5nZXQoIHRoaXMsICJmaW5pc2giICkgKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGFuaW0uc3RvcCggdHJ1ZSApOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIH07Ci0gICAgICAgICAgICBkb0FuaW1hdGlvbi5maW5pc2ggPSBkb0FuaW1hdGlv
bjsKLQotICAgICAgICByZXR1cm4gZW1wdHkgfHwgb3B0YWxsLnF1ZXVlID09PSBmYWxzZSA/Ci0g
ICAgICAgICAgICB0aGlzLmVhY2goIGRvQW5pbWF0aW9uICkgOgotICAgICAgICAgICAgdGhpcy5x
dWV1ZSggb3B0YWxsLnF1ZXVlLCBkb0FuaW1hdGlvbiApOwotICAgIH0sCi0gICAgc3RvcDogZnVu
Y3Rpb24oIHR5cGUsIGNsZWFyUXVldWUsIGdvdG9FbmQgKSB7Ci0gICAgICAgIHZhciBzdG9wUXVl
dWUgPSBmdW5jdGlvbiggaG9va3MgKSB7Ci0gICAgICAgICAgICB2YXIgc3RvcCA9IGhvb2tzLnN0
b3A7Ci0gICAgICAgICAgICBkZWxldGUgaG9va3Muc3RvcDsKLSAgICAgICAgICAgIHN0b3AoIGdv
dG9FbmQgKTsKLSAgICAgICAgfTsKLQotICAgICAgICBpZiAoIHR5cGVvZiB0eXBlICE9PSAic3Ry
aW5nIiApIHsKLSAgICAgICAgICAgIGdvdG9FbmQgPSBjbGVhclF1ZXVlOwotICAgICAgICAgICAg
Y2xlYXJRdWV1ZSA9IHR5cGU7Ci0gICAgICAgICAgICB0eXBlID0gdW5kZWZpbmVkOwotICAgICAg
ICB9Ci0gICAgICAgIGlmICggY2xlYXJRdWV1ZSAmJiB0eXBlICE9PSBmYWxzZSApIHsKLSAgICAg
ICAgICAgIHRoaXMucXVldWUoIHR5cGUgfHwgImZ4IiwgW10gKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICB2YXIgZGVxdWV1
ZSA9IHRydWUsCi0gICAgICAgICAgICAgICAgaW5kZXggPSB0eXBlICE9IG51bGwgJiYgdHlwZSAr
ICJxdWV1ZUhvb2tzIiwKLSAgICAgICAgICAgICAgICB0aW1lcnMgPSBqUXVlcnkudGltZXJzLAot
ICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhX3ByaXYuZ2V0KCB0aGlzICk7Ci0KLSAgICAgICAg
ICAgIGlmICggaW5kZXggKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCBkYXRhWyBpbmRleCBdICYm
IGRhdGFbIGluZGV4IF0uc3RvcCApIHsKLSAgICAgICAgICAgICAgICAgICAgc3RvcFF1ZXVlKCBk
YXRhWyBpbmRleCBdICk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgICBmb3IgKCBpbmRleCBpbiBkYXRhICkgewotICAgICAgICAgICAgICAg
ICAgICBpZiAoIGRhdGFbIGluZGV4IF0gJiYgZGF0YVsgaW5kZXggXS5zdG9wICYmIHJydW4udGVz
dCggaW5kZXggKSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0b3BRdWV1ZSggZGF0YVsg
aW5kZXggXSApOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICBmb3IgKCBpbmRleCA9IHRpbWVycy5sZW5ndGg7IGlu
ZGV4LS07ICkgewotICAgICAgICAgICAgICAgIGlmICggdGltZXJzWyBpbmRleCBdLmVsZW0gPT09
IHRoaXMgJiYgKHR5cGUgPT0gbnVsbCB8fCB0aW1lcnNbIGluZGV4IF0ucXVldWUgPT09IHR5cGUp
ICkgewotICAgICAgICAgICAgICAgICAgICB0aW1lcnNbIGluZGV4IF0uYW5pbS5zdG9wKCBnb3Rv
RW5kICk7Ci0gICAgICAgICAgICAgICAgICAgIGRlcXVldWUgPSBmYWxzZTsKLSAgICAgICAgICAg
ICAgICAgICAgdGltZXJzLnNwbGljZSggaW5kZXgsIDEgKTsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIHN0YXJ0IHRoZSBuZXh0IGluIHRoZSBxdWV1
ZSBpZiB0aGUgbGFzdCBzdGVwIHdhc24ndCBmb3JjZWQKLSAgICAgICAgICAgIC8vIHRpbWVycyBj
dXJyZW50bHkgd2lsbCBjYWxsIHRoZWlyIGNvbXBsZXRlIGNhbGxiYWNrcywgd2hpY2ggd2lsbCBk
ZXF1ZXVlCi0gICAgICAgICAgICAvLyBidXQgb25seSBpZiB0aGV5IHdlcmUgZ290b0VuZAotICAg
ICAgICAgICAgaWYgKCBkZXF1ZXVlIHx8ICFnb3RvRW5kICkgewotICAgICAgICAgICAgICAgIGpR
dWVyeS5kZXF1ZXVlKCB0aGlzLCB0eXBlICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOwot
ICAgIH0sCi0gICAgZmluaXNoOiBmdW5jdGlvbiggdHlwZSApIHsKLSAgICAgICAgaWYgKCB0eXBl
ICE9PSBmYWxzZSApIHsKLSAgICAgICAgICAgIHR5cGUgPSB0eXBlIHx8ICJmeCI7Ci0gICAgICAg
IH0KLSAgICAgICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHZh
ciBpbmRleCwKLSAgICAgICAgICAgICAgICBkYXRhID0gZGF0YV9wcml2LmdldCggdGhpcyApLAot
ICAgICAgICAgICAgICAgIHF1ZXVlID0gZGF0YVsgdHlwZSArICJxdWV1ZSIgXSwKLSAgICAgICAg
ICAgICAgICBob29rcyA9IGRhdGFbIHR5cGUgKyAicXVldWVIb29rcyIgXSwKLSAgICAgICAgICAg
ICAgICB0aW1lcnMgPSBqUXVlcnkudGltZXJzLAotICAgICAgICAgICAgICAgIGxlbmd0aCA9IHF1
ZXVlID8gcXVldWUubGVuZ3RoIDogMDsKLQotICAgICAgICAgICAgLy8gZW5hYmxlIGZpbmlzaGlu
ZyBmbGFnIG9uIHByaXZhdGUgZGF0YQotICAgICAgICAgICAgZGF0YS5maW5pc2ggPSB0cnVlOwot
Ci0gICAgICAgICAgICAvLyBlbXB0eSB0aGUgcXVldWUgZmlyc3QKLSAgICAgICAgICAgIGpRdWVy
eS5xdWV1ZSggdGhpcywgdHlwZSwgW10gKTsKLQotICAgICAgICAgICAgaWYgKCBob29rcyAmJiBo
b29rcy5zdG9wICkgewotICAgICAgICAgICAgICAgIGhvb2tzLnN0b3AuY2FsbCggdGhpcywgdHJ1
ZSApOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBsb29rIGZvciBhbnkgYWN0aXZl
IGFuaW1hdGlvbnMsIGFuZCBmaW5pc2ggdGhlbQotICAgICAgICAgICAgZm9yICggaW5kZXggPSB0
aW1lcnMubGVuZ3RoOyBpbmRleC0tOyApIHsKLSAgICAgICAgICAgICAgICBpZiAoIHRpbWVyc1sg
aW5kZXggXS5lbGVtID09PSB0aGlzICYmIHRpbWVyc1sgaW5kZXggXS5xdWV1ZSA9PT0gdHlwZSAp
IHsKLSAgICAgICAgICAgICAgICAgICAgdGltZXJzWyBpbmRleCBdLmFuaW0uc3RvcCggdHJ1ZSAp
OwotICAgICAgICAgICAgICAgICAgICB0aW1lcnMuc3BsaWNlKCBpbmRleCwgMSApOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gbG9vayBmb3IgYW55
IGFuaW1hdGlvbnMgaW4gdGhlIG9sZCBxdWV1ZSBhbmQgZmluaXNoIHRoZW0KLSAgICAgICAgICAg
IGZvciAoIGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKCBxdWV1ZVsgaW5kZXggXSAmJiBxdWV1ZVsgaW5kZXggXS5maW5pc2ggKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIHF1ZXVlWyBpbmRleCBdLmZpbmlzaC5jYWxsKCB0aGlzICk7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyB0dXJuIG9m
ZiBmaW5pc2hpbmcgZmxhZwotICAgICAgICAgICAgZGVsZXRlIGRhdGEuZmluaXNoOwotICAgICAg
ICB9KTsKLSAgICB9Ci19KTsKLQotalF1ZXJ5LmVhY2goWyAidG9nZ2xlIiwgInNob3ciLCAiaGlk
ZSIgXSwgZnVuY3Rpb24oIGksIG5hbWUgKSB7Ci0gICAgdmFyIGNzc0ZuID0galF1ZXJ5LmZuWyBu
YW1lIF07Ci0gICAgalF1ZXJ5LmZuWyBuYW1lIF0gPSBmdW5jdGlvbiggc3BlZWQsIGVhc2luZywg
Y2FsbGJhY2sgKSB7Ci0gICAgICAgIHJldHVybiBzcGVlZCA9PSBudWxsIHx8IHR5cGVvZiBzcGVl
ZCA9PT0gImJvb2xlYW4iID8KLSAgICAgICAgICAgIGNzc0ZuLmFwcGx5KCB0aGlzLCBhcmd1bWVu
dHMgKSA6Ci0gICAgICAgICAgICB0aGlzLmFuaW1hdGUoIGdlbkZ4KCBuYW1lLCB0cnVlICksIHNw
ZWVkLCBlYXNpbmcsIGNhbGxiYWNrICk7Ci0gICAgfTsKLX0pOwotCi0vLyBHZW5lcmF0ZSBzaG9y
dGN1dHMgZm9yIGN1c3RvbSBhbmltYXRpb25zCi1qUXVlcnkuZWFjaCh7Ci0gICAgc2xpZGVEb3du
OiBnZW5GeCgic2hvdyIpLAotICAgIHNsaWRlVXA6IGdlbkZ4KCJoaWRlIiksCi0gICAgc2xpZGVU
b2dnbGU6IGdlbkZ4KCJ0b2dnbGUiKSwKLSAgICBmYWRlSW46IHsgb3BhY2l0eTogInNob3ciIH0s
Ci0gICAgZmFkZU91dDogeyBvcGFjaXR5OiAiaGlkZSIgfSwKLSAgICBmYWRlVG9nZ2xlOiB7IG9w
YWNpdHk6ICJ0b2dnbGUiIH0KLX0sIGZ1bmN0aW9uKCBuYW1lLCBwcm9wcyApIHsKLSAgICBqUXVl
cnkuZm5bIG5hbWUgXSA9IGZ1bmN0aW9uKCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApIHsKLSAg
ICAgICAgcmV0dXJuIHRoaXMuYW5pbWF0ZSggcHJvcHMsIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNr
ICk7Ci0gICAgfTsKLX0pOwotCi1qUXVlcnkudGltZXJzID0gW107Ci1qUXVlcnkuZngudGljayA9
IGZ1bmN0aW9uKCkgewotICAgIHZhciB0aW1lciwKLSAgICAgICAgaSA9IDAsCi0gICAgICAgIHRp
bWVycyA9IGpRdWVyeS50aW1lcnM7Ci0KLSAgICBmeE5vdyA9IGpRdWVyeS5ub3coKTsKLQotICAg
IGZvciAoIDsgaSA8IHRpbWVycy5sZW5ndGg7IGkrKyApIHsKLSAgICAgICAgdGltZXIgPSB0aW1l
cnNbIGkgXTsKLSAgICAgICAgLy8gQ2hlY2tzIHRoZSB0aW1lciBoYXMgbm90IGFscmVhZHkgYmVl
biByZW1vdmVkCi0gICAgICAgIGlmICggIXRpbWVyKCkgJiYgdGltZXJzWyBpIF0gPT09IHRpbWVy
ICkgewotICAgICAgICAgICAgdGltZXJzLnNwbGljZSggaS0tLCAxICk7Ci0gICAgICAgIH0KLSAg
ICB9Ci0KLSAgICBpZiAoICF0aW1lcnMubGVuZ3RoICkgewotICAgICAgICBqUXVlcnkuZnguc3Rv
cCgpOwotICAgIH0KLSAgICBmeE5vdyA9IHVuZGVmaW5lZDsKLX07Ci0KLWpRdWVyeS5meC50aW1l
ciA9IGZ1bmN0aW9uKCB0aW1lciApIHsKLSAgICBqUXVlcnkudGltZXJzLnB1c2goIHRpbWVyICk7
Ci0gICAgaWYgKCB0aW1lcigpICkgewotICAgICAgICBqUXVlcnkuZnguc3RhcnQoKTsKLSAgICB9
IGVsc2UgewotICAgICAgICBqUXVlcnkudGltZXJzLnBvcCgpOwotICAgIH0KLX07Ci0KLWpRdWVy
eS5meC5pbnRlcnZhbCA9IDEzOwotCi1qUXVlcnkuZnguc3RhcnQgPSBmdW5jdGlvbigpIHsKLSAg
ICBpZiAoICF0aW1lcklkICkgewotICAgICAgICB0aW1lcklkID0gc2V0SW50ZXJ2YWwoIGpRdWVy
eS5meC50aWNrLCBqUXVlcnkuZnguaW50ZXJ2YWwgKTsKLSAgICB9Ci19OwotCi1qUXVlcnkuZngu
c3RvcCA9IGZ1bmN0aW9uKCkgewotICAgIGNsZWFySW50ZXJ2YWwoIHRpbWVySWQgKTsKLSAgICB0
aW1lcklkID0gbnVsbDsKLX07Ci0KLWpRdWVyeS5meC5zcGVlZHMgPSB7Ci0gICAgc2xvdzogNjAw
LAotICAgIGZhc3Q6IDIwMCwKLSAgICAvLyBEZWZhdWx0IHNwZWVkCi0gICAgX2RlZmF1bHQ6IDQw
MAotfTsKLQotCi0vLyBCYXNlZCBvZmYgb2YgdGhlIHBsdWdpbiBieSBDbGludCBIZWxmZXJzLCB3
aXRoIHBlcm1pc3Npb24uCi0vLyBodHRwOi8vYmxpbmRzaWduYWxzLmNvbS9pbmRleC5waHAvMjAw
OS8wNy9qcXVlcnktZGVsYXkvCi1qUXVlcnkuZm4uZGVsYXkgPSBmdW5jdGlvbiggdGltZSwgdHlw
ZSApIHsKLSAgICB0aW1lID0galF1ZXJ5LmZ4ID8galF1ZXJ5LmZ4LnNwZWVkc1sgdGltZSBdIHx8
IHRpbWUgOiB0aW1lOwotICAgIHR5cGUgPSB0eXBlIHx8ICJmeCI7Ci0KLSAgICByZXR1cm4gdGhp
cy5xdWV1ZSggdHlwZSwgZnVuY3Rpb24oIG5leHQsIGhvb2tzICkgewotICAgICAgICB2YXIgdGlt
ZW91dCA9IHNldFRpbWVvdXQoIG5leHQsIHRpbWUgKTsKLSAgICAgICAgaG9va3Muc3RvcCA9IGZ1
bmN0aW9uKCkgewotICAgICAgICAgICAgY2xlYXJUaW1lb3V0KCB0aW1lb3V0ICk7Ci0gICAgICAg
IH07Ci0gICAgfSk7Ci19OwotCi0KLShmdW5jdGlvbigpIHsKLSAgICB2YXIgaW5wdXQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCAiaW5wdXQiICksCi0gICAgICAgIHNlbGVjdCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoICJzZWxlY3QiICksCi0gICAgICAgIG9wdCA9IHNlbGVjdC5hcHBlbmRD
aGlsZCggZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggIm9wdGlvbiIgKSApOwotCi0gICAgaW5wdXQu
dHlwZSA9ICJjaGVja2JveCI7Ci0KLSAgICAvLyBTdXBwb3J0OiBpT1MgNS4xLCBBbmRyb2lkIDQu
eCwgQW5kcm9pZCAyLjMKLSAgICAvLyBDaGVjayB0aGUgZGVmYXVsdCBjaGVja2JveC9yYWRpbyB2
YWx1ZSAoIiIgb24gb2xkIFdlYktpdDsgIm9uIiBlbHNld2hlcmUpCi0gICAgc3VwcG9ydC5jaGVj
a09uID0gaW5wdXQudmFsdWUgIT09ICIiOwotCi0gICAgLy8gTXVzdCBhY2Nlc3MgdGhlIHBhcmVu
dCB0byBtYWtlIGFuIG9wdGlvbiBzZWxlY3QgcHJvcGVybHkKLSAgICAvLyBTdXBwb3J0OiBJRTks
IElFMTAKLSAgICBzdXBwb3J0Lm9wdFNlbGVjdGVkID0gb3B0LnNlbGVjdGVkOwotCi0gICAgLy8g
TWFrZSBzdXJlIHRoYXQgdGhlIG9wdGlvbnMgaW5zaWRlIGRpc2FibGVkIHNlbGVjdHMgYXJlbid0
IG1hcmtlZCBhcyBkaXNhYmxlZAotICAgIC8vIChXZWJLaXQgbWFya3MgdGhlbSBhcyBkaXNhYmxl
ZCkKLSAgICBzZWxlY3QuZGlzYWJsZWQgPSB0cnVlOwotICAgIHN1cHBvcnQub3B0RGlzYWJsZWQg
PSAhb3B0LmRpc2FibGVkOwotCi0gICAgLy8gQ2hlY2sgaWYgYW4gaW5wdXQgbWFpbnRhaW5zIGl0
cyB2YWx1ZSBhZnRlciBiZWNvbWluZyBhIHJhZGlvCi0gICAgLy8gU3VwcG9ydDogSUU5LCBJRTEw
Ci0gICAgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCAiaW5wdXQiICk7Ci0gICAgaW5w
dXQudmFsdWUgPSAidCI7Ci0gICAgaW5wdXQudHlwZSA9ICJyYWRpbyI7Ci0gICAgc3VwcG9ydC5y
YWRpb1ZhbHVlID0gaW5wdXQudmFsdWUgPT09ICJ0IjsKLX0pKCk7Ci0KLQotdmFyIG5vZGVIb29r
LCBib29sSG9vaywKLSAgICBhdHRySGFuZGxlID0galF1ZXJ5LmV4cHIuYXR0ckhhbmRsZTsKLQot
alF1ZXJ5LmZuLmV4dGVuZCh7Ci0gICAgYXR0cjogZnVuY3Rpb24oIG5hbWUsIHZhbHVlICkgewot
ICAgICAgICByZXR1cm4gYWNjZXNzKCB0aGlzLCBqUXVlcnkuYXR0ciwgbmFtZSwgdmFsdWUsIGFy
Z3VtZW50cy5sZW5ndGggPiAxICk7Ci0gICAgfSwKLQotICAgIHJlbW92ZUF0dHI6IGZ1bmN0aW9u
KCBuYW1lICkgewotICAgICAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewotICAgICAg
ICAgICAgalF1ZXJ5LnJlbW92ZUF0dHIoIHRoaXMsIG5hbWUgKTsKLSAgICAgICAgfSk7Ci0gICAg
fQotfSk7Ci0KLWpRdWVyeS5leHRlbmQoewotICAgIGF0dHI6IGZ1bmN0aW9uKCBlbGVtLCBuYW1l
LCB2YWx1ZSApIHsKLSAgICAgICAgdmFyIGhvb2tzLCByZXQsCi0gICAgICAgICAgICBuVHlwZSA9
IGVsZW0ubm9kZVR5cGU7Ci0KLSAgICAgICAgLy8gZG9uJ3QgZ2V0L3NldCBhdHRyaWJ1dGVzIG9u
IHRleHQsIGNvbW1lbnQgYW5kIGF0dHJpYnV0ZSBub2RlcwotICAgICAgICBpZiAoICFlbGVtIHx8
IG5UeXBlID09PSAzIHx8IG5UeXBlID09PSA4IHx8IG5UeXBlID09PSAyICkgewotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gRmFsbGJhY2sgdG8gcHJvcCB3aGVu
IGF0dHJpYnV0ZXMgYXJlIG5vdCBzdXBwb3J0ZWQKLSAgICAgICAgaWYgKCB0eXBlb2YgZWxlbS5n
ZXRBdHRyaWJ1dGUgPT09IHN0cnVuZGVmaW5lZCApIHsKLSAgICAgICAgICAgIHJldHVybiBqUXVl
cnkucHJvcCggZWxlbSwgbmFtZSwgdmFsdWUgKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEFs
bCBhdHRyaWJ1dGVzIGFyZSBsb3dlcmNhc2UKLSAgICAgICAgLy8gR3JhYiBuZWNlc3NhcnkgaG9v
ayBpZiBvbmUgaXMgZGVmaW5lZAotICAgICAgICBpZiAoIG5UeXBlICE9PSAxIHx8ICFqUXVlcnku
aXNYTUxEb2MoIGVsZW0gKSApIHsKLSAgICAgICAgICAgIG5hbWUgPSBuYW1lLnRvTG93ZXJDYXNl
KCk7Ci0gICAgICAgICAgICBob29rcyA9IGpRdWVyeS5hdHRySG9va3NbIG5hbWUgXSB8fAotICAg
ICAgICAgICAgICAgICggalF1ZXJ5LmV4cHIubWF0Y2guYm9vbC50ZXN0KCBuYW1lICkgPyBib29s
SG9vayA6IG5vZGVIb29rICk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIHZhbHVlICE9PSB1
bmRlZmluZWQgKSB7Ci0KLSAgICAgICAgICAgIGlmICggdmFsdWUgPT09IG51bGwgKSB7Ci0gICAg
ICAgICAgICAgICAgalF1ZXJ5LnJlbW92ZUF0dHIoIGVsZW0sIG5hbWUgKTsKLQotICAgICAgICAg
ICAgfSBlbHNlIGlmICggaG9va3MgJiYgInNldCIgaW4gaG9va3MgJiYgKHJldCA9IGhvb2tzLnNl
dCggZWxlbSwgdmFsdWUsIG5hbWUgKSkgIT09IHVuZGVmaW5lZCApIHsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gcmV0OwotCi0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGVs
ZW0uc2V0QXR0cmlidXRlKCBuYW1lLCB2YWx1ZSArICIiICk7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIHZhbHVlOwotICAgICAgICAgICAgfQotCi0gICAgICAgIH0gZWxzZSBpZiAoIGhvb2tzICYm
ICJnZXQiIGluIGhvb2tzICYmIChyZXQgPSBob29rcy5nZXQoIGVsZW0sIG5hbWUgKSkgIT09IG51
bGwgKSB7Ci0gICAgICAgICAgICByZXR1cm4gcmV0OwotCi0gICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICByZXQgPSBqUXVlcnkuZmluZC5hdHRyKCBlbGVtLCBuYW1lICk7Ci0KLSAgICAgICAg
ICAgIC8vIE5vbi1leGlzdGVudCBhdHRyaWJ1dGVzIHJldHVybiBudWxsLCB3ZSBub3JtYWxpemUg
dG8gdW5kZWZpbmVkCi0gICAgICAgICAgICByZXR1cm4gcmV0ID09IG51bGwgPwotICAgICAgICAg
ICAgICAgIHVuZGVmaW5lZCA6Ci0gICAgICAgICAgICAgICAgcmV0OwotICAgICAgICB9Ci0gICAg
fSwKLQotICAgIHJlbW92ZUF0dHI6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSApIHsKLSAgICAgICAg
dmFyIG5hbWUsIHByb3BOYW1lLAotICAgICAgICAgICAgaSA9IDAsCi0gICAgICAgICAgICBhdHRy
TmFtZXMgPSB2YWx1ZSAmJiB2YWx1ZS5tYXRjaCggcm5vdHdoaXRlICk7Ci0KLSAgICAgICAgaWYg
KCBhdHRyTmFtZXMgJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSApIHsKLSAgICAgICAgICAgIHdoaWxl
ICggKG5hbWUgPSBhdHRyTmFtZXNbaSsrXSkgKSB7Ci0gICAgICAgICAgICAgICAgcHJvcE5hbWUg
PSBqUXVlcnkucHJvcEZpeFsgbmFtZSBdIHx8IG5hbWU7Ci0KLSAgICAgICAgICAgICAgICAvLyBC
b29sZWFuIGF0dHJpYnV0ZXMgZ2V0IHNwZWNpYWwgdHJlYXRtZW50ICgjMTA4NzApCi0gICAgICAg
ICAgICAgICAgaWYgKCBqUXVlcnkuZXhwci5tYXRjaC5ib29sLnRlc3QoIG5hbWUgKSApIHsKLSAg
ICAgICAgICAgICAgICAgICAgLy8gU2V0IGNvcnJlc3BvbmRpbmcgcHJvcGVydHkgdG8gZmFsc2UK
LSAgICAgICAgICAgICAgICAgICAgZWxlbVsgcHJvcE5hbWUgXSA9IGZhbHNlOwotICAgICAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGVsZW0ucmVtb3ZlQXR0cmlidXRlKCBuYW1lICk7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9LAotCi0gICAgYXR0ckhvb2tzOiB7Ci0g
ICAgICAgIHR5cGU6IHsKLSAgICAgICAgICAgIHNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlICkg
ewotICAgICAgICAgICAgICAgIGlmICggIXN1cHBvcnQucmFkaW9WYWx1ZSAmJiB2YWx1ZSA9PT0g
InJhZGlvIiAmJgotICAgICAgICAgICAgICAgICAgICBqUXVlcnkubm9kZU5hbWUoIGVsZW0sICJp
bnB1dCIgKSApIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gU2V0dGluZyB0aGUgdHlwZSBvbiBh
IHJhZGlvIGJ1dHRvbiBhZnRlciB0aGUgdmFsdWUgcmVzZXRzIHRoZSB2YWx1ZSBpbiBJRTYtOQot
ICAgICAgICAgICAgICAgICAgICAvLyBSZXNldCB2YWx1ZSB0byBkZWZhdWx0IGluIGNhc2UgdHlw
ZSBpcyBzZXQgYWZ0ZXIgdmFsdWUgZHVyaW5nIGNyZWF0aW9uCi0gICAgICAgICAgICAgICAgICAg
IHZhciB2YWwgPSBlbGVtLnZhbHVlOwotICAgICAgICAgICAgICAgICAgICBlbGVtLnNldEF0dHJp
YnV0ZSggInR5cGUiLCB2YWx1ZSApOwotICAgICAgICAgICAgICAgICAgICBpZiAoIHZhbCApIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0udmFsdWUgPSB2YWw7Ci0gICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0pOwotCi0vLyBIb29rcyBm
b3IgYm9vbGVhbiBhdHRyaWJ1dGVzCi1ib29sSG9vayA9IHsKLSAgICBzZXQ6IGZ1bmN0aW9uKCBl
bGVtLCB2YWx1ZSwgbmFtZSApIHsKLSAgICAgICAgaWYgKCB2YWx1ZSA9PT0gZmFsc2UgKSB7Ci0g
ICAgICAgICAgICAvLyBSZW1vdmUgYm9vbGVhbiBhdHRyaWJ1dGVzIHdoZW4gc2V0IHRvIGZhbHNl
Ci0gICAgICAgICAgICBqUXVlcnkucmVtb3ZlQXR0ciggZWxlbSwgbmFtZSApOwotICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgZWxlbS5zZXRBdHRyaWJ1dGUoIG5hbWUsIG5hbWUgKTsKLSAg
ICAgICAgfQotICAgICAgICByZXR1cm4gbmFtZTsKLSAgICB9Ci19OwotalF1ZXJ5LmVhY2goIGpR
dWVyeS5leHByLm1hdGNoLmJvb2wuc291cmNlLm1hdGNoKCAvXHcrL2cgKSwgZnVuY3Rpb24oIGks
IG5hbWUgKSB7Ci0gICAgdmFyIGdldHRlciA9IGF0dHJIYW5kbGVbIG5hbWUgXSB8fCBqUXVlcnku
ZmluZC5hdHRyOwotCi0gICAgYXR0ckhhbmRsZVsgbmFtZSBdID0gZnVuY3Rpb24oIGVsZW0sIG5h
bWUsIGlzWE1MICkgewotICAgICAgICB2YXIgcmV0LCBoYW5kbGU7Ci0gICAgICAgIGlmICggIWlz
WE1MICkgewotICAgICAgICAgICAgLy8gQXZvaWQgYW4gaW5maW5pdGUgbG9vcCBieSB0ZW1wb3Jh
cmlseSByZW1vdmluZyB0aGlzIGZ1bmN0aW9uIGZyb20gdGhlIGdldHRlcgotICAgICAgICAgICAg
aGFuZGxlID0gYXR0ckhhbmRsZVsgbmFtZSBdOwotICAgICAgICAgICAgYXR0ckhhbmRsZVsgbmFt
ZSBdID0gcmV0OwotICAgICAgICAgICAgcmV0ID0gZ2V0dGVyKCBlbGVtLCBuYW1lLCBpc1hNTCAp
ICE9IG51bGwgPwotICAgICAgICAgICAgICAgIG5hbWUudG9Mb3dlckNhc2UoKSA6Ci0gICAgICAg
ICAgICAgICAgbnVsbDsKLSAgICAgICAgICAgIGF0dHJIYW5kbGVbIG5hbWUgXSA9IGhhbmRsZTsK
LSAgICAgICAgfQotICAgICAgICByZXR1cm4gcmV0OwotICAgIH07Ci19KTsKLQotCi0KLQotdmFy
IHJmb2N1c2FibGUgPSAvXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pOwotCi1q
UXVlcnkuZm4uZXh0ZW5kKHsKLSAgICBwcm9wOiBmdW5jdGlvbiggbmFtZSwgdmFsdWUgKSB7Ci0g
ICAgICAgIHJldHVybiBhY2Nlc3MoIHRoaXMsIGpRdWVyeS5wcm9wLCBuYW1lLCB2YWx1ZSwgYXJn
dW1lbnRzLmxlbmd0aCA+IDEgKTsKLSAgICB9LAotCi0gICAgcmVtb3ZlUHJvcDogZnVuY3Rpb24o
IG5hbWUgKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7Ci0gICAgICAg
ICAgICBkZWxldGUgdGhpc1sgalF1ZXJ5LnByb3BGaXhbIG5hbWUgXSB8fCBuYW1lIF07Ci0gICAg
ICAgIH0pOwotICAgIH0KLX0pOwotCi1qUXVlcnkuZXh0ZW5kKHsKLSAgICBwcm9wRml4OiB7Ci0g
ICAgICAgICJmb3IiOiAiaHRtbEZvciIsCi0gICAgICAgICJjbGFzcyI6ICJjbGFzc05hbWUiCi0g
ICAgfSwKLQotICAgIHByb3A6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCB2YWx1ZSApIHsKLSAgICAg
ICAgdmFyIHJldCwgaG9va3MsIG5vdHhtbCwKLSAgICAgICAgICAgIG5UeXBlID0gZWxlbS5ub2Rl
VHlwZTsKLQotICAgICAgICAvLyBkb24ndCBnZXQvc2V0IHByb3BlcnRpZXMgb24gdGV4dCwgY29t
bWVudCBhbmQgYXR0cmlidXRlIG5vZGVzCi0gICAgICAgIGlmICggIWVsZW0gfHwgblR5cGUgPT09
IDMgfHwgblR5cGUgPT09IDggfHwgblR5cGUgPT09IDIgKSB7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLQotICAgICAgICBub3R4bWwgPSBuVHlwZSAhPT0gMSB8fCAhalF1ZXJ5Lmlz
WE1MRG9jKCBlbGVtICk7Ci0KLSAgICAgICAgaWYgKCBub3R4bWwgKSB7Ci0gICAgICAgICAgICAv
LyBGaXggbmFtZSBhbmQgYXR0YWNoIGhvb2tzCi0gICAgICAgICAgICBuYW1lID0galF1ZXJ5LnBy
b3BGaXhbIG5hbWUgXSB8fCBuYW1lOwotICAgICAgICAgICAgaG9va3MgPSBqUXVlcnkucHJvcEhv
b2tzWyBuYW1lIF07Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIHZhbHVlICE9PSB1bmRlZmlu
ZWQgKSB7Ci0gICAgICAgICAgICByZXR1cm4gaG9va3MgJiYgInNldCIgaW4gaG9va3MgJiYgKHJl
dCA9IGhvb2tzLnNldCggZWxlbSwgdmFsdWUsIG5hbWUgKSkgIT09IHVuZGVmaW5lZCA/Ci0gICAg
ICAgICAgICAgICAgcmV0IDoKLSAgICAgICAgICAgICAgICAoIGVsZW1bIG5hbWUgXSA9IHZhbHVl
ICk7Ci0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybiBob29rcyAmJiAiZ2V0
IiBpbiBob29rcyAmJiAocmV0ID0gaG9va3MuZ2V0KCBlbGVtLCBuYW1lICkpICE9PSBudWxsID8K
LSAgICAgICAgICAgICAgICByZXQgOgotICAgICAgICAgICAgICAgIGVsZW1bIG5hbWUgXTsKLSAg
ICAgICAgfQotICAgIH0sCi0KLSAgICBwcm9wSG9va3M6IHsKLSAgICAgICAgdGFiSW5kZXg6IHsK
LSAgICAgICAgICAgIGdldDogZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIGVsZW0uaGFzQXR0cmlidXRlKCAidGFiaW5kZXgiICkgfHwgcmZvY3VzYWJsZS50ZXN0KCBl
bGVtLm5vZGVOYW1lICkgfHwgZWxlbS5ocmVmID8KLSAgICAgICAgICAgICAgICAgICAgZWxlbS50
YWJJbmRleCA6Ci0gICAgICAgICAgICAgICAgICAgIC0xOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0gICAgfQotfSk7Ci0KLS8vIFN1cHBvcnQ6IElFOSsKLS8vIFNlbGVjdGVkbmVzcyBmb3Ig
YW4gb3B0aW9uIGluIGFuIG9wdGdyb3VwIGNhbiBiZSBpbmFjY3VyYXRlCi1pZiAoICFzdXBwb3J0
Lm9wdFNlbGVjdGVkICkgewotICAgIGpRdWVyeS5wcm9wSG9va3Muc2VsZWN0ZWQgPSB7Ci0gICAg
ICAgIGdldDogZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgICAgICAgICB2YXIgcGFyZW50ID0gZWxl
bS5wYXJlbnROb2RlOwotICAgICAgICAgICAgaWYgKCBwYXJlbnQgJiYgcGFyZW50LnBhcmVudE5v
ZGUgKSB7Ci0gICAgICAgICAgICAgICAgcGFyZW50LnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleDsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICB9Ci0gICAg
fTsKLX0KLQotalF1ZXJ5LmVhY2goWwotICAgICJ0YWJJbmRleCIsCi0gICAgInJlYWRPbmx5IiwK
LSAgICAibWF4TGVuZ3RoIiwKLSAgICAiY2VsbFNwYWNpbmciLAotICAgICJjZWxsUGFkZGluZyIs
Ci0gICAgInJvd1NwYW4iLAotICAgICJjb2xTcGFuIiwKLSAgICAidXNlTWFwIiwKLSAgICAiZnJh
bWVCb3JkZXIiLAotICAgICJjb250ZW50RWRpdGFibGUiCi1dLCBmdW5jdGlvbigpIHsKLSAgICBq
UXVlcnkucHJvcEZpeFsgdGhpcy50b0xvd2VyQ2FzZSgpIF0gPSB0aGlzOwotfSk7Ci0KLQotCi0K
LXZhciByY2xhc3MgPSAvW1x0XHJcblxmXS9nOwotCi1qUXVlcnkuZm4uZXh0ZW5kKHsKLSAgICBh
ZGRDbGFzczogZnVuY3Rpb24oIHZhbHVlICkgewotICAgICAgICB2YXIgY2xhc3NlcywgZWxlbSwg
Y3VyLCBjbGF6eiwgaiwgZmluYWxWYWx1ZSwKLSAgICAgICAgICAgIHByb2NlZWQgPSB0eXBlb2Yg
dmFsdWUgPT09ICJzdHJpbmciICYmIHZhbHVlLAotICAgICAgICAgICAgaSA9IDAsCi0gICAgICAg
ICAgICBsZW4gPSB0aGlzLmxlbmd0aDsKLQotICAgICAgICBpZiAoIGpRdWVyeS5pc0Z1bmN0aW9u
KCB2YWx1ZSApICkgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiggaiAp
IHsKLSAgICAgICAgICAgICAgICBqUXVlcnkoIHRoaXMgKS5hZGRDbGFzcyggdmFsdWUuY2FsbCgg
dGhpcywgaiwgdGhpcy5jbGFzc05hbWUgKSApOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0K
LQotICAgICAgICBpZiAoIHByb2NlZWQgKSB7Ci0gICAgICAgICAgICAvLyBUaGUgZGlzanVuY3Rp
b24gaGVyZSBpcyBmb3IgYmV0dGVyIGNvbXByZXNzaWJpbGl0eSAoc2VlIHJlbW92ZUNsYXNzKQot
ICAgICAgICAgICAgY2xhc3NlcyA9ICggdmFsdWUgfHwgIiIgKS5tYXRjaCggcm5vdHdoaXRlICkg
fHwgW107Ci0KLSAgICAgICAgICAgIGZvciAoIDsgaSA8IGxlbjsgaSsrICkgewotICAgICAgICAg
ICAgICAgIGVsZW0gPSB0aGlzWyBpIF07Ci0gICAgICAgICAgICAgICAgY3VyID0gZWxlbS5ub2Rl
VHlwZSA9PT0gMSAmJiAoIGVsZW0uY2xhc3NOYW1lID8KLSAgICAgICAgICAgICAgICAgICAgKCAi
ICIgKyBlbGVtLmNsYXNzTmFtZSArICIgIiApLnJlcGxhY2UoIHJjbGFzcywgIiAiICkgOgotICAg
ICAgICAgICAgICAgICAgICAiICIKLSAgICAgICAgICAgICAgICApOwotCi0gICAgICAgICAgICAg
ICAgaWYgKCBjdXIgKSB7Ci0gICAgICAgICAgICAgICAgICAgIGogPSAwOwotICAgICAgICAgICAg
ICAgICAgICB3aGlsZSAoIChjbGF6eiA9IGNsYXNzZXNbaisrXSkgKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoIGN1ci5pbmRleE9mKCAiICIgKyBjbGF6eiArICIgIiApIDwgMCApIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXIgKz0gY2xhenogKyAiICI7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
ICAgICAgICAvLyBvbmx5IGFzc2lnbiBpZiBkaWZmZXJlbnQgdG8gYXZvaWQgdW5uZWVkZWQgcmVu
ZGVyaW5nLgotICAgICAgICAgICAgICAgICAgICBmaW5hbFZhbHVlID0galF1ZXJ5LnRyaW0oIGN1
ciApOwotICAgICAgICAgICAgICAgICAgICBpZiAoIGVsZW0uY2xhc3NOYW1lICE9PSBmaW5hbFZh
bHVlICkgewotICAgICAgICAgICAgICAgICAgICAgICAgZWxlbS5jbGFzc05hbWUgPSBmaW5hbFZh
bHVlOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgfSwKLQotICAgIHJl
bW92ZUNsYXNzOiBmdW5jdGlvbiggdmFsdWUgKSB7Ci0gICAgICAgIHZhciBjbGFzc2VzLCBlbGVt
LCBjdXIsIGNsYXp6LCBqLCBmaW5hbFZhbHVlLAotICAgICAgICAgICAgcHJvY2VlZCA9IGFyZ3Vt
ZW50cy5sZW5ndGggPT09IDAgfHwgdHlwZW9mIHZhbHVlID09PSAic3RyaW5nIiAmJiB2YWx1ZSwK
LSAgICAgICAgICAgIGkgPSAwLAotICAgICAgICAgICAgbGVuID0gdGhpcy5sZW5ndGg7Ci0KLSAg
ICAgICAgaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggdmFsdWUgKSApIHsKLSAgICAgICAgICAgIHJl
dHVybiB0aGlzLmVhY2goZnVuY3Rpb24oIGogKSB7Ci0gICAgICAgICAgICAgICAgalF1ZXJ5KCB0
aGlzICkucmVtb3ZlQ2xhc3MoIHZhbHVlLmNhbGwoIHRoaXMsIGosIHRoaXMuY2xhc3NOYW1lICkg
KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0gICAgICAgIGlmICggcHJvY2VlZCApIHsK
LSAgICAgICAgICAgIGNsYXNzZXMgPSAoIHZhbHVlIHx8ICIiICkubWF0Y2goIHJub3R3aGl0ZSAp
IHx8IFtdOwotCi0gICAgICAgICAgICBmb3IgKCA7IGkgPCBsZW47IGkrKyApIHsKLSAgICAgICAg
ICAgICAgICBlbGVtID0gdGhpc1sgaSBdOwotICAgICAgICAgICAgICAgIC8vIFRoaXMgZXhwcmVz
c2lvbiBpcyBoZXJlIGZvciBiZXR0ZXIgY29tcHJlc3NpYmlsaXR5IChzZWUgYWRkQ2xhc3MpCi0g
ICAgICAgICAgICAgICAgY3VyID0gZWxlbS5ub2RlVHlwZSA9PT0gMSAmJiAoIGVsZW0uY2xhc3NO
YW1lID8KLSAgICAgICAgICAgICAgICAgICAgKCAiICIgKyBlbGVtLmNsYXNzTmFtZSArICIgIiAp
LnJlcGxhY2UoIHJjbGFzcywgIiAiICkgOgotICAgICAgICAgICAgICAgICAgICAiIgotICAgICAg
ICAgICAgICAgICk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoIGN1ciApIHsKLSAgICAgICAgICAg
ICAgICAgICAgaiA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIHdoaWxlICggKGNsYXp6ID0gY2xh
c3Nlc1tqKytdKSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlbW92ZSAqYWxsKiBp
bnN0YW5jZXMKLSAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICggY3VyLmluZGV4T2YoICIg
IiArIGNsYXp6ICsgIiAiICkgPj0gMCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
dXIgPSBjdXIucmVwbGFjZSggIiAiICsgY2xhenogKyAiICIsICIgIiApOwotICAgICAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAg
ICAgLy8gb25seSBhc3NpZ24gaWYgZGlmZmVyZW50IHRvIGF2b2lkIHVubmVlZGVkIHJlbmRlcmlu
Zy4KLSAgICAgICAgICAgICAgICAgICAgZmluYWxWYWx1ZSA9IHZhbHVlID8galF1ZXJ5LnRyaW0o
IGN1ciApIDogIiI7Ci0gICAgICAgICAgICAgICAgICAgIGlmICggZWxlbS5jbGFzc05hbWUgIT09
IGZpbmFsVmFsdWUgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbGVtLmNsYXNzTmFtZSA9
IGZpbmFsVmFsdWU7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gdGhpczsKLSAgICB9LAot
Ci0gICAgdG9nZ2xlQ2xhc3M6IGZ1bmN0aW9uKCB2YWx1ZSwgc3RhdGVWYWwgKSB7Ci0gICAgICAg
IHZhciB0eXBlID0gdHlwZW9mIHZhbHVlOwotCi0gICAgICAgIGlmICggdHlwZW9mIHN0YXRlVmFs
ID09PSAiYm9vbGVhbiIgJiYgdHlwZSA9PT0gInN0cmluZyIgKSB7Ci0gICAgICAgICAgICByZXR1
cm4gc3RhdGVWYWwgPyB0aGlzLmFkZENsYXNzKCB2YWx1ZSApIDogdGhpcy5yZW1vdmVDbGFzcygg
dmFsdWUgKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIHZh
bHVlICkgKSB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCBpICkgewot
ICAgICAgICAgICAgICAgIGpRdWVyeSggdGhpcyApLnRvZ2dsZUNsYXNzKCB2YWx1ZS5jYWxsKHRo
aXMsIGksIHRoaXMuY2xhc3NOYW1lLCBzdGF0ZVZhbCksIHN0YXRlVmFsICk7Ci0gICAgICAgICAg
ICB9KTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7
Ci0gICAgICAgICAgICBpZiAoIHR5cGUgPT09ICJzdHJpbmciICkgewotICAgICAgICAgICAgICAg
IC8vIHRvZ2dsZSBpbmRpdmlkdWFsIGNsYXNzIG5hbWVzCi0gICAgICAgICAgICAgICAgdmFyIGNs
YXNzTmFtZSwKLSAgICAgICAgICAgICAgICAgICAgaSA9IDAsCi0gICAgICAgICAgICAgICAgICAg
IHNlbGYgPSBqUXVlcnkoIHRoaXMgKSwKLSAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lcyA9
IHZhbHVlLm1hdGNoKCBybm90d2hpdGUgKSB8fCBbXTsKLQotICAgICAgICAgICAgICAgIHdoaWxl
ICggKGNsYXNzTmFtZSA9IGNsYXNzTmFtZXNbIGkrKyBdKSApIHsKLSAgICAgICAgICAgICAgICAg
ICAgLy8gY2hlY2sgZWFjaCBjbGFzc05hbWUgZ2l2ZW4sIHNwYWNlIHNlcGFyYXRlZCBsaXN0Ci0g
ICAgICAgICAgICAgICAgICAgIGlmICggc2VsZi5oYXNDbGFzcyggY2xhc3NOYW1lICkgKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJlbW92ZUNsYXNzKCBjbGFzc05hbWUgKTsKLSAg
ICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu
YWRkQ2xhc3MoIGNsYXNzTmFtZSApOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICAvLyBUb2dnbGUgd2hvbGUgY2xhc3MgbmFtZQotICAgICAg
ICAgICAgfSBlbHNlIGlmICggdHlwZSA9PT0gc3RydW5kZWZpbmVkIHx8IHR5cGUgPT09ICJib29s
ZWFuIiApIHsKLSAgICAgICAgICAgICAgICBpZiAoIHRoaXMuY2xhc3NOYW1lICkgewotICAgICAg
ICAgICAgICAgICAgICAvLyBzdG9yZSBjbGFzc05hbWUgaWYgc2V0Ci0gICAgICAgICAgICAgICAg
ICAgIGRhdGFfcHJpdi5zZXQoIHRoaXMsICJfX2NsYXNzTmFtZV9fIiwgdGhpcy5jbGFzc05hbWUg
KTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBJZiB0aGUgZWxlbWVu
dCBoYXMgYSBjbGFzcyBuYW1lIG9yIGlmIHdlJ3JlIHBhc3NlZCAiZmFsc2UiLAotICAgICAgICAg
ICAgICAgIC8vIHRoZW4gcmVtb3ZlIHRoZSB3aG9sZSBjbGFzc25hbWUgKGlmIHRoZXJlIHdhcyBv
bmUsIHRoZSBhYm92ZSBzYXZlZCBpdCkuCi0gICAgICAgICAgICAgICAgLy8gT3RoZXJ3aXNlIGJy
aW5nIGJhY2sgd2hhdGV2ZXIgd2FzIHByZXZpb3VzbHkgc2F2ZWQgKGlmIGFueXRoaW5nKSwKLSAg
ICAgICAgICAgICAgICAvLyBmYWxsaW5nIGJhY2sgdG8gdGhlIGVtcHR5IHN0cmluZyBpZiBub3Ro
aW5nIHdhcyBzdG9yZWQuCi0gICAgICAgICAgICAgICAgdGhpcy5jbGFzc05hbWUgPSB0aGlzLmNs
YXNzTmFtZSB8fCB2YWx1ZSA9PT0gZmFsc2UgPyAiIiA6IGRhdGFfcHJpdi5nZXQoIHRoaXMsICJf
X2NsYXNzTmFtZV9fIiApIHx8ICIiOwotICAgICAgICAgICAgfQotICAgICAgICB9KTsKLSAgICB9
LAotCi0gICAgaGFzQ2xhc3M6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHsKLSAgICAgICAgdmFyIGNs
YXNzTmFtZSA9ICIgIiArIHNlbGVjdG9yICsgIiAiLAotICAgICAgICAgICAgaSA9IDAsCi0gICAg
ICAgICAgICBsID0gdGhpcy5sZW5ndGg7Ci0gICAgICAgIGZvciAoIDsgaSA8IGw7IGkrKyApIHsK
LSAgICAgICAgICAgIGlmICggdGhpc1tpXS5ub2RlVHlwZSA9PT0gMSAmJiAoIiAiICsgdGhpc1tp
XS5jbGFzc05hbWUgKyAiICIpLnJlcGxhY2UocmNsYXNzLCAiICIpLmluZGV4T2YoIGNsYXNzTmFt
ZSApID49IDAgKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotfSk7Ci0KLQotCi0K
LXZhciBycmV0dXJuID0gL1xyL2c7Ci0KLWpRdWVyeS5mbi5leHRlbmQoewotICAgIHZhbDogZnVu
Y3Rpb24oIHZhbHVlICkgewotICAgICAgICB2YXIgaG9va3MsIHJldCwgaXNGdW5jdGlvbiwKLSAg
ICAgICAgICAgIGVsZW0gPSB0aGlzWzBdOwotCi0gICAgICAgIGlmICggIWFyZ3VtZW50cy5sZW5n
dGggKSB7Ci0gICAgICAgICAgICBpZiAoIGVsZW0gKSB7Ci0gICAgICAgICAgICAgICAgaG9va3Mg
PSBqUXVlcnkudmFsSG9va3NbIGVsZW0udHlwZSBdIHx8IGpRdWVyeS52YWxIb29rc1sgZWxlbS5u
b2RlTmFtZS50b0xvd2VyQ2FzZSgpIF07Ci0KLSAgICAgICAgICAgICAgICBpZiAoIGhvb2tzICYm
ICJnZXQiIGluIGhvb2tzICYmIChyZXQgPSBob29rcy5nZXQoIGVsZW0sICJ2YWx1ZSIgKSkgIT09
IHVuZGVmaW5lZCApIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKLSAgICAgICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICByZXQgPSBlbGVtLnZhbHVlOwotCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIHR5cGVvZiByZXQgPT09ICJzdHJpbmciID8KLSAgICAgICAgICAgICAg
ICAgICAgLy8gaGFuZGxlIG1vc3QgY29tbW9uIHN0cmluZyBjYXNlcwotICAgICAgICAgICAgICAg
ICAgICByZXQucmVwbGFjZShycmV0dXJuLCAiIikgOgotICAgICAgICAgICAgICAgICAgICAvLyBo
YW5kbGUgY2FzZXMgd2hlcmUgdmFsdWUgaXMgbnVsbC91bmRlZiBvciBudW1iZXIKLSAgICAgICAg
ICAgICAgICAgICAgcmV0ID09IG51bGwgPyAiIiA6IHJldDsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaXNGdW5jdGlvbiA9IGpRdWVy
eS5pc0Z1bmN0aW9uKCB2YWx1ZSApOwotCi0gICAgICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rp
b24oIGkgKSB7Ci0gICAgICAgICAgICB2YXIgdmFsOwotCi0gICAgICAgICAgICBpZiAoIHRoaXMu
bm9kZVR5cGUgIT09IDEgKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICBpZiAoIGlzRnVuY3Rpb24gKSB7Ci0gICAgICAgICAgICAgICAgdmFs
ID0gdmFsdWUuY2FsbCggdGhpcywgaSwgalF1ZXJ5KCB0aGlzICkudmFsKCkgKTsKLSAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgdmFsID0gdmFsdWU7Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIC8vIFRyZWF0IG51bGwvdW5kZWZpbmVkIGFzICIiOyBjb252ZXJ0IG51
bWJlcnMgdG8gc3RyaW5nCi0gICAgICAgICAgICBpZiAoIHZhbCA9PSBudWxsICkgewotICAgICAg
ICAgICAgICAgIHZhbCA9ICIiOwotCi0gICAgICAgICAgICB9IGVsc2UgaWYgKCB0eXBlb2YgdmFs
ID09PSAibnVtYmVyIiApIHsKLSAgICAgICAgICAgICAgICB2YWwgKz0gIiI7Ci0KLSAgICAgICAg
ICAgIH0gZWxzZSBpZiAoIGpRdWVyeS5pc0FycmF5KCB2YWwgKSApIHsKLSAgICAgICAgICAgICAg
ICB2YWwgPSBqUXVlcnkubWFwKCB2YWwsIGZ1bmN0aW9uKCB2YWx1ZSApIHsKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHZhbHVlID09IG51bGwgPyAiIiA6IHZhbHVlICsgIiI7Ci0gICAgICAg
ICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGhvb2tzID0galF1ZXJ5
LnZhbEhvb2tzWyB0aGlzLnR5cGUgXSB8fCBqUXVlcnkudmFsSG9va3NbIHRoaXMubm9kZU5hbWUu
dG9Mb3dlckNhc2UoKSBdOwotCi0gICAgICAgICAgICAvLyBJZiBzZXQgcmV0dXJucyB1bmRlZmlu
ZWQsIGZhbGwgYmFjayB0byBub3JtYWwgc2V0dGluZwotICAgICAgICAgICAgaWYgKCAhaG9va3Mg
fHwgISgic2V0IiBpbiBob29rcykgfHwgaG9va3Muc2V0KCB0aGlzLCB2YWwsICJ2YWx1ZSIgKSA9
PT0gdW5kZWZpbmVkICkgewotICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSB2YWw7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0pOwotICAgIH0KLX0pOwotCi1qUXVlcnkuZXh0ZW5kKHsKLSAg
ICB2YWxIb29rczogewotICAgICAgICBzZWxlY3Q6IHsKLSAgICAgICAgICAgIGdldDogZnVuY3Rp
b24oIGVsZW0gKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHZhbHVlLCBvcHRpb24sCi0gICAgICAg
ICAgICAgICAgICAgIG9wdGlvbnMgPSBlbGVtLm9wdGlvbnMsCi0gICAgICAgICAgICAgICAgICAg
IGluZGV4ID0gZWxlbS5zZWxlY3RlZEluZGV4LAotICAgICAgICAgICAgICAgICAgICBvbmUgPSBl
bGVtLnR5cGUgPT09ICJzZWxlY3Qtb25lIiB8fCBpbmRleCA8IDAsCi0gICAgICAgICAgICAgICAg
ICAgIHZhbHVlcyA9IG9uZSA/IG51bGwgOiBbXSwKLSAgICAgICAgICAgICAgICAgICAgbWF4ID0g
b25lID8gaW5kZXggKyAxIDogb3B0aW9ucy5sZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgIGkg
PSBpbmRleCA8IDAgPwotICAgICAgICAgICAgICAgICAgICAgICAgbWF4IDoKLSAgICAgICAgICAg
ICAgICAgICAgICAgIG9uZSA/IGluZGV4IDogMDsKLQotICAgICAgICAgICAgICAgIC8vIExvb3Ag
dGhyb3VnaCBhbGwgdGhlIHNlbGVjdGVkIG9wdGlvbnMKLSAgICAgICAgICAgICAgICBmb3IgKCA7
IGkgPCBtYXg7IGkrKyApIHsKLSAgICAgICAgICAgICAgICAgICAgb3B0aW9uID0gb3B0aW9uc1sg
aSBdOwotCi0gICAgICAgICAgICAgICAgICAgIC8vIElFNi05IGRvZXNuJ3QgdXBkYXRlIHNlbGVj
dGVkIGFmdGVyIGZvcm0gcmVzZXQgKCMyNTUxKQotICAgICAgICAgICAgICAgICAgICBpZiAoICgg
b3B0aW9uLnNlbGVjdGVkIHx8IGkgPT09IGluZGV4ICkgJiYKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBEb24ndCByZXR1cm4gb3B0aW9ucyB0aGF0IGFyZSBkaXNhYmxlZCBvciBpbiBh
IGRpc2FibGVkIG9wdGdyb3VwCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBzdXBwb3J0
Lm9wdERpc2FibGVkID8gIW9wdGlvbi5kaXNhYmxlZCA6IG9wdGlvbi5nZXRBdHRyaWJ1dGUoICJk
aXNhYmxlZCIgKSA9PT0gbnVsbCApICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAh
b3B0aW9uLnBhcmVudE5vZGUuZGlzYWJsZWQgfHwgIWpRdWVyeS5ub2RlTmFtZSggb3B0aW9uLnBh
cmVudE5vZGUsICJvcHRncm91cCIgKSApICkgewotCi0gICAgICAgICAgICAgICAgICAgICAgICAv
LyBHZXQgdGhlIHNwZWNpZmljIHZhbHVlIGZvciB0aGUgb3B0aW9uCi0gICAgICAgICAgICAgICAg
ICAgICAgICB2YWx1ZSA9IGpRdWVyeSggb3B0aW9uICkudmFsKCk7Ci0KLSAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgYW4gYXJyYXkgZm9yIG9uZSBzZWxlY3RzCi0gICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoIG9uZSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdmFsdWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIE11bHRpLVNlbGVjdHMgcmV0dXJuIGFuIGFycmF5Ci0gICAgICAg
ICAgICAgICAgICAgICAgICB2YWx1ZXMucHVzaCggdmFsdWUgKTsKLSAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZXM7
Ci0gICAgICAgICAgICB9LAotCi0gICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1
ZSApIHsKLSAgICAgICAgICAgICAgICB2YXIgb3B0aW9uU2V0LCBvcHRpb24sCi0gICAgICAgICAg
ICAgICAgICAgIG9wdGlvbnMgPSBlbGVtLm9wdGlvbnMsCi0gICAgICAgICAgICAgICAgICAgIHZh
bHVlcyA9IGpRdWVyeS5tYWtlQXJyYXkoIHZhbHVlICksCi0gICAgICAgICAgICAgICAgICAgIGkg
PSBvcHRpb25zLmxlbmd0aDsKLQotICAgICAgICAgICAgICAgIHdoaWxlICggaS0tICkgewotICAg
ICAgICAgICAgICAgICAgICBvcHRpb24gPSBvcHRpb25zWyBpIF07Ci0gICAgICAgICAgICAgICAg
ICAgIGlmICggKG9wdGlvbi5zZWxlY3RlZCA9IGpRdWVyeS5pbkFycmF5KCBqUXVlcnkob3B0aW9u
KS52YWwoKSwgdmFsdWVzICkgPj0gMCkgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvcHRp
b25TZXQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICAgICAgLy8gZm9yY2UgYnJvd3NlcnMgdG8gYmVoYXZlIGNvbnNpc3RlbnRs
eSB3aGVuIG5vbi1tYXRjaGluZyB2YWx1ZSBpcyBzZXQKLSAgICAgICAgICAgICAgICBpZiAoICFv
cHRpb25TZXQgKSB7Ci0gICAgICAgICAgICAgICAgICAgIGVsZW0uc2VsZWN0ZWRJbmRleCA9IC0x
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWVzOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfSk7Ci0KLS8vIFJhZGlvcyBhbmQgY2hlY2ti
b3hlcyBnZXR0ZXIvc2V0dGVyCi1qUXVlcnkuZWFjaChbICJyYWRpbyIsICJjaGVja2JveCIgXSwg
ZnVuY3Rpb24oKSB7Ci0gICAgalF1ZXJ5LnZhbEhvb2tzWyB0aGlzIF0gPSB7Ci0gICAgICAgIHNl
dDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlICkgewotICAgICAgICAgICAgaWYgKCBqUXVlcnkuaXNB
cnJheSggdmFsdWUgKSApIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gKCBlbGVtLmNoZWNrZWQg
PSBqUXVlcnkuaW5BcnJheSggalF1ZXJ5KGVsZW0pLnZhbCgpLCB2YWx1ZSApID49IDAgKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH07Ci0gICAgaWYgKCAhc3VwcG9ydC5jaGVja09u
ICkgewotICAgICAgICBqUXVlcnkudmFsSG9va3NbIHRoaXMgXS5nZXQgPSBmdW5jdGlvbiggZWxl
bSApIHsKLSAgICAgICAgICAgIC8vIFN1cHBvcnQ6IFdlYmtpdAotICAgICAgICAgICAgLy8gIiIg
aXMgcmV0dXJuZWQgaW5zdGVhZCBvZiAib24iIGlmIGEgdmFsdWUgaXNuJ3Qgc3BlY2lmaWVkCi0g
ICAgICAgICAgICByZXR1cm4gZWxlbS5nZXRBdHRyaWJ1dGUoInZhbHVlIikgPT09IG51bGwgPyAi
b24iIDogZWxlbS52YWx1ZTsKLSAgICAgICAgfTsKLSAgICB9Ci19KTsKLQotCi0KLQotLy8gUmV0
dXJuIGpRdWVyeSBmb3IgYXR0cmlidXRlcy1vbmx5IGluY2x1c2lvbgotCi0KLWpRdWVyeS5lYWNo
KCAoImJsdXIgZm9jdXMgZm9jdXNpbiBmb2N1c291dCBsb2FkIHJlc2l6ZSBzY3JvbGwgdW5sb2Fk
IGNsaWNrIGRibGNsaWNrICIgKwotICAgICJtb3VzZWRvd24gbW91c2V1cCBtb3VzZW1vdmUgbW91
c2VvdmVyIG1vdXNlb3V0IG1vdXNlZW50ZXIgbW91c2VsZWF2ZSAiICsKLSAgICAiY2hhbmdlIHNl
bGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBlcnJvciBjb250ZXh0bWVudSIpLnNw
bGl0KCIgIiksIGZ1bmN0aW9uKCBpLCBuYW1lICkgewotCi0gICAgLy8gSGFuZGxlIGV2ZW50IGJp
bmRpbmcKLSAgICBqUXVlcnkuZm5bIG5hbWUgXSA9IGZ1bmN0aW9uKCBkYXRhLCBmbiApIHsKLSAg
ICAgICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPiAwID8KLSAgICAgICAgICAgIHRoaXMub24o
IG5hbWUsIG51bGwsIGRhdGEsIGZuICkgOgotICAgICAgICAgICAgdGhpcy50cmlnZ2VyKCBuYW1l
ICk7Ci0gICAgfTsKLX0pOwotCi1qUXVlcnkuZm4uZXh0ZW5kKHsKLSAgICBob3ZlcjogZnVuY3Rp
b24oIGZuT3ZlciwgZm5PdXQgKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLm1vdXNlZW50ZXIoIGZu
T3ZlciApLm1vdXNlbGVhdmUoIGZuT3V0IHx8IGZuT3ZlciApOwotICAgIH0sCi0KLSAgICBiaW5k
OiBmdW5jdGlvbiggdHlwZXMsIGRhdGEsIGZuICkgewotICAgICAgICByZXR1cm4gdGhpcy5vbigg
dHlwZXMsIG51bGwsIGRhdGEsIGZuICk7Ci0gICAgfSwKLSAgICB1bmJpbmQ6IGZ1bmN0aW9uKCB0
eXBlcywgZm4gKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLm9mZiggdHlwZXMsIG51bGwsIGZuICk7
Ci0gICAgfSwKLQotICAgIGRlbGVnYXRlOiBmdW5jdGlvbiggc2VsZWN0b3IsIHR5cGVzLCBkYXRh
LCBmbiApIHsKLSAgICAgICAgcmV0dXJuIHRoaXMub24oIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwg
Zm4gKTsKLSAgICB9LAotICAgIHVuZGVsZWdhdGU6IGZ1bmN0aW9uKCBzZWxlY3RvciwgdHlwZXMs
IGZuICkgewotICAgICAgICAvLyAoIG5hbWVzcGFjZSApIG9yICggc2VsZWN0b3IsIHR5cGVzIFss
IGZuXSApCi0gICAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID09PSAxID8gdGhpcy5vZmYo
IHNlbGVjdG9yLCAiKioiICkgOiB0aGlzLm9mZiggdHlwZXMsIHNlbGVjdG9yIHx8ICIqKiIsIGZu
ICk7Ci0gICAgfQotfSk7Ci0KLQotdmFyIG5vbmNlID0galF1ZXJ5Lm5vdygpOwotCi12YXIgcnF1
ZXJ5ID0gKC9cPy8pOwotCi0KLQotLy8gU3VwcG9ydDogQW5kcm9pZCAyLjMKLS8vIFdvcmthcm91
bmQgZmFpbHVyZSB0byBzdHJpbmctY2FzdCBudWxsIGlucHV0Ci1qUXVlcnkucGFyc2VKU09OID0g
ZnVuY3Rpb24oIGRhdGEgKSB7Ci0gICAgcmV0dXJuIEpTT04ucGFyc2UoIGRhdGEgKyAiIiApOwot
fTsKLQotCi0vLyBDcm9zcy1icm93c2VyIHhtbCBwYXJzaW5nCi1qUXVlcnkucGFyc2VYTUwgPSBm
dW5jdGlvbiggZGF0YSApIHsKLSAgICB2YXIgeG1sLCB0bXA7Ci0gICAgaWYgKCAhZGF0YSB8fCB0
eXBlb2YgZGF0YSAhPT0gInN0cmluZyIgKSB7Ci0gICAgICAgIHJldHVybiBudWxsOwotICAgIH0K
LQotICAgIC8vIFN1cHBvcnQ6IElFOQotICAgIHRyeSB7Ci0gICAgICAgIHRtcCA9IG5ldyBET01Q
YXJzZXIoKTsKLSAgICAgICAgeG1sID0gdG1wLnBhcnNlRnJvbVN0cmluZyggZGF0YSwgInRleHQv
eG1sIiApOwotICAgIH0gY2F0Y2ggKCBlICkgewotICAgICAgICB4bWwgPSB1bmRlZmluZWQ7Ci0g
ICAgfQotCi0gICAgaWYgKCAheG1sIHx8IHhtbC5nZXRFbGVtZW50c0J5VGFnTmFtZSggInBhcnNl
cmVycm9yIiApLmxlbmd0aCApIHsKLSAgICAgICAgalF1ZXJ5LmVycm9yKCAiSW52YWxpZCBYTUw6
ICIgKyBkYXRhICk7Ci0gICAgfQotICAgIHJldHVybiB4bWw7Ci19OwotCi0KLXZhcgotICAgIC8v
IERvY3VtZW50IGxvY2F0aW9uCi0gICAgYWpheExvY1BhcnRzLAotICAgIGFqYXhMb2NhdGlvbiwK
LQotICAgIHJoYXNoID0gLyMuKiQvLAotICAgIHJ0cyA9IC8oWz8mXSlfPVteJl0qLywKLSAgICBy
aGVhZGVycyA9IC9eKC4qPyk6WyBcdF0qKFteXHJcbl0qKSQvbWcsCi0gICAgLy8gIzc2NTMsICM4
MTI1LCAjODE1MjogbG9jYWwgcHJvdG9jb2wgZGV0ZWN0aW9uCi0gICAgcmxvY2FsUHJvdG9jb2wg
PSAvXig/OmFib3V0fGFwcHxhcHAtc3RvcmFnZXwuKy1leHRlbnNpb258ZmlsZXxyZXN8d2lkZ2V0
KTokLywKLSAgICBybm9Db250ZW50ID0gL14oPzpHRVR8SEVBRCkkLywKLSAgICBycHJvdG9jb2wg
PSAvXlwvXC8vLAotICAgIHJ1cmwgPSAvXihbXHcuKy1dKzopKD86XC9cLyg/OlteXC8/I10qQHwp
KFteXC8/IzpdKikoPzo6KFxkKyl8KXwpLywKLQotICAgIC8qIFByZWZpbHRlcnMKLSAgICAgKiAx
KSBUaGV5IGFyZSB1c2VmdWwgdG8gaW50cm9kdWNlIGN1c3RvbSBkYXRhVHlwZXMgKHNlZSBhamF4
L2pzb25wLmpzIGZvciBhbiBleGFtcGxlKQotICAgICAqIDIpIFRoZXNlIGFyZSBjYWxsZWQ6Ci0g
ICAgICogICAgLSBCRUZPUkUgYXNraW5nIGZvciBhIHRyYW5zcG9ydAotICAgICAqICAgIC0gQUZU
RVIgcGFyYW0gc2VyaWFsaXphdGlvbiAocy5kYXRhIGlzIGEgc3RyaW5nIGlmIHMucHJvY2Vzc0Rh
dGEgaXMgdHJ1ZSkKLSAgICAgKiAzKSBrZXkgaXMgdGhlIGRhdGFUeXBlCi0gICAgICogNCkgdGhl
IGNhdGNoYWxsIHN5bWJvbCAiKiIgY2FuIGJlIHVzZWQKLSAgICAgKiA1KSBleGVjdXRpb24gd2ls
bCBzdGFydCB3aXRoIHRyYW5zcG9ydCBkYXRhVHlwZSBhbmQgVEhFTiBjb250aW51ZSBkb3duIHRv
ICIqIiBpZiBuZWVkZWQKLSAgICAgKi8KLSAgICBwcmVmaWx0ZXJzID0ge30sCi0KLSAgICAvKiBU
cmFuc3BvcnRzIGJpbmRpbmdzCi0gICAgICogMSkga2V5IGlzIHRoZSBkYXRhVHlwZQotICAgICAq
IDIpIHRoZSBjYXRjaGFsbCBzeW1ib2wgIioiIGNhbiBiZSB1c2VkCi0gICAgICogMykgc2VsZWN0
aW9uIHdpbGwgc3RhcnQgd2l0aCB0cmFuc3BvcnQgZGF0YVR5cGUgYW5kIFRIRU4gZ28gdG8gIioi
IGlmIG5lZWRlZAotICAgICAqLwotICAgIHRyYW5zcG9ydHMgPSB7fSwKLQotICAgIC8vIEF2b2lk
IGNvbW1lbnQtcHJvbG9nIGNoYXIgc2VxdWVuY2UgKCMxMDA5OCk7IG11c3QgYXBwZWFzZSBsaW50
IGFuZCBldmFkZSBjb21wcmVzc2lvbgotICAgIGFsbFR5cGVzID0gIiovIi5jb25jYXQoIioiKTsK
LQotLy8gIzgxMzgsIElFIG1heSB0aHJvdyBhbiBleGNlcHRpb24gd2hlbiBhY2Nlc3NpbmcKLS8v
IGEgZmllbGQgZnJvbSB3aW5kb3cubG9jYXRpb24gaWYgZG9jdW1lbnQuZG9tYWluIGhhcyBiZWVu
IHNldAotdHJ5IHsKLSAgICBhamF4TG9jYXRpb24gPSBsb2NhdGlvbi5ocmVmOwotfSBjYXRjaCgg
ZSApIHsKLSAgICAvLyBVc2UgdGhlIGhyZWYgYXR0cmlidXRlIG9mIGFuIEEgZWxlbWVudAotICAg
IC8vIHNpbmNlIElFIHdpbGwgbW9kaWZ5IGl0IGdpdmVuIGRvY3VtZW50LmxvY2F0aW9uCi0gICAg
YWpheExvY2F0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggImEiICk7Ci0gICAgYWpheExv
Y2F0aW9uLmhyZWYgPSAiIjsKLSAgICBhamF4TG9jYXRpb24gPSBhamF4TG9jYXRpb24uaHJlZjsK
LX0KLQotLy8gU2VnbWVudCBsb2NhdGlvbiBpbnRvIHBhcnRzCi1hamF4TG9jUGFydHMgPSBydXJs
LmV4ZWMoIGFqYXhMb2NhdGlvbi50b0xvd2VyQ2FzZSgpICkgfHwgW107Ci0KLS8vIEJhc2UgImNv
bnN0cnVjdG9yIiBmb3IgalF1ZXJ5LmFqYXhQcmVmaWx0ZXIgYW5kIGpRdWVyeS5hamF4VHJhbnNw
b3J0Ci1mdW5jdGlvbiBhZGRUb1ByZWZpbHRlcnNPclRyYW5zcG9ydHMoIHN0cnVjdHVyZSApIHsK
LQotICAgIC8vIGRhdGFUeXBlRXhwcmVzc2lvbiBpcyBvcHRpb25hbCBhbmQgZGVmYXVsdHMgdG8g
IioiCi0gICAgcmV0dXJuIGZ1bmN0aW9uKCBkYXRhVHlwZUV4cHJlc3Npb24sIGZ1bmMgKSB7Ci0K
LSAgICAgICAgaWYgKCB0eXBlb2YgZGF0YVR5cGVFeHByZXNzaW9uICE9PSAic3RyaW5nIiApIHsK
LSAgICAgICAgICAgIGZ1bmMgPSBkYXRhVHlwZUV4cHJlc3Npb247Ci0gICAgICAgICAgICBkYXRh
VHlwZUV4cHJlc3Npb24gPSAiKiI7Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgZGF0YVR5cGUs
Ci0gICAgICAgICAgICBpID0gMCwKLSAgICAgICAgICAgIGRhdGFUeXBlcyA9IGRhdGFUeXBlRXhw
cmVzc2lvbi50b0xvd2VyQ2FzZSgpLm1hdGNoKCBybm90d2hpdGUgKSB8fCBbXTsKLQotICAgICAg
ICBpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBmdW5jICkgKSB7Ci0gICAgICAgICAgICAvLyBGb3Ig
ZWFjaCBkYXRhVHlwZSBpbiB0aGUgZGF0YVR5cGVFeHByZXNzaW9uCi0gICAgICAgICAgICB3aGls
ZSAoIChkYXRhVHlwZSA9IGRhdGFUeXBlc1tpKytdKSApIHsKLSAgICAgICAgICAgICAgICAvLyBQ
cmVwZW5kIGlmIHJlcXVlc3RlZAotICAgICAgICAgICAgICAgIGlmICggZGF0YVR5cGVbMF0gPT09
ICIrIiApIHsKLSAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGUgPSBkYXRhVHlwZS5zbGljZSgg
MSApIHx8ICIqIjsKLSAgICAgICAgICAgICAgICAgICAgKHN0cnVjdHVyZVsgZGF0YVR5cGUgXSA9
IHN0cnVjdHVyZVsgZGF0YVR5cGUgXSB8fCBbXSkudW5zaGlmdCggZnVuYyApOwotCi0gICAgICAg
ICAgICAgICAgLy8gT3RoZXJ3aXNlIGFwcGVuZAotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgICAgIChzdHJ1Y3R1cmVbIGRhdGFUeXBlIF0gPSBzdHJ1Y3R1cmVbIGRh
dGFUeXBlIF0gfHwgW10pLnB1c2goIGZ1bmMgKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICB9OwotfQotCi0vLyBCYXNlIGluc3BlY3Rpb24gZnVuY3Rp
b24gZm9yIHByZWZpbHRlcnMgYW5kIHRyYW5zcG9ydHMKLWZ1bmN0aW9uIGluc3BlY3RQcmVmaWx0
ZXJzT3JUcmFuc3BvcnRzKCBzdHJ1Y3R1cmUsIG9wdGlvbnMsIG9yaWdpbmFsT3B0aW9ucywganFY
SFIgKSB7Ci0KLSAgICB2YXIgaW5zcGVjdGVkID0ge30sCi0gICAgICAgIHNlZWtpbmdUcmFuc3Bv
cnQgPSAoIHN0cnVjdHVyZSA9PT0gdHJhbnNwb3J0cyApOwotCi0gICAgZnVuY3Rpb24gaW5zcGVj
dCggZGF0YVR5cGUgKSB7Ci0gICAgICAgIHZhciBzZWxlY3RlZDsKLSAgICAgICAgaW5zcGVjdGVk
WyBkYXRhVHlwZSBdID0gdHJ1ZTsKLSAgICAgICAgalF1ZXJ5LmVhY2goIHN0cnVjdHVyZVsgZGF0
YVR5cGUgXSB8fCBbXSwgZnVuY3Rpb24oIF8sIHByZWZpbHRlck9yRmFjdG9yeSApIHsKLSAgICAg
ICAgICAgIHZhciBkYXRhVHlwZU9yVHJhbnNwb3J0ID0gcHJlZmlsdGVyT3JGYWN0b3J5KCBvcHRp
b25zLCBvcmlnaW5hbE9wdGlvbnMsIGpxWEhSICk7Ci0gICAgICAgICAgICBpZiAoIHR5cGVvZiBk
YXRhVHlwZU9yVHJhbnNwb3J0ID09PSAic3RyaW5nIiAmJiAhc2Vla2luZ1RyYW5zcG9ydCAmJiAh
aW5zcGVjdGVkWyBkYXRhVHlwZU9yVHJhbnNwb3J0IF0gKSB7Ci0gICAgICAgICAgICAgICAgb3B0
aW9ucy5kYXRhVHlwZXMudW5zaGlmdCggZGF0YVR5cGVPclRyYW5zcG9ydCApOwotICAgICAgICAg
ICAgICAgIGluc3BlY3QoIGRhdGFUeXBlT3JUcmFuc3BvcnQgKTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKCBzZWVraW5nVHJhbnNwb3J0ICkg
ewotICAgICAgICAgICAgICAgIHJldHVybiAhKCBzZWxlY3RlZCA9IGRhdGFUeXBlT3JUcmFuc3Bv
cnQgKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSk7Ci0gICAgICAgIHJldHVybiBzZWxlY3Rl
ZDsKLSAgICB9Ci0KLSAgICByZXR1cm4gaW5zcGVjdCggb3B0aW9ucy5kYXRhVHlwZXNbIDAgXSAp
IHx8ICFpbnNwZWN0ZWRbICIqIiBdICYmIGluc3BlY3QoICIqIiApOwotfQotCi0vLyBBIHNwZWNp
YWwgZXh0ZW5kIGZvciBhamF4IG9wdGlvbnMKLS8vIHRoYXQgdGFrZXMgImZsYXQiIG9wdGlvbnMg
KG5vdCB0byBiZSBkZWVwIGV4dGVuZGVkKQotLy8gRml4ZXMgIzk4ODcKLWZ1bmN0aW9uIGFqYXhF
eHRlbmQoIHRhcmdldCwgc3JjICkgewotICAgIHZhciBrZXksIGRlZXAsCi0gICAgICAgIGZsYXRP
cHRpb25zID0galF1ZXJ5LmFqYXhTZXR0aW5ncy5mbGF0T3B0aW9ucyB8fCB7fTsKLQotICAgIGZv
ciAoIGtleSBpbiBzcmMgKSB7Ci0gICAgICAgIGlmICggc3JjWyBrZXkgXSAhPT0gdW5kZWZpbmVk
ICkgewotICAgICAgICAgICAgKCBmbGF0T3B0aW9uc1sga2V5IF0gPyB0YXJnZXQgOiAoIGRlZXAg
fHwgKGRlZXAgPSB7fSkgKSApWyBrZXkgXSA9IHNyY1sga2V5IF07Ci0gICAgICAgIH0KLSAgICB9
Ci0gICAgaWYgKCBkZWVwICkgewotICAgICAgICBqUXVlcnkuZXh0ZW5kKCB0cnVlLCB0YXJnZXQs
IGRlZXAgKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdGFyZ2V0OwotfQotCi0vKiBIYW5kbGVzIHJl
c3BvbnNlcyB0byBhbiBhamF4IHJlcXVlc3Q6Ci0gKiAtIGZpbmRzIHRoZSByaWdodCBkYXRhVHlw
ZSAobWVkaWF0ZXMgYmV0d2VlbiBjb250ZW50LXR5cGUgYW5kIGV4cGVjdGVkIGRhdGFUeXBlKQot
ICogLSByZXR1cm5zIHRoZSBjb3JyZXNwb25kaW5nIHJlc3BvbnNlCi0gKi8KLWZ1bmN0aW9uIGFq
YXhIYW5kbGVSZXNwb25zZXMoIHMsIGpxWEhSLCByZXNwb25zZXMgKSB7Ci0KLSAgICB2YXIgY3Qs
IHR5cGUsIGZpbmFsRGF0YVR5cGUsIGZpcnN0RGF0YVR5cGUsCi0gICAgICAgIGNvbnRlbnRzID0g
cy5jb250ZW50cywKLSAgICAgICAgZGF0YVR5cGVzID0gcy5kYXRhVHlwZXM7Ci0KLSAgICAvLyBS
ZW1vdmUgYXV0byBkYXRhVHlwZSBhbmQgZ2V0IGNvbnRlbnQtdHlwZSBpbiB0aGUgcHJvY2Vzcwot
ICAgIHdoaWxlICggZGF0YVR5cGVzWyAwIF0gPT09ICIqIiApIHsKLSAgICAgICAgZGF0YVR5cGVz
LnNoaWZ0KCk7Ci0gICAgICAgIGlmICggY3QgPT09IHVuZGVmaW5lZCApIHsKLSAgICAgICAgICAg
IGN0ID0gcy5taW1lVHlwZSB8fCBqcVhIUi5nZXRSZXNwb25zZUhlYWRlcigiQ29udGVudC1UeXBl
Iik7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBDaGVjayBpZiB3ZSdyZSBkZWFsaW5nIHdp
dGggYSBrbm93biBjb250ZW50LXR5cGUKLSAgICBpZiAoIGN0ICkgewotICAgICAgICBmb3IgKCB0
eXBlIGluIGNvbnRlbnRzICkgewotICAgICAgICAgICAgaWYgKCBjb250ZW50c1sgdHlwZSBdICYm
IGNvbnRlbnRzWyB0eXBlIF0udGVzdCggY3QgKSApIHsKLSAgICAgICAgICAgICAgICBkYXRhVHlw
ZXMudW5zaGlmdCggdHlwZSApOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHdlIGhhdmUgYSBy
ZXNwb25zZSBmb3IgdGhlIGV4cGVjdGVkIGRhdGFUeXBlCi0gICAgaWYgKCBkYXRhVHlwZXNbIDAg
XSBpbiByZXNwb25zZXMgKSB7Ci0gICAgICAgIGZpbmFsRGF0YVR5cGUgPSBkYXRhVHlwZXNbIDAg
XTsKLSAgICB9IGVsc2UgewotICAgICAgICAvLyBUcnkgY29udmVydGlibGUgZGF0YVR5cGVzCi0g
ICAgICAgIGZvciAoIHR5cGUgaW4gcmVzcG9uc2VzICkgewotICAgICAgICAgICAgaWYgKCAhZGF0
YVR5cGVzWyAwIF0gfHwgcy5jb252ZXJ0ZXJzWyB0eXBlICsgIiAiICsgZGF0YVR5cGVzWzBdIF0g
KSB7Ci0gICAgICAgICAgICAgICAgZmluYWxEYXRhVHlwZSA9IHR5cGU7Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoICFmaXJzdERhdGFUeXBl
ICkgewotICAgICAgICAgICAgICAgIGZpcnN0RGF0YVR5cGUgPSB0eXBlOwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0gICAgICAgIC8vIE9yIGp1c3QgdXNlIGZpcnN0IG9uZQotICAgICAgICBm
aW5hbERhdGFUeXBlID0gZmluYWxEYXRhVHlwZSB8fCBmaXJzdERhdGFUeXBlOwotICAgIH0KLQot
ICAgIC8vIElmIHdlIGZvdW5kIGEgZGF0YVR5cGUKLSAgICAvLyBXZSBhZGQgdGhlIGRhdGFUeXBl
IHRvIHRoZSBsaXN0IGlmIG5lZWRlZAotICAgIC8vIGFuZCByZXR1cm4gdGhlIGNvcnJlc3BvbmRp
bmcgcmVzcG9uc2UKLSAgICBpZiAoIGZpbmFsRGF0YVR5cGUgKSB7Ci0gICAgICAgIGlmICggZmlu
YWxEYXRhVHlwZSAhPT0gZGF0YVR5cGVzWyAwIF0gKSB7Ci0gICAgICAgICAgICBkYXRhVHlwZXMu
dW5zaGlmdCggZmluYWxEYXRhVHlwZSApOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiByZXNw
b25zZXNbIGZpbmFsRGF0YVR5cGUgXTsKLSAgICB9Ci19Ci0KLS8qIENoYWluIGNvbnZlcnNpb25z
IGdpdmVuIHRoZSByZXF1ZXN0IGFuZCB0aGUgb3JpZ2luYWwgcmVzcG9uc2UKLSAqIEFsc28gc2V0
cyB0aGUgcmVzcG9uc2VYWFggZmllbGRzIG9uIHRoZSBqcVhIUiBpbnN0YW5jZQotICovCi1mdW5j
dGlvbiBhamF4Q29udmVydCggcywgcmVzcG9uc2UsIGpxWEhSLCBpc1N1Y2Nlc3MgKSB7Ci0gICAg
dmFyIGNvbnYyLCBjdXJyZW50LCBjb252LCB0bXAsIHByZXYsCi0gICAgICAgIGNvbnZlcnRlcnMg
PSB7fSwKLSAgICAgICAgLy8gV29yayB3aXRoIGEgY29weSBvZiBkYXRhVHlwZXMgaW4gY2FzZSB3
ZSBuZWVkIHRvIG1vZGlmeSBpdCBmb3IgY29udmVyc2lvbgotICAgICAgICBkYXRhVHlwZXMgPSBz
LmRhdGFUeXBlcy5zbGljZSgpOwotCi0gICAgLy8gQ3JlYXRlIGNvbnZlcnRlcnMgbWFwIHdpdGgg
bG93ZXJjYXNlZCBrZXlzCi0gICAgaWYgKCBkYXRhVHlwZXNbIDEgXSApIHsKLSAgICAgICAgZm9y
ICggY29udiBpbiBzLmNvbnZlcnRlcnMgKSB7Ci0gICAgICAgICAgICBjb252ZXJ0ZXJzWyBjb252
LnRvTG93ZXJDYXNlKCkgXSA9IHMuY29udmVydGVyc1sgY29udiBdOwotICAgICAgICB9Ci0gICAg
fQotCi0gICAgY3VycmVudCA9IGRhdGFUeXBlcy5zaGlmdCgpOwotCi0gICAgLy8gQ29udmVydCB0
byBlYWNoIHNlcXVlbnRpYWwgZGF0YVR5cGUKLSAgICB3aGlsZSAoIGN1cnJlbnQgKSB7Ci0KLSAg
ICAgICAgaWYgKCBzLnJlc3BvbnNlRmllbGRzWyBjdXJyZW50IF0gKSB7Ci0gICAgICAgICAgICBq
cVhIUlsgcy5yZXNwb25zZUZpZWxkc1sgY3VycmVudCBdIF0gPSByZXNwb25zZTsKLSAgICAgICAg
fQotCi0gICAgICAgIC8vIEFwcGx5IHRoZSBkYXRhRmlsdGVyIGlmIHByb3ZpZGVkCi0gICAgICAg
IGlmICggIXByZXYgJiYgaXNTdWNjZXNzICYmIHMuZGF0YUZpbHRlciApIHsKLSAgICAgICAgICAg
IHJlc3BvbnNlID0gcy5kYXRhRmlsdGVyKCByZXNwb25zZSwgcy5kYXRhVHlwZSApOwotICAgICAg
ICB9Ci0KLSAgICAgICAgcHJldiA9IGN1cnJlbnQ7Ci0gICAgICAgIGN1cnJlbnQgPSBkYXRhVHlw
ZXMuc2hpZnQoKTsKLQotICAgICAgICBpZiAoIGN1cnJlbnQgKSB7Ci0KLSAgICAgICAgLy8gVGhl
cmUncyBvbmx5IHdvcmsgdG8gZG8gaWYgY3VycmVudCBkYXRhVHlwZSBpcyBub24tYXV0bwotICAg
ICAgICAgICAgaWYgKCBjdXJyZW50ID09PSAiKiIgKSB7Ci0KLSAgICAgICAgICAgICAgICBjdXJy
ZW50ID0gcHJldjsKLQotICAgICAgICAgICAgLy8gQ29udmVydCByZXNwb25zZSBpZiBwcmV2IGRh
dGFUeXBlIGlzIG5vbi1hdXRvIGFuZCBkaWZmZXJzIGZyb20gY3VycmVudAotICAgICAgICAgICAg
fSBlbHNlIGlmICggcHJldiAhPT0gIioiICYmIHByZXYgIT09IGN1cnJlbnQgKSB7Ci0KLSAgICAg
ICAgICAgICAgICAvLyBTZWVrIGEgZGlyZWN0IGNvbnZlcnRlcgotICAgICAgICAgICAgICAgIGNv
bnYgPSBjb252ZXJ0ZXJzWyBwcmV2ICsgIiAiICsgY3VycmVudCBdIHx8IGNvbnZlcnRlcnNbICIq
ICIgKyBjdXJyZW50IF07Ci0KLSAgICAgICAgICAgICAgICAvLyBJZiBub25lIGZvdW5kLCBzZWVr
IGEgcGFpcgotICAgICAgICAgICAgICAgIGlmICggIWNvbnYgKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGZvciAoIGNvbnYyIGluIGNvbnZlcnRlcnMgKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIElmIGNvbnYyIG91dHB1dHMgY3VycmVudAotICAgICAgICAgICAgICAgICAgICAgICAg
dG1wID0gY29udjIuc3BsaXQoICIgIiApOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCB0
bXBbIDEgXSA9PT0gY3VycmVudCApIHsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IElmIHByZXYgY2FuIGJlIGNvbnZlcnRlZCB0byBhY2NlcHRlZCBpbnB1dAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnYgPSBjb252ZXJ0ZXJzWyBwcmV2ICsgIiAiICsgdG1wWyAwIF0g
XSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0ZXJzWyAiKiAiICsg
dG1wWyAwIF0gXTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGNvbnYgKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENvbmRlbnNlIGVxdWl2YWxlbmNlIGNv
bnZlcnRlcnMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBjb252ID09PSB0
cnVlICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udiA9IGNvbnZl
cnRlcnNbIGNvbnYyIF07Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gT3Ro
ZXJ3aXNlLCBpbnNlcnQgdGhlIGludGVybWVkaWF0ZSBkYXRhVHlwZQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCBjb252ZXJ0ZXJzWyBjb252MiBdICE9PSB0cnVl
ICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudCA9IHRtcFsg
MCBdOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGVzLnVuc2hp
ZnQoIHRtcFsgMSBdICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgLy8gQXBwbHkgY29udmVydGVy
IChpZiBub3QgYW4gZXF1aXZhbGVuY2UpCi0gICAgICAgICAgICAgICAgaWYgKCBjb252ICE9PSB0
cnVlICkgewotCi0gICAgICAgICAgICAgICAgICAgIC8vIFVubGVzcyBlcnJvcnMgYXJlIGFsbG93
ZWQgdG8gYnViYmxlLCBjYXRjaCBhbmQgcmV0dXJuIHRoZW0KLSAgICAgICAgICAgICAgICAgICAg
aWYgKCBjb252ICYmIHNbICJ0aHJvd3MiIF0gKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBy
ZXNwb25zZSA9IGNvbnYoIHJlc3BvbnNlICk7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlc3BvbnNlID0gY29udiggcmVzcG9uc2UgKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IH0gY2F0Y2ggKCBlICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IHN0
YXRlOiAicGFyc2VyZXJyb3IiLCBlcnJvcjogY29udiA/IGUgOiAiTm8gY29udmVyc2lvbiBmcm9t
ICIgKyBwcmV2ICsgIiB0byAiICsgY3VycmVudCB9OwotICAgICAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHsgc3RhdGU6ICJzdWNjZXNzIiwgZGF0
YTogcmVzcG9uc2UgfTsKLX0KLQotalF1ZXJ5LmV4dGVuZCh7Ci0KLSAgICAvLyBDb3VudGVyIGZv
ciBob2xkaW5nIHRoZSBudW1iZXIgb2YgYWN0aXZlIHF1ZXJpZXMKLSAgICBhY3RpdmU6IDAsCi0K
LSAgICAvLyBMYXN0LU1vZGlmaWVkIGhlYWRlciBjYWNoZSBmb3IgbmV4dCByZXF1ZXN0Ci0gICAg
bGFzdE1vZGlmaWVkOiB7fSwKLSAgICBldGFnOiB7fSwKLQotICAgIGFqYXhTZXR0aW5nczogewot
ICAgICAgICB1cmw6IGFqYXhMb2NhdGlvbiwKLSAgICAgICAgdHlwZTogIkdFVCIsCi0gICAgICAg
IGlzTG9jYWw6IHJsb2NhbFByb3RvY29sLnRlc3QoIGFqYXhMb2NQYXJ0c1sgMSBdICksCi0gICAg
ICAgIGdsb2JhbDogdHJ1ZSwKLSAgICAgICAgcHJvY2Vzc0RhdGE6IHRydWUsCi0gICAgICAgIGFz
eW5jOiB0cnVlLAotICAgICAgICBjb250ZW50VHlwZTogImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0t
dXJsZW5jb2RlZDsgY2hhcnNldD1VVEYtOCIsCi0gICAgICAgIC8qCi0gICAgICAgIHRpbWVvdXQ6
IDAsCi0gICAgICAgIGRhdGE6IG51bGwsCi0gICAgICAgIGRhdGFUeXBlOiBudWxsLAotICAgICAg
ICB1c2VybmFtZTogbnVsbCwKLSAgICAgICAgcGFzc3dvcmQ6IG51bGwsCi0gICAgICAgIGNhY2hl
OiBudWxsLAotICAgICAgICB0aHJvd3M6IGZhbHNlLAotICAgICAgICB0cmFkaXRpb25hbDogZmFs
c2UsCi0gICAgICAgIGhlYWRlcnM6IHt9LAotICAgICAgICAqLwotCi0gICAgICAgIGFjY2VwdHM6
IHsKLSAgICAgICAgICAgICIqIjogYWxsVHlwZXMsCi0gICAgICAgICAgICB0ZXh0OiAidGV4dC9w
bGFpbiIsCi0gICAgICAgICAgICBodG1sOiAidGV4dC9odG1sIiwKLSAgICAgICAgICAgIHhtbDog
ImFwcGxpY2F0aW9uL3htbCwgdGV4dC94bWwiLAotICAgICAgICAgICAganNvbjogImFwcGxpY2F0
aW9uL2pzb24sIHRleHQvamF2YXNjcmlwdCIKLSAgICAgICAgfSwKLQotICAgICAgICBjb250ZW50
czogewotICAgICAgICAgICAgeG1sOiAveG1sLywKLSAgICAgICAgICAgIGh0bWw6IC9odG1sLywK
LSAgICAgICAgICAgIGpzb246IC9qc29uLwotICAgICAgICB9LAotCi0gICAgICAgIHJlc3BvbnNl
RmllbGRzOiB7Ci0gICAgICAgICAgICB4bWw6ICJyZXNwb25zZVhNTCIsCi0gICAgICAgICAgICB0
ZXh0OiAicmVzcG9uc2VUZXh0IiwKLSAgICAgICAgICAgIGpzb246ICJyZXNwb25zZUpTT04iCi0g
ICAgICAgIH0sCi0KLSAgICAgICAgLy8gRGF0YSBjb252ZXJ0ZXJzCi0gICAgICAgIC8vIEtleXMg
c2VwYXJhdGUgc291cmNlIChvciBjYXRjaGFsbCAiKiIpIGFuZCBkZXN0aW5hdGlvbiB0eXBlcyB3
aXRoIGEgc2luZ2xlIHNwYWNlCi0gICAgICAgIGNvbnZlcnRlcnM6IHsKLQotICAgICAgICAgICAg
Ly8gQ29udmVydCBhbnl0aGluZyB0byB0ZXh0Ci0gICAgICAgICAgICAiKiB0ZXh0IjogU3RyaW5n
LAotCi0gICAgICAgICAgICAvLyBUZXh0IHRvIGh0bWwgKHRydWUgPSBubyB0cmFuc2Zvcm1hdGlv
bikKLSAgICAgICAgICAgICJ0ZXh0IGh0bWwiOiB0cnVlLAotCi0gICAgICAgICAgICAvLyBFdmFs
dWF0ZSB0ZXh0IGFzIGEganNvbiBleHByZXNzaW9uCi0gICAgICAgICAgICAidGV4dCBqc29uIjog
alF1ZXJ5LnBhcnNlSlNPTiwKLQotICAgICAgICAgICAgLy8gUGFyc2UgdGV4dCBhcyB4bWwKLSAg
ICAgICAgICAgICJ0ZXh0IHhtbCI6IGpRdWVyeS5wYXJzZVhNTAotICAgICAgICB9LAotCi0gICAg
ICAgIC8vIEZvciBvcHRpb25zIHRoYXQgc2hvdWxkbid0IGJlIGRlZXAgZXh0ZW5kZWQ6Ci0gICAg
ICAgIC8vIHlvdSBjYW4gYWRkIHlvdXIgb3duIGN1c3RvbSBvcHRpb25zIGhlcmUgaWYKLSAgICAg
ICAgLy8gYW5kIHdoZW4geW91IGNyZWF0ZSBvbmUgdGhhdCBzaG91bGRuJ3QgYmUKLSAgICAgICAg
Ly8gZGVlcCBleHRlbmRlZCAoc2VlIGFqYXhFeHRlbmQpCi0gICAgICAgIGZsYXRPcHRpb25zOiB7
Ci0gICAgICAgICAgICB1cmw6IHRydWUsCi0gICAgICAgICAgICBjb250ZXh0OiB0cnVlCi0gICAg
ICAgIH0KLSAgICB9LAotCi0gICAgLy8gQ3JlYXRlcyBhIGZ1bGwgZmxlZGdlZCBzZXR0aW5ncyBv
YmplY3QgaW50byB0YXJnZXQKLSAgICAvLyB3aXRoIGJvdGggYWpheFNldHRpbmdzIGFuZCBzZXR0
aW5ncyBmaWVsZHMuCi0gICAgLy8gSWYgdGFyZ2V0IGlzIG9taXR0ZWQsIHdyaXRlcyBpbnRvIGFq
YXhTZXR0aW5ncy4KLSAgICBhamF4U2V0dXA6IGZ1bmN0aW9uKCB0YXJnZXQsIHNldHRpbmdzICkg
ewotICAgICAgICByZXR1cm4gc2V0dGluZ3MgPwotCi0gICAgICAgICAgICAvLyBCdWlsZGluZyBh
IHNldHRpbmdzIG9iamVjdAotICAgICAgICAgICAgYWpheEV4dGVuZCggYWpheEV4dGVuZCggdGFy
Z2V0LCBqUXVlcnkuYWpheFNldHRpbmdzICksIHNldHRpbmdzICkgOgotCi0gICAgICAgICAgICAv
LyBFeHRlbmRpbmcgYWpheFNldHRpbmdzCi0gICAgICAgICAgICBhamF4RXh0ZW5kKCBqUXVlcnku
YWpheFNldHRpbmdzLCB0YXJnZXQgKTsKLSAgICB9LAotCi0gICAgYWpheFByZWZpbHRlcjogYWRk
VG9QcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCBwcmVmaWx0ZXJzICksCi0gICAgYWpheFRyYW5zcG9y
dDogYWRkVG9QcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCB0cmFuc3BvcnRzICksCi0KLSAgICAvLyBN
YWluIG1ldGhvZAotICAgIGFqYXg6IGZ1bmN0aW9uKCB1cmwsIG9wdGlvbnMgKSB7Ci0KLSAgICAg
ICAgLy8gSWYgdXJsIGlzIGFuIG9iamVjdCwgc2ltdWxhdGUgcHJlLTEuNSBzaWduYXR1cmUKLSAg
ICAgICAgaWYgKCB0eXBlb2YgdXJsID09PSAib2JqZWN0IiApIHsKLSAgICAgICAgICAgIG9wdGlv
bnMgPSB1cmw7Ci0gICAgICAgICAgICB1cmwgPSB1bmRlZmluZWQ7Ci0gICAgICAgIH0KLQotICAg
ICAgICAvLyBGb3JjZSBvcHRpb25zIHRvIGJlIGFuIG9iamVjdAotICAgICAgICBvcHRpb25zID0g
b3B0aW9ucyB8fCB7fTsKLQotICAgICAgICB2YXIgdHJhbnNwb3J0LAotICAgICAgICAgICAgLy8g
VVJMIHdpdGhvdXQgYW50aS1jYWNoZSBwYXJhbQotICAgICAgICAgICAgY2FjaGVVUkwsCi0gICAg
ICAgICAgICAvLyBSZXNwb25zZSBoZWFkZXJzCi0gICAgICAgICAgICByZXNwb25zZUhlYWRlcnNT
dHJpbmcsCi0gICAgICAgICAgICByZXNwb25zZUhlYWRlcnMsCi0gICAgICAgICAgICAvLyB0aW1l
b3V0IGhhbmRsZQotICAgICAgICAgICAgdGltZW91dFRpbWVyLAotICAgICAgICAgICAgLy8gQ3Jv
c3MtZG9tYWluIGRldGVjdGlvbiB2YXJzCi0gICAgICAgICAgICBwYXJ0cywKLSAgICAgICAgICAg
IC8vIFRvIGtub3cgaWYgZ2xvYmFsIGV2ZW50cyBhcmUgdG8gYmUgZGlzcGF0Y2hlZAotICAgICAg
ICAgICAgZmlyZUdsb2JhbHMsCi0gICAgICAgICAgICAvLyBMb29wIHZhcmlhYmxlCi0gICAgICAg
ICAgICBpLAotICAgICAgICAgICAgLy8gQ3JlYXRlIHRoZSBmaW5hbCBvcHRpb25zIG9iamVjdAot
ICAgICAgICAgICAgcyA9IGpRdWVyeS5hamF4U2V0dXAoIHt9LCBvcHRpb25zICksCi0gICAgICAg
ICAgICAvLyBDYWxsYmFja3MgY29udGV4dAotICAgICAgICAgICAgY2FsbGJhY2tDb250ZXh0ID0g
cy5jb250ZXh0IHx8IHMsCi0gICAgICAgICAgICAvLyBDb250ZXh0IGZvciBnbG9iYWwgZXZlbnRz
IGlzIGNhbGxiYWNrQ29udGV4dCBpZiBpdCBpcyBhIERPTSBub2RlIG9yIGpRdWVyeSBjb2xsZWN0
aW9uCi0gICAgICAgICAgICBnbG9iYWxFdmVudENvbnRleHQgPSBzLmNvbnRleHQgJiYgKCBjYWxs
YmFja0NvbnRleHQubm9kZVR5cGUgfHwgY2FsbGJhY2tDb250ZXh0LmpxdWVyeSApID8KLSAgICAg
ICAgICAgICAgICBqUXVlcnkoIGNhbGxiYWNrQ29udGV4dCApIDoKLSAgICAgICAgICAgICAgICBq
UXVlcnkuZXZlbnQsCi0gICAgICAgICAgICAvLyBEZWZlcnJlZHMKLSAgICAgICAgICAgIGRlZmVy
cmVkID0galF1ZXJ5LkRlZmVycmVkKCksCi0gICAgICAgICAgICBjb21wbGV0ZURlZmVycmVkID0g
alF1ZXJ5LkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwKLSAgICAgICAgICAgIC8vIFN0YXR1cy1k
ZXBlbmRlbnQgY2FsbGJhY2tzCi0gICAgICAgICAgICBzdGF0dXNDb2RlID0gcy5zdGF0dXNDb2Rl
IHx8IHt9LAotICAgICAgICAgICAgLy8gSGVhZGVycyAodGhleSBhcmUgc2VudCBhbGwgYXQgb25j
ZSkKLSAgICAgICAgICAgIHJlcXVlc3RIZWFkZXJzID0ge30sCi0gICAgICAgICAgICByZXF1ZXN0
SGVhZGVyc05hbWVzID0ge30sCi0gICAgICAgICAgICAvLyBUaGUganFYSFIgc3RhdGUKLSAgICAg
ICAgICAgIHN0YXRlID0gMCwKLSAgICAgICAgICAgIC8vIERlZmF1bHQgYWJvcnQgbWVzc2FnZQot
ICAgICAgICAgICAgc3RyQWJvcnQgPSAiY2FuY2VsZWQiLAotICAgICAgICAgICAgLy8gRmFrZSB4
aHIKLSAgICAgICAgICAgIGpxWEhSID0gewotICAgICAgICAgICAgICAgIHJlYWR5U3RhdGU6IDAs
Ci0KLSAgICAgICAgICAgICAgICAvLyBCdWlsZHMgaGVhZGVycyBoYXNodGFibGUgaWYgbmVlZGVk
Ci0gICAgICAgICAgICAgICAgZ2V0UmVzcG9uc2VIZWFkZXI6IGZ1bmN0aW9uKCBrZXkgKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIHZhciBtYXRjaDsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCBz
dGF0ZSA9PT0gMiApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICggIXJlc3BvbnNlSGVh
ZGVycyApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZUhlYWRlcnMgPSB7
fTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoIChtYXRjaCA9IHJoZWFkZXJz
LmV4ZWMoIHJlc3BvbnNlSGVhZGVyc1N0cmluZyApKSApIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVzcG9uc2VIZWFkZXJzWyBtYXRjaFsxXS50b0xvd2VyQ2FzZSgpIF0gPSBt
YXRjaFsgMiBdOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoID0gcmVzcG9uc2VIZWFk
ZXJzWyBrZXkudG9Mb3dlckNhc2UoKSBdOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiBtYXRjaCA9PSBudWxsID8gbnVsbCA6IG1hdGNoOwotICAgICAg
ICAgICAgICAgIH0sCi0KLSAgICAgICAgICAgICAgICAvLyBSYXcgc3RyaW5nCi0gICAgICAgICAg
ICAgICAgZ2V0QWxsUmVzcG9uc2VIZWFkZXJzOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHN0YXRlID09PSAyID8gcmVzcG9uc2VIZWFkZXJzU3RyaW5nIDogbnVsbDsK
LSAgICAgICAgICAgICAgICB9LAotCi0gICAgICAgICAgICAgICAgLy8gQ2FjaGVzIHRoZSBoZWFk
ZXIKLSAgICAgICAgICAgICAgICBzZXRSZXF1ZXN0SGVhZGVyOiBmdW5jdGlvbiggbmFtZSwgdmFs
dWUgKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBsbmFtZSA9IG5hbWUudG9Mb3dlckNhc2Uo
KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCAhc3RhdGUgKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBuYW1lID0gcmVxdWVzdEhlYWRlcnNOYW1lc1sgbG5hbWUgXSA9IHJlcXVlc3RIZWFk
ZXJzTmFtZXNbIGxuYW1lIF0gfHwgbmFtZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVl
c3RIZWFkZXJzWyBuYW1lIF0gPSB2YWx1ZTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdGhpczsKLSAgICAgICAgICAgICAgICB9LAotCi0gICAgICAg
ICAgICAgICAgLy8gT3ZlcnJpZGVzIHJlc3BvbnNlIGNvbnRlbnQtdHlwZSBoZWFkZXIKLSAgICAg
ICAgICAgICAgICBvdmVycmlkZU1pbWVUeXBlOiBmdW5jdGlvbiggdHlwZSApIHsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKCAhc3RhdGUgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzLm1p
bWVUeXBlID0gdHlwZTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdGhpczsKLSAgICAgICAgICAgICAgICB9LAotCi0gICAgICAgICAgICAgICAgLy8g
U3RhdHVzLWRlcGVuZGVudCBjYWxsYmFja3MKLSAgICAgICAgICAgICAgICBzdGF0dXNDb2RlOiBm
dW5jdGlvbiggbWFwICkgewotICAgICAgICAgICAgICAgICAgICB2YXIgY29kZTsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKCBtYXAgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHN0
YXRlIDwgMiApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKCBjb2RlIGluIG1h
cCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTGF6eS1hZGQgdGhlIG5l
dyBjYWxsYmFjayBpbiBhIHdheSB0aGF0IHByZXNlcnZlcyBvbGQgb25lcwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGF0dXNDb2RlWyBjb2RlIF0gPSBbIHN0YXR1c0NvZGVbIGNv
ZGUgXSwgbWFwWyBjb2RlIF0gXTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIEV4ZWN1dGUgdGhlIGFwcHJvcHJpYXRlIGNhbGxiYWNrcwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGpxWEhSLmFsd2F5cyggbWFwWyBqcVhIUi5zdGF0dXMgXSApOwotICAgICAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiB0aGlzOwotICAgICAgICAgICAgICAgIH0sCi0KLSAgICAgICAgICAgICAgICAv
LyBDYW5jZWwgdGhlIHJlcXVlc3QKLSAgICAgICAgICAgICAgICBhYm9ydDogZnVuY3Rpb24oIHN0
YXR1c1RleHQgKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBmaW5hbFRleHQgPSBzdGF0dXNU
ZXh0IHx8IHN0ckFib3J0OwotICAgICAgICAgICAgICAgICAgICBpZiAoIHRyYW5zcG9ydCApIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9ydC5hYm9ydCggZmluYWxUZXh0ICk7Ci0g
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZG9uZSggMCwgZmluYWxU
ZXh0ICk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIH07Ci0KLSAgICAgICAgLy8gQXR0YWNoIGRlZmVycmVkcwotICAgICAg
ICBkZWZlcnJlZC5wcm9taXNlKCBqcVhIUiApLmNvbXBsZXRlID0gY29tcGxldGVEZWZlcnJlZC5h
ZGQ7Ci0gICAgICAgIGpxWEhSLnN1Y2Nlc3MgPSBqcVhIUi5kb25lOwotICAgICAgICBqcVhIUi5l
cnJvciA9IGpxWEhSLmZhaWw7Ci0KLSAgICAgICAgLy8gUmVtb3ZlIGhhc2ggY2hhcmFjdGVyICgj
NzUzMTogYW5kIHN0cmluZyBwcm9tb3Rpb24pCi0gICAgICAgIC8vIEFkZCBwcm90b2NvbCBpZiBu
b3QgcHJvdmlkZWQgKHByZWZpbHRlcnMgbWlnaHQgZXhwZWN0IGl0KQotICAgICAgICAvLyBIYW5k
bGUgZmFsc3kgdXJsIGluIHRoZSBzZXR0aW5ncyBvYmplY3QgKCMxMDA5MzogY29uc2lzdGVuY3kg
d2l0aCBvbGQgc2lnbmF0dXJlKQotICAgICAgICAvLyBXZSBhbHNvIHVzZSB0aGUgdXJsIHBhcmFt
ZXRlciBpZiBhdmFpbGFibGUKLSAgICAgICAgcy51cmwgPSAoICggdXJsIHx8IHMudXJsIHx8IGFq
YXhMb2NhdGlvbiApICsgIiIgKS5yZXBsYWNlKCByaGFzaCwgIiIgKQotICAgICAgICAgICAgLnJl
cGxhY2UoIHJwcm90b2NvbCwgYWpheExvY1BhcnRzWyAxIF0gKyAiLy8iICk7Ci0KLSAgICAgICAg
Ly8gQWxpYXMgbWV0aG9kIG9wdGlvbiB0byB0eXBlIGFzIHBlciB0aWNrZXQgIzEyMDA0Ci0gICAg
ICAgIHMudHlwZSA9IG9wdGlvbnMubWV0aG9kIHx8IG9wdGlvbnMudHlwZSB8fCBzLm1ldGhvZCB8
fCBzLnR5cGU7Ci0KLSAgICAgICAgLy8gRXh0cmFjdCBkYXRhVHlwZXMgbGlzdAotICAgICAgICBz
LmRhdGFUeXBlcyA9IGpRdWVyeS50cmltKCBzLmRhdGFUeXBlIHx8ICIqIiApLnRvTG93ZXJDYXNl
KCkubWF0Y2goIHJub3R3aGl0ZSApIHx8IFsgIiIgXTsKLQotICAgICAgICAvLyBBIGNyb3NzLWRv
bWFpbiByZXF1ZXN0IGlzIGluIG9yZGVyIHdoZW4gd2UgaGF2ZSBhIHByb3RvY29sOmhvc3Q6cG9y
dCBtaXNtYXRjaAotICAgICAgICBpZiAoIHMuY3Jvc3NEb21haW4gPT0gbnVsbCApIHsKLSAgICAg
ICAgICAgIHBhcnRzID0gcnVybC5leGVjKCBzLnVybC50b0xvd2VyQ2FzZSgpICk7Ci0gICAgICAg
ICAgICBzLmNyb3NzRG9tYWluID0gISEoIHBhcnRzICYmCi0gICAgICAgICAgICAgICAgKCBwYXJ0
c1sgMSBdICE9PSBhamF4TG9jUGFydHNbIDEgXSB8fCBwYXJ0c1sgMiBdICE9PSBhamF4TG9jUGFy
dHNbIDIgXSB8fAotICAgICAgICAgICAgICAgICAgICAoIHBhcnRzWyAzIF0gfHwgKCBwYXJ0c1sg
MSBdID09PSAiaHR0cDoiID8gIjgwIiA6ICI0NDMiICkgKSAhPT0KLSAgICAgICAgICAgICAgICAg
ICAgICAgICggYWpheExvY1BhcnRzWyAzIF0gfHwgKCBhamF4TG9jUGFydHNbIDEgXSA9PT0gImh0
dHA6IiA/ICI4MCIgOiAiNDQzIiApICkgKQotICAgICAgICAgICAgKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIC8vIENvbnZlcnQgZGF0YSBpZiBub3QgYWxyZWFkeSBhIHN0cmluZwotICAgICAgICBp
ZiAoIHMuZGF0YSAmJiBzLnByb2Nlc3NEYXRhICYmIHR5cGVvZiBzLmRhdGEgIT09ICJzdHJpbmci
ICkgewotICAgICAgICAgICAgcy5kYXRhID0galF1ZXJ5LnBhcmFtKCBzLmRhdGEsIHMudHJhZGl0
aW9uYWwgKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEFwcGx5IHByZWZpbHRlcnMKLSAgICAg
ICAgaW5zcGVjdFByZWZpbHRlcnNPclRyYW5zcG9ydHMoIHByZWZpbHRlcnMsIHMsIG9wdGlvbnMs
IGpxWEhSICk7Ci0KLSAgICAgICAgLy8gSWYgcmVxdWVzdCB3YXMgYWJvcnRlZCBpbnNpZGUgYSBw
cmVmaWx0ZXIsIHN0b3AgdGhlcmUKLSAgICAgICAgaWYgKCBzdGF0ZSA9PT0gMiApIHsKLSAgICAg
ICAgICAgIHJldHVybiBqcVhIUjsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFdlIGNhbiBmaXJl
IGdsb2JhbCBldmVudHMgYXMgb2Ygbm93IGlmIGFza2VkIHRvCi0gICAgICAgIGZpcmVHbG9iYWxz
ID0gcy5nbG9iYWw7Ci0KLSAgICAgICAgLy8gV2F0Y2ggZm9yIGEgbmV3IHNldCBvZiByZXF1ZXN0
cwotICAgICAgICBpZiAoIGZpcmVHbG9iYWxzICYmIGpRdWVyeS5hY3RpdmUrKyA9PT0gMCApIHsK
LSAgICAgICAgICAgIGpRdWVyeS5ldmVudC50cmlnZ2VyKCJhamF4U3RhcnQiKTsKLSAgICAgICAg
fQotCi0gICAgICAgIC8vIFVwcGVyY2FzZSB0aGUgdHlwZQotICAgICAgICBzLnR5cGUgPSBzLnR5
cGUudG9VcHBlckNhc2UoKTsKLQotICAgICAgICAvLyBEZXRlcm1pbmUgaWYgcmVxdWVzdCBoYXMg
Y29udGVudAotICAgICAgICBzLmhhc0NvbnRlbnQgPSAhcm5vQ29udGVudC50ZXN0KCBzLnR5cGUg
KTsKLQotICAgICAgICAvLyBTYXZlIHRoZSBVUkwgaW4gY2FzZSB3ZSdyZSB0b3lpbmcgd2l0aCB0
aGUgSWYtTW9kaWZpZWQtU2luY2UKLSAgICAgICAgLy8gYW5kL29yIElmLU5vbmUtTWF0Y2ggaGVh
ZGVyIGxhdGVyIG9uCi0gICAgICAgIGNhY2hlVVJMID0gcy51cmw7Ci0KLSAgICAgICAgLy8gTW9y
ZSBvcHRpb25zIGhhbmRsaW5nIGZvciByZXF1ZXN0cyB3aXRoIG5vIGNvbnRlbnQKLSAgICAgICAg
aWYgKCAhcy5oYXNDb250ZW50ICkgewotCi0gICAgICAgICAgICAvLyBJZiBkYXRhIGlzIGF2YWls
YWJsZSwgYXBwZW5kIGRhdGEgdG8gdXJsCi0gICAgICAgICAgICBpZiAoIHMuZGF0YSApIHsKLSAg
ICAgICAgICAgICAgICBjYWNoZVVSTCA9ICggcy51cmwgKz0gKCBycXVlcnkudGVzdCggY2FjaGVV
UkwgKSA/ICImIiA6ICI/IiApICsgcy5kYXRhICk7Ci0gICAgICAgICAgICAgICAgLy8gIzk2ODI6
IHJlbW92ZSBkYXRhIHNvIHRoYXQgaXQncyBub3QgdXNlZCBpbiBhbiBldmVudHVhbCByZXRyeQot
ICAgICAgICAgICAgICAgIGRlbGV0ZSBzLmRhdGE7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgIC8vIEFkZCBhbnRpLWNhY2hlIGluIHVybCBpZiBuZWVkZWQKLSAgICAgICAgICAgIGlmICgg
cy5jYWNoZSA9PT0gZmFsc2UgKSB7Ci0gICAgICAgICAgICAgICAgcy51cmwgPSBydHMudGVzdCgg
Y2FjaGVVUkwgKSA/Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgYWxyZWFk
eSBhICdfJyBwYXJhbWV0ZXIsIHNldCBpdHMgdmFsdWUKLSAgICAgICAgICAgICAgICAgICAgY2Fj
aGVVUkwucmVwbGFjZSggcnRzLCAiJDFfPSIgKyBub25jZSsrICkgOgotCi0gICAgICAgICAgICAg
ICAgICAgIC8vIE90aGVyd2lzZSBhZGQgb25lIHRvIHRoZSBlbmQKLSAgICAgICAgICAgICAgICAg
ICAgY2FjaGVVUkwgKyAoIHJxdWVyeS50ZXN0KCBjYWNoZVVSTCApID8gIiYiIDogIj8iICkgKyAi
Xz0iICsgbm9uY2UrKzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vIFNl
dCB0aGUgSWYtTW9kaWZpZWQtU2luY2UgYW5kL29yIElmLU5vbmUtTWF0Y2ggaGVhZGVyLCBpZiBp
biBpZk1vZGlmaWVkIG1vZGUuCi0gICAgICAgIGlmICggcy5pZk1vZGlmaWVkICkgewotICAgICAg
ICAgICAgaWYgKCBqUXVlcnkubGFzdE1vZGlmaWVkWyBjYWNoZVVSTCBdICkgewotICAgICAgICAg
ICAgICAgIGpxWEhSLnNldFJlcXVlc3RIZWFkZXIoICJJZi1Nb2RpZmllZC1TaW5jZSIsIGpRdWVy
eS5sYXN0TW9kaWZpZWRbIGNhY2hlVVJMIF0gKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGlmICggalF1ZXJ5LmV0YWdbIGNhY2hlVVJMIF0gKSB7Ci0gICAgICAgICAgICAgICAganFYSFIu
c2V0UmVxdWVzdEhlYWRlciggIklmLU5vbmUtTWF0Y2giLCBqUXVlcnkuZXRhZ1sgY2FjaGVVUkwg
XSApOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLy8gU2V0IHRoZSBjb3Jy
ZWN0IGhlYWRlciwgaWYgZGF0YSBpcyBiZWluZyBzZW50Ci0gICAgICAgIGlmICggcy5kYXRhICYm
IHMuaGFzQ29udGVudCAmJiBzLmNvbnRlbnRUeXBlICE9PSBmYWxzZSB8fCBvcHRpb25zLmNvbnRl
bnRUeXBlICkgewotICAgICAgICAgICAganFYSFIuc2V0UmVxdWVzdEhlYWRlciggIkNvbnRlbnQt
VHlwZSIsIHMuY29udGVudFR5cGUgKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFNldCB0aGUg
QWNjZXB0cyBoZWFkZXIgZm9yIHRoZSBzZXJ2ZXIsIGRlcGVuZGluZyBvbiB0aGUgZGF0YVR5cGUK
LSAgICAgICAganFYSFIuc2V0UmVxdWVzdEhlYWRlcigKLSAgICAgICAgICAgICJBY2NlcHQiLAot
ICAgICAgICAgICAgcy5kYXRhVHlwZXNbIDAgXSAmJiBzLmFjY2VwdHNbIHMuZGF0YVR5cGVzWzBd
IF0gPwotICAgICAgICAgICAgICAgIHMuYWNjZXB0c1sgcy5kYXRhVHlwZXNbMF0gXSArICggcy5k
YXRhVHlwZXNbIDAgXSAhPT0gIioiID8gIiwgIiArIGFsbFR5cGVzICsgIjsgcT0wLjAxIiA6ICIi
ICkgOgotICAgICAgICAgICAgICAgIHMuYWNjZXB0c1sgIioiIF0KLSAgICAgICAgKTsKLQotICAg
ICAgICAvLyBDaGVjayBmb3IgaGVhZGVycyBvcHRpb24KLSAgICAgICAgZm9yICggaSBpbiBzLmhl
YWRlcnMgKSB7Ci0gICAgICAgICAgICBqcVhIUi5zZXRSZXF1ZXN0SGVhZGVyKCBpLCBzLmhlYWRl
cnNbIGkgXSApOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gQWxsb3cgY3VzdG9tIGhlYWRlcnMv
bWltZXR5cGVzIGFuZCBlYXJseSBhYm9ydAotICAgICAgICBpZiAoIHMuYmVmb3JlU2VuZCAmJiAo
IHMuYmVmb3JlU2VuZC5jYWxsKCBjYWxsYmFja0NvbnRleHQsIGpxWEhSLCBzICkgPT09IGZhbHNl
IHx8IHN0YXRlID09PSAyICkgKSB7Ci0gICAgICAgICAgICAvLyBBYm9ydCBpZiBub3QgZG9uZSBh
bHJlYWR5IGFuZCByZXR1cm4KLSAgICAgICAgICAgIHJldHVybiBqcVhIUi5hYm9ydCgpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgLy8gYWJvcnRpbmcgaXMgbm8gbG9uZ2VyIGEgY2FuY2VsbGF0aW9u
Ci0gICAgICAgIHN0ckFib3J0ID0gImFib3J0IjsKLQotICAgICAgICAvLyBJbnN0YWxsIGNhbGxi
YWNrcyBvbiBkZWZlcnJlZHMKLSAgICAgICAgZm9yICggaSBpbiB7IHN1Y2Nlc3M6IDEsIGVycm9y
OiAxLCBjb21wbGV0ZTogMSB9ICkgewotICAgICAgICAgICAganFYSFJbIGkgXSggc1sgaSBdICk7
Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBHZXQgdHJhbnNwb3J0Ci0gICAgICAgIHRyYW5zcG9y
dCA9IGluc3BlY3RQcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCB0cmFuc3BvcnRzLCBzLCBvcHRpb25z
LCBqcVhIUiApOwotCi0gICAgICAgIC8vIElmIG5vIHRyYW5zcG9ydCwgd2UgYXV0by1hYm9ydAot
ICAgICAgICBpZiAoICF0cmFuc3BvcnQgKSB7Ci0gICAgICAgICAgICBkb25lKCAtMSwgIk5vIFRy
YW5zcG9ydCIgKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGpxWEhSLnJlYWR5U3Rh
dGUgPSAxOwotCi0gICAgICAgICAgICAvLyBTZW5kIGdsb2JhbCBldmVudAotICAgICAgICAgICAg
aWYgKCBmaXJlR2xvYmFscyApIHsKLSAgICAgICAgICAgICAgICBnbG9iYWxFdmVudENvbnRleHQu
dHJpZ2dlciggImFqYXhTZW5kIiwgWyBqcVhIUiwgcyBdICk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAvLyBUaW1lb3V0Ci0gICAgICAgICAgICBpZiAoIHMuYXN5bmMgJiYgcy50aW1lb3V0
ID4gMCApIHsKLSAgICAgICAgICAgICAgICB0aW1lb3V0VGltZXIgPSBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgewotICAgICAgICAgICAgICAgICAgICBqcVhIUi5hYm9ydCgidGltZW91dCIpOwotICAg
ICAgICAgICAgICAgIH0sIHMudGltZW91dCApOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICB0cnkgewotICAgICAgICAgICAgICAgIHN0YXRlID0gMTsKLSAgICAgICAgICAgICAgICB0cmFu
c3BvcnQuc2VuZCggcmVxdWVzdEhlYWRlcnMsIGRvbmUgKTsKLSAgICAgICAgICAgIH0gY2F0Y2gg
KCBlICkgewotICAgICAgICAgICAgICAgIC8vIFByb3BhZ2F0ZSBleGNlcHRpb24gYXMgZXJyb3Ig
aWYgbm90IGRvbmUKLSAgICAgICAgICAgICAgICBpZiAoIHN0YXRlIDwgMiApIHsKLSAgICAgICAg
ICAgICAgICAgICAgZG9uZSggLTEsIGUgKTsKLSAgICAgICAgICAgICAgICAvLyBTaW1wbHkgcmV0
aHJvdyBvdGhlcndpc2UKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg
ICAgICB0aHJvdyBlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotCi0gICAgICAgIC8vIENhbGxiYWNrIGZvciB3aGVuIGV2ZXJ5dGhpbmcgaXMgZG9uZQotICAg
ICAgICBmdW5jdGlvbiBkb25lKCBzdGF0dXMsIG5hdGl2ZVN0YXR1c1RleHQsIHJlc3BvbnNlcywg
aGVhZGVycyApIHsKLSAgICAgICAgICAgIHZhciBpc1N1Y2Nlc3MsIHN1Y2Nlc3MsIGVycm9yLCBy
ZXNwb25zZSwgbW9kaWZpZWQsCi0gICAgICAgICAgICAgICAgc3RhdHVzVGV4dCA9IG5hdGl2ZVN0
YXR1c1RleHQ7Ci0KLSAgICAgICAgICAgIC8vIENhbGxlZCBvbmNlCi0gICAgICAgICAgICBpZiAo
IHN0YXRlID09PSAyICkgewotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgLy8gU3RhdGUgaXMgImRvbmUiIG5vdwotICAgICAgICAgICAgc3RhdGUg
PSAyOwotCi0gICAgICAgICAgICAvLyBDbGVhciB0aW1lb3V0IGlmIGl0IGV4aXN0cwotICAgICAg
ICAgICAgaWYgKCB0aW1lb3V0VGltZXIgKSB7Ci0gICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0
KCB0aW1lb3V0VGltZXIgKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gRGVyZWZl
cmVuY2UgdHJhbnNwb3J0IGZvciBlYXJseSBnYXJiYWdlIGNvbGxlY3Rpb24KLSAgICAgICAgICAg
IC8vIChubyBtYXR0ZXIgaG93IGxvbmcgdGhlIGpxWEhSIG9iamVjdCB3aWxsIGJlIHVzZWQpCi0g
ICAgICAgICAgICB0cmFuc3BvcnQgPSB1bmRlZmluZWQ7Ci0KLSAgICAgICAgICAgIC8vIENhY2hl
IHJlc3BvbnNlIGhlYWRlcnMKLSAgICAgICAgICAgIHJlc3BvbnNlSGVhZGVyc1N0cmluZyA9IGhl
YWRlcnMgfHwgIiI7Ci0KLSAgICAgICAgICAgIC8vIFNldCByZWFkeVN0YXRlCi0gICAgICAgICAg
ICBqcVhIUi5yZWFkeVN0YXRlID0gc3RhdHVzID4gMCA/IDQgOiAwOwotCi0gICAgICAgICAgICAv
LyBEZXRlcm1pbmUgaWYgc3VjY2Vzc2Z1bAotICAgICAgICAgICAgaXNTdWNjZXNzID0gc3RhdHVz
ID49IDIwMCAmJiBzdGF0dXMgPCAzMDAgfHwgc3RhdHVzID09PSAzMDQ7Ci0KLSAgICAgICAgICAg
IC8vIEdldCByZXNwb25zZSBkYXRhCi0gICAgICAgICAgICBpZiAoIHJlc3BvbnNlcyApIHsKLSAg
ICAgICAgICAgICAgICByZXNwb25zZSA9IGFqYXhIYW5kbGVSZXNwb25zZXMoIHMsIGpxWEhSLCBy
ZXNwb25zZXMgKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gQ29udmVydCBubyBt
YXR0ZXIgd2hhdCAodGhhdCB3YXkgcmVzcG9uc2VYWFggZmllbGRzIGFyZSBhbHdheXMgc2V0KQot
ICAgICAgICAgICAgcmVzcG9uc2UgPSBhamF4Q29udmVydCggcywgcmVzcG9uc2UsIGpxWEhSLCBp
c1N1Y2Nlc3MgKTsKLQotICAgICAgICAgICAgLy8gSWYgc3VjY2Vzc2Z1bCwgaGFuZGxlIHR5cGUg
Y2hhaW5pbmcKLSAgICAgICAgICAgIGlmICggaXNTdWNjZXNzICkgewotCi0gICAgICAgICAgICAg
ICAgLy8gU2V0IHRoZSBJZi1Nb2RpZmllZC1TaW5jZSBhbmQvb3IgSWYtTm9uZS1NYXRjaCBoZWFk
ZXIsIGlmIGluIGlmTW9kaWZpZWQgbW9kZS4KLSAgICAgICAgICAgICAgICBpZiAoIHMuaWZNb2Rp
ZmllZCApIHsKLSAgICAgICAgICAgICAgICAgICAgbW9kaWZpZWQgPSBqcVhIUi5nZXRSZXNwb25z
ZUhlYWRlcigiTGFzdC1Nb2RpZmllZCIpOwotICAgICAgICAgICAgICAgICAgICBpZiAoIG1vZGlm
aWVkICkgewotICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5Lmxhc3RNb2RpZmllZFsgY2Fj
aGVVUkwgXSA9IG1vZGlmaWVkOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgIG1vZGlmaWVkID0ganFYSFIuZ2V0UmVzcG9uc2VIZWFkZXIoImV0YWciKTsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKCBtb2RpZmllZCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGpRdWVyeS5ldGFnWyBjYWNoZVVSTCBdID0gbW9kaWZpZWQ7Ci0gICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBpZiBubyBjb250ZW50
Ci0gICAgICAgICAgICAgICAgaWYgKCBzdGF0dXMgPT09IDIwNCB8fCBzLnR5cGUgPT09ICJIRUFE
IiApIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdHVzVGV4dCA9ICJub2NvbnRlbnQiOwotCi0g
ICAgICAgICAgICAgICAgLy8gaWYgbm90IG1vZGlmaWVkCi0gICAgICAgICAgICAgICAgfSBlbHNl
IGlmICggc3RhdHVzID09PSAzMDQgKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXR1c1RleHQg
PSAibm90bW9kaWZpZWQiOwotCi0gICAgICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSBkYXRhLCBs
ZXQncyBjb252ZXJ0IGl0Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg
ICAgICAgc3RhdHVzVGV4dCA9IHJlc3BvbnNlLnN0YXRlOwotICAgICAgICAgICAgICAgICAgICBz
dWNjZXNzID0gcmVzcG9uc2UuZGF0YTsKLSAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSByZXNw
b25zZS5lcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgaXNTdWNjZXNzID0gIWVycm9yOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgLy8g
V2UgZXh0cmFjdCBlcnJvciBmcm9tIHN0YXR1c1RleHQKLSAgICAgICAgICAgICAgICAvLyB0aGVu
IG5vcm1hbGl6ZSBzdGF0dXNUZXh0IGFuZCBzdGF0dXMgZm9yIG5vbi1hYm9ydHMKLSAgICAgICAg
ICAgICAgICBlcnJvciA9IHN0YXR1c1RleHQ7Ci0gICAgICAgICAgICAgICAgaWYgKCBzdGF0dXMg
fHwgIXN0YXR1c1RleHQgKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXR1c1RleHQgPSAiZXJy
b3IiOwotICAgICAgICAgICAgICAgICAgICBpZiAoIHN0YXR1cyA8IDAgKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBzdGF0dXMgPSAwOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBTZXQgZGF0YSBmb3Ig
dGhlIGZha2UgeGhyIG9iamVjdAotICAgICAgICAgICAganFYSFIuc3RhdHVzID0gc3RhdHVzOwot
ICAgICAgICAgICAganFYSFIuc3RhdHVzVGV4dCA9ICggbmF0aXZlU3RhdHVzVGV4dCB8fCBzdGF0
dXNUZXh0ICkgKyAiIjsKLQotICAgICAgICAgICAgLy8gU3VjY2Vzcy9FcnJvcgotICAgICAgICAg
ICAgaWYgKCBpc1N1Y2Nlc3MgKSB7Ci0gICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZVdp
dGgoIGNhbGxiYWNrQ29udGV4dCwgWyBzdWNjZXNzLCBzdGF0dXNUZXh0LCBqcVhIUiBdICk7Ci0g
ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdFdpdGgo
IGNhbGxiYWNrQ29udGV4dCwgWyBqcVhIUiwgc3RhdHVzVGV4dCwgZXJyb3IgXSApOwotICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICAvLyBTdGF0dXMtZGVwZW5kZW50IGNhbGxiYWNrcwotICAg
ICAgICAgICAganFYSFIuc3RhdHVzQ29kZSggc3RhdHVzQ29kZSApOwotICAgICAgICAgICAgc3Rh
dHVzQ29kZSA9IHVuZGVmaW5lZDsKLQotICAgICAgICAgICAgaWYgKCBmaXJlR2xvYmFscyApIHsK
LSAgICAgICAgICAgICAgICBnbG9iYWxFdmVudENvbnRleHQudHJpZ2dlciggaXNTdWNjZXNzID8g
ImFqYXhTdWNjZXNzIiA6ICJhamF4RXJyb3IiLAotICAgICAgICAgICAgICAgICAgICBbIGpxWEhS
LCBzLCBpc1N1Y2Nlc3MgPyBzdWNjZXNzIDogZXJyb3IgXSApOwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICAvLyBDb21wbGV0ZQotICAgICAgICAgICAgY29tcGxldGVEZWZlcnJlZC5maXJl
V2l0aCggY2FsbGJhY2tDb250ZXh0LCBbIGpxWEhSLCBzdGF0dXNUZXh0IF0gKTsKLQotICAgICAg
ICAgICAgaWYgKCBmaXJlR2xvYmFscyApIHsKLSAgICAgICAgICAgICAgICBnbG9iYWxFdmVudENv
bnRleHQudHJpZ2dlciggImFqYXhDb21wbGV0ZSIsIFsganFYSFIsIHMgXSApOwotICAgICAgICAg
ICAgICAgIC8vIEhhbmRsZSB0aGUgZ2xvYmFsIEFKQVggY291bnRlcgotICAgICAgICAgICAgICAg
IGlmICggISggLS1qUXVlcnkuYWN0aXZlICkgKSB7Ci0gICAgICAgICAgICAgICAgICAgIGpRdWVy
eS5ldmVudC50cmlnZ2VyKCJhamF4U3RvcCIpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBqcVhIUjsKLSAgICB9LAotCi0gICAg
Z2V0SlNPTjogZnVuY3Rpb24oIHVybCwgZGF0YSwgY2FsbGJhY2sgKSB7Ci0gICAgICAgIHJldHVy
biBqUXVlcnkuZ2V0KCB1cmwsIGRhdGEsIGNhbGxiYWNrLCAianNvbiIgKTsKLSAgICB9LAotCi0g
ICAgZ2V0U2NyaXB0OiBmdW5jdGlvbiggdXJsLCBjYWxsYmFjayApIHsKLSAgICAgICAgcmV0dXJu
IGpRdWVyeS5nZXQoIHVybCwgdW5kZWZpbmVkLCBjYWxsYmFjaywgInNjcmlwdCIgKTsKLSAgICB9
Ci19KTsKLQotalF1ZXJ5LmVhY2goIFsgImdldCIsICJwb3N0IiBdLCBmdW5jdGlvbiggaSwgbWV0
aG9kICkgewotICAgIGpRdWVyeVsgbWV0aG9kIF0gPSBmdW5jdGlvbiggdXJsLCBkYXRhLCBjYWxs
YmFjaywgdHlwZSApIHsKLSAgICAgICAgLy8gc2hpZnQgYXJndW1lbnRzIGlmIGRhdGEgYXJndW1l
bnQgd2FzIG9taXR0ZWQKLSAgICAgICAgaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggZGF0YSApICkg
ewotICAgICAgICAgICAgdHlwZSA9IHR5cGUgfHwgY2FsbGJhY2s7Ci0gICAgICAgICAgICBjYWxs
YmFjayA9IGRhdGE7Ci0gICAgICAgICAgICBkYXRhID0gdW5kZWZpbmVkOwotICAgICAgICB9Ci0K
LSAgICAgICAgcmV0dXJuIGpRdWVyeS5hamF4KHsKLSAgICAgICAgICAgIHVybDogdXJsLAotICAg
ICAgICAgICAgdHlwZTogbWV0aG9kLAotICAgICAgICAgICAgZGF0YVR5cGU6IHR5cGUsCi0gICAg
ICAgICAgICBkYXRhOiBkYXRhLAotICAgICAgICAgICAgc3VjY2VzczogY2FsbGJhY2sKLSAgICAg
ICAgfSk7Ci0gICAgfTsKLX0pOwotCi0vLyBBdHRhY2ggYSBidW5jaCBvZiBmdW5jdGlvbnMgZm9y
IGhhbmRsaW5nIGNvbW1vbiBBSkFYIGV2ZW50cwotalF1ZXJ5LmVhY2goIFsgImFqYXhTdGFydCIs
ICJhamF4U3RvcCIsICJhamF4Q29tcGxldGUiLCAiYWpheEVycm9yIiwgImFqYXhTdWNjZXNzIiwg
ImFqYXhTZW5kIiBdLCBmdW5jdGlvbiggaSwgdHlwZSApIHsKLSAgICBqUXVlcnkuZm5bIHR5cGUg
XSA9IGZ1bmN0aW9uKCBmbiApIHsKLSAgICAgICAgcmV0dXJuIHRoaXMub24oIHR5cGUsIGZuICk7
Ci0gICAgfTsKLX0pOwotCi0KLWpRdWVyeS5fZXZhbFVybCA9IGZ1bmN0aW9uKCB1cmwgKSB7Ci0g
ICAgcmV0dXJuIGpRdWVyeS5hamF4KHsKLSAgICAgICAgdXJsOiB1cmwsCi0gICAgICAgIHR5cGU6
ICJHRVQiLAotICAgICAgICBkYXRhVHlwZTogInNjcmlwdCIsCi0gICAgICAgIGFzeW5jOiBmYWxz
ZSwKLSAgICAgICAgZ2xvYmFsOiBmYWxzZSwKLSAgICAgICAgInRocm93cyI6IHRydWUKLSAgICB9
KTsKLX07Ci0KLQotalF1ZXJ5LmZuLmV4dGVuZCh7Ci0gICAgd3JhcEFsbDogZnVuY3Rpb24oIGh0
bWwgKSB7Ci0gICAgICAgIHZhciB3cmFwOwotCi0gICAgICAgIGlmICggalF1ZXJ5LmlzRnVuY3Rp
b24oIGh0bWwgKSApIHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oIGkg
KSB7Ci0gICAgICAgICAgICAgICAgalF1ZXJ5KCB0aGlzICkud3JhcEFsbCggaHRtbC5jYWxsKHRo
aXMsIGkpICk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICggdGhp
c1sgMCBdICkgewotCi0gICAgICAgICAgICAvLyBUaGUgZWxlbWVudHMgdG8gd3JhcCB0aGUgdGFy
Z2V0IGFyb3VuZAotICAgICAgICAgICAgd3JhcCA9IGpRdWVyeSggaHRtbCwgdGhpc1sgMCBdLm93
bmVyRG9jdW1lbnQgKS5lcSggMCApLmNsb25lKCB0cnVlICk7Ci0KLSAgICAgICAgICAgIGlmICgg
dGhpc1sgMCBdLnBhcmVudE5vZGUgKSB7Ci0gICAgICAgICAgICAgICAgd3JhcC5pbnNlcnRCZWZv
cmUoIHRoaXNbIDAgXSApOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB3cmFwLm1hcChm
dW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICB2YXIgZWxlbSA9IHRoaXM7Ci0KLSAgICAgICAg
ICAgICAgICB3aGlsZSAoIGVsZW0uZmlyc3RFbGVtZW50Q2hpbGQgKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGVsZW0gPSBlbGVtLmZpcnN0RWxlbWVudENoaWxkOwotICAgICAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgICAgIHJldHVybiBlbGVtOwotICAgICAgICAgICAgfSkuYXBwZW5kKCB0
aGlzICk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gdGhpczsKLSAgICB9LAotCi0gICAg
d3JhcElubmVyOiBmdW5jdGlvbiggaHRtbCApIHsKLSAgICAgICAgaWYgKCBqUXVlcnkuaXNGdW5j
dGlvbiggaHRtbCApICkgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigg
aSApIHsKLSAgICAgICAgICAgICAgICBqUXVlcnkoIHRoaXMgKS53cmFwSW5uZXIoIGh0bWwuY2Fs
bCh0aGlzLCBpKSApOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1
cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgdmFyIHNlbGYgPSBqUXVlcnko
IHRoaXMgKSwKLSAgICAgICAgICAgICAgICBjb250ZW50cyA9IHNlbGYuY29udGVudHMoKTsKLQot
ICAgICAgICAgICAgaWYgKCBjb250ZW50cy5sZW5ndGggKSB7Ci0gICAgICAgICAgICAgICAgY29u
dGVudHMud3JhcEFsbCggaHRtbCApOwotCi0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgIHNlbGYuYXBwZW5kKCBodG1sICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOwot
ICAgIH0sCi0KLSAgICB3cmFwOiBmdW5jdGlvbiggaHRtbCApIHsKLSAgICAgICAgdmFyIGlzRnVu
Y3Rpb24gPSBqUXVlcnkuaXNGdW5jdGlvbiggaHRtbCApOwotCi0gICAgICAgIHJldHVybiB0aGlz
LmVhY2goZnVuY3Rpb24oIGkgKSB7Ci0gICAgICAgICAgICBqUXVlcnkoIHRoaXMgKS53cmFwQWxs
KCBpc0Z1bmN0aW9uID8gaHRtbC5jYWxsKHRoaXMsIGkpIDogaHRtbCApOwotICAgICAgICB9KTsK
LSAgICB9LAotCi0gICAgdW53cmFwOiBmdW5jdGlvbigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMu
cGFyZW50KCkuZWFjaChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGlmICggIWpRdWVyeS5ub2Rl
TmFtZSggdGhpcywgImJvZHkiICkgKSB7Ci0gICAgICAgICAgICAgICAgalF1ZXJ5KCB0aGlzICku
cmVwbGFjZVdpdGgoIHRoaXMuY2hpbGROb2RlcyApOwotICAgICAgICAgICAgfQotICAgICAgICB9
KS5lbmQoKTsKLSAgICB9Ci19KTsKLQotCi1qUXVlcnkuZXhwci5maWx0ZXJzLmhpZGRlbiA9IGZ1
bmN0aW9uKCBlbGVtICkgewotICAgIC8vIFN1cHBvcnQ6IE9wZXJhIDw9IDEyLjEyCi0gICAgLy8g
T3BlcmEgcmVwb3J0cyBvZmZzZXRXaWR0aHMgYW5kIG9mZnNldEhlaWdodHMgbGVzcyB0aGFuIHpl
cm8gb24gc29tZSBlbGVtZW50cwotICAgIHJldHVybiBlbGVtLm9mZnNldFdpZHRoIDw9IDAgJiYg
ZWxlbS5vZmZzZXRIZWlnaHQgPD0gMDsKLX07Ci1qUXVlcnkuZXhwci5maWx0ZXJzLnZpc2libGUg
PSBmdW5jdGlvbiggZWxlbSApIHsKLSAgICByZXR1cm4gIWpRdWVyeS5leHByLmZpbHRlcnMuaGlk
ZGVuKCBlbGVtICk7Ci19OwotCi0KLQotCi12YXIgcjIwID0gLyUyMC9nLAotICAgIHJicmFja2V0
ID0gL1xbXF0kLywKLSAgICByQ1JMRiA9IC9ccj9cbi9nLAotICAgIHJzdWJtaXR0ZXJUeXBlcyA9
IC9eKD86c3VibWl0fGJ1dHRvbnxpbWFnZXxyZXNldHxmaWxlKSQvaSwKLSAgICByc3VibWl0dGFi
bGUgPSAvXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxrZXlnZW4pL2k7Ci0KLWZ1bmN0aW9uIGJ1
aWxkUGFyYW1zKCBwcmVmaXgsIG9iaiwgdHJhZGl0aW9uYWwsIGFkZCApIHsKLSAgICB2YXIgbmFt
ZTsKLQotICAgIGlmICggalF1ZXJ5LmlzQXJyYXkoIG9iaiApICkgewotICAgICAgICAvLyBTZXJp
YWxpemUgYXJyYXkgaXRlbS4KLSAgICAgICAgalF1ZXJ5LmVhY2goIG9iaiwgZnVuY3Rpb24oIGks
IHYgKSB7Ci0gICAgICAgICAgICBpZiAoIHRyYWRpdGlvbmFsIHx8IHJicmFja2V0LnRlc3QoIHBy
ZWZpeCApICkgewotICAgICAgICAgICAgICAgIC8vIFRyZWF0IGVhY2ggYXJyYXkgaXRlbSBhcyBh
IHNjYWxhci4KLSAgICAgICAgICAgICAgICBhZGQoIHByZWZpeCwgdiApOwotCi0gICAgICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgICAgIC8vIEl0ZW0gaXMgbm9uLXNjYWxhciAoYXJyYXkg
b3Igb2JqZWN0KSwgZW5jb2RlIGl0cyBudW1lcmljIGluZGV4LgotICAgICAgICAgICAgICAgIGJ1
aWxkUGFyYW1zKCBwcmVmaXggKyAiWyIgKyAoIHR5cGVvZiB2ID09PSAib2JqZWN0IiA/IGkgOiAi
IiApICsgIl0iLCB2LCB0cmFkaXRpb25hbCwgYWRkICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0pOwotCi0gICAgfSBlbHNlIGlmICggIXRyYWRpdGlvbmFsICYmIGpRdWVyeS50eXBlKCBvYmog
KSA9PT0gIm9iamVjdCIgKSB7Ci0gICAgICAgIC8vIFNlcmlhbGl6ZSBvYmplY3QgaXRlbS4KLSAg
ICAgICAgZm9yICggbmFtZSBpbiBvYmogKSB7Ci0gICAgICAgICAgICBidWlsZFBhcmFtcyggcHJl
Zml4ICsgIlsiICsgbmFtZSArICJdIiwgb2JqWyBuYW1lIF0sIHRyYWRpdGlvbmFsLCBhZGQgKTsK
LSAgICAgICAgfQotCi0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gU2VyaWFsaXplIHNjYWxhciBp
dGVtLgotICAgICAgICBhZGQoIHByZWZpeCwgb2JqICk7Ci0gICAgfQotfQotCi0vLyBTZXJpYWxp
emUgYW4gYXJyYXkgb2YgZm9ybSBlbGVtZW50cyBvciBhIHNldCBvZgotLy8ga2V5L3ZhbHVlcyBp
bnRvIGEgcXVlcnkgc3RyaW5nCi1qUXVlcnkucGFyYW0gPSBmdW5jdGlvbiggYSwgdHJhZGl0aW9u
YWwgKSB7Ci0gICAgdmFyIHByZWZpeCwKLSAgICAgICAgcyA9IFtdLAotICAgICAgICBhZGQgPSBm
dW5jdGlvbigga2V5LCB2YWx1ZSApIHsKLSAgICAgICAgICAgIC8vIElmIHZhbHVlIGlzIGEgZnVu
Y3Rpb24sIGludm9rZSBpdCBhbmQgcmV0dXJuIGl0cyB2YWx1ZQotICAgICAgICAgICAgdmFsdWUg
PSBqUXVlcnkuaXNGdW5jdGlvbiggdmFsdWUgKSA/IHZhbHVlKCkgOiAoIHZhbHVlID09IG51bGwg
PyAiIiA6IHZhbHVlICk7Ci0gICAgICAgICAgICBzWyBzLmxlbmd0aCBdID0gZW5jb2RlVVJJQ29t
cG9uZW50KCBrZXkgKSArICI9IiArIGVuY29kZVVSSUNvbXBvbmVudCggdmFsdWUgKTsKLSAgICAg
ICAgfTsKLQotICAgIC8vIFNldCB0cmFkaXRpb25hbCB0byB0cnVlIGZvciBqUXVlcnkgPD0gMS4z
LjIgYmVoYXZpb3IuCi0gICAgaWYgKCB0cmFkaXRpb25hbCA9PT0gdW5kZWZpbmVkICkgewotICAg
ICAgICB0cmFkaXRpb25hbCA9IGpRdWVyeS5hamF4U2V0dGluZ3MgJiYgalF1ZXJ5LmFqYXhTZXR0
aW5ncy50cmFkaXRpb25hbDsKLSAgICB9Ci0KLSAgICAvLyBJZiBhbiBhcnJheSB3YXMgcGFzc2Vk
IGluLCBhc3N1bWUgdGhhdCBpdCBpcyBhbiBhcnJheSBvZiBmb3JtIGVsZW1lbnRzLgotICAgIGlm
ICggalF1ZXJ5LmlzQXJyYXkoIGEgKSB8fCAoIGEuanF1ZXJ5ICYmICFqUXVlcnkuaXNQbGFpbk9i
amVjdCggYSApICkgKSB7Ci0gICAgICAgIC8vIFNlcmlhbGl6ZSB0aGUgZm9ybSBlbGVtZW50cwot
ICAgICAgICBqUXVlcnkuZWFjaCggYSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBhZGQoIHRo
aXMubmFtZSwgdGhpcy52YWx1ZSApOwotICAgICAgICB9KTsKLQotICAgIH0gZWxzZSB7Ci0gICAg
ICAgIC8vIElmIHRyYWRpdGlvbmFsLCBlbmNvZGUgdGhlICJvbGQiIHdheSAodGhlIHdheSAxLjMu
MiBvciBvbGRlcgotICAgICAgICAvLyBkaWQgaXQpLCBvdGhlcndpc2UgZW5jb2RlIHBhcmFtcyBy
ZWN1cnNpdmVseS4KLSAgICAgICAgZm9yICggcHJlZml4IGluIGEgKSB7Ci0gICAgICAgICAgICBi
dWlsZFBhcmFtcyggcHJlZml4LCBhWyBwcmVmaXggXSwgdHJhZGl0aW9uYWwsIGFkZCApOwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgLy8gUmV0dXJuIHRoZSByZXN1bHRpbmcgc2VyaWFsaXphdGlv
bgotICAgIHJldHVybiBzLmpvaW4oICImIiApLnJlcGxhY2UoIHIyMCwgIisiICk7Ci19OwotCi1q
UXVlcnkuZm4uZXh0ZW5kKHsKLSAgICBzZXJpYWxpemU6IGZ1bmN0aW9uKCkgewotICAgICAgICBy
ZXR1cm4galF1ZXJ5LnBhcmFtKCB0aGlzLnNlcmlhbGl6ZUFycmF5KCkgKTsKLSAgICB9LAotICAg
IHNlcmlhbGl6ZUFycmF5OiBmdW5jdGlvbigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMubWFwKGZ1
bmN0aW9uKCkgewotICAgICAgICAgICAgLy8gQ2FuIGFkZCBwcm9wSG9vayBmb3IgImVsZW1lbnRz
IiB0byBmaWx0ZXIgb3IgYWRkIGZvcm0gZWxlbWVudHMKLSAgICAgICAgICAgIHZhciBlbGVtZW50
cyA9IGpRdWVyeS5wcm9wKCB0aGlzLCAiZWxlbWVudHMiICk7Ci0gICAgICAgICAgICByZXR1cm4g
ZWxlbWVudHMgPyBqUXVlcnkubWFrZUFycmF5KCBlbGVtZW50cyApIDogdGhpczsKLSAgICAgICAg
fSkKLSAgICAgICAgLmZpbHRlcihmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHZhciB0eXBlID0g
dGhpcy50eXBlOwotCi0gICAgICAgICAgICAvLyBVc2UgLmlzKCAiOmRpc2FibGVkIiApIHNvIHRo
YXQgZmllbGRzZXRbZGlzYWJsZWRdIHdvcmtzCi0gICAgICAgICAgICByZXR1cm4gdGhpcy5uYW1l
ICYmICFqUXVlcnkoIHRoaXMgKS5pcyggIjpkaXNhYmxlZCIgKSAmJgotICAgICAgICAgICAgICAg
IHJzdWJtaXR0YWJsZS50ZXN0KCB0aGlzLm5vZGVOYW1lICkgJiYgIXJzdWJtaXR0ZXJUeXBlcy50
ZXN0KCB0eXBlICkgJiYKLSAgICAgICAgICAgICAgICAoIHRoaXMuY2hlY2tlZCB8fCAhcmNoZWNr
YWJsZVR5cGUudGVzdCggdHlwZSApICk7Ci0gICAgICAgIH0pCi0gICAgICAgIC5tYXAoZnVuY3Rp
b24oIGksIGVsZW0gKSB7Ci0gICAgICAgICAgICB2YXIgdmFsID0galF1ZXJ5KCB0aGlzICkudmFs
KCk7Ci0KLSAgICAgICAgICAgIHJldHVybiB2YWwgPT0gbnVsbCA/Ci0gICAgICAgICAgICAgICAg
bnVsbCA6Ci0gICAgICAgICAgICAgICAgalF1ZXJ5LmlzQXJyYXkoIHZhbCApID8KLSAgICAgICAg
ICAgICAgICAgICAgalF1ZXJ5Lm1hcCggdmFsLCBmdW5jdGlvbiggdmFsICkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHsgbmFtZTogZWxlbS5uYW1lLCB2YWx1ZTogdmFsLnJlcGxh
Y2UoIHJDUkxGLCAiXHJcbiIgKSB9OwotICAgICAgICAgICAgICAgICAgICB9KSA6Ci0gICAgICAg
ICAgICAgICAgICAgIHsgbmFtZTogZWxlbS5uYW1lLCB2YWx1ZTogdmFsLnJlcGxhY2UoIHJDUkxG
LCAiXHJcbiIgKSB9OwotICAgICAgICB9KS5nZXQoKTsKLSAgICB9Ci19KTsKLQotCi1qUXVlcnku
YWpheFNldHRpbmdzLnhociA9IGZ1bmN0aW9uKCkgewotICAgIHRyeSB7Ci0gICAgICAgIHJldHVy
biBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKLSAgICB9IGNhdGNoKCBlICkge30KLX07Ci0KLXZhciB4
aHJJZCA9IDAsCi0gICAgeGhyQ2FsbGJhY2tzID0ge30sCi0gICAgeGhyU3VjY2Vzc1N0YXR1cyA9
IHsKLSAgICAgICAgLy8gZmlsZSBwcm90b2NvbCBhbHdheXMgeWllbGRzIHN0YXR1cyBjb2RlIDAs
IGFzc3VtZSAyMDAKLSAgICAgICAgMDogMjAwLAotICAgICAgICAvLyBTdXBwb3J0OiBJRTkKLSAg
ICAgICAgLy8gIzE0NTA6IHNvbWV0aW1lcyBJRSByZXR1cm5zIDEyMjMgd2hlbiBpdCBzaG91bGQg
YmUgMjA0Ci0gICAgICAgIDEyMjM6IDIwNAotICAgIH0sCi0gICAgeGhyU3VwcG9ydGVkID0galF1
ZXJ5LmFqYXhTZXR0aW5ncy54aHIoKTsKLQotLy8gU3VwcG9ydDogSUU5Ci0vLyBPcGVuIHJlcXVl
c3RzIG11c3QgYmUgbWFudWFsbHkgYWJvcnRlZCBvbiB1bmxvYWQgKCM1MjgwKQotaWYgKCB3aW5k
b3cuQWN0aXZlWE9iamVjdCApIHsKLSAgICBqUXVlcnkoIHdpbmRvdyApLm9uKCAidW5sb2FkIiwg
ZnVuY3Rpb24oKSB7Ci0gICAgICAgIGZvciAoIHZhciBrZXkgaW4geGhyQ2FsbGJhY2tzICkgewot
ICAgICAgICAgICAgeGhyQ2FsbGJhY2tzWyBrZXkgXSgpOwotICAgICAgICB9Ci0gICAgfSk7Ci19
Ci0KLXN1cHBvcnQuY29ycyA9ICEheGhyU3VwcG9ydGVkICYmICggIndpdGhDcmVkZW50aWFscyIg
aW4geGhyU3VwcG9ydGVkICk7Ci1zdXBwb3J0LmFqYXggPSB4aHJTdXBwb3J0ZWQgPSAhIXhoclN1
cHBvcnRlZDsKLQotalF1ZXJ5LmFqYXhUcmFuc3BvcnQoZnVuY3Rpb24oIG9wdGlvbnMgKSB7Ci0g
ICAgdmFyIGNhbGxiYWNrOwotCi0gICAgLy8gQ3Jvc3MgZG9tYWluIG9ubHkgYWxsb3dlZCBpZiBz
dXBwb3J0ZWQgdGhyb3VnaCBYTUxIdHRwUmVxdWVzdAotICAgIGlmICggc3VwcG9ydC5jb3JzIHx8
IHhoclN1cHBvcnRlZCAmJiAhb3B0aW9ucy5jcm9zc0RvbWFpbiApIHsKLSAgICAgICAgcmV0dXJu
IHsKLSAgICAgICAgICAgIHNlbmQ6IGZ1bmN0aW9uKCBoZWFkZXJzLCBjb21wbGV0ZSApIHsKLSAg
ICAgICAgICAgICAgICB2YXIgaSwKLSAgICAgICAgICAgICAgICAgICAgeGhyID0gb3B0aW9ucy54
aHIoKSwKLSAgICAgICAgICAgICAgICAgICAgaWQgPSArK3hocklkOwotCi0gICAgICAgICAgICAg
ICAgeGhyLm9wZW4oIG9wdGlvbnMudHlwZSwgb3B0aW9ucy51cmwsIG9wdGlvbnMuYXN5bmMsIG9w
dGlvbnMudXNlcm5hbWUsIG9wdGlvbnMucGFzc3dvcmQgKTsKLQotICAgICAgICAgICAgICAgIC8v
IEFwcGx5IGN1c3RvbSBmaWVsZHMgaWYgcHJvdmlkZWQKLSAgICAgICAgICAgICAgICBpZiAoIG9w
dGlvbnMueGhyRmllbGRzICkgewotICAgICAgICAgICAgICAgICAgICBmb3IgKCBpIGluIG9wdGlv
bnMueGhyRmllbGRzICkgewotICAgICAgICAgICAgICAgICAgICAgICAgeGhyWyBpIF0gPSBvcHRp
b25zLnhockZpZWxkc1sgaSBdOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICAgICAgLy8gT3ZlcnJpZGUgbWltZSB0eXBlIGlmIG5lZWRlZAot
ICAgICAgICAgICAgICAgIGlmICggb3B0aW9ucy5taW1lVHlwZSAmJiB4aHIub3ZlcnJpZGVNaW1l
VHlwZSApIHsKLSAgICAgICAgICAgICAgICAgICAgeGhyLm92ZXJyaWRlTWltZVR5cGUoIG9wdGlv
bnMubWltZVR5cGUgKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBY
LVJlcXVlc3RlZC1XaXRoIGhlYWRlcgotICAgICAgICAgICAgICAgIC8vIEZvciBjcm9zcy1kb21h
aW4gcmVxdWVzdHMsIHNlZWluZyBhcyBjb25kaXRpb25zIGZvciBhIHByZWZsaWdodCBhcmUKLSAg
ICAgICAgICAgICAgICAvLyBha2luIHRvIGEgamlnc2F3IHB1enpsZSwgd2Ugc2ltcGx5IG5ldmVy
IHNldCBpdCB0byBiZSBzdXJlLgotICAgICAgICAgICAgICAgIC8vIChpdCBjYW4gYWx3YXlzIGJl
IHNldCBvbiBhIHBlci1yZXF1ZXN0IGJhc2lzIG9yIGV2ZW4gdXNpbmcgYWpheFNldHVwKQotICAg
ICAgICAgICAgICAgIC8vIEZvciBzYW1lLWRvbWFpbiByZXF1ZXN0cywgd29uJ3QgY2hhbmdlIGhl
YWRlciBpZiBhbHJlYWR5IHByb3ZpZGVkLgotICAgICAgICAgICAgICAgIGlmICggIW9wdGlvbnMu
Y3Jvc3NEb21haW4gJiYgIWhlYWRlcnNbIlgtUmVxdWVzdGVkLVdpdGgiXSApIHsKLSAgICAgICAg
ICAgICAgICAgICAgaGVhZGVyc1siWC1SZXF1ZXN0ZWQtV2l0aCJdID0gIlhNTEh0dHBSZXF1ZXN0
IjsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBTZXQgaGVhZGVycwot
ICAgICAgICAgICAgICAgIGZvciAoIGkgaW4gaGVhZGVycyApIHsKLSAgICAgICAgICAgICAgICAg
ICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoIGksIGhlYWRlcnNbIGkgXSApOwotICAgICAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgICAgIC8vIENhbGxiYWNrCi0gICAgICAgICAgICAgICAgY2Fs
bGJhY2sgPSBmdW5jdGlvbiggdHlwZSApIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1
bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBjYWxsYmFjayApIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgeGhyQ2FsbGJhY2tzWyBpZCBdOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrID0geGhyLm9ubG9hZCA9IHhoci5vbmVy
cm9yID0gbnVsbDsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggdHlwZSA9PT0g
ImFib3J0IiApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGhyLmFib3J0KCk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICggdHlwZSA9PT0gImVycm9y
IiApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGUoCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmaWxlOiBwcm90b2NvbCBhbHdheXMgeWll
bGRzIHN0YXR1cyAwOyBzZWUgIzg2MDUsICMxNDIwNwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgeGhyLnN0YXR1cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHhoci5zdGF0dXNUZXh0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29tcGxldGUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB4aHJTdWNjZXNzU3RhdHVzWyB4aHIuc3RhdHVzIF0gfHwgeGhyLnN0YXR1cywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhoci5zdGF0dXNUZXh0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3VwcG9ydDogSUU5Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBBY2Nlc3NpbmcgYmluYXJ5LWRhdGEgcmVzcG9uc2VUZXh0
IHRocm93cyBhbiBleGNlcHRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vICgjMTE0MjYpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2Yg
eGhyLnJlc3BvbnNlVGV4dCA9PT0gInN0cmluZyIgPyB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGV4dDogeGhyLnJlc3BvbnNlVGV4dAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfSA6IHVuZGVmaW5lZCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHhoci5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfTsKLSAgICAgICAg
ICAgICAgICB9OwotCi0gICAgICAgICAgICAgICAgLy8gTGlzdGVuIHRvIGV2ZW50cwotICAgICAg
ICAgICAgICAgIHhoci5vbmxvYWQgPSBjYWxsYmFjaygpOwotICAgICAgICAgICAgICAgIHhoci5v
bmVycm9yID0gY2FsbGJhY2soImVycm9yIik7Ci0KLSAgICAgICAgICAgICAgICAvLyBDcmVhdGUg
dGhlIGFib3J0IGNhbGxiYWNrCi0gICAgICAgICAgICAgICAgY2FsbGJhY2sgPSB4aHJDYWxsYmFj
a3NbIGlkIF0gPSBjYWxsYmFjaygiYWJvcnQiKTsKLQotICAgICAgICAgICAgICAgIC8vIERvIHNl
bmQgdGhlIHJlcXVlc3QKLSAgICAgICAgICAgICAgICAvLyBUaGlzIG1heSByYWlzZSBhbiBleGNl
cHRpb24gd2hpY2ggaXMgYWN0dWFsbHkKLSAgICAgICAgICAgICAgICAvLyBoYW5kbGVkIGluIGpR
dWVyeS5hamF4IChzbyBubyB0cnkvY2F0Y2ggaGVyZSkKLSAgICAgICAgICAgICAgICB4aHIuc2Vu
ZCggb3B0aW9ucy5oYXNDb250ZW50ICYmIG9wdGlvbnMuZGF0YSB8fCBudWxsICk7Ci0gICAgICAg
ICAgICB9LAotCi0gICAgICAgICAgICBhYm9ydDogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKCBjYWxsYmFjayApIHsKLSAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soKTsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0gICAgfQotfSk7Ci0K
LQotCi0KLS8vIEluc3RhbGwgc2NyaXB0IGRhdGFUeXBlCi1qUXVlcnkuYWpheFNldHVwKHsKLSAg
ICBhY2NlcHRzOiB7Ci0gICAgICAgIHNjcmlwdDogInRleHQvamF2YXNjcmlwdCwgYXBwbGljYXRp
b24vamF2YXNjcmlwdCwgYXBwbGljYXRpb24vZWNtYXNjcmlwdCwgYXBwbGljYXRpb24veC1lY21h
c2NyaXB0IgotICAgIH0sCi0gICAgY29udGVudHM6IHsKLSAgICAgICAgc2NyaXB0OiAvKD86amF2
YXxlY21hKXNjcmlwdC8KLSAgICB9LAotICAgIGNvbnZlcnRlcnM6IHsKLSAgICAgICAgInRleHQg
c2NyaXB0IjogZnVuY3Rpb24oIHRleHQgKSB7Ci0gICAgICAgICAgICBqUXVlcnkuZ2xvYmFsRXZh
bCggdGV4dCApOwotICAgICAgICAgICAgcmV0dXJuIHRleHQ7Ci0gICAgICAgIH0KLSAgICB9Ci19
KTsKLQotLy8gSGFuZGxlIGNhY2hlJ3Mgc3BlY2lhbCBjYXNlIGFuZCBjcm9zc0RvbWFpbgotalF1
ZXJ5LmFqYXhQcmVmaWx0ZXIoICJzY3JpcHQiLCBmdW5jdGlvbiggcyApIHsKLSAgICBpZiAoIHMu
Y2FjaGUgPT09IHVuZGVmaW5lZCApIHsKLSAgICAgICAgcy5jYWNoZSA9IGZhbHNlOwotICAgIH0K
LSAgICBpZiAoIHMuY3Jvc3NEb21haW4gKSB7Ci0gICAgICAgIHMudHlwZSA9ICJHRVQiOwotICAg
IH0KLX0pOwotCi0vLyBCaW5kIHNjcmlwdCB0YWcgaGFjayB0cmFuc3BvcnQKLWpRdWVyeS5hamF4
VHJhbnNwb3J0KCAic2NyaXB0IiwgZnVuY3Rpb24oIHMgKSB7Ci0gICAgLy8gVGhpcyB0cmFuc3Bv
cnQgb25seSBkZWFscyB3aXRoIGNyb3NzIGRvbWFpbiByZXF1ZXN0cwotICAgIGlmICggcy5jcm9z
c0RvbWFpbiApIHsKLSAgICAgICAgdmFyIHNjcmlwdCwgY2FsbGJhY2s7Ci0gICAgICAgIHJldHVy
biB7Ci0gICAgICAgICAgICBzZW5kOiBmdW5jdGlvbiggXywgY29tcGxldGUgKSB7Ci0gICAgICAg
ICAgICAgICAgc2NyaXB0ID0galF1ZXJ5KCI8c2NyaXB0PiIpLnByb3AoewotICAgICAgICAgICAg
ICAgICAgICBhc3luYzogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgY2hhcnNldDogcy5zY3Jp
cHRDaGFyc2V0LAotICAgICAgICAgICAgICAgICAgICBzcmM6IHMudXJsCi0gICAgICAgICAgICAg
ICAgfSkub24oCi0gICAgICAgICAgICAgICAgICAgICJsb2FkIGVycm9yIiwKLSAgICAgICAgICAg
ICAgICAgICAgY2FsbGJhY2sgPSBmdW5jdGlvbiggZXZ0ICkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgc2NyaXB0LnJlbW92ZSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sg
PSBudWxsOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBldnQgKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29tcGxldGUoIGV2dC50eXBlID09PSAiZXJyb3IiID8gNDA0IDog
MjAwLCBldnQudHlwZSApOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgKTsKLSAgICAgICAgICAgICAgICBkb2N1bWVudC5o
ZWFkLmFwcGVuZENoaWxkKCBzY3JpcHRbIDAgXSApOwotICAgICAgICAgICAgfSwKLSAgICAgICAg
ICAgIGFib3J0OiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBpZiAoIGNhbGxiYWNrICkg
ewotICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaygpOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfTsKLSAgICB9Ci19KTsKLQotCi0KLQotdmFyIG9sZENhbGxi
YWNrcyA9IFtdLAotICAgIHJqc29ucCA9IC8oPSlcPyg/PSZ8JCl8XD9cPy87Ci0KLS8vIERlZmF1
bHQganNvbnAgc2V0dGluZ3MKLWpRdWVyeS5hamF4U2V0dXAoewotICAgIGpzb25wOiAiY2FsbGJh
Y2siLAotICAgIGpzb25wQ2FsbGJhY2s6IGZ1bmN0aW9uKCkgewotICAgICAgICB2YXIgY2FsbGJh
Y2sgPSBvbGRDYWxsYmFja3MucG9wKCkgfHwgKCBqUXVlcnkuZXhwYW5kbyArICJfIiArICggbm9u
Y2UrKyApICk7Ci0gICAgICAgIHRoaXNbIGNhbGxiYWNrIF0gPSB0cnVlOwotICAgICAgICByZXR1
cm4gY2FsbGJhY2s7Ci0gICAgfQotfSk7Ci0KLS8vIERldGVjdCwgbm9ybWFsaXplIG9wdGlvbnMg
YW5kIGluc3RhbGwgY2FsbGJhY2tzIGZvciBqc29ucCByZXF1ZXN0cwotalF1ZXJ5LmFqYXhQcmVm
aWx0ZXIoICJqc29uIGpzb25wIiwgZnVuY3Rpb24oIHMsIG9yaWdpbmFsU2V0dGluZ3MsIGpxWEhS
ICkgewotCi0gICAgdmFyIGNhbGxiYWNrTmFtZSwgb3ZlcndyaXR0ZW4sIHJlc3BvbnNlQ29udGFp
bmVyLAotICAgICAgICBqc29uUHJvcCA9IHMuanNvbnAgIT09IGZhbHNlICYmICggcmpzb25wLnRl
c3QoIHMudXJsICkgPwotICAgICAgICAgICAgInVybCIgOgotICAgICAgICAgICAgdHlwZW9mIHMu
ZGF0YSA9PT0gInN0cmluZyIgJiYgISggcy5jb250ZW50VHlwZSB8fCAiIiApLmluZGV4T2YoImFw
cGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpICYmIHJqc29ucC50ZXN0KCBzLmRhdGEg
KSAmJiAiZGF0YSIKLSAgICAgICAgKTsKLQotICAgIC8vIEhhbmRsZSBpZmYgdGhlIGV4cGVjdGVk
IGRhdGEgdHlwZSBpcyAianNvbnAiIG9yIHdlIGhhdmUgYSBwYXJhbWV0ZXIgdG8gc2V0Ci0gICAg
aWYgKCBqc29uUHJvcCB8fCBzLmRhdGFUeXBlc1sgMCBdID09PSAianNvbnAiICkgewotCi0gICAg
ICAgIC8vIEdldCBjYWxsYmFjayBuYW1lLCByZW1lbWJlcmluZyBwcmVleGlzdGluZyB2YWx1ZSBh
c3NvY2lhdGVkIHdpdGggaXQKLSAgICAgICAgY2FsbGJhY2tOYW1lID0gcy5qc29ucENhbGxiYWNr
ID0galF1ZXJ5LmlzRnVuY3Rpb24oIHMuanNvbnBDYWxsYmFjayApID8KLSAgICAgICAgICAgIHMu
anNvbnBDYWxsYmFjaygpIDoKLSAgICAgICAgICAgIHMuanNvbnBDYWxsYmFjazsKLQotICAgICAg
ICAvLyBJbnNlcnQgY2FsbGJhY2sgaW50byB1cmwgb3IgZm9ybSBkYXRhCi0gICAgICAgIGlmICgg
anNvblByb3AgKSB7Ci0gICAgICAgICAgICBzWyBqc29uUHJvcCBdID0gc1sganNvblByb3AgXS5y
ZXBsYWNlKCByanNvbnAsICIkMSIgKyBjYWxsYmFja05hbWUgKTsKLSAgICAgICAgfSBlbHNlIGlm
ICggcy5qc29ucCAhPT0gZmFsc2UgKSB7Ci0gICAgICAgICAgICBzLnVybCArPSAoIHJxdWVyeS50
ZXN0KCBzLnVybCApID8gIiYiIDogIj8iICkgKyBzLmpzb25wICsgIj0iICsgY2FsbGJhY2tOYW1l
OwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gVXNlIGRhdGEgY29udmVydGVyIHRvIHJldHJpZXZl
IGpzb24gYWZ0ZXIgc2NyaXB0IGV4ZWN1dGlvbgotICAgICAgICBzLmNvbnZlcnRlcnNbInNjcmlw
dCBqc29uIl0gPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGlmICggIXJlc3BvbnNlQ29udGFp
bmVyICkgewotICAgICAgICAgICAgICAgIGpRdWVyeS5lcnJvciggY2FsbGJhY2tOYW1lICsgIiB3
YXMgbm90IGNhbGxlZCIgKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiByZXNw
b25zZUNvbnRhaW5lclsgMCBdOwotICAgICAgICB9OwotCi0gICAgICAgIC8vIGZvcmNlIGpzb24g
ZGF0YVR5cGUKLSAgICAgICAgcy5kYXRhVHlwZXNbIDAgXSA9ICJqc29uIjsKLQotICAgICAgICAv
LyBJbnN0YWxsIGNhbGxiYWNrCi0gICAgICAgIG92ZXJ3cml0dGVuID0gd2luZG93WyBjYWxsYmFj
a05hbWUgXTsKLSAgICAgICAgd2luZG93WyBjYWxsYmFja05hbWUgXSA9IGZ1bmN0aW9uKCkgewot
ICAgICAgICAgICAgcmVzcG9uc2VDb250YWluZXIgPSBhcmd1bWVudHM7Ci0gICAgICAgIH07Ci0K
LSAgICAgICAgLy8gQ2xlYW4tdXAgZnVuY3Rpb24gKGZpcmVzIGFmdGVyIGNvbnZlcnRlcnMpCi0g
ICAgICAgIGpxWEhSLmFsd2F5cyhmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIC8vIFJlc3RvcmUg
cHJlZXhpc3RpbmcgdmFsdWUKLSAgICAgICAgICAgIHdpbmRvd1sgY2FsbGJhY2tOYW1lIF0gPSBv
dmVyd3JpdHRlbjsKLQotICAgICAgICAgICAgLy8gU2F2ZSBiYWNrIGFzIGZyZWUKLSAgICAgICAg
ICAgIGlmICggc1sgY2FsbGJhY2tOYW1lIF0gKSB7Ci0gICAgICAgICAgICAgICAgLy8gbWFrZSBz
dXJlIHRoYXQgcmUtdXNpbmcgdGhlIG9wdGlvbnMgZG9lc24ndCBzY3JldyB0aGluZ3MgYXJvdW5k
Ci0gICAgICAgICAgICAgICAgcy5qc29ucENhbGxiYWNrID0gb3JpZ2luYWxTZXR0aW5ncy5qc29u
cENhbGxiYWNrOwotCi0gICAgICAgICAgICAgICAgLy8gc2F2ZSB0aGUgY2FsbGJhY2sgbmFtZSBm
b3IgZnV0dXJlIHVzZQotICAgICAgICAgICAgICAgIG9sZENhbGxiYWNrcy5wdXNoKCBjYWxsYmFj
a05hbWUgKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gQ2FsbCBpZiBpdCB3YXMg
YSBmdW5jdGlvbiBhbmQgd2UgaGF2ZSBhIHJlc3BvbnNlCi0gICAgICAgICAgICBpZiAoIHJlc3Bv
bnNlQ29udGFpbmVyICYmIGpRdWVyeS5pc0Z1bmN0aW9uKCBvdmVyd3JpdHRlbiApICkgewotICAg
ICAgICAgICAgICAgIG92ZXJ3cml0dGVuKCByZXNwb25zZUNvbnRhaW5lclsgMCBdICk7Ci0gICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgIHJlc3BvbnNlQ29udGFpbmVyID0gb3ZlcndyaXR0ZW4g
PSB1bmRlZmluZWQ7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIC8vIERlbGVnYXRlIHRvIHNjcmlw
dAotICAgICAgICByZXR1cm4gInNjcmlwdCI7Ci0gICAgfQotfSk7Ci0KLQotCi0KLS8vIGRhdGE6
IHN0cmluZyBvZiBodG1sCi0vLyBjb250ZXh0IChvcHRpb25hbCk6IElmIHNwZWNpZmllZCwgdGhl
IGZyYWdtZW50IHdpbGwgYmUgY3JlYXRlZCBpbiB0aGlzIGNvbnRleHQsIGRlZmF1bHRzIHRvIGRv
Y3VtZW50Ci0vLyBrZWVwU2NyaXB0cyAob3B0aW9uYWwpOiBJZiB0cnVlLCB3aWxsIGluY2x1ZGUg
c2NyaXB0cyBwYXNzZWQgaW4gdGhlIGh0bWwgc3RyaW5nCi1qUXVlcnkucGFyc2VIVE1MID0gZnVu
Y3Rpb24oIGRhdGEsIGNvbnRleHQsIGtlZXBTY3JpcHRzICkgewotICAgIGlmICggIWRhdGEgfHwg
dHlwZW9mIGRhdGEgIT09ICJzdHJpbmciICkgewotICAgICAgICByZXR1cm4gbnVsbDsKLSAgICB9
Ci0gICAgaWYgKCB0eXBlb2YgY29udGV4dCA9PT0gImJvb2xlYW4iICkgewotICAgICAgICBrZWVw
U2NyaXB0cyA9IGNvbnRleHQ7Ci0gICAgICAgIGNvbnRleHQgPSBmYWxzZTsKLSAgICB9Ci0gICAg
Y29udGV4dCA9IGNvbnRleHQgfHwgZG9jdW1lbnQ7Ci0KLSAgICB2YXIgcGFyc2VkID0gcnNpbmds
ZVRhZy5leGVjKCBkYXRhICksCi0gICAgICAgIHNjcmlwdHMgPSAha2VlcFNjcmlwdHMgJiYgW107
Ci0KLSAgICAvLyBTaW5nbGUgdGFnCi0gICAgaWYgKCBwYXJzZWQgKSB7Ci0gICAgICAgIHJldHVy
biBbIGNvbnRleHQuY3JlYXRlRWxlbWVudCggcGFyc2VkWzFdICkgXTsKLSAgICB9Ci0KLSAgICBw
YXJzZWQgPSBqUXVlcnkuYnVpbGRGcmFnbWVudCggWyBkYXRhIF0sIGNvbnRleHQsIHNjcmlwdHMg
KTsKLQotICAgIGlmICggc2NyaXB0cyAmJiBzY3JpcHRzLmxlbmd0aCApIHsKLSAgICAgICAgalF1
ZXJ5KCBzY3JpcHRzICkucmVtb3ZlKCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGpRdWVyeS5tZXJn
ZSggW10sIHBhcnNlZC5jaGlsZE5vZGVzICk7Ci19OwotCi0KLS8vIEtlZXAgYSBjb3B5IG9mIHRo
ZSBvbGQgbG9hZCBtZXRob2QKLXZhciBfbG9hZCA9IGpRdWVyeS5mbi5sb2FkOwotCi0vKioKLSAq
IExvYWQgYSB1cmwgaW50byBhIHBhZ2UKLSAqLwotalF1ZXJ5LmZuLmxvYWQgPSBmdW5jdGlvbigg
dXJsLCBwYXJhbXMsIGNhbGxiYWNrICkgewotICAgIGlmICggdHlwZW9mIHVybCAhPT0gInN0cmlu
ZyIgJiYgX2xvYWQgKSB7Ci0gICAgICAgIHJldHVybiBfbG9hZC5hcHBseSggdGhpcywgYXJndW1l
bnRzICk7Ci0gICAgfQotCi0gICAgdmFyIHNlbGVjdG9yLCB0eXBlLCByZXNwb25zZSwKLSAgICAg
ICAgc2VsZiA9IHRoaXMsCi0gICAgICAgIG9mZiA9IHVybC5pbmRleE9mKCIgIik7Ci0KLSAgICBp
ZiAoIG9mZiA+PSAwICkgewotICAgICAgICBzZWxlY3RvciA9IHVybC5zbGljZSggb2ZmICk7Ci0g
ICAgICAgIHVybCA9IHVybC5zbGljZSggMCwgb2ZmICk7Ci0gICAgfQotCi0gICAgLy8gSWYgaXQn
cyBhIGZ1bmN0aW9uCi0gICAgaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggcGFyYW1zICkgKSB7Ci0K
LSAgICAgICAgLy8gV2UgYXNzdW1lIHRoYXQgaXQncyB0aGUgY2FsbGJhY2sKLSAgICAgICAgY2Fs
bGJhY2sgPSBwYXJhbXM7Ci0gICAgICAgIHBhcmFtcyA9IHVuZGVmaW5lZDsKLQotICAgIC8vIE90
aGVyd2lzZSwgYnVpbGQgYSBwYXJhbSBzdHJpbmcKLSAgICB9IGVsc2UgaWYgKCBwYXJhbXMgJiYg
dHlwZW9mIHBhcmFtcyA9PT0gIm9iamVjdCIgKSB7Ci0gICAgICAgIHR5cGUgPSAiUE9TVCI7Ci0g
ICAgfQotCi0gICAgLy8gSWYgd2UgaGF2ZSBlbGVtZW50cyB0byBtb2RpZnksIG1ha2UgdGhlIHJl
cXVlc3QKLSAgICBpZiAoIHNlbGYubGVuZ3RoID4gMCApIHsKLSAgICAgICAgalF1ZXJ5LmFqYXgo
ewotICAgICAgICAgICAgdXJsOiB1cmwsCi0KLSAgICAgICAgICAgIC8vIGlmICJ0eXBlIiB2YXJp
YWJsZSBpcyB1bmRlZmluZWQsIHRoZW4gIkdFVCIgbWV0aG9kIHdpbGwgYmUgdXNlZAotICAgICAg
ICAgICAgdHlwZTogdHlwZSwKLSAgICAgICAgICAgIGRhdGFUeXBlOiAiaHRtbCIsCi0gICAgICAg
ICAgICBkYXRhOiBwYXJhbXMKLSAgICAgICAgfSkuZG9uZShmdW5jdGlvbiggcmVzcG9uc2VUZXh0
ICkgewotCi0gICAgICAgICAgICAvLyBTYXZlIHJlc3BvbnNlIGZvciB1c2UgaW4gY29tcGxldGUg
Y2FsbGJhY2sKLSAgICAgICAgICAgIHJlc3BvbnNlID0gYXJndW1lbnRzOwotCi0gICAgICAgICAg
ICBzZWxmLmh0bWwoIHNlbGVjdG9yID8KLQotICAgICAgICAgICAgICAgIC8vIElmIGEgc2VsZWN0
b3Igd2FzIHNwZWNpZmllZCwgbG9jYXRlIHRoZSByaWdodCBlbGVtZW50cyBpbiBhIGR1bW15IGRp
dgotICAgICAgICAgICAgICAgIC8vIEV4Y2x1ZGUgc2NyaXB0cyB0byBhdm9pZCBJRSAnUGVybWlz
c2lvbiBEZW5pZWQnIGVycm9ycwotICAgICAgICAgICAgICAgIGpRdWVyeSgiPGRpdj4iKS5hcHBl
bmQoIGpRdWVyeS5wYXJzZUhUTUwoIHJlc3BvbnNlVGV4dCApICkuZmluZCggc2VsZWN0b3IgKSA6
Ci0KLSAgICAgICAgICAgICAgICAvLyBPdGhlcndpc2UgdXNlIHRoZSBmdWxsIHJlc3VsdAotICAg
ICAgICAgICAgICAgIHJlc3BvbnNlVGV4dCApOwotCi0gICAgICAgIH0pLmNvbXBsZXRlKCBjYWxs
YmFjayAmJiBmdW5jdGlvbigganFYSFIsIHN0YXR1cyApIHsKLSAgICAgICAgICAgIHNlbGYuZWFj
aCggY2FsbGJhY2ssIHJlc3BvbnNlIHx8IFsganFYSFIucmVzcG9uc2VUZXh0LCBzdGF0dXMsIGpx
WEhSIF0gKTsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRoaXM7Ci19OwotCi0K
LQotCi1qUXVlcnkuZXhwci5maWx0ZXJzLmFuaW1hdGVkID0gZnVuY3Rpb24oIGVsZW0gKSB7Ci0g
ICAgcmV0dXJuIGpRdWVyeS5ncmVwKGpRdWVyeS50aW1lcnMsIGZ1bmN0aW9uKCBmbiApIHsKLSAg
ICAgICAgcmV0dXJuIGVsZW0gPT09IGZuLmVsZW07Ci0gICAgfSkubGVuZ3RoOwotfTsKLQotCi0K
LQotdmFyIGRvY0VsZW0gPSB3aW5kb3cuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50OwotCi0vKioK
LSAqIEdldHMgYSB3aW5kb3cgZnJvbSBhbiBlbGVtZW50Ci0gKi8KLWZ1bmN0aW9uIGdldFdpbmRv
dyggZWxlbSApIHsKLSAgICByZXR1cm4galF1ZXJ5LmlzV2luZG93KCBlbGVtICkgPyBlbGVtIDog
ZWxlbS5ub2RlVHlwZSA9PT0gOSAmJiBlbGVtLmRlZmF1bHRWaWV3OwotfQotCi1qUXVlcnkub2Zm
c2V0ID0gewotICAgIHNldE9mZnNldDogZnVuY3Rpb24oIGVsZW0sIG9wdGlvbnMsIGkgKSB7Ci0g
ICAgICAgIHZhciBjdXJQb3NpdGlvbiwgY3VyTGVmdCwgY3VyQ1NTVG9wLCBjdXJUb3AsIGN1ck9m
ZnNldCwgY3VyQ1NTTGVmdCwgY2FsY3VsYXRlUG9zaXRpb24sCi0gICAgICAgICAgICBwb3NpdGlv
biA9IGpRdWVyeS5jc3MoIGVsZW0sICJwb3NpdGlvbiIgKSwKLSAgICAgICAgICAgIGN1ckVsZW0g
PSBqUXVlcnkoIGVsZW0gKSwKLSAgICAgICAgICAgIHByb3BzID0ge307Ci0KLSAgICAgICAgLy8g
U2V0IHBvc2l0aW9uIGZpcnN0LCBpbi1jYXNlIHRvcC9sZWZ0IGFyZSBzZXQgZXZlbiBvbiBzdGF0
aWMgZWxlbQotICAgICAgICBpZiAoIHBvc2l0aW9uID09PSAic3RhdGljIiApIHsKLSAgICAgICAg
ICAgIGVsZW0uc3R5bGUucG9zaXRpb24gPSAicmVsYXRpdmUiOwotICAgICAgICB9Ci0KLSAgICAg
ICAgY3VyT2Zmc2V0ID0gY3VyRWxlbS5vZmZzZXQoKTsKLSAgICAgICAgY3VyQ1NTVG9wID0galF1
ZXJ5LmNzcyggZWxlbSwgInRvcCIgKTsKLSAgICAgICAgY3VyQ1NTTGVmdCA9IGpRdWVyeS5jc3Mo
IGVsZW0sICJsZWZ0IiApOwotICAgICAgICBjYWxjdWxhdGVQb3NpdGlvbiA9ICggcG9zaXRpb24g
PT09ICJhYnNvbHV0ZSIgfHwgcG9zaXRpb24gPT09ICJmaXhlZCIgKSAmJgotICAgICAgICAgICAg
KCBjdXJDU1NUb3AgKyBjdXJDU1NMZWZ0ICkuaW5kZXhPZigiYXV0byIpID4gLTE7Ci0KLSAgICAg
ICAgLy8gTmVlZCB0byBiZSBhYmxlIHRvIGNhbGN1bGF0ZSBwb3NpdGlvbiBpZiBlaXRoZXIgdG9w
IG9yIGxlZnQgaXMgYXV0byBhbmQgcG9zaXRpb24gaXMgZWl0aGVyIGFic29sdXRlIG9yIGZpeGVk
Ci0gICAgICAgIGlmICggY2FsY3VsYXRlUG9zaXRpb24gKSB7Ci0gICAgICAgICAgICBjdXJQb3Np
dGlvbiA9IGN1ckVsZW0ucG9zaXRpb24oKTsKLSAgICAgICAgICAgIGN1clRvcCA9IGN1clBvc2l0
aW9uLnRvcDsKLSAgICAgICAgICAgIGN1ckxlZnQgPSBjdXJQb3NpdGlvbi5sZWZ0OwotCi0gICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjdXJUb3AgPSBwYXJzZUZsb2F0KCBjdXJDU1NUb3Ag
KSB8fCAwOwotICAgICAgICAgICAgY3VyTGVmdCA9IHBhcnNlRmxvYXQoIGN1ckNTU0xlZnQgKSB8
fCAwOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggb3B0aW9u
cyApICkgewotICAgICAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnMuY2FsbCggZWxlbSwgaSwgY3Vy
T2Zmc2V0ICk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIG9wdGlvbnMudG9wICE9IG51bGwg
KSB7Ci0gICAgICAgICAgICBwcm9wcy50b3AgPSAoIG9wdGlvbnMudG9wIC0gY3VyT2Zmc2V0LnRv
cCApICsgY3VyVG9wOwotICAgICAgICB9Ci0gICAgICAgIGlmICggb3B0aW9ucy5sZWZ0ICE9IG51
bGwgKSB7Ci0gICAgICAgICAgICBwcm9wcy5sZWZ0ID0gKCBvcHRpb25zLmxlZnQgLSBjdXJPZmZz
ZXQubGVmdCApICsgY3VyTGVmdDsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICggInVzaW5nIiBp
biBvcHRpb25zICkgewotICAgICAgICAgICAgb3B0aW9ucy51c2luZy5jYWxsKCBlbGVtLCBwcm9w
cyApOwotCi0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjdXJFbGVtLmNzcyggcHJvcHMg
KTsKLSAgICAgICAgfQotICAgIH0KLX07Ci0KLWpRdWVyeS5mbi5leHRlbmQoewotICAgIG9mZnNl
dDogZnVuY3Rpb24oIG9wdGlvbnMgKSB7Ci0gICAgICAgIGlmICggYXJndW1lbnRzLmxlbmd0aCAp
IHsKLSAgICAgICAgICAgIHJldHVybiBvcHRpb25zID09PSB1bmRlZmluZWQgPwotICAgICAgICAg
ICAgICAgIHRoaXMgOgotICAgICAgICAgICAgICAgIHRoaXMuZWFjaChmdW5jdGlvbiggaSApIHsK
LSAgICAgICAgICAgICAgICAgICAgalF1ZXJ5Lm9mZnNldC5zZXRPZmZzZXQoIHRoaXMsIG9wdGlv
bnMsIGkgKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciBk
b2NFbGVtLCB3aW4sCi0gICAgICAgICAgICBlbGVtID0gdGhpc1sgMCBdLAotICAgICAgICAgICAg
Ym94ID0geyB0b3A6IDAsIGxlZnQ6IDAgfSwKLSAgICAgICAgICAgIGRvYyA9IGVsZW0gJiYgZWxl
bS5vd25lckRvY3VtZW50OwotCi0gICAgICAgIGlmICggIWRvYyApIHsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGRvY0VsZW0gPSBkb2MuZG9jdW1lbnRFbGVtZW50
OwotCi0gICAgICAgIC8vIE1ha2Ugc3VyZSBpdCdzIG5vdCBhIGRpc2Nvbm5lY3RlZCBET00gbm9k
ZQotICAgICAgICBpZiAoICFqUXVlcnkuY29udGFpbnMoIGRvY0VsZW0sIGVsZW0gKSApIHsKLSAg
ICAgICAgICAgIHJldHVybiBib3g7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBJZiB3ZSBkb24n
dCBoYXZlIGdCQ1IsIGp1c3QgdXNlIDAsMCByYXRoZXIgdGhhbiBlcnJvcgotICAgICAgICAvLyBC
bGFja0JlcnJ5IDUsIGlPUyAzIChvcmlnaW5hbCBpUGhvbmUpCi0gICAgICAgIGlmICggdHlwZW9m
IGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0ICE9PSBzdHJ1bmRlZmluZWQgKSB7Ci0gICAgICAg
ICAgICBib3ggPSBlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwotICAgICAgICB9Ci0gICAg
ICAgIHdpbiA9IGdldFdpbmRvdyggZG9jICk7Ci0gICAgICAgIHJldHVybiB7Ci0gICAgICAgICAg
ICB0b3A6IGJveC50b3AgKyB3aW4ucGFnZVlPZmZzZXQgLSBkb2NFbGVtLmNsaWVudFRvcCwKLSAg
ICAgICAgICAgIGxlZnQ6IGJveC5sZWZ0ICsgd2luLnBhZ2VYT2Zmc2V0IC0gZG9jRWxlbS5jbGll
bnRMZWZ0Ci0gICAgICAgIH07Ci0gICAgfSwKLQotICAgIHBvc2l0aW9uOiBmdW5jdGlvbigpIHsK
LSAgICAgICAgaWYgKCAhdGhpc1sgMCBdICkgewotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0KLSAgICAgICAgdmFyIG9mZnNldFBhcmVudCwgb2Zmc2V0LAotICAgICAgICAgICAgZWxl
bSA9IHRoaXNbIDAgXSwKLSAgICAgICAgICAgIHBhcmVudE9mZnNldCA9IHsgdG9wOiAwLCBsZWZ0
OiAwIH07Ci0KLSAgICAgICAgLy8gRml4ZWQgZWxlbWVudHMgYXJlIG9mZnNldCBmcm9tIHdpbmRv
dyAocGFyZW50T2Zmc2V0ID0ge3RvcDowLCBsZWZ0OiAwfSwgYmVjYXVzZSBpdCBpcyBpdHMgb25s
eSBvZmZzZXQgcGFyZW50Ci0gICAgICAgIGlmICggalF1ZXJ5LmNzcyggZWxlbSwgInBvc2l0aW9u
IiApID09PSAiZml4ZWQiICkgewotICAgICAgICAgICAgLy8gV2UgYXNzdW1lIHRoYXQgZ2V0Qm91
bmRpbmdDbGllbnRSZWN0IGlzIGF2YWlsYWJsZSB3aGVuIGNvbXB1dGVkIHBvc2l0aW9uIGlzIGZp
eGVkCi0gICAgICAgICAgICBvZmZzZXQgPSBlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwot
Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBHZXQgKnJlYWwqIG9mZnNldFBhcmVu
dAotICAgICAgICAgICAgb2Zmc2V0UGFyZW50ID0gdGhpcy5vZmZzZXRQYXJlbnQoKTsKLQotICAg
ICAgICAgICAgLy8gR2V0IGNvcnJlY3Qgb2Zmc2V0cwotICAgICAgICAgICAgb2Zmc2V0ID0gdGhp
cy5vZmZzZXQoKTsKLSAgICAgICAgICAgIGlmICggIWpRdWVyeS5ub2RlTmFtZSggb2Zmc2V0UGFy
ZW50WyAwIF0sICJodG1sIiApICkgewotICAgICAgICAgICAgICAgIHBhcmVudE9mZnNldCA9IG9m
ZnNldFBhcmVudC5vZmZzZXQoKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gQWRk
IG9mZnNldFBhcmVudCBib3JkZXJzCi0gICAgICAgICAgICBwYXJlbnRPZmZzZXQudG9wICs9IGpR
dWVyeS5jc3MoIG9mZnNldFBhcmVudFsgMCBdLCAiYm9yZGVyVG9wV2lkdGgiLCB0cnVlICk7Ci0g
ICAgICAgICAgICBwYXJlbnRPZmZzZXQubGVmdCArPSBqUXVlcnkuY3NzKCBvZmZzZXRQYXJlbnRb
IDAgXSwgImJvcmRlckxlZnRXaWR0aCIsIHRydWUgKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8v
IFN1YnRyYWN0IHBhcmVudCBvZmZzZXRzIGFuZCBlbGVtZW50IG1hcmdpbnMKLSAgICAgICAgcmV0
dXJuIHsKLSAgICAgICAgICAgIHRvcDogb2Zmc2V0LnRvcCAtIHBhcmVudE9mZnNldC50b3AgLSBq
UXVlcnkuY3NzKCBlbGVtLCAibWFyZ2luVG9wIiwgdHJ1ZSApLAotICAgICAgICAgICAgbGVmdDog
b2Zmc2V0LmxlZnQgLSBwYXJlbnRPZmZzZXQubGVmdCAtIGpRdWVyeS5jc3MoIGVsZW0sICJtYXJn
aW5MZWZ0IiwgdHJ1ZSApCi0gICAgICAgIH07Ci0gICAgfSwKLQotICAgIG9mZnNldFBhcmVudDog
ZnVuY3Rpb24oKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLm1hcChmdW5jdGlvbigpIHsKLSAgICAg
ICAgICAgIHZhciBvZmZzZXRQYXJlbnQgPSB0aGlzLm9mZnNldFBhcmVudCB8fCBkb2NFbGVtOwot
Ci0gICAgICAgICAgICB3aGlsZSAoIG9mZnNldFBhcmVudCAmJiAoICFqUXVlcnkubm9kZU5hbWUo
IG9mZnNldFBhcmVudCwgImh0bWwiICkgJiYgalF1ZXJ5LmNzcyggb2Zmc2V0UGFyZW50LCAicG9z
aXRpb24iICkgPT09ICJzdGF0aWMiICkgKSB7Ci0gICAgICAgICAgICAgICAgb2Zmc2V0UGFyZW50
ID0gb2Zmc2V0UGFyZW50Lm9mZnNldFBhcmVudDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgcmV0dXJuIG9mZnNldFBhcmVudCB8fCBkb2NFbGVtOwotICAgICAgICB9KTsKLSAgICB9Ci19
KTsKLQotLy8gQ3JlYXRlIHNjcm9sbExlZnQgYW5kIHNjcm9sbFRvcCBtZXRob2RzCi1qUXVlcnku
ZWFjaCggeyBzY3JvbGxMZWZ0OiAicGFnZVhPZmZzZXQiLCBzY3JvbGxUb3A6ICJwYWdlWU9mZnNl
dCIgfSwgZnVuY3Rpb24oIG1ldGhvZCwgcHJvcCApIHsKLSAgICB2YXIgdG9wID0gInBhZ2VZT2Zm
c2V0IiA9PT0gcHJvcDsKLQotICAgIGpRdWVyeS5mblsgbWV0aG9kIF0gPSBmdW5jdGlvbiggdmFs
ICkgewotICAgICAgICByZXR1cm4gYWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggZWxlbSwgbWV0aG9k
LCB2YWwgKSB7Ci0gICAgICAgICAgICB2YXIgd2luID0gZ2V0V2luZG93KCBlbGVtICk7Ci0KLSAg
ICAgICAgICAgIGlmICggdmFsID09PSB1bmRlZmluZWQgKSB7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIHdpbiA/IHdpblsgcHJvcCBdIDogZWxlbVsgbWV0aG9kIF07Ci0gICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgIGlmICggd2luICkgewotICAgICAgICAgICAgICAgIHdpbi5zY3JvbGxUbygK
LSAgICAgICAgICAgICAgICAgICAgIXRvcCA/IHZhbCA6IHdpbmRvdy5wYWdlWE9mZnNldCwKLSAg
ICAgICAgICAgICAgICAgICAgdG9wID8gdmFsIDogd2luZG93LnBhZ2VZT2Zmc2V0Ci0gICAgICAg
ICAgICAgICAgKTsKLQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBlbGVt
WyBtZXRob2QgXSA9IHZhbDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSwgbWV0aG9kLCB2YWws
IGFyZ3VtZW50cy5sZW5ndGgsIG51bGwgKTsKLSAgICB9OwotfSk7Ci0KLS8vIEFkZCB0aGUgdG9w
L2xlZnQgY3NzSG9va3MgdXNpbmcgalF1ZXJ5LmZuLnBvc2l0aW9uCi0vLyBXZWJraXQgYnVnOiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjkwODQKLS8vIGdldENvbXB1
dGVkU3R5bGUgcmV0dXJucyBwZXJjZW50IHdoZW4gc3BlY2lmaWVkIGZvciB0b3AvbGVmdC9ib3R0
b20vcmlnaHQKLS8vIHJhdGhlciB0aGFuIG1ha2UgdGhlIGNzcyBtb2R1bGUgZGVwZW5kIG9uIHRo
ZSBvZmZzZXQgbW9kdWxlLCB3ZSBqdXN0IGNoZWNrIGZvciBpdCBoZXJlCi1qUXVlcnkuZWFjaCgg
WyAidG9wIiwgImxlZnQiIF0sIGZ1bmN0aW9uKCBpLCBwcm9wICkgewotICAgIGpRdWVyeS5jc3NI
b29rc1sgcHJvcCBdID0gYWRkR2V0SG9va0lmKCBzdXBwb3J0LnBpeGVsUG9zaXRpb24sCi0gICAg
ICAgIGZ1bmN0aW9uKCBlbGVtLCBjb21wdXRlZCApIHsKLSAgICAgICAgICAgIGlmICggY29tcHV0
ZWQgKSB7Ci0gICAgICAgICAgICAgICAgY29tcHV0ZWQgPSBjdXJDU1MoIGVsZW0sIHByb3AgKTsK
LSAgICAgICAgICAgICAgICAvLyBpZiBjdXJDU1MgcmV0dXJucyBwZXJjZW50YWdlLCBmYWxsYmFj
ayB0byBvZmZzZXQKLSAgICAgICAgICAgICAgICByZXR1cm4gcm51bW5vbnB4LnRlc3QoIGNvbXB1
dGVkICkgPwotICAgICAgICAgICAgICAgICAgICBqUXVlcnkoIGVsZW0gKS5wb3NpdGlvbigpWyBw
cm9wIF0gKyAicHgiIDoKLSAgICAgICAgICAgICAgICAgICAgY29tcHV0ZWQ7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICApOwotfSk7Ci0KLQotLy8gQ3JlYXRlIGlubmVySGVpZ2h0LCBp
bm5lcldpZHRoLCBoZWlnaHQsIHdpZHRoLCBvdXRlckhlaWdodCBhbmQgb3V0ZXJXaWR0aCBtZXRo
b2RzCi1qUXVlcnkuZWFjaCggeyBIZWlnaHQ6ICJoZWlnaHQiLCBXaWR0aDogIndpZHRoIiB9LCBm
dW5jdGlvbiggbmFtZSwgdHlwZSApIHsKLSAgICBqUXVlcnkuZWFjaCggeyBwYWRkaW5nOiAiaW5u
ZXIiICsgbmFtZSwgY29udGVudDogdHlwZSwgIiI6ICJvdXRlciIgKyBuYW1lIH0sIGZ1bmN0aW9u
KCBkZWZhdWx0RXh0cmEsIGZ1bmNOYW1lICkgewotICAgICAgICAvLyBtYXJnaW4gaXMgb25seSBm
b3Igb3V0ZXJIZWlnaHQsIG91dGVyV2lkdGgKLSAgICAgICAgalF1ZXJ5LmZuWyBmdW5jTmFtZSBd
ID0gZnVuY3Rpb24oIG1hcmdpbiwgdmFsdWUgKSB7Ci0gICAgICAgICAgICB2YXIgY2hhaW5hYmxl
ID0gYXJndW1lbnRzLmxlbmd0aCAmJiAoIGRlZmF1bHRFeHRyYSB8fCB0eXBlb2YgbWFyZ2luICE9
PSAiYm9vbGVhbiIgKSwKLSAgICAgICAgICAgICAgICBleHRyYSA9IGRlZmF1bHRFeHRyYSB8fCAo
IG1hcmdpbiA9PT0gdHJ1ZSB8fCB2YWx1ZSA9PT0gdHJ1ZSA/ICJtYXJnaW4iIDogImJvcmRlciIg
KTsKLQotICAgICAgICAgICAgcmV0dXJuIGFjY2VzcyggdGhpcywgZnVuY3Rpb24oIGVsZW0sIHR5
cGUsIHZhbHVlICkgewotICAgICAgICAgICAgICAgIHZhciBkb2M7Ci0KLSAgICAgICAgICAgICAg
ICBpZiAoIGpRdWVyeS5pc1dpbmRvdyggZWxlbSApICkgewotICAgICAgICAgICAgICAgICAgICAv
LyBBcyBvZiA1LzgvMjAxMiB0aGlzIHdpbGwgeWllbGQgaW5jb3JyZWN0IHJlc3VsdHMgZm9yIE1v
YmlsZSBTYWZhcmksIGJ1dCB0aGVyZQotICAgICAgICAgICAgICAgICAgICAvLyBpc24ndCBhIHdo
b2xlIGxvdCB3ZSBjYW4gZG8uIFNlZSBwdWxsIHJlcXVlc3QgYXQgdGhpcyBVUkwgZm9yIGRpc2N1
c3Npb246Ci0gICAgICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9qcXVlcnkv
anF1ZXJ5L3B1bGwvNzY0Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlbGVtLmRvY3VtZW50
LmRvY3VtZW50RWxlbWVudFsgImNsaWVudCIgKyBuYW1lIF07Ci0gICAgICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICAgICAgLy8gR2V0IGRvY3VtZW50IHdpZHRoIG9yIGhlaWdodAotICAgICAg
ICAgICAgICAgIGlmICggZWxlbS5ub2RlVHlwZSA9PT0gOSApIHsKLSAgICAgICAgICAgICAgICAg
ICAgZG9jID0gZWxlbS5kb2N1bWVudEVsZW1lbnQ7Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8g
RWl0aGVyIHNjcm9sbFtXaWR0aC9IZWlnaHRdIG9yIG9mZnNldFtXaWR0aC9IZWlnaHRdIG9yIGNs
aWVudFtXaWR0aC9IZWlnaHRdLAotICAgICAgICAgICAgICAgICAgICAvLyB3aGljaGV2ZXIgaXMg
Z3JlYXRlc3QKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE1hdGgubWF4KAotICAgICAgICAg
ICAgICAgICAgICAgICAgZWxlbS5ib2R5WyAic2Nyb2xsIiArIG5hbWUgXSwgZG9jWyAic2Nyb2xs
IiArIG5hbWUgXSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0uYm9keVsgIm9mZnNldCIg
KyBuYW1lIF0sIGRvY1sgIm9mZnNldCIgKyBuYW1lIF0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICBkb2NbICJjbGllbnQiICsgbmFtZSBdCi0gICAgICAgICAgICAgICAgICAgICk7Ci0gICAgICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQg
PwotICAgICAgICAgICAgICAgICAgICAvLyBHZXQgd2lkdGggb3IgaGVpZ2h0IG9uIHRoZSBlbGVt
ZW50LCByZXF1ZXN0aW5nIGJ1dCBub3QgZm9yY2luZyBwYXJzZUZsb2F0Ci0gICAgICAgICAgICAg
ICAgICAgIGpRdWVyeS5jc3MoIGVsZW0sIHR5cGUsIGV4dHJhICkgOgotCi0gICAgICAgICAgICAg
ICAgICAgIC8vIFNldCB3aWR0aCBvciBoZWlnaHQgb24gdGhlIGVsZW1lbnQKLSAgICAgICAgICAg
ICAgICAgICAgalF1ZXJ5LnN0eWxlKCBlbGVtLCB0eXBlLCB2YWx1ZSwgZXh0cmEgKTsKLSAgICAg
ICAgICAgIH0sIHR5cGUsIGNoYWluYWJsZSA/IG1hcmdpbiA6IHVuZGVmaW5lZCwgY2hhaW5hYmxl
LCBudWxsICk7Ci0gICAgICAgIH07Ci0gICAgfSk7Ci19KTsKLQotCi0vLyBUaGUgbnVtYmVyIG9m
IGVsZW1lbnRzIGNvbnRhaW5lZCBpbiB0aGUgbWF0Y2hlZCBlbGVtZW50IHNldAotalF1ZXJ5LmZu
LnNpemUgPSBmdW5jdGlvbigpIHsKLSAgICByZXR1cm4gdGhpcy5sZW5ndGg7Ci19OwotCi1qUXVl
cnkuZm4uYW5kU2VsZiA9IGpRdWVyeS5mbi5hZGRCYWNrOwotCi0KLQotCi0vLyBSZWdpc3RlciBh
cyBhIG5hbWVkIEFNRCBtb2R1bGUsIHNpbmNlIGpRdWVyeSBjYW4gYmUgY29uY2F0ZW5hdGVkIHdp
dGggb3RoZXIKLS8vIGZpbGVzIHRoYXQgbWF5IHVzZSBkZWZpbmUsIGJ1dCBub3QgdmlhIGEgcHJv
cGVyIGNvbmNhdGVuYXRpb24gc2NyaXB0IHRoYXQKLS8vIHVuZGVyc3RhbmRzIGFub255bW91cyBB
TUQgbW9kdWxlcy4gQSBuYW1lZCBBTUQgaXMgc2FmZXN0IGFuZCBtb3N0IHJvYnVzdAotLy8gd2F5
IHRvIHJlZ2lzdGVyLiBMb3dlcmNhc2UganF1ZXJ5IGlzIHVzZWQgYmVjYXVzZSBBTUQgbW9kdWxl
IG5hbWVzIGFyZQotLy8gZGVyaXZlZCBmcm9tIGZpbGUgbmFtZXMsIGFuZCBqUXVlcnkgaXMgbm9y
bWFsbHkgZGVsaXZlcmVkIGluIGEgbG93ZXJjYXNlCi0vLyBmaWxlIG5hbWUuIERvIHRoaXMgYWZ0
ZXIgY3JlYXRpbmcgdGhlIGdsb2JhbCBzbyB0aGF0IGlmIGFuIEFNRCBtb2R1bGUgd2FudHMKLS8v
IHRvIGNhbGwgbm9Db25mbGljdCB0byBoaWRlIHRoaXMgdmVyc2lvbiBvZiBqUXVlcnksIGl0IHdp
bGwgd29yay4KLWlmICggdHlwZW9mIGRlZmluZSA9PT0gImZ1bmN0aW9uIiAmJiBkZWZpbmUuYW1k
ICkgewotICAgIGRlZmluZSggImpxdWVyeSIsIFtdLCBmdW5jdGlvbigpIHsKLSAgICAgICAgcmV0
dXJuIGpRdWVyeTsKLSAgICB9KTsKLX0KLQotCi0KLQotdmFyCi0gICAgLy8gTWFwIG92ZXIgalF1
ZXJ5IGluIGNhc2Ugb2Ygb3ZlcndyaXRlCi0gICAgX2pRdWVyeSA9IHdpbmRvdy5qUXVlcnksCi0K
LSAgICAvLyBNYXAgb3ZlciB0aGUgJCBpbiBjYXNlIG9mIG92ZXJ3cml0ZQotICAgIF8kID0gd2lu
ZG93LiQ7Ci0KLWpRdWVyeS5ub0NvbmZsaWN0ID0gZnVuY3Rpb24oIGRlZXAgKSB7Ci0gICAgaWYg
KCB3aW5kb3cuJCA9PT0galF1ZXJ5ICkgewotICAgICAgICB3aW5kb3cuJCA9IF8kOwotICAgIH0K
LQotICAgIGlmICggZGVlcCAmJiB3aW5kb3cualF1ZXJ5ID09PSBqUXVlcnkgKSB7Ci0gICAgICAg
IHdpbmRvdy5qUXVlcnkgPSBfalF1ZXJ5OwotICAgIH0KLQotICAgIHJldHVybiBqUXVlcnk7Ci19
OwotCi0vLyBFeHBvc2UgalF1ZXJ5IGFuZCAkIGlkZW50aWZpZXJzLCBldmVuIGluCi0vLyBBTUQg
KCM3MTAyI2NvbW1lbnQ6MTAsIGh0dHBzOi8vZ2l0aHViLmNvbS9qcXVlcnkvanF1ZXJ5L3B1bGwv
NTU3KQotLy8gYW5kIENvbW1vbkpTIGZvciBicm93c2VyIGVtdWxhdG9ycyAoIzEzNTY2KQotaWYg
KCB0eXBlb2Ygbm9HbG9iYWwgPT09IHN0cnVuZGVmaW5lZCApIHsKLSAgICB3aW5kb3cualF1ZXJ5
ID0gd2luZG93LiQgPSBqUXVlcnk7Ci19Ci0KLQotCi0KLXJldHVybiBqUXVlcnk7Ci0KLX0pKTsK
ZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvYm93ZXJfY29tcG9uZW50cy90b2RvbXZj
LWNvbW1vbi9iYXNlLmNzcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvYm93ZXJfY29tcG9uZW50cy90
b2RvbXZjLWNvbW1vbi9iYXNlLmNzcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzQ1
YmVmODMxODljOTE1ZWU3OGVjYTg0N2Y5MDhjNmQwMmQ1OGE0MC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL2Jvd2VyX2Nv
bXBvbmVudHMvdG9kb212Yy1jb21tb24vYmFzZS5jc3MKKysrIC9kZXYvbnVsbApAQCAtMSw1NTUg
KzAsMCBAQAotaHRtbCwKLWJvZHkgewotICAgIG1hcmdpbjogMDsKLSAgICBwYWRkaW5nOiAwOwot
fQotCi1idXR0b24gewotICAgIG1hcmdpbjogMDsKLSAgICBwYWRkaW5nOiAwOwotICAgIGJvcmRl
cjogMDsKLSAgICBiYWNrZ3JvdW5kOiBub25lOwotICAgIGZvbnQtc2l6ZTogMTAwJTsKLSAgICB2
ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7Ci0gICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7Ci0gICAg
Y29sb3I6IGluaGVyaXQ7Ci0gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwotICAgIC1tcy1h
cHBlYXJhbmNlOiBub25lOwotICAgIC1vLWFwcGVhcmFuY2U6IG5vbmU7Ci0gICAgYXBwZWFyYW5j
ZTogbm9uZTsKLX0KLQotYm9keSB7Ci0gICAgZm9udDogMTRweCAnSGVsdmV0aWNhIE5ldWUnLCBI
ZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOwotICAgIGxpbmUtaGVpZ2h0OiAxLjRlbTsKLSAg
ICBiYWNrZ3JvdW5kOiAjZWFlYWVhIHVybCgnYmcucG5nJyk7Ci0gICAgY29sb3I6ICM0ZDRkNGQ7
Ci0gICAgd2lkdGg6IDU1MHB4OwotICAgIG1hcmdpbjogMCBhdXRvOwotICAgIC13ZWJraXQtZm9u
dC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwotICAgIC1tb3otZm9udC1zbW9vdGhpbmc6IGFudGlh
bGlhc2VkOwotICAgIC1tcy1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7Ci0gICAgLW8tZm9u
dC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwotICAgIGZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNl
ZDsKLX0KLQotYnV0dG9uLAotaW5wdXRbdHlwZT0iY2hlY2tib3giXSB7Ci0gIG91dGxpbmU6IG5v
bmU7Ci19Ci0KLSN0b2RvYXBwIHsKLSAgICBiYWNrZ3JvdW5kOiAjZmZmOwotICAgIGJhY2tncm91
bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTsKLSAgICBtYXJnaW46IDEzMHB4IDAgNDBweCAw
OwotICAgIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7Ci0gICAgcG9zaXRpb246IHJlbGF0aXZlOwot
ICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDJweDsKLSAgICBib3JkZXItdG9wLXJpZ2h0LXJh
ZGl1czogMnB4OwotICAgIGJveC1zaGFkb3c6IDAgMnB4IDZweCAwIHJnYmEoMCwgMCwgMCwgMC4y
KSwKLSAgICAgICAgICAgICAgICAwIDI1cHggNTBweCAwIHJnYmEoMCwgMCwgMCwgMC4xNSk7Ci19
Ci0KLSN0b2RvYXBwOmJlZm9yZSB7Ci0gICAgY29udGVudDogJyc7Ci0gICAgYm9yZGVyLWxlZnQ6
IDFweCBzb2xpZCAjZjVkNmQ2OwotICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNmNWQ2ZDY7
Ci0gICAgd2lkdGg6IDJweDsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgdG9wOiAwOwot
ICAgIGxlZnQ6IDQwcHg7Ci0gICAgaGVpZ2h0OiAxMDAlOwotfQotCi0jdG9kb2FwcCBpbnB1dDo6
LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7Ci0gICAgZm9udC1zdHlsZTogaXRhbGljOwotfQot
Ci0jdG9kb2FwcCBpbnB1dDo6LW1vei1wbGFjZWhvbGRlciB7Ci0gICAgZm9udC1zdHlsZTogaXRh
bGljOwotICAgIGNvbG9yOiAjYTlhOWE5OwotfQotCi0jdG9kb2FwcCBoMSB7Ci0gICAgcG9zaXRp
b246IGFic29sdXRlOwotICAgIHRvcDogLTEyMHB4OwotICAgIHdpZHRoOiAxMDAlOwotICAgIGZv
bnQtc2l6ZTogNzBweDsKLSAgICBmb250LXdlaWdodDogYm9sZDsKLSAgICB0ZXh0LWFsaWduOiBj
ZW50ZXI7Ci0gICAgY29sb3I6ICNiM2IzYjM7Ci0gICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1
NSwgMC4zKTsKLSAgICB0ZXh0LXNoYWRvdzogLTFweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKTsK
LSAgICAtd2Via2l0LXRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7Ci0gICAgLW1v
ei10ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5OwotICAgIC1tcy10ZXh0LXJlbmRl
cmluZzogb3B0aW1pemVMZWdpYmlsaXR5OwotICAgIC1vLXRleHQtcmVuZGVyaW5nOiBvcHRpbWl6
ZUxlZ2liaWxpdHk7Ci0gICAgdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTsKLX0K
LQotI2hlYWRlciB7Ci0gICAgcGFkZGluZy10b3A6IDE1cHg7Ci0gICAgYm9yZGVyLXJhZGl1czog
aW5oZXJpdDsKLX0KLQotI2hlYWRlcjpiZWZvcmUgewotICAgIGNvbnRlbnQ6ICcnOwotICAgIHBv
c2l0aW9uOiBhYnNvbHV0ZTsKLSAgICB0b3A6IDA7Ci0gICAgcmlnaHQ6IDA7Ci0gICAgbGVmdDog
MDsKLSAgICBoZWlnaHQ6IDE1cHg7Ci0gICAgei1pbmRleDogMjsKLSAgICBib3JkZXItYm90dG9t
OiAxcHggc29saWQgIzZjNjE1YzsKLSAgICBiYWNrZ3JvdW5kOiAjOGQ3ZDc3OwotICAgIGJhY2tn
cm91bmQ6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwgbGVmdCBib3R0b20sIGZy
b20ocmdiYSgxMzIsIDExMCwgMTAwLCAwLjgpKSx0byhyZ2JhKDEwMSwgODQsIDc2LCAwLjgpKSk7
Ci0gICAgYmFja2dyb3VuZDogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCByZ2JhKDEzMiwg
MTEwLCAxMDAsIDAuOCksIHJnYmEoMTAxLCA4NCwgNzYsIDAuOCkpOwotICAgIGJhY2tncm91bmQ6
IGxpbmVhci1ncmFkaWVudCh0b3AsIHJnYmEoMTMyLCAxMTAsIDEwMCwgMC44KSwgcmdiYSgxMDEs
IDg0LCA3NiwgMC44KSk7Ci0gICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMXB4OwotICAgIGJv
cmRlci10b3AtcmlnaHQtcmFkaXVzOiAxcHg7Ci19Ci0KLSNuZXctdG9kbywKLS5lZGl0IHsKLSAg
ICBwb3NpdGlvbjogcmVsYXRpdmU7Ci0gICAgbWFyZ2luOiAwOwotICAgIHdpZHRoOiAxMDAlOwot
ICAgIGZvbnQtc2l6ZTogMjRweDsKLSAgICBmb250LWZhbWlseTogaW5oZXJpdDsKLSAgICBsaW5l
LWhlaWdodDogMS40ZW07Ci0gICAgYm9yZGVyOiAwOwotICAgIG91dGxpbmU6IG5vbmU7Ci0gICAg
Y29sb3I6IGluaGVyaXQ7Ci0gICAgcGFkZGluZzogNnB4OwotICAgIGJvcmRlcjogMXB4IHNvbGlk
ICM5OTk7Ci0gICAgYm94LXNoYWRvdzogaW5zZXQgMCAtMXB4IDVweCAwIHJnYmEoMCwgMCwgMCwg
MC4yKTsKLSAgICAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7Ci0gICAgLW1zLWJveC1zaXpp
bmc6IGJvcmRlci1ib3g7Ci0gICAgLW8tYm94LXNpemluZzogYm9yZGVyLWJveDsKLSAgICBib3gt
c2l6aW5nOiBib3JkZXItYm94OwotICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlh
c2VkOwotICAgIC1tb3otZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwotICAgIC1tcy1mb250
LXNtb290aGluZzogYW50aWFsaWFzZWQ7Ci0gICAgLW8tZm9udC1zbW9vdGhpbmc6IGFudGlhbGlh
c2VkOwotICAgIGZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKLX0KLQotI25ldy10b2RvIHsK
LSAgICBwYWRkaW5nOiAxNnB4IDE2cHggMTZweCA2MHB4OwotICAgIGJvcmRlcjogbm9uZTsKLSAg
ICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMDIpOwotICAgIHotaW5kZXg6IDI7Ci0gICAg
Ym94LXNoYWRvdzogbm9uZTsKLX0KLQotI21haW4gewotICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsK
LSAgICB6LWluZGV4OiAyOwotICAgIGJvcmRlci10b3A6IDFweCBkb3R0ZWQgI2FkYWRhZDsKLX0K
LQotbGFiZWxbZm9yPSd0b2dnbGUtYWxsJ10gewotICAgIGRpc3BsYXk6IG5vbmU7Ci19Ci0KLSN0
b2dnbGUtYWxsIHsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgdG9wOiAtNDJweDsKLSAg
ICBsZWZ0OiAtNHB4OwotICAgIHdpZHRoOiA0MHB4OwotICAgIHRleHQtYWxpZ246IGNlbnRlcjsK
LSAgICAvKiBNb2JpbGUgU2FmYXJpICovCi0gICAgYm9yZGVyOiBub25lOwotfQotCi0jdG9nZ2xl
LWFsbDpiZWZvcmUgewotICAgIGNvbnRlbnQ6ICfCuyc7Ci0gICAgZm9udC1zaXplOiAyOHB4Owot
ICAgIGNvbG9yOiAjZDlkOWQ5OwotICAgIHBhZGRpbmc6IDAgMjVweCA3cHg7Ci19Ci0KLSN0b2dn
bGUtYWxsOmNoZWNrZWQ6YmVmb3JlIHsKLSAgICBjb2xvcjogIzczNzM3MzsKLX0KLQotI3RvZG8t
bGlzdCB7Ci0gICAgbWFyZ2luOiAwOwotICAgIHBhZGRpbmc6IDA7Ci0gICAgbGlzdC1zdHlsZTog
bm9uZTsKLX0KLQotI3RvZG8tbGlzdCBsaSB7Ci0gICAgcG9zaXRpb246IHJlbGF0aXZlOwotICAg
IGZvbnQtc2l6ZTogMjRweDsKLSAgICBib3JkZXItYm90dG9tOiAxcHggZG90dGVkICNjY2M7Ci19
Ci0KLSN0b2RvLWxpc3QgbGk6bGFzdC1jaGlsZCB7Ci0gICAgYm9yZGVyLWJvdHRvbTogbm9uZTsK
LX0KLQotI3RvZG8tbGlzdCBsaS5lZGl0aW5nIHsKLSAgICBib3JkZXItYm90dG9tOiBub25lOwot
ICAgIHBhZGRpbmc6IDA7Ci19Ci0KLSN0b2RvLWxpc3QgbGkuZWRpdGluZyAuZWRpdCB7Ci0gICAg
ZGlzcGxheTogYmxvY2s7Ci0gICAgd2lkdGg6IDUwNnB4OwotICAgIHBhZGRpbmc6IDEzcHggMTdw
eCAxMnB4IDE3cHg7Ci0gICAgbWFyZ2luOiAwIDAgMCA0M3B4OwotfQotCi0jdG9kby1saXN0IGxp
LmVkaXRpbmcgLnZpZXcgewotICAgIGRpc3BsYXk6IG5vbmU7Ci19Ci0KLSN0b2RvLWxpc3QgbGkg
LnRvZ2dsZSB7Ci0gICAgdGV4dC1hbGlnbjogY2VudGVyOwotICAgIHdpZHRoOiA0MHB4OwotICAg
IC8qIGF1dG8sIHNpbmNlIG5vbi1XZWJLaXQgYnJvd3NlcnMgZG9lc24ndCBzdXBwb3J0IGlucHV0
IHN0eWxpbmcgKi8KLSAgICBoZWlnaHQ6IGF1dG87Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwot
ICAgIHRvcDogMDsKLSAgICBib3R0b206IDA7Ci0gICAgbWFyZ2luOiBhdXRvIDA7Ci0gICAgLyog
TW9iaWxlIFNhZmFyaSAqLwotICAgIGJvcmRlcjogbm9uZTsKLSAgICAtd2Via2l0LWFwcGVhcmFu
Y2U6IG5vbmU7Ci0gICAgLW1zLWFwcGVhcmFuY2U6IG5vbmU7Ci0gICAgLW8tYXBwZWFyYW5jZTog
bm9uZTsKLSAgICBhcHBlYXJhbmNlOiBub25lOwotfQotCi0jdG9kby1saXN0IGxpIC50b2dnbGU6
YWZ0ZXIgewotICAgIGNvbnRlbnQ6ICfinJQnOwotICAgIC8qIDQwICsgYSBjb3VwbGUgb2YgcGl4
ZWxzIHZpc3VhbCBhZGp1c3RtZW50ICovCi0gICAgbGluZS1oZWlnaHQ6IDQzcHg7Ci0gICAgZm9u
dC1zaXplOiAyMHB4OwotICAgIGNvbG9yOiAjZDlkOWQ5OwotICAgIHRleHQtc2hhZG93OiAwIC0x
cHggMCAjYmZiZmJmOwotfQotCi0jdG9kby1saXN0IGxpIC50b2dnbGU6Y2hlY2tlZDphZnRlciB7
Ci0gICAgY29sb3I6ICM4NWFkYTc7Ci0gICAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgIzY2OTk5MTsK
LSAgICBib3R0b206IDFweDsKLSAgICBwb3NpdGlvbjogcmVsYXRpdmU7Ci19Ci0KLSN0b2RvLWxp
c3QgbGkgbGFiZWwgewotICAgIHdoaXRlLXNwYWNlOiBwcmU7Ci0gICAgd29yZC1icmVhazogYnJl
YWstd29yZDsKLSAgICBwYWRkaW5nOiAxNXB4IDYwcHggMTVweCAxNXB4OwotICAgIG1hcmdpbi1s
ZWZ0OiA0NXB4OwotICAgIGRpc3BsYXk6IGJsb2NrOwotICAgIGxpbmUtaGVpZ2h0OiAxLjI7Ci0g
ICAgLXdlYmtpdC10cmFuc2l0aW9uOiBjb2xvciAwLjRzOwotICAgIHRyYW5zaXRpb246IGNvbG9y
IDAuNHM7Ci19Ci0KLSN0b2RvLWxpc3QgbGkuY29tcGxldGVkIGxhYmVsIHsKLSAgICBjb2xvcjog
I2E5YTlhOTsKLSAgICB0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDsKLX0KLQotI3RvZG8t
bGlzdCBsaSAuZGVzdHJveSB7Ci0gICAgZGlzcGxheTogbm9uZTsKLSAgICBwb3NpdGlvbjogYWJz
b2x1dGU7Ci0gICAgdG9wOiAwOwotICAgIHJpZ2h0OiAxMHB4OwotICAgIGJvdHRvbTogMDsKLSAg
ICB3aWR0aDogNDBweDsKLSAgICBoZWlnaHQ6IDQwcHg7Ci0gICAgbWFyZ2luOiBhdXRvIDA7Ci0g
ICAgZm9udC1zaXplOiAyMnB4OwotICAgIGNvbG9yOiAjYTg4YThhOwotICAgIC13ZWJraXQtdHJh
bnNpdGlvbjogYWxsIDAuMnM7Ci0gICAgdHJhbnNpdGlvbjogYWxsIDAuMnM7Ci19Ci0KLSN0b2Rv
LWxpc3QgbGkgLmRlc3Ryb3k6aG92ZXIgewotICAgIHRleHQtc2hhZG93OiAwIDAgMXB4ICMwMDAs
Ci0gICAgICAgICAgICAgICAgIDAgMCAxMHB4IHJnYmEoMTk5LCAxMDcsIDEwNywgMC44KTsKLSAg
ICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMS4zKTsKLSAgICAtbXMtdHJhbnNmb3JtOiBzY2Fs
ZSgxLjMpOwotICAgIHRyYW5zZm9ybTogc2NhbGUoMS4zKTsKLX0KLQotI3RvZG8tbGlzdCBsaSAu
ZGVzdHJveTphZnRlciB7Ci0gICAgY29udGVudDogJ+Kclic7Ci19Ci0KLSN0b2RvLWxpc3QgbGk6
aG92ZXIgLmRlc3Ryb3kgewotICAgIGRpc3BsYXk6IGJsb2NrOwotfQotCi0jdG9kby1saXN0IGxp
IC5lZGl0IHsKLSAgICBkaXNwbGF5OiBub25lOwotfQotCi0jdG9kby1saXN0IGxpLmVkaXRpbmc6
bGFzdC1jaGlsZCB7Ci0gICAgbWFyZ2luLWJvdHRvbTogLTFweDsKLX0KLQotI2Zvb3RlciB7Ci0g
ICAgY29sb3I6ICM3Nzc7Ci0gICAgcGFkZGluZzogMCAxNXB4OwotICAgIHBvc2l0aW9uOiBhYnNv
bHV0ZTsKLSAgICByaWdodDogMDsKLSAgICBib3R0b206IC0zMXB4OwotICAgIGxlZnQ6IDA7Ci0g
ICAgaGVpZ2h0OiAyMHB4OwotICAgIHotaW5kZXg6IDE7Ci0gICAgdGV4dC1hbGlnbjogY2VudGVy
OwotfQotCi0jZm9vdGVyOmJlZm9yZSB7Ci0gICAgY29udGVudDogJyc7Ci0gICAgcG9zaXRpb246
IGFic29sdXRlOwotICAgIHJpZ2h0OiAwOwotICAgIGJvdHRvbTogMzFweDsKLSAgICBsZWZ0OiAw
OwotICAgIGhlaWdodDogNTBweDsKLSAgICB6LWluZGV4OiAtMTsKLSAgICBib3gtc2hhZG93OiAw
IDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjMpLAotICAgICAgICAgICAgICAgIDAgNnB4IDAgLTNw
eCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCksCi0gICAgICAgICAgICAgICAgMCA3cHggMXB4IC0z
cHggcmdiYSgwLCAwLCAwLCAwLjMpLAotICAgICAgICAgICAgICAgIDAgNDNweCAwIC02cHggcmdi
YSgyNTUsIDI1NSwgMjU1LCAwLjgpLAotICAgICAgICAgICAgICAgIDAgNDRweCAycHggLTZweCBy
Z2JhKDAsIDAsIDAsIDAuMik7Ci19Ci0KLSN0b2RvLWNvdW50IHsKLSAgICBmbG9hdDogbGVmdDsK
LSAgICB0ZXh0LWFsaWduOiBsZWZ0OwotfQotCi0jZmlsdGVycyB7Ci0gICAgbWFyZ2luOiAwOwot
ICAgIHBhZGRpbmc6IDA7Ci0gICAgbGlzdC1zdHlsZTogbm9uZTsKLSAgICBwb3NpdGlvbjogYWJz
b2x1dGU7Ci0gICAgcmlnaHQ6IDA7Ci0gICAgbGVmdDogMDsKLX0KLQotI2ZpbHRlcnMgbGkgewot
ICAgIGRpc3BsYXk6IGlubGluZTsKLX0KLQotI2ZpbHRlcnMgbGkgYSB7Ci0gICAgY29sb3I6ICM4
Mzc1NmY7Ci0gICAgbWFyZ2luOiAycHg7Ci0gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwotfQot
Ci0jZmlsdGVycyBsaSBhLnNlbGVjdGVkIHsKLSAgICBmb250LXdlaWdodDogYm9sZDsKLX0KLQot
I2NsZWFyLWNvbXBsZXRlZCB7Ci0gICAgZmxvYXQ6IHJpZ2h0OwotICAgIHBvc2l0aW9uOiByZWxh
dGl2ZTsKLSAgICBsaW5lLWhlaWdodDogMjBweDsKLSAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7
Ci0gICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjEpOwotICAgIGZvbnQtc2l6ZTogMTFw
eDsKLSAgICBwYWRkaW5nOiAwIDEwcHg7Ci0gICAgYm9yZGVyLXJhZGl1czogM3B4OwotICAgIGJv
eC1zaGFkb3c6IDAgLTFweCAwIDAgcmdiYSgwLCAwLCAwLCAwLjIpOwotfQotCi0jY2xlYXItY29t
cGxldGVkOmhvdmVyIHsKLSAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMTUpOwotICAg
IGJveC1zaGFkb3c6IDAgLTFweCAwIDAgcmdiYSgwLCAwLCAwLCAwLjMpOwotfQotCi0jaW5mbyB7
Ci0gICAgbWFyZ2luOiA2NXB4IGF1dG8gMDsKLSAgICBjb2xvcjogI2E2YTZhNjsKLSAgICBmb250
LXNpemU6IDEycHg7Ci0gICAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1
LCAwLjcpOwotICAgIHRleHQtYWxpZ246IGNlbnRlcjsKLX0KLQotI2luZm8gYSB7Ci0gICAgY29s
b3I6IGluaGVyaXQ7Ci19Ci0KLS8qCi0gICAgSGFjayB0byByZW1vdmUgYmFja2dyb3VuZCBmcm9t
IE1vYmlsZSBTYWZhcmkuCi0gICAgQ2FuJ3QgdXNlIGl0IGdsb2JhbGx5IHNpbmNlIGl0IGRlc3Ry
b3lzIGNoZWNrYm94ZXMgaW4gRmlyZWZveCBhbmQgT3BlcmEKLSovCi0KLUBtZWRpYSBzY3JlZW4g
YW5kICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86MCkgewotICAgICN0b2dnbGUtYWxs
LAotICAgICN0b2RvLWxpc3QgbGkgLnRvZ2dsZSB7Ci0gICAgICAgIGJhY2tncm91bmQ6IG5vbmU7
Ci0gICAgfQotCi0gICAgI3RvZG8tbGlzdCBsaSAudG9nZ2xlIHsKLSAgICAgICAgaGVpZ2h0OiA0
MHB4OwotICAgIH0KLQotICAgICN0b2dnbGUtYWxsIHsKLSAgICAgICAgdG9wOiAtNTZweDsKLSAg
ICAgICAgbGVmdDogLTE1cHg7Ci0gICAgICAgIHdpZHRoOiA2NXB4OwotICAgICAgICBoZWlnaHQ6
IDQxcHg7Ci0gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpOwotICAgICAg
ICAtbXMtdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpOwotICAgICAgICB0cmFuc2Zvcm06IHJvdGF0
ZSg5MGRlZyk7Ci0gICAgICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKLSAgICAgICAgYXBw
ZWFyYW5jZTogbm9uZTsKLSAgICB9Ci19Ci0KLS5oaWRkZW4gewotICAgIGRpc3BsYXk6IG5vbmU7
Ci19Ci0KLWhyIHsKLSAgICBtYXJnaW46IDIwcHggMDsKLSAgICBib3JkZXI6IDA7Ci0gICAgYm9y
ZGVyLXRvcDogMXB4IGRhc2hlZCAjQzVDNUM1OwotICAgIGJvcmRlci1ib3R0b206IDFweCBkYXNo
ZWQgI0Y3RjdGNzsKLX0KLQotLmxlYXJuIGEgewotICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7Ci0g
ICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwotICAgIGNvbG9yOiAjYjgzZjQ1OwotfQotCi0ubGVh
cm4gYTpob3ZlciB7Ci0gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Ci0gICAgY29sb3I6
ICM3ODdlN2U7Ci19Ci0KLS5sZWFybiBoMywKLS5sZWFybiBoNCwKLS5sZWFybiBoNSB7Ci0gICAg
bWFyZ2luOiAxMHB4IDA7Ci0gICAgZm9udC13ZWlnaHQ6IDUwMDsKLSAgICBsaW5lLWhlaWdodDog
MS4yOwotICAgIGNvbG9yOiAjMDAwOwotfQotCi0ubGVhcm4gaDMgewotICAgIGZvbnQtc2l6ZTog
MjRweDsKLX0KLQotLmxlYXJuIGg0IHsKLSAgICBmb250LXNpemU6IDE4cHg7Ci19Ci0KLS5sZWFy
biBoNSB7Ci0gICAgbWFyZ2luLWJvdHRvbTogMDsKLSAgICBmb250LXNpemU6IDE0cHg7Ci19Ci0K
LS5sZWFybiB1bCB7Ci0gICAgcGFkZGluZzogMDsKLSAgICBtYXJnaW46IDAgMCAzMHB4IDI1cHg7
Ci19Ci0KLS5sZWFybiBsaSB7Ci0gICAgbGluZS1oZWlnaHQ6IDIwcHg7Ci19Ci0KLS5sZWFybiBw
IHsKLSAgICBmb250LXNpemU6IDE1cHg7Ci0gICAgZm9udC13ZWlnaHQ6IDMwMDsKLSAgICBsaW5l
LWhlaWdodDogMS4zOwotICAgIG1hcmdpbi10b3A6IDA7Ci0gICAgbWFyZ2luLWJvdHRvbTogMDsK
LX0KLQotLnF1b3RlIHsKLSAgICBib3JkZXI6IG5vbmU7Ci0gICAgbWFyZ2luOiAyMHB4IDAgNjBw
eCAwOwotfQotCi0ucXVvdGUgcCB7Ci0gICAgZm9udC1zdHlsZTogaXRhbGljOwotfQotCi0ucXVv
dGUgcDpiZWZvcmUgewotICAgIGNvbnRlbnQ6ICfigJwnOwotICAgIGZvbnQtc2l6ZTogNTBweDsK
LSAgICBvcGFjaXR5OiAuMTU7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHRvcDogLTIw
cHg7Ci0gICAgbGVmdDogM3B4OwotfQotCi0ucXVvdGUgcDphZnRlciB7Ci0gICAgY29udGVudDog
J+KAnSc7Ci0gICAgZm9udC1zaXplOiA1MHB4OwotICAgIG9wYWNpdHk6IC4xNTsKLSAgICBwb3Np
dGlvbjogYWJzb2x1dGU7Ci0gICAgYm90dG9tOiAtNDJweDsKLSAgICByaWdodDogM3B4OwotfQot
Ci0ucXVvdGUgZm9vdGVyIHsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgYm90dG9tOiAt
NDBweDsKLSAgICByaWdodDogMDsKLX0KLQotLnF1b3RlIGZvb3RlciBpbWcgewotICAgIGJvcmRl
ci1yYWRpdXM6IDNweDsKLX0KLQotLnF1b3RlIGZvb3RlciBhIHsKLSAgICBtYXJnaW4tbGVmdDog
NXB4OwotICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Ci19Ci0KLS5zcGVlY2gtYnViYmxlIHsK
LSAgICBwb3NpdGlvbjogcmVsYXRpdmU7Ci0gICAgcGFkZGluZzogMTBweDsKLSAgICBiYWNrZ3Jv
dW5kOiByZ2JhKDAsIDAsIDAsIC4wNCk7Ci0gICAgYm9yZGVyLXJhZGl1czogNXB4OwotfQotCi0u
c3BlZWNoLWJ1YmJsZTphZnRlciB7Ci0gICAgY29udGVudDogJyc7Ci0gICAgcG9zaXRpb246IGFi
c29sdXRlOwotICAgIHRvcDogMTAwJTsKLSAgICByaWdodDogMzBweDsKLSAgICBib3JkZXI6IDEz
cHggc29saWQgdHJhbnNwYXJlbnQ7Ci0gICAgYm9yZGVyLXRvcC1jb2xvcjogcmdiYSgwLCAwLCAw
LCAuMDQpOwotfQotCi0ubGVhcm4tYmFyID4gLmxlYXJuIHsKLSAgICBwb3NpdGlvbjogYWJzb2x1
dGU7Ci0gICAgd2lkdGg6IDI3MnB4OwotICAgIHRvcDogOHB4OwotICAgIGxlZnQ6IC0zMDBweDsK
LSAgICBwYWRkaW5nOiAxMHB4OwotICAgIGJvcmRlci1yYWRpdXM6IDVweDsKLSAgICBiYWNrZ3Jv
dW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIC42KTsKLSAgICAtd2Via2l0LXRyYW5zaXRp
b24tcHJvcGVydHk6IGxlZnQ7Ci0gICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogbGVmdDsKLSAgICAt
d2Via2l0LXRyYW5zaXRpb24tZHVyYXRpb246IDUwMG1zOwotICAgIHRyYW5zaXRpb24tZHVyYXRp
b246IDUwMG1zOwotfQotCi1AbWVkaWEgKG1pbi13aWR0aDogODk5cHgpIHsKLSAgICAubGVhcm4t
YmFyIHsKLSAgICAgICAgd2lkdGg6IGF1dG87Ci0gICAgICAgIG1hcmdpbjogMCAwIDAgMzAwcHg7
Ci0gICAgfQotCi0gICAgLmxlYXJuLWJhciA+IC5sZWFybiB7Ci0gICAgICAgIGxlZnQ6IDhweDsK
LSAgICB9Ci0KLSAgICAubGVhcm4tYmFyICN0b2RvYXBwIHsKLSAgICAgICAgd2lkdGg6IDU1MHB4
OwotICAgICAgICBtYXJnaW46IDEzMHB4IGF1dG8gNDBweCBhdXRvOwotICAgIH0KLX0KZGlmZiAt
LWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvYm93ZXJfY29tcG9uZW50cy90b2RvbXZjLWNvbW1v
bi9iYXNlLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9ib3dlcl9jb21wb25lbnRzL3RvZG9tdmMt
Y29tbW9uL2Jhc2UuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM2OGU1ZWEwM2E2
MWFkMzY2NzljMTVlYTBhZjY0ODkxMzcxZGI5ZWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9ib3dlcl9jb21wb25lbnRz
L3RvZG9tdmMtY29tbW9uL2Jhc2UuanMKKysrIC9kZXYvbnVsbApAQCAtMSwyMDkgKzAsMCBAQAot
KGZ1bmN0aW9uICgpIHsKLSAgICAndXNlIHN0cmljdCc7Ci0KLSAgICAvLyBVbmRlcnNjb3JlJ3Mg
VGVtcGxhdGUgTW9kdWxlCi0gICAgLy8gQ291cnRlc3kgb2YgdW5kZXJzY29yZWpzLm9yZwotICAg
IHZhciBfID0gKGZ1bmN0aW9uIChfKSB7Ci0gICAgICAgIF8uZGVmYXVsdHMgPSBmdW5jdGlvbiAo
b2JqZWN0KSB7Ci0gICAgICAgICAgICBpZiAoIW9iamVjdCkgewotICAgICAgICAgICAgICAgIHJl
dHVybiBvYmplY3Q7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBmb3IgKHZhciBhcmdzSW5k
ZXggPSAxLCBhcmdzTGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDsgYXJnc0luZGV4IDwgYXJnc0xl
bmd0aDsgYXJnc0luZGV4KyspIHsKLSAgICAgICAgICAgICAgICB2YXIgaXRlcmFibGUgPSBhcmd1
bWVudHNbYXJnc0luZGV4XTsKLSAgICAgICAgICAgICAgICBpZiAoaXRlcmFibGUpIHsKLSAgICAg
ICAgICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIGl0ZXJhYmxlKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBpZiAob2JqZWN0W2tleV0gPT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG9iamVjdFtrZXldID0gaXRlcmFibGVba2V5XTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBvYmplY3Q7Ci0gICAgICAgIH0KLQotICAgICAg
ICAvLyBCeSBkZWZhdWx0LCBVbmRlcnNjb3JlIHVzZXMgRVJCLXN0eWxlIHRlbXBsYXRlIGRlbGlt
aXRlcnMsIGNoYW5nZSB0aGUKLSAgICAgICAgLy8gZm9sbG93aW5nIHRlbXBsYXRlIHNldHRpbmdz
IHRvIHVzZSBhbHRlcm5hdGl2ZSBkZWxpbWl0ZXJzLgotICAgICAgICBfLnRlbXBsYXRlU2V0dGlu
Z3MgPSB7Ci0gICAgICAgICAgICBldmFsdWF0ZSAgICA6IC88JShbXHNcU10rPyklPi9nLAotICAg
ICAgICAgICAgaW50ZXJwb2xhdGUgOiAvPCU9KFtcc1xTXSs/KSU+L2csCi0gICAgICAgICAgICBl
c2NhcGUgICAgICA6IC88JS0oW1xzXFNdKz8pJT4vZwotICAgICAgICB9OwotCi0gICAgICAgIC8v
IFdoZW4gY3VzdG9taXppbmcgYHRlbXBsYXRlU2V0dGluZ3NgLCBpZiB5b3UgZG9uJ3Qgd2FudCB0
byBkZWZpbmUgYW4KLSAgICAgICAgLy8gaW50ZXJwb2xhdGlvbiwgZXZhbHVhdGlvbiBvciBlc2Nh
cGluZyByZWdleCwgd2UgbmVlZCBvbmUgdGhhdCBpcwotICAgICAgICAvLyBndWFyYW50ZWVkIG5v
dCB0byBtYXRjaC4KLSAgICAgICAgdmFyIG5vTWF0Y2ggPSAvKC4pXi87Ci0KLSAgICAgICAgLy8g
Q2VydGFpbiBjaGFyYWN0ZXJzIG5lZWQgdG8gYmUgZXNjYXBlZCBzbyB0aGF0IHRoZXkgY2FuIGJl
IHB1dCBpbnRvIGEKLSAgICAgICAgLy8gc3RyaW5nIGxpdGVyYWwuCi0gICAgICAgIHZhciBlc2Nh
cGVzID0gewotICAgICAgICAgICAgIiciOiAgICAgICInIiwKLSAgICAgICAgICAgICdcXCc6ICAg
ICAnXFwnLAotICAgICAgICAgICAgJ1xyJzogICAgICdyJywKLSAgICAgICAgICAgICdcbic6ICAg
ICAnbicsCi0gICAgICAgICAgICAnXHQnOiAgICAgJ3QnLAotICAgICAgICAgICAgJ1x1MjAyOCc6
ICd1MjAyOCcsCi0gICAgICAgICAgICAnXHUyMDI5JzogJ3UyMDI5JwotICAgICAgICB9OwotCi0g
ICAgICAgIHZhciBlc2NhcGVyID0gL1xcfCd8XHJ8XG58XHR8XHUyMDI4fFx1MjAyOS9nOwotCi0g
ICAgICAgIC8vIEphdmFTY3JpcHQgbWljcm8tdGVtcGxhdGluZywgc2ltaWxhciB0byBKb2huIFJl
c2lnJ3MgaW1wbGVtZW50YXRpb24uCi0gICAgICAgIC8vIFVuZGVyc2NvcmUgdGVtcGxhdGluZyBo
YW5kbGVzIGFyYml0cmFyeSBkZWxpbWl0ZXJzLCBwcmVzZXJ2ZXMgd2hpdGVzcGFjZSwKLSAgICAg
ICAgLy8gYW5kIGNvcnJlY3RseSBlc2NhcGVzIHF1b3RlcyB3aXRoaW4gaW50ZXJwb2xhdGVkIGNv
ZGUuCi0gICAgICAgIF8udGVtcGxhdGUgPSBmdW5jdGlvbih0ZXh0LCBkYXRhLCBzZXR0aW5ncykg
ewotICAgICAgICAgICAgdmFyIHJlbmRlcjsKLSAgICAgICAgICAgIHNldHRpbmdzID0gXy5kZWZh
dWx0cyh7fSwgc2V0dGluZ3MsIF8udGVtcGxhdGVTZXR0aW5ncyk7Ci0KLSAgICAgICAgICAgIC8v
IENvbWJpbmUgZGVsaW1pdGVycyBpbnRvIG9uZSByZWd1bGFyIGV4cHJlc3Npb24gdmlhIGFsdGVy
bmF0aW9uLgotICAgICAgICAgICAgdmFyIG1hdGNoZXIgPSBuZXcgUmVnRXhwKFsKLSAgICAgICAg
ICAgICAgICAoc2V0dGluZ3MuZXNjYXBlIHx8IG5vTWF0Y2gpLnNvdXJjZSwKLSAgICAgICAgICAg
ICAgICAoc2V0dGluZ3MuaW50ZXJwb2xhdGUgfHwgbm9NYXRjaCkuc291cmNlLAotICAgICAgICAg
ICAgICAgIChzZXR0aW5ncy5ldmFsdWF0ZSB8fCBub01hdGNoKS5zb3VyY2UKLSAgICAgICAgICAg
IF0uam9pbignfCcpICsgJ3wkJywgJ2cnKTsKLQotICAgICAgICAgICAgLy8gQ29tcGlsZSB0aGUg
dGVtcGxhdGUgc291cmNlLCBlc2NhcGluZyBzdHJpbmcgbGl0ZXJhbHMgYXBwcm9wcmlhdGVseS4K
LSAgICAgICAgICAgIHZhciBpbmRleCA9IDA7Ci0gICAgICAgICAgICB2YXIgc291cmNlID0gIl9f
cCs9JyI7Ci0gICAgICAgICAgICB0ZXh0LnJlcGxhY2UobWF0Y2hlciwgZnVuY3Rpb24obWF0Y2gs
IGVzY2FwZSwgaW50ZXJwb2xhdGUsIGV2YWx1YXRlLCBvZmZzZXQpIHsKLSAgICAgICAgICAgICAg
ICBzb3VyY2UgKz0gdGV4dC5zbGljZShpbmRleCwgb2Zmc2V0KQotICAgICAgICAgICAgICAgICAg
ICAucmVwbGFjZShlc2NhcGVyLCBmdW5jdGlvbihtYXRjaCkgeyByZXR1cm4gJ1xcJyArIGVzY2Fw
ZXNbbWF0Y2hdOyB9KTsKLQotICAgICAgICAgICAgICAgIGlmIChlc2NhcGUpIHsKLSAgICAgICAg
ICAgICAgICAgICAgc291cmNlICs9ICInK1xuKChfX3Q9KCIgKyBlc2NhcGUgKyAiKSk9PW51bGw/
Jyc6Xy5lc2NhcGUoX190KSkrXG4nIjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgaWYgKGludGVycG9sYXRlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNvdXJjZSArPSAiJytc
bigoX190PSgiICsgaW50ZXJwb2xhdGUgKyAiKSk9PW51bGw/Jyc6X190KStcbiciOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoZXZhbHVhdGUpIHsKLSAgICAgICAgICAg
ICAgICAgICAgc291cmNlICs9ICInO1xuIiArIGV2YWx1YXRlICsgIlxuX19wKz0nIjsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaW5kZXggPSBvZmZzZXQgKyBtYXRjaC5sZW5n
dGg7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoOwotICAgICAgICAgICAgfSk7Ci0gICAg
ICAgICAgICBzb3VyY2UgKz0gIic7XG4iOwotCi0gICAgICAgICAgICAvLyBJZiBhIHZhcmlhYmxl
IGlzIG5vdCBzcGVjaWZpZWQsIHBsYWNlIGRhdGEgdmFsdWVzIGluIGxvY2FsIHNjb3BlLgotICAg
ICAgICAgICAgaWYgKCFzZXR0aW5ncy52YXJpYWJsZSkgc291cmNlID0gJ3dpdGgob2JqfHx7fSl7
XG4nICsgc291cmNlICsgJ31cbic7Ci0KLSAgICAgICAgICAgIHNvdXJjZSA9ICJ2YXIgX190LF9f
cD0nJyxfX2o9QXJyYXkucHJvdG90eXBlLmpvaW4sIiArCi0gICAgICAgICAgICAgICAgInByaW50
PWZ1bmN0aW9uKCl7X19wKz1fX2ouY2FsbChhcmd1bWVudHMsJycpO307XG4iICsKLSAgICAgICAg
ICAgICAgICBzb3VyY2UgKyAicmV0dXJuIF9fcDtcbiI7Ci0KLSAgICAgICAgICAgIHRyeSB7Ci0g
ICAgICAgICAgICAgICAgcmVuZGVyID0gbmV3IEZ1bmN0aW9uKHNldHRpbmdzLnZhcmlhYmxlIHx8
ICdvYmonLCAnXycsIHNvdXJjZSk7Ci0gICAgICAgICAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAg
ICAgICAgICAgZS5zb3VyY2UgPSBzb3VyY2U7Ci0gICAgICAgICAgICAgICAgdGhyb3cgZTsKLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKGRhdGEpIHJldHVybiByZW5kZXIoZGF0YSwg
Xyk7Ci0gICAgICAgICAgICB2YXIgdGVtcGxhdGUgPSBmdW5jdGlvbihkYXRhKSB7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIHJlbmRlci5jYWxsKHRoaXMsIGRhdGEsIF8pOwotICAgICAgICAgICAg
fTsKLQotICAgICAgICAgICAgLy8gUHJvdmlkZSB0aGUgY29tcGlsZWQgZnVuY3Rpb24gc291cmNl
IGFzIGEgY29udmVuaWVuY2UgZm9yIHByZWNvbXBpbGF0aW9uLgotICAgICAgICAgICAgdGVtcGxh
dGUuc291cmNlID0gJ2Z1bmN0aW9uKCcgKyAoc2V0dGluZ3MudmFyaWFibGUgfHwgJ29iaicpICsg
Jyl7XG4nICsgc291cmNlICsgJ30nOwotCi0gICAgICAgICAgICByZXR1cm4gdGVtcGxhdGU7Ci0g
ICAgICAgIH07Ci0KLSAgICAgICAgcmV0dXJuIF87Ci0gICAgfSkoe30pOwotCi0gICAgaWYgKGxv
Y2F0aW9uLmhvc3RuYW1lID09PSAndG9kb212Yy5jb20nKSB7Ci0gICAgICAgIHdpbmRvdy5fZ2Fx
ID0gW1snX3NldEFjY291bnQnLCdVQS0zMTA4MTA2Mi0xJ10sWydfdHJhY2tQYWdldmlldyddXTso
ZnVuY3Rpb24oZCx0KXt2YXIgZz1kLmNyZWF0ZUVsZW1lbnQodCkscz1kLmdldEVsZW1lbnRzQnlU
YWdOYW1lKHQpWzBdO2cuc3JjPScvL3d3dy5nb29nbGUtYW5hbHl0aWNzLmNvbS9nYS5qcyc7cy5w
YXJlbnROb2RlLmluc2VydEJlZm9yZShnLHMpfShkb2N1bWVudCwnc2NyaXB0JykpOwotICAgIH0K
LQotICAgIGZ1bmN0aW9uIHJlZGlyZWN0KCkgewotICAgICAgICBpZiAobG9jYXRpb24uaG9zdG5h
bWUgPT09ICd0YXN0ZWpzLmdpdGh1Yi5pbycpIHsKLSAgICAgICAgICAgIGxvY2F0aW9uLmhyZWYg
PSBsb2NhdGlvbi5ocmVmLnJlcGxhY2UoJ3Rhc3RlanMuZ2l0aHViLmlvL3RvZG9tdmMnLCAndG9k
b212Yy5jb20nKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGZ1bmN0aW9uIGZpbmRSb290KCkg
ewotICAgICAgICB2YXIgYmFzZTsKLQotICAgICAgICBbL2xhYnMvLCAvXHcqLWV4YW1wbGVzL10u
Zm9yRWFjaChmdW5jdGlvbiAoaHJlZikgewotICAgICAgICAgICAgdmFyIG1hdGNoID0gbG9jYXRp
b24uaHJlZi5tYXRjaChocmVmKTsKLQotICAgICAgICAgICAgaWYgKCFiYXNlICYmIG1hdGNoKSB7
Ci0gICAgICAgICAgICAgICAgYmFzZSA9IGxvY2F0aW9uLmhyZWYuaW5kZXhPZihtYXRjaCk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0pOwotCi0gICAgICAgIHJldHVybiBsb2NhdGlvbi5ocmVm
LnN1YnN0cigwLCBiYXNlKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBnZXRGaWxlKGZpbGUsIGNh
bGxiYWNrKSB7Ci0gICAgICAgIGlmICghbG9jYXRpb24uaG9zdCkgewotICAgICAgICAgICAgcmV0
dXJuIGNvbnNvbGUuaW5mbygnTWlzcyB0aGUgaW5mbyBiYXI/IFJ1biBUb2RvTVZDIGZyb20gYSBz
ZXJ2ZXIgdG8gYXZvaWQgYSBjcm9zcy1vcmlnaW4gZXJyb3IuJyk7Ci0gICAgICAgIH0KLQotICAg
ICAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7Ci0KLSAgICAgICAgeGhyLm9wZW4o
J0dFVCcsIGZpbmRSb290KCkgKyBmaWxlLCB0cnVlKTsKLSAgICAgICAgeGhyLnNlbmQoKTsKLQot
ICAgICAgICB4aHIub25sb2FkID0gZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgaWYgKHhoci5z
dGF0dXMgPT09IDIwMCAmJiBjYWxsYmFjaykgewotICAgICAgICAgICAgICAgIGNhbGxiYWNrKHho
ci5yZXNwb25zZVRleHQpOwotICAgICAgICAgICAgfQotICAgICAgICB9OwotICAgIH0KLQotICAg
IGZ1bmN0aW9uIExlYXJuKGxlYXJuSlNPTiwgY29uZmlnKSB7Ci0gICAgICAgIGlmICghKHRoaXMg
aW5zdGFuY2VvZiBMZWFybikpIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgTGVhcm4obGVhcm5K
U09OLCBjb25maWcpOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIHRlbXBsYXRlLCBmcmFtZXdv
cms7Ci0KLSAgICAgICAgaWYgKHR5cGVvZiBsZWFybkpTT04gIT09ICdvYmplY3QnKSB7Ci0gICAg
ICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIGxlYXJuSlNPTiA9IEpTT04ucGFyc2UobGVh
cm5KU09OKTsKLSAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoY29uZmlnKSB7Ci0g
ICAgICAgICAgICB0ZW1wbGF0ZSA9IGNvbmZpZy50ZW1wbGF0ZTsKLSAgICAgICAgICAgIGZyYW1l
d29yayA9IGNvbmZpZy5mcmFtZXdvcms7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIXRlbXBs
YXRlICYmIGxlYXJuSlNPTi50ZW1wbGF0ZXMpIHsKLSAgICAgICAgICAgIHRlbXBsYXRlID0gbGVh
cm5KU09OLnRlbXBsYXRlcy50b2RvbXZjOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFmcmFt
ZXdvcmsgJiYgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW2RhdGEtZnJhbWV3b3JrXScpKSB7Ci0g
ICAgICAgICAgICBmcmFtZXdvcmsgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbZGF0YS1mcmFt
ZXdvcmtdJykuZ2V0QXR0cmlidXRlKCdkYXRhLWZyYW1ld29yaycpOwotICAgICAgICB9Ci0KLQot
ICAgICAgICBpZiAodGVtcGxhdGUgJiYgbGVhcm5KU09OW2ZyYW1ld29ya10pIHsKLSAgICAgICAg
ICAgIHRoaXMuZnJhbWV3b3JrSlNPTiA9IGxlYXJuSlNPTltmcmFtZXdvcmtdOwotICAgICAgICAg
ICAgdGhpcy50ZW1wbGF0ZSA9IHRlbXBsYXRlOwotCi0gICAgICAgICAgICB0aGlzLmFwcGVuZCgp
OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgTGVhcm4ucHJvdG90eXBlLmFwcGVuZCA9IGZ1bmN0
aW9uICgpIHsKLSAgICAgICAgdmFyIGFzaWRlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYXNp
ZGUnKTsKLSAgICAgICAgYXNpZGUuaW5uZXJIVE1MID0gXy50ZW1wbGF0ZSh0aGlzLnRlbXBsYXRl
LCB0aGlzLmZyYW1ld29ya0pTT04pOwotICAgICAgICBhc2lkZS5jbGFzc05hbWUgPSAnbGVhcm4n
OwotCi0gICAgICAgIC8vIExvY2FsaXplIGRlbW8gbGlua3MKLSAgICAgICAgdmFyIGRlbW9MaW5r
cyA9IGFzaWRlLnF1ZXJ5U2VsZWN0b3JBbGwoJy5kZW1vLWxpbmsnKTsKLSAgICAgICAgQXJyYXku
cHJvdG90eXBlLmZvckVhY2guY2FsbChkZW1vTGlua3MsIGZ1bmN0aW9uIChkZW1vTGluaykgewot
ICAgICAgICAgICAgZGVtb0xpbmsuc2V0QXR0cmlidXRlKCdocmVmJywgZmluZFJvb3QoKSArIGRl
bW9MaW5rLmdldEF0dHJpYnV0ZSgnaHJlZicpKTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgZG9j
dW1lbnQuYm9keS5jbGFzc05hbWUgPSAoZG9jdW1lbnQuYm9keS5jbGFzc05hbWUgKyAnIGxlYXJu
LWJhcicpLnRyaW0oKTsKLSAgICAgICAgZG9jdW1lbnQuYm9keS5pbnNlcnRBZGphY2VudEhUTUwo
J2FmdGVyQmVnaW4nLCBhc2lkZS5vdXRlckhUTUwpOwotICAgIH07Ci0KLSAgICByZWRpcmVjdCgp
OwotICAgIGdldEZpbGUoJ2xlYXJuLmpzb24nLCBMZWFybik7Ci19KSgpOwpkaWZmIC0tZ2l0IGEv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvZW1iZXJqcy9ib3dlcl9jb21wb25lbnRzL3RvZG9tdmMtY29tbW9uL2JnLnBu
ZyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvYm93ZXJfY29tcG9uZW50cy90b2RvbXZjLWNvbW1vbi9i
Zy5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIyYTc2MDA4MjVlZTExZjIxODQ5
ZWQ0NzU0OTljN2QxZWNiY2M4NzAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmxpdGVyYWwgMjEy
Ngp6Y21WLVUyKGtCeFApPGg7M0t8TGswMDBlMU5KTFRxMDAza0YwMDNrSDB7e1IzNFVCIXEwMDAw
Q1ApdC1zPyhYakUKej4rOXlgPUhLN250PX4zdDAwME81TmtsPFpjd1RqdShRNHZ+N0tXRVcjWW0/
bEtfdjtUbXwhRmMpQE53RW5tdHNoCnp4IU9+ejgxSlQzcEZzbT5tPTA0aFZhX2xYbF9ibT0rTTs9
ZUk8JSRyTzJ0YWBzdWgqU3IjUE93Kj9hZHEhTyFDVgp6KjAmYilya0NDRVYpMW5JdWlMQm50VUgt
TUpJOyZxWWd6fGRATmhubl9hYmkyZ2BwdTROQU1WaWQzaFMlP3F1en4KempsSmYoeDhjajxQR2Nq
bipKK2F7Jkg1cCpuNSQ1ZTM/PEtDYz9vMDZtQXNOU2JnUFdPP1B6I0N6bjwhPXs+e1ZTCnpVVkVQ
MW1zZzlgXk9GVWhTTzVydFhIaFJseVUyaT42JEJUPWdsR2B7SmxjdEdIcndSSW0pNkJ1dTY1akxR
bl5IOAp6dmw5bFpxVUJBKyVxdk01WEMreVlAbWZBKFlCflhQPWV8Njx7JSReZVU4bnJLP3YyY2Ni
QEpvbTVDRz5yS0FMN0oKenBsSEVJYXZWcHwwcDEmbSFHYFRpPzw3aVo7fUBHNyNaKX1LbSUyIUZI
blEwKiY/UExSKUchSEFhSGdVI2N8JGR6CnpwaiMwSG1lYWRJZT5gIyk9SmprYntCPUZLblUzcGMt
JllAal9qNihoNFl+K1VxPFBVMzZDOzViPU1eRmA9cDFkSQp6azxDUU9QTmE3PiFeSj1MSHVueDF4
aTRRWEstWXsmTW9UOGt5NlZiOWN8V2huT3dGfmM9M3pPeThhZ2t0bGlTNiMKemAjOEZgOUgpRD1i
bWs5QjVNblcmX3IjKWYkYys7JExTci1AXkFuOGRoY35JcXV1dj5qT0s3cHc3TEo7JlgwaTFDCnpH
TXNIZFAxT3NAbnkkJGohPlhBaWklN2JwNWs+YHB5TkEhfmVwYikoKXA5elI0WWw2ej1VfXtDSWRo
MXooRnBBbwp6UUlXITswenBDeUM0KjdZTGtaQ09AY3VsMFJfJnpnaHNBOEVrKXolPCFwLWJ2c3Nw
bFlZMn1QOyF2NENZajlrbUYKemIwYk5fbTRWKmZeWVpNb2IyKGozcEtqfjd2I1p0a3M9SW8re3N1
JVdpdWtkSkgkYj9mWmtpQT1QWV8zT2hEQmtvCnooTFRRSFkmRl5eMmhHLVlgKlo5M3ZifmM/KihK
Y2hEalRmQ3M/elJtKmAqTipWLSQ9P1FxdGhuU3IqP09TM3NqSwp6bzxfVV5me35hZzYwdWw+ak5w
S2E5MntATkgrU3N0WCVAfXhCKkprIWx9UFoxY0NsSW5zfn01XiFSbmNVaypybUEKeiVTSVZndDU4
RVF4TEorT2lGcTx5dTRlT0R8OUx0M2ROc2VmeE91cSlEJiRfJWowRGdxQ3kxZ3pjfHRURDMqbWVl
Cnp7PSV8PGBgfV9IeXBoT3V7Oyl4a1JnK1FuSENDM1RmK2tzcHFWNip8UUstUmNxRH00PktrQnV3
cXV5WkxVcHxncgp6UFViVWJGYkJyUGQxeE9gXkMqci1pM3A5KkYjKE9CaCE0V3lAYUMmKiF8T3xH
WGNqREEmWWhGeztjRDcqbyhHU14KekBwUVNFNyl4XzgxPVF5amU2KkxRI1RYdS03KG87Uzh1M3Rw
REE8U2djS2NLT3BtQTs9SEJaU0BPRlRAX1hPdnhxCnoqTnwzS0x5dGd6SDZHVSYmVW9jNFp6azRs
dW0zUHs5P2ZwSTQrUUdQSit2NmAxbGZScTNMY1MqKE0qV0srfGIlTwp6ZSR6PjBfZGRqJWhtQ3Nw
ZVhkaFlSfS1pOUE9Q2BFb0NoVVl1SH5eeCE5K3wmKFBnYio+Q2s8PTlqfCkqQHh5ZlQKenBQIytL
dDx9MzlifDNXbDRmeFQoK0c/YUg+Z0deZEBNRWFVT0pSZnk1NVR0Rkk3XlkpVnVNVT03UHAweTU1
alN+CnorVEopaWdNeXJxa1g7d1U4ajY4aUlEdHFKWWhTX0QzX09lbS1AZzZtZV9SZmlRfXVUX0st
QS05cUclfWdrM0U5Ywp6IThgS2dzTU5YbSliZWxvUGZNcWwqfCYkTT4xcWBpIWNZKVJGWW5qTll1
KmdTdkA4WGViVjclfXhZTD42KUdKUEoKekpwQTdLMzFsY0p1SUZLU3cte3g0RlgwSzJBeil+WGc8
YHNPdSQ0fF48TUM3QCt4Ynd4c0dnVHZKSUFMalB7NjhMCno4QVl1U0dTMEdVZ2s2V2B2NFc7Unkq
dW9FVG51bFBpfDU3MyVsdipaeHcjdjZ5VVFeTU9mY3BUI1Y4UklEViMjTgp6RDFgK0FlbXNPaCl3
YldERXhWY2ZwS3opanlWPTx+JlpYUGc2Y3xaREU3VTRiazxEXj4tKF5YSlg0WXpvaU5SdkwKenl1
WTd+MjZ3LVBeWnclNkZ9c2hCd1YyJDAyYzhSc1NVeTZkTTkyZGlDQXhpWDNJVXFzcTVpZzY+VV8h
VnkqcTUkCnpqbX0xNnRKcitRWiZUP0hra3BlSXdWWC1yMUVJPUAlWmx0OzY8dHdIODZJRD5nKm1q
JkUhQSkpJWdYSj14NnUjbAp6Y0tFUD5ieDRycVYqa2BCQnJaJE1xanR7VHNIY3hVSD47KWlBS31C
KEtpbGEmVkQlYj82bSZeMFdLNF4mRVpOQUkKejhBTVlzXyUkRCV8TStAK2NRcUwtaGk0eUc+aCpq
d2RpaSFXMXt9cD5aaHdGWXRfNFN1MWtqWTk8YkFaanp+OWVrCnpfRGlhcitBZkpGUF85QHltVW8k
S1c+PC01YCEkVk5PSTF5KEVEU0g0V3BDaWpFXz5hbCFOdD1eZVZFUiN1SjE9Ygp6O0JXRjJJZ3lG
NUxleFYreWVjJEtpbjtBaUBteW87Rz56SiZqcmRXI2VjWGhJWnBoNU9ZcXdfUEVmY0Y1NjxPMTkK
ekwpOHIhS00oKWlmMGBAP1c0KEpkYyk3V29QR14mPSQ8elVzTStIQ1dha0NeM3RaeGsrUGpRR31C
Plo1PFo2Vnh3CnpCQEhyViQmbH5AVGFqNzBwY2V7aVN1UkxzVWN6RFlfNVRuRHE4UHlfUTN3aGBE
OCE0aks7dkZkUlArUTA9ekp5Kgp6enVXZCUhYWlARHt8Kko8STtPRCZpJWx7SnAtOCpQdTNWR0xX
aXlrNnYjWG1RcXdgLSslZSR8Q0p3KkBgNXpiMzwKekV9eiM7a1JoTCZxNVBERzZAbW0qJD5adV9a
WkUjcTNNYytOJjFPXjdob2g5UVI3YCtMJGNCUDVwcUc9ZnFBMHVoCnpVQnVrYXhURm1IKTx8WGJ2
cDJjPUhTYk5rcFh3NzNhNWx2N1YkamI5MiN5WjE0MUAkWD9GfUp0OGdJVTdXbTZtOQp6P2VfOzt6
c25tNmBMWmVQPlQ9JClLcj5aP2tyKlVtRnFSN3p4MEM2XmJtY3NjQDFBR3R3X3JOSD4tWG0kZCp8
UTwKem4mMUxuMHU3PWwmSUxzPiVDa0pwYERpRzlGMTh4NE5lK2xnPCNpP2U3akwleDs0Wm5Sa05e
TXgwNypxb002TjwkCkVmKD4wTiEya2ROCgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJq
cy9jcm9zc2RvbWFpbi54bWwgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL2Nyb3NzZG9tYWluLnhtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wYzE2YTdhMDdiMzdlNWQ1ZjdlMGU1NmM4MjlmNzIwMDY3NDU4NDAzCi0tLSAv
ZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9jcm9zc2RvbWFpbi54bWwKQEAgLTAs
MCArMSwxNSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIj8+Cis8IURPQ1RZUEUgY3Jvc3MtZG9tYWlu
LXBvbGljeSBTWVNURU0gImh0dHA6Ly93d3cuYWRvYmUuY29tL3htbC9kdGRzL2Nyb3NzLWRvbWFp
bi1wb2xpY3kuZHRkIj4KKzxjcm9zcy1kb21haW4tcG9saWN5PgorICA8IS0tIFJlYWQgdGhpczog
d3d3LmFkb2JlLmNvbS9kZXZuZXQvYXJ0aWNsZXMvY3Jvc3Nkb21haW5fcG9saWN5X2ZpbGVfc3Bl
Yy5odG1sIC0tPgorCisgIDwhLS0gTW9zdCByZXN0cmljdGl2ZSBwb2xpY3k6IC0tPgorICA8c2l0
ZS1jb250cm9sIHBlcm1pdHRlZC1jcm9zcy1kb21haW4tcG9saWNpZXM9Im5vbmUiLz4KKworICA8
IS0tIExlYXN0IHJlc3RyaWN0aXZlIHBvbGljeTogLS0+CisgIDwhLS0KKyAgPHNpdGUtY29udHJv
bCBwZXJtaXR0ZWQtY3Jvc3MtZG9tYWluLXBvbGljaWVzPSJhbGwiLz4KKyAgPGFsbG93LWFjY2Vz
cy1mcm9tIGRvbWFpbj0iKiIgdG8tcG9ydHM9IioiIHNlY3VyZT0iZmFsc2UiLz4KKyAgPGFsbG93
LWh0dHAtcmVxdWVzdC1oZWFkZXJzLWZyb20gZG9tYWluPSIqIiBoZWFkZXJzPSIqIiBzZWN1cmU9
ImZhbHNlIi8+CisgIC0tPgorPC9jcm9zcy1kb21haW4tcG9saWN5PgpkaWZmIC0tZ2l0IGEvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvZW1iZXJqcy9pbmRleC5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9pbmRleC5o
dG1sCmluZGV4IDE1OTA5NzRlZjk2MTNhMjg3OTU3MzkwYjFhYThhNGRhNDZjODkwM2EuLjU4MzJk
ZjdiMGMyYzIyOTA3OTQxZDIwZWFjNTY5NTBjNzNjYTVmZmQgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2VtYmVyanMvaW5kZXguaHRtbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL2luZGV4Lmh0
bWwKQEAgLTEsNzggKzEsMjQgQEAKLTwhZG9jdHlwZSBodG1sPgotPGh0bWwgbGFuZz0iZW4iIGRh
dGEtZnJhbWV3b3JrPSJlbWJlcmpzIj4KLSAgICA8aGVhZD4KLSAgICAgICAgPG1ldGEgY2hhcnNl
dD0idXRmLTgiPgotICAgICAgICA8dGl0bGU+ZW1iZXIuanMg4oCiIFRvZG9NVkM8L3RpdGxlPgot
ICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9ImJvd2VyX2NvbXBvbmVudHMvdG9k
b212Yy1jb21tb24vYmFzZS5jc3MiPgotICAgIDwvaGVhZD4KLSAgICA8Ym9keT4KLSAgICAgICAg
PHNjcmlwdCB0eXBlPSJ0ZXh0L3gtaGFuZGxlYmFycyIgZGF0YS10ZW1wbGF0ZS1uYW1lPSJ0b2Rv
cyI+Ci0gICAgICAgICAgICA8c2VjdGlvbiBpZD0idG9kb2FwcCI+Ci0gICAgICAgICAgICAgICAg
PGhlYWRlciBpZD0iaGVhZGVyIj4KLSAgICAgICAgICAgICAgICAgICAgPGgxPnRvZG9zPC9oMT4K
LSAgICAgICAgICAgICAgICAgICAge3tpbnB1dCBpZD0ibmV3LXRvZG8iIHR5cGU9InRleHQiIHZh
bHVlPW5ld1RpdGxlIGFjdGlvbj0iY3JlYXRlVG9kbyIgcGxhY2Vob2xkZXI9IldoYXQgbmVlZHMg
dG8gYmUgZG9uZT8ifX0KLSAgICAgICAgICAgICAgICA8L2hlYWRlcj4KLSAgICAgICAgICAgICAg
ICB7eyNpZiBsZW5ndGh9fQotICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBpZD0ibWFpbiI+
Ci0gICAgICAgICAgICAgICAgICAgICAgICA8dWwgaWQ9InRvZG8tbGlzdCI+Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAge3sjZWFjaCBmaWx0ZXJlZFRvZG9zIGl0ZW1Db250cm9sbGVyPSJ0
b2RvIn19Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSB7e2JpbmQtYXR0ciBj
bGFzcz0iaXNDb21wbGV0ZWQ6Y29tcGxldGVkIGlzRWRpdGluZzplZGl0aW5nIn19PgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sjaWYgaXNFZGl0aW5nfX0KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2VkaXQtdG9kbyBjbGFzcz0iZWRpdCIg
dmFsdWU9YnVmZmVyZWRUaXRsZSBmb2N1cy1vdXQ9ImRvbmVFZGl0aW5nIiBpbnNlcnQtbmV3bGlu
ZT0iZG9uZUVkaXRpbmciIGVzY2FwZS1wcmVzcz0iY2FuY2VsRWRpdGluZyJ9fQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAge3tlbHNlfX0KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB7e2lucHV0IHR5cGU9ImNoZWNrYm94IiBjbGFzcz0idG9nZ2xl
IiBjaGVja2VkPWlzQ29tcGxldGVkfX0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8bGFiZWwge3thY3Rpb24gImVkaXRUb2RvIiBvbj0iZG91YmxlQ2xpY2sifX0+e3t0
aXRsZX19PC9sYWJlbD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8
YnV0dG9uIHt7YWN0aW9uICJyZW1vdmVUb2RvIn19IGNsYXNzPSJkZXN0cm95Ij48L2J1dHRvbj4K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7L2lmfX0KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAge3svZWFjaH19Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgotICAgICAgICAgICAg
ICAgICAgICAgICAge3tpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9InRvZ2dsZS1hbGwiIGNoZWNr
ZWQ9YWxsQXJlRG9uZX19Ci0gICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KLSAgICAgICAg
ICAgICAgICAgICAgPGZvb3RlciBpZD0iZm9vdGVyIj4KLSAgICAgICAgICAgICAgICAgICAgICAg
IDxzcGFuIGlkPSJ0b2RvLWNvdW50Ij48c3Ryb25nPnt7cmVtYWluaW5nLmxlbmd0aH19PC9zdHJv
bmc+IHt7cGx1cmFsaXplICdpdGVtJyByZW1haW5pbmcubGVuZ3RofX0gbGVmdDwvc3Bhbj4KLSAg
ICAgICAgICAgICAgICAgICAgICAgIDx1bCBpZD0iZmlsdGVycyI+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPGxpPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyNsaW5r
LXRvICJ0b2Rvcy5pbmRleCIgYWN0aXZlQ2xhc3M9InNlbGVjdGVkIn19QWxse3svbGluay10b319
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8bGk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7I2xpbmstdG8g
InRvZG9zLmFjdGl2ZSIgYWN0aXZlQ2xhc3M9InNlbGVjdGVkIn19QWN0aXZle3svbGluay10b319
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8bGk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7I2xpbmstdG8g
InRvZG9zLmNvbXBsZXRlZCIgYWN0aXZlQ2xhc3M9InNlbGVjdGVkIn19Q29tcGxldGVke3svbGlu
ay10b319Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KLSAgICAgICAgICAgICAg
ICAgICAgICAgIDwvdWw+Ci0gICAgICAgICAgICAgICAgICAgICAgICB7eyNpZiBjb21wbGV0ZWQu
bGVuZ3RofX0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPSJjbGVhci1j
b21wbGV0ZWQiIHt7YWN0aW9uICJjbGVhckNvbXBsZXRlZCJ9fT4KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ2xlYXIgY29tcGxldGVkICh7e2NvbXBsZXRlZC5sZW5ndGh9fSkKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KLSAgICAgICAgICAgICAgICAgICAg
ICAgIHt7L2lmfX0KLSAgICAgICAgICAgICAgICAgICAgPC9mb290ZXI+Ci0gICAgICAgICAgICAg
ICAge3svaWZ9fQotICAgICAgICAgICAgPC9zZWN0aW9uPgotICAgICAgICAgICAgPGZvb3RlciBp
ZD0iaW5mbyI+Ci0gICAgICAgICAgICAgICAgPHA+RG91YmxlLWNsaWNrIHRvIGVkaXQgYSB0b2Rv
PC9wPgotICAgICAgICAgICAgICAgIDxwPgotICAgICAgICAgICAgICAgICAgICBDcmVhdGVkIGJ5
Ci0gICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9naXRodWIuY29tL3RvbWRhbGUi
PlRvbSBEYWxlPC9hPiwKLSAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL2dpdGh1
Yi5jb20vYWRkeW9zbWFuaSI+QWRkeSBPc21hbmk8L2E+Ci0gICAgICAgICAgICAgICAgPC9wPgot
ICAgICAgICAgICAgICAgIDxwPlBhcnQgb2YgPGEgaHJlZj0iaHR0cDovL3RvZG9tdmMuY29tIj5U
b2RvTVZDPC9hPjwvcD4KLSAgICAgICAgICAgIDwvZm9vdGVyPgotICAgICAgICA8L3NjcmlwdD4K
LSAgICAgICAgPHNjcmlwdCBzcmM9ImJvd2VyX2NvbXBvbmVudHMvdG9kb212Yy1jb21tb24vYmFz
ZS5qcyI+PC9zY3JpcHQ+Ci0gICAgICAgIDxzY3JpcHQgc3JjPSJib3dlcl9jb21wb25lbnRzL2px
dWVyeS9qcXVlcnkuanMiPjwvc2NyaXB0PgotICAgICAgICA8c2NyaXB0IHNyYz0iYm93ZXJfY29t
cG9uZW50cy9oYW5kbGViYXJzL2hhbmRsZWJhcnMuanMiPjwvc2NyaXB0PgotICAgICAgICA8c2Ny
aXB0IHNyYz0iYm93ZXJfY29tcG9uZW50cy9lbWJlci9lbWJlci5qcyI+PC9zY3JpcHQ+Ci0gICAg
ICAgIDxzY3JpcHQgc3JjPSJib3dlcl9jb21wb25lbnRzL2VtYmVyLWRhdGEvZW1iZXItZGF0YS5q
cyI+PC9zY3JpcHQ+Ci0gICAgICAgIDxzY3JpcHQgc3JjPSJib3dlcl9jb21wb25lbnRzL2VtYmVy
LWxvY2Fsc3RvcmFnZS1hZGFwdGVyL2xvY2Fsc3RvcmFnZV9hZGFwdGVyLmpzIj48L3NjcmlwdD4K
LSAgICAgICAgPHNjcmlwdCBzcmM9ImpzL2FwcC5qcyI+PC9zY3JpcHQ+Ci0gICAgICAgIDxzY3Jp
cHQgc3JjPSJqcy9yb3V0ZXIuanMiPjwvc2NyaXB0PgotICAgICAgICA8c2NyaXB0IHNyYz0ianMv
bW9kZWxzL3RvZG8uanMiPjwvc2NyaXB0PgotICAgICAgICA8c2NyaXB0IHNyYz0ianMvY29udHJv
bGxlcnMvdG9kb3NfY29udHJvbGxlci5qcyI+PC9zY3JpcHQ+Ci0gICAgICAgIDxzY3JpcHQgc3Jj
PSJqcy9jb250cm9sbGVycy90b2RvX2NvbnRyb2xsZXIuanMiPjwvc2NyaXB0PgotICAgICAgICA8
c2NyaXB0IHNyYz0ianMvdmlld3MvZWRpdF90b2RvX3ZpZXcuanMiPjwvc2NyaXB0PgotICAgICAg
ICA8c2NyaXB0IHNyYz0ianMvdmlld3MvdG9kb3Nfdmlldy5qcyI+PC9zY3JpcHQ+Ci0gICAgICAg
IDxzY3JpcHQgc3JjPSJqcy9oZWxwZXJzL3BsdXJhbGl6ZS5qcyI+PC9zY3JpcHQ+Ci0gICAgPC9i
b2R5PgorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgPGhlYWQ+CisgICAgPG1ldGEgY2hhcnNl
dD0idXRmLTgiPgorICAgIDxtZXRhIGh0dHAtZXF1aXY9IlgtVUEtQ29tcGF0aWJsZSIgY29udGVu
dD0iSUU9ZWRnZSI+CisgICAgPHRpdGxlPlRvZG9tdmM8L3RpdGxlPgorICAgIDxtZXRhIG5hbWU9
ImRlc2NyaXB0aW9uIiBjb250ZW50PSIiPgorICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250
ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSI+CisgICAgPGJhc2UgaHJl
Zj0iL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMiIC8+CisgICAgCis8bWV0YSBuYW1lPSJ0b2RvbXZjL2Nv
bmZpZy9lbnZpcm9ubWVudCIgY29udGVudD0iJTdCJTIybW9kdWxlUHJlZml4JTIyJTNBJTIydG9k
b212YyUyMiUyQyUyMmVudmlyb25tZW50JTIyJTNBJTIycHJvZHVjdGlvbiUyMiUyQyUyMmJhc2VV
UkwlMjIlM0FudWxsJTJDJTIybG9jYXRpb25UeXBlJTIyJTNBJTIyYXV0byUyMiUyQyUyMkVtYmVy
RU5WJTIyJTNBJTdCJTIyRkVBVFVSRVMlMjIlM0ElN0IlN0QlN0QlMkMlMjJBUFAlMjIlM0ElN0Il
MjJuYW1lJTIyJTNBJTIydG9kb212YyUyMiUyQyUyMnZlcnNpb24lMjIlM0ElMjIwLjAuMCs1MGQ0
NmI0YyUyMiU3RCUyQyUyMmV4cG9ydEFwcGxpY2F0aW9uR2xvYmFsJTIyJTNBZmFsc2UlN0QiIC8+
CisKKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpz
L2Fzc2V0cy92ZW5kb3ItN2I1Yzk4NTIwOTEwYWZhNThkNzRlMDVlYzg2Y2Q4NzMuY3NzIj4KKyAg
ICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL2Fzc2V0
cy90b2RvbXZjLWQ0MWQ4Y2Q5OGYwMGIyMDRlOTgwMDk5OGVjZjg0MjdlLmNzcyI+CisKKyAgPC9o
ZWFkPgorICA8Ym9keT4KKyAgICAKKyAgICA8c2NyaXB0IHNyYz0iL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVy
anMvYXNzZXRzL3ZlbmRvci05ODM2YWM4YjAxNmZjZWE2Zjg5Y2NmOTI5MTc3NzJmNi5qcyI+PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL2Fzc2V0cy90b2Rv
bXZjLWZkZDJjNDhjZjY3NTc1M2RlNGE3OWM4NTczNDNlMjNmLmpzIj48L3NjcmlwdD4KKworICAg
IAorICA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL2pz
L2FwcC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvanMvYXBwLmpzCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBjNjBmODFmNTY0ZGNlMjQ1NzM3YTgyYzI1ODY5MjcwZjE2MjUxZGM1Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2VtYmVyanMvanMvYXBwLmpzCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi0vKmdsb2Jh
bCBFbWJlciwgRFMsIFRvZG9zOnRydWUgKi8KLXdpbmRvdy5Ub2RvcyA9IEVtYmVyLkFwcGxpY2F0
aW9uLmNyZWF0ZSgpOwotCi1Ub2Rvcy5BcHBsaWNhdGlvbkFkYXB0ZXIgPSBEUy5MU0FkYXB0ZXIu
ZXh0ZW5kKHsKLSAgICBuYW1lc3BhY2U6ICd0b2Rvcy1lbWJlcmpzJwotfSk7CmRpZmYgLS1naXQg
YS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9lbWJlcmpzL2pzL2NvbnRyb2xsZXJzL3RvZG9fY29udHJvbGxlci5qcyBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2VtYmVyanMvanMvY29udHJvbGxlcnMvdG9kb19jb250cm9sbGVyLmpzCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YWZlODEwMmVkZGVhYmFjYjBmNDY1YWMzYjVi
NTMyNzNjMTQ5YTVmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvanMvY29udHJvbGxlcnMvdG9kb19jb250cm9sbGVyLmpz
CisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotLypnbG9iYWwgVG9kb3MsIEVtYmVyICov
Ci0ndXNlIHN0cmljdCc7Ci0KLVRvZG9zLlRvZG9Db250cm9sbGVyID0gRW1iZXIuT2JqZWN0Q29u
dHJvbGxlci5leHRlbmQoewotICAgIGlzRWRpdGluZzogZmFsc2UsCi0KLSAgICAvLyBXZSB1c2Ug
dGhlIGJ1ZmZlcmVkVGl0bGUgdG8gc3RvcmUgdGhlIG9yaWdpbmFsIHZhbHVlIG9mCi0gICAgLy8g
dGhlIG1vZGVsJ3MgdGl0bGUgc28gdGhhdCB3ZSBjYW4gcm9sbCBpdCBiYWNrIGxhdGVyIGluIHRo
ZQotICAgIC8vIGBjYW5jZWxFZGl0aW5nYCBhY3Rpb24uCi0gICAgYnVmZmVyZWRUaXRsZTogRW1i
ZXIuY29tcHV0ZWQub25lV2F5KCd0aXRsZScpLAotCi0gICAgYWN0aW9uczogewotICAgICAgICBl
ZGl0VG9kbzogZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgdGhpcy5zZXQoJ2lzRWRpdGluZycs
IHRydWUpOwotICAgICAgICB9LAotCi0gICAgICAgIGRvbmVFZGl0aW5nOiBmdW5jdGlvbiAoKSB7
Ci0gICAgICAgICAgICB2YXIgYnVmZmVyZWRUaXRsZSA9IHRoaXMuZ2V0KCdidWZmZXJlZFRpdGxl
JykudHJpbSgpOwotCi0gICAgICAgICAgICBpZiAoRW1iZXIuaXNFbXB0eShidWZmZXJlZFRpdGxl
KSkgewotICAgICAgICAgICAgICAgIC8vIFRoZSBgZG9uZUVkaXRpbmdgIGFjdGlvbiBnZXRzIHNl
bnQgdHdpY2Ugd2hlbiB0aGUgdXNlciBoaXRzCi0gICAgICAgICAgICAgICAgLy8gZW50ZXIgKG9u
Y2UgdmlhICdpbnNlcnQtbmV3bGluZScgYW5kIG9uY2UgdmlhICdmb2N1cy1vdXQnKS4KLSAgICAg
ICAgICAgICAgICAvLwotICAgICAgICAgICAgICAgIC8vIFdlIGRlYm91bmNlIG91ciBjYWxsIHRv
ICdyZW1vdmVUb2RvJyBzbyB0aGF0IGl0IG9ubHkgZ2V0cwotICAgICAgICAgICAgICAgIC8vIG1h
ZGUgb25jZS4KLSAgICAgICAgICAgICAgICBFbWJlci5ydW4uZGVib3VuY2UodGhpcywgJ3JlbW92
ZVRvZG8nLCAwKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgdmFyIHRv
ZG8gPSB0aGlzLmdldCgnbW9kZWwnKTsKLSAgICAgICAgICAgICAgICB0b2RvLnNldCgndGl0bGUn
LCBidWZmZXJlZFRpdGxlKTsKLSAgICAgICAgICAgICAgICB0b2RvLnNhdmUoKTsKLSAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgLy8gUmUtc2V0IG91ciBuZXdseSBlZGl0ZWQgdGl0bGUgdG8g
cGVyc2lzdCBpdHMgdHJpbW1lZCB2ZXJzaW9uCi0gICAgICAgICAgICB0aGlzLnNldCgnYnVmZmVy
ZWRUaXRsZScsIGJ1ZmZlcmVkVGl0bGUpOwotICAgICAgICAgICAgdGhpcy5zZXQoJ2lzRWRpdGlu
ZycsIGZhbHNlKTsKLSAgICAgICAgfSwKLQotICAgICAgICBjYW5jZWxFZGl0aW5nOiBmdW5jdGlv
biAoKSB7Ci0gICAgICAgICAgICB0aGlzLnNldCgnYnVmZmVyZWRUaXRsZScsIHRoaXMuZ2V0KCd0
aXRsZScpKTsKLSAgICAgICAgICAgIHRoaXMuc2V0KCdpc0VkaXRpbmcnLCBmYWxzZSk7Ci0gICAg
ICAgIH0sCi0KLSAgICAgICAgcmVtb3ZlVG9kbzogZnVuY3Rpb24gKCkgewotICAgICAgICAgICAg
dGhpcy5yZW1vdmVUb2RvKCk7Ci0gICAgICAgIH0KLSAgICB9LAotCi0gICAgcmVtb3ZlVG9kbzog
ZnVuY3Rpb24gKCkgewotICAgICAgICB2YXIgdG9kbyA9IHRoaXMuZ2V0KCdtb2RlbCcpOwotCi0g
ICAgICAgIHRvZG8uZGVsZXRlUmVjb3JkKCk7Ci0gICAgICAgIHRvZG8uc2F2ZSgpOwotICAgIH0s
Ci0KLSAgICBzYXZlV2hlbkNvbXBsZXRlZDogZnVuY3Rpb24gKCkgewotICAgICAgICB0aGlzLmdl
dCgnbW9kZWwnKS5zYXZlKCk7Ci0gICAgfS5vYnNlcnZlcygnaXNDb21wbGV0ZWQnKQotfSk7CmRp
ZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL2pzL2NvbnRyb2xsZXJzL3RvZG9zX2NvbnRy
b2xsZXIuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL2pzL2NvbnRyb2xsZXJzL3RvZG9zX2NvbnRy
b2xsZXIuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzOGRlNGMxNDYwNjBjOWEz
NGQxNDU1MzExMTMzN2E3ZDhmMDRmNWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9qcy9jb250cm9sbGVycy90b2Rvc19j
b250cm9sbGVyLmpzCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLypnbG9iYWwgVG9k
b3MsIEVtYmVyICovCi0ndXNlIHN0cmljdCc7Ci0KLVRvZG9zLlRvZG9zQ29udHJvbGxlciA9IEVt
YmVyLkFycmF5Q29udHJvbGxlci5leHRlbmQoewotICAgIGFjdGlvbnM6IHsKLSAgICAgICAgY3Jl
YXRlVG9kbzogZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgdmFyIHRpdGxlLCB0b2RvOwotCi0g
ICAgICAgICAgICAvLyBHZXQgdGhlIHRvZG8gdGl0bGUgc2V0IGJ5IHRoZSAiTmV3IFRvZG8iIHRl
eHQgZmllbGQKLSAgICAgICAgICAgIHRpdGxlID0gdGhpcy5nZXQoJ25ld1RpdGxlJykudHJpbSgp
OwotICAgICAgICAgICAgaWYgKCF0aXRsZSkgewotICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gQ3JlYXRlIHRoZSBuZXcgVG9kbyBtb2RlbAot
ICAgICAgICAgICAgdG9kbyA9IHRoaXMuc3RvcmUuY3JlYXRlUmVjb3JkKCd0b2RvJywgewotICAg
ICAgICAgICAgICAgIHRpdGxlOiB0aXRsZSwKLSAgICAgICAgICAgICAgICBpc0NvbXBsZXRlZDog
ZmFsc2UKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgdG9kby5zYXZlKCk7Ci0KLSAgICAg
ICAgICAgIC8vIENsZWFyIHRoZSAiTmV3IFRvZG8iIHRleHQgZmllbGQKLSAgICAgICAgICAgIHRo
aXMuc2V0KCduZXdUaXRsZScsICcnKTsKLSAgICAgICAgfSwKLQotICAgICAgICBjbGVhckNvbXBs
ZXRlZDogZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgdmFyIGNvbXBsZXRlZCA9IHRoaXMuZ2V0
KCdjb21wbGV0ZWQnKTsKLSAgICAgICAgICAgIGNvbXBsZXRlZC5pbnZva2UoJ2RlbGV0ZVJlY29y
ZCcpOwotICAgICAgICAgICAgY29tcGxldGVkLmludm9rZSgnc2F2ZScpOwotICAgICAgICB9LAot
ICAgIH0sCi0KLSAgICAvKiBwcm9wZXJ0aWVzICovCi0KLSAgICByZW1haW5pbmc6IEVtYmVyLmNv
bXB1dGVkLmZpbHRlckJ5KCdjb250ZW50JywgJ2lzQ29tcGxldGVkJywgZmFsc2UpLAotICAgIGNv
bXBsZXRlZDogRW1iZXIuY29tcHV0ZWQuZmlsdGVyQnkoJ2NvbnRlbnQnLCAnaXNDb21wbGV0ZWQn
LCB0cnVlKSwKLQotICAgIGFsbEFyZURvbmU6IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7Ci0gICAg
ICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7Ci0gICAgICAgICAgICB0aGlzLnNldEVhY2go
J2lzQ29tcGxldGVkJywgdmFsdWUpOwotICAgICAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgdmFyIGxlbmd0aCA9IHRoaXMuZ2V0KCdsZW5ndGgnKTsK
LSAgICAgICAgICAgIHZhciBjb21wbGV0ZWRMZW5ndGggPSB0aGlzLmdldCgnY29tcGxldGVkLmxl
bmd0aCcpOwotCi0gICAgICAgICAgICByZXR1cm4gbGVuZ3RoID4gMCAmJiBsZW5ndGggPT09IGNv
bXBsZXRlZExlbmd0aDsKLSAgICAgICAgfQotICAgIH0ucHJvcGVydHkoJ2xlbmd0aCcsICdjb21w
bGV0ZWQubGVuZ3RoJykKLX0pOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9qcy9o
ZWxwZXJzL3BsdXJhbGl6ZS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvanMvaGVscGVycy9wbHVy
YWxpemUuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDliNjI0NGM5NTM4N2RiYzZl
YTk4M2M5MjE3MDAyZWY3OTBmNGI5MDcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9qcy9oZWxwZXJzL3BsdXJhbGl6ZS5q
cworKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotLypnbG9iYWwgVG9kb3MsIEVtYmVyICov
Ci0ndXNlIHN0cmljdCc7Ci0KLUVtYmVyLkhhbmRsZWJhcnMuaGVscGVyKCdwbHVyYWxpemUnLCBm
dW5jdGlvbiAoc2luZ3VsYXIsIGNvdW50KSB7Ci0gICAgLyogRnJvbSBFbWJlci1EYXRhICovCi0g
ICAgdmFyIGluZmxlY3RvciA9IG5ldyBFbWJlci5JbmZsZWN0b3IoRW1iZXIuSW5mbGVjdG9yLmRl
ZmF1bHRSdWxlcyk7Ci0KLSAgICByZXR1cm4gY291bnQgPT09IDEgPyBzaW5ndWxhciA6IGluZmxl
Y3Rvci5wbHVyYWxpemUoc2luZ3VsYXIpOwotfSk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9l
bWJlcmpzL2pzL21vZGVscy90b2RvLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9qcy9tb2RlbHMv
dG9kby5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzE5MTIwMmQxMDBmN2FlM2Fh
NWVmYjQxMDRmNmVkZjM3YWI2NWNmMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL2pzL21vZGVscy90b2RvLmpzCisrKyAv
ZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi0vKmdsb2JhbCBUb2RvcywgRFMgKi8KLSd1c2Ugc3Ry
aWN0JzsKLQotVG9kb3MuVG9kbyA9IERTLk1vZGVsLmV4dGVuZCh7Ci0gICAgdGl0bGU6IERTLmF0
dHIoJ3N0cmluZycpLAotICAgIGlzQ29tcGxldGVkOiBEUy5hdHRyKCdib29sZWFuJykKLX0pOwpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9qcy9yb3V0ZXIuanMgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9lbWJlcmpzL2pzL3JvdXRlci5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjAz
ZjYyOWIwNDUxMzllMTFjOTRkYTA4YmQ0MmNiMjJjYTM1ZTYwMC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL2pzL3JvdXRl
ci5qcworKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLS8qZ2xvYmFsIEVtYmVyLCBUb2Rv
cyAqLwotJ3VzZSBzdHJpY3QnOwotCi1Ub2Rvcy5Sb3V0ZXIubWFwKGZ1bmN0aW9uICgpIHsKLSAg
ICB0aGlzLnJlc291cmNlKCd0b2RvcycsIHsgcGF0aDogJy8nIH0sIGZ1bmN0aW9uICgpIHsKLSAg
ICAgICAgdGhpcy5yb3V0ZSgnYWN0aXZlJyk7Ci0gICAgICAgIHRoaXMucm91dGUoJ2NvbXBsZXRl
ZCcpOwotICAgIH0pOwotfSk7Ci0KLVRvZG9zLlRvZG9zUm91dGUgPSBFbWJlci5Sb3V0ZS5leHRl
bmQoewotICAgIG1vZGVsOiBmdW5jdGlvbiAoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnN0b3Jl
LmZpbmQoJ3RvZG8nKTsKLSAgICB9Ci19KTsKLQotVG9kb3MuVG9kb3NJbmRleFJvdXRlID0gRW1i
ZXIuUm91dGUuZXh0ZW5kKHsKLSAgICBzZXR1cENvbnRyb2xsZXI6IGZ1bmN0aW9uICgpIHsKLSAg
ICAgICAgdGhpcy5jb250cm9sbGVyRm9yKCd0b2RvcycpLnNldCgnZmlsdGVyZWRUb2RvcycsIHRo
aXMubW9kZWxGb3IoJ3RvZG9zJykpOwotICAgIH0KLX0pOwotCi1Ub2Rvcy5Ub2Rvc0FjdGl2ZVJv
dXRlID0gRW1iZXIuUm91dGUuZXh0ZW5kKHsKLSAgICBzZXR1cENvbnRyb2xsZXI6IGZ1bmN0aW9u
ICgpIHsKLSAgICAgICAgdmFyIHRvZG9zID0gdGhpcy5zdG9yZS5maWx0ZXIoJ3RvZG8nLCBmdW5j
dGlvbiAodG9kbykgewotICAgICAgICAgICAgcmV0dXJuICF0b2RvLmdldCgnaXNDb21wbGV0ZWQn
KTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgdGhpcy5jb250cm9sbGVyRm9yKCd0b2RvcycpLnNl
dCgnZmlsdGVyZWRUb2RvcycsIHRvZG9zKTsKLSAgICB9Ci19KTsKLQotVG9kb3MuVG9kb3NDb21w
bGV0ZWRSb3V0ZSA9IEVtYmVyLlJvdXRlLmV4dGVuZCh7Ci0gICAgc2V0dXBDb250cm9sbGVyOiBm
dW5jdGlvbiAoKSB7Ci0gICAgICAgIHZhciB0b2RvcyA9IHRoaXMuc3RvcmUuZmlsdGVyKCd0b2Rv
JywgZnVuY3Rpb24gKHRvZG8pIHsKLSAgICAgICAgICAgIHJldHVybiB0b2RvLmdldCgnaXNDb21w
bGV0ZWQnKTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgdGhpcy5jb250cm9sbGVyRm9yKCd0b2Rv
cycpLnNldCgnZmlsdGVyZWRUb2RvcycsIHRvZG9zKTsKLSAgICB9Ci19KTsKZGlmZiAtLWdpdCBh
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2VtYmVyanMvanMvdmlld3MvZWRpdF90b2RvX3ZpZXcuanMgYi9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9lbWJlcmpzL2pzL3ZpZXdzL2VkaXRfdG9kb192aWV3LmpzCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAyOWVlMzA4MDZhMGM0MzM2YTJhOTgxODlkYmYwYTkyODIxMWFmNWQwLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2VtYmVyanMvanMvdmlld3MvZWRpdF90b2RvX3ZpZXcuanMKKysrIC9kZXYvbnVsbApAQCAtMSwx
MiArMCwwIEBACi0vKmdsb2JhbCBUb2RvcywgRW1iZXIgKi8KLSd1c2Ugc3RyaWN0JzsKLQotVG9k
b3MuRWRpdFRvZG9WaWV3ID0gRW1iZXIuVGV4dEZpZWxkLmV4dGVuZCh7Ci0gICAgZm9jdXNPbklu
c2VydDogZnVuY3Rpb24gKCkgewotICAgICAgICAvLyBSZS1zZXQgaW5wdXQgdmFsdWUgdG8gZ2V0
IHJpZCBvZiBhIHJlZHVudGFudCB0ZXh0IHNlbGVjdGlvbgotICAgICAgICB0aGlzLiQoKS52YWwo
dGhpcy4kKCkudmFsKCkpOwotICAgICAgICB0aGlzLiQoKS5mb2N1cygpOwotICAgIH0ub24oJ2Rp
ZEluc2VydEVsZW1lbnQnKQotfSk7Ci0KLUVtYmVyLkhhbmRsZWJhcnMuaGVscGVyKCdlZGl0LXRv
ZG8nLCBUb2Rvcy5FZGl0VG9kb1ZpZXcpOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJq
cy9qcy92aWV3cy90b2Rvc192aWV3LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9qcy92aWV3cy90
b2Rvc192aWV3LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NmEwYjcxZTFiZWYy
ZDkwMDBjYjRjZTAxNjdkZjk2M2I1YjNkYjQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvanMvdmlld3MvdG9kb3Nfdmll
dy5qcworKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotLypnbG9iYWwgVG9kb3MsIEVtYmVy
ICovCi0ndXNlIHN0cmljdCc7Ci0KLVRvZG9zLlRvZG9zVmlldyA9IEVtYmVyLlZpZXcuZXh0ZW5k
KHsKLSAgICBmb2N1c0lucHV0OiBmdW5jdGlvbiAoKSB7Ci0gICAgICAgIHRoaXMuJCgnI25ldy10
b2RvJykuZm9jdXMoKTsKLSAgICB9Lm9uKCdkaWRJbnNlcnRFbGVtZW50JykKLX0pOwpkaWZmIC0t
Z2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9yZWFkbWUubWQgYi9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpz
L3JlYWRtZS5tZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmU0YmQyNGVlNzA5MGQ2
Zjk4NGRmNTY3YTE0NjRjZWMzNWY5YTA3Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3JlYWRtZS5tZAorKysgL2Rldi9u
dWxsCkBAIC0xLDMyICswLDAgQEAKLSMgRW1iZXIuanMgVG9kb01WQyBFeGFtcGxlCi0KLT4gQSBm
cmFtZXdvcmsgZm9yIGNyZWF0aW5nIGFtYml0aW91cyB3ZWIgYXBwbGljYXRpb25zLgotCi0+IF9b
RW1iZXIuanMgLSBlbWJlcmpzLmNvbV0oaHR0cDovL2VtYmVyanMuY29tKV8KLQotCi0jIyBMZWFy
bmluZyBFbWJlci5qcwotCi1UaGUgW0VtYmVyLmpzIHdlYnNpdGVdKGh0dHA6Ly9lbWJlcmpzLmNv
bSkgaXMgYSBncmVhdCByZXNvdXJjZSBmb3IgZ2V0dGluZyBzdGFydGVkLgotCi1IZXJlIGFyZSBz
b21lIGxpbmtzIHlvdSBtYXkgZmluZCBoZWxwZnVsOgotCi0qIFtHdWlkZXNdKGh0dHA6Ly9lbWJl
cmpzLmNvbS9ndWlkZXMpCi0qIFtBUEkgUmVmZXJlbmNlXShodHRwOi8vZW1iZXJqcy5jb20vYXBp
KQotKiBbU2NyZWVuY2FzdCAtIEJ1aWxkaW5nIGFuIEFwcCB3aXRoIEVtYmVyLmpzXShodHRwczov
L3d3dy55b3V0dWJlLmNvbS93YXRjaD92PUdhOTloTWk3d2ZZKQotKiBbQXBwbGljYXRpb25zIGJ1
aWx0IHdpdGggRW1iZXIuanNdKGh0dHA6Ly9lbWJlcmpzLmNvbS9lbWJlci11c2VycykKLSogW0Js
b2ddKGh0dHA6Ly9lbWJlcmpzLmNvbS9ibG9nKQotCi1BcnRpY2xlcyBhbmQgZ3VpZGVzIGZyb20g
dGhlIGNvbW11bml0eToKLQotKiBbR2V0dGluZyBJbnRvIEVtYmVyLmpzXShodHRwOi8vbmV0LnR1
dHNwbHVzLmNvbS90dXRvcmlhbHMvamF2YXNjcmlwdC1hamF4L2dldHRpbmctaW50by1lbWJlci1q
cykKLSogW0VtYmVyV2F0Y2hdKGh0dHA6Ly9lbWJlcndhdGNoLmNvbSkKLSogW0NvZGVTY2hvb2wg
Y291cnNlIFdhcm1pbmcgVXAgV2l0aCBFbWJlci5qc10oaHR0cHM6Ly93d3cuY29kZXNjaG9vbC5j
b20vY291cnNlcy93YXJtaW5nLXVwLXdpdGgtZW1iZXJqcykKLQotR2V0IGhlbHAgZnJvbSBvdGhl
ciBFbWJlci5qcyB1c2VyczoKLQotKiBbRW1iZXIuanMgb24gU3RhY2tPdmVyZmxvd10oaHR0cDov
L3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy90YWdnZWQvZW1iZXIuanMpCi0qIFtFbWJlci5q
cyBvbiBUd2l0dGVyXShodHRwOi8vdHdpdHRlci5jb20vZW1iZXJqcykKLSogW0VtYmVyLmpzIG9u
IEdvb2dsZSArXShodHRwczovL3BsdXMuZ29vZ2xlLmNvbS9jb21tdW5pdGllcy8xMDYzODcwNDk3
OTAzODc0NzEyMDUpCi0KLV9JZiB5b3UgaGF2ZSBvdGhlciBoZWxwZnVsIGxpbmtzIHRvIHNoYXJl
LCBvciBmaW5kIGFueSBvZiB0aGUgbGlua3MgYWJvdmUgbm8gbG9uZ2VyIHdvcmssIHBsZWFzZSBb
bGV0IHVzIGtub3ddKGh0dHBzOi8vZ2l0aHViLmNvbS90YXN0ZWpzL3RvZG9tdmMvaXNzdWVzKS5f
CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3JvYm90cy50eHQgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9lbWJlcmpzL3JvYm90cy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjU5MTY0NTJlNWZmNmM4YjQzZDZkN2M3
M2QwMDE1M2QzNGFjMzVkZQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMv
cm9ib3RzLnR4dApAQCAtMCwwICsxLDMgQEAKKyMgaHR0cDovL3d3dy5yb2JvdHN0eHQub3JnCitV
c2VyLWFnZW50OiAqCitEaXNhbGxvdzoKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMv
c291cmNlL2Fzc2V0cyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNlL2Fzc2V0cwpuZXcgZmls
ZSBtb2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lNjljMDZkZGY5ZjBkOWRhNzcyMmIxNzdmNTJlZjRmYWI0NTk1OWY1Ci0tLSAvZGV2L251
bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvYXNzZXRzCkBAIC0wLDAgKzEgQEAK
K3RvZG9tdmMvZGlzdC9hc3NldHMvClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvY3Jvc3Nkb21haW4ueG1sIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvZW1iZXJqcy9zb3VyY2UvY3Jvc3Nkb21haW4ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBjMTZhN2Ew
N2IzN2U1ZDVmN2UwZTU2YzgyOWY3MjAwNjc0NTg0MDMKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9lbWJlcmpzL3NvdXJjZS9jcm9zc2RvbWFpbi54bWwKQEAgLTAsMCArMSwxNSBAQAor
PD94bWwgdmVyc2lvbj0iMS4wIj8+Cis8IURPQ1RZUEUgY3Jvc3MtZG9tYWluLXBvbGljeSBTWVNU
RU0gImh0dHA6Ly93d3cuYWRvYmUuY29tL3htbC9kdGRzL2Nyb3NzLWRvbWFpbi1wb2xpY3kuZHRk
Ij4KKzxjcm9zcy1kb21haW4tcG9saWN5PgorICA8IS0tIFJlYWQgdGhpczogd3d3LmFkb2JlLmNv
bS9kZXZuZXQvYXJ0aWNsZXMvY3Jvc3Nkb21haW5fcG9saWN5X2ZpbGVfc3BlYy5odG1sIC0tPgor
CisgIDwhLS0gTW9zdCByZXN0cmljdGl2ZSBwb2xpY3k6IC0tPgorICA8c2l0ZS1jb250cm9sIHBl
cm1pdHRlZC1jcm9zcy1kb21haW4tcG9saWNpZXM9Im5vbmUiLz4KKworICA8IS0tIExlYXN0IHJl
c3RyaWN0aXZlIHBvbGljeTogLS0+CisgIDwhLS0KKyAgPHNpdGUtY29udHJvbCBwZXJtaXR0ZWQt
Y3Jvc3MtZG9tYWluLXBvbGljaWVzPSJhbGwiLz4KKyAgPGFsbG93LWFjY2Vzcy1mcm9tIGRvbWFp
bj0iKiIgdG8tcG9ydHM9IioiIHNlY3VyZT0iZmFsc2UiLz4KKyAgPGFsbG93LWh0dHAtcmVxdWVz
dC1oZWFkZXJzLWZyb20gZG9tYWluPSIqIiBoZWFkZXJzPSIqIiBzZWN1cmU9ImZhbHNlIi8+Cisg
IC0tPgorPC9jcm9zcy1kb21haW4tcG9saWN5PgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1i
ZXJqcy9zb3VyY2UvZGV2Lmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS9kZXYuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44NTczNDkyZTgwNTIxMzBhZTliYzU2YzY3ZWEwNDNlYzdjZmRjNGFjCi0t
LSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvZGV2Lmh0bWwKQEAg
LTAsMCArMSwyNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgPGhlYWQ+CisgICAgPG1l
dGEgY2hhcnNldD0idXRmLTgiPgorICAgIDxtZXRhIGh0dHAtZXF1aXY9IlgtVUEtQ29tcGF0aWJs
ZSIgY29udGVudD0iSUU9ZWRnZSI+CisgICAgPHRpdGxlPlRvZG9tdmM8L3RpdGxlPgorICAgIDxt
ZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSIiPgorICAgIDxtZXRhIG5hbWU9InZpZXdw
b3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSI+CisgICAg
PGJhc2UgaHJlZj0iL2V4YW1wbGVzL2VtYmVyLWNsaS9pbmRleC5odG1sIiAvPgorICAgIAorPG1l
dGEgbmFtZT0idG9kb212Yy9jb25maWcvZW52aXJvbm1lbnQiIGNvbnRlbnQ9IiU3QiUyMm1vZHVs
ZVByZWZpeCUyMiUzQSUyMnRvZG9tdmMlMjIlMkMlMjJlbnZpcm9ubWVudCUyMiUzQSUyMnByb2R1
Y3Rpb24lMjIlMkMlMjJiYXNlVVJMJTIyJTNBbnVsbCUyQyUyMmxvY2F0aW9uVHlwZSUyMiUzQSUy
MmF1dG8lMjIlMkMlMjJFbWJlckVOViUyMiUzQSU3QiUyMkZFQVRVUkVTJTIyJTNBJTdCJTdEJTdE
JTJDJTIyQVBQJTIyJTNBJTdCJTIybmFtZSUyMiUzQSUyMnRvZG9tdmMlMjIlMkMlMjJ2ZXJzaW9u
JTIyJTNBJTIyMC4wLjArNTBkNDZiNGMlMjIlN0QlMkMlMjJleHBvcnRBcHBsaWNhdGlvbkdsb2Jh
bCUyMiUzQWZhbHNlJTdEIiAvPgorCisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJh
c3NldHMvdmVuZG9yLTdiNWM5ODUyMDkxMGFmYTU4ZDc0ZTA1ZWM4NmNkODczLmNzcyI+CisgICAg
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJhc3NldHMvdG9kb212Yy1kNDFkOGNkOThmMDBi
MjA0ZTk4MDA5OThlY2Y4NDI3ZS5jc3MiPgorCisgICAgCisgIDwvaGVhZD4KKyAgPGJvZHk+Cisg
ICAgCisKKyAgICA8c2NyaXB0IHNyYz0iYXNzZXRzL3ZlbmRvci05ODM2YWM4YjAxNmZjZWE2Zjg5
Y2NmOTI5MTc3NzJmNi5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9ImFzc2V0cy90b2Rv
bXZjLWMwNzQ0M2E1ZjkyOGEwZDZkYjM2ZmVjMWM0ZTBmMGFlLmpzIj48L3NjcmlwdD4KKworICAg
IAorICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3Nv
dXJjZS9pbmRleC5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvaW5kZXguaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43MWU1ZjYwM2QyMTBiOTQwMzI1NTQyZTVjZDIyMzExODA3ZGI3NTY1Ci0tLSAv
ZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvaW5kZXguaHRtbApAQCAt
MCwwICsxLDI2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICA8aGVhZD4KKyAgICA8bWV0
YSBjaGFyc2V0PSJ1dGYtOCI+CisgICAgPG1ldGEgaHR0cC1lcXVpdj0iWC1VQS1Db21wYXRpYmxl
IiBjb250ZW50PSJJRT1lZGdlIj4KKyAgICA8dGl0bGU+VG9kb212YzwvdGl0bGU+CisgICAgPG1l
dGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IiI+CisgICAgPG1ldGEgbmFtZT0idmlld3Bv
cnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xIj4KKyAgICA8
YmFzZSBocmVmPSIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVy
anMiIC8+CisgICAgCis8bWV0YSBuYW1lPSJ0b2RvbXZjL2NvbmZpZy9lbnZpcm9ubWVudCIgY29u
dGVudD0iJTdCJTIybW9kdWxlUHJlZml4JTIyJTNBJTIydG9kb212YyUyMiUyQyUyMmVudmlyb25t
ZW50JTIyJTNBJTIycHJvZHVjdGlvbiUyMiUyQyUyMmJhc2VVUkwlMjIlM0FudWxsJTJDJTIybG9j
YXRpb25UeXBlJTIyJTNBJTIyYXV0byUyMiUyQyUyMkVtYmVyRU5WJTIyJTNBJTdCJTIyRkVBVFVS
RVMlMjIlM0ElN0IlN0QlN0QlMkMlMjJBUFAlMjIlM0ElN0IlMjJuYW1lJTIyJTNBJTIydG9kb212
YyUyMiUyQyUyMnZlcnNpb24lMjIlM0ElMjIwLjAuMCs1MGQ0NmI0YyUyMiU3RCUyQyUyMmV4cG9y
dEFwcGxpY2F0aW9uR2xvYmFsJTIyJTNBZmFsc2UlN0QiIC8+CisKKyAgICA8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9ImFzc2V0cy92ZW5kb3ItN2I1Yzk4NTIwOTEwYWZhNThkNzRlMDVlYzg2
Y2Q4NzMuY3NzIj4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9ImFzc2V0cy90b2Rv
bXZjLWQ0MWQ4Y2Q5OGYwMGIyMDRlOTgwMDk5OGVjZjg0MjdlLmNzcyI+CisKKyAgICAKKyAgPC9o
ZWFkPgorICA8Ym9keT4KKyAgICAKKworICAgIDxzY3JpcHQgc3JjPSJhc3NldHMvdmVuZG9yLTk4
MzZhYzhiMDE2ZmNlYTZmODljY2Y5MjkxNzc3MmY2LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0
IHNyYz0iYXNzZXRzL3RvZG9tdmMtZmRkMmM0OGNmNjc1NzUzZGU0YTc5Yzg1NzM0M2UyM2YuanMi
Pjwvc2NyaXB0PgorCisgICAgCisgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2VtYmVyanMvc291cmNlL3JvYm90cy50eHQgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3Nv
dXJjZS9yb2JvdHMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY1OTE2NDUyZTVmZjZjOGI0M2Q2ZDdjNzNkMDAx
NTNkMzRhYzM1ZGUKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJj
ZS9yb2JvdHMudHh0CkBAIC0wLDAgKzEsMyBAQAorIyBodHRwOi8vd3d3LnJvYm90c3R4dC5vcmcK
K1VzZXItYWdlbnQ6ICoKK0Rpc2FsbG93OgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJq
cy9zb3VyY2UvdG9kb212Yy8uYm93ZXJyYyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNlL3Rv
ZG9tdmMvLmJvd2VycmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTU5ZTE2OTZlN2IyYzk3MDAwNWMzNWVjOGEwZjk0
YWVhNWRmMzZhYwotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNl
L3RvZG9tdmMvLmJvd2VycmMKQEAgLTAsMCArMSw0IEBACit7CisgICJkaXJlY3RvcnkiOiAiYm93
ZXJfY29tcG9uZW50cyIsCisgICJhbmFseXRpY3MiOiBmYWxzZQorfQpkaWZmIC0tZ2l0IGEvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvdG9kb212Yy8uZWRpdG9yY29uZmlnIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvZW1iZXJqcy9zb3VyY2UvdG9kb212Yy8uZWRpdG9yY29uZmlnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ3YzU0
Mzg0MDNjYTg3NWYxNzBkYjJhYTA3ZDFiZmEzNjg5NDA2ZTMKLS0tIC9kZXYvbnVsbAorKysgYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS90b2RvbXZjLy5lZGl0b3Jjb25maWcKQEAgLTAsMCAr
MSwzNCBAQAorIyBFZGl0b3JDb25maWcgaGVscHMgZGV2ZWxvcGVycyBkZWZpbmUgYW5kIG1haW50
YWluIGNvbnNpc3RlbnQKKyMgY29kaW5nIHN0eWxlcyBiZXR3ZWVuIGRpZmZlcmVudCBlZGl0b3Jz
IGFuZCBJREVzCisjIGVkaXRvcmNvbmZpZy5vcmcKKworcm9vdCA9IHRydWUKKworCitbKl0KK2Vu
ZF9vZl9saW5lID0gbGYKK2NoYXJzZXQgPSB1dGYtOAordHJpbV90cmFpbGluZ193aGl0ZXNwYWNl
ID0gdHJ1ZQoraW5zZXJ0X2ZpbmFsX25ld2xpbmUgPSB0cnVlCitpbmRlbnRfc3R5bGUgPSBzcGFj
ZQoraW5kZW50X3NpemUgPSAyCisKK1sqLmpzXQoraW5kZW50X3N0eWxlID0gc3BhY2UKK2luZGVu
dF9zaXplID0gMgorCitbKi5oYnNdCitpbnNlcnRfZmluYWxfbmV3bGluZSA9IGZhbHNlCitpbmRl
bnRfc3R5bGUgPSBzcGFjZQoraW5kZW50X3NpemUgPSAyCisKK1sqLmNzc10KK2luZGVudF9zdHls
ZSA9IHNwYWNlCitpbmRlbnRfc2l6ZSA9IDIKKworWyouaHRtbF0KK2luZGVudF9zdHlsZSA9IHNw
YWNlCitpbmRlbnRfc2l6ZSA9IDIKKworWyoue2RpZmYsbWR9XQordHJpbV90cmFpbGluZ193aGl0
ZXNwYWNlID0gZmFsc2UKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNlL3Rv
ZG9tdmMvLmVtYmVyLWNsaSBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNlL3RvZG9tdmMvLmVt
YmVyLWNsaQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lZTY0Y2ZlZDJhODkwNWRjMjM1MDZhZjEwNjBlYzgwY2Y4ODc1
ODJkCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvdG9kb212
Yy8uZW1iZXItY2xpCkBAIC0wLDAgKzEsOSBAQAoreworICAvKioKKyAgICBFbWJlciBDTEkgc2Vu
ZHMgYW5hbHl0aWNzIGluZm9ybWF0aW9uIGJ5IGRlZmF1bHQuIFRoZSBkYXRhIGlzIGNvbXBsZXRl
bHkKKyAgICBhbm9ueW1vdXMsIGJ1dCB0aGVyZSBhcmUgdGltZXMgd2hlbiB5b3UgbWlnaHQgd2Fu
dCB0byBkaXNhYmxlIHRoaXMgYmVoYXZpb3IuCisKKyAgICBTZXR0aW5nIGBkaXNhYmxlQW5hbHl0
aWNzYCB0byB0cnVlIHdpbGwgcHJldmVudCBhbnkgZGF0YSBmcm9tIGJlaW5nIHNlbnQuCisgICov
CisgICJkaXNhYmxlQW5hbHl0aWNzIjogZmFsc2UKK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2VtYmVyanMvc291cmNlL3RvZG9tdmMvLmdpdGlnbm9yZSBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMv
c291cmNlL3RvZG9tdmMvLmdpdGlnbm9yZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZTA5ZTAzOGI3NWVjMmE3MjU4
MDg5MzZhOGM2YjMyYzZhMmY2MzJiCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1i
ZXJqcy9zb3VyY2UvdG9kb212Yy8uZ2l0aWdub3JlCkBAIC0wLDAgKzEsMTcgQEAKKyMgU2VlIGh0
dHA6Ly9oZWxwLmdpdGh1Yi5jb20vaWdub3JlLWZpbGVzLyBmb3IgbW9yZSBhYm91dCBpZ25vcmlu
ZyBmaWxlcy4KKworIyBjb21waWxlZCBvdXRwdXQKKyMgL2Rpc3QKKy90bXAKKworIyBkZXBlbmRl
bmNpZXMKKy9ub2RlX21vZHVsZXMKKy9ib3dlcl9jb21wb25lbnRzCisKKyMgbWlzYworLy5zYXNz
LWNhY2hlCisvY29ubmVjdC5sb2NrCisvY292ZXJhZ2UvKgorL2xpYnBlZXJjb25uZWN0aW9uLmxv
ZworbnBtLWRlYnVnLmxvZwordGVzdGVtLmxvZwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1i
ZXJqcy9zb3VyY2UvdG9kb212Yy8uanNoaW50cmMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJj
ZS90b2RvbXZjLy5qc2hpbnRyYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wODA5NmVmZmFhYjM3NDk5NGFkY2IzNTc4
ZTk4ODY3NWE0YmVmYTgyCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9z
b3VyY2UvdG9kb212Yy8uanNoaW50cmMKQEAgLTAsMCArMSwzMiBAQAoreworICAicHJlZGVmIjog
WworICAgICJkb2N1bWVudCIsCisgICAgIndpbmRvdyIsCisgICAgIi1Qcm9taXNlIgorICBdLAor
ICAiYnJvd3NlciI6IHRydWUsCisgICJib3NzIjogdHJ1ZSwKKyAgImN1cmx5IjogdHJ1ZSwKKyAg
ImRlYnVnIjogZmFsc2UsCisgICJkZXZlbCI6IHRydWUsCisgICJlcWVxZXEiOiB0cnVlLAorICAi
ZXZpbCI6IHRydWUsCisgICJmb3JpbiI6IGZhbHNlLAorICAiaW1tZWQiOiBmYWxzZSwKKyAgImxh
eGJyZWFrIjogZmFsc2UsCisgICJuZXdjYXAiOiB0cnVlLAorICAibm9hcmciOiB0cnVlLAorICAi
bm9lbXB0eSI6IGZhbHNlLAorICAibm9uZXciOiBmYWxzZSwKKyAgIm5vbWVuIjogZmFsc2UsCisg
ICJvbmV2YXIiOiBmYWxzZSwKKyAgInBsdXNwbHVzIjogZmFsc2UsCisgICJyZWdleHAiOiBmYWxz
ZSwKKyAgInVuZGVmIjogdHJ1ZSwKKyAgInN1YiI6IHRydWUsCisgICJzdHJpY3QiOiBmYWxzZSwK
KyAgIndoaXRlIjogZmFsc2UsCisgICJlcW51bGwiOiB0cnVlLAorICAiZXNuZXh0IjogdHJ1ZSwK
KyAgInVudXNlZCI6IHRydWUKK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvc291
cmNlL3RvZG9tdmMvLnRyYXZpcy55bWwgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS90b2Rv
bXZjLy50cmF2aXMueW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY0NTMzYmVhODliY2MwZjAwOWFmMGNkMjNmZGUw
ZTRkMDZiOTQ5MWEKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJj
ZS90b2RvbXZjLy50cmF2aXMueW1sCkBAIC0wLDAgKzEsMjIgQEAKKy0tLQorbGFuZ3VhZ2U6IG5v
ZGVfanMKK25vZGVfanM6CisgIC0gIjQiCisKK3N1ZG86IGZhbHNlCisKK2NhY2hlOgorICBkaXJl
Y3RvcmllczoKKyAgICAtIG5vZGVfbW9kdWxlcworCitiZWZvcmVfaW5zdGFsbDoKKyAgLSBucG0g
Y29uZmlnIHNldCBzcGluIGZhbHNlCisgIC0gbnBtIGluc3RhbGwgLWcgYm93ZXIKKyAgLSBucG0g
aW5zdGFsbCBwaGFudG9tanMtcHJlYnVpbHQKKworaW5zdGFsbDoKKyAgLSBucG0gaW5zdGFsbAor
ICAtIGJvd2VyIGluc3RhbGwKKworc2NyaXB0OgorICAtIG5wbSB0ZXN0CmRpZmYgLS1naXQgYS9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS90b2RvbXZjLy53YXRjaG1hbmNvbmZpZyBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2VtYmVyanMvc291cmNlL3RvZG9tdmMvLndhdGNobWFuY29uZmlnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmU3ODM0ZTNlNGYzOWMxYTc0NTk0MmRmZTkwODkxNzA4NTkzZTBlYTYKLS0tIC9kZXYvbnVsbAor
KysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS90b2RvbXZjLy53YXRjaG1hbmNvbmZpZwpA
QCAtMCwwICsxLDMgQEAKK3sKKyAgImlnbm9yZV9kaXJzIjogWyJ0bXAiLCAiZGlzdCJdCit9CmRp
ZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS90b2RvbXZjL1JFQURNRS5tZCBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNlL3RvZG9tdmMvUkVBRE1FLm1kCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjViZDhhODNkYmUxNWMzNTg3ODRiNWUxOWU4OGVhZWZmY2M2YTQzNjQKLS0tIC9kZXYvbnVsbAor
KysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS90b2RvbXZjL1JFQURNRS5tZApAQCAtMCww
ICsxLDE1IEBACisjIEVtYmVyLmpzIFRvZG9NVkMgRXhhbXBsZSB1c2luZyBFbWJlciBDTEkKKwor
PiBBIGZyYW1ld29yayBmb3IgY3JlYXRpbmcgYW1iaXRpb3VzIHdlYiBhcHBsaWNhdGlvbnMuCisK
Kz4gX1tFbWJlci5qcyAtIGVtYmVyanMuY29tXShodHRwOi8vZW1iZXJqcy5jb20pXworPiBfW0Vt
YmVyIENMSSAtIGVtYmVyLWNsaS5jb21dKGh0dHA6Ly9lbWJlci1jbGkuY29tKV8KKworIyMgTm90
ZSBmb3IgcGVvcGxlIHVwZGF0aW5nIHRoaXMgYXBwLgorCitUaGUgYGluZGV4Lmh0bWxgIGFuZCB0
aGUgYGFzc2V0c2AgZm9sZGVyIGluIHRoZSBwYXJlbnQgZm9sZGVyIGFzIHNpbWxpbmtzIGludG8g
dGhlIGl0ZW1zIHdpdGggdGhlCitzYW1lIG5hbWVzIGluc2lkZSBgZGlzdGAuIFRoZSBgZGlzdGAg
Zm9sZGVyIGhhcyB0byBiZSBjaGVja2VkIGluIGdpdCBhbmQgYnVpbHQgZm9yIHByb2R1Y3Rpb24u
CisKK1RvIHdvcmsgb24gdGhpcyBjb21tZW50IGA8YmFzZSBocmVmPSIvZXhhbXBsZXMvZW1iZXIt
Y2xpL2luZGV4Lmh0bWwiIC8+YCBpbiB0aGUgYGFwcC9pbmRleC5odG1sYAorYW5kIHVuY29tbWVu
dGVkIGl0IGJhY2sgYmVmb3JlIGRvaW5nIHRoZSBwcm9kdWN0aW9uIGJ1aWxkLgorCmRpZmYgLS1n
aXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS90b2RvbXZjL2FwcC9hcHAuanMgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9lbWJlcmpzL3NvdXJjZS90b2RvbXZjL2FwcC9hcHAuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjI2
MGM0YzcwNmQwYWUzNzVjZmZjNjk2OWRmZTQzNGI1OWQyOTliNQotLS0gL2Rldi9udWxsCisrKyBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNlL3RvZG9tdmMvYXBwL2FwcC5qcwpAQCAtMCwwICsx
LDE4IEBACitpbXBvcnQgRW1iZXIgZnJvbSAnZW1iZXInOworaW1wb3J0IFJlc29sdmVyIGZyb20g
Jy4vcmVzb2x2ZXInOworaW1wb3J0IGxvYWRJbml0aWFsaXplcnMgZnJvbSAnZW1iZXItbG9hZC1p
bml0aWFsaXplcnMnOworaW1wb3J0IGNvbmZpZyBmcm9tICcuL2NvbmZpZy9lbnZpcm9ubWVudCc7
CisKK2xldCBBcHA7CisKK0VtYmVyLk1PREVMX0ZBQ1RPUllfSU5KRUNUSU9OUyA9IHRydWU7CisK
K0FwcCA9IEVtYmVyLkFwcGxpY2F0aW9uLmV4dGVuZCh7CisgICAgbW9kdWxlUHJlZml4OiBjb25m
aWcubW9kdWxlUHJlZml4LAorICAgIHBvZE1vZHVsZVByZWZpeDogY29uZmlnLnBvZE1vZHVsZVBy
ZWZpeCwKKyAgICBSZXNvbHZlcgorfSk7CisKK2xvYWRJbml0aWFsaXplcnMoQXBwLCBjb25maWcu
bW9kdWxlUHJlZml4KTsKKworZXhwb3J0IGRlZmF1bHQgQXBwOwpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvZW1iZXJqcy9zb3VyY2UvdG9kb212Yy9hcHAvY29tcG9uZW50cy8uZ2l0a2VlcCBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2VtYmVyanMvc291cmNlL3RvZG9tdmMvYXBwL2NvbXBvbmVudHMvLmdpdGtlZXAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZTY5ZGUyOWJiMmQxZDY0MzRiOGIyOWFlNzc1YWQ4YzJlNDhjNTM5MQpkaWZm
IC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvdG9kb212Yy9hcHAvY29tcG9uZW50
cy90b2RvLWl0ZW0uanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS90b2RvbXZjL2FwcC9j
b21wb25lbnRzL3RvZG8taXRlbS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZGU3ZmJmMTE2NWIyNjE0NTQxYTU2
YTM5MGQxYzMzOGM0OThlMDkzCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJq
cy9zb3VyY2UvdG9kb212Yy9hcHAvY29tcG9uZW50cy90b2RvLWl0ZW0uanMKQEAgLTAsMCArMSw0
OSBAQAoraW1wb3J0IEVtYmVyIGZyb20gJ2VtYmVyJzsKKworZXhwb3J0IGRlZmF1bHQgRW1iZXIu
Q29tcG9uZW50LmV4dGVuZCh7CisgICAgcmVwbzogRW1iZXIuaW5qZWN0LnNlcnZpY2UoKSwKKyAg
ICB0YWdOYW1lOiAnbGknLAorICAgIGVkaXRpbmc6IGZhbHNlLAorICAgIGNsYXNzTmFtZUJpbmRp
bmdzOiBbJ3RvZG8uY29tcGxldGVkJywgJ2VkaXRpbmcnXSwKKworICAgIGFjdGlvbnM6IHsKKyAg
ICAgICAgc3RhcnRFZGl0aW5nKCkgeworICAgICAgICAgICAgdGhpcy5nZXQoJ29uU3RhcnRFZGl0
JykoKTsKKyAgICAgICAgICAgIHRoaXMuc2V0KCdlZGl0aW5nJywgdHJ1ZSk7CisgICAgICAgICAg
ICBFbWJlci5ydW4uc2NoZWR1bGVPbmNlKCdhZnRlclJlbmRlcicsIHRoaXMsICdmb2N1c0lucHV0
Jyk7CisgICAgICAgIH0sCisKKyAgICAgICAgZG9uZUVkaXRpbmcodG9kb1RpdGxlKSB7CisgICAg
ICAgICAgICBpZiAoIXRoaXMuZ2V0KCdlZGl0aW5nJykpIHsgcmV0dXJuOyB9CisgICAgICAgICAg
ICBpZiAoRW1iZXIuaXNCbGFuayh0b2RvVGl0bGUpKSB7CisgICAgICAgICAgICAgICAgdGhpcy5z
ZW5kKCdyZW1vdmVUb2RvJyk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IHRoaXMuc2V0KCd0b2RvLnRpdGxlJywgdG9kb1RpdGxlLnRyaW0oKSk7CisgICAgICAgICAgICAg
ICAgdGhpcy5zZXQoJ2VkaXRpbmcnLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgdGhpcy5nZXQo
J29uRW5kRWRpdCcpKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisKKyAgICAgICAgaGFu
ZGxlS2V5ZG93bihlKSB7CisgICAgICAgICAgICBpZiAoZS5rZXlDb2RlID09PSAxMykgeworICAg
ICAgICAgICAgICAgIGUudGFyZ2V0LmJsdXIoKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoZS5r
ZXlDb2RlID09PSAyNykgeworICAgICAgICAgICAgICAgIHRoaXMuc2V0KCdlZGl0aW5nJywgZmFs
c2UpOworICAgICAgICAgICAgfQorICAgICAgICB9LAorCisgICAgICAgIHRvZ2dsZUNvbXBsZXRl
ZChlKSB7CisgICAgICAgICAgICBsZXQgdG9kbyA9IHRoaXMuZ2V0KCd0b2RvJyk7CisgICAgICAg
ICAgICBFbWJlci5zZXQodG9kbywgJ2NvbXBsZXRlZCcsIGUudGFyZ2V0LmNoZWNrZWQpOworICAg
ICAgICAgICAgdGhpcy5nZXQoJ3JlcG8nKS5wZXJzaXN0KCk7CisgICAgICAgIH0sCisKKyAgICAg
ICAgcmVtb3ZlVG9kbygpIHsKKyAgICAgICAgICAgIHRoaXMuZ2V0KCdyZXBvJykuZGVsZXRlKHRo
aXMuZ2V0KCd0b2RvJykpOworICAgICAgICB9CisgICAgfSwKKworICAgIGZvY3VzSW5wdXQoKSB7
CisgICAgICAgIHRoaXMuZWxlbWVudC5xdWVyeVNlbGVjdG9yKCdpbnB1dC5lZGl0JykuZm9jdXMo
KTsKKyAgICB9Cit9KTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNlL3Rv
ZG9tdmMvYXBwL2NvbXBvbmVudHMvdG9kby1saXN0LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9z
b3VyY2UvdG9kb212Yy9hcHAvY29tcG9uZW50cy90b2RvLWxpc3QuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDg0
ZTBlM2ExZmUyOTdmZjVkOGFkYjE0MTYzMmNhZTk0MjY4ZDJhOQotLS0gL2Rldi9udWxsCisrKyBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNlL3RvZG9tdmMvYXBwL2NvbXBvbmVudHMvdG9kby1s
aXN0LmpzCkBAIC0wLDAgKzEsMjcgQEAKK2ltcG9ydCBFbWJlciBmcm9tICdlbWJlcic7CisKK2V4
cG9ydCBkZWZhdWx0IEVtYmVyLkNvbXBvbmVudC5leHRlbmQoeworICAgIHJlcG86IEVtYmVyLmlu
amVjdC5zZXJ2aWNlKCksCisgICAgdGFnTmFtZTogJ3NlY3Rpb24nLAorICAgIGVsZW1lbnRJZDog
J21haW4nLAorICAgIGNhblRvZ2dsZTogdHJ1ZSwKKyAgICBhbGxDb21wbGV0ZWQ6IEVtYmVyLmNv
bXB1dGVkKCd0b2Rvcy5AZWFjaC5jb21wbGV0ZWQnLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIHJl
dHVybiB0aGlzLmdldCgndG9kb3MnKS5pc0V2ZXJ5KCdjb21wbGV0ZWQnKTsKKyAgICB9KSwKKwor
ICAgIGFjdGlvbnM6IHsKKyAgICAgICAgZW5hYmxlVG9nZ2xlKCkgeworICAgICAgICAgICAgdGhp
cy5zZXQoJ2NhblRvZ2dsZScsIHRydWUpOworICAgICAgICB9LAorCisgICAgICAgIGRpc2FibGVU
b2dnbGUoKSB7CisgICAgICAgICAgICB0aGlzLnNldCgnY2FuVG9nZ2xlJywgZmFsc2UpOworICAg
ICAgICB9LAorCisgICAgICAgIHRvZ2dsZUFsbCgpIHsKKyAgICAgICAgICAgIGxldCBhbGxDb21w
bGV0ZWQgPSB0aGlzLmdldCgnYWxsQ29tcGxldGVkJyk7CisgICAgICAgICAgICB0aGlzLmdldCgn
dG9kb3MnKS5mb3JFYWNoKHRvZG8gPT4gRW1iZXIuc2V0KHRvZG8sICdjb21wbGV0ZWQnLCAhYWxs
Q29tcGxldGVkKSk7CisgICAgICAgICAgICB0aGlzLmdldCgncmVwbycpLnBlcnNpc3QoKTsKKyAg
ICAgICAgfQorICAgIH0KK30pOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3Vy
Y2UvdG9kb212Yy9hcHAvY29udHJvbGxlcnMvYWN0aXZlLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJq
cy9zb3VyY2UvdG9kb212Yy9hcHAvY29udHJvbGxlcnMvYWN0aXZlLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRm
MDNkNDA3OTAzODg5YTE0MTM3NzFhMzFkZmMxNGJhNDg5MzViMjUKLS0tIC9kZXYvbnVsbAorKysg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS90b2RvbXZjL2FwcC9jb250cm9sbGVycy9hY3Rp
dmUuanMKQEAgLTAsMCArMSw1IEBACitpbXBvcnQgRW1iZXIgZnJvbSAnZW1iZXInOworCitleHBv
cnQgZGVmYXVsdCBFbWJlci5Db250cm9sbGVyLmV4dGVuZCh7CisgICAgdG9kb3M6IEVtYmVyLmNv
bXB1dGVkLmZpbHRlckJ5KCdtb2RlbCcsICdjb21wbGV0ZWQnLCBmYWxzZSkKK30pOwpkaWZmIC0t
Z2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvdG9kb212Yy9hcHAvY29udHJvbGxlcnMv
YXBwbGljYXRpb24uanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS90b2RvbXZjL2FwcC9j
b250cm9sbGVycy9hcHBsaWNhdGlvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jODE0ZTVmYTczY2Q5ZTgxYzYz
NTdmZDcxMWU1ZTY4N2MwOWJjYWZmCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1i
ZXJqcy9zb3VyY2UvdG9kb212Yy9hcHAvY29udHJvbGxlcnMvYXBwbGljYXRpb24uanMKQEAgLTAs
MCArMSwyMCBAQAoraW1wb3J0IEVtYmVyIGZyb20gJ2VtYmVyJzsKKworZXhwb3J0IGRlZmF1bHQg
RW1iZXIuQ29udHJvbGxlci5leHRlbmQoeworICAgIHJlcG86IEVtYmVyLmluamVjdC5zZXJ2aWNl
KCksCisgICAgcmVtYWluaW5nOiBFbWJlci5jb21wdXRlZC5maWx0ZXJCeSgnbW9kZWwnLCAnY29t
cGxldGVkJywgZmFsc2UpLAorICAgIGNvbXBsZXRlZDogRW1iZXIuY29tcHV0ZWQuZmlsdGVyQnko
J21vZGVsJywgJ2NvbXBsZXRlZCcpLAorICAgIGFjdGlvbnM6IHsKKyAgICAgICAgY3JlYXRlVG9k
byhlKSB7CisgICAgICAgICAgICBpZiAoZS5rZXlDb2RlID09PSAxMyAmJiAhRW1iZXIuaXNCbGFu
ayhlLnRhcmdldC52YWx1ZSkpIHsKKyAgICAgICAgICAgICAgICB0aGlzLmdldCgncmVwbycpLmFk
ZCh7IHRpdGxlOiBlLnRhcmdldC52YWx1ZS50cmltKCksIGNvbXBsZXRlZDogZmFsc2UgfSk7Cisg
ICAgICAgICAgICAgICAgZS50YXJnZXQudmFsdWUgPSAnJzsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfSwKKworICAgICAgICBjbGVhckNvbXBsZXRlZCgpIHsKKyAgICAgICAgICAgIHRoaXMuZ2V0
KCdtb2RlbCcpLnJlbW92ZU9iamVjdHModGhpcy5nZXQoJ2NvbXBsZXRlZCcpKTsKKyAgICAgICAg
ICAgIHRoaXMuZ2V0KCdyZXBvJykucGVyc2lzdCgpOworICAgICAgICB9CisgICAgfQorfSk7CmRp
ZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS90b2RvbXZjL2FwcC9jb250cm9s
bGVycy9jb21wbGV0ZWQuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS90b2RvbXZjL2Fw
cC9jb250cm9sbGVycy9jb21wbGV0ZWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjM0ZDAwYWZlZjc4MDlhNzNk
NDE5MTUxYjhmMDJlYzVlMDU2N2Y1YgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2Vt
YmVyanMvc291cmNlL3RvZG9tdmMvYXBwL2NvbnRyb2xsZXJzL2NvbXBsZXRlZC5qcwpAQCAtMCww
ICsxLDUgQEAKK2ltcG9ydCBFbWJlciBmcm9tICdlbWJlcic7CisKK2V4cG9ydCBkZWZhdWx0IEVt
YmVyLkNvbnRyb2xsZXIuZXh0ZW5kKHsKKyAgICB0b2RvczogRW1iZXIuY29tcHV0ZWQuZmlsdGVy
QnkoJ21vZGVsJywgJ2NvbXBsZXRlZCcsIHRydWUpCit9KTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2VtYmVyanMvc291cmNlL3RvZG9tdmMvYXBwL2hlbHBlcnMvZ3QuanMgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9lbWJlcmpzL3NvdXJjZS90b2RvbXZjL2FwcC9oZWxwZXJzL2d0LmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYz
NzA2OTVhMmY5NDU2NTlkOWY1ODQ3ZGIxMzc2NGVhZjY2MTEwZWIKLS0tIC9kZXYvbnVsbAorKysg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS90b2RvbXZjL2FwcC9oZWxwZXJzL2d0LmpzCkBA
IC0wLDAgKzEsNyBAQAoraW1wb3J0IEVtYmVyIGZyb20gJ2VtYmVyJzsKKworZXhwb3J0IGZ1bmN0
aW9uIGd0KFtuMSwgbjJdLyosIGhhc2gqLykgeworICAgIHJldHVybiBuMSA+IG4yOworfQorCitl
eHBvcnQgZGVmYXVsdCBFbWJlci5IZWxwZXIuaGVscGVyKGd0KTsKZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2VtYmVyanMvc291cmNlL3RvZG9tdmMvYXBwL2hlbHBlcnMvcGx1cmFsaXplLmpzIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvdG9kb212Yy9hcHAvaGVscGVycy9wbHVyYWxpemUu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYjFmMWEyYWNjOGY4NTYxNzgwZDBiOTVkZmY3M2NhOTYzM2I2ODlhNQot
LS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNlL3RvZG9tdmMvYXBw
L2hlbHBlcnMvcGx1cmFsaXplLmpzCkBAIC0wLDAgKzEsOCBAQAoraW1wb3J0IEVtYmVyIGZyb20g
J2VtYmVyJzsKK2ltcG9ydCB7IHBsdXJhbGl6ZSB9IGZyb20gJ2VtYmVyLWluZmxlY3Rvcic7CisK
K2V4cG9ydCBmdW5jdGlvbiBwbHVyYWxpemVIZWxwZXIoW3Npbmd1bGFyLCBjb3VudF0vKiwgaGFz
aCovKSB7CisgICAgcmV0dXJuIGNvdW50ID09PSAxID8gc2luZ3VsYXIgOiBwbHVyYWxpemUoc2lu
Z3VsYXIpOworfQorCitleHBvcnQgZGVmYXVsdCBFbWJlci5IZWxwZXIuaGVscGVyKHBsdXJhbGl6
ZUhlbHBlcik7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS90b2RvbXZj
L2FwcC9pbmRleC5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvdG9kb212Yy9hcHAv
aW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MGIxMDA1NWQ0OTkyZGJhMjljY2Y3ZmIwNGUyMDMwYjM5
YjQxNzlhCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvdG9k
b212Yy9hcHAvaW5kZXguaHRtbApAQCAtMCwwICsxLDI1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorICA8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CisgICAgPG1ldGEgaHR0
cC1lcXVpdj0iWC1VQS1Db21wYXRpYmxlIiBjb250ZW50PSJJRT1lZGdlIj4KKyAgICA8dGl0bGU+
VG9kb212YzwvdGl0bGU+CisgICAgPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IiI+
CisgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwg
aW5pdGlhbC1zY2FsZT0xIj4KKyAgICA8YmFzZSBocmVmPSIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMiIC8+CisgICAge3tjb250ZW50LWZvciAiaGVhZCJ9
fQorCisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJhc3NldHMvdmVuZG9yLmNzcyI+
CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJhc3NldHMvdG9kb212Yy5jc3MiPgor
CisgICAge3tjb250ZW50LWZvciAiaGVhZC1mb290ZXIifX0KKyAgPC9oZWFkPgorICA8Ym9keT4K
KyAgICB7e2NvbnRlbnQtZm9yICJib2R5In19CisKKyAgICA8c2NyaXB0IHNyYz0iYXNzZXRzL3Zl
bmRvci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9ImFzc2V0cy90b2RvbXZjLmpzIj48
L3NjcmlwdD4KKworICAgIHt7Y29udGVudC1mb3IgImJvZHktZm9vdGVyIn19CisgIDwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNlL3RvZG9tdmMv
YXBwL2luc3RhbmNlLWluaXRpYWxpemVycy9nbG9iYWwuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpz
L3NvdXJjZS90b2RvbXZjL2FwcC9pbnN0YW5jZS1pbml0aWFsaXplcnMvZ2xvYmFsLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjM0YzlhOWRhZGU3YjEwMzU5MWI1OGZkNmM0NjBhODg2Yzk3MmExMjQKLS0tIC9kZXYv
bnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS90b2RvbXZjL2FwcC9pbnN0YW5j
ZS1pbml0aWFsaXplcnMvZ2xvYmFsLmpzCkBAIC0wLDAgKzEsMTAgQEAKKy8vIGFwcC9pbnN0YW5j
ZS1pbml0aWFsaXplcnMvZ2xvYmFsLmpzCisKK2V4cG9ydCBmdW5jdGlvbiBpbml0aWFsaXplKGFw
cGxpY2F0aW9uKSB7CisgIHdpbmRvdy5BcHAgPSBhcHBsaWNhdGlvbjsgIC8vIG9yIHdpbmRvdy5X
aGF0ZXZlcgorfQorCitleHBvcnQgZGVmYXVsdCB7CisgIG5hbWU6ICdnbG9iYWwnLAorICBpbml0
aWFsaXplOiBpbml0aWFsaXplCit9OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNlL3RvZG9tdmMvYXBwL21vZGVscy8uZ2l0
a2VlcCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNlL3RvZG9tdmMvYXBwL21vZGVscy8uZ2l0
a2VlcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lNjlkZTI5YmIyZDFkNjQzNGI4YjI5YWU3NzVhZDhjMmU0OGM1Mzkx
CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS90b2RvbXZjL2FwcC9yZXNv
bHZlci5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNlL3RvZG9tdmMvYXBwL3Jlc29sdmVy
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjJmYjU2M2Q2YzA0ODhmNDFiZWM0NTRmZTFmYTdjMjI5OTc1YTU4ZGYK
LS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS90b2RvbXZjL2Fw
cC9yZXNvbHZlci5qcwpAQCAtMCwwICsxLDMgQEAKK2ltcG9ydCBSZXNvbHZlciBmcm9tICdlbWJl
ci1yZXNvbHZlcic7CisKK2V4cG9ydCBkZWZhdWx0IFJlc29sdmVyOwpkaWZmIC0tZ2l0IGEvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvdG9kb212Yy9hcHAvcm91dGVyLmpzIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvZW1iZXJqcy9zb3VyY2UvdG9kb212Yy9hcHAvcm91dGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjNjBi
ZjkzZmM4N2I2N2Y2MDIzZmRjOTQzOTZjNDE0N2I1YTNkNmMKLS0tIC9kZXYvbnVsbAorKysgYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS90b2RvbXZjL2FwcC9yb3V0ZXIuanMKQEAgLTAsMCAr
MSwxMyBAQAoraW1wb3J0IEVtYmVyIGZyb20gJ2VtYmVyJzsKK2ltcG9ydCBjb25maWcgZnJvbSAn
Li9jb25maWcvZW52aXJvbm1lbnQnOworCitjb25zdCBSb3V0ZXIgPSBFbWJlci5Sb3V0ZXIuZXh0
ZW5kKHsKKyAgICBsb2NhdGlvbjogY29uZmlnLmxvY2F0aW9uVHlwZQorfSk7CisKK1JvdXRlci5t
YXAoZnVuY3Rpb24gKCkgeworICAgIHRoaXMucm91dGUoJ2FjdGl2ZScpOworICAgIHRoaXMucm91
dGUoJ2NvbXBsZXRlZCcpOworfSk7CisKK2V4cG9ydCBkZWZhdWx0IFJvdXRlcjsKZGlmZiAtLWdp
dCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNlL3RvZG9tdmMvYXBwL3JvdXRlcy8uZ2l0a2Vl
cCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNlL3RvZG9tdmMvYXBwL3JvdXRlcy8uZ2l0a2Vl
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5lNjlkZTI5YmIyZDFkNjQzNGI4YjI5YWU3NzVhZDhjMmU0OGM1MzkxCmRp
ZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS90b2RvbXZjL2FwcC9yb3V0ZXMv
YXBwbGljYXRpb24uanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS90b2RvbXZjL2FwcC9y
b3V0ZXMvYXBwbGljYXRpb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjk2YTM3NWJhMmE2NTBjYmExMTk2OTc5
NTE3ODQ3ZjllZjY3ZjgxMwotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMv
c291cmNlL3RvZG9tdmMvYXBwL3JvdXRlcy9hcHBsaWNhdGlvbi5qcwpAQCAtMCwwICsxLDggQEAK
K2ltcG9ydCBFbWJlciBmcm9tICdlbWJlcic7CisKK2V4cG9ydCBkZWZhdWx0IEVtYmVyLlJvdXRl
LmV4dGVuZCh7CisgICAgcmVwbzogRW1iZXIuaW5qZWN0LnNlcnZpY2UoKSwKKyAgICBtb2RlbCgp
IHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KCdyZXBvJykuZmluZEFsbCgpOworICAgIH0KK30p
OwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvdG9kb212Yy9hcHAvc2Vy
dmljZXMvcmVwby5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNlL3RvZG9tdmMvYXBwL3Nl
cnZpY2VzL3JlcG8uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDAyODg5MzY3ZGI4MmI2ZWJkZDE3MTFlODk5ZGM4
ODA3OTQ3MDNjOQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNl
L3RvZG9tdmMvYXBwL3NlcnZpY2VzL3JlcG8uanMKQEAgLTAsMCArMSwyNiBAQAoraW1wb3J0IEVt
YmVyIGZyb20gJ2VtYmVyJzsKKworZXhwb3J0IGRlZmF1bHQgRW1iZXIuU2VydmljZS5leHRlbmQo
eworICAgIGxhc3RJZDogMCwKKyAgICBkYXRhOiBudWxsLAorICAgIGZpbmRBbGwoKSB7CisgICAg
ICAgIHJldHVybiB0aGlzLmdldCgnZGF0YScpIHx8CisgICAgICAgICAgICB0aGlzLnNldCgnZGF0
YScsIEpTT04ucGFyc2Uod2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0b2RvcycpIHx8ICdb
XScpKTsKKyAgICB9LAorCisgICAgYWRkKGF0dHJzKSB7CisgICAgICAgIGxldCB0b2RvID0gT2Jq
ZWN0LmFzc2lnbih7IGlkOiB0aGlzLmluY3JlbWVudFByb3BlcnR5KCdsYXN0SWQnKSB9LCBhdHRy
cyk7CisgICAgICAgIHRoaXMuZ2V0KCdkYXRhJykucHVzaE9iamVjdCh0b2RvKTsKKyAgICAgICAg
dGhpcy5wZXJzaXN0KCk7CisgICAgICAgIHJldHVybiB0b2RvOworICAgIH0sCisKKyAgICBkZWxl
dGUodG9kbykgeworICAgICAgICB0aGlzLmdldCgnZGF0YScpLnJlbW92ZU9iamVjdCh0b2RvKTsK
KyAgICAgICAgdGhpcy5wZXJzaXN0KCk7CisgICAgfSwKKworICAgIHBlcnNpc3QoKSB7CisgICAg
ICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndG9kb3MnLCBKU09OLnN0cmluZ2lmeSh0
aGlzLmdldCgnZGF0YScpKSk7CisgICAgfQorfSk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9l
bWJlcmpzL3NvdXJjZS90b2RvbXZjL2FwcC9zdHlsZXMvYXBwLmNzcyBiL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2Vt
YmVyanMvc291cmNlL3RvZG9tdmMvYXBwL3N0eWxlcy9hcHAuY3NzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2OWRl
MjliYjJkMWQ2NDM0YjhiMjlhZTc3NWFkOGMyZTQ4YzUzOTEKZGlmZiAtLWdpdCBhL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2VtYmVyanMvc291cmNlL3RvZG9tdmMvYXBwL3RlbXBsYXRlcy9hY3RpdmUuaGJzIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvdG9kb212Yy9hcHAvdGVtcGxhdGVzL2FjdGl2ZS5oYnMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZGUyNDRmNDg3ZDIzODM0NDhhNDJhNTlkZjBiZjQyNTY0ZTIxZjU3MwotLS0g
L2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNlL3RvZG9tdmMvYXBwL3Rl
bXBsYXRlcy9hY3RpdmUuaGJzCkBAIC0wLDAgKzEgQEAKK3t7dG9kby1saXN0IHRvZG9zPXRvZG9z
fX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9l
bWJlcmpzL3NvdXJjZS90b2RvbXZjL2FwcC90ZW1wbGF0ZXMvYXBwbGljYXRpb24uaGJzIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvdG9kb212Yy9hcHAvdGVtcGxhdGVzL2FwcGxpY2F0aW9u
LmhicwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41MTliNjIwY2Q2MzAxOGY2NzNlYWE5YTdiOTA4ZDU4OThhOTIxNThm
Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvdG9kb212Yy9h
cHAvdGVtcGxhdGVzL2FwcGxpY2F0aW9uLmhicwpAQCAtMCwwICsxLDI5IEBACis8c2VjdGlvbiBp
ZD0idG9kb2FwcCI+CisgIDxoZWFkZXIgaWQ9ImhlYWRlciI+CisgICAgPGgxPnRvZG9zPC9oMT4K
KyAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9Im5ldy10b2RvIiBvbmtleWRvd249e3thY3Rpb24g
J2NyZWF0ZVRvZG8nfX0gcGxhY2Vob2xkZXI9IldoYXQgbmVlZHMgdG8gYmUgZG9uZT8iIGF1dG9m
b2N1cz4KKyAgPC9oZWFkZXI+CisgICAge3tvdXRsZXR9fQorICAgIHt7I2lmIChndCBtb2RlbC5s
ZW5ndGggMCl9fQorICAgICAgPGZvb3RlciBpZD0iZm9vdGVyIj4KKyAgICAgICAgPHNwYW4gaWQ9
InRvZG8tY291bnQiPjxzdHJvbmc+e3tyZW1haW5pbmcubGVuZ3RofX08L3N0cm9uZz4ge3twbHVy
YWxpemUgJ2l0ZW0nIHJlbWFpbmluZy5sZW5ndGh9fSBsZWZ0PC9zcGFuPgorICAgICAgICA8dWwg
aWQ9ImZpbHRlcnMiPgorICAgICAgICAgIDxsaT57eyNsaW5rLXRvICJpbmRleCIgYWN0aXZlQ2xh
c3M9InNlbGVjdGVkIn19QWxse3svbGluay10b319PC9saT4KKyAgICAgICAgICA8bGk+e3sjbGlu
ay10byAiYWN0aXZlIiBhY3RpdmVDbGFzcz0ic2VsZWN0ZWQifX1BY3RpdmV7ey9saW5rLXRvfX08
L2xpPgorICAgICAgICAgIDxsaT57eyNsaW5rLXRvICJjb21wbGV0ZWQiIGFjdGl2ZUNsYXNzPSJz
ZWxlY3RlZCJ9fUNvbXBsZXRlZHt7L2xpbmstdG99fTwvbGk+CisgICAgICAgIDwvdWw+CisgICAg
ICAgIHt7I2lmIGNvbXBsZXRlZC5sZW5ndGh9fQorICAgICAgICAgIDxidXR0b24gaWQ9ImNsZWFy
LWNvbXBsZXRlZCIgb25jbGljaz17e2FjdGlvbiAnY2xlYXJDb21wbGV0ZWQnfX0+Q2xlYXIgY29t
cGxldGVkPC9idXR0b24+CisgICAgICAgIHt7L2lmfX0KKyAgICAgIDwvZm9vdGVyPgorICAgIHt7
L2lmfX0KKzwvc2VjdGlvbj4KKzxmb290ZXIgaWQ9ImluZm8iPgorICA8cD5Eb3VibGUtY2xpY2sg
dG8gZWRpdCBhIHRvZG88L3A+CisgIDxwPgorICAgIENyZWF0ZWQgYnkKKyAgICA8YSBocmVmPSJo
dHRwOi8vZ2l0aHViLmNvbS9jaWJlcm5veCI+TWlndWVsIENhbWJhPC9hPiwKKyAgICA8YSBocmVm
PSJodHRwOi8vZ2l0aHViLmNvbS9hZGR5b3NtYW5pIj5BZGR5IE9zbWFuaTwvYT4KKyAgPC9wPgor
ICA8cD5QYXJ0IG9mIDxhIGhyZWY9Imh0dHA6Ly90b2RvbXZjLmNvbSI+VG9kb01WQzwvYT48L3A+
Cis8L2Zvb3Rlcj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9lbWJlcmpzL3NvdXJjZS90b2RvbXZjL2FwcC90ZW1wbGF0ZXMvY29tcGxldGVkLmhi
cyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNlL3RvZG9tdmMvYXBwL3RlbXBsYXRlcy9jb21w
bGV0ZWQuaGJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRlMjQ0ZjQ4N2QyMzgzNDQ4YTQyYTU5ZGYwYmY0MjU2NGUy
MWY1NzMKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS90b2Rv
bXZjL2FwcC90ZW1wbGF0ZXMvY29tcGxldGVkLmhicwpAQCAtMCwwICsxIEBACit7e3RvZG8tbGlz
dCB0b2Rvcz10b2Rvc319ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvdG9kb212Yy9hcHAvdGVtcGxhdGVzL2NvbXBvbmVu
dHMvLmdpdGtlZXAgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS90b2RvbXZjL2FwcC90ZW1w
bGF0ZXMvY29tcG9uZW50cy8uZ2l0a2VlcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNjlkZTI5YmIyZDFkNjQzNGI4
YjI5YWU3NzVhZDhjMmU0OGM1MzkxCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3Nv
dXJjZS90b2RvbXZjL2FwcC90ZW1wbGF0ZXMvY29tcG9uZW50cy90b2RvLWl0ZW0uaGJzIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvdG9kb212Yy9hcHAvdGVtcGxhdGVzL2NvbXBvbmVudHMv
dG9kby1pdGVtLmhicwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMDY5NzVlODY1ZTdiOWEwNDI3ODVlOGIzODk3N2Yz
NGFhZDNkYmM2Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2Uv
dG9kb212Yy9hcHAvdGVtcGxhdGVzL2NvbXBvbmVudHMvdG9kby1pdGVtLmhicwpAQCAtMCwwICsx
LDYgQEAKKzxkaXYgY2xhc3M9InZpZXciPgorICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIGNsYXNz
PSJ0b2dnbGUiIGNoZWNrZWQ9e3t0b2RvLmNvbXBsZXRlZH19IG9uY2hhbmdlPXt7YWN0aW9uICd0
b2dnbGVDb21wbGV0ZWQnfX0+CisgIDxsYWJlbCBvbmRibGNsaWNrPXt7YWN0aW9uICdzdGFydEVk
aXRpbmcnfX0+e3t0b2RvLnRpdGxlfX08L2xhYmVsPgorICA8YnV0dG9uIG9uY2xpY2s9e3thY3Rp
b24gJ3JlbW92ZVRvZG8nfX0gY2xhc3M9ImRlc3Ryb3kiPjwvYnV0dG9uPgorPC9kaXY+Cis8aW5w
dXQgdHlwZT0idGV4dCIgY2xhc3M9ImVkaXQiIHZhbHVlPXt7dG9kby50aXRsZX19IG9uYmx1cj17
e2FjdGlvbiAnZG9uZUVkaXRpbmcnIHZhbHVlPSd0YXJnZXQudmFsdWUnfX0gb25rZXlkb3duPXt7
YWN0aW9uICdoYW5kbGVLZXlkb3duJ319IGF1dG9mb2N1cz4KXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS90b2RvbXZjL2Fw
cC90ZW1wbGF0ZXMvY29tcG9uZW50cy90b2RvLWxpc3QuaGJzIGIvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJq
cy9zb3VyY2UvdG9kb212Yy9hcHAvdGVtcGxhdGVzL2NvbXBvbmVudHMvdG9kby1saXN0Lmhicwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zMDlkMDdhMWY0MTdjZjFjMTg4OTMwYzVjYmZiMzNhNzA1MWM3ODY2Ci0tLSAv
ZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvdG9kb212Yy9hcHAvdGVt
cGxhdGVzL2NvbXBvbmVudHMvdG9kby1saXN0LmhicwpAQCAtMCwwICsxLDEwIEBACit7eyNpZiB0
b2Rvcy5sZW5ndGh9fQorICB7eyNpZiBjYW5Ub2dnbGV9fQorICAgIDxpbnB1dCB0eXBlPSJjaGVj
a2JveCIgaWQ9InRvZ2dsZS1hbGwiIGNoZWNrZWQ9e3thbGxDb21wbGV0ZWR9fSBvbmNoYW5nZT17
e2FjdGlvbiAndG9nZ2xlQWxsJ319PgorICB7ey9pZn19CisgIDx1bCBpZD0idG9kby1saXN0IiBj
bGFzcz0idG9kby1saXN0Ij4KKyAgICB7eyNlYWNoIHRvZG9zIGFzIHx0b2RvfH19CisgICAgICB7
e3RvZG8taXRlbSB0b2RvPXRvZG8gb25TdGFydEVkaXQ9KGFjdGlvbiAnZGlzYWJsZVRvZ2dsZScp
IG9uRW5kRWRpdD0oYWN0aW9uICdlbmFibGVUb2dnbGUnKX19CisgICAge3svZWFjaH19CisgIDwv
dWw+Cit7ey9pZn19CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS90b2Rv
bXZjL2FwcC90ZW1wbGF0ZXMvaW5kZXguaGJzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2Uv
dG9kb212Yy9hcHAvdGVtcGxhdGVzL2luZGV4LmhicwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZDU1NjVjMzZhYjM3
ZGVhOWExYzQxOWRkZWE3NTNiZjE5NThjZDZmCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvZW1iZXJqcy9zb3VyY2UvdG9kb212Yy9hcHAvdGVtcGxhdGVzL2luZGV4LmhicwpAQCAtMCww
ICsxLDMgQEAKK3t7I2lmIG1vZGVsLmxlbmd0aH19CisgIHt7dG9kby1saXN0IHRvZG9zPW1vZGVs
fX0KK3t7L2lmfX0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNlL3RvZG9t
dmMvYm93ZXIuanNvbiBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNlL3RvZG9tdmMvYm93ZXIu
anNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yMjBhMDAxNGEyZGYyY2VjN2I2NjViNjNiMDM0ZTNiOTU4ODllMjgz
Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvdG9kb212Yy9i
b3dlci5qc29uCkBAIC0wLDAgKzEsOSBAQAoreworICAibmFtZSI6ICJ0b2RvbXZjIiwKKyAgImRl
cGVuZGVuY2llcyI6IHsKKyAgICAiZW1iZXIiOiAifjIuNi4wIiwKKyAgICAiZW1iZXItY2xpLXNo
aW1zIjogIjAuMS4xIiwKKyAgICAiZW1iZXItY2xpLXRlc3QtbG9hZGVyIjogIjAuMi4yIiwKKyAg
ICAiZW1iZXItcXVuaXQtbm90aWZpY2F0aW9ucyI6ICIwLjEuMCIKKyAgfQorfQpkaWZmIC0tZ2l0
IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvdG9kb212Yy9jb25maWcvZW52aXJvbm1lbnQu
anMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS90b2RvbXZjL2NvbmZpZy9lbnZpcm9ubWVu
dC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41OTc0NGIzZGVjOWVkN2E4ZmM1NDQ5MGE1ZTlhNGZjYjQxOGFkNTZi
Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvdG9kb212Yy9j
b25maWcvZW52aXJvbm1lbnQuanMKQEAgLTAsMCArMSw0NyBAQAorLyoganNoaW50IG5vZGU6IHRy
dWUgKi8KKworbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZW52aXJvbm1lbnQpIHsKKyAgICB2
YXIgRU5WID0geworICAgICAgICBtb2R1bGVQcmVmaXg6ICd0b2RvbXZjJywKKyAgICAgICAgZW52
aXJvbm1lbnQ6IGVudmlyb25tZW50LAorICAgICAgICBiYXNlVVJMOiBudWxsLAorICAgICAgICBs
b2NhdGlvblR5cGU6ICdhdXRvJywKKyAgICAgICAgRW1iZXJFTlY6IHsKKyAgICAgICAgICAgIEZF
QVRVUkVTOiB7CisgICAgICAgICAgICAgICAgLy8gSGVyZSB5b3UgY2FuIGVuYWJsZSBleHBlcmlt
ZW50YWwgZmVhdHVyZXMgb24gYW4gZW1iZXIgY2FuYXJ5IGJ1aWxkCisgICAgICAgICAgICAgICAg
Ly8gZS5nLiAnd2l0aC1jb250cm9sbGVyJzogdHJ1ZQorICAgICAgICAgICAgfQorICAgICAgICB9
LAorCisgICAgICAgIEFQUDogeworICAgICAgICAgICAgLy8gSGVyZSB5b3UgY2FuIHBhc3MgZmxh
Z3Mvb3B0aW9ucyB0byB5b3VyIGFwcGxpY2F0aW9uIGluc3RhbmNlCisgICAgICAgICAgICAvLyB3
aGVuIGl0IGlzIGNyZWF0ZWQKKyAgICAgICAgfQorICAgIH07CisKKyAgICAvLyBpZiAoZW52aXJv
bm1lbnQgPT09ICdkZXZlbG9wbWVudCcpIHsKKyAgICAvLyAgRU5WLkFQUC5MT0dfUkVTT0xWRVIg
PSB0cnVlOworICAgIC8vICBFTlYuQVBQLkxPR19BQ1RJVkVfR0VORVJBVElPTiA9IHRydWU7Cisg
ICAgLy8gIEVOVi5BUFAuTE9HX1RSQU5TSVRJT05TID0gdHJ1ZTsKKyAgICAvLyAgRU5WLkFQUC5M
T0dfVFJBTlNJVElPTlNfSU5URVJOQUwgPSB0cnVlOworICAgIC8vICBFTlYuQVBQLkxPR19WSUVX
X0xPT0tVUFMgPSB0cnVlOworICAgIC8vIH0KKworICAgIGlmIChlbnZpcm9ubWVudCA9PT0gJ3Rl
c3QnKSB7CisgICAgICAgIC8vIFRlc3RlbSBwcmVmZXJzIHRoaXMuLi4KKyAgICAgICAgRU5WLmJh
c2VVUkwgPSAnLyc7CisgICAgICAgIEVOVi5sb2NhdGlvblR5cGUgPSAnbm9uZSc7CisKKyAgICAg
ICAgLy8ga2VlcCB0ZXN0IGNvbnNvbGUgb3V0cHV0IHF1aWV0ZXIKKyAgICAgICAgRU5WLkFQUC5M
T0dfQUNUSVZFX0dFTkVSQVRJT04gPSBmYWxzZTsKKyAgICAgICAgRU5WLkFQUC5MT0dfVklFV19M
T09LVVBTID0gZmFsc2U7CisKKyAgICAgICAgRU5WLkFQUC5yb290RWxlbWVudCA9ICcjZW1iZXIt
dGVzdGluZyc7CisgICAgfQorCisgICAgLy8gaWYgKGVudmlyb25tZW50ID09PSAncHJvZHVjdGlv
bicpIHsKKworICAgIC8vIH0KKworICAgIHJldHVybiBFTlY7Cit9OwpkaWZmIC0tZ2l0IGEvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvdG9kb212Yy9kaXN0L2Fzc2V0cy90b2RvbXZjLWQ0MWQ4
Y2Q5OGYwMGIyMDRlOTgwMDk5OGVjZjg0MjdlLmNzcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvc291
cmNlL3RvZG9tdmMvZGlzdC9hc3NldHMvdG9kb212Yy1kNDFkOGNkOThmMDBiMjA0ZTk4MDA5OThl
Y2Y4NDI3ZS5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTY5ZGUyOWJiMmQxZDY0MzRiOGIyOWFlNzc1YWQ4YzJl
NDhjNTM5MQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvdG9kb212Yy9k
aXN0L2Fzc2V0cy90b2RvbXZjLWZkZDJjNDhjZjY3NTc1M2RlNGE3OWM4NTczNDNlMjNmLmpzIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvdG9kb212Yy9kaXN0L2Fzc2V0cy90b2RvbXZjLWZk
ZDJjNDhjZjY3NTc1M2RlNGE3OWM4NTczNDNlMjNmLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUxNDM2MmY1NjE3
MDJmNTZjZjdhZDBjYzIwMzZlYmYyY2U5NTRkNzIKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9lbWJlcmpzL3NvdXJjZS90b2RvbXZjL2Rpc3QvYXNzZXRzL3RvZG9tdmMtZmRkMmM0OGNm
Njc1NzUzZGU0YTc5Yzg1NzM0M2UyM2YuanMKQEAgLTAsMCArMSBAQAorInVzZSBzdHJpY3QiO2Rl
ZmluZSgidG9kb212Yy9hcHAiLFsiZXhwb3J0cyIsImVtYmVyIiwidG9kb212Yy9yZXNvbHZlciIs
ImVtYmVyLWxvYWQtaW5pdGlhbGl6ZXJzIiwidG9kb212Yy9jb25maWcvZW52aXJvbm1lbnQiXSxm
dW5jdGlvbihlLHQsbixyLGEpe3ZhciBvPXZvaWQgMDt0LmRlZmF1bHQuTU9ERUxfRkFDVE9SWV9J
TkpFQ1RJT05TPSEwLHdpbmRvdy5BcHA9bz10LmRlZmF1bHQuQXBwbGljYXRpb24uZXh0ZW5kKHtt
b2R1bGVQcmVmaXg6YS5kZWZhdWx0Lm1vZHVsZVByZWZpeCxwb2RNb2R1bGVQcmVmaXg6YS5kZWZh
dWx0LnBvZE1vZHVsZVByZWZpeCxSZXNvbHZlcjpuLmRlZmF1bHR9KSwoMCxyLmRlZmF1bHQpKG8s
YS5kZWZhdWx0Lm1vZHVsZVByZWZpeCksZS5kZWZhdWx0PW99KSxkZWZpbmUoInRvZG9tdmMvY29t
cG9uZW50cy9hcHAtdmVyc2lvbiIsWyJleHBvcnRzIiwiZW1iZXItY2xpLWFwcC12ZXJzaW9uL2Nv
bXBvbmVudHMvYXBwLXZlcnNpb24iLCJ0b2RvbXZjL2NvbmZpZy9lbnZpcm9ubWVudCJdLGZ1bmN0
aW9uKGUsdCxuKXt2YXIgcj1uLmRlZmF1bHQuQVBQLm5hbWUsYT1uLmRlZmF1bHQuQVBQLnZlcnNp
b247ZS5kZWZhdWx0PXQuZGVmYXVsdC5leHRlbmQoe3ZlcnNpb246YSxuYW1lOnJ9KX0pLGRlZmlu
ZSgidG9kb212Yy9jb21wb25lbnRzL3RvZG8taXRlbSIsWyJleHBvcnRzIiwiZW1iZXIiXSxmdW5j
dGlvbihlLHQpe2UuZGVmYXVsdD10LmRlZmF1bHQuQ29tcG9uZW50LmV4dGVuZCh7cmVwbzp0LmRl
ZmF1bHQuaW5qZWN0LnNlcnZpY2UoKSx0YWdOYW1lOiJsaSIsZWRpdGluZzohMSxjbGFzc05hbWVC
aW5kaW5nczpbInRvZG8uY29tcGxldGVkIiwiZWRpdGluZyJdLGFjdGlvbnM6e3N0YXJ0RWRpdGlu
ZzpmdW5jdGlvbigpe3RoaXMuZ2V0KCJvblN0YXJ0RWRpdCIpKCksdGhpcy5zZXQoImVkaXRpbmci
LCEwKSx0LmRlZmF1bHQucnVuLnNjaGVkdWxlT25jZSgiYWZ0ZXJSZW5kZXIiLHRoaXMsImZvY3Vz
SW5wdXQiKX0sZG9uZUVkaXRpbmc6ZnVuY3Rpb24oZSl7dGhpcy5nZXQoImVkaXRpbmciKSYmKHQu
ZGVmYXVsdC5pc0JsYW5rKGUpP3RoaXMuc2VuZCgicmVtb3ZlVG9kbyIpOih0aGlzLnNldCgidG9k
by50aXRsZSIsZS50cmltKCkpLHRoaXMuc2V0KCJlZGl0aW5nIiwhMSksdGhpcy5nZXQoIm9uRW5k
RWRpdCIpKCkpKX0saGFuZGxlS2V5ZG93bjpmdW5jdGlvbihlKXsxMz09PWUua2V5Q29kZT9lLnRh
cmdldC5ibHVyKCk6Mjc9PT1lLmtleUNvZGUmJnRoaXMuc2V0KCJlZGl0aW5nIiwhMSl9LHRvZ2ds
ZUNvbXBsZXRlZDpmdW5jdGlvbihlKXt2YXIgbj10aGlzLmdldCgidG9kbyIpO3QuZGVmYXVsdC5z
ZXQobiwiY29tcGxldGVkIixlLnRhcmdldC5jaGVja2VkKSx0aGlzLmdldCgicmVwbyIpLnBlcnNp
c3QoKX0scmVtb3ZlVG9kbzpmdW5jdGlvbigpe3RoaXMuZ2V0KCJyZXBvIikuZGVsZXRlKHRoaXMu
Z2V0KCJ0b2RvIikpfX0sZm9jdXNJbnB1dDpmdW5jdGlvbigpe3RoaXMuZWxlbWVudC5xdWVyeVNl
bGVjdG9yKCJpbnB1dC5lZGl0IikuZm9jdXMoKX19KX0pLGRlZmluZSgidG9kb212Yy9jb21wb25l
bnRzL3RvZG8tbGlzdCIsWyJleHBvcnRzIiwiZW1iZXIiXSxmdW5jdGlvbihlLHQpe2UuZGVmYXVs
dD10LmRlZmF1bHQuQ29tcG9uZW50LmV4dGVuZCh7cmVwbzp0LmRlZmF1bHQuaW5qZWN0LnNlcnZp
Y2UoKSx0YWdOYW1lOiJzZWN0aW9uIixlbGVtZW50SWQ6Im1haW4iLGNhblRvZ2dsZTohMCxhbGxD
b21wbGV0ZWQ6dC5kZWZhdWx0LmNvbXB1dGVkKCJ0b2Rvcy5AZWFjaC5jb21wbGV0ZWQiLGZ1bmN0
aW9uKCl7cmV0dXJuIHRoaXMuZ2V0KCJ0b2RvcyIpLmlzRXZlcnkoImNvbXBsZXRlZCIpfSksYWN0
aW9uczp7ZW5hYmxlVG9nZ2xlOmZ1bmN0aW9uKCl7dGhpcy5zZXQoImNhblRvZ2dsZSIsITApfSxk
aXNhYmxlVG9nZ2xlOmZ1bmN0aW9uKCl7dGhpcy5zZXQoImNhblRvZ2dsZSIsITEpfSx0b2dnbGVB
bGw6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmdldCgiYWxsQ29tcGxldGVkIik7dGhpcy5nZXQoInRv
ZG9zIikuZm9yRWFjaChmdW5jdGlvbihuKXtyZXR1cm4gdC5kZWZhdWx0LnNldChuLCJjb21wbGV0
ZWQiLCFlKX0pLHRoaXMuZ2V0KCJyZXBvIikucGVyc2lzdCgpfX19KX0pLGRlZmluZSgidG9kb212
Yy9jb250cm9sbGVycy9hY3RpdmUiLFsiZXhwb3J0cyIsImVtYmVyIl0sZnVuY3Rpb24oZSx0KXtl
LmRlZmF1bHQ9dC5kZWZhdWx0LkNvbnRyb2xsZXIuZXh0ZW5kKHt0b2Rvczp0LmRlZmF1bHQuY29t
cHV0ZWQuZmlsdGVyQnkoIm1vZGVsIiwiY29tcGxldGVkIiwhMSl9KX0pLGRlZmluZSgidG9kb212
Yy9jb250cm9sbGVycy9hcHBsaWNhdGlvbiIsWyJleHBvcnRzIiwiZW1iZXIiXSxmdW5jdGlvbihl
LHQpe2UuZGVmYXVsdD10LmRlZmF1bHQuQ29udHJvbGxlci5leHRlbmQoe3JlcG86dC5kZWZhdWx0
LmluamVjdC5zZXJ2aWNlKCkscmVtYWluaW5nOnQuZGVmYXVsdC5jb21wdXRlZC5maWx0ZXJCeSgi
bW9kZWwiLCJjb21wbGV0ZWQiLCExKSxjb21wbGV0ZWQ6dC5kZWZhdWx0LmNvbXB1dGVkLmZpbHRl
ckJ5KCJtb2RlbCIsImNvbXBsZXRlZCIpLGFjdGlvbnM6e2NyZWF0ZVRvZG86ZnVuY3Rpb24oZSl7
MTMhPT1lLmtleUNvZGV8fHQuZGVmYXVsdC5pc0JsYW5rKGUudGFyZ2V0LnZhbHVlKXx8KHRoaXMu
Z2V0KCJyZXBvIikuYWRkKHt0aXRsZTplLnRhcmdldC52YWx1ZS50cmltKCksY29tcGxldGVkOiEx
fSksZS50YXJnZXQudmFsdWU9IiIpfSxjbGVhckNvbXBsZXRlZDpmdW5jdGlvbigpe3RoaXMuZ2V0
KCJtb2RlbCIpLnJlbW92ZU9iamVjdHModGhpcy5nZXQoImNvbXBsZXRlZCIpKSx0aGlzLmdldCgi
cmVwbyIpLnBlcnNpc3QoKX19fSl9KSxkZWZpbmUoInRvZG9tdmMvY29udHJvbGxlcnMvY29tcGxl
dGVkIixbImV4cG9ydHMiLCJlbWJlciJdLGZ1bmN0aW9uKGUsdCl7ZS5kZWZhdWx0PXQuZGVmYXVs
dC5Db250cm9sbGVyLmV4dGVuZCh7dG9kb3M6dC5kZWZhdWx0LmNvbXB1dGVkLmZpbHRlckJ5KCJt
b2RlbCIsImNvbXBsZXRlZCIsITApfSl9KSxkZWZpbmUoInRvZG9tdmMvaGVscGVycy9ndCIsWyJl
eHBvcnRzIiwiZW1iZXIiXSxmdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG4oZSl7dmFyIHQ9cihlLDIp
LG49dFswXSxhPXRbMV07cmV0dXJuIG4+YX12YXIgcj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0
KXt2YXIgbj1bXSxyPSEwLGE9ITEsbz12b2lkIDA7dHJ5e2Zvcih2YXIgbCxpPWVbU3ltYm9sLml0
ZXJhdG9yXSgpOyEocj0obD1pLm5leHQoKSkuZG9uZSkmJihuLnB1c2gobC52YWx1ZSksIXR8fG4u
bGVuZ3RoIT09dCk7cj0hMCk7fWNhdGNoKGUpe2E9ITAsbz1lfWZpbmFsbHl7dHJ5eyFyJiZpLnJl
dHVybiYmaS5yZXR1cm4oKX1maW5hbGx5e2lmKGEpdGhyb3cgb319cmV0dXJuIG59cmV0dXJuIGZ1
bmN0aW9uKHQsbil7aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gdDtpZihTeW1ib2wuaXRlcmF0
b3IgaW4gT2JqZWN0KHQpKXJldHVybiBlKHQsbik7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxp
ZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZSIpfX0oKTtlLmd0
PW4sZS5kZWZhdWx0PXQuZGVmYXVsdC5IZWxwZXIuaGVscGVyKG4pfSksZGVmaW5lKCJ0b2RvbXZj
L2hlbHBlcnMvcGx1cmFsaXplIixbImV4cG9ydHMiLCJlbWJlciIsImVtYmVyLWluZmxlY3RvciJd
LGZ1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiByKGUpe3ZhciB0PWEoZSwyKSxyPXRbMF0sbz10WzFd
O3JldHVybiAxPT09bz9yOigwLG4ucGx1cmFsaXplKShyKX12YXIgYT1mdW5jdGlvbigpe2Z1bmN0
aW9uIGUoZSx0KXt2YXIgbj1bXSxyPSEwLGE9ITEsbz12b2lkIDA7dHJ5e2Zvcih2YXIgbCxpPWVb
U3ltYm9sLml0ZXJhdG9yXSgpOyEocj0obD1pLm5leHQoKSkuZG9uZSkmJihuLnB1c2gobC52YWx1
ZSksIXR8fG4ubGVuZ3RoIT09dCk7cj0hMCk7fWNhdGNoKGUpe2E9ITAsbz1lfWZpbmFsbHl7dHJ5
eyFyJiZpLnJldHVybiYmaS5yZXR1cm4oKX1maW5hbGx5e2lmKGEpdGhyb3cgb319cmV0dXJuIG59
cmV0dXJuIGZ1bmN0aW9uKHQsbil7aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gdDtpZihTeW1i
b2wuaXRlcmF0b3IgaW4gT2JqZWN0KHQpKXJldHVybiBlKHQsbik7dGhyb3cgbmV3IFR5cGVFcnJv
cigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZSIp
fX0oKTtlLnBsdXJhbGl6ZUhlbHBlcj1yLGUuZGVmYXVsdD10LmRlZmF1bHQuSGVscGVyLmhlbHBl
cihyKX0pLGRlZmluZSgidG9kb212Yy9oZWxwZXJzL3Npbmd1bGFyaXplIixbImV4cG9ydHMiLCJl
bWJlci1pbmZsZWN0b3IvbGliL2hlbHBlcnMvc2luZ3VsYXJpemUiXSxmdW5jdGlvbihlLHQpe2Uu
ZGVmYXVsdD10LmRlZmF1bHR9KSxkZWZpbmUoInRvZG9tdmMvaW5pdGlhbGl6ZXJzL2FwcC12ZXJz
aW9uIixbImV4cG9ydHMiLCJlbWJlci1jbGktYXBwLXZlcnNpb24vaW5pdGlhbGl6ZXItZmFjdG9y
eSIsInRvZG9tdmMvY29uZmlnL2Vudmlyb25tZW50Il0sZnVuY3Rpb24oZSx0LG4pe2UuZGVmYXVs
dD17bmFtZToiQXBwIFZlcnNpb24iLGluaXRpYWxpemU6KDAsdC5kZWZhdWx0KShuLmRlZmF1bHQu
QVBQLm5hbWUsbi5kZWZhdWx0LkFQUC52ZXJzaW9uKX19KSxkZWZpbmUoInRvZG9tdmMvaW5pdGlh
bGl6ZXJzL2NvbnRhaW5lci1kZWJ1Zy1hZGFwdGVyIixbImV4cG9ydHMiLCJlbWJlci1yZXNvbHZl
ci9jb250YWluZXItZGVidWctYWRhcHRlciJdLGZ1bmN0aW9uKGUsdCl7ZS5kZWZhdWx0PXtuYW1l
OiJjb250YWluZXItZGVidWctYWRhcHRlciIsaW5pdGlhbGl6ZTpmdW5jdGlvbigpe3ZhciBlPWFy
Z3VtZW50c1sxXXx8YXJndW1lbnRzWzBdO2UucmVnaXN0ZXIoImNvbnRhaW5lci1kZWJ1Zy1hZGFw
dGVyOm1haW4iLHQuZGVmYXVsdCksZS5pbmplY3QoImNvbnRhaW5lci1kZWJ1Zy1hZGFwdGVyOm1h
aW4iLCJuYW1lc3BhY2UiLCJhcHBsaWNhdGlvbjptYWluIil9fX0pLGRlZmluZSgidG9kb212Yy9p
bml0aWFsaXplcnMvZXhwb3J0LWFwcGxpY2F0aW9uLWdsb2JhbCIsWyJleHBvcnRzIiwiZW1iZXIi
LCJ0b2RvbXZjL2NvbmZpZy9lbnZpcm9ubWVudCJdLGZ1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiBy
KCl7dmFyIGU9YXJndW1lbnRzWzFdfHxhcmd1bWVudHNbMF07aWYobi5kZWZhdWx0LmV4cG9ydEFw
cGxpY2F0aW9uR2xvYmFsIT09ITEpe3ZhciByO2lmKCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93
KXI9d2luZG93O2Vsc2UgaWYoInVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWwpcj1nbG9iYWw7ZWxz
ZXtpZigidW5kZWZpbmVkIj09dHlwZW9mIHNlbGYpcmV0dXJuO3I9c2VsZn12YXIgYSxvPW4uZGVm
YXVsdC5leHBvcnRBcHBsaWNhdGlvbkdsb2JhbDthPSJzdHJpbmciPT10eXBlb2Ygbz9vOnQuZGVm
YXVsdC5TdHJpbmcuY2xhc3NpZnkobi5kZWZhdWx0Lm1vZHVsZVByZWZpeCksclthXXx8KHJbYV09
ZSxlLnJlb3Blbih7d2lsbERlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLl9zdXBlci5hcHBseSh0aGlz
LGFyZ3VtZW50cyksZGVsZXRlIHJbYV19fSkpfX1lLmluaXRpYWxpemU9cixlLmRlZmF1bHQ9e25h
bWU6ImV4cG9ydC1hcHBsaWNhdGlvbi1nbG9iYWwiLGluaXRpYWxpemU6cn19KSxkZWZpbmUoInRv
ZG9tdmMvaW5zdGFuY2UtaW5pdGlhbGl6ZXJzL2dsb2JhbCIsWyJleHBvcnRzIl0sZnVuY3Rpb24o
ZSl7ZnVuY3Rpb24gdChlKXt3aW5kb3cuQXBwPWV9ZS5pbml0aWFsaXplPXQsZS5kZWZhdWx0PXtu
YW1lOiJnbG9iYWwiLGluaXRpYWxpemU6dH19KSxkZWZpbmUoInRvZG9tdmMvcmVzb2x2ZXIiLFsi
ZXhwb3J0cyIsImVtYmVyLXJlc29sdmVyIl0sZnVuY3Rpb24oZSx0KXtlLmRlZmF1bHQ9dC5kZWZh
dWx0fSksZGVmaW5lKCJ0b2RvbXZjL3JvdXRlciIsWyJleHBvcnRzIiwiZW1iZXIiLCJ0b2RvbXZj
L2NvbmZpZy9lbnZpcm9ubWVudCJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10LmRlZmF1bHQuUm91
dGVyLmV4dGVuZCh7bG9jYXRpb246bi5kZWZhdWx0LmxvY2F0aW9uVHlwZX0pO3IubWFwKGZ1bmN0
aW9uKCl7dGhpcy5yb3V0ZSgiYWN0aXZlIiksdGhpcy5yb3V0ZSgiY29tcGxldGVkIil9KSxlLmRl
ZmF1bHQ9cn0pLGRlZmluZSgidG9kb212Yy9yb3V0ZXMvYXBwbGljYXRpb24iLFsiZXhwb3J0cyIs
ImVtYmVyIl0sZnVuY3Rpb24oZSx0KXtlLmRlZmF1bHQ9dC5kZWZhdWx0LlJvdXRlLmV4dGVuZCh7
cmVwbzp0LmRlZmF1bHQuaW5qZWN0LnNlcnZpY2UoKSxtb2RlbDpmdW5jdGlvbigpe3JldHVybiB0
aGlzLmdldCgicmVwbyIpLmZpbmRBbGwoKX19KX0pLGRlZmluZSgidG9kb212Yy9zZXJ2aWNlcy9h
amF4IixbImV4cG9ydHMiLCJlbWJlci1hamF4L3NlcnZpY2VzL2FqYXgiXSxmdW5jdGlvbihlLHQp
e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJkZWZhdWx0Iix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVu
Y3Rpb24oKXtyZXR1cm4gdC5kZWZhdWx0fX0pfSksZGVmaW5lKCJ0b2RvbXZjL3NlcnZpY2VzL3Jl
cG8iLFsiZXhwb3J0cyIsImVtYmVyIl0sZnVuY3Rpb24oZSx0KXtlLmRlZmF1bHQ9dC5kZWZhdWx0
LlNlcnZpY2UuZXh0ZW5kKHtsYXN0SWQ6MCxkYXRhOm51bGwsZmluZEFsbDpmdW5jdGlvbigpe3Jl
dHVybiB0aGlzLmdldCgiZGF0YSIpfHx0aGlzLnNldCgiZGF0YSIsSlNPTi5wYXJzZSh3aW5kb3cu
bG9jYWxTdG9yYWdlLmdldEl0ZW0oInRvZG9zIil8fCJbXSIpKX0sYWRkOmZ1bmN0aW9uKGUpe3Zh
ciB0PU9iamVjdC5hc3NpZ24oe2lkOnRoaXMuaW5jcmVtZW50UHJvcGVydHkoImxhc3RJZCIpfSxl
KTtyZXR1cm4gdGhpcy5nZXQoImRhdGEiKS5wdXNoT2JqZWN0KHQpLHRoaXMucGVyc2lzdCgpLHR9
LGRlbGV0ZTpmdW5jdGlvbihlKXt0aGlzLmdldCgiZGF0YSIpLnJlbW92ZU9iamVjdChlKSx0aGlz
LnBlcnNpc3QoKX0scGVyc2lzdDpmdW5jdGlvbigpe3dpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRl
bSgidG9kb3MiLEpTT04uc3RyaW5naWZ5KHRoaXMuZ2V0KCJkYXRhIikpKX19KX0pLGRlZmluZSgi
dG9kb212Yy90ZW1wbGF0ZXMvYWN0aXZlIixbImV4cG9ydHMiXSxmdW5jdGlvbihlKXtlLmRlZmF1
bHQ9RW1iZXIuSFRNTEJhcnMudGVtcGxhdGUoZnVuY3Rpb24oKXtyZXR1cm57bWV0YTp7ZnJhZ21l
bnRSZWFzb246e25hbWU6Im1pc3Npbmctd3JhcHBlciIscHJvYmxlbXM6WyJ3cm9uZy10eXBlIl19
LHJldmlzaW9uOiJFbWJlckAyLjYuMiIsbG9jOntzb3VyY2U6bnVsbCxzdGFydDp7bGluZToxLGNv
bHVtbjowfSxlbmQ6e2xpbmU6MSxjb2x1bW46MjV9fSxtb2R1bGVOYW1lOiJ0b2RvbXZjL3RlbXBs
YXRlcy9hY3RpdmUuaGJzIn0saXNFbXB0eTohMSxhcml0eTowLGNhY2hlZEZyYWdtZW50Om51bGws
aGFzUmVuZGVyZWQ6ITEsYnVpbGRGcmFnbWVudDpmdW5jdGlvbihlKXt2YXIgdD1lLmNyZWF0ZURv
Y3VtZW50RnJhZ21lbnQoKSxuPWUuY3JlYXRlQ29tbWVudCgiIik7cmV0dXJuIGUuYXBwZW5kQ2hp
bGQodCxuKSx0fSxidWlsZFJlbmRlck5vZGVzOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uZXcgQXJy
YXkoMSk7cmV0dXJuIHJbMF09ZS5jcmVhdGVNb3JwaEF0KHQsMCwwLG4pLGUuaW5zZXJ0Qm91bmRh
cnkodCwwKSxlLmluc2VydEJvdW5kYXJ5KHQsbnVsbCkscn0sc3RhdGVtZW50czpbWyJpbmxpbmUi
LCJ0b2RvLWxpc3QiLFtdLFsidG9kb3MiLFsic3ViZXhwciIsIkBtdXQiLFtbImdldCIsInRvZG9z
IixbImxvYyIsW251bGwsWzEsMThdLFsxLDIzXV1dXV0sW10sW11dXSxbImxvYyIsW251bGwsWzEs
MF0sWzEsMjVdXV1dXSxsb2NhbHM6W10sdGVtcGxhdGVzOltdfX0oKSl9KSxkZWZpbmUoInRvZG9t
dmMvdGVtcGxhdGVzL2FwcGxpY2F0aW9uIixbImV4cG9ydHMiXSxmdW5jdGlvbihlKXtlLmRlZmF1
bHQ9RW1iZXIuSFRNTEJhcnMudGVtcGxhdGUoZnVuY3Rpb24oKXt2YXIgZT1mdW5jdGlvbigpe3Zh
ciBlPWZ1bmN0aW9uKCl7cmV0dXJue21ldGE6e2ZyYWdtZW50UmVhc29uOiExLHJldmlzaW9uOiJF
bWJlckAyLjYuMiIsbG9jOntzb3VyY2U6bnVsbCxzdGFydDp7bGluZToxMSxjb2x1bW46MTR9LGVu
ZDp7bGluZToxMSxjb2x1bW46NjB9fSxtb2R1bGVOYW1lOiJ0b2RvbXZjL3RlbXBsYXRlcy9hcHBs
aWNhdGlvbi5oYnMifSxpc0VtcHR5OiExLGFyaXR5OjAsY2FjaGVkRnJhZ21lbnQ6bnVsbCxoYXNS
ZW5kZXJlZDohMSxidWlsZEZyYWdtZW50OmZ1bmN0aW9uKGUpe3ZhciB0PWUuY3JlYXRlRG9jdW1l
bnRGcmFnbWVudCgpLG49ZS5jcmVhdGVUZXh0Tm9kZSgiQWxsIik7cmV0dXJuIGUuYXBwZW5kQ2hp
bGQodCxuKSx0fSxidWlsZFJlbmRlck5vZGVzOmZ1bmN0aW9uKCl7cmV0dXJuW119LHN0YXRlbWVu
dHM6W10sbG9jYWxzOltdLHRlbXBsYXRlczpbXX19KCksdD1mdW5jdGlvbigpe3JldHVybnttZXRh
OntmcmFnbWVudFJlYXNvbjohMSxyZXZpc2lvbjoiRW1iZXJAMi42LjIiLGxvYzp7c291cmNlOm51
bGwsc3RhcnQ6e2xpbmU6MTIsY29sdW1uOjE0fSxlbmQ6e2xpbmU6MTIsY29sdW1uOjY0fX0sbW9k
dWxlTmFtZToidG9kb212Yy90ZW1wbGF0ZXMvYXBwbGljYXRpb24uaGJzIn0saXNFbXB0eTohMSxh
cml0eTowLGNhY2hlZEZyYWdtZW50Om51bGwsaGFzUmVuZGVyZWQ6ITEsYnVpbGRGcmFnbWVudDpm
dW5jdGlvbihlKXt2YXIgdD1lLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxuPWUuY3JlYXRlVGV4
dE5vZGUoIkFjdGl2ZSIpO3JldHVybiBlLmFwcGVuZENoaWxkKHQsbiksdH0sYnVpbGRSZW5kZXJO
b2RlczpmdW5jdGlvbigpe3JldHVybltdfSxzdGF0ZW1lbnRzOltdLGxvY2FsczpbXSx0ZW1wbGF0
ZXM6W119fSgpLG49ZnVuY3Rpb24oKXtyZXR1cm57bWV0YTp7ZnJhZ21lbnRSZWFzb246ITEscmV2
aXNpb246IkVtYmVyQDIuNi4yIixsb2M6e3NvdXJjZTpudWxsLHN0YXJ0OntsaW5lOjEzLGNvbHVt
bjoxNH0sZW5kOntsaW5lOjEzLGNvbHVtbjo3MH19LG1vZHVsZU5hbWU6InRvZG9tdmMvdGVtcGxh
dGVzL2FwcGxpY2F0aW9uLmhicyJ9LGlzRW1wdHk6ITEsYXJpdHk6MCxjYWNoZWRGcmFnbWVudDpu
dWxsLGhhc1JlbmRlcmVkOiExLGJ1aWxkRnJhZ21lbnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jcmVh
dGVEb2N1bWVudEZyYWdtZW50KCksbj1lLmNyZWF0ZVRleHROb2RlKCJDb21wbGV0ZWQiKTtyZXR1
cm4gZS5hcHBlbmRDaGlsZCh0LG4pLHR9LGJ1aWxkUmVuZGVyTm9kZXM6ZnVuY3Rpb24oKXtyZXR1
cm5bXX0sc3RhdGVtZW50czpbXSxsb2NhbHM6W10sdGVtcGxhdGVzOltdfX0oKSxyPWZ1bmN0aW9u
KCl7cmV0dXJue21ldGE6e2ZyYWdtZW50UmVhc29uOiExLHJldmlzaW9uOiJFbWJlckAyLjYuMiIs
bG9jOntzb3VyY2U6bnVsbCxzdGFydDp7bGluZToxNSxjb2x1bW46OH0sZW5kOntsaW5lOjE3LGNv
bHVtbjo4fX0sbW9kdWxlTmFtZToidG9kb212Yy90ZW1wbGF0ZXMvYXBwbGljYXRpb24uaGJzIn0s
aXNFbXB0eTohMSxhcml0eTowLGNhY2hlZEZyYWdtZW50Om51bGwsaGFzUmVuZGVyZWQ6ITEsYnVp
bGRGcmFnbWVudDpmdW5jdGlvbihlKXt2YXIgdD1lLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxu
PWUuY3JlYXRlVGV4dE5vZGUoIiAgICAgICAgICAiKTtlLmFwcGVuZENoaWxkKHQsbik7dmFyIG49
ZS5jcmVhdGVFbGVtZW50KCJidXR0b24iKTtlLnNldEF0dHJpYnV0ZShuLCJpZCIsImNsZWFyLWNv
bXBsZXRlZCIpO3ZhciByPWUuY3JlYXRlVGV4dE5vZGUoIkNsZWFyIGNvbXBsZXRlZCIpO2UuYXBw
ZW5kQ2hpbGQobixyKSxlLmFwcGVuZENoaWxkKHQsbik7dmFyIG49ZS5jcmVhdGVUZXh0Tm9kZSgi
XG4iKTtyZXR1cm4gZS5hcHBlbmRDaGlsZCh0LG4pLHR9LGJ1aWxkUmVuZGVyTm9kZXM6ZnVuY3Rp
b24oZSx0LG4pe3ZhciByPWUuY2hpbGRBdCh0LFsxXSksYT1uZXcgQXJyYXkoMSk7cmV0dXJuIGFb
MF09ZS5jcmVhdGVBdHRyTW9ycGgociwib25jbGljayIpLGF9LHN0YXRlbWVudHM6W1siYXR0cmli
dXRlIiwib25jbGljayIsWyJzdWJleHByIiwiYWN0aW9uIixbImNsZWFyQ29tcGxldGVkIl0sW10s
WyJsb2MiLFtudWxsLFsxNiw0N10sWzE2LDc0XV1dXV1dLGxvY2FsczpbXSx0ZW1wbGF0ZXM6W119
fSgpO3JldHVybnttZXRhOntmcmFnbWVudFJlYXNvbjohMSxyZXZpc2lvbjoiRW1iZXJAMi42LjIi
LGxvYzp7c291cmNlOm51bGwsc3RhcnQ6e2xpbmU6Nyxjb2x1bW46NH0sZW5kOntsaW5lOjE5LGNv
bHVtbjo0fX0sbW9kdWxlTmFtZToidG9kb212Yy90ZW1wbGF0ZXMvYXBwbGljYXRpb24uaGJzIn0s
aXNFbXB0eTohMSxhcml0eTowLGNhY2hlZEZyYWdtZW50Om51bGwsaGFzUmVuZGVyZWQ6ITEsYnVp
bGRGcmFnbWVudDpmdW5jdGlvbihlKXt2YXIgdD1lLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxu
PWUuY3JlYXRlVGV4dE5vZGUoIiAgICAgICIpO2UuYXBwZW5kQ2hpbGQodCxuKTt2YXIgbj1lLmNy
ZWF0ZUVsZW1lbnQoImZvb3RlciIpO2Uuc2V0QXR0cmlidXRlKG4sImlkIiwiZm9vdGVyIik7dmFy
IHI9ZS5jcmVhdGVUZXh0Tm9kZSgiXG4gICAgICAgICIpO2UuYXBwZW5kQ2hpbGQobixyKTt2YXIg
cj1lLmNyZWF0ZUVsZW1lbnQoInNwYW4iKTtlLnNldEF0dHJpYnV0ZShyLCJpZCIsInRvZG8tY291
bnQiKTt2YXIgYT1lLmNyZWF0ZUVsZW1lbnQoInN0cm9uZyIpLG89ZS5jcmVhdGVDb21tZW50KCIi
KTtlLmFwcGVuZENoaWxkKGEsbyksZS5hcHBlbmRDaGlsZChyLGEpO3ZhciBhPWUuY3JlYXRlVGV4
dE5vZGUoIiAiKTtlLmFwcGVuZENoaWxkKHIsYSk7dmFyIGE9ZS5jcmVhdGVDb21tZW50KCIiKTtl
LmFwcGVuZENoaWxkKHIsYSk7dmFyIGE9ZS5jcmVhdGVUZXh0Tm9kZSgiIGxlZnQiKTtlLmFwcGVu
ZENoaWxkKHIsYSksZS5hcHBlbmRDaGlsZChuLHIpO3ZhciByPWUuY3JlYXRlVGV4dE5vZGUoIlxu
ICAgICAgICAiKTtlLmFwcGVuZENoaWxkKG4scik7dmFyIHI9ZS5jcmVhdGVFbGVtZW50KCJ1bCIp
O2Uuc2V0QXR0cmlidXRlKHIsImlkIiwiZmlsdGVycyIpO3ZhciBhPWUuY3JlYXRlVGV4dE5vZGUo
IlxuICAgICAgICAgICIpO2UuYXBwZW5kQ2hpbGQocixhKTt2YXIgYT1lLmNyZWF0ZUVsZW1lbnQo
ImxpIiksbz1lLmNyZWF0ZUNvbW1lbnQoIiIpO2UuYXBwZW5kQ2hpbGQoYSxvKSxlLmFwcGVuZENo
aWxkKHIsYSk7dmFyIGE9ZS5jcmVhdGVUZXh0Tm9kZSgiXG4gICAgICAgICAgIik7ZS5hcHBlbmRD
aGlsZChyLGEpO3ZhciBhPWUuY3JlYXRlRWxlbWVudCgibGkiKSxvPWUuY3JlYXRlQ29tbWVudCgi
Iik7ZS5hcHBlbmRDaGlsZChhLG8pLGUuYXBwZW5kQ2hpbGQocixhKTt2YXIgYT1lLmNyZWF0ZVRl
eHROb2RlKCJcbiAgICAgICAgICAiKTtlLmFwcGVuZENoaWxkKHIsYSk7dmFyIGE9ZS5jcmVhdGVF
bGVtZW50KCJsaSIpLG89ZS5jcmVhdGVDb21tZW50KCIiKTtlLmFwcGVuZENoaWxkKGEsbyksZS5h
cHBlbmRDaGlsZChyLGEpO3ZhciBhPWUuY3JlYXRlVGV4dE5vZGUoIlxuICAgICAgICAiKTtlLmFw
cGVuZENoaWxkKHIsYSksZS5hcHBlbmRDaGlsZChuLHIpO3ZhciByPWUuY3JlYXRlVGV4dE5vZGUo
IlxuIik7ZS5hcHBlbmRDaGlsZChuLHIpO3ZhciByPWUuY3JlYXRlQ29tbWVudCgiIik7ZS5hcHBl
bmRDaGlsZChuLHIpO3ZhciByPWUuY3JlYXRlVGV4dE5vZGUoIiAgICAgICIpO2UuYXBwZW5kQ2hp
bGQobixyKSxlLmFwcGVuZENoaWxkKHQsbik7dmFyIG49ZS5jcmVhdGVUZXh0Tm9kZSgiXG4iKTty
ZXR1cm4gZS5hcHBlbmRDaGlsZCh0LG4pLHR9LGJ1aWxkUmVuZGVyTm9kZXM6ZnVuY3Rpb24oZSx0
LG4pe3ZhciByPWUuY2hpbGRBdCh0LFsxXSksYT1lLmNoaWxkQXQocixbMV0pLG89ZS5jaGlsZEF0
KHIsWzNdKSxsPW5ldyBBcnJheSg2KTtyZXR1cm4gbFswXT1lLmNyZWF0ZU1vcnBoQXQoZS5jaGls
ZEF0KGEsWzBdKSwwLDApLGxbMV09ZS5jcmVhdGVNb3JwaEF0KGEsMiwyKSxsWzJdPWUuY3JlYXRl
TW9ycGhBdChlLmNoaWxkQXQobyxbMV0pLDAsMCksbFszXT1lLmNyZWF0ZU1vcnBoQXQoZS5jaGls
ZEF0KG8sWzNdKSwwLDApLGxbNF09ZS5jcmVhdGVNb3JwaEF0KGUuY2hpbGRBdChvLFs1XSksMCww
KSxsWzVdPWUuY3JlYXRlTW9ycGhBdChyLDUsNSksbH0sc3RhdGVtZW50czpbWyJjb250ZW50Iiwi
cmVtYWluaW5nLmxlbmd0aCIsWyJsb2MiLFtudWxsLFs5LDM4XSxbOSw1OF1dXV0sWyJpbmxpbmUi
LCJwbHVyYWxpemUiLFsiaXRlbSIsWyJnZXQiLCJyZW1haW5pbmcubGVuZ3RoIixbImxvYyIsW251
bGwsWzksODddLFs5LDEwM11dXV1dLFtdLFsibG9jIixbbnVsbCxbOSw2OF0sWzksMTA1XV1dXSxb
ImJsb2NrIiwibGluay10byIsWyJpbmRleCJdLFsiYWN0aXZlQ2xhc3MiLCJzZWxlY3RlZCJdLDAs
bnVsbCxbImxvYyIsW251bGwsWzExLDE0XSxbMTEsNzJdXV1dLFsiYmxvY2siLCJsaW5rLXRvIixb
ImFjdGl2ZSJdLFsiYWN0aXZlQ2xhc3MiLCJzZWxlY3RlZCJdLDEsbnVsbCxbImxvYyIsW251bGws
WzEyLDE0XSxbMTIsNzZdXV1dLFsiYmxvY2siLCJsaW5rLXRvIixbImNvbXBsZXRlZCJdLFsiYWN0
aXZlQ2xhc3MiLCJzZWxlY3RlZCJdLDIsbnVsbCxbImxvYyIsW251bGwsWzEzLDE0XSxbMTMsODJd
XV1dLFsiYmxvY2siLCJpZiIsW1siZ2V0IiwiY29tcGxldGVkLmxlbmd0aCIsWyJsb2MiLFtudWxs
LFsxNSwxNF0sWzE1LDMwXV1dXV0sW10sMyxudWxsLFsibG9jIixbbnVsbCxbMTUsOF0sWzE3LDE1
XV1dXV0sbG9jYWxzOltdLHRlbXBsYXRlczpbZSx0LG4scl19fSgpO3JldHVybnttZXRhOntmcmFn
bWVudFJlYXNvbjp7bmFtZToibWlzc2luZy13cmFwcGVyIixwcm9ibGVtczpbIm11bHRpcGxlLW5v
ZGVzIl19LHJldmlzaW9uOiJFbWJlckAyLjYuMiIsbG9jOntzb3VyY2U6bnVsbCxzdGFydDp7bGlu
ZToxLGNvbHVtbjowfSxlbmQ6e2xpbmU6MjksY29sdW1uOjl9fSxtb2R1bGVOYW1lOiJ0b2RvbXZj
L3RlbXBsYXRlcy9hcHBsaWNhdGlvbi5oYnMifSxpc0VtcHR5OiExLGFyaXR5OjAsY2FjaGVkRnJh
Z21lbnQ6bnVsbCxoYXNSZW5kZXJlZDohMSxidWlsZEZyYWdtZW50OmZ1bmN0aW9uKGUpe3ZhciB0
PWUuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLG49ZS5jcmVhdGVFbGVtZW50KCJzZWN0aW9uIik7
ZS5zZXRBdHRyaWJ1dGUobiwiaWQiLCJ0b2RvYXBwIik7dmFyIHI9ZS5jcmVhdGVUZXh0Tm9kZSgi
XG4gICIpO2UuYXBwZW5kQ2hpbGQobixyKTt2YXIgcj1lLmNyZWF0ZUVsZW1lbnQoImhlYWRlciIp
O2Uuc2V0QXR0cmlidXRlKHIsImlkIiwiaGVhZGVyIik7dmFyIGE9ZS5jcmVhdGVUZXh0Tm9kZSgi
XG4gICAgIik7ZS5hcHBlbmRDaGlsZChyLGEpO3ZhciBhPWUuY3JlYXRlRWxlbWVudCgiaDEiKSxv
PWUuY3JlYXRlVGV4dE5vZGUoInRvZG9zIik7ZS5hcHBlbmRDaGlsZChhLG8pLGUuYXBwZW5kQ2hp
bGQocixhKTt2YXIgYT1lLmNyZWF0ZVRleHROb2RlKCJcbiAgICAiKTtlLmFwcGVuZENoaWxkKHIs
YSk7dmFyIGE9ZS5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO2Uuc2V0QXR0cmlidXRlKGEsInR5cGUi
LCJ0ZXh0IiksZS5zZXRBdHRyaWJ1dGUoYSwiaWQiLCJuZXctdG9kbyIpLGUuc2V0QXR0cmlidXRl
KGEsInBsYWNlaG9sZGVyIiwiV2hhdCBuZWVkcyB0byBiZSBkb25lPyIpLGUuc2V0QXR0cmlidXRl
KGEsImF1dG9mb2N1cyIsIiIpLGUuYXBwZW5kQ2hpbGQocixhKTt2YXIgYT1lLmNyZWF0ZVRleHRO
b2RlKCJcbiAgIik7ZS5hcHBlbmRDaGlsZChyLGEpLGUuYXBwZW5kQ2hpbGQobixyKTt2YXIgcj1l
LmNyZWF0ZVRleHROb2RlKCJcbiAgICAiKTtlLmFwcGVuZENoaWxkKG4scik7dmFyIHI9ZS5jcmVh
dGVDb21tZW50KCIiKTtlLmFwcGVuZENoaWxkKG4scik7dmFyIHI9ZS5jcmVhdGVUZXh0Tm9kZSgi
XG4iKTtlLmFwcGVuZENoaWxkKG4scik7dmFyIHI9ZS5jcmVhdGVDb21tZW50KCIiKTtlLmFwcGVu
ZENoaWxkKG4sciksZS5hcHBlbmRDaGlsZCh0LG4pO3ZhciBuPWUuY3JlYXRlVGV4dE5vZGUoIlxu
Iik7ZS5hcHBlbmRDaGlsZCh0LG4pO3ZhciBuPWUuY3JlYXRlRWxlbWVudCgiZm9vdGVyIik7ZS5z
ZXRBdHRyaWJ1dGUobiwiaWQiLCJpbmZvIik7dmFyIHI9ZS5jcmVhdGVUZXh0Tm9kZSgiXG4gICIp
O2UuYXBwZW5kQ2hpbGQobixyKTt2YXIgcj1lLmNyZWF0ZUVsZW1lbnQoInAiKSxhPWUuY3JlYXRl
VGV4dE5vZGUoIkRvdWJsZS1jbGljayB0byBlZGl0IGEgdG9kbyIpO2UuYXBwZW5kQ2hpbGQocixh
KSxlLmFwcGVuZENoaWxkKG4scik7dmFyIHI9ZS5jcmVhdGVUZXh0Tm9kZSgiXG4gICIpO2UuYXBw
ZW5kQ2hpbGQobixyKTt2YXIgcj1lLmNyZWF0ZUVsZW1lbnQoInAiKSxhPWUuY3JlYXRlVGV4dE5v
ZGUoIlxuICAgIENyZWF0ZWQgYnlcbiAgICAiKTtlLmFwcGVuZENoaWxkKHIsYSk7dmFyIGE9ZS5j
cmVhdGVFbGVtZW50KCJhIik7ZS5zZXRBdHRyaWJ1dGUoYSwiaHJlZiIsImh0dHA6Ly9naXRodWIu
Y29tL2NpYmVybm94Iik7dmFyIG89ZS5jcmVhdGVUZXh0Tm9kZSgiTWlndWVsIENhbWJhIik7ZS5h
cHBlbmRDaGlsZChhLG8pLGUuYXBwZW5kQ2hpbGQocixhKTt2YXIgYT1lLmNyZWF0ZVRleHROb2Rl
KCIsXG4gICAgIik7ZS5hcHBlbmRDaGlsZChyLGEpO3ZhciBhPWUuY3JlYXRlRWxlbWVudCgiYSIp
O2Uuc2V0QXR0cmlidXRlKGEsImhyZWYiLCJodHRwOi8vZ2l0aHViLmNvbS9hZGR5b3NtYW5pIik7
dmFyIG89ZS5jcmVhdGVUZXh0Tm9kZSgiQWRkeSBPc21hbmkiKTtlLmFwcGVuZENoaWxkKGEsbyks
ZS5hcHBlbmRDaGlsZChyLGEpO3ZhciBhPWUuY3JlYXRlVGV4dE5vZGUoIlxuICAiKTtlLmFwcGVu
ZENoaWxkKHIsYSksZS5hcHBlbmRDaGlsZChuLHIpO3ZhciByPWUuY3JlYXRlVGV4dE5vZGUoIlxu
ICAiKTtlLmFwcGVuZENoaWxkKG4scik7dmFyIHI9ZS5jcmVhdGVFbGVtZW50KCJwIiksYT1lLmNy
ZWF0ZVRleHROb2RlKCJQYXJ0IG9mICIpO2UuYXBwZW5kQ2hpbGQocixhKTt2YXIgYT1lLmNyZWF0
ZUVsZW1lbnQoImEiKTtlLnNldEF0dHJpYnV0ZShhLCJocmVmIiwiaHR0cDovL3RvZG9tdmMuY29t
Iik7dmFyIG89ZS5jcmVhdGVUZXh0Tm9kZSgiVG9kb01WQyIpO2UuYXBwZW5kQ2hpbGQoYSxvKSxl
LmFwcGVuZENoaWxkKHIsYSksZS5hcHBlbmRDaGlsZChuLHIpO3ZhciByPWUuY3JlYXRlVGV4dE5v
ZGUoIlxuIik7cmV0dXJuIGUuYXBwZW5kQ2hpbGQobixyKSxlLmFwcGVuZENoaWxkKHQsbiksdH0s
YnVpbGRSZW5kZXJOb2RlczpmdW5jdGlvbihlLHQsbil7dmFyIHI9ZS5jaGlsZEF0KHQsWzBdKSxh
PWUuY2hpbGRBdChyLFsxLDNdKSxvPW5ldyBBcnJheSgzKTtyZXR1cm4gb1swXT1lLmNyZWF0ZUF0
dHJNb3JwaChhLCJvbmtleWRvd24iKSxvWzFdPWUuY3JlYXRlTW9ycGhBdChyLDMsMyksb1syXT1l
LmNyZWF0ZU1vcnBoQXQociw1LDUpLG99LHN0YXRlbWVudHM6W1siYXR0cmlidXRlIiwib25rZXlk
b3duIixbInN1YmV4cHIiLCJhY3Rpb24iLFsiY3JlYXRlVG9kbyJdLFtdLFsibG9jIixbbnVsbCxb
NCw0N10sWzQsNzBdXV1dXSxbImNvbnRlbnQiLCJvdXRsZXQiLFsibG9jIixbbnVsbCxbNiw0XSxb
NiwxNF1dXV0sWyJibG9jayIsImlmIixbWyJzdWJleHByIiwiZ3QiLFtbImdldCIsIm1vZGVsLmxl
bmd0aCIsWyJsb2MiLFtudWxsLFs3LDE0XSxbNywyNl1dXV0sMF0sW10sWyJsb2MiLFtudWxsLFs3
LDEwXSxbNywyOV1dXV1dLFtdLDAsbnVsbCxbImxvYyIsW251bGwsWzcsNF0sWzE5LDExXV1dXV0s
bG9jYWxzOltdLHRlbXBsYXRlczpbZV19fSgpKX0pLGRlZmluZSgidG9kb212Yy90ZW1wbGF0ZXMv
Y29tcGxldGVkIixbImV4cG9ydHMiXSxmdW5jdGlvbihlKXtlLmRlZmF1bHQ9RW1iZXIuSFRNTEJh
cnMudGVtcGxhdGUoZnVuY3Rpb24oKXtyZXR1cm57bWV0YTp7ZnJhZ21lbnRSZWFzb246e25hbWU6
Im1pc3Npbmctd3JhcHBlciIscHJvYmxlbXM6WyJ3cm9uZy10eXBlIl19LHJldmlzaW9uOiJFbWJl
ckAyLjYuMiIsbG9jOntzb3VyY2U6bnVsbCxzdGFydDp7bGluZToxLGNvbHVtbjowfSxlbmQ6e2xp
bmU6MSxjb2x1bW46MjV9fSxtb2R1bGVOYW1lOiJ0b2RvbXZjL3RlbXBsYXRlcy9jb21wbGV0ZWQu
aGJzIn0saXNFbXB0eTohMSxhcml0eTowLGNhY2hlZEZyYWdtZW50Om51bGwsaGFzUmVuZGVyZWQ6
ITEsYnVpbGRGcmFnbWVudDpmdW5jdGlvbihlKXt2YXIgdD1lLmNyZWF0ZURvY3VtZW50RnJhZ21l
bnQoKSxuPWUuY3JlYXRlQ29tbWVudCgiIik7cmV0dXJuIGUuYXBwZW5kQ2hpbGQodCxuKSx0fSxi
dWlsZFJlbmRlck5vZGVzOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uZXcgQXJyYXkoMSk7cmV0dXJu
IHJbMF09ZS5jcmVhdGVNb3JwaEF0KHQsMCwwLG4pLGUuaW5zZXJ0Qm91bmRhcnkodCwwKSxlLmlu
c2VydEJvdW5kYXJ5KHQsbnVsbCkscn0sc3RhdGVtZW50czpbWyJpbmxpbmUiLCJ0b2RvLWxpc3Qi
LFtdLFsidG9kb3MiLFsic3ViZXhwciIsIkBtdXQiLFtbImdldCIsInRvZG9zIixbImxvYyIsW251
bGwsWzEsMThdLFsxLDIzXV1dXV0sW10sW11dXSxbImxvYyIsW251bGwsWzEsMF0sWzEsMjVdXV1d
XSxsb2NhbHM6W10sdGVtcGxhdGVzOltdfX0oKSl9KSxkZWZpbmUoInRvZG9tdmMvdGVtcGxhdGVz
L2NvbXBvbmVudHMvdG9kby1pdGVtIixbImV4cG9ydHMiXSxmdW5jdGlvbihlKXtlLmRlZmF1bHQ9
RW1iZXIuSFRNTEJhcnMudGVtcGxhdGUoZnVuY3Rpb24oKXtyZXR1cm57bWV0YTp7ZnJhZ21lbnRS
ZWFzb246e25hbWU6Im1pc3Npbmctd3JhcHBlciIscHJvYmxlbXM6WyJtdWx0aXBsZS1ub2RlcyJd
fSxyZXZpc2lvbjoiRW1iZXJAMi42LjIiLGxvYzp7c291cmNlOm51bGwsc3RhcnQ6e2xpbmU6MSxj
b2x1bW46MH0sZW5kOntsaW5lOjYsY29sdW1uOjE1M319LG1vZHVsZU5hbWU6InRvZG9tdmMvdGVt
cGxhdGVzL2NvbXBvbmVudHMvdG9kby1pdGVtLmhicyJ9LGlzRW1wdHk6ITEsYXJpdHk6MCxjYWNo
ZWRGcmFnbWVudDpudWxsLGhhc1JlbmRlcmVkOiExLGJ1aWxkRnJhZ21lbnQ6ZnVuY3Rpb24oZSl7
dmFyIHQ9ZS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksbj1lLmNyZWF0ZUVsZW1lbnQoImRpdiIp
O2Uuc2V0QXR0cmlidXRlKG4sImNsYXNzIiwidmlldyIpO3ZhciByPWUuY3JlYXRlVGV4dE5vZGUo
IlxuICAiKTtlLmFwcGVuZENoaWxkKG4scik7dmFyIHI9ZS5jcmVhdGVFbGVtZW50KCJpbnB1dCIp
O2Uuc2V0QXR0cmlidXRlKHIsInR5cGUiLCJjaGVja2JveCIpLGUuc2V0QXR0cmlidXRlKHIsImNs
YXNzIiwidG9nZ2xlIiksZS5hcHBlbmRDaGlsZChuLHIpO3ZhciByPWUuY3JlYXRlVGV4dE5vZGUo
IlxuICAiKTtlLmFwcGVuZENoaWxkKG4scik7dmFyIHI9ZS5jcmVhdGVFbGVtZW50KCJsYWJlbCIp
LGE9ZS5jcmVhdGVDb21tZW50KCIiKTtlLmFwcGVuZENoaWxkKHIsYSksZS5hcHBlbmRDaGlsZChu
LHIpO3ZhciByPWUuY3JlYXRlVGV4dE5vZGUoIlxuICAiKTtlLmFwcGVuZENoaWxkKG4scik7dmFy
IHI9ZS5jcmVhdGVFbGVtZW50KCJidXR0b24iKTtlLnNldEF0dHJpYnV0ZShyLCJjbGFzcyIsImRl
c3Ryb3kiKSxlLmFwcGVuZENoaWxkKG4scik7dmFyIHI9ZS5jcmVhdGVUZXh0Tm9kZSgiXG4iKTtl
LmFwcGVuZENoaWxkKG4sciksZS5hcHBlbmRDaGlsZCh0LG4pO3ZhciBuPWUuY3JlYXRlVGV4dE5v
ZGUoIlxuIik7ZS5hcHBlbmRDaGlsZCh0LG4pO3ZhciBuPWUuY3JlYXRlRWxlbWVudCgiaW5wdXQi
KTtyZXR1cm4gZS5zZXRBdHRyaWJ1dGUobiwidHlwZSIsInRleHQiKSxlLnNldEF0dHJpYnV0ZShu
LCJjbGFzcyIsImVkaXQiKSxlLnNldEF0dHJpYnV0ZShuLCJhdXRvZm9jdXMiLCIiKSxlLmFwcGVu
ZENoaWxkKHQsbiksdH0sYnVpbGRSZW5kZXJOb2RlczpmdW5jdGlvbihlLHQsbil7dmFyIHI9ZS5j
aGlsZEF0KHQsWzBdKSxhPWUuY2hpbGRBdChyLFsxXSk7dGhpcy5jYWNoZWRGcmFnbWVudCYmZS5y
ZXBhaXJDbG9uZWROb2RlKGEsW10sITApO3ZhciBvPWUuY2hpbGRBdChyLFszXSksbD1lLmNoaWxk
QXQocixbNV0pLGk9ZS5jaGlsZEF0KHQsWzJdKSxkPW5ldyBBcnJheSg4KTtyZXR1cm4gZFswXT1l
LmNyZWF0ZUF0dHJNb3JwaChhLCJjaGVja2VkIiksZFsxXT1lLmNyZWF0ZUF0dHJNb3JwaChhLCJv
bmNoYW5nZSIpLGRbMl09ZS5jcmVhdGVBdHRyTW9ycGgobywib25kYmxjbGljayIpLGRbM109ZS5j
cmVhdGVNb3JwaEF0KG8sMCwwKSxkWzRdPWUuY3JlYXRlQXR0ck1vcnBoKGwsIm9uY2xpY2siKSxk
WzVdPWUuY3JlYXRlQXR0ck1vcnBoKGksInZhbHVlIiksZFs2XT1lLmNyZWF0ZUF0dHJNb3JwaChp
LCJvbmJsdXIiKSxkWzddPWUuY3JlYXRlQXR0ck1vcnBoKGksIm9ua2V5ZG93biIpLGR9LHN0YXRl
bWVudHM6W1siYXR0cmlidXRlIiwiY2hlY2tlZCIsWyJnZXQiLCJ0b2RvLmNvbXBsZXRlZCIsWyJs
b2MiLFtudWxsLFsyLDUwXSxbMiw2NF1dXV1dLFsiYXR0cmlidXRlIiwib25jaGFuZ2UiLFsic3Vi
ZXhwciIsImFjdGlvbiIsWyJ0b2dnbGVDb21wbGV0ZWQiXSxbXSxbImxvYyIsW251bGwsWzIsNzZd
LFsyLDEwNF1dXV1dLFsiYXR0cmlidXRlIiwib25kYmxjbGljayIsWyJzdWJleHByIiwiYWN0aW9u
IixbInN0YXJ0RWRpdGluZyJdLFtdLFsibG9jIixbbnVsbCxbMywyMF0sWzMsNDVdXV1dXSxbImNv
bnRlbnQiLCJ0b2RvLnRpdGxlIixbImxvYyIsW251bGwsWzMsNDZdLFszLDYwXV1dXSxbImF0dHJp
YnV0ZSIsIm9uY2xpY2siLFsic3ViZXhwciIsImFjdGlvbiIsWyJyZW1vdmVUb2RvIl0sW10sWyJs
b2MiLFtudWxsLFs0LDE4XSxbNCw0MV1dXV1dLFsiYXR0cmlidXRlIiwidmFsdWUiLFsiZ2V0Iiwi
dG9kby50aXRsZSIsWyJsb2MiLFtudWxsLFs2LDQwXSxbNiw1MF1dXV1dLFsiYXR0cmlidXRlIiwi
b25ibHVyIixbInN1YmV4cHIiLCJhY3Rpb24iLFsiZG9uZUVkaXRpbmciXSxbInZhbHVlIiwidGFy
Z2V0LnZhbHVlIl0sWyJsb2MiLFtudWxsLFs2LDYwXSxbNiwxMDVdXV1dXSxbImF0dHJpYnV0ZSIs
Im9ua2V5ZG93biIsWyJzdWJleHByIiwiYWN0aW9uIixbImhhbmRsZUtleWRvd24iXSxbXSxbImxv
YyIsW251bGwsWzYsMTE2XSxbNiwxNDJdXV1dXV0sbG9jYWxzOltdLHRlbXBsYXRlczpbXX19KCkp
fSksZGVmaW5lKCJ0b2RvbXZjL3RlbXBsYXRlcy9jb21wb25lbnRzL3RvZG8tbGlzdCIsWyJleHBv
cnRzIl0sZnVuY3Rpb24oZSl7ZS5kZWZhdWx0PUVtYmVyLkhUTUxCYXJzLnRlbXBsYXRlKGZ1bmN0
aW9uKCl7dmFyIGU9ZnVuY3Rpb24oKXt2YXIgZT1mdW5jdGlvbigpe3JldHVybnttZXRhOntmcmFn
bWVudFJlYXNvbjohMSxyZXZpc2lvbjoiRW1iZXJAMi42LjIiLGxvYzp7c291cmNlOm51bGwsc3Rh
cnQ6e2xpbmU6Mixjb2x1bW46Mn0sZW5kOntsaW5lOjQsY29sdW1uOjJ9fSxtb2R1bGVOYW1lOiJ0
b2RvbXZjL3RlbXBsYXRlcy9jb21wb25lbnRzL3RvZG8tbGlzdC5oYnMifSxpc0VtcHR5OiExLGFy
aXR5OjAsY2FjaGVkRnJhZ21lbnQ6bnVsbCxoYXNSZW5kZXJlZDohMSxidWlsZEZyYWdtZW50OmZ1
bmN0aW9uKGUpe3ZhciB0PWUuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLG49ZS5jcmVhdGVUZXh0
Tm9kZSgiICAgICIpO2UuYXBwZW5kQ2hpbGQodCxuKTt2YXIgbj1lLmNyZWF0ZUVsZW1lbnQoImlu
cHV0Iik7ZS5zZXRBdHRyaWJ1dGUobiwidHlwZSIsImNoZWNrYm94IiksZS5zZXRBdHRyaWJ1dGUo
biwiaWQiLCJ0b2dnbGUtYWxsIiksZS5hcHBlbmRDaGlsZCh0LG4pO3ZhciBuPWUuY3JlYXRlVGV4
dE5vZGUoIlxuIik7cmV0dXJuIGUuYXBwZW5kQ2hpbGQodCxuKSx0fSxidWlsZFJlbmRlck5vZGVz
OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lLmNoaWxkQXQodCxbMV0pO3RoaXMuY2FjaGVkRnJhZ21l
bnQmJmUucmVwYWlyQ2xvbmVkTm9kZShyLFtdLCEwKTt2YXIgYT1uZXcgQXJyYXkoMik7cmV0dXJu
IGFbMF09ZS5jcmVhdGVBdHRyTW9ycGgociwiY2hlY2tlZCIpLGFbMV09ZS5jcmVhdGVBdHRyTW9y
cGgociwib25jaGFuZ2UiKSxhfSxzdGF0ZW1lbnRzOltbImF0dHJpYnV0ZSIsImNoZWNrZWQiLFsi
Z2V0IiwiYWxsQ29tcGxldGVkIixbImxvYyIsW251bGwsWzMsNTNdLFszLDY1XV1dXV0sWyJhdHRy
aWJ1dGUiLCJvbmNoYW5nZSIsWyJzdWJleHByIiwiYWN0aW9uIixbInRvZ2dsZUFsbCJdLFtdLFsi
bG9jIixbbnVsbCxbMyw3N10sWzMsOTldXV1dXV0sbG9jYWxzOltdLHRlbXBsYXRlczpbXX19KCks
dD1mdW5jdGlvbigpe3JldHVybnttZXRhOntmcmFnbWVudFJlYXNvbjohMSxyZXZpc2lvbjoiRW1i
ZXJAMi42LjIiLGxvYzp7c291cmNlOm51bGwsc3RhcnQ6e2xpbmU6Nixjb2x1bW46NH0sZW5kOnts
aW5lOjgsY29sdW1uOjR9fSxtb2R1bGVOYW1lOiJ0b2RvbXZjL3RlbXBsYXRlcy9jb21wb25lbnRz
L3RvZG8tbGlzdC5oYnMifSxpc0VtcHR5OiExLGFyaXR5OjEsY2FjaGVkRnJhZ21lbnQ6bnVsbCxo
YXNSZW5kZXJlZDohMSxidWlsZEZyYWdtZW50OmZ1bmN0aW9uKGUpe3ZhciB0PWUuY3JlYXRlRG9j
dW1lbnRGcmFnbWVudCgpLG49ZS5jcmVhdGVUZXh0Tm9kZSgiICAgICAgIik7ZS5hcHBlbmRDaGls
ZCh0LG4pO3ZhciBuPWUuY3JlYXRlQ29tbWVudCgiIik7ZS5hcHBlbmRDaGlsZCh0LG4pO3ZhciBu
PWUuY3JlYXRlVGV4dE5vZGUoIlxuIik7cmV0dXJuIGUuYXBwZW5kQ2hpbGQodCxuKSx0fSxidWls
ZFJlbmRlck5vZGVzOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uZXcgQXJyYXkoMSk7cmV0dXJuIHJb
MF09ZS5jcmVhdGVNb3JwaEF0KHQsMSwxLG4pLHJ9LHN0YXRlbWVudHM6W1siaW5saW5lIiwidG9k
by1pdGVtIixbXSxbInRvZG8iLFsic3ViZXhwciIsIkBtdXQiLFtbImdldCIsInRvZG8iLFsibG9j
IixbbnVsbCxbNywyM10sWzcsMjddXV1dXSxbXSxbXV0sIm9uU3RhcnRFZGl0IixbInN1YmV4cHIi
LCJhY3Rpb24iLFsiZGlzYWJsZVRvZ2dsZSJdLFtdLFsibG9jIixbbnVsbCxbNyw0MF0sWzcsNjRd
XV1dLCJvbkVuZEVkaXQiLFsic3ViZXhwciIsImFjdGlvbiIsWyJlbmFibGVUb2dnbGUiXSxbXSxb
ImxvYyIsW251bGwsWzcsNzVdLFs3LDk4XV1dXV0sWyJsb2MiLFtudWxsLFs3LDZdLFs3LDEwMF1d
XV1dLGxvY2FsczpbInRvZG8iXSx0ZW1wbGF0ZXM6W119fSgpO3JldHVybnttZXRhOntmcmFnbWVu
dFJlYXNvbjp7bmFtZToibWlzc2luZy13cmFwcGVyIixwcm9ibGVtczpbIndyb25nLXR5cGUiLCJt
dWx0aXBsZS1ub2RlcyJdfSxyZXZpc2lvbjoiRW1iZXJAMi42LjIiLGxvYzp7c291cmNlOm51bGws
c3RhcnQ6e2xpbmU6MSxjb2x1bW46MH0sZW5kOntsaW5lOjEwLGNvbHVtbjowfX0sbW9kdWxlTmFt
ZToidG9kb212Yy90ZW1wbGF0ZXMvY29tcG9uZW50cy90b2RvLWxpc3QuaGJzIn0saXNFbXB0eToh
MSxhcml0eTowLGNhY2hlZEZyYWdtZW50Om51bGwsaGFzUmVuZGVyZWQ6ITEsYnVpbGRGcmFnbWVu
dDpmdW5jdGlvbihlKXt2YXIgdD1lLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxuPWUuY3JlYXRl
Q29tbWVudCgiIik7ZS5hcHBlbmRDaGlsZCh0LG4pO3ZhciBuPWUuY3JlYXRlVGV4dE5vZGUoIiAg
Iik7ZS5hcHBlbmRDaGlsZCh0LG4pO3ZhciBuPWUuY3JlYXRlRWxlbWVudCgidWwiKTtlLnNldEF0
dHJpYnV0ZShuLCJpZCIsInRvZG8tbGlzdCIpLGUuc2V0QXR0cmlidXRlKG4sImNsYXNzIiwidG9k
by1saXN0Iik7dmFyIHI9ZS5jcmVhdGVUZXh0Tm9kZSgiXG4iKTtlLmFwcGVuZENoaWxkKG4scik7
dmFyIHI9ZS5jcmVhdGVDb21tZW50KCIiKTtlLmFwcGVuZENoaWxkKG4scik7dmFyIHI9ZS5jcmVh
dGVUZXh0Tm9kZSgiICAiKTtlLmFwcGVuZENoaWxkKG4sciksZS5hcHBlbmRDaGlsZCh0LG4pO3Zh
ciBuPWUuY3JlYXRlVGV4dE5vZGUoIlxuIik7cmV0dXJuIGUuYXBwZW5kQ2hpbGQodCxuKSx0fSxi
dWlsZFJlbmRlck5vZGVzOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uZXcgQXJyYXkoMik7cmV0dXJu
IHJbMF09ZS5jcmVhdGVNb3JwaEF0KHQsMCwwLG4pLHJbMV09ZS5jcmVhdGVNb3JwaEF0KGUuY2hp
bGRBdCh0LFsyXSksMSwxKSxlLmluc2VydEJvdW5kYXJ5KHQsMCkscn0sc3RhdGVtZW50czpbWyJi
bG9jayIsImlmIixbWyJnZXQiLCJjYW5Ub2dnbGUiLFsibG9jIixbbnVsbCxbMiw4XSxbMiwxN11d
XV1dLFtdLDAsbnVsbCxbImxvYyIsW251bGwsWzIsMl0sWzQsOV1dXV0sWyJibG9jayIsImVhY2gi
LFtbImdldCIsInRvZG9zIixbImxvYyIsW251bGwsWzYsMTJdLFs2LDE3XV1dXV0sW10sMSxudWxs
LFsibG9jIixbbnVsbCxbNiw0XSxbOCwxM11dXV1dLGxvY2FsczpbXSx0ZW1wbGF0ZXM6W2UsdF19
fSgpO3JldHVybnttZXRhOntmcmFnbWVudFJlYXNvbjp7bmFtZToibWlzc2luZy13cmFwcGVyIixw
cm9ibGVtczpbIndyb25nLXR5cGUiXX0scmV2aXNpb246IkVtYmVyQDIuNi4yIixsb2M6e3NvdXJj
ZTpudWxsLHN0YXJ0OntsaW5lOjEsY29sdW1uOjB9LGVuZDp7bGluZToxMSxjb2x1bW46MH19LG1v
ZHVsZU5hbWU6InRvZG9tdmMvdGVtcGxhdGVzL2NvbXBvbmVudHMvdG9kby1saXN0LmhicyJ9LGlz
RW1wdHk6ITEsYXJpdHk6MCxjYWNoZWRGcmFnbWVudDpudWxsLGhhc1JlbmRlcmVkOiExLGJ1aWxk
RnJhZ21lbnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksbj1l
LmNyZWF0ZUNvbW1lbnQoIiIpO3JldHVybiBlLmFwcGVuZENoaWxkKHQsbiksdH0sYnVpbGRSZW5k
ZXJOb2RlczpmdW5jdGlvbihlLHQsbil7dmFyIHI9bmV3IEFycmF5KDEpO3JldHVybiByWzBdPWUu
Y3JlYXRlTW9ycGhBdCh0LDAsMCxuKSxlLmluc2VydEJvdW5kYXJ5KHQsMCksZS5pbnNlcnRCb3Vu
ZGFyeSh0LG51bGwpLHJ9LHN0YXRlbWVudHM6W1siYmxvY2siLCJpZiIsW1siZ2V0IiwidG9kb3Mu
bGVuZ3RoIixbImxvYyIsW251bGwsWzEsNl0sWzEsMThdXV1dXSxbXSwwLG51bGwsWyJsb2MiLFtu
dWxsLFsxLDBdLFsxMCw3XV1dXV0sbG9jYWxzOltdLHRlbXBsYXRlczpbZV19fSgpKX0pLGRlZmlu
ZSgidG9kb212Yy90ZW1wbGF0ZXMvaW5kZXgiLFsiZXhwb3J0cyJdLGZ1bmN0aW9uKGUpe2UuZGVm
YXVsdD1FbWJlci5IVE1MQmFycy50ZW1wbGF0ZShmdW5jdGlvbigpe3ZhciBlPWZ1bmN0aW9uKCl7
cmV0dXJue21ldGE6e2ZyYWdtZW50UmVhc29uOntuYW1lOiJtaXNzaW5nLXdyYXBwZXIiLHByb2Js
ZW1zOlsid3JvbmctdHlwZSJdfSxyZXZpc2lvbjoiRW1iZXJAMi42LjIiLGxvYzp7c291cmNlOm51
bGwsc3RhcnQ6e2xpbmU6MSxjb2x1bW46MH0sZW5kOntsaW5lOjMsY29sdW1uOjB9fSxtb2R1bGVO
YW1lOiJ0b2RvbXZjL3RlbXBsYXRlcy9pbmRleC5oYnMifSxpc0VtcHR5OiExLGFyaXR5OjAsY2Fj
aGVkRnJhZ21lbnQ6bnVsbCxoYXNSZW5kZXJlZDohMSxidWlsZEZyYWdtZW50OmZ1bmN0aW9uKGUp
e3ZhciB0PWUuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLG49ZS5jcmVhdGVUZXh0Tm9kZSgiICAi
KTtlLmFwcGVuZENoaWxkKHQsbik7dmFyIG49ZS5jcmVhdGVDb21tZW50KCIiKTtlLmFwcGVuZENo
aWxkKHQsbik7dmFyIG49ZS5jcmVhdGVUZXh0Tm9kZSgiXG4iKTtyZXR1cm4gZS5hcHBlbmRDaGls
ZCh0LG4pLHR9LGJ1aWxkUmVuZGVyTm9kZXM6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW5ldyBBcnJh
eSgxKTtyZXR1cm4gclswXT1lLmNyZWF0ZU1vcnBoQXQodCwxLDEsbikscn0sc3RhdGVtZW50czpb
WyJpbmxpbmUiLCJ0b2RvLWxpc3QiLFtdLFsidG9kb3MiLFsic3ViZXhwciIsIkBtdXQiLFtbImdl
dCIsIm1vZGVsIixbImxvYyIsW251bGwsWzIsMjBdLFsyLDI1XV1dXV0sW10sW11dXSxbImxvYyIs
W251bGwsWzIsMl0sWzIsMjddXV1dXSxsb2NhbHM6W10sdGVtcGxhdGVzOltdfX0oKTtyZXR1cm57
bWV0YTp7ZnJhZ21lbnRSZWFzb246e25hbWU6Im1pc3Npbmctd3JhcHBlciIscHJvYmxlbXM6WyJ3
cm9uZy10eXBlIl19LHJldmlzaW9uOiJFbWJlckAyLjYuMiIsbG9jOntzb3VyY2U6bnVsbCxzdGFy
dDp7bGluZToxLGNvbHVtbjowfSxlbmQ6e2xpbmU6NCxjb2x1bW46MH19LG1vZHVsZU5hbWU6InRv
ZG9tdmMvdGVtcGxhdGVzL2luZGV4LmhicyJ9LGlzRW1wdHk6ITEsYXJpdHk6MCxjYWNoZWRGcmFn
bWVudDpudWxsLGhhc1JlbmRlcmVkOiExLGJ1aWxkRnJhZ21lbnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9
ZS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksbj1lLmNyZWF0ZUNvbW1lbnQoIiIpO3JldHVybiBl
LmFwcGVuZENoaWxkKHQsbiksdH0sYnVpbGRSZW5kZXJOb2RlczpmdW5jdGlvbihlLHQsbil7dmFy
IHI9bmV3IEFycmF5KDEpO3JldHVybiByWzBdPWUuY3JlYXRlTW9ycGhBdCh0LDAsMCxuKSxlLmlu
c2VydEJvdW5kYXJ5KHQsMCksZS5pbnNlcnRCb3VuZGFyeSh0LG51bGwpLHJ9LHN0YXRlbWVudHM6
W1siYmxvY2siLCJpZiIsW1siZ2V0IiwibW9kZWwubGVuZ3RoIixbImxvYyIsW251bGwsWzEsNl0s
WzEsMThdXV1dXSxbXSwwLG51bGwsWyJsb2MiLFtudWxsLFsxLDBdLFszLDddXV1dXSxsb2NhbHM6
W10sdGVtcGxhdGVzOltlXX19KCkpfSksZGVmaW5lKCJ0b2RvbXZjL2NvbmZpZy9lbnZpcm9ubWVu
dCIsWyJlbWJlciJdLGZ1bmN0aW9uKGUpe3ZhciB0PSJ0b2RvbXZjIjt0cnl7dmFyIG49dCsiL2Nv
bmZpZy9lbnZpcm9ubWVudCIscj1lLmRlZmF1bHQuJCgnbWV0YVtuYW1lPSInK24rJyJdJykuYXR0
cigiY29udGVudCIpLGE9SlNPTi5wYXJzZSh1bmVzY2FwZShyKSk7cmV0dXJue2RlZmF1bHQ6YX19
Y2F0Y2goZSl7dGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgcmVhZCBjb25maWcgZnJvbSBtZXRh
IHRhZyB3aXRoIG5hbWUgIicrbisnIi4nKX19KSxydW5uaW5nVGVzdHN8fHJlcXVpcmUoInRvZG9t
dmMvYXBwIikuZGVmYXVsdC5jcmVhdGUoe25hbWU6InRvZG9tdmMiLHZlcnNpb246IjAuMC4wKzUw
ZDQ2YjRjIn0pOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2VtYmVyanMvc291cmNlL3RvZG9tdmMvZGlzdC9hc3NldHMvdmVuZG9yLTdiNWM5ODUy
MDkxMGFmYTU4ZDc0ZTA1ZWM4NmNkODczLmNzcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNl
L3RvZG9tdmMvZGlzdC9hc3NldHMvdmVuZG9yLTdiNWM5ODUyMDkxMGFmYTU4ZDc0ZTA1ZWM4NmNk
ODczLmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zZjVjZmY5OGNmZGM0OTljNjVlNTgyYzMzMzViZTNjNDVhODFh
ZDg3Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvdG9kb212
Yy9kaXN0L2Fzc2V0cy92ZW5kb3ItN2I1Yzk4NTIwOTEwYWZhNThkNzRlMDVlYzg2Y2Q4NzMuY3Nz
CkBAIC0wLDAgKzEgQEAKKyNpc3N1ZS1jb3VudCwuaGlkZGVuLGxhYmVsW2Zvcj10b2dnbGUtYWxs
XXtkaXNwbGF5Om5vbmV9I2Zvb3RlciwjaW5mbywjdG9kb2FwcCBoMSwjdG9nZ2xlLWFsbHt0ZXh0
LWFsaWduOmNlbnRlcn1ocnttYXJnaW46MjBweCAwO2JvcmRlcjowO2JvcmRlci10b3A6MXB4IGRh
c2hlZCAjYzVjNWM1O2JvcmRlci1ib3R0b206MXB4IGRhc2hlZCAjZjdmN2Y3fS5sZWFybiBhe2Zv
bnQtd2VpZ2h0OjQwMDt0ZXh0LWRlY29yYXRpb246bm9uZTtjb2xvcjojYjgzZjQ1fS5sZWFybiBh
OmhvdmVye3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7Y29sb3I6Izc4N2U3ZX0ubGVhcm4gaDMs
LmxlYXJuIGg0LC5sZWFybiBoNXttYXJnaW46MTBweCAwO2ZvbnQtd2VpZ2h0OjUwMDtsaW5lLWhl
aWdodDoxLjI7Y29sb3I6IzAwMH0ubGVhcm4gaDN7Zm9udC1zaXplOjI0cHh9LmxlYXJuIGg0e2Zv
bnQtc2l6ZToxOHB4fS5sZWFybiBoNXttYXJnaW4tYm90dG9tOjA7Zm9udC1zaXplOjE0cHh9Lmxl
YXJuIHVse3BhZGRpbmc6MDttYXJnaW46MCAwIDMwcHggMjVweH0ubGVhcm4gbGl7bGluZS1oZWln
aHQ6MjBweH0ubGVhcm4gcHtmb250LXNpemU6MTVweDtmb250LXdlaWdodDozMDA7bGluZS1oZWln
aHQ6MS4zO21hcmdpbi10b3A6MDttYXJnaW4tYm90dG9tOjB9LnF1b3RlIHA6YWZ0ZXIsLnF1b3Rl
IHA6YmVmb3Jle2ZvbnQtc2l6ZTo1MHB4O29wYWNpdHk6LjE1O3Bvc2l0aW9uOmFic29sdXRlfS5x
dW90ZXtib3JkZXI6bm9uZTttYXJnaW46MjBweCAwIDYwcHh9LnF1b3RlIHB7Zm9udC1zdHlsZTpp
dGFsaWN9LnF1b3RlIHA6YmVmb3Jle2NvbnRlbnQ6J+KAnCc7dG9wOi0yMHB4O2xlZnQ6M3B4fS5x
dW90ZSBwOmFmdGVye2NvbnRlbnQ6J+KAnSc7Ym90dG9tOi00MnB4O3JpZ2h0OjNweH0ucXVvdGUg
Zm9vdGVye3Bvc2l0aW9uOmFic29sdXRlO2JvdHRvbTotNDBweDtyaWdodDowfS5xdW90ZSBmb290
ZXIgaW1ne2JvcmRlci1yYWRpdXM6M3B4fS5xdW90ZSBmb290ZXIgYXttYXJnaW4tbGVmdDo1cHg7
dmVydGljYWwtYWxpZ246bWlkZGxlfS5zcGVlY2gtYnViYmxle3Bvc2l0aW9uOnJlbGF0aXZlO3Bh
ZGRpbmc6MTBweDtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KTtib3JkZXItcmFkaXVzOjVweH0u
c3BlZWNoLWJ1YmJsZTphZnRlcntjb250ZW50OicnO3Bvc2l0aW9uOmFic29sdXRlO3RvcDoxMDAl
O3JpZ2h0OjMwcHg7Ym9yZGVyOjEzcHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXRvcC1jb2xv
cjpyZ2JhKDAsMCwwLC4wNCl9LmxlYXJuLWJhcj4ubGVhcm57cG9zaXRpb246YWJzb2x1dGU7d2lk
dGg6MjcycHg7dG9wOjhweDtsZWZ0Oi0zMDBweDtwYWRkaW5nOjEwcHg7Ym9yZGVyLXJhZGl1czo1
cHg7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC42KTt0cmFuc2l0aW9uLXByb3Bl
cnR5OmxlZnQ7dHJhbnNpdGlvbi1kdXJhdGlvbjouNXN9I21haW4sI25ldy10b2RvLCN0b2RvLWxp
c3QgbGksI3RvZG9hcHAsLmVkaXR7cG9zaXRpb246cmVsYXRpdmV9QG1lZGlhIChtaW4td2lkdGg6
ODk5cHgpey5sZWFybi1iYXJ7d2lkdGg6YXV0bztwYWRkaW5nLWxlZnQ6MzAwcHh9LmxlYXJuLWJh
cj4ubGVhcm57bGVmdDo4cHh9fWJvZHksYnV0dG9uLGh0bWx7cGFkZGluZzowO21hcmdpbjowfWJ1
dHRvbntib3JkZXI6MDtiYWNrZ3JvdW5kOjAgMDtmb250LXNpemU6MTAwJTt2ZXJ0aWNhbC1hbGln
bjpiYXNlbGluZTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtd2VpZ2h0OmluaGVyaXQ7Y29sb3I6
aW5oZXJpdDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTthcHBlYXJhbmNlOm5vbmU7LXdlYmtpdC1m
b250LXNtb290aGluZzphbnRpYWxpYXNlZDstbW96LWZvbnQtc21vb3RoaW5nOmFudGlhbGlhc2Vk
O2ZvbnQtc21vb3RoaW5nOmFudGlhbGlhc2VkfWJvZHl7Zm9udDoxNHB4ICdIZWx2ZXRpY2EgTmV1
ZScsSGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWY7bGluZS1oZWlnaHQ6MS40ZW07YmFja2dyb3Vu
ZDojZjVmNWY1O2NvbG9yOiM0ZDRkNGQ7bWluLXdpZHRoOjIzMHB4O21heC13aWR0aDo1NTBweDtt
YXJnaW46MCBhdXRvOy13ZWJraXQtZm9udC1zbW9vdGhpbmc6YW50aWFsaWFzZWQ7LW1vei1mb250
LXNtb290aGluZzphbnRpYWxpYXNlZDtmb250LXNtb290aGluZzphbnRpYWxpYXNlZDtmb250LXdl
aWdodDozMDB9YnV0dG9uLGlucHV0W3R5cGU9Y2hlY2tib3hde291dGxpbmU6MH0jdG9kb2FwcHti
YWNrZ3JvdW5kOiNmZmY7bWFyZ2luOjEzMHB4IDAgNDBweDtib3gtc2hhZG93OjAgMnB4IDRweCAw
IHJnYmEoMCwwLDAsLjIpLDAgMjVweCA1MHB4IDAgcmdiYSgwLDAsMCwuMSl9I3RvZG9hcHAgaW5w
dXQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXJ7Zm9udC1zdHlsZTppdGFsaWM7Zm9udC13ZWln
aHQ6MzAwO2NvbG9yOiNlNmU2ZTZ9I3RvZG9hcHAgaW5wdXQ6Oi1tb3otcGxhY2Vob2xkZXJ7Zm9u
dC1zdHlsZTppdGFsaWM7Zm9udC13ZWlnaHQ6MzAwO2NvbG9yOiNlNmU2ZTZ9I3RvZG9hcHAgaW5w
dXQ6OmlucHV0LXBsYWNlaG9sZGVye2ZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtd2VpZ2h0OjMwMDtj
b2xvcjojZTZlNmU2fSN0b2RvYXBwIGgxe3Bvc2l0aW9uOmFic29sdXRlO3RvcDotMTU1cHg7d2lk
dGg6MTAwJTtmb250LXNpemU6MTAwcHg7Zm9udC13ZWlnaHQ6MTAwO2NvbG9yOnJnYmEoMTc1LDQ3
LDQ3LC4xNSk7LXdlYmtpdC10ZXh0LXJlbmRlcmluZzpvcHRpbWl6ZUxlZ2liaWxpdHk7LW1vei10
ZXh0LXJlbmRlcmluZzpvcHRpbWl6ZUxlZ2liaWxpdHk7dGV4dC1yZW5kZXJpbmc6b3B0aW1pemVM
ZWdpYmlsaXR5fSNuZXctdG9kbywuZWRpdHttYXJnaW46MDt3aWR0aDoxMDAlO2ZvbnQtc2l6ZToy
NHB4O2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC13ZWlnaHQ6aW5oZXJpdDtsaW5lLWhlaWdodDox
LjRlbTtvdXRsaW5lOjA7Y29sb3I6aW5oZXJpdDtwYWRkaW5nOjZweDtib3JkZXI6MXB4IHNvbGlk
ICM5OTk7Ym94LXNoYWRvdzppbnNldCAwIC0xcHggNXB4IDAgcmdiYSgwLDAsMCwuMik7Ym94LXNp
emluZzpib3JkZXItYm94Oy13ZWJraXQtZm9udC1zbW9vdGhpbmc6YW50aWFsaWFzZWQ7LW1vei1m
b250LXNtb290aGluZzphbnRpYWxpYXNlZDtmb250LXNtb290aGluZzphbnRpYWxpYXNlZH0jbmV3
LXRvZG97cGFkZGluZzoxNnB4IDE2cHggMTZweCA2MHB4O2JvcmRlcjpub25lO2JhY2tncm91bmQ6
cmdiYSgwLDAsMCwuMDAzKTtib3gtc2hhZG93Omluc2V0IDAgLTJweCAxcHggcmdiYSgwLDAsMCwu
MDMpfSNtYWlue3otaW5kZXg6Mjtib3JkZXItdG9wOjFweCBzb2xpZCAjZTZlNmU2fSN0b2dnbGUt
YWxse3Bvc2l0aW9uOmFic29sdXRlO3RvcDotNTVweDtsZWZ0Oi0xMnB4O3dpZHRoOjYwcHg7aGVp
Z2h0OjM0cHg7Ym9yZGVyOm5vbmV9I3RvZ2dsZS1hbGw6YmVmb3Jle2NvbnRlbnQ6J+Kdryc7Zm9u
dC1zaXplOjIycHg7Y29sb3I6I2U2ZTZlNjtwYWRkaW5nOjEwcHggMjdweH0jdG9nZ2xlLWFsbDpj
aGVja2VkOmJlZm9yZXtjb2xvcjojNzM3MzczfSN0b2RvLWxpc3R7bWFyZ2luOjA7cGFkZGluZzow
O2xpc3Qtc3R5bGU6bm9uZX0jdG9kby1saXN0IGxpe2ZvbnQtc2l6ZToyNHB4O2JvcmRlci1ib3R0
b206MXB4IHNvbGlkICNlZGVkZWR9I3RvZG8tbGlzdCBsaTpsYXN0LWNoaWxke2JvcmRlci1ib3R0
b206bm9uZX0jdG9kby1saXN0IGxpLmVkaXRpbmd7Ym9yZGVyLWJvdHRvbTpub25lO3BhZGRpbmc6
MH0jdG9kby1saXN0IGxpLmVkaXRpbmcgLmVkaXR7ZGlzcGxheTpibG9jazt3aWR0aDo1MDZweDtw
YWRkaW5nOjEzcHggMTdweCAxMnB4O21hcmdpbjowIDAgMCA0M3B4fSN0b2RvLWxpc3QgbGkuZWRp
dGluZyAudmlld3tkaXNwbGF5Om5vbmV9I3RvZG8tbGlzdCBsaSAudG9nZ2xle3RleHQtYWxpZ246
Y2VudGVyO3dpZHRoOjQwcHg7aGVpZ2h0OmF1dG87cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90
dG9tOjA7bWFyZ2luOmF1dG8gMDtib3JkZXI6bm9uZTstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTth
cHBlYXJhbmNlOm5vbmV9I3RvZG8tbGlzdCBsaSAudG9nZ2xlOmFmdGVye2NvbnRlbnQ6dXJsKCdk
YXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgd2lkdGg9IjQwIiBoZWlnaHQ9IjQwIiB2aWV3Qm94PSItMTAgLTE4IDEwMCAxMzUiPjxj
aXJjbGUgY3g9IjUwIiBjeT0iNTAiIHI9IjUwIiBmaWxsPSJub25lIiBzdHJva2U9IiNlZGVkZWQi
IHN0cm9rZS13aWR0aD0iMyIvPjwvc3ZnPicpfSN0b2RvLWxpc3QgbGkgLnRvZ2dsZTpjaGVja2Vk
OmFmdGVye2NvbnRlbnQ6dXJsKCdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjQwIiBoZWlnaHQ9IjQwIiB2aWV3Qm94
PSItMTAgLTE4IDEwMCAxMzUiPjxjaXJjbGUgY3g9IjUwIiBjeT0iNTAiIHI9IjUwIiBmaWxsPSJu
b25lIiBzdHJva2U9IiNiZGRhZDUiIHN0cm9rZS13aWR0aD0iMyIvPjxwYXRoIGZpbGw9IiM1ZGMy
YWYiIGQ9Ik03MiAyNUw0MiA3MSAyNyA1NmwtNCA0IDIwIDIwIDM0LTUyeiIvPjwvc3ZnPicpfSN0
b2RvLWxpc3QgbGkgbGFiZWx7d2hpdGUtc3BhY2U6cHJlO3dvcmQtYnJlYWs6YnJlYWstd29yZDtw
YWRkaW5nOjE1cHggNjBweCAxNXB4IDE1cHg7bWFyZ2luLWxlZnQ6NDVweDtkaXNwbGF5OmJsb2Nr
O2xpbmUtaGVpZ2h0OjEuMjt0cmFuc2l0aW9uOmNvbG9yIC40c30jdG9kby1saXN0IGxpLmNvbXBs
ZXRlZCBsYWJlbHtjb2xvcjojZDlkOWQ5O3RleHQtZGVjb3JhdGlvbjpsaW5lLXRocm91Z2h9I3Rv
ZG8tbGlzdCBsaSAuZGVzdHJveXtkaXNwbGF5Om5vbmU7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7
cmlnaHQ6MTBweDtib3R0b206MDt3aWR0aDo0MHB4O2hlaWdodDo0MHB4O21hcmdpbjphdXRvIDAg
MTFweDtmb250LXNpemU6MzBweDtjb2xvcjojY2M5YTlhO3RyYW5zaXRpb246Y29sb3IgLjJzIGVh
c2Utb3V0fSNmaWx0ZXJzLCNmb290ZXI6YmVmb3Jle3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjA7
bGVmdDowfSN0b2RvLWxpc3QgbGkgLmRlc3Ryb3k6aG92ZXJ7Y29sb3I6I2FmNWI1ZX0jZmlsdGVy
cyBsaSBhLCNpbmZvIGF7Y29sb3I6aW5oZXJpdDt0ZXh0LWRlY29yYXRpb246bm9uZX0jdG9kby1s
aXN0IGxpIC5kZXN0cm95OmFmdGVye2NvbnRlbnQ6J8OXJ30jdG9kby1saXN0IGxpOmhvdmVyIC5k
ZXN0cm95e2Rpc3BsYXk6YmxvY2t9I3RvZG8tbGlzdCBsaSAuZWRpdHtkaXNwbGF5Om5vbmV9I3Rv
ZG8tbGlzdCBsaS5lZGl0aW5nOmxhc3QtY2hpbGR7bWFyZ2luLWJvdHRvbTotMXB4fSNmb290ZXJ7
Y29sb3I6Izc3NztwYWRkaW5nOjEwcHggMTVweDtoZWlnaHQ6MjBweDtib3JkZXItdG9wOjFweCBz
b2xpZCAjZTZlNmU2fSNmb290ZXI6YmVmb3Jle2NvbnRlbnQ6Jyc7Ym90dG9tOjA7aGVpZ2h0OjUw
cHg7b3ZlcmZsb3c6aGlkZGVuO2JveC1zaGFkb3c6MCAxcHggMXB4IHJnYmEoMCwwLDAsLjIpLDAg
OHB4IDAgLTNweCAjZjZmNmY2LDAgOXB4IDFweCAtM3B4IHJnYmEoMCwwLDAsLjIpLDAgMTZweCAw
IC02cHggI2Y2ZjZmNiwwIDE3cHggMnB4IC02cHggcmdiYSgwLDAsMCwuMil9I3RvZG8tY291bnR7
ZmxvYXQ6bGVmdDt0ZXh0LWFsaWduOmxlZnR9I3RvZG8tY291bnQgc3Ryb25ne2ZvbnQtd2VpZ2h0
OjMwMH0jZmlsdGVyc3ttYXJnaW46MDtwYWRkaW5nOjA7bGlzdC1zdHlsZTpub25lfSNmaWx0ZXJz
IGxpe2Rpc3BsYXk6aW5saW5lfSNmaWx0ZXJzIGxpIGF7bWFyZ2luOjNweDtwYWRkaW5nOjNweCA3
cHg7Ym9yZGVyOjFweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmFkaXVzOjNweH0jZmlsdGVy
cyBsaSBhLnNlbGVjdGVkLCNmaWx0ZXJzIGxpIGE6aG92ZXJ7Ym9yZGVyLWNvbG9yOnJnYmEoMTc1
LDQ3LDQ3LC4xKX0jZmlsdGVycyBsaSBhLnNlbGVjdGVke2JvcmRlci1jb2xvcjpyZ2JhKDE3NSw0
Nyw0NywuMil9I2NsZWFyLWNvbXBsZXRlZCxodG1sICNjbGVhci1jb21wbGV0ZWQ6YWN0aXZle2Zs
b2F0OnJpZ2h0O2xpbmUtaGVpZ2h0OjIwcHg7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Y3Vyc29yOnBv
aW50ZXI7cG9zaXRpb246cmVsYXRpdmV9I2NsZWFyLWNvbXBsZXRlZDpob3ZlciwjaW5mbyBhOmhv
dmVye3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9I2luZm97bWFyZ2luOjY1cHggYXV0byAwO2Nv
bG9yOiNiZmJmYmY7Zm9udC1zaXplOjEwcHg7dGV4dC1zaGFkb3c6MCAxcHggMCByZ2JhKDI1NSwy
NTUsMjU1LC41KX0jaW5mbyBwe2xpbmUtaGVpZ2h0OjF9I2luZm8gYXtmb250LXdlaWdodDo0MDB9
QG1lZGlhIHNjcmVlbiBhbmQgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzowKXsjdG9k
by1saXN0IGxpIC50b2dnbGUsI3RvZ2dsZS1hbGx7YmFja2dyb3VuZDowIDB9I3RvZG8tbGlzdCBs
aSAudG9nZ2xle2hlaWdodDo0MHB4fSN0b2dnbGUtYWxsey13ZWJraXQtdHJhbnNmb3JtOnJvdGF0
ZSg5MGRlZyk7dHJhbnNmb3JtOnJvdGF0ZSg5MGRlZyk7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7
YXBwZWFyYW5jZTpub25lfX1AbWVkaWEgKG1heC13aWR0aDo0MzBweCl7I2Zvb3RlcntoZWlnaHQ6
NTBweH0jZmlsdGVyc3tib3R0b206MTBweH19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvdG9kb212Yy9kaXN0L2Fzc2V0
cy92ZW5kb3ItOTgzNmFjOGIwMTZmY2VhNmY4OWNjZjkyOTE3NzcyZjYuanMgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9lbWJlcmpzL3NvdXJjZS90b2RvbXZjL2Rpc3QvYXNzZXRzL3ZlbmRvci05ODM2YWM4YjAxNmZj
ZWE2Zjg5Y2NmOTI5MTc3NzJmNi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNDJiYTIwYjBkOTE4NTBhMzAyMzQ4
MTY0ZWE5YTllM2UzODQxZTgzCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJq
cy9zb3VyY2UvdG9kb212Yy9kaXN0L2Fzc2V0cy92ZW5kb3ItOTgzNmFjOGIwMTZmY2VhNmY4OWNj
ZjkyOTE3NzcyZjYuanMKQEAgLTAsMCArMSwxOCBAQAorZnVuY3Rpb24gY3JlYXRlRGVwcmVjYXRl
ZE1vZHVsZShlKXtkZWZpbmUoZSxbImV4cG9ydHMiLCJlbWJlci1yZXNvbHZlci9yZXNvbHZlciIs
ImVtYmVyIl0sZnVuY3Rpb24odCxyLG4pe24uZGVmYXVsdC5kZXByZWNhdGUoIlVzYWdlIG9mIGAi
K2UrImAgbW9kdWxlIGlzIGRlcHJlY2F0ZWQsIHBsZWFzZSB1cGRhdGUgdG8gYGVtYmVyLXJlc29s
dmVyYC4iLCExLHtpZDoiZW1iZXItcmVzb2x2ZXIubGVnYWN5LXNoaW1zIix1bnRpbDoiMy4wLjAi
fSksdC5kZWZhdWx0PXIuZGVmYXVsdH0pfXdpbmRvdy5FbWJlckVOVj17RkVBVFVSRVM6e319O3Zh
ciBydW5uaW5nVGVzdHM9ITEsbG9hZGVyLGRlZmluZSxyZXF1aXJlTW9kdWxlLHJlcXVpcmUscmVx
dWlyZWpzOyFmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gdCgpe2w9e2RlZmluZTow
LHJlcXVpcmU6MCxyZWlmeTowLGZpbmREZXBzOjAsbW9kdWxlczowLGV4cG9ydHM6MCxyZXNvbHZl
OjAscmVzb2x2ZVJlbGF0aXZlOjAsZmluZE1vZHVsZTowLHBlbmRpbmdRdWV1ZUxlbmd0aDowfSxy
ZXF1aXJlanMuX3N0YXRzPWx9ZnVuY3Rpb24gcihlKXt0aHJvdyBuZXcgRXJyb3IoImFuIHVuc3Vw
cG9ydGVkIG1vZHVsZSB3YXMgZGVmaW5lZCwgZXhwZWN0ZWQgYGRlZmluZShuYW1lLCBkZXBzLCBt
b2R1bGUpYCBpbnN0ZWFkIGdvdDogYCIrZSsiYCBhcmd1bWVudHMgdG8gZGVmaW5lYCIpfWZ1bmN0
aW9uIG4oZSx0LHIsbil7bC5tb2R1bGVzKyssdGhpcy5pZD1oKyssdGhpcy5uYW1lPWUsdGhpcy5k
ZXBzPSF0Lmxlbmd0aCYmci5sZW5ndGg/bTp0LHRoaXMubW9kdWxlPXtleHBvcnRzOnt9fSx0aGlz
LmNhbGxiYWNrPXIsdGhpcy5maW5hbGl6ZWQ9ITEsdGhpcy5oYXNFeHBvcnRzQXNEZXA9ITEsdGhp
cy5pc0FsaWFzPW4sdGhpcy5yZWlmaWVkPW5ldyBBcnJheSh0Lmxlbmd0aCksdGhpcy5fZm91bmRE
ZXBzPSExLHRoaXMuaXNQZW5kaW5nPSExfWZ1bmN0aW9uIGkoZSl7dGhpcy5uYW1lPWV9ZnVuY3Rp
b24gbyhlLHQpe3Rocm93IG5ldyBFcnJvcigiQ291bGQgbm90IGZpbmQgbW9kdWxlIGAiK2UrImAg
aW1wb3J0ZWQgZnJvbSBgIit0KyJgIil9ZnVuY3Rpb24gYShlLHQscil7bC5maW5kTW9kdWxlKys7
Zm9yKHZhciBuPWRbZV18fGRbZSsiL2luZGV4Il07biYmbi5pc0FsaWFzOyluPWRbbi5uYW1lXTty
ZXR1cm4gbnx8byhlLHQpLCFyfHxuLmZpbmFsaXplZHx8bi5pc1BlbmRpbmd8fChuLmZpbmREZXBz
KHIpLHIucHVzaChuKSxsLnBlbmRpbmdRdWV1ZUxlbmd0aCsrKSxufWZ1bmN0aW9uIHMoZSx0KXtp
ZihsLnJlc29sdmUrKywiLiIhPT1lLmNoYXJBdCgwKSlyZXR1cm4gZTtsLnJlc29sdmVSZWxhdGl2
ZSsrO2Zvcih2YXIgcj1lLnNwbGl0KCIvIiksbj10LnNwbGl0KCIvIiksaT1uLnNsaWNlKDAsLTEp
LG89MCxhPXIubGVuZ3RoO288YTtvKyspe3ZhciBzPXJbb107aWYoIi4uIj09PXMpe2lmKDA9PT1p
Lmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBhY2Nlc3MgcGFyZW50IG1vZHVsZSBvZiBy
b290Iik7aS5wb3AoKX1lbHNle2lmKCIuIj09PXMpY29udGludWU7aS5wdXNoKHMpfX1yZXR1cm4g
aS5qb2luKCIvIil9ZnVuY3Rpb24gdShlKXtyZXR1cm4hKCFkW2VdJiYhZFtlKyIvaW5kZXgiXSl9
dmFyIGwsYz17bG9hZGVyOmxvYWRlcixkZWZpbmU6ZGVmaW5lLHJlcXVpcmVNb2R1bGU6cmVxdWly
ZU1vZHVsZSxyZXF1aXJlOnJlcXVpcmUscmVxdWlyZWpzOnJlcXVpcmVqc307cmVxdWlyZWpzPXJl
cXVpcmU9cmVxdWlyZU1vZHVsZT1mdW5jdGlvbihlKXtsLnJlcXVpcmUrKztmb3IodmFyIHQ9W10s
cj1hKGUsIihyZXF1aXJlKSIsdCksbj10Lmxlbmd0aC0xO24+PTA7bi0tKXRbbl0uZXhwb3J0cygp
O3JldHVybiByLm1vZHVsZS5leHBvcnRzfSx0KCksbG9hZGVyPXtub0NvbmZsaWN0OmZ1bmN0aW9u
KHQpe3ZhciByLG47Zm9yKHIgaW4gdCl0Lmhhc093blByb3BlcnR5KHIpJiZjLmhhc093blByb3Bl
cnR5KHIpJiYobj10W3JdLGVbbl09ZVtyXSxlW3JdPWNbcl0pfX07dmFyIGY7Zj1BcnJheS5pc0Fy
cmF5P0FycmF5LmlzQXJyYXk6ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgQXJyYXldIj09PU9i
amVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKX07dmFyIGQ9e30scD17fSxoPTAsbT1bInJl
cXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIl07bi5wcm90b3R5cGUubWFrZURlZmF1bHRFeHBvcnQ9
ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm1vZHVsZS5leHBvcnRzO251bGw9PT1lfHwib2JqZWN0IiE9
dHlwZW9mIGUmJiJmdW5jdGlvbiIhPXR5cGVvZiBlfHx2b2lkIDAhPT1lLmRlZmF1bHR8fChlLmRl
ZmF1bHQ9ZSl9LG4ucHJvdG90eXBlLmV4cG9ydHM9ZnVuY3Rpb24oKXtpZih0aGlzLmZpbmFsaXpl
ZClyZXR1cm4gdGhpcy5tb2R1bGUuZXhwb3J0cztsLmV4cG9ydHMrKyx0aGlzLmZpbmFsaXplZD0h
MCx0aGlzLmlzUGVuZGluZz0hMSxsb2FkZXIud3JhcE1vZHVsZXMmJih0aGlzLmNhbGxiYWNrPWxv
YWRlci53cmFwTW9kdWxlcyh0aGlzLm5hbWUsdGhpcy5jYWxsYmFjaykpLHRoaXMucmVpZnkoKTt2
YXIgZT10aGlzLmNhbGxiYWNrLmFwcGx5KHRoaXMsdGhpcy5yZWlmaWVkKTtyZXR1cm4gdGhpcy5o
YXNFeHBvcnRzQXNEZXAmJnZvaWQgMD09PWV8fCh0aGlzLm1vZHVsZS5leHBvcnRzPWUpLHRoaXMu
bWFrZURlZmF1bHRFeHBvcnQoKSx0aGlzLm1vZHVsZS5leHBvcnRzfSxuLnByb3RvdHlwZS51bnNl
ZT1mdW5jdGlvbigpe3RoaXMuZmluYWxpemVkPSExLHRoaXMuX2ZvdW5kRGVwcz0hMSx0aGlzLmlz
UGVuZGluZz0hMSx0aGlzLm1vZHVsZT17ZXhwb3J0czp7fX19LG4ucHJvdG90eXBlLnJlaWZ5PWZ1
bmN0aW9uKCl7bC5yZWlmeSsrO2Zvcih2YXIgZT10aGlzLnJlaWZpZWQsdD0wO3Q8ZS5sZW5ndGg7
dCsrKXt2YXIgcj1lW3RdO2VbdF09ci5leHBvcnRzP3IuZXhwb3J0czpyLm1vZHVsZS5leHBvcnRz
KCl9fSxuLnByb3RvdHlwZS5maW5kRGVwcz1mdW5jdGlvbihlKXtpZighdGhpcy5fZm91bmREZXBz
KXtsLmZpbmREZXBzKyssdGhpcy5fZm91bmREZXBzPSEwLHRoaXMuaXNQZW5kaW5nPSEwO2Zvcih2
YXIgdD10aGlzLmRlcHMscj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbj10W3JdLGk9dGhpcy5yZWlm
aWVkW3JdPXtleHBvcnRzOnZvaWQgMCxtb2R1bGU6dm9pZCAwfTsiZXhwb3J0cyI9PT1uPyh0aGlz
Lmhhc0V4cG9ydHNBc0RlcD0hMCxpLmV4cG9ydHM9dGhpcy5tb2R1bGUuZXhwb3J0cyk6InJlcXVp
cmUiPT09bj9pLmV4cG9ydHM9dGhpcy5tYWtlUmVxdWlyZSgpOiJtb2R1bGUiPT09bj9pLmV4cG9y
dHM9dGhpcy5tb2R1bGU6aS5tb2R1bGU9YShzKG4sdGhpcy5uYW1lKSx0aGlzLm5hbWUsZSl9fX0s
bi5wcm90b3R5cGUubWFrZVJlcXVpcmU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm5hbWUsdD1mdW5j
dGlvbih0KXtyZXR1cm4gcmVxdWlyZShzKHQsZSkpfTtyZXR1cm4gdC5kZWZhdWx0PXQsdC5oYXM9
ZnVuY3Rpb24odCl7cmV0dXJuIHUocyh0LGUpKX0sdH0sZGVmaW5lPWZ1bmN0aW9uKGUsdCxvKXts
LmRlZmluZSsrLGFyZ3VtZW50cy5sZW5ndGg8MiYmcihhcmd1bWVudHMubGVuZ3RoKSxmKHQpfHwo
bz10LHQ9W10pLG8gaW5zdGFuY2VvZiBpP2RbZV09bmV3IG4oby5uYW1lLHQsbywhMCk6ZFtlXT1u
ZXcgbihlLHQsbywhMSl9LGRlZmluZS5wZXRhbD17fSxkZWZpbmUuYWxpYXM9ZnVuY3Rpb24oZSl7
cmV0dXJuIG5ldyBpKGUpfSxyZXF1aXJlanMuZW50cmllcz1yZXF1aXJlanMuX2Vha19zZWVuPWQs
cmVxdWlyZWpzLmhhcz11LHJlcXVpcmVqcy51bnNlZT1mdW5jdGlvbihlKXthKGUsIih1bnNlZSki
LCExKS51bnNlZSgpfSxyZXF1aXJlanMuY2xlYXI9ZnVuY3Rpb24oKXt0KCkscmVxdWlyZWpzLmVu
dHJpZXM9cmVxdWlyZWpzLl9lYWtfc2Vlbj1kPXt9LHA9e319LGRlZmluZSgiZm9vIixmdW5jdGlv
bigpe30pLGRlZmluZSgiZm9vL2JhciIsW10sZnVuY3Rpb24oKXt9KSxkZWZpbmUoImZvby9hc2Rm
IixbIm1vZHVsZSIsImV4cG9ydHMiLCJyZXF1aXJlIl0sZnVuY3Rpb24oZSx0LHIpe3IuaGFzKCJm
b28vYmFyIikmJnIoImZvby9iYXIiKX0pLGRlZmluZSgiZm9vL2JheiIsW10sZGVmaW5lLmFsaWFz
KCJmb28iKSksZGVmaW5lKCJmb28vcXV6IixkZWZpbmUuYWxpYXMoImZvbyIpKSxkZWZpbmUoImZv
by9iYXIiLFsiZm9vIiwiLi9xdXoiLCIuL2JheiIsIi4vYXNkZiIsIi4vYmFyIiwiLi4vZm9vIl0s
ZnVuY3Rpb24oKXt9KSxkZWZpbmUoImZvby9tYWluIixbImZvby9iYXIiXSxmdW5jdGlvbigpe30p
LHJlcXVpcmUoImZvby9tYWluIikscmVxdWlyZS51bnNlZSgiZm9vL2JhciIpLHJlcXVpcmVqcy5j
bGVhcigpLCJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmIm9iamVjdCI9PXR5cGVvZiBtb2R1bGUm
Jm1vZHVsZS5leHBvcnRzJiYobW9kdWxlLmV4cG9ydHM9e3JlcXVpcmU6cmVxdWlyZSxkZWZpbmU6
ZGVmaW5lfSl9KHRoaXMpLGZ1bmN0aW9uKGUsdCl7Im9iamVjdCI9PXR5cGVvZiBtb2R1bGUmJiJv
YmplY3QiPT10eXBlb2YgbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9ZS5kb2N1bWVudD90
KGUsITApOmZ1bmN0aW9uKGUpe2lmKCFlLmRvY3VtZW50KXRocm93IG5ldyBFcnJvcigialF1ZXJ5
IHJlcXVpcmVzIGEgd2luZG93IHdpdGggYSBkb2N1bWVudCIpO3JldHVybiB0KGUpfTp0KGUpfSgi
dW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6dGhpcyxmdW5jdGlvbihlLHQpe2Z1bmN0
aW9uIHIoZSl7dmFyIHQ9ISFlJiYibGVuZ3RoImluIGUmJmUubGVuZ3RoLHI9b2UudHlwZShlKTty
ZXR1cm4iZnVuY3Rpb24iIT09ciYmIW9lLmlzV2luZG93KGUpJiYoImFycmF5Ij09PXJ8fDA9PT10
fHwibnVtYmVyIj09dHlwZW9mIHQmJnQ+MCYmdC0xIGluIGUpfWZ1bmN0aW9uIG4oZSx0LHIpe2lm
KG9lLmlzRnVuY3Rpb24odCkpcmV0dXJuIG9lLmdyZXAoZSxmdW5jdGlvbihlLG4pe3JldHVybiEh
dC5jYWxsKGUsbixlKSE9PXJ9KTtpZih0Lm5vZGVUeXBlKXJldHVybiBvZS5ncmVwKGUsZnVuY3Rp
b24oZSl7cmV0dXJuIGU9PT10IT09cn0pO2lmKCJzdHJpbmciPT10eXBlb2YgdCl7aWYobWUudGVz
dCh0KSlyZXR1cm4gb2UuZmlsdGVyKHQsZSxyKTt0PW9lLmZpbHRlcih0LGUpfXJldHVybiBvZS5n
cmVwKGUsZnVuY3Rpb24oZSl7cmV0dXJuIFouY2FsbCh0LGUpPi0xIT09cn0pfWZ1bmN0aW9uIGko
ZSx0KXtmb3IoOyhlPWVbdF0pJiYxIT09ZS5ub2RlVHlwZTspO3JldHVybiBlfWZ1bmN0aW9uIG8o
ZSl7dmFyIHQ9e307cmV0dXJuIG9lLmVhY2goZS5tYXRjaCh3ZSl8fFtdLGZ1bmN0aW9uKGUscil7
dFtyXT0hMH0pLHR9ZnVuY3Rpb24gYSgpe0cucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVu
dExvYWRlZCIsYSksZS5yZW1vdmVFdmVudExpc3RlbmVyKCJsb2FkIixhKSxvZS5yZWFkeSgpfWZ1
bmN0aW9uIHMoKXt0aGlzLmV4cGFuZG89b2UuZXhwYW5kbytzLnVpZCsrfWZ1bmN0aW9uIHUoZSx0
LHIpe3ZhciBuO2lmKHZvaWQgMD09PXImJjE9PT1lLm5vZGVUeXBlKWlmKG49ImRhdGEtIit0LnJl
cGxhY2UoTmUsIi0kJiIpLnRvTG93ZXJDYXNlKCkscj1lLmdldEF0dHJpYnV0ZShuKSwic3RyaW5n
Ij09dHlwZW9mIHIpe3RyeXtyPSJ0cnVlIj09PXJ8fCJmYWxzZSIhPT1yJiYoIm51bGwiPT09cj9u
dWxsOityKyIiPT09cj8rcjpUZS50ZXN0KHIpP29lLnBhcnNlSlNPTihyKTpyKX1jYXRjaChlKXt9
T2Uuc2V0KGUsdCxyKX1lbHNlIHI9dm9pZCAwO3JldHVybiByfWZ1bmN0aW9uIGwoZSx0LHIsbil7
dmFyIGksbz0xLGE9MjAscz1uP2Z1bmN0aW9uKCl7cmV0dXJuIG4uY3VyKCl9OmZ1bmN0aW9uKCl7
cmV0dXJuIG9lLmNzcyhlLHQsIiIpfSx1PXMoKSxsPXImJnJbM118fChvZS5jc3NOdW1iZXJbdF0/
IiI6InB4IiksYz0ob2UuY3NzTnVtYmVyW3RdfHwicHgiIT09bCYmK3UpJiZBZS5leGVjKG9lLmNz
cyhlLHQpKTtpZihjJiZjWzNdIT09bCl7bD1sfHxjWzNdLHI9cnx8W10sYz0rdXx8MTtkbyBvPW98
fCIuNSIsYy89byxvZS5zdHlsZShlLHQsYytsKTt3aGlsZShvIT09KG89cygpL3UpJiYxIT09byYm
LS1hKX1yZXR1cm4gciYmKGM9K2N8fCt1fHwwLGk9clsxXT9jKyhyWzFdKzEpKnJbMl06K3JbMl0s
biYmKG4udW5pdD1sLG4uc3RhcnQ9YyxuLmVuZD1pKSksaX1mdW5jdGlvbiBjKGUsdCl7dmFyIHI9
InVuZGVmaW5lZCIhPXR5cGVvZiBlLmdldEVsZW1lbnRzQnlUYWdOYW1lP2UuZ2V0RWxlbWVudHNC
eVRhZ05hbWUodHx8IioiKToidW5kZWZpbmVkIiE9dHlwZW9mIGUucXVlcnlTZWxlY3RvckFsbD9l
LnF1ZXJ5U2VsZWN0b3JBbGwodHx8IioiKTpbXTtyZXR1cm4gdm9pZCAwPT09dHx8dCYmb2Uubm9k
ZU5hbWUoZSx0KT9vZS5tZXJnZShbZV0scik6cn1mdW5jdGlvbiBmKGUsdCl7Zm9yKHZhciByPTAs
bj1lLmxlbmd0aDtyPG47cisrKUVlLnNldChlW3JdLCJnbG9iYWxFdmFsIiwhdHx8RWUuZ2V0KHRb
cl0sImdsb2JhbEV2YWwiKSl9ZnVuY3Rpb24gZChlLHQscixuLGkpe2Zvcih2YXIgbyxhLHMsdSxs
LGQscD10LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxoPVtdLG09MCx2PWUubGVuZ3RoO208djtt
KyspaWYobz1lW21dLG98fDA9PT1vKWlmKCJvYmplY3QiPT09b2UudHlwZShvKSlvZS5tZXJnZSho
LG8ubm9kZVR5cGU/W29dOm8pO2Vsc2UgaWYoSWUudGVzdChvKSl7Zm9yKGE9YXx8cC5hcHBlbmRD
aGlsZCh0LmNyZWF0ZUVsZW1lbnQoImRpdiIpKSxzPShMZS5leGVjKG8pfHxbIiIsIiJdKVsxXS50
b0xvd2VyQ2FzZSgpLHU9TWVbc118fE1lLl9kZWZhdWx0LGEuaW5uZXJIVE1MPXVbMV0rb2UuaHRt
bFByZWZpbHRlcihvKSt1WzJdLGQ9dVswXTtkLS07KWE9YS5sYXN0Q2hpbGQ7b2UubWVyZ2UoaCxh
LmNoaWxkTm9kZXMpLGE9cC5maXJzdENoaWxkLGEudGV4dENvbnRlbnQ9IiJ9ZWxzZSBoLnB1c2go
dC5jcmVhdGVUZXh0Tm9kZShvKSk7Zm9yKHAudGV4dENvbnRlbnQ9IiIsbT0wO289aFttKytdOylp
ZihuJiZvZS5pbkFycmF5KG8sbik+LTEpaSYmaS5wdXNoKG8pO2Vsc2UgaWYobD1vZS5jb250YWlu
cyhvLm93bmVyRG9jdW1lbnQsbyksYT1jKHAuYXBwZW5kQ2hpbGQobyksInNjcmlwdCIpLGwmJmYo
YSkscilmb3IoZD0wO289YVtkKytdOylEZS50ZXN0KG8udHlwZXx8IiIpJiZyLnB1c2gobyk7cmV0
dXJuIHB9ZnVuY3Rpb24gcCgpe3JldHVybiEwfWZ1bmN0aW9uIGgoKXtyZXR1cm4hMX1mdW5jdGlv
biBtKCl7dHJ5e3JldHVybiBHLmFjdGl2ZUVsZW1lbnR9Y2F0Y2goZSl7fX1mdW5jdGlvbiB2KGUs
dCxyLG4saSxvKXt2YXIgYSxzO2lmKCJvYmplY3QiPT10eXBlb2YgdCl7InN0cmluZyIhPXR5cGVv
ZiByJiYobj1ufHxyLHI9dm9pZCAwKTtmb3IocyBpbiB0KXYoZSxzLHIsbix0W3NdLG8pO3JldHVy
biBlfWlmKG51bGw9PW4mJm51bGw9PWk/KGk9cixuPXI9dm9pZCAwKTpudWxsPT1pJiYoInN0cmlu
ZyI9PXR5cGVvZiByPyhpPW4sbj12b2lkIDApOihpPW4sbj1yLHI9dm9pZCAwKSksaT09PSExKWk9
aDtlbHNlIGlmKCFpKXJldHVybiBlO3JldHVybiAxPT09byYmKGE9aSxpPWZ1bmN0aW9uKGUpe3Jl
dHVybiBvZSgpLm9mZihlKSxhLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0saS5ndWlkPWEuZ3VpZHx8
KGEuZ3VpZD1vZS5ndWlkKyspKSxlLmVhY2goZnVuY3Rpb24oKXtvZS5ldmVudC5hZGQodGhpcyx0
LGksbixyKX0pfWZ1bmN0aW9uIGIoZSx0KXtyZXR1cm4gb2Uubm9kZU5hbWUoZSwidGFibGUiKSYm
b2Uubm9kZU5hbWUoMTEhPT10Lm5vZGVUeXBlP3Q6dC5maXJzdENoaWxkLCJ0ciIpP2UuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoInRib2R5IilbMF18fGUuYXBwZW5kQ2hpbGQoZS5vd25lckRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoInRib2R5IikpOmV9ZnVuY3Rpb24gZyhlKXtyZXR1cm4gZS50eXBlPShu
dWxsIT09ZS5nZXRBdHRyaWJ1dGUoInR5cGUiKSkrIi8iK2UudHlwZSxlfWZ1bmN0aW9uIHkoZSl7
dmFyIHQ9VWUuZXhlYyhlLnR5cGUpO3JldHVybiB0P2UudHlwZT10WzFdOmUucmVtb3ZlQXR0cmli
dXRlKCJ0eXBlIiksZX1mdW5jdGlvbiBfKGUsdCl7dmFyIHIsbixpLG8sYSxzLHUsbDtpZigxPT09
dC5ub2RlVHlwZSl7aWYoRWUuaGFzRGF0YShlKSYmKG89RWUuYWNjZXNzKGUpLGE9RWUuc2V0KHQs
byksbD1vLmV2ZW50cykpe2RlbGV0ZSBhLmhhbmRsZSxhLmV2ZW50cz17fTtmb3IoaSBpbiBsKWZv
cihyPTAsbj1sW2ldLmxlbmd0aDtyPG47cisrKW9lLmV2ZW50LmFkZCh0LGksbFtpXVtyXSl9T2Uu
aGFzRGF0YShlKSYmKHM9T2UuYWNjZXNzKGUpLHU9b2UuZXh0ZW5kKHt9LHMpLE9lLnNldCh0LHUp
KX19ZnVuY3Rpb24gdyhlLHQpe3ZhciByPXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTsiaW5wdXQi
PT09ciYmUmUudGVzdChlLnR5cGUpP3QuY2hlY2tlZD1lLmNoZWNrZWQ6ImlucHV0IiE9PXImJiJ0
ZXh0YXJlYSIhPT1yfHwodC5kZWZhdWx0VmFsdWU9ZS5kZWZhdWx0VmFsdWUpfWZ1bmN0aW9uIHgo
ZSx0LHIsbil7dD1YLmFwcGx5KFtdLHQpO3ZhciBpLG8sYSxzLHUsbCxmPTAscD1lLmxlbmd0aCxo
PXAtMSxtPXRbMF0sdj1vZS5pc0Z1bmN0aW9uKG0pO2lmKHZ8fHA+MSYmInN0cmluZyI9PXR5cGVv
ZiBtJiYhbmUuY2hlY2tDbG9uZSYmQmUudGVzdChtKSlyZXR1cm4gZS5lYWNoKGZ1bmN0aW9uKGkp
e3ZhciBvPWUuZXEoaSk7diYmKHRbMF09bS5jYWxsKHRoaXMsaSxvLmh0bWwoKSkpLHgobyx0LHIs
bil9KTtpZihwJiYoaT1kKHQsZVswXS5vd25lckRvY3VtZW50LCExLGUsbiksbz1pLmZpcnN0Q2hp
bGQsMT09PWkuY2hpbGROb2Rlcy5sZW5ndGgmJihpPW8pLG98fG4pKXtmb3IoYT1vZS5tYXAoYyhp
LCJzY3JpcHQiKSxnKSxzPWEubGVuZ3RoO2Y8cDtmKyspdT1pLGYhPT1oJiYodT1vZS5jbG9uZSh1
LCEwLCEwKSxzJiZvZS5tZXJnZShhLGModSwic2NyaXB0IikpKSxyLmNhbGwoZVtmXSx1LGYpO2lm
KHMpZm9yKGw9YVthLmxlbmd0aC0xXS5vd25lckRvY3VtZW50LG9lLm1hcChhLHkpLGY9MDtmPHM7
ZisrKXU9YVtmXSxEZS50ZXN0KHUudHlwZXx8IiIpJiYhRWUuYWNjZXNzKHUsImdsb2JhbEV2YWwi
KSYmb2UuY29udGFpbnMobCx1KSYmKHUuc3JjP29lLl9ldmFsVXJsJiZvZS5fZXZhbFVybCh1LnNy
Yyk6b2UuZ2xvYmFsRXZhbCh1LnRleHRDb250ZW50LnJlcGxhY2UoV2UsIiIpKSl9cmV0dXJuIGV9
ZnVuY3Rpb24gayhlLHQscil7Zm9yKHZhciBuLGk9dD9vZS5maWx0ZXIodCxlKTplLG89MDtudWxs
IT0obj1pW29dKTtvKyspcnx8MSE9PW4ubm9kZVR5cGV8fG9lLmNsZWFuRGF0YShjKG4pKSxuLnBh
cmVudE5vZGUmJihyJiZvZS5jb250YWlucyhuLm93bmVyRG9jdW1lbnQsbikmJmYoYyhuLCJzY3Jp
cHQiKSksbi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG4pKTtyZXR1cm4gZX1mdW5jdGlvbiBDKGUs
dCl7dmFyIHI9b2UodC5jcmVhdGVFbGVtZW50KGUpKS5hcHBlbmRUbyh0LmJvZHkpLG49b2UuY3Nz
KHJbMF0sImRpc3BsYXkiKTtyZXR1cm4gci5kZXRhY2goKSxufWZ1bmN0aW9uIEUoZSl7dmFyIHQ9
RyxyPUtlW2VdO3JldHVybiByfHwocj1DKGUsdCksIm5vbmUiIT09ciYmcnx8KCRlPSgkZXx8b2Uo
IjxpZnJhbWUgZnJhbWVib3JkZXI9JzAnIHdpZHRoPScwJyBoZWlnaHQ9JzAnLz4iKSkuYXBwZW5k
VG8odC5kb2N1bWVudEVsZW1lbnQpLHQ9JGVbMF0uY29udGVudERvY3VtZW50LHQud3JpdGUoKSx0
LmNsb3NlKCkscj1DKGUsdCksJGUuZGV0YWNoKCkpLEtlW2VdPXIpLHJ9ZnVuY3Rpb24gTyhlLHQs
cil7dmFyIG4saSxvLGEscz1lLnN0eWxlO3JldHVybiByPXJ8fFllKGUpLGE9cj9yLmdldFByb3Bl
cnR5VmFsdWUodCl8fHJbdF06dm9pZCAwLCIiIT09YSYmdm9pZCAwIT09YXx8b2UuY29udGFpbnMo
ZS5vd25lckRvY3VtZW50LGUpfHwoYT1vZS5zdHlsZShlLHQpKSxyJiYhbmUucGl4ZWxNYXJnaW5S
aWdodCgpJiZHZS50ZXN0KGEpJiZRZS50ZXN0KHQpJiYobj1zLndpZHRoLGk9cy5taW5XaWR0aCxv
PXMubWF4V2lkdGgscy5taW5XaWR0aD1zLm1heFdpZHRoPXMud2lkdGg9YSxhPXIud2lkdGgscy53
aWR0aD1uLHMubWluV2lkdGg9aSxzLm1heFdpZHRoPW8pLHZvaWQgMCE9PWE/YSsiIjphfWZ1bmN0
aW9uIFQoZSx0KXtyZXR1cm57Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUoKT92b2lkIGRlbGV0ZSB0
aGlzLmdldDoodGhpcy5nZXQ9dCkuYXBwbHkodGhpcyxhcmd1bWVudHMpfX19ZnVuY3Rpb24gTihl
KXtpZihlIGluIG50KXJldHVybiBlO2Zvcih2YXIgdD1lWzBdLnRvVXBwZXJDYXNlKCkrZS5zbGlj
ZSgxKSxyPXJ0Lmxlbmd0aDtyLS07KWlmKGU9cnRbcl0rdCxlIGluIG50KXJldHVybiBlfWZ1bmN0
aW9uIFMoZSx0LHIpe3ZhciBuPUFlLmV4ZWModCk7cmV0dXJuIG4/TWF0aC5tYXgoMCxuWzJdLShy
fHwwKSkrKG5bM118fCJweCIpOnR9ZnVuY3Rpb24gQShlLHQscixuLGkpe2Zvcih2YXIgbz1yPT09
KG4/ImJvcmRlciI6ImNvbnRlbnQiKT80OiJ3aWR0aCI9PT10PzE6MCxhPTA7bzw0O28rPTIpIm1h
cmdpbiI9PT1yJiYoYSs9b2UuY3NzKGUscitQZVtvXSwhMCxpKSksbj8oImNvbnRlbnQiPT09ciYm
KGEtPW9lLmNzcyhlLCJwYWRkaW5nIitQZVtvXSwhMCxpKSksIm1hcmdpbiIhPT1yJiYoYS09b2Uu
Y3NzKGUsImJvcmRlciIrUGVbb10rIldpZHRoIiwhMCxpKSkpOihhKz1vZS5jc3MoZSwicGFkZGlu
ZyIrUGVbb10sITAsaSksInBhZGRpbmciIT09ciYmKGErPW9lLmNzcyhlLCJib3JkZXIiK1BlW29d
KyJXaWR0aCIsITAsaSkpKTtyZXR1cm4gYX1mdW5jdGlvbiBQKGUsdCxyKXt2YXIgbj0hMCxpPSJ3
aWR0aCI9PT10P2Uub2Zmc2V0V2lkdGg6ZS5vZmZzZXRIZWlnaHQsbz1ZZShlKSxhPSJib3JkZXIt
Ym94Ij09PW9lLmNzcyhlLCJib3hTaXppbmciLCExLG8pO2lmKGk8PTB8fG51bGw9PWkpe2lmKGk9
TyhlLHQsbyksKGk8MHx8bnVsbD09aSkmJihpPWUuc3R5bGVbdF0pLEdlLnRlc3QoaSkpcmV0dXJu
IGk7bj1hJiYobmUuYm94U2l6aW5nUmVsaWFibGUoKXx8aT09PWUuc3R5bGVbdF0pLGk9cGFyc2VG
bG9hdChpKXx8MH1yZXR1cm4gaStBKGUsdCxyfHwoYT8iYm9yZGVyIjoiY29udGVudCIpLG4sbykr
InB4In1mdW5jdGlvbiBqKGUsdCl7Zm9yKHZhciByLG4saSxvPVtdLGE9MCxzPWUubGVuZ3RoO2E8
czthKyspbj1lW2FdLG4uc3R5bGUmJihvW2FdPUVlLmdldChuLCJvbGRkaXNwbGF5Iikscj1uLnN0
eWxlLmRpc3BsYXksdD8ob1thXXx8Im5vbmUiIT09cnx8KG4uc3R5bGUuZGlzcGxheT0iIiksIiI9
PT1uLnN0eWxlLmRpc3BsYXkmJmplKG4pJiYob1thXT1FZS5hY2Nlc3Mobiwib2xkZGlzcGxheSIs
RShuLm5vZGVOYW1lKSkpKTooaT1qZShuKSwibm9uZSI9PT1yJiZpfHxFZS5zZXQobiwib2xkZGlz
cGxheSIsaT9yOm9lLmNzcyhuLCJkaXNwbGF5IikpKSk7Zm9yKGE9MDthPHM7YSsrKW49ZVthXSxu
LnN0eWxlJiYodCYmIm5vbmUiIT09bi5zdHlsZS5kaXNwbGF5JiYiIiE9PW4uc3R5bGUuZGlzcGxh
eXx8KG4uc3R5bGUuZGlzcGxheT10P29bYV18fCIiOiJub25lIikpO3JldHVybiBlfWZ1bmN0aW9u
IFIoZSx0LHIsbixpKXtyZXR1cm4gbmV3IFIucHJvdG90eXBlLmluaXQoZSx0LHIsbixpKX1mdW5j
dGlvbiBMKCl7cmV0dXJuIGUuc2V0VGltZW91dChmdW5jdGlvbigpe2l0PXZvaWQgMH0pLGl0PW9l
Lm5vdygpfWZ1bmN0aW9uIEQoZSx0KXt2YXIgcixuPTAsaT17aGVpZ2h0OmV9O2Zvcih0PXQ/MTow
O248NDtuKz0yLXQpcj1QZVtuXSxpWyJtYXJnaW4iK3JdPWlbInBhZGRpbmciK3JdPWU7cmV0dXJu
IHQmJihpLm9wYWNpdHk9aS53aWR0aD1lKSxpfWZ1bmN0aW9uIE0oZSx0LHIpe2Zvcih2YXIgbixp
PShILnR3ZWVuZXJzW3RdfHxbXSkuY29uY2F0KEgudHdlZW5lcnNbIioiXSksbz0wLGE9aS5sZW5n
dGg7bzxhO28rKylpZihuPWlbb10uY2FsbChyLHQsZSkpcmV0dXJuIG59ZnVuY3Rpb24gSShlLHQs
cil7dmFyIG4saSxvLGEscyx1LGwsYyxmPXRoaXMsZD17fSxwPWUuc3R5bGUsaD1lLm5vZGVUeXBl
JiZqZShlKSxtPUVlLmdldChlLCJmeHNob3ciKTtyLnF1ZXVlfHwocz1vZS5fcXVldWVIb29rcyhl
LCJmeCIpLG51bGw9PXMudW5xdWV1ZWQmJihzLnVucXVldWVkPTAsdT1zLmVtcHR5LmZpcmUscy5l
bXB0eS5maXJlPWZ1bmN0aW9uKCl7cy51bnF1ZXVlZHx8dSgpfSkscy51bnF1ZXVlZCsrLGYuYWx3
YXlzKGZ1bmN0aW9uKCl7Zi5hbHdheXMoZnVuY3Rpb24oKXtzLnVucXVldWVkLS0sb2UucXVldWUo
ZSwiZngiKS5sZW5ndGh8fHMuZW1wdHkuZmlyZSgpfSl9KSksMT09PWUubm9kZVR5cGUmJigiaGVp
Z2h0ImluIHR8fCJ3aWR0aCJpbiB0KSYmKHIub3ZlcmZsb3c9W3Aub3ZlcmZsb3cscC5vdmVyZmxv
d1gscC5vdmVyZmxvd1ldLGw9b2UuY3NzKGUsImRpc3BsYXkiKSxjPSJub25lIj09PWw/RWUuZ2V0
KGUsIm9sZGRpc3BsYXkiKXx8RShlLm5vZGVOYW1lKTpsLCJpbmxpbmUiPT09YyYmIm5vbmUiPT09
b2UuY3NzKGUsImZsb2F0IikmJihwLmRpc3BsYXk9ImlubGluZS1ibG9jayIpKSxyLm92ZXJmbG93
JiYocC5vdmVyZmxvdz0iaGlkZGVuIixmLmFsd2F5cyhmdW5jdGlvbigpe3Aub3ZlcmZsb3c9ci5v
dmVyZmxvd1swXSxwLm92ZXJmbG93WD1yLm92ZXJmbG93WzFdLHAub3ZlcmZsb3dZPXIub3ZlcmZs
b3dbMl19KSk7Zm9yKG4gaW4gdClpZihpPXRbbl0sYXQuZXhlYyhpKSl7aWYoZGVsZXRlIHRbbl0s
bz1vfHwidG9nZ2xlIj09PWksaT09PShoPyJoaWRlIjoic2hvdyIpKXtpZigic2hvdyIhPT1pfHwh
bXx8dm9pZCAwPT09bVtuXSljb250aW51ZTtoPSEwfWRbbl09bSYmbVtuXXx8b2Uuc3R5bGUoZSxu
KX1lbHNlIGw9dm9pZCAwO2lmKG9lLmlzRW1wdHlPYmplY3QoZCkpImlubGluZSI9PT0oIm5vbmUi
PT09bD9FKGUubm9kZU5hbWUpOmwpJiYocC5kaXNwbGF5PWwpO2Vsc2V7bT8iaGlkZGVuImluIG0m
JihoPW0uaGlkZGVuKTptPUVlLmFjY2VzcyhlLCJmeHNob3ciLHt9KSxvJiYobS5oaWRkZW49IWgp
LGg/b2UoZSkuc2hvdygpOmYuZG9uZShmdW5jdGlvbigpe29lKGUpLmhpZGUoKX0pLGYuZG9uZShm
dW5jdGlvbigpe3ZhciB0O0VlLnJlbW92ZShlLCJmeHNob3ciKTtmb3IodCBpbiBkKW9lLnN0eWxl
KGUsdCxkW3RdKX0pO2ZvcihuIGluIGQpYT1NKGg/bVtuXTowLG4sZiksbiBpbiBtfHwobVtuXT1h
LnN0YXJ0LGgmJihhLmVuZD1hLnN0YXJ0LGEuc3RhcnQ9IndpZHRoIj09PW58fCJoZWlnaHQiPT09
bj8xOjApKX19ZnVuY3Rpb24gRihlLHQpe3ZhciByLG4saSxvLGE7Zm9yKHIgaW4gZSlpZihuPW9l
LmNhbWVsQ2FzZShyKSxpPXRbbl0sbz1lW3JdLG9lLmlzQXJyYXkobykmJihpPW9bMV0sbz1lW3Jd
PW9bMF0pLHIhPT1uJiYoZVtuXT1vLGRlbGV0ZSBlW3JdKSxhPW9lLmNzc0hvb2tzW25dLGEmJiJl
eHBhbmQiaW4gYSl7bz1hLmV4cGFuZChvKSxkZWxldGUgZVtuXTtmb3IociBpbiBvKXIgaW4gZXx8
KGVbcl09b1tyXSx0W3JdPWkpfWVsc2UgdFtuXT1pfWZ1bmN0aW9uIEgoZSx0LHIpe3ZhciBuLGks
bz0wLGE9SC5wcmVmaWx0ZXJzLmxlbmd0aCxzPW9lLkRlZmVycmVkKCkuYWx3YXlzKGZ1bmN0aW9u
KCl7ZGVsZXRlIHUuZWxlbX0pLHU9ZnVuY3Rpb24oKXtpZihpKXJldHVybiExO2Zvcih2YXIgdD1p
dHx8TCgpLHI9TWF0aC5tYXgoMCxsLnN0YXJ0VGltZStsLmR1cmF0aW9uLXQpLG49ci9sLmR1cmF0
aW9ufHwwLG89MS1uLGE9MCx1PWwudHdlZW5zLmxlbmd0aDthPHU7YSsrKWwudHdlZW5zW2FdLnJ1
bihvKTtyZXR1cm4gcy5ub3RpZnlXaXRoKGUsW2wsbyxyXSksbzwxJiZ1P3I6KHMucmVzb2x2ZVdp
dGgoZSxbbF0pLCExKX0sbD1zLnByb21pc2Uoe2VsZW06ZSxwcm9wczpvZS5leHRlbmQoe30sdCks
b3B0czpvZS5leHRlbmQoITAse3NwZWNpYWxFYXNpbmc6e30sZWFzaW5nOm9lLmVhc2luZy5fZGVm
YXVsdH0sciksb3JpZ2luYWxQcm9wZXJ0aWVzOnQsb3JpZ2luYWxPcHRpb25zOnIsc3RhcnRUaW1l
Oml0fHxMKCksZHVyYXRpb246ci5kdXJhdGlvbix0d2VlbnM6W10sY3JlYXRlVHdlZW46ZnVuY3Rp
b24odCxyKXt2YXIgbj1vZS5Ud2VlbihlLGwub3B0cyx0LHIsbC5vcHRzLnNwZWNpYWxFYXNpbmdb
dF18fGwub3B0cy5lYXNpbmcpO3JldHVybiBsLnR3ZWVucy5wdXNoKG4pLG59LHN0b3A6ZnVuY3Rp
b24odCl7dmFyIHI9MCxuPXQ/bC50d2VlbnMubGVuZ3RoOjA7aWYoaSlyZXR1cm4gdGhpcztmb3Io
aT0hMDtyPG47cisrKWwudHdlZW5zW3JdLnJ1bigxKTtyZXR1cm4gdD8ocy5ub3RpZnlXaXRoKGUs
W2wsMSwwXSkscy5yZXNvbHZlV2l0aChlLFtsLHRdKSk6cy5yZWplY3RXaXRoKGUsW2wsdF0pLHRo
aXN9fSksYz1sLnByb3BzO2ZvcihGKGMsbC5vcHRzLnNwZWNpYWxFYXNpbmcpO288YTtvKyspaWYo
bj1ILnByZWZpbHRlcnNbb10uY2FsbChsLGUsYyxsLm9wdHMpKXJldHVybiBvZS5pc0Z1bmN0aW9u
KG4uc3RvcCkmJihvZS5fcXVldWVIb29rcyhsLmVsZW0sbC5vcHRzLnF1ZXVlKS5zdG9wPW9lLnBy
b3h5KG4uc3RvcCxuKSksbjtyZXR1cm4gb2UubWFwKGMsTSxsKSxvZS5pc0Z1bmN0aW9uKGwub3B0
cy5zdGFydCkmJmwub3B0cy5zdGFydC5jYWxsKGUsbCksb2UuZngudGltZXIob2UuZXh0ZW5kKHUs
e2VsZW06ZSxhbmltOmwscXVldWU6bC5vcHRzLnF1ZXVlfSkpLGwucHJvZ3Jlc3MobC5vcHRzLnBy
b2dyZXNzKS5kb25lKGwub3B0cy5kb25lLGwub3B0cy5jb21wbGV0ZSkuZmFpbChsLm9wdHMuZmFp
bCkuYWx3YXlzKGwub3B0cy5hbHdheXMpfWZ1bmN0aW9uIFYoZSl7cmV0dXJuIGUuZ2V0QXR0cmli
dXRlJiZlLmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiJ9ZnVuY3Rpb24gcShlKXtyZXR1cm4gZnVu
Y3Rpb24odCxyKXsic3RyaW5nIiE9dHlwZW9mIHQmJihyPXQsdD0iKiIpO3ZhciBuLGk9MCxvPXQu
dG9Mb3dlckNhc2UoKS5tYXRjaCh3ZSl8fFtdO2lmKG9lLmlzRnVuY3Rpb24ocikpZm9yKDtuPW9b
aSsrXTspIisiPT09blswXT8obj1uLnNsaWNlKDEpfHwiKiIsKGVbbl09ZVtuXXx8W10pLnVuc2hp
ZnQocikpOihlW25dPWVbbl18fFtdKS5wdXNoKHIpfX1mdW5jdGlvbiB6KGUsdCxyLG4pe2Z1bmN0
aW9uIGkocyl7dmFyIHU7cmV0dXJuIG9bc109ITAsb2UuZWFjaChlW3NdfHxbXSxmdW5jdGlvbihl
LHMpe3ZhciBsPXModCxyLG4pO3JldHVybiJzdHJpbmciIT10eXBlb2YgbHx8YXx8b1tsXT9hPyEo
dT1sKTp2b2lkIDA6KHQuZGF0YVR5cGVzLnVuc2hpZnQobCksaShsKSwhMSl9KSx1fXZhciBvPXt9
LGE9ZT09PU90O3JldHVybiBpKHQuZGF0YVR5cGVzWzBdKXx8IW9bIioiXSYmaSgiKiIpfWZ1bmN0
aW9uIEIoZSx0KXt2YXIgcixuLGk9b2UuYWpheFNldHRpbmdzLmZsYXRPcHRpb25zfHx7fTtmb3Io
ciBpbiB0KXZvaWQgMCE9PXRbcl0mJigoaVtyXT9lOm58fChuPXt9KSlbcl09dFtyXSk7cmV0dXJu
IG4mJm9lLmV4dGVuZCghMCxlLG4pLGV9ZnVuY3Rpb24gVShlLHQscil7Zm9yKHZhciBuLGksbyxh
LHM9ZS5jb250ZW50cyx1PWUuZGF0YVR5cGVzOyIqIj09PXVbMF07KXUuc2hpZnQoKSx2b2lkIDA9
PT1uJiYobj1lLm1pbWVUeXBlfHx0LmdldFJlc3BvbnNlSGVhZGVyKCJDb250ZW50LVR5cGUiKSk7
aWYobilmb3IoaSBpbiBzKWlmKHNbaV0mJnNbaV0udGVzdChuKSl7dS51bnNoaWZ0KGkpO2JyZWFr
fWlmKHVbMF1pbiByKW89dVswXTtlbHNle2ZvcihpIGluIHIpe2lmKCF1WzBdfHxlLmNvbnZlcnRl
cnNbaSsiICIrdVswXV0pe289aTticmVha31hfHwoYT1pKX1vPW98fGF9aWYobylyZXR1cm4gbyE9
PXVbMF0mJnUudW5zaGlmdChvKSxyW29dfWZ1bmN0aW9uIFcoZSx0LHIsbil7dmFyIGksbyxhLHMs
dSxsPXt9LGM9ZS5kYXRhVHlwZXMuc2xpY2UoKTtpZihjWzFdKWZvcihhIGluIGUuY29udmVydGVy
cylsW2EudG9Mb3dlckNhc2UoKV09ZS5jb252ZXJ0ZXJzW2FdO2ZvcihvPWMuc2hpZnQoKTtvOylp
ZihlLnJlc3BvbnNlRmllbGRzW29dJiYocltlLnJlc3BvbnNlRmllbGRzW29dXT10KSwhdSYmbiYm
ZS5kYXRhRmlsdGVyJiYodD1lLmRhdGFGaWx0ZXIodCxlLmRhdGFUeXBlKSksdT1vLG89Yy5zaGlm
dCgpKWlmKCIqIj09PW8pbz11O2Vsc2UgaWYoIioiIT09dSYmdSE9PW8pe2lmKGE9bFt1KyIgIitv
XXx8bFsiKiAiK29dLCFhKWZvcihpIGluIGwpaWYocz1pLnNwbGl0KCIgIiksc1sxXT09PW8mJihh
PWxbdSsiICIrc1swXV18fGxbIiogIitzWzBdXSkpe2E9PT0hMD9hPWxbaV06bFtpXSE9PSEwJiYo
bz1zWzBdLGMudW5zaGlmdChzWzFdKSk7YnJlYWt9aWYoYSE9PSEwKWlmKGEmJmUudGhyb3dzKXQ9
YSh0KTtlbHNlIHRyeXt0PWEodCl9Y2F0Y2goZSl7cmV0dXJue3N0YXRlOiJwYXJzZXJlcnJvciIs
ZXJyb3I6YT9lOiJObyBjb252ZXJzaW9uIGZyb20gIit1KyIgdG8gIitvfX19cmV0dXJue3N0YXRl
OiJzdWNjZXNzIixkYXRhOnR9fWZ1bmN0aW9uICQoZSx0LHIsbil7dmFyIGk7aWYob2UuaXNBcnJh
eSh0KSlvZS5lYWNoKHQsZnVuY3Rpb24odCxpKXtyfHxBdC50ZXN0KGUpP24oZSxpKTokKGUrIlsi
Kygib2JqZWN0Ij09dHlwZW9mIGkmJm51bGwhPWk/dDoiIikrIl0iLGkscixuKX0pO2Vsc2UgaWYo
cnx8Im9iamVjdCIhPT1vZS50eXBlKHQpKW4oZSx0KTtlbHNlIGZvcihpIGluIHQpJChlKyJbIitp
KyJdIix0W2ldLHIsbil9ZnVuY3Rpb24gSyhlKXtyZXR1cm4gb2UuaXNXaW5kb3coZSk/ZTo5PT09
ZS5ub2RlVHlwZSYmZS5kZWZhdWx0Vmlld312YXIgUT1bXSxHPWUuZG9jdW1lbnQsWT1RLnNsaWNl
LFg9US5jb25jYXQsSj1RLnB1c2gsWj1RLmluZGV4T2YsZWU9e30sdGU9ZWUudG9TdHJpbmcscmU9
ZWUuaGFzT3duUHJvcGVydHksbmU9e30saWU9IjIuMi40IixvZT1mdW5jdGlvbihlLHQpe3JldHVy
biBuZXcgb2UuZm4uaW5pdChlLHQpfSxhZT0vXltcc1x1RkVGRlx4QTBdK3xbXHNcdUZFRkZceEEw
XSskL2csc2U9L14tbXMtLyx1ZT0vLShbXGRhLXpdKS9naSxsZT1mdW5jdGlvbihlLHQpe3JldHVy
biB0LnRvVXBwZXJDYXNlKCl9O29lLmZuPW9lLnByb3RvdHlwZT17anF1ZXJ5OmllLGNvbnN0cnVj
dG9yOm9lLHNlbGVjdG9yOiIiLGxlbmd0aDowLHRvQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gWS5j
YWxsKHRoaXMpfSxnZXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPWU/ZTwwP3RoaXNbZSt0aGlz
Lmxlbmd0aF06dGhpc1tlXTpZLmNhbGwodGhpcyl9LHB1c2hTdGFjazpmdW5jdGlvbihlKXt2YXIg
dD1vZS5tZXJnZSh0aGlzLmNvbnN0cnVjdG9yKCksZSk7cmV0dXJuIHQucHJldk9iamVjdD10aGlz
LHQuY29udGV4dD10aGlzLmNvbnRleHQsdH0sZWFjaDpmdW5jdGlvbihlKXtyZXR1cm4gb2UuZWFj
aCh0aGlzLGUpfSxtYXA6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKG9lLm1hcCh0
aGlzLGZ1bmN0aW9uKHQscil7cmV0dXJuIGUuY2FsbCh0LHIsdCl9KSl9LHNsaWNlOmZ1bmN0aW9u
KCl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKFkuYXBwbHkodGhpcyxhcmd1bWVudHMpKX0sZmlyc3Q6
ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcSgwKX0sbGFzdDpmdW5jdGlvbigpe3JldHVybiB0aGlz
LmVxKC0xKX0sZXE6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5sZW5ndGgscj0rZSsoZTwwP3Q6MCk7
cmV0dXJuIHRoaXMucHVzaFN0YWNrKHI+PTAmJnI8dD9bdGhpc1tyXV06W10pfSxlbmQ6ZnVuY3Rp
b24oKXtyZXR1cm4gdGhpcy5wcmV2T2JqZWN0fHx0aGlzLmNvbnN0cnVjdG9yKCl9LHB1c2g6Sixz
b3J0OlEuc29ydCxzcGxpY2U6US5zcGxpY2V9LG9lLmV4dGVuZD1vZS5mbi5leHRlbmQ9ZnVuY3Rp
b24oKXt2YXIgZSx0LHIsbixpLG8sYT1hcmd1bWVudHNbMF18fHt9LHM9MSx1PWFyZ3VtZW50cy5s
ZW5ndGgsbD0hMTtmb3IoImJvb2xlYW4iPT10eXBlb2YgYSYmKGw9YSxhPWFyZ3VtZW50c1tzXXx8
e30scysrKSwib2JqZWN0Ij09dHlwZW9mIGF8fG9lLmlzRnVuY3Rpb24oYSl8fChhPXt9KSxzPT09
dSYmKGE9dGhpcyxzLS0pO3M8dTtzKyspaWYobnVsbCE9KGU9YXJndW1lbnRzW3NdKSlmb3IodCBp
biBlKXI9YVt0XSxuPWVbdF0sYSE9PW4mJihsJiZuJiYob2UuaXNQbGFpbk9iamVjdChuKXx8KGk9
b2UuaXNBcnJheShuKSkpPyhpPyhpPSExLG89ciYmb2UuaXNBcnJheShyKT9yOltdKTpvPXImJm9l
LmlzUGxhaW5PYmplY3Qocik/cjp7fSxhW3RdPW9lLmV4dGVuZChsLG8sbikpOnZvaWQgMCE9PW4m
JihhW3RdPW4pKTtyZXR1cm4gYX0sb2UuZXh0ZW5kKHtleHBhbmRvOiJqUXVlcnkiKyhpZStNYXRo
LnJhbmRvbSgpKS5yZXBsYWNlKC9cRC9nLCIiKSxpc1JlYWR5OiEwLGVycm9yOmZ1bmN0aW9uKGUp
e3Rocm93IG5ldyBFcnJvcihlKX0sbm9vcDpmdW5jdGlvbigpe30saXNGdW5jdGlvbjpmdW5jdGlv
bihlKXtyZXR1cm4iZnVuY3Rpb24iPT09b2UudHlwZShlKX0saXNBcnJheTpBcnJheS5pc0FycmF5
LGlzV2luZG93OmZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT1lJiZlPT09ZS53aW5kb3d9LGlzTnVt
ZXJpYzpmdW5jdGlvbihlKXt2YXIgdD1lJiZlLnRvU3RyaW5nKCk7cmV0dXJuIW9lLmlzQXJyYXko
ZSkmJnQtcGFyc2VGbG9hdCh0KSsxPj0wfSxpc1BsYWluT2JqZWN0OmZ1bmN0aW9uKGUpe3ZhciB0
O2lmKCJvYmplY3QiIT09b2UudHlwZShlKXx8ZS5ub2RlVHlwZXx8b2UuaXNXaW5kb3coZSkpcmV0
dXJuITE7aWYoZS5jb25zdHJ1Y3RvciYmIXJlLmNhbGwoZSwiY29uc3RydWN0b3IiKSYmIXJlLmNh
bGwoZS5jb25zdHJ1Y3Rvci5wcm90b3R5cGV8fHt9LCJpc1Byb3RvdHlwZU9mIikpcmV0dXJuITE7
Zm9yKHQgaW4gZSk7cmV0dXJuIHZvaWQgMD09PXR8fHJlLmNhbGwoZSx0KX0saXNFbXB0eU9iamVj
dDpmdW5jdGlvbihlKXt2YXIgdDtmb3IodCBpbiBlKXJldHVybiExO3JldHVybiEwfSx0eXBlOmZ1
bmN0aW9uKGUpe3JldHVybiBudWxsPT1lP2UrIiI6Im9iamVjdCI9PXR5cGVvZiBlfHwiZnVuY3Rp
b24iPT10eXBlb2YgZT9lZVt0ZS5jYWxsKGUpXXx8Im9iamVjdCI6dHlwZW9mIGV9LGdsb2JhbEV2
YWw6ZnVuY3Rpb24oZSl7dmFyIHQscj1ldmFsO2U9b2UudHJpbShlKSxlJiYoMT09PWUuaW5kZXhP
ZigidXNlIHN0cmljdCIpPyh0PUcuY3JlYXRlRWxlbWVudCgic2NyaXB0IiksdC50ZXh0PWUsRy5o
ZWFkLmFwcGVuZENoaWxkKHQpLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodCkpOnIoZSkpfSxjYW1l
bENhc2U6ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZShzZSwibXMtIikucmVwbGFjZSh1ZSxs
ZSl9LG5vZGVOYW1lOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUubm9kZU5hbWUmJmUubm9kZU5hbWUu
dG9Mb3dlckNhc2UoKT09PXQudG9Mb3dlckNhc2UoKX0sZWFjaDpmdW5jdGlvbihlLHQpe3ZhciBu
LGk9MDtpZihyKGUpKWZvcihuPWUubGVuZ3RoO2k8biYmdC5jYWxsKGVbaV0saSxlW2ldKSE9PSEx
O2krKyk7ZWxzZSBmb3IoaSBpbiBlKWlmKHQuY2FsbChlW2ldLGksZVtpXSk9PT0hMSlicmVhazty
ZXR1cm4gZX0sdHJpbTpmdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZT8iIjooZSsiIikucmVwbGFj
ZShhZSwiIil9LG1ha2VBcnJheTpmdW5jdGlvbihlLHQpe3ZhciBuPXR8fFtdO3JldHVybiBudWxs
IT1lJiYocihPYmplY3QoZSkpP29lLm1lcmdlKG4sInN0cmluZyI9PXR5cGVvZiBlP1tlXTplKTpK
LmNhbGwobixlKSksbn0saW5BcnJheTpmdW5jdGlvbihlLHQscil7cmV0dXJuIG51bGw9PXQ/LTE6
Wi5jYWxsKHQsZSxyKX0sbWVyZ2U6ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9K3QubGVuZ3RoLG49
MCxpPWUubGVuZ3RoO248cjtuKyspZVtpKytdPXRbbl07cmV0dXJuIGUubGVuZ3RoPWksZX0sZ3Jl
cDpmdW5jdGlvbihlLHQscil7Zm9yKHZhciBuLGk9W10sbz0wLGE9ZS5sZW5ndGgscz0hcjtvPGE7
bysrKW49IXQoZVtvXSxvKSxuIT09cyYmaS5wdXNoKGVbb10pO3JldHVybiBpfSxtYXA6ZnVuY3Rp
b24oZSx0LG4pe3ZhciBpLG8sYT0wLHM9W107aWYocihlKSlmb3IoaT1lLmxlbmd0aDthPGk7YSsr
KW89dChlW2FdLGEsbiksbnVsbCE9byYmcy5wdXNoKG8pO2Vsc2UgZm9yKGEgaW4gZSlvPXQoZVth
XSxhLG4pLG51bGwhPW8mJnMucHVzaChvKTtyZXR1cm4gWC5hcHBseShbXSxzKX0sZ3VpZDoxLHBy
b3h5OmZ1bmN0aW9uKGUsdCl7dmFyIHIsbixpO2lmKCJzdHJpbmciPT10eXBlb2YgdCYmKHI9ZVt0
XSx0PWUsZT1yKSxvZS5pc0Z1bmN0aW9uKGUpKXJldHVybiBuPVkuY2FsbChhcmd1bWVudHMsMiks
aT1mdW5jdGlvbigpe3JldHVybiBlLmFwcGx5KHR8fHRoaXMsbi5jb25jYXQoWS5jYWxsKGFyZ3Vt
ZW50cykpKX0saS5ndWlkPWUuZ3VpZD1lLmd1aWR8fG9lLmd1aWQrKyxpfSxub3c6RGF0ZS5ub3cs
c3VwcG9ydDpuZX0pLCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihvZS5mbltTeW1ib2wuaXRl
cmF0b3JdPVFbU3ltYm9sLml0ZXJhdG9yXSksb2UuZWFjaCgiQm9vbGVhbiBOdW1iZXIgU3RyaW5n
IEZ1bmN0aW9uIEFycmF5IERhdGUgUmVnRXhwIE9iamVjdCBFcnJvciBTeW1ib2wiLnNwbGl0KCIg
IiksZnVuY3Rpb24oZSx0KXtlZVsiW29iamVjdCAiK3QrIl0iXT10LnRvTG93ZXJDYXNlKCl9KTt2
YXIgY2U9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlLHQscixuKXt2YXIgaSxvLGEscyx1LGwsZixw
LGg9dCYmdC5vd25lckRvY3VtZW50LG09dD90Lm5vZGVUeXBlOjk7aWYocj1yfHxbXSwic3RyaW5n
IiE9dHlwZW9mIGV8fCFlfHwxIT09bSYmOSE9PW0mJjExIT09bSlyZXR1cm4gcjtpZighbiYmKCh0
P3Qub3duZXJEb2N1bWVudHx8dDpWKSE9PWomJlAodCksdD10fHxqLEwpKXtpZigxMSE9PW0mJihs
PWJlLmV4ZWMoZSkpKWlmKGk9bFsxXSl7aWYoOT09PW0pe2lmKCEoYT10LmdldEVsZW1lbnRCeUlk
KGkpKSlyZXR1cm4gcjtpZihhLmlkPT09aSlyZXR1cm4gci5wdXNoKGEpLHJ9ZWxzZSBpZihoJiYo
YT1oLmdldEVsZW1lbnRCeUlkKGkpKSYmRih0LGEpJiZhLmlkPT09aSlyZXR1cm4gci5wdXNoKGEp
LHJ9ZWxzZXtpZihsWzJdKXJldHVybiBKLmFwcGx5KHIsdC5nZXRFbGVtZW50c0J5VGFnTmFtZShl
KSkscjtpZigoaT1sWzNdKSYmdy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lJiZ0LmdldEVsZW1lbnRz
QnlDbGFzc05hbWUpcmV0dXJuIEouYXBwbHkocix0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoaSkp
LHJ9aWYody5xc2EmJiFXW2UrIiAiXSYmKCFEfHwhRC50ZXN0KGUpKSl7aWYoMSE9PW0paD10LHA9
ZTtlbHNlIGlmKCJvYmplY3QiIT09dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKXtmb3IoKHM9dC5n
ZXRBdHRyaWJ1dGUoImlkIikpP3M9cy5yZXBsYWNlKHllLCJcXCQmIik6dC5zZXRBdHRyaWJ1dGUo
ImlkIixzPUgpLGY9RShlKSxvPWYubGVuZ3RoLHU9ZGUudGVzdChzKT8iIyIrczoiW2lkPSciK3Mr
IiddIjtvLS07KWZbb109dSsiICIrZChmW29dKTtwPWYuam9pbigiLCIpLGg9Z2UudGVzdChlKSYm
Yyh0LnBhcmVudE5vZGUpfHx0fWlmKHApdHJ5e3JldHVybiBKLmFwcGx5KHIsaC5xdWVyeVNlbGVj
dG9yQWxsKHApKSxyfWNhdGNoKGUpe31maW5hbGx5e3M9PT1IJiZ0LnJlbW92ZUF0dHJpYnV0ZSgi
aWQiKX19fXJldHVybiBUKGUucmVwbGFjZShzZSwiJDEiKSx0LHIsbil9ZnVuY3Rpb24gcigpe2Z1
bmN0aW9uIGUocixuKXtyZXR1cm4gdC5wdXNoKHIrIiAiKT54LmNhY2hlTGVuZ3RoJiZkZWxldGUg
ZVt0LnNoaWZ0KCldLGVbcisiICJdPW59dmFyIHQ9W107cmV0dXJuIGV9ZnVuY3Rpb24gbihlKXty
ZXR1cm4gZVtIXT0hMCxlfWZ1bmN0aW9uIGkoZSl7dmFyIHQ9ai5jcmVhdGVFbGVtZW50KCJkaXYi
KTt0cnl7cmV0dXJuISFlKHQpfWNhdGNoKGUpe3JldHVybiExfWZpbmFsbHl7dC5wYXJlbnROb2Rl
JiZ0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodCksdD1udWxsfX1mdW5jdGlvbiBvKGUsdCl7Zm9y
KHZhciByPWUuc3BsaXQoInwiKSxuPXIubGVuZ3RoO24tLTspeC5hdHRySGFuZGxlW3Jbbl1dPXR9
ZnVuY3Rpb24gYShlLHQpe3ZhciByPXQmJmUsbj1yJiYxPT09ZS5ub2RlVHlwZSYmMT09PXQubm9k
ZVR5cGUmJih+dC5zb3VyY2VJbmRleHx8SyktKH5lLnNvdXJjZUluZGV4fHxLKTtpZihuKXJldHVy
biBuO2lmKHIpZm9yKDtyPXIubmV4dFNpYmxpbmc7KWlmKHI9PT10KXJldHVybi0xO3JldHVybiBl
PzE6LTF9ZnVuY3Rpb24gcyhlKXtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIHI9dC5ub2RlTmFtZS50
b0xvd2VyQ2FzZSgpO3JldHVybiJpbnB1dCI9PT1yJiZ0LnR5cGU9PT1lfX1mdW5jdGlvbiB1KGUp
e3JldHVybiBmdW5jdGlvbih0KXt2YXIgcj10Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJu
KCJpbnB1dCI9PT1yfHwiYnV0dG9uIj09PXIpJiZ0LnR5cGU9PT1lfX1mdW5jdGlvbiBsKGUpe3Jl
dHVybiBuKGZ1bmN0aW9uKHQpe3JldHVybiB0PSt0LG4oZnVuY3Rpb24ocixuKXtmb3IodmFyIGks
bz1lKFtdLHIubGVuZ3RoLHQpLGE9by5sZW5ndGg7YS0tOylyW2k9b1thXV0mJihyW2ldPSEobltp
XT1yW2ldKSl9KX0pfWZ1bmN0aW9uIGMoZSl7cmV0dXJuIGUmJiJ1bmRlZmluZWQiIT10eXBlb2Yg
ZS5nZXRFbGVtZW50c0J5VGFnTmFtZSYmZX1mdW5jdGlvbiBmKCl7fWZ1bmN0aW9uIGQoZSl7Zm9y
KHZhciB0PTAscj1lLmxlbmd0aCxuPSIiO3Q8cjt0Kyspbis9ZVt0XS52YWx1ZTtyZXR1cm4gbn1m
dW5jdGlvbiBwKGUsdCxyKXt2YXIgbj10LmRpcixpPXImJiJwYXJlbnROb2RlIj09PW4sbz16Kys7
cmV0dXJuIHQuZmlyc3Q/ZnVuY3Rpb24odCxyLG8pe2Zvcig7dD10W25dOylpZigxPT09dC5ub2Rl
VHlwZXx8aSlyZXR1cm4gZSh0LHIsbyl9OmZ1bmN0aW9uKHQscixhKXt2YXIgcyx1LGwsYz1bcSxv
XTtpZihhKXtmb3IoO3Q9dFtuXTspaWYoKDE9PT10Lm5vZGVUeXBlfHxpKSYmZSh0LHIsYSkpcmV0
dXJuITB9ZWxzZSBmb3IoO3Q9dFtuXTspaWYoMT09PXQubm9kZVR5cGV8fGkpe2lmKGw9dFtIXXx8
KHRbSF09e30pLHU9bFt0LnVuaXF1ZUlEXXx8KGxbdC51bmlxdWVJRF09e30pLChzPXVbbl0pJiZz
WzBdPT09cSYmc1sxXT09PW8pcmV0dXJuIGNbMl09c1syXTtpZih1W25dPWMsY1syXT1lKHQscixh
KSlyZXR1cm4hMH19fWZ1bmN0aW9uIGgoZSl7cmV0dXJuIGUubGVuZ3RoPjE/ZnVuY3Rpb24odCxy
LG4pe2Zvcih2YXIgaT1lLmxlbmd0aDtpLS07KWlmKCFlW2ldKHQscixuKSlyZXR1cm4hMTtyZXR1
cm4hMH06ZVswXX1mdW5jdGlvbiBtKGUscixuKXtmb3IodmFyIGk9MCxvPXIubGVuZ3RoO2k8bztp
KyspdChlLHJbaV0sbik7cmV0dXJuIG59ZnVuY3Rpb24gdihlLHQscixuLGkpe2Zvcih2YXIgbyxh
PVtdLHM9MCx1PWUubGVuZ3RoLGw9bnVsbCE9dDtzPHU7cysrKShvPWVbc10pJiYociYmIXIobyxu
LGkpfHwoYS5wdXNoKG8pLGwmJnQucHVzaChzKSkpO3JldHVybiBhfWZ1bmN0aW9uIGIoZSx0LHIs
aSxvLGEpe3JldHVybiBpJiYhaVtIXSYmKGk9YihpKSksbyYmIW9bSF0mJihvPWIobyxhKSksbihm
dW5jdGlvbihuLGEscyx1KXt2YXIgbCxjLGYsZD1bXSxwPVtdLGg9YS5sZW5ndGgsYj1ufHxtKHR8
fCIqIixzLm5vZGVUeXBlP1tzXTpzLFtdKSxnPSFlfHwhbiYmdD9iOnYoYixkLGUscyx1KSx5PXI/
b3x8KG4/ZTpofHxpKT9bXTphOmc7aWYociYmcihnLHkscyx1KSxpKWZvcihsPXYoeSxwKSxpKGws
W10scyx1KSxjPWwubGVuZ3RoO2MtLTspKGY9bFtjXSkmJih5W3BbY11dPSEoZ1twW2NdXT1mKSk7
aWYobil7aWYob3x8ZSl7aWYobyl7Zm9yKGw9W10sYz15Lmxlbmd0aDtjLS07KShmPXlbY10pJiZs
LnB1c2goZ1tjXT1mKTtvKG51bGwseT1bXSxsLHUpfWZvcihjPXkubGVuZ3RoO2MtLTspKGY9eVtj
XSkmJihsPW8/ZWUobixmKTpkW2NdKT4tMSYmKG5bbF09IShhW2xdPWYpKX19ZWxzZSB5PXYoeT09
PWE/eS5zcGxpY2UoaCx5Lmxlbmd0aCk6eSksbz9vKG51bGwsYSx5LHUpOkouYXBwbHkoYSx5KX0p
fWZ1bmN0aW9uIGcoZSl7Zm9yKHZhciB0LHIsbixpPWUubGVuZ3RoLG89eC5yZWxhdGl2ZVtlWzBd
LnR5cGVdLGE9b3x8eC5yZWxhdGl2ZVsiICJdLHM9bz8xOjAsdT1wKGZ1bmN0aW9uKGUpe3JldHVy
biBlPT09dH0sYSwhMCksbD1wKGZ1bmN0aW9uKGUpe3JldHVybiBlZSh0LGUpPi0xfSxhLCEwKSxj
PVtmdW5jdGlvbihlLHIsbil7dmFyIGk9IW8mJihufHxyIT09Til8fCgodD1yKS5ub2RlVHlwZT91
KGUscixuKTpsKGUscixuKSk7cmV0dXJuIHQ9bnVsbCxpfV07czxpO3MrKylpZihyPXgucmVsYXRp
dmVbZVtzXS50eXBlXSljPVtwKGgoYykscildO2Vsc2V7aWYocj14LmZpbHRlcltlW3NdLnR5cGVd
LmFwcGx5KG51bGwsZVtzXS5tYXRjaGVzKSxyW0hdKXtmb3Iobj0rK3M7bjxpJiYheC5yZWxhdGl2
ZVtlW25dLnR5cGVdO24rKyk7cmV0dXJuIGIocz4xJiZoKGMpLHM+MSYmZChlLnNsaWNlKDAscy0x
KS5jb25jYXQoe3ZhbHVlOiIgIj09PWVbcy0yXS50eXBlPyIqIjoiIn0pKS5yZXBsYWNlKHNlLCIk
MSIpLHIsczxuJiZnKGUuc2xpY2UocyxuKSksbjxpJiZnKGU9ZS5zbGljZShuKSksbjxpJiZkKGUp
KX1jLnB1c2gocil9cmV0dXJuIGgoYyl9ZnVuY3Rpb24geShlLHIpe3ZhciBpPXIubGVuZ3RoPjAs
bz1lLmxlbmd0aD4wLGE9ZnVuY3Rpb24obixhLHMsdSxsKXt2YXIgYyxmLGQscD0wLGg9IjAiLG09
biYmW10sYj1bXSxnPU4seT1ufHxvJiZ4LmZpbmQuVEFHKCIqIixsKSxfPXErPW51bGw9PWc/MTpN
YXRoLnJhbmRvbSgpfHwuMSx3PXkubGVuZ3RoO2ZvcihsJiYoTj1hPT09anx8YXx8bCk7aCE9PXcm
Jm51bGwhPShjPXlbaF0pO2grKyl7aWYobyYmYyl7Zm9yKGY9MCxhfHxjLm93bmVyRG9jdW1lbnQ9
PT1qfHwoUChjKSxzPSFMKTtkPWVbZisrXTspaWYoZChjLGF8fGoscykpe3UucHVzaChjKTticmVh
a31sJiYocT1fKX1pJiYoKGM9IWQmJmMpJiZwLS0sbiYmbS5wdXNoKGMpKX1pZihwKz1oLGkmJmgh
PT1wKXtmb3IoZj0wO2Q9cltmKytdOylkKG0sYixhLHMpO2lmKG4pe2lmKHA+MClmb3IoO2gtLTsp
bVtoXXx8YltoXXx8KGJbaF09WS5jYWxsKHUpKTtiPXYoYil9Si5hcHBseSh1LGIpLGwmJiFuJiZi
Lmxlbmd0aD4wJiZwK3IubGVuZ3RoPjEmJnQudW5pcXVlU29ydCh1KX1yZXR1cm4gbCYmKHE9XyxO
PWcpLG19O3JldHVybiBpP24oYSk6YX12YXIgXyx3LHgsayxDLEUsTyxULE4sUyxBLFAsaixSLEws
RCxNLEksRixIPSJzaXp6bGUiKzEqbmV3IERhdGUsVj1lLmRvY3VtZW50LHE9MCx6PTAsQj1yKCks
VT1yKCksVz1yKCksJD1mdW5jdGlvbihlLHQpe3JldHVybiBlPT09dCYmKEE9ITApLDB9LEs9MTw8
MzEsUT17fS5oYXNPd25Qcm9wZXJ0eSxHPVtdLFk9Ry5wb3AsWD1HLnB1c2gsSj1HLnB1c2gsWj1H
LnNsaWNlLGVlPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPTAsbj1lLmxlbmd0aDtyPG47cisrKWlm
KGVbcl09PT10KXJldHVybiByO3JldHVybi0xfSx0ZT0iY2hlY2tlZHxzZWxlY3RlZHxhc3luY3xh
dXRvZm9jdXN8YXV0b3BsYXl8Y29udHJvbHN8ZGVmZXJ8ZGlzYWJsZWR8aGlkZGVufGlzbWFwfGxv
b3B8bXVsdGlwbGV8b3BlbnxyZWFkb25seXxyZXF1aXJlZHxzY29wZWQiLHJlPSJbXFx4MjBcXHRc
XHJcXG5cXGZdIixuZT0iKD86XFxcXC58W1xcdy1dfFteXFx4MDAtXFx4YTBdKSsiLGllPSJcXFsi
K3JlKyIqKCIrbmUrIikoPzoiK3JlKyIqKFsqXiR8IX5dPz0pIityZSsiKig/OicoKD86XFxcXC58
W15cXFxcJ10pKiknfFwiKCg/OlxcXFwufFteXFxcXFwiXSkqKVwifCgiK25lKyIpKXwpIityZSsi
KlxcXSIsb2U9IjooIituZSsiKSg/OlxcKCgoJygoPzpcXFxcLnxbXlxcXFwnXSkqKSd8XCIoKD86
XFxcXC58W15cXFxcXCJdKSopXCIpfCgoPzpcXFxcLnxbXlxcXFwoKVtcXF1dfCIraWUrIikqKXwu
KilcXCl8KSIsYWU9bmV3IFJlZ0V4cChyZSsiKyIsImciKSxzZT1uZXcgUmVnRXhwKCJeIityZSsi
K3woKD86XnxbXlxcXFxdKSg/OlxcXFwuKSopIityZSsiKyQiLCJnIiksdWU9bmV3IFJlZ0V4cCgi
XiIrcmUrIiosIityZSsiKiIpLGxlPW5ldyBSZWdFeHAoIl4iK3JlKyIqKFs+K35dfCIrcmUrIiki
K3JlKyIqIiksY2U9bmV3IFJlZ0V4cCgiPSIrcmUrIiooW15cXF0nXCJdKj8pIityZSsiKlxcXSIs
ImciKSxmZT1uZXcgUmVnRXhwKG9lKSxkZT1uZXcgUmVnRXhwKCJeIituZSsiJCIpLHBlPXtJRDpu
ZXcgUmVnRXhwKCJeIygiK25lKyIpIiksQ0xBU1M6bmV3IFJlZ0V4cCgiXlxcLigiK25lKyIpIiks
VEFHOm5ldyBSZWdFeHAoIl4oIituZSsifFsqXSkiKSxBVFRSOm5ldyBSZWdFeHAoIl4iK2llKSxQ
U0VVRE86bmV3IFJlZ0V4cCgiXiIrb2UpLENISUxEOm5ldyBSZWdFeHAoIl46KG9ubHl8Zmlyc3R8
bGFzdHxudGh8bnRoLWxhc3QpLShjaGlsZHxvZi10eXBlKSg/OlxcKCIrcmUrIiooZXZlbnxvZGR8
KChbKy1dfCkoXFxkKilufCkiK3JlKyIqKD86KFsrLV18KSIrcmUrIiooXFxkKyl8KSkiK3JlKyIq
XFwpfCkiLCJpIiksYm9vbDpuZXcgUmVnRXhwKCJeKD86Iit0ZSsiKSQiLCJpIiksbmVlZHNDb250
ZXh0Om5ldyBSZWdFeHAoIl4iK3JlKyIqWz4rfl18OihldmVufG9kZHxlcXxndHxsdHxudGh8Zmly
c3R8bGFzdCkoPzpcXCgiK3JlKyIqKCg/Oi1cXGQpP1xcZCopIityZSsiKlxcKXwpKD89W14tXXwk
KSIsImkiKX0saGU9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaSxtZT0vXmhc
ZCQvaSx2ZT0vXltee10rXHtccypcW25hdGl2ZSBcdy8sYmU9L14oPzojKFtcdy1dKyl8KFx3Kyl8
XC4oW1x3LV0rKSkkLyxnZT0vWyt+XS8seWU9Lyd8XFwvZyxfZT1uZXcgUmVnRXhwKCJcXFxcKFtc
XGRhLWZdezEsNn0iK3JlKyI/fCgiK3JlKyIpfC4pIiwiaWciKSx3ZT1mdW5jdGlvbihlLHQscil7
dmFyIG49IjB4Iit0LTY1NTM2O3JldHVybiBuIT09bnx8cj90Om48MD9TdHJpbmcuZnJvbUNoYXJD
b2RlKG4rNjU1MzYpOlN0cmluZy5mcm9tQ2hhckNvZGUobj4+MTB8NTUyOTYsMTAyMyZufDU2MzIw
KX0seGU9ZnVuY3Rpb24oKXtQKCl9O3RyeXtKLmFwcGx5KEc9Wi5jYWxsKFYuY2hpbGROb2Rlcyks
Vi5jaGlsZE5vZGVzKSxHW1YuY2hpbGROb2Rlcy5sZW5ndGhdLm5vZGVUeXBlfWNhdGNoKGUpe0o9
e2FwcGx5OkcubGVuZ3RoP2Z1bmN0aW9uKGUsdCl7WC5hcHBseShlLFouY2FsbCh0KSl9OmZ1bmN0
aW9uKGUsdCl7Zm9yKHZhciByPWUubGVuZ3RoLG49MDtlW3IrK109dFtuKytdOyk7ZS5sZW5ndGg9
ci0xfX19dz10LnN1cHBvcnQ9e30sQz10LmlzWE1MPWZ1bmN0aW9uKGUpe3ZhciB0PWUmJihlLm93
bmVyRG9jdW1lbnR8fGUpLmRvY3VtZW50RWxlbWVudDtyZXR1cm4hIXQmJiJIVE1MIiE9PXQubm9k
ZU5hbWV9LFA9dC5zZXREb2N1bWVudD1mdW5jdGlvbihlKXt2YXIgdCxyLG49ZT9lLm93bmVyRG9j
dW1lbnR8fGU6VjtyZXR1cm4gbiE9PWomJjk9PT1uLm5vZGVUeXBlJiZuLmRvY3VtZW50RWxlbWVu
dD8oaj1uLFI9ai5kb2N1bWVudEVsZW1lbnQsTD0hQyhqKSwocj1qLmRlZmF1bHRWaWV3KSYmci50
b3AhPT1yJiYoci5hZGRFdmVudExpc3RlbmVyP3IuYWRkRXZlbnRMaXN0ZW5lcigidW5sb2FkIix4
ZSwhMSk6ci5hdHRhY2hFdmVudCYmci5hdHRhY2hFdmVudCgib251bmxvYWQiLHhlKSksdy5hdHRy
aWJ1dGVzPWkoZnVuY3Rpb24oZSl7cmV0dXJuIGUuY2xhc3NOYW1lPSJpIiwhZS5nZXRBdHRyaWJ1
dGUoImNsYXNzTmFtZSIpfSksdy5nZXRFbGVtZW50c0J5VGFnTmFtZT1pKGZ1bmN0aW9uKGUpe3Jl
dHVybiBlLmFwcGVuZENoaWxkKGouY3JlYXRlQ29tbWVudCgiIikpLCFlLmdldEVsZW1lbnRzQnlU
YWdOYW1lKCIqIikubGVuZ3RofSksdy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lPXZlLnRlc3Qoai5n
ZXRFbGVtZW50c0J5Q2xhc3NOYW1lKSx3LmdldEJ5SWQ9aShmdW5jdGlvbihlKXtyZXR1cm4gUi5h
cHBlbmRDaGlsZChlKS5pZD1ILCFqLmdldEVsZW1lbnRzQnlOYW1lfHwhai5nZXRFbGVtZW50c0J5
TmFtZShIKS5sZW5ndGh9KSx3LmdldEJ5SWQ/KHguZmluZC5JRD1mdW5jdGlvbihlLHQpe2lmKCJ1
bmRlZmluZWQiIT10eXBlb2YgdC5nZXRFbGVtZW50QnlJZCYmTCl7dmFyIHI9dC5nZXRFbGVtZW50
QnlJZChlKTtyZXR1cm4gcj9bcl06W119fSx4LmZpbHRlci5JRD1mdW5jdGlvbihlKXt2YXIgdD1l
LnJlcGxhY2UoX2Usd2UpO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRBdHRyaWJ1dGUo
ImlkIik9PT10fX0pOihkZWxldGUgeC5maW5kLklELHguZmlsdGVyLklEPWZ1bmN0aW9uKGUpe3Zh
ciB0PWUucmVwbGFjZShfZSx3ZSk7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciByPSJ1bmRlZmluZWQi
IT10eXBlb2YgZS5nZXRBdHRyaWJ1dGVOb2RlJiZlLmdldEF0dHJpYnV0ZU5vZGUoImlkIik7cmV0
dXJuIHImJnIudmFsdWU9PT10fX0pLHguZmluZC5UQUc9dy5nZXRFbGVtZW50c0J5VGFnTmFtZT9m
dW5jdGlvbihlLHQpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgdC5nZXRFbGVtZW50c0J5VGFn
TmFtZT90LmdldEVsZW1lbnRzQnlUYWdOYW1lKGUpOncucXNhP3QucXVlcnlTZWxlY3RvckFsbChl
KTp2b2lkIDB9OmZ1bmN0aW9uKGUsdCl7dmFyIHIsbj1bXSxpPTAsbz10LmdldEVsZW1lbnRzQnlU
YWdOYW1lKGUpO2lmKCIqIj09PWUpe2Zvcig7cj1vW2krK107KTE9PT1yLm5vZGVUeXBlJiZuLnB1
c2gocik7cmV0dXJuIG59cmV0dXJuIG99LHguZmluZC5DTEFTUz13LmdldEVsZW1lbnRzQnlDbGFz
c05hbWUmJmZ1bmN0aW9uKGUsdCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB0LmdldEVsZW1lbnRz
QnlDbGFzc05hbWUmJkwpcmV0dXJuIHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShlKX0sTT1bXSxE
PVtdLCh3LnFzYT12ZS50ZXN0KGoucXVlcnlTZWxlY3RvckFsbCkpJiYoaShmdW5jdGlvbihlKXtS
LmFwcGVuZENoaWxkKGUpLmlubmVySFRNTD0iPGEgaWQ9JyIrSCsiJz48L2E+PHNlbGVjdCBpZD0n
IitIKyItXHJcXCcgbXNhbGxvd2NhcHR1cmU9Jyc+PG9wdGlvbiBzZWxlY3RlZD0nJz48L29wdGlv
bj48L3NlbGVjdD4iLGUucXVlcnlTZWxlY3RvckFsbCgiW21zYWxsb3djYXB0dXJlXj0nJ10iKS5s
ZW5ndGgmJkQucHVzaCgiWypeJF09IityZSsiKig/OicnfFwiXCIpIiksZS5xdWVyeVNlbGVjdG9y
QWxsKCJbc2VsZWN0ZWRdIikubGVuZ3RofHxELnB1c2goIlxcWyIrcmUrIiooPzp2YWx1ZXwiK3Rl
KyIpIiksZS5xdWVyeVNlbGVjdG9yQWxsKCJbaWR+PSIrSCsiLV0iKS5sZW5ndGh8fEQucHVzaCgi
fj0iKSxlLnF1ZXJ5U2VsZWN0b3JBbGwoIjpjaGVja2VkIikubGVuZ3RofHxELnB1c2goIjpjaGVj
a2VkIiksZS5xdWVyeVNlbGVjdG9yQWxsKCJhIyIrSCsiKyoiKS5sZW5ndGh8fEQucHVzaCgiLiMu
K1srfl0iKX0pLGkoZnVuY3Rpb24oZSl7dmFyIHQ9ai5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO3Qu
c2V0QXR0cmlidXRlKCJ0eXBlIiwiaGlkZGVuIiksZS5hcHBlbmRDaGlsZCh0KS5zZXRBdHRyaWJ1
dGUoIm5hbWUiLCJEIiksZS5xdWVyeVNlbGVjdG9yQWxsKCJbbmFtZT1kXSIpLmxlbmd0aCYmRC5w
dXNoKCJuYW1lIityZSsiKlsqXiR8IX5dPz0iKSxlLnF1ZXJ5U2VsZWN0b3JBbGwoIjplbmFibGVk
IikubGVuZ3RofHxELnB1c2goIjplbmFibGVkIiwiOmRpc2FibGVkIiksZS5xdWVyeVNlbGVjdG9y
QWxsKCIqLDp4IiksRC5wdXNoKCIsLio6Iil9KSksKHcubWF0Y2hlc1NlbGVjdG9yPXZlLnRlc3Qo
ST1SLm1hdGNoZXN8fFIud2Via2l0TWF0Y2hlc1NlbGVjdG9yfHxSLm1vek1hdGNoZXNTZWxlY3Rv
cnx8Ui5vTWF0Y2hlc1NlbGVjdG9yfHxSLm1zTWF0Y2hlc1NlbGVjdG9yKSkmJmkoZnVuY3Rpb24o
ZSl7dy5kaXNjb25uZWN0ZWRNYXRjaD1JLmNhbGwoZSwiZGl2IiksSS5jYWxsKGUsIltzIT0nJ106
eCIpLE0ucHVzaCgiIT0iLG9lKX0pLEQ9RC5sZW5ndGgmJm5ldyBSZWdFeHAoRC5qb2luKCJ8Iikp
LE09TS5sZW5ndGgmJm5ldyBSZWdFeHAoTS5qb2luKCJ8IikpLHQ9dmUudGVzdChSLmNvbXBhcmVE
b2N1bWVudFBvc2l0aW9uKSxGPXR8fHZlLnRlc3QoUi5jb250YWlucyk/ZnVuY3Rpb24oZSx0KXt2
YXIgcj05PT09ZS5ub2RlVHlwZT9lLmRvY3VtZW50RWxlbWVudDplLG49dCYmdC5wYXJlbnROb2Rl
O3JldHVybiBlPT09bnx8ISghbnx8MSE9PW4ubm9kZVR5cGV8fCEoci5jb250YWlucz9yLmNvbnRh
aW5zKG4pOmUuY29tcGFyZURvY3VtZW50UG9zaXRpb24mJjE2JmUuY29tcGFyZURvY3VtZW50UG9z
aXRpb24obikpKX06ZnVuY3Rpb24oZSx0KXtpZih0KWZvcig7dD10LnBhcmVudE5vZGU7KWlmKHQ9
PT1lKXJldHVybiEwO3JldHVybiExfSwkPXQ/ZnVuY3Rpb24oZSx0KXtpZihlPT09dClyZXR1cm4g
QT0hMCwwO3ZhciByPSFlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uLSF0LmNvbXBhcmVEb2N1bWVu
dFBvc2l0aW9uO3JldHVybiByP3I6KHI9KGUub3duZXJEb2N1bWVudHx8ZSk9PT0odC5vd25lckRv
Y3VtZW50fHx0KT9lLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHQpOjEsMSZyfHwhdy5zb3J0RGV0
YWNoZWQmJnQuY29tcGFyZURvY3VtZW50UG9zaXRpb24oZSk9PT1yP2U9PT1qfHxlLm93bmVyRG9j
dW1lbnQ9PT1WJiZGKFYsZSk/LTE6dD09PWp8fHQub3duZXJEb2N1bWVudD09PVYmJkYoVix0KT8x
OlM/ZWUoUyxlKS1lZShTLHQpOjA6NCZyPy0xOjEpfTpmdW5jdGlvbihlLHQpe2lmKGU9PT10KXJl
dHVybiBBPSEwLDA7dmFyIHIsbj0wLGk9ZS5wYXJlbnROb2RlLG89dC5wYXJlbnROb2RlLHM9W2Vd
LHU9W3RdO2lmKCFpfHwhbylyZXR1cm4gZT09PWo/LTE6dD09PWo/MTppPy0xOm8/MTpTP2VlKFMs
ZSktZWUoUyx0KTowO2lmKGk9PT1vKXJldHVybiBhKGUsdCk7Zm9yKHI9ZTtyPXIucGFyZW50Tm9k
ZTspcy51bnNoaWZ0KHIpO2ZvcihyPXQ7cj1yLnBhcmVudE5vZGU7KXUudW5zaGlmdChyKTtmb3Io
O3Nbbl09PT11W25dOyluKys7cmV0dXJuIG4/YShzW25dLHVbbl0pOnNbbl09PT1WPy0xOnVbbl09
PT1WPzE6MH0saik6an0sdC5tYXRjaGVzPWZ1bmN0aW9uKGUscil7cmV0dXJuIHQoZSxudWxsLG51
bGwscil9LHQubWF0Y2hlc1NlbGVjdG9yPWZ1bmN0aW9uKGUscil7aWYoKGUub3duZXJEb2N1bWVu
dHx8ZSkhPT1qJiZQKGUpLHI9ci5yZXBsYWNlKGNlLCI9JyQxJ10iKSx3Lm1hdGNoZXNTZWxlY3Rv
ciYmTCYmIVdbcisiICJdJiYoIU18fCFNLnRlc3QocikpJiYoIUR8fCFELnRlc3QocikpKXRyeXt2
YXIgbj1JLmNhbGwoZSxyKTtpZihufHx3LmRpc2Nvbm5lY3RlZE1hdGNofHxlLmRvY3VtZW50JiYx
MSE9PWUuZG9jdW1lbnQubm9kZVR5cGUpcmV0dXJuIG59Y2F0Y2goZSl7fXJldHVybiB0KHIsaixu
dWxsLFtlXSkubGVuZ3RoPjB9LHQuY29udGFpbnM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4oZS5vd25l
ckRvY3VtZW50fHxlKSE9PWomJlAoZSksRihlLHQpfSx0LmF0dHI9ZnVuY3Rpb24oZSx0KXsoZS5v
d25lckRvY3VtZW50fHxlKSE9PWomJlAoZSk7dmFyIHI9eC5hdHRySGFuZGxlW3QudG9Mb3dlckNh
c2UoKV0sbj1yJiZRLmNhbGwoeC5hdHRySGFuZGxlLHQudG9Mb3dlckNhc2UoKSk/cihlLHQsIUwp
OnZvaWQgMDtyZXR1cm4gdm9pZCAwIT09bj9uOncuYXR0cmlidXRlc3x8IUw/ZS5nZXRBdHRyaWJ1
dGUodCk6KG49ZS5nZXRBdHRyaWJ1dGVOb2RlKHQpKSYmbi5zcGVjaWZpZWQ/bi52YWx1ZTpudWxs
fSx0LmVycm9yPWZ1bmN0aW9uKGUpe3Rocm93IG5ldyBFcnJvcigiU3ludGF4IGVycm9yLCB1bnJl
Y29nbml6ZWQgZXhwcmVzc2lvbjogIitlKX0sdC51bmlxdWVTb3J0PWZ1bmN0aW9uKGUpe3ZhciB0
LHI9W10sbj0wLGk9MDtpZihBPSF3LmRldGVjdER1cGxpY2F0ZXMsUz0hdy5zb3J0U3RhYmxlJiZl
LnNsaWNlKDApLGUuc29ydCgkKSxBKXtmb3IoO3Q9ZVtpKytdOyl0PT09ZVtpXSYmKG49ci5wdXNo
KGkpKTtmb3IoO24tLTspZS5zcGxpY2UocltuXSwxKX1yZXR1cm4gUz1udWxsLGV9LGs9dC5nZXRU
ZXh0PWZ1bmN0aW9uKGUpe3ZhciB0LHI9IiIsbj0wLGk9ZS5ub2RlVHlwZTtpZihpKXtpZigxPT09
aXx8OT09PWl8fDExPT09aSl7aWYoInN0cmluZyI9PXR5cGVvZiBlLnRleHRDb250ZW50KXJldHVy
biBlLnRleHRDb250ZW50O2ZvcihlPWUuZmlyc3RDaGlsZDtlO2U9ZS5uZXh0U2libGluZylyKz1r
KGUpfWVsc2UgaWYoMz09PWl8fDQ9PT1pKXJldHVybiBlLm5vZGVWYWx1ZX1lbHNlIGZvcig7dD1l
W24rK107KXIrPWsodCk7cmV0dXJuIHJ9LHg9dC5zZWxlY3RvcnM9e2NhY2hlTGVuZ3RoOjUwLGNy
ZWF0ZVBzZXVkbzpuLG1hdGNoOnBlLGF0dHJIYW5kbGU6e30sZmluZDp7fSxyZWxhdGl2ZTp7Ij4i
OntkaXI6InBhcmVudE5vZGUiLGZpcnN0OiEwfSwiICI6e2RpcjoicGFyZW50Tm9kZSJ9LCIrIjp7
ZGlyOiJwcmV2aW91c1NpYmxpbmciLGZpcnN0OiEwfSwifiI6e2RpcjoicHJldmlvdXNTaWJsaW5n
In19LHByZUZpbHRlcjp7QVRUUjpmdW5jdGlvbihlKXtyZXR1cm4gZVsxXT1lWzFdLnJlcGxhY2Uo
X2Usd2UpLAorZVszXT0oZVszXXx8ZVs0XXx8ZVs1XXx8IiIpLnJlcGxhY2UoX2Usd2UpLCJ+PSI9
PT1lWzJdJiYoZVszXT0iICIrZVszXSsiICIpLGUuc2xpY2UoMCw0KX0sQ0hJTEQ6ZnVuY3Rpb24o
ZSl7cmV0dXJuIGVbMV09ZVsxXS50b0xvd2VyQ2FzZSgpLCJudGgiPT09ZVsxXS5zbGljZSgwLDMp
PyhlWzNdfHx0LmVycm9yKGVbMF0pLGVbNF09KyhlWzRdP2VbNV0rKGVbNl18fDEpOjIqKCJldmVu
Ij09PWVbM118fCJvZGQiPT09ZVszXSkpLGVbNV09KyhlWzddK2VbOF18fCJvZGQiPT09ZVszXSkp
OmVbM10mJnQuZXJyb3IoZVswXSksZX0sUFNFVURPOmZ1bmN0aW9uKGUpe3ZhciB0LHI9IWVbNl0m
JmVbMl07cmV0dXJuIHBlLkNISUxELnRlc3QoZVswXSk/bnVsbDooZVszXT9lWzJdPWVbNF18fGVb
NV18fCIiOnImJmZlLnRlc3QocikmJih0PUUociwhMCkpJiYodD1yLmluZGV4T2YoIikiLHIubGVu
Z3RoLXQpLXIubGVuZ3RoKSYmKGVbMF09ZVswXS5zbGljZSgwLHQpLGVbMl09ci5zbGljZSgwLHQp
KSxlLnNsaWNlKDAsMykpfX0sZmlsdGVyOntUQUc6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZXBsYWNl
KF9lLHdlKS50b0xvd2VyQ2FzZSgpO3JldHVybiIqIj09PWU/ZnVuY3Rpb24oKXtyZXR1cm4hMH06
ZnVuY3Rpb24oZSl7cmV0dXJuIGUubm9kZU5hbWUmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09
PXR9fSxDTEFTUzpmdW5jdGlvbihlKXt2YXIgdD1CW2UrIiAiXTtyZXR1cm4gdHx8KHQ9bmV3IFJl
Z0V4cCgiKF58IityZSsiKSIrZSsiKCIrcmUrInwkKSIpKSYmQihlLGZ1bmN0aW9uKGUpe3JldHVy
biB0LnRlc3QoInN0cmluZyI9PXR5cGVvZiBlLmNsYXNzTmFtZSYmZS5jbGFzc05hbWV8fCJ1bmRl
ZmluZWQiIT10eXBlb2YgZS5nZXRBdHRyaWJ1dGUmJmUuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwi
Iil9KX0sQVRUUjpmdW5jdGlvbihlLHIsbil7cmV0dXJuIGZ1bmN0aW9uKGkpe3ZhciBvPXQuYXR0
cihpLGUpO3JldHVybiBudWxsPT1vPyIhPSI9PT1yOiFyfHwobys9IiIsIj0iPT09cj9vPT09bjoi
IT0iPT09cj9vIT09bjoiXj0iPT09cj9uJiYwPT09by5pbmRleE9mKG4pOiIqPSI9PT1yP24mJm8u
aW5kZXhPZihuKT4tMToiJD0iPT09cj9uJiZvLnNsaWNlKC1uLmxlbmd0aCk9PT1uOiJ+PSI9PT1y
PygiICIrby5yZXBsYWNlKGFlLCIgIikrIiAiKS5pbmRleE9mKG4pPi0xOiJ8PSI9PT1yJiYobz09
PW58fG8uc2xpY2UoMCxuLmxlbmd0aCsxKT09PW4rIi0iKSl9fSxDSElMRDpmdW5jdGlvbihlLHQs
cixuLGkpe3ZhciBvPSJudGgiIT09ZS5zbGljZSgwLDMpLGE9Imxhc3QiIT09ZS5zbGljZSgtNCks
cz0ib2YtdHlwZSI9PT10O3JldHVybiAxPT09biYmMD09PWk/ZnVuY3Rpb24oZSl7cmV0dXJuISFl
LnBhcmVudE5vZGV9OmZ1bmN0aW9uKHQscix1KXt2YXIgbCxjLGYsZCxwLGgsbT1vIT09YT8ibmV4
dFNpYmxpbmciOiJwcmV2aW91c1NpYmxpbmciLHY9dC5wYXJlbnROb2RlLGI9cyYmdC5ub2RlTmFt
ZS50b0xvd2VyQ2FzZSgpLGc9IXUmJiFzLHk9ITE7aWYodil7aWYobyl7Zm9yKDttOyl7Zm9yKGQ9
dDtkPWRbbV07KWlmKHM/ZC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09YjoxPT09ZC5ub2RlVHlw
ZSlyZXR1cm4hMTtoPW09Im9ubHkiPT09ZSYmIWgmJiJuZXh0U2libGluZyJ9cmV0dXJuITB9aWYo
aD1bYT92LmZpcnN0Q2hpbGQ6di5sYXN0Q2hpbGRdLGEmJmcpe2ZvcihkPXYsZj1kW0hdfHwoZFtI
XT17fSksYz1mW2QudW5pcXVlSURdfHwoZltkLnVuaXF1ZUlEXT17fSksbD1jW2VdfHxbXSxwPWxb
MF09PT1xJiZsWzFdLHk9cCYmbFsyXSxkPXAmJnYuY2hpbGROb2Rlc1twXTtkPSsrcCYmZCYmZFtt
XXx8KHk9cD0wKXx8aC5wb3AoKTspaWYoMT09PWQubm9kZVR5cGUmJisreSYmZD09PXQpe2NbZV09
W3EscCx5XTticmVha319ZWxzZSBpZihnJiYoZD10LGY9ZFtIXXx8KGRbSF09e30pLGM9ZltkLnVu
aXF1ZUlEXXx8KGZbZC51bmlxdWVJRF09e30pLGw9Y1tlXXx8W10scD1sWzBdPT09cSYmbFsxXSx5
PXApLHk9PT0hMSlmb3IoOyhkPSsrcCYmZCYmZFttXXx8KHk9cD0wKXx8aC5wb3AoKSkmJigocz9k
Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkhPT1iOjEhPT1kLm5vZGVUeXBlKXx8ISsreXx8KGcmJihm
PWRbSF18fChkW0hdPXt9KSxjPWZbZC51bmlxdWVJRF18fChmW2QudW5pcXVlSURdPXt9KSxjW2Vd
PVtxLHldKSxkIT09dCkpOyk7cmV0dXJuIHktPWkseT09PW58fHklbj09PTAmJnkvbj49MH19fSxQ
U0VVRE86ZnVuY3Rpb24oZSxyKXt2YXIgaSxvPXgucHNldWRvc1tlXXx8eC5zZXRGaWx0ZXJzW2Uu
dG9Mb3dlckNhc2UoKV18fHQuZXJyb3IoInVuc3VwcG9ydGVkIHBzZXVkbzogIitlKTtyZXR1cm4g
b1tIXT9vKHIpOm8ubGVuZ3RoPjE/KGk9W2UsZSwiIixyXSx4LnNldEZpbHRlcnMuaGFzT3duUHJv
cGVydHkoZS50b0xvd2VyQ2FzZSgpKT9uKGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuLGk9byhlLHIp
LGE9aS5sZW5ndGg7YS0tOyluPWVlKGUsaVthXSksZVtuXT0hKHRbbl09aVthXSl9KTpmdW5jdGlv
bihlKXtyZXR1cm4gbyhlLDAsaSl9KTpvfX0scHNldWRvczp7bm90Om4oZnVuY3Rpb24oZSl7dmFy
IHQ9W10scj1bXSxpPU8oZS5yZXBsYWNlKHNlLCIkMSIpKTtyZXR1cm4gaVtIXT9uKGZ1bmN0aW9u
KGUsdCxyLG4pe2Zvcih2YXIgbyxhPWkoZSxudWxsLG4sW10pLHM9ZS5sZW5ndGg7cy0tOykobz1h
W3NdKSYmKGVbc109ISh0W3NdPW8pKX0pOmZ1bmN0aW9uKGUsbixvKXtyZXR1cm4gdFswXT1lLGko
dCxudWxsLG8sciksdFswXT1udWxsLCFyLnBvcCgpfX0pLGhhczpuKGZ1bmN0aW9uKGUpe3JldHVy
biBmdW5jdGlvbihyKXtyZXR1cm4gdChlLHIpLmxlbmd0aD4wfX0pLGNvbnRhaW5zOm4oZnVuY3Rp
b24oZSl7cmV0dXJuIGU9ZS5yZXBsYWNlKF9lLHdlKSxmdW5jdGlvbih0KXtyZXR1cm4odC50ZXh0
Q29udGVudHx8dC5pbm5lclRleHR8fGsodCkpLmluZGV4T2YoZSk+LTF9fSksbGFuZzpuKGZ1bmN0
aW9uKGUpe3JldHVybiBkZS50ZXN0KGV8fCIiKXx8dC5lcnJvcigidW5zdXBwb3J0ZWQgbGFuZzog
IitlKSxlPWUucmVwbGFjZShfZSx3ZSkudG9Mb3dlckNhc2UoKSxmdW5jdGlvbih0KXt2YXIgcjtk
byBpZihyPUw/dC5sYW5nOnQuZ2V0QXR0cmlidXRlKCJ4bWw6bGFuZyIpfHx0LmdldEF0dHJpYnV0
ZSgibGFuZyIpKXJldHVybiByPXIudG9Mb3dlckNhc2UoKSxyPT09ZXx8MD09PXIuaW5kZXhPZihl
KyItIik7d2hpbGUoKHQ9dC5wYXJlbnROb2RlKSYmMT09PXQubm9kZVR5cGUpO3JldHVybiExfX0p
LHRhcmdldDpmdW5jdGlvbih0KXt2YXIgcj1lLmxvY2F0aW9uJiZlLmxvY2F0aW9uLmhhc2g7cmV0
dXJuIHImJnIuc2xpY2UoMSk9PT10LmlkfSxyb290OmZ1bmN0aW9uKGUpe3JldHVybiBlPT09Un0s
Zm9jdXM6ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT1qLmFjdGl2ZUVsZW1lbnQmJighai5oYXNGb2N1
c3x8ai5oYXNGb2N1cygpKSYmISEoZS50eXBlfHxlLmhyZWZ8fH5lLnRhYkluZGV4KX0sZW5hYmxl
ZDpmdW5jdGlvbihlKXtyZXR1cm4gZS5kaXNhYmxlZD09PSExfSxkaXNhYmxlZDpmdW5jdGlvbihl
KXtyZXR1cm4gZS5kaXNhYmxlZD09PSEwfSxjaGVja2VkOmZ1bmN0aW9uKGUpe3ZhciB0PWUubm9k
ZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4iaW5wdXQiPT09dCYmISFlLmNoZWNrZWR8fCJvcHRp
b24iPT09dCYmISFlLnNlbGVjdGVkfSxzZWxlY3RlZDpmdW5jdGlvbihlKXtyZXR1cm4gZS5wYXJl
bnROb2RlJiZlLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCxlLnNlbGVjdGVkPT09ITB9LGVtcHR5
OmZ1bmN0aW9uKGUpe2ZvcihlPWUuZmlyc3RDaGlsZDtlO2U9ZS5uZXh0U2libGluZylpZihlLm5v
ZGVUeXBlPDYpcmV0dXJuITE7cmV0dXJuITB9LHBhcmVudDpmdW5jdGlvbihlKXtyZXR1cm4heC5w
c2V1ZG9zLmVtcHR5KGUpfSxoZWFkZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIG1lLnRlc3QoZS5ub2Rl
TmFtZSl9LGlucHV0OmZ1bmN0aW9uKGUpe3JldHVybiBoZS50ZXN0KGUubm9kZU5hbWUpfSxidXR0
b246ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiJpbnB1
dCI9PT10JiYiYnV0dG9uIj09PWUudHlwZXx8ImJ1dHRvbiI9PT10fSx0ZXh0OmZ1bmN0aW9uKGUp
e3ZhciB0O3JldHVybiJpbnB1dCI9PT1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkmJiJ0ZXh0Ij09
PWUudHlwZSYmKG51bGw9PSh0PWUuZ2V0QXR0cmlidXRlKCJ0eXBlIikpfHwidGV4dCI9PT10LnRv
TG93ZXJDYXNlKCkpfSxmaXJzdDpsKGZ1bmN0aW9uKCl7cmV0dXJuWzBdfSksbGFzdDpsKGZ1bmN0
aW9uKGUsdCl7cmV0dXJuW3QtMV19KSxlcTpsKGZ1bmN0aW9uKGUsdCxyKXtyZXR1cm5bcjwwP3Ir
dDpyXX0pLGV2ZW46bChmdW5jdGlvbihlLHQpe2Zvcih2YXIgcj0wO3I8dDtyKz0yKWUucHVzaChy
KTtyZXR1cm4gZX0pLG9kZDpsKGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPTE7cjx0O3IrPTIpZS5w
dXNoKHIpO3JldHVybiBlfSksbHQ6bChmdW5jdGlvbihlLHQscil7Zm9yKHZhciBuPXI8MD9yK3Q6
cjstLW4+PTA7KWUucHVzaChuKTtyZXR1cm4gZX0pLGd0OmwoZnVuY3Rpb24oZSx0LHIpe2Zvcih2
YXIgbj1yPDA/cit0OnI7KytuPHQ7KWUucHVzaChuKTtyZXR1cm4gZX0pfX0seC5wc2V1ZG9zLm50
aD14LnBzZXVkb3MuZXE7Zm9yKF8gaW57cmFkaW86ITAsY2hlY2tib3g6ITAsZmlsZTohMCxwYXNz
d29yZDohMCxpbWFnZTohMH0peC5wc2V1ZG9zW19dPXMoXyk7Zm9yKF8gaW57c3VibWl0OiEwLHJl
c2V0OiEwfSl4LnBzZXVkb3NbX109dShfKTtyZXR1cm4gZi5wcm90b3R5cGU9eC5maWx0ZXJzPXgu
cHNldWRvcyx4LnNldEZpbHRlcnM9bmV3IGYsRT10LnRva2VuaXplPWZ1bmN0aW9uKGUscil7dmFy
IG4saSxvLGEscyx1LGwsYz1VW2UrIiAiXTtpZihjKXJldHVybiByPzA6Yy5zbGljZSgwKTtmb3Io
cz1lLHU9W10sbD14LnByZUZpbHRlcjtzOyl7biYmIShpPXVlLmV4ZWMocykpfHwoaSYmKHM9cy5z
bGljZShpWzBdLmxlbmd0aCl8fHMpLHUucHVzaChvPVtdKSksbj0hMSwoaT1sZS5leGVjKHMpKSYm
KG49aS5zaGlmdCgpLG8ucHVzaCh7dmFsdWU6bix0eXBlOmlbMF0ucmVwbGFjZShzZSwiICIpfSks
cz1zLnNsaWNlKG4ubGVuZ3RoKSk7Zm9yKGEgaW4geC5maWx0ZXIpIShpPXBlW2FdLmV4ZWMocykp
fHxsW2FdJiYhKGk9bFthXShpKSl8fChuPWkuc2hpZnQoKSxvLnB1c2goe3ZhbHVlOm4sdHlwZTph
LG1hdGNoZXM6aX0pLHM9cy5zbGljZShuLmxlbmd0aCkpO2lmKCFuKWJyZWFrfXJldHVybiByP3Mu
bGVuZ3RoOnM/dC5lcnJvcihlKTpVKGUsdSkuc2xpY2UoMCl9LE89dC5jb21waWxlPWZ1bmN0aW9u
KGUsdCl7dmFyIHIsbj1bXSxpPVtdLG89V1tlKyIgIl07aWYoIW8pe2Zvcih0fHwodD1FKGUpKSxy
PXQubGVuZ3RoO3ItLTspbz1nKHRbcl0pLG9bSF0/bi5wdXNoKG8pOmkucHVzaChvKTtvPVcoZSx5
KGksbikpLG8uc2VsZWN0b3I9ZX1yZXR1cm4gb30sVD10LnNlbGVjdD1mdW5jdGlvbihlLHQscixu
KXt2YXIgaSxvLGEscyx1LGw9ImZ1bmN0aW9uIj09dHlwZW9mIGUmJmUsZj0hbiYmRShlPWwuc2Vs
ZWN0b3J8fGUpO2lmKHI9cnx8W10sMT09PWYubGVuZ3RoKXtpZihvPWZbMF09ZlswXS5zbGljZSgw
KSxvLmxlbmd0aD4yJiYiSUQiPT09KGE9b1swXSkudHlwZSYmdy5nZXRCeUlkJiY5PT09dC5ub2Rl
VHlwZSYmTCYmeC5yZWxhdGl2ZVtvWzFdLnR5cGVdKXtpZih0PSh4LmZpbmQuSUQoYS5tYXRjaGVz
WzBdLnJlcGxhY2UoX2Usd2UpLHQpfHxbXSlbMF0sIXQpcmV0dXJuIHI7bCYmKHQ9dC5wYXJlbnRO
b2RlKSxlPWUuc2xpY2Uoby5zaGlmdCgpLnZhbHVlLmxlbmd0aCl9Zm9yKGk9cGUubmVlZHNDb250
ZXh0LnRlc3QoZSk/MDpvLmxlbmd0aDtpLS0mJihhPW9baV0sIXgucmVsYXRpdmVbcz1hLnR5cGVd
KTspaWYoKHU9eC5maW5kW3NdKSYmKG49dShhLm1hdGNoZXNbMF0ucmVwbGFjZShfZSx3ZSksZ2Uu
dGVzdChvWzBdLnR5cGUpJiZjKHQucGFyZW50Tm9kZSl8fHQpKSl7aWYoby5zcGxpY2UoaSwxKSxl
PW4ubGVuZ3RoJiZkKG8pLCFlKXJldHVybiBKLmFwcGx5KHIsbikscjticmVha319cmV0dXJuKGx8
fE8oZSxmKSkobix0LCFMLHIsIXR8fGdlLnRlc3QoZSkmJmModC5wYXJlbnROb2RlKXx8dCkscn0s
dy5zb3J0U3RhYmxlPUguc3BsaXQoIiIpLnNvcnQoJCkuam9pbigiIik9PT1ILHcuZGV0ZWN0RHVw
bGljYXRlcz0hIUEsUCgpLHcuc29ydERldGFjaGVkPWkoZnVuY3Rpb24oZSl7cmV0dXJuIDEmZS5j
b21wYXJlRG9jdW1lbnRQb3NpdGlvbihqLmNyZWF0ZUVsZW1lbnQoImRpdiIpKX0pLGkoZnVuY3Rp
b24oZSl7cmV0dXJuIGUuaW5uZXJIVE1MPSI8YSBocmVmPScjJz48L2E+IiwiIyI9PT1lLmZpcnN0
Q2hpbGQuZ2V0QXR0cmlidXRlKCJocmVmIil9KXx8bygidHlwZXxocmVmfGhlaWdodHx3aWR0aCIs
ZnVuY3Rpb24oZSx0LHIpe2lmKCFyKXJldHVybiBlLmdldEF0dHJpYnV0ZSh0LCJ0eXBlIj09PXQu
dG9Mb3dlckNhc2UoKT8xOjIpfSksdy5hdHRyaWJ1dGVzJiZpKGZ1bmN0aW9uKGUpe3JldHVybiBl
LmlubmVySFRNTD0iPGlucHV0Lz4iLGUuZmlyc3RDaGlsZC5zZXRBdHRyaWJ1dGUoInZhbHVlIiwi
IiksIiI9PT1lLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpfSl8fG8oInZhbHVlIixm
dW5jdGlvbihlLHQscil7aWYoIXImJiJpbnB1dCI9PT1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkp
cmV0dXJuIGUuZGVmYXVsdFZhbHVlfSksaShmdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZS5nZXRB
dHRyaWJ1dGUoImRpc2FibGVkIil9KXx8byh0ZSxmdW5jdGlvbihlLHQscil7dmFyIG47aWYoIXIp
cmV0dXJuIGVbdF09PT0hMD90LnRvTG93ZXJDYXNlKCk6KG49ZS5nZXRBdHRyaWJ1dGVOb2RlKHQp
KSYmbi5zcGVjaWZpZWQ/bi52YWx1ZTpudWxsfSksdH0oZSk7b2UuZmluZD1jZSxvZS5leHByPWNl
LnNlbGVjdG9ycyxvZS5leHByWyI6Il09b2UuZXhwci5wc2V1ZG9zLG9lLnVuaXF1ZVNvcnQ9b2Uu
dW5pcXVlPWNlLnVuaXF1ZVNvcnQsb2UudGV4dD1jZS5nZXRUZXh0LG9lLmlzWE1MRG9jPWNlLmlz
WE1MLG9lLmNvbnRhaW5zPWNlLmNvbnRhaW5zO3ZhciBmZT1mdW5jdGlvbihlLHQscil7Zm9yKHZh
ciBuPVtdLGk9dm9pZCAwIT09cjsoZT1lW3RdKSYmOSE9PWUubm9kZVR5cGU7KWlmKDE9PT1lLm5v
ZGVUeXBlKXtpZihpJiZvZShlKS5pcyhyKSlicmVhaztuLnB1c2goZSl9cmV0dXJuIG59LGRlPWZ1
bmN0aW9uKGUsdCl7Zm9yKHZhciByPVtdO2U7ZT1lLm5leHRTaWJsaW5nKTE9PT1lLm5vZGVUeXBl
JiZlIT09dCYmci5wdXNoKGUpO3JldHVybiByfSxwZT1vZS5leHByLm1hdGNoLm5lZWRzQ29udGV4
dCxoZT0vXjwoW1x3LV0rKVxzKlwvPz4oPzo8XC9cMT58KSQvLG1lPS9eLlteOiNcW1wuLF0qJC87
b2UuZmlsdGVyPWZ1bmN0aW9uKGUsdCxyKXt2YXIgbj10WzBdO3JldHVybiByJiYoZT0iOm5vdCgi
K2UrIikiKSwxPT09dC5sZW5ndGgmJjE9PT1uLm5vZGVUeXBlP29lLmZpbmQubWF0Y2hlc1NlbGVj
dG9yKG4sZSk/W25dOltdOm9lLmZpbmQubWF0Y2hlcyhlLG9lLmdyZXAodCxmdW5jdGlvbihlKXty
ZXR1cm4gMT09PWUubm9kZVR5cGV9KSl9LG9lLmZuLmV4dGVuZCh7ZmluZDpmdW5jdGlvbihlKXt2
YXIgdCxyPXRoaXMubGVuZ3RoLG49W10saT10aGlzO2lmKCJzdHJpbmciIT10eXBlb2YgZSlyZXR1
cm4gdGhpcy5wdXNoU3RhY2sob2UoZSkuZmlsdGVyKGZ1bmN0aW9uKCl7Zm9yKHQ9MDt0PHI7dCsr
KWlmKG9lLmNvbnRhaW5zKGlbdF0sdGhpcykpcmV0dXJuITB9KSk7Zm9yKHQ9MDt0PHI7dCsrKW9l
LmZpbmQoZSxpW3RdLG4pO3JldHVybiBuPXRoaXMucHVzaFN0YWNrKHI+MT9vZS51bmlxdWUobik6
biksbi5zZWxlY3Rvcj10aGlzLnNlbGVjdG9yP3RoaXMuc2VsZWN0b3IrIiAiK2U6ZSxufSxmaWx0
ZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKG4odGhpcyxlfHxbXSwhMSkpfSxu
b3Q6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKG4odGhpcyxlfHxbXSwhMCkpfSxp
czpmdW5jdGlvbihlKXtyZXR1cm4hIW4odGhpcywic3RyaW5nIj09dHlwZW9mIGUmJnBlLnRlc3Qo
ZSk/b2UoZSk6ZXx8W10sITEpLmxlbmd0aH19KTt2YXIgdmUsYmU9L14oPzpccyooPFtcd1xXXSs+
KVtePl0qfCMoW1x3LV0qKSkkLyxnZT1vZS5mbi5pbml0PWZ1bmN0aW9uKGUsdCxyKXt2YXIgbixp
O2lmKCFlKXJldHVybiB0aGlzO2lmKHI9cnx8dmUsInN0cmluZyI9PXR5cGVvZiBlKXtpZihuPSI8
Ij09PWVbMF0mJiI+Ij09PWVbZS5sZW5ndGgtMV0mJmUubGVuZ3RoPj0zP1tudWxsLGUsbnVsbF06
YmUuZXhlYyhlKSwhbnx8IW5bMV0mJnQpcmV0dXJuIXR8fHQuanF1ZXJ5Pyh0fHxyKS5maW5kKGUp
OnRoaXMuY29uc3RydWN0b3IodCkuZmluZChlKTtpZihuWzFdKXtpZih0PXQgaW5zdGFuY2VvZiBv
ZT90WzBdOnQsb2UubWVyZ2UodGhpcyxvZS5wYXJzZUhUTUwoblsxXSx0JiZ0Lm5vZGVUeXBlP3Qu
b3duZXJEb2N1bWVudHx8dDpHLCEwKSksaGUudGVzdChuWzFdKSYmb2UuaXNQbGFpbk9iamVjdCh0
KSlmb3IobiBpbiB0KW9lLmlzRnVuY3Rpb24odGhpc1tuXSk/dGhpc1tuXSh0W25dKTp0aGlzLmF0
dHIobix0W25dKTtyZXR1cm4gdGhpc31yZXR1cm4gaT1HLmdldEVsZW1lbnRCeUlkKG5bMl0pLGkm
JmkucGFyZW50Tm9kZSYmKHRoaXMubGVuZ3RoPTEsdGhpc1swXT1pKSx0aGlzLmNvbnRleHQ9Ryx0
aGlzLnNlbGVjdG9yPWUsdGhpc31yZXR1cm4gZS5ub2RlVHlwZT8odGhpcy5jb250ZXh0PXRoaXNb
MF09ZSx0aGlzLmxlbmd0aD0xLHRoaXMpOm9lLmlzRnVuY3Rpb24oZSk/dm9pZCAwIT09ci5yZWFk
eT9yLnJlYWR5KGUpOmUob2UpOih2b2lkIDAhPT1lLnNlbGVjdG9yJiYodGhpcy5zZWxlY3Rvcj1l
LnNlbGVjdG9yLHRoaXMuY29udGV4dD1lLmNvbnRleHQpLG9lLm1ha2VBcnJheShlLHRoaXMpKX07
Z2UucHJvdG90eXBlPW9lLmZuLHZlPW9lKEcpO3ZhciB5ZT0vXig/OnBhcmVudHN8cHJldig/OlVu
dGlsfEFsbCkpLyxfZT17Y2hpbGRyZW46ITAsY29udGVudHM6ITAsbmV4dDohMCxwcmV2OiEwfTtv
ZS5mbi5leHRlbmQoe2hhczpmdW5jdGlvbihlKXt2YXIgdD1vZShlLHRoaXMpLHI9dC5sZW5ndGg7
cmV0dXJuIHRoaXMuZmlsdGVyKGZ1bmN0aW9uKCl7Zm9yKHZhciBlPTA7ZTxyO2UrKylpZihvZS5j
b250YWlucyh0aGlzLHRbZV0pKXJldHVybiEwfSl9LGNsb3Nlc3Q6ZnVuY3Rpb24oZSx0KXtmb3Io
dmFyIHIsbj0wLGk9dGhpcy5sZW5ndGgsbz1bXSxhPXBlLnRlc3QoZSl8fCJzdHJpbmciIT10eXBl
b2YgZT9vZShlLHR8fHRoaXMuY29udGV4dCk6MDtuPGk7bisrKWZvcihyPXRoaXNbbl07ciYmciE9
PXQ7cj1yLnBhcmVudE5vZGUpaWYoci5ub2RlVHlwZTwxMSYmKGE/YS5pbmRleChyKT4tMToxPT09
ci5ub2RlVHlwZSYmb2UuZmluZC5tYXRjaGVzU2VsZWN0b3IocixlKSkpe28ucHVzaChyKTticmVh
a31yZXR1cm4gdGhpcy5wdXNoU3RhY2soby5sZW5ndGg+MT9vZS51bmlxdWVTb3J0KG8pOm8pfSxp
bmRleDpmdW5jdGlvbihlKXtyZXR1cm4gZT8ic3RyaW5nIj09dHlwZW9mIGU/Wi5jYWxsKG9lKGUp
LHRoaXNbMF0pOlouY2FsbCh0aGlzLGUuanF1ZXJ5P2VbMF06ZSk6dGhpc1swXSYmdGhpc1swXS5w
YXJlbnROb2RlP3RoaXMuZmlyc3QoKS5wcmV2QWxsKCkubGVuZ3RoOi0xfSxhZGQ6ZnVuY3Rpb24o
ZSx0KXtyZXR1cm4gdGhpcy5wdXNoU3RhY2sob2UudW5pcXVlU29ydChvZS5tZXJnZSh0aGlzLmdl
dCgpLG9lKGUsdCkpKSl9LGFkZEJhY2s6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuYWRkKG51bGw9
PWU/dGhpcy5wcmV2T2JqZWN0OnRoaXMucHJldk9iamVjdC5maWx0ZXIoZSkpfX0pLG9lLmVhY2go
e3BhcmVudDpmdW5jdGlvbihlKXt2YXIgdD1lLnBhcmVudE5vZGU7cmV0dXJuIHQmJjExIT09dC5u
b2RlVHlwZT90Om51bGx9LHBhcmVudHM6ZnVuY3Rpb24oZSl7cmV0dXJuIGZlKGUsInBhcmVudE5v
ZGUiKX0scGFyZW50c1VudGlsOmZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZmUoZSwicGFyZW50Tm9k
ZSIscil9LG5leHQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGkoZSwibmV4dFNpYmxpbmciKX0scHJldjpm
dW5jdGlvbihlKXtyZXR1cm4gaShlLCJwcmV2aW91c1NpYmxpbmciKX0sbmV4dEFsbDpmdW5jdGlv
bihlKXtyZXR1cm4gZmUoZSwibmV4dFNpYmxpbmciKX0scHJldkFsbDpmdW5jdGlvbihlKXtyZXR1
cm4gZmUoZSwicHJldmlvdXNTaWJsaW5nIil9LG5leHRVbnRpbDpmdW5jdGlvbihlLHQscil7cmV0
dXJuIGZlKGUsIm5leHRTaWJsaW5nIixyKX0scHJldlVudGlsOmZ1bmN0aW9uKGUsdCxyKXtyZXR1
cm4gZmUoZSwicHJldmlvdXNTaWJsaW5nIixyKX0sc2libGluZ3M6ZnVuY3Rpb24oZSl7cmV0dXJu
IGRlKChlLnBhcmVudE5vZGV8fHt9KS5maXJzdENoaWxkLGUpfSxjaGlsZHJlbjpmdW5jdGlvbihl
KXtyZXR1cm4gZGUoZS5maXJzdENoaWxkKX0sY29udGVudHM6ZnVuY3Rpb24oZSl7cmV0dXJuIGUu
Y29udGVudERvY3VtZW50fHxvZS5tZXJnZShbXSxlLmNoaWxkTm9kZXMpfX0sZnVuY3Rpb24oZSx0
KXtvZS5mbltlXT1mdW5jdGlvbihyLG4pe3ZhciBpPW9lLm1hcCh0aGlzLHQscik7cmV0dXJuIlVu
dGlsIiE9PWUuc2xpY2UoLTUpJiYobj1yKSxuJiYic3RyaW5nIj09dHlwZW9mIG4mJihpPW9lLmZp
bHRlcihuLGkpKSx0aGlzLmxlbmd0aD4xJiYoX2VbZV18fG9lLnVuaXF1ZVNvcnQoaSkseWUudGVz
dChlKSYmaS5yZXZlcnNlKCkpLHRoaXMucHVzaFN0YWNrKGkpfX0pO3ZhciB3ZT0vXFMrL2c7b2Uu
Q2FsbGJhY2tzPWZ1bmN0aW9uKGUpe2U9InN0cmluZyI9PXR5cGVvZiBlP28oZSk6b2UuZXh0ZW5k
KHt9LGUpO3ZhciB0LHIsbixpLGE9W10scz1bXSx1PS0xLGw9ZnVuY3Rpb24oKXtmb3IoaT1lLm9u
Y2Usbj10PSEwO3MubGVuZ3RoO3U9LTEpZm9yKHI9cy5zaGlmdCgpOysrdTxhLmxlbmd0aDspYVt1
XS5hcHBseShyWzBdLHJbMV0pPT09ITEmJmUuc3RvcE9uRmFsc2UmJih1PWEubGVuZ3RoLHI9ITEp
O2UubWVtb3J5fHwocj0hMSksdD0hMSxpJiYoYT1yP1tdOiIiKX0sYz17YWRkOmZ1bmN0aW9uKCl7
cmV0dXJuIGEmJihyJiYhdCYmKHU9YS5sZW5ndGgtMSxzLnB1c2gocikpLGZ1bmN0aW9uIHQocil7
b2UuZWFjaChyLGZ1bmN0aW9uKHIsbil7b2UuaXNGdW5jdGlvbihuKT9lLnVuaXF1ZSYmYy5oYXMo
bil8fGEucHVzaChuKTpuJiZuLmxlbmd0aCYmInN0cmluZyIhPT1vZS50eXBlKG4pJiZ0KG4pfSl9
KGFyZ3VtZW50cyksciYmIXQmJmwoKSksdGhpc30scmVtb3ZlOmZ1bmN0aW9uKCl7cmV0dXJuIG9l
LmVhY2goYXJndW1lbnRzLGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByOyhyPW9lLmluQXJyYXkodCxh
LHIpKT4tMTspYS5zcGxpY2UociwxKSxyPD11JiZ1LS19KSx0aGlzfSxoYXM6ZnVuY3Rpb24oZSl7
cmV0dXJuIGU/b2UuaW5BcnJheShlLGEpPi0xOmEubGVuZ3RoPjB9LGVtcHR5OmZ1bmN0aW9uKCl7
cmV0dXJuIGEmJihhPVtdKSx0aGlzfSxkaXNhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIGk9cz1bXSxh
PXI9IiIsdGhpc30sZGlzYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hYX0sbG9jazpmdW5jdGlvbigp
e3JldHVybiBpPXM9W10scnx8KGE9cj0iIiksdGhpc30sbG9ja2VkOmZ1bmN0aW9uKCl7cmV0dXJu
ISFpfSxmaXJlV2l0aDpmdW5jdGlvbihlLHIpe3JldHVybiBpfHwocj1yfHxbXSxyPVtlLHIuc2xp
Y2U/ci5zbGljZSgpOnJdLHMucHVzaChyKSx0fHxsKCkpLHRoaXN9LGZpcmU6ZnVuY3Rpb24oKXty
ZXR1cm4gYy5maXJlV2l0aCh0aGlzLGFyZ3VtZW50cyksdGhpc30sZmlyZWQ6ZnVuY3Rpb24oKXty
ZXR1cm4hIW59fTtyZXR1cm4gY30sb2UuZXh0ZW5kKHtEZWZlcnJlZDpmdW5jdGlvbihlKXt2YXIg
dD1bWyJyZXNvbHZlIiwiZG9uZSIsb2UuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLCJyZXNvbHZl
ZCJdLFsicmVqZWN0IiwiZmFpbCIsb2UuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLCJyZWplY3Rl
ZCJdLFsibm90aWZ5IiwicHJvZ3Jlc3MiLG9lLkNhbGxiYWNrcygibWVtb3J5IildXSxyPSJwZW5k
aW5nIixuPXtzdGF0ZTpmdW5jdGlvbigpe3JldHVybiByfSxhbHdheXM6ZnVuY3Rpb24oKXtyZXR1
cm4gaS5kb25lKGFyZ3VtZW50cykuZmFpbChhcmd1bWVudHMpLHRoaXN9LHRoZW46ZnVuY3Rpb24o
KXt2YXIgZT1hcmd1bWVudHM7cmV0dXJuIG9lLkRlZmVycmVkKGZ1bmN0aW9uKHIpe29lLmVhY2go
dCxmdW5jdGlvbih0LG8pe3ZhciBhPW9lLmlzRnVuY3Rpb24oZVt0XSkmJmVbdF07aVtvWzFdXShm
dW5jdGlvbigpe3ZhciBlPWEmJmEuYXBwbHkodGhpcyxhcmd1bWVudHMpO2UmJm9lLmlzRnVuY3Rp
b24oZS5wcm9taXNlKT9lLnByb21pc2UoKS5wcm9ncmVzcyhyLm5vdGlmeSkuZG9uZShyLnJlc29s
dmUpLmZhaWwoci5yZWplY3QpOnJbb1swXSsiV2l0aCJdKHRoaXM9PT1uP3IucHJvbWlzZSgpOnRo
aXMsYT9bZV06YXJndW1lbnRzKX0pfSksZT1udWxsfSkucHJvbWlzZSgpfSxwcm9taXNlOmZ1bmN0
aW9uKGUpe3JldHVybiBudWxsIT1lP29lLmV4dGVuZChlLG4pOm59fSxpPXt9O3JldHVybiBuLnBp
cGU9bi50aGVuLG9lLmVhY2godCxmdW5jdGlvbihlLG8pe3ZhciBhPW9bMl0scz1vWzNdO25bb1sx
XV09YS5hZGQscyYmYS5hZGQoZnVuY3Rpb24oKXtyPXN9LHRbMV5lXVsyXS5kaXNhYmxlLHRbMl1b
Ml0ubG9jayksaVtvWzBdXT1mdW5jdGlvbigpe3JldHVybiBpW29bMF0rIldpdGgiXSh0aGlzPT09
aT9uOnRoaXMsYXJndW1lbnRzKSx0aGlzfSxpW29bMF0rIldpdGgiXT1hLmZpcmVXaXRofSksbi5w
cm9taXNlKGkpLGUmJmUuY2FsbChpLGkpLGl9LHdoZW46ZnVuY3Rpb24oZSl7dmFyIHQscixuLGk9
MCxvPVkuY2FsbChhcmd1bWVudHMpLGE9by5sZW5ndGgscz0xIT09YXx8ZSYmb2UuaXNGdW5jdGlv
bihlLnByb21pc2UpP2E6MCx1PTE9PT1zP2U6b2UuRGVmZXJyZWQoKSxsPWZ1bmN0aW9uKGUscixu
KXtyZXR1cm4gZnVuY3Rpb24oaSl7cltlXT10aGlzLG5bZV09YXJndW1lbnRzLmxlbmd0aD4xP1ku
Y2FsbChhcmd1bWVudHMpOmksbj09PXQ/dS5ub3RpZnlXaXRoKHIsbik6LS1zfHx1LnJlc29sdmVX
aXRoKHIsbil9fTtpZihhPjEpZm9yKHQ9bmV3IEFycmF5KGEpLHI9bmV3IEFycmF5KGEpLG49bmV3
IEFycmF5KGEpO2k8YTtpKyspb1tpXSYmb2UuaXNGdW5jdGlvbihvW2ldLnByb21pc2UpP29baV0u
cHJvbWlzZSgpLnByb2dyZXNzKGwoaSxyLHQpKS5kb25lKGwoaSxuLG8pKS5mYWlsKHUucmVqZWN0
KTotLXM7cmV0dXJuIHN8fHUucmVzb2x2ZVdpdGgobixvKSx1LnByb21pc2UoKX19KTt2YXIgeGU7
b2UuZm4ucmVhZHk9ZnVuY3Rpb24oZSl7cmV0dXJuIG9lLnJlYWR5LnByb21pc2UoKS5kb25lKGUp
LHRoaXN9LG9lLmV4dGVuZCh7aXNSZWFkeTohMSxyZWFkeVdhaXQ6MSxob2xkUmVhZHk6ZnVuY3Rp
b24oZSl7ZT9vZS5yZWFkeVdhaXQrKzpvZS5yZWFkeSghMCl9LHJlYWR5OmZ1bmN0aW9uKGUpeyhl
PT09ITA/LS1vZS5yZWFkeVdhaXQ6b2UuaXNSZWFkeSl8fChvZS5pc1JlYWR5PSEwLGUhPT0hMCYm
LS1vZS5yZWFkeVdhaXQ+MHx8KHhlLnJlc29sdmVXaXRoKEcsW29lXSksb2UuZm4udHJpZ2dlckhh
bmRsZXImJihvZShHKS50cmlnZ2VySGFuZGxlcigicmVhZHkiKSxvZShHKS5vZmYoInJlYWR5Iikp
KSl9fSksb2UucmVhZHkucHJvbWlzZT1mdW5jdGlvbih0KXtyZXR1cm4geGV8fCh4ZT1vZS5EZWZl
cnJlZCgpLCJjb21wbGV0ZSI9PT1HLnJlYWR5U3RhdGV8fCJsb2FkaW5nIiE9PUcucmVhZHlTdGF0
ZSYmIUcuZG9jdW1lbnRFbGVtZW50LmRvU2Nyb2xsP2Uuc2V0VGltZW91dChvZS5yZWFkeSk6KEcu
YWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsYSksZS5hZGRFdmVudExpc3RlbmVy
KCJsb2FkIixhKSkpLHhlLnByb21pc2UodCl9LG9lLnJlYWR5LnByb21pc2UoKTt2YXIga2U9ZnVu
Y3Rpb24oZSx0LHIsbixpLG8sYSl7dmFyIHM9MCx1PWUubGVuZ3RoLGw9bnVsbD09cjtpZigib2Jq
ZWN0Ij09PW9lLnR5cGUocikpe2k9ITA7Zm9yKHMgaW4gcilrZShlLHQscyxyW3NdLCEwLG8sYSl9
ZWxzZSBpZih2b2lkIDAhPT1uJiYoaT0hMCxvZS5pc0Z1bmN0aW9uKG4pfHwoYT0hMCksbCYmKGE/
KHQuY2FsbChlLG4pLHQ9bnVsbCk6KGw9dCx0PWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gbC5jYWxs
KG9lKGUpLHIpfSkpLHQpKWZvcig7czx1O3MrKyl0KGVbc10scixhP246bi5jYWxsKGVbc10scyx0
KGVbc10scikpKTtyZXR1cm4gaT9lOmw/dC5jYWxsKGUpOnU/dChlWzBdLHIpOm99LENlPWZ1bmN0
aW9uKGUpe3JldHVybiAxPT09ZS5ub2RlVHlwZXx8OT09PWUubm9kZVR5cGV8fCErZS5ub2RlVHlw
ZX07cy51aWQ9MSxzLnByb3RvdHlwZT17cmVnaXN0ZXI6ZnVuY3Rpb24oZSx0KXt2YXIgcj10fHx7
fTtyZXR1cm4gZS5ub2RlVHlwZT9lW3RoaXMuZXhwYW5kb109cjpPYmplY3QuZGVmaW5lUHJvcGVy
dHkoZSx0aGlzLmV4cGFuZG8se3ZhbHVlOnIsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfSks
ZVt0aGlzLmV4cGFuZG9dfSxjYWNoZTpmdW5jdGlvbihlKXtpZighQ2UoZSkpcmV0dXJue307dmFy
IHQ9ZVt0aGlzLmV4cGFuZG9dO3JldHVybiB0fHwodD17fSxDZShlKSYmKGUubm9kZVR5cGU/ZVt0
aGlzLmV4cGFuZG9dPXQ6T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdGhpcy5leHBhbmRvLHt2YWx1
ZTp0LGNvbmZpZ3VyYWJsZTohMH0pKSksdH0sc2V0OmZ1bmN0aW9uKGUsdCxyKXt2YXIgbixpPXRo
aXMuY2FjaGUoZSk7aWYoInN0cmluZyI9PXR5cGVvZiB0KWlbdF09cjtlbHNlIGZvcihuIGluIHQp
aVtuXT10W25dO3JldHVybiBpfSxnZXQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdm9pZCAwPT09dD90
aGlzLmNhY2hlKGUpOmVbdGhpcy5leHBhbmRvXSYmZVt0aGlzLmV4cGFuZG9dW3RdfSxhY2Nlc3M6
ZnVuY3Rpb24oZSx0LHIpe3ZhciBuO3JldHVybiB2b2lkIDA9PT10fHx0JiYic3RyaW5nIj09dHlw
ZW9mIHQmJnZvaWQgMD09PXI/KG49dGhpcy5nZXQoZSx0KSx2b2lkIDAhPT1uP246dGhpcy5nZXQo
ZSxvZS5jYW1lbENhc2UodCkpKToodGhpcy5zZXQoZSx0LHIpLHZvaWQgMCE9PXI/cjp0KX0scmVt
b3ZlOmZ1bmN0aW9uKGUsdCl7dmFyIHIsbixpLG89ZVt0aGlzLmV4cGFuZG9dO2lmKHZvaWQgMCE9
PW8pe2lmKHZvaWQgMD09PXQpdGhpcy5yZWdpc3RlcihlKTtlbHNle29lLmlzQXJyYXkodCk/bj10
LmNvbmNhdCh0Lm1hcChvZS5jYW1lbENhc2UpKTooaT1vZS5jYW1lbENhc2UodCksdCBpbiBvP249
W3QsaV06KG49aSxuPW4gaW4gbz9bbl06bi5tYXRjaCh3ZSl8fFtdKSkscj1uLmxlbmd0aDtmb3Io
O3ItLTspZGVsZXRlIG9bbltyXV19KHZvaWQgMD09PXR8fG9lLmlzRW1wdHlPYmplY3QobykpJiYo
ZS5ub2RlVHlwZT9lW3RoaXMuZXhwYW5kb109dm9pZCAwOmRlbGV0ZSBlW3RoaXMuZXhwYW5kb10p
fX0saGFzRGF0YTpmdW5jdGlvbihlKXt2YXIgdD1lW3RoaXMuZXhwYW5kb107cmV0dXJuIHZvaWQg
MCE9PXQmJiFvZS5pc0VtcHR5T2JqZWN0KHQpfX07dmFyIEVlPW5ldyBzLE9lPW5ldyBzLFRlPS9e
KD86XHtbXHdcV10qXH18XFtbXHdcV10qXF0pJC8sTmU9L1tBLVpdL2c7b2UuZXh0ZW5kKHtoYXNE
YXRhOmZ1bmN0aW9uKGUpe3JldHVybiBPZS5oYXNEYXRhKGUpfHxFZS5oYXNEYXRhKGUpfSxkYXRh
OmZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gT2UuYWNjZXNzKGUsdCxyKX0scmVtb3ZlRGF0YTpmdW5j
dGlvbihlLHQpe09lLnJlbW92ZShlLHQpfSxfZGF0YTpmdW5jdGlvbihlLHQscil7cmV0dXJuIEVl
LmFjY2VzcyhlLHQscil9LF9yZW1vdmVEYXRhOmZ1bmN0aW9uKGUsdCl7RWUucmVtb3ZlKGUsdCl9
fSksb2UuZm4uZXh0ZW5kKHtkYXRhOmZ1bmN0aW9uKGUsdCl7dmFyIHIsbixpLG89dGhpc1swXSxh
PW8mJm8uYXR0cmlidXRlcztpZih2b2lkIDA9PT1lKXtpZih0aGlzLmxlbmd0aCYmKGk9T2UuZ2V0
KG8pLDE9PT1vLm5vZGVUeXBlJiYhRWUuZ2V0KG8sImhhc0RhdGFBdHRycyIpKSl7Zm9yKHI9YS5s
ZW5ndGg7ci0tOylhW3JdJiYobj1hW3JdLm5hbWUsMD09PW4uaW5kZXhPZigiZGF0YS0iKSYmKG49
b2UuY2FtZWxDYXNlKG4uc2xpY2UoNSkpLHUobyxuLGlbbl0pKSk7RWUuc2V0KG8sImhhc0RhdGFB
dHRycyIsITApfXJldHVybiBpfXJldHVybiJvYmplY3QiPT10eXBlb2YgZT90aGlzLmVhY2goZnVu
Y3Rpb24oKXtPZS5zZXQodGhpcyxlKX0pOmtlKHRoaXMsZnVuY3Rpb24odCl7dmFyIHIsbjtpZihv
JiZ2b2lkIDA9PT10KXtpZihyPU9lLmdldChvLGUpfHxPZS5nZXQobyxlLnJlcGxhY2UoTmUsIi0k
JiIpLnRvTG93ZXJDYXNlKCkpLHZvaWQgMCE9PXIpcmV0dXJuIHI7aWYobj1vZS5jYW1lbENhc2Uo
ZSkscj1PZS5nZXQobyxuKSx2b2lkIDAhPT1yKXJldHVybiByO2lmKHI9dShvLG4sdm9pZCAwKSx2
b2lkIDAhPT1yKXJldHVybiByfWVsc2Ugbj1vZS5jYW1lbENhc2UoZSksdGhpcy5lYWNoKGZ1bmN0
aW9uKCl7dmFyIHI9T2UuZ2V0KHRoaXMsbik7T2Uuc2V0KHRoaXMsbix0KSxlLmluZGV4T2YoIi0i
KT4tMSYmdm9pZCAwIT09ciYmT2Uuc2V0KHRoaXMsZSx0KX0pfSxudWxsLHQsYXJndW1lbnRzLmxl
bmd0aD4xLG51bGwsITApfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmVhY2go
ZnVuY3Rpb24oKXtPZS5yZW1vdmUodGhpcyxlKX0pfX0pLG9lLmV4dGVuZCh7cXVldWU6ZnVuY3Rp
b24oZSx0LHIpe3ZhciBuO2lmKGUpcmV0dXJuIHQ9KHR8fCJmeCIpKyJxdWV1ZSIsbj1FZS5nZXQo
ZSx0KSxyJiYoIW58fG9lLmlzQXJyYXkocik/bj1FZS5hY2Nlc3MoZSx0LG9lLm1ha2VBcnJheShy
KSk6bi5wdXNoKHIpKSxufHxbXX0sZGVxdWV1ZTpmdW5jdGlvbihlLHQpe3Q9dHx8ImZ4Ijt2YXIg
cj1vZS5xdWV1ZShlLHQpLG49ci5sZW5ndGgsaT1yLnNoaWZ0KCksbz1vZS5fcXVldWVIb29rcyhl
LHQpLGE9ZnVuY3Rpb24oKXtvZS5kZXF1ZXVlKGUsdCl9OyJpbnByb2dyZXNzIj09PWkmJihpPXIu
c2hpZnQoKSxuLS0pLGkmJigiZngiPT09dCYmci51bnNoaWZ0KCJpbnByb2dyZXNzIiksZGVsZXRl
IG8uc3RvcCxpLmNhbGwoZSxhLG8pKSwhbiYmbyYmby5lbXB0eS5maXJlKCl9LF9xdWV1ZUhvb2tz
OmZ1bmN0aW9uKGUsdCl7dmFyIHI9dCsicXVldWVIb29rcyI7cmV0dXJuIEVlLmdldChlLHIpfHxF
ZS5hY2Nlc3MoZSxyLHtlbXB0eTpvZS5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IikuYWRkKGZ1bmN0
aW9uKCl7RWUucmVtb3ZlKGUsW3QrInF1ZXVlIixyXSl9KX0pfX0pLG9lLmZuLmV4dGVuZCh7cXVl
dWU6ZnVuY3Rpb24oZSx0KXt2YXIgcj0yO3JldHVybiJzdHJpbmciIT10eXBlb2YgZSYmKHQ9ZSxl
PSJmeCIsci0tKSxhcmd1bWVudHMubGVuZ3RoPHI/b2UucXVldWUodGhpc1swXSxlKTp2b2lkIDA9
PT10P3RoaXM6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIHI9b2UucXVldWUodGhpcyxlLHQpO29l
Ll9xdWV1ZUhvb2tzKHRoaXMsZSksImZ4Ij09PWUmJiJpbnByb2dyZXNzIiE9PXJbMF0mJm9lLmRl
cXVldWUodGhpcyxlKX0pfSxkZXF1ZXVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmVhY2goZnVu
Y3Rpb24oKXtvZS5kZXF1ZXVlKHRoaXMsZSl9KX0sY2xlYXJRdWV1ZTpmdW5jdGlvbihlKXtyZXR1
cm4gdGhpcy5xdWV1ZShlfHwiZngiLFtdKX0scHJvbWlzZTpmdW5jdGlvbihlLHQpe3ZhciByLG49
MSxpPW9lLkRlZmVycmVkKCksbz10aGlzLGE9dGhpcy5sZW5ndGgscz1mdW5jdGlvbigpey0tbnx8
aS5yZXNvbHZlV2l0aChvLFtvXSl9O2Zvcigic3RyaW5nIiE9dHlwZW9mIGUmJih0PWUsZT12b2lk
IDApLGU9ZXx8ImZ4IjthLS07KXI9RWUuZ2V0KG9bYV0sZSsicXVldWVIb29rcyIpLHImJnIuZW1w
dHkmJihuKyssci5lbXB0eS5hZGQocykpO3JldHVybiBzKCksaS5wcm9taXNlKHQpfX0pO3ZhciBT
ZT0vWystXT8oPzpcZCpcLnwpXGQrKD86W2VFXVsrLV0/XGQrfCkvLnNvdXJjZSxBZT1uZXcgUmVn
RXhwKCJeKD86KFsrLV0pPXwpKCIrU2UrIikoW2EteiVdKikkIiwiaSIpLFBlPVsiVG9wIiwiUmln
aHQiLCJCb3R0b20iLCJMZWZ0Il0samU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT10fHxlLCJub25l
Ij09PW9lLmNzcyhlLCJkaXNwbGF5Iil8fCFvZS5jb250YWlucyhlLm93bmVyRG9jdW1lbnQsZSl9
LFJlPS9eKD86Y2hlY2tib3h8cmFkaW8pJC9pLExlPS88KFtcdzotXSspLyxEZT0vXiR8XC8oPzpq
YXZhfGVjbWEpc2NyaXB0L2ksTWU9e29wdGlvbjpbMSwiPHNlbGVjdCBtdWx0aXBsZT0nbXVsdGlw
bGUnPiIsIjwvc2VsZWN0PiJdLHRoZWFkOlsxLCI8dGFibGU+IiwiPC90YWJsZT4iXSxjb2w6WzIs
Ijx0YWJsZT48Y29sZ3JvdXA+IiwiPC9jb2xncm91cD48L3RhYmxlPiJdLHRyOlsyLCI8dGFibGU+
PHRib2R5PiIsIjwvdGJvZHk+PC90YWJsZT4iXSx0ZDpbMywiPHRhYmxlPjx0Ym9keT48dHI+Iiwi
PC90cj48L3Rib2R5PjwvdGFibGU+Il0sX2RlZmF1bHQ6WzAsIiIsIiJdfTtNZS5vcHRncm91cD1N
ZS5vcHRpb24sTWUudGJvZHk9TWUudGZvb3Q9TWUuY29sZ3JvdXA9TWUuY2FwdGlvbj1NZS50aGVh
ZCxNZS50aD1NZS50ZDt2YXIgSWU9Lzx8JiM/XHcrOy87IWZ1bmN0aW9uKCl7dmFyIGU9Ry5jcmVh
dGVEb2N1bWVudEZyYWdtZW50KCksdD1lLmFwcGVuZENoaWxkKEcuY3JlYXRlRWxlbWVudCgiZGl2
IikpLHI9Ry5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO3Iuc2V0QXR0cmlidXRlKCJ0eXBlIiwicmFk
aW8iKSxyLnNldEF0dHJpYnV0ZSgiY2hlY2tlZCIsImNoZWNrZWQiKSxyLnNldEF0dHJpYnV0ZSgi
bmFtZSIsInQiKSx0LmFwcGVuZENoaWxkKHIpLG5lLmNoZWNrQ2xvbmU9dC5jbG9uZU5vZGUoITAp
LmNsb25lTm9kZSghMCkubGFzdENoaWxkLmNoZWNrZWQsdC5pbm5lckhUTUw9Ijx0ZXh0YXJlYT54
PC90ZXh0YXJlYT4iLG5lLm5vQ2xvbmVDaGVja2VkPSEhdC5jbG9uZU5vZGUoITApLmxhc3RDaGls
ZC5kZWZhdWx0VmFsdWV9KCk7dmFyIEZlPS9ea2V5LyxIZT0vXig/Om1vdXNlfHBvaW50ZXJ8Y29u
dGV4dG1lbnV8ZHJhZ3xkcm9wKXxjbGljay8sVmU9L14oW14uXSopKD86XC4oLispfCkvO29lLmV2
ZW50PXtnbG9iYWw6e30sYWRkOmZ1bmN0aW9uKGUsdCxyLG4saSl7dmFyIG8sYSxzLHUsbCxjLGYs
ZCxwLGgsbSx2PUVlLmdldChlKTtpZih2KWZvcihyLmhhbmRsZXImJihvPXIscj1vLmhhbmRsZXIs
aT1vLnNlbGVjdG9yKSxyLmd1aWR8fChyLmd1aWQ9b2UuZ3VpZCsrKSwodT12LmV2ZW50cyl8fCh1
PXYuZXZlbnRzPXt9KSwoYT12LmhhbmRsZSl8fChhPXYuaGFuZGxlPWZ1bmN0aW9uKHQpe3JldHVy
biJ1bmRlZmluZWQiIT10eXBlb2Ygb2UmJm9lLmV2ZW50LnRyaWdnZXJlZCE9PXQudHlwZT9vZS5l
dmVudC5kaXNwYXRjaC5hcHBseShlLGFyZ3VtZW50cyk6dm9pZCAwfSksdD0odHx8IiIpLm1hdGNo
KHdlKXx8WyIiXSxsPXQubGVuZ3RoO2wtLTspcz1WZS5leGVjKHRbbF0pfHxbXSxwPW09c1sxXSxo
PShzWzJdfHwiIikuc3BsaXQoIi4iKS5zb3J0KCkscCYmKGY9b2UuZXZlbnQuc3BlY2lhbFtwXXx8
e30scD0oaT9mLmRlbGVnYXRlVHlwZTpmLmJpbmRUeXBlKXx8cCxmPW9lLmV2ZW50LnNwZWNpYWxb
cF18fHt9LGM9b2UuZXh0ZW5kKHt0eXBlOnAsb3JpZ1R5cGU6bSxkYXRhOm4saGFuZGxlcjpyLGd1
aWQ6ci5ndWlkLHNlbGVjdG9yOmksbmVlZHNDb250ZXh0OmkmJm9lLmV4cHIubWF0Y2gubmVlZHND
b250ZXh0LnRlc3QoaSksbmFtZXNwYWNlOmguam9pbigiLiIpfSxvKSwoZD11W3BdKXx8KGQ9dVtw
XT1bXSxkLmRlbGVnYXRlQ291bnQ9MCxmLnNldHVwJiZmLnNldHVwLmNhbGwoZSxuLGgsYSkhPT0h
MXx8ZS5hZGRFdmVudExpc3RlbmVyJiZlLmFkZEV2ZW50TGlzdGVuZXIocCxhKSksZi5hZGQmJihm
LmFkZC5jYWxsKGUsYyksYy5oYW5kbGVyLmd1aWR8fChjLmhhbmRsZXIuZ3VpZD1yLmd1aWQpKSxp
P2Quc3BsaWNlKGQuZGVsZWdhdGVDb3VudCsrLDAsYyk6ZC5wdXNoKGMpLG9lLmV2ZW50Lmdsb2Jh
bFtwXT0hMCl9LHJlbW92ZTpmdW5jdGlvbihlLHQscixuLGkpe3ZhciBvLGEscyx1LGwsYyxmLGQs
cCxoLG0sdj1FZS5oYXNEYXRhKGUpJiZFZS5nZXQoZSk7aWYodiYmKHU9di5ldmVudHMpKXtmb3Io
dD0odHx8IiIpLm1hdGNoKHdlKXx8WyIiXSxsPXQubGVuZ3RoO2wtLTspaWYocz1WZS5leGVjKHRb
bF0pfHxbXSxwPW09c1sxXSxoPShzWzJdfHwiIikuc3BsaXQoIi4iKS5zb3J0KCkscCl7Zm9yKGY9
b2UuZXZlbnQuc3BlY2lhbFtwXXx8e30scD0obj9mLmRlbGVnYXRlVHlwZTpmLmJpbmRUeXBlKXx8
cCxkPXVbcF18fFtdLHM9c1syXSYmbmV3IFJlZ0V4cCgiKF58XFwuKSIraC5qb2luKCJcXC4oPzou
KlxcLnwpIikrIihcXC58JCkiKSxhPW89ZC5sZW5ndGg7by0tOyljPWRbb10sIWkmJm0hPT1jLm9y
aWdUeXBlfHxyJiZyLmd1aWQhPT1jLmd1aWR8fHMmJiFzLnRlc3QoYy5uYW1lc3BhY2UpfHxuJiZu
IT09Yy5zZWxlY3RvciYmKCIqKiIhPT1ufHwhYy5zZWxlY3Rvcil8fChkLnNwbGljZShvLDEpLGMu
c2VsZWN0b3ImJmQuZGVsZWdhdGVDb3VudC0tLGYucmVtb3ZlJiZmLnJlbW92ZS5jYWxsKGUsYykp
O2EmJiFkLmxlbmd0aCYmKGYudGVhcmRvd24mJmYudGVhcmRvd24uY2FsbChlLGgsdi5oYW5kbGUp
IT09ITF8fG9lLnJlbW92ZUV2ZW50KGUscCx2LmhhbmRsZSksZGVsZXRlIHVbcF0pfWVsc2UgZm9y
KHAgaW4gdSlvZS5ldmVudC5yZW1vdmUoZSxwK3RbbF0scixuLCEwKTtvZS5pc0VtcHR5T2JqZWN0
KHUpJiZFZS5yZW1vdmUoZSwiaGFuZGxlIGV2ZW50cyIpfX0sZGlzcGF0Y2g6ZnVuY3Rpb24oZSl7
ZT1vZS5ldmVudC5maXgoZSk7dmFyIHQscixuLGksbyxhPVtdLHM9WS5jYWxsKGFyZ3VtZW50cyks
dT0oRWUuZ2V0KHRoaXMsImV2ZW50cyIpfHx7fSlbZS50eXBlXXx8W10sbD1vZS5ldmVudC5zcGVj
aWFsW2UudHlwZV18fHt9O2lmKHNbMF09ZSxlLmRlbGVnYXRlVGFyZ2V0PXRoaXMsIWwucHJlRGlz
cGF0Y2h8fGwucHJlRGlzcGF0Y2guY2FsbCh0aGlzLGUpIT09ITEpe2ZvcihhPW9lLmV2ZW50Lmhh
bmRsZXJzLmNhbGwodGhpcyxlLHUpLHQ9MDsoaT1hW3QrK10pJiYhZS5pc1Byb3BhZ2F0aW9uU3Rv
cHBlZCgpOylmb3IoZS5jdXJyZW50VGFyZ2V0PWkuZWxlbSxyPTA7KG89aS5oYW5kbGVyc1tyKytd
KSYmIWUuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQoKTspZS5ybmFtZXNwYWNlJiYhZS5y
bmFtZXNwYWNlLnRlc3Qoby5uYW1lc3BhY2UpfHwoZS5oYW5kbGVPYmo9byxlLmRhdGE9by5kYXRh
LG49KChvZS5ldmVudC5zcGVjaWFsW28ub3JpZ1R5cGVdfHx7fSkuaGFuZGxlfHxvLmhhbmRsZXIp
LmFwcGx5KGkuZWxlbSxzKSx2b2lkIDAhPT1uJiYoZS5yZXN1bHQ9bik9PT0hMSYmKGUucHJldmVu
dERlZmF1bHQoKSxlLnN0b3BQcm9wYWdhdGlvbigpKSk7cmV0dXJuIGwucG9zdERpc3BhdGNoJiZs
LnBvc3REaXNwYXRjaC5jYWxsKHRoaXMsZSksZS5yZXN1bHR9fSxoYW5kbGVyczpmdW5jdGlvbihl
LHQpe3ZhciByLG4saSxvLGE9W10scz10LmRlbGVnYXRlQ291bnQsdT1lLnRhcmdldDtpZihzJiZ1
Lm5vZGVUeXBlJiYoImNsaWNrIiE9PWUudHlwZXx8aXNOYU4oZS5idXR0b24pfHxlLmJ1dHRvbjwx
KSlmb3IoO3UhPT10aGlzO3U9dS5wYXJlbnROb2RlfHx0aGlzKWlmKDE9PT11Lm5vZGVUeXBlJiYo
dS5kaXNhYmxlZCE9PSEwfHwiY2xpY2siIT09ZS50eXBlKSl7Zm9yKG49W10scj0wO3I8cztyKysp
bz10W3JdLGk9by5zZWxlY3RvcisiICIsdm9pZCAwPT09bltpXSYmKG5baV09by5uZWVkc0NvbnRl
eHQ/b2UoaSx0aGlzKS5pbmRleCh1KT4tMTpvZS5maW5kKGksdGhpcyxudWxsLFt1XSkubGVuZ3Ro
KSxuW2ldJiZuLnB1c2gobyk7bi5sZW5ndGgmJmEucHVzaCh7ZWxlbTp1LGhhbmRsZXJzOm59KX1y
ZXR1cm4gczx0Lmxlbmd0aCYmYS5wdXNoKHtlbGVtOnRoaXMsaGFuZGxlcnM6dC5zbGljZShzKX0p
LGF9LHByb3BzOiJhbHRLZXkgYnViYmxlcyBjYW5jZWxhYmxlIGN0cmxLZXkgY3VycmVudFRhcmdl
dCBkZXRhaWwgZXZlbnRQaGFzZSBtZXRhS2V5IHJlbGF0ZWRUYXJnZXQgc2hpZnRLZXkgdGFyZ2V0
IHRpbWVTdGFtcCB2aWV3IHdoaWNoIi5zcGxpdCgiICIpLGZpeEhvb2tzOnt9LGtleUhvb2tzOntw
cm9wczoiY2hhciBjaGFyQ29kZSBrZXkga2V5Q29kZSIuc3BsaXQoIiAiKSxmaWx0ZXI6ZnVuY3Rp
b24oZSx0KXtyZXR1cm4gbnVsbD09ZS53aGljaCYmKGUud2hpY2g9bnVsbCE9dC5jaGFyQ29kZT90
LmNoYXJDb2RlOnQua2V5Q29kZSksZX19LG1vdXNlSG9va3M6e3Byb3BzOiJidXR0b24gYnV0dG9u
cyBjbGllbnRYIGNsaWVudFkgb2Zmc2V0WCBvZmZzZXRZIHBhZ2VYIHBhZ2VZIHNjcmVlblggc2Ny
ZWVuWSB0b0VsZW1lbnQiLnNwbGl0KCIgIiksZmlsdGVyOmZ1bmN0aW9uKGUsdCl7dmFyIHIsbixp
LG89dC5idXR0b247cmV0dXJuIG51bGw9PWUucGFnZVgmJm51bGwhPXQuY2xpZW50WCYmKHI9ZS50
YXJnZXQub3duZXJEb2N1bWVudHx8RyxuPXIuZG9jdW1lbnRFbGVtZW50LGk9ci5ib2R5LGUucGFn
ZVg9dC5jbGllbnRYKyhuJiZuLnNjcm9sbExlZnR8fGkmJmkuc2Nyb2xsTGVmdHx8MCktKG4mJm4u
Y2xpZW50TGVmdHx8aSYmaS5jbGllbnRMZWZ0fHwwKSxlLnBhZ2VZPXQuY2xpZW50WSsobiYmbi5z
Y3JvbGxUb3B8fGkmJmkuc2Nyb2xsVG9wfHwwKS0obiYmbi5jbGllbnRUb3B8fGkmJmkuY2xpZW50
VG9wfHwwKSksZS53aGljaHx8dm9pZCAwPT09b3x8KGUud2hpY2g9MSZvPzE6MiZvPzM6NCZvPzI6
MCksZX19LGZpeDpmdW5jdGlvbihlKXtpZihlW29lLmV4cGFuZG9dKXJldHVybiBlO3ZhciB0LHIs
bixpPWUudHlwZSxvPWUsYT10aGlzLmZpeEhvb2tzW2ldO2ZvcihhfHwodGhpcy5maXhIb29rc1tp
XT1hPUhlLnRlc3QoaSk/dGhpcy5tb3VzZUhvb2tzOkZlLnRlc3QoaSk/dGhpcy5rZXlIb29rczp7
fSksbj1hLnByb3BzP3RoaXMucHJvcHMuY29uY2F0KGEucHJvcHMpOnRoaXMucHJvcHMsZT1uZXcg
b2UuRXZlbnQobyksdD1uLmxlbmd0aDt0LS07KXI9blt0XSxlW3JdPW9bcl07cmV0dXJuIGUudGFy
Z2V0fHwoZS50YXJnZXQ9RyksMz09PWUudGFyZ2V0Lm5vZGVUeXBlJiYoZS50YXJnZXQ9ZS50YXJn
ZXQucGFyZW50Tm9kZSksYS5maWx0ZXI/YS5maWx0ZXIoZSxvKTplfSxzcGVjaWFsOntsb2FkOntu
b0J1YmJsZTohMH0sZm9jdXM6e3RyaWdnZXI6ZnVuY3Rpb24oKXtpZih0aGlzIT09bSgpJiZ0aGlz
LmZvY3VzKXJldHVybiB0aGlzLmZvY3VzKCksITF9LGRlbGVnYXRlVHlwZToiZm9jdXNpbiJ9LGJs
dXI6e3RyaWdnZXI6ZnVuY3Rpb24oKXtpZih0aGlzPT09bSgpJiZ0aGlzLmJsdXIpcmV0dXJuIHRo
aXMuYmx1cigpLCExfSxkZWxlZ2F0ZVR5cGU6ImZvY3Vzb3V0In0sY2xpY2s6e3RyaWdnZXI6ZnVu
Y3Rpb24oKXtpZigiY2hlY2tib3giPT09dGhpcy50eXBlJiZ0aGlzLmNsaWNrJiZvZS5ub2RlTmFt
ZSh0aGlzLCJpbnB1dCIpKXJldHVybiB0aGlzLmNsaWNrKCksITF9LF9kZWZhdWx0OmZ1bmN0aW9u
KGUpe3JldHVybiBvZS5ub2RlTmFtZShlLnRhcmdldCwiYSIpfX0sYmVmb3JldW5sb2FkOntwb3N0
RGlzcGF0Y2g6ZnVuY3Rpb24oZSl7dm9pZCAwIT09ZS5yZXN1bHQmJmUub3JpZ2luYWxFdmVudCYm
KGUub3JpZ2luYWxFdmVudC5yZXR1cm5WYWx1ZT1lLnJlc3VsdCl9fX19LG9lLnJlbW92ZUV2ZW50
PWZ1bmN0aW9uKGUsdCxyKXtlLnJlbW92ZUV2ZW50TGlzdGVuZXImJmUucmVtb3ZlRXZlbnRMaXN0
ZW5lcih0LHIpfSxvZS5FdmVudD1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzIGluc3RhbmNlb2Yg
b2UuRXZlbnQ/KGUmJmUudHlwZT8odGhpcy5vcmlnaW5hbEV2ZW50PWUsdGhpcy50eXBlPWUudHlw
ZSx0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1lLmRlZmF1bHRQcmV2ZW50ZWR8fHZvaWQgMD09PWUu
ZGVmYXVsdFByZXZlbnRlZCYmZS5yZXR1cm5WYWx1ZT09PSExP3A6aCk6dGhpcy50eXBlPWUsdCYm
b2UuZXh0ZW5kKHRoaXMsdCksdGhpcy50aW1lU3RhbXA9ZSYmZS50aW1lU3RhbXB8fG9lLm5vdygp
LHZvaWQodGhpc1tvZS5leHBhbmRvXT0hMCkpOm5ldyBvZS5FdmVudChlLHQpfSxvZS5FdmVudC5w
cm90b3R5cGU9e2NvbnN0cnVjdG9yOm9lLkV2ZW50LGlzRGVmYXVsdFByZXZlbnRlZDpoLGlzUHJv
cGFnYXRpb25TdG9wcGVkOmgsaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ6aCxpc1NpbXVs
YXRlZDohMSxwcmV2ZW50RGVmYXVsdDpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3JpZ2luYWxFdmVu
dDt0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1wLGUmJiF0aGlzLmlzU2ltdWxhdGVkJiZlLnByZXZl
bnREZWZhdWx0KCl9LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3JpZ2lu
YWxFdmVudDt0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPXAsZSYmIXRoaXMuaXNTaW11bGF0ZWQm
JmUuc3RvcFByb3BhZ2F0aW9uKCl9LHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbjpmdW5jdGlvbigp
e3ZhciBlPXRoaXMub3JpZ2luYWxFdmVudDt0aGlzLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9w
cGVkPXAsZSYmIXRoaXMuaXNTaW11bGF0ZWQmJmUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCks
dGhpcy5zdG9wUHJvcGFnYXRpb24oKX19LG9lLmVhY2goe21vdXNlZW50ZXI6Im1vdXNlb3ZlciIs
bW91c2VsZWF2ZToibW91c2VvdXQiLHBvaW50ZXJlbnRlcjoicG9pbnRlcm92ZXIiLHBvaW50ZXJs
ZWF2ZToicG9pbnRlcm91dCJ9LGZ1bmN0aW9uKGUsdCl7b2UuZXZlbnQuc3BlY2lhbFtlXT17ZGVs
ZWdhdGVUeXBlOnQsYmluZFR5cGU6dCxoYW5kbGU6ZnVuY3Rpb24oZSl7dmFyIHIsbj10aGlzLGk9
ZS5yZWxhdGVkVGFyZ2V0LG89ZS5oYW5kbGVPYmo7cmV0dXJuIGkmJihpPT09bnx8b2UuY29udGFp
bnMobixpKSl8fChlLnR5cGU9by5vcmlnVHlwZSxyPW8uaGFuZGxlci5hcHBseSh0aGlzLGFyZ3Vt
ZW50cyksZS50eXBlPXQpLHJ9fX0pLG9lLmZuLmV4dGVuZCh7b246ZnVuY3Rpb24oZSx0LHIsbil7
cmV0dXJuIHYodGhpcyxlLHQscixuKX0sb25lOmZ1bmN0aW9uKGUsdCxyLG4pe3JldHVybiB2KHRo
aXMsZSx0LHIsbiwxKX0sb2ZmOmZ1bmN0aW9uKGUsdCxyKXt2YXIgbixpO2lmKGUmJmUucHJldmVu
dERlZmF1bHQmJmUuaGFuZGxlT2JqKXJldHVybiBuPWUuaGFuZGxlT2JqLG9lKGUuZGVsZWdhdGVU
YXJnZXQpLm9mZihuLm5hbWVzcGFjZT9uLm9yaWdUeXBlKyIuIituLm5hbWVzcGFjZTpuLm9yaWdU
eXBlLG4uc2VsZWN0b3Isbi5oYW5kbGVyKSx0aGlzO2lmKCJvYmplY3QiPT10eXBlb2YgZSl7Zm9y
KGkgaW4gZSl0aGlzLm9mZihpLHQsZVtpXSk7cmV0dXJuIHRoaXN9cmV0dXJuIHQhPT0hMSYmImZ1
bmN0aW9uIiE9dHlwZW9mIHR8fChyPXQsdD12b2lkIDApLHI9PT0hMSYmKHI9aCksdGhpcy5lYWNo
KGZ1bmN0aW9uKCl7b2UuZXZlbnQucmVtb3ZlKHRoaXMsZSxyLHQpfSl9fSk7dmFyIHFlPS88KD8h
YXJlYXxicnxjb2x8ZW1iZWR8aHJ8aW1nfGlucHV0fGxpbmt8bWV0YXxwYXJhbSkoKFtcdzotXSsp
W14+XSopXC8+L2dpLHplPS88c2NyaXB0fDxzdHlsZXw8bGluay9pLEJlPS9jaGVja2VkXHMqKD86
W149XXw9XHMqLmNoZWNrZWQuKS9pLFVlPS9edHJ1ZVwvKC4qKS8sV2U9L15ccyo8ISg/OlxbQ0RB
VEFcW3wtLSl8KD86XF1cXXwtLSk+XHMqJC9nO29lLmV4dGVuZCh7aHRtbFByZWZpbHRlcjpmdW5j
dGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKHFlLCI8JDE+PC8kMj4iKX0sY2xvbmU6ZnVuY3Rpb24o
ZSx0LHIpe3ZhciBuLGksbyxhLHM9ZS5jbG9uZU5vZGUoITApLHU9b2UuY29udGFpbnMoZS5vd25l
ckRvY3VtZW50LGUpO2lmKCEobmUubm9DbG9uZUNoZWNrZWR8fDEhPT1lLm5vZGVUeXBlJiYxMSE9
PWUubm9kZVR5cGV8fG9lLmlzWE1MRG9jKGUpKSlmb3IoYT1jKHMpLG89YyhlKSxuPTAsaT1vLmxl
bmd0aDtuPGk7bisrKXcob1tuXSxhW25dKTtpZih0KWlmKHIpZm9yKG89b3x8YyhlKSxhPWF8fGMo
cyksbj0wLGk9by5sZW5ndGg7bjxpO24rKylfKG9bbl0sYVtuXSk7ZWxzZSBfKGUscyk7cmV0dXJu
IGE9YyhzLCJzY3JpcHQiKSxhLmxlbmd0aD4wJiZmKGEsIXUmJmMoZSwic2NyaXB0IikpLHN9LGNs
ZWFuRGF0YTpmdW5jdGlvbihlKXtmb3IodmFyIHQscixuLGk9b2UuZXZlbnQuc3BlY2lhbCxvPTA7
dm9pZCAwIT09KHI9ZVtvXSk7bysrKWlmKENlKHIpKXtpZih0PXJbRWUuZXhwYW5kb10pe2lmKHQu
ZXZlbnRzKWZvcihuIGluIHQuZXZlbnRzKWlbbl0/b2UuZXZlbnQucmVtb3ZlKHIsbik6b2UucmVt
b3ZlRXZlbnQocixuLHQuaGFuZGxlKTtyW0VlLmV4cGFuZG9dPXZvaWQgMH1yW09lLmV4cGFuZG9d
JiYocltPZS5leHBhbmRvXT12b2lkIDApfX19KSxvZS5mbi5leHRlbmQoe2RvbU1hbmlwOngsZGV0
YWNoOmZ1bmN0aW9uKGUpe3JldHVybiBrKHRoaXMsZSwhMCl9LHJlbW92ZTpmdW5jdGlvbihlKXty
ZXR1cm4gayh0aGlzLGUpfSx0ZXh0OmZ1bmN0aW9uKGUpe3JldHVybiBrZSh0aGlzLGZ1bmN0aW9u
KGUpe3JldHVybiB2b2lkIDA9PT1lP29lLnRleHQodGhpcyk6dGhpcy5lbXB0eSgpLmVhY2goZnVu
Y3Rpb24oKXsxIT09dGhpcy5ub2RlVHlwZSYmMTEhPT10aGlzLm5vZGVUeXBlJiY5IT09dGhpcy5u
b2RlVHlwZXx8KHRoaXMudGV4dENvbnRlbnQ9ZSl9KX0sbnVsbCxlLGFyZ3VtZW50cy5sZW5ndGgp
fSxhcHBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4geCh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihlKXtp
ZigxPT09dGhpcy5ub2RlVHlwZXx8MTE9PT10aGlzLm5vZGVUeXBlfHw5PT09dGhpcy5ub2RlVHlw
ZSl7dmFyIHQ9Yih0aGlzLGUpO3QuYXBwZW5kQ2hpbGQoZSl9fSl9LHByZXBlbmQ6ZnVuY3Rpb24o
KXtyZXR1cm4geCh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihlKXtpZigxPT09dGhpcy5ub2RlVHlw
ZXx8MTE9PT10aGlzLm5vZGVUeXBlfHw5PT09dGhpcy5ub2RlVHlwZSl7dmFyIHQ9Yih0aGlzLGUp
O3QuaW5zZXJ0QmVmb3JlKGUsdC5maXJzdENoaWxkKX19KX0sYmVmb3JlOmZ1bmN0aW9uKCl7cmV0
dXJuIHgodGhpcyxhcmd1bWVudHMsZnVuY3Rpb24oZSl7dGhpcy5wYXJlbnROb2RlJiZ0aGlzLnBh
cmVudE5vZGUuaW5zZXJ0QmVmb3JlKGUsdGhpcyl9KX0sYWZ0ZXI6ZnVuY3Rpb24oKXtyZXR1cm4g
eCh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihlKXt0aGlzLnBhcmVudE5vZGUmJnRoaXMucGFyZW50
Tm9kZS5pbnNlcnRCZWZvcmUoZSx0aGlzLm5leHRTaWJsaW5nKX0pfSxlbXB0eTpmdW5jdGlvbigp
e2Zvcih2YXIgZSx0PTA7bnVsbCE9KGU9dGhpc1t0XSk7dCsrKTE9PT1lLm5vZGVUeXBlJiYob2Uu
Y2xlYW5EYXRhKGMoZSwhMSkpLGUudGV4dENvbnRlbnQ9IiIpO3JldHVybiB0aGlzfSxjbG9uZTpm
dW5jdGlvbihlLHQpe3JldHVybiBlPW51bGwhPWUmJmUsdD1udWxsPT10P2U6dCx0aGlzLm1hcChm
dW5jdGlvbigpe3JldHVybiBvZS5jbG9uZSh0aGlzLGUsdCl9KX0saHRtbDpmdW5jdGlvbihlKXty
ZXR1cm4ga2UodGhpcyxmdW5jdGlvbihlKXt2YXIgdD10aGlzWzBdfHx7fSxyPTAsbj10aGlzLmxl
bmd0aDtpZih2b2lkIDA9PT1lJiYxPT09dC5ub2RlVHlwZSlyZXR1cm4gdC5pbm5lckhUTUw7aWYo
InN0cmluZyI9PXR5cGVvZiBlJiYhemUudGVzdChlKSYmIU1lWyhMZS5leGVjKGUpfHxbIiIsIiJd
KVsxXS50b0xvd2VyQ2FzZSgpXSl7ZT1vZS5odG1sUHJlZmlsdGVyKGUpO3RyeXtmb3IoO3I8bjty
KyspdD10aGlzW3JdfHx7fSwxPT09dC5ub2RlVHlwZSYmKG9lLmNsZWFuRGF0YShjKHQsITEpKSx0
LmlubmVySFRNTD1lKTt0PTB9Y2F0Y2goZSl7fX10JiZ0aGlzLmVtcHR5KCkuYXBwZW5kKGUpfSxu
dWxsLGUsYXJndW1lbnRzLmxlbmd0aCl9LHJlcGxhY2VXaXRoOmZ1bmN0aW9uKCl7dmFyIGU9W107
cmV0dXJuIHgodGhpcyxhcmd1bWVudHMsZnVuY3Rpb24odCl7dmFyIHI9dGhpcy5wYXJlbnROb2Rl
O29lLmluQXJyYXkodGhpcyxlKTwwJiYob2UuY2xlYW5EYXRhKGModGhpcykpLHImJnIucmVwbGFj
ZUNoaWxkKHQsdGhpcykpfSxlKX19KSxvZS5lYWNoKHthcHBlbmRUbzoiYXBwZW5kIixwcmVwZW5k
VG86InByZXBlbmQiLGluc2VydEJlZm9yZToiYmVmb3JlIixpbnNlcnRBZnRlcjoiYWZ0ZXIiLHJl
cGxhY2VBbGw6InJlcGxhY2VXaXRoIn0sZnVuY3Rpb24oZSx0KXtvZS5mbltlXT1mdW5jdGlvbihl
KXtmb3IodmFyIHIsbj1bXSxpPW9lKGUpLG89aS5sZW5ndGgtMSxhPTA7YTw9bzthKyspcj1hPT09
bz90aGlzOnRoaXMuY2xvbmUoITApLG9lKGlbYV0pW3RdKHIpLEouYXBwbHkobixyLmdldCgpKTty
ZXR1cm4gdGhpcy5wdXNoU3RhY2sobil9fSk7dmFyICRlLEtlPXtIVE1MOiJibG9jayIsQk9EWToi
YmxvY2sifSxRZT0vXm1hcmdpbi8sR2U9bmV3IFJlZ0V4cCgiXigiK1NlKyIpKD8hcHgpW2EteiVd
KyQiLCJpIiksWWU9ZnVuY3Rpb24odCl7dmFyIHI9dC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3
O3JldHVybiByJiZyLm9wZW5lcnx8KHI9ZSksci5nZXRDb21wdXRlZFN0eWxlKHQpfSxYZT1mdW5j
dGlvbihlLHQscixuKXt2YXIgaSxvLGE9e307Zm9yKG8gaW4gdClhW29dPWUuc3R5bGVbb10sZS5z
dHlsZVtvXT10W29dO2k9ci5hcHBseShlLG58fFtdKTtmb3IobyBpbiB0KWUuc3R5bGVbb109YVtv
XTtyZXR1cm4gaX0sSmU9Ry5kb2N1bWVudEVsZW1lbnQ7IWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgp
e3Muc3R5bGUuY3NzVGV4dD0iLXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7LW1vei1ib3gt
c2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94O3Bvc2l0aW9uOnJlbGF0aXZl
O2Rpc3BsYXk6YmxvY2s7bWFyZ2luOmF1dG87Ym9yZGVyOjFweDtwYWRkaW5nOjFweDt0b3A6MSU7
d2lkdGg6NTAlIixzLmlubmVySFRNTD0iIixKZS5hcHBlbmRDaGlsZChhKTt2YXIgdD1lLmdldENv
bXB1dGVkU3R5bGUocyk7cj0iMSUiIT09dC50b3Asbz0iMnB4Ij09PXQubWFyZ2luTGVmdCxuPSI0
cHgiPT09dC53aWR0aCxzLnN0eWxlLm1hcmdpblJpZ2h0PSI1MCUiLGk9IjRweCI9PT10Lm1hcmdp
blJpZ2h0LEplLnJlbW92ZUNoaWxkKGEpfXZhciByLG4saSxvLGE9Ry5jcmVhdGVFbGVtZW50KCJk
aXYiKSxzPUcuY3JlYXRlRWxlbWVudCgiZGl2Iik7cy5zdHlsZSYmKHMuc3R5bGUuYmFja2dyb3Vu
ZENsaXA9ImNvbnRlbnQtYm94IixzLmNsb25lTm9kZSghMCkuc3R5bGUuYmFja2dyb3VuZENsaXA9
IiIsbmUuY2xlYXJDbG9uZVN0eWxlPSJjb250ZW50LWJveCI9PT1zLnN0eWxlLmJhY2tncm91bmRD
bGlwLGEuc3R5bGUuY3NzVGV4dD0iYm9yZGVyOjA7d2lkdGg6OHB4O2hlaWdodDowO3RvcDowO2xl
ZnQ6LTk5OTlweDtwYWRkaW5nOjA7bWFyZ2luLXRvcDoxcHg7cG9zaXRpb246YWJzb2x1dGUiLGEu
YXBwZW5kQ2hpbGQocyksb2UuZXh0ZW5kKG5lLHtwaXhlbFBvc2l0aW9uOmZ1bmN0aW9uKCl7cmV0
dXJuIHQoKSxyfSxib3hTaXppbmdSZWxpYWJsZTpmdW5jdGlvbigpe3JldHVybiBudWxsPT1uJiZ0
KCksbn0scGl4ZWxNYXJnaW5SaWdodDpmdW5jdGlvbigpe3JldHVybiBudWxsPT1uJiZ0KCksaX0s
cmVsaWFibGVNYXJnaW5MZWZ0OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PW4mJnQoKSxvfSxyZWxp
YWJsZU1hcmdpblJpZ2h0OmZ1bmN0aW9uKCl7dmFyIHQscj1zLmFwcGVuZENoaWxkKEcuY3JlYXRl
RWxlbWVudCgiZGl2IikpO3JldHVybiByLnN0eWxlLmNzc1RleHQ9cy5zdHlsZS5jc3NUZXh0PSIt
d2Via2l0LWJveC1zaXppbmc6Y29udGVudC1ib3g7Ym94LXNpemluZzpjb250ZW50LWJveDtkaXNw
bGF5OmJsb2NrO21hcmdpbjowO2JvcmRlcjowO3BhZGRpbmc6MCIsci5zdHlsZS5tYXJnaW5SaWdo
dD1yLnN0eWxlLndpZHRoPSIwIixzLnN0eWxlLndpZHRoPSIxcHgiLEplLmFwcGVuZENoaWxkKGEp
LHQ9IXBhcnNlRmxvYXQoZS5nZXRDb21wdXRlZFN0eWxlKHIpLm1hcmdpblJpZ2h0KSxKZS5yZW1v
dmVDaGlsZChhKSxzLnJlbW92ZUNoaWxkKHIpLHR9fSkpfSgpO3ZhciBaZT0vXihub25lfHRhYmxl
KD8hLWNbZWFdKS4rKS8sZXQ9e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdmlzaWJpbGl0eToiaGlkZGVu
IixkaXNwbGF5OiJibG9jayJ9LHR0PXtsZXR0ZXJTcGFjaW5nOiIwIixmb250V2VpZ2h0OiI0MDAi
fSxydD1bIldlYmtpdCIsIk8iLCJNb3oiLCJtcyJdLG50PUcuY3JlYXRlRWxlbWVudCgiZGl2Iiku
c3R5bGU7b2UuZXh0ZW5kKHtjc3NIb29rczp7b3BhY2l0eTp7Z2V0OmZ1bmN0aW9uKGUsdCl7aWYo
dCl7dmFyIHI9TyhlLCJvcGFjaXR5Iik7cmV0dXJuIiI9PT1yPyIxIjpyfX19fSxjc3NOdW1iZXI6
e2FuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OiEwLGNvbHVtbkNvdW50OiEwLGZpbGxPcGFjaXR5OiEw
LGZsZXhHcm93OiEwLGZsZXhTaHJpbms6ITAsZm9udFdlaWdodDohMCxsaW5lSGVpZ2h0OiEwLG9w
YWNpdHk6ITAsb3JkZXI6ITAsb3JwaGFuczohMCx3aWRvd3M6ITAsekluZGV4OiEwLHpvb206ITB9
LGNzc1Byb3BzOntmbG9hdDoiY3NzRmxvYXQifSxzdHlsZTpmdW5jdGlvbihlLHQscixuKXtpZihl
JiYzIT09ZS5ub2RlVHlwZSYmOCE9PWUubm9kZVR5cGUmJmUuc3R5bGUpe3ZhciBpLG8sYSxzPW9l
LmNhbWVsQ2FzZSh0KSx1PWUuc3R5bGU7cmV0dXJuIHQ9b2UuY3NzUHJvcHNbc118fChvZS5jc3NQ
cm9wc1tzXT1OKHMpfHxzKSxhPW9lLmNzc0hvb2tzW3RdfHxvZS5jc3NIb29rc1tzXSx2b2lkIDA9
PT1yP2EmJiJnZXQiaW4gYSYmdm9pZCAwIT09KGk9YS5nZXQoZSwhMSxuKSk/aTp1W3RdOihvPXR5
cGVvZiByLCJzdHJpbmciPT09byYmKGk9QWUuZXhlYyhyKSkmJmlbMV0mJihyPWwoZSx0LGkpLG89
Im51bWJlciIpLG51bGwhPXImJnI9PT1yJiYoIm51bWJlciI9PT1vJiYocis9aSYmaVszXXx8KG9l
LmNzc051bWJlcltzXT8iIjoicHgiKSksbmUuY2xlYXJDbG9uZVN0eWxlfHwiIiE9PXJ8fDAhPT10
LmluZGV4T2YoImJhY2tncm91bmQiKXx8KHVbdF09ImluaGVyaXQiKSxhJiYic2V0ImluIGEmJnZv
aWQgMD09PShyPWEuc2V0KGUscixuKSl8fCh1W3RdPXIpKSx2b2lkIDApfX0sY3NzOmZ1bmN0aW9u
KGUsdCxyLG4pe3ZhciBpLG8sYSxzPW9lLmNhbWVsQ2FzZSh0KTtyZXR1cm4gdD1vZS5jc3NQcm9w
c1tzXXx8KG9lLmNzc1Byb3BzW3NdPU4ocyl8fHMpLGE9b2UuY3NzSG9va3NbdF18fG9lLmNzc0hv
b2tzW3NdLGEmJiJnZXQiaW4gYSYmKGk9YS5nZXQoZSwhMCxyKSksdm9pZCAwPT09aSYmKGk9Tyhl
LHQsbikpLCJub3JtYWwiPT09aSYmdCBpbiB0dCYmKGk9dHRbdF0pLCIiPT09cnx8cj8obz1wYXJz
ZUZsb2F0KGkpLHI9PT0hMHx8aXNGaW5pdGUobyk/b3x8MDppKTppfX0pLG9lLmVhY2goWyJoZWln
aHQiLCJ3aWR0aCJdLGZ1bmN0aW9uKGUsdCl7b2UuY3NzSG9va3NbdF09e2dldDpmdW5jdGlvbihl
LHIsbil7aWYocilyZXR1cm4gWmUudGVzdChvZS5jc3MoZSwiZGlzcGxheSIpKSYmMD09PWUub2Zm
c2V0V2lkdGg/WGUoZSxldCxmdW5jdGlvbigpe3JldHVybiBQKGUsdCxuKX0pOlAoZSx0LG4pfSxz
ZXQ6ZnVuY3Rpb24oZSxyLG4pe3ZhciBpLG89biYmWWUoZSksYT1uJiZBKGUsdCxuLCJib3JkZXIt
Ym94Ij09PW9lLmNzcyhlLCJib3hTaXppbmciLCExLG8pLG8pO3JldHVybiBhJiYoaT1BZS5leGVj
KHIpKSYmInB4IiE9PShpWzNdfHwicHgiKSYmKGUuc3R5bGVbdF09cixyPW9lLmNzcyhlLHQpKSxT
KGUscixhKX19fSksb2UuY3NzSG9va3MubWFyZ2luTGVmdD1UKG5lLnJlbGlhYmxlTWFyZ2luTGVm
dCxmdW5jdGlvbihlLHQpe2lmKHQpcmV0dXJuKHBhcnNlRmxvYXQoTyhlLCJtYXJnaW5MZWZ0Iikp
fHxlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQtWGUoZSx7bWFyZ2luTGVmdDowfSxmdW5j
dGlvbigpe3JldHVybiBlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnR9KSkrInB4In0pLG9l
LmNzc0hvb2tzLm1hcmdpblJpZ2h0PVQobmUucmVsaWFibGVNYXJnaW5SaWdodCxmdW5jdGlvbihl
LHQpe2lmKHQpcmV0dXJuIFhlKGUse2Rpc3BsYXk6ImlubGluZS1ibG9jayJ9LE8sW2UsIm1hcmdp
blJpZ2h0Il0pfSksb2UuZWFjaCh7bWFyZ2luOiIiLHBhZGRpbmc6IiIsYm9yZGVyOiJXaWR0aCJ9
LGZ1bmN0aW9uKGUsdCl7b2UuY3NzSG9va3NbZSt0XT17ZXhwYW5kOmZ1bmN0aW9uKHIpe2Zvcih2
YXIgbj0wLGk9e30sbz0ic3RyaW5nIj09dHlwZW9mIHI/ci5zcGxpdCgiICIpOltyXTtuPDQ7bisr
KWlbZStQZVtuXSt0XT1vW25dfHxvW24tMl18fG9bMF07cmV0dXJuIGl9fSxRZS50ZXN0KGUpfHwo
b2UuY3NzSG9va3NbZSt0XS5zZXQ9Uyl9KSxvZS5mbi5leHRlbmQoeworY3NzOmZ1bmN0aW9uKGUs
dCl7cmV0dXJuIGtlKHRoaXMsZnVuY3Rpb24oZSx0LHIpe3ZhciBuLGksbz17fSxhPTA7aWYob2Uu
aXNBcnJheSh0KSl7Zm9yKG49WWUoZSksaT10Lmxlbmd0aDthPGk7YSsrKW9bdFthXV09b2UuY3Nz
KGUsdFthXSwhMSxuKTtyZXR1cm4gb31yZXR1cm4gdm9pZCAwIT09cj9vZS5zdHlsZShlLHQscik6
b2UuY3NzKGUsdCl9LGUsdCxhcmd1bWVudHMubGVuZ3RoPjEpfSxzaG93OmZ1bmN0aW9uKCl7cmV0
dXJuIGoodGhpcywhMCl9LGhpZGU6ZnVuY3Rpb24oKXtyZXR1cm4gaih0aGlzKX0sdG9nZ2xlOmZ1
bmN0aW9uKGUpe3JldHVybiJib29sZWFuIj09dHlwZW9mIGU/ZT90aGlzLnNob3coKTp0aGlzLmhp
ZGUoKTp0aGlzLmVhY2goZnVuY3Rpb24oKXtqZSh0aGlzKT9vZSh0aGlzKS5zaG93KCk6b2UodGhp
cykuaGlkZSgpfSl9fSksb2UuVHdlZW49UixSLnByb3RvdHlwZT17Y29uc3RydWN0b3I6Uixpbml0
OmZ1bmN0aW9uKGUsdCxyLG4saSxvKXt0aGlzLmVsZW09ZSx0aGlzLnByb3A9cix0aGlzLmVhc2lu
Zz1pfHxvZS5lYXNpbmcuX2RlZmF1bHQsdGhpcy5vcHRpb25zPXQsdGhpcy5zdGFydD10aGlzLm5v
dz10aGlzLmN1cigpLHRoaXMuZW5kPW4sdGhpcy51bml0PW98fChvZS5jc3NOdW1iZXJbcl0/IiI6
InB4Iil9LGN1cjpmdW5jdGlvbigpe3ZhciBlPVIucHJvcEhvb2tzW3RoaXMucHJvcF07cmV0dXJu
IGUmJmUuZ2V0P2UuZ2V0KHRoaXMpOlIucHJvcEhvb2tzLl9kZWZhdWx0LmdldCh0aGlzKX0scnVu
OmZ1bmN0aW9uKGUpe3ZhciB0LHI9Ui5wcm9wSG9va3NbdGhpcy5wcm9wXTtyZXR1cm4gdGhpcy5v
cHRpb25zLmR1cmF0aW9uP3RoaXMucG9zPXQ9b2UuZWFzaW5nW3RoaXMuZWFzaW5nXShlLHRoaXMu
b3B0aW9ucy5kdXJhdGlvbiplLDAsMSx0aGlzLm9wdGlvbnMuZHVyYXRpb24pOnRoaXMucG9zPXQ9
ZSx0aGlzLm5vdz0odGhpcy5lbmQtdGhpcy5zdGFydCkqdCt0aGlzLnN0YXJ0LHRoaXMub3B0aW9u
cy5zdGVwJiZ0aGlzLm9wdGlvbnMuc3RlcC5jYWxsKHRoaXMuZWxlbSx0aGlzLm5vdyx0aGlzKSxy
JiZyLnNldD9yLnNldCh0aGlzKTpSLnByb3BIb29rcy5fZGVmYXVsdC5zZXQodGhpcyksdGhpc319
LFIucHJvdG90eXBlLmluaXQucHJvdG90eXBlPVIucHJvdG90eXBlLFIucHJvcEhvb2tzPXtfZGVm
YXVsdDp7Z2V0OmZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiAxIT09ZS5lbGVtLm5vZGVUeXBlfHxu
dWxsIT1lLmVsZW1bZS5wcm9wXSYmbnVsbD09ZS5lbGVtLnN0eWxlW2UucHJvcF0/ZS5lbGVtW2Uu
cHJvcF06KHQ9b2UuY3NzKGUuZWxlbSxlLnByb3AsIiIpLHQmJiJhdXRvIiE9PXQ/dDowKX0sc2V0
OmZ1bmN0aW9uKGUpe29lLmZ4LnN0ZXBbZS5wcm9wXT9vZS5meC5zdGVwW2UucHJvcF0oZSk6MSE9
PWUuZWxlbS5ub2RlVHlwZXx8bnVsbD09ZS5lbGVtLnN0eWxlW29lLmNzc1Byb3BzW2UucHJvcF1d
JiYhb2UuY3NzSG9va3NbZS5wcm9wXT9lLmVsZW1bZS5wcm9wXT1lLm5vdzpvZS5zdHlsZShlLmVs
ZW0sZS5wcm9wLGUubm93K2UudW5pdCl9fX0sUi5wcm9wSG9va3Muc2Nyb2xsVG9wPVIucHJvcEhv
b2tzLnNjcm9sbExlZnQ9e3NldDpmdW5jdGlvbihlKXtlLmVsZW0ubm9kZVR5cGUmJmUuZWxlbS5w
YXJlbnROb2RlJiYoZS5lbGVtW2UucHJvcF09ZS5ub3cpfX0sb2UuZWFzaW5nPXtsaW5lYXI6ZnVu
Y3Rpb24oZSl7cmV0dXJuIGV9LHN3aW5nOmZ1bmN0aW9uKGUpe3JldHVybi41LU1hdGguY29zKGUq
TWF0aC5QSSkvMn0sX2RlZmF1bHQ6InN3aW5nIn0sb2UuZng9Ui5wcm90b3R5cGUuaW5pdCxvZS5m
eC5zdGVwPXt9O3ZhciBpdCxvdCxhdD0vXig/OnRvZ2dsZXxzaG93fGhpZGUpJC8sc3Q9L3F1ZXVl
SG9va3MkLztvZS5BbmltYXRpb249b2UuZXh0ZW5kKEgse3R3ZWVuZXJzOnsiKiI6W2Z1bmN0aW9u
KGUsdCl7dmFyIHI9dGhpcy5jcmVhdGVUd2VlbihlLHQpO3JldHVybiBsKHIuZWxlbSxlLEFlLmV4
ZWModCkscikscn1dfSx0d2VlbmVyOmZ1bmN0aW9uKGUsdCl7b2UuaXNGdW5jdGlvbihlKT8odD1l
LGU9WyIqIl0pOmU9ZS5tYXRjaCh3ZSk7Zm9yKHZhciByLG49MCxpPWUubGVuZ3RoO248aTtuKysp
cj1lW25dLEgudHdlZW5lcnNbcl09SC50d2VlbmVyc1tyXXx8W10sSC50d2VlbmVyc1tyXS51bnNo
aWZ0KHQpfSxwcmVmaWx0ZXJzOltJXSxwcmVmaWx0ZXI6ZnVuY3Rpb24oZSx0KXt0P0gucHJlZmls
dGVycy51bnNoaWZ0KGUpOkgucHJlZmlsdGVycy5wdXNoKGUpfX0pLG9lLnNwZWVkPWZ1bmN0aW9u
KGUsdCxyKXt2YXIgbj1lJiYib2JqZWN0Ij09dHlwZW9mIGU/b2UuZXh0ZW5kKHt9LGUpOntjb21w
bGV0ZTpyfHwhciYmdHx8b2UuaXNGdW5jdGlvbihlKSYmZSxkdXJhdGlvbjplLGVhc2luZzpyJiZ0
fHx0JiYhb2UuaXNGdW5jdGlvbih0KSYmdH07cmV0dXJuIG4uZHVyYXRpb249b2UuZngub2ZmPzA6
Im51bWJlciI9PXR5cGVvZiBuLmR1cmF0aW9uP24uZHVyYXRpb246bi5kdXJhdGlvbiBpbiBvZS5m
eC5zcGVlZHM/b2UuZnguc3BlZWRzW24uZHVyYXRpb25dOm9lLmZ4LnNwZWVkcy5fZGVmYXVsdCxu
dWxsIT1uLnF1ZXVlJiZuLnF1ZXVlIT09ITB8fChuLnF1ZXVlPSJmeCIpLG4ub2xkPW4uY29tcGxl
dGUsbi5jb21wbGV0ZT1mdW5jdGlvbigpe29lLmlzRnVuY3Rpb24obi5vbGQpJiZuLm9sZC5jYWxs
KHRoaXMpLG4ucXVldWUmJm9lLmRlcXVldWUodGhpcyxuLnF1ZXVlKX0sbn0sb2UuZm4uZXh0ZW5k
KHtmYWRlVG86ZnVuY3Rpb24oZSx0LHIsbil7cmV0dXJuIHRoaXMuZmlsdGVyKGplKS5jc3MoIm9w
YWNpdHkiLDApLnNob3coKS5lbmQoKS5hbmltYXRlKHtvcGFjaXR5OnR9LGUscixuKX0sYW5pbWF0
ZTpmdW5jdGlvbihlLHQscixuKXt2YXIgaT1vZS5pc0VtcHR5T2JqZWN0KGUpLG89b2Uuc3BlZWQo
dCxyLG4pLGE9ZnVuY3Rpb24oKXt2YXIgdD1IKHRoaXMsb2UuZXh0ZW5kKHt9LGUpLG8pOyhpfHxF
ZS5nZXQodGhpcywiZmluaXNoIikpJiZ0LnN0b3AoITApfTtyZXR1cm4gYS5maW5pc2g9YSxpfHxv
LnF1ZXVlPT09ITE/dGhpcy5lYWNoKGEpOnRoaXMucXVldWUoby5xdWV1ZSxhKX0sc3RvcDpmdW5j
dGlvbihlLHQscil7dmFyIG49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5zdG9wO2RlbGV0ZSBlLnN0b3As
dChyKX07cmV0dXJuInN0cmluZyIhPXR5cGVvZiBlJiYocj10LHQ9ZSxlPXZvaWQgMCksdCYmZSE9
PSExJiZ0aGlzLnF1ZXVlKGV8fCJmeCIsW10pLHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciB0PSEw
LGk9bnVsbCE9ZSYmZSsicXVldWVIb29rcyIsbz1vZS50aW1lcnMsYT1FZS5nZXQodGhpcyk7aWYo
aSlhW2ldJiZhW2ldLnN0b3AmJm4oYVtpXSk7ZWxzZSBmb3IoaSBpbiBhKWFbaV0mJmFbaV0uc3Rv
cCYmc3QudGVzdChpKSYmbihhW2ldKTtmb3IoaT1vLmxlbmd0aDtpLS07KW9baV0uZWxlbSE9PXRo
aXN8fG51bGwhPWUmJm9baV0ucXVldWUhPT1lfHwob1tpXS5hbmltLnN0b3AociksdD0hMSxvLnNw
bGljZShpLDEpKTshdCYmcnx8b2UuZGVxdWV1ZSh0aGlzLGUpfSl9LGZpbmlzaDpmdW5jdGlvbihl
KXtyZXR1cm4gZSE9PSExJiYoZT1lfHwiZngiKSx0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgdCxy
PUVlLmdldCh0aGlzKSxuPXJbZSsicXVldWUiXSxpPXJbZSsicXVldWVIb29rcyJdLG89b2UudGlt
ZXJzLGE9bj9uLmxlbmd0aDowO2ZvcihyLmZpbmlzaD0hMCxvZS5xdWV1ZSh0aGlzLGUsW10pLGkm
Jmkuc3RvcCYmaS5zdG9wLmNhbGwodGhpcywhMCksdD1vLmxlbmd0aDt0LS07KW9bdF0uZWxlbT09
PXRoaXMmJm9bdF0ucXVldWU9PT1lJiYob1t0XS5hbmltLnN0b3AoITApLG8uc3BsaWNlKHQsMSkp
O2Zvcih0PTA7dDxhO3QrKyluW3RdJiZuW3RdLmZpbmlzaCYmblt0XS5maW5pc2guY2FsbCh0aGlz
KTtkZWxldGUgci5maW5pc2h9KX19KSxvZS5lYWNoKFsidG9nZ2xlIiwic2hvdyIsImhpZGUiXSxm
dW5jdGlvbihlLHQpe3ZhciByPW9lLmZuW3RdO29lLmZuW3RdPWZ1bmN0aW9uKGUsbixpKXtyZXR1
cm4gbnVsbD09ZXx8ImJvb2xlYW4iPT10eXBlb2YgZT9yLmFwcGx5KHRoaXMsYXJndW1lbnRzKTp0
aGlzLmFuaW1hdGUoRCh0LCEwKSxlLG4saSl9fSksb2UuZWFjaCh7c2xpZGVEb3duOkQoInNob3ci
KSxzbGlkZVVwOkQoImhpZGUiKSxzbGlkZVRvZ2dsZTpEKCJ0b2dnbGUiKSxmYWRlSW46e29wYWNp
dHk6InNob3cifSxmYWRlT3V0OntvcGFjaXR5OiJoaWRlIn0sZmFkZVRvZ2dsZTp7b3BhY2l0eToi
dG9nZ2xlIn19LGZ1bmN0aW9uKGUsdCl7b2UuZm5bZV09ZnVuY3Rpb24oZSxyLG4pe3JldHVybiB0
aGlzLmFuaW1hdGUodCxlLHIsbil9fSksb2UudGltZXJzPVtdLG9lLmZ4LnRpY2s9ZnVuY3Rpb24o
KXt2YXIgZSx0PTAscj1vZS50aW1lcnM7Zm9yKGl0PW9lLm5vdygpO3Q8ci5sZW5ndGg7dCsrKWU9
clt0XSxlKCl8fHJbdF0hPT1lfHxyLnNwbGljZSh0LS0sMSk7ci5sZW5ndGh8fG9lLmZ4LnN0b3Ao
KSxpdD12b2lkIDB9LG9lLmZ4LnRpbWVyPWZ1bmN0aW9uKGUpe29lLnRpbWVycy5wdXNoKGUpLGUo
KT9vZS5meC5zdGFydCgpOm9lLnRpbWVycy5wb3AoKX0sb2UuZnguaW50ZXJ2YWw9MTMsb2UuZngu
c3RhcnQ9ZnVuY3Rpb24oKXtvdHx8KG90PWUuc2V0SW50ZXJ2YWwob2UuZngudGljayxvZS5meC5p
bnRlcnZhbCkpfSxvZS5meC5zdG9wPWZ1bmN0aW9uKCl7ZS5jbGVhckludGVydmFsKG90KSxvdD1u
dWxsfSxvZS5meC5zcGVlZHM9e3Nsb3c6NjAwLGZhc3Q6MjAwLF9kZWZhdWx0OjQwMH0sb2UuZm4u
ZGVsYXk9ZnVuY3Rpb24odCxyKXtyZXR1cm4gdD1vZS5meD9vZS5meC5zcGVlZHNbdF18fHQ6dCxy
PXJ8fCJmeCIsdGhpcy5xdWV1ZShyLGZ1bmN0aW9uKHIsbil7dmFyIGk9ZS5zZXRUaW1lb3V0KHIs
dCk7bi5zdG9wPWZ1bmN0aW9uKCl7ZS5jbGVhclRpbWVvdXQoaSl9fSl9LGZ1bmN0aW9uKCl7dmFy
IGU9Ry5jcmVhdGVFbGVtZW50KCJpbnB1dCIpLHQ9Ry5jcmVhdGVFbGVtZW50KCJzZWxlY3QiKSxy
PXQuYXBwZW5kQ2hpbGQoRy5jcmVhdGVFbGVtZW50KCJvcHRpb24iKSk7ZS50eXBlPSJjaGVja2Jv
eCIsbmUuY2hlY2tPbj0iIiE9PWUudmFsdWUsbmUub3B0U2VsZWN0ZWQ9ci5zZWxlY3RlZCx0LmRp
c2FibGVkPSEwLG5lLm9wdERpc2FibGVkPSFyLmRpc2FibGVkLGU9Ry5jcmVhdGVFbGVtZW50KCJp
bnB1dCIpLGUudmFsdWU9InQiLGUudHlwZT0icmFkaW8iLG5lLnJhZGlvVmFsdWU9InQiPT09ZS52
YWx1ZX0oKTt2YXIgdXQsbHQ9b2UuZXhwci5hdHRySGFuZGxlO29lLmZuLmV4dGVuZCh7YXR0cjpm
dW5jdGlvbihlLHQpe3JldHVybiBrZSh0aGlzLG9lLmF0dHIsZSx0LGFyZ3VtZW50cy5sZW5ndGg+
MSl9LHJlbW92ZUF0dHI6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe29l
LnJlbW92ZUF0dHIodGhpcyxlKX0pfX0pLG9lLmV4dGVuZCh7YXR0cjpmdW5jdGlvbihlLHQscil7
dmFyIG4saSxvPWUubm9kZVR5cGU7aWYoMyE9PW8mJjghPT1vJiYyIT09bylyZXR1cm4idW5kZWZp
bmVkIj09dHlwZW9mIGUuZ2V0QXR0cmlidXRlP29lLnByb3AoZSx0LHIpOigxPT09byYmb2UuaXNY
TUxEb2MoZSl8fCh0PXQudG9Mb3dlckNhc2UoKSxpPW9lLmF0dHJIb29rc1t0XXx8KG9lLmV4cHIu
bWF0Y2guYm9vbC50ZXN0KHQpP3V0OnZvaWQgMCkpLHZvaWQgMCE9PXI/bnVsbD09PXI/dm9pZCBv
ZS5yZW1vdmVBdHRyKGUsdCk6aSYmInNldCJpbiBpJiZ2b2lkIDAhPT0obj1pLnNldChlLHIsdCkp
P246KGUuc2V0QXR0cmlidXRlKHQscisiIikscik6aSYmImdldCJpbiBpJiZudWxsIT09KG49aS5n
ZXQoZSx0KSk/bjoobj1vZS5maW5kLmF0dHIoZSx0KSxudWxsPT1uP3ZvaWQgMDpuKSl9LGF0dHJI
b29rczp7dHlwZTp7c2V0OmZ1bmN0aW9uKGUsdCl7aWYoIW5lLnJhZGlvVmFsdWUmJiJyYWRpbyI9
PT10JiZvZS5ub2RlTmFtZShlLCJpbnB1dCIpKXt2YXIgcj1lLnZhbHVlO3JldHVybiBlLnNldEF0
dHJpYnV0ZSgidHlwZSIsdCksciYmKGUudmFsdWU9ciksdH19fX0scmVtb3ZlQXR0cjpmdW5jdGlv
bihlLHQpe3ZhciByLG4saT0wLG89dCYmdC5tYXRjaCh3ZSk7aWYobyYmMT09PWUubm9kZVR5cGUp
Zm9yKDtyPW9baSsrXTspbj1vZS5wcm9wRml4W3JdfHxyLG9lLmV4cHIubWF0Y2guYm9vbC50ZXN0
KHIpJiYoZVtuXT0hMSksZS5yZW1vdmVBdHRyaWJ1dGUocil9fSksdXQ9e3NldDpmdW5jdGlvbihl
LHQscil7cmV0dXJuIHQ9PT0hMT9vZS5yZW1vdmVBdHRyKGUscik6ZS5zZXRBdHRyaWJ1dGUocixy
KSxyfX0sb2UuZWFjaChvZS5leHByLm1hdGNoLmJvb2wuc291cmNlLm1hdGNoKC9cdysvZyksZnVu
Y3Rpb24oZSx0KXt2YXIgcj1sdFt0XXx8b2UuZmluZC5hdHRyO2x0W3RdPWZ1bmN0aW9uKGUsdCxu
KXt2YXIgaSxvO3JldHVybiBufHwobz1sdFt0XSxsdFt0XT1pLGk9bnVsbCE9cihlLHQsbik/dC50
b0xvd2VyQ2FzZSgpOm51bGwsbHRbdF09byksaX19KTt2YXIgY3Q9L14oPzppbnB1dHxzZWxlY3R8
dGV4dGFyZWF8YnV0dG9uKSQvaSxmdD0vXig/OmF8YXJlYSkkL2k7b2UuZm4uZXh0ZW5kKHtwcm9w
OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGtlKHRoaXMsb2UucHJvcCxlLHQsYXJndW1lbnRzLmxlbmd0
aD4xKX0scmVtb3ZlUHJvcDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7
ZGVsZXRlIHRoaXNbb2UucHJvcEZpeFtlXXx8ZV19KX19KSxvZS5leHRlbmQoe3Byb3A6ZnVuY3Rp
b24oZSx0LHIpe3ZhciBuLGksbz1lLm5vZGVUeXBlO2lmKDMhPT1vJiY4IT09byYmMiE9PW8pcmV0
dXJuIDE9PT1vJiZvZS5pc1hNTERvYyhlKXx8KHQ9b2UucHJvcEZpeFt0XXx8dCxpPW9lLnByb3BI
b29rc1t0XSksdm9pZCAwIT09cj9pJiYic2V0ImluIGkmJnZvaWQgMCE9PShuPWkuc2V0KGUscix0
KSk/bjplW3RdPXI6aSYmImdldCJpbiBpJiZudWxsIT09KG49aS5nZXQoZSx0KSk/bjplW3RdfSxw
cm9wSG9va3M6e3RhYkluZGV4OntnZXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9b2UuZmluZC5hdHRyKGUs
InRhYmluZGV4Iik7cmV0dXJuIHQ/cGFyc2VJbnQodCwxMCk6Y3QudGVzdChlLm5vZGVOYW1lKXx8
ZnQudGVzdChlLm5vZGVOYW1lKSYmZS5ocmVmPzA6LTF9fX0scHJvcEZpeDp7Zm9yOiJodG1sRm9y
IixjbGFzczoiY2xhc3NOYW1lIn19KSxuZS5vcHRTZWxlY3RlZHx8KG9lLnByb3BIb29rcy5zZWxl
Y3RlZD17Z2V0OmZ1bmN0aW9uKGUpe3ZhciB0PWUucGFyZW50Tm9kZTtyZXR1cm4gdCYmdC5wYXJl
bnROb2RlJiZ0LnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCxudWxsfSxzZXQ6ZnVuY3Rpb24oZSl7
dmFyIHQ9ZS5wYXJlbnROb2RlO3QmJih0LnNlbGVjdGVkSW5kZXgsdC5wYXJlbnROb2RlJiZ0LnBh
cmVudE5vZGUuc2VsZWN0ZWRJbmRleCl9fSksb2UuZWFjaChbInRhYkluZGV4IiwicmVhZE9ubHki
LCJtYXhMZW5ndGgiLCJjZWxsU3BhY2luZyIsImNlbGxQYWRkaW5nIiwicm93U3BhbiIsImNvbFNw
YW4iLCJ1c2VNYXAiLCJmcmFtZUJvcmRlciIsImNvbnRlbnRFZGl0YWJsZSJdLGZ1bmN0aW9uKCl7
b2UucHJvcEZpeFt0aGlzLnRvTG93ZXJDYXNlKCldPXRoaXN9KTt2YXIgZHQ9L1tcdFxyXG5cZl0v
ZztvZS5mbi5leHRlbmQoe2FkZENsYXNzOmZ1bmN0aW9uKGUpe3ZhciB0LHIsbixpLG8sYSxzLHU9
MDtpZihvZS5pc0Z1bmN0aW9uKGUpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24odCl7b2UodGhp
cykuYWRkQ2xhc3MoZS5jYWxsKHRoaXMsdCxWKHRoaXMpKSl9KTtpZigic3RyaW5nIj09dHlwZW9m
IGUmJmUpZm9yKHQ9ZS5tYXRjaCh3ZSl8fFtdO3I9dGhpc1t1KytdOylpZihpPVYociksbj0xPT09
ci5ub2RlVHlwZSYmKCIgIitpKyIgIikucmVwbGFjZShkdCwiICIpKXtmb3IoYT0wO289dFthKytd
OyluLmluZGV4T2YoIiAiK28rIiAiKTwwJiYobis9bysiICIpO3M9b2UudHJpbShuKSxpIT09cyYm
ci5zZXRBdHRyaWJ1dGUoImNsYXNzIixzKX1yZXR1cm4gdGhpc30scmVtb3ZlQ2xhc3M6ZnVuY3Rp
b24oZSl7dmFyIHQscixuLGksbyxhLHMsdT0wO2lmKG9lLmlzRnVuY3Rpb24oZSkpcmV0dXJuIHRo
aXMuZWFjaChmdW5jdGlvbih0KXtvZSh0aGlzKS5yZW1vdmVDbGFzcyhlLmNhbGwodGhpcyx0LFYo
dGhpcykpKX0pO2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiB0aGlzLmF0dHIoImNsYXNzIiwi
Iik7aWYoInN0cmluZyI9PXR5cGVvZiBlJiZlKWZvcih0PWUubWF0Y2god2UpfHxbXTtyPXRoaXNb
dSsrXTspaWYoaT1WKHIpLG49MT09PXIubm9kZVR5cGUmJigiICIraSsiICIpLnJlcGxhY2UoZHQs
IiAiKSl7Zm9yKGE9MDtvPXRbYSsrXTspZm9yKDtuLmluZGV4T2YoIiAiK28rIiAiKT4tMTspbj1u
LnJlcGxhY2UoIiAiK28rIiAiLCIgIik7cz1vZS50cmltKG4pLGkhPT1zJiZyLnNldEF0dHJpYnV0
ZSgiY2xhc3MiLHMpfXJldHVybiB0aGlzfSx0b2dnbGVDbGFzczpmdW5jdGlvbihlLHQpe3ZhciBy
PXR5cGVvZiBlO3JldHVybiJib29sZWFuIj09dHlwZW9mIHQmJiJzdHJpbmciPT09cj90P3RoaXMu
YWRkQ2xhc3MoZSk6dGhpcy5yZW1vdmVDbGFzcyhlKTpvZS5pc0Z1bmN0aW9uKGUpP3RoaXMuZWFj
aChmdW5jdGlvbihyKXtvZSh0aGlzKS50b2dnbGVDbGFzcyhlLmNhbGwodGhpcyxyLFYodGhpcyks
dCksdCl9KTp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgdCxuLGksbztpZigic3RyaW5nIj09PXIp
Zm9yKG49MCxpPW9lKHRoaXMpLG89ZS5tYXRjaCh3ZSl8fFtdO3Q9b1tuKytdOylpLmhhc0NsYXNz
KHQpP2kucmVtb3ZlQ2xhc3ModCk6aS5hZGRDbGFzcyh0KTtlbHNlIHZvaWQgMCE9PWUmJiJib29s
ZWFuIiE9PXJ8fCh0PVYodGhpcyksdCYmRWUuc2V0KHRoaXMsIl9fY2xhc3NOYW1lX18iLHQpLHRo
aXMuc2V0QXR0cmlidXRlJiZ0aGlzLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHR8fGU9PT0hMT8iIjpF
ZS5nZXQodGhpcywiX19jbGFzc05hbWVfXyIpfHwiIikpfSl9LGhhc0NsYXNzOmZ1bmN0aW9uKGUp
e3ZhciB0LHIsbj0wO2Zvcih0PSIgIitlKyIgIjtyPXRoaXNbbisrXTspaWYoMT09PXIubm9kZVR5
cGUmJigiICIrVihyKSsiICIpLnJlcGxhY2UoZHQsIiAiKS5pbmRleE9mKHQpPi0xKXJldHVybiEw
O3JldHVybiExfX0pO3ZhciBwdD0vXHIvZyxodD0vW1x4MjBcdFxyXG5cZl0rL2c7b2UuZm4uZXh0
ZW5kKHt2YWw6ZnVuY3Rpb24oZSl7dmFyIHQscixuLGk9dGhpc1swXTt7aWYoYXJndW1lbnRzLmxl
bmd0aClyZXR1cm4gbj1vZS5pc0Z1bmN0aW9uKGUpLHRoaXMuZWFjaChmdW5jdGlvbihyKXt2YXIg
aTsxPT09dGhpcy5ub2RlVHlwZSYmKGk9bj9lLmNhbGwodGhpcyxyLG9lKHRoaXMpLnZhbCgpKTpl
LG51bGw9PWk/aT0iIjoibnVtYmVyIj09dHlwZW9mIGk/aSs9IiI6b2UuaXNBcnJheShpKSYmKGk9
b2UubWFwKGksZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWU/IiI6ZSsiIn0pKSx0PW9lLnZhbEhv
b2tzW3RoaXMudHlwZV18fG9lLnZhbEhvb2tzW3RoaXMubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0s
dCYmInNldCJpbiB0JiZ2b2lkIDAhPT10LnNldCh0aGlzLGksInZhbHVlIil8fCh0aGlzLnZhbHVl
PWkpKX0pO2lmKGkpcmV0dXJuIHQ9b2UudmFsSG9va3NbaS50eXBlXXx8b2UudmFsSG9va3NbaS5u
b2RlTmFtZS50b0xvd2VyQ2FzZSgpXSx0JiYiZ2V0ImluIHQmJnZvaWQgMCE9PShyPXQuZ2V0KGks
InZhbHVlIikpP3I6KHI9aS52YWx1ZSwic3RyaW5nIj09dHlwZW9mIHI/ci5yZXBsYWNlKHB0LCIi
KTpudWxsPT1yPyIiOnIpfX19KSxvZS5leHRlbmQoe3ZhbEhvb2tzOntvcHRpb246e2dldDpmdW5j
dGlvbihlKXt2YXIgdD1vZS5maW5kLmF0dHIoZSwidmFsdWUiKTtyZXR1cm4gbnVsbCE9dD90Om9l
LnRyaW0ob2UudGV4dChlKSkucmVwbGFjZShodCwiICIpfX0sc2VsZWN0OntnZXQ6ZnVuY3Rpb24o
ZSl7Zm9yKHZhciB0LHIsbj1lLm9wdGlvbnMsaT1lLnNlbGVjdGVkSW5kZXgsbz0ic2VsZWN0LW9u
ZSI9PT1lLnR5cGV8fGk8MCxhPW8/bnVsbDpbXSxzPW8/aSsxOm4ubGVuZ3RoLHU9aTwwP3M6bz9p
OjA7dTxzO3UrKylpZihyPW5bdV0sKHIuc2VsZWN0ZWR8fHU9PT1pKSYmKG5lLm9wdERpc2FibGVk
PyFyLmRpc2FibGVkOm51bGw9PT1yLmdldEF0dHJpYnV0ZSgiZGlzYWJsZWQiKSkmJighci5wYXJl
bnROb2RlLmRpc2FibGVkfHwhb2Uubm9kZU5hbWUoci5wYXJlbnROb2RlLCJvcHRncm91cCIpKSl7
aWYodD1vZShyKS52YWwoKSxvKXJldHVybiB0O2EucHVzaCh0KX1yZXR1cm4gYX0sc2V0OmZ1bmN0
aW9uKGUsdCl7Zm9yKHZhciByLG4saT1lLm9wdGlvbnMsbz1vZS5tYWtlQXJyYXkodCksYT1pLmxl
bmd0aDthLS07KW49aVthXSwobi5zZWxlY3RlZD1vZS5pbkFycmF5KG9lLnZhbEhvb2tzLm9wdGlv
bi5nZXQobiksbyk+LTEpJiYocj0hMCk7cmV0dXJuIHJ8fChlLnNlbGVjdGVkSW5kZXg9LTEpLG99
fX19KSxvZS5lYWNoKFsicmFkaW8iLCJjaGVja2JveCJdLGZ1bmN0aW9uKCl7b2UudmFsSG9va3Nb
dGhpc109e3NldDpmdW5jdGlvbihlLHQpe2lmKG9lLmlzQXJyYXkodCkpcmV0dXJuIGUuY2hlY2tl
ZD1vZS5pbkFycmF5KG9lKGUpLnZhbCgpLHQpPi0xfX0sbmUuY2hlY2tPbnx8KG9lLnZhbEhvb2tz
W3RoaXNdLmdldD1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09PWUuZ2V0QXR0cmlidXRlKCJ2YWx1
ZSIpPyJvbiI6ZS52YWx1ZX0pfSk7dmFyIG10PS9eKD86Zm9jdXNpbmZvY3VzfGZvY3Vzb3V0Ymx1
cikkLztvZS5leHRlbmQob2UuZXZlbnQse3RyaWdnZXI6ZnVuY3Rpb24odCxyLG4saSl7dmFyIG8s
YSxzLHUsbCxjLGYsZD1bbnx8R10scD1yZS5jYWxsKHQsInR5cGUiKT90LnR5cGU6dCxoPXJlLmNh
bGwodCwibmFtZXNwYWNlIik/dC5uYW1lc3BhY2Uuc3BsaXQoIi4iKTpbXTtpZihhPXM9bj1ufHxH
LDMhPT1uLm5vZGVUeXBlJiY4IT09bi5ub2RlVHlwZSYmIW10LnRlc3QocCtvZS5ldmVudC50cmln
Z2VyZWQpJiYocC5pbmRleE9mKCIuIik+LTEmJihoPXAuc3BsaXQoIi4iKSxwPWguc2hpZnQoKSxo
LnNvcnQoKSksbD1wLmluZGV4T2YoIjoiKTwwJiYib24iK3AsdD10W29lLmV4cGFuZG9dP3Q6bmV3
IG9lLkV2ZW50KHAsIm9iamVjdCI9PXR5cGVvZiB0JiZ0KSx0LmlzVHJpZ2dlcj1pPzI6Myx0Lm5h
bWVzcGFjZT1oLmpvaW4oIi4iKSx0LnJuYW1lc3BhY2U9dC5uYW1lc3BhY2U/bmV3IFJlZ0V4cCgi
KF58XFwuKSIraC5qb2luKCJcXC4oPzouKlxcLnwpIikrIihcXC58JCkiKTpudWxsLHQucmVzdWx0
PXZvaWQgMCx0LnRhcmdldHx8KHQudGFyZ2V0PW4pLHI9bnVsbD09cj9bdF06b2UubWFrZUFycmF5
KHIsW3RdKSxmPW9lLmV2ZW50LnNwZWNpYWxbcF18fHt9LGl8fCFmLnRyaWdnZXJ8fGYudHJpZ2dl
ci5hcHBseShuLHIpIT09ITEpKXtpZighaSYmIWYubm9CdWJibGUmJiFvZS5pc1dpbmRvdyhuKSl7
Zm9yKHU9Zi5kZWxlZ2F0ZVR5cGV8fHAsbXQudGVzdCh1K3ApfHwoYT1hLnBhcmVudE5vZGUpO2E7
YT1hLnBhcmVudE5vZGUpZC5wdXNoKGEpLHM9YTtzPT09KG4ub3duZXJEb2N1bWVudHx8RykmJmQu
cHVzaChzLmRlZmF1bHRWaWV3fHxzLnBhcmVudFdpbmRvd3x8ZSl9Zm9yKG89MDsoYT1kW28rK10p
JiYhdC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpOyl0LnR5cGU9bz4xP3U6Zi5iaW5kVHlwZXx8cCxj
PShFZS5nZXQoYSwiZXZlbnRzIil8fHt9KVt0LnR5cGVdJiZFZS5nZXQoYSwiaGFuZGxlIiksYyYm
Yy5hcHBseShhLHIpLGM9bCYmYVtsXSxjJiZjLmFwcGx5JiZDZShhKSYmKHQucmVzdWx0PWMuYXBw
bHkoYSxyKSx0LnJlc3VsdD09PSExJiZ0LnByZXZlbnREZWZhdWx0KCkpO3JldHVybiB0LnR5cGU9
cCxpfHx0LmlzRGVmYXVsdFByZXZlbnRlZCgpfHxmLl9kZWZhdWx0JiZmLl9kZWZhdWx0LmFwcGx5
KGQucG9wKCkscikhPT0hMXx8IUNlKG4pfHxsJiZvZS5pc0Z1bmN0aW9uKG5bcF0pJiYhb2UuaXNX
aW5kb3cobikmJihzPW5bbF0scyYmKG5bbF09bnVsbCksb2UuZXZlbnQudHJpZ2dlcmVkPXAsbltw
XSgpLG9lLmV2ZW50LnRyaWdnZXJlZD12b2lkIDAscyYmKG5bbF09cykpLHQucmVzdWx0fX0sc2lt
dWxhdGU6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPW9lLmV4dGVuZChuZXcgb2UuRXZlbnQscix7dHlw
ZTplLGlzU2ltdWxhdGVkOiEwfSk7b2UuZXZlbnQudHJpZ2dlcihuLG51bGwsdCl9fSksb2UuZm4u
ZXh0ZW5kKHt0cmlnZ2VyOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigp
e29lLmV2ZW50LnRyaWdnZXIoZSx0LHRoaXMpfSl9LHRyaWdnZXJIYW5kbGVyOmZ1bmN0aW9uKGUs
dCl7dmFyIHI9dGhpc1swXTtpZihyKXJldHVybiBvZS5ldmVudC50cmlnZ2VyKGUsdCxyLCEwKX19
KSxvZS5lYWNoKCJibHVyIGZvY3VzIGZvY3VzaW4gZm9jdXNvdXQgbG9hZCByZXNpemUgc2Nyb2xs
IHVubG9hZCBjbGljayBkYmxjbGljayBtb3VzZWRvd24gbW91c2V1cCBtb3VzZW1vdmUgbW91c2Vv
dmVyIG1vdXNlb3V0IG1vdXNlZW50ZXIgbW91c2VsZWF2ZSBjaGFuZ2Ugc2VsZWN0IHN1Ym1pdCBr
ZXlkb3duIGtleXByZXNzIGtleXVwIGVycm9yIGNvbnRleHRtZW51Ii5zcGxpdCgiICIpLGZ1bmN0
aW9uKGUsdCl7b2UuZm5bdF09ZnVuY3Rpb24oZSxyKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4w
P3RoaXMub24odCxudWxsLGUscik6dGhpcy50cmlnZ2VyKHQpfX0pLG9lLmZuLmV4dGVuZCh7aG92
ZXI6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5tb3VzZWVudGVyKGUpLm1vdXNlbGVhdmUodHx8
ZSl9fSksbmUuZm9jdXNpbj0ib25mb2N1c2luImluIGUsbmUuZm9jdXNpbnx8b2UuZWFjaCh7Zm9j
dXM6ImZvY3VzaW4iLGJsdXI6ImZvY3Vzb3V0In0sZnVuY3Rpb24oZSx0KXt2YXIgcj1mdW5jdGlv
bihlKXtvZS5ldmVudC5zaW11bGF0ZSh0LGUudGFyZ2V0LG9lLmV2ZW50LmZpeChlKSl9O29lLmV2
ZW50LnNwZWNpYWxbdF09e3NldHVwOmZ1bmN0aW9uKCl7dmFyIG49dGhpcy5vd25lckRvY3VtZW50
fHx0aGlzLGk9RWUuYWNjZXNzKG4sdCk7aXx8bi5hZGRFdmVudExpc3RlbmVyKGUsciwhMCksRWUu
YWNjZXNzKG4sdCwoaXx8MCkrMSl9LHRlYXJkb3duOmZ1bmN0aW9uKCl7dmFyIG49dGhpcy5vd25l
ckRvY3VtZW50fHx0aGlzLGk9RWUuYWNjZXNzKG4sdCktMTtpP0VlLmFjY2VzcyhuLHQsaSk6KG4u
cmVtb3ZlRXZlbnRMaXN0ZW5lcihlLHIsITApLEVlLnJlbW92ZShuLHQpKX19fSk7dmFyIHZ0PWUu
bG9jYXRpb24sYnQ9b2Uubm93KCksZ3Q9L1w/LztvZS5wYXJzZUpTT049ZnVuY3Rpb24oZSl7cmV0
dXJuIEpTT04ucGFyc2UoZSsiIil9LG9lLnBhcnNlWE1MPWZ1bmN0aW9uKHQpe3ZhciByO2lmKCF0
fHwic3RyaW5nIiE9dHlwZW9mIHQpcmV0dXJuIG51bGw7dHJ5e3I9KG5ldyBlLkRPTVBhcnNlciku
cGFyc2VGcm9tU3RyaW5nKHQsInRleHQveG1sIil9Y2F0Y2goZSl7cj12b2lkIDB9cmV0dXJuIHIm
JiFyLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJwYXJzZXJlcnJvciIpLmxlbmd0aHx8b2UuZXJyb3Io
IkludmFsaWQgWE1MOiAiK3QpLHJ9O3ZhciB5dD0vIy4qJC8sX3Q9LyhbPyZdKV89W14mXSovLHd0
PS9eKC4qPyk6WyBcdF0qKFteXHJcbl0qKSQvZ20seHQ9L14oPzphYm91dHxhcHB8YXBwLXN0b3Jh
Z2V8ListZXh0ZW5zaW9ufGZpbGV8cmVzfHdpZGdldCk6JC8sa3Q9L14oPzpHRVR8SEVBRCkkLyxD
dD0vXlwvXC8vLEV0PXt9LE90PXt9LFR0PSIqLyIuY29uY2F0KCIqIiksTnQ9Ry5jcmVhdGVFbGVt
ZW50KCJhIik7TnQuaHJlZj12dC5ocmVmLG9lLmV4dGVuZCh7YWN0aXZlOjAsbGFzdE1vZGlmaWVk
Ont9LGV0YWc6e30sYWpheFNldHRpbmdzOnt1cmw6dnQuaHJlZix0eXBlOiJHRVQiLGlzTG9jYWw6
eHQudGVzdCh2dC5wcm90b2NvbCksZ2xvYmFsOiEwLHByb2Nlc3NEYXRhOiEwLGFzeW5jOiEwLGNv
bnRlbnRUeXBlOiJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9VVRG
LTgiLGFjY2VwdHM6eyIqIjpUdCx0ZXh0OiJ0ZXh0L3BsYWluIixodG1sOiJ0ZXh0L2h0bWwiLHht
bDoiYXBwbGljYXRpb24veG1sLCB0ZXh0L3htbCIsanNvbjoiYXBwbGljYXRpb24vanNvbiwgdGV4
dC9qYXZhc2NyaXB0In0sY29udGVudHM6e3htbDovXGJ4bWxcYi8saHRtbDovXGJodG1sLyxqc29u
Oi9cYmpzb25cYi99LHJlc3BvbnNlRmllbGRzOnt4bWw6InJlc3BvbnNlWE1MIix0ZXh0OiJyZXNw
b25zZVRleHQiLGpzb246InJlc3BvbnNlSlNPTiJ9LGNvbnZlcnRlcnM6eyIqIHRleHQiOlN0cmlu
ZywidGV4dCBodG1sIjohMCwidGV4dCBqc29uIjpvZS5wYXJzZUpTT04sInRleHQgeG1sIjpvZS5w
YXJzZVhNTH0sZmxhdE9wdGlvbnM6e3VybDohMCxjb250ZXh0OiEwfX0sYWpheFNldHVwOmZ1bmN0
aW9uKGUsdCl7cmV0dXJuIHQ/QihCKGUsb2UuYWpheFNldHRpbmdzKSx0KTpCKG9lLmFqYXhTZXR0
aW5ncyxlKX0sYWpheFByZWZpbHRlcjpxKEV0KSxhamF4VHJhbnNwb3J0OnEoT3QpLGFqYXg6ZnVu
Y3Rpb24odCxyKXtmdW5jdGlvbiBuKHQscixuLHMpe3ZhciBsLGYsZyx5LHcsaz1yOzIhPT1fJiYo
Xz0yLHUmJmUuY2xlYXJUaW1lb3V0KHUpLGk9dm9pZCAwLGE9c3x8IiIseC5yZWFkeVN0YXRlPXQ+
MD80OjAsbD10Pj0yMDAmJnQ8MzAwfHwzMDQ9PT10LG4mJih5PVUoZCx4LG4pKSx5PVcoZCx5LHgs
bCksbD8oZC5pZk1vZGlmaWVkJiYodz14LmdldFJlc3BvbnNlSGVhZGVyKCJMYXN0LU1vZGlmaWVk
IiksdyYmKG9lLmxhc3RNb2RpZmllZFtvXT13KSx3PXguZ2V0UmVzcG9uc2VIZWFkZXIoImV0YWci
KSx3JiYob2UuZXRhZ1tvXT13KSksMjA0PT09dHx8IkhFQUQiPT09ZC50eXBlP2s9Im5vY29udGVu
dCI6MzA0PT09dD9rPSJub3Rtb2RpZmllZCI6KGs9eS5zdGF0ZSxmPXkuZGF0YSxnPXkuZXJyb3Is
bD0hZykpOihnPWssIXQmJmt8fChrPSJlcnJvciIsdDwwJiYodD0wKSkpLHguc3RhdHVzPXQseC5z
dGF0dXNUZXh0PShyfHxrKSsiIixsP20ucmVzb2x2ZVdpdGgocCxbZixrLHhdKTptLnJlamVjdFdp
dGgocCxbeCxrLGddKSx4LnN0YXR1c0NvZGUoYiksYj12b2lkIDAsYyYmaC50cmlnZ2VyKGw/ImFq
YXhTdWNjZXNzIjoiYWpheEVycm9yIixbeCxkLGw/ZjpnXSksdi5maXJlV2l0aChwLFt4LGtdKSxj
JiYoaC50cmlnZ2VyKCJhamF4Q29tcGxldGUiLFt4LGRdKSwtLW9lLmFjdGl2ZXx8b2UuZXZlbnQu
dHJpZ2dlcigiYWpheFN0b3AiKSkpfSJvYmplY3QiPT10eXBlb2YgdCYmKHI9dCx0PXZvaWQgMCks
cj1yfHx7fTt2YXIgaSxvLGEscyx1LGwsYyxmLGQ9b2UuYWpheFNldHVwKHt9LHIpLHA9ZC5jb250
ZXh0fHxkLGg9ZC5jb250ZXh0JiYocC5ub2RlVHlwZXx8cC5qcXVlcnkpP29lKHApOm9lLmV2ZW50
LG09b2UuRGVmZXJyZWQoKSx2PW9lLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSxiPWQuc3RhdHVz
Q29kZXx8e30sZz17fSx5PXt9LF89MCx3PSJjYW5jZWxlZCIseD17cmVhZHlTdGF0ZTowLGdldFJl
c3BvbnNlSGVhZGVyOmZ1bmN0aW9uKGUpe3ZhciB0O2lmKDI9PT1fKXtpZighcylmb3Iocz17fTt0
PXd0LmV4ZWMoYSk7KXNbdFsxXS50b0xvd2VyQ2FzZSgpXT10WzJdO3Q9c1tlLnRvTG93ZXJDYXNl
KCldfXJldHVybiBudWxsPT10P251bGw6dH0sZ2V0QWxsUmVzcG9uc2VIZWFkZXJzOmZ1bmN0aW9u
KCl7cmV0dXJuIDI9PT1fP2E6bnVsbH0sc2V0UmVxdWVzdEhlYWRlcjpmdW5jdGlvbihlLHQpe3Zh
ciByPWUudG9Mb3dlckNhc2UoKTtyZXR1cm4gX3x8KGU9eVtyXT15W3JdfHxlLGdbZV09dCksdGhp
c30sb3ZlcnJpZGVNaW1lVHlwZTpmdW5jdGlvbihlKXtyZXR1cm4gX3x8KGQubWltZVR5cGU9ZSks
dGhpc30sc3RhdHVzQ29kZTpmdW5jdGlvbihlKXt2YXIgdDtpZihlKWlmKF88Milmb3IodCBpbiBl
KWJbdF09W2JbdF0sZVt0XV07ZWxzZSB4LmFsd2F5cyhlW3guc3RhdHVzXSk7cmV0dXJuIHRoaXN9
LGFib3J0OmZ1bmN0aW9uKGUpe3ZhciB0PWV8fHc7cmV0dXJuIGkmJmkuYWJvcnQodCksbigwLHQp
LHRoaXN9fTtpZihtLnByb21pc2UoeCkuY29tcGxldGU9di5hZGQseC5zdWNjZXNzPXguZG9uZSx4
LmVycm9yPXguZmFpbCxkLnVybD0oKHR8fGQudXJsfHx2dC5ocmVmKSsiIikucmVwbGFjZSh5dCwi
IikucmVwbGFjZShDdCx2dC5wcm90b2NvbCsiLy8iKSxkLnR5cGU9ci5tZXRob2R8fHIudHlwZXx8
ZC5tZXRob2R8fGQudHlwZSxkLmRhdGFUeXBlcz1vZS50cmltKGQuZGF0YVR5cGV8fCIqIikudG9M
b3dlckNhc2UoKS5tYXRjaCh3ZSl8fFsiIl0sbnVsbD09ZC5jcm9zc0RvbWFpbil7bD1HLmNyZWF0
ZUVsZW1lbnQoImEiKTt0cnl7bC5ocmVmPWQudXJsLGwuaHJlZj1sLmhyZWYsZC5jcm9zc0RvbWFp
bj1OdC5wcm90b2NvbCsiLy8iK050Lmhvc3QhPWwucHJvdG9jb2wrIi8vIitsLmhvc3R9Y2F0Y2go
ZSl7ZC5jcm9zc0RvbWFpbj0hMH19aWYoZC5kYXRhJiZkLnByb2Nlc3NEYXRhJiYic3RyaW5nIiE9
dHlwZW9mIGQuZGF0YSYmKGQuZGF0YT1vZS5wYXJhbShkLmRhdGEsZC50cmFkaXRpb25hbCkpLHoo
RXQsZCxyLHgpLDI9PT1fKXJldHVybiB4O2M9b2UuZXZlbnQmJmQuZ2xvYmFsLGMmJjA9PT1vZS5h
Y3RpdmUrKyYmb2UuZXZlbnQudHJpZ2dlcigiYWpheFN0YXJ0IiksZC50eXBlPWQudHlwZS50b1Vw
cGVyQ2FzZSgpLGQuaGFzQ29udGVudD0ha3QudGVzdChkLnR5cGUpLG89ZC51cmwsZC5oYXNDb250
ZW50fHwoZC5kYXRhJiYobz1kLnVybCs9KGd0LnRlc3Qobyk/IiYiOiI/IikrZC5kYXRhLGRlbGV0
ZSBkLmRhdGEpLGQuY2FjaGU9PT0hMSYmKGQudXJsPV90LnRlc3Qobyk/by5yZXBsYWNlKF90LCIk
MV89IitidCsrKTpvKyhndC50ZXN0KG8pPyImIjoiPyIpKyJfPSIrYnQrKykpLGQuaWZNb2RpZmll
ZCYmKG9lLmxhc3RNb2RpZmllZFtvXSYmeC5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1Nb2RpZmllZC1T
aW5jZSIsb2UubGFzdE1vZGlmaWVkW29dKSxvZS5ldGFnW29dJiZ4LnNldFJlcXVlc3RIZWFkZXIo
IklmLU5vbmUtTWF0Y2giLG9lLmV0YWdbb10pKSwoZC5kYXRhJiZkLmhhc0NvbnRlbnQmJmQuY29u
dGVudFR5cGUhPT0hMXx8ci5jb250ZW50VHlwZSkmJnguc2V0UmVxdWVzdEhlYWRlcigiQ29udGVu
dC1UeXBlIixkLmNvbnRlbnRUeXBlKSx4LnNldFJlcXVlc3RIZWFkZXIoIkFjY2VwdCIsZC5kYXRh
VHlwZXNbMF0mJmQuYWNjZXB0c1tkLmRhdGFUeXBlc1swXV0/ZC5hY2NlcHRzW2QuZGF0YVR5cGVz
WzBdXSsoIioiIT09ZC5kYXRhVHlwZXNbMF0/IiwgIitUdCsiOyBxPTAuMDEiOiIiKTpkLmFjY2Vw
dHNbIioiXSk7Zm9yKGYgaW4gZC5oZWFkZXJzKXguc2V0UmVxdWVzdEhlYWRlcihmLGQuaGVhZGVy
c1tmXSk7aWYoZC5iZWZvcmVTZW5kJiYoZC5iZWZvcmVTZW5kLmNhbGwocCx4LGQpPT09ITF8fDI9
PT1fKSlyZXR1cm4geC5hYm9ydCgpO3c9ImFib3J0Ijtmb3IoZiBpbntzdWNjZXNzOjEsZXJyb3I6
MSxjb21wbGV0ZToxfSl4W2ZdKGRbZl0pO2lmKGk9eihPdCxkLHIseCkpe2lmKHgucmVhZHlTdGF0
ZT0xLGMmJmgudHJpZ2dlcigiYWpheFNlbmQiLFt4LGRdKSwyPT09XylyZXR1cm4geDtkLmFzeW5j
JiZkLnRpbWVvdXQ+MCYmKHU9ZS5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7eC5hYm9ydCgidGltZW91
dCIpfSxkLnRpbWVvdXQpKTt0cnl7Xz0xLGkuc2VuZChnLG4pfWNhdGNoKGUpe2lmKCEoXzwyKSl0
aHJvdyBlO24oLTEsZSl9fWVsc2UgbigtMSwiTm8gVHJhbnNwb3J0Iik7cmV0dXJuIHh9LGdldEpT
T046ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBvZS5nZXQoZSx0LHIsImpzb24iKX0sZ2V0U2NyaXB0
OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIG9lLmdldChlLHZvaWQgMCx0LCJzY3JpcHQiKX19KSxvZS5l
YWNoKFsiZ2V0IiwicG9zdCJdLGZ1bmN0aW9uKGUsdCl7b2VbdF09ZnVuY3Rpb24oZSxyLG4saSl7
cmV0dXJuIG9lLmlzRnVuY3Rpb24ocikmJihpPWl8fG4sbj1yLHI9dm9pZCAwKSxvZS5hamF4KG9l
LmV4dGVuZCh7dXJsOmUsdHlwZTp0LGRhdGFUeXBlOmksZGF0YTpyLHN1Y2Nlc3M6bn0sb2UuaXNQ
bGFpbk9iamVjdChlKSYmZSkpfX0pLG9lLl9ldmFsVXJsPWZ1bmN0aW9uKGUpe3JldHVybiBvZS5h
amF4KHt1cmw6ZSx0eXBlOiJHRVQiLGRhdGFUeXBlOiJzY3JpcHQiLGFzeW5jOiExLGdsb2JhbDoh
MSx0aHJvd3M6ITB9KX0sb2UuZm4uZXh0ZW5kKHt3cmFwQWxsOmZ1bmN0aW9uKGUpe3ZhciB0O3Jl
dHVybiBvZS5pc0Z1bmN0aW9uKGUpP3RoaXMuZWFjaChmdW5jdGlvbih0KXtvZSh0aGlzKS53cmFw
QWxsKGUuY2FsbCh0aGlzLHQpKX0pOih0aGlzWzBdJiYodD1vZShlLHRoaXNbMF0ub3duZXJEb2N1
bWVudCkuZXEoMCkuY2xvbmUoITApLHRoaXNbMF0ucGFyZW50Tm9kZSYmdC5pbnNlcnRCZWZvcmUo
dGhpc1swXSksdC5tYXAoZnVuY3Rpb24oKXtmb3IodmFyIGU9dGhpcztlLmZpcnN0RWxlbWVudENo
aWxkOyllPWUuZmlyc3RFbGVtZW50Q2hpbGQ7cmV0dXJuIGV9KS5hcHBlbmQodGhpcykpLHRoaXMp
fSx3cmFwSW5uZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIG9lLmlzRnVuY3Rpb24oZSk/dGhpcy5lYWNo
KGZ1bmN0aW9uKHQpe29lKHRoaXMpLndyYXBJbm5lcihlLmNhbGwodGhpcyx0KSl9KTp0aGlzLmVh
Y2goZnVuY3Rpb24oKXt2YXIgdD1vZSh0aGlzKSxyPXQuY29udGVudHMoKTtyLmxlbmd0aD9yLndy
YXBBbGwoZSk6dC5hcHBlbmQoZSl9KX0sd3JhcDpmdW5jdGlvbihlKXt2YXIgdD1vZS5pc0Z1bmN0
aW9uKGUpO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24ocil7b2UodGhpcykud3JhcEFsbCh0P2Uu
Y2FsbCh0aGlzLHIpOmUpfSl9LHVud3JhcDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBhcmVudCgp
LmVhY2goZnVuY3Rpb24oKXtvZS5ub2RlTmFtZSh0aGlzLCJib2R5Iil8fG9lKHRoaXMpLnJlcGxh
Y2VXaXRoKHRoaXMuY2hpbGROb2Rlcyl9KS5lbmQoKX19KSxvZS5leHByLmZpbHRlcnMuaGlkZGVu
PWZ1bmN0aW9uKGUpe3JldHVybiFvZS5leHByLmZpbHRlcnMudmlzaWJsZShlKX0sb2UuZXhwci5m
aWx0ZXJzLnZpc2libGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGUub2Zmc2V0V2lkdGg+MHx8ZS5vZmZz
ZXRIZWlnaHQ+MHx8ZS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aD4wfTt2YXIgU3Q9LyUyMC9nLEF0
PS9cW1xdJC8sUHQ9L1xyP1xuL2csanQ9L14oPzpzdWJtaXR8YnV0dG9ufGltYWdlfHJlc2V0fGZp
bGUpJC9pLFJ0PS9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGtleWdlbikvaTtvZS5wYXJhbT1m
dW5jdGlvbihlLHQpe3ZhciByLG49W10saT1mdW5jdGlvbihlLHQpe3Q9b2UuaXNGdW5jdGlvbih0
KT90KCk6bnVsbD09dD8iIjp0LG5bbi5sZW5ndGhdPWVuY29kZVVSSUNvbXBvbmVudChlKSsiPSIr
ZW5jb2RlVVJJQ29tcG9uZW50KHQpfTtpZih2b2lkIDA9PT10JiYodD1vZS5hamF4U2V0dGluZ3Mm
Jm9lLmFqYXhTZXR0aW5ncy50cmFkaXRpb25hbCksb2UuaXNBcnJheShlKXx8ZS5qcXVlcnkmJiFv
ZS5pc1BsYWluT2JqZWN0KGUpKW9lLmVhY2goZSxmdW5jdGlvbigpe2kodGhpcy5uYW1lLHRoaXMu
dmFsdWUpfSk7ZWxzZSBmb3IociBpbiBlKSQocixlW3JdLHQsaSk7cmV0dXJuIG4uam9pbigiJiIp
LnJlcGxhY2UoU3QsIisiKX0sb2UuZm4uZXh0ZW5kKHtzZXJpYWxpemU6ZnVuY3Rpb24oKXtyZXR1
cm4gb2UucGFyYW0odGhpcy5zZXJpYWxpemVBcnJheSgpKX0sc2VyaWFsaXplQXJyYXk6ZnVuY3Rp
b24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXt2YXIgZT1vZS5wcm9wKHRoaXMsImVsZW1l
bnRzIik7cmV0dXJuIGU/b2UubWFrZUFycmF5KGUpOnRoaXN9KS5maWx0ZXIoZnVuY3Rpb24oKXt2
YXIgZT10aGlzLnR5cGU7cmV0dXJuIHRoaXMubmFtZSYmIW9lKHRoaXMpLmlzKCI6ZGlzYWJsZWQi
KSYmUnQudGVzdCh0aGlzLm5vZGVOYW1lKSYmIWp0LnRlc3QoZSkmJih0aGlzLmNoZWNrZWR8fCFS
ZS50ZXN0KGUpKX0pLm1hcChmdW5jdGlvbihlLHQpe3ZhciByPW9lKHRoaXMpLnZhbCgpO3JldHVy
biBudWxsPT1yP251bGw6b2UuaXNBcnJheShyKT9vZS5tYXAocixmdW5jdGlvbihlKXtyZXR1cm57
bmFtZTp0Lm5hbWUsdmFsdWU6ZS5yZXBsYWNlKFB0LCJcclxuIil9fSk6e25hbWU6dC5uYW1lLHZh
bHVlOnIucmVwbGFjZShQdCwiXHJcbiIpfX0pLmdldCgpfX0pLG9lLmFqYXhTZXR0aW5ncy54aHI9
ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIG5ldyBlLlhNTEh0dHBSZXF1ZXN0fWNhdGNoKGUpe319O3Zh
ciBMdD17MDoyMDAsMTIyMzoyMDR9LER0PW9lLmFqYXhTZXR0aW5ncy54aHIoKTtuZS5jb3JzPSEh
RHQmJiJ3aXRoQ3JlZGVudGlhbHMiaW4gRHQsbmUuYWpheD1EdD0hIUR0LG9lLmFqYXhUcmFuc3Bv
cnQoZnVuY3Rpb24odCl7dmFyIHIsbjtpZihuZS5jb3JzfHxEdCYmIXQuY3Jvc3NEb21haW4pcmV0
dXJue3NlbmQ6ZnVuY3Rpb24oaSxvKXt2YXIgYSxzPXQueGhyKCk7aWYocy5vcGVuKHQudHlwZSx0
LnVybCx0LmFzeW5jLHQudXNlcm5hbWUsdC5wYXNzd29yZCksdC54aHJGaWVsZHMpZm9yKGEgaW4g
dC54aHJGaWVsZHMpc1thXT10LnhockZpZWxkc1thXTt0Lm1pbWVUeXBlJiZzLm92ZXJyaWRlTWlt
ZVR5cGUmJnMub3ZlcnJpZGVNaW1lVHlwZSh0Lm1pbWVUeXBlKSx0LmNyb3NzRG9tYWlufHxpWyJY
LVJlcXVlc3RlZC1XaXRoIl18fChpWyJYLVJlcXVlc3RlZC1XaXRoIl09IlhNTEh0dHBSZXF1ZXN0
Iik7Zm9yKGEgaW4gaSlzLnNldFJlcXVlc3RIZWFkZXIoYSxpW2FdKTtyPWZ1bmN0aW9uKGUpe3Jl
dHVybiBmdW5jdGlvbigpe3ImJihyPW49cy5vbmxvYWQ9cy5vbmVycm9yPXMub25hYm9ydD1zLm9u
cmVhZHlzdGF0ZWNoYW5nZT1udWxsLCJhYm9ydCI9PT1lP3MuYWJvcnQoKToiZXJyb3IiPT09ZT8i
bnVtYmVyIiE9dHlwZW9mIHMuc3RhdHVzP28oMCwiZXJyb3IiKTpvKHMuc3RhdHVzLHMuc3RhdHVz
VGV4dCk6byhMdFtzLnN0YXR1c118fHMuc3RhdHVzLHMuc3RhdHVzVGV4dCwidGV4dCIhPT0ocy5y
ZXNwb25zZVR5cGV8fCJ0ZXh0Iil8fCJzdHJpbmciIT10eXBlb2Ygcy5yZXNwb25zZVRleHQ/e2Jp
bmFyeTpzLnJlc3BvbnNlfTp7dGV4dDpzLnJlc3BvbnNlVGV4dH0scy5nZXRBbGxSZXNwb25zZUhl
YWRlcnMoKSkpfX0scy5vbmxvYWQ9cigpLG49cy5vbmVycm9yPXIoImVycm9yIiksdm9pZCAwIT09
cy5vbmFib3J0P3Mub25hYm9ydD1uOnMub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7ND09
PXMucmVhZHlTdGF0ZSYmZS5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ciYmbigpfSl9LHI9cigiYWJv
cnQiKTt0cnl7cy5zZW5kKHQuaGFzQ29udGVudCYmdC5kYXRhfHxudWxsKX1jYXRjaChlKXtpZihy
KXRocm93IGV9fSxhYm9ydDpmdW5jdGlvbigpe3ImJnIoKX19fSksb2UuYWpheFNldHVwKHthY2Nl
cHRzOntzY3JpcHQ6InRleHQvamF2YXNjcmlwdCwgYXBwbGljYXRpb24vamF2YXNjcmlwdCwgYXBw
bGljYXRpb24vZWNtYXNjcmlwdCwgYXBwbGljYXRpb24veC1lY21hc2NyaXB0In0sY29udGVudHM6
e3NjcmlwdDovXGIoPzpqYXZhfGVjbWEpc2NyaXB0XGIvfSxjb252ZXJ0ZXJzOnsidGV4dCBzY3Jp
cHQiOmZ1bmN0aW9uKGUpe3JldHVybiBvZS5nbG9iYWxFdmFsKGUpLGV9fX0pLG9lLmFqYXhQcmVm
aWx0ZXIoInNjcmlwdCIsZnVuY3Rpb24oZSl7dm9pZCAwPT09ZS5jYWNoZSYmKGUuY2FjaGU9ITEp
LGUuY3Jvc3NEb21haW4mJihlLnR5cGU9IkdFVCIpfSksb2UuYWpheFRyYW5zcG9ydCgic2NyaXB0
IixmdW5jdGlvbihlKXtpZihlLmNyb3NzRG9tYWluKXt2YXIgdCxyO3JldHVybntzZW5kOmZ1bmN0
aW9uKG4saSl7dD1vZSgiPHNjcmlwdD4iKS5wcm9wKHtjaGFyc2V0OmUuc2NyaXB0Q2hhcnNldCxz
cmM6ZS51cmx9KS5vbigibG9hZCBlcnJvciIscj1mdW5jdGlvbihlKXt0LnJlbW92ZSgpLHI9bnVs
bCxlJiZpKCJlcnJvciI9PT1lLnR5cGU/NDA0OjIwMCxlLnR5cGUpfSksRy5oZWFkLmFwcGVuZENo
aWxkKHRbMF0pfSxhYm9ydDpmdW5jdGlvbigpe3ImJnIoKX19fX0pO3ZhciBNdD1bXSxJdD0vKD0p
XD8oPz0mfCQpfFw/XD8vO29lLmFqYXhTZXR1cCh7anNvbnA6ImNhbGxiYWNrIixqc29ucENhbGxi
YWNrOmZ1bmN0aW9uKCl7dmFyIGU9TXQucG9wKCl8fG9lLmV4cGFuZG8rIl8iK2J0Kys7cmV0dXJu
IHRoaXNbZV09ITAsZX19KSxvZS5hamF4UHJlZmlsdGVyKCJqc29uIGpzb25wIixmdW5jdGlvbih0
LHIsbil7dmFyIGksbyxhLHM9dC5qc29ucCE9PSExJiYoSXQudGVzdCh0LnVybCk/InVybCI6InN0
cmluZyI9PXR5cGVvZiB0LmRhdGEmJjA9PT0odC5jb250ZW50VHlwZXx8IiIpLmluZGV4T2YoImFw
cGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpJiZJdC50ZXN0KHQuZGF0YSkmJiJkYXRh
Iik7aWYoc3x8Impzb25wIj09PXQuZGF0YVR5cGVzWzBdKXJldHVybiBpPXQuanNvbnBDYWxsYmFj
az1vZS5pc0Z1bmN0aW9uKHQuanNvbnBDYWxsYmFjayk/dC5qc29ucENhbGxiYWNrKCk6dC5qc29u
cENhbGxiYWNrLHM/dFtzXT10W3NdLnJlcGxhY2UoSXQsIiQxIitpKTp0Lmpzb25wIT09ITEmJih0
LnVybCs9KGd0LnRlc3QodC51cmwpPyImIjoiPyIpK3QuanNvbnArIj0iK2kpLHQuY29udmVydGVy
c1sic2NyaXB0IGpzb24iXT1mdW5jdGlvbigpe3JldHVybiBhfHxvZS5lcnJvcihpKyIgd2FzIG5v
dCBjYWxsZWQiKSxhWzBdfSx0LmRhdGFUeXBlc1swXT0ianNvbiIsbz1lW2ldLGVbaV09ZnVuY3Rp
b24oKXthPWFyZ3VtZW50c30sbi5hbHdheXMoZnVuY3Rpb24oKXt2b2lkIDA9PT1vP29lKGUpLnJl
bW92ZVByb3AoaSk6ZVtpXT1vLHRbaV0mJih0Lmpzb25wQ2FsbGJhY2s9ci5qc29ucENhbGxiYWNr
LE10LnB1c2goaSkpLGEmJm9lLmlzRnVuY3Rpb24obykmJm8oYVswXSksYT1vPXZvaWQgMH0pLCJz
Y3JpcHQifSksb2UucGFyc2VIVE1MPWZ1bmN0aW9uKGUsdCxyKXtpZighZXx8InN0cmluZyIhPXR5
cGVvZiBlKXJldHVybiBudWxsOyJib29sZWFuIj09dHlwZW9mIHQmJihyPXQsdD0hMSksdD10fHxH
O3ZhciBuPWhlLmV4ZWMoZSksaT0hciYmW107cmV0dXJuIG4/W3QuY3JlYXRlRWxlbWVudChuWzFd
KV06KG49ZChbZV0sdCxpKSxpJiZpLmxlbmd0aCYmb2UoaSkucmVtb3ZlKCksb2UubWVyZ2UoW10s
bi5jaGlsZE5vZGVzKSl9O3ZhciBGdD1vZS5mbi5sb2FkO29lLmZuLmxvYWQ9ZnVuY3Rpb24oZSx0
LHIpe2lmKCJzdHJpbmciIT10eXBlb2YgZSYmRnQpcmV0dXJuIEZ0LmFwcGx5KHRoaXMsYXJndW1l
bnRzKTt2YXIgbixpLG8sYT10aGlzLHM9ZS5pbmRleE9mKCIgIik7cmV0dXJuIHM+LTEmJihuPW9l
LnRyaW0oZS5zbGljZShzKSksZT1lLnNsaWNlKDAscykpLG9lLmlzRnVuY3Rpb24odCk/KHI9dCx0
PXZvaWQgMCk6dCYmIm9iamVjdCI9PXR5cGVvZiB0JiYoaT0iUE9TVCIpLGEubGVuZ3RoPjAmJm9l
LmFqYXgoe3VybDplLHR5cGU6aXx8IkdFVCIsZGF0YVR5cGU6Imh0bWwiLGRhdGE6dH0pLmRvbmUo
ZnVuY3Rpb24oZSl7bz1hcmd1bWVudHMsYS5odG1sKG4/b2UoIjxkaXY+IikuYXBwZW5kKG9lLnBh
cnNlSFRNTChlKSkuZmluZChuKTplKX0pLmFsd2F5cyhyJiZmdW5jdGlvbihlLHQpe2EuZWFjaChm
dW5jdGlvbigpe3IuYXBwbHkodGhpcyxvfHxbZS5yZXNwb25zZVRleHQsdCxlXSl9KX0pLHRoaXN9
LG9lLmVhY2goWyJhamF4U3RhcnQiLCJhamF4U3RvcCIsImFqYXhDb21wbGV0ZSIsImFqYXhFcnJv
ciIsImFqYXhTdWNjZXNzIiwiYWpheFNlbmQiXSxmdW5jdGlvbihlLHQpe29lLmZuW3RdPWZ1bmN0
aW9uKGUpe3JldHVybiB0aGlzLm9uKHQsZSl9fSksb2UuZXhwci5maWx0ZXJzLmFuaW1hdGVkPWZ1
bmN0aW9uKGUpe3JldHVybiBvZS5ncmVwKG9lLnRpbWVycyxmdW5jdGlvbih0KXtyZXR1cm4gZT09
PXQuZWxlbX0pLmxlbmd0aH0sb2Uub2Zmc2V0PXtzZXRPZmZzZXQ6ZnVuY3Rpb24oZSx0LHIpe3Zh
ciBuLGksbyxhLHMsdSxsLGM9b2UuY3NzKGUsInBvc2l0aW9uIiksZj1vZShlKSxkPXt9OyJzdGF0
aWMiPT09YyYmKGUuc3R5bGUucG9zaXRpb249InJlbGF0aXZlIikscz1mLm9mZnNldCgpLG89b2Uu
Y3NzKGUsInRvcCIpLHU9b2UuY3NzKGUsImxlZnQiKSxsPSgiYWJzb2x1dGUiPT09Y3x8ImZpeGVk
Ij09PWMpJiYobyt1KS5pbmRleE9mKCJhdXRvIik+LTEsbD8obj1mLnBvc2l0aW9uKCksYT1uLnRv
cCxpPW4ubGVmdCk6KGE9cGFyc2VGbG9hdChvKXx8MCxpPXBhcnNlRmxvYXQodSl8fDApLG9lLmlz
RnVuY3Rpb24odCkmJih0PXQuY2FsbChlLHIsb2UuZXh0ZW5kKHt9LHMpKSksbnVsbCE9dC50b3Am
JihkLnRvcD10LnRvcC1zLnRvcCthKSxudWxsIT10LmxlZnQmJihkLmxlZnQ9dC5sZWZ0LXMubGVm
dCtpKSwidXNpbmciaW4gdD90LnVzaW5nLmNhbGwoZSxkKTpmLmNzcyhkKX19LG9lLmZuLmV4dGVu
ZCh7b2Zmc2V0OmZ1bmN0aW9uKGUpe2lmKGFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHZvaWQgMD09
PWU/dGhpczp0aGlzLmVhY2goZnVuY3Rpb24odCl7b2Uub2Zmc2V0LnNldE9mZnNldCh0aGlzLGUs
dCl9KTt2YXIgdCxyLG49dGhpc1swXSxpPXt0b3A6MCxsZWZ0OjB9LG89biYmbi5vd25lckRvY3Vt
ZW50O2lmKG8pcmV0dXJuIHQ9by5kb2N1bWVudEVsZW1lbnQsb2UuY29udGFpbnModCxuKT8oaT1u
LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHI9SyhvKSx7dG9wOmkudG9wK3IucGFnZVlPZmZzZXQt
dC5jbGllbnRUb3AsbGVmdDppLmxlZnQrci5wYWdlWE9mZnNldC10LmNsaWVudExlZnR9KTppfSxw
b3NpdGlvbjpmdW5jdGlvbigpe2lmKHRoaXNbMF0pe3ZhciBlLHQscj10aGlzWzBdLG49e3RvcDow
LGxlZnQ6MH07cmV0dXJuImZpeGVkIj09PW9lLmNzcyhyLCJwb3NpdGlvbiIpP3Q9ci5nZXRCb3Vu
ZGluZ0NsaWVudFJlY3QoKTooZT10aGlzLm9mZnNldFBhcmVudCgpLHQ9dGhpcy5vZmZzZXQoKSxv
ZS5ub2RlTmFtZShlWzBdLCJodG1sIil8fChuPWUub2Zmc2V0KCkpLG4udG9wKz1vZS5jc3MoZVsw
XSwiYm9yZGVyVG9wV2lkdGgiLCEwKSxuLmxlZnQrPW9lLmNzcyhlWzBdLCJib3JkZXJMZWZ0V2lk
dGgiLCEwKSkse3RvcDp0LnRvcC1uLnRvcC1vZS5jc3MociwibWFyZ2luVG9wIiwhMCksbGVmdDp0
LmxlZnQtbi5sZWZ0LW9lLmNzcyhyLCJtYXJnaW5MZWZ0IiwhMCl9fX0sb2Zmc2V0UGFyZW50OmZ1
bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMub2Zmc2V0
UGFyZW50O2UmJiJzdGF0aWMiPT09b2UuY3NzKGUsInBvc2l0aW9uIik7KWU9ZS5vZmZzZXRQYXJl
bnQ7cmV0dXJuIGV8fEplfSl9fSksb2UuZWFjaCh7c2Nyb2xsTGVmdDoicGFnZVhPZmZzZXQiLHNj
cm9sbFRvcDoicGFnZVlPZmZzZXQifSxmdW5jdGlvbihlLHQpe3ZhciByPSJwYWdlWU9mZnNldCI9
PT10O29lLmZuW2VdPWZ1bmN0aW9uKG4pe3JldHVybiBrZSh0aGlzLGZ1bmN0aW9uKGUsbixpKXt2
YXIgbz1LKGUpO3JldHVybiB2b2lkIDA9PT1pP28/b1t0XTplW25dOnZvaWQobz9vLnNjcm9sbFRv
KHI/by5wYWdlWE9mZnNldDppLHI/aTpvLnBhZ2VZT2Zmc2V0KTplW25dPWkpfSxlLG4sYXJndW1l
bnRzLmxlbmd0aCl9fSksb2UuZWFjaChbInRvcCIsImxlZnQiXSxmdW5jdGlvbihlLHQpe29lLmNz
c0hvb2tzW3RdPVQobmUucGl4ZWxQb3NpdGlvbixmdW5jdGlvbihlLHIpe2lmKHIpcmV0dXJuIHI9
TyhlLHQpLEdlLnRlc3Qocik/b2UoZSkucG9zaXRpb24oKVt0XSsicHgiOnJ9KX0pLG9lLmVhY2go
e0hlaWdodDoiaGVpZ2h0IixXaWR0aDoid2lkdGgifSxmdW5jdGlvbihlLHQpe29lLmVhY2goe3Bh
ZGRpbmc6ImlubmVyIitlLGNvbnRlbnQ6dCwiIjoib3V0ZXIiK2V9LGZ1bmN0aW9uKHIsbil7b2Uu
Zm5bbl09ZnVuY3Rpb24obixpKXt2YXIgbz1hcmd1bWVudHMubGVuZ3RoJiYocnx8ImJvb2xlYW4i
IT10eXBlb2YgbiksYT1yfHwobj09PSEwfHxpPT09ITA/Im1hcmdpbiI6ImJvcmRlciIpO3JldHVy
biBrZSh0aGlzLGZ1bmN0aW9uKHQscixuKXt2YXIgaTtyZXR1cm4gb2UuaXNXaW5kb3codCk/dC5k
b2N1bWVudC5kb2N1bWVudEVsZW1lbnRbImNsaWVudCIrZV06OT09PXQubm9kZVR5cGU/KGk9dC5k
b2N1bWVudEVsZW1lbnQsTWF0aC5tYXgodC5ib2R5WyJzY3JvbGwiK2VdLGlbInNjcm9sbCIrZV0s
dC5ib2R5WyJvZmZzZXQiK2VdLGlbIm9mZnNldCIrZV0saVsiY2xpZW50IitlXSkpOnZvaWQgMD09
PW4/b2UuY3NzKHQscixhKTpvZS5zdHlsZSh0LHIsbixhKX0sdCxvP246dm9pZCAwLG8sbnVsbCl9
fSl9KSxvZS5mbi5leHRlbmQoe2JpbmQ6ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB0aGlzLm9uKGUs
bnVsbCx0LHIpfSx1bmJpbmQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5vZmYoZSxudWxsLHQp
fSxkZWxlZ2F0ZTpmdW5jdGlvbihlLHQscixuKXtyZXR1cm4gdGhpcy5vbih0LGUscixuKX0sdW5k
ZWxlZ2F0ZTpmdW5jdGlvbihlLHQscil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP3RoaXMu
b2ZmKGUsIioqIik6dGhpcy5vZmYodCxlfHwiKioiLHIpfSxzaXplOmZ1bmN0aW9uKCl7cmV0dXJu
IHRoaXMubGVuZ3RofX0pLG9lLmZuLmFuZFNlbGY9b2UuZm4uYWRkQmFjaywiZnVuY3Rpb24iPT10
eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kJiZkZWZpbmUoImpxdWVyeSIsW10sZnVuY3Rpb24oKXty
ZXR1cm4gb2V9KTt2YXIgSHQ9ZS5qUXVlcnksVnQ9ZS4kO3JldHVybiBvZS5ub0NvbmZsaWN0PWZ1
bmN0aW9uKHQpe3JldHVybiBlLiQ9PT1vZSYmKGUuJD1WdCksdCYmZS5qUXVlcnk9PT1vZSYmKGUu
alF1ZXJ5PUh0KSxvZX0sdHx8KGUualF1ZXJ5PWUuJD1vZSksb2V9KSxmdW5jdGlvbigpe3ZhciBl
LHQscixuLGk9dGhpczshZnVuY3Rpb24oKXtmdW5jdGlvbiBpKGUsdCl7dGhyb3cgdD9uZXcgRXJy
b3IoIkNvdWxkIG5vdCBmaW5kIG1vZHVsZSAiK2UrIiByZXF1aXJlZCBieTogIit0KTpuZXcgRXJy
b3IoIkNvdWxkIG5vdCBmaW5kIG1vZHVsZSAiK2UpfWZ1bmN0aW9uIG8oZSx0KXt2YXIgbj1lLGE9
c1tuXTthfHwobis9Ii9pbmRleCIsYT1zW25dKTt2YXIgbD11W25dO2lmKHZvaWQgMCE9PWwpcmV0
dXJuIGw7bD11W25dPXt9LGF8fGkoZSx0KTtmb3IodmFyIGM9YS5kZXBzLGY9YS5jYWxsYmFjayxk
PWMubGVuZ3RoLHA9bmV3IEFycmF5KGQpLGg9MDtoPGQ7aCsrKSJleHBvcnRzIj09PWNbaF0/cFto
XT1sOiJyZXF1aXJlIj09PWNbaF0/cFtoXT1yOnBbaF09byhjW2hdLG4pO3JldHVybiBmLmFwcGx5
KHRoaXMscCksbH12YXIgYT0idW5kZWZpbmVkIj09dHlwZW9mIHdpbmRvdyYmInVuZGVmaW5lZCIh
PXR5cGVvZiBwcm9jZXNzJiYiW29iamVjdCBwcm9jZXNzXSI9PT17fS50b1N0cmluZy5jYWxsKHBy
b2Nlc3MpO2lmKGF8fChuPXRoaXMuRW1iZXI9dGhpcy5FbWJlcnx8e30pLCJ1bmRlZmluZWQiPT10
eXBlb2YgbiYmKG49e30pLCJ1bmRlZmluZWQiPT10eXBlb2Ygbi5fX2xvYWRlcil7dmFyIHM9e30s
dT17fTtlPWZ1bmN0aW9uKGUsdCxyKXt2YXIgbj17fTtyPyhuLmRlcHM9dCxuLmNhbGxiYWNrPXIp
OihuLmRlcHM9W10sbi5jYWxsYmFjaz10KSxzW2VdPW59LHI9dD1mdW5jdGlvbihlKXtyZXR1cm4g
byhlLG51bGwpfSxyLmRlZmF1bHQ9cixyLmhhcz1mdW5jdGlvbihlKXtyZXR1cm4hIXNbZV18fCEh
c1tlKyIvaW5kZXgiXX0sdC5fZWFrX3NlZW49cyxuLl9fbG9hZGVyPXtkZWZpbmU6ZSxyZXF1aXJl
OnIscmVnaXN0cnk6c319ZWxzZSBlPW4uX19sb2FkZXIuZGVmaW5lLHI9dD1uLl9fbG9hZGVyLnJl
cXVpcmV9KCksZSgiYmFja2J1cm5lciIsWyJleHBvcnRzIiwiYmFja2J1cm5lci91dGlscyIsImJh
Y2tidXJuZXIvcGxhdGZvcm0iLCJiYWNrYnVybmVyL2JpbmFyeS1zZWFyY2giLCJiYWNrYnVybmVy
L2RlZmVycmVkLWFjdGlvbi1xdWV1ZXMiXSxmdW5jdGlvbihlLHQscixuLGkpeyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiBvKGUsdCl7dGhpcy5xdWV1ZU5hbWVzPWUsdGhpcy5vcHRpb25zPXR8fHt9LHRo
aXMub3B0aW9ucy5kZWZhdWx0UXVldWV8fCh0aGlzLm9wdGlvbnMuZGVmYXVsdFF1ZXVlPWVbMF0p
LHRoaXMuaW5zdGFuY2VTdGFjaz1bXSx0aGlzLl9kZWJvdW5jZWVzPVtdLHRoaXMuX3Rocm90dGxl
cnM9W10sdGhpcy5fZXZlbnRDYWxsYmFja3M9e2VuZDpbXSxiZWdpbjpbXX07dmFyIG49dGhpczt0
aGlzLl9ib3VuZENsZWFySXRlbXM9ZnVuY3Rpb24oKXtmKCl9LHRoaXMuX3RpbWVyVGltZW91dElk
PXZvaWQgMCx0aGlzLl90aW1lcnM9W10sdGhpcy5fcGxhdGZvcm09dGhpcy5vcHRpb25zLl9wbGF0
Zm9ybXx8ci5kZWZhdWx0LHRoaXMuX2JvdW5kUnVuRXhwaXJlZFRpbWVycz1mdW5jdGlvbigpe24u
X3J1bkV4cGlyZWRUaW1lcnMoKX19ZnVuY3Rpb24gYShlKXtyZXR1cm4gZS5vbkVycm9yfHxlLm9u
RXJyb3JUYXJnZXQmJmUub25FcnJvclRhcmdldFtlLm9uRXJyb3JNZXRob2RdfWZ1bmN0aW9uIHMo
ZSl7ZS5iZWdpbigpLGUuX2F1dG9ydW49ZS5fcGxhdGZvcm0uc2V0VGltZW91dChmdW5jdGlvbigp
e2UuX2F1dG9ydW49bnVsbCxlLmVuZCgpfSl9ZnVuY3Rpb24gdShlLHQscil7cmV0dXJuIGMoZSx0
LHIpfWZ1bmN0aW9uIGwoZSx0LHIpe3JldHVybiBjKGUsdCxyKX1mdW5jdGlvbiBjKGUsdCxyKXtm
b3IodmFyIG4saT0tMSxvPTAsYT1yLmxlbmd0aDtvPGE7bysrKWlmKG49cltvXSxuWzBdPT09ZSYm
blsxXT09PXQpe2k9bzticmVha31yZXR1cm4gaX1mdW5jdGlvbiBmKGUpe3RoaXMuX3BsYXRmb3Jt
LmNsZWFyVGltZW91dChlWzJdKX1lLmRlZmF1bHQ9byxvLnByb3RvdHlwZT17YmVnaW46ZnVuY3Rp
b24oKXt2YXIgZT10aGlzLm9wdGlvbnMsdD1lJiZlLm9uQmVnaW4scj10aGlzLmN1cnJlbnRJbnN0
YW5jZTtyJiZ0aGlzLmluc3RhbmNlU3RhY2sucHVzaChyKSx0aGlzLmN1cnJlbnRJbnN0YW5jZT1u
ZXcgaS5kZWZhdWx0KHRoaXMucXVldWVOYW1lcyxlKSx0aGlzLl90cmlnZ2VyKCJiZWdpbiIsdGhp
cy5jdXJyZW50SW5zdGFuY2UsciksdCYmdCh0aGlzLmN1cnJlbnRJbnN0YW5jZSxyKX0sZW5kOmZ1
bmN0aW9uKCl7dmFyIGU9dGhpcy5vcHRpb25zLHQ9ZSYmZS5vbkVuZCxyPXRoaXMuY3VycmVudElu
c3RhbmNlLG49bnVsbCxpPSExO3RyeXtyLmZsdXNoKCl9ZmluYWxseXtpfHwoaT0hMCx0aGlzLmN1
cnJlbnRJbnN0YW5jZT1udWxsLHRoaXMuaW5zdGFuY2VTdGFjay5sZW5ndGgmJihuPXRoaXMuaW5z
dGFuY2VTdGFjay5wb3AoKSx0aGlzLmN1cnJlbnRJbnN0YW5jZT1uKSx0aGlzLl90cmlnZ2VyKCJl
bmQiLHIsbiksdCYmdChyLG4pKX19LF90cmlnZ2VyOmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj10aGlz
Ll9ldmVudENhbGxiYWNrc1tlXTtpZihuKWZvcih2YXIgaT0wO2k8bi5sZW5ndGg7aSsrKW5baV0o
dCxyKX0sb246ZnVuY3Rpb24oZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcg
VHlwZUVycm9yKCJDYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24iKTt2YXIgcj10aGlzLl9ldmVu
dENhbGxiYWNrc1tlXTtpZighcil0aHJvdyBuZXcgVHlwZUVycm9yKCdDYW5ub3Qgb24oKSBldmVu
dCAiJytlKyciIGJlY2F1c2UgaXQgZG9lcyBub3QgZXhpc3QnKTtyLnB1c2godCl9LG9mZjpmdW5j
dGlvbihlLHQpe2lmKCFlKXRocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBvZmYoKSBldmVudCAi
JytlKyciIGJlY2F1c2UgaXQgZG9lcyBub3QgZXhpc3QnKTt2YXIgcj10aGlzLl9ldmVudENhbGxi
YWNrc1tlXSxuPSExO2lmKHIpe2lmKHQpZm9yKHZhciBpPTA7aTxyLmxlbmd0aDtpKyspcltpXT09
PXQmJihuPSEwLHIuc3BsaWNlKGksMSksaS0tKTtpZighbil0aHJvdyBuZXcgVHlwZUVycm9yKCJD
YW5ub3Qgb2ZmKCkgY2FsbGJhY2sgdGhhdCBkb2VzIG5vdCBleGlzdCIpfX0scnVuOmZ1bmN0aW9u
KCl7dmFyIGUscixuLGk9YXJndW1lbnRzLmxlbmd0aDtpZigxPT09aT8oZT1hcmd1bWVudHNbMF0s
cj1udWxsKToocj1hcmd1bWVudHNbMF0sZT1hcmd1bWVudHNbMV0pLHQuaXNTdHJpbmcoZSkmJihl
PXJbZV0pLGk+Mil7bj1uZXcgQXJyYXkoaS0yKTtmb3IodmFyIG89MCxzPWktMjtvPHM7bysrKW5b
b109YXJndW1lbnRzW28rMl19ZWxzZSBuPVtdO3ZhciB1PWEodGhpcy5vcHRpb25zKTt0aGlzLmJl
Z2luKCk7dmFyIGw9ITE7aWYodSl0cnl7cmV0dXJuIGUuYXBwbHkocixuKX1jYXRjaChlKXt1KGUp
fWZpbmFsbHl7bHx8KGw9ITAsdGhpcy5lbmQoKSl9ZWxzZSB0cnl7cmV0dXJuIGUuYXBwbHkocixu
KX1maW5hbGx5e2x8fChsPSEwLHRoaXMuZW5kKCkpfX0sam9pbjpmdW5jdGlvbigpe2lmKCF0aGlz
LmN1cnJlbnRJbnN0YW5jZSlyZXR1cm4gdGhpcy5ydW4uYXBwbHkodGhpcyxhcmd1bWVudHMpO3Zh
ciBlLHIsbj1hcmd1bWVudHMubGVuZ3RoO2lmKDE9PT1uPyhlPWFyZ3VtZW50c1swXSxyPW51bGwp
OihyPWFyZ3VtZW50c1swXSxlPWFyZ3VtZW50c1sxXSksdC5pc1N0cmluZyhlKSYmKGU9cltlXSks
MT09PW4pcmV0dXJuIGUoKTtpZigyPT09bilyZXR1cm4gZS5jYWxsKHIpO2Zvcih2YXIgaT1uZXcg
QXJyYXkobi0yKSxvPTAsYT1uLTI7bzxhO28rKylpW29dPWFyZ3VtZW50c1tvKzJdO3JldHVybiBl
LmFwcGx5KHIsaSl9LGRlZmVyOmZ1bmN0aW9uKGUpe3ZhciByLG4saSxvPWFyZ3VtZW50cy5sZW5n
dGg7Mj09PW8/KHI9YXJndW1lbnRzWzFdLG49bnVsbCk6KG49YXJndW1lbnRzWzFdLHI9YXJndW1l
bnRzWzJdKSx0LmlzU3RyaW5nKHIpJiYocj1uW3JdKTt2YXIgYT10aGlzLkRFQlVHP25ldyBFcnJv
cjp2b2lkIDA7aWYobz4zKXtpPW5ldyBBcnJheShvLTMpO2Zvcih2YXIgdT0zO3U8bzt1KyspaVt1
LTNdPWFyZ3VtZW50c1t1XX1lbHNlIGk9dm9pZCAwO3JldHVybiB0aGlzLmN1cnJlbnRJbnN0YW5j
ZXx8cyh0aGlzKSx0aGlzLmN1cnJlbnRJbnN0YW5jZS5zY2hlZHVsZShlLG4scixpLCExLGEpfSxk
ZWZlck9uY2U6ZnVuY3Rpb24oZSl7dmFyIHIsbixpLG89YXJndW1lbnRzLmxlbmd0aDsyPT09bz8o
cj1hcmd1bWVudHNbMV0sbj1udWxsKToobj1hcmd1bWVudHNbMV0scj1hcmd1bWVudHNbMl0pLHQu
aXNTdHJpbmcocikmJihyPW5bcl0pO3ZhciBhPXRoaXMuREVCVUc/bmV3IEVycm9yOnZvaWQgMDtp
ZihvPjMpe2k9bmV3IEFycmF5KG8tMyk7Zm9yKHZhciB1PTM7dTxvO3UrKylpW3UtM109YXJndW1l
bnRzW3VdfWVsc2UgaT12b2lkIDA7cmV0dXJuIHRoaXMuY3VycmVudEluc3RhbmNlfHxzKHRoaXMp
LHRoaXMuY3VycmVudEluc3RhbmNlLnNjaGVkdWxlKGUsbixyLGksITAsYSl9LHNldFRpbWVvdXQ6
ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7aWYobSl0cnl7by5hcHBseSh1LG4pfWNhdGNoKGUpe20o
ZSl9ZWxzZSBvLmFwcGx5KHUsbil9Zm9yKHZhciByPWFyZ3VtZW50cy5sZW5ndGgsbj1uZXcgQXJy
YXkociksaT0wO2k8cjtpKyspbltpXT1hcmd1bWVudHNbaV07dmFyIG8scyx1LGwsYyxmLGQ9bi5s
ZW5ndGg7aWYoMCE9PWQpe2lmKDE9PT1kKW89bi5zaGlmdCgpLHM9MDtlbHNlIGlmKDI9PT1kKWw9
blswXSxjPW5bMV0sdC5pc0Z1bmN0aW9uKGMpfHx0LmlzRnVuY3Rpb24obFtjXSk/KHU9bi5zaGlm
dCgpLG89bi5zaGlmdCgpLHM9MCk6dC5pc0NvZXJjYWJsZU51bWJlcihjKT8obz1uLnNoaWZ0KCks
cz1uLnNoaWZ0KCkpOihvPW4uc2hpZnQoKSxzPTApO2Vsc2V7dmFyIHA9bltuLmxlbmd0aC0xXTtz
PXQuaXNDb2VyY2FibGVOdW1iZXIocCk/bi5wb3AoKTowLGw9blswXSxmPW5bMV0sdC5pc0Z1bmN0
aW9uKGYpfHx0LmlzU3RyaW5nKGYpJiZudWxsIT09bCYmZiBpbiBsPyh1PW4uc2hpZnQoKSxvPW4u
c2hpZnQoKSk6bz1uLnNoaWZ0KCl9dmFyIGg9RGF0ZS5ub3coKStwYXJzZUludChzIT09cz8wOnMs
MTApO3QuaXNTdHJpbmcobykmJihvPXVbb10pO3ZhciBtPWEodGhpcy5vcHRpb25zKTtyZXR1cm4g
dGhpcy5fc2V0VGltZW91dChlLGgpfX0sX3NldFRpbWVvdXQ6ZnVuY3Rpb24oZSx0KXtpZigwPT09
dGhpcy5fdGltZXJzLmxlbmd0aClyZXR1cm4gdGhpcy5fdGltZXJzLnB1c2godCxlKSx0aGlzLl9p
bnN0YWxsVGltZXJUaW1lb3V0KCksZTt2YXIgcj1uLmRlZmF1bHQodCx0aGlzLl90aW1lcnMpO3Jl
dHVybiB0aGlzLl90aW1lcnMuc3BsaWNlKHIsMCx0LGUpLDA9PT1yJiZ0aGlzLl9yZWluc3RhbGxU
aW1lclRpbWVvdXQoKSxlfSx0aHJvdHRsZTpmdW5jdGlvbihlLHIpe2Zvcih2YXIgbj10aGlzLGk9
bmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgpLG89MDtvPGFyZ3VtZW50cy5sZW5ndGg7bysrKWlb
b109YXJndW1lbnRzW29dO3ZhciBhLHMsdSxjLGY9aS5wb3AoKTtyZXR1cm4gdC5pc051bWJlcihm
KXx8dC5pc1N0cmluZyhmKT8oYT1mLGY9ITApOmE9aS5wb3AoKSxhPXBhcnNlSW50KGEsMTApLHU9
bChlLHIsdGhpcy5fdGhyb3R0bGVycyksdT4tMT90aGlzLl90aHJvdHRsZXJzW3VdOihjPXRoaXMu
X3BsYXRmb3JtLnNldFRpbWVvdXQoZnVuY3Rpb24oKXtmfHxuLnJ1bi5hcHBseShuLGkpO3ZhciB0
PWwoZSxyLG4uX3Rocm90dGxlcnMpOwordD4tMSYmbi5fdGhyb3R0bGVycy5zcGxpY2UodCwxKX0s
YSksZiYmdGhpcy5ydW4uYXBwbHkodGhpcyxpKSxzPVtlLHIsY10sdGhpcy5fdGhyb3R0bGVycy5w
dXNoKHMpLHMpfSxkZWJvdW5jZTpmdW5jdGlvbihlLHIpe2Zvcih2YXIgbj10aGlzLGk9bmV3IEFy
cmF5KGFyZ3VtZW50cy5sZW5ndGgpLG89MDtvPGFyZ3VtZW50cy5sZW5ndGg7bysrKWlbb109YXJn
dW1lbnRzW29dO3ZhciBhLHMsbCxjLGY9aS5wb3AoKTtyZXR1cm4gdC5pc051bWJlcihmKXx8dC5p
c1N0cmluZyhmKT8oYT1mLGY9ITEpOmE9aS5wb3AoKSxhPXBhcnNlSW50KGEsMTApLHM9dShlLHIs
dGhpcy5fZGVib3VuY2Vlcykscz4tMSYmKGw9dGhpcy5fZGVib3VuY2Vlc1tzXSx0aGlzLl9kZWJv
dW5jZWVzLnNwbGljZShzLDEpLHRoaXMuX3BsYXRmb3JtLmNsZWFyVGltZW91dChsWzJdKSksYz10
aGlzLl9wbGF0Zm9ybS5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Znx8bi5ydW4uYXBwbHkobixpKTt2
YXIgdD11KGUscixuLl9kZWJvdW5jZWVzKTt0Pi0xJiZuLl9kZWJvdW5jZWVzLnNwbGljZSh0LDEp
fSxhKSxmJiZzPT09LTEmJm4ucnVuLmFwcGx5KG4saSksbD1bZSxyLGNdLG4uX2RlYm91bmNlZXMu
cHVzaChsKSxsfSxjYW5jZWxUaW1lcnM6ZnVuY3Rpb24oKXt0LmVhY2godGhpcy5fdGhyb3R0bGVy
cyx0aGlzLl9ib3VuZENsZWFySXRlbXMpLHRoaXMuX3Rocm90dGxlcnM9W10sdC5lYWNoKHRoaXMu
X2RlYm91bmNlZXMsdGhpcy5fYm91bmRDbGVhckl0ZW1zKSx0aGlzLl9kZWJvdW5jZWVzPVtdLHRo
aXMuX2NsZWFyVGltZXJUaW1lb3V0KCksdGhpcy5fdGltZXJzPVtdLHRoaXMuX2F1dG9ydW4mJih0
aGlzLl9wbGF0Zm9ybS5jbGVhclRpbWVvdXQodGhpcy5fYXV0b3J1biksdGhpcy5fYXV0b3J1bj1u
dWxsKX0saGFzVGltZXJzOmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLl90aW1lcnMubGVuZ3RofHwh
IXRoaXMuX2RlYm91bmNlZXMubGVuZ3RofHwhIXRoaXMuX3Rocm90dGxlcnMubGVuZ3RofHx0aGlz
Ll9hdXRvcnVufSxjYW5jZWw6ZnVuY3Rpb24oZSl7dmFyIHQ9dHlwZW9mIGU7aWYoZSYmIm9iamVj
dCI9PT10JiZlLnF1ZXVlJiZlLm1ldGhvZClyZXR1cm4gZS5xdWV1ZS5jYW5jZWwoZSk7aWYoImZ1
bmN0aW9uIiE9PXQpcmV0dXJuIltvYmplY3QgQXJyYXldIj09PU9iamVjdC5wcm90b3R5cGUudG9T
dHJpbmcuY2FsbChlKT90aGlzLl9jYW5jZWxJdGVtKGwsdGhpcy5fdGhyb3R0bGVycyxlKXx8dGhp
cy5fY2FuY2VsSXRlbSh1LHRoaXMuX2RlYm91bmNlZXMsZSk6dm9pZCAwO2Zvcih2YXIgcj0wLG49
dGhpcy5fdGltZXJzLmxlbmd0aDtyPG47cis9MilpZih0aGlzLl90aW1lcnNbcisxXT09PWUpcmV0
dXJuIHRoaXMuX3RpbWVycy5zcGxpY2UociwyKSwwPT09ciYmdGhpcy5fcmVpbnN0YWxsVGltZXJU
aW1lb3V0KCksITB9LF9jYW5jZWxJdGVtOmZ1bmN0aW9uKGUsdCxyKXt2YXIgbixpO3JldHVybiEo
ci5sZW5ndGg8MykmJihpPWUoclswXSxyWzFdLHQpLGk+LTEmJihuPXRbaV0sblsyXT09PXJbMl0p
JiYodC5zcGxpY2UoaSwxKSx0aGlzLl9wbGF0Zm9ybS5jbGVhclRpbWVvdXQoclsyXSksITApKX0s
X3J1bkV4cGlyZWRUaW1lcnM6ZnVuY3Rpb24oKXt0aGlzLl90aW1lclRpbWVvdXRJZD12b2lkIDAs
dGhpcy5ydW4odGhpcyx0aGlzLl9zY2hlZHVsZUV4cGlyZWRUaW1lcnMpfSxfc2NoZWR1bGVFeHBp
cmVkVGltZXJzOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPURhdGUubm93KCksdD10aGlzLl90aW1lcnMs
cj0wLG49dC5sZW5ndGg7cjxuO3IrPTIpe3ZhciBpPXRbcl0sbz10W3IrMV07aWYoIShpPD1lKSli
cmVhazt0aGlzLnNjaGVkdWxlKHRoaXMub3B0aW9ucy5kZWZhdWx0UXVldWUsbnVsbCxvKX10LnNw
bGljZSgwLHIpLHRoaXMuX2luc3RhbGxUaW1lclRpbWVvdXQoKX0sX3JlaW5zdGFsbFRpbWVyVGlt
ZW91dDpmdW5jdGlvbigpe3RoaXMuX2NsZWFyVGltZXJUaW1lb3V0KCksdGhpcy5faW5zdGFsbFRp
bWVyVGltZW91dCgpfSxfY2xlYXJUaW1lclRpbWVvdXQ6ZnVuY3Rpb24oKXt0aGlzLl90aW1lclRp
bWVvdXRJZCYmKHRoaXMuX3BsYXRmb3JtLmNsZWFyVGltZW91dCh0aGlzLl90aW1lclRpbWVvdXRJ
ZCksdGhpcy5fdGltZXJUaW1lb3V0SWQ9dm9pZCAwKX0sX2luc3RhbGxUaW1lclRpbWVvdXQ6ZnVu
Y3Rpb24oKXtpZih0aGlzLl90aW1lcnMubGVuZ3RoKXt2YXIgZT10aGlzLl90aW1lcnNbMF0sdD1E
YXRlLm5vdygpLHI9TWF0aC5tYXgoMCxlLXQpO3RoaXMuX3RpbWVyVGltZW91dElkPXRoaXMuX3Bs
YXRmb3JtLnNldFRpbWVvdXQodGhpcy5fYm91bmRSdW5FeHBpcmVkVGltZXJzLHIpfX19LG8ucHJv
dG90eXBlLnNjaGVkdWxlPW8ucHJvdG90eXBlLmRlZmVyLG8ucHJvdG90eXBlLnNjaGVkdWxlT25j
ZT1vLnByb3RvdHlwZS5kZWZlck9uY2Usby5wcm90b3R5cGUubGF0ZXI9by5wcm90b3R5cGUuc2V0
VGltZW91dH0pLGUoImJhY2tidXJuZXIvYmluYXJ5LXNlYXJjaCIsWyJleHBvcnRzIl0sZnVuY3Rp
b24oZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHQoZSx0KXtmb3IodmFyIHIsbixpPTAsbz10Lmxl
bmd0aC0yO2k8bzspbj0oby1pKS8yLHI9aStuLW4lMixlPj10W3JdP2k9cisyOm89cjtyZXR1cm4g
ZT49dFtpXT9pKzI6aX1lLmRlZmF1bHQ9dH0pLGUoImJhY2tidXJuZXIvZGVmZXJyZWQtYWN0aW9u
LXF1ZXVlcyIsWyJleHBvcnRzIiwiYmFja2J1cm5lci91dGlscyIsImJhY2tidXJuZXIvcXVldWUi
XSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSxuKXt2YXIgaT10aGlz
LnF1ZXVlcz17fTt0aGlzLnF1ZXVlTmFtZXM9ZT1lfHxbXSx0aGlzLm9wdGlvbnM9bix0LmVhY2go
ZSxmdW5jdGlvbihlKXtpW2VdPW5ldyByLmRlZmF1bHQoZSxuW2VdLG4pfSl9ZnVuY3Rpb24gaShl
KXt0aHJvdyBuZXcgRXJyb3IoIllvdSBhdHRlbXB0ZWQgdG8gc2NoZWR1bGUgYW4gYWN0aW9uIGlu
IGEgcXVldWUgKCIrZSsiKSB0aGF0IGRvZXNuJ3QgZXhpc3QiKX1mdW5jdGlvbiBvKGUpe3Rocm93
IG5ldyBFcnJvcigiWW91IGF0dGVtcHRlZCB0byBzY2hlZHVsZSBhbiBhY3Rpb24gaW4gYSBxdWV1
ZSAoIitlKyIpIGZvciBhIG1ldGhvZCB0aGF0IGRvZXNuJ3QgZXhpc3QiKX1lLmRlZmF1bHQ9bixu
LnByb3RvdHlwZT17c2NoZWR1bGU6ZnVuY3Rpb24oZSx0LHIsbixhLHMpe3ZhciB1PXRoaXMucXVl
dWVzLGw9dVtlXTtyZXR1cm4gbHx8aShlKSxyfHxvKGUpLGE/bC5wdXNoVW5pcXVlKHQscixuLHMp
OmwucHVzaCh0LHIsbixzKX0sZmx1c2g6ZnVuY3Rpb24oKXtmb3IodmFyIGUsdCxyPXRoaXMucXVl
dWVzLG49dGhpcy5xdWV1ZU5hbWVzLGk9MCxvPW4ubGVuZ3RoO2k8bzspe2U9bltpXSx0PXJbZV07
dmFyIGE9dC5fcXVldWUubGVuZ3RoOzA9PT1hP2krKzoodC5mbHVzaCghMSksaT0wKX19fX0pLGUo
ImJhY2tidXJuZXIvcGxhdGZvcm0iLFsiZXhwb3J0cyJdLGZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0
Ijt2YXIgdDtpZigib2JqZWN0Ij09dHlwZW9mIHNlbGYpdD1zZWxmO2Vsc2UgaWYoIm9iamVjdCI9
PXR5cGVvZiBnbG9iYWwpdD1nbG9iYWw7ZWxzZXtpZigib2JqZWN0IiE9dHlwZW9mIHdpbmRvdyl0
aHJvdyBuZXcgRXJyb3IoIm5vIGdsb2JhbDogYHNlbGZgLCBgZ2xvYmFsYCBub3IgYHdpbmRvd2Ag
d2FzIGZvdW5kIik7dD13aW5kb3d9ZS5kZWZhdWx0PXR9KSxlKCJiYWNrYnVybmVyL3F1ZXVlIixb
ImV4cG9ydHMiLCJiYWNrYnVybmVyL3V0aWxzIl0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gcihlLHQscil7dGhpcy5uYW1lPWUsdGhpcy5nbG9iYWxPcHRpb25zPXJ8fHt9LHRo
aXMub3B0aW9ucz10LHRoaXMuX3F1ZXVlPVtdLHRoaXMudGFyZ2V0UXVldWVzPXt9LHRoaXMuX3F1
ZXVlQmVpbmdGbHVzaGVkPXZvaWQgMH1lLmRlZmF1bHQ9cixyLnByb3RvdHlwZT17cHVzaDpmdW5j
dGlvbihlLHQscixuKXt2YXIgaT10aGlzLl9xdWV1ZTtyZXR1cm4gaS5wdXNoKGUsdCxyLG4pLHtx
dWV1ZTp0aGlzLHRhcmdldDplLG1ldGhvZDp0fX0scHVzaFVuaXF1ZVdpdGhvdXRHdWlkOmZ1bmN0
aW9uKGUsdCxyLG4pe2Zvcih2YXIgaT10aGlzLl9xdWV1ZSxvPTAsYT1pLmxlbmd0aDtvPGE7bys9
NCl7dmFyIHM9aVtvXSx1PWlbbysxXTtpZihzPT09ZSYmdT09PXQpcmV0dXJuIGlbbysyXT1yLHZv
aWQoaVtvKzNdPW4pfWkucHVzaChlLHQscixuKX0sdGFyZ2V0UXVldWU6ZnVuY3Rpb24oZSx0LHIs
bixpKXtmb3IodmFyIG89dGhpcy5fcXVldWUsYT0wLHM9ZS5sZW5ndGg7YTxzO2ErPTIpe3ZhciB1
PWVbYV0sbD1lW2ErMV07aWYodT09PXIpcmV0dXJuIG9bbCsyXT1uLHZvaWQob1tsKzNdPWkpfWUu
cHVzaChyLG8ucHVzaCh0LHIsbixpKS00KX0scHVzaFVuaXF1ZVdpdGhHdWlkOmZ1bmN0aW9uKGUs
dCxyLG4saSl7dmFyIG89dGhpcy50YXJnZXRRdWV1ZXNbZV07cmV0dXJuIG8/dGhpcy50YXJnZXRR
dWV1ZShvLHQscixuLGkpOnRoaXMudGFyZ2V0UXVldWVzW2VdPVtyLHRoaXMuX3F1ZXVlLnB1c2go
dCxyLG4saSktNF0se3F1ZXVlOnRoaXMsdGFyZ2V0OnQsbWV0aG9kOnJ9fSxwdXNoVW5pcXVlOmZ1
bmN0aW9uKGUsdCxyLG4pe3ZhciBpPXRoaXMuZ2xvYmFsT3B0aW9ucy5HVUlEX0tFWTtpZihlJiZp
KXt2YXIgbz1lW2ldO2lmKG8pcmV0dXJuIHRoaXMucHVzaFVuaXF1ZVdpdGhHdWlkKG8sZSx0LHIs
bil9cmV0dXJuIHRoaXMucHVzaFVuaXF1ZVdpdGhvdXRHdWlkKGUsdCxyLG4pLHtxdWV1ZTp0aGlz
LHRhcmdldDplLG1ldGhvZDp0fX0saW52b2tlOmZ1bmN0aW9uKGUsdCxyLG4saSl7ciYmci5sZW5n
dGg+MD90LmFwcGx5KGUscik6dC5jYWxsKGUpfSxpbnZva2VXaXRoT25FcnJvcjpmdW5jdGlvbihl
LHQscixuLGkpe3RyeXtyJiZyLmxlbmd0aD4wP3QuYXBwbHkoZSxyKTp0LmNhbGwoZSl9Y2F0Y2go
ZSl7bihlLGkpfX0sZmx1c2g6ZnVuY3Rpb24oZSl7dmFyIHI9dGhpcy5fcXVldWUsbj1yLmxlbmd0
aDtpZigwIT09bil7dmFyIGksbyxhLHMsdT10aGlzLmdsb2JhbE9wdGlvbnMsbD10aGlzLm9wdGlv
bnMsYz1sJiZsLmJlZm9yZSxmPWwmJmwuYWZ0ZXIsZD11Lm9uRXJyb3J8fHUub25FcnJvclRhcmdl
dCYmdS5vbkVycm9yVGFyZ2V0W3Uub25FcnJvck1ldGhvZF0scD1kP3RoaXMuaW52b2tlV2l0aE9u
RXJyb3I6dGhpcy5pbnZva2U7dGhpcy50YXJnZXRRdWV1ZXM9T2JqZWN0LmNyZWF0ZShudWxsKTt2
YXIgaD10aGlzLl9xdWV1ZUJlaW5nRmx1c2hlZD10aGlzLl9xdWV1ZS5zbGljZSgpO3RoaXMuX3F1
ZXVlPVtdLGMmJmMoKTtmb3IodmFyIG09MDttPG47bSs9NClpPWhbbV0sbz1oW20rMV0sYT1oW20r
Ml0scz1oW20rM10sdC5pc1N0cmluZyhvKSYmKG89aVtvXSksbyYmcChpLG8sYSxkLHMpO2YmJmYo
KSx0aGlzLl9xdWV1ZUJlaW5nRmx1c2hlZD12b2lkIDAsZSE9PSExJiZ0aGlzLl9xdWV1ZS5sZW5n
dGg+MCYmdGhpcy5mbHVzaCghMCl9fSxjYW5jZWw6ZnVuY3Rpb24oZSl7dmFyIHQscixuLGksbz10
aGlzLl9xdWV1ZSxhPWUudGFyZ2V0LHM9ZS5tZXRob2QsdT10aGlzLmdsb2JhbE9wdGlvbnMuR1VJ
RF9LRVk7aWYodSYmdGhpcy50YXJnZXRRdWV1ZXMmJmEpe3ZhciBsPXRoaXMudGFyZ2V0UXVldWVz
W2FbdV1dO2lmKGwpZm9yKG49MCxpPWwubGVuZ3RoO248aTtuKyspbFtuXT09PXMmJmwuc3BsaWNl
KG4sMSl9Zm9yKG49MCxpPW8ubGVuZ3RoO248aTtuKz00KWlmKHQ9b1tuXSxyPW9bbisxXSx0PT09
YSYmcj09PXMpcmV0dXJuIG8uc3BsaWNlKG4sNCksITA7aWYobz10aGlzLl9xdWV1ZUJlaW5nRmx1
c2hlZClmb3Iobj0wLGk9by5sZW5ndGg7bjxpO24rPTQpaWYodD1vW25dLHI9b1tuKzFdLHQ9PT1h
JiZyPT09cylyZXR1cm4gb1tuKzFdPW51bGwsITB9fX0pLGUoImJhY2tidXJuZXIvdXRpbHMiLFsi
ZXhwb3J0cyJdLGZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB0KGUsdCl7Zm9yKHZh
ciByPTA7cjxlLmxlbmd0aDtyKyspdChlW3JdKX1mdW5jdGlvbiByKGUpe3JldHVybiJzdHJpbmci
PT10eXBlb2YgZX1mdW5jdGlvbiBuKGUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlfWZ1bmN0
aW9uIGkoZSl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBlfWZ1bmN0aW9uIG8oZSl7cmV0dXJuIGko
ZSl8fGEudGVzdChlKX1lLmVhY2g9dCxlLmlzU3RyaW5nPXIsZS5pc0Z1bmN0aW9uPW4sZS5pc051
bWJlcj1pLGUuaXNDb2VyY2FibGVOdW1iZXI9bzt2YXIgYT0vXGQrL30pLGUoImNvbnRhaW5lci9j
b250YWluZXIiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL2NvcmUiLCJlbWJlci1tZXRhbC9kZWJ1
ZyIsImVtYmVyLW1ldGFsL2RpY3Rpb25hcnkiLCJlbWJlci1tZXRhbC9mZWF0dXJlcyIsImNvbnRh
aW5lci9vd25lciIsImVtYmVyLXJ1bnRpbWUvbWl4aW5zL2NvbnRhaW5lcl9wcm94eSIsImVtYmVy
LW1ldGFsL3N5bWJvbCJdLGZ1bmN0aW9uKGUsdCxyLG4saSxvLGEscyl7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIHUoZSx0KXt0aGlzLnJlZ2lzdHJ5PWUsdGhpcy5vd25lcj10JiZ0Lm93bmVyP3Qub3du
ZXI6bnVsbCx0aGlzLmNhY2hlPW4uZGVmYXVsdCh0JiZ0LmNhY2hlP3QuY2FjaGU6bnVsbCksdGhp
cy5mYWN0b3J5Q2FjaGU9bi5kZWZhdWx0KHQmJnQuZmFjdG9yeUNhY2hlP3QuZmFjdG9yeUNhY2hl
Om51bGwpLHRoaXMudmFsaWRhdGlvbkNhY2hlPW4uZGVmYXVsdCh0JiZ0LnZhbGlkYXRpb25DYWNo
ZT90LnZhbGlkYXRpb25DYWNoZTpudWxsKSx0aGlzLl9mYWtlQ29udGFpbmVyVG9JbmplY3Q9YS5i
dWlsZEZha2VDb250YWluZXJXaXRoRGVwcmVjYXRpb25zKHRoaXMpLHRoaXNbeF09dm9pZCAwfWZ1
bmN0aW9uIGwoZSx0KXtyZXR1cm4gZS5yZWdpc3RyeS5nZXRPcHRpb24odCwic2luZ2xldG9uIikh
PT0hMX1mdW5jdGlvbiBjKGUsdCl7dmFyIHI9YXJndW1lbnRzLmxlbmd0aDw9Mnx8dm9pZCAwPT09
YXJndW1lbnRzWzJdP3t9OmFyZ3VtZW50c1syXTtpZighci5zb3VyY2V8fCh0PWUucmVnaXN0cnku
ZXhwYW5kTG9jYWxMb29rdXAodCxyKSkpe2lmKHZvaWQgMCE9PWUuY2FjaGVbdF0mJnIuc2luZ2xl
dG9uIT09ITEpcmV0dXJuIGUuY2FjaGVbdF07dmFyIG49YihlLHQpO2lmKHZvaWQgMCE9PW4pcmV0
dXJuIGwoZSx0KSYmci5zaW5nbGV0b24hPT0hMSYmKGUuY2FjaGVbdF09biksbn19ZnVuY3Rpb24g
ZihlKXtlLl9keW5hbWljPSEwfWZ1bmN0aW9uIGQoZSl7cmV0dXJuISFlLl9keW5hbWljfWZ1bmN0
aW9uIHAoKXt2YXIgZT17fTtpZihhcmd1bWVudHMubGVuZ3RoPjEpe2Zvcih2YXIgdCxyPWFyZ3Vt
ZW50c1swXSxuPVtdLGk9MSxvPWFyZ3VtZW50cy5sZW5ndGg7aTxvO2krKylhcmd1bWVudHNbaV0m
JihuPW4uY29uY2F0KGFyZ3VtZW50c1tpXSkpO2ZvcihyLnJlZ2lzdHJ5LnZhbGlkYXRlSW5qZWN0
aW9ucyhuKSxpPTAsbz1uLmxlbmd0aDtpPG87aSsrKXQ9bltpXSxlW3QucHJvcGVydHldPWMocix0
LmZ1bGxOYW1lKSxsKHIsdC5mdWxsTmFtZSl8fGYoZSl9cmV0dXJuIGV9ZnVuY3Rpb24gaChlLHIp
e3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg8PTJ8fHZvaWQgMD09PWFyZ3VtZW50c1syXT97fTphcmd1
bWVudHNbMl0saT1lLnJlZ2lzdHJ5O2lmKCFuLnNvdXJjZXx8KHI9aS5leHBhbmRMb2NhbExvb2t1
cChyLG4pKSl7dmFyIG89ZS5mYWN0b3J5Q2FjaGU7aWYob1tyXSlyZXR1cm4gb1tyXTt2YXIgYT1p
LnJlc29sdmUocik7aWYodm9pZCAwIT09YSl7dmFyIHM9ci5zcGxpdCgiOiIpWzBdO2lmKCFhfHwi
ZnVuY3Rpb24iIT10eXBlb2YgYS5leHRlbmR8fCF0LmRlZmF1bHQuTU9ERUxfRkFDVE9SWV9JTkpF
Q1RJT05TJiYibW9kZWwiPT09cylyZXR1cm4gYSYmImZ1bmN0aW9uIj09dHlwZW9mIGEuX29uTG9v
a3VwJiZhLl9vbkxvb2t1cChyKSxvW3JdPWEsYTt2YXIgdT1tKGUsciksbD12KGUsciksYz0hZCh1
KSYmIWQobCk7bC5fdG9TdHJpbmc9aS5tYWtlVG9TdHJpbmcoYSxyKTt2YXIgZj1hLmV4dGVuZCh1
KTtyZXR1cm4gZyhmLnByb3RvdHlwZSxlKSxmLnJlb3BlbkNsYXNzKGwpLGEmJiJmdW5jdGlvbiI9
PXR5cGVvZiBhLl9vbkxvb2t1cCYmYS5fb25Mb29rdXAociksYyYmKG9bcl09ZiksZn19fWZ1bmN0
aW9uIG0oZSx0KXt2YXIgcj1lLnJlZ2lzdHJ5LG49dC5zcGxpdCgiOiIpLGk9blswXSxhPXAoZSxy
LmdldFR5cGVJbmplY3Rpb25zKGkpLHIuZ2V0SW5qZWN0aW9ucyh0KSk7cmV0dXJuIGEuX2RlYnVn
Q29udGFpbmVyS2V5PXQsby5zZXRPd25lcihhLGUub3duZXIpLGF9ZnVuY3Rpb24gdihlLHQpe3Zh
ciByPWUucmVnaXN0cnksbj10LnNwbGl0KCI6IiksaT1uWzBdLG89cChlLHIuZ2V0RmFjdG9yeVR5
cGVJbmplY3Rpb25zKGkpLHIuZ2V0RmFjdG9yeUluamVjdGlvbnModCkpO3JldHVybiBvLl9kZWJ1
Z0NvbnRhaW5lcktleT10LG99ZnVuY3Rpb24gYihlLHQpe3ZhciByLG49aChlLHQpO2lmKGUucmVn
aXN0cnkuZ2V0T3B0aW9uKHQsImluc3RhbnRpYXRlIik9PT0hMSlyZXR1cm4gbjtpZihuKXtpZigi
ZnVuY3Rpb24iIT10eXBlb2Ygbi5jcmVhdGUpdGhyb3cgbmV3IEVycm9yKCJGYWlsZWQgdG8gY3Jl
YXRlIGFuIGluc3RhbmNlIG9mICciK3QrIicuIE1vc3QgbGlrZWx5IGFuIGltcHJvcGVybHkgZGVm
aW5lZCBjbGFzcyBvciBhbiBpbnZhbGlkIG1vZHVsZSBleHBvcnQuIik7cj1lLnZhbGlkYXRpb25D
YWNoZSxyW3RdPSEwO3ZhciBpPXZvaWQgMDtpZigiZnVuY3Rpb24iPT10eXBlb2Ygbi5leHRlbmQp
aT1uLmNyZWF0ZSgpO2Vsc2V7dmFyIG89bShlLHQpO28uY29udGFpbmVyPWUuX2Zha2VDb250YWlu
ZXJUb0luamVjdCxpPW4uY3JlYXRlKG8pLCFPYmplY3QuaXNGcm96ZW4oaSkmJiJjb250YWluZXIi
aW4gaSYmZyhpLGUpfXJldHVybiBpfX1mdW5jdGlvbiBnKGUsdCl7T2JqZWN0LmRlZmluZVByb3Bl
cnR5KGUsImNvbnRhaW5lciIse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiExLGdldDpmdW5j
dGlvbigpe3JldHVybiB0aGlzW3hdfHx0fSxzZXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXNbeF09
ZSxlfX0pfWZ1bmN0aW9uIHkoZSx0KXtmb3IodmFyIHIsbixpPWUuY2FjaGUsbz1PYmplY3Qua2V5
cyhpKSxhPTAscz1vLmxlbmd0aDthPHM7YSsrKXI9b1thXSxuPWlbcl0sZS5yZWdpc3RyeS5nZXRP
cHRpb24ociwiaW5zdGFudGlhdGUiKSE9PSExJiZ0KG4pfWZ1bmN0aW9uIF8oZSl7eShlLGZ1bmN0
aW9uKGUpe2UuZGVzdHJveSYmZS5kZXN0cm95KCl9KSxlLmNhY2hlLmRpY3Q9bi5kZWZhdWx0KG51
bGwpfWZ1bmN0aW9uIHcoZSx0KXt2YXIgcj1lLmNhY2hlW3RdO2RlbGV0ZSBlLmZhY3RvcnlDYWNo
ZVt0XSxyJiYoZGVsZXRlIGUuY2FjaGVbdF0sci5kZXN0cm95JiZyLmRlc3Ryb3koKSl9dmFyIHg9
cy5kZWZhdWx0KCJDT05UQUlORVJfT1ZFUlJJREUiKTt1LnByb3RvdHlwZT17b3duZXI6bnVsbCxy
ZWdpc3RyeTpudWxsLGNhY2hlOm51bGwsZmFjdG9yeUNhY2hlOm51bGwsdmFsaWRhdGlvbkNhY2hl
Om51bGwsbG9va3VwOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGModGhpcyx0aGlzLnJlZ2lzdHJ5Lm5v
cm1hbGl6ZShlKSx0KX0sbG9va3VwRmFjdG9yeTpmdW5jdGlvbihlLHQpe3JldHVybiBoKHRoaXMs
dGhpcy5yZWdpc3RyeS5ub3JtYWxpemUoZSksdCl9LGRlc3Ryb3k6ZnVuY3Rpb24oKXt5KHRoaXMs
ZnVuY3Rpb24oZSl7ZS5kZXN0cm95JiZlLmRlc3Ryb3koKX0pLHRoaXMuaXNEZXN0cm95ZWQ9ITB9
LHJlc2V0OmZ1bmN0aW9uKGUpe2FyZ3VtZW50cy5sZW5ndGg+MD93KHRoaXMsdGhpcy5yZWdpc3Ry
eS5ub3JtYWxpemUoZSkpOl8odGhpcyl9LG93bmVySW5qZWN0aW9uOmZ1bmN0aW9uKCl7dmFyIGU7
cmV0dXJuIGU9e30sZVtvLk9XTkVSXT10aGlzLm93bmVyLGV9fSxlLmRlZmF1bHQ9dX0pLGUoImNv
bnRhaW5lci9pbmRleCIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvY29yZSIsImNvbnRhaW5lci9y
ZWdpc3RyeSIsImNvbnRhaW5lci9jb250YWluZXIiLCJjb250YWluZXIvb3duZXIiXSxmdW5jdGlv
bihlLHQscixuLGkpeyJ1c2Ugc3RyaWN0Ijt0LmRlZmF1bHQuTU9ERUxfRkFDVE9SWV9JTkpFQ1RJ
T05TPSExLHQuZGVmYXVsdC5FTlYmJiJ1bmRlZmluZWQiIT10eXBlb2YgdC5kZWZhdWx0LkVOVi5N
T0RFTF9GQUNUT1JZX0lOSkVDVElPTlMmJih0LmRlZmF1bHQuTU9ERUxfRkFDVE9SWV9JTkpFQ1RJ
T05TPSEhdC5kZWZhdWx0LkVOVi5NT0RFTF9GQUNUT1JZX0lOSkVDVElPTlMpLGUuUmVnaXN0cnk9
ci5kZWZhdWx0LGUuQ29udGFpbmVyPW4uZGVmYXVsdCxlLmdldE93bmVyPWkuZ2V0T3duZXIsZS5z
ZXRPd25lcj1pLnNldE93bmVyfSksZSgiY29udGFpbmVyL293bmVyIixbImV4cG9ydHMiLCJlbWJl
ci1tZXRhbC9zeW1ib2wiXSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUp
e3JldHVybiBlW2ldfWZ1bmN0aW9uIG4oZSx0KXtlW2ldPXR9ZS5nZXRPd25lcj1yLGUuc2V0T3du
ZXI9bjt2YXIgaT10LmRlZmF1bHQoIk9XTkVSIik7ZS5PV05FUj1pfSksZSgiY29udGFpbmVyL3Jl
Z2lzdHJ5IixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9mZWF0dXJlcyIsImVtYmVyLW1ldGFsL2Rl
YnVnIiwiZW1iZXItbWV0YWwvZGljdGlvbmFyeSIsImVtYmVyLW1ldGFsL2VtcHR5X29iamVjdCIs
ImVtYmVyLW1ldGFsL2Fzc2lnbiIsImNvbnRhaW5lci9jb250YWluZXIiLCJlbWJlci1tZXRhbC91
dGlscyJdLGZ1bmN0aW9uKGUsdCxyLG4saSxvLGEscyl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHUo
ZSl7dGhpcy5mYWxsYmFjaz1lJiZlLmZhbGxiYWNrP2UuZmFsbGJhY2s6bnVsbCxlJiZlLnJlc29s
dmVyJiYodGhpcy5yZXNvbHZlcj1lLnJlc29sdmVyLCJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLnJl
c29sdmVyJiZsKHRoaXMpKSx0aGlzLnJlZ2lzdHJhdGlvbnM9bi5kZWZhdWx0KGUmJmUucmVnaXN0
cmF0aW9ucz9lLnJlZ2lzdHJhdGlvbnM6bnVsbCksdGhpcy5fdHlwZUluamVjdGlvbnM9bi5kZWZh
dWx0KG51bGwpLHRoaXMuX2luamVjdGlvbnM9bi5kZWZhdWx0KG51bGwpLHRoaXMuX2ZhY3RvcnlU
eXBlSW5qZWN0aW9ucz1uLmRlZmF1bHQobnVsbCksdGhpcy5fZmFjdG9yeUluamVjdGlvbnM9bi5k
ZWZhdWx0KG51bGwpLHRoaXMuX2xvY2FsTG9va3VwQ2FjaGU9bmV3IGkuZGVmYXVsdCx0aGlzLl9u
b3JtYWxpemVDYWNoZT1uLmRlZmF1bHQobnVsbCksdGhpcy5fcmVzb2x2ZUNhY2hlPW4uZGVmYXVs
dChudWxsKSx0aGlzLl9mYWlsQ2FjaGU9bi5kZWZhdWx0KG51bGwpLHRoaXMuX29wdGlvbnM9bi5k
ZWZhdWx0KG51bGwpLHRoaXMuX3R5cGVPcHRpb25zPW4uZGVmYXVsdChudWxsKX1mdW5jdGlvbiBs
KGUpe2UucmVzb2x2ZXI9e3Jlc29sdmU6ZS5yZXNvbHZlcn19ZnVuY3Rpb24gYyhlLHQscil7dmFy
IG49ZS5fbG9jYWxMb29rdXBDYWNoZSxvPW5bdF07b3x8KG89blt0XT1uZXcgaS5kZWZhdWx0KTt2
YXIgYT1vW3JdO2lmKHZvaWQgMCE9PWEpcmV0dXJuIGE7dmFyIHM9ZS5yZXNvbHZlci5leHBhbmRM
b2NhbExvb2t1cCh0LHIpO3JldHVybiBvW3JdPXN9ZnVuY3Rpb24gZihlLHQscil7aWYoIXJ8fCFy
LnNvdXJjZXx8KHQ9ZS5leHBhbmRMb2NhbExvb2t1cCh0LHIpKSl7dmFyIG49ZS5fcmVzb2x2ZUNh
Y2hlW3RdO2lmKHZvaWQgMCE9PW4pcmV0dXJuIG47aWYoIWUuX2ZhaWxDYWNoZVt0XSl7dmFyIGk9
dm9pZCAwO3JldHVybiBlLnJlc29sdmVyJiYoaT1lLnJlc29sdmVyLnJlc29sdmUodCkpLHZvaWQg
MD09PWkmJihpPWUucmVnaXN0cmF0aW9uc1t0XSksdm9pZCAwPT09aT9lLl9mYWlsQ2FjaGVbdF09
ITA6ZS5fcmVzb2x2ZUNhY2hlW3RdPWksaX19fWZ1bmN0aW9uIGQoZSx0LHIpe3JldHVybiB2b2lk
IDAhPT1lLnJlc29sdmUodCx7c291cmNlOnJ9KX1mdW5jdGlvbiBwKGUpe3ZhciB0PWVbMF0scj1t
W3RdO2lmKHIpcmV0dXJuIHI7dmFyIG49dC5zcGxpdCgiOiIpLGk9blswXSxvPW5bMV07cmV0dXJu
IG1bdF09cy5pbnRlcm4oaSsiOiIrbysiLSIrdil9ZS5wcml2YXRpemU9cDt2YXIgaD0vXlteOl0r
OlteOl0rJC87dS5wcm90b3R5cGU9e2ZhbGxiYWNrOm51bGwscmVzb2x2ZXI6bnVsbCxyZWdpc3Ry
YXRpb25zOm51bGwsX3R5cGVJbmplY3Rpb25zOm51bGwsX2luamVjdGlvbnM6bnVsbCxfZmFjdG9y
eVR5cGVJbmplY3Rpb25zOm51bGwsX2ZhY3RvcnlJbmplY3Rpb25zOm51bGwsX25vcm1hbGl6ZUNh
Y2hlOm51bGwsX3Jlc29sdmVDYWNoZTpudWxsLF9vcHRpb25zOm51bGwsX3R5cGVPcHRpb25zOm51
bGwsY29udGFpbmVyOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgYS5kZWZhdWx0KHRoaXMsZSl9LHJl
Z2lzdGVyOmZ1bmN0aW9uKGUsdCl7dmFyIHI9YXJndW1lbnRzLmxlbmd0aDw9Mnx8dm9pZCAwPT09
YXJndW1lbnRzWzJdP3t9OmFyZ3VtZW50c1syXTtpZih2b2lkIDA9PT10KXRocm93IG5ldyBUeXBl
RXJyb3IoIkF0dGVtcHRpbmcgdG8gcmVnaXN0ZXIgYW4gdW5rbm93biBmYWN0b3J5OiBgIitlKyJg
Iik7dmFyIG49dGhpcy5ub3JtYWxpemUoZSk7aWYodGhpcy5fcmVzb2x2ZUNhY2hlW25dKXRocm93
IG5ldyBFcnJvcigiQ2Fubm90IHJlLXJlZ2lzdGVyOiBgIitlKyJgLCBhcyBpdCBoYXMgYWxyZWFk
eSBiZWVuIHJlc29sdmVkLiIpO2RlbGV0ZSB0aGlzLl9mYWlsQ2FjaGVbbl0sdGhpcy5yZWdpc3Ry
YXRpb25zW25dPXQsdGhpcy5fb3B0aW9uc1tuXT1yfSx1bnJlZ2lzdGVyOmZ1bmN0aW9uKGUpe3Zh
ciB0PXRoaXMubm9ybWFsaXplKGUpO3RoaXMuX2xvY2FsTG9va3VwQ2FjaGU9bmV3IGkuZGVmYXVs
dCxkZWxldGUgdGhpcy5yZWdpc3RyYXRpb25zW3RdLGRlbGV0ZSB0aGlzLl9yZXNvbHZlQ2FjaGVb
dF0sZGVsZXRlIHRoaXMuX2ZhaWxDYWNoZVt0XSxkZWxldGUgdGhpcy5fb3B0aW9uc1t0XX0scmVz
b2x2ZTpmdW5jdGlvbihlLHQpe3ZhciByPWYodGhpcyx0aGlzLm5vcm1hbGl6ZShlKSx0KTtpZih2
b2lkIDA9PT1yJiZ0aGlzLmZhbGxiYWNrKXt2YXIgbjtyPShuPXRoaXMuZmFsbGJhY2spLnJlc29s
dmUuYXBwbHkobixhcmd1bWVudHMpfXJldHVybiByfSxkZXNjcmliZTpmdW5jdGlvbihlKXtyZXR1
cm4gdGhpcy5yZXNvbHZlciYmdGhpcy5yZXNvbHZlci5sb29rdXBEZXNjcmlwdGlvbj90aGlzLnJl
c29sdmVyLmxvb2t1cERlc2NyaXB0aW9uKGUpOnRoaXMuZmFsbGJhY2s/dGhpcy5mYWxsYmFjay5k
ZXNjcmliZShlKTplfSxub3JtYWxpemVGdWxsTmFtZTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5y
ZXNvbHZlciYmdGhpcy5yZXNvbHZlci5ub3JtYWxpemU/dGhpcy5yZXNvbHZlci5ub3JtYWxpemUo
ZSk6dGhpcy5mYWxsYmFjaz90aGlzLmZhbGxiYWNrLm5vcm1hbGl6ZUZ1bGxOYW1lKGUpOmV9LG5v
cm1hbGl6ZTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fbm9ybWFsaXplQ2FjaGVbZV18fCh0aGlz
Ll9ub3JtYWxpemVDYWNoZVtlXT10aGlzLm5vcm1hbGl6ZUZ1bGxOYW1lKGUpKX0sbWFrZVRvU3Ry
aW5nOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMucmVzb2x2ZXImJnRoaXMucmVzb2x2ZXIubWFr
ZVRvU3RyaW5nP3RoaXMucmVzb2x2ZXIubWFrZVRvU3RyaW5nKGUsdCk6dGhpcy5mYWxsYmFjaz90
aGlzLmZhbGxiYWNrLm1ha2VUb1N0cmluZyhlLHQpOmUudG9TdHJpbmcoKX0saGFzOmZ1bmN0aW9u
KGUsdCl7aWYoIXRoaXMuaXNWYWxpZEZ1bGxOYW1lKGUpKXJldHVybiExO3ZhciByPXZvaWQgMDty
ZXR1cm4gcj10JiZ0LnNvdXJjZSYmdGhpcy5ub3JtYWxpemUodC5zb3VyY2UpLGQodGhpcyx0aGlz
Lm5vcm1hbGl6ZShlKSxyKX0sb3B0aW9uc0ZvclR5cGU6ZnVuY3Rpb24oZSx0KXt0aGlzLl90eXBl
T3B0aW9uc1tlXT10fSxnZXRPcHRpb25zRm9yVHlwZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLl90
eXBlT3B0aW9uc1tlXTtyZXR1cm4gdm9pZCAwPT09dCYmdGhpcy5mYWxsYmFjayYmKHQ9dGhpcy5m
YWxsYmFjay5nZXRPcHRpb25zRm9yVHlwZShlKSksdH0sb3B0aW9uczpmdW5jdGlvbihlKXt2YXIg
dD1hcmd1bWVudHMubGVuZ3RoPD0xfHx2b2lkIDA9PT1hcmd1bWVudHNbMV0/e306YXJndW1lbnRz
WzFdLHI9dGhpcy5ub3JtYWxpemUoZSk7dGhpcy5fb3B0aW9uc1tyXT10fSxnZXRPcHRpb25zOmZ1
bmN0aW9uKGUpe3ZhciB0PXRoaXMubm9ybWFsaXplKGUpLHI9dGhpcy5fb3B0aW9uc1t0XTtyZXR1
cm4gdm9pZCAwPT09ciYmdGhpcy5mYWxsYmFjayYmKHI9dGhpcy5mYWxsYmFjay5nZXRPcHRpb25z
KGUpKSxyfSxnZXRPcHRpb246ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLl9vcHRpb25zW2VdO2lm
KHImJnZvaWQgMCE9PXJbdF0pcmV0dXJuIHJbdF07dmFyIG49ZS5zcGxpdCgiOiIpWzBdO3JldHVy
biByPXRoaXMuX3R5cGVPcHRpb25zW25dLHImJnZvaWQgMCE9PXJbdF0/clt0XTp0aGlzLmZhbGxi
YWNrP3RoaXMuZmFsbGJhY2suZ2V0T3B0aW9uKGUsdCk6dm9pZCAwfSx0eXBlSW5qZWN0aW9uOmZ1
bmN0aW9uKGUsdCxyKXt2YXIgbj1yLnNwbGl0KCI6IilbMF07aWYobj09PWUpdGhyb3cgbmV3IEVy
cm9yKCJDYW5ub3QgaW5qZWN0IGEgYCIrcisiYCBvbiBvdGhlciAiK2UrIihzKS4iKTt2YXIgaT10
aGlzLl90eXBlSW5qZWN0aW9uc1tlXXx8KHRoaXMuX3R5cGVJbmplY3Rpb25zW2VdPVtdKTtpLnB1
c2goe3Byb3BlcnR5OnQsZnVsbE5hbWU6cn0pfSxpbmplY3Rpb246ZnVuY3Rpb24oZSx0LHIpe3Ro
aXMudmFsaWRhdGVGdWxsTmFtZShyKTt2YXIgbj10aGlzLm5vcm1hbGl6ZShyKTtpZihlLmluZGV4
T2YoIjoiKT09PS0xKXJldHVybiB0aGlzLnR5cGVJbmplY3Rpb24oZSx0LG4pO3ZhciBpPXRoaXMu
bm9ybWFsaXplKGUpLG89dGhpcy5faW5qZWN0aW9uc1tpXXx8KHRoaXMuX2luamVjdGlvbnNbaV09
W10pO28ucHVzaCh7cHJvcGVydHk6dCxmdWxsTmFtZTpufSl9LGZhY3RvcnlUeXBlSW5qZWN0aW9u
OmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj10aGlzLl9mYWN0b3J5VHlwZUluamVjdGlvbnNbZV18fCh0
aGlzLl9mYWN0b3J5VHlwZUluamVjdGlvbnNbZV09W10pO24ucHVzaCh7cHJvcGVydHk6dCxmdWxs
TmFtZTp0aGlzLm5vcm1hbGl6ZShyKX0pfSxmYWN0b3J5SW5qZWN0aW9uOmZ1bmN0aW9uKGUsdCxy
KXt2YXIgbj10aGlzLm5vcm1hbGl6ZShlKSxpPXRoaXMubm9ybWFsaXplKHIpO2lmKHRoaXMudmFs
aWRhdGVGdWxsTmFtZShyKSxlLmluZGV4T2YoIjoiKT09PS0xKXJldHVybiB0aGlzLmZhY3RvcnlU
eXBlSW5qZWN0aW9uKG4sdCxpKTt2YXIgbz10aGlzLl9mYWN0b3J5SW5qZWN0aW9uc1tuXXx8KHRo
aXMuX2ZhY3RvcnlJbmplY3Rpb25zW25dPVtdKTtvLnB1c2goe3Byb3BlcnR5OnQsZnVsbE5hbWU6
aX0pfSxrbm93bkZvclR5cGU6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXZvaWQgMCxyPXZvaWQgMCxp
PW4uZGVmYXVsdChudWxsKSxhPU9iamVjdC5rZXlzKHRoaXMucmVnaXN0cmF0aW9ucykscz0wLHU9
YS5sZW5ndGg7czx1O3MrKyl7dmFyIGw9YVtzXSxjPWwuc3BsaXQoIjoiKVswXTtjPT09ZSYmKGlb
bF09ITApfXJldHVybiB0aGlzLmZhbGxiYWNrJiYodD10aGlzLmZhbGxiYWNrLmtub3duRm9yVHlw
ZShlKSksdGhpcy5yZXNvbHZlciYmdGhpcy5yZXNvbHZlci5rbm93bkZvclR5cGUmJihyPXRoaXMu
cmVzb2x2ZXIua25vd25Gb3JUeXBlKGUpKSxvLmRlZmF1bHQoe30sdCxpLHIpfSx2YWxpZGF0ZUZ1
bGxOYW1lOmZ1bmN0aW9uKGUpe2lmKCF0aGlzLmlzVmFsaWRGdWxsTmFtZShlKSl0aHJvdyBuZXcg
VHlwZUVycm9yKCJJbnZhbGlkIEZ1bGxuYW1lLCBleHBlY3RlZDogYHR5cGU6bmFtZWAgZ290OiAi
K2UpO3JldHVybiEwfSxpc1ZhbGlkRnVsbE5hbWU6ZnVuY3Rpb24oZSl7cmV0dXJuISFoLnRlc3Qo
ZSl9LHZhbGlkYXRlSW5qZWN0aW9uczpmdW5jdGlvbihlKXtpZihlKWZvcih2YXIgdCxyPTAsbj1l
Lmxlbmd0aDtyPG47cisrKWlmKHQ9ZVtyXS5mdWxsTmFtZSwhdGhpcy5oYXModCkpdGhyb3cgbmV3
IEVycm9yKCJBdHRlbXB0aW5nIHRvIGluamVjdCBhbiB1bmtub3duIGluamVjdGlvbjogYCIrdCsi
YCIpfSxub3JtYWxpemVJbmplY3Rpb25zSGFzaDpmdW5jdGlvbihlKXt2YXIgdD1bXTtmb3IodmFy
IHIgaW4gZSllLmhhc093blByb3BlcnR5KHIpJiZ0LnB1c2goe3Byb3BlcnR5OnIsZnVsbE5hbWU6
ZVtyXX0pO3JldHVybiB0fSxnZXRJbmplY3Rpb25zOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX2lu
amVjdGlvbnNbZV18fFtdO3JldHVybiB0aGlzLmZhbGxiYWNrJiYodD10LmNvbmNhdCh0aGlzLmZh
bGxiYWNrLmdldEluamVjdGlvbnMoZSkpKSx0fSxnZXRUeXBlSW5qZWN0aW9uczpmdW5jdGlvbihl
KXt2YXIgdD10aGlzLl90eXBlSW5qZWN0aW9uc1tlXXx8W107cmV0dXJuIHRoaXMuZmFsbGJhY2sm
Jih0PXQuY29uY2F0KHRoaXMuZmFsbGJhY2suZ2V0VHlwZUluamVjdGlvbnMoZSkpKSx0fSxnZXRG
YWN0b3J5SW5qZWN0aW9uczpmdW5jdGlvbihlKXt2YXIgdD10aGlzLl9mYWN0b3J5SW5qZWN0aW9u
c1tlXXx8W107cmV0dXJuIHRoaXMuZmFsbGJhY2smJih0PXQuY29uY2F0KHRoaXMuZmFsbGJhY2su
Z2V0RmFjdG9yeUluamVjdGlvbnMoZSkpKSx0fSxnZXRGYWN0b3J5VHlwZUluamVjdGlvbnM6ZnVu
Y3Rpb24oZSl7dmFyIHQ9dGhpcy5fZmFjdG9yeVR5cGVJbmplY3Rpb25zW2VdfHxbXTtyZXR1cm4g
dGhpcy5mYWxsYmFjayYmKHQ9dC5jb25jYXQodGhpcy5mYWxsYmFjay5nZXRGYWN0b3J5VHlwZUlu
amVjdGlvbnMoZSkpKSx0fX0sdS5wcm90b3R5cGUuZXhwYW5kTG9jYWxMb29rdXA9ZnVuY3Rpb24o
ZSx0KXtpZih0aGlzLnJlc29sdmVyJiZ0aGlzLnJlc29sdmVyLmV4cGFuZExvY2FsTG9va3VwKXt2
YXIgcj10aGlzLm5vcm1hbGl6ZShlKSxuPXRoaXMubm9ybWFsaXplKHQuc291cmNlKTtyZXR1cm4g
Yyh0aGlzLHIsbil9cmV0dXJuIHRoaXMuZmFsbGJhY2s/dGhpcy5mYWxsYmFjay5leHBhbmRMb2Nh
bExvb2t1cChlLHQpOm51bGx9O3ZhciBtPW4uZGVmYXVsdChudWxsKSx2PU1hdGguZmxvb3IoTWF0
aC5yYW5kb20oKSpuZXcgRGF0ZSkrIiI7ZS5kZWZhdWx0PXV9KSxlKCJkYWctbWFwIixbImV4cG9y
dHMiLCJ2ZXJ0ZXgiLCJ2aXNpdCJdLGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gbigpe3RoaXMubmFtZXM9W10sdGhpcy52ZXJ0aWNlcz1PYmplY3QuY3JlYXRlKG51bGwpfWUu
ZGVmYXVsdD1uLG4ucHJvdG90eXBlLmFkZD1mdW5jdGlvbihlKXtpZighZSl0aHJvdyBuZXcgRXJy
b3IoIkNhbid0IGFkZCBWZXJ0ZXggd2l0aG91dCBuYW1lIik7aWYodm9pZCAwIT09dGhpcy52ZXJ0
aWNlc1tlXSlyZXR1cm4gdGhpcy52ZXJ0aWNlc1tlXTt2YXIgcj1uZXcgdC5kZWZhdWx0KGUpO3Jl
dHVybiB0aGlzLnZlcnRpY2VzW2VdPXIsdGhpcy5uYW1lcy5wdXNoKGUpLHJ9LG4ucHJvdG90eXBl
Lm1hcD1mdW5jdGlvbihlLHQpe3RoaXMuYWRkKGUpLnZhbHVlPXR9LG4ucHJvdG90eXBlLmFkZEVk
Z2U9ZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiBuKGUscil7aWYoZS5uYW1lPT09dCl0aHJvdyBuZXcg
RXJyb3IoImN5Y2xlIGRldGVjdGVkOiAiK3QrIiA8LSAiK3Iuam9pbigiIDwtICIpKX1pZihlJiZ0
JiZlIT09dCl7dmFyIGk9dGhpcy5hZGQoZSksbz10aGlzLmFkZCh0KTtvLmluY29taW5nLmhhc093
blByb3BlcnR5KGUpfHwoci5kZWZhdWx0KGksbiksaS5oYXNPdXRnb2luZz0hMCxvLmluY29taW5n
W2VdPWksby5pbmNvbWluZ05hbWVzLnB1c2goZSkpfX0sbi5wcm90b3R5cGUudG9wc29ydD1mdW5j
dGlvbihlKXt2YXIgdCxuLGk9e30sbz10aGlzLnZlcnRpY2VzLGE9dGhpcy5uYW1lcyxzPWEubGVu
Z3RoO2Zvcih0PTA7dDxzO3QrKyluPW9bYVt0XV0sbi5oYXNPdXRnb2luZ3x8ci5kZWZhdWx0KG4s
ZSxpKX0sbi5wcm90b3R5cGUuYWRkRWRnZXM9ZnVuY3Rpb24oZSx0LHIsbil7dmFyIGk7aWYodGhp
cy5tYXAoZSx0KSxyKWlmKCJzdHJpbmciPT10eXBlb2Ygcil0aGlzLmFkZEVkZ2UoZSxyKTtlbHNl
IGZvcihpPTA7aTxyLmxlbmd0aDtpKyspdGhpcy5hZGRFZGdlKGUscltpXSk7aWYobilpZigic3Ry
aW5nIj09dHlwZW9mIG4pdGhpcy5hZGRFZGdlKG4sZSk7ZWxzZSBmb3IoaT0wO2k8bi5sZW5ndGg7
aSsrKXRoaXMuYWRkRWRnZShuW2ldLGUpfX0pLGUoImRhZy1tYXAudW1kIixbImV4cG9ydHMiLCJk
YWctbWFwL3BsYXRmb3JtIiwiZGFnLW1hcCJdLGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7
ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoZnVuY3Rpb24oKXty
ZXR1cm4gci5kZWZhdWx0fSk6InVuZGVmaW5lZCIhPXR5cGVvZiBtb2R1bGUmJm1vZHVsZS5leHBv
cnRzP21vZHVsZS5leHBvcnRzPXIuZGVmYXVsdDoidW5kZWZpbmVkIiE9dHlwZW9mIHQuZGVmYXVs
dCYmKHQuZGVmYXVsdC5EQUc9ci5kZWZhdWx0KX0pLGUoImRhZy1tYXAvcGxhdGZvcm0iLFsiZXhw
b3J0cyJdLGZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0Ijt2YXIgdDtpZigib2JqZWN0Ij09dHlwZW9m
IHNlbGYpdD1zZWxmO2Vsc2V7aWYoIm9iamVjdCIhPXR5cGVvZiBnbG9iYWwpdGhyb3cgbmV3IEVy
cm9yKCJubyBnbG9iYWw6IGBzZWxmYCBvciBgZ2xvYmFsYCBmb3VuZCIpO3Q9Z2xvYmFsfWUuZGVm
YXVsdD10fSksZSgiZG9tLWhlbHBlciIsWyJleHBvcnRzIiwiaHRtbGJhcnMtcnVudGltZS9tb3Jw
aCIsIm1vcnBoLWF0dHIiLCJkb20taGVscGVyL2J1aWxkLWh0bWwtZG9tIiwiZG9tLWhlbHBlci9j
bGFzc2VzIiwiZG9tLWhlbHBlci9wcm9wIl0sZnVuY3Rpb24oZSx0LHIsbixpLG8peyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiBhKGUpe3JldHVybiBlJiZlLm5hbWVzcGFjZVVSST09PW4uc3ZnTmFtZXNw
YWNlJiYhbi5zdmdIVE1MSW50ZWdyYXRpb25Qb2ludHNbZS50YWdOYW1lXT9uLnN2Z05hbWVzcGFj
ZTpudWxsfWZ1bmN0aW9uIHMoZSx0KXtpZigiVEFCTEUiPT09dC50YWdOYW1lKXt2YXIgcj1fLmV4
ZWMoZSk7aWYocil7dmFyIG49clsxXTtyZXR1cm4idHIiPT09bnx8ImNvbCI9PT1ufX19ZnVuY3Rp
b24gdShlLHQpe3ZhciByPXQuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cmV0dXJuIHIu
aW5uZXJIVE1MPSI8c3ZnPiIrZSsiPC9zdmc+IixyLmZpcnN0Q2hpbGQuY2hpbGROb2Rlc31mdW5j
dGlvbiBsKGUsdCxyKXt0aGlzLmVsZW1lbnQ9ZSx0aGlzLmRvbT10LHRoaXMubmFtZXNwYWNlPXIs
dGhpcy5ndWlkPSJlbGVtZW50Iit3KyssdGhpcy5fc3RhdGU9dm9pZCAwLHRoaXMuaXNEaXJ0eT0h
MH1mdW5jdGlvbiBjKGUpe2lmKHRoaXMuZG9jdW1lbnQ9ZXx8ZG9jdW1lbnQsIXRoaXMuZG9jdW1l
bnQpdGhyb3cgbmV3IEVycm9yKCJBIGRvY3VtZW50IG9iamVjdCBtdXN0IGJlIHBhc3NlZCB0byB0
aGUgRE9NSGVscGVyLCBvciBhdmFpbGFibGUgb24gdGhlIGdsb2JhbCBzY29wZSIpO3RoaXMuY2Fu
Q2xvbmU9eSx0aGlzLm5hbWVzcGFjZT1udWxsLGYodGhpcyl9ZnVuY3Rpb24gZihlKXt2YXIgdD1w
LmNhbGwoZSwiZm9vYmFyOmJheiIpO2lmKCJmb29iYXI6Ij09PXQpZS5wcm90b2NvbEZvclVSTD1w
O2Vsc2UgaWYoIm9iamVjdCI9PXR5cGVvZiBVUkwpQz1VUkwsZS5wcm90b2NvbEZvclVSTD1oO2Vs
c2V7aWYoIm9iamVjdCIhPXR5cGVvZiBtb2R1bGV8fCJmdW5jdGlvbiIhPXR5cGVvZiBtb2R1bGUu
cmVxdWlyZSl0aHJvdyBuZXcgRXJyb3IoIkRPTSBIZWxwZXIgY291bGQgbm90IGZpbmQgdmFsaWQg
VVJMIHBhcnNpbmcgbWVjaGFuaXNtIik7Qz1tb2R1bGUucmVxdWlyZSgidXJsIiksZS5wcm90b2Nv
bEZvclVSTD1ofWUuZG9jdW1lbnQuY3JlYXRlUmF3SFRNTFNlY3Rpb24mJihlLnNldE1vcnBoSFRN
TD1kKX1mdW5jdGlvbiBkKGUsdCl7dmFyIHI9dGhpcy5kb2N1bWVudC5jcmVhdGVSYXdIVE1MU2Vj
dGlvbih0KTtlLnNldE5vZGUocil9ZnVuY3Rpb24gcChlKXtyZXR1cm4gRXx8KEU9dGhpcy5kb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJhIikpLEUuaHJlZj1lLEUucHJvdG9jb2x9ZnVuY3Rpb24gaChl
KXt2YXIgdD1DLnBhcnNlKGUpLnByb3RvY29sO3JldHVybiBudWxsPT09dD8iOiI6dH12YXIgbT0i
dW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50JiZkb2N1bWVudCx2PW0mJmZ1bmN0aW9uKGUpe3Zh
ciB0PWUuY3JlYXRlRWxlbWVudCgiZGl2Iik7dC5hcHBlbmRDaGlsZChlLmNyZWF0ZVRleHROb2Rl
KCIiKSk7dmFyIHI9dC5jbG9uZU5vZGUoITApO3JldHVybiAwPT09ci5jaGlsZE5vZGVzLmxlbmd0
aH0obSksYj1tJiZmdW5jdGlvbihlKXt2YXIgdD1lLmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7dC5z
ZXRBdHRyaWJ1dGUoImNoZWNrZWQiLCJjaGVja2VkIik7dmFyIHI9dC5jbG9uZU5vZGUoITEpO3Jl
dHVybiFyLmNoZWNrZWR9KG0pLGc9bSYmKCFtLmNyZWF0ZUVsZW1lbnROU3x8ZnVuY3Rpb24oZSl7
dmFyIHQ9ZS5jcmVhdGVFbGVtZW50TlMobi5zdmdOYW1lc3BhY2UsInN2ZyIpO3JldHVybiB0LnNl
dEF0dHJpYnV0ZSgidmlld0JveCIsIjAgMCAxMDAgMTAwIiksdC5yZW1vdmVBdHRyaWJ1dGUoInZp
ZXdCb3giKSwhdC5nZXRBdHRyaWJ1dGUoInZpZXdCb3giKX0obSkpLHk9bSYmZnVuY3Rpb24oZSl7
dmFyIHQ9ZS5jcmVhdGVFbGVtZW50KCJkaXYiKTt0LmFwcGVuZENoaWxkKGUuY3JlYXRlVGV4dE5v
ZGUoIiAiKSksdC5hcHBlbmRDaGlsZChlLmNyZWF0ZVRleHROb2RlKCIgIikpO3ZhciByPXQuY2xv
bmVOb2RlKCEwKTtyZXR1cm4iICI9PT1yLmNoaWxkTm9kZXNbMF0ubm9kZVZhbHVlfShtKSxfPS88
KFtcdzpdKykvLHc9MTtsLnByb3RvdHlwZS5nZXRTdGF0ZT1mdW5jdGlvbigpe3JldHVybiB0aGlz
Ll9zdGF0ZXx8KHRoaXMuX3N0YXRlPXt9KSx0aGlzLl9zdGF0ZX0sbC5wcm90b3R5cGUuc2V0U3Rh
dGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX3N0YXRlPWV9LGwucHJvdG90eXBlLmNsZWFyPWZ1
bmN0aW9uKCl7fSxsLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50PW51
bGwsdGhpcy5kb209bnVsbH07dmFyIHg9Yy5wcm90b3R5cGU7eC5jb25zdHJ1Y3Rvcj1jLHguZ2V0
RWxlbWVudEJ5SWQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD10fHx0aGlzLmRvY3VtZW50LHQuZ2V0
RWxlbWVudEJ5SWQoZSl9LHguaW5zZXJ0QmVmb3JlPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZS5p
bnNlcnRCZWZvcmUodCxyKX0seC5hcHBlbmRDaGlsZD1mdW5jdGlvbihlLHQpe3JldHVybiBlLmFw
cGVuZENoaWxkKHQpfTt2YXIgaztrPSJ1bmRlZmluZWQiIT10eXBlb2YgbmF2aWdhdG9yJiZuYXZp
Z2F0b3IudXNlckFnZW50LmluZGV4T2YoIlBoYW50b21KUyIpP2Z1bmN0aW9uKGUsdCl7cmV0dXJu
IGVbdF19OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuaXRlbSh0KX0seC5jaGlsZEF0PWZ1bmN0aW9u
KGUsdCl7Zm9yKHZhciByPWUsbj0wO248dC5sZW5ndGg7bisrKXI9ayhyLmNoaWxkTm9kZXMsdFtu
XSk7cmV0dXJuIHJ9LHguY2hpbGRBdEluZGV4PWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPWUuZmly
c3RDaGlsZCxuPTA7ciYmbjx0O24rKylyPXIubmV4dFNpYmxpbmc7cmV0dXJuIHJ9LHguYXBwZW5k
VGV4dD1mdW5jdGlvbihlLHQpe3JldHVybiBlLmFwcGVuZENoaWxkKHRoaXMuZG9jdW1lbnQuY3Jl
YXRlVGV4dE5vZGUodCkpfSx4LnNldEF0dHJpYnV0ZT1mdW5jdGlvbihlLHQscil7ZS5zZXRBdHRy
aWJ1dGUodCxTdHJpbmcocikpfSx4LmdldEF0dHJpYnV0ZT1mdW5jdGlvbihlLHQpe3JldHVybiBl
LmdldEF0dHJpYnV0ZSh0KX0seC5zZXRBdHRyaWJ1dGVOUz1mdW5jdGlvbihlLHQscixuKXtlLnNl
dEF0dHJpYnV0ZU5TKHQscixTdHJpbmcobikpfSx4LmdldEF0dHJpYnV0ZU5TPWZ1bmN0aW9uKGUs
dCxyKXtyZXR1cm4gZS5nZXRBdHRyaWJ1dGVOUyh0LHIpfSxnP3gucmVtb3ZlQXR0cmlidXRlPWZ1
bmN0aW9uKGUsdCl7ZS5yZW1vdmVBdHRyaWJ1dGUodCl9OngucmVtb3ZlQXR0cmlidXRlPWZ1bmN0
aW9uKGUsdCl7InN2ZyI9PT1lLnRhZ05hbWUmJiJ2aWV3Qm94Ij09PXQ/ZS5zZXRBdHRyaWJ1dGUo
dCxudWxsKTplLnJlbW92ZUF0dHJpYnV0ZSh0KX0seC5zZXRQcm9wZXJ0eVN0cmljdD1mdW5jdGlv
bihlLHQscil7dm9pZCAwPT09ciYmKHI9bnVsbCksbnVsbCE9PXJ8fCJ2YWx1ZSIhPT10JiYidHlw
ZSIhPT10JiYic3JjIiE9PXR8fChyPSIiKSxlW3RdPXJ9LHguZ2V0UHJvcGVydHlTdHJpY3Q9ZnVu
Y3Rpb24oZSx0KXtyZXR1cm4gZVt0XX0seC5zZXRQcm9wZXJ0eT1mdW5jdGlvbihlLHQscixpKXtp
ZihlLm5hbWVzcGFjZVVSST09PW4uc3ZnTmFtZXNwYWNlKW8uaXNBdHRyUmVtb3ZhbFZhbHVlKHIp
P2UucmVtb3ZlQXR0cmlidXRlKHQpOmk/ZS5zZXRBdHRyaWJ1dGVOUyhpLHQscik6ZS5zZXRBdHRy
aWJ1dGUodCxyKTtlbHNle3ZhciBhPW8ubm9ybWFsaXplUHJvcGVydHkoZSx0KSxzPWEubm9ybWFs
aXplZCx1PWEudHlwZTsicHJvcCI9PT11P2Vbc109cjpvLmlzQXR0clJlbW92YWxWYWx1ZShyKT9l
LnJlbW92ZUF0dHJpYnV0ZSh0KTppJiZlLnNldEF0dHJpYnV0ZU5TP2Uuc2V0QXR0cmlidXRlTlMo
aSx0LHIpOmUuc2V0QXR0cmlidXRlKHQscil9fSxtJiZtLmNyZWF0ZUVsZW1lbnROUz8oeC5jcmVh
dGVFbGVtZW50PWZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcy5uYW1lc3BhY2U7cmV0dXJuIHQmJihy
PSJzdmciPT09ZT9uLnN2Z05hbWVzcGFjZTphKHQpKSxyP3RoaXMuZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKHIsZSk6dGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KGUpfSx4LnNldEF0dHJpYnV0
ZU5TPWZ1bmN0aW9uKGUsdCxyLG4pe2Uuc2V0QXR0cmlidXRlTlModCxyLFN0cmluZyhuKSl9KToo
eC5jcmVhdGVFbGVtZW50PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoZSl9LHguc2V0QXR0cmlidXRlTlM9ZnVuY3Rpb24oZSx0LHIsbil7ZS5zZXRBdHRyaWJ1
dGUocixTdHJpbmcobikpfSkseC5hZGRDbGFzc2VzPWkuYWRkQ2xhc3Nlcyx4LnJlbW92ZUNsYXNz
ZXM9aS5yZW1vdmVDbGFzc2VzLHguc2V0TmFtZXNwYWNlPWZ1bmN0aW9uKGUpe3RoaXMubmFtZXNw
YWNlPWV9LHguZGV0ZWN0TmFtZXNwYWNlPWZ1bmN0aW9uKGUpe3RoaXMubmFtZXNwYWNlPWEoZSl9
LHguY3JlYXRlRG9jdW1lbnRGcmFnbWVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRvY3VtZW50
LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKX0seC5jcmVhdGVUZXh0Tm9kZT1mdW5jdGlvbihlKXty
ZXR1cm4gdGhpcy5kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShlKX0seC5jcmVhdGVDb21tZW50PWZ1
bmN0aW9uKGUpe3JldHVybiB0aGlzLmRvY3VtZW50LmNyZWF0ZUNvbW1lbnQoZSl9LHgucmVwYWly
Q2xvbmVkTm9kZT1mdW5jdGlvbihlLHQscil7aWYodiYmdC5sZW5ndGg+MClmb3IodmFyIG49MCxp
PXQubGVuZ3RoO248aTtuKyspe3ZhciBvPXRoaXMuZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiIp
LGE9dFtuXSxzPXRoaXMuY2hpbGRBdEluZGV4KGUsYSk7cz9lLmluc2VydEJlZm9yZShvLHMpOmUu
YXBwZW5kQ2hpbGQobyl9YiYmciYmZS5zZXRBdHRyaWJ1dGUoImNoZWNrZWQiLCJjaGVja2VkIil9
LHguY2xvbmVOb2RlPWZ1bmN0aW9uKGUsdCl7dmFyIHI9ZS5jbG9uZU5vZGUoISF0KTtyZXR1cm4g
cn0seC5BdHRyTW9ycGhDbGFzcz1yLmRlZmF1bHQseC5jcmVhdGVBdHRyTW9ycGg9ZnVuY3Rpb24o
ZSx0LHIpe3JldHVybiB0aGlzLkF0dHJNb3JwaENsYXNzLmNyZWF0ZShlLHQsdGhpcyxyKX0seC5F
bGVtZW50TW9ycGhDbGFzcz1sLHguY3JlYXRlRWxlbWVudE1vcnBoPWZ1bmN0aW9uKGUsdCl7cmV0
dXJuIG5ldyB0aGlzLkVsZW1lbnRNb3JwaENsYXNzKGUsdGhpcyx0KX0seC5jcmVhdGVVbnNhZmVB
dHRyTW9ycGg9ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXRoaXMuY3JlYXRlQXR0ck1vcnBoKGUsdCxy
KTtyZXR1cm4gbi5lc2NhcGVkPSExLG59LHguTW9ycGhDbGFzcz10LmRlZmF1bHQseC5jcmVhdGVN
b3JwaD1mdW5jdGlvbihlLHQscixuKXtpZihuJiYxMT09PW4ubm9kZVR5cGUpdGhyb3cgbmV3IEVy
cm9yKCJDYW5ub3QgcGFzcyBhIGZyYWdtZW50IGFzIHRoZSBjb250ZXh0dWFsIGVsZW1lbnQgdG8g
Y3JlYXRlTW9ycGgiKTshbiYmZSYmMT09PWUubm9kZVR5cGUmJihuPWUpO3ZhciBpPW5ldyB0aGlz
Lk1vcnBoQ2xhc3ModGhpcyxuKTtyZXR1cm4gaS5maXJzdE5vZGU9dCxpLmxhc3ROb2RlPXIsaX0s
eC5jcmVhdGVGcmFnbWVudE1vcnBoPWZ1bmN0aW9uKGUpe2lmKGUmJjExPT09ZS5ub2RlVHlwZSl0
aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBwYXNzIGEgZnJhZ21lbnQgYXMgdGhlIGNvbnRleHR1YWwg
ZWxlbWVudCB0byBjcmVhdGVNb3JwaCIpO3ZhciByPXRoaXMuY3JlYXRlRG9jdW1lbnRGcmFnbWVu
dCgpO3JldHVybiB0LmRlZmF1bHQuY3JlYXRlKHRoaXMsZSxyKX0seC5yZXBsYWNlQ29udGVudFdp
dGhNb3JwaD1mdW5jdGlvbihlKXt2YXIgcj1lLmZpcnN0Q2hpbGQ7aWYocil7dmFyIG49dC5kZWZh
dWx0LmF0dGFjaCh0aGlzLGUscixlLmxhc3RDaGlsZCk7cmV0dXJuIG4uY2xlYXIoKSxufXZhciBp
PXRoaXMuY3JlYXRlQ29tbWVudCgiIik7cmV0dXJuIHRoaXMuYXBwZW5kQ2hpbGQoZSxpKSx0LmRl
ZmF1bHQuY3JlYXRlKHRoaXMsZSxpKX0seC5jcmVhdGVVbnNhZmVNb3JwaD1mdW5jdGlvbihlLHQs
cixuKXt2YXIgaT10aGlzLmNyZWF0ZU1vcnBoKGUsdCxyLG4pO3JldHVybiBpLnBhcnNlVGV4dEFz
SFRNTD0hMCxpfSx4LmNyZWF0ZU1vcnBoQXQ9ZnVuY3Rpb24oZSx0LHIsbil7dmFyIGk9dD09PXIs
bz10aGlzLmNoaWxkQXRJbmRleChlLHQpLGE9aT9vOnRoaXMuY2hpbGRBdEluZGV4KGUscik7cmV0
dXJuIHRoaXMuY3JlYXRlTW9ycGgoZSxvLGEsbil9LHguY3JlYXRlVW5zYWZlTW9ycGhBdD1mdW5j
dGlvbihlLHQscixuKXt2YXIgaT10aGlzLmNyZWF0ZU1vcnBoQXQoZSx0LHIsbik7cmV0dXJuIGku
cGFyc2VUZXh0QXNIVE1MPSEwLGl9LHguaW5zZXJ0TW9ycGhCZWZvcmU9ZnVuY3Rpb24oZSx0LHIp
e3ZhciBuPXRoaXMuZG9jdW1lbnQuY3JlYXRlQ29tbWVudCgiIik7cmV0dXJuIGUuaW5zZXJ0QmVm
b3JlKG4sdCksdGhpcy5jcmVhdGVNb3JwaChlLG4sbixyKX0seC5hcHBlbmRNb3JwaD1mdW5jdGlv
bihlLHQpe3ZhciByPXRoaXMuZG9jdW1lbnQuY3JlYXRlQ29tbWVudCgiIik7cmV0dXJuIGUuYXBw
ZW5kQ2hpbGQociksdGhpcy5jcmVhdGVNb3JwaChlLHIscix0KX0seC5pbnNlcnRCb3VuZGFyeT1m
dW5jdGlvbihlLHQpe3ZhciByPW51bGw9PT10P251bGw6dGhpcy5jaGlsZEF0SW5kZXgoZSx0KTt0
aGlzLmluc2VydEJlZm9yZShlLHRoaXMuY3JlYXRlVGV4dE5vZGUoIiIpLHIpfSx4LnNldE1vcnBo
SFRNTD1mdW5jdGlvbihlLHQpe2Uuc2V0SFRNTCh0KX0seC5wYXJzZUhUTUw9ZnVuY3Rpb24oZSx0
KXt2YXIgcjtpZihhKHQpPT09bi5zdmdOYW1lc3BhY2Upcj11KGUsdGhpcyk7ZWxzZXt2YXIgaT1u
LmJ1aWxkSFRNTERPTShlLHQsdGhpcyk7aWYocyhlLHQpKXtmb3IodmFyIG89aVswXTtvJiYxIT09
by5ub2RlVHlwZTspbz1vLm5leHRTaWJsaW5nO3I9by5jaGlsZE5vZGVzfWVsc2Ugcj1pfXZhciBs
PXRoaXMuZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO2lmKHImJnIubGVuZ3RoPjAp
e3ZhciBjPXJbMF07Zm9yKCJTRUxFQ1QiPT09dC50YWdOYW1lJiYoYz1jLm5leHRTaWJsaW5nKTtj
Oyl7dmFyIGY9YztjPWMubmV4dFNpYmxpbmcsbC5hcHBlbmRDaGlsZChmKX19cmV0dXJuIGx9O3Zh
ciBDLEU7ZS5kZWZhdWx0PWN9KSxlKCJkb20taGVscGVyL2J1aWxkLWh0bWwtZG9tIixbImV4cG9y
dHMiXSxmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gdChlLHQpe3Q9IiZzaHk7Iit0
LGUuaW5uZXJIVE1MPXQ7Zm9yKHZhciByPWUuY2hpbGROb2RlcyxuPXJbMF07MT09PW4ubm9kZVR5
cGUmJiFuLm5vZGVOYW1lOyluPW4uZmlyc3RDaGlsZDtpZigzPT09bi5ub2RlVHlwZSYmIsKtIj09
PW4ubm9kZVZhbHVlLmNoYXJBdCgwKSl7dmFyIGk9bi5ub2RlVmFsdWUuc2xpY2UoMSk7aS5sZW5n
dGg/bi5ub2RlVmFsdWU9bi5ub2RlVmFsdWUuc2xpY2UoMSk6bi5wYXJlbnROb2RlLnJlbW92ZUNo
aWxkKG4pfXJldHVybiByfWZ1bmN0aW9uIHIoZSxyKXt2YXIgaT1yLnRhZ05hbWUsbz1yLm91dGVy
SFRNTHx8KG5ldyBYTUxTZXJpYWxpemVyKS5zZXJpYWxpemVUb1N0cmluZyhyKTtpZighbyl0aHJv
dyJDYW4ndCBzZXQgaW5uZXJIVE1MIG9uICIraSsiIGluIHRoaXMgYnJvd3NlciI7ZT1uKGUscik7
Zm9yKHZhciBhPWZbaS50b0xvd2VyQ2FzZSgpXSxzPW8ubWF0Y2gobmV3IFJlZ0V4cCgiPCIraSsi
KFtePl0qKT4iLCJpIikpWzBdLHU9IjwvIitpKyI+IixsPVtzLGUsdV0sYz1hLmxlbmd0aCxkPTEr
YztjLS07KWwudW5zaGlmdCgiPCIrYVtjXSsiPiIpLGwucHVzaCgiPC8iK2FbY10rIj4iKTt2YXIg
cD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTt0KHAsbC5qb2luKCIiKSk7Zm9yKHZhciBo
PXA7ZC0tOylmb3IoaD1oLmZpcnN0Q2hpbGQ7aCYmMSE9PWgubm9kZVR5cGU7KWg9aC5uZXh0U2li
bGluZztmb3IoO2gmJmgudGFnTmFtZSE9PWk7KWg9aC5uZXh0U2libGluZztyZXR1cm4gaD9oLmNo
aWxkTm9kZXM6W119ZnVuY3Rpb24gbihlLHQpe3JldHVybiJTRUxFQ1QiPT09dC50YWdOYW1lJiYo
ZT0iPG9wdGlvbj48L29wdGlvbj4iK2UpLGV9dmFyIGk9e2ZvcmVpZ25PYmplY3Q6MSxkZXNjOjEs
dGl0bGU6MX07ZS5zdmdIVE1MSW50ZWdyYXRpb25Qb2ludHM9aTt2YXIgbz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciO2Uuc3ZnTmFtZXNwYWNlPW87dmFyIGEscz0idW5kZWZpbmVkIiE9dHlw
ZW9mIGRvY3VtZW50JiZkb2N1bWVudCx1PXMmJmZ1bmN0aW9uKGUpe2lmKHZvaWQgMCE9PWUuY3Jl
YXRlRWxlbWVudE5TKXt2YXIgdD1lLmNyZWF0ZUVsZW1lbnROUyhvLCJ0aXRsZSIpO3JldHVybiB0
LmlubmVySFRNTD0iPGRpdj48L2Rpdj4iLDA9PT10LmNoaWxkTm9kZXMubGVuZ3RofHwxIT09dC5j
aGlsZE5vZGVzWzBdLm5vZGVUeXBlfX0ocyksbD1zJiZmdW5jdGlvbihlKXt2YXIgdD1lLmNyZWF0
ZUVsZW1lbnQoImRpdiIpO3JldHVybiB0LmlubmVySFRNTD0iPGRpdj48L2Rpdj4iLHQuZmlyc3RD
aGlsZC5pbm5lckhUTUw9IjxzY3JpcHQ+PC9zY3JpcHQ+IiwiIj09PXQuZmlyc3RDaGlsZC5pbm5l
ckhUTUx9KHMpLGM9cyYmZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jcmVhdGVFbGVtZW50KCJkaXYiKTty
ZXR1cm4gdC5pbm5lckhUTUw9IlRlc3Q6IDxzY3JpcHQgdHlwZT0ndGV4dC94LXBsYWNlaG9sZGVy
Jz48L3NjcmlwdD5WYWx1ZSIsIlRlc3Q6Ij09PXQuY2hpbGROb2Rlc1swXS5ub2RlVmFsdWUmJiIg
VmFsdWUiPT09dC5jaGlsZE5vZGVzWzJdLm5vZGVWYWx1ZX0ocyksZj1zJiZmdW5jdGlvbihlKXt2
YXIgdCxyLG49ZS5jcmVhdGVFbGVtZW50KCJ0YWJsZSIpO3RyeXtuLmlubmVySFRNTD0iPHRib2R5
PjwvdGJvZHk+In1jYXRjaChlKXt9ZmluYWxseXtyPTA9PT1uLmNoaWxkTm9kZXMubGVuZ3RofXIm
Jih0PXtjb2xncm91cDpbInRhYmxlIl0sdGFibGU6W10sdGJvZHk6WyJ0YWJsZSJdLHRmb290Olsi
dGFibGUiXSx0aGVhZDpbInRhYmxlIl0sdHI6WyJ0YWJsZSIsInRib2R5Il19KTt2YXIgaT1lLmNy
ZWF0ZUVsZW1lbnQoInNlbGVjdCIpO3JldHVybiBpLmlubmVySFRNTD0iPG9wdGlvbj48L29wdGlv
bj4iLGkuY2hpbGROb2Rlc1swXXx8KHQ9dHx8e30sdC5zZWxlY3Q9W10pLHR9KHMpO2E9bD9mdW5j
dGlvbihlLHIsaSl7cmV0dXJuIGU9bihlLHIpLHI9aS5jbG9uZU5vZGUociwhMSksdChyLGUpLHIu
Y2hpbGROb2Rlc306ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPW4oZSx0KSx0PXIuY2xvbmVOb2Rl
KHQsITEpLHQuaW5uZXJIVE1MPWUsdC5jaGlsZE5vZGVzfTt2YXIgZDtkPWZ8fGM/ZnVuY3Rpb24o
ZSx0LG4pe3ZhciBpPVtdLG89W107InN0cmluZyI9PXR5cGVvZiBlJiYoZT1lLnJlcGxhY2UoLyhc
cyopKDxzY3JpcHQpL2csZnVuY3Rpb24oZSx0LHIpe3JldHVybiBpLnB1c2godCkscn0pLGU9ZS5y
ZXBsYWNlKC8oPFwvc2NyaXB0PikoXHMqKS9nLGZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gby5wdXNo
KHIpLHR9KSk7dmFyIHM7cz1mW3QudGFnTmFtZS50b0xvd2VyQ2FzZSgpXT9yKGUsdCk6YShlLHQs
bik7dmFyIHUsbCxjLGQscD1bXTtmb3IodT0wO3U8cy5sZW5ndGg7dSsrKWlmKGM9c1t1XSwxPT09
Yy5ub2RlVHlwZSlpZigiU0NSSVBUIj09PWMudGFnTmFtZSlwLnB1c2goYyk7ZWxzZSBmb3IoZD1j
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKSxsPTA7bDxkLmxlbmd0aDtsKyspcC5wdXNo
KGRbbF0pO3ZhciBoLG0sdixiO2Zvcih1PTA7dTxwLmxlbmd0aDt1KyspaD1wW3VdLHY9aVt1XSx2
JiZ2Lmxlbmd0aD4wJiYobT1uLmRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHYpLGgucGFyZW50Tm9k
ZS5pbnNlcnRCZWZvcmUobSxoKSksYj1vW3VdLGImJmIubGVuZ3RoPjAmJihtPW4uZG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUoYiksaC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShtLGgubmV4dFNpYmxp
bmcpKTtyZXR1cm4gc306YTt2YXIgcDt1P2UuYnVpbGRIVE1MRE9NPXA9ZnVuY3Rpb24oZSx0LHIp
e3JldHVybiBpW3QudGFnTmFtZV0/ZChlLGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHIp
OmQoZSx0LHIpfTplLmJ1aWxkSFRNTERPTT1wPWQsZS5idWlsZEhUTUxET009cH0pLGUoImRvbS1o
ZWxwZXIvY2xhc3NlcyIsWyJleHBvcnRzIl0sZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHQoZSl7dmFyIHQ9ZS5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIiO3JldHVybiIiIT09dCYm
IiAiIT09dD90LnNwbGl0KCIgIik6W119ZnVuY3Rpb24gcihlLHQpe2Zvcih2YXIgcj0wLG49ZS5s
ZW5ndGgsaT0wLG89dC5sZW5ndGgsYT1uZXcgQXJyYXkobyk7cjxuO3IrKylmb3IoaT0wO2k8bztp
KyspaWYodFtpXT09PWVbcl0pe2FbaV09cjticmVha31yZXR1cm4gYX1mdW5jdGlvbiBuKGUsbil7
Zm9yKHZhciBpPXQoZSksbz1yKGksbiksYT0hMSxzPTAsdT1uLmxlbmd0aDtzPHU7cysrKXZvaWQg
MD09PW9bc10mJihhPSEwLGkucHVzaChuW3NdKSk7YSYmZS5zZXRBdHRyaWJ1dGUoImNsYXNzIixp
Lmxlbmd0aD4wP2kuam9pbigiICIpOiIiKX1mdW5jdGlvbiBpKGUsbil7Zm9yKHZhciBpPXQoZSks
bz1yKG4saSksYT0hMSxzPVtdLHU9MCxsPWkubGVuZ3RoO3U8bDt1Kyspdm9pZCAwPT09b1t1XT9z
LnB1c2goaVt1XSk6YT0hMDthJiZlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHMubGVuZ3RoPjA/cy5q
b2luKCIgIik6IiIpfXZhciBvLGEscz0idW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50JiZkb2N1
bWVudCx1PXMmJmZ1bmN0aW9uKCl7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7
cmV0dXJuISFlLmNsYXNzTGlzdCYmKGUuY2xhc3NMaXN0LmFkZCgiYm9vIiksZS5jbGFzc0xpc3Qu
YWRkKCJib28iLCJiYXoiKSwiYm9vIGJheiI9PT1lLmNsYXNzTmFtZSl9KCk7dT8oZS5hZGRDbGFz
c2VzPW89ZnVuY3Rpb24oZSx0KXtlLmNsYXNzTGlzdD8xPT09dC5sZW5ndGg/ZS5jbGFzc0xpc3Qu
YWRkKHRbMF0pOjI9PT10Lmxlbmd0aD9lLmNsYXNzTGlzdC5hZGQodFswXSx0WzFdKTplLmNsYXNz
TGlzdC5hZGQuYXBwbHkoZS5jbGFzc0xpc3QsdCk6bihlLHQpfSxlLnJlbW92ZUNsYXNzZXM9YT1m
dW5jdGlvbihlLHQpe2UuY2xhc3NMaXN0PzE9PT10Lmxlbmd0aD9lLmNsYXNzTGlzdC5yZW1vdmUo
dFswXSk6Mj09PXQubGVuZ3RoP2UuY2xhc3NMaXN0LnJlbW92ZSh0WzBdLHRbMV0pOmUuY2xhc3NM
aXN0LnJlbW92ZS5hcHBseShlLmNsYXNzTGlzdCx0KTppKGUsdCl9KTooZS5hZGRDbGFzc2VzPW89
bixlLnJlbW92ZUNsYXNzZXM9YT1pKSxlLmFkZENsYXNzZXM9byxlLnJlbW92ZUNsYXNzZXM9YX0p
LGUoImRvbS1oZWxwZXIvcHJvcCIsWyJleHBvcnRzIl0sZnVuY3Rpb24oZSl7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIHQoZSl7cmV0dXJuIG51bGw9PT1lfHx2b2lkIDA9PT1lfWZ1bmN0aW9uIHIoZSx0
KXt2YXIgcixpO2lmKHQgaW4gZSlpPXQscj0icHJvcCI7ZWxzZXt2YXIgbz10LnRvTG93ZXJDYXNl
KCk7byBpbiBlPyhyPSJwcm9wIixpPW8pOihyPSJhdHRyIixpPXQpfXJldHVybiJwcm9wIiE9PXJ8
fCJzdHlsZSIhPT1pLnRvTG93ZXJDYXNlKCkmJiFuKGUudGFnTmFtZSxpKXx8KHI9ImF0dHIiKSx7
bm9ybWFsaXplZDppLHR5cGU6cn19ZnVuY3Rpb24gbihlLHQpe3ZhciByPWlbZS50b1VwcGVyQ2Fz
ZSgpXTtyZXR1cm4gciYmclt0LnRvTG93ZXJDYXNlKCldfHwhMX1lLmlzQXR0clJlbW92YWxWYWx1
ZT10LGUubm9ybWFsaXplUHJvcGVydHk9cjt2YXIgaT17QlVUVE9OOnt0eXBlOiEwLGZvcm06ITB9
LElOUFVUOntsaXN0OiEwLHR5cGU6ITAsZm9ybTohMCxhdXRvY29ycmVjdDohMH0sU0VMRUNUOntm
b3JtOiEwfSxPUFRJT046e2Zvcm06ITB9LFRFWFRBUkVBOntmb3JtOiEwfSxMQUJFTDp7Zm9ybToh
MH0sRklFTERTRVQ6e2Zvcm06ITB9LExFR0VORDp7Zm9ybTohMH0sT0JKRUNUOntmb3JtOiEwfX19
KSxlKCJlbWJlci1hcHBsaWNhdGlvbi9pbmRleCIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvY29y
ZSIsImVtYmVyLW1ldGFsL2ZlYXR1cmVzIiwiZW1iZXItcnVudGltZS9zeXN0ZW0vbGF6eV9sb2Fk
IiwiZW1iZXItYXBwbGljYXRpb24vc3lzdGVtL3Jlc29sdmVyIiwiZW1iZXItYXBwbGljYXRpb24v
c3lzdGVtL2FwcGxpY2F0aW9uIiwiZW1iZXItYXBwbGljYXRpb24vc3lzdGVtL2FwcGxpY2F0aW9u
LWluc3RhbmNlIiwiZW1iZXItYXBwbGljYXRpb24vc3lzdGVtL2VuZ2luZSIsImVtYmVyLWFwcGxp
Y2F0aW9uL3N5c3RlbS9lbmdpbmUtaW5zdGFuY2UiXSxmdW5jdGlvbihlLHQscixuLGksbyxhLHMs
dSl7InVzZSBzdHJpY3QiO3QuZGVmYXVsdC5BcHBsaWNhdGlvbj1vLmRlZmF1bHQsdC5kZWZhdWx0
LlJlc29sdmVyPWkuUmVzb2x2ZXIsdC5kZWZhdWx0LkRlZmF1bHRSZXNvbHZlcj1pLmRlZmF1bHQs
bi5ydW5Mb2FkSG9va3MoIkVtYmVyLkFwcGxpY2F0aW9uIixvLmRlZmF1bHQpfSksZSgiZW1iZXIt
YXBwbGljYXRpb24vc3lzdGVtL2FwcGxpY2F0aW9uLWluc3RhbmNlIixbImV4cG9ydHMiLCJlbWJl
ci1tZXRhbC9kZWJ1ZyIsImVtYmVyLW1ldGFsL3Byb3BlcnR5X2dldCIsImVtYmVyLW1ldGFsL3By
b3BlcnR5X3NldCIsImVtYmVyLW1ldGFsL3N5bWJvbCIsImVtYmVyLW1ldGFsL3J1bl9sb29wIiwi
ZW1iZXItbWV0YWwvY29tcHV0ZWQiLCJlbWJlci1ydW50aW1lL21peGlucy9yZWdpc3RyeV9wcm94
eSIsImVtYmVyLW1ldGFsL2Fzc2lnbiIsImVtYmVyLW1ldGFsL2Vudmlyb25tZW50IiwiZW1iZXIt
cnVudGltZS9leHQvcnN2cCIsImVtYmVyLXZpZXdzL3N5c3RlbS9qcXVlcnkiLCJlbWJlci1hcHBs
aWNhdGlvbi9zeXN0ZW0vZW5naW5lLWluc3RhbmNlIl0sZnVuY3Rpb24oZSx0LHIsbixpLG8sYSxz
LHUsbCxjLGYsZCl7InVzZSBzdHJpY3QiO3ZhciBwPWkuZGVmYXVsdCgiSU5URVJOQUxfQk9PVF9P
UFRJT05TIik7ZS5JTlRFUk5BTF9CT09UX09QVElPTlM9cDt2YXIgaD12b2lkIDAsbT1kLmRlZmF1
bHQuZXh0ZW5kKHthcHBsaWNhdGlvbjpudWxsLGN1c3RvbUV2ZW50czpudWxsLHJvb3RFbGVtZW50
Om51bGwsaW5pdDpmdW5jdGlvbigpe3RoaXMuX3N1cGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0
aGlzLnJlZ2lzdGVyKCItYXBwbGljYXRpb24taW5zdGFuY2U6bWFpbiIsdGhpcyx7aW5zdGFudGlh
dGU6ITF9KSx0aGlzLl9ib290ZWQ9ITF9LGJvb3Q6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9YXJn
dW1lbnRzLmxlbmd0aDw9MHx8dm9pZCAwPT09YXJndW1lbnRzWzBdP3t9OmFyZ3VtZW50c1swXTty
ZXR1cm4gdGhpcy5fYm9vdFByb21pc2U/dGhpcy5fYm9vdFByb21pc2U6KHRoaXMuX2Jvb3RQcm9t
aXNlPW5ldyBjLmRlZmF1bHQuUHJvbWlzZShmdW5jdGlvbihyKXtyZXR1cm4gcihlLl9ib290U3lu
Yyh0KSl9KSx0aGlzLl9ib290UHJvbWlzZSl9LF9ib290U3luYzpmdW5jdGlvbihlKXtpZih0aGlz
Ll9ib290ZWQpcmV0dXJuIHRoaXM7ZT1uZXcgaChlKTt2YXIgdD10aGlzLl9fcmVnaXN0cnlfXztp
Zih0LnJlZ2lzdGVyKCItZW52aXJvbm1lbnQ6bWFpbiIsZS50b0Vudmlyb25tZW50KCkse2luc3Rh
bnRpYXRlOiExfSksdC5pbmplY3Rpb24oInZpZXciLCJfZW52aXJvbm1lbnQiLCItZW52aXJvbm1l
bnQ6bWFpbiIpLHQuaW5qZWN0aW9uKCJyb3V0ZSIsIl9lbnZpcm9ubWVudCIsIi1lbnZpcm9ubWVu
dDptYWluIiksdC5yZWdpc3Rlcigic2VydmljZTotZG9jdW1lbnQiLGUuZG9jdW1lbnQseworaW5z
dGFudGlhdGU6ITF9KSxlLmlzSW50ZXJhY3RpdmU/KHQuaW5qZWN0aW9uKCJ2aWV3IiwicmVuZGVy
ZXIiLCJyZW5kZXJlcjotZG9tIiksdC5pbmplY3Rpb24oImNvbXBvbmVudCIsInJlbmRlcmVyIiwi
cmVuZGVyZXI6LWRvbSIpKToodC5pbmplY3Rpb24oInZpZXciLCJyZW5kZXJlciIsInJlbmRlcmVy
Oi1pbmVydCIpLHQuaW5qZWN0aW9uKCJjb21wb25lbnQiLCJyZW5kZXJlciIsInJlbmRlcmVyOi1p
bmVydCIpKSxlLnJvb3RFbGVtZW50P3RoaXMucm9vdEVsZW1lbnQ9ZS5yb290RWxlbWVudDp0aGlz
LnJvb3RFbGVtZW50PXRoaXMuYXBwbGljYXRpb24ucm9vdEVsZW1lbnQsZS5sb2NhdGlvbil7dmFy
IGk9ci5nZXQodGhpcywicm91dGVyIik7bi5zZXQoaSwibG9jYXRpb24iLGUubG9jYXRpb24pfXJl
dHVybiB0aGlzLmFwcGxpY2F0aW9uLnJ1bkluc3RhbmNlSW5pdGlhbGl6ZXJzKHRoaXMpLGUuaXNJ
bnRlcmFjdGl2ZSYmdGhpcy5zZXR1cEV2ZW50RGlzcGF0Y2hlcigpLHRoaXMuX2Jvb3RlZD0hMCx0
aGlzfSxyb3V0ZXI6YS5jb21wdXRlZChmdW5jdGlvbigpe3JldHVybiB0aGlzLmxvb2t1cCgicm91
dGVyOm1haW4iKX0pLnJlYWRPbmx5KCksZGlkQ3JlYXRlUm9vdFZpZXc6ZnVuY3Rpb24oZSl7ZS5h
cHBlbmRUbyh0aGlzLnJvb3RFbGVtZW50KX0sc3RhcnRSb3V0aW5nOmZ1bmN0aW9uKCl7dmFyIGU9
ci5nZXQodGhpcywicm91dGVyIik7ZS5zdGFydFJvdXRpbmcoKSx0aGlzLl9kaWRTZXR1cFJvdXRl
cj0hMH0sc2V0dXBSb3V0ZXI6ZnVuY3Rpb24oKXtpZighdGhpcy5fZGlkU2V0dXBSb3V0ZXIpe3Ro
aXMuX2RpZFNldHVwUm91dGVyPSEwO3ZhciBlPXIuZ2V0KHRoaXMsInJvdXRlciIpO2Uuc2V0dXBS
b3V0ZXIoKX19LGhhbmRsZVVSTDpmdW5jdGlvbihlKXt2YXIgdD1yLmdldCh0aGlzLCJyb3V0ZXIi
KTtyZXR1cm4gdGhpcy5zZXR1cFJvdXRlcigpLHQuaGFuZGxlVVJMKGUpfSxzZXR1cEV2ZW50RGlz
cGF0Y2hlcjpmdW5jdGlvbigpe3ZhciBlPXRoaXMubG9va3VwKCJldmVudF9kaXNwYXRjaGVyOm1h
aW4iKSx0PXIuZ2V0KHRoaXMuYXBwbGljYXRpb24sImN1c3RvbUV2ZW50cyIpLG49ci5nZXQodGhp
cywiY3VzdG9tRXZlbnRzIiksaT11LmRlZmF1bHQoe30sdCxuKTtyZXR1cm4gZS5zZXR1cChpLHRo
aXMucm9vdEVsZW1lbnQpLGV9LGdldFVSTDpmdW5jdGlvbigpe3ZhciBlPXIuZ2V0KHRoaXMsInJv
dXRlciIpO3JldHVybiByLmdldChlLCJ1cmwiKX0sdmlzaXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhp
czt0aGlzLnNldHVwUm91dGVyKCk7dmFyIG49ci5nZXQodGhpcywicm91dGVyIiksaT1mdW5jdGlv
bigpe3JldHVybiBuZXcgYy5kZWZhdWx0LlByb21pc2UoZnVuY3Rpb24oZSl7by5kZWZhdWx0Lm5l
eHQobnVsbCxlLHQpfSl9LGE9ZnVuY3Rpb24oZSl7aWYoZS5lcnJvcil0aHJvdyBlLmVycm9yO2lm
KCJUcmFuc2l0aW9uQWJvcnRlZCI9PT1lLm5hbWUmJm4ucm91dGVyLmFjdGl2ZVRyYW5zaXRpb24p
cmV0dXJuIG4ucm91dGVyLmFjdGl2ZVRyYW5zaXRpb24udGhlbihpLGEpO3Rocm93IlRyYW5zaXRp
b25BYm9ydGVkIj09PWUubmFtZT9uZXcgRXJyb3IoZS5tZXNzYWdlKTplfSxzPXIuZ2V0KG4sImxv
Y2F0aW9uIik7cmV0dXJuIHMuc2V0VVJMKGUpLG4uaGFuZGxlVVJMKHMuZ2V0VVJMKCkpLnRoZW4o
aSxhKX19KTtoPWZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aDw9MHx8dm9pZCAwPT09
YXJndW1lbnRzWzBdP3t9OmFyZ3VtZW50c1swXTt0aGlzLmpRdWVyeT1mLmRlZmF1bHQsdGhpcy5p
c0ludGVyYWN0aXZlPWwuZGVmYXVsdC5oYXNET00sdm9pZCAwIT09ZS5pc0Jyb3dzZXI/dGhpcy5p
c0Jyb3dzZXI9ISFlLmlzQnJvd3Nlcjp0aGlzLmlzQnJvd3Nlcj1sLmRlZmF1bHQuaGFzRE9NLHRo
aXMuaXNCcm93c2VyfHwodGhpcy5qUXVlcnk9bnVsbCx0aGlzLmlzSW50ZXJhY3RpdmU9ITEsdGhp
cy5sb2NhdGlvbj0ibm9uZSIpLHZvaWQgMCE9PWUuc2hvdWxkUmVuZGVyP3RoaXMuc2hvdWxkUmVu
ZGVyPSEhZS5zaG91bGRSZW5kZXI6dGhpcy5zaG91bGRSZW5kZXI9ITAsdGhpcy5zaG91bGRSZW5k
ZXJ8fCh0aGlzLmpRdWVyeT1udWxsLHRoaXMuaXNJbnRlcmFjdGl2ZT0hMSksZS5kb2N1bWVudD90
aGlzLmRvY3VtZW50PWUuZG9jdW1lbnQ6dGhpcy5kb2N1bWVudD0idW5kZWZpbmVkIiE9dHlwZW9m
IGRvY3VtZW50P2RvY3VtZW50Om51bGwsZS5yb290RWxlbWVudCYmKHRoaXMucm9vdEVsZW1lbnQ9
ZS5yb290RWxlbWVudCksdm9pZCAwIT09ZS5sb2NhdGlvbiYmKHRoaXMubG9jYXRpb249ZS5sb2Nh
dGlvbiksdm9pZCAwIT09ZS5qUXVlcnkmJih0aGlzLmpRdWVyeT1lLmpRdWVyeSksdm9pZCAwIT09
ZS5pc0ludGVyYWN0aXZlJiYodGhpcy5pc0ludGVyYWN0aXZlPSEhZS5pc0ludGVyYWN0aXZlKX0s
aC5wcm90b3R5cGUudG9FbnZpcm9ubWVudD1mdW5jdGlvbigpe3ZhciBlPXUuZGVmYXVsdCh7fSxs
LmRlZmF1bHQpO3JldHVybiBlLmhhc0RPTT10aGlzLmlzQnJvd3NlcixlLm9wdGlvbnM9dGhpcyxl
fSxPYmplY3QuZGVmaW5lUHJvcGVydHkobS5wcm90b3R5cGUsImNvbnRhaW5lciIse2NvbmZpZ3Vy
YWJsZTohMCxlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJue2xv
b2t1cDpmdW5jdGlvbigpe3JldHVybiBlLmxvb2t1cC5hcHBseShlLGFyZ3VtZW50cyl9fX19KSxP
YmplY3QuZGVmaW5lUHJvcGVydHkobS5wcm90b3R5cGUsInJlZ2lzdHJ5Iix7Y29uZmlndXJhYmxl
OiEwLGVudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHMuYnVpbGRGYWtlUmVnaXN0
cnlXaXRoRGVwcmVjYXRpb25zKHRoaXMsIkFwcGxpY2F0aW9uSW5zdGFuY2UiKX19KSxlLmRlZmF1
bHQ9bX0pLGUoImVtYmVyLWFwcGxpY2F0aW9uL3N5c3RlbS9hcHBsaWNhdGlvbiIsWyJleHBvcnRz
IiwiZW1iZXItbWV0YWwiLCJlbWJlci1tZXRhbC9kZWJ1ZyIsImVtYmVyLW1ldGFsL3Byb3BlcnR5
X2dldCIsImVtYmVyLXJ1bnRpbWUvc3lzdGVtL2xhenlfbG9hZCIsImVtYmVyLW1ldGFsL3J1bl9s
b29wIiwiZW1iZXItcnVudGltZS9jb250cm9sbGVycy9jb250cm9sbGVyIiwiZW1iZXItaHRtbGJh
cnMvc3lzdGVtL2RvbS1oZWxwZXIiLCJlbWJlci1tZXRhbC12aWV3cyIsImVtYmVyLWh0bWxiYXJz
L3RlbXBsYXRlcy90b3AtbGV2ZWwtdmlldyIsImVtYmVyLXJvdXRpbmctdmlld3Mvdmlld3Mvb3V0
bGV0IiwiZW1iZXItdmlld3Mvdmlld3MvdmlldyIsImVtYmVyLXZpZXdzL3N5c3RlbS9ldmVudF9k
aXNwYXRjaGVyIiwiZW1iZXItdmlld3Mvc3lzdGVtL2pxdWVyeSIsImVtYmVyLXJvdXRpbmcvc3lz
dGVtL3JvdXRlIiwiZW1iZXItcm91dGluZy9zeXN0ZW0vcm91dGVyIiwiZW1iZXItcm91dGluZy9s
b2NhdGlvbi9oYXNoX2xvY2F0aW9uIiwiZW1iZXItcm91dGluZy9sb2NhdGlvbi9oaXN0b3J5X2xv
Y2F0aW9uIiwiZW1iZXItcm91dGluZy9sb2NhdGlvbi9hdXRvX2xvY2F0aW9uIiwiZW1iZXItcm91
dGluZy9sb2NhdGlvbi9ub25lX2xvY2F0aW9uIiwiZW1iZXItcm91dGluZy9zeXN0ZW0vY2FjaGUi
LCJlbWJlci1hcHBsaWNhdGlvbi9zeXN0ZW0vYXBwbGljYXRpb24taW5zdGFuY2UiLCJlbWJlci12
aWV3cy92aWV3cy90ZXh0X2ZpZWxkIiwiZW1iZXItdmlld3Mvdmlld3MvdGV4dF9hcmVhIiwiZW1i
ZXItdmlld3Mvdmlld3MvY2hlY2tib3giLCJlbWJlci1yb3V0aW5nLXZpZXdzL2NvbXBvbmVudHMv
bGluay10byIsImVtYmVyLXJvdXRpbmcvc2VydmljZXMvcm91dGluZyIsImVtYmVyLWV4dGVuc2lv
bi1zdXBwb3J0L2NvbnRhaW5lcl9kZWJ1Z19hZGFwdGVyIiwiZW1iZXItcnVudGltZS9taXhpbnMv
cmVnaXN0cnlfcHJveHkiLCJjb250YWluZXIvcmVnaXN0cnkiLCJlbWJlci1tZXRhbC9lbnZpcm9u
bWVudCIsImVtYmVyLXJ1bnRpbWUvZXh0L3JzdnAiLCJlbWJlci1hcHBsaWNhdGlvbi9zeXN0ZW0v
ZW5naW5lIiwicmVxdWlyZSJdLGZ1bmN0aW9uKGUsdCxyLG4saSxvLGEscyx1LGwsYyxmLGQscCxo
LG0sdixiLGcseSxfLHcseCxrLEMsRSxPLFQsTixTLEEsUCxqLFIpeyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiBMKGUsdCl7cmV0dXJuIGUucmF3PXQsZX1mdW5jdGlvbiBEKCl7VT0hMSxXPSExfWZ1bmN0
aW9uIE0oZSl7ZS5vcHRpb25zRm9yVHlwZSgiY29tcG9uZW50Iix7c2luZ2xldG9uOiExfSksZS5v
cHRpb25zRm9yVHlwZSgidmlldyIse3NpbmdsZXRvbjohMX0pLGUuaW5qZWN0aW9uKCJyZW5kZXJl
ciIsImRvbSIsInNlcnZpY2U6LWRvbS1oZWxwZXIiKSxlLnJlZ2lzdGVyKCJjb250cm9sbGVyOmJh
c2ljIixhLmRlZmF1bHQse2luc3RhbnRpYXRlOiExfSksZS5pbmplY3Rpb24oInNlcnZpY2U6LWRv
bS1oZWxwZXIiLCJkb2N1bWVudCIsInNlcnZpY2U6LWRvY3VtZW50IiksZS5yZWdpc3RlcigiLXZp
ZXctcmVnaXN0cnk6bWFpbiIse2NyZWF0ZTpmdW5jdGlvbigpe3JldHVybnt9fX0pLGUuaW5qZWN0
aW9uKCJ2aWV3IiwiX3ZpZXdSZWdpc3RyeSIsIi12aWV3LXJlZ2lzdHJ5Om1haW4iKSxlLmluamVj
dGlvbigicm91dGUiLCJfdG9wTGV2ZWxWaWV3VGVtcGxhdGUiLCJ0ZW1wbGF0ZTotb3V0bGV0Iiks
ZS5yZWdpc3Rlcigicm91dGU6YmFzaWMiLGguZGVmYXVsdCksZS5yZWdpc3RlcigiZXZlbnRfZGlz
cGF0Y2hlcjptYWluIixkLmRlZmF1bHQpLGUuaW5qZWN0aW9uKCJyb3V0ZXI6bWFpbiIsIm5hbWVz
cGFjZSIsImFwcGxpY2F0aW9uOm1haW4iKSxlLmluamVjdGlvbigidmlldzotb3V0bGV0IiwibmFt
ZXNwYWNlIiwiYXBwbGljYXRpb246bWFpbiIpLGUucmVnaXN0ZXIoImxvY2F0aW9uOmF1dG8iLGcu
ZGVmYXVsdCksZS5yZWdpc3RlcigibG9jYXRpb246aGFzaCIsdi5kZWZhdWx0KSxlLnJlZ2lzdGVy
KCJsb2NhdGlvbjpoaXN0b3J5IixiLmRlZmF1bHQpLGUucmVnaXN0ZXIoImxvY2F0aW9uOm5vbmUi
LHkuZGVmYXVsdCksZS5pbmplY3Rpb24oImNvbnRyb2xsZXIiLCJ0YXJnZXQiLCJyb3V0ZXI6bWFp
biIpLGUuaW5qZWN0aW9uKCJjb250cm9sbGVyIiwibmFtZXNwYWNlIiwiYXBwbGljYXRpb246bWFp
biIpLGUucmVnaXN0ZXIoUy5wcml2YXRpemUocSksXy5kZWZhdWx0KSxlLmluamVjdGlvbigicm91
dGVyIiwiX2J1Y2tldENhY2hlIixTLnByaXZhdGl6ZShxKSksZS5pbmplY3Rpb24oInJvdXRlIiwi
X2J1Y2tldENhY2hlIixTLnByaXZhdGl6ZShxKSksZS5pbmplY3Rpb24oImNvbnRyb2xsZXIiLCJf
YnVja2V0Q2FjaGUiLFMucHJpdmF0aXplKHEpKSxlLmluamVjdGlvbigicm91dGUiLCJyb3V0ZXIi
LCJyb3V0ZXI6bWFpbiIpLGUucmVnaXN0ZXIoImNvbXBvbmVudDotdGV4dC1maWVsZCIseC5kZWZh
dWx0KSxlLnJlZ2lzdGVyKCJjb21wb25lbnQ6LXRleHQtYXJlYSIsay5kZWZhdWx0KSxlLnJlZ2lz
dGVyKCJjb21wb25lbnQ6LWNoZWNrYm94IixDLmRlZmF1bHQpLGUucmVnaXN0ZXIoImNvbXBvbmVu
dDpsaW5rLXRvIixFLmRlZmF1bHQpLGUucmVnaXN0ZXIoInNlcnZpY2U6LXJvdXRpbmciLE8uZGVm
YXVsdCksZS5pbmplY3Rpb24oInNlcnZpY2U6LXJvdXRpbmciLCJyb3V0ZXIiLCJyb3V0ZXI6bWFp
biIpLGUucmVnaXN0ZXIoInJlc29sdmVyLWZvci1kZWJ1Z2dpbmc6bWFpbiIsZS5yZXNvbHZlcix7
aW5zdGFudGlhdGU6ITF9KSxlLmluamVjdGlvbigiY29udGFpbmVyLWRlYnVnLWFkYXB0ZXI6bWFp
biIsInJlc29sdmVyIiwicmVzb2x2ZXItZm9yLWRlYnVnZ2luZzptYWluIiksZS5pbmplY3Rpb24o
ImRhdGEtYWRhcHRlcjptYWluIiwiY29udGFpbmVyRGVidWdBZGFwdGVyIiwiY29udGFpbmVyLWRl
YnVnLWFkYXB0ZXI6bWFpbiIpLGUucmVnaXN0ZXIoImNvbnRhaW5lci1kZWJ1Zy1hZGFwdGVyOm1h
aW4iLFQuZGVmYXVsdCl9ZnVuY3Rpb24gSShlKXtNKGUpO3ZhciB0PVIuZGVmYXVsdCgiZW1iZXIt
Z2xpbW1lci9lbnZpcm9ubWVudCIpLmRlZmF1bHQ7ZS5yZWdpc3Rlcigic2VydmljZTotZ2xpbW1l
ci1lbnZpcm9ubWVudCIsdCksZS5pbmplY3Rpb24oInNlcnZpY2U6LWdsaW1tZXItZW52aXJvbm1l
bnQiLCJkb20iLCJzZXJ2aWNlOi1kb20taGVscGVyIiksZS5pbmplY3Rpb24oInJlbmRlcmVyIiwi
ZW52Iiwic2VydmljZTotZ2xpbW1lci1lbnZpcm9ubWVudCIpO3ZhciByPVIuZGVmYXVsdCgiZW1i
ZXItZ2xpbW1lci9lbWJlci1yb3V0aW5nLXZpZXciKS5PdXRsZXRWaWV3O2UucmVnaXN0ZXIoInZp
ZXc6LW91dGxldCIscik7dmFyIG49Ui5kZWZhdWx0KCJlbWJlci1nbGltbWVyL2VtYmVyLW1ldGFs
LXZpZXdzIiksaT1uLkludGVyYWN0aXZlUmVuZGVyZXIsbz1uLkluZXJ0UmVuZGVyZXI7ZS5yZWdp
c3RlcigicmVuZGVyZXI6LWRvbSIsaSksZS5yZWdpc3RlcigicmVuZGVyZXI6LWluZXJ0IixvKTt2
YXIgYT1SLmRlZmF1bHQoImVtYmVyLWdsaW1tZXIvZG9tIikuZGVmYXVsdDtlLnJlZ2lzdGVyKCJz
ZXJ2aWNlOi1kb20taGVscGVyIix7Y3JlYXRlOmZ1bmN0aW9uKGUpe3ZhciB0PWUuZG9jdW1lbnQ7
cmV0dXJuIG5ldyBhKHQpfX0pO3ZhciBzPVIuZGVmYXVsdCgiZW1iZXItZ2xpbW1lci90ZW1wbGF0
ZXMvb3V0bGV0IikuZGVmYXVsdCx1PVIuZGVmYXVsdCgiZW1iZXItZ2xpbW1lci90ZW1wbGF0ZXMv
Y29tcG9uZW50IikuZGVmYXVsdDtlLnJlZ2lzdGVyKFMucHJpdmF0aXplKHopLHUpLGUucmVnaXN0
ZXIoInRlbXBsYXRlOi1vdXRsZXQiLHMpLGUuaW5qZWN0aW9uKCJ2aWV3Oi1vdXRsZXQiLCJ0ZW1w
bGF0ZSIsInRlbXBsYXRlOi1vdXRsZXQiKSxlLmluamVjdGlvbigidGVtcGxhdGUiLCJlbnYiLCJz
ZXJ2aWNlOi1nbGltbWVyLWVudmlyb25tZW50IiksZS5vcHRpb25zRm9yVHlwZSgiaGVscGVyIix7
aW5zdGFudGlhdGU6ITF9KX1mdW5jdGlvbiBGKGUpe00oZSksZS5vcHRpb25zRm9yVHlwZSgidGVt
cGxhdGUiLHtpbnN0YW50aWF0ZTohMX0pLGUucmVnaXN0ZXIoInZpZXc6LW91dGxldCIsYy5PdXRs
ZXRWaWV3KTt2YXIgdD11LkludGVyYWN0aXZlUmVuZGVyZXIscj11LkluZXJ0UmVuZGVyZXI7ZS5y
ZWdpc3RlcigicmVuZGVyZXI6LWRvbSIsdCksZS5yZWdpc3RlcigicmVuZGVyZXI6LWluZXJ0Iixy
KSxlLnJlZ2lzdGVyKCJzZXJ2aWNlOi1kb20taGVscGVyIix7Y3JlYXRlOmZ1bmN0aW9uKGUpe3Zh
ciB0PWUuZG9jdW1lbnQ7cmV0dXJuIG5ldyBzLmRlZmF1bHQodCl9fSksZS5yZWdpc3RlcigidGVt
cGxhdGU6LW91dGxldCIsbC5kZWZhdWx0KSxlLnJlZ2lzdGVyKCJ2aWV3OnRvcGxldmVsIixmLmRl
ZmF1bHQuZXh0ZW5kKCkpfWZ1bmN0aW9uIEgoKXtCfHwoQj0hMCxBLmRlZmF1bHQuaGFzRE9NJiZ0
LmRlZmF1bHQubGlicmFyaWVzLnJlZ2lzdGVyQ29yZUxpYnJhcnkoImpRdWVyeSIscC5kZWZhdWx0
KCkuanF1ZXJ5KSl9ZnVuY3Rpb24gVigpe2lmKHQuZGVmYXVsdC5MT0dfVkVSU0lPTil7dC5kZWZh
dWx0LkxPR19WRVJTSU9OPSExO2Zvcih2YXIgZT10LmRlZmF1bHQubGlicmFyaWVzLl9yZWdpc3Ry
eSxyPWUubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBuLmdldChlLCJuYW1lLmxlbmd0aCIpfSksaT1N
YXRoLm1heC5hcHBseSh0aGlzLHIpLG89MCxhPWUubGVuZ3RoO288YTtvKyspe3ZhciBzPWVbb107
bmV3IEFycmF5KGktcy5uYW1lLmxlbmd0aCsxKS5qb2luKCIgIil9fX1lLl9yZXNldExlZ2FjeUFk
ZG9uV2FybmluZ3M9RDt2YXIgcT1MKFsiLWJ1Y2tldC1jYWNoZTptYWluIl0sWyItYnVja2V0LWNh
Y2hlOm1haW4iXSksej1MKFsidGVtcGxhdGU6Y29tcG9uZW50cy8tZGVmYXVsdCJdLFsidGVtcGxh
dGU6Y29tcG9uZW50cy8tZGVmYXVsdCJdKSxCPSExLFU9ITEsVz0hMSwkPWouZGVmYXVsdC5leHRl
bmQoe19zdXBwcmVzc0RlZmVycmVkRGVwcmVjYXRpb246ITAscm9vdEVsZW1lbnQ6ImJvZHkiLGV2
ZW50RGlzcGF0Y2hlcjpudWxsLGN1c3RvbUV2ZW50czpudWxsLGF1dG9ib290OiEwLF9nbG9iYWxz
TW9kZTohMCxpbml0OmZ1bmN0aW9uKGUpe3RoaXMuX3N1cGVyLmFwcGx5KHRoaXMsYXJndW1lbnRz
KSx0aGlzLiR8fCh0aGlzLiQ9cC5kZWZhdWx0KSxIKCksVigpLHRoaXMuX3JlYWRpbmVzc0RlZmVy
cmFscz0xLHRoaXMuX2Jvb3RlZD0hMSx0aGlzLmF1dG9ib290PXRoaXMuX2dsb2JhbHNNb2RlPSEh
dGhpcy5hdXRvYm9vdCx0aGlzLl9nbG9iYWxzTW9kZSYmdGhpcy5fcHJlcGFyZUZvckdsb2JhbHNN
b2RlKCksdGhpcy5hdXRvYm9vdCYmdGhpcy53YWl0Rm9yRE9NUmVhZHkoKX0sYnVpbGRJbnN0YW5j
ZTpmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg8PTB8fHZvaWQgMD09PWFyZ3VtZW50
c1swXT97fTphcmd1bWVudHNbMF07cmV0dXJuIGUuYmFzZT10aGlzLGUuYXBwbGljYXRpb249dGhp
cyx3LmRlZmF1bHQuY3JlYXRlKGUpfSxfcHJlcGFyZUZvckdsb2JhbHNNb2RlOmZ1bmN0aW9uKCl7
dGhpcy5Sb3V0ZXI9KHRoaXMuUm91dGVyfHxtLmRlZmF1bHQpLmV4dGVuZCgpLHRoaXMuX2J1aWxk
RGVwcmVjYXRlZEluc3RhbmNlKCl9LF9idWlsZERlcHJlY2F0ZWRJbnN0YW5jZTpmdW5jdGlvbigp
e3ZhciBlPXRoaXMuYnVpbGRJbnN0YW5jZSgpO3RoaXMuX19kZXByZWNhdGVkSW5zdGFuY2VfXz1l
LHRoaXMuX19jb250YWluZXJfXz1lLl9fY29udGFpbmVyX18sZi5kZWZhdWx0LnZpZXdzPWUubG9v
a3VwKCItdmlldy1yZWdpc3RyeTptYWluIil9LHdhaXRGb3JET01SZWFkeTpmdW5jdGlvbigpeyF0
aGlzLiR8fHRoaXMuJC5pc1JlYWR5P28uZGVmYXVsdC5zY2hlZHVsZSgiYWN0aW9ucyIsdGhpcywi
ZG9tUmVhZHkiKTp0aGlzLiQoKS5yZWFkeShvLmRlZmF1bHQuYmluZCh0aGlzLCJkb21SZWFkeSIp
KX0sZG9tUmVhZHk6ZnVuY3Rpb24oKXt0aGlzLmlzRGVzdHJveWVkfHx0aGlzLl9ib290U3luYygp
fSxkZWZlclJlYWRpbmVzczpmdW5jdGlvbigpe3RoaXMuX3JlYWRpbmVzc0RlZmVycmFscysrfSxh
ZHZhbmNlUmVhZGluZXNzOmZ1bmN0aW9uKCl7dGhpcy5fcmVhZGluZXNzRGVmZXJyYWxzLS0sMD09
PXRoaXMuX3JlYWRpbmVzc0RlZmVycmFscyYmby5kZWZhdWx0Lm9uY2UodGhpcyx0aGlzLmRpZEJl
Y29tZVJlYWR5KX0sYm9vdDpmdW5jdGlvbigpe2lmKHRoaXMuX2Jvb3RQcm9taXNlKXJldHVybiB0
aGlzLl9ib290UHJvbWlzZTt0cnl7dGhpcy5fYm9vdFN5bmMoKX1jYXRjaChlKXt9cmV0dXJuIHRo
aXMuX2Jvb3RQcm9taXNlfSxfYm9vdFN5bmM6ZnVuY3Rpb24oKXtpZighdGhpcy5fYm9vdGVkKXt0
LmRlZmF1bHQuRU5WLl9FTkFCTEVfTEVHQUNZX1ZJRVdfU1VQUE9SVCYmIVUmJihVPSEwKSx0LmRl
ZmF1bHQuRU5WLl9FTkFCTEVfTEVHQUNZX0NPTlRST0xMRVJfU1VQUE9SVCYmIVcmJihXPSEwKTt2
YXIgZT10aGlzLl9ib290UmVzb2x2ZXI9bmV3IFAuZGVmYXVsdC5kZWZlcjt0aGlzLl9ib290UHJv
bWlzZT1lLnByb21pc2U7dHJ5e3RoaXMucnVuSW5pdGlhbGl6ZXJzKCksaS5ydW5Mb2FkSG9va3Mo
ImFwcGxpY2F0aW9uIix0aGlzKSx0aGlzLmFkdmFuY2VSZWFkaW5lc3MoKX1jYXRjaCh0KXt0aHJv
dyBlLnJlamVjdCh0KSx0fX19LHJlc2V0OmZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe28uZGVmYXVs
dCh0LCJkZXN0cm95IiksdGhpcy5fYnVpbGREZXByZWNhdGVkSW5zdGFuY2UoKSxvLmRlZmF1bHQu
c2NoZWR1bGUoImFjdGlvbnMiLHRoaXMsIl9ib290U3luYyIpfXZhciB0PXRoaXMuX19kZXByZWNh
dGVkSW5zdGFuY2VfXzt0aGlzLl9yZWFkaW5lc3NEZWZlcnJhbHM9MSx0aGlzLl9ib290UHJvbWlz
ZT1udWxsLHRoaXMuX2Jvb3RSZXNvbHZlcj1udWxsLHRoaXMuX2Jvb3RlZD0hMSxvLmRlZmF1bHQu
am9pbih0aGlzLGUpfSxkaWRCZWNvbWVSZWFkeTpmdW5jdGlvbigpe3RyeXtpZih0LmRlZmF1bHQu
dGVzdGluZ3x8KHQuZGVmYXVsdC5OYW1lc3BhY2UucHJvY2Vzc0FsbCgpLHQuZGVmYXVsdC5CT09U
RUQ9ITApLHRoaXMuYXV0b2Jvb3Qpe3ZhciBlPXZvaWQgMDtlPXRoaXMuX2dsb2JhbHNNb2RlP3Ro
aXMuX19kZXByZWNhdGVkSW5zdGFuY2VfXzp0aGlzLmJ1aWxkSW5zdGFuY2UoKSxlLl9ib290U3lu
YygpLHRoaXMucmVhZHkoKSxlLnN0YXJ0Um91dGluZygpfXRoaXMuX2Jvb3RSZXNvbHZlci5yZXNv
bHZlKHRoaXMpLHRoaXMuX2Jvb3RlZD0hMH1jYXRjaChlKXt0aHJvdyB0aGlzLl9ib290UmVzb2x2
ZXIucmVqZWN0KGUpLGV9fSxyZWFkeTpmdW5jdGlvbigpe3JldHVybiB0aGlzfSx3aWxsRGVzdHJv
eTpmdW5jdGlvbigpe3RoaXMuX3N1cGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0LmRlZmF1bHQu
Qk9PVEVEPSExLHRoaXMuX2Jvb3RlZD0hMSx0aGlzLl9ib290UHJvbWlzZT1udWxsLHRoaXMuX2Jv
b3RSZXNvbHZlcj1udWxsLGkuX2xvYWRlZC5hcHBsaWNhdGlvbj09PXRoaXMmJihpLl9sb2FkZWQu
YXBwbGljYXRpb249dm9pZCAwKSx0aGlzLl9nbG9iYWxzTW9kZSYmdGhpcy5fX2RlcHJlY2F0ZWRJ
bnN0YW5jZV9fJiZ0aGlzLl9fZGVwcmVjYXRlZEluc3RhbmNlX18uZGVzdHJveSgpfSx2aXNpdDpm
dW5jdGlvbihlLHQpe3ZhciByPXRoaXM7cmV0dXJuIHRoaXMuYm9vdCgpLnRoZW4oZnVuY3Rpb24o
KXtyZXR1cm4gci5idWlsZEluc3RhbmNlKCkuYm9vdCh0KS50aGVuKGZ1bmN0aW9uKHQpe3JldHVy
biB0LnZpc2l0KGUpfSl9KX19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoJC5wcm90b3R5cGUsInJl
Z2lzdHJ5Iix7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0
dXJuIE4uYnVpbGRGYWtlUmVnaXN0cnlXaXRoRGVwcmVjYXRpb25zKHRoaXMsIkFwcGxpY2F0aW9u
Iil9fSksJC5yZW9wZW5DbGFzcyh7YnVpbGRSZWdpc3RyeTpmdW5jdGlvbihlKXt2YXIgdD1hcmd1
bWVudHMubGVuZ3RoPD0xfHx2b2lkIDA9PT1hcmd1bWVudHNbMV0/e306YXJndW1lbnRzWzFdLHI9
dGhpcy5fc3VwZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiByLnJlZ2lzdGVyKCJhcHBs
aWNhdGlvbjptYWluIixlLHtpbnN0YW50aWF0ZTohMX0pLHRbai5HTElNTUVSXT9JKHIpOkYociks
cn19KSxlLmRlZmF1bHQ9JH0pLGUoImVtYmVyLWFwcGxpY2F0aW9uL3N5c3RlbS9lbmdpbmUtaW5z
dGFuY2UiLFsiZXhwb3J0cyIsImVtYmVyLXJ1bnRpbWUvc3lzdGVtL29iamVjdCIsImNvbnRhaW5l
ci9yZWdpc3RyeSIsImVtYmVyLXJ1bnRpbWUvbWl4aW5zL2NvbnRhaW5lcl9wcm94eSIsImVtYmVy
LXJ1bnRpbWUvbWl4aW5zL3JlZ2lzdHJ5X3Byb3h5IiwiZW1iZXItbWV0YWwvcnVuX2xvb3AiXSxm
dW5jdGlvbihlLHQscixuLGksbyl7InVzZSBzdHJpY3QiO3ZhciBhPXQuZGVmYXVsdC5leHRlbmQo
aS5kZWZhdWx0LG4uZGVmYXVsdCx7YmFzZTpudWxsLGluaXQ6ZnVuY3Rpb24oKXt0aGlzLl9zdXBl
ci5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dmFyIGU9dGhpcy5iYXNlO2V8fChlPXRoaXMuYXBwbGlj
YXRpb24sdGhpcy5iYXNlPWUpO3ZhciB0PXRoaXMuX19yZWdpc3RyeV9fPW5ldyByLmRlZmF1bHQo
e2ZhbGxiYWNrOmUuX19yZWdpc3RyeV9ffSk7dGhpcy5fX2NvbnRhaW5lcl9fPXQuY29udGFpbmVy
KHtvd25lcjp0aGlzfSl9LHVucmVnaXN0ZXI6ZnVuY3Rpb24oZSl7dGhpcy5fX2NvbnRhaW5lcl9f
LnJlc2V0KGUpLHRoaXMuX3N1cGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sd2lsbERlc3Ryb3k6
ZnVuY3Rpb24oKXt0aGlzLl9zdXBlci5hcHBseSh0aGlzLGFyZ3VtZW50cyksby5kZWZhdWx0KHRo
aXMuX19jb250YWluZXJfXywiZGVzdHJveSIpfX0pO2UuZGVmYXVsdD1hfSksZSgiZW1iZXItYXBw
bGljYXRpb24vc3lzdGVtL2VuZ2luZSIsWyJleHBvcnRzIiwiZW1iZXItcnVudGltZS9zeXN0ZW0v
bmFtZXNwYWNlIiwiY29udGFpbmVyL3JlZ2lzdHJ5IiwiZW1iZXItcnVudGltZS9taXhpbnMvcmVn
aXN0cnlfcHJveHkiLCJkYWctbWFwIiwiZW1iZXItbWV0YWwvcHJvcGVydHlfZ2V0IiwiZW1iZXIt
bWV0YWwvcHJvcGVydHlfc2V0IiwiZW1iZXItbWV0YWwvZGVidWciLCJlbWJlci1tZXRhbC91dGls
cyIsImVtYmVyLW1ldGFsL2VtcHR5X29iamVjdCIsImVtYmVyLWFwcGxpY2F0aW9uL3N5c3RlbS9y
ZXNvbHZlciIsImVtYmVyLWFwcGxpY2F0aW9uL3N5c3RlbS9lbmdpbmUtaW5zdGFuY2UiLCJlbWJl
ci1tZXRhbC9mZWF0dXJlcyIsImVtYmVyLW1ldGFsL3N5bWJvbCJdLGZ1bmN0aW9uKGUsdCxyLG4s
aSxvLGEscyx1LGwsYyxmLGQscCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGgoZSl7dmFyIHQ9W107
Zm9yKHZhciByIGluIGUpdC5wdXNoKHIpO3JldHVybiB0fWZ1bmN0aW9uIG0oZSl7dmFyIHQ9ZS5n
ZXQoIlJlc29sdmVyIil8fGMuZGVmYXVsdDtyZXR1cm4gdC5jcmVhdGUoe25hbWVzcGFjZTplfSl9
ZnVuY3Rpb24gdihlLHQpe3JldHVybiBmdW5jdGlvbih0KXtpZih2b2lkIDAhPT10aGlzLnN1cGVy
Y2xhc3NbZV0mJnRoaXMuc3VwZXJjbGFzc1tlXT09PXRoaXNbZV0pe3ZhciByPXt9O3JbZV09T2Jq
ZWN0LmNyZWF0ZSh0aGlzW2VdKSx0aGlzLnJlb3BlbkNsYXNzKHIpfXRoaXNbZV1bdC5uYW1lXT10
fX12YXIgYj1wLmRlZmF1bHQoIkdMSU1NRVIiKTtlLkdMSU1NRVI9Yjt2YXIgZz10LmRlZmF1bHQu
ZXh0ZW5kKG4uZGVmYXVsdCx7aW5pdDpmdW5jdGlvbigpe3RoaXMuX3N1cGVyLmFwcGx5KHRoaXMs
YXJndW1lbnRzKSx2b2lkIDA9PT10aGlzW2JdJiYodGhpc1tiXT1kLmRlZmF1bHQoImVtYmVyLWds
aW1tZXIiKSksdGhpcy5idWlsZFJlZ2lzdHJ5KCl9LGJ1aWxkSW5zdGFuY2U6ZnVuY3Rpb24oKXt2
YXIgZT1hcmd1bWVudHMubGVuZ3RoPD0wfHx2b2lkIDA9PT1hcmd1bWVudHNbMF0/e306YXJndW1l
bnRzWzBdO3JldHVybiBlLmJhc2U9dGhpcyxmLmRlZmF1bHQuY3JlYXRlKGUpfSxidWlsZFJlZ2lz
dHJ5OmZ1bmN0aW9uKCl7dmFyIGUsdD10aGlzLl9fcmVnaXN0cnlfXz10aGlzLmNvbnN0cnVjdG9y
LmJ1aWxkUmVnaXN0cnkodGhpcywoZT17fSxlW2JdPXRoaXNbYl0sZSkpO3JldHVybiB0fSxpbml0
aWFsaXplcjpmdW5jdGlvbihlKXt0aGlzLmNvbnN0cnVjdG9yLmluaXRpYWxpemVyKGUpfSxpbnN0
YW5jZUluaXRpYWxpemVyOmZ1bmN0aW9uKGUpe3RoaXMuY29uc3RydWN0b3IuaW5zdGFuY2VJbml0
aWFsaXplcihlKX0scnVuSW5pdGlhbGl6ZXJzOmZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0aGlzLl9y
dW5Jbml0aWFsaXplcigiaW5pdGlhbGl6ZXJzIixmdW5jdGlvbih0LHIpezI9PT1yLmluaXRpYWxp
emUubGVuZ3RoP3IuaW5pdGlhbGl6ZShlLl9fcmVnaXN0cnlfXyxlKTpyLmluaXRpYWxpemUoZSl9
KX0scnVuSW5zdGFuY2VJbml0aWFsaXplcnM6ZnVuY3Rpb24oZSl7dGhpcy5fcnVuSW5pdGlhbGl6
ZXIoImluc3RhbmNlSW5pdGlhbGl6ZXJzIixmdW5jdGlvbih0LHIpe3IuaW5pdGlhbGl6ZShlKX0p
fSxfcnVuSW5pdGlhbGl6ZXI6ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHIsbj1vLmdldCh0aGlzLmNv
bnN0cnVjdG9yLGUpLGE9aChuKSxzPW5ldyBpLmRlZmF1bHQsdT0wO3U8YS5sZW5ndGg7dSsrKXI9
blthW3VdXSxzLmFkZEVkZ2VzKHIubmFtZSxyLHIuYmVmb3JlLHIuYWZ0ZXIpO3MudG9wc29ydChm
dW5jdGlvbihlKXt0KGUubmFtZSxlLnZhbHVlKX0pfX0pO2cucmVvcGVuQ2xhc3Moe2luaXRpYWxp
emVyczpuZXcgbC5kZWZhdWx0LGluc3RhbmNlSW5pdGlhbGl6ZXJzOm5ldyBsLmRlZmF1bHQsaW5p
dGlhbGl6ZXI6digiaW5pdGlhbGl6ZXJzIiwiaW5pdGlhbGl6ZXIiKSxpbnN0YW5jZUluaXRpYWxp
emVyOnYoImluc3RhbmNlSW5pdGlhbGl6ZXJzIiwiaW5zdGFuY2UgaW5pdGlhbGl6ZXIiKSxidWls
ZFJlZ2lzdHJ5OmZ1bmN0aW9uKGUpe3ZhciB0PW5ldyByLmRlZmF1bHQoe3Jlc29sdmVyOm0oZSl9
KTtyZXR1cm4gdC5zZXQ9YS5zZXQsdH0scmVzb2x2ZXI6bnVsbCxSZXNvbHZlcjpudWxsfSksZS5k
ZWZhdWx0PWd9KSxlKCJlbWJlci1hcHBsaWNhdGlvbi9zeXN0ZW0vcmVzb2x2ZXIiLFsiZXhwb3J0
cyIsImVtYmVyLW1ldGFsL2RlYnVnIiwiZW1iZXItbWV0YWwvcHJvcGVydHlfZ2V0IiwiZW1iZXIt
cnVudGltZS9zeXN0ZW0vc3RyaW5nIiwiZW1iZXItcnVudGltZS9zeXN0ZW0vb2JqZWN0IiwiZW1i
ZXItcnVudGltZS9zeXN0ZW0vbmFtZXNwYWNlIiwiZW1iZXItaHRtbGJhcnMvaGVscGVycyIsImVt
YmVyLWFwcGxpY2F0aW9uL3V0aWxzL3ZhbGlkYXRlLXR5cGUiLCJlbWJlci1tZXRhbC9kaWN0aW9u
YXJ5IiwiZW1iZXItaHRtbGJhcnMvdGVtcGxhdGVfcmVnaXN0cnkiXSxmdW5jdGlvbihlLHQscixu
LGksbyxhLHMsdSxsKXsidXNlIHN0cmljdCI7dmFyIGM9aS5kZWZhdWx0LmV4dGVuZCh7bmFtZXNw
YWNlOm51bGwsbm9ybWFsaXplOm51bGwscmVzb2x2ZTpudWxsLHBhcnNlTmFtZTpudWxsLGxvb2t1
cERlc2NyaXB0aW9uOm51bGwsbWFrZVRvU3RyaW5nOm51bGwscmVzb2x2ZU90aGVyOm51bGwsX2xv
Z0xvb2t1cDpudWxsfSk7ZS5SZXNvbHZlcj1jLGUuZGVmYXVsdD1pLmRlZmF1bHQuZXh0ZW5kKHtu
YW1lc3BhY2U6bnVsbCxpbml0OmZ1bmN0aW9uKCl7dGhpcy5fcGFyc2VOYW1lQ2FjaGU9dS5kZWZh
dWx0KG51bGwpfSxub3JtYWxpemU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5zcGxpdCgiOiIsMikscj10
WzBdLG49dFsxXTtpZigidGVtcGxhdGUiIT09cil7dmFyIGk9bjtyZXR1cm4gaS5pbmRleE9mKCIu
Iik+LTEmJihpPWkucmVwbGFjZSgvXC4oLikvZyxmdW5jdGlvbihlKXtyZXR1cm4gZS5jaGFyQXQo
MSkudG9VcHBlckNhc2UoKX0pKSxuLmluZGV4T2YoIl8iKT4tMSYmKGk9aS5yZXBsYWNlKC9fKC4p
L2csZnVuY3Rpb24oZSl7cmV0dXJuIGUuY2hhckF0KDEpLnRvVXBwZXJDYXNlKCl9KSksbi5pbmRl
eE9mKCItIik+LTEmJihpPWkucmVwbGFjZSgvLSguKS9nLGZ1bmN0aW9uKGUpe3JldHVybiBlLmNo
YXJBdCgxKS50b1VwcGVyQ2FzZSgpfSkpLHIrIjoiK2l9cmV0dXJuIGV9LHJlc29sdmU6ZnVuY3Rp
b24oZSl7dmFyIHQscj10aGlzLnBhcnNlTmFtZShlKSxuPXIucmVzb2x2ZU1ldGhvZE5hbWU7cmV0
dXJuIHRoaXNbbl0mJih0PXRoaXNbbl0ocikpLHQ9dHx8dGhpcy5yZXNvbHZlT3RoZXIociksci5y
b290JiZyLnJvb3QuTE9HX1JFU09MVkVSJiZ0aGlzLl9sb2dMb29rdXAodCxyKSx0JiZzLmRlZmF1
bHQodCxyKSx0fSxwYXJzZU5hbWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX3BhcnNlTmFtZUNh
Y2hlW2VdfHwodGhpcy5fcGFyc2VOYW1lQ2FjaGVbZV09dGhpcy5fcGFyc2VOYW1lKGUpKX0sX3Bh
cnNlTmFtZTpmdW5jdGlvbihlKXt2YXIgdD1lLnNwbGl0KCI6IiksaT10WzBdLGE9dFsxXSxzPWEs
dT1yLmdldCh0aGlzLCJuYW1lc3BhY2UiKSxsPXUsYz1zLmxhc3RJbmRleE9mKCIvIiksZj1jIT09
LTE/cy5zbGljZSgwLGMpOm51bGw7aWYoInRlbXBsYXRlIiE9PWkmJmMhPT0tMSl7dmFyIGQ9cy5z
cGxpdCgiLyIpO3M9ZFtkLmxlbmd0aC0xXTt2YXIgcD1uLmNhcGl0YWxpemUoZC5zbGljZSgwLC0x
KS5qb2luKCIuIikpO2w9by5kZWZhdWx0LmJ5TmFtZShwKX12YXIgaD0ibWFpbiI9PT1hPyJNYWlu
IjpuLmNsYXNzaWZ5KGkpO2lmKCFzfHwhaSl0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGZ1
bGxOYW1lOiBgIitlKyJgLCBtdXN0IGJlIG9mIHRoZSBmb3JtIGB0eXBlOm5hbWVgICIpO3JldHVy
bntmdWxsTmFtZTplLHR5cGU6aSxmdWxsTmFtZVdpdGhvdXRUeXBlOmEsZGlybmFtZTpmLG5hbWU6
cyxyb290OmwscmVzb2x2ZU1ldGhvZE5hbWU6InJlc29sdmUiK2h9fSxsb29rdXBEZXNjcmlwdGlv
bjpmdW5jdGlvbihlKXt2YXIgdCxyPXRoaXMucGFyc2VOYW1lKGUpO3JldHVybiJ0ZW1wbGF0ZSI9
PT1yLnR5cGU/InRlbXBsYXRlIGF0ICIrci5mdWxsTmFtZVdpdGhvdXRUeXBlLnJlcGxhY2UoL1wu
L2csIi8iKToodD1yLnJvb3QrIi4iK24uY2xhc3NpZnkoci5uYW1lKS5yZXBsYWNlKC9cLi9nLCIi
KSwibW9kZWwiIT09ci50eXBlJiYodCs9bi5jbGFzc2lmeShyLnR5cGUpKSx0KX0sbWFrZVRvU3Ry
aW5nOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUudG9TdHJpbmcoKX0sdXNlUm91dGVyTmFtaW5nOmZ1
bmN0aW9uKGUpe2UubmFtZT1lLm5hbWUucmVwbGFjZSgvXC4vZywiXyIpLCJiYXNpYyI9PT1lLm5h
bWUmJihlLm5hbWU9IiIpfSxyZXNvbHZlVGVtcGxhdGU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5mdWxs
TmFtZVdpdGhvdXRUeXBlLnJlcGxhY2UoL1wuL2csIi8iKTtyZXR1cm4gbC5nZXQodCl8fGwuZ2V0
KG4uZGVjYW1lbGl6ZSh0KSl9LHJlc29sdmVWaWV3OmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnVz
ZVJvdXRlck5hbWluZyhlKSx0aGlzLnJlc29sdmVPdGhlcihlKX0scmVzb2x2ZUNvbnRyb2xsZXI6
ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMudXNlUm91dGVyTmFtaW5nKGUpLHRoaXMucmVzb2x2ZU90
aGVyKGUpfSxyZXNvbHZlUm91dGU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMudXNlUm91dGVyTmFt
aW5nKGUpLHRoaXMucmVzb2x2ZU90aGVyKGUpfSxyZXNvbHZlTW9kZWw6ZnVuY3Rpb24oZSl7dmFy
IHQ9bi5jbGFzc2lmeShlLm5hbWUpLGk9ci5nZXQoZS5yb290LHQpO2lmKGkpcmV0dXJuIGl9LHJl
c29sdmVIZWxwZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucmVzb2x2ZU90aGVyKGUpfHxhLmRl
ZmF1bHRbZS5mdWxsTmFtZVdpdGhvdXRUeXBlXX0scmVzb2x2ZU90aGVyOmZ1bmN0aW9uKGUpe3Zh
ciB0PW4uY2xhc3NpZnkoZS5uYW1lKStuLmNsYXNzaWZ5KGUudHlwZSksaT1yLmdldChlLnJvb3Qs
dCk7aWYoaSlyZXR1cm4gaX0scmVzb2x2ZU1haW46ZnVuY3Rpb24oZSl7dmFyIHQ9bi5jbGFzc2lm
eShlLnR5cGUpO3JldHVybiByLmdldChlLnJvb3QsdCl9LF9sb2dMb29rdXA6ZnVuY3Rpb24oZSx0
KXt2YXIgcixuO3I9ZT8iW+Kck10iOiJbIF0iLG49dC5mdWxsTmFtZS5sZW5ndGg+NjA/Ii4iOm5l
dyBBcnJheSg2MC10LmZ1bGxOYW1lLmxlbmd0aCkuam9pbigiLiIpfSxrbm93bkZvclR5cGU6ZnVu
Y3Rpb24oZSl7Zm9yKHZhciB0PXIuZ2V0KHRoaXMsIm5hbWVzcGFjZSIpLGk9bi5jbGFzc2lmeShl
KSxvPW5ldyBSZWdFeHAoaSsiJCIpLGE9dS5kZWZhdWx0KG51bGwpLHM9T2JqZWN0LmtleXModCks
bD0wLGM9cy5sZW5ndGg7bDxjO2wrKyl7dmFyIGY9c1tsXTtpZihvLnRlc3QoZikpe3ZhciBkPXRo
aXMudHJhbnNsYXRlVG9Db250YWluZXJGdWxsbmFtZShlLGYpO2FbZF09ITB9fXJldHVybiBhfSx0
cmFuc2xhdGVUb0NvbnRhaW5lckZ1bGxuYW1lOmZ1bmN0aW9uKGUsdCl7dmFyIHI9bi5jbGFzc2lm
eShlKSxpPXQuc2xpY2UoMCxyLmxlbmd0aCotMSksbz1uLmRhc2hlcml6ZShpKTtyZXR1cm4gZSsi
OiIrb319KX0pLGUoImVtYmVyLWFwcGxpY2F0aW9uL3V0aWxzL3ZhbGlkYXRlLXR5cGUiLFsiZXhw
b3J0cyIsImVtYmVyLW1ldGFsL2RlYnVnIl0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gcihlLHQpe3ZhciByPW5bdC50eXBlXTtpZihyKXtyWzBdLHJbMV0sclsyXX19ZS5kZWZh
dWx0PXI7dmFyIG49e3JvdXRlOlsiYXNzZXJ0IiwiaXNSb3V0ZUZhY3RvcnkiLCJFbWJlci5Sb3V0
ZSJdLGNvbXBvbmVudDpbImRlcHJlY2F0ZSIsImlzQ29tcG9uZW50RmFjdG9yeSIsIkVtYmVyLkNv
bXBvbmVudCJdLHZpZXc6WyJkZXByZWNhdGUiLCJpc1ZpZXdGYWN0b3J5IiwiRW1iZXIuVmlldyJd
LHNlcnZpY2U6WyJkZXByZWNhdGUiLCJpc1NlcnZpY2VGYWN0b3J5IiwiRW1iZXIuU2VydmljZSJd
fX0pLGUoImVtYmVyLWV4dGVuc2lvbi1zdXBwb3J0L2NvbnRhaW5lcl9kZWJ1Z19hZGFwdGVyIixb
ImV4cG9ydHMiLCJlbWJlci1tZXRhbC9jb3JlIiwiZW1iZXItcnVudGltZS9zeXN0ZW0vbmF0aXZl
X2FycmF5IiwiZW1iZXItcnVudGltZS91dGlscyIsImVtYmVyLXJ1bnRpbWUvc3lzdGVtL3N0cmlu
ZyIsImVtYmVyLXJ1bnRpbWUvc3lzdGVtL25hbWVzcGFjZSIsImVtYmVyLXJ1bnRpbWUvc3lzdGVt
L29iamVjdCJdLGZ1bmN0aW9uKGUsdCxyLG4saSxvLGEpeyJ1c2Ugc3RyaWN0IjtlLmRlZmF1bHQ9
YS5kZWZhdWx0LmV4dGVuZCh7cmVzb2x2ZXI6bnVsbCxjYW5DYXRhbG9nRW50cmllc0J5VHlwZTpm
dW5jdGlvbihlKXtyZXR1cm4ibW9kZWwiIT09ZSYmInRlbXBsYXRlIiE9PWV9LGNhdGFsb2dFbnRy
aWVzQnlUeXBlOmZ1bmN0aW9uKGUpe3ZhciBhPXIuQShvLmRlZmF1bHQuTkFNRVNQQUNFUykscz1y
LkEoKSx1PW5ldyBSZWdFeHAoaS5jbGFzc2lmeShlKSsiJCIpO3JldHVybiBhLmZvckVhY2goZnVu
Y3Rpb24oZSl7aWYoZSE9PXQuZGVmYXVsdClmb3IodmFyIHIgaW4gZSlpZihlLmhhc093blByb3Bl
cnR5KHIpJiZ1LnRlc3Qocikpe3ZhciBvPWVbcl07ImNsYXNzIj09PW4udHlwZU9mKG8pJiZzLnB1
c2goaS5kYXNoZXJpemUoci5yZXBsYWNlKHUsIiIpKSl9fSksc319KX0pLGUoImVtYmVyLWV4dGVu
c2lvbi1zdXBwb3J0L2RhdGFfYWRhcHRlciIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvcHJvcGVy
dHlfZ2V0IiwiZW1iZXItbWV0YWwvcnVuX2xvb3AiLCJlbWJlci1ydW50aW1lL3N5c3RlbS9zdHJp
bmciLCJlbWJlci1ydW50aW1lL3N5c3RlbS9uYW1lc3BhY2UiLCJlbWJlci1ydW50aW1lL3N5c3Rl
bS9vYmplY3QiLCJlbWJlci1ydW50aW1lL3N5c3RlbS9uYXRpdmVfYXJyYXkiLCJlbWJlci1hcHBs
aWNhdGlvbi9zeXN0ZW0vYXBwbGljYXRpb24iLCJjb250YWluZXIvb3duZXIiLCJlbWJlci1ydW50
aW1lL21peGlucy9hcnJheSJdLGZ1bmN0aW9uKGUsdCxyLG4saSxvLGEscyx1LGwpeyJ1c2Ugc3Ry
aWN0IjtlLmRlZmF1bHQ9by5kZWZhdWx0LmV4dGVuZCh7aW5pdDpmdW5jdGlvbigpe3RoaXMuX3N1
cGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzLnJlbGVhc2VNZXRob2RzPWEuQSgpfSxjb250
YWluZXJEZWJ1Z0FkYXB0ZXI6dm9pZCAwLGF0dHJpYnV0ZUxpbWl0OjMsYWNjZXB0c01vZGVsTmFt
ZTohMCxyZWxlYXNlTWV0aG9kczphLkEoKSxnZXRGaWx0ZXJzOmZ1bmN0aW9uKCl7cmV0dXJuIGEu
QSgpfSx3YXRjaE1vZGVsVHlwZXM6ZnVuY3Rpb24oZSx0KXt2YXIgcixuPXRoaXMsaT10aGlzLmdl
dE1vZGVsVHlwZXMoKSxvPWEuQSgpO3I9aS5tYXAoZnVuY3Rpb24oZSl7dmFyIHI9ZS5rbGFzcyxp
PW4ud3JhcE1vZGVsVHlwZShyLGUubmFtZSk7cmV0dXJuIG8ucHVzaChuLm9ic2VydmVNb2RlbFR5
cGUoZS5uYW1lLHQpKSxpfSksZShyKTt2YXIgcz1mdW5jdGlvbigpe28uZm9yRWFjaChmdW5jdGlv
bihlKXtyZXR1cm4gZSgpfSksbi5yZWxlYXNlTWV0aG9kcy5yZW1vdmVPYmplY3Qocyl9O3JldHVy
biB0aGlzLnJlbGVhc2VNZXRob2RzLnB1c2hPYmplY3Qocyksc30sX25hbWVUb0NsYXNzOmZ1bmN0
aW9uKGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZSYmKGU9dS5nZXRPd25lcih0aGlzKS5fbG9v
a3VwRmFjdG9yeSgibW9kZWw6IitlKSksZX0sd2F0Y2hSZWNvcmRzOmZ1bmN0aW9uKGUsdCxyLG4p
e3ZhciBpLG89dGhpcyxzPWEuQSgpLHU9dGhpcy5fbmFtZVRvQ2xhc3MoZSksYz10aGlzLmdldFJl
Y29yZHModSxlKSxmPWZ1bmN0aW9uKGUpe3IoW2VdKX0sZD1jLm1hcChmdW5jdGlvbihlKXtyZXR1
cm4gcy5wdXNoKG8ub2JzZXJ2ZVJlY29yZChlLGYpKSxvLndyYXBSZWNvcmQoZSl9KSxwPWZ1bmN0
aW9uKGUscixpLGEpe2Zvcih2YXIgdT1yO3U8cithO3UrKyl7dmFyIGM9bC5vYmplY3RBdChlLHUp
LGQ9by53cmFwUmVjb3JkKGMpO3MucHVzaChvLm9ic2VydmVSZWNvcmQoYyxmKSksdChbZF0pfWkm
Jm4ocixpKX0saD17ZGlkQ2hhbmdlOnAsd2lsbENoYW5nZTpmdW5jdGlvbigpe3JldHVybiB0aGlz
fX07cmV0dXJuIGwuYWRkQXJyYXlPYnNlcnZlcihjLHRoaXMsaCksaT1mdW5jdGlvbigpe3MuZm9y
RWFjaChmdW5jdGlvbihlKXtlKCl9KSxsLnJlbW92ZUFycmF5T2JzZXJ2ZXIoYyxvLGgpLG8ucmVs
ZWFzZU1ldGhvZHMucmVtb3ZlT2JqZWN0KGkpfSx0KGQpLHRoaXMucmVsZWFzZU1ldGhvZHMucHVz
aE9iamVjdChpKSxpfSx3aWxsRGVzdHJveTpmdW5jdGlvbigpe3RoaXMuX3N1cGVyLmFwcGx5KHRo
aXMsYXJndW1lbnRzKSx0aGlzLnJlbGVhc2VNZXRob2RzLmZvckVhY2goZnVuY3Rpb24oZSl7ZSgp
fSl9LGRldGVjdDpmdW5jdGlvbihlKXtyZXR1cm4hMX0sY29sdW1uc0ZvclR5cGU6ZnVuY3Rpb24o
ZSl7cmV0dXJuIGEuQSgpfSxvYnNlcnZlTW9kZWxUeXBlOmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhp
cyxpPXRoaXMuX25hbWVUb0NsYXNzKGUpLG89dGhpcy5nZXRSZWNvcmRzKGksZSksYT1mdW5jdGlv
bigpe3QoW24ud3JhcE1vZGVsVHlwZShpLGUpXSl9LHM9e2RpZENoYW5nZTpmdW5jdGlvbigpe3Iu
ZGVmYXVsdC5zY2hlZHVsZU9uY2UoImFjdGlvbnMiLHRoaXMsYSl9LHdpbGxDaGFuZ2U6ZnVuY3Rp
b24oKXtyZXR1cm4gdGhpc319O2wuYWRkQXJyYXlPYnNlcnZlcihvLHRoaXMscyk7dmFyIHU9ZnVu
Y3Rpb24oKXtsLnJlbW92ZUFycmF5T2JzZXJ2ZXIobyxuLHMpfTtyZXR1cm4gdX0sd3JhcE1vZGVs
VHlwZTpmdW5jdGlvbihlLHIpe3ZhciBuLGk9dGhpcy5nZXRSZWNvcmRzKGUscik7cmV0dXJuIG49
e25hbWU6cixjb3VudDp0LmdldChpLCJsZW5ndGgiKSxjb2x1bW5zOnRoaXMuY29sdW1uc0ZvclR5
cGUoZSksb2JqZWN0OmV9fSxnZXRNb2RlbFR5cGVzOmZ1bmN0aW9uKCl7dmFyIGUsdD10aGlzLHI9
dGhpcy5nZXQoImNvbnRhaW5lckRlYnVnQWRhcHRlciIpO3JldHVybiBlPXIuY2FuQ2F0YWxvZ0Vu
dHJpZXNCeVR5cGUoIm1vZGVsIik/ci5jYXRhbG9nRW50cmllc0J5VHlwZSgibW9kZWwiKTp0aGlz
Ll9nZXRPYmplY3RzT25OYW1lc3BhY2VzKCksZT1hLkEoZSkubWFwKGZ1bmN0aW9uKGUpe3JldHVy
bntrbGFzczp0Ll9uYW1lVG9DbGFzcyhlKSxuYW1lOmV9fSksZT1hLkEoZSkuZmlsdGVyKGZ1bmN0
aW9uKGUpe3JldHVybiB0LmRldGVjdChlLmtsYXNzKX0pLGEuQShlKX0sX2dldE9iamVjdHNPbk5h
bWVzcGFjZXM6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9YS5BKGkuZGVmYXVsdC5OQU1FU1BBQ0VT
KSxyPWEuQSgpO3JldHVybiB0LmZvckVhY2goZnVuY3Rpb24odCl7Zm9yKHZhciBpIGluIHQpaWYo
dC5oYXNPd25Qcm9wZXJ0eShpKSYmZS5kZXRlY3QodFtpXSkpe3ZhciBvPW4uZGFzaGVyaXplKGkp
O3QgaW5zdGFuY2VvZiBzLmRlZmF1bHR8fCF0LnRvU3RyaW5nKCl8fChvPXQrIi8iK28pLHIucHVz
aChvKX19KSxyfSxnZXRSZWNvcmRzOmZ1bmN0aW9uKGUpe3JldHVybiBhLkEoKX0sd3JhcFJlY29y
ZDpmdW5jdGlvbihlKXt2YXIgdD17b2JqZWN0OmV9O3JldHVybiB0LmNvbHVtblZhbHVlcz10aGlz
LmdldFJlY29yZENvbHVtblZhbHVlcyhlKSx0LnNlYXJjaEtleXdvcmRzPXRoaXMuZ2V0UmVjb3Jk
S2V5d29yZHMoZSksdC5maWx0ZXJWYWx1ZXM9dGhpcy5nZXRSZWNvcmRGaWx0ZXJWYWx1ZXMoZSks
dC5jb2xvcj10aGlzLmdldFJlY29yZENvbG9yKGUpLHR9LGdldFJlY29yZENvbHVtblZhbHVlczpm
dW5jdGlvbihlKXtyZXR1cm57fX0sZ2V0UmVjb3JkS2V5d29yZHM6ZnVuY3Rpb24oZSl7cmV0dXJu
IGEuQSgpfSxnZXRSZWNvcmRGaWx0ZXJWYWx1ZXM6ZnVuY3Rpb24oZSl7cmV0dXJue319LGdldFJl
Y29yZENvbG9yOmZ1bmN0aW9uKGUpe3JldHVybiBudWxsfSxvYnNlcnZlUmVjb3JkOmZ1bmN0aW9u
KGUsdCl7cmV0dXJuIGZ1bmN0aW9uKCl7fX19KX0pLGUoImVtYmVyLWV4dGVuc2lvbi1zdXBwb3J0
L2luZGV4IixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9jb3JlIiwiZW1iZXItZXh0ZW5zaW9uLXN1
cHBvcnQvZGF0YV9hZGFwdGVyIiwiZW1iZXItZXh0ZW5zaW9uLXN1cHBvcnQvY29udGFpbmVyX2Rl
YnVnX2FkYXB0ZXIiXSxmdW5jdGlvbihlLHQscixuKXsidXNlIHN0cmljdCI7dC5kZWZhdWx0LkRh
dGFBZGFwdGVyPXIuZGVmYXVsdCx0LmRlZmF1bHQuQ29udGFpbmVyRGVidWdBZGFwdGVyPW4uZGVm
YXVsdH0pLGUoImVtYmVyLWh0bWxiYXJzL2NvbXBhdCIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwv
Y29yZSIsImVtYmVyLWh0bWxiYXJzL3V0aWxzL3N0cmluZyJdLGZ1bmN0aW9uKGUsdCxyKXsidXNl
IHN0cmljdCI7dmFyIG49dC5kZWZhdWx0LkhhbmRsZWJhcnM9dC5kZWZhdWx0LkhhbmRsZWJhcnN8
fHt9O24uU2FmZVN0cmluZz1yLlNhZmVTdHJpbmcsbi5VdGlscz17ZXNjYXBlRXhwcmVzc2lvbjpy
LmVzY2FwZUV4cHJlc3Npb259LGUuZGVmYXVsdD1ufSksZSgiZW1iZXItaHRtbGJhcnMvZW52Iixb
ImV4cG9ydHMiLCJlbWJlci1tZXRhbCIsImVtYmVyLW1ldGFsL2Vudmlyb25tZW50IiwiaHRtbGJh
cnMtcnVudGltZSIsImVtYmVyLW1ldGFsL2Fzc2lnbiIsImVtYmVyLWh0bWxiYXJzL2hvb2tzL3N1
YmV4cHIiLCJlbWJlci1odG1sYmFycy9ob29rcy9jb25jYXQiLCJlbWJlci1odG1sYmFycy9ob29r
cy9saW5rLXJlbmRlci1ub2RlIiwiZW1iZXItaHRtbGJhcnMvaG9va3MvY3JlYXRlLWZyZXNoLXNj
b3BlIiwiZW1iZXItaHRtbGJhcnMvaG9va3MvYmluZC1zaGFkb3ctc2NvcGUiLCJlbWJlci1odG1s
YmFycy9ob29rcy9iaW5kLXNlbGYiLCJlbWJlci1odG1sYmFycy9ob29rcy9iaW5kLXNjb3BlIiwi
ZW1iZXItaHRtbGJhcnMvaG9va3MvYmluZC1sb2NhbCIsImVtYmVyLWh0bWxiYXJzL2hvb2tzL2Jp
bmQtYmxvY2siLCJlbWJlci1odG1sYmFycy9ob29rcy91cGRhdGUtc2VsZiIsImVtYmVyLWh0bWxi
YXJzL2hvb2tzL2dldC1yb290IiwiZW1iZXItaHRtbGJhcnMvaG9va3MvZ2V0LWNoaWxkIiwiZW1i
ZXItaHRtbGJhcnMvaG9va3MvZ2V0LWJsb2NrIiwiZW1iZXItaHRtbGJhcnMvaG9va3MvZ2V0LXZh
bHVlIiwiZW1iZXItaHRtbGJhcnMvaG9va3MvZ2V0LWNlbGwtb3ItdmFsdWUiLCJlbWJlci1odG1s
YmFycy9ob29rcy9jbGVhbnVwLXJlbmRlci1ub2RlIiwiZW1iZXItaHRtbGJhcnMvaG9va3MvZGVz
dHJveS1yZW5kZXItbm9kZSIsImVtYmVyLWh0bWxiYXJzL2hvb2tzL2RpZC1yZW5kZXItbm9kZSIs
ImVtYmVyLWh0bWxiYXJzL2hvb2tzL3dpbGwtY2xlYW51cC10cmVlIiwiZW1iZXItaHRtbGJhcnMv
aG9va3MvZGlkLWNsZWFudXAtdHJlZSIsImVtYmVyLWh0bWxiYXJzL2hvb2tzL2NsYXNzaWZ5Iiwi
ZW1iZXItaHRtbGJhcnMvaG9va3MvY29tcG9uZW50IiwiZW1iZXItaHRtbGJhcnMvaG9va3MvbG9v
a3VwLWhlbHBlciIsImVtYmVyLWh0bWxiYXJzL2hvb2tzL2hhcy1oZWxwZXIiLCJlbWJlci1odG1s
YmFycy9ob29rcy9pbnZva2UtaGVscGVyIiwiZW1iZXItaHRtbGJhcnMvaG9va3MvZWxlbWVudCIs
ImVtYmVyLWh0bWxiYXJzL2hlbHBlcnMiLCJlbWJlci1odG1sYmFycy9rZXl3b3JkcyIsImVtYmVy
LWh0bWxiYXJzL3N5c3RlbS9kb20taGVscGVyIiwiZW1iZXItaHRtbGJhcnMva2V5d29yZHMvZGVi
dWdnZXIiLCJlbWJlci1odG1sYmFycy9rZXl3b3Jkcy93aXRoIiwiZW1iZXItaHRtbGJhcnMva2V5
d29yZHMvb3V0bGV0IiwiZW1iZXItaHRtbGJhcnMva2V5d29yZHMvdW5ib3VuZCIsImVtYmVyLWh0
bWxiYXJzL2tleXdvcmRzL3ZpZXciLCJlbWJlci1odG1sYmFycy9rZXl3b3Jkcy9jb21wb25lbnQi
LCJlbWJlci1odG1sYmFycy9rZXl3b3Jkcy9lbGVtZW50LWNvbXBvbmVudCIsImVtYmVyLWh0bWxi
YXJzL2tleXdvcmRzL3BhcnRpYWwiLCJlbWJlci1odG1sYmFycy9rZXl3b3Jkcy9pbnB1dCIsImVt
YmVyLWh0bWxiYXJzL2tleXdvcmRzL3RleHRhcmVhIiwiZW1iZXItaHRtbGJhcnMva2V5d29yZHMv
eWllbGQiLCJlbWJlci1odG1sYmFycy9rZXl3b3Jkcy9tdXQiLCJlbWJlci1odG1sYmFycy9rZXl3
b3Jkcy9yZWFkb25seSIsImVtYmVyLWh0bWxiYXJzL2tleXdvcmRzL2dldCJdLGZ1bmN0aW9uKGUs
dCxyLG4saSxvLGEscyx1LGwsYyxmLGQscCxoLG0sdixiLGcseSxfLHcseCxrLEMsRSxPLFQsTixT
LEEsUCxqLFIsTCxELE0sSSxGLEgsVixxLHosQixVLFcsJCxLKXsidXNlIHN0cmljdCI7dmFyIFE9
aS5kZWZhdWx0KHt9LG4uaG9va3MpO1Eua2V5d29yZHM9ai5kZWZhdWx0LGkuZGVmYXVsdChRLHts
aW5rUmVuZGVyTm9kZTpzLmRlZmF1bHQsY3JlYXRlRnJlc2hTY29wZTp1LmRlZmF1bHQsY3JlYXRl
Q2hpbGRTY29wZTp1LmNyZWF0ZUNoaWxkU2NvcGUsYmluZFNoYWRvd1Njb3BlOmwuZGVmYXVsdCxi
aW5kU2VsZjpjLmRlZmF1bHQsYmluZFNjb3BlOmYuZGVmYXVsdCxiaW5kTG9jYWw6ZC5kZWZhdWx0
LGJpbmRCbG9jazpwLmRlZmF1bHQsdXBkYXRlU2VsZjpoLmRlZmF1bHQsZ2V0QmxvY2s6Yi5kZWZh
dWx0LGdldFJvb3Q6bS5kZWZhdWx0LGdldENoaWxkOnYuZGVmYXVsdCxnZXRWYWx1ZTpnLmRlZmF1
bHQsZ2V0Q2VsbE9yVmFsdWU6eS5kZWZhdWx0LHN1YmV4cHI6by5kZWZhdWx0LGNvbmNhdDphLmRl
ZmF1bHQsY2xlYW51cFJlbmRlck5vZGU6Xy5kZWZhdWx0LGRlc3Ryb3lSZW5kZXJOb2RlOncuZGVm
YXVsdCx3aWxsQ2xlYW51cFRyZWU6ay5kZWZhdWx0LGRpZENsZWFudXBUcmVlOkMuZGVmYXVsdCxk
aWRSZW5kZXJOb2RlOnguZGVmYXVsdCxjbGFzc2lmeTpFLmRlZmF1bHQsY29tcG9uZW50Ok8uZGVm
YXVsdCxsb29rdXBIZWxwZXI6VC5kZWZhdWx0LGhhc0hlbHBlcjpOLmRlZmF1bHQsaW52b2tlSGVs
cGVyOlMuZGVmYXVsdCxlbGVtZW50OkEuZGVmYXVsdH0pLGoucmVnaXN0ZXJLZXl3b3JkKCJkZWJ1
Z2dlciIsTC5kZWZhdWx0KSxqLnJlZ2lzdGVyS2V5d29yZCgid2l0aCIsRC5kZWZhdWx0KSxqLnJl
Z2lzdGVyS2V5d29yZCgib3V0bGV0IixNLmRlZmF1bHQpLGoucmVnaXN0ZXJLZXl3b3JkKCJ1bmJv
dW5kIixJLmRlZmF1bHQpLGoucmVnaXN0ZXJLZXl3b3JkKCJjb21wb25lbnQiLEguZGVmYXVsdCks
ai5yZWdpc3RlcktleXdvcmQoIkBlbGVtZW50X2NvbXBvbmVudCIsVi5kZWZhdWx0KSxqLnJlZ2lz
dGVyS2V5d29yZCgicGFydGlhbCIscS5kZWZhdWx0KSxqLnJlZ2lzdGVyS2V5d29yZCgiaW5wdXQi
LHouZGVmYXVsdCksai5yZWdpc3RlcktleXdvcmQoInRleHRhcmVhIixCLmRlZmF1bHQpLGoucmVn
aXN0ZXJLZXl3b3JkKCJ5aWVsZCIsVS5kZWZhdWx0KSxqLnJlZ2lzdGVyS2V5d29yZCgibXV0IixX
LmRlZmF1bHQpLGoucmVnaXN0ZXJLZXl3b3JkKCJAbXV0IixXLnByaXZhdGVNdXQpLGoucmVnaXN0
ZXJLZXl3b3JkKCJyZWFkb25seSIsJC5kZWZhdWx0KSxqLnJlZ2lzdGVyS2V5d29yZCgiZ2V0IixL
LmRlZmF1bHQpLHQuZGVmYXVsdC5FTlYuX0VOQUJMRV9MRUdBQ1lfVklFV19TVVBQT1JUJiZqLnJl
Z2lzdGVyS2V5d29yZCgidmlldyIsRi5kZWZhdWx0KSxlLmRlZmF1bHQ9e2hvb2tzOlEsaGVscGVy
czpQLmRlZmF1bHQsdXNlRnJhZ21lbnRDYWNoZTohMH07dmFyIEc9ci5kZWZhdWx0Lmhhc0RPTT9u
ZXcgUi5kZWZhdWx0Om51bGw7ZS5kb21IZWxwZXI9R30pLGUoImVtYmVyLWh0bWxiYXJzL2dsaW1t
ZXItY29tcG9uZW50IixbImV4cG9ydHMiLCJlbWJlci12aWV3cy92aWV3cy9jb3JlX3ZpZXciLCJl
bWJlci12aWV3cy9taXhpbnMvdmlld19jaGlsZF92aWV3c19zdXBwb3J0IiwiZW1iZXItdmlld3Mv
bWl4aW5zL3ZpZXdfc3RhdGVfc3VwcG9ydCIsImVtYmVyLXZpZXdzL21peGlucy90ZW1wbGF0ZV9y
ZW5kZXJpbmdfc3VwcG9ydCIsImVtYmVyLXZpZXdzL21peGlucy9jbGFzc19uYW1lc19zdXBwb3J0
IiwiZW1iZXItdmlld3MvbWl4aW5zL2luc3RydW1lbnRhdGlvbl9zdXBwb3J0IiwiZW1iZXItdmll
d3MvbWl4aW5zL2FyaWFfcm9sZV9zdXBwb3J0IiwiZW1iZXItdmlld3MvbWl4aW5zL3ZpZXdfc3Vw
cG9ydCIsImVtYmVyLXZpZXdzL3ZpZXdzL3ZpZXciXSxmdW5jdGlvbihlLHQscixuLGksbyxhLHMs
dSxsKXsidXNlIHN0cmljdCI7ZS5kZWZhdWx0PXQuZGVmYXVsdC5leHRlbmQoci5kZWZhdWx0LG4u
ZGVmYXVsdCxpLmRlZmF1bHQsby5kZWZhdWx0LGEuZGVmYXVsdCxzLmRlZmF1bHQsdS5kZWZhdWx0
LHtpc0NvbXBvbmVudDohMCxpc0dsaW1tZXJDb21wb25lbnQ6ITAsaW5pdDpmdW5jdGlvbigpe3Ro
aXMuX3N1cGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzLl92aWV3UmVnaXN0cnk9dGhpcy5f
dmlld1JlZ2lzdHJ5fHxsLmRlZmF1bHQudmlld3N9fSl9KSxlKCJlbWJlci1odG1sYmFycy9oZWxw
ZXIiLFsiZXhwb3J0cyIsImVtYmVyLXJ1bnRpbWUvc3lzdGVtL29iamVjdCJdLGZ1bmN0aW9uKGUs
dCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJue2lzSGVscGVySW5zdGFuY2U6ITAs
Y29tcHV0ZTplfX1lLmhlbHBlcj1yO3ZhciBuPXQuZGVmYXVsdC5leHRlbmQoe2lzSGVscGVySW5z
dGFuY2U6ITAscmVjb21wdXRlOmZ1bmN0aW9uKCl7dGhpcy5fc3RyZWFtLm5vdGlmeSgpfX0pO24u
cmVvcGVuQ2xhc3Moe2lzSGVscGVyRmFjdG9yeTohMH0pLGUuZGVmYXVsdD1ufSksZSgiZW1iZXIt
aHRtbGJhcnMvaGVscGVycyIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvZW1wdHlfb2JqZWN0Il0s
ZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe25bZV09dH1lLnJlZ2lz
dGVySGVscGVyPXI7dmFyIG49bmV3IHQuZGVmYXVsdDtlLmRlZmF1bHQ9bn0pLGUoImVtYmVyLWh0
bWxiYXJzL2hlbHBlcnMvLWh0bWwtc2FmZSIsWyJleHBvcnRzIiwiaHRtbGJhcnMtdXRpbC9zYWZl
LXN0cmluZyJdLGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHI9
ZVswXTtyZXR1cm4gbmV3IHQuZGVmYXVsdChyKX1lLmRlZmF1bHQ9cn0pLGUoImVtYmVyLWh0bWxi
YXJzL2hlbHBlcnMvLWpvaW4tY2xhc3NlcyIsWyJleHBvcnRzIl0sZnVuY3Rpb24oZSl7InVzZSBz
dHJpY3QiO2Z1bmN0aW9uIHQoZSl7Zm9yKHZhciB0PVtdLHI9MCxuPWUubGVuZ3RoO3I8bjtyKysp
e3ZhciBpPWVbcl07aSYmdC5wdXNoKGkpfXJldHVybiB0LmpvaW4oIiAiKX1lLmRlZmF1bHQ9dH0p
LGUoImVtYmVyLWh0bWxiYXJzL2hlbHBlcnMvLW5vcm1hbGl6ZS1jbGFzcyIsWyJleHBvcnRzIiwi
ZW1iZXItcnVudGltZS9zeXN0ZW0vc3RyaW5nIiwiZW1iZXItbWV0YWwvcGF0aF9jYWNoZSJdLGZ1
bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlLG4pe3ZhciBpPWVbMF0sbz1l
WzFdLGE9bi5hY3RpdmVDbGFzcyxzPW4uaW5hY3RpdmVDbGFzcztpZihhfHxzKXJldHVybiBvP2E6
cztpZihvPT09ITApe2lmKGkmJnIuaXNQYXRoKGkpKXt2YXIgdT1pLnNwbGl0KCIuIik7aT11W3Uu
bGVuZ3RoLTFdfXJldHVybiB0LmRhc2hlcml6ZShpKX1yZXR1cm4gbyE9PSExJiZudWxsIT1vP286
bnVsbH1lLmRlZmF1bHQ9bn0pLGUoImVtYmVyLWh0bWxiYXJzL2hlbHBlcnMvY29uY2F0IixbImV4
cG9ydHMiXSxmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gdChlKXtyZXR1cm4gZS5q
b2luKCIiKX1lLmRlZmF1bHQ9dH0pLGUoImVtYmVyLWh0bWxiYXJzL2hlbHBlcnMvZWFjaC1pbiIs
WyJleHBvcnRzIiwiZW1iZXItdmlld3Mvc3RyZWFtcy9zaG91bGRfZGlzcGxheSJdLGZ1bmN0aW9u
KGUsdCl7InVzZSBzdHJpY3QiO3ZhciByPWZ1bmN0aW9uKGUscixuKXt2YXIgaSxvLGEscz1lWzBd
O2lmKGk9cz9PYmplY3Qua2V5cyhzKTpbXSx0LmRlZmF1bHQoaSkpZm9yKGE9MDthPGkubGVuZ3Ro
O2ErKylvPWlbYV0sbi50ZW1wbGF0ZS55aWVsZEl0ZW0obyxbbyxzW29dXSk7ZWxzZSBuLmludmVy
c2UueWllbGQmJm4uaW52ZXJzZS55aWVsZCgpfTtlLmRlZmF1bHQ9cn0pLGUoImVtYmVyLWh0bWxi
YXJzL2hlbHBlcnMvZWFjaCIsWyJleHBvcnRzIiwiZW1iZXItdmlld3Mvc3RyZWFtcy9zaG91bGRf
ZGlzcGxheSIsImVtYmVyLWh0bWxiYXJzL3V0aWxzL2RlY29kZS1lYWNoLWtleSJdLGZ1bmN0aW9u
KGUsdCxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlLG4sbyl7dmFyIGE9ZVswXSxzPW4ua2V5
O3QuZGVmYXVsdChhKT9pKGEsZnVuY3Rpb24oZSx0KXt2YXIgbj1yLmRlZmF1bHQoZSxzLHQpO28u
dGVtcGxhdGUueWllbGRJdGVtKG4sW2UsdF0pfSk6by5pbnZlcnNlLnlpZWxkJiZvLmludmVyc2Uu
eWllbGQoKX1mdW5jdGlvbiBpKGUsdCl7cmV0dXJuIGUuZm9yRWFjaD9lLmZvckVhY2godCk6QXJy
YXkucHJvdG90eXBlLmZvckVhY2guY2FsbChlLHQpfWUuZGVmYXVsdD1ufSksZSgiZW1iZXItaHRt
bGJhcnMvaGVscGVycy9oYXNoIixbImV4cG9ydHMiXSxmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gdChlLHQscil7cmV0dXJuIHR9ZS5kZWZhdWx0PXR9KSxlKCJlbWJlci1odG1sYmFy
cy9oZWxwZXJzL2lmX3VubGVzcyIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvZGVidWciLCJlbWJl
ci12aWV3cy9zdHJlYW1zL3Nob3VsZF9kaXNwbGF5Il0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiBuKGUsdCxuKXtyZXR1cm4gbyhlLHQsbixyLmRlZmF1bHQoZVswXSkpfWZ1
bmN0aW9uIGkoZSx0LG4pe3JldHVybiBvKGUsdCxuLCFyLmRlZmF1bHQoZVswXSkpfWZ1bmN0aW9u
IG8oZSx0LHIsbil7aWYobil7aWYoIXIudGVtcGxhdGUueWllbGQpcmV0dXJuIGVbMV07ci50ZW1w
bGF0ZS55aWVsZCgpfWVsc2V7aWYoIXIuaW52ZXJzZS55aWVsZClyZXR1cm4gZVsyXTtyLmludmVy
c2UueWllbGQoKX19ZS5pZkhlbHBlcj1uLGUudW5sZXNzSGVscGVyPWl9KSxlKCJlbWJlci1odG1s
YmFycy9oZWxwZXJzL2xvYyIsWyJleHBvcnRzIiwiZW1iZXItaHRtbGJhcnMvaGVscGVyIiwiZW1i
ZXItcnVudGltZS9zeXN0ZW0vc3RyaW5nIl0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiBuKGUpe3JldHVybiByLmxvYy5hcHBseShudWxsLGUpfWUuZGVmYXVsdD10LmhlbHBl
cihuKX0pLGUoImVtYmVyLWh0bWxiYXJzL2hlbHBlcnMvbG9nIixbImV4cG9ydHMiLCJlbWJlci1t
ZXRhbC9sb2dnZXIiXSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3Qu
ZGVmYXVsdC5sb2cuYXBwbHkobnVsbCxlKX1lLmRlZmF1bHQ9cn0pLGUoImVtYmVyLWh0bWxiYXJz
L2hlbHBlcnMvd2l0aCIsWyJleHBvcnRzIiwiZW1iZXItdmlld3Mvc3RyZWFtcy9zaG91bGRfZGlz
cGxheSJdLGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSxyLG4pe3QuZGVm
YXVsdChlWzBdKT9uLnRlbXBsYXRlLnlpZWxkKFtlWzBdXSk6bi5pbnZlcnNlJiZuLmludmVyc2Uu
eWllbGQmJm4uaW52ZXJzZS55aWVsZChbXSl9ZS5kZWZhdWx0PXJ9KSxlKCJlbWJlci1odG1sYmFy
cy9ob29rcy9iaW5kLWJsb2NrIixbImV4cG9ydHMiXSxmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gdChlLHQscil7dmFyIG49YXJndW1lbnRzLmxlbmd0aDw9M3x8dm9pZCAwPT09YXJn
dW1lbnRzWzNdPyJkZWZhdWx0Ijphcmd1bWVudHNbM107dC5iaW5kQmxvY2sobixyKX1lLmRlZmF1
bHQ9dH0pLGUoImVtYmVyLWh0bWxiYXJzL2hvb2tzL2JpbmQtbG9jYWwiLFsiZXhwb3J0cyIsImVt
YmVyLW1ldGFsL3N0cmVhbXMvc3RyZWFtIiwiZW1iZXItbWV0YWwvc3RyZWFtcy9wcm94eS1zdHJl
YW0iXSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSxuLGksbyl7aWYo
bi5oYXNPd25Mb2NhbChpKSl7dmFyIGE9bi5nZXRMb2NhbChpKTthIT09byYmYS5zZXRTb3VyY2Uo
byl9ZWxzZXt2YXIgcz10LndyYXAobyxyLmRlZmF1bHQsaSk7bi5iaW5kTG9jYWwoaSxzKX19ZS5k
ZWZhdWx0PW59KSxlKCJlbWJlci1odG1sYmFycy9ob29rcy9iaW5kLXNjb3BlIixbImV4cG9ydHMi
XSxmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gdChlLHQpe31lLmRlZmF1bHQ9dH0p
LGUoImVtYmVyLWh0bWxiYXJzL2hvb2tzL2JpbmQtc2VsZiIsWyJleHBvcnRzIiwiZW1iZXItbWV0
YWwiLCJlbWJlci1tZXRhbC9zdHJlYW1zL3Byb3h5LXN0cmVhbSJdLGZ1bmN0aW9uKGUsdCxyKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlLHIsbil7aWYobiYmbi5pc1ZpZXcpe3QuZGVmYXVsdC5F
TlYuX0VOQUJMRV9MRUdBQ1lfVklFV19TVVBQT1JUJiZyLmJpbmRMb2NhbCgidmlldyIsaShuLCJ2
aWV3IikpO3ZhciBvPWkobiwiIik7cmV0dXJuIHZvaWQobi5pc0dsaW1tZXJDb21wb25lbnQ/ci5i
aW5kU2VsZihvKTpyLmJpbmRTZWxmKGkoby5nZXRLZXkoImNvbnRleHQiKSwiIikpKX12YXIgYT1p
KG4sIiIpO3IuYmluZFNlbGYoYSl9ZnVuY3Rpb24gaShlLHQpe3JldHVybiBuZXcgci5kZWZhdWx0
KGUsdCl9ZS5kZWZhdWx0PW59KSxlKCJlbWJlci1odG1sYmFycy9ob29rcy9iaW5kLXNoYWRvdy1z
Y29wZSIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvc3RyZWFtcy9wcm94eS1zdHJlYW0iXSxmdW5j
dGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxyLGkpe2lmKGkpe3ZhciBvPWku
dmlldztyZXR1cm4gbyYmIW8uaXNDb21wb25lbnQmJihyLmJpbmRMb2NhbCgidmlldyIsbihvLCJ2
aWV3IikpLG8uaXNWaWV3JiZyLmJpbmRTZWxmKG4oci5nZXRMb2NhbCgidmlldyIpLmdldEtleSgi
Y29udGV4dCIpLCIiKSkpLHIuYmluZFZpZXcobyksbyYmaS5hdHRycyYmci5iaW5kQ29tcG9uZW50
KG8pLCJhdHRycyJpbiBpJiZyLmJpbmRBdHRycyhpLmF0dHJzKSxyfX1mdW5jdGlvbiBuKGUscil7
cmV0dXJuIG5ldyB0LmRlZmF1bHQoZSxyKX1lLmRlZmF1bHQ9cn0pLGUoImVtYmVyLWh0bWxiYXJz
L2hvb2tzL2NsYXNzaWZ5IixbImV4cG9ydHMiLCJlbWJlci1odG1sYmFycy91dGlscy9pcy1jb21w
b25lbnQiXSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUscixuKXtyZXR1
cm4gdC5kZWZhdWx0KGUscixuKT8iY29tcG9uZW50IjpudWxsfWUuZGVmYXVsdD1yfSksZSgiZW1i
ZXItaHRtbGJhcnMvaG9va3MvY2xlYW51cC1yZW5kZXItbm9kZSIsWyJleHBvcnRzIl0sZnVuY3Rp
b24oZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHQoZSl7ZS5jbGVhbnVwJiZlLmNsZWFudXAoKX1l
LmRlZmF1bHQ9dH0pLGUoImVtYmVyLWh0bWxiYXJzL2hvb2tzL2NvbXBvbmVudCIsWyJleHBvcnRz
IiwiZW1iZXItbWV0YWwvZmVhdHVyZXMiLCJlbWJlci1tZXRhbC9kZWJ1ZyIsImVtYmVyLWh0bWxi
YXJzL25vZGUtbWFuYWdlcnMvY29tcG9uZW50LW5vZGUtbWFuYWdlciIsImVtYmVyLXZpZXdzL3N5
c3RlbS9idWlsZC1jb21wb25lbnQtdGVtcGxhdGUiLCJlbWJlci1odG1sYmFycy91dGlscy9sb29r
dXAtY29tcG9uZW50IiwiZW1iZXItbWV0YWwvYXNzaWduIiwiZW1iZXItbWV0YWwvZW1wdHlfb2Jq
ZWN0IiwiZW1iZXItbWV0YWwvY2FjaGUiLCJlbWJlci1odG1sYmFycy9zeXN0ZW0vbG9va3VwLWhl
bHBlciIsImVtYmVyLWh0bWxiYXJzL3V0aWxzL2V4dHJhY3QtcG9zaXRpb25hbC1wYXJhbXMiLCJl
bWJlci1odG1sYmFycy9rZXl3b3Jkcy9jbG9zdXJlLWNvbXBvbmVudCJdLGZ1bmN0aW9uKGUsdCxy
LG4saSxvLGEscyx1LGwsYyxmKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZChlLHQscix1LGQsaCxt
LHYpe3ZhciBiPWUuZ2V0U3RhdGUoKSxnPXU7aWYobC5DT05UQUlOU19ET1RfQ0FDSEUuZ2V0KGcp
KXt2YXIgeT10Lmhvb2tzLmdldCh0LHIsZyksXz15LnZhbHVlKCk7aWYoZi5pc0NvbXBvbmVudENl
bGwoXykpe2c9X1tmLkNPTVBPTkVOVF9QQVRIXTt2YXIgdz1hLmRlZmF1bHQobmV3IHMuZGVmYXVs
dCxoKTtmLnByb2Nlc3NQb3NpdGlvbmFsUGFyYW1zRnJvbUNlbGwoXyxkLHcpLGQ9W10saD1mLm1l
cmdlSW5OZXdIYXNoKF9bZi5DT01QT05FTlRfSEFTSF0sdyl9fWlmKGIubWFuYWdlcil7dmFyIHg9
Yi5tYW5hZ2VyLGs9bnVsbDtyZXR1cm4geC5ibG9jaz9rPXguYmxvY2sudGVtcGxhdGUubWV0YTp4
LnNjb3BlJiZ4LnNjb3BlLl92aWV3JiYoaz14LnNjb3BlLl92aWV3LnRlbXBsYXRlLm1ldGEpLHQu
bWV0YS5tb2R1bGVOYW1lPWsmJmsubW9kdWxlTmFtZXx8dC5tZXRhJiZ0Lm1ldGEubW9kdWxlTmFt
ZSxjLmRlZmF1bHQoZSx4LmNvbXBvbmVudC5jb25zdHJ1Y3RvcixkLGgsITEpLHZvaWQgYi5tYW5h
Z2VyLnJlcmVuZGVyKHQsaCx2KX12YXIgQz0hMSxFPSExLE89ITEsVD1wLmdldChnKTtUJiYoZz1U
WzJdLEM9ITAsRT0hIVRbMV0pLGwuQ09OVEFJTlNfREFTSF9DQUNIRS5nZXQoZykmJihPPSEwKTt2
YXIgTj10LnZpZXcsUz10LnZpZXcsQT1TJiZTLl9pc0FuZ2xlQnJhY2tldCxQPVMmJiFTLl9pc0Fu
Z2xlQnJhY2tldCxqPUMmJiFPJiZBLFI9QyYmRSYmZz09PXQudmlldy50YWdOYW1lLEw9QyYmIU8m
JlAsRD12b2lkIDAsTT12b2lkIDA7aWYoT3x8IUMpe3ZhciBJPXt9LEY9dC5tZXRhJiZ0Lm1ldGEu
bW9kdWxlTmFtZTtGJiYoSS5zb3VyY2U9InRlbXBsYXRlOiIrRik7dmFyIEg9by5kZWZhdWx0KHQu
b3duZXIsZyxJKTtEPUguY29tcG9uZW50LE09SC5sYXlvdXQsQyYmTyYmIUQmJiFNJiYoaj0hMCl9
aWYoUnx8ail7dmFyIFY9e2NvbXBvbmVudDpTLAordGFnTmFtZTpnLGlzQW5nbGVCcmFja2V0OiEw
LGlzQ29tcG9uZW50RWxlbWVudDohMCxvdXRlckF0dHJzOnIuZ2V0QXR0cnMoKSxwYXJlbnRTY29w
ZTpyfSxxPXt0ZW1wbGF0ZXM6bSxzY29wZTpyfSx6PWkuZGVmYXVsdChWLGgscSksQj16LmJsb2Nr
O0IuaW52b2tlKHQsW10sdm9pZCAwLGUscix2KX1lbHNlIGlmKEwpe3ZhciBCPWkuYnVpbGRIVE1M
VGVtcGxhdGUoZyxoLHt0ZW1wbGF0ZXM6bSxzY29wZTpyfSk7Qi5pbnZva2UodCxbXSx2b2lkIDAs
ZSxyLHYpfWVsc2V7dmFyIFU9bi5kZWZhdWx0LmNyZWF0ZShlLHQse3RhZ05hbWU6ZyxwYXJhbXM6
ZCxhdHRyczpoLHBhcmVudFZpZXc6Tix0ZW1wbGF0ZXM6bSxpc0FuZ2xlQnJhY2tldDpDLGlzVG9w
TGV2ZWw6RSxjb21wb25lbnQ6RCxsYXlvdXQ6TSxwYXJlbnRTY29wZTpyfSk7Yi5tYW5hZ2VyPVUs
VS5yZW5kZXIodCx2KX19ZS5kZWZhdWx0PWQ7dmFyIHA9bmV3IHUuZGVmYXVsdCgxZTMsZnVuY3Rp
b24oZSl7cmV0dXJuIGUubWF0Y2goL14oQD8pPCguKik+JC8pfSl9KSxlKCJlbWJlci1odG1sYmFy
cy9ob29rcy9jb25jYXQiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL3N0cmVhbXMvdXRpbHMiXSxm
dW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUscil7cmV0dXJuIHQuY29uY2F0
KHIsIiIpfWUuZGVmYXVsdD1yfSksZSgiZW1iZXItaHRtbGJhcnMvaG9va3MvY3JlYXRlLWZyZXNo
LXNjb3BlIixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9zdHJlYW1zL3Byb3h5LXN0cmVhbSIsImVt
YmVyLW1ldGFsL2VtcHR5X29iamVjdCJdLGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gbihlKXt0aGlzLl9zZWxmPXZvaWQgMCx0aGlzLl9ibG9ja3M9dm9pZCAwLHRoaXMuX2Nv
bXBvbmVudD12b2lkIDAsdGhpcy5fdmlldz12b2lkIDAsdGhpcy5fYXR0cnM9dm9pZCAwLHRoaXMu
X2xvY2Fscz12b2lkIDAsdGhpcy5fbG9jYWxQcmVzZW50PXZvaWQgMCx0aGlzLm92ZXJyaWRlQ29u
dHJvbGxlcj12b2lkIDAsdGhpcy5wYXJlbnQ9ZX1mdW5jdGlvbiBpKCl7cmV0dXJuIG5ldyBuKHMp
fWZ1bmN0aW9uIG8oZSl7cmV0dXJuIG5ldyBuKGUpfWUuZGVmYXVsdD1pLGUuY3JlYXRlQ2hpbGRT
Y29wZT1vO3ZhciBhPW4ucHJvdG90eXBlO2EuZ2V0U2VsZj1mdW5jdGlvbigpe3JldHVybiB0aGlz
Ll9zZWxmfHx0aGlzLnBhcmVudC5nZXRTZWxmKCl9LGEuYmluZFNlbGY9ZnVuY3Rpb24oZSl7dGhp
cy5fc2VsZj1lfSxhLnVwZGF0ZVNlbGY9ZnVuY3Rpb24oZSxyKXt2YXIgbj10aGlzLl9zZWxmO24/
bi5zZXRTb3VyY2UoZSk6dGhpcy5fc2VsZj1uZXcgdC5kZWZhdWx0KGUscil9LGEuZ2V0QmxvY2s9
ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2Jsb2Nrcz90aGlzLl9ibG9ja3NbZV18fHRoaXMucGFy
ZW50LmdldEJsb2NrKGUpOnRoaXMucGFyZW50LmdldEJsb2NrKGUpfSxhLmhhc0Jsb2NrPWZ1bmN0
aW9uKGUpe3JldHVybiB0aGlzLl9ibG9ja3M/ISghdGhpcy5fYmxvY2tzW2VdJiYhdGhpcy5wYXJl
bnQuaGFzQmxvY2soZSkpOnRoaXMucGFyZW50Lmhhc0Jsb2NrKGUpfSxhLmJpbmRCbG9jaz1mdW5j
dGlvbihlLHQpe3RoaXMuX2Jsb2Nrc3x8KHRoaXMuX2Jsb2Nrcz1uZXcgci5kZWZhdWx0KSx0aGlz
Ll9ibG9ja3NbZV09dH0sYS5nZXRDb21wb25lbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY29t
cG9uZW50fHx0aGlzLnBhcmVudC5nZXRDb21wb25lbnQoKX0sYS5iaW5kQ29tcG9uZW50PWZ1bmN0
aW9uKGUpe3RoaXMuX2NvbXBvbmVudD1lfSxhLmdldFZpZXc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhp
cy5fdmlld3x8dGhpcy5wYXJlbnQuZ2V0VmlldygpfSxhLmJpbmRWaWV3PWZ1bmN0aW9uKGUpe3Ro
aXMuX3ZpZXc9ZX0sYS5nZXRBdHRycz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9hdHRyc3x8dGhp
cy5wYXJlbnQuZ2V0QXR0cnMoKX0sYS5iaW5kQXR0cnM9ZnVuY3Rpb24oZSl7dGhpcy5fYXR0cnM9
ZX0sYS5oYXNMb2NhbD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fbG9jYWxQcmVzZW50P3RoaXMu
X2xvY2FsUHJlc2VudFtlXXx8dGhpcy5wYXJlbnQuaGFzTG9jYWwoZSk6dGhpcy5wYXJlbnQuaGFz
TG9jYWwoZSl9LGEuaGFzT3duTG9jYWw9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2xvY2FsUHJl
c2VudCYmdGhpcy5fbG9jYWxQcmVzZW50W2VdfSxhLmdldExvY2FsPWZ1bmN0aW9uKGUpe3JldHVy
biB0aGlzLl9sb2NhbFByZXNlbnQmJnRoaXMuX2xvY2FsUHJlc2VudFtlXT90aGlzLl9sb2NhbHNb
ZV06dGhpcy5wYXJlbnQuZ2V0TG9jYWwoZSl9LGEuYmluZExvY2FsPWZ1bmN0aW9uKGUsdCl7dGhp
cy5fbG9jYWxQcmVzZW50fHwodGhpcy5fbG9jYWxQcmVzZW50PW5ldyByLmRlZmF1bHQsdGhpcy5f
bG9jYWxzPW5ldyByLmRlZmF1bHQpLHRoaXMuX2xvY2FsUHJlc2VudFtlXT0hMCx0aGlzLl9sb2Nh
bHNbZV09dH07dmFyIHM9e19zZWxmOnZvaWQgMCxfYmxvY2tzOnZvaWQgMCxfY29tcG9uZW50OnZv
aWQgMCxfdmlldzp2b2lkIDAsX2F0dHJzOnZvaWQgMCxfbG9jYWxzOnZvaWQgMCxfbG9jYWxQcmVz
ZW50OnZvaWQgMCxvdmVycmlkZUNvbnRyb2xsZXI6dm9pZCAwLGdldFNlbGY6ZnVuY3Rpb24oKXty
ZXR1cm4gbnVsbH0sYmluZFNlbGY6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGx9LHVwZGF0ZVNlbGY6
ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbH0sZ2V0QmxvY2s6ZnVuY3Rpb24oZSl7cmV0dXJuIG51
bGx9LGJpbmRCbG9jazpmdW5jdGlvbihlLHQpe3JldHVybiBudWxsfSxoYXNCbG9jazpmdW5jdGlv
bihlKXtyZXR1cm4hMX0sZ2V0Q29tcG9uZW50OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LGJpbmRD
b21wb25lbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sZ2V0VmlldzpmdW5jdGlvbigpe3JldHVy
biBudWxsfSxiaW5kVmlldzpmdW5jdGlvbihlKXtyZXR1cm4gbnVsbH0sZ2V0QXR0cnM6ZnVuY3Rp
b24oKXtyZXR1cm4gbnVsbH0sYmluZEF0dHJzOmZ1bmN0aW9uKGUpe3JldHVybiBudWxsfSxoYXNM
b2NhbDpmdW5jdGlvbihlKXtyZXR1cm4hMX0saGFzT3duTG9jYWw6ZnVuY3Rpb24oZSl7cmV0dXJu
ITF9LGdldExvY2FsOmZ1bmN0aW9uKGUpe3JldHVybiBudWxsfSxiaW5kTG9jYWw6ZnVuY3Rpb24o
ZSx0KXtyZXR1cm4gbnVsbH19fSksZSgiZW1iZXItaHRtbGJhcnMvaG9va3MvZGVzdHJveS1yZW5k
ZXItbm9kZSIsWyJleHBvcnRzIl0sZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHQo
ZSl7ZS5lbWJlclZpZXcmJmUuZW1iZXJWaWV3LmRlc3Ryb3koKTt2YXIgdD1lLnN0cmVhbVVuc3Vi
c2NyaWJlcnM7aWYodClmb3IodmFyIHI9MCxuPXQubGVuZ3RoO3I8bjtyKyspdFtyXSgpfWUuZGVm
YXVsdD10fSksZSgiZW1iZXItaHRtbGJhcnMvaG9va3MvZGlkLWNsZWFudXAtdHJlZSIsWyJleHBv
cnRzIl0sZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHQoZSl7ZS52aWV3Lm93bmVy
Vmlldy5fZGVzdHJveWluZ1N1YnRyZWVGb3JWaWV3PW51bGx9ZS5kZWZhdWx0PXR9KSxlKCJlbWJl
ci1odG1sYmFycy9ob29rcy9kaWQtcmVuZGVyLW5vZGUiLFsiZXhwb3J0cyJdLGZ1bmN0aW9uKGUp
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB0KGUsdCl7dC5yZW5kZXJlZE5vZGVzLmFkZChlKX1lLmRl
ZmF1bHQ9dH0pLGUoImVtYmVyLWh0bWxiYXJzL2hvb2tzL2VsZW1lbnQiLFsiZXhwb3J0cyIsImVt
YmVyLWh0bWxiYXJzL3N5c3RlbS9sb29rdXAtaGVscGVyIiwiaHRtbGJhcnMtcnVudGltZS9ob29r
cyIsImVtYmVyLWh0bWxiYXJzL3N5c3RlbS9pbnZva2UtaGVscGVyIl0sZnVuY3Rpb24oZSx0LHIs
bil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSxpLG8sYSxzLHUsbCl7aWYoIXIuaGFuZGxlUmVk
aXJlY3QoZSxpLG8sYSxzLHUsbnVsbCxudWxsLGwpKXt2YXIgYyxmPXQuZmluZEhlbHBlcihhLG8u
Z2V0U2VsZigpLGkpO2lmKGYpe3ZhciBkPW4uYnVpbGRIZWxwZXJTdHJlYW0oZixzLHUse2VsZW1l
bnQ6ZS5lbGVtZW50fSxpLG8sYSk7Yz1kLnZhbHVlKCl9ZWxzZSBjPWkuaG9va3MuZ2V0KGksbyxh
KTtpLmhvb2tzLmdldFZhbHVlKGMpfX1lLmRlZmF1bHQ9aX0pLGUoImVtYmVyLWh0bWxiYXJzL2hv
b2tzL2dldC1ibG9jayIsWyJleHBvcnRzIl0sZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHQoZSx0KXtyZXR1cm4gZS5nZXRCbG9jayh0KX1lLmRlZmF1bHQ9dH0pLGUoImVtYmVyLWh0
bWxiYXJzL2hvb2tzL2dldC1jZWxsLW9yLXZhbHVlIixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9z
dHJlYW1zL3V0aWxzIiwiZW1iZXItaHRtbGJhcnMva2V5d29yZHMvbXV0Il0sZnVuY3Rpb24oZSx0
LHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe3JldHVybiBlJiZlW3IuTVVUQUJMRV9SRUZF
UkVOQ0VdP2UuY2VsbCgpOnQucmVhZChlKX1lLmRlZmF1bHQ9bn0pLGUoImVtYmVyLWh0bWxiYXJz
L2hvb2tzL2dldC1jaGlsZCIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvc3RyZWFtcy91dGlscyJd
LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSxyKXtyZXR1cm4gdC5pc1N0
cmVhbShlKT9lLmdldEtleShyKTplW3JdfWUuZGVmYXVsdD1yfSksZSgiZW1iZXItaHRtbGJhcnMv
aG9va3MvZ2V0LXJvb3QiLFsiZXhwb3J0cyJdLGZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiB0KGUsdCl7aWYoInRoaXMiPT09dClyZXR1cm5bZS5nZXRTZWxmKCldO2lmKCJoYXNCbG9j
ayI9PT10KXJldHVyblshIWUuaGFzQmxvY2soImRlZmF1bHQiKV07aWYoImhhc0Jsb2NrUGFyYW1z
Ij09PXQpe3ZhciBuPWUuZ2V0QmxvY2soImRlZmF1bHQiKTtyZXR1cm5bISFuJiZuLmFyaXR5XX1y
ZXR1cm4gZS5oYXNMb2NhbCh0KT9bZS5nZXRMb2NhbCh0KV06W3IoZSx0KV19ZnVuY3Rpb24gcihl
LHQpe2lmKCJhdHRycyI9PT10KXt2YXIgcj1lLmdldEF0dHJzKCk7aWYocilyZXR1cm4gcn12YXIg
bj1lLmdldFNlbGYoKXx8ZS5nZXRMb2NhbCgidmlldyIpO2lmKG4pcmV0dXJuIG4uZ2V0S2V5KHQp
O3ZhciBpPWUuZ2V0QXR0cnMoKTtyZXR1cm4gaSYmdCBpbiBpP2lbdF06dm9pZCAwfWUuZGVmYXVs
dD10fSksZSgiZW1iZXItaHRtbGJhcnMvaG9va3MvZ2V0LXZhbHVlIixbImV4cG9ydHMiLCJlbWJl
ci1tZXRhbC9zdHJlYW1zL3V0aWxzIiwiZW1iZXItdmlld3MvY29tcGF0L2F0dHJzLXByb3h5Il0s
ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe3ZhciBuPXQucmVhZChl
KTtyZXR1cm4gbiYmbltyLk1VVEFCTEVfQ0VMTF0/bi52YWx1ZTpufWUuZGVmYXVsdD1ufSksZSgi
ZW1iZXItaHRtbGJhcnMvaG9va3MvaGFzLWhlbHBlciIsWyJleHBvcnRzIiwiZW1iZXItaHRtbGJh
cnMvc3lzdGVtL2xvb2t1cC1oZWxwZXIiXSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiByKGUscixuKXtpZihlLmhlbHBlcnNbbl0pcmV0dXJuITA7dmFyIGk9ZS5vd25lcjtpZih0
LnZhbGlkYXRlTGF6eUhlbHBlck5hbWUobixpLGUuaG9va3Mua2V5d29yZHMpKXt2YXIgbz0iaGVs
cGVyOiIrbjtpZihpLmhhc1JlZ2lzdHJhdGlvbihvKSlyZXR1cm4hMDt2YXIgYT17fSxzPWUubWV0
YSYmZS5tZXRhLm1vZHVsZU5hbWU7aWYocyYmKGEuc291cmNlPSJ0ZW1wbGF0ZToiK3MpLGkuaGFz
UmVnaXN0cmF0aW9uKG8sYSkpcmV0dXJuITB9cmV0dXJuITF9ZS5kZWZhdWx0PXJ9KSxlKCJlbWJl
ci1odG1sYmFycy9ob29rcy9pbnZva2UtaGVscGVyIixbImV4cG9ydHMiLCJlbWJlci1odG1sYmFy
cy9zeXN0ZW0vaW52b2tlLWhlbHBlciIsImVtYmVyLWh0bWxiYXJzL3V0aWxzL3N1YnNjcmliZSJd
LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlLG4saSxvLGEscyx1LGws
Yyl7dmFyIGY9dC5idWlsZEhlbHBlclN0cmVhbSh1LGEscyxsLG4saSk7aWYoZi5saW5rYWJsZSl7
aWYoZSl7Zm9yKHZhciBkPSExLHA9MCxoPWEubGVuZ3RoO3A8aDtwKyspZD0hMCxmLmFkZERlcGVu
ZGVuY3koYVtwXSk7Zm9yKHZhciBtIGluIHMpZD0hMCxmLmFkZERlcGVuZGVuY3koc1ttXSk7ZCYm
ci5kZWZhdWx0KGUsbixpLGYpfXJldHVybntsaW5rOiEwLHZhbHVlOmZ9fXJldHVybnt2YWx1ZTpm
LnZhbHVlKCl9fWUuZGVmYXVsdD1ufSksZSgiZW1iZXItaHRtbGJhcnMvaG9va3MvbGluay1yZW5k
ZXItbm9kZSIsWyJleHBvcnRzIiwiZW1iZXItaHRtbGJhcnMvdXRpbHMvc3Vic2NyaWJlIiwiZW1i
ZXItcnVudGltZS91dGlscyIsImVtYmVyLW1ldGFsL3N0cmVhbXMvdXRpbHMiLCJlbWJlci1odG1s
YmFycy9zeXN0ZW0vbG9va3VwLWhlbHBlciIsImVtYmVyLWh0bWxiYXJzL2tleXdvcmRzL2Nsb3N1
cmUtY29tcG9uZW50Il0sZnVuY3Rpb24oZSx0LHIsbixpLG8peyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biBhKGUscixuLGEsdSxsKXtpZihlLnN0cmVhbVVuc3Vic2NyaWJlcnMpcmV0dXJuITA7dmFyIGM9
ci5ob29rcy5rZXl3b3Jkc1thXTtpZihjJiZjLmxpbmspYy5saW5rKGUuZ2V0U3RhdGUoKSx1LGwp
O2Vsc2V7aWYoInVuYm91bmQiPT09YSlyZXR1cm4hMDtzKGEsdSl9aWYoaS5DT05UQUlOU19ET1Rf
Q0FDSEUuZ2V0KGEpKXt2YXIgZj1yLmhvb2tzLmdldChyLG4sYSksZD1mLnZhbHVlKCk7aWYoby5p
c0NvbXBvbmVudENlbGwoZCkpe3ZhciBwPW8ubWVyZ2VJbk5ld0hhc2goZFtvLkNPTVBPTkVOVF9I
QVNIXSxsKTtmb3IodmFyIGggaW4gcCl0LmRlZmF1bHQoZSxyLG4scFtoXSl9fWlmKHUmJnUubGVu
Z3RoKWZvcih2YXIgbT0wO208dS5sZW5ndGg7bSsrKXQuZGVmYXVsdChlLHIsbix1W21dKTtpZihs
KWZvcih2YXIgaCBpbiBsKXQuZGVmYXVsdChlLHIsbixsW2hdKTtyZXR1cm4hMH1mdW5jdGlvbiBz
KGUsdCl7c3dpdGNoKGUpe2Nhc2UidW5sZXNzIjpjYXNlImlmIjp0WzBdPWwodFswXSxjKTticmVh
aztjYXNlImVhY2giOnRbMF09dSh0WzBdKTticmVhaztjYXNlIndpdGgiOnRbMF09bCh0WzBdLGYp
fX1mdW5jdGlvbiB1KGUpe3ZhciB0PWQoZSwiW10iKSxyPW4uY2hhaW4oZSxmdW5jdGlvbigpe3Jl
dHVybiBuLnJlYWQodCksbi5yZWFkKGUpfSwiZWFjaCIpO3JldHVybiByLmFkZERlcGVuZGVuY3ko
dCkscn1mdW5jdGlvbiBsKGUsdCl7dmFyIGk9ZChlLCJsZW5ndGgiKSxvPWQoZSwiaXNUcnV0aHki
KSxhPW4uY2hhaW4oZSxmdW5jdGlvbigpe3ZhciBhPW4ucmVhZChlKSxzPW4ucmVhZChpKSx1PW4u
cmVhZChvKTtyZXR1cm4gci5pc0FycmF5KGEpP3M+MCYmdChhKToiYm9vbGVhbiI9PXR5cGVvZiB1
PyEhdSYmdChhKTp0KGEpfSwiU2hvdWxkRGlzcGxheSIpO3JldHVybiBuLmFkZERlcGVuZGVuY3ko
YSxpKSxuLmFkZERlcGVuZGVuY3koYSxvKSxhfWZ1bmN0aW9uIGMoZSl7cmV0dXJuISFlfWZ1bmN0
aW9uIGYoZSl7cmV0dXJuIGV9ZnVuY3Rpb24gZChlLHQpe3JldHVybiBuLmlzU3RyZWFtKGUpP2Uu
Z2V0S2V5KHQpOmUmJmVbdF19ZS5kZWZhdWx0PWEsZS5saW5rUGFyYW1zRm9yPXN9KSxlKCJlbWJl
ci1odG1sYmFycy9ob29rcy9sb29rdXAtaGVscGVyIixbImV4cG9ydHMiLCJlbWJlci1odG1sYmFy
cy9zeXN0ZW0vbG9va3VwLWhlbHBlciJdLGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIoZSxyLG4pe3JldHVybiB0LmRlZmF1bHQobixyLmdldFNlbGYoKSxlKX1lLmRlZmF1bHQ9
cn0pLGUoImVtYmVyLWh0bWxiYXJzL2hvb2tzL3N1YmV4cHIiLFsiZXhwb3J0cyIsImVtYmVyLWh0
bWxiYXJzL3N5c3RlbS9sb29rdXAtaGVscGVyIiwiZW1iZXItaHRtbGJhcnMvc3lzdGVtL2ludm9r
ZS1oZWxwZXIiLCJlbWJlci1tZXRhbC9zdHJlYW1zL3V0aWxzIiwiZW1iZXItaHRtbGJhcnMvaG9v
a3MvbGluay1yZW5kZXItbm9kZSJdLGZ1bmN0aW9uKGUsdCxyLG4saSl7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIG8oZSxuLG8scyx1KXt2YXIgbD1lLmhvb2tzLmtleXdvcmRzW29dO2lmKGwpcmV0dXJu
IGwobnVsbCxlLG4scyx1LG51bGwsbnVsbCk7aS5saW5rUGFyYW1zRm9yKG8scyk7Zm9yKHZhciBj
PWEocyx1LG8pLGY9dC5kZWZhdWx0KG8sbi5nZXRTZWxmKCksZSksZD1yLmJ1aWxkSGVscGVyU3Ry
ZWFtKGYscyx1LG51bGwsZSxuLGMpLHA9MCxoPXMubGVuZ3RoO3A8aDtwKyspZC5hZGREZXBlbmRl
bmN5KHNbcF0pO2Zvcih2YXIgbSBpbiB1KWQuYWRkRGVwZW5kZW5jeSh1W21dKTtyZXR1cm4gZH1m
dW5jdGlvbiBhKGUsdCxyKXt2YXIgbj1zKGUpLGk9dSh0KSxvPSIoIityO3JldHVybiBuJiYobys9
IiAiK24pLGkmJihvKz0iICIraSksbysiKSJ9ZnVuY3Rpb24gcyhlKXtyZXR1cm4gbi5sYWJlbHNG
b3IoZSkuam9pbigiICIpfWZ1bmN0aW9uIHUoZSl7dmFyIHQ9W107Zm9yKHZhciByIGluIGUpdC5w
dXNoKHIrIj0iK24ubGFiZWxGb3IoZVtyXSkpO3JldHVybiB0LmpvaW4oIiAiKX1lLmRlZmF1bHQ9
byxlLmxhYmVsRm9yU3ViZXhwcj1hfSksZSgiZW1iZXItaHRtbGJhcnMvaG9va3MvdXBkYXRlLXNl
bGYiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL2RlYnVnIiwiZW1iZXItbWV0YWwvcHJvcGVydHlf
Z2V0Il0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUsdCxuKXt2YXIg
aT1uO2lmKGkmJmkuaGFzQm91bmRDb250cm9sbGVyKXt2YXIgbz1pLGE9by5jb250cm9sbGVyO2k9
aS5zZWxmLHQudXBkYXRlTG9jYWwoImNvbnRyb2xsZXIiLGF8fGkpfXJldHVybiBpJiZpLmlzVmll
dz8odC51cGRhdGVMb2NhbCgidmlldyIsaSksdm9pZCB0LnVwZGF0ZVNlbGYoci5nZXQoaSwiY29u
dGV4dCIpLCIiKSk6dm9pZCB0LnVwZGF0ZVNlbGYoaSl9ZS5kZWZhdWx0PW59KSxlKCJlbWJlci1o
dG1sYmFycy9ob29rcy93aWxsLWNsZWFudXAtdHJlZSIsWyJleHBvcnRzIl0sZnVuY3Rpb24oZSl7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHQoZSl7dmFyIHQ9ZS52aWV3O3Qub3duZXJWaWV3Ll9kZXN0
cm95aW5nU3VidHJlZUZvclZpZXc9dH1lLmRlZmF1bHQ9dH0pLGUoImVtYmVyLWh0bWxiYXJzL2lu
ZGV4IixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9jb3JlIiwiZW1iZXItdGVtcGxhdGUtY29tcGls
ZXIiLCJlbWJlci1odG1sYmFycy9zeXN0ZW0vbWFrZV9ib3VuZF9oZWxwZXIiLCJlbWJlci1odG1s
YmFycy9oZWxwZXJzIiwiZW1iZXItaHRtbGJhcnMvaGVscGVycy9pZl91bmxlc3MiLCJlbWJlci1o
dG1sYmFycy9oZWxwZXJzL3dpdGgiLCJlbWJlci1odG1sYmFycy9oZWxwZXJzL2xvYyIsImVtYmVy
LWh0bWxiYXJzL2hlbHBlcnMvbG9nIiwiZW1iZXItaHRtbGJhcnMvaGVscGVycy9lYWNoIiwiZW1i
ZXItaHRtbGJhcnMvaGVscGVycy9lYWNoLWluIiwiZW1iZXItaHRtbGJhcnMvaGVscGVycy8tbm9y
bWFsaXplLWNsYXNzIiwiZW1iZXItaHRtbGJhcnMvaGVscGVycy9jb25jYXQiLCJlbWJlci1odG1s
YmFycy9oZWxwZXJzLy1qb2luLWNsYXNzZXMiLCJlbWJlci1odG1sYmFycy9oZWxwZXJzLy1odG1s
LXNhZmUiLCJlbWJlci1odG1sYmFycy9oZWxwZXJzL2hhc2giLCJlbWJlci1odG1sYmFycy9zeXN0
ZW0vZG9tLWhlbHBlciIsImVtYmVyLWh0bWxiYXJzL2hlbHBlciIsImVtYmVyLWh0bWxiYXJzL3Rl
bXBsYXRlX3JlZ2lzdHJ5IiwiZW1iZXItaHRtbGJhcnMvc3lzdGVtL2Jvb3RzdHJhcCIsImVtYmVy
LWh0bWxiYXJzL2NvbXBhdCJdLGZ1bmN0aW9uKGUsdCxyLG4saSxvLGEscyx1LGwsYyxmLGQscCxo
LG0sdixiLGcseSxfKXsidXNlIHN0cmljdCI7aS5yZWdpc3RlckhlbHBlcigiaWYiLG8uaWZIZWxw
ZXIpLGkucmVnaXN0ZXJIZWxwZXIoInVubGVzcyIsby51bmxlc3NIZWxwZXIpLGkucmVnaXN0ZXJI
ZWxwZXIoIndpdGgiLGEuZGVmYXVsdCksaS5yZWdpc3RlckhlbHBlcigibG9jIixzLmRlZmF1bHQp
LGkucmVnaXN0ZXJIZWxwZXIoImxvZyIsdS5kZWZhdWx0KSxpLnJlZ2lzdGVySGVscGVyKCJlYWNo
IixsLmRlZmF1bHQpLGkucmVnaXN0ZXJIZWxwZXIoImVhY2gtaW4iLGMuZGVmYXVsdCksaS5yZWdp
c3RlckhlbHBlcigiLW5vcm1hbGl6ZS1jbGFzcyIsZi5kZWZhdWx0KSxpLnJlZ2lzdGVySGVscGVy
KCJjb25jYXQiLGQuZGVmYXVsdCksaS5yZWdpc3RlckhlbHBlcigiLWpvaW4tY2xhc3NlcyIscC5k
ZWZhdWx0KSxpLnJlZ2lzdGVySGVscGVyKCItaHRtbC1zYWZlIixoLmRlZmF1bHQpLGkucmVnaXN0
ZXJIZWxwZXIoImhhc2giLG0uZGVmYXVsdCksdC5kZWZhdWx0LkhUTUxCYXJzPXt0ZW1wbGF0ZTpy
LnRlbXBsYXRlLGNvbXBpbGU6ci5jb21waWxlLHByZWNvbXBpbGU6ci5wcmVjb21waWxlLG1ha2VC
b3VuZEhlbHBlcjpuLmRlZmF1bHQscmVnaXN0ZXJQbHVnaW46ci5yZWdpc3RlclBsdWdpbixET01I
ZWxwZXI6di5kZWZhdWx0fSxiLmRlZmF1bHQuaGVscGVyPWIuaGVscGVyLHQuZGVmYXVsdC5IZWxw
ZXI9Yi5kZWZhdWx0LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LmRlZmF1bHQsIlRFTVBMQVRFUyIs
e2NvbmZpZ3VyYWJsZTohMSxnZXQ6Zy5nZXRUZW1wbGF0ZXMsc2V0Omcuc2V0VGVtcGxhdGVzfSl9
KSxlKCJlbWJlci1odG1sYmFycy9rZXl3b3JkcyIsWyJleHBvcnRzIiwiaHRtbGJhcnMtcnVudGlt
ZSJdLGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXtuW2VdPXR9ZS5y
ZWdpc3RlcktleXdvcmQ9cjt2YXIgbj1PYmplY3QuY3JlYXRlKHQuaG9va3Mua2V5d29yZHMpO2Uu
ZGVmYXVsdD1ufSksZSgiZW1iZXItaHRtbGJhcnMva2V5d29yZHMvY2xvc3VyZS1jb21wb25lbnQi
LFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL2RlYnVnIiwiZW1iZXItbWV0YWwvaXNfbm9uZSIsImVt
YmVyLW1ldGFsL3N5bWJvbCIsImVtYmVyLW1ldGFsL3N0cmVhbXMvc3RyZWFtIiwiZW1iZXItbWV0
YWwvZW1wdHlfb2JqZWN0IiwiZW1iZXItbWV0YWwvc3RyZWFtcy91dGlscyIsImVtYmVyLWh0bWxi
YXJzL2hvb2tzL3N1YmV4cHIiLCJlbWJlci1tZXRhbC9hc3NpZ24iLCJlbWJlci1odG1sYmFycy91
dGlscy9leHRyYWN0LXBvc2l0aW9uYWwtcGFyYW1zIiwiZW1iZXItaHRtbGJhcnMvdXRpbHMvbG9v
a3VwLWNvbXBvbmVudCJdLGZ1bmN0aW9uKGUsdCxyLG4saSxvLGEscyx1LGwsYyl7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIGYoZSx0LHIpe3ZhciBuPXRbMF0saT10LnNsaWNlKDEpLG89bmV3IEMoZSxu
LGkscik7cmV0dXJuIG8uYWRkRGVwZW5kZW5jeShuKSxpLmZvckVhY2goZnVuY3Rpb24oZSl7cmV0
dXJuIG8uYWRkRGVwZW5kZW5jeShlKX0pLE9iamVjdC5rZXlzKHIpLmZvckVhY2goZnVuY3Rpb24o
ZSl7cmV0dXJuIG8uYWRkRGVwZW5kZW5jeShyW2VdKX0pLG99ZnVuY3Rpb24gZChlLHQscixuLGkp
e3ZhciBzPWEucmVhZCh0KSxsPXUuZGVmYXVsdChuZXcgby5kZWZhdWx0LG4pO3JldHVybiBwKHMp
P2gocyxyLGwpOnYoZSxzLHIsbCl9ZnVuY3Rpb24gcChlKXtyZXR1cm4gZSYmZVtfXX1mdW5jdGlv
biBoKGUsdCxyKXt2YXIgbjtyZXR1cm4gbShlLHQsciksbj17fSxuW3ddPWVbd10sbltrXT1nKGVb
a10sciksblt4XT1lW3hdLG5bX109ITAsbn1mdW5jdGlvbiBtKGUsdCxyKXt2YXIgbj1lW3hdO2wu
cHJvY2Vzc1Bvc2l0aW9uYWxQYXJhbXMobnVsbCxuLHQscil9ZnVuY3Rpb24gdihlLHQscixuKXt2
YXIgaSxvPWIoZS5vd25lcix0KTtyZXR1cm4gbC5wcm9jZXNzUG9zaXRpb25hbFBhcmFtcyhudWxs
LG8scixuKSxpPXt9LGlbd109dCxpW2tdPW4saVt4XT1vLGlbX109ITAsaX1mdW5jdGlvbiBiKGUs
dCl7aWYoIXQpcmV0dXJuW107dmFyIHI9Yy5kZWZhdWx0KGUsdCksbj1yLmNvbXBvbmVudDtyZXR1
cm4gbiYmbi5wb3NpdGlvbmFsUGFyYW1zP24ucG9zaXRpb25hbFBhcmFtczpbXX1mdW5jdGlvbiBn
KGUsdCl7cmV0dXJuIHUuZGVmYXVsdCh7fSxlLHQpfWUuZGVmYXVsdD1mLGUuaXNDb21wb25lbnRD
ZWxsPXAsZS5wcm9jZXNzUG9zaXRpb25hbFBhcmFtc0Zyb21DZWxsPW0sZS5tZXJnZUluTmV3SGFz
aD1nO3ZhciB5PW4uZGVmYXVsdCgiQ09NUE9ORU5UX1JFRkVSRU5DRSIpO2UuQ09NUE9ORU5UX1JF
RkVSRU5DRT15O3ZhciBfPW4uZGVmYXVsdCgiQ09NUE9ORU5UX0NFTEwiKTtlLkNPTVBPTkVOVF9D
RUxMPV87dmFyIHc9bi5kZWZhdWx0KCJDT01QT05FTlRfUEFUSCIpO2UuQ09NUE9ORU5UX1BBVEg9
dzt2YXIgeD1uLmRlZmF1bHQoIkNPTVBPTkVOVF9QT1NJVElPTkFMX1BBUkFNUyIpO2UuQ09NUE9O
RU5UX1BPU0lUSU9OQUxfUEFSQU1TPXg7dmFyIGs9bi5kZWZhdWx0KCJDT01QT05FTlRfSEFTSCIp
O2UuQ09NUE9ORU5UX0hBU0g9azt2YXIgQz1pLmRlZmF1bHQuZXh0ZW5kKHtpbml0OmZ1bmN0aW9u
KGUsdCxyLG4pe3RoaXMuX2Vudj1lLHRoaXMuX3BhdGg9dCx0aGlzLl9wYXJhbXM9cix0aGlzLl9o
YXNoPW4sdGhpcy5sYWJlbD1zLmxhYmVsRm9yU3ViZXhwcihbdF0uY29uY2F0KHIpLG4sImNvbXBv
bmVudCIpLHRoaXNbeV09ITB9LGNvbXB1dGU6ZnVuY3Rpb24oKXtyZXR1cm4gZCh0aGlzLl9lbnYs
dGhpcy5fcGF0aCx0aGlzLl9wYXJhbXMsdGhpcy5faGFzaCx0aGlzLmxhYmVsKX19KX0pLGUoImVt
YmVyLWh0bWxiYXJzL2tleXdvcmRzL2NvbXBvbmVudCIsWyJleHBvcnRzIiwiaHRtbGJhcnMtcnVu
dGltZS9ob29rcyIsImVtYmVyLWh0bWxiYXJzL2tleXdvcmRzL2Nsb3N1cmUtY29tcG9uZW50Iiwi
ZW1iZXItbWV0YWwvZW1wdHlfb2JqZWN0IiwiZW1iZXItbWV0YWwvYXNzaWduIl0sZnVuY3Rpb24o
ZSx0LHIsbixpKXsidXNlIHN0cmljdCI7ZS5kZWZhdWx0PWZ1bmN0aW9uKGUsbyxhLHMsdSxsLGMs
Zil7aWYoIWUpcmV0dXJuIHIuZGVmYXVsdChvLHMsdSk7dmFyIGQ9aS5kZWZhdWx0KG5ldyBuLmRl
ZmF1bHQsdSk7cmV0dXJuIHQua2V5d29yZCgiQGVsZW1lbnRfY29tcG9uZW50IixlLG8sYSxzLGQs
bCxjLGYpLCEwfX0pLGUoImVtYmVyLWh0bWxiYXJzL2tleXdvcmRzL2RlYnVnZ2VyIixbImV4cG9y
dHMiLCJlbWJlci1tZXRhbC9kZWJ1ZyJdLGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIoZSx0LHIpe3QuaG9va3MuZ2V0VmFsdWUoci5nZXRMb2NhbCgidmlldyIpKSx0Lmhvb2tz
LmdldFZhbHVlKHIuZ2V0U2VsZigpKTtyZXR1cm4hMH1lLmRlZmF1bHQ9cn0pLGUoImVtYmVyLWh0
bWxiYXJzL2tleXdvcmRzL2VsZW1lbnQtY29tcG9uZW50IixbImV4cG9ydHMiLCJlbWJlci1tZXRh
bC9hc3NpZ24iLCJlbWJlci1odG1sYmFycy9rZXl3b3Jkcy9jbG9zdXJlLWNvbXBvbmVudCIsImVt
YmVyLWh0bWxiYXJzL3V0aWxzL2xvb2t1cC1jb21wb25lbnQiLCJlbWJlci1odG1sYmFycy91dGls
cy9leHRyYWN0LXBvc2l0aW9uYWwtcGFyYW1zIl0sZnVuY3Rpb24oZSx0LHIsbixpKXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gbyhlLHQpe3ZhciBuPXQuaG9va3MuZ2V0VmFsdWUoZSk7cmV0dXJuIHIu
aXNDb21wb25lbnRDZWxsKG4pJiYobj1uW3IuQ09NUE9ORU5UX1BBVEhdKSxufWZ1bmN0aW9uIGEo
ZSx0LG8sYSxzLHUsbCxjKXt2YXIgZj1hWzBdLGQ9YS5zbGljZSgxKSxwPSEoYXJndW1lbnRzLmxl
bmd0aDw9OHx8dm9pZCAwPT09YXJndW1lbnRzWzhdKSYmYXJndW1lbnRzWzhdLGg9ZS5nZXRTdGF0
ZSgpLG09aC5jb21wb25lbnRQYXRoO2lmKHZvaWQgMCE9PW0mJm51bGwhPT1tKXtpZihmPXQuaG9v
a3MuZ2V0VmFsdWUoZikscCl7dmFyIHY9bi5kZWZhdWx0KHQub3duZXIsbSksYj12LmNvbXBvbmVu
dDtpLmRlZmF1bHQobnVsbCxiLGQscyl9aWYoci5pc0NvbXBvbmVudENlbGwoZikpe3ZhciBnPXQu
aG9va3MuZ2V0VmFsdWUoZik7ci5wcm9jZXNzUG9zaXRpb25hbFBhcmFtc0Zyb21DZWxsKGcsZCxz
KSxkPVtdLHM9ci5tZXJnZUluTmV3SGFzaChnW3IuQ09NUE9ORU5UX0hBU0hdLHMpfXZhciB5PXtk
ZWZhdWx0OnUsaW52ZXJzZTpsfTt0Lmhvb2tzLmNvbXBvbmVudChlLHQsbyxtLGQscyx5LGMpfX1l
LmRlZmF1bHQ9e3NldHVwU3RhdGU6ZnVuY3Rpb24oZSxyLG4saSxhKXt2YXIgcz1vKGlbMF0scik7
cmV0dXJuIHQuZGVmYXVsdCh7fSxlLHtjb21wb25lbnRQYXRoOnMsaXNDb21wb25lbnRIZWxwZXI6
ITB9KX0scmVuZGVyOmZ1bmN0aW9uKGUpe3ZhciB0PWUuZ2V0U3RhdGUoKTt0Lm1hbmFnZXImJnQu
bWFuYWdlci5kZXN0cm95KCksdC5tYW5hZ2VyPW51bGw7Zm9yKHZhciByPWFyZ3VtZW50cy5sZW5n
dGgsbj1BcnJheShyPjE/ci0xOjApLGk9MTtpPHI7aSsrKW5baS0xXT1hcmd1bWVudHNbaV07YS5h
cHBseSh2b2lkIDAsW2VdLmNvbmNhdChuKSl9LHJlcmVuZGVyOmF9fSksZSgiZW1iZXItaHRtbGJh
cnMva2V5d29yZHMvZ2V0IixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9kZWJ1ZyIsImVtYmVyLW1l
dGFsL3N0cmVhbXMvc3RyZWFtIiwiZW1iZXItbWV0YWwvc3RyZWFtcy91dGlscyIsImVtYmVyLWh0
bWxiYXJzL3V0aWxzL3N1YnNjcmliZSIsImVtYmVyLW1ldGFsL3Byb3BlcnR5X2dldCIsImVtYmVy
LW1ldGFsL3Byb3BlcnR5X3NldCIsImVtYmVyLW1ldGFsL29ic2VydmVyIl0sZnVuY3Rpb24oZSx0
LHIsbixpLG8sYSxzKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gdShlLHQpe3ZhciByPWUubGFiZWw/
ZS5sYWJlbDoiIixuPXQubGFiZWw/dC5sYWJlbDoiIjtyZXR1cm4iKGdldCAiK3IrIiAiK24rIiki
fWZ1bmN0aW9uIGwoZSx0KXtyZXR1cm4gbi5pc1N0cmVhbSh0KT9uZXcgZihlLHQpOmUuZ2V0KHQp
fWZ1bmN0aW9uIGMoZSx0LHIsbixvLGEscyx1KXtpZihudWxsPT09ZSlyZXR1cm4gZChuKTt2YXIg
bD12b2lkIDA7cmV0dXJuIGUubGlua2VkUmVzdWx0P2w9ZS5saW5rZWRSZXN1bHQ6KGw9ZChuKSxp
LmRlZmF1bHQoZSx0LHIsbCksdC5ob29rcy5saW5rUmVuZGVyTm9kZShlLHQscixudWxsLG4sbyks
ZS5saW5rZWRSZXN1bHQ9bCksdC5ob29rcy5yYW5nZShlLHQscixudWxsLGwsdSksITB9dmFyIGY9
ci5kZWZhdWx0LmV4dGVuZCh7aW5pdDpmdW5jdGlvbihlLHQpe3ZhciByPXUoZSx0KTt0aGlzLmxh
YmVsPXIsdGhpcy5wYXRoPXIsdGhpcy5zb3VyY2VEZXA9dGhpcy5hZGRNdXRhYmxlRGVwZW5kZW5j
eShlKSx0aGlzLmtleURlcD10aGlzLmFkZE11dGFibGVEZXBlbmRlbmN5KHQpLHRoaXMub2JzZXJ2
ZWRPYmplY3Q9bnVsbCx0aGlzLm9ic2VydmVkS2V5PW51bGx9LGtleTpmdW5jdGlvbigpe3ZhciBl
PXRoaXMua2V5RGVwLmdldFZhbHVlKCk7aWYoInN0cmluZyI9PXR5cGVvZiBlKXJldHVybiBlfSxj
b21wdXRlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5zb3VyY2VEZXAuZ2V0VmFsdWUoKSx0PXRoaXMu
a2V5KCk7aWYoZSYmdClyZXR1cm4gby5nZXQoZSx0KX0sc2V0VmFsdWU6ZnVuY3Rpb24oZSl7dmFy
IHQ9dGhpcy5zb3VyY2VEZXAuZ2V0VmFsdWUoKSxyPXRoaXMua2V5KCk7dCYmYS5zZXQodCxyLGUp
fSxfc3VwZXIkcmV2YWxpZGF0ZTpyLmRlZmF1bHQucHJvdG90eXBlLnJldmFsaWRhdGUscmV2YWxp
ZGF0ZTpmdW5jdGlvbihlKXt0aGlzLl9zdXBlciRyZXZhbGlkYXRlKGUpO3ZhciB0PXRoaXMuc291
cmNlRGVwLmdldFZhbHVlKCkscj10aGlzLmtleSgpO3Q9PT10aGlzLm9ic2VydmVkT2JqZWN0JiZy
PT09dGhpcy5vYnNlcnZlZEtleXx8KHRoaXMuX2NsZWFyT2JzZXJ2ZWRPYmplY3QoKSx0JiYib2Jq
ZWN0Ij09dHlwZW9mIHQmJnImJihzLmFkZE9ic2VydmVyKHQscix0aGlzLHRoaXMubm90aWZ5KSx0
aGlzLm9ic2VydmVkT2JqZWN0PXQsdGhpcy5vYnNlcnZlZEtleT1yKSl9LF9jbGVhck9ic2VydmVk
T2JqZWN0OmZ1bmN0aW9uKCl7dGhpcy5vYnNlcnZlZE9iamVjdCYmKHMucmVtb3ZlT2JzZXJ2ZXIo
dGhpcy5vYnNlcnZlZE9iamVjdCx0aGlzLm9ic2VydmVkS2V5LHRoaXMsdGhpcy5ub3RpZnkpLHRo
aXMub2JzZXJ2ZWRPYmplY3Q9bnVsbCx0aGlzLm9ic2VydmVkS2V5PW51bGwpfX0pLGQ9ZnVuY3Rp
b24oZSl7dmFyIHQ9ZVswXSxyPWVbMV0sbj1sKHQscik7cmV0dXJuIG59O2UuZGVmYXVsdD1jfSks
ZSgiZW1iZXItaHRtbGJhcnMva2V5d29yZHMvaW5wdXQiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFs
L2RlYnVnIiwiZW1iZXItbWV0YWwvYXNzaWduIl0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0
IjtlLmRlZmF1bHQ9e3NldHVwU3RhdGU6ZnVuY3Rpb24oZSx0LG8sYSxzKXt2YXIgdT10Lmhvb2tz
LmdldFZhbHVlKHMudHlwZSksbD1pW3VdfHxuO3JldHVybiByLmRlZmF1bHQoe30sZSx7Y29tcG9u
ZW50TmFtZTpsfSl9LHJlbmRlcjpmdW5jdGlvbihlLHQscixuLGksbyxhLHMpe3QuaG9va3MuY29t
cG9uZW50KGUsdCxyLGUuZ2V0U3RhdGUoKS5jb21wb25lbnROYW1lLG4saSx7ZGVmYXVsdDpvLGlu
dmVyc2U6YX0scyl9LHJlcmVuZGVyOmZ1bmN0aW9uKCl7dGhpcy5yZW5kZXIuYXBwbHkodGhpcyxh
cmd1bWVudHMpfX07dmFyIG49Ii10ZXh0LWZpZWxkIixpPXtjaGVja2JveDoiLWNoZWNrYm94In19
KSxlKCJlbWJlci1odG1sYmFycy9rZXl3b3Jkcy9tdXQiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFs
L2RlYnVnIiwiZW1iZXItbWV0YWwvc3ltYm9sIiwiZW1iZXItbWV0YWwvc3RyZWFtcy9wcm94eS1z
dHJlYW0iLCJlbWJlci1tZXRhbC9zdHJlYW1zL3N0cmVhbSIsImVtYmVyLW1ldGFsL3N0cmVhbXMv
dXRpbHMiLCJlbWJlci12aWV3cy9jb21wYXQvYXR0cnMtcHJveHkiLCJlbWJlci1yb3V0aW5nLWh0
bWxiYXJzL2tleXdvcmRzL2Nsb3N1cmUtYWN0aW9uIl0sZnVuY3Rpb24oZSx0LHIsbixpLG8sYSxz
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gdShlLHQscixuLGksbyxhKXtpZihudWxsPT09ZSl7dmFy
IHM9blswXTtyZXR1cm4gYyh0Lmhvb2tzLmdldFZhbHVlLHMpfXJldHVybiEwfWZ1bmN0aW9uIGwo
ZSx0LHIsbixpLG8sYSl7aWYobnVsbD09PWUpe3ZhciBzPW5bMF07cmV0dXJuIGModC5ob29rcy5n
ZXRWYWx1ZSxzLCEwKX1yZXR1cm4hMH1mdW5jdGlvbiBjKGUsdCxyKXtpZihyJiYhby5pc1N0cmVh
bSh0KSl7dmFyIG49dDt0PW5ldyBoKG4pfXJldHVybiB0W2RdP3Q6bmV3IHAodCl9dmFyIGY7ZS5k
ZWZhdWx0PXUsZS5wcml2YXRlTXV0PWw7dmFyIGQ9ci5kZWZhdWx0KCJNVVRBQkxFX1JFRkVSRU5D
RSIpO2UuTVVUQUJMRV9SRUZFUkVOQ0U9ZDt2YXIgcD1uLmRlZmF1bHQuZXh0ZW5kKChmPXtpbml0
OmZ1bmN0aW9uKGUpe3RoaXMubGFiZWw9IihtdXQgIitlLmxhYmVsKyIpIix0aGlzLnBhdGg9ZS5w
YXRoLHRoaXMuc291cmNlRGVwPXRoaXMuYWRkTXV0YWJsZURlcGVuZGVuY3koZSksdGhpc1tkXT0h
MH0sY2VsbDpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1lLnZhbHVlKCk7aWYodCYmdFtzLkFDVElP
Tl0pcmV0dXJuIHQ7dmFyIHI9e3ZhbHVlOnQsdXBkYXRlOmZ1bmN0aW9uKHQpe2Uuc2V0VmFsdWUo
dCl9fTtyZXR1cm4gclthLk1VVEFCTEVfQ0VMTF09ITAscn19LGZbcy5JTlZPS0VdPWZ1bmN0aW9u
KGUpe3RoaXMuc2V0VmFsdWUoZSl9LGYpKSxoPWkuZGVmYXVsdC5leHRlbmQoe2luaXQ6ZnVuY3Rp
b24oZSl7dGhpcy5saXRlcmFsPWUsdGhpcy5sYWJlbD0iKGxpdGVyYWwgIitlKyIpIn0sY29tcHV0
ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmxpdGVyYWx9LHNldFZhbHVlOmZ1bmN0aW9uKGUpe3Ro
aXMubGl0ZXJhbD1lLHRoaXMubm90aWZ5KCl9fSl9KSxlKCJlbWJlci1odG1sYmFycy9rZXl3b3Jk
cy9vdXRsZXQiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL2RlYnVnIiwiZW1iZXItbWV0YWwvcHJv
cGVydHlfZ2V0IiwiZW1iZXItaHRtbGJhcnMvbm9kZS1tYW5hZ2Vycy92aWV3LW5vZGUtbWFuYWdl
ciIsImVtYmVyLWh0bWxiYXJzL3RlbXBsYXRlcy90b3AtbGV2ZWwtdmlldyIsImVtYmVyLW1ldGFs
L2ZlYXR1cmVzIl0sZnVuY3Rpb24oZSx0LHIsbixpLG8peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBh
KGUpe3JldHVybiFlfHwhZS5yZW5kZXIuVmlld0NsYXNzJiYhZS5yZW5kZXIudGVtcGxhdGV9ZnVu
Y3Rpb24gcyhlLHQpe2lmKCFlJiYhdClyZXR1cm4hMDtpZighZXx8IXQpcmV0dXJuITE7ZT1lLnJl
bmRlcix0PXQucmVuZGVyO2Zvcih2YXIgciBpbiBlKWlmKGUuaGFzT3duUHJvcGVydHkocikmJmVb
cl0hPT10W3JdJiYibmFtZSIhPT1yKXJldHVybiExO3JldHVybiEwfWkuZGVmYXVsdC5tZXRhLnJl
dmlzaW9uPSJFbWJlckAyLjYuMiIsZS5kZWZhdWx0PXt3aWxsUmVuZGVyOmZ1bmN0aW9uKGUsdCl7
dC52aWV3Lm93bmVyVmlldy5fb3V0bGV0cy5wdXNoKGUpfSxzZXR1cFN0YXRlOmZ1bmN0aW9uKGUs
dCxyLG4saSl7dmFyIG89dC5vdXRsZXRTdGF0ZSxhPXQuaG9va3MuZ2V0VmFsdWUscz1hKG5bMF0p
fHwibWFpbiIsdT1vW3NdO3JldHVybntvdXRsZXRTdGF0ZTp1LGhhc1BhcmVudE91dGxldDp0Lmhh
c1BhcmVudE91dGxldCxtYW5hZ2VyOmUubWFuYWdlcn19LGNoaWxkRW52OmZ1bmN0aW9uKGUsdCl7
dmFyIHI9ZS5vdXRsZXRTdGF0ZSxuPXImJnIucmVuZGVyLGk9biYmbi50ZW1wbGF0ZSYmbi50ZW1w
bGF0ZS5tZXRhO3JldHVybiB0LmNoaWxkV2l0aE91dGxldFN0YXRlKHImJnIub3V0bGV0cywhMCxp
KX0saXNTdGFibGU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gcyhlLm91dGxldFN0YXRlLHQub3V0bGV0
U3RhdGUpfSxpc0VtcHR5OmZ1bmN0aW9uKGUpe3JldHVybiBhKGUub3V0bGV0U3RhdGUpfSxyZW5k
ZXI6ZnVuY3Rpb24oZSx0LGksbyxhLHMsdSxsKXt2YXIgYz1lLmdldFN0YXRlKCksZj10LnZpZXcs
ZD1jLm91dGxldFN0YXRlLHA9ZC5yZW5kZXIsaD10Lm93bmVyLmxvb2t1cCgiYXBwbGljYXRpb246
bWFpbiIpLG09KHIuZ2V0KGgsIkxPR19WSUVXX0xPT0tVUFMiKSxkLnJlbmRlci5WaWV3Q2xhc3Mp
O2MuaGFzUGFyZW50T3V0bGV0fHxtfHwobT10Lm93bmVyLl9sb29rdXBGYWN0b3J5KCJ2aWV3OnRv
cGxldmVsIikpO3ZhciB2LGIsZz17fTt2PyhiPXtjb21wb25lbnQ6dn0sZz1wLmF0dHJzKTooYj17
Y29tcG9uZW50Om0sc2VsZjpwLmNvbnRyb2xsZXIsY3JlYXRlT3B0aW9uczp7Y29udHJvbGxlcjpw
LmNvbnRyb2xsZXJ9fSxzPXN8fHAudGVtcGxhdGUmJnAudGVtcGxhdGUucmF3KSxjLm1hbmFnZXIm
JihjLm1hbmFnZXIuZGVzdHJveSgpLGMubWFuYWdlcj1udWxsKTt2YXIgeT1uLmRlZmF1bHQuY3Jl
YXRlKGUsdCxnLGIsZixudWxsLG51bGwscyk7Yy5tYW5hZ2VyPXkseS5yZW5kZXIodCxhLGwpfX19
KSxlKCJlbWJlci1odG1sYmFycy9rZXl3b3Jkcy9wYXJ0aWFsIixbImV4cG9ydHMiLCJlbWJlci12
aWV3cy9zeXN0ZW0vbG9va3VwX3BhcnRpYWwiLCJodG1sYmFycy1ydW50aW1lIl0sZnVuY3Rpb24o
ZSx0LHIpeyJ1c2Ugc3RyaWN0IjtlLmRlZmF1bHQ9e3NldHVwU3RhdGU6ZnVuY3Rpb24oZSx0LHIs
bixpKXtyZXR1cm57cGFydGlhbE5hbWU6dC5ob29rcy5nZXRWYWx1ZShuWzBdKX19LHJlbmRlcjpm
dW5jdGlvbihlLG4saSxvLGEscyx1LGwpe3ZhciBjPWUuZ2V0U3RhdGUoKTtpZighYy5wYXJ0aWFs
TmFtZSlyZXR1cm4hMDt2YXIgZj10LmRlZmF1bHQobixjLnBhcnRpYWxOYW1lKTtyZXR1cm4hZnx8
dm9pZCByLmludGVybmFsLmhvc3RCbG9jayhlLG4saSxmLnJhdyxudWxsLG51bGwsbCxmdW5jdGlv
bihlKXtlLnRlbXBsYXRlcy50ZW1wbGF0ZS55aWVsZCgpfSl9fX0pLGUoImVtYmVyLWh0bWxiYXJz
L2tleXdvcmRzL3JlYWRvbmx5IixbImV4cG9ydHMiLCJlbWJlci1odG1sYmFycy9rZXl3b3Jkcy9t
dXQiXSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUscixuLGksbyxhLHMp
e2lmKG51bGw9PT1lKXt2YXIgdT1pWzBdO3JldHVybiB1JiZ1W3QuTVVUQUJMRV9SRUZFUkVOQ0Vd
P3Uuc291cmNlRGVwLmRlcGVuZGVlOnV9cmV0dXJuITB9ZS5kZWZhdWx0PXJ9KSxlKCJlbWJlci1o
dG1sYmFycy9rZXl3b3Jkcy90ZXh0YXJlYSIsWyJleHBvcnRzIl0sZnVuY3Rpb24oZSl7InVzZSBz
dHJpY3QiO2Z1bmN0aW9uIHQoZSx0LHIsbixpLG8sYSxzKXtyZXR1cm4gdC5ob29rcy5jb21wb25l
bnQoZSx0LHIsIi10ZXh0LWFyZWEiLG4saSx7ZGVmYXVsdDpvLGludmVyc2U6YX0scyksITB9ZS5k
ZWZhdWx0PXR9KSxlKCJlbWJlci1odG1sYmFycy9rZXl3b3Jkcy91bmJvdW5kIixbImV4cG9ydHMi
LCJlbWJlci1tZXRhbC9kZWJ1ZyIsImVtYmVyLW1ldGFsL3N0cmVhbXMvc3RyZWFtIiwiZW1iZXIt
bWV0YWwvc3RyZWFtcy91dGlscyJdLGZ1bmN0aW9uKGUsdCxyLG4peyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiBpKGUsdCxyLG4saSxhLHMsdSl7aWYobnVsbD09PWUpcmV0dXJuIG5ldyBvKG5bMF0pO3Zh
ciBsPXZvaWQgMDtyZXR1cm4gZS5saW5rZWRSZXN1bHQ/bD1lLmxpbmtlZFJlc3VsdDoobD1uZXcg
byhuWzBdKSxlLmxpbmtlZFJlc3VsdD1sKSx0Lmhvb2tzLnJhbmdlKGUsdCxyLG51bGwsbCx1KSwh
MH1lLmRlZmF1bHQ9aTt2YXIgbz1yLmRlZmF1bHQuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKGUpe3Ro
aXMubGFiZWw9Iih2b2xhdGlsZSAiK2UubGFiZWwrIikiLHRoaXMuc291cmNlPWUsdGhpcy5hZGRE
ZXBlbmRlbmN5KGUpfSx2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBuLnJlYWQodGhpcy5zb3VyY2Up
fSxub3RpZnk6ZnVuY3Rpb24oKXt9fSl9KSxlKCJlbWJlci1odG1sYmFycy9rZXl3b3Jkcy92aWV3
IixbImV4cG9ydHMiLCJlbWJlci12aWV3cy9zdHJlYW1zL3V0aWxzIiwiZW1iZXItdmlld3Mvdmll
d3MvdmlldyIsImVtYmVyLWh0bWxiYXJzL25vZGUtbWFuYWdlcnMvdmlldy1ub2RlLW1hbmFnZXIi
XSxmdW5jdGlvbihlLHQscixuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlLG4pe3ZhciBpO3Jl
dHVybiBpPWU/dC5yZWFkVmlld0ZhY3RvcnkoZSxuKTpuP24uX2xvb2t1cEZhY3RvcnkoInZpZXc6
dG9wbGV2ZWwiKTpyLmRlZmF1bHR9ZnVuY3Rpb24gbyhlLHQscil7dmFyIG49e307Zm9yKHZhciBp
IGluIGUpaT09PXQ/bltyXT1lW2ldOm5baV09ZVtpXTtyZXR1cm4gbn1lLmRlZmF1bHQ9e3NldHVw
U3RhdGU6ZnVuY3Rpb24oZSx0LHIsbixvKXt2YXIgYT10Lmhvb2tzLmdldFZhbHVlLHM9YShyLmdl
dFNlbGYoKSksdT1lLnZpZXdDbGFzc09ySW5zdGFuY2U7dXx8KHU9aShhKG5bMF0pLHQub3duZXIp
KTt2YXIgbD1yLmhhc0xvY2FsKCJ2aWV3Iik/bnVsbDphKHIuZ2V0U2VsZigpKTtyZXR1cm57bWFu
YWdlcjplLm1hbmFnZXIscGFyZW50Vmlldzp0LnZpZXcsY29udHJvbGxlcjpsLHRhcmdldE9iamVj
dDpzLHZpZXdDbGFzc09ySW5zdGFuY2U6dX19LHJlcmVuZGVyOmZ1bmN0aW9uKGUsdCxyLG4saSxv
LGEscyl7aWYoT2JqZWN0LmtleXMoaSkubGVuZ3RoKXJldHVybiBlLmdldFN0YXRlKCkubWFuYWdl
ci5yZXJlbmRlcih0LGkscywhMCl9LHJlbmRlcjpmdW5jdGlvbihlLHQscixpLGEscyx1LGwpe2Eu
dGFnJiYoYT1vKGEsInRhZyIsInRhZ05hbWUiKSksYS5jbGFzc05hbWVCaW5kaW5ncyYmKGEuY2xh
c3NOYW1lQmluZGluZ3M9YS5jbGFzc05hbWVCaW5kaW5ncy5zcGxpdCgiICIpKTt2YXIgYz1lLmdl
dFN0YXRlKCksZj1jLnBhcmVudFZpZXcsZD17Y29tcG9uZW50OmMudmlld0NsYXNzT3JJbnN0YW5j
ZSxsYXlvdXQ6bnVsbH07ZC5jcmVhdGVPcHRpb25zPXt9LGMuY29udHJvbGxlciYmKGQuY3JlYXRl
T3B0aW9ucy5fY29udHJvbGxlcj1jLmNvbnRyb2xsZXIpLGMudGFyZ2V0T2JqZWN0JiYoZC5jcmVh
dGVPcHRpb25zLl90YXJnZXRPYmplY3Q9Yy50YXJnZXRPYmplY3QpLGMubWFuYWdlciYmKGMubWFu
YWdlci5kZXN0cm95KCksYy5tYW5hZ2VyPW51bGwpO3ZhciBwPW4uZGVmYXVsdC5jcmVhdGUoZSx0
LGEsZCxmLG51bGwscixzKTtjLm1hbmFnZXI9cCxwLnJlbmRlcih0LGEsbCl9fX0pLGUoImVtYmVy
LWh0bWxiYXJzL2tleXdvcmRzL3dpdGgiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL2RlYnVnIiwi
aHRtbGJhcnMtcnVudGltZSJdLGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7ZS5kZWZhdWx0
PXtpc1N0YWJsZTpmdW5jdGlvbigpe3JldHVybiEwfSxpc0VtcHR5OmZ1bmN0aW9uKGUpe3JldHVy
biExfSxyZW5kZXI6ZnVuY3Rpb24oZSx0LG4saSxvLGEscyx1KXtyLmludGVybmFsLmNvbnRpbnVl
QmxvY2soZSx0LG4sIndpdGgiLGksbyxhLHMsdSl9LHJlcmVuZGVyOmZ1bmN0aW9uKGUsdCxuLGks
byxhLHMsdSl7ci5pbnRlcm5hbC5jb250aW51ZUJsb2NrKGUsdCxuLCJ3aXRoIixpLG8sYSxzLHUp
fX19KSxlKCJlbWJlci1odG1sYmFycy9rZXl3b3Jkcy95aWVsZCIsWyJleHBvcnRzIl0sZnVuY3Rp
b24oZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHQoZSx0LHIsbixpLG8sYSxzKXt2YXIgdT10Lmhv
b2tzLmdldFZhbHVlKGkudG8pfHwiZGVmYXVsdCIsbD1yLmdldEJsb2NrKHUpO3JldHVybiBsJiZs
Lmludm9rZSh0LG4saS5zZWxmLGUscixzKSwhMH1lLmRlZmF1bHQ9dH0pLGUoImVtYmVyLWh0bWxi
YXJzL21vcnBocy9hdHRyLW1vcnBoIixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9kZWJ1ZyIsImRv
bS1oZWxwZXIiLCJlbWJlci1tZXRhbC9pc19ub25lIl0sZnVuY3Rpb24oZSx0LHIsbil7InVzZSBz
dHJpY3QiO2Z1bmN0aW9uIGkoZSx0KXt9dmFyIG89ci5kZWZhdWx0LnByb3RvdHlwZS5BdHRyTW9y
cGhDbGFzcyxhPSJCaW5kaW5nIHN0eWxlIGF0dHJpYnV0ZXMgbWF5IGludHJvZHVjZSBjcm9zcy1z
aXRlIHNjcmlwdGluZyB2dWxuZXJhYmlsaXRpZXM7IHBsZWFzZSBlbnN1cmUgdGhhdCB2YWx1ZXMg
YmVpbmcgYm91bmQgYXJlIHByb3Blcmx5IGVzY2FwZWQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBp
bmNsdWRpbmcgaG93IHRvIGRpc2FibGUgdGhpcyB3YXJuaW5nLCBzZWUgaHR0cDovL2VtYmVyanMu
Y29tL2RlcHJlY2F0aW9ucy92MS54LyN0b2NfYmluZGluZy1zdHlsZS1hdHRyaWJ1dGVzLiI7ZS5z
dHlsZVdhcm5pbmc9YTt2YXIgcz1vLnByb3RvdHlwZTtzLmRpZEluaXQ9ZnVuY3Rpb24oKXt0aGlz
LnN0cmVhbVVuc3Vic2NyaWJlcnM9bnVsbH0scy53aWxsU2V0Q29udGVudD1mdW5jdGlvbihlKXtp
KHRoaXMsZSl9LGUuZGVmYXVsdD1vfSksZSgiZW1iZXItaHRtbGJhcnMvbW9ycGhzL21vcnBoIixb
ImV4cG9ydHMiLCJkb20taGVscGVyIiwiZW1iZXItbWV0YWwvZGVidWciXSxmdW5jdGlvbihlLHQs
cil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSx0KXt0aGlzLkhUTUxCYXJzTW9ycGgkY29uc3Ry
dWN0b3IoZSx0KSx0aGlzLmVtYmVyVmlldz1udWxsLHRoaXMuZW1iZXJUb0Rlc3Ryb3k9bnVsbCx0
aGlzLnN0cmVhbVVuc3Vic2NyaWJlcnM9bnVsbCx0aGlzLmd1aWQ9bysrLHRoaXMuc2hvdWxkUmVj
ZWl2ZUF0dHJzPSExfXZhciBpPXQuZGVmYXVsdC5wcm90b3R5cGUuTW9ycGhDbGFzcyxvPTEsYT1u
LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGkucHJvdG90eXBlKTthLkhUTUxCYXJzTW9ycGgkY29u
c3RydWN0b3I9aSxhLkhUTUxCYXJzTW9ycGgkY2xlYXI9aS5wcm90b3R5cGUuY2xlYXIsYS5hZGRE
ZXN0cnVjdGlvbj1mdW5jdGlvbihlKXt0aGlzLmVtYmVyVG9EZXN0cm95PXRoaXMuZW1iZXJUb0Rl
c3Ryb3l8fFtdLHRoaXMuZW1iZXJUb0Rlc3Ryb3kucHVzaChlKX0sYS5jbGVhbnVwPWZ1bmN0aW9u
KCl7dmFyIGU9dGhpcy5lbWJlclZpZXc7aWYoZSl7dmFyIHQ9ZS5wYXJlbnRWaWV3O3QmJmUub3du
ZXJWaWV3Ll9kZXN0cm95aW5nU3VidHJlZUZvclZpZXc9PT10JiZ0LnJlbW92ZUNoaWxkKGUpfXZh
ciByPXRoaXMuZW1iZXJUb0Rlc3Ryb3k7aWYocil7Zm9yKHZhciBuPTAsaT1yLmxlbmd0aDtuPGk7
bisrKXJbbl0uZGVzdHJveSgpO3RoaXMuZW1iZXJUb0Rlc3Ryb3k9bnVsbH19LGEuZGlkUmVuZGVy
PWZ1bmN0aW9uKGUsdCl7ZS5yZW5kZXJlZE5vZGVzLmFkZCh0aGlzKX0sZS5kZWZhdWx0PW59KSxl
KCJlbWJlci1odG1sYmFycy9ub2RlLW1hbmFnZXJzL2NvbXBvbmVudC1ub2RlLW1hbmFnZXIiLFsi
ZXhwb3J0cyIsImVtYmVyLW1ldGFsL2RlYnVnIiwiZW1iZXItdmlld3Mvc3lzdGVtL2J1aWxkLWNv
bXBvbmVudC10ZW1wbGF0ZSIsImVtYmVyLWh0bWxiYXJzL2hvb2tzL2dldC1jZWxsLW9yLXZhbHVl
IiwiZW1iZXItbWV0YWwvcHJvcGVydHlfZ2V0IiwiZW1iZXItbWV0YWwvcHJvcGVydHlfc2V0Iiwi
ZW1iZXItdmlld3MvY29tcGF0L2F0dHJzLXByb3h5IiwiZW1iZXItaHRtbGJhcnMvc3lzdGVtL2lu
c3RydW1lbnRhdGlvbi1zdXBwb3J0IiwiZW1iZXItdmlld3MvY29tcG9uZW50cy9jb21wb25lbnQi
LCJlbWJlci1odG1sYmFycy9nbGltbWVyLWNvbXBvbmVudCIsImVtYmVyLWh0bWxiYXJzL3V0aWxz
L2V4dHJhY3QtcG9zaXRpb25hbC1wYXJhbXMiLCJlbWJlci1tZXRhbC9zeW1ib2wiLCJjb250YWlu
ZXIvb3duZXIiLCJlbWJlci1odG1sYmFycy9ob29rcy9nZXQtdmFsdWUiXSxmdW5jdGlvbihlLHQs
cixuLGksbyxhLHMsdSxsLGMsZixkLHApeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBoKGUsdCxyLG4s
aSxvLGEpe3RoaXMuY29tcG9uZW50PWUsdGhpcy5pc0FuZ2xlQnJhY2tldD10LHRoaXMuc2NvcGU9
cix0aGlzLnJlbmRlck5vZGU9bix0aGlzLmF0dHJzPWksdGhpcy5ibG9jaz1vLHRoaXMuZXhwZWN0
RWxlbWVudD1hfWZ1bmN0aW9uIG0oZSx0LHIsbixpKXtuP2kudGFnTmFtZT10OmUudGFnTmFtZSYm
KGkudGFnTmFtZT1wLmRlZmF1bHQoZS50YWdOYW1lKSl9ZnVuY3Rpb24gdihlLHQpe2UuaWQmJih0
LmVsZW1lbnRJZD1wLmRlZmF1bHQoZS5pZCkpLGUuX2RlZmF1bHRUYWdOYW1lJiYodC5fZGVmYXVs
dFRhZ05hbWU9cC5kZWZhdWx0KGUuX2RlZmF1bHRUYWdOYW1lKSksZS52aWV3TmFtZSYmKHQudmll
d05hbWU9cC5kZWZhdWx0KGUudmlld05hbWUpKX1mdW5jdGlvbiBiKGUpe2Zvcih2YXIgdD1lO3Q7
KXtpZigxPT09dC5ub2RlVHlwZSlyZXR1cm4gdDt0PWUubmV4dFNpYmxpbmd9fWZ1bmN0aW9uIGco
ZSx0LHIsbixpKXt2YXIgYT1hcmd1bWVudHMubGVuZ3RoPD01fHx2b2lkIDA9PT1hcmd1bWVudHNb
NV0/e306YXJndW1lbnRzWzVdO3Q/KHIuYXR0cnM9eShhKSxyLl9pc0FuZ2xlQnJhY2tldD0hMCk6
dyhhLHIpLGQuc2V0T3duZXIocixpLm93bmVyKSxyLnJlbmRlcmVyPXIucGFyZW50Vmlldz9yLnBh
cmVudFZpZXcucmVuZGVyZXI6aS5vd25lci5sb29rdXAoInJlbmRlcmVyOi1kb20iKSxyLl92aWV3
UmVnaXN0cnk9ci5wYXJlbnRWaWV3P3IucGFyZW50Vmlldy5fdmlld1JlZ2lzdHJ5Omkub3duZXIu
bG9va3VwKCItdmlldy1yZWdpc3RyeTptYWluIik7dmFyIHM9ZS5jcmVhdGUocik7cmV0dXJuIHIu
cGFyZW50VmlldyYmKHIucGFyZW50Vmlldy5hcHBlbmRDaGlsZChzKSxyLnZpZXdOYW1lJiZvLnNl
dChyLnBhcmVudFZpZXcsci52aWV3TmFtZSxzKSkscy5fcmVuZGVyTm9kZT1uLG4uZW1iZXJWaWV3
PXMsbi5idWlsZENoaWxkRW52PXgsc31mdW5jdGlvbiB5KGUpe3ZhciB0PXt9O2Zvcih2YXIgciBp
biBlKXRbcl09bi5kZWZhdWx0KGVbcl0pO3JldHVybiB0fWZ1bmN0aW9uIF8oZSl7dmFyIHQ9e307
Zm9yKHZhciByIGluIGUpdFtyXT1wLmRlZmF1bHQoZVtyXSk7cmV0dXJuIHR9ZnVuY3Rpb24gdyhl
LHQpe3ZhciByPXt9O2Zvcih2YXIgaSBpbiBlKXt2YXIgbz1uLmRlZmF1bHQoZVtpXSk7cltpXT1v
LCJhdHRycyIhPT1pJiYobyYmb1thLk1VVEFCTEVfQ0VMTF0mJihvPW8udmFsdWUpLHRbaV09byl9
cmV0dXJuIHQuYXR0cnM9cn1mdW5jdGlvbiB4KGUsdCl7cmV0dXJuIHQuY2hpbGRXaXRoVmlldyh0
aGlzLmVtYmVyVmlldyl9ZS5jcmVhdGVDb21wb25lbnQ9ZyxlLnRha2VMZWdhY3lTbmFwc2hvdD1f
O3ZhciBrPWYuZGVmYXVsdCgiSEFTX0JMT0NLIik7ZS5IQVNfQkxPQ0s9ayxlLmRlZmF1bHQ9aCxo
LmNyZWF0ZT1mdW5jdGlvbihlLHQsbil7dmFyIG8sYT1uLnRhZ05hbWUscz1uLnBhcmFtcyxmPW4u
YXR0cnMsZD12b2lkIDA9PT1mP3t9OmYsYj1uLnBhcmVudFZpZXcseT1uLnBhcmVudFNjb3BlLF89
bi5pc0FuZ2xlQnJhY2tldCx3PW4uY29tcG9uZW50LHg9bi5sYXlvdXQsQz1uLnRlbXBsYXRlczt3
PXd8fChfP2wuZGVmYXVsdDp1LmRlZmF1bHQpO3ZhciBFPShvPXtwYXJlbnRWaWV3OmJ9LG9ba109
ISFDLmRlZmF1bHQsbyk7bShkLGEsdyxfLEUpLHYoZCxFKSx5Lmhhc0xvY2FsKCJjb250cm9sbGVy
Iik/RS5fY29udHJvbGxlcj1wLmRlZmF1bHQoeS5nZXRMb2NhbCgiY29udHJvbGxlciIpKTpFLl90
YXJnZXRPYmplY3Q9cC5kZWZhdWx0KHkuZ2V0U2VsZigpKSxjLmRlZmF1bHQoZSx3LHMsZCksdz1n
KHcsXyxFLGUsdCxkKSx4fHwoeD1pLmdldCh3LCJsYXlvdXQiKSk7dmFyIE89ci5kZWZhdWx0KHts
YXlvdXQ6eCxjb21wb25lbnQ6dyxpc0FuZ2xlQnJhY2tldDpffSxkLHt0ZW1wbGF0ZXM6QyxzY29w
ZTp5fSk7cmV0dXJuIG5ldyBoKHcsXyx5LGUsZCxPLmJsb2NrLE8uY3JlYXRlZEVsZW1lbnQpfSxo
LnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLmNvbXBvbmVudDtyZXR1
cm4gcy5pbnN0cnVtZW50KHIsZnVuY3Rpb24oKXt2YXIgbj10aGlzLmJsb2NrJiZ0aGlzLmJsb2Nr
LnRlbXBsYXRlLm1ldGEsaT1lLmNoaWxkV2l0aFZpZXcocixuKTtpLnJlbmRlcmVyLmNvbXBvbmVu
dFdpbGxSZW5kZXIociksaS5yZW5kZXJlZFZpZXdzLnB1c2goci5lbGVtZW50SWQpLHRoaXMuYmxv
Y2smJnRoaXMuYmxvY2suaW52b2tlKGksW10sdm9pZCAwLHRoaXMucmVuZGVyTm9kZSx0aGlzLnNj
b3BlLHQpO3ZhciBvPXZvaWQgMDsodGhpcy5leHBlY3RFbGVtZW50fHxyLmlzR2xpbW1lckNvbXBv
bmVudCkmJihvPXRoaXMucmVuZGVyTm9kZS5maXJzdE5vZGUsbyYmMSE9PW8ubm9kZVR5cGUmJihv
PWIobykpKSxpLmRlc3RpbmVkRm9yRE9NJiYoaS5yZW5kZXJlci5kaWRDcmVhdGVFbGVtZW50KHIs
byksaS5yZW5kZXJlci53aWxsSW5zZXJ0RWxlbWVudChyLG8pLGkubGlmZWN5Y2xlSG9va3MucHVz
aCh7dHlwZToiZGlkSW5zZXJ0RWxlbWVudCIsdmlldzpyfSkpfSx0aGlzKX0saC5wcm90b3R5cGUu
cmVyZW5kZXI9ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXRoaXMuY29tcG9uZW50O3JldHVybiBzLmlu
c3RydW1lbnQobixmdW5jdGlvbigpe3ZhciBpPWUuY2hpbGRXaXRoVmlldyhuKSxvPXkodCk7cmV0
dXJuIG4uX3JlbmRlck5vZGUuc2hvdWxkUmVjZWl2ZUF0dHJzJiYobi5fcHJvcGFnYXRlQXR0cnNU
b1RoaXMmJm4uX3Byb3BhZ2F0ZUF0dHJzVG9UaGlzKF8odCkpLGkucmVuZGVyZXIuY29tcG9uZW50
VXBkYXRlQXR0cnMobixvKSxuLl9yZW5kZXJOb2RlLnNob3VsZFJlY2VpdmVBdHRycz0hMSksaS5y
ZW5kZXJlci5jb21wb25lbnRXaWxsVXBkYXRlKG4sbyksaS5yZW5kZXJlci5jb21wb25lbnRXaWxs
UmVuZGVyKG4pLGkucmVuZGVyZWRWaWV3cy5wdXNoKG4uZWxlbWVudElkKSx0aGlzLmJsb2NrJiZ0
aGlzLmJsb2NrLmludm9rZShpLFtdLHZvaWQgMCx0aGlzLnJlbmRlck5vZGUsdGhpcy5zY29wZSxy
KSxpLmxpZmVjeWNsZUhvb2tzLnB1c2goe3R5cGU6ImRpZFVwZGF0ZSIsdmlldzpufSksaX0sdGhp
cyl9LGgucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmNvbXBvbmVudDtl
Ll9yZW5kZXJOb2RlPW51bGwsZS5kZXN0cm95KCl9fSksZSgiZW1iZXItaHRtbGJhcnMvbm9kZS1t
YW5hZ2Vycy92aWV3LW5vZGUtbWFuYWdlciIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvYXNzaWdu
IiwiZW1iZXItbWV0YWwvZGVidWciLCJlbWJlci12aWV3cy9zeXN0ZW0vYnVpbGQtY29tcG9uZW50
LXRlbXBsYXRlIiwiZW1iZXItbWV0YWwvcHJvcGVydHlfZ2V0IiwiZW1iZXItbWV0YWwvcHJvcGVy
dHlfc2V0IiwiZW1iZXItbWV0YWwvc2V0X3Byb3BlcnRpZXMiLCJlbWJlci12aWV3cy92aWV3cy92
aWV3IiwiZW1iZXItdmlld3MvY29tcGF0L2F0dHJzLXByb3h5IiwiZW1iZXItaHRtbGJhcnMvaG9v
a3MvZ2V0LWNlbGwtb3ItdmFsdWUiLCJlbWJlci1odG1sYmFycy9zeXN0ZW0vaW5zdHJ1bWVudGF0
aW9uLXN1cHBvcnQiLCJlbWJlci1odG1sYmFycy9ub2RlLW1hbmFnZXJzL2NvbXBvbmVudC1ub2Rl
LW1hbmFnZXIiLCJjb250YWluZXIvb3duZXIiLCJlbWJlci1odG1sYmFycy9ob29rcy9nZXQtdmFs
dWUiXSxmdW5jdGlvbihlLHQscixuLGksbyxhLHMsdSxsLGMsZixkLHApeyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiBoKGUsdCxyLG4saSl7dGhpcy5jb21wb25lbnQ9ZSx0aGlzLnNjb3BlPXQsdGhpcy5y
ZW5kZXJOb2RlPXIsdGhpcy5ibG9jaz1uLHRoaXMuZXhwZWN0RWxlbWVudD1pfWZ1bmN0aW9uIG0o
ZSl7cmV0dXJuIGUuaXNDb21wb25lbnQ/bnVsbDppLmdldChlLCJ0ZW1wbGF0ZSIpfWZ1bmN0aW9u
IHYoZSxyLG4saSx1KXt2YXIgbD1hcmd1bWVudHMubGVuZ3RoPD01fHx2b2lkIDA9PT1hcmd1bWVu
dHNbNV0/e306YXJndW1lbnRzWzVdLGM9YihsKSxwPXQuZGVmYXVsdCh7fSxyKSxoPXMuZGVmYXVs
dC5wcm90bygpLmNvbnRyb2xsZXIsbT0iY29udHJvbGxlciJpbiBsfHwiY29udHJvbGxlciJpbiBw
O2lmKCFwLm93bmVyVmlldyYmci5wYXJlbnRWaWV3JiYocC5vd25lclZpZXc9ci5wYXJlbnRWaWV3
Lm93bmVyVmlldykscC5hdHRycz1jLGUuY3JlYXRlKXt2YXIgdj1lLnByb3RvKCk7biYmdC5kZWZh
dWx0KHAsbiksZyhwLGMpO3ZhciB5PXUub3duZXI7ZC5zZXRPd25lcihwLHkpLHAucmVuZGVyZXI9
ci5wYXJlbnRWaWV3P3IucGFyZW50Vmlldy5yZW5kZXJlcjp5JiZ5Lmxvb2t1cCgicmVuZGVyZXI6
LWRvbSIpLHAuX3ZpZXdSZWdpc3RyeT1yLnBhcmVudFZpZXc/ci5wYXJlbnRWaWV3Ll92aWV3UmVn
aXN0cnk6eSYmeS5sb29rdXAoIi12aWV3LXJlZ2lzdHJ5Om1haW4iKSwodi5jb250cm9sbGVyIT09
aHx8bSkmJmRlbGV0ZSBwLl9jb250ZXh0LGU9ZS5jcmVhdGUocCl9ZWxzZSB1LnJlbmRlcmVyLmNv
bXBvbmVudFVwZGF0ZUF0dHJzKGUsYyksYS5kZWZhdWx0KGUscCksZS5fcHJvcGFnYXRlQXR0cnNU
b1RoaXMmJmUuX3Byb3BhZ2F0ZUF0dHJzVG9UaGlzKGYudGFrZUxlZ2FjeVNuYXBzaG90KGwpKTty
ZXR1cm4gci5wYXJlbnRWaWV3JiYoci5wYXJlbnRWaWV3LmFwcGVuZENoaWxkKGUpLHIudmlld05h
bWUmJm8uc2V0KHIucGFyZW50VmlldyxyLnZpZXdOYW1lLGUpKSxlLl9yZW5kZXJOb2RlPWksaS5l
bWJlclZpZXc9ZSxlfWZ1bmN0aW9uIGIoZSl7dmFyIHQ9e307Zm9yKHZhciByIGluIGUpdFtyXT1s
LmRlZmF1bHQoZVtyXSk7cmV0dXJuIHR9ZnVuY3Rpb24gZyhlLHQpe2Zvcih2YXIgciBpbiB0KWlm
KHQuaGFzT3duUHJvcGVydHkocikmJiJhdHRycyIhPT1yKXt2YXIgbj10W3JdO24mJm5bdS5NVVRB
QkxFX0NFTExdP2Vbcl09bi52YWx1ZTplW3JdPW59cmV0dXJuIGV9ZS5jcmVhdGVPclVwZGF0ZUNv
bXBvbmVudD12LGUuZGVmYXVsdD1oLGguY3JlYXRlPWZ1bmN0aW9uKGUsdCxyLG8sYSxzLHUsbCl7
dmFyIGMsZj17bGF5b3V0Om8ubGF5b3V0fTtpZihvLmNvbXBvbmVudCl7dmFyIGQ9e3BhcmVudFZp
ZXc6YX07aWYociYmci5pZCYmKGQuZWxlbWVudElkPXAuZGVmYXVsdChyLmlkKSksciYmci50YWdO
YW1lJiYoZC50YWdOYW1lPXAuZGVmYXVsdChyLnRhZ05hbWUpKSxyJiZyLl9kZWZhdWx0VGFnTmFt
ZSYmKGQuX2RlZmF1bHRUYWdOYW1lPXAuZGVmYXVsdChyLl9kZWZhdWx0VGFnTmFtZSkpLHImJnIu
dmlld05hbWUmJihkLnZpZXdOYW1lPXAuZGVmYXVsdChyLnZpZXdOYW1lKSksby5jb21wb25lbnQu
Y3JlYXRlJiZ1KXt2YXIgYj11LmdldFNlbGYoKTtiJiYoZC5fY29udGV4dD1wLmRlZmF1bHQodS5n
ZXRTZWxmKCkpKX1vLnNlbGYmJihkLl9jb250ZXh0PXAuZGVmYXVsdChvLnNlbGYpKSxjPWYuY29t
cG9uZW50PXYoby5jb21wb25lbnQsZCxvLmNyZWF0ZU9wdGlvbnMsZSx0LHIpO3ZhciBnPWkuZ2V0
KGMsImxheW91dCIpO2c/Zi5sYXlvdXQ9ZzpmLmxheW91dD1tKGMpfHxmLmxheW91dCxlLmVtYmVy
Vmlldz1jfXZhciB5PW4uZGVmYXVsdChmLHIse3RlbXBsYXRlczp7ZGVmYXVsdDpsfSxzY29wZTp1
LHNlbGY6by5zZWxmfSk7cmV0dXJuIG5ldyBoKGMsdSxlLHkuYmxvY2sseS5jcmVhdGVkRWxlbWVu
dCl9LGgucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbihlLHQscil7dmFyIG49dGhpcy5jb21wb25l
bnQ7cmV0dXJuIGMuaW5zdHJ1bWVudChuLGZ1bmN0aW9uKCl7dmFyIHQ9ZTtpZihuKXQ9ZS5jaGls
ZFdpdGhWaWV3KG4pO2Vsc2V7dmFyIGk9dGhpcy5ibG9jayYmdGhpcy5ibG9jay50ZW1wbGF0ZS5t
ZXRhO3Q9ZS5jaGlsZFdpdGhNZXRhKGkpfWlmKG4mJihlLnJlbmRlcmVyLndpbGxSZW5kZXIobiks
ZS5yZW5kZXJlZFZpZXdzLnB1c2gobi5lbGVtZW50SWQpKSx0aGlzLmJsb2NrJiZ0aGlzLmJsb2Nr
Lmludm9rZSh0LFtdLHZvaWQgMCx0aGlzLnJlbmRlck5vZGUsdGhpcy5zY29wZSxyKSxuKXt2YXIg
bz10aGlzLmV4cGVjdEVsZW1lbnQmJnRoaXMucmVuZGVyTm9kZS5maXJzdE5vZGU7ZS5kZXN0aW5l
ZEZvckRPTSYmKGUucmVuZGVyZXIuZGlkQ3JlYXRlRWxlbWVudChuLG8pLGUucmVuZGVyZXIud2ls
bEluc2VydEVsZW1lbnQobixvKSxlLmxpZmVjeWNsZUhvb2tzLnB1c2goe3R5cGU6ImRpZEluc2Vy
dEVsZW1lbnQiLHZpZXc6bn0pKX19LHRoaXMpfSxoLnByb3RvdHlwZS5yZXJlbmRlcj1mdW5jdGlv
bihlLHQscil7dmFyIG49dGhpcy5jb21wb25lbnQ7cmV0dXJuIGMuaW5zdHJ1bWVudChuLGZ1bmN0
aW9uKCl7dmFyIGk9ZTtpZihuKXtpPWUuY2hpbGRXaXRoVmlldyhuKTt2YXIgbz1iKHQpO2UucmVu
ZGVyZXIud2lsbFVwZGF0ZShuLG8pLG4uX3JlbmRlck5vZGUuc2hvdWxkUmVjZWl2ZUF0dHJzJiYo
bi5fcHJvcGFnYXRlQXR0cnNUb1RoaXMmJm4uX3Byb3BhZ2F0ZUF0dHJzVG9UaGlzKGYudGFrZUxl
Z2FjeVNuYXBzaG90KHQpKSxlLnJlbmRlcmVyLmNvbXBvbmVudFVwZGF0ZUF0dHJzKG4sbyksbi5f
cmVuZGVyTm9kZS5zaG91bGRSZWNlaXZlQXR0cnM9ITEpLGUucmVuZGVyZXIud2lsbFJlbmRlcihu
KSxlLnJlbmRlcmVkVmlld3MucHVzaChuLmVsZW1lbnRJZCl9ZWxzZXt2YXIgYT10aGlzLmJsb2Nr
JiZ0aGlzLmJsb2NrLnRlbXBsYXRlLm1ldGE7aT1lLmNoaWxkV2l0aE1ldGEoYSl9cmV0dXJuIHRo
aXMuYmxvY2smJnRoaXMuYmxvY2suaW52b2tlKGksW10sdm9pZCAwLHRoaXMucmVuZGVyTm9kZSx0
aGlzLnNjb3BlLHIpLGl9LHRoaXMpfSxoLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dGhp
cy5jb21wb25lbnQmJih0aGlzLmNvbXBvbmVudC5kZXN0cm95KCksdGhpcy5jb21wb25lbnQ9bnVs
bCl9fSksZSgiZW1iZXItaHRtbGJhcnMvc3RyZWFtcy9idWlsdC1pbi1oZWxwZXIiLFsiZXhwb3J0
cyIsImVtYmVyLW1ldGFsL3N0cmVhbXMvc3RyZWFtIiwiZW1iZXItaHRtbGJhcnMvc3RyZWFtcy91
dGlscyJdLGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49dC5kZWZhdWx0LmV4dGVu
ZCh7aW5pdDpmdW5jdGlvbihlLHQscixuLGksbyxhKXt0aGlzLmhlbHBlcj1lLHRoaXMucGFyYW1z
PXQsdGhpcy50ZW1wbGF0ZXM9bix0aGlzLmVudj1pLHRoaXMuc2NvcGU9byx0aGlzLmhhc2g9cix0
aGlzLmxhYmVsPWF9LGNvbXB1dGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oZWxwZXIoci5nZXRB
cnJheVZhbHVlcyh0aGlzLnBhcmFtcyksci5nZXRIYXNoVmFsdWVzKHRoaXMuaGFzaCksdGhpcy50
ZW1wbGF0ZXMsdGhpcy5lbnYsdGhpcy5zY29wZSl9fSk7ZS5kZWZhdWx0PW59KSxlKCJlbWJlci1o
dG1sYmFycy9zdHJlYW1zL2hlbHBlci1mYWN0b3J5IixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9z
dHJlYW1zL3N0cmVhbSIsImVtYmVyLWh0bWxiYXJzL3N0cmVhbXMvdXRpbHMiXSxmdW5jdGlvbihl
LHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXQuZGVmYXVsdC5leHRlbmQoe2luaXQ6ZnVuY3Rpb24o
ZSx0LHIsbil7dGhpcy5oZWxwZXJGYWN0b3J5PWUsdGhpcy5wYXJhbXM9dCx0aGlzLmhhc2g9cix0
aGlzLmxpbmthYmxlPSEwLHRoaXMuaGVscGVyPW51bGwsdGhpcy5sYWJlbD1ufSxjb21wdXRlOmZ1
bmN0aW9uKCl7cmV0dXJuIHRoaXMuaGVscGVyfHwodGhpcy5oZWxwZXI9dGhpcy5oZWxwZXJGYWN0
b3J5LmNyZWF0ZSh7X3N0cmVhbTp0aGlzfSkpLHRoaXMuaGVscGVyLmNvbXB1dGUoci5nZXRBcnJh
eVZhbHVlcyh0aGlzLnBhcmFtcyksci5nZXRIYXNoVmFsdWVzKHRoaXMuaGFzaCkpfSxkZWFjdGl2
YXRlOmZ1bmN0aW9uKCl7dGhpcy5zdXBlciRkZWFjdGl2YXRlKCksdGhpcy5oZWxwZXImJih0aGlz
LmhlbHBlci5kZXN0cm95KCksdGhpcy5oZWxwZXI9bnVsbCl9LHN1cGVyJGRlYWN0aXZhdGU6dC5k
ZWZhdWx0LnByb3RvdHlwZS5kZWFjdGl2YXRlfSk7ZS5kZWZhdWx0PW59KSxlKCJlbWJlci1odG1s
YmFycy9zdHJlYW1zL2hlbHBlci1pbnN0YW5jZSIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvc3Ry
ZWFtcy9zdHJlYW0iLCJlbWJlci1odG1sYmFycy9zdHJlYW1zL3V0aWxzIl0sZnVuY3Rpb24oZSx0
LHIpeworInVzZSBzdHJpY3QiO3ZhciBuPXQuZGVmYXVsdC5leHRlbmQoe2luaXQ6ZnVuY3Rpb24o
ZSx0LHIsbil7dGhpcy5oZWxwZXI9ZSx0aGlzLnBhcmFtcz10LHRoaXMuaGFzaD1yLHRoaXMubGlu
a2FibGU9ITAsdGhpcy5sYWJlbD1ufSxjb21wdXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaGVs
cGVyLmNvbXB1dGUoci5nZXRBcnJheVZhbHVlcyh0aGlzLnBhcmFtcyksci5nZXRIYXNoVmFsdWVz
KHRoaXMuaGFzaCkpfX0pO2UuZGVmYXVsdD1ufSksZSgiZW1iZXItaHRtbGJhcnMvc3RyZWFtcy91
dGlscyIsWyJleHBvcnRzIiwiZW1iZXItaHRtbGJhcnMvaG9va3MvZ2V0LXZhbHVlIl0sZnVuY3Rp
b24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtmb3IodmFyIHI9ZS5sZW5ndGgsbj1u
ZXcgQXJyYXkociksaT0wO2k8cjtpKyspbltpXT10LmRlZmF1bHQoZVtpXSk7cmV0dXJuIG59ZnVu
Y3Rpb24gbihlKXt2YXIgcj17fTtmb3IodmFyIG4gaW4gZSlyW25dPXQuZGVmYXVsdChlW25dKTty
ZXR1cm4gcn1lLmdldEFycmF5VmFsdWVzPXIsZS5nZXRIYXNoVmFsdWVzPW59KSxlKCJlbWJlci1o
dG1sYmFycy9zeXN0ZW0vYXBwZW5kLXRlbXBsYXRlZC12aWV3IixbImV4cG9ydHMiLCJlbWJlci1t
ZXRhbC9kZWJ1ZyIsImVtYmVyLW1ldGFsL3Byb3BlcnR5X2dldCIsImVtYmVyLXZpZXdzL3ZpZXdz
L3ZpZXciXSxmdW5jdGlvbihlLHQscixuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlLHQsaSxv
KXt2YXIgYTthPW4uZGVmYXVsdC5kZXRlY3RJbnN0YW5jZShpKT9pOmkucHJvdG8oKTt2YXIgcz0h
YS5jb250cm9sbGVyO3JldHVybiBhLmNvbnRyb2xsZXImJmEuY29udHJvbGxlci5pc0Rlc2NyaXB0
b3ImJihzPSEwKSwhc3x8YS5jb250cm9sbGVyQmluZGluZ3x8by5jb250cm9sbGVyfHxvLmNvbnRy
b2xsZXJCaW5kaW5nfHwoby5fY29udGV4dD1yLmdldChlLCJjb250ZXh0IikpLG8uX21vcnBoPXQs
ZS5hcHBlbmRDaGlsZChpLG8pfWUuZGVmYXVsdD1pfSksZSgiZW1iZXItaHRtbGJhcnMvc3lzdGVt
L2Jvb3RzdHJhcCIsWyJleHBvcnRzIiwiZW1iZXItdmlld3MvY29tcG9uZW50X2xvb2t1cCIsImVt
YmVyLXZpZXdzL3N5c3RlbS9qcXVlcnkiLCJlbWJlci1tZXRhbC9lcnJvciIsImVtYmVyLXJ1bnRp
bWUvc3lzdGVtL2xhenlfbG9hZCIsImVtYmVyLXRlbXBsYXRlLWNvbXBpbGVyL3N5c3RlbS9jb21w
aWxlIiwiZW1iZXItbWV0YWwvZW52aXJvbm1lbnQiLCJlbWJlci1odG1sYmFycy90ZW1wbGF0ZV9y
ZWdpc3RyeSJdLGZ1bmN0aW9uKGUsdCxyLG4saSxvLGEscyl7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IHUoZSl7dmFyIHQ9J3NjcmlwdFt0eXBlPSJ0ZXh0L3gtaGFuZGxlYmFycyJdLCBzY3JpcHRbdHlw
ZT0idGV4dC94LXJhdy1oYW5kbGViYXJzIl0nO3IuZGVmYXVsdCh0LGUpLmVhY2goZnVuY3Rpb24o
KXt2YXIgZSx0LGk9ci5kZWZhdWx0KHRoaXMpLGE9aS5hdHRyKCJkYXRhLXRlbXBsYXRlLW5hbWUi
KXx8aS5hdHRyKCJpZCIpfHwiYXBwbGljYXRpb24iO2lmKCJ0ZXh0L3gtcmF3LWhhbmRsZWJhcnMi
PT09aS5hdHRyKCJ0eXBlIik/KHQ9ci5kZWZhdWx0LnByb3h5KEhhbmRsZWJhcnMuY29tcGlsZSxI
YW5kbGViYXJzKSxlPXQoaS5odG1sKCkpKTplPW8uZGVmYXVsdChpLmh0bWwoKSx7bW9kdWxlTmFt
ZTphfSkscy5oYXMoYSkpdGhyb3cgbmV3IG4uZGVmYXVsdCgnVGVtcGxhdGUgbmFtZWQgIicrYSsn
IiBhbHJlYWR5IGV4aXN0cy4nKTtzLnNldChhLGUpLGkucmVtb3ZlKCl9KX1mdW5jdGlvbiBsKCl7
dShyLmRlZmF1bHQoZG9jdW1lbnQpKX1mdW5jdGlvbiBjKGUpe2UucmVnaXN0ZXIoImNvbXBvbmVu
dC1sb29rdXA6bWFpbiIsdC5kZWZhdWx0KX1pLm9uTG9hZCgiRW1iZXIuQXBwbGljYXRpb24iLGZ1
bmN0aW9uKGUpe2UuaW5pdGlhbGl6ZXIoe25hbWU6ImRvbVRlbXBsYXRlcyIsaW5pdGlhbGl6ZTph
LmRlZmF1bHQuaGFzRE9NP2w6ZnVuY3Rpb24oKXt9fSksZS5pbnN0YW5jZUluaXRpYWxpemVyKHtu
YW1lOiJyZWdpc3RlckNvbXBvbmVudExvb2t1cCIsaW5pdGlhbGl6ZTpjfSl9KSxlLmRlZmF1bHQ9
dX0pLGUoImVtYmVyLWh0bWxiYXJzL3N5c3RlbS9kb20taGVscGVyIixbImV4cG9ydHMiLCJkb20t
aGVscGVyIiwiZW1iZXItaHRtbGJhcnMvbW9ycGhzL21vcnBoIiwiZW1iZXItaHRtbGJhcnMvbW9y
cGhzL2F0dHItbW9ycGgiXSxmdW5jdGlvbihlLHQscixuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
aShlKXt0LmRlZmF1bHQuY2FsbCh0aGlzLGUpfXZhciBvPWkucHJvdG90eXBlPU9iamVjdC5jcmVh
dGUodC5kZWZhdWx0LnByb3RvdHlwZSk7by5Nb3JwaENsYXNzPXIuZGVmYXVsdCxvLkF0dHJNb3Jw
aENsYXNzPW4uZGVmYXVsdCxlLmRlZmF1bHQ9aX0pLGUoImVtYmVyLWh0bWxiYXJzL3N5c3RlbS9p
bnN0cnVtZW50YXRpb24tc3VwcG9ydCIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvaW5zdHJ1bWVu
dGF0aW9uIl0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHIsbil7dmFy
IGksbyxhLHM7cmV0dXJuIHQuc3Vic2NyaWJlcnMubGVuZ3RoPyhpPWU/ZS5pbnN0cnVtZW50TmFt
ZToibm9kZSIsYT17fSxlJiZlLmluc3RydW1lbnREZXRhaWxzKGEpLHM9dC5faW5zdHJ1bWVudFN0
YXJ0KCJyZW5kZXIuIitpLGZ1bmN0aW9uKCl7cmV0dXJuIGF9KSxvPXIuY2FsbChuKSxzJiZzKCks
byk6ci5jYWxsKG4pfWUuaW5zdHJ1bWVudD1yfSksZSgiZW1iZXItaHRtbGJhcnMvc3lzdGVtL2lu
dm9rZS1oZWxwZXIiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL2RlYnVnIiwiZW1iZXItaHRtbGJh
cnMvc3RyZWFtcy9oZWxwZXItaW5zdGFuY2UiLCJlbWJlci1odG1sYmFycy9zdHJlYW1zL2hlbHBl
ci1mYWN0b3J5IiwiZW1iZXItaHRtbGJhcnMvc3RyZWFtcy9idWlsdC1pbi1oZWxwZXIiXSxmdW5j
dGlvbihlLHQscixuLGkpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBvKGUsdCxvLGEscyx1LGwpe2Uu
aXNIZWxwZXJJbnN0YW5jZXx8ZS5pc0hlbHBlckZhY3Rvcnk7cmV0dXJuIGUuaXNIZWxwZXJGYWN0
b3J5P25ldyBuLmRlZmF1bHQoZSx0LG8sbCk6ZS5pc0hlbHBlckluc3RhbmNlP25ldyByLmRlZmF1
bHQoZSx0LG8sbCk6KGE9YXx8e3RlbXBsYXRlOnt9LGludmVyc2U6e319LG5ldyBpLmRlZmF1bHQo
ZSx0LG8sYSxzLHUsbCkpfWUuYnVpbGRIZWxwZXJTdHJlYW09b30pLGUoImVtYmVyLWh0bWxiYXJz
L3N5c3RlbS9sb29rdXAtaGVscGVyIixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9kZWJ1ZyIsImVt
YmVyLW1ldGFsL2NhY2hlIl0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBu
KGUsdCxyKXtyZXR1cm4gdCYmIShlIGluIHIpfWZ1bmN0aW9uIGkoZSx0LHIsaSl7dmFyIG89ci5o
ZWxwZXJzW2VdO2lmKCFvKXt2YXIgYT1yLm93bmVyO2lmKG4oZSxhLHIuaG9va3Mua2V5d29yZHMp
KXt2YXIgcz0iaGVscGVyOiIrZSx1PWEuaGFzUmVnaXN0cmF0aW9uKHMsaSk7dSYmKG89YS5fbG9v
a3VwRmFjdG9yeShzLGkpKX19cmV0dXJuIG99ZnVuY3Rpb24gbyhlLHQscil7dmFyIG49e30sbz1y
Lm1ldGEmJnIubWV0YS5tb2R1bGVOYW1lO28mJihuLnNvdXJjZT0idGVtcGxhdGU6IitvKTt2YXIg
YT1pKGUsdCxyLG4pO3JldHVybiBhP2E6aShlLHQscil9ZnVuY3Rpb24gYShlLHQscil7dmFyIG49
byhlLHQscik7cmV0dXJuIG59ZS52YWxpZGF0ZUxhenlIZWxwZXJOYW1lPW4sZS5maW5kSGVscGVy
PW8sZS5kZWZhdWx0PWE7dmFyIHM9bmV3IHIuZGVmYXVsdCgxZTMsZnVuY3Rpb24oZSl7cmV0dXJu
IGUuaW5kZXhPZigiLSIpIT09LTF9KTtlLkNPTlRBSU5TX0RBU0hfQ0FDSEU9czt2YXIgdT1uZXcg
ci5kZWZhdWx0KDFlMyxmdW5jdGlvbihlKXtyZXR1cm4gZS5pbmRleE9mKCIuIikhPT0tMX0pO2Uu
Q09OVEFJTlNfRE9UX0NBQ0hFPXV9KSxlKCJlbWJlci1odG1sYmFycy9zeXN0ZW0vbWFrZV9ib3Vu
ZF9oZWxwZXIiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL2RlYnVnIiwiZW1iZXItaHRtbGJhcnMv
aGVscGVyIl0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe3JldHVy
biByLmhlbHBlcihlKX1lLmRlZmF1bHQ9bn0pLGUoImVtYmVyLWh0bWxiYXJzL3N5c3RlbS9yZW5k
ZXItZW52IixbImV4cG9ydHMiLCJlbWJlci1odG1sYmFycy9lbnYiLCJlbWJlci1tZXRhbC12aWV3
cyIsImNvbnRhaW5lci9vd25lciJdLGZ1bmN0aW9uKGUsdCxyLG4peyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiBpKGUpe3RoaXMubGlmZWN5Y2xlSG9va3M9ZS5saWZlY3ljbGVIb29rc3x8W10sdGhpcy5y
ZW5kZXJlZFZpZXdzPWUucmVuZGVyZWRWaWV3c3x8W10sdGhpcy5yZW5kZXJlZE5vZGVzPWUucmVu
ZGVyZWROb2Rlc3x8bmV3IHIuTW9ycGhTZXQsdGhpcy5oYXNQYXJlbnRPdXRsZXQ9ZS5oYXNQYXJl
bnRPdXRsZXR8fCExLHRoaXMudmlldz1lLnZpZXcsdGhpcy5vdXRsZXRTdGF0ZT1lLm91dGxldFN0
YXRlLHRoaXMub3duZXI9ZS5vd25lcix0aGlzLnJlbmRlcmVyPWUucmVuZGVyZXIsdGhpcy5kb209
ZS5kb20sdGhpcy5tZXRhPWUubWV0YSx0aGlzLmhvb2tzPXQuZGVmYXVsdC5ob29rcyx0aGlzLmhl
bHBlcnM9dC5kZWZhdWx0LmhlbHBlcnMsdGhpcy51c2VGcmFnbWVudENhY2hlPXQuZGVmYXVsdC51
c2VGcmFnbWVudENhY2hlLHRoaXMuZGVzdGluZWRGb3JET009dGhpcy5yZW5kZXJlci5fZGVzdGlu
ZWRGb3JET019ZS5kZWZhdWx0PWksaS5idWlsZD1mdW5jdGlvbihlLHQpe3JldHVybiBuZXcgaSh7
dmlldzplLG91dGxldFN0YXRlOmUub3V0bGV0U3RhdGUsb3duZXI6bi5nZXRPd25lcihlKSxyZW5k
ZXJlcjplLnJlbmRlcmVyLGRvbTplLnJlbmRlcmVyLl9kb20sbWV0YTp0fSl9LGkucHJvdG90eXBl
LmNoaWxkV2l0aE1ldGE9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBpKHt2aWV3OnRoaXMudmlldyxv
dXRsZXRTdGF0ZTp0aGlzLm91dGxldFN0YXRlLG93bmVyOnRoaXMub3duZXIscmVuZGVyZXI6dGhp
cy5yZW5kZXJlcixkb206dGhpcy5kb20sbGlmZWN5Y2xlSG9va3M6dGhpcy5saWZlY3ljbGVIb29r
cyxyZW5kZXJlZFZpZXdzOnRoaXMucmVuZGVyZWRWaWV3cyxyZW5kZXJlZE5vZGVzOnRoaXMucmVu
ZGVyZWROb2RlcyxoYXNQYXJlbnRPdXRsZXQ6dGhpcy5oYXNQYXJlbnRPdXRsZXQsbWV0YTplfSl9
LGkucHJvdG90eXBlLmNoaWxkV2l0aFZpZXc9ZnVuY3Rpb24oZSl7dmFyIHQ9YXJndW1lbnRzLmxl
bmd0aDw9MXx8dm9pZCAwPT09YXJndW1lbnRzWzFdP3RoaXMubWV0YTphcmd1bWVudHNbMV07cmV0
dXJuIG5ldyBpKHt2aWV3OmUsb3V0bGV0U3RhdGU6dGhpcy5vdXRsZXRTdGF0ZSxvd25lcjp0aGlz
Lm93bmVyLHJlbmRlcmVyOnRoaXMucmVuZGVyZXIsZG9tOnRoaXMuZG9tLGxpZmVjeWNsZUhvb2tz
OnRoaXMubGlmZWN5Y2xlSG9va3MscmVuZGVyZWRWaWV3czp0aGlzLnJlbmRlcmVkVmlld3MscmVu
ZGVyZWROb2Rlczp0aGlzLnJlbmRlcmVkTm9kZXMsaGFzUGFyZW50T3V0bGV0OnRoaXMuaGFzUGFy
ZW50T3V0bGV0LG1ldGE6dH0pfSxpLnByb3RvdHlwZS5jaGlsZFdpdGhPdXRsZXRTdGF0ZT1mdW5j
dGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPD0xfHx2b2lkIDA9PT1hcmd1bWVudHNbMV0/
dGhpcy5oYXNQYXJlbnRPdXRsZXQ6YXJndW1lbnRzWzFdLHI9YXJndW1lbnRzLmxlbmd0aDw9Mnx8
dm9pZCAwPT09YXJndW1lbnRzWzJdP3RoaXMubWV0YTphcmd1bWVudHNbMl07cmV0dXJuIG5ldyBp
KHt2aWV3OnRoaXMudmlldyxvdXRsZXRTdGF0ZTplLG93bmVyOnRoaXMub3duZXIscmVuZGVyZXI6
dGhpcy5yZW5kZXJlcixkb206dGhpcy5kb20sbGlmZWN5Y2xlSG9va3M6dGhpcy5saWZlY3ljbGVI
b29rcyxyZW5kZXJlZFZpZXdzOnRoaXMucmVuZGVyZWRWaWV3cyxyZW5kZXJlZE5vZGVzOnRoaXMu
cmVuZGVyZWROb2RlcyxoYXNQYXJlbnRPdXRsZXQ6dCxtZXRhOnJ9KX19KSxlKCJlbWJlci1odG1s
YmFycy9zeXN0ZW0vcmVuZGVyLXZpZXciLFsiZXhwb3J0cyIsImVtYmVyLWh0bWxiYXJzL25vZGUt
bWFuYWdlcnMvdmlldy1ub2RlLW1hbmFnZXIiLCJlbWJlci1odG1sYmFycy9zeXN0ZW0vcmVuZGVy
LWVudiJdLGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlLG4saSl7dmFy
IG89biYmbi50ZW1wbGF0ZSYmbi50ZW1wbGF0ZS5tZXRhLGE9ci5kZWZhdWx0LmJ1aWxkKGUsbyk7
ZS5lbnY9YSx0LmNyZWF0ZU9yVXBkYXRlQ29tcG9uZW50KGUse30sbnVsbCxpLGEpO3ZhciBzPW5l
dyB0LmRlZmF1bHQoZSxudWxsLGksbiwiIiE9PWUudGFnTmFtZSk7cy5yZW5kZXIoYSx7fSl9ZS5y
ZW5kZXJIVE1MQmFyc0Jsb2NrPW59KSxlKCJlbWJlci1odG1sYmFycy90ZW1wbGF0ZV9yZWdpc3Ry
eSIsWyJleHBvcnRzIl0sZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHQoZSl7YT1l
fWZ1bmN0aW9uIHIoKXtyZXR1cm4gYX1mdW5jdGlvbiBuKGUpe2lmKGEuaGFzT3duUHJvcGVydHko
ZSkpcmV0dXJuIGFbZV19ZnVuY3Rpb24gaShlKXtyZXR1cm4gYS5oYXNPd25Qcm9wZXJ0eShlKX1m
dW5jdGlvbiBvKGUsdCl7cmV0dXJuIGFbZV09dH1lLnNldFRlbXBsYXRlcz10LGUuZ2V0VGVtcGxh
dGVzPXIsZS5nZXQ9bixlLmhhcz1pLGUuc2V0PW87dmFyIGE9e319KSxlKCJlbWJlci1odG1sYmFy
cy90ZW1wbGF0ZXMvY29tcG9uZW50IixbImV4cG9ydHMiLCJlbWJlci10ZW1wbGF0ZS1jb21waWxl
ci9zeXN0ZW0vdGVtcGxhdGUiXSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtlLmRlZmF1bHQ9
dC5kZWZhdWx0KGZ1bmN0aW9uKCl7cmV0dXJue21ldGE6e30saXNFbXB0eTohMSxhcml0eTowLGNh
Y2hlZEZyYWdtZW50Om51bGwsaGFzUmVuZGVyZWQ6ITEsYnVpbGRGcmFnbWVudDpmdW5jdGlvbihl
KXt2YXIgdD1lLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxyPWUuY3JlYXRlQ29tbWVudCgiIik7
cmV0dXJuIGUuYXBwZW5kQ2hpbGQodCxyKSx0fSxidWlsZFJlbmRlck5vZGVzOmZ1bmN0aW9uKGUs
dCxyKXt2YXIgbj1uZXcgQXJyYXkoMSk7cmV0dXJuIG5bMF09ZS5jcmVhdGVNb3JwaEF0KHQsMCww
LHIpLGUuaW5zZXJ0Qm91bmRhcnkodCwwKSxlLmluc2VydEJvdW5kYXJ5KHQsbnVsbCksbn0sc3Rh
dGVtZW50czpbWyJjb250ZW50IiwieWllbGQiLFsibG9jIixbbnVsbCxbMSwwXSxbMSw5XV1dXV0s
bG9jYWxzOltdLHRlbXBsYXRlczpbXX19KCkpfSksZSgiZW1iZXItaHRtbGJhcnMvdGVtcGxhdGVz
L2VtcHR5IixbImV4cG9ydHMiLCJlbWJlci10ZW1wbGF0ZS1jb21waWxlci9zeXN0ZW0vdGVtcGxh
dGUiXSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtlLmRlZmF1bHQ9dC5kZWZhdWx0KGZ1bmN0
aW9uKCl7cmV0dXJue21ldGE6e30saXNFbXB0eTohMCxhcml0eTowLGNhY2hlZEZyYWdtZW50Om51
bGwsaGFzUmVuZGVyZWQ6ITEsYnVpbGRGcmFnbWVudDpmdW5jdGlvbihlKXt2YXIgdD1lLmNyZWF0
ZURvY3VtZW50RnJhZ21lbnQoKTtyZXR1cm4gdH0sYnVpbGRSZW5kZXJOb2RlczpmdW5jdGlvbigp
e3JldHVybltdfSxzdGF0ZW1lbnRzOltdLGxvY2FsczpbXSx0ZW1wbGF0ZXM6W119fSgpKX0pLGUo
ImVtYmVyLWh0bWxiYXJzL3RlbXBsYXRlcy9saW5rLXRvIixbImV4cG9ydHMiLCJlbWJlci10ZW1w
bGF0ZS1jb21waWxlci9zeXN0ZW0vdGVtcGxhdGUiXSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0
IjtlLmRlZmF1bHQ9dC5kZWZhdWx0KGZ1bmN0aW9uKCl7dmFyIGU9ZnVuY3Rpb24oKXtyZXR1cm57
bWV0YTp7fSxpc0VtcHR5OiExLGFyaXR5OjAsY2FjaGVkRnJhZ21lbnQ6bnVsbCxoYXNSZW5kZXJl
ZDohMSxidWlsZEZyYWdtZW50OmZ1bmN0aW9uKGUpe3ZhciB0PWUuY3JlYXRlRG9jdW1lbnRGcmFn
bWVudCgpLHI9ZS5jcmVhdGVDb21tZW50KCIiKTtyZXR1cm4gZS5hcHBlbmRDaGlsZCh0LHIpLHR9
LGJ1aWxkUmVuZGVyTm9kZXM6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPW5ldyBBcnJheSgxKTtyZXR1
cm4gblswXT1lLmNyZWF0ZU1vcnBoQXQodCwwLDAsciksZS5pbnNlcnRCb3VuZGFyeSh0LDApLGUu
aW5zZXJ0Qm91bmRhcnkodCxudWxsKSxufSxzdGF0ZW1lbnRzOltbImNvbnRlbnQiLCJsaW5rVGl0
bGUiLFsibG9jIixbbnVsbCxbMSwxN10sWzEsMzBdXV1dXSxsb2NhbHM6W10sdGVtcGxhdGVzOltd
fX0oKSx0PWZ1bmN0aW9uKCl7cmV0dXJue21ldGE6e30saXNFbXB0eTohMSxhcml0eTowLGNhY2hl
ZEZyYWdtZW50Om51bGwsaGFzUmVuZGVyZWQ6ITEsYnVpbGRGcmFnbWVudDpmdW5jdGlvbihlKXt2
YXIgdD1lLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxyPWUuY3JlYXRlQ29tbWVudCgiIik7cmV0
dXJuIGUuYXBwZW5kQ2hpbGQodCxyKSx0fSxidWlsZFJlbmRlck5vZGVzOmZ1bmN0aW9uKGUsdCxy
KXt2YXIgbj1uZXcgQXJyYXkoMSk7cmV0dXJuIG5bMF09ZS5jcmVhdGVNb3JwaEF0KHQsMCwwLHIp
LGUuaW5zZXJ0Qm91bmRhcnkodCwwKSxlLmluc2VydEJvdW5kYXJ5KHQsbnVsbCksbn0sc3RhdGVt
ZW50czpbWyJjb250ZW50IiwieWllbGQiLFsibG9jIixbbnVsbCxbMSwzOF0sWzEsNDddXV1dXSxs
b2NhbHM6W10sdGVtcGxhdGVzOltdfX0oKTtyZXR1cm57bWV0YTp7fSxpc0VtcHR5OiExLGFyaXR5
OjAsY2FjaGVkRnJhZ21lbnQ6bnVsbCxoYXNSZW5kZXJlZDohMSxidWlsZEZyYWdtZW50OmZ1bmN0
aW9uKGUpe3ZhciB0PWUuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLHI9ZS5jcmVhdGVDb21tZW50
KCIiKTtyZXR1cm4gZS5hcHBlbmRDaGlsZCh0LHIpLHR9LGJ1aWxkUmVuZGVyTm9kZXM6ZnVuY3Rp
b24oZSx0LHIpe3ZhciBuPW5ldyBBcnJheSgxKTtyZXR1cm4gblswXT1lLmNyZWF0ZU1vcnBoQXQo
dCwwLDAsciksZS5pbnNlcnRCb3VuZGFyeSh0LDApLGUuaW5zZXJ0Qm91bmRhcnkodCxudWxsKSxu
fSxzdGF0ZW1lbnRzOltbImJsb2NrIiwiaWYiLFtbImdldCIsImxpbmtUaXRsZSIsWyJsb2MiLFtu
dWxsLFsxLDZdLFsxLDE1XV1dXV0sW10sMCwxLFsibG9jIixbbnVsbCxbMSwwXSxbMSw1NF1dXV1d
LGxvY2FsczpbXSx0ZW1wbGF0ZXM6W2UsdF19fSgpKX0pLGUoImVtYmVyLWh0bWxiYXJzL3RlbXBs
YXRlcy90b3AtbGV2ZWwtdmlldyIsWyJleHBvcnRzIiwiZW1iZXItdGVtcGxhdGUtY29tcGlsZXIv
c3lzdGVtL3RlbXBsYXRlIl0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZS5kZWZhdWx0PXQu
ZGVmYXVsdChmdW5jdGlvbigpe3JldHVybnttZXRhOnt9LGlzRW1wdHk6ITEsYXJpdHk6MCxjYWNo
ZWRGcmFnbWVudDpudWxsLGhhc1JlbmRlcmVkOiExLGJ1aWxkRnJhZ21lbnQ6ZnVuY3Rpb24oZSl7
dmFyIHQ9ZS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkscj1lLmNyZWF0ZUNvbW1lbnQoIiIpO3Jl
dHVybiBlLmFwcGVuZENoaWxkKHQsciksdH0sYnVpbGRSZW5kZXJOb2RlczpmdW5jdGlvbihlLHQs
cil7dmFyIG49bmV3IEFycmF5KDEpO3JldHVybiBuWzBdPWUuY3JlYXRlTW9ycGhBdCh0LDAsMCxy
KSxlLmluc2VydEJvdW5kYXJ5KHQsMCksZS5pbnNlcnRCb3VuZGFyeSh0LG51bGwpLG59LHN0YXRl
bWVudHM6W1siY29udGVudCIsIm91dGxldCIsWyJsb2MiLFtudWxsLFsxLDBdLFsxLDEwXV1dXV0s
bG9jYWxzOltdLHRlbXBsYXRlczpbXX19KCkpfSksZSgiZW1iZXItaHRtbGJhcnMvdXRpbHMvZGVj
b2RlLWVhY2gta2V5IixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9wcm9wZXJ0eV9nZXQiLCJlbWJl
ci1tZXRhbC91dGlscyJdLGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihl
KXt2YXIgdD12b2lkIDAsbj10eXBlb2YgZTtyZXR1cm4gdD0ic3RyaW5nIj09PW58fCJudW1iZXIi
PT09bj9lOnIuZ3VpZEZvcihlKX1mdW5jdGlvbiBpKGUscixpKXt2YXIgbztzd2l0Y2gocil7Y2Fz
ZSJAaW5kZXgiOm89aTticmVhaztjYXNlIkBpZGVudGl0eSI6bz1uKGUpO2JyZWFrO2RlZmF1bHQ6
bz1yP3QuZ2V0KGUscik6bihlKX1yZXR1cm4ibnVtYmVyIj09dHlwZW9mIG8mJihvPVN0cmluZyhv
KSksb31lLmRlZmF1bHQ9aX0pLGUoImVtYmVyLWh0bWxiYXJzL3V0aWxzL2V4dHJhY3QtcG9zaXRp
b25hbC1wYXJhbXMiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL2RlYnVnIiwiZW1iZXItbWV0YWwv
c3RyZWFtcy9zdHJlYW0iLCJlbWJlci1tZXRhbC9zdHJlYW1zL3V0aWxzIl0sZnVuY3Rpb24oZSx0
LHIsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSx0LHIsbil7dmFyIGk9YXJndW1lbnRzLmxl
bmd0aDw9NHx8dm9pZCAwPT09YXJndW1lbnRzWzRdfHxhcmd1bWVudHNbNF0sYT10LnBvc2l0aW9u
YWxQYXJhbXM7YSYmbyhlLGEscixuLGkpfWZ1bmN0aW9uIG8oZSx0LHIsbil7dmFyIGk9YXJndW1l
bnRzLmxlbmd0aDw9NHx8dm9pZCAwPT09YXJndW1lbnRzWzRdfHxhcmd1bWVudHNbNF0sbz0ic3Ry
aW5nIj09dHlwZW9mIHQ7bz9zKGUsdCxyLG4saSk6YShlLHQscixuLGkpfWZ1bmN0aW9uIGEoZSx0
LHIsbixpKXtmb3IodmFyIG89TWF0aC5taW4oci5sZW5ndGgsdC5sZW5ndGgpLGE9MDthPG87YSsr
KXt2YXIgcz1yW2FdO25bdFthXV09c319ZnVuY3Rpb24gcyhlLHQsaSxvLGEpe3ZhciBzPXQgaW4g
bztpZigwIT09aS5sZW5ndGh8fCFzKXt2YXIgdT1uZXcgci5TdHJlYW0oZnVuY3Rpb24oKXtyZXR1
cm4gbi5yZWFkQXJyYXkoaS5zbGljZSgwKSl9LCJwYXJhbXMiKTtvW3RdPXU7Zm9yKHZhciBsPTA7
bDxpLmxlbmd0aDtsKyspe3ZhciBjPWlbbF07dS5hZGREZXBlbmRlbmN5KGMpfX19ZS5kZWZhdWx0
PWksZS5wcm9jZXNzUG9zaXRpb25hbFBhcmFtcz1vfSksZSgiZW1iZXItaHRtbGJhcnMvdXRpbHMv
aXMtY29tcG9uZW50IixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9mZWF0dXJlcyIsImVtYmVyLWh0
bWxiYXJzL3N5c3RlbS9sb29rdXAtaGVscGVyIiwiZW1iZXItaHRtbGJhcnMva2V5d29yZHMvY2xv
c3VyZS1jb21wb25lbnQiLCJlbWJlci1tZXRhbC9zdHJlYW1zL3V0aWxzIl0sZnVuY3Rpb24oZSx0
LHIsbixpKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbyhlLHQscil7cmV0dXJuIGUuaGFzUmVnaXN0
cmF0aW9uKCJjb21wb25lbnQ6Iit0LHIpfHxlLmhhc1JlZ2lzdHJhdGlvbigidGVtcGxhdGU6Y29t
cG9uZW50cy8iK3Qscil9ZnVuY3Rpb24gYShlLHQsYSl7dmFyIHM9ZS5vd25lcjtpZighcylyZXR1
cm4hMTtpZigic3RyaW5nIj09dHlwZW9mIGEpe2lmKHIuQ09OVEFJTlNfRE9UX0NBQ0hFLmdldChh
KSl7dmFyIHU9ZS5ob29rcy5nZXQoZSx0LGEpO2lmKGkuaXNTdHJlYW0odSkpe3ZhciBsPXUudmFs
dWUoKTtpZihuLmlzQ29tcG9uZW50Q2VsbChsKSlyZXR1cm4hMH19aWYoIXIuQ09OVEFJTlNfREFT
SF9DQUNIRS5nZXQoYSkpcmV0dXJuITE7aWYobyhzLGEpKXJldHVybiEwO3ZhciBjPWUubWV0YSYm
ZS5tZXRhLm1vZHVsZU5hbWU7aWYoIWMpcmV0dXJuITE7dmFyIGY9e3NvdXJjZToidGVtcGxhdGU6
IitjfTtyZXR1cm4gbyhzLGEsZil9fWUuZGVmYXVsdD1hfSksZSgiZW1iZXItaHRtbGJhcnMvdXRp
bHMvbG9va3VwLWNvbXBvbmVudCIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvZmVhdHVyZXMiXSxm
dW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxyLG4pe3JldHVybntjb21w
b25lbnQ6ZS5jb21wb25lbnRGb3Iocix0LG4pLGxheW91dDplLmxheW91dEZvcihyLHQsbil9fWZ1
bmN0aW9uIG4oZSx0LG4pe3ZhciBpPWUubG9va3VwKCJjb21wb25lbnQtbG9va3VwOm1haW4iKSxv
PW4mJm4uc291cmNlO2lmKG8pe3ZhciBhPXIoaSxlLHQsbik7aWYoYS5jb21wb25lbnR8fGEubGF5
b3V0KXJldHVybiBhfXJldHVybiByKGksZSx0KX1lLmRlZmF1bHQ9bn0pLGUoImVtYmVyLWh0bWxi
YXJzL3V0aWxzL25ldy1zdHJlYW0iLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL3N0cmVhbXMvcHJv
eHktc3RyZWFtIiwiZW1iZXItaHRtbGJhcnMvdXRpbHMvc3Vic2NyaWJlIl0sZnVuY3Rpb24oZSx0
LHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUsbixpLG8sYSl7dmFyIHM9bmV3IHQuZGVmYXVs
dChpLGE/IiI6bik7byYmci5kZWZhdWx0KG8sZSxzKSxlW25dPXN9ZS5kZWZhdWx0PW59KSxlKCJl
bWJlci1odG1sYmFycy91dGlscy9ub3JtYWxpemUtc2VsZiIsWyJleHBvcnRzIl0sZnVuY3Rpb24o
ZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHQoZSl7cmV0dXJuIHZvaWQgMD09PWU/bnVsbDplfWUu
ZGVmYXVsdD10fSksZSgiZW1iZXItaHRtbGJhcnMvdXRpbHMvc3RyaW5nIixbImV4cG9ydHMiLCJl
bWJlci1tZXRhbC9jb3JlIiwiZW1iZXItcnVudGltZS9zeXN0ZW0vc3RyaW5nIiwiaHRtbGJhcnMt
dXRpbCJdLGZ1bmN0aW9uKGUsdCxyLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUpe3JldHVy
biBudWxsPT09ZXx8dm9pZCAwPT09ZT9lPSIiOiJzdHJpbmciIT10eXBlb2YgZSYmKGU9IiIrZSks
bmV3IG4uU2FmZVN0cmluZyhlKX1yLmRlZmF1bHQuaHRtbFNhZmU9aSwodC5kZWZhdWx0LkVYVEVO
RF9QUk9UT1RZUEVTPT09ITB8fHQuZGVmYXVsdC5FWFRFTkRfUFJPVE9UWVBFUy5TdHJpbmcpJiYo
U3RyaW5nLnByb3RvdHlwZS5odG1sU2FmZT1mdW5jdGlvbigpe3JldHVybiBpKHRoaXMpfSksZS5T
YWZlU3RyaW5nPW4uU2FmZVN0cmluZyxlLmh0bWxTYWZlPWksZS5lc2NhcGVFeHByZXNzaW9uPW4u
ZXNjYXBlRXhwcmVzc2lvbn0pLGUoImVtYmVyLWh0bWxiYXJzL3V0aWxzL3N1YnNjcmliZSIsWyJl
eHBvcnRzIiwiZW1iZXItbWV0YWwvc3RyZWFtcy91dGlscyJdLGZ1bmN0aW9uKGUsdCl7InVzZSBz
dHJpY3QiO2Z1bmN0aW9uIHIoZSxyLG4saSl7aWYodC5pc1N0cmVhbShpKSl7dmFyIG89bi5nZXRD
b21wb25lbnQoKSxhPWUuc3RyZWFtVW5zdWJzY3JpYmVycz1lLnN0cmVhbVVuc3Vic2NyaWJlcnN8
fFtdO2EucHVzaChpLnN1YnNjcmliZShmdW5jdGlvbigpe2UuaXNEaXJ0eT0hMCxvJiZvLl9yZW5k
ZXJOb2RlJiYoby5fcmVuZGVyTm9kZS5pc0RpcnR5PSEwKSxlLmdldFN0YXRlKCkubWFuYWdlciYm
KGUuc2hvdWxkUmVjZWl2ZUF0dHJzPSEwKSxlLm93bmVyTm9kZS5lbWJlclZpZXcuc2NoZWR1bGVS
ZXZhbGlkYXRlKGUsdC5sYWJlbEZvcihpKSl9KSl9fWUuZGVmYXVsdD1yfSksZSgiZW1iZXItaHRt
bGJhcnMvdXRpbHMvdXBkYXRlLXNjb3BlIixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9zdHJlYW1z
L3Byb3h5LXN0cmVhbSIsImVtYmVyLWh0bWxiYXJzL3V0aWxzL3N1YnNjcmliZSJdLGZ1bmN0aW9u
KGUsdCxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlLG4saSxvLGEpe3ZhciBzPWVbbl07aWYo
cylzLnNldFNvdXJjZShpKTtlbHNle3ZhciB1PW5ldyB0LmRlZmF1bHQoaSxhP251bGw6bik7byYm
ci5kZWZhdWx0KG8sZSx1KSxlW25dPXV9fWUuZGVmYXVsdD1ufSksZSgiZW1iZXItbWV0YWwtdmll
d3MvaHRtbGJhcnMtcmVuZGVyZXIiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL3J1bl9sb29wIiwi
ZW1iZXItbWV0YWwvcHJvcGVydHlfZ2V0IiwiZW1iZXItbWV0YWwvcHJvcGVydHlfc2V0IiwiZW1i
ZXItbWV0YWwvYXNzaWduIiwiZW1iZXItbWV0YWwvc2V0X3Byb3BlcnRpZXMiLCJlbWJlci12aWV3
cy9zeXN0ZW0vYnVpbGQtY29tcG9uZW50LXRlbXBsYXRlIiwiZW1iZXItbWV0YWwvZW52aXJvbm1l
bnQiLCJodG1sYmFycy1ydW50aW1lIl0sZnVuY3Rpb24oZSx0LHIsbixpLG8sYSxzLHUpeyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiBsKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg8PTF8fHZvaWQgMD09
PWFyZ3VtZW50c1sxXT97fTphcmd1bWVudHNbMV0scj10LmRlc3RpbmVkRm9yRE9NO3RoaXMuX2Rv
bT1lLHRoaXMuX2Rlc3RpbmVkRm9yRE9NPXZvaWQgMD09PXI/cy5kZWZhdWx0Lmhhc0RPTTpyfWZ1
bmN0aW9uIGMoKXt0aGlzLm1vcnBocz1bXX1lLlJlbmRlcmVyPWwsZS5Nb3JwaFNldD1jLGwucHJv
dG90eXBlLnByZXJlbmRlclRvcExldmVsVmlldz1mdW5jdGlvbihlLHQpe2lmKCJpbkRPTSI9PT1l
Ll9zdGF0ZSl0aHJvdyBuZXcgRXJyb3IoIllvdSBjYW5ub3QgaW5zZXJ0IGEgVmlldyB0aGF0IGhh
cyBhbHJlYWR5IGJlZW4gcmVuZGVyZWQiKTtlLm93bmVyVmlldz10LmVtYmVyVmlldz1lLGUuX3Jl
bmRlck5vZGU9dDt2YXIgbj1yLmdldChlLCJsYXlvdXQiKSxpPXIuZ2V0KGUsInRlbXBsYXRlIiks
bz17Y29tcG9uZW50OmUsbGF5b3V0Om59LHM9YS5kZWZhdWx0KG8se30se3NlbGY6ZSx0ZW1wbGF0
ZXM6aT97ZGVmYXVsdDppLnJhd306dm9pZCAwfSkuYmxvY2s7ZS5yZW5kZXJCbG9jayhzLHQpLGUu
bGFzdFJlc3VsdD10Lmxhc3RSZXN1bHQsdGhpcy5jbGVhclJlbmRlcmVkVmlld3MoZS5lbnYpfSxs
LnByb3RvdHlwZS5yZW5kZXJUb3BMZXZlbFZpZXc9ZnVuY3Rpb24oZSx0KXtlLl93aWxsSW5zZXJ0
JiYoZS5fd2lsbEluc2VydD0hMSx0aGlzLnByZXJlbmRlclRvcExldmVsVmlldyhlLHQpLHRoaXMu
ZGlzcGF0Y2hMaWZlY3ljbGVIb29rcyhlLmVudikpfSxsLnByb3RvdHlwZS5yZXZhbGlkYXRlVG9w
TGV2ZWxWaWV3PWZ1bmN0aW9uKGUpe2UuX3JlbmRlck5vZGUubGFzdFJlc3VsdCYmKGUuX3JlbmRl
ck5vZGUubGFzdFJlc3VsdC5yZXZhbGlkYXRlKGUuZW52KSwiaW5ET00iPT09ZS5fc3RhdGUmJnRo
aXMuZGlzcGF0Y2hMaWZlY3ljbGVIb29rcyhlLmVudiksdGhpcy5jbGVhclJlbmRlcmVkVmlld3Mo
ZS5lbnYpKX0sbC5wcm90b3R5cGUuZGlzcGF0Y2hMaWZlY3ljbGVIb29rcz1mdW5jdGlvbihlKXt2
YXIgdCxyLG49ZS52aWV3LGk9ZS5saWZlY3ljbGVIb29rcztmb3IodD0wO3Q8aS5sZW5ndGg7dCsr
KXtzd2l0Y2gocj1pW3RdLG4uX2Rpc3BhdGNoaW5nPXIudHlwZSxyLnR5cGUpe2Nhc2UiZGlkSW5z
ZXJ0RWxlbWVudCI6dGhpcy5kaWRJbnNlcnRFbGVtZW50KHIudmlldyk7YnJlYWs7Y2FzZSJkaWRV
cGRhdGUiOnRoaXMuZGlkVXBkYXRlKHIudmlldyl9dGhpcy5kaWRSZW5kZXIoci52aWV3KX1uLl9k
aXNwYXRjaGluZz1udWxsLGUubGlmZWN5Y2xlSG9va3MubGVuZ3RoPTB9LGwucHJvdG90eXBlLmVu
c3VyZVZpZXdOb3RSZW5kZXJpbmc9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5vd25lclZpZXcuZW52O2lm
KHQmJnQucmVuZGVyZWRWaWV3cy5pbmRleE9mKGUuZWxlbWVudElkKSE9PS0xKXRocm93IG5ldyBF
cnJvcigiU29tZXRoaW5nIHlvdSBkaWQgY2F1c2VkIGEgdmlldyB0byByZS1yZW5kZXIgYWZ0ZXIg
aXQgcmVuZGVyZWQgYnV0IGJlZm9yZSBpdCB3YXMgaW5zZXJ0ZWQgaW50byB0aGUgRE9NLiIpfSxj
LnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oZSl7dGhpcy5tb3JwaHMucHVzaChlKSxlLnNlZW49ITB9
LGMucHJvdG90eXBlLmhhcz1mdW5jdGlvbihlKXtyZXR1cm4gZS5zZWVufSxjLnByb3RvdHlwZS5j
bGVhcj1mdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLm1vcnBocyx0PTAscj1lLmxlbmd0aDt0PHI7
dCsrKWVbdF0uc2Vlbj0hMTt0aGlzLm1vcnBocz1bXX0sbC5wcm90b3R5cGUuY2xlYXJSZW5kZXJl
ZFZpZXdzPWZ1bmN0aW9uKGUpe2UucmVuZGVyZWROb2Rlcy5jbGVhcigpLGUucmVuZGVyZWRWaWV3
cy5sZW5ndGg9MH0sbC5wcm90b3R5cGUuYXBwZW5kVG89ZnVuY3Rpb24oZSxyKXt2YXIgbj10aGlz
Ll9kb20uYXBwZW5kTW9ycGgocik7bi5vd25lck5vZGU9bixlLl93aWxsSW5zZXJ0PSEwLHQuZGVm
YXVsdC5zY2hlZHVsZSgicmVuZGVyIix0aGlzLHRoaXMucmVuZGVyVG9wTGV2ZWxWaWV3LGUsbil9
LGwucHJvdG90eXBlLnJlcGxhY2VJbj1mdW5jdGlvbihlLHIpe3ZhciBuPXRoaXMuX2RvbS5yZXBs
YWNlQ29udGVudFdpdGhNb3JwaChyKTtuLm93bmVyTm9kZT1uLGUuX3dpbGxJbnNlcnQ9ITAsdC5k
ZWZhdWx0LnNjaGVkdWxlT25jZSgicmVuZGVyIix0aGlzLHRoaXMucmVuZGVyVG9wTGV2ZWxWaWV3
LGUsbil9LGwucHJvdG90eXBlLmNyZWF0ZUVsZW1lbnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5f
ZG9tLmNyZWF0ZUZyYWdtZW50TW9ycGgoKTt0Lm93bmVyTm9kZT10LHRoaXMucHJlcmVuZGVyVG9w
TGV2ZWxWaWV3KGUsdCl9LGwucHJvdG90eXBlLmRpZENyZWF0ZUVsZW1lbnQ9ZnVuY3Rpb24oZSx0
KXt0JiYoZS5lbGVtZW50PXQpLGUuX3RyYW5zaXRpb25UbyYmZS5fdHJhbnNpdGlvblRvKCJoYXNF
bGVtZW50Iil9LGwucHJvdG90eXBlLndpbGxJbnNlcnRFbGVtZW50PWZ1bmN0aW9uKGUpe2UudHJp
Z2dlciYmZS50cmlnZ2VyKCJ3aWxsSW5zZXJ0RWxlbWVudCIpfSxsLnByb3RvdHlwZS5zZXRBdHRy
cz1mdW5jdGlvbihlLHQpe24uc2V0KGUsImF0dHJzIix0KX0sbC5wcm90b3R5cGUuY29tcG9uZW50
SW5pdEF0dHJzPWZ1bmN0aW9uKGUsdCl7ZS50cmlnZ2VyKCJkaWRJbml0QXR0cnMiLHthdHRyczp0
fSksZS50cmlnZ2VyKCJkaWRSZWNlaXZlQXR0cnMiLHtuZXdBdHRyczp0fSl9LGwucHJvdG90eXBl
LmRpZEluc2VydEVsZW1lbnQ9ZnVuY3Rpb24oZSl7ZS5fdHJhbnNpdGlvblRvJiZlLl90cmFuc2l0
aW9uVG8oImluRE9NIiksZS50cmlnZ2VyJiZlLnRyaWdnZXIoImRpZEluc2VydEVsZW1lbnQiKX0s
bC5wcm90b3R5cGUuZGlkVXBkYXRlPWZ1bmN0aW9uKGUpe2UudHJpZ2dlciYmZS50cmlnZ2VyKCJk
aWRVcGRhdGUiKX0sbC5wcm90b3R5cGUuZGlkUmVuZGVyPWZ1bmN0aW9uKGUpe2UudHJpZ2dlciYm
ZS50cmlnZ2VyKCJkaWRSZW5kZXIiKX0sbC5wcm90b3R5cGUudXBkYXRlQXR0cnM9ZnVuY3Rpb24o
ZSx0KXt0aGlzLnNldEF0dHJzKGUsdCl9LGwucHJvdG90eXBlLmNvbXBvbmVudFVwZGF0ZUF0dHJz
PWZ1bmN0aW9uKGUsdCl7dmFyIHI9bnVsbDtlLmF0dHJzPyhyPWkuZGVmYXVsdCh7fSxlLmF0dHJz
KSxvLmRlZmF1bHQoZS5hdHRycyx0KSk6bi5zZXQoZSwiYXR0cnMiLHQpLGUudHJpZ2dlcigiZGlk
VXBkYXRlQXR0cnMiLHtvbGRBdHRyczpyLG5ld0F0dHJzOnR9KSxlLnRyaWdnZXIoImRpZFJlY2Vp
dmVBdHRycyIse29sZEF0dHJzOnIsbmV3QXR0cnM6dH0pfSxsLnByb3RvdHlwZS53aWxsVXBkYXRl
PWZ1bmN0aW9uKGUsdCl7ZS5fd2lsbFVwZGF0ZSYmZS5fd2lsbFVwZGF0ZSh0KX0sbC5wcm90b3R5
cGUuY29tcG9uZW50V2lsbFVwZGF0ZT1mdW5jdGlvbihlKXtlLnRyaWdnZXIoIndpbGxVcGRhdGUi
KX0sbC5wcm90b3R5cGUud2lsbFJlbmRlcj1mdW5jdGlvbihlKXtlLl93aWxsUmVuZGVyJiZlLl93
aWxsUmVuZGVyKCl9LGwucHJvdG90eXBlLmNvbXBvbmVudFdpbGxSZW5kZXI9ZnVuY3Rpb24oZSl7
ZS50cmlnZ2VyKCJ3aWxsUmVuZGVyIil9LGwucHJvdG90eXBlLnJlcmVuZGVyPWZ1bmN0aW9uKGUp
e3ZhciB0PWUuX3JlbmRlck5vZGU7dC5pc0RpcnR5PSEwLHUuaW50ZXJuYWwudmlzaXRDaGlsZHJl
bih0LmNoaWxkTm9kZXMsZnVuY3Rpb24oZSl7ZS5nZXRTdGF0ZSgpLm1hbmFnZXImJihlLnNob3Vs
ZFJlY2VpdmVBdHRycz0hMCksZS5pc0RpcnR5PSEwfSksdC5vd25lck5vZGUuZW1iZXJWaWV3LnNj
aGVkdWxlUmV2YWxpZGF0ZSh0LGUudG9TdHJpbmcoKSwicmVyZW5kZXJpbmciKX0sbC5wcm90b3R5
cGUucmVtb3ZlPWZ1bmN0aW9uKGUscil7dGhpcy53aWxsRGVzdHJveUVsZW1lbnQoZSksZS5fd2ls
bFJlbW92ZUVsZW1lbnQ9ITAsdC5kZWZhdWx0LnNjaGVkdWxlKCJyZW5kZXIiLHRoaXMsdGhpcy5y
ZW5kZXJFbGVtZW50UmVtb3ZhbCxlKX0sbC5wcm90b3R5cGUucmVuZGVyRWxlbWVudFJlbW92YWw9
ZnVuY3Rpb24oZSl7ZS5fd2lsbFJlbW92ZUVsZW1lbnQmJihlLl93aWxsUmVtb3ZlRWxlbWVudD0h
MSxlLl9yZW5kZXJOb2RlJiZlLmVsZW1lbnQmJmUuZWxlbWVudC5wYXJlbnROb2RlJiZlLl9yZW5k
ZXJOb2RlLmNsZWFyKCksdGhpcy5kaWREZXN0cm95RWxlbWVudChlKSl9LGwucHJvdG90eXBlLndp
bGxSZW1vdmVFbGVtZW50PWZ1bmN0aW9uKCl7fSxsLnByb3RvdHlwZS53aWxsRGVzdHJveUVsZW1l
bnQ9ZnVuY3Rpb24oZSl7ZS5fd2lsbERlc3Ryb3lFbGVtZW50JiZlLl93aWxsRGVzdHJveUVsZW1l
bnQoKSxlLnRyaWdnZXImJihlLnRyaWdnZXIoIndpbGxEZXN0cm95RWxlbWVudCIpLGUudHJpZ2dl
cigid2lsbENsZWFyUmVuZGVyIikpLGUuX3RyYW5zaXRpb25UbyYmZS5fdHJhbnNpdGlvblRvKCJk
ZXN0cm95aW5nIil9LGwucHJvdG90eXBlLmRpZERlc3Ryb3lFbGVtZW50PWZ1bmN0aW9uKGUpe2Uu
ZWxlbWVudD1udWxsLCJkZXN0cm95aW5nIiE9PWUuX3N0YXRlJiZlLl90cmFuc2l0aW9uVG8mJmUu
X3RyYW5zaXRpb25UbygicHJlUmVuZGVyIiksZS50cmlnZ2VyJiZlLnRyaWdnZXIoImRpZERlc3Ry
b3lFbGVtZW50Iil9O3ZhciBmPXtjcmVhdGU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5kb207cmV0dXJu
IG5ldyBsKHQse2Rlc3RpbmVkRm9yRE9NOiExfSl9fTtlLkluZXJ0UmVuZGVyZXI9Zjt2YXIgZD17
Y3JlYXRlOmZ1bmN0aW9uKGUpe3ZhciB0PWUuZG9tO3JldHVybiBuZXcgbCh0LHtkZXN0aW5lZEZv
ckRPTTohMH0pfX07ZS5JbnRlcmFjdGl2ZVJlbmRlcmVyPWR9KSxlKCJlbWJlci1tZXRhbC12aWV3
cy9pbmRleCIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwtdmlld3MvaHRtbGJhcnMtcmVuZGVyZXIi
XSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7dmFyIHI9dCh7fSxl
KTtyZXR1cm4gZGVsZXRlIHIuZGVmYXVsdCxyfWZ1bmN0aW9uIG4oZSx0KXtmb3IodmFyIHI9T2Jq
ZWN0LmdldE93blByb3BlcnR5TmFtZXModCksbj0wO248ci5sZW5ndGg7bisrKXt2YXIgaT1yW25d
LG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LGkpO28mJm8uY29uZmlndXJhYmxl
JiZ2b2lkIDA9PT1lW2ldJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxpLG8pfXJldHVybiBlfW4o
ZSxyKHQsbikpfSksZSgiZW1iZXItbWV0YWwvYWxpYXMiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFs
L2RlYnVnIiwiZW1iZXItbWV0YWwvcHJvcGVydHlfZ2V0IiwiZW1iZXItbWV0YWwvcHJvcGVydHlf
c2V0IiwiZW1iZXItbWV0YWwvZXJyb3IiLCJlbWJlci1tZXRhbC9wcm9wZXJ0aWVzIiwiZW1iZXIt
bWV0YWwvY29tcHV0ZWQiLCJlbWJlci1tZXRhbC91dGlscyIsImVtYmVyLW1ldGFsL21ldGEiLCJl
bWJlci1tZXRhbC9kZXBlbmRlbnRfa2V5cyJdLGZ1bmN0aW9uKGUsdCxyLG4saSxvLGEscyx1LGwp
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBjKGUpe3JldHVybiBuZXcgZihlKX1mdW5jdGlvbiBmKGUp
e3RoaXMuaXNEZXNjcmlwdG9yPSEwLHRoaXMuYWx0S2V5PWUsdGhpcy5fZGVwZW5kZW50S2V5cz1b
ZV19ZnVuY3Rpb24gZChlLHQscil7dGhyb3cgbmV3IGkuZGVmYXVsdCgiQ2Fubm90IHNldCByZWFk
LW9ubHkgcHJvcGVydHkgJyIrdCsiJyBvbiBvYmplY3Q6ICIrcy5pbnNwZWN0KGUpKX1mdW5jdGlv
biBwKGUsdCxyKXtyZXR1cm4gby5kZWZpbmVQcm9wZXJ0eShlLHQsbnVsbCksbi5zZXQoZSx0LHIp
fWUuZGVmYXVsdD1jLGUuQWxpYXNlZFByb3BlcnR5PWYsZi5wcm90b3R5cGU9T2JqZWN0LmNyZWF0
ZShvLkRlc2NyaXB0b3IucHJvdG90eXBlKSxmLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oZSx0KXty
ZXR1cm4gci5nZXQoZSx0aGlzLmFsdEtleSl9LGYucHJvdG90eXBlLnNldD1mdW5jdGlvbihlLHQs
cil7cmV0dXJuIG4uc2V0KGUsdGhpcy5hbHRLZXkscil9LGYucHJvdG90eXBlLndpbGxXYXRjaD1m
dW5jdGlvbihlLHQpe2wuYWRkRGVwZW5kZW50S2V5cyh0aGlzLGUsdCx1Lm1ldGEoZSkpfSxmLnBy
b3RvdHlwZS5kaWRVbndhdGNoPWZ1bmN0aW9uKGUsdCl7bC5yZW1vdmVEZXBlbmRlbnRLZXlzKHRo
aXMsZSx0LHUubWV0YShlKSl9LGYucHJvdG90eXBlLnNldHVwPWZ1bmN0aW9uKGUsdCl7dmFyIHI9
dS5tZXRhKGUpO3IucGVla1dhdGNoaW5nKHQpJiZsLmFkZERlcGVuZGVudEtleXModGhpcyxlLHQs
cil9LGYucHJvdG90eXBlLnRlYXJkb3duPWZ1bmN0aW9uKGUsdCl7dmFyIHI9dS5tZXRhKGUpO3Iu
cGVla1dhdGNoaW5nKHQpJiZsLnJlbW92ZURlcGVuZGVudEtleXModGhpcyxlLHQscil9LGYucHJv
dG90eXBlLnJlYWRPbmx5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2V0PWQsdGhpc30sZi5wcm90
b3R5cGUub25lV2F5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2V0PXAsdGhpc30sZi5wcm90b3R5
cGUuX21ldGE9dm9pZCAwLGYucHJvdG90eXBlLm1ldGE9YS5Db21wdXRlZFByb3BlcnR5LnByb3Rv
dHlwZS5tZXRhfSksZSgiZW1iZXItbWV0YWwvYXNzaWduIixbImV4cG9ydHMiXSxmdW5jdGlvbihl
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gdChlKXtmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxy
PUFycmF5KHQ+MT90LTE6MCksbj0xO248dDtuKyspcltuLTFdPWFyZ3VtZW50c1tuXTtmb3IodmFy
IGk9MCxvPXIubGVuZ3RoO2k8bztpKyspe3ZhciBhPXJbaV07aWYoYSlmb3IodmFyIHM9T2JqZWN0
LmtleXMoYSksdT0wLGw9cy5sZW5ndGg7dTxsO3UrKyl7dmFyIGM9c1t1XTtlW2NdPWFbY119fXJl
dHVybiBlfWUuZGVmYXVsdD10fSksZSgiZW1iZXItbWV0YWwvYmluZGluZyIsWyJleHBvcnRzIiwi
ZW1iZXItbWV0YWwvY29yZSIsImVtYmVyLW1ldGFsL2xvZ2dlciIsImVtYmVyLW1ldGFsL3J1bl9s
b29wIiwiZW1iZXItbWV0YWwvZGVidWciLCJlbWJlci1tZXRhbC9wcm9wZXJ0eV9nZXQiLCJlbWJl
ci1tZXRhbC9wcm9wZXJ0eV9zZXQiLCJlbWJlci1tZXRhbC91dGlscyIsImVtYmVyLW1ldGFsL2V2
ZW50cyIsImVtYmVyLW1ldGFsL29ic2VydmVyIiwiZW1iZXItbWV0YWwvcGF0aF9jYWNoZSJdLGZ1
bmN0aW9uKGUsdCxyLG4saSxvLGEscyx1LGwsYyl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGYoZSx0
KXt0aGlzLl9mcm9tPXQsdGhpcy5fdG89ZSx0aGlzLl9vbmVXYXk9dm9pZCAwLHRoaXMuX2RpcmVj
dGlvbj12b2lkIDAsdGhpcy5fcmVhZHlUb1N5bmM9dm9pZCAwLHRoaXMuX2Zyb21PYmo9dm9pZCAw
LHRoaXMuX2Zyb21QYXRoPXZvaWQgMCx0aGlzLl90b09iaj12b2lkIDB9ZnVuY3Rpb24gZChlLHQp
e2Zvcih2YXIgciBpbiB0KXQuaGFzT3duUHJvcGVydHkocikmJihlW3JdPXRbcl0pfWZ1bmN0aW9u
IHAoZSx0LHIpe3JldHVybiBuZXcgZih0LHIpLmNvbm5lY3QoZSl9ZS5iaW5kPXAsdC5kZWZhdWx0
LkxPR19CSU5ESU5HUz0hIXQuZGVmYXVsdC5FTlYuTE9HX0JJTkRJTkdTLGYucHJvdG90eXBlPXtj
b3B5OmZ1bmN0aW9uKCl7dmFyIGU9bmV3IGYodGhpcy5fdG8sdGhpcy5fZnJvbSk7cmV0dXJuIHRo
aXMuX29uZVdheSYmKGUuX29uZVdheT0hMCksZX0sZnJvbTpmdW5jdGlvbihlKXtyZXR1cm4gdGhp
cy5fZnJvbT1lLHRoaXN9LHRvOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl90bz1lLHRoaXN9LG9u
ZVdheTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9vbmVXYXk9ITAsdGhpc30sdG9TdHJpbmc6ZnVu
Y3Rpb24oKXt2YXIgZT10aGlzLl9vbmVXYXk/IltvbmVXYXldIjoiIjtyZXR1cm4iRW1iZXIuQmlu
ZGluZzwiK3MuZ3VpZEZvcih0aGlzKSsiPigiK3RoaXMuX2Zyb20rIiAtPiAiK3RoaXMuX3RvKyIp
IitlfSxjb25uZWN0OmZ1bmN0aW9uKGUpe3ZhciByPXZvaWQgMCxuPXZvaWQgMDtpZihjLmlzR2xv
YmFsUGF0aCh0aGlzLl9mcm9tKSl7dmFyIGk9Yy5nZXRGaXJzdEtleSh0aGlzLl9mcm9tKSxzPXQu
ZGVmYXVsdC5sb29rdXBbaV07cyYmKHI9cyxuPWMuZ2V0VGFpbFBhdGgodGhpcy5fZnJvbSkpfXJl
dHVybiB2b2lkIDA9PT1yJiYocj1lLG49dGhpcy5fZnJvbSksYS50cnlTZXQoZSx0aGlzLl90byxv
LmdldChyLG4pKSxsLmFkZE9ic2VydmVyKHIsbix0aGlzLCJmcm9tRGlkQ2hhbmdlIiksdGhpcy5f
b25lV2F5fHxsLmFkZE9ic2VydmVyKGUsdGhpcy5fdG8sdGhpcywidG9EaWRDaGFuZ2UiKSx1LmFk
ZExpc3RlbmVyKGUsIndpbGxEZXN0cm95Iix0aGlzLCJkaXNjb25uZWN0IiksdGhpcy5fcmVhZHlU
b1N5bmM9ITAsdGhpcy5fZnJvbU9iaj1yLHRoaXMuX2Zyb21QYXRoPW4sdGhpcy5fdG9PYmo9ZSx0
aGlzfSxkaXNjb25uZWN0OmZ1bmN0aW9uKCl7cmV0dXJuIGwucmVtb3ZlT2JzZXJ2ZXIodGhpcy5f
ZnJvbU9iaix0aGlzLl9mcm9tUGF0aCx0aGlzLCJmcm9tRGlkQ2hhbmdlIiksdGhpcy5fb25lV2F5
fHxsLnJlbW92ZU9ic2VydmVyKHRoaXMuX3RvT2JqLHRoaXMuX3RvLHRoaXMsInRvRGlkQ2hhbmdl
IiksdGhpcy5fcmVhZHlUb1N5bmM9ITEsdGhpc30sZnJvbURpZENoYW5nZTpmdW5jdGlvbihlKXt0
aGlzLl9zY2hlZHVsZVN5bmMoImZ3ZCIpfSx0b0RpZENoYW5nZTpmdW5jdGlvbihlKXt0aGlzLl9z
Y2hlZHVsZVN5bmMoImJhY2siKX0sX3NjaGVkdWxlU3luYzpmdW5jdGlvbihlKXt2YXIgdD10aGlz
Ll9kaXJlY3Rpb247dm9pZCAwPT09dCYmKG4uZGVmYXVsdC5zY2hlZHVsZSgic3luYyIsdGhpcywi
X3N5bmMiKSx0aGlzLl9kaXJlY3Rpb249ZSksImJhY2siPT09dCYmImZ3ZCI9PT1lJiYodGhpcy5f
ZGlyZWN0aW9uPSJmd2QiKX0sX3N5bmM6ZnVuY3Rpb24oKXt2YXIgZT10LmRlZmF1bHQuTE9HX0JJ
TkRJTkdTLG49dGhpcy5fdG9PYmo7aWYoIW4uaXNEZXN0cm95ZWQmJnRoaXMuX3JlYWR5VG9TeW5j
KXt2YXIgaT10aGlzLl9kaXJlY3Rpb24scz10aGlzLl9mcm9tT2JqLHU9dGhpcy5fZnJvbVBhdGg7
aWYodGhpcy5fZGlyZWN0aW9uPXZvaWQgMCwiZndkIj09PWkpe3ZhciBjPW8uZ2V0KHMsdSk7ZSYm
ci5kZWZhdWx0LmxvZygiICIsdGhpcy50b1N0cmluZygpLCItPiIsYyxzKSx0aGlzLl9vbmVXYXk/
YS50cnlTZXQobix0aGlzLl90byxjKTpsLl9zdXNwZW5kT2JzZXJ2ZXIobix0aGlzLl90byx0aGlz
LCJ0b0RpZENoYW5nZSIsZnVuY3Rpb24oKXthLnRyeVNldChuLHRoaXMuX3RvLGMpfSl9ZWxzZSBp
ZigiYmFjayI9PT1pKXt2YXIgZj1vLmdldChuLHRoaXMuX3RvKTtlJiZyLmRlZmF1bHQubG9nKCIg
Iix0aGlzLnRvU3RyaW5nKCksIjwtIixmLG4pLGwuX3N1c3BlbmRPYnNlcnZlcihzLHUsdGhpcywi
ZnJvbURpZENoYW5nZSIsZnVuY3Rpb24oKXthLnRyeVNldChzLHUsZil9KX19fX0sZChmLHtmcm9t
OmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7cmV0dXJuIG5ldyB0KHZvaWQgMCxlKX0sdG86ZnVuY3Rp
b24oZSl7dmFyIHQ9dGhpcztyZXR1cm4gbmV3IHQoZSx2b2lkIDApfX0pLGUuQmluZGluZz1mfSks
ZSgiZW1iZXItbWV0YWwvY2FjaGUiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL2VtcHR5X29iamVj
dCJdLGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSxyKXt0aGlzLnN0b3Jl
PW5ldyB0LmRlZmF1bHQsdGhpcy5zaXplPTAsdGhpcy5taXNzZXM9MCx0aGlzLmhpdHM9MCx0aGlz
LmxpbWl0PWUsdGhpcy5mdW5jPXJ9ZS5kZWZhdWx0PXI7dmFyIG49ZnVuY3Rpb24oKXt9O3IucHJv
dG90eXBlPXtzZXQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5saW1pdD50aGlzLnNpemUmJih0
aGlzLnNpemUrKyx2b2lkIDA9PT10P3RoaXMuc3RvcmVbZV09bjp0aGlzLnN0b3JlW2VdPXQpLHR9
LGdldDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnN0b3JlW2VdO3JldHVybiB2b2lkIDA9PT10Pyh0
aGlzLm1pc3NlcysrLHQ9dGhpcy5zZXQoZSx0aGlzLmZ1bmMoZSkpKTp0PT09bj8odGhpcy5oaXRz
KyssdD12b2lkIDApOnRoaXMuaGl0cysrLHR9LHB1cmdlOmZ1bmN0aW9uKCl7dGhpcy5zdG9yZT1u
ZXcgdC5kZWZhdWx0LHRoaXMuc2l6ZT0wLHRoaXMuaGl0cz0wLHRoaXMubWlzc2VzPTB9fX0pLGUo
ImVtYmVyLW1ldGFsL2NoYWlucyIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvcHJvcGVydHlfZ2V0
IiwiZW1iZXItbWV0YWwvbWV0YSIsImVtYmVyLW1ldGFsL3dhdGNoX2tleSIsImVtYmVyLW1ldGFs
L2VtcHR5X29iamVjdCJdLGZ1bmN0aW9uKGUsdCxyLG4saSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IG8oZSl7cmV0dXJuIGUubWF0Y2gobSlbMF19ZnVuY3Rpb24gYShlKXtyZXR1cm4gZSYmIm9iamVj
dCI9PXR5cGVvZiBlfWZ1bmN0aW9uIHMoZSl7cmV0dXJuIShhKGUpJiZlLmlzRGVzY3JpcHRvciYm
ZS5fdm9sYXRpbGU9PT0hMSl9ZnVuY3Rpb24gdSgpe3RoaXMuY2hhaW5zPW5ldyBpLmRlZmF1bHR9
ZnVuY3Rpb24gbCgpe3JldHVybiBuZXcgdX1mdW5jdGlvbiBjKGUsdCxpKXtpZihhKGUpKXt2YXIg
bz1yLm1ldGEoZSk7by53cml0YWJsZUNoYWluV2F0Y2hlcnMobCkuYWRkKHQsaSksbi53YXRjaEtl
eShlLHQsbyl9fWZ1bmN0aW9uIGYoZSx0LGkpe2lmKGEoZSkpe3ZhciBvPXIucGVla01ldGEoZSk7
byYmby5yZWFkYWJsZUNoYWluV2F0Y2hlcnMoKSYmKG89ci5tZXRhKGUpLG8ucmVhZGFibGVDaGFp
bldhdGNoZXJzKCkucmVtb3ZlKHQsaSksbi51bndhdGNoS2V5KGUsdCxvKSl9fWZ1bmN0aW9uIGQo
ZSx0LHIpe3RoaXMuX3BhcmVudD1lLHRoaXMuX2tleT10LHRoaXMuX3dhdGNoaW5nPXZvaWQgMD09
PXIsdGhpcy5fY2hhaW5zPXZvaWQgMCx0aGlzLl9vYmplY3Q9dm9pZCAwLHRoaXMuY291bnQ9MCx0
aGlzLl92YWx1ZT1yLHRoaXMuX3BhdGhzPXt9LHRoaXMuX3dhdGNoaW5nJiYodGhpcy5fb2JqZWN0
PWUudmFsdWUoKSx0aGlzLl9vYmplY3QmJmModGhpcy5fb2JqZWN0LHRoaXMuX2tleSx0aGlzKSl9
ZnVuY3Rpb24gcChlLG4pe2lmKGUpe3ZhciBpPXIucGVla01ldGEoZSk7aWYoIWl8fGkucHJvdG8h
PT1lKXtpZihzKGVbbl0pKXJldHVybiB0LmdldChlLG4pO3ZhciBvPWkucmVhZGFibGVDYWNoZSgp
O3JldHVybiBvJiZuIGluIG8/b1tuXTp2b2lkIDB9fX1mdW5jdGlvbiBoKGUpe3ZhciB0PXIucGVl
a01ldGEoZSk7aWYodCl7dD1yLm1ldGEoZSk7dmFyIG49dC5yZWFkYWJsZUNoYWluV2F0Y2hlcnMo
KTtuJiZuLnJldmFsaWRhdGVBbGwoKSx0LnJlYWRhYmxlQ2hhaW5zKCkmJnQud3JpdGFibGVDaGFp
bnMoKX19ZS5maW5pc2hDaGFpbnM9aDt2YXIgbT0vXihbXlwuXSspLzt1LnByb3RvdHlwZT17YWRk
OmZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcy5jaGFpbnNbZV07dm9pZCAwPT09cj90aGlzLmNoYWlu
c1tlXT1bdF06ci5wdXNoKHQpfSxyZW1vdmU6ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLmNoYWlu
c1tlXTtpZihyKWZvcih2YXIgbj0wLGk9ci5sZW5ndGg7bjxpO24rKylpZihyW25dPT09dCl7ci5z
cGxpY2UobiwxKTticmVha319LGhhczpmdW5jdGlvbihlLHQpe3ZhciByPXRoaXMuY2hhaW5zW2Vd
O2lmKHIpZm9yKHZhciBuPTAsaT1yLmxlbmd0aDtuPGk7bisrKWlmKHJbbl09PT10KXJldHVybiEw
O3JldHVybiExfSxyZXZhbGlkYXRlQWxsOmZ1bmN0aW9uKCl7Zm9yKHZhciBlIGluIHRoaXMuY2hh
aW5zKXRoaXMubm90aWZ5KGUsITAsdm9pZCAwKX0scmV2YWxpZGF0ZTpmdW5jdGlvbihlKXt0aGlz
Lm5vdGlmeShlLCEwLHZvaWQgMCl9LG5vdGlmeTpmdW5jdGlvbihlLHQscil7dmFyIG49dGhpcy5j
aGFpbnNbZV07aWYodm9pZCAwIT09biYmMCE9PW4ubGVuZ3RoKXt2YXIgaT12b2lkIDA7ciYmKGk9
W10pO2Zvcih2YXIgbz0wLGE9bi5sZW5ndGg7bzxhO28rKyluW29dLm5vdGlmeSh0LGkpO2lmKHZv
aWQgMCE9PXIpZm9yKHZhciBvPTAsYT1pLmxlbmd0aDtvPGE7bys9Mil7dmFyIHM9aVtvXSx1PWlb
bysxXTtyKHMsdSl9fX19LGQucHJvdG90eXBlPXt2YWx1ZTpmdW5jdGlvbigpe2lmKHZvaWQgMD09
PXRoaXMuX3ZhbHVlJiZ0aGlzLl93YXRjaGluZyl7dmFyIGU9dGhpcy5fcGFyZW50LnZhbHVlKCk7
dGhpcy5fdmFsdWU9cChlLHRoaXMuX2tleSl9cmV0dXJuIHRoaXMuX3ZhbHVlfSxkZXN0cm95OmZ1
bmN0aW9uKCl7aWYodGhpcy5fd2F0Y2hpbmcpe3ZhciBlPXRoaXMuX29iamVjdDtlJiZmKGUsdGhp
cy5fa2V5LHRoaXMpLHRoaXMuX3dhdGNoaW5nPSExfX0sY29weTpmdW5jdGlvbihlKXt2YXIgdCxy
PW5ldyBkKG51bGwsbnVsbCxlKSxuPXRoaXMuX3BhdGhzO2Zvcih0IGluIG4pblt0XTw9MHx8ci5h
ZGQodCk7cmV0dXJuIHJ9LGFkZDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLl9wYXRoczt0W2VdPSh0
W2VdfHwwKSsxO3ZhciByPW8oZSksbj1lLnNsaWNlKHIubGVuZ3RoKzEpO3RoaXMuY2hhaW4ocixu
KX0scmVtb3ZlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX3BhdGhzO3RbZV0+MCYmdFtlXS0tO3Zh
ciByPW8oZSksbj1lLnNsaWNlKHIubGVuZ3RoKzEpO3RoaXMudW5jaGFpbihyLG4pfSxjaGFpbjpm
dW5jdGlvbihlLHQpe3ZhciByLG49dGhpcy5fY2hhaW5zO3ZvaWQgMD09PW4/bj10aGlzLl9jaGFp
bnM9bmV3IGkuZGVmYXVsdDpyPW5bZV0sdm9pZCAwPT09ciYmKHI9bltlXT1uZXcgZCh0aGlzLGUs
dm9pZCAwKSksci5jb3VudCsrLHQmJihlPW8odCksdD10LnNsaWNlKGUubGVuZ3RoKzEpLHIuY2hh
aW4oZSx0KSl9LHVuY2hhaW46ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLl9jaGFpbnMsbj1yW2Vd
O2lmKHQmJnQubGVuZ3RoPjEpe3ZhciBpPW8odCksYT10LnNsaWNlKGkubGVuZ3RoKzEpO24udW5j
aGFpbihpLGEpfW4uY291bnQtLSxuLmNvdW50PD0wJiYocltuLl9rZXldPXZvaWQgMCxuLmRlc3Ry
b3koKSl9LG5vdGlmeTpmdW5jdGlvbihlLHQpe2lmKGUmJnRoaXMuX3dhdGNoaW5nKXt2YXIgcj10
aGlzLl9wYXJlbnQudmFsdWUoKTtyIT09dGhpcy5fb2JqZWN0JiYoZih0aGlzLl9vYmplY3QsdGhp
cy5fa2V5LHRoaXMpLHRoaXMuX29iamVjdD1yLGMocix0aGlzLl9rZXksdGhpcykpLHRoaXMuX3Zh
bHVlPXZvaWQgMH12YXIgbixpPXRoaXMuX2NoYWlucztpZihpKWZvcih2YXIgbyBpbiBpKW49aVtv
XSx2b2lkIDAhPT1uJiZuLm5vdGlmeShlLHQpO3QmJnRoaXMuX3BhcmVudCYmdGhpcy5fcGFyZW50
LnBvcHVsYXRlQWZmZWN0ZWQodGhpcy5fa2V5LDEsdCl9LHBvcHVsYXRlQWZmZWN0ZWQ6ZnVuY3Rp
b24oZSx0LHIpe3RoaXMuX2tleSYmKGU9dGhpcy5fa2V5KyIuIitlKSx0aGlzLl9wYXJlbnQ/dGhp
cy5fcGFyZW50LnBvcHVsYXRlQWZmZWN0ZWQoZSx0KzEscik6dD4xJiZyLnB1c2godGhpcy52YWx1
ZSgpLGUpfX0sZS5yZW1vdmVDaGFpbldhdGNoZXI9ZixlLkNoYWluTm9kZT1kfSksZSgiZW1iZXIt
bWV0YWwvY29tcHV0ZWQiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL2RlYnVnIiwiZW1iZXItbWV0
YWwvcHJvcGVydHlfc2V0IiwiZW1iZXItbWV0YWwvdXRpbHMiLCJlbWJlci1tZXRhbC9tZXRhIiwi
ZW1iZXItbWV0YWwvZXhwYW5kX3Byb3BlcnRpZXMiLCJlbWJlci1tZXRhbC9lcnJvciIsImVtYmVy
LW1ldGFsL3Byb3BlcnRpZXMiLCJlbWJlci1tZXRhbC9wcm9wZXJ0eV9ldmVudHMiLCJlbWJlci1t
ZXRhbC9kZXBlbmRlbnRfa2V5cyJdLGZ1bmN0aW9uKGUsdCxyLG4saSxvLGEscyx1LGwpeyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiBjKCl7fWZ1bmN0aW9uIGYoZSx0KXt0aGlzLmlzRGVzY3JpcHRvcj0h
MCwiZnVuY3Rpb24iPT10eXBlb2YgZT90aGlzLl9nZXR0ZXI9ZToodGhpcy5fZ2V0dGVyPWUuZ2V0
LHRoaXMuX3NldHRlcj1lLnNldCksdGhpcy5fZGVwZW5kZW50S2V5cz12b2lkIDAsdGhpcy5fc3Vz
cGVuZGVkPXZvaWQgMCx0aGlzLl9tZXRhPXZvaWQgMCx0aGlzLl92b2xhdGlsZT0hMSx0aGlzLl9k
ZXBlbmRlbnRLZXlzPXQmJnQuZGVwZW5kZW50S2V5cyx0aGlzLl9yZWFkT25seT0hMX1mdW5jdGlv
biBkKGUpe3ZhciB0O2FyZ3VtZW50cy5sZW5ndGg+MSYmKHQ9W10uc2xpY2UuY2FsbChhcmd1bWVu
dHMpLGU9dC5wb3AoKSk7dmFyIHI9bmV3IGYoZSk7cmV0dXJuIHQmJnIucHJvcGVydHkuYXBwbHko
cix0KSxyfWZ1bmN0aW9uIHAoZSx0KXt2YXIgcj1pLnBlZWtNZXRhKGUpLG49ciYmci5zb3VyY2U9
PT1lJiZyLnJlYWRhYmxlQ2FjaGUoKSxvPW4mJm5bdF07aWYobyE9PWMpcmV0dXJuIG99ZS5kZWZh
dWx0PWQ7Zi5wcm90b3R5cGU9bmV3IHMuRGVzY3JpcHRvcjt2YXIgaD1mLnByb3RvdHlwZTtoLnZv
bGF0aWxlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3ZvbGF0aWxlPSEwLHRoaXN9LGgucmVhZE9u
bHk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVhZE9ubHk9ITAsdGhpc30saC5wcm9wZXJ0eT1m
dW5jdGlvbigpe3ZhciBlLHQ9ZnVuY3Rpb24odCl7ZS5wdXNoKHQpfTtlPVtdO2Zvcih2YXIgcj0w
LG49YXJndW1lbnRzLmxlbmd0aDtyPG47cisrKW8uZGVmYXVsdChhcmd1bWVudHNbcl0sdCk7cmV0
dXJuIHRoaXMuX2RlcGVuZGVudEtleXM9ZSx0aGlzfSxoLm1ldGE9ZnVuY3Rpb24oZSl7cmV0dXJu
IDA9PT1hcmd1bWVudHMubGVuZ3RoP3RoaXMuX21ldGF8fHt9Oih0aGlzLl9tZXRhPWUsdGhpcyl9
LGguZGlkQ2hhbmdlPWZ1bmN0aW9uKGUsdCl7aWYoIXRoaXMuX3ZvbGF0aWxlJiZ0aGlzLl9zdXNw
ZW5kZWQhPT1lKXt2YXIgcj1pLnBlZWtNZXRhKGUpO2lmKHImJnIuc291cmNlPT09ZSl7dmFyIG49
ci5yZWFkYWJsZUNhY2hlKCk7biYmdm9pZCAwIT09blt0XSYmKG5bdF09dm9pZCAwLGwucmVtb3Zl
RGVwZW5kZW50S2V5cyh0aGlzLGUsdCxyKSl9fX0saC5nZXQ9ZnVuY3Rpb24oZSx0KXtpZih0aGlz
Ll92b2xhdGlsZSlyZXR1cm4gdGhpcy5fZ2V0dGVyLmNhbGwoZSx0KTt2YXIgcj1pLm1ldGEoZSks
bj1yLndyaXRhYmxlQ2FjaGUoKSxvPW5bdF07aWYobyE9PWMpe2lmKHZvaWQgMCE9PW8pcmV0dXJu
IG87dmFyIGE9dGhpcy5fZ2V0dGVyLmNhbGwoZSx0KTt2b2lkIDA9PT1hP25bdF09YzpuW3RdPWE7
dmFyIHM9ci5yZWFkYWJsZUNoYWluV2F0Y2hlcnMoKTtyZXR1cm4gcyYmcy5yZXZhbGlkYXRlKHQp
LGwuYWRkRGVwZW5kZW50S2V5cyh0aGlzLGUsdCxyKSxhfX0saC5zZXQ9ZnVuY3Rpb24oZSx0LHIp
e3JldHVybiB0aGlzLl9yZWFkT25seSYmdGhpcy5fdGhyb3dSZWFkT25seUVycm9yKGUsdCksdGhp
cy5fc2V0dGVyP3RoaXMuX3ZvbGF0aWxlP3RoaXMudm9sYXRpbGVTZXQoZSx0LHIpOnRoaXMuc2V0
V2l0aFN1c3BlbmQoZSx0LHIpOnRoaXMuY2xvYmJlclNldChlLHQscil9LGguX3Rocm93UmVhZE9u
bHlFcnJvcj1mdW5jdGlvbihlLHQpe3Rocm93IG5ldyBhLmRlZmF1bHQoJ0Nhbm5vdCBzZXQgcmVh
ZC1vbmx5IHByb3BlcnR5ICInK3QrJyIgb24gb2JqZWN0OiAnK24uaW5zcGVjdChlKSl9LGguY2xv
YmJlclNldD1mdW5jdGlvbihlLHQsbil7dmFyIGk9cChlLHQpO3JldHVybiBzLmRlZmluZVByb3Bl
cnR5KGUsdCxudWxsLGkpLHIuc2V0KGUsdCxuKSxufSxoLnZvbGF0aWxlU2V0PWZ1bmN0aW9uKGUs
dCxyKXtyZXR1cm4gdGhpcy5fc2V0dGVyLmNhbGwoZSx0LHIpfSxoLnNldFdpdGhTdXNwZW5kPWZ1
bmN0aW9uKGUsdCxyKXt2YXIgbj10aGlzLl9zdXNwZW5kZWQ7dGhpcy5fc3VzcGVuZGVkPWU7dHJ5
e3JldHVybiB0aGlzLl9zZXQoZSx0LHIpfWZpbmFsbHl7dGhpcy5fc3VzcGVuZGVkPW59fSxoLl9z
ZXQ9ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPWkubWV0YShlKSxvPW4ud3JpdGFibGVDYWNoZSgpLGE9
ITEscz12b2lkIDA7dm9pZCAwIT09b1t0XSYmKG9bdF0hPT1jJiYocz1vW3RdKSxhPSEwKTt2YXIg
Zj10aGlzLl9zZXR0ZXIuY2FsbChlLHQscixzKTtpZihhJiZzPT09ZilyZXR1cm4gZjt2YXIgZD1u
LnBlZWtXYXRjaGluZyh0KTtyZXR1cm4gZCYmdS5wcm9wZXJ0eVdpbGxDaGFuZ2UoZSx0KSxhJiYo
b1t0XT12b2lkIDApLGF8fGwuYWRkRGVwZW5kZW50S2V5cyh0aGlzLGUsdCxuKSx2b2lkIDA9PT1m
P29bdF09YzpvW3RdPWYsZCYmdS5wcm9wZXJ0eURpZENoYW5nZShlLHQpLGZ9LGgudGVhcmRvd249
ZnVuY3Rpb24oZSx0KXtpZighdGhpcy5fdm9sYXRpbGUpe3ZhciByPWkubWV0YShlKSxuPXIucmVh
ZGFibGVDYWNoZSgpO24mJnZvaWQgMCE9PW5bdF0mJihsLnJlbW92ZURlcGVuZGVudEtleXModGhp
cyxlLHQsciksblt0XT12b2lkIDApfX0scC5zZXQ9ZnVuY3Rpb24oZSx0LHIpe3ZvaWQgMD09PXI/
ZVt0XT1jOmVbdF09cn0scC5nZXQ9ZnVuY3Rpb24oZSx0KXt2YXIgcj1lW3RdO2lmKHIhPT1jKXJl
dHVybiByfSxwLnJlbW92ZT1mdW5jdGlvbihlLHQpe2VbdF09dm9pZCAwfSxlLkNvbXB1dGVkUHJv
cGVydHk9ZixlLmNvbXB1dGVkPWQsZS5jYWNoZUZvcj1wfSksZSgiZW1iZXItbWV0YWwvY29tcHV0
ZWRfbWFjcm9zIixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9kZWJ1ZyIsImVtYmVyLW1ldGFsL3By
b3BlcnR5X2dldCIsImVtYmVyLW1ldGFsL3Byb3BlcnR5X3NldCIsImVtYmVyLW1ldGFsL2NvbXB1
dGVkIiwiZW1iZXItbWV0YWwvaXNfZW1wdHkiLCJlbWJlci1tZXRhbC9pc19ub25lIiwiZW1iZXIt
bWV0YWwvYWxpYXMiLCJlbWJlci1tZXRhbC9leHBhbmRfcHJvcGVydGllcyJdLGZ1bmN0aW9uKGUs
dCxyLG4saSxvLGEscyx1KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbChlLHQpe2Zvcih2YXIgbj17
fSxpPTA7aTx0Lmxlbmd0aDtpKyspblt0W2ldXT1yLmdldChlLHRbaV0pO3JldHVybiBufWZ1bmN0
aW9uIGMoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXtyLnB1c2goZSl9Zm9yKHZh
ciByPVtdLG49aS5jb21wdXRlZChmdW5jdGlvbigpe3JldHVybiBlLmFwcGx5KHRoaXMsW2wodGhp
cyxyKV0pfSksbz1hcmd1bWVudHMubGVuZ3RoLGE9QXJyYXkobykscz0wO3M8bztzKyspYVtzXT1h
cmd1bWVudHNbc107Zm9yKHZhciBjPTA7YzxhLmxlbmd0aDtjKyspdS5kZWZhdWx0KGFbY10sdCk7
cmV0dXJuIG4ucHJvcGVydHkuYXBwbHkobixyKX19ZnVuY3Rpb24gZihlKXtyZXR1cm4gaS5jb21w
dXRlZChlKyIubGVuZ3RoIixmdW5jdGlvbigpe3JldHVybiBvLmRlZmF1bHQoci5nZXQodGhpcyxl
KSl9KX1mdW5jdGlvbiBkKGUpe3JldHVybiBpLmNvbXB1dGVkKGUrIi5sZW5ndGgiLGZ1bmN0aW9u
KCl7cmV0dXJuIW8uZGVmYXVsdChyLmdldCh0aGlzLGUpKX0pfWZ1bmN0aW9uIHAoZSl7cmV0dXJu
IGkuY29tcHV0ZWQoZSxmdW5jdGlvbigpe3JldHVybiBhLmRlZmF1bHQoci5nZXQodGhpcyxlKSl9
KX1mdW5jdGlvbiBoKGUpe3JldHVybiBpLmNvbXB1dGVkKGUsZnVuY3Rpb24oKXtyZXR1cm4hci5n
ZXQodGhpcyxlKX0pfWZ1bmN0aW9uIG0oZSl7cmV0dXJuIGkuY29tcHV0ZWQoZSxmdW5jdGlvbigp
e3JldHVybiEhci5nZXQodGhpcyxlKX0pfWZ1bmN0aW9uIHYoZSx0KXtyZXR1cm4gaS5jb21wdXRl
ZChlLGZ1bmN0aW9uKCl7dmFyIG49ci5nZXQodGhpcyxlKTtyZXR1cm4ic3RyaW5nIj09dHlwZW9m
IG4mJnQudGVzdChuKX0pfWZ1bmN0aW9uIGIoZSx0KXtyZXR1cm4gaS5jb21wdXRlZChlLGZ1bmN0
aW9uKCl7cmV0dXJuIHIuZ2V0KHRoaXMsZSk9PT10fSl9ZnVuY3Rpb24gZyhlLHQpe3JldHVybiBp
LmNvbXB1dGVkKGUsZnVuY3Rpb24oKXtyZXR1cm4gci5nZXQodGhpcyxlKT50fSl9ZnVuY3Rpb24g
eShlLHQpe3JldHVybiBpLmNvbXB1dGVkKGUsZnVuY3Rpb24oKXtyZXR1cm4gci5nZXQodGhpcyxl
KT49dH0pfWZ1bmN0aW9uIF8oZSx0KXtyZXR1cm4gaS5jb21wdXRlZChlLGZ1bmN0aW9uKCl7cmV0
dXJuIHIuZ2V0KHRoaXMsZSk8dH0pfWZ1bmN0aW9uIHcoZSx0KXtyZXR1cm4gaS5jb21wdXRlZChl
LGZ1bmN0aW9uKCl7cmV0dXJuIHIuZ2V0KHRoaXMsZSk8PXR9KX1mdW5jdGlvbiB4KGUpe3JldHVy
biBzLmRlZmF1bHQoZSkub25lV2F5KCl9ZnVuY3Rpb24gayhlKXtyZXR1cm4gcy5kZWZhdWx0KGUp
LnJlYWRPbmx5KCl9ZnVuY3Rpb24gQyhlLHQpe3JldHVybiBpLmNvbXB1dGVkKGUse2dldDpmdW5j
dGlvbih0KXtyZXR1cm4gci5nZXQodGhpcyxlKX0sc2V0OmZ1bmN0aW9uKHQscil7cmV0dXJuIG4u
c2V0KHRoaXMsZSxyKSxyfX0pfWUuZW1wdHk9ZixlLm5vdEVtcHR5PWQsZS5ub25lPXAsZS5ub3Q9
aCxlLmJvb2w9bSxlLm1hdGNoPXYsZS5lcXVhbD1iLGUuZ3Q9ZyxlLmd0ZT15LGUubHQ9XyxlLmx0
ZT13LGUub25lV2F5PXgsZS5yZWFkT25seT1rLGUuZGVwcmVjYXRpbmdBbGlhcz1DO3ZhciBFPWMo
ZnVuY3Rpb24oZSl7dmFyIHQ7Zm9yKHZhciByIGluIGUpaWYodD1lW3JdLGUuaGFzT3duUHJvcGVy
dHkocikmJiF0KXJldHVybiB0O3JldHVybiB0fSk7ZS5hbmQ9RTt2YXIgTz1jKGZ1bmN0aW9uKGUp
e3ZhciB0O2Zvcih2YXIgciBpbiBlKWlmKHQ9ZVtyXSxlLmhhc093blByb3BlcnR5KHIpJiZ0KXJl
dHVybiB0O3JldHVybiB0fSk7ZS5vcj1PfSksZSgiZW1iZXItbWV0YWwvY29yZSIsWyJleHBvcnRz
IiwicmVxdWlyZSJdLGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXtyZXR1
cm4gdGhpc30idW5kZWZpbmVkIj09dHlwZW9mIG4mJihuPXt9KTt2YXIgbz1pfHx7fTtuLmltcG9y
dHM9bi5pbXBvcnRzfHxvLG4ubG9va3VwPW4ubG9va3VwfHxvO3ZhciBhPW4uZXhwb3J0cz1uLmV4
cG9ydHN8fG87YS5FbT1hLkVtYmVyPW4sbi5pc05hbWVzcGFjZT0hMCxuLnRvU3RyaW5nPWZ1bmN0
aW9uKCl7cmV0dXJuIkVtYmVyIn07dmFyIHM9dC5kZWZhdWx0KCJlbWJlci1tZXRhbC9kZWJ1ZyIp
O24uYXNzZXJ0PXMuYXNzZXJ0LG4ud2Fybj1zLndhcm4sCituLmRlYnVnPXMuZGVidWcsbi5kZXBy
ZWNhdGU9cy5kZXByZWNhdGUsbi5kZXByZWNhdGVGdW5jPXMuZGVwcmVjYXRlRnVuYyxuLnJ1bklu
RGVidWc9cy5ydW5JbkRlYnVnLG4uVkVSU0lPTj0iMi42LjIiLG4uRU5WP24uYXNzZXJ0KCJFbWJl
ci5FTlYgc2hvdWxkIGJlIGFuIG9iamVjdC4iLCJvYmplY3QiIT10eXBlb2Ygbi5FTlYpOiJ1bmRl
ZmluZWQiIT10eXBlb2YgRW1iZXJFTlY/bi5FTlY9RW1iZXJFTlY6InVuZGVmaW5lZCIhPXR5cGVv
ZiBFTlY/bi5FTlY9RU5WOm4uRU5WPXt9LG4uRU5WLkVOQUJMRV9BTExfRkVBVFVSRVMmJihuLkVO
Vi5FTkFCTEVfT1BUSU9OQUxfRkVBVFVSRVM9bi5FTlYuRU5BQkxFX0FMTF9GRUFUVVJFUyksbi5j
b25maWc9bi5jb25maWd8fHt9LG4uRVhURU5EX1BST1RPVFlQRVM9bi5FTlYuRVhURU5EX1BST1RP
VFlQRVMsInVuZGVmaW5lZCI9PXR5cGVvZiBuLkVYVEVORF9QUk9UT1RZUEVTJiYobi5FWFRFTkRf
UFJPVE9UWVBFUz0hMCksbi5MT0dfU1RBQ0tUUkFDRV9PTl9ERVBSRUNBVElPTj1uLkVOVi5MT0df
U1RBQ0tUUkFDRV9PTl9ERVBSRUNBVElPTiE9PSExLG4uTE9HX1ZFUlNJT049bi5FTlYuTE9HX1ZF
UlNJT04hPT0hMSxlLks9cixuLks9cixlLmRlZmF1bHQ9bn0pLGUoImVtYmVyLW1ldGFsL2RlYnVn
IixbImV4cG9ydHMiXSxmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gdChlKXtyZXR1
cm4gZltlXX1mdW5jdGlvbiByKGUsdCl7ZltlXT10fWZ1bmN0aW9uIG4oKXtyZXR1cm4gZi5hc3Nl
cnQuYXBwbHkodm9pZCAwLGFyZ3VtZW50cyl9ZnVuY3Rpb24gaSgpe3JldHVybiBmLmluZm8uYXBw
bHkodm9pZCAwLGFyZ3VtZW50cyl9ZnVuY3Rpb24gbygpe3JldHVybiBmLndhcm4uYXBwbHkodm9p
ZCAwLGFyZ3VtZW50cyl9ZnVuY3Rpb24gYSgpe3JldHVybiBmLmRlYnVnLmFwcGx5KHZvaWQgMCxh
cmd1bWVudHMpfWZ1bmN0aW9uIHMoKXtyZXR1cm4gZi5kZXByZWNhdGUuYXBwbHkodm9pZCAwLGFy
Z3VtZW50cyl9ZnVuY3Rpb24gdSgpe3JldHVybiBmLmRlcHJlY2F0ZUZ1bmMuYXBwbHkodm9pZCAw
LGFyZ3VtZW50cyl9ZnVuY3Rpb24gbCgpe3JldHVybiBmLnJ1bkluRGVidWcuYXBwbHkodm9pZCAw
LGFyZ3VtZW50cyl9ZnVuY3Rpb24gYygpe3JldHVybiBmLmRlYnVnU2VhbC5hcHBseSh2b2lkIDAs
YXJndW1lbnRzKX1lLmdldERlYnVnRnVuY3Rpb249dCxlLnNldERlYnVnRnVuY3Rpb249cixlLmFz
c2VydD1uLGUuaW5mbz1pLGUud2Fybj1vLGUuZGVidWc9YSxlLmRlcHJlY2F0ZT1zLGUuZGVwcmVj
YXRlRnVuYz11LGUucnVuSW5EZWJ1Zz1sLGUuZGVidWdTZWFsPWM7dmFyIGY9e2Fzc2VydDpmdW5j
dGlvbigpe30saW5mbzpmdW5jdGlvbigpe30sd2FybjpmdW5jdGlvbigpe30sZGVidWc6ZnVuY3Rp
b24oKXt9LGRlcHJlY2F0ZTpmdW5jdGlvbigpe30sZGVwcmVjYXRlRnVuYzpmdW5jdGlvbigpe2Zv
cih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHQ9QXJyYXkoZSkscj0wO3I8ZTtyKyspdFtyXT1hcmd1
bWVudHNbcl07cmV0dXJuIHRbdC5sZW5ndGgtMV19LHJ1bkluRGVidWc6ZnVuY3Rpb24oKXt9LGRl
YnVnU2VhbDpmdW5jdGlvbigpe319O2UuZGVidWdGdW5jdGlvbnM9Zn0pLGUoImVtYmVyLW1ldGFs
L2RlcGVuZGVudF9rZXlzIixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC93YXRjaGluZyJdLGZ1bmN0
aW9uKGUsdCl7Im5vIHVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSxyLG4saSl7dmFyIG8sYSxzLHU9
ZS5fZGVwZW5kZW50S2V5cztpZih1KWZvcihvPTAsYT11Lmxlbmd0aDtvPGE7bysrKXM9dVtvXSxp
LndyaXRlRGVwcyhzLG4sKGkucGVla0RlcHMocyxuKXx8MCkrMSksdC53YXRjaChyLHMsaSl9ZnVu
Y3Rpb24gbihlLHIsbixpKXt2YXIgbyxhLHMsdT1lLl9kZXBlbmRlbnRLZXlzO2lmKHUpZm9yKG89
MCxhPXUubGVuZ3RoO288YTtvKyspcz11W29dLGkud3JpdGVEZXBzKHMsbiwoaS5wZWVrRGVwcyhz
LG4pfHwwKS0xKSx0LnVud2F0Y2gocixzLGkpfWUuYWRkRGVwZW5kZW50S2V5cz1yLGUucmVtb3Zl
RGVwZW5kZW50S2V5cz1ufSksZSgiZW1iZXItbWV0YWwvZGVwcmVjYXRlX3Byb3BlcnR5IixbImV4
cG9ydHMiLCJlbWJlci1tZXRhbC9kZWJ1ZyIsImVtYmVyLW1ldGFsL3Byb3BlcnR5X2dldCIsImVt
YmVyLW1ldGFsL3Byb3BlcnR5X3NldCJdLGZ1bmN0aW9uKGUsdCxyLG4peyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiBpKGUsdCxpLG8pe2Z1bmN0aW9uIGEoKXt9T2JqZWN0LmRlZmluZVByb3BlcnR5KGUs
dCx7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITEsc2V0OmZ1bmN0aW9uKGUpe2EoKSxuLnNl
dCh0aGlzLGksZSl9LGdldDpmdW5jdGlvbigpe3JldHVybiBhKCksci5nZXQodGhpcyxpKX19KX1l
LmRlcHJlY2F0ZVByb3BlcnR5PWl9KSxlKCJlbWJlci1tZXRhbC9kaWN0aW9uYXJ5IixbImV4cG9y
dHMiLCJlbWJlci1tZXRhbC9lbXB0eV9vYmplY3QiXSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiByKGUpe3ZhciByO3JldHVybiByPW51bGw9PT1lP25ldyB0LmRlZmF1bHQ6T2Jq
ZWN0LmNyZWF0ZShlKSxyLl9kaWN0PW51bGwsZGVsZXRlIHIuX2RpY3Qscn1lLmRlZmF1bHQ9cn0p
LGUoImVtYmVyLW1ldGFsL2VtcHR5X29iamVjdCIsWyJleHBvcnRzIl0sZnVuY3Rpb24oZSl7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIHQoKXt9dmFyIHI9T2JqZWN0LmNyZWF0ZShudWxsLHtjb25zdHJ1
Y3Rvcjp7dmFsdWU6dm9pZCAwLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITB9fSk7dC5wcm90b3R5
cGU9cixlLmRlZmF1bHQ9dH0pLGUoImVtYmVyLW1ldGFsL2Vudmlyb25tZW50IixbImV4cG9ydHMi
LCJlbWJlci1tZXRhbC9jb3JlIl0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7dmFyIHIsbj0i
dW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmInVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudCYm
InVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudC5jcmVhdGVFbGVtZW50JiYhdC5kZWZhdWx0LkVO
Vi5kaXNhYmxlQnJvd3NlckVudmlyb25tZW50O3I9bj97aGFzRE9NOiEwLGlzQ2hyb21lOiEhd2lu
ZG93LmNocm9tZSYmIXdpbmRvdy5vcGVyYSxpc0ZpcmVmb3g6InVuZGVmaW5lZCIhPXR5cGVvZiBJ
bnN0YWxsVHJpZ2dlcixpc1BoYW50b206ISF3aW5kb3cuY2FsbFBoYW50b20sbG9jYXRpb246d2lu
ZG93LmxvY2F0aW9uLGhpc3Rvcnk6d2luZG93Lmhpc3RvcnksdXNlckFnZW50OndpbmRvdy5uYXZp
Z2F0b3IudXNlckFnZW50LGdsb2JhbDp3aW5kb3d9OntoYXNET006ITEsaXNDaHJvbWU6ITEsaXNG
aXJlZm94OiExLGlzUGhhbnRvbTohMSxsb2NhdGlvbjpudWxsLGhpc3Rvcnk6bnVsbCx1c2VyQWdl
bnQ6Ikx5bnggKHRleHRtb2RlKSIsZ2xvYmFsOm51bGx9LGUuZGVmYXVsdD1yfSksZSgiZW1iZXIt
bWV0YWwvZXJyb3IiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL2NvcmUiXSxmdW5jdGlvbihlLHQp
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7dmFyIGU9RXJyb3IuYXBwbHkodGhpcyxhcmd1bWVu
dHMpO0Vycm9yLmNhcHR1cmVTdGFja1RyYWNlJiZFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlz
LHQuZGVmYXVsdC5FcnJvcik7Zm9yKHZhciByPTA7cjxuLmxlbmd0aDtyKyspdGhpc1tuW3JdXT1l
W25bcl1dfWUuZGVmYXVsdD1yO3ZhciBuPVsiZGVzY3JpcHRpb24iLCJmaWxlTmFtZSIsImxpbmVO
dW1iZXIiLCJtZXNzYWdlIiwibmFtZSIsIm51bWJlciIsInN0YWNrIl07ci5wcm90b3R5cGU9T2Jq
ZWN0LmNyZWF0ZShFcnJvci5wcm90b3R5cGUpfSksZSgiZW1iZXItbWV0YWwvZXZlbnRzIixbImV4
cG9ydHMiLCJlbWJlci1tZXRhbC9kZWJ1ZyIsImVtYmVyLW1ldGFsL3V0aWxzIiwiZW1iZXItbWV0
YWwvbWV0YSIsImVtYmVyLW1ldGFsL21ldGFfbGlzdGVuZXJzIl0sZnVuY3Rpb24oZSx0LHIsbixp
KXsibm8gdXNlIHN0cmljdCI7ZnVuY3Rpb24gbyhlLHQscil7Zm9yKHZhciBuPS0xLGk9ZS5sZW5n
dGgtMztpPj0wO2ktPTMpaWYodD09PWVbaV0mJnI9PT1lW2krMV0pe249aTticmVha31yZXR1cm4g
bn1mdW5jdGlvbiBhKGUsdCxyKXt2YXIgaT1uLnBlZWtNZXRhKGUpO2lmKGkpe2Zvcih2YXIgYT1p
Lm1hdGNoaW5nTGlzdGVuZXJzKHQpLHM9W10sdT1hLmxlbmd0aC0zO3U+PTA7dS09Myl7dmFyIGw9
YVt1XSxjPWFbdSsxXSxmPWFbdSsyXSxkPW8ocixsLGMpO2Q9PT0tMSYmKHIucHVzaChsLGMsZiks
cy5wdXNoKGwsYyxmKSl9cmV0dXJuIHN9fWZ1bmN0aW9uIHMoZSx0LHIsbyxhKXtvfHwiZnVuY3Rp
b24iIT10eXBlb2Ygcnx8KG89cixyPW51bGwpO3ZhciBzPTA7YSYmKHN8PWkuT05DRSksbi5tZXRh
KGUpLmFkZFRvTGlzdGVuZXJzKHQscixvLHMpLCJmdW5jdGlvbiI9PXR5cGVvZiBlLmRpZEFkZExp
c3RlbmVyJiZlLmRpZEFkZExpc3RlbmVyKHQscixvKX1mdW5jdGlvbiB1KGUsdCxyLGkpe2l8fCJm
dW5jdGlvbiIhPXR5cGVvZiByfHwoaT1yLHI9bnVsbCksbi5tZXRhKGUpLnJlbW92ZUZyb21MaXN0
ZW5lcnModCxyLGksZnVuY3Rpb24oKXsiZnVuY3Rpb24iPT10eXBlb2YgZS5kaWRSZW1vdmVMaXN0
ZW5lciYmZS5kaWRSZW1vdmVMaXN0ZW5lci5hcHBseShlLGFyZ3VtZW50cyl9KX1mdW5jdGlvbiBs
KGUsdCxyLG4saSl7cmV0dXJuIGMoZSxbdF0scixuLGkpfWZ1bmN0aW9uIGMoZSx0LHIsaSxvKXty
ZXR1cm4gaXx8ImZ1bmN0aW9uIiE9dHlwZW9mIHJ8fChpPXIscj1udWxsKSxuLm1ldGEoZSkuc3Vz
cGVuZExpc3RlbmVycyh0LHIsaSxvKX1mdW5jdGlvbiBmKGUpe3JldHVybiBuLm1ldGEoZSkud2F0
Y2hlZEV2ZW50cygpfWZ1bmN0aW9uIGQoZSx0LG8sYSl7aWYoIWEpe3ZhciBzPW4ucGVla01ldGEo
ZSk7YT1zJiZzLm1hdGNoaW5nTGlzdGVuZXJzKHQpfWlmKGEmJjAhPT1hLmxlbmd0aCl7Zm9yKHZh
ciBsPWEubGVuZ3RoLTM7bD49MDtsLT0zKXt2YXIgYz1hW2xdLGY9YVtsKzFdLGQ9YVtsKzJdO2Ym
JihkJmkuU1VTUEVOREVEfHwoZCZpLk9OQ0UmJnUoZSx0LGMsZiksY3x8KGM9ZSksInN0cmluZyI9
PXR5cGVvZiBmP28/ci5hcHBseVN0cihjLGYsbyk6Y1tmXSgpOm8/Zi5hcHBseShjLG8pOmYuY2Fs
bChjKSkpfXJldHVybiEwfX1mdW5jdGlvbiBwKGUsdCl7dmFyIHI9bi5wZWVrTWV0YShlKTtyZXR1
cm4hIXImJnIubWF0Y2hpbmdMaXN0ZW5lcnModCkubGVuZ3RoPjB9ZnVuY3Rpb24gaChlLHQpe3Zh
ciByPVtdLGk9bi5wZWVrTWV0YShlKSxvPWkmJmkubWF0Y2hpbmdMaXN0ZW5lcnModCk7aWYoIW8p
cmV0dXJuIHI7Zm9yKHZhciBhPTAscz1vLmxlbmd0aDthPHM7YSs9Myl7dmFyIHU9b1thXSxsPW9b
YSsxXTtyLnB1c2goW3UsbF0pfXJldHVybiByfWZ1bmN0aW9uIG0oKXtmb3IodmFyIGU9YXJndW1l
bnRzLmxlbmd0aCx0PUFycmF5KGUpLHI9MDtyPGU7cisrKXRbcl09YXJndW1lbnRzW3JdO3ZhciBu
PXQucG9wKCksaT10O3JldHVybiBuLl9fZW1iZXJfbGlzdGVuc19fPWksbn1lLmFjY3VtdWxhdGVM
aXN0ZW5lcnM9YSxlLmFkZExpc3RlbmVyPXMsZS5yZW1vdmVMaXN0ZW5lcj11LGUuc3VzcGVuZExp
c3RlbmVyPWwsZS5zdXNwZW5kTGlzdGVuZXJzPWMsZS53YXRjaGVkRXZlbnRzPWYsZS5zZW5kRXZl
bnQ9ZCxlLmhhc0xpc3RlbmVycz1wLGUubGlzdGVuZXJzRm9yPWgsZS5vbj1tfSksZSgiZW1iZXIt
bWV0YWwvZXhwYW5kX3Byb3BlcnRpZXMiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL2RlYnVnIl0s
ZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe2Zvcih2YXIgcj1lLnNw
bGl0KGkpLGE9W3JdLHM9MDtzPHIubGVuZ3RoO3MrKyl7dmFyIHU9cltzXTt1LmluZGV4T2YoIiwi
KT49MCYmKGE9bihhLHUuc3BsaXQoIiwiKSxzKSl9Zm9yKHZhciBzPTA7czxhLmxlbmd0aDtzKysp
dChhW3NdLmpvaW4oIiIpLnJlcGxhY2UobywiLltdIikpfWZ1bmN0aW9uIG4oZSx0LHIpe3ZhciBu
PVtdO3JldHVybiBlLmZvckVhY2goZnVuY3Rpb24oZSl7dC5mb3JFYWNoKGZ1bmN0aW9uKHQpe3Zh
ciBpPWUuc2xpY2UoMCk7aVtyXT10LG4ucHVzaChpKX0pfSksbn1lLmRlZmF1bHQ9cjt2YXIgaT0v
XHt8XH0vLG89L1wuQGVhY2gkL30pLGUoImVtYmVyLW1ldGFsL2ZlYXR1cmVzIixbImV4cG9ydHMi
LCJlbWJlci1tZXRhbC9jb3JlIiwiZW1iZXItbWV0YWwvYXNzaWduIl0sZnVuY3Rpb24oZSx0LHIp
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe3ZhciByPW9bZV07cmV0dXJuIHI9PT0hMHx8cj09
PSExfHx2b2lkIDA9PT1yP3I6ISF0LmRlZmF1bHQuRU5WLkVOQUJMRV9PUFRJT05BTF9GRUFUVVJF
U31lLmRlZmF1bHQ9bjt2YXIgaT17fTtlLktOT1dOX0ZFQVRVUkVTPWk7dmFyIG89ci5kZWZhdWx0
KGksdC5kZWZhdWx0LkVOVi5GRUFUVVJFUyk7ZS5GRUFUVVJFUz1vfSksZSgiZW1iZXItbWV0YWwv
Z2V0X3Byb3BlcnRpZXMiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL3Byb3BlcnR5X2dldCJdLGZ1
bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHI9e30sbj1hcmd1bWVu
dHMsaT0xOzI9PT1hcmd1bWVudHMubGVuZ3RoJiZBcnJheS5pc0FycmF5KGFyZ3VtZW50c1sxXSkm
JihpPTAsbj1hcmd1bWVudHNbMV0pO2Zvcih2YXIgbz1uLmxlbmd0aDtpPG87aSsrKXJbbltpXV09
dC5nZXQoZSxuW2ldKTtyZXR1cm4gcn1lLmRlZmF1bHQ9cn0pLGUoImVtYmVyLW1ldGFsL2luZGV4
IixbImV4cG9ydHMiLCJyZXF1aXJlIiwiZW1iZXItbWV0YWwvY29yZSIsImVtYmVyLW1ldGFsL2Rl
YnVnIiwiZW1iZXItbWV0YWwvZmVhdHVyZXMiLCJlbWJlci1tZXRhbC9hc3NpZ24iLCJlbWJlci1t
ZXRhbC9tZXJnZSIsImVtYmVyLW1ldGFsL2luc3RydW1lbnRhdGlvbiIsImVtYmVyLW1ldGFsL3V0
aWxzIiwiZW1iZXItbWV0YWwvbWV0YSIsImVtYmVyLW1ldGFsL2Vycm9yIiwiZW1iZXItbWV0YWwv
Y2FjaGUiLCJlbWJlci1tZXRhbC9sb2dnZXIiLCJlbWJlci1tZXRhbC9wcm9wZXJ0eV9nZXQiLCJl
bWJlci1tZXRhbC9ldmVudHMiLCJlbWJlci1tZXRhbC9vYnNlcnZlcl9zZXQiLCJlbWJlci1tZXRh
bC9wcm9wZXJ0eV9ldmVudHMiLCJlbWJlci1tZXRhbC9wcm9wZXJ0aWVzIiwiZW1iZXItbWV0YWwv
cHJvcGVydHlfc2V0IiwiZW1iZXItbWV0YWwvbWFwIiwiZW1iZXItbWV0YWwvZ2V0X3Byb3BlcnRp
ZXMiLCJlbWJlci1tZXRhbC9zZXRfcHJvcGVydGllcyIsImVtYmVyLW1ldGFsL3dhdGNoX2tleSIs
ImVtYmVyLW1ldGFsL2NoYWlucyIsImVtYmVyLW1ldGFsL3dhdGNoX3BhdGgiLCJlbWJlci1tZXRh
bC93YXRjaGluZyIsImVtYmVyLW1ldGFsL2V4cGFuZF9wcm9wZXJ0aWVzIiwiZW1iZXItbWV0YWwv
Y29tcHV0ZWQiLCJlbWJlci1tZXRhbC9hbGlhcyIsImVtYmVyLW1ldGFsL2NvbXB1dGVkX21hY3Jv
cyIsImVtYmVyLW1ldGFsL29ic2VydmVyIiwiZW1iZXItbWV0YWwvbWl4aW4iLCJlbWJlci1tZXRh
bC9iaW5kaW5nIiwiZW1iZXItbWV0YWwvcGF0aF9jYWNoZSIsImVtYmVyLW1ldGFsL3J1bl9sb29w
IiwiZW1iZXItbWV0YWwvbGlicmFyaWVzIiwiZW1iZXItbWV0YWwvaXNfbm9uZSIsImVtYmVyLW1l
dGFsL2lzX2VtcHR5IiwiZW1iZXItbWV0YWwvaXNfYmxhbmsiLCJlbWJlci1tZXRhbC9pc19wcmVz
ZW50IiwiYmFja2J1cm5lciJdLGZ1bmN0aW9uKGUsdCxyLG4saSxvLGEscyx1LGwsYyxmLGQscCxo
LG0sdixiLGcseSxfLHcseCxrLEMsRSxPLFQsTixTLEEsUCxqLFIsTCxELE0sSSxGLEgsVil7InVz
ZSBzdHJpY3QiO1QuY29tcHV0ZWQuZW1wdHk9Uy5lbXB0eSxULmNvbXB1dGVkLm5vdEVtcHR5PVMu
bm90RW1wdHksVC5jb21wdXRlZC5ub25lPVMubm9uZSxULmNvbXB1dGVkLm5vdD1TLm5vdCxULmNv
bXB1dGVkLmJvb2w9Uy5ib29sLFQuY29tcHV0ZWQubWF0Y2g9Uy5tYXRjaCxULmNvbXB1dGVkLmVx
dWFsPVMuZXF1YWwsVC5jb21wdXRlZC5ndD1TLmd0LFQuY29tcHV0ZWQuZ3RlPVMuZ3RlLFQuY29t
cHV0ZWQubHQ9Uy5sdCxULmNvbXB1dGVkLmx0ZT1TLmx0ZSxULmNvbXB1dGVkLmFsaWFzPU4uZGVm
YXVsdCxULmNvbXB1dGVkLm9uZVdheT1TLm9uZVdheSxULmNvbXB1dGVkLnJlYWRzPVMub25lV2F5
LFQuY29tcHV0ZWQucmVhZE9ubHk9Uy5yZWFkT25seSxULmNvbXB1dGVkLmRlZmF1bHRUbz1TLmRl
ZmF1bHRUbyxULmNvbXB1dGVkLmRlcHJlY2F0aW5nQWxpYXM9Uy5kZXByZWNhdGluZ0FsaWFzLFQu
Y29tcHV0ZWQuYW5kPVMuYW5kLFQuY29tcHV0ZWQub3I9Uy5vcixULmNvbXB1dGVkLmFueT1TLmFu
eTt2YXIgcT1yLmRlZmF1bHQuSW5zdHJ1bWVudGF0aW9uPXt9O3EuaW5zdHJ1bWVudD1zLmluc3Ry
dW1lbnQscS5zdWJzY3JpYmU9cy5zdWJzY3JpYmUscS51bnN1YnNjcmliZT1zLnVuc3Vic2NyaWJl
LHEucmVzZXQ9cy5yZXNldCxyLmRlZmF1bHQuaW5zdHJ1bWVudD1zLmluc3RydW1lbnQsci5kZWZh
dWx0LnN1YnNjcmliZT1zLnN1YnNjcmliZSxyLmRlZmF1bHQuX0NhY2hlPWYuZGVmYXVsdCxyLmRl
ZmF1bHQuZ2VuZXJhdGVHdWlkPXUuZ2VuZXJhdGVHdWlkLHIuZGVmYXVsdC5HVUlEX0tFWT11LkdV
SURfS0VZLHIuZGVmYXVsdC5wbGF0Zm9ybT17ZGVmaW5lUHJvcGVydHk6ITAsaGFzUHJvcGVydHlB
Y2Nlc3NvcnM6ITB9LHIuZGVmYXVsdC5FcnJvcj1jLmRlZmF1bHQsci5kZWZhdWx0Lmd1aWRGb3I9
dS5ndWlkRm9yLHIuZGVmYXVsdC5NRVRBX0RFU0M9bC5NRVRBX0RFU0Msci5kZWZhdWx0Lm1ldGE9
bC5tZXRhLHIuZGVmYXVsdC5pbnNwZWN0PXUuaW5zcGVjdCxyLmRlZmF1bHQudHJ5Q2F0Y2hGaW5h
bGx5PXUuZGVwcmVjYXRlZFRyeUNhdGNoRmluYWxseSxyLmRlZmF1bHQubWFrZUFycmF5PXUubWFr
ZUFycmF5LHIuZGVmYXVsdC5jYW5JbnZva2U9dS5jYW5JbnZva2Usci5kZWZhdWx0LnRyeUludm9r
ZT11LnRyeUludm9rZSxyLmRlZmF1bHQud3JhcD11LndyYXAsci5kZWZhdWx0LmFwcGx5PXUuYXBw
bHksci5kZWZhdWx0LmFwcGx5U3RyPXUuYXBwbHlTdHIsci5kZWZhdWx0LnV1aWQ9dS51dWlkLHIu
ZGVmYXVsdC5Mb2dnZXI9ZC5kZWZhdWx0LHIuZGVmYXVsdC5nZXQ9cC5nZXQsci5kZWZhdWx0Lmdl
dFdpdGhEZWZhdWx0PXAuZ2V0V2l0aERlZmF1bHQsci5kZWZhdWx0Ll9nZXRQYXRoPXAuX2dldFBh
dGgsci5kZWZhdWx0Lm9uPWgub24sci5kZWZhdWx0LmFkZExpc3RlbmVyPWguYWRkTGlzdGVuZXIs
ci5kZWZhdWx0LnJlbW92ZUxpc3RlbmVyPWgucmVtb3ZlTGlzdGVuZXIsci5kZWZhdWx0Ll9zdXNw
ZW5kTGlzdGVuZXI9aC5zdXNwZW5kTGlzdGVuZXIsci5kZWZhdWx0Ll9zdXNwZW5kTGlzdGVuZXJz
PWguc3VzcGVuZExpc3RlbmVycyxyLmRlZmF1bHQuc2VuZEV2ZW50PWguc2VuZEV2ZW50LHIuZGVm
YXVsdC5oYXNMaXN0ZW5lcnM9aC5oYXNMaXN0ZW5lcnMsci5kZWZhdWx0LndhdGNoZWRFdmVudHM9
aC53YXRjaGVkRXZlbnRzLHIuZGVmYXVsdC5saXN0ZW5lcnNGb3I9aC5saXN0ZW5lcnNGb3Isci5k
ZWZhdWx0LmFjY3VtdWxhdGVMaXN0ZW5lcnM9aC5hY2N1bXVsYXRlTGlzdGVuZXJzLHIuZGVmYXVs
dC5fT2JzZXJ2ZXJTZXQ9bS5kZWZhdWx0LHIuZGVmYXVsdC5wcm9wZXJ0eVdpbGxDaGFuZ2U9di5w
cm9wZXJ0eVdpbGxDaGFuZ2Usci5kZWZhdWx0LnByb3BlcnR5RGlkQ2hhbmdlPXYucHJvcGVydHlE
aWRDaGFuZ2Usci5kZWZhdWx0Lm92ZXJyaWRlQ2hhaW5zPXYub3ZlcnJpZGVDaGFpbnMsci5kZWZh
dWx0LmJlZ2luUHJvcGVydHlDaGFuZ2VzPXYuYmVnaW5Qcm9wZXJ0eUNoYW5nZXMsci5kZWZhdWx0
LmVuZFByb3BlcnR5Q2hhbmdlcz12LmVuZFByb3BlcnR5Q2hhbmdlcyxyLmRlZmF1bHQuY2hhbmdl
UHJvcGVydGllcz12LmNoYW5nZVByb3BlcnRpZXMsci5kZWZhdWx0LmRlZmluZVByb3BlcnR5PWIu
ZGVmaW5lUHJvcGVydHksci5kZWZhdWx0LnNldD1nLnNldCxyLmRlZmF1bHQudHJ5U2V0PWcudHJ5
U2V0LHIuZGVmYXVsdC5PcmRlcmVkU2V0PXkuT3JkZXJlZFNldCxyLmRlZmF1bHQuTWFwPXkuTWFw
LHIuZGVmYXVsdC5NYXBXaXRoRGVmYXVsdD15Lk1hcFdpdGhEZWZhdWx0LHIuZGVmYXVsdC5nZXRQ
cm9wZXJ0aWVzPV8uZGVmYXVsdCxyLmRlZmF1bHQuc2V0UHJvcGVydGllcz13LmRlZmF1bHQsci5k
ZWZhdWx0LndhdGNoS2V5PXgud2F0Y2hLZXksci5kZWZhdWx0LnVud2F0Y2hLZXk9eC51bndhdGNo
S2V5LHIuZGVmYXVsdC5yZW1vdmVDaGFpbldhdGNoZXI9ay5yZW1vdmVDaGFpbldhdGNoZXIsci5k
ZWZhdWx0Ll9DaGFpbk5vZGU9ay5DaGFpbk5vZGUsci5kZWZhdWx0LmZpbmlzaENoYWlucz1rLmZp
bmlzaENoYWlucyxyLmRlZmF1bHQud2F0Y2hQYXRoPUMud2F0Y2hQYXRoLHIuZGVmYXVsdC51bndh
dGNoUGF0aD1DLnVud2F0Y2hQYXRoLHIuZGVmYXVsdC53YXRjaD1FLndhdGNoLHIuZGVmYXVsdC5p
c1dhdGNoaW5nPUUuaXNXYXRjaGluZyxyLmRlZmF1bHQudW53YXRjaD1FLnVud2F0Y2gsci5kZWZh
dWx0LnJld2F0Y2g9RS5yZXdhdGNoLHIuZGVmYXVsdC5kZXN0cm95PUUuZGVzdHJveSxyLmRlZmF1
bHQuZXhwYW5kUHJvcGVydGllcz1PLmRlZmF1bHQsci5kZWZhdWx0LkNvbXB1dGVkUHJvcGVydHk9
VC5Db21wdXRlZFByb3BlcnR5LHIuZGVmYXVsdC5jb21wdXRlZD1ULmNvbXB1dGVkLHIuZGVmYXVs
dC5jYWNoZUZvcj1ULmNhY2hlRm9yLHIuZGVmYXVsdC5hZGRPYnNlcnZlcj1BLmFkZE9ic2VydmVy
LHIuZGVmYXVsdC5vYnNlcnZlcnNGb3I9QS5vYnNlcnZlcnNGb3Isci5kZWZhdWx0LnJlbW92ZU9i
c2VydmVyPUEucmVtb3ZlT2JzZXJ2ZXIsci5kZWZhdWx0Ll9zdXNwZW5kT2JzZXJ2ZXI9QS5fc3Vz
cGVuZE9ic2VydmVyLHIuZGVmYXVsdC5fc3VzcGVuZE9ic2VydmVycz1BLl9zdXNwZW5kT2JzZXJ2
ZXJzLHIuZGVmYXVsdC5JU19CSU5ESU5HPVAuSVNfQklORElORyxyLmRlZmF1bHQucmVxdWlyZWQ9
UC5yZXF1aXJlZCxyLmRlZmF1bHQuYWxpYXNNZXRob2Q9UC5hbGlhc01ldGhvZCxyLmRlZmF1bHQu
b2JzZXJ2ZXI9UC5vYnNlcnZlcixyLmRlZmF1bHQuaW1tZWRpYXRlT2JzZXJ2ZXI9UC5faW1tZWRp
YXRlT2JzZXJ2ZXIsci5kZWZhdWx0Lm1peGluPVAubWl4aW4sci5kZWZhdWx0Lk1peGluPVAuTWl4
aW4sci5kZWZhdWx0LmJpbmQ9ai5iaW5kLHIuZGVmYXVsdC5CaW5kaW5nPWouQmluZGluZyxyLmRl
ZmF1bHQuaXNHbG9iYWxQYXRoPVIuaXNHbG9iYWxQYXRoLHIuZGVmYXVsdC5ydW49TC5kZWZhdWx0
LHIuZGVmYXVsdC5CYWNrYnVybmVyPVYuZGVmYXVsdCxyLmRlZmF1bHQuX0JhY2tidXJuZXI9Vi5k
ZWZhdWx0LHIuZGVmYXVsdC5saWJyYXJpZXM9bmV3IEQuZGVmYXVsdCxyLmRlZmF1bHQubGlicmFy
aWVzLnJlZ2lzdGVyQ29yZUxpYnJhcnkoIkVtYmVyIixyLmRlZmF1bHQuVkVSU0lPTiksci5kZWZh
dWx0LmlzTm9uZT1NLmRlZmF1bHQsci5kZWZhdWx0LmlzRW1wdHk9SS5kZWZhdWx0LHIuZGVmYXVs
dC5pc0JsYW5rPUYuZGVmYXVsdCxyLmRlZmF1bHQuaXNQcmVzZW50PUguZGVmYXVsdCxyLmRlZmF1
bHQuYXNzaWduPU9iamVjdC5hc3NpZ258fG8uZGVmYXVsdCxyLmRlZmF1bHQubWVyZ2U9YS5kZWZh
dWx0LHIuZGVmYXVsdC5GRUFUVVJFUz1pLkZFQVRVUkVTLHIuZGVmYXVsdC5GRUFUVVJFUy5pc0Vu
YWJsZWQ9aS5kZWZhdWx0LHIuZGVmYXVsdC5vbmVycm9yPW51bGwsdC5oYXMoImVtYmVyLWRlYnVn
Iik/dC5kZWZhdWx0KCJlbWJlci1kZWJ1ZyIpOihyLmRlZmF1bHQuRGVidWc9e30sci5kZWZhdWx0
LkRlYnVnLnJlZ2lzdGVyRGVwcmVjYXRpb25IYW5kbGVyPWZ1bmN0aW9uKCl7fSxyLmRlZmF1bHQu
RGVidWcucmVnaXN0ZXJXYXJuSGFuZGxlcj1mdW5jdGlvbigpe30pLHIuZGVmYXVsdC5jcmVhdGU9
bi5kZXByZWNhdGVGdW5jKCJFbWJlci5jcmVhdGUgaXMgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBP
YmplY3QuY3JlYXRlIix7aWQ6ImVtYmVyLW1ldGFsLmVtYmVyLWNyZWF0ZSIsdW50aWw6IjMuMC4w
In0sT2JqZWN0LmNyZWF0ZSksci5kZWZhdWx0LmtleXM9bi5kZXByZWNhdGVGdW5jKCJFbWJlci5r
ZXlzIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgT2JqZWN0LmtleXMiLHtpZDoiZW1iZXItbWV0
YWwuZW1iZXIua2V5cyIsdW50aWw6IjMuMC4wIn0sT2JqZWN0LmtleXMpLGUuZGVmYXVsdD1yLmRl
ZmF1bHR9KSxlKCJlbWJlci1tZXRhbC9pbmplY3RlZF9wcm9wZXJ0eSIsWyJleHBvcnRzIiwiZW1i
ZXItbWV0YWwvZGVidWciLCJlbWJlci1tZXRhbC9jb21wdXRlZCIsImVtYmVyLW1ldGFsL2FsaWFz
IiwiZW1iZXItbWV0YWwvcHJvcGVydGllcyIsImNvbnRhaW5lci9vd25lciJdLGZ1bmN0aW9uKGUs
dCxyLG4saSxvKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYShlLHQpe3RoaXMudHlwZT1lLHRoaXMu
bmFtZT10LHRoaXMuX3N1cGVyJENvbnN0cnVjdG9yKHMpLGMub25lV2F5LmNhbGwodGhpcyl9ZnVu
Y3Rpb24gcyhlKXt2YXIgdD10aGlzW2VdLHI9by5nZXRPd25lcih0aGlzKXx8dGhpcy5jb250YWlu
ZXI7cmV0dXJuIHIubG9va3VwKHQudHlwZSsiOiIrKHQubmFtZXx8ZSkpfWEucHJvdG90eXBlPU9i
amVjdC5jcmVhdGUoaS5EZXNjcmlwdG9yLnByb3RvdHlwZSk7dmFyIHU9YS5wcm90b3R5cGUsbD1y
LkNvbXB1dGVkUHJvcGVydHkucHJvdG90eXBlLGM9bi5BbGlhc2VkUHJvcGVydHkucHJvdG90eXBl
O3UuX3N1cGVyJENvbnN0cnVjdG9yPXIuQ29tcHV0ZWRQcm9wZXJ0eSx1LmdldD1sLmdldCx1LnJl
YWRPbmx5PWwucmVhZE9ubHksdS50ZWFyZG93bj1sLnRlYXJkb3duLGUuZGVmYXVsdD1hfSksZSgi
ZW1iZXItbWV0YWwvaW5zdHJ1bWVudGF0aW9uIixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9jb3Jl
IiwiZW1iZXItbWV0YWwvZmVhdHVyZXMiXSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIG4oZSx0LHIsbil7aWYoYXJndW1lbnRzLmxlbmd0aDw9MyYmImZ1bmN0aW9uIj09dHlw
ZW9mIHQmJihuPXIscj10LHQ9dm9pZCAwKSwwPT09bC5sZW5ndGgpcmV0dXJuIHIuY2FsbChuKTt2
YXIgYT10fHx7fSxzPW8oZSxmdW5jdGlvbigpe3JldHVybiBhfSk7cmV0dXJuIHM/aShyLHMsYSxu
KTpyLmNhbGwobil9ZnVuY3Rpb24gaShlLHQscixuKXt2YXIgaT12b2lkIDA7dHJ5e2k9ZS5jYWxs
KG4pfWNhdGNoKGUpe3IuZXhjZXB0aW9uPWUsaT1yfWZpbmFsbHl7cmV0dXJuIHQoKSxpfX1mdW5j
dGlvbiBvKGUscil7dmFyIG49ZltlXTtpZihufHwobj1kKGUpKSwwIT09bi5sZW5ndGgpe3ZhciBp
LG89cigpLGE9dC5kZWZhdWx0LlNUUlVDVFVSRURfUFJPRklMRTthJiYoaT1lKyI6ICIrby5vYmpl
Y3QsY29uc29sZS50aW1lKGkpKTt2YXIgcyx1LGw9bi5sZW5ndGgsYz1uZXcgQXJyYXkobCksaD1w
KCk7Zm9yKHM9MDtzPGw7cysrKXU9bltzXSxjW3NdPXUuYmVmb3JlKGUsaCxvKTtyZXR1cm4gZnVu
Y3Rpb24oKXt2YXIgdCxyLHMsdT1wKCk7Zm9yKHQ9MCxyPW4ubGVuZ3RoO3Q8cjt0Kyspcz1uW3Rd
LCJmdW5jdGlvbiI9PXR5cGVvZiBzLmFmdGVyJiZzLmFmdGVyKGUsdSxvLGNbdF0pO2EmJmNvbnNv
bGUudGltZUVuZChpKX19fWZ1bmN0aW9uIGEoZSx0KXtmb3IodmFyIHIsbj1lLnNwbGl0KCIuIiks
aT1bXSxvPTAsYT1uLmxlbmd0aDtvPGE7bysrKXI9bltvXSwiKiI9PT1yP2kucHVzaCgiW15cXC5d
KiIpOmkucHVzaChyKTtpPWkuam9pbigiXFwuIiksaSs9IihcXC4uKik/Ijt2YXIgcz17cGF0dGVy
bjplLHJlZ2V4Om5ldyBSZWdFeHAoIl4iK2krIiQiKSxvYmplY3Q6dH07cmV0dXJuIGwucHVzaChz
KSxmPXt9LHN9ZnVuY3Rpb24gcyhlKXtmb3IodmFyIHQscj0wLG49bC5sZW5ndGg7cjxuO3IrKyls
W3JdPT09ZSYmKHQ9cik7bC5zcGxpY2UodCwxKSxmPXt9fWZ1bmN0aW9uIHUoKXtsLmxlbmd0aD0w
LGY9e319ZS5pbnN0cnVtZW50PW4sZS5faW5zdHJ1bWVudFN0YXJ0PW8sZS5zdWJzY3JpYmU9YSxl
LnVuc3Vic2NyaWJlPXMsZS5yZXNldD11O3ZhciBsPVtdO2Uuc3Vic2NyaWJlcnM9bDt2YXIgYyxm
PXt9LGQ9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LHI9W10sbj0wLGk9bC5sZW5ndGg7bjxpO24rKyl0
PWxbbl0sdC5yZWdleC50ZXN0KGUpJiZyLnB1c2godC5vYmplY3QpO3JldHVybiBmW2VdPXIscn0s
cD1mdW5jdGlvbigpe3ZhciBlPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdy5wZXJm
b3JtYW5jZXx8e306e30sdD1lLm5vd3x8ZS5tb3pOb3d8fGUud2Via2l0Tm93fHxlLm1zTm93fHxl
Lm9Ob3c7cmV0dXJuIHQ/dC5iaW5kKGUpOmZ1bmN0aW9uKCl7cmV0dXJuK25ldyBEYXRlfX0oKTtl
LmZsYWdnZWRJbnN0cnVtZW50PWM9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiByKCl9LGUuZmxhZ2dl
ZEluc3RydW1lbnQ9Y30pLGUoImVtYmVyLW1ldGFsL2lzX2JsYW5rIixbImV4cG9ydHMiLCJlbWJl
ci1tZXRhbC9pc19lbXB0eSJdLGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIo
ZSl7cmV0dXJuIHQuZGVmYXVsdChlKXx8InN0cmluZyI9PXR5cGVvZiBlJiZudWxsPT09ZS5tYXRj
aCgvXFMvKX1lLmRlZmF1bHQ9cn0pLGUoImVtYmVyLW1ldGFsL2lzX2VtcHR5IixbImV4cG9ydHMi
LCJlbWJlci1tZXRhbC9wcm9wZXJ0eV9nZXQiLCJlbWJlci1tZXRhbC9pc19ub25lIl0sZnVuY3Rp
b24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe3ZhciBuPXIuZGVmYXVsdChlKTtp
ZihuKXJldHVybiBuO2lmKCJudW1iZXIiPT10eXBlb2YgZS5zaXplKXJldHVybiFlLnNpemU7dmFy
IGk9dHlwZW9mIGU7aWYoIm9iamVjdCI9PT1pKXt2YXIgbz10LmdldChlLCJzaXplIik7aWYoIm51
bWJlciI9PXR5cGVvZiBvKXJldHVybiFvfWlmKCJudW1iZXIiPT10eXBlb2YgZS5sZW5ndGgmJiJm
dW5jdGlvbiIhPT1pKXJldHVybiFlLmxlbmd0aDtpZigib2JqZWN0Ij09PWkpe3ZhciBhPXQuZ2V0
KGUsImxlbmd0aCIpO2lmKCJudW1iZXIiPT10eXBlb2YgYSlyZXR1cm4hYX1yZXR1cm4hMX1lLmRl
ZmF1bHQ9bn0pLGUoImVtYmVyLW1ldGFsL2lzX25vbmUiLFsiZXhwb3J0cyJdLGZ1bmN0aW9uKGUp
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB0KGUpe3JldHVybiBudWxsPT09ZXx8dm9pZCAwPT09ZX1l
LmRlZmF1bHQ9dH0pLGUoImVtYmVyLW1ldGFsL2lzX3ByZXNlbnQiLFsiZXhwb3J0cyIsImVtYmVy
LW1ldGFsL2lzX2JsYW5rIl0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihl
KXtyZXR1cm4hdC5kZWZhdWx0KGUpfWUuZGVmYXVsdD1yfSksZSgiZW1iZXItbWV0YWwvbGlicmFy
aWVzIixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9kZWJ1ZyIsImVtYmVyLW1ldGFsL2ZlYXR1cmVz
Il0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKCl7dGhpcy5fcmVnaXN0
cnk9W10sdGhpcy5fY29yZUxpYkluZGV4PTB9bi5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOm4sX2dl
dExpYnJhcnlCeU5hbWU6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMuX3JlZ2lzdHJ5LHI9dC5s
ZW5ndGgsbj0wO248cjtuKyspaWYodFtuXS5uYW1lPT09ZSlyZXR1cm4gdFtuXX0scmVnaXN0ZXI6
ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXRoaXMuX3JlZ2lzdHJ5Lmxlbmd0aDt0aGlzLl9nZXRMaWJy
YXJ5QnlOYW1lKGUpfHwociYmKG49dGhpcy5fY29yZUxpYkluZGV4KyspLHRoaXMuX3JlZ2lzdHJ5
LnNwbGljZShuLDAse25hbWU6ZSx2ZXJzaW9uOnR9KSl9LHJlZ2lzdGVyQ29yZUxpYnJhcnk6ZnVu
Y3Rpb24oZSx0KXt0aGlzLnJlZ2lzdGVyKGUsdCwhMCl9LGRlUmVnaXN0ZXI6ZnVuY3Rpb24oZSl7
dmFyIHQscj10aGlzLl9nZXRMaWJyYXJ5QnlOYW1lKGUpO3ImJih0PXRoaXMuX3JlZ2lzdHJ5Lmlu
ZGV4T2YociksdGhpcy5fcmVnaXN0cnkuc3BsaWNlKHQsMSkpfX0sZS5kZWZhdWx0PW59KSxlKCJl
bWJlci1tZXRhbC9sb2dnZXIiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL2NvcmUiLCJlbWJlci1t
ZXRhbC9lcnJvciJdLGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbigpe3Jl
dHVybiB0aGlzfWZ1bmN0aW9uIGkoZSl7dmFyIHIsbjt0LmRlZmF1bHQuaW1wb3J0cy5jb25zb2xl
P3I9dC5kZWZhdWx0LmltcG9ydHMuY29uc29sZToidW5kZWZpbmVkIiE9dHlwZW9mIGNvbnNvbGUm
JihyPWNvbnNvbGUpO3ZhciBpPSJvYmplY3QiPT10eXBlb2Ygcj9yW2VdOm51bGw7aWYoaSlyZXR1
cm4iZnVuY3Rpb24iPT10eXBlb2YgaS5iaW5kPyhuPWkuYmluZChyKSxuLmRpc3BsYXlOYW1lPSJj
b25zb2xlLiIrZSxuKToiZnVuY3Rpb24iPT10eXBlb2YgaS5hcHBseT8obj1mdW5jdGlvbigpe2ku
YXBwbHkocixhcmd1bWVudHMpfSxuLmRpc3BsYXlOYW1lPSJjb25zb2xlLiIrZSxuKTpmdW5jdGlv
bigpe3ZhciBlPUFycmF5LnByb3RvdHlwZS5qb2luLmNhbGwoYXJndW1lbnRzLCIsICIpO2koZSl9
fWZ1bmN0aW9uIG8oZSx0KXtpZighZSl0cnl7dGhyb3cgbmV3IHIuZGVmYXVsdCgiYXNzZXJ0aW9u
IGZhaWxlZDogIit0KX1jYXRjaChlKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhyb3cgZX0sMCl9
fWUuZGVmYXVsdD17bG9nOmkoImxvZyIpfHxuLHdhcm46aSgid2FybiIpfHxuLGVycm9yOmkoImVy
cm9yIil8fG4saW5mbzppKCJpbmZvIil8fG4sZGVidWc6aSgiZGVidWciKXx8aSgiaW5mbyIpfHxu
LGFzc2VydDppKCJhc3NlcnQiKXx8b319KSxlKCJlbWJlci1tZXRhbC9tYXAiLFsiZXhwb3J0cyIs
ImVtYmVyLW1ldGFsL2NvcmUiLCJlbWJlci1tZXRhbC91dGlscyIsImVtYmVyLW1ldGFsL2VtcHR5
X29iamVjdCJdLGZ1bmN0aW9uKGUsdCxyLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUpe3Ro
cm93IG5ldyBUeXBlRXJyb3IoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpKyIgaXMg
bm90IGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBvKGUpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkNvbnN0
cnVjdG9yICIrZSsiIHJlcXVpcmVzICduZXcnIil9ZnVuY3Rpb24gYShlKXt2YXIgdD1uZXcgbi5k
ZWZhdWx0O2Zvcih2YXIgciBpbiBlKXRbcl09ZVtyXTtyZXR1cm4gdH1mdW5jdGlvbiBzKGUsdCl7
dmFyIHI9ZS5fa2V5cy5jb3B5KCksbj1hKGUuX3ZhbHVlcyk7cmV0dXJuIHQuX2tleXM9cix0Ll92
YWx1ZXM9bix0LnNpemU9ZS5zaXplLHR9ZnVuY3Rpb24gdSgpe3RoaXMgaW5zdGFuY2VvZiB1Pyh0
aGlzLmNsZWFyKCksdGhpcy5fc2lsZW5jZVJlbW92ZURlcHJlY2F0aW9uPSExKTpvKCJPcmRlcmVk
U2V0Iil9ZnVuY3Rpb24gbCgpe3RoaXMgaW5zdGFuY2VvZiB0aGlzLmNvbnN0cnVjdG9yPyh0aGlz
Ll9rZXlzPXUuY3JlYXRlKCksdGhpcy5fa2V5cy5fc2lsZW5jZVJlbW92ZURlcHJlY2F0aW9uPSEw
LHRoaXMuX3ZhbHVlcz1uZXcgbi5kZWZhdWx0LHRoaXMuc2l6ZT0wKTpvKCJPcmRlcmVkU2V0Iil9
ZnVuY3Rpb24gYyhlKXt0aGlzLl9zdXBlciRjb25zdHJ1Y3RvcigpLHRoaXMuZGVmYXVsdFZhbHVl
PWUuZGVmYXVsdFZhbHVlfXUuY3JlYXRlPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm4gbmV3
IGV9LHUucHJvdG90eXBlPXtjb25zdHJ1Y3Rvcjp1LGNsZWFyOmZ1bmN0aW9uKCl7dGhpcy5wcmVz
ZW5jZVNldD1uZXcgbi5kZWZhdWx0LHRoaXMubGlzdD1bXSx0aGlzLnNpemU9MH0sYWRkOmZ1bmN0
aW9uKGUsdCl7dmFyIG49dHx8ci5ndWlkRm9yKGUpLGk9dGhpcy5wcmVzZW5jZVNldCxvPXRoaXMu
bGlzdDtyZXR1cm4gaVtuXSE9PSEwJiYoaVtuXT0hMCx0aGlzLnNpemU9by5wdXNoKGUpKSx0aGlz
fSxkZWxldGU6ZnVuY3Rpb24oZSx0KXt2YXIgbj10fHxyLmd1aWRGb3IoZSksaT10aGlzLnByZXNl
bmNlU2V0LG89dGhpcy5saXN0O2lmKGlbbl09PT0hMCl7ZGVsZXRlIGlbbl07dmFyIGE9by5pbmRl
eE9mKGUpO3JldHVybiBhPi0xJiZvLnNwbGljZShhLDEpLHRoaXMuc2l6ZT1vLmxlbmd0aCwhMH1y
ZXR1cm4hMX0saXNFbXB0eTpmdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5zaXplfSxoYXM6ZnVu
Y3Rpb24oZSl7aWYoMD09PXRoaXMuc2l6ZSlyZXR1cm4hMTt2YXIgdD1yLmd1aWRGb3IoZSksbj10
aGlzLnByZXNlbmNlU2V0O3JldHVybiBuW3RdPT09ITB9LGZvckVhY2g6ZnVuY3Rpb24oZSl7aWYo
ImZ1bmN0aW9uIiE9dHlwZW9mIGUmJmkoZSksMCE9PXRoaXMuc2l6ZSl7dmFyIHQscj10aGlzLmxp
c3Qsbj1hcmd1bWVudHMubGVuZ3RoO2lmKDI9PT1uKWZvcih0PTA7dDxyLmxlbmd0aDt0KyspZS5j
YWxsKGFyZ3VtZW50c1sxXSxyW3RdKTtlbHNlIGZvcih0PTA7dDxyLmxlbmd0aDt0KyspZShyW3Rd
KX19LHRvQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5saXN0LnNsaWNlKCl9LGNvcHk6ZnVu
Y3Rpb24oKXt2YXIgZT10aGlzLmNvbnN0cnVjdG9yLHQ9bmV3IGU7cmV0dXJuIHQuX3NpbGVuY2VS
ZW1vdmVEZXByZWNhdGlvbj10aGlzLl9zaWxlbmNlUmVtb3ZlRGVwcmVjYXRpb24sdC5wcmVzZW5j
ZVNldD1hKHRoaXMucHJlc2VuY2VTZXQpLHQubGlzdD10aGlzLnRvQXJyYXkoKSx0LnNpemU9dGhp
cy5zaXplLHR9fSx0LmRlZmF1bHQuTWFwPWwsbC5jcmVhdGU9ZnVuY3Rpb24oKXt2YXIgZT10aGlz
O3JldHVybiBuZXcgZX0sbC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmwsc2l6ZTowLGdldDpmdW5j
dGlvbihlKXtpZigwIT09dGhpcy5zaXplKXt2YXIgdD10aGlzLl92YWx1ZXMsbj1yLmd1aWRGb3Io
ZSk7cmV0dXJuIHRbbl19fSxzZXQ6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLl9rZXlzLGk9dGhp
cy5fdmFsdWVzLG89ci5ndWlkRm9yKGUpLGE9ZT09PS0wPzA6ZTtyZXR1cm4gbi5hZGQoYSxvKSxp
W29dPXQsdGhpcy5zaXplPW4uc2l6ZSx0aGlzfSxkZWxldGU6ZnVuY3Rpb24oZSl7aWYoMD09PXRo
aXMuc2l6ZSlyZXR1cm4hMTt2YXIgdD10aGlzLl9rZXlzLG49dGhpcy5fdmFsdWVzLGk9ci5ndWlk
Rm9yKGUpO3JldHVybiEhdC5kZWxldGUoZSxpKSYmKGRlbGV0ZSBuW2ldLHRoaXMuc2l6ZT10LnNp
emUsITApfSxoYXM6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2tleXMuaGFzKGUpfSxmb3JFYWNo
OmZ1bmN0aW9uKGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlJiZpKGUpLDAhPT10aGlzLnNpemUp
e3ZhciB0LHIsbj1hcmd1bWVudHMubGVuZ3RoLG89dGhpczsyPT09bj8ocj1hcmd1bWVudHNbMV0s
dD1mdW5jdGlvbih0KXtlLmNhbGwocixvLmdldCh0KSx0LG8pfSk6dD1mdW5jdGlvbih0KXtlKG8u
Z2V0KHQpLHQsbyl9LHRoaXMuX2tleXMuZm9yRWFjaCh0KX19LGNsZWFyOmZ1bmN0aW9uKCl7dGhp
cy5fa2V5cy5jbGVhcigpLHRoaXMuX3ZhbHVlcz1uZXcgbi5kZWZhdWx0LHRoaXMuc2l6ZT0wfSxj
b3B5OmZ1bmN0aW9uKCl7cmV0dXJuIHModGhpcyxuZXcgbCl9fSxjLmNyZWF0ZT1mdW5jdGlvbihl
KXtyZXR1cm4gZT9uZXcgYyhlKTpuZXcgbH0sYy5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShsLnBy
b3RvdHlwZSksYy5wcm90b3R5cGUuY29uc3RydWN0b3I9YyxjLnByb3RvdHlwZS5fc3VwZXIkY29u
c3RydWN0b3I9bCxjLnByb3RvdHlwZS5fc3VwZXIkZ2V0PWwucHJvdG90eXBlLmdldCxjLnByb3Rv
dHlwZS5nZXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5oYXMoZSk7aWYodClyZXR1cm4gdGhpcy5f
c3VwZXIkZ2V0KGUpO3ZhciByPXRoaXMuZGVmYXVsdFZhbHVlKGUpO3JldHVybiB0aGlzLnNldChl
LHIpLHJ9LGMucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmNvbnN0cnVjdG9y
O3JldHVybiBzKHRoaXMsbmV3IGUoe2RlZmF1bHRWYWx1ZTp0aGlzLmRlZmF1bHRWYWx1ZX0pKX0s
ZS5kZWZhdWx0PWwsZS5PcmRlcmVkU2V0PXUsZS5NYXA9bCxlLk1hcFdpdGhEZWZhdWx0PWN9KSxl
KCJlbWJlci1tZXRhbC9tZXJnZSIsWyJleHBvcnRzIl0sZnVuY3Rpb24oZSl7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIHQoZSx0KXtpZighdHx8Im9iamVjdCIhPXR5cGVvZiB0KXJldHVybiBlO2Zvcih2
YXIgcixuPU9iamVjdC5rZXlzKHQpLGk9bi5sZW5ndGgsbz0wO288aTtvKyspcj1uW29dLGVbcl09
dFtyXTtyZXR1cm4gZX1lLmRlZmF1bHQ9dH0pLGUoImVtYmVyLW1ldGFsL21ldGEiLFsiZXhwb3J0
cyIsImVtYmVyLW1ldGFsL21ldGFfbGlzdGVuZXJzIiwiZW1iZXItbWV0YWwvZW1wdHlfb2JqZWN0
Il0sZnVuY3Rpb24oZSx0LHIpeyJubyB1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUsdCl7dGhpcy5f
Y2FjaGU9dm9pZCAwLHRoaXMuX3dlYWs9dm9pZCAwLHRoaXMuX3dhdGNoaW5nPXZvaWQgMCx0aGlz
Ll9taXhpbnM9dm9pZCAwLHRoaXMuX2JpbmRpbmdzPXZvaWQgMCx0aGlzLl92YWx1ZXM9dm9pZCAw
LHRoaXMuX2RlcHM9dm9pZCAwLHRoaXMuX2NoYWluV2F0Y2hlcnM9dm9pZCAwLHRoaXMuX2NoYWlu
cz12b2lkIDAsdGhpcy5fdGFnPXZvaWQgMCx0aGlzLnNvdXJjZT1lLHRoaXMucHJvdG89dm9pZCAw
LHRoaXMucGFyZW50PXQsdGhpcy5faW5pdGlhbGl6ZUxpc3RlbmVycygpfWZ1bmN0aW9uIGkoZSx0
KXt2YXIgcj1sKGUpLG49YyhlKTt0LnByb3RvdHlwZVsid3JpdGFibGUiK25dPWZ1bmN0aW9uKCl7
cmV0dXJuIHRoaXMuX2dldE9yQ3JlYXRlT3duTWFwKHIpfSx0LnByb3RvdHlwZVsicmVhZGFibGUi
K25dPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbcl19fWZ1bmN0aW9uIG8oZSx0KXt2YXIgbj1sKGUp
LGk9YyhlKTt0LnByb3RvdHlwZVsid3JpdGUiK2ldPWZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcy5f
Z2V0T3JDcmVhdGVPd25NYXAobik7cltlXT10fSx0LnByb3RvdHlwZVsicGVlayIraV09ZnVuY3Rp
b24oZSl7cmV0dXJuIHRoaXMuX2ZpbmRJbmhlcml0ZWQobixlKX0sdC5wcm90b3R5cGVbImZvckVh
Y2giK2ldPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLGk9bmV3IHIuZGVmYXVsdDt2b2lkIDAh
PT10Oyl7dmFyIG89dFtuXTtpZihvKWZvcih2YXIgYSBpbiBvKWlbYV18fChpW2FdPSEwLGUoYSxv
W2FdKSk7dD10LnBhcmVudH19LHQucHJvdG90eXBlWyJjbGVhciIraV09ZnVuY3Rpb24oKXt0aGlz
W25dPXZvaWQgMH0sdC5wcm90b3R5cGVbImRlbGV0ZUZyb20iK2ldPWZ1bmN0aW9uKGUpe2RlbGV0
ZSB0aGlzLl9nZXRPckNyZWF0ZU93bk1hcChuKVtlXX0sdC5wcm90b3R5cGVbImhhc0luIitpXT1m
dW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwIT09dGhpcy5fZmluZEluaGVyaXRlZChuLGUpfX1mdW5j
dGlvbiBhKGUsdCl7dmFyIG49bChlKSxpPWMoZSk7dC5wcm90b3R5cGVbIndyaXRlIitpXT1mdW5j
dGlvbihlLHQsaSl7dmFyIG89dGhpcy5fZ2V0T3JDcmVhdGVPd25NYXAobiksYT1vW2VdO2F8fChh
PW9bZV09bmV3IHIuZGVmYXVsdCksYVt0XT1pfSx0LnByb3RvdHlwZVsicGVlayIraV09ZnVuY3Rp
b24oZSx0KXtmb3IodmFyIHI9dGhpczt2b2lkIDAhPT1yOyl7dmFyIGk9cltuXTtpZihpKXt2YXIg
bz1pW2VdO2lmKG8mJnZvaWQgMCE9PW9bdF0pcmV0dXJuIG9bdF19cj1yLnBhcmVudH19LHQucHJv
dG90eXBlWyJoYXMiK2ldPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzO3ZvaWQgMCE9PXQ7KXtp
Zih0W25dJiZ0W25dW2VdKXJldHVybiEwO3Q9dC5wYXJlbnR9cmV0dXJuITF9LHQucHJvdG90eXBl
WyJmb3JFYWNoSW4iK2ldPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX2ZvckVhY2hJbihuLGUs
dCl9fWZ1bmN0aW9uIHMoZSx0KXt2YXIgcj1sKGUpLG49YyhlKTt0LnByb3RvdHlwZVsid3JpdGFi
bGUiK25dPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXNbcl07cmV0dXJuIHR8fCh0PXRoaXNbcl09ZSh0
aGlzLnNvdXJjZSkpLHR9LHQucHJvdG90eXBlWyJyZWFkYWJsZSIrbl09ZnVuY3Rpb24oKXtyZXR1
cm4gdGhpc1tyXX19ZnVuY3Rpb24gdShlLHQpe3ZhciByPWwoZSksbj1jKGUpO3QucHJvdG90eXBl
WyJ3cml0YWJsZSIrbl09ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpc1tyXTtyZXR1cm4gdHx8KHQ9dGhp
cy5wYXJlbnQ/dGhpc1tyXT10aGlzLnBhcmVudFsid3JpdGFibGUiK25dKGUpLmNvcHkodGhpcy5z
b3VyY2UpOnRoaXNbcl09ZSh0aGlzLnNvdXJjZSkpLHR9LHQucHJvdG90eXBlWyJyZWFkYWJsZSIr
bl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZ2V0SW5oZXJpdGVkKHIpfX1mdW5jdGlvbiBsKGUp
e3JldHVybiJfIitlfWZ1bmN0aW9uIGMoZSl7cmV0dXJuIGUucmVwbGFjZSgvXlx3LyxmdW5jdGlv
bihlKXtyZXR1cm4gZS50b1VwcGVyQ2FzZSgpfSl9ZnVuY3Rpb24gZihlKXt2YXIgdD1kKGUpLHI9
dm9pZCAwO2lmKHQpe2lmKHQuc291cmNlPT09ZSlyZXR1cm4gdDtyPXR9dmFyIGk9bmV3IG4oZSxy
KTtyZXR1cm4gXyhlLGkpLGl9ZnVuY3Rpb24gZChlKXtyZXR1cm4gZVt2XX1mdW5jdGlvbiBwKGUp
eyJvYmplY3QiPT10eXBlb2YgZVt2XSYmKGVbdl09bnVsbCl9ZS5tZXRhPWYsZS5wZWVrTWV0YT1k
LGUuZGVsZXRlTWV0YT1wO3ZhciBoPXtjYWNoZTppLHdlYWs6aSx3YXRjaGluZzpvLG1peGluczpv
LGJpbmRpbmdzOm8sdmFsdWVzOm8sZGVwczphLGNoYWluV2F0Y2hlcnM6cyxjaGFpbnM6dSx0YWc6
c30sbT1PYmplY3Qua2V5cyhoKSx2PSJfX2VtYmVyX21ldGFfXyI7Zm9yKHZhciBiIGluIHQucHJv
dG9NZXRob2RzKW4ucHJvdG90eXBlW2JdPXQucHJvdG9NZXRob2RzW2JdO20uZm9yRWFjaChmdW5j
dGlvbihlKXtyZXR1cm4gaFtlXShlLG4pfSksbi5wcm90b3R5cGUuX2dldE9yQ3JlYXRlT3duTWFw
PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXNbZV07cmV0dXJuIHR8fCh0PXRoaXNbZV09bmV3IHIuZGVm
YXVsdCksdH0sbi5wcm90b3R5cGUuX2dldEluaGVyaXRlZD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9
dGhpczt2b2lkIDAhPT10Oyl7aWYodFtlXSlyZXR1cm4gdFtlXTt0PXQucGFyZW50fX0sbi5wcm90
b3R5cGUuX2ZpbmRJbmhlcml0ZWQ9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9dGhpczt2b2lkIDAh
PT1yOyl7dmFyIG49cltlXTtpZihuKXt2YXIgaT1uW3RdO2lmKHZvaWQgMCE9PWkpcmV0dXJuIGl9
cj1yLnBhcmVudH19LG4ucHJvdG90eXBlLl9mb3JFYWNoSW49ZnVuY3Rpb24oZSx0LG4pe2Zvcih2
YXIgaT10aGlzLG89bmV3IHIuZGVmYXVsdCxhPVtdO3ZvaWQgMCE9PWk7KXt2YXIgcz1pW2VdO2lm
KHMpe3ZhciB1PXNbdF07aWYodSlmb3IodmFyIGwgaW4gdSlvW2xdfHwob1tsXT0hMCxhLnB1c2go
W2wsdVtsXV0pKX1pPWkucGFyZW50fWZvcih2YXIgYz0wO2M8YS5sZW5ndGg7YysrKXt2YXIgZj1h
W2NdLGw9ZlswXSxkPWZbMV07bihsLGQpfX07dmFyIGc9e3dyaXRhYmxlOiEwLGNvbmZpZ3VyYWJs
ZTohMCxlbnVtZXJhYmxlOiExLHZhbHVlOm51bGx9O2UuTUVUQV9ERVNDPWc7dmFyIHk9e25hbWU6
dixkZXNjcmlwdG9yOmd9LF89ZnVuY3Rpb24oZSx0KXtudWxsIT09ZVt2XSYmKGUuX19kZWZpbmVO
b25FbnVtZXJhYmxlP2UuX19kZWZpbmVOb25FbnVtZXJhYmxlKHkpOk9iamVjdC5kZWZpbmVQcm9w
ZXJ0eShlLHYsZykpLGVbdl09dH19KSxlKCJlbWJlci1tZXRhbC9tZXRhX2xpc3RlbmVycyIsWyJl
eHBvcnRzIl0sZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHQoZSx0LHIpe2Zvcih2
YXIgbj10W3IrMV0saT10W3IrMl0sbz0wO288ZS5sZW5ndGgtMjtvKz0zKWlmKGVbb109PT1uJiZl
W28rMV09PT1pKXJldHVybjtlLnB1c2gobixpLHRbciszXSl9dmFyIHI9MTtlLk9OQ0U9cjt2YXIg
bj0yO2UuU1VTUEVOREVEPW47dmFyIGk9e2FkZFRvTGlzdGVuZXJzOmZ1bmN0aW9uKGUsdCxyLG4p
e3RoaXMuX2xpc3RlbmVyc3x8KHRoaXMuX2xpc3RlbmVycz1bXSksdGhpcy5fbGlzdGVuZXJzLnB1
c2goZSx0LHIsbil9LF9maW5hbGl6ZUxpc3RlbmVyczpmdW5jdGlvbigpe2lmKCF0aGlzLl9saXN0
ZW5lcnNGaW5hbGl6ZWQpe3RoaXMuX2xpc3RlbmVyc3x8KHRoaXMuX2xpc3RlbmVycz1bXSk7Zm9y
KHZhciBlPXRoaXMucGFyZW50O2U7KXt2YXIgdD1lLl9saXN0ZW5lcnM7aWYodCYmKHRoaXMuX2xp
c3RlbmVycz10aGlzLl9saXN0ZW5lcnMuY29uY2F0KHQpKSxlLl9saXN0ZW5lcnNGaW5hbGl6ZWQp
YnJlYWs7ZT1lLnBhcmVudH10aGlzLl9saXN0ZW5lcnNGaW5hbGl6ZWQ9ITB9fSxyZW1vdmVGcm9t
TGlzdGVuZXJzOmZ1bmN0aW9uKGUsdCxyLG4pe2Zvcih2YXIgaT10aGlzO2k7KXt2YXIgbz1pLl9s
aXN0ZW5lcnM7aWYobylmb3IodmFyIGE9by5sZW5ndGgtNDthPj0wO2EtPTQpaWYob1thXT09PWUm
Jighcnx8b1thKzFdPT09dCYmb1thKzJdPT09cikpe2lmKGkhPT10aGlzKXJldHVybiB0aGlzLl9m
aW5hbGl6ZUxpc3RlbmVycygpLHRoaXMucmVtb3ZlRnJvbUxpc3RlbmVycyhlLHQscik7ImZ1bmN0
aW9uIj09dHlwZW9mIG4mJm4oZSx0LG9bYSsyXSksby5zcGxpY2UoYSw0KX1pZihpLl9saXN0ZW5l
cnNGaW5hbGl6ZWQpYnJlYWs7aT1pLnBhcmVudH19LG1hdGNoaW5nTGlzdGVuZXJzOmZ1bmN0aW9u
KGUpe2Zvcih2YXIgcj10aGlzLGk9W107cjspe3ZhciBvPXIuX2xpc3RlbmVycztpZihvKWZvcih2
YXIgYT0wO2E8by5sZW5ndGgtMzthKz00KW9bYV09PT1lJiZ0KGksbyxhKTtpZihyLl9saXN0ZW5l
cnNGaW5hbGl6ZWQpYnJlYWs7cj1yLnBhcmVudH12YXIgcz10aGlzLl9zdXNwZW5kZWRMaXN0ZW5l
cnM7aWYocylmb3IodmFyIHU9MDt1PHMubGVuZ3RoLTI7dSs9MylpZihlPT09c1t1XSlmb3IodmFy
IGw9MDtsPGkubGVuZ3RoLTI7bCs9MylpW2xdPT09c1t1KzFdJiZpW2wrMV09PT1zW3UrMl0mJihp
W2wrMl18PW4pO3JldHVybiBpfSxzdXNwZW5kTGlzdGVuZXJzOmZ1bmN0aW9uKGUsdCxyLG4pe3Zh
ciBpPXRoaXMuX3N1c3BlbmRlZExpc3RlbmVycztpfHwoaT10aGlzLl9zdXNwZW5kZWRMaXN0ZW5l
cnM9W10pO2Zvcih2YXIgbz0wO288ZS5sZW5ndGg7bysrKWkucHVzaChlW29dLHQscik7dHJ5e3Jl
dHVybiBuLmNhbGwodCl9ZmluYWxseXtpZihpLmxlbmd0aD09PWUubGVuZ3RoKXRoaXMuX3N1c3Bl
bmRlZExpc3RlbmVycz12b2lkIDA7ZWxzZSBmb3IodmFyIG89aS5sZW5ndGgtMztvPj0wO28tPTMp
aVtvKzFdPT09dCYmaVtvKzJdPT09ciYmZS5pbmRleE9mKGlbb10pIT09LTEmJmkuc3BsaWNlKG8s
Myl9fSx3YXRjaGVkRXZlbnRzOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMsdD17fTtlOyl7dmFy
IHI9ZS5fbGlzdGVuZXJzO2lmKHIpZm9yKHZhciBuPTA7bjxyLmxlbmd0aC0zO24rPTQpdFtyW25d
XT0hMDtpZihlLl9saXN0ZW5lcnNGaW5hbGl6ZWQpYnJlYWs7ZT1lLnBhcmVudH1yZXR1cm4gT2Jq
ZWN0LmtleXModCl9LF9pbml0aWFsaXplTGlzdGVuZXJzOmZ1bmN0aW9uKCl7dGhpcy5fbGlzdGVu
ZXJzPXZvaWQgMCx0aGlzLl9saXN0ZW5lcnNGaW5hbGl6ZWQ9dm9pZCAwLHRoaXMuX3N1c3BlbmRl
ZExpc3RlbmVycz12b2lkIDB9fTtlLnByb3RvTWV0aG9kcz1pfSksZSgiZW1iZXItbWV0YWwvbWl4
aW4iLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL2NvcmUiLCJlbWJlci1tZXRhbC9lcnJvciIsImVt
YmVyLW1ldGFsL2RlYnVnIiwiZW1iZXItbWV0YWwvYXNzaWduIiwiZW1iZXItbWV0YWwvZW1wdHlf
b2JqZWN0IiwiZW1iZXItbWV0YWwvcHJvcGVydHlfZ2V0IiwiZW1iZXItbWV0YWwvcHJvcGVydHlf
c2V0IiwiZW1iZXItbWV0YWwvdXRpbHMiLCJlbWJlci1tZXRhbC9tZXRhIiwiZW1iZXItbWV0YWwv
ZXhwYW5kX3Byb3BlcnRpZXMiLCJlbWJlci1tZXRhbC9wcm9wZXJ0aWVzIiwiZW1iZXItbWV0YWwv
Y29tcHV0ZWQiLCJlbWJlci1tZXRhbC9iaW5kaW5nIiwiZW1iZXItbWV0YWwvb2JzZXJ2ZXIiLCJl
bWJlci1tZXRhbC9ldmVudHMiLCJlbWJlci1tZXRhbC9zdHJlYW1zL3V0aWxzIl0sZnVuY3Rpb24o
ZSx0LHIsbixpLG8sYSxzLHUsbCxjLGYsZCxwLGgsbSx2KXsibm8gdXNlIHN0cmljdCI7ZnVuY3Rp
b24gYigpe31mdW5jdGlvbiBnKGUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlJiZlLmlzTWV0
aG9kIT09ITEmJmUhPT1Cb29sZWFuJiZlIT09T2JqZWN0JiZlIT09TnVtYmVyJiZlIT09QXJyYXkm
JmUhPT1EYXRlJiZlIT09U3RyaW5nfWZ1bmN0aW9uIHkoZSx0KXt2YXIgcjtyZXR1cm4gdCBpbnN0
YW5jZW9mIE0/KHI9dS5ndWlkRm9yKHQpLGUucGVla01peGlucyhyKT9LOihlLndyaXRlTWl4aW5z
KHIsdCksdC5wcm9wZXJ0aWVzKSk6dH1mdW5jdGlvbiBfKGUsdCxyLG4pe3ZhciBpO3JldHVybiBp
PXJbZV18fG5bZV0sdFtlXSYmKGk9aT9pLmNvbmNhdCh0W2VdKTp0W2VdKSxpfWZ1bmN0aW9uIHco
ZSx0LHIsbixpLG8pe3ZhciBhO2lmKHZvaWQgMD09PW5bdF0mJihhPWlbdF0pLCFhKXt2YXIgcz1v
W3RdLGw9bnVsbCE9PXMmJiJvYmplY3QiPT10eXBlb2YgcyYmcy5pc0Rlc2NyaXB0b3I/czp2b2lk
IDA7YT1sfXJldHVybiB2b2lkIDAhPT1hJiZhIGluc3RhbmNlb2YgZC5Db21wdXRlZFByb3BlcnR5
PyhyPU9iamVjdC5jcmVhdGUociksci5fZ2V0dGVyPXUud3JhcChyLl9nZXR0ZXIsYS5fZ2V0dGVy
KSxhLl9zZXR0ZXImJihyLl9zZXR0ZXI/ci5fc2V0dGVyPXUud3JhcChyLl9zZXR0ZXIsYS5fc2V0
dGVyKTpyLl9zZXR0ZXI9YS5fc2V0dGVyKSxyKTpyfWZ1bmN0aW9uIHgoZSx0LHIsbixpKXt2YXIg
bztyZXR1cm4gdm9pZCAwPT09aVt0XSYmKG89blt0XSksbz1vfHxlW3RdLHZvaWQgMD09PW98fCJm
dW5jdGlvbiIhPXR5cGVvZiBvP3I6dS53cmFwKHIsbyl9ZnVuY3Rpb24gayhlLHQscixuKXt2YXIg
aT1uW3RdfHxlW3RdO3JldHVybiBpPyJmdW5jdGlvbiI9PXR5cGVvZiBpLmNvbmNhdD9udWxsPT09
cnx8dm9pZCAwPT09cj9pOmkuY29uY2F0KHIpOnUubWFrZUFycmF5KGkpLmNvbmNhdChyKTp1Lm1h
a2VBcnJheShyKX1mdW5jdGlvbiBDKGUsdCxyLG4pe3ZhciBvPW5bdF18fGVbdF07aWYoIW8pcmV0
dXJuIHI7dmFyIGE9aS5kZWZhdWx0KHt9LG8pLHM9ITE7Zm9yKHZhciB1IGluIHIpaWYoci5oYXNP
d25Qcm9wZXJ0eSh1KSl7dmFyIGw9clt1XTtnKGwpPyhzPSEwLGFbdV09eChlLHUsbCxvLHt9KSk6
YVt1XT1sfXJldHVybiBzJiYoYS5fc3VwZXI9YiksYX1mdW5jdGlvbiBFKGUsdCxyLG4saSxvLGEs
cyl7aWYociBpbnN0YW5jZW9mIGYuRGVzY3JpcHRvcil7aWYocj09PVcmJmlbdF0pcmV0dXJuIEs7
ci5fZ2V0dGVyJiYocj13KG4sdCxyLG8saSxlKSksaVt0XT1yLG9bdF09dm9pZCAwfWVsc2UgYSYm
YS5pbmRleE9mKHQpPj0wfHwiY29uY2F0ZW5hdGVkUHJvcGVydGllcyI9PT10fHwibWVyZ2VkUHJv
cGVydGllcyI9PT10P3I9ayhlLHQscixvKTpzJiZzLmluZGV4T2YodCk+PTA/cj1DKGUsdCxyLG8p
OmcocikmJihyPXgoZSx0LHIsbyxpKSksaVt0XT12b2lkIDAsb1t0XT1yfWZ1bmN0aW9uIE8oZSx0
LHIsbixpLG8pe2Z1bmN0aW9uIGEoZSl7ZGVsZXRlIHJbZV0sZGVsZXRlIG5bZV19Zm9yKHZhciBz
LHUsYyxmLGQscCxoPTAsbT1lLmxlbmd0aDtoPG07aCsrKWlmKHM9ZVtoXSx1PXkodCxzKSx1IT09
SylpZih1KXtwPWwubWV0YShpKSxpLndpbGxNZXJnZU1peGluJiZpLndpbGxNZXJnZU1peGluKHUp
LGY9XygiY29uY2F0ZW5hdGVkUHJvcGVydGllcyIsdSxuLGkpLGQ9XygibWVyZ2VkUHJvcGVydGll
cyIsdSxuLGkpO2ZvcihjIGluIHUpdS5oYXNPd25Qcm9wZXJ0eShjKSYmKG8ucHVzaChjKSxFKGks
Yyx1W2NdLHAscixuLGYsZCkpO3UuaGFzT3duUHJvcGVydHkoInRvU3RyaW5nIikmJihpLnRvU3Ry
aW5nPXUudG9TdHJpbmcpfWVsc2Ugcy5taXhpbnMmJihPKHMubWl4aW5zLHQscixuLGksbykscy5f
d2l0aG91dCYmcy5fd2l0aG91dC5mb3JFYWNoKGEpKX1mdW5jdGlvbiBUKGUsdCxyLG4pe1EudGVz
dCh0KSYmbi53cml0ZUJpbmRpbmdzKHQscil9ZnVuY3Rpb24gTihlLHQscil7dmFyIG49ZnVuY3Rp
b24ocil7aC5fc3VzcGVuZE9ic2VydmVyKGUsdCxudWxsLGksZnVuY3Rpb24oKXtzLnRyeVNldChl
LHQsci52YWx1ZSgpKX0pfSxpPWZ1bmN0aW9uKCl7ci5zZXRWYWx1ZShhLmdldChlLHQpLG4pfTtz
LnNldChlLHQsci52YWx1ZSgpKSxoLmFkZE9ic2VydmVyKGUsdCxudWxsLGkpLHIuc3Vic2NyaWJl
KG4pLHZvaWQgMD09PWUuX3N0cmVhbUJpbmRpbmdTdWJzY3JpcHRpb25zJiYoZS5fc3RyZWFtQmlu
ZGluZ1N1YnNjcmlwdGlvbnM9bmV3IG8uZGVmYXVsdCksZS5fc3RyZWFtQmluZGluZ1N1YnNjcmlw
dGlvbnNbdF09bn1mdW5jdGlvbiBTKGUsdCl7dC5mb3JFYWNoQmluZGluZ3MoZnVuY3Rpb24odCxy
KXtpZihyKXt2YXIgbj10LnNsaWNlKDAsLTcpO2lmKHYuaXNTdHJlYW0ocikpcmV0dXJuIHZvaWQg
TihlLG4scik7ciBpbnN0YW5jZW9mIHAuQmluZGluZz8ocj1yLmNvcHkoKSxyLnRvKG4pKTpyPW5l
dyBwLkJpbmRpbmcobixyKSxyLmNvbm5lY3QoZSksZVt0XT1yfX0pLHQuY2xlYXJCaW5kaW5ncygp
fWZ1bmN0aW9uIEEoZSx0KXtyZXR1cm4gUyhlLHR8fGwubWV0YShlKSksZX1mdW5jdGlvbiBQKGUs
dCxyLG4saSl7dmFyIG8sYSxzPXQubWV0aG9kTmFtZTtyZXR1cm4gbltzXXx8aVtzXT8obz1pW3Nd
LHQ9bltzXSk6KGE9ZVtzXSkmJm51bGwhPT1hJiYib2JqZWN0Ij09dHlwZW9mIGEmJmEuaXNEZXNj
cmlwdG9yPyh0PWEsbz12b2lkIDApOih0PXZvaWQgMCxvPWVbc10pLHtkZXNjOnQsdmFsdWU6b319
ZnVuY3Rpb24gaihlLHQscixuLGkpe3ZhciBvPXJbbl07aWYobylmb3IodmFyIGE9MCxzPW8ubGVu
Z3RoO2E8czthKyspaShlLG9bYV0sbnVsbCx0KX1mdW5jdGlvbiBSKGUsdCxyKXt2YXIgbj1lW3Rd
OyJmdW5jdGlvbiI9PXR5cGVvZiBuJiYoaihlLHQsbiwiX19lbWJlcl9vYnNlcnZlc0JlZm9yZV9f
IixoLl9yZW1vdmVCZWZvcmVPYnNlcnZlciksaihlLHQsbiwiX19lbWJlcl9vYnNlcnZlc19fIixo
LnJlbW92ZU9ic2VydmVyKSxqKGUsdCxuLCJfX2VtYmVyX2xpc3RlbnNfXyIsbS5yZW1vdmVMaXN0
ZW5lcikpLCJmdW5jdGlvbiI9PXR5cGVvZiByJiYoaihlLHQsciwiX19lbWJlcl9vYnNlcnZlc0Jl
Zm9yZV9fIixoLl9hZGRCZWZvcmVPYnNlcnZlciksaihlLHQsciwiX19lbWJlcl9vYnNlcnZlc19f
IixoLmFkZE9ic2VydmVyKSxqKGUsdCxyLCJfX2VtYmVyX2xpc3RlbnNfXyIsbS5hZGRMaXN0ZW5l
cikpfWZ1bmN0aW9uIEwoZSx0LHIpe3ZhciBuLGksbyxhPXt9LHM9e30sdT1sLm1ldGEoZSksYz1b
XTtlLl9zdXBlcj1iLE8odCx1LGEscyxlLGMpO2Zvcih2YXIgZD0wLHA9Yy5sZW5ndGg7ZDxwO2Qr
KylpZihuPWNbZF0sImNvbnN0cnVjdG9yIiE9PW4mJnMuaGFzT3duUHJvcGVydHkobikmJihvPWFb
bl0saT1zW25dLG8hPT1XKSl7Zm9yKDtvJiZvIGluc3RhbmNlb2YgVjspe3ZhciBoPVAoZSxvLHUs
YSxzKTtvPWguZGVzYyxpPWgudmFsdWV9dm9pZCAwPT09byYmdm9pZCAwPT09aXx8KFIoZSxuLGkp
LFQoZSxuLGksdSksZi5kZWZpbmVQcm9wZXJ0eShlLG4sbyxpLHUpKX1yZXR1cm4gcnx8QShlLHUp
LGV9ZnVuY3Rpb24gRChlKXtmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxyPUFycmF5KHQ+MT90
LTE6MCksbj0xO248dDtuKyspcltuLTFdPWFyZ3VtZW50c1tuXTtyZXR1cm4gTChlLHIsITEpLGV9
ZnVuY3Rpb24gTShlLHQpe3RoaXMucHJvcGVydGllcz10O3ZhciByPWUmJmUubGVuZ3RoO2lmKHI+
MCl7Zm9yKHZhciBuPW5ldyBBcnJheShyKSxpPTA7aTxyO2krKyl7dmFyIG89ZVtpXTtvIGluc3Rh
bmNlb2YgTT9uW2ldPW86bltpXT1uZXcgTSh2b2lkIDAsbyl9dGhpcy5taXhpbnM9bn1lbHNlIHRo
aXMubWl4aW5zPXZvaWQgMDt0aGlzLm93bmVyQ29uc3RydWN0b3I9dm9pZCAwLHRoaXMuX3dpdGhv
dXQ9dm9pZCAwLHRoaXNbdS5HVUlEX0tFWV09bnVsbCx0aGlzW3UuR1VJRF9LRVkrIl9uYW1lIl09
bnVsbH1mdW5jdGlvbiBJKGUsdCxyKXt2YXIgbj11Lmd1aWRGb3IoZSk7aWYocltuXSlyZXR1cm4h
MTtpZihyW25dPSEwLGU9PT10KXJldHVybiEwO2Zvcih2YXIgaT1lLm1peGlucyxvPWk/aS5sZW5n
dGg6MDstLW8+PTA7KWlmKEkoaVtvXSx0LHIpKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIEYo
ZSx0LHIpe2lmKCFyW3UuZ3VpZEZvcih0KV0paWYoclt1Lmd1aWRGb3IodCldPSEwLHQucHJvcGVy
dGllcylmb3IodmFyIG49T2JqZWN0LmtleXModC5wcm9wZXJ0aWVzKSxpPTA7aTxuLmxlbmd0aDtp
Kyspe3ZhciBvPW5baV07ZVtvXT0hMH1lbHNlIHQubWl4aW5zJiZ0Lm1peGlucy5mb3JFYWNoKGZ1
bmN0aW9uKHQpe3JldHVybiBGKGUsdCxyKX0pfWZ1bmN0aW9uIEgoKXtyZXR1cm4gV31mdW5jdGlv
biBWKGUpe3RoaXMuaXNEZXNjcmlwdG9yPSEwLHRoaXMubWV0aG9kTmFtZT1lfWZ1bmN0aW9uIHEo
ZSl7cmV0dXJuIG5ldyBWKGUpfWZ1bmN0aW9uIHooKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0
aCx0PUFycmF5KGUpLG49MDtuPGU7bisrKXRbbl09YXJndW1lbnRzW25dO3ZhciBpLG89dC5zbGlj
ZSgtMSlbMF0sYT1mdW5jdGlvbihlKXtpLnB1c2goZSl9LHM9dC5zbGljZSgwLC0xKTsiZnVuY3Rp
b24iIT10eXBlb2YgbyYmKG89dFswXSxzPXQuc2xpY2UoMSkpLGk9W107Zm9yKHZhciB1PTA7dTxz
Lmxlbmd0aDsrK3UpYy5kZWZhdWx0KHNbdV0sYSk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG8pdGhy
b3cgbmV3IHIuZGVmYXVsdCgiRW1iZXIub2JzZXJ2ZXIgY2FsbGVkIHdpdGhvdXQgYSBmdW5jdGlv
biIpO3JldHVybiBvLl9fZW1iZXJfb2JzZXJ2ZXNfXz1pLG99ZnVuY3Rpb24gQigpe2Zvcih2YXIg
ZT0wLHQ9YXJndW1lbnRzLmxlbmd0aDtlPHQ7ZSsrKXthcmd1bWVudHNbZV19cmV0dXJuIHouYXBw
bHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIFUoKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0
aCxyPUFycmF5KGUpLG49MDtuPGU7bisrKXJbbl09YXJndW1lbnRzW25dO3ZhciBpLG89ci5zbGlj
ZSgtMSlbMF0sYT1mdW5jdGlvbihlKXtpLnB1c2goZSl9LHM9ci5zbGljZSgwLC0xKTsiZnVuY3Rp
b24iIT10eXBlb2YgbyYmKG89clswXSxzPXIuc2xpY2UoMSkpLGk9W107Zm9yKHZhciB1PTA7dTxz
Lmxlbmd0aDsrK3UpYy5kZWZhdWx0KHNbdV0sYSk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG8pdGhy
b3cgbmV3IHQuZGVmYXVsdC5FcnJvcigiRW1iZXIuYmVmb3JlT2JzZXJ2ZXIgY2FsbGVkIHdpdGhv
dXQgYSBmdW5jdGlvbiIpO3JldHVybiBvLl9fZW1iZXJfb2JzZXJ2ZXNCZWZvcmVfXz1pLG99ZS5t
aXhpbj1ELGUuZGVmYXVsdD1NLGUucmVxdWlyZWQ9SCxlLmFsaWFzTWV0aG9kPXEsZS5vYnNlcnZl
cj16LGUuX2ltbWVkaWF0ZU9ic2VydmVyPUIsZS5fYmVmb3JlT2JzZXJ2ZXI9VSxiLl9faGFzU3Vw
ZXI9ITE7dmFyIFcsJD1bXS5zbGljZSxLPXt9LFE9L14uK0JpbmRpbmckLztNLl9hcHBseT1MLE0u
YXBwbHlQYXJ0aWFsPWZ1bmN0aW9uKGUpe3ZhciB0PSQuY2FsbChhcmd1bWVudHMsMSk7cmV0dXJu
IEwoZSx0LCEwKX0sTS5maW5pc2hQYXJ0aWFsPUEsdC5kZWZhdWx0LmFueVVucHJvY2Vzc2VkTWl4
aW5zPSExLE0uY3JlYXRlPWZ1bmN0aW9uKCl7dC5kZWZhdWx0LmFueVVucHJvY2Vzc2VkTWl4aW5z
PSEwO2Zvcih2YXIgZT10aGlzLHI9YXJndW1lbnRzLmxlbmd0aCxuPUFycmF5KHIpLGk9MDtpPHI7
aSsrKW5baV09YXJndW1lbnRzW2ldO3JldHVybiBuZXcgZShuLHZvaWQgMCl9O3ZhciBHPU0ucHJv
dG90eXBlO0cucmVvcGVuPWZ1bmN0aW9uKCl7dmFyIGU7dGhpcy5wcm9wZXJ0aWVzPyhlPW5ldyBN
KHZvaWQgMCx0aGlzLnByb3BlcnRpZXMpLHRoaXMucHJvcGVydGllcz12b2lkIDAsdGhpcy5taXhp
bnM9W2VdKTp0aGlzLm1peGluc3x8KHRoaXMubWl4aW5zPVtdKTt2YXIgdCxyPWFyZ3VtZW50cy5s
ZW5ndGgsbj10aGlzLm1peGlucztmb3IodD0wO3Q8cjt0KyspZT1hcmd1bWVudHNbdF0sZSBpbnN0
YW5jZW9mIE0/bi5wdXNoKGUpOm4ucHVzaChuZXcgTSh2b2lkIDAsZSkpO3JldHVybiB0aGlzfSxH
LmFwcGx5PWZ1bmN0aW9uKGUpe3JldHVybiBMKGUsW3RoaXNdLCExKX0sRy5hcHBseVBhcnRpYWw9
ZnVuY3Rpb24oZSl7cmV0dXJuIEwoZSxbdGhpc10sITApfSxHLnRvU3RyaW5nPWZ1bmN0aW9uKCl7
cmV0dXJuIih1bmtub3duIG1peGluKSJ9LEcuZGV0ZWN0PWZ1bmN0aW9uKGUpe2lmKCFlKXJldHVy
biExO2lmKGUgaW5zdGFuY2VvZiBNKXJldHVybiBJKGUsdGhpcyx7fSk7dmFyIHQ9bC5wZWVrTWV0
YShlKTtyZXR1cm4hIXQmJiEhdC5wZWVrTWl4aW5zKHUuZ3VpZEZvcih0aGlzKSl9LEcud2l0aG91
dD1mdW5jdGlvbigpe2Zvcih2YXIgZT1uZXcgTShbdGhpc10pLHQ9YXJndW1lbnRzLmxlbmd0aCxy
PUFycmF5KHQpLG49MDtuPHQ7bisrKXJbbl09YXJndW1lbnRzW25dO3JldHVybiBlLl93aXRob3V0
PXIsZX0sRy5rZXlzPWZ1bmN0aW9uKCl7dmFyIGU9e30sdD17fTtGKGUsdGhpcyx0KTt2YXIgcj1P
YmplY3Qua2V5cyhlKTtyZXR1cm4gcn0sTS5taXhpbnM9ZnVuY3Rpb24oZSl7dmFyIHQ9bC5wZWVr
TWV0YShlKSxyPVtdO3JldHVybiB0Pyh0LmZvckVhY2hNaXhpbnMoZnVuY3Rpb24oZSx0KXt0LnBy
b3BlcnRpZXN8fHIucHVzaCh0KTsKK30pLHIpOnJ9LGUuUkVRVUlSRUQ9Vz1uZXcgZi5EZXNjcmlw
dG9yLFcudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iKFJlcXVpcmVkIFByb3BlcnR5KSJ9LFYu
cHJvdG90eXBlPW5ldyBmLkRlc2NyaXB0b3IsZS5JU19CSU5ESU5HPVEsZS5NaXhpbj1NLGUucmVx
dWlyZWQ9SCxlLlJFUVVJUkVEPVd9KSxlKCJlbWJlci1tZXRhbC9vYnNlcnZlciIsWyJleHBvcnRz
IiwiZW1iZXItbWV0YWwvd2F0Y2hpbmciLCJlbWJlci1tZXRhbC9ldmVudHMiXSxmdW5jdGlvbihl
LHQscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7cmV0dXJuIGUrZH1mdW5jdGlvbiBpKGUp
e3JldHVybiBlK3B9ZnVuY3Rpb24gbyhlLGksbyxhKXtyZXR1cm4gci5hZGRMaXN0ZW5lcihlLG4o
aSksbyxhKSx0LndhdGNoKGUsaSksdGhpc31mdW5jdGlvbiBhKGUsdCl7cmV0dXJuIHIubGlzdGVu
ZXJzRm9yKGUsbih0KSl9ZnVuY3Rpb24gcyhlLGksbyxhKXtyZXR1cm4gdC51bndhdGNoKGUsaSks
ci5yZW1vdmVMaXN0ZW5lcihlLG4oaSksbyxhKSx0aGlzfWZ1bmN0aW9uIHUoZSxuLG8sYSl7cmV0
dXJuIHIuYWRkTGlzdGVuZXIoZSxpKG4pLG8sYSksdC53YXRjaChlLG4pLHRoaXN9ZnVuY3Rpb24g
bChlLHQsaSxvLGEpe3JldHVybiByLnN1c3BlbmRMaXN0ZW5lcihlLG4odCksaSxvLGEpfWZ1bmN0
aW9uIGMoZSx0LGksbyxhKXt2YXIgcz10Lm1hcChuKTtyZXR1cm4gci5zdXNwZW5kTGlzdGVuZXJz
KGUscyxpLG8sYSl9ZnVuY3Rpb24gZihlLG4sbyxhKXtyZXR1cm4gdC51bndhdGNoKGUsbiksci5y
ZW1vdmVMaXN0ZW5lcihlLGkobiksbyxhKSx0aGlzfWUuYWRkT2JzZXJ2ZXI9byxlLm9ic2VydmVy
c0Zvcj1hLGUucmVtb3ZlT2JzZXJ2ZXI9cyxlLl9hZGRCZWZvcmVPYnNlcnZlcj11LGUuX3N1c3Bl
bmRPYnNlcnZlcj1sLGUuX3N1c3BlbmRPYnNlcnZlcnM9YyxlLl9yZW1vdmVCZWZvcmVPYnNlcnZl
cj1mO3ZhciBkPSI6Y2hhbmdlIixwPSI6YmVmb3JlIn0pLGUoImVtYmVyLW1ldGFsL29ic2VydmVy
X3NldCIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvdXRpbHMiLCJlbWJlci1tZXRhbC9ldmVudHMi
XSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oKXt0aGlzLmNsZWFyKCl9
ZS5kZWZhdWx0PW4sbi5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGUscixuKXt2YXIgaSxvPXRoaXMu
b2JzZXJ2ZXJTZXQsYT10aGlzLm9ic2VydmVycyxzPXQuZ3VpZEZvcihlKSx1PW9bc107cmV0dXJu
IHV8fChvW3NdPXU9e30pLGk9dVtyXSx2b2lkIDA9PT1pJiYoaT1hLnB1c2goe3NlbmRlcjplLGtl
eU5hbWU6cixldmVudE5hbWU6bixsaXN0ZW5lcnM6W119KS0xLHVbcl09aSksYVtpXS5saXN0ZW5l
cnN9LG4ucHJvdG90eXBlLmZsdXNoPWZ1bmN0aW9uKCl7dmFyIGUsdCxuLGksbz10aGlzLm9ic2Vy
dmVycztmb3IodGhpcy5jbGVhcigpLGU9MCx0PW8ubGVuZ3RoO2U8dDsrK2Upbj1vW2VdLGk9bi5z
ZW5kZXIsaS5pc0Rlc3Ryb3lpbmd8fGkuaXNEZXN0cm95ZWR8fHIuc2VuZEV2ZW50KGksbi5ldmVu
dE5hbWUsW2ksbi5rZXlOYW1lXSxuLmxpc3RlbmVycyl9LG4ucHJvdG90eXBlLmNsZWFyPWZ1bmN0
aW9uKCl7dGhpcy5vYnNlcnZlclNldD17fSx0aGlzLm9ic2VydmVycz1bXX19KSxlKCJlbWJlci1t
ZXRhbC9wYXRoX2NhY2hlIixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9jYWNoZSJdLGZ1bmN0aW9u
KGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGYuZ2V0KGUpfWZ1bmN0aW9u
IG4oZSl7cmV0dXJuIGQuZ2V0KGUpfWZ1bmN0aW9uIGkoZSl7cmV0dXJuIHAuZ2V0KGUpfWZ1bmN0
aW9uIG8oZSl7cmV0dXJuIGguZ2V0KGUpIT09LTF9ZnVuY3Rpb24gYShlKXtyZXR1cm4gbS5nZXQo
ZSl9ZnVuY3Rpb24gcyhlKXtyZXR1cm4gdi5nZXQoZSl9ZS5pc0dsb2JhbD1yLGUuaXNHbG9iYWxQ
YXRoPW4sZS5oYXNUaGlzPWksZS5pc1BhdGg9byxlLmdldEZpcnN0S2V5PWEsZS5nZXRUYWlsUGF0
aD1zO3ZhciB1PS9eW0EtWiRdLyxsPS9eW0EtWiRdLipbXC5dLyxjPSJ0aGlzLiIsZj1uZXcgdC5k
ZWZhdWx0KDFlMyxmdW5jdGlvbihlKXtyZXR1cm4gdS50ZXN0KGUpfSksZD1uZXcgdC5kZWZhdWx0
KDFlMyxmdW5jdGlvbihlKXtyZXR1cm4gbC50ZXN0KGUpfSkscD1uZXcgdC5kZWZhdWx0KDFlMyxm
dW5jdGlvbihlKXtyZXR1cm4gMD09PWUubGFzdEluZGV4T2YoYywwKX0pLGg9bmV3IHQuZGVmYXVs
dCgxZTMsZnVuY3Rpb24oZSl7cmV0dXJuIGUuaW5kZXhPZigiLiIpfSksbT1uZXcgdC5kZWZhdWx0
KDFlMyxmdW5jdGlvbihlKXt2YXIgdD1oLmdldChlKTtyZXR1cm4gdD09PS0xP2U6ZS5zbGljZSgw
LHQpfSksdj1uZXcgdC5kZWZhdWx0KDFlMyxmdW5jdGlvbihlKXt2YXIgdD1oLmdldChlKTtpZih0
IT09LTEpcmV0dXJuIGUuc2xpY2UodCsxKX0pLGI9e2lzR2xvYmFsQ2FjaGU6Zixpc0dsb2JhbFBh
dGhDYWNoZTpkLGhhc1RoaXNDYWNoZTpwLGZpcnN0RG90SW5kZXhDYWNoZTpoLGZpcnN0S2V5Q2Fj
aGU6bSx0YWlsUGF0aENhY2hlOnZ9O2UuY2FjaGVzPWJ9KSxlKCJlbWJlci1tZXRhbC9wcm9wZXJ0
aWVzIixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9kZWJ1ZyIsImVtYmVyLW1ldGFsL2ZlYXR1cmVz
IiwiZW1iZXItbWV0YWwvbWV0YSIsImVtYmVyLW1ldGFsL3Byb3BlcnR5X2V2ZW50cyJdLGZ1bmN0
aW9uKGUsdCxyLG4saSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG8oKXt0aGlzLmlzRGVzY3JpcHRv
cj0hMH1mdW5jdGlvbiBhKGUpe2Z1bmN0aW9uIHQoZSl7fXJldHVybiB0LmlzTWFuZGF0b3J5U2V0
dGVyPSEwLHR9ZnVuY3Rpb24gcyhlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9fZW1i
ZXJfbWV0YV9fO3JldHVybiB0JiZ0LnBlZWtWYWx1ZXMoZSl9fWZ1bmN0aW9uIHUoZSl7ZnVuY3Rp
b24gdCgpe3ZhciB0PU9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKTtyZXR1cm4gdCYmdFtlXX1y
ZXR1cm4gdC5pc0luaGVyaXRpbmdHZXR0ZXI9ITAsdH1mdW5jdGlvbiBsKGUsdCxyLGEscyl7dmFy
IHUsbCxjLGY7c3x8KHM9bi5tZXRhKGUpKTt2YXIgZD1zLnBlZWtXYXRjaGluZyh0KTtyZXR1cm4g
dT1lW3RdLGw9bnVsbCE9PXUmJiJvYmplY3QiPT10eXBlb2YgdSYmdS5pc0Rlc2NyaXB0b3I/dTp2
b2lkIDAsYz12b2lkIDAhPT1kJiZkPjAsbCYmbC50ZWFyZG93bihlLHQpLHIgaW5zdGFuY2VvZiBv
PyhmPXIsZVt0XT1mLHIuc2V0dXAmJnIuc2V0dXAoZSx0KSk6bnVsbD09cj8oZj1hLGVbdF09YSk6
KGY9cixPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHIpKSxjJiZpLm92ZXJyaWRlQ2hhaW5zKGUs
dCxzKSxlLmRpZERlZmluZVByb3BlcnR5JiZlLmRpZERlZmluZVByb3BlcnR5KGUsdCxmKSx0aGlz
fWUuRGVzY3JpcHRvcj1vLGUuTUFOREFUT1JZX1NFVFRFUl9GVU5DVElPTj1hLGUuREVGQVVMVF9H
RVRURVJfRlVOQ1RJT049cyxlLklOSEVSSVRJTkdfR0VUVEVSX0ZVTkNUSU9OPXUsZS5kZWZpbmVQ
cm9wZXJ0eT1sOyhmdW5jdGlvbigpe3ZhciBlPU9iamVjdC5jcmVhdGUoT2JqZWN0LnByb3RvdHlw
ZSx7cHJvcDp7Y29uZmlndXJhYmxlOiEwLHZhbHVlOjF9fSk7cmV0dXJuIE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eShlLCJwcm9wIix7Y29uZmlndXJhYmxlOiEwLHZhbHVlOjJ9KSwyPT09ZS5wcm9wfSko
KX0pLGUoImVtYmVyLW1ldGFsL3Byb3BlcnR5X2V2ZW50cyIsWyJleHBvcnRzIiwiZW1iZXItbWV0
YWwvdXRpbHMiLCJlbWJlci1tZXRhbC9tZXRhIiwiZW1iZXItbWV0YWwvZXZlbnRzIiwiZW1iZXIt
bWV0YWwvb2JzZXJ2ZXJfc2V0IiwiZW1iZXItbWV0YWwvc3ltYm9sIl0sZnVuY3Rpb24oZSx0LHIs
bixpLG8peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBhKGUsdCl7dmFyIG49ci5wZWVrTWV0YShlKSxp
PW4mJm4ucGVla1dhdGNoaW5nKHQpPjB8fCJsZW5ndGgiPT09dCxvPW4mJm4ucHJvdG8sYT1lW3Rd
LHM9bnVsbCE9PWEmJiJvYmplY3QiPT10eXBlb2YgYSYmYS5pc0Rlc2NyaXB0b3I/YTp2b2lkIDA7
aSYmbyE9PWUmJihzJiZzLndpbGxDaGFuZ2UmJnMud2lsbENoYW5nZShlLHQpLHUoZSx0LG4pLGYo
ZSx0LG4pLGIoZSx0KSl9ZnVuY3Rpb24gcyhlLHQpe3ZhciBuPXIucGVla01ldGEoZSksaT1uJiZu
LnBlZWtXYXRjaGluZyh0KT4wfHwibGVuZ3RoIj09PXQsbz1uJiZuLnByb3RvLGE9ZVt0XSxzPW51
bGwhPT1hJiYib2JqZWN0Ij09dHlwZW9mIGEmJmEuaXNEZXNjcmlwdG9yP2E6dm9pZCAwO28hPT1l
JiYocyYmcy5kaWRDaGFuZ2UmJnMuZGlkQ2hhbmdlKGUsdCksZVt5XSYmZVt5XSh0KSwoaXx8Imxl
bmd0aCI9PT10KSYmKG4mJm4uaGFzRGVwcyh0KSYmbChlLHQsbiksZChlLHQsbiwhMSksZyhlLHQp
KSl9ZnVuY3Rpb24gdShlLHQscil7aWYoIWUuaXNEZXN0cm95aW5nJiZyJiZyLmhhc0RlcHModCkp
e3ZhciBuPV8saT0hbjtpJiYobj1fPXt9KSxjKGEsZSx0LG4sciksaSYmKF89bnVsbCl9fWZ1bmN0
aW9uIGwoZSx0LHIpe2lmKCFlLmlzRGVzdHJveWluZyYmciYmci5oYXNEZXBzKHQpKXt2YXIgbj13
LGk9IW47aSYmKG49dz17fSksYyhzLGUsdCxuLHIpLGkmJih3PW51bGwpfX1mdW5jdGlvbiBjKGUs
cixuLGksbyl7dmFyIGEscyx1PXQuZ3VpZEZvcihyKSxsPWlbdV07bHx8KGw9aVt1XT17fSksbFtu
XXx8KGxbbl09ITAsby5mb3JFYWNoSW5EZXBzKG4sZnVuY3Rpb24odCxuKXtuJiYoYT1yW3RdLHM9
bnVsbCE9PWEmJiJvYmplY3QiPT10eXBlb2YgYSYmYS5pc0Rlc2NyaXB0b3I/YTp2b2lkIDAscyYm
cy5fc3VzcGVuZGVkPT09cnx8ZShyLHQpKX0pKX1mdW5jdGlvbiBmKGUsdCxyKXt2YXIgbj1yLnJl
YWRhYmxlQ2hhaW5XYXRjaGVycygpO24mJm4ubm90aWZ5KHQsITEsYSl9ZnVuY3Rpb24gZChlLHQs
cil7dmFyIG49ci5yZWFkYWJsZUNoYWluV2F0Y2hlcnMoKTtuJiZuLm5vdGlmeSh0LCEwLHMpfWZ1
bmN0aW9uIHAoZSx0LHIpe3ZhciBuPXIucmVhZGFibGVDaGFpbldhdGNoZXJzKCk7biYmbi5yZXZh
bGlkYXRlKHQpfWZ1bmN0aW9uIGgoKXtDKyt9ZnVuY3Rpb24gbSgpe0MtLSxDPD0wJiYoeC5jbGVh
cigpLGsuZmx1c2goKSl9ZnVuY3Rpb24gdihlLHQpe2goKTt0cnl7ZS5jYWxsKHQpfWZpbmFsbHl7
bS5jYWxsKHQpfX1mdW5jdGlvbiBiKGUsdCl7aWYoIWUuaXNEZXN0cm95aW5nKXt2YXIgcixpLG89
dCsiOmJlZm9yZSI7Qz8ocj14LmFkZChlLHQsbyksaT1uLmFjY3VtdWxhdGVMaXN0ZW5lcnMoZSxv
LHIpLG4uc2VuZEV2ZW50KGUsbyxbZSx0XSxpKSk6bi5zZW5kRXZlbnQoZSxvLFtlLHRdKX19ZnVu
Y3Rpb24gZyhlLHQpe2lmKCFlLmlzRGVzdHJveWluZyl7dmFyIHIsaT10KyI6Y2hhbmdlIjtDPyhy
PWsuYWRkKGUsdCxpKSxuLmFjY3VtdWxhdGVMaXN0ZW5lcnMoZSxpLHIpKTpuLnNlbmRFdmVudChl
LGksW2UsdF0pfX12YXIgeT1vLmRlZmF1bHQoIlBST1BFUlRZX0RJRF9DSEFOR0UiKTtlLlBST1BF
UlRZX0RJRF9DSEFOR0U9eTt2YXIgXyx3LHg9bmV3IGkuZGVmYXVsdCxrPW5ldyBpLmRlZmF1bHQs
Qz0wO2UucHJvcGVydHlXaWxsQ2hhbmdlPWEsZS5wcm9wZXJ0eURpZENoYW5nZT1zLGUub3ZlcnJp
ZGVDaGFpbnM9cCxlLmJlZ2luUHJvcGVydHlDaGFuZ2VzPWgsZS5lbmRQcm9wZXJ0eUNoYW5nZXM9
bSxlLmNoYW5nZVByb3BlcnRpZXM9dn0pLGUoImVtYmVyLW1ldGFsL3Byb3BlcnR5X2dldCIsWyJl
eHBvcnRzIiwiZW1iZXItbWV0YWwvZGVidWciLCJlbWJlci1tZXRhbC9wYXRoX2NhY2hlIl0sZnVu
Y3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUsdCl7aWYoIiI9PT10KXJldHVy
biBlO3ZhciBuLG89ZVt0XSxhPW51bGwhPT1vJiYib2JqZWN0Ij09dHlwZW9mIG8mJm8uaXNEZXNj
cmlwdG9yP286dm9pZCAwO3JldHVybiB2b2lkIDA9PT1hJiZyLmlzUGF0aCh0KT9pKGUsdCk6YT9h
LmdldChlLHQpOihuPW8sdm9pZCAwIT09bnx8Im9iamVjdCIhPXR5cGVvZiBlfHx0IGluIGV8fCJm
dW5jdGlvbiIhPXR5cGVvZiBlLnVua25vd25Qcm9wZXJ0eT9uOmUudW5rbm93blByb3BlcnR5KHQp
KX1mdW5jdGlvbiBpKGUsdCl7Zm9yKHZhciByPWUsaT10LnNwbGl0KCIuIiksYT0wO2E8aS5sZW5n
dGg7YSsrKXtpZighbyhyKSlyZXR1cm47aWYocj1uKHIsaVthXSksciYmci5pc0Rlc3Ryb3llZCly
ZXR1cm59cmV0dXJuIHJ9ZnVuY3Rpb24gbyhlKXtyZXR1cm4gbnVsbCE9ZSYmc1t0eXBlb2YgZV19
ZnVuY3Rpb24gYShlLHQscil7dmFyIGk9bihlLHQpO3JldHVybiB2b2lkIDA9PT1pP3I6aX1lLmdl
dD1uLGUuX2dldFBhdGg9aSxlLmdldFdpdGhEZWZhdWx0PWE7dmFyIHM9e29iamVjdDohMCxmdW5j
dGlvbjohMCxzdHJpbmc6ITB9O2UuZGVmYXVsdD1ufSksZSgiZW1iZXItbWV0YWwvcHJvcGVydHlf
c2V0IixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9kZWJ1ZyIsImVtYmVyLW1ldGFsL2ZlYXR1cmVz
IiwiZW1iZXItbWV0YWwvcHJvcGVydHlfZ2V0IiwiZW1iZXItbWV0YWwvcHJvcGVydHlfZXZlbnRz
IiwiZW1iZXItbWV0YWwvcHJvcGVydGllcyIsImVtYmVyLW1ldGFsL2Vycm9yIiwiZW1iZXItbWV0
YWwvcGF0aF9jYWNoZSIsImVtYmVyLW1ldGFsL21ldGEiLCJlbWJlci1tZXRhbC91dGlscyIsImVt
YmVyLW1ldGFsL3RhZ3MiXSxmdW5jdGlvbihlLHQscixuLGksbyxhLHMsdSxsLGMpeyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiBmKGUsdCxyLG4pe3ZhciBvPXZvaWQgMCxhPXZvaWQgMCxsPXZvaWQgMDtl
JiYobz11LnBlZWtNZXRhKGUpLGE9ZVt0XSxsPW51bGwhPT1hJiYib2JqZWN0Ij09dHlwZW9mIGEm
JmEuaXNEZXNjcmlwdG9yP2E6dm9pZCAwLGMubWFya09iamVjdEFzRGlydHkobykpO3ZhciBmLHA7
aWYodm9pZCAwPT09bCYmcy5pc1BhdGgodCkpcmV0dXJuIGQoZSx0LHIsbik7aWYobClsLnNldChl
LHQscik7ZWxzZXtpZih2b2lkIDAhPT1yJiYib2JqZWN0Ij09dHlwZW9mIGUmJmVbdF09PT1yKXJl
dHVybiByO2Y9Im9iamVjdCI9PXR5cGVvZiBlJiYhKHQgaW4gZSksZiYmImZ1bmN0aW9uIj09dHlw
ZW9mIGUuc2V0VW5rbm93blByb3BlcnR5P2Uuc2V0VW5rbm93blByb3BlcnR5KHQscik6byYmby5w
ZWVrV2F0Y2hpbmcodCk+MD8oby5wcm90byE9PWUmJihwPWVbdF0pLHIhPT1wJiYoaS5wcm9wZXJ0
eVdpbGxDaGFuZ2UoZSx0KSxlW3RdPXIsaS5wcm9wZXJ0eURpZENoYW5nZShlLHQpKSk6KGVbdF09
cixlW2kuUFJPUEVSVFlfRElEX0NIQU5HRV0mJmVbaS5QUk9QRVJUWV9ESURfQ0hBTkdFXSh0KSl9
cmV0dXJuIHJ9ZnVuY3Rpb24gZChlLHQscixpKXt2YXIgbztpZihvPXQuc2xpY2UodC5sYXN0SW5k
ZXhPZigiLiIpKzEpLHQ9dD09PW8/bzp0LnNsaWNlKDAsdC5sZW5ndGgtKG8ubGVuZ3RoKzEpKSwi
dGhpcyIhPT10JiYoZT1uLl9nZXRQYXRoKGUsdCkpLCFvfHwwPT09by5sZW5ndGgpdGhyb3cgbmV3
IGEuZGVmYXVsdCgiUHJvcGVydHkgc2V0IGZhaWxlZDogWW91IHBhc3NlZCBhbiBlbXB0eSBwYXRo
Iik7aWYoIWUpe2lmKGkpcmV0dXJuO3Rocm93IG5ldyBhLmRlZmF1bHQoJ1Byb3BlcnR5IHNldCBm
YWlsZWQ6IG9iamVjdCBpbiBwYXRoICInK3QrJyIgY291bGQgbm90IGJlIGZvdW5kIG9yIHdhcyBk
ZXN0cm95ZWQuJyl9cmV0dXJuIGYoZSxvLHIpfWZ1bmN0aW9uIHAoZSx0LHIpe3JldHVybiBmKGUs
dCxyLCEwKX1lLnNldD1mLGUudHJ5U2V0PXB9KSxlKCJlbWJlci1tZXRhbC9yZXBsYWNlIixbImV4
cG9ydHMiXSxmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gdChlLHQscixpKXtmb3Io
dmFyIG8sYSxzPVtdLmNvbmNhdChpKSx1PVtdLGw9NmU0LGM9dCxmPXI7cy5sZW5ndGg7KW89Zj5s
P2w6ZixvPD0wJiYobz0wKSxhPXMuc3BsaWNlKDAsbCksYT1bYyxvXS5jb25jYXQoYSksYys9bCxm
LT1vLHU9dS5jb25jYXQobi5hcHBseShlLGEpKTtyZXR1cm4gdX1mdW5jdGlvbiByKGUscixuLGkp
e3JldHVybiBlLnJlcGxhY2U/ZS5yZXBsYWNlKHIsbixpKTp0KGUscixuLGkpfWUuX3JlcGxhY2U9
dCxlLmRlZmF1bHQ9cjt2YXIgbj1BcnJheS5wcm90b3R5cGUuc3BsaWNlfSksZSgiZW1iZXItbWV0
YWwvcnVuX2xvb3AiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL2NvcmUiLCJlbWJlci1tZXRhbC9k
ZWJ1ZyIsImVtYmVyLW1ldGFsL3V0aWxzIiwiZW1iZXItbWV0YWwvcHJvcGVydHlfZXZlbnRzIiwi
YmFja2J1cm5lciJdLGZ1bmN0aW9uKGUsdCxyLG4saSxvKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
YShlKXt1LmN1cnJlbnRSdW5Mb29wPWV9ZnVuY3Rpb24gcyhlLHQpe3UuY3VycmVudFJ1bkxvb3A9
dH1mdW5jdGlvbiB1KCl7cmV0dXJuIGMucnVuLmFwcGx5KGMsYXJndW1lbnRzKX1mdW5jdGlvbiBs
KCl7IXUuY3VycmVudFJ1bkxvb3B9ZS5kZWZhdWx0PXU7dmFyIGM9bmV3IG8uZGVmYXVsdChbInN5
bmMiLCJhY3Rpb25zIiwiZGVzdHJveSJdLHtHVUlEX0tFWTpuLkdVSURfS0VZLHN5bmM6e2JlZm9y
ZTppLmJlZ2luUHJvcGVydHlDaGFuZ2VzLGFmdGVyOmkuZW5kUHJvcGVydHlDaGFuZ2VzfSxkZWZh
dWx0UXVldWU6ImFjdGlvbnMiLG9uQmVnaW46YSxvbkVuZDpzLG9uRXJyb3JUYXJnZXQ6dC5kZWZh
dWx0LG9uRXJyb3JNZXRob2Q6Im9uZXJyb3IifSk7dS5qb2luPWZ1bmN0aW9uKCl7cmV0dXJuIGMu
am9pbi5hcHBseShjLGFyZ3VtZW50cyl9LHUuYmluZD1mdW5jdGlvbigpe2Zvcih2YXIgZT1hcmd1
bWVudHMubGVuZ3RoLHQ9QXJyYXkoZSkscj0wO3I8ZTtyKyspdFtyXT1hcmd1bWVudHNbcl07cmV0
dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgscj1BcnJheShlKSxuPTA7
bjxlO24rKylyW25dPWFyZ3VtZW50c1tuXTtyZXR1cm4gdS5qb2luLmFwcGx5KHUsdC5jb25jYXQo
cikpfX0sdS5iYWNrYnVybmVyPWMsdS5jdXJyZW50UnVuTG9vcD1udWxsLHUucXVldWVzPWMucXVl
dWVOYW1lcyx1LmJlZ2luPWZ1bmN0aW9uKCl7Yy5iZWdpbigpfSx1LmVuZD1mdW5jdGlvbigpe2Mu
ZW5kKCl9LHUuc2NoZWR1bGU9ZnVuY3Rpb24oKXtsKCksYy5zY2hlZHVsZS5hcHBseShjLGFyZ3Vt
ZW50cyl9LHUuaGFzU2NoZWR1bGVkVGltZXJzPWZ1bmN0aW9uKCl7cmV0dXJuIGMuaGFzVGltZXJz
KCl9LHUuY2FuY2VsVGltZXJzPWZ1bmN0aW9uKCl7Yy5jYW5jZWxUaW1lcnMoKX0sdS5zeW5jPWZ1
bmN0aW9uKCl7Yy5jdXJyZW50SW5zdGFuY2UmJmMuY3VycmVudEluc3RhbmNlLnF1ZXVlcy5zeW5j
LmZsdXNoKCl9LHUubGF0ZXI9ZnVuY3Rpb24oKXtyZXR1cm4gYy5sYXRlci5hcHBseShjLGFyZ3Vt
ZW50cyl9LHUub25jZT1mdW5jdGlvbigpe2woKTtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCx0
PUFycmF5KGUpLHI9MDtyPGU7cisrKXRbcl09YXJndW1lbnRzW3JdO3JldHVybiB0LnVuc2hpZnQo
ImFjdGlvbnMiKSxjLnNjaGVkdWxlT25jZS5hcHBseShjLHQpfSx1LnNjaGVkdWxlT25jZT1mdW5j
dGlvbigpe3JldHVybiBsKCksYy5zY2hlZHVsZU9uY2UuYXBwbHkoYyxhcmd1bWVudHMpfSx1Lm5l
eHQ9ZnVuY3Rpb24oKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCx0PUFycmF5KGUpLHI9MDty
PGU7cisrKXRbcl09YXJndW1lbnRzW3JdO3JldHVybiB0LnB1c2goMSksYy5sYXRlci5hcHBseShj
LHQpfSx1LmNhbmNlbD1mdW5jdGlvbihlKXtyZXR1cm4gYy5jYW5jZWwoZSl9LHUuZGVib3VuY2U9
ZnVuY3Rpb24oKXtyZXR1cm4gYy5kZWJvdW5jZS5hcHBseShjLGFyZ3VtZW50cyl9LHUudGhyb3R0
bGU9ZnVuY3Rpb24oKXtyZXR1cm4gYy50aHJvdHRsZS5hcHBseShjLGFyZ3VtZW50cyl9LHUuX2Fk
ZFF1ZXVlPWZ1bmN0aW9uKGUsdCl7dS5xdWV1ZXMuaW5kZXhPZihlKT09PS0xJiZ1LnF1ZXVlcy5z
cGxpY2UodS5xdWV1ZXMuaW5kZXhPZih0KSsxLDAsZSl9fSksZSgiZW1iZXItbWV0YWwvc2V0X3By
b3BlcnRpZXMiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL3Byb3BlcnR5X2V2ZW50cyIsImVtYmVy
LW1ldGFsL3Byb3BlcnR5X3NldCJdLGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gbihlLG4pe3JldHVybiBuJiYib2JqZWN0Ij09dHlwZW9mIG4/KHQuY2hhbmdlUHJvcGVydGll
cyhmdW5jdGlvbigpe2Zvcih2YXIgdCxpPU9iamVjdC5rZXlzKG4pLG89MCxhPWkubGVuZ3RoO288
YTtvKyspdD1pW29dLHIuc2V0KGUsdCxuW3RdKX0pLG4pOm59ZS5kZWZhdWx0PW59KSxlKCJlbWJl
ci1tZXRhbC9zdHJlYW1zL2RlcGVuZGVuY3kiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL2RlYnVn
IiwiZW1iZXItbWV0YWwvYXNzaWduIiwiZW1iZXItbWV0YWwvc3RyZWFtcy91dGlscyJdLGZ1bmN0
aW9uKGUsdCxyLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUsdCl7dGhpcy5uZXh0PW51bGws
dGhpcy5wcmV2PW51bGwsdGhpcy5kZXBlbmRlcj1lLHRoaXMuZGVwZW5kZWU9dCx0aGlzLnVuc3Vi
c2NyaXB0aW9uPW51bGx9ci5kZWZhdWx0KGkucHJvdG90eXBlLHtzdWJzY3JpYmU6ZnVuY3Rpb24o
KXt0aGlzLnVuc3Vic2NyaXB0aW9uPW4uc3Vic2NyaWJlKHRoaXMuZGVwZW5kZWUsdGhpcy5kZXBl
bmRlci5ub3RpZnksdGhpcy5kZXBlbmRlcil9LHVuc3Vic2NyaWJlOmZ1bmN0aW9uKCl7dGhpcy51
bnN1YnNjcmlwdGlvbiYmKHRoaXMudW5zdWJzY3JpcHRpb24oKSx0aGlzLnVuc3Vic2NyaXB0aW9u
PW51bGwpfSxyZXBsYWNlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmRlcGVuZGVlIT09ZSYmKHRo
aXMuZGVwZW5kZWU9ZSx0aGlzLnVuc3Vic2NyaXB0aW9uJiYodGhpcy51bnN1YnNjcmliZSgpLHRo
aXMuc3Vic2NyaWJlKCkpLCEwKX0sZ2V0VmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gbi5yZWFkKHRo
aXMuZGVwZW5kZWUpfSxzZXRWYWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbi5zZXRWYWx1ZSh0aGlz
LmRlcGVuZGVlLGUpfX0pLGUuZGVmYXVsdD1pfSksZSgiZW1iZXItbWV0YWwvc3RyZWFtcy9rZXkt
c3RyZWFtIixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9kZWJ1ZyIsImVtYmVyLW1ldGFsL3Byb3Bl
cnR5X2dldCIsImVtYmVyLW1ldGFsL3Byb3BlcnR5X3NldCIsImVtYmVyLW1ldGFsL29ic2VydmVy
IiwiZW1iZXItbWV0YWwvc3RyZWFtcy9zdHJlYW0iLCJlbWJlci1tZXRhbC9zdHJlYW1zL3V0aWxz
Il0sZnVuY3Rpb24oZSx0LHIsbixpLG8sYSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHMoZSx0KXty
ZXR1cm4gZS5sYWJlbD9lLmxhYmVsKyIuIit0OnR9ZS5kZWZhdWx0PW8uZGVmYXVsdC5leHRlbmQo
e2luaXQ6ZnVuY3Rpb24oZSx0KXt2YXIgcj1zKGUsdCk7dGhpcy5wYXRoPXIsdGhpcy5vYnNlcnZl
ZE9iamVjdD1udWxsLHRoaXMua2V5PXQsdGhpcy5zb3VyY2VEZXA9dGhpcy5hZGRNdXRhYmxlRGVw
ZW5kZW5jeShlKSx0aGlzLmxhYmVsPXJ9LGNvbXB1dGU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnNv
dXJjZURlcC5nZXRWYWx1ZSgpLHQ9dHlwZW9mIGU7aWYoZSYmImJvb2xlYW4iIT09dClyZXR1cm4i
b2JqZWN0Ij09PXQ/ci5nZXQoZSx0aGlzLmtleSk6ZVt0aGlzLmtleV19LHNldFZhbHVlOmZ1bmN0
aW9uKGUpe3ZhciB0PXRoaXMuc291cmNlRGVwLmdldFZhbHVlKCk7dCYmbi5zZXQodCx0aGlzLmtl
eSxlKX0sc2V0U291cmNlOmZ1bmN0aW9uKGUpe3RoaXMuc291cmNlRGVwLnJlcGxhY2UoZSksdGhp
cy5ub3RpZnkoKX0sX3N1cGVyJHJldmFsaWRhdGU6by5kZWZhdWx0LnByb3RvdHlwZS5yZXZhbGlk
YXRlLHJldmFsaWRhdGU6ZnVuY3Rpb24oZSl7dGhpcy5fc3VwZXIkcmV2YWxpZGF0ZShlKTt2YXIg
dD10aGlzLnNvdXJjZURlcC5nZXRWYWx1ZSgpO3QhPT10aGlzLm9ic2VydmVkT2JqZWN0JiYodGhp
cy5fY2xlYXJPYnNlcnZlZE9iamVjdCgpLHQmJiJvYmplY3QiPT10eXBlb2YgdCYmKGkuYWRkT2Jz
ZXJ2ZXIodCx0aGlzLmtleSx0aGlzLHRoaXMubm90aWZ5KSx0aGlzLm9ic2VydmVkT2JqZWN0PXQp
KX0sX3N1cGVyJGRlYWN0aXZhdGU6by5kZWZhdWx0LnByb3RvdHlwZS5kZWFjdGl2YXRlLF9jbGVh
ck9ic2VydmVkT2JqZWN0OmZ1bmN0aW9uKCl7dGhpcy5vYnNlcnZlZE9iamVjdCYmKGkucmVtb3Zl
T2JzZXJ2ZXIodGhpcy5vYnNlcnZlZE9iamVjdCx0aGlzLmtleSx0aGlzLHRoaXMubm90aWZ5KSx0
aGlzLm9ic2VydmVkT2JqZWN0PW51bGwpfSxkZWFjdGl2YXRlOmZ1bmN0aW9uKCl7dGhpcy5fc3Vw
ZXIkZGVhY3RpdmF0ZSgpLHRoaXMuX2NsZWFyT2JzZXJ2ZWRPYmplY3QoKX19KX0pLGUoImVtYmVy
LW1ldGFsL3N0cmVhbXMvcHJveHktc3RyZWFtIixbImV4cG9ydHMiLCJlbWJlci1ydW50aW1lL3N5
c3RlbS9vYmplY3QiLCJlbWJlci1tZXRhbC9zdHJlYW1zL3N0cmVhbSJdLGZ1bmN0aW9uKGUsdCxy
KXsidXNlIHN0cmljdCI7dmFyIG49ci5kZWZhdWx0LmV4dGVuZCh7aW5pdDpmdW5jdGlvbihlLHQp
e3RoaXMubGFiZWw9dCx0aGlzLnNvdXJjZURlcD10aGlzLmFkZE11dGFibGVEZXBlbmRlbmN5KGUp
fSxjb21wdXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc291cmNlRGVwLmdldFZhbHVlKCl9LHNl
dFZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMuc291cmNlRGVwLnNldFZhbHVlKGUpfSxzZXRTb3VyY2U6
ZnVuY3Rpb24oZSl7dmFyIHI9dGhpcy5zb3VyY2VEZXAucmVwbGFjZShlKTshciYmZSBpbnN0YW5j
ZW9mIHQuZGVmYXVsdHx8dGhpcy5ub3RpZnkoKX19KTtuLmV4dGVuZD1yLmRlZmF1bHQuZXh0ZW5k
LGUuZGVmYXVsdD1ufSksZSgiZW1iZXItbWV0YWwvc3RyZWFtcy9zdHJlYW0iLFsiZXhwb3J0cyIs
ImVtYmVyLW1ldGFsL2Fzc2lnbiIsImVtYmVyLW1ldGFsL2RlYnVnIiwiZW1iZXItbWV0YWwvcGF0
aF9jYWNoZSIsImVtYmVyLW1ldGFsL29ic2VydmVyIiwiZW1iZXItbWV0YWwvc3RyZWFtcy91dGls
cyIsImVtYmVyLW1ldGFsL2VtcHR5X29iamVjdCIsImVtYmVyLW1ldGFsL3N0cmVhbXMvc3Vic2Ny
aWJlciIsImVtYmVyLW1ldGFsL3N0cmVhbXMvZGVwZW5kZW5jeSIsImVtYmVyLW1ldGFsL3V0aWxz
IiwicmVxdWlyZSIsImVtYmVyLW1ldGFsL3N5bWJvbCJdLGZ1bmN0aW9uKGUsdCxyLG4saSxvLGEs
cyx1LGwsYyxmKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZChlKXt0aGlzLl9pbml0KGUpfWZ1bmN0
aW9uIHAoZSx0LHIpe3JldHVybiBvLmlzU3RyZWFtKGUpP2U6bmV3IHQoZSxyKX1mdW5jdGlvbiBo
KGUpe3JldHVybiB2b2lkIDA9PT1lPyIobm8gbGFiZWwpIjplfWUud3JhcD1wO3ZhciBtPWYuZGVm
YXVsdCgiSVNfU1RSRUFNIik7ZS5JU19TVFJFQU09bTt2YXIgdixiO2QucHJvdG90eXBlPXtfaW5p
dDpmdW5jdGlvbihlKXt0aGlzW21dPSEwLHRoaXMubGFiZWw9aChlKSx0aGlzLmlzQWN0aXZlPSEx
LHRoaXMuaXNEaXJ0eT0hMCx0aGlzLmlzRGVzdHJveWVkPSExLHRoaXMuY2FjaGU9dm9pZCAwLHRo
aXMuY2hpbGRyZW49dm9pZCAwLHRoaXMuc3Vic2NyaWJlckhlYWQ9bnVsbCx0aGlzLnN1YnNjcmli
ZXJUYWlsPW51bGwsdGhpcy5kZXBlbmRlbmN5SGVhZD1udWxsLHRoaXMuZGVwZW5kZW5jeVRhaWw9
bnVsbCx0aGlzLm9ic2VydmVkUHJveHk9bnVsbCx0aGlzLl9fZW1iZXJfbWV0YV9fPW51bGwsdGhp
c1tsLkdVSURfS0VZXT1udWxsfSxfbWFrZUNoaWxkU3RyZWFtOmZ1bmN0aW9uKGUpe3JldHVybiBu
ZXcodj12fHxjLmRlZmF1bHQoImVtYmVyLW1ldGFsL3N0cmVhbXMva2V5LXN0cmVhbSIpLmRlZmF1
bHQpKHRoaXMsZSl9LHJlbW92ZUNoaWxkOmZ1bmN0aW9uKGUpe2RlbGV0ZSB0aGlzLmNoaWxkcmVu
W2VdfSxnZXRLZXk6ZnVuY3Rpb24oZSl7dm9pZCAwPT09dGhpcy5jaGlsZHJlbiYmKHRoaXMuY2hp
bGRyZW49bmV3IGEuZGVmYXVsdCk7dmFyIHQ9dGhpcy5jaGlsZHJlbltlXTtyZXR1cm4gdm9pZCAw
PT09dCYmKHQ9dGhpcy5fbWFrZUNoaWxkU3RyZWFtKGUpLHRoaXMuY2hpbGRyZW5bZV09dCksdH0s
Z2V0OmZ1bmN0aW9uKGUpe3ZhciB0PW4uZ2V0Rmlyc3RLZXkoZSkscj1uLmdldFRhaWxQYXRoKGUp
O3ZvaWQgMD09PXRoaXMuY2hpbGRyZW4mJih0aGlzLmNoaWxkcmVuPW5ldyBhLmRlZmF1bHQpO3Zh
ciBpPXRoaXMuY2hpbGRyZW5bdF07cmV0dXJuIHZvaWQgMD09PWkmJihpPXRoaXMuX21ha2VDaGls
ZFN0cmVhbSh0LGUpLHRoaXMuY2hpbGRyZW5bdF09aSksdm9pZCAwPT09cj9pOmkuZ2V0KHIpfSx2
YWx1ZTpmdW5jdGlvbigpe3RoaXMuaXNBY3RpdmV8fCh0aGlzLmlzRGlydHk9ITApO3ZhciBlPSEx
O3JldHVybiF0aGlzLmlzQWN0aXZlJiZ0aGlzLnN1YnNjcmliZXJIZWFkJiYodGhpcy5hY3RpdmF0
ZSgpLGU9ITApLHRoaXMuaXNEaXJ0eSYmKHRoaXMuaXNBY3RpdmUmJihlPSEwKSx0aGlzLmNhY2hl
PXRoaXMuY29tcHV0ZSgpLHRoaXMuaXNEaXJ0eT0hMSksZSYmdGhpcy5yZXZhbGlkYXRlKHRoaXMu
Y2FjaGUpLHRoaXMuY2FjaGV9LGFkZE11dGFibGVEZXBlbmRlbmN5OmZ1bmN0aW9uKGUpe3ZhciB0
PW5ldyB1LmRlZmF1bHQodGhpcyxlKTtpZih0aGlzLmlzQWN0aXZlJiZ0LnN1YnNjcmliZSgpLG51
bGw9PT10aGlzLmRlcGVuZGVuY3lIZWFkKXRoaXMuZGVwZW5kZW5jeUhlYWQ9dGhpcy5kZXBlbmRl
bmN5VGFpbD10O2Vsc2V7dmFyIHI9dGhpcy5kZXBlbmRlbmN5VGFpbDtyLm5leHQ9dCx0LnByZXY9
cix0aGlzLmRlcGVuZGVuY3lUYWlsPXR9cmV0dXJuIHR9LGFkZERlcGVuZGVuY3k6ZnVuY3Rpb24o
ZSl7by5pc1N0cmVhbShlKSYmdGhpcy5hZGRNdXRhYmxlRGVwZW5kZW5jeShlKX0sc3Vic2NyaWJl
RGVwZW5kZW5jaWVzOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMuZGVwZW5kZW5jeUhlYWQ7ZTsp
e3ZhciB0PWUubmV4dDtlLnN1YnNjcmliZSgpLGU9dH19LHVuc3Vic2NyaWJlRGVwZW5kZW5jaWVz
OmZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMuZGVwZW5kZW5jeUhlYWQ7ZTspe3ZhciB0PWUubmV4
dDtlLnVuc3Vic2NyaWJlKCksZT10fX0sbWF5YmVEZWFjdGl2YXRlOmZ1bmN0aW9uKCl7IXRoaXMu
c3Vic2NyaWJlckhlYWQmJnRoaXMuaXNBY3RpdmUmJih0aGlzLmlzQWN0aXZlPSExLHRoaXMudW5z
dWJzY3JpYmVEZXBlbmRlbmNpZXMoKSx0aGlzLmRlYWN0aXZhdGUoKSl9LGFjdGl2YXRlOmZ1bmN0
aW9uKCl7dGhpcy5pc0FjdGl2ZT0hMCx0aGlzLnN1YnNjcmliZURlcGVuZGVuY2llcygpfSxyZXZh
bGlkYXRlOmZ1bmN0aW9uKGUpe2UhPT10aGlzLm9ic2VydmVkUHJveHkmJih0aGlzLl9jbGVhck9i
c2VydmVkUHJveHkoKSxiPWJ8fGMuZGVmYXVsdCgiZW1iZXItcnVudGltZS9taXhpbnMvLXByb3h5
IikuZGVmYXVsdCxiLmRldGVjdChlKSYmKGkuYWRkT2JzZXJ2ZXIoZSwiY29udGVudCIsdGhpcyx0
aGlzLm5vdGlmeSksdGhpcy5vYnNlcnZlZFByb3h5PWUpKX0sX2NsZWFyT2JzZXJ2ZWRQcm94eTpm
dW5jdGlvbigpe3RoaXMub2JzZXJ2ZWRQcm94eSYmKGkucmVtb3ZlT2JzZXJ2ZXIodGhpcy5vYnNl
cnZlZFByb3h5LCJjb250ZW50Iix0aGlzLHRoaXMubm90aWZ5KSx0aGlzLm9ic2VydmVkUHJveHk9
bnVsbCl9LGRlYWN0aXZhdGU6ZnVuY3Rpb24oKXt0aGlzLl9jbGVhck9ic2VydmVkUHJveHkoKX0s
Y29tcHV0ZTpmdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiU3RyZWFtIGVycm9yOiBjb21wdXRl
IG5vdCBpbXBsZW1lbnRlZCIpfSxzZXRWYWx1ZTpmdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigi
U3RyZWFtIGVycm9yOiBzZXRWYWx1ZSBub3QgaW1wbGVtZW50ZWQiKX0sbm90aWZ5OmZ1bmN0aW9u
KCl7dGhpcy5ub3RpZnlFeGNlcHQoKX0sbm90aWZ5RXhjZXB0OmZ1bmN0aW9uKGUsdCl7dGhpcy5p
c0RpcnR5fHwodGhpcy5pc0RpcnR5PSEwLHRoaXMubm90aWZ5U3Vic2NyaWJlcnMoZSx0KSl9LHN1
YnNjcmliZTpmdW5jdGlvbihlLHQpe3ZhciByPW5ldyBzLmRlZmF1bHQoZSx0LHRoaXMpO2lmKG51
bGw9PT10aGlzLnN1YnNjcmliZXJIZWFkKXRoaXMuc3Vic2NyaWJlckhlYWQ9dGhpcy5zdWJzY3Jp
YmVyVGFpbD1yO2Vsc2V7dmFyIG49dGhpcy5zdWJzY3JpYmVyVGFpbDtuLm5leHQ9cixyLnByZXY9
bix0aGlzLnN1YnNjcmliZXJUYWlsPXJ9dmFyIGk9dGhpcztyZXR1cm4gZnVuY3Rpb24oZSl7ci5y
ZW1vdmVGcm9tKGkpLGUmJmkucHJ1bmUoKX19LHBydW5lOmZ1bmN0aW9uKCl7bnVsbD09PXRoaXMu
c3Vic2NyaWJlckhlYWQmJnRoaXMuZGVzdHJveSghMCl9LHVuc3Vic2NyaWJlOmZ1bmN0aW9uKGUs
dCl7Zm9yKHZhciByPXRoaXMuc3Vic2NyaWJlckhlYWQ7cjspe3ZhciBuPXIubmV4dDtyLmNhbGxi
YWNrPT09ZSYmci5jb250ZXh0PT09dCYmci5yZW1vdmVGcm9tKHRoaXMpLHI9bn19LG5vdGlmeVN1
YnNjcmliZXJzOmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPXRoaXMuc3Vic2NyaWJlckhlYWQ7cjsp
e3ZhciBuPXIubmV4dCxpPXIuY2FsbGJhY2ssbz1yLmNvbnRleHQ7cj1uLGk9PT1lJiZvPT09dHx8
KHZvaWQgMD09PW8/aSh0aGlzKTppLmNhbGwobyx0aGlzKSl9fSxkZXN0cm95OmZ1bmN0aW9uKGUp
e2lmKCF0aGlzLmlzRGVzdHJveWVkKXt0aGlzLmlzRGVzdHJveWVkPSEwLHRoaXMuc3Vic2NyaWJl
ckhlYWQ9dGhpcy5zdWJzY3JpYmVyVGFpbD1udWxsLHRoaXMubWF5YmVEZWFjdGl2YXRlKCk7dmFy
IHQ9dGhpcy5kZXBlbmRlbmNpZXM7aWYodClmb3IodmFyIHI9MCxuPXQubGVuZ3RoO3I8bjtyKysp
dFtyXShlKTtyZXR1cm4hMH19fSxkLmV4dGVuZD1mdW5jdGlvbihlKXt2YXIgcj1mdW5jdGlvbigp
e3RoaXMuX2luaXQoKSx0aGlzLmluaXQuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtyZXR1cm4gci5w
cm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0aGlzLnByb3RvdHlwZSksdC5kZWZhdWx0KHIucHJvdG90
eXBlLGUpLHIuZXh0ZW5kPWQuZXh0ZW5kLHJ9O3ZhciBnPWQuZXh0ZW5kKHtpbml0OmZ1bmN0aW9u
KGUsdCl7dGhpcy5fY29tcHV0ZT1lLHRoaXMubGFiZWw9dH0sY29tcHV0ZTpmdW5jdGlvbigpe3Jl
dHVybiB0aGlzLl9jb21wdXRlKCl9fSk7ZS5kZWZhdWx0PWQsZS5TdHJlYW09Z30pLGUoImVtYmVy
LW1ldGFsL3N0cmVhbXMvc3Vic2NyaWJlciIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvYXNzaWdu
Il0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe3RoaXMubmV4dD1u
dWxsLHRoaXMucHJldj1udWxsLHRoaXMuY2FsbGJhY2s9ZSx0aGlzLmNvbnRleHQ9dH10LmRlZmF1
bHQoci5wcm90b3R5cGUse3JlbW92ZUZyb206ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5uZXh0LHI9
dGhpcy5wcmV2O3I/ci5uZXh0PXQ6ZS5zdWJzY3JpYmVySGVhZD10LHQ/dC5wcmV2PXI6ZS5zdWJz
Y3JpYmVyVGFpbD1yLGUubWF5YmVEZWFjdGl2YXRlKCl9fSksZS5kZWZhdWx0PXJ9KSxlKCJlbWJl
ci1tZXRhbC9zdHJlYW1zL3V0aWxzIixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9kZWJ1ZyIsImVt
YmVyLW1ldGFsL3N0cmVhbXMvc3RyZWFtIl0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiBuKGUpe3JldHVybiBlJiZlW3IuSVNfU1RSRUFNXX1mdW5jdGlvbiBpKGUsdCxuKXtp
ZihlJiZlW3IuSVNfU1RSRUFNXSlyZXR1cm4gZS5zdWJzY3JpYmUodCxuKX1mdW5jdGlvbiBvKGUs
dCxuKXtlJiZlW3IuSVNfU1RSRUFNXSYmZS51bnN1YnNjcmliZSh0LG4pfWZ1bmN0aW9uIGEoZSl7
cmV0dXJuIGUmJmVbci5JU19TVFJFQU1dP2UudmFsdWUoKTplfWZ1bmN0aW9uIHMoZSl7Zm9yKHZh
ciB0PWUubGVuZ3RoLHI9bmV3IEFycmF5KHQpLG49MDtuPHQ7bisrKXJbbl09YShlW25dKTtyZXR1
cm4gcn1mdW5jdGlvbiB1KGUpe3ZhciB0PXt9O2Zvcih2YXIgciBpbiBlKXRbcl09YShlW3JdKTty
ZXR1cm4gdH1mdW5jdGlvbiBsKGUpe2Zvcih2YXIgdD1lLmxlbmd0aCxyPSExLGk9MDtpPHQ7aSsr
KWlmKG4oZVtpXSkpe3I9ITA7YnJlYWt9cmV0dXJuIHJ9ZnVuY3Rpb24gYyhlKXt2YXIgdD0hMTtm
b3IodmFyIHIgaW4gZSlpZihuKGVbcl0pKXt0PSEwO2JyZWFrfXJldHVybiB0fWZ1bmN0aW9uIGYo
ZSx0KXt2YXIgcj1sKGUpO2lmKHIpe2Zvcih2YXIgbj1uZXcgeChlLHQpLGk9MCxvPWUubGVuZ3Ro
O2k8bztpKyspYihuLGVbaV0pO3JldHVybiBufXJldHVybiBlLmpvaW4odCl9ZnVuY3Rpb24gZChl
KXtmb3IodmFyIHQ9W10scj0wLG49ZS5sZW5ndGg7cjxuO3IrKyl7dmFyIGk9ZVtyXTt0LnB1c2go
aChpKSl9cmV0dXJuIHR9ZnVuY3Rpb24gcChlKXt2YXIgdD1bXTtmb3IodmFyIHIgaW4gZSl0LnB1
c2gocisiOiAiK20oZVtyXSkpO3JldHVybiB0Lmxlbmd0aD8ieyAiK3Quam9pbigiLCAiKSsiIH0i
OiJ7fSJ9ZnVuY3Rpb24gaChlKXtpZihuKGUpKXt2YXIgdD1lO3JldHVybiJmdW5jdGlvbiI9PXR5
cGVvZiB0LmxhYmVsP3QubGFiZWwoKTp0LmxhYmVsfXJldHVybiBtKGUpfWZ1bmN0aW9uIG0oZSl7
c3dpdGNoKHR5cGVvZiBlKXtjYXNlInN0cmluZyI6cmV0dXJuJyInK2UrJyInO2Nhc2Uib2JqZWN0
IjpyZXR1cm4ieyAuLi4gfSI7Y2FzZSJmdW5jdGlvbiI6cmV0dXJuImZ1bmN0aW9uKCkgeyAuLi4g
fSI7ZGVmYXVsdDpyZXR1cm4gU3RyaW5nKGUpfX1mdW5jdGlvbiB2KGUsdCl7dmFyIG49bmV3IHIu
U3RyZWFtKGZ1bmN0aW9uKCl7cmV0dXJuIGUudmFsdWUoKXx8dC52YWx1ZSgpfSxmdW5jdGlvbigp
e3JldHVybiBoKGUpKyIgfHwgIitoKHQpfSk7cmV0dXJuIG4uYWRkRGVwZW5kZW5jeShlKSxuLmFk
ZERlcGVuZGVuY3kodCksbn1mdW5jdGlvbiBiKGUsdCl7bihlKSYmZS5hZGREZXBlbmRlbmN5KHQp
fWZ1bmN0aW9uIGcoZSx0LG4pe2Zvcih2YXIgaT1uZXcgci5TdHJlYW0oZnVuY3Rpb24oKXt2YXIg
cj1zKGUpO3JldHVybiB0P3Qocik6cn0sZnVuY3Rpb24oKXtyZXR1cm4gbisiKCIrZChlKSsiKSJ9
KSxvPTAsYT1lLmxlbmd0aDtvPGE7bysrKWkuYWRkRGVwZW5kZW5jeShlW29dKTtyZXR1cm4gaX1m
dW5jdGlvbiB5KGUsdCxuKXt2YXIgaT1uZXcgci5TdHJlYW0oZnVuY3Rpb24oKXt2YXIgcj11KGUp
O3JldHVybiB0P3Qocik6cn0sZnVuY3Rpb24oKXtyZXR1cm4gbisiKCIrcChlKSsiKSJ9KTtmb3Io
dmFyIG8gaW4gZSlpLmFkZERlcGVuZGVuY3koZVtvXSk7cmV0dXJuIGl9ZnVuY3Rpb24gXyhlLHQs
aSl7aWYobihlKSl7dmFyIG89bmV3IHIuU3RyZWFtKHQsZnVuY3Rpb24oKXtyZXR1cm4gaSsiKCIr
aChlKSsiKSJ9KTtyZXR1cm4gby5hZGREZXBlbmRlbmN5KGUpLG99cmV0dXJuIHQoKX1mdW5jdGlv
biB3KGUsdCl7ZSYmZVtyLklTX1NUUkVBTV0mJmUuc2V0VmFsdWUodCl9ZS5pc1N0cmVhbT1uLGUu
c3Vic2NyaWJlPWksZS51bnN1YnNjcmliZT1vLGUucmVhZD1hLGUucmVhZEFycmF5PXMsZS5yZWFk
SGFzaD11LGUuc2NhbkFycmF5PWwsZS5zY2FuSGFzaD1jLGUuY29uY2F0PWYsZS5sYWJlbHNGb3I9
ZCxlLmxhYmVsc0Zvck9iamVjdD1wLGUubGFiZWxGb3I9aCxlLm9yPXYsZS5hZGREZXBlbmRlbmN5
PWIsZS56aXA9ZyxlLnppcEhhc2g9eSxlLmNoYWluPV8sZS5zZXRWYWx1ZT13O3ZhciB4PXIuZGVm
YXVsdC5leHRlbmQoe2luaXQ6ZnVuY3Rpb24oZSx0KXt0aGlzLmFycmF5PWUsdGhpcy5zZXBhcmF0
b3I9dCx0aGlzLmlzQ29uY2F0PSEwfSxsYWJlbDpmdW5jdGlvbigpe3ZhciBlPWQodGhpcy5hcnJh
eSk7cmV0dXJuImNvbmNhdChbIitlLmpvaW4oIiwgIikrIl07IHNlcGFyYXRvcj0iK20odGhpcy5z
ZXBhcmF0b3IpKyIpIn0sY29tcHV0ZTpmdW5jdGlvbigpe3JldHVybiBmKHModGhpcy5hcnJheSks
dGhpcy5zZXBhcmF0b3IpfX0pfSksZSgiZW1iZXItbWV0YWwvc3ltYm9sIixbImV4cG9ydHMiLCJl
bWJlci1tZXRhbC91dGlscyJdLGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIo
ZSl7cmV0dXJuIHQuaW50ZXJuKGUrIiBbaWQ9Iit0LkdVSURfS0VZK01hdGguZmxvb3IoTWF0aC5y
YW5kb20oKSpuZXcgRGF0ZSkrIl0iKX1lLmRlZmF1bHQ9cn0pLGUoImVtYmVyLW1ldGFsL3RhZ3Mi
LFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL21ldGEiLCJyZXF1aXJlIl0sZnVuY3Rpb24oZSx0LHIp
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUscil7aWYoIWkpdGhyb3cgbmV3IEVycm9yKCJDYW5u
b3QgY2FsbCB0YWdGb3Igd2l0aG91dCBHbGltbWVyIik7aWYoZSYmIm9iamVjdCI9PXR5cGVvZiBl
KXt2YXIgbj1yfHx0Lm1ldGEoZSk7cmV0dXJuIG4ud3JpdGFibGVUYWcodSl9cmV0dXJuIG99ZS50
YWdGb3I9bjt2YXIgaT1yLmhhcygiZ2xpbW1lci1yZWZlcmVuY2UiKSxvPXZvaWQgMCxhPXZvaWQg
MCxzPXZvaWQgMCx1PXZvaWQgMCxsPXZvaWQgMDtpZihlLm1hcmtPYmplY3RBc0RpcnR5PWwsaSl7
dmFyIGM9ci5kZWZhdWx0KCJnbGltbWVyLXJlZmVyZW5jZSIpO3M9Yy5EaXJ0eWFibGVUYWcsbz1j
LkNPTlNUQU5UX1RBRyxhPWMuQ1VSUkVOVF9UQUcsdT1mdW5jdGlvbigpe3JldHVybiBuZXcgc30s
ZS5tYXJrT2JqZWN0QXNEaXJ0eT1sPWZ1bmN0aW9uKGUpe3ZhciB0PWUmJmUucmVhZGFibGVUYWco
KXx8YTt0LmRpcnR5KCl9fWVsc2UgZS5tYXJrT2JqZWN0QXNEaXJ0eT1sPWZ1bmN0aW9uKCl7fX0p
LGUoImVtYmVyLW1ldGFsL3V0aWxzIixbImV4cG9ydHMiXSxmdW5jdGlvbihlKXsibm8gdXNlIHN0
cmljdCI7ZnVuY3Rpb24gdCgpe3JldHVybisrdn1mdW5jdGlvbiByKGUpe3ZhciB0PXt9O3RbZV09
MTtmb3IodmFyIHIgaW4gdClpZihyPT09ZSlyZXR1cm4gcjtyZXR1cm4gZX1mdW5jdGlvbiBuKGUs
cil7cnx8KHI9Yik7dmFyIG49cit0KCk7cmV0dXJuIGUmJihudWxsPT09ZVtfXT9lW19dPW46KHcu
dmFsdWU9bixlLl9fZGVmaW5lTm9uRW51bWVyYWJsZT9lLl9fZGVmaW5lTm9uRW51bWVyYWJsZShr
KTpPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxfLHcpKSksbn1mdW5jdGlvbiBpKGUpe2lmKGUmJmVb
X10pcmV0dXJuIGVbX107aWYodm9pZCAwPT09ZSlyZXR1cm4iKHVuZGVmaW5lZCkiO2lmKG51bGw9
PT1lKXJldHVybiIobnVsbCkiO3ZhciByLG49dHlwZW9mIGU7c3dpdGNoKG4pe2Nhc2UibnVtYmVy
IjpyZXR1cm4gcj1nW2VdLHJ8fChyPWdbZV09Im51IitlKSxyO2Nhc2Uic3RyaW5nIjpyZXR1cm4g
cj15W2VdLHJ8fChyPXlbZV09InN0Iit0KCkpLHI7Y2FzZSJib29sZWFuIjpyZXR1cm4gZT8iKHRy
dWUpIjoiKGZhbHNlKSI7ZGVmYXVsdDpyZXR1cm4gZT09PU9iamVjdD8iKE9iamVjdCkiOmU9PT1B
cnJheT8iKEFycmF5KSI6KHI9Yit0KCksbnVsbD09PWVbX10/ZVtfXT1yOih3LnZhbHVlPXIsZS5f
X2RlZmluZU5vbkVudW1lcmFibGU/ZS5fX2RlZmluZU5vbkVudW1lcmFibGUoayk6T2JqZWN0LmRl
ZmluZVByb3BlcnR5KGUsXyx3KSkscil9fWZ1bmN0aW9uIG8oKXt9ZnVuY3Rpb24gYShlKXtyZXR1
cm4gdm9pZCAwPT09ZS5fX2hhc1N1cGVyJiYoZS5fX2hhc1N1cGVyPU8oZSkpLGUuX19oYXNTdXBl
cn1mdW5jdGlvbiBzKGUsdCl7cmV0dXJuIGEoZSk/IXQud3JhcHBlZEZ1bmN0aW9uJiZhKHQpP3Uo
ZSx1KHQsbykpOnUoZSx0KTplfWZ1bmN0aW9uIHUoZSx0KXtmdW5jdGlvbiByKCl7dmFyIHI9dGhp
cy5fc3VwZXI7dGhpcy5fc3VwZXI9dDt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1
cm4gdGhpcy5fc3VwZXI9cixufXJldHVybiByLndyYXBwZWRGdW5jdGlvbj1lLHIuX19lbWJlcl9v
YnNlcnZlc19fPWUuX19lbWJlcl9vYnNlcnZlc19fLHIuX19lbWJlcl9vYnNlcnZlc0JlZm9yZV9f
PWUuX19lbWJlcl9vYnNlcnZlc0JlZm9yZV9fLHIuX19lbWJlcl9saXN0ZW5zX189ZS5fX2VtYmVy
X2xpc3RlbnNfXyxyfWZ1bmN0aW9uIGwoZSx0KXtyZXR1cm4hKCFlfHwiZnVuY3Rpb24iIT10eXBl
b2YgZVt0XSl9ZnVuY3Rpb24gYyhlLHQscil7aWYobChlLHQpKXJldHVybiByP3AoZSx0LHIpOnAo
ZSx0KX1mdW5jdGlvbiBmKGUpe3JldHVybiBudWxsPT09ZXx8dm9pZCAwPT09ZT9bXTpBcnJheS5p
c0FycmF5KGUpP2U6W2VdfWZ1bmN0aW9uIGQoZSl7aWYobnVsbD09PWUpcmV0dXJuIm51bGwiO2lm
KHZvaWQgMD09PWUpcmV0dXJuInVuZGVmaW5lZCI7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4i
WyIrZSsiXSI7dmFyIHQ9dHlwZW9mIGU7aWYoIm9iamVjdCIhPT10JiYic3ltYm9sIiE9PXQpcmV0
dXJuIiIrZTtpZigiZnVuY3Rpb24iPT10eXBlb2YgZS50b1N0cmluZyYmZS50b1N0cmluZyE9PVQp
cmV0dXJuIGUudG9TdHJpbmcoKTt2YXIgcixuPVtdO2Zvcih2YXIgaSBpbiBlKWlmKGUuaGFzT3du
UHJvcGVydHkoaSkpe2lmKHI9ZVtpXSwidG9TdHJpbmciPT09ciljb250aW51ZTsiZnVuY3Rpb24i
PT10eXBlb2YgciYmKHI9ImZ1bmN0aW9uKCkgeyAuLi4gfSIpLHImJiJmdW5jdGlvbiIhPXR5cGVv
ZiByLnRvU3RyaW5nP24ucHVzaChpKyI6ICIrVC5jYWxsKHIpKTpuLnB1c2goaSsiOiAiK3IpfXJl
dHVybiJ7IituLmpvaW4oIiwgIikrIn0ifWZ1bmN0aW9uIHAoZSx0LHIpe3ZhciBuPXImJnIubGVu
Z3RoO2lmKCFyfHwhbilyZXR1cm4gZVt0XSgpO3N3aXRjaChuKXtjYXNlIDE6cmV0dXJuIGVbdF0o
clswXSk7Y2FzZSAyOnJldHVybiBlW3RdKHJbMF0sclsxXSk7Y2FzZSAzOnJldHVybiBlW3RdKHJb
MF0sclsxXSxyWzJdKTtjYXNlIDQ6cmV0dXJuIGVbdF0oclswXSxyWzFdLHJbMl0sclszXSk7Y2Fz
ZSA1OnJldHVybiBlW3RdKHJbMF0sclsxXSxyWzJdLHJbM10scls0XSk7ZGVmYXVsdDpyZXR1cm4g
ZVt0XS5hcHBseShlLHIpfX1mdW5jdGlvbiBoKGUsdCl7Zm9yKHZhciByPWU7cjspe3ZhciBuPU9i
amVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iocix0KTtpZihuKXJldHVybiBuO3I9T2JqZWN0
LmdldFByb3RvdHlwZU9mKHIpfXJldHVybiBudWxsfWZ1bmN0aW9uIG0oZSl7cmV0dXJuIGUmJmUu
dG9TdHJpbmc/ZS50b1N0cmluZygpOlQuY2FsbChlKX1lLnV1aWQ9dCxlLmludGVybj1yLGUuZ2Vu
ZXJhdGVHdWlkPW4sZS5ndWlkRm9yPWksZS53cmFwPXMsZS50cnlJbnZva2U9YyxlLm1ha2VBcnJh
eT1mLGUuaW5zcGVjdD1kLGUuYXBwbHlTdHI9cCxlLmxvb2t1cERlc2NyaXB0b3I9aCxlLnRvU3Ry
aW5nPW07dmFyIHY9MCxiPSJlbWJlciIsZz1bXSx5PXt9LF89cigiX19lbWJlciIrICtuZXcgRGF0
ZSksdz17d3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITEsdmFsdWU6bnVs
bH07ZS5HVUlEX0RFU0M9dzt2YXIgeD17Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLGVudW1l
cmFibGU6ITEsdmFsdWU6bnVsbH0saz17bmFtZTpfLGRlc2NyaXB0b3I6eH07ZS5HVUlEX0tFWV9Q
Uk9QRVJUWT1rO3ZhciBDPS9cLihfc3VwZXJ8Y2FsbFwodGhpc3xhcHBseVwodGhpcykvLEU9RnVu
Y3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nLE89ZnVuY3Rpb24oKXt2YXIgZT1FLmNhbGwoZnVuY3Rp
b24oKXtyZXR1cm4gdGhpc30pLmluZGV4T2YoInJldHVybiB0aGlzIik+LTE7cmV0dXJuIGU/ZnVu
Y3Rpb24oZSl7cmV0dXJuIEMudGVzdChFLmNhbGwoZSkpfTpmdW5jdGlvbigpe3JldHVybiEwfX0o
KTtlLmNoZWNrSGFzU3VwZXI9TyxvLl9faGFzU3VwZXI9ITE7dmFyIFQ9T2JqZWN0LnByb3RvdHlw
ZS50b1N0cmluZztlLkdVSURfS0VZPV8sZS5tYWtlQXJyYXk9ZixlLmNhbkludm9rZT1sfSksZSgi
ZW1iZXItbWV0YWwvd2F0Y2hfa2V5IixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9mZWF0dXJlcyIs
ImVtYmVyLW1ldGFsL21ldGEiLCJlbWJlci1tZXRhbC9wcm9wZXJ0aWVzIiwiZW1iZXItbWV0YWwv
dXRpbHMiXSxmdW5jdGlvbihlLHQscixuLGkpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBvKGUsdCxu
KXtpZigibGVuZ3RoIiE9PXR8fCFBcnJheS5pc0FycmF5KGUpKXt2YXIgaT1ufHxyLm1ldGEoZSk7
aWYoaS5wZWVrV2F0Y2hpbmcodCkpaS53cml0ZVdhdGNoaW5nKHQsKGkucGVla1dhdGNoaW5nKHQp
fHwwKSsxKTtlbHNle2kud3JpdGVXYXRjaGluZyh0LDEpO3ZhciBvPWVbdF0sYT1udWxsIT09byYm
Im9iamVjdCI9PXR5cGVvZiBvJiZvLmlzRGVzY3JpcHRvcj9vOnZvaWQgMDthJiZhLndpbGxXYXRj
aCYmYS53aWxsV2F0Y2goZSx0KSwiZnVuY3Rpb24iPT10eXBlb2YgZS53aWxsV2F0Y2hQcm9wZXJ0
eSYmZS53aWxsV2F0Y2hQcm9wZXJ0eSh0KX19fWZ1bmN0aW9uIGEoZSx0LG4pe3ZhciBpPW58fHIu
bWV0YShlKSxvPWkucGVla1dhdGNoaW5nKHQpO2lmKDE9PT1vKXtpLndyaXRlV2F0Y2hpbmcodCww
KTt2YXIgYT1lW3RdLHM9bnVsbCE9PWEmJiJvYmplY3QiPT10eXBlb2YgYSYmYS5pc0Rlc2NyaXB0
b3I/YTp2b2lkIDA7cyYmcy5kaWRVbndhdGNoJiZzLmRpZFVud2F0Y2goZSx0KSwiZnVuY3Rpb24i
PT10eXBlb2YgZS5kaWRVbndhdGNoUHJvcGVydHkmJmUuZGlkVW53YXRjaFByb3BlcnR5KHQpfWVs
c2Ugbz4xJiZpLndyaXRlV2F0Y2hpbmcodCxvLTEpfWUud2F0Y2hLZXk9byxlLnVud2F0Y2hLZXk9
YX0pLGUoImVtYmVyLW1ldGFsL3dhdGNoX3BhdGgiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL21l
dGEiLCJlbWJlci1tZXRhbC9jaGFpbnMiXSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIG4oZSxyKXtyZXR1cm4ocnx8dC5tZXRhKGUpKS53cml0YWJsZUNoYWlucyhpKX1mdW5j
dGlvbiBpKGUpe3JldHVybiBuZXcgci5DaGFpbk5vZGUobnVsbCxudWxsLGUpfWZ1bmN0aW9uIG8o
ZSxyLGkpe2lmKCJsZW5ndGgiIT09cnx8IUFycmF5LmlzQXJyYXkoZSkpe3ZhciBvPWl8fHQubWV0
YShlKSxhPW8ucGVla1dhdGNoaW5nKHIpfHwwO2E/by53cml0ZVdhdGNoaW5nKHIsYSsxKTooby53
cml0ZVdhdGNoaW5nKHIsMSksbihlLG8pLmFkZChyKSl9fWZ1bmN0aW9uIGEoZSxyLGkpe3ZhciBv
PWl8fHQubWV0YShlKSxhPW8ucGVla1dhdGNoaW5nKHIpfHwwOzE9PT1hPyhvLndyaXRlV2F0Y2hp
bmcociwwKSxuKGUsbykucmVtb3ZlKHIpKTphPjEmJm8ud3JpdGVXYXRjaGluZyhyLGEtMSl9ZS53
YXRjaFBhdGg9byxlLnVud2F0Y2hQYXRoPWF9KSxlKCJlbWJlci1tZXRhbC93YXRjaGluZyIsWyJl
eHBvcnRzIiwiZW1iZXItbWV0YWwvY2hhaW5zIiwiZW1iZXItbWV0YWwvd2F0Y2hfa2V5IiwiZW1i
ZXItbWV0YWwvd2F0Y2hfcGF0aCIsImVtYmVyLW1ldGFsL3BhdGhfY2FjaGUiLCJlbWJlci1tZXRh
bC9tZXRhIl0sZnVuY3Rpb24oZSx0LHIsbixpLG8peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBhKGUs
dCxvKXsibGVuZ3RoIj09PXQmJkFycmF5LmlzQXJyYXkoZSl8fChpLmlzUGF0aCh0KT9uLndhdGNo
UGF0aChlLHQsbyk6ci53YXRjaEtleShlLHQsbykpfWZ1bmN0aW9uIHMoZSx0KXt2YXIgcj1vLnBl
ZWtNZXRhKGUpO3JldHVybihyJiZyLnBlZWtXYXRjaGluZyh0KSk+MH1mdW5jdGlvbiB1KGUsdCl7
dmFyIHI9by5wZWVrTWV0YShlKTtyZXR1cm4gciYmci5wZWVrV2F0Y2hpbmcodCl8fDB9ZnVuY3Rp
b24gbChlLHQsbyl7Imxlbmd0aCI9PT10JiZBcnJheS5pc0FycmF5KGUpfHwoaS5pc1BhdGgodCk/
bi51bndhdGNoUGF0aChlLHQsbyk6ci51bndhdGNoS2V5KGUsdCxvKSl9ZnVuY3Rpb24gYyhlKXt2
YXIgcixuLGksYSxzPW8ucGVla01ldGEoZSk7aWYocyYmKG8uZGVsZXRlTWV0YShlKSxyPXMucmVh
ZGFibGVDaGFpbnMoKSkpZm9yKGYucHVzaChyKTtmLmxlbmd0aD4wOyl7aWYocj1mLnBvcCgpLG49
ci5fY2hhaW5zKWZvcihpIGluIG4pdm9pZCAwIT09bltpXSYmZi5wdXNoKG5baV0pO3IuX3dhdGNo
aW5nJiYoYT1yLl9vYmplY3QsYSYmdC5yZW1vdmVDaGFpbldhdGNoZXIoYSxyLl9rZXkscikpfX1l
LmlzV2F0Y2hpbmc9cyxlLndhdGNoZXJDb3VudD11LGUudW53YXRjaD1sLGUuZGVzdHJveT1jLGUu
d2F0Y2g9YTt2YXIgZj1bXX0pLGUoImVtYmVyLW1ldGFsL3dlYWtfbWFwIixbImV4cG9ydHMiLCJl
bWJlci1tZXRhbC9kZWJ1ZyIsImVtYmVyLW1ldGFsL3V0aWxzIiwiZW1iZXItbWV0YWwvbWV0YSJd
LGZ1bmN0aW9uKGUsdCxyLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKCl7fWZ1bmN0aW9uIG8o
KXt0aGlzLl9pZD1yLkdVSURfS0VZK2ErK31lLmRlZmF1bHQ9bzt2YXIgYT0wO28ucHJvdG90eXBl
LmdldD1mdW5jdGlvbihlKXt2YXIgdD1uLnBlZWtNZXRhKGUpO2lmKHQpe3ZhciByPXQucmVhZGFi
bGVXZWFrKCk7aWYocil7aWYoclt0aGlzLl9pZF09PT1pKXJldHVybjtyZXR1cm4gclt0aGlzLl9p
ZF19fX0sby5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMD09PXQmJih0
PWkpLG4ubWV0YShlKS53cml0YWJsZVdlYWsoKVt0aGlzLl9pZF09dCx0aGlzfSxvLnByb3RvdHlw
ZS5oYXM9ZnVuY3Rpb24oZSl7dmFyIHQ9bi5wZWVrTWV0YShlKTtpZih0KXt2YXIgcj10LnJlYWRh
YmxlV2VhaygpO2lmKHIpcmV0dXJuIHZvaWQgMCE9PXJbdGhpcy5faWRdfXJldHVybiExfSxvLnBy
b3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24oZSl7cmV0dXJuISF0aGlzLmhhcyhlKSYmKGRlbGV0ZSBu
Lm1ldGEoZSkud3JpdGFibGVXZWFrKClbdGhpcy5faWRdLCEwKX19KSxlKCJlbWJlci1yb3V0aW5n
LWh0bWxiYXJzL2hlbHBlcnMvcXVlcnktcGFyYW1zIixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9k
ZWJ1ZyIsImVtYmVyLXJvdXRpbmcvc3lzdGVtL3F1ZXJ5X3BhcmFtcyJdLGZ1bmN0aW9uKGUsdCxy
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlLHQpe3JldHVybiByLmRlZmF1bHQuY3JlYXRlKHt2
YWx1ZXM6dH0pfWUucXVlcnlQYXJhbXNIZWxwZXI9bn0pLGUoImVtYmVyLXJvdXRpbmctaHRtbGJh
cnMvaW5kZXgiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL2NvcmUiLCJlbWJlci1odG1sYmFycy9o
ZWxwZXJzIiwiZW1iZXItaHRtbGJhcnMva2V5d29yZHMiLCJlbWJlci1yb3V0aW5nLWh0bWxiYXJz
L2hlbHBlcnMvcXVlcnktcGFyYW1zIiwiZW1iZXItcm91dGluZy1odG1sYmFycy9rZXl3b3Jkcy9h
Y3Rpb24iLCJlbWJlci1yb3V0aW5nLWh0bWxiYXJzL2tleXdvcmRzL2VsZW1lbnQtYWN0aW9uIiwi
ZW1iZXItcm91dGluZy1odG1sYmFycy9rZXl3b3Jkcy9yZW5kZXIiXSxmdW5jdGlvbihlLHQscixu
LGksbyxhLHMpeyJ1c2Ugc3RyaWN0IjtyLnJlZ2lzdGVySGVscGVyKCJxdWVyeS1wYXJhbXMiLGku
cXVlcnlQYXJhbXNIZWxwZXIpLG4ucmVnaXN0ZXJLZXl3b3JkKCJhY3Rpb24iLG8uZGVmYXVsdCks
bi5yZWdpc3RlcktleXdvcmQoIkBlbGVtZW50X2FjdGlvbiIsYS5kZWZhdWx0KSxuLnJlZ2lzdGVy
S2V5d29yZCgicmVuZGVyIixzLmRlZmF1bHQpLGUuZGVmYXVsdD10LmRlZmF1bHR9KSxlKCJlbWJl
ci1yb3V0aW5nLWh0bWxiYXJzL2tleXdvcmRzL2FjdGlvbiIsWyJleHBvcnRzIiwiaHRtbGJhcnMt
cnVudGltZS9ob29rcyIsImVtYmVyLXJvdXRpbmctaHRtbGJhcnMva2V5d29yZHMvY2xvc3VyZS1h
Y3Rpb24iXSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO2UuZGVmYXVsdD1mdW5jdGlvbihl
LG4saSxvLGEscyx1LGwpe3JldHVybiBlPyh0LmtleXdvcmQoIkBlbGVtZW50X2FjdGlvbiIsZSxu
LGksbyxhLHMsdSxsKSwhMCk6ci5kZWZhdWx0KGUsbixpLG8sYSxzLHUsbCl9fSksZSgiZW1iZXIt
cm91dGluZy1odG1sYmFycy9rZXl3b3Jkcy9jbG9zdXJlLWFjdGlvbiIsWyJleHBvcnRzIiwiZW1i
ZXItbWV0YWwvc3RyZWFtcy9zdHJlYW0iLCJlbWJlci1tZXRhbC9zdHJlYW1zL3V0aWxzIiwiZW1i
ZXItbWV0YWwvc3ltYm9sIiwiZW1iZXItbWV0YWwvcHJvcGVydHlfZ2V0IiwiZW1iZXItaHRtbGJh
cnMvaG9va3Mvc3ViZXhwciIsImVtYmVyLW1ldGFsL2Vycm9yIiwiZW1iZXItbWV0YWwvcnVuX2xv
b3AiLCJlbWJlci1tZXRhbC9pbnN0cnVtZW50YXRpb24iLCJlbWJlci1tZXRhbC9pc19ub25lIl0s
ZnVuY3Rpb24oZSx0LHIsbixpLG8sYSxzLHUsbCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGMoZSxu
LGkscyx1LGMscCxoKXt2YXIgbT1uZXcgdC5TdHJlYW0oZnVuY3Rpb24oKXt2YXIgZT1zWzBdLHQ9
ci5yZWFkQXJyYXkocy5zbGljZSgxLHMubGVuZ3RoKSksbj12b2lkIDAsYz12b2lkIDAscD12b2lk
IDA7aWYobC5kZWZhdWx0KGUpKXt2YXIgaD1vLmxhYmVsRm9yU3ViZXhwcihzLHUsImFjdGlvbiIp
O3Rocm93IG5ldyBhLmRlZmF1bHQoIkFjdGlvbiBwYXNzZWQgaXMgbnVsbCBvciB1bmRlZmluZWQg
aW4gIitoKyIgZnJvbSAiK3IucmVhZChpLmdldFNlbGYoKSkrIi4iKX1pZihlW2RdKW49ZSxjPWVb
ZF07ZWxzZXtuPXIucmVhZChpLmdldFNlbGYoKSksYz1yLnJlYWQoZSk7dmFyIG09dHlwZW9mIGM7
aWYoInN0cmluZyI9PT1tKXt2YXIgdj1jO2lmKGM9bnVsbCx1LnRhcmdldCYmKG49ci5yZWFkKHUu
dGFyZ2V0KSksbi5hY3Rpb25zJiYoYz1uLmFjdGlvbnNbdl0pLCFjKXRocm93IG5ldyBhLmRlZmF1
bHQoIkFuIGFjdGlvbiBuYW1lZCAnIit2KyInIHdhcyBub3QgZm91bmQgaW4gIituKyIuIil9ZWxz
ZSBpZihjJiYiZnVuY3Rpb24iPT10eXBlb2YgY1tkXSluPWMsYz1jW2RdO2Vsc2UgaWYoImZ1bmN0
aW9uIiE9PW0pdGhyb3cgbmV3IGEuZGVmYXVsdCgiQW4gYWN0aW9uIGNvdWxkIG5vdCBiZSBtYWRl
IGZvciBgIitlLmxhYmVsKyJgIGluICIrbisiLiBQbGVhc2UgY29uZmlybSB0aGF0IHlvdSBhcmUg
dXNpbmcgZWl0aGVyIGEgcXVvdGVkIGFjdGlvbiBuYW1lIChpLmUuIGAoYWN0aW9uICciK2UubGFi
ZWwrIicpYCkgb3IgYSBmdW5jdGlvbiBhdmFpbGFibGUgaW4gIituKyIuIil9cmV0dXJuIHUudmFs
dWUmJihwPXIucmVhZCh1LnZhbHVlKSksZih0aGlzLG4sYyxwLHQpfSxmdW5jdGlvbigpe3JldHVy
biBvLmxhYmVsRm9yU3ViZXhwcihzLHUsImFjdGlvbiIpfSk7cmV0dXJuIHMuZm9yRWFjaChtLmFk
ZERlcGVuZGVuY3ksbSksT2JqZWN0LmtleXModSkuZm9yRWFjaChmdW5jdGlvbihlKXtyZXR1cm4g
bS5hZGREZXBlbmRlbmN5KGUpfSksbX1mdW5jdGlvbiBmKGUsdCxuLG8sYSl7dmFyIGw7cmV0dXJu
IGw9YS5sZW5ndGg+MD9mdW5jdGlvbigpe2Zvcih2YXIgbD1hLGM9YXJndW1lbnRzLmxlbmd0aCxm
PUFycmF5KGMpLGQ9MDtkPGM7ZCsrKWZbZF09YXJndW1lbnRzW2RdO2YubGVuZ3RoPjAmJihsPWEu
Y29uY2F0KGYpKSxvJiZsLmxlbmd0aD4wJiYobFswXT1pLmdldChsWzBdLG8pKTt2YXIgcD17dGFy
Z2V0OnQsYXJnczpsLGxhYmVsOnIubGFiZWxGb3IoZSl9O3JldHVybiB1LmZsYWdnZWRJbnN0cnVt
ZW50KCJpbnRlcmFjdGlvbi5lbWJlci1hY3Rpb24iLHAsZnVuY3Rpb24oKXtyZXR1cm4gcy5kZWZh
dWx0LmpvaW4uYXBwbHkocy5kZWZhdWx0LFt0LG5dLmNvbmNhdChsKSl9KX06ZnVuY3Rpb24oKXtm
b3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aCxsPUFycmF5KGEpLGM9MDtjPGE7YysrKWxbY109YXJn
dW1lbnRzW2NdO28mJmwubGVuZ3RoPjAmJihsWzBdPWkuZ2V0KGxbMF0sbykpO3ZhciBmPXt0YXJn
ZXQ6dCxhcmdzOmwsbGFiZWw6ci5sYWJlbEZvcihlKX07cmV0dXJuIHUuZmxhZ2dlZEluc3RydW1l
bnQoImludGVyYWN0aW9uLmVtYmVyLWFjdGlvbiIsZixmdW5jdGlvbigpe3JldHVybiBzLmRlZmF1
bHQuam9pbi5hcHBseShzLmRlZmF1bHQsW3Qsbl0uY29uY2F0KGwpKX0pfSxsW3BdPSEwLGx9ZS5k
ZWZhdWx0PWM7dmFyIGQ9bi5kZWZhdWx0KCJJTlZPS0UiKTtlLklOVk9LRT1kO3ZhciBwPW4uZGVm
YXVsdCgiQUNUSU9OIik7ZS5BQ1RJT049cH0pLGUoImVtYmVyLXJvdXRpbmctaHRtbGJhcnMva2V5
d29yZHMvZWxlbWVudC1hY3Rpb24iLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL2RlYnVnIiwiZW1i
ZXItbWV0YWwvdXRpbHMiLCJlbWJlci1tZXRhbC9zdHJlYW1zL3V0aWxzIiwiZW1iZXItbWV0YWwv
cnVuX2xvb3AiLCJlbWJlci12aWV3cy9zdHJlYW1zL3V0aWxzIiwiZW1iZXItdmlld3Mvc3lzdGVt
L3V0aWxzIiwiZW1iZXItdmlld3Mvc3lzdGVtL2FjdGlvbl9tYW5hZ2VyIl0sZnVuY3Rpb24oZSx0
LHIsbixpLG8sYSxzKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gdShlLHQpe2lmKCJ1bmRlZmluZWQi
PT10eXBlb2YgdCl7aWYoZi50ZXN0KGUudHlwZSkpcmV0dXJuIGEuaXNTaW1wbGVDbGljayhlKTt0
PSIifWlmKHQuaW5kZXhPZigiYW55Iik+PTApcmV0dXJuITA7Zm9yKHZhciByPTAsbj1jLmxlbmd0
aDtyPG47cisrKWlmKGVbY1tyXSsiS2V5Il0mJnQuaW5kZXhPZihjW3JdKT09PS0xKXJldHVybiEx
O3JldHVybiEwfWUuZGVmYXVsdD17c2V0dXBTdGF0ZTpmdW5jdGlvbihlLHQscixuLGkpe2Zvcih2
YXIgYT10Lmhvb2tzLmdldCxzPXQuaG9va3MuZ2V0VmFsdWUsdT1zKG5bMF0pLGw9W10sYz0xLGY9
bi5sZW5ndGg7YzxmO2MrKylsLnB1c2goby5yZWFkVW53cmFwcGVkTW9kZWwobltjXSkpO3ZhciBk
O3JldHVybiBkPWkudGFyZ2V0P3MoInN0cmluZyI9PXR5cGVvZiBpLnRhcmdldD9hKHQscixpLnRh
cmdldCk6aS50YXJnZXQpOnMoci5nZXRMb2NhbCgiY29udHJvbGxlciIpKXx8cyhyLmdldFNlbGYo
KSkse2FjdGlvbk5hbWU6dSxhY3Rpb25BcmdzOmwsdGFyZ2V0OmR9fSxpc1N0YWJsZTpmdW5jdGlv
bihlLHQscixuLGkpe3JldHVybiEwfSxyZW5kZXI6ZnVuY3Rpb24oZSx0LG4saSxvLGEscyx1KXt2
YXIgYz10LmRvbS5nZXRBdHRyaWJ1dGUoZS5lbGVtZW50LCJkYXRhLWVtYmVyLWFjdGlvbiIpfHxy
LnV1aWQoKTtsLnJlZ2lzdGVyQWN0aW9uKHthY3Rpb25JZDpjLG5vZGU6ZSxldmVudE5hbWU6by5v
bnx8ImNsaWNrIixidWJibGVzOm8uYnViYmxlcyxwcmV2ZW50RGVmYXVsdDpvLnByZXZlbnREZWZh
dWx0LHdpdGhLZXlDb2RlOm8ud2l0aEtleUNvZGUsYWxsb3dlZEtleXM6by5hbGxvd2VkS2V5c30p
LGUuY2xlYW51cD1mdW5jdGlvbigpe2wudW5yZWdpc3RlckFjdGlvbihjKX0sdC5kb20uc2V0QXR0
cmlidXRlKGUuZWxlbWVudCwiZGF0YS1lbWJlci1hY3Rpb24iLGMpfX07dmFyIGw9e307ZS5BY3Rp
b25IZWxwZXI9bCxsLnJlZ2lzdGVyZWRBY3Rpb25zPXMuZGVmYXVsdC5yZWdpc3RlcmVkQWN0aW9u
cyxsLnJlZ2lzdGVyQWN0aW9uPWZ1bmN0aW9uKGUpe3ZhciB0PWUuYWN0aW9uSWQscj1lLm5vZGUs
bz1lLmV2ZW50TmFtZSxhPWUucHJldmVudERlZmF1bHQsbD1lLmJ1YmJsZXMsYz1lLmFsbG93ZWRL
ZXlzLGY9cy5kZWZhdWx0LnJlZ2lzdGVyZWRBY3Rpb25zW3RdO3JldHVybiBmfHwoZj1zLmRlZmF1
bHQucmVnaXN0ZXJlZEFjdGlvbnNbdF09W10pLGYucHVzaCh7ZXZlbnROYW1lOm8saGFuZGxlcjpm
dW5jdGlvbihlKXtpZighdShlLG4ucmVhZChjKSkpcmV0dXJuITA7bi5yZWFkKGEpIT09ITEmJmUu
cHJldmVudERlZmF1bHQoKSxuLnJlYWQobCk9PT0hMSYmZS5zdG9wUHJvcGFnYXRpb24oKTt2YXIg
dD1yLmdldFN0YXRlKCksbz10LnRhcmdldCxzPXQuYWN0aW9uTmFtZSxmPXQuYWN0aW9uQXJncztp
LmRlZmF1bHQoZnVuY3Rpb24oKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2Ygcz92b2lkIHMuYXBw
bHkobyxmKTp2b2lkKG8uc2VuZD9vLnNlbmQuYXBwbHkobyxbc10uY29uY2F0KGYpKTpvW3NdLmFw
cGx5KG8sZikpfSl9fSksdH0sbC51bnJlZ2lzdGVyQWN0aW9uPWZ1bmN0aW9uKGUpe2RlbGV0ZSBz
LmRlZmF1bHQucmVnaXN0ZXJlZEFjdGlvbnNbZV19O3ZhciBjPVsiYWx0Iiwic2hpZnQiLCJtZXRh
IiwiY3RybCJdLGY9L15jbGlja3xtb3VzZXx0b3VjaC99KSxlKCJlbWJlci1yb3V0aW5nLWh0bWxi
YXJzL2tleXdvcmRzL3JlbmRlciIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvZGVidWciLCJlbWJl
ci1tZXRhbC9wcm9wZXJ0eV9nZXQiLCJlbWJlci1tZXRhbC9lbXB0eV9vYmplY3QiLCJlbWJlci1t
ZXRhbC9lcnJvciIsImVtYmVyLW1ldGFsL3N0cmVhbXMvdXRpbHMiLCJlbWJlci1ydW50aW1lL3N5
c3RlbS9zdHJpbmciLCJlbWJlci1yb3V0aW5nL3N5c3RlbS9nZW5lcmF0ZV9jb250cm9sbGVyIiwi
ZW1iZXItaHRtbGJhcnMvbm9kZS1tYW5hZ2Vycy92aWV3LW5vZGUtbWFuYWdlciJdLGZ1bmN0aW9u
KGUsdCxyLG4saSxvLGEscyx1KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbChlLHQpe3ZhciByPXQu
dmlldy5vd25lclZpZXc7aWYociYmci5vdXRsZXRTdGF0ZSl7dmFyIGk9ci5vdXRsZXRTdGF0ZTtp
ZihpLm1haW4pe3ZhciBvPWkubWFpbi5vdXRsZXRzLl9fZW1iZXJfb3JwaGFuc19fO2lmKG8pe3Zh
ciBhPW8ub3V0bGV0c1tlXTtpZihhKXt2YXIgcz1uZXcgbi5kZWZhdWx0O3JldHVybiBzW2EucmVu
ZGVyLm91dGxldF09YSxhLndhc1VzZWQ9ITAsc319fX19ZnVuY3Rpb24gYyhlLHQpe2lmKCFlJiYh
dClyZXR1cm4hMDtpZighZXx8IXQpcmV0dXJuITE7Zm9yKHZhciByIGluIGUpaWYoIWYoZVtyXSx0
W3JdKSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBmKGUsdCl7aWYoIWUmJiF0KXJldHVybiEw
O2lmKCFlfHwhdClyZXR1cm4hMTtlPWUucmVuZGVyLHQ9dC5yZW5kZXI7Zm9yKHZhciByIGluIGUp
aWYoZS5oYXNPd25Qcm9wZXJ0eShyKSYmZVtyXSE9PXRbcl0mJiJuYW1lIiE9PXIpcmV0dXJuITE7
cmV0dXJuITB9ZS5kZWZhdWx0PXt3aWxsUmVuZGVyOmZ1bmN0aW9uKGUsdCl7dC52aWV3Lm93bmVy
Vmlldy5fb3V0bGV0cyYmdC52aWV3Lm93bmVyVmlldy5fb3V0bGV0cy5wdXNoKGUpOworfSxzZXR1
cFN0YXRlOmZ1bmN0aW9uKGUsdCxyLG4saSl7dmFyIG89blswXTtyZXR1cm57cGFyZW50Vmlldzp0
LnZpZXcsbWFuYWdlcjplLm1hbmFnZXIsY29udHJvbGxlcjplLmNvbnRyb2xsZXIsY2hpbGRPdXRs
ZXRTdGF0ZTpsKG8sdCl9fSxjaGlsZEVudjpmdW5jdGlvbihlLHQpe3JldHVybiB0LmNoaWxkV2l0
aE91dGxldFN0YXRlKGUuY2hpbGRPdXRsZXRTdGF0ZSl9LGlzU3RhYmxlOmZ1bmN0aW9uKGUsdCl7
cmV0dXJuIGMoZS5jaGlsZE91dGxldFN0YXRlLHQuY2hpbGRPdXRsZXRTdGF0ZSl9LGlzRW1wdHk6
ZnVuY3Rpb24oZSl7cmV0dXJuITF9LHJlbmRlcjpmdW5jdGlvbihlLHQsbixsLGMsZixkLHApe3Zh
ciBoPWUuZ2V0U3RhdGUoKSxtPWxbMF0sdj1sWzFdLGI9dC5vd25lcixnPWIubG9va3VwKCJyb3V0
ZXI6bWFpbiIpO2lmKDE9PT1sLmxlbmd0aCk7ZWxzZSBpZigyIT09bC5sZW5ndGgpdGhyb3cgbmV3
IGkuZGVmYXVsdCgiWW91IG11c3QgcGFzcyBhIHRlbXBsYXRlTmFtZSB0byByZW5kZXIiKTt2YXIg
eT0idGVtcGxhdGU6IittLF89Yi5sb29rdXAoInZpZXc6IittKTtffHwoXz1iLmxvb2t1cCgidmll
dzpkZWZhdWx0IikpO3ZhciB3PV8mJiEhci5nZXQoXywidGVtcGxhdGUiKTtmfHx3fHwoZj1iLmxv
b2t1cCh5KSksXyYmKF8ub3duZXJWaWV3PXQudmlldy5vd25lclZpZXcpO3ZhciB4LGs7Yy5jb250
cm9sbGVyPyh4PWMuY29udHJvbGxlcixrPSJjb250cm9sbGVyOiIreCxkZWxldGUgYy5jb250cm9s
bGVyKTooeD1tLGs9ImNvbnRyb2xsZXI6Iit4KTt2YXIgQyxFPWc7aWYobC5sZW5ndGg+MSl7dmFy
IE89Yi5fbG9va3VwRmFjdG9yeShrKXx8cy5nZW5lcmF0ZUNvbnRyb2xsZXJGYWN0b3J5KGIseCk7
Qz1PLmNyZWF0ZSh7bW9kZWw6by5yZWFkKHYpLHRhcmdldDpFfSksZS5hZGREZXN0cnVjdGlvbihD
KX1lbHNlIEM9Yi5sb29rdXAoayl8fHMuZGVmYXVsdChiLHgpLEMuc2V0UHJvcGVydGllcyh7dGFy
Z2V0OkV9KTtfJiZfLnNldCgiY29udHJvbGxlciIsQyksaC5jb250cm9sbGVyPUMsYy52aWV3TmFt
ZT1hLmNhbWVsaXplKG0pLGYmJmYucmF3JiYoZj1mLnJhdyk7dmFyIFQ9e2xheW91dDpudWxsLHNl
bGY6Q307XyYmKFQuY29tcG9uZW50PV8pO3ZhciBOPXUuZGVmYXVsdC5jcmVhdGUoZSx0LGMsVCxo
LnBhcmVudFZpZXcsbnVsbCxudWxsLGYpO2gubWFuYWdlcj1OLGcmJjE9PT1sLmxlbmd0aCYmZy5f
Y29ubmVjdEFjdGl2ZUNvbXBvbmVudE5vZGUobSxOKSxOLnJlbmRlcih0LGMscCl9LHJlcmVuZGVy
OmZ1bmN0aW9uKGUsdCxyLG4saSxhLHMsdSl7aWYobi5sZW5ndGg+MSl7dmFyIGw9by5yZWFkKG5b
MV0pO2UuZ2V0U3RhdGUoKS5jb250cm9sbGVyLnNldCgibW9kZWwiLGwpfX19fSksZSgiZW1iZXIt
cm91dGluZy12aWV3cy9jb21wb25lbnRzL2xpbmstdG8iLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFs
L2ZlYXR1cmVzIiwiZW1iZXItbWV0YWwvbG9nZ2VyIiwiZW1iZXItbWV0YWwvZGVidWciLCJlbWJl
ci1tZXRhbC9wcm9wZXJ0eV9nZXQiLCJlbWJlci1tZXRhbC9jb21wdXRlZCIsImVtYmVyLW1ldGFs
L2NvbXB1dGVkX21hY3JvcyIsImVtYmVyLXZpZXdzL3N5c3RlbS91dGlscyIsImVtYmVyLXZpZXdz
L2NvbXBvbmVudHMvY29tcG9uZW50IiwiZW1iZXItcnVudGltZS9pbmplY3QiLCJlbWJlci1ydW50
aW1lL3N5c3RlbS9zZXJ2aWNlIiwiZW1iZXItcnVudGltZS9taXhpbnMvY29udHJvbGxlciIsImVt
YmVyLWh0bWxiYXJzL25vZGUtbWFuYWdlcnMvY29tcG9uZW50LW5vZGUtbWFuYWdlciIsImVtYmVy
LWh0bWxiYXJzL3RlbXBsYXRlcy9saW5rLXRvIiwicmVxdWlyZSJdLGZ1bmN0aW9uKGUsdCxyLG4s
aSxvLGEscyx1LGwsYyxmLGQscCxoKXsidXNlIHN0cmljdCI7dmFyIG09cC5kZWZhdWx0LHY9dS5k
ZWZhdWx0LmV4dGVuZCh7bGF5b3V0Om0sdGFnTmFtZToiYSIsY3VycmVudFdoZW46YS5kZXByZWNh
dGluZ0FsaWFzKCJjdXJyZW50LXdoZW4iLHtpZDoiZW1iZXItcm91dGluZy12aWV3LmRlcHJlY2F0
ZWQtY3VycmVudC13aGVuIix1bnRpbDoiMy4wLjAifSksImN1cnJlbnQtd2hlbiI6bnVsbCx0aXRs
ZTpudWxsLHJlbDpudWxsLHRhYmluZGV4Om51bGwsdGFyZ2V0Om51bGwsYWN0aXZlQ2xhc3M6ImFj
dGl2ZSIsbG9hZGluZ0NsYXNzOiJsb2FkaW5nIixkaXNhYmxlZENsYXNzOiJkaXNhYmxlZCIsX2lz
RGlzYWJsZWQ6ITEscmVwbGFjZTohMSxhdHRyaWJ1dGVCaW5kaW5nczpbImhyZWYiLCJ0aXRsZSIs
InJlbCIsInRhYmluZGV4IiwidGFyZ2V0Il0sY2xhc3NOYW1lQmluZGluZ3M6WyJhY3RpdmUiLCJs
b2FkaW5nIiwiZGlzYWJsZWQiLCJ0cmFuc2l0aW9uaW5nSW4iLCJ0cmFuc2l0aW9uaW5nT3V0Il0s
ZXZlbnROYW1lOiJjbGljayIsaW5pdDpmdW5jdGlvbigpe3RoaXMuX3N1cGVyLmFwcGx5KHRoaXMs
YXJndW1lbnRzKTt2YXIgZT1pLmdldCh0aGlzLCJldmVudE5hbWUiKTt0aGlzLm9uKGUsdGhpcyx0
aGlzLl9pbnZva2UpfSxfcm91dGluZzpsLmRlZmF1bHQuc2VydmljZSgiLXJvdXRpbmciKSxkaXNh
YmxlZDpvLmNvbXB1dGVkKHtnZXQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4hMX0sc2V0OmZ1bmN0aW9u
KGUsdCl7cmV0dXJuIHZvaWQgMCE9PXQmJnRoaXMuc2V0KCJfaXNEaXNhYmxlZCIsdCksISF0JiZp
LmdldCh0aGlzLCJkaXNhYmxlZENsYXNzIil9fSksX2NvbXB1dGVBY3RpdmU6ZnVuY3Rpb24oZSl7
aWYoaS5nZXQodGhpcywibG9hZGluZyIpKXJldHVybiExO3ZhciB0PWkuZ2V0KHRoaXMsIl9yb3V0
aW5nIikscj1pLmdldCh0aGlzLCJtb2RlbHMiKSxuPWkuZ2V0KHRoaXMsInJlc29sdmVkUXVlcnlQ
YXJhbXMiKSxvPWkuZ2V0KHRoaXMsImN1cnJlbnQtd2hlbiIpLGE9ISFvO289b3x8aS5nZXQodGhp
cywicXVhbGlmaWVkUm91dGVOYW1lIiksbz1vLnNwbGl0KCIgIik7Zm9yKHZhciBzPTAsdT1vLmxl
bmd0aDtzPHU7cysrKWlmKHQuaXNBY3RpdmVGb3JSb3V0ZShyLG4sb1tzXSxlLGEpKXJldHVybiBp
LmdldCh0aGlzLCJhY3RpdmVDbGFzcyIpO3JldHVybiExfSxhY3RpdmU6by5jb21wdXRlZCgiYXR0
cnMucGFyYW1zIiwiX3JvdXRpbmcuY3VycmVudFN0YXRlIixmdW5jdGlvbigpe3ZhciBlPWkuZ2V0
KHRoaXMsIl9yb3V0aW5nLmN1cnJlbnRTdGF0ZSIpO3JldHVybiEhZSYmdGhpcy5fY29tcHV0ZUFj
dGl2ZShlKX0pLHdpbGxCZUFjdGl2ZTpvLmNvbXB1dGVkKCJfcm91dGluZy50YXJnZXRTdGF0ZSIs
ZnVuY3Rpb24oKXt2YXIgZT1pLmdldCh0aGlzLCJfcm91dGluZyIpLHQ9aS5nZXQoZSwidGFyZ2V0
U3RhdGUiKTtpZihpLmdldChlLCJjdXJyZW50U3RhdGUiKSE9PXQpcmV0dXJuISF0aGlzLl9jb21w
dXRlQWN0aXZlKHQpfSksdHJhbnNpdGlvbmluZ0luOm8uY29tcHV0ZWQoImFjdGl2ZSIsIndpbGxC
ZUFjdGl2ZSIsZnVuY3Rpb24oKXt2YXIgZT1pLmdldCh0aGlzLCJ3aWxsQmVBY3RpdmUiKTtyZXR1
cm4idW5kZWZpbmVkIiE9dHlwZW9mIGUmJighaS5nZXQodGhpcywiYWN0aXZlIikmJmUmJiJlbWJl
ci10cmFuc2l0aW9uaW5nLWluIil9KSx0cmFuc2l0aW9uaW5nT3V0Om8uY29tcHV0ZWQoImFjdGl2
ZSIsIndpbGxCZUFjdGl2ZSIsZnVuY3Rpb24oKXt2YXIgZT1pLmdldCh0aGlzLCJ3aWxsQmVBY3Rp
dmUiKTtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIGUmJihpLmdldCh0aGlzLCJhY3RpdmUiKSYm
IWUmJiJlbWJlci10cmFuc2l0aW9uaW5nLW91dCIpfSksX2ludm9rZTpmdW5jdGlvbihlKXtpZigh
cy5pc1NpbXBsZUNsaWNrKGUpKXJldHVybiEwO3ZhciB0PWkuZ2V0KHRoaXMsInByZXZlbnREZWZh
dWx0Iiksbj1pLmdldCh0aGlzLCJ0YXJnZXQiKTtpZih0IT09ITEmJihuJiYiX3NlbGYiIT09bnx8
ZS5wcmV2ZW50RGVmYXVsdCgpKSxpLmdldCh0aGlzLCJidWJibGVzIik9PT0hMSYmZS5zdG9wUHJv
cGFnYXRpb24oKSxpLmdldCh0aGlzLCJfaXNEaXNhYmxlZCIpKXJldHVybiExO2lmKGkuZ2V0KHRo
aXMsImxvYWRpbmciKSlyZXR1cm4gci5kZWZhdWx0Lndhcm4oIlRoaXMgbGluay10byBpcyBpbiBh
biBpbmFjdGl2ZSBsb2FkaW5nIHN0YXRlIGJlY2F1c2UgYXQgbGVhc3Qgb25lIG9mIGl0cyBwYXJh
bWV0ZXJzIHByZXNlbnRseSBoYXMgYSBudWxsL3VuZGVmaW5lZCB2YWx1ZSwgb3IgdGhlIHByb3Zp
ZGVkIHJvdXRlIG5hbWUgaXMgaW52YWxpZC4iKSwhMTtpZihuJiYiX3NlbGYiIT09bilyZXR1cm4h
MTt2YXIgbz1pLmdldCh0aGlzLCJfcm91dGluZyIpLGE9aS5nZXQodGhpcywicXVhbGlmaWVkUm91
dGVOYW1lIiksdT1pLmdldCh0aGlzLCJtb2RlbHMiKSxsPWkuZ2V0KHRoaXMsInF1ZXJ5UGFyYW1z
LnZhbHVlcyIpLGM9aS5nZXQodGhpcywicmVwbGFjZSIpO28udHJhbnNpdGlvblRvKGEsdSxsLGMp
fSxxdWVyeVBhcmFtczpudWxsLHF1YWxpZmllZFJvdXRlTmFtZTpvLmNvbXB1dGVkKCJ0YXJnZXRS
b3V0ZU5hbWUiLCJfcm91dGluZy5jdXJyZW50U3RhdGUiLGZ1bmN0aW9uKCl7dmFyIGU9aS5nZXQo
dGhpcywicGFyYW1zIikuc2xpY2UoKSx0PWVbZS5sZW5ndGgtMV07dCYmdC5pc1F1ZXJ5UGFyYW1z
JiZlLnBvcCgpO3ZhciByPXRoaXNbZC5IQVNfQkxPQ0tdPzA9PT1lLmxlbmd0aDoxPT09ZS5sZW5n
dGg7cmV0dXJuIHI/aS5nZXQodGhpcywiX3JvdXRpbmcuY3VycmVudFJvdXRlTmFtZSIpOmkuZ2V0
KHRoaXMsInRhcmdldFJvdXRlTmFtZSIpfSkscmVzb2x2ZWRRdWVyeVBhcmFtczpvLmNvbXB1dGVk
KCJxdWVyeVBhcmFtcyIsZnVuY3Rpb24oKXt2YXIgZT17fSx0PWkuZ2V0KHRoaXMsInF1ZXJ5UGFy
YW1zIik7aWYoIXQpcmV0dXJuIGU7dmFyIHI9dC52YWx1ZXM7Zm9yKHZhciBuIGluIHIpci5oYXNP
d25Qcm9wZXJ0eShuKSYmKGVbbl09cltuXSk7cmV0dXJuIGV9KSxocmVmOm8uY29tcHV0ZWQoIm1v
ZGVscyIsInF1YWxpZmllZFJvdXRlTmFtZSIsZnVuY3Rpb24oKXtpZigiYSI9PT1pLmdldCh0aGlz
LCJ0YWdOYW1lIikpe3ZhciBlPWkuZ2V0KHRoaXMsInF1YWxpZmllZFJvdXRlTmFtZSIpLHQ9aS5n
ZXQodGhpcywibW9kZWxzIik7aWYoaS5nZXQodGhpcywibG9hZGluZyIpKXJldHVybiBpLmdldCh0
aGlzLCJsb2FkaW5nSHJlZiIpO3ZhciByPWkuZ2V0KHRoaXMsIl9yb3V0aW5nIiksbj1pLmdldCh0
aGlzLCJxdWVyeVBhcmFtcy52YWx1ZXMiKTtyZXR1cm4gci5nZW5lcmF0ZVVSTChlLHQsbil9fSks
bG9hZGluZzpvLmNvbXB1dGVkKCJfbW9kZWxzQXJlTG9hZGVkIiwicXVhbGlmaWVkUm91dGVOYW1l
IixmdW5jdGlvbigpe3ZhciBlPWkuZ2V0KHRoaXMsInF1YWxpZmllZFJvdXRlTmFtZSIpLHQ9aS5n
ZXQodGhpcywiX21vZGVsc0FyZUxvYWRlZCIpO2lmKCF0fHxudWxsPT1lKXJldHVybiBpLmdldCh0
aGlzLCJsb2FkaW5nQ2xhc3MiKX0pLF9tb2RlbHNBcmVMb2FkZWQ6by5jb21wdXRlZCgibW9kZWxz
IixmdW5jdGlvbigpe2Zvcih2YXIgZT1pLmdldCh0aGlzLCJtb2RlbHMiKSx0PTAscj1lLmxlbmd0
aDt0PHI7dCsrKWlmKG51bGw9PWVbdF0pcmV0dXJuITE7cmV0dXJuITB9KSxfZ2V0TW9kZWxzOmZ1
bmN0aW9uKGUpe2Zvcih2YXIgdD1lLmxlbmd0aC0xLHI9bmV3IEFycmF5KHQpLG49MDtuPHQ7bisr
KXtmb3IodmFyIGk9ZVtuKzFdO2YuZGVmYXVsdC5kZXRlY3QoaSk7KWk9aS5nZXQoIm1vZGVsIik7
cltuXT1pfXJldHVybiByfSxsb2FkaW5nSHJlZjoiIyIsd2lsbFJlbmRlcjpmdW5jdGlvbigpe3Zh
ciBlPXZvaWQgMCx0PWkuZ2V0KHRoaXMsInBhcmFtcyIpLnNsaWNlKCkscj1pLmdldCh0aGlzLCJk
aXNhYmxlZFdoZW4iKTt2b2lkIDAhPT1yJiZ0aGlzLnNldCgiZGlzYWJsZWQiLHIpLHRoaXNbZC5I
QVNfQkxPQ0tdfHx0aGlzLnNldCgibGlua1RpdGxlIix0LnNoaWZ0KCkpLHRoaXMuc2V0KCJ0YXJn
ZXRSb3V0ZU5hbWUiLHRbMF0pO3ZhciBuPXRbdC5sZW5ndGgtMV07ZT1uJiZuLmlzUXVlcnlQYXJh
bXM/dC5wb3AoKTp7fSx0aGlzLnNldCgicXVlcnlQYXJhbXMiLGUpLHQubGVuZ3RoPjE/dGhpcy5z
ZXQoIm1vZGVscyIsdGhpcy5fZ2V0TW9kZWxzKHQpKTp0aGlzLnNldCgibW9kZWxzIixbXSl9fSk7
di50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJMaW5rQ29tcG9uZW50In0sdi5yZW9wZW5DbGFz
cyh7cG9zaXRpb25hbFBhcmFtczoicGFyYW1zIn0pLGUuZGVmYXVsdD12fSksZSgiZW1iZXItcm91
dGluZy12aWV3cy9pbmRleCIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvY29yZSIsImVtYmVyLXJv
dXRpbmctdmlld3MvY29tcG9uZW50cy9saW5rLXRvIiwiZW1iZXItcm91dGluZy12aWV3cy92aWV3
cy9vdXRsZXQiXSxmdW5jdGlvbihlLHQscixuKXsidXNlIHN0cmljdCI7dC5kZWZhdWx0LkxpbmtD
b21wb25lbnQ9ci5kZWZhdWx0LHQuZGVmYXVsdC5PdXRsZXRWaWV3PW4uT3V0bGV0VmlldyxlLmRl
ZmF1bHQ9dC5kZWZhdWx0fSksZSgiZW1iZXItcm91dGluZy12aWV3cy92aWV3cy9vdXRsZXQiLFsi
ZXhwb3J0cyIsImVtYmVyLXZpZXdzL3ZpZXdzL3ZpZXciLCJlbWJlci1odG1sYmFycy90ZW1wbGF0
ZXMvdG9wLWxldmVsLXZpZXciXSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXQu
ZGVmYXVsdC5leHRlbmQoe2RlZmF1bHRUZW1wbGF0ZTpyLmRlZmF1bHQsaW5pdDpmdW5jdGlvbigp
e3RoaXMuX3N1cGVyKCksdGhpcy5fb3V0bGV0cz1bXX0sc2V0T3V0bGV0U3RhdGU6ZnVuY3Rpb24o
ZSl7dGhpcy5vdXRsZXRTdGF0ZT17bWFpbjplfSx0aGlzLmVudiYmKHRoaXMuZW52Lm91dGxldFN0
YXRlPXRoaXMub3V0bGV0U3RhdGUpLHRoaXMubGFzdFJlc3VsdCYmKHRoaXMuZGlydHlPdXRsZXRz
KCksdGhpcy5fb3V0bGV0cz1bXSx0aGlzLnNjaGVkdWxlUmV2YWxpZGF0ZShudWxsLG51bGwpKX0s
ZGlydHlPdXRsZXRzOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPTA7ZTx0aGlzLl9vdXRsZXRzLmxlbmd0
aDtlKyspdGhpcy5fb3V0bGV0c1tlXS5pc0RpcnR5PSEwfX0pO2UuQ29yZU91dGxldFZpZXc9bjt2
YXIgaT1uLmV4dGVuZCh7dGFnTmFtZToiIn0pO2UuT3V0bGV0Vmlldz1pfSksZSgiZW1iZXItcm91
dGluZy9leHQvY29udHJvbGxlciIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvcHJvcGVydHlfZ2V0
IiwiZW1iZXItcnVudGltZS9taXhpbnMvY29udHJvbGxlciJdLGZ1bmN0aW9uKGUsdCxyKXsidXNl
IHN0cmljdCI7ci5kZWZhdWx0LnJlb3Blbih7Y29uY2F0ZW5hdGVkUHJvcGVydGllczpbInF1ZXJ5
UGFyYW1zIl0scXVlcnlQYXJhbXM6bnVsbCxfcXBEZWxlZ2F0ZTpudWxsLF9xcENoYW5nZWQ6ZnVu
Y3Rpb24oZSxyKXt2YXIgbj1yLnN1YnN0cigwLHIubGVuZ3RoLTMpLGk9ZS5fcXBEZWxlZ2F0ZSxv
PXQuZ2V0KGUsbik7aShuLG8pfSx0cmFuc2l0aW9uVG9Sb3V0ZTpmdW5jdGlvbigpe3ZhciBlPXQu
Z2V0KHRoaXMsInRhcmdldCIpLHI9ZS50cmFuc2l0aW9uVG9Sb3V0ZXx8ZS50cmFuc2l0aW9uVG87
cmV0dXJuIHIuYXBwbHkoZSxhcmd1bWVudHMpfSxyZXBsYWNlUm91dGU6ZnVuY3Rpb24oKXt2YXIg
ZT10LmdldCh0aGlzLCJ0YXJnZXQiKSxyPWUucmVwbGFjZVJvdXRlfHxlLnJlcGxhY2VXaXRoO3Jl
dHVybiByLmFwcGx5KGUsYXJndW1lbnRzKX19KSxlLmRlZmF1bHQ9ci5kZWZhdWx0fSksZSgiZW1i
ZXItcm91dGluZy9leHQvcnVuX2xvb3AiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL3J1bl9sb29w
Il0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7dC5kZWZhdWx0Ll9hZGRRdWV1ZSgicm91dGVy
VHJhbnNpdGlvbnMiLCJhY3Rpb25zIil9KSxlKCJlbWJlci1yb3V0aW5nL2luZGV4IixbImV4cG9y
dHMiLCJlbWJlci1tZXRhbC9jb3JlIiwiZW1iZXItcm91dGluZy9leHQvcnVuX2xvb3AiLCJlbWJl
ci1yb3V0aW5nL2V4dC9jb250cm9sbGVyIiwiZW1iZXItcm91dGluZy9sb2NhdGlvbi9hcGkiLCJl
bWJlci1yb3V0aW5nL2xvY2F0aW9uL25vbmVfbG9jYXRpb24iLCJlbWJlci1yb3V0aW5nL2xvY2F0
aW9uL2hhc2hfbG9jYXRpb24iLCJlbWJlci1yb3V0aW5nL2xvY2F0aW9uL2hpc3RvcnlfbG9jYXRp
b24iLCJlbWJlci1yb3V0aW5nL2xvY2F0aW9uL2F1dG9fbG9jYXRpb24iLCJlbWJlci1yb3V0aW5n
L3N5c3RlbS9nZW5lcmF0ZV9jb250cm9sbGVyIiwiZW1iZXItcm91dGluZy9zeXN0ZW0vY29udHJv
bGxlcl9mb3IiLCJlbWJlci1yb3V0aW5nL3N5c3RlbS9kc2wiLCJlbWJlci1yb3V0aW5nL3N5c3Rl
bS9yb3V0ZXIiLCJlbWJlci1yb3V0aW5nL3N5c3RlbS9yb3V0ZSJdLGZ1bmN0aW9uKGUsdCxyLG4s
aSxvLGEscyx1LGwsYyxmLGQscCl7InVzZSBzdHJpY3QiO3QuZGVmYXVsdC5Mb2NhdGlvbj1pLmRl
ZmF1bHQsdC5kZWZhdWx0LkF1dG9Mb2NhdGlvbj11LmRlZmF1bHQsdC5kZWZhdWx0Lkhhc2hMb2Nh
dGlvbj1hLmRlZmF1bHQsdC5kZWZhdWx0Lkhpc3RvcnlMb2NhdGlvbj1zLmRlZmF1bHQsdC5kZWZh
dWx0Lk5vbmVMb2NhdGlvbj1vLmRlZmF1bHQsdC5kZWZhdWx0LmNvbnRyb2xsZXJGb3I9Yy5kZWZh
dWx0LHQuZGVmYXVsdC5nZW5lcmF0ZUNvbnRyb2xsZXJGYWN0b3J5PWwuZ2VuZXJhdGVDb250cm9s
bGVyRmFjdG9yeSx0LmRlZmF1bHQuZ2VuZXJhdGVDb250cm9sbGVyPWwuZGVmYXVsdCx0LmRlZmF1
bHQuUm91dGVyRFNMPWYuZGVmYXVsdCx0LmRlZmF1bHQuUm91dGVyPWQuZGVmYXVsdCx0LmRlZmF1
bHQuUm91dGU9cC5kZWZhdWx0LGUuZGVmYXVsdD10LmRlZmF1bHR9KSxlKCJlbWJlci1yb3V0aW5n
L2xvY2F0aW9uL2FwaSIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvZGVidWciLCJlbWJlci1tZXRh
bC9lbnZpcm9ubWVudCIsImVtYmVyLXJvdXRpbmcvbG9jYXRpb24vdXRpbCJdLGZ1bmN0aW9uKGUs
dCxyLG4peyJ1c2Ugc3RyaWN0IjtlLmRlZmF1bHQ9e2NyZWF0ZTpmdW5jdGlvbihlKXt2YXIgdD1l
JiZlLmltcGxlbWVudGF0aW9uLHI9dGhpcy5pbXBsZW1lbnRhdGlvbnNbdF07cmV0dXJuIHIuY3Jl
YXRlLmFwcGx5KHIsYXJndW1lbnRzKX0saW1wbGVtZW50YXRpb25zOnt9LF9sb2NhdGlvbjpyLmRl
ZmF1bHQubG9jYXRpb24sX2dldEhhc2g6ZnVuY3Rpb24oKXtyZXR1cm4gbi5nZXRIYXNoKHRoaXMu
bG9jYXRpb24pfX19KSxlKCJlbWJlci1yb3V0aW5nL2xvY2F0aW9uL2F1dG9fbG9jYXRpb24iLFsi
ZXhwb3J0cyIsImVtYmVyLW1ldGFsL2RlYnVnIiwiZW1iZXItbWV0YWwvcHJvcGVydHlfZ2V0Iiwi
ZW1iZXItbWV0YWwvcHJvcGVydHlfc2V0IiwiZW1iZXItbWV0YWwvdXRpbHMiLCJjb250YWluZXIv
b3duZXIiLCJlbWJlci1ydW50aW1lL3N5c3RlbS9vYmplY3QiLCJlbWJlci1tZXRhbC9lbnZpcm9u
bWVudCIsImVtYmVyLXJvdXRpbmcvbG9jYXRpb24vdXRpbCJdLGZ1bmN0aW9uKGUsdCxyLG4saSxv
LGEscyx1KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbChlKXtyZXR1cm4gZnVuY3Rpb24oKXtmb3Io
dmFyIHQ9ci5nZXQodGhpcywiY29uY3JldGVJbXBsZW1lbnRhdGlvbiIpLG49YXJndW1lbnRzLmxl
bmd0aCxvPUFycmF5KG4pLGE9MDthPG47YSsrKW9bYV09YXJndW1lbnRzW2FdO3JldHVybiBpLnRy
eUludm9rZSh0LGUsbyl9fWZ1bmN0aW9uIGMoZSl7dmFyIHQ9ZS5sb2NhdGlvbixyPWUudXNlckFn
ZW50LG49ZS5oaXN0b3J5LGk9ZS5kb2N1bWVudE1vZGUsbz1lLmdsb2JhbCxhPWUucm9vdFVSTCxz
PSJub25lIixsPSExLGM9dS5nZXRGdWxsUGF0aCh0KTtpZih1LnN1cHBvcnRzSGlzdG9yeShyLG4p
KXt2YXIgcD1mKGEsdCk7aWYoYz09PXApcmV0dXJuImhpc3RvcnkiOyIvIyI9PT1jLnN1YnN0cigw
LDIpPyhuLnJlcGxhY2VTdGF0ZSh7cGF0aDpwfSxudWxsLHApLHM9Imhpc3RvcnkiKToobD0hMCx1
LnJlcGxhY2VQYXRoKHQscCkpfWVsc2UgaWYodS5zdXBwb3J0c0hhc2hDaGFuZ2UoaSxvKSl7dmFy
IGg9ZChhLHQpO2M9PT1ofHwiLyI9PT1jJiYiLyMvIj09PWg/cz0iaGFzaCI6KGw9ITAsdS5yZXBs
YWNlUGF0aCh0LGgpKX1yZXR1cm4hbCYmc31mdW5jdGlvbiBmKGUsdCl7dmFyIHIsbixpPXUuZ2V0
UGF0aCh0KSxvPXUuZ2V0SGFzaCh0KSxhPXUuZ2V0UXVlcnkodCk7aS5pbmRleE9mKGUpO3JldHVy
biIjLyI9PT1vLnN1YnN0cigwLDIpPyhuPW8uc3Vic3RyKDEpLnNwbGl0KCIjIikscj1uLnNoaWZ0
KCksIi8iPT09aS5zbGljZSgtMSkmJihyPXIuc3Vic3RyKDEpKSxpPWkrcithLG4ubGVuZ3RoJiYo
aSs9IiMiK24uam9pbigiIyIpKSk6aT1pK2ErbyxpfWZ1bmN0aW9uIGQoZSx0KXt2YXIgcj1lLG49
ZihlLHQpLGk9bi5zdWJzdHIoZS5sZW5ndGgpO3JldHVybiIiIT09aSYmKCIvIiE9PWkuY2hhckF0
KDApJiYoaT0iLyIraSkscis9IiMiK2kpLHJ9ZS5nZXRIaXN0b3J5UGF0aD1mLGUuZ2V0SGFzaFBh
dGg9ZCxlLmRlZmF1bHQ9YS5kZWZhdWx0LmV4dGVuZCh7bG9jYXRpb246cy5kZWZhdWx0LmxvY2F0
aW9uLGhpc3Rvcnk6cy5kZWZhdWx0Lmhpc3RvcnksZ2xvYmFsOnMuZGVmYXVsdC5nbG9iYWwsdXNl
ckFnZW50OnMuZGVmYXVsdC51c2VyQWdlbnQsY2FuY2VsUm91dGVyU2V0dXA6ITEscm9vdFVSTDoi
LyIsZGV0ZWN0OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5yb290VVJMLHQ9Yyh7bG9jYXRpb246dGhp
cy5sb2NhdGlvbixoaXN0b3J5OnRoaXMuaGlzdG9yeSx1c2VyQWdlbnQ6dGhpcy51c2VyQWdlbnQs
cm9vdFVSTDplLGRvY3VtZW50TW9kZTp0aGlzLmRvY3VtZW50TW9kZSxnbG9iYWw6dGhpcy5nbG9i
YWx9KTt0PT09ITEmJihuLnNldCh0aGlzLCJjYW5jZWxSb3V0ZXJTZXR1cCIsITApLHQ9Im5vbmUi
KTt2YXIgcj1vLmdldE93bmVyKHRoaXMpLmxvb2t1cCgibG9jYXRpb246Iit0KTtuLnNldChyLCJy
b290VVJMIixlKSxuLnNldCh0aGlzLCJjb25jcmV0ZUltcGxlbWVudGF0aW9uIixyKX0saW5pdFN0
YXRlOmwoImluaXRTdGF0ZSIpLGdldFVSTDpsKCJnZXRVUkwiKSxzZXRVUkw6bCgic2V0VVJMIiks
cmVwbGFjZVVSTDpsKCJyZXBsYWNlVVJMIiksb25VcGRhdGVVUkw6bCgib25VcGRhdGVVUkwiKSxm
b3JtYXRVUkw6bCgiZm9ybWF0VVJMIiksd2lsbERlc3Ryb3k6ZnVuY3Rpb24oKXt2YXIgZT1yLmdl
dCh0aGlzLCJjb25jcmV0ZUltcGxlbWVudGF0aW9uIik7ZSYmZS5kZXN0cm95KCl9fSl9KSxlKCJl
bWJlci1yb3V0aW5nL2xvY2F0aW9uL2hhc2hfbG9jYXRpb24iLFsiZXhwb3J0cyIsImVtYmVyLW1l
dGFsL3Byb3BlcnR5X2dldCIsImVtYmVyLW1ldGFsL3Byb3BlcnR5X3NldCIsImVtYmVyLW1ldGFs
L3J1bl9sb29wIiwiZW1iZXItbWV0YWwvdXRpbHMiLCJlbWJlci1ydW50aW1lL3N5c3RlbS9vYmpl
Y3QiLCJlbWJlci1yb3V0aW5nL2xvY2F0aW9uL2FwaSIsImVtYmVyLXZpZXdzL3N5c3RlbS9qcXVl
cnkiXSxmdW5jdGlvbihlLHQscixuLGksbyxhLHMpeyJ1c2Ugc3RyaWN0IjtlLmRlZmF1bHQ9by5k
ZWZhdWx0LmV4dGVuZCh7aW1wbGVtZW50YXRpb246Imhhc2giLGluaXQ6ZnVuY3Rpb24oKXtyLnNl
dCh0aGlzLCJsb2NhdGlvbiIsdC5nZXQodGhpcywiX2xvY2F0aW9uIil8fHdpbmRvdy5sb2NhdGlv
bil9LGdldEhhc2g6YS5kZWZhdWx0Ll9nZXRIYXNoLGdldFVSTDpmdW5jdGlvbigpe3ZhciBlPXRo
aXMuZ2V0SGFzaCgpLnN1YnN0cigxKSx0PWU7cmV0dXJuIi8iIT09dC5jaGFyQXQoMCkmJih0PSIv
IixlJiYodCs9IiMiK2UpKSx0fSxzZXRVUkw6ZnVuY3Rpb24oZSl7dC5nZXQodGhpcywibG9jYXRp
b24iKS5oYXNoPWUsci5zZXQodGhpcywibGFzdFNldFVSTCIsZSl9LHJlcGxhY2VVUkw6ZnVuY3Rp
b24oZSl7dC5nZXQodGhpcywibG9jYXRpb24iKS5yZXBsYWNlKCIjIitlKSxyLnNldCh0aGlzLCJs
YXN0U2V0VVJMIixlKX0sb25VcGRhdGVVUkw6ZnVuY3Rpb24oZSl7dmFyIG89dGhpcyxhPWkuZ3Vp
ZEZvcih0aGlzKTtzLmRlZmF1bHQod2luZG93KS5vbigiaGFzaGNoYW5nZS5lbWJlci1sb2NhdGlv
bi0iK2EsZnVuY3Rpb24oKXtuLmRlZmF1bHQoZnVuY3Rpb24oKXt2YXIgbj1vLmdldFVSTCgpO3Qu
Z2V0KG8sImxhc3RTZXRVUkwiKSE9PW4mJihyLnNldChvLCJsYXN0U2V0VVJMIixudWxsKSxlKG4p
KX0pfSl9LGZvcm1hdFVSTDpmdW5jdGlvbihlKXtyZXR1cm4iIyIrZX0sd2lsbERlc3Ryb3k6ZnVu
Y3Rpb24oKXt2YXIgZT1pLmd1aWRGb3IodGhpcyk7cy5kZWZhdWx0KHdpbmRvdykub2ZmKCJoYXNo
Y2hhbmdlLmVtYmVyLWxvY2F0aW9uLSIrZSl9fSl9KSxlKCJlbWJlci1yb3V0aW5nL2xvY2F0aW9u
L2hpc3RvcnlfbG9jYXRpb24iLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL3Byb3BlcnR5X2dldCIs
ImVtYmVyLW1ldGFsL3Byb3BlcnR5X3NldCIsImVtYmVyLW1ldGFsL3V0aWxzIiwiZW1iZXItcnVu
dGltZS9zeXN0ZW0vb2JqZWN0IiwiZW1iZXItcm91dGluZy9sb2NhdGlvbi9hcGkiLCJlbWJlci12
aWV3cy9zeXN0ZW0vanF1ZXJ5Il0sZnVuY3Rpb24oZSx0LHIsbixpLG8sYSl7InVzZSBzdHJpY3Qi
O3ZhciBzPSExO2UuZGVmYXVsdD1pLmRlZmF1bHQuZXh0ZW5kKHtpbXBsZW1lbnRhdGlvbjoiaGlz
dG9yeSIsaW5pdDpmdW5jdGlvbigpe3Iuc2V0KHRoaXMsImxvY2F0aW9uIix0LmdldCh0aGlzLCJs
b2NhdGlvbiIpfHx3aW5kb3cubG9jYXRpb24pLHIuc2V0KHRoaXMsImJhc2VVUkwiLGEuZGVmYXVs
dCgiYmFzZSIpLmF0dHIoImhyZWYiKXx8IiIpfSxpbml0U3RhdGU6ZnVuY3Rpb24oKXt2YXIgZT10
LmdldCh0aGlzLCJoaXN0b3J5Iil8fHdpbmRvdy5oaXN0b3J5O3Iuc2V0KHRoaXMsImhpc3Rvcnki
LGUpLGUmJiJzdGF0ZSJpbiBlJiYodGhpcy5zdXBwb3J0c0hpc3Rvcnk9ITApLHRoaXMucmVwbGFj
ZVN0YXRlKHRoaXMuZm9ybWF0VVJMKHRoaXMuZ2V0VVJMKCkpKX0scm9vdFVSTDoiLyIsZ2V0VVJM
OmZ1bmN0aW9uKCl7dmFyIGU9dC5nZXQodGhpcywibG9jYXRpb24iKSxyPWUucGF0aG5hbWUsbj10
LmdldCh0aGlzLCJyb290VVJMIiksaT10LmdldCh0aGlzLCJiYXNlVVJMIik7bj1uLnJlcGxhY2Uo
L1wvJC8sIiIpLGk9aS5yZXBsYWNlKC9cLyQvLCIiKTt2YXIgbz1yLnJlcGxhY2UobmV3IFJlZ0V4
cCgiXiIraSsiKD89L3wkKSIpLCIiKS5yZXBsYWNlKG5ldyBSZWdFeHAoIl4iK24rIig/PS98JCki
KSwiIiksYT1lLnNlYXJjaHx8IiI7cmV0dXJuIG8rPWEsbys9dGhpcy5nZXRIYXNoKCl9LHNldFVS
TDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLmdldFN0YXRlKCk7ZT10aGlzLmZvcm1hdFVSTChlKSx0
JiZ0LnBhdGg9PT1lfHx0aGlzLnB1c2hTdGF0ZShlKX0scmVwbGFjZVVSTDpmdW5jdGlvbihlKXt2
YXIgdD10aGlzLmdldFN0YXRlKCk7ZT10aGlzLmZvcm1hdFVSTChlKSx0JiZ0LnBhdGg9PT1lfHx0
aGlzLnJlcGxhY2VTdGF0ZShlKX0sZ2V0U3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdXBw
b3J0c0hpc3Rvcnk/dC5nZXQodGhpcywiaGlzdG9yeSIpLnN0YXRlOnRoaXMuX2hpc3RvcnlTdGF0
ZX0scHVzaFN0YXRlOmZ1bmN0aW9uKGUpe3ZhciByPXtwYXRoOmV9O3QuZ2V0KHRoaXMsImhpc3Rv
cnkiKS5wdXNoU3RhdGUocixudWxsLGUpLHRoaXMuX2hpc3RvcnlTdGF0ZT1yLHRoaXMuX3ByZXZp
b3VzVVJMPXRoaXMuZ2V0VVJMKCl9LHJlcGxhY2VTdGF0ZTpmdW5jdGlvbihlKXt2YXIgcj17cGF0
aDplfTt0LmdldCh0aGlzLCJoaXN0b3J5IikucmVwbGFjZVN0YXRlKHIsbnVsbCxlKSx0aGlzLl9o
aXN0b3J5U3RhdGU9cix0aGlzLl9wcmV2aW91c1VSTD10aGlzLmdldFVSTCgpfSxvblVwZGF0ZVVS
TDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLHI9bi5ndWlkRm9yKHRoaXMpO2EuZGVmYXVsdCh3aW5k
b3cpLm9uKCJwb3BzdGF0ZS5lbWJlci1sb2NhdGlvbi0iK3IsZnVuY3Rpb24ocil7KHN8fChzPSEw
LHQuZ2V0VVJMKCkhPT10Ll9wcmV2aW91c1VSTCkpJiZlKHQuZ2V0VVJMKCkpfSl9LGZvcm1hdFVS
TDpmdW5jdGlvbihlKXt2YXIgcj10LmdldCh0aGlzLCJyb290VVJMIiksbj10LmdldCh0aGlzLCJi
YXNlVVJMIik7cmV0dXJuIiIhPT1lPyhyPXIucmVwbGFjZSgvXC8kLywiIiksbj1uLnJlcGxhY2Uo
L1wvJC8sIiIpKTpuLm1hdGNoKC9eXC8vKSYmci5tYXRjaCgvXlwvLykmJihuPW4ucmVwbGFjZSgv
XC8kLywiIikpLG4rcitlfSx3aWxsRGVzdHJveTpmdW5jdGlvbigpe3ZhciBlPW4uZ3VpZEZvcih0
aGlzKTthLmRlZmF1bHQod2luZG93KS5vZmYoInBvcHN0YXRlLmVtYmVyLWxvY2F0aW9uLSIrZSl9
LGdldEhhc2g6by5kZWZhdWx0Ll9nZXRIYXNofSl9KSxlKCJlbWJlci1yb3V0aW5nL2xvY2F0aW9u
L25vbmVfbG9jYXRpb24iLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL2RlYnVnIiwiZW1iZXItbWV0
YWwvcHJvcGVydHlfZ2V0IiwiZW1iZXItbWV0YWwvcHJvcGVydHlfc2V0IiwiZW1iZXItcnVudGlt
ZS9zeXN0ZW0vb2JqZWN0Il0sZnVuY3Rpb24oZSx0LHIsbixpKXsidXNlIHN0cmljdCI7ZS5kZWZh
dWx0PWkuZGVmYXVsdC5leHRlbmQoe2ltcGxlbWVudGF0aW9uOiJub25lIixwYXRoOiIiLGRldGVj
dDpmdW5jdGlvbigpe3RoaXMucm9vdFVSTH0scm9vdFVSTDoiLyIsZ2V0VVJMOmZ1bmN0aW9uKCl7
dmFyIGU9ci5nZXQodGhpcywicGF0aCIpLHQ9ci5nZXQodGhpcywicm9vdFVSTCIpO3JldHVybiB0
PXQucmVwbGFjZSgvXC8kLywiIiksZS5yZXBsYWNlKG5ldyBSZWdFeHAoIl4iK3QrIig/PS98JCki
KSwiIil9LHNldFVSTDpmdW5jdGlvbihlKXtuLnNldCh0aGlzLCJwYXRoIixlKX0sb25VcGRhdGVV
Ukw6ZnVuY3Rpb24oZSl7dGhpcy51cGRhdGVDYWxsYmFjaz1lfSxoYW5kbGVVUkw6ZnVuY3Rpb24o
ZSl7bi5zZXQodGhpcywicGF0aCIsZSksdGhpcy51cGRhdGVDYWxsYmFjayhlKX0sZm9ybWF0VVJM
OmZ1bmN0aW9uKGUpe3ZhciB0PXIuZ2V0KHRoaXMsInJvb3RVUkwiKTtyZXR1cm4iIiE9PWUmJih0
PXQucmVwbGFjZSgvXC8kLywiIikpLHQrZX19KX0pLGUoImVtYmVyLXJvdXRpbmcvbG9jYXRpb24v
dXRpbCIsWyJleHBvcnRzIl0sZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHQoZSl7
dmFyIHQ9ZS5wYXRobmFtZTtyZXR1cm4iLyIhPT10LmNoYXJBdCgwKSYmKHQ9Ii8iK3QpLHR9ZnVu
Y3Rpb24gcihlKXtyZXR1cm4gZS5zZWFyY2h9ZnVuY3Rpb24gbihlKXt2YXIgdD1lLmhyZWYscj10
LmluZGV4T2YoIiMiKTtyZXR1cm4gcj09PS0xPyIiOnQuc3Vic3RyKHIpfWZ1bmN0aW9uIGkoZSl7
cmV0dXJuIHQoZSkrcihlKStuKGUpfWZ1bmN0aW9uIG8oZSl7dmFyIHQ9ZS5vcmlnaW47cmV0dXJu
IHR8fCh0PWUucHJvdG9jb2wrIi8vIitlLmhvc3RuYW1lLGUucG9ydCYmKHQrPSI6IitlLnBvcnQp
KSx0fWZ1bmN0aW9uIGEoZSx0KXtyZXR1cm4ib25oYXNoY2hhbmdlImluIHQmJih2b2lkIDA9PT1l
fHxlPjcpfWZ1bmN0aW9uIHMoZSx0KXtyZXR1cm4oZS5pbmRleE9mKCJBbmRyb2lkIDIuIik9PT0t
MSYmZS5pbmRleE9mKCJBbmRyb2lkIDQuMCIpPT09LTF8fGUuaW5kZXhPZigiTW9iaWxlIFNhZmFy
aSIpPT09LTF8fGUuaW5kZXhPZigiQ2hyb21lIikhPT0tMXx8ZS5pbmRleE9mKCJXaW5kb3dzIFBo
b25lIikhPT0tMSkmJiEhKHQmJiJwdXNoU3RhdGUiaW4gdCl9ZnVuY3Rpb24gdShlLHQpe2UucmVw
bGFjZShvKGUpK3QpfWUuZ2V0UGF0aD10LGUuZ2V0UXVlcnk9cixlLmdldEhhc2g9bixlLmdldEZ1
bGxQYXRoPWksZS5nZXRPcmlnaW49byxlLnN1cHBvcnRzSGFzaENoYW5nZT1hLGUuc3VwcG9ydHNI
aXN0b3J5PXMsZS5yZXBsYWNlUGF0aD11fSksZSgiZW1iZXItcm91dGluZy9zZXJ2aWNlcy9yb3V0
aW5nIixbImV4cG9ydHMiLCJlbWJlci1ydW50aW1lL3N5c3RlbS9zZXJ2aWNlIiwiZW1iZXItbWV0
YWwvcHJvcGVydHlfZ2V0IiwiZW1iZXItbWV0YWwvY29tcHV0ZWRfbWFjcm9zIiwiZW1iZXItcm91
dGluZy91dGlscyIsImVtYmVyLW1ldGFsL2Fzc2lnbiJdLGZ1bmN0aW9uKGUsdCxyLG4saSxvKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gYShlLHQpe2Zvcih2YXIgcj0wLG49MCxpPXQubGVuZ3RoO248
aSYmKHIrPXRbbl0ubmFtZXMubGVuZ3RoLHRbbl0uaGFuZGxlciE9PWUpO24rKyk7cmV0dXJuIHJ9
ZS5kZWZhdWx0PXQuZGVmYXVsdC5leHRlbmQoe3JvdXRlcjpudWxsLHRhcmdldFN0YXRlOm4ucmVh
ZE9ubHkoInJvdXRlci50YXJnZXRTdGF0ZSIpLGN1cnJlbnRTdGF0ZTpuLnJlYWRPbmx5KCJyb3V0
ZXIuY3VycmVudFN0YXRlIiksY3VycmVudFJvdXRlTmFtZTpuLnJlYWRPbmx5KCJyb3V0ZXIuY3Vy
cmVudFJvdXRlTmFtZSIpLGN1cnJlbnRQYXRoOm4ucmVhZE9ubHkoInJvdXRlci5jdXJyZW50UGF0
aCIpLGF2YWlsYWJsZVJvdXRlczpmdW5jdGlvbigpe3JldHVybiBPYmplY3Qua2V5cyhyLmdldCh0
aGlzLCJyb3V0ZXIiKS5yb3V0ZXIucmVjb2duaXplci5uYW1lcyl9LGhhc1JvdXRlOmZ1bmN0aW9u
KGUpe3JldHVybiByLmdldCh0aGlzLCJyb3V0ZXIiKS5oYXNSb3V0ZShlKX0sdHJhbnNpdGlvblRv
OmZ1bmN0aW9uKGUsdCxuLGkpe3ZhciBvPXIuZ2V0KHRoaXMsInJvdXRlciIpLGE9by5fZG9UcmFu
c2l0aW9uKGUsdCxuKTtpJiZhLm1ldGhvZCgicmVwbGFjZSIpfSxub3JtYWxpemVRdWVyeVBhcmFt
czpmdW5jdGlvbihlLHQsbil7dmFyIGk9ci5nZXQodGhpcywicm91dGVyIik7aS5fcHJlcGFyZVF1
ZXJ5UGFyYW1zKGUsdCxuKX0sZ2VuZXJhdGVVUkw6ZnVuY3Rpb24oZSx0LG4pe3ZhciBhPXIuZ2V0
KHRoaXMsInJvdXRlciIpO2lmKGEucm91dGVyKXt2YXIgcz17fTtvLmRlZmF1bHQocyxuKSx0aGlz
Lm5vcm1hbGl6ZVF1ZXJ5UGFyYW1zKGUsdCxzKTt2YXIgdT1pLnJvdXRlQXJncyhlLHQscyk7cmV0
dXJuIGEuZ2VuZXJhdGUuYXBwbHkoYSx1KX19LGlzQWN0aXZlRm9yUm91dGU6ZnVuY3Rpb24oZSx0
LG4saSxvKXt2YXIgcz1yLmdldCh0aGlzLCJyb3V0ZXIiKSx1PXMucm91dGVyLnJlY29nbml6ZXIu
aGFuZGxlcnNGb3IobiksbD11W3UubGVuZ3RoLTFdLmhhbmRsZXIsYz1hKG4sdSk7cmV0dXJuIGUu
bGVuZ3RoPmMmJihuPWwpLGkuaXNBY3RpdmVJbnRlbnQobixlLHQsIW8pfX0pfSksZSgiZW1iZXIt
cm91dGluZy9zeXN0ZW0vY2FjaGUiLFsiZXhwb3J0cyIsImVtYmVyLXJ1bnRpbWUvc3lzdGVtL29i
amVjdCJdLGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2UuZGVmYXVsdD10LmRlZmF1bHQuZXh0
ZW5kKHtpbml0OmZ1bmN0aW9uKCl7dGhpcy5jYWNoZT17fX0saGFzOmZ1bmN0aW9uKGUpe3JldHVy
biBlIGluIHRoaXMuY2FjaGV9LHN0YXNoOmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj10aGlzLmNhY2hl
W2VdO258fChuPXRoaXMuY2FjaGVbZV09e30pLG5bdF09cn0sbG9va3VwOmZ1bmN0aW9uKGUsdCxy
KXt2YXIgbj10aGlzLmNhY2hlO2lmKCEoZSBpbiBuKSlyZXR1cm4gcjt2YXIgaT1uW2VdO3JldHVy
biB0IGluIGk/aVt0XTpyfSxjYWNoZTpudWxsfSl9KSxlKCJlbWJlci1yb3V0aW5nL3N5c3RlbS9j
b250cm9sbGVyX2ZvciIsWyJleHBvcnRzIl0sZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHQoZSx0LHIpe3JldHVybiBlLmxvb2t1cCgiY29udHJvbGxlcjoiK3Qscil9ZS5kZWZhdWx0
PXR9KSxlKCJlbWJlci1yb3V0aW5nL3N5c3RlbS9kc2wiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFs
L2RlYnVnIl0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe3RoaXMu
cGFyZW50PWUsdGhpcy5lbmFibGVMb2FkaW5nU3Vic3RhdGVzPXQmJnQuZW5hYmxlTG9hZGluZ1N1
YnN0YXRlcyx0aGlzLm1hdGNoZXM9W10sdGhpcy5leHBsaWNpdEluZGV4PXZvaWQgMCx0aGlzLm9w
dGlvbnM9dH1mdW5jdGlvbiBuKGUpe3JldHVybiBlLnBhcmVudCYmImFwcGxpY2F0aW9uIiE9PWUu
cGFyZW50fWZ1bmN0aW9uIGkoZSx0LHIpe3JldHVybiBuKGUpJiZyIT09ITA/ZS5wYXJlbnQrIi4i
K3Q6dH1mdW5jdGlvbiBvKGUsdCxyLG4pe3I9cnx8e307dmFyIG89aShlLHQsci5yZXNldE5hbWVz
cGFjZSk7InN0cmluZyIhPXR5cGVvZiByLnBhdGgmJihyLnBhdGg9Ii8iK3QpLGUucHVzaChyLnBh
dGgsbyxuKX1lLmRlZmF1bHQ9cixyLnByb3RvdHlwZT17cm91dGU6ZnVuY3Rpb24oZSx0LG4pe3Zh
ciBhPSIvX3VudXNlZF9kdW1teV9lcnJvcl9wYXRoX3JvdXRlXyIrZSsiLzplcnJvciI7aWYoMj09
PWFyZ3VtZW50cy5sZW5ndGgmJiJmdW5jdGlvbiI9PXR5cGVvZiB0JiYobj10LHQ9e30pLDE9PT1h
cmd1bWVudHMubGVuZ3RoJiYodD17fSksdGhpcy5lbmFibGVMb2FkaW5nU3Vic3RhdGVzJiYobyh0
aGlzLGUrIl9sb2FkaW5nIix7cmVzZXROYW1lc3BhY2U6dC5yZXNldE5hbWVzcGFjZX0pLG8odGhp
cyxlKyJfZXJyb3IiLHtwYXRoOmF9KSksbil7dmFyIHM9aSh0aGlzLGUsdC5yZXNldE5hbWVzcGFj
ZSksdT1uZXcgcihzLHRoaXMub3B0aW9ucyk7byh1LCJsb2FkaW5nIiksbyh1LCJlcnJvciIse3Bh
dGg6YX0pLG4uY2FsbCh1KSxvKHRoaXMsZSx0LHUuZ2VuZXJhdGUoKSl9ZWxzZSBvKHRoaXMsZSx0
KX0scHVzaDpmdW5jdGlvbihlLHQscil7dmFyIG49dC5zcGxpdCgiLiIpOyIiIT09ZSYmIi8iIT09
ZSYmImluZGV4IiE9PW5bbi5sZW5ndGgtMV18fCh0aGlzLmV4cGxpY2l0SW5kZXg9ITApLHRoaXMu
bWF0Y2hlcy5wdXNoKFtlLHQscl0pfSxyZXNvdXJjZTpmdW5jdGlvbihlLHQscil7Mj09PWFyZ3Vt
ZW50cy5sZW5ndGgmJiJmdW5jdGlvbiI9PXR5cGVvZiB0JiYocj10LHQ9e30pLDE9PT1hcmd1bWVu
dHMubGVuZ3RoJiYodD17fSksdC5yZXNldE5hbWVzcGFjZT0hMCx0aGlzLnJvdXRlKGUsdCxyKX0s
Z2VuZXJhdGU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm1hdGNoZXM7cmV0dXJuIHRoaXMuZXhwbGlj
aXRJbmRleHx8dGhpcy5yb3V0ZSgiaW5kZXgiLHtwYXRoOiIvIn0pLGZ1bmN0aW9uKHQpe2Zvcih2
YXIgcj0wLG49ZS5sZW5ndGg7cjxuO3IrKyl7dmFyIGk9ZVtyXTt0KGlbMF0pLnRvKGlbMV0saVsy
XSl9fX19LHIubWFwPWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyByO3JldHVybiBlLmNhbGwodCksdH19
KSxlKCJlbWJlci1yb3V0aW5nL3N5c3RlbS9nZW5lcmF0ZV9jb250cm9sbGVyIixbImV4cG9ydHMi
LCJlbWJlci1tZXRhbC9kZWJ1ZyIsImVtYmVyLW1ldGFsL3Byb3BlcnR5X2dldCJdLGZ1bmN0aW9u
KGUsdCxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlLHQscil7dmFyIG4saTtyZXR1cm4gbj1l
Ll9sb29rdXBGYWN0b3J5KCJjb250cm9sbGVyOmJhc2ljIikuZXh0ZW5kKHtpc0dlbmVyYXRlZDoh
MCx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiIoZ2VuZXJhdGVkICIrdCsiIGNvbnRyb2xsZXIp
In19KSxpPSJjb250cm9sbGVyOiIrdCxlLnJlZ2lzdGVyKGksbiksbn1mdW5jdGlvbiBpKGUsdCxp
KXtuKGUsdCxpKTt2YXIgbz0iY29udHJvbGxlcjoiK3QsYT1lLmxvb2t1cChvKTtyZXR1cm4gci5n
ZXQoYSwibmFtZXNwYWNlLkxPR19BQ1RJVkVfR0VORVJBVElPTiIpLGF9ZS5nZW5lcmF0ZUNvbnRy
b2xsZXJGYWN0b3J5PW4sZS5kZWZhdWx0PWl9KSxlKCJlbWJlci1yb3V0aW5nL3N5c3RlbS9xdWVy
eV9wYXJhbXMiLFsiZXhwb3J0cyIsImVtYmVyLXJ1bnRpbWUvc3lzdGVtL29iamVjdCJdLGZ1bmN0
aW9uKGUsdCl7InVzZSBzdHJpY3QiO2UuZGVmYXVsdD10LmRlZmF1bHQuZXh0ZW5kKHtpc1F1ZXJ5
UGFyYW1zOiEwLHZhbHVlczpudWxsfSl9KTtlKCJlbWJlci1yb3V0aW5nL3N5c3RlbS9yb3V0ZSIs
WyJleHBvcnRzIiwiZW1iZXItbWV0YWwvY29yZSIsImVtYmVyLW1ldGFsL2RlYnVnIiwiZW1iZXIt
bWV0YWwvZmVhdHVyZXMiLCJlbWJlci1tZXRhbC9lcnJvciIsImVtYmVyLW1ldGFsL3Byb3BlcnR5
X2dldCIsImVtYmVyLW1ldGFsL3Byb3BlcnR5X3NldCIsImVtYmVyLW1ldGFsL2dldF9wcm9wZXJ0
aWVzIiwiZW1iZXItbWV0YWwvaXNfbm9uZSIsImVtYmVyLW1ldGFsL2NvbXB1dGVkIiwiZW1iZXIt
bWV0YWwvYXNzaWduIiwiZW1iZXItcnVudGltZS91dGlscyIsImVtYmVyLW1ldGFsL3J1bl9sb29w
IiwiZW1iZXItcnVudGltZS9jb3B5IiwiZW1iZXItcnVudGltZS9zeXN0ZW0vc3RyaW5nIiwiZW1i
ZXItcnVudGltZS9zeXN0ZW0vb2JqZWN0IiwiZW1iZXItcnVudGltZS9zeXN0ZW0vbmF0aXZlX2Fy
cmF5IiwiZW1iZXItcnVudGltZS9taXhpbnMvZXZlbnRlZCIsImVtYmVyLXJ1bnRpbWUvbWl4aW5z
L2FjdGlvbl9oYW5kbGVyIiwiZW1iZXItcm91dGluZy9zeXN0ZW0vZ2VuZXJhdGVfY29udHJvbGxl
ciIsImVtYmVyLXJvdXRpbmcvdXRpbHMiLCJjb250YWluZXIvb3duZXIiLCJlbWJlci1tZXRhbC9p
c19lbXB0eSJdLGZ1bmN0aW9uKGUsdCxyLG4saSxvLGEscyx1LGwsYyxmLGQscCxoLG0sdixiLGcs
eSxfLHcseCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGsoKXtyZXR1cm4gdGhpc31mdW5jdGlvbiBD
KGUpe3ZhciB0PUUoZSxlLnJvdXRlci5yb3V0ZXIuc3RhdGUuaGFuZGxlckluZm9zLC0xKTtyZXR1
cm4gdCYmdC5oYW5kbGVyfWZ1bmN0aW9uIEUoZSx0LHIpe2lmKHQpZm9yKHZhciBuLGk9cnx8MCxv
PTAsYT10Lmxlbmd0aDtvPGE7bysrKWlmKG49dFtvXS5oYW5kbGVyLG49PT1lKXJldHVybiB0W28r
aV19ZnVuY3Rpb24gTyhlLHQscixuLGEpe3ZhciBzLHUsbCxjLGY9YSYmYS5jb250cm9sbGVyLGQ9
by5nZXQoZS5yb3V0ZXIsIm5hbWVzcGFjZS5MT0dfVklFV19MT09LVVBTIikscD1hJiZhLmludG8m
JmEuaW50by5yZXBsYWNlKC9cLy9nLCIuIiksaD1hJiZhLm91dGxldHx8Im1haW4iLG09dy5nZXRP
d25lcihlKTtpZihuPyhuPW4ucmVwbGFjZSgvXC8vZywiLiIpLHM9bik6KG49ZS5yb3V0ZU5hbWUs
cz1lLnRlbXBsYXRlTmFtZXx8biksZnx8KGY9dD9tLmxvb2t1cCgiY29udHJvbGxlcjoiK24pfHxl
LmNvbnRyb2xsZXJOYW1lfHxlLnJvdXRlTmFtZTplLmNvbnRyb2xsZXJOYW1lfHxtLmxvb2t1cCgi
Y29udHJvbGxlcjoiK24pKSwic3RyaW5nIj09dHlwZW9mIGYpe3ZhciB2PWY7aWYoZj1tLmxvb2t1
cCgiY29udHJvbGxlcjoiK3YpLCFmKXRocm93IG5ldyBpLmRlZmF1bHQoIllvdSBwYXNzZWQgYGNv
bnRyb2xsZXI6ICciK3YrIidgIGludG8gdGhlIGByZW5kZXJgIG1ldGhvZCwgYnV0IG5vIHN1Y2gg
Y29udHJvbGxlciBjb3VsZCBiZSBmb3VuZC4iKX1pZihhJiZPYmplY3Qua2V5cyhhKS5pbmRleE9m
KCJvdXRsZXQiKSE9PS0xJiYidW5kZWZpbmVkIj09dHlwZW9mIGEub3V0bGV0KXRocm93IG5ldyBp
LmRlZmF1bHQoIllvdSBwYXNzZWQgdW5kZWZpbmVkIGFzIHRoZSBvdXRsZXQgbmFtZS4iKTthJiZh
Lm1vZGVsJiZmLnNldCgibW9kZWwiLGEubW9kZWwpLHU9YSYmYS52aWV3fHx0JiZufHxlLnZpZXdO
YW1lfHxuLGw9bS5fbG9va3VwRmFjdG9yeSgidmlldzoiK3UpLGM9bS5sb29rdXAoInRlbXBsYXRl
OiIrcyk7dmFyIGI7cCYmKGI9QyhlKSkmJnA9PT1DKGUpLnJvdXRlTmFtZSYmKHA9dm9pZCAwKTt2
YXIgZz17b3duZXI6bSxpbnRvOnAsb3V0bGV0OmgsbmFtZTpuLGNvbnRyb2xsZXI6ZixWaWV3Q2xh
c3M6bCx0ZW1wbGF0ZTpjfHxlLl90b3BMZXZlbFZpZXdUZW1wbGF0ZX0seT12b2lkIDA7aWYoIWwm
JiFjJiYheSYmZCk7cmV0dXJuIGd9ZnVuY3Rpb24gVChlLHQpe2lmKHQuZnVsbFF1ZXJ5UGFyYW1z
KXJldHVybiB0LmZ1bGxRdWVyeVBhcmFtczt0LmZ1bGxRdWVyeVBhcmFtcz17fSxjLmRlZmF1bHQo
dC5mdWxsUXVlcnlQYXJhbXMsdC5xdWVyeVBhcmFtcyk7dmFyIHI9dC5oYW5kbGVySW5mb3NbdC5o
YW5kbGVySW5mb3MubGVuZ3RoLTFdLm5hbWU7cmV0dXJuIGUuX2Rlc2VyaWFsaXplUXVlcnlQYXJh
bXMocix0LmZ1bGxRdWVyeVBhcmFtcyksdC5mdWxsUXVlcnlQYXJhbXN9ZnVuY3Rpb24gTihlLHQp
e3QucXVlcnlQYXJhbXNGb3I9dC5xdWVyeVBhcmFtc0Zvcnx8e307dmFyIHI9ZS5yb3V0ZU5hbWU7
aWYodC5xdWVyeVBhcmFtc0ZvcltyXSlyZXR1cm4gdC5xdWVyeVBhcmFtc0ZvcltyXTtmb3IodmFy
IG49VChlLnJvdXRlcix0KSxpPXQucXVlcnlQYXJhbXNGb3Jbcl09e30sYT1vLmdldChlLCJfcXAi
KSxzPWEucXBzLHU9MCxsPXMubGVuZ3RoO3U8bDsrK3Upe3ZhciBjPXNbdV0sZj1jLnByb3AgaW4g
bjtpW2MucHJvcF09Zj9uW2MucHJvcF06UyhjLmRlZmF1bHRWYWx1ZSl9cmV0dXJuIGl9ZnVuY3Rp
b24gUyhlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT92LkEoZS5zbGljZSgpKTplfWZ1bmN0aW9u
IEEoZSx0KXt2YXIgcixuPXt9O3I9e2RlZmF1bHRWYWx1ZTohMCx0eXBlOiEwLHNjb3BlOiEwLGFz
OiEwfTtmb3IodmFyIGkgaW4gZSlpZihlLmhhc093blByb3BlcnR5KGkpKXt2YXIgbz17fTtjLmRl
ZmF1bHQobyxlW2ldKSxjLmRlZmF1bHQobyx0W2ldKSxuW2ldPW8scltpXT0hMH1mb3IodmFyIGEg
aW4gdClpZih0Lmhhc093blByb3BlcnR5KGEpJiYhclthXSl7dmFyIHM9e307Yy5kZWZhdWx0KHMs
dFthXSxlW2FdKSxuW2FdPXN9cmV0dXJuIG59ZnVuY3Rpb24gUChlLHQpe3QuZm9yRWFjaChmdW5j
dGlvbih0KXtlLmFkZE9ic2VydmVyKHQrIi5bXSIsZSxlLl9xcENoYW5nZWQpfSl9dmFyIGo9QXJy
YXkucHJvdG90eXBlLnNsaWNlLFI9bS5kZWZhdWx0LmV4dGVuZChnLmRlZmF1bHQsYi5kZWZhdWx0
LHtxdWVyeVBhcmFtczp7fSxfcXA6bC5jb21wdXRlZChmdW5jdGlvbigpe3ZhciBlLHQscj10aGlz
LG49dGhpcy5jb250cm9sbGVyTmFtZXx8dGhpcy5yb3V0ZU5hbWUsaT13LmdldE93bmVyKHRoaXMp
Ll9sb29rdXBGYWN0b3J5KCJjb250cm9sbGVyOiIrbiksYT1vLmdldCh0aGlzLCJxdWVyeVBhcmFt
cyIpLHM9ISFPYmplY3Qua2V5cyhhKS5sZW5ndGg7aWYoaSl7ZT1pLnByb3RvKCk7dmFyIHU9by5n
ZXQoZSwicXVlcnlQYXJhbXMiKSxsPV8ubm9ybWFsaXplQ29udHJvbGxlclF1ZXJ5UGFyYW1zKHUp
O3Q9QShsLGEpfWVsc2UgaWYocyl7dmFyIGM9eS5nZW5lcmF0ZUNvbnRyb2xsZXJGYWN0b3J5KHcu
Z2V0T3duZXIodGhpcyksbik7ZT1jLnByb3RvKCksdD1hfXZhciBkPVtdLHA9e30saD1bXTtmb3Io
dmFyIG0gaW4gdClpZih0Lmhhc093blByb3BlcnR5KG0pJiYidW5rbm93blByb3BlcnR5IiE9PW0m
JiJfc3VwZXIiIT09bSl7dmFyIGIsZz10W21dLHg9Zy5zY29wZXx8Im1vZGVsIjsiY29udHJvbGxl
ciI9PT14JiYoYj1bXSk7dmFyIGs9Zy5hc3x8dGhpcy5zZXJpYWxpemVRdWVyeVBhcmFtS2V5KG0p
LEM9by5nZXQoZSxtKTtBcnJheS5pc0FycmF5KEMpJiYoQz12LkEoQy5zbGljZSgpKSk7dmFyIEU9
Zy50eXBlfHxmLnR5cGVPZihDKSxPPXRoaXMuc2VyaWFsaXplUXVlcnlQYXJhbShDLGssRSksVD1u
KyI6IittLE49e3VuZGVjb3JhdGVkRGVmYXVsdFZhbHVlOm8uZ2V0KGUsbSksZGVmYXVsdFZhbHVl
OkMsc2VyaWFsaXplZERlZmF1bHRWYWx1ZTpPLHNlcmlhbGl6ZWRWYWx1ZTpPLHR5cGU6RSx1cmxL
ZXk6ayxwcm9wOm0sc2NvcGVkUHJvcGVydHlOYW1lOlQsY3RybDpuLHJvdXRlOnRoaXMscGFydHM6
Yix2YWx1ZXM6bnVsbCxzY29wZTp4LHByZWZpeDoiIn07cFttXT1wW2tdPXBbVF09TixkLnB1c2go
TiksaC5wdXNoKG0pfXJldHVybntxcHM6ZCxtYXA6cCxwcm9wZXJ0eU5hbWVzOmgsc3RhdGVzOntp
bmFjdGl2ZTpmdW5jdGlvbihlLHQpe3ZhciBuPXBbZV07ci5fcXBDaGFuZ2VkKGUsdCxuKX0sYWN0
aXZlOmZ1bmN0aW9uKGUsdCl7dmFyIG49cFtlXTtyZXR1cm4gci5fcXBDaGFuZ2VkKGUsdCxuKSxy
Ll9hY3RpdmVRUENoYW5nZWQocFtlXSx0KX0sYWxsb3dPdmVycmlkZXM6ZnVuY3Rpb24oZSx0KXt2
YXIgbj1wW2VdO3JldHVybiByLl9xcENoYW5nZWQoZSx0LG4pLHIuX3VwZGF0aW5nUVBDaGFuZ2Vk
KHBbZV0pfX19fSksX25hbWVzOm51bGwsX3N0YXNoTmFtZXM6ZnVuY3Rpb24oZSx0KXt2YXIgcj1l
O2lmKCF0aGlzLl9uYW1lcyl7dmFyIG49dGhpcy5fbmFtZXM9ci5fbmFtZXM7bi5sZW5ndGh8fChy
PXQsbj1yJiZyLl9uYW1lc3x8W10pO2Zvcih2YXIgaT1vLmdldCh0aGlzLCJfcXAucXBzIiksYT1p
Lmxlbmd0aCxzPW5ldyBBcnJheShuLmxlbmd0aCksdT0wLGw9bi5sZW5ndGg7dTxsOysrdSlzW3Vd
PXIubmFtZSsiLiIrblt1XTtmb3IodmFyIGM9MDtjPGE7KytjKXt2YXIgZj1pW2NdOyJtb2RlbCI9
PT1mLnNjb3BlJiYoZi5wYXJ0cz1zKSxmLnByZWZpeD1mLmN0cmx9fX0sX2FjdGl2ZVFQQ2hhbmdl
ZDpmdW5jdGlvbihlLHQpe3ZhciByPXRoaXMucm91dGVyO3IuX2FjdGl2ZVFQQ2hhbmdlZChlLnNj
b3BlZFByb3BlcnR5TmFtZSx0KX0sX3VwZGF0aW5nUVBDaGFuZ2VkOmZ1bmN0aW9uKGUpe3ZhciB0
PXRoaXMucm91dGVyO3QuX3VwZGF0aW5nUVBDaGFuZ2VkKGUudXJsS2V5KX0sbWVyZ2VkUHJvcGVy
dGllczpbInF1ZXJ5UGFyYW1zIl0scGFyYW1zRm9yOmZ1bmN0aW9uKGUpe3ZhciB0PXcuZ2V0T3du
ZXIodGhpcykubG9va3VwKCJyb3V0ZToiK2UpO2lmKCF0KXJldHVybnt9O3ZhciByPXRoaXMucm91
dGVyLnJvdXRlci5hY3RpdmVUcmFuc2l0aW9uLG49cj9yLnN0YXRlOnRoaXMucm91dGVyLnJvdXRl
ci5zdGF0ZSxpPXt9O3JldHVybiBjLmRlZmF1bHQoaSxuLnBhcmFtc1tlXSksYy5kZWZhdWx0KGks
Tih0LG4pKSxpfSxzZXJpYWxpemVRdWVyeVBhcmFtS2V5OmZ1bmN0aW9uKGUpe3JldHVybiBlfSxz
ZXJpYWxpemVRdWVyeVBhcmFtOmZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4iYXJyYXkiPT09cj9KU09O
LnN0cmluZ2lmeShlKToiIitlfSxkZXNlcmlhbGl6ZVF1ZXJ5UGFyYW06ZnVuY3Rpb24oZSx0LHIp
e3JldHVybiJib29sZWFuIj09PXI/InRydWUiPT09ZToibnVtYmVyIj09PXI/TnVtYmVyKGUpLnZh
bHVlT2YoKToiYXJyYXkiPT09cj92LkEoSlNPTi5wYXJzZShlKSk6ZX0sX29wdGlvbnNGb3JRdWVy
eVBhcmFtOmZ1bmN0aW9uKGUpe3JldHVybiBvLmdldCh0aGlzLCJxdWVyeVBhcmFtcy4iK2UudXJs
S2V5KXx8by5nZXQodGhpcywicXVlcnlQYXJhbXMuIitlLnByb3ApfHx7fX0scmVzZXRDb250cm9s
bGVyOmssZXhpdDpmdW5jdGlvbigpe3RoaXMuZGVhY3RpdmF0ZSgpLHRoaXMudHJpZ2dlcigiZGVh
Y3RpdmF0ZSIpLHRoaXMudGVhcmRvd25WaWV3cygpfSxfcmVzZXQ6ZnVuY3Rpb24oZSx0KXt2YXIg
cj10aGlzLmNvbnRyb2xsZXI7ci5fcXBEZWxlZ2F0ZT1vLmdldCh0aGlzLCJfcXAuc3RhdGVzLmlu
YWN0aXZlIiksdGhpcy5yZXNldENvbnRyb2xsZXIocixlLHQpfSxlbnRlcjpmdW5jdGlvbigpe3Ro
aXMuY29ubmVjdGlvbnM9W10sdGhpcy5hY3RpdmF0ZSgpLHRoaXMudHJpZ2dlcigiYWN0aXZhdGUi
KX0sdmlld05hbWU6bnVsbCx0ZW1wbGF0ZU5hbWU6bnVsbCxjb250cm9sbGVyTmFtZTpudWxsLGFj
dGlvbnM6e3F1ZXJ5UGFyYW1zRGlkQ2hhbmdlOmZ1bmN0aW9uKGUsdCxyKXtmb3IodmFyIG49by5n
ZXQodGhpcywiX3FwIikubWFwLGk9T2JqZWN0LmtleXMoZSkuY29uY2F0KE9iamVjdC5rZXlzKHIp
KSxhPTAscz1pLmxlbmd0aDthPHM7KythKXt2YXIgdT1uW2lbYV1dO3UmJm8uZ2V0KHRoaXMuX29w
dGlvbnNGb3JRdWVyeVBhcmFtKHUpLCJyZWZyZXNoTW9kZWwiKSYmdGhpcy5yb3V0ZXIuY3VycmVu
dFN0YXRlJiZ0aGlzLnJlZnJlc2goKX1yZXR1cm4hMH0sZmluYWxpemVRdWVyeVBhcmFtQ2hhbmdl
OmZ1bmN0aW9uKGUsdCxyKXtpZigiYXBwbGljYXRpb24iIT09dGhpcy5yb3V0ZU5hbWUpcmV0dXJu
ITA7aWYocil7dmFyIG4saT1yLnN0YXRlLmhhbmRsZXJJbmZvcyxzPXRoaXMucm91dGVyLHU9cy5f
cXVlcnlQYXJhbXNGb3IoaVtpLmxlbmd0aC0xXS5uYW1lKSxsPXMuX3FwVXBkYXRlcztfLnN0YXNo
UGFyYW1OYW1lcyhzLGkpO2Zvcih2YXIgYz0wLGY9dS5xcHMubGVuZ3RoO2M8ZjsrK2Mpe3ZhciBk
LHAsaD11LnFwc1tjXSxtPWgucm91dGUsdj1tLmNvbnRyb2xsZXIsYj1oLnVybEtleSBpbiBlJiZo
LnVybEtleTtsJiZoLnVybEtleSBpbiBsPyhkPW8uZ2V0KHYsaC5wcm9wKSxwPW0uc2VyaWFsaXpl
UXVlcnlQYXJhbShkLGgudXJsS2V5LGgudHlwZSkpOmI/KHA9ZVtiXSxkPW0uZGVzZXJpYWxpemVR
dWVyeVBhcmFtKHAsaC51cmxLZXksaC50eXBlKSk6KHA9aC5zZXJpYWxpemVkRGVmYXVsdFZhbHVl
LGQ9UyhoLmRlZmF1bHRWYWx1ZSkpLHYuX3FwRGVsZWdhdGU9by5nZXQobSwiX3FwLnN0YXRlcy5p
bmFjdGl2ZSIpO3ZhciBnPXAhPT1oLnNlcmlhbGl6ZWRWYWx1ZTtpZihnKXtpZihyLnF1ZXJ5UGFy
YW1zT25seSYmbiE9PSExKXt2YXIgeT1tLl9vcHRpb25zRm9yUXVlcnlQYXJhbShoKSx3PW8uZ2V0
KHksInJlcGxhY2UiKTt3P249ITA6dz09PSExJiYobj0hMSl9YS5zZXQodixoLnByb3AsZCl9aC5z
ZXJpYWxpemVkVmFsdWU9cDt2YXIgeD1oLnNlcmlhbGl6ZWREZWZhdWx0VmFsdWU9PT1wO3h8fHQu
cHVzaCh7dmFsdWU6cCx2aXNpYmxlOiEwLGtleTpifHxoLnVybEtleX0pfW4mJnIubWV0aG9kKCJy
ZXBsYWNlIiksdS5xcHMuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgdD1vLmdldChlLnJvdXRlLCJf
cXAiKSxyPWUucm91dGUuY29udHJvbGxlcjtyLl9xcERlbGVnYXRlPW8uZ2V0KHQsInN0YXRlcy5h
Y3RpdmUiKX0pLHMuX3FwVXBkYXRlcz1udWxsfX19LGRlYWN0aXZhdGU6ayxhY3RpdmF0ZTprLHRy
YW5zaXRpb25UbzpmdW5jdGlvbihlLHQpe3ZhciByPXRoaXMucm91dGVyO3JldHVybiByLnRyYW5z
aXRpb25Uby5hcHBseShyLGFyZ3VtZW50cyl9LGludGVybWVkaWF0ZVRyYW5zaXRpb25UbzpmdW5j
dGlvbigpe3ZhciBlPXRoaXMucm91dGVyO2UuaW50ZXJtZWRpYXRlVHJhbnNpdGlvblRvLmFwcGx5
KGUsYXJndW1lbnRzKX0scmVmcmVzaDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJvdXRlci5yb3V0
ZXIucmVmcmVzaCh0aGlzKX0scmVwbGFjZVdpdGg6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnJvdXRl
cjtyZXR1cm4gZS5yZXBsYWNlV2l0aC5hcHBseShlLGFyZ3VtZW50cyl9LHNlbmQ6ZnVuY3Rpb24o
KXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCxyPUFycmF5KGUpLG49MDtuPGU7bisrKXJbbl09
YXJndW1lbnRzW25dO2lmKHRoaXMucm91dGVyJiZ0aGlzLnJvdXRlci5yb3V0ZXJ8fCF0LmRlZmF1
bHQudGVzdGluZyl7dmFyIGk7KGk9dGhpcy5yb3V0ZXIpLnNlbmQuYXBwbHkoaSxyKX1lbHNle3Zh
ciBvPXJbMF07cj1qLmNhbGwociwxKTt2YXIgYT10aGlzLmFjdGlvbnNbb107aWYoYSlyZXR1cm4g
dGhpcy5hY3Rpb25zW29dLmFwcGx5KHRoaXMscil9fSxzZXR1cDpmdW5jdGlvbihlLHQpe3ZhciBy
LG49dGhpcy5jb250cm9sbGVyTmFtZXx8dGhpcy5yb3V0ZU5hbWUsaT10aGlzLmNvbnRyb2xsZXJG
b3IobiwhMCk7aWYocj1pP2k6dGhpcy5nZW5lcmF0ZUNvbnRyb2xsZXIobixlKSwhdGhpcy5jb250
cm9sbGVyKXt2YXIgcz1vLmdldCh0aGlzLCJfcXAucHJvcGVydHlOYW1lcyIpO1AocixzKSx0aGlz
LmNvbnRyb2xsZXI9cn12YXIgdT1vLmdldCh0aGlzLCJfcXAiKSxsPXUuc3RhdGVzO2lmKHQpe18u
c3Rhc2hQYXJhbU5hbWVzKHRoaXMucm91dGVyLHQuc3RhdGUuaGFuZGxlckluZm9zKTt2YXIgYz10
LnBhcmFtcyxmPXUucHJvcGVydHlOYW1lcyxkPXRoaXMuX2J1Y2tldENhY2hlO2YuZm9yRWFjaChm
dW5jdGlvbihlKXt2YXIgdD11Lm1hcFtlXTt0LnZhbHVlcz1jO3ZhciBuPV8uY2FsY3VsYXRlQ2Fj
aGVLZXkodC5wcmVmaXgsdC5wYXJ0cyx0LnZhbHVlcyk7aWYoZCl7dmFyIGk9ZC5sb29rdXAobixl
LHQudW5kZWNvcmF0ZWREZWZhdWx0VmFsdWUpO2Euc2V0KHIsZSxpKX19KX1pZihyLl9xcERlbGVn
YXRlPWwuYWxsb3dPdmVycmlkZXMsdCl7dmFyIHA9Tih0aGlzLHQuc3RhdGUpO3Iuc2V0UHJvcGVy
dGllcyhwKX10aGlzLnNldHVwQ29udHJvbGxlcihyLGUsdCksdGhpcy5fZW52aXJvbm1lbnQmJiF0
aGlzLl9lbnZpcm9ubWVudC5vcHRpb25zLnNob3VsZFJlbmRlcnx8dGhpcy5yZW5kZXJUZW1wbGF0
ZShyLGUpfSxfcXBDaGFuZ2VkOmZ1bmN0aW9uKGUsdCxyKXtpZihyKXt2YXIgbj1fLmNhbGN1bGF0
ZUNhY2hlS2V5KHIucHJlZml4fHwiIixyLnBhcnRzLHIudmFsdWVzKSxpPXRoaXMuX2J1Y2tldENh
Y2hlO2kmJmkuc3Rhc2gobixlLHQpfX0sYmVmb3JlTW9kZWw6ayxhZnRlck1vZGVsOmsscmVkaXJl
Y3Q6ayxjb250ZXh0RGlkQ2hhbmdlOmZ1bmN0aW9uKCl7dGhpcy5jdXJyZW50TW9kZWw9dGhpcy5j
b250ZXh0fSxtb2RlbDpmdW5jdGlvbihlLHQpe3ZhciByLG4saSxhLHM9by5nZXQodGhpcywiX3Fw
Lm1hcCIpO2Zvcih2YXIgdSBpbiBlKSJxdWVyeVBhcmFtcyI9PT11fHxzJiZ1IGluIHN8fCgocj11
Lm1hdGNoKC9eKC4qKV9pZCQvKSkmJihuPXJbMV0sYT1lW3VdKSxpPSEwKTtpZighbiYmaSlyZXR1
cm4gcC5kZWZhdWx0KGUpO2lmKCFuKXtpZih0LnJlc29sdmVJbmRleDwxKXJldHVybjt2YXIgbD10
LnN0YXRlLmhhbmRsZXJJbmZvc1t0LnJlc29sdmVJbmRleC0xXS5jb250ZXh0O3JldHVybiBsfXJl
dHVybiB0aGlzLmZpbmRNb2RlbChuLGEpfSxkZXNlcmlhbGl6ZTpmdW5jdGlvbihlLHQpe3JldHVy
biB0aGlzLm1vZGVsKHRoaXMucGFyYW1zRm9yKHRoaXMucm91dGVOYW1lKSx0KX0sZmluZE1vZGVs
OmZ1bmN0aW9uKCl7dmFyIGU9by5nZXQodGhpcywic3RvcmUiKTtyZXR1cm4gZS5maW5kLmFwcGx5
KGUsYXJndW1lbnRzKX0sc3RvcmU6bC5jb21wdXRlZChmdW5jdGlvbigpe3ZhciBlPXcuZ2V0T3du
ZXIodGhpcyk7dGhpcy5yb3V0ZU5hbWUsby5nZXQodGhpcywicm91dGVyLm5hbWVzcGFjZSIpO3Jl
dHVybntmaW5kOmZ1bmN0aW9uKHQscil7dmFyIG49ZS5fbG9va3VwRmFjdG9yeSgibW9kZWw6Iit0
KTtpZihuKXJldHVybiBuLmZpbmQocil9fX0pLHNlcmlhbGl6ZTpmdW5jdGlvbihlLHQpe2lmKCEo
dC5sZW5ndGg8MSkmJmUpe3ZhciByPXRbMF0sbj17fTtyZXR1cm4gMT09PXQubGVuZ3RoP3IgaW4g
ZT9uW3JdPW8uZ2V0KGUscik6L19pZCQvLnRlc3QocikmJihuW3JdPW8uZ2V0KGUsImlkIikpOm49
cy5kZWZhdWx0KGUsdCksbn19LHNldHVwQ29udHJvbGxlcjpmdW5jdGlvbihlLHQscil7ZSYmdm9p
ZCAwIT09dCYmYS5zZXQoZSwibW9kZWwiLHQpfSxjb250cm9sbGVyRm9yOmZ1bmN0aW9uKGUsdCl7
dmFyIHIsbj13LmdldE93bmVyKHRoaXMpLGk9bi5sb29rdXAoInJvdXRlOiIrZSk7cmV0dXJuIGkm
JmkuY29udHJvbGxlck5hbWUmJihlPWkuY29udHJvbGxlck5hbWUpLHI9bi5sb29rdXAoImNvbnRy
b2xsZXI6IitlKX0sZ2VuZXJhdGVDb250cm9sbGVyOmZ1bmN0aW9uKGUsdCl7dmFyIHI9dy5nZXRP
d25lcih0aGlzKTtyZXR1cm4gdD10fHx0aGlzLm1vZGVsRm9yKGUpLHkuZGVmYXVsdChyLGUsdCl9
LG1vZGVsRm9yOmZ1bmN0aW9uKGUpe3ZhciB0PXcuZ2V0T3duZXIodGhpcykubG9va3VwKCJyb3V0
ZToiK2UpLHI9dGhpcy5yb3V0ZXI/dGhpcy5yb3V0ZXIucm91dGVyLmFjdGl2ZVRyYW5zaXRpb246
bnVsbDtpZihyKXt2YXIgbj10JiZ0LnJvdXRlTmFtZXx8ZTtpZihyLnJlc29sdmVkTW9kZWxzLmhh
c093blByb3BlcnR5KG4pKXJldHVybiByLnJlc29sdmVkTW9kZWxzW25dfXJldHVybiB0JiZ0LmN1
cnJlbnRNb2RlbH0scmVuZGVyVGVtcGxhdGU6ZnVuY3Rpb24oZSx0KXt0aGlzLnJlbmRlcigpfSxy
ZW5kZXI6ZnVuY3Rpb24oZSx0KXt2YXIgcixuPSJzdHJpbmciPT10eXBlb2YgZSYmISFlLGk9MD09
PWFyZ3VtZW50cy5sZW5ndGh8fHguZGVmYXVsdChhcmd1bWVudHNbMF0pOyJvYmplY3QiIT10eXBl
b2YgZXx8dD9yPWU6KHI9dGhpcy5yb3V0ZU5hbWUsdD1lKTt2YXIgbz1PKHRoaXMsbixpLHIsdCk7
dGhpcy5jb25uZWN0aW9ucy5wdXNoKG8pLGQuZGVmYXVsdC5vbmNlKHRoaXMucm91dGVyLCJfc2V0
T3V0bGV0cyIpfSxkaXNjb25uZWN0T3V0bGV0OmZ1bmN0aW9uKGUpe3ZhciB0LHI7aWYoZSYmInN0
cmluZyIhPXR5cGVvZiBlKXtpZih0PWUub3V0bGV0LHI9ZS5wYXJlbnRWaWV3LGUmJk9iamVjdC5r
ZXlzKGUpLmluZGV4T2YoIm91dGxldCIpIT09LTEmJiJ1bmRlZmluZWQiPT10eXBlb2YgZS5vdXRs
ZXQpdGhyb3cgbmV3IGkuZGVmYXVsdCgiWW91IHBhc3NlZCB1bmRlZmluZWQgYXMgdGhlIG91dGxl
dCBuYW1lLiIpfWVsc2UgdD1lO3I9ciYmci5yZXBsYWNlKC9cLy9nLCIuIiksdD10fHwibWFpbiIs
dGhpcy5fZGlzY29ubmVjdE91dGxldCh0LHIpO2Zvcih2YXIgbj0wO248dGhpcy5yb3V0ZXIucm91
dGVyLmN1cnJlbnRIYW5kbGVySW5mb3MubGVuZ3RoO24rKyl0aGlzLnJvdXRlci5yb3V0ZXIuY3Vy
cmVudEhhbmRsZXJJbmZvc1tuXS5oYW5kbGVyLl9kaXNjb25uZWN0T3V0bGV0KHQscil9LF9kaXNj
b25uZWN0T3V0bGV0OmZ1bmN0aW9uKGUsdCl7dmFyIHI9Qyh0aGlzKTtyJiZ0PT09ci5yb3V0ZU5h
bWUmJih0PXZvaWQgMCk7Zm9yKHZhciBuPTA7bjx0aGlzLmNvbm5lY3Rpb25zLmxlbmd0aDtuKysp
e3ZhciBpPXRoaXMuY29ubmVjdGlvbnNbbl07aS5vdXRsZXQ9PT1lJiZpLmludG89PT10JiYodGhp
cy5jb25uZWN0aW9uc1tuXT17b3duZXI6aS5vd25lcixpbnRvOmkuaW50byxvdXRsZXQ6aS5vdXRs
ZXQsbmFtZTppLm5hbWUsY29udHJvbGxlcjp2b2lkIDAsdGVtcGxhdGU6dm9pZCAwLFZpZXdDbGFz
czp2b2lkIDB9LGQuZGVmYXVsdC5vbmNlKHRoaXMucm91dGVyLCJfc2V0T3V0bGV0cyIpKX19LHdp
bGxEZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy50ZWFyZG93blZpZXdzKCl9LHRlYXJkb3duVmlld3M6
ZnVuY3Rpb24oKXt0aGlzLmNvbm5lY3Rpb25zJiZ0aGlzLmNvbm5lY3Rpb25zLmxlbmd0aD4wJiYo
dGhpcy5jb25uZWN0aW9ucz1bXSxkLmRlZmF1bHQub25jZSh0aGlzLnJvdXRlciwiX3NldE91dGxl
dHMiKSl9fSk7Zy5kZXByZWNhdGVVbmRlcnNjb3JlQWN0aW9ucyhSKSxSLnJlb3BlbkNsYXNzKHtp
c1JvdXRlRmFjdG9yeTohMH0pLGUuZGVmYXVsdD1SfSk7ZSgiZW1iZXItcm91dGluZy9zeXN0ZW0v
cm91dGVyIixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9sb2dnZXIiLCJlbWJlci1tZXRhbC9kZWJ1
ZyIsImVtYmVyLW1ldGFsL2Vycm9yIiwiZW1iZXItbWV0YWwvcHJvcGVydHlfZ2V0IiwiZW1iZXIt
bWV0YWwvcHJvcGVydHlfc2V0IiwiZW1iZXItbWV0YWwvcHJvcGVydGllcyIsImVtYmVyLW1ldGFs
L2VtcHR5X29iamVjdCIsImVtYmVyLW1ldGFsL2NvbXB1dGVkIiwiZW1iZXItbWV0YWwvYXNzaWdu
IiwiZW1iZXItbWV0YWwvcnVuX2xvb3AiLCJlbWJlci1ydW50aW1lL3N5c3RlbS9vYmplY3QiLCJl
bWJlci1ydW50aW1lL21peGlucy9ldmVudGVkIiwiZW1iZXItcm91dGluZy9zeXN0ZW0vZHNsIiwi
ZW1iZXItcm91dGluZy9sb2NhdGlvbi9hcGkiLCJlbWJlci1yb3V0aW5nL3V0aWxzIiwiZW1iZXIt
bWV0YWwvdXRpbHMiLCJlbWJlci1yb3V0aW5nL3N5c3RlbS9yb3V0ZXJfc3RhdGUiLCJjb250YWlu
ZXIvb3duZXIiLCJlbWJlci1tZXRhbC9kaWN0aW9uYXJ5Iiwicm91dGVyIiwicm91dGVyL3RyYW5z
aXRpb24iXSxmdW5jdGlvbihlLHQscixuLGksbyxhLHMsdSxsLGMsZixkLHAsaCxtLHYsYixnLHks
Xyx3KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24geCgpe3JldHVybiB0aGlzfWZ1bmN0aW9uIGsoZSx0
LHIpe2Zvcih2YXIgbixpLG89dC5zdGF0ZS5oYW5kbGVySW5mb3MsYT0hMSxzPW8ubGVuZ3RoLTE7
cz49MDstLXMpaWYobj1vW3NdLGk9bi5oYW5kbGVyLGEpe2lmKHIoaSxvW3MrMV0uaGFuZGxlcikh
PT0hMClyZXR1cm4hMX1lbHNlIGU9PT1pJiYoYT0hMCk7cmV0dXJuITB9ZnVuY3Rpb24gQyhlLHIp
e3ZhciBuLGk9W107bj1lJiYib2JqZWN0Ij09dHlwZW9mIGUmJiJvYmplY3QiPT10eXBlb2YgZS5l
cnJvclRocm93bj9lLmVycm9yVGhyb3duOmUsciYmaS5wdXNoKHIpLG4mJihuLm1lc3NhZ2UmJmku
cHVzaChuLm1lc3NhZ2UpLG4uc3RhY2smJmkucHVzaChuLnN0YWNrKSwic3RyaW5nIj09dHlwZW9m
IG4mJmkucHVzaChuKSksdC5kZWZhdWx0LmVycm9yLmFwcGx5KHRoaXMsaSl9ZnVuY3Rpb24gRShl
LHQscil7dmFyIG4saT1lLnJvdXRlcixvPXQucm91dGVOYW1lLnNwbGl0KCIuIikucG9wKCksYT0i
YXBwbGljYXRpb24iPT09ZS5yb3V0ZU5hbWU/IiI6ZS5yb3V0ZU5hbWUrIi4iO3JldHVybiBuPWEr
bysiXyIrcixPKGksbik/bjoobj1hK3IsTyhpLG4pP246dm9pZCAwKX1mdW5jdGlvbiBPKGUsdCl7
dmFyIHI9Zy5nZXRPd25lcihlKTtyZXR1cm4gZS5oYXNSb3V0ZSh0KSYmKHIuaGFzUmVnaXN0cmF0
aW9uKCJ0ZW1wbGF0ZToiK3QpfHxyLmhhc1JlZ2lzdHJhdGlvbigicm91dGU6Iit0KSl9ZnVuY3Rp
b24gVChlLHQscil7dmFyIGk9ci5zaGlmdCgpO2lmKCFlKXtpZih0KXJldHVybjt0aHJvdyBuZXcg
bi5kZWZhdWx0KCJDYW4ndCB0cmlnZ2VyIGFjdGlvbiAnIitpKyInIGJlY2F1c2UgeW91ciBhcHAg
aGFzbid0IGZpbmlzaGVkIHRyYW5zaXRpb25pbmcgaW50byBpdHMgZmlyc3Qgcm91dGUuIFRvIHRy
aWdnZXIgYW4gYWN0aW9uIG9uIGRlc3RpbmF0aW9uIHJvdXRlcyBkdXJpbmcgYSB0cmFuc2l0aW9u
LCB5b3UgY2FuIGNhbGwgYC5zZW5kKClgIG9uIHRoZSBgVHJhbnNpdGlvbmAgb2JqZWN0IHBhc3Nl
ZCB0byB0aGUgYG1vZGVsL2JlZm9yZU1vZGVsL2FmdGVyTW9kZWxgIGhvb2tzLiIpOworfWZvcih2
YXIgbyxhLHM9ITEsdT1lLmxlbmd0aC0xO3U+PTA7dS0tKWlmKG89ZVt1XSxhPW8uaGFuZGxlcixh
LmFjdGlvbnMmJmEuYWN0aW9uc1tpXSl7aWYoYS5hY3Rpb25zW2ldLmFwcGx5KGEscikhPT0hMCl7
aWYoImVycm9yIj09PWkpe3ZhciBsPXYuZ3VpZEZvcihyWzBdKTthLnJvdXRlci5fbWFya0Vycm9y
QXNIYW5kbGVkKGwpfXJldHVybn1zPSEwfWlmKEhbaV0pcmV0dXJuIHZvaWQgSFtpXS5hcHBseShu
dWxsLHIpO2lmKCFzJiYhdCl0aHJvdyBuZXcgbi5kZWZhdWx0KCJOb3RoaW5nIGhhbmRsZWQgdGhl
IGFjdGlvbiAnIitpKyInLiBJZiB5b3UgZGlkIGhhbmRsZSB0aGUgYWN0aW9uLCB0aGlzIGVycm9y
IGNhbiBiZSBjYXVzZWQgYnkgcmV0dXJuaW5nIHRydWUgZnJvbSBhbiBhY3Rpb24gaGFuZGxlciBp
biBhIGNvbnRyb2xsZXIsIGNhdXNpbmcgdGhlIGFjdGlvbiB0byBidWJibGUuIil9ZnVuY3Rpb24g
TihlLHQscil7Zm9yKHZhciBuPWUucm91dGVyLGk9bi5hcHBseUludGVudCh0LHIpLG89aS5oYW5k
bGVySW5mb3MsYT1pLnBhcmFtcyxzPTAsdT1vLmxlbmd0aDtzPHU7KytzKXt2YXIgbD1vW3NdO2wu
aXNSZXNvbHZlZHx8KGw9bC5iZWNvbWVSZXNvbHZlZChudWxsLGwuY29udGV4dCkpLGFbbC5uYW1l
XT1sLnBhcmFtc31yZXR1cm4gaX1mdW5jdGlvbiBTKGUpe3ZhciB0PWUucm91dGVyLmN1cnJlbnRI
YW5kbGVySW5mb3Mscj1GLl9yb3V0ZVBhdGgodCksbj10W3QubGVuZ3RoLTFdLm5hbWU7by5zZXQo
ZSwiY3VycmVudFBhdGgiLHIpLG8uc2V0KGUsImN1cnJlbnRSb3V0ZU5hbWUiLG4pO3ZhciBpPWcu
Z2V0T3duZXIoZSkubG9va3VwKCJjb250cm9sbGVyOmFwcGxpY2F0aW9uIik7aSYmKCJjdXJyZW50
UGF0aCJpbiBpfHxhLmRlZmluZVByb3BlcnR5KGksImN1cnJlbnRQYXRoIiksby5zZXQoaSwiY3Vy
cmVudFBhdGgiLHIpLCJjdXJyZW50Um91dGVOYW1lImluIGl8fGEuZGVmaW5lUHJvcGVydHkoaSwi
Y3VycmVudFJvdXRlTmFtZSIpLG8uc2V0KGksImN1cnJlbnRSb3V0ZU5hbWUiLG4pKX1mdW5jdGlv
biBBKGUsdCl7dmFyIHI9Yi5kZWZhdWx0LmNyZWF0ZSh7ZW1iZXJSb3V0ZXI6dCxyb3V0ZXJKczp0
LnJvdXRlcixyb3V0ZXJKc1N0YXRlOmUuc3RhdGV9KTt0LmN1cnJlbnRTdGF0ZXx8dC5zZXQoImN1
cnJlbnRTdGF0ZSIsciksdC5zZXQoInRhcmdldFN0YXRlIixyKSxlLnByb21pc2U9ZS5jYXRjaChm
dW5jdGlvbihlKXt2YXIgcj12Lmd1aWRGb3IoZSk7aWYoIXQuX2lzRXJyb3JIYW5kbGVkKHIpKXRo
cm93IGU7dC5fY2xlYXJIYW5kbGVkRXJyb3Iocil9KX1mdW5jdGlvbiBQKGUpe3JldHVybiJzdHJp
bmciPT10eXBlb2YgZSYmKCIiPT09ZXx8Ii8iPT09ZS5jaGFyQXQoMCkpfWZ1bmN0aW9uIGooZSx0
LHIsbil7dmFyIGk9ZS5fcXVlcnlQYXJhbXNGb3IodCk7Zm9yKHZhciBvIGluIHIpaWYoci5oYXNP
d25Qcm9wZXJ0eShvKSl7dmFyIGE9cltvXSxzPWkubWFwW29dO3MmJm4obyxhLHMpfX1mdW5jdGlv
biBSKGUsdCl7aWYoZSlmb3IodmFyIHI9W2VdO3IubGVuZ3RoPjA7KXt2YXIgbj1yLnNoaWZ0KCk7
aWYobi5yZW5kZXIubmFtZT09PXQpcmV0dXJuIG47dmFyIGk9bi5vdXRsZXRzO2Zvcih2YXIgbyBp
biBpKXIucHVzaChpW29dKX19ZnVuY3Rpb24gTChlLHQscil7dmFyIG4saT17cmVuZGVyOnIsb3V0
bGV0czpuZXcgcy5kZWZhdWx0fTtyZXR1cm4gbj1yLmludG8/UihlLHIuaW50byk6dCxuP28uc2V0
KG4ub3V0bGV0cyxyLm91dGxldCxpKTpyLmludG8/RChlLHIuaW50byxpKTplPWkse2xpdmVSb3V0
ZXM6ZSxvd25TdGF0ZTppfX1mdW5jdGlvbiBEKGUsdCxyKXtlLm91dGxldHMuX19lbWJlcl9vcnBo
YW5zX198fChlLm91dGxldHMuX19lbWJlcl9vcnBoYW5zX189e3JlbmRlcjp7bmFtZToiX19lbWJl
cl9vcnBoYW5zX18ifSxvdXRsZXRzOm5ldyBzLmRlZmF1bHR9KSxlLm91dGxldHMuX19lbWJlcl9v
cnBoYW5zX18ub3V0bGV0c1t0XT1yLGMuZGVmYXVsdC5zY2hlZHVsZSgiYWZ0ZXJSZW5kZXIiLGZ1
bmN0aW9uKCl7fSl9ZnVuY3Rpb24gTShlLHQscil7dmFyIG49UihlLHIucm91dGVOYW1lKTtyZXR1
cm4gbj9uOih0Lm91dGxldHMubWFpbj17cmVuZGVyOntuYW1lOnIucm91dGVOYW1lLG91dGxldDoi
bWFpbiJ9LG91dGxldHM6e319LHQpfWUudHJpZ2dlckV2ZW50PVQ7dmFyIEk9W10uc2xpY2UsRj1m
LmRlZmF1bHQuZXh0ZW5kKGQuZGVmYXVsdCx7bG9jYXRpb246Imhhc2giLHJvb3RVUkw6Ii8iLF9p
bml0Um91dGVySnM6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnJvdXRlcj1uZXcgXy5kZWZhdWx0O2Uu
dHJpZ2dlckV2ZW50PVQsZS5fdHJpZ2dlcldpbGxDaGFuZ2VDb250ZXh0PXgsZS5fdHJpZ2dlcldp
bGxMZWF2ZT14O3ZhciByPXRoaXMuY29uc3RydWN0b3IuZHNsQ2FsbGJhY2tzfHxbeF0sbj10aGlz
Ll9idWlsZERTTCgpO24ucm91dGUoImFwcGxpY2F0aW9uIix7cGF0aDoiLyIscmVzZXROYW1lc3Bh
Y2U6ITAsb3ZlcnJpZGVOYW1lQXNzZXJ0aW9uOiEwfSxmdW5jdGlvbigpe2Zvcih2YXIgZT0wO2U8
ci5sZW5ndGg7ZSsrKXJbZV0uY2FsbCh0aGlzKX0pLGkuZ2V0KHRoaXMsIm5hbWVzcGFjZS5MT0df
VFJBTlNJVElPTlNfSU5URVJOQUwiKSYmKGUubG9nPXQuZGVmYXVsdC5kZWJ1ZyksZS5tYXAobi5n
ZW5lcmF0ZSgpKX0sX2J1aWxkRFNMOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5faGFzTW9kdWxlQmFz
ZWRSZXNvbHZlcigpO3JldHVybiBuZXcgcC5kZWZhdWx0KG51bGwse2VuYWJsZUxvYWRpbmdTdWJz
dGF0ZXM6ISFlfSl9LGluaXQ6ZnVuY3Rpb24oKXt0aGlzLl9zdXBlci5hcHBseSh0aGlzLGFyZ3Vt
ZW50cyksdGhpcy5fYWN0aXZlVmlld3M9e30sdGhpcy5fcXBDYWNoZT1uZXcgcy5kZWZhdWx0LHRo
aXMuX3Jlc2V0UXVldWVkUXVlcnlQYXJhbWV0ZXJDaGFuZ2VzKCksdGhpcy5faGFuZGxlZEVycm9y
cz15LmRlZmF1bHQobnVsbCl9LF9yZXNldFF1ZXVlZFF1ZXJ5UGFyYW1ldGVyQ2hhbmdlczpmdW5j
dGlvbigpe3RoaXMuX3F1ZXVlZFFQQ2hhbmdlcz17fX0sdXJsOnUuY29tcHV0ZWQoZnVuY3Rpb24o
KXtyZXR1cm4gaS5nZXQodGhpcywibG9jYXRpb24iKS5nZXRVUkwoKX0pLF9oYXNNb2R1bGVCYXNl
ZFJlc29sdmVyOmZ1bmN0aW9uKCl7dmFyIGU9Zy5nZXRPd25lcih0aGlzKTtpZighZSlyZXR1cm4h
MTt2YXIgdD1lLmFwcGxpY2F0aW9uJiZlLmFwcGxpY2F0aW9uLl9fcmVnaXN0cnlfXyYmZS5hcHBs
aWNhdGlvbi5fX3JlZ2lzdHJ5X18ucmVzb2x2ZXI7cmV0dXJuISF0JiYhIXQubW9kdWxlQmFzZWRS
ZXNvbHZlcn0sc3RhcnRSb3V0aW5nOmZ1bmN0aW9uKCl7dmFyIGU9aS5nZXQodGhpcywiaW5pdGlh
bFVSTCIpO2lmKHRoaXMuc2V0dXBSb3V0ZXIoKSl7InVuZGVmaW5lZCI9PXR5cGVvZiBlJiYoZT1p
LmdldCh0aGlzLCJsb2NhdGlvbiIpLmdldFVSTCgpKTt2YXIgdD10aGlzLmhhbmRsZVVSTChlKTtp
Zih0JiZ0LmVycm9yKXRocm93IHQuZXJyb3J9fSxzZXR1cFJvdXRlcjpmdW5jdGlvbigpe3ZhciBl
PXRoaXM7dGhpcy5faW5pdFJvdXRlckpzKCksdGhpcy5fc2V0dXBMb2NhdGlvbigpO3ZhciB0PXRo
aXMucm91dGVyLHI9aS5nZXQodGhpcywibG9jYXRpb24iKTtyZXR1cm4haS5nZXQociwiY2FuY2Vs
Um91dGVyU2V0dXAiKSYmKHRoaXMuX3NldHVwUm91dGVyKHQsciksci5vblVwZGF0ZVVSTChmdW5j
dGlvbih0KXtlLmhhbmRsZVVSTCh0KX0pLCEwKX0sZGlkVHJhbnNpdGlvbjpmdW5jdGlvbihlKXtT
KHRoaXMpLHRoaXMuX2NhbmNlbFNsb3dUcmFuc2l0aW9uVGltZXIoKSx0aGlzLm5vdGlmeVByb3Bl
cnR5Q2hhbmdlKCJ1cmwiKSx0aGlzLnNldCgiY3VycmVudFN0YXRlIix0aGlzLnRhcmdldFN0YXRl
KSxjLmRlZmF1bHQub25jZSh0aGlzLHRoaXMudHJpZ2dlciwiZGlkVHJhbnNpdGlvbiIpLGkuZ2V0
KHRoaXMsIm5hbWVzcGFjZSIpLkxPR19UUkFOU0lUSU9OUyYmdC5kZWZhdWx0LmxvZygiVHJhbnNp
dGlvbmVkIGludG8gJyIrRi5fcm91dGVQYXRoKGUpKyInIil9LF9zZXRPdXRsZXRzOmZ1bmN0aW9u
KCl7dmFyIGUsdCxyPXRoaXMucm91dGVyLmN1cnJlbnRIYW5kbGVySW5mb3Msbj1udWxsO2lmKHIp
e2Zvcih2YXIgaT0wO2k8ci5sZW5ndGg7aSsrKXtlPXJbaV0uaGFuZGxlcjtmb3IodmFyIG8sYT1l
LmNvbm5lY3Rpb25zLHM9MDtzPGEubGVuZ3RoO3MrKyl7dmFyIHU9TChuLHQsYVtzXSk7bj11Lmxp
dmVSb3V0ZXMsdS5vd25TdGF0ZS5yZW5kZXIubmFtZSE9PWUucm91dGVOYW1lJiYibWFpbiIhPT11
Lm93blN0YXRlLnJlbmRlci5vdXRsZXR8fChvPXUub3duU3RhdGUpfTA9PT1hLmxlbmd0aCYmKG89
TShuLHQsZSkpLHQ9b31pZih0aGlzLl90b3BsZXZlbFZpZXcpdGhpcy5fdG9wbGV2ZWxWaWV3LnNl
dE91dGxldFN0YXRlKG4pO2Vsc2V7dmFyIGw9Zy5nZXRPd25lcih0aGlzKSxjPWwuX2xvb2t1cEZh
Y3RvcnkoInZpZXc6LW91dGxldCIpO3RoaXMuX3RvcGxldmVsVmlldz1jLmNyZWF0ZSgpLHRoaXMu
X3RvcGxldmVsVmlldy5zZXRPdXRsZXRTdGF0ZShuKTt2YXIgZj1sLmxvb2t1cCgiLWFwcGxpY2F0
aW9uLWluc3RhbmNlOm1haW4iKTtmLmRpZENyZWF0ZVJvb3RWaWV3KHRoaXMuX3RvcGxldmVsVmll
dyl9fX0sd2lsbFRyYW5zaXRpb246ZnVuY3Rpb24oZSxyLG4pe2MuZGVmYXVsdC5vbmNlKHRoaXMs
dGhpcy50cmlnZ2VyLCJ3aWxsVHJhbnNpdGlvbiIsbiksaS5nZXQodGhpcywibmFtZXNwYWNlIiku
TE9HX1RSQU5TSVRJT05TJiZ0LmRlZmF1bHQubG9nKCJQcmVwYXJpbmcgdG8gdHJhbnNpdGlvbiBm
cm9tICciK0YuX3JvdXRlUGF0aChlKSsiJyB0byAnIitGLl9yb3V0ZVBhdGgocikrIiciKX0saGFu
ZGxlVVJMOmZ1bmN0aW9uKGUpe3JldHVybiBlPWUuc3BsaXQoLyMoLispPy8pWzBdLHRoaXMuX2Rv
VVJMVHJhbnNpdGlvbigiaGFuZGxlVVJMIixlKX0sX2RvVVJMVHJhbnNpdGlvbjpmdW5jdGlvbihl
LHQpe3ZhciByPXRoaXMucm91dGVyW2VdKHR8fCIvIik7cmV0dXJuIEEocix0aGlzKSxyfSx0cmFu
c2l0aW9uVG86ZnVuY3Rpb24oKXtmb3IodmFyIGUsdD1hcmd1bWVudHMubGVuZ3RoLHI9QXJyYXko
dCksbj0wO248dDtuKyspcltuXT1hcmd1bWVudHNbbl07aWYoUChyWzBdKSlyZXR1cm4gdGhpcy5f
ZG9VUkxUcmFuc2l0aW9uKCJ0cmFuc2l0aW9uVG8iLHJbMF0pO3ZhciBpPXJbci5sZW5ndGgtMV07
ZT1pJiZpLmhhc093blByb3BlcnR5KCJxdWVyeVBhcmFtcyIpP3IucG9wKCkucXVlcnlQYXJhbXM6
e307dmFyIG89ci5zaGlmdCgpO3JldHVybiB0aGlzLl9kb1RyYW5zaXRpb24obyxyLGUpfSxpbnRl
cm1lZGlhdGVUcmFuc2l0aW9uVG86ZnVuY3Rpb24oKXt2YXIgZTsoZT10aGlzLnJvdXRlcikuaW50
ZXJtZWRpYXRlVHJhbnNpdGlvblRvLmFwcGx5KGUsYXJndW1lbnRzKSxTKHRoaXMpO3ZhciByPXRo
aXMucm91dGVyLmN1cnJlbnRIYW5kbGVySW5mb3M7aS5nZXQodGhpcywibmFtZXNwYWNlIikuTE9H
X1RSQU5TSVRJT05TJiZ0LmRlZmF1bHQubG9nKCJJbnRlcm1lZGlhdGUtdHJhbnNpdGlvbmVkIGlu
dG8gJyIrRi5fcm91dGVQYXRoKHIpKyInIil9LHJlcGxhY2VXaXRoOmZ1bmN0aW9uKCl7cmV0dXJu
IHRoaXMudHJhbnNpdGlvblRvLmFwcGx5KHRoaXMsYXJndW1lbnRzKS5tZXRob2QoInJlcGxhY2Ui
KX0sZ2VuZXJhdGU6ZnVuY3Rpb24oKXt2YXIgZSx0PShlPXRoaXMucm91dGVyKS5nZW5lcmF0ZS5h
cHBseShlLGFyZ3VtZW50cyk7cmV0dXJuIHRoaXMubG9jYXRpb24uZm9ybWF0VVJMKHQpfSxpc0Fj
dGl2ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnJvdXRlcjtyZXR1cm4gdC5pc0FjdGl2ZS5hcHBs
eSh0LGFyZ3VtZW50cyl9LGlzQWN0aXZlSW50ZW50OmZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gdGhp
cy5jdXJyZW50U3RhdGUuaXNBY3RpdmVJbnRlbnQoZSx0LHIpfSxzZW5kOmZ1bmN0aW9uKGUsdCl7
dmFyIHI7KHI9dGhpcy5yb3V0ZXIpLnRyaWdnZXIuYXBwbHkocixhcmd1bWVudHMpfSxoYXNSb3V0
ZTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5yb3V0ZXIuaGFzUm91dGUoZSl9LHJlc2V0OmZ1bmN0
aW9uKCl7dGhpcy5yb3V0ZXImJnRoaXMucm91dGVyLnJlc2V0KCl9LHdpbGxEZXN0cm95OmZ1bmN0
aW9uKCl7dGhpcy5fdG9wbGV2ZWxWaWV3JiYodGhpcy5fdG9wbGV2ZWxWaWV3LmRlc3Ryb3koKSx0
aGlzLl90b3BsZXZlbFZpZXc9bnVsbCksdGhpcy5fc3VwZXIuYXBwbHkodGhpcyxhcmd1bWVudHMp
LHRoaXMucmVzZXQoKX0sX2xvb2t1cEFjdGl2ZUNvbXBvbmVudE5vZGU6ZnVuY3Rpb24oZSl7cmV0
dXJuIHRoaXMuX2FjdGl2ZVZpZXdzW2VdfSxfYWN0aXZlUVBDaGFuZ2VkOmZ1bmN0aW9uKGUsdCl7
dGhpcy5fcXVldWVkUVBDaGFuZ2VzW2VdPXQsYy5kZWZhdWx0Lm9uY2UodGhpcyx0aGlzLl9maXJl
UXVlcnlQYXJhbVRyYW5zaXRpb24pfSxfdXBkYXRpbmdRUENoYW5nZWQ6ZnVuY3Rpb24oZSl7dGhp
cy5fcXBVcGRhdGVzfHwodGhpcy5fcXBVcGRhdGVzPXt9KSx0aGlzLl9xcFVwZGF0ZXNbZV09ITB9
LF9maXJlUXVlcnlQYXJhbVRyYW5zaXRpb246ZnVuY3Rpb24oKXt0aGlzLnRyYW5zaXRpb25Ubyh7
cXVlcnlQYXJhbXM6dGhpcy5fcXVldWVkUVBDaGFuZ2VzfSksdGhpcy5fcmVzZXRRdWV1ZWRRdWVy
eVBhcmFtZXRlckNoYW5nZXMoKX0sX2Nvbm5lY3RBY3RpdmVDb21wb25lbnROb2RlOmZ1bmN0aW9u
KGUsdCl7ZnVuY3Rpb24gcigpe2RlbGV0ZSBuW2VdfXZhciBuPXRoaXMuX2FjdGl2ZVZpZXdzO3Ro
aXMuX2FjdGl2ZVZpZXdzW2VdPXQsdC5yZW5kZXJOb2RlLmFkZERlc3RydWN0aW9uKHtkZXN0cm95
OnJ9KX0sX3NldHVwTG9jYXRpb246ZnVuY3Rpb24oKXt2YXIgZT1pLmdldCh0aGlzLCJsb2NhdGlv
biIpLHQ9aS5nZXQodGhpcywicm9vdFVSTCIpLHI9Zy5nZXRPd25lcih0aGlzKTtpZigic3RyaW5n
Ij09dHlwZW9mIGUmJnIpe3ZhciBuPXIubG9va3VwKCJsb2NhdGlvbjoiK2UpO2lmKCJ1bmRlZmlu
ZWQiIT10eXBlb2YgbillPW8uc2V0KHRoaXMsImxvY2F0aW9uIixuKTtlbHNle3ZhciBhPXtpbXBs
ZW1lbnRhdGlvbjplfTtlPW8uc2V0KHRoaXMsImxvY2F0aW9uIixoLmRlZmF1bHQuY3JlYXRlKGEp
KX19bnVsbCE9PWUmJiJvYmplY3QiPT10eXBlb2YgZSYmKHQmJm8uc2V0KGUsInJvb3RVUkwiLHQp
LCJmdW5jdGlvbiI9PXR5cGVvZiBlLmRldGVjdCYmZS5kZXRlY3QoKSwiZnVuY3Rpb24iPT10eXBl
b2YgZS5pbml0U3RhdGUmJmUuaW5pdFN0YXRlKCkpfSxfZ2V0SGFuZGxlckZ1bmN0aW9uOmZ1bmN0
aW9uKCl7dmFyIGU9dGhpcyx0PW5ldyBzLmRlZmF1bHQscj1nLmdldE93bmVyKHRoaXMpLG49ci5f
bG9va3VwRmFjdG9yeSgicm91dGU6YmFzaWMiKTtyZXR1cm4gZnVuY3Rpb24obyl7dmFyIGE9InJv
dXRlOiIrbyxzPXIubG9va3VwKGEpO3JldHVybiB0W29dP3M6KHRbb109ITAsc3x8KHIucmVnaXN0
ZXIoYSxuLmV4dGVuZCgpKSxzPXIubG9va3VwKGEpLGkuZ2V0KGUsIm5hbWVzcGFjZS5MT0dfQUNU
SVZFX0dFTkVSQVRJT04iKSkscy5yb3V0ZU5hbWU9byxzKX19LF9zZXR1cFJvdXRlcjpmdW5jdGlv
bihlLHQpe3ZhciByLG49dGhpcztlLmdldEhhbmRsZXI9dGhpcy5fZ2V0SGFuZGxlckZ1bmN0aW9u
KCk7dmFyIGk9ZnVuY3Rpb24oKXt0LnNldFVSTChyKX07aWYoZS51cGRhdGVVUkw9ZnVuY3Rpb24o
ZSl7cj1lLGMuZGVmYXVsdC5vbmNlKGkpfSx0LnJlcGxhY2VVUkwpe3ZhciBvPWZ1bmN0aW9uKCl7
dC5yZXBsYWNlVVJMKHIpfTtlLnJlcGxhY2VVUkw9ZnVuY3Rpb24oZSl7cj1lLGMuZGVmYXVsdC5v
bmNlKG8pfX1lLmRpZFRyYW5zaXRpb249ZnVuY3Rpb24oZSl7bi5kaWRUcmFuc2l0aW9uKGUpfSxl
LndpbGxUcmFuc2l0aW9uPWZ1bmN0aW9uKGUsdCxyKXtuLndpbGxUcmFuc2l0aW9uKGUsdCxyKX19
LF9zZXJpYWxpemVRdWVyeVBhcmFtczpmdW5jdGlvbihlLHQpe3ZhciByPXt9O2oodGhpcyxlLHQs
ZnVuY3Rpb24oZSxuLGkpe3ZhciBvPWkudXJsS2V5O3Jbb118fChyW29dPVtdKSxyW29dLnB1c2go
e3FwOmksdmFsdWU6bn0pLGRlbGV0ZSB0W2VdfSk7Zm9yKHZhciBuIGluIHIpe3ZhciBpPXJbbl0s
bz1pWzBdLnFwO3Rbby51cmxLZXldPW8ucm91dGUuc2VyaWFsaXplUXVlcnlQYXJhbShpWzBdLnZh
bHVlLG8udXJsS2V5LG8udHlwZSl9fSxfZGVzZXJpYWxpemVRdWVyeVBhcmFtczpmdW5jdGlvbihl
LHQpe2oodGhpcyxlLHQsZnVuY3Rpb24oZSxyLG4pe2RlbGV0ZSB0W2VdLHRbbi5wcm9wXT1uLnJv
dXRlLmRlc2VyaWFsaXplUXVlcnlQYXJhbShyLG4udXJsS2V5LG4udHlwZSl9KX0sX3BydW5lRGVm
YXVsdFF1ZXJ5UGFyYW1WYWx1ZXM6ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLl9xdWVyeVBhcmFt
c0ZvcihlKTtmb3IodmFyIG4gaW4gdCl7dmFyIGk9ci5tYXBbbl07aSYmaS5zZXJpYWxpemVkRGVm
YXVsdFZhbHVlPT09dFtuXSYmZGVsZXRlIHRbbl19fSxfZG9UcmFuc2l0aW9uOmZ1bmN0aW9uKGUs
dCxyKXt2YXIgbj1lfHxtLmdldEFjdGl2ZVRhcmdldE5hbWUodGhpcy5yb3V0ZXIpLGk9e307dGhp
cy5yb3V0ZXIuYWN0aXZlVHJhbnNpdGlvbiYmbC5kZWZhdWx0KGksdGhpcy5yb3V0ZXIuYWN0aXZl
VHJhbnNpdGlvbi5xdWVyeVBhcmFtcyksbC5kZWZhdWx0KGksciksdGhpcy5fcHJlcGFyZVF1ZXJ5
UGFyYW1zKG4sdCxpKTt2YXIgbz1tLnJvdXRlQXJncyhuLHQsaSksYT10aGlzLnJvdXRlci50cmFu
c2l0aW9uVG8uYXBwbHkodGhpcy5yb3V0ZXIsbyk7cmV0dXJuIEEoYSx0aGlzKSxhfSxfcHJlcGFy
ZVF1ZXJ5UGFyYW1zOmZ1bmN0aW9uKGUsdCxyKXt0aGlzLl9oeWRyYXRlVW5zdXBwbGllZFF1ZXJ5
UGFyYW1zKGUsdCxyKSx0aGlzLl9zZXJpYWxpemVRdWVyeVBhcmFtcyhlLHIpLHRoaXMuX3BydW5l
RGVmYXVsdFF1ZXJ5UGFyYW1WYWx1ZXMoZSxyKX0sX3F1ZXJ5UGFyYW1zRm9yOmZ1bmN0aW9uKGUp
e2lmKHRoaXMuX3FwQ2FjaGVbZV0pcmV0dXJuIHRoaXMuX3FwQ2FjaGVbZV07dmFyIHQ9e30scj1b
XTt0aGlzLl9xcENhY2hlW2VdPXttYXA6dCxxcHM6cn07Zm9yKHZhciBuPXRoaXMucm91dGVyLG89
bi5yZWNvZ25pemVyLmhhbmRsZXJzRm9yKGUpLGE9MCxzPW8ubGVuZ3RoO2E8czsrK2Epe3ZhciB1
PW9bYV0sYz1uLmdldEhhbmRsZXIodS5oYW5kbGVyKSxmPWkuZ2V0KGMsIl9xcCIpO2YmJihsLmRl
ZmF1bHQodCxmLm1hcCksci5wdXNoLmFwcGx5KHIsZi5xcHMpKX1yZXR1cm57cXBzOnIsbWFwOnR9
fSxfaHlkcmF0ZVVuc3VwcGxpZWRRdWVyeVBhcmFtczpmdW5jdGlvbihlLHQscil7dmFyIG49Tih0
aGlzLGUsdCksbz1uLmhhbmRsZXJJbmZvcyxhPXRoaXMuX2J1Y2tldENhY2hlO20uc3Rhc2hQYXJh
bU5hbWVzKHRoaXMsbyk7Zm9yKHZhciBzPTAsdT1vLmxlbmd0aDtzPHU7KytzKWZvcih2YXIgbD1v
W3NdLmhhbmRsZXIsYz1pLmdldChsLCJfcXAiKSxmPTAsZD1jLnFwcy5sZW5ndGg7ZjxkOysrZil7
dmFyIHA9Yy5xcHNbZl0saD1wLnByb3AgaW4gciYmcC5wcm9wfHxwLnNjb3BlZFByb3BlcnR5TmFt
ZSBpbiByJiZwLnNjb3BlZFByb3BlcnR5TmFtZTtpZihoKWghPT1wLnNjb3BlZFByb3BlcnR5TmFt
ZSYmKHJbcC5zY29wZWRQcm9wZXJ0eU5hbWVdPXJbaF0sZGVsZXRlIHJbaF0pO2Vsc2V7dmFyIHY9
bS5jYWxjdWxhdGVDYWNoZUtleShwLmN0cmwscC5wYXJ0cyxuLnBhcmFtcyk7cltwLnNjb3BlZFBy
b3BlcnR5TmFtZV09YS5sb29rdXAodixwLnByb3AscC5kZWZhdWx0VmFsdWUpfX19LF9zY2hlZHVs
ZUxvYWRpbmdFdmVudDpmdW5jdGlvbihlLHQpe3RoaXMuX2NhbmNlbFNsb3dUcmFuc2l0aW9uVGlt
ZXIoKSx0aGlzLl9zbG93VHJhbnNpdGlvblRpbWVyPWMuZGVmYXVsdC5zY2hlZHVsZU9uY2UoInJv
dXRlclRyYW5zaXRpb25zIix0aGlzLCJfaGFuZGxlU2xvd1RyYW5zaXRpb24iLGUsdCl9LGN1cnJl
bnRTdGF0ZTpudWxsLHRhcmdldFN0YXRlOm51bGwsX2hhbmRsZVNsb3dUcmFuc2l0aW9uOmZ1bmN0
aW9uKGUsdCl7dGhpcy5yb3V0ZXIuYWN0aXZlVHJhbnNpdGlvbiYmKHRoaXMuc2V0KCJ0YXJnZXRT
dGF0ZSIsYi5kZWZhdWx0LmNyZWF0ZSh7ZW1iZXJSb3V0ZXI6dGhpcyxyb3V0ZXJKczp0aGlzLnJv
dXRlcixyb3V0ZXJKc1N0YXRlOnRoaXMucm91dGVyLmFjdGl2ZVRyYW5zaXRpb24uc3RhdGV9KSks
ZS50cmlnZ2VyKCEwLCJsb2FkaW5nIixlLHQpKX0sX2NhbmNlbFNsb3dUcmFuc2l0aW9uVGltZXI6
ZnVuY3Rpb24oKXt0aGlzLl9zbG93VHJhbnNpdGlvblRpbWVyJiZjLmRlZmF1bHQuY2FuY2VsKHRo
aXMuX3Nsb3dUcmFuc2l0aW9uVGltZXIpLHRoaXMuX3Nsb3dUcmFuc2l0aW9uVGltZXI9bnVsbH0s
X21hcmtFcnJvckFzSGFuZGxlZDpmdW5jdGlvbihlKXt0aGlzLl9oYW5kbGVkRXJyb3JzW2VdPSEw
fSxfaXNFcnJvckhhbmRsZWQ6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2hhbmRsZWRFcnJvcnNb
ZV19LF9jbGVhckhhbmRsZWRFcnJvcjpmdW5jdGlvbihlKXtkZWxldGUgdGhpcy5faGFuZGxlZEVy
cm9yc1tlXX19KSxIPXt3aWxsUmVzb2x2ZU1vZGVsOmZ1bmN0aW9uKGUsdCl7dC5yb3V0ZXIuX3Nj
aGVkdWxlTG9hZGluZ0V2ZW50KGUsdCl9LGVycm9yOmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yLnJv
dXRlcixpPWsocix0LGZ1bmN0aW9uKHQscil7dmFyIGk9RSh0LHIsImVycm9yIik7cmV0dXJuIWl8
fHZvaWQgbi5pbnRlcm1lZGlhdGVUcmFuc2l0aW9uVG8oaSxlKX0pO3JldHVybiBpJiZPKHIucm91
dGVyLCJhcHBsaWNhdGlvbl9lcnJvciIpP3ZvaWQgbi5pbnRlcm1lZGlhdGVUcmFuc2l0aW9uVG8o
ImFwcGxpY2F0aW9uX2Vycm9yIixlKTp2b2lkIEMoZSwiRXJyb3Igd2hpbGUgcHJvY2Vzc2luZyBy
b3V0ZTogIit0LnRhcmdldE5hbWUpfSxsb2FkaW5nOmZ1bmN0aW9uKGUsdCl7dmFyIHI9dC5yb3V0
ZXIsbj1rKHQsZSxmdW5jdGlvbih0LG4pe3ZhciBpPUUodCxuLCJsb2FkaW5nIik7cmV0dXJuIGk/
dm9pZCByLmludGVybWVkaWF0ZVRyYW5zaXRpb25UbyhpKTplLnBpdm90SGFuZGxlciE9PXR8fHZv
aWQgMH0pO2lmKG4mJk8odC5yb3V0ZXIsImFwcGxpY2F0aW9uX2xvYWRpbmciKSlyZXR1cm4gdm9p
ZCByLmludGVybWVkaWF0ZVRyYW5zaXRpb25UbygiYXBwbGljYXRpb25fbG9hZGluZyIpfX07Ri5y
ZW9wZW5DbGFzcyh7cm91dGVyOm51bGwsbWFwOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmRzbENh
bGxiYWNrc3x8KHRoaXMuZHNsQ2FsbGJhY2tzPVtdLHRoaXMucmVvcGVuQ2xhc3Moe2RzbENhbGxi
YWNrczp0aGlzLmRzbENhbGxiYWNrc30pKSx0aGlzLmRzbENhbGxiYWNrcy5wdXNoKGUpLHRoaXN9
LF9yb3V0ZVBhdGg6ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlLHQpe2Zvcih2YXIgcj0wLG49ZS5s
ZW5ndGg7cjxuOysrcilpZihlW3JdIT09dFtyXSlyZXR1cm4hMTtyZXR1cm4hMH1mb3IodmFyIHIs
bixpLG89W10sYT0xLHM9ZS5sZW5ndGg7YTxzO2ErKyl7Zm9yKHI9ZVthXS5uYW1lLG49ci5zcGxp
dCgiLiIpLGk9SS5jYWxsKG8pO2kubGVuZ3RoJiYhdChpLG4pOylpLnNoaWZ0KCk7by5wdXNoLmFw
cGx5KG8sbi5zbGljZShpLmxlbmd0aCkpfXJldHVybiBvLmpvaW4oIi4iKX19KSxlLmRlZmF1bHQ9
Rn0pLGUoImVtYmVyLXJvdXRpbmcvc3lzdGVtL3JvdXRlcl9zdGF0ZSIsWyJleHBvcnRzIiwiZW1i
ZXItbWV0YWwvaXNfZW1wdHkiLCJlbWJlci1ydW50aW1lL3N5c3RlbS9vYmplY3QiLCJlbWJlci1t
ZXRhbC9hc3NpZ24iXSxmdW5jdGlvbihlLHQscixuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaShl
LHQpe3ZhciByO2ZvcihyIGluIGUpaWYoZS5oYXNPd25Qcm9wZXJ0eShyKSYmZVtyXSE9PXRbcl0p
cmV0dXJuITE7Zm9yKHIgaW4gdClpZih0Lmhhc093blByb3BlcnR5KHIpJiZlW3JdIT09dFtyXSly
ZXR1cm4hMTtyZXR1cm4hMH12YXIgbz1PYmplY3Qua2V5cyxhPXIuZGVmYXVsdC5leHRlbmQoe2Vt
YmVyUm91dGVyOm51bGwscm91dGVySnM6bnVsbCxyb3V0ZXJKc1N0YXRlOm51bGwsaXNBY3RpdmVJ
bnRlbnQ6ZnVuY3Rpb24oZSxyLGEscyl7dmFyIHU9dGhpcy5yb3V0ZXJKc1N0YXRlO2lmKCF0aGlz
LnJvdXRlckpzLmlzQWN0aXZlSW50ZW50KGUscixudWxsLHUpKXJldHVybiExO3ZhciBsPXQuZGVm
YXVsdChvKGEpKTtpZihzJiYhbCl7dmFyIGM9e307cmV0dXJuIG4uZGVmYXVsdChjLGEpLHRoaXMu
ZW1iZXJSb3V0ZXIuX3ByZXBhcmVRdWVyeVBhcmFtcyhlLHIsYyksaShjLHUucXVlcnlQYXJhbXMp
fXJldHVybiEwfX0pO2UuZGVmYXVsdD1hfSksZSgiZW1iZXItcm91dGluZy91dGlscyIsWyJleHBv
cnRzIiwiZW1iZXItbWV0YWwvYXNzaWduIiwiZW1iZXItbWV0YWwvcHJvcGVydHlfZ2V0Il0sZnVu
Y3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUsdCxyKXt2YXIgbj1bXTtyZXR1
cm4ic3RyaW5nIj09dHlwZW9mIGUmJm4ucHVzaCgiIitlKSxuLnB1c2guYXBwbHkobix0KSxuLnB1
c2goe3F1ZXJ5UGFyYW1zOnJ9KSxufWZ1bmN0aW9uIGkoZSl7dmFyIHQ9ZS5hY3RpdmVUcmFuc2l0
aW9uP2UuYWN0aXZlVHJhbnNpdGlvbi5zdGF0ZS5oYW5kbGVySW5mb3M6ZS5zdGF0ZS5oYW5kbGVy
SW5mb3M7cmV0dXJuIHRbdC5sZW5ndGgtMV0ubmFtZX1mdW5jdGlvbiBvKGUsdCl7aWYoIXQuX25h
bWVzU3Rhc2hlZCl7Zm9yKHZhciByPXRbdC5sZW5ndGgtMV0ubmFtZSxuPWUucm91dGVyLnJlY29n
bml6ZXIuaGFuZGxlcnNGb3IociksaT1udWxsLG89MCxhPXQubGVuZ3RoO288YTsrK28pe3ZhciBz
PXRbb10sdT1uW29dLm5hbWVzO3UubGVuZ3RoJiYoaT1zKSxzLl9uYW1lcz11O3ZhciBsPXMuaGFu
ZGxlcjtsLl9zdGFzaE5hbWVzKHMsaSl9dC5fbmFtZXNTdGFzaGVkPSEwfX1mdW5jdGlvbiBhKGUs
dCl7Zm9yKHZhciByPWUuc3BsaXQoIi4iKSxuPSIiLGk9MCxvPXIubGVuZ3RoO2k8bztpKyspe3Zh
ciBhPXIuc2xpY2UoMCxpKzEpLmpvaW4oIi4iKTtpZigwIT09dC5pbmRleE9mKGEpKWJyZWFrO249
YX1yZXR1cm4gbn1mdW5jdGlvbiBzKGUsdCxuKXtmb3IodmFyIGk9dHx8W10sbz0iIixzPTAsdT1p
Lmxlbmd0aDtzPHU7KytzKXt2YXIgbCxmPWlbc10sZD1hKGUsZik7aWYobilpZihkJiZkIGluIG4p
e3ZhciBwPTA9PT1mLmluZGV4T2YoZCk/Zi5zdWJzdHIoZC5sZW5ndGgrMSk6ZjtsPXIuZ2V0KG5b
ZF0scCl9ZWxzZSBsPXIuZ2V0KG4sZik7bys9Ijo6IitmKyI6IitsfXJldHVybiBlK28ucmVwbGFj
ZShjLCItIil9ZnVuY3Rpb24gdShlKXtpZihlLl9xcE1hcClyZXR1cm4gZS5fcXBNYXA7Zm9yKHZh
ciB0PWUuX3FwTWFwPXt9LHI9MCxuPWUubGVuZ3RoO3I8bjsrK3IpbChlW3JdLHQpO3JldHVybiB0
fWZ1bmN0aW9uIGwoZSxyKXt2YXIgbixpPWU7InN0cmluZyI9PXR5cGVvZiBpJiYobj17fSxuW2ld
PXthczpudWxsfSxpPW4pO2Zvcih2YXIgbyBpbiBpKXtpZighaS5oYXNPd25Qcm9wZXJ0eShvKSly
ZXR1cm47dmFyIGE9aVtvXTsic3RyaW5nIj09dHlwZW9mIGEmJihhPXthczphfSksbj1yW29dfHx7
YXM6bnVsbCxzY29wZToibW9kZWwifSx0LmRlZmF1bHQobixhKSxyW29dPW59fWUucm91dGVBcmdz
PW4sZS5nZXRBY3RpdmVUYXJnZXROYW1lPWksZS5zdGFzaFBhcmFtTmFtZXM9byxlLmNhbGN1bGF0
ZUNhY2hlS2V5PXMsZS5ub3JtYWxpemVDb250cm9sbGVyUXVlcnlQYXJhbXM9dTt2YXIgYz0vXC4v
Z30pLGUoImVtYmVyLXJ1bnRpbWUvY29tcGFyZSIsWyJleHBvcnRzIiwiZW1iZXItcnVudGltZS91
dGlscyIsImVtYmVyLXJ1bnRpbWUvbWl4aW5zL2NvbXBhcmFibGUiXSxmdW5jdGlvbihlLHQscil7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSx0KXt2YXIgcj1lLXQ7cmV0dXJuKHI+MCktKHI8MCl9
ZnVuY3Rpb24gaShlLGEpe2lmKGU9PT1hKXJldHVybiAwO3ZhciBzPXQudHlwZU9mKGUpLHU9dC50
eXBlT2YoYSk7aWYoci5kZWZhdWx0KXtpZigiaW5zdGFuY2UiPT09cyYmci5kZWZhdWx0LmRldGVj
dChlKSYmZS5jb25zdHJ1Y3Rvci5jb21wYXJlKXJldHVybiBlLmNvbnN0cnVjdG9yLmNvbXBhcmUo
ZSxhKTtpZigiaW5zdGFuY2UiPT09dSYmci5kZWZhdWx0LmRldGVjdChhKSYmYS5jb25zdHJ1Y3Rv
ci5jb21wYXJlKXJldHVybiBhLmNvbnN0cnVjdG9yLmNvbXBhcmUoYSxlKSotMX12YXIgbD1uKG9b
c10sb1t1XSk7aWYoMCE9PWwpcmV0dXJuIGw7c3dpdGNoKHMpe2Nhc2UiYm9vbGVhbiI6Y2FzZSJu
dW1iZXIiOnJldHVybiBuKGUsYSk7Y2FzZSJzdHJpbmciOnJldHVybiBuKGUubG9jYWxlQ29tcGFy
ZShhKSwwKTtjYXNlImFycmF5Ijpmb3IodmFyIGM9ZS5sZW5ndGgsZj1hLmxlbmd0aCxkPU1hdGgu
bWluKGMsZikscD0wO3A8ZDtwKyspe3ZhciBoPWkoZVtwXSxhW3BdKTtpZigwIT09aClyZXR1cm4g
aH1yZXR1cm4gbihjLGYpO2Nhc2UiaW5zdGFuY2UiOnJldHVybiByLmRlZmF1bHQmJnIuZGVmYXVs
dC5kZXRlY3QoZSk/ZS5jb21wYXJlKGUsYSk6MDtjYXNlImRhdGUiOnJldHVybiBuKGUuZ2V0VGlt
ZSgpLGEuZ2V0VGltZSgpKTtkZWZhdWx0OnJldHVybiAwfX1lLmRlZmF1bHQ9aTt2YXIgbz17dW5k
ZWZpbmVkOjAsbnVsbDoxLGJvb2xlYW46MixudW1iZXI6MyxzdHJpbmc6NCxhcnJheTo1LG9iamVj
dDo2LGluc3RhbmNlOjcsZnVuY3Rpb246OCxjbGFzczo5LGRhdGU6MTB9fSksZSgiZW1iZXItcnVu
dGltZS9jb21wdXRlZC9yZWR1Y2VfY29tcHV0ZWRfbWFjcm9zIixbImV4cG9ydHMiLCJlbWJlci1t
ZXRhbC9kZWJ1ZyIsImVtYmVyLW1ldGFsL3Byb3BlcnR5X2dldCIsImVtYmVyLW1ldGFsL2Vycm9y
IiwiZW1iZXItbWV0YWwvY29tcHV0ZWQiLCJlbWJlci1tZXRhbC9vYnNlcnZlciIsImVtYmVyLXJ1
bnRpbWUvY29tcGFyZSIsImVtYmVyLXJ1bnRpbWUvdXRpbHMiLCJlbWJlci1ydW50aW1lL3N5c3Rl
bS9uYXRpdmVfYXJyYXkiLCJlbWJlci1tZXRhbC9pc19ub25lIiwiZW1iZXItbWV0YWwvZ2V0X3By
b3BlcnRpZXMiLCJlbWJlci1tZXRhbC9lbXB0eV9vYmplY3QiLCJlbWJlci1tZXRhbC91dGlscyIs
ImVtYmVyLW1ldGFsL3dlYWtfbWFwIl0sZnVuY3Rpb24oZSx0LHIsbixpLG8sYSxzLHUsbCxjLGYs
ZCxwKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaChlLHQsbil7cmV0dXJuIGkuY29tcHV0ZWQoZSsi
LltdIixmdW5jdGlvbigpe3ZhciBpPXRoaXMsbz1yLmdldCh0aGlzLGUpO3JldHVybiBudWxsPT09
b3x8Im9iamVjdCIhPXR5cGVvZiBvP246by5yZWR1Y2UoZnVuY3Rpb24oZSxyLG4sbyl7cmV0dXJu
IHQuY2FsbChpLGUscixuLG8pfSxuKX0pLnJlYWRPbmx5KCl9ZnVuY3Rpb24gbShlLHQpe3ZhciBu
O3JldHVybi9AZWFjaC8udGVzdChlKT9uPWUucmVwbGFjZSgvXC5AZWFjaC4qJC8sIiIpOihuPWUs
ZSs9Ii5bXSIpLGkuY29tcHV0ZWQoZSxmdW5jdGlvbigpe3ZhciBlPXIuZ2V0KHRoaXMsbik7cmV0
dXJuIHMuaXNBcnJheShlKT91LkEodC5jYWxsKHRoaXMsZSkpOnUuQSgpfSkucmVhZE9ubHkoKX1m
dW5jdGlvbiB2KGUsdCl7dmFyIHI9ZS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUrIi5bXSJ9KTty
ZXR1cm4gci5wdXNoKGZ1bmN0aW9uKCl7cmV0dXJuIHUuQSh0LmNhbGwodGhpcyxlKSl9KSxpLmNv
bXB1dGVkLmFwcGx5KHRoaXMscikucmVhZE9ubHkoKX1mdW5jdGlvbiBiKGUpe3JldHVybiBoKGUs
ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSt0fSwwKX1mdW5jdGlvbiBnKGUpe3JldHVybiBoKGUsZnVu
Y3Rpb24oZSx0KXtyZXR1cm4gTWF0aC5tYXgoZSx0KX0sLSgxLzApKX1mdW5jdGlvbiB5KGUpe3Jl
dHVybiBoKGUsZnVuY3Rpb24oZSx0KXtyZXR1cm4gTWF0aC5taW4oZSx0KX0sMS8wKX1mdW5jdGlv
biBfKGUsdCl7cmV0dXJuIG0oZSxmdW5jdGlvbihlKXtyZXR1cm4gZS5tYXAodCx0aGlzKX0pfWZ1
bmN0aW9uIHcoZSx0KXtyZXR1cm4gXyhlKyIuQGVhY2guIit0LGZ1bmN0aW9uKGUpe3JldHVybiBy
LmdldChlLHQpfSl9ZnVuY3Rpb24geChlLHQpe3JldHVybiBtKGUsZnVuY3Rpb24oZSl7cmV0dXJu
IGUuZmlsdGVyKHQsdGhpcyl9KX1mdW5jdGlvbiBrKGUsdCxuKXt2YXIgaTtyZXR1cm4gaT0yPT09
YXJndW1lbnRzLmxlbmd0aD9mdW5jdGlvbihlKXtyZXR1cm4gci5nZXQoZSx0KX06ZnVuY3Rpb24o
ZSl7cmV0dXJuIHIuZ2V0KGUsdCk9PT1ufSx4KGUrIi5AZWFjaC4iK3QsaSl9ZnVuY3Rpb24gQygp
e2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHQ9QXJyYXkoZSksbj0wO248ZTtuKyspdFtuXT1h
cmd1bWVudHNbbl07cmV0dXJuIHYodCxmdW5jdGlvbihlKXt2YXIgdD10aGlzLG49dS5BKCk7cmV0
dXJuIGUuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgaT1yLmdldCh0LGUpO3MuaXNBcnJheShpKSYm
aS5mb3JFYWNoKGZ1bmN0aW9uKGUpe24uaW5kZXhPZihlKT09PS0xJiZuLnB1c2goZSl9KX0pLG59
KX1mdW5jdGlvbiBFKGUsdCl7cmV0dXJuIGkuY29tcHV0ZWQoZSsiLltdIixmdW5jdGlvbigpe3Zh
ciBuPXUuQSgpLGk9bmV3IGYuZGVmYXVsdCxvPXIuZ2V0KHRoaXMsZSk7cmV0dXJuIHMuaXNBcnJh
eShvKSYmby5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciBvPWQuZ3VpZEZvcihyLmdldChlLHQpKTtv
IGluIGl8fChpW29dPSEwLG4ucHVzaChlKSl9KSxufSkucmVhZE9ubHkoKX1mdW5jdGlvbiBPKCl7
Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsdD1BcnJheShlKSxuPTA7bjxlO24rKyl0W25dPWFy
Z3VtZW50c1tuXTtyZXR1cm4gdih0LGZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsbj1lLm1hcChmdW5j
dGlvbihlKXt2YXIgbj1yLmdldCh0LGUpO3JldHVybiBzLmlzQXJyYXkobik/bjpbXX0pLGk9bi5w
b3AoKS5maWx0ZXIoZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTA7dDxuLmxlbmd0aDt0Kyspe2Zvcih2
YXIgcj0hMSxpPW5bdF0sbz0wO288aS5sZW5ndGg7bysrKWlmKGlbb109PT1lKXtyPSEwO2JyZWFr
fWlmKHI9PT0hMSlyZXR1cm4hMX1yZXR1cm4hMH0pO3JldHVybiB1LkEoaSl9KX1mdW5jdGlvbiBU
KGUsdCl7aWYoMiE9PWFyZ3VtZW50cy5sZW5ndGgpdGhyb3cgbmV3IG4uZGVmYXVsdCgic2V0RGlm
ZiByZXF1aXJlcyBleGFjdGx5IHR3byBkZXBlbmRlbnQgYXJyYXlzLiIpO3JldHVybiBpLmNvbXB1
dGVkKGUrIi5bXSIsdCsiLltdIixmdW5jdGlvbigpe3ZhciByPXRoaXMuZ2V0KGUpLG49dGhpcy5n
ZXQodCk7cmV0dXJuIHMuaXNBcnJheShyKT9zLmlzQXJyYXkobik/ci5maWx0ZXIoZnVuY3Rpb24o
ZSl7cmV0dXJuIG4uaW5kZXhPZihlKT09PS0xfSk6dS5BKHIpOnUuQSgpfSkucmVhZE9ubHkoKX1m
dW5jdGlvbiBOKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsdD1BcnJheShlKSxyPTA7cjxl
O3IrKyl0W3JdPWFyZ3VtZW50c1tyXTtyZXR1cm4gdih0LGZ1bmN0aW9uKCl7dmFyIGU9Yy5kZWZh
dWx0KHRoaXMsdCkscj11LkEoKTtmb3IodmFyIG4gaW4gZSllLmhhc093blByb3BlcnR5KG4pJiYo
bC5kZWZhdWx0KGVbbl0pP3IucHVzaChudWxsKTpyLnB1c2goZVtuXSkpO3JldHVybiByfSl9ZnVu
Y3Rpb24gUyhlLHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0P0EoZSx0KTpQKGUsdCl9ZnVu
Y3Rpb24gQShlLHQpe3JldHVybiBtKGUsZnVuY3Rpb24oZSl7dmFyIHI9dGhpcztyZXR1cm4gZS5z
bGljZSgpLnNvcnQoZnVuY3Rpb24oZSxuKXtyZXR1cm4gdC5jYWxsKHIsZSxuKX0pfSl9ZnVuY3Rp
b24gUChlLHQpe3ZhciBuPW5ldyBpLkNvbXB1dGVkUHJvcGVydHkoZnVuY3Rpb24oaSl7ZnVuY3Rp
b24gYSgpe3RoaXMubm90aWZ5UHJvcGVydHlDaGFuZ2UoaSl9dmFyIGw9dGhpcyxjPSJAdGhpcyI9
PT1lLGY9ci5nZXQodGhpcyx0KSxkPWooZiksaD1uLl9hY3RpdmVPYnNlcnZlck1hcHx8KG4uX2Fj
dGl2ZU9ic2VydmVyTWFwPW5ldyBwLmRlZmF1bHQpLG09aC5nZXQodGhpcyk7bSYmbS5mb3JFYWNo
KGZ1bmN0aW9uKGUpe28ucmVtb3ZlT2JzZXJ2ZXIuYXBwbHkobnVsbCxlKX0pLG09ZC5tYXAoZnVu
Y3Rpb24odCl7dmFyIHI9dFswXSxuPWM/IkBlYWNoLiIrcjplKyIuQGVhY2guIityLGk9W2wsbixh
XTtyZXR1cm4gby5hZGRPYnNlcnZlci5hcHBseShudWxsLGkpLGl9KSxoLnNldCh0aGlzLG0pO3Zh
ciB2PWM/dGhpczpyLmdldCh0aGlzLGUpO3JldHVybiBzLmlzQXJyYXkodik/Uih2LGQpOnUuQSgp
fSk7cmV0dXJuIG4uX2FjdGl2ZU9ic2VydmVyTWFwPXZvaWQgMCxuLnByb3BlcnR5KHQrIi5bXSIp
LnJlYWRPbmx5KCl9ZnVuY3Rpb24gaihlKXtyZXR1cm4gZS5tYXAoZnVuY3Rpb24oZSl7dmFyIHQ9
ZS5zcGxpdCgiOiIpLHI9dFswXSxuPXRbMV07cmV0dXJuIG49bnx8ImFzYyIsW3Isbl19KX1mdW5j
dGlvbiBSKGUsdCl7cmV0dXJuIHUuQShlLnNsaWNlKCkuc29ydChmdW5jdGlvbihlLG4pe2Zvcih2
YXIgaT0wO2k8dC5sZW5ndGg7aSsrKXt2YXIgbz10W2ldLHM9b1swXSx1PW9bMV0sbD1hLmRlZmF1
bHQoci5nZXQoZSxzKSxyLmdldChuLHMpKTtpZigwIT09bClyZXR1cm4iZGVzYyI9PT11Py0xKmw6
bH1yZXR1cm4gMH0pKX1lLnN1bT1iLGUubWF4PWcsZS5taW49eSxlLm1hcD1fLGUubWFwQnk9dyxl
LmZpbHRlcj14LGUuZmlsdGVyQnk9ayxlLnVuaXE9QyxlLnVuaXFCeT1FLGUuaW50ZXJzZWN0PU8s
ZS5zZXREaWZmPVQsZS5jb2xsZWN0PU4sZS5zb3J0PVM7dmFyIEw9QztlLnVuaW9uPUx9KSxlKCJl
bWJlci1ydW50aW1lL2NvbnRyb2xsZXJzL2NvbnRyb2xsZXIiLFsiZXhwb3J0cyIsImVtYmVyLW1l
dGFsL2RlYnVnIiwiZW1iZXItcnVudGltZS9zeXN0ZW0vb2JqZWN0IiwiZW1iZXItcnVudGltZS9t
aXhpbnMvY29udHJvbGxlciIsImVtYmVyLXJ1bnRpbWUvaW5qZWN0IiwiZW1iZXItcnVudGltZS9t
aXhpbnMvYWN0aW9uX2hhbmRsZXIiXSxmdW5jdGlvbihlLHQscixuLGksbyl7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIGEoZSl7fXZhciBzPXIuZGVmYXVsdC5leHRlbmQobi5kZWZhdWx0KTtvLmRlcHJl
Y2F0ZVVuZGVyc2NvcmVBY3Rpb25zKHMpLGkuY3JlYXRlSW5qZWN0aW9uSGVscGVyKCJjb250cm9s
bGVyIixhKSxlLmRlZmF1bHQ9c30pLGUoImVtYmVyLXJ1bnRpbWUvY29weSIsWyJleHBvcnRzIiwi
ZW1iZXItbWV0YWwvZGVidWciLCJlbWJlci1ydW50aW1lL3N5c3RlbS9vYmplY3QiLCJlbWJlci1y
dW50aW1lL21peGlucy9jb3B5YWJsZSJdLGZ1bmN0aW9uKGUsdCxyLG4peyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiBpKGUsdCxyLG8pe3ZhciBhLHMsdTtpZigib2JqZWN0IiE9dHlwZW9mIGV8fG51bGw9
PT1lKXJldHVybiBlO2lmKHQmJihzPXIuaW5kZXhPZihlKSk+PTApcmV0dXJuIG9bc107aWYoQXJy
YXkuaXNBcnJheShlKSl7aWYoYT1lLnNsaWNlKCksdClmb3Iocz1hLmxlbmd0aDstLXM+PTA7KWFb
c109aShhW3NdLHQscixvKX1lbHNlIGlmKG4uZGVmYXVsdCYmbi5kZWZhdWx0LmRldGVjdChlKSlh
PWUuY29weSh0LHIsbyk7ZWxzZSBpZihlIGluc3RhbmNlb2YgRGF0ZSlhPW5ldyBEYXRlKGUuZ2V0
VGltZSgpKTtlbHNle2E9e307Zm9yKHUgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3Bl
cnR5LmNhbGwoZSx1KSYmIl9fIiE9PXUuc3Vic3RyaW5nKDAsMikmJihhW3VdPXQ/aShlW3VdLHQs
cixvKTplW3VdKX1yZXR1cm4gdCYmKHIucHVzaChlKSxvLnB1c2goYSkpLGF9ZnVuY3Rpb24gbyhl
LHQpe3JldHVybiJvYmplY3QiIT10eXBlb2YgZXx8bnVsbD09PWU/ZTpuLmRlZmF1bHQmJm4uZGVm
YXVsdC5kZXRlY3QoZSk/ZS5jb3B5KHQpOmkoZSx0LHQ/W106bnVsbCx0P1tdOm51bGwpfWUuZGVm
YXVsdD1vfSksZSgiZW1iZXItcnVudGltZS9jb3JlIixbImV4cG9ydHMiXSxmdW5jdGlvbihlKXsi
dXNlIHN0cmljdCJ9KSxlKCJlbWJlci1ydW50aW1lL2V4dC9mdW5jdGlvbiIsWyJleHBvcnRzIiwi
ZW1iZXItbWV0YWwvY29yZSIsImVtYmVyLW1ldGFsL2RlYnVnIiwiZW1iZXItbWV0YWwvY29tcHV0
ZWQiLCJlbWJlci1tZXRhbC9taXhpbiJdLGZ1bmN0aW9uKGUsdCxyLG4saSl7InVzZSBzdHJpY3Qi
O3ZhciBvPUFycmF5LnByb3RvdHlwZS5zbGljZSxhPUZ1bmN0aW9uLnByb3RvdHlwZTsodC5kZWZh
dWx0LkVYVEVORF9QUk9UT1RZUEVTPT09ITB8fHQuZGVmYXVsdC5FWFRFTkRfUFJPVE9UWVBFUy5G
dW5jdGlvbikmJihhLnByb3BlcnR5PWZ1bmN0aW9uKCl7dmFyIGU9bi5jb21wdXRlZCh0aGlzKTty
ZXR1cm4gZS5wcm9wZXJ0eS5hcHBseShlLGFyZ3VtZW50cyl9LGEub2JzZXJ2ZXM9ZnVuY3Rpb24o
KXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCx0PUFycmF5KGUpLHI9MDtyPGU7cisrKXRbcl09
YXJndW1lbnRzW3JdO3JldHVybiB0LnB1c2godGhpcyksaS5vYnNlcnZlci5hcHBseSh0aGlzLHQp
fSxhLl9vYnNlcnZlc0ltbWVkaWF0ZWx5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub2JzZXJ2ZXMu
YXBwbHkodGhpcyxhcmd1bWVudHMpfSxhLm9ic2VydmVzSW1tZWRpYXRlbHk9ci5kZXByZWNhdGVG
dW5jKCJGdW5jdGlvbiNvYnNlcnZlc0ltbWVkaWF0ZWx5IGlzIGRlcHJlY2F0ZWQuIFVzZSBGdW5j
dGlvbiNvYnNlcnZlcyBpbnN0ZWFkIix7aWQ6ImVtYmVyLXJ1bnRpbWUuZXh0LWZ1bmN0aW9uIix1
bnRpbDoiMy4wLjAifSxhLl9vYnNlcnZlc0ltbWVkaWF0ZWx5KSxhLm9uPWZ1bmN0aW9uKCl7dmFy
IGU9by5jYWxsKGFyZ3VtZW50cyk7cmV0dXJuIHRoaXMuX19lbWJlcl9saXN0ZW5zX189ZSx0aGlz
fSl9KSxlKCJlbWJlci1ydW50aW1lL2V4dC9yc3ZwIixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9j
b3JlIiwicmVxdWlyZSIsImVtYmVyLW1ldGFsL2RlYnVnIiwiZW1iZXItbWV0YWwvbG9nZ2VyIiwi
ZW1iZXItbWV0YWwvcnVuX2xvb3AiLCJyc3ZwIl0sZnVuY3Rpb24oZSx0LHIsbixpLG8sYSl7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIHMoZSl7dmFyIG47aWYoZSYmZS5lcnJvclRocm93bj8obj1lLmVy
cm9yVGhyb3duLCJzdHJpbmciPT10eXBlb2YgbiYmKG49bmV3IEVycm9yKG4pKSxPYmplY3QuZGVm
aW5lUHJvcGVydHkobiwiX19yZWFzb25fd2l0aF9lcnJvcl90aHJvd25fXyIse3ZhbHVlOmUsZW51
bWVyYWJsZTohMX0pKTpuPWUsKCFufHwiVW5yZWNvZ25pemVkVVJMRXJyb3IiIT09bi5uYW1lKSYm
biYmIlRyYW5zaXRpb25BYm9ydGVkIiE9PW4ubmFtZSlpZih0LmRlZmF1bHQudGVzdGluZyl7aWYo
IWwmJnIuaGFzKGMpJiYobD1yLmRlZmF1bHQoYykuZGVmYXVsdCksIWx8fCFsLmFkYXB0ZXIpdGhy
b3cgbjtsLmFkYXB0ZXIuZXhjZXB0aW9uKG4pLGkuZGVmYXVsdC5lcnJvcihuLnN0YWNrKX1lbHNl
IHQuZGVmYXVsdC5vbmVycm9yP3QuZGVmYXVsdC5vbmVycm9yKG4pOmkuZGVmYXVsdC5lcnJvcihu
LnN0YWNrKX1mdW5jdGlvbiB1KGUpe28uZGVmYXVsdC5zY2hlZHVsZShvLmRlZmF1bHQucXVldWVz
W28uZGVmYXVsdC5xdWV1ZXMubGVuZ3RoLTFdLGUpfWUub25lcnJvckRlZmF1bHQ9cyxlLmFmdGVy
PXU7dmFyIGwsYz0iZW1iZXItdGVzdGluZy90ZXN0IixmPWZ1bmN0aW9uKCl7dC5kZWZhdWx0LlRl
c3QmJnQuZGVmYXVsdC5UZXN0LmFkYXB0ZXImJnQuZGVmYXVsdC5UZXN0LmFkYXB0ZXIuYXN5bmNT
dGFydCgpfSxkPWZ1bmN0aW9uKCl7dC5kZWZhdWx0LlRlc3QmJnQuZGVmYXVsdC5UZXN0LmFkYXB0
ZXImJnQuZGVmYXVsdC5UZXN0LmFkYXB0ZXIuYXN5bmNFbmQoKX07YS5jb25maWd1cmUoImFzeW5j
IixmdW5jdGlvbihlLHIpe3ZhciBuPSFvLmRlZmF1bHQuY3VycmVudFJ1bkxvb3A7dC5kZWZhdWx0
LnRlc3RpbmcmJm4mJmYoKSxvLmRlZmF1bHQuYmFja2J1cm5lci5zY2hlZHVsZSgiYWN0aW9ucyIs
ZnVuY3Rpb24oKXt0LmRlZmF1bHQudGVzdGluZyYmbiYmZCgpLGUocil9KX0pLGEub24oImVycm9y
IixzKSxhLmNvbmZpZ3VyZSgiYWZ0ZXIiLHUpLGUuZGVmYXVsdD1hfSksZSgiZW1iZXItcnVudGlt
ZS9leHQvc3RyaW5nIixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9jb3JlIiwiZW1iZXItcnVudGlt
ZS9zeXN0ZW0vc3RyaW5nIl0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1TdHJp
bmcucHJvdG90eXBlOyh0LmRlZmF1bHQuRVhURU5EX1BST1RPVFlQRVM9PT0hMHx8dC5kZWZhdWx0
LkVYVEVORF9QUk9UT1RZUEVTLlN0cmluZykmJihuLmZtdD1mdW5jdGlvbigpe2Zvcih2YXIgZT1h
cmd1bWVudHMubGVuZ3RoLHQ9QXJyYXkoZSksbj0wO248ZTtuKyspdFtuXT1hcmd1bWVudHNbbl07
cmV0dXJuIHIuZm10KHRoaXMsdCl9LG4udz1mdW5jdGlvbigpe3JldHVybiByLncodGhpcyl9LG4u
bG9jPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsdD1BcnJheShlKSxuPTA7
bjxlO24rKyl0W25dPWFyZ3VtZW50c1tuXTtyZXR1cm4gci5sb2ModGhpcyx0KX0sbi5jYW1lbGl6
ZT1mdW5jdGlvbigpe3JldHVybiByLmNhbWVsaXplKHRoaXMpfSxuLmRlY2FtZWxpemU9ZnVuY3Rp
b24oKXtyZXR1cm4gci5kZWNhbWVsaXplKHRoaXMpfSxuLmRhc2hlcml6ZT1mdW5jdGlvbigpe3Jl
dHVybiByLmRhc2hlcml6ZSh0aGlzKX0sbi51bmRlcnNjb3JlPWZ1bmN0aW9uKCl7cmV0dXJuIHIu
dW5kZXJzY29yZSh0aGlzKX0sbi5jbGFzc2lmeT1mdW5jdGlvbigpe3JldHVybiByLmNsYXNzaWZ5
KHRoaXMpfSxuLmNhcGl0YWxpemU9ZnVuY3Rpb24oKXtyZXR1cm4gci5jYXBpdGFsaXplKHRoaXMp
fSl9KSxlKCJlbWJlci1ydW50aW1lL2luZGV4IixbImV4cG9ydHMiLCJlbWJlci1tZXRhbCIsImVt
YmVyLXJ1bnRpbWUvaXMtZXF1YWwiLCJlbWJlci1ydW50aW1lL2NvbXBhcmUiLCJlbWJlci1ydW50
aW1lL2NvcHkiLCJlbWJlci1ydW50aW1lL2luamVjdCIsImVtYmVyLXJ1bnRpbWUvc3lzdGVtL25h
bWVzcGFjZSIsImVtYmVyLXJ1bnRpbWUvc3lzdGVtL29iamVjdCIsImVtYmVyLXJ1bnRpbWUvc3lz
dGVtL2NvbnRhaW5lciIsImVtYmVyLXJ1bnRpbWUvc3lzdGVtL2FycmF5X3Byb3h5IiwiZW1iZXIt
cnVudGltZS9zeXN0ZW0vb2JqZWN0X3Byb3h5IiwiZW1iZXItcnVudGltZS9zeXN0ZW0vY29yZV9v
YmplY3QiLCJlbWJlci1ydW50aW1lL3N5c3RlbS9uYXRpdmVfYXJyYXkiLCJlbWJlci1ydW50aW1l
L3N5c3RlbS9zdHJpbmciLCJlbWJlci1ydW50aW1lL3N5c3RlbS9sYXp5X2xvYWQiLCJlbWJlci1y
dW50aW1lL21peGlucy9hcnJheSIsImVtYmVyLXJ1bnRpbWUvbWl4aW5zL2NvbXBhcmFibGUiLCJl
bWJlci1ydW50aW1lL21peGlucy9jb3B5YWJsZSIsImVtYmVyLXJ1bnRpbWUvbWl4aW5zL2VudW1l
cmFibGUiLCJlbWJlci1ydW50aW1lL21peGlucy9mcmVlemFibGUiLCJlbWJlci1ydW50aW1lL21p
eGlucy8tcHJveHkiLCJlbWJlci1ydW50aW1lL21peGlucy9vYnNlcnZhYmxlIiwiZW1iZXItcnVu
dGltZS9taXhpbnMvYWN0aW9uX2hhbmRsZXIiLCJlbWJlci1ydW50aW1lL21peGlucy9tdXRhYmxl
X2VudW1lcmFibGUiLCJlbWJlci1ydW50aW1lL21peGlucy9tdXRhYmxlX2FycmF5IiwiZW1iZXIt
cnVudGltZS9taXhpbnMvdGFyZ2V0X2FjdGlvbl9zdXBwb3J0IiwiZW1iZXItcnVudGltZS9taXhp
bnMvZXZlbnRlZCIsImVtYmVyLXJ1bnRpbWUvbWl4aW5zL3Byb21pc2VfcHJveHkiLCJlbWJlci1t
ZXRhbC9mZWF0dXJlcyIsImVtYmVyLXJ1bnRpbWUvY29tcHV0ZWQvcmVkdWNlX2NvbXB1dGVkX21h
Y3JvcyIsImVtYmVyLXJ1bnRpbWUvY29udHJvbGxlcnMvY29udHJvbGxlciIsImVtYmVyLXJ1bnRp
bWUvbWl4aW5zL2NvbnRyb2xsZXIiLCJlbWJlci1ydW50aW1lL3N5c3RlbS9zZXJ2aWNlIiwiZW1i
ZXItcnVudGltZS9leHQvcnN2cCIsImVtYmVyLXJ1bnRpbWUvZXh0L3N0cmluZyIsImVtYmVyLXJ1
bnRpbWUvZXh0L2Z1bmN0aW9uIiwiZW1iZXItcnVudGltZS91dGlscyIsImVtYmVyLXJ1bnRpbWUv
bWl4aW5zL3JlZ2lzdHJ5X3Byb3h5IiwiZW1iZXItcnVudGltZS9taXhpbnMvY29udGFpbmVyX3By
b3h5IiwiZW1iZXItcnVudGltZS9zdHJpbmdfcmVnaXN0cnkiXSxmdW5jdGlvbihlLHQscixuLGks
byxhLHMsdSxsLGMsZixkLHAsaCxtLHYsYixnLHksXyx3LHgsayxDLEUsTyxULE4sUyxBLFAsaixS
LEwsRCxNLEksRixIKXsidXNlIHN0cmljdCI7dC5kZWZhdWx0LmNvbXBhcmU9bi5kZWZhdWx0LHQu
ZGVmYXVsdC5jb3B5PWkuZGVmYXVsdCx0LmRlZmF1bHQuaXNFcXVhbD1yLmRlZmF1bHQsdC5kZWZh
dWx0LmluamVjdD1vLmRlZmF1bHQsdC5kZWZhdWx0LkFycmF5PW0uZGVmYXVsdCx0LmRlZmF1bHQu
Q29tcGFyYWJsZT12LmRlZmF1bHQsdC5kZWZhdWx0LkNvcHlhYmxlPWIuZGVmYXVsdCx0LmRlZmF1
bHQuRnJlZXphYmxlPXkuRnJlZXphYmxlLHQuZGVmYXVsdC5GUk9aRU5fRVJST1I9eS5GUk9aRU5f
RVJST1IsdC5kZWZhdWx0Lk11dGFibGVFbnVtZXJhYmxlPWsuZGVmYXVsdCx0LmRlZmF1bHQuTXV0
YWJsZUFycmF5PUMuZGVmYXVsdCx0LmRlZmF1bHQuVGFyZ2V0QWN0aW9uU3VwcG9ydD1FLmRlZmF1
bHQsdC5kZWZhdWx0LkV2ZW50ZWQ9Ty5kZWZhdWx0LHQuZGVmYXVsdC5Qcm9taXNlUHJveHlNaXhp
bj1ULmRlZmF1bHQsdC5kZWZhdWx0Lk9ic2VydmFibGU9dy5kZWZhdWx0LHQuZGVmYXVsdC50eXBl
T2Y9TS50eXBlT2YsdC5kZWZhdWx0LmlzQXJyYXk9TS5pc0FycmF5O3ZhciBWPXQuZGVmYXVsdC5j
b21wdXRlZDtWLnN1bT1TLnN1bSxWLm1pbj1TLm1pbixWLm1heD1TLm1heCxWLm1hcD1TLm1hcCxW
LnNvcnQ9Uy5zb3J0LFYuc2V0RGlmZj1TLnNldERpZmYsVi5tYXBCeT1TLm1hcEJ5LFYuZmlsdGVy
PVMuZmlsdGVyLFYuZmlsdGVyQnk9Uy5maWx0ZXJCeSxWLnVuaXE9Uy51bmlxLFYudW5pb249Uy51
bmlvbixWLmludGVyc2VjdD1TLmludGVyc2VjdCxWLmNvbGxlY3Q9Uy5jb2xsZWN0LHQuZGVmYXVs
dC5TdHJpbmc9cC5kZWZhdWx0LHQuZGVmYXVsdC5PYmplY3Q9cy5kZWZhdWx0LHQuZGVmYXVsdC5D
b250YWluZXI9dS5Db250YWluZXIsdC5kZWZhdWx0LlJlZ2lzdHJ5PXUuUmVnaXN0cnksdC5kZWZh
dWx0LmdldE93bmVyPXUuZ2V0T3duZXIsdC5kZWZhdWx0LnNldE93bmVyPXUuc2V0T3duZXIsdC5k
ZWZhdWx0Ll9SZWdpc3RyeVByb3h5TWl4aW49SS5kZWZhdWx0LHQuZGVmYXVsdC5fQ29udGFpbmVy
UHJveHlNaXhpbj1GLmRlZmF1bHQsdC5kZWZhdWx0Lk5hbWVzcGFjZT1hLmRlZmF1bHQsdC5kZWZh
dWx0LkVudW1lcmFibGU9Zy5kZWZhdWx0LHQuZGVmYXVsdC5BcnJheVByb3h5PWwuZGVmYXVsdCx0
LmRlZmF1bHQuT2JqZWN0UHJveHk9Yy5kZWZhdWx0LHQuZGVmYXVsdC5BY3Rpb25IYW5kbGVyPXgu
ZGVmYXVsdCx0LmRlZmF1bHQuQ29yZU9iamVjdD1mLmRlZmF1bHQsdC5kZWZhdWx0Lk5hdGl2ZUFy
cmF5PWQuZGVmYXVsdCx0LmRlZmF1bHQub25Mb2FkPWgub25Mb2FkLHQuZGVmYXVsdC5ydW5Mb2Fk
SG9va3M9aC5ydW5Mb2FkSG9va3MsdC5kZWZhdWx0LkNvbnRyb2xsZXI9QS5kZWZhdWx0LHQuZGVm
YXVsdC5Db250cm9sbGVyTWl4aW49UC5kZWZhdWx0LHQuZGVmYXVsdC5TZXJ2aWNlPWouZGVmYXVs
dCx0LmRlZmF1bHQuX1Byb3h5TWl4aW49Xy5kZWZhdWx0LHQuZGVmYXVsdC5SU1ZQPVIuZGVmYXVs
dCxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5kZWZhdWx0LCJTVFJJTkdTIix7Y29uZmlndXJhYmxl
OiExLGdldDpILmdldFN0cmluZ3Msc2V0Okguc2V0U3RyaW5nc30pLGUuZGVmYXVsdD10LmRlZmF1
bHR9KSxlKCJlbWJlci1ydW50aW1lL2luamVjdCIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvZGVi
dWciLCJlbWJlci1tZXRhbC9pbmplY3RlZF9wcm9wZXJ0eSJdLGZ1bmN0aW9uKGUsdCxyKXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gbigpe31mdW5jdGlvbiBpKGUsdCl7YVtlXT10LG5bZV09ZnVuY3Rp
b24odCl7cmV0dXJuIG5ldyByLmRlZmF1bHQoZSx0KX19ZnVuY3Rpb24gbyhlKXt2YXIgdCxuLGks
byxzLHU9ZS5wcm90bygpLGw9W107Zm9yKHQgaW4gdSluPXVbdF0sbiBpbnN0YW5jZW9mIHIuZGVm
YXVsdCYmbC5pbmRleE9mKG4udHlwZSk9PT0tMSYmbC5wdXNoKG4udHlwZSk7aWYobC5sZW5ndGgp
Zm9yKG89MCxzPWwubGVuZ3RoO288cztvKyspaT1hW2xbb11dLCJmdW5jdGlvbiI9PXR5cGVvZiBp
JiZpKGUpO3JldHVybiEwfWUuZGVmYXVsdD1uLGUuY3JlYXRlSW5qZWN0aW9uSGVscGVyPWksZS52
YWxpZGF0ZVByb3BlcnR5SW5qZWN0aW9ucz1vO3ZhciBhPXt9fSksZSgiZW1iZXItcnVudGltZS9p
cy1lcXVhbCIsWyJleHBvcnRzIl0sZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHQo
ZSx0KXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIGUuaXNFcXVhbD9lLmlzRXF1YWwodCk6
ZSBpbnN0YW5jZW9mIERhdGUmJnQgaW5zdGFuY2VvZiBEYXRlP2UuZ2V0VGltZSgpPT09dC5nZXRU
aW1lKCk6ZT09PXR9ZS5kZWZhdWx0PXR9KSxlKCJlbWJlci1ydW50aW1lL21peGlucy8tcHJveHki
LFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL2RlYnVnIiwiZW1iZXItbWV0YWwvcHJvcGVydHlfZ2V0
IiwiZW1iZXItbWV0YWwvcHJvcGVydHlfc2V0IiwiZW1iZXItbWV0YWwvbWV0YSIsImVtYmVyLW1l
dGFsL29ic2VydmVyIiwiZW1iZXItbWV0YWwvcHJvcGVydHlfZXZlbnRzIiwiZW1iZXItbWV0YWwv
Y29tcHV0ZWQiLCJlbWJlci1tZXRhbC9wcm9wZXJ0aWVzIiwiZW1iZXItbWV0YWwvbWl4aW4iLCJl
bWJlci1tZXRhbC9zeW1ib2wiXSxmdW5jdGlvbihlLHQscixuLGksbyxhLHMsdSxsLGMpeyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiBmKGUpe3JldHVybiBlJiZlW21dfWZ1bmN0aW9uIGQoZSx0KXt2YXIg
cj10LnNsaWNlKDgpO3IgaW4gdGhpc3x8YS5wcm9wZXJ0eVdpbGxDaGFuZ2UodGhpcyxyKX1mdW5j
dGlvbiBwKGUsdCl7dmFyIHI9dC5zbGljZSg4KTtyIGluIHRoaXN8fGEucHJvcGVydHlEaWRDaGFu
Z2UodGhpcyxyKX12YXIgaDtlLmlzUHJveHk9Zjt2YXIgbT1jLmRlZmF1bHQoIklTX1BST1hZIik7
ZS5kZWZhdWx0PWwuTWl4aW4uY3JlYXRlKChoPXt9LGhbbV09ITAsaC5jb250ZW50PW51bGwsaC5f
Y29udGVudERpZENoYW5nZT1sLm9ic2VydmVyKCJjb250ZW50IixmdW5jdGlvbigpe30pLGguaXNU
cnV0aHk9cy5jb21wdXRlZC5ib29sKCJjb250ZW50IiksaC5fZGVidWdDb250YWluZXJLZXk9bnVs
bCxoLndpbGxXYXRjaFByb3BlcnR5PWZ1bmN0aW9uKGUpe3ZhciB0PSJjb250ZW50LiIrZTtvLl9h
ZGRCZWZvcmVPYnNlcnZlcih0aGlzLHQsbnVsbCxkKSxvLmFkZE9ic2VydmVyKHRoaXMsdCxudWxs
LHApfSxoLmRpZFVud2F0Y2hQcm9wZXJ0eT1mdW5jdGlvbihlKXt2YXIgdD0iY29udGVudC4iK2U7
by5fcmVtb3ZlQmVmb3JlT2JzZXJ2ZXIodGhpcyx0LG51bGwsZCksby5yZW1vdmVPYnNlcnZlcih0
aGlzLHQsbnVsbCxwKX0saC51bmtub3duUHJvcGVydHk9ZnVuY3Rpb24oZSl7dmFyIHQ9ci5nZXQo
dGhpcywiY29udGVudCIpO2lmKHQpcmV0dXJuIHIuZ2V0KHQsZSl9LGguc2V0VW5rbm93blByb3Bl
cnR5PWZ1bmN0aW9uKGUsdCl7dmFyIG89aS5tZXRhKHRoaXMpO2lmKG8ucHJvdG89PT10aGlzKXJl
dHVybiB1LmRlZmluZVByb3BlcnR5KHRoaXMsZSxudWxsLHQpLHQ7dmFyIGE9ci5nZXQodGhpcywi
Y29udGVudCIpO3JldHVybiBuLnNldChhLGUsdCl9LGgpKX0pLGUoImVtYmVyLXJ1bnRpbWUvbWl4
aW5zL2FjdGlvbl9oYW5kbGVyIixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9kZWJ1ZyIsImVtYmVy
LW1ldGFsL21peGluIiwiZW1iZXItbWV0YWwvcHJvcGVydHlfZ2V0Il0sZnVuY3Rpb24oZSx0LHIs
bil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJv
dG90eXBlLCJfYWN0aW9ucyIse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiExLHNldDpmdW5j
dGlvbihlKXt9LGdldDpmdW5jdGlvbigpe3JldHVybiBuLmdldCh0aGlzLCJhY3Rpb25zIil9fSl9
ZS5kZXByZWNhdGVVbmRlcnNjb3JlQWN0aW9ucz1pO3ZhciBvPXIuTWl4aW4uY3JlYXRlKHttZXJn
ZWRQcm9wZXJ0aWVzOlsiYWN0aW9ucyJdLHNlbmQ6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PWFyZ3Vt
ZW50cy5sZW5ndGgscj1BcnJheSh0PjE/dC0xOjApLGk9MTtpPHQ7aSsrKXJbaS0xXT1hcmd1bWVu
dHNbaV07dmFyIG87aWYodGhpcy5hY3Rpb25zJiZ0aGlzLmFjdGlvbnNbZV0pe3ZhciBhPXRoaXMu
YWN0aW9uc1tlXS5hcHBseSh0aGlzLHIpPT09ITA7aWYoIWEpcmV0dXJufWlmKG89bi5nZXQodGhp
cywidGFyZ2V0Iikpe3ZhciBzOyhzPW8pLnNlbmQuYXBwbHkocyxhcmd1bWVudHMpfX0sd2lsbE1l
cmdlTWl4aW46ZnVuY3Rpb24oZSl7ZS5fYWN0aW9ucyYmKGUuYWN0aW9ucz1lLl9hY3Rpb25zLGRl
bGV0ZSBlLl9hY3Rpb25zKX19KTtlLmRlZmF1bHQ9b30pLGUoImVtYmVyLXJ1bnRpbWUvbWl4aW5z
L2FycmF5IixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9jb3JlIiwiZW1iZXItbWV0YWwvc3ltYm9s
IiwiZW1iZXItbWV0YWwvcHJvcGVydHlfZ2V0IiwiZW1iZXItbWV0YWwvY29tcHV0ZWQiLCJlbWJl
ci1tZXRhbC9pc19ub25lIiwiZW1iZXItcnVudGltZS9taXhpbnMvZW51bWVyYWJsZSIsImVtYmVy
LW1ldGFsL21peGluIiwiZW1iZXItbWV0YWwvcHJvcGVydHlfZXZlbnRzIiwiZW1iZXItbWV0YWwv
ZXZlbnRzIiwiZW1iZXItbWV0YWwvbWV0YSIsImVtYmVyLW1ldGFsL3RhZ3MiLCJlbWJlci1ydW50
aW1lL3N5c3RlbS9lYWNoX3Byb3h5Il0sZnVuY3Rpb24oZSx0LHIsbixpLG8sYSxzLHUsbCxjLGYs
ZCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHAoZSx0LHIsaSxvKXt2YXIgYT1yJiZyLndpbGxDaGFu
Z2V8fCJhcnJheVdpbGxDaGFuZ2UiLHM9ciYmci5kaWRDaGFuZ2V8fCJhcnJheURpZENoYW5nZSIs
bD1uLmdldChlLCJoYXNBcnJheU9ic2VydmVycyIpO3JldHVybiBsPT09byYmdS5wcm9wZXJ0eVdp
bGxDaGFuZ2UoZSwiaGFzQXJyYXlPYnNlcnZlcnMiKSxpKGUsIkBhcnJheTpiZWZvcmUiLHQsYSks
aShlLCJAYXJyYXk6Y2hhbmdlIix0LHMpLGw9PT1vJiZ1LnByb3BlcnR5RGlkQ2hhbmdlKGUsImhh
c0FycmF5T2JzZXJ2ZXJzIiksZX1mdW5jdGlvbiBoKGUsdCxyKXtyZXR1cm4gcChlLHQscixsLmFk
ZExpc3RlbmVyLCExKX1mdW5jdGlvbiBtKGUsdCxyKXtyZXR1cm4gcChlLHQscixsLnJlbW92ZUxp
c3RlbmVyLCEwKX1mdW5jdGlvbiB2KGUsdCl7cmV0dXJuIGUub2JqZWN0QXQ/ZS5vYmplY3RBdCh0
KTplW3RdfWZ1bmN0aW9uIGIoZSl7cmV0dXJuIGUmJiEhZVt5XX12YXIgZztlLmFkZEFycmF5T2Jz
ZXJ2ZXI9aCxlLnJlbW92ZUFycmF5T2JzZXJ2ZXI9bSxlLm9iamVjdEF0PXYsZS5pc0VtYmVyQXJy
YXk9Yjt2YXIgeT1yLmRlZmF1bHQoIkVNQkVSX0FSUkFZIik7ZS5kZWZhdWx0PXMuTWl4aW4uY3Jl
YXRlKGEuZGVmYXVsdCwoZz17fSxnW3ldPSEwLGcubGVuZ3RoPW51bGwsZy5vYmplY3RBdD1mdW5j
dGlvbihlKXtpZighKGU8MHx8ZT49bi5nZXQodGhpcywibGVuZ3RoIikpKXJldHVybiBuLmdldCh0
aGlzLGUpfSxnLm9iamVjdHNBdD1mdW5jdGlvbihlKXt2YXIgdD10aGlzO3JldHVybiBlLm1hcChm
dW5jdGlvbihlKXtyZXR1cm4gdih0LGUpfSl9LGcubmV4dE9iamVjdD1mdW5jdGlvbihlKXtyZXR1
cm4gdih0aGlzLGUpfSxnWyJbXSJdPWkuY29tcHV0ZWQoe2dldDpmdW5jdGlvbihlKXtyZXR1cm4g
dGhpc30sc2V0OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMucmVwbGFjZSgwLG4uZ2V0KHRoaXMs
Imxlbmd0aCIpLHQpLHRoaXN9fSksZy5maXJzdE9iamVjdD1pLmNvbXB1dGVkKGZ1bmN0aW9uKCl7
cmV0dXJuIHYodGhpcywwKX0pLnJlYWRPbmx5KCksZy5sYXN0T2JqZWN0PWkuY29tcHV0ZWQoZnVu
Y3Rpb24oKXtyZXR1cm4gdih0aGlzLG4uZ2V0KHRoaXMsImxlbmd0aCIpLTEpfSkucmVhZE9ubHko
KSxnLmNvbnRhaW5zPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmluZGV4T2YoZSk+PTB9LGcuc2xp
Y2U9ZnVuY3Rpb24oZSxyKXt2YXIgaT10LmRlZmF1bHQuQSgpLGE9bi5nZXQodGhpcywibGVuZ3Ro
Iik7Zm9yKG8uZGVmYXVsdChlKSYmKGU9MCksKG8uZGVmYXVsdChyKXx8cj5hKSYmKHI9YSksZTww
JiYoZT1hK2UpLHI8MCYmKHI9YStyKTtlPHI7KWlbaS5sZW5ndGhdPXYodGhpcyxlKyspO3JldHVy
biBpfSxnLmluZGV4T2Y9ZnVuY3Rpb24oZSx0KXt2YXIgcixpPW4uZ2V0KHRoaXMsImxlbmd0aCIp
O2Zvcih2b2lkIDA9PT10JiYodD0wKSx0PDAmJih0Kz1pKSxyPXQ7cjxpO3IrKylpZih2KHRoaXMs
cik9PT1lKXJldHVybiByO3JldHVybi0xfSxnLmxhc3RJbmRleE9mPWZ1bmN0aW9uKGUsdCl7dmFy
IHIsaT1uLmdldCh0aGlzLCJsZW5ndGgiKTtmb3IoKHZvaWQgMD09PXR8fHQ+PWkpJiYodD1pLTEp
LHQ8MCYmKHQrPWkpLHI9dDtyPj0wO3ItLSlpZih2KHRoaXMscik9PT1lKXJldHVybiByO3JldHVy
bi0xfSxnLmFkZEFycmF5T2JzZXJ2ZXI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gaCh0aGlzLGUsdCl9
LGcucmVtb3ZlQXJyYXlPYnNlcnZlcj1mdW5jdGlvbihlLHQpe3JldHVybiBtKHRoaXMsZSx0KX0s
Zy5oYXNBcnJheU9ic2VydmVycz1pLmNvbXB1dGVkKGZ1bmN0aW9uKCl7cmV0dXJuIGwuaGFzTGlz
dGVuZXJzKHRoaXMsIkBhcnJheTpjaGFuZ2UiKXx8bC5oYXNMaXN0ZW5lcnModGhpcywiQGFycmF5
OmJlZm9yZSIpfSksZy5hcnJheUNvbnRlbnRXaWxsQ2hhbmdlPWZ1bmN0aW9uKGUsdCxyKXt2YXIg
aSxvO2lmKHZvaWQgMD09PWU/KGU9MCx0PXI9LTEpOih2b2lkIDA9PT10JiYodD0tMSksdm9pZCAw
PT09ciYmKHI9LTEpKSx0aGlzLl9fZWFjaCYmdGhpcy5fX2VhY2guYXJyYXlXaWxsQ2hhbmdlKHRo
aXMsZSx0LHIpLGwuc2VuZEV2ZW50KHRoaXMsIkBhcnJheTpiZWZvcmUiLFt0aGlzLGUsdCxyXSks
ZT49MCYmdD49MCYmbi5nZXQodGhpcywiaGFzRW51bWVyYWJsZU9ic2VydmVycyIpKXtpPVtdLG89
ZSt0O2Zvcih2YXIgYT1lO2E8bzthKyspaS5wdXNoKHYodGhpcyxhKSl9ZWxzZSBpPXQ7cmV0dXJu
IHRoaXMuZW51bWVyYWJsZUNvbnRlbnRXaWxsQ2hhbmdlKGksciksdGhpc30sZy5hcnJheUNvbnRl
bnREaWRDaGFuZ2U9ZnVuY3Rpb24oZSx0LHIpe3ZhciBvLGE7aWYoZi5tYXJrT2JqZWN0QXNEaXJ0
eShjLm1ldGEodGhpcykpLHZvaWQgMD09PWU/KGU9MCx0PXI9LTEpOih2b2lkIDA9PT10JiYodD0t
MSksdm9pZCAwPT09ciYmKHI9LTEpKSxlPj0wJiZyPj0wJiZuLmdldCh0aGlzLCJoYXNFbnVtZXJh
YmxlT2JzZXJ2ZXJzIikpe289W10sYT1lK3I7Zm9yKHZhciBzPWU7czxhO3MrKylvLnB1c2godih0
aGlzLHMpKX1lbHNlIG89cjt0aGlzLmVudW1lcmFibGVDb250ZW50RGlkQ2hhbmdlKHQsbyksdGhp
cy5fX2VhY2gmJnRoaXMuX19lYWNoLmFycmF5RGlkQ2hhbmdlKHRoaXMsZSx0LHIpLGwuc2VuZEV2
ZW50KHRoaXMsIkBhcnJheTpjaGFuZ2UiLFt0aGlzLGUsdCxyXSk7dmFyIGQ9bi5nZXQodGhpcywi
bGVuZ3RoIikscD1pLmNhY2hlRm9yKHRoaXMsImZpcnN0T2JqZWN0IiksaD1pLmNhY2hlRm9yKHRo
aXMsImxhc3RPYmplY3QiKTtyZXR1cm4gdih0aGlzLDApIT09cCYmKHUucHJvcGVydHlXaWxsQ2hh
bmdlKHRoaXMsImZpcnN0T2JqZWN0IiksdS5wcm9wZXJ0eURpZENoYW5nZSh0aGlzLCJmaXJzdE9i
amVjdCIpKSx2KHRoaXMsZC0xKSE9PWgmJih1LnByb3BlcnR5V2lsbENoYW5nZSh0aGlzLCJsYXN0
T2JqZWN0IiksdS5wcm9wZXJ0eURpZENoYW5nZSh0aGlzLCJsYXN0T2JqZWN0IikpLHRoaXN9LGdb
IkBlYWNoIl09aS5jb21wdXRlZChmdW5jdGlvbigpe3JldHVybiB0aGlzLl9fZWFjaHx8KHRoaXMu
X19lYWNoPW5ldyBkLmRlZmF1bHQodGhpcykpLHRoaXMuX19lYWNofSkudm9sYXRpbGUoKSxnKSl9
KSxlKCJlbWJlci1ydW50aW1lL21peGlucy9jb21wYXJhYmxlIixbImV4cG9ydHMiLCJlbWJlci1t
ZXRhbC9taXhpbiJdLGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2UuZGVmYXVsdD10Lk1peGlu
LmNyZWF0ZSh7Y29tcGFyZTpudWxsfSl9KSxlKCJlbWJlci1ydW50aW1lL21peGlucy9jb250YWlu
ZXJfcHJveHkiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL3J1bl9sb29wIiwiZW1iZXItbWV0YWwv
ZGVidWciLCJlbWJlci1tZXRhbC9taXhpbiJdLGZ1bmN0aW9uKGUsdCxyLG4peyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiBpKGUpe3ZhciB0PXt9LHI9e2xvb2t1cDoibG9va3VwIixsb29rdXBGYWN0b3J5
OiJfbG9va3VwRmFjdG9yeSJ9O2Zvcih2YXIgbiBpbiByKXRbbl09byhlLG4scltuXSk7cmV0dXJu
IHR9ZnVuY3Rpb24gbyhlLHQscil7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGVbdF0uYXBwbHko
ZSxhcmd1bWVudHMpfX1lLmJ1aWxkRmFrZUNvbnRhaW5lcldpdGhEZXByZWNhdGlvbnM9aSxlLmRl
ZmF1bHQ9bi5NaXhpbi5jcmVhdGUoe19fY29udGFpbmVyX186bnVsbCxvd25lckluamVjdGlvbjpm
dW5jdGlvbigpe3JldHVybiB0aGlzLl9fY29udGFpbmVyX18ub3duZXJJbmplY3Rpb24oKTsKK30s
bG9va3VwOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX19jb250YWluZXJfXy5sb29rdXAoZSx0
KX0sX2xvb2t1cEZhY3Rvcnk6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fX2NvbnRhaW5lcl9f
Lmxvb2t1cEZhY3RvcnkoZSx0KX0sd2lsbERlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLl9zdXBlci5h
cHBseSh0aGlzLGFyZ3VtZW50cyksdGhpcy5fX2NvbnRhaW5lcl9fJiZ0LmRlZmF1bHQodGhpcy5f
X2NvbnRhaW5lcl9fLCJkZXN0cm95Iil9fSl9KSxlKCJlbWJlci1ydW50aW1lL21peGlucy9jb250
cm9sbGVyIixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9taXhpbiIsImVtYmVyLW1ldGFsL2FsaWFz
IiwiZW1iZXItcnVudGltZS9taXhpbnMvYWN0aW9uX2hhbmRsZXIiLCJlbWJlci1ydW50aW1lL21p
eGlucy9jb250cm9sbGVyX2NvbnRlbnRfbW9kZWxfYWxpYXNfZGVwcmVjYXRpb24iXSxmdW5jdGlv
bihlLHQscixuLGkpeyJ1c2Ugc3RyaWN0IjtlLmRlZmF1bHQ9dC5NaXhpbi5jcmVhdGUobi5kZWZh
dWx0LGkuZGVmYXVsdCx7aXNDb250cm9sbGVyOiEwLHRhcmdldDpudWxsLHBhcmVudENvbnRyb2xs
ZXI6bnVsbCxzdG9yZTpudWxsLG1vZGVsOm51bGwsY29udGVudDpyLmRlZmF1bHQoIm1vZGVsIil9
KX0pLGUoImVtYmVyLXJ1bnRpbWUvbWl4aW5zL2NvbnRyb2xsZXJfY29udGVudF9tb2RlbF9hbGlh
c19kZXByZWNhdGlvbiIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvZGVidWciLCJlbWJlci1tZXRh
bC9taXhpbiJdLGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7ZS5kZWZhdWx0PXIuTWl4aW4u
Y3JlYXRlKHt3aWxsTWVyZ2VNaXhpbjpmdW5jdGlvbihlKXt0aGlzLl9zdXBlci5hcHBseSh0aGlz
LGFyZ3VtZW50cyk7dmFyIHQ9ISFlLm1vZGVsO2UuY29udGVudCYmIXQmJihlLm1vZGVsPWUuY29u
dGVudCxkZWxldGUgZS5jb250ZW50KX19KX0pLGUoImVtYmVyLXJ1bnRpbWUvbWl4aW5zL2NvcHlh
YmxlIixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9kZWJ1ZyIsImVtYmVyLW1ldGFsL3Byb3BlcnR5
X2dldCIsImVtYmVyLW1ldGFsL21peGluIiwiZW1iZXItcnVudGltZS9taXhpbnMvZnJlZXphYmxl
IiwiZW1iZXItbWV0YWwvZXJyb3IiXSxmdW5jdGlvbihlLHQscixuLGksbyl7InVzZSBzdHJpY3Qi
O2UuZGVmYXVsdD1uLk1peGluLmNyZWF0ZSh7Y29weTpudWxsLGZyb3plbkNvcHk6ZnVuY3Rpb24o
KXtpZihpLkZyZWV6YWJsZSYmaS5GcmVlemFibGUuZGV0ZWN0KHRoaXMpKXJldHVybiByLmdldCh0
aGlzLCJpc0Zyb3plbiIpP3RoaXM6dGhpcy5jb3B5KCkuZnJlZXplKCk7dGhyb3cgbmV3IG8uZGVm
YXVsdCh0aGlzKyIgZG9lcyBub3Qgc3VwcG9ydCBmcmVlemluZyIpfX0pfSksZSgiZW1iZXItcnVu
dGltZS9taXhpbnMvZW51bWVyYWJsZSIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvcHJvcGVydHlf
Z2V0IiwiZW1iZXItbWV0YWwvcHJvcGVydHlfc2V0IiwiZW1iZXItbWV0YWwvbWl4aW4iLCJlbWJl
ci1tZXRhbC91dGlscyIsImVtYmVyLW1ldGFsL2NvbXB1dGVkIiwiZW1iZXItbWV0YWwvZW1wdHlf
b2JqZWN0IiwiZW1iZXItbWV0YWwvZmVhdHVyZXMiLCJlbWJlci1tZXRhbC9wcm9wZXJ0eV9ldmVu
dHMiLCJlbWJlci1tZXRhbC9ldmVudHMiLCJlbWJlci1ydW50aW1lL2NvbXBhcmUiLCJyZXF1aXJl
Il0sZnVuY3Rpb24oZSx0LHIsbixpLG8sYSxzLHUsbCxjLGYpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biBkKCl7cmV0dXJuKHZ8fCh2PWYuZGVmYXVsdCgiZW1iZXItcnVudGltZS9zeXN0ZW0vbmF0aXZl
X2FycmF5IikuQSkpKCl9ZnVuY3Rpb24gcCgpe3JldHVybiAwPT09Yi5sZW5ndGg/e306Yi5wb3Ao
KX1mdW5jdGlvbiBoKGUpe3JldHVybiBiLnB1c2goZSksbnVsbH1mdW5jdGlvbiBtKGUscil7ZnVu
Y3Rpb24gbihuKXt2YXIgbz10LmdldChuLGUpO3JldHVybiBpP3I9PT1vOiEhb312YXIgaT0yPT09
YXJndW1lbnRzLmxlbmd0aDtyZXR1cm4gbn12YXIgdj12b2lkIDAsYj1bXSxnPW4uTWl4aW4uY3Jl
YXRlKHtuZXh0T2JqZWN0Om51bGwsZmlyc3RPYmplY3Q6by5jb21wdXRlZCgiW10iLGZ1bmN0aW9u
KCl7aWYoMCE9PXQuZ2V0KHRoaXMsImxlbmd0aCIpKXt2YXIgZT1wKCkscj10aGlzLm5leHRPYmpl
Y3QoMCxudWxsLGUpO3JldHVybiBoKGUpLHJ9fSkucmVhZE9ubHkoKSxsYXN0T2JqZWN0Om8uY29t
cHV0ZWQoIltdIixmdW5jdGlvbigpe3ZhciBlPXQuZ2V0KHRoaXMsImxlbmd0aCIpO2lmKDAhPT1l
KXt2YXIgcixuPXAoKSxpPTAsbz1udWxsO2RvIG89cixyPXRoaXMubmV4dE9iamVjdChpKyssbyxu
KTt3aGlsZSh2b2lkIDAhPT1yKTtyZXR1cm4gaChuKSxvfX0pLnJlYWRPbmx5KCksY29udGFpbnM6
ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5maW5kKGZ1bmN0aW9uKHQpe3JldHVybiB0PT09ZX0pO3Jl
dHVybiB2b2lkIDAhPT10fSxmb3JFYWNoOmZ1bmN0aW9uKGUscil7aWYoImZ1bmN0aW9uIiE9dHlw
ZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcjt2YXIgbj1wKCksaT10LmdldCh0aGlzLCJsZW5ndGgi
KSxvPW51bGw7dm9pZCAwPT09ciYmKHI9bnVsbCk7Zm9yKHZhciBhPTA7YTxpO2ErKyl7dmFyIHM9
dGhpcy5uZXh0T2JqZWN0KGEsbyxuKTtlLmNhbGwocixzLGEsdGhpcyksbz1zfXJldHVybiBvPW51
bGwsbj1oKG4pLHRoaXN9LGdldEVhY2g6bi5hbGlhc01ldGhvZCgibWFwQnkiKSxzZXRFYWNoOmZ1
bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuZm9yRWFjaChmdW5jdGlvbihuKXtyLnNldChuLGUsdCl9
KX0sbWFwOmZ1bmN0aW9uKGUsdCl7dmFyIHI9ZCgpO3JldHVybiB0aGlzLmZvckVhY2goZnVuY3Rp
b24obixpLG8pe3JbaV09ZS5jYWxsKHQsbixpLG8pfSkscn0sbWFwQnk6ZnVuY3Rpb24oZSl7cmV0
dXJuIHRoaXMubWFwKGZ1bmN0aW9uKHIpe3JldHVybiB0LmdldChyLGUpfSl9LGZpbHRlcjpmdW5j
dGlvbihlLHQpe3ZhciByPWQoKTtyZXR1cm4gdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKG4saSxvKXtl
LmNhbGwodCxuLGksbykmJnIucHVzaChuKX0pLHJ9LHJlamVjdDpmdW5jdGlvbihlLHQpe3JldHVy
biB0aGlzLmZpbHRlcihmdW5jdGlvbigpe3JldHVybiFlLmFwcGx5KHQsYXJndW1lbnRzKX0pfSxm
aWx0ZXJCeTpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmZpbHRlcihtLmFwcGx5KHRoaXMsYXJn
dW1lbnRzKSl9LHJlamVjdEJ5OmZ1bmN0aW9uKGUscil7dmFyIG49ZnVuY3Rpb24obil7cmV0dXJu
IHQuZ2V0KG4sZSk9PT1yfSxpPWZ1bmN0aW9uKHIpe3JldHVybiEhdC5nZXQocixlKX0sbz0yPT09
YXJndW1lbnRzLmxlbmd0aD9uOmk7cmV0dXJuIHRoaXMucmVqZWN0KG8pfSxmaW5kOmZ1bmN0aW9u
KGUscil7dmFyIG49dC5nZXQodGhpcywibGVuZ3RoIik7dm9pZCAwPT09ciYmKHI9bnVsbCk7Zm9y
KHZhciBpLG8sYT1wKCkscz0hMSx1PW51bGwsbD0wO2w8biYmIXM7bCsrKWk9dGhpcy5uZXh0T2Jq
ZWN0KGwsdSxhKSwocz1lLmNhbGwocixpLGwsdGhpcykpJiYobz1pKSx1PWk7cmV0dXJuIGk9dT1u
dWxsLGE9aChhKSxvfSxmaW5kQnk6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5maW5kKG0uYXBw
bHkodGhpcyxhcmd1bWVudHMpKX0sZXZlcnk6ZnVuY3Rpb24oZSx0KXtyZXR1cm4hdGhpcy5maW5k
KGZ1bmN0aW9uKHIsbixpKXtyZXR1cm4hZS5jYWxsKHQscixuLGkpfSl9LGlzRXZlcnk6ZnVuY3Rp
b24oZSx0KXtyZXR1cm4gdGhpcy5ldmVyeShtLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9LGFueTpm
dW5jdGlvbihlLHIpe3ZhciBuLGksbz10LmdldCh0aGlzLCJsZW5ndGgiKSxhPXAoKSxzPSExLHU9
bnVsbDtmb3Iodm9pZCAwPT09ciYmKHI9bnVsbCksaT0wO2k8byYmIXM7aSsrKW49dGhpcy5uZXh0
T2JqZWN0KGksdSxhKSxzPWUuY2FsbChyLG4saSx0aGlzKSx1PW47cmV0dXJuIG49dT1udWxsLGE9
aChhKSxzfSxpc0FueTpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmFueShtLmFwcGx5KHRoaXMs
YXJndW1lbnRzKSl9LHJlZHVjZTpmdW5jdGlvbihlLHQscil7aWYoImZ1bmN0aW9uIiE9dHlwZW9m
IGUpdGhyb3cgbmV3IFR5cGVFcnJvcjt2YXIgbj10O3JldHVybiB0aGlzLmZvckVhY2goZnVuY3Rp
b24odCxpKXtuPWUobix0LGksdGhpcyxyKX0sdGhpcyksbn0saW52b2tlOmZ1bmN0aW9uKGUpe2Zv
cih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLHI9QXJyYXkodD4xP3QtMTowKSxuPTE7bjx0O24rKyly
W24tMV09YXJndW1lbnRzW25dO3ZhciBpPWQoKTtyZXR1cm4gdGhpcy5mb3JFYWNoKGZ1bmN0aW9u
KHQsbil7dmFyIG89dCYmdFtlXTsiZnVuY3Rpb24iPT10eXBlb2YgbyYmKGlbbl09cj9vLmFwcGx5
KHQscik6dFtlXSgpKX0sdGhpcyksaX0sdG9BcnJheTpmdW5jdGlvbigpe3ZhciBlPWQoKTtyZXR1
cm4gdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKHQscil7ZVtyXT10fSksZX0sY29tcGFjdDpmdW5jdGlv
bigpe3JldHVybiB0aGlzLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9ZX0pfSx3aXRo
b3V0OmZ1bmN0aW9uKGUpe2lmKCF0aGlzLmNvbnRhaW5zKGUpKXJldHVybiB0aGlzO3ZhciB0PWQo
KTtyZXR1cm4gdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKHIpe3IhPT1lJiYodFt0Lmxlbmd0aF09cil9
KSx0fSx1bmlxOmZ1bmN0aW9uKCl7dmFyIGU9ZCgpO3JldHVybiB0aGlzLmZvckVhY2goZnVuY3Rp
b24odCl7ZS5pbmRleE9mKHQpPDAmJmUucHVzaCh0KX0pLGV9LCJbXSI6by5jb21wdXRlZCh7Z2V0
OmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzfX0pLGFkZEVudW1lcmFibGVPYnNlcnZlcjpmdW5jdGlv
bihlLHIpe3ZhciBuPXImJnIud2lsbENoYW5nZXx8ImVudW1lcmFibGVXaWxsQ2hhbmdlIixpPXIm
JnIuZGlkQ2hhbmdlfHwiZW51bWVyYWJsZURpZENoYW5nZSIsbz10LmdldCh0aGlzLCJoYXNFbnVt
ZXJhYmxlT2JzZXJ2ZXJzIik7cmV0dXJuIG98fHUucHJvcGVydHlXaWxsQ2hhbmdlKHRoaXMsImhh
c0VudW1lcmFibGVPYnNlcnZlcnMiKSxsLmFkZExpc3RlbmVyKHRoaXMsIkBlbnVtZXJhYmxlOmJl
Zm9yZSIsZSxuKSxsLmFkZExpc3RlbmVyKHRoaXMsIkBlbnVtZXJhYmxlOmNoYW5nZSIsZSxpKSxv
fHx1LnByb3BlcnR5RGlkQ2hhbmdlKHRoaXMsImhhc0VudW1lcmFibGVPYnNlcnZlcnMiKSx0aGlz
fSxyZW1vdmVFbnVtZXJhYmxlT2JzZXJ2ZXI6ZnVuY3Rpb24oZSxyKXt2YXIgbj1yJiZyLndpbGxD
aGFuZ2V8fCJlbnVtZXJhYmxlV2lsbENoYW5nZSIsaT1yJiZyLmRpZENoYW5nZXx8ImVudW1lcmFi
bGVEaWRDaGFuZ2UiLG89dC5nZXQodGhpcywiaGFzRW51bWVyYWJsZU9ic2VydmVycyIpO3JldHVy
biBvJiZ1LnByb3BlcnR5V2lsbENoYW5nZSh0aGlzLCJoYXNFbnVtZXJhYmxlT2JzZXJ2ZXJzIiks
bC5yZW1vdmVMaXN0ZW5lcih0aGlzLCJAZW51bWVyYWJsZTpiZWZvcmUiLGUsbiksbC5yZW1vdmVM
aXN0ZW5lcih0aGlzLCJAZW51bWVyYWJsZTpjaGFuZ2UiLGUsaSksbyYmdS5wcm9wZXJ0eURpZENo
YW5nZSh0aGlzLCJoYXNFbnVtZXJhYmxlT2JzZXJ2ZXJzIiksdGhpc30saGFzRW51bWVyYWJsZU9i
c2VydmVyczpvLmNvbXB1dGVkKGZ1bmN0aW9uKCl7cmV0dXJuIGwuaGFzTGlzdGVuZXJzKHRoaXMs
IkBlbnVtZXJhYmxlOmNoYW5nZSIpfHxsLmhhc0xpc3RlbmVycyh0aGlzLCJAZW51bWVyYWJsZTpi
ZWZvcmUiKX0pLGVudW1lcmFibGVDb250ZW50V2lsbENoYW5nZTpmdW5jdGlvbihlLHIpe3ZhciBu
LGksbztyZXR1cm4gbj0ibnVtYmVyIj09dHlwZW9mIGU/ZTplP3QuZ2V0KGUsImxlbmd0aCIpOmU9
LTEsaT0ibnVtYmVyIj09dHlwZW9mIHI/cjpyP3QuZ2V0KHIsImxlbmd0aCIpOnI9LTEsbz1pPDB8
fG48MHx8aS1uIT09MCxlPT09LTEmJihlPW51bGwpLHI9PT0tMSYmKHI9bnVsbCksdS5wcm9wZXJ0
eVdpbGxDaGFuZ2UodGhpcywiW10iKSxvJiZ1LnByb3BlcnR5V2lsbENoYW5nZSh0aGlzLCJsZW5n
dGgiKSxsLnNlbmRFdmVudCh0aGlzLCJAZW51bWVyYWJsZTpiZWZvcmUiLFt0aGlzLGUscl0pLHRo
aXN9LGVudW1lcmFibGVDb250ZW50RGlkQ2hhbmdlOmZ1bmN0aW9uKGUscil7dmFyIG4saSxvO3Jl
dHVybiBuPSJudW1iZXIiPT10eXBlb2YgZT9lOmU/dC5nZXQoZSwibGVuZ3RoIik6ZT0tMSxpPSJu
dW1iZXIiPT10eXBlb2Ygcj9yOnI/dC5nZXQociwibGVuZ3RoIik6cj0tMSxvPWk8MHx8bjwwfHxp
LW4hPT0wLGU9PT0tMSYmKGU9bnVsbCkscj09PS0xJiYocj1udWxsKSxsLnNlbmRFdmVudCh0aGlz
LCJAZW51bWVyYWJsZTpjaGFuZ2UiLFt0aGlzLGUscl0pLG8mJnUucHJvcGVydHlEaWRDaGFuZ2Uo
dGhpcywibGVuZ3RoIiksdS5wcm9wZXJ0eURpZENoYW5nZSh0aGlzLCJbXSIpLHRoaXN9LHNvcnRC
eTpmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cztyZXR1cm4gdGhpcy50b0FycmF5KCkuc29ydChm
dW5jdGlvbihyLG4pe2Zvcih2YXIgaT0wO2k8ZS5sZW5ndGg7aSsrKXt2YXIgbz1lW2ldLGE9dC5n
ZXQocixvKSxzPXQuZ2V0KG4sbyksdT1jLmRlZmF1bHQoYSxzKTtpZih1KXJldHVybiB1fXJldHVy
biAwfSl9fSk7ZS5kZWZhdWx0PWd9KSxlKCJlbWJlci1ydW50aW1lL21peGlucy9ldmVudGVkIixb
ImV4cG9ydHMiLCJlbWJlci1tZXRhbC9taXhpbiIsImVtYmVyLW1ldGFsL2V2ZW50cyJdLGZ1bmN0
aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7ZS5kZWZhdWx0PXQuTWl4aW4uY3JlYXRlKHtvbjpmdW5j
dGlvbihlLHQsbil7cmV0dXJuIHIuYWRkTGlzdGVuZXIodGhpcyxlLHQsbiksdGhpc30sb25lOmZ1
bmN0aW9uKGUsdCxuKXtyZXR1cm4gbnx8KG49dCx0PW51bGwpLHIuYWRkTGlzdGVuZXIodGhpcyxl
LHQsbiwhMCksdGhpc30sdHJpZ2dlcjpmdW5jdGlvbihlKXtmb3IodmFyIHQ9YXJndW1lbnRzLmxl
bmd0aCxuPUFycmF5KHQ+MT90LTE6MCksaT0xO2k8dDtpKyspbltpLTFdPWFyZ3VtZW50c1tpXTty
LnNlbmRFdmVudCh0aGlzLGUsbil9LG9mZjpmdW5jdGlvbihlLHQsbil7cmV0dXJuIHIucmVtb3Zl
TGlzdGVuZXIodGhpcyxlLHQsbiksdGhpc30saGFzOmZ1bmN0aW9uKGUpe3JldHVybiByLmhhc0xp
c3RlbmVycyh0aGlzLGUpfX0pfSksZSgiZW1iZXItcnVudGltZS9taXhpbnMvZnJlZXphYmxlIixb
ImV4cG9ydHMiLCJlbWJlci1tZXRhbC9kZWJ1ZyIsImVtYmVyLW1ldGFsL21peGluIiwiZW1iZXIt
bWV0YWwvcHJvcGVydHlfZ2V0IiwiZW1iZXItbWV0YWwvcHJvcGVydHlfc2V0Il0sZnVuY3Rpb24o
ZSx0LHIsbixpKXsidXNlIHN0cmljdCI7dmFyIG89ci5NaXhpbi5jcmVhdGUoe2luaXQ6ZnVuY3Rp
b24oKXt0aGlzLl9zdXBlci5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGlzRnJvemVuOiExLGZyZWV6
ZTpmdW5jdGlvbigpe3JldHVybiBuLmdldCh0aGlzLCJpc0Zyb3plbiIpP3RoaXM6KGkuc2V0KHRo
aXMsImlzRnJvemVuIiwhMCksdGhpcyl9fSk7ZS5GcmVlemFibGU9bzt2YXIgYT0iRnJvemVuIG9i
amVjdCBjYW5ub3QgYmUgbW9kaWZpZWQuIjtlLkZST1pFTl9FUlJPUj1hfSksZSgiZW1iZXItcnVu
dGltZS9taXhpbnMvbXV0YWJsZV9hcnJheSIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvcHJvcGVy
dHlfZ2V0IiwiZW1iZXItbWV0YWwvZXJyb3IiLCJlbWJlci1tZXRhbC9taXhpbiIsImVtYmVyLXJ1
bnRpbWUvbWl4aW5zL2FycmF5IiwiZW1iZXItcnVudGltZS9taXhpbnMvbXV0YWJsZV9lbnVtZXJh
YmxlIiwiZW1iZXItcnVudGltZS9taXhpbnMvZW51bWVyYWJsZSJdLGZ1bmN0aW9uKGUsdCxyLG4s
aSxvLGEpeyJ1c2Ugc3RyaWN0Ijt2YXIgcz0iSW5kZXggb3V0IG9mIHJhbmdlIix1PVtdO2UuZGVm
YXVsdD1uLk1peGluLmNyZWF0ZShpLmRlZmF1bHQsby5kZWZhdWx0LHtyZXBsYWNlOm51bGwsY2xl
YXI6ZnVuY3Rpb24oKXt2YXIgZT10LmdldCh0aGlzLCJsZW5ndGgiKTtyZXR1cm4gMD09PWU/dGhp
czoodGhpcy5yZXBsYWNlKDAsZSx1KSx0aGlzKX0saW5zZXJ0QXQ6ZnVuY3Rpb24oZSxuKXtpZihl
PnQuZ2V0KHRoaXMsImxlbmd0aCIpKXRocm93IG5ldyByLmRlZmF1bHQocyk7cmV0dXJuIHRoaXMu
cmVwbGFjZShlLDAsW25dKSx0aGlzfSxyZW1vdmVBdDpmdW5jdGlvbihlLG4pe2lmKCJudW1iZXIi
PT10eXBlb2YgZSl7aWYoZTwwfHxlPj10LmdldCh0aGlzLCJsZW5ndGgiKSl0aHJvdyBuZXcgci5k
ZWZhdWx0KHMpO3ZvaWQgMD09PW4mJihuPTEpLHRoaXMucmVwbGFjZShlLG4sdSl9cmV0dXJuIHRo
aXN9LHB1c2hPYmplY3Q6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuaW5zZXJ0QXQodC5nZXQodGhp
cywibGVuZ3RoIiksZSksZX0scHVzaE9iamVjdHM6ZnVuY3Rpb24oZSl7aWYoIWEuZGVmYXVsdC5k
ZXRlY3QoZSkmJiFBcnJheS5pc0FycmF5KGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIk11c3QgcGFz
cyBFbWJlci5FbnVtZXJhYmxlIHRvIEVtYmVyLk11dGFibGVBcnJheSNwdXNoT2JqZWN0cyIpO3Jl
dHVybiB0aGlzLnJlcGxhY2UodC5nZXQodGhpcywibGVuZ3RoIiksMCxlKSx0aGlzfSxwb3BPYmpl
Y3Q6ZnVuY3Rpb24oKXt2YXIgZT10LmdldCh0aGlzLCJsZW5ndGgiKTtpZigwPT09ZSlyZXR1cm4g
bnVsbDt2YXIgcj1pLm9iamVjdEF0KHRoaXMsZS0xKTtyZXR1cm4gdGhpcy5yZW1vdmVBdChlLTEs
MSkscn0sc2hpZnRPYmplY3Q6ZnVuY3Rpb24oKXtpZigwPT09dC5nZXQodGhpcywibGVuZ3RoIikp
cmV0dXJuIG51bGw7dmFyIGU9aS5vYmplY3RBdCh0aGlzLDApO3JldHVybiB0aGlzLnJlbW92ZUF0
KDApLGV9LHVuc2hpZnRPYmplY3Q6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuaW5zZXJ0QXQoMCxl
KSxlfSx1bnNoaWZ0T2JqZWN0czpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5yZXBsYWNlKDAsMCxl
KSx0aGlzfSxyZXZlcnNlT2JqZWN0czpmdW5jdGlvbigpe3ZhciBlPXQuZ2V0KHRoaXMsImxlbmd0
aCIpO2lmKDA9PT1lKXJldHVybiB0aGlzO3ZhciByPXRoaXMudG9BcnJheSgpLnJldmVyc2UoKTty
ZXR1cm4gdGhpcy5yZXBsYWNlKDAsZSxyKSx0aGlzfSxzZXRPYmplY3RzOmZ1bmN0aW9uKGUpe2lm
KDA9PT1lLmxlbmd0aClyZXR1cm4gdGhpcy5jbGVhcigpO3ZhciByPXQuZ2V0KHRoaXMsImxlbmd0
aCIpO3JldHVybiB0aGlzLnJlcGxhY2UoMCxyLGUpLHRoaXN9LHJlbW92ZU9iamVjdDpmdW5jdGlv
bihlKXtmb3IodmFyIHI9dC5nZXQodGhpcywibGVuZ3RoIil8fDA7LS1yPj0wOyl7dmFyIG49aS5v
YmplY3RBdCh0aGlzLHIpO249PT1lJiZ0aGlzLnJlbW92ZUF0KHIpfXJldHVybiB0aGlzfSxhZGRP
YmplY3Q6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuY29udGFpbnMoZSl8fHRoaXMucHVzaE9iamVj
dChlKSx0aGlzfX0pfSksZSgiZW1iZXItcnVudGltZS9taXhpbnMvbXV0YWJsZV9lbnVtZXJhYmxl
IixbImV4cG9ydHMiLCJlbWJlci1ydW50aW1lL21peGlucy9lbnVtZXJhYmxlIiwiZW1iZXItbWV0
YWwvbWl4aW4iLCJlbWJlci1tZXRhbC9wcm9wZXJ0eV9ldmVudHMiXSxmdW5jdGlvbihlLHQscixu
KXsidXNlIHN0cmljdCI7ZS5kZWZhdWx0PXIuTWl4aW4uY3JlYXRlKHQuZGVmYXVsdCx7YWRkT2Jq
ZWN0Om51bGwsYWRkT2JqZWN0czpmdW5jdGlvbihlKXt2YXIgdD10aGlzO3JldHVybiBuLmJlZ2lu
UHJvcGVydHlDaGFuZ2VzKHRoaXMpLGUuZm9yRWFjaChmdW5jdGlvbihlKXtyZXR1cm4gdC5hZGRP
YmplY3QoZSl9KSxuLmVuZFByb3BlcnR5Q2hhbmdlcyh0aGlzKSx0aGlzfSxyZW1vdmVPYmplY3Q6
bnVsbCxyZW1vdmVPYmplY3RzOmZ1bmN0aW9uKGUpe24uYmVnaW5Qcm9wZXJ0eUNoYW5nZXModGhp
cyk7Zm9yKHZhciB0PWUubGVuZ3RoLTE7dD49MDt0LS0pdGhpcy5yZW1vdmVPYmplY3QoZVt0XSk7
cmV0dXJuIG4uZW5kUHJvcGVydHlDaGFuZ2VzKHRoaXMpLHRoaXN9fSl9KSxlKCJlbWJlci1ydW50
aW1lL21peGlucy9vYnNlcnZhYmxlIixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9kZWJ1ZyIsImVt
YmVyLW1ldGFsL3Byb3BlcnR5X2dldCIsImVtYmVyLW1ldGFsL3Byb3BlcnR5X3NldCIsImVtYmVy
LW1ldGFsL2dldF9wcm9wZXJ0aWVzIiwiZW1iZXItbWV0YWwvc2V0X3Byb3BlcnRpZXMiLCJlbWJl
ci1tZXRhbC9taXhpbiIsImVtYmVyLW1ldGFsL2V2ZW50cyIsImVtYmVyLW1ldGFsL3Byb3BlcnR5
X2V2ZW50cyIsImVtYmVyLW1ldGFsL29ic2VydmVyIiwiZW1iZXItbWV0YWwvY29tcHV0ZWQiLCJl
bWJlci1tZXRhbC9pc19ub25lIl0sZnVuY3Rpb24oZSx0LHIsbixpLG8sYSxzLHUsbCxjLGYpeyJ1
c2Ugc3RyaWN0IjtlLmRlZmF1bHQ9YS5NaXhpbi5jcmVhdGUoe2dldDpmdW5jdGlvbihlKXtyZXR1
cm4gci5nZXQodGhpcyxlKX0sZ2V0UHJvcGVydGllczpmdW5jdGlvbigpe2Zvcih2YXIgZT1hcmd1
bWVudHMubGVuZ3RoLHQ9QXJyYXkoZSkscj0wO3I8ZTtyKyspdFtyXT1hcmd1bWVudHNbcl07cmV0
dXJuIGkuZGVmYXVsdC5hcHBseShudWxsLFt0aGlzXS5jb25jYXQodCkpfSxzZXQ6ZnVuY3Rpb24o
ZSx0KXtyZXR1cm4gbi5zZXQodGhpcyxlLHQpfSxzZXRQcm9wZXJ0aWVzOmZ1bmN0aW9uKGUpe3Jl
dHVybiBvLmRlZmF1bHQodGhpcyxlKX0sYmVnaW5Qcm9wZXJ0eUNoYW5nZXM6ZnVuY3Rpb24oKXty
ZXR1cm4gdS5iZWdpblByb3BlcnR5Q2hhbmdlcygpLHRoaXN9LGVuZFByb3BlcnR5Q2hhbmdlczpm
dW5jdGlvbigpe3JldHVybiB1LmVuZFByb3BlcnR5Q2hhbmdlcygpLHRoaXN9LHByb3BlcnR5V2ls
bENoYW5nZTpmdW5jdGlvbihlKXtyZXR1cm4gdS5wcm9wZXJ0eVdpbGxDaGFuZ2UodGhpcyxlKSx0
aGlzfSxwcm9wZXJ0eURpZENoYW5nZTpmdW5jdGlvbihlKXtyZXR1cm4gdS5wcm9wZXJ0eURpZENo
YW5nZSh0aGlzLGUpLHRoaXN9LG5vdGlmeVByb3BlcnR5Q2hhbmdlOmZ1bmN0aW9uKGUpe3JldHVy
biB0aGlzLnByb3BlcnR5V2lsbENoYW5nZShlKSx0aGlzLnByb3BlcnR5RGlkQ2hhbmdlKGUpLHRo
aXN9LGFkZE9ic2VydmVyOmZ1bmN0aW9uKGUsdCxyKXtsLmFkZE9ic2VydmVyKHRoaXMsZSx0LHIp
fSxyZW1vdmVPYnNlcnZlcjpmdW5jdGlvbihlLHQscil7bC5yZW1vdmVPYnNlcnZlcih0aGlzLGUs
dCxyKX0saGFzT2JzZXJ2ZXJGb3I6ZnVuY3Rpb24oZSl7cmV0dXJuIHMuaGFzTGlzdGVuZXJzKHRo
aXMsZSsiOmNoYW5nZSIpfSxnZXRXaXRoRGVmYXVsdDpmdW5jdGlvbihlLHQpe3JldHVybiByLmdl
dFdpdGhEZWZhdWx0KHRoaXMsZSx0KX0saW5jcmVtZW50UHJvcGVydHk6ZnVuY3Rpb24oZSx0KXty
ZXR1cm4gZi5kZWZhdWx0KHQpJiYodD0xKSxuLnNldCh0aGlzLGUsKHBhcnNlRmxvYXQoci5nZXQo
dGhpcyxlKSl8fDApK3QpfSxkZWNyZW1lbnRQcm9wZXJ0eTpmdW5jdGlvbihlLHQpe3JldHVybiBm
LmRlZmF1bHQodCkmJih0PTEpLG4uc2V0KHRoaXMsZSwoci5nZXQodGhpcyxlKXx8MCktdCl9LHRv
Z2dsZVByb3BlcnR5OmZ1bmN0aW9uKGUpe3JldHVybiBuLnNldCh0aGlzLGUsIXIuZ2V0KHRoaXMs
ZSkpfSxjYWNoZUZvcjpmdW5jdGlvbihlKXtyZXR1cm4gYy5jYWNoZUZvcih0aGlzLGUpfSxvYnNl
cnZlcnNGb3JLZXk6ZnVuY3Rpb24oZSl7cmV0dXJuIGwub2JzZXJ2ZXJzRm9yKHRoaXMsZSl9fSl9
KSxlKCJlbWJlci1ydW50aW1lL21peGlucy9wcm9taXNlX3Byb3h5IixbImV4cG9ydHMiLCJlbWJl
ci1tZXRhbC9wcm9wZXJ0eV9nZXQiLCJlbWJlci1tZXRhbC9zZXRfcHJvcGVydGllcyIsImVtYmVy
LW1ldGFsL2NvbXB1dGVkIiwiZW1iZXItbWV0YWwvbWl4aW4iLCJlbWJlci1tZXRhbC9lcnJvciJd
LGZ1bmN0aW9uKGUsdCxyLG4saSxvKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYShlLHQpe3JldHVy
biByLmRlZmF1bHQoZSx7aXNGdWxmaWxsZWQ6ITEsaXNSZWplY3RlZDohMX0pLHQudGhlbihmdW5j
dGlvbih0KXtyZXR1cm4gci5kZWZhdWx0KGUse2NvbnRlbnQ6dCxpc0Z1bGZpbGxlZDohMH0pLHR9
LGZ1bmN0aW9uKHQpe3Rocm93IHIuZGVmYXVsdChlLHtyZWFzb246dCxpc1JlamVjdGVkOiEwfSks
dH0sIkVtYmVyOiBQcm9taXNlUHJveHkiKX1mdW5jdGlvbiBzKGUpe3JldHVybiBmdW5jdGlvbigp
e3ZhciByPXQuZ2V0KHRoaXMsInByb21pc2UiKTtyZXR1cm4gcltlXS5hcHBseShyLGFyZ3VtZW50
cyl9fXZhciB1PW4uY29tcHV0ZWQubm90LGw9bi5jb21wdXRlZC5vcjtlLmRlZmF1bHQ9aS5NaXhp
bi5jcmVhdGUoe3JlYXNvbjpudWxsLGlzUGVuZGluZzp1KCJpc1NldHRsZWQiKS5yZWFkT25seSgp
LGlzU2V0dGxlZDpsKCJpc1JlamVjdGVkIiwiaXNGdWxmaWxsZWQiKS5yZWFkT25seSgpLGlzUmVq
ZWN0ZWQ6ITEsaXNGdWxmaWxsZWQ6ITEscHJvbWlzZTpuLmNvbXB1dGVkKHtnZXQ6ZnVuY3Rpb24o
KXt0aHJvdyBuZXcgby5kZWZhdWx0KCJQcm9taXNlUHJveHkncyBwcm9taXNlIG11c3QgYmUgc2V0
Iil9LHNldDpmdW5jdGlvbihlLHQpe3JldHVybiBhKHRoaXMsdCl9fSksdGhlbjpzKCJ0aGVuIiks
Y2F0Y2g6cygiY2F0Y2giKSxmaW5hbGx5OnMoImZpbmFsbHkiKX0pfSksZSgiZW1iZXItcnVudGlt
ZS9taXhpbnMvcmVnaXN0cnlfcHJveHkiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL2RlYnVnIiwi
ZW1iZXItbWV0YWwvbWl4aW4iXSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IG4oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ7cmV0dXJuKHQ9dGhpcy5fX3JlZ2lzdHJ5X18p
W2VdLmFwcGx5KHQsYXJndW1lbnRzKX19ZnVuY3Rpb24gaShlLHQpe3ZhciByPXt9LG49e3Jlc29s
dmU6InJlc29sdmVSZWdpc3RyYXRpb24iLHJlZ2lzdGVyOiJyZWdpc3RlciIsdW5yZWdpc3Rlcjoi
dW5yZWdpc3RlciIsaGFzOiJoYXNSZWdpc3RyYXRpb24iLG9wdGlvbjoicmVnaXN0ZXJPcHRpb24i
LG9wdGlvbnM6InJlZ2lzdGVyT3B0aW9ucyIsZ2V0T3B0aW9uczoicmVnaXN0ZXJlZE9wdGlvbnMi
LG9wdGlvbnNGb3JUeXBlOiJyZWdpc3Rlck9wdGlvbnNGb3JUeXBlIixnZXRPcHRpb25zRm9yVHlw
ZToicmVnaXN0ZXJlZE9wdGlvbnNGb3JUeXBlIixpbmplY3Rpb246ImluamVjdCJ9O2Zvcih2YXIg
aSBpbiBuKXJbaV09byhlLHQsaSxuW2ldKTtyZXR1cm4gcn1mdW5jdGlvbiBvKGUsdCxyLG4pe3Jl
dHVybiBmdW5jdGlvbigpe3JldHVybiBlW25dLmFwcGx5KGUsYXJndW1lbnRzKX19ZS5idWlsZEZh
a2VSZWdpc3RyeVdpdGhEZXByZWNhdGlvbnM9aSxlLmRlZmF1bHQ9ci5NaXhpbi5jcmVhdGUoe19f
cmVnaXN0cnlfXzpudWxsLHJlc29sdmVSZWdpc3RyYXRpb246bigicmVzb2x2ZSIpLHJlZ2lzdGVy
Om4oInJlZ2lzdGVyIiksdW5yZWdpc3RlcjpuKCJ1bnJlZ2lzdGVyIiksaGFzUmVnaXN0cmF0aW9u
Om4oImhhcyIpLHJlZ2lzdGVyT3B0aW9uOm4oIm9wdGlvbiIpLHJlZ2lzdGVyZWRPcHRpb246bigi
Z2V0T3B0aW9uIikscmVnaXN0ZXJPcHRpb25zOm4oIm9wdGlvbnMiKSxyZWdpc3RlcmVkT3B0aW9u
czpuKCJnZXRPcHRpb25zIikscmVnaXN0ZXJPcHRpb25zRm9yVHlwZTpuKCJvcHRpb25zRm9yVHlw
ZSIpLHJlZ2lzdGVyZWRPcHRpb25zRm9yVHlwZTpuKCJnZXRPcHRpb25zRm9yVHlwZSIpLGluamVj
dDpuKCJpbmplY3Rpb24iKX0pfSksZSgiZW1iZXItcnVudGltZS9taXhpbnMvdGFyZ2V0X2FjdGlv
bl9zdXBwb3J0IixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9jb3JlIiwiZW1iZXItbWV0YWwvZGVi
dWciLCJlbWJlci1tZXRhbC9wcm9wZXJ0eV9nZXQiLCJlbWJlci1tZXRhbC9taXhpbiIsImVtYmVy
LW1ldGFsL2NvbXB1dGVkIl0sZnVuY3Rpb24oZSx0LHIsbixpLG8peyJ1c2Ugc3RyaWN0Ijt2YXIg
YT1pLk1peGluLmNyZWF0ZSh7dGFyZ2V0Om51bGwsYWN0aW9uOm51bGwsYWN0aW9uQ29udGV4dDpu
dWxsLHRhcmdldE9iamVjdDpvLmNvbXB1dGVkKCJ0YXJnZXQiLGZ1bmN0aW9uKCl7aWYodGhpcy5f
dGFyZ2V0T2JqZWN0KXJldHVybiB0aGlzLl90YXJnZXRPYmplY3Q7dmFyIGU9bi5nZXQodGhpcywi
dGFyZ2V0Iik7aWYoInN0cmluZyI9PXR5cGVvZiBlKXt2YXIgcj1uLmdldCh0aGlzLGUpO3JldHVy
biB2b2lkIDA9PT1yJiYocj1uLmdldCh0LmRlZmF1bHQubG9va3VwLGUpKSxyfXJldHVybiBlfSks
YWN0aW9uQ29udGV4dE9iamVjdDpvLmNvbXB1dGVkKGZ1bmN0aW9uKCl7dmFyIGU9bi5nZXQodGhp
cywiYWN0aW9uQ29udGV4dCIpO2lmKCJzdHJpbmciPT10eXBlb2YgZSl7dmFyIHI9bi5nZXQodGhp
cyxlKTtyZXR1cm4gdm9pZCAwPT09ciYmKHI9bi5nZXQodC5kZWZhdWx0Lmxvb2t1cCxlKSkscn1y
ZXR1cm4gZX0pLnByb3BlcnR5KCJhY3Rpb25Db250ZXh0IiksdHJpZ2dlckFjdGlvbjpmdW5jdGlv
bigpe2Z1bmN0aW9uIGUoZSx0KXt2YXIgcj1bXTtyZXR1cm4gdCYmci5wdXNoKHQpLHIuY29uY2F0
KGUpfXZhciB0PWFyZ3VtZW50cy5sZW5ndGg8PTB8fHZvaWQgMD09PWFyZ3VtZW50c1swXT97fTph
cmd1bWVudHNbMF0scj10LmFjdGlvbnx8bi5nZXQodGhpcywiYWN0aW9uIiksaT10LnRhcmdldHx8
bi5nZXQodGhpcywidGFyZ2V0T2JqZWN0Iiksbz10LmFjdGlvbkNvbnRleHQ7aWYoInVuZGVmaW5l
ZCI9PXR5cGVvZiBvJiYobz1uLmdldCh0aGlzLCJhY3Rpb25Db250ZXh0T2JqZWN0Iil8fHRoaXMp
LGkmJnIpe3ZhciBhO3JldHVybiBhPWkuc2VuZD9pLnNlbmQuYXBwbHkoaSxlKG8scikpOmlbcl0u
YXBwbHkoaSxlKG8pKSxhIT09ITEmJihhPSEwKSxhfXJldHVybiExfX0pO2UuZGVmYXVsdD1hfSks
ZSgiZW1iZXItcnVudGltZS9zdHJpbmdfcmVnaXN0cnkiLFsiZXhwb3J0cyJdLGZ1bmN0aW9uKGUp
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB0KGUpe2k9ZX1mdW5jdGlvbiByKCl7cmV0dXJuIGl9ZnVu
Y3Rpb24gbihlKXtyZXR1cm4gaVtlXX1lLnNldFN0cmluZ3M9dCxlLmdldFN0cmluZ3M9cixlLmdl
dD1uO3ZhciBpPXt9fSksZSgiZW1iZXItcnVudGltZS9zeXN0ZW0vYXBwbGljYXRpb24iLFsiZXhw
b3J0cyIsImVtYmVyLXJ1bnRpbWUvc3lzdGVtL25hbWVzcGFjZSJdLGZ1bmN0aW9uKGUsdCl7InVz
ZSBzdHJpY3QiO2UuZGVmYXVsdD10LmRlZmF1bHQuZXh0ZW5kKCl9KSxlKCJlbWJlci1ydW50aW1l
L3N5c3RlbS9hcnJheV9wcm94eSIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvZGVidWciLCJlbWJl
ci1tZXRhbC9wcm9wZXJ0eV9nZXQiLCJlbWJlci1ydW50aW1lL3V0aWxzIiwiZW1iZXItbWV0YWwv
Y29tcHV0ZWQiLCJlbWJlci1tZXRhbC9taXhpbiIsImVtYmVyLW1ldGFsL3Byb3BlcnR5X2V2ZW50
cyIsImVtYmVyLW1ldGFsL2Vycm9yIiwiZW1iZXItcnVudGltZS9zeXN0ZW0vb2JqZWN0IiwiZW1i
ZXItcnVudGltZS9taXhpbnMvbXV0YWJsZV9hcnJheSIsImVtYmVyLXJ1bnRpbWUvbWl4aW5zL2Vu
dW1lcmFibGUiLCJlbWJlci1tZXRhbC9hbGlhcyIsImVtYmVyLXJ1bnRpbWUvbWl4aW5zL2FycmF5
Il0sZnVuY3Rpb24oZSx0LHIsbixpLG8sYSxzLHUsbCxjLGYsZCl7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHAoKXtyZXR1cm4gdGhpc312YXIgaD0iSW5kZXggb3V0IG9mIHJhbmdlIixtPVtdLHY9dS5k
ZWZhdWx0LmV4dGVuZChsLmRlZmF1bHQse2NvbnRlbnQ6bnVsbCxhcnJhbmdlZENvbnRlbnQ6Zi5k
ZWZhdWx0KCJjb250ZW50Iiksb2JqZWN0QXRDb250ZW50OmZ1bmN0aW9uKGUpe3JldHVybiBkLm9i
amVjdEF0KHIuZ2V0KHRoaXMsImFycmFuZ2VkQ29udGVudCIpLGUpfSxyZXBsYWNlQ29udGVudDpm
dW5jdGlvbihlLHQsbil7ci5nZXQodGhpcywiY29udGVudCIpLnJlcGxhY2UoZSx0LG4pfSxfY29u
dGVudFdpbGxDaGFuZ2U6by5fYmVmb3JlT2JzZXJ2ZXIoImNvbnRlbnQiLGZ1bmN0aW9uKCl7dGhp
cy5fdGVhcmRvd25Db250ZW50KCl9KSxfdGVhcmRvd25Db250ZW50OmZ1bmN0aW9uKCl7dmFyIGU9
ci5nZXQodGhpcywiY29udGVudCIpO2UmJmQucmVtb3ZlQXJyYXlPYnNlcnZlcihlLHRoaXMse3dp
bGxDaGFuZ2U6ImNvbnRlbnRBcnJheVdpbGxDaGFuZ2UiLGRpZENoYW5nZToiY29udGVudEFycmF5
RGlkQ2hhbmdlIn0pfSxjb250ZW50QXJyYXlXaWxsQ2hhbmdlOnAsY29udGVudEFycmF5RGlkQ2hh
bmdlOnAsX2NvbnRlbnREaWRDaGFuZ2U6by5vYnNlcnZlcigiY29udGVudCIsZnVuY3Rpb24oKXty
LmdldCh0aGlzLCJjb250ZW50Iik7dGhpcy5fc2V0dXBDb250ZW50KCl9KSxfc2V0dXBDb250ZW50
OmZ1bmN0aW9uKCl7dmFyIGU9ci5nZXQodGhpcywiY29udGVudCIpO2UmJmQuYWRkQXJyYXlPYnNl
cnZlcihlLHRoaXMse3dpbGxDaGFuZ2U6ImNvbnRlbnRBcnJheVdpbGxDaGFuZ2UiLGRpZENoYW5n
ZToiY29udGVudEFycmF5RGlkQ2hhbmdlIn0pfSxfYXJyYW5nZWRDb250ZW50V2lsbENoYW5nZTpv
Ll9iZWZvcmVPYnNlcnZlcigiYXJyYW5nZWRDb250ZW50IixmdW5jdGlvbigpe3ZhciBlPXIuZ2V0
KHRoaXMsImFycmFuZ2VkQ29udGVudCIpLHQ9ZT9yLmdldChlLCJsZW5ndGgiKTowO3RoaXMuYXJy
YW5nZWRDb250ZW50QXJyYXlXaWxsQ2hhbmdlKHRoaXMsMCx0LHZvaWQgMCksdGhpcy5hcnJhbmdl
ZENvbnRlbnRXaWxsQ2hhbmdlKHRoaXMpLHRoaXMuX3RlYXJkb3duQXJyYW5nZWRDb250ZW50KGUp
fSksX2FycmFuZ2VkQ29udGVudERpZENoYW5nZTpvLm9ic2VydmVyKCJhcnJhbmdlZENvbnRlbnQi
LGZ1bmN0aW9uKCl7dmFyIGU9ci5nZXQodGhpcywiYXJyYW5nZWRDb250ZW50IiksdD1lP3IuZ2V0
KGUsImxlbmd0aCIpOjA7dGhpcy5fc2V0dXBBcnJhbmdlZENvbnRlbnQoKSx0aGlzLmFycmFuZ2Vk
Q29udGVudERpZENoYW5nZSh0aGlzKSx0aGlzLmFycmFuZ2VkQ29udGVudEFycmF5RGlkQ2hhbmdl
KHRoaXMsMCx2b2lkIDAsdCl9KSxfc2V0dXBBcnJhbmdlZENvbnRlbnQ6ZnVuY3Rpb24oKXt2YXIg
ZT1yLmdldCh0aGlzLCJhcnJhbmdlZENvbnRlbnQiKTtlJiZkLmFkZEFycmF5T2JzZXJ2ZXIoZSx0
aGlzLHt3aWxsQ2hhbmdlOiJhcnJhbmdlZENvbnRlbnRBcnJheVdpbGxDaGFuZ2UiLGRpZENoYW5n
ZToiYXJyYW5nZWRDb250ZW50QXJyYXlEaWRDaGFuZ2UifSl9LF90ZWFyZG93bkFycmFuZ2VkQ29u
dGVudDpmdW5jdGlvbigpe3ZhciBlPXIuZ2V0KHRoaXMsImFycmFuZ2VkQ29udGVudCIpO2UmJmQu
cmVtb3ZlQXJyYXlPYnNlcnZlcihlLHRoaXMse3dpbGxDaGFuZ2U6ImFycmFuZ2VkQ29udGVudEFy
cmF5V2lsbENoYW5nZSIsZGlkQ2hhbmdlOiJhcnJhbmdlZENvbnRlbnRBcnJheURpZENoYW5nZSJ9
KX0sYXJyYW5nZWRDb250ZW50V2lsbENoYW5nZTpwLGFycmFuZ2VkQ29udGVudERpZENoYW5nZTpw
LG9iamVjdEF0OmZ1bmN0aW9uKGUpe3JldHVybiByLmdldCh0aGlzLCJjb250ZW50IikmJnRoaXMu
b2JqZWN0QXRDb250ZW50KGUpfSxsZW5ndGg6aS5jb21wdXRlZChmdW5jdGlvbigpe3ZhciBlPXIu
Z2V0KHRoaXMsImFycmFuZ2VkQ29udGVudCIpO3JldHVybiBlP3IuZ2V0KGUsImxlbmd0aCIpOjB9
KSxfcmVwbGFjZTpmdW5jdGlvbihlLHQsbil7dmFyIGk9ci5nZXQodGhpcywiY29udGVudCIpO3Jl
dHVybiBpJiZ0aGlzLnJlcGxhY2VDb250ZW50KGUsdCxuKSx0aGlzfSxyZXBsYWNlOmZ1bmN0aW9u
KCl7aWYoci5nZXQodGhpcywiYXJyYW5nZWRDb250ZW50IikhPT1yLmdldCh0aGlzLCJjb250ZW50
IikpdGhyb3cgbmV3IHMuZGVmYXVsdCgiVXNpbmcgcmVwbGFjZSBvbiBhbiBhcnJhbmdlZCBBcnJh
eVByb3h5IGlzIG5vdCBhbGxvd2VkLiIpO3RoaXMuX3JlcGxhY2UuYXBwbHkodGhpcyxhcmd1bWVu
dHMpfSxfaW5zZXJ0QXQ6ZnVuY3Rpb24oZSx0KXtpZihlPnIuZ2V0KHRoaXMsImNvbnRlbnQubGVu
Z3RoIikpdGhyb3cgbmV3IHMuZGVmYXVsdChoKTtyZXR1cm4gdGhpcy5fcmVwbGFjZShlLDAsW3Rd
KSx0aGlzfSxpbnNlcnRBdDpmdW5jdGlvbihlLHQpe2lmKHIuZ2V0KHRoaXMsImFycmFuZ2VkQ29u
dGVudCIpPT09ci5nZXQodGhpcywiY29udGVudCIpKXJldHVybiB0aGlzLl9pbnNlcnRBdChlLHQp
O3Rocm93IG5ldyBzLmRlZmF1bHQoIlVzaW5nIGluc2VydEF0IG9uIGFuIGFycmFuZ2VkIEFycmF5
UHJveHkgaXMgbm90IGFsbG93ZWQuIil9LHJlbW92ZUF0OmZ1bmN0aW9uKGUsdCl7aWYoIm51bWJl
ciI9PXR5cGVvZiBlKXt2YXIgbixpPXIuZ2V0KHRoaXMsImNvbnRlbnQiKSxvPXIuZ2V0KHRoaXMs
ImFycmFuZ2VkQ29udGVudCIpLHU9W107aWYoZTwwfHxlPj1yLmdldCh0aGlzLCJsZW5ndGgiKSl0
aHJvdyBuZXcgcy5kZWZhdWx0KGgpO2Zvcih2b2lkIDA9PT10JiYodD0xKSxuPWU7bjxlK3Q7bisr
KXUucHVzaChpLmluZGV4T2YoZC5vYmplY3RBdChvLG4pKSk7Zm9yKHUuc29ydChmdW5jdGlvbihl
LHQpe3JldHVybiB0LWV9KSxhLmJlZ2luUHJvcGVydHlDaGFuZ2VzKCksbj0wO248dS5sZW5ndGg7
bisrKXRoaXMuX3JlcGxhY2UodVtuXSwxLG0pO2EuZW5kUHJvcGVydHlDaGFuZ2VzKCl9cmV0dXJu
IHRoaXN9LHB1c2hPYmplY3Q6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2luc2VydEF0KHIuZ2V0
KHRoaXMsImNvbnRlbnQubGVuZ3RoIiksZSksZX0scHVzaE9iamVjdHM6ZnVuY3Rpb24oZSl7aWYo
IWMuZGVmYXVsdC5kZXRlY3QoZSkmJiFuLmlzQXJyYXkoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigi
TXVzdCBwYXNzIEVtYmVyLkVudW1lcmFibGUgdG8gRW1iZXIuTXV0YWJsZUFycmF5I3B1c2hPYmpl
Y3RzIik7cmV0dXJuIHRoaXMuX3JlcGxhY2Uoci5nZXQodGhpcywibGVuZ3RoIiksMCxlKSx0aGlz
fSxzZXRPYmplY3RzOmZ1bmN0aW9uKGUpe2lmKDA9PT1lLmxlbmd0aClyZXR1cm4gdGhpcy5jbGVh
cigpO3ZhciB0PXIuZ2V0KHRoaXMsImxlbmd0aCIpO3JldHVybiB0aGlzLl9yZXBsYWNlKDAsdCxl
KSx0aGlzfSx1bnNoaWZ0T2JqZWN0OmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9pbnNlcnRBdCgw
LGUpLGV9LHVuc2hpZnRPYmplY3RzOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9yZXBsYWNlKDAs
MCxlKSx0aGlzfSxzbGljZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMudG9BcnJheSgpO3JldHVybiBl
LnNsaWNlLmFwcGx5KGUsYXJndW1lbnRzKX0sYXJyYW5nZWRDb250ZW50QXJyYXlXaWxsQ2hhbmdl
OmZ1bmN0aW9uKGUsdCxyLG4pe3RoaXMuYXJyYXlDb250ZW50V2lsbENoYW5nZSh0LHIsbil9LGFy
cmFuZ2VkQ29udGVudEFycmF5RGlkQ2hhbmdlOmZ1bmN0aW9uKGUsdCxyLG4pe3RoaXMuYXJyYXlD
b250ZW50RGlkQ2hhbmdlKHQscixuKX0saW5pdDpmdW5jdGlvbigpe3RoaXMuX3N1cGVyLmFwcGx5
KHRoaXMsYXJndW1lbnRzKSx0aGlzLl9zZXR1cENvbnRlbnQoKSx0aGlzLl9zZXR1cEFycmFuZ2Vk
Q29udGVudCgpfSx3aWxsRGVzdHJveTpmdW5jdGlvbigpe3RoaXMuX3RlYXJkb3duQXJyYW5nZWRD
b250ZW50KCksdGhpcy5fdGVhcmRvd25Db250ZW50KCl9fSk7ZS5kZWZhdWx0PXZ9KSxlKCJlbWJl
ci1ydW50aW1lL3N5c3RlbS9jb250YWluZXIiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL3Byb3Bl
cnR5X3NldCIsImNvbnRhaW5lci9yZWdpc3RyeSIsImNvbnRhaW5lci9jb250YWluZXIiLCJjb250
YWluZXIvb3duZXIiXSxmdW5jdGlvbihlLHQscixuLGkpeyJ1c2Ugc3RyaWN0IjtyLmRlZmF1bHQu
c2V0PXQuc2V0LG4uZGVmYXVsdC5zZXQ9dC5zZXQsZS5SZWdpc3RyeT1yLmRlZmF1bHQsZS5Db250
YWluZXI9bi5kZWZhdWx0LGUuZ2V0T3duZXI9aS5nZXRPd25lcixlLnNldE93bmVyPWkuc2V0T3du
ZXJ9KSxlKCJlbWJlci1ydW50aW1lL3N5c3RlbS9jb3JlX29iamVjdCIsWyJleHBvcnRzIiwiZW1i
ZXItbWV0YWwvZGVidWciLCJlbWJlci1tZXRhbC9mZWF0dXJlcyIsImVtYmVyLW1ldGFsL2Fzc2ln
biIsImVtYmVyLW1ldGFsL3Byb3BlcnR5X2dldCIsImVtYmVyLW1ldGFsL3V0aWxzIiwiZW1iZXIt
bWV0YWwvbWV0YSIsImVtYmVyLW1ldGFsL2NoYWlucyIsImVtYmVyLW1ldGFsL2V2ZW50cyIsImVt
YmVyLW1ldGFsL21peGluIiwiZW1iZXItbWV0YWwvZXJyb3IiLCJlbWJlci1ydW50aW1lL21peGlu
cy9hY3Rpb25faGFuZGxlciIsImVtYmVyLW1ldGFsL3Byb3BlcnRpZXMiLCJlbWJlci1tZXRhbC9i
aW5kaW5nIiwiZW1iZXItbWV0YWwvY29tcHV0ZWQiLCJlbWJlci1tZXRhbC9pbmplY3RlZF9wcm9w
ZXJ0eSIsImVtYmVyLW1ldGFsL3J1bl9sb29wIiwiZW1iZXItbWV0YWwvd2F0Y2hpbmciLCJlbWJl
ci1tZXRhbC9jb3JlIiwiZW1iZXItcnVudGltZS9pbmplY3QiLCJlbWJlci1tZXRhbC9zeW1ib2wi
XSxmdW5jdGlvbihlLHQscixuLGksbyxhLHMsdSxsLGMsZixkLHAsaCxtLHYsYixnLHksXyl7Im5v
IHVzZSBzdHJpY3QiO2Z1bmN0aW9uIHcoKXt2YXIgZSx0PSExLHI9ZnVuY3Rpb24oKXt0fHxyLnBy
b3RvKCksYXJndW1lbnRzLmxlbmd0aD4wJiYoZT1bYXJndW1lbnRzWzBdXSksdGhpcy5fX2RlZmlu
ZU5vbkVudW1lcmFibGUoby5HVUlEX0tFWV9QUk9QRVJUWSk7dmFyIGk9YS5tZXRhKHRoaXMpLGY9
aS5wcm90bztpZihpLnByb3RvPXRoaXMsZSl7dmFyIGQ9ZTtlPW51bGw7Zm9yKHZhciBwPXRoaXMu
Y29uY2F0ZW5hdGVkUHJvcGVydGllcyxoPXRoaXMubWVyZ2VkUHJvcGVydGllcyxtPTAsdj1kLmxl
bmd0aDttPHY7bSsrKXt2YXIgYj1kW21dO2lmKCJvYmplY3QiIT10eXBlb2YgYiYmdm9pZCAwIT09
Yil0aHJvdyBuZXcgYy5kZWZhdWx0KCJFbWJlci5PYmplY3QuY3JlYXRlIG9ubHkgYWNjZXB0cyBv
YmplY3RzLiIpO2lmKGIpZm9yKHZhciBnPU9iamVjdC5rZXlzKGIpLHk9MCxfPWcubGVuZ3RoO3k8
Xzt5Kyspe3ZhciB3PWdbeV0seD1iW3ddO2wuSVNfQklORElORy50ZXN0KHcpJiZpLndyaXRlQmlu
ZGluZ3Modyx4KTt2YXIgQz10aGlzW3ddLEU9bnVsbCE9PUMmJiJvYmplY3QiPT10eXBlb2YgQyYm
Qy5pc0Rlc2NyaXB0b3I/Qzp2b2lkIDA7aWYocCYmcC5sZW5ndGg+MCYmcC5pbmRleE9mKHcpPj0w
KXt2YXIgVD10aGlzW3ddO3g9VD8iZnVuY3Rpb24iPT10eXBlb2YgVC5jb25jYXQ/VC5jb25jYXQo
eCk6by5tYWtlQXJyYXkoVCkuY29uY2F0KHgpOm8ubWFrZUFycmF5KHgpfWlmKGgmJmgubGVuZ3Ro
JiZoLmluZGV4T2Yodyk+PTApe3ZhciBOPXRoaXNbd107eD1uLmRlZmF1bHQoe30sTix4KX1FP0Uu
c2V0KHRoaXMsdyx4KToiZnVuY3Rpb24iIT10eXBlb2YgdGhpcy5zZXRVbmtub3duUHJvcGVydHl8
fHcgaW4gdGhpcz90aGlzW3ddPXg6dGhpcy5zZXRVbmtub3duUHJvcGVydHkodyx4KX19fU8odGhp
cyxpKTt2YXIgUz1hcmd1bWVudHMubGVuZ3RoO2lmKDA9PT1TKXRoaXMuaW5pdCgpO2Vsc2UgaWYo
MT09PVMpdGhpcy5pbml0KGFyZ3VtZW50c1swXSk7ZWxzZXtmb3IodmFyIEE9bmV3IEFycmF5KFMp
LFA9MDtQPFM7UCsrKUFbUF09YXJndW1lbnRzW1BdO3RoaXMuaW5pdC5hcHBseSh0aGlzLEEpfXRo
aXNba10oKSxpLnByb3RvPWYscy5maW5pc2hDaGFpbnModGhpcyksdS5zZW5kRXZlbnQodGhpcywi
aW5pdCIpfTtyZXR1cm4gci50b1N0cmluZz1sLk1peGluLnByb3RvdHlwZS50b1N0cmluZyxyLndp
bGxSZW9wZW49ZnVuY3Rpb24oKXt0JiYoci5Qcm90b3R5cGVNaXhpbj1sLk1peGluLmNyZWF0ZShy
LlByb3RvdHlwZU1peGluKSksdD0hMX0sci5faW5pdFByb3BlcnRpZXM9ZnVuY3Rpb24odCl7ZT10
fSxyLnByb3RvPWZ1bmN0aW9uKCl7dmFyIGU9ci5zdXBlcmNsYXNzO3JldHVybiBlJiZlLnByb3Rv
KCksdHx8KHQ9ITAsci5Qcm90b3R5cGVNaXhpbi5hcHBseVBhcnRpYWwoci5wcm90b3R5cGUpKSx0
aGlzLnByb3RvdHlwZX0scn12YXIgeCxrPV8uZGVmYXVsdCgiUE9TVF9JTklUIik7ZS5QT1NUX0lO
SVQ9azt2YXIgQz12LmRlZmF1bHQuc2NoZWR1bGUsRT1sLk1peGluLl9hcHBseSxPPWwuTWl4aW4u
ZmluaXNoUGFydGlhbCxUPWwuTWl4aW4ucHJvdG90eXBlLnJlb3BlbixOPSExLFM9dygpO1MudG9T
dHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iRW1iZXIuQ29yZU9iamVjdCJ9LFMuUHJvdG90eXBlTWl4
aW49bC5NaXhpbi5jcmVhdGUoKHg9e3Jlb3BlbjpmdW5jdGlvbigpe2Zvcih2YXIgZT1hcmd1bWVu
dHMubGVuZ3RoLHQ9QXJyYXkoZSkscj0wO3I8ZTtyKyspdFtyXT1hcmd1bWVudHNbcl07cmV0dXJu
IEUodGhpcyx0LCEwKSx0aGlzfSxpbml0OmZ1bmN0aW9uKCl7fX0seFtrXT1mdW5jdGlvbigpe30s
eC5fX2RlZmluZU5vbkVudW1lcmFibGU9ZnVuY3Rpb24oZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5
KHRoaXMsZS5uYW1lLGUuZGVzY3JpcHRvcil9LHguY29uY2F0ZW5hdGVkUHJvcGVydGllcz1udWxs
LHgubWVyZ2VkUHJvcGVydGllcz1udWxsLHguaXNEZXN0cm95ZWQ9ITEseC5pc0Rlc3Ryb3lpbmc9
ITEseC5kZXN0cm95PWZ1bmN0aW9uKCl7aWYoIXRoaXMuaXNEZXN0cm95aW5nKXJldHVybiB0aGlz
LmlzRGVzdHJveWluZz0hMCxDKCJhY3Rpb25zIix0aGlzLHRoaXMud2lsbERlc3Ryb3kpLEMoImRl
c3Ryb3kiLHRoaXMsdGhpcy5fc2NoZWR1bGVkRGVzdHJveSksdGhpc30seC53aWxsRGVzdHJveT1n
LksseC5fc2NoZWR1bGVkRGVzdHJveT1mdW5jdGlvbigpe3RoaXMuaXNEZXN0cm95ZWR8fChiLmRl
c3Ryb3kodGhpcyksdGhpcy5pc0Rlc3Ryb3llZD0hMCl9LHguYmluZD1mdW5jdGlvbihlLHQpe3Jl
dHVybiB0IGluc3RhbmNlb2YgcC5CaW5kaW5nfHwodD1wLkJpbmRpbmcuZnJvbSh0KSksdC50byhl
KS5jb25uZWN0KHRoaXMpLHR9LHgudG9TdHJpbmc9ZnVuY3Rpb24oKXt2YXIgZT0iZnVuY3Rpb24i
PT10eXBlb2YgdGhpcy50b1N0cmluZ0V4dGVuc2lvbix0PWU/IjoiK3RoaXMudG9TdHJpbmdFeHRl
bnNpb24oKToiIixyPSI8Iit0aGlzLmNvbnN0cnVjdG9yLnRvU3RyaW5nKCkrIjoiK28uZ3VpZEZv
cih0aGlzKSt0KyI+IjtyZXR1cm4gcn0seCkpLFMuUHJvdG90eXBlTWl4aW4ub3duZXJDb25zdHJ1
Y3Rvcj1TLFMuX19zdXBlcl9fPW51bGw7dmFyIEE9e0NsYXNzTWl4aW46bC5SRVFVSVJFRCxQcm90
b3R5cGVNaXhpbjpsLlJFUVVJUkVELGlzQ2xhc3M6ITAsaXNNZXRob2Q6ITEsZXh0ZW5kOmZ1bmN0
aW9uKCl7dmFyIGUsdD13KCk7cmV0dXJuIHQuQ2xhc3NNaXhpbj1sLk1peGluLmNyZWF0ZSh0aGlz
LkNsYXNzTWl4aW4pLHQuUHJvdG90eXBlTWl4aW49bC5NaXhpbi5jcmVhdGUodGhpcy5Qcm90b3R5
cGVNaXhpbiksdC5DbGFzc01peGluLm93bmVyQ29uc3RydWN0b3I9dCx0LlByb3RvdHlwZU1peGlu
Lm93bmVyQ29uc3RydWN0b3I9dCxULmFwcGx5KHQuUHJvdG90eXBlTWl4aW4sYXJndW1lbnRzKSx0
LnN1cGVyY2xhc3M9dGhpcyx0Ll9fc3VwZXJfXz10aGlzLnByb3RvdHlwZSxlPXQucHJvdG90eXBl
PU9iamVjdC5jcmVhdGUodGhpcy5wcm90b3R5cGUpLGUuY29uc3RydWN0b3I9dCxvLmdlbmVyYXRl
R3VpZChlKSxhLm1ldGEoZSkucHJvdG89ZSx0LkNsYXNzTWl4aW4uYXBwbHkodCksdH0sY3JlYXRl
OmZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMsdD1hcmd1bWVudHMubGVuZ3RoLHI9QXJyYXkodCks
bj0wO248dDtuKyspcltuXT1hcmd1bWVudHNbbl07cmV0dXJuIHIubGVuZ3RoPjAmJnRoaXMuX2lu
aXRQcm9wZXJ0aWVzKHIpLG5ldyBlfSxyZW9wZW46ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53aWxs
UmVvcGVuKCksVC5hcHBseSh0aGlzLlByb3RvdHlwZU1peGluLGFyZ3VtZW50cyksdGhpc30scmVv
cGVuQ2xhc3M6ZnVuY3Rpb24oKXtyZXR1cm4gVC5hcHBseSh0aGlzLkNsYXNzTWl4aW4sYXJndW1l
bnRzKSxFKHRoaXMsYXJndW1lbnRzLCExKSx0aGlzfSxkZXRlY3Q6ZnVuY3Rpb24oZSl7aWYoImZ1
bmN0aW9uIiE9dHlwZW9mIGUpcmV0dXJuITE7Zm9yKDtlOyl7aWYoZT09PXRoaXMpcmV0dXJuITA7
ZT1lLnN1cGVyY2xhc3N9cmV0dXJuITF9LGRldGVjdEluc3RhbmNlOmZ1bmN0aW9uKGUpe3JldHVy
biBlIGluc3RhbmNlb2YgdGhpc30sbWV0YUZvclByb3BlcnR5OmZ1bmN0aW9uKGUpe3ZhciB0PXRo
aXMucHJvdG8oKSxyPXRbZV0sbj1udWxsIT09ciYmIm9iamVjdCI9PXR5cGVvZiByJiZyLmlzRGVz
Y3JpcHRvcj9yOnZvaWQgMDtyZXR1cm4gbi5fbWV0YXx8e319LF9jb21wdXRlZFByb3BlcnRpZXM6
aC5jb21wdXRlZChmdW5jdGlvbigpe049ITA7dmFyIGUsdD10aGlzLnByb3RvKCkscj1bXTtmb3Io
dmFyIG4gaW4gdCllPXRbbl0sZSYmZS5pc0Rlc2NyaXB0b3ImJnIucHVzaCh7bmFtZTpuLG1ldGE6
ZS5fbWV0YX0pO3JldHVybiByfSkucmVhZE9ubHkoKSxlYWNoQ29tcHV0ZWRQcm9wZXJ0eTpmdW5j
dGlvbihlLHQpe2Zvcih2YXIgcixuPXt9LG89aS5nZXQodGhpcywiX2NvbXB1dGVkUHJvcGVydGll
cyIpLGE9MCxzPW8ubGVuZ3RoO2E8czthKyspcj1vW2FdLGUuY2FsbCh0fHx0aGlzLHIubmFtZSxy
Lm1ldGF8fG4pfX07QS5fbGF6eUluamVjdGlvbnM9ZnVuY3Rpb24oKXt2YXIgZSx0LHI9e30sbj10
aGlzLnByb3RvKCk7Zm9yKGUgaW4gbil0PW5bZV0sdCBpbnN0YW5jZW9mIG0uZGVmYXVsdCYmKHJb
ZV09dC50eXBlKyI6IisodC5uYW1lfHxlKSk7cmV0dXJuIHJ9O3ZhciBQPWwuTWl4aW4uY3JlYXRl
KEEpO1Aub3duZXJDb25zdHJ1Y3Rvcj1TLFMuQ2xhc3NNaXhpbj1QLFAuYXBwbHkoUyksUy5yZW9w
ZW4oe2RpZERlZmluZVByb3BlcnR5OmZ1bmN0aW9uKGUsdCxyKXtpZihOIT09ITEmJnIgaW5zdGFu
Y2VvZiBoLkNvbXB1dGVkUHJvcGVydHkpe3ZhciBuPWEubWV0YSh0aGlzLmNvbnN0cnVjdG9yKS5y
ZWFkYWJsZUNhY2hlKCk7biYmdm9pZCAwIT09bi5fY29tcHV0ZWRQcm9wZXJ0aWVzJiYobi5fY29t
cHV0ZWRQcm9wZXJ0aWVzPXZvaWQgMCl9fX0pLGUuZGVmYXVsdD1TfSksZSgiZW1iZXItcnVudGlt
ZS9zeXN0ZW0vZWFjaF9wcm94eSIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvZGVidWciLCJlbWJl
ci1tZXRhbC9wcm9wZXJ0eV9nZXQiLCJlbWJlci1tZXRhbC9vYnNlcnZlciIsImVtYmVyLW1ldGFs
L3Byb3BlcnR5X2V2ZW50cyIsImVtYmVyLW1ldGFsL2VtcHR5X29iamVjdCIsImVtYmVyLXJ1bnRp
bWUvbWl4aW5zL2FycmF5Il0sZnVuY3Rpb24oZSx0LHIsbixpLG8sYSl7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIHMoZSl7dGhpcy5fY29udGVudD1lLHRoaXMuX2tleXM9dm9pZCAwLHRoaXMuX19lbWJl
cl9tZXRhX189bnVsbH1mdW5jdGlvbiB1KGUsdCxyLGksbyl7Zm9yKDstLW8+PWk7KXt2YXIgcz1h
Lm9iamVjdEF0KGUsbyk7cyYmKG4uX2FkZEJlZm9yZU9ic2VydmVyKHMsdCxyLCJjb250ZW50S2V5
V2lsbENoYW5nZSIpLG4uYWRkT2JzZXJ2ZXIocyx0LHIsImNvbnRlbnRLZXlEaWRDaGFuZ2UiKSl9
fWZ1bmN0aW9uIGwoZSx0LHIsaSxvKXtmb3IoOy0tbz49aTspe3ZhciBzPWEub2JqZWN0QXQoZSxv
KTtzJiYobi5fcmVtb3ZlQmVmb3JlT2JzZXJ2ZXIocyx0LHIsImNvbnRlbnRLZXlXaWxsQ2hhbmdl
Iiksbi5yZW1vdmVPYnNlcnZlcihzLHQsciwiY29udGVudEtleURpZENoYW5nZSIpKX19cy5wcm90
b3R5cGU9e19fZGVmaW5lTm9uRW51bWVyYWJsZTpmdW5jdGlvbihlKXt0aGlzW2UubmFtZV09ZS5k
ZXNjcmlwdG9yLnZhbHVlfSxhcnJheVdpbGxDaGFuZ2U6ZnVuY3Rpb24oZSx0LHIsbil7dmFyIG89
dGhpcy5fa2V5cyxhPXI+MD90K3I6LTE7Zm9yKHZhciBzIGluIG8pYT4wJiZsKGUscyx0aGlzLHQs
YSksaS5wcm9wZXJ0eVdpbGxDaGFuZ2UodGhpcyxzKX0sYXJyYXlEaWRDaGFuZ2U6ZnVuY3Rpb24o
ZSx0LHIsbil7dmFyIG89dGhpcy5fa2V5cyxhPW4+MD90K246LTE7Zm9yKHZhciBzIGluIG8pYT4w
JiZ1KGUscyx0aGlzLHQsYSksaS5wcm9wZXJ0eURpZENoYW5nZSh0aGlzLHMpfSx3aWxsV2F0Y2hQ
cm9wZXJ0eTpmdW5jdGlvbihlKXt0aGlzLmJlZ2luT2JzZXJ2aW5nQ29udGVudEtleShlKX0sZGlk
VW53YXRjaFByb3BlcnR5OmZ1bmN0aW9uKGUpe3RoaXMuc3RvcE9ic2VydmluZ0NvbnRlbnRLZXko
ZSl9LGJlZ2luT2JzZXJ2aW5nQ29udGVudEtleTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLl9rZXlz
O2lmKHR8fCh0PXRoaXMuX2tleXM9bmV3IG8uZGVmYXVsdCksdFtlXSl0W2VdKys7ZWxzZXt0W2Vd
PTE7dmFyIG49dGhpcy5fY29udGVudCxpPXIuZ2V0KG4sImxlbmd0aCIpO3UobixlLHRoaXMsMCxp
KX19LHN0b3BPYnNlcnZpbmdDb250ZW50S2V5OmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX2tleXM7
aWYodCYmdFtlXT4wJiYtLXRbZV08PTApe3ZhciBuPXRoaXMuX2NvbnRlbnQsaT1yLmdldChuLCJs
ZW5ndGgiKTtsKG4sZSx0aGlzLDAsaSl9fSxjb250ZW50S2V5V2lsbENoYW5nZTpmdW5jdGlvbihl
LHQpe2kucHJvcGVydHlXaWxsQ2hhbmdlKHRoaXMsdCl9LGNvbnRlbnRLZXlEaWRDaGFuZ2U6ZnVu
Y3Rpb24oZSx0KXtpLnByb3BlcnR5RGlkQ2hhbmdlKHRoaXMsdCl9fSxlLmRlZmF1bHQ9c30pLGUo
ImVtYmVyLXJ1bnRpbWUvc3lzdGVtL2xhenlfbG9hZCIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwv
Y29yZSIsImVtYmVyLXJ1bnRpbWUvc3lzdGVtL25hdGl2ZV9hcnJheSJdLGZ1bmN0aW9uKGUsdCxy
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlLHQpe3ZhciBuPWFbZV07b1tlXT1vW2VdfHxyLkEo
KSxvW2VdLnB1c2hPYmplY3QodCksbiYmdChuKX1mdW5jdGlvbiBpKGUsdCl7aWYoYVtlXT10LCJv
YmplY3QiPT10eXBlb2Ygd2luZG93JiYiZnVuY3Rpb24iPT10eXBlb2Ygd2luZG93LmRpc3BhdGNo
RXZlbnQmJiJmdW5jdGlvbiI9PXR5cGVvZiBDdXN0b21FdmVudCl7dmFyIHI9bmV3IEN1c3RvbUV2
ZW50KGUse2RldGFpbDp0LG5hbWU6ZX0pO3dpbmRvdy5kaXNwYXRjaEV2ZW50KHIpfW9bZV0mJm9b
ZV0uZm9yRWFjaChmdW5jdGlvbihlKXtyZXR1cm4gZSh0KX0pfWUub25Mb2FkPW4sZS5ydW5Mb2Fk
SG9va3M9aTt2YXIgbz10LmRlZmF1bHQuRU5WLkVNQkVSX0xPQURfSE9PS1N8fHt9LGE9e30scz1h
O2UuX2xvYWRlZD1zfSksZSgiZW1iZXItcnVudGltZS9zeXN0ZW0vbmFtZXNwYWNlIixbImV4cG9y
dHMiLCJlbWJlci1tZXRhbC9jb3JlIiwiZW1iZXItbWV0YWwvcHJvcGVydHlfZ2V0IiwiZW1iZXIt
bWV0YWwvdXRpbHMiLCJlbWJlci1tZXRhbC9taXhpbiIsImVtYmVyLXJ1bnRpbWUvc3lzdGVtL29i
amVjdCJdLGZ1bmN0aW9uKGUsdCxyLG4saSxvKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYShlLHQs
cil7dmFyIGk9ZS5sZW5ndGg7aFtlLmpvaW4oIi4iKV09dDtmb3IodmFyIG8gaW4gdClpZihtLmNh
bGwodCxvKSl7dmFyIHM9dFtvXTtpZihlW2ldPW8scyYmcy50b1N0cmluZz09PWMmJiFzW2JdKXNb
Yl09ZS5qb2luKCIuIik7ZWxzZSBpZihzJiZzLmlzTmFtZXNwYWNlKXtpZihyW24uZ3VpZEZvcihz
KV0pY29udGludWU7cltuLmd1aWRGb3IocyldPSEwLGEoZSxzLHIpfX1lLmxlbmd0aD1pfWZ1bmN0
aW9uIHMoZSx0KXt0cnl7dmFyIHI9ZVt0XTtyZXR1cm4gciYmci5pc05hbWVzcGFjZSYmcn1jYXRj
aChlKXt9fWZ1bmN0aW9uIHUoKXt2YXIgZSxyPXQuZGVmYXVsdC5sb29rdXA7aWYoIXAuUFJPQ0VT
U0VEKWZvcih2YXIgbiBpbiByKXYudGVzdChuKSYmKHIuaGFzT3duUHJvcGVydHkmJiFyLmhhc093
blByb3BlcnR5KG4pfHwoZT1zKHIsbiksZSYmKGVbYl09bikpKX1mdW5jdGlvbiBsKGUpe3ZhciB0
PWUuc3VwZXJjbGFzcztyZXR1cm4gdD90W2JdP3RbYl06bCh0KTp2b2lkIDB9ZnVuY3Rpb24gYygp
e3QuZGVmYXVsdC5CT09URUR8fHRoaXNbYl18fGYoKTt2YXIgZTtpZih0aGlzW2JdKWU9dGhpc1ti
XTtlbHNlIGlmKHRoaXMuX3RvU3RyaW5nKWU9dGhpcy5fdG9TdHJpbmc7ZWxzZXt2YXIgcj1sKHRo
aXMpO2U9cj8iKHN1YmNsYXNzIG9mICIrcisiKSI6Iih1bmtub3duIG1peGluKSIsdGhpcy50b1N0
cmluZz1kKGUpfXJldHVybiBlfWZ1bmN0aW9uIGYoKXt2YXIgZT0hcC5QUk9DRVNTRUQscj10LmRl
ZmF1bHQuYW55VW5wcm9jZXNzZWRNaXhpbnM7aWYoZSYmKHUoKSxwLlBST0NFU1NFRD0hMCksZXx8
cil7Zm9yKHZhciBuLGk9cC5OQU1FU1BBQ0VTLG89MCxzPWkubGVuZ3RoO288cztvKyspbj1pW29d
LGEoW24udG9TdHJpbmcoKV0sbix7fSk7dC5kZWZhdWx0LmFueVVucHJvY2Vzc2VkTWl4aW5zPSEx
fX1mdW5jdGlvbiBkKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlfX12YXIgcD1vLmRlZmF1
bHQuZXh0ZW5kKHtpc05hbWVzcGFjZTohMCxpbml0OmZ1bmN0aW9uKCl7cC5OQU1FU1BBQ0VTLnB1
c2godGhpcykscC5QUk9DRVNTRUQ9ITF9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7dmFyIGU9ci5nZXQo
dGhpcywibmFtZSIpfHxyLmdldCh0aGlzLCJtb2R1bGVQcmVmaXgiKTtyZXR1cm4gZT9lOih1KCks
dGhpc1tiXSl9LG5hbWVDbGFzc2VzOmZ1bmN0aW9uKCl7YShbdGhpcy50b1N0cmluZygpXSx0aGlz
LHt9KX0sZGVzdHJveTpmdW5jdGlvbigpe3ZhciBlPXAuTkFNRVNQQUNFUyxyPXRoaXMudG9TdHJp
bmcoKTtyJiYodC5kZWZhdWx0Lmxvb2t1cFtyXT12b2lkIDAsZGVsZXRlIHAuTkFNRVNQQUNFU19C
WV9JRFtyXSksZS5zcGxpY2UoZS5pbmRleE9mKHRoaXMpLDEpLHRoaXMuX3N1cGVyLmFwcGx5KHRo
aXMsYXJndW1lbnRzKX19KTtwLnJlb3BlbkNsYXNzKHtOQU1FU1BBQ0VTOlt0LmRlZmF1bHRdLE5B
TUVTUEFDRVNfQllfSUQ6e30sUFJPQ0VTU0VEOiExLHByb2Nlc3NBbGw6ZixieU5hbWU6ZnVuY3Rp
b24oZSl7cmV0dXJuIHQuZGVmYXVsdC5CT09URUR8fGYoKSxoW2VdfX0pO3ZhciBoPXAuTkFNRVNQ
QUNFU19CWV9JRCxtPXt9Lmhhc093blByb3BlcnR5LHY9L15bQS1aXS8sYj10LmRlZmF1bHQuTkFN
RV9LRVk9bi5HVUlEX0tFWSsiX25hbWUiO2kuTWl4aW4ucHJvdG90eXBlLnRvU3RyaW5nPWMsZS5k
ZWZhdWx0PXB9KSxlKCJlbWJlci1ydW50aW1lL3N5c3RlbS9uYXRpdmVfYXJyYXkiLFsiZXhwb3J0
cyIsImVtYmVyLW1ldGFsL2NvcmUiLCJlbWJlci1tZXRhbC9yZXBsYWNlIiwiZW1iZXItbWV0YWwv
cHJvcGVydHlfZ2V0IiwiZW1iZXItbWV0YWwvbWl4aW4iLCJlbWJlci1ydW50aW1lL21peGlucy9h
cnJheSIsImVtYmVyLXJ1bnRpbWUvbWl4aW5zL211dGFibGVfYXJyYXkiLCJlbWJlci1ydW50aW1l
L21peGlucy9vYnNlcnZhYmxlIiwiZW1iZXItcnVudGltZS9taXhpbnMvY29weWFibGUiLCJlbWJl
ci1ydW50aW1lL21peGlucy9mcmVlemFibGUiLCJlbWJlci1ydW50aW1lL2NvcHkiXSxmdW5jdGlv
bihlLHQscixuLGksbyxhLHMsdSxsLGMpeyJ1c2Ugc3RyaWN0Ijt2YXIgZj1pLk1peGluLmNyZWF0
ZShhLmRlZmF1bHQscy5kZWZhdWx0LHUuZGVmYXVsdCx7Z2V0OmZ1bmN0aW9uKGUpe3JldHVybiJs
ZW5ndGgiPT09ZT90aGlzLmxlbmd0aDoibnVtYmVyIj09dHlwZW9mIGU/dGhpc1tlXTp0aGlzLl9z
dXBlcihlKX0sb2JqZWN0QXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXNbZV19LHJlcGxhY2U6ZnVu
Y3Rpb24oZSx0LGkpe2lmKHRoaXMuaXNGcm96ZW4pdGhyb3cgbC5GUk9aRU5fRVJST1I7dmFyIG89
aT9uLmdldChpLCJsZW5ndGgiKTowO3JldHVybiB0aGlzLmFycmF5Q29udGVudFdpbGxDaGFuZ2Uo
ZSx0LG8pLDA9PT1vP3RoaXMuc3BsaWNlKGUsdCk6ci5fcmVwbGFjZSh0aGlzLGUsdCxpKSx0aGlz
LmFycmF5Q29udGVudERpZENoYW5nZShlLHQsbyksdGhpc30sdW5rbm93blByb3BlcnR5OmZ1bmN0
aW9uKGUsdCl7dmFyIHI7cmV0dXJuIHZvaWQgMCE9PXQmJnZvaWQgMD09PXImJihyPXRoaXNbZV09
dCkscn0saW5kZXhPZjpBcnJheS5wcm90b3R5cGUuaW5kZXhPZixsYXN0SW5kZXhPZjpBcnJheS5w
cm90b3R5cGUubGFzdEluZGV4T2YsY29weTpmdW5jdGlvbihlKXtyZXR1cm4gZT90aGlzLm1hcChm
dW5jdGlvbihlKXtyZXR1cm4gYy5kZWZhdWx0KGUsITApfSk6dGhpcy5zbGljZSgpfX0pLGQ9WyJs
ZW5ndGgiXTtmLmtleXMoKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe0FycmF5LnByb3RvdHlwZVtlXSYm
ZC5wdXNoKGUpfSksZS5OYXRpdmVBcnJheT1mPWYud2l0aG91dC5hcHBseShmLGQpO3ZhciBwO3Qu
ZGVmYXVsdC5FWFRFTkRfUFJPVE9UWVBFUz09PSEwfHx0LmRlZmF1bHQuRVhURU5EX1BST1RPVFlQ
RVMuQXJyYXk/KGYuYXBwbHkoQXJyYXkucHJvdG90eXBlKSxlLkE9cD1mdW5jdGlvbihlKXtyZXR1
cm4gZXx8W119KTplLkE9cD1mdW5jdGlvbihlKXtyZXR1cm4gZXx8KGU9W10pLG8uZGVmYXVsdC5k
ZXRlY3QoZSk/ZTpmLmFwcGx5KGUpfSx0LmRlZmF1bHQuQT1wLGUuQT1wLGUuTmF0aXZlQXJyYXk9
ZixlLmRlZmF1bHQ9Zn0pLGUoImVtYmVyLXJ1bnRpbWUvc3lzdGVtL29iamVjdCIsWyJleHBvcnRz
IiwiZW1iZXItcnVudGltZS9zeXN0ZW0vY29yZV9vYmplY3QiLCJlbWJlci1ydW50aW1lL21peGlu
cy9vYnNlcnZhYmxlIl0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10LmRlZmF1
bHQuZXh0ZW5kKHIuZGVmYXVsdCk7bi50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJFbWJlci5P
YmplY3QifSxlLmRlZmF1bHQ9bn0pLGUoImVtYmVyLXJ1bnRpbWUvc3lzdGVtL29iamVjdF9wcm94
eSIsWyJleHBvcnRzIiwiZW1iZXItcnVudGltZS9zeXN0ZW0vb2JqZWN0IiwiZW1iZXItcnVudGlt
ZS9taXhpbnMvLXByb3h5Il0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtlLmRlZmF1bHQ9
dC5kZWZhdWx0LmV4dGVuZChyLmRlZmF1bHQpfSksZSgiZW1iZXItcnVudGltZS9zeXN0ZW0vc2Vy
dmljZSIsWyJleHBvcnRzIiwiZW1iZXItcnVudGltZS9zeXN0ZW0vb2JqZWN0IiwiZW1iZXItcnVu
dGltZS9pbmplY3QiXSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3IuY3JlYXRlSW5qZWN0
aW9uSGVscGVyKCJzZXJ2aWNlIik7dmFyIG49dC5kZWZhdWx0LmV4dGVuZCgpO24ucmVvcGVuQ2xh
c3Moe2lzU2VydmljZUZhY3Rvcnk6ITB9KSxlLmRlZmF1bHQ9bn0pLGUoImVtYmVyLXJ1bnRpbWUv
c3lzdGVtL3N0cmluZyIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvZGVidWciLCJlbWJlci1tZXRh
bC91dGlscyIsImVtYmVyLXJ1bnRpbWUvdXRpbHMiLCJlbWJlci1ydW50aW1lL3N0cmluZ19yZWdp
c3RyeSIsImVtYmVyLW1ldGFsL2NhY2hlIl0sZnVuY3Rpb24oZSx0LHIsbixpLG8peyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiBhKGUsdCl7dmFyIGk9dDtpZighbi5pc0FycmF5KGkpfHxhcmd1bWVudHMu
bGVuZ3RoPjIpe2k9bmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMSk7Zm9yKHZhciBvPTEsYT1h
cmd1bWVudHMubGVuZ3RoO288YTtvKyspaVtvLTFdPWFyZ3VtZW50c1tvXX12YXIgcz0wO3JldHVy
biBlLnJlcGxhY2UoLyVAKFswLTldKyk/L2csZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD10P3BhcnNl
SW50KHQsMTApLTE6cysrLGU9aVt0XSxudWxsPT09ZT8iKG51bGwpIjp2b2lkIDA9PT1lPyIiOnIu
aW5zcGVjdChlKX0pfWZ1bmN0aW9uIHMoZSx0KXtyZXR1cm4gYS5hcHBseSh2b2lkIDAsYXJndW1l
bnRzKX1mdW5jdGlvbiB1KGUsdCl7cmV0dXJuKCFuLmlzQXJyYXkodCl8fGFyZ3VtZW50cy5sZW5n
dGg+MikmJih0PUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSksZT1pLmdl
dChlKXx8ZSxhKGUsdCl9ZnVuY3Rpb24gbChlKXtyZXR1cm4gZS5zcGxpdCgvXHMrLyl9ZnVuY3Rp
b24gYyhlKXtyZXR1cm4gUC5nZXQoZSl9ZnVuY3Rpb24gZihlKXtyZXR1cm4gYi5nZXQoZSl9ZnVu
Y3Rpb24gZChlKXtyZXR1cm4gXy5nZXQoZSl9ZnVuY3Rpb24gcChlKXtyZXR1cm4gQy5nZXQoZSl9
ZnVuY3Rpb24gaChlKXtyZXR1cm4gVC5nZXQoZSl9ZnVuY3Rpb24gbShlKXtyZXR1cm4gUy5nZXQo
ZSl9dmFyIHY9L1sgX10vZyxiPW5ldyBvLmRlZmF1bHQoMWUzLGZ1bmN0aW9uKGUpe3JldHVybiBj
KGUpLnJlcGxhY2UodiwiLSIpfSksZz0vKFwtfFxffFwufFxzKSsoLik/L2cseT0vKF58XC8pKFtB
LVpdKS9nLF89bmV3IG8uZGVmYXVsdCgxZTMsZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZShn
LGZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gcj9yLnRvVXBwZXJDYXNlKCk6IiJ9KS5yZXBsYWNlKHks
ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlLnRvTG93ZXJDYXNlKCl9KX0pLHc9L14oXC18XykrKC4p
Py8seD0vKC4pKFwtfFxffFwufFxzKSsoLik/L2csaz0vKF58XC98XC4pKFthLXpdKS9nLEM9bmV3
IG8uZGVmYXVsdCgxZTMsZnVuY3Rpb24oZSl7Zm9yKHZhciB0PWZ1bmN0aW9uKGUsdCxyKXtyZXR1
cm4gcj8iXyIrci50b1VwcGVyQ2FzZSgpOiIifSxyPWZ1bmN0aW9uKGUsdCxyLG4pe3JldHVybiB0
KyhuP24udG9VcHBlckNhc2UoKToiIil9LG49ZS5zcGxpdCgiLyIpLGk9MCxvPW4ubGVuZ3RoO2k8
bztpKyspbltpXT1uW2ldLnJlcGxhY2Uodyx0KS5yZXBsYWNlKHgscik7cmV0dXJuIG4uam9pbigi
LyIpLnJlcGxhY2UoayxmdW5jdGlvbihlLHQscil7cmV0dXJuIGUudG9VcHBlckNhc2UoKX0pfSks
RT0vKFthLXpcZF0pKFtBLVpdKykvZyxPPS9cLXxccysvZyxUPW5ldyBvLmRlZmF1bHQoMWUzLGZ1
bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoRSwiJDFfJDIiKS5yZXBsYWNlKE8sIl8iKS50b0xv
d2VyQ2FzZSgpfSksTj0vKF58XC8pKFthLXpdKS9nLFM9bmV3IG8uZGVmYXVsdCgxZTMsZnVuY3Rp
b24oZSl7CityZXR1cm4gZS5yZXBsYWNlKE4sZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlLnRvVXBw
ZXJDYXNlKCl9KX0pLEE9LyhbYS16XGRdKShbQS1aXSkvZyxQPW5ldyBvLmRlZmF1bHQoMWUzLGZ1
bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoQSwiJDFfJDIiKS50b0xvd2VyQ2FzZSgpfSk7ZS5k
ZWZhdWx0PXtmbXQ6cyxsb2M6dSx3OmwsZGVjYW1lbGl6ZTpjLGRhc2hlcml6ZTpmLGNhbWVsaXpl
OmQsY2xhc3NpZnk6cCx1bmRlcnNjb3JlOmgsY2FwaXRhbGl6ZTptfSxlLmZtdD1zLGUubG9jPXUs
ZS53PWwsZS5kZWNhbWVsaXplPWMsZS5kYXNoZXJpemU9ZixlLmNhbWVsaXplPWQsZS5jbGFzc2lm
eT1wLGUudW5kZXJzY29yZT1oLGUuY2FwaXRhbGl6ZT1tfSksZSgiZW1iZXItcnVudGltZS91dGls
cyIsWyJleHBvcnRzIiwiZW1iZXItcnVudGltZS9taXhpbnMvYXJyYXkiLCJlbWJlci1ydW50aW1l
L3N5c3RlbS9vYmplY3QiXSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4o
ZSl7aWYoIWV8fGUuc2V0SW50ZXJ2YWwpcmV0dXJuITE7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1
cm4hMDtpZih0LmRlZmF1bHQuZGV0ZWN0KGUpKXJldHVybiEwO3ZhciByPWkoZSk7cmV0dXJuImFy
cmF5Ij09PXJ8fHZvaWQgMCE9PWUubGVuZ3RoJiYib2JqZWN0Ij09PXJ9ZnVuY3Rpb24gaShlKXtp
ZihudWxsPT09ZSlyZXR1cm4ibnVsbCI7aWYodm9pZCAwPT09ZSlyZXR1cm4idW5kZWZpbmVkIjt2
YXIgdD1vW2EuY2FsbChlKV18fCJvYmplY3QiO3JldHVybiJmdW5jdGlvbiI9PT10P3IuZGVmYXVs
dC5kZXRlY3QoZSkmJih0PSJjbGFzcyIpOiJvYmplY3QiPT09dCYmKGUgaW5zdGFuY2VvZiBFcnJv
cj90PSJlcnJvciI6ZSBpbnN0YW5jZW9mIHIuZGVmYXVsdD90PSJpbnN0YW5jZSI6ZSBpbnN0YW5j
ZW9mIERhdGUmJih0PSJkYXRlIikpLHR9ZS5pc0FycmF5PW4sZS50eXBlT2Y9aTt2YXIgbz17Iltv
YmplY3QgQm9vbGVhbl0iOiJib29sZWFuIiwiW29iamVjdCBOdW1iZXJdIjoibnVtYmVyIiwiW29i
amVjdCBTdHJpbmddIjoic3RyaW5nIiwiW29iamVjdCBGdW5jdGlvbl0iOiJmdW5jdGlvbiIsIltv
YmplY3QgQXJyYXldIjoiYXJyYXkiLCJbb2JqZWN0IERhdGVdIjoiZGF0ZSIsIltvYmplY3QgUmVn
RXhwXSI6InJlZ2V4cCIsIltvYmplY3QgT2JqZWN0XSI6Im9iamVjdCJ9LGE9T2JqZWN0LnByb3Rv
dHlwZS50b1N0cmluZ30pLGUoImVtYmVyLXRlbXBsYXRlLWNvbXBpbGVyL2NvbXBhdCIsWyJleHBv
cnRzIiwiZW1iZXItbWV0YWwvY29yZSIsImVtYmVyLXRlbXBsYXRlLWNvbXBpbGVyL2NvbXBhdC9w
cmVjb21waWxlIiwiZW1iZXItdGVtcGxhdGUtY29tcGlsZXIvc3lzdGVtL2NvbXBpbGUiLCJlbWJl
ci10ZW1wbGF0ZS1jb21waWxlci9zeXN0ZW0vdGVtcGxhdGUiXSxmdW5jdGlvbihlLHQscixuLGkp
eyJ1c2Ugc3RyaWN0Ijt2YXIgbz10LmRlZmF1bHQuSGFuZGxlYmFycz10LmRlZmF1bHQuSGFuZGxl
YmFyc3x8e307by5wcmVjb21waWxlPXIuZGVmYXVsdCxvLmNvbXBpbGU9bi5kZWZhdWx0LG8udGVt
cGxhdGU9aS5kZWZhdWx0fSksZSgiZW1iZXItdGVtcGxhdGUtY29tcGlsZXIvY29tcGF0L3ByZWNv
bXBpbGUiLFsiZXhwb3J0cyIsInJlcXVpcmUiLCJlbWJlci10ZW1wbGF0ZS1jb21waWxlci9zeXN0
ZW0vY29tcGlsZV9vcHRpb25zIl0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbixp
O2UuZGVmYXVsdD1mdW5jdGlvbihlKXtpZigoIW58fCFpKSYmdC5oYXMoImh0bWxiYXJzLWNvbXBp
bGVyL2NvbXBpbGVyIikpe3ZhciBvPXQuZGVmYXVsdCgiaHRtbGJhcnMtY29tcGlsZXIvY29tcGls
ZXIiKTtuPW8uY29tcGlsZSxpPW8uY29tcGlsZVNwZWN9aWYoIW58fCFpKXRocm93IG5ldyBFcnJv
cigiQ2Fubm90IGNhbGwgYHByZWNvbXBpbGVgIHdpdGhvdXQgdGhlIHRlbXBsYXRlIGNvbXBpbGVy
IGxvYWRlZC4gUGxlYXNlIGxvYWQgYGVtYmVyLXRlbXBsYXRlLWNvbXBpbGVyLmpzYCBwcmlvciB0
byBjYWxsaW5nIGBwcmVjb21waWxlYC4iKTt2YXIgYT12b2lkIDA9PT1hcmd1bWVudHNbMV18fGFy
Z3VtZW50c1sxXSxzPWE/bjppO3JldHVybiBzKGUsci5kZWZhdWx0KCkpfX0pLGUoImVtYmVyLXRl
bXBsYXRlLWNvbXBpbGVyL2luZGV4IixbImV4cG9ydHMiLCJlbWJlci1tZXRhbCIsImVtYmVyLXRl
bXBsYXRlLWNvbXBpbGVyL3N5c3RlbS9wcmVjb21waWxlIiwiZW1iZXItdGVtcGxhdGUtY29tcGls
ZXIvc3lzdGVtL2NvbXBpbGUiLCJlbWJlci10ZW1wbGF0ZS1jb21waWxlci9zeXN0ZW0vdGVtcGxh
dGUiLCJlbWJlci10ZW1wbGF0ZS1jb21waWxlci9wbHVnaW5zIiwiZW1iZXItdGVtcGxhdGUtY29t
cGlsZXIvcGx1Z2lucy90cmFuc2Zvcm0tb2xkLWJpbmRpbmctc3ludGF4IiwiZW1iZXItdGVtcGxh
dGUtY29tcGlsZXIvcGx1Z2lucy90cmFuc2Zvcm0tb2xkLWNsYXNzLWJpbmRpbmctc3ludGF4Iiwi
ZW1iZXItdGVtcGxhdGUtY29tcGlsZXIvcGx1Z2lucy90cmFuc2Zvcm0taXRlbS1jbGFzcyIsImVt
YmVyLXRlbXBsYXRlLWNvbXBpbGVyL3BsdWdpbnMvdHJhbnNmb3JtLWNsb3N1cmUtY29tcG9uZW50
LWF0dHJzLWludG8tbXV0IiwiZW1iZXItdGVtcGxhdGUtY29tcGlsZXIvcGx1Z2lucy90cmFuc2Zv
cm0tY29tcG9uZW50LWF0dHJzLWludG8tbXV0IiwiZW1iZXItdGVtcGxhdGUtY29tcGlsZXIvcGx1
Z2lucy90cmFuc2Zvcm0tY29tcG9uZW50LWN1cmx5LXRvLXJlYWRvbmx5IiwiZW1iZXItdGVtcGxh
dGUtY29tcGlsZXIvcGx1Z2lucy90cmFuc2Zvcm0tYW5nbGUtYnJhY2tldC1jb21wb25lbnRzIiwi
ZW1iZXItdGVtcGxhdGUtY29tcGlsZXIvcGx1Z2lucy90cmFuc2Zvcm0taW5wdXQtb24tdG8tb25F
dmVudCIsImVtYmVyLXRlbXBsYXRlLWNvbXBpbGVyL3BsdWdpbnMvdHJhbnNmb3JtLXRvcC1sZXZl
bC1jb21wb25lbnRzIiwiZW1iZXItdGVtcGxhdGUtY29tcGlsZXIvcGx1Z2lucy9kZXByZWNhdGUt
cmVuZGVyLW1vZGVsIiwiZW1iZXItdGVtcGxhdGUtY29tcGlsZXIvcGx1Z2lucy9wcmV2ZW50LXJl
bmRlci1ibG9jayIsImVtYmVyLXRlbXBsYXRlLWNvbXBpbGVyL3BsdWdpbnMvdHJhbnNmb3JtLWlu
bGluZS1saW5rLXRvIiwiZW1iZXItdGVtcGxhdGUtY29tcGlsZXIvcGx1Z2lucy9hc3NlcnQtbm8t
dmlldy1hbmQtY29udHJvbGxlci1wYXRocyIsImVtYmVyLXRlbXBsYXRlLWNvbXBpbGVyL3BsdWdp
bnMvYXNzZXJ0LW5vLXZpZXctaGVscGVyIiwiZW1iZXItdGVtcGxhdGUtY29tcGlsZXIvcGx1Z2lu
cy9hc3NlcnQtbm8tZWFjaC1pbiIsImVtYmVyLXRlbXBsYXRlLWNvbXBpbGVyL2NvbXBhdCJdLGZ1
bmN0aW9uKGUsdCxyLG4saSxvLGEscyx1LGwsYyxmLGQscCxoLG0sdixiLGcseSxfLHcpeyJ1c2Ug
c3RyaWN0IjtvLnJlZ2lzdGVyUGx1Z2luKCJhc3QiLGEuZGVmYXVsdCksby5yZWdpc3RlclBsdWdp
bigiYXN0IixzLmRlZmF1bHQpLG8ucmVnaXN0ZXJQbHVnaW4oImFzdCIsdS5kZWZhdWx0KSxvLnJl
Z2lzdGVyUGx1Z2luKCJhc3QiLGwuZGVmYXVsdCksby5yZWdpc3RlclBsdWdpbigiYXN0IixjLmRl
ZmF1bHQpLG8ucmVnaXN0ZXJQbHVnaW4oImFzdCIsZi5kZWZhdWx0KSxvLnJlZ2lzdGVyUGx1Z2lu
KCJhc3QiLGQuZGVmYXVsdCksby5yZWdpc3RlclBsdWdpbigiYXN0IixwLmRlZmF1bHQpLG8ucmVn
aXN0ZXJQbHVnaW4oImFzdCIsaC5kZWZhdWx0KSxvLnJlZ2lzdGVyUGx1Z2luKCJhc3QiLG0uZGVm
YXVsdCksby5yZWdpc3RlclBsdWdpbigiYXN0Iix2LmRlZmF1bHQpLG8ucmVnaXN0ZXJQbHVnaW4o
ImFzdCIsXy5kZWZhdWx0KSxvLnJlZ2lzdGVyUGx1Z2luKCJhc3QiLGIuZGVmYXVsdCksdC5kZWZh
dWx0LkVOVi5fRU5BQkxFX0xFR0FDWV9WSUVXX1NVUFBPUlR8fChvLnJlZ2lzdGVyUGx1Z2luKCJh
c3QiLGcuZGVmYXVsdCksby5yZWdpc3RlclBsdWdpbigiYXN0Iix5LmRlZmF1bHQpKSxlLl9FbWJl
cj10LmRlZmF1bHQsZS5wcmVjb21waWxlPXIuZGVmYXVsdCxlLmNvbXBpbGU9bi5kZWZhdWx0LGUu
dGVtcGxhdGU9aS5kZWZhdWx0LGUucmVnaXN0ZXJQbHVnaW49by5yZWdpc3RlclBsdWdpbn0pLGUo
ImVtYmVyLXRlbXBsYXRlLWNvbXBpbGVyL3BsdWdpbnMiLFsiZXhwb3J0cyJdLGZ1bmN0aW9uKGUp
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB0KGUsdCl7aWYoIXJbZV0pdGhyb3cgbmV3IEVycm9yKCdB
dHRlbXB0aW5nIHRvIHJlZ2lzdGVyICInK3QrJyIgYXMgIicrZSsnIiB3aGljaCBpcyBub3QgYSB2
YWxpZCBIVE1MQmFycyBwbHVnaW4gdHlwZS4nKTtyW2VdLnB1c2godCl9ZS5yZWdpc3RlclBsdWdp
bj10O3ZhciByPXthc3Q6W119O2UuZGVmYXVsdD1yfSksZSgiZW1iZXItdGVtcGxhdGUtY29tcGls
ZXIvcGx1Z2lucy9hc3NlcnQtbm8tZWFjaC1pbiIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvY29y
ZSIsImVtYmVyLW1ldGFsL2RlYnVnIiwiZW1iZXItdGVtcGxhdGUtY29tcGlsZXIvc3lzdGVtL2Nh
bGN1bGF0ZS1sb2NhdGlvbi1kaXNwbGF5Il0sZnVuY3Rpb24oZSx0LHIsbil7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIGkoKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPD0wfHx2b2lkIDA9PT1hcmd1bWVu
dHNbMF0/e306YXJndW1lbnRzWzBdO3RoaXMuc3ludGF4PW51bGwsdGhpcy5vcHRpb25zPWV9ZnVu
Y3Rpb24gbyhlLHQpe24uZGVmYXVsdChlLHQubG9jKSx0LnBhcmFtc1swXS5vcmlnaW5hbCx0LnBh
cmFtc1syXS5vcmlnaW5hbH1mdW5jdGlvbiBhKGUpe3JldHVybigiQmxvY2tTdGF0ZW1lbnQiPT09
ZS50eXBlfHwiTXVzdGFjaGVTdGF0ZW1lbnQiPT09ZS50eXBlKSYmImVhY2giPT09ZS5wYXRoLm9y
aWdpbmFsJiYzPT09ZS5wYXJhbXMubGVuZ3RoJiYiUGF0aEV4cHJlc3Npb24iPT09ZS5wYXJhbXNb
MV0udHlwZSYmImluIj09PWUucGFyYW1zWzFdLm9yaWdpbmFsfWkucHJvdG90eXBlLnRyYW5zZm9y
bT1mdW5jdGlvbihlKXtpZih0LmRlZmF1bHQuRU5WLl9FTkFCTEVfTEVHQUNZX1ZJRVdfU1VQUE9S
VClyZXR1cm4gZTt2YXIgcj1uZXcgdGhpcy5zeW50YXguV2Fsa2VyLG49dGhpcy5vcHRpb25zJiZ0
aGlzLm9wdGlvbnMubW9kdWxlTmFtZTtyZXR1cm4gci52aXNpdChlLGZ1bmN0aW9uKGUpe2EoZSkm
Jm8obixlKX0pLGV9LGUuZGVmYXVsdD1pfSksZSgiZW1iZXItdGVtcGxhdGUtY29tcGlsZXIvcGx1
Z2lucy9hc3NlcnQtbm8tdmlldy1hbmQtY29udHJvbGxlci1wYXRocyIsWyJleHBvcnRzIiwiZW1i
ZXItbWV0YWwvY29yZSIsImVtYmVyLW1ldGFsL2RlYnVnIiwiZW1iZXItdGVtcGxhdGUtY29tcGls
ZXIvc3lzdGVtL2NhbGN1bGF0ZS1sb2NhdGlvbi1kaXNwbGF5Il0sZnVuY3Rpb24oZSx0LHIsbil7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPD0wfHx2b2lk
IDA9PT1hcmd1bWVudHNbMF0/e306YXJndW1lbnRzWzBdO3RoaXMuc3ludGF4PW51bGwsdGhpcy5v
cHRpb25zPWV9ZnVuY3Rpb24gbyhlLHQscil7aWYociYmci5wYWlycyl7dmFyIG4saSxvLHM7Zm9y
KG49MCxpPXIucGFpcnMubGVuZ3RoO248aTtuKyspbz1yLnBhaXJzW25dLHM9by52YWx1ZS5wYXJh
bXMsYShlLG8scyl9fWZ1bmN0aW9uIGEoZSx0LHIpe2lmKHIpe3ZhciBuLGksbztmb3Iobj0wLGk9
ci5sZW5ndGg7bjxpO24rKylvPXJbbl0scyhlLHQsbyl9fWZ1bmN0aW9uIHMoZSx0LHIpe31mdW5j
dGlvbiB1KGUpe3JldHVybiJNdXN0YWNoZVN0YXRlbWVudCI9PT1lLnR5cGV8fCJCbG9ja1N0YXRl
bWVudCI9PT1lLnR5cGV9aS5wcm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9uKGUpe3ZhciB0PW5l
dyB0aGlzLnN5bnRheC5XYWxrZXIscj10aGlzLm9wdGlvbnMmJnRoaXMub3B0aW9ucy5tb2R1bGVO
YW1lO3JldHVybiB0LnZpc2l0KGUsZnVuY3Rpb24oZSl7dShlKSYmKHMocixlLGUucGF0aCksYShy
LGUsZS5wYXJhbXMpLG8ocixlLGUuaGFzaCkpfSksZX0sZS5kZWZhdWx0PWl9KSxlKCJlbWJlci10
ZW1wbGF0ZS1jb21waWxlci9wbHVnaW5zL2Fzc2VydC1uby12aWV3LWhlbHBlciIsWyJleHBvcnRz
IiwiZW1iZXItbWV0YWwvY29yZSIsImVtYmVyLW1ldGFsL2RlYnVnIiwiZW1iZXItdGVtcGxhdGUt
Y29tcGlsZXIvc3lzdGVtL2NhbGN1bGF0ZS1sb2NhdGlvbi1kaXNwbGF5Il0sZnVuY3Rpb24oZSx0
LHIsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPD0w
fHx2b2lkIDA9PT1hcmd1bWVudHNbMF0/e306YXJndW1lbnRzWzBdO3RoaXMuc3ludGF4PW51bGws
dGhpcy5vcHRpb25zPWV9ZnVuY3Rpb24gbyhlLHQpe3ZhciByPXQucGFyYW1zLmxlbmd0aCYmdC5w
YXJhbXNbMF0udmFsdWV9ZnVuY3Rpb24gYShlKXtyZXR1cm4oIk11c3RhY2hlU3RhdGVtZW50Ij09
PWUudHlwZXx8IkJsb2NrU3RhdGVtZW50Ij09PWUudHlwZSkmJiJ2aWV3Ij09PWUucGF0aC5wYXJ0
c1swXX1pLnByb3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24oZSl7aWYodC5kZWZhdWx0LkVOVi5f
RU5BQkxFX0xFR0FDWV9WSUVXX1NVUFBPUlQpcmV0dXJuIGU7dmFyIHI9bmV3IHRoaXMuc3ludGF4
LldhbGtlcixuPXRoaXMub3B0aW9ucyYmdGhpcy5vcHRpb25zLm1vZHVsZU5hbWU7cmV0dXJuIHIu
dmlzaXQoZSxmdW5jdGlvbihlKXthKGUpJiZvKG4sZSl9KSxlfSxlLmRlZmF1bHQ9aX0pLGUoImVt
YmVyLXRlbXBsYXRlLWNvbXBpbGVyL3BsdWdpbnMvZGVwcmVjYXRlLXJlbmRlci1tb2RlbCIsWyJl
eHBvcnRzIiwiZW1iZXItbWV0YWwvZGVidWciLCJlbWJlci10ZW1wbGF0ZS1jb21waWxlci9zeXN0
ZW0vY2FsY3VsYXRlLWxvY2F0aW9uLWRpc3BsYXkiXSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIG4oZSl7dGhpcy5zeW50YXg9bnVsbCx0aGlzLm9wdGlvbnM9ZX1mdW5jdGlv
biBpKGUpe3JldHVybiJNdXN0YWNoZVN0YXRlbWVudCI9PT1lLnR5cGUmJiJyZW5kZXIiPT09ZS5w
YXRoLm9yaWdpbmFsJiZlLnBhcmFtcy5sZW5ndGg+MX1mdW5jdGlvbiBvKGUsdCl7Zm9yKHZhciBy
PTAsbj1lLmxlbmd0aDtyPG47cisrKXQoZVtyXSl9ZS5kZWZhdWx0PW4sbi5wcm90b3R5cGUudHJh
bnNmb3JtPWZ1bmN0aW9uKGUpe3ZhciB0PSh0aGlzLm9wdGlvbnMubW9kdWxlTmFtZSxuZXcgdGhp
cy5zeW50YXguV2Fsa2VyKTtyZXR1cm4gdC52aXNpdChlLGZ1bmN0aW9uKGUpe2koZSkmJm8oZS5w
YXJhbXMsZnVuY3Rpb24oZSl7IlBhdGhFeHByZXNzaW9uIiE9PWUudHlwZX0pfSksZX19KSxlKCJl
bWJlci10ZW1wbGF0ZS1jb21waWxlci9wbHVnaW5zL3ByZXZlbnQtcmVuZGVyLWJsb2NrIixbImV4
cG9ydHMiLCJlbWJlci1tZXRhbC9lcnJvciIsImVtYmVyLXRlbXBsYXRlLWNvbXBpbGVyL3N5c3Rl
bS9jYWxjdWxhdGUtbG9jYXRpb24tZGlzcGxheSJdLGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gbihlKXt0aGlzLnN5bnRheD1udWxsLHRoaXMub3B0aW9ucz1lfWZ1bmN0aW9u
IGkoZSl7cmV0dXJuIkJsb2NrU3RhdGVtZW50Ij09PWUudHlwZSYmInJlbmRlciI9PT1lLnBhdGgu
b3JpZ2luYWx9ZnVuY3Rpb24gbyhlLHQpe3ZhciBuPXIuZGVmYXVsdChlLHQubG9jKTtyZXR1cm4i
VXNhZ2Ugb2YgYHJlbmRlcmAgaW4gYmxvY2sgZm9ybSBpcyB1bnN1cHBvcnRlZCAiK24rIi4ifWUu
ZGVmYXVsdD1uLG4ucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbihlKXt2YXIgcj10aGlzLm9w
dGlvbnMubW9kdWxlTmFtZSxuPW5ldyB0aGlzLnN5bnRheC5XYWxrZXI7cmV0dXJuIG4udmlzaXQo
ZSxmdW5jdGlvbihlKXtpZihpKGUpKXRocm93IG5ldyB0LmRlZmF1bHQobyhyLGUpKX0pLGV9fSks
ZSgiZW1iZXItdGVtcGxhdGUtY29tcGlsZXIvcGx1Z2lucy90cmFuc2Zvcm0tYW5nbGUtYnJhY2tl
dC1jb21wb25lbnRzIixbImV4cG9ydHMiXSxmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gdCgpe3RoaXMuc3ludGF4PW51bGx9ZnVuY3Rpb24gcihlKXtyZXR1cm4iQ29tcG9uZW50Tm9k
ZSI9PT1lLnR5cGV9dC5wcm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyB0
aGlzLnN5bnRheC5XYWxrZXI7cmV0dXJuIHQudmlzaXQoZSxmdW5jdGlvbihlKXtyKGUpJiYoZS50
YWc9IjwiK2UudGFnKyI+Iil9KSxlfSxlLmRlZmF1bHQ9dH0pLGUoImVtYmVyLXRlbXBsYXRlLWNv
bXBpbGVyL3BsdWdpbnMvdHJhbnNmb3JtLWNsb3N1cmUtY29tcG9uZW50LWF0dHJzLWludG8tbXV0
IixbImV4cG9ydHMiXSxmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gdCgpe3RoaXMu
c3ludGF4PW51bGx9ZnVuY3Rpb24gcihlKXtyZXR1cm4iU3ViRXhwcmVzc2lvbiI9PT1lLnR5cGUm
JiJjb21wb25lbnQiPT09ZS5wYXRoLm9yaWdpbmFsfWZ1bmN0aW9uIG4oZSx0KXtmb3IodmFyIHI9
MTtyPHQucGFyYW1zLmxlbmd0aDtyKyspIlBhdGhFeHByZXNzaW9uIj09PXQucGFyYW1zW3JdLnR5
cGUmJih0LnBhcmFtc1tyXT1lLnNleHByKGUucGF0aCgiQG11dCIpLFt0LnBhcmFtc1tyXV0pKTtp
KHQuaGFzaC5wYWlycyxmdW5jdGlvbih0KXt2YXIgcj10LnZhbHVlOyJQYXRoRXhwcmVzc2lvbiI9
PT1yLnR5cGUmJih0LnZhbHVlPWUuc2V4cHIoZS5wYXRoKCJAbXV0IiksW3QudmFsdWVdKSl9KX1m
dW5jdGlvbiBpKGUsdCl7Zm9yKHZhciByPTAsbj1lLmxlbmd0aDtyPG47cisrKXQoZVtyXSl9dC5w
cm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuc3ludGF4LmJ1aWxkZXJz
O3JldHVybiB0aGlzLnN5bnRheC50cmF2ZXJzZShlLHtTdWJFeHByZXNzaW9uOmZ1bmN0aW9uKGUp
e3IoZSkmJm4odCxlKX19KSxlfSxlLmRlZmF1bHQ9dH0pLGUoImVtYmVyLXRlbXBsYXRlLWNvbXBp
bGVyL3BsdWdpbnMvdHJhbnNmb3JtLWNvbXBvbmVudC1hdHRycy1pbnRvLW11dCIsWyJleHBvcnRz
Il0sZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHQoKXt0aGlzLnN5bnRheD1udWxs
fWZ1bmN0aW9uIHIoZSl7cmV0dXJuIkJsb2NrU3RhdGVtZW50Ij09PWUudHlwZXx8Ik11c3RhY2hl
U3RhdGVtZW50Ij09PWUudHlwZX1mdW5jdGlvbiBuKGUsdCl7Zm9yKHZhciByPTAsbj1lLmxlbmd0
aDtyPG47cisrKXQoZVtyXSl9dC5wcm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9uKGUpe3ZhciB0
PXRoaXMuc3ludGF4LmJ1aWxkZXJzLGk9bmV3IHRoaXMuc3ludGF4LldhbGtlcjtyZXR1cm4gaS52
aXNpdChlLGZ1bmN0aW9uKGUpe3IoZSkmJm4oZS5oYXNoLnBhaXJzLGZ1bmN0aW9uKGUpe3ZhciBy
PWUudmFsdWU7IlBhdGhFeHByZXNzaW9uIj09PXIudHlwZSYmKGUudmFsdWU9dC5zZXhwcih0LnBh
dGgoIkBtdXQiKSxbZS52YWx1ZV0pKX0pfSksZX0sZS5kZWZhdWx0PXR9KSxlKCJlbWJlci10ZW1w
bGF0ZS1jb21waWxlci9wbHVnaW5zL3RyYW5zZm9ybS1jb21wb25lbnQtY3VybHktdG8tcmVhZG9u
bHkiLFsiZXhwb3J0cyJdLGZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB0KCl7dGhp
cy5zeW50YXg9bnVsbH1mdW5jdGlvbiByKGUpe3JldHVybiJDb21wb25lbnROb2RlIj09PWUudHlw
ZX1mdW5jdGlvbiBuKGUsdCl7Zm9yKHZhciByPTAsbj1lLmxlbmd0aDtyPG47cisrKXQoZVtyXSl9
dC5wcm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuc3ludGF4LmJ1aWxk
ZXJzLGk9bmV3IHRoaXMuc3ludGF4LldhbGtlcjtyZXR1cm4gaS52aXNpdChlLGZ1bmN0aW9uKGUp
e3IoZSkmJm4oZS5hdHRyaWJ1dGVzLGZ1bmN0aW9uKGUpeyJNdXN0YWNoZVN0YXRlbWVudCI9PT1l
LnZhbHVlLnR5cGUmJihlLnZhbHVlLnBhcmFtcy5sZW5ndGh8fGUudmFsdWUuaGFzaC5wYWlycy5s
ZW5ndGh8fChlLnZhbHVlPXQubXVzdGFjaGUodC5wYXRoKCJyZWFkb25seSIpLFtlLnZhbHVlLnBh
dGhdLG51bGwsIWUudmFsdWUuZXNjYXBlKSkpfSl9KSxlfSxlLmRlZmF1bHQ9dH0pLGUoImVtYmVy
LXRlbXBsYXRlLWNvbXBpbGVyL3BsdWdpbnMvdHJhbnNmb3JtLWlubGluZS1saW5rLXRvIixbImV4
cG9ydHMiXSxmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gdChlKXt0aGlzLm9wdGlv
bnM9ZSx0aGlzLnN5bnRheD1udWxsfWUuZGVmYXVsdD10LHQucHJvdG90eXBlLnRyYW5zZm9ybT1m
dW5jdGlvbihlKXtmdW5jdGlvbiB0KGUsdCl7cmV0dXJuIGEucHJvZ3JhbShbcihlLHQpXSxudWxs
LHQpfWZ1bmN0aW9uIHIoZSx0KXtzd2l0Y2goZS50eXBlKXtjYXNlIlBhdGhFeHByZXNzaW9uIjpy
ZXR1cm4gYS5tdXN0YWNoZShlLG51bGwsbnVsbCxudWxsLHQpO2Nhc2UiU3ViRXhwcmVzc2lvbiI6
cmV0dXJuIGEubXVzdGFjaGUoZS5wYXRoLGUucGFyYW1zLGUuaGFzaCxudWxsLHQpO2RlZmF1bHQ6
cmV0dXJuIGEudGV4dCgiIitlLnZhbHVlLHQpfX1mdW5jdGlvbiBuKGUpe3JldHVybiBhLnNleHBy
KCItaHRtbC1zYWZlIixbZV0pfXZhciBpPXRoaXMuc3ludGF4LG89aS50cmF2ZXJzZSxhPWkuYnVp
bGRlcnM7cmV0dXJuIG8oZSx7TXVzdGFjaGVTdGF0ZW1lbnQ6ZnVuY3Rpb24oZSl7aWYoImxpbmst
dG8iPT09ZS5wYXRoLm9yaWdpbmFsKXt2YXIgcj1lLmVzY2FwZWQ/ZS5wYXJhbXNbMF06bihlLnBh
cmFtc1swXSk7cmV0dXJuIGEuYmxvY2soImxpbmstdG8iLGUucGFyYW1zLnNsaWNlKDEpLGUuaGFz
aCx0KHIsZS5sb2MpLG51bGwsZS5sb2MpfX19KSxlfX0pLGUoImVtYmVyLXRlbXBsYXRlLWNvbXBp
bGVyL3BsdWdpbnMvdHJhbnNmb3JtLWlucHV0LW9uLXRvLW9uRXZlbnQiLFsiZXhwb3J0cyIsImVt
YmVyLW1ldGFsL2RlYnVnIiwiZW1iZXItdGVtcGxhdGUtY29tcGlsZXIvc3lzdGVtL2NhbGN1bGF0
ZS1sb2NhdGlvbi1kaXNwbGF5Il0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biBuKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aDw9MHx8dm9pZCAwPT09YXJndW1lbnRzWzBdP3t9
OmFyZ3VtZW50c1swXTt0aGlzLnN5bnRheD1udWxsLHRoaXMub3B0aW9ucz1lfWZ1bmN0aW9uIGko
ZSx0KXtmb3IodmFyIHI9MCxuPWUucGFpcnMubGVuZ3RoO3I8bjtyKyspe3ZhciBpPWUucGFpcnNb
cl07aWYoaS5rZXk9PT10KXJldHVybiBpfXJldHVybiExfWZ1bmN0aW9uIG8oZSx0KXtmb3IodmFy
IHI9W10sbj0wLGk9ZS5wYWlycy5sZW5ndGg7bjxpO24rKyl7dmFyIG89ZS5wYWlyc1tuXTtvIT09
dCYmci5wdXNoKG8pfWUucGFpcnM9cn1uLnByb3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24oZSl7
dmFyIHQ9dGhpcyxuPXQuc3ludGF4LmJ1aWxkZXJzLGE9bmV3IHQuc3ludGF4LldhbGtlcixzPXQu
b3B0aW9ucy5tb2R1bGVOYW1lO3JldHVybiBhLnZpc2l0KGUsZnVuY3Rpb24oZSl7aWYodC52YWxp
ZGF0ZShlKSl7dmFyIGE9aShlLmhhc2gsImFjdGlvbiIpLHU9aShlLmhhc2gsIm9uIiksbD1pKGUu
aGFzaCwib25FdmVudCIpLGM9dXx8bDtyLmRlZmF1bHQocyxlLmxvYyk7aWYoYyYmIlN0cmluZ0xp
dGVyYWwiIT09Yy52YWx1ZS50eXBlKXJldHVybiB2b2lkKGMua2V5PSJvbkV2ZW50Iik7aWYobyhl
Lmhhc2gsYyksbyhlLmhhc2gsYSksIWEpcmV0dXJuO2M/Yy5rZXkrJz0iJytjLnZhbHVlLnZhbHVl
KyciICc6IiI7YyYmImtleVByZXNzIj09PWMudmFsdWUudmFsdWUmJihjLnZhbHVlLnZhbHVlPSJr
ZXktcHJlc3MiKTsoYz9jLnZhbHVlLnZhbHVlOiJlbnRlciIpKyc9IicrYS52YWx1ZS5vcmlnaW5h
bCsnIic7Y3x8KGM9bi5wYWlyKCJvbkV2ZW50IixuLnN0cmluZygiZW50ZXIiKSkpLGUuaGFzaC5w
YWlycy5wdXNoKG4ucGFpcihjLnZhbHVlLnZhbHVlLGEudmFsdWUpKX19KSxlfSxuLnByb3RvdHlw
ZS52YWxpZGF0ZT1mdW5jdGlvbihlKXtyZXR1cm4iTXVzdGFjaGVTdGF0ZW1lbnQiPT09ZS50eXBl
JiYiaW5wdXQiPT09ZS5wYXRoLm9yaWdpbmFsJiYoaShlLmhhc2gsImFjdGlvbiIpfHxpKGUuaGFz
aCwib24iKXx8aShlLmhhc2gsIm9uRXZlbnQiKSl9LGUuZGVmYXVsdD1ufSksZSgiZW1iZXItdGVt
cGxhdGUtY29tcGlsZXIvcGx1Z2lucy90cmFuc2Zvcm0taXRlbS1jbGFzcyIsWyJleHBvcnRzIl0s
ZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHQoKXt0aGlzLnN5bnRheD1udWxsfWZ1
bmN0aW9uIHIoZSl7cmV0dXJuKCJCbG9ja1N0YXRlbWVudCI9PT1lLnR5cGV8fCJNdXN0YWNoZVN0
YXRlbWVudCI9PT1lLnR5cGUpJiYiY29sbGVjdGlvbiI9PT1lLnBhdGgub3JpZ2luYWx9ZnVuY3Rp
b24gbihlLHQpe2Zvcih2YXIgcj0wLG49ZS5sZW5ndGg7cjxuO3IrKyl0KGVbcl0pfWUuZGVmYXVs
dD10LHQucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbihlKXt2YXIgdD10aGlzLnN5bnRheC5i
dWlsZGVycyxpPW5ldyB0aGlzLnN5bnRheC5XYWxrZXI7cmV0dXJuIGkudmlzaXQoZSxmdW5jdGlv
bihlKXtyKGUpJiZuKGUuaGFzaC5wYWlycyxmdW5jdGlvbihlKXt2YXIgcj1lLmtleSxuPWUudmFs
dWU7aWYoIml0ZW1DbGFzcyI9PT1yJiYiU3RyaW5nTGl0ZXJhbCIhPT1uLnR5cGUpe3ZhciBpPW4u
b3JpZ2luYWwsbz1bbl0sYT1bdC5zdHJpbmcoaSksdC5wYXRoKGkpXTtvLnB1c2godC5zZXhwcih0
LnN0cmluZygiLW5vcm1hbGl6ZS1jbGFzcyIpLGEpKTt2YXIgcz10LnNleHByKHQuc3RyaW5nKCJp
ZiIpLG8pO2UudmFsdWU9c319KX0pLGV9fSksZSgiZW1iZXItdGVtcGxhdGUtY29tcGlsZXIvcGx1
Z2lucy90cmFuc2Zvcm0tb2xkLWJpbmRpbmctc3ludGF4IixbImV4cG9ydHMiLCJlbWJlci1tZXRh
bC9kZWJ1ZyIsImVtYmVyLXRlbXBsYXRlLWNvbXBpbGVyL3N5c3RlbS9jYWxjdWxhdGUtbG9jYXRp
b24tZGlzcGxheSJdLGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlKXt0
aGlzLnN5bnRheD1udWxsLHRoaXMub3B0aW9ucz1lfWZ1bmN0aW9uIGkoZSl7cmV0dXJuIkJsb2Nr
U3RhdGVtZW50Ij09PWUudHlwZXx8Ik11c3RhY2hlU3RhdGVtZW50Ij09PWUudHlwZX1mdW5jdGlv
biBvKGUsdCl7Zm9yKHZhciByPTAsbj1lLmxlbmd0aDtyPG47cisrKXQoZVtyXSl9ZS5kZWZhdWx0
PW4sbi5wcm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMub3B0aW9ucy5t
b2R1bGVOYW1lLG49dGhpcy5zeW50YXguYnVpbGRlcnMsYT1uZXcgdGhpcy5zeW50YXguV2Fsa2Vy
O3JldHVybiBhLnZpc2l0KGUsZnVuY3Rpb24oZSl7aShlKSYmbyhlLmhhc2gucGFpcnMsZnVuY3Rp
b24oZSl7dmFyIGk9ZS5rZXksbz1lLnZhbHVlO3IuZGVmYXVsdCh0LGUubG9jKTtpZigiY2xhc3NC
aW5kaW5nIiE9PWkmJiJCaW5kaW5nIj09PWkuc3Vic3RyKC03KSl7dmFyIGE9aS5zbGljZSgwLC03
KTtlLmtleT1hLCJTdHJpbmdMaXRlcmFsIj09PW8udHlwZSYmKGUudmFsdWU9bi5wYXRoKG8ub3Jp
Z2luYWwpKX19KX0pLGV9fSksZSgiZW1iZXItdGVtcGxhdGUtY29tcGlsZXIvcGx1Z2lucy90cmFu
c2Zvcm0tb2xkLWNsYXNzLWJpbmRpbmctc3ludGF4IixbImV4cG9ydHMiXSxmdW5jdGlvbihlKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gdChlKXt0aGlzLnN5bnRheD1udWxsLHRoaXMub3B0aW9ucz1l
fWZ1bmN0aW9uIHIoZSx0LHIpe2Zvcih2YXIgbj0wLGk9ZS5sZW5ndGg7bjxpO24rKyl7dmFyIG89
ZVtuXSxhPW9bMF0scz1vWzFdLHU9b1syXSxsPXZvaWQgMDtpZigiIj09PWEpbD1yLnN0cmluZyhz
KTtlbHNle3ZhciBjPVtyLnBhdGgoYSldO2lmKHMpYy5wdXNoKHIuc3RyaW5nKHMpKTtlbHNle3Zh
ciBmPVtyLnN0cmluZyhhKSxyLnBhdGgoYSldLGQ9ci5oYXNoKCk7dm9pZCAwIT09cyYmZC5wYWly
cy5wdXNoKHIucGFpcigiYWN0aXZlQ2xhc3MiLHIuc3RyaW5nKHMpKSksdm9pZCAwIT09dSYmZC5w
YWlycy5wdXNoKHIucGFpcigiaW5hY3RpdmVDbGFzcyIsci5zdHJpbmcodSkpKSxjLnB1c2goci5z
ZXhwcihyLnN0cmluZygiLW5vcm1hbGl6ZS1jbGFzcyIpLGYsZCkpfXUmJmMucHVzaChyLnN0cmlu
Zyh1KSksbD1yLnNleHByKHIuc3RyaW5nKCJpZiIpLGMpfXQucHVzaChsKSx0LnB1c2goci5zdHJp
bmcoIiAiKSl9fWZ1bmN0aW9uIG4oZSl7cmV0dXJuIkJsb2NrU3RhdGVtZW50Ij09PWUudHlwZXx8
Ik11c3RhY2hlU3RhdGVtZW50Ij09PWUudHlwZX1mdW5jdGlvbiBpKGUsdCl7Zm9yKHZhciByPTAs
bj1lLmxlbmd0aDtyPG47cisrKXQoZVtyXSxyKX1mdW5jdGlvbiBvKGUpe2Zvcih2YXIgdD1lLnNw
bGl0KCIgIikscj0wLG49dC5sZW5ndGg7cjxuO3IrKyl0W3JdPXRbcl0uc3BsaXQoIjoiKTtyZXR1
cm4gdH1lLmRlZmF1bHQ9dCx0LnByb3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24oZSl7dmFyIHQ9
dGhpcy5zeW50YXguYnVpbGRlcnMsYT1uZXcgdGhpcy5zeW50YXguV2Fsa2VyO3JldHVybiBhLnZp
c2l0KGUsZnVuY3Rpb24oZSl7aWYobihlKSl7dmFyIGE9W10scz1bXSx1PXZvaWQgMDtpZihpKGUu
aGFzaC5wYWlycyxmdW5jdGlvbihlLHQpe3ZhciByPWUua2V5OyJjbGFzc0JpbmRpbmciPT09cnx8
ImNsYXNzTmFtZUJpbmRpbmdzIj09PXI/KHMucHVzaCh0KSxhLnB1c2goZSkpOiJjbGFzcyI9PT1y
JiYodT1lKX0pLDAhPT1hLmxlbmd0aCl7dmFyIGw9W107dT8obC5wdXNoKHUudmFsdWUpLGwucHVz
aCh0LnN0cmluZygiICIpKSk6KHU9dC5wYWlyKCJjbGFzcyIsbnVsbCksZS5oYXNoLnBhaXJzLnB1
c2godSkpLGkocyxmdW5jdGlvbih0KXtlLmhhc2gucGFpcnMuc3BsaWNlKHQsMSl9KSxpKGEsZnVu
Y3Rpb24oZSl7dmFyIG49ZS52YWx1ZSxpPShlLmxvYyxbXSk7aWYoIlN0cmluZ0xpdGVyYWwiPT09
bi50eXBlKXt2YXIgYT1vKG4ub3JpZ2luYWwpO3IoYSxpLHQpLGwucHVzaC5hcHBseShsLGkpfX0p
O3ZhciBjPXQuaGFzaCgpO3UudmFsdWU9dC5zZXhwcih0LnN0cmluZygiY29uY2F0IiksbCxjKX19
fSksZX19KSxlKCJlbWJlci10ZW1wbGF0ZS1jb21waWxlci9wbHVnaW5zL3RyYW5zZm9ybS10b3At
bGV2ZWwtY29tcG9uZW50cyIsWyJleHBvcnRzIl0sZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIHQoKXt0aGlzLnN5bnRheD1udWxsfWZ1bmN0aW9uIHIoZSx0LHIpe3ZhciBuPWUubG9j
LGk9ZS5ib2R5O2lmKG4mJjE9PT1uLnN0YXJ0LmxpbmUmJjA9PT1uLnN0YXJ0LmNvbHVtbil7Zm9y
KHZhciBvPXZvaWQgMCxhPXZvaWQgMCxzPTAsdT0wLGw9aS5sZW5ndGg7dTxsO3UrKyl7dmFyIGM9
aVt1XTtpZigiVGV4dE5vZGUiIT09Yy50eXBlfHwhL15bXHNdKiQvLnRlc3QoYy5jaGFycykpe2lm
KHMrKz4wKXJldHVybiExOyJDb21wb25lbnROb2RlIiE9PWMudHlwZSYmIkVsZW1lbnROb2RlIiE9
PWMudHlwZXx8KG89YyxhPXUpfX1vJiYiQ29tcG9uZW50Tm9kZSI9PT1vLnR5cGUmJnQobyl9fXQu
cHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbihlKXt2YXIgdD10aGlzLnN5bnRheC5idWlsZGVy
cztyZXR1cm4gcihlLGZ1bmN0aW9uKGUpeyJDb21wb25lbnROb2RlIj09PWUudHlwZSYmKGUudGFn
PSJAIitlLnRhZyxlLmlzU3RhdGljPSEwKX0sZnVuY3Rpb24oZSl7dmFyIHI9ZS5hdHRyaWJ1dGVz
LnNvbWUoZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWUuZXNjYXBlZD09PSExfSk7aWYoZS5tb2Rp
ZmllcnMubGVuZ3RofHxyKXJldHVybiBlO3ZhciBuPXQucHJvZ3JhbShlLmNoaWxkcmVuKSxpPXQu
Y29tcG9uZW50KCJAPCIrZS50YWcrIj4iLGUuYXR0cmlidXRlcyxuLGUubG9jKTtyZXR1cm4gaS5p
c1N0YXRpYz0hMCxpfSksZX0sZS5kZWZhdWx0PXR9KSxlKCJlbWJlci10ZW1wbGF0ZS1jb21waWxl
ci9zeXN0ZW0vY2FsY3VsYXRlLWxvY2F0aW9uLWRpc3BsYXkiLFsiZXhwb3J0cyJdLGZ1bmN0aW9u
KGUpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB0KGUsdCl7dmFyIHI9dHx8e30sbj1yLnN0YXJ0fHx7
fSxpPW4uY29sdW1uLG89bi5saW5lLGE9IiI7cmV0dXJuIGUmJihhKz0iJyIrZSsiJyAiKSx2b2lk
IDAhPT1vJiZ2b2lkIDAhPT1pJiYoZSYmKGErPSJAICIpLGErPSJMIitvKyI6QyIraSksYSYmKGE9
IigiK2ErIikgIiksYX1lLmRlZmF1bHQ9dH0pLGUoImVtYmVyLXRlbXBsYXRlLWNvbXBpbGVyL3N5
c3RlbS9jb21waWxlIixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9mZWF0dXJlcyIsInJlcXVpcmUi
LCJlbWJlci10ZW1wbGF0ZS1jb21waWxlci9zeXN0ZW0vY29tcGlsZV9vcHRpb25zIiwiZW1iZXIt
dGVtcGxhdGUtY29tcGlsZXIvc3lzdGVtL3RlbXBsYXRlIl0sZnVuY3Rpb24oZSx0LHIsbixpKXsi
dXNlIHN0cmljdCI7dmFyIG87ZS5kZWZhdWx0PWZ1bmN0aW9uKGUsdCl7aWYoIW8mJnIuaGFzKCJo
dG1sYmFycy1jb21waWxlci9jb21waWxlciIpJiYobz1yLmRlZmF1bHQoImh0bWxiYXJzLWNvbXBp
bGVyL2NvbXBpbGVyIikuY29tcGlsZSksIW8pdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgY2FsbCBg
Y29tcGlsZWAgd2l0aG91dCB0aGUgdGVtcGxhdGUgY29tcGlsZXIgbG9hZGVkLiBQbGVhc2UgbG9h
ZCBgZW1iZXItdGVtcGxhdGUtY29tcGlsZXIuanNgIHByaW9yIHRvIGNhbGxpbmcgYGNvbXBpbGVg
LiIpO3ZhciBhPW8oZSxuLmRlZmF1bHQodCkpO3JldHVybiBpLmRlZmF1bHQoYSl9fSksZSgiZW1i
ZXItdGVtcGxhdGUtY29tcGlsZXIvc3lzdGVtL2NvbXBpbGVfb3B0aW9ucyIsWyJleHBvcnRzIiwi
ZW1iZXItbWV0YWwvYXNzaWduIiwiZW1iZXItdGVtcGxhdGUtY29tcGlsZXIvcGx1Z2lucyJdLGZ1
bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49dm9pZCAwLGk9dm9pZCAwO249ZnVuY3Rp
b24oZSl7dmFyIG49ITAsbz12b2lkIDA7bz1lPT09ITA/e306dC5kZWZhdWx0KHt9LGUpLG8uZGlz
YWJsZUNvbXBvbmVudEdlbmVyYXRpb249bjt2YXIgYT17YXN0OnIuZGVmYXVsdC5hc3Quc2xpY2Uo
KX07cmV0dXJuIG8ucGx1Z2lucyYmby5wbHVnaW5zLmFzdCYmKGEuYXN0PWEuYXN0LmNvbmNhdChv
LnBsdWdpbnMuYXN0KSksby5wbHVnaW5zPWEsby5idWlsZE1ldGE9ZnVuY3Rpb24oZSl7cmV0dXJu
e2ZyYWdtZW50UmVhc29uOmkoZSkscmV2aXNpb246IkVtYmVyQDIuNi4yIixsb2M6ZS5sb2MsbW9k
dWxlTmFtZTpvLm1vZHVsZU5hbWV9fSxvfSxpPWZ1bmN0aW9uKGUpe3ZhciB0PWUubG9jLHI9ZS5i
b2R5O2lmKCF0fHwxIT09dC5zdGFydC5saW5lfHwwIT09dC5zdGFydC5jb2x1bW4pcmV0dXJuITE7
Zm9yKHZhciBuPXZvaWQgMCxpPTAsbz17fSxhPTAscz1yLmxlbmd0aDthPHM7YSsrKXt2YXIgdT1y
W2FdOyJUZXh0Tm9kZSI9PT11LnR5cGUmJi9eW1xzXSokLy50ZXN0KHUuY2hhcnMpfHwoaSsrPjAm
JihvWyJtdWx0aXBsZS1ub2RlcyJdPSEwKSwiQ29tcG9uZW50Tm9kZSI9PT11LnR5cGV8fCJFbGVt
ZW50Tm9kZSI9PT11LnR5cGU/bj11Om9bIndyb25nLXR5cGUiXT0hMCl9aWYoMD09PWkpcmV0dXJu
e25hbWU6Im1pc3Npbmctd3JhcHBlciIscHJvYmxlbXM6WyJlbXB0eS1ib2R5Il19O3ZhciBsPU9i
amVjdC5rZXlzKG8pO3JldHVybiBsLmxlbmd0aD97bmFtZToibWlzc2luZy13cmFwcGVyIixwcm9i
bGVtczpsfToiQ29tcG9uZW50Tm9kZSIhPT1uLnR5cGUmJihuLm1vZGlmaWVycy5sZW5ndGg/e25h
bWU6Im1vZGlmaWVycyIsbW9kaWZpZXJzOm4ubW9kaWZpZXJzLm1hcChmdW5jdGlvbihlKXtyZXR1
cm4gZS5wYXRoLm9yaWdpbmFsfSl9OiEhbi5hdHRyaWJ1dGVzLnNvbWUoZnVuY3Rpb24oZSl7cmV0
dXJuIWUudmFsdWUuZXNjYXBlZH0pJiZ7bmFtZToidHJpcGxlLWN1cmxpZXMifSl9LGUuZGVmYXVs
dD1ufSksZSgiZW1iZXItdGVtcGxhdGUtY29tcGlsZXIvc3lzdGVtL3ByZWNvbXBpbGUiLFsiZXhw
b3J0cyIsImVtYmVyLW1ldGFsL2ZlYXR1cmVzIiwicmVxdWlyZSIsImVtYmVyLXRlbXBsYXRlLWNv
bXBpbGVyL3N5c3RlbS9jb21waWxlX29wdGlvbnMiXSxmdW5jdGlvbihlLHQscixuKXsidXNlIHN0
cmljdCI7dmFyIGk7ZS5kZWZhdWx0PWZ1bmN0aW9uKGUsdCl7aWYoIWkmJnIuaGFzKCJodG1sYmFy
cy1jb21waWxlci9jb21waWxlciIpJiYoaT1yLmRlZmF1bHQoImh0bWxiYXJzLWNvbXBpbGVyL2Nv
bXBpbGVyIikuY29tcGlsZVNwZWMpLCFpKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGNhbGwgYGNv
bXBpbGVTcGVjYCB3aXRob3V0IHRoZSB0ZW1wbGF0ZSBjb21waWxlciBsb2FkZWQuIFBsZWFzZSBs
b2FkIGBlbWJlci10ZW1wbGF0ZS1jb21waWxlci5qc2AgcHJpb3IgdG8gY2FsbGluZyBgY29tcGls
ZVNwZWNgLiIpO3JldHVybiBpKGUsbi5kZWZhdWx0KHQpKX19KSxlKCJlbWJlci10ZW1wbGF0ZS1j
b21waWxlci9zeXN0ZW0vdGVtcGxhdGUiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL2ZlYXR1cmVz
IiwicmVxdWlyZSJdLGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49dm9pZCAwLGk9
ci5kZWZhdWx0KCJodG1sYmFycy1ydW50aW1lL2hvb2tzIiksbz1pLndyYXA7bj1mdW5jdGlvbihl
KXtyZXR1cm4gZS5yZW5kZXJ8fChlPW8oZSkpLGUuaXNUb3A9ITAsZS5pc01ldGhvZD0hMSxlfSxl
LmRlZmF1bHQ9bn0pLGUoImVtYmVyLXZpZXdzL2NvbXBhdC9hdHRycy1wcm94eSIsWyJleHBvcnRz
IiwiZW1iZXItbWV0YWwvbWl4aW4iLCJlbWJlci1tZXRhbC9zeW1ib2wiLCJlbWJlci1tZXRhbC9w
cm9wZXJ0eV9ldmVudHMiXSxmdW5jdGlvbihlLHQscixuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
aShlKXtyZXR1cm4iWW91IHRyaWVkIHRvIGxvb2sgdXAgYW4gYXR0cmlidXRlIGRpcmVjdGx5IG9u
IHRoZSBjb21wb25lbnQuIFRoaXMgaXMgZGVwcmVjYXRlZC4gVXNlIGF0dHJzLiIrZSsiIGluc3Rl
YWQuIn1mdW5jdGlvbiBvKGUpe3JldHVybiBlJiZlW2FdfWUuZGVwcmVjYXRpb249aTt2YXIgYT1y
LmRlZmF1bHQoIk1VVEFCTEVfQ0VMTCIpO2UuTVVUQUJMRV9DRUxMPWE7dmFyIHM9e2F0dHJzOm51
bGwsZ2V0QXR0cjpmdW5jdGlvbihlKXt2YXIgdD10aGlzLmF0dHJzO2lmKHQpcmV0dXJuIHRoaXMu
Z2V0QXR0ckZvcih0LGUpfSxnZXRBdHRyRm9yOmZ1bmN0aW9uKGUsdCl7dmFyIHI9ZVt0XTtyZXR1
cm4gbyhyKT9yLnZhbHVlOnJ9LHNldEF0dHI6ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLmF0dHJz
LG49cltlXTtpZighbyhuKSl0aHJvdyBuZXcgRXJyb3IoIllvdSBjYW4ndCB1cGRhdGUgYXR0cnMu
IitlKyIsIGJlY2F1c2UgaXQncyBub3QgbXV0YWJsZSIpO24udXBkYXRlKHQpfSxfcHJvcGFnYXRl
QXR0cnNUb1RoaXM6ZnVuY3Rpb24oZSl7dGhpcy5faXNEaXNwYXRjaGluZ0F0dHJzPSEwLHRoaXMu
c2V0UHJvcGVydGllcyhlKSx0aGlzLl9pc0Rpc3BhdGNoaW5nQXR0cnM9ITF9fTtzW24uUFJPUEVS
VFlfRElEX0NIQU5HRV09ZnVuY3Rpb24oZSl7dGhpcy5faXNBbmdsZUJyYWNrZXR8fHRoaXMuX2lz
RGlzcGF0Y2hpbmdBdHRyc3x8dGhpcy5fY3VycmVudFN0YXRlJiZ0aGlzLl9jdXJyZW50U3RhdGUu
bGVnYWN5UHJvcGVydHlEaWRDaGFuZ2UodGhpcyxlKX0sZS5kZWZhdWx0PXQuTWl4aW4uY3JlYXRl
KHMpfSksZSgiZW1iZXItdmlld3MvY29tcG9uZW50X2xvb2t1cCIsWyJleHBvcnRzIiwiZW1iZXIt
bWV0YWwvY29yZSIsImVtYmVyLW1ldGFsL2RlYnVnIiwiZW1iZXItcnVudGltZS9zeXN0ZW0vb2Jq
ZWN0IiwiZW1iZXItaHRtbGJhcnMvc3lzdGVtL2xvb2t1cC1oZWxwZXIiLCJjb250YWluZXIvb3du
ZXIiXSxmdW5jdGlvbihlLHQscixuLGksbyl7InVzZSBzdHJpY3QiO2UuZGVmYXVsdD1uLmRlZmF1
bHQuZXh0ZW5kKHtpbnZhbGlkTmFtZTpmdW5jdGlvbihlKXtpZighaS5DT05UQUlOU19EQVNIX0NB
Q0hFLmdldChlKSlyZXR1cm4hMH0sbG9va3VwRmFjdG9yeTpmdW5jdGlvbihlLHIpe3I9cnx8by5n
ZXRPd25lcih0aGlzKTt2YXIgbj0iY29tcG9uZW50OiIrZSxpPSJ0ZW1wbGF0ZTpjb21wb25lbnRz
LyIrZSxhPXImJnIuaGFzUmVnaXN0cmF0aW9uKGkpO2EmJnIuaW5qZWN0KG4sImxheW91dCIsaSk7
dmFyIHM9ci5fbG9va3VwRmFjdG9yeShuKTtpZihhfHxzKXJldHVybiBzfHwoci5yZWdpc3Rlcihu
LHQuZGVmYXVsdC5Db21wb25lbnQpLHM9ci5fbG9va3VwRmFjdG9yeShuKSksc30sY29tcG9uZW50
Rm9yOmZ1bmN0aW9uKGUsdCxyKXtpZighdGhpcy5pbnZhbGlkTmFtZShlKSl7dmFyIG49ImNvbXBv
bmVudDoiK2U7cmV0dXJuIHQuX2xvb2t1cEZhY3RvcnkobixyKX19LGxheW91dEZvcjpmdW5jdGlv
bihlLHQscil7aWYoIXRoaXMuaW52YWxpZE5hbWUoZSkpe3ZhciBuPSJ0ZW1wbGF0ZTpjb21wb25l
bnRzLyIrZTtyZXR1cm4gdC5sb29rdXAobixyKX19fSl9KSxlKCJlbWJlci12aWV3cy9jb21wb25l
bnRzL2NvbXBvbmVudCIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvZGVidWciLCJlbWJlci1tZXRh
bC9lbnZpcm9ubWVudCIsImVtYmVyLXJ1bnRpbWUvbWl4aW5zL3RhcmdldF9hY3Rpb25fc3VwcG9y
dCIsImVtYmVyLXZpZXdzL3ZpZXdzL3ZpZXciLCJlbWJlci1tZXRhbC9wcm9wZXJ0eV9nZXQiLCJl
bWJlci1tZXRhbC9wcm9wZXJ0eV9zZXQiLCJlbWJlci1tZXRhbC9pc19ub25lIiwiZW1iZXItbWV0
YWwvdXRpbHMiLCJlbWJlci1tZXRhbC9jb21wdXRlZCIsImVtYmVyLXZpZXdzL2NvbXBhdC9hdHRy
cy1wcm94eSIsImNvbnRhaW5lci9vd25lciJdLGZ1bmN0aW9uKGUsdCxyLG4saSxvLGEscyx1LGws
YyxmKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZChlLHQpe3JldHVybiB0JiZ0W2MuTVVUQUJMRV9D
RUxMXSYmKHQ9dC52YWx1ZSksdH12YXIgcD1pLmRlZmF1bHQuZXh0ZW5kKG4uZGVmYXVsdCx7aXND
b21wb25lbnQ6ITAsY29udHJvbGxlcjpudWxsLGNvbnRleHQ6bnVsbCxpbnN0cnVtZW50TmFtZToi
Y29tcG9uZW50IixpbnN0cnVtZW50RGlzcGxheTpsLmNvbXB1dGVkKGZ1bmN0aW9uKCl7aWYodGhp
cy5fZGVidWdDb250YWluZXJLZXkpcmV0dXJuInt7Iit0aGlzLl9kZWJ1Z0NvbnRhaW5lcktleS5z
cGxpdCgiOiIpWzFdKyJ9fSJ9KSxpbml0OmZ1bmN0aW9uKCl7aWYodGhpcy5fc3VwZXIuYXBwbHko
dGhpcyxhcmd1bWVudHMpLGEuc2V0KHRoaXMsImNvbnRyb2xsZXIiLHRoaXMpLGEuc2V0KHRoaXMs
ImNvbnRleHQiLHRoaXMpLCF0aGlzLmxheW91dCYmdGhpcy5sYXlvdXROYW1lJiZmLmdldE93bmVy
KHRoaXMpKXt2YXIgZT1vLmdldCh0aGlzLCJsYXlvdXROYW1lIik7dGhpcy5sYXlvdXQ9dGhpcy50
ZW1wbGF0ZUZvck5hbWUoZSl9dGhpcy5kZWZhdWx0TGF5b3V0JiYhdGhpcy5sYXlvdXQmJih0aGlz
LmxheW91dD10aGlzLmRlZmF1bHRMYXlvdXQpfSx0ZW1wbGF0ZTpudWxsLGxheW91dE5hbWU6bnVs
bCxsYXlvdXQ6bnVsbCx0YXJnZXRPYmplY3Q6bC5jb21wdXRlZCgiY29udHJvbGxlciIsZnVuY3Rp
b24oZSl7aWYodGhpcy5fdGFyZ2V0T2JqZWN0KXJldHVybiB0aGlzLl90YXJnZXRPYmplY3Q7aWYo
dGhpcy5fY29udHJvbGxlcilyZXR1cm4gdGhpcy5fY29udHJvbGxlcjt2YXIgdD1vLmdldCh0aGlz
LCJwYXJlbnRWaWV3Iik7cmV0dXJuIHQ/by5nZXQodCwiY29udHJvbGxlciIpOm51bGx9KSxzZW5k
QWN0aW9uOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLHI9QXJyYXkodD4x
P3QtMTowKSxuPTE7bjx0O24rKylyW24tMV09YXJndW1lbnRzW25dO3ZhciBpO3ZvaWQgMD09PWUm
JihlPSJhY3Rpb24iKSxpPW8uZ2V0KHRoaXMsImF0dHJzLiIrZSl8fG8uZ2V0KHRoaXMsZSksaT1k
KHRoaXMsaSksdm9pZCAwIT09aSYmKCJmdW5jdGlvbiI9PXR5cGVvZiBpP2kuYXBwbHkodm9pZCAw
LHIpOnRoaXMudHJpZ2dlckFjdGlvbih7YWN0aW9uOmksYWN0aW9uQ29udGV4dDpyfSkpfSxzZW5k
OmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLHI9QXJyYXkodD4xP3QtMTow
KSxuPTE7bjx0O24rKylyW24tMV09YXJndW1lbnRzW25dO3ZhciBpLGE9dGhpcy5hY3Rpb25zJiZ0
aGlzLmFjdGlvbnNbZV07aWYoYSl7dmFyIHM9YS5hcHBseSh0aGlzLHIpPT09ITA7aWYoIXMpcmV0
dXJufWlmKGk9by5nZXQodGhpcywidGFyZ2V0Iikpe3ZhciBsOyhsPWkpLnNlbmQuYXBwbHkobCxh
cmd1bWVudHMpfWVsc2UgaWYoIWEpdGhyb3cgbmV3IEVycm9yKHUuaW5zcGVjdCh0aGlzKSsiIGhh
ZCBubyBhY3Rpb24gaGFuZGxlciBmb3I6ICIrZSl9fSk7cC5yZW9wZW5DbGFzcyh7aXNDb21wb25l
bnRGYWN0b3J5OiEwfSksZS5kZWZhdWx0PXB9KSxlKCJlbWJlci12aWV3cy9pbmRleCIsWyJleHBv
cnRzIiwiZW1iZXItcnVudGltZSIsImVtYmVyLXZpZXdzL3N5c3RlbS9qcXVlcnkiLCJlbWJlci12
aWV3cy9zeXN0ZW0vdXRpbHMiLCJlbWJlci12aWV3cy9zeXN0ZW0vZXh0IiwiZW1iZXItbWV0YWwt
dmlld3MiLCJlbWJlci12aWV3cy9jb21wb25lbnRzL2NvbXBvbmVudCIsImVtYmVyLXZpZXdzL3N5
c3RlbS9ldmVudF9kaXNwYXRjaGVyIiwiZW1iZXItdmlld3MvbWl4aW5zL3ZpZXdfdGFyZ2V0X2Fj
dGlvbl9zdXBwb3J0IiwiZW1iZXItdmlld3MvY29tcG9uZW50X2xvb2t1cCIsImVtYmVyLXZpZXdz
L3ZpZXdzL2NoZWNrYm94IiwiZW1iZXItdmlld3MvbWl4aW5zL3RleHRfc3VwcG9ydCIsImVtYmVy
LXZpZXdzL3ZpZXdzL3RleHRfZmllbGQiLCJlbWJlci12aWV3cy92aWV3cy90ZXh0X2FyZWEiXSxm
dW5jdGlvbihlLHQscixuLGksbyxhLHMsdSxsLGMsZixkLHApeyJ1c2Ugc3RyaWN0Ijt0LmRlZmF1
bHQuJD1yLmRlZmF1bHQsdC5kZWZhdWx0LlZpZXdUYXJnZXRBY3Rpb25TdXBwb3J0PXUuZGVmYXVs
dDt2YXIgaD10LmRlZmF1bHQuVmlld1V0aWxzPXt9O2guaXNTaW1wbGVDbGljaz1uLmlzU2ltcGxl
Q2xpY2ssaC5nZXRWaWV3Q2xpZW50UmVjdHM9bi5nZXRWaWV3Q2xpZW50UmVjdHMsaC5nZXRWaWV3
Qm91bmRpbmdDbGllbnRSZWN0PW4uZ2V0Vmlld0JvdW5kaW5nQ2xpZW50UmVjdCx0LmRlZmF1bHQu
X1JlbmRlcmVyPW8uUmVuZGVyZXIsdC5kZWZhdWx0LkNoZWNrYm94PWMuZGVmYXVsdCx0LmRlZmF1
bHQuVGV4dEZpZWxkPWQuZGVmYXVsdCx0LmRlZmF1bHQuVGV4dEFyZWE9cC5kZWZhdWx0LHQuZGVm
YXVsdC5UZXh0U3VwcG9ydD1mLmRlZmF1bHQsdC5kZWZhdWx0LkNvbXBvbmVudExvb2t1cD1sLmRl
ZmF1bHQsdC5kZWZhdWx0LkNvbXBvbmVudD1hLmRlZmF1bHQsdC5kZWZhdWx0LkV2ZW50RGlzcGF0
Y2hlcj1zLmRlZmF1bHQsZS5kZWZhdWx0PXQuZGVmYXVsdH0pLGUoImVtYmVyLXZpZXdzL21peGlu
cy9hcmlhX3JvbGVfc3VwcG9ydCIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvbWl4aW4iXSxmdW5j
dGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtlLmRlZmF1bHQ9dC5NaXhpbi5jcmVhdGUoe2F0dHJpYnV0
ZUJpbmRpbmdzOlsiYXJpYVJvbGU6cm9sZSJdLGFyaWFSb2xlOm51bGx9KX0pLGUoImVtYmVyLXZp
ZXdzL21peGlucy9jbGFzc19uYW1lc19zdXBwb3J0IixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9k
ZWJ1ZyIsImVtYmVyLW1ldGFsL21peGluIiwiZW1iZXItcnVudGltZS9zeXN0ZW0vbmF0aXZlX2Fy
cmF5Il0sZnVuY3Rpb24oZSx0LHIsbil7InVzZSBzdHJpY3QiO3ZhciBpPVtdO2UuZGVmYXVsdD1y
Lk1peGluLmNyZWF0ZSh7Y29uY2F0ZW5hdGVkUHJvcGVydGllczpbImNsYXNzTmFtZXMiLCJjbGFz
c05hbWVCaW5kaW5ncyJdLGluaXQ6ZnVuY3Rpb24oKXt0aGlzLl9zdXBlci5hcHBseSh0aGlzLGFy
Z3VtZW50cyksdGhpcy5jbGFzc05hbWVCaW5kaW5ncz1uLkEodGhpcy5jbGFzc05hbWVCaW5kaW5n
cy5zbGljZSgpKSx0aGlzLmNsYXNzTmFtZXM9bi5BKHRoaXMuY2xhc3NOYW1lcy5zbGljZSgpKX0s
Y2xhc3NOYW1lczpbImVtYmVyLXZpZXciXSxjbGFzc05hbWVCaW5kaW5nczppfSl9KSxlKCJlbWJl
ci12aWV3cy9taXhpbnMvaW5zdHJ1bWVudGF0aW9uX3N1cHBvcnQiLFsiZXhwb3J0cyIsImVtYmVy
LW1ldGFsL21peGluIiwiZW1iZXItbWV0YWwvcHJvcGVydHlfZ2V0Il0sZnVuY3Rpb24oZSx0LHIp
eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10Lk1peGluLmNyZWF0ZSh7aW5zdHJ1bWVudERpc3BsYXk6IiIs
aW5zdHJ1bWVudE5hbWU6InZpZXciLGluc3RydW1lbnREZXRhaWxzOmZ1bmN0aW9uKGUpe2UudGVt
cGxhdGU9ci5nZXQodGhpcywidGVtcGxhdGVOYW1lIiksdGhpcy5fc3VwZXIoZSl9fSk7ZS5kZWZh
dWx0PW59KSxlKCJlbWJlci12aWV3cy9taXhpbnMvbGVnYWN5X2NoaWxkX3ZpZXdzX3N1cHBvcnQi
LFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL21peGluIiwiZW1iZXItbWV0YWwvcHJvcGVydHlfZ2V0
IiwiZW1iZXItbWV0YWwvcHJvcGVydHlfc2V0IiwiY29udGFpbmVyL293bmVyIl0sZnVuY3Rpb24o
ZSx0LHIsbixpKXsidXNlIHN0cmljdCI7ZS5kZWZhdWx0PXQuTWl4aW4uY3JlYXRlKHtsaW5rQ2hp
bGQ6ZnVuY3Rpb24oZSl7ZVtpLk9XTkVSXXx8aS5zZXRPd25lcihlLGkuZ2V0T3duZXIodGhpcykp
LHIuZ2V0KGUsInBhcmVudFZpZXciKSE9PXRoaXMmJihuLnNldChlLCJwYXJlbnRWaWV3Iix0aGlz
KSxlLnRyaWdnZXIoInBhcmVudFZpZXdEaWRDaGFuZ2UiKSksZS5vd25lclZpZXc9dGhpcy5vd25l
clZpZXd9LHVubGlua0NoaWxkOmZ1bmN0aW9uKGUpe24uc2V0KGUsInBhcmVudFZpZXciLG51bGwp
LGUudHJpZ2dlcigicGFyZW50Vmlld0RpZENoYW5nZSIpfX0pfSksZSgiZW1iZXItdmlld3MvbWl4
aW5zL2xlZ2FjeV92aWV3X3N1cHBvcnQiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL2RlYnVnIiwi
ZW1iZXItbWV0YWwvbWl4aW4iLCJlbWJlci1tZXRhbC9wcm9wZXJ0eV9nZXQiXSxmdW5jdGlvbihl
LHQscixuKXsidXNlIHN0cmljdCI7dmFyIGk9ci5NaXhpbi5jcmVhdGUoe211dGF0ZUNoaWxkVmll
d3M6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LHI9bi5nZXQodGhpcywiY2hpbGRWaWV3cyIpLGk9ci5s
ZW5ndGg7LS1pPj0wOyl0PXJbaV0sZSh0aGlzLHQsaSk7cmV0dXJuIHRoaXN9LHJlbW92ZUFsbENo
aWxkcmVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXV0YXRlQ2hpbGRWaWV3cyhmdW5jdGlvbihl
LHQpe2UucmVtb3ZlQ2hpbGQodCl9KX0sZGVzdHJveUFsbENoaWxkcmVuOmZ1bmN0aW9uKCl7cmV0
dXJuIHRoaXMubXV0YXRlQ2hpbGRWaWV3cyhmdW5jdGlvbihlLHQpe3QuZGVzdHJveSgpfSl9LG5l
YXJlc3RDaGlsZE9mOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1uLmdldCh0aGlzLCJwYXJlbnRWaWV3
Iik7dDspe2lmKG4uZ2V0KHQsInBhcmVudFZpZXciKWluc3RhbmNlb2YgZSlyZXR1cm4gdDt0PW4u
Z2V0KHQsInBhcmVudFZpZXciKX19LG5lYXJlc3RJbnN0YW5jZU9mOmZ1bmN0aW9uKGUpe2Zvcih2
YXIgdD1uLmdldCh0aGlzLCJwYXJlbnRWaWV3Iik7dDspe2lmKHQgaW5zdGFuY2VvZiBlKXJldHVy
biB0O3Q9bi5nZXQodCwicGFyZW50VmlldyIpfX0sX2NvbnRleHREaWRDaGFuZ2U6ci5vYnNlcnZl
cigiY29udGV4dCIsZnVuY3Rpb24oKXt0aGlzLnJlcmVuZGVyKCl9KX0pO2UuZGVmYXVsdD1pfSks
ZSgiZW1iZXItdmlld3MvbWl4aW5zL3RlbXBsYXRlX3JlbmRlcmluZ19zdXBwb3J0IixbImV4cG9y
dHMiLCJlbWJlci1tZXRhbC9taXhpbiJdLGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO3ZhciBu
LGk9dC5NaXhpbi5jcmVhdGUoe3JlbmRlckJsb2NrOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQg
MD09PW4mJihuPXIoImVtYmVyLWh0bWxiYXJzL3N5c3RlbS9yZW5kZXItdmlldyIpKSxuLnJlbmRl
ckhUTUxCYXJzQmxvY2sodGhpcyxlLHQpfX0pO2UuZGVmYXVsdD1pfSksZSgiZW1iZXItdmlld3Mv
bWl4aW5zL3RleHRfc3VwcG9ydCIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvcHJvcGVydHlfZ2V0
IiwiZW1iZXItbWV0YWwvcHJvcGVydHlfc2V0IiwiZW1iZXItbWV0YWwvbWl4aW4iLCJlbWJlci1y
dW50aW1lL21peGlucy90YXJnZXRfYWN0aW9uX3N1cHBvcnQiXSxmdW5jdGlvbihlLHQscixuLGkp
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBvKGUscixuKXt2YXIgaT10LmdldChyLCJhdHRycy4iK2Up
fHx0LmdldChyLGUpLG89dC5nZXQociwib25FdmVudCIpLGE9dC5nZXQociwidmFsdWUiKTsobz09
PWV8fCJrZXlQcmVzcyI9PT1vJiYia2V5LXByZXNzIj09PWUpJiZyLnNlbmRBY3Rpb24oImFjdGlv
biIsYSksci5zZW5kQWN0aW9uKGUsYSksKGl8fG89PT1lKSYmKHQuZ2V0KHIsImJ1YmJsZXMiKXx8
bi5zdG9wUHJvcGFnYXRpb24oKSl9dmFyIGE9ezEzOiJpbnNlcnROZXdsaW5lIiwyNzoiY2FuY2Vs
In0scz1uLk1peGluLmNyZWF0ZShpLmRlZmF1bHQse3ZhbHVlOiIiLGF0dHJpYnV0ZUJpbmRpbmdz
OlsiYXV0b2NhcGl0YWxpemUiLCJhdXRvY29ycmVjdCIsImF1dG9mb2N1cyIsImRpc2FibGVkIiwi
Zm9ybSIsIm1heGxlbmd0aCIsInBsYWNlaG9sZGVyIiwicmVhZG9ubHkiLCJyZXF1aXJlZCIsInNl
bGVjdGlvbkRpcmVjdGlvbiIsInNwZWxsY2hlY2siLCJ0YWJpbmRleCIsInRpdGxlIl0scGxhY2Vo
b2xkZXI6bnVsbCxkaXNhYmxlZDohMSxtYXhsZW5ndGg6bnVsbCxpbml0OmZ1bmN0aW9uKCl7dGhp
cy5fc3VwZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpLHRoaXMub24oInBhc3RlIix0aGlzLHRoaXMu
X2VsZW1lbnRWYWx1ZURpZENoYW5nZSksdGhpcy5vbigiY3V0Iix0aGlzLHRoaXMuX2VsZW1lbnRW
YWx1ZURpZENoYW5nZSksdGhpcy5vbigiaW5wdXQiLHRoaXMsdGhpcy5fZWxlbWVudFZhbHVlRGlk
Q2hhbmdlKX0sYWN0aW9uOm51bGwsb25FdmVudDoiZW50ZXIiLGJ1YmJsZXM6ITEsaW50ZXJwcmV0
S2V5RXZlbnRzOmZ1bmN0aW9uKGUpe3ZhciB0PWEscj10W2Uua2V5Q29kZV07aWYodGhpcy5fZWxl
bWVudFZhbHVlRGlkQ2hhbmdlKCkscilyZXR1cm4gdGhpc1tyXShlKX0sX2VsZW1lbnRWYWx1ZURp
ZENoYW5nZTpmdW5jdGlvbigpe3Iuc2V0KHRoaXMsInZhbHVlIix0aGlzLnJlYWRET01BdHRyKCJ2
YWx1ZSIpKX0sY2hhbmdlOmZ1bmN0aW9uKGUpe3RoaXMuX2VsZW1lbnRWYWx1ZURpZENoYW5nZShl
KX0saW5zZXJ0TmV3bGluZTpmdW5jdGlvbihlKXtvKCJlbnRlciIsdGhpcyxlKSxvKCJpbnNlcnQt
bmV3bGluZSIsdGhpcyxlKX0sY2FuY2VsOmZ1bmN0aW9uKGUpe28oImVzY2FwZS1wcmVzcyIsdGhp
cyxlKX0sZm9jdXNJbjpmdW5jdGlvbihlKXtvKCJmb2N1cy1pbiIsdGhpcyxlKX0sZm9jdXNPdXQ6
ZnVuY3Rpb24oZSl7dGhpcy5fZWxlbWVudFZhbHVlRGlkQ2hhbmdlKGUpLG8oImZvY3VzLW91dCIs
dGhpcyxlKX0sa2V5UHJlc3M6ZnVuY3Rpb24oZSl7bygia2V5LXByZXNzIix0aGlzLGUpfSxrZXlV
cDpmdW5jdGlvbihlKXt0aGlzLmludGVycHJldEtleUV2ZW50cyhlKSx0aGlzLnNlbmRBY3Rpb24o
ImtleS11cCIsdC5nZXQodGhpcywidmFsdWUiKSxlKX0sa2V5RG93bjpmdW5jdGlvbihlKXt0aGlz
LnNlbmRBY3Rpb24oImtleS1kb3duIix0LmdldCh0aGlzLCJ2YWx1ZSIpLGUpfX0pO2UuZGVmYXVs
dD1zfSksZSgiZW1iZXItdmlld3MvbWl4aW5zL3ZpZXdfY2hpbGRfdmlld3Nfc3VwcG9ydCIsWyJl
eHBvcnRzIiwiZW1iZXItbWV0YWwvZGVidWciLCJlbWJlci1tZXRhbC9taXhpbiIsImVtYmVyLW1l
dGFsL3Byb3BlcnR5X2dldCIsImVtYmVyLW1ldGFsL3Byb3BlcnR5X3NldCIsImVtYmVyLW1ldGFs
L3NldF9wcm9wZXJ0aWVzIiwiZW1iZXItcnVudGltZS9zeXN0ZW0vbmF0aXZlX2FycmF5IiwiY29u
dGFpbmVyL293bmVyIl0sZnVuY3Rpb24oZSx0LHIsbixpLG8sYSxzKXsidXNlIHN0cmljdCI7dmFy
IHU9W107ZS5kZWZhdWx0PXIuTWl4aW4uY3JlYXRlKHtjaGlsZFZpZXdzOnUsaW5pdDpmdW5jdGlv
bigpe3RoaXMuX3N1cGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzLmNoaWxkVmlld3M9YS5B
KHRoaXMuY2hpbGRWaWV3cy5zbGljZSgpKSx0aGlzLm93bmVyVmlldz10aGlzLm93bmVyVmlld3x8
dGhpc30sYXBwZW5kQ2hpbGQ6ZnVuY3Rpb24oZSl7dGhpcy5saW5rQ2hpbGQoZSksdGhpcy5jaGls
ZFZpZXdzLnB1c2goZSl9LGRlc3Ryb3lDaGlsZDpmdW5jdGlvbihlKXtlLmRlc3Ryb3koKX0scmVt
b3ZlQ2hpbGQ6ZnVuY3Rpb24oZSl7aWYoIXRoaXMuaXNEZXN0cm95aW5nKXt0aGlzLnVubGlua0No
aWxkKGUpO3ZhciB0PW4uZ2V0KHRoaXMsImNoaWxkVmlld3MiKSxyPXQuaW5kZXhPZihlKTtyZXR1
cm4gciE9PS0xJiZ0LnNwbGljZShyLDEpLHRoaXN9fSxjcmVhdGVDaGlsZFZpZXc6ZnVuY3Rpb24o
ZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aDw9MXx8dm9pZCAwPT09YXJndW1lbnRzWzFdP3t9OmFy
Z3VtZW50c1sxXTtpZighZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJjcmVhdGVDaGlsZFZpZXdzIGZp
cnN0IGFyZ3VtZW50IG11c3QgZXhpc3QiKTt2YXIgcj1zLmdldE93bmVyKHRoaXMpO2lmKGUuaXNW
aWV3JiZlLnBhcmVudFZpZXc9PT10aGlzJiZzLmdldE93bmVyKGUpPT09cilyZXR1cm4gZTt2YXIg
bjtpZih0LnBhcmVudFZpZXc9dGhpcyx0LnJlbmRlcmVyPXRoaXMucmVuZGVyZXIsdC5fdmlld1Jl
Z2lzdHJ5PXRoaXMuX3ZpZXdSZWdpc3RyeSxlLmlzVmlld0ZhY3Rvcnkpcy5zZXRPd25lcih0LHIp
LG49ZS5jcmVhdGUodCksbi52aWV3TmFtZSYmaS5zZXQodGhpcyxuLnZpZXdOYW1lLG4pO2Vsc2Ug
aWYoInN0cmluZyI9PXR5cGVvZiBlKXt2YXIgYT0idmlldzoiK2UsdT1yLl9sb29rdXBGYWN0b3J5
KGEpO249dS5jcmVhdGUodCl9ZWxzZSBuPWUscy5zZXRPd25lcih0LHIpLG8uZGVmYXVsdChuLHQp
O3JldHVybiB0aGlzLmxpbmtDaGlsZChuKSxufSxsaW5rQ2hpbGQ6ZnVuY3Rpb24oZSl7ZVtzLk9X
TkVSXXx8cy5zZXRPd25lcihlLHMuZ2V0T3duZXIodGhpcykpLGUucGFyZW50Vmlldz10aGlzLGUu
b3duZXJWaWV3PXRoaXMub3duZXJWaWV3fSx1bmxpbmtDaGlsZDpmdW5jdGlvbihlKXtlLnBhcmVu
dFZpZXc9bnVsbH19KX0pLGUoImVtYmVyLXZpZXdzL21peGlucy92aWV3X2NvbnRleHRfc3VwcG9y
dCIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvbWl4aW4iLCJlbWJlci1tZXRhbC9jb21wdXRlZCIs
ImVtYmVyLW1ldGFsL3Byb3BlcnR5X2dldCIsImVtYmVyLW1ldGFsL3Byb3BlcnR5X3NldCIsImVt
YmVyLXZpZXdzL21peGlucy9sZWdhY3lfdmlld19zdXBwb3J0IiwiZW1iZXItbWV0YWwvZXZlbnRz
Il0sZnVuY3Rpb24oZSx0LHIsbixpLG8sYSl7InVzZSBzdHJpY3QiO3ZhciBzPXQuTWl4aW4uY3Jl
YXRlKG8uZGVmYXVsdCx7Y29udGV4dDpyLmNvbXB1dGVkKHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4g
bi5nZXQodGhpcywiX2NvbnRleHQiKX0sc2V0OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGkuc2V0KHRo
aXMsIl9jb250ZXh0Iix0KSx0fX0pLF9jb250ZXh0OnIuY29tcHV0ZWQoe2dldDpmdW5jdGlvbigp
e3ZhciBlLHQ7cmV0dXJuKHQ9bi5nZXQodGhpcywiY29udHJvbGxlciIpKT90OihlPXRoaXMucGFy
ZW50VmlldyxlP24uZ2V0KGUsIl9jb250ZXh0Iik6bnVsbCl9LHNldDpmdW5jdGlvbihlLHQpe3Jl
dHVybiB0fX0pLF9jb250cm9sbGVyOm51bGwsY29udHJvbGxlcjpyLmNvbXB1dGVkKHtnZXQ6ZnVu
Y3Rpb24oKXtyZXR1cm4gdGhpcy5fY29udHJvbGxlcj90aGlzLl9jb250cm9sbGVyOnRoaXMucGFy
ZW50Vmlldz9uLmdldCh0aGlzLnBhcmVudFZpZXcsImNvbnRyb2xsZXIiKTpudWxsfSxzZXQ6ZnVu
Y3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fY29udHJvbGxlcj10LHR9fSksX2xlZ2FjeUNvbnRyb2xs
ZXJEaWRDaGFuZ2U6dC5vYnNlcnZlcigiY29udHJvbGxlciIsZnVuY3Rpb24oKXt0aGlzLmNoaWxk
Vmlld3MuZm9yRWFjaChmdW5jdGlvbihlKXtyZXR1cm4gZS5ub3RpZnlQcm9wZXJ0eUNoYW5nZSgi
Y29udHJvbGxlciIpfSl9KSxfbm90aWZ5Q29udHJvbGxlckNoYW5nZTphLm9uKCJwYXJlbnRWaWV3
RGlkQ2hhbmdlIixmdW5jdGlvbigpe3RoaXMubm90aWZ5UHJvcGVydHlDaGFuZ2UoImNvbnRyb2xs
ZXIiKX0pfSk7ZS5kZWZhdWx0PXN9KSxlKCJlbWJlci12aWV3cy9taXhpbnMvdmlld19zdGF0ZV9z
dXBwb3J0IixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9kZWJ1ZyIsImVtYmVyLW1ldGFsL21peGlu
Il0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yLk1peGluLmNyZWF0ZSh7dHJh
bnNpdGlvblRvOmZ1bmN0aW9uKGUpe3RoaXMuX3RyYW5zaXRpb25UbyhlKX0sX3RyYW5zaXRpb25U
bzpmdW5jdGlvbihlKXt2YXIgdD10aGlzLl9jdXJyZW50U3RhdGUscj10aGlzLl9jdXJyZW50U3Rh
dGU9dGhpcy5fc3RhdGVzW2VdO3RoaXMuX3N0YXRlPWUsdCYmdC5leGl0JiZ0LmV4aXQodGhpcyks
ci5lbnRlciYmci5lbnRlcih0aGlzKX19KTtlLmRlZmF1bHQ9bn0pLGUoImVtYmVyLXZpZXdzL21p
eGlucy92aWV3X3N1cHBvcnQiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL2RlYnVnIiwiZW1iZXIt
bWV0YWwvZXJyb3IiLCJlbWJlci1tZXRhbC9wcm9wZXJ0eV9nZXQiLCJlbWJlci1tZXRhbC9ydW5f
bG9vcCIsImVtYmVyLW1ldGFsL29ic2VydmVyIiwiZW1iZXItbWV0YWwvdXRpbHMiLCJlbWJlci1t
ZXRhbC9jb21wdXRlZCIsImVtYmVyLW1ldGFsL21peGluIiwiZW1iZXItcnVudGltZS9zeXN0ZW0v
Y29yZV9vYmplY3QiLCJlbWJlci1tZXRhbC9zeW1ib2wiLCJjb250YWluZXIvb3duZXIiLCJlbWJl
ci12aWV3cy9zeXN0ZW0vanF1ZXJ5Il0sZnVuY3Rpb24oZSx0LHIsbixpLG8sYSxzLHUsbCxjLGYs
ZCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHAoKXtyZXR1cm4gdGhpc312YXIgaCxtPWMuZGVmYXVs
dCgiSU5JVF9XQVNfQ0FMTEVEIik7ZS5kZWZhdWx0PXUuTWl4aW4uY3JlYXRlKChoPXtjb25jYXRl
bmF0ZWRQcm9wZXJ0aWVzOlsiYXR0cmlidXRlQmluZGluZ3MiXSxpc1ZpZXc6ITAsdGVtcGxhdGVO
YW1lOm51bGwsbGF5b3V0TmFtZTpudWxsLHRlbXBsYXRlOnMuY29tcHV0ZWQoe2dldDpmdW5jdGlv
bigpe3ZhciBlPW4uZ2V0KHRoaXMsInRlbXBsYXRlTmFtZSIpLHQ9dGhpcy50ZW1wbGF0ZUZvck5h
bWUoZSwidGVtcGxhdGUiKTtyZXR1cm4gdHx8bi5nZXQodGhpcywiZGVmYXVsdFRlbXBsYXRlIil9
LHNldDpmdW5jdGlvbihlLHQpe3JldHVybiB2b2lkIDAhPT10P3Q6bi5nZXQodGhpcyxlKX19KSxs
YXlvdXQ6cy5jb21wdXRlZCh7Z2V0OmZ1bmN0aW9uKGUpe3ZhciB0PW4uZ2V0KHRoaXMsImxheW91
dE5hbWUiKSxyPXRoaXMudGVtcGxhdGVGb3JOYW1lKHQsImxheW91dCIpO3JldHVybiByfHxuLmdl
dCh0aGlzLCJkZWZhdWx0TGF5b3V0Iil9LHNldDpmdW5jdGlvbihlLHQpe3JldHVybiB0fX0pLHRl
bXBsYXRlRm9yTmFtZTpmdW5jdGlvbihlLHQpe2lmKGUpe3ZhciBuPWYuZ2V0T3duZXIodGhpcyk7
aWYoIW4pdGhyb3cgbmV3IHIuZGVmYXVsdCgiQ29udGFpbmVyIHdhcyBub3QgZm91bmQgd2hlbiBs
b29raW5nIHVwIGEgdmlld3MgdGVtcGxhdGUuIFRoaXMgaXMgbW9zdCBsaWtlbHkgZHVlIHRvIG1h
bnVhbGx5IGluc3RhbnRpYXRpbmcgYW4gRW1iZXIuVmlldy4gU2VlOiBodHRwOi8vZ2l0LmlvL0VL
UHBuQSIpO3JldHVybiBuLmxvb2t1cCgidGVtcGxhdGU6IitlKX19LG5lYXJlc3RPZlR5cGU6ZnVu
Y3Rpb24oZSl7Zm9yKHZhciB0PW4uZ2V0KHRoaXMsInBhcmVudFZpZXciKSxyPWUgaW5zdGFuY2Vv
ZiB1Lk1peGluP2Z1bmN0aW9uKHQpe3JldHVybiBlLmRldGVjdCh0KX06ZnVuY3Rpb24odCl7cmV0
dXJuIGUuZGV0ZWN0KHQuY29uc3RydWN0b3IpfTt0Oyl7aWYocih0KSlyZXR1cm4gdDt0PW4uZ2V0
KHQsInBhcmVudFZpZXciKX19LG5lYXJlc3RXaXRoUHJvcGVydHk6ZnVuY3Rpb24oZSl7Zm9yKHZh
ciB0PW4uZ2V0KHRoaXMsInBhcmVudFZpZXciKTt0Oyl7aWYoZSBpbiB0KXJldHVybiB0O3Q9bi5n
ZXQodCwicGFyZW50VmlldyIpfX0scmVyZW5kZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY3Vy
cmVudFN0YXRlLnJlcmVuZGVyKHRoaXMpfSxlbGVtZW50Om51bGwsJDpmdW5jdGlvbihlKXtyZXR1
cm4gdGhpcy5fY3VycmVudFN0YXRlLiQodGhpcyxlKX0sZm9yRWFjaENoaWxkVmlldzpmdW5jdGlv
bihlKXt2YXIgdD10aGlzLmNoaWxkVmlld3M7aWYoIXQpcmV0dXJuIHRoaXM7dmFyIHIsbixpPXQu
bGVuZ3RoO2ZvcihuPTA7bjxpO24rKylyPXRbbl0sZShyKTtyZXR1cm4gdGhpc30sYXBwZW5kVG86
ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fZW52aXJvbm1lbnQ/dGhpcy5fZW52aXJvbm1lbnQub3B0
aW9ucy5qUXVlcnk6ZC5kZWZhdWx0O2lmKHQpe3ZhciByPXQoZSk7dGhpcy5yZW5kZXJlci5hcHBl
bmRUbyh0aGlzLHJbMF0pfWVsc2V7dmFyIHI9ZTt0aGlzLnJlbmRlcmVyLmFwcGVuZFRvKHRoaXMs
cil9cmV0dXJuIHRoaXN9LHJlbmRlclRvRWxlbWVudDpmdW5jdGlvbihlKXtlPWV8fCJib2R5Ijt2
YXIgdD10aGlzLnJlbmRlcmVyLl9kb20uY3JlYXRlRWxlbWVudChlKTtyZXR1cm4gdGhpcy5yZW5k
ZXJlci5hcHBlbmRUbyh0aGlzLHQpLHR9LHJlcGxhY2VJbjpmdW5jdGlvbihlKXt2YXIgdD1kLmRl
ZmF1bHQoZSk7cmV0dXJuIHRoaXMucmVuZGVyZXIucmVwbGFjZUluKHRoaXMsdFswXSksCit0aGlz
fSxhcHBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hcHBlbmRUbyhkb2N1bWVudC5ib2R5KX0s
cmVtb3ZlOmZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVkRnJvbURPTXx8dGhpcy5kZXN0cm95RWxlbWVu
dCgpLHRoaXMuX3dpbGxJbnNlcnQ9ITF9LGVsZW1lbnRJZDpudWxsLGZpbmRFbGVtZW50SW5QYXJl
bnRFbGVtZW50OmZ1bmN0aW9uKGUpe3ZhciB0PSIjIit0aGlzLmVsZW1lbnRJZDtyZXR1cm4gZC5k
ZWZhdWx0KHQpWzBdfHxkLmRlZmF1bHQodCxlKVswXX0sY3JlYXRlRWxlbWVudDpmdW5jdGlvbigp
e3JldHVybiB0aGlzLmVsZW1lbnQ/dGhpczoodGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KHRo
aXMpLHRoaXMpfSx3aWxsSW5zZXJ0RWxlbWVudDpwLGRpZEluc2VydEVsZW1lbnQ6cCx3aWxsQ2xl
YXJSZW5kZXI6cCxkZXN0cm95RWxlbWVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jdXJyZW50
U3RhdGUuZGVzdHJveUVsZW1lbnQodGhpcyl9LHdpbGxEZXN0cm95RWxlbWVudDpwLHBhcmVudFZp
ZXdEaWRDaGFuZ2U6cCx0YWdOYW1lOm51bGwscmVhZERPTUF0dHI6ZnVuY3Rpb24oZSl7dmFyIHQ9
dGhpcy5fcmVuZGVyTm9kZS5jaGlsZE5vZGVzLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4gdC5h
dHRyTmFtZT09PWV9KVswXTtyZXR1cm4gdD90LmdldENvbnRlbnQoKTpudWxsfSxpbml0OmZ1bmN0
aW9uKCl7dGhpcy5fc3VwZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpLHRoaXMuZWxlbWVudElkfHwo
dGhpcy5lbGVtZW50SWQ9YS5ndWlkRm9yKHRoaXMpKSx0aGlzLnNjaGVkdWxlZFJldmFsaWRhdGlv
bj0hMSx0aGlzW21dPSEwLCJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLmRpZEluaXRBdHRyc319LGhb
bC5QT1NUX0lOSVRdPWZ1bmN0aW9uKCl7dGhpcy5fc3VwZXIuYXBwbHkodGhpcyxhcmd1bWVudHMp
LHRoaXMucmVuZGVyZXIuY29tcG9uZW50SW5pdEF0dHJzKHRoaXMsdGhpcy5hdHRyc3x8e30pfSxo
Ll9fZGVmaW5lTm9uRW51bWVyYWJsZT1mdW5jdGlvbihlKXt0aGlzW2UubmFtZV09ZS5kZXNjcmlw
dG9yLnZhbHVlfSxoLnJldmFsaWRhdGU9ZnVuY3Rpb24oKXt0aGlzLnJlbmRlcmVyLnJldmFsaWRh
dGVUb3BMZXZlbFZpZXcodGhpcyksdGhpcy5zY2hlZHVsZWRSZXZhbGlkYXRpb249ITF9LGguc2No
ZWR1bGVSZXZhbGlkYXRlPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZSYmIXRoaXMuX2Rpc3BhdGNo
aW5nJiZ0aGlzLmVudi5yZW5kZXJlZE5vZGVzLmhhcyhlKT92b2lkIGkuZGVmYXVsdC5zY2hlZHVs
ZU9uY2UoInJlbmRlciIsdGhpcyx0aGlzLnJldmFsaWRhdGUpOnZvaWQodGhpcy5zY2hlZHVsZWRS
ZXZhbGlkYXRpb24mJiF0aGlzLl9kaXNwYXRjaGluZ3x8KHRoaXMuc2NoZWR1bGVkUmV2YWxpZGF0
aW9uPSEwLGkuZGVmYXVsdC5zY2hlZHVsZU9uY2UoInJlbmRlciIsdGhpcyx0aGlzLnJldmFsaWRh
dGUpKSl9LGgudGVtcGxhdGVSZW5kZXJlcj1udWxsLGgucmVtb3ZlRnJvbVBhcmVudD1mdW5jdGlv
bigpe3ZhciBlPXRoaXMucGFyZW50VmlldztyZXR1cm4gdGhpcy5yZW1vdmUoKSxlJiZlLnJlbW92
ZUNoaWxkKHRoaXMpLHRoaXN9LGguZGVzdHJveT1mdW5jdGlvbigpe3ZhciBlPXRoaXMucGFyZW50
Vmlldyx0PXRoaXMudmlld05hbWU7aWYodGhpcy5fc3VwZXIuYXBwbHkodGhpcyxhcmd1bWVudHMp
KXJldHVybiB0JiZlJiZlLnNldCh0LG51bGwpLHRoaXMubGFzdFJlc3VsdCYmdGhpcy5sYXN0UmVz
dWx0LmRlc3Ryb3koKSx0aGlzfSxoLmhhbmRsZUV2ZW50PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRo
aXMuX2N1cnJlbnRTdGF0ZS5oYW5kbGVFdmVudCh0aGlzLGUsdCl9LGguX3JlZ2lzdGVyPWZ1bmN0
aW9uKCl7dGhpcy5fdmlld1JlZ2lzdHJ5W3RoaXMuZWxlbWVudElkXT10aGlzfSxoLl91bnJlZ2lz
dGVyPWZ1bmN0aW9uKCl7ZGVsZXRlIHRoaXMuX3ZpZXdSZWdpc3RyeVt0aGlzLmVsZW1lbnRJZF19
LGgucmVnaXN0ZXJPYnNlcnZlcj1mdW5jdGlvbihlLHQscixuKXtpZihufHwiZnVuY3Rpb24iIT10
eXBlb2Ygcnx8KG49cixyPW51bGwpLGUmJiJvYmplY3QiPT10eXBlb2YgZSl7dmFyIGk9dGhpcy5f
d3JhcEFzU2NoZWR1bGVkKG4pO28uYWRkT2JzZXJ2ZXIoZSx0LHIsaSksdGhpcy5vbmUoIndpbGxD
bGVhclJlbmRlciIsZnVuY3Rpb24oKXtvLnJlbW92ZU9ic2VydmVyKGUsdCxyLGkpfSl9fSxoLl93
cmFwQXNTY2hlZHVsZWQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxyPWZ1bmN0aW9uKCl7dC5fY3Vy
cmVudFN0YXRlLmludm9rZU9ic2VydmVyKHRoaXMsZSl9LG49ZnVuY3Rpb24oKXtpLmRlZmF1bHQu
c2NoZWR1bGVPbmNlKCJyZW5kZXIiLHRoaXMscil9O3JldHVybiBufSxoKSl9KSxlKCJlbWJlci12
aWV3cy9taXhpbnMvdmlld190YXJnZXRfYWN0aW9uX3N1cHBvcnQiLFsiZXhwb3J0cyIsImVtYmVy
LW1ldGFsL21peGluIiwiZW1iZXItcnVudGltZS9taXhpbnMvdGFyZ2V0X2FjdGlvbl9zdXBwb3J0
IiwiZW1iZXItbWV0YWwvYWxpYXMiXSxmdW5jdGlvbihlLHQscixuKXsidXNlIHN0cmljdCI7ZS5k
ZWZhdWx0PXQuTWl4aW4uY3JlYXRlKHIuZGVmYXVsdCx7dGFyZ2V0Om4uZGVmYXVsdCgiY29udHJv
bGxlciIpLGFjdGlvbkNvbnRleHQ6bi5kZWZhdWx0KCJjb250ZXh0Iil9KX0pLGUoImVtYmVyLXZp
ZXdzL21peGlucy92aXNpYmlsaXR5X3N1cHBvcnQiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL21p
eGluIiwiZW1iZXItbWV0YWwvcHJvcGVydHlfZ2V0IiwiZW1iZXItbWV0YWwvcnVuX2xvb3AiXSxm
dW5jdGlvbihlLHQscixuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaSgpe3JldHVybiB0aGlzfXZh
ciBvPXQuTWl4aW4uY3JlYXRlKHtpc1Zpc2libGU6ITAsYmVjYW1lVmlzaWJsZTppLGJlY2FtZUhp
ZGRlbjppLF9pc1Zpc2libGVEaWRDaGFuZ2U6dC5vYnNlcnZlcigiaXNWaXNpYmxlIixmdW5jdGlv
bigpe3RoaXMuX2lzVmlzaWJsZSE9PXIuZ2V0KHRoaXMsImlzVmlzaWJsZSIpJiZuLmRlZmF1bHQu
c2NoZWR1bGVPbmNlKCJyZW5kZXIiLHRoaXMsdGhpcy5fdG9nZ2xlVmlzaWJpbGl0eSl9KSxfdG9n
Z2xlVmlzaWJpbGl0eTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuJCgpLHQ9ci5nZXQodGhpcywiaXNW
aXNpYmxlIik7dGhpcy5faXNWaXNpYmxlIT09dCYmKHRoaXMuX2lzVmlzaWJsZT10LGUmJihlLnRv
Z2dsZSh0KSx0aGlzLl9pc0FuY2VzdG9ySGlkZGVuKCl8fCh0P3RoaXMuX25vdGlmeUJlY2FtZVZp
c2libGUoKTp0aGlzLl9ub3RpZnlCZWNhbWVIaWRkZW4oKSkpKX0sX25vdGlmeUJlY2FtZVZpc2li
bGU6ZnVuY3Rpb24oKXt0aGlzLnRyaWdnZXIoImJlY2FtZVZpc2libGUiKSx0aGlzLmZvckVhY2hD
aGlsZFZpZXcoZnVuY3Rpb24oZSl7dmFyIHQ9ci5nZXQoZSwiaXNWaXNpYmxlIik7KHR8fG51bGw9
PT10KSYmZS5fbm90aWZ5QmVjYW1lVmlzaWJsZSgpfSl9LF9ub3RpZnlCZWNhbWVIaWRkZW46ZnVu
Y3Rpb24oKXt0aGlzLnRyaWdnZXIoImJlY2FtZUhpZGRlbiIpLHRoaXMuZm9yRWFjaENoaWxkVmll
dyhmdW5jdGlvbihlKXt2YXIgdD1yLmdldChlLCJpc1Zpc2libGUiKTsodHx8bnVsbD09PXQpJiZl
Ll9ub3RpZnlCZWNhbWVIaWRkZW4oKX0pfSxfaXNBbmNlc3RvckhpZGRlbjpmdW5jdGlvbigpe2Zv
cih2YXIgZT1yLmdldCh0aGlzLCJwYXJlbnRWaWV3Iik7ZTspe2lmKHIuZ2V0KGUsImlzVmlzaWJs
ZSIpPT09ITEpcmV0dXJuITA7ZT1yLmdldChlLCJwYXJlbnRWaWV3Iil9cmV0dXJuITF9fSk7ZS5k
ZWZhdWx0PW99KSxlKCJlbWJlci12aWV3cy9zdHJlYW1zL2NsYXNzX25hbWVfYmluZGluZyIsWyJl
eHBvcnRzIiwiZW1iZXItbWV0YWwvZGVidWciLCJlbWJlci1tZXRhbC9wcm9wZXJ0eV9nZXQiLCJl
bWJlci1tZXRhbC91dGlscyIsImVtYmVyLW1ldGFsL3N0cmVhbXMvdXRpbHMiLCJlbWJlci1ydW50
aW1lL3N5c3RlbS9zdHJpbmciXSxmdW5jdGlvbihlLHQscixuLGksbyl7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIGEoZSl7dmFyIHQscixuPWUuc3BsaXQoIjoiKSxpPW5bMF0sbz0iIjtyZXR1cm4gbi5s
ZW5ndGg+MSYmKHQ9blsxXSwzPT09bi5sZW5ndGgmJihyPW5bMl0pLG89IjoiK3QsciYmKG8rPSI6
IityKSkse3BhdGg6aSxjbGFzc05hbWVzOm8sY2xhc3NOYW1lOiIiPT09dD92b2lkIDA6dCxmYWxz
eUNsYXNzTmFtZTpyfX1mdW5jdGlvbiBzKGUsdCxpLGEpe2lmKG4uaXNBcnJheSh0KSYmKHQ9MCE9
PXIuZ2V0KHQsImxlbmd0aCIpKSxpfHxhKXJldHVybiBpJiZ0P2k6YSYmIXQ/YTpudWxsO2lmKHQ9
PT0hMCl7dmFyIHM9ZS5zcGxpdCgiLiIpO3JldHVybiBvLmRhc2hlcml6ZShzW3MubGVuZ3RoLTFd
KX1yZXR1cm4gdCE9PSExJiZudWxsIT10P3Q6bnVsbH1mdW5jdGlvbiB1KGUsdCxyKXtyPXJ8fCIi
O3ZhciBuPWEodCk7aWYoIiI9PT1uLnBhdGgpcmV0dXJuIHMobi5wYXRoLCEwLG4uY2xhc3NOYW1l
LG4uZmFsc3lDbGFzc05hbWUpO3ZhciBvPWUuZ2V0U3RyZWFtKHIrbi5wYXRoKTtyZXR1cm4gaS5j
aGFpbihvLGZ1bmN0aW9uKCl7cmV0dXJuIHMobi5wYXRoLGkucmVhZChvKSxuLmNsYXNzTmFtZSxu
LmZhbHN5Q2xhc3NOYW1lKX0pfWUucGFyc2VQcm9wZXJ0eVBhdGg9YSxlLmNsYXNzU3RyaW5nRm9y
VmFsdWU9cyxlLnN0cmVhbWlmeUNsYXNzTmFtZUJpbmRpbmc9dX0pLGUoImVtYmVyLXZpZXdzL3N0
cmVhbXMvc2hvdWxkX2Rpc3BsYXkiLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL2RlYnVnIiwiZW1i
ZXItbWV0YWwvcHJvcGVydHlfZ2V0IiwiZW1iZXItcnVudGltZS91dGlscyIsImVtYmVyLW1ldGFs
L3N0cmVhbXMvc3RyZWFtIiwiZW1iZXItbWV0YWwvc3RyZWFtcy91dGlscyJdLGZ1bmN0aW9uKGUs
dCxyLG4saSxvKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYShlKXtpZihvLmlzU3RyZWFtKGUpKXJl
dHVybiBuZXcgcyhlKTt2YXIgdD10eXBlb2YgZTtpZigiYm9vbGVhbiI9PT10KXJldHVybiBlO2lm
KHQmJiJvYmplY3QiPT09dCYmbnVsbCE9PWUpe3ZhciBpPXIuZ2V0KGUsImlzVHJ1dGh5Iik7aWYo
ImJvb2xlYW4iPT10eXBlb2YgaSlyZXR1cm4gaX1yZXR1cm4gbi5pc0FycmF5KGUpPzAhPT1yLmdl
dChlLCJsZW5ndGgiKTohIWV9ZS5kZWZhdWx0PWE7dmFyIHM9aS5kZWZhdWx0LmV4dGVuZCh7aW5p
dDpmdW5jdGlvbihlKXt2YXIgdD1lLmdldCgiaXNUcnV0aHkiKTt0aGlzLmluaXQoKSx0aGlzLnBy
ZWRpY2F0ZT1lLHRoaXMuaXNUcnV0aHk9dCx0aGlzLmxlbmd0aERlcD1udWxsLHRoaXMuYWRkRGVw
ZW5kZW5jeShlKSx0aGlzLmFkZERlcGVuZGVuY3kodCl9LGNvbXB1dGU6ZnVuY3Rpb24oKXt2YXIg
ZT1vLnJlYWQodGhpcy5pc1RydXRoeSk7cmV0dXJuImJvb2xlYW4iPT10eXBlb2YgZT9lOnRoaXMu
bGVuZ3RoRGVwPzAhPT10aGlzLmxlbmd0aERlcC5nZXRWYWx1ZSgpOiEhby5yZWFkKHRoaXMucHJl
ZGljYXRlKX0scmV2YWxpZGF0ZTpmdW5jdGlvbigpe24uaXNBcnJheShvLnJlYWQodGhpcy5wcmVk
aWNhdGUpKT90aGlzLmxlbmd0aERlcHx8KHRoaXMubGVuZ3RoRGVwPXRoaXMuYWRkTXV0YWJsZURl
cGVuZGVuY3kodGhpcy5wcmVkaWNhdGUuZ2V0KCJsZW5ndGgiKSkpOnRoaXMubGVuZ3RoRGVwJiYo
dGhpcy5sZW5ndGhEZXAuZGVzdHJveSgpLHRoaXMubGVuZ3RoRGVwPW51bGwpfX0pfSksZSgiZW1i
ZXItdmlld3Mvc3RyZWFtcy91dGlscyIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvZGVidWciLCJl
bWJlci1tZXRhbC9wcm9wZXJ0eV9nZXQiLCJlbWJlci1tZXRhbC9zdHJlYW1zL3V0aWxzIiwiZW1i
ZXItcnVudGltZS9taXhpbnMvY29udHJvbGxlciJdLGZ1bmN0aW9uKGUsdCxyLG4saSl7InVzZSBz
dHJpY3QiO2Z1bmN0aW9uIG8oZSx0KXt2YXIgcixpPW4ucmVhZChlKTtyZXR1cm4gcj0ic3RyaW5n
Ij09dHlwZW9mIGk/dC5fbG9va3VwRmFjdG9yeSgidmlldzoiK2kpOml9ZnVuY3Rpb24gYShlLHQp
e3ZhciByPW4ucmVhZChlKSxpPXQubG9va3VwKCJjb21wb25lbnQtbG9va3VwOm1haW4iKTtyZXR1
cm4gaS5sb29rdXBGYWN0b3J5KHIsdCl9ZnVuY3Rpb24gcyhlKXtpZihuLmlzU3RyZWFtKGUpKXt2
YXIgdD1lLnZhbHVlKCk7aWYoImNvbnRyb2xsZXIiIT09ZS5sYWJlbClmb3IoO2kuZGVmYXVsdC5k
ZXRlY3QodCk7KXQ9ci5nZXQodCwibW9kZWwiKTtyZXR1cm4gdH1yZXR1cm4gZX1lLnJlYWRWaWV3
RmFjdG9yeT1vLGUucmVhZENvbXBvbmVudEZhY3Rvcnk9YSxlLnJlYWRVbndyYXBwZWRNb2RlbD1z
fSksZSgiZW1iZXItdmlld3Mvc3lzdGVtL2FjdGlvbl9tYW5hZ2VyIixbImV4cG9ydHMiXSxmdW5j
dGlvbihlKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gdCgpe310LnJlZ2lzdGVyZWRBY3Rpb25zPXt9
LGUuZGVmYXVsdD10fSksZSgiZW1iZXItdmlld3Mvc3lzdGVtL2J1aWxkLWNvbXBvbmVudC10ZW1w
bGF0ZSIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvZGVidWciLCJlbWJlci1tZXRhbC9wcm9wZXJ0
eV9nZXQiLCJlbWJlci1tZXRhbC9hc3NpZ24iLCJodG1sYmFycy1ydW50aW1lIiwiZW1iZXItaHRt
bGJhcnMvaG9va3MvZ2V0LXZhbHVlIiwiZW1iZXItbWV0YWwvc3RyZWFtcy91dGlscyJdLGZ1bmN0
aW9uKGUsdCxyLG4saSxvLGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBzKGUsdCxyKXt2YXIgbixv
LGE9ZS5jb21wb25lbnQscz1lLnRhZ05hbWUsdT1lLmxheW91dCxjPWUuaXNBbmdsZUJyYWNrZXQs
Yj1lLmlzQ29tcG9uZW50RWxlbWVudCxnPWUub3V0ZXJBdHRycztpZih2b2lkIDA9PT1hJiYoYT1u
dWxsKSx1JiZ1LnJhdyl7dmFyIF89ZChyLnRlbXBsYXRlcyxyLnNjb3BlLHIuc2VsZixhKTtuPXAo
dS5yYXcsXyxyLnNlbGYsYSx0KSxvPXUucmF3Lm1ldGF9ZWxzZSByLnRlbXBsYXRlcyYmci50ZW1w
bGF0ZXMuZGVmYXVsdCYmKG49ZihyLnRlbXBsYXRlcy5kZWZhdWx0LHIuc2NvcGUsci5zZWxmLGEp
LG89ci50ZW1wbGF0ZXMuZGVmYXVsdC5tZXRhKTtpZihhJiYhYS5faXNBbmdsZUJyYWNrZXR8fGIp
aWYocz1zfHxtKGEpLCIiIT09cyl7YiYmKHQ9bCh0LGcpKTt2YXIgdz12KGEsYyx0KSx4PWkuaW50
ZXJuYWwubWFudWFsRWxlbWVudChzLHcpO3gubWV0YT1vLG49aCh4LG4sYSl9ZWxzZSB5KGEpO3Jl
dHVybntjcmVhdGVkRWxlbWVudDohIXMsYmxvY2s6bn19ZnVuY3Rpb24gdShlLHQscil7dmFyIG49
e307Zm9yKHZhciBvIGluIHQpe3ZhciBhPXRbb107InN0cmluZyI9PXR5cGVvZiBhP25bb109YTpu
W29dPVsidmFsdWUiLGFdfXZhciBzPXIudGVtcGxhdGVzLmRlZmF1bHQsdT1pLmludGVybmFsLm1h
bnVhbEVsZW1lbnQoZSxuLHMuaXNFbXB0eSk7aWYocy5pc0VtcHR5KXJldHVybiBjKHUse3Njb3Bl
OnIuc2NvcGV9KTt2YXIgbD1jKHIudGVtcGxhdGVzLmRlZmF1bHQscik7cmV0dXJuIGModSx7eWll
bGRUbzpsLHNjb3BlOnIuc2NvcGV9KX1mdW5jdGlvbiBsKGUsdCl7dmFyIHI9bi5kZWZhdWx0KHt9
LGUsdCk7cmV0dXJuIGUuY2xhc3MmJnQuY2xhc3MmJihyLmNsYXNzPVsic3ViZXhwciIsIi1qb2lu
LWNsYXNzZXMiLFtbInZhbHVlIixlLmNsYXNzXSxbInZhbHVlIix0LmNsYXNzXV0sW11dKSxyfWZ1
bmN0aW9uIGMoZSx0KXtyZXR1cm4gaS5pbnRlcm5hbC5ibG9ja0ZvcihpLnJlbmRlcixlLHQpfWZ1
bmN0aW9uIGYoZSx0LHIsbil7cmV0dXJuIGMoZSx7c2NvcGU6dCxzZWxmOnIsb3B0aW9uczp7dmll
dzpufX0pfWZ1bmN0aW9uIGQoZSx0LHIsbil7aWYoZSl7dmFyIGk9e307Zm9yKHZhciBvIGluIGUp
aWYoZS5oYXNPd25Qcm9wZXJ0eShvKSl7dmFyIGE9ZVtvXTthJiYoaVtvXT1mKGVbb10sdCxyLG4p
KX1yZXR1cm4gaX19ZnVuY3Rpb24gcChlLHQscixuLGkpe3JldHVybiBjKGUse3lpZWxkVG86dCxz
ZWxmOnJ8fG4sb3B0aW9uczp7dmlldzpuLGF0dHJzOml9fSl9ZnVuY3Rpb24gaChlLHQscil7cmV0
dXJuIGMoZSx7eWllbGRUbzp0LHNlbGY6cixvcHRpb25zOnt2aWV3OnJ9fSl9ZnVuY3Rpb24gbShl
KXt2YXIgdD1lLnRhZ05hbWU7cmV0dXJuIG51bGwhPT10JiYib2JqZWN0Ij09dHlwZW9mIHQmJnQu
aXNEZXNjcmlwdG9yJiYodD1yLmdldChlLCJ0YWdOYW1lIikpLG51bGwhPT10JiZ2b2lkIDAhPT10
fHwodD1lLl9kZWZhdWx0VGFnTmFtZXx8ImRpdiIpLHR9ZnVuY3Rpb24gdihlLHQsbil7dmFyIGks
YSxzPXt9LHU9ZS5hdHRyaWJ1dGVCaW5kaW5ncyxsPWUuaXNDb21wb25lbnQ/IiI6InZpZXcuIjtp
ZihuLmlkJiZvLmRlZmF1bHQobi5pZCk/KHMuaWQ9by5kZWZhdWx0KG4uaWQpLGUuZWxlbWVudElk
PXMuaWQpOnMuaWQ9ZS5lbGVtZW50SWQsdSlmb3IoaT0wLGE9dS5sZW5ndGg7aTxhO2krKyl7dmFy
IGMsZixkPXVbaV0scD1kLmluZGV4T2YoIjoiKTtpZihwIT09LTEpe3ZhciBoPWQuc3Vic3RyaW5n
KDAscCk7Yz1kLnN1YnN0cmluZyhwKzEpLGY9WyJnZXQiLCIiK2wraF19ZWxzZSBuW2RdPyhjPWQs
Zj1bInZhbHVlIixuW2RdXSk6KGM9ZCxmPVsiZ2V0IiwiIitsK2RdKTtzW2NdPWZ9aWYodClmb3Io
dmFyIG0gaW4gbil7dmFyIHY9blttXTt2JiYoInN0cmluZyI9PXR5cGVvZiB2fHx2LmlzQ29uY2F0
KSYmKHNbbV09WyJ2YWx1ZSIsdl0pfW4udGFnTmFtZSYmKGUudGFnTmFtZT1uLnRhZ05hbWUpO3Zh
ciBnPWIoZSxuLGwpO2lmKGcmJihzLmNsYXNzPWcpLHIuZ2V0KGUsImlzVmlzaWJsZSIpPT09ITEp
e3ZhciB5PVsic3ViZXhwciIsIi1odG1sLXNhZmUiLFsiZGlzcGxheTogbm9uZTsiXSxbXV0sXz1z
LnN0eWxlO18/cy5zdHlsZT1bInN1YmV4cHIiLCJjb25jYXQiLFtfLCIgIix5XSxbXV06cy5zdHls
ZT15fXJldHVybiBzfWZ1bmN0aW9uIGIoZSx0LG4pe3ZhciBpLG8scz1bXSx1PXIuZ2V0KGUsImNs
YXNzTmFtZXMiKSxsPXIuZ2V0KGUsImNsYXNzTmFtZUJpbmRpbmdzIik7aWYodC5jbGFzcyYmKGEu
aXNTdHJlYW0odC5jbGFzcyk/cy5wdXNoKFsic3ViZXhwciIsIi1ub3JtYWxpemUtY2xhc3MiLFtb
InZhbHVlIix0LmNsYXNzLnBhdGhdLFsidmFsdWUiLHQuY2xhc3NdXSxbXV0pOnMucHVzaCh0LmNs
YXNzKSksdC5jbGFzc0JpbmRpbmcmJmcodC5jbGFzc0JpbmRpbmcuc3BsaXQoIiAiKSxzLG4pLHUp
Zm9yKGk9MCxvPXUubGVuZ3RoO2k8bztpKyspcy5wdXNoKHVbaV0pO2lmKGwmJmcobCxzLG4pLGIu
bGVuZ3RoKXJldHVyblsic3ViZXhwciIsIi1qb2luLWNsYXNzZXMiLHMsW11dfWZ1bmN0aW9uIGco
ZSx0LHIpe3ZhciBuLGk7Zm9yKG49MCxpPWUubGVuZ3RoO248aTtuKyspe3ZhciBvPWVbbl0sYT1v
LnNwbGl0KCI6Iikscz1hWzBdLHU9YVsxXSxsPWFbMl07aWYoIiIhPT1zKXt2YXIgYz0iIityK3M7
dC5wdXNoKFsic3ViZXhwciIsIi1ub3JtYWxpemUtY2xhc3MiLFtbInZhbHVlIixzXSxbImdldCIs
Y11dLFsiYWN0aXZlQ2xhc3MiLHUsImluYWN0aXZlQ2xhc3MiLGxdXSl9ZWxzZSB0LnB1c2godSl9
fWZ1bmN0aW9uIHkoZSl7fWUuZGVmYXVsdD1zLGUuYnVpbGRIVE1MVGVtcGxhdGU9dX0pLGUoImVt
YmVyLXZpZXdzL3N5c3RlbS9ldmVudF9kaXNwYXRjaGVyIixbImV4cG9ydHMiLCJlbWJlci1tZXRh
bC9kZWJ1ZyIsImVtYmVyLW1ldGFsL3Byb3BlcnR5X2dldCIsImVtYmVyLW1ldGFsL3Byb3BlcnR5
X3NldCIsImVtYmVyLW1ldGFsL2lzX25vbmUiLCJlbWJlci1tZXRhbC9ydW5fbG9vcCIsImVtYmVy
LXJ1bnRpbWUvc3lzdGVtL29iamVjdCIsImVtYmVyLXZpZXdzL3N5c3RlbS9qcXVlcnkiLCJlbWJl
ci12aWV3cy9zeXN0ZW0vYWN0aW9uX21hbmFnZXIiLCJlbWJlci12aWV3cy92aWV3cy92aWV3Iiwi
ZW1iZXItbWV0YWwvYXNzaWduIiwiY29udGFpbmVyL293bmVyIiwiZW1iZXItbWV0YWwvZW52aXJv
bm1lbnQiXSxmdW5jdGlvbihlLHQscixuLGksbyxhLHMsdSxsLGMsZixkKXsidXNlIHN0cmljdCI7
dmFyIHA9ImVtYmVyLWFwcGxpY2F0aW9uIjtlLmRlZmF1bHQ9YS5kZWZhdWx0LmV4dGVuZCh7ZXZl
bnRzOnt0b3VjaHN0YXJ0OiJ0b3VjaFN0YXJ0Iix0b3VjaG1vdmU6InRvdWNoTW92ZSIsdG91Y2hl
bmQ6InRvdWNoRW5kIix0b3VjaGNhbmNlbDoidG91Y2hDYW5jZWwiLGtleWRvd246ImtleURvd24i
LGtleXVwOiJrZXlVcCIsa2V5cHJlc3M6ImtleVByZXNzIixtb3VzZWRvd246Im1vdXNlRG93biIs
bW91c2V1cDoibW91c2VVcCIsY29udGV4dG1lbnU6ImNvbnRleHRNZW51IixjbGljazoiY2xpY2si
LGRibGNsaWNrOiJkb3VibGVDbGljayIsbW91c2Vtb3ZlOiJtb3VzZU1vdmUiLGZvY3VzaW46ImZv
Y3VzSW4iLGZvY3Vzb3V0OiJmb2N1c091dCIsbW91c2VlbnRlcjoibW91c2VFbnRlciIsbW91c2Vs
ZWF2ZToibW91c2VMZWF2ZSIsc3VibWl0OiJzdWJtaXQiLGlucHV0OiJpbnB1dCIsY2hhbmdlOiJj
aGFuZ2UiLGRyYWdzdGFydDoiZHJhZ1N0YXJ0IixkcmFnOiJkcmFnIixkcmFnZW50ZXI6ImRyYWdF
bnRlciIsZHJhZ2xlYXZlOiJkcmFnTGVhdmUiLGRyYWdvdmVyOiJkcmFnT3ZlciIsZHJvcDoiZHJv
cCIsZHJhZ2VuZDoiZHJhZ0VuZCJ9LHJvb3RFbGVtZW50OiJib2R5IixjYW5EaXNwYXRjaFRvRXZl
bnRNYW5hZ2VyOiEwLGluaXQ6ZnVuY3Rpb24oKXt0aGlzLl9zdXBlcigpfSxzZXR1cDpmdW5jdGlv
bihlLHQpe3ZhciBvLGE9dGhpcy5fZmluYWxFdmVudHM9Yy5kZWZhdWx0KHt9LHIuZ2V0KHRoaXMs
ImV2ZW50cyIpLGUpO2kuZGVmYXVsdCh0KXx8bi5zZXQodGhpcywicm9vdEVsZW1lbnQiLHQpLHQ9
cy5kZWZhdWx0KHIuZ2V0KHRoaXMsInJvb3RFbGVtZW50IikpLHQuYWRkQ2xhc3MocCk7Zm9yKG8g
aW4gYSlhLmhhc093blByb3BlcnR5KG8pJiZ0aGlzLnNldHVwSGFuZGxlcih0LG8sYVtvXSl9LHNl
dHVwSGFuZGxlcjpmdW5jdGlvbihlLHQscil7dmFyIG49dGhpcyxpPWYuZ2V0T3duZXIodGhpcyks
bz1pJiZpLmxvb2t1cCgiLXZpZXctcmVnaXN0cnk6bWFpbiIpfHxsLmRlZmF1bHQudmlld3M7bnVs
bCE9PXImJihlLm9uKHQrIi5lbWJlciIsIi5lbWJlci12aWV3IixmdW5jdGlvbihlLHQpe3ZhciBp
PW9bdGhpcy5pZF0sYT0hMCxzPW4uY2FuRGlzcGF0Y2hUb0V2ZW50TWFuYWdlcj9uLl9maW5kTmVh
cmVzdEV2ZW50TWFuYWdlcihpLHIpOm51bGw7cmV0dXJuIHMmJnMhPT10P2E9bi5fZGlzcGF0Y2hF
dmVudChzLGUscixpKTppJiYoYT1uLl9idWJibGVFdmVudChpLGUscikpLGF9KSxlLm9uKHQrIi5l
bWJlciIsIltkYXRhLWVtYmVyLWFjdGlvbl0iLGZ1bmN0aW9uKGUpe3ZhciB0PXMuZGVmYXVsdChl
LmN1cnJlbnRUYXJnZXQpLmF0dHIoImRhdGEtZW1iZXItYWN0aW9uIiksbj11LmRlZmF1bHQucmVn
aXN0ZXJlZEFjdGlvbnNbdF07aWYobilmb3IodmFyIGk9MCxvPW4ubGVuZ3RoO2k8bztpKyspe3Zh
ciBhPW5baV07aWYoYSYmYS5ldmVudE5hbWU9PT1yKXJldHVybiBhLmhhbmRsZXIoZSl9fSkpfSxf
ZmluZE5lYXJlc3RFdmVudE1hbmFnZXI6ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49bnVsbDtlJiYo
bj1yLmdldChlLCJldmVudE1hbmFnZXIiKSwhbnx8IW5bdF0pOyllPXIuZ2V0KGUsInBhcmVudFZp
ZXciKTtyZXR1cm4gbn0sX2Rpc3BhdGNoRXZlbnQ6ZnVuY3Rpb24oZSx0LHIsbil7dmFyIGk9ITAs
YT1lW3JdO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBhPyhpPW8uZGVmYXVsdChlLGEsdCxuKSx0
LnN0b3BQcm9wYWdhdGlvbigpKTppPXRoaXMuX2J1YmJsZUV2ZW50KG4sdCxyKSxpfSxfYnViYmxl
RXZlbnQ6ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlLmhhbmRsZUV2ZW50KHIsdCl9LGRlc3Ryb3k6
ZnVuY3Rpb24oKXt2YXIgZT1yLmdldCh0aGlzLCJyb290RWxlbWVudCIpO3JldHVybiBzLmRlZmF1
bHQoZSkub2ZmKCIuZW1iZXIiLCIqKiIpLnJlbW92ZUNsYXNzKHApLHRoaXMuX3N1cGVyLmFwcGx5
KHRoaXMsYXJndW1lbnRzKX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4iKEV2ZW50RGlzcGF0
Y2hlcikifX0pfSksZSgiZW1iZXItdmlld3Mvc3lzdGVtL2V4dCIsWyJleHBvcnRzIiwiZW1iZXIt
bWV0YWwvcnVuX2xvb3AiXSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt0LmRlZmF1bHQuX2Fk
ZFF1ZXVlKCJyZW5kZXIiLCJhY3Rpb25zIiksdC5kZWZhdWx0Ll9hZGRRdWV1ZSgiYWZ0ZXJSZW5k
ZXIiLCJyZW5kZXIiKX0pLGUoImVtYmVyLXZpZXdzL3N5c3RlbS9qcXVlcnkiLFsiZXhwb3J0cyIs
ImVtYmVyLW1ldGFsL2NvcmUiLCJlbWJlci1tZXRhbC9lbnZpcm9ubWVudCJdLGZ1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7dmFyIG87aWYobi5kZWZhdWx0Lmhhc0RPTSYmKG89dC5kZWZhdWx0
LmltcG9ydHMmJnQuZGVmYXVsdC5pbXBvcnRzLmpRdWVyeXx8aSYmaS5qUXVlcnksb3x8ImZ1bmN0
aW9uIiE9dHlwZW9mIHJ8fChvPXIoImpxdWVyeSIpKSxvKSl7dmFyIGE9WyJkcmFnc3RhcnQiLCJk
cmFnIiwiZHJhZ2VudGVyIiwiZHJhZ2xlYXZlIiwiZHJhZ292ZXIiLCJkcm9wIiwiZHJhZ2VuZCJd
O2EuZm9yRWFjaChmdW5jdGlvbihlKXtvLmV2ZW50LmZpeEhvb2tzW2VdPXtwcm9wczpbImRhdGFU
cmFuc2ZlciJdfX0pfWUuZGVmYXVsdD1vfSksZSgiZW1iZXItdmlld3Mvc3lzdGVtL2xvb2t1cF9w
YXJ0aWFsIixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9kZWJ1ZyIsImVtYmVyLW1ldGFsL2Vycm9y
Il0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUsdCl7aWYobnVsbCE9
dCl7dmFyIHI9dC5zcGxpdCgiLyIpLG49cltyLmxlbmd0aC0xXTtyW3IubGVuZ3RoLTFdPSJfIitu
O3ZhciBvPXIuam9pbigiLyIpLGE9aShlLG8sdCk7cmV0dXJuIGF9fWZ1bmN0aW9uIGkoZSx0LG4p
e2lmKG4pe2lmKCFlLm93bmVyKXRocm93IG5ldyByLmRlZmF1bHQoIkNvbnRhaW5lciB3YXMgbm90
IGZvdW5kIHdoZW4gbG9va2luZyB1cCBhIHZpZXdzIHRlbXBsYXRlLiBUaGlzIGlzIG1vc3QgbGlr
ZWx5IGR1ZSB0byBtYW51YWxseSBpbnN0YW50aWF0aW5nIGFuIEVtYmVyLlZpZXcuIFNlZTogaHR0
cDovL2dpdC5pby9FS1BwbkEiKTtyZXR1cm4gZS5vd25lci5sb29rdXAoInRlbXBsYXRlOiIrdCl8
fGUub3duZXIubG9va3VwKCJ0ZW1wbGF0ZToiK24pfX1lLmRlZmF1bHQ9bn0pLGUoImVtYmVyLXZp
ZXdzL3N5c3RlbS9wbGF0Zm9ybSIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvZW52aXJvbm1lbnQi
XSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgcj10LmRlZmF1bHQuaGFzRE9NJiZmdW5j
dGlvbigpe3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHQ9ZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiaW5wdXQiKTtyZXR1cm4gdC5zZXRBdHRyaWJ1dGUoIm5hbWUiLCJmb28iKSxl
LmFwcGVuZENoaWxkKHQpLCEhZS5pbm5lckhUTUwubWF0Y2goImZvbyIpfSgpO2UuY2FuU2V0TmFt
ZU9uSW5wdXRzPXJ9KSxlKCJlbWJlci12aWV3cy9zeXN0ZW0vdXRpbHMiLFsiZXhwb3J0cyJdLGZ1
bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB0KGUpe3ZhciB0PWUuc2hpZnRLZXl8fGUu
bWV0YUtleXx8ZS5hbHRLZXl8fGUuY3RybEtleSxyPWUud2hpY2g+MTtyZXR1cm4hdCYmIXJ9ZnVu
Y3Rpb24gcihlKXt2YXIgdD1kb2N1bWVudC5jcmVhdGVSYW5nZSgpO3JldHVybiB0LnNldFN0YXJ0
QmVmb3JlKGUuX3JlbmRlck5vZGUuZmlyc3ROb2RlKSx0LnNldEVuZEFmdGVyKGUuX3JlbmRlck5v
ZGUubGFzdE5vZGUpLHR9ZnVuY3Rpb24gbihlKXt2YXIgdD1yKGUpO3JldHVybiB0LmdldENsaWVu
dFJlY3RzKCl9ZnVuY3Rpb24gaShlKXt2YXIgdD1yKGUpO3JldHVybiB0LmdldEJvdW5kaW5nQ2xp
ZW50UmVjdCgpfWUuaXNTaW1wbGVDbGljaz10LGUuZ2V0Vmlld0NsaWVudFJlY3RzPW4sZS5nZXRW
aWV3Qm91bmRpbmdDbGllbnRSZWN0PWl9KSxlKCJlbWJlci12aWV3cy92aWV3cy9jaGVja2JveCIs
WyJleHBvcnRzIiwiZW1iZXItbWV0YWwvcHJvcGVydHlfZ2V0IiwiZW1iZXItbWV0YWwvcHJvcGVy
dHlfc2V0IiwiZW1iZXItdmlld3MvY29tcG9uZW50cy9jb21wb25lbnQiXSxmdW5jdGlvbihlLHQs
cixuKXsidXNlIHN0cmljdCI7ZS5kZWZhdWx0PW4uZGVmYXVsdC5leHRlbmQoe2luc3RydW1lbnRE
aXNwbGF5Oid7e2lucHV0IHR5cGU9ImNoZWNrYm94In19JyxjbGFzc05hbWVzOlsiZW1iZXItY2hl
Y2tib3giXSx0YWdOYW1lOiJpbnB1dCIsYXR0cmlidXRlQmluZGluZ3M6WyJ0eXBlIiwiY2hlY2tl
ZCIsImluZGV0ZXJtaW5hdGUiLCJkaXNhYmxlZCIsInRhYmluZGV4IiwibmFtZSIsImF1dG9mb2N1
cyIsInJlcXVpcmVkIiwiZm9ybSJdLHR5cGU6ImNoZWNrYm94IixjaGVja2VkOiExLGRpc2FibGVk
OiExLGluZGV0ZXJtaW5hdGU6ITEsZGlkSW5zZXJ0RWxlbWVudDpmdW5jdGlvbigpe3RoaXMuX3N1
cGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0LmdldCh0aGlzLCJlbGVtZW50IikuaW5kZXRlcm1p
bmF0ZT0hIXQuZ2V0KHRoaXMsImluZGV0ZXJtaW5hdGUiKX0sY2hhbmdlOmZ1bmN0aW9uKCl7ci5z
ZXQodGhpcywiY2hlY2tlZCIsdGhpcy4kKCkucHJvcCgiY2hlY2tlZCIpKX19KX0pLGUoImVtYmVy
LXZpZXdzL3ZpZXdzL2NvcmVfdmlldyIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvZGVidWciLCJl
bWJlci1tZXRhbC9wcm9wZXJ0eV9nZXQiLCJlbWJlci1ydW50aW1lL3N5c3RlbS9vYmplY3QiLCJl
bWJlci1ydW50aW1lL21peGlucy9ldmVudGVkIiwiZW1iZXItcnVudGltZS9taXhpbnMvYWN0aW9u
X2hhbmRsZXIiLCJlbWJlci1ydW50aW1lL3V0aWxzIiwiZW1iZXItbWV0YWwtdmlld3MiLCJlbWJl
ci12aWV3cy92aWV3cy9zdGF0ZXMiLCJodG1sYmFycy1ydW50aW1lIiwicmVxdWlyZSJdLGZ1bmN0
aW9uKGUsdCxyLG4saSxvLGEscyx1LGwsYyl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGYoKXtyZXR1
cm4gaD1ofHxjLmRlZmF1bHQoImVtYmVyLWh0bWxiYXJzL3N5c3RlbS9kb20taGVscGVyIikuZGVm
YXVsdH12YXIgZCxwPW4uZGVmYXVsdC5leHRlbmQoaS5kZWZhdWx0LG8uZGVmYXVsdCx7aXNWaWV3
OiEwLF9zdGF0ZXM6dS5jbG9uZVN0YXRlcyh1LnN0YXRlcyksaW5pdDpmdW5jdGlvbigpe2lmKHRo
aXMuX3N1cGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzLl9zdGF0ZT0icHJlUmVuZGVyIix0
aGlzLl9jdXJyZW50U3RhdGU9dGhpcy5fc3RhdGVzLnByZVJlbmRlcix0aGlzLl9pc1Zpc2libGU9
ci5nZXQodGhpcywiaXNWaXNpYmxlIiksIXRoaXMucmVuZGVyZXIpe3ZhciBlPWYoKTtkPWR8fHMu
SW50ZXJhY3RpdmVSZW5kZXJlci5jcmVhdGUoe2RvbTpuZXcgZX0pLHRoaXMucmVuZGVyZXI9ZH10
aGlzLl9kZXN0cm95aW5nU3VidHJlZUZvclZpZXc9bnVsbCx0aGlzLl9kaXNwYXRjaGluZz1udWxs
fSxwYXJlbnRWaWV3Om51bGwsaW5zdHJ1bWVudE5hbWU6ImNvcmVfdmlldyIsaW5zdHJ1bWVudERl
dGFpbHM6ZnVuY3Rpb24oZSl7ZS5vYmplY3Q9dGhpcy50b1N0cmluZygpLGUuY29udGFpbmVyS2V5
PXRoaXMuX2RlYnVnQ29udGFpbmVyS2V5LGUudmlldz10aGlzfSx0cmlnZ2VyOmZ1bmN0aW9uKCl7
dGhpcy5fc3VwZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpO3ZhciBlPWFyZ3VtZW50c1swXSx0PXRo
aXNbZV07aWYodCl7Zm9yKHZhciByPWFyZ3VtZW50cy5sZW5ndGgsbj1uZXcgQXJyYXkoci0xKSxp
PTE7aTxyO2krKyluW2ktMV09YXJndW1lbnRzW2ldO3JldHVybiB0LmFwcGx5KHRoaXMsbil9fSxo
YXM6ZnVuY3Rpb24oZSl7cmV0dXJuImZ1bmN0aW9uIj09PWEudHlwZU9mKHRoaXNbZV0pfHx0aGlz
Ll9zdXBlcihlKX0sZGVzdHJveTpmdW5jdGlvbigpe2lmKHRoaXMuX3N1cGVyLmFwcGx5KHRoaXMs
YXJndW1lbnRzKSlyZXR1cm4gdGhpcy5fY3VycmVudFN0YXRlLmNsZWFudXAodGhpcyksIXRoaXMu
b3duZXJWaWV3Ll9kZXN0cm95aW5nU3VidHJlZUZvclZpZXcmJnRoaXMuX3JlbmRlck5vZGUmJmwu
aW50ZXJuYWwuY2xlYXJNb3JwaCh0aGlzLl9yZW5kZXJOb2RlLHRoaXMub3duZXJWaWV3LmVudiwh
MCksdGhpc319KTtvLmRlcHJlY2F0ZVVuZGVyc2NvcmVBY3Rpb25zKHApLHAucmVvcGVuQ2xhc3Mo
e2lzVmlld0ZhY3Rvcnk6ITB9KTt2YXIgaDtlLmRlZmF1bHQ9cH0pLGUoImVtYmVyLXZpZXdzL3Zp
ZXdzL3N0YXRlcyIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvYXNzaWduIiwiZW1iZXItdmlld3Mv
dmlld3Mvc3RhdGVzL2RlZmF1bHQiLCJlbWJlci12aWV3cy92aWV3cy9zdGF0ZXMvcHJlX3JlbmRl
ciIsImVtYmVyLXZpZXdzL3ZpZXdzL3N0YXRlcy9oYXNfZWxlbWVudCIsImVtYmVyLXZpZXdzL3Zp
ZXdzL3N0YXRlcy9pbl9kb20iLCJlbWJlci12aWV3cy92aWV3cy9zdGF0ZXMvZGVzdHJveWluZyJd
LGZ1bmN0aW9uKGUsdCxyLG4saSxvLGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBzKGUpe3ZhciBy
PXt9O3IuX2RlZmF1bHQ9e30sci5wcmVSZW5kZXI9T2JqZWN0LmNyZWF0ZShyLl9kZWZhdWx0KSxy
LmRlc3Ryb3lpbmc9T2JqZWN0LmNyZWF0ZShyLl9kZWZhdWx0KSxyLmhhc0VsZW1lbnQ9T2JqZWN0
LmNyZWF0ZShyLl9kZWZhdWx0KSxyLmluRE9NPU9iamVjdC5jcmVhdGUoci5oYXNFbGVtZW50KTtm
b3IodmFyIG4gaW4gZSllLmhhc093blByb3BlcnR5KG4pJiZ0LmRlZmF1bHQocltuXSxlW25dKTty
ZXR1cm4gcn1lLmNsb25lU3RhdGVzPXM7dmFyIHU9e19kZWZhdWx0OnIuZGVmYXVsdCxwcmVSZW5k
ZXI6bi5kZWZhdWx0LGluRE9NOm8uZGVmYXVsdCxoYXNFbGVtZW50OmkuZGVmYXVsdCxkZXN0cm95
aW5nOmEuZGVmYXVsdH07ZS5zdGF0ZXM9dX0pLGUoImVtYmVyLXZpZXdzL3ZpZXdzL3N0YXRlcy9k
ZWZhdWx0IixbImV4cG9ydHMiLCJlbWJlci1tZXRhbC9lcnJvciIsImVtYmVyLW1ldGFsL3Byb3Bl
cnR5X2dldCIsImVtYmVyLXZpZXdzL2NvbXBhdC9hdHRycy1wcm94eSJdLGZ1bmN0aW9uKGUsdCxy
LG4peyJ1c2Ugc3RyaWN0IjtlLmRlZmF1bHQ9e2FwcGVuZENoaWxkOmZ1bmN0aW9uKCl7dGhyb3cg
bmV3IHQuZGVmYXVsdCgiWW91IGNhbid0IHVzZSBhcHBlbmRDaGlsZCBvdXRzaWRlIG9mIHRoZSBy
ZW5kZXJpbmcgcHJvY2VzcyIpfSwkOmZ1bmN0aW9uKCl7fSxnZXRFbGVtZW50OmZ1bmN0aW9uKCl7
cmV0dXJuIG51bGx9LGxlZ2FjeVByb3BlcnR5RGlkQ2hhbmdlOmZ1bmN0aW9uKGUsdCl7dmFyIGk9
ZS5hdHRycztpZihpJiZ0IGluIGkpe3ZhciBvPWlbdF07aWYobyYmb1tuLk1VVEFCTEVfQ0VMTF0p
e3ZhciBhPXIuZ2V0KGUsdCk7aWYoYT09PW8udmFsdWUpcmV0dXJuO28udXBkYXRlKGEpfX19LGhh
bmRsZUV2ZW50OmZ1bmN0aW9uKCl7cmV0dXJuITB9LGNsZWFudXA6ZnVuY3Rpb24oKXt9LGRlc3Ry
b3lFbGVtZW50OmZ1bmN0aW9uKCl7fSxyZXJlbmRlcjpmdW5jdGlvbihlKXtlLnJlbmRlcmVyLmVu
c3VyZVZpZXdOb3RSZW5kZXJpbmcoZSl9LGludm9rZU9ic2VydmVyOmZ1bmN0aW9uKCl7fX19KSxl
KCJlbWJlci12aWV3cy92aWV3cy9zdGF0ZXMvZGVzdHJveWluZyIsWyJleHBvcnRzIiwiZW1iZXIt
bWV0YWwvYXNzaWduIiwiZW1iZXItdmlld3Mvdmlld3Mvc3RhdGVzL2RlZmF1bHQiLCJlbWJlci1t
ZXRhbC9lcnJvciJdLGZ1bmN0aW9uKGUsdCxyLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgaT1PYmplY3Qu
Y3JlYXRlKHIuZGVmYXVsdCk7dC5kZWZhdWx0KGkse2FwcGVuZENoaWxkOmZ1bmN0aW9uKCl7dGhy
b3cgbmV3IG4uZGVmYXVsdCgiWW91IGNhbid0IGNhbGwgYXBwZW5kQ2hpbGQgb24gYSB2aWV3IGJl
aW5nIGRlc3Ryb3llZCIpfSxyZXJlbmRlcjpmdW5jdGlvbigpe3Rocm93IG5ldyBuLmRlZmF1bHQo
IllvdSBjYW4ndCBjYWxsIHJlcmVuZGVyIG9uIGEgdmlldyBiZWluZyBkZXN0cm95ZWQiKX0sZGVz
dHJveUVsZW1lbnQ6ZnVuY3Rpb24oKXt0aHJvdyBuZXcgbi5kZWZhdWx0KCJZb3UgY2FuJ3QgY2Fs
bCBkZXN0cm95RWxlbWVudCBvbiBhIHZpZXcgYmVpbmcgZGVzdHJveWVkIil9fSksZS5kZWZhdWx0
PWl9KSxlKCJlbWJlci12aWV3cy92aWV3cy9zdGF0ZXMvaGFzX2VsZW1lbnQiLFsiZXhwb3J0cyIs
ImVtYmVyLXZpZXdzL3ZpZXdzL3N0YXRlcy9kZWZhdWx0IiwiZW1iZXItbWV0YWwvYXNzaWduIiwi
ZW1iZXItdmlld3Mvc3lzdGVtL2pxdWVyeSIsImVtYmVyLW1ldGFsL3J1bl9sb29wIiwiZW1iZXIt
bWV0YWwvaW5zdHJ1bWVudGF0aW9uIiwiZW1iZXItbWV0YWwvcHJvcGVydHlfZ2V0Il0sZnVuY3Rp
b24oZSx0LHIsbixpLG8sYSl7InVzZSBzdHJpY3QiO3ZhciBzPU9iamVjdC5jcmVhdGUodC5kZWZh
dWx0KTtyLmRlZmF1bHQocyx7JDpmdW5jdGlvbihlLHQpe3ZhciByPWUuZWxlbWVudDtyZXR1cm4g
dD9uLmRlZmF1bHQodCxyKTpuLmRlZmF1bHQocil9LGdldEVsZW1lbnQ6ZnVuY3Rpb24oZSl7dmFy
IHQ9YS5nZXQoZSwicGFyZW50VmlldyIpO3JldHVybiB0JiYodD1hLmdldCh0LCJlbGVtZW50Iikp
LHQ/ZS5maW5kRWxlbWVudEluUGFyZW50RWxlbWVudCh0KTpuLmRlZmF1bHQoIiMiK2EuZ2V0KGUs
ImVsZW1lbnRJZCIpKVswXX0scmVyZW5kZXI6ZnVuY3Rpb24oZSl7ZS5yZW5kZXJlci5lbnN1cmVW
aWV3Tm90UmVuZGVyaW5nKGUpLGUucmVuZGVyZXIucmVyZW5kZXIoZSl9LGNsZWFudXA6ZnVuY3Rp
b24oZSl7ZS5fY3VycmVudFN0YXRlLmRlc3Ryb3lFbGVtZW50KGUpfSxkZXN0cm95RWxlbWVudDpm
dW5jdGlvbihlKXtyZXR1cm4gZS5yZW5kZXJlci5yZW1vdmUoZSwhMSksZX0saGFuZGxlRXZlbnQ6
ZnVuY3Rpb24oZSx0LHIpe3JldHVybiFlLmhhcyh0KXx8by5mbGFnZ2VkSW5zdHJ1bWVudCgiaW50
ZXJhY3Rpb24uIit0LHtldmVudDpyLHZpZXc6ZX0sZnVuY3Rpb24oKXtyZXR1cm4gaS5kZWZhdWx0
LmpvaW4oZSxlLnRyaWdnZXIsdCxyKX0pfSxpbnZva2VPYnNlcnZlcjpmdW5jdGlvbihlLHQpe3Qu
Y2FsbChlKX19KSxlLmRlZmF1bHQ9c30pLGUoImVtYmVyLXZpZXdzL3ZpZXdzL3N0YXRlcy9pbl9k
b20iLFsiZXhwb3J0cyIsImVtYmVyLW1ldGFsL2RlYnVnIiwiZW1iZXItbWV0YWwvYXNzaWduIiwi
ZW1iZXItbWV0YWwvZXJyb3IiLCJlbWJlci1tZXRhbC9vYnNlcnZlciIsImVtYmVyLXZpZXdzL3Zp
ZXdzL3N0YXRlcy9oYXNfZWxlbWVudCJdLGZ1bmN0aW9uKGUsdCxyLG4saSxvKXsidXNlIHN0cmlj
dCI7dmFyIGE9T2JqZWN0LmNyZWF0ZShvLmRlZmF1bHQpO3IuZGVmYXVsdChhLHtlbnRlcjpmdW5j
dGlvbihlKXsiIiE9PWUudGFnTmFtZSYmZS5fcmVnaXN0ZXIoKX0sZXhpdDpmdW5jdGlvbihlKXtl
Ll91bnJlZ2lzdGVyKCl9fSksZS5kZWZhdWx0PWF9KSxlKCJlbWJlci12aWV3cy92aWV3cy9zdGF0
ZXMvcHJlX3JlbmRlciIsWyJleHBvcnRzIiwiZW1iZXItdmlld3Mvdmlld3Mvc3RhdGVzL2RlZmF1
bHQiLCJlbWJlci1tZXRhbC9hc3NpZ24iXSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3Zh
ciBuPU9iamVjdC5jcmVhdGUodC5kZWZhdWx0KTtyLmRlZmF1bHQobix7bGVnYWN5UHJvcGVydHlE
aWRDaGFuZ2U6ZnVuY3Rpb24oZSx0KXt9fSksZS5kZWZhdWx0PW59KSxlKCJlbWJlci12aWV3cy92
aWV3cy90ZXh0X2FyZWEiLFsiZXhwb3J0cyIsImVtYmVyLXZpZXdzL2NvbXBvbmVudHMvY29tcG9u
ZW50IiwiZW1iZXItdmlld3MvbWl4aW5zL3RleHRfc3VwcG9ydCJdLGZ1bmN0aW9uKGUsdCxyKXsi
dXNlIHN0cmljdCI7ZS5kZWZhdWx0PXQuZGVmYXVsdC5leHRlbmQoci5kZWZhdWx0LHtpbnN0cnVt
ZW50RGlzcGxheToie3t0ZXh0YXJlYX19IixjbGFzc05hbWVzOlsiZW1iZXItdGV4dC1hcmVhIl0s
dGFnTmFtZToidGV4dGFyZWEiLGF0dHJpYnV0ZUJpbmRpbmdzOlsicm93cyIsImNvbHMiLCJuYW1l
Iiwic2VsZWN0aW9uRW5kIiwic2VsZWN0aW9uU3RhcnQiLCJ3cmFwIiwibGFuZyIsImRpciIsInZh
bHVlIl0scm93czpudWxsLGNvbHM6bnVsbH0pfSksZSgiZW1iZXItdmlld3Mvdmlld3MvdGV4dF9m
aWVsZCIsWyJleHBvcnRzIiwiZW1iZXItbWV0YWwvY29tcHV0ZWQiLCJlbWJlci1tZXRhbC9lbnZp
cm9ubWVudCIsImVtYmVyLXZpZXdzL2NvbXBvbmVudHMvY29tcG9uZW50IiwiZW1iZXItdmlld3Mv
bWl4aW5zL3RleHRfc3VwcG9ydCIsImVtYmVyLW1ldGFsL2VtcHR5X29iamVjdCJdLGZ1bmN0aW9u
KGUsdCxyLG4saSxvKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYShlKXtpZihlIGluIHUpcmV0dXJu
IHVbZV07aWYoIXIuZGVmYXVsdC5oYXNET00pcmV0dXJuIHVbZV09ZSxlO3N8fChzPWRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImlucHV0IikpO3RyeXtzLnR5cGU9ZX1jYXRjaChlKXt9cmV0dXJuIHVb
ZV09cy50eXBlPT09ZX12YXIgcyx1PW5ldyBvLmRlZmF1bHQ7ZS5kZWZhdWx0PW4uZGVmYXVsdC5l
eHRlbmQoaS5kZWZhdWx0LHtpbnN0cnVtZW50RGlzcGxheTone3tpbnB1dCB0eXBlPSJ0ZXh0In19
JyxjbGFzc05hbWVzOlsiZW1iZXItdGV4dC1maWVsZCJdLHRhZ05hbWU6ImlucHV0IixhdHRyaWJ1
dGVCaW5kaW5nczpbImFjY2VwdCIsImF1dG9jb21wbGV0ZSIsImF1dG9zYXZlIiwiZGlyIiwiZm9y
bWFjdGlvbiIsImZvcm1lbmN0eXBlIiwiZm9ybW1ldGhvZCIsImZvcm1ub3ZhbGlkYXRlIiwiZm9y
bXRhcmdldCIsImhlaWdodCIsImlucHV0bW9kZSIsImxhbmciLCJsaXN0IiwibWF4IiwibWluIiwi
bXVsdGlwbGUiLCJuYW1lIiwicGF0dGVybiIsInNpemUiLCJzdGVwIiwidHlwZSIsInZhbHVlIiwi
d2lkdGgiXSxkZWZhdWx0TGF5b3V0Om51bGwsdmFsdWU6IiIsdHlwZTp0LmNvbXB1dGVkKHtnZXQ6
ZnVuY3Rpb24oKXtyZXR1cm4idGV4dCJ9LHNldDpmdW5jdGlvbihlLHQpe3ZhciByPSJ0ZXh0Ijty
ZXR1cm4gYSh0KSYmKHI9dCkscn19KSxzaXplOm51bGwscGF0dGVybjpudWxsLG1pbjpudWxsLG1h
eDpudWxsfSl9KSxlKCJlbWJlci12aWV3cy92aWV3cy92aWV3IixbImV4cG9ydHMiLCJlbWJlci12
aWV3cy9zeXN0ZW0vZXh0IiwiZW1iZXItdmlld3Mvdmlld3MvY29yZV92aWV3IiwiZW1iZXItdmll
d3MvbWl4aW5zL3ZpZXdfY29udGV4dF9zdXBwb3J0IiwiZW1iZXItdmlld3MvbWl4aW5zL3ZpZXdf
Y2hpbGRfdmlld3Nfc3VwcG9ydCIsImVtYmVyLXZpZXdzL21peGlucy9sZWdhY3lfY2hpbGRfdmll
d3Nfc3VwcG9ydCIsImVtYmVyLXZpZXdzL21peGlucy92aWV3X3N0YXRlX3N1cHBvcnQiLCJlbWJl
ci12aWV3cy9taXhpbnMvdGVtcGxhdGVfcmVuZGVyaW5nX3N1cHBvcnQiLCJlbWJlci12aWV3cy9t
aXhpbnMvY2xhc3NfbmFtZXNfc3VwcG9ydCIsImVtYmVyLXZpZXdzL21peGlucy9sZWdhY3lfdmll
d19zdXBwb3J0IiwiZW1iZXItdmlld3MvbWl4aW5zL2luc3RydW1lbnRhdGlvbl9zdXBwb3J0Iiwi
ZW1iZXItdmlld3MvbWl4aW5zL2FyaWFfcm9sZV9zdXBwb3J0IiwiZW1iZXItdmlld3MvbWl4aW5z
L3Zpc2liaWxpdHlfc3VwcG9ydCIsImVtYmVyLXZpZXdzL2NvbXBhdC9hdHRycy1wcm94eSIsImVt
YmVyLXZpZXdzL21peGlucy92aWV3X3N1cHBvcnQiXSxmdW5jdGlvbihlLHQscixuLGksbyxhLHMs
dSxsLGMsZixkLHAsaCl7InVzZSBzdHJpY3QiO3ZhciBtPXIuZGVmYXVsdC5leHRlbmQobi5kZWZh
dWx0LGkuZGVmYXVsdCxvLmRlZmF1bHQsYS5kZWZhdWx0LHMuZGVmYXVsdCx1LmRlZmF1bHQsbC5k
ZWZhdWx0LGMuZGVmYXVsdCxkLmRlZmF1bHQscC5kZWZhdWx0LGYuZGVmYXVsdCxoLmRlZmF1bHQs
e2luaXQ6ZnVuY3Rpb24oKXt0aGlzLl9zdXBlci5hcHBseSh0aGlzLGFyZ3VtZW50cyksdGhpcy5f
dmlld1JlZ2lzdHJ5fHwodGhpcy5fdmlld1JlZ2lzdHJ5PW0udmlld3MpfSxfY2xhc3NTdHJpbmdG
b3JQcm9wZXJ0eTpmdW5jdGlvbihlKXtyZXR1cm4gbS5fY2xhc3NTdHJpbmdGb3JWYWx1ZShlLnBh
dGgsZS5zdHJlYW0udmFsdWUoKSxlLmNsYXNzTmFtZSxlLmZhbHN5Q2xhc3NOYW1lKX19KTttLnJl
b3BlbkNsYXNzKHt2aWV3czp7fX0pLGUuZGVmYXVsdD1tLGUuVmlld0NvbnRleHRTdXBwb3J0PW4u
ZGVmYXVsdCxlLlZpZXdDaGlsZFZpZXdzU3VwcG9ydD1pLmRlZmF1bHQsZS5WaWV3U3RhdGVTdXBw
b3J0PWEuZGVmYXVsdCxlLlRlbXBsYXRlUmVuZGVyaW5nU3VwcG9ydD1zLmRlZmF1bHQsZS5DbGFz
c05hbWVzU3VwcG9ydD11LmRlZmF1bHR9KSxlKCJlbWJlci9pbmRleCIsWyJleHBvcnRzIiwiZW1i
ZXItbWV0YWwiLCJlbWJlci1ydW50aW1lIiwiZW1iZXItdmlld3MiLCJlbWJlci1yb3V0aW5nIiwi
ZW1iZXItYXBwbGljYXRpb24iLCJlbWJlci1leHRlbnNpb24tc3VwcG9ydCIsImVtYmVyLWh0bWxi
YXJzIiwiZW1iZXItcm91dGluZy1odG1sYmFycyIsImVtYmVyLXJvdXRpbmctdmlld3MiLCJyZXF1
aXJlIiwiZW1iZXItcnVudGltZS9zeXN0ZW0vbGF6eV9sb2FkIl0sZnVuY3Rpb24oZSx0LHIsbixp
LG8sYSxzLHUsbCxjLGYpeyJ1c2Ugc3RyaWN0IjtjLmhhcygiZW1iZXItdGVtcGxhdGUtY29tcGls
ZXIiKSYmYy5kZWZhdWx0KCJlbWJlci10ZW1wbGF0ZS1jb21waWxlciIpLGMuaGFzKCJlbWJlci10
ZXN0aW5nIikmJmMuZGVmYXVsdCgiZW1iZXItdGVzdGluZyIpLGYucnVuTG9hZEhvb2tzKCJFbWJl
ciIpfSksZSgiaHRtbGJhcnMtcnVudGltZSIsWyJleHBvcnRzIiwiaHRtbGJhcnMtcnVudGltZS9o
b29rcyIsImh0bWxiYXJzLXJ1bnRpbWUvcmVuZGVyIiwiaHRtbGJhcnMtdXRpbC9tb3JwaC11dGls
cyIsImh0bWxiYXJzLXV0aWwvdGVtcGxhdGUtdXRpbHMiXSxmdW5jdGlvbihlLHQscixuLGkpeyJ1
c2Ugc3RyaWN0Ijt2YXIgbz17YmxvY2tGb3I6aS5ibG9ja0ZvcixtYW51YWxFbGVtZW50OnIubWFu
dWFsRWxlbWVudCxob3N0QmxvY2s6dC5ob3N0QmxvY2ssY29udGludWVCbG9jazp0LmNvbnRpbnVl
QmxvY2ssaG9zdFlpZWxkV2l0aFNoYWRvd1RlbXBsYXRlOnQuaG9zdFlpZWxkV2l0aFNoYWRvd1Rl
bXBsYXRlLHZpc2l0Q2hpbGRyZW46bi52aXNpdENoaWxkcmVuLHZhbGlkYXRlQ2hpbGRNb3JwaHM6
bi52YWxpZGF0ZUNoaWxkTW9ycGhzLGNsZWFyTW9ycGg6aS5jbGVhck1vcnBofTtlLmhvb2tzPXQu
ZGVmYXVsdCxlLnJlbmRlcj1yLmRlZmF1bHQsZS5pbnRlcm5hbD1vfSksZSgiaHRtbGJhcnMtcnVu
dGltZS9leHByZXNzaW9uLXZpc2l0b3IiLFsiZXhwb3J0cyJdLGZ1bmN0aW9uKGUpeyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiB0KGUsdCxyKXtmb3IodmFyIGk9W10sbz0wLGE9ZS5sZW5ndGg7bzxhO28r
KylpLnB1c2gobihlW29dLHQscikudmFsdWUpO3JldHVybiBpfWZ1bmN0aW9uIHIoZSx0LHIpe2Zv
cih2YXIgaT17fSxvPTAsYT1lLmxlbmd0aDtvPGE7bys9Mil7dmFyIHM9ZVtvXSx1PWVbbysxXTtp
W3NdPW4odSx0LHIpLnZhbHVlfXJldHVybiBpfWZ1bmN0aW9uIG4oZSx0LHIpe3ZhciBuPXt2YWx1
ZTpudWxsfTtyZXR1cm4ib2JqZWN0IiE9dHlwZW9mIGV8fG51bGw9PT1lP24udmFsdWU9ZTpuLnZh
bHVlPWkoZSx0LHIpLG59ZnVuY3Rpb24gaShlLHQscil7c3dpdGNoKGVbMF0pe2Nhc2UidmFsdWUi
OnJldHVybiBlWzFdO2Nhc2UiZ2V0IjpyZXR1cm4gbyhlLHQscik7Y2FzZSJzdWJleHByIjpyZXR1
cm4gYShlLHQscik7Y2FzZSJjb25jYXQiOnJldHVybiBzKGUsdCxyKX19ZnVuY3Rpb24gbyhlLHQs
cil7dmFyIG49ZVsxXTtyZXR1cm4gdC5ob29rcy5nZXQodCxyLG4pfWZ1bmN0aW9uIGEoZSxuLGkp
e3ZhciBvPWVbMV0sYT1lWzJdLHM9ZVszXSx1PXQoYSxuLGkpLGw9cihzLG4saSk7cmV0dXJuIG4u
aG9va3Muc3ViZXhwcihuLGksbyx1LGwpfWZ1bmN0aW9uIHMoZSxyLG4pe3ZhciBpPWVbMV0sbz10
KGkscixuKTtyZXR1cm4gci5ob29rcy5jb25jYXQocixvKX1lLmFjY2VwdFBhcmFtcz10LGUuYWNj
ZXB0SGFzaD1yfSksZSgiaHRtbGJhcnMtcnVudGltZS9ob29rcyIsWyJleHBvcnRzIiwiaHRtbGJh
cnMtcnVudGltZS9yZW5kZXIiLCJtb3JwaC1yYW5nZS9tb3JwaC1saXN0IiwiaHRtbGJhcnMtdXRp
bC9vYmplY3QtdXRpbHMiLCJodG1sYmFycy11dGlsL21vcnBoLXV0aWxzIiwiaHRtbGJhcnMtdXRp
bC90ZW1wbGF0ZS11dGlscyJdLGZ1bmN0aW9uKGUsdCxyLG4saSxvKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gYShlKXtyZXR1cm4gbnVsbD09PWU/bnVsbDp7bWV0YTplLm1ldGEsYXJpdHk6ZS5hcml0
eSxyYXc6ZSxyZW5kZXI6ZnVuY3Rpb24ocixuLGksbyl7dmFyIGE9bi5ob29rcy5jcmVhdGVGcmVz
aFNjb3BlKCkscz1pJiZpLmNvbnRleHR1YWxFbGVtZW50LHU9bmV3IHQuUmVuZGVyT3B0aW9ucyhu
dWxsLHIsbyxzKTtyZXR1cm4gdC5kZWZhdWx0KGUsbixhLHUpfX19ZnVuY3Rpb24gcyhlLHQscixu
LGksbyl7aWYoIWUpcmV0dXJue307dmFyIGE9dShlLHQscixuLGksbyk7cmV0dXJue21ldGE6ZS5t
ZXRhLGFyaXR5OmUuYXJpdHkseWllbGQ6YSx5aWVsZEl0ZW06bChlLHQscixuLGksbykscmF3OmUs
cmVuZGVyOmZ1bmN0aW9uKGUsdCl7YSh0LGUpfX19ZnVuY3Rpb24gdShlLHIsbixpLGEscyl7cmV0
dXJuIGZ1bmN0aW9uKHUsbCl7YS5tb3JwaFRvQ2xlYXI9bnVsbCxpLm1vcnBoTGlzdCYmKG8uY2xl
YXJNb3JwaExpc3QoaS5tb3JwaExpc3QsaSxyKSxhLm1vcnBoTGlzdFRvQ2xlYXI9bnVsbCk7dmFy
IGY9bjtpZihpLmxhc3RZaWVsZGVkJiZjKGUsaS5sYXN0WWllbGRlZCkpcmV0dXJuIGkubGFzdFJl
c3VsdC5yZXZhbGlkYXRlV2l0aChyLHZvaWQgMCxsLHUscyk7KHZvaWQgMCE9PWx8fG51bGw9PT1u
fHxlLmFyaXR5KSYmKGY9ci5ob29rcy5jcmVhdGVDaGlsZFNjb3BlKG4pKSxpLmxhc3RZaWVsZGVk
PXtzZWxmOmwsdGVtcGxhdGU6ZSxzaGFkb3dUZW1wbGF0ZTpudWxsfTt2YXIgZD1uZXcgdC5SZW5k
ZXJPcHRpb25zKGksbCx1KTt0LmRlZmF1bHQoZSxyLGYsZCl9fWZ1bmN0aW9uIGwoZSxuLGksbyxh
LHMpe2Z1bmN0aW9uIGwoZSl7Zm9yKHZhciB0PWM7dC5rZXkhPT1lOylmW3Qua2V5XT10LHQ9dC5u
ZXh0TW9ycGg7cmV0dXJuIGM9dC5uZXh0TW9ycGgsdH12YXIgYz1udWxsLGY9e30sZD1vLm1vcnBo
TGlzdDtyZXR1cm4gZCYmKGM9ZC5maXJzdENoaWxkTW9ycGgpLGZ1bmN0aW9uKGQscCxoKXtpZigi
c3RyaW5nIiE9dHlwZW9mIGQpdGhyb3cgbmV3IEVycm9yKCJZb3UgbXVzdCBwcm92aWRlIGEgc3Ry
aW5nIGtleSB3aGVuIGNhbGxpbmcgYHlpZWxkSXRlbWA7IHlvdSBwcm92aWRlZCAiK2QpO2EubW9y
cGhMaXN0VG9DbGVhcj1udWxsLG8ubGFzdFlpZWxkZWQ9bnVsbDt2YXIgbSx2O28ubW9ycGhMaXN0
fHwoby5tb3JwaExpc3Q9bmV3IHIuZGVmYXVsdCxvLm1vcnBoTWFwPXt9LG8uc2V0TW9ycGhMaXN0
KG8ubW9ycGhMaXN0KSksbT1vLm1vcnBoTGlzdCx2PW8ubW9ycGhNYXA7dmFyIGI9YS5oYW5kbGVk
TW9ycGhzLGc9dm9pZCAwO2lmKGQgaW4gYil7dmFyIHk9YS5jb2xsaXNpb25zO3ZvaWQgMD09PXkm
Jih5PWEuY29sbGlzaW9ucz17fSk7dmFyIF89MHx5W2RdO3lbZF09KytfLGc9ZCsiLS16OG1TMmh2
RFcwQS0tIitffWVsc2UgZz1kO2lmKGMmJmMua2V5PT09Zyl1KGUsbixpLGMsYSxzKShwLGgpLGM9
Yy5uZXh0TW9ycGgsYltnXT1jO2Vsc2UgaWYodm9pZCAwIT09dltnXSl7dmFyIHc9dltnXTtnIGlu
IGY/bS5pbnNlcnRCZWZvcmVNb3JwaCh3LGMpOmwoZyksYlt3LmtleV09dyx1KGUsbixpLHcsYSxz
KShwLGgpfWVsc2V7dmFyIHg9dC5jcmVhdGVDaGlsZE1vcnBoKG4uZG9tLG8pO3gua2V5PWcsdltn
XT1iW2ddPXgsbS5pbnNlcnRCZWZvcmVNb3JwaCh4LGMpLHUoZSxuLGkseCxhLHMpKHAsaCl9YS5t
b3JwaExpc3RUb1BydW5lPW0sby5jaGlsZE5vZGVzPW51bGx9fWZ1bmN0aW9uIGMoZSx0KXtyZXR1
cm4hdC5zaGFkb3dUZW1wbGF0ZSYmZT09PXQudGVtcGxhdGV9ZnVuY3Rpb24gZihlLHQscixuLGks
YSl7dmFyIHU9aS5sYXN0UmVzdWx0P2k6bnVsbCxsPW5ldyBvLlJlbmRlclN0YXRlKHUsaS5tb3Jw
aExpc3R8fG51bGwpO3JldHVybnt0ZW1wbGF0ZXM6e3RlbXBsYXRlOnMoZSxyLG4saSxsLGEpLGlu
dmVyc2U6cyh0LHIsbixpLGwsYSl9LHJlbmRlclN0YXRlOmx9fWZ1bmN0aW9uIGQoZSl7cmV0dXJu
e2FyaXR5OmUudGVtcGxhdGUuYXJpdHkseWllbGQ6ZS50ZW1wbGF0ZS55aWVsZCx5aWVsZEl0ZW06
ZS50ZW1wbGF0ZS55aWVsZEl0ZW0seWllbGRJbjplLnRlbXBsYXRlLnlpZWxkSW59fWZ1bmN0aW9u
IHAoZSx0KXtyZXR1cm4gdD9lLmhvb2tzLmNyZWF0ZUNoaWxkU2NvcGUodCk6ZS5ob29rcy5jcmVh
dGVGcmVzaFNjb3BlKCl9ZnVuY3Rpb24gaCgpe3JldHVybntzZWxmOm51bGwsYmxvY2tzOnt9LGxv
Y2Fsczp7fSxsb2NhbFByZXNlbnQ6e319fWZ1bmN0aW9uIG0oZSl7cmV0dXJuIGUuaG9va3MuY3Jl
YXRlRnJlc2hTY29wZSgpfWZ1bmN0aW9uIHYoZSl7dmFyIHQ9T2JqZWN0LmNyZWF0ZShlKTtyZXR1
cm4gdC5sb2NhbHM9T2JqZWN0LmNyZWF0ZShlLmxvY2FscyksdC5sb2NhbFByZXNlbnQ9T2JqZWN0
LmNyZWF0ZShlLmxvY2FsUHJlc2VudCksdC5ibG9ja3M9T2JqZWN0LmNyZWF0ZShlLmJsb2Nrcyks
dH1mdW5jdGlvbiBiKGUsdCxyKXt0LnNlbGY9cn1mdW5jdGlvbiBnKGUsdCxyKXtlLmhvb2tzLmJp
bmRTZWxmKGUsdCxyKX1mdW5jdGlvbiB5KGUsdCxyLG4pe3QubG9jYWxQcmVzZW50W3JdPSEwLHQu
bG9jYWxzW3JdPW59ZnVuY3Rpb24gXyhlLHQscixuKXtlLmhvb2tzLmJpbmRMb2NhbChlLHQscixu
KX1mdW5jdGlvbiB3KGUsdCxyKXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPD0zfHx2b2lkIDA9PT1h
cmd1bWVudHNbM10/ImRlZmF1bHQiOmFyZ3VtZW50c1szXTt0LmJsb2Nrc1tuXT1yfWZ1bmN0aW9u
IHgoZSx0LHIsbixpLG8sYSxzLHUpe0UoZSx0LHIsbixpLG8sYSxzLHUpfHxrKGUsdCxyLG4saSxv
LGEscyx1KX1mdW5jdGlvbiBrKGUsdCxyLG4saSxvLGEscyx1KXtDKGUsdCxyLGEscyxudWxsLHUs
ZnVuY3Rpb24oYSl7dmFyIHM9dC5ob29rcy5sb29rdXBIZWxwZXIodCxyLG4pO3JldHVybiB0Lmhv
b2tzLmludm9rZUhlbHBlcihlLHQscix1LGksbyxzLGEudGVtcGxhdGVzLGQoYS50ZW1wbGF0ZXMp
KX0pfWZ1bmN0aW9uIEMoZSx0LHIsbixpLGEscyx1KXt2YXIgbD1mKG4saSx0LHIsZSxzKTtvLnJl
bmRlckFuZENsZWFudXAoZSx0LGwsYSx1KX1mdW5jdGlvbiBFKGUsdCxyLG4saSxvLGEscyx1KXtp
ZighbilyZXR1cm4hMTt2YXIgbD10Lmhvb2tzLmNsYXNzaWZ5KHQscixuKTtpZihsKXtzd2l0Y2go
bCl7Y2FzZSJjb21wb25lbnQiOnQuaG9va3MuY29tcG9uZW50KGUsdCxyLG4saSxvLHtkZWZhdWx0
OmEsaW52ZXJzZTpzfSx1KTticmVhaztjYXNlImlubGluZSI6dC5ob29rcy5pbmxpbmUoZSx0LHIs
bixpLG8sdSk7YnJlYWs7Y2FzZSJibG9jayI6dC5ob29rcy5ibG9jayhlLHQscixuLGksbyxhLHMs
dSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkludGVybmFsIEhUTUxCYXJzIHJlZGly
ZWN0aW9uIHRvICIrbCsiIG5vdCBzdXBwb3J0ZWQiKX1yZXR1cm4hMH1yZXR1cm4hIU8obixlLHQs
cixpLG8sYSxzLHUpfWZ1bmN0aW9uIE8oZSx0LHIsYSxzLHUsbCxjLGYpe3ZhciBkPXIuaG9va3Mu
a2V5d29yZHNbZV07aWYoIWQpcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGQpcmV0dXJu
IGQodCxyLGEscyx1LGwsYyxmKTtkLndpbGxSZW5kZXImJmQud2lsbFJlbmRlcih0LHIpO3ZhciBw
LGg7ZC5zZXR1cFN0YXRlJiYocD1uLnNoYWxsb3dDb3B5KHQuZ2V0U3RhdGUoKSksaD10LnNldFN0
YXRlKGQuc2V0dXBTdGF0ZShwLHIsYSxzLHUpKSksZC5jaGlsZEVudiYmKHI9ZC5jaGlsZEVudih0
LmdldFN0YXRlKCksciksdC5idWlsZENoaWxkRW52PWQuY2hpbGRFbnYpO3ZhciBtPSF0LnJlbmRl
cmVkO2lmKGQuaXNFbXB0eSl7dmFyIHY9ZC5pc0VtcHR5KHQuZ2V0U3RhdGUoKSxyLGEscyx1KTtp
Zih2KXJldHVybiBtfHxvLmNsZWFyTW9ycGgodCxyLCExKSwhMH1pZihtKXJldHVybiBkLnJlbmRl
ciYmZC5yZW5kZXIodCxyLGEscyx1LGwsYyxmKSx0LnJlbmRlcmVkPSEwLCEwO3ZhciBiO2lmKGI9
ZC5pc1N0YWJsZT9kLmlzU3RhYmxlKHAsaCk6VChwLGgpKXtpZihkLnJlcmVuZGVyKXt2YXIgZz1k
LnJlcmVuZGVyKHQscixhLHMsdSxsLGMsZik7cj1nfHxyfXJldHVybiBpLnZhbGlkYXRlQ2hpbGRN
b3JwaHMocix0LGYpLCEwfXJldHVybiBvLmNsZWFyTW9ycGgodCxyLCExKSxkLnJlbmRlcj8oZC5y
ZW5kZXIodCxyLGEscyx1LGwsYyxmKSx0LnJlbmRlcmVkPSEwLCEwKTp2b2lkIDB9ZnVuY3Rpb24g
VChlLHQpe2lmKG4ua2V5TGVuZ3RoKGUpIT09bi5rZXlMZW5ndGgodCkpcmV0dXJuITE7Zm9yKHZh
ciByIGluIGUpaWYoZVtyXSE9PXRbcl0pcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gTigpe31m
dW5jdGlvbiBTKGUsdCxyLG4sbyxhLHMpe2lmKCFFKGUsdCxyLG4sbyxhLG51bGwsbnVsbCxzKSl7
dmFyIHU9dm9pZCAwLGw9dm9pZCAwO2lmKGUubGlua2VkUmVzdWx0KXU9dC5ob29rcy5nZXRWYWx1
ZShlLmxpbmtlZFJlc3VsdCksbD0hMDtlbHNle3ZhciBjPWYobnVsbCxudWxsLHQscixlKSxwPXQu
aG9va3MubG9va3VwSGVscGVyKHQscixuKSxoPXQuaG9va3MuaW52b2tlSGVscGVyKGUsdCxyLHMs
byxhLHAsYy50ZW1wbGF0ZXMsZChjLnRlbXBsYXRlcykpO2gmJmgubGluayYmKGUubGlua2VkUmVz
dWx0PWgudmFsdWUsaS5saW5rUGFyYW1zKHQscixlLCJAY29udGVudC1oZWxwZXIiLFtlLmxpbmtl
ZFJlc3VsdF0sbnVsbCkpLGgmJiJ2YWx1ZSJpbiBoJiYodT10Lmhvb2tzLmdldFZhbHVlKGgudmFs
dWUpLGw9ITApfWwmJihlLmxhc3RWYWx1ZSE9PXUmJmUuc2V0Q29udGVudCh1KSxlLmxhc3RWYWx1
ZT11KX19ZnVuY3Rpb24gQShlLHQscixuLGksbyxhLHMsdSl7TyhlLHQscixuLGksbyxhLHMsdSl9
ZnVuY3Rpb24gUChlLHQscixuLGksbyxhLHMsdSl7dmFyIGw9aih0LGkpLGM9Uih0LG8pO3JldHVy
bnt2YWx1ZTphLmNhbGwodSxsLGMscyl9fWZ1bmN0aW9uIGooZSx0KXtmb3IodmFyIHI9bmV3IEFy
cmF5KHQubGVuZ3RoKSxuPTAsaT10Lmxlbmd0aDtuPGk7bisrKXJbbl09ZS5ob29rcy5nZXRDZWxs
T3JWYWx1ZSh0W25dKTtyZXR1cm4gcn1mdW5jdGlvbiBSKGUsdCl7dmFyIHI9e307Zm9yKHZhciBu
IGluIHQpcltuXT1lLmhvb2tzLmdldENlbGxPclZhbHVlKHRbbl0pO3JldHVybiByfWZ1bmN0aW9u
IEwoKXtyZXR1cm4gbnVsbH1mdW5jdGlvbiBEKGUsdCxyLG4pe3ZhciBpPXQucGFydGlhbHNbbl07
cmV0dXJuIGkucmVuZGVyKHIuc2VsZix0LHt9KS5mcmFnbWVudH1mdW5jdGlvbiBNKGUsdCxyLG4s
aSxvKXtFKGUsdCxyLG4sW10se30sbnVsbCxudWxsLG8pfHwoaT10Lmhvb2tzLmdldFZhbHVlKGkp
LGUubGFzdFZhbHVlIT09aSYmZS5zZXRDb250ZW50KGkpLGUubGFzdFZhbHVlPWkpfWZ1bmN0aW9u
IEkoZSx0LHIsbixpLG8sYSl7aWYoIUUoZSx0LHIsbixpLG8sbnVsbCxudWxsLGEpKXt2YXIgcz10
Lmhvb2tzLmxvb2t1cEhlbHBlcih0LHIsbik7cyYmdC5ob29rcy5pbnZva2VIZWxwZXIobnVsbCx0
LHIsbnVsbCxpLG8scyx7ZWxlbWVudDplLmVsZW1lbnR9KX19ZnVuY3Rpb24gRihlLHQscixuLGkp
e2k9dC5ob29rcy5nZXRWYWx1ZShpKSxlLmxhc3RWYWx1ZSE9PWkmJmUuc2V0Q29udGVudChpKSxl
Lmxhc3RWYWx1ZT1pfWZ1bmN0aW9uIEgoZSx0LHIsbixpKXt2YXIgbz1lLmhvb2tzLmxvb2t1cEhl
bHBlcihlLHQsciksYT1lLmhvb2tzLmludm9rZUhlbHBlcihudWxsLGUsdCxudWxsLG4saSxvLHt9
KTtpZihhJiYidmFsdWUiaW4gYSlyZXR1cm4gZS5ob29rcy5nZXRWYWx1ZShhLnZhbHVlKX1mdW5j
dGlvbiBWKGUsdCxyKXtpZigiIj09PXIpcmV0dXJuIHQuc2VsZjtmb3IodmFyIG49ci5zcGxpdCgi
LiIpLGk9ZS5ob29rcy5nZXRSb290KHQsblswXSlbMF0sbz0xO288bi5sZW5ndGgmJmk7bysrKWk9
ZS5ob29rcy5nZXRDaGlsZChpLG5bb10pO3JldHVybiBpfWZ1bmN0aW9uIHEoZSx0KXtyZXR1cm4g
ZS5sb2NhbFByZXNlbnRbdF0/W2UubG9jYWxzW3RdXTplLnNlbGY/W2Uuc2VsZlt0XV06W3ZvaWQg
MF19ZnVuY3Rpb24geihlLHQpe3JldHVybiBlLmJsb2Nrc1t0XX1mdW5jdGlvbiBCKGUsdCl7cmV0
dXJuIGVbdF19ZnVuY3Rpb24gVShlKXtyZXR1cm4gZX1mdW5jdGlvbiBXKGUpe3JldHVybiBlfWZ1
bmN0aW9uICQoZSx0LHIsbixpLG8sYSxzKXtyZXR1cm4gdC5ob29rcy5oYXNIZWxwZXIodCxyLG4p
P3QuaG9va3MuYmxvY2soZSx0LHIsbixpLG8sYS5kZWZhdWx0LGEuaW52ZXJzZSxzKTp2b2lkIFEo
ZSx0LHIsbixvLGEuZGVmYXVsdCl9ZnVuY3Rpb24gSyhlLHQpe2Zvcih2YXIgcj0iIixuPTAsaT10
Lmxlbmd0aDtuPGk7bisrKXIrPWUuaG9va3MuZ2V0VmFsdWUodFtuXSk7cmV0dXJuIHJ9ZnVuY3Rp
b24gUShlLHIsbixpLG8sYSl7dmFyIHM9ci5kb20uY3JlYXRlRWxlbWVudChpKTtmb3IodmFyIHUg
aW4gbylzLnNldEF0dHJpYnV0ZSh1LHIuaG9va3MuZ2V0VmFsdWUob1t1XSkpO3ZhciBsPXQuZGVm
YXVsdChhLHIsbix7fSkuZnJhZ21lbnQ7cy5hcHBlbmRDaGlsZChsKSxlLnNldE5vZGUocyl9ZnVu
Y3Rpb24gRyhlLHQscil7cmV0dXJuIHZvaWQgMCE9PWUuaGVscGVyc1tyXX1mdW5jdGlvbiBZKGUs
dCxyKXtyZXR1cm4gZS5oZWxwZXJzW3JdfWZ1bmN0aW9uIFgoKXt9ZnVuY3Rpb24gSihlLHQpe2Uu
aG9va3MuYmluZFNjb3BlKGUsdCl9ZS53cmFwPWEsZS53cmFwRm9ySGVscGVyPXMsZS5jcmVhdGVT
Y29wZT1wLGUuY3JlYXRlRnJlc2hTY29wZT1oLGUuYmluZFNoYWRvd1Njb3BlPW0sZS5jcmVhdGVD
aGlsZFNjb3BlPXYsZS5iaW5kU2VsZj1iLGUudXBkYXRlU2VsZj1nLGUuYmluZExvY2FsPXksZS51
cGRhdGVMb2NhbD1fLGUuYmluZEJsb2NrPXcsZS5ibG9jaz14LGUuY29udGludWVCbG9jaz1rLGUu
aG9zdEJsb2NrPUMsZS5oYW5kbGVSZWRpcmVjdD1FLGUuaGFuZGxlS2V5d29yZD1PLGUubGlua1Jl
bmRlck5vZGU9TixlLmlubGluZT1TLGUua2V5d29yZD1BLGUuaW52b2tlSGVscGVyPVAsZS5jbGFz
c2lmeT1MLGUucGFydGlhbD1ELGUucmFuZ2U9TSxlLmVsZW1lbnQ9SSxlLmF0dHJpYnV0ZT1GLGUu
c3ViZXhwcj1ILGUuZ2V0PVYsZS5nZXRSb290PXEsZS5nZXRCbG9jaz16LGUuZ2V0Q2hpbGQ9Qixl
LmdldFZhbHVlPVUsZS5nZXRDZWxsT3JWYWx1ZT1XLGUuY29tcG9uZW50PSQsZS5jb25jYXQ9Syxl
Lmhhc0hlbHBlcj1HLGUubG9va3VwSGVscGVyPVksZS5iaW5kU2NvcGU9WCxlLnVwZGF0ZVNjb3Bl
PUo7dmFyIFo9e3BhcnRpYWw6ZnVuY3Rpb24oZSx0LHIsbil7dmFyIGk9dC5ob29rcy5wYXJ0aWFs
KGUsdCxyLG5bMF0pO3JldHVybiBlLnNldENvbnRlbnQoaSksITB9LHlpZWxkOmZ1bmN0aW9uKGUs
dCxyLG4saSxvLGEscyl7dmFyIHU9dC5ob29rcy5nZXRWYWx1ZShpLnRvKXx8ImRlZmF1bHQiLGw9
dC5ob29rcy5nZXRCbG9jayhyLHUpO3JldHVybiBsJiZsLmludm9rZSh0LG4saS5zZWxmLGUscixz
KSwhMH0saGFzQmxvY2s6ZnVuY3Rpb24oZSx0LHIsbil7dmFyIGk9dC5ob29rcy5nZXRWYWx1ZShu
WzBdKXx8ImRlZmF1bHQiO3JldHVybiEhdC5ob29rcy5nZXRCbG9jayhyLGkpfSxoYXNCbG9ja1Bh
cmFtczpmdW5jdGlvbihlLHQscixuKXt2YXIgaT10Lmhvb2tzLmdldFZhbHVlKG5bMF0pfHwiZGVm
YXVsdCIsbz10Lmhvb2tzLmdldEJsb2NrKHIsaSk7cmV0dXJuISghb3x8IW8uYXJpdHkpfX07ZS5r
ZXl3b3Jkcz1aLGUuZGVmYXVsdD17YmluZExvY2FsOnksYmluZFNlbGY6YixiaW5kU2NvcGU6WCxj
bGFzc2lmeTpMLGNvbXBvbmVudDokLGNvbmNhdDpLLGNyZWF0ZUZyZXNoU2NvcGU6aCxnZXRDaGls
ZDpCLGdldFJvb3Q6cSxnZXRCbG9jazp6LGdldFZhbHVlOlUsZ2V0Q2VsbE9yVmFsdWU6VyxrZXl3
b3JkczpaLGxpbmtSZW5kZXJOb2RlOk4scGFydGlhbDpELHN1YmV4cHI6SCxiaW5kQmxvY2s6dyxi
aW5kU2hhZG93U2NvcGU6bSx1cGRhdGVMb2NhbDpfLHVwZGF0ZVNlbGY6Zyx1cGRhdGVTY29wZTpK
LGNyZWF0ZUNoaWxkU2NvcGU6dixoYXNIZWxwZXI6Ryxsb29rdXBIZWxwZXI6WSxpbnZva2VIZWxw
ZXI6UCxjbGVhbnVwUmVuZGVyTm9kZTpudWxsLGRlc3Ryb3lSZW5kZXJOb2RlOm51bGwsd2lsbENs
ZWFudXBUcmVlOm51bGwsZGlkQ2xlYW51cFRyZWU6bnVsbCx3aWxsUmVuZGVyTm9kZTpudWxsLGRp
ZFJlbmRlck5vZGU6bnVsbCxhdHRyaWJ1dGU6RixibG9jazp4LGNyZWF0ZVNjb3BlOnAsZWxlbWVu
dDpJLGdldDpWLGlubGluZTpTLHJhbmdlOk0sa2V5d29yZDpBfX0pLGUoImh0bWxiYXJzLXJ1bnRp
bWUvbW9ycGgiLFsiZXhwb3J0cyIsIm1vcnBoLXJhbmdlIl0sZnVuY3Rpb24oZSx0KXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gcihlLHQpe3RoaXMuc3VwZXIkY29uc3RydWN0b3IoZSx0KSx0aGlzLl9z
dGF0ZT12b2lkIDAsdGhpcy5vd25lck5vZGU9bnVsbCx0aGlzLmlzRGlydHk9ITEsdGhpcy5pc1N1
YnRyZWVEaXJ0eT0hMSx0aGlzLmxhc3RZaWVsZGVkPW51bGwsdGhpcy5sYXN0UmVzdWx0PW51bGws
dGhpcy5sYXN0VmFsdWU9bnVsbCwKK3RoaXMuYnVpbGRDaGlsZEVudj1udWxsLHRoaXMubW9ycGhM
aXN0PW51bGwsdGhpcy5tb3JwaE1hcD1udWxsLHRoaXMua2V5PW51bGwsdGhpcy5saW5rZWRQYXJh
bXM9bnVsbCx0aGlzLmxpbmtlZFJlc3VsdD1udWxsLHRoaXMuY2hpbGROb2Rlcz1udWxsLHRoaXMu
cmVuZGVyZWQ9ITEsdGhpcy5ndWlkPSJyYW5nZSIrbisrLHRoaXMuc2Vlbj0hMX12YXIgbj0xO3Iu
ZW1wdHk9ZnVuY3Rpb24oZSx0KXt2YXIgbj1uZXcgcihlLHQpO3JldHVybiBuLmNsZWFyKCksbn0s
ci5jcmVhdGU9ZnVuY3Rpb24oZSx0LG4pe3ZhciBpPW5ldyByKGUsdCk7cmV0dXJuIGkuc2V0Tm9k
ZShuKSxpfSxyLmF0dGFjaD1mdW5jdGlvbihlLHQsbixpKXt2YXIgbz1uZXcgcihlLHQpO3JldHVy
biBvLnNldFJhbmdlKG4saSksb307dmFyIGk9ci5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0LmRl
ZmF1bHQucHJvdG90eXBlKTtpLmNvbnN0cnVjdG9yPXIsaS5zdXBlciRjb25zdHJ1Y3Rvcj10LmRl
ZmF1bHQsaS5nZXRTdGF0ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdGF0ZXx8KHRoaXMuX3N0
YXRlPXt9KSx0aGlzLl9zdGF0ZX0saS5zZXRTdGF0ZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5f
c3RhdGU9ZX0sZS5kZWZhdWx0PXJ9KSxlKCJodG1sYmFycy1ydW50aW1lL25vZGUtdmlzaXRvciIs
WyJleHBvcnRzIiwiaHRtbGJhcnMtdXRpbC9tb3JwaC11dGlscyIsImh0bWxiYXJzLXJ1bnRpbWUv
ZXhwcmVzc2lvbi12aXNpdG9yIl0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biBuKGUsbixpLG8sYSxzKXtyZXR1cm4gaS5saW5rZWRQYXJhbXM/KGE9aS5saW5rZWRQYXJhbXMu
cGFyYW1zLHM9aS5saW5rZWRQYXJhbXMuaGFzaCk6KGE9YSYmci5hY2NlcHRQYXJhbXMoYSxlLG4p
LHM9cyYmci5hY2NlcHRIYXNoKHMsZSxuKSksdC5saW5rUGFyYW1zKGUsbixpLG8sYSxzKSxbYSxz
XX1mdW5jdGlvbiBpKGUscixuLGkpe3ZhciBvPXIuaXNEaXJ0eSxzPXIuaXNTdWJ0cmVlRGlydHks
dT1lO3MmJihuPWEpLG98fHM/aShuKTooci5idWlsZENoaWxkRW52JiYodT1yLmJ1aWxkQ2hpbGRF
bnYoci5nZXRTdGF0ZSgpLHUpKSx0LnZhbGlkYXRlQ2hpbGRNb3JwaHModSxyLG4pKX1mdW5jdGlv
biBvKGUsdCxyKXtyZXR1cm4gdm9pZCAwIT09ZS5ob29rcy5rZXl3b3Jkc1tyXXx8ZS5ob29rcy5o
YXNIZWxwZXIoZSx0LHIpfXZhciBhPXtibG9jazpmdW5jdGlvbihlLHQscixpLG8sYSl7dmFyIHM9
ZVsxXSx1PWVbMl0sbD1lWzNdLGM9ZVs0XSxmPWVbNV0sZD1uKHIsaSx0LHMsdSxsKTt0LmlzRGly
dHk9dC5pc1N1YnRyZWVEaXJ0eT0hMSxyLmhvb2tzLmJsb2NrKHQscixpLHMsZFswXSxkWzFdLG51
bGw9PT1jP251bGw6by50ZW1wbGF0ZXNbY10sbnVsbD09PWY/bnVsbDpvLnRlbXBsYXRlc1tmXSxh
KX0saW5saW5lOmZ1bmN0aW9uKGUsdCxyLGksbyl7dmFyIGE9ZVsxXSxzPWVbMl0sdT1lWzNdLGw9
bihyLGksdCxhLHMsdSk7dC5pc0RpcnR5PXQuaXNTdWJ0cmVlRGlydHk9ITEsci5ob29rcy5pbmxp
bmUodCxyLGksYSxsWzBdLGxbMV0sbyl9LGNvbnRlbnQ6ZnVuY3Rpb24oZSxyLG4saSxhKXt2YXIg
cz1lWzFdO2lmKHIuaXNEaXJ0eT1yLmlzU3VidHJlZURpcnR5PSExLG8obixpLHMpKXJldHVybiBu
Lmhvb2tzLmlubGluZShyLG4saSxzLFtdLHt9LGEpLHZvaWQoci5saW5rZWRSZXN1bHQmJnQubGlu
a1BhcmFtcyhuLGksciwiQGNvbnRlbnQtaGVscGVyIixbci5saW5rZWRSZXN1bHRdLG51bGwpKTt2
YXIgdT12b2lkIDA7dT1yLmxpbmtlZFBhcmFtcz9yLmxpbmtlZFBhcmFtcy5wYXJhbXM6W24uaG9v
a3MuZ2V0KG4saSxzKV0sdC5saW5rUGFyYW1zKG4saSxyLCJAcmFuZ2UiLHUsbnVsbCksbi5ob29r
cy5yYW5nZShyLG4saSxzLHVbMF0sYSl9LGVsZW1lbnQ6ZnVuY3Rpb24oZSx0LHIsaSxvKXt2YXIg
YT1lWzFdLHM9ZVsyXSx1PWVbM10sbD1uKHIsaSx0LGEscyx1KTt0LmlzRGlydHk9dC5pc1N1YnRy
ZWVEaXJ0eT0hMSxyLmhvb2tzLmVsZW1lbnQodCxyLGksYSxsWzBdLGxbMV0sbyl9LGF0dHJpYnV0
ZTpmdW5jdGlvbihlLHQscixpKXt2YXIgbz1lWzFdLGE9ZVsyXSxzPW4ocixpLHQsIkBhdHRyaWJ1
dGUiLFthXSxudWxsKTt0LmlzRGlydHk9dC5pc1N1YnRyZWVEaXJ0eT0hMSxyLmhvb2tzLmF0dHJp
YnV0ZSh0LHIsaSxvLHNbMF1bMF0pfSxjb21wb25lbnQ6ZnVuY3Rpb24oZSx0LHIsaSxvLGEpe3Zh
ciBzPWVbMV0sdT1lWzJdLGw9ZVszXSxjPWVbNF0sZj1uKHIsaSx0LHMsW10sdSksZD17ZGVmYXVs
dDpvLnRlbXBsYXRlc1tsXSxpbnZlcnNlOm8udGVtcGxhdGVzW2NdfTt0LmlzRGlydHk9dC5pc1N1
YnRyZWVEaXJ0eT0hMSxyLmhvb2tzLmNvbXBvbmVudCh0LHIsaSxzLGZbMF0sZlsxXSxkLGEpfSxh
dHRyaWJ1dGVzOmZ1bmN0aW9uKGUsdCxyLG4saSxvKXt2YXIgYT1lWzFdO3IuaG9va3MuYXR0cmli
dXRlcyh0LHIsbixhLGksbyl9fTtlLkFsd2F5c0RpcnR5VmlzaXRvcj1hLGUuZGVmYXVsdD17Ymxv
Y2s6ZnVuY3Rpb24oZSx0LHIsbixvLHMpe2kocix0LHMsZnVuY3Rpb24oaSl7YS5ibG9jayhlLHQs
cixuLG8saSl9KX0saW5saW5lOmZ1bmN0aW9uKGUsdCxyLG4sbyl7aShyLHQsbyxmdW5jdGlvbihp
KXthLmlubGluZShlLHQscixuLGkpfSl9LGNvbnRlbnQ6ZnVuY3Rpb24oZSx0LHIsbixvKXtpKHIs
dCxvLGZ1bmN0aW9uKGkpe2EuY29udGVudChlLHQscixuLGkpfSl9LGVsZW1lbnQ6ZnVuY3Rpb24o
ZSx0LHIsbixvLHMpe2kocix0LHMsZnVuY3Rpb24oaSl7YS5lbGVtZW50KGUsdCxyLG4sbyxpKX0p
fSxhdHRyaWJ1dGU6ZnVuY3Rpb24oZSx0LHIsbixvKXtpKHIsdCxudWxsLGZ1bmN0aW9uKCl7YS5h
dHRyaWJ1dGUoZSx0LHIsbixvKX0pfSxjb21wb25lbnQ6ZnVuY3Rpb24oZSx0LHIsbixvLHMpe2ko
cix0LHMsZnVuY3Rpb24oaSl7YS5jb21wb25lbnQoZSx0LHIsbixvLGkpfSl9LGF0dHJpYnV0ZXM6
ZnVuY3Rpb24oZSx0LHIsbixpLG8pe2EuYXR0cmlidXRlcyhlLHQscixuLGksbyl9fX0pLGUoImh0
bWxiYXJzLXJ1bnRpbWUvcmVuZGVyIixbImV4cG9ydHMiLCJodG1sYmFycy11dGlsL21vcnBoLXV0
aWxzIiwiaHRtbGJhcnMtcnVudGltZS9ub2RlLXZpc2l0b3IiLCJodG1sYmFycy1ydW50aW1lL21v
cnBoIiwiaHRtbGJhcnMtdXRpbC90ZW1wbGF0ZS11dGlscyIsImh0bWxiYXJzLXV0aWwvdm9pZC10
YWctbmFtZXMiXSxmdW5jdGlvbihlLHQscixuLGksbyl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGEo
ZSx0LHIsbil7dmFyIGksbz10LmRvbTtuJiYobi5yZW5kZXJOb2RlP2k9bi5yZW5kZXJOb2RlLmNv
bnRleHR1YWxFbGVtZW50Om4uY29udGV4dHVhbEVsZW1lbnQmJihpPW4uY29udGV4dHVhbEVsZW1l
bnQpKSxvLmRldGVjdE5hbWVzcGFjZShpKTt2YXIgYT11LmJ1aWxkKHQscixlLG4saSk7cmV0dXJu
IGEucmVuZGVyKCksYX1mdW5jdGlvbiBzKGUsdCxyLG4pe3RoaXMucmVuZGVyTm9kZT1lfHxudWxs
LHRoaXMuc2VsZj10LHRoaXMuYmxvY2tBcmd1bWVudHM9cnx8bnVsbCx0aGlzLmNvbnRleHR1YWxF
bGVtZW50PW58fG51bGx9ZnVuY3Rpb24gdShlLHQscixuLGksbyxhLHMsdSl7dGhpcy5yb290PW4s
dGhpcy5mcmFnbWVudD1hLHRoaXMubm9kZXM9byx0aGlzLnRlbXBsYXRlPXMsdGhpcy5zdGF0ZW1l
bnRzPXMuc3RhdGVtZW50cy5zbGljZSgpLHRoaXMuZW52PWUsdGhpcy5zY29wZT10LHRoaXMuc2hv
dWxkU2V0Q29udGVudD11LHZvaWQgMCE9PXIuc2VsZiYmdGhpcy5iaW5kU2VsZihyLnNlbGYpLHZv
aWQgMCE9PXIuYmxvY2tBcmd1bWVudHMmJnRoaXMuYmluZExvY2FscyhyLmJsb2NrQXJndW1lbnRz
KSx0aGlzLmluaXRpYWxpemVOb2RlcyhpKX1mdW5jdGlvbiBsKGUsdCxyKXt2YXIgbj1bXTtmb3Io
dmFyIGkgaW4gdCkic3RyaW5nIiE9dHlwZW9mIHRbaV0mJm4ucHVzaChbImF0dHJpYnV0ZSIsaSx0
W2ldXSk7dmFyIGE9cnx8by5kZWZhdWx0W2VdO2F8fG4ucHVzaChbImNvbnRlbnQiLCJ5aWVsZCJd
KTt2YXIgcz17YXJpdHk6MCxjYWNoZWRGcmFnbWVudDpudWxsLGhhc1JlbmRlcmVkOiExLGJ1aWxk
RnJhZ21lbnQ6ZnVuY3Rpb24ocil7dmFyIG49ci5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7InN2
ZyI9PT1lJiZyLnNldE5hbWVzcGFjZShoKTt2YXIgaT1yLmNyZWF0ZUVsZW1lbnQoZSk7Zm9yKHZh
ciBvIGluIHQpInN0cmluZyI9PXR5cGVvZiB0W29dJiZyLnNldEF0dHJpYnV0ZShpLG8sdFtvXSk7
aWYoIWEpe3ZhciBzPXIuY3JlYXRlQ29tbWVudCgiIik7ci5hcHBlbmRDaGlsZChpLHMpfXJldHVy
biByLmFwcGVuZENoaWxkKG4saSksbn0sYnVpbGRSZW5kZXJOb2RlczpmdW5jdGlvbihlLHIpe3Zh
ciBuPWUuY2hpbGRBdChyLFswXSksaT1bXTtmb3IodmFyIG8gaW4gdCkic3RyaW5nIiE9dHlwZW9m
IHRbb10mJmkucHVzaChlLmNyZWF0ZUF0dHJNb3JwaChuLG8pKTtyZXR1cm4gYXx8aS5wdXNoKGUu
Y3JlYXRlTW9ycGhBdChuLDAsMCkpLGl9LHN0YXRlbWVudHM6bixsb2NhbHM6W10sdGVtcGxhdGVz
OltdfTtyZXR1cm4gc31mdW5jdGlvbiBjKGUpe3ZhciB0PVtdO2Zvcih2YXIgciBpbiBlKSJzdHJp
bmciIT10eXBlb2YgZVtyXSYmdC5wdXNoKFsiYXR0cmlidXRlIixyLGVbcl1dKTt2YXIgbj17YXJp
dHk6MCxjYWNoZWRGcmFnbWVudDpudWxsLGhhc1JlbmRlcmVkOiExLGJ1aWxkRnJhZ21lbnQ6ZnVu
Y3Rpb24odCl7dmFyIHI9dGhpcy5lbGVtZW50OyJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI9
PT1yLm5hbWVzcGFjZVVSSSYmdC5zZXROYW1lc3BhY2UoaCk7Zm9yKHZhciBuIGluIGUpInN0cmlu
ZyI9PXR5cGVvZiBlW25dJiZ0LnNldEF0dHJpYnV0ZShyLG4sZVtuXSk7cmV0dXJuIHJ9LGJ1aWxk
UmVuZGVyTm9kZXM6ZnVuY3Rpb24odCl7dmFyIHI9dGhpcy5lbGVtZW50LG49W107Zm9yKHZhciBp
IGluIGUpInN0cmluZyIhPXR5cGVvZiBlW2ldJiZuLnB1c2godC5jcmVhdGVBdHRyTW9ycGgocixp
KSk7cmV0dXJuIG59LHN0YXRlbWVudHM6dCxsb2NhbHM6W10sdGVtcGxhdGVzOltdLGVsZW1lbnQ6
bnVsbH07cmV0dXJuIG59ZnVuY3Rpb24gZihlLHQpe2Uub3duZXJOb2RlPXR9ZnVuY3Rpb24gZChl
LHQscil7dmFyIGk9bi5kZWZhdWx0LmVtcHR5KGUscnx8dC5jb250ZXh0dWFsRWxlbWVudCk7cmV0
dXJuIGYoaSx0Lm93bmVyTm9kZSksaX1mdW5jdGlvbiBwKGUsdCl7dmFyIHIsbj10LmRvbTtyZXR1
cm4gdC51c2VGcmFnbWVudENhY2hlJiZuLmNhbkNsb25lPyhudWxsPT09ZS5jYWNoZWRGcmFnbWVu
dCYmKHI9ZS5idWlsZEZyYWdtZW50KG4pLGUuaGFzUmVuZGVyZWQ/ZS5jYWNoZWRGcmFnbWVudD1y
OmUuaGFzUmVuZGVyZWQ9ITApLGUuY2FjaGVkRnJhZ21lbnQmJihyPW4uY2xvbmVOb2RlKGUuY2Fj
aGVkRnJhZ21lbnQsITApKSk6cnx8KHI9ZS5idWlsZEZyYWdtZW50KG4pKSxyfWUuZGVmYXVsdD1h
LGUuUmVuZGVyT3B0aW9ucz1zLGUubWFudWFsRWxlbWVudD1sLGUuYXR0YWNoQXR0cmlidXRlcz1j
LGUuY3JlYXRlQ2hpbGRNb3JwaD1kLGUuZ2V0Q2FjaGVkRnJhZ21lbnQ9cDt2YXIgaD0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciO3UuYnVpbGQ9ZnVuY3Rpb24oZSxyLG4sbyxhKXt2YXIgcyxs
LGMsZj1lLmRvbSxkPXAobixlKSxoPW4uYnVpbGRSZW5kZXJOb2RlcyhmLGQsYSk7cmV0dXJuIG8m
Jm8ucmVuZGVyTm9kZT8ocz1vLnJlbmRlck5vZGUsbD1zLm93bmVyTm9kZSxjPSEwKToocz1mLmNy
ZWF0ZU1vcnBoKG51bGwsZC5maXJzdENoaWxkLGQubGFzdENoaWxkLGEpLGw9cyxzLm93bmVyTm9k
ZT1sLGM9ITEpLHMuY2hpbGROb2RlcyYmdC52aXNpdENoaWxkcmVuKHMuY2hpbGROb2RlcyxmdW5j
dGlvbih0KXtpLmNsZWFyTW9ycGgodCxlLCEwKX0pLHMuY2hpbGROb2Rlcz1oLG5ldyB1KGUscixv
LHMsbCxoLGQsbixjKX0sdS5wcm90b3R5cGUuaW5pdGlhbGl6ZU5vZGVzPWZ1bmN0aW9uKGUpe2Zv
cih2YXIgdD10aGlzLnJvb3QuY2hpbGROb2RlcyxyPTAsbj10Lmxlbmd0aDtyPG47cisrKXRbcl0u
b3duZXJOb2RlPWV9LHUucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3RoaXMucm9vdC5sYXN0
UmVzdWx0PXRoaXMsdGhpcy5yb290LnJlbmRlcmVkPSEwLHRoaXMucG9wdWxhdGVOb2RlcyhyLkFs
d2F5c0RpcnR5VmlzaXRvciksdGhpcy5zaG91bGRTZXRDb250ZW50JiZ0aGlzLnJvb3Quc2V0Q29u
dGVudCYmdGhpcy5yb290LnNldENvbnRlbnQodGhpcy5mcmFnbWVudCl9LHUucHJvdG90eXBlLmRp
cnR5PWZ1bmN0aW9uKCl7dC52aXNpdENoaWxkcmVuKFt0aGlzLnJvb3RdLGZ1bmN0aW9uKGUpe2Uu
aXNEaXJ0eT0hMH0pfSx1LnByb3RvdHlwZS5yZXZhbGlkYXRlPWZ1bmN0aW9uKGUsdCxuLGkpe3Ro
aXMucmV2YWxpZGF0ZVdpdGgoZSxpLHQsbixyLmRlZmF1bHQpfSx1LnByb3RvdHlwZS5yZXJlbmRl
cj1mdW5jdGlvbihlLHQsbixpKXt0aGlzLnJldmFsaWRhdGVXaXRoKGUsaSx0LG4sci5BbHdheXNE
aXJ0eVZpc2l0b3IpfSx1LnByb3RvdHlwZS5yZXZhbGlkYXRlV2l0aD1mdW5jdGlvbihlLHQscixu
LGkpe3ZvaWQgMCE9PWUmJih0aGlzLmVudj1lKSx2b2lkIDAhPT10JiYodGhpcy5zY29wZT10KSx0
aGlzLnVwZGF0ZVNjb3BlKCksdm9pZCAwIT09ciYmdGhpcy51cGRhdGVTZWxmKHIpLHZvaWQgMCE9
PW4mJnRoaXMudXBkYXRlTG9jYWxzKG4pLHRoaXMucG9wdWxhdGVOb2RlcyhpKX0sdS5wcm90b3R5
cGUuZGVzdHJveT1mdW5jdGlvbigpe3ZhciBlPXRoaXMucm9vdDtpLmNsZWFyTW9ycGgoZSx0aGlz
LmVudiwhMCl9LHUucHJvdG90eXBlLnBvcHVsYXRlTm9kZXM9ZnVuY3Rpb24oZSl7dmFyIHQscixu
PXRoaXMuZW52LGk9dGhpcy5zY29wZSxvPXRoaXMudGVtcGxhdGUsYT10aGlzLm5vZGVzLHM9dGhp
cy5zdGF0ZW1lbnRzO2Zvcih0PTAscj1zLmxlbmd0aDt0PHI7dCsrKXt2YXIgdT1zW3RdLGw9YVt0
XTtzd2l0Y2gobi5ob29rcy53aWxsUmVuZGVyTm9kZSYmbi5ob29rcy53aWxsUmVuZGVyTm9kZShs
LG4saSksdVswXSl7Y2FzZSJibG9jayI6ZS5ibG9jayh1LGwsbixpLG8sZSk7YnJlYWs7Y2FzZSJp
bmxpbmUiOmUuaW5saW5lKHUsbCxuLGksZSk7YnJlYWs7Y2FzZSJjb250ZW50IjplLmNvbnRlbnQo
dSxsLG4saSxlKTticmVhaztjYXNlImVsZW1lbnQiOmUuZWxlbWVudCh1LGwsbixpLG8sZSk7YnJl
YWs7Y2FzZSJhdHRyaWJ1dGUiOmUuYXR0cmlidXRlKHUsbCxuLGkpO2JyZWFrO2Nhc2UiY29tcG9u
ZW50IjplLmNvbXBvbmVudCh1LGwsbixpLG8sZSl9bi5ob29rcy5kaWRSZW5kZXJOb2RlJiZuLmhv
b2tzLmRpZFJlbmRlck5vZGUobCxuLGkpfX0sdS5wcm90b3R5cGUuYmluZFNjb3BlPWZ1bmN0aW9u
KCl7dGhpcy5lbnYuaG9va3MuYmluZFNjb3BlKHRoaXMuZW52LHRoaXMuc2NvcGUpfSx1LnByb3Rv
dHlwZS51cGRhdGVTY29wZT1mdW5jdGlvbigpe3RoaXMuZW52Lmhvb2tzLnVwZGF0ZVNjb3BlKHRo
aXMuZW52LHRoaXMuc2NvcGUpfSx1LnByb3RvdHlwZS5iaW5kU2VsZj1mdW5jdGlvbihlKXt0aGlz
LmVudi5ob29rcy5iaW5kU2VsZih0aGlzLmVudix0aGlzLnNjb3BlLGUpfSx1LnByb3RvdHlwZS51
cGRhdGVTZWxmPWZ1bmN0aW9uKGUpe3RoaXMuZW52Lmhvb2tzLnVwZGF0ZVNlbGYodGhpcy5lbnYs
dGhpcy5zY29wZSxlKX0sdS5wcm90b3R5cGUuYmluZExvY2Fscz1mdW5jdGlvbihlKXtmb3IodmFy
IHQ9dGhpcy50ZW1wbGF0ZS5sb2NhbHMscj0wLG49dC5sZW5ndGg7cjxuO3IrKyl0aGlzLmVudi5o
b29rcy5iaW5kTG9jYWwodGhpcy5lbnYsdGhpcy5zY29wZSx0W3JdLGVbcl0pfSx1LnByb3RvdHlw
ZS51cGRhdGVMb2NhbHM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMudGVtcGxhdGUubG9jYWxz
LHI9MCxuPXQubGVuZ3RoO3I8bjtyKyspdGhpcy5lbnYuaG9va3MudXBkYXRlTG9jYWwodGhpcy5l
bnYsdGhpcy5zY29wZSx0W3JdLGVbcl0pfX0pLGUoImh0bWxiYXJzLXV0aWwiLFsiZXhwb3J0cyIs
Imh0bWxiYXJzLXV0aWwvc2FmZS1zdHJpbmciLCJodG1sYmFycy11dGlsL2hhbmRsZWJhcnMvdXRp
bHMiLCJodG1sYmFycy11dGlsL25hbWVzcGFjZXMiLCJodG1sYmFycy11dGlsL21vcnBoLXV0aWxz
Il0sZnVuY3Rpb24oZSx0LHIsbixpKXsidXNlIHN0cmljdCI7ZS5TYWZlU3RyaW5nPXQuZGVmYXVs
dCxlLmVzY2FwZUV4cHJlc3Npb249ci5lc2NhcGVFeHByZXNzaW9uLGUuZ2V0QXR0ck5hbWVzcGFj
ZT1uLmdldEF0dHJOYW1lc3BhY2UsZS52YWxpZGF0ZUNoaWxkTW9ycGhzPWkudmFsaWRhdGVDaGls
ZE1vcnBocyxlLmxpbmtQYXJhbXM9aS5saW5rUGFyYW1zLGUuZHVtcD1pLmR1bXB9KSxlKCJodG1s
YmFycy11dGlsL2FycmF5LXV0aWxzIixbImV4cG9ydHMiXSxmdW5jdGlvbihlKXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gdChlLHQscil7dmFyIG4saTtpZih2b2lkIDA9PT1yKWZvcihuPTAsaT1lLmxl
bmd0aDtuPGk7bisrKXQoZVtuXSxuLGUpO2Vsc2UgZm9yKG49MCxpPWUubGVuZ3RoO248aTtuKysp
dC5jYWxsKHIsZVtuXSxuLGUpfWZ1bmN0aW9uIHIoZSx0KXt2YXIgcixuLGk9W107Zm9yKHI9MCxu
PWUubGVuZ3RoO3I8bjtyKyspaS5wdXNoKHQoZVtyXSxyLGUpKTtyZXR1cm4gaX1lLmZvckVhY2g9
dCxlLm1hcD1yO3ZhciBuO249QXJyYXkucHJvdG90eXBlLmluZGV4T2Y/ZnVuY3Rpb24oZSx0LHIp
e3JldHVybiBlLmluZGV4T2YodCxyKX06ZnVuY3Rpb24oZSx0LHIpe3ZvaWQgMD09PXJ8fG51bGw9
PT1yP3I9MDpyPDAmJihyPU1hdGgubWF4KDAsZS5sZW5ndGgrcikpO2Zvcih2YXIgbj1yLGk9ZS5s
ZW5ndGg7bjxpO24rKylpZihlW25dPT09dClyZXR1cm4gbjtyZXR1cm4tMX07dmFyIGk9QXJyYXku
aXNBcnJheXx8ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgQXJyYXldIj09PU9iamVjdC5wcm90
b3R5cGUudG9TdHJpbmcuY2FsbChlKX07ZS5pc0FycmF5PWk7dmFyIG89bjtlLmluZGV4T2ZBcnJh
eT1vfSksZSgiaHRtbGJhcnMtdXRpbC9oYW5kbGViYXJzL3NhZmUtc3RyaW5nIixbImV4cG9ydHMi
XSxmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gdChlKXt0aGlzLnN0cmluZz1lfXQu
cHJvdG90eXBlLnRvU3RyaW5nPXQucHJvdG90eXBlLnRvSFRNTD1mdW5jdGlvbigpe3JldHVybiIi
K3RoaXMuc3RyaW5nfSxlLmRlZmF1bHQ9dH0pLGUoImh0bWxiYXJzLXV0aWwvaGFuZGxlYmFycy91
dGlscyIsWyJleHBvcnRzIl0sZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHQoZSl7
cmV0dXJuIHVbZV19ZnVuY3Rpb24gcihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7
dCsrKWZvcih2YXIgciBpbiBhcmd1bWVudHNbdF0pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9w
ZXJ0eS5jYWxsKGFyZ3VtZW50c1t0XSxyKSYmKGVbcl09YXJndW1lbnRzW3RdW3JdKTtyZXR1cm4g
ZX1mdW5jdGlvbiBuKGUsdCl7Zm9yKHZhciByPTAsbj1lLmxlbmd0aDtyPG47cisrKWlmKGVbcl09
PT10KXJldHVybiByO3JldHVybi0xfWZ1bmN0aW9uIGkoZSl7aWYoInN0cmluZyIhPXR5cGVvZiBl
KXtpZihlJiZlLnRvSFRNTClyZXR1cm4gZS50b0hUTUwoKTtpZihudWxsPT1lKXJldHVybiIiO2lm
KCFlKXJldHVybiBlKyIiO2U9IiIrZX1yZXR1cm4gYy50ZXN0KGUpP2UucmVwbGFjZShsLHQpOmV9
ZnVuY3Rpb24gbyhlKXtyZXR1cm4hZSYmMCE9PWV8fCEoIXAoZSl8fDAhPT1lLmxlbmd0aCl9ZnVu
Y3Rpb24gYShlLHQpe3JldHVybiBlLnBhdGg9dCxlfWZ1bmN0aW9uIHMoZSx0KXtyZXR1cm4oZT9l
KyIuIjoiIikrdH1lLmV4dGVuZD1yLGUuaW5kZXhPZj1uLGUuZXNjYXBlRXhwcmVzc2lvbj1pLGUu
aXNFbXB0eT1vLGUuYmxvY2tQYXJhbXM9YSxlLmFwcGVuZENvbnRleHRQYXRoPXM7dmFyIHU9eyIm
IjoiJmFtcDsiLCI8IjoiJmx0OyIsIj4iOiImZ3Q7IiwnIic6IiZxdW90OyIsIiciOiImI3gyNzsi
LCJgIjoiJiN4NjA7In0sbD0vWyY8PiInYF0vZyxjPS9bJjw+IidgXS8sZj1PYmplY3QucHJvdG90
eXBlLnRvU3RyaW5nO2UudG9TdHJpbmc9Zjt2YXIgZD1mdW5jdGlvbihlKXtyZXR1cm4iZnVuY3Rp
b24iPT10eXBlb2YgZX07ZCgveC8pJiYoZS5pc0Z1bmN0aW9uPWQ9ZnVuY3Rpb24oZSl7cmV0dXJu
ImZ1bmN0aW9uIj09dHlwZW9mIGUmJiJbb2JqZWN0IEZ1bmN0aW9uXSI9PT1mLmNhbGwoZSl9KTt2
YXIgZDtlLmlzRnVuY3Rpb249ZDt2YXIgcD1BcnJheS5pc0FycmF5fHxmdW5jdGlvbihlKXtyZXR1
cm4hKCFlfHwib2JqZWN0IiE9dHlwZW9mIGUpJiYiW29iamVjdCBBcnJheV0iPT09Zi5jYWxsKGUp
fTtlLmlzQXJyYXk9cH0pLGUoImh0bWxiYXJzLXV0aWwvbW9ycGgtdXRpbHMiLFsiZXhwb3J0cyJd
LGZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB0KGUsdCl7aWYoZSYmMCE9PWUubGVu
Z3RoKWZvcihlPWUuc2xpY2UoKTtlLmxlbmd0aDspe3ZhciByPWUucG9wKCk7aWYodChyKSxyLmNo
aWxkTm9kZXMpZS5wdXNoLmFwcGx5KGUsci5jaGlsZE5vZGVzKTtlbHNlIGlmKHIuZmlyc3RDaGls
ZE1vcnBoKWZvcih2YXIgbj1yLmZpcnN0Q2hpbGRNb3JwaDtuOyllLnB1c2gobiksbj1uLm5leHRN
b3JwaDtlbHNlIGlmKHIubW9ycGhMaXN0KWZvcih2YXIgbj1yLm1vcnBoTGlzdC5maXJzdENoaWxk
TW9ycGg7bjspZS5wdXNoKG4pLG49bi5uZXh0TW9ycGh9fWZ1bmN0aW9uIHIoZSx0LG4pe3ZhciBp
PXQubW9ycGhMaXN0O2lmKHQubW9ycGhMaXN0KWZvcih2YXIgbz1pLmZpcnN0Q2hpbGRNb3JwaDtv
Oyl7dmFyIGE9by5uZXh0TW9ycGg7cihlLG8sbiksbz1hfWVsc2UgaWYodC5sYXN0UmVzdWx0KXQu
bGFzdFJlc3VsdC5yZXZhbGlkYXRlV2l0aChlLHZvaWQgMCx2b2lkIDAsdm9pZCAwLG4pO2Vsc2Ug
aWYodC5jaGlsZE5vZGVzKWZvcih2YXIgcz0wLHU9dC5jaGlsZE5vZGVzLmxlbmd0aDtzPHU7cysr
KXIoZSx0LmNoaWxkTm9kZXNbc10sbil9ZnVuY3Rpb24gbihlLHQscixuLGksbyl7ci5saW5rZWRQ
YXJhbXN8fGUuaG9va3MubGlua1JlbmRlck5vZGUocixlLHQsbixpLG8pJiYoci5saW5rZWRQYXJh
bXM9e3BhcmFtczppLGhhc2g6b30pfWZ1bmN0aW9uIGkoZSl7aWYoY29uc29sZS5ncm91cChlLGUu
aXNEaXJ0eSksZS5jaGlsZE5vZGVzKW8oZS5jaGlsZE5vZGVzLGkpO2Vsc2UgaWYoZS5maXJzdENo
aWxkTW9ycGgpZm9yKHZhciB0PWUuZmlyc3RDaGlsZE1vcnBoO3Q7KWkodCksdD10Lm5leHRNb3Jw
aDtlbHNlIGUubW9ycGhMaXN0JiZpKGUubW9ycGhMaXN0KTtjb25zb2xlLmdyb3VwRW5kKCl9ZnVu
Y3Rpb24gbyhlLHQpe2Zvcih2YXIgcj0wLG49ZS5sZW5ndGg7cjxuO3IrKyl0KGVbcl0pfWUudmlz
aXRDaGlsZHJlbj10LGUudmFsaWRhdGVDaGlsZE1vcnBocz1yLGUubGlua1BhcmFtcz1uLGUuZHVt
cD1pfSksZSgiaHRtbGJhcnMtdXRpbC9uYW1lc3BhY2VzIixbImV4cG9ydHMiXSxmdW5jdGlvbihl
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gdChlLHQpe2lmKHQpcmV0dXJuIHQ7dmFyIG4saT1lLmlu
ZGV4T2YoIjoiKTtpZihpIT09LTEpe3ZhciBvPWUuc2xpY2UoMCxpKTtuPXJbb119cmV0dXJuIG58
fG51bGx9ZS5nZXRBdHRyTmFtZXNwYWNlPXQ7dmFyIHI9e2h0bWw6Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGh0bWwiLG1hdGhtbDoiaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCIs
c3ZnOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIseGxpbms6Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiLHhtbDoiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIn19
KSxlKCJodG1sYmFycy11dGlsL29iamVjdC11dGlscyIsWyJleHBvcnRzIl0sZnVuY3Rpb24oZSl7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHQoZSx0KXtmb3IodmFyIHIgaW4gdCllLmhhc093blByb3Bl
cnR5KHIpfHwoZVtyXT10W3JdKTtyZXR1cm4gZX1mdW5jdGlvbiByKGUpe3JldHVybiB0KHt9LGUp
fWZ1bmN0aW9uIG4oZSl7dmFyIHQ9e307Zm9yKHZhciByIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShy
KSYmKHRbcl09ITApO3JldHVybiB0fWZ1bmN0aW9uIGkoZSl7dmFyIHQ9MDtmb3IodmFyIHIgaW4g
ZSllLmhhc093blByb3BlcnR5KHIpJiZ0Kys7cmV0dXJuIHR9ZS5tZXJnZT10LGUuc2hhbGxvd0Nv
cHk9cixlLmtleVNldD1uLGUua2V5TGVuZ3RoPWl9KSxlKCJodG1sYmFycy11dGlsL3F1b3Rpbmci
LFsiZXhwb3J0cyJdLGZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB0KGUpe3JldHVy
biBlPWUucmVwbGFjZSgvXFwvZywiXFxcXCIpLGU9ZS5yZXBsYWNlKC8iL2csJ1xcIicpLGU9ZS5y
ZXBsYWNlKC9cbi9nLCJcXG4iKX1mdW5jdGlvbiByKGUpe3JldHVybiciJyt0KGUpKyciJ31mdW5j
dGlvbiBuKGUpe3JldHVybiJbIitlKyJdIn1mdW5jdGlvbiBpKGUpe3JldHVybiJ7IitlLmpvaW4o
IiwgIikrIn0ifWZ1bmN0aW9uIG8oZSx0KXtmb3IodmFyIHI9IiI7dC0tOylyKz1lO3JldHVybiBy
fWUuaGFzaD1pLGUucmVwZWF0PW8sZS5lc2NhcGVTdHJpbmc9dCxlLnN0cmluZz1yLGUuYXJyYXk9
bn0pLGUoImh0bWxiYXJzLXV0aWwvc2FmZS1zdHJpbmciLFsiZXhwb3J0cyIsImh0bWxiYXJzLXV0
aWwvaGFuZGxlYmFycy9zYWZlLXN0cmluZyJdLGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Uu
ZGVmYXVsdD10LmRlZmF1bHR9KSxlKCJodG1sYmFycy11dGlsL3RlbXBsYXRlLXV0aWxzIixbImV4
cG9ydHMiLCJodG1sYmFycy11dGlsL21vcnBoLXV0aWxzIiwiaHRtbGJhcnMtcnVudGltZS9yZW5k
ZXIiXSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSx0KXt0aGlzLm1v
cnBoTGlzdFRvQ2xlYXI9dCx0aGlzLm1vcnBoTGlzdFRvUHJ1bmU9bnVsbCx0aGlzLmhhbmRsZWRN
b3JwaHM9e30sdGhpcy5jb2xsaXNpb25zPXZvaWQgMCx0aGlzLm1vcnBoVG9DbGVhcj1lLHRoaXMu
c2hhZG93T3B0aW9ucz1udWxsfWZ1bmN0aW9uIGkoZSx0LHIpe3RoaXMucmVuZGVyPWUsdGhpcy50
ZW1wbGF0ZT10LHRoaXMuYmxvY2tPcHRpb25zPXIsdGhpcy5hcml0eT10LmFyaXR5fWZ1bmN0aW9u
IG8oZSx0LHIpe3JldHVybiBuZXcgaShlLHQscil9ZnVuY3Rpb24gYShlLHQscil7aWYocilpZihy
IGluc3RhbmNlb2YgaSllLmhvb2tzLmJpbmRCbG9jayhlLHQscik7ZWxzZSBmb3IodmFyIG4gaW4g
cilyLmhhc093blByb3BlcnR5KG4pJiZlLmhvb2tzLmJpbmRCbG9jayhlLHQscltuXSxuKX1mdW5j
dGlvbiBzKGUsdCxyLG4saSl7dmFyIG89ci5yZW5kZXJTdGF0ZTtvLmNvbGxpc2lvbnM9dm9pZCAw
LG8uc2hhZG93T3B0aW9ucz1uO3ZhciBhPWkocik7aWYoIWF8fCFhLmhhbmRsZWQpe3ZhciBzPWUu
bW9ycGhNYXAsYz1vLm1vcnBoTGlzdFRvUHJ1bmU7aWYoYylmb3IodmFyIGY9by5oYW5kbGVkTW9y
cGhzLGQ9Yy5maXJzdENoaWxkTW9ycGg7ZDspe3ZhciBwPWQubmV4dE1vcnBoO2Qua2V5IGluIGZ8
fChzW2Qua2V5XT12b2lkIDAsdShkLHQsITApLGQuZGVzdHJveSgpKSxkPXB9Yz1vLm1vcnBoTGlz
dFRvQ2xlYXIsYyYmbChjLGUsdCk7dmFyIGg9by5tb3JwaFRvQ2xlYXI7aCYmdShoLHQpfX1mdW5j
dGlvbiB1KGUscixuKXtmdW5jdGlvbiBpKGUpe28mJm8oZSksYSYmYShlKX12YXIgbz1yLmhvb2tz
LmNsZWFudXBSZW5kZXJOb2RlLGE9ci5ob29rcy5kZXN0cm95UmVuZGVyTm9kZSxzPXIuaG9va3Mu
d2lsbENsZWFudXBUcmVlLHU9ci5ob29rcy5kaWRDbGVhbnVwVHJlZTtzJiZzKHIsZSxuKSxvJiZv
KGUpLG4mJmEmJmEoZSksdC52aXNpdENoaWxkcmVuKGUuY2hpbGROb2RlcyxpKSxlLmNsZWFyKCks
dSYmdShyLGUsbiksZS5sYXN0UmVzdWx0PW51bGwsZS5sYXN0WWllbGRlZD1udWxsLGUuY2hpbGRO
b2Rlcz1udWxsfWZ1bmN0aW9uIGwoZSx0LHIpe2Zvcih2YXIgbj1lLmZpcnN0Q2hpbGRNb3JwaDtu
Oyl7dmFyIGk9bi5uZXh0TW9ycGg7dC5tb3JwaE1hcFtuLmtleV09dm9pZCAwLHUobixyLCEwKSxu
LmRlc3Ryb3koKSxuPWl9ZS5jbGVhcigpLHQubW9ycGhMaXN0PW51bGx9ZS5SZW5kZXJTdGF0ZT1u
LGUuYmxvY2tGb3I9byxlLnJlbmRlckFuZENsZWFudXA9cyxlLmNsZWFyTW9ycGg9dSxlLmNsZWFy
TW9ycGhMaXN0PWwsaS5wcm90b3R5cGUuaW52b2tlPWZ1bmN0aW9uKGUsdCxyLG4saSxvKXtuLmxh
c3RSZXN1bHQ/bi5sYXN0UmVzdWx0LnJldmFsaWRhdGVXaXRoKGUsdm9pZCAwLHIsdCxvKTp0aGlz
Ll9maXJzdFJlbmRlcihlLHQscixuLGkpfSxpLnByb3RvdHlwZS5fZmlyc3RSZW5kZXI9ZnVuY3Rp
b24oZSx0LGksbyx1KXt2YXIgbD17cmVuZGVyU3RhdGU6bmV3IG4obyl9LGM9dGhpcy5yZW5kZXIs
Zj10aGlzLnRlbXBsYXRlLGQ9dGhpcy5ibG9ja09wdGlvbnMuc2NvcGUscD1kP2UuaG9va3MuY3Jl
YXRlQ2hpbGRTY29wZShkKTplLmhvb2tzLmNyZWF0ZUZyZXNoU2NvcGUoKTtlLmhvb2tzLmJpbmRT
aGFkb3dTY29wZShlLHUscCx0aGlzLmJsb2NrT3B0aW9ucy5vcHRpb25zKSx2b2lkIDAhPT1pP2Uu
aG9va3MuYmluZFNlbGYoZSxwLGkpOnZvaWQgMCE9PXRoaXMuYmxvY2tPcHRpb25zLnNlbGYmJmUu
aG9va3MuYmluZFNlbGYoZSxwLHRoaXMuYmxvY2tPcHRpb25zLnNlbGYpLGEoZSxwLHRoaXMuYmxv
Y2tPcHRpb25zLnlpZWxkVG8pLHMobyxlLGwsbnVsbCxmdW5jdGlvbigpe2wucmVuZGVyU3RhdGUu
bW9ycGhUb0NsZWFyPW51bGw7dmFyIG49bmV3IHIuUmVuZGVyT3B0aW9ucyhvLHZvaWQgMCx0KTtj
KGYsZSxwLG4pfSl9fSksZSgiaHRtbGJhcnMtdXRpbC92b2lkLXRhZy1uYW1lcyIsWyJleHBvcnRz
IiwiaHRtbGJhcnMtdXRpbC9hcnJheS11dGlscyJdLGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3Qi
O3ZhciByPSJhcmVhIGJhc2UgYnIgY29sIGNvbW1hbmQgZW1iZWQgaHIgaW1nIGlucHV0IGtleWdl
biBsaW5rIG1ldGEgcGFyYW0gc291cmNlIHRyYWNrIHdiciIsbj17fTt0LmZvckVhY2goci5zcGxp
dCgiICIpLGZ1bmN0aW9uKGUpe25bZV09ITB9KSxlLmRlZmF1bHQ9bn0pLGUoIm1vcnBoLWF0dHIi
LFsiZXhwb3J0cyIsIm1vcnBoLWF0dHIvc2FuaXRpemUtYXR0cmlidXRlLXZhbHVlIiwiZG9tLWhl
bHBlci9wcm9wIiwiZG9tLWhlbHBlci9idWlsZC1odG1sLWRvbSIsImh0bWxiYXJzLXV0aWwiXSxm
dW5jdGlvbihlLHQscixuLGkpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBvKCl7cmV0dXJuIHRoaXMu
ZG9tSGVscGVyLmdldFByb3BlcnR5U3RyaWN0KHRoaXMuZWxlbWVudCx0aGlzLmF0dHJOYW1lKX1m
dW5jdGlvbiBhKGUpe2lmKHRoaXMuX3JlbmRlcmVkSW5pdGlhbGx5PT09ITB8fCFyLmlzQXR0clJl
bW92YWxWYWx1ZShlKSl7dmFyIHQ9dGhpcy5lbGVtZW50LG49dGhpcy5hdHRyTmFtZTsidmFsdWUi
PT09biYmIklOUFVUIj09PXQudGFnTmFtZSYmdC52YWx1ZT09PWV8fHRoaXMuZG9tSGVscGVyLnNl
dFByb3BlcnR5U3RyaWN0KHQsbixlKX10aGlzLl9yZW5kZXJlZEluaXRpYWxseT0hMH1mdW5jdGlv
biBzKCl7cmV0dXJuIHRoaXMuZG9tSGVscGVyLmdldEF0dHJpYnV0ZSh0aGlzLmVsZW1lbnQsdGhp
cy5hdHRyTmFtZSl9ZnVuY3Rpb24gdShlKXtyLmlzQXR0clJlbW92YWxWYWx1ZShlKT90aGlzLmRv
bUhlbHBlci5yZW1vdmVBdHRyaWJ1dGUodGhpcy5lbGVtZW50LHRoaXMuYXR0ck5hbWUpOnRoaXMu
ZG9tSGVscGVyLnNldEF0dHJpYnV0ZSh0aGlzLmVsZW1lbnQsdGhpcy5hdHRyTmFtZSxlKX1mdW5j
dGlvbiBsKCl7cmV0dXJuIHRoaXMuZG9tSGVscGVyLmdldEF0dHJpYnV0ZU5TKHRoaXMuZWxlbWVu
dCx0aGlzLm5hbWVzcGFjZSx0aGlzLmF0dHJOYW1lKX1mdW5jdGlvbiBjKGUpe3IuaXNBdHRyUmVt
b3ZhbFZhbHVlKGUpP3RoaXMuZG9tSGVscGVyLnJlbW92ZUF0dHJpYnV0ZSh0aGlzLmVsZW1lbnQs
dGhpcy5hdHRyTmFtZSk6dGhpcy5kb21IZWxwZXIuc2V0QXR0cmlidXRlTlModGhpcy5lbGVtZW50
LHRoaXMubmFtZXNwYWNlLHRoaXMuYXR0ck5hbWUsZSl9ZnVuY3Rpb24gZihlLHQsaSl7dmFyIG89
ci5ub3JtYWxpemVQcm9wZXJ0eShlLHQpLGE9by5ub3JtYWxpemVkLHM9by50eXBlO3JldHVybiBl
Lm5hbWVzcGFjZVVSST09PW4uc3ZnTmFtZXNwYWNlfHwic3R5bGUiPT09dHx8ImF0dHIiPT09cz9u
ZXcgbShlLGEsaSk6bmV3IHAoZSxhLGkpfWZ1bmN0aW9uIGQoZSx0LHIpe3RoaXMuZWxlbWVudD1l
LHRoaXMuZG9tSGVscGVyPXIsdGhpcy5hdHRyTmFtZT10LHRoaXMuX3N0YXRlPXZvaWQgMCx0aGlz
LmlzRGlydHk9ITEsdGhpcy5pc1N1YnRyZWVEaXJ0eT0hMSx0aGlzLmVzY2FwZWQ9ITAsdGhpcy5s
YXN0VmFsdWU9dix0aGlzLmxhc3RSZXN1bHQ9bnVsbCx0aGlzLmxhc3RZaWVsZGVkPW51bGwsdGhp
cy5jaGlsZE5vZGVzPW51bGwsdGhpcy5saW5rZWRQYXJhbXM9bnVsbCx0aGlzLmxpbmtlZFJlc3Vs
dD1udWxsLHRoaXMuZ3VpZD0iYXR0ciIrYisrLHRoaXMuc2Vlbj0hMSx0aGlzLm93bmVyTm9kZT1u
dWxsLHRoaXMucmVuZGVyZWQ9ITEsdGhpcy5fcmVuZGVyZWRJbml0aWFsbHk9ITEsdGhpcy5uYW1l
c3BhY2U9dm9pZCAwLHRoaXMuZGlkSW5pdCgpfWZ1bmN0aW9uIHAoZSx0LHIpe3RoaXMuXyRzdXBl
ckF0dHJNb3JwaChlLHQscil9ZnVuY3Rpb24gaChlLHQscixuKXt0aGlzLl8kc3VwZXJBdHRyTW9y
cGgoZSx0LHIpLHRoaXMubmFtZXNwYWNlPW59ZnVuY3Rpb24gbShlLHQscil7dGhpcy5fJHN1cGVy
QXR0ck1vcnBoKGUsdCxyKX12YXIgdj17dW5zZXQ6ITB9LGI9MTtkLmNyZWF0ZT1mdW5jdGlvbihl
LHQscixuKXt2YXIgbz1pLmdldEF0dHJOYW1lc3BhY2UodCxuKTtyZXR1cm4gbz9uZXcgaChlLHQs
cixvKTpmKGUsdCxyKX0sZC5wcm90b3R5cGUuZ2V0U3RhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhp
cy5fc3RhdGV8fCh0aGlzLl9zdGF0ZT17fSksdGhpcy5fc3RhdGV9LGQucHJvdG90eXBlLnNldFN0
YXRlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9zdGF0ZT1lfSxkLnByb3RvdHlwZS5kaWRJbml0
PWZ1bmN0aW9uKCl7fSxkLnByb3RvdHlwZS53aWxsU2V0Q29udGVudD1mdW5jdGlvbigpe30sZC5w
cm90b3R5cGUuc2V0Q29udGVudD1mdW5jdGlvbihlKXtpZih0aGlzLndpbGxTZXRDb250ZW50KGUp
LHRoaXMubGFzdFZhbHVlIT09ZSlpZih0aGlzLmxhc3RWYWx1ZT1lLHRoaXMuZXNjYXBlZCl7dmFy
IHI9dC5zYW5pdGl6ZUF0dHJpYnV0ZVZhbHVlKHRoaXMuZG9tSGVscGVyLHRoaXMuZWxlbWVudCx0
aGlzLmF0dHJOYW1lLGUpO3RoaXMuX3VwZGF0ZShyLHRoaXMubmFtZXNwYWNlKX1lbHNlIHRoaXMu
X3VwZGF0ZShlLHRoaXMubmFtZXNwYWNlKX0sZC5wcm90b3R5cGUuZ2V0Q29udGVudD1mdW5jdGlv
bigpe3ZhciBlPXRoaXMubGFzdFZhbHVlPXRoaXMuX2dldCgpO3JldHVybiBlfSxkLnByb3RvdHlw
ZS5jbGVhcj1mdW5jdGlvbigpe30sZC5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3RoaXMu
ZWxlbWVudD1udWxsLHRoaXMuZG9tSGVscGVyPW51bGx9LGQucHJvdG90eXBlLl8kc3VwZXJBdHRy
TW9ycGg9ZCxwLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGQucHJvdG90eXBlKSxwLnByb3RvdHlw
ZS5fdXBkYXRlPWEscC5wcm90b3R5cGUuX2dldD1vLGgucHJvdG90eXBlPU9iamVjdC5jcmVhdGUo
ZC5wcm90b3R5cGUpLGgucHJvdG90eXBlLl91cGRhdGU9YyxoLnByb3RvdHlwZS5fZ2V0PWwsbS5w
cm90b3R5cGU9T2JqZWN0LmNyZWF0ZShkLnByb3RvdHlwZSksbS5wcm90b3R5cGUuX3VwZGF0ZT11
LG0ucHJvdG90eXBlLl9nZXQ9cyxlLmRlZmF1bHQ9ZCxlLnNhbml0aXplQXR0cmlidXRlVmFsdWU9
dC5zYW5pdGl6ZUF0dHJpYnV0ZVZhbHVlfSksZSgibW9ycGgtYXR0ci9zYW5pdGl6ZS1hdHRyaWJ1
dGUtdmFsdWUiLFsiZXhwb3J0cyJdLGZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB0
KGUsdCxzLHUpe3ZhciBsO2lmKGw9dD90LnRhZ05hbWUudG9VcHBlckNhc2UoKTpudWxsLHUmJnUu
dG9IVE1MKXJldHVybiB1LnRvSFRNTCgpO2lmKChudWxsPT09bHx8bltsXSkmJm9bc10pe3ZhciBj
PWUucHJvdG9jb2xGb3JVUkwodSk7aWYocltjXT09PSEwKXJldHVybiJ1bnNhZmU6Iit1fXJldHVy
biBpW2xdJiZhW3NdPyJ1bnNhZmU6Iit1OnV9ZS5zYW5pdGl6ZUF0dHJpYnV0ZVZhbHVlPXQ7dmFy
IHI9eyJqYXZhc2NyaXB0OiI6ITAsInZic2NyaXB0OiI6ITB9LG49e0E6ITAsQk9EWTohMCxMSU5L
OiEwLElNRzohMCxJRlJBTUU6ITAsQkFTRTohMCxGT1JNOiEwfSxpPXtFTUJFRDohMH0sbz17aHJl
ZjohMCxzcmM6ITAsYmFja2dyb3VuZDohMCxhY3Rpb246ITB9O2UuYmFkQXR0cmlidXRlcz1vO3Zh
ciBhPXtzcmM6ITB9fSksZSgibW9ycGgtcmFuZ2UiLFsiZXhwb3J0cyIsIm1vcnBoLXJhbmdlL3V0
aWxzIl0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe3RoaXMuZG9t
SGVscGVyPWUsdGhpcy5jb250ZXh0dWFsRWxlbWVudD10LHRoaXMuZmlyc3ROb2RlPW51bGwsdGhp
cy5sYXN0Tm9kZT1udWxsLHRoaXMucGFyc2VUZXh0QXNIVE1MPSExLHRoaXMucGFyZW50TW9ycGhM
aXN0PW51bGwsdGhpcy5wcmV2aW91c01vcnBoPW51bGwsdGhpcy5uZXh0TW9ycGg9bnVsbH1mdW5j
dGlvbiBuKGUpe3ZhciB0LHI9ZS5uYW1lO3Rocm93IHQ9cj8iVW5zdXBwb3J0ZWQgQ29udGVudDog
Q2Fubm90IGJpbmQgdG8gZnVuY3Rpb24gYCIrcisiYCI6IlVuc3VwcG9ydGVkIENvbnRlbnQ6IENh
bm5vdCBiaW5kIHRvIGZ1bmN0aW9uIixuZXcgVHlwZUVycm9yKHQpfXIuZW1wdHk9ZnVuY3Rpb24o
ZSx0KXt2YXIgbj1uZXcgcihlLHQpO3JldHVybiBuLmNsZWFyKCksbn0sci5jcmVhdGU9ZnVuY3Rp
b24oZSx0LG4pe3ZhciBpPW5ldyByKGUsdCk7cmV0dXJuIGkuc2V0Tm9kZShuKSxpfSxyLmF0dGFj
aD1mdW5jdGlvbihlLHQsbixpKXt2YXIgbz1uZXcgcihlLHQpO3JldHVybiBvLnNldFJhbmdlKG4s
aSksb30sci5wcm90b3R5cGUuc2V0Q29udGVudD1mdW5jdGlvbihlKXtpZihudWxsPT09ZXx8dm9p
ZCAwPT09ZSlyZXR1cm4gdGhpcy5jbGVhcigpO3ZhciB0PXR5cGVvZiBlO3N3aXRjaCh0KXtjYXNl
InN0cmluZyI6cmV0dXJuIHRoaXMucGFyc2VUZXh0QXNIVE1MP3RoaXMuZG9tSGVscGVyLnNldE1v
cnBoSFRNTCh0aGlzLGUpOnRoaXMuc2V0VGV4dChlKTtjYXNlIm9iamVjdCI6aWYoIm51bWJlciI9
PXR5cGVvZiBlLm5vZGVUeXBlKXJldHVybiB0aGlzLnNldE5vZGUoZSk7aWYoImZ1bmN0aW9uIj09
dHlwZW9mIGUudG9IVE1MKXJldHVybiB0aGlzLnNldEhUTUwoZS50b0hUTUwoKSk7aWYodGhpcy5w
YXJzZVRleHRBc0hUTUwpcmV0dXJuIHRoaXMuc2V0SFRNTChlLnRvU3RyaW5nKCkpO2Nhc2UiYm9v
bGVhbiI6Y2FzZSJudW1iZXIiOnJldHVybiB0aGlzLnNldFRleHQoZS50b1N0cmluZygpKTtjYXNl
ImZ1bmN0aW9uIjpuKGUpO2RlZmF1bHQ6dGhyb3cgbmV3IFR5cGVFcnJvcigidW5zdXBwb3J0ZWQg
Y29udGVudCIpfX0sci5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnNldE5v
ZGUodGhpcy5kb21IZWxwZXIuY3JlYXRlQ29tbWVudCgiIikpO3JldHVybiBlfSxyLnByb3RvdHlw
ZS5zZXRUZXh0PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuZmlyc3ROb2RlLHI9dGhpcy5sYXN0Tm9k
ZTtyZXR1cm4gdCYmcj09PXQmJjM9PT10Lm5vZGVUeXBlPyh0Lm5vZGVWYWx1ZT1lLHQpOnRoaXMu
c2V0Tm9kZShlP3RoaXMuZG9tSGVscGVyLmNyZWF0ZVRleHROb2RlKGUpOnRoaXMuZG9tSGVscGVy
LmNyZWF0ZUNvbW1lbnQoIiIpKX0sci5wcm90b3R5cGUuc2V0Tm9kZT1mdW5jdGlvbihlKXt2YXIg
dCxyO3N3aXRjaChlLm5vZGVUeXBlKXtjYXNlIDM6dD1lLHI9ZTticmVhaztjYXNlIDExOnQ9ZS5m
aXJzdENoaWxkLHI9ZS5sYXN0Q2hpbGQsbnVsbD09PXQmJih0PXRoaXMuZG9tSGVscGVyLmNyZWF0
ZUNvbW1lbnQoIiIpLGUuYXBwZW5kQ2hpbGQodCkscj10KTticmVhaztkZWZhdWx0OnQ9ZSxyPWV9
cmV0dXJuIHRoaXMuc2V0UmFuZ2UodCxyKSxlfSxyLnByb3RvdHlwZS5zZXRSYW5nZT1mdW5jdGlv
bihlLHIpe3ZhciBuPXRoaXMuZmlyc3ROb2RlO2lmKG51bGwhPT1uKXt2YXIgaT1uLnBhcmVudE5v
ZGU7bnVsbCE9PWkmJih0Lmluc2VydEJlZm9yZShpLGUscixuKSx0LmNsZWFyKGksbix0aGlzLmxh
c3ROb2RlKSl9dGhpcy5maXJzdE5vZGU9ZSx0aGlzLmxhc3ROb2RlPXIsdGhpcy5wYXJlbnRNb3Jw
aExpc3QmJih0aGlzLl9zeW5jRmlyc3ROb2RlKCksdGhpcy5fc3luY0xhc3ROb2RlKCkpfSxyLnBy
b3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy51bmxpbmsoKTt2YXIgZT10aGlzLmZpcnN0
Tm9kZSxyPXRoaXMubGFzdE5vZGUsbj1lJiZlLnBhcmVudE5vZGU7dGhpcy5maXJzdE5vZGU9bnVs
bCx0aGlzLmxhc3ROb2RlPW51bGwsdC5jbGVhcihuLGUscil9LHIucHJvdG90eXBlLnVubGluaz1m
dW5jdGlvbigpe3ZhciBlPXRoaXMucGFyZW50TW9ycGhMaXN0LHQ9dGhpcy5wcmV2aW91c01vcnBo
LHI9dGhpcy5uZXh0TW9ycGg7aWYodD9yPyh0Lm5leHRNb3JwaD1yLHIucHJldmlvdXNNb3JwaD10
KToodC5uZXh0TW9ycGg9bnVsbCxlLmxhc3RDaGlsZE1vcnBoPXQpOnI/KHIucHJldmlvdXNNb3Jw
aD1udWxsLGUuZmlyc3RDaGlsZE1vcnBoPXIpOmUmJihlLmxhc3RDaGlsZE1vcnBoPWUuZmlyc3RD
aGlsZE1vcnBoPW51bGwpLHRoaXMucGFyZW50TW9ycGhMaXN0PW51bGwsdGhpcy5uZXh0TW9ycGg9
bnVsbCx0aGlzLnByZXZpb3VzTW9ycGg9bnVsbCxlJiZlLm1vdW50ZWRNb3JwaCl7aWYoIWUuZmly
c3RDaGlsZE1vcnBoKXJldHVybiB2b2lkIGUubW91bnRlZE1vcnBoLmNsZWFyKCk7ZS5maXJzdENo
aWxkTW9ycGguX3N5bmNGaXJzdE5vZGUoKSxlLmxhc3RDaGlsZE1vcnBoLl9zeW5jTGFzdE5vZGUo
KX19LHIucHJvdG90eXBlLnNldEhUTUw9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5kb21IZWxwZXIu
cGFyc2VIVE1MKGUsdGhpcy5jb250ZXh0dWFsRWxlbWVudCk7cmV0dXJuIHRoaXMuc2V0Tm9kZSh0
KX0sci5wcm90b3R5cGUuc2V0TW9ycGhMaXN0PWZ1bmN0aW9uKGUpe2UubW91bnRlZE1vcnBoPXRo
aXMsdGhpcy5jbGVhcigpO3ZhciB0PXRoaXMuZmlyc3ROb2RlO2lmKGUuZmlyc3RDaGlsZE1vcnBo
KXt0aGlzLmZpcnN0Tm9kZT1lLmZpcnN0Q2hpbGRNb3JwaC5maXJzdE5vZGUsdGhpcy5sYXN0Tm9k
ZT1lLmxhc3RDaGlsZE1vcnBoLmxhc3ROb2RlO2Zvcih2YXIgcj1lLmZpcnN0Q2hpbGRNb3JwaDty
Oyl7dmFyIG49ci5uZXh0TW9ycGg7ci5pbnNlcnRCZWZvcmVOb2RlKHQsbnVsbCkscj1ufXQucGFy
ZW50Tm9kZS5yZW1vdmVDaGlsZCh0KX19LHIucHJvdG90eXBlLl9zeW5jRmlyc3ROb2RlPWZ1bmN0
aW9uKCl7Zm9yKHZhciBlLHQ9dGhpczsoZT10LnBhcmVudE1vcnBoTGlzdCkmJm51bGwhPT1lLm1v
dW50ZWRNb3JwaCYmdD09PWUuZmlyc3RDaGlsZE1vcnBoJiZ0LmZpcnN0Tm9kZSE9PWUubW91bnRl
ZE1vcnBoLmZpcnN0Tm9kZTspZS5tb3VudGVkTW9ycGguZmlyc3ROb2RlPXQuZmlyc3ROb2RlLHQ9
ZS5tb3VudGVkTW9ycGh9LHIucHJvdG90eXBlLl9zeW5jTGFzdE5vZGU9ZnVuY3Rpb24oKXtmb3Io
dmFyIGUsdD10aGlzOyhlPXQucGFyZW50TW9ycGhMaXN0KSYmbnVsbCE9PWUubW91bnRlZE1vcnBo
JiZ0PT09ZS5sYXN0Q2hpbGRNb3JwaCYmdC5sYXN0Tm9kZSE9PWUubW91bnRlZE1vcnBoLmxhc3RO
b2RlOyllLm1vdW50ZWRNb3JwaC5sYXN0Tm9kZT10Lmxhc3ROb2RlLHQ9ZS5tb3VudGVkTW9ycGh9
LHIucHJvdG90eXBlLmluc2VydEJlZm9yZU5vZGU9ZnVuY3Rpb24oZSxyKXt0Lmluc2VydEJlZm9y
ZShlLHRoaXMuZmlyc3ROb2RlLHRoaXMubGFzdE5vZGUscil9LHIucHJvdG90eXBlLmFwcGVuZFRv
Tm9kZT1mdW5jdGlvbihlKXt0Lmluc2VydEJlZm9yZShlLHRoaXMuZmlyc3ROb2RlLHRoaXMubGFz
dE5vZGUsbnVsbCl9LGUuZGVmYXVsdD1yfSksZSgibW9ycGgtcmFuZ2UvbW9ycGgtbGlzdCIsWyJl
eHBvcnRzIiwibW9ycGgtcmFuZ2UvdXRpbHMiXSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiByKCl7dGhpcy5maXJzdENoaWxkTW9ycGg9bnVsbCx0aGlzLmxhc3RDaGlsZE1vcnBo
PW51bGwsdGhpcy5tb3VudGVkTW9ycGg9bnVsbH12YXIgbj1yLnByb3RvdHlwZTtuLmNsZWFyPWZ1
bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMuZmlyc3RDaGlsZE1vcnBoO2U7KXt2YXIgdD1lLm5leHRN
b3JwaDtlLnByZXZpb3VzTW9ycGg9bnVsbCxlLm5leHRNb3JwaD1udWxsLGUucGFyZW50TW9ycGhM
aXN0PW51bGwsZT10fXRoaXMuZmlyc3RDaGlsZE1vcnBoPXRoaXMubGFzdENoaWxkTW9ycGg9bnVs
bH0sbi5kZXN0cm95PWZ1bmN0aW9uKCl7fSxuLmFwcGVuZE1vcnBoPWZ1bmN0aW9uKGUpe3RoaXMu
aW5zZXJ0QmVmb3JlTW9ycGgoZSxudWxsKX0sbi5pbnNlcnRCZWZvcmVNb3JwaD1mdW5jdGlvbihl
LHIpe2lmKG51bGwhPT1lLnBhcmVudE1vcnBoTGlzdCYmZS51bmxpbmsoKSxyJiZyLnBhcmVudE1v
cnBoTGlzdCE9PXRoaXMpdGhyb3cgbmV3IEVycm9yKCJUaGUgbW9ycGggYmVmb3JlIHdoaWNoIHRo
ZSBuZXcgbW9ycGggaXMgdG8gYmUgaW5zZXJ0ZWQgaXMgbm90IGEgY2hpbGQgb2YgdGhpcyBtb3Jw
aC4iKTt2YXIgbj10aGlzLm1vdW50ZWRNb3JwaDtpZihuKXt2YXIgaT1uLmZpcnN0Tm9kZS5wYXJl
bnROb2RlLG89cj9yLmZpcnN0Tm9kZTpuLmxhc3ROb2RlLm5leHRTaWJsaW5nO3QuaW5zZXJ0QmVm
b3JlKGksZS5maXJzdE5vZGUsZS5sYXN0Tm9kZSxvKSx0aGlzLmZpcnN0Q2hpbGRNb3JwaHx8dC5j
bGVhcih0aGlzLm1vdW50ZWRNb3JwaC5maXJzdE5vZGUucGFyZW50Tm9kZSx0aGlzLm1vdW50ZWRN
b3JwaC5maXJzdE5vZGUsdGhpcy5tb3VudGVkTW9ycGgubGFzdE5vZGUpfWUucGFyZW50TW9ycGhM
aXN0PXRoaXM7dmFyIGE9cj9yLnByZXZpb3VzTW9ycGg6dGhpcy5sYXN0Q2hpbGRNb3JwaDthPyhh
Lm5leHRNb3JwaD1lLGUucHJldmlvdXNNb3JwaD1hKTp0aGlzLmZpcnN0Q2hpbGRNb3JwaD1lLHI/
KHIucHJldmlvdXNNb3JwaD1lLGUubmV4dE1vcnBoPXIpOnRoaXMubGFzdENoaWxkTW9ycGg9ZSx0
aGlzLmZpcnN0Q2hpbGRNb3JwaC5fc3luY0ZpcnN0Tm9kZSgpLHRoaXMubGFzdENoaWxkTW9ycGgu
X3N5bmNMYXN0Tm9kZSgpfSxuLnJlbW92ZUNoaWxkTW9ycGg9ZnVuY3Rpb24oZSl7aWYoZS5wYXJl
bnRNb3JwaExpc3QhPT10aGlzKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHJlbW92ZSBhIG1vcnBo
IGZyb20gYSBwYXJlbnQgaXQgaXMgbm90IGluc2lkZSBvZiIpO2UuZGVzdHJveSgpfSxlLmRlZmF1
bHQ9cn0pLGUoIm1vcnBoLXJhbmdlL21vcnBoLWxpc3QudW1kIixbImV4cG9ydHMiLCJtb3JwaC1y
YW5nZS9tb3JwaC1saXN0Il0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7IWZ1bmN0aW9uKHQs
cil7ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoW10scik6Im9i
amVjdCI9PXR5cGVvZiBlP21vZHVsZS5leHBvcnRzPXIoKTp0Lk1vcnBoTGlzdD1yKCl9KHZvaWQg
MCxmdW5jdGlvbigpe3JldHVybiB0LmRlZmF1bHR9KX0pLGUoIm1vcnBoLXJhbmdlL3V0aWxzIixb
ImV4cG9ydHMiXSxmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gdChlLHQscil7aWYo
ZSl7dmFyIG4saT10O2Rve2lmKG49aS5uZXh0U2libGluZyxlLnJlbW92ZUNoaWxkKGkpLGk9PT1y
KWJyZWFrO2k9bn13aGlsZShpKX19ZnVuY3Rpb24gcihlLHQscixuKXt2YXIgaSxvPXQ7ZG97aWYo
aT1vLm5leHRTaWJsaW5nLGUuaW5zZXJ0QmVmb3JlKG8sbiksbz09PXIpYnJlYWs7bz1pfXdoaWxl
KG8pfWUuY2xlYXI9dCxlLmluc2VydEJlZm9yZT1yfSksZSgicm91dGUtcmVjb2duaXplciIsWyJl
eHBvcnRzIiwicm91dGUtcmVjb2duaXplci9kc2wiXSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiByKGUpe3JldHVybiJbb2JqZWN0IEFycmF5XSI9PT1PYmplY3QucHJvdG90eXBl
LnRvU3RyaW5nLmNhbGwoZSl9ZnVuY3Rpb24gbihlKXt0aGlzLnN0cmluZz1lfWZ1bmN0aW9uIGko
ZSl7dGhpcy5uYW1lPWV9ZnVuY3Rpb24gbyhlKXt0aGlzLm5hbWU9ZX1mdW5jdGlvbiBhKCl7fWZ1
bmN0aW9uIHMoZSx0LHIpeyIvIj09PWUuY2hhckF0KDApJiYoZT1lLnN1YnN0cigxKSk7Zm9yKHZh
ciBzPWUuc3BsaXQoIi8iKSx1PVtdLGw9MCxjPXMubGVuZ3RoO2w8YztsKyspe3ZhciBmLGQ9c1ts
XTsoZj1kLm1hdGNoKC9eOihbXlwvXSspJC8pKT8odS5wdXNoKG5ldyBpKGZbMV0pKSx0LnB1c2go
ZlsxXSksci5keW5hbWljcysrKTooZj1kLm1hdGNoKC9eXCooW15cL10rKSQvKSk/KHUucHVzaChu
ZXcgbyhmWzFdKSksdC5wdXNoKGZbMV0pLHIuc3RhcnMrKyk6IiI9PT1kP3UucHVzaChuZXcgYSk6
KHUucHVzaChuZXcgbihkKSksci5zdGF0aWNzKyspfXJldHVybiB1fWZ1bmN0aW9uIHUoZSl7dGhp
cy5jaGFyU3BlYz1lLHRoaXMubmV4dFN0YXRlcz1bXX1mdW5jdGlvbiBsKGUpe3JldHVybiBlLnNv
cnQoZnVuY3Rpb24oZSx0KXtpZihlLnR5cGVzLnN0YXJzIT09dC50eXBlcy5zdGFycylyZXR1cm4g
ZS50eXBlcy5zdGFycy10LnR5cGVzLnN0YXJzO2lmKGUudHlwZXMuc3RhcnMpe2lmKGUudHlwZXMu
c3RhdGljcyE9PXQudHlwZXMuc3RhdGljcylyZXR1cm4gdC50eXBlcy5zdGF0aWNzLWUudHlwZXMu
c3RhdGljcztpZihlLnR5cGVzLmR5bmFtaWNzIT09dC50eXBlcy5keW5hbWljcylyZXR1cm4gdC50
eXBlcy5keW5hbWljcy1lLnR5cGVzLmR5bmFtaWNzfXJldHVybiBlLnR5cGVzLmR5bmFtaWNzIT09
dC50eXBlcy5keW5hbWljcz9lLnR5cGVzLmR5bmFtaWNzLXQudHlwZXMuZHluYW1pY3M6ZS50eXBl
cy5zdGF0aWNzIT09dC50eXBlcy5zdGF0aWNzP3QudHlwZXMuc3RhdGljcy1lLnR5cGVzLnN0YXRp
Y3M6MH0pfWZ1bmN0aW9uIGMoZSx0KXtmb3IodmFyIHI9W10sbj0wLGk9ZS5sZW5ndGg7bjxpO24r
Kyl7dmFyIG89ZVtuXTtyPXIuY29uY2F0KG8ubWF0Y2godCkpfXJldHVybiByfWZ1bmN0aW9uIGYo
ZSl7dGhpcy5xdWVyeVBhcmFtcz1lfHx7fX1mdW5jdGlvbiBkKGUsdCxyKXtmb3IodmFyIG49ZS5o
YW5kbGVycyxpPWUucmVnZXgsbz10Lm1hdGNoKGkpLGE9MSxzPW5ldyBmKHIpLHU9MCxsPW4ubGVu
Z3RoO3U8bDt1Kyspe2Zvcih2YXIgYz1uW3VdLGQ9Yy5uYW1lcyxwPXt9LGg9MCxtPWQubGVuZ3Ro
O2g8bTtoKyspcFtkW2hdXT1vW2ErK107cy5wdXNoKHtoYW5kbGVyOmMuaGFuZGxlcixwYXJhbXM6
cCxpc0R5bmFtaWM6ISFkLmxlbmd0aH0pfXJldHVybiBzfWZ1bmN0aW9uIHAoZSx0KXtyZXR1cm4g
dC5lYWNoQ2hhcihmdW5jdGlvbih0KXtlPWUucHV0KHQpfSksZX1mdW5jdGlvbiBoKGUpe3JldHVy
biBlPWUucmVwbGFjZSgvXCsvZ20sIiUyMCIpLGRlY29kZVVSSUNvbXBvbmVudChlKX12YXIgbT1b
Ii8iLCIuIiwiKiIsIisiLCI/IiwifCIsIigiLCIpIiwiWyIsIl0iLCJ7IiwifSIsIlxcIl0sdj1u
ZXcgUmVnRXhwKCIoXFwiK20uam9pbigifFxcIikrIikiLCJnIik7bi5wcm90b3R5cGU9e2VhY2hD
aGFyOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyPXRoaXMuc3RyaW5nLG49MCxpPXIubGVuZ3RoO248
aTtuKyspdD1yLmNoYXJBdChuKSxlKHt2YWxpZENoYXJzOnR9KX0scmVnZXg6ZnVuY3Rpb24oKXty
ZXR1cm4gdGhpcy5zdHJpbmcucmVwbGFjZSh2LCJcXCQxIil9LGdlbmVyYXRlOmZ1bmN0aW9uKCl7
cmV0dXJuIHRoaXMuc3RyaW5nfX0saS5wcm90b3R5cGU9e2VhY2hDaGFyOmZ1bmN0aW9uKGUpe2Uo
e2ludmFsaWRDaGFyczoiLyIscmVwZWF0OiEwfSl9LHJlZ2V4OmZ1bmN0aW9uKCl7cmV0dXJuIihb
Xi9dKykifSxnZW5lcmF0ZTpmdW5jdGlvbihlKXtyZXR1cm4gZVt0aGlzLm5hbWVdfX0sby5wcm90
b3R5cGU9e2VhY2hDaGFyOmZ1bmN0aW9uKGUpe2Uoe2ludmFsaWRDaGFyczoiIixyZXBlYXQ6ITB9
KX0scmVnZXg6ZnVuY3Rpb24oKXtyZXR1cm4iKC4rKSJ9LGdlbmVyYXRlOmZ1bmN0aW9uKGUpe3Jl
dHVybiBlW3RoaXMubmFtZV19fSxhLnByb3RvdHlwZT17ZWFjaENoYXI6ZnVuY3Rpb24oKXt9LHJl
Z2V4OmZ1bmN0aW9uKCl7cmV0dXJuIiJ9LGdlbmVyYXRlOmZ1bmN0aW9uKCl7cmV0dXJuIiJ9fSx1
LnByb3RvdHlwZT17Z2V0OmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLm5leHRTdGF0ZXMscj0w
LG49dC5sZW5ndGg7cjxuO3IrKyl7dmFyIGk9dFtyXSxvPWkuY2hhclNwZWMudmFsaWRDaGFycz09
PWUudmFsaWRDaGFycztpZihvPW8mJmkuY2hhclNwZWMuaW52YWxpZENoYXJzPT09ZS5pbnZhbGlk
Q2hhcnMpcmV0dXJuIGl9fSxwdXQ6ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuKHQ9dGhpcy5nZXQo
ZSkpP3Q6KHQ9bmV3IHUoZSksdGhpcy5uZXh0U3RhdGVzLnB1c2godCksZS5yZXBlYXQmJnQubmV4
dFN0YXRlcy5wdXNoKHQpLHQpfSxtYXRjaDpmdW5jdGlvbihlKXtmb3IodmFyIHQscixuLGk9dGhp
cy5uZXh0U3RhdGVzLG89W10sYT0wLHM9aS5sZW5ndGg7YTxzO2ErKyl0PWlbYV0scj10LmNoYXJT
cGVjLCJ1bmRlZmluZWQiIT10eXBlb2Yobj1yLnZhbGlkQ2hhcnMpP24uaW5kZXhPZihlKSE9PS0x
JiZvLnB1c2godCk6InVuZGVmaW5lZCIhPXR5cGVvZihuPXIuaW52YWxpZENoYXJzKSYmbi5pbmRl
eE9mKGUpPT09LTEmJm8ucHVzaCh0KTtyZXR1cm4gb319O3ZhciBiPU9iamVjdC5jcmVhdGV8fGZ1
bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlPWUsbmV3IHR9O2YucHJv
dG90eXBlPWIoe3NwbGljZTpBcnJheS5wcm90b3R5cGUuc3BsaWNlLHNsaWNlOkFycmF5LnByb3Rv
dHlwZS5zbGljZSxwdXNoOkFycmF5LnByb3RvdHlwZS5wdXNoLGxlbmd0aDowLHF1ZXJ5UGFyYW1z
Om51bGx9KTt2YXIgZz1mdW5jdGlvbigpe3RoaXMucm9vdFN0YXRlPW5ldyB1LHRoaXMubmFtZXM9
e319O2cucHJvdG90eXBlPXthZGQ6ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHIsbj10aGlzLnJvb3RT
dGF0ZSxpPSJeIixvPXtzdGF0aWNzOjAsZHluYW1pY3M6MCxzdGFyczowfSx1PVtdLGw9W10sYz0h
MCxmPTAsZD1lLmxlbmd0aDtmPGQ7ZisrKXt2YXIgaD1lW2ZdLG09W10sdj1zKGgucGF0aCxtLG8p
O2w9bC5jb25jYXQodik7Zm9yKHZhciBiPTAsZz12Lmxlbmd0aDtiPGc7YisrKXt2YXIgeT12W2Jd
O3kgaW5zdGFuY2VvZiBhfHwoYz0hMSxuPW4ucHV0KHt2YWxpZENoYXJzOiIvIn0pLGkrPSIvIixu
PXAobix5KSxpKz15LnJlZ2V4KCkpfXZhciBfPXtoYW5kbGVyOmguaGFuZGxlcixuYW1lczptfTt1
LnB1c2goXyl9YyYmKG49bi5wdXQoe3ZhbGlkQ2hhcnM6Ii8ifSksaSs9Ii8iKSxuLmhhbmRsZXJz
PXUsbi5yZWdleD1uZXcgUmVnRXhwKGkrIiQiKSxuLnR5cGVzPW8sKHI9dCYmdC5hcykmJih0aGlz
Lm5hbWVzW3JdPXtzZWdtZW50czpsLGhhbmRsZXJzOnV9KX0saGFuZGxlcnNGb3I6ZnVuY3Rpb24o
ZSl7dmFyIHQ9dGhpcy5uYW1lc1tlXSxyPVtdO2lmKCF0KXRocm93IG5ldyBFcnJvcigiVGhlcmUg
aXMgbm8gcm91dGUgbmFtZWQgIitlKTtmb3IodmFyIG49MCxpPXQuaGFuZGxlcnMubGVuZ3RoO248
aTtuKyspci5wdXNoKHQuaGFuZGxlcnNbbl0pO3JldHVybiByfSxoYXNSb3V0ZTpmdW5jdGlvbihl
KXtyZXR1cm4hIXRoaXMubmFtZXNbZV19LGdlbmVyYXRlOmZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhp
cy5uYW1lc1tlXSxuPSIiO2lmKCFyKXRocm93IG5ldyBFcnJvcigiVGhlcmUgaXMgbm8gcm91dGUg
bmFtZWQgIitlKTtmb3IodmFyIGk9ci5zZWdtZW50cyxvPTAscz1pLmxlbmd0aDtvPHM7bysrKXt2
YXIgdT1pW29dO3UgaW5zdGFuY2VvZiBhfHwobis9Ii8iLG4rPXUuZ2VuZXJhdGUodCkpfXJldHVy
biIvIiE9PW4uY2hhckF0KDApJiYobj0iLyIrbiksdCYmdC5xdWVyeVBhcmFtcyYmKG4rPXRoaXMu
Z2VuZXJhdGVRdWVyeVN0cmluZyh0LnF1ZXJ5UGFyYW1zLHIuaGFuZGxlcnMpKSxufSxnZW5lcmF0
ZVF1ZXJ5U3RyaW5nOmZ1bmN0aW9uKGUsdCl7dmFyIG49W10saT1bXTtmb3IodmFyIG8gaW4gZSll
Lmhhc093blByb3BlcnR5KG8pJiZpLnB1c2gobyk7aS5zb3J0KCk7Zm9yKHZhciBhPTAscz1pLmxl
bmd0aDthPHM7YSsrKXtvPWlbYV07dmFyIHU9ZVtvXTtpZihudWxsIT11KXt2YXIgbD1lbmNvZGVV
UklDb21wb25lbnQobyk7aWYocih1KSlmb3IodmFyIGM9MCxmPXUubGVuZ3RoO2M8ZjtjKyspe3Zh
ciBkPW8rIltdPSIrZW5jb2RlVVJJQ29tcG9uZW50KHVbY10pO24ucHVzaChkKX1lbHNlIGwrPSI9
IitlbmNvZGVVUklDb21wb25lbnQodSksbi5wdXNoKGwpfX1yZXR1cm4gMD09PW4ubGVuZ3RoPyIi
OiI/IituLmpvaW4oIiYiKX0scGFyc2VRdWVyeVN0cmluZzpmdW5jdGlvbihlKXtmb3IodmFyIHQ9
ZS5zcGxpdCgiJiIpLHI9e30sbj0wO248dC5sZW5ndGg7bisrKXt2YXIgaSxvPXRbbl0uc3BsaXQo
Ij0iKSxhPWgob1swXSkscz1hLmxlbmd0aCx1PSExOzE9PT1vLmxlbmd0aD9pPSJ0cnVlIjoocz4y
JiYiW10iPT09YS5zbGljZShzLTIpJiYodT0hMCxhPWEuc2xpY2UoMCxzLTIpLHJbYV18fChyW2Fd
PVtdKSksaT1vWzFdP2gob1sxXSk6IiIpLHU/clthXS5wdXNoKGkpOnJbYV09aX1yZXR1cm4gcn0s
cmVjb2duaXplOmZ1bmN0aW9uKGUpe3ZhciB0LHIsbixpLG89W3RoaXMucm9vdFN0YXRlXSxhPXt9
LHM9ITE7aWYoaT1lLmluZGV4T2YoIj8iKSxpIT09LTEpe3ZhciB1PWUuc3Vic3RyKGkrMSxlLmxl
bmd0aCk7ZT1lLnN1YnN0cigwLGkpLGE9dGhpcy5wYXJzZVF1ZXJ5U3RyaW5nKHUpfWZvcihlPWRl
Y29kZVVSSShlKSwiLyIhPT1lLmNoYXJBdCgwKSYmKGU9Ii8iK2UpLHQ9ZS5sZW5ndGgsdD4xJiYi
LyI9PT1lLmNoYXJBdCh0LTEpJiYoZT1lLnN1YnN0cigwLHQtMSkscz0hMCkscj0wLG49ZS5sZW5n
dGg7cjxuJiYobz1jKG8sZS5jaGFyQXQocikpLG8ubGVuZ3RoKTtyKyspO3ZhciBmPVtdO2Zvcihy
PTAsbj1vLmxlbmd0aDtyPG47cisrKW9bcl0uaGFuZGxlcnMmJmYucHVzaChvW3JdKTtvPWwoZik7
dmFyIHA9ZlswXTtpZihwJiZwLmhhbmRsZXJzKXJldHVybiBzJiYiKC4rKSQiPT09cC5yZWdleC5z
b3VyY2Uuc2xpY2UoLTUpJiYoZSs9Ii8iKSxkKHAsZSxhKX19LGcucHJvdG90eXBlLm1hcD10LmRl
ZmF1bHQsZy5WRVJTSU9OPSIwLjEuNSIsZS5kZWZhdWx0PWd9KSxlKCJyb3V0ZS1yZWNvZ25pemVy
L2RzbCIsWyJleHBvcnRzIl0sZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHQoZSx0
LHIpe3RoaXMucGF0aD1lLHRoaXMubWF0Y2hlcj10LHRoaXMuZGVsZWdhdGU9cn1mdW5jdGlvbiBy
KGUpe3RoaXMucm91dGVzPXt9LHRoaXMuY2hpbGRyZW49e30sdGhpcy50YXJnZXQ9ZX1mdW5jdGlv
biBuKGUscixpKXtyZXR1cm4gZnVuY3Rpb24obyxhKXt2YXIgcz1lK287cmV0dXJuIGE/dm9pZCBh
KG4ocyxyLGkpKTpuZXcgdChlK28scixpKX19ZnVuY3Rpb24gaShlLHQscil7Zm9yKHZhciBuPTAs
aT0wLG89ZS5sZW5ndGg7aTxvO2krKyluKz1lW2ldLnBhdGgubGVuZ3RoO3Q9dC5zdWJzdHIobik7
dmFyIGE9e3BhdGg6dCxoYW5kbGVyOnJ9O2UucHVzaChhKX1mdW5jdGlvbiBvKGUsdCxyLG4pe3Zh
ciBhPXQucm91dGVzO2Zvcih2YXIgcyBpbiBhKWlmKGEuaGFzT3duUHJvcGVydHkocykpe3ZhciB1
PWUuc2xpY2UoKTtpKHUscyxhW3NdKSx0LmNoaWxkcmVuW3NdP28odSx0LmNoaWxkcmVuW3NdLHIs
bik6ci5jYWxsKG4sdSl9fXQucHJvdG90eXBlPXt0bzpmdW5jdGlvbihlLHQpe3ZhciByPXRoaXMu
ZGVsZWdhdGU7aWYociYmci53aWxsQWRkUm91dGUmJihlPXIud2lsbEFkZFJvdXRlKHRoaXMubWF0
Y2hlci50YXJnZXQsZSkpLHRoaXMubWF0Y2hlci5hZGQodGhpcy5wYXRoLGUpLHQpe2lmKDA9PT10
Lmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIllvdSBtdXN0IGhhdmUgYW4gYXJndW1lbnQgaW4gdGhl
IGZ1bmN0aW9uIHBhc3NlZCB0byBgdG9gIik7dGhpcy5tYXRjaGVyLmFkZENoaWxkKHRoaXMucGF0
aCxlLHQsdGhpcy5kZWxlZ2F0ZSl9cmV0dXJuIHRoaXN9fSxyLnByb3RvdHlwZT17YWRkOmZ1bmN0
aW9uKGUsdCl7dGhpcy5yb3V0ZXNbZV09dH0sYWRkQ2hpbGQ6ZnVuY3Rpb24oZSx0LGksbyl7dmFy
IGE9bmV3IHIodCk7dGhpcy5jaGlsZHJlbltlXT1hO3ZhciBzPW4oZSxhLG8pO28mJm8uY29udGV4
dEVudGVyZWQmJm8uY29udGV4dEVudGVyZWQodCxzKSxpKHMpfX0sZS5kZWZhdWx0PWZ1bmN0aW9u
KGUsdCl7dmFyIGk9bmV3IHI7ZShuKCIiLGksdGhpcy5kZWxlZ2F0ZSkpLG8oW10saSxmdW5jdGlv
bihlKXt0P3QodGhpcyxlKTp0aGlzLmFkZChlKX0sdGhpcyl9fSksZSgicm91dGVyIixbImV4cG9y
dHMiLCJyb3V0ZXIvcm91dGVyIl0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZS5kZWZhdWx0
PXQuZGVmYXVsdH0pLGUoInJvdXRlci9oYW5kbGVyLWluZm8iLFsiZXhwb3J0cyIsInJvdXRlci91
dGlscyIsInJzdnAvcHJvbWlzZSJdLGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gbihlKXt2YXIgcj1lfHx7fTt0Lm1lcmdlKHRoaXMsciksdGhpcy5pbml0aWFsaXplKHIpfWZ1
bmN0aW9uIGkoZSx0KXtpZighZV4hdClyZXR1cm4hMTtpZighZSlyZXR1cm4hMDtmb3IodmFyIHIg
aW4gZSlpZihlLmhhc093blByb3BlcnR5KHIpJiZlW3JdIT09dFtyXSlyZXR1cm4hMTtyZXR1cm4h
MH1uLnByb3RvdHlwZT17bmFtZTpudWxsLGhhbmRsZXI6bnVsbCxwYXJhbXM6bnVsbCxjb250ZXh0
Om51bGwsZmFjdG9yeTpudWxsLGluaXRpYWxpemU6ZnVuY3Rpb24oKXt9LGxvZzpmdW5jdGlvbihl
LHQpe2UubG9nJiZlLmxvZyh0aGlzLm5hbWUrIjogIit0KX0scHJvbWlzZUxhYmVsOmZ1bmN0aW9u
KGUpe3JldHVybiB0LnByb21pc2VMYWJlbCgiJyIrdGhpcy5uYW1lKyInICIrZSl9LGdldFVucmVz
b2x2ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sc2VyaWFsaXplOmZ1bmN0aW9uKCl7cmV0dXJu
IHRoaXMucGFyYW1zfHx7fX0scmVzb2x2ZTpmdW5jdGlvbihlLG4pe3ZhciBpPXQuYmluZCh0aGlz
LHRoaXMuY2hlY2tGb3JBYm9ydCxlKSxvPXQuYmluZCh0aGlzLHRoaXMucnVuQmVmb3JlTW9kZWxI
b29rLG4pLGE9dC5iaW5kKHRoaXMsdGhpcy5nZXRNb2RlbCxuKSxzPXQuYmluZCh0aGlzLHRoaXMu
cnVuQWZ0ZXJNb2RlbEhvb2ssbiksdT10LmJpbmQodGhpcyx0aGlzLmJlY29tZVJlc29sdmVkLG4p
O3JldHVybiByLmRlZmF1bHQucmVzb2x2ZSh2b2lkIDAsdGhpcy5wcm9taXNlTGFiZWwoIlN0YXJ0
IGhhbmRsZXIiKSkudGhlbihpLG51bGwsdGhpcy5wcm9taXNlTGFiZWwoIkNoZWNrIGZvciBhYm9y
dCIpKS50aGVuKG8sbnVsbCx0aGlzLnByb21pc2VMYWJlbCgiQmVmb3JlIG1vZGVsIikpLnRoZW4o
aSxudWxsLHRoaXMucHJvbWlzZUxhYmVsKCJDaGVjayBpZiBhYm9ydGVkIGR1cmluZyAnYmVmb3Jl
TW9kZWwnIGhvb2siKSkudGhlbihhLG51bGwsdGhpcy5wcm9taXNlTGFiZWwoIk1vZGVsIikpLnRo
ZW4oaSxudWxsLHRoaXMucHJvbWlzZUxhYmVsKCJDaGVjayBpZiBhYm9ydGVkIGluICdtb2RlbCcg
aG9vayIpKS50aGVuKHMsbnVsbCx0aGlzLnByb21pc2VMYWJlbCgiQWZ0ZXIgbW9kZWwiKSkudGhl
bihpLG51bGwsdGhpcy5wcm9taXNlTGFiZWwoIkNoZWNrIGlmIGFib3J0ZWQgaW4gJ2FmdGVyTW9k
ZWwnIGhvb2siKSkudGhlbih1LG51bGwsdGhpcy5wcm9taXNlTGFiZWwoIkJlY29tZSByZXNvbHZl
ZCIpKX0scnVuQmVmb3JlTW9kZWxIb29rOmZ1bmN0aW9uKGUpe3JldHVybiBlLnRyaWdnZXImJmUu
dHJpZ2dlcighMCwid2lsbFJlc29sdmVNb2RlbCIsZSx0aGlzLmhhbmRsZXIpLHRoaXMucnVuU2hh
cmVkTW9kZWxIb29rKGUsImJlZm9yZU1vZGVsIixbXSl9LHJ1bkFmdGVyTW9kZWxIb29rOmZ1bmN0
aW9uKGUsdCl7dmFyIHI9dGhpcy5uYW1lO3JldHVybiB0aGlzLnN0YXNoUmVzb2x2ZWRNb2RlbChl
LHQpLHRoaXMucnVuU2hhcmVkTW9kZWxIb29rKGUsImFmdGVyTW9kZWwiLFt0XSkudGhlbihmdW5j
dGlvbigpe3JldHVybiBlLnJlc29sdmVkTW9kZWxzW3JdfSxudWxsLHRoaXMucHJvbWlzZUxhYmVs
KCJJZ25vcmUgZnVsZmlsbG1lbnQgdmFsdWUgYW5kIHJldHVybiBtb2RlbCB2YWx1ZSIpKX0scnVu
U2hhcmVkTW9kZWxIb29rOmZ1bmN0aW9uKGUsbixpKXt0aGlzLmxvZyhlLCJjYWxsaW5nICIrbisi
IGhvb2siKSx0aGlzLnF1ZXJ5UGFyYW1zJiZpLnB1c2godGhpcy5xdWVyeVBhcmFtcyksaS5wdXNo
KGUpO3ZhciBvPXQuYXBwbHlIb29rKHRoaXMuaGFuZGxlcixuLGkpO3JldHVybiBvJiZvLmlzVHJh
bnNpdGlvbiYmKG89bnVsbCksci5kZWZhdWx0LnJlc29sdmUobyx0aGlzLnByb21pc2VMYWJlbCgi
UmVzb2x2ZSB2YWx1ZSByZXR1cm5lZCBmcm9tIG9uZSBvZiB0aGUgbW9kZWwgaG9va3MiKSk7Cit9
LGdldE1vZGVsOm51bGwsY2hlY2tGb3JBYm9ydDpmdW5jdGlvbihlLHQpe3JldHVybiByLmRlZmF1
bHQucmVzb2x2ZShlKCksdGhpcy5wcm9taXNlTGFiZWwoIkNoZWNrIGZvciBhYm9ydCIpKS50aGVu
KGZ1bmN0aW9uKCl7cmV0dXJuIHR9LG51bGwsdGhpcy5wcm9taXNlTGFiZWwoIklnbm9yZSBmdWxm
aWxsbWVudCB2YWx1ZSBhbmQgY29udGludWUiKSl9LHN0YXNoUmVzb2x2ZWRNb2RlbDpmdW5jdGlv
bihlLHQpe2UucmVzb2x2ZWRNb2RlbHM9ZS5yZXNvbHZlZE1vZGVsc3x8e30sZS5yZXNvbHZlZE1v
ZGVsc1t0aGlzLm5hbWVdPXR9LGJlY29tZVJlc29sdmVkOmZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhp
cy5zZXJpYWxpemUodCk7cmV0dXJuIGUmJih0aGlzLnN0YXNoUmVzb2x2ZWRNb2RlbChlLHQpLGUu
cGFyYW1zPWUucGFyYW1zfHx7fSxlLnBhcmFtc1t0aGlzLm5hbWVdPXIpLHRoaXMuZmFjdG9yeSgi
cmVzb2x2ZWQiLHtjb250ZXh0OnQsbmFtZTp0aGlzLm5hbWUsaGFuZGxlcjp0aGlzLmhhbmRsZXIs
cGFyYW1zOnJ9KX0sc2hvdWxkU3VwZXJjZWRlOmZ1bmN0aW9uKGUpe2lmKCFlKXJldHVybiEwO3Zh
ciB0PWUuY29udGV4dD09PXRoaXMuY29udGV4dDtyZXR1cm4gZS5uYW1lIT09dGhpcy5uYW1lfHx0
aGlzLmhhc093blByb3BlcnR5KCJjb250ZXh0IikmJiF0fHx0aGlzLmhhc093blByb3BlcnR5KCJw
YXJhbXMiKSYmIWkodGhpcy5wYXJhbXMsZS5wYXJhbXMpfX0sZS5kZWZhdWx0PW59KSxlKCJyb3V0
ZXIvaGFuZGxlci1pbmZvL2ZhY3RvcnkiLFsiZXhwb3J0cyIsInJvdXRlci9oYW5kbGVyLWluZm8v
cmVzb2x2ZWQtaGFuZGxlci1pbmZvIiwicm91dGVyL2hhbmRsZXItaW5mby91bnJlc29sdmVkLWhh
bmRsZXItaW5mby1ieS1vYmplY3QiLCJyb3V0ZXIvaGFuZGxlci1pbmZvL3VucmVzb2x2ZWQtaGFu
ZGxlci1pbmZvLWJ5LXBhcmFtIl0sZnVuY3Rpb24oZSx0LHIsbil7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIGkoZSx0KXt2YXIgcj1pLmtsYXNzZXNbZV0sbj1uZXcgcih0fHx7fSk7cmV0dXJuIG4uZmFj
dG9yeT1pLG59aS5rbGFzc2VzPXtyZXNvbHZlZDp0LmRlZmF1bHQscGFyYW06bi5kZWZhdWx0LG9i
amVjdDpyLmRlZmF1bHR9LGUuZGVmYXVsdD1pfSksZSgicm91dGVyL2hhbmRsZXItaW5mby9yZXNv
bHZlZC1oYW5kbGVyLWluZm8iLFsiZXhwb3J0cyIsInJvdXRlci9oYW5kbGVyLWluZm8iLCJyb3V0
ZXIvdXRpbHMiLCJyc3ZwL3Byb21pc2UiXSxmdW5jdGlvbihlLHQscixuKXsidXNlIHN0cmljdCI7
dmFyIGk9ci5zdWJjbGFzcyh0LmRlZmF1bHQse3Jlc29sdmU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4g
dCYmdC5yZXNvbHZlZE1vZGVscyYmKHQucmVzb2x2ZWRNb2RlbHNbdGhpcy5uYW1lXT10aGlzLmNv
bnRleHQpLG4uZGVmYXVsdC5yZXNvbHZlKHRoaXMsdGhpcy5wcm9taXNlTGFiZWwoIlJlc29sdmUi
KSl9LGdldFVucmVzb2x2ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5mYWN0b3J5KCJwYXJhbSIs
e25hbWU6dGhpcy5uYW1lLGhhbmRsZXI6dGhpcy5oYW5kbGVyLHBhcmFtczp0aGlzLnBhcmFtc30p
fSxpc1Jlc29sdmVkOiEwfSk7ZS5kZWZhdWx0PWl9KSxlKCJyb3V0ZXIvaGFuZGxlci1pbmZvL3Vu
cmVzb2x2ZWQtaGFuZGxlci1pbmZvLWJ5LW9iamVjdCIsWyJleHBvcnRzIiwicm91dGVyL2hhbmRs
ZXItaW5mbyIsInJvdXRlci91dGlscyIsInJzdnAvcHJvbWlzZSJdLGZ1bmN0aW9uKGUsdCxyLG4p
eyJ1c2Ugc3RyaWN0Ijt2YXIgaT1yLnN1YmNsYXNzKHQuZGVmYXVsdCx7Z2V0TW9kZWw6ZnVuY3Rp
b24oZSl7cmV0dXJuIHRoaXMubG9nKGUsdGhpcy5uYW1lKyI6IHJlc29sdmluZyBwcm92aWRlZCBt
b2RlbCIpLG4uZGVmYXVsdC5yZXNvbHZlKHRoaXMuY29udGV4dCl9LGluaXRpYWxpemU6ZnVuY3Rp
b24oZSl7dGhpcy5uYW1lcz1lLm5hbWVzfHxbXSx0aGlzLmNvbnRleHQ9ZS5jb250ZXh0fSxzZXJp
YWxpemU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZXx8dGhpcy5jb250ZXh0LG49dGhpcy5uYW1lcyxpPXRo
aXMuaGFuZGxlcixvPXt9O2lmKHIuaXNQYXJhbSh0KSlyZXR1cm4gb1tuWzBdXT10LG87aWYoaS5z
ZXJpYWxpemUpcmV0dXJuIGkuc2VyaWFsaXplKHQsbik7aWYoMT09PW4ubGVuZ3RoKXt2YXIgYT1u
WzBdO3JldHVybi9faWQkLy50ZXN0KGEpP29bYV09dC5pZDpvW2FdPXQsb319fSk7ZS5kZWZhdWx0
PWl9KSxlKCJyb3V0ZXIvaGFuZGxlci1pbmZvL3VucmVzb2x2ZWQtaGFuZGxlci1pbmZvLWJ5LXBh
cmFtIixbImV4cG9ydHMiLCJyb3V0ZXIvaGFuZGxlci1pbmZvIiwicm91dGVyL3V0aWxzIl0sZnVu
Y3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yLnN1YmNsYXNzKHQuZGVmYXVsdCx7aW5p
dGlhbGl6ZTpmdW5jdGlvbihlKXt0aGlzLnBhcmFtcz1lLnBhcmFtc3x8e319LGdldE1vZGVsOmZ1
bmN0aW9uKGUpe3ZhciB0PXRoaXMucGFyYW1zO2UmJmUucXVlcnlQYXJhbXMmJih0PXt9LHIubWVy
Z2UodCx0aGlzLnBhcmFtcyksdC5xdWVyeVBhcmFtcz1lLnF1ZXJ5UGFyYW1zKTt2YXIgbj10aGlz
LmhhbmRsZXIsaT1yLnJlc29sdmVIb29rKG4sImRlc2VyaWFsaXplIil8fHIucmVzb2x2ZUhvb2so
biwibW9kZWwiKTtyZXR1cm4gdGhpcy5ydW5TaGFyZWRNb2RlbEhvb2soZSxpLFt0XSl9fSk7ZS5k
ZWZhdWx0PW59KSxlKCJyb3V0ZXIvcm91dGVyIixbImV4cG9ydHMiLCJyb3V0ZS1yZWNvZ25pemVy
IiwicnN2cC9wcm9taXNlIiwicm91dGVyL3V0aWxzIiwicm91dGVyL3RyYW5zaXRpb24tc3RhdGUi
LCJyb3V0ZXIvdHJhbnNpdGlvbiIsInJvdXRlci90cmFuc2l0aW9uLWludGVudC9uYW1lZC10cmFu
c2l0aW9uLWludGVudCIsInJvdXRlci90cmFuc2l0aW9uLWludGVudC91cmwtdHJhbnNpdGlvbi1p
bnRlbnQiLCJyb3V0ZXIvaGFuZGxlci1pbmZvIl0sZnVuY3Rpb24oZSx0LHIsbixpLG8sYSxzLHUp
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBsKGUpe3ZhciByPWV8fHt9O3RoaXMuZ2V0SGFuZGxlcj1y
LmdldEhhbmRsZXJ8fHRoaXMuZ2V0SGFuZGxlcix0aGlzLnVwZGF0ZVVSTD1yLnVwZGF0ZVVSTHx8
dGhpcy51cGRhdGVVUkwsdGhpcy5yZXBsYWNlVVJMPXIucmVwbGFjZVVSTHx8dGhpcy5yZXBsYWNl
VVJMLHRoaXMuZGlkVHJhbnNpdGlvbj1yLmRpZFRyYW5zaXRpb258fHRoaXMuZGlkVHJhbnNpdGlv
bix0aGlzLndpbGxUcmFuc2l0aW9uPXIud2lsbFRyYW5zaXRpb258fHRoaXMud2lsbFRyYW5zaXRp
b24sdGhpcy5kZWxlZ2F0ZT1yLmRlbGVnYXRlfHx0aGlzLmRlbGVnYXRlLHRoaXMudHJpZ2dlckV2
ZW50PXIudHJpZ2dlckV2ZW50fHx0aGlzLnRyaWdnZXJFdmVudCx0aGlzLmxvZz1yLmxvZ3x8dGhp
cy5sb2csdGhpcy5yZWNvZ25pemVyPW5ldyB0LmRlZmF1bHQsdGhpcy5yZXNldCgpfWZ1bmN0aW9u
IGMoZSx0KXt2YXIgcixpPSEhdGhpcy5hY3RpdmVUcmFuc2l0aW9uLGE9aT90aGlzLmFjdGl2ZVRy
YW5zaXRpb24uc3RhdGU6dGhpcy5zdGF0ZSxzPWUuYXBwbHlUb1N0YXRlKGEsdGhpcy5yZWNvZ25p
emVyLHRoaXMuZ2V0SGFuZGxlcix0KSx1PW4uZ2V0Q2hhbmdlbGlzdChhLnF1ZXJ5UGFyYW1zLHMu
cXVlcnlQYXJhbXMpO3JldHVybiBnKHMuaGFuZGxlckluZm9zLGEuaGFuZGxlckluZm9zKT91JiYo
cj10aGlzLnF1ZXJ5UGFyYW1zVHJhbnNpdGlvbih1LGksYSxzKSk/cjp0aGlzLmFjdGl2ZVRyYW5z
aXRpb258fG5ldyBvLlRyYW5zaXRpb24odGhpcyk6dD92b2lkIGQodGhpcyxzKToocj1uZXcgby5U
cmFuc2l0aW9uKHRoaXMsZSxzKSx0aGlzLmFjdGl2ZVRyYW5zaXRpb24mJnRoaXMuYWN0aXZlVHJh
bnNpdGlvbi5hYm9ydCgpLHRoaXMuYWN0aXZlVHJhbnNpdGlvbj1yLHIucHJvbWlzZT1yLnByb21p
c2UudGhlbihmdW5jdGlvbihlKXtyZXR1cm4gdihyLGUuc3RhdGUpfSxudWxsLG4ucHJvbWlzZUxh
YmVsKCJTZXR0bGUgdHJhbnNpdGlvbiBwcm9taXNlIHdoZW4gdHJhbnNpdGlvbiBpcyBmaW5hbGl6
ZWQiKSksaXx8Xyh0aGlzLHMsciksZih0aGlzLHMsdSkscil9ZnVuY3Rpb24gZihlLHQscil7ciYm
KGUuX2NoYW5nZWRRdWVyeVBhcmFtcz1yLmFsbCxuLnRyaWdnZXIoZSx0LmhhbmRsZXJJbmZvcywh
MCxbInF1ZXJ5UGFyYW1zRGlkQ2hhbmdlIixyLmNoYW5nZWQsci5hbGwsci5yZW1vdmVkXSksZS5f
Y2hhbmdlZFF1ZXJ5UGFyYW1zPW51bGwpfWZ1bmN0aW9uIGQoZSx0LHIpe3ZhciBpLG8sYSxzPWgo
ZS5zdGF0ZSx0KTtmb3IoaT0wLG89cy5leGl0ZWQubGVuZ3RoO2k8bztpKyspYT1zLmV4aXRlZFtp
XS5oYW5kbGVyLGRlbGV0ZSBhLmNvbnRleHQsbi5jYWxsSG9vayhhLCJyZXNldCIsITAsciksbi5j
YWxsSG9vayhhLCJleGl0IixyKTt2YXIgdT1lLm9sZFN0YXRlPWUuc3RhdGU7ZS5zdGF0ZT10O3Zh
ciBsPWUuY3VycmVudEhhbmRsZXJJbmZvcz1zLnVuY2hhbmdlZC5zbGljZSgpO3RyeXtmb3IoaT0w
LG89cy5yZXNldC5sZW5ndGg7aTxvO2krKylhPXMucmVzZXRbaV0uaGFuZGxlcixuLmNhbGxIb29r
KGEsInJlc2V0IiwhMSxyKTtmb3IoaT0wLG89cy51cGRhdGVkQ29udGV4dC5sZW5ndGg7aTxvO2kr
KylwKGwscy51cGRhdGVkQ29udGV4dFtpXSwhMSxyKTtmb3IoaT0wLG89cy5lbnRlcmVkLmxlbmd0
aDtpPG87aSsrKXAobCxzLmVudGVyZWRbaV0sITAscil9Y2F0Y2godCl7dGhyb3cgZS5zdGF0ZT11
LGUuY3VycmVudEhhbmRsZXJJbmZvcz11LmhhbmRsZXJJbmZvcyx0fWUuc3RhdGUucXVlcnlQYXJh
bXM9eShlLGwsdC5xdWVyeVBhcmFtcyxyKX1mdW5jdGlvbiBwKGUsdCxyLGkpe3ZhciBhPXQuaGFu
ZGxlcixzPXQuY29udGV4dDtpZihyJiZuLmNhbGxIb29rKGEsImVudGVyIixpKSxpJiZpLmlzQWJv
cnRlZCl0aHJvdyBuZXcgby5UcmFuc2l0aW9uQWJvcnRlZDtpZihhLmNvbnRleHQ9cyxuLmNhbGxI
b29rKGEsImNvbnRleHREaWRDaGFuZ2UiKSxuLmNhbGxIb29rKGEsInNldHVwIixzLGkpLGkmJmku
aXNBYm9ydGVkKXRocm93IG5ldyBvLlRyYW5zaXRpb25BYm9ydGVkO3JldHVybiBlLnB1c2godCks
ITB9ZnVuY3Rpb24gaChlLHQpe3ZhciByLG4saSxvPWUuaGFuZGxlckluZm9zLGE9dC5oYW5kbGVy
SW5mb3Mscz17dXBkYXRlZENvbnRleHQ6W10sZXhpdGVkOltdLGVudGVyZWQ6W10sdW5jaGFuZ2Vk
OltdfSx1PSExO2ZvcihuPTAsaT1hLmxlbmd0aDtuPGk7bisrKXt2YXIgbD1vW25dLGM9YVtuXTts
JiZsLmhhbmRsZXI9PT1jLmhhbmRsZXJ8fChyPSEwKSxyPyhzLmVudGVyZWQucHVzaChjKSxsJiZz
LmV4aXRlZC51bnNoaWZ0KGwpKTp1fHxsLmNvbnRleHQhPT1jLmNvbnRleHQ/KHU9ITAscy51cGRh
dGVkQ29udGV4dC5wdXNoKGMpKTpzLnVuY2hhbmdlZC5wdXNoKGwpfWZvcihuPWEubGVuZ3RoLGk9
by5sZW5ndGg7bjxpO24rKylzLmV4aXRlZC51bnNoaWZ0KG9bbl0pO3JldHVybiBzLnJlc2V0PXMu
dXBkYXRlZENvbnRleHQuc2xpY2UoKSxzLnJlc2V0LnJldmVyc2UoKSxzfWZ1bmN0aW9uIG0oZSx0
LHIpe3ZhciBpPWUudXJsTWV0aG9kO2lmKGkpe2Zvcih2YXIgbz1lLnJvdXRlcixhPXQuaGFuZGxl
ckluZm9zLHM9YVthLmxlbmd0aC0xXS5uYW1lLHU9e30sbD1hLmxlbmd0aC0xO2w+PTA7LS1sKXt2
YXIgYz1hW2xdO24ubWVyZ2UodSxjLnBhcmFtcyksYy5oYW5kbGVyLmluYWNjZXNzaWJsZUJ5VVJM
JiYoaT1udWxsKX1pZihpKXt1LnF1ZXJ5UGFyYW1zPWUuX3Zpc2libGVRdWVyeVBhcmFtc3x8dC5x
dWVyeVBhcmFtczt2YXIgZj1vLnJlY29nbml6ZXIuZ2VuZXJhdGUocyx1KTsicmVwbGFjZSI9PT1p
P28ucmVwbGFjZVVSTChmKTpvLnVwZGF0ZVVSTChmKX19fWZ1bmN0aW9uIHYoZSx0KXt0cnl7bi5s
b2coZS5yb3V0ZXIsZS5zZXF1ZW5jZSwiUmVzb2x2ZWQgYWxsIG1vZGVscyBvbiBkZXN0aW5hdGlv
biByb3V0ZTsgZmluYWxpemluZyB0cmFuc2l0aW9uLiIpO3ZhciBpPWUucm91dGVyLGE9dC5oYW5k
bGVySW5mb3M7ZS5zZXF1ZW5jZTtyZXR1cm4gZChpLHQsZSksZS5pc0Fib3J0ZWQ/KGkuc3RhdGUu
aGFuZGxlckluZm9zPWkuY3VycmVudEhhbmRsZXJJbmZvcyxyLmRlZmF1bHQucmVqZWN0KG8ubG9n
QWJvcnQoZSkpKToobShlLHQsZS5pbnRlbnQudXJsKSxlLmlzQWN0aXZlPSExLGkuYWN0aXZlVHJh
bnNpdGlvbj1udWxsLG4udHJpZ2dlcihpLGkuY3VycmVudEhhbmRsZXJJbmZvcywhMCxbImRpZFRy
YW5zaXRpb24iXSksaS5kaWRUcmFuc2l0aW9uJiZpLmRpZFRyYW5zaXRpb24oaS5jdXJyZW50SGFu
ZGxlckluZm9zKSxuLmxvZyhpLGUuc2VxdWVuY2UsIlRSQU5TSVRJT04gQ09NUExFVEUuIiksYVth
Lmxlbmd0aC0xXS5oYW5kbGVyKX1jYXRjaCh0KXtpZighKHQgaW5zdGFuY2VvZiBvLlRyYW5zaXRp
b25BYm9ydGVkKSl7dmFyIHM9ZS5zdGF0ZS5oYW5kbGVySW5mb3M7ZS50cmlnZ2VyKCEwLCJlcnJv
ciIsdCxlLHNbcy5sZW5ndGgtMV0uaGFuZGxlciksZS5hYm9ydCgpfXRocm93IHR9fWZ1bmN0aW9u
IGIoZSx0LHIpe3ZhciBpPXRbMF18fCIvIixvPXRbdC5sZW5ndGgtMV0sdT17fTtvJiZvLmhhc093
blByb3BlcnR5KCJxdWVyeVBhcmFtcyIpJiYodT13LmNhbGwodCkucXVlcnlQYXJhbXMpO3ZhciBs
O2lmKDA9PT10Lmxlbmd0aCl7bi5sb2coZSwiVXBkYXRpbmcgcXVlcnkgcGFyYW1zIik7dmFyIGM9
ZS5zdGF0ZS5oYW5kbGVySW5mb3M7bD1uZXcgYS5kZWZhdWx0KHtuYW1lOmNbYy5sZW5ndGgtMV0u
bmFtZSxjb250ZXh0czpbXSxxdWVyeVBhcmFtczp1fSl9ZWxzZSIvIj09PWkuY2hhckF0KDApPyhu
LmxvZyhlLCJBdHRlbXB0aW5nIFVSTCB0cmFuc2l0aW9uIHRvICIraSksbD1uZXcgcy5kZWZhdWx0
KHt1cmw6aX0pKToobi5sb2coZSwiQXR0ZW1wdGluZyB0cmFuc2l0aW9uIHRvICIraSksbD1uZXcg
YS5kZWZhdWx0KHtuYW1lOnRbMF0sY29udGV4dHM6bi5zbGljZS5jYWxsKHQsMSkscXVlcnlQYXJh
bXM6dX0pKTtyZXR1cm4gZS50cmFuc2l0aW9uQnlJbnRlbnQobCxyKX1mdW5jdGlvbiBnKGUsdCl7
aWYoZS5sZW5ndGghPT10Lmxlbmd0aClyZXR1cm4hMTtmb3IodmFyIHI9MCxuPWUubGVuZ3RoO3I8
bjsrK3IpaWYoZVtyXSE9PXRbcl0pcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24geShlLHQscixp
KXtmb3IodmFyIG8gaW4gcilyLmhhc093blByb3BlcnR5KG8pJiZudWxsPT09cltvXSYmZGVsZXRl
IHJbb107dmFyIGE9W107bi50cmlnZ2VyKGUsdCwhMCxbImZpbmFsaXplUXVlcnlQYXJhbUNoYW5n
ZSIscixhLGldKSxpJiYoaS5fdmlzaWJsZVF1ZXJ5UGFyYW1zPXt9KTtmb3IodmFyIHM9e30sdT0w
LGw9YS5sZW5ndGg7dTxsOysrdSl7dmFyIGM9YVt1XTtzW2Mua2V5XT1jLnZhbHVlLGkmJmMudmlz
aWJsZSE9PSExJiYoaS5fdmlzaWJsZVF1ZXJ5UGFyYW1zW2Mua2V5XT1jLnZhbHVlKX1yZXR1cm4g
c31mdW5jdGlvbiBfKGUsdCxyKXt2YXIgaSxvLGEscyx1LGwsYz1lLnN0YXRlLmhhbmRsZXJJbmZv
cyxmPVtdLGQ9bnVsbDtmb3Iocz1jLmxlbmd0aCxhPTA7YTxzO2ErKyl7aWYodT1jW2FdLGw9dC5o
YW5kbGVySW5mb3NbYV0sIWx8fHUubmFtZSE9PWwubmFtZSl7ZD1hO2JyZWFrfWwuaXNSZXNvbHZl
ZHx8Zi5wdXNoKHUpfW51bGwhPT1kJiYoaT1jLnNsaWNlKGQscyksbz1mdW5jdGlvbihlKXtmb3Io
dmFyIHQ9MCxyPWkubGVuZ3RoO3Q8cjt0KyspaWYoaVt0XS5uYW1lPT09ZSlyZXR1cm4hMDtyZXR1
cm4hMX0pLG4udHJpZ2dlcihlLGMsITAsWyJ3aWxsVHJhbnNpdGlvbiIscl0pLGUud2lsbFRyYW5z
aXRpb24mJmUud2lsbFRyYW5zaXRpb24oYyx0LmhhbmRsZXJJbmZvcyxyKX12YXIgdz1BcnJheS5w
cm90b3R5cGUucG9wO2wucHJvdG90eXBlPXttYXA6ZnVuY3Rpb24oZSl7dGhpcy5yZWNvZ25pemVy
LmRlbGVnYXRlPXRoaXMuZGVsZWdhdGUsdGhpcy5yZWNvZ25pemVyLm1hcChlLGZ1bmN0aW9uKGUs
dCl7Zm9yKHZhciByPXQubGVuZ3RoLTEsbj0hMDtyPj0wJiZuOy0tcil7dmFyIGk9dFtyXTtlLmFk
ZCh0LHthczppLmhhbmRsZXJ9KSxuPSIvIj09PWkucGF0aHx8IiI9PT1pLnBhdGh8fCIuaW5kZXgi
PT09aS5oYW5kbGVyLnNsaWNlKC02KX19KX0saGFzUm91dGU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRo
aXMucmVjb2duaXplci5oYXNSb3V0ZShlKX0sZ2V0SGFuZGxlcjpmdW5jdGlvbigpe30scXVlcnlQ
YXJhbXNUcmFuc2l0aW9uOmZ1bmN0aW9uKGUsdCxyLGkpe3ZhciBhPXRoaXM7aWYoZih0aGlzLGks
ZSksIXQmJnRoaXMuYWN0aXZlVHJhbnNpdGlvbilyZXR1cm4gdGhpcy5hY3RpdmVUcmFuc2l0aW9u
O3ZhciBzPW5ldyBvLlRyYW5zaXRpb24odGhpcyk7cmV0dXJuIHMucXVlcnlQYXJhbXNPbmx5PSEw
LHIucXVlcnlQYXJhbXM9eSh0aGlzLGkuaGFuZGxlckluZm9zLGkucXVlcnlQYXJhbXMscykscy5w
cm9taXNlPXMucHJvbWlzZS50aGVuKGZ1bmN0aW9uKGUpe3JldHVybiBtKHMsciwhMCksYS5kaWRU
cmFuc2l0aW9uJiZhLmRpZFRyYW5zaXRpb24oYS5jdXJyZW50SGFuZGxlckluZm9zKSxlfSxudWxs
LG4ucHJvbWlzZUxhYmVsKCJUcmFuc2l0aW9uIGNvbXBsZXRlIikpLHN9LHRyYW5zaXRpb25CeUlu
dGVudDpmdW5jdGlvbihlLHQpe3RyeXtyZXR1cm4gYy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9Y2F0
Y2godCl7cmV0dXJuIG5ldyBvLlRyYW5zaXRpb24odGhpcyxlLG51bGwsdCl9fSxyZXNldDpmdW5j
dGlvbigpe3RoaXMuc3RhdGUmJm4uZm9yRWFjaCh0aGlzLnN0YXRlLmhhbmRsZXJJbmZvcy5zbGlj
ZSgpLnJldmVyc2UoKSxmdW5jdGlvbihlKXt2YXIgdD1lLmhhbmRsZXI7bi5jYWxsSG9vayh0LCJl
eGl0Iil9KSx0aGlzLnN0YXRlPW5ldyBpLmRlZmF1bHQsdGhpcy5jdXJyZW50SGFuZGxlckluZm9z
PW51bGx9LGFjdGl2ZVRyYW5zaXRpb246bnVsbCxoYW5kbGVVUkw6ZnVuY3Rpb24oZSl7dmFyIHQ9
bi5zbGljZS5jYWxsKGFyZ3VtZW50cyk7cmV0dXJuIi8iIT09ZS5jaGFyQXQoMCkmJih0WzBdPSIv
IitlKSxiKHRoaXMsdCkubWV0aG9kKG51bGwpfSx1cGRhdGVVUkw6ZnVuY3Rpb24oKXt0aHJvdyBu
ZXcgRXJyb3IoInVwZGF0ZVVSTCBpcyBub3QgaW1wbGVtZW50ZWQiKX0scmVwbGFjZVVSTDpmdW5j
dGlvbihlKXt0aGlzLnVwZGF0ZVVSTChlKX0sdHJhbnNpdGlvblRvOmZ1bmN0aW9uKGUpe3JldHVy
biBiKHRoaXMsYXJndW1lbnRzKX0saW50ZXJtZWRpYXRlVHJhbnNpdGlvblRvOmZ1bmN0aW9uKGUp
e3JldHVybiBiKHRoaXMsYXJndW1lbnRzLCEwKX0scmVmcmVzaDpmdW5jdGlvbihlKXtmb3IodmFy
IHQ9dGhpcy5hY3RpdmVUcmFuc2l0aW9uP3RoaXMuYWN0aXZlVHJhbnNpdGlvbi5zdGF0ZTp0aGlz
LnN0YXRlLHI9dC5oYW5kbGVySW5mb3MsaT17fSxvPTAscz1yLmxlbmd0aDtvPHM7KytvKXt2YXIg
dT1yW29dO2lbdS5uYW1lXT11LnBhcmFtc3x8e319bi5sb2codGhpcywiU3RhcnRpbmcgYSByZWZy
ZXNoIHRyYW5zaXRpb24iKTt2YXIgbD1uZXcgYS5kZWZhdWx0KHtuYW1lOnJbci5sZW5ndGgtMV0u
bmFtZSxwaXZvdEhhbmRsZXI6ZXx8clswXS5oYW5kbGVyLGNvbnRleHRzOltdLHF1ZXJ5UGFyYW1z
OnRoaXMuX2NoYW5nZWRRdWVyeVBhcmFtc3x8dC5xdWVyeVBhcmFtc3x8e319KTtyZXR1cm4gdGhp
cy50cmFuc2l0aW9uQnlJbnRlbnQobCwhMSl9LHJlcGxhY2VXaXRoOmZ1bmN0aW9uKGUpe3JldHVy
biBiKHRoaXMsYXJndW1lbnRzKS5tZXRob2QoInJlcGxhY2UiKX0sZ2VuZXJhdGU6ZnVuY3Rpb24o
ZSl7Zm9yKHZhciB0PW4uZXh0cmFjdFF1ZXJ5UGFyYW1zKG4uc2xpY2UuY2FsbChhcmd1bWVudHMs
MSkpLHI9dFswXSxpPXRbMV0sbz1uZXcgYS5kZWZhdWx0KHtuYW1lOmUsY29udGV4dHM6cn0pLHM9
by5hcHBseVRvU3RhdGUodGhpcy5zdGF0ZSx0aGlzLnJlY29nbml6ZXIsdGhpcy5nZXRIYW5kbGVy
KSx1PXt9LGw9MCxjPXMuaGFuZGxlckluZm9zLmxlbmd0aDtsPGM7KytsKXt2YXIgZj1zLmhhbmRs
ZXJJbmZvc1tsXSxkPWYuc2VyaWFsaXplKCk7bi5tZXJnZSh1LGQpfXJldHVybiB1LnF1ZXJ5UGFy
YW1zPWksdGhpcy5yZWNvZ25pemVyLmdlbmVyYXRlKGUsdSl9LGFwcGx5SW50ZW50OmZ1bmN0aW9u
KGUsdCl7dmFyIHI9bmV3IGEuZGVmYXVsdCh7bmFtZTplLGNvbnRleHRzOnR9KSxuPXRoaXMuYWN0
aXZlVHJhbnNpdGlvbiYmdGhpcy5hY3RpdmVUcmFuc2l0aW9uLnN0YXRlfHx0aGlzLnN0YXRlO3Jl
dHVybiByLmFwcGx5VG9TdGF0ZShuLHRoaXMucmVjb2duaXplcix0aGlzLmdldEhhbmRsZXIpfSxp
c0FjdGl2ZUludGVudDpmdW5jdGlvbihlLHQscixvKXt2YXIgcyx1LGw9b3x8dGhpcy5zdGF0ZSxj
PWwuaGFuZGxlckluZm9zO2lmKCFjLmxlbmd0aClyZXR1cm4hMTt2YXIgZj1jW2MubGVuZ3RoLTFd
Lm5hbWUsZD10aGlzLnJlY29nbml6ZXIuaGFuZGxlcnNGb3IoZikscD0wO2Zvcih1PWQubGVuZ3Ro
O3A8dSYmKHM9Y1twXSxzLm5hbWUhPT1lKTsrK3ApO2lmKHA9PT1kLmxlbmd0aClyZXR1cm4hMTt2
YXIgaD1uZXcgaS5kZWZhdWx0O2guaGFuZGxlckluZm9zPWMuc2xpY2UoMCxwKzEpLGQ9ZC5zbGlj
ZSgwLHArMSk7dmFyIG09bmV3IGEuZGVmYXVsdCh7bmFtZTpmLGNvbnRleHRzOnR9KSx2PW0uYXBw
bHlUb0hhbmRsZXJzKGgsZCx0aGlzLmdldEhhbmRsZXIsZiwhMCwhMCksYj1nKHYuaGFuZGxlcklu
Zm9zLGguaGFuZGxlckluZm9zKTtpZighcnx8IWIpcmV0dXJuIGI7dmFyIHk9e307bi5tZXJnZSh5
LHIpO3ZhciBfPWwucXVlcnlQYXJhbXM7Zm9yKHZhciB3IGluIF8pXy5oYXNPd25Qcm9wZXJ0eSh3
KSYmeS5oYXNPd25Qcm9wZXJ0eSh3KSYmKHlbd109X1t3XSk7cmV0dXJuIGImJiFuLmdldENoYW5n
ZWxpc3QoeSxyKX0saXNBY3RpdmU6ZnVuY3Rpb24oZSl7dmFyIHQ9bi5leHRyYWN0UXVlcnlQYXJh
bXMobi5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSk7cmV0dXJuIHRoaXMuaXNBY3RpdmVJbnRlbnQo
ZSx0WzBdLHRbMV0pfSx0cmlnZ2VyOmZ1bmN0aW9uKGUpe3ZhciB0PW4uc2xpY2UuY2FsbChhcmd1
bWVudHMpO24udHJpZ2dlcih0aGlzLHRoaXMuY3VycmVudEhhbmRsZXJJbmZvcywhMSx0KX0sbG9n
Om51bGx9LGUuZGVmYXVsdD1sfSksZSgicm91dGVyL3RyYW5zaXRpb24taW50ZW50IixbImV4cG9y
dHMiLCJyb3V0ZXIvdXRpbHMiXSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBy
KGUpe3RoaXMuaW5pdGlhbGl6ZShlKSx0aGlzLmRhdGE9dGhpcy5kYXRhfHx7fX1yLnByb3RvdHlw
ZT17aW5pdGlhbGl6ZTpudWxsLGFwcGx5VG9TdGF0ZTpudWxsfSxlLmRlZmF1bHQ9cn0pLGUoInJv
dXRlci90cmFuc2l0aW9uLWludGVudC9uYW1lZC10cmFuc2l0aW9uLWludGVudCIsWyJleHBvcnRz
Iiwicm91dGVyL3RyYW5zaXRpb24taW50ZW50Iiwicm91dGVyL3RyYW5zaXRpb24tc3RhdGUiLCJy
b3V0ZXIvaGFuZGxlci1pbmZvL2ZhY3RvcnkiLCJyb3V0ZXIvdXRpbHMiXSxmdW5jdGlvbihlLHQs
cixuLGkpeyJ1c2Ugc3RyaWN0IjtlLmRlZmF1bHQ9aS5zdWJjbGFzcyh0LmRlZmF1bHQse25hbWU6
bnVsbCxwaXZvdEhhbmRsZXI6bnVsbCxjb250ZXh0czpudWxsLHF1ZXJ5UGFyYW1zOm51bGwsaW5p
dGlhbGl6ZTpmdW5jdGlvbihlKXt0aGlzLm5hbWU9ZS5uYW1lLHRoaXMucGl2b3RIYW5kbGVyPWUu
cGl2b3RIYW5kbGVyLHRoaXMuY29udGV4dHM9ZS5jb250ZXh0c3x8W10sdGhpcy5xdWVyeVBhcmFt
cz1lLnF1ZXJ5UGFyYW1zfSxhcHBseVRvU3RhdGU6ZnVuY3Rpb24oZSx0LHIsbil7dmFyIG89aS5l
eHRyYWN0UXVlcnlQYXJhbXMoW3RoaXMubmFtZV0uY29uY2F0KHRoaXMuY29udGV4dHMpKSxhPW9b
MF0scz0ob1sxXSx0LmhhbmRsZXJzRm9yKGFbMF0pKSx1PXNbcy5sZW5ndGgtMV0uaGFuZGxlcjty
ZXR1cm4gdGhpcy5hcHBseVRvSGFuZGxlcnMoZSxzLHIsdSxuKX0sYXBwbHlUb0hhbmRsZXJzOmZ1
bmN0aW9uKGUsdCxuLG8sYSxzKXt2YXIgdSxsLGM9bmV3IHIuZGVmYXVsdCxmPXRoaXMuY29udGV4
dHMuc2xpY2UoMCksZD10Lmxlbmd0aDtpZih0aGlzLnBpdm90SGFuZGxlcilmb3IodT0wLGw9dC5s
ZW5ndGg7dTxsOysrdSlpZihuKHRbdV0uaGFuZGxlcik9PT10aGlzLnBpdm90SGFuZGxlcil7ZD11
O2JyZWFrfSF0aGlzLnBpdm90SGFuZGxlcjtmb3IodT10Lmxlbmd0aC0xO3U+PTA7LS11KXt2YXIg
cD10W3VdLGg9cC5oYW5kbGVyLG09bihoKSx2PWUuaGFuZGxlckluZm9zW3VdLGI9bnVsbDtpZihi
PXAubmFtZXMubGVuZ3RoPjA/dT49ZD90aGlzLmNyZWF0ZVBhcmFtSGFuZGxlckluZm8oaCxtLHAu
bmFtZXMsZix2KTp0aGlzLmdldEhhbmRsZXJJbmZvRm9yRHluYW1pY1NlZ21lbnQoaCxtLHAubmFt
ZXMsZix2LG8sdSk6dGhpcy5jcmVhdGVQYXJhbUhhbmRsZXJJbmZvKGgsbSxwLm5hbWVzLGYsdiks
cyl7Yj1iLmJlY29tZVJlc29sdmVkKG51bGwsYi5jb250ZXh0KTt2YXIgZz12JiZ2LmNvbnRleHQ7
cC5uYW1lcy5sZW5ndGg+MCYmYi5jb250ZXh0PT09ZyYmKGIucGFyYW1zPXYmJnYucGFyYW1zKSxi
LmNvbnRleHQ9Z312YXIgeT12Oyh1Pj1kfHxiLnNob3VsZFN1cGVyY2VkZSh2KSkmJihkPU1hdGgu
bWluKHUsZCkseT1iKSxhJiYhcyYmKHk9eS5iZWNvbWVSZXNvbHZlZChudWxsLHkuY29udGV4dCkp
LGMuaGFuZGxlckluZm9zLnVuc2hpZnQoeSl9aWYoZi5sZW5ndGg+MCl0aHJvdyBuZXcgRXJyb3Io
Ik1vcmUgY29udGV4dCBvYmplY3RzIHdlcmUgcGFzc2VkIHRoYW4gdGhlcmUgYXJlIGR5bmFtaWMg
c2VnbWVudHMgZm9yIHRoZSByb3V0ZTogIitvKTtyZXR1cm4gYXx8dGhpcy5pbnZhbGlkYXRlQ2hp
bGRyZW4oYy5oYW5kbGVySW5mb3MsZCksaS5tZXJnZShjLnF1ZXJ5UGFyYW1zLHRoaXMucXVlcnlQ
YXJhbXN8fHt9KSxjfSxpbnZhbGlkYXRlQ2hpbGRyZW46ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9
dCxuPWUubGVuZ3RoO3I8bjsrK3Ipe2Vbcl07ZVtyXT1lW3JdLmdldFVucmVzb2x2ZWQoKX19LGdl
dEhhbmRsZXJJbmZvRm9yRHluYW1pY1NlZ21lbnQ6ZnVuY3Rpb24oZSx0LHIsbyxhLHMsdSl7dmFy
IGw7ci5sZW5ndGg7aWYoby5sZW5ndGg+MCl7aWYobD1vW28ubGVuZ3RoLTFdLGkuaXNQYXJhbShs
KSlyZXR1cm4gdGhpcy5jcmVhdGVQYXJhbUhhbmRsZXJJbmZvKGUsdCxyLG8sYSk7by5wb3AoKX1l
bHNle2lmKGEmJmEubmFtZT09PWUpcmV0dXJuIGE7aWYoIXRoaXMucHJlVHJhbnNpdGlvblN0YXRl
KXJldHVybiBhO3ZhciBjPXRoaXMucHJlVHJhbnNpdGlvblN0YXRlLmhhbmRsZXJJbmZvc1t1XTts
PWMmJmMuY29udGV4dH1yZXR1cm4gbi5kZWZhdWx0KCJvYmplY3QiLHtuYW1lOmUsaGFuZGxlcjp0
LGNvbnRleHQ6bCxuYW1lczpyfSl9LGNyZWF0ZVBhcmFtSGFuZGxlckluZm86ZnVuY3Rpb24oZSx0
LHIsbyxhKXtmb3IodmFyIHM9e30sdT1yLmxlbmd0aDt1LS07KXt2YXIgbD1hJiZlPT09YS5uYW1l
JiZhLnBhcmFtc3x8e30sYz1vW28ubGVuZ3RoLTFdLGY9clt1XTtpZihpLmlzUGFyYW0oYykpc1tm
XT0iIitvLnBvcCgpO2Vsc2V7aWYoIWwuaGFzT3duUHJvcGVydHkoZikpdGhyb3cgbmV3IEVycm9y
KCJZb3UgZGlkbid0IHByb3ZpZGUgZW5vdWdoIHN0cmluZy9udW1lcmljIHBhcmFtZXRlcnMgdG8g
c2F0aXNmeSBhbGwgb2YgdGhlIGR5bmFtaWMgc2VnbWVudHMgZm9yIHJvdXRlICIrZSk7c1tmXT1s
W2ZdfX1yZXR1cm4gbi5kZWZhdWx0KCJwYXJhbSIse25hbWU6ZSxoYW5kbGVyOnQscGFyYW1zOnN9
KX19KX0pLGUoInJvdXRlci90cmFuc2l0aW9uLWludGVudC91cmwtdHJhbnNpdGlvbi1pbnRlbnQi
LFsiZXhwb3J0cyIsInJvdXRlci90cmFuc2l0aW9uLWludGVudCIsInJvdXRlci90cmFuc2l0aW9u
LXN0YXRlIiwicm91dGVyL2hhbmRsZXItaW5mby9mYWN0b3J5Iiwicm91dGVyL3V0aWxzIiwicm91
dGVyL3VucmVjb2duaXplZC11cmwtZXJyb3IiXSxmdW5jdGlvbihlLHQscixuLGksbyl7InVzZSBz
dHJpY3QiO2UuZGVmYXVsdD1pLnN1YmNsYXNzKHQuZGVmYXVsdCx7dXJsOm51bGwsaW5pdGlhbGl6
ZTpmdW5jdGlvbihlKXt0aGlzLnVybD1lLnVybH0sYXBwbHlUb1N0YXRlOmZ1bmN0aW9uKGUsdCxh
KXt2YXIgcyx1LGw9bmV3IHIuZGVmYXVsdCxjPXQucmVjb2duaXplKHRoaXMudXJsKTtpZighYyl0
aHJvdyBuZXcgby5kZWZhdWx0KHRoaXMudXJsKTt2YXIgZj0hMTtmb3Iocz0wLHU9Yy5sZW5ndGg7
czx1Oysrcyl7dmFyIGQ9Y1tzXSxwPWQuaGFuZGxlcixoPWEocCk7aWYoaC5pbmFjY2Vzc2libGVC
eVVSTCl0aHJvdyBuZXcgby5kZWZhdWx0KHRoaXMudXJsKTt2YXIgbT1uLmRlZmF1bHQoInBhcmFt
Iix7bmFtZTpwLGhhbmRsZXI6aCxwYXJhbXM6ZC5wYXJhbXN9KSx2PWUuaGFuZGxlckluZm9zW3Nd
O2Z8fG0uc2hvdWxkU3VwZXJjZWRlKHYpPyhmPSEwLGwuaGFuZGxlckluZm9zW3NdPW0pOmwuaGFu
ZGxlckluZm9zW3NdPXZ9cmV0dXJuIGkubWVyZ2UobC5xdWVyeVBhcmFtcyxjLnF1ZXJ5UGFyYW1z
KSxsfX0pfSksZSgicm91dGVyL3RyYW5zaXRpb24tc3RhdGUiLFsiZXhwb3J0cyIsInJvdXRlci9o
YW5kbGVyLWluZm8iLCJyb3V0ZXIvdXRpbHMiLCJyc3ZwL3Byb21pc2UiXSxmdW5jdGlvbihlLHQs
cixuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlKXt0aGlzLmhhbmRsZXJJbmZvcz1bXSx0aGlz
LnF1ZXJ5UGFyYW1zPXt9LHRoaXMucGFyYW1zPXt9fWkucHJvdG90eXBlPXtoYW5kbGVySW5mb3M6
bnVsbCxxdWVyeVBhcmFtczpudWxsLHBhcmFtczpudWxsLHByb21pc2VMYWJlbDpmdW5jdGlvbihl
KXt2YXIgdD0iIjtyZXR1cm4gci5mb3JFYWNoKHRoaXMuaGFuZGxlckluZm9zLGZ1bmN0aW9uKGUp
eyIiIT09dCYmKHQrPSIuIiksdCs9ZS5uYW1lfSksci5wcm9taXNlTGFiZWwoIiciK3QrIic6ICIr
ZSl9LHJlc29sdmU6ZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiBpKCl7cmV0dXJuIG4uZGVmYXVsdC5y
ZXNvbHZlKGUoKSxsLnByb21pc2VMYWJlbCgiQ2hlY2sgaWYgc2hvdWxkIGNvbnRpbnVlIikpLmNh
dGNoKGZ1bmN0aW9uKGUpe3JldHVybiBjPSEwLG4uZGVmYXVsdC5yZWplY3QoZSl9LGwucHJvbWlz
ZUxhYmVsKCJIYW5kbGUgYWJvcnQiKSl9ZnVuY3Rpb24gbyhlKXt2YXIgcj1sLmhhbmRsZXJJbmZv
cyxpPXQucmVzb2x2ZUluZGV4Pj1yLmxlbmd0aD9yLmxlbmd0aC0xOnQucmVzb2x2ZUluZGV4O3Jl
dHVybiBuLmRlZmF1bHQucmVqZWN0KHtlcnJvcjplLGhhbmRsZXJXaXRoRXJyb3I6bC5oYW5kbGVy
SW5mb3NbaV0uaGFuZGxlcix3YXNBYm9ydGVkOmMsc3RhdGU6bH0pfWZ1bmN0aW9uIGEoZSl7dmFy
IG49bC5oYW5kbGVySW5mb3NbdC5yZXNvbHZlSW5kZXhdLmlzUmVzb2x2ZWQ7aWYobC5oYW5kbGVy
SW5mb3NbdC5yZXNvbHZlSW5kZXgrK109ZSwhbil7dmFyIG89ZS5oYW5kbGVyO3IuY2FsbEhvb2so
bywicmVkaXJlY3QiLGUuY29udGV4dCx0KX1yZXR1cm4gaSgpLnRoZW4ocyxudWxsLGwucHJvbWlz
ZUxhYmVsKCJSZXNvbHZlIGhhbmRsZXIiKSl9ZnVuY3Rpb24gcygpe2lmKHQucmVzb2x2ZUluZGV4
PT09bC5oYW5kbGVySW5mb3MubGVuZ3RoKXJldHVybntlcnJvcjpudWxsLHN0YXRlOmx9O3ZhciBl
PWwuaGFuZGxlckluZm9zW3QucmVzb2x2ZUluZGV4XTtyZXR1cm4gZS5yZXNvbHZlKGksdCkudGhl
bihhLG51bGwsbC5wcm9taXNlTGFiZWwoIlByb2NlZWQiKSl9dmFyIHU9dGhpcy5wYXJhbXM7ci5m
b3JFYWNoKHRoaXMuaGFuZGxlckluZm9zLGZ1bmN0aW9uKGUpe3VbZS5uYW1lXT1lLnBhcmFtc3x8
e319KSx0PXR8fHt9LHQucmVzb2x2ZUluZGV4PTA7dmFyIGw9dGhpcyxjPSExO3JldHVybiBuLmRl
ZmF1bHQucmVzb2x2ZShudWxsLHRoaXMucHJvbWlzZUxhYmVsKCJTdGFydCB0cmFuc2l0aW9uIikp
LnRoZW4ocyxudWxsLHRoaXMucHJvbWlzZUxhYmVsKCJSZXNvbHZlIGhhbmRsZXIiKSkuY2F0Y2go
byx0aGlzLnByb21pc2VMYWJlbCgiSGFuZGxlIGVycm9yIikpfX0sZS5kZWZhdWx0PWl9KSxlKCJy
b3V0ZXIvdHJhbnNpdGlvbiIsWyJleHBvcnRzIiwicnN2cC9wcm9taXNlIiwicm91dGVyL2hhbmRs
ZXItaW5mbyIsInJvdXRlci91dGlscyJdLGZ1bmN0aW9uKGUsdCxyLG4peyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiBpKGUscixhLHMpe2Z1bmN0aW9uIHUoKXtpZihsLmlzQWJvcnRlZClyZXR1cm4gdC5k
ZWZhdWx0LnJlamVjdCh2b2lkIDAsbi5wcm9taXNlTGFiZWwoIlRyYW5zaXRpb24gYWJvcnRlZCAt
IHJlamVjdCIpKX12YXIgbD10aGlzO2lmKHRoaXMuc3RhdGU9YXx8ZS5zdGF0ZSx0aGlzLmludGVu
dD1yLHRoaXMucm91dGVyPWUsdGhpcy5kYXRhPXRoaXMuaW50ZW50JiZ0aGlzLmludGVudC5kYXRh
fHx7fSx0aGlzLnJlc29sdmVkTW9kZWxzPXt9LHRoaXMucXVlcnlQYXJhbXM9e30scylyZXR1cm4g
dGhpcy5wcm9taXNlPXQuZGVmYXVsdC5yZWplY3Qocyksdm9pZCh0aGlzLmVycm9yPXMpO2lmKGEp
e3RoaXMucGFyYW1zPWEucGFyYW1zLHRoaXMucXVlcnlQYXJhbXM9YS5xdWVyeVBhcmFtcyx0aGlz
LmhhbmRsZXJJbmZvcz1hLmhhbmRsZXJJbmZvczt2YXIgYz1hLmhhbmRsZXJJbmZvcy5sZW5ndGg7
YyYmKHRoaXMudGFyZ2V0TmFtZT1hLmhhbmRsZXJJbmZvc1tjLTFdLm5hbWUpO2Zvcih2YXIgZj0w
O2Y8YzsrK2Ype3ZhciBkPWEuaGFuZGxlckluZm9zW2ZdO2lmKCFkLmlzUmVzb2x2ZWQpYnJlYWs7
dGhpcy5waXZvdEhhbmRsZXI9ZC5oYW5kbGVyfXRoaXMuc2VxdWVuY2U9aS5jdXJyZW50U2VxdWVu
Y2UrKyx0aGlzLnByb21pc2U9YS5yZXNvbHZlKHUsdGhpcykuY2F0Y2goZnVuY3Rpb24oZSl7cmV0
dXJuIGUud2FzQWJvcnRlZHx8bC5pc0Fib3J0ZWQ/dC5kZWZhdWx0LnJlamVjdChvKGwpKToobC50
cmlnZ2VyKCJlcnJvciIsZS5lcnJvcixsLGUuaGFuZGxlcldpdGhFcnJvciksbC5hYm9ydCgpLHQu
ZGVmYXVsdC5yZWplY3QoZS5lcnJvcikpfSxuLnByb21pc2VMYWJlbCgiSGFuZGxlIEFib3J0Iikp
fWVsc2UgdGhpcy5wcm9taXNlPXQuZGVmYXVsdC5yZXNvbHZlKHRoaXMuc3RhdGUpLHRoaXMucGFy
YW1zPXt9fWZ1bmN0aW9uIG8oZSl7cmV0dXJuIG4ubG9nKGUucm91dGVyLGUuc2VxdWVuY2UsImRl
dGVjdGVkIGFib3J0LiIpLG5ldyBhfWZ1bmN0aW9uIGEoZSl7dGhpcy5tZXNzYWdlPWV8fCJUcmFu
c2l0aW9uQWJvcnRlZCIsdGhpcy5uYW1lPSJUcmFuc2l0aW9uQWJvcnRlZCJ9aS5jdXJyZW50U2Vx
dWVuY2U9MCxpLnByb3RvdHlwZT17dGFyZ2V0TmFtZTpudWxsLHVybE1ldGhvZDoidXBkYXRlIixp
bnRlbnQ6bnVsbCxwYXJhbXM6bnVsbCxwaXZvdEhhbmRsZXI6bnVsbCxyZXNvbHZlSW5kZXg6MCxo
YW5kbGVySW5mb3M6bnVsbCxyZXNvbHZlZE1vZGVsczpudWxsLGlzQWN0aXZlOiEwLHN0YXRlOm51
bGwscXVlcnlQYXJhbXNPbmx5OiExLGlzVHJhbnNpdGlvbjohMCxpc0V4aXRpbmc6ZnVuY3Rpb24o
ZSl7Zm9yKHZhciB0PXRoaXMuaGFuZGxlckluZm9zLHI9MCxuPXQubGVuZ3RoO3I8bjsrK3Ipe3Zh
ciBpPXRbcl07aWYoaS5uYW1lPT09ZXx8aS5oYW5kbGVyPT09ZSlyZXR1cm4hMX1yZXR1cm4hMH0s
cHJvbWlzZTpudWxsLGRhdGE6bnVsbCx0aGVuOmZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gdGhpcy5w
cm9taXNlLnRoZW4oZSx0LHIpfSxjYXRjaDpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLnByb21p
c2UuY2F0Y2goZSx0KX0sZmluYWxseTpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLnByb21pc2Uu
ZmluYWxseShlLHQpfSxhYm9ydDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmlzQWJvcnRlZD90aGlz
OihuLmxvZyh0aGlzLnJvdXRlcix0aGlzLnNlcXVlbmNlLHRoaXMudGFyZ2V0TmFtZSsiOiB0cmFu
c2l0aW9uIHdhcyBhYm9ydGVkIiksdGhpcy5pbnRlbnQucHJlVHJhbnNpdGlvblN0YXRlPXRoaXMu
cm91dGVyLnN0YXRlLHRoaXMuaXNBYm9ydGVkPSEwLHRoaXMuaXNBY3RpdmU9ITEsdGhpcy5yb3V0
ZXIuYWN0aXZlVHJhbnNpdGlvbj1udWxsLHRoaXMpfSxyZXRyeTpmdW5jdGlvbigpe3JldHVybiB0
aGlzLmFib3J0KCksdGhpcy5yb3V0ZXIudHJhbnNpdGlvbkJ5SW50ZW50KHRoaXMuaW50ZW50LCEx
KX0sbWV0aG9kOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnVybE1ldGhvZD1lLHRoaXN9LHRyaWdn
ZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9bi5zbGljZS5jYWxsKGFyZ3VtZW50cyk7ImJvb2xlYW4iPT10
eXBlb2YgZT90LnNoaWZ0KCk6ZT0hMSxuLnRyaWdnZXIodGhpcy5yb3V0ZXIsdGhpcy5zdGF0ZS5o
YW5kbGVySW5mb3Muc2xpY2UoMCx0aGlzLnJlc29sdmVJbmRleCsxKSxlLHQpfSxmb2xsb3dSZWRp
cmVjdHM6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnJvdXRlcjtyZXR1cm4gdGhpcy5wcm9taXNlLmNh
dGNoKGZ1bmN0aW9uKHIpe3JldHVybiBlLmFjdGl2ZVRyYW5zaXRpb24/ZS5hY3RpdmVUcmFuc2l0
aW9uLmZvbGxvd1JlZGlyZWN0cygpOnQuZGVmYXVsdC5yZWplY3Qocil9KX0sdG9TdHJpbmc6ZnVu
Y3Rpb24oKXtyZXR1cm4iVHJhbnNpdGlvbiAoc2VxdWVuY2UgIit0aGlzLnNlcXVlbmNlKyIpIn0s
bG9nOmZ1bmN0aW9uKGUpe24ubG9nKHRoaXMucm91dGVyLHRoaXMuc2VxdWVuY2UsZSl9fSxpLnBy
b3RvdHlwZS5zZW5kPWkucHJvdG90eXBlLnRyaWdnZXIsZS5UcmFuc2l0aW9uPWksZS5sb2dBYm9y
dD1vLGUuVHJhbnNpdGlvbkFib3J0ZWQ9YX0pLGUoInJvdXRlci91bnJlY29nbml6ZWQtdXJsLWVy
cm9yIixbImV4cG9ydHMiLCJyb3V0ZXIvdXRpbHMiXSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiByKGUpe3RoaXMubWVzc2FnZT1lfHwiVW5yZWNvZ25pemVkVVJMRXJyb3IiLHRo
aXMubmFtZT0iVW5yZWNvZ25pemVkVVJMRXJyb3IiLEVycm9yLmNhbGwodGhpcyl9ci5wcm90b3R5
cGU9dC5vQ3JlYXRlKEVycm9yLnByb3RvdHlwZSksZS5kZWZhdWx0PXJ9KSxlKCJyb3V0ZXIvdXRp
bHMiLFsiZXhwb3J0cyJdLGZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB0KGUsdCl7
Zm9yKHZhciByIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShyKSYmKGVbcl09dFtyXSl9ZnVuY3Rpb24g
cihlKXt2YXIgdCxyLG49ZSYmZS5sZW5ndGg7cmV0dXJuIG4mJm4+MCYmZVtuLTFdJiZlW24tMV0u
aGFzT3duUHJvcGVydHkoInF1ZXJ5UGFyYW1zIik/KHI9ZVtuLTFdLnF1ZXJ5UGFyYW1zLHQ9di5j
YWxsKGUsMCxuLTEpLFt0LHJdKTpbZSxudWxsXX1mdW5jdGlvbiBuKGUpe2Zvcih2YXIgdCBpbiBl
KWlmKCJudW1iZXIiPT10eXBlb2YgZVt0XSllW3RdPSIiK2VbdF07ZWxzZSBpZihiKGVbdF0pKWZv
cih2YXIgcj0wLG49ZVt0XS5sZW5ndGg7cjxuO3IrKyllW3RdW3JdPSIiK2VbdF1bcl19ZnVuY3Rp
b24gaShlLHQscil7ZS5sb2cmJigzPT09YXJndW1lbnRzLmxlbmd0aD9lLmxvZygiVHJhbnNpdGlv
biAjIit0KyI6ICIrcik6KHI9dCxlLmxvZyhyKSkpfWZ1bmN0aW9uIG8oZSx0KXt2YXIgcj1hcmd1
bWVudHM7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciBpPXYuY2FsbChyLDIpO3JldHVybiBpLnB1c2go
biksdC5hcHBseShlLGkpfX1mdW5jdGlvbiBhKGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZXx8
ZSBpbnN0YW5jZW9mIFN0cmluZ3x8Im51bWJlciI9PXR5cGVvZiBlfHxlIGluc3RhbmNlb2YgTnVt
YmVyfWZ1bmN0aW9uIHMoZSx0KXtmb3IodmFyIHI9MCxuPWUubGVuZ3RoO3I8biYmITEhPT10KGVb
cl0pO3IrKyk7fWZ1bmN0aW9uIHUoZSx0LHIsbil7aWYoZS50cmlnZ2VyRXZlbnQpcmV0dXJuIHZv
aWQgZS50cmlnZ2VyRXZlbnQodCxyLG4pO3ZhciBpPW4uc2hpZnQoKTtpZighdCl7aWYocilyZXR1
cm47dGhyb3cgbmV3IEVycm9yKCJDb3VsZCBub3QgdHJpZ2dlciBldmVudCAnIitpKyInLiBUaGVy
ZSBhcmUgbm8gYWN0aXZlIGhhbmRsZXJzIil9Zm9yKHZhciBvPSExLGE9dC5sZW5ndGgtMTthPj0w
O2EtLSl7dmFyIHM9dFthXSx1PXMuaGFuZGxlcjtpZih1LmV2ZW50cyYmdS5ldmVudHNbaV0pe2lm
KHUuZXZlbnRzW2ldLmFwcGx5KHUsbikhPT0hMClyZXR1cm47bz0hMH19aWYoIW8mJiFyKXRocm93
IG5ldyBFcnJvcigiTm90aGluZyBoYW5kbGVkIHRoZSBldmVudCAnIitpKyInLiIpfWZ1bmN0aW9u
IGwoZSxyKXt2YXIgaSxvPXthbGw6e30sY2hhbmdlZDp7fSxyZW1vdmVkOnt9fTt0KG8uYWxsLHIp
O3ZhciBhPSExO24oZSksbihyKTtmb3IoaSBpbiBlKWUuaGFzT3duUHJvcGVydHkoaSkmJihyLmhh
c093blByb3BlcnR5KGkpfHwoYT0hMCxvLnJlbW92ZWRbaV09ZVtpXSkpO2ZvcihpIGluIHIpaWYo
ci5oYXNPd25Qcm9wZXJ0eShpKSlpZihiKGVbaV0pJiZiKHJbaV0pKWlmKGVbaV0ubGVuZ3RoIT09
cltpXS5sZW5ndGgpby5jaGFuZ2VkW2ldPXJbaV0sYT0hMDtlbHNlIGZvcih2YXIgcz0wLHU9ZVtp
XS5sZW5ndGg7czx1O3MrKyllW2ldW3NdIT09cltpXVtzXSYmKG8uY2hhbmdlZFtpXT1yW2ldLGE9
ITApO2Vsc2UgZVtpXSE9PXJbaV0mJihvLmNoYW5nZWRbaV09cltpXSxhPSEwKTtyZXR1cm4gYSYm
b31mdW5jdGlvbiBjKGUpe3JldHVybiJSb3V0ZXI6ICIrZX1mdW5jdGlvbiBmKGUscil7ZnVuY3Rp
b24gbih0KXtlLmNhbGwodGhpcyx0fHx7fSl9cmV0dXJuIG4ucHJvdG90eXBlPWcoZS5wcm90b3R5
cGUpLHQobi5wcm90b3R5cGUsciksbn1mdW5jdGlvbiBkKGUsdCl7aWYoZSl7dmFyIHI9Il8iK3Q7
cmV0dXJuIGVbcl0mJnJ8fGVbdF0mJnR9fWZ1bmN0aW9uIHAoZSx0LHIsbil7dmFyIGk9ZChlLHQp
O3JldHVybiBpJiZlW2ldLmNhbGwoZSxyLG4pfWZ1bmN0aW9uIGgoZSx0LHIpe3ZhciBuPWQoZSx0
KTtpZihuKXJldHVybiAwPT09ci5sZW5ndGg/ZVtuXS5jYWxsKGUpOjE9PT1yLmxlbmd0aD9lW25d
LmNhbGwoZSxyWzBdKToyPT09ci5sZW5ndGg/ZVtuXS5jYWxsKGUsclswXSxyWzFdKTplW25dLmFw
cGx5KGUscil9ZS5leHRyYWN0UXVlcnlQYXJhbXM9cixlLmxvZz1pLGUuYmluZD1vLGUuZm9yRWFj
aD1zLGUudHJpZ2dlcj11LGUuZ2V0Q2hhbmdlbGlzdD1sLGUucHJvbWlzZUxhYmVsPWMsZS5zdWJj
bGFzcz1mO3ZhciBtLHY9QXJyYXkucHJvdG90eXBlLnNsaWNlO209QXJyYXkuaXNBcnJheT9BcnJh
eS5pc0FycmF5OmZ1bmN0aW9uKGUpe3JldHVybiJbb2JqZWN0IEFycmF5XSI9PT1PYmplY3QucHJv
dG90eXBlLnRvU3RyaW5nLmNhbGwoZSl9O3ZhciBiPW07ZS5pc0FycmF5PWI7dmFyIGc9T2JqZWN0
LmNyZWF0ZXx8ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGU9ZSxu
ZXcgdH07ZS5vQ3JlYXRlPWcsZS5tZXJnZT10LGUuc2xpY2U9dixlLmlzUGFyYW09YSxlLmNvZXJj
ZVF1ZXJ5UGFyYW1zVG9TdHJpbmc9bixlLmNhbGxIb29rPXAsZS5yZXNvbHZlSG9vaz1kLGUuYXBw
bHlIb29rPWh9KSxlKCJyc3ZwIixbImV4cG9ydHMiLCJyc3ZwL3Byb21pc2UiLCJyc3ZwL2V2ZW50
cyIsInJzdnAvbm9kZSIsInJzdnAvYWxsIiwicnN2cC9hbGwtc2V0dGxlZCIsInJzdnAvcmFjZSIs
InJzdnAvaGFzaCIsInJzdnAvaGFzaC1zZXR0bGVkIiwicnN2cC9yZXRocm93IiwicnN2cC9kZWZl
ciIsInJzdnAvY29uZmlnIiwicnN2cC9tYXAiLCJyc3ZwL3Jlc29sdmUiLCJyc3ZwL3JlamVjdCIs
InJzdnAvZmlsdGVyIiwicnN2cC9hc2FwIl0sZnVuY3Rpb24oZSx0LHIsbixpLG8sYSxzLHUsbCxj
LGYsZCxwLGgsbSx2KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYihlLHQpe2YuY29uZmlnLmFzeW5j
KGUsdCl9ZnVuY3Rpb24gZygpe2YuY29uZmlnLm9uLmFwcGx5KGYuY29uZmlnLGFyZ3VtZW50cyl9
ZnVuY3Rpb24geSgpe2YuY29uZmlnLm9mZi5hcHBseShmLmNvbmZpZyxhcmd1bWVudHMpfWYuY29u
ZmlnLmFzeW5jPXYuZGVmYXVsdCxmLmNvbmZpZy5hZnRlcj1mdW5jdGlvbihlKXtzZXRUaW1lb3V0
KGUsMCl9O3ZhciBfPXAuZGVmYXVsdDtpZigidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmIm9i
amVjdCI9PXR5cGVvZiB3aW5kb3cuX19QUk9NSVNFX0lOU1RSVU1FTlRBVElPTl9fKXt2YXIgdz13
aW5kb3cuX19QUk9NSVNFX0lOU1RSVU1FTlRBVElPTl9fO2YuY29uZmlndXJlKCJpbnN0cnVtZW50
IiwhMCk7Zm9yKHZhciB4IGluIHcpdy5oYXNPd25Qcm9wZXJ0eSh4KSYmZyh4LHdbeF0pfWUuY2Fz
dD1fLGUuUHJvbWlzZT10LmRlZmF1bHQsZS5FdmVudFRhcmdldD1yLmRlZmF1bHQsZS5hbGw9aS5k
ZWZhdWx0LGUuYWxsU2V0dGxlZD1vLmRlZmF1bHQsZS5yYWNlPWEuZGVmYXVsdCxlLmhhc2g9cy5k
ZWZhdWx0LGUuaGFzaFNldHRsZWQ9dS5kZWZhdWx0LGUucmV0aHJvdz1sLmRlZmF1bHQsZS5kZWZl
cj1jLmRlZmF1bHQsZS5kZW5vZGVpZnk9bi5kZWZhdWx0LGUuY29uZmlndXJlPWYuY29uZmlndXJl
LGUub249ZyxlLm9mZj15LGUucmVzb2x2ZT1wLmRlZmF1bHQsZS5yZWplY3Q9aC5kZWZhdWx0LGUu
YXN5bmM9YixlLm1hcD1kLmRlZmF1bHQsZS5maWx0ZXI9bS5kZWZhdWx0fSksZSgicnN2cC51bWQi
LFsiZXhwb3J0cyIsInJzdnAvcGxhdGZvcm0iLCJyc3ZwIl0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ug
c3RyaWN0Ijt2YXIgbj17cmFjZTpyLnJhY2UsUHJvbWlzZTpyLlByb21pc2UsYWxsU2V0dGxlZDpy
LmFsbFNldHRsZWQsaGFzaDpyLmhhc2gsaGFzaFNldHRsZWQ6ci5oYXNoU2V0dGxlZCxkZW5vZGVp
Znk6ci5kZW5vZGVpZnksb246ci5vbixvZmY6ci5vZmYsbWFwOnIubWFwLGZpbHRlcjpyLmZpbHRl
cixyZXNvbHZlOnIucmVzb2x2ZSxyZWplY3Q6ci5yZWplY3QsYWxsOnIuYWxsLHJldGhyb3c6ci5y
ZXRocm93LGRlZmVyOnIuZGVmZXIsRXZlbnRUYXJnZXQ6ci5FdmVudFRhcmdldCxjb25maWd1cmU6
ci5jb25maWd1cmUsYXN5bmM6ci5hc3luY307ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVm
aW5lLmFtZD9kZWZpbmUoZnVuY3Rpb24oKXtyZXR1cm4gbn0pOiJ1bmRlZmluZWQiIT10eXBlb2Yg
bW9kdWxlJiZtb2R1bGUuZXhwb3J0cz9tb2R1bGUuZXhwb3J0cz1uOiJ1bmRlZmluZWQiIT10eXBl
b2YgdC5kZWZhdWx0JiYodC5kZWZhdWx0LlJTVlA9bil9KSxlKCJyc3ZwLy1pbnRlcm5hbCIsWyJl
eHBvcnRzIiwicnN2cC91dGlscyIsInJzdnAvaW5zdHJ1bWVudCIsInJzdnAvY29uZmlnIl0sZnVu
Y3Rpb24oZSx0LHIsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoKXtyZXR1cm4gbmV3IFR5cGVF
cnJvcigiQSBwcm9taXNlcyBjYWxsYmFjayBjYW5ub3QgcmV0dXJuIHRoYXQgc2FtZSBwcm9taXNl
LiIpfWZ1bmN0aW9uIG8oKXt9ZnVuY3Rpb24gYShlKXt0cnl7cmV0dXJuIGUudGhlbn1jYXRjaChl
KXtyZXR1cm4gQy5lcnJvcj1lLEN9fWZ1bmN0aW9uIHMoZSx0LHIsbil7dHJ5e2UuY2FsbCh0LHIs
bil9Y2F0Y2goZSl7cmV0dXJuIGV9fWZ1bmN0aW9uIHUoZSx0LHIpe24uY29uZmlnLmFzeW5jKGZ1
bmN0aW9uKGUpe3ZhciBuPSExLGk9cyhyLHQsZnVuY3Rpb24ocil7bnx8KG49ITAsdCE9PXI/Zihl
LHIpOnAoZSxyKSl9LGZ1bmN0aW9uKHQpe258fChuPSEwLGgoZSx0KSl9LCJTZXR0bGU6ICIrKGUu
X2xhYmVsfHwiIHVua25vd24gcHJvbWlzZSIpKTshbiYmaSYmKG49ITAsaChlLGkpKX0sZSl9ZnVu
Y3Rpb24gbChlLHQpe3QuX3N0YXRlPT09eD9wKGUsdC5fcmVzdWx0KTp0Ll9zdGF0ZT09PWs/KHQu
X29uRXJyb3I9bnVsbCxoKGUsdC5fcmVzdWx0KSk6bSh0LHZvaWQgMCxmdW5jdGlvbihyKXt0IT09
cj9mKGUscik6cChlLHIpfSxmdW5jdGlvbih0KXtoKGUsdCl9KX1mdW5jdGlvbiBjKGUscil7aWYo
ci5jb25zdHJ1Y3Rvcj09PWUuY29uc3RydWN0b3IpbChlLHIpO2Vsc2V7dmFyIG49YShyKTtuPT09
Qz9oKGUsQy5lcnJvcik6dm9pZCAwPT09bj9wKGUscik6dC5pc0Z1bmN0aW9uKG4pP3UoZSxyLG4p
OnAoZSxyKX19ZnVuY3Rpb24gZihlLHIpe2U9PT1yP3AoZSxyKTp0Lm9iamVjdE9yRnVuY3Rpb24o
cik/YyhlLHIpOnAoZSxyKX1mdW5jdGlvbiBkKGUpe2UuX29uRXJyb3ImJmUuX29uRXJyb3IoZS5f
cmVzdWx0KSx2KGUpfWZ1bmN0aW9uIHAoZSx0KXtlLl9zdGF0ZT09PXcmJihlLl9yZXN1bHQ9dCxl
Ll9zdGF0ZT14LDA9PT1lLl9zdWJzY3JpYmVycy5sZW5ndGg/bi5jb25maWcuaW5zdHJ1bWVudCYm
ci5kZWZhdWx0KCJmdWxmaWxsZWQiLGUpOm4uY29uZmlnLmFzeW5jKHYsZSkpfWZ1bmN0aW9uIGgo
ZSx0KXtlLl9zdGF0ZT09PXcmJihlLl9zdGF0ZT1rLGUuX3Jlc3VsdD10LG4uY29uZmlnLmFzeW5j
KGQsZSkpfWZ1bmN0aW9uIG0oZSx0LHIsaSl7dmFyIG89ZS5fc3Vic2NyaWJlcnMsYT1vLmxlbmd0
aDtlLl9vbkVycm9yPW51bGwsb1thXT10LG9bYSt4XT1yLG9bYStrXT1pLDA9PT1hJiZlLl9zdGF0
ZSYmbi5jb25maWcuYXN5bmModixlKX1mdW5jdGlvbiB2KGUpe3ZhciB0PWUuX3N1YnNjcmliZXJz
LGk9ZS5fc3RhdGU7aWYobi5jb25maWcuaW5zdHJ1bWVudCYmci5kZWZhdWx0KGk9PT14PyJmdWxm
aWxsZWQiOiJyZWplY3RlZCIsZSksMCE9PXQubGVuZ3RoKXtmb3IodmFyIG8sYSxzPWUuX3Jlc3Vs
dCx1PTA7dTx0Lmxlbmd0aDt1Kz0zKW89dFt1XSxhPXRbdStpXSxvP3koaSxvLGEscyk6YShzKTtl
Ll9zdWJzY3JpYmVycy5sZW5ndGg9MH19ZnVuY3Rpb24gYigpe3RoaXMuZXJyb3I9bnVsbH1mdW5j
dGlvbiBnKGUsdCl7dHJ5e3JldHVybiBlKHQpfWNhdGNoKGUpe3JldHVybiBFLmVycm9yPWUsRX19
ZnVuY3Rpb24geShlLHIsbixvKXt2YXIgYSxzLHUsbCxjPXQuaXNGdW5jdGlvbihuKTtpZihjKXtp
ZihhPWcobixvKSxhPT09RT8obD0hMCxzPWEuZXJyb3IsYT1udWxsKTp1PSEwLHI9PT1hKXJldHVy
biB2b2lkIGgocixpKCkpfWVsc2UgYT1vLHU9ITA7ci5fc3RhdGUhPT13fHwoYyYmdT9mKHIsYSk6
bD9oKHIscyk6ZT09PXg/cChyLGEpOmU9PT1rJiZoKHIsYSkpfWZ1bmN0aW9uIF8oZSx0KXt2YXIg
cj0hMTt0cnl7dChmdW5jdGlvbih0KXtyfHwocj0hMCxmKGUsdCkpfSxmdW5jdGlvbih0KXtyfHwo
cj0hMCxoKGUsdCkpfSl9Y2F0Y2godCl7aChlLHQpfX12YXIgdz12b2lkIDAseD0xLGs9MixDPW5l
dyBiLEU9bmV3IGI7ZS5ub29wPW8sZS5yZXNvbHZlPWYsZS5yZWplY3Q9aCxlLmZ1bGZpbGw9cCxl
LnN1YnNjcmliZT1tLGUucHVibGlzaD12LGUucHVibGlzaFJlamVjdGlvbj1kLGUuaW5pdGlhbGl6
ZVByb21pc2U9XyxlLmludm9rZUNhbGxiYWNrPXksZS5GVUxGSUxMRUQ9eCxlLlJFSkVDVEVEPWss
ZS5QRU5ESU5HPXd9KSxlKCJyc3ZwL2FsbC1zZXR0bGVkIixbImV4cG9ydHMiLCJyc3ZwL2VudW1l
cmF0b3IiLCJyc3ZwL3Byb21pc2UiLCJyc3ZwL3V0aWxzIl0sZnVuY3Rpb24oZSx0LHIsbil7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSx0LHIpe3RoaXMuX3N1cGVyQ29uc3RydWN0b3IoZSx0LCEx
LHIpfWZ1bmN0aW9uIG8oZSx0KXtyZXR1cm4gbmV3IGkoci5kZWZhdWx0LGUsdCkucHJvbWlzZX1l
LmRlZmF1bHQ9byxpLnByb3RvdHlwZT1uLm9fY3JlYXRlKHQuZGVmYXVsdC5wcm90b3R5cGUpLGku
cHJvdG90eXBlLl9zdXBlckNvbnN0cnVjdG9yPXQuZGVmYXVsdCxpLnByb3RvdHlwZS5fbWFrZVJl
c3VsdD10Lm1ha2VTZXR0bGVkUmVzdWx0LGkucHJvdG90eXBlLl92YWxpZGF0aW9uRXJyb3I9ZnVu
Y3Rpb24oKXtyZXR1cm4gbmV3IEVycm9yKCJhbGxTZXR0bGVkIG11c3QgYmUgY2FsbGVkIHdpdGgg
YW4gYXJyYXkiKX19KSxlKCJyc3ZwL2FsbCIsWyJleHBvcnRzIiwicnN2cC9wcm9taXNlIl0sZnVu
Y3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHIpe3JldHVybiB0LmRlZmF1bHQu
YWxsKGUscil9ZS5kZWZhdWx0PXJ9KSxlKCJyc3ZwL2FzYXAiLFsiZXhwb3J0cyJdLGZ1bmN0aW9u
KGUpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB0KGUsdCl7Z1tkXT1lLGdbZCsxXT10LGQrPTIsMj09
PWQmJmYoKX1mdW5jdGlvbiBuKCl7dmFyIGU9cHJvY2Vzcy5uZXh0VGljayx0PXByb2Nlc3MudmVy
c2lvbnMubm9kZS5tYXRjaCgvXig/OihcZCspXC4pPyg/OihcZCspXC4pPyhcKnxcZCspJC8pO3Jl
dHVybiBBcnJheS5pc0FycmF5KHQpJiYiMCI9PT10WzFdJiYiMTAiPT09dFsyXSYmKGU9c2V0SW1t
ZWRpYXRlKSxmdW5jdGlvbigpe2UodSl9fWZ1bmN0aW9uIGkoKXtyZXR1cm4gZnVuY3Rpb24oKXtj
KHUpfX1mdW5jdGlvbiBvKCl7dmFyIGU9MCx0PW5ldyBtKHUpLHI9ZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUoIiIpO3JldHVybiB0Lm9ic2VydmUocix7Y2hhcmFjdGVyRGF0YTohMH0pLGZ1bmN0aW9u
KCl7ci5kYXRhPWU9KytlJTJ9fWZ1bmN0aW9uIGEoKXt2YXIgZT1uZXcgTWVzc2FnZUNoYW5uZWw7
cmV0dXJuIGUucG9ydDEub25tZXNzYWdlPXUsZnVuY3Rpb24oKXtlLnBvcnQyLnBvc3RNZXNzYWdl
KDApfX1mdW5jdGlvbiBzKCl7cmV0dXJuIGZ1bmN0aW9uKCl7c2V0VGltZW91dCh1LDEpfX1mdW5j
dGlvbiB1KCl7Zm9yKHZhciBlPTA7ZTxkO2UrPTIpe3ZhciB0PWdbZV0scj1nW2UrMV07dChyKSxn
W2VdPXZvaWQgMCxnW2UrMV09dm9pZCAwfWQ9MH1mdW5jdGlvbiBsKCl7dHJ5e3ZhciBlPXIsdD1l
KCJ2ZXJ0eCIpO3JldHVybiBjPXQucnVuT25Mb29wfHx0LnJ1bk9uQ29udGV4dCxpKCl9Y2F0Y2go
ZSl7cmV0dXJuIHMoKX19ZS5kZWZhdWx0PXQ7dmFyIGMsZixkPTAscD0oe30udG9TdHJpbmcsInVu
ZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OnZvaWQgMCksaD1wfHx7fSxtPWguTXV0YXRp
b25PYnNlcnZlcnx8aC5XZWJLaXRNdXRhdGlvbk9ic2VydmVyLHY9InVuZGVmaW5lZCI9PXR5cGVv
ZiB3aW5kb3cmJiJ1bmRlZmluZWQiIT10eXBlb2YgcHJvY2VzcyYmIltvYmplY3QgcHJvY2Vzc10i
PT09e30udG9TdHJpbmcuY2FsbChwcm9jZXNzKSxiPSJ1bmRlZmluZWQiIT10eXBlb2YgVWludDhD
bGFtcGVkQXJyYXkmJiJ1bmRlZmluZWQiIT10eXBlb2YgaW1wb3J0U2NyaXB0cyYmInVuZGVmaW5l
ZCIhPXR5cGVvZiBNZXNzYWdlQ2hhbm5lbCxnPW5ldyBBcnJheSgxZTMpO2Y9dj9uKCk6bT9vKCk6
Yj9hKCk6dm9pZCAwPT09cCYmImZ1bmN0aW9uIj09dHlwZW9mIHI/bCgpOnMoKX0pLGUoInJzdnAv
Y29uZmlnIixbImV4cG9ydHMiLCJyc3ZwL2V2ZW50cyJdLGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIHIoZSx0KXtyZXR1cm4ib25lcnJvciI9PT1lP3ZvaWQgbi5vbigiZXJyb3Ii
LHQpOjIhPT1hcmd1bWVudHMubGVuZ3RoP25bZV06dm9pZChuW2VdPXQpfXZhciBuPXtpbnN0cnVt
ZW50OiExfTt0LmRlZmF1bHQubWl4aW4obiksZS5jb25maWc9bixlLmNvbmZpZ3VyZT1yfSksZSgi
cnN2cC9kZWZlciIsWyJleHBvcnRzIiwicnN2cC9wcm9taXNlIl0sZnVuY3Rpb24oZSx0KXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIgcj17fTtyZXR1cm4gci5wcm9taXNlPW5ldyB0LmRl
ZmF1bHQoZnVuY3Rpb24oZSx0KXtyLnJlc29sdmU9ZSxyLnJlamVjdD10fSxlKSxyfWUuZGVmYXVs
dD1yfSksZSgicnN2cC9lbnVtZXJhdG9yIixbImV4cG9ydHMiLCJyc3ZwL3V0aWxzIiwicnN2cC8t
aW50ZXJuYWwiXSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSx0LG4p
e3JldHVybiBlPT09ci5GVUxGSUxMRUQ/e3N0YXRlOiJmdWxmaWxsZWQiLHZhbHVlOm59OntzdGF0
ZToicmVqZWN0ZWQiLHJlYXNvbjpufX1mdW5jdGlvbiBpKGUsdCxuLGkpe3ZhciBvPXRoaXM7by5f
aW5zdGFuY2VDb25zdHJ1Y3Rvcj1lLG8ucHJvbWlzZT1uZXcgZShyLm5vb3AsaSksby5fYWJvcnRP
blJlamVjdD1uLG8uX3ZhbGlkYXRlSW5wdXQodCk/KG8uX2lucHV0PXQsby5sZW5ndGg9dC5sZW5n
dGgsby5fcmVtYWluaW5nPXQubGVuZ3RoLG8uX2luaXQoKSwwPT09by5sZW5ndGg/ci5mdWxmaWxs
KG8ucHJvbWlzZSxvLl9yZXN1bHQpOihvLmxlbmd0aD1vLmxlbmd0aHx8MCxvLl9lbnVtZXJhdGUo
KSwwPT09by5fcmVtYWluaW5nJiZyLmZ1bGZpbGwoby5wcm9taXNlLG8uX3Jlc3VsdCkpKTpyLnJl
amVjdChvLnByb21pc2Usby5fdmFsaWRhdGlvbkVycm9yKCkpfWUubWFrZVNldHRsZWRSZXN1bHQ9
bixlLmRlZmF1bHQ9aSxpLnByb3RvdHlwZS5fdmFsaWRhdGVJbnB1dD1mdW5jdGlvbihlKXtyZXR1
cm4gdC5pc0FycmF5KGUpfSxpLnByb3RvdHlwZS5fdmFsaWRhdGlvbkVycm9yPWZ1bmN0aW9uKCl7
cmV0dXJuIG5ldyBFcnJvcigiQXJyYXkgTWV0aG9kcyBtdXN0IGJlIHByb3ZpZGVkIGFuIEFycmF5
Iil9LGkucHJvdG90eXBlLl9pbml0PWZ1bmN0aW9uKCl7dGhpcy5fcmVzdWx0PW5ldyBBcnJheSh0
aGlzLmxlbmd0aCl9LGkucHJvdG90eXBlLl9lbnVtZXJhdGU9ZnVuY3Rpb24oKXtmb3IodmFyIGU9
dGhpcyx0PWUubGVuZ3RoLG49ZS5wcm9taXNlLGk9ZS5faW5wdXQsbz0wO24uX3N0YXRlPT09ci5Q
RU5ESU5HJiZvPHQ7bysrKWUuX2VhY2hFbnRyeShpW29dLG8pfSxpLnByb3RvdHlwZS5fZWFjaEVu
dHJ5PWZ1bmN0aW9uKGUsbil7dmFyIGk9dGhpcyxvPWkuX2luc3RhbmNlQ29uc3RydWN0b3I7dC5p
c01heWJlVGhlbmFibGUoZSk/ZS5jb25zdHJ1Y3Rvcj09PW8mJmUuX3N0YXRlIT09ci5QRU5ESU5H
PyhlLl9vbkVycm9yPW51bGwsaS5fc2V0dGxlZEF0KGUuX3N0YXRlLG4sZS5fcmVzdWx0KSk6aS5f
d2lsbFNldHRsZUF0KG8ucmVzb2x2ZShlKSxuKTooaS5fcmVtYWluaW5nLS0saS5fcmVzdWx0W25d
PWkuX21ha2VSZXN1bHQoci5GVUxGSUxMRUQsbixlKSl9LGkucHJvdG90eXBlLl9zZXR0bGVkQXQ9
ZnVuY3Rpb24oZSx0LG4pe3ZhciBpPXRoaXMsbz1pLnByb21pc2U7by5fc3RhdGU9PT1yLlBFTkRJ
TkcmJihpLl9yZW1haW5pbmctLSxpLl9hYm9ydE9uUmVqZWN0JiZlPT09ci5SRUpFQ1RFRD9yLnJl
amVjdChvLG4pOmkuX3Jlc3VsdFt0XT1pLl9tYWtlUmVzdWx0KGUsdCxuKSksMD09PWkuX3JlbWFp
bmluZyYmci5mdWxmaWxsKG8saS5fcmVzdWx0KX0saS5wcm90b3R5cGUuX21ha2VSZXN1bHQ9ZnVu
Y3Rpb24oZSx0LHIpe3JldHVybiByfSxpLnByb3RvdHlwZS5fd2lsbFNldHRsZUF0PWZ1bmN0aW9u
KGUsdCl7dmFyIG49dGhpcztyLnN1YnNjcmliZShlLHZvaWQgMCxmdW5jdGlvbihlKXtuLl9zZXR0
bGVkQXQoci5GVUxGSUxMRUQsdCxlKX0sZnVuY3Rpb24oZSl7bi5fc2V0dGxlZEF0KHIuUkVKRUNU
RUQsdCxlKX0pfX0pLGUoInJzdnAvZXZlbnRzIixbImV4cG9ydHMiXSxmdW5jdGlvbihlKXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gdChlLHQpe2Zvcih2YXIgcj0wLG49ZS5sZW5ndGg7cjxuO3IrKylp
ZihlW3JdPT09dClyZXR1cm4gcjtyZXR1cm4tMX1mdW5jdGlvbiByKGUpe3ZhciB0PWUuX3Byb21p
c2VDYWxsYmFja3M7cmV0dXJuIHR8fCh0PWUuX3Byb21pc2VDYWxsYmFja3M9e30pLHR9ZS5kZWZh
dWx0PXttaXhpbjpmdW5jdGlvbihlKXtyZXR1cm4gZS5vbj10aGlzLm9uLGUub2ZmPXRoaXMub2Zm
LGUudHJpZ2dlcj10aGlzLnRyaWdnZXIsZS5fcHJvbWlzZUNhbGxiYWNrcz12b2lkIDAsZX0sb246
ZnVuY3Rpb24oZSxuKXtpZigiZnVuY3Rpb24iIT10eXBlb2Ygbil0aHJvdyBuZXcgVHlwZUVycm9y
KCJDYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24iKTt2YXIgaSxvPXIodGhpcyk7aT1vW2VdLGl8
fChpPW9bZV09W10pLHQoaSxuKT09PS0xJiZpLnB1c2gobil9LG9mZjpmdW5jdGlvbihlLG4pe3Zh
ciBpLG8sYT1yKHRoaXMpO3JldHVybiBuPyhpPWFbZV0sbz10KGksbiksdm9pZChvIT09LTEmJmku
c3BsaWNlKG8sMSkpKTp2b2lkKGFbZV09W10pfSx0cmlnZ2VyOmZ1bmN0aW9uKGUsdCl7dmFyIG4s
aSxvPXIodGhpcyk7aWYobj1vW2VdKWZvcih2YXIgYT0wO2E8bi5sZW5ndGg7YSsrKShpPW5bYV0p
KHQpfX19KSxlKCJyc3ZwL2ZpbHRlciIsWyJleHBvcnRzIiwicnN2cC9wcm9taXNlIiwicnN2cC91
dGlscyJdLGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlLG4saSl7cmV0
dXJuIHQuZGVmYXVsdC5hbGwoZSxpKS50aGVuKGZ1bmN0aW9uKGUpe2lmKCFyLmlzRnVuY3Rpb24o
bikpdGhyb3cgbmV3IFR5cGVFcnJvcigiWW91IG11c3QgcGFzcyBhIGZ1bmN0aW9uIGFzIGZpbHRl
cidzIHNlY29uZCBhcmd1bWVudC4iKTtmb3IodmFyIG89ZS5sZW5ndGgsYT1uZXcgQXJyYXkobyks
cz0wO3M8bztzKyspYVtzXT1uKGVbc10pO3JldHVybiB0LmRlZmF1bHQuYWxsKGEsaSkudGhlbihm
dW5jdGlvbih0KXtmb3IodmFyIHI9bmV3IEFycmF5KG8pLG49MCxpPTA7aTxvO2krKyl0W2ldJiYo
cltuXT1lW2ldLG4rKyk7cmV0dXJuIHIubGVuZ3RoPW4scn0pfSl9ZS5kZWZhdWx0PW59KSxlKCJy
c3ZwL2hhc2gtc2V0dGxlZCIsWyJleHBvcnRzIiwicnN2cC9wcm9taXNlIiwicnN2cC9lbnVtZXJh
dG9yIiwicnN2cC9wcm9taXNlLWhhc2giLCJyc3ZwL3V0aWxzIl0sZnVuY3Rpb24oZSx0LHIsbixp
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbyhlLHQscil7dGhpcy5fc3VwZXJDb25zdHJ1Y3Rvcihl
LHQsITEscil9ZnVuY3Rpb24gYShlLHIpe3JldHVybiBuZXcgbyh0LmRlZmF1bHQsZSxyKS5wcm9t
aXNlfWUuZGVmYXVsdD1hLG8ucHJvdG90eXBlPWkub19jcmVhdGUobi5kZWZhdWx0LnByb3RvdHlw
ZSksby5wcm90b3R5cGUuX3N1cGVyQ29uc3RydWN0b3I9ci5kZWZhdWx0LG8ucHJvdG90eXBlLl9t
YWtlUmVzdWx0PXIubWFrZVNldHRsZWRSZXN1bHQsby5wcm90b3R5cGUuX3ZhbGlkYXRpb25FcnJv
cj1mdW5jdGlvbigpe3JldHVybiBuZXcgRXJyb3IoImhhc2hTZXR0bGVkIG11c3QgYmUgY2FsbGVk
IHdpdGggYW4gb2JqZWN0Iil9fSksZSgicnN2cC9oYXNoIixbImV4cG9ydHMiLCJyc3ZwL3Byb21p
c2UiLCJyc3ZwL3Byb21pc2UtaGFzaCJdLGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gbihlLG4pe3JldHVybiBuZXcgci5kZWZhdWx0KHQuZGVmYXVsdCxlLG4pLnByb21pc2V9
ZS5kZWZhdWx0PW59KSxlKCJyc3ZwL2luc3RydW1lbnQiLFsiZXhwb3J0cyIsInJzdnAvY29uZmln
IiwicnN2cC91dGlscyJdLGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbigp
e3NldFRpbWVvdXQoZnVuY3Rpb24oKXtmb3IodmFyIGUscj0wO3I8by5sZW5ndGg7cisrKXtlPW9b
cl07dmFyIG49ZS5wYXlsb2FkO24uZ3VpZD1uLmtleStuLmlkLG4uY2hpbGRHdWlkPW4ua2V5K24u
Y2hpbGRJZCxuLmVycm9yJiYobi5zdGFjaz1uLmVycm9yLnN0YWNrKSx0LmNvbmZpZy50cmlnZ2Vy
KGUubmFtZSxlLnBheWxvYWQpfW8ubGVuZ3RoPTB9LDUwKX1mdW5jdGlvbiBpKGUsaSxhKXsxPT09
by5wdXNoKHtuYW1lOmUscGF5bG9hZDp7a2V5OmkuX2d1aWRLZXksaWQ6aS5faWQsZXZlbnROYW1l
OmUsZGV0YWlsOmkuX3Jlc3VsdCxjaGlsZElkOmEmJmEuX2lkLGxhYmVsOmkuX2xhYmVsLHRpbWVT
dGFtcDpyLm5vdygpLGVycm9yOnQuY29uZmlnWyJpbnN0cnVtZW50LXdpdGgtc3RhY2siXT9uZXcg
RXJyb3IoaS5fbGFiZWwpOm51bGx9fSkmJm4oKX1lLmRlZmF1bHQ9aTt2YXIgbz1bXX0pLGUoInJz
dnAvbWFwIixbImV4cG9ydHMiLCJyc3ZwL3Byb21pc2UiLCJyc3ZwL3V0aWxzIl0sZnVuY3Rpb24o
ZSx0LHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUsbixpKXtyZXR1cm4gdC5kZWZhdWx0LmFs
bChlLGkpLnRoZW4oZnVuY3Rpb24oZSl7aWYoIXIuaXNGdW5jdGlvbihuKSl0aHJvdyBuZXcgVHlw
ZUVycm9yKCJZb3UgbXVzdCBwYXNzIGEgZnVuY3Rpb24gYXMgbWFwJ3Mgc2Vjb25kIGFyZ3VtZW50
LiIpO2Zvcih2YXIgbz1lLmxlbmd0aCxhPW5ldyBBcnJheShvKSxzPTA7czxvO3MrKylhW3NdPW4o
ZVtzXSk7cmV0dXJuIHQuZGVmYXVsdC5hbGwoYSxpKX0pfWUuZGVmYXVsdD1ufSksZSgicnN2cC9u
b2RlIixbImV4cG9ydHMiLCJyc3ZwL3Byb21pc2UiLCJyc3ZwLy1pbnRlcm5hbCIsInJzdnAvdXRp
bHMiXSxmdW5jdGlvbihlLHQscixuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlLHQpe2Zvcih2
YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0KSxuPTA7bjxyLmxlbmd0aDtuKyspe3Zh
ciBpPXJbbl0sbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsaSk7byYmby5jb25m
aWd1cmFibGUmJnZvaWQgMD09PWVbaV0mJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLGksbyl9cmV0
dXJuIGV9ZnVuY3Rpb24gbygpe3RoaXMudmFsdWU9dm9pZCAwfWZ1bmN0aW9uIGEoZSl7dHJ5e3Jl
dHVybiBlLnRoZW59Y2F0Y2goZSl7cmV0dXJuIG0udmFsdWU9ZSxtfX1mdW5jdGlvbiBzKGUsdCxy
KXt0cnl7ZS5hcHBseSh0LHIpfWNhdGNoKGUpe3JldHVybiBtLnZhbHVlPWUsbX19ZnVuY3Rpb24g
dShlLHQpe2Zvcih2YXIgcixuLGk9e30sbz1lLmxlbmd0aCxhPW5ldyBBcnJheShvKSxzPTA7czxv
O3MrKylhW3NdPWVbc107Zm9yKG49MDtuPHQubGVuZ3RoO24rKylyPXRbbl0saVtyXT1hW24rMV07
cmV0dXJuIGl9ZnVuY3Rpb24gbChlKXtmb3IodmFyIHQ9ZS5sZW5ndGgscj1uZXcgQXJyYXkodC0x
KSxuPTE7bjx0O24rKylyW24tMV09ZVtuXTsKK3JldHVybiByfWZ1bmN0aW9uIGMoZSx0KXtyZXR1
cm57dGhlbjpmdW5jdGlvbihyLG4pe3JldHVybiBlLmNhbGwodCxyLG4pfX19ZnVuY3Rpb24gZihl
LG8pe3ZhciBhPWZ1bmN0aW9uKCl7Zm9yKHZhciBpLGE9dGhpcyxzPWFyZ3VtZW50cy5sZW5ndGgs
Zj1uZXcgQXJyYXkocysxKSxtPSExLGI9MDtiPHM7KytiKXtpZihpPWFyZ3VtZW50c1tiXSwhbSl7
aWYobT1oKGkpLG09PT12KXt2YXIgZz1uZXcgdC5kZWZhdWx0KHIubm9vcCk7cmV0dXJuIHIucmVq
ZWN0KGcsdi52YWx1ZSksZ31tJiZtIT09ITAmJihpPWMobSxpKSl9ZltiXT1pfXZhciB5PW5ldyB0
LmRlZmF1bHQoci5ub29wKTtyZXR1cm4gZltzXT1mdW5jdGlvbihlLHQpe2U/ci5yZWplY3QoeSxl
KTp2b2lkIDA9PT1vP3IucmVzb2x2ZSh5LHQpOm89PT0hMD9yLnJlc29sdmUoeSxsKGFyZ3VtZW50
cykpOm4uaXNBcnJheShvKT9yLnJlc29sdmUoeSx1KGFyZ3VtZW50cyxvKSk6ci5yZXNvbHZlKHks
dCl9LG0/cCh5LGYsZSxhKTpkKHksZixlLGEpfTtyZXR1cm4gaShhLGUpLGF9ZnVuY3Rpb24gZChl
LHQsbixpKXt2YXIgbz1zKG4saSx0KTtyZXR1cm4gbz09PW0mJnIucmVqZWN0KGUsby52YWx1ZSks
ZX1mdW5jdGlvbiBwKGUsbixpLG8pe3JldHVybiB0LmRlZmF1bHQuYWxsKG4pLnRoZW4oZnVuY3Rp
b24odCl7dmFyIG49cyhpLG8sdCk7cmV0dXJuIG49PT1tJiZyLnJlamVjdChlLG4udmFsdWUpLGV9
KX1mdW5jdGlvbiBoKGUpe3JldHVybiEoIWV8fCJvYmplY3QiIT10eXBlb2YgZSkmJihlLmNvbnN0
cnVjdG9yPT09dC5kZWZhdWx0fHxhKGUpKX1lLmRlZmF1bHQ9Zjt2YXIgbT1uZXcgbyx2PW5ldyBv
fSksZSgicnN2cC9wbGF0Zm9ybSIsWyJleHBvcnRzIl0sZnVuY3Rpb24oZSl7InVzZSBzdHJpY3Qi
O3ZhciB0O2lmKCJvYmplY3QiPT10eXBlb2Ygc2VsZil0PXNlbGY7ZWxzZXtpZigib2JqZWN0IiE9
dHlwZW9mIGdsb2JhbCl0aHJvdyBuZXcgRXJyb3IoIm5vIGdsb2JhbDogYHNlbGZgIG9yIGBnbG9i
YWxgIGZvdW5kIik7dD1nbG9iYWx9ZS5kZWZhdWx0PXR9KSxlKCJyc3ZwL3Byb21pc2UtaGFzaCIs
WyJleHBvcnRzIiwicnN2cC9lbnVtZXJhdG9yIiwicnN2cC8taW50ZXJuYWwiLCJyc3ZwL3V0aWxz
Il0sZnVuY3Rpb24oZSx0LHIsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSx0LHIpe3RoaXMu
X3N1cGVyQ29uc3RydWN0b3IoZSx0LCEwLHIpfWUuZGVmYXVsdD1pLGkucHJvdG90eXBlPW4ub19j
cmVhdGUodC5kZWZhdWx0LnByb3RvdHlwZSksaS5wcm90b3R5cGUuX3N1cGVyQ29uc3RydWN0b3I9
dC5kZWZhdWx0LGkucHJvdG90eXBlLl9pbml0PWZ1bmN0aW9uKCl7dGhpcy5fcmVzdWx0PXt9fSxp
LnByb3RvdHlwZS5fdmFsaWRhdGVJbnB1dD1mdW5jdGlvbihlKXtyZXR1cm4gZSYmIm9iamVjdCI9
PXR5cGVvZiBlfSxpLnByb3RvdHlwZS5fdmFsaWRhdGlvbkVycm9yPWZ1bmN0aW9uKCl7cmV0dXJu
IG5ldyBFcnJvcigiUHJvbWlzZS5oYXNoIG11c3QgYmUgY2FsbGVkIHdpdGggYW4gb2JqZWN0Iil9
LGkucHJvdG90eXBlLl9lbnVtZXJhdGU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9ZS5wcm9taXNl
LG49ZS5faW5wdXQsaT1bXTtmb3IodmFyIG8gaW4gbil0Ll9zdGF0ZT09PXIuUEVORElORyYmT2Jq
ZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4sbykmJmkucHVzaCh7cG9zaXRpb246
byxlbnRyeTpuW29dfSk7dmFyIGE9aS5sZW5ndGg7ZS5fcmVtYWluaW5nPWE7Zm9yKHZhciBzLHU9
MDt0Ll9zdGF0ZT09PXIuUEVORElORyYmdTxhO3UrKylzPWlbdV0sZS5fZWFjaEVudHJ5KHMuZW50
cnkscy5wb3NpdGlvbil9fSksZSgicnN2cC9wcm9taXNlIixbImV4cG9ydHMiLCJyc3ZwL2NvbmZp
ZyIsInJzdnAvaW5zdHJ1bWVudCIsInJzdnAvdXRpbHMiLCJyc3ZwLy1pbnRlcm5hbCIsInJzdnAv
cHJvbWlzZS9hbGwiLCJyc3ZwL3Byb21pc2UvcmFjZSIsInJzdnAvcHJvbWlzZS9yZXNvbHZlIiwi
cnN2cC9wcm9taXNlL3JlamVjdCJdLGZ1bmN0aW9uKGUsdCxyLG4saSxvLGEscyx1KXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gbCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIllvdSBtdXN0IHBhc3MgYSBy
ZXNvbHZlciBmdW5jdGlvbiBhcyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gdGhlIHByb21pc2UgY29u
c3RydWN0b3IiKX1mdW5jdGlvbiBjKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiRmFpbGVkIHRvIGNv
bnN0cnVjdCAnUHJvbWlzZSc6IFBsZWFzZSB1c2UgdGhlICduZXcnIG9wZXJhdG9yLCB0aGlzIG9i
amVjdCBjb25zdHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uIil9ZnVuY3Rp
b24gZihlLG8pe3ZhciBhPXRoaXM7YS5faWQ9cCsrLGEuX2xhYmVsPW8sYS5fc3RhdGU9dm9pZCAw
LGEuX3Jlc3VsdD12b2lkIDAsYS5fc3Vic2NyaWJlcnM9W10sdC5jb25maWcuaW5zdHJ1bWVudCYm
ci5kZWZhdWx0KCJjcmVhdGVkIixhKSxpLm5vb3AhPT1lJiYobi5pc0Z1bmN0aW9uKGUpfHxsKCks
YSBpbnN0YW5jZW9mIGZ8fGMoKSxpLmluaXRpYWxpemVQcm9taXNlKGEsZSkpfWUuZGVmYXVsdD1m
O3ZhciBkPSJyc3ZwXyIrbi5ub3coKSsiLSIscD0wO2YuY2FzdD1zLmRlZmF1bHQsZi5hbGw9by5k
ZWZhdWx0LGYucmFjZT1hLmRlZmF1bHQsZi5yZXNvbHZlPXMuZGVmYXVsdCxmLnJlamVjdD11LmRl
ZmF1bHQsZi5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmYsX2d1aWRLZXk6ZCxfb25FcnJvcjpmdW5j
dGlvbihlKXt2YXIgcj10aGlzO3QuY29uZmlnLmFmdGVyKGZ1bmN0aW9uKCl7ci5fb25FcnJvciYm
dC5jb25maWcudHJpZ2dlcigiZXJyb3IiLGUpfSl9LHRoZW46ZnVuY3Rpb24oZSxuLG8pe3ZhciBh
PXRoaXMscz1hLl9zdGF0ZTtpZihzPT09aS5GVUxGSUxMRUQmJiFlfHxzPT09aS5SRUpFQ1RFRCYm
IW4pcmV0dXJuIHQuY29uZmlnLmluc3RydW1lbnQmJnIuZGVmYXVsdCgiY2hhaW5lZCIsYSxhKSxh
O2EuX29uRXJyb3I9bnVsbDt2YXIgdT1uZXcgYS5jb25zdHJ1Y3RvcihpLm5vb3AsbyksbD1hLl9y
ZXN1bHQ7aWYodC5jb25maWcuaW5zdHJ1bWVudCYmci5kZWZhdWx0KCJjaGFpbmVkIixhLHUpLHMp
e3ZhciBjPWFyZ3VtZW50c1tzLTFdO3QuY29uZmlnLmFzeW5jKGZ1bmN0aW9uKCl7aS5pbnZva2VD
YWxsYmFjayhzLHUsYyxsKX0pfWVsc2UgaS5zdWJzY3JpYmUoYSx1LGUsbik7cmV0dXJuIHV9LGNh
dGNoOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMudGhlbih2b2lkIDAsZSx0KX0sZmluYWxseTpm
dW5jdGlvbihlLHQpe3ZhciByPXRoaXMsbj1yLmNvbnN0cnVjdG9yO3JldHVybiByLnRoZW4oZnVu
Y3Rpb24odCl7cmV0dXJuIG4ucmVzb2x2ZShlKCkpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gdH0p
fSxmdW5jdGlvbih0KXtyZXR1cm4gbi5yZXNvbHZlKGUoKSkudGhlbihmdW5jdGlvbigpe3Rocm93
IHR9KX0sdCl9fX0pLGUoInJzdnAvcHJvbWlzZS9hbGwiLFsiZXhwb3J0cyIsInJzdnAvZW51bWVy
YXRvciJdLGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSxyKXtyZXR1cm4g
bmV3IHQuZGVmYXVsdCh0aGlzLGUsITAscikucHJvbWlzZX1lLmRlZmF1bHQ9cn0pLGUoInJzdnAv
cHJvbWlzZS9yYWNlIixbImV4cG9ydHMiLCJyc3ZwL3V0aWxzIiwicnN2cC8taW50ZXJuYWwiXSxm
dW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSxuKXtmdW5jdGlvbiBpKGUp
e3IucmVzb2x2ZShzLGUpfWZ1bmN0aW9uIG8oZSl7ci5yZWplY3QocyxlKX12YXIgYT10aGlzLHM9
bmV3IGEoci5ub29wLG4pO2lmKCF0LmlzQXJyYXkoZSkpcmV0dXJuIHIucmVqZWN0KHMsbmV3IFR5
cGVFcnJvcigiWW91IG11c3QgcGFzcyBhbiBhcnJheSB0byByYWNlLiIpKSxzO2Zvcih2YXIgdT1l
Lmxlbmd0aCxsPTA7cy5fc3RhdGU9PT1yLlBFTkRJTkcmJmw8dTtsKyspci5zdWJzY3JpYmUoYS5y
ZXNvbHZlKGVbbF0pLHZvaWQgMCxpLG8pO3JldHVybiBzfWUuZGVmYXVsdD1ufSksZSgicnN2cC9w
cm9taXNlL3JlamVjdCIsWyJleHBvcnRzIiwicnN2cC8taW50ZXJuYWwiXSxmdW5jdGlvbihlLHQp
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUscil7dmFyIG49dGhpcyxpPW5ldyBuKHQubm9vcCxy
KTtyZXR1cm4gdC5yZWplY3QoaSxlKSxpfWUuZGVmYXVsdD1yfSksZSgicnN2cC9wcm9taXNlL3Jl
c29sdmUiLFsiZXhwb3J0cyIsInJzdnAvLWludGVybmFsIl0sZnVuY3Rpb24oZSx0KXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gcihlLHIpe3ZhciBuPXRoaXM7aWYoZSYmIm9iamVjdCI9PXR5cGVvZiBl
JiZlLmNvbnN0cnVjdG9yPT09bilyZXR1cm4gZTt2YXIgaT1uZXcgbih0Lm5vb3Ascik7cmV0dXJu
IHQucmVzb2x2ZShpLGUpLGl9ZS5kZWZhdWx0PXJ9KSxlKCJyc3ZwL3JhY2UiLFsiZXhwb3J0cyIs
InJzdnAvcHJvbWlzZSJdLGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSxy
KXtyZXR1cm4gdC5kZWZhdWx0LnJhY2UoZSxyKX1lLmRlZmF1bHQ9cn0pLGUoInJzdnAvcmVqZWN0
IixbImV4cG9ydHMiLCJyc3ZwL3Byb21pc2UiXSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiByKGUscil7cmV0dXJuIHQuZGVmYXVsdC5yZWplY3QoZSxyKX1lLmRlZmF1bHQ9cn0p
LGUoInJzdnAvcmVzb2x2ZSIsWyJleHBvcnRzIiwicnN2cC9wcm9taXNlIl0sZnVuY3Rpb24oZSx0
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHIpe3JldHVybiB0LmRlZmF1bHQucmVzb2x2ZShl
LHIpfWUuZGVmYXVsdD1yfSksZSgicnN2cC9yZXRocm93IixbImV4cG9ydHMiXSxmdW5jdGlvbihl
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gdChlKXt0aHJvdyBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7
dGhyb3cgZX0pLGV9ZS5kZWZhdWx0PXR9KSxlKCJyc3ZwL3V0aWxzIixbImV4cG9ydHMiXSxmdW5j
dGlvbihlKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gdChlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBl
b2YgZXx8Im9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZX1mdW5jdGlvbiByKGUpe3JldHVybiJm
dW5jdGlvbiI9PXR5cGVvZiBlfWZ1bmN0aW9uIG4oZSl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBl
JiZudWxsIT09ZX1mdW5jdGlvbiBpKCl7fWUub2JqZWN0T3JGdW5jdGlvbj10LGUuaXNGdW5jdGlv
bj1yLGUuaXNNYXliZVRoZW5hYmxlPW47dmFyIG87bz1BcnJheS5pc0FycmF5P0FycmF5LmlzQXJy
YXk6ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgQXJyYXldIj09PU9iamVjdC5wcm90b3R5cGUu
dG9TdHJpbmcuY2FsbChlKX07dmFyIGE9bztlLmlzQXJyYXk9YTt2YXIgcz1EYXRlLm5vd3x8ZnVu
Y3Rpb24oKXtyZXR1cm4obmV3IERhdGUpLmdldFRpbWUoKX07ZS5ub3c9czt2YXIgdT1PYmplY3Qu
Y3JlYXRlfHxmdW5jdGlvbihlKXtpZihhcmd1bWVudHMubGVuZ3RoPjEpdGhyb3cgbmV3IEVycm9y
KCJTZWNvbmQgYXJndW1lbnQgbm90IHN1cHBvcnRlZCIpO2lmKCJvYmplY3QiIT10eXBlb2YgZSl0
aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IGJlIGFuIG9iamVjdCIpO3JldHVybiBp
LnByb3RvdHlwZT1lLG5ldyBpfTtlLm9fY3JlYXRlPXV9KSxlKCJ2ZXJ0ZXgiLFsiZXhwb3J0cyJd
LGZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB0KGUpe3RoaXMubmFtZT1lLHRoaXMu
aW5jb21pbmc9e30sdGhpcy5pbmNvbWluZ05hbWVzPVtdLHRoaXMuaGFzT3V0Z29pbmc9ITEsdGhp
cy52YWx1ZT1udWxsfWUuZGVmYXVsdD10fSksZSgidmlzaXQiLFsiZXhwb3J0cyJdLGZ1bmN0aW9u
KGUpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB0KGUscixuLGkpe3ZhciBvLGE9ZS5uYW1lLHM9ZS5p
bmNvbWluZyx1PWUuaW5jb21pbmdOYW1lcyxsPXUubGVuZ3RoO2lmKG58fChuPXt9KSxpfHwoaT1b
XSksIW4uaGFzT3duUHJvcGVydHkoYSkpe2ZvcihpLnB1c2goYSksblthXT0hMCxvPTA7bzxsO28r
Kyl0KHNbdVtvXV0scixuLGkpO3IoZSxpKSxpLnBvcCgpfX1lLmRlZmF1bHQ9dH0pLHQoImVtYmVy
Iil9KCksZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7dmFyIGU9e2VtYmVyOntkZWZhdWx0OkVtYmVy
fSwiZW1iZXItYXBwbGljYXRpb24iOntkZWZhdWx0OkVtYmVyLkFwcGxpY2F0aW9ufSwiZW1iZXIt
YXJyYXkiOntkZWZhdWx0OkVtYmVyLkFycmF5fSwiZW1iZXItYXJyYXkvbXV0YWJsZSI6e2RlZmF1
bHQ6RW1iZXIuTXV0YWJsZUFycmF5fSwiZW1iZXItYXJyYXkvdXRpbHMiOntBOkVtYmVyLkEsaXNF
bWJlckFycmF5OkVtYmVyLmlzQXJyYXksd3JhcDpFbWJlci5tYWtlQXJyYXl9LCJlbWJlci1jb21w
b25lbnQiOntkZWZhdWx0OkVtYmVyLkNvbXBvbmVudH0sImVtYmVyLWNvbXBvbmVudHMvY2hlY2ti
b3giOntkZWZhdWx0OkVtYmVyLkNoZWNrYm94fSwiZW1iZXItY29tcG9uZW50cy90ZXh0LWFyZWEi
OntkZWZhdWx0OkVtYmVyLlRleHRBcmVhfSwiZW1iZXItY29tcG9uZW50cy90ZXh0LWZpZWxkIjp7
ZGVmYXVsdDpFbWJlci5UZXh0RmllbGR9LCJlbWJlci1jb250cm9sbGVyIjp7ZGVmYXVsdDpFbWJl
ci5Db250cm9sbGVyfSwiZW1iZXItY29udHJvbGxlci9pbmplY3QiOntkZWZhdWx0OkVtYmVyLmlu
amVjdC5jb250cm9sbGVyfSwiZW1iZXItY29udHJvbGxlci9wcm94eSI6e2RlZmF1bHQ6RW1iZXIu
QXJyYXlQcm94eX0sImVtYmVyLWNvbnRyb2xsZXJzL3NvcnRhYmxlIjp7ZGVmYXVsdDpFbWJlci5T
b3J0YWJsZU1peGlufSwiZW1iZXItZGVidWciOntsb2c6RW1iZXIuZGVidWcsaW5zcGVjdDpFbWJl
ci5pbnNwZWN0LHJ1bjpFbWJlci5ydW5JbkRlYnVnLHdhcm46RW1iZXIud2Fybn0sImVtYmVyLWRl
YnVnL2NvbnRhaW5lci1kZWJ1Zy1hZGFwdGVyIjp7ZGVmYXVsdDpFbWJlci5Db250YWluZXJEZWJ1
Z0FkYXB0ZXJ9LCJlbWJlci1kZWJ1Zy9kYXRhLWFkYXB0ZXIiOntkZWZhdWx0OkVtYmVyLkRhdGFB
ZGFwdGVyfSwiZW1iZXItZGVwcmVjYXRpb25zIjp7ZGVwcmVjYXRlOkVtYmVyLmRlcHJlY2F0ZSxk
ZXByZWNhdGVGdW5jOkVtYmVyLmRlcHJlY2F0ZUZ1bmN9LCJlbWJlci1lbnVtZXJhYmxlIjp7ZGVm
YXVsdDpFbWJlci5FbnVtZXJhYmxlfSwiZW1iZXItZXZlbnRlZCI6e2RlZmF1bHQ6RW1iZXIuRXZl
bnRlZH0sImVtYmVyLWV2ZW50ZWQvb24iOntkZWZhdWx0OkVtYmVyLm9ufSwiZW1iZXItZ2xvYmFs
cy1yZXNvbHZlciI6e2RlZmF1bHQ6RW1iZXIuRGVmYXVsdFJlc29sdmVyfSwiZW1iZXItaGVscGVy
Ijp7ZGVmYXVsdDpFbWJlci5IZWxwZXIsaGVscGVyOkVtYmVyLkhlbHBlciYmRW1iZXIuSGVscGVy
LmhlbHBlcn0sImVtYmVyLWluc3RydW1lbnRhdGlvbiI6e2luc3RydW1lbnQ6RW1iZXIuSW5zdHJ1
bWVudGF0aW9uLmluc3RydW1lbnQscmVzZXQ6RW1iZXIuSW5zdHJ1bWVudGF0aW9uLnJlc2V0LHN1
YnNjcmliZTpFbWJlci5JbnN0cnVtZW50YXRpb24uc3Vic2NyaWJlLHVuc3Vic2NyaWJlOkVtYmVy
Lkluc3RydW1lbnRhdGlvbi51bnN1YnNjcmliZX0sImVtYmVyLWxvY2F0aW9ucy9oYXNoIjp7ZGVm
YXVsdDpFbWJlci5IYXNoTG9jYXRpb259LCJlbWJlci1sb2NhdGlvbnMvaGlzdG9yeSI6e2RlZmF1
bHQ6RW1iZXIuSGlzdG9yeUxvY2F0aW9ufSwiZW1iZXItbG9jYXRpb25zL25vbmUiOntkZWZhdWx0
OkVtYmVyLk5vbmVMb2NhdGlvbn0sImVtYmVyLW1hcCI6e2RlZmF1bHQ6RW1iZXIuTWFwLHdpdGhE
ZWZhdWx0OkVtYmVyLk1hcFdpdGhEZWZhdWx0fSwiZW1iZXItbWV0YWwvZGVzdHJveSI6e2RlZmF1
bHQ6RW1iZXIuZGVzdHJveX0sImVtYmVyLW1ldGFsL2V2ZW50cyI6e2FkZExpc3RlbmVyOkVtYmVy
LmFkZExpc3RlbmVyLHJlbW92ZUxpc3RlbmVyOkVtYmVyLnJlbW92ZUxpc3RlbmVyLHNlbmQ6RW1i
ZXIuc2VuZEV2ZW50fSwiZW1iZXItbWV0YWwvZ2V0Ijp7ZGVmYXVsdDpFbWJlci5nZXQsZ2V0UHJv
cGVydGllczpFbWJlci5nZXRQcm9wZXJ0aWVzfSwiZW1iZXItbWV0YWwvbWl4aW4iOntkZWZhdWx0
OkVtYmVyLk1peGlufSwiZW1iZXItbWV0YWwvb2JzZXJ2ZXIiOntkZWZhdWx0OkVtYmVyLm9ic2Vy
dmVyLGFkZE9ic2VydmVyOkVtYmVyLmFkZE9ic2VydmVyLHJlbW92ZU9ic2VydmVyOkVtYmVyLnJl
bW92ZU9ic2VydmVyfSwiZW1iZXItbWV0YWwvb24tbG9hZCI6e2RlZmF1bHQ6RW1iZXIub25Mb2Fk
LHJ1bjpFbWJlci5ydW5Mb2FkSG9va3N9LCJlbWJlci1tZXRhbC9zZXQiOntkZWZhdWx0OkVtYmVy
LnNldCxzZXRQcm9wZXJ0aWVzOkVtYmVyLnNldFByb3BlcnRpZXMsdHJ5U2V0OkVtYmVyLnRyeVNl
dH0sImVtYmVyLW1ldGFsL3V0aWxzIjp7YWxpYXNNZXRob2Q6RW1iZXIuYWxpYXNNZXRob2QsYXNz
ZXJ0OkVtYmVyLmFzc2VydCxjYWNoZUZvcjpFbWJlci5jYWNoZUZvcixjb3B5OkVtYmVyLmNvcHks
Z3VpZEZvcjpFbWJlci5ndWlkRm9yfSwiZW1iZXItb2JqZWN0Ijp7ZGVmYXVsdDpFbWJlci5PYmpl
Y3R9LCJlbWJlci1wbGF0Zm9ybSI6e2Fzc2lnbjpFbWJlci5tZXJnZSxjcmVhdGU6RW1iZXIuY3Jl
YXRlLGRlZmluZVByb3BlcnR5OkVtYmVyLnBsYXRmb3JtLmRlZmluZVByb3BlcnR5LGhhc0FjY2Vz
c29yczpFbWJlci5wbGF0Zm9ybS5oYXNQcm9wZXJ0eUFjY2Vzc29ycyxrZXlzOkVtYmVyLmtleXN9
LCJlbWJlci1yb3V0ZSI6e2RlZmF1bHQ6RW1iZXIuUm91dGV9LCJlbWJlci1yb3V0ZXIiOntkZWZh
dWx0OkVtYmVyLlJvdXRlcn0sImVtYmVyLXJ1bmxvb3AiOntkZWZhdWx0OkVtYmVyLnJ1bixiZWdp
bjpFbWJlci5ydW4uYmVnaW4sYmluZDpFbWJlci5ydW4uYmluZCxjYW5jZWw6RW1iZXIucnVuLmNh
bmNlbCxkZWJvdW5jZTpFbWJlci5ydW4uZGVib3VuY2UsZW5kOkVtYmVyLnJ1bi5lbmQsam9pbjpF
bWJlci5ydW4uam9pbixsYXRlcjpFbWJlci5ydW4ubGF0ZXIsbmV4dDpFbWJlci5ydW4ubmV4dCxv
bmNlOkVtYmVyLnJ1bi5vbmNlLHNjaGVkdWxlOkVtYmVyLnJ1bi5zY2hlZHVsZSxzY2hlZHVsZU9u
Y2U6RW1iZXIucnVuLnNjaGVkdWxlT25jZSx0aHJvdHRsZTpFbWJlci5ydW4udGhyb3R0bGV9LCJl
bWJlci1zZXJ2aWNlIjp7ZGVmYXVsdDpFbWJlci5TZXJ2aWNlfSwiZW1iZXItc2VydmljZS9pbmpl
Y3QiOntkZWZhdWx0OkVtYmVyLmluamVjdC5zZXJ2aWNlfSwiZW1iZXItc2V0L29yZGVyZWQiOntk
ZWZhdWx0OkVtYmVyLk9yZGVyZWRTZXR9LCJlbWJlci1zdHJpbmciOntjYW1lbGl6ZTpFbWJlci5T
dHJpbmcuY2FtZWxpemUsY2FwaXRhbGl6ZTpFbWJlci5TdHJpbmcuY2FwaXRhbGl6ZSxjbGFzc2lm
eTpFbWJlci5TdHJpbmcuY2xhc3NpZnksZGFzaGVyaXplOkVtYmVyLlN0cmluZy5kYXNoZXJpemUs
ZGVjYW1lbGl6ZTpFbWJlci5TdHJpbmcuZGVjYW1lbGl6ZSxmbXQ6RW1iZXIuU3RyaW5nLmZtdCxo
dG1sU2FmZTpFbWJlci5TdHJpbmcuaHRtbFNhZmUsbG9jOkVtYmVyLlN0cmluZy5sb2MsdW5kZXJz
Y29yZTpFbWJlci5TdHJpbmcudW5kZXJzY29yZSx3OkVtYmVyLlN0cmluZy53fSwiZW1iZXItdXRp
bHMiOntpc0JsYW5rOkVtYmVyLmlzQmxhbmssaXNFbXB0eTpFbWJlci5pc0VtcHR5LGlzTm9uZTpF
bWJlci5pc05vbmUsaXNQcmVzZW50OkVtYmVyLmlzUHJlc2VudCx0cnlJbnZva2U6RW1iZXIudHJ5
SW52b2tlLHR5cGVPZjpFbWJlci50eXBlT2Z9fTtlWyJlbWJlci1jb21wdXRlZCJdPXtkZWZhdWx0
OkVtYmVyLmNvbXB1dGVkfTtmb3IodmFyIHQ9WyJlbXB0eSIsIm5vdEVtcHR5Iiwibm9uZSIsIm5v
dCIsImJvb2wiLCJtYXRjaCIsImVxdWFsIiwiZ3QiLCJndGUiLCJsdCIsImx0ZSIsImFsaWFzIiwi
b25lV2F5IiwicmVhZHMiLCJyZWFkT25seSIsImRlcHJlY2F0aW5nQWxpYXMiLCJhbmQiLCJvciIs
ImNvbGxlY3QiLCJzdW0iLCJtaW4iLCJtYXgiLCJtYXAiLCJzb3J0Iiwic2V0RGlmZiIsIm1hcEJ5
IiwibWFwUHJvcGVydHkiLCJmaWx0ZXIiLCJmaWx0ZXJCeSIsImZpbHRlclByb3BlcnR5IiwidW5p
cSIsInVuaW9uIiwiaW50ZXJzZWN0Il0sbj0wLGk9dC5sZW5ndGg7bjxpO24rKyl7dmFyIG89dFtu
XTtlWyJlbWJlci1jb21wdXRlZCJdW29dPUVtYmVyLmNvbXB1dGVkW29dfWZvcih2YXIgYSBpbiBl
KXIoYSxlW2FdKX1mdW5jdGlvbiB0KCl7aWYoRW1iZXIuVGVzdCl7dmFyIGU9eyJlbWJlci10ZXN0
Ijp7ZGVmYXVsdDpFbWJlci5UZXN0fSwiZW1iZXItdGVzdC9hZGFwdGVyIjp7ZGVmYXVsdDpFbWJl
ci5UZXN0LkFkYXB0ZXJ9LCJlbWJlci10ZXN0L3F1bml0LWFkYXB0ZXIiOntkZWZhdWx0OkVtYmVy
LlRlc3QuUVVuaXRBZGFwdGVyfX07Zm9yKHZhciB0IGluIGUpcih0LGVbdF0pfX1mdW5jdGlvbiBy
KGUsdCl7ZGVmaW5lKGUsW10sZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7cmV0dXJuIHR9KX1lKCks
dCgpLHIoImpxdWVyeSIse2RlZmF1bHQ6c2VsZi5qUXVlcnl9KSxyKCJyc3ZwIix7ZGVmYXVsdDpF
bWJlci5SU1ZQfSl9KCksZGVmaW5lKCJlbWJlci9sb2FkLWluaXRpYWxpemVycyIsWyJleHBvcnRz
IiwiZW1iZXItbG9hZC1pbml0aWFsaXplcnMiLCJlbWJlciJdLGZ1bmN0aW9uKGUsdCxyKXtyLmRl
ZmF1bHQuZGVwcmVjYXRlKCJVc2FnZSBvZiBgZW1iZXIvbG9hZC1pbml0aWFsaXplcnNgIG1vZHVs
ZSBpcyBkZXByZWNhdGVkLCBwbGVhc2UgdXBkYXRlIHRvIGBlbWJlci1sb2FkLWluaXRpYWxpemVy
c2AuIiwhMSx7aWQ6ImVtYmVyLWxvYWQtaW5pdGlhbGl6ZXJzLmxlZ2FjeS1zaGltcyIsdW50aWw6
IjMuMC4wIn0pLGUuZGVmYXVsdD10LmRlZmF1bHR9KSxjcmVhdGVEZXByZWNhdGVkTW9kdWxlKCJl
bWJlci9yZXNvbHZlciIpLGNyZWF0ZURlcHJlY2F0ZWRNb2R1bGUoInJlc29sdmVyIiksZGVmaW5l
KCJlbWJlci1hamF4L2Vycm9ycyIsWyJleHBvcnRzIiwiZW1iZXIiXSxmdW5jdGlvbihlLHQpeyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg8PTF8fHZvaWQg
MD09PWFyZ3VtZW50c1sxXT8iQWpheCBvcGVyYXRpb24gZmFpbGVkIjphcmd1bWVudHNbMV07YS5j
YWxsKHRoaXMsdCksdGhpcy5lcnJvcnM9ZXx8W3t0aXRsZToiQWpheCBFcnJvciIsZGV0YWlsOnR9
XX1mdW5jdGlvbiBuKGUpe3IuY2FsbCh0aGlzLGUsIlJlcXVlc3Qgd2FzIHJlamVjdGVkIGJlY2F1
c2UgaXQgd2FzIGludmFsaWQiKX1mdW5jdGlvbiBpKGUpe3IuY2FsbCh0aGlzLGUsIkFqYXggYXV0
aG9yaXphdGlvbiBmYWlsZWQiKX1mdW5jdGlvbiBvKGUpe3IuY2FsbCh0aGlzLGUsIlJlcXVlc3Qg
d2FzIHJlamVjdGVkIGJlY2F1c2UgdXNlciBpcyBub3QgcGVybWl0dGVkIHRvIHBlcmZvcm0gdGhp
cyBvcGVyYXRpb24uIil9ZS5BamF4RXJyb3I9cixlLkludmFsaWRFcnJvcj1uLGUuVW5hdXRob3Jp
emVkRXJyb3I9aSxlLkZvcmJpZGRlbkVycm9yPW87dmFyIGE9dC5kZWZhdWx0LkVycm9yO3IucHJv
dG90eXBlPU9iamVjdC5jcmVhdGUoYS5wcm90b3R5cGUpLG4ucHJvdG90eXBlPU9iamVjdC5jcmVh
dGUoci5wcm90b3R5cGUpLGkucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoci5wcm90b3R5cGUpLG8u
cHJvdG90eXBlPU9iamVjdC5jcmVhdGUoci5wcm90b3R5cGUpfSksZGVmaW5lKCJlbWJlci1hamF4
L2luZGV4IixbImV4cG9ydHMiLCJlbWJlci1hamF4L3JlcXVlc3QiXSxmdW5jdGlvbihlLHQpeyJ1
c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiZGVmYXVsdCIse2VudW1lcmFibGU6
ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHQuZGVmYXVsdH19KX0pLGRlZmluZSgiZW1iZXItYWph
eC9tYWtlLXByb21pc2UiLFsiZXhwb3J0cyIsImVtYmVyIl0sZnVuY3Rpb24oZSx0KXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIgcj1lLnR5cGV8fCJHRVQiO3JldHVybiBuZXcgYS5Qcm9t
aXNlKGZ1bmN0aW9uKHIsbyl7ZS5zdWNjZXNzPW4ociksZS5lcnJvcj1pKG8pLHQuZGVmYXVsdC4k
LmFqYXgoZSl9LCJlbWJlci1hamF4OiAiK3IrIiB0byAiK2UudXJsKX1mdW5jdGlvbiBuKGUpe3Jl
dHVybiBmdW5jdGlvbih0LHIsbil7byhudWxsLGUse3Jlc3BvbnNlOnQsdGV4dFN0YXR1czpyLGpx
WEhSOm59KX19ZnVuY3Rpb24gaShlKXtyZXR1cm4gZnVuY3Rpb24odCxyLG4pe28obnVsbCxlLHtq
cVhIUjp0LHRleHRTdGF0dXM6cixlcnJvclRocm93bjpufSl9fWUuZGVmYXVsdD1yO3ZhciBvPXQu
ZGVmYXVsdC5ydW4sYT10LmRlZmF1bHQuUlNWUH0pLGRlZmluZSgiZW1iZXItYWpheC9yYXciLFsi
ZXhwb3J0cyIsImVtYmVyLWFqYXgvbWFrZS1wcm9taXNlIiwiZW1iZXItYWpheC91dGlscy9wYXJz
ZS1hcmdzIiwiZW1iZXIiXSxmdW5jdGlvbihlLHQscixuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
aSgpe2EoImVtYmVyLWFqYXgvcmF3IGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBp
biBlbWJlci1hamF4QDIuMC4wIiwhMSx7aWQ6ImVtYmVyLWFqYXgucmF3In0pO3ZhciBlPXIuZGVm
YXVsdC5hcHBseShudWxsLGFyZ3VtZW50cyksbj1vKGUsMyksaT1uWzBdLHM9blsxXSx1PW5bMl07
cmV0dXJuIHV8fCh1PXt9KSx1LnVybD1pLHUudHlwZT1zLCgwLHQuZGVmYXVsdCkodSl9dmFyIG89
ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7dmFyIHI9W10sbj0hMCxpPSExLG89dm9pZCAwO3Ry
eXtmb3IodmFyIGEscz1lW1N5bWJvbC5pdGVyYXRvcl0oKTshKG49KGE9cy5uZXh0KCkpLmRvbmUp
JiYoci5wdXNoKGEudmFsdWUpLCF0fHxyLmxlbmd0aCE9PXQpO249ITApO31jYXRjaChlKXtpPSEw
LG89ZX1maW5hbGx5e3RyeXshbiYmcy5yZXR1cm4mJnMucmV0dXJuKCl9ZmluYWxseXtpZihpKXRo
cm93IG99fXJldHVybiByfXJldHVybiBmdW5jdGlvbih0LHIpe2lmKEFycmF5LmlzQXJyYXkodCkp
cmV0dXJuIHQ7aWYoU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdCh0KSlyZXR1cm4gZSh0LHIpO3Ro
cm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRl
cmFibGUgaW5zdGFuY2UiKX19KCk7ZS5kZWZhdWx0PWk7dmFyIGE9bi5kZWZhdWx0LmRlcHJlY2F0
ZX0pLGRlZmluZSgiZW1iZXItYWpheC9yZXF1ZXN0IixbImV4cG9ydHMiLCJlbWJlci1hamF4L3Jh
dyIsImVtYmVyIl0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKCl7cmV0
dXJuIGkoImVtYmVyLWFqYXgvcmVxdWVzdCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92
ZWQgaW4gZW1iZXItYWpheEAyLjAuMCIsITEse2lkOiJlbWJlci1hamF4LnJhdyJ9KSx0LmRlZmF1
bHQuYXBwbHkodm9pZCAwLGFyZ3VtZW50cykudGhlbihmdW5jdGlvbihlKXtyZXR1cm4gZS5yZXNw
b25zZX0sbnVsbCwiZW1iZXItYWpheDogdW53cmFwIHJhdyBhamF4IHJlc3BvbnNlIil9ZS5kZWZh
dWx0PW47dmFyIGk9ci5kZWZhdWx0LmRlcHJlY2F0ZX0pLGRlZmluZSgiZW1iZXItYWpheC9zZXJ2
aWNlcy9hamF4IixbImV4cG9ydHMiLCJlbWJlciIsImVtYmVyLWFqYXgvZXJyb3JzIiwiZW1iZXIt
YWpheC91dGlscy9wYXJzZS1yZXNwb25zZS1oZWFkZXJzIl0sZnVuY3Rpb24oZSx0LHIsbil7InVz
ZSBzdHJpY3QiO3ZhciBpPXQuZGVmYXVsdC5kZXByZWNhdGUsbz10LmRlZmF1bHQuZ2V0LGE9dC5k
ZWZhdWx0LmlzQmxhbms7ZS5kZWZhdWx0PXQuZGVmYXVsdC5TZXJ2aWNlLmV4dGVuZCh7cmVxdWVz
dDpmdW5jdGlvbihlLG8pe3ZhciBhLHM9dGhpczthcmd1bWVudHMubGVuZ3RoPjJ8fCJzdHJpbmci
PT10eXBlb2Ygbz8oaSgiZW1iZXItYWpheC9hamF4I3JlcXVlc3QgY2FsbGluZyByZXF1ZXN0IHdp
dGggYHR5cGVgIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBlbWJlci1hamF4
QDEuMC4wLiBJZiB5b3Ugd2FudCB0byBzcGVjaWZ5IGEgdHlwZSBwYXNzIGFuIG9iamVjdCBsaWtl
IHt0eXBlOiAnREVMRVRFJ30iLCExLHtpZDoiZW1iZXItYWpheC5zZXJ2aWNlLnJlcXVlc3QifSks
YXJndW1lbnRzLmxlbmd0aD4yPyhhPWFyZ3VtZW50c1syXSxhLnR5cGU9byk6YT17dHlwZTpvfSk6
YT1vO3ZhciB1PXRoaXMub3B0aW9ucyhlLGEpO3JldHVybiBuZXcgdC5kZWZhdWx0LlJTVlAuUHJv
bWlzZShmdW5jdGlvbihlLGkpe3Uuc3VjY2Vzcz1mdW5jdGlvbih0LG8sYSl7dmFyIHU9cy5oYW5k
bGVSZXNwb25zZShhLnN0YXR1cywoMCxuLmRlZmF1bHQpKGEuZ2V0QWxsUmVzcG9uc2VIZWFkZXJz
KCkpLHQpO3UgaW5zdGFuY2VvZiByLkFqYXhFcnJvcj9pKHUpOmUodSl9LHUuZXJyb3I9ZnVuY3Rp
b24oZSx0LHIpe3ZhciBvPXZvaWQgMDtvIGluc3RhbmNlb2YgRXJyb3J8fChvPXIgaW5zdGFuY2Vv
ZiBFcnJvcj9yOnMuaGFuZGxlUmVzcG9uc2UoZS5zdGF0dXMsKDAsbi5kZWZhdWx0KShlLmdldEFs
bFJlc3BvbnNlSGVhZGVycygpKSxzLnBhcnNlRXJyb3JSZXNwb25zZShlLnJlc3BvbnNlVGV4dCl8
fHIpKSxpKG8pfSx0LmRlZmF1bHQuJC5hamF4KHUpfSwiZW1iZXItYWpheDogIit1LnR5cGUrIiB0
byAiK2UpfSxwb3N0OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMucmVxdWVzdChlLHRoaXMuX2Fk
ZFR5cGVUb09wdGlvbnNGb3IodCwiUE9TVCIpKX0scHV0OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRo
aXMucmVxdWVzdChlLHRoaXMuX2FkZFR5cGVUb09wdGlvbnNGb3IodCwiUFVUIikpfSxwYXRjaDpm
dW5jdGlvbihlLHQpe3JldHVybiB0aGlzLnJlcXVlc3QoZSx0aGlzLl9hZGRUeXBlVG9PcHRpb25z
Rm9yKHQsIlBBVENIIikpfSxkZWw6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5yZXF1ZXN0KGUs
dGhpcy5fYWRkVHlwZVRvT3B0aW9uc0Zvcih0LCJERUxFVEUiKSl9LF9hZGRUeXBlVG9PcHRpb25z
Rm9yOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9ZXx8e30sZS50eXBlPXQsZX0sb3B0aW9uczpmdW5j
dGlvbihlLHQpe3ZhciByPXR8fHt9O3IudXJsPXRoaXMuX2J1aWxkVVJMKGUpLHIudHlwZT1yLnR5
cGV8fCJHRVQiLHIuZGF0YVR5cGU9ci5kYXRhVHlwZXx8Impzb24iLHIuY29udGV4dD10aGlzO3Zh
ciBuPW8odGhpcywiaGVhZGVycyIpO3JldHVybiB2b2lkIDAhPT1uJiYoci5iZWZvcmVTZW5kPWZ1
bmN0aW9uKGUpe09iamVjdC5rZXlzKG4pLmZvckVhY2goZnVuY3Rpb24odCl7cmV0dXJuIGUuc2V0
UmVxdWVzdEhlYWRlcih0LG5bdF0pfSl9KSxyfSxfYnVpbGRVUkw6ZnVuY3Rpb24oZSl7dmFyIHQ9
byh0aGlzLCJob3N0Iik7aWYoYSh0KSlyZXR1cm4gZTt2YXIgcj1TdHJpbmcucHJvdG90eXBlLnN0
YXJ0c1dpdGh8fGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ9dHx8MCx0aGlzLmluZGV4T2YoZSx0KT09
PXR9O3JldHVybiByLmNhbGwoZSwiLyIpPyIiK3QrZTp0KyIvIitlfSxoYW5kbGVSZXNwb25zZTpm
dW5jdGlvbihlLHQsbil7aWYodGhpcy5pc1N1Y2Nlc3MoZSx0LG4pKXJldHVybiBuO2lmKHRoaXMu
aXNVbmF1dGhvcml6ZWQoZSx0LG4pKXJldHVybiBuZXcgci5VbmF1dGhvcml6ZWRFcnJvcihuLmVy
cm9ycyk7aWYodGhpcy5pc0ZvcmJpZGRlbihlLHQsbikpcmV0dXJuIG5ldyByLkZvcmJpZGRlbkVy
cm9yKG4uZXJyb3JzKTtpZih0aGlzLmlzSW52YWxpZChlLHQsbikpcmV0dXJuIG5ldyByLkludmFs
aWRFcnJvcihuLmVycm9ycyk7dmFyIGk9dGhpcy5ub3JtYWxpemVFcnJvclJlc3BvbnNlKGUsdCxu
KTtyZXR1cm4gbmV3IHIuQWpheEVycm9yKGkpfSxpc1VuYXV0aG9yaXplZDpmdW5jdGlvbihlKXty
ZXR1cm4gNDAxPT09ZX0saXNGb3JiaWRkZW46ZnVuY3Rpb24oZSl7cmV0dXJuIDQwMz09PWV9LGlz
SW52YWxpZDpmdW5jdGlvbihlKXtyZXR1cm4gNDIyPT09ZX0saXNTdWNjZXNzOmZ1bmN0aW9uKGUp
e3JldHVybiBlPj0yMDAmJmU8MzAwfHwzMDQ9PT1lfSxwYXJzZUVycm9yUmVzcG9uc2U6ZnVuY3Rp
b24oZSl7dmFyIHI9ZTt0cnl7cj10LmRlZmF1bHQuJC5wYXJzZUpTT04oZSl9Y2F0Y2goZSl7fXJl
dHVybiByfSxub3JtYWxpemVFcnJvclJlc3BvbnNlOmZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gciYm
Im9iamVjdCI9PXR5cGVvZiByJiZyLmVycm9ycz9yLmVycm9yczpbe3N0YXR1czoiIitlLHRpdGxl
OiJUaGUgYmFja2VuZCByZXNwb25kZWQgd2l0aCBhbiBlcnJvciIsZGV0YWlsOiIiK3J9XX19KX0p
LGRlZmluZSgiZW1iZXItYWpheC91dGlscy9wYXJzZS1hcmdzIixbImV4cG9ydHMiXSxmdW5jdGlv
bihlKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gdCgpe3ZhciBlPVtdLnNsaWNlLmFwcGx5KGFyZ3Vt
ZW50cyk7aWYoMT09PWUubGVuZ3RoKXtpZigic3RyaW5nIj09dHlwZW9mIGVbMF0pe3ZhciB0PXIo
ZSwxKSxuPXRbMF07cmV0dXJuW25dfXZhciBpPXIoZSwxKSxvPWlbMF0sbj1vLnVybDtkZWxldGUg
by51cmw7dmFyIGE9by50eXBlfHxvLm1ldGhvZDtyZXR1cm4gZGVsZXRlIG8udHlwZSxkZWxldGUg
by5tZXRob2QsW24sYSxvXX1pZigyPT09ZS5sZW5ndGgpe3ZhciBzPXIoZSwxKSxuPXNbMF07aWYo
Im9iamVjdCI9PXR5cGVvZiBlWzFdKXt2YXIgbz1lWzFdLGE9by50eXBlfHxvLm1ldGhvZDtyZXR1
cm4gZGVsZXRlIG8udHlwZSxkZWxldGUgby5tZXRob2QsW24sYSxvXX12YXIgYT1lWzFdO3JldHVy
bltuLGFdfXJldHVybiBlfXZhciByPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3ZhciByPVtd
LG49ITAsaT0hMSxvPXZvaWQgMDt0cnl7Zm9yKHZhciBhLHM9ZVtTeW1ib2wuaXRlcmF0b3JdKCk7
IShuPShhPXMubmV4dCgpKS5kb25lKSYmKHIucHVzaChhLnZhbHVlKSwhdHx8ci5sZW5ndGghPT10
KTtuPSEwKTt9Y2F0Y2goZSl7aT0hMCxvPWV9ZmluYWxseXt0cnl7IW4mJnMucmV0dXJuJiZzLnJl
dHVybigpfWZpbmFsbHl7aWYoaSl0aHJvdyBvfX1yZXR1cm4gcn1yZXR1cm4gZnVuY3Rpb24odCxy
KXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiB0O2lmKFN5bWJvbC5pdGVyYXRvciBpbiBPYmpl
Y3QodCkpcmV0dXJuIGUodCxyKTt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQg
dG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlIil9fSgpO2UuZGVmYXVsdD10fSks
ZGVmaW5lKCJlbWJlci1hamF4L3V0aWxzL3BhcnNlLXJlc3BvbnNlLWhlYWRlcnMiLFsiZXhwb3J0
cyJdLGZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB0KGUpe3ZhciB0PU9iamVjdC5j
cmVhdGUobnVsbCk7aWYoIWUpcmV0dXJuIHQ7Zm9yKHZhciByPWUuc3BsaXQoIlxyXG4iKSxuPTA7
bjxyLmxlbmd0aDtuKyspe3ZhciBpPXJbbl0sbz1pLmluZGV4T2YoIjogIik7aWYobz4wKXt2YXIg
YT1pLnN1YnN0cmluZygwLG8pLHM9aS5zdWJzdHJpbmcobysyKTt0W2FdPXN9fXJldHVybiB0fWUu
ZGVmYXVsdD10fSksZGVmaW5lKCJlbWJlci1jbGktYXBwLXZlcnNpb24vY29tcG9uZW50cy9hcHAt
dmVyc2lvbiIsWyJleHBvcnRzIiwiZW1iZXIiLCJlbWJlci1jbGktYXBwLXZlcnNpb24vdGVtcGxh
dGVzL2FwcC12ZXJzaW9uIl0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtlLmRlZmF1bHQ9
dC5kZWZhdWx0LkNvbXBvbmVudC5leHRlbmQoe3RhZ05hbWU6InNwYW4iLGxheW91dDpyLmRlZmF1
bHR9KX0pLGRlZmluZSgiZW1iZXItY2xpLWFwcC12ZXJzaW9uL2luaXRpYWxpemVyLWZhY3Rvcnki
LFsiZXhwb3J0cyIsImVtYmVyIl0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
cihlLHIpe3ZhciBpPSExO3JldHVybiBmdW5jdGlvbigpe2lmKCFpJiZlJiZyKXt2YXIgbz1uKGUp
O3QuZGVmYXVsdC5saWJyYXJpZXMucmVnaXN0ZXIobyxyKSxpPSEwfX19ZS5kZWZhdWx0PXI7dmFy
IG49dC5kZWZhdWx0LlN0cmluZy5jbGFzc2lmeX0pLGRlZmluZSgiZW1iZXItY2xpLWFwcC12ZXJz
aW9uL3RlbXBsYXRlcy9hcHAtdmVyc2lvbiIsWyJleHBvcnRzIl0sZnVuY3Rpb24oZSl7InVzZSBz
dHJpY3QiO2UuZGVmYXVsdD1FbWJlci5IVE1MQmFycy50ZW1wbGF0ZShmdW5jdGlvbigpe3JldHVy
bnttZXRhOntmcmFnbWVudFJlYXNvbjp7bmFtZToibWlzc2luZy13cmFwcGVyIixwcm9ibGVtczpb
Indyb25nLXR5cGUiXX0scmV2aXNpb246IkVtYmVyQDIuNi4yIixsb2M6e3NvdXJjZTpudWxsLHN0
YXJ0OntsaW5lOjEsY29sdW1uOjB9LGVuZDp7bGluZToyLGNvbHVtbjowfX0sbW9kdWxlTmFtZToi
bW9kdWxlcy9lbWJlci1jbGktYXBwLXZlcnNpb24vdGVtcGxhdGVzL2FwcC12ZXJzaW9uLmhicyJ9
LGlzRW1wdHk6ITEsYXJpdHk6MCxjYWNoZWRGcmFnbWVudDpudWxsLGhhc1JlbmRlcmVkOiExLGJ1
aWxkRnJhZ21lbnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCks
cj1lLmNyZWF0ZUNvbW1lbnQoIiIpO2UuYXBwZW5kQ2hpbGQodCxyKTt2YXIgcj1lLmNyZWF0ZVRl
eHROb2RlKCJcbiIpO3JldHVybiBlLmFwcGVuZENoaWxkKHQsciksdH0sYnVpbGRSZW5kZXJOb2Rl
czpmdW5jdGlvbihlLHQscil7dmFyIG49bmV3IEFycmF5KDEpO3JldHVybiBuWzBdPWUuY3JlYXRl
TW9ycGhBdCh0LDAsMCxyKSxlLmluc2VydEJvdW5kYXJ5KHQsMCksbn0sc3RhdGVtZW50czpbWyJj
b250ZW50IiwidmVyc2lvbiIsWyJsb2MiLFtudWxsLFsxLDBdLFsxLDExXV1dXV0sbG9jYWxzOltd
LHRlbXBsYXRlczpbXX19KCkpfSksZGVmaW5lKCJlbWJlci1pbmZsZWN0b3IvaW5kZXgiLFsiZXhw
b3J0cyIsImVtYmVyIiwiZW1iZXItaW5mbGVjdG9yL2xpYi9zeXN0ZW0iLCJlbWJlci1pbmZsZWN0
b3IvbGliL2V4dC9zdHJpbmciXSxmdW5jdGlvbihlLHQscixuKXsidXNlIHN0cmljdCI7ci5JbmZs
ZWN0b3IuZGVmYXVsdFJ1bGVzPXIuZGVmYXVsdFJ1bGVzLHQuZGVmYXVsdC5JbmZsZWN0b3I9ci5J
bmZsZWN0b3IsdC5kZWZhdWx0LlN0cmluZy5wbHVyYWxpemU9ci5wbHVyYWxpemUsdC5kZWZhdWx0
LlN0cmluZy5zaW5ndWxhcml6ZT1yLnNpbmd1bGFyaXplLGUuZGVmYXVsdD1yLkluZmxlY3Rvcixl
LnBsdXJhbGl6ZT1yLnBsdXJhbGl6ZSxlLnNpbmd1bGFyaXplPXIuc2luZ3VsYXJpemUsZS5kZWZh
dWx0UnVsZXM9ci5kZWZhdWx0UnVsZXMsInVuZGVmaW5lZCIhPXR5cGVvZiBkZWZpbmUmJmRlZmlu
ZS5hbWQ/ZGVmaW5lKCJlbWJlci1pbmZsZWN0b3IiLFsiZXhwb3J0cyJdLGZ1bmN0aW9uKGUpe3Jl
dHVybiBlLmRlZmF1bHQ9ci5JbmZsZWN0b3Isci5JbmZsZWN0b3J9KToidW5kZWZpbmVkIiE9dHlw
ZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHMmJihtb2R1bGUuZXhwb3J0cz1yLkluZmxlY3Rvcil9
KSxkZWZpbmUoImVtYmVyLWluZmxlY3Rvci9saWIvZXh0L3N0cmluZyIsWyJleHBvcnRzIiwiZW1i
ZXIiLCJlbWJlci1pbmZsZWN0b3IvbGliL3N5c3RlbS9zdHJpbmciXSxmdW5jdGlvbihlLHQscil7
InVzZSBzdHJpY3QiOyh0LmRlZmF1bHQuRVhURU5EX1BST1RPVFlQRVM9PT0hMHx8dC5kZWZhdWx0
LkVYVEVORF9QUk9UT1RZUEVTLlN0cmluZykmJihTdHJpbmcucHJvdG90eXBlLnBsdXJhbGl6ZT1m
dW5jdGlvbigpe3JldHVybigwLHIucGx1cmFsaXplKSh0aGlzKX0sU3RyaW5nLnByb3RvdHlwZS5z
aW5ndWxhcml6ZT1mdW5jdGlvbigpe3JldHVybigwLHIuc2luZ3VsYXJpemUpKHRoaXMpfSl9KSxk
ZWZpbmUoImVtYmVyLWluZmxlY3Rvci9saWIvaGVscGVycy9wbHVyYWxpemUiLFsiZXhwb3J0cyIs
ImVtYmVyLWluZmxlY3RvciIsImVtYmVyLWluZmxlY3Rvci9saWIvdXRpbHMvbWFrZS1oZWxwZXIi
XSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO2UuZGVmYXVsdD0oMCxyLmRlZmF1bHQpKGZ1
bmN0aW9uKGUpe3ZhciByPXZvaWQgMCxuPXZvaWQgMDtyZXR1cm4gMT09PWUubGVuZ3RoPyhuPWVb
MF0sKDAsdC5wbHVyYWxpemUpKG4pKToocj1lWzBdLG49ZVsxXSwxIT09cGFyc2VGbG9hdChyKSYm
KG49KDAsdC5wbHVyYWxpemUpKG4pKSxyKyIgIituKX0pfSksZGVmaW5lKCJlbWJlci1pbmZsZWN0
b3IvbGliL2hlbHBlcnMvc2luZ3VsYXJpemUiLFsiZXhwb3J0cyIsImVtYmVyLWluZmxlY3RvciIs
ImVtYmVyLWluZmxlY3Rvci9saWIvdXRpbHMvbWFrZS1oZWxwZXIiXSxmdW5jdGlvbihlLHQscil7
InVzZSBzdHJpY3QiO2UuZGVmYXVsdD0oMCxyLmRlZmF1bHQpKGZ1bmN0aW9uKGUpe3JldHVybigw
LHQuc2luZ3VsYXJpemUpKGVbMF0pfSl9KSxkZWZpbmUoImVtYmVyLWluZmxlY3Rvci9saWIvc3lz
dGVtIixbImV4cG9ydHMiLCJlbWJlci1pbmZsZWN0b3IvbGliL3N5c3RlbS9pbmZsZWN0b3IiLCJl
bWJlci1pbmZsZWN0b3IvbGliL3N5c3RlbS9zdHJpbmciLCJlbWJlci1pbmZsZWN0b3IvbGliL3N5
c3RlbS9pbmZsZWN0aW9ucyJdLGZ1bmN0aW9uKGUsdCxyLG4peyJ1c2Ugc3RyaWN0Ijt0LmRlZmF1
bHQuaW5mbGVjdG9yPW5ldyB0LmRlZmF1bHQobi5kZWZhdWx0KSxlLkluZmxlY3Rvcj10LmRlZmF1
bHQsZS5zaW5ndWxhcml6ZT1yLnNpbmd1bGFyaXplLGUucGx1cmFsaXplPXIucGx1cmFsaXplLGUu
ZGVmYXVsdFJ1bGVzPW4uZGVmYXVsdH0pLGRlZmluZSgiZW1iZXItaW5mbGVjdG9yL2xpYi9zeXN0
ZW0vaW5mbGVjdGlvbnMiLFsiZXhwb3J0cyJdLGZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtlLmRl
ZmF1bHQ9e3BsdXJhbHM6W1svJC8sInMiXSxbL3MkL2ksInMiXSxbL14oYXh8dGVzdClpcyQvaSwi
JDFlcyJdLFsvKG9jdG9wfHZpcil1cyQvaSwiJDFpIl0sWy8ob2N0b3B8dmlyKWkkL2ksIiQxaSJd
LFsvKGFsaWFzfHN0YXR1cykkL2ksIiQxZXMiXSxbLyhidSlzJC9pLCIkMXNlcyJdLFsvKGJ1ZmZh
bHx0b21hdClvJC9pLCIkMW9lcyJdLFsvKFt0aV0pdW0kL2ksIiQxYSJdLFsvKFt0aV0pYSQvaSwi
JDFhIl0sWy9zaXMkL2ksInNlcyJdLFsvKD86KFteZl0pZmV8KFtscl0pZikkL2ksIiQxJDJ2ZXMi
XSxbLyhoaXZlKSQvaSwiJDFzIl0sWy8oW15hZWlvdXldfHF1KXkkL2ksIiQxaWVzIl0sWy8oeHxj
aHxzc3xzaCkkL2ksIiQxZXMiXSxbLyhtYXRyfHZlcnR8aW5kKSg/Oml4fGV4KSQvaSwiJDFpY2Vz
Il0sWy9eKG18bClvdXNlJC9pLCIkMWljZSJdLFsvXihtfGwpaWNlJC9pLCIkMWljZSJdLFsvXihv
eCkkL2ksIiQxZW4iXSxbL14ob3hlbikkL2ksIiQxIl0sWy8ocXVpeikkL2ksIiQxemVzIl1dLHNp
bmd1bGFyOltbL3MkL2ksIiJdLFsvKHNzKSQvaSwiJDEiXSxbLyhuKWV3cyQvaSwiJDFld3MiXSxb
LyhbdGldKWEkL2ksIiQxdW0iXSxbLygoYSluYWx5fChiKWF8KGQpaWFnbm98KHApYXJlbnRoZXwo
cClyb2dub3wocyl5bm9wfCh0KWhlKShzaXN8c2VzKSQvaSwiJDFzaXMiXSxbLyheYW5hbHkpKHNp
c3xzZXMpJC9pLCIkMXNpcyJdLFsvKFteZl0pdmVzJC9pLCIkMWZlIl0sWy8oaGl2ZSlzJC9pLCIk
MSJdLFsvKHRpdmUpcyQvaSwiJDEiXSxbLyhbbHJdKXZlcyQvaSwiJDFmIl0sWy8oW15hZWlvdXld
fHF1KWllcyQvaSwiJDF5Il0sWy8ocyllcmllcyQvaSwiJDFlcmllcyJdLFsvKG0pb3ZpZXMkL2ks
IiQxb3ZpZSJdLFsvKHh8Y2h8c3N8c2gpZXMkL2ksIiQxIl0sWy9eKG18bClpY2UkL2ksIiQxb3Vz
ZSJdLFsvKGJ1cykoZXMpPyQvaSwiJDEiXSxbLyhvKWVzJC9pLCIkMSJdLFsvKHNob2UpcyQvaSwi
JDEiXSxbLyhjcmlzfHRlc3QpKGlzfGVzKSQvaSwiJDFpcyJdLFsvXihhKXhbaWVdcyQvaSwiJDF4
aXMiXSxbLyhvY3RvcHx2aXIpKHVzfGkpJC9pLCIkMXVzIl0sWy8oYWxpYXN8c3RhdHVzKShlcyk/
JC9pLCIkMSJdLFsvXihveCllbi9pLCIkMSJdLFsvKHZlcnR8aW5kKWljZXMkL2ksIiQxZXgiXSxb
LyhtYXRyKWljZXMkL2ksIiQxaXgiXSxbLyhxdWl6KXplcyQvaSwiJDEiXSxbLyhkYXRhYmFzZSlz
JC9pLCIkMSJdXSxpcnJlZ3VsYXJQYWlyczpbWyJwZXJzb24iLCJwZW9wbGUiXSxbIm1hbiIsIm1l
biJdLFsiY2hpbGQiLCJjaGlsZHJlbiJdLFsic2V4Iiwic2V4ZXMiXSxbIm1vdmUiLCJtb3ZlcyJd
LFsiY293Iiwia2luZSJdLFsiem9tYmllIiwiem9tYmllcyJdXSx1bmNvdW50YWJsZTpbImVxdWlw
bWVudCIsImluZm9ybWF0aW9uIiwicmljZSIsIm1vbmV5Iiwic3BlY2llcyIsInNlcmllcyIsImZp
c2giLCJzaGVlcCIsImplYW5zIiwicG9saWNlIl19fSksZGVmaW5lKCJlbWJlci1pbmZsZWN0b3Iv
bGliL3N5c3RlbS9pbmZsZWN0b3IiLFsiZXhwb3J0cyIsImVtYmVyIl0sZnVuY3Rpb24oZSx0KXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe2Zvcih2YXIgcj0wLG49dC5sZW5ndGg7cjxuO3Ir
KyllLnVuY291bnRhYmxlW3Rbcl0udG9Mb3dlckNhc2UoKV09ITB9ZnVuY3Rpb24gbihlLHQpe2Zv
cih2YXIgcixuPTAsaT10Lmxlbmd0aDtuPGk7bisrKXI9dFtuXSxlLmlycmVndWxhcltyWzBdLnRv
TG93ZXJDYXNlKCldPXJbMV0sZS5pcnJlZ3VsYXJbclsxXS50b0xvd2VyQ2FzZSgpXT1yWzFdLGUu
aXJyZWd1bGFySW52ZXJzZVtyWzFdLnRvTG93ZXJDYXNlKCldPXJbMF0sZS5pcnJlZ3VsYXJJbnZl
cnNlW3JbMF0udG9Mb3dlckNhc2UoKV09clswXX1mdW5jdGlvbiBpKGUpe2U9ZXx8e30sZS51bmNv
dW50YWJsZT1lLnVuY291bnRhYmxlfHxvKCksZS5pcnJlZ3VsYXJQYWlycz1lLmlycmVndWxhclBh
aXJzfHxvKCk7dmFyIHQ9dGhpcy5ydWxlcz17cGx1cmFsczplLnBsdXJhbHN8fFtdLHNpbmd1bGFy
OmUuc2luZ3VsYXJ8fFtdLGlycmVndWxhcjpvKCksaXJyZWd1bGFySW52ZXJzZTpvKCksdW5jb3Vu
dGFibGU6bygpfTtyKHQsZS51bmNvdW50YWJsZSksbih0LGUuaXJyZWd1bGFyUGFpcnMpLHRoaXMu
ZW5hYmxlQ2FjaGUoKX1mdW5jdGlvbiBvKCl7dmFyIGU9T2JqZWN0LmNyZWF0ZShudWxsKTtyZXR1
cm4gZS5fZGljdD1udWxsLGRlbGV0ZSBlLl9kaWN0LGV9dmFyIGE9dC5kZWZhdWx0LlN0cmluZy5j
YXBpdGFsaXplLHM9L15ccyokLyx1PS8oW1x3XC8tXStbX1wvXHMtXSkoW2EtelxkXSskKS8sbD0v
KFtcd1wvXHMtXSspKFtBLVpdW2EtelxkXSokKS8sYz0vW0EtWl1bYS16XGRdKiQvO2lmKCFPYmpl
Y3QuY3JlYXRlJiYhT2JqZWN0LmNyZWF0ZShudWxsKS5oYXNPd25Qcm9wZXJ0eSl0aHJvdyBuZXcg
RXJyb3IoIlRoaXMgYnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IE9iamVjdC5jcmVhdGUobnVsbCks
IHBsZWFzZSBwb2x5ZmlsIHdpdGggZXM1LXNoYW06IGh0dHA6Ly9naXQuaW8veUJVMnJnIik7aS5w
cm90b3R5cGU9e2VuYWJsZUNhY2hlOmZ1bmN0aW9uKCl7dGhpcy5wdXJnZUNhY2hlKCksdGhpcy5z
aW5ndWxhcml6ZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fY2FjaGVVc2VkPSEwLHRoaXMuX3ND
YWNoZVtlXXx8KHRoaXMuX3NDYWNoZVtlXT10aGlzLl9zaW5ndWxhcml6ZShlKSl9LHRoaXMucGx1
cmFsaXplPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9jYWNoZVVzZWQ9ITAsdGhpcy5fcENhY2hl
W2VdfHwodGhpcy5fcENhY2hlW2VdPXRoaXMuX3BsdXJhbGl6ZShlKSl9fSxwdXJnZUNhY2hlOmZ1
bmN0aW9uKCl7dGhpcy5fY2FjaGVVc2VkPSExLHRoaXMuX3NDYWNoZT1vKCksdGhpcy5fcENhY2hl
PW8oKX0sZGlzYWJsZUNhY2hlOmZ1bmN0aW9uKCl7dGhpcy5fc0NhY2hlPW51bGwsdGhpcy5fcENh
Y2hlPW51bGwsdGhpcy5zaW5ndWxhcml6ZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fc2luZ3Vs
YXJpemUoZSl9LHRoaXMucGx1cmFsaXplPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9wbHVyYWxp
emUoZSl9fSxwbHVyYWw6ZnVuY3Rpb24oZSx0KXt0aGlzLl9jYWNoZVVzZWQmJnRoaXMucHVyZ2VD
YWNoZSgpLHRoaXMucnVsZXMucGx1cmFscy5wdXNoKFtlLHQudG9Mb3dlckNhc2UoKV0pfSxzaW5n
dWxhcjpmdW5jdGlvbihlLHQpe3RoaXMuX2NhY2hlVXNlZCYmdGhpcy5wdXJnZUNhY2hlKCksdGhp
cy5ydWxlcy5zaW5ndWxhci5wdXNoKFtlLHQudG9Mb3dlckNhc2UoKV0pfSx1bmNvdW50YWJsZTpm
dW5jdGlvbihlKXt0aGlzLl9jYWNoZVVzZWQmJnRoaXMucHVyZ2VDYWNoZSgpLHIodGhpcy5ydWxl
cyxbZS50b0xvd2VyQ2FzZSgpXSl9LGlycmVndWxhcjpmdW5jdGlvbihlLHQpe3RoaXMuX2NhY2hl
VXNlZCYmdGhpcy5wdXJnZUNhY2hlKCksbih0aGlzLnJ1bGVzLFtbZSx0XV0pfSxwbHVyYWxpemU6
ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX3BsdXJhbGl6ZShlKX0sX3BsdXJhbGl6ZTpmdW5jdGlv
bihlKXtyZXR1cm4gdGhpcy5pbmZsZWN0KGUsdGhpcy5ydWxlcy5wbHVyYWxzLHRoaXMucnVsZXMu
aXJyZWd1bGFyKX0sc2luZ3VsYXJpemU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX3Npbmd1bGFy
aXplKGUpfSxfc2luZ3VsYXJpemU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuaW5mbGVjdChlLHRo
aXMucnVsZXMuc2luZ3VsYXIsdGhpcy5ydWxlcy5pcnJlZ3VsYXJJbnZlcnNlKX0saW5mbGVjdDpm
dW5jdGlvbihlLHQscil7dmFyIG4saSxvLGYsZCxwLGgsbSx2LGIsZztpZihtPSFlfHxzLnRlc3Qo
ZSksdj1jLnRlc3QoZSkscD0iIixtKXJldHVybiBlO2lmKGY9ZS50b0xvd2VyQ2FzZSgpLGQ9dS5l
eGVjKGUpfHxsLmV4ZWMoZSksZCYmKHA9ZFsxXSxoPWRbMl0udG9Mb3dlckNhc2UoKSksZz10aGlz
LnJ1bGVzLnVuY291bnRhYmxlW2ZdfHx0aGlzLnJ1bGVzLnVuY291bnRhYmxlW2hdKXJldHVybiBl
O2ZvcihiIGluIHRoaXMucnVsZXMuaXJyZWd1bGFyKWlmKGYubWF0Y2goYisiJCIpKXJldHVybiBp
PXJbYl0sdiYmcltoXSYmKGk9YShpKSxiPWEoYikpLGUucmVwbGFjZShiLGkpO2Zvcih2YXIgeT10
Lmxlbmd0aCxfPTA7eT5fJiYobj10W3ktMV0sYj1uWzBdLCFiLnRlc3QoZSkpO3ktLSk7cmV0dXJu
IG49bnx8W10sYj1uWzBdLGk9blsxXSxvPWUucmVwbGFjZShiLGkpfX0sZS5kZWZhdWx0PWl9KSxk
ZWZpbmUoImVtYmVyLWluZmxlY3Rvci9saWIvc3lzdGVtL3N0cmluZyIsWyJleHBvcnRzIiwiZW1i
ZXItaW5mbGVjdG9yL2xpYi9zeXN0ZW0vaW5mbGVjdG9yIl0sZnVuY3Rpb24oZSx0KXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gdC5kZWZhdWx0LmluZmxlY3Rvci5wbHVyYWxpemUo
ZSl9ZnVuY3Rpb24gbihlKXtyZXR1cm4gdC5kZWZhdWx0LmluZmxlY3Rvci5zaW5ndWxhcml6ZShl
KX1lLnBsdXJhbGl6ZT1yLGUuc2luZ3VsYXJpemU9bn0pLGRlZmluZSgiZW1iZXItaW5mbGVjdG9y
L2xpYi91dGlscy9tYWtlLWhlbHBlciIsWyJleHBvcnRzIiwiZW1iZXIiXSxmdW5jdGlvbihlLHQp
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiB0LmRlZmF1bHQuSGVscGVyP3QuZGVm
YXVsdC5IZWxwZXIuaGVscGVyKGUpOnQuZGVmYXVsdC5IVE1MQmFycz90LmRlZmF1bHQuSFRNTEJh
cnMubWFrZUJvdW5kSGVscGVyKGUpOnQuZGVmYXVsdC5IYW5kbGViYXJzLm1ha2VCb3VuZEhlbHBl
cihlKX1lLmRlZmF1bHQ9cn0pLGRlZmluZSgiZW1iZXItbG9hZC1pbml0aWFsaXplcnMvaW5kZXgi
LFsiZXhwb3J0cyIsImVtYmVyIl0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZS5kZWZhdWx0
PWZ1bmN0aW9uKGUscil7dmFyIG49bmV3IFJlZ0V4cCgiXiIrcisiLygoPzppbnN0YW5jZS0pP2lu
aXRpYWxpemVycykvIiksaT1PYmplY3Qua2V5c3x8dC5kZWZhdWx0LmtleXM7aShyZXF1aXJlanMu
X2Vha19zZWVuKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJue21vZHVsZU5hbWU6ZSxtYXRjaGVzOm4u
ZXhlYyhlKX19KS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUubWF0Y2hlcyYmMj09PWUubWF0
Y2hlcy5sZW5ndGh9KS5mb3JFYWNoKGZ1bmN0aW9uKHIpe3ZhciBuPXIubW9kdWxlTmFtZSxpPXJl
cXVpcmUobixudWxsLG51bGwsITApO2lmKCFpKXRocm93IG5ldyBFcnJvcihuKyIgbXVzdCBleHBv
cnQgYW4gaW5pdGlhbGl6ZXIuIik7dmFyIG89dC5kZWZhdWx0LlN0cmluZy5jYW1lbGl6ZShyLm1h
dGNoZXNbMV0uc3Vic3RyaW5nKDAsci5tYXRjaGVzWzFdLmxlbmd0aC0xKSksYT1pLmRlZmF1bHQ7
aWYoIWEubmFtZSl7dmFyIHM9bi5tYXRjaCgvW15cL10rXC8/JC8pWzBdO2EubmFtZT1zfWVbb10m
JmVbb10oYSl9KX19KSxkZWZpbmUoImVtYmVyLXJlc29sdmVyL2NvbnRhaW5lci1kZWJ1Zy1hZGFw
dGVyIixbImV4cG9ydHMiLCJlbWJlciIsImVtYmVyLXJlc29sdmVyL3V0aWxzL21vZHVsZS1yZWdp
c3RyeSJdLGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlLHQscil7dmFy
IG49dC5tYXRjaChuZXcgUmVnRXhwKCJeLz8iK3IrIi8oLispLyIrZSsiJCIpKTtpZihuKXJldHVy
biBuWzFdfXZhciBpPXQuZGVmYXVsdC5Db250YWluZXJEZWJ1Z0FkYXB0ZXIsbz1udWxsOyJ1bmRl
ZmluZWQiIT10eXBlb2YgaSYmKG89aS5leHRlbmQoe19tb2R1bGVSZWdpc3RyeTpudWxsLGluaXQ6
ZnVuY3Rpb24oKXt0aGlzLl9zdXBlci5hcHBseSh0aGlzLGFyZ3VtZW50cyksdGhpcy5fbW9kdWxl
UmVnaXN0cnl8fCh0aGlzLl9tb2R1bGVSZWdpc3RyeT1uZXcgci5kZWZhdWx0KX0sY2FuQ2F0YWxv
Z0VudHJpZXNCeVR5cGU6ZnVuY3Rpb24oKXtyZXR1cm4hMH0sY2F0YWxvZ0VudHJpZXNCeVR5cGU6
ZnVuY3Rpb24oZSl7Zm9yKHZhciByPXRoaXMuX21vZHVsZVJlZ2lzdHJ5Lm1vZHVsZU5hbWVzKCks
aT10LmRlZmF1bHQuQSgpLG89dGhpcy5uYW1lc3BhY2UubW9kdWxlUHJlZml4LGE9MCxzPXIubGVu
Z3RoO2E8czthKyspe3ZhciB1PXJbYV07aWYodS5pbmRleE9mKGUpIT09LTEpe3ZhciBsPW4oZSx1
LHRoaXMubmFtZXNwYWNlLnBvZE1vZHVsZVByZWZpeHx8byk7bHx8KGw9dS5zcGxpdChlKyJzLyIp
LnBvcCgpKSxpLmFkZE9iamVjdChsKX19cmV0dXJuIGl9fSkpLGUuZGVmYXVsdD1vfSksZGVmaW5l
KCJlbWJlci1yZXNvbHZlci9pbmRleCIsWyJleHBvcnRzIiwiZW1iZXItcmVzb2x2ZXIvcmVzb2x2
ZXIiXSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwi
ZGVmYXVsdCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHQuZGVmYXVsdH19
KX0pLGRlZmluZSgiZW1iZXItcmVzb2x2ZXIvcmVzb2x2ZXIiLFsiZXhwb3J0cyIsImVtYmVyIiwi
ZW1iZXItcmVzb2x2ZXIvdXRpbHMvbW9kdWxlLXJlZ2lzdHJ5IiwiZW1iZXItcmVzb2x2ZXIvdXRp
bHMvY2xhc3MtZmFjdG9yeSIsImVtYmVyLXJlc29sdmVyL3V0aWxzL21ha2UtZGljdGlvbmFyeSJd
LGZ1bmN0aW9uKGUsdCxyLG4saSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG8oZSl7aWYoZS5wYXJz
ZWROYW1lPT09ITApcmV0dXJuIGU7dmFyIHQscixuLGk9ZS5zcGxpdCgiQCIpO2lmKCJoZWxwZXI6
QGNvbnRlbnQtaGVscGVyIiE9PWUmJjI9PT1pLmxlbmd0aCl7dmFyIG89aVswXS5zcGxpdCgiOiIp
O2lmKDI9PT1vLmxlbmd0aCl0PW9bMV0scj1vWzBdLG49aVsxXTtlbHNle3ZhciBhPWlbMV0uc3Bs
aXQoIjoiKTt0PWlbMF0scj1hWzBdLG49YVsxXX19ZWxzZSBpPWUuc3BsaXQoIjoiKSxyPWlbMF0s
bj1pWzFdO3ZhciBzPW4sdT1jKHRoaXMsIm5hbWVzcGFjZSIpLGY9dTtyZXR1cm57cGFyc2VkTmFt
ZTohMCxmdWxsTmFtZTplLHByZWZpeDp0fHx0aGlzLnByZWZpeCh7dHlwZTpyfSksdHlwZTpyLGZ1
bGxOYW1lV2l0aG91dFR5cGU6cyxuYW1lOm4scm9vdDpmLHJlc29sdmVNZXRob2ROYW1lOiJyZXNv
bHZlIitsKHIpfX1mdW5jdGlvbiBhKGUpe3QuZGVmYXVsdC5hc3NlcnQoImBtb2R1bGVQcmVmaXhg
IG11c3QgYmUgZGVmaW5lZCIsdGhpcy5uYW1lc3BhY2UubW9kdWxlUHJlZml4KTt2YXIgcj10aGlz
LmZpbmRNb2R1bGVOYW1lKGUpO2lmKHIpe3ZhciBpPXRoaXMuX2V4dHJhY3REZWZhdWx0RXhwb3J0
KHIsZSk7aWYodm9pZCAwPT09aSl0aHJvdyBuZXcgRXJyb3IoIiBFeHBlY3RlZCB0byBmaW5kOiAn
IitlLmZ1bGxOYW1lKyInIHdpdGhpbiAnIityKyInIGJ1dCBnb3QgJ3VuZGVmaW5lZCcuIERpZCB5
b3UgZm9yZ2V0IHRvIGBleHBvcnQgZGVmYXVsdGAgd2l0aGluICciK3IrIic/Iik7cmV0dXJuIHRo
aXMuc2hvdWxkV3JhcEluQ2xhc3NGYWN0b3J5KGksZSkmJihpPSgwLG4uZGVmYXVsdCkoaSkpLGl9
cmV0dXJuIHRoaXMuX3N1cGVyKGUpfXZhciBzPXQuZGVmYXVsdC5TdHJpbmcsdT1zLnVuZGVyc2Nv
cmUsbD1zLmNsYXNzaWZ5LGM9dC5kZWZhdWx0LmdldCxmPXQuZGVmYXVsdC5EZWZhdWx0UmVzb2x2
ZXIsZD1mLmV4dGVuZCh7cmVzb2x2ZU90aGVyOmEscGFyc2VOYW1lOm8scmVzb2x2ZVRlbXBsYXRl
OmEscGx1cmFsaXplZFR5cGVzOm51bGwsbW9kdWxlUmVnaXN0cnk6bnVsbCxtYWtlVG9TdHJpbmc6
ZnVuY3Rpb24oZSx0KXtyZXR1cm4iIit0aGlzLm5hbWVzcGFjZS5tb2R1bGVQcmVmaXgrIkAiK3Qr
IjoifSxzaG91bGRXcmFwSW5DbGFzc0ZhY3Rvcnk6ZnVuY3Rpb24oKXtyZXR1cm4hMX0saW5pdDpm
dW5jdGlvbigpe3RoaXMuX3N1cGVyKCksdGhpcy5tb2R1bGVCYXNlZFJlc29sdmVyPSEwLHRoaXMu
X21vZHVsZVJlZ2lzdHJ5fHwodGhpcy5fbW9kdWxlUmVnaXN0cnk9bmV3IHIuZGVmYXVsdCksdGhp
cy5fbm9ybWFsaXplQ2FjaGU9KDAsaS5kZWZhdWx0KSgpLHRoaXMucGx1cmFsaXplZFR5cGVzPXRo
aXMucGx1cmFsaXplZFR5cGVzfHwoMCxpLmRlZmF1bHQpKCksdGhpcy5wbHVyYWxpemVkVHlwZXMu
Y29uZmlnfHwodGhpcy5wbHVyYWxpemVkVHlwZXMuY29uZmlnPSJjb25maWciKSx0aGlzLl9kZXBy
ZWNhdGVkUG9kTW9kdWxlUHJlZml4PSExfSxub3JtYWxpemU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRo
aXMuX25vcm1hbGl6ZUNhY2hlW2VdfHwodGhpcy5fbm9ybWFsaXplQ2FjaGVbZV09dGhpcy5fbm9y
bWFsaXplKGUpKX0sX25vcm1hbGl6ZTpmdW5jdGlvbihlKXt2YXIgcj1lLnNwbGl0KCI6Iik7cmV0
dXJuIHIubGVuZ3RoPjE/clswXSsiOiIrdC5kZWZhdWx0LlN0cmluZy5kYXNoZXJpemUoclsxXS5y
ZXBsYWNlKC9cLi9nLCIvIikpOmV9LHBsdXJhbGl6ZTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5w
bHVyYWxpemVkVHlwZXNbZV18fCh0aGlzLnBsdXJhbGl6ZWRUeXBlc1tlXT1lKyJzIil9LHBvZEJh
c2VkTG9va3VwV2l0aFByZWZpeDpmdW5jdGlvbihlLHQpe3ZhciByPXQuZnVsbE5hbWVXaXRob3V0
VHlwZTtyZXR1cm4idGVtcGxhdGUiPT09dC50eXBlJiYocj1yLnJlcGxhY2UoL15jb21wb25lbnRz
XC8vLCIiKSksZSsiLyIrcisiLyIrdC50eXBlfSxwb2RCYXNlZE1vZHVsZU5hbWU6ZnVuY3Rpb24o
ZSl7dmFyIHQ9dGhpcy5uYW1lc3BhY2UucG9kTW9kdWxlUHJlZml4fHx0aGlzLm5hbWVzcGFjZS5t
b2R1bGVQcmVmaXg7cmV0dXJuIHRoaXMucG9kQmFzZWRMb29rdXBXaXRoUHJlZml4KHQsZSl9LHBv
ZEJhc2VkQ29tcG9uZW50c0luU3ViZGlyOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMubmFtZXNwYWNl
LnBvZE1vZHVsZVByZWZpeHx8dGhpcy5uYW1lc3BhY2UubW9kdWxlUHJlZml4O2lmKHQrPSIvY29t
cG9uZW50cyIsImNvbXBvbmVudCI9PT1lLnR5cGV8fGUuZnVsbE5hbWVXaXRob3V0VHlwZS5tYXRj
aCgvXmNvbXBvbmVudHMvKSlyZXR1cm4gdGhpcy5wb2RCYXNlZExvb2t1cFdpdGhQcmVmaXgodCxl
KX0scmVzb2x2ZUVuZ2luZTpmdW5jdGlvbihlKXt2YXIgdD1lLmZ1bGxOYW1lV2l0aG91dFR5cGUs
cj10KyIvZW5naW5lIjtpZih0aGlzLl9tb2R1bGVSZWdpc3RyeS5oYXMocikpcmV0dXJuIHRoaXMu
X2V4dHJhY3REZWZhdWx0RXhwb3J0KHIpfSxyZXNvbHZlUm91dGVNYXA6ZnVuY3Rpb24oZSl7dmFy
IHI9ZS5mdWxsTmFtZVdpdGhvdXRUeXBlLG49cisiL3JvdXRlcyI7aWYodGhpcy5fbW9kdWxlUmVn
aXN0cnkuaGFzKG4pKXt2YXIgaT10aGlzLl9leHRyYWN0RGVmYXVsdEV4cG9ydChuKTtyZXR1cm4g
dC5kZWZhdWx0LmFzc2VydCgiVGhlIHJvdXRlIG1hcCBmb3IgIityKyIgc2hvdWxkIGJlIHdyYXBw
ZWQgYnkgJ2J1aWxkUm91dGVzJyBiZWZvcmUgZXhwb3J0aW5nLiIsaS5pc1JvdXRlTWFwKSxpfX0s
bWFpbk1vZHVsZU5hbWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5wcmVmaXgrIi8iK2UudHlwZTtpZigi
bWFpbiI9PT1lLmZ1bGxOYW1lV2l0aG91dFR5cGUpcmV0dXJuIHR9LGRlZmF1bHRNb2R1bGVOYW1l
OmZ1bmN0aW9uKGUpe3JldHVybiBlLnByZWZpeCsiLyIrdGhpcy5wbHVyYWxpemUoZS50eXBlKSsi
LyIrZS5mdWxsTmFtZVdpdGhvdXRUeXBlfSxwcmVmaXg6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5u
YW1lc3BhY2UubW9kdWxlUHJlZml4O3JldHVybiB0aGlzLm5hbWVzcGFjZVtlLnR5cGUrIlByZWZp
eCJdJiYodD10aGlzLm5hbWVzcGFjZVtlLnR5cGUrIlByZWZpeCJdKSx0fSxtb2R1bGVOYW1lTG9v
a3VwUGF0dGVybnM6dC5kZWZhdWx0LmNvbXB1dGVkKGZ1bmN0aW9uKCl7cmV0dXJuW3RoaXMucG9k
QmFzZWRNb2R1bGVOYW1lLHRoaXMucG9kQmFzZWRDb21wb25lbnRzSW5TdWJkaXIsdGhpcy5tYWlu
TW9kdWxlTmFtZSx0aGlzLmRlZmF1bHRNb2R1bGVOYW1lXX0pLGZpbmRNb2R1bGVOYW1lOmZ1bmN0
aW9uKGUsdCl7Zm9yKHZhciByLG49dGhpcy5nZXQoIm1vZHVsZU5hbWVMb29rdXBQYXR0ZXJucyIp
LGk9MCxvPW4ubGVuZ3RoO2k8bztpKyspe3ZhciBhPW5baV0scz1hLmNhbGwodGhpcyxlKTtpZihz
JiYocz10aGlzLmNob29zZU1vZHVsZU5hbWUocykpLHMmJnRoaXMuX21vZHVsZVJlZ2lzdHJ5Lmhh
cyhzKSYmKHI9cyksdHx8dGhpcy5fbG9nTG9va3VwKHIsZSxzKSxyKXJldHVybiByfX0sY2hvb3Nl
TW9kdWxlTmFtZTpmdW5jdGlvbihlKXt2YXIgcj11KGUpO2lmKGUhPT1yJiZ0aGlzLl9tb2R1bGVS
ZWdpc3RyeS5oYXMoZSkmJnRoaXMuX21vZHVsZVJlZ2lzdHJ5LmhhcyhyKSl0aHJvdyBuZXcgVHlw
ZUVycm9yKCJBbWJpZ3VvdXMgbW9kdWxlIG5hbWVzOiBgIitlKyJgIGFuZCBgIityKyJgIik7aWYo
dGhpcy5fbW9kdWxlUmVnaXN0cnkuaGFzKGUpKXJldHVybiBlO2lmKHRoaXMuX21vZHVsZVJlZ2lz
dHJ5LmhhcyhyKSlyZXR1cm4gcjt2YXIgbj1lLnJlcGxhY2UoL1wvLShbXlwvXSopJC8sIi9fJDEi
KTtyZXR1cm4gdGhpcy5fbW9kdWxlUmVnaXN0cnkuaGFzKG4pPyh0LmRlZmF1bHQuZGVwcmVjYXRl
KCdNb2R1bGVzIHNob3VsZCBub3QgY29udGFpbiB1bmRlcnNjb3Jlcy4gQXR0ZW1wdGVkIHRvIGxv
b2t1cCAiJytlKyciIHdoaWNoIHdhcyBub3QgZm91bmQuIFBsZWFzZSByZW5hbWUgIicrbisnIiB0
byAiJytlKyciIGluc3RlYWQuJywhMSx7aWQ6ImVtYmVyLXJlc29sdmVyLnVuZGVyc2NvcmVkLW1v
ZHVsZXMiLHVudGlsOiIzLjAuMCJ9KSxuKTplfSxsb29rdXBEZXNjcmlwdGlvbjpmdW5jdGlvbihl
KXt2YXIgdD10aGlzLnBhcnNlTmFtZShlKSxyPXRoaXMuZmluZE1vZHVsZU5hbWUodCwhMCk7cmV0
dXJuIHJ9LF9sb2dMb29rdXA6ZnVuY3Rpb24oZSxyLG4pe2lmKHQuZGVmYXVsdC5FTlYuTE9HX01P
RFVMRV9SRVNPTFZFUnx8ci5yb290LkxPR19SRVNPTFZFUil7dmFyIGksbztpPWU/IlvinJNdIjoi
WyBdIixvPXIuZnVsbE5hbWUubGVuZ3RoPjYwPyIuIjpuZXcgQXJyYXkoNjAtci5mdWxsTmFtZS5s
ZW5ndGgpLmpvaW4oIi4iKSxufHwobj10aGlzLmxvb2t1cERlc2NyaXB0aW9uKHIpKSx0LmRlZmF1
bHQuTG9nZ2VyLmluZm8oaSxyLmZ1bGxOYW1lLG8sbil9fSxrbm93bkZvclR5cGU6ZnVuY3Rpb24o
ZSl7Zm9yKHZhciB0PXRoaXMuX21vZHVsZVJlZ2lzdHJ5Lm1vZHVsZU5hbWVzKCkscj0oMCxpLmRl
ZmF1bHQpKCksbj0wLG89dC5sZW5ndGg7bjxvO24rKyl7dmFyIGE9dFtuXSxzPXRoaXMudHJhbnNs
YXRlVG9Db250YWluZXJGdWxsbmFtZShlLGEpO3MmJihyW3NdPSEwKX1yZXR1cm4gcn0sdHJhbnNs
YXRlVG9Db250YWluZXJGdWxsbmFtZTpmdW5jdGlvbihlLHQpe3ZhciByPXRoaXMucHJlZml4KHt0
eXBlOmV9KSxuPXIrIi8iLGk9Ii8iK2Usbz10LmluZGV4T2YobiksYT10LmluZGV4T2YoaSk7aWYo
MD09PW8mJmE9PT10Lmxlbmd0aC1pLmxlbmd0aCYmdC5sZW5ndGg+bi5sZW5ndGgraS5sZW5ndGgp
cmV0dXJuIGUrIjoiK3Quc2xpY2UobytuLmxlbmd0aCxhKTt2YXIgcz10aGlzLnBsdXJhbGl6ZShl
KSx1PXIrIi8iK3MrIi8iO3JldHVybiAwPT09dC5pbmRleE9mKHUpJiZ0Lmxlbmd0aD51Lmxlbmd0
aD9lKyI6Iit0LnNsaWNlKHUubGVuZ3RoKTp2b2lkIDB9LF9leHRyYWN0RGVmYXVsdEV4cG9ydDpm
dW5jdGlvbihlKXt2YXIgdD1yZXF1aXJlKGUsbnVsbCxudWxsLCEwKTtyZXR1cm4gdCYmdC5kZWZh
dWx0JiYodD10LmRlZmF1bHQpLHR9fSk7ZC5yZW9wZW5DbGFzcyh7bW9kdWxlQmFzZWRSZXNvbHZl
cjohMH0pLGUuZGVmYXVsdD1kfSksZGVmaW5lKCJlbWJlci1yZXNvbHZlci91dGlscy9jbGFzcy1m
YWN0b3J5IixbImV4cG9ydHMiXSxmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gdChl
KXtyZXR1cm57Y3JlYXRlOmZ1bmN0aW9uKHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlLmV4
dGVuZD9lLmV4dGVuZCh0KTplfX19ZS5kZWZhdWx0PXR9KSxkZWZpbmUoImVtYmVyLXJlc29sdmVy
L3V0aWxzL2NyZWF0ZSIsWyJleHBvcnRzIiwiZW1iZXIiXSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3Ry
aWN0IjsKK3ZhciByPU9iamVjdC5jcmVhdGV8fHQuZGVmYXVsdC5jcmVhdGU7aWYoIXJ8fHIobnVs
bCkuaGFzT3duUHJvcGVydHkpdGhyb3cgbmV3IEVycm9yKCJUaGlzIGJyb3dzZXIgZG9lcyBub3Qg
c3VwcG9ydCBPYmplY3QuY3JlYXRlKG51bGwpLCBwbGVhc2UgcG9seWZpbCB3aXRoIGVzNS1zaGFt
OiBodHRwOi8vZ2l0LmlvL3lCVTJyZyIpO2UuZGVmYXVsdD1yfSksZGVmaW5lKCJlbWJlci1yZXNv
bHZlci91dGlscy9tYWtlLWRpY3Rpb25hcnkiLFsiZXhwb3J0cyIsImVtYmVyLXJlc29sdmVyL3V0
aWxzL2NyZWF0ZSJdLGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXt2YXIg
ZT0oMCx0LmRlZmF1bHQpKG51bGwpO3JldHVybiBlLl9kaWN0PW51bGwsZGVsZXRlIGUuX2RpY3Qs
ZX1lLmRlZmF1bHQ9cn0pLGRlZmluZSgiZW1iZXItcmVzb2x2ZXIvdXRpbHMvbW9kdWxlLXJlZ2lz
dHJ5IixbImV4cG9ydHMiLCJlbWJlciJdLGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIoZSl7dGhpcy5fZW50cmllcz1lfHxyZXF1aXJlanMuZW50cmllc30idW5kZWZpbmVkIj09
dHlwZW9mIHJlcXVpcmVqcy5lbnRyaWVzJiYocmVxdWlyZWpzLmVudHJpZXM9cmVxdWlyZWpzLl9l
YWtfc2Vlbiksci5wcm90b3R5cGUubW9kdWxlTmFtZXM9ZnVuY3Rpb24oKXtyZXR1cm4oT2JqZWN0
LmtleXN8fHQuZGVmYXVsdC5rZXlzKSh0aGlzLl9lbnRyaWVzKX0sci5wcm90b3R5cGUuaGFzPWZ1
bmN0aW9uKGUpe3JldHVybiBlIGluIHRoaXMuX2VudHJpZXN9LHIucHJvdG90eXBlLmdldD1mdW5j
dGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPD0xfHx2b2lkIDA9PT1hcmd1bWVudHNbMV0/
ImRlZmF1bHQiOmFyZ3VtZW50c1sxXSxyPXJlcXVpcmUoZSk7cmV0dXJuIHImJnJbdF19LGUuZGVm
YXVsdD1yfSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvZW1iZXJqcy9zb3VyY2UvdG9kb212Yy9kaXN0L2Nyb3NzZG9tYWluLnhtbCBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2VtYmVyanMvc291cmNlL3RvZG9tdmMvZGlzdC9jcm9zc2RvbWFpbi54bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMGMxNmE3YTA3YjM3ZTVkNWY3ZTBlNTZjODI5ZjcyMDA2NzQ1ODQwMwotLS0gL2Rldi9u
dWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNlL3RvZG9tdmMvZGlzdC9jcm9zc2Rv
bWFpbi54bWwKQEAgLTAsMCArMSwxNSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIj8+Cis8IURPQ1RZ
UEUgY3Jvc3MtZG9tYWluLXBvbGljeSBTWVNURU0gImh0dHA6Ly93d3cuYWRvYmUuY29tL3htbC9k
dGRzL2Nyb3NzLWRvbWFpbi1wb2xpY3kuZHRkIj4KKzxjcm9zcy1kb21haW4tcG9saWN5PgorICA8
IS0tIFJlYWQgdGhpczogd3d3LmFkb2JlLmNvbS9kZXZuZXQvYXJ0aWNsZXMvY3Jvc3Nkb21haW5f
cG9saWN5X2ZpbGVfc3BlYy5odG1sIC0tPgorCisgIDwhLS0gTW9zdCByZXN0cmljdGl2ZSBwb2xp
Y3k6IC0tPgorICA8c2l0ZS1jb250cm9sIHBlcm1pdHRlZC1jcm9zcy1kb21haW4tcG9saWNpZXM9
Im5vbmUiLz4KKworICA8IS0tIExlYXN0IHJlc3RyaWN0aXZlIHBvbGljeTogLS0+CisgIDwhLS0K
KyAgPHNpdGUtY29udHJvbCBwZXJtaXR0ZWQtY3Jvc3MtZG9tYWluLXBvbGljaWVzPSJhbGwiLz4K
KyAgPGFsbG93LWFjY2Vzcy1mcm9tIGRvbWFpbj0iKiIgdG8tcG9ydHM9IioiIHNlY3VyZT0iZmFs
c2UiLz4KKyAgPGFsbG93LWh0dHAtcmVxdWVzdC1oZWFkZXJzLWZyb20gZG9tYWluPSIqIiBoZWFk
ZXJzPSIqIiBzZWN1cmU9ImZhbHNlIi8+CisgIC0tPgorPC9jcm9zcy1kb21haW4tcG9saWN5Pgpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvdG9kb212Yy9kaXN0L2luZGV4
Lmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS90b2RvbXZjL2Rpc3QvaW5kZXguaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43MWU1ZjYwM2QyMTBiOTQwMzI1NTQyZTVjZDIyMzExODA3ZGI3NTY1Ci0t
LSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvdG9kb212Yy9kaXN0
L2luZGV4Lmh0bWwKQEAgLTAsMCArMSwyNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAg
PGhlYWQ+CisgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgorICAgIDxtZXRhIGh0dHAtZXF1aXY9
IlgtVUEtQ29tcGF0aWJsZSIgY29udGVudD0iSUU9ZWRnZSI+CisgICAgPHRpdGxlPlRvZG9tdmM8
L3RpdGxlPgorICAgIDxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSIiPgorICAgIDxt
ZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwt
c2NhbGU9MSI+CisgICAgPGJhc2UgaHJlZj0iL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9lbWJlcmpzIiAvPgorICAgIAorPG1ldGEgbmFtZT0idG9kb212Yy9jb25maWcv
ZW52aXJvbm1lbnQiIGNvbnRlbnQ9IiU3QiUyMm1vZHVsZVByZWZpeCUyMiUzQSUyMnRvZG9tdmMl
MjIlMkMlMjJlbnZpcm9ubWVudCUyMiUzQSUyMnByb2R1Y3Rpb24lMjIlMkMlMjJiYXNlVVJMJTIy
JTNBbnVsbCUyQyUyMmxvY2F0aW9uVHlwZSUyMiUzQSUyMmF1dG8lMjIlMkMlMjJFbWJlckVOViUy
MiUzQSU3QiUyMkZFQVRVUkVTJTIyJTNBJTdCJTdEJTdEJTJDJTIyQVBQJTIyJTNBJTdCJTIybmFt
ZSUyMiUzQSUyMnRvZG9tdmMlMjIlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyMC4wLjArNTBkNDZiNGMl
MjIlN0QlMkMlMjJleHBvcnRBcHBsaWNhdGlvbkdsb2JhbCUyMiUzQWZhbHNlJTdEIiAvPgorCisg
ICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJhc3NldHMvdmVuZG9yLTdiNWM5ODUyMDkx
MGFmYTU4ZDc0ZTA1ZWM4NmNkODczLmNzcyI+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSJhc3NldHMvdG9kb212Yy1kNDFkOGNkOThmMDBiMjA0ZTk4MDA5OThlY2Y4NDI3ZS5jc3Mi
PgorCisgICAgCisgIDwvaGVhZD4KKyAgPGJvZHk+CisgICAgCisKKyAgICA8c2NyaXB0IHNyYz0i
YXNzZXRzL3ZlbmRvci05ODM2YWM4YjAxNmZjZWE2Zjg5Y2NmOTI5MTc3NzJmNi5qcyI+PC9zY3Jp
cHQ+CisgICAgPHNjcmlwdCBzcmM9ImFzc2V0cy90b2RvbXZjLWZkZDJjNDhjZjY3NTc1M2RlNGE3
OWM4NTczNDNlMjNmLmpzIj48L3NjcmlwdD4KKworICAgIAorICA8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS90b2RvbXZjL2Rpc3Qvcm9ib3Rz
LnR4dCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNlL3RvZG9tdmMvZGlzdC9yb2JvdHMudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmY1OTE2NDUyZTVmZjZjOGI0M2Q2ZDdjNzNkMDAxNTNkMzRhYzM1ZGUKLS0t
IC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS90b2RvbXZjL2Rpc3Qv
cm9ib3RzLnR4dApAQCAtMCwwICsxLDMgQEAKKyMgaHR0cDovL3d3dy5yb2JvdHN0eHQub3JnCitV
c2VyLWFnZW50OiAqCitEaXNhbGxvdzoKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMv
c291cmNlL3RvZG9tdmMvZW1iZXItY2xpLWJ1aWxkLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9z
b3VyY2UvdG9kb212Yy9lbWJlci1jbGktYnVpbGQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjFkYmY1OTE4Y2I4
MTA5OGM4MzBiZjM4NWIxYmM1ZDk0NGNlMDk1YwotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2VtYmVyanMvc291cmNlL3RvZG9tdmMvZW1iZXItY2xpLWJ1aWxkLmpzCkBAIC0wLDAgKzEs
MjYgQEAKKy8qanNoaW50IG5vZGU6dHJ1ZSovCisvKiBnbG9iYWwgcmVxdWlyZSwgbW9kdWxlICov
Cit2YXIgRW1iZXJBcHAgPSByZXF1aXJlKCdlbWJlci1jbGkvbGliL2Jyb2Njb2xpL2VtYmVyLWFw
cCcpOworCittb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChkZWZhdWx0cykgeworICAgIHZhciBh
cHAgPSBuZXcgRW1iZXJBcHAoZGVmYXVsdHMsIHsKKyAgICAgICAgLy8gQWRkIG9wdGlvbnMgaGVy
ZQorICAgIH0pOworCisgICAgYXBwLmltcG9ydCgndmVuZG9yL2Jhc2UuY3NzJyk7CisgICAgYXBw
LmltcG9ydCgndmVuZG9yL2luZGV4LmNzcycpOworICAgIC8vIFVzZSBgYXBwLmltcG9ydGAgdG8g
YWRkIGFkZGl0aW9uYWwgbGlicmFyaWVzIHRvIHRoZSBnZW5lcmF0ZWQKKyAgICAvLyBvdXRwdXQg
ZmlsZXMuCisgICAgLy8KKyAgICAvLyBJZiB5b3UgbmVlZCB0byB1c2UgZGlmZmVyZW50IGFzc2V0
cyBpbiBkaWZmZXJlbnQKKyAgICAvLyBlbnZpcm9ubWVudHMsIHNwZWNpZnkgYW4gb2JqZWN0IGFz
IHRoZSBmaXJzdCBwYXJhbWV0ZXIuIFRoYXQKKyAgICAvLyBvYmplY3QncyBrZXlzIHNob3VsZCBi
ZSB0aGUgZW52aXJvbm1lbnQgbmFtZSBhbmQgdGhlIHZhbHVlcworICAgIC8vIHNob3VsZCBiZSB0
aGUgYXNzZXQgdG8gdXNlIGluIHRoYXQgZW52aXJvbm1lbnQuCisgICAgLy8KKyAgICAvLyBJZiB0
aGUgbGlicmFyeSB0aGF0IHlvdSBhcmUgaW5jbHVkaW5nIGNvbnRhaW5zIEFNRCBvciBFUzYKKyAg
ICAvLyBtb2R1bGVzIHRoYXQgeW91IHdvdWxkIGxpa2UgdG8gaW1wb3J0IGludG8geW91ciBhcHBs
aWNhdGlvbgorICAgIC8vIHBsZWFzZSBzcGVjaWZ5IGFuIG9iamVjdCB3aXRoIHRoZSBsaXN0IG9m
IG1vZHVsZXMgYXMga2V5cworICAgIC8vIGFsb25nIHdpdGggdGhlIGV4cG9ydHMgb2YgZWFjaCBt
b2R1bGUgYXMgaXRzIHZhbHVlLgorCisgICAgcmV0dXJuIGFwcC50b1RyZWUoKTsKK307CmRpZmYg
LS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS90b2RvbXZjL3BhY2thZ2UuanNvbiBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNlL3RvZG9tdmMvcGFja2FnZS5qc29uCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjViZTY1NzMyMGYyMWQ0NjM3YjRkZGFmNzk3NzRiNjliNjNhYWQwMzEKLS0tIC9kZXYvbnVs
bAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS90b2RvbXZjL3BhY2thZ2UuanNvbgpA
QCAtMCwwICsxLDQyIEBACit7CisgICJuYW1lIjogInRvZG9tdmMiLAorICAidmVyc2lvbiI6ICIw
LjAuMCIsCisgICJkZXNjcmlwdGlvbiI6ICJTbWFsbCBkZXNjcmlwdGlvbiBmb3IgdG9kb212YyBn
b2VzIGhlcmUiLAorICAicHJpdmF0ZSI6IHRydWUsCisgICJkaXJlY3RvcmllcyI6IHsKKyAgICAi
ZG9jIjogImRvYyIsCisgICAgInRlc3QiOiAidGVzdHMiCisgIH0sCisgICJzY3JpcHRzIjogewor
ICAgICJidWlsZCI6ICJlbWJlciBidWlsZCIsCisgICAgInN0YXJ0IjogImVtYmVyIHNlcnZlciIs
CisgICAgInRlc3QiOiAiZW1iZXIgdGVzdCIKKyAgfSwKKyAgInJlcG9zaXRvcnkiOiAiIiwKKyAg
ImVuZ2luZXMiOiB7CisgICAgIm5vZGUiOiAiPj0gMC4xMC4wIgorICB9LAorICAiYXV0aG9yIjog
IiIsCisgICJsaWNlbnNlIjogIk1JVCIsCisgICJkZXZEZXBlbmRlbmNpZXMiOiB7CisgICAgImJy
b2Njb2xpLWFzc2V0LXJldiI6ICJeMi40LjIiLAorICAgICJlbWJlci1hamF4IjogIjAuNy4xIiwK
KyAgICAiZW1iZXItY2xpIjogIjIuNS4wIiwKKyAgICAiZW1iZXItY2xpLWFwcC12ZXJzaW9uIjog
Il4xLjAuMCIsCisgICAgImVtYmVyLWNsaS1iYWJlbCI6ICJeNS4xLjYiLAorICAgICJlbWJlci1j
bGktZGVwZW5kZW5jeS1jaGVja2VyIjogIl4xLjIuMCIsCisgICAgImVtYmVyLWNsaS1odG1sYmFy
cyI6ICJeMS4wLjMiLAorICAgICJlbWJlci1jbGktaHRtbGJhcnMtaW5saW5lLXByZWNvbXBpbGUi
OiAiXjAuMy4xIiwKKyAgICAiZW1iZXItY2xpLWluamVjdC1saXZlLXJlbG9hZCI6ICJeMS40LjAi
LAorICAgICJlbWJlci1jbGktanNoaW50IjogIl4xLjAuMCIsCisgICAgImVtYmVyLWNsaS1xdW5p
dCI6ICJeMS40LjAiLAorICAgICJlbWJlci1jbGktcmVsZWFzZSI6ICIwLjIuOCIsCisgICAgImVt
YmVyLWNsaS1zcmkiOiAiXjIuMS4wIiwKKyAgICAiZW1iZXItY2xpLXVnbGlmeSI6ICJeMS4yLjAi
LAorICAgICJlbWJlci1leHBvcnQtYXBwbGljYXRpb24tZ2xvYmFsIjogIl4xLjAuNSIsCisgICAg
ImVtYmVyLWluZmxlY3RvciI6ICIxLjkuNCIsCisgICAgImVtYmVyLWxvYWQtaW5pdGlhbGl6ZXJz
IjogIl4wLjUuMSIsCisgICAgImVtYmVyLXJlc29sdmVyIjogIl4yLjAuMyIsCisgICAgImxvYWRl
ci5qcyI6ICJeNC4wLjEiCisgIH0KK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMv
c291cmNlL3RvZG9tdmMvcHVibGljL2Nyb3NzZG9tYWluLnhtbCBiL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVy
anMvc291cmNlL3RvZG9tdmMvcHVibGljL2Nyb3NzZG9tYWluLnhtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYzE2
YTdhMDdiMzdlNWQ1ZjdlMGU1NmM4MjlmNzIwMDY3NDU4NDAzCi0tLSAvZGV2L251bGwKKysrIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvdG9kb212Yy9wdWJsaWMvY3Jvc3Nkb21haW4ueG1s
CkBAIC0wLDAgKzEsMTUgQEAKKzw/eG1sIHZlcnNpb249IjEuMCI/PgorPCFET0NUWVBFIGNyb3Nz
LWRvbWFpbi1wb2xpY3kgU1lTVEVNICJodHRwOi8vd3d3LmFkb2JlLmNvbS94bWwvZHRkcy9jcm9z
cy1kb21haW4tcG9saWN5LmR0ZCI+Cis8Y3Jvc3MtZG9tYWluLXBvbGljeT4KKyAgPCEtLSBSZWFk
IHRoaXM6IHd3dy5hZG9iZS5jb20vZGV2bmV0L2FydGljbGVzL2Nyb3NzZG9tYWluX3BvbGljeV9m
aWxlX3NwZWMuaHRtbCAtLT4KKworICA8IS0tIE1vc3QgcmVzdHJpY3RpdmUgcG9saWN5OiAtLT4K
KyAgPHNpdGUtY29udHJvbCBwZXJtaXR0ZWQtY3Jvc3MtZG9tYWluLXBvbGljaWVzPSJub25lIi8+
CisKKyAgPCEtLSBMZWFzdCByZXN0cmljdGl2ZSBwb2xpY3k6IC0tPgorICA8IS0tCisgIDxzaXRl
LWNvbnRyb2wgcGVybWl0dGVkLWNyb3NzLWRvbWFpbi1wb2xpY2llcz0iYWxsIi8+CisgIDxhbGxv
dy1hY2Nlc3MtZnJvbSBkb21haW49IioiIHRvLXBvcnRzPSIqIiBzZWN1cmU9ImZhbHNlIi8+Cisg
IDxhbGxvdy1odHRwLXJlcXVlc3QtaGVhZGVycy1mcm9tIGRvbWFpbj0iKiIgaGVhZGVycz0iKiIg
c2VjdXJlPSJmYWxzZSIvPgorICAtLT4KKzwvY3Jvc3MtZG9tYWluLXBvbGljeT4KZGlmZiAtLWdp
dCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNlL3RvZG9tdmMvcHVibGljL3JvYm90cy50eHQg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS90b2RvbXZjL3B1YmxpYy9yb2JvdHMudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmY1OTE2NDUyZTVmZjZjOGI0M2Q2ZDdjNzNkMDAxNTNkMzRhYzM1ZGUKLS0tIC9k
ZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS90b2RvbXZjL3B1YmxpYy9y
b2JvdHMudHh0CkBAIC0wLDAgKzEsMyBAQAorIyBodHRwOi8vd3d3LnJvYm90c3R4dC5vcmcKK1Vz
ZXItYWdlbnQ6ICoKK0Rpc2FsbG93OgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9z
b3VyY2UvdG9kb212Yy90ZXN0ZW0uanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS90b2Rv
bXZjL3Rlc3RlbS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZTE0MmVlMTA0ZmU2YzYxYTZkMmFiOWE3NTU0MDUz
NzRkMDgyMmI1Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2Uv
dG9kb212Yy90ZXN0ZW0uanMKQEAgLTAsMCArMSwxMyBAQAorLypqc2hpbnQgbm9kZTp0cnVlKi8K
K21vZHVsZS5leHBvcnRzID0geworICAgIGZyYW1ld29yazogJ3F1bml0JywKKyAgICB0ZXN0X3Bh
Z2U6ICd0ZXN0cy9pbmRleC5odG1sP2hpZGVwYXNzZWQnLAorICAgIGRpc2FibGVfd2F0Y2hpbmc6
IHRydWUsCisgICAgbGF1bmNoX2luX2NpOiBbCisgICAgICAgICdQaGFudG9tSlMnCisgICAgXSwK
KyAgICBsYXVuY2hfaW5fZGV2OiBbCisgICAgICAgICdQaGFudG9tSlMnLAorICAgICAgICAnQ2hy
b21lJworICAgIF0KK307CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS90
b2RvbXZjL3Rlc3RzLy5qc2hpbnRyYyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNlL3RvZG9t
dmMvdGVzdHMvLmpzaGludHJjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlYzBiN2MxNTRiMDkzMzcyOTFjNWQ3MzZl
OTlkNTkyOGQ1NjA1NDkKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3Nv
dXJjZS90b2RvbXZjL3Rlc3RzLy5qc2hpbnRyYwpAQCAtMCwwICsxLDUyIEBACit7CisgICJwcmVk
ZWYiOiBbCisgICAgImRvY3VtZW50IiwKKyAgICAid2luZG93IiwKKyAgICAibG9jYXRpb24iLAor
ICAgICJzZXRUaW1lb3V0IiwKKyAgICAiJCIsCisgICAgIi1Qcm9taXNlIiwKKyAgICAiZGVmaW5l
IiwKKyAgICAiY29uc29sZSIsCisgICAgInZpc2l0IiwKKyAgICAiZXhpc3RzIiwKKyAgICAiZmls
bEluIiwKKyAgICAiY2xpY2siLAorICAgICJrZXlFdmVudCIsCisgICAgInRyaWdnZXJFdmVudCIs
CisgICAgImZpbmQiLAorICAgICJmaW5kV2l0aEFzc2VydCIsCisgICAgIndhaXQiLAorICAgICJE
UyIsCisgICAgImFuZFRoZW4iLAorICAgICJjdXJyZW50VVJMIiwKKyAgICAiY3VycmVudFBhdGgi
LAorICAgICJjdXJyZW50Um91dGVOYW1lIgorICBdLAorICAibm9kZSI6IGZhbHNlLAorICAiYnJv
d3NlciI6IGZhbHNlLAorICAiYm9zcyI6IHRydWUsCisgICJjdXJseSI6IHRydWUsCisgICJkZWJ1
ZyI6IGZhbHNlLAorICAiZGV2ZWwiOiBmYWxzZSwKKyAgImVxZXFlcSI6IHRydWUsCisgICJldmls
IjogdHJ1ZSwKKyAgImZvcmluIjogZmFsc2UsCisgICJpbW1lZCI6IGZhbHNlLAorICAibGF4YnJl
YWsiOiBmYWxzZSwKKyAgIm5ld2NhcCI6IHRydWUsCisgICJub2FyZyI6IHRydWUsCisgICJub2Vt
cHR5IjogZmFsc2UsCisgICJub25ldyI6IGZhbHNlLAorICAibm9tZW4iOiBmYWxzZSwKKyAgIm9u
ZXZhciI6IGZhbHNlLAorICAicGx1c3BsdXMiOiBmYWxzZSwKKyAgInJlZ2V4cCI6IGZhbHNlLAor
ICAidW5kZWYiOiB0cnVlLAorICAic3ViIjogdHJ1ZSwKKyAgInN0cmljdCI6IGZhbHNlLAorICAi
d2hpdGUiOiBmYWxzZSwKKyAgImVxbnVsbCI6IHRydWUsCisgICJlc25leHQiOiB0cnVlLAorICAi
dW51c2VkIjogdHJ1ZQorfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2Uv
dG9kb212Yy90ZXN0cy9oZWxwZXJzL2Rlc3Ryb3ktYXBwLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJq
cy9zb3VyY2UvdG9kb212Yy90ZXN0cy9oZWxwZXJzL2Rlc3Ryb3ktYXBwLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjEzZDQ5ODk1MDEyZDk2YTI5Y2E1YWM3YzYxZGFkYWZhYTliM2NhNDUKLS0tIC9kZXYvbnVsbAor
KysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS90b2RvbXZjL3Rlc3RzL2hlbHBlcnMvZGVz
dHJveS1hcHAuanMKQEAgLTAsMCArMSw1IEBACitpbXBvcnQgRW1iZXIgZnJvbSAnZW1iZXInOwor
CitleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkZXN0cm95QXBwKGFwcGxpY2F0aW9uKSB7CisgICAg
RW1iZXIucnVuKGFwcGxpY2F0aW9uLCAnZGVzdHJveScpOworfQpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvZW1iZXJqcy9zb3VyY2UvdG9kb212Yy90ZXN0cy9oZWxwZXJzL21vZHVsZS1mb3ItYWNj
ZXB0YW5jZS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNlL3RvZG9tdmMvdGVzdHMvaGVs
cGVycy9tb2R1bGUtZm9yLWFjY2VwdGFuY2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGJkODBmYzA0MmM2ODJj
YWEyMGVmMGQwZTY4NDVlNDc0NWUxYWIwZQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2VtYmVyanMvc291cmNlL3RvZG9tdmMvdGVzdHMvaGVscGVycy9tb2R1bGUtZm9yLWFjY2VwdGFu
Y2UuanMKQEAgLTAsMCArMSwyMiBAQAoraW1wb3J0IHsgbW9kdWxlIH0gZnJvbSAncXVuaXQnOwor
aW1wb3J0IHN0YXJ0QXBwIGZyb20gJy4uL2hlbHBlcnMvc3RhcnQtYXBwJzsKK2ltcG9ydCBkZXN0
cm95QXBwIGZyb20gJy4uL2hlbHBlcnMvZGVzdHJveS1hcHAnOworCitleHBvcnQgZGVmYXVsdCBm
dW5jdGlvbiAobmFtZSwgb3B0aW9ucyA9IHt9KSB7CisgICAgbW9kdWxlKG5hbWUsIHsKKyAgICAg
ICAgYmVmb3JlRWFjaCgpIHsKKyAgICAgICAgICAgIHRoaXMuYXBwbGljYXRpb24gPSBzdGFydEFw
cCgpOworCisgICAgICAgICAgICBpZiAob3B0aW9ucy5iZWZvcmVFYWNoKSB7CisgICAgICAgICAg
ICAgICAgb3B0aW9ucy5iZWZvcmVFYWNoLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0sCisKKyAgICAgICAgYWZ0ZXJFYWNoKCkgeworICAgICAgICAgICAg
aWYgKG9wdGlvbnMuYWZ0ZXJFYWNoKSB7CisgICAgICAgICAgICAgICAgb3B0aW9ucy5hZnRlckVh
Y2guYXBwbHkodGhpcywgYXJndW1lbnRzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRl
c3Ryb3lBcHAodGhpcy5hcHBsaWNhdGlvbik7CisgICAgICAgIH0KKyAgICB9KTsKK30KZGlmZiAt
LWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNlL3RvZG9tdmMvdGVzdHMvaGVscGVycy9y
ZXNvbHZlci5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNlL3RvZG9tdmMvdGVzdHMvaGVs
cGVycy9yZXNvbHZlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MGU5MTc5ZjU0NjM1MDI1Zjk1MDRhMzQ5ZTQy
MzAyYTgwMDVmYzMyCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3Vy
Y2UvdG9kb212Yy90ZXN0cy9oZWxwZXJzL3Jlc29sdmVyLmpzCkBAIC0wLDAgKzEsMTEgQEAKK2lt
cG9ydCBSZXNvbHZlciBmcm9tICcuLi8uLi9yZXNvbHZlcic7CitpbXBvcnQgY29uZmlnIGZyb20g
Jy4uLy4uL2NvbmZpZy9lbnZpcm9ubWVudCc7CisKK2NvbnN0IHJlc29sdmVyID0gUmVzb2x2ZXIu
Y3JlYXRlKCk7CisKK3Jlc29sdmVyLm5hbWVzcGFjZSA9IHsKKyAgICBtb2R1bGVQcmVmaXg6IGNv
bmZpZy5tb2R1bGVQcmVmaXgsCisgICAgcG9kTW9kdWxlUHJlZml4OiBjb25maWcucG9kTW9kdWxl
UHJlZml4Cit9OworCitleHBvcnQgZGVmYXVsdCByZXNvbHZlcjsKZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2VtYmVyanMvc291cmNlL3RvZG9tdmMvdGVzdHMvaGVscGVycy9zdGFydC1hcHAuanMg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS90b2RvbXZjL3Rlc3RzL2hlbHBlcnMvc3RhcnQt
YXBwLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmVmMWI2YjU1ZWU4ZTc5Njk3ODM3MWQyN2IwYTMzZmNmNzQxOTY5
ZGUKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS90b2RvbXZj
L3Rlc3RzL2hlbHBlcnMvc3RhcnQtYXBwLmpzCkBAIC0wLDAgKzEsMTggQEAKK2ltcG9ydCBFbWJl
ciBmcm9tICdlbWJlcic7CitpbXBvcnQgQXBwbGljYXRpb24gZnJvbSAnLi4vLi4vYXBwJzsKK2lt
cG9ydCBjb25maWcgZnJvbSAnLi4vLi4vY29uZmlnL2Vudmlyb25tZW50JzsKKworZXhwb3J0IGRl
ZmF1bHQgZnVuY3Rpb24gc3RhcnRBcHAoYXR0cnMpIHsKKyAgICBsZXQgYXBwbGljYXRpb247CisK
KyAgICBsZXQgYXR0cmlidXRlcyA9IEVtYmVyLm1lcmdlKHt9LCBjb25maWcuQVBQKTsKKyAgICBh
dHRyaWJ1dGVzID0gRW1iZXIubWVyZ2UoYXR0cmlidXRlcywgYXR0cnMpOyAvLyB1c2UgZGVmYXVs
dHMsIGJ1dCB5b3UgY2FuIG92ZXJyaWRlOworCisgICAgRW1iZXIucnVuKCgpID0+IHsKKyAgICAg
ICAgYXBwbGljYXRpb24gPSBBcHBsaWNhdGlvbi5jcmVhdGUoYXR0cmlidXRlcyk7CisgICAgICAg
IGFwcGxpY2F0aW9uLnNldHVwRm9yVGVzdGluZygpOworICAgICAgICBhcHBsaWNhdGlvbi5pbmpl
Y3RUZXN0SGVscGVycygpOworICAgIH0pOworCisgICAgcmV0dXJuIGFwcGxpY2F0aW9uOworfQpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvdG9kb212Yy90ZXN0cy9pbmRl
eC5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvdG9kb212Yy90ZXN0cy9pbmRleC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjdmNDQyMDgzMzI5YTdiMDFjNTBhYzg4MTU5NTRkNzZjNDlhOGY1ZTUK
LS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS90b2RvbXZjL3Rl
c3RzL2luZGV4Lmh0bWwKQEAgLTAsMCArMSwzNCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KyAgPGhlYWQ+CisgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgorICAgIDxtZXRhIGh0dHAtZXF1
aXY9IlgtVUEtQ29tcGF0aWJsZSIgY29udGVudD0iSUU9ZWRnZSI+CisgICAgPHRpdGxlPlRvZG9t
dmMgVGVzdHM8L3RpdGxlPgorICAgIDxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSIi
PgorICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgs
IGluaXRpYWwtc2NhbGU9MSI+CisKKyAgICB7e2NvbnRlbnQtZm9yICJoZWFkIn19CisgICAge3tj
b250ZW50LWZvciAidGVzdC1oZWFkIn19CisKKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9ImFzc2V0cy92ZW5kb3IuY3NzIj4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
ImFzc2V0cy90b2RvbXZjLmNzcyI+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJh
c3NldHMvdGVzdC1zdXBwb3J0LmNzcyI+CisKKyAgICB7e2NvbnRlbnQtZm9yICJoZWFkLWZvb3Rl
ciJ9fQorICAgIHt7Y29udGVudC1mb3IgInRlc3QtaGVhZC1mb290ZXIifX0KKyAgPC9oZWFkPgor
ICA8Ym9keT4KKyAgICB7e2NvbnRlbnQtZm9yICJib2R5In19CisgICAge3tjb250ZW50LWZvciAi
dGVzdC1ib2R5In19CisKKyAgICA8c2NyaXB0IHNyYz0idGVzdGVtLmpzIiBpbnRlZ3JpdHk9IiI+
PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9ImFzc2V0cy92ZW5kb3IuanMiPjwvc2NyaXB0Pgor
ICAgIDxzY3JpcHQgc3JjPSJhc3NldHMvdGVzdC1zdXBwb3J0LmpzIj48L3NjcmlwdD4KKyAgICA8
c2NyaXB0IHNyYz0iYXNzZXRzL3RvZG9tdmMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3Jj
PSJhc3NldHMvdGVzdHMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJhc3NldHMvdGVz
dC1sb2FkZXIuanMiPjwvc2NyaXB0PgorCisgICAge3tjb250ZW50LWZvciAiYm9keS1mb290ZXIi
fX0KKyAgICB7e2NvbnRlbnQtZm9yICJ0ZXN0LWJvZHktZm9vdGVyIn19CisgIDwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNlL3RvZG9tdmMvdGVz
dHMvaW50ZWdyYXRpb24vLmdpdGtlZXAgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS90b2Rv
bXZjL3Rlc3RzL2ludGVncmF0aW9uLy5naXRrZWVwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2OWRlMjliYjJkMWQ2
NDM0YjhiMjlhZTc3NWFkOGMyZTQ4YzUzOTEKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVy
anMvc291cmNlL3RvZG9tdmMvdGVzdHMvdGVzdC1oZWxwZXIuanMgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJl
cmpzL3NvdXJjZS90b2RvbXZjL3Rlc3RzL3Rlc3QtaGVscGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRjOTk2
MWZkNTZhMTJiN2VlMmIyZDhjMTc1MjBlZmRhM2Q2YTBkNzkKLS0tIC9kZXYvbnVsbAorKysgYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS90b2RvbXZjL3Rlc3RzL3Rlc3QtaGVscGVyLmpzCkBA
IC0wLDAgKzEsNiBAQAoraW1wb3J0IHJlc29sdmVyIGZyb20gJy4vaGVscGVycy9yZXNvbHZlcic7
CitpbXBvcnQgeworICAgIHNldFJlc29sdmVyCit9IGZyb20gJ2VtYmVyLXF1bml0JzsKKworc2V0
UmVzb2x2ZXIocmVzb2x2ZXIpOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3Vy
Y2UvdG9kb212Yy90ZXN0cy91bml0Ly5naXRrZWVwIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3Vy
Y2UvdG9kb212Yy90ZXN0cy91bml0Ly5naXRrZWVwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2OWRlMjliYjJkMWQ2
NDM0YjhiMjlhZTc3NWFkOGMyZTQ4YzUzOTEKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVy
anMvc291cmNlL3RvZG9tdmMvdmVuZG9yLy5naXRrZWVwIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9z
b3VyY2UvdG9kb212Yy92ZW5kb3IvLmdpdGtlZXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTY5ZGUyOWJiMmQxZDY0
MzRiOGIyOWFlNzc1YWQ4YzJlNDhjNTM5MQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJq
cy9zb3VyY2UvdG9kb212Yy92ZW5kb3IvYmFzZS5jc3MgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3Nv
dXJjZS90b2RvbXZjL3ZlbmRvci9iYXNlLmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDI1ZDNjODRhYzZjNmFl
ZjI2Yjk2ODNhMmJjMTBjNjFmOTYwYzhmCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
ZW1iZXJqcy9zb3VyY2UvdG9kb212Yy92ZW5kb3IvYmFzZS5jc3MKQEAgLTAsMCArMSwxNDEgQEAK
K2hyIHsKKyAgICBtYXJnaW46IDIwcHggMDsKKyAgICBib3JkZXI6IDA7CisgICAgYm9yZGVyLXRv
cDogMXB4IGRhc2hlZCAjYzVjNWM1OworICAgIGJvcmRlci1ib3R0b206IDFweCBkYXNoZWQgI2Y3
ZjdmNzsKK30KKworLmxlYXJuIGEgeworICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CisgICAgdGV4
dC1kZWNvcmF0aW9uOiBub25lOworICAgIGNvbG9yOiAjYjgzZjQ1OworfQorCisubGVhcm4gYTpo
b3ZlciB7CisgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CisgICAgY29sb3I6ICM3ODdl
N2U7Cit9CisKKy5sZWFybiBoMywKKy5sZWFybiBoNCwKKy5sZWFybiBoNSB7CisgICAgbWFyZ2lu
OiAxMHB4IDA7CisgICAgZm9udC13ZWlnaHQ6IDUwMDsKKyAgICBsaW5lLWhlaWdodDogMS4yOwor
ICAgIGNvbG9yOiAjMDAwOworfQorCisubGVhcm4gaDMgeworICAgIGZvbnQtc2l6ZTogMjRweDsK
K30KKworLmxlYXJuIGg0IHsKKyAgICBmb250LXNpemU6IDE4cHg7Cit9CisKKy5sZWFybiBoNSB7
CisgICAgbWFyZ2luLWJvdHRvbTogMDsKKyAgICBmb250LXNpemU6IDE0cHg7Cit9CisKKy5sZWFy
biB1bCB7CisgICAgcGFkZGluZzogMDsKKyAgICBtYXJnaW46IDAgMCAzMHB4IDI1cHg7Cit9CisK
Ky5sZWFybiBsaSB7CisgICAgbGluZS1oZWlnaHQ6IDIwcHg7Cit9CisKKy5sZWFybiBwIHsKKyAg
ICBmb250LXNpemU6IDE1cHg7CisgICAgZm9udC13ZWlnaHQ6IDMwMDsKKyAgICBsaW5lLWhlaWdo
dDogMS4zOworICAgIG1hcmdpbi10b3A6IDA7CisgICAgbWFyZ2luLWJvdHRvbTogMDsKK30KKwor
I2lzc3VlLWNvdW50IHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCisucXVvdGUgeworICAgIGJv
cmRlcjogbm9uZTsKKyAgICBtYXJnaW46IDIwcHggMCA2MHB4IDA7Cit9CisKKy5xdW90ZSBwIHsK
KyAgICBmb250LXN0eWxlOiBpdGFsaWM7Cit9CisKKy5xdW90ZSBwOmJlZm9yZSB7CisgICAgY29u
dGVudDogJ+KAnCc7CisgICAgZm9udC1zaXplOiA1MHB4OworICAgIG9wYWNpdHk6IC4xNTsKKyAg
ICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiAtMjBweDsKKyAgICBsZWZ0OiAzcHg7Cit9
CisKKy5xdW90ZSBwOmFmdGVyIHsKKyAgICBjb250ZW50OiAn4oCdJzsKKyAgICBmb250LXNpemU6
IDUwcHg7CisgICAgb3BhY2l0eTogLjE1OworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBi
b3R0b206IC00MnB4OworICAgIHJpZ2h0OiAzcHg7Cit9CisKKy5xdW90ZSBmb290ZXIgeworICAg
IHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBib3R0b206IC00MHB4OworICAgIHJpZ2h0OiAwOwor
fQorCisucXVvdGUgZm9vdGVyIGltZyB7CisgICAgYm9yZGVyLXJhZGl1czogM3B4OworfQorCisu
cXVvdGUgZm9vdGVyIGEgeworICAgIG1hcmdpbi1sZWZ0OiA1cHg7CisgICAgdmVydGljYWwtYWxp
Z246IG1pZGRsZTsKK30KKworLnNwZWVjaC1idWJibGUgeworICAgIHBvc2l0aW9uOiByZWxhdGl2
ZTsKKyAgICBwYWRkaW5nOiAxMHB4OworICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgLjA0
KTsKKyAgICBib3JkZXItcmFkaXVzOiA1cHg7Cit9CisKKy5zcGVlY2gtYnViYmxlOmFmdGVyIHsK
KyAgICBjb250ZW50OiAnJzsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiAxMDAl
OworICAgIHJpZ2h0OiAzMHB4OworICAgIGJvcmRlcjogMTNweCBzb2xpZCB0cmFuc3BhcmVudDsK
KyAgICBib3JkZXItdG9wLWNvbG9yOiByZ2JhKDAsIDAsIDAsIC4wNCk7Cit9CisKKy5sZWFybi1i
YXIgPiAubGVhcm4geworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB3aWR0aDogMjcycHg7
CisgICAgdG9wOiA4cHg7CisgICAgbGVmdDogLTMwMHB4OworICAgIHBhZGRpbmc6IDEwcHg7Cisg
ICAgYm9yZGVyLXJhZGl1czogNXB4OworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAy
NTUsIDI1NSwgLjYpOworICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IGxlZnQ7CisgICAgdHJhbnNp
dGlvbi1kdXJhdGlvbjogNTAwbXM7Cit9CisKK0BtZWRpYSAobWluLXdpZHRoOiA4OTlweCkgewor
ICAgIC5sZWFybi1iYXIgeworICAgICAgICB3aWR0aDogYXV0bzsKKyAgICAgICAgcGFkZGluZy1s
ZWZ0OiAzMDBweDsKKyAgICB9CisKKyAgICAubGVhcm4tYmFyID4gLmxlYXJuIHsKKyAgICAgICAg
bGVmdDogOHB4OworICAgIH0KK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvc291
cmNlL3RvZG9tdmMvdmVuZG9yL2luZGV4LmNzcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNl
L3RvZG9tdmMvdmVuZG9yL2luZGV4LmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xN2VhMTgwMTYxMjEyNmYxZGI2
NWNlMDU2OGYyYTAyMzczYjkzYjU1Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1i
ZXJqcy9zb3VyY2UvdG9kb212Yy92ZW5kb3IvaW5kZXguY3NzCkBAIC0wLDAgKzEsMzc4IEBACito
dG1sLAorYm9keSB7CisgICAgbWFyZ2luOiAwOworICAgIHBhZGRpbmc6IDA7Cit9CisKK2J1dHRv
biB7CisgICAgbWFyZ2luOiAwOworICAgIHBhZGRpbmc6IDA7CisgICAgYm9yZGVyOiAwOworICAg
IGJhY2tncm91bmQ6IG5vbmU7CisgICAgZm9udC1zaXplOiAxMDAlOworICAgIHZlcnRpY2FsLWFs
aWduOiBiYXNlbGluZTsKKyAgICBmb250LWZhbWlseTogaW5oZXJpdDsKKyAgICBmb250LXdlaWdo
dDogaW5oZXJpdDsKKyAgICBjb2xvcjogaW5oZXJpdDsKKyAgICAtd2Via2l0LWFwcGVhcmFuY2U6
IG5vbmU7CisgICAgYXBwZWFyYW5jZTogbm9uZTsKKyAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5n
OiBhbnRpYWxpYXNlZDsKKyAgICAtbW96LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKKyAg
ICBmb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7Cit9CisKK2JvZHkgeworICAgIGZvbnQ6IDE0
cHggJ0hlbHZldGljYSBOZXVlJywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsKKyAgICBs
aW5lLWhlaWdodDogMS40ZW07CisgICAgYmFja2dyb3VuZDogI2Y1ZjVmNTsKKyAgICBjb2xvcjog
IzRkNGQ0ZDsKKyAgICBtaW4td2lkdGg6IDIzMHB4OworICAgIG1heC13aWR0aDogNTUwcHg7Cisg
ICAgbWFyZ2luOiAwIGF1dG87CisgICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFz
ZWQ7CisgICAgLW1vei1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CisgICAgZm9udC1zbW9v
dGhpbmc6IGFudGlhbGlhc2VkOworICAgIGZvbnQtd2VpZ2h0OiAzMDA7Cit9CisKK2J1dHRvbiwK
K2lucHV0W3R5cGU9ImNoZWNrYm94Il0geworICAgIG91dGxpbmU6IG5vbmU7Cit9CisKKy5oaWRk
ZW4geworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKKyN0b2RvYXBwIHsKKyAgICBiYWNrZ3JvdW5k
OiAjZmZmOworICAgIG1hcmdpbjogMTMwcHggMCA0MHB4IDA7CisgICAgcG9zaXRpb246IHJlbGF0
aXZlOworICAgIGJveC1zaGFkb3c6IDAgMnB4IDRweCAwIHJnYmEoMCwgMCwgMCwgMC4yKSwKKyAg
ICAgICAgICAgICAgICAwIDI1cHggNTBweCAwIHJnYmEoMCwgMCwgMCwgMC4xKTsKK30KKworI3Rv
ZG9hcHAgaW5wdXQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIgeworICAgIGZvbnQtc3R5bGU6
IGl0YWxpYzsKKyAgICBmb250LXdlaWdodDogMzAwOworICAgIGNvbG9yOiAjZTZlNmU2OworfQor
CisjdG9kb2FwcCBpbnB1dDo6LW1vei1wbGFjZWhvbGRlciB7CisgICAgZm9udC1zdHlsZTogaXRh
bGljOworICAgIGZvbnQtd2VpZ2h0OiAzMDA7CisgICAgY29sb3I6ICNlNmU2ZTY7Cit9CisKKyN0
b2RvYXBwIGlucHV0OjppbnB1dC1wbGFjZWhvbGRlciB7CisgICAgZm9udC1zdHlsZTogaXRhbGlj
OworICAgIGZvbnQtd2VpZ2h0OiAzMDA7CisgICAgY29sb3I6ICNlNmU2ZTY7Cit9CisKKyN0b2Rv
YXBwIGgxIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiAtMTU1cHg7CisgICAg
d2lkdGg6IDEwMCU7CisgICAgZm9udC1zaXplOiAxMDBweDsKKyAgICBmb250LXdlaWdodDogMTAw
OworICAgIHRleHQtYWxpZ246IGNlbnRlcjsKKyAgICBjb2xvcjogcmdiYSgxNzUsIDQ3LCA0Nywg
MC4xNSk7CisgICAgLXdlYmtpdC10ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5Owor
ICAgIC1tb3otdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTsKKyAgICB0ZXh0LXJl
bmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5OworfQorCisjbmV3LXRvZG8sCisuZWRpdCB7Cisg
ICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgIG1hcmdpbjogMDsKKyAgICB3aWR0aDogMTAwJTsK
KyAgICBmb250LXNpemU6IDI0cHg7CisgICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7CisgICAgZm9u
dC13ZWlnaHQ6IGluaGVyaXQ7CisgICAgbGluZS1oZWlnaHQ6IDEuNGVtOworICAgIGJvcmRlcjog
MDsKKyAgICBvdXRsaW5lOiBub25lOworICAgIGNvbG9yOiBpbmhlcml0OworICAgIHBhZGRpbmc6
IDZweDsKKyAgICBib3JkZXI6IDFweCBzb2xpZCAjOTk5OworICAgIGJveC1zaGFkb3c6IGluc2V0
IDAgLTFweCA1cHggMCByZ2JhKDAsIDAsIDAsIDAuMik7CisgICAgYm94LXNpemluZzogYm9yZGVy
LWJveDsKKyAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKKyAgICAtbW96
LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKKyAgICBmb250LXNtb290aGluZzogYW50aWFs
aWFzZWQ7Cit9CisKKyNuZXctdG9kbyB7CisgICAgcGFkZGluZzogMTZweCAxNnB4IDE2cHggNjBw
eDsKKyAgICBib3JkZXI6IG5vbmU7CisgICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjAw
Myk7CisgICAgYm94LXNoYWRvdzogaW5zZXQgMCAtMnB4IDFweCByZ2JhKDAsMCwwLDAuMDMpOwor
fQorCisjbWFpbiB7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgIHotaW5kZXg6IDI7Cisg
ICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlNmU2ZTY7Cit9CisKK2xhYmVsW2Zvcj0ndG9nZ2xl
LWFsbCddIHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCisjdG9nZ2xlLWFsbCB7CisgICAgcG9z
aXRpb246IGFic29sdXRlOworICAgIHRvcDogLTU1cHg7CisgICAgbGVmdDogLTEycHg7CisgICAg
d2lkdGg6IDYwcHg7CisgICAgaGVpZ2h0OiAzNHB4OworICAgIHRleHQtYWxpZ246IGNlbnRlcjsK
KyAgICBib3JkZXI6IG5vbmU7IC8qIE1vYmlsZSBTYWZhcmkgKi8KK30KKworI3RvZ2dsZS1hbGw6
YmVmb3JlIHsKKyAgICBjb250ZW50OiAn4p2vJzsKKyAgICBmb250LXNpemU6IDIycHg7CisgICAg
Y29sb3I6ICNlNmU2ZTY7CisgICAgcGFkZGluZzogMTBweCAyN3B4IDEwcHggMjdweDsKK30KKwor
I3RvZ2dsZS1hbGw6Y2hlY2tlZDpiZWZvcmUgeworICAgIGNvbG9yOiAjNzM3MzczOworfQorCisj
dG9kby1saXN0IHsKKyAgICBtYXJnaW46IDA7CisgICAgcGFkZGluZzogMDsKKyAgICBsaXN0LXN0
eWxlOiBub25lOworfQorCisjdG9kby1saXN0IGxpIHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7
CisgICAgZm9udC1zaXplOiAyNHB4OworICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWRl
ZGVkOworfQorCisjdG9kby1saXN0IGxpOmxhc3QtY2hpbGQgeworICAgIGJvcmRlci1ib3R0b206
IG5vbmU7Cit9CisKKyN0b2RvLWxpc3QgbGkuZWRpdGluZyB7CisgICAgYm9yZGVyLWJvdHRvbTog
bm9uZTsKKyAgICBwYWRkaW5nOiAwOworfQorCisjdG9kby1saXN0IGxpLmVkaXRpbmcgLmVkaXQg
eworICAgIGRpc3BsYXk6IGJsb2NrOworICAgIHdpZHRoOiA1MDZweDsKKyAgICBwYWRkaW5nOiAx
M3B4IDE3cHggMTJweCAxN3B4OworICAgIG1hcmdpbjogMCAwIDAgNDNweDsKK30KKworI3RvZG8t
bGlzdCBsaS5lZGl0aW5nIC52aWV3IHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCisjdG9kby1s
aXN0IGxpIC50b2dnbGUgeworICAgIHRleHQtYWxpZ246IGNlbnRlcjsKKyAgICB3aWR0aDogNDBw
eDsKKyAgICAvKiBhdXRvLCBzaW5jZSBub24tV2ViS2l0IGJyb3dzZXJzIGRvZXNuJ3Qgc3VwcG9y
dCBpbnB1dCBzdHlsaW5nICovCisgICAgaGVpZ2h0OiBhdXRvOworICAgIHBvc2l0aW9uOiBhYnNv
bHV0ZTsKKyAgICB0b3A6IDA7CisgICAgYm90dG9tOiAwOworICAgIG1hcmdpbjogYXV0byAwOwor
ICAgIGJvcmRlcjogbm9uZTsgLyogTW9iaWxlIFNhZmFyaSAqLworICAgIC13ZWJraXQtYXBwZWFy
YW5jZTogbm9uZTsKKyAgICBhcHBlYXJhbmNlOiBub25lOworfQorCisjdG9kby1saXN0IGxpIC50
b2dnbGU6YWZ0ZXIgeworICAgIGNvbnRlbnQ6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sO3V0Zjgs
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0MCIgaGVpZ2h0
PSI0MCIgdmlld0JveD0iLTEwIC0xOCAxMDAgMTM1Ij48Y2lyY2xlIGN4PSI1MCIgY3k9IjUwIiBy
PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZWRlZGVkIiBzdHJva2Utd2lkdGg9IjMiLz48L3N2
Zz4nKTsKK30KKworI3RvZG8tbGlzdCBsaSAudG9nZ2xlOmNoZWNrZWQ6YWZ0ZXIgeworICAgIGNv
bnRlbnQ6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgdmlld0JveD0iLTEwIC0x
OCAxMDAgMTM1Ij48Y2lyY2xlIGN4PSI1MCIgY3k9IjUwIiByPSI1MCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSIjYmRkYWQ1IiBzdHJva2Utd2lkdGg9IjMiLz48cGF0aCBmaWxsPSIjNWRjMmFmIiBkPSJN
NzIgMjVMNDIgNzEgMjcgNTZsLTQgNCAyMCAyMCAzNC01MnoiLz48L3N2Zz4nKTsKK30KKworI3Rv
ZG8tbGlzdCBsaSBsYWJlbCB7CisgICAgd2hpdGUtc3BhY2U6IHByZTsKKyAgICB3b3JkLWJyZWFr
OiBicmVhay13b3JkOworICAgIHBhZGRpbmc6IDE1cHggNjBweCAxNXB4IDE1cHg7CisgICAgbWFy
Z2luLWxlZnQ6IDQ1cHg7CisgICAgZGlzcGxheTogYmxvY2s7CisgICAgbGluZS1oZWlnaHQ6IDEu
MjsKKyAgICB0cmFuc2l0aW9uOiBjb2xvciAwLjRzOworfQorCisjdG9kby1saXN0IGxpLmNvbXBs
ZXRlZCBsYWJlbCB7CisgICAgY29sb3I6ICNkOWQ5ZDk7CisgICAgdGV4dC1kZWNvcmF0aW9uOiBs
aW5lLXRocm91Z2g7Cit9CisKKyN0b2RvLWxpc3QgbGkgLmRlc3Ryb3kgeworICAgIGRpc3BsYXk6
IG5vbmU7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDogMDsKKyAgICByaWdodDog
MTBweDsKKyAgICBib3R0b206IDA7CisgICAgd2lkdGg6IDQwcHg7CisgICAgaGVpZ2h0OiA0MHB4
OworICAgIG1hcmdpbjogYXV0byAwOworICAgIGZvbnQtc2l6ZTogMzBweDsKKyAgICBjb2xvcjog
I2NjOWE5YTsKKyAgICBtYXJnaW4tYm90dG9tOiAxMXB4OworICAgIHRyYW5zaXRpb246IGNvbG9y
IDAuMnMgZWFzZS1vdXQ7Cit9CisKKyN0b2RvLWxpc3QgbGkgLmRlc3Ryb3k6aG92ZXIgeworICAg
IGNvbG9yOiAjYWY1YjVlOworfQorCisjdG9kby1saXN0IGxpIC5kZXN0cm95OmFmdGVyIHsKKyAg
ICBjb250ZW50OiAnw5cnOworfQorCisjdG9kby1saXN0IGxpOmhvdmVyIC5kZXN0cm95IHsKKyAg
ICBkaXNwbGF5OiBibG9jazsKK30KKworI3RvZG8tbGlzdCBsaSAuZWRpdCB7CisgICAgZGlzcGxh
eTogbm9uZTsKK30KKworI3RvZG8tbGlzdCBsaS5lZGl0aW5nOmxhc3QtY2hpbGQgeworICAgIG1h
cmdpbi1ib3R0b206IC0xcHg7Cit9CisKKyNmb290ZXIgeworICAgIGNvbG9yOiAjNzc3OworICAg
IHBhZGRpbmc6IDEwcHggMTVweDsKKyAgICBoZWlnaHQ6IDIwcHg7CisgICAgdGV4dC1hbGlnbjog
Y2VudGVyOworICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZTZlNmU2OworfQorCisjZm9vdGVy
OmJlZm9yZSB7CisgICAgY29udGVudDogJyc7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAg
IHJpZ2h0OiAwOworICAgIGJvdHRvbTogMDsKKyAgICBsZWZ0OiAwOworICAgIGhlaWdodDogNTBw
eDsKKyAgICBvdmVyZmxvdzogaGlkZGVuOworICAgIGJveC1zaGFkb3c6IDAgMXB4IDFweCByZ2Jh
KDAsIDAsIDAsIDAuMiksCisgICAgICAgICAgICAgICAgMCA4cHggMCAtM3B4ICNmNmY2ZjYsCisg
ICAgICAgICAgICAgICAgMCA5cHggMXB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLAorICAgICAg
ICAgICAgICAgIDAgMTZweCAwIC02cHggI2Y2ZjZmNiwKKyAgICAgICAgICAgICAgICAwIDE3cHgg
MnB4IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpOworfQorCisjdG9kby1jb3VudCB7CisgICAgZmxv
YXQ6IGxlZnQ7CisgICAgdGV4dC1hbGlnbjogbGVmdDsKK30KKworI3RvZG8tY291bnQgc3Ryb25n
IHsKKyAgICBmb250LXdlaWdodDogMzAwOworfQorCisjZmlsdGVycyB7CisgICAgbWFyZ2luOiAw
OworICAgIHBhZGRpbmc6IDA7CisgICAgbGlzdC1zdHlsZTogbm9uZTsKKyAgICBwb3NpdGlvbjog
YWJzb2x1dGU7CisgICAgcmlnaHQ6IDA7CisgICAgbGVmdDogMDsKK30KKworI2ZpbHRlcnMgbGkg
eworICAgIGRpc3BsYXk6IGlubGluZTsKK30KKworI2ZpbHRlcnMgbGkgYSB7CisgICAgY29sb3I6
IGluaGVyaXQ7CisgICAgbWFyZ2luOiAzcHg7CisgICAgcGFkZGluZzogM3B4IDdweDsKKyAgICB0
ZXh0LWRlY29yYXRpb246IG5vbmU7CisgICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7
CisgICAgYm9yZGVyLXJhZGl1czogM3B4OworfQorCisjZmlsdGVycyBsaSBhLnNlbGVjdGVkLAor
I2ZpbHRlcnMgbGkgYTpob3ZlciB7CisgICAgYm9yZGVyLWNvbG9yOiByZ2JhKDE3NSwgNDcsIDQ3
LCAwLjEpOworfQorCisjZmlsdGVycyBsaSBhLnNlbGVjdGVkIHsKKyAgICBib3JkZXItY29sb3I6
IHJnYmEoMTc1LCA0NywgNDcsIDAuMik7Cit9CisKKyNjbGVhci1jb21wbGV0ZWQsCitodG1sICNj
bGVhci1jb21wbGV0ZWQ6YWN0aXZlIHsKKyAgICBmbG9hdDogcmlnaHQ7CisgICAgcG9zaXRpb246
IHJlbGF0aXZlOworICAgIGxpbmUtaGVpZ2h0OiAyMHB4OworICAgIHRleHQtZGVjb3JhdGlvbjog
bm9uZTsKKyAgICBjdXJzb3I6IHBvaW50ZXI7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworfQor
CisjY2xlYXItY29tcGxldGVkOmhvdmVyIHsKKyAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGlu
ZTsKK30KKworI2luZm8geworICAgIG1hcmdpbjogNjVweCBhdXRvIDA7CisgICAgY29sb3I6ICNi
ZmJmYmY7CisgICAgZm9udC1zaXplOiAxMHB4OworICAgIHRleHQtc2hhZG93OiAwIDFweCAwIHJn
YmEoMjU1LCAyNTUsIDI1NSwgMC41KTsKKyAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cit9CisKKyNp
bmZvIHAgeworICAgIGxpbmUtaGVpZ2h0OiAxOworfQorCisjaW5mbyBhIHsKKyAgICBjb2xvcjog
aW5oZXJpdDsKKyAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CisgICAgZm9udC13ZWlnaHQ6IDQw
MDsKK30KKworI2luZm8gYTpob3ZlciB7CisgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7
Cit9CisKKy8qCisgICAgSGFjayB0byByZW1vdmUgYmFja2dyb3VuZCBmcm9tIE1vYmlsZSBTYWZh
cmkuCisgICAgQ2FuJ3QgdXNlIGl0IGdsb2JhbGx5IHNpbmNlIGl0IGRlc3Ryb3lzIGNoZWNrYm94
ZXMgaW4gRmlyZWZveAorKi8KK0BtZWRpYSBzY3JlZW4gYW5kICgtd2Via2l0LW1pbi1kZXZpY2Ut
cGl4ZWwtcmF0aW86MCkgeworICAgICN0b2dnbGUtYWxsLAorICAgICN0b2RvLWxpc3QgbGkgLnRv
Z2dsZSB7CisgICAgICAgIGJhY2tncm91bmQ6IG5vbmU7CisgICAgfQorCisgICAgI3RvZG8tbGlz
dCBsaSAudG9nZ2xlIHsKKyAgICAgICAgaGVpZ2h0OiA0MHB4OworICAgIH0KKworICAgICN0b2dn
bGUtYWxsIHsKKyAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7CisgICAg
ICAgIHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsKKyAgICAgICAgLXdlYmtpdC1hcHBlYXJhbmNl
OiBub25lOworICAgICAgICBhcHBlYXJhbmNlOiBub25lOworICAgIH0KK30KKworQG1lZGlhICht
YXgtd2lkdGg6IDQzMHB4KSB7CisgICAgI2Zvb3RlciB7CisgICAgICAgIGhlaWdodDogNTBweDsK
KyAgICB9CisKKyAgICAjZmlsdGVycyB7CisgICAgICAgIGJvdHRvbTogMTBweDsKKyAgICB9Cit9
CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9pbmZlcm5vL2Rpc3QvYnVuZGxlLmpzIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvaW5mZXJuby9kaXN0L2J1bmRsZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZWFmNTY4ZTZkMzNkZTk3
YjU2MDUxNWIwZDk5N2ZjMzYwNDAyMTdhCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
aW5mZXJuby9kaXN0L2J1bmRsZS5qcwpAQCAtMCwwICsxLDExIEBACishZnVuY3Rpb24oZSl7ZnVu
Y3Rpb24gdChvKXtpZihuW29dKXJldHVybiBuW29dLmV4cG9ydHM7dmFyIHI9bltvXT17ZXhwb3J0
czp7fSxpZDpvLGxvYWRlZDohMX07cmV0dXJuIGVbb10uY2FsbChyLmV4cG9ydHMscixyLmV4cG9y
dHMsdCksci5sb2FkZWQ9ITAsci5leHBvcnRzfXZhciBuPXt9O3JldHVybiB0Lm09ZSx0LmM9bix0
LnA9ImRpc3QiLHQoMCl9KFtmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG8o
ZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0aW9uIHIoZSx0KXtp
ZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNs
YXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBpKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVy
ZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3Qg
YmVlbiBjYWxsZWQiKTtyZXR1cm4hdHx8Im9iamVjdCIhPXR5cGVvZiB0JiYiZnVuY3Rpb24iIT10
eXBlb2YgdD9lOnR9ZnVuY3Rpb24gbChlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxs
IT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJl
IG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIrdHlwZW9mIHQpO2UucHJvdG90eXBlPU9iamVjdC5j
cmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEs
d3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/
T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9dmFyIHU9bigyKSxhPW8o
dSksYz1uKDMpLGQ9byhjKSxmPW4oMSkscz1uKDUpLHA9big3KSx2PW8ocCksaD1uKDYpLG09byho
KSxnPWEuZGVmYXVsdC5yZW5kZXIseT1uZXcgdi5kZWZhdWx0LF89ZnVuY3Rpb24oZSl7ZnVuY3Rp
b24gdCgpe3ZhciBuLG8sbDtyKHRoaXMsdCk7Zm9yKHZhciB1PWFyZ3VtZW50cy5sZW5ndGgsYT1B
cnJheSh1KSxjPTA7Yzx1O2MrKylhW2NdPWFyZ3VtZW50c1tjXTtyZXR1cm4gbj1vPWkodGhpcyxl
LmNhbGwuYXBwbHkoZSxbdGhpc10uY29uY2F0KGEpKSksby5zdGF0ZT17cm91dGU6KDAsZi5yZWFk
KSgpLHRvZG9zOnkuZ2V0KCl9LG8udXBkYXRlPWZ1bmN0aW9uKGUpe3JldHVybiBvLnNldFN0YXRl
KHt0b2RvczplfSl9LG8uY29tcG9uZW50V2lsbE1vdW50PWZ1bmN0aW9uKCl7d2luZG93Lm9uaGFz
aGNoYW5nZT1mdW5jdGlvbigpe3JldHVybiBvLnNldFN0YXRlKHtyb3V0ZTooMCxmLnJlYWQpKCl9
KX19LG8uYWRkPWZ1bmN0aW9uKGUpe2lmKGUud2hpY2g9PT1mLkVOVEVSKXt2YXIgdD1lLnRhcmdl
dC52YWx1ZS50cmltKCk7dCYmKGUudGFyZ2V0LnZhbHVlPSIiLG8udXBkYXRlKHkuYWRkKHQpKSl9
fSxvLmVkaXQ9ZnVuY3Rpb24oZSx0KXt0PXQudHJpbSgpLHQubGVuZ3RoP28udXBkYXRlKHkucHV0
KGUse3RpdGxlOnQsZWRpdGluZzowfSkpOm8ucmVtb3ZlKGUpfSxvLmZvY3VzPWZ1bmN0aW9uKGUp
e3JldHVybiBvLnVwZGF0ZSh5LnB1dChlLHtlZGl0aW5nOjF9KSl9LG8uYmx1cj1mdW5jdGlvbihl
KXtyZXR1cm4gby51cGRhdGUoeS5wdXQoZSx7ZWRpdGluZzowfSkpfSxvLnJlbW92ZT1mdW5jdGlv
bihlKXtyZXR1cm4gby51cGRhdGUoeS5kZWwoZSkpfSxvLnRvZ2dsZU9uZT1mdW5jdGlvbihlKXty
ZXR1cm4gby51cGRhdGUoeS50b2dnbGUoZSkpfSxvLnRvZ2dsZUFsbD1mdW5jdGlvbihlKXtyZXR1
cm4gby51cGRhdGUoeS50b2dnbGVBbGwoZS50YXJnZXQuY2hlY2tlZCkpfSxvLmNsZWFyQ29tcGxl
dGVkPWZ1bmN0aW9uKCl7cmV0dXJuIG8udXBkYXRlKHkuY2xlYXJDb21wbGV0ZWQoKSl9LGw9bixp
KG8sbCl9cmV0dXJuIGwodCxlKSx0LnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oZSx0KXt2YXIg
bj10aGlzLG89dC50b2RvcyxyPXQucm91dGUsaT1vLmxlbmd0aCxsPW8uZmlsdGVyKGYuZmlsdGVy
c1tyXSksdT1vLmZpbHRlcihmLmZpbHRlcnMuY29tcGxldGVkKS5sZW5ndGgsYz1pLXU7cmV0dXJu
IGEuZGVmYXVsdC5jcmVhdGVWTm9kZSgyLCJkaXYiLG51bGwsW2EuZGVmYXVsdC5jcmVhdGVWTm9k
ZSgxNixzLkhlYWQse29uRW50ZXI6dGhpcy5hZGR9KSxpP2EuZGVmYXVsdC5jcmVhdGVWTm9kZSgy
LCJzZWN0aW9uIix7Y2xhc3NOYW1lOiJtYWluIn0sW2EuZGVmYXVsdC5jcmVhdGVWTm9kZSg1MTIs
ImlucHV0Iix7Y2xhc3NOYW1lOiJ0b2dnbGUtYWxsIix0eXBlOiJjaGVja2JveCIsY2hlY2tlZDow
PT09Y30sbnVsbCx7b25DbGljazp0aGlzLnRvZ2dsZUFsbH0pLGEuZGVmYXVsdC5jcmVhdGVWTm9k
ZSgyLCJ1bCIse2NsYXNzTmFtZToidG9kby1saXN0In0sbC5tYXAoZnVuY3Rpb24oZSl7cmV0dXJu
IGEuZGVmYXVsdC5jcmVhdGVWTm9kZSgxNixtLmRlZmF1bHQse2RhdGE6ZSxvbkJsdXI6ZnVuY3Rp
b24oKXtyZXR1cm4gbi5ibHVyKGUpfSxvbkZvY3VzOmZ1bmN0aW9uKCl7cmV0dXJuIG4uZm9jdXMo
ZSl9LGRvRGVsZXRlOmZ1bmN0aW9uKCl7cmV0dXJuIG4ucmVtb3ZlKGUpfSxkb1NhdmU6ZnVuY3Rp
b24odCl7cmV0dXJuIG4uZWRpdChlLHQpfSxkb1RvZ2dsZTpmdW5jdGlvbigpe3JldHVybiBuLnRv
Z2dsZU9uZShlKX19KX0pKV0pOm51bGwsY3x8dT9hLmRlZmF1bHQuY3JlYXRlVk5vZGUoMTYscy5G
b290LHtvbkNsZWFyOnRoaXMuY2xlYXJDb21wbGV0ZWQsbGVmdDpjLGRvbmU6dSxyb3V0ZTpyfSk6
bnVsbF0pfSx0fShkLmRlZmF1bHQpO2coYS5kZWZhdWx0LmNyZWF0ZVZOb2RlKDE2LF8pLGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJhcHAiKSl9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIG4oKXtyZXR1cm4gbG9jYXRpb24uaGFzaC5yZXBsYWNlKCIjLyIsIiIpfHwiYWxsIn1m
dW5jdGlvbiBvKCl7Zm9yKHZhciBlPXZvaWQgMCx0PXt9LG49MDtuPGFyZ3VtZW50cy5sZW5ndGg7
bisrKXtlPU9iamVjdChhcmd1bWVudHNbbl0pO2Zvcih2YXIgbyBpbiBlKXRbb109ZVtvXX1yZXR1
cm4gdH1mdW5jdGlvbiByKGUsdCl7dmFyIG49T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZSks
bz1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0KTtpZihuLmxlbmd0aCE9PW8ubGVuZ3RoKXJl
dHVybiExO2Zvcih2YXIgcj0wO3I8bi5sZW5ndGg7cisrKXt2YXIgaT1uW3JdO2lmKGVbaV0hPT10
W2ldKXJldHVybiExfXJldHVybiEwfXQuX19lc01vZHVsZT0hMCx0LnJlYWQ9bix0LmFzc2lnbj1v
LHQuaXNFcXVhbD1yO3QuRU5URVI9MTMsdC5FU0NBUEU9MjcsdC5maWx0ZXJzPXthbGw6ZnVuY3Rp
b24oZSl7cmV0dXJuITB9LGFjdGl2ZTpmdW5jdGlvbihlKXtyZXR1cm4hZS5jb21wbGV0ZWR9LGNv
bXBsZXRlZDpmdW5jdGlvbihlKXtyZXR1cm4gZS5jb21wbGV0ZWR9fX0sZnVuY3Rpb24oZSx0LG4p
e2UuZXhwb3J0cz1uKDQpfSxmdW5jdGlvbihlLHQsbil7ZS5leHBvcnRzPW4oOCl9LGZ1bmN0aW9u
KGUsdCxuKXsvKiEKKyAgICAgKiBpbmZlcm5vIHYxLjAuMC1iZXRhMzIKKyAgICAgKiAoYykgMjAx
NiBEb21pbmljIEdhbm5hd2F5CisgICAgICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNl
LgorICAgICAqLworIWZ1bmN0aW9uKGUsbil7bih0KX0odGhpcyxmdW5jdGlvbihlKXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gdChlKXtyZXR1cm4hZihlLnByb3RvdHlwZSkmJiFmKGUucHJvdG90eXBl
LnJlbmRlcil9ZnVuY3Rpb24gbihlKXtyZXR1cm4gdShlKXx8YShlKX1mdW5jdGlvbiBvKGUpe3Jl
dHVybiBmKGUpfHxjKGUpfWZ1bmN0aW9uIHIoZSl7cmV0dXJuIGMoZSl8fGU9PT0hMXx8ZChlKXx8
ZihlKX1mdW5jdGlvbiBpKGUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlfWZ1bmN0aW9uIGwo
ZSl7cmV0dXJuIm8iPT09ZVswXSYmIm4iPT09ZVsxXSYmZS5sZW5ndGg+M31mdW5jdGlvbiB1KGUp
e3JldHVybiJzdHJpbmciPT10eXBlb2YgZX1mdW5jdGlvbiBhKGUpe3JldHVybiJudW1iZXIiPT10
eXBlb2YgZX1mdW5jdGlvbiBjKGUpe3JldHVybiBudWxsPT09ZX1mdW5jdGlvbiBkKGUpe3JldHVy
biBlPT09ITB9ZnVuY3Rpb24gZihlKXtyZXR1cm4gdm9pZCAwPT09ZX1mdW5jdGlvbiBzKGUpe3Jl
dHVybiJvYmplY3QiPT10eXBlb2YgZX1mdW5jdGlvbiBwKGUpe3Rocm93IGV8fChlPXN0KSxuZXcg
RXJyb3IoIkluZmVybm8gRXJyb3I6ICIrZSl9ZnVuY3Rpb24gdihlLHQpe2Zvcih2YXIgbj1bXSxp
PWFyZ3VtZW50cy5sZW5ndGgtMjtpLS0gPjA7KW5baV09YXJndW1lbnRzW2krMl07dmFyIGw9bjtu
Lmxlbmd0aD4wJiYhYyhuWzBdKSYmKHR8fCh0PXt9KSwxPT09bi5sZW5ndGgmJihsPW5bMF0pLGYo
dC5jaGlsZHJlbik/dC5jaGlsZHJlbj1sOnZ0KGwpP3Z0KHQuY2hpbGRyZW4pP3QuY2hpbGRyZW49
dC5jaGlsZHJlbi5jb25jYXQobCk6dC5jaGlsZHJlbj1bdC5jaGlsZHJlbl0uY29uY2F0KGwpOnZ0
KHQuY2hpbGRyZW4pP3QuY2hpbGRyZW4ucHVzaChsKToodC5jaGlsZHJlbj1bdC5jaGlsZHJlbl0s
dC5jaGlsZHJlbi5wdXNoKGwpKSksbD1udWxsO3ZhciB1LGE9ZS5mbGFncyxkPWUuZXZlbnRzfHx0
JiZ0LmV2ZW50c3x8bnVsbDtpZih2dChlKSl1PWUubWFwKGZ1bmN0aW9uKGUpe3JldHVybiB2KGUp
fSk7ZWxzZSBpZihvKHQpJiZvKGwpKXU9T2JqZWN0LmFzc2lnbih7fSxlKTtlbHNle3ZhciBzPW8o
ZS5rZXkpP3Qua2V5OmUua2V5LHA9ZS5yZWZ8fHQucmVmOzI4JmE/dT1OKGEsZS50eXBlLE9iamVj
dC5hc3NpZ24oe30sZS5wcm9wcyx0KSxudWxsLGQscyxwLCEwKTozOTcwJmEmJihsPXQmJnQuY2hp
bGRyZW58fGUuY2hpbGRyZW4sdT1OKGEsZS50eXBlLE9iamVjdC5hc3NpZ24oe30sZS5wcm9wcyx0
KSxsLGQscyxwLCFsKSl9aWYoMjgmYSl7dmFyIGg9dS5wcm9wcztpZihoKXt2YXIgbT1oLmNoaWxk
cmVuO2lmKG0paWYodnQobSkpZm9yKHZhciBnPTA7ZzxtLmxlbmd0aDtnKyspe3ZhciB5PW1bZ107
IXIoeSkmJncoeSkmJihoLmNoaWxkcmVuW2ddPXYoeSkpfWVsc2UgdyhtKSYmKGguY2hpbGRyZW49
dihtKSl9dS5jaGlsZHJlbj1udWxsfXJldHVybiB1LmRvbT1udWxsLHV9ZnVuY3Rpb24gaChlLHQs
byl7Zm9yKDtvPGUubGVuZ3RoO28rKyl7dmFyIGk9ZVtvXTtyKGkpfHwoQXJyYXkuaXNBcnJheShp
KT9oKGksdCwwKToobihpKT9pPWsoaSk6dyhpKSYmaS5kb20mJihpPXYoaSkpLHQucHVzaChpKSkp
fX1mdW5jdGlvbiBtKGUpe3ZhciB0O2UuJD9lPWUuc2xpY2UoKTplLiQ9ITA7Zm9yKHZhciBvPTA7
bzxlLmxlbmd0aDtvKyspe3ZhciBpPWVbb107aWYocihpKSl0fHwodD1lLnNsaWNlKDAsbykpLHQu
cHVzaChpKTtlbHNle2lmKEFycmF5LmlzQXJyYXkoaSkpe3ZhciBsPSh0fHxlKS5zbGljZSgwLG8p
O3JldHVybiBoKGUsbCxvKSxsfW4oaSk/KHR8fCh0PWUuc2xpY2UoMCxvKSksdC5wdXNoKGsoaSkp
KTp3KGkpJiZpLmRvbT8odHx8KHQ9ZS5zbGljZSgwLG8pKSx0LnB1c2godihpKSkpOnQmJnQucHVz
aCh2KGkpKX19cmV0dXJuIHR8fGV9ZnVuY3Rpb24gZyhlKXtyZXR1cm4gdnQoZSk/bShlKTp3KGUp
JiZlLmRvbT92KGUpOmV9ZnVuY3Rpb24geShlLHQsbil7MjgmZS5mbGFnc3x8IW8obil8fG8odC5j
aGlsZHJlbil8fChlLmNoaWxkcmVuPXQuY2hpbGRyZW4pLHQucmVmJiYoZS5yZWY9dC5yZWYpLHQu
ZXZlbnRzJiYoZS5ldmVudHM9dC5ldmVudHMpLG8odC5rZXkpfHwoZS5rZXk9dC5rZXkpfWZ1bmN0
aW9uIF8oZSl7dmFyIHQ9ZS5wcm9wcyxuPWUuY2hpbGRyZW47dShlLnR5cGUpJiYyOCZlLmZsYWdz
JiYoZS5mbGFncz0zOTcwKSx0JiZ5KGUsdCxuKSxyKG4pfHwoZS5jaGlsZHJlbj1nKG4pKSx0JiYh
cih0LmNoaWxkcmVuKSYmKHQuY2hpbGRyZW49Zyh0LmNoaWxkcmVuKSl9ZnVuY3Rpb24gTihlLG4s
byxyLGksbCx1LGEpezE2JmUmJihlPXQobik/NDo4KTt2YXIgYz17Y2hpbGRyZW46ZihyKT9udWxs
OnIsZG9tOm51bGwsZXZlbnRzOml8fG51bGwsZmxhZ3M6ZXx8MCxrZXk6dm9pZCAwPT09bD9udWxs
OmwscHJvcHM6b3x8bnVsbCxyZWY6dXx8bnVsbCx0eXBlOm59O3JldHVybiBhfHxfKGMpLGN9ZnVu
Y3Rpb24gYigpe3JldHVybiBOKDQwOTYpfWZ1bmN0aW9uIGsoZSl7cmV0dXJuIE4oMSxudWxsLG51
bGwsZSl9ZnVuY3Rpb24gdyhlKXtyZXR1cm4hIWUuZmxhZ3N9ZnVuY3Rpb24gQygpe3JldHVybiBn
dC5pZCsrfWZ1bmN0aW9uIFMoZSx0KXt2YXIgbj1uZXcgQ3VzdG9tRXZlbnQoImluZmVybm8uY2xp
ZW50Lm1lc3NhZ2UiLHtkZXRhaWw6SlNPTi5zdHJpbmdpZnkodCxmdW5jdGlvbihlLHQpe2lmKCFj
KHQpJiYhZih0KSl7aWYoIl92Q29tcG9uZW50Ij09PWV8fCFmKHQubm9kZVR5cGUpKXJldHVybjtp
ZihpKHQpKXJldHVybiIkJGY6Iit0Lm5hbWV9cmV0dXJuIHR9KX0pO2UuZGlzcGF0Y2hFdmVudChu
KX1mdW5jdGlvbiBPKCl7Zm9yKHZhciBlPTA7ZTxBdC5sZW5ndGg7ZSsrKXt2YXIgdD1BdFtlXTth
dCh0LmlucHV0LHQuZG9tKX19ZnVuY3Rpb24geChlKXtlLl9fSU5GRVJOT19ERVZUT09MU19HTE9C
QUxfSE9PS19fPUF0LGUuYWRkRXZlbnRMaXN0ZW5lcigiaW5mZXJuby5kZXZ0b29scy5tZXNzYWdl
IixmdW5jdGlvbih0KXt2YXIgbj1KU09OLnBhcnNlKHQuZGV0YWlsKSxvPW4udHlwZTtzd2l0Y2go
byl7Y2FzZSJnZXQtcm9vdHMiOm10LmNvbm5lY3RlZHx8KG10LmNvbm5lY3RlZD0hMCxPKCksVShl
KSl9fSl9ZnVuY3Rpb24gVShlKXtTKGUse3R5cGU6InJvb3RzIixkYXRhOkF0fSl9ZnVuY3Rpb24g
TShlLHQsbil7ZS5zcGxpdCgiLCIpLmZvckVhY2goZnVuY3Rpb24oZSl7cmV0dXJuIHRbZV09bn0p
fWZ1bmN0aW9uIEUoZSx0LG4sbyl7dmFyIHI9RXQuZ2V0KGUpO2lmKG4pe2lmKCFyKXtyPXtpdGVt
czpuZXcgTWFwLGNvdW50OjAsZG9jRXZlbnQ6bnVsbH07dmFyIGk9UChlLHIpO3IuZG9jRXZlbnQ9
aSxFdC5zZXQoZSxyKX10fHxyLmNvdW50Kyssci5pdGVtcy5zZXQobyxuKX1lbHNlIHImJnIuaXRl
bXMuaGFzKG8pJiYoci5jb3VudC0tLHIuaXRlbXMuZGVsZXRlKG8pLDA9PT1yLmNvdW50JiYoZG9j
dW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihUKGUpLHIuZG9jRXZlbnQpLEV0LmRlbGV0ZShlKSkp
fWZ1bmN0aW9uIFYoZSx0LG4sbyxyKXt2YXIgaT1uLmdldCh0KTtpZighaXx8KG8tLSxyLmRvbT10
LGkuZXZlbnQ/aS5ldmVudChpLmRhdGEsZSk6aShlKSwhci5zdG9wUHJvcGFnYXRpb24pKXt2YXIg
bD10LnBhcmVudE5vZGU7bz4wJiYobHx8bD09PWRvY3VtZW50LmJvZHkpJiZWKGUsbCxuLG8scil9
fWZ1bmN0aW9uIFQoZSl7cmV0dXJuIGUuc3Vic3RyKDIpLnRvTG93ZXJDYXNlKCl9ZnVuY3Rpb24g
UChlLHQpe3ZhciBuPWZ1bmN0aW9uKGUpe3ZhciBuPXtzdG9wUHJvcGFnYXRpb246ITEsZG9tOmRv
Y3VtZW50fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiY3VycmVudFRhcmdldCIse2NvbmZpZ3Vy
YWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbi5kb219fSksZS5zdG9wUHJvcGFnYXRpb249
ZnVuY3Rpb24oKXtuLnN0b3BQcm9wYWdhdGlvbj0hMH07dmFyIG89dC5jb3VudDtvPjAmJlYoZSxl
LnRhcmdldCx0Lml0ZW1zLG8sbil9O3JldHVybiBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFQo
ZSksbiksbn1mdW5jdGlvbiBJKGUpe3JldHVybiJjaGVja2JveCI9PT1lfHwicmFkaW8iPT09ZX1m
dW5jdGlvbiBBKGUpe3ZhciB0PUkoZS50eXBlKTtyZXR1cm4gdD8hbyhlLmNoZWNrZWQpOiFvKGUu
dmFsdWUpfWZ1bmN0aW9uIEQoZSl7dmFyIHQ9dGhpcy52Tm9kZSxuPXQuZXZlbnRzfHxodCxvPXQu
ZG9tO24ub25JbnB1dD9uLm9uSW5wdXQoZSk6bi5vbmlucHV0JiZuLm9uaW5wdXQoZSksTCh0aGlz
LnZOb2RlLG8pfWZ1bmN0aW9uIGooZSl7dmFyIHQ9dGhpcy52Tm9kZSxuPXQuZXZlbnRzfHxodCxv
PXQuZG9tO24ub25DbGljaz9uLm9uQ2xpY2soZSk6bi5vbmNsaWNrJiZuLm9uY2xpY2soZSksTCh0
aGlzLnZOb2RlLG8pfWZ1bmN0aW9uIFIoZSl7dmFyIHQ9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFs
bCgnaW5wdXRbdHlwZT0icmFkaW8iXVtuYW1lPSInK2UrJyJdJyk7W10uZm9yRWFjaC5jYWxsKHQs
ZnVuY3Rpb24oZSl7dmFyIHQ9VnQuZ2V0KGUpO2lmKHQpe3ZhciBuPXQudk5vZGUucHJvcHM7biYm
KGUuY2hlY2tlZD10LnZOb2RlLnByb3BzLmNoZWNrZWQpfX0pfWZ1bmN0aW9uIFcoZSx0KXt2YXIg
bj1lLnByb3BzfHxodDtpZihMKGUsdCksQShuKSl7dmFyIG89VnQuZ2V0KHQpO298fChvPXt2Tm9k
ZTplfSxJKG4udHlwZSk/KHQub25jbGljaz1qLmJpbmQobyksdC5vbmNsaWNrLndyYXBwZWQ9ITAp
Oih0Lm9uaW5wdXQ9RC5iaW5kKG8pLHQub25pbnB1dC53cmFwcGVkPSEwKSxWdC5zZXQodCxvKSks
by52Tm9kZT1lfX1mdW5jdGlvbiBMKGUsdCl7dmFyIG49ZS5wcm9wc3x8aHQscj1uLnR5cGUsaT1u
LnZhbHVlLGw9bi5jaGVja2VkO3IhPT10LnR5cGUmJnImJih0LnR5cGU9ciksbi5tdWx0aXBsZSE9
PXQubXVsdGlwbGUmJih0Lm11bHRpcGxlPW4ubXVsdGlwbGUpLEkocik/KG8oaSl8fCh0LnZhbHVl
PWkpLHQuY2hlY2tlZD1sLCJyYWRpbyI9PT1yJiZuLm5hbWUmJlIobi5uYW1lKSk6byhpKXx8dC52
YWx1ZT09PWk/byhsKXx8KHQuY2hlY2tlZD1sKTp0LnZhbHVlPWl9ZnVuY3Rpb24gQihlKXtyZXR1
cm4hbyhlLnZhbHVlKX1mdW5jdGlvbiBGKGUsdCl7dmFyIG49ZS5wcm9wc3x8aHQsbz1lLmRvbTtv
LnZhbHVlPW4udmFsdWUsdnQodCkmJnQuaW5kZXhPZihuLnZhbHVlKSE9PS0xfHxuLnZhbHVlPT09
dD9vLnNlbGVjdGVkPSEwOm8uc2VsZWN0ZWQ9bi5zZWxlY3RlZHx8ITF9ZnVuY3Rpb24gSihlKXt2
YXIgdD10aGlzLnZOb2RlLG49dC5ldmVudHN8fGh0LG89dC5kb207bi5vbkNoYW5nZT9uLm9uQ2hh
bmdlKGUpOm4ub25jaGFuZ2UmJm4ub25jaGFuZ2UoZSksSyh0aGlzLnZOb2RlLG8pfWZ1bmN0aW9u
IEcoZSx0KXt2YXIgbj1lLnByb3BzfHxodDtpZihLKGUsdCksQihuKSl7dmFyIG89VnQuZ2V0KHQp
O298fChvPXt2Tm9kZTplfSx0Lm9uY2hhbmdlPUouYmluZChvKSx0Lm9uY2hhbmdlLndyYXBwZWQ9
ITAsVnQuc2V0KHQsbykpLG8udk5vZGU9ZX19ZnVuY3Rpb24gSyhlLHQpe3ZhciBuPWUucHJvcHN8
fGh0O24ubXVsdGlwbGUhPT10Lm11bHRpcGxlJiYodC5tdWx0aXBsZT1uLm11bHRpcGxlKTt2YXIg
bz1lLmNoaWxkcmVuLHI9bi52YWx1ZTtpZih2dChvKSlmb3IodmFyIGk9MDtpPG8ubGVuZ3RoO2kr
KylGKG9baV0scik7ZWxzZSB3KG8pJiZGKG8scil9ZnVuY3Rpb24gcShlKXtyZXR1cm4hbyhlLnZh
bHVlKX1mdW5jdGlvbiBIKGUpe3ZhciB0PXRoaXMudk5vZGUsbj10LmV2ZW50c3x8aHQsbz10LmRv
bTtuLm9uSW5wdXQ/bi5vbklucHV0KGUpOm4ub25pbnB1dCYmbi5vbmlucHV0KGUpLCQodGhpcy52
Tm9kZSxvKX1mdW5jdGlvbiBZKGUsdCl7dmFyIG49ZS5wcm9wc3x8aHQ7JChlLHQpO3ZhciBvPVZ0
LmdldCh0KTtxKG4pJiYob3x8KG89e3ZOb2RlOmV9LHQub25pbnB1dD1ILmJpbmQobyksdC5vbmlu
cHV0LndyYXBwZWQ9ITAsVnQuc2V0KHQsbykpLG8udk5vZGU9ZSl9ZnVuY3Rpb24gJChlLHQpe3Zh
ciBuPWUucHJvcHN8fGh0LG89bi52YWx1ZTt0LnZhbHVlIT09byYmKHQudmFsdWU9byl9ZnVuY3Rp
b24geihlLHQsbil7NTEyJmU/Vyh0LG4pOjIwNDgmZT9HKHQsbik6MTAyNCZlJiZZKHQsbil9ZnVu
Y3Rpb24gWChlLHQsbixvLHIsaSl7dmFyIGw9ZS5mbGFnczsyOCZsP1ooZSx0LG4sbyxyLGkpOjM5
NzAmbD9lZShlLHQsbixvLHIsaSk6NDA5NyZsJiZRKGUsdCl9ZnVuY3Rpb24gUShlLHQpe3QmJktl
KHQsZS5kb20pfWZ1bmN0aW9uIFooZSx0LG4scixpLGwpe3ZhciB1PWUuY2hpbGRyZW4sYT1lLmZs
YWdzLGM9NCZhLGQ9ZS5yZWYsZj1lLmRvbTtpZighbCl7aWYoIWkpaWYoYyl7dmFyIHM9dS5fbGlm
ZWN5Y2xlO3MuZmFzdFVubW91bnR8fFgodS5fbGFzdElucHV0LG51bGwsbiwhMSxpLGwpfWVsc2Ug
bi5mYXN0VW5tb3VudHx8WCh1LG51bGwsbiwhMSxpLGwpO2M/KHUuX2lnbm9yZVNldFN0YXRlPSEw
LHUuY29tcG9uZW50V2lsbFVubW91bnQoKSxkJiYhbCYmZChudWxsKSx1Ll91bm1vdW50ZWQ9ITAs
anQmJkR0LmRlbGV0ZSh1KSk6byhkKXx8byhkLm9uQ29tcG9uZW50V2lsbFVubW91bnQpfHxkLm9u
Q29tcG9uZW50V2lsbFVubW91bnQoZil9aWYodCl7dmFyIHA9dS5fbGFzdElucHV0O28ocCkmJihw
PXUpLEtlKHQsZil9VHQmJiFjJiYodHx8cikmJndlKGUpfWZ1bmN0aW9uIGVlKGUsdCxuLHIsaSxs
KXt2YXIgdT1lLmRvbSxhPWUucmVmLGQ9ZS5ldmVudHM7aWYoIWkmJiFuLmZhc3RVbm1vdW50KXth
JiYhbCYmbmUoYSk7dmFyIGY9ZS5jaGlsZHJlbjtvKGYpfHx0ZShmLG4saSxsKX1pZighYyhkKSlm
b3IodmFyIHMgaW4gZCloZShzLGRbc10sbnVsbCx1LG4pLGRbc109bnVsbDt0JiZLZSh0LHUpLFR0
JiYodHx8cikmJmJlKGUpfWZ1bmN0aW9uIHRlKGUsdCxuLG8pe2lmKHZ0KGUpKWZvcih2YXIgaT0w
O2k8ZS5sZW5ndGg7aSsrKXt2YXIgbD1lW2ldOyFyKGwpJiZzKGwpJiZYKGwsbnVsbCx0LCExLG4s
byl9ZWxzZSBzKGUpJiZYKGUsbnVsbCx0LCExLG4sbyl9ZnVuY3Rpb24gbmUoZSl7aWYoaShlKSll
KG51bGwpO2Vsc2V7aWYocihlKSlyZXR1cm47cCgpfX1mdW5jdGlvbiBvZShlLHQsbixvLHIsaSxs
KXtpZihlIT09dCl7dmFyIHU9ZS5mbGFncyxhPXQuZmxhZ3M7MjgmYT8yOCZ1P3VlKGUsdCxuLG8s
cixpLDQmYSxsKTpEZShuLE1lKHQsbnVsbCxvLHIsaSw0JmEpLGUsbyxsKTozOTcwJmE/Mzk3MCZ1
P2llKGUsdCxuLG8scixpLGwpOkRlKG4seGUodCxudWxsLG8scixpKSxlLG8sbCk6MSZhPzEmdT9h
ZShlLHQpOkRlKG4sU2UodCxudWxsKSxlLG8sbCk6NDA5NiZhPzQwOTYmdT9jZShlLHQpOkRlKG4s
T2UodCxudWxsKSxlLG8sbCk6QWUoZSx0LG4sbyxyLGksbCl9fWZ1bmN0aW9uIHJlKGUsdCxuLG8p
e3coZSk/WChlLHQsbiwhMCwhMSxvKTp2dChlKT9xZSh0LGUsbiwhMSxvKTp0LnRleHRDb250ZW50
PSIifWZ1bmN0aW9uIGllKGUsdCxuLG8scixpLGwpe3ZhciB1PXQudHlwZSxhPWUudHlwZTtpZihh
IT09dSlKZShlLHQsbixvLHIsaSxsKTtlbHNle3ZhciBjPWUuZG9tLGQ9ZS5wcm9wcyxmPXQucHJv
cHMscz1lLmNoaWxkcmVuLHA9dC5jaGlsZHJlbix2PWUuZmxhZ3MsaD10LmZsYWdzLG09ZS5yZWYs
Zz10LnJlZix5PWUuZXZlbnRzLF89dC5ldmVudHM7dC5kb209YywoaXx8MTI4JmgpJiYoaT0hMCks
cyE9PXAmJmxlKHYsaCxzLHAsYyxvLHIsaSxsKSwyJmh8fHooaCx0LGMpLGQhPT1mJiZtZShkLGYs
YyxvLHIsaSkseSE9PV8mJnZlKHksXyxjLG8pLGcmJihtIT09Z3x8bCkmJlRlKGMsZyxvKX19ZnVu
Y3Rpb24gbGUoZSx0LG8saSxsLHUsYSxjLGQpe3ZhciBmPSExLHM9ITE7NjQmdD9mPSEwOjMyJmUm
JjMyJnQ/KHM9ITAsZj0hMCk6cihpKT9yZShvLGwsdSxkKTpyKG8pP24oaSk/UmUobCxpKTp2dChp
KT9VZShpLGwsdSxhLGMpOkNlKGksbCx1LGEsYyk6bihpKT9uKG8pP1dlKGwsaSk6KHJlKG8sbCx1
LGQpLFJlKGwsaSkpOnZ0KGkpP3Z0KG8pPyhmPSEwLFllKG8saSkmJihzPSEwKSk6KHJlKG8sbCx1
LGQpLFVlKGksbCx1LGEsYykpOnZ0KG8pPyhxZShsLG8sdSwhMSxkKSxDZShpLGwsdSxhLGMpKTp3
KGkpP3cobyk/b2UobyxpLGwsdSxhLGMsZCk6KHJlKG8sbCx1LGQpLENlKGksbCx1LGEsYykpOnco
byksZiYmKHM/ZmUobyxpLGwsdSxhLGMsZCk6ZGUobyxpLGwsdSxhLGMsZCkpfWZ1bmN0aW9uIHVl
KGUsdCxuLGksbCx1LGEsZCl7dmFyIGg9ZS50eXBlLG09dC50eXBlLGc9dC5wcm9wc3x8aHQseT1l
LmtleSxfPXQua2V5O2lmKGghPT1tKWlmKGEpSmUoZSx0LG4saSxsLHUsZCk7ZWxzZXt2YXIgTj1l
LmNoaWxkcmVuLl9sYXN0SW5wdXR8fGUuY2hpbGRyZW4saz1qZSh0LG0sZyxsKTtvZShOLGssbixp
LGwsdSxkKTt2YXIgdz10LmRvbT1rLmRvbTt0LmNoaWxkcmVuPWssVmUodC5yZWYsdyxpKSxYKGUs
bnVsbCxpLCExLCEwLGQpfWVsc2UgaWYoYSl7aWYoeSE9PV8pcmV0dXJuIEplKGUsdCxuLGksbCx1
LGQpLCExO3ZhciBTPWUuY2hpbGRyZW47aWYoUy5fdW5tb3VudGVkKXtpZihjKG4pKXJldHVybiEw
O0dlKG4sTWUodCxudWxsLGksbCx1LDQmdC5mbGFncyksZS5kb20pfWVsc2V7dmFyIE89bS5kZWZh
dWx0UHJvcHMseD1TLnByb3BzO1MuX2RldlRvb2xzU3RhdHVzLmNvbm5lY3RlZCYmIVMuX2RldlRv
b2xzSWQmJnl0LnNldChTLl9kZXZUb29sc0lkPUMoKSxTKSxpLmZhc3RVbm1vdW50PSExLGYoTyl8
fChQZSh4LGcpLHQucHJvcHM9Zyk7dmFyIFU9Uy5zdGF0ZSxNPVMuc3RhdGUsRT1TLmdldENoaWxk
Q29udGV4dCgpO3QuY2hpbGRyZW49UyxTLl9pc1NWRz11LEU9byhFKT9sOk9iamVjdC5hc3NpZ24o
e30sbCxFKTt2YXIgVj1TLl9sYXN0SW5wdXQsVD1TLl91cGRhdGVDb21wb25lbnQoVSxNLHgsZyxs
LCExKSxQPSEwO2lmKFMuX2NoaWxkQ29udGV4dD1FLHIoVCk/VD1iKCk6dnQoVCk/cCgpOlQ9PT1m
dD8oVD1WLFA9ITEpOnMoVCkmJlQuZG9tJiYoVD12KFQpKSwyOCZULmZsYWdzP1QucGFyZW50Vk5v
ZGU9dDoyOCZWLmZsYWdzJiYoVi5wYXJlbnRWTm9kZT10KSxTLl9sYXN0SW5wdXQ9VCxTLl92Tm9k
ZT10LFApe3ZhciBJPWkuZmFzdFVubW91bnQsQT1TLl9saWZlY3ljbGU7aS5mYXN0VW5tb3VudD1B
LmZhc3RVbm1vdW50LG9lKFYsVCxuLGksRSx1LGQpLEEuZmFzdFVubW91bnQ9aS51bm1vdW50LGku
ZmFzdFVubW91bnQ9SSxTLmNvbXBvbmVudERpZFVwZGF0ZSh4LFUpLGp0JiZEdC5zZXQoUyxULmRv
bSl9dC5kb209VC5kb219fWVsc2V7dmFyIEQ9ITAsaj1lLnByb3BzLFI9dC5yZWYsVz0hbyhSKSxM
PWUuY2hpbGRyZW4sQj1MO3QuZG9tPWUuZG9tLHQuY2hpbGRyZW49TCx5IT09Xz9EPSEwOlcmJiFv
KFIub25Db21wb25lbnRTaG91bGRVcGRhdGUpJiYoRD1SLm9uQ29tcG9uZW50U2hvdWxkVXBkYXRl
KGosZykpLEQhPT0hMSYmKFcmJiFvKFIub25Db21wb25lbnRXaWxsVXBkYXRlKSYmKGkuZmFzdFVu
bW91bnQ9ITEsUi5vbkNvbXBvbmVudFdpbGxVcGRhdGUoaixnKSksQj1tKGcsbCkscihCKT9CPWIo
KTp2dChCKT9wKCk6cyhCKSYmQi5kb20mJihCPXYoQikpLEIhPT1mdCYmKG9lKEwsQixuLGksbCx1
LGQpLHQuY2hpbGRyZW49QixXJiYhbyhSLm9uQ29tcG9uZW50RGlkVXBkYXRlKSYmKGkuZmFzdFVu
bW91bnQ9ITEsUi5vbkNvbXBvbmVudERpZFVwZGF0ZShqLGcpKSx0LmRvbT1CLmRvbSkpLDI4JkIu
ZmxhZ3M/Qi5wYXJlbnRWTm9kZT10OjI4JkwuZmxhZ3MmJihMLnBhcmVudFZOb2RlPXQpfXJldHVy
biExfWZ1bmN0aW9uIGFlKGUsdCl7dmFyIG49dC5jaGlsZHJlbixvPWUuZG9tO3QuZG9tPW8sZS5j
aGlsZHJlbiE9PW4mJihvLm5vZGVWYWx1ZT1uKX1mdW5jdGlvbiBjZShlLHQpe3QuZG9tPWUuZG9t
fWZ1bmN0aW9uIGRlKGUsdCxuLG8saSxsLHUpe3ZhciBhLGMsZD1lLmxlbmd0aCxmPXQubGVuZ3Ro
LHM9ZD5mP2Y6ZCxwPW51bGw7aWYoZDxmKWZvcihhPWYtMTthPj1zO2EtLSl7dmFyIGg9dFthXTty
KGgpfHwoaC5kb20mJih0W2FdPWg9dihoKSksYz1DZShoLG51bGwsbyxpLGwpLEJlKG4sYyxwKSxw
PWMpfWVsc2UgaWYoMD09PWYpcWUobixlLG8sITEsdSk7ZWxzZSBpZihkPmYpZm9yKGE9czthPGQ7
YSsrKXt2YXIgbT1lW2FdO3IobSl8fFgoZVthXSxuLG8sITEsITEsdSl9Zm9yKGE9cy0xO2E+PTA7
YS0tKXt2YXIgZz1lW2FdLHk9dFthXTtyKHkpP3IoZyl8fFgoZyxuLG8sITAsITEsdSk6KHkuZG9t
JiYodFthXT15PXYoeSkpLHIoZyk/KGM9Q2UoeSxudWxsLG8saSxsKSxCZShuLGMscCkscD1jKToo
b2UoZyx5LG4sbyxpLGwsdSkscD15LmRvbSkpfX1mdW5jdGlvbiBmZShlLHQsbixvLHIsaSxsKXt2
YXIgdSxhLGQscyxwLGgsbSxnPWUubGVuZ3RoLHk9dC5sZW5ndGgsXz1nLTEsTj15LTEsYj0wLGs9
MDtpZigwPT09ZylyZXR1cm4gdm9pZCgwIT09eSYmVWUodCxuLG8scixpKSk7aWYoMD09PXkpcmV0
dXJuIHZvaWQgcWUobixlLG8sITEsbCk7dmFyIHc9ZVtiXSxDPXRba10sUz1lW19dLE89dFtOXTtD
LmRvbSYmKHRba109Qz12KEMpKSxPLmRvbSYmKHRbTl09Tz12KE8pKTtlOmZvcig7Oyl7Zm9yKDt3
LmtleT09PUMua2V5Oyl7aWYob2UodyxDLG4sbyxyLGksbCksYisrLGsrKyxiPl98fGs+TilicmVh
ayBlO3c9ZVtiXSxDPXRba10sQy5kb20mJih0W2tdPUM9dihDKSl9Zm9yKDtTLmtleT09PU8ua2V5
Oyl7aWYob2UoUyxPLG4sbyxyLGksbCksXy0tLE4tLSxiPl98fGs+TilicmVhayBlO1M9ZVtfXSxP
PXRbTl0sTy5kb20mJih0W05dPU89dihPKSl9aWYoUy5rZXkhPT1DLmtleSl7aWYody5rZXkhPT1P
LmtleSlicmVhaztvZSh3LE8sbixvLHIsaSxsKSxoPU4rMSxwPWg8dC5sZW5ndGg/dFtoXS5kb206
bnVsbCxCZShuLE8uZG9tLHApLGIrKyxOLS0sdz1lW2JdLE89dFtOXSxPLmRvbSYmKHRbTl09Tz12
KE8pKX1lbHNlIG9lKFMsQyxuLG8scixpLGwpLEJlKG4sQy5kb20sdy5kb20pLF8tLSxrKyssUz1l
W19dLEM9dFtrXSxDLmRvbSYmKHRba109Qz12KEMpKX1pZihiPl8pe2lmKGs8PU4pZm9yKGg9Tisx
LHA9aDx0Lmxlbmd0aD90W2hdLmRvbTpudWxsO2s8PU47KW09dFtrXSxtLmRvbSYmKHRba109bT12
KG0pKSxrKyssQmUobixDZShtLG51bGwsbyxyLGkpLHApfWVsc2UgaWYoaz5OKWZvcig7Yjw9Xzsp
WChlW2IrK10sbixvLCExLCExLGwpO2Vsc2V7Zz1fLWIrMSx5PU4taysxO3ZhciB4PWUsVT1uZXcg
QXJyYXkoeSk7Zm9yKHU9MDt1PHk7dSsrKVVbdV09LTE7dmFyIE09ITEsRT0wLFY9MDtpZih5PD00
fHxnKnk8PTE2KXtmb3IodT1iO3U8PV87dSsrKWlmKGQ9ZVt1XSxWPHkpZm9yKGE9azthPD1OO2Er
KylpZihzPXRbYV0sZC5rZXk9PT1zLmtleSl7VVthLWtdPXUsRT5hP009ITA6RT1hLHMuZG9tJiYo
dFthXT1zPXYocykpLG9lKGQscyxuLG8scixpLGwpLFYrKyx4W3VdPW51bGw7YnJlYWt9fWVsc2V7
dmFyIFQ9bmV3IE1hcDtmb3IodT1rO3U8PU47dSsrKW09dFt1XSxULnNldChtLmtleSx1KTtmb3Io
dT1iO3U8PV87dSsrKWQ9ZVt1XSxWPHkmJihhPVQuZ2V0KGQua2V5KSxmKGEpfHwocz10W2FdLFVb
YS1rXT11LEU+YT9NPSEwOkU9YSxzLmRvbSYmKHRbYV09cz12KHMpKSxvZShkLHMsbixvLHIsaSxs
KSxWKysseFt1XT1udWxsKSl9aWYoZz09PWUubGVuZ3RoJiYwPT09Vilmb3IocWUobixlLG8sITEs
bCk7azx5OyltPXRba10sbS5kb20mJih0W2tdPW09dihtKSksaysrLEJlKG4sQ2UobSxudWxsLG8s
cixpKSxudWxsKTtlbHNle2Zvcih1PWctVjt1PjA7KWQ9eFtiKytdLGMoZCl8fChYKGQsbixvLCEx
LCExLGwpLHUtLSk7aWYoTSl7dmFyIFA9c2UoVSk7Zm9yKGE9UC5sZW5ndGgtMSx1PXktMTt1Pj0w
O3UtLSlVW3VdPT09LTE/KEU9dStrLG09dFtFXSxtLmRvbSYmKHRbRV09bT12KG0pKSxoPUUrMSxw
PWg8dC5sZW5ndGg/dFtoXS5kb206bnVsbCxCZShuLENlKG0sbixvLHIsaSkscCkpOmE8MHx8dSE9
PVBbYV0/KEU9dStrLG09dFtFXSxoPUUrMSxwPWg8dC5sZW5ndGg/dFtoXS5kb206bnVsbCxCZShu
LG0uZG9tLHApKTphLS19ZWxzZSBpZihWIT09eSlmb3IodT15LTE7dT49MDt1LS0pVVt1XT09PS0x
JiYoRT11K2ssbT10W0VdLG0uZG9tJiYodFtFXT1tPXYobSkpLGg9RSsxLHA9aDx0Lmxlbmd0aD90
W2hdLmRvbTpudWxsLEJlKG4sQ2UobSxudWxsLG8scixpKSxwKSl9fX1mdW5jdGlvbiBzZShlKXt2
YXIgdD1lLnNsaWNlKDApLG49W107bi5wdXNoKDApO3ZhciBvLHIsaSxsLHU7Zm9yKG89MDtvPGUu
bGVuZ3RoO28rKylpZihlW29dIT09LTEpaWYocj1uW24ubGVuZ3RoLTFdLGVbcl08ZVtvXSl0W29d
PXIsbi5wdXNoKG8pO2Vsc2V7Zm9yKGk9MCxsPW4ubGVuZ3RoLTE7aTxsOyl1PShpK2wpLzJ8MCxl
W25bdV1dPGVbb10/aT11KzE6bD11O2Vbb108ZVtuW2ldXSYmKGk+MCYmKHRbb109bltpLTFdKSxu
W2ldPW8pfWZvcihpPW4ubGVuZ3RoLGw9bltpLTFdO2ktLSA+MDspbltpXT1sLGw9dFtsXTtyZXR1
cm4gbn1mdW5jdGlvbiBwZShlLHQsbixyLGksdSl7aWYoIXh0W2VdKWlmKEN0W2VdKXJbZV09ISFu
O2Vsc2UgaWYod3RbZV0pe3ZhciBhPW8obik/IiI6bjtyW2VdIT09YSYmKHJbZV09YSl9ZWxzZSBp
ZihsKGUpKWhlKGUsdCxuLHIsdSk7ZWxzZSBpZih0IT09bilpZihvKG4pKXIucmVtb3ZlQXR0cmli
dXRlKGUpO2Vsc2UgaWYoImNsYXNzTmFtZSI9PT1lKWk/ci5zZXRBdHRyaWJ1dGUoImNsYXNzIixu
KTpyLmNsYXNzTmFtZT1uO2Vsc2UgaWYoInN0eWxlIj09PWUpZ2UodCxuLHIpO2Vsc2UgaWYoImRh
bmdlcm91c2x5U2V0SW5uZXJIVE1MIj09PWUpe3ZhciBjPXQmJnQuX19odG1sLGQ9biYmbi5fX2h0
bWw7YyE9PWQmJihvKGQpfHwoci5pbm5lckhUTUw9ZCkpfWVsc2UgaWYoImNoaWxkcmVuVHlwZSIh
PT1lJiYicmVmIiE9PWUmJiJrZXkiIT09ZSl7dmFyIGY9VXRbZV0scz1TdFtlXTtzP3Iuc2V0QXR0
cmlidXRlTlMocyxmfHxlLG4pOnIuc2V0QXR0cmlidXRlKGZ8fGUsbil9fWZ1bmN0aW9uIHZlKGUs
dCxuLHIpe2lmKGU9ZXx8aHQsdD10fHxodCx0IT09aHQpZm9yKHZhciBpIGluIHQpaGUoaSxlW2ld
LHRbaV0sbixyKTtpZihlIT09aHQpZm9yKHZhciBsIGluIGUpbyh0W2xdKSYmaGUobCxlW2xdLG51
bGwsbixyKX1mdW5jdGlvbiBoZShlLHQsbixvLHIpe2lmKHQhPT1uKXt2YXIgaT1lLnRvTG93ZXJD
YXNlKCksbD1vW2ldO2lmKGwmJmwud3JhcHBlZClyZXR1cm47TXRbZV0/KHIuZmFzdFVubW91bnQ9
ITEsRShlLHQsbixvKSk6b1tpXT1ufX1mdW5jdGlvbiBtZShlLHQsbixyLGksbCl7aWYoZT1lfHxo
dCx0PXR8fGh0LHQhPT1odClmb3IodmFyIHUgaW4gdCl7dmFyIGE9dFt1XSxjPWVbdV07byhhKT95
ZSh1LG4pOnBlKHUsYyxhLG4sbCxyKX1pZihlIT09aHQpZm9yKHZhciBkIGluIGUpbyh0W2RdKSYm
eWUoZCxuKX1mdW5jdGlvbiBnZShlLHQsbil7aWYodSh0KSlyZXR1cm4gdm9pZChuLnN0eWxlLmNz
c1RleHQ9dCk7Zm9yKHZhciByIGluIHQpe3ZhciBpPXRbcl07YShpKSYmIU90W3JdP24uc3R5bGVb
cl09aSsicHgiOm4uc3R5bGVbcl09aX1pZighbyhlKSlmb3IodmFyIGwgaW4gZSlvKHRbbF0pJiYo
bi5zdHlsZVtsXT0iIil9ZnVuY3Rpb24geWUoZSx0KXsiY2xhc3NOYW1lIj09PWU/dC5yZW1vdmVB
dHRyaWJ1dGUoImNsYXNzIik6InZhbHVlIj09PWU/dC52YWx1ZT0iIjoic3R5bGUiPT09ZT8odC5z
dHlsZS5jc3NUZXh0PW51bGwsdC5yZW1vdmVBdHRyaWJ1dGUoInN0eWxlIikpOk10W2VdP0UoZSxu
dWxsLG51bGwsdCk6dC5yZW1vdmVBdHRyaWJ1dGUoZSl9ZnVuY3Rpb24gX2UoKXtUdD0hMSxQdC5j
bGVhcigpLEl0LmNsZWFyKCl9ZnVuY3Rpb24gTmUoZSx0LG4sbyl7dmFyIHI9ZS50eXBlLGk9ZS5r
ZXksbD1JdC5nZXQocik7aWYoIWYobCkpe3ZhciB1PW51bGw9PT1pP2wubm9uS2V5ZWQ6bC5rZXll
ZC5nZXQoaSk7aWYoIWYodSkpe3ZhciBhPXUucG9wKCk7aWYoIWYoYSkpcmV0dXJuIGllKGEsZSxu
dWxsLHQsbixvLCEwKSxlLmRvbX19cmV0dXJuIG51bGx9ZnVuY3Rpb24gYmUoZSl7dmFyIHQ9ZS50
eXBlLG49ZS5rZXksbz1JdC5nZXQodCk7aWYoZihvKSYmKG89e25vbktleWVkOltdLGtleWVkOm5l
dyBNYXB9LEl0LnNldCh0LG8pKSxjKG4pKW8ubm9uS2V5ZWQucHVzaChlKTtlbHNle3ZhciByPW8u
a2V5ZWQuZ2V0KG4pO2YocikmJihyPVtdLG8ua2V5ZWQuc2V0KG4scikpLHIucHVzaChlKX19ZnVu
Y3Rpb24ga2UoZSx0LG4sbyl7dmFyIHI9ZS50eXBlLGk9ZS5rZXksbD1QdC5nZXQocik7aWYoIWYo
bCkpe3ZhciB1PW51bGw9PT1pP2wubm9uS2V5ZWQ6bC5rZXllZC5nZXQoaSk7aWYoIWYodSkpe3Zh
ciBhPXUucG9wKCk7aWYoIWYoYSkpe3ZhciBjPWUuZmxhZ3MsZD11ZShhLGUsbnVsbCx0LG4sbyw0
JmMsITApO2lmKCFkKXJldHVybiBlLmRvbX19fXJldHVybiBudWxsfWZ1bmN0aW9uIHdlKGUpe3Zh
ciB0PWUudHlwZSxuPWUua2V5LG89ZS5yZWYscj1vJiYoby5vbkNvbXBvbmVudFdpbGxNb3VudHx8
by5vbkNvbXBvbmVudFdpbGxVbm1vdW50fHxvLm9uQ29tcG9uZW50RGlkTW91bnR8fG8ub25Db21w
b25lbnRXaWxsVXBkYXRlfHxvLm9uQ29tcG9uZW50RGlkVXBkYXRlKTtpZighcil7dmFyIGk9UHQu
Z2V0KHQpO2lmKGYoaSkmJihpPXtub25LZXllZDpbXSxrZXllZDpuZXcgTWFwfSxQdC5zZXQodCxp
KSksYyhuKSlpLm5vbktleWVkLnB1c2goZSk7ZWxzZXt2YXIgbD1pLmtleWVkLmdldChuKTtmKGwp
JiYobD1bXSxpLmtleWVkLnNldChuLGwpKSxsLnB1c2goZSl9fX1mdW5jdGlvbiBDZShlLHQsbixv
LHIpe3ZhciBpPWUuZmxhZ3M7cmV0dXJuIDM5NzAmaT94ZShlLHQsbixvLHIpOjI4Jmk/TWUoZSx0
LG4sbyxyLDQmaSk6NDA5NiZpP09lKGUsdCk6MSZpP1NlKGUsdCk6dm9pZCBwKCl9ZnVuY3Rpb24g
U2UoZSx0KXt2YXIgbj1kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShlLmNoaWxkcmVuKTtyZXR1cm4g
ZS5kb209bix0JiZMZSh0LG4pLG59ZnVuY3Rpb24gT2UoZSx0KXt2YXIgbj1kb2N1bWVudC5jcmVh
dGVUZXh0Tm9kZSgiIik7cmV0dXJuIGUuZG9tPW4sdCYmTGUodCxuKSxufWZ1bmN0aW9uIHhlKGUs
dCxvLHIsaSl7aWYoVHQpe3ZhciBsPU5lKGUsbyxyLGkpO2lmKCFjKGwpKXJldHVybiBjKHQpfHxM
ZSh0LGwpLGx9dmFyIHU9ZS50eXBlLGE9ZS5mbGFnczsoaXx8MTI4JmEpJiYoaT0hMCk7dmFyIGQ9
RmUodSxpKSxmPWUuY2hpbGRyZW4scz1lLnByb3BzLHA9ZS5ldmVudHMsdj1lLnJlZjtpZihlLmRv
bT1kLGMoZil8fChuKGYpP1JlKGQsZik6dnQoZik/VWUoZixkLG8scixpKTp3KGYpJiZDZShmLGQs
byxyLGkpKSwyJmF8fHooYSxlLGQpLCFjKHMpKWZvcih2YXIgaCBpbiBzKXBlKGgsbnVsbCxzW2hd
LGQsaSxvKTtpZighYyhwKSlmb3IodmFyIG0gaW4gcCloZShtLG51bGwscFttXSxkLG8pO3JldHVy
biBjKHYpfHxUZShkLHYsbyksYyh0KXx8TGUodCxkKSxkfWZ1bmN0aW9uIFVlKGUsdCxuLG8saSl7
Zm9yKHZhciBsPTA7bDxlLmxlbmd0aDtsKyspe3ZhciB1PWVbbF07cih1KXx8KHUuZG9tJiYoZVts
XT11PXYodSkpLENlKGVbbF0sdCxuLG8saSkpfX1mdW5jdGlvbiBNZShlLHQsbixvLHIsaSl7aWYo
VHQpe3ZhciBsPWtlKGUsbixvLHIpO2lmKCFjKGwpKXJldHVybiBjKHQpfHxMZSh0LGwpLGx9dmFy
IHUsYT1lLnR5cGUsZD1lLnByb3BzfHxodCxzPWUucmVmO2lmKGkpe3ZhciBwPWEuZGVmYXVsdFBy
b3BzO24uZmFzdFVubW91bnQ9ITEsZihwKXx8KFBlKHAsZCksZS5wcm9wcz1kKTt2YXIgdj1JZShl
LGEsZCxvLHIsbXQpLGg9di5fbGFzdElucHV0LG09bi5mYXN0VW5tb3VudDtuLmZhc3RVbm1vdW50
PSEwLHYuX3ZOb2RlPWUsZS5kb209dT1DZShoLG51bGwsbix2Ll9jaGlsZENvbnRleHQscik7dmFy
IGc9di5fbGlmZWN5Y2xlPW5ldyBfdDtnLmZhc3RVbm1vdW50PW4uZmFzdFVubW91bnQsbi5mYXN0
VW5tb3VudD1tLGModCl8fExlKHQsdSksRWUocyx2LG4pLGp0JiZEdC5zZXQodix1KSxlLmNoaWxk
cmVuPXZ9ZWxzZXt2YXIgeT1qZShlLGEsZCxvKTtlLmRvbT11PUNlKHksbnVsbCxuLG8sciksZS5j
aGlsZHJlbj15LFZlKHMsdSxuKSxjKHQpfHxMZSh0LHUpfXJldHVybiB1fWZ1bmN0aW9uIEVlKGUs
dCxuKXtlJiYoaShlKT9lKHQpOnAoKSksYyh0LmNvbXBvbmVudERpZE1vdW50KXx8bi5hZGRMaXN0
ZW5lcihmdW5jdGlvbigpe3QuY29tcG9uZW50RGlkTW91bnQoKX0pfWZ1bmN0aW9uIFZlKGUsdCxu
KXtlJiYobyhlLm9uQ29tcG9uZW50V2lsbE1vdW50KXx8KG4uZmFzdFVubW91bnQ9ITEsZS5vbkNv
bXBvbmVudFdpbGxNb3VudCgpKSxvKGUub25Db21wb25lbnREaWRNb3VudCl8fChuLmZhc3RVbm1v
dW50PSExLG4uYWRkTGlzdGVuZXIoZnVuY3Rpb24oKXtyZXR1cm4gZS5vbkNvbXBvbmVudERpZE1v
dW50KHQpfSkpKX1mdW5jdGlvbiBUZShlLHQsbil7aWYoaSh0KSluLmZhc3RVbm1vdW50PSExLG4u
YWRkTGlzdGVuZXIoZnVuY3Rpb24oKXtyZXR1cm4gdChlKX0pO2Vsc2V7aWYocih0KSlyZXR1cm47
cCgpfX1mdW5jdGlvbiBQZShlLHQpe2Zvcih2YXIgbiBpbiBlKWYodFtuXSkmJih0W25dPWVbbl0p
fWZ1bmN0aW9uIEllKGUsdCxuLGksbCx1KXtmKGkpJiYoaT17fSk7dmFyIGE9bmV3IHQobixpKTth
LmNvbnRleHQ9aSxhLnByb3BzPT09aHQmJihhLnByb3BzPW4pLGEuX3BhdGNoPW9lLGEuX2RldlRv
b2xzU3RhdHVzPXUsanQmJihhLl9jb21wb25lbnRUb0RPTU5vZGVNYXA9RHQpO3ZhciBjPWEuZ2V0
Q2hpbGRDb250ZXh0KCk7byhjKT9hLl9jaGlsZENvbnRleHQ9aTphLl9jaGlsZENvbnRleHQ9T2Jq
ZWN0LmFzc2lnbih7fSxpLGMpLGEuX3VubW91bnRlZD0hMSxhLl9wZW5kaW5nU2V0U3RhdGU9ITAs
YS5faXNTVkc9bCxhLmNvbXBvbmVudFdpbGxNb3VudCgpLGEuX2JlZm9yZVJlbmRlciYmYS5fYmVm
b3JlUmVuZGVyKCk7dmFyIGQ9YS5yZW5kZXIobixhLnN0YXRlLGkpO3JldHVybiBhLl9hZnRlclJl
bmRlciYmYS5fYWZ0ZXJSZW5kZXIoKSx2dChkKT9wKCk6cihkKT9kPWIoKTooZC5kb20mJihkPXYo
ZCkpLDI4JmQuZmxhZ3MmJihkLnBhcmVudFZOb2RlPWUpKSxhLl9wZW5kaW5nU2V0U3RhdGU9ITEs
YS5fbGFzdElucHV0PWQsYX1mdW5jdGlvbiBBZShlLHQsbixvLHIsaSxsKXtEZShuLENlKHQsbnVs
bCxvLHIsaSksZSxvLGwpfWZ1bmN0aW9uIERlKGUsdCxuLG8scil7dmFyIGk9ITE7Mjgmbi5mbGFn
cyYmKFgobixudWxsLG8sITEsITEsciksbj1uLmNoaWxkcmVuLl9sYXN0SW5wdXR8fG4uY2hpbGRy
ZW4saT0hMCksR2UoZSx0LG4uZG9tKSxYKG4sbnVsbCxvLCExLGkscil9ZnVuY3Rpb24gamUoZSx0
LG4sbyl7dmFyIGk9dChuLG8pO3JldHVybiB2dChpKT9wKCk6cihpKT9pPWIoKTooaS5kb20mJihp
PXYoaSkpLDI4JmkuZmxhZ3MmJihpLnBhcmVudFZOb2RlPWUpKSxpfWZ1bmN0aW9uIFJlKGUsdCl7
IiIhPT10P2UudGV4dENvbnRlbnQ9dDplLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHRO
b2RlKCIiKSl9ZnVuY3Rpb24gV2UoZSx0KXtlLmZpcnN0Q2hpbGQubm9kZVZhbHVlPXR9ZnVuY3Rp
b24gTGUoZSx0KXtlLmFwcGVuZENoaWxkKHQpfWZ1bmN0aW9uIEJlKGUsdCxuKXtvKG4pP0xlKGUs
dCk6ZS5pbnNlcnRCZWZvcmUodCxuKX1mdW5jdGlvbiBGZShlLHQpe3JldHVybiB0PT09ITA/ZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKGt0LGUpOmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoZSl9ZnVu
Y3Rpb24gSmUoZSx0LG4sbyxyLGksbCl7WChlLG51bGwsbywhMSwhMSxsKTt2YXIgdT1DZSh0LG51
bGwsbyxyLGkpO3QuZG9tPXUsR2Uobix1LGUuZG9tKX1mdW5jdGlvbiBHZShlLHQsbil7ZXx8KGU9
bi5wYXJlbnROb2RlKSxlLnJlcGxhY2VDaGlsZCh0LG4pfWZ1bmN0aW9uIEtlKGUsdCl7ZS5yZW1v
dmVDaGlsZCh0KX1mdW5jdGlvbiBxZShlLHQsbixvLHIpe2UudGV4dENvbnRlbnQ9IiIsbi5mYXN0
VW5tb3VudHx8SGUobnVsbCx0LG4sbyxyKX1mdW5jdGlvbiBIZShlLHQsbixvLGkpe2Zvcih2YXIg
bD0wO2w8dC5sZW5ndGg7bCsrKXt2YXIgdT10W2xdO3IodSl8fFgodSxlLG4sITAsbyxpKX19ZnVu
Y3Rpb24gWWUoZSx0KXtyZXR1cm4gdC5sZW5ndGgmJiFvKHRbMF0pJiYhbyh0WzBdLmtleSkmJmUu
bGVuZ3RoJiYhbyhlWzBdKSYmIW8oZVswXS5rZXkpfWZ1bmN0aW9uICRlKGUpe2Zvcih2YXIgdD1l
LmNoaWxkTm9kZXMsbj10Lmxlbmd0aCxvPTA7bzxuOyl7dmFyIHI9dFtvXTtpZig4PT09ci5ub2Rl
VHlwZSlpZigiISI9PT1yLmRhdGEpe3ZhciBpPWRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIiKTtl
LnJlcGxhY2VDaGlsZChpLHIpLG8rK31lbHNlIGUucmVtb3ZlQ2hpbGQociksbi0tO2Vsc2Ugbysr
fX1mdW5jdGlvbiB6ZShlLHQsbixvLHIsaSl7dmFyIGw9ZS50eXBlLHU9ZS5wcm9wc3x8e30sYT1l
LnJlZjtpZihlLmRvbT10LGkpe3ZhciBjPXQubmFtZXNwYWNlVVJJPT09a3QsZD1sLmRlZmF1bHRQ
cm9wcztuLmZhc3RVbm1vdW50PSExLGYoZCl8fChQZShkLHUpLGUucHJvcHM9dSk7dmFyIHM9SWUo
ZSxsLHUsbyxjLG10KSxwPXMuX2xhc3RJbnB1dCx2PW4uZmFzdFVubW91bnQ7bi5mYXN0VW5tb3Vu
dD0hMCxzLl92Q29tcG9uZW50PWUscy5fdk5vZGU9ZSx0dChwLHQsbixzLl9jaGlsZENvbnRleHQs
Yyk7dmFyIGg9cy5fbGlmZWN5Y2xlPW5ldyBfdDtoLmZhc3RVbm1vdW50PW4uZmFzdFVubW91bnQs
bi5mYXN0VW5tb3VudD12LEVlKGEscyxuKSxqdCYmRHQuc2V0KHMsdCksZS5jaGlsZHJlbj1zfWVs
c2V7dmFyIG09amUoZSxsLHUsbyk7dHQobSx0LG4sbyxyKSxlLmNoaWxkcmVuPW0sZS5kb209bS5k
b20sVmUoYSx0LG4pfX1mdW5jdGlvbiBYZShlLHQsbixvLHIpe3ZhciBpPWUudHlwZSxsPWUuY2hp
bGRyZW4sdT1lLnByb3BzLGE9ZS5ldmVudHMsYz1lLmZsYWdzO2lmKChyfHwxMjgmYykmJihyPSEw
KSwxIT09dC5ub2RlVHlwZXx8dC50YWdOYW1lLnRvTG93ZXJDYXNlKCkhPT1pKXt2YXIgZD14ZShl
LG51bGwsbixvLHIpO2UuZG9tPWQsR2UodC5wYXJlbnROb2RlLGQsdCl9ZWxzZXtlLmRvbT10LGwm
JlFlKGwsdCxuLG8sciksMiZjfHx6KGMsZSx0KTtmb3IodmFyIGYgaW4gdSlwZShmLG51bGwsdVtm
XSx0LHIsbik7Zm9yKHZhciBzIGluIGEpaGUocyxudWxsLGFbc10sdCxuKX19ZnVuY3Rpb24gUWUo
ZSx0LG4sbyxyKXskZSh0KTt2YXIgaT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0LmNoaWxk
Tm9kZXMpLGw9MDtpZih2dChlKSlmb3IodmFyIHU9MDt1PGUubGVuZ3RoO3UrKyl7dmFyIGE9ZVt1
XTtzKGEpJiYhYyhhKSYmdHQoYSxpW2wrK10sbixvLHIpfWVsc2UgcyhlKSYmdHQoZSx0LmZpcnN0
Q2hpbGQsbixvLHIpfWZ1bmN0aW9uIFplKGUsdCl7aWYoMz09PXQubm9kZVR5cGUpe3ZhciBuPVNl
KGUsbnVsbCk7ZS5kb209bixHZSh0LnBhcmVudE5vZGUsbix0KX1lbHNlIGUuZG9tPXR9ZnVuY3Rp
b24gZXQoZSx0KXtlLmRvbT10fWZ1bmN0aW9uIHR0KGUsdCxuLG8scil7dmFyIGk9ZS5mbGFnczty
ZXR1cm4gMjgmaT96ZShlLHQsbixvLHIsNCZpKTozOTcwJmk/WGUoZSx0LG4sbyxyKToxJmk/WmUo
ZSx0KTo0MDk2Jmk/ZXQoZSx0KTp2b2lkIHAoKX1mdW5jdGlvbiBudChlLHQsbil7cmV0dXJuISgh
dHx8MSE9PXQubm9kZVR5cGV8fCF0LmZpcnN0Q2hpbGQpJiYodHQoZSx0LmZpcnN0Q2hpbGQsbix7
fSwhMSksITApfWZ1bmN0aW9uIG90KCl7anQ9ITB9ZnVuY3Rpb24gcnQoZSl7anR8fHAoKTt2YXIg
dD1lJiZlLm5vZGVUeXBlP2U6bnVsbDtyZXR1cm4gRHQuZ2V0KGUpfHx0fWZ1bmN0aW9uIGl0KGUp
e2Zvcih2YXIgdD0wO3Q8QXQubGVuZ3RoO3QrKyl7dmFyIG49QXRbdF07aWYobi5kb209PT1lKXJl
dHVybiBufXJldHVybiBudWxsfWZ1bmN0aW9uIGx0KGUsdCxuKXtBdC5wdXNoKHtkb206ZSxpbnB1
dDp0LGxpZmVjeWNsZTpufSl9ZnVuY3Rpb24gdXQoZSl7Zm9yKHZhciB0PTA7dDxBdC5sZW5ndGg7
dCsrKWlmKEF0W3RdPT09ZSlyZXR1cm4gdm9pZCBBdC5zcGxpY2UodCwxKX1mdW5jdGlvbiBhdChl
LHQpe2lmKFJ0PT09dCYmcCgpLGUhPT1mdCl7dmFyIG49aXQodCk7aWYoYyhuKSl7dmFyIGk9bmV3
IF90O3IoZSl8fChlLmRvbSYmKGU9dihlKSksbnQoZSx0LGkpfHxDZShlLHQsaSx7fSwhMSksaS50
cmlnZ2VyKCksbHQodCxlLGkpKX1lbHNle3ZhciBsPW4ubGlmZWN5Y2xlO2wubGlzdGVuZXJzPVtd
LG8oZSk/KFgobi5pbnB1dCx0LGwsITEsITEsITEpLHV0KG4pKTooZS5kb20mJihlPXYoZSkpLG9l
KG4uaW5wdXQsZSx0LGwse30sITEsITEpKSxsLnRyaWdnZXIoKSxuLmlucHV0PWV9bXQuY29ubmVj
dGVkJiZVKHdpbmRvdyl9fWZ1bmN0aW9uIGN0KCl7dmFyIGU7cmV0dXJuIGZ1bmN0aW9uKHQsbil7
ZXx8KGU9dCksYXQobixlKX19ZnVuY3Rpb24gZHQoZSx0KXtyZXR1cm57ZGF0YTplLGV2ZW50OnR9
fXZhciBmdD0iJE5PX09QIixzdD0iYSBydW50aW1lIGVycm9yIG9jY3VyZWQhIFVzZSBJbmZlcm5v
IGluIGRldmVsb3BtZW50IGVudmlyb25tZW50IHRvIGZpbmQgdGhlIGVycm9yLiIscHQ9InVuZGVm
aW5lZCIhPXR5cGVvZiB3aW5kb3cmJndpbmRvdy5kb2N1bWVudCx2dD1BcnJheS5pc0FycmF5LGh0
PXt9LG10PXtjb25uZWN0ZWQ6ITF9LGd0PXtpZDowfSx5dD1uZXcgTWFwLF90PWZ1bmN0aW9uKCl7
dGhpcy5saXN0ZW5lcnM9W10sdGhpcy5mYXN0VW5tb3VudD0hMH07X3QucHJvdG90eXBlLmFkZExp
c3RlbmVyPWZ1bmN0aW9uKGUpe3RoaXMubGlzdGVuZXJzLnB1c2goZSl9LF90LnByb3RvdHlwZS50
cmlnZ2VyPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMsdD0wO3Q8dGhpcy5saXN0ZW5lcnMubGVu
Z3RoO3QrKyllLmxpc3RlbmVyc1t0XSgpfTt2YXIgTnQ9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiLGJ0PSJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiLGt0PSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsd3Q9e30sQ3Q9e30sU3Q9e30sT3Q9e30seHQ9e30sVXQ9
e3RleHRBbmNob3I6InRleHQtYW5jaG9yIn0sTXQ9e307TSgieGxpbms6aHJlZix4bGluazphcmNy
b2xlLHhsaW5rOmFjdHVhdGUseGxpbms6cm9sZSx4bGluazp0aXRsZWYseGxpbms6dHlwZSIsU3Qs
TnQpLE0oInhtbDpiYXNlLHhtbDpsYW5nLHhtbDpzcGFjZSIsU3QsYnQpLE0oInZvbHVtZSxkZWZh
dWx0VmFsdWUsZGVmYXVsdENoZWNrZWQiLHd0LCEwKSxNKCJjaGlsZHJlbixyZWYsa2V5LHNlbGVj
dGVkLGNoZWNrZWQsdmFsdWUsbXVsdGlwbGUiLHh0LCEwKSxNKCJvbkNsaWNrLG9uTW91c2VEb3du
LG9uTW91c2VVcCxvbk1vdXNlTW92ZSIsTXQsITApLE0oIm11dGVkLHNjb3BlZCxsb29wLG9wZW4s
Y2hlY2tlZCxkZWZhdWx0LGNhcHR1cmUsZGlzYWJsZWQscmVhZG9ubHkscmVxdWlyZWQsYXV0b3Bs
YXksY29udHJvbHMsc2VhbWxlc3MscmV2ZXJzZWQsYWxsb3dmdWxsc2NyZWVuLG5vdmFsaWRhdGUi
LEN0LCEwKSxNKCJhbmltYXRpb25JdGVyYXRpb25Db3VudCxib3JkZXJJbWFnZU91dHNldCxib3Jk
ZXJJbWFnZVNsaWNlLGJvcmRlckltYWdlV2lkdGgsYm94RmxleCxib3hGbGV4R3JvdXAsYm94T3Jk
aW5hbEdyb3VwLGNvbHVtbkNvdW50LGZsZXgsZmxleEdyb3csZmxleFBvc2l0aXZlLGZsZXhTaHJp
bmssZmxleE5lZ2F0aXZlLGZsZXhPcmRlcixncmlkUm93LGdyaWRDb2x1bW4sZm9udFdlaWdodCxs
aW5lQ2xhbXAsbGluZUhlaWdodCxvcGFjaXR5LG9yZGVyLG9ycGhhbnMsdGFiU2l6ZSx3aWRvd3Ms
ekluZGV4LHpvb20sZmlsbE9wYWNpdHksZmxvb2RPcGFjaXR5LHN0b3BPcGFjaXR5LHN0cm9rZURh
c2hhcnJheSxzdHJva2VEYXNob2Zmc2V0LHN0cm9rZU1pdGVybGltaXQsc3Ryb2tlT3BhY2l0eSxz
dHJva2VXaWR0aCwiLE90LCEwKTt2YXIgRXQ9bmV3IE1hcCxWdD1uZXcgTWFwLFR0PSEwLFB0PW5l
dyBNYXAsSXQ9bmV3IE1hcCxBdD1bXSxEdD1uZXcgTWFwLGp0PSExLFJ0PXB0P2RvY3VtZW50LmJv
ZHk6bnVsbDtwdCYmKHdpbmRvdy5wcm9jZXNzPXtlbnY6e05PREVfRU5WOiJkZXZlbG9wbWVudCJ9
fSx4KHdpbmRvdykpO3ZhciBXdD17bGlua0V2ZW50OmR0LGNyZWF0ZVZOb2RlOk4sY2xvbmVWTm9k
ZTp2LE5PX09QOmZ0LEVNUFRZX09CSjpodCxyZW5kZXI6YXQsZmluZERPTU5vZGU6cnQsY3JlYXRl
UmVuZGVyZXI6Y3QsZGlzYWJsZVJlY3ljbGluZzpfZSxlbmFibGVGaW5kRE9NTm9kZTpvdH07ZS5k
ZWZhdWx0PVd0LGUubGlua0V2ZW50PWR0LGUuY3JlYXRlVk5vZGU9TixlLmNsb25lVk5vZGU9dixl
Lk5PX09QPWZ0LGUuRU1QVFlfT0JKPWh0LGUucmVuZGVyPWF0LGUuZmluZERPTU5vZGU9cnQsZS5j
cmVhdGVSZW5kZXJlcj1jdCxlLmRpc2FibGVSZWN5Y2xpbmc9X2UsZS5lbmFibGVGaW5kRE9NTm9k
ZT1vdCxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9KX0s
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBvKGUpe3JldHVybiBlJiZlLl9f
ZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1mdW5jdGlvbiByKGUpe3ZhciB0PWUub25FbnRlcjtyZXR1
cm4gdS5kZWZhdWx0LmNyZWF0ZVZOb2RlKDIsImhlYWRlciIse2NsYXNzTmFtZToiaGVhZGVyIn0s
W3UuZGVmYXVsdC5jcmVhdGVWTm9kZSgyLCJoMSIsbnVsbCwidG9kb3MiKSx1LmRlZmF1bHQuY3Jl
YXRlVk5vZGUoNTEyLCJpbnB1dCIse2NsYXNzTmFtZToibmV3LXRvZG8iLGF1dG9mb2N1czohMCxh
dXRvY29tcGxldGU6Im9mZiIscGxhY2Vob2xkZXI6IldoYXQgbmVlZHMgdG8gYmUgZG9uZT8ifSxu
dWxsLHtvbmtleWRvd246dH0pXSl9ZnVuY3Rpb24gaShlKXt2YXIgdD1lLmxlZnQsbj1lLmRvbmUs
bz1lLnJvdXRlLHI9ZS5vbkNsZWFyO3JldHVybiB1LmRlZmF1bHQuY3JlYXRlVk5vZGUoMiwiZm9v
dGVyIix7Y2xhc3NOYW1lOiJmb290ZXIifSxbdS5kZWZhdWx0LmNyZWF0ZVZOb2RlKDIsInNwYW4i
LHtjbGFzc05hbWU6InRvZG8tY291bnQifSxbdS5kZWZhdWx0LmNyZWF0ZVZOb2RlKDIsInN0cm9u
ZyIsbnVsbCx0KSwiICIsdD4xPyJpdGVtcyI6Iml0ZW0iLCIgbGVmdCJdKSx1LmRlZmF1bHQuY3Jl
YXRlVk5vZGUoMiwidWwiLHtjbGFzc05hbWU6ImZpbHRlcnMifSxhLm1hcChmdW5jdGlvbihlKXt2
YXIgdD1lLmhhc2gsbj1lLm5hbWU7cmV0dXJuIHUuZGVmYXVsdC5jcmVhdGVWTm9kZSgyLCJsaSIs
bnVsbCx1LmRlZmF1bHQuY3JlYXRlVk5vZGUoMiwiYSIse2hyZWY6dCxjbGFzc05hbWU6bi50b0xv
d2VyQ2FzZSgpPT09bz8ic2VsZWN0ZWQiOiIifSxuKSl9KSksbj4wP3UuZGVmYXVsdC5jcmVhdGVW
Tm9kZSgyLCJidXR0b24iLHtjbGFzc05hbWU6ImNsZWFyLWNvbXBsZXRlZCJ9LCJDbGVhciBjb21w
bGV0ZWQiLHtvbkNsaWNrOnJ9KTpudWxsXSl9dC5fX2VzTW9kdWxlPSEwLHQubGlua3M9dm9pZCAw
LHQuSGVhZD1yLHQuRm9vdD1pO3ZhciBsPW4oMiksdT1vKGwpLGE9KG4oMSksdC5saW5rcz1be2hh
c2g6IiMvIixuYW1lOiJBbGwifSx7aGFzaDoiIy9hY3RpdmUiLG5hbWU6IkFjdGl2ZSJ9LHtoYXNo
OiIjL2NvbXBsZXRlZCIsbmFtZToiQ29tcGxldGVkIn1dKX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiBvKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDpl
fX1mdW5jdGlvbiByKGUsdCl7dmFyIG49e307Zm9yKHZhciBvIGluIGUpdC5pbmRleE9mKG8pPj0w
fHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxvKSYmKG5bb109ZVtvXSk7
cmV0dXJuIG59ZnVuY3Rpb24gaShlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBU
eXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIGwo
ZSx0KXtpZighZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5p
dGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiF0fHwib2JqZWN0
IiE9dHlwZW9mIHQmJiJmdW5jdGlvbiIhPXR5cGVvZiB0P2U6dH1mdW5jdGlvbiB1KGUsdCl7aWYo
ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVy
IGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIit0eXBl
b2YgdCk7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0
b3I6e3ZhbHVlOmUsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSks
dCYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx0KTplLl9f
cHJvdG9fXz10KX10Ll9fZXNNb2R1bGU9ITA7dmFyIGE9bigyKSxjPW8oYSksZD1uKDMpLGY9byhk
KSxzPW4oMSkscD1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KG4pe3ZhciBvPW4uZGF0YSx1PXIobixb
ImRhdGEiXSk7aSh0aGlzLHQpO3ZhciBhPWwodGhpcyxlLmNhbGwodGhpcyx1KSk7cmV0dXJuIHYu
Y2FsbChhKSxhLnRvZG89byxhLnN0YXRlPXt0ZXh0Om8udGl0bGV9LGEuZWRpdG9yPW51bGwsYX1y
ZXR1cm4gdSh0LGUpLHQucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMs
bz1lLmRvVG9nZ2xlLHI9ZS5kb0RlbGV0ZSxpPWUuZG9TYXZlLGw9ZS5vbkJsdXIsdT1lLm9uRm9j
dXMsYT10LnRleHQsZD10aGlzLnRvZG8sZj1kLnRpdGxlLHA9ZC5jb21wbGV0ZWQsdj1kLmVkaXRp
bmcsaD1bXTt2JiZoLnB1c2goImVkaXRpbmciKSxwJiZoLnB1c2goImNvbXBsZXRlZCIpO3ZhciBt
PWZ1bmN0aW9uKGUpe3JldHVybiBlLndoaWNoPT09cy5FU0NBUEU/bCgpOmUud2hpY2g9PT1zLkVO
VEVSP2koYSk6dm9pZCAwfSxnPWZ1bmN0aW9uKCl7cmV0dXJuIGkoYSl9LHk9ZnVuY3Rpb24oZSl7
cmV0dXJuIG4uc2V0VGV4dChlLnRhcmdldC52YWx1ZSl9O3JldHVybiBjLmRlZmF1bHQuY3JlYXRl
Vk5vZGUoMiwibGkiLHtjbGFzc05hbWU6aC5qb2luKCIgIil9LFtjLmRlZmF1bHQuY3JlYXRlVk5v
ZGUoMiwiZGl2Iix7Y2xhc3NOYW1lOiJ2aWV3In0sW2MuZGVmYXVsdC5jcmVhdGVWTm9kZSg1MTIs
ImlucHV0Iix7Y2xhc3NOYW1lOiJ0b2dnbGUiLHR5cGU6ImNoZWNrYm94IixjaGVja2VkOnB9LG51
bGwse29uQ2xpY2s6b30pLGMuZGVmYXVsdC5jcmVhdGVWTm9kZSgyLCJsYWJlbCIsbnVsbCxmLHtv
bmRibGNsaWNrOnV9KSxjLmRlZmF1bHQuY3JlYXRlVk5vZGUoMiwiYnV0dG9uIix7Y2xhc3NOYW1l
OiJkZXN0cm95In0sbnVsbCx7b25DbGljazpyfSldKSxjLmRlZmF1bHQuY3JlYXRlVk5vZGUoNTEy
LCJpbnB1dCIse2NsYXNzTmFtZToiZWRpdCIsdmFsdWU6diYmYX0sbnVsbCx7b25ibHVyOmcsb25p
bnB1dDp5LG9ua2V5ZG93bjptfSxudWxsLGZ1bmN0aW9uKGUpe24uZWRpdG9yPWV9KV0pfSx0fShm
LmRlZmF1bHQpLHY9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3RoaXMuY29tcG9uZW50V2lsbFJlY2Vp
dmVQcm9wcz1mdW5jdGlvbih0KXt2YXIgbj10LmRhdGE7cmV0dXJuIGUuc2V0VGV4dChuLnRpdGxl
KX0sdGhpcy5zaG91bGRDb21wb25lbnRVcGRhdGU9ZnVuY3Rpb24odCxuKXt2YXIgbz10LmRhdGEs
cj1uLnRleHQ7cmV0dXJuISgoMCxzLmlzRXF1YWwpKG8sZS50b2RvKSYmcj09PWUuc3RhdGUudGV4
dCl9LHRoaXMuY29tcG9uZW50V2lsbFVwZGF0ZT1mdW5jdGlvbih0KXt2YXIgbj10LmRhdGE7cmV0
dXJuIGUudG9kbz1ufSx0aGlzLmNvbXBvbmVudERpZFVwZGF0ZT1mdW5jdGlvbigpe3JldHVybiBl
LmVkaXRvci5mb2N1cygpfSx0aGlzLnNldFRleHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGUuc2V0U3Rh
dGUoe3RleHQ6dH0pfX07dC5kZWZhdWx0PXB9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gbyhlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3Io
IkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfXQuX19lc01vZHVsZT0hMDt2YXIg
cj1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5n
dGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciBvIGluIG4pT2JqZWN0LnByb3RvdHlw
ZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4sbykmJihlW29dPW5bb10pfXJldHVybiBlfSxpPW4oMSks
bD17fSx1PSJ0b2Rvcy1pbmZlcm5vIixhPWZ1bmN0aW9uIGUoKXt2YXIgdD10aGlzO28odGhpcyxl
KSx0aGlzLmdldD1mdW5jdGlvbigpe3JldHVybiB0LmRhdGE9SlNPTi5wYXJzZShsW3VdfHwiW10i
KX0sdGhpcy5zZXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHQuZGF0YT1lfHx0LmRhdGF8fFtdLGxbdV09
SlNPTi5zdHJpbmdpZnkodC5kYXRhKSx0LmRhdGF9LHRoaXMuYWRkPWZ1bmN0aW9uKGUpe3JldHVy
biB0LnNldCh0LmRhdGEuY29uY2F0KHt0aXRsZTplLGNvbXBsZXRlZDohMX0pKX0sdGhpcy5wdXQ9
ZnVuY3Rpb24oZSxuKXtyZXR1cm4gdC5zZXQodC5kYXRhLm1hcChmdW5jdGlvbih0KXtyZXR1cm4o
MCxpLmlzRXF1YWwpKHQsZSk/KDAsaS5hc3NpZ24pKGUsbik6dH0pKX0sdGhpcy5kZWw9ZnVuY3Rp
b24oZSl7cmV0dXJuIHQuc2V0KHQuZGF0YS5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuISgwLGku
aXNFcXVhbCkodCxlKX0pKX0sdGhpcy50b2dnbGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHQucHV0KGUs
e2NvbXBsZXRlZDohZS5jb21wbGV0ZWR9KX0sdGhpcy50b2dnbGVBbGw9ZnVuY3Rpb24oZSl7cmV0
dXJuIHQuc2V0KHQuZGF0YS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHIoe30sdCx7Y29tcGxldGVk
OmV9KX0pKX0sdGhpcy5jbGVhckNvbXBsZXRlZD1mdW5jdGlvbigpe3JldHVybiB0LnNldCh0LmRh
dGEuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmNvbXBsZXRlZH0pKX19O3QuZGVmYXVsdD1h
fSxmdW5jdGlvbihlLHQsbil7LyohCisgICAgICogaW5mZXJuby1jb21wb25lbnQgdjEuMC4wLWJl
dGEzMgorICAgICAqIChjKSAyMDE2IERvbWluaWMgR2FubmF3YXkKKyAgICAgKiBSZWxlYXNlZCB1
bmRlciB0aGUgTUlUIExpY2Vuc2UuCisgICAgICovCishZnVuY3Rpb24odCxvKXtlLmV4cG9ydHM9
byhuKDQpKX0odGhpcyxmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gdChlKXtyZXR1
cm4gbChlKXx8cihlKX1mdW5jdGlvbiBuKGUpe3JldHVybiByKGUpfHxlPT09ITF8fGkoZSl8fGwo
ZSl9ZnVuY3Rpb24gbyhlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZX1mdW5jdGlvbiByKGUp
e3JldHVybiBudWxsPT09ZX1mdW5jdGlvbiBpKGUpe3JldHVybiBlPT09ITB9ZnVuY3Rpb24gbChl
KXtyZXR1cm4gdm9pZCAwPT09ZX1mdW5jdGlvbiB1KGUpe3Rocm93IGV8fChlPXApLG5ldyBFcnJv
cigiSW5mZXJubyBFcnJvcjogIitlKX1mdW5jdGlvbiBhKGUsdCl7aWYoMjgmZS5mbGFncyl7dmFy
IG49ZS5wYXJlbnRWTm9kZTtuJiYobi5kb209dCxhKG4sdCkpfX1mdW5jdGlvbiBjKCl7cmV0dXJu
IGUuY3JlYXRlVk5vZGUoNDA5Nil9ZnVuY3Rpb24gZChlLHQsbil7dmFyIG89Zy5nZXQoZSk7b3x8
KG89W10sZy5zZXQoZSxvKSxQcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uKCl7cyhlLHQs
ZnVuY3Rpb24oKXtmb3IodmFyIGU9MDtlPG8ubGVuZ3RoO2UrKylvW2VdKCl9KSxnLmRlbGV0ZShl
KSxlLl9wcm9jZXNzaW5nU2V0U3RhdGU9ITF9KSksbiYmby5wdXNoKG4pfWZ1bmN0aW9uIGYoZSx0
LG4pe28odCkmJih0PXQoZS5zdGF0ZSkpO2Zvcih2YXIgciBpbiB0KWUuX3BlbmRpbmdTdGF0ZVty
XT10W3JdO2UuX3BlbmRpbmdTZXRTdGF0ZT8oZS5zdGF0ZT1PYmplY3QuYXNzaWduKHt9LGUuc3Rh
dGUsZS5fcGVuZGluZ1N0YXRlKSxlLl9wZW5kaW5nU3RhdGU9e30pOmUuX3Byb2Nlc3NpbmdTZXRT
dGF0ZXx8bj9kKGUsITEsbik6KGUuX3BlbmRpbmdTZXRTdGF0ZT0hMCxlLl9wcm9jZXNzaW5nU2V0
U3RhdGU9ITAscyhlLCExLG4pLGUuX3Byb2Nlc3NpbmdTZXRTdGF0ZT0hMSl9ZnVuY3Rpb24gcyhv
LHIsaSl7aWYoKCFvLl9kZWZlclNldFN0YXRlfHxyKSYmIW8uX2Jsb2NrUmVuZGVyKXtvLl9wZW5k
aW5nU2V0U3RhdGU9ITE7dmFyIGw9by5fcGVuZGluZ1N0YXRlLGQ9by5zdGF0ZSxmPU9iamVjdC5h
c3NpZ24oe30sZCxsKSxzPW8ucHJvcHMscD1vLmNvbnRleHQ7by5fcGVuZGluZ1N0YXRlPXt9O3Zh
ciBtPW8uX3VwZGF0ZUNvbXBvbmVudChkLGYscyxzLHAsciksZz0hMDtuKG0pP209YygpOnYobSk/
dSgpOm09PT1lLk5PX09QJiYobT1vLl9sYXN0SW5wdXQsZz0hMSk7dmFyIHk9by5fbGFzdElucHV0
LF89eS5kb20ucGFyZW50Tm9kZTtpZihvLl9sYXN0SW5wdXQ9bSxnKXt2YXIgTj1vLl9saWZlY3lj
bGU7Tj9OLmxpc3RlbmVycz1bXTpOPW5ldyBoLG8uX2xpZmVjeWNsZT1OO3ZhciBiPW8uZ2V0Q2hp
bGRDb250ZXh0KCk7Yj10KGIpP09iamVjdC5hc3NpZ24oe30scCxvLl9jaGlsZENvbnRleHQpOk9i
amVjdC5hc3NpZ24oe30scCxvLl9jaGlsZENvbnRleHQsYiksby5fcGF0Y2goeSxtLF8sTixiLG8u
X2lzU1ZHLCExKSxOLnRyaWdnZXIoKSxvLmNvbXBvbmVudERpZFVwZGF0ZShzLGQpfXZhciBrPW8u
X3ZOb2RlLHc9ay5kb209bS5kb20sQz1vLl9jb21wb25lbnRUb0RPTU5vZGVNYXA7QyYmQy5zZXQo
byxtLmRvbSksYShrLHcpLHQoaSl8fGkoKX19dmFyIHA9ImEgcnVudGltZSBlcnJvciBvY2N1cmVk
ISBVc2UgSW5mZXJubyBpbiBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCB0byBmaW5kIHRoZSBlcnJv
ci4iLHY9QXJyYXkuaXNBcnJheSxoPWZ1bmN0aW9uKCl7dGhpcy5saXN0ZW5lcnM9W10sdGhpcy5m
YXN0VW5tb3VudD0hMH07aC5wcm90b3R5cGUuYWRkTGlzdGVuZXI9ZnVuY3Rpb24oZSl7dGhpcy5s
aXN0ZW5lcnMucHVzaChlKX0saC5wcm90b3R5cGUudHJpZ2dlcj1mdW5jdGlvbigpe2Zvcih2YXIg
ZT10aGlzLHQ9MDt0PHRoaXMubGlzdGVuZXJzLmxlbmd0aDt0KyspZS5saXN0ZW5lcnNbdF0oKX07
dmFyIG09cCxnPW5ldyBNYXAseT1mdW5jdGlvbih0LG4pe3RoaXMuc3RhdGU9e30sdGhpcy5yZWZz
PXt9LHRoaXMuX3Byb2Nlc3NpbmdTZXRTdGF0ZT0hMSx0aGlzLl9ibG9ja1JlbmRlcj0hMSx0aGlz
Ll9pZ25vcmVTZXRTdGF0ZT0hMSx0aGlzLl9ibG9ja1NldFN0YXRlPSExLHRoaXMuX2RlZmVyU2V0
U3RhdGU9ITEsdGhpcy5fcGVuZGluZ1NldFN0YXRlPSExLHRoaXMuX3BlbmRpbmdTdGF0ZT17fSx0
aGlzLl9sYXN0SW5wdXQ9bnVsbCx0aGlzLl92Tm9kZT1udWxsLHRoaXMuX3VubW91bnRlZD0hMCx0
aGlzLl9kZXZUb29sc1N0YXR1cz1udWxsLHRoaXMuX2RldlRvb2xzSWQ9bnVsbCx0aGlzLl9saWZl
Y3ljbGU9bnVsbCx0aGlzLl9jaGlsZENvbnRleHQ9bnVsbCx0aGlzLl9wYXRjaD1udWxsLHRoaXMu
X2lzU1ZHPSExLHRoaXMuX2NvbXBvbmVudFRvRE9NTm9kZU1hcD1udWxsLHRoaXMucHJvcHM9dHx8
ZS5FTVBUWV9PQkosdGhpcy5jb250ZXh0PW58fHt9LHRoaXMuY29tcG9uZW50RGlkTW91bnR8fCh0
aGlzLmNvbXBvbmVudERpZE1vdW50PW51bGwpfTtyZXR1cm4geS5wcm90b3R5cGUucmVuZGVyPWZ1
bmN0aW9uKGUsdCxuKXt9LHkucHJvdG90eXBlLmZvcmNlVXBkYXRlPWZ1bmN0aW9uKGUpe2lmKHRo
aXMuX3VubW91bnRlZCl0aHJvdyBFcnJvcihtKTtzKHRoaXMsITAsZSl9LHkucHJvdG90eXBlLnNl
dFN0YXRlPWZ1bmN0aW9uKGUsdCl7aWYodGhpcy5fdW5tb3VudGVkKXRocm93IEVycm9yKG0pO3Ro
aXMuX2Jsb2NrU2V0U3RhdGU/dSgpOnRoaXMuX2lnbm9yZVNldFN0YXRlfHxmKHRoaXMsZSx0KX0s
eS5wcm90b3R5cGUuY29tcG9uZW50V2lsbE1vdW50PWZ1bmN0aW9uKCl7fSx5LnByb3RvdHlwZS5j
b21wb25lbnREaWRNb3VudD1mdW5jdGlvbigpe30seS5wcm90b3R5cGUuY29tcG9uZW50V2lsbFVu
bW91bnQ9ZnVuY3Rpb24oKXt9LHkucHJvdG90eXBlLmNvbXBvbmVudERpZFVwZGF0ZT1mdW5jdGlv
bihlLHQsbil7fSx5LnByb3RvdHlwZS5zaG91bGRDb21wb25lbnRVcGRhdGU9ZnVuY3Rpb24oZSx0
LG4pe3JldHVybiEwfSx5LnByb3RvdHlwZS5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzPWZ1bmN0
aW9uKGUsdCl7fSx5LnByb3RvdHlwZS5jb21wb25lbnRXaWxsVXBkYXRlPWZ1bmN0aW9uKGUsdCxu
KXt9LHkucHJvdG90eXBlLmdldENoaWxkQ29udGV4dD1mdW5jdGlvbigpe30seS5wcm90b3R5cGUu
X3VwZGF0ZUNvbXBvbmVudD1mdW5jdGlvbih0LG4sbyxyLGksbCl7aWYodGhpcy5fdW5tb3VudGVk
PT09ITAmJnUoKSxvIT09cnx8cj09PWUuRU1QVFlfT0JKfHx0IT09bnx8bCl7bz09PXImJnIhPT1l
LkVNUFRZX09CSnx8KHRoaXMuX2Jsb2NrUmVuZGVyPSEwLHRoaXMuY29tcG9uZW50V2lsbFJlY2Vp
dmVQcm9wcyhyLGkpLHRoaXMuX2Jsb2NrUmVuZGVyPSExLHRoaXMuX3BlbmRpbmdTZXRTdGF0ZSYm
KG49T2JqZWN0LmFzc2lnbih7fSxuLHRoaXMuX3BlbmRpbmdTdGF0ZSksdGhpcy5fcGVuZGluZ1Nl
dFN0YXRlPSExLHRoaXMuX3BlbmRpbmdTdGF0ZT17fSkpO3ZhciBhPXRoaXMuc2hvdWxkQ29tcG9u
ZW50VXBkYXRlKHIsbixpKTtpZihhIT09ITF8fGwpe3RoaXMuX2Jsb2NrU2V0U3RhdGU9ITAsdGhp
cy5jb21wb25lbnRXaWxsVXBkYXRlKHIsbixpKSx0aGlzLl9ibG9ja1NldFN0YXRlPSExLHRoaXMu
cHJvcHM9cjt2YXIgYz10aGlzLnN0YXRlPW47dGhpcy5jb250ZXh0PWksdGhpcy5fYmVmb3JlUmVu
ZGVyJiZ0aGlzLl9iZWZvcmVSZW5kZXIoKTt2YXIgZD10aGlzLnJlbmRlcihyLGMsaSk7cmV0dXJu
IHRoaXMuX2FmdGVyUmVuZGVyJiZ0aGlzLl9hZnRlclJlbmRlcigpLGR9fXJldHVybiBlLk5PX09Q
fSx5fSl9XSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvaW5mZXJuby9pbmRleC5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvaW5mZXJuby9pbmRleC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmZjNTc2NWFjMjhkYzFjZGQwOTAzZDM2MzhlZTczNzliYTgxNDJmMWUKLS0t
IC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9pbmZlcm5vL2luZGV4Lmh0bWwKQEAgLTAsMCAr
MSwxOSBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbCBsYW5nPSJlbiIgZGF0YS1mcmFtZXdvcms9
ImluZmVybm8iPgorICAgIDxoZWFkPgorICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cisg
ICAgICAgIDx0aXRsZT5JbmZlcm5vIOKAoiBUb2RvTVZDPC90aXRsZT4KKyAgICAgICAgPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSJub2RlX21vZHVsZXMvdG9kb212Yy1jb21tb24vYmFzZS5j
c3MiPgorICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Im5vZGVfbW9kdWxlcy90
b2RvbXZjLWFwcC1jc3MvaW5kZXguY3NzIj4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAg
ICAgIDxzZWN0aW9uIGlkPSJhcHAiIGNsYXNzPSJ0b2RvYXBwIj48L3NlY3Rpb24+CisgICAgICAg
IDxmb290ZXIgY2xhc3M9ImluZm8iPgorICAgICAgICAgICAgPHA+RG91YmxlLWNsaWNrIHRvIGVk
aXQgYSB0b2RvPC9wPgorICAgICAgICAgICAgPHA+Q3JlYXRlZCBieSA8YSBocmVmPSJodHRwOi8v
Z2l0aHViLmNvbS9sdWtlZWQvIj5MdWtlIEVkd2FyZHM8L2E+PC9wPgorICAgICAgICAgICAgPHA+
UGFydCBvZiA8YSBocmVmPSJodHRwOi8vdG9kb212Yy5jb20iPlRvZG9NVkM8L2E+PC9wPgorICAg
ICAgICA8L2Zvb3Rlcj4KKworICAgICAgICA8c2NyaXB0IHNyYz0iZGlzdC9idW5kbGUuanMiPjwv
c2NyaXB0PgorICAgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2lu
ZmVybm8vcGFja2FnZS5qc29uIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvaW5mZXJuby9wYWNrYWdlLmpzb24KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMDc1ZWQ1MjdiMGE3M2VhNWJjM2FkNzE3ZjhlOTgwNTE4NDY5OWVjNQotLS0gL2Rl
di9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2luZmVybm8vcGFja2FnZS5qc29uCkBAIC0wLDAgKzEs
MjQgQEAKK3sKKyAgInByaXZhdGUiOiB0cnVlLAorICAic2NyaXB0cyI6IHsKKyAgICAiZGV2Ijog
IndlYnBhY2stZGV2LXNlcnZlciIsCisgICAgImJ1aWxkIjogIndlYnBhY2sgLXAiLAorICAgICJ0
ZXN0IjogImNkIHRlc3QgJiYgbnBtIHRlc3QiCisgIH0sCisgICJkZXBlbmRlbmNpZXMiOiB7Cisg
ICAgImluZmVybm8iOiAiYmV0YTMyIiwKKyAgICAiaW5mZXJuby1jb21wb25lbnQiOiAiYmV0YTMy
IiwKKyAgICAidG9kb212Yy1hcHAtY3NzIjogIl4yLjAuMCIsCisgICAgInRvZG9tdmMtY29tbW9u
IjogIl4xLjAuMCIKKyAgfSwKKyAgImRldkRlcGVuZGVuY2llcyI6IHsKKyAgICAiYmFiZWwtY29y
ZSI6ICJeNi41LjIiLAorICAgICJiYWJlbC1sb2FkZXIiOiAiXjYuMi4xIiwKKyAgICAiYmFiZWwt
cGx1Z2luLWluZmVybm8iOiAiYmV0YTEzIiwKKyAgICAiYmFiZWwtcHJlc2V0LWVzMjAxNSI6ICJe
Ni41LjAiLAorICAgICJiYWJlbC1wcmVzZXQtZXMyMDE1LWxvb3NlIjogIl43LjAuMCIsCisgICAg
ImJhYmVsLXByZXNldC1zdGFnZS0wIjogIl42LjUuMCIsCisgICAgIndlYnBhY2siOiAiXjEuMTIu
MTQiLAorICAgICJ3ZWJwYWNrLWRldi1zZXJ2ZXIiOiAiXjEuMTQuMSIKKyAgfQorfQpkaWZmIC0t
Z2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvaW5mZXJuby9zcmMvYmFzZS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2luZmVy
bm8vc3JjL2Jhc2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODlhMmNhMzBjOGI0OTI0ZmNhZDIzZTc3OTNlMTgw
ZGRjNTkxODU5YgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2luZmVybm8vc3JjL2Jh
c2UuanMKQEAgLTAsMCArMSw0OSBAQAoraW1wb3J0IEluZmVybm8gZnJvbSAnaW5mZXJubyc7Citp
bXBvcnQgeyBzdGF0ZXMgfSBmcm9tICcuL3NoYXJlJzsKKworLyoqCisgKiBTdGF0ZWxlc3MgSGVh
ZGVyIGNvbXBvbmVudAorICovCitleHBvcnQgZnVuY3Rpb24gSGVhZCh7b25FbnRlcn0pIHsKKyAg
ICByZXR1cm4gKAorICAgICAgICA8aGVhZGVyIGNsYXNzTmFtZT0iaGVhZGVyIj4KKyAgICAgICAg
ICAgIDxoMT50b2RvczwvaDE+CisgICAgICAgICAgICA8aW5wdXQgY2xhc3NOYW1lPSJuZXctdG9k
byIgYXV0b2ZvY3VzIG9ua2V5ZG93bj17IG9uRW50ZXIgfQorICAgICAgICAgICAgICAgIGF1dG9j
b21wbGV0ZT0ib2ZmIiBwbGFjZWhvbGRlcj0iV2hhdCBuZWVkcyB0byBiZSBkb25lPyIKKyAgICAg
ICAgICAgIC8+CisgICAgICAgIDwvaGVhZGVyPgorICAgICk7Cit9CisKK2V4cG9ydCBjb25zdCBs
aW5rcyA9IFsKKyAgICB7aGFzaDogJyMvJywgbmFtZTogJ0FsbCd9LAorICAgIHtoYXNoOiAnIy9h
Y3RpdmUnLCBuYW1lOiAnQWN0aXZlJ30sCisgICAge2hhc2g6ICcjL2NvbXBsZXRlZCcsIG5hbWU6
ICdDb21wbGV0ZWQnfQorXTsKKworLyoqCisgKiBTdGF0ZWxlc3MgRm9vdGVyIGNvbXBvbmVudAor
ICovCitleHBvcnQgZnVuY3Rpb24gRm9vdCh7bGVmdCwgZG9uZSwgcm91dGUsIG9uQ2xlYXJ9KSB7
CisgICAgcmV0dXJuICgKKyAgICAgICAgPGZvb3RlciBjbGFzc05hbWU9ImZvb3RlciI+CisgICAg
ICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPSJ0b2RvLWNvdW50Ij4KKyAgICAgICAgICAgICAg
ICAgICAgPHN0cm9uZz57IGxlZnQgfTwvc3Ryb25nPiB7IGxlZnQgPiAxID8gJ2l0ZW1zJyA6ICdp
dGVtJyB9IGxlZnQKKyAgICAgICAgICAgICAgICA8L3NwYW4+CisgICAgICAgICAgICAgICAgPHVs
IGNsYXNzTmFtZT0iZmlsdGVycyI+CisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGxpbmtzLm1hcCgoe2hhc2gsIG5hbWV9KSA9PiAoCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPGxpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBo
cmVmPXsgaGFzaCB9IGNsYXNzTmFtZT17IG5hbWUudG9Mb3dlckNhc2UoKSA9PT0gcm91dGUgPyAn
c2VsZWN0ZWQnIDogJycgfT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsg
bmFtZSB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgKSkKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAg
eyBkb25lID4gMCA/ICgKKyAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9ImNs
ZWFyLWNvbXBsZXRlZCIgb25DbGljaz17IG9uQ2xlYXIgfT5DbGVhciBjb21wbGV0ZWQ8L2J1dHRv
bj4KKyAgICAgICAgICAgICAgICApIDogbnVsbCB9CisgICAgICAgICAgICA8L2Zvb3Rlcj4KKyAg
ICApOworfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvaW5mZXJuby9zcmMvaW5kZXguanMgYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9pbmZlcm5vL3NyYy9pbmRleC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NzQxNGMwYjM4NzE5
MTlhNzM5OTk2OGM2ZmIxMmQ3YWViMWQyMzM5Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvaW5mZXJuby9zcmMvaW5kZXguanMKQEAgLTAsMCArMSwxMTIgQEAKK2ltcG9ydCBJbmZlcm5v
IGZyb20gJ2luZmVybm8nOworaW1wb3J0IENvbXBvbmVudCBmcm9tICdpbmZlcm5vLWNvbXBvbmVu
dCc7CitpbXBvcnQgeyBFTlRFUiwgZmlsdGVycywgcmVhZCB9IGZyb20gJy4vc2hhcmUnOworaW1w
b3J0IHsgSGVhZCwgRm9vdCB9IGZyb20gJy4vYmFzZSc7CitpbXBvcnQgTW9kZWwgZnJvbSAnLi9t
b2RlbCc7CitpbXBvcnQgSXRlbSBmcm9tICcuL2l0ZW0nOworCitjb25zdCB7IHJlbmRlciB9ID0g
SW5mZXJubzsKK2NvbnN0IG1vZGVsID0gbmV3IE1vZGVsKCk7CisKK2NsYXNzIEFwcCBleHRlbmRz
IENvbXBvbmVudCB7CisgICAgc3RhdGUgPSB7CisgICAgICAgIHJvdXRlOiByZWFkKCksCisgICAg
ICAgIHRvZG9zOiBtb2RlbC5nZXQoKQorICAgIH07CisKKyAgICB1cGRhdGUgPSBhcnIgPT4gdGhp
cy5zZXRTdGF0ZSh7dG9kb3M6IGFycn0pOworCisgICAgY29tcG9uZW50V2lsbE1vdW50ID0gKCkg
PT4geworICAgICAgICB3aW5kb3cub25oYXNoY2hhbmdlID0gKCkgPT4gdGhpcy5zZXRTdGF0ZSh7
cm91dGU6IHJlYWQoKX0pOworICAgIH07CisKKyAgICBhZGQgPSBlID0+IHsKKyAgICAgICAgaWYg
KGUud2hpY2ggIT09IEVOVEVSKSByZXR1cm47CisKKyAgICAgICAgY29uc3QgdmFsID0gZS50YXJn
ZXQudmFsdWUudHJpbSgpOworICAgICAgICBpZiAoIXZhbCkgcmV0dXJuOworCisgICAgICAgIGUu
dGFyZ2V0LnZhbHVlID0gJyc7CisgICAgICAgIHRoaXMudXBkYXRlKAorICAgICAgICAgICAgbW9k
ZWwuYWRkKHZhbCkKKyAgICAgICAgKTsKKyAgICB9OworCisgICAgZWRpdCA9ICh0b2RvLCB2YWwp
ID0+IHsKKyAgICAgICAgdmFsID0gdmFsLnRyaW0oKTsKKyAgICAgICAgaWYgKHZhbC5sZW5ndGgp
IHsKKyAgICAgICAgICAgIHRoaXMudXBkYXRlKAorICAgICAgICAgICAgICAgIG1vZGVsLnB1dCh0
b2RvLCB7dGl0bGU6IHZhbCwgZWRpdGluZzogMH0pCisgICAgICAgICAgICApOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgdGhpcy5yZW1vdmUodG9kbyk7CisgICAgICAgIH0KKyAgICB9
OworCisgICAgZm9jdXMgPSB0b2RvID0+IHRoaXMudXBkYXRlKAorICAgICAgICBtb2RlbC5wdXQo
dG9kbywge2VkaXRpbmc6IDF9KQorICAgICk7CisKKyAgICBibHVyID0gdG9kbyA9PiB0aGlzLnVw
ZGF0ZSgKKyAgICAgICAgbW9kZWwucHV0KHRvZG8sIHtlZGl0aW5nOiAwfSkKKyAgICApOworCisg
ICAgcmVtb3ZlID0gdG9kbyA9PiB0aGlzLnVwZGF0ZSgKKyAgICAgICAgbW9kZWwuZGVsKHRvZG8p
CisgICAgKTsKKworICAgIHRvZ2dsZU9uZSA9IHRvZG8gPT4gdGhpcy51cGRhdGUoCisgICAgICAg
IG1vZGVsLnRvZ2dsZSh0b2RvKQorICAgICk7CisKKyAgICB0b2dnbGVBbGwgPSBldiA9PiB0aGlz
LnVwZGF0ZSgKKyAgICAgICAgbW9kZWwudG9nZ2xlQWxsKGV2LnRhcmdldC5jaGVja2VkKQorICAg
ICk7CisKKyAgICBjbGVhckNvbXBsZXRlZCA9ICgpID0+IHRoaXMudXBkYXRlKAorICAgICAgICBt
b2RlbC5jbGVhckNvbXBsZXRlZCgpCisgICAgKTsKKworICAgIHJlbmRlcihfLCB7dG9kb3MsIHJv
dXRlfSkgeworICAgICAgICBjb25zdCBudW0gPSB0b2Rvcy5sZW5ndGg7CisgICAgICAgIGNvbnN0
IHNob3duID0gdG9kb3MuZmlsdGVyKGZpbHRlcnNbcm91dGVdKTsKKyAgICAgICAgY29uc3QgbnVt
RG9uZSA9IHRvZG9zLmZpbHRlcihmaWx0ZXJzLmNvbXBsZXRlZCkubGVuZ3RoOworICAgICAgICBj
b25zdCBudW1BY3QgPSBudW0gLSBudW1Eb25lOworCisgICAgICAgIHJldHVybiAoCisgICAgICAg
ICAgICA8ZGl2PgorICAgICAgICAgICAgICAgIDxIZWFkIG9uRW50ZXI9eyB0aGlzLmFkZCB9IC8+
CisKKyAgICAgICAgICAgICAgICB7IG51bSA/ICgKKyAgICAgICAgICAgICAgICAgICAgPHNlY3Rp
b24gY2xhc3NOYW1lPSJtYWluIj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFz
c05hbWU9InRvZ2dsZS1hbGwiIHR5cGU9ImNoZWNrYm94IgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG9uQ2xpY2s9eyB0aGlzLnRvZ2dsZUFsbCB9IGNoZWNrZWQ9eyBudW1BY3QgPT09IDAg
fQorICAgICAgICAgICAgICAgICAgICAgICAgLz4KKworICAgICAgICAgICAgICAgICAgICAgICAg
PHVsIGNsYXNzTmFtZT0idG9kby1saXN0Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3duLm1hcCh0ID0+CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBkYXRhPXt0fQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cj17ICgpID0+IHRoaXMuYmx1cih0KSB9
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Gb2N1cz17ICgpID0+
IHRoaXMuZm9jdXModCkgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRvRGVsZXRlPXsgKCkgPT4gdGhpcy5yZW1vdmUodCkgfQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRvU2F2ZT17IHZhbCA9PiB0aGlzLmVkaXQodCwgdmFsKSB9Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9Ub2dnbGU9eyAoKSA9PiB0
aGlzLnRvZ2dsZU9uZSh0KSB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAg
ICAgICAgPC9zZWN0aW9uPgorICAgICAgICAgICAgICAgICkgOiBudWxsIH0KKworICAgICAgICAg
ICAgICAgIHsgKG51bUFjdCB8fCBudW1Eb25lKSA/ICgKKyAgICAgICAgICAgICAgICAgICAgPEZv
b3Qgb25DbGVhcj17IHRoaXMuY2xlYXJDb21wbGV0ZWQgfQorICAgICAgICAgICAgICAgICAgICAg
ICAgbGVmdD17bnVtQWN0fSBkb25lPXtudW1Eb25lfSByb3V0ZT17cm91dGV9CisgICAgICAgICAg
ICAgICAgICAgIC8+CisgICAgICAgICAgICAgICAgKSA6IG51bGwgfQorICAgICAgICAgICAgPC9k
aXY+CisgICAgICAgICkKKyAgICB9Cit9CisKK3JlbmRlcig8QXBwIC8+LCBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnYXBwJykpOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvaW5mZXJuby9zcmMv
aXRlbS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2luZmVybm8vc3JjL2l0ZW0uanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTdm
OGIxZDBlOGIwOTBiOTZjNjg1YTk3MTEwODlkOWRjMDAzODNkOAotLS0gL2Rldi9udWxsCisrKyBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2luZmVybm8vc3JjL2l0ZW0uanMKQEAgLTAsMCArMSw1OCBAQAoraW1wb3J0
IEluZmVybm8gZnJvbSAnaW5mZXJubyc7CitpbXBvcnQgQ29tcG9uZW50IGZyb20gJ2luZmVybm8t
Y29tcG9uZW50JzsKK2ltcG9ydCB7IEVTQ0FQRSwgRU5URVIsIGlzRXF1YWwgfSBmcm9tICcuL3No
YXJlJzsKKworZXhwb3J0IGRlZmF1bHQgY2xhc3MgSXRlbSBleHRlbmRzIENvbXBvbmVudCB7Cisg
ICAgY29uc3RydWN0b3Ioe2RhdGEsIC4uLnByb3BzfSkgeworICAgICAgICBzdXBlcihwcm9wcyk7
CisgICAgICAgIHRoaXMudG9kbyA9IGRhdGE7CisgICAgICAgIHRoaXMuc3RhdGUgPSB7dGV4dDog
ZGF0YS50aXRsZX07CisgICAgICAgIHRoaXMuZWRpdG9yID0gbnVsbDsKKyAgICB9CisKKyAgICBj
b21wb25lbnRXaWxsUmVjZWl2ZVByb3BzID0gKHtkYXRhfSkgPT4gdGhpcy5zZXRUZXh0KGRhdGEu
dGl0bGUpOworICAgIHNob3VsZENvbXBvbmVudFVwZGF0ZSA9ICh7ZGF0YX0sIHt0ZXh0fSkgPT4g
IShpc0VxdWFsKGRhdGEsIHRoaXMudG9kbykgJiYgdGV4dCA9PT0gdGhpcy5zdGF0ZS50ZXh0KTsK
KyAgICBjb21wb25lbnRXaWxsVXBkYXRlID0gKHtkYXRhfSkgPT4gKHRoaXMudG9kbyA9IGRhdGEp
OworICAgIGNvbXBvbmVudERpZFVwZGF0ZSA9ICgpID0+IHRoaXMuZWRpdG9yLmZvY3VzKCk7CisK
KyAgICBzZXRUZXh0ID0gdGV4dCA9PiB0aGlzLnNldFN0YXRlKHt0ZXh0fSk7CisKKyAgICByZW5k
ZXIoe2RvVG9nZ2xlLCBkb0RlbGV0ZSwgZG9TYXZlLCBvbkJsdXIsIG9uRm9jdXN9LCB7dGV4dH0p
IHsKKyAgICAgICAgY29uc3Qge3RpdGxlLCBjb21wbGV0ZWQsIGVkaXRpbmd9ID0gdGhpcy50b2Rv
OworCisgICAgICAgIGNvbnN0IGNscyA9IFtdOworICAgICAgICBlZGl0aW5nICYmIGNscy5wdXNo
KCdlZGl0aW5nJyk7CisgICAgICAgIGNvbXBsZXRlZCAmJiBjbHMucHVzaCgnY29tcGxldGVkJyk7
CisKKyAgICAgICAgY29uc3QgaGFuZGxlS2V5ZG93biA9IGUgPT4geworICAgICAgICAgICAgaWYg
KGUud2hpY2ggPT09IEVTQ0FQRSkgcmV0dXJuIG9uQmx1cigpOworICAgICAgICAgICAgaWYgKGUu
d2hpY2ggPT09IEVOVEVSKSByZXR1cm4gZG9TYXZlKHRleHQpOworICAgICAgICB9OworCisgICAg
ICAgIC8vIHRtcCBmaXgKKyAgICAgICAgY29uc3QgaGFuZGxlQmx1ciA9ICgpID0+IGRvU2F2ZSh0
ZXh0KTsKKyAgICAgICAgY29uc3QgaGFuZGxlSW5wdXQgPSBlID0+IHRoaXMuc2V0VGV4dChlLnRh
cmdldC52YWx1ZSk7CisKKyAgICAgICAgcmV0dXJuICgKKyAgICAgICAgICAgIDxsaSBjbGFzc05h
bWU9eyBjbHMuam9pbignICcpIH0+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9InZp
ZXciPgorICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3NOYW1lPSJ0b2dnbGUiIHR5cGU9
ImNoZWNrYm94IgorICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17IGNvbXBsZXRlZCB9
IG9uQ2xpY2s9eyBkb1RvZ2dsZSB9CisgICAgICAgICAgICAgICAgICAgIC8+CisKKyAgICAgICAg
ICAgICAgICAgICAgPGxhYmVsIG9uZGJsY2xpY2s9eyBvbkZvY3VzIH0+eyB0aXRsZSB9PC9sYWJl
bD4KKworICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT0iZGVzdHJveSIgb25D
bGljaz17IGRvRGVsZXRlIH0+PC9idXR0b24+CisgICAgICAgICAgICAgICAgPC9kaXY+CisKKyAg
ICAgICAgICAgICAgICA8aW5wdXQgY2xhc3NOYW1lPSJlZGl0IgorICAgICAgICAgICAgICAgICAg
ICByZWY9e2VsID0+IHsgdGhpcy5lZGl0b3IgPSBlbCB9fQorICAgICAgICAgICAgICAgICAgICB2
YWx1ZT17IGVkaXRpbmcgJiYgdGV4dCB9CisgICAgICAgICAgICAgICAgICAgIG9uYmx1cj17IGhh
bmRsZUJsdXIgfQorICAgICAgICAgICAgICAgICAgICBvbmlucHV0PXsgaGFuZGxlSW5wdXQgfQor
ICAgICAgICAgICAgICAgICAgICBvbmtleWRvd249eyBoYW5kbGVLZXlkb3duIH0KKyAgICAgICAg
ICAgICAgICAvPgorICAgICAgICAgICAgPC9saT4KKyAgICAgICAgKTsKKyAgICB9Cit9CmRpZmYg
LS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9pbmZlcm5vL3NyYy9tb2RlbC5qcyBiL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2lu
ZmVybm8vc3JjL21vZGVsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUyZWFmNDY2MzVhZGNiNzNlZmU1OWQ1ZThk
ZWI0MGUxNWQ3NDA2MjQKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9pbmZlcm5vL3Ny
Yy9tb2RlbC5qcwpAQCAtMCwwICsxLDM2IEBACitpbXBvcnQgeyBhc3NpZ24sIGlzRXF1YWwgfSBm
cm9tICcuL3NoYXJlJzsKKworY29uc3QgU1RPUiA9IHt9OworY29uc3QgU1RPUl9JRCA9ICd0b2Rv
cy1pbmZlcm5vJzsKKworZXhwb3J0IGRlZmF1bHQgY2xhc3MgTW9kZWwgeworICAgIGdldCA9ICgp
ID0+ICh0aGlzLmRhdGEgPSBKU09OLnBhcnNlKFNUT1JbU1RPUl9JRF0gfHwgJ1tdJykpCisKKyAg
ICBzZXQgPSBhcnIgPT4geworICAgICAgICB0aGlzLmRhdGEgPSBhcnIgfHwgdGhpcy5kYXRhIHx8
IFtdOworICAgICAgICBTVE9SW1NUT1JfSURdID0gSlNPTi5zdHJpbmdpZnkodGhpcy5kYXRhKTsK
KyAgICAgICAgcmV0dXJuIHRoaXMuZGF0YTsKKyAgICB9CisKKyAgICBhZGQgPSBzdHIgPT4gdGhp
cy5zZXQoCisgICAgICAgIHRoaXMuZGF0YS5jb25jYXQoe3RpdGxlOiBzdHIsIGNvbXBsZXRlZDog
ZmFsc2V9KQorICAgICkKKworICAgIHB1dCA9ICh0b2RvLCBvYmopID0+IHRoaXMuc2V0KAorICAg
ICAgICB0aGlzLmRhdGEubWFwKHQgPT4gaXNFcXVhbCh0LCB0b2RvKSA/IGFzc2lnbih0b2RvLCBv
YmopIDogdCkKKyAgICApCisKKyAgICBkZWwgPSB0b2RvID0+IHRoaXMuc2V0KAorICAgICAgICB0
aGlzLmRhdGEuZmlsdGVyKHQgPT4gIWlzRXF1YWwodCwgdG9kbykpCisgICAgKQorCisgICAgdG9n
Z2xlID0gdG9kbyA9PiB0aGlzLnB1dCh0b2RvLCB7Y29tcGxldGVkOiAhdG9kby5jb21wbGV0ZWR9
KQorCisgICAgdG9nZ2xlQWxsID0gY29tcGxldGVkID0+IHRoaXMuc2V0KAorICAgICAgICB0aGlz
LmRhdGEubWFwKHQgPT4gKHsuLi50LCBjb21wbGV0ZWR9KSkKKyAgICApCisKKyAgICBjbGVhckNv
bXBsZXRlZCA9ICgpID0+IHRoaXMuc2V0KAorICAgICAgICB0aGlzLmRhdGEuZmlsdGVyKHQgPT4g
IXQuY29tcGxldGVkKQorICAgICkKK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2luZmVybm8v
c3JjL3NoYXJlLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvaW5mZXJuby9zcmMvc2hhcmUuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOWU3ZDk2MmI4ZjE3NzQ3MDJkNzY1NDZjYTEwOWFkOTc5MjQ0YTNlMAotLS0gL2Rldi9udWxs
CisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2luZmVybm8vc3JjL3NoYXJlLmpzCkBAIC0wLDAgKzEsNTggQEAK
Ky8qKgorICogU2hhcmVkIGZ1bmNzL3ZhbHVlcworICovCisKK2V4cG9ydCBjb25zdCBFTlRFUiA9
IDEzOworZXhwb3J0IGNvbnN0IEVTQ0FQRSA9IDI3OworCitleHBvcnQgY29uc3QgZmlsdGVycyA9
IHsKKyAgICBhbGw6IHQgPT4gdHJ1ZSwKKyAgICBhY3RpdmU6IHQgPT4gIXQuY29tcGxldGVkLAor
ICAgIGNvbXBsZXRlZDogdCA9PiB0LmNvbXBsZXRlZAorfQorCisvKioKKyAqIFJlYWQgdGhlIGBs
b2NhdGlvbi5oYXNoYCB2YWx1ZQorICogQHJldHVybiB7U3RyaW5nfQorICovCitleHBvcnQgZnVu
Y3Rpb24gcmVhZCgpIHsKKyAgICByZXR1cm4gbG9jYXRpb24uaGFzaC5yZXBsYWNlKCcjLycsICcn
KSB8fCAnYWxsJzsKK30KKworLyoqCisgKiBNb2RpZmllZCBgT2JqZWN0LmFzc2lnbmAgc2hpbQor
ICogLSBhbHdheXMgd3JpdGVzIHRvIG5ldyBvYmplY3QKKyAqIEByZXR1cm4ge09iamVjdH0KKyAq
LworZXhwb3J0IGZ1bmN0aW9uIGFzc2lnbigpIHsKKyAgICBsZXQgc3JjOworICAgIGxldCB0YXIg
PSB7fTsKKyAgICBmb3IgKGxldCBzID0gMDsgcyA8IGFyZ3VtZW50cy5sZW5ndGg7IHMrKykgewor
ICAgICAgICBzcmMgPSBPYmplY3QoYXJndW1lbnRzW3NdKTsKKyAgICAgICAgZm9yIChjb25zdCBr
IGluIHNyYykgeworICAgICAgICAgICAgdGFyW2tdID0gc3JjW2tdOworICAgICAgICB9CisgICAg
fQorICAgIHJldHVybiB0YXI7Cit9CisKKy8qKgorICogQXJlIHR3byBPYmplY3RzIGVxdWFsIHZh
bHVlcz8KKyAqIEBwYXJhbSAge09iamVjdH0gYQorICogQHBhcmFtICB7T2JqZWN0fSBiCisgKiBA
cmV0dXJuIHtCb29sZWFufQorICovCitleHBvcnQgZnVuY3Rpb24gaXNFcXVhbChhLCBiKSB7Cisg
ICAgLy8gQ3JlYXRlIGFycmF5cyBvZiBwcm9wZXJ0eSBuYW1lcworICAgIGNvbnN0IGFQcm9wcyA9
IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGEpOworICAgIGNvbnN0IGJQcm9wcyA9IE9iamVj
dC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGIpOworCisgICAgaWYgKGFQcm9wcy5sZW5ndGggIT09IGJQ
cm9wcy5sZW5ndGgpIHJldHVybiBmYWxzZTsKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYVBy
b3BzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIGNvbnN0IGsgPSBhUHJvcHNbaV07CisgICAgICAg
IGlmIChhW2tdICE9PSBiW2tdKSByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRy
dWU7Cit9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9pbmZlcm5vL3Rlc3QvLmdpdGlnbm9yZSBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2luZmVybm8vdGVzdC8uZ2l0aWdub3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkzZjEzNjE5
OTE2MTIzY2Y1NDM0ZGFiMmZmY2M4MjYzYzc0MjBhZjEKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9pbmZlcm5vL3Rlc3QvLmdpdGlnbm9yZQpAQCAtMCwwICsxLDIgQEAKK25vZGVfbW9k
dWxlcworbnBtLWRlYnVnLmxvZwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvaW5mZXJuby90ZXN0
L1JFQURNRS5tZCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2luZmVybm8vdGVzdC9SRUFETUUubWQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNjQ4ODY0Nzc5YmIwZjI5NjU5OTViOTJkMDM5MTA2ZDQ2ZGMwMGNkOQotLS0gL2Rldi9udWxs
CisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2luZmVybm8vdGVzdC9SRUFETUUubWQKQEAgLTAsMCArMSwxODkg
QEAKKyMgVG9kb01WQyBCcm93c2VyIFRlc3RzCisKK1RoZSBUb2RvTVZDIHByb2plY3QgaGFzIGEg
Z3JlYXQgbWFueSBpbXBsZW1lbnRhdGlvbnMgb2YgZXhhY3RseSB0aGUgc2FtZSBhcHAgdXNpbmcg
ZGlmZmVyZW50IE1WKiBmcmFtZXdvcmtzLiBFYWNoIGFwcCBzaG91bGQgYmUgZnVuY3Rpb25hbGx5
IGlkZW50aWNhbC4gVGhlIGdvYWwgb2YgdGhlc2UgdGVzdHMgaXMgdG8gcHJvdmlkZSBhIGZ1bGx5
IGF1dG9tYXRlZCBicm93c2VyLWJhc2VkIHRlc3QgdGhhdCBjYW4gYmUgdXNlZCB0byBlbnN1cmUg
dGhhdCB0aGUgc3BlY2lmaWNhdGlvbiBpcyBiZWluZyBmb2xsb3dlZCBieSBlYWNoIGFuZCBldmVy
eSBUb2RvTVZDIGFwcC4KKworCisjIyBUb2RvCisKKy0gWyBdIENvbXBsZXRlIHRoZSB0ZXN0IGlt
cGxlbWVudGF0aW9uICgyNyBvdXQgb2YgMjggYXJlIG5vdyBjb21wbGV0ZSkuIFRoZSBvbmx5IHRl
c3QgdGhhdCBJIGFtIHN0cnVnZ2xpbmcgd2l0aCBpcyB0byB0ZXN0IHRoYXQgdGhlIGRlbGV0ZSBi
dXR0b24gYmVjb21lcyB2aXNpYmxlIG9uIGhvdmVyLgorLSBbIF0gTWFrZSBpdCB3b3JrIHdpdGgg
UGhhbnRvbUpTLiBJbiBwcmFjdGljZSwgUGhhbnRvbSBpcyBvbmx5IGEgbGl0dGxlIGJpdCBmYXN0
ZXIsIGJ1dCBpdCBzaG91bGQgd29yay4gQ3VycmVudGx5IHRoZXJlIGFyZSBhIGZldyBQaGFudG9t
IHNwZWNpZmljIGZhaWx1cmVzLgorLSBbIF0gQWxsb3cgdGVzdGluZyBvZiBhcHBzIHRoYXQgcmVx
dWlyZSBhIHNlcnZlciAoc2VlOiBodHRwczovL2dpdGh1Yi5jb20vdGFzdGVqcy90b2RvbXZjL3B1
bGwvODIxL2ZpbGVzI3I5Mzc3MDcwKQorCisKKyMjIFJ1bm5pbmcgdGhlIHRlc3RzCisKK1RoZXNl
IHRlc3RzIHVzZSBTZWxlbml1bSAyIChXZWJEcml2ZXIpLCB2aWEgdGhlIEphdmFTY3JpcHQgQVBJ
IChXZWJkcml2ZXJKUykuICBJbiBvcmRlciB0byBydW4gdGhlIHRlc3RzLCB5b3Ugd2lsbCBuZWVk
IHRvIGluc3RhbGwgdGhlIGRlcGVuZGVuY2llcy4gIG5wbSBtdXN0IGJlIHZlcnNpb24gMi4wLjAg
b3IgZ3JlYXRlciwgc28gdXBncmFkZSBpdCBmaXJzdCB3aXRoIGBucG0gaW5zdGFsbCAtZyBucG1g
IGlmIGBucG0gLS12ZXJzaW9uYCBvdXRwdXRzIGFueXRoaW5nIGxlc3MgdGhhbiAyLjAuMC4gIFJ1
biB0aGUgZm9sbG93aW5nIGNvbW1hbmQgZnJvbSB3aXRoaW4gdGhlIGB0ZXN0c2AgZm9sZGVyOgor
CitgYGBzaAorJCBucG0gaW5zdGFsbAorYGBgCisKK0lmIHlvdSBoYXZlbid0IGFscmVhZHkgcnVu
IGBucG0gaW5zdGFsbGAgaW4gdGhlIHJvb3QgZGlyZWN0b3J5LCBleGVjdXRlIGBucG0gaW5zdGFs
bGAgdGhlcmUgYXMgd2VsbC4KKworWW91IG5lZWQgdG8gcnVuIGEgbG9jYWwgc2VydmVyIGZvciB0
aGUgdGVzdHMuIFN0YXJ0IHRoZSB0ZXN0IHNlcnZlciB1c2luZzoKKworYGBgc2gKKyQgZ3VscCB0
ZXN0LXNlcnZlcgorYGBgCisKK1RvIHJ1biB0aGUgdGVzdHMgZm9yIGFsbCBUb2RvTVZDIGltcGxl
bWVudGF0aW9ucywgcnVuIHRoZSBmb2xsb3dpbmc6CisKK2BgYHNoCiskIG5wbSBydW4gdGVzdAor
YGBgCisKK0luIG9yZGVyIHRvIHJ1biB0ZXN0cyBmb3IgYSBzaW5nbGUgVG9kb01WQyBpbXBsZW1l
bnRhdGlvbiwgc3VwcGx5IGEgZnJhbWV3b3JrIGFyZ3VtZW50IGFzIGZvbGxvd3M6CisKK2BgYHNo
CiskIG5wbSBydW4gdGVzdCAtLSAtLWZyYW1ld29yaz1hbmd1bGFyanMKK2BgYAorCitOLkIuIFJl
bWVtYmVyIHRoZSBleHRyYSAtLSB0byBzZXBhcmF0ZSB0aGUgc2NyaXB0IGFyZ3VtZW50cyBmcm9t
IHRoZSBucG0gYXJndW1lbnRzLgorCitJbiBvcmRlciB0byBydW4gYSBzcGVjaWZpYyB0ZXN0LCB1
c2UgdGhlIG1vY2hhICdncmVwJyBmdW5jdGlvbi4gRm9yIGV4YW1wbGU6CisKK2BgYAorJCBucG0g
cnVuIHRlc3QgLS0gLS1mcmFtZXdvcms9anF1ZXJ5IC0tZ3JlcCAnc2hvdWxkIHRyaW0gZW50ZXJl
ZCB0ZXh0JworCisgIFRvZG9NVkMgLSBqcXVlcnkKKyAgICBFZGl0aW5nCisgICAgICDinJMgc2hv
dWxkIHRyaW0gZW50ZXJlZCB0ZXh0ICgxMTE1bXMpCisKKworICAxIHBhc3NpbmcgKDNzKQorYGBg
CisKKyMjIyBTcGVjaWZ5aW5nIHRoZSBicm93c2VyCisKK1lvdSBjYW4gYWxzbyBzcGVjaWZ5IHRo
ZSBicm93c2VyIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGV4ZWN1dGUgdGhlIHRlc3RzIHZpYSB0aGUg
YC0tLWJyb3dzZXJgIGFyZ3VtZW50LiBUaGUgdGVzdHMgZGVmYXVsdCB0byB1c2luZyBDaHJvbWUu
IEZvciBleGFtcGxlLCB0byBydW4gYWdhaW5zdCBwaGFudG9tanMsIHVzZSB0aGUgZm9sbG93aW5n
OgorCitgYGBzaAorJCBucG0gcnVuIHRlc3QgLS0gLS1icm93c2VyPXBoYW50b21qcworYGBgCisK
K1lvdSBtdXN0IGluc3RhbGwgcGhhbnRvbWpzIGZpcnN0IG9mIGNvdXJzZSEKKworVmFsaWQgYnJv
d3NlciBuYW1lcyBjYW4gYmUgZm91bmQgd2l0aGluIHdlYmRyaXZlciB2aWEgdGhlIGB3ZWJkcml2
ZXIuQnJvd3NlcmAgZW51bWVyYXRpb24uCisKKworIyMgUmVwb3J0aW5nIGFnYWluc3Qga25vd24g
aXNzdWVzCisKK1RoZSBga25vd25Jc3N1ZXMuanNgIGZpbGUgZGV0YWlscyB0aGUgY3VycmVudGx5
IGtub3duIGlzc3VlcyB3aXRoIHRoZSBUb2RvTVZDIGltcGxlbWVudGF0aW9ucy4gWW91IGNhbiBy
dW4gdGhlIHRlc3RzIGFuZCBjb21wYXJlIGFnYWluc3QgdGhlc2UgaXNzdWVzIHVzaW5nIHRoZSBg
bW9jaGEta25vd24taXNzdWVzLXJlcG9ydGVyYDoKKworYGBgc2gKKyQgbnBtIHJ1biB0ZXN0IC0t
IC0tcmVwb3J0ZXI9bW9jaGEta25vd24taXNzdWVzLXJlcG9ydGVyCitgYGAKKworV2hlbiBydW4g
dmlhIGdydW50IHRoZSBzdWl0ZSBzdXBwb3J0cyBleGFjdGx5IHRoZSBzYW1lIGNvbW1hbmQgbGlu
ZSBhcmd1bWVudHMuCisKK0FuIGV4YW1wbGUgb3V0cHV0IHdpdGggdGhlIGtub3duIGlzc3VlcyBy
ZXBvcnRlciBpcyBzaG93biBiZWxvdzoKKworYGBgCiskIG5wbSBydW4gdGVzdCAtLSAtLXJlcG9y
dGVyPW1vY2hhLWtub3duLWlzc3Vlcy1yZXBvcnRlciAtLWZyYW1ld29yaz1qcXVlcnkKKy4uLgor
UnVubmluZyAic2ltcGxlbW9jaGE6ZmlsZXMiIChzaW1wbGVtb2NoYSkgdGFzaworKDEgb2YgMjcp
IHBhc3M6IFRvZG9NVkMgLSBqcXVlcnksIE5vIFRvZG9zLCBzaG91bGQgaGlkZSAjbWFpbiBhbmQg
I2Zvb3RlcgorWy4uLl0KKygxNyBvZiAyNykgcGFzczogVG9kb01WQyAtIGpxdWVyeSwgRWRpdGlu
Zywgc2hvdWxkIHJlbW92ZSB0aGUgaXRlbSBpZiBhbiBlbXB0eSB0ZXh0IHN0cmluZyB3YXMgZW50
ZXJlZAorKDE4IG9mIDI3KSBrbm93biBpc3N1ZTogVG9kb01WQyAtIGpxdWVyeSwgRWRpdGluZywg
c2hvdWxkIGNhbmNlbCBlZGl0cyBvbiBlc2NhcGUgLS0gZXJyb3I6IHVuZGVmaW5lZAorKDE5IG9m
IDI3KSBwYXNzOiBUb2RvTVZDIC0ganF1ZXJ5LCBDb3VudGVyLCBzaG91bGQgZGlzcGxheSB0aGUg
Y3VycmVudCBudW1iZXIgb2YgdG9kbyBpdGVtcworKDIwIG9mIDI3KSBwYXNzOiBUb2RvTVZDIC0g
anF1ZXJ5LCBDbGVhciBjb21wbGV0ZWQgYnV0dG9uLCBzaG91bGQgZGlzcGxheSB0aGUgbnVtYmVy
IG9mIGNvbXBsZXRlZCBpdGVtcworKDIxIG9mIDI3KSBwYXNzOiBUb2RvTVZDIC0ganF1ZXJ5LCBD
bGVhciBjb21wbGV0ZWQgYnV0dG9uLCBzaG91bGQgcmVtb3ZlIGNvbXBsZXRlZCBpdGVtcyB3aGVu
IGNsaWNrZWQKKygyMiBvZiAyNykgcGFzczogVG9kb01WQyAtIGpxdWVyeSwgQ2xlYXIgY29tcGxl
dGVkIGJ1dHRvbiwgc2hvdWxkIGJlIGhpZGRlbiB3aGVuIHRoZXJlIGFyZSBubyBpdGVtcyB0aGF0
IGFyZSBjb21wbGV0ZWQKKygyMyBvZiAyNykgcGFzczogVG9kb01WQyAtIGpxdWVyeSwgUGVyc2lz
dGVuY2UsIHNob3VsZCBwZXJzaXN0IGl0cyBkYXRhCisoMjQgb2YgMjcpIGtub3duIGlzc3VlOiBU
b2RvTVZDIC0ganF1ZXJ5LCBSb3V0aW5nLCBzaG91bGQgYWxsb3cgbWUgdG8gZGlzcGxheSBhY3Rp
dmUgaXRlbXMgLS0gZXJyb3I6IENhbm5vdCBjYWxsIG1ldGhvZCAnY2xpY2snIG9mIHVuZGVmaW5l
ZAorKDI1IG9mIDI3KSBrbm93biBpc3N1ZTogVG9kb01WQyAtIGpxdWVyeSwgUm91dGluZywgc2hv
dWxkIGFsbG93IG1lIHRvIGRpc3BsYXkgY29tcGxldGVkIGl0ZW1zIC0tIGVycm9yOiBDYW5ub3Qg
Y2FsbCBtZXRob2QgJ2NsaWNrJyBvZiB1bmRlZmluZWQKKygyNiBvZiAyNykga25vd24gaXNzdWU6
IFRvZG9NVkMgLSBqcXVlcnksIFJvdXRpbmcsIHNob3VsZCBhbGxvdyBtZSB0byBkaXNwbGF5IGFs
bCBpdGVtcyAtLSBlcnJvcjogQ2Fubm90IGNhbGwgbWV0aG9kICdjbGljaycgb2YgdW5kZWZpbmVk
CisoMjcgb2YgMjcpIGtub3duIGlzc3VlOiBUb2RvTVZDIC0ganF1ZXJ5LCBSb3V0aW5nLCBzaG91
bGQgaGlnaGxpZ2h0IHRoZSBjdXJyZW50bHkgYXBwbGllZCBmaWx0ZXIgLS0gZXJyb3I6IENhbm5v
dCBjYWxsIG1ldGhvZCAnZ2V0QXR0cmlidXRlJyBvZiB1bmRlZmluZWQKKworcGFzc2VkOiAyMi8y
NworZmFpbGVkOiA1LzI3CituZXcgaXNzdWVzOiAwCityZXNvbHZlZCBpc3N1ZXM6IDAKK2BgYAor
CitUaGUgcmVwb3J0ZXIgaW5kaWNhdGVzIHRoZSBudW1iZXIgb2YgcGFzc2VzLCBmYWlsZWQsIG5l
dyBhbmQgcmVzb2x2ZWQgaXNzdWVzLiBUaGlzIG1ha2VzIGl0IGlkZWFsIGZvciByZWdyZXNzaW9u
IHRlc3RpbmcuCisKKyMjIyBFeGFtcGxlIG91dHB1dAorCitBIHRlc3QgcnVuIHdpdGggdGhlICdz
cGVjJyByZXBvcnRlciBsb29rcyBzb21ldGhpbmcgbGlrZSB0aGUgZm9sbG93aW5nOgorCitgYGAK
KyQgbnBtIHJ1biB0ZXN0IC0tIC0tZnJhbWV3b3JrPWFuZ3VsYXJqcworCisgIGFuZ3VsYXJqcwor
ICAgIFRvZG9NVkMKKyAgICAgIE5vIFRvZG9zCisgICAgICAgIOKckyBzaG91bGQgaGlkZSAjbWFp
biBhbmQgI2Zvb3RlciAoMjAxbXMpCisgICAgICBOZXcgVG9kbworICAgICAgICDinJMgc2hvdWxk
IGFsbG93IG1lIHRvIGFkZCB0b2RvIGl0ZW1zICg1NDhtcykKKyAgICAgICAg4pyTIHNob3VsZCBj
bGVhciB0ZXh0IGlucHV0IGZpZWxkIHdoZW4gYW4gaXRlbSBpcyBhZGRlZCAoMzA2bXMpCisgICAg
ICAgIOKckyBzaG91bGQgdHJpbSB0ZXh0IGlucHV0ICg1NjltcykKKyAgICAgICAg4pyTIHNob3Vs
ZCBzaG93ICNtYWluIGFuZCAjZm9vdGVyIHdoZW4gaXRlbXMgYWRkZWQgKDQwNW1zKQorICAgICAg
TWFyayBhbGwgYXMgY29tcGxldGVkCisgICAgICAgIOKckyBzaG91bGQgYWxsb3cgbWUgdG8gbWFy
ayBhbGwgaXRlbXMgYXMgY29tcGxldGVkICgxMDQwbXMpCisgICAgICAgIOKckyBzaG91bGQgYWxs
b3cgbWUgdG8gY2xlYXIgdGhlIGNvbXBsZXRpb24gc3RhdGUgb2YgYWxsIGl0ZW1zICgxMDE0bXMp
CisgICAgICAgIOKckyBjb21wbGV0ZSBhbGwgY2hlY2tib3ggc2hvdWxkIHVwZGF0ZSBzdGF0ZSB3
aGVuIGl0ZW1zIGFyZSBjb21wbGV0ZWQgKDE0MTNtcykKKyAgICAgIEl0ZW0KKyAgICAgICAg4pyT
IHNob3VsZCBhbGxvdyBtZSB0byBtYXJrIGl0ZW1zIGFzIGNvbXBsZXRlICg4NDNtcykKKyAgICAg
ICAg4pyTIHNob3VsZCBhbGxvdyBtZSB0byB1bi1tYXJrIGl0ZW1zIGFzIGNvbXBsZXRlICg5Nzht
cykKKyAgICAgICAg4pyTIHNob3VsZCBhbGxvdyBtZSB0byBlZGl0IGFuIGl0ZW0gKDExNTVtcykK
KyAgICAgICAg4pyTIHNob3VsZCBzaG93IHRoZSByZW1vdmUgYnV0dG9uIG9uIGhvdmVyCisgICAg
ICBFZGl0aW5nCisgICAgICAgIOKckyBzaG91bGQgaGlkZSBvdGhlciBjb250cm9scyB3aGVuIGVk
aXRpbmcgKDcxOG1zKQorICAgICAgICDinJMgc2hvdWxkIHNhdmUgZWRpdHMgb24gZW50ZXIgKDEw
OTNtcykKKyAgICAgICAg4pyTIHNob3VsZCBzYXZlIGVkaXRzIG9uIGJsdXIgKDEyNTZtcykKKyAg
ICAgICAg4pyTIHNob3VsZCB0cmltIGVudGVyZWQgdGV4dCAoMTE2M21zKQorICAgICAgICDinJMg
c2hvdWxkIHJlbW92ZSB0aGUgaXRlbSBpZiBhbiBlbXB0eSB0ZXh0IHN0cmluZyB3YXMgZW50ZXJl
ZCAoMTAzM21zKQorICAgICAgICDinJMgc2hvdWxkIGNhbmNlbCBlZGl0cyBvbiBlc2NhcGUgKDEx
MTVtcykKKyAgICAgIENvdW50ZXIKKyAgICAgICAg4pyTIHNob3VsZCBkaXNwbGF5IHRoZSBjdXJy
ZW50IG51bWJlciBvZiB0b2RvIGl0ZW1zICg0NjJtcykKKyAgICAgIENsZWFyIGNvbXBsZXRlZCBi
dXR0b24KKyAgICAgICAg4pyTIHNob3VsZCBkaXNwbGF5IHRoZSBudW1iZXIgb2YgY29tcGxldGVk
IGl0ZW1zICg4NzNtcykKKyAgICAgICAg4pyTIHNob3VsZCByZW1vdmUgY29tcGxldGVkIGl0ZW1z
IHdoZW4gY2xpY2tlZCAoODk4bXMpCisgICAgICAgIOKckyBzaG91bGQgYmUgaGlkZGVuIHdoZW4g
dGhlcmUgYXJlIG5vIGl0ZW1zIHRoYXQgYXJlIGNvbXBsZXRlZCAoODkzbXMpCisgICAgICBQZXJz
aXN0ZW5jZQorICAgICAgICDinJMgc2hvdWxkIHBlcnNpc3QgaXRzIGRhdGEgKDM4MzJtcykKKyAg
ICAgIFJvdXRpbmcKKyAgICAgICAg4pyTIHNob3VsZCBhbGxvdyBtZSB0byBkaXNwbGF5IGFjdGl2
ZSBpdGVtcyAoODcxbXMpCisgICAgICAgIOKckyBzaG91bGQgYWxsb3cgbWUgdG8gZGlzcGxheSBj
b21wbGV0ZWQgaXRlbXMgKDk2MG1zKQorICAgICAgICDinJMgc2hvdWxkIGFsbG93IG1lIHRvIGRp
c3BsYXkgYWxsIGl0ZW1zICgxMTkybXMpCisgICAgICAgIOKckyBzaG91bGQgaGlnaGxpZ2h0IHRo
ZSBjdXJyZW50bHkgYXBwbGllZCBmaWx0ZXIgKDEwOTVtcykKKworCisgIDI3IHBhc3NpbmcgKDFt
KQorYGBgCisKKworIyMgU3BlZWQgbW9kZQorCitJbiBvcmRlciB0byBrZWVwIGVhY2ggdGVzdCBj
YXNlIGZ1bGx5IGlzb2xhdGVkLCB0aGUgYnJvd3NlciBpcyBjbG9zZWQgdGhlbiByZS1vcGVuZWQg
aW4gYmV0d2VlbiBlYWNoIHRlc3QuIFRoaXMgZG9lcyBtZWFuIHRoYXQgdGhlIHRlc3RzIGNhbiB0
YWtlIHF1aXRlIGEgbG9uZyB0aW1lIHRvIHJ1bi4gSWYgeW91IGRvbid0IG1pbmQgdGhlIHJpc2sg
b2Ygc2lkZS1lZmZlY3RzIHlvdSBjYW4gcnVuIHRoZSB0ZXN0cyBpbiBzcGVlZCBtb2RlIGJ5IGFk
ZGluZyB0aGUgYC0tc3BlZWRNb2RlYCBhcmd1bWVudC4KKworYGBgc2gKKyQgbnBtIHJ1biB0ZXN0
IC0tIC0tc3BlZWRNb2RlCitgYGAKKworQmVmb3JlIGVhY2ggdGVzdCwgYWxsIHRoZSB0b2RvIGl0
ZW1zIGFyZSBjaGVja2VkIGFzIGNvbXBsZXRlZCBhbmQgdGhlICdjbGVhciBjb21wbGV0ZScgYnV0
dG9uIHByZXNzZWQuIFRoaXMgbWFrZXMgdGhlIHRlc3RzIHJ1biBpbiBhcm91bmQgaGFsZiB0aGUg
dGltZSwgYnV0IHdpdGggdGhlIG9idmlvdXMgcmlzayB0aGF0IHRoZSB0ZWFyLWRvd24gY29kZSBt
YXkgZmFpbC4KKworCisjIyBMYXggbW9kZQorCitUaGVyZSBhcmUgY2VydGFpbiBpbXBsZW1lbnRh
dGlvbnMgKGUuZy4gR1dUIGFuZCBEb2pvKSB3aGVyZSB0aGUgY29uc3RyYWludHMgb2YgdGhlIGZy
YW1ld29yayBtZWFuIHRoYXQgaXQgaXMgbm90IHBvc3NpYmxlIHRvIG1hdGNoIGV4YWN0bHkgdGhl
IEhUTUwgc3BlY2lmaWNhdGlvbiBmb3IgVG9kb01WQy4gSW4gdGhlc2UgY2FzZXMsIHRoZSB0ZXN0
cyBjYW4gYmUgcnVuIGluIGEgJ2xheCcgbW9kZSB3aGVyZSB0aGUgWFBhdGggcXVlcmllcyB1c2Vk
IHRvIGxvY2F0ZSBET00gZWxlbWVudHMgYXJlIG1vcmUgZ2VuZXJhbC4gRm9yIGV4YW1wbGUsIHJh
dGhlciB0aGFuIGxvb2tpbmcgZm9yIGEgY2hlY2tib3ggYGlucHV0YCBlbGVtZW50IHdpdGggYSBj
bGFzcyBvZiBgdG9nZ2xlYCwgaW4gbGF4IG1vZGUgaXQgc2ltcGx5IGxvb2tzIGZvciBhbnkgYGlu
cHV0YCBlbGVtZW50cyBvZiB0eXBlIGBjaGVja2JveGAuIFRvIHJ1biB0aGUgdGVzdHMgaW4gbGF4
IG1vZGUsIHNpbXBseSB1c2UgdGhlIGAtLWxheE1vZGVgIGFyZ3VtZW50OgorCisKK2BgYHNoCisk
IG5wbSBydW4gdGVzdCAtLSAtLWxheE1vZGUKK2BgYAorCisKKyMjIFRlc3QgZGVzaWduCisKK1Zl
cnkgYnJpZWZseSwgdGhlIHRlc3RzIGFyZSBkZXNpZ25lZCBhcyBmb2xsb3dzOgorCistIGBwYWdl
LmpzYCAtIHByb3ZpZGVzIGFuIGFic3RyYWN0aW9uIGxheWVyIGZvciB0aGUgSFRNTCB0ZW1wbGF0
ZS4gQWxsIHRoZSBjb2RlIHJlcXVpcmVkIHRvIGFjY2VzcyBlbGVtZW50cyBmcm9tIHRoZSBET00g
aXMgZm91bmQgd2l0aGluIHRoaXMgZmlsZS4gVGhlIFhQYXRocyB1c2VkIHRvIGxvY2F0ZSBlbGVt
ZW50cyBhcmUgYmFzZWQgb24gdGhlIFRvZG9NVkMgc3BlY2lmaWNhdGlvbiwgdXNpbmcgdGhlIHJl
cXVpcmVkIGVsZW1lbnQgY2xhc3NlcyAvIGlkcy4KKy0gYHBhZ2VMYXhNb2RlLmpzYCAtIGV4dGVu
ZHMgdGhlIGFib3ZlIGluIG9yZGVyIHRvIHJlbGF4IHRoZSBYUGF0aCBjb25zdHJhaW50cy4KKy0g
YHRlc3RPcGVyYXRpb25zLmpzYCAtIHByb3ZpZGVzIGNvbW1vbiBhc3NlcnRpb25zIGFuZCBvcGVy
YXRpb25zLgorLSBgdGVzdC5qc2AgLSBFcm0g4oCmIHRoZSB0ZXN0cyEgVGhlc2UgYXJlIHdyaXR0
ZW4gdG8gY2xvc2VseSBtYXRjaCB0aGUgVG9kb01WQyBzcGVjLgorLSBgYWxsVGVzdC5qc2AgLSBB
IHNpbXBsZSBmaWxlIHRoYXQgbG9jYXRlcyBhbGwgb2YgdGhlIGZyYW1ld29yayBleGFtcGxlcywg
YW5kIHJ1bnMgdGhlIHRlc3RzIGZvciBlYWNoLgorCisqKk5PVEU6KiogQWxsIG9mIHRoZSBXZWJk
cml2ZXJKUyBtZXRob2RzIHJldHVybiBwcm9taXNlcyBhbmQgYXJlIGV4ZWN1dGVkIGFzeW5jaHJv
bm91c2x5LiBIb3dldmVyLCB5b3UgZG8gbm90IGhhdmUgdG8gJ2NoYWluJyB0aGVtIHVzaW5nIGB0
aGVuYCwgdGhleSBhcmUgaW5zdGVhZCBhdXRvbWFnaWNhbGx5IGFkZGVkIHRvIGEgcXVldWUsIHRo
ZW4gZXhlY3V0ZWQuIFRoaXMgbWVhbnMgdGhhdCBpZiB5b3UgYWRkIG5vbi1XZWJkcml2ZXJKUyBv
cGVyYXRpb25zIChhc3NlcnRzLCBsb2cgbWVzc2FnZXMpIHRoZXNlIHdpbGwgbm90IGJlIGV4ZWN1
dGVkIGF0IHRoZSBwb2ludCB5b3UgbWlnaHQgZXhwZWN0LiBUaGlzIGlzIHdoeSBgVGVzdE9wZXJh
dGlvbnMuanNgIHVzZXMgYW4gZXhwbGljaXQgYHRoZW5gIGVhY2ggdGltZSBpdCBhc3NlcnRzLgpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvaW5mZXJuby90ZXN0L2luZGV4LmpzIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvaW5mZXJuby90ZXN0L2luZGV4LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzNDg3Nzk5NzQyMmQ0ODg0NzA1
MzlmMWE0NWQzNTFiNTc0MDRhNjcKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9pbmZl
cm5vL3Rlc3QvaW5kZXguanMKQEAgLTAsMCArMSw0MTQgQEAKKyd1c2Ugc3RyaWN0JzsKKwordmFy
IHdlYmRyaXZlciA9IHJlcXVpcmUoJ3NlbGVuaXVtLXdlYmRyaXZlcicpOwordmFyIGNocm9tZSA9
IHJlcXVpcmUoJ3NlbGVuaXVtLXdlYmRyaXZlci9jaHJvbWUnKTsKK3ZhciB0ZXN0ID0gcmVxdWly
ZSgnc2VsZW5pdW0td2ViZHJpdmVyL3Rlc3RpbmcnKTsKK3ZhciBQYWdlID0gcmVxdWlyZSgnLi9w
YWdlJyk7Cit2YXIgUGFnZUxheE1vZGUgPSByZXF1aXJlKCcuL3BhZ2VMYXhNb2RlJyk7Cit2YXIg
VGVzdE9wZXJhdGlvbnMgPSByZXF1aXJlKCcuL3Rlc3RPcGVyYXRpb25zJyk7CisKK3ZhciBhcmd2
ID0gcmVxdWlyZSgnb3B0aW1pc3QnKS5kZWZhdWx0KCdsYXhNb2RlJywgZmFsc2UpLmRlZmF1bHQo
J2Jyb3dzZXInLCAnY2hyb21lJykuYXJndjsKKworZnVuY3Rpb24gdG9kb01WQ1Rlc3QoYmFzZVVy
bCwgc3BlZWRNb2RlLCBsYXhNb2RlLCBicm93c2VyTmFtZSkgeworICAgIHRlc3QuZGVzY3JpYmUo
J1RvZG9NVkM6ICcsIGZ1bmN0aW9uICgpIHsKKworICAgICAgICB2YXIgVE9ET19JVEVNX09ORSA9
ICdidXkgc29tZSBjaGVlc2UnOworICAgICAgICB2YXIgVE9ET19JVEVNX1RXTyA9ICdmZWVkIHRo
ZSBjYXQnOworICAgICAgICB2YXIgVE9ET19JVEVNX1RIUkVFID0gJ2Jvb2sgYSBkb2N0b3JzIGFw
cG9pbnRtZW50JzsKKyAgICAgICAgdmFyIGJyb3dzZXIsIHRlc3RPcHMsIHBhZ2U7CisKKyAgICAg
ICAgLy8gYSBudW1iZXIgb2YgdGVzdHMgdXNlIHRoaXMgc2V0IG9mIFRvRG8gaXRlbXMuCisgICAg
ICAgIGZ1bmN0aW9uIGNyZWF0ZVN0YW5kYXJkSXRlbXMoZG9uZSkgeworICAgICAgICAgICAgcGFn
ZS5lbnRlckl0ZW0oVE9ET19JVEVNX09ORSk7CisgICAgICAgICAgICBwYWdlLmVudGVySXRlbShU
T0RPX0lURU1fVFdPKTsKKyAgICAgICAgICAgIHJldHVybiBwYWdlLmVudGVySXRlbShUT0RPX0lU
RU1fVEhSRUUpCisgICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgICAgICAgICBpZiAoZG9uZSBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGxhdW5jaEJyb3dzZXIoZG9uZSkg
eworICAgICAgICAgICAgdmFyIGNocm9tZU9wdGlvbnMgPSBuZXcgY2hyb21lLk9wdGlvbnMoKTsK
KyAgICAgICAgICAgIGNocm9tZU9wdGlvbnMuYWRkQXJndW1lbnRzKCduby1zYW5kYm94Jyk7CisK
KyAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5DSFJPTUVfUEFUSCAhPT0gdW5kZWZpbmVkKSB7
CisgICAgICAgICAgICAgICAgY2hyb21lT3B0aW9ucy5zZXRDaHJvbWVCaW5hcnlQYXRoKHByb2Nl
c3MuZW52LkNIUk9NRV9QQVRIKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYnJvd3Nl
ciA9IG5ldyB3ZWJkcml2ZXIuQnVpbGRlcigpCisgICAgICAgICAgICAgICAgLndpdGhDYXBhYmls
aXRpZXMoe2Jyb3dzZXJOYW1lOiBicm93c2VyTmFtZX0pCisgICAgICAgICAgICAgICAgLnNldENo
cm9tZU9wdGlvbnMoY2hyb21lT3B0aW9ucykKKyAgICAgICAgICAgICAgICAuYnVpbGQoKTsKKwor
ICAgICAgICAgICAgYnJvd3Nlci5nZXQoYmFzZVVybCk7CisKKyAgICAgICAgICAgIHBhZ2UgPSBs
YXhNb2RlID8gbmV3IFBhZ2VMYXhNb2RlKGJyb3dzZXIpIDogbmV3IFBhZ2UoYnJvd3Nlcik7Cisg
ICAgICAgICAgICB0ZXN0T3BzID0gbmV3IFRlc3RPcGVyYXRpb25zKHBhZ2UpOworCisgICAgICAg
ICAgICByZXR1cm4gcGFnZS5lbnN1cmVBcHBJc1Zpc2libGVBbmRMb2FkZWQoKQorICAgICAgICAg
ICAgICAgIC50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGRvbmUg
aW5zdGFuY2VvZiBGdW5jdGlvbikgeworICAgICAgICAgICAgICAgICAgICAgICAgZG9uZSgpOwor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBwcmludENhcHR1cmVkTG9ncygpIHsKKyAgICAgICAgICAgIHZhciBs
b2dzID0gYnJvd3Nlci5tYW5hZ2UoKS5sb2dzKCk7CisKKyAgICAgICAgICAgIHJldHVybiBsb2dz
LmdldCgnYnJvd3NlcicpCisgICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKGVudHJpZXMp
IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGVudHJpZXMgJiYgZW50cmllcy5sZW5ndGgpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGVudHJpZXMpOworICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBjbG9zZUJyb3dzZXIoZG9uZSkgeworICAgICAgICAgICAgcmV0dXJuIGJyb3dzZXIK
KyAgICAgICAgICAgICAgICAucXVpdCgpCisgICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24g
KCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoZG9uZSBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7
IGRvbmUoKTsgfQorICAgICAgICAgICAgICAgIH0pOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KHNwZWVkTW9kZSkgeworICAgICAgICAgICAgdGVzdC5iZWZvcmUobGF1bmNoQnJvd3Nlcik7Cisg
ICAgICAgICAgICB0ZXN0LmFmdGVyKGNsb3NlQnJvd3Nlcik7CisgICAgICAgICAgICB0ZXN0LmFm
dGVyRWFjaChmdW5jdGlvbiAoZG9uZSkgeworICAgICAgICAgICAgICAgIHJldHVybiBicm93c2Vy
LmV4ZWN1dGVTY3JpcHQoJ3dpbmRvdy5sb2NhbFN0b3JhZ2UgJiYgbG9jYWxTdG9yYWdlLmNsZWFy
KCk7IGxvY2F0aW9uLnJlbG9hZCh0cnVlKTsnKQorICAgICAgICAgICAgICAgICAgICAudGhlbihm
dW5jdGlvbiAoKSB7IGRvbmUoKTsgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIHRlc3QuYmVmb3JlRWFjaChsYXVuY2hCcm93c2VyKTsKKyAgICAgICAg
ICAgIHRlc3QuYWZ0ZXJFYWNoKGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgICAgICAgICAgcHJp
bnRDYXB0dXJlZExvZ3MoKQorICAgICAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2xvc2VCcm93c2VyKGRvbmUpOworICAg
ICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisKKyAgICAg
ICAgdGVzdC5kZXNjcmliZSgnV2hlbiBwYWdlIGlzIGluaXRpYWxseSBvcGVuZWQnLCBmdW5jdGlv
biAoKSB7CisKKyAgICAgICAgICAgIHRlc3QuaXQoJ3Nob3VsZCBmb2N1cyBvbiB0aGUgdG9kbyBp
bnB1dCBmaWVsZCcsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgICAgICAgICAgdGVzdE9wcy5h
c3NlcnROZXdJbnB1dEZvY3VzZWQoKQorICAgICAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlv
biAoKSB7IGRvbmUoKTsgfSk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICB9KTsKKworICAg
ICAgICB0ZXN0LmRlc2NyaWJlKCdObyBUb2RvcycsIGZ1bmN0aW9uICgpIHsKKworICAgICAgICAg
ICAgdGVzdC5pdCgnc2hvdWxkIGhpZGUgI21haW4gYW5kICNmb290ZXInLCBmdW5jdGlvbiAoZG9u
ZSkgeworICAgICAgICAgICAgICAgIHRlc3RPcHMuYXNzZXJ0SXRlbUNvdW50KDApOworICAgICAg
ICAgICAgICAgIHRlc3RPcHMuYXNzZXJ0TWFpblNlY3Rpb25WaXNpYmlsaXR5KGZhbHNlKTsKKyAg
ICAgICAgICAgICAgICB0ZXN0T3BzLmFzc2VydEZvb3RlclZpc2liaWxpdHkoZmFsc2UpCisgICAg
ICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uICgpIHsgZG9uZSgpOyB9KTsKKyAgICAgICAg
ICAgIH0pOworCisgICAgICAgIH0pOworCisgICAgICAgIHRlc3QuZGVzY3JpYmUoJ05ldyBUb2Rv
JywgZnVuY3Rpb24gKCkgeworCisgICAgICAgICAgICB0ZXN0Lml0KCdzaG91bGQgYWxsb3cgbWUg
dG8gYWRkIHRvZG8gaXRlbXMnLCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAgICAgICAgICAgIHBh
Z2UuZW50ZXJJdGVtKFRPRE9fSVRFTV9PTkUpOworICAgICAgICAgICAgICAgIHRlc3RPcHMuYXNz
ZXJ0SXRlbXMoW1RPRE9fSVRFTV9PTkVdKTsKKyAgICAgICAgICAgICAgICBwYWdlLmVudGVySXRl
bShUT0RPX0lURU1fVFdPKTsKKyAgICAgICAgICAgICAgICB0ZXN0T3BzLmFzc2VydEl0ZW1zKFtU
T0RPX0lURU1fT05FLCBUT0RPX0lURU1fVFdPXSkKKyAgICAgICAgICAgICAgICAgICAgLnRoZW4o
ZnVuY3Rpb24gKCkgeyBkb25lKCk7IH0pOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAg
IHRlc3QuaXQoJ3Nob3VsZCBjbGVhciB0ZXh0IGlucHV0IGZpZWxkIHdoZW4gYW4gaXRlbSBpcyBh
ZGRlZCcsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgICAgICAgICAgcGFnZS5lbnRlckl0ZW0o
VE9ET19JVEVNX09ORSk7CisgICAgICAgICAgICAgICAgdGVzdE9wcy5hc3NlcnROZXdJdGVtSW5w
dXRGaWVsZFRleHQoJycpCisgICAgICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uICgpIHsg
ZG9uZSgpOyB9KTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICB0ZXN0Lml0KCdzaG91
bGQgYXBwZW5kIG5ldyBpdGVtcyB0byB0aGUgYm90dG9tIG9mIHRoZSBsaXN0JywgZnVuY3Rpb24g
KGRvbmUpIHsKKyAgICAgICAgICAgICAgICBjcmVhdGVTdGFuZGFyZEl0ZW1zKCk7CisgICAgICAg
ICAgICAgICAgdGVzdE9wcy5hc3NlcnRJdGVtQ291bnQoMyk7CisgICAgICAgICAgICAgICAgdGVz
dE9wcy5hc3NlcnRJdGVtVGV4dCgwLCBUT0RPX0lURU1fT05FKTsKKyAgICAgICAgICAgICAgICB0
ZXN0T3BzLmFzc2VydEl0ZW1UZXh0KDEsIFRPRE9fSVRFTV9UV08pOworICAgICAgICAgICAgICAg
IHRlc3RPcHMuYXNzZXJ0SXRlbVRleHQoMiwgVE9ET19JVEVNX1RIUkVFKQorICAgICAgICAgICAg
ICAgICAgICAudGhlbihmdW5jdGlvbiAoKSB7IGRvbmUoKTsgfSk7CisgICAgICAgICAgICB9KTsK
KworICAgICAgICAgICAgdGVzdC5pdCgnc2hvdWxkIHRyaW0gdGV4dCBpbnB1dCcsIGZ1bmN0aW9u
IChkb25lKSB7CisgICAgICAgICAgICAgICAgcGFnZS5lbnRlckl0ZW0oJyAgICcgKyBUT0RPX0lU
RU1fT05FICsgJyAgJyk7CisgICAgICAgICAgICAgICAgdGVzdE9wcy5hc3NlcnRJdGVtVGV4dCgw
LCBUT0RPX0lURU1fT05FKQorICAgICAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAoKSB7
IGRvbmUoKTsgfSk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgdGVzdC5pdCgnc2hv
dWxkIHNob3cgI21haW4gYW5kICNmb290ZXIgd2hlbiBpdGVtcyBhZGRlZCcsIGZ1bmN0aW9uIChk
b25lKSB7CisgICAgICAgICAgICAgICAgcGFnZS5lbnRlckl0ZW0oVE9ET19JVEVNX09ORSk7Cisg
ICAgICAgICAgICAgICAgdGVzdE9wcy5hc3NlcnRNYWluU2VjdGlvblZpc2liaWxpdHkodHJ1ZSk7
CisgICAgICAgICAgICAgICAgdGVzdE9wcy5hc3NlcnRGb290ZXJWaXNpYmlsaXR5KHRydWUpCisg
ICAgICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uICgpIHsgZG9uZSgpOyB9KTsKKyAgICAg
ICAgICAgIH0pOworCisgICAgICAgIH0pOworCisgICAgICAgIHRlc3QuZGVzY3JpYmUoJ01hcmsg
YWxsIGFzIGNvbXBsZXRlZCcsIGZ1bmN0aW9uICgpIHsKKworICAgICAgICAgICAgdGVzdC5iZWZv
cmVFYWNoKGNyZWF0ZVN0YW5kYXJkSXRlbXMpOworCisgICAgICAgICAgICB0ZXN0Lml0KCdzaG91
bGQgYWxsb3cgbWUgdG8gbWFyayBhbGwgaXRlbXMgYXMgY29tcGxldGVkJywgZnVuY3Rpb24gKGRv
bmUpIHsKKyAgICAgICAgICAgICAgICBwYWdlLmNsaWNrTWFya0FsbENvbXBsZXRlZENoZWNrQm94
KCk7CisgICAgICAgICAgICAgICAgdGVzdE9wcy5hc3NlcnRJdGVtQ29tcGxldGVkU3RhdGVzKFt0
cnVlLCB0cnVlLCB0cnVlXSkKKyAgICAgICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKCkg
eyBkb25lKCk7IH0pOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIHRlc3QuaXQoJ3No
b3VsZCBjb3JyZWN0bHkgdXBkYXRlIHRoZSBjb21wbGV0ZSBhbGwgY2hlY2tlZCBzdGF0ZScsIGZ1
bmN0aW9uIChkb25lKSB7CisgICAgICAgICAgICAgICAgLy8gbWFudWFsbHkgY2hlY2sgYWxsIGl0
ZW1zCisgICAgICAgICAgICAgICAgcGFnZS50b2dnbGVJdGVtQXRJbmRleCgwKTsKKyAgICAgICAg
ICAgICAgICBwYWdlLnRvZ2dsZUl0ZW1BdEluZGV4KDEpOworICAgICAgICAgICAgICAgIHBhZ2Uu
dG9nZ2xlSXRlbUF0SW5kZXgoMik7CisKKyAgICAgICAgICAgICAgICAvLyBlbnN1cmUgY2hlY2th
bGwgaXMgaW4gdGhlIGNvcnJlY3Qgc3RhdGUKKyAgICAgICAgICAgICAgICB0ZXN0T3BzLmFzc2Vy
dENvbXBsZXRlQWxsQ2hlY2tlZFN0YXR1cyh0cnVlKQorICAgICAgICAgICAgICAgICAgICAudGhl
bihmdW5jdGlvbiAoKSB7IGRvbmUoKTsgfSk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAg
ICAgdGVzdC5pdCgnc2hvdWxkIGFsbG93IG1lIHRvIGNsZWFyIHRoZSBjb21wbGV0aW9uIHN0YXRl
IG9mIGFsbCBpdGVtcycsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgICAgICAgICAgcGFnZS5j
bGlja01hcmtBbGxDb21wbGV0ZWRDaGVja0JveCgpOworICAgICAgICAgICAgICAgIHBhZ2UuY2xp
Y2tNYXJrQWxsQ29tcGxldGVkQ2hlY2tCb3goKTsKKworICAgICAgICAgICAgICAgIHRlc3RPcHMu
YXNzZXJ0SXRlbUNvbXBsZXRlZFN0YXRlcyhbZmFsc2UsIGZhbHNlLCBmYWxzZV0pCisgICAgICAg
ICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uICgpIHsgZG9uZSgpOyB9KTsKKyAgICAgICAgICAg
IH0pOworCisgICAgICAgICAgICB0ZXN0Lml0KCdjb21wbGV0ZSBhbGwgY2hlY2tib3ggc2hvdWxk
IHVwZGF0ZSBzdGF0ZSB3aGVuIGl0ZW1zIGFyZSBjb21wbGV0ZWQgLyBjbGVhcmVkJywgZnVuY3Rp
b24gKGRvbmUpIHsKKyAgICAgICAgICAgICAgICBwYWdlLmNsaWNrTWFya0FsbENvbXBsZXRlZENo
ZWNrQm94KCk7CisgICAgICAgICAgICAgICAgdGVzdE9wcy5hc3NlcnRDb21wbGV0ZUFsbENoZWNr
ZWRTdGF0dXModHJ1ZSk7CisKKyAgICAgICAgICAgICAgICAvLyBhbGwgaXRlbXMgYXJlIGNvbXBs
ZXRlLCBub3cgbWFyayBvbmUgYXMgbm90LWNvbXBsZXRlCisgICAgICAgICAgICAgICAgcGFnZS50
b2dnbGVJdGVtQXRJbmRleCgwKTsKKyAgICAgICAgICAgICAgICB0ZXN0T3BzLmFzc2VydENvbXBs
ZXRlQWxsQ2hlY2tlZFN0YXR1cyhmYWxzZSk7CisKKyAgICAgICAgICAgICAgICAvLyBub3cgbWFy
ayBhcyBjb21wbGV0ZSwgc28gdGhhdCBvbmNlIGFnYWluIGFsbCBpdGVtcyBhcmUgY29tcGxldGVk
CisgICAgICAgICAgICAgICAgcGFnZS50b2dnbGVJdGVtQXRJbmRleCgwKTsKKyAgICAgICAgICAg
ICAgICB0ZXN0T3BzLmFzc2VydENvbXBsZXRlQWxsQ2hlY2tlZFN0YXR1cyh0cnVlKQorICAgICAg
ICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAoKSB7IGRvbmUoKTsgfSk7CisgICAgICAgICAg
ICB9KTsKKworICAgICAgICB9KTsKKworICAgICAgICB0ZXN0LmRlc2NyaWJlKCdJdGVtJywgZnVu
Y3Rpb24gKCkgeworCisgICAgICAgICAgICB0ZXN0Lml0KCdzaG91bGQgYWxsb3cgbWUgdG8gbWFy
ayBpdGVtcyBhcyBjb21wbGV0ZScsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgICAgICAgICAg
cGFnZS5lbnRlckl0ZW0oVE9ET19JVEVNX09ORSk7CisgICAgICAgICAgICAgICAgcGFnZS5lbnRl
ckl0ZW0oVE9ET19JVEVNX1RXTyk7CisKKyAgICAgICAgICAgICAgICBwYWdlLnRvZ2dsZUl0ZW1B
dEluZGV4KDApOworICAgICAgICAgICAgICAgIHRlc3RPcHMuYXNzZXJ0SXRlbUNvbXBsZXRlZFN0
YXRlcyhbdHJ1ZSwgZmFsc2VdKTsKKworICAgICAgICAgICAgICAgIHBhZ2UudG9nZ2xlSXRlbUF0
SW5kZXgoMSk7CisgICAgICAgICAgICAgICAgdGVzdE9wcy5hc3NlcnRJdGVtQ29tcGxldGVkU3Rh
dGVzKFt0cnVlLCB0cnVlXSkKKyAgICAgICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKCkg
eyBkb25lKCk7IH0pOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIHRlc3QuaXQoJ3No
b3VsZCBhbGxvdyBtZSB0byB1bi1tYXJrIGl0ZW1zIGFzIGNvbXBsZXRlJywgZnVuY3Rpb24gKGRv
bmUpIHsKKyAgICAgICAgICAgICAgICBwYWdlLmVudGVySXRlbShUT0RPX0lURU1fT05FKTsKKyAg
ICAgICAgICAgICAgICBwYWdlLmVudGVySXRlbShUT0RPX0lURU1fVFdPKTsKKworICAgICAgICAg
ICAgICAgIHBhZ2UudG9nZ2xlSXRlbUF0SW5kZXgoMCk7CisgICAgICAgICAgICAgICAgdGVzdE9w
cy5hc3NlcnRJdGVtQ29tcGxldGVkU3RhdGVzKFt0cnVlLCBmYWxzZV0pOworCisgICAgICAgICAg
ICAgICAgcGFnZS50b2dnbGVJdGVtQXRJbmRleCgwKTsKKyAgICAgICAgICAgICAgICB0ZXN0T3Bz
LmFzc2VydEl0ZW1Db21wbGV0ZWRTdGF0ZXMoW2ZhbHNlLCBmYWxzZV0pCisgICAgICAgICAgICAg
ICAgICAgIC50aGVuKGZ1bmN0aW9uICgpIHsgZG9uZSgpOyB9KTsKKyAgICAgICAgICAgIH0pOwor
CisgICAgICAgIH0pOworCisgICAgICAgIHRlc3QuZGVzY3JpYmUoJ0VkaXRpbmcnLCBmdW5jdGlv
biAoKSB7CisKKyAgICAgICAgICAgIHRlc3QuYmVmb3JlRWFjaChmdW5jdGlvbiAoZG9uZSkgewor
ICAgICAgICAgICAgICAgIGNyZWF0ZVN0YW5kYXJkSXRlbXMoKTsKKyAgICAgICAgICAgICAgICBw
YWdlLmRvdWJsZUNsaWNrSXRlbUF0SW5kZXgoMSkKKyAgICAgICAgICAgICAgICAgICAgLnRoZW4o
ZnVuY3Rpb24gKCkgeyBkb25lKCk7IH0pOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAg
IHRlc3QuaXQoJ3Nob3VsZCBmb2N1cyB0aGUgaW5wdXQnLCBmdW5jdGlvbiAoZG9uZSkgeworICAg
ICAgICAgICAgICAgIHRlc3RPcHMuYXNzZXJ0SXRlbUlucHV0Rm9jdXNlZCgpOworICAgICAgICAg
ICAgICAgIHRlc3RPcHMuYXNzZXJ0TmV3SW5wdXRCbHVycmVkKCkgLy8gVW5uZWNlc3Nhcnk/IFRo
ZSBIVE1MIHNwZWMgZGljdGF0ZXMgdGhhdCBvbmx5IG9uZSBlbGVtZW50IGNhbiBiZSBmb2N1c2Vk
LgorICAgICAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAoKSB7IGRvbmUoKTsgfSk7Cisg
ICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgdGVzdC5pdCgnc2hvdWxkIGhpZGUgb3RoZXIg
Y29udHJvbHMgd2hlbiBlZGl0aW5nJywgZnVuY3Rpb24gKGRvbmUpIHsKKyAgICAgICAgICAgICAg
ICB0ZXN0T3BzLmFzc2VydEl0ZW1Ub2dnbGVJc0hpZGRlbigxKTsKKyAgICAgICAgICAgICAgICB0
ZXN0T3BzLmFzc2VydEl0ZW1MYWJlbElzSGlkZGVuKDEpCisgICAgICAgICAgICAgICAgICAgIC50
aGVuKGZ1bmN0aW9uICgpIHsgZG9uZSgpOyB9KTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAg
ICAgICB0ZXN0Lml0KCdzaG91bGQgc2F2ZSBlZGl0cyBvbiBlbnRlcicsIGZ1bmN0aW9uIChkb25l
KSB7CisgICAgICAgICAgICAgICAgcGFnZS5lZGl0SXRlbUF0SW5kZXgoMSwgJ2J1eSBzb21lIHNh
dXNhZ2VzJyArIHdlYmRyaXZlci5LZXkuRU5URVIpOworICAgICAgICAgICAgICAgIHRlc3RPcHMu
YXNzZXJ0SXRlbXMoW1RPRE9fSVRFTV9PTkUsICdidXkgc29tZSBzYXVzYWdlcycsIFRPRE9fSVRF
TV9USFJFRV0pCisgICAgICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uICgpIHsgZG9uZSgp
OyB9KTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICB0ZXN0Lml0KCdzaG91bGQgc2F2
ZSBlZGl0cyBvbiBibHVyJywgZnVuY3Rpb24gKGRvbmUpIHsKKyAgICAgICAgICAgICAgICBwYWdl
LmVkaXRJdGVtQXRJbmRleCgxLCAnYnV5IHNvbWUgc2F1c2FnZXMnKTsKKyAgICAgICAgICAgICAg
ICAvLyBjbGljayBhIHRvZ2dsZSBidXR0b24gc28gdGhhdCB0aGUgYmx1cigpIGV2ZW50IGlzIGZp
cmVkCisgICAgICAgICAgICAgICAgcGFnZS50b2dnbGVJdGVtQXRJbmRleCgwKTsKKyAgICAgICAg
ICAgICAgICB0ZXN0T3BzLmFzc2VydEl0ZW1zKFtUT0RPX0lURU1fT05FLCAnYnV5IHNvbWUgc2F1
c2FnZXMnLCBUT0RPX0lURU1fVEhSRUVdKQorICAgICAgICAgICAgICAgICAgICAudGhlbihmdW5j
dGlvbiAoKSB7IGRvbmUoKTsgfSk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgdGVz
dC5pdCgnc2hvdWxkIHRyaW0gZW50ZXJlZCB0ZXh0JywgZnVuY3Rpb24gKGRvbmUpIHsKKyAgICAg
ICAgICAgICAgICBwYWdlLmVkaXRJdGVtQXRJbmRleCgxLCAnICAgIGJ1eSBzb21lIHNhdXNhZ2Vz
ICAnICsgd2ViZHJpdmVyLktleS5FTlRFUik7CisgICAgICAgICAgICAgICAgdGVzdE9wcy5hc3Nl
cnRJdGVtcyhbVE9ET19JVEVNX09ORSwgJ2J1eSBzb21lIHNhdXNhZ2VzJywgVE9ET19JVEVNX1RI
UkVFXSkKKyAgICAgICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKCkgeyBkb25lKCk7IH0p
OworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIHRlc3QuaXQoJ3Nob3VsZCByZW1vdmUg
dGhlIGl0ZW0gaWYgYW4gZW1wdHkgdGV4dCBzdHJpbmcgd2FzIGVudGVyZWQnLCBmdW5jdGlvbiAo
ZG9uZSkgeworICAgICAgICAgICAgICAgIHBhZ2UuZWRpdEl0ZW1BdEluZGV4KDEsIHdlYmRyaXZl
ci5LZXkuRU5URVIpOworICAgICAgICAgICAgICAgIHRlc3RPcHMuYXNzZXJ0SXRlbXMoW1RPRE9f
SVRFTV9PTkUsIFRPRE9fSVRFTV9USFJFRV0pCisgICAgICAgICAgICAgICAgICAgIC50aGVuKGZ1
bmN0aW9uICgpIHsgZG9uZSgpOyB9KTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICB0
ZXN0Lml0KCdzaG91bGQgY2FuY2VsIGVkaXRzIG9uIGVzY2FwZScsIGZ1bmN0aW9uIChkb25lKSB7
CisgICAgICAgICAgICAgICAgcGFnZS5lZGl0SXRlbUF0SW5kZXgoMSwgJ2ZvbycgKyB3ZWJkcml2
ZXIuS2V5LkVTQ0FQRSk7CisgICAgICAgICAgICAgICAgdGVzdE9wcy5hc3NlcnRJdGVtcyhbVE9E
T19JVEVNX09ORSwgVE9ET19JVEVNX1RXTywgVE9ET19JVEVNX1RIUkVFXSkKKyAgICAgICAgICAg
ICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKCkgeyBkb25lKCk7IH0pOworICAgICAgICAgICAgfSk7
CisKKyAgICAgICAgfSk7CisKKyAgICAgICAgdGVzdC5kZXNjcmliZSgnQ291bnRlcicsIGZ1bmN0
aW9uICgpIHsKKworICAgICAgICAgICAgdGVzdC5pdCgnc2hvdWxkIGRpc3BsYXkgdGhlIGN1cnJl
bnQgbnVtYmVyIG9mIHRvZG8gaXRlbXMnLCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAgICAgICAg
ICAgIHBhZ2UuZW50ZXJJdGVtKFRPRE9fSVRFTV9PTkUpOworICAgICAgICAgICAgICAgIHRlc3RP
cHMuYXNzZXJ0SXRlbUNvdW50VGV4dCgnMSBpdGVtIGxlZnQnKTsKKyAgICAgICAgICAgICAgICBw
YWdlLmVudGVySXRlbShUT0RPX0lURU1fVFdPKTsKKyAgICAgICAgICAgICAgICB0ZXN0T3BzLmFz
c2VydEl0ZW1Db3VudFRleHQoJzIgaXRlbXMgbGVmdCcpCisgICAgICAgICAgICAgICAgICAgIC50
aGVuKGZ1bmN0aW9uICgpIHsgZG9uZSgpOyB9KTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAg
IH0pOworCisgICAgICAgIHRlc3QuZGVzY3JpYmUoJ0NsZWFyIGNvbXBsZXRlZCBidXR0b24nLCBm
dW5jdGlvbiAoKSB7CisKKyAgICAgICAgICAgIHRlc3QuYmVmb3JlRWFjaChjcmVhdGVTdGFuZGFy
ZEl0ZW1zKTsKKworICAgICAgICAgICAgdGVzdC5pdCgnc2hvdWxkIGRpc3BsYXkgdGhlIGNvcnJl
Y3QgdGV4dCcsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgICAgICAgICAgcGFnZS50b2dnbGVJ
dGVtQXRJbmRleCgxKTsKKyAgICAgICAgICAgICAgICB0ZXN0T3BzLmFzc2VydENsZWFyQ29tcGxl
dGVCdXR0b25UZXh0KCdDbGVhciBjb21wbGV0ZWQnKQorICAgICAgICAgICAgICAgICAgICAudGhl
bihmdW5jdGlvbiAoKSB7IGRvbmUoKTsgfSk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAg
ICAgdGVzdC5pdCgnc2hvdWxkIHJlbW92ZSBjb21wbGV0ZWQgaXRlbXMgd2hlbiBjbGlja2VkJywg
ZnVuY3Rpb24gKGRvbmUpIHsKKyAgICAgICAgICAgICAgICBwYWdlLnRvZ2dsZUl0ZW1BdEluZGV4
KDEpOworICAgICAgICAgICAgICAgIHBhZ2UuY2xpY2tDbGVhckNvbXBsZXRlQnV0dG9uKCk7Cisg
ICAgICAgICAgICAgICAgdGVzdE9wcy5hc3NlcnRJdGVtQ291bnQoMik7CisgICAgICAgICAgICAg
ICAgdGVzdE9wcy5hc3NlcnRJdGVtcyhbVE9ET19JVEVNX09ORSwgVE9ET19JVEVNX1RIUkVFXSkK
KyAgICAgICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKCkgeyBkb25lKCk7IH0pOworICAg
ICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIHRlc3QuaXQoJ3Nob3VsZCBiZSBoaWRkZW4gd2hl
biB0aGVyZSBhcmUgbm8gaXRlbXMgdGhhdCBhcmUgY29tcGxldGVkJywgZnVuY3Rpb24gKGRvbmUp
IHsKKyAgICAgICAgICAgICAgICBwYWdlLnRvZ2dsZUl0ZW1BdEluZGV4KDEpOworICAgICAgICAg
ICAgICAgIHRlc3RPcHMuYXNzZXJ0Q2xlYXJDb21wbGV0ZUJ1dHRvblZpc2liaWxpdHkodHJ1ZSk7
CisgICAgICAgICAgICAgICAgcGFnZS5jbGlja0NsZWFyQ29tcGxldGVCdXR0b24oKTsKKyAgICAg
ICAgICAgICAgICB0ZXN0T3BzLmFzc2VydENsZWFyQ29tcGxldGVCdXR0b25WaXNpYmlsaXR5KGZh
bHNlKQorICAgICAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAoKSB7IGRvbmUoKTsgfSk7
CisgICAgICAgICAgICB9KTsKKworICAgICAgICB9KTsKKworICAgICAgICB0ZXN0LmRlc2NyaWJl
KCdQZXJzaXN0ZW5jZScsIGZ1bmN0aW9uICgpIHsKKworICAgICAgICAgICAgdGVzdC5pdCgnc2hv
dWxkIHBlcnNpc3QgaXRzIGRhdGEnLCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAgICAgICAgICAg
IGZ1bmN0aW9uIHN0YXRlVGVzdCgpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdE9wcy5hc3Nl
cnRJdGVtQ291bnQoMik7CisgICAgICAgICAgICAgICAgICAgIHRlc3RPcHMuYXNzZXJ0SXRlbXMo
W1RPRE9fSVRFTV9PTkUsIFRPRE9fSVRFTV9UV09dKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHRlc3RPcHMuYXNzZXJ0SXRlbUNvbXBsZXRlZFN0YXRlcyhbZmFsc2UsIHRydWVdKTsKKyAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBzZXQgdXAgc3RhdGUKKyAgICAg
ICAgICAgICAgICBwYWdlLmVudGVySXRlbShUT0RPX0lURU1fT05FKTsKKyAgICAgICAgICAgICAg
ICBwYWdlLmVudGVySXRlbShUT0RPX0lURU1fVFdPKTsKKyAgICAgICAgICAgICAgICBwYWdlLnRv
Z2dsZUl0ZW1BdEluZGV4KDEpOworICAgICAgICAgICAgICAgIHN0YXRlVGVzdCgpOworCisgICAg
ICAgICAgICAgICAgLy8gbmF2aWdhdGUgYXdheSBhbmQgYmFjayBhZ2FpbgorICAgICAgICAgICAg
ICAgIGJyb3dzZXIuZ2V0KCdhYm91dDpibGFuaycpOworICAgICAgICAgICAgICAgIGJyb3dzZXIu
Z2V0KGJhc2VVcmwpOworCisgICAgICAgICAgICAgICAgLy8gcmVwZWF0IHRoZSBzdGF0ZSB0ZXN0
CisgICAgICAgICAgICAgICAgc3RhdGVUZXN0KCkKKyAgICAgICAgICAgICAgICAgICAgLnRoZW4o
ZnVuY3Rpb24gKCkgeyBkb25lKCk7IH0pOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgfSk7
CisKKyAgICAgICAgdGVzdC5kZXNjcmliZSgnUm91dGluZycsIGZ1bmN0aW9uICgpIHsKKworICAg
ICAgICAgICAgdGVzdC5iZWZvcmVFYWNoKGNyZWF0ZVN0YW5kYXJkSXRlbXMpOworCisgICAgICAg
ICAgICB0ZXN0Lml0KCdzaG91bGQgYWxsb3cgbWUgdG8gZGlzcGxheSBhY3RpdmUgaXRlbXMnLCBm
dW5jdGlvbiAoZG9uZSkgeworICAgICAgICAgICAgICAgIHBhZ2UudG9nZ2xlSXRlbUF0SW5kZXgo
MSk7CisgICAgICAgICAgICAgICAgcGFnZS5maWx0ZXJCeUFjdGl2ZUl0ZW1zKCk7CisgICAgICAg
ICAgICAgICAgdGVzdE9wcy5hc3NlcnRJdGVtcyhbVE9ET19JVEVNX09ORSwgcGFnZS5JVEVNX0hJ
RERFTl9PUl9SRU1PVkVELCBUT0RPX0lURU1fVEhSRUVdKQorICAgICAgICAgICAgICAgICAgICAu
dGhlbihmdW5jdGlvbiAoKSB7IHJldHVybiBkb25lKCk7IH0pOworICAgICAgICAgICAgfSk7CisK
KyAgICAgICAgICAgIHRlc3QuaXQoJ3Nob3VsZCByZXNwZWN0IHRoZSBiYWNrIGJ1dHRvbicsIGZ1
bmN0aW9uIChkb25lKSB7CisgICAgICAgICAgICAgICAgcGFnZS50b2dnbGVJdGVtQXRJbmRleCgx
KTsKKyAgICAgICAgICAgICAgICBwYWdlLmZpbHRlckJ5QWN0aXZlSXRlbXMoKTsKKyAgICAgICAg
ICAgICAgICBwYWdlLmZpbHRlckJ5Q29tcGxldGVkSXRlbXMoKTsKKyAgICAgICAgICAgICAgICB0
ZXN0T3BzLmFzc2VydEl0ZW1zKFtwYWdlLklURU1fSElEREVOX09SX1JFTU9WRUQsIFRPRE9fSVRF
TV9UV09dKTsgLy8gc2hvdWxkIHNob3cgY29tcGxldGVkIGl0ZW1zCisgICAgICAgICAgICAgICAg
cGFnZS5iYWNrKCk7IC8vIHRoZW4gYWN0aXZlIGl0ZW1zCisgICAgICAgICAgICAgICAgdGVzdE9w
cy5hc3NlcnRJdGVtcyhbVE9ET19JVEVNX09ORSwgcGFnZS5JVEVNX0hJRERFTl9PUl9SRU1PVkVE
LCBUT0RPX0lURU1fVEhSRUVdKTsKKyAgICAgICAgICAgICAgICBwYWdlLmJhY2soKTsgLy8gdGhl
biBhbGwgaXRlbXMKKyAgICAgICAgICAgICAgICB0ZXN0T3BzLmFzc2VydEl0ZW1zKFtUT0RPX0lU
RU1fT05FLCBUT0RPX0lURU1fVFdPLCBUT0RPX0lURU1fVEhSRUVdKQorICAgICAgICAgICAgICAg
ICAgICAudGhlbihmdW5jdGlvbiAoKSB7IGRvbmUoKTsgfSk7CisgICAgICAgICAgICB9KTsKKwor
ICAgICAgICAgICAgdGVzdC5pdCgnc2hvdWxkIGFsbG93IG1lIHRvIGRpc3BsYXkgY29tcGxldGVk
IGl0ZW1zJywgZnVuY3Rpb24gKGRvbmUpIHsKKyAgICAgICAgICAgICAgICBwYWdlLnRvZ2dsZUl0
ZW1BdEluZGV4KDEpOworICAgICAgICAgICAgICAgIHBhZ2UuZmlsdGVyQnlDb21wbGV0ZWRJdGVt
cygpOworICAgICAgICAgICAgICAgIHRlc3RPcHMuYXNzZXJ0SXRlbXMoW3BhZ2UuSVRFTV9ISURE
RU5fT1JfUkVNT1ZFRCwgVE9ET19JVEVNX1RXT10pOworICAgICAgICAgICAgICAgIHBhZ2UuZmls
dGVyQnlBbGxJdGVtcygpIC8vIFRPRE86IHdoeQorICAgICAgICAgICAgICAgICAgICAudGhlbihm
dW5jdGlvbiAoKSB7IGRvbmUoKTsgfSk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAg
dGVzdC5pdCgnc2hvdWxkIGFsbG93IG1lIHRvIGRpc3BsYXkgYWxsIGl0ZW1zJywgZnVuY3Rpb24g
KGRvbmUpIHsKKyAgICAgICAgICAgICAgICBwYWdlLnRvZ2dsZUl0ZW1BdEluZGV4KDEpOworCisg
ICAgICAgICAgICAgICAgLy8gYXBwbHkgdGhlIG90aGVyIGZpbHRlcnMgZmlyc3QsIGJlZm9yZSBy
ZXR1cm5pbmcgdG8gdGhlICdhbGwnIHN0YXRlCisgICAgICAgICAgICAgICAgcGFnZS5maWx0ZXJC
eUFjdGl2ZUl0ZW1zKCk7CisgICAgICAgICAgICAgICAgcGFnZS5maWx0ZXJCeUNvbXBsZXRlZEl0
ZW1zKCk7CisgICAgICAgICAgICAgICAgcGFnZS5maWx0ZXJCeUFsbEl0ZW1zKCk7CisgICAgICAg
ICAgICAgICAgdGVzdE9wcy5hc3NlcnRJdGVtcyhbVE9ET19JVEVNX09ORSwgVE9ET19JVEVNX1RX
TywgVE9ET19JVEVNX1RIUkVFXSkKKyAgICAgICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24g
KCkgeyBkb25lKCk7IH0pOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIHRlc3QuaXQo
J3Nob3VsZCBoaWdobGlnaHQgdGhlIGN1cnJlbnRseSBhcHBsaWVkIGZpbHRlcicsIGZ1bmN0aW9u
IChkb25lKSB7CisgICAgICAgICAgICAgICAgLy8gaW5pdGlhbGx5ICdhbGwnIHNob3VsZCBiZSBz
ZWxlY3RlZAorICAgICAgICAgICAgICAgIHRlc3RPcHMuYXNzZXJ0RmlsdGVyQXRJbmRleElzU2Vs
ZWN0ZWQoMCk7CisgICAgICAgICAgICAgICAgcGFnZS5maWx0ZXJCeUFjdGl2ZUl0ZW1zKCk7Cisg
ICAgICAgICAgICAgICAgdGVzdE9wcy5hc3NlcnRGaWx0ZXJBdEluZGV4SXNTZWxlY3RlZCgxKTsK
KyAgICAgICAgICAgICAgICBwYWdlLmZpbHRlckJ5Q29tcGxldGVkSXRlbXMoKTsKKyAgICAgICAg
ICAgICAgICB0ZXN0T3BzLmFzc2VydEZpbHRlckF0SW5kZXhJc1NlbGVjdGVkKDIpCisgICAgICAg
ICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uICgpIHsgZG9uZSgpOyB9KTsKKyAgICAgICAgICAg
IH0pOworCisgICAgICAgIH0pOworCisgICAgfSk7Cit9OworCisndXNlIHN0cmljdCc7CisKKy8q
KgorICogSW5pdCB0ZXN0CisgKi8KK3RvZG9NVkNUZXN0KAorICAgICdodHRwOi8vbG9jYWxob3N0
OjgwMDAvaW5kZXguaHRtbCcsCisgICAgYXJndi5zcGVlZE1vZGUsCisgICAgYXJndi5sYXhNb2Rl
LAorICAgIGFyZ3YuYnJvd3NlcgorKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2luZmVybm8v
dGVzdC9rbm93bklzc3Vlcy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2luZmVybm8vdGVzdC9rbm93bklzc3Vl
cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hM2JlNGZlYzJkMzQzNGUxYTY0Mjc3YTdmNTVlMzIwNmI5NWY3Y2Uw
Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvaW5mZXJuby90ZXN0L2tub3duSXNzdWVz
LmpzCkBAIC0wLDAgKzEsMTMxIEBACittb2R1bGUuZXhwb3J0cyA9IFsKKworICAgIC8vIGR1cmFu
ZGFsIHJvdXRpbmcgaXMgdmVyeSB2ZXJ5IHNsb3cuCisgICAgLy8gc2VlOiBodHRwczovL2dpdGh1
Yi5jb20vdGFzdGVqcy90b2RvbXZjL2lzc3Vlcy84MzEKKyAgICAnVG9kb01WQyAtIGR1cmFuZGFs
LCBSb3V0aW5nLCBzaG91bGQgYWxsb3cgbWUgdG8gZGlzcGxheSBhY3RpdmUgaXRlbXMnLAorICAg
ICdUb2RvTVZDIC0gZHVyYW5kYWwsIFJvdXRpbmcsIHNob3VsZCBhbGxvdyBtZSB0byBkaXNwbGF5
IGNvbXBsZXRlZCBpdGVtcycsCisgICAgJ1RvZG9NVkMgLSBkdXJhbmRhbCwgUm91dGluZywgc2hv
dWxkIGFsbG93IG1lIHRvIGRpc3BsYXkgYWxsIGl0ZW1zJywKKyAgICAnVG9kb01WQyAtIGR1cmFu
ZGFsLCBSb3V0aW5nLCBzaG91bGQgaGlnaGxpZ2h0IHRoZSBjdXJyZW50bHkgYXBwbGllZCBmaWx0
ZXInLAorCisgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3Rhc3RlanMvdG9kb212Yy9pc3N1ZXMv
ODI4CisgICAgLy8gcm91dGluZyBzaG91bGQgZGVmYXVsdCB0byBhbGwKKyAgICAnVG9kb01WQyAt
IHNhbW15anMsIFJvdXRpbmcsIHNob3VsZCBoaWdobGlnaHQgdGhlIGN1cnJlbnRseSBhcHBsaWVk
IGZpbHRlcicsCisKKyAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdGFzdGVqcy90b2RvbXZjL2lz
c3Vlcy84MjQKKyAgICAvLyB0aGlzIGltcGxlbWVudGF0aW9uIGhhcyBudW1lcm91cyBlZGl0IGV4
cGVyaWVuY2UgaXNzdWVzCisgICAgJ1RvZG9NVkMgLSBhbmd1bGFyanNfcmVxdWlyZSwgTWFyayBh
bGwgYXMgY29tcGxldGVkLCBzaG91bGQgYWxsb3cgbWUgdG8gbWFyayBhbGwgaXRlbXMgYXMgY29t
cGxldGVkJywKKyAgICAnVG9kb01WQyAtIGFuZ3VsYXJqc19yZXF1aXJlLCBNYXJrIGFsbCBhcyBj
b21wbGV0ZWQsIHNob3VsZCBhbGxvdyBtZSB0byBjbGVhciB0aGUgY29tcGxldGlvbiBzdGF0ZSBv
ZiBhbGwgaXRlbXMnLAorICAgIC8vIGpzY3M6ZGlzYWJsZQorICAgICdUb2RvTVZDIC0gYW5ndWxh
cmpzX3JlcXVpcmUsIE1hcmsgYWxsIGFzIGNvbXBsZXRlZCwgY29tcGxldGUgYWxsIGNoZWNrYm94
IHNob3VsZCB1cGRhdGUgc3RhdGUgd2hlbiBpdGVtcyBhcmUgY29tcGxldGVkIC8gY2xlYXJlZCcs
CisKKyAgICAvLyBqc2NzOmVuYWJsZQorICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YXN0ZWpz
L3RvZG9tdmMvaXNzdWVzLzgxNQorICAgIC8vIGRvZXMgbm90IGhpZGUgb3RoZXIgY29udHJvbHMg
d2hpbGUgZWRpdGluZworICAgICdUb2RvTVZDIC0gZG9qbywgRWRpdGluZywgc2hvdWxkIGhpZGUg
b3RoZXIgY29udHJvbHMgd2hlbiBlZGl0aW5nJywKKworICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNv
bS90YXN0ZWpzL3RvZG9tdmMvaXNzdWVzLzgxNgorICAgIC8vIGF0bWEgZG9lcyBub3QgaGlkZSB0
aGUgbWFpbiBzZWN0aW9uLCBpbnN0ZWFkIGl0IGhpZGVzIHRoZSB0b2dnbGUtYWxsIGNoZWNrYm94
CisgICAgJ1RvZG9NVkMgLSBhdG1hanMsIE5vIFRvZG9zLCBzaG91bGQgaGlkZSAjbWFpbiBhbmQg
I2Zvb3RlcicsCisKKyAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdGFzdGVqcy90b2RvbXZjL2lz
c3Vlcy84MTkKKyAgICAvLyB0aGUgZWRpdCBleHBlcmllbmNlIHdpdGggc29tYSBpcyBxdWl0ZSBi
cm9rZW4uIFlvdSBjYW4KKyAgICAvLyBnZXQgbXVsdGlwbGUgZWxlbWVudHMgaW50byBhbiBlZGl0
IHN0YXRlCisgICAgJ1RvZG9NVkMgLSBzb21hanNfcmVxdWlyZSwgRWRpdGluZywgc2hvdWxkIHJl
bW92ZSB0aGUgaXRlbSBpZiBhbiBlbXB0eSB0ZXh0IHN0cmluZyB3YXMgZW50ZXJlZCcsCisgICAg
J1RvZG9NVkMgLSBzb21hanNfcmVxdWlyZSwgRWRpdGluZywgc2hvdWxkIGNhbmNlbCBlZGl0cyBv
biBlc2NhcGUnLAorCisgICAgLy8gdGhlIGZvbGxvd2luZyBhcmUgY292ZXJlZCBieSB0aGUgZm9s
bG93aW5nIGlzc3VlOgorICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YXN0ZWpzL3RvZG9tdmMv
aXNzdWVzLzc4OQorICAgICdUb2RvTVZDIC0gY2xvc3VyZSwgRWRpdGluZywgc2hvdWxkIGNhbmNl
bCBlZGl0cyBvbiBlc2NhcGUnLAorICAgICdUb2RvTVZDIC0gYXJpYXRlbXBsYXRlcywgRWRpdGlu
Zywgc2hvdWxkIGNhbmNlbCBlZGl0cyBvbiBlc2NhcGUnLAorICAgICdUb2RvTVZDIC0gZGVybWlz
LCBFZGl0aW5nLCBzaG91bGQgY2FuY2VsIGVkaXRzIG9uIGVzY2FwZScsCisgICAgJ1RvZG9NVkMg
LSBkdWVsLCBFZGl0aW5nLCBzaG91bGQgY2FuY2VsIGVkaXRzIG9uIGVzY2FwZScsCisgICAgJ1Rv
ZG9NVkMgLSBleHRqc19kZWZ0anMsIEVkaXRpbmcsIHNob3VsZCBjYW5jZWwgZWRpdHMgb24gZXNj
YXBlJywKKyAgICAnVG9kb01WQyAtIG9saXZlcywgRWRpdGluZywgc2hvdWxkIGNhbmNlbCBlZGl0
cyBvbiBlc2NhcGUnLAorICAgICdUb2RvTVZDIC0gcmFwcGlkanMsIEVkaXRpbmcsIHNob3VsZCBj
YW5jZWwgZWRpdHMgb24gZXNjYXBlJywKKyAgICAnVG9kb01WQyAtIHNlcmVuYWRlanMsIEVkaXRp
bmcsIHNob3VsZCBjYW5jZWwgZWRpdHMgb24gZXNjYXBlJywKKyAgICAnVG9kb01WQyAtIHR5cGVz
Y3JpcHQtYW5ndWxhciwgRWRpdGluZywgc2hvdWxkIGNhbmNlbCBlZGl0cyBvbiBlc2NhcGUnLAor
ICAgICdUb2RvTVZDIC0gZmxpZ2h0LCBFZGl0aW5nLCBzaG91bGQgY2FuY2VsIGVkaXRzIG9uIGVz
Y2FwZScsCisgICAgJ1RvZG9NVkMgLSBiYWNrYm9uZV9yZXF1aXJlLCBFZGl0aW5nLCBzaG91bGQg
Y2FuY2VsIGVkaXRzIG9uIGVzY2FwZScsCisgICAgJ1RvZG9NVkMgLSBkaWpvbiwgRWRpdGluZywg
c2hvdWxkIGNhbmNlbCBlZGl0cyBvbiBlc2NhcGUnLAorICAgICdUb2RvTVZDIC0ga25vY2tvdXRq
c19yZXF1aXJlLCBFZGl0aW5nLCBzaG91bGQgY2FuY2VsIGVkaXRzIG9uIGVzY2FwZScsCisKKyAg
ICAvLyBhbGwgdGhlIGZvbGxvd2luZyBhcmUgY292ZXJlZCBieSB0aGlzIGlzc3VlOgorICAgIC8v
IGh0dHBzOi8vZ2l0aHViLmNvbS90YXN0ZWpzL3RvZG9tdmMvaXNzdWVzLzg1NgorICAgICdUb2Rv
TVZDIC0ga25vY2tvdXRqcywgUm91dGluZywgc2hvdWxkIHJlc3BlY3QgdGhlIGJhY2sgYnV0dG9u
JywKKyAgICAnVG9kb01WQyAtIHNwaW5lLCBSb3V0aW5nLCBzaG91bGQgcmVzcGVjdCB0aGUgYmFj
ayBidXR0b24nLAorICAgICdUb2RvTVZDIC0gc2VyZW5hZGVqcywgUm91dGluZywgc2hvdWxkIHJl
c3BlY3QgdGhlIGJhY2sgYnV0dG9uJywKKyAgICAnVG9kb01WQyAtIGZsaWdodCwgUm91dGluZywg
c2hvdWxkIHJlc3BlY3QgdGhlIGJhY2sgYnV0dG9uJywKKyAgICAnVG9kb01WQyAtIGxhdmFjYV9y
ZXF1aXJlLCBSb3V0aW5nLCBzaG91bGQgcmVzcGVjdCB0aGUgYmFjayBidXR0b24nLAorICAgICdU
b2RvTVZDIC0gc29tYWpzX3JlcXVpcmUsIFJvdXRpbmcsIHNob3VsZCByZXNwZWN0IHRoZSBiYWNr
IGJ1dHRvbicsCisKKyAgICAvLyB0aGUgZm9sbG93aW5nIGltcGxlbWVudGF0aW9ucyBkbyBub3Qg
c3VwcG9ydCByb3V0aW5nCisgICAgJ1RvZG9NVkMgLSBleHRqc19kZWZ0anMsIFJvdXRpbmcsIHNo
b3VsZCBhbGxvdyBtZSB0byBkaXNwbGF5IGFjdGl2ZSBpdGVtcycsCisgICAgJ1RvZG9NVkMgLSBl
eHRqc19kZWZ0anMsIFJvdXRpbmcsIHNob3VsZCBhbGxvdyBtZSB0byBkaXNwbGF5IGNvbXBsZXRl
ZCBpdGVtcycsCisgICAgJ1RvZG9NVkMgLSBleHRqc19kZWZ0anMsIFJvdXRpbmcsIHNob3VsZCBh
bGxvdyBtZSB0byBkaXNwbGF5IGFsbCBpdGVtcycsCisgICAgJ1RvZG9NVkMgLSBleHRqc19kZWZ0
anMsIFJvdXRpbmcsIHNob3VsZCBoaWdobGlnaHQgdGhlIGN1cnJlbnRseSBhcHBsaWVkIGZpbHRl
cicsCisgICAgJ1RvZG9NVkMgLSBleHRqc19kZWZ0anMsIFJvdXRpbmcsIHNob3VsZCByZXNwZWN0
IHRoZSBiYWNrIGJ1dHRvbicsCisgICAgJ1RvZG9NVkMgLSBvbGl2ZXMsIFJvdXRpbmcsIHNob3Vs
ZCBhbGxvdyBtZSB0byBkaXNwbGF5IGFjdGl2ZSBpdGVtcycsCisgICAgJ1RvZG9NVkMgLSBvbGl2
ZXMsIFJvdXRpbmcsIHNob3VsZCBhbGxvdyBtZSB0byBkaXNwbGF5IGNvbXBsZXRlZCBpdGVtcycs
CisgICAgJ1RvZG9NVkMgLSBvbGl2ZXMsIFJvdXRpbmcsIHNob3VsZCBhbGxvdyBtZSB0byBkaXNw
bGF5IGFsbCBpdGVtcycsCisgICAgJ1RvZG9NVkMgLSBvbGl2ZXMsIFJvdXRpbmcsIHNob3VsZCBo
aWdobGlnaHQgdGhlIGN1cnJlbnRseSBhcHBsaWVkIGZpbHRlcicsCisgICAgJ1RvZG9NVkMgLSBv
bGl2ZXMsIFJvdXRpbmcsIHNob3VsZCByZXNwZWN0IHRoZSBiYWNrIGJ1dHRvbicsCisgICAgJ1Rv
ZG9NVkMgLSBkaWpvbiwgUm91dGluZywgc2hvdWxkIGFsbG93IG1lIHRvIGRpc3BsYXkgYWN0aXZl
IGl0ZW1zJywKKyAgICAnVG9kb01WQyAtIGRpam9uLCBSb3V0aW5nLCBzaG91bGQgYWxsb3cgbWUg
dG8gZGlzcGxheSBjb21wbGV0ZWQgaXRlbXMnLAorICAgICdUb2RvTVZDIC0gZGlqb24sIFJvdXRp
bmcsIHNob3VsZCBhbGxvdyBtZSB0byBkaXNwbGF5IGFsbCBpdGVtcycsCisgICAgJ1RvZG9NVkMg
LSBkaWpvbiwgUm91dGluZywgc2hvdWxkIGhpZ2hsaWdodCB0aGUgY3VycmVudGx5IGFwcGxpZWQg
ZmlsdGVyJywKKyAgICAnVG9kb01WQyAtIGRpam9uLCBSb3V0aW5nLCBzaG91bGQgcmVzcGVjdCB0
aGUgYmFjayBidXR0b24nLAorICAgICdUb2RvTVZDIC0gZHVlbCwgUm91dGluZywgc2hvdWxkIGFs
bG93IG1lIHRvIGRpc3BsYXkgYWN0aXZlIGl0ZW1zJywKKyAgICAnVG9kb01WQyAtIGR1ZWwsIFJv
dXRpbmcsIHNob3VsZCBhbGxvdyBtZSB0byBkaXNwbGF5IGNvbXBsZXRlZCBpdGVtcycsCisgICAg
J1RvZG9NVkMgLSBkdWVsLCBSb3V0aW5nLCBzaG91bGQgYWxsb3cgbWUgdG8gZGlzcGxheSBhbGwg
aXRlbXMnLAorICAgICdUb2RvTVZDIC0gZHVlbCwgUm91dGluZywgc2hvdWxkIGhpZ2hsaWdodCB0
aGUgY3VycmVudGx5IGFwcGxpZWQgZmlsdGVyJywKKyAgICAnVG9kb01WQyAtIGR1ZWwsIFJvdXRp
bmcsIHNob3VsZCByZXNwZWN0IHRoZSBiYWNrIGJ1dHRvbicsCisgICAgJ1RvZG9NVkMgLSBrbm9j
a291dGpzX3JlcXVpcmUsIFJvdXRpbmcsIHNob3VsZCBhbGxvdyBtZSB0byBkaXNwbGF5IGFjdGl2
ZSBpdGVtcycsCisgICAgJ1RvZG9NVkMgLSBrbm9ja291dGpzX3JlcXVpcmUsIFJvdXRpbmcsIHNo
b3VsZCBhbGxvdyBtZSB0byBkaXNwbGF5IGNvbXBsZXRlZCBpdGVtcycsCisgICAgJ1RvZG9NVkMg
LSBrbm9ja291dGpzX3JlcXVpcmUsIFJvdXRpbmcsIHNob3VsZCBhbGxvdyBtZSB0byBkaXNwbGF5
IGFsbCBpdGVtcycsCisgICAgJ1RvZG9NVkMgLSBrbm9ja291dGpzX3JlcXVpcmUsIFJvdXRpbmcs
IHNob3VsZCBoaWdobGlnaHQgdGhlIGN1cnJlbnRseSBhcHBsaWVkIGZpbHRlcicsCisgICAgJ1Rv
ZG9NVkMgLSBrbm9ja291dGpzX3JlcXVpcmUsIFJvdXRpbmcsIHNob3VsZCByZXNwZWN0IHRoZSBi
YWNrIGJ1dHRvbicsCisgICAgJ1RvZG9NVkMgLSBhbmd1bGFyLWRhcnQsIFJvdXRpbmcsIHNob3Vs
ZCBhbGxvdyBtZSB0byBkaXNwbGF5IGFjdGl2ZSBpdGVtcycsCisgICAgJ1RvZG9NVkMgLSBhbmd1
bGFyLWRhcnQsIFJvdXRpbmcsIHNob3VsZCBhbGxvdyBtZSB0byBkaXNwbGF5IGNvbXBsZXRlZCBp
dGVtcycsCisgICAgJ1RvZG9NVkMgLSBhbmd1bGFyLWRhcnQsIFJvdXRpbmcsIHNob3VsZCBhbGxv
dyBtZSB0byBkaXNwbGF5IGFsbCBpdGVtcycsCisgICAgJ1RvZG9NVkMgLSBhbmd1bGFyLWRhcnQs
IFJvdXRpbmcsIHNob3VsZCBoaWdobGlnaHQgdGhlIGN1cnJlbnRseSBhcHBsaWVkIGZpbHRlcics
CisgICAgJ1RvZG9NVkMgLSBhbmd1bGFyLWRhcnQsIFJvdXRpbmcsIHNob3VsZCByZXNwZWN0IHRo
ZSBiYWNrIGJ1dHRvbicsCisgICAgJ1RvZG9NVkMgLSB0eXBlc2NyaXB0LWJhY2tib25lLCBSb3V0
aW5nLCBzaG91bGQgYWxsb3cgbWUgdG8gZGlzcGxheSBhY3RpdmUgaXRlbXMnLAorICAgICdUb2Rv
TVZDIC0gdHlwZXNjcmlwdC1iYWNrYm9uZSwgUm91dGluZywgc2hvdWxkIGFsbG93IG1lIHRvIGRp
c3BsYXkgY29tcGxldGVkIGl0ZW1zJywKKyAgICAnVG9kb01WQyAtIHR5cGVzY3JpcHQtYmFja2Jv
bmUsIFJvdXRpbmcsIHNob3VsZCBhbGxvdyBtZSB0byBkaXNwbGF5IGFsbCBpdGVtcycsCisgICAg
J1RvZG9NVkMgLSB0eXBlc2NyaXB0LWJhY2tib25lLCBSb3V0aW5nLCBzaG91bGQgaGlnaGxpZ2h0
IHRoZSBjdXJyZW50bHkgYXBwbGllZCBmaWx0ZXInLAorICAgICdUb2RvTVZDIC0gdHlwZXNjcmlw
dC1iYWNrYm9uZSwgUm91dGluZywgc2hvdWxkIHJlc3BlY3QgdGhlIGJhY2sgYnV0dG9uJywKKwor
ICAgIC8vIEVYVEpTIGlzIG5vdCBzcGVjIGNvbXBsaWFudCAoYnkgYSBsb25nIHdheSEpCisgICAg
J1RvZG9NVkMgLSBleHRqcywgTmV3IFRvZG8sIHNob3VsZCBzaG93ICNtYWluIGFuZCAjZm9vdGVy
IHdoZW4gaXRlbXMgYWRkZWQnLAorICAgICdUb2RvTVZDIC0gZXh0anMsIE1hcmsgYWxsIGFzIGNv
bXBsZXRlZCwgc2hvdWxkIGFsbG93IG1lIHRvIG1hcmsgYWxsIGl0ZW1zIGFzIGNvbXBsZXRlZCcs
CisgICAgJ1RvZG9NVkMgLSBleHRqcywgTWFyayBhbGwgYXMgY29tcGxldGVkLCBjb21wbGV0ZSBh
bGwgY2hlY2tib3ggc2hvdWxkIHVwZGF0ZSBzdGF0ZSB3aGVuIGl0ZW1zIGFyZSBjb21wbGV0ZWQg
LyBjbGVhcmVkJywKKyAgICAnVG9kb01WQyAtIGV4dGpzLCBJdGVtLCBzaG91bGQgYWxsb3cgbWUg
dG8gbWFyayBpdGVtcyBhcyBjb21wbGV0ZScsCisgICAgJ1RvZG9NVkMgLSBleHRqcywgSXRlbSwg
c2hvdWxkIGFsbG93IG1lIHRvIHVuLW1hcmsgaXRlbXMgYXMgY29tcGxldGUnLAorICAgICdUb2Rv
TVZDIC0gZXh0anMsIEVkaXRpbmcsIHNob3VsZCBzYXZlIGVkaXRzIG9uIGJsdXInLAorICAgICdU
b2RvTVZDIC0gZXh0anMsIEVkaXRpbmcsIHNob3VsZCBjYW5jZWwgZWRpdHMgb24gZXNjYXBlJywK
KyAgICAnVG9kb01WQyAtIGV4dGpzLCBDb3VudGVyLCBzaG91bGQgZGlzcGxheSB0aGUgY3VycmVu
dCBudW1iZXIgb2YgdG9kbyBpdGVtcycsCisgICAgJ1RvZG9NVkMgLSBleHRqcywgQ2xlYXIgY29t
cGxldGVkIGJ1dHRvbiwgc2hvdWxkIGRpc3BsYXkgdGhlIG51bWJlciBvZiBjb21wbGV0ZWQgaXRl
bXMnLAorICAgICdUb2RvTVZDIC0gZXh0anMsIENsZWFyIGNvbXBsZXRlZCBidXR0b24sIHNob3Vs
ZCByZW1vdmUgY29tcGxldGVkIGl0ZW1zIHdoZW4gY2xpY2tlZCcsCisgICAgJ1RvZG9NVkMgLSBl
eHRqcywgQ2xlYXIgY29tcGxldGVkIGJ1dHRvbiwgc2hvdWxkIGJlIGhpZGRlbiB3aGVuIHRoZXJl
IGFyZSBubyBpdGVtcyB0aGF0IGFyZSBjb21wbGV0ZWQnLAorICAgICdUb2RvTVZDIC0gZXh0anMs
IFBlcnNpc3RlbmNlLCBzaG91bGQgcGVyc2lzdCBpdHMgZGF0YScsCisgICAgJ1RvZG9NVkMgLSBl
eHRqcywgUm91dGluZywgc2hvdWxkIGFsbG93IG1lIHRvIGRpc3BsYXkgYWN0aXZlIGl0ZW1zJywK
KyAgICAnVG9kb01WQyAtIGV4dGpzLCBSb3V0aW5nLCBzaG91bGQgYWxsb3cgbWUgdG8gZGlzcGxh
eSBjb21wbGV0ZWQgaXRlbXMnLAorICAgICdUb2RvTVZDIC0gZXh0anMsIFJvdXRpbmcsIHNob3Vs
ZCBhbGxvdyBtZSB0byBkaXNwbGF5IGFsbCBpdGVtcycsCisgICAgJ1RvZG9NVkMgLSBleHRqcywg
Um91dGluZywgc2hvdWxkIGhpZ2hsaWdodCB0aGUgY3VycmVudGx5IGFwcGxpZWQgZmlsdGVyJywK
KyAgICAnVG9kb01WQyAtIGV4dGpzLCBSb3V0aW5nLCBzaG91bGQgcmVzcGVjdCB0aGUgYmFjayBi
dXR0b24nLAorCisgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0gVGVzdCBmcmFtZXdvcmsgaXNzdWVz
IC0tLS0tLS0tLS0tCisKKyAgICAvLyBmb3Igc29tZSByZWFzb24gdGhlIHBlcnNpc3RlbmNlIHRl
c3QgZmFpbHMgZm9yIGtub2Nrb3V0LCBldmVuIHRob3VnaCBwZXJzaXN0ZW5jZSBpcyB3b3JraW5n
CisgICAgLy8ganVzdCBmaW5lLiBQZXJoYXBzIHRoZXJlIGlzIHNvbWV0aGluZyBhc3luY2hyb25v
dXMgZ29pbmcgb24gdGhhdCBpcyBjYXVzaW5nIHRoZSBhc3NlcnQKKyAgICAvLyB0byBiZSBleGVj
dXRlZCBlYXJseT8KKyAgICAnVG9kb01WQyAtIGtub2Nrb3V0anMsIFBlcnNpc3RlbmNlLCBzaG91
bGQgcGVyc2lzdCBpdHMgZGF0YScsCisKKyAgICAvLyBjaGFwbGluIGVkaXQgdGVzdHMgZmFpbCB3
aXRoIHRoZSBmb2xsb3dpbmc6CisgICAgLy8gU3RhbGVFbGVtZW50UmVmZXJlbmNlRXJyb3I6IHN0
YWxlIGVsZW1lbnQgcmVmZXJlbmNlOiBlbGVtZW50IGlzIG5vdCBhdHRhY2hlZCB0byB0aGUgcGFn
ZSBkb2N1bWVudAorICAgICdUb2RvTVZDIC0gY2hhcGxpbi1icnVuY2gsIEVkaXRpbmcsIHNob3Vs
ZCBzYXZlIGVkaXRzIG9uIGVudGVyJywKKyAgICAnVG9kb01WQyAtIGNoYXBsaW4tYnJ1bmNoLCBF
ZGl0aW5nLCBzaG91bGQgc2F2ZSBlZGl0cyBvbiBibHVyJywKKyAgICAnVG9kb01WQyAtIGNoYXBs
aW4tYnJ1bmNoLCBFZGl0aW5nLCBzaG91bGQgdHJpbSBlbnRlcmVkIHRleHQnLAorICAgICdUb2Rv
TVZDIC0gY2hhcGxpbi1icnVuY2gsIEVkaXRpbmcsIHNob3VsZCByZW1vdmUgdGhlIGl0ZW0gaWYg
YW4gZW1wdHkgdGV4dCBzdHJpbmcgd2FzIGVudGVyZWQnLAorICAgICdUb2RvTVZDIC0gY2hhcGxp
bi1icnVuY2gsIEVkaXRpbmcsIHNob3VsZCBjYW5jZWwgZWRpdHMgb24gZXNjYXBlJworXTsKZGlm
ZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2luZmVybm8vdGVzdC9sZWFybi5qc29uIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvaW5mZXJuby90ZXN0L2xlYXJuLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDhkZTIwMzkxNWFhMGU3Mzc5
NmI4Y2JiMGE0MThhZmMwYjE3YjY0YQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2lu
ZmVybm8vdGVzdC9sZWFybi5qc29uCkBAIC0wLDAgKzEsNSBAQAoreworICAidGVtcGxhdGVzIjog
eworICAgICJ0b2RvbXZjIjogIjxoZWFkZXI+IDxoMz48JT0gbmFtZSAlPjwvaDM+IDxzcGFuIGNs
YXNzPVwic291cmNlLWxpbmtzXCI+IDwlIGlmICh0eXBlb2YgZXhhbXBsZXMgIT09ICd1bmRlZmlu
ZWQnKSB7ICU+IDwlIGV4YW1wbGVzLmZvckVhY2goZnVuY3Rpb24gKGV4YW1wbGUpIHsgJT4gPGg1
PjwlPSBleGFtcGxlLm5hbWUgJT48L2g1PiA8JSBpZiAoIWxvY2F0aW9uLmhyZWYubWF0Y2goZXhh
bXBsZS51cmwgKyAnLycpKSB7ICU+IDxhIGNsYXNzPVwiZGVtby1saW5rXCIgZGF0YS10eXBlPVwi
PCU9IGV4YW1wbGUudHlwZSA9PT0gJ2JhY2tlbmQnID8gJ2V4dGVybmFsJyA6ICdsb2NhbCcgJT5c
IiBocmVmPVwiPCU9IGV4YW1wbGUudXJsICU+XCI+RGVtbzwvYT4sIDwlIH0gaWYgKGV4YW1wbGUu
dHlwZSA9PT0gJ2JhY2tlbmQnKSB7ICU+PGEgaHJlZj1cIjwlPSBleGFtcGxlLnNvdXJjZV91cmwg
JT5cIj48JSB9IGVsc2UgeyAlPjxhIGhyZWY9XCJodHRwczovL2dpdGh1Yi5jb20vdGFzdGVqcy90
b2RvbXZjL3RyZWUvZ2gtcGFnZXMvPCU9IGV4YW1wbGUuc291cmNlX3VybCA/IGV4YW1wbGUuc291
cmNlX3VybCA6IGV4YW1wbGUudXJsICU+XCI+PCUgfSAlPlNvdXJjZTwvYT4gPCUgfSk7ICU+IDwl
IH0gJT4gPC9zcGFuPiA8L2hlYWRlcj4gPGhyPiA8YmxvY2txdW90ZSBjbGFzcz1cInF1b3RlIHNw
ZWVjaC1idWJibGVcIj4gPHA+PCU9IGRlc2NyaXB0aW9uICU+PC9wPiA8Zm9vdGVyPiA8YSBocmVm
PVwiaHR0cDovLzwlPSBob21lcGFnZSAlPlwiPjwlPSBuYW1lICU+PC9hPiA8L2Zvb3Rlcj4gPC9i
bG9ja3F1b3RlPiA8JSBpZiAodHlwZW9mIGxpbmtfZ3JvdXBzICE9PSAndW5kZWZpbmVkJykgeyAl
PiA8aHI+IDwlIGxpbmtfZ3JvdXBzLmZvckVhY2goZnVuY3Rpb24gKGxpbmtfZ3JvdXApIHsgJT4g
PGg0PjwlPSBsaW5rX2dyb3VwLmhlYWRpbmcgJT48L2g0PiA8dWw+IDwlIGxpbmtfZ3JvdXAubGlu
a3MuZm9yRWFjaChmdW5jdGlvbiAobGluaykgeyAlPiA8bGk+IDxhIGhyZWY9XCI8JT0gbGluay51
cmwgJT5cIj48JT0gbGluay5uYW1lICU+PC9hPiA8L2xpPiA8JSB9KTsgJT4gPC91bD4gPCUgfSk7
ICU+IDwlIH0gJT4gPGZvb3Rlcj4gPGhyPiA8ZW0+SWYgeW91IGhhdmUgb3RoZXIgaGVscGZ1bCBs
aW5rcyB0byBzaGFyZSwgb3IgZmluZCBhbnkgb2YgdGhlIGxpbmtzIGFib3ZlIG5vIGxvbmdlciB3
b3JrLCBwbGVhc2UgPGEgaHJlZj1cImh0dHBzOi8vZ2l0aHViLmNvbS90YXN0ZWpzL3RvZG9tdmMv
aXNzdWVzXCI+bGV0IHVzIGtub3c8L2E+LjwvZW0+IDwvZm9vdGVyPiIKKyAgfQorfQpkaWZmIC0t
Z2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvaW5mZXJuby90ZXN0L21lbW9yeS1leGNlcHRpb25zLmpzb24gYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9pbmZlcm5vL3Rlc3QvbWVtb3J5LWV4Y2VwdGlvbnMuanNvbgpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hY2JkYzM5NjNhYjZiNmVhMWQwYjhkZTA1ZTM1YzJhOWM5NWM1ZWM0Ci0tLSAvZGV2L251bGwK
KysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvaW5mZXJuby90ZXN0L21lbW9yeS1leGNlcHRpb25zLmpzb24KQEAg
LTAsMCArMSw2IEBACit7CisJImh1bWJsZSI6IHsKKwkJIm5vZGVzIjogMzAsCisJCSJsaXN0ZW5l
cnMiOiAwCisJfQorfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvaW5mZXJuby90ZXN0L21lbW9y
eS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2luZmVybm8vdGVzdC9tZW1vcnkuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWYy
ODkwY2ZhMTBmYzM2MWZkZGRlMWRhNjZjM2QzOWE2MTc4NTJlNAotLS0gL2Rldi9udWxsCisrKyBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2luZmVybm8vdGVzdC9tZW1vcnkuanMKQEAgLTAsMCArMSw5OSBAQAorJ3Vz
ZSBzdHJpY3QnOworCit2YXIgZHJvb2wgPSByZXF1aXJlKCdkcm9vbCcpOwordmFyIGV4Y2VwdGlv
bnMgPSByZXF1aXJlKCcuL21lbW9yeS1leGNlcHRpb25zLmpzb24nKTsKK3ZhciBhcmd2ID0gcmVx
dWlyZSgnb3B0aW1pc3QnKS5kZWZhdWx0KCdsYXhNb2RlJywgZmFsc2UpLmRlZmF1bHQoJ2Jyb3dz
ZXInLCAnY2hyb21lJykuYXJndjsKK3ZhciBkcml2ZXJDb25maWcgPSB7CisgICAgY2hyb21lT3B0
aW9uczogJ25vLXNhbmRib3gnCit9OworCitpZiAodHlwZW9mIHByb2Nlc3MuZW52LkNIUk9NRV9Q
QVRIICE9PSAndW5kZWZpbmVkJykgeworICAgIGRyaXZlckNvbmZpZy5jaHJvbWVCaW5hcnlQYXRo
ID0gcHJvY2Vzcy5lbnYuQ0hST01FX1BBVEg7Cit9CisKK3ZhciBkcml2ZXIgPSBkcm9vbC5zdGFy
dChkcml2ZXJDb25maWcpOworCitmdW5jdGlvbiBpZEFwcCgpIHsKKyAgICByZXR1cm4gZHJpdmVy
LmZpbmRFbGVtZW50KGRyb29sLndlYmRyaXZlci5CeS5jc3MoJyN0b2RvYXBwJykpCisgICAgLnRo
ZW4oZnVuY3Rpb24gKCkgeyByZXR1cm4gdHJ1ZTsgfSkKKyAgICAudGhlbkNhdGNoKGZ1bmN0aW9u
ICgpIHsgcmV0dXJuIGZhbHNlOyB9KTsKK30KKworZnVuY3Rpb24gbmV3VG9kb1NlbGVjdG9yKCkg
eworICAgIHJldHVybiBpZEFwcCgpLnRoZW4oZnVuY3Rpb24gKGlzSWQpIHsKKyAgICAgICAgaWYg
KGlzSWQpIHsKKyAgICAgICAgICAgIHJldHVybiAnI25ldy10b2RvJzsKKyAgICAgICAgfQorCisg
ICAgICAgIHJldHVybiAnLm5ldy10b2RvJzsKKyAgICB9KTsKK30KKworZnVuY3Rpb24gbGlzdFNl
bGVjdG9yKCkgeworICAgIHJldHVybiBpZEFwcCgpLnRoZW4oZnVuY3Rpb24gKGlzSWQpIHsKKyAg
ICAgICAgaWYgKGlzSWQpIHsKKyAgICAgICAgICAgIHJldHVybiAnI3RvZG8tbGlzdCBsaSc7Cisg
ICAgICAgIH0KKworICAgICAgICByZXR1cm4gJy50b2RvLWxpc3QgbGknOworICAgIH0pOworfQor
CisvKioKKyAqIEluaXQKKyAqLworZHJvb2wuZmxvdyh7CisgICAgcmVwZWF0Q291bnQ6IDUsCisg
ICAgc2V0dXA6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgZHJpdmVyLmdldCgnaHR0cDovL2xvY2Fs
aG9zdDo4MDAwL2luZGV4Lmh0bWwnKTsKKyAgICB9LAorICAgIGFjdGlvbjogZnVuY3Rpb24gKG5h
bWUpIHsKKyAgICAgICAgZHJpdmVyLndhaXQoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgZHJp
dmVyLnNsZWVwKDUwMCk7CisgICAgICAgICAgICByZXR1cm4gZHJpdmVyLmZpbmRFbGVtZW50KGRy
b29sLndlYmRyaXZlci5CeS5jc3MobmV3VG9kb1NlbGVjdG9yKG5hbWUpKSkKKyAgICAgICAgICAg
ICAgICAuc2VuZEtleXMoJ2ZpbmQgbWFnaWNhbCBnb2F0cycsIGRyb29sLndlYmRyaXZlci5LZXku
RU5URVIpCisgICAgICAgICAgICAgICAgLnRoZW5DYXRjaChmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9KQorICAgICAgICAg
ICAgLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHJldHVybiBkcml2ZXIuZmlu
ZEVsZW1lbnQoZHJvb2wud2ViZHJpdmVyLkJ5LmNzcyhsaXN0U2VsZWN0b3IobmFtZSkpKS5pc0Rp
c3BsYXllZCgpCisgICAgICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAxMDAwMCk7CisKKyAgICAgICAgZHJpdmVyLndh
aXQoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgcmV0dXJuIGRyaXZlci5maW5kRWxlbWVudChk
cm9vbC53ZWJkcml2ZXIuQnkuY3NzKGxpc3RTZWxlY3RvcihuYW1lKSkpLmNsaWNrKCkKKyAgICAg
ICAgICAgICAgICAudGhlbkNhdGNoKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0pCisgICAgICAgICAgICAudGhlbihmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgfSk7CisKKyAgICAgICAgZHJpdmVyLmZpbmRFbGVtZW50KGRyb29sLndlYmRyaXZl
ci5CeS5jc3MoJy5kZXN0cm95JykpLmNsaWNrKCk7CisgICAgfS5iaW5kKG51bGwsICdpbmZlcm5v
JyksCisgICAgYXNzZXJ0OiBmdW5jdGlvbiAoYWZ0ZXIsIGluaXRpYWwpIHsKKyAgICAgICAgdmFy
IG5vZGVJbmNyZWFzZSA9IChhZnRlci5ub2RlcyAtIGluaXRpYWwubm9kZXMpOworICAgICAgICB2
YXIgbGlzdGVuZXJJbmNyZWFzZSA9IChhZnRlci5qc0V2ZW50TGlzdGVuZXJzIC0gaW5pdGlhbC5q
c0V2ZW50TGlzdGVuZXJzKTsKKyAgICAgICAgdmFyIG1lbW9yeUV4Y2VwdGlvbnMgPSBleGNlcHRp
b25zWydpbmZlcm5vJ10gfHwge307CisKKyAgICAgICAgY29uc29sZS5sb2codGhpcyArICcsICcg
KyAgbm9kZUluY3JlYXNlICsgJywgJyArCisgICAgICAgICAgICAoYWZ0ZXIuanNIZWFwU2l6ZVVz
ZWQgLSBpbml0aWFsLmpzSGVhcFNpemVVc2VkKSArICcsICcgKyBsaXN0ZW5lckluY3JlYXNlKTsK
KworICAgICAgICAvL2h0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvY2hyb21pdW0vaXNzdWVzL2Rl
dGFpbD9pZD01MTYxNTMKKyAgICAgICAgaWYgKG5vZGVJbmNyZWFzZSA+IG1lbW9yeUV4Y2VwdGlv
bnMubm9kZXMgfHwgMCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb2RlIENvdW50
IGxlYWsgZGV0ZWN0ZWQhJyk7CisgICAgICAgIH0KKworICAgICAgICBpZiAobGlzdGVuZXJJbmNy
ZWFzZSA+IG1lbW9yeUV4Y2VwdGlvbnMubGlzdGVuZXJzIHx8IDApIHsKKyAgICAgICAgICAgIHRo
cm93IG5ldyBFcnJvcignRXZlbnQgTGlzdGVuZXIgbGVhayBkZXRlY3RlZCEnKTsKKyAgICAgICAg
fQorCisgICAgfS5iaW5kKCdpbmZlcm5vJykKK30sIGRyaXZlcik7CisKK2RyaXZlci5xdWl0KCk7
CisKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2luZmVybm8vdGVzdC9wYWNrYWdlLmpzb24gYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9pbmZlcm5vL3Rlc3QvcGFja2FnZS5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY1NmUxYzg0
ZTExOWZkZjRkYThlNWE3OWU2MDkzZjE2NjNiYjEyYTcKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9pbmZlcm5vL3Rlc3QvcGFja2FnZS5qc29uCkBAIC0wLDAgKzEsMTUgQEAKK3sKKyAg
InByaXZhdGUiOiB0cnVlLAorICAiZGV2RGVwZW5kZW5jaWVzIjogeworICAgICJjaHJvbWVkcml2
ZXIiOiAiXjIuMTguMCIsCisgICAgImRyb29sIjogIjAuNC4wIiwKKyAgICAiZXhwcmVzcyI6ICJe
NC4xMCIsCisgICAgIm1vY2hhIjogIioiLAorICAgICJtb2NoYS1rbm93bi1pc3N1ZXMtcmVwb3J0
ZXIiOiAiZ2l0K2h0dHBzOi8vZ2l0aHViLmNvbS9Db2xpbkViZXJoYXJkdC9tb2NoYS1rbm93bi1p
c3N1ZXMtcmVwb3J0ZXIuZ2l0I3YwLjAuMCIsCisgICAgIm9wdGltaXN0IjogIl4wLjYuMSIsCisg
ICAgInNlbGVuaXVtLXdlYmRyaXZlciI6ICJ+Mi41My4xIgorICB9LAorICAic2NyaXB0cyI6IHsK
KyAgICAidGVzdCI6ICJub2RlIHNlcnZlciAmIG1vY2hhIGluZGV4LmpzIC0tbm8tdGltZW91dHMg
LS1yZXBvcnRlciBzcGVjIgorICB9Cit9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9pbmZlcm5v
L3Rlc3QvcGFnZS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2luZmVybm8vdGVzdC9wYWdlLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjM4ZjQ2NmNjMDE4NjA4ZWFjZmI4N2RkMDU4NGU4YzY4ZjFiZGRhZTUKLS0tIC9kZXYvbnVs
bAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9pbmZlcm5vL3Rlc3QvcGFnZS5qcwpAQCAtMCwwICsxLDI2OSBA
QAorJ3VzZSBzdHJpY3QnOworCit2YXIgd2ViZHJpdmVyID0gcmVxdWlyZSgnc2VsZW5pdW0td2Vi
ZHJpdmVyJyk7Cit2YXIgdW50aWwgPSByZXF1aXJlKCdzZWxlbml1bS13ZWJkcml2ZXIvbGliL3Vu
dGlsJyk7CisKK3ZhciBpZFNlbGVjdG9ycyA9IHRydWU7Cit2YXIgY2xhc3NPcklkID0gaWRTZWxl
Y3RvcnMgPyAnIycgOiAnLic7CisKK3ZhciBERUZBVUxUX1RJTUVPVVQgPSAzMDAwOwordmFyIFJF
TU9WRURfVElNRU9VVCA9IDEwMDsKKwordmFyIFJFTU9WRV9URVhUX0tFWV9TRVEgPSBBcnJheSg1
MSkuam9pbih3ZWJkcml2ZXIuS2V5LkJBQ0tfU1BBQ0UgKyB3ZWJkcml2ZXIuS2V5LkRFTEVURSk7
CisKKy8vIFVuaXF1ZSBzeW1ib2xzCit2YXIgRUxFTUVOVF9NSVNTSU5HID0gT2JqZWN0LmZyZWV6
ZSh7fSk7Cit2YXIgSVRFTV9ISURERU5fT1JfUkVNT1ZFRCA9IE9iamVjdC5mcmVlemUoe30pOwor
Cittb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIFBhZ2UoYnJvd3NlcikgeworICAgIC8vIENTUyBF
TEVNRU5UIFNFTEVDVE9SUworCisgICAgdGhpcy5nZXRNYWluU2VjdGlvbkNzcyA9IGZ1bmN0aW9u
ICgpIHsgcmV0dXJuIGNsYXNzT3JJZCArICdtYWluJzsgfTsKKworICAgIHRoaXMuZ2V0Rm9vdGVy
U2VjdGlvbkNzcyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuICdmb290ZXInICsgY2xhc3NPcklkICsg
J2Zvb3Rlcic7IH07CisKKyAgICB0aGlzLmdldENsZWFyQ29tcGxldGVkQnV0dG9uQ3NzID0gZnVu
Y3Rpb24gKCkgeyByZXR1cm4gJ2J1dHRvbicgKyBjbGFzc09ySWQgKyAnY2xlYXItY29tcGxldGVk
JzsgfTsKKworICAgIHRoaXMuZ2V0TmV3SW5wdXRDc3MgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAn
aW5wdXQnICsgY2xhc3NPcklkICsgJ25ldy10b2RvJzsgfTsKKworICAgIHRoaXMuZ2V0VG9nZ2xl
QWxsQ3NzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gJ2lucHV0JyArIGNsYXNzT3JJZCArICd0b2dn
bGUtYWxsJzsgfTsKKworICAgIHRoaXMuZ2V0SXRlbUNvdW50Q3NzID0gZnVuY3Rpb24gKCkgeyBy
ZXR1cm4gJ3NwYW4nICsgY2xhc3NPcklkICsgJ3RvZG8tY291bnQnOyB9OworCisgICAgdGhpcy5n
ZXRGaWx0ZXJDc3MgPSBmdW5jdGlvbiAoaW5kZXgpIHsKKyAgICAgICAgcmV0dXJuIGNsYXNzT3JJ
ZCArICdmaWx0ZXJzIGxpOm50aC1vZi10eXBlKCcgKyAoaW5kZXggKyAxKSArICcpIGEsICcgKwor
ICAgICAgICAgICAgY2xhc3NPcklkICsgJ2ZpbHRlcnMgYTpudGgtb2YtdHlwZSgnICsgKGluZGV4
ICsgMSkgKyAnKSc7CisgICAgfTsKKworICAgIHRoaXMuZ2V0U2VsZWN0ZWRGaWx0ZXJDc3MgPSBm
dW5jdGlvbiAoaW5kZXgpIHsgcmV0dXJuIHRoaXMuZ2V0RmlsdGVyQ3NzKGluZGV4KSArICcuc2Vs
ZWN0ZWQnOyB9OworCisgICAgdGhpcy5nZXRGaWx0ZXJBbGxDc3MgPSBmdW5jdGlvbiAoKSB7IHJl
dHVybiB0aGlzLmdldEZpbHRlckNzcygwKTsgfTsKKworICAgIHRoaXMuZ2V0RmlsdGVyQWN0aXZl
Q3NzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5nZXRGaWx0ZXJDc3MoMSk7IH07CisKKyAg
ICB0aGlzLmdldEZpbHRlckNvbXBsZXRlZENzcyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMu
Z2V0RmlsdGVyQ3NzKDIpOyB9OworCisgICAgdGhpcy5nZXRMaXN0Q3NzID0gZnVuY3Rpb24gKHN1
ZmZpeENzcykgeyByZXR1cm4gJ3VsJyArIGNsYXNzT3JJZCArICd0b2RvLWxpc3QnICsgKHN1ZmZp
eENzcyB8fCAnJyk7IH07CisKKyAgICB0aGlzLmdldExpc3RJdGVtQ3NzID0gZnVuY3Rpb24gKGlu
ZGV4LCBzdWZmaXhDc3MsIGV4Y2x1ZGVQYXJlbnRTZWxlY3RvcikgeworICAgICAgICBzdWZmaXhD
c3MgPSAoaW5kZXggPT09IHVuZGVmaW5lZCA/ICcnIDogJzpudGgtb2YtdHlwZSgnICsgKGluZGV4
ICsgMSkgKyAnKScpICsgKHN1ZmZpeENzcyB8fCAnJyk7CisgICAgICAgIHJldHVybiBleGNsdWRl
UGFyZW50U2VsZWN0b3IgPyAnbGknICsgc3VmZml4Q3NzIDogdGhpcy5nZXRMaXN0Q3NzKCcgbGkn
ICsgc3VmZml4Q3NzKTsKKyAgICB9OworCisgICAgdGhpcy5nZXRMaXN0SXRlbVRvZ2dsZUNzcyA9
IGZ1bmN0aW9uIChpbmRleCkgeyByZXR1cm4gdGhpcy5nZXRMaXN0SXRlbUNzcyhpbmRleCwgJyBp
bnB1dC50b2dnbGUnKTsgfTsKKworICAgIHRoaXMuZ2V0TGlzdEl0ZW1MYWJlbENzcyA9IGZ1bmN0
aW9uIChpbmRleCkgeyByZXR1cm4gdGhpcy5nZXRMaXN0SXRlbUNzcyhpbmRleCwgJyBsYWJlbCcp
OyB9OworCisgICAgdGhpcy5nZXRMYXN0TGlzdEl0ZW1MYWJlbENzcyA9IGZ1bmN0aW9uIChpbmRl
eCkgeyByZXR1cm4gdGhpcy5nZXRMaXN0SXRlbUNzcyhpbmRleCwgJzpsYXN0LW9mLXR5cGUgbGFi
ZWwnKTsgfTsKKworICAgIHRoaXMuZ2V0TGlzdEl0ZW1JbnB1dENzcyA9IGZ1bmN0aW9uIChpbmRl
eCkgeyByZXR1cm4gdGhpcy5nZXRMaXN0SXRlbUNzcyhpbmRleCwgJyBpbnB1dC5lZGl0Jyk7IH07
CisKKyAgICB0aGlzLmdldEVkaXRpbmdMaXN0SXRlbUlucHV0Q3NzID0gZnVuY3Rpb24gKCkgeyBy
ZXR1cm4gdGhpcy5nZXRMaXN0SXRlbUNzcyh1bmRlZmluZWQsICcuZWRpdGluZyBpbnB1dC5lZGl0
Jyk7IH07CisKKyAgICAvLyBUaGlzIENTUyBzZWxlY3RvciByZXR1cm5zIHRoZSBfbGFzdF8gZWxl
bWVudCBvZiBhIGxpc3QgdGhhdCBleGFjdGx5IG1hdGNoZXMgdGhlIHByb3ZpZGVkIGxpc3Qgb2Yg
Y29tcGxldGVkIHN0YXRlcworICAgIC8vIEl0IGlzIHVzZWQgYXMgYSBib29sZWFuIHRlc3Qgb2Yg
dGhlIGl0ZW0gc3RhdGVzCisgICAgdGhpcy5nZXRMaXN0SXRlbXNXaXRoQ29tcGxldGVkU3RhdGVz
Q3NzID0gZnVuY3Rpb24gKGNvbXBsZXRlZFN0YXRlcykgeworICAgICAgICB2YXIgc3VmZml4Q3Nz
ID0gJyAnICsgY29tcGxldGVkU3RhdGVzLm1hcChmdW5jdGlvbiAoY29tcGxldGVkLCBpKSB7Cisg
ICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRMaXN0SXRlbUNzcyhpLCBjb21wbGV0ZWQgPyAnLmNv
bXBsZXRlZCcgOiAnOm5vdCguY29tcGxldGVkKScsIHRydWUpOworICAgICAgICB9LCB0aGlzKS5q
b2luKCcgKyAnKTsKKyAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TGlzdENzcyhzdWZmaXhDc3MpOwor
ICAgIH07CisKKyAgICAvLyBQVUJMSUMgU1lNQk9MUworCisgICAgdGhpcy5JVEVNX0hJRERFTl9P
Ul9SRU1PVkVEID0gSVRFTV9ISURERU5fT1JfUkVNT1ZFRDsKKworICAgIC8vIE5BVklHQVRJT04K
KworICAgIHRoaXMuYmFjayA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgcmV0dXJuIGJyb3dzZXIu
bmF2aWdhdGUoKS5iYWNrKCk7CisgICAgfTsKKworICAgIC8vIEVMRU1FTlQgUkVUUkVJVkFMCisg
ICAgLy8gd2FpdCogbWV0aG9kcyBndWFyYW50ZWVzIHRvIHJldHVybiBhbiBlbGVtZW50LCBvciB0
aHJvdyBhbiBleGNlcHRpb24KKyAgICAvLyBnZXQqIG1ldGhvZHMgbWF5IHJldHVybiBub3RoaW5n
IGF0IGFsbCwgb3IgaW4gdGhlIGNhc2Ugb2YgZWxlbWVudCBsaXN0cywgYW4gb2xkZXIgdmVyc2lv
biBvZiB0aGUgbGlzdAorCisgICAgdGhpcy5nZXRFbGVtZW50cyA9IGZ1bmN0aW9uIChjc3MpIHsK
KyAgICAgICAgcmV0dXJuIGJyb3dzZXIuZmluZEVsZW1lbnRzKHdlYmRyaXZlci5CeS5jc3MoY3Nz
KSk7CisgICAgfTsKKworICAgIHRoaXMud2FpdEZvckVsZW1lbnQgPSBmdW5jdGlvbiAoY3NzLCBm
YWlsTXNnLCB0aW1lb3V0KSB7CisgICAgICAgIHJldHVybiBicm93c2VyLndhaXQodW50aWwuZWxl
bWVudExvY2F0ZWQod2ViZHJpdmVyLkJ5LmNzcyhjc3MpKSwgdGltZW91dCB8fCBERUZBVUxUX1RJ
TUVPVVQsIGZhaWxNc2cpOworICAgIH07CisKKyAgICB0aGlzLndhaXRGb3JGb2N1c2VkRWxlbWVu
dCA9IGZ1bmN0aW9uIChjc3MsIGZhaWxNc2cpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMud2FpdEZv
ckVsZW1lbnQoY3NzICsgJzpmb2N1cycsIGZhaWxNc2cpOworICAgIH07CisKKyAgICB0aGlzLndh
aXRGb3JCbHVycmVkRWxlbWVudCA9IGZ1bmN0aW9uIChjc3MsIGZhaWxNc2cpIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMud2FpdEZvckVsZW1lbnQoY3NzICsgJzpub3QoOmZvY3VzKScsIGZhaWxNc2cp
OworICAgIH07CisKKyAgICB0aGlzLndhaXRGb3JMaXN0SXRlbUNvdW50ID0gZnVuY3Rpb24gKGNv
dW50KSB7CisgICAgICAgIHZhciBzZWxmID0gdGhpczsKKyAgICAgICAgcmV0dXJuIGJyb3dzZXIu
d2FpdChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICByZXR1cm4gc2VsZi53YWl0Rm9yRWxlbWVu
dChzZWxmLmdldExpc3RDc3MoKSkKKyAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAobGlz
dEVsZW1lbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxpc3RFbGVtZW50LmZpbmRF
bGVtZW50cyh3ZWJkcml2ZXIuQnkuY3NzKHNlbGYuZ2V0TGlzdEl0ZW1Dc3ModW5kZWZpbmVkLCB1
bmRlZmluZWQsIHRydWUpKSk7CisgICAgICAgICAgICAgICAgfSkKKyAgICAgICAgICAgICAgICAu
dGhlbihmdW5jdGlvbiAobGlzdEl0ZW1zKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBs
aXN0SXRlbXMubGVuZ3RoID09PSBjb3VudDsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAg
fSwgREVGQVVMVF9USU1FT1VULCAnRXhwZWN0ZWQgaXRlbSBsaXN0IHRvIGNvbnRhaW4gJyArIGNv
dW50ICsgJyBpdGVtJyArIChjb3VudCA9PT0gMSA/ICcnIDogJ3MnKSk7CisgICAgfTsKKworICAg
IHRoaXMud2FpdEZvckNsZWFyQ29tcGxldGVCdXR0b24gPSBmdW5jdGlvbiAoKSB7CisgICAgICAg
IHJldHVybiB0aGlzLndhaXRGb3JFbGVtZW50KHRoaXMuZ2V0Q2xlYXJDb21wbGV0ZWRCdXR0b25D
c3MoKSk7CisgICAgfTsKKworICAgIHRoaXMud2FpdEZvclRvZ2dsZUZvckl0ZW0gPSBmdW5jdGlv
biAoaW5kZXgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMud2FpdEZvckVsZW1lbnQodGhpcy5nZXRM
aXN0SXRlbVRvZ2dsZUNzcyhpbmRleCkpOworICAgIH07CisKKyAgICB0aGlzLndhaXRGb3JJdGVt
TGFiZWwgPSBmdW5jdGlvbiAoaW5kZXgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMud2FpdEZvckVs
ZW1lbnQodGhpcy5nZXRMaXN0SXRlbUxhYmVsQ3NzKGluZGV4KSk7CisgICAgfTsKKworICAgIHRo
aXMud2FpdEZvck5ld0l0ZW1JbnB1dEZpZWxkID0gZnVuY3Rpb24gKCkgeworICAgICAgICByZXR1
cm4gdGhpcy53YWl0Rm9yRWxlbWVudCh0aGlzLmdldE5ld0lucHV0Q3NzKCkpOworICAgIH07CisK
KyAgICB0aGlzLndhaXRGb3JNYXJrQWxsQ29tcGxldGVkQ2hlY2tCb3ggPSBmdW5jdGlvbiAoKSB7
CisgICAgICAgIHJldHVybiB0aGlzLndhaXRGb3JFbGVtZW50KHRoaXMuZ2V0VG9nZ2xlQWxsQ3Nz
KCkpOworICAgIH07CisKKyAgICB0aGlzLmdldExpc3RJdGVtcyA9IGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMuZ2V0RWxlbWVudHModGhpcy5nZXRMaXN0SXRlbUNzcygpKTsKKyAg
ICB9OworCisgICAgdGhpcy53YWl0Rm9yVmlzaWJpbGl0eSA9IGZ1bmN0aW9uIChzaG91bGRCZVZp
c2libGUsIGNzcywgZmFpbE1zZykgeworICAgICAgICBpZiAoc2hvdWxkQmVWaXNpYmxlKSB7Cisg
ICAgICAgICAgICByZXR1cm4gdGhpcy53YWl0Rm9yRWxlbWVudChjc3MsIGZhaWxNc2cpCisgICAg
ICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKGVsZW1lbnQpIHsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGJyb3dzZXIud2FpdCh1bnRpbC5lbGVtZW50SXNWaXNpYmxlKGVsZW1lbnQpLCBE
RUZBVUxUX1RJTUVPVVQsIGZhaWxNc2cpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMud2FpdEZvckVsZW1lbnQoY3NzLCB1bmRl
ZmluZWQsIFJFTU9WRURfVElNRU9VVCkKKyAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24g
KCkgeyByZXR1cm4gRUxFTUVOVF9NSVNTSU5HOyB9KQorICAgICAgICAgICAgICAgIC50aGVuKGZ1
bmN0aW9uIChlbGVtZW50T3JFcnJvcikgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWxl
bWVudE9yRXJyb3IgPT09IEVMRU1FTlRfTUlTU0lORyA/CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRUxFTUVOVF9NSVNTSU5HIDogLy8gUmV0dXJuaW5nIGEgdmFsdWUgd2lsbCByZXNvbHZl
IHRoZSBwcm9taXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJvd3Nlci53YWl0KHVu
dGlsLmVsZW1lbnRJc05vdFZpc2libGUoZWxlbWVudE9yRXJyb3IpLCBERUZBVUxUX1RJTUVPVVQs
IGZhaWxNc2cpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgfTsKKworICAg
IHRoaXMud2FpdEZvck1haW5TZWN0aW9uUmVtb3ZlZE9yRW1wdHkgPSBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgIHJldHVybiB0aGlzLndhaXRGb3JFbGVtZW50KHRoaXMuZ2V0TWFpblNlY3Rpb25Dc3Mo
KSwgdW5kZWZpbmVkLCBSRU1PVkVEX1RJTUVPVVQpCisgICAgICAgICAgICAuY2F0Y2goZnVuY3Rp
b24gKCkgeyByZXR1cm4gRUxFTUVOVF9NSVNTSU5HOyB9KQorICAgICAgICAgICAgLnRoZW4oZnVu
Y3Rpb24gKGVsZW1lbnRPckVycm9yKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRP
ckVycm9yID09PSBFTEVNRU5UX01JU1NJTkcgPyBFTEVNRU5UX01JU1NJTkcgOiB0aGlzLndhaXRG
b3JMaXN0SXRlbUNvdW50KDApOworICAgICAgICAgICAgfS5iaW5kKHRoaXMpKTsKKyAgICB9Owor
CisgICAgdGhpcy53YWl0Rm9yQ2hlY2tlZFN0YXR1cyA9IGZ1bmN0aW9uIChzaG91bGRCZUNoZWNr
ZWQsIGZhaWxNc2csIGVsZW1lbnQpIHsKKyAgICAgICAgdmFyIGNvbmRpdGlvbiA9IHNob3VsZEJl
Q2hlY2tlZCA/ICdlbGVtZW50SXNTZWxlY3RlZCcgOiAnZWxlbWVudElzTm90U2VsZWN0ZWQnOwor
ICAgICAgICByZXR1cm4gYnJvd3Nlci53YWl0KHVudGlsW2NvbmRpdGlvbl0oZWxlbWVudCksIERF
RkFVTFRfVElNRU9VVCwgZmFpbE1zZyk7CisgICAgfTsKKworICAgIHRoaXMud2FpdEZvclRleHRD
b250ZW50ID0gZnVuY3Rpb24gKHRleHQsIGZhaWxNc2csIGVsZW1lbnQpIHsKKyAgICAgICAgcmV0
dXJuIGJyb3dzZXIud2FpdCh1bnRpbC5lbGVtZW50VGV4dElzKGVsZW1lbnQsIHRleHQpLCBERUZB
VUxUX1RJTUVPVVQsIGZhaWxNc2cpOworICAgIH07CisKKyAgICAvLyBQQUdFIEFDVElPTlMKKwor
ICAgIHRoaXMuZW5zdXJlQXBwSXNWaXNpYmxlQW5kTG9hZGVkID0gZnVuY3Rpb24gKCkgeworICAg
ICAgICByZXR1cm4gdGhpcy53YWl0Rm9yVmlzaWJpbGl0eShmYWxzZSwgdGhpcy5nZXRGb290ZXJT
ZWN0aW9uQ3NzKCksICdGb290ZXIgaXMgbm90IGhpZGRlbicpCisgICAgICAgICAgICAudGhlbih0
aGlzLndhaXRGb3JFbGVtZW50LmJpbmQoCisgICAgICAgICAgICAgICAgdGhpcywgJy5uZXctdG9k
bywgI25ldy10b2RvJywgJ0NvdWxkIG5vdCBmaW5kIG5ldyB0b2RvIGlucHV0IGZpZWxkJywgdW5k
ZWZpbmVkKSkKKyAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChuZXdUb2RvRWxlbWVudCkgewor
ICAgICAgICAgICAgICAgIHJldHVybiBuZXdUb2RvRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2lkJyk7
CisgICAgICAgICAgICB9KQorICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKG5ld1RvZG9FbGVt
ZW50SWQpIHsKKyAgICAgICAgICAgICAgICBpZiAobmV3VG9kb0VsZW1lbnRJZCA9PT0gJ25ldy10
b2RvJykgeyByZXR1cm47IH0KKyAgICAgICAgICAgICAgICBpZFNlbGVjdG9ycyA9IGZhbHNlOwor
ICAgICAgICAgICAgICAgIGNsYXNzT3JJZCA9IGlkU2VsZWN0b3JzID8gJyMnIDogJy4nOworICAg
ICAgICAgICAgfSk7CisgICAgfTsKKworICAgIHRoaXMuY2xpY2tNYXJrQWxsQ29tcGxldGVkQ2hl
Y2tCb3ggPSBmdW5jdGlvbiAoKSB7CisgICAgICAgIHJldHVybiB0aGlzLndhaXRGb3JNYXJrQWxs
Q29tcGxldGVkQ2hlY2tCb3goKS5jbGljaygpOworICAgIH07CisKKyAgICB0aGlzLmNsaWNrQ2xl
YXJDb21wbGV0ZUJ1dHRvbiA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMud2Fp
dEZvclZpc2liaWxpdHkodHJ1ZSwgdGhpcy5nZXRDbGVhckNvbXBsZXRlZEJ1dHRvbkNzcygpLAor
ICAgICAgICAgICAgJ0V4cGVjdGVkIGNsZWFyIGNvbXBsZXRlZCBpdGVtcyBidXR0b24gdG8gYmUg
dmlzaWJsZScpCisgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAoY2xlYXJDb21wbGV0ZUJ1dHRv
bikgeworICAgICAgICAgICAgICAgIGNsZWFyQ29tcGxldGVCdXR0b24uY2xpY2soKTsKKyAgICAg
ICAgICAgIH0pOworICAgIH07CisKKyAgICB0aGlzLmVudGVySXRlbSA9IGZ1bmN0aW9uIChpdGVt
VGV4dCkgeworICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CisgICAgICAgIHZhciBuSXRlbXM7Cisg
ICAgICAgIHJldHVybiBzZWxmLmdldExpc3RJdGVtcygpCisgICAgICAgICAgICAudGhlbihmdW5j
dGlvbiAoaXRlbXMpIHsKKyAgICAgICAgICAgICAgICBuSXRlbXMgPSBpdGVtcy5sZW5ndGg7Cisg
ICAgICAgICAgICB9KQorICAgICAgICAgICAgLnRoZW4odGhpcy53YWl0Rm9yTmV3SXRlbUlucHV0
RmllbGQuYmluZCh0aGlzKSkKKyAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChuZXdJdGVtSW5w
dXQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3SXRlbUlucHV0LnNlbmRLZXlzKGl0ZW1U
ZXh0KS50aGVuKGZ1bmN0aW9uICgpIHsgcmV0dXJuIG5ld0l0ZW1JbnB1dDsgfSk7CisgICAgICAg
ICAgICB9KQorICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKG5ld0l0ZW1JbnB1dCkgeworICAg
ICAgICAgICAgICAgIHJldHVybiBicm93c2VyLndhaXQoZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgICAgICAgICAvLyBIaXQgRW50ZXIgcmVwZWF0ZWRseSB1bnRpbCB0aGUgdGV4dCBnb2VzIGF3
YXkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ld0l0ZW1JbnB1dC5zZW5kS2V5cyh3ZWJk
cml2ZXIuS2V5LkVOVEVSKQorICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4obmV3SXRlbUlu
cHV0LmdldEF0dHJpYnV0ZS5iaW5kKG5ld0l0ZW1JbnB1dCwgJ3ZhbHVlJykpCisgICAgICAgICAg
ICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAobmV3SXRlbUlucHV0VmFsdWUpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3SXRlbUlucHV0VmFsdWUubGVuZ3RoID09
PSAwOworICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfSwgREVG
QVVMVF9USU1FT1VUKTsKKyAgICAgICAgICAgIH0pCisgICAgICAgICAgICAudGhlbihmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYud2FpdEZvckVsZW1lbnQoc2VsZi5n
ZXRMYXN0TGlzdEl0ZW1MYWJlbENzcyhuSXRlbXMpKTsKKyAgICAgICAgICAgIH0pCisgICAgICAg
ICAgICAudGhlbih0aGlzLndhaXRGb3JUZXh0Q29udGVudC5iaW5kKHRoaXMsIGl0ZW1UZXh0LnRy
aW0oKSwKKyAgICAgICAgICAgICAgICAnRXhwZWN0ZWQgbmV3IGl0ZW0gbGFiZWwgdG8gcmVhZCAn
ICsgaXRlbVRleHQudHJpbSgpKSk7CisgICAgfTsKKworICAgIHRoaXMudG9nZ2xlSXRlbUF0SW5k
ZXggPSBmdW5jdGlvbiAoaW5kZXgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMud2FpdEZvclRvZ2ds
ZUZvckl0ZW0oaW5kZXgpLmNsaWNrKCk7CisgICAgfTsKKworICAgIHRoaXMuZWRpdEl0ZW1BdElu
ZGV4ID0gZnVuY3Rpb24gKGluZGV4LCBpdGVtVGV4dCkgeworICAgICAgICByZXR1cm4gdGhpcy53
YWl0Rm9yRWxlbWVudCh0aGlzLmdldExpc3RJdGVtSW5wdXRDc3MoaW5kZXgpKQorICAgICAgICAg
ICAgLnRoZW4oZnVuY3Rpb24gKGl0ZW1FZGl0RmllbGQpIHsKKyAgICAgICAgICAgICAgICByZXR1
cm4gaXRlbUVkaXRGaWVsZC5zZW5kS2V5cyhSRU1PVkVfVEVYVF9LRVlfU0VRLCBpdGVtVGV4dCk7
CisgICAgICAgICAgICB9KTsKKyAgICB9OworCisgICAgdGhpcy5kb3VibGVDbGlja0l0ZW1BdElu
ZGV4ID0gZnVuY3Rpb24gKGluZGV4KSB7CisgICAgICAgIHJldHVybiB0aGlzLndhaXRGb3JJdGVt
TGFiZWwoaW5kZXgpLnRoZW4oZnVuY3Rpb24gKGl0ZW1MYWJlbCkgeworICAgICAgICAgICAgLy8g
ZG91YmxlIGNsaWNrIGlzIG5vdCAnbmF0aXZlbHknIHN1cHBvcnRlZCwgc28gd2UgbmVlZCB0byBz
ZW5kIHRoZSBldmVudCBkaXJlY3QgdG8gdGhlIGVsZW1lbnQsIHNlZToKKyAgICAgICAgICAgIC8v
IGpzY3M6ZGlzYWJsZQorICAgICAgICAgICAgLy8gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1
ZXN0aW9ucy8zOTgyNDQyL3NlbGVuaXVtLTItd2ViZHJpdmVyLWhvdy10by1kb3VibGUtY2xpY2st
YS10YWJsZS1yb3ctd2hpY2gtb3BlbnMtYS1uZXctd2luZG93CisgICAgICAgICAgICAvLyBqc2Nz
OmVuYWJsZQorICAgICAgICAgICAgcmV0dXJuIGJyb3dzZXIuZXhlY3V0ZVNjcmlwdCgndmFyIGV2
dCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCJNb3VzZUV2ZW50cyIpOycgKworICAgICAgICAgICAg
ICAgICdldnQuaW5pdE1vdXNlRXZlbnQoImRibGNsaWNrIix0cnVlLCB0cnVlLCB3aW5kb3csIDAs
IDAsIDAsIDAsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAwLG51bGwpOycgKworICAg
ICAgICAgICAgICAgICdhcmd1bWVudHNbMF0uZGlzcGF0Y2hFdmVudChldnQpOycsIGl0ZW1MYWJl
bCk7CisgICAgICAgIH0pOworICAgIH07CisKKyAgICB0aGlzLmZpbHRlckJ5ID0gZnVuY3Rpb24g
KGZpbHRlckNzcykgeworICAgICAgICByZXR1cm4gdGhpcy53YWl0Rm9yRWxlbWVudChmaWx0ZXJD
c3MpCisgICAgICAgICAgICAuY2xpY2soKQorICAgICAgICAgICAgLnRoZW4odGhpcy53YWl0Rm9y
RWxlbWVudC5iaW5kKHRoaXMsIGZpbHRlckNzcyArICcuc2VsZWN0ZWQnLCB1bmRlZmluZWQsIHVu
ZGVmaW5lZCkpOworICAgIH07CisKKyAgICB0aGlzLmZpbHRlckJ5QWN0aXZlSXRlbXMgPSBmdW5j
dGlvbiAoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmZpbHRlckJ5KHRoaXMuZ2V0RmlsdGVyQWN0
aXZlQ3NzKCkpOworICAgIH07CisKKyAgICB0aGlzLmZpbHRlckJ5Q29tcGxldGVkSXRlbXMgPSBm
dW5jdGlvbiAoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmZpbHRlckJ5KHRoaXMuZ2V0RmlsdGVy
Q29tcGxldGVkQ3NzKCkpOworICAgIH07CisKKyAgICB0aGlzLmZpbHRlckJ5QWxsSXRlbXMgPSBm
dW5jdGlvbiAoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmZpbHRlckJ5KHRoaXMuZ2V0RmlsdGVy
QWxsQ3NzKCkpOworICAgIH07Cit9OwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvaW5mZXJuby90
ZXN0L3BhZ2VMYXhNb2RlLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvaW5mZXJuby90ZXN0L3BhZ2VMYXhNb2Rl
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmE2NTFiZDU1OWI0MWZjNmRmNWQ1OTJiMzFkYzM1NzJjNzhkNGU5MTUK
LS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9pbmZlcm5vL3Rlc3QvcGFnZUxheE1vZGUu
anMKQEAgLTAsMCArMSw3MyBAQAorJ3VzZSBzdHJpY3QnOworCit2YXIgUGFnZSA9IHJlcXVpcmUo
Jy4vcGFnZScpOworCittb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIFBhZ2VMYXhNb2RlKCkgewor
CisgICAgUGFnZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOworCisgICAgdGhpcy5nZXRNYWluU2Vj
dGlvbkNzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgcmV0dXJuICdzZWN0aW9uIHNlY3Rpb24n
OworICAgIH07CisKKyAgICB0aGlzLmdldEZvb3RlclNlY3Rpb25Dc3MgPSBmdW5jdGlvbiAoKSB7
CisgICAgICAgIHJldHVybiAnc2VjdGlvbiBmb290ZXInOworICAgIH07CisKKyAgICB0aGlzLmdl
dExpc3RDc3MgPSBmdW5jdGlvbiAoc3VmZml4Q3NzKSB7CisgICAgICAgIHJldHVybiBbCisgICAg
ICAgICAgICAnc2VjdGlvbiA+IHVsJywKKyAgICAgICAgICAgICdzZWN0aW9uID4gZGl2ID4gdWwn
LAorICAgICAgICAgICAgJ3VsI3RvZG8tbGlzdCcKKyAgICAgICAgXS5tYXAoZnVuY3Rpb24gKGxp
c3RDc3MpIHsKKyAgICAgICAgICAgIHJldHVybiBsaXN0Q3NzICsgKHN1ZmZpeENzcyB8fCAnJyk7
CisgICAgICAgIH0pLmpvaW4oJywgJyk7CisgICAgfTsKKworICAgIHRoaXMuZ2V0VG9nZ2xlQWxs
Q3NzID0gZnVuY3Rpb24gKCkgeworICAgICAgICByZXR1cm4gWworICAgICAgICAgICAgJ3NlY3Rp
b24gPiBpbnB1dFt0eXBlPSJjaGVja2JveCJdJywKKyAgICAgICAgICAgICdzZWN0aW9uID4gKiA+
IGlucHV0W3R5cGU9ImNoZWNrYm94Il0nLAorICAgICAgICAgICAgJ2lucHV0I3RvZ2dsZS1hbGwn
CisgICAgICAgIF0uam9pbignLCAnKTsKKyAgICB9OworCisgICAgdGhpcy5nZXRDbGVhckNvbXBs
ZXRlZEJ1dHRvbkNzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgcmV0dXJuIFsKKyAgICAgICAg
ICAgICdmb290ZXIgPiBidXR0b24nLAorICAgICAgICAgICAgJ2Zvb3RlciA+ICogPiBidXR0b24n
LAorICAgICAgICAgICAgJ2J1dHRvbiNjbGVhci1jb21wbGV0ZWQnCisgICAgICAgIF0uam9pbign
LCAnKTsKKyAgICB9OworCisgICAgdGhpcy5nZXRJdGVtQ291bnRDc3MgPSBmdW5jdGlvbiAoKSB7
CisgICAgICAgIHJldHVybiBbCisgICAgICAgICAgICAnZm9vdGVyID4gc3BhbicsCisgICAgICAg
ICAgICAnZm9vdGVyID4gKiA+IHNwYW4nCisgICAgICAgIF0uam9pbignLCAnKTsKKyAgICB9Owor
CisgICAgdGhpcy5nZXRGaWx0ZXJDc3MgPSBmdW5jdGlvbiAoaW5kZXgpIHsKKyAgICAgICAgcmV0
dXJuICdmb290ZXIgdWwgbGk6bnRoLWNoaWxkKCcgKyAoaW5kZXggKyAxKSArICcpIGEnOworICAg
IH07CisKKyAgICB0aGlzLmdldE5ld0lucHV0Q3NzID0gZnVuY3Rpb24gKCkgeworICAgICAgICBy
ZXR1cm4gWworICAgICAgICAgICAgJ2hlYWRlciA+IGlucHV0JywKKyAgICAgICAgICAgICdoZWFk
ZXIgPiAqID4gaW5wdXQnLAorICAgICAgICAgICAgJ2lucHV0I25ldy10b2RvJworICAgICAgICBd
LmpvaW4oJywgJyk7CisgICAgfTsKKworICAgIHRoaXMuZ2V0TGlzdEl0ZW1Ub2dnbGVDc3MgPSBm
dW5jdGlvbiAoaW5kZXgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TGlzdEl0ZW1Dc3MoaW5k
ZXgsICcgaW5wdXRbdHlwZT0iY2hlY2tib3giXScpOworICAgIH07CisKKyAgICB0aGlzLmdldExp
c3RJdGVtSW5wdXRDc3MgPSBmdW5jdGlvbiAoaW5kZXgpIHsKKyAgICAgICAgcmV0dXJuIFsKKyAg
ICAgICAgICAgIHRoaXMuZ2V0TGlzdEl0ZW1Dc3MoaW5kZXgsICcgaW5wdXQuZWRpdCcpLAorICAg
ICAgICAgICAgdGhpcy5nZXRMaXN0SXRlbUNzcyhpbmRleCwgJyBpbnB1dFt0eXBlPSJ0ZXh0Il0n
KQorICAgICAgICBdLmpvaW4oJywgJyk7CisgICAgfTsKKworfTsKZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2luZmVybm8vdGVzdC9ydW4uc2ggYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9pbmZlcm5vL3Rlc3QvcnVu
LnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjY5NGJiYjQzNDdiOGZjYjM1ZGJmZjJkOGM2MjFlYzdjNmU5YzliMmIK
LS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9pbmZlcm5vL3Rlc3QvcnVuLnNoCkBAIC0w
LDAgKzEsNyBAQAorIyEvYmluL2Jhc2gKKworYXJncz0iJEAiCisKK25wbSBpICYmIFwKK2V2YWwg
Im5vZGUgbWVtb3J5LmpzICRhcmdzIiAmJiBcCitldmFsICJucG0gdGVzdCAtLSAkYXJncyIKZGlm
ZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2luZmVybm8vdGVzdC9zZXJ2ZXIuanMgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9pbmZlcm5vL3Rlc3Qvc2VydmVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQzZWZhZjM5YTE0NDAzYjVlNTlh
MGUxYWFjNjliZjZjNjkxYTNhOGUKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9pbmZl
cm5vL3Rlc3Qvc2VydmVyLmpzCkBAIC0wLDAgKzEsMTUgQEAKK2NvbnN0IGZzID0gcmVxdWlyZSgn
ZnMnKTsKK2NvbnN0IHBhdGggPSByZXF1aXJlKCdwYXRoJyk7Citjb25zdCBleHByZXNzID0gcmVx
dWlyZSgnZXhwcmVzcycpOworY29uc3QgbGVhcm5Kc29uID0gcmVxdWlyZSgnLi9sZWFybi5qc29u
Jyk7CisKK2NvbnN0IGxlYXJuZXIgPSByZXF1aXJlLnJlc29sdmUoJy4vbGVhcm4uanNvbicpOwor
Citjb25zdCBhcHAgPSBleHByZXNzKCk7Citjb25zdCBkaXIgPSBwYXRoLnJlc29sdmUoX19kaXJu
YW1lLCAnLi4nKTsKKworYXBwLnVzZShleHByZXNzLnN0YXRpYyhkaXIpKTsKK2FwcC51c2UoJy9s
ZWFybi5qc29uJywgZXhwcmVzcy5zdGF0aWMobGVhcm5lcikpOworYXBwLnVzZSgnL2Zhdmljb24u
aWNvJywgZnVuY3Rpb24gKCkge30pOworCithcHAubGlzdGVuKDgwMDApOwpkaWZmIC0tZ2l0IGEv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvaW5mZXJuby90ZXN0L3Rlc3RPcGVyYXRpb25zLmpzIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
aW5mZXJuby90ZXN0L3Rlc3RPcGVyYXRpb25zLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNlOWI2MDlhYzJmZTc2
NTE5NzE4NzJjNTZmZTRkYWQwOWZmZGU2ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9pbmZlcm5vL3Rlc3QvdGVzdE9wZXJhdGlvbnMuanMKQEAgLTAsMCArMSwxMDMgQEAKKyd1c2Ug
c3RyaWN0JzsKKworZnVuY3Rpb24gVGVzdE9wZXJhdGlvbnMocGFnZSkgeworCisgICAgdGhpcy5h
c3NlcnRJdGVtSW5wdXRGb2N1c2VkID0gZnVuY3Rpb24gKCkgeworICAgICAgICByZXR1cm4gcGFn
ZS53YWl0Rm9yRm9jdXNlZEVsZW1lbnQocGFnZS5nZXRFZGl0aW5nTGlzdEl0ZW1JbnB1dENzcygp
LCAnRXhwZWN0ZWQgdGhlIGl0ZW0gaW5wdXQgdG8gYmUgZm9jdXNlZCcpOworICAgIH07CisKKyAg
ICB0aGlzLmFzc2VydE5ld0lucHV0Rm9jdXNlZCA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgcmV0
dXJuIHBhZ2Uud2FpdEZvckZvY3VzZWRFbGVtZW50KHBhZ2UuZ2V0TmV3SW5wdXRDc3MoKSk7Cisg
ICAgfTsKKworICAgIHRoaXMuYXNzZXJ0TmV3SW5wdXRCbHVycmVkID0gZnVuY3Rpb24gKCkgewor
ICAgICAgICByZXR1cm4gcGFnZS53YWl0Rm9yQmx1cnJlZEVsZW1lbnQocGFnZS5nZXROZXdJbnB1
dENzcygpKTsKKyAgICB9OworCisgICAgdGhpcy5hc3NlcnRJdGVtQ291bnQgPSBmdW5jdGlvbiAo
aXRlbUNvdW50KSB7CisgICAgICAgIHJldHVybiBpdGVtQ291bnQgPT09IDAgPworICAgICAgICAg
ICAgcGFnZS53YWl0Rm9yTWFpblNlY3Rpb25SZW1vdmVkT3JFbXB0eSgpIDoKKyAgICAgICAgICAg
IHBhZ2Uud2FpdEZvckxpc3RJdGVtQ291bnQoaXRlbUNvdW50KTsKKyAgICB9OworCisgICAgdGhp
cy5hc3NlcnRDbGVhckNvbXBsZXRlQnV0dG9uVGV4dCA9IGZ1bmN0aW9uIChidXR0b25UZXh0KSB7
CisgICAgICAgIHJldHVybiBwYWdlLndhaXRGb3JDbGVhckNvbXBsZXRlQnV0dG9uKCkKKyAgICAg
ICAgICAgIC50aGVuKHBhZ2Uud2FpdEZvclRleHRDb250ZW50LmJpbmQocGFnZSwgYnV0dG9uVGV4
dCwgJ0V4cGVjdGVkIGNsZWFyIGJ1dHRvbiB0ZXh0IHRvIGJlICcgKyBidXR0b25UZXh0KSk7Cisg
ICAgfTsKKworICAgIHRoaXMuYXNzZXJ0Q2xlYXJDb21wbGV0ZUJ1dHRvblZpc2liaWxpdHkgPSBm
dW5jdGlvbiAoc2hvdWxkQmVWaXNpYmxlKSB7CisgICAgICAgIHZhciBmYWlsTXNnID0gJ0V4cGVj
dGVkIHRoZSBjbGVhciBjb21wbGV0ZWQgaXRlbXMgYnV0dG9uIHRvIGJlICcgKyAoc2hvdWxkQmVW
aXNpYmxlID8gJ3Zpc2libGUnIDogJ2hpZGRlbicpOworICAgICAgICByZXR1cm4gcGFnZS53YWl0
Rm9yVmlzaWJpbGl0eShzaG91bGRCZVZpc2libGUsIHBhZ2UuZ2V0Q2xlYXJDb21wbGV0ZWRCdXR0
b25Dc3MoKSwgZmFpbE1zZyk7CisgICAgfTsKKworICAgIHRoaXMuYXNzZXJ0TWFpblNlY3Rpb25W
aXNpYmlsaXR5ID0gZnVuY3Rpb24gKHNob3VsZEJlVmlzaWJsZSkgeworICAgICAgICB2YXIgZmFp
bE1zZyA9ICdFeHBlY3RlZCBtYWluIHNlY3Rpb24gdG8gYmUgJyArIChzaG91bGRCZVZpc2libGUg
PyAndmlzaWJsZScgOiAnaGlkZGVuJyk7CisgICAgICAgIHJldHVybiBwYWdlLndhaXRGb3JWaXNp
YmlsaXR5KHNob3VsZEJlVmlzaWJsZSwgcGFnZS5nZXRNYWluU2VjdGlvbkNzcygpLCBmYWlsTXNn
KTsKKyAgICB9OworCisgICAgdGhpcy5hc3NlcnRGb290ZXJWaXNpYmlsaXR5ID0gZnVuY3Rpb24g
KHNob3VsZEJlVmlzaWJsZSkgeworICAgICAgICB2YXIgZmFpbE1zZyA9ICdFeHBlY3RlZCBmb290
ZXIgdG8gYmUgJyArIChzaG91bGRCZVZpc2libGUgPyAndmlzaWJsZScgOiAnaGlkZGVuJyk7Cisg
ICAgICAgIHJldHVybiBwYWdlLndhaXRGb3JWaXNpYmlsaXR5KHNob3VsZEJlVmlzaWJsZSwgcGFn
ZS5nZXRGb290ZXJTZWN0aW9uQ3NzKCksIGZhaWxNc2cpOworICAgIH07CisKKyAgICB0aGlzLmFz
c2VydEl0ZW1Ub2dnbGVJc0hpZGRlbiA9IGZ1bmN0aW9uIChpbmRleCkgeworICAgICAgICByZXR1
cm4gcGFnZS53YWl0Rm9yVmlzaWJpbGl0eShmYWxzZSwgcGFnZS5nZXRMaXN0SXRlbVRvZ2dsZUNz
cyhpbmRleCksCisgICAgICAgICAgICAnRXhwZWN0ZWQgdGhlIGl0ZW0gdG9nZ2xlIGJ1dHRvbiB0
byBiZSBoaWRkZW4nKTsKKyAgICB9OworCisgICAgdGhpcy5hc3NlcnRJdGVtTGFiZWxJc0hpZGRl
biA9IGZ1bmN0aW9uIChpbmRleCkgeworICAgICAgICByZXR1cm4gcGFnZS53YWl0Rm9yVmlzaWJp
bGl0eShmYWxzZSwgcGFnZS5nZXRMaXN0SXRlbUxhYmVsQ3NzKGluZGV4KSwgJ0V4cGVjdGVkIHRo
ZSBpdGVtIGxhYmVsIHRvIGJlIGhpZGRlbicpOworICAgIH07CisKKyAgICB0aGlzLmFzc2VydE5l
d0l0ZW1JbnB1dEZpZWxkVGV4dCA9IGZ1bmN0aW9uICh0ZXh0KSB7CisgICAgICAgIHJldHVybiBw
YWdlLndhaXRGb3JOZXdJdGVtSW5wdXRGaWVsZCgpCisgICAgICAgICAgICAudGhlbihwYWdlLndh
aXRGb3JUZXh0Q29udGVudC5iaW5kKHBhZ2UsIHRleHQsCisgICAgICAgICAgICAgICAgJ0V4cGVj
dGVkIHRoZSBuZXcgaXRlbSBpbnB1dCB0ZXh0IGZpZWxkIGNvbnRlbnRzIHRvIGJlICcgKyB0ZXh0
KSk7CisgICAgfTsKKworICAgIHRoaXMuYXNzZXJ0SXRlbVRleHQgPSBmdW5jdGlvbiAoaXRlbUlu
ZGV4LCB0ZXh0KSB7CisgICAgICAgIHJldHVybiBwYWdlLndhaXRGb3JJdGVtTGFiZWwoaXRlbUlu
ZGV4KQorICAgICAgICAgICAgLnRoZW4ocGFnZS53YWl0Rm9yVGV4dENvbnRlbnQuYmluZChwYWdl
LCB0ZXh0LCAnRXhwZWN0ZWQgdGhlIGl0ZW0gbGFiZWwgdG8gYmUgJyArIHRleHQpKTsKKyAgICB9
OworCisgICAgdGhpcy5hc3NlcnRJdGVtcyA9IGZ1bmN0aW9uICh0ZXh0QXJyYXkpIHsKKyAgICAg
ICAgcmV0dXJuIHBhZ2UuZ2V0TGlzdEl0ZW1zKCkudGhlbihmdW5jdGlvbiAoaXRlbXMpIHsKKyAg
ICAgICAgICAgIGlmIChpdGVtcy5sZW5ndGggPCB0ZXh0QXJyYXkubGVuZ3RoKSB7CisgICAgICAg
ICAgICAgICAgLy8gVGhpcyBtZWFucyB0aGF0IHRoZSBmcmFtZXdvcmsgcmVtb3ZlcyByYXRoZXIg
dGhhbiBoaWRlcyBsaXN0IGl0ZW1zCisgICAgICAgICAgICAgICAgdGV4dEFycmF5ID0gdGV4dEFy
cmF5LmZpbHRlcihmdW5jdGlvbiAoaXRlbSkgeyByZXR1cm4gaXRlbSAhPT0gcGFnZS5JVEVNX0hJ
RERFTl9PUl9SRU1PVkVEOyB9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHZhciByZXQ7
CisgICAgICAgICAgICB0ZXh0QXJyYXkuZm9yRWFjaChmdW5jdGlvbiAodGV4dCwgaSkgeworICAg
ICAgICAgICAgICAgIGlmICh0ZXh0ID09PSBwYWdlLklURU1fSElEREVOX09SX1JFTU9WRUQpIHsg
cmV0dXJuOyB9CisgICAgICAgICAgICAgICAgdmFyIHByb21pc2UgPSBwYWdlLndhaXRGb3JUZXh0
Q29udGVudCh0ZXh0LCAnRXhwZWN0ZWQgaXRlbSB0ZXh0IHRvIGJlICcgKyB0ZXh0LCBpdGVtc1tp
XSk7CisgICAgICAgICAgICAgICAgcmV0ID0gcmV0ID8gcmV0LnRoZW4ocHJvbWlzZSkgOiBwcm9t
aXNlOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICByZXR1cm4gcmV0OworICAgICAgICB9
KTsKKyAgICB9OworCisgICAgdGhpcy5hc3NlcnRJdGVtQ291bnRUZXh0ID0gZnVuY3Rpb24gKHRl
eHQpIHsKKyAgICAgICAgcmV0dXJuIHBhZ2Uud2FpdEZvckVsZW1lbnQocGFnZS5nZXRJdGVtQ291
bnRDc3MoKSkKKyAgICAgICAgICAgIC50aGVuKHBhZ2Uud2FpdEZvclRleHRDb250ZW50LmJpbmQo
cGFnZSwgdGV4dCwgJ0V4cGVjdGVkIGl0ZW0gY291bnQgdGV4dCB0byBiZSAnICsgdGV4dCkpOwor
ICAgIH07CisKKyAgICB0aGlzLmFzc2VydEl0ZW1Db21wbGV0ZWRTdGF0ZXMgPSBmdW5jdGlvbiAo
Y29tcGxldGVkU3RhdGVzKSB7CisgICAgICAgIHJldHVybiBwYWdlLndhaXRGb3JFbGVtZW50KAor
ICAgICAgICAgICAgcGFnZS5nZXRMaXN0SXRlbXNXaXRoQ29tcGxldGVkU3RhdGVzQ3NzKGNvbXBs
ZXRlZFN0YXRlcyksCisgICAgICAgICAgICAnSXRlbSBjb21wbGV0ZWQgc3RhdGVzIHdlcmUgaW5j
b3JyZWN0Jyk7CisgICAgfTsKKworICAgIHRoaXMuYXNzZXJ0RmlsdGVyQXRJbmRleElzU2VsZWN0
ZWQgPSBmdW5jdGlvbiAoc2VsZWN0ZWRJbmRleCkgeworICAgICAgICByZXR1cm4gcGFnZS53YWl0
Rm9yRWxlbWVudCgKKyAgICAgICAgICAgIHBhZ2UuZ2V0U2VsZWN0ZWRGaWx0ZXJDc3Moc2VsZWN0
ZWRJbmRleCksCisgICAgICAgICAgICAnRXhwZXh0ZWQgdGhlIGZpbHRlciAvIHJvdXRlIGF0IGlu
ZGV4ICcgKyBzZWxlY3RlZEluZGV4ICsgJyB0byBiZSBzZWxlY3RlZCcpOworICAgIH07CisKKyAg
ICB0aGlzLmFzc2VydENvbXBsZXRlQWxsQ2hlY2tlZFN0YXR1cyA9IGZ1bmN0aW9uIChzaG91bGRC
ZUNoZWNrZWQpIHsKKyAgICAgICAgdmFyIGZhaWxNc2cgPSAnRXhwZWN0ZWQgdGhlIG1hcmstYWxs
LWNvbXBsZXRlZCBjaGVja2JveCB0byBiZSAnICsgc2hvdWxkQmVDaGVja2VkID8gJ2NoZWNrZWQn
IDogJ3VuY2hlY2tlZCc7CisgICAgICAgIHJldHVybiBwYWdlLndhaXRGb3JNYXJrQWxsQ29tcGxl
dGVkQ2hlY2tCb3goKQorICAgICAgICAgICAgLnRoZW4ocGFnZS53YWl0Rm9yQ2hlY2tlZFN0YXR1
cy5iaW5kKHBhZ2UsIHNob3VsZEJlQ2hlY2tlZCwgZmFpbE1zZykpOworICAgIH07Cit9CisKK21v
ZHVsZS5leHBvcnRzID0gVGVzdE9wZXJhdGlvbnM7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9p
bmZlcm5vL3Rlc3QveWFybi5sb2NrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvaW5mZXJuby90ZXN0L3lhcm4ubG9j
awpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yZTVlZWZlNmZiODgzYmFmZTVhYTY0MmExNTdiMzRlZDk3MzM5ZjYwCi0t
LSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvaW5mZXJuby90ZXN0L3lhcm4ubG9jawpAQCAt
MCwwICsxLDU4MSBAQAorIyBUSElTIElTIEFOIEFVVE9HRU5FUkFURUQgRklMRS4gRE8gTk9UIEVE
SVQgVEhJUyBGSUxFIERJUkVDVExZLgorIyB5YXJuIGxvY2tmaWxlIHYxCisKKworYWJicmV2QDE6
CisgIHZlcnNpb24gIjEuMC45IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9hYmJyZXYvLS9hYmJyZXYtMS4wLjkudGd6IzkxYjQ3OTI1ODhhNzczOGMyNWYzNWRkNmY2
Mzc1MmEyZjg3NzYxMzUiCisKK2FjY2VwdHNAfjEuMy4zOgorICB2ZXJzaW9uICIxLjMuMyIKKyAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYWNjZXB0cy8tL2FjY2VwdHMt
MS4zLjMudGd6I2MzY2E3NDM0OTM4NjQ4YzNlMGQ5YzFlMzI4ZGQ2OGI2MjJjMjg0Y2EiCisgIGRl
cGVuZGVuY2llczoKKyAgICBtaW1lLXR5cGVzICJ+Mi4xLjExIgorICAgIG5lZ290aWF0b3IgIjAu
Ni4xIgorCithZG0temlwQDAuNC40OgorICB2ZXJzaW9uICIwLjQuNCIKKyAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYWRtLXppcC8tL2FkbS16aXAtMC40LjQudGd6I2E2
MWVkNWFlNjkwNWMzYWVhNThiM2E2NTdkMjUwMzMwOTEwNTI3MzYiCisKK2FkbS16aXBAXjAuNC43
OgorICB2ZXJzaW9uICIwLjQuNyIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vYWRtLXppcC8tL2FkbS16aXAtMC40LjcudGd6Izg2MDZjMmNiZjFjNDI2Y2U4YzhlYzAw
MTc0NDQ3ZmQ0OWI2ZWFmYzEiCisKK2FycmF5LWZsYXR0ZW5AMS4xLjE6CisgIHZlcnNpb24gIjEu
MS4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9hcnJheS1mbGF0
dGVuLy0vYXJyYXktZmxhdHRlbi0xLjEuMS50Z3ojOWE1ZjY5OTA1MWIxZTcwNzMzMjhmMmEwMDg5
NjhiNjRlYTI5NTVkMiIKKworYmFsYW5jZWQtbWF0Y2hAXjAuNC4xOgorICB2ZXJzaW9uICIwLjQu
MiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFsYW5jZWQtbWF0
Y2gvLS9iYWxhbmNlZC1tYXRjaC0wLjQuMi50Z3ojY2IzZjNlM2M3MzJkYzBmMDFlZTcwYjQwM2Yz
MDJlNjFkNzcwOTgzOCIKKworYnJhY2UtZXhwYW5zaW9uQF4xLjAuMDoKKyAgdmVyc2lvbiAiMS4x
LjYiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JyYWNlLWV4cGFu
c2lvbi8tL2JyYWNlLWV4cGFuc2lvbi0xLjEuNi50Z3ojNzE5N2Q3ZWFhOWI4N2U2NDgzOTBlYTYx
ZmM2NmM4NDQyNzQyMGRmOSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGJhbGFuY2VkLW1hdGNoICJe
MC40LjEiCisgICAgY29uY2F0LW1hcCAiMC4wLjEiCisKK2Jyb3dzZXItc3Rkb3V0QDEuMy4wOgor
ICB2ZXJzaW9uICIxLjMuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vYnJvd3Nlci1zdGRvdXQvLS9icm93c2VyLXN0ZG91dC0xLjMuMC50Z3ojZjM1MWQzMjk2OWQz
MmZhNWQ3YTU1NjcxNTQyNjNkOTI4YWUzYmQxZiIKKworY2hyb21lZHJpdmVyQF4yLjE4LjA6Cisg
IHZlcnNpb24gIjIuMjUuMiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vY2hyb21lZHJpdmVyLy0vY2hyb21lZHJpdmVyLTIuMjUuMi50Z3ojMjBiZmNmMWY4NGVkZTYy
NmJlMzlhYmY5NDQ1NGE4N2MxYTJlZjBiNSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGFkbS16aXAg
Il4wLjQuNyIKKyAgICBrZXcgIl4wLjUuMCIKKyAgICBta2RpcnAgIl4wLjUuMCIKKyAgICBucG1j
b25mICJeMi4xLjEiCisgICAgcmltcmFmICJeMi4wLjMiCisKK2NvbW1hbmRlckAyLjkuMDoKKyAg
dmVyc2lvbiAiMi45LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L2NvbW1hbmRlci8tL2NvbW1hbmRlci0yLjkuMC50Z3ojOWM5OTA5NDE3NmUxMjI0MGNiMjJkNmM1
MTQ2MDk4NDAwZmUwZjdkNCIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGdyYWNlZnVsLXJlYWRsaW5r
ICI+PSAxLjAuMCIKKworY29uY2F0LW1hcEAwLjAuMToKKyAgdmVyc2lvbiAiMC4wLjEiCisgIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NvbmNhdC1tYXAvLS9jb25jYXQt
bWFwLTAuMC4xLnRneiNkOGE5NmJkNzdmZDY4ZGY3NzkzYTczMDM2YTNiYTBkNTQwNWQ0NzdiIgor
Citjb25maWctY2hhaW5AfjEuMS44OgorICB2ZXJzaW9uICIxLjEuMTEiCisgIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NvbmZpZy1jaGFpbi8tL2NvbmZpZy1jaGFpbi0x
LjEuMTEudGd6I2FiYTA5NzQ3ZGZiZTRjM2U3MGU3NjZhNmU0MTU4NmUxODU5ZmM2ZjIiCisgIGRl
cGVuZGVuY2llczoKKyAgICBpbmkgIl4xLjMuNCIKKyAgICBwcm90by1saXN0ICJ+MS4yLjEiCisK
K2NvbnRlbnQtZGlzcG9zaXRpb25AMC41LjE6CisgIHZlcnNpb24gIjAuNS4xIgorICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jb250ZW50LWRpc3Bvc2l0aW9uLy0vY29u
dGVudC1kaXNwb3NpdGlvbi0wLjUuMS50Z3ojODc0NzZjNmE2N2M4ZGFhODdlMzJlODc2MTZkZjg4
M2JhN2ZiMDcxYiIKKworY29udGVudC10eXBlQH4xLjAuMjoKKyAgdmVyc2lvbiAiMS4wLjIiCisg
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NvbnRlbnQtdHlwZS8tL2Nv
bnRlbnQtdHlwZS0xLjAuMi50Z3ojYjdkMTEzYWVlN2E4ZGQyN2JkMjExMzNjNGRjMjUyOWRmMTcy
MWVlZCIKKworY29va2llLXNpZ25hdHVyZUAxLjAuNjoKKyAgdmVyc2lvbiAiMS4wLjYiCisgIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Nvb2tpZS1zaWduYXR1cmUvLS9j
b29raWUtc2lnbmF0dXJlLTEuMC42LnRneiNlMzAzYTg4MmIzNDJjYzNlZThjYTUxM2E3OTk5OTcz
NGRhYjNhZTJjIgorCitjb29raWVAMC4zLjE6CisgIHZlcnNpb24gIjAuMy4xIgorICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jb29raWUvLS9jb29raWUtMC4zLjEudGd6
I2U3ZTBhMWY5ZWY0M2I0YzhiYTkyNWM1YzVhOTZlODA2ZDE2ODczYmIiCisKK2RlYnVnQDIuMi4w
LCBkZWJ1Z0B+Mi4yLjA6CisgIHZlcnNpb24gIjIuMi4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9kZWJ1Zy8tL2RlYnVnLTIuMi4wLnRneiNmODcwNTdlOTk1YjFh
MWY2YWU2YTQ5NjA2NjQxMzdiYzU2ZjAzOWRhIgorICBkZXBlbmRlbmNpZXM6CisgICAgbXMgIjAu
Ny4xIgorCitkZXBkQH4xLjEuMDoKKyAgdmVyc2lvbiAiMS4xLjAiCisgIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2RlcGQvLS9kZXBkLTEuMS4wLnRneiNlMWJkODJjNmFh
YjZjZWQ5NjViOTdiODhiMTdlZDNlNTI4Y2ExOGMzIgorCitkZXN0cm95QH4xLjAuNDoKKyAgdmVy
c2lvbiAiMS4wLjQiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Rl
c3Ryb3kvLS9kZXN0cm95LTEuMC40LnRneiM5Nzg4NTc0NDJjNDQ3NDllNDIwNjYxM2UzNzk0NjIw
NTgyNmFiZDgwIgorCitkaWZmQDEuNC4wOgorICB2ZXJzaW9uICIxLjQuMCIKKyAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZGlmZi8tL2RpZmYtMS40LjAudGd6IzdmMjhk
MmViOWVlN2IxNWE5N2VmZDg5Y2U2M2RjZmRhYTNjY2JhYmYiCisKK2Ryb29sQDAuNC4wOgorICB2
ZXJzaW9uICIwLjQuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
ZHJvb2wvLS9kcm9vbC0wLjQuMC50Z3ojYmM2MGQzM2I0NmE5NTZlNzU2ZDc4ZTk5NWY0NGE2YjMy
MzM0MDFkYyIKKyAgZGVwZW5kZW5jaWVzOgorICAgIHNlbGVuaXVtLXdlYmRyaXZlciAiMi41My4x
IgorCitlZS1maXJzdEAxLjEuMToKKyAgdmVyc2lvbiAiMS4xLjEiCisgIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2VlLWZpcnN0Ly0vZWUtZmlyc3QtMS4xLjEudGd6IzU5
MGM2MTE1NmIwYWUyZjRmMDI1NTczMmExNThiMjY2YmM1NmIyMWQiCisKK2VuY29kZXVybEB+MS4w
LjE6CisgIHZlcnNpb24gIjEuMC4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9lbmNvZGV1cmwvLS9lbmNvZGV1cmwtMS4wLjEudGd6Izc5ZTNkNTg2NTUzNDY5MDlm
ZTZmMGY0NWE1ZGU2ODEwM2IyOTRkMjAiCisKK2VzY2FwZS1odG1sQH4xLjAuMzoKKyAgdmVyc2lv
biAiMS4wLjMiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2VzY2Fw
ZS1odG1sLy0vZXNjYXBlLWh0bWwtMS4wLjMudGd6IzAyNThlYWU0ZDNkMGMwOTc0ZGUxYzE2OTE4
OGVmMDA1MWQxZDE5ODgiCisKK2VzY2FwZS1zdHJpbmctcmVnZXhwQDEuMC41OgorICB2ZXJzaW9u
ICIxLjAuNSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZXNjYXBl
LXN0cmluZy1yZWdleHAvLS9lc2NhcGUtc3RyaW5nLXJlZ2V4cC0xLjAuNS50Z3ojMWI2MWMwNTYy
MTkwYThkZmY2YWUzYmIyY2YwMjAwY2ExMzBiODZkNCIKKworZXRhZ0B+MS43LjA6CisgIHZlcnNp
b24gIjEuNy4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9ldGFn
Ly0vZXRhZy0xLjcuMC50Z3ojMDNkMzBiNWY2N2RkNmU2MzJkMjk0NWQzMGQ2NjUyNzMxYTM0ZDVk
OCIKKworZXhwcmVzc0BeNC4xMDoKKyAgdmVyc2lvbiAiNC4xNC4wIgorICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9leHByZXNzLy0vZXhwcmVzcy00LjE0LjAudGd6I2Mx
ZWUzZjQyY2RjODkxZmIzZGM2NTBhODkyMmQ1MWVjODQ3ZDBkNjYiCisgIGRlcGVuZGVuY2llczoK
KyAgICBhY2NlcHRzICJ+MS4zLjMiCisgICAgYXJyYXktZmxhdHRlbiAiMS4xLjEiCisgICAgY29u
dGVudC1kaXNwb3NpdGlvbiAiMC41LjEiCisgICAgY29udGVudC10eXBlICJ+MS4wLjIiCisgICAg
Y29va2llICIwLjMuMSIKKyAgICBjb29raWUtc2lnbmF0dXJlICIxLjAuNiIKKyAgICBkZWJ1ZyAi
fjIuMi4wIgorICAgIGRlcGQgIn4xLjEuMCIKKyAgICBlbmNvZGV1cmwgIn4xLjAuMSIKKyAgICBl
c2NhcGUtaHRtbCAifjEuMC4zIgorICAgIGV0YWcgIn4xLjcuMCIKKyAgICBmaW5hbGhhbmRsZXIg
IjAuNS4wIgorICAgIGZyZXNoICIwLjMuMCIKKyAgICBtZXJnZS1kZXNjcmlwdG9ycyAiMS4wLjEi
CisgICAgbWV0aG9kcyAifjEuMS4yIgorICAgIG9uLWZpbmlzaGVkICJ+Mi4zLjAiCisgICAgcGFy
c2V1cmwgIn4xLjMuMSIKKyAgICBwYXRoLXRvLXJlZ2V4cCAiMC4xLjciCisgICAgcHJveHktYWRk
ciAifjEuMS4yIgorICAgIHFzICI2LjIuMCIKKyAgICByYW5nZS1wYXJzZXIgIn4xLjIuMCIKKyAg
ICBzZW5kICIwLjE0LjEiCisgICAgc2VydmUtc3RhdGljICJ+MS4xMS4xIgorICAgIHR5cGUtaXMg
In4xLjYuMTMiCisgICAgdXRpbHMtbWVyZ2UgIjEuMC4wIgorICAgIHZhcnkgIn4xLjEuMCIKKwor
ZmluYWxoYW5kbGVyQDAuNS4wOgorICB2ZXJzaW9uICIwLjUuMCIKKyAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vZmluYWxoYW5kbGVyLy0vZmluYWxoYW5kbGVyLTAuNS4w
LnRneiNlOTUwOGFiZWNlOWI2ZGJhODcxYTY5NDJhMWQ3OTExYjkxOTExYWM3IgorICBkZXBlbmRl
bmNpZXM6CisgICAgZGVidWcgIn4yLjIuMCIKKyAgICBlc2NhcGUtaHRtbCAifjEuMC4zIgorICAg
IG9uLWZpbmlzaGVkICJ+Mi4zLjAiCisgICAgc3RhdHVzZXMgIn4xLjMuMCIKKyAgICB1bnBpcGUg
In4xLjAuMCIKKworZm9yd2FyZGVkQH4wLjEuMDoKKyAgdmVyc2lvbiAiMC4xLjAiCisgIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2ZvcndhcmRlZC8tL2ZvcndhcmRlZC0w
LjEuMC50Z3ojMTllZjk4NzRjNGFlMWMyOTdiY2YwNzhmZGU2M2EwOWI2NmE4NDM2MyIKKworZnJl
c2hAMC4zLjA6CisgIHZlcnNpb24gIjAuMy4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9mcmVzaC8tL2ZyZXNoLTAuMy4wLnRneiM2NTFmODM4ZTIyNDI0ZTc1NjZk
ZTE2MWQ4MzU4Y2FhMTk5ZjgzZDRmIgorCitmcy5yZWFscGF0aEBeMS4wLjA6CisgIHZlcnNpb24g
IjEuMC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9mcy5yZWFs
cGF0aC8tL2ZzLnJlYWxwYXRoLTEuMC4wLnRneiMxNTA0YWQyNTIzMTU4Y2FhNDBkYjRhMjc4N2Ni
MDE0MTE5OTRlYTRmIgorCitnbG9iQDcuMC41LCBnbG9iQF43LjAuNToKKyAgdmVyc2lvbiAiNy4w
LjUiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2dsb2IvLS9nbG9i
LTcuMC41LnRneiNiNDIwMmE2OTA5OWJiYjRkMjkyYTdjMWI5NWI2NjgyYjY3ZWJkYzk1IgorICBk
ZXBlbmRlbmNpZXM6CisgICAgZnMucmVhbHBhdGggIl4xLjAuMCIKKyAgICBpbmZsaWdodCAiXjEu
MC40IgorICAgIGluaGVyaXRzICIyIgorICAgIG1pbmltYXRjaCAiXjMuMC4yIgorICAgIG9uY2Ug
Il4xLjMuMCIKKyAgICBwYXRoLWlzLWFic29sdXRlICJeMS4wLjAiCisKKyJncmFjZWZ1bC1yZWFk
bGlua0A+PSAxLjAuMCI6CisgIHZlcnNpb24gIjEuMC4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9ncmFjZWZ1bC1yZWFkbGluay8tL2dyYWNlZnVsLXJlYWRsaW5r
LTEuMC4xLnRneiM0Y2FmYWQ3NmJjNjJmMDJmYTAzOWIyZjk0ZTlhM2RkM2EzOTFhNzI1IgorCitn
cm93bEAxLjkuMjoKKyAgdmVyc2lvbiAiMS45LjIiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL2dyb3dsLy0vZ3Jvd2wtMS45LjIudGd6IzBlYTc3NDM3MTVkYjhkOGRl
MmM1ZWRlMTc3NWUxYjQ1YWM4NWMwMmYiCisKK2hhcy1mbGFnQF4xLjAuMDoKKyAgdmVyc2lvbiAi
MS4wLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2hhcy1mbGFn
Ly0vaGFzLWZsYWctMS4wLjAudGd6IzlkOWU3OTMxNjVjZTAxN2EwMGYwMDQxOGM0M2Y5NDJhN2Ix
ZDExZmEiCisKK2h0dHAtZXJyb3JzQH4xLjUuMDoKKyAgdmVyc2lvbiAiMS41LjEiCisgIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2h0dHAtZXJyb3JzLy0vaHR0cC1lcnJv
cnMtMS41LjEudGd6Izc4OGMwZDJjMWRlMmM4MWI5ZTZlOGMwMTg0M2I2Yjk3ZWI5MjA3NTAiCisg
IGRlcGVuZGVuY2llczoKKyAgICBpbmhlcml0cyAiMi4wLjMiCisgICAgc2V0cHJvdG90eXBlb2Yg
IjEuMC4yIgorICAgIHN0YXR1c2VzICI+PSAxLjMuMSA8IDIiCisKK2luZmxpZ2h0QF4xLjAuNDoK
KyAgdmVyc2lvbiAiMS4wLjYiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL2luZmxpZ2h0Ly0vaW5mbGlnaHQtMS4wLjYudGd6IzQ5YmQ2MzMxZDdkMDJkMGMwOWJjOTEw
YTEwNzViYTgxNjViNTZkZjkiCisgIGRlcGVuZGVuY2llczoKKyAgICBvbmNlICJeMS4zLjAiCisg
ICAgd3JhcHB5ICIxIgorCitpbmhlcml0c0AyLCBpbmhlcml0c0AyLjAuMywgaW5oZXJpdHNAfjIu
MC4wOgorICB2ZXJzaW9uICIyLjAuMyIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vaW5oZXJpdHMvLS9pbmhlcml0cy0yLjAuMy50Z3ojNjMzYzJjODNlM2RhNDJhNTAy
ZjUyNDY2MDIyNDgwZjQyMDgyNjFkZSIKKworaW5pQF4xLjIuMCwgaW5pQF4xLjMuNDoKKyAgdmVy
c2lvbiAiMS4zLjQiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lu
aS8tL2luaS0xLjMuNC50Z3ojMDUzN2NiNzlkYWY1OWI1OWExYTUxN2RmZjcwNmM4NmVjMDM5MTYy
ZSIKKworaXBhZGRyLmpzQDEuMS4xOgorICB2ZXJzaW9uICIxLjEuMSIKKyAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXBhZGRyLmpzLy0vaXBhZGRyLmpzLTEuMS4xLnRn
eiNjNzkxZDk1ZjUyYjI5YzEyNDdkNWRmODBhZGEzOWI4YTczNjQ3MjMwIgorCitqc29uM0AzLjMu
MjoKKyAgdmVyc2lvbiAiMy4zLjIiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w
a2cuY29tL2pzb24zLy0vanNvbjMtMy4zLjIudGd6IzNjMDQzNDc0M2RmOTNlMmY1YzQyYWVlN2Ix
OWJjYjQ4MzU3NWY0ZTEiCisKK2tld0BeMC41LjA6CisgIHZlcnNpb24gIjAuNS4wIgorICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9rZXcvLS9rZXctMC41LjAudGd6I2Vj
ZTExY2I1ZDhkMDFhODFmOGNlODA0YzhkMGJiYTA2ZTZiMjVjYTIiCisKK2xvZGFzaC5fYmFzZWFz
c2lnbkBeMy4wLjA6CisgIHZlcnNpb24gIjMuMi4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9sb2Rhc2guX2Jhc2Vhc3NpZ24vLS9sb2Rhc2guX2Jhc2Vhc3NpZ24t
My4yLjAudGd6IzhjMzhhMDk5NTAwZjIxNWFkMDllNTlmMTcyMmZkMGM1MmJmZTBhNGUiCisgIGRl
cGVuZGVuY2llczoKKyAgICBsb2Rhc2guX2Jhc2Vjb3B5ICJeMy4wLjAiCisgICAgbG9kYXNoLmtl
eXMgIl4zLjAuMCIKKworbG9kYXNoLl9iYXNlY29weUBeMy4wLjA6CisgIHZlcnNpb24gIjMuMC4x
IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9sb2Rhc2guX2Jhc2Vj
b3B5Ly0vbG9kYXNoLl9iYXNlY29weS0zLjAuMS50Z3ojOGRhMGU2YTg3NmNmMzQ0YzBhZDhhNTQ4
ODIxMTFkZDNjNWM3Y2EzNiIKKworbG9kYXNoLl9iYXNlY3JlYXRlQF4zLjAuMDoKKyAgdmVyc2lv
biAiMy4wLjMiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2xvZGFz
aC5fYmFzZWNyZWF0ZS8tL2xvZGFzaC5fYmFzZWNyZWF0ZS0zLjAuMy50Z3ojMWJjNjYxNjE0ZGFh
N2ZjMzExYjdkMDNiZjE2ODA2YTAyMTNjZjgyMSIKKworbG9kYXNoLl9nZXRuYXRpdmVAXjMuMC4w
OgorICB2ZXJzaW9uICIzLjkuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vbG9kYXNoLl9nZXRuYXRpdmUvLS9sb2Rhc2guX2dldG5hdGl2ZS0zLjkuMS50Z3ojNTcw
YmM3ZGVkZTQ2ZDYxY2RjZGU2ODdkNjVkM2VlY2JhYTNhYWZmNSIKKworbG9kYXNoLl9pc2l0ZXJh
dGVlY2FsbEBeMy4wLjA6CisgIHZlcnNpb24gIjMuMC45IgorICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9sb2Rhc2guX2lzaXRlcmF0ZWVjYWxsLy0vbG9kYXNoLl9pc2l0
ZXJhdGVlY2FsbC0zLjAuOS50Z3ojNTIwM2FkN2JhNDI1ZmFlODQyNDYwZTY5NmRiOWNmM2U2YWFj
MDU3YyIKKworbG9kYXNoLmNyZWF0ZUAzLjEuMToKKyAgdmVyc2lvbiAiMy4xLjEiCisgIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2xvZGFzaC5jcmVhdGUvLS9sb2Rhc2gu
Y3JlYXRlLTMuMS4xLnRneiNkN2YyODQ5ZjBkYmRhN2UwNDY4MmJiOGNkNzJhYjAyMjQ2MWRlYmU3
IgorICBkZXBlbmRlbmNpZXM6CisgICAgbG9kYXNoLl9iYXNlYXNzaWduICJeMy4wLjAiCisgICAg
bG9kYXNoLl9iYXNlY3JlYXRlICJeMy4wLjAiCisgICAgbG9kYXNoLl9pc2l0ZXJhdGVlY2FsbCAi
XjMuMC4wIgorCitsb2Rhc2guaXNhcmd1bWVudHNAXjMuMC4wOgorICB2ZXJzaW9uICIzLjEuMCIK
KyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbG9kYXNoLmlzYXJndW1l
bnRzLy0vbG9kYXNoLmlzYXJndW1lbnRzLTMuMS4wLnRneiMyZjU3M2Q4NWM2YTI0Mjg5ZmYwMDY2
M2I0OTFjMWQzMzhmZjM0NThhIgorCitsb2Rhc2guaXNhcnJheUBeMy4wLjA6CisgIHZlcnNpb24g
IjMuMC40IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9sb2Rhc2gu
aXNhcnJheS8tL2xvZGFzaC5pc2FycmF5LTMuMC40LnRneiM3OWU0ZWI4OGMzNmE4MTIyYWY4NmY4
NDRhYTliY2Q4NTFiNWZiYjU1IgorCitsb2Rhc2gua2V5c0BeMy4wLjA6CisgIHZlcnNpb24gIjMu
MS4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9sb2Rhc2gua2V5
cy8tL2xvZGFzaC5rZXlzLTMuMS4yLnRneiM0ZGJjMDQ3MmIxNTZiZTUwYTBiMjg2ODU1ZDFiZDBi
MGM2NTYwOThhIgorICBkZXBlbmRlbmNpZXM6CisgICAgbG9kYXNoLl9nZXRuYXRpdmUgIl4zLjAu
MCIKKyAgICBsb2Rhc2guaXNhcmd1bWVudHMgIl4zLjAuMCIKKyAgICBsb2Rhc2guaXNhcnJheSAi
XjMuMC4wIgorCittZWRpYS10eXBlckAwLjMuMDoKKyAgdmVyc2lvbiAiMC4zLjAiCisgIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL21lZGlhLXR5cGVyLy0vbWVkaWEtdHlw
ZXItMC4zLjAudGd6Izg3MTBkN2FmMGFhNjI2ZjhmZmZhMWNlMDAxNjg1NDUyNjMyNTU3NDgiCisK
K21lcmdlLWRlc2NyaXB0b3JzQDEuMC4xOgorICB2ZXJzaW9uICIxLjAuMSIKKyAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbWVyZ2UtZGVzY3JpcHRvcnMvLS9tZXJnZS1k
ZXNjcmlwdG9ycy0xLjAuMS50Z3ojYjAwYWFhNTU2ZGQ4YjQ0NTY4MTUwZWM5ZDFiOTUzZjNmOTBj
YmI2MSIKKworbWV0aG9kc0B+MS4xLjI6CisgIHZlcnNpb24gIjEuMS4yIgorICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9tZXRob2RzLy0vbWV0aG9kcy0xLjEuMi50Z3oj
NTUyOWE0ZDY3NjU0MTM0ZWRjYzUyNjY2NTY4MzViMGY4NTFhZmNlZSIKKworbWltZS1kYkB+MS4y
NS4wOgorICB2ZXJzaW9uICIxLjI1LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL21pbWUtZGIvLS9taW1lLWRiLTEuMjUuMC50Z3ojYzE4ZGJkN2M3M2E1ZGJmNmY0
NGEwMjRkYzBkMTY1YTFlN2IxYzM5MiIKKworbWltZS10eXBlc0B+Mi4xLjExLCBtaW1lLXR5cGVz
QH4yLjEuMTM6CisgIHZlcnNpb24gIjIuMS4xMyIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vbWltZS10eXBlcy8tL21pbWUtdHlwZXMtMi4xLjEzLnRneiNlMDdhYWE5
YzZjNmI5YTdjYTMwMTJjNjkwMDNhZDI1YTM5ZTkyYTg4IgorICBkZXBlbmRlbmNpZXM6CisgICAg
bWltZS1kYiAifjEuMjUuMCIKKworbWltZUAxLjMuNDoKKyAgdmVyc2lvbiAiMS4zLjQiCisgIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL21pbWUvLS9taW1lLTEuMy40LnRn
eiMxMTVmOWUzYjZiM2RhZjI5NTk5ODNjYjM4ZjE0OWEyZDQwZWI1ZDUzIgorCittaW5pbWF0Y2hA
XjMuMC4yOgorICB2ZXJzaW9uICIzLjAuMyIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vbWluaW1hdGNoLy0vbWluaW1hdGNoLTMuMC4zLnRneiMyYTRlNDA5MGI5NmIy
ZGIwNmE5ZDdkZjAxMDU1YTYyYTc3YzliNzc0IgorICBkZXBlbmRlbmNpZXM6CisgICAgYnJhY2Ut
ZXhwYW5zaW9uICJeMS4wLjAiCisKK21pbmltaXN0QDAuMC44OgorICB2ZXJzaW9uICIwLjAuOCIK
KyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbWluaW1pc3QvLS9taW5p
bWlzdC0wLjAuOC50Z3ojODU3ZmNhYmZjMzM5N2QyNjI1YjgyMjgyNjJlODZhYTdhMDExYjA1ZCIK
KworbWluaW1pc3RAfjAuMC4xOgorICB2ZXJzaW9uICIwLjAuMTAiCisgIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL21pbmltaXN0Ly0vbWluaW1pc3QtMC4wLjEwLnRneiNk
ZTNmOTg1NDNkYmY5NjA4MmJlNDhhZDFhMGM3Y2RhODM2MzAxZGNmIgorCitta2RpcnBAMC41LjEs
IG1rZGlycEBeMC41LjA6CisgIHZlcnNpb24gIjAuNS4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9ta2RpcnAvLS9ta2RpcnAtMC41LjEudGd6IzMwMDU3NDM4ZWFj
NmNmN2Y4YzQ3NjdmMzg2NDhkNjY5N2Q3NWM5MDMiCisgIGRlcGVuZGVuY2llczoKKyAgICBtaW5p
bWlzdCAiMC4wLjgiCisKKyJtb2NoYS1rbm93bi1pc3N1ZXMtcmVwb3J0ZXJAZ2l0K2h0dHBzOi8v
Z2l0aHViLmNvbS9Db2xpbkViZXJoYXJkdC9tb2NoYS1rbm93bi1pc3N1ZXMtcmVwb3J0ZXIuZ2l0
I3YwLjAuMCI6CisgIHZlcnNpb24gIjAuMC4wIgorICByZXNvbHZlZCAiZ2l0K2h0dHBzOi8vZ2l0
aHViLmNvbS9Db2xpbkViZXJoYXJkdC9tb2NoYS1rbm93bi1pc3N1ZXMtcmVwb3J0ZXIuZ2l0Izhh
ZWExNmIzZTk1OTZlZTc5NDI5NWFiYmVkOGNkYjk1ZmIzNzllOTMiCisKK21vY2hhQCo6CisgIHZl
cnNpb24gIjMuMi4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9t
b2NoYS8tL21vY2hhLTMuMi4wLnRneiM3ZGM0ZjQ1ZTUwODgwNzUxNzFhNjg4OTY4MTRlNmFlOWVi
N2E4NWUzIgorICBkZXBlbmRlbmNpZXM6CisgICAgYnJvd3Nlci1zdGRvdXQgIjEuMy4wIgorICAg
IGNvbW1hbmRlciAiMi45LjAiCisgICAgZGVidWcgIjIuMi4wIgorICAgIGRpZmYgIjEuNC4wIgor
ICAgIGVzY2FwZS1zdHJpbmctcmVnZXhwICIxLjAuNSIKKyAgICBnbG9iICI3LjAuNSIKKyAgICBn
cm93bCAiMS45LjIiCisgICAganNvbjMgIjMuMy4yIgorICAgIGxvZGFzaC5jcmVhdGUgIjMuMS4x
IgorICAgIG1rZGlycCAiMC41LjEiCisgICAgc3VwcG9ydHMtY29sb3IgIjMuMS4yIgorCittc0Aw
LjcuMToKKyAgdmVyc2lvbiAiMC43LjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL21zLy0vbXMtMC43LjEudGd6IzljZDEzYzAzYWRiZmYyNWI2NWVmZmRlN2NlODY0
ZWU5NTIwMTcwOTgiCisKK25lZ290aWF0b3JAMC42LjE6CisgIHZlcnNpb24gIjAuNi4xIgorICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9uZWdvdGlhdG9yLy0vbmVnb3Rp
YXRvci0wLjYuMS50Z3ojMmIzMjcxODRlODk5MjEwMTE3N2IyODU2M2ZiNWU3MTAyYWNkMGNhOSIK
Kworbm9wdEB+My4wLjE6CisgIHZlcnNpb24gIjMuMC42IgorICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9ub3B0Ly0vbm9wdC0zLjAuNi50Z3ojYzY0NjVkYmYwOGFiY2Q0
ZGIzNTkzMTdmNzlhYzY4YTY0NmIyOGZmOSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGFiYnJldiAi
MSIKKworbnBtY29uZkBeMi4xLjE6CisgIHZlcnNpb24gIjIuMS4yIgorICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9ucG1jb25mLy0vbnBtY29uZi0yLjEuMi50Z3ojNjY2
MDZhNGE3MzZmMWU3N2EwNTlhYTA3MWE3OWM5NGFiNzgxODUzYSIKKyAgZGVwZW5kZW5jaWVzOgor
ICAgIGNvbmZpZy1jaGFpbiAifjEuMS44IgorICAgIGluaGVyaXRzICJ+Mi4wLjAiCisgICAgaW5p
ICJeMS4yLjAiCisgICAgbWtkaXJwICJeMC41LjAiCisgICAgbm9wdCAifjMuMC4xIgorICAgIG9u
Y2UgIn4xLjMuMCIKKyAgICBvc2VudiAiXjAuMS4wIgorICAgIHNlbXZlciAiMiB8fCAzIHx8IDQi
CisgICAgdWlkLW51bWJlciAiMC4wLjUiCisKK29uLWZpbmlzaGVkQH4yLjMuMDoKKyAgdmVyc2lv
biAiMi4zLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL29uLWZp
bmlzaGVkLy0vb24tZmluaXNoZWQtMi4zLjAudGd6IzIwZjEzMzY0ODFiMDgzY2Q3NTMzNzk5MmEx
Njk3MWFhMmQ5MDY5NDciCisgIGRlcGVuZGVuY2llczoKKyAgICBlZS1maXJzdCAiMS4xLjEiCisK
K29uY2VAXjEuMy4wLCBvbmNlQH4xLjMuMDoKKyAgdmVyc2lvbiAiMS4zLjMiCisgIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL29uY2UvLS9vbmNlLTEuMy4zLnRneiNiMmUy
NjE1NTdjZTRjMzE0ZWM4MzA0ZjNmYTgyNjYzZTQyOTdjYTIwIgorICBkZXBlbmRlbmNpZXM6Cisg
ICAgd3JhcHB5ICIxIgorCitvcHRpbWlzdEBeMC42LjE6CisgIHZlcnNpb24gIjAuNi4xIgorICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9vcHRpbWlzdC8tL29wdGltaXN0
LTAuNi4xLnRneiNkYTNlYTc0Njg2ZmEyMWExOWExMTFjMzI2ZTkwZWIxNWEwMTk2Njg2IgorICBk
ZXBlbmRlbmNpZXM6CisgICAgbWluaW1pc3QgIn4wLjAuMSIKKyAgICB3b3Jkd3JhcCAifjAuMC4y
IgorCitvcHRpb25zQD49MC4wLjU6CisgIHZlcnNpb24gIjAuMC42IgorICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9vcHRpb25zLy0vb3B0aW9ucy0wLjAuNi50Z3ojZWMy
MmQzMTI4MDZiYjUzZTczMTc3M2U3Y2RhZWZjZjFjNjQzMTI4ZiIKKworb3MtaG9tZWRpckBeMS4w
LjA6CisgIHZlcnNpb24gIjEuMC4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9vcy1ob21lZGlyLy0vb3MtaG9tZWRpci0xLjAuMi50Z3ojZmZiYzQ5ODgzMzZlMGU4
MzNkZTBjMTY4YzdlZjE1MjEyMWFhN2ZiMyIKKworb3MtdG1wZGlyQF4xLjAuMDoKKyAgdmVyc2lv
biAiMS4wLjIiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL29zLXRt
cGRpci8tL29zLXRtcGRpci0xLjAuMi50Z3ojYmJlNjc0MDZjNzlhYTg1YzVjZmVjNzY2ZmU1NzM0
NTU1ZGZhMTI3NCIKKworb3NlbnZAXjAuMS4wOgorICB2ZXJzaW9uICIwLjEuMyIKKyAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vb3NlbnYvLS9vc2Vudi0wLjEuMy50Z3oj
ODNjZjA1YzZkNjQ1OGZjNGQ1YWM2MzYyZWEzMjVkOTJmMjc1NDIxNyIKKyAgZGVwZW5kZW5jaWVz
OgorICAgIG9zLWhvbWVkaXIgIl4xLjAuMCIKKyAgICBvcy10bXBkaXIgIl4xLjAuMCIKKworcGFy
c2V1cmxAfjEuMy4xOgorICB2ZXJzaW9uICIxLjMuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vcGFyc2V1cmwvLS9wYXJzZXVybC0xLjMuMS50Z3ojYzhhYjhjOTIy
M2JhMzQ4ODhhYTY0YTI5N2IyODg1M2JlYzE4ZGE1NiIKKworcGF0aC1pcy1hYnNvbHV0ZUBeMS4w
LjA6CisgIHZlcnNpb24gIjEuMC4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9wYXRoLWlzLWFic29sdXRlLy0vcGF0aC1pcy1hYnNvbHV0ZS0xLjAuMS50Z3ojMTc0
YjkyNjg3MzU1MzRmZmJjN2FjZTZiZjUzYTVhOWUxYjVjNWY1ZiIKKworcGF0aC10by1yZWdleHBA
MC4xLjc6CisgIHZlcnNpb24gIjAuMS43IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9wYXRoLXRvLXJlZ2V4cC8tL3BhdGgtdG8tcmVnZXhwLTAuMS43LnRneiNkZjYw
NDE3ODAwNWY1MjJmMTVlYjQ0OTBlNzI0N2ExYmZhYTY3ZjhjIgorCitwcm90by1saXN0QH4xLjIu
MToKKyAgdmVyc2lvbiAiMS4yLjQiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w
a2cuY29tL3Byb3RvLWxpc3QvLS9wcm90by1saXN0LTEuMi40LnRneiMyMTJkNWJmZTEzMTgzMDZh
NDIwZjY0MDJiOGUyNmZmMzk2NDdhODQ5IgorCitwcm94eS1hZGRyQH4xLjEuMjoKKyAgdmVyc2lv
biAiMS4xLjIiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Byb3h5
LWFkZHIvLS9wcm94eS1hZGRyLTEuMS4yLnRneiNiNGNjNWYyMjYxMGQ5NTM1ODI0YzEyM2FlZjlk
M2NmNzNjNDBiYTM3IgorICBkZXBlbmRlbmNpZXM6CisgICAgZm9yd2FyZGVkICJ+MC4xLjAiCisg
ICAgaXBhZGRyLmpzICIxLjEuMSIKKworcXNANi4yLjA6CisgIHZlcnNpb24gIjYuMi4wIgorICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9xcy8tL3FzLTYuMi4wLnRneiMz
Yjc4NDhjMDNjMmRlY2U2OWE5NTIyYjBmYWU4YzQxMjZkNzQ1ZjNiIgorCityYW5nZS1wYXJzZXJA
fjEuMi4wOgorICB2ZXJzaW9uICIxLjIuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vcmFuZ2UtcGFyc2VyLy0vcmFuZ2UtcGFyc2VyLTEuMi4wLnRneiNmNDliZTZi
NDg3ODk0ZGRjNDBkY2M5NGEzMjJmNjExMDkyZTAwZDVlIgorCityaW1yYWZAXjIuMC4zLCByaW1y
YWZAXjIuMi44OgorICB2ZXJzaW9uICIyLjUuNCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vcmltcmFmLy0vcmltcmFmLTIuNS40LnRneiM5NjgwMDA5M2NiZjFhMGM4
NmJkOTViNDYyNTQ2NzUzNWMyOWRmYTA0IgorICBkZXBlbmRlbmNpZXM6CisgICAgZ2xvYiAiXjcu
MC41IgorCitzYXhAMC42Lng6CisgIHZlcnNpb24gIjAuNi4xIgorICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zYXgvLS9zYXgtMC42LjEudGd6IzU2M2IxOWM3YzFkZTg5
MmUwOWJmYzRmMmZjMzBlM2MyN2YwOTUyYjkiCisKK3NlbGVuaXVtLXdlYmRyaXZlckAyLjUzLjE6
CisgIHZlcnNpb24gIjIuNTMuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vc2VsZW5pdW0td2ViZHJpdmVyLy0vc2VsZW5pdW0td2ViZHJpdmVyLTIuNTMuMS50Z3oj
YjUwNjczOTU1ZGMwM2I5MTY0YzA3NzczYTg2YjI1ZWE3MTYxZGJkOSIKKyAgZGVwZW5kZW5jaWVz
OgorICAgIGFkbS16aXAgIjAuNC40IgorICAgIHJpbXJhZiAiXjIuMi44IgorICAgIHRtcCAiMC4w
LjI0IgorICAgIHdzICJeMS4wLjEiCisgICAgeG1sMmpzICIwLjQuNCIKKworc2VsZW5pdW0td2Vi
ZHJpdmVyQH4yLjUzLjE6CisgIHZlcnNpb24gIjIuNTMuMyIKKyAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vc2VsZW5pdW0td2ViZHJpdmVyLy0vc2VsZW5pdW0td2ViZHJp
dmVyLTIuNTMuMy50Z3ojZDI5ZmY1YTk1N2RmZjFhMWI0OWRjNDU3NzU2ZTRlNGJmYmRjZTA4NSIK
KyAgZGVwZW5kZW5jaWVzOgorICAgIGFkbS16aXAgIjAuNC40IgorICAgIHJpbXJhZiAiXjIuMi44
IgorICAgIHRtcCAiMC4wLjI0IgorICAgIHdzICJeMS4wLjEiCisgICAgeG1sMmpzICIwLjQuNCIK
KworInNlbXZlckAyIHx8IDMgfHwgNCI6CisgIHZlcnNpb24gIjQuMy42IgorICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zZW12ZXIvLS9zZW12ZXItNC4zLjYudGd6IzMw
MGJjNmUwZTg2Mzc0ZjdiYTYxMDY4YjViMWVjZDU3ZmM2NTMyZGEiCisKK3NlbmRAMC4xNC4xOgor
ICB2ZXJzaW9uICIwLjE0LjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL3NlbmQvLS9zZW5kLTAuMTQuMS50Z3ojYTk1NDk4NDMyNTM5MmY1MTUzMmE3NzYwNzYwZTQ1
OTU5OGM4OWY3YSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGRlYnVnICJ+Mi4yLjAiCisgICAgZGVw
ZCAifjEuMS4wIgorICAgIGRlc3Ryb3kgIn4xLjAuNCIKKyAgICBlbmNvZGV1cmwgIn4xLjAuMSIK
KyAgICBlc2NhcGUtaHRtbCAifjEuMC4zIgorICAgIGV0YWcgIn4xLjcuMCIKKyAgICBmcmVzaCAi
MC4zLjAiCisgICAgaHR0cC1lcnJvcnMgIn4xLjUuMCIKKyAgICBtaW1lICIxLjMuNCIKKyAgICBt
cyAiMC43LjEiCisgICAgb24tZmluaXNoZWQgIn4yLjMuMCIKKyAgICByYW5nZS1wYXJzZXIgIn4x
LjIuMCIKKyAgICBzdGF0dXNlcyAifjEuMy4wIgorCitzZXJ2ZS1zdGF0aWNAfjEuMTEuMToKKyAg
dmVyc2lvbiAiMS4xMS4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9zZXJ2ZS1zdGF0aWMvLS9zZXJ2ZS1zdGF0aWMtMS4xMS4xLnRneiNkNmNjZTc2OTM1MDVmNzMz
Yzc1OWRlNTdiZWZjMWFmNzZjMGYwODA1IgorICBkZXBlbmRlbmNpZXM6CisgICAgZW5jb2RldXJs
ICJ+MS4wLjEiCisgICAgZXNjYXBlLWh0bWwgIn4xLjAuMyIKKyAgICBwYXJzZXVybCAifjEuMy4x
IgorICAgIHNlbmQgIjAuMTQuMSIKKworc2V0cHJvdG90eXBlb2ZAMS4wLjI6CisgIHZlcnNpb24g
IjEuMC4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zZXRwcm90
b3R5cGVvZi8tL3NldHByb3RvdHlwZW9mLTEuMC4yLnRneiM4MWE1NTIxNDFlYzEwNGI4OGU4OWNl
MzgzMTAzYWQ1YzY2NTY0ZDA4IgorCisic3RhdHVzZXNAPj0gMS4zLjEgPCAyIiwgc3RhdHVzZXNA
fjEuMy4wOgorICB2ZXJzaW9uICIxLjMuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vc3RhdHVzZXMvLS9zdGF0dXNlcy0xLjMuMS50Z3ojZmFmNTFiOWViNzRhYWVm
M2IzYWNmNGFkNWY2MWFiZjI0Y2I3YjkzZSIKKworc3VwcG9ydHMtY29sb3JAMy4xLjI6CisgIHZl
cnNpb24gIjMuMS4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9z
dXBwb3J0cy1jb2xvci8tL3N1cHBvcnRzLWNvbG9yLTMuMS4yLnRneiM3MmEyNjI4OTRkOWQ0MDhi
OTU2Y2EwNWZmMzdiMmVkOGE2ZTJhMmQ1IgorICBkZXBlbmRlbmNpZXM6CisgICAgaGFzLWZsYWcg
Il4xLjAuMCIKKwordG1wQDAuMC4yNDoKKyAgdmVyc2lvbiAiMC4wLjI0IgorICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS90bXAvLS90bXAtMC4wLjI0LnRneiNkNmE1ZTE5
OGQxNGE5ODM1Y2M2ZjJkN2MzZDllMzAyNDI4YzhjZjEyIgorCit0eXBlLWlzQH4xLjYuMTM6Cisg
IHZlcnNpb24gIjEuNi4xNCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vdHlwZS1pcy8tL3R5cGUtaXMtMS42LjE0LnRneiNlMjE5NjM5YzE3ZGVkMWNhMDc4OTA5MmRk
NTRhMDM4MjZiODE3Y2IyIgorICBkZXBlbmRlbmNpZXM6CisgICAgbWVkaWEtdHlwZXIgIjAuMy4w
IgorICAgIG1pbWUtdHlwZXMgIn4yLjEuMTMiCisKK3VpZC1udW1iZXJAMC4wLjU6CisgIHZlcnNp
b24gIjAuMC41IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS91aWQt
bnVtYmVyLy0vdWlkLW51bWJlci0wLjAuNS50Z3ojNWEzZGIyM2VmNWRiZDU1YjgxZmNlMGVjOWEy
YWM2ZmNjZGViYjgxZSIKKwordWx0cm9uQDEuMC54OgorICB2ZXJzaW9uICIxLjAuMiIKKyAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vdWx0cm9uLy0vdWx0cm9uLTEuMC4y
LnRneiNhY2UxMTZhYjU1N2NkMTk3Mzg2YTRlODhmNDY4NTM3OGM4YjJlNGZhIgorCit1bnBpcGVA
fjEuMC4wOgorICB2ZXJzaW9uICIxLjAuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vdW5waXBlLy0vdW5waXBlLTEuMC4wLnRneiNiMmJmNGVlODUxNGFhZTYxNjVi
NDgxNzgyOWQyMWIyZWY0OTkwNGVjIgorCit1dGlscy1tZXJnZUAxLjAuMDoKKyAgdmVyc2lvbiAi
MS4wLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3V0aWxzLW1l
cmdlLy0vdXRpbHMtbWVyZ2UtMS4wLjAudGd6IzAyOTRmYjkyMmJiOTM3NTE1MzU0MWM0ZjcwOTYy
MzFmMjg3YzhhZjgiCisKK3ZhcnlAfjEuMS4wOgorICB2ZXJzaW9uICIxLjEuMCIKKyAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vdmFyeS8tL3ZhcnktMS4xLjAudGd6I2Ux
ZTVhZmZiYmQxNmFlNzY4ZGQyNjc0Mzk0YjlhZDMwMjI2NTMxNDAiCisKK3dvcmR3cmFwQH4wLjAu
MjoKKyAgdmVyc2lvbiAiMC4wLjMiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w
a2cuY29tL3dvcmR3cmFwLy0vd29yZHdyYXAtMC4wLjMudGd6I2EzZDVkYTZjZDVjMGJjMDAwOGQz
NzIzNGJiYWYxYmVkNjMwNTkxMDciCisKK3dyYXBweUAxOgorICB2ZXJzaW9uICIxLjAuMiIKKyAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vd3JhcHB5Ly0vd3JhcHB5LTEu
MC4yLnRneiNiNTI0M2Q4ZjNlYzFhYTM1ZjEzNjQ2MDViYzBkMTAzNmUzMGFiNjlmIgorCit3c0Be
MS4wLjE6CisgIHZlcnNpb24gIjEuMS4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS93cy8tL3dzLTEuMS4xLnRneiMwODJkZGI2YzY0MWU4NWQ0YmI0NTFmMDNkNTJm
MDZlYWJkYjFmMDE4IgorICBkZXBlbmRlbmNpZXM6CisgICAgb3B0aW9ucyAiPj0wLjAuNSIKKyAg
ICB1bHRyb24gIjEuMC54IgorCit4bWwyanNAMC40LjQ6CisgIHZlcnNpb24gIjAuNC40IgorICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS94bWwyanMvLS94bWwyanMtMC40
LjQudGd6IzMxMTEwMTAwMDMwMDhhZTE5MjQwZWJhMTc0OTdiNTdjNzI5YzU1NWQiCisgIGRlcGVu
ZGVuY2llczoKKyAgICBzYXggIjAuNi54IgorICAgIHhtbGJ1aWxkZXIgIj49MS4wLjAiCisKK3ht
bGJ1aWxkZXJAPj0xLjAuMDoKKyAgdmVyc2lvbiAiOC4yLjIiCisgIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3htbGJ1aWxkZXIvLS94bWxidWlsZGVyLTguMi4yLnRneiM2
OTI0ODY3MzQxMGI0YmE0MmUxYTYxMzY1NTFkMjkyMjMzNWFhNzczIgpkaWZmIC0tZ2l0IGEvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvaW5mZXJuby93ZWJwYWNrLmNvbmZpZy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2luZmVybm8v
d2VicGFjay5jb25maWcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzdiM2U2ZjdmZDY4YmJjNjkzZjJlMzg1YzBj
ZTIxYWQ0M2UwNDViZAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2luZmVybm8vd2Vi
cGFjay5jb25maWcuanMKQEAgLTAsMCArMSwzMSBAQAorY29uc3Qgd2VicGFjayA9IHJlcXVpcmUo
J3dlYnBhY2snKTsKKworbW9kdWxlLmV4cG9ydHMgPSB7CisgICAgZW50cnk6ICcuL3NyYy9pbmRl
eC5qcycsCisgICAgb3V0cHV0OiB7CisgICAgICAgIHBhdGg6ICcuL2Rpc3QnLAorICAgICAgICBw
dWJsaWNQYXRoOiAnZGlzdCcsCisgICAgICAgIGZpbGVuYW1lOiAnYnVuZGxlLmpzJworICAgIH0s
CisgICAgbW9kdWxlOiB7CisgICAgICAgIGxvYWRlcnM6IFt7CisgICAgICAgICAgICB0ZXN0OiAv
XC5qc3g/JC8sCisgICAgICAgICAgICBleGNsdWRlOiAvbm9kZV9tb2R1bGVzLywKKyAgICAgICAg
ICAgIGxvYWRlcjogJ2JhYmVsJywKKyAgICAgICAgICAgIHF1ZXJ5OiB7CisgICAgICAgICAgICAg
ICAgcHJlc2V0czogWydlczIwMTUtbG9vc2UnLCAnc3RhZ2UtMCddLAorICAgICAgICAgICAgICAg
IHBsdWdpbnM6IFsnc3ludGF4LWpzeCcsICdpbmZlcm5vJ10KKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfV0KKyAgICB9LAorICAgIHBsdWdpbnM6IFsKKyAgICAgICAgbmV3IHdlYnBhY2suRGVmaW5l
UGx1Z2luKHsKKyAgICAgICAgICAgICdwcm9jZXNzLmVudic6IHsKKyAgICAgICAgICAgICAgICAn
Tk9ERV9FTlYnOiBKU09OLnN0cmluZ2lmeSgncHJvZHVjdGlvbicpCisgICAgICAgICAgICB9Cisg
ICAgICAgIH0pLAorICAgIF0sCisgICAgZGV2U2VydmVyOiB7CisgICAgICAgIHBvcnQ6IHByb2Nl
c3MuZW52LlBPUlQgfHwgODAwMAorICAgIH0KK307CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9p
bmZlcm5vL3lhcm4ubG9jayBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2luZmVybm8veWFybi5sb2NrCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjNhZDJmMmFmZGE3OTZkM2M0N2RmNmRkYjUzNTFlZjFmMjI0ODRjYTEKLS0tIC9kZXYvbnVs
bAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9pbmZlcm5vL3lhcm4ubG9jawpAQCAtMCwwICsxLDI1OTcgQEAK
KyMgVEhJUyBJUyBBTiBBVVRPR0VORVJBVEVEIEZJTEUuIERPIE5PVCBFRElUIFRISVMgRklMRSBE
SVJFQ1RMWS4KKyMgeWFybiBsb2NrZmlsZSB2MQorCisKK2FiYnJldkAxOgorICB2ZXJzaW9uICIx
LjAuOSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYWJicmV2Ly0v
YWJicmV2LTEuMC45LnRneiM5MWI0NzkyNTg4YTc3MzhjMjVmMzVkZDZmNjM3NTJhMmY4Nzc2MTM1
IgorCithY2NlcHRzQH4xLjMuMzoKKyAgdmVyc2lvbiAiMS4zLjMiCisgIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2FjY2VwdHMvLS9hY2NlcHRzLTEuMy4zLnRneiNjM2Nh
NzQzNDkzODY0OGMzZTBkOWMxZTMyOGRkNjhiNjIyYzI4NGNhIgorICBkZXBlbmRlbmNpZXM6Cisg
ICAgbWltZS10eXBlcyAifjIuMS4xMSIKKyAgICBuZWdvdGlhdG9yICIwLjYuMSIKKworYWNvcm5A
XjMuMC4wOgorICB2ZXJzaW9uICIzLjMuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vYWNvcm4vLS9hY29ybi0zLjMuMC50Z3ojNDVlMzdmYjM5ZThkYTNmMjViYWVl
M2ZmNTM2OWUyYmI1ZjIyMDE3YSIKKworYWxpZ24tdGV4dEBeMC4xLjEsIGFsaWduLXRleHRAXjAu
MS4zOgorICB2ZXJzaW9uICIwLjEuNCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vYWxpZ24tdGV4dC8tL2FsaWduLXRleHQtMC4xLjQudGd6IzBjZDkwYTU2MTA5M2Yz
NWQwYTk5MjU2YzIyYjcwNjk0MzNmYWQxMTciCisgIGRlcGVuZGVuY2llczoKKyAgICBraW5kLW9m
ICJeMy4wLjIiCisgICAgbG9uZ2VzdCAiXjEuMC4xIgorICAgIHJlcGVhdC1zdHJpbmcgIl4xLjUu
MiIKKworYW1kZWZpbmVAPj0wLjAuNDoKKyAgdmVyc2lvbiAiMS4wLjEiCisgIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2FtZGVmaW5lLy0vYW1kZWZpbmUtMS4wLjEudGd6
IzRhNTI4MmFjMTY0NzI5ZTkzNjE5YmNmZDNhZDE1MWY4MTdjZTkxZjUiCisKK2Fuc2ktcmVnZXhA
XjIuMC4wOgorICB2ZXJzaW9uICIyLjAuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vYW5zaS1yZWdleC8tL2Fuc2ktcmVnZXgtMi4wLjAudGd6I2M1MDYxYjZlMGVm
OGE4MTc3NWU1MGY1ZDY2MTUxYmY2YmYzNzExMDciCisKK2Fuc2ktc3R5bGVzQF4yLjIuMToKKyAg
dmVyc2lvbiAiMi4yLjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L2Fuc2ktc3R5bGVzLy0vYW5zaS1zdHlsZXMtMi4yLjEudGd6I2I0MzJkZDMzNThiNjM0Y2Y3NWUx
ZTQ2NjQzNjgyNDA1MzNjMWRkYmUiCisKK2FueW1hdGNoQF4xLjMuMDoKKyAgdmVyc2lvbiAiMS4z
LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2FueW1hdGNoLy0v
YW55bWF0Y2gtMS4zLjAudGd6I2EzZTUyZmEzOTE2OGM4MjVmZjU3YjAyNDgxMjZjZTVhOGZmOTU1
MDciCisgIGRlcGVuZGVuY2llczoKKyAgICBhcnJpZnkgIl4xLjAuMCIKKyAgICBtaWNyb21hdGNo
ICJeMi4xLjUiCisKK2Fwcm9iYUBeMS4wLjM6CisgIHZlcnNpb24gIjEuMC40IgorICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9hcHJvYmEvLS9hcHJvYmEtMS4wLjQudGd6
IzI3MTM2ODA3NzVlNzYxNGM4YmExODZjMDY1ZDRlMmU1MmQxMDcyYzAiCisKK2FyZS13ZS10aGVy
ZS15ZXRAfjEuMS4yOgorICB2ZXJzaW9uICIxLjEuMiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vYXJlLXdlLXRoZXJlLXlldC8tL2FyZS13ZS10aGVyZS15ZXQtMS4x
LjIudGd6IzgwZTQ3MGU5NWEwODQ3OTRmZTE4OTkyNjJjNTY2N2M2ZTg4ZGUxYjMiCisgIGRlcGVu
ZGVuY2llczoKKyAgICBkZWxlZ2F0ZXMgIl4xLjAuMCIKKyAgICByZWFkYWJsZS1zdHJlYW0gIl4y
LjAuMCB8fCBeMS4xLjEzIgorCithcnItZGlmZkBeMi4wLjA6CisgIHZlcnNpb24gIjIuMC4wIgor
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9hcnItZGlmZi8tL2Fyci1k
aWZmLTIuMC4wLnRneiM4ZjNiODI3Zjk1NWE4YmQ2Njk2OTdlNGE0MjU2YWMzY2VhZTM1NmNmIgor
ICBkZXBlbmRlbmNpZXM6CisgICAgYXJyLWZsYXR0ZW4gIl4xLjAuMSIKKworYXJyLWZsYXR0ZW5A
XjEuMC4xOgorICB2ZXJzaW9uICIxLjAuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vYXJyLWZsYXR0ZW4vLS9hcnItZmxhdHRlbi0xLjAuMS50Z3ojZTVmZmU1NGQ0
NWUxOWYzMmYyMTZlOTFlYjk5YzhjZTg5MmJiNjA0YiIKKworYXJyYXktZmxhdHRlbkAxLjEuMToK
KyAgdmVyc2lvbiAiMS4xLjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL2FycmF5LWZsYXR0ZW4vLS9hcnJheS1mbGF0dGVuLTEuMS4xLnRneiM5YTVmNjk5MDUxYjFl
NzA3MzMyOGYyYTAwODk2OGI2NGVhMjk1NWQyIgorCithcnJheS11bmlxdWVAXjAuMi4xOgorICB2
ZXJzaW9uICIwLjIuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
YXJyYXktdW5pcXVlLy0vYXJyYXktdW5pcXVlLTAuMi4xLnRneiNhMWQ5N2NjYWZjYmMyNjI1Y2M3
MGZhZGNlYjM2YTUwYzU4YjAxYTUzIgorCithcnJpZnlAXjEuMC4wOgorICB2ZXJzaW9uICIxLjAu
MSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYXJyaWZ5Ly0vYXJy
aWZ5LTEuMC4xLnRneiM4OTg1MDhkYTIyMjZmMzgwZGY5MDQ3Mjg0NTY4NDljMTUwMWE0YjBkIgor
Cithc24xQH4wLjIuMzoKKyAgdmVyc2lvbiAiMC4yLjMiCisgIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL2FzbjEvLS9hc24xLTAuMi4zLnRneiNkYWM4Nzg3NzEzYzk5NjY4
NDlmYzgxODA3NzdlYmU5YzFkZGYzYjg2IgorCithc3NlcnQtcGx1c0BeMC4yLjA6CisgIHZlcnNp
b24gIjAuMi4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9hc3Nl
cnQtcGx1cy8tL2Fzc2VydC1wbHVzLTAuMi4wLnRneiNkNzRlMWI4N2U3YWZmYzBkYjhhYWRiNzAy
MWYzZmU0ODEwMWFiMjM0IgorCithc3NlcnQtcGx1c0BeMS4wLjA6CisgIHZlcnNpb24gIjEuMC4w
IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9hc3NlcnQtcGx1cy8t
L2Fzc2VydC1wbHVzLTEuMC4wLnRneiNmMTJlMGYzYzVkNzdiMGIxY2RkOTE0Njk0MmU0ZTk2YzFl
NGRkNTI1IgorCithc3NlcnRAXjEuMS4xOgorICB2ZXJzaW9uICIxLjQuMSIKKyAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYXNzZXJ0Ly0vYXNzZXJ0LTEuNC4xLnRneiM5
OTkxMmQ1OTE4MzZiNWE2ZjViMzQ1YzBmMDdlZWZjMDhmYzY1ZDkxIgorICBkZXBlbmRlbmNpZXM6
CisgICAgdXRpbCAiMC4xMC4zIgorCithc3luYy1lYWNoQF4xLjAuMDoKKyAgdmVyc2lvbiAiMS4w
LjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2FzeW5jLWVhY2gv
LS9hc3luYy1lYWNoLTEuMC4xLnRneiMxOWQzODZhMWQ5ZWRjNmU3YzFjODVkMzg4YWVkYmNjNTZk
MzM2MDJkIgorCithc3luY0BeMC45LjA6CisgIHZlcnNpb24gIjAuOS4yIgorICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9hc3luYy8tL2FzeW5jLTAuOS4yLnRneiNhZWE3
NGQ1ZTYxYzFmODk5NjEzYmY2NGJkYTY2ZDRjNzhmMmZkMTdkIgorCithc3luY0BeMS4zLjA6Cisg
IHZlcnNpb24gIjEuNS4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9hc3luYy8tL2FzeW5jLTEuNS4yLnRneiNlYzZhNjFhZTU2NDgwYzBjM2NiMjQxYzk1NjE4ZTIw
ODkyZjk2NzJhIgorCithc3luY0B+MC4yLjY6CisgIHZlcnNpb24gIjAuMi4xMCIKKyAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYXN5bmMvLS9hc3luYy0wLjIuMTAudGd6
I2I2YmJlMGIwNjc0YjlkNzE5NzA4Y2EzOGRlOGMyMzdjYjUyNmMzZDEiCisKK2FzeW5ja2l0QF4w
LjQuMDoKKyAgdmVyc2lvbiAiMC40LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL2FzeW5ja2l0Ly0vYXN5bmNraXQtMC40LjAudGd6I2M3OWVkOTdmN2YzNGNiOGYy
YmExYmM5NzkwYmNjMzY2NDc0YjRiNzkiCisKK2F3cy1zaWduMkB+MC42LjA6CisgIHZlcnNpb24g
IjAuNi4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9hd3Mtc2ln
bjIvLS9hd3Mtc2lnbjItMC42LjAudGd6IzE0MzQyZGQzOGRiY2M5NGQwZTViODdkNzYzY2Q2MzYx
MmMwZTc5NGYiCisKK2F3czRAXjEuMi4xOgorICB2ZXJzaW9uICIxLjUuMCIKKyAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYXdzNC8tL2F3czQtMS41LjAudGd6IzBhMjlm
ZmI3OWMzMWM5ZTcxMmVlYjA4N2U4ZTdhNjRiNGE1NmQ3NTUiCisKK2JhYmVsLWNvZGUtZnJhbWVA
XjYuMTYuMDoKKyAgdmVyc2lvbiAiNi4xNi4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9iYWJlbC1jb2RlLWZyYW1lLy0vYmFiZWwtY29kZS1mcmFtZS02LjE2LjAu
dGd6I2Y5MGU2MGRhMDg2MjkwOWQzY2UwOTg3MzNiNWQzOTg3Yzk3Y2I4ZGUiCisgIGRlcGVuZGVu
Y2llczoKKyAgICBjaGFsayAiXjEuMS4wIgorICAgIGVzdXRpbHMgIl4yLjAuMiIKKyAgICBqcy10
b2tlbnMgIl4yLjAuMCIKKworYmFiZWwtY29yZUBeNi4xOC4wLCBiYWJlbC1jb3JlQF42LjUuMjoK
KyAgdmVyc2lvbiAiNi4xOC4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9iYWJlbC1jb3JlLy0vYmFiZWwtY29yZS02LjE4LjIudGd6I2Q4YmIxNGRkNjk4NmZhNGYz
NTY2YTI2Y2VkYTM5NjRmYTBlMDRlNWIiCisgIGRlcGVuZGVuY2llczoKKyAgICBiYWJlbC1jb2Rl
LWZyYW1lICJeNi4xNi4wIgorICAgIGJhYmVsLWdlbmVyYXRvciAiXjYuMTguMCIKKyAgICBiYWJl
bC1oZWxwZXJzICJeNi4xNi4wIgorICAgIGJhYmVsLW1lc3NhZ2VzICJeNi44LjAiCisgICAgYmFi
ZWwtcmVnaXN0ZXIgIl42LjE4LjAiCisgICAgYmFiZWwtcnVudGltZSAiXjYuOS4xIgorICAgIGJh
YmVsLXRlbXBsYXRlICJeNi4xNi4wIgorICAgIGJhYmVsLXRyYXZlcnNlICJeNi4xOC4wIgorICAg
IGJhYmVsLXR5cGVzICJeNi4xOC4wIgorICAgIGJhYnlsb24gIl42LjExLjAiCisgICAgY29udmVy
dC1zb3VyY2UtbWFwICJeMS4xLjAiCisgICAgZGVidWcgIl4yLjEuMSIKKyAgICBqc29uNSAiXjAu
NS4wIgorICAgIGxvZGFzaCAiXjQuMi4wIgorICAgIG1pbmltYXRjaCAiXjMuMC4yIgorICAgIHBh
dGgtaXMtYWJzb2x1dGUgIl4xLjAuMCIKKyAgICBwcml2YXRlICJeMC4xLjYiCisgICAgc2xhc2gg
Il4xLjAuMCIKKyAgICBzb3VyY2UtbWFwICJeMC41LjAiCisKK2JhYmVsLWdlbmVyYXRvckBeNi4x
OC4wOgorICB2ZXJzaW9uICI2LjE5LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL2JhYmVsLWdlbmVyYXRvci8tL2JhYmVsLWdlbmVyYXRvci02LjE5LjAudGd6Izli
MmYyNDQyMDQ3NzdhM2Q2ODEwZWMxMjdjNjczYzg3YjM0OWZhYzUiCisgIGRlcGVuZGVuY2llczoK
KyAgICBiYWJlbC1tZXNzYWdlcyAiXjYuOC4wIgorICAgIGJhYmVsLXJ1bnRpbWUgIl42LjkuMCIK
KyAgICBiYWJlbC10eXBlcyAiXjYuMTkuMCIKKyAgICBkZXRlY3QtaW5kZW50ICJeNC4wLjAiCisg
ICAganNlc2MgIl4xLjMuMCIKKyAgICBsb2Rhc2ggIl40LjIuMCIKKyAgICBzb3VyY2UtbWFwICJe
MC41LjAiCisKK2JhYmVsLWhlbHBlci1iaW5kaWZ5LWRlY29yYXRvcnNAXjYuMTguMDoKKyAgdmVy
c2lvbiAiNi4xOC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9i
YWJlbC1oZWxwZXItYmluZGlmeS1kZWNvcmF0b3JzLy0vYmFiZWwtaGVscGVyLWJpbmRpZnktZGVj
b3JhdG9ycy02LjE4LjAudGd6I2ZjMDBjNTczNjc2YTZlNzAyZmZmYTAwMDE5NTgwODkyZWM4Nzgw
YTUiCisgIGRlcGVuZGVuY2llczoKKyAgICBiYWJlbC1ydW50aW1lICJeNi4wLjAiCisgICAgYmFi
ZWwtdHJhdmVyc2UgIl42LjE4LjAiCisgICAgYmFiZWwtdHlwZXMgIl42LjE4LjAiCisKK2JhYmVs
LWhlbHBlci1idWlsZGVyLWJpbmFyeS1hc3NpZ25tZW50LW9wZXJhdG9yLXZpc2l0b3JAXjYuOC4w
OgorICB2ZXJzaW9uICI2LjE4LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w
a2cuY29tL2JhYmVsLWhlbHBlci1idWlsZGVyLWJpbmFyeS1hc3NpZ25tZW50LW9wZXJhdG9yLXZp
c2l0b3IvLS9iYWJlbC1oZWxwZXItYnVpbGRlci1iaW5hcnktYXNzaWdubWVudC1vcGVyYXRvci12
aXNpdG9yLTYuMTguMC50Z3ojOGFlODE0OTg5ZjdhNTM2ODIxNTJlMzQwMWEwNGZhYmQwYmIzMzNh
NiIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGJhYmVsLWhlbHBlci1leHBsb2RlLWFzc2lnbmFibGUt
ZXhwcmVzc2lvbiAiXjYuMTguMCIKKyAgICBiYWJlbC1ydW50aW1lICJeNi4wLjAiCisgICAgYmFi
ZWwtdHlwZXMgIl42LjE4LjAiCisKK2JhYmVsLWhlbHBlci1jYWxsLWRlbGVnYXRlQF42LjE4LjA6
CisgIHZlcnNpb24gIjYuMTguMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vYmFiZWwtaGVscGVyLWNhbGwtZGVsZWdhdGUvLS9iYWJlbC1oZWxwZXItY2FsbC1kZWxl
Z2F0ZS02LjE4LjAudGd6IzA1YjE0YWFmYTQzMDg4NGIwMzQwOTdlZjI5ZTlmMDY3ZWE0MTMzYmQi
CisgIGRlcGVuZGVuY2llczoKKyAgICBiYWJlbC1oZWxwZXItaG9pc3QtdmFyaWFibGVzICJeNi4x
OC4wIgorICAgIGJhYmVsLXJ1bnRpbWUgIl42LjAuMCIKKyAgICBiYWJlbC10cmF2ZXJzZSAiXjYu
MTguMCIKKyAgICBiYWJlbC10eXBlcyAiXjYuMTguMCIKKworYmFiZWwtaGVscGVyLWRlZmluZS1t
YXBAXjYuMTguMCwgYmFiZWwtaGVscGVyLWRlZmluZS1tYXBAXjYuOC4wOgorICB2ZXJzaW9uICI2
LjE4LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLWhl
bHBlci1kZWZpbmUtbWFwLy0vYmFiZWwtaGVscGVyLWRlZmluZS1tYXAtNi4xOC4wLnRneiM4ZDZj
ODVkYzdmYmI0YzE5YmUzZGU0MDQ3NGQxOGU5N2MzNjc2ZWMyIgorICBkZXBlbmRlbmNpZXM6Cisg
ICAgYmFiZWwtaGVscGVyLWZ1bmN0aW9uLW5hbWUgIl42LjE4LjAiCisgICAgYmFiZWwtcnVudGlt
ZSAiXjYuOS4wIgorICAgIGJhYmVsLXR5cGVzICJeNi4xOC4wIgorICAgIGxvZGFzaCAiXjQuMi4w
IgorCitiYWJlbC1oZWxwZXItZXhwbG9kZS1hc3NpZ25hYmxlLWV4cHJlc3Npb25AXjYuMTguMDoK
KyAgdmVyc2lvbiAiNi4xOC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9iYWJlbC1oZWxwZXItZXhwbG9kZS1hc3NpZ25hYmxlLWV4cHJlc3Npb24vLS9iYWJlbC1o
ZWxwZXItZXhwbG9kZS1hc3NpZ25hYmxlLWV4cHJlc3Npb24tNi4xOC4wLnRneiMxNGI4ZThjMmQw
M2FkNzM1ZDRiMjBmMTg0MGIyNGNkMWY2NTIzOWZlIgorICBkZXBlbmRlbmNpZXM6CisgICAgYmFi
ZWwtcnVudGltZSAiXjYuMC4wIgorICAgIGJhYmVsLXRyYXZlcnNlICJeNi4xOC4wIgorICAgIGJh
YmVsLXR5cGVzICJeNi4xOC4wIgorCitiYWJlbC1oZWxwZXItZXhwbG9kZS1jbGFzc0BeNi44LjA6
CisgIHZlcnNpb24gIjYuMTguMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vYmFiZWwtaGVscGVyLWV4cGxvZGUtY2xhc3MvLS9iYWJlbC1oZWxwZXItZXhwbG9kZS1j
bGFzcy02LjE4LjAudGd6I2M0NGY3NmY0ZmEyM2I5YzVkNjA3Y2JhYzVkNDExNWU3YTc2ZjYyY2Ii
CisgIGRlcGVuZGVuY2llczoKKyAgICBiYWJlbC1oZWxwZXItYmluZGlmeS1kZWNvcmF0b3JzICJe
Ni4xOC4wIgorICAgIGJhYmVsLXJ1bnRpbWUgIl42LjAuMCIKKyAgICBiYWJlbC10cmF2ZXJzZSAi
XjYuMTguMCIKKyAgICBiYWJlbC10eXBlcyAiXjYuMTguMCIKKworYmFiZWwtaGVscGVyLWZ1bmN0
aW9uLW5hbWVAXjYuMTguMCwgYmFiZWwtaGVscGVyLWZ1bmN0aW9uLW5hbWVAXjYuOC4wOgorICB2
ZXJzaW9uICI2LjE4LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L2JhYmVsLWhlbHBlci1mdW5jdGlvbi1uYW1lLy0vYmFiZWwtaGVscGVyLWZ1bmN0aW9uLW5hbWUt
Ni4xOC4wLnRneiM2OGVjNzFhZWJhMWYzZTI4YjJhNmYwNzMwMTkwYjc1NGE5YmYzMGU2IgorICBk
ZXBlbmRlbmNpZXM6CisgICAgYmFiZWwtaGVscGVyLWdldC1mdW5jdGlvbi1hcml0eSAiXjYuMTgu
MCIKKyAgICBiYWJlbC1ydW50aW1lICJeNi4wLjAiCisgICAgYmFiZWwtdGVtcGxhdGUgIl42Ljgu
MCIKKyAgICBiYWJlbC10cmF2ZXJzZSAiXjYuMTguMCIKKyAgICBiYWJlbC10eXBlcyAiXjYuMTgu
MCIKKworYmFiZWwtaGVscGVyLWdldC1mdW5jdGlvbi1hcml0eUBeNi4xOC4wOgorICB2ZXJzaW9u
ICI2LjE4LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVs
LWhlbHBlci1nZXQtZnVuY3Rpb24tYXJpdHkvLS9iYWJlbC1oZWxwZXItZ2V0LWZ1bmN0aW9uLWFy
aXR5LTYuMTguMC50Z3ojYTViMTk2OTVmZDNmOWNkZmMzMjgzOThiNDdkYWZjZDcwOTRmOWYyNCIK
KyAgZGVwZW5kZW5jaWVzOgorICAgIGJhYmVsLXJ1bnRpbWUgIl42LjAuMCIKKyAgICBiYWJlbC10
eXBlcyAiXjYuMTguMCIKKworYmFiZWwtaGVscGVyLWhvaXN0LXZhcmlhYmxlc0BeNi4xOC4wOgor
ICB2ZXJzaW9uICI2LjE4LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL2JhYmVsLWhlbHBlci1ob2lzdC12YXJpYWJsZXMvLS9iYWJlbC1oZWxwZXItaG9pc3QtdmFy
aWFibGVzLTYuMTguMC50Z3ojYTgzNWI1YWI4YjQ2ZDZkZTliYWJlZmFlNGQ5OGVhNDFlODY2Yjgy
YSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGJhYmVsLXJ1bnRpbWUgIl42LjAuMCIKKyAgICBiYWJl
bC10eXBlcyAiXjYuMTguMCIKKworYmFiZWwtaGVscGVyLW9wdGltaXNlLWNhbGwtZXhwcmVzc2lv
bkBeNi4xOC4wOgorICB2ZXJzaW9uICI2LjE4LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL2JhYmVsLWhlbHBlci1vcHRpbWlzZS1jYWxsLWV4cHJlc3Npb24vLS9i
YWJlbC1oZWxwZXItb3B0aW1pc2UtY2FsbC1leHByZXNzaW9uLTYuMTguMC50Z3ojOTI2MWQwMjk5
ZWUxYTRmMDhhNmRkMjhiN2I3Yzc3NzM0OGZkOGYwZiIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGJh
YmVsLXJ1bnRpbWUgIl42LjAuMCIKKyAgICBiYWJlbC10eXBlcyAiXjYuMTguMCIKKworYmFiZWwt
aGVscGVyLXJlZ2V4QF42LjguMDoKKyAgdmVyc2lvbiAiNi4xOC4wIgorICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1oZWxwZXItcmVnZXgvLS9iYWJlbC1oZWxw
ZXItcmVnZXgtNi4xOC4wLnRneiNhZTBlYmZkNzdkZTg2Y2IyZjFhZjI1OGUyY2MyMGI1ZmU4OTNl
Y2M2IgorICBkZXBlbmRlbmNpZXM6CisgICAgYmFiZWwtcnVudGltZSAiXjYuOS4wIgorICAgIGJh
YmVsLXR5cGVzICJeNi4xOC4wIgorICAgIGxvZGFzaCAiXjQuMi4wIgorCitiYWJlbC1oZWxwZXIt
cmVtYXAtYXN5bmMtdG8tZ2VuZXJhdG9yQF42LjE2LjAsIGJhYmVsLWhlbHBlci1yZW1hcC1hc3lu
Yy10by1nZW5lcmF0b3JAXjYuMTYuMjoKKyAgdmVyc2lvbiAiNi4xOC4wIgorICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1oZWxwZXItcmVtYXAtYXN5bmMtdG8t
Z2VuZXJhdG9yLy0vYmFiZWwtaGVscGVyLXJlbWFwLWFzeW5jLXRvLWdlbmVyYXRvci02LjE4LjAu
dGd6IzMzNmNkZjNjYWI2NTBiYjE5MWIwMmZjMTZhMzcwOGU3YmU3ZjljZTUiCisgIGRlcGVuZGVu
Y2llczoKKyAgICBiYWJlbC1oZWxwZXItZnVuY3Rpb24tbmFtZSAiXjYuMTguMCIKKyAgICBiYWJl
bC1ydW50aW1lICJeNi4wLjAiCisgICAgYmFiZWwtdGVtcGxhdGUgIl42LjE2LjAiCisgICAgYmFi
ZWwtdHJhdmVyc2UgIl42LjE4LjAiCisgICAgYmFiZWwtdHlwZXMgIl42LjE4LjAiCisKK2JhYmVs
LWhlbHBlci1yZXBsYWNlLXN1cGVyc0BeNi4xOC4wLCBiYWJlbC1oZWxwZXItcmVwbGFjZS1zdXBl
cnNAXjYuOC4wOgorICB2ZXJzaW9uICI2LjE4LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL2JhYmVsLWhlbHBlci1yZXBsYWNlLXN1cGVycy8tL2JhYmVsLWhlbHBl
ci1yZXBsYWNlLXN1cGVycy02LjE4LjAudGd6IzI4ZWM2OTg3N2JlNDE0NGRiZDY0ZjRjYzNhMzM3
ZTg5ZjI5YTkyNGUiCisgIGRlcGVuZGVuY2llczoKKyAgICBiYWJlbC1oZWxwZXItb3B0aW1pc2Ut
Y2FsbC1leHByZXNzaW9uICJeNi4xOC4wIgorICAgIGJhYmVsLW1lc3NhZ2VzICJeNi44LjAiCisg
ICAgYmFiZWwtcnVudGltZSAiXjYuMC4wIgorICAgIGJhYmVsLXRlbXBsYXRlICJeNi4xNi4wIgor
ICAgIGJhYmVsLXRyYXZlcnNlICJeNi4xOC4wIgorICAgIGJhYmVsLXR5cGVzICJeNi4xOC4wIgor
CitiYWJlbC1oZWxwZXJzQF42LjE2LjA6CisgIHZlcnNpb24gIjYuMTYuMCIKKyAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtaGVscGVycy8tL2JhYmVsLWhlbHBl
cnMtNi4xNi4wLnRneiMxMDk1ZWMxMGQ5OTI3OTQ2MDU1M2U2N2ViM2VlZTk5NzNkMzg2N2UzIgor
ICBkZXBlbmRlbmNpZXM6CisgICAgYmFiZWwtcnVudGltZSAiXjYuMC4wIgorICAgIGJhYmVsLXRl
bXBsYXRlICJeNi4xNi4wIgorCitiYWJlbC1sb2FkZXJAXjYuMi4xOgorICB2ZXJzaW9uICI2LjIu
OSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtbG9hZGVy
Ly0vYmFiZWwtbG9hZGVyLTYuMi45LnRneiMyYmNlNmExYzI5YjQ3YWZhOTBiOTM3YmExZmIxZjg3
MDg0ZDYxYzYxIgorICBkZXBlbmRlbmNpZXM6CisgICAgZmluZC1jYWNoZS1kaXIgIl4wLjEuMSIK
KyAgICBsb2FkZXItdXRpbHMgIl4wLjIuMTEiCisgICAgbWtkaXJwICJeMC41LjEiCisgICAgb2Jq
ZWN0LWFzc2lnbiAiXjQuMC4xIgorCitiYWJlbC1tZXNzYWdlc0BeNi44LjA6CisgIHZlcnNpb24g
IjYuOC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1t
ZXNzYWdlcy8tL2JhYmVsLW1lc3NhZ2VzLTYuOC4wLnRneiNiZjUwNDczNmNhOTY3ZTZkNjVlZjBh
ZGI1YTJhNWY5NDdjOGUwZWI5IgorICBkZXBlbmRlbmNpZXM6CisgICAgYmFiZWwtcnVudGltZSAi
XjYuMC4wIgorCitiYWJlbC1wbHVnaW4tY2hlY2stZXMyMDE1LWNvbnN0YW50c0BeNi4zLjEzOgor
ICB2ZXJzaW9uICI2LjguMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vYmFiZWwtcGx1Z2luLWNoZWNrLWVzMjAxNS1jb25zdGFudHMvLS9iYWJlbC1wbHVnaW4tY2hl
Y2stZXMyMDE1LWNvbnN0YW50cy02LjguMC50Z3ojZGJmMDI0YzMyZWQzN2JmZGE4ZGVlMWU3NmRh
MDIzODZhOGQyNmZlNyIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGJhYmVsLXJ1bnRpbWUgIl42LjAu
MCIKKworYmFiZWwtcGx1Z2luLWluZmVybm9AYmV0YTEzOgorICB2ZXJzaW9uICIxLjIuMC1iZXRh
MTMiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdp
bi1pbmZlcm5vLy0vYmFiZWwtcGx1Z2luLWluZmVybm8tMS4yLjAtYmV0YTEzLnRneiMzYTViZWI4
NTZlYTc1ZTdiMjg5MWU2OTJhZWRhODYxZGNiZmIxOTBkIgorICBkZXBlbmRlbmNpZXM6CisgICAg
YmFiZWwtcGx1Z2luLXN5bnRheC1qc3ggIl42LjE4LjAiCisKK2JhYmVsLXBsdWdpbi1zeW50YXgt
YXN5bmMtZnVuY3Rpb25zQF42LjguMDoKKyAgdmVyc2lvbiAiNi4xMy4wIgorICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1wbHVnaW4tc3ludGF4LWFzeW5jLWZ1
bmN0aW9ucy8tL2JhYmVsLXBsdWdpbi1zeW50YXgtYXN5bmMtZnVuY3Rpb25zLTYuMTMuMC50Z3oj
Y2FkOWNhZDExOTFiNWFkNjM0YmYzMGFlMDg3MjM5MWUwNjQ3YmU5NSIKKworYmFiZWwtcGx1Z2lu
LXN5bnRheC1hc3luYy1nZW5lcmF0b3JzQF42LjUuMDoKKyAgdmVyc2lvbiAiNi4xMy4wIgorICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1wbHVnaW4tc3ludGF4
LWFzeW5jLWdlbmVyYXRvcnMvLS9iYWJlbC1wbHVnaW4tc3ludGF4LWFzeW5jLWdlbmVyYXRvcnMt
Ni4xMy4wLnRneiM2YmM5NjNlYmIxNmVjY2JhZTZiOTJiNTk2ZWI3ZjM1YzM0MmE4YjlhIgorCiti
YWJlbC1wbHVnaW4tc3ludGF4LWNsYXNzLWNvbnN0cnVjdG9yLWNhbGxAXjYuMTguMDoKKyAgdmVy
c2lvbiAiNi4xOC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9i
YWJlbC1wbHVnaW4tc3ludGF4LWNsYXNzLWNvbnN0cnVjdG9yLWNhbGwvLS9iYWJlbC1wbHVnaW4t
c3ludGF4LWNsYXNzLWNvbnN0cnVjdG9yLWNhbGwtNi4xOC4wLnRneiM5Y2I5ZDM5ZmU0M2M4NjAw
YmVjODE0NjQ1NmRkY2JkNGUxYTc2NDE2IgorCitiYWJlbC1wbHVnaW4tc3ludGF4LWNsYXNzLXBy
b3BlcnRpZXNAXjYuOC4wOgorICB2ZXJzaW9uICI2LjEzLjAiCisgIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdpbi1zeW50YXgtY2xhc3MtcHJvcGVydGll
cy8tL2JhYmVsLXBsdWdpbi1zeW50YXgtY2xhc3MtcHJvcGVydGllcy02LjEzLjAudGd6I2Q3ZWIy
M2I3OWEzMTdmODU0Mzk2MmM1MDViODI3YzdkNmNhYzI3ZGUiCisKK2JhYmVsLXBsdWdpbi1zeW50
YXgtZGVjb3JhdG9yc0BeNi4xMy4wOgorICB2ZXJzaW9uICI2LjEzLjAiCisgIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdpbi1zeW50YXgtZGVjb3JhdG9y
cy8tL2JhYmVsLXBsdWdpbi1zeW50YXgtZGVjb3JhdG9ycy02LjEzLjAudGd6IzMxMjU2M2I0ZGJk
ZTNjYzgwNmNlZTNlNDE2Y2NlZWFkZGQxMWFjMGIiCisKK2JhYmVsLXBsdWdpbi1zeW50YXgtZG8t
ZXhwcmVzc2lvbnNAXjYuOC4wOgorICB2ZXJzaW9uICI2LjEzLjAiCisgIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdpbi1zeW50YXgtZG8tZXhwcmVzc2lv
bnMvLS9iYWJlbC1wbHVnaW4tc3ludGF4LWRvLWV4cHJlc3Npb25zLTYuMTMuMC50Z3ojNTc0Nzc1
NjEzOWFhMjZkMzkwZDA5NDEwYjAzNzQ0YmEwN2U0Nzk2ZCIKKworYmFiZWwtcGx1Z2luLXN5bnRh
eC1keW5hbWljLWltcG9ydEBeNi4xOC4wOgorICB2ZXJzaW9uICI2LjE4LjAiCisgIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdpbi1zeW50YXgtZHluYW1p
Yy1pbXBvcnQvLS9iYWJlbC1wbHVnaW4tc3ludGF4LWR5bmFtaWMtaW1wb3J0LTYuMTguMC50Z3oj
OGQ2YTI2MjI5YzgzNzQ1YTk5ODJhNDQxMDUxNTcyY2FhMTc5YjFkYSIKKworYmFiZWwtcGx1Z2lu
LXN5bnRheC1leHBvbmVudGlhdGlvbi1vcGVyYXRvckBeNi44LjA6CisgIHZlcnNpb24gIjYuMTMu
MCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtcGx1Z2lu
LXN5bnRheC1leHBvbmVudGlhdGlvbi1vcGVyYXRvci8tL2JhYmVsLXBsdWdpbi1zeW50YXgtZXhw
b25lbnRpYXRpb24tb3BlcmF0b3ItNi4xMy4wLnRneiM5ZWU3ZTgzMzcyOTBkYTk1Mjg4MjAxYTZh
NTdmNDE3MDMxNzgzMGRlIgorCitiYWJlbC1wbHVnaW4tc3ludGF4LWV4cG9ydC1leHRlbnNpb25z
QF42LjguMDoKKyAgdmVyc2lvbiAiNi4xMy4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9iYWJlbC1wbHVnaW4tc3ludGF4LWV4cG9ydC1leHRlbnNpb25zLy0vYmFi
ZWwtcGx1Z2luLXN5bnRheC1leHBvcnQtZXh0ZW5zaW9ucy02LjEzLjAudGd6IzcwYTE0ODRmMGY5
MDg5YTRlODRhZDQ0YmFjMzUzYzk1YjliMTI3MjEiCisKK2JhYmVsLXBsdWdpbi1zeW50YXgtZnVu
Y3Rpb24tYmluZEBeNi44LjA6CisgIHZlcnNpb24gIjYuMTMuMCIKKyAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtcGx1Z2luLXN5bnRheC1mdW5jdGlvbi1iaW5k
Ly0vYmFiZWwtcGx1Z2luLXN5bnRheC1mdW5jdGlvbi1iaW5kLTYuMTMuMC50Z3ojNDhjNDk1ZjE3
N2JkZjMxYTk4MWU3MzJmNTVhZGMwYmRkMjYwMWY0NiIKKworYmFiZWwtcGx1Z2luLXN5bnRheC1q
c3hAXjYuMTguMDoKKyAgdmVyc2lvbiAiNi4xOC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9iYWJlbC1wbHVnaW4tc3ludGF4LWpzeC8tL2JhYmVsLXBsdWdpbi1z
eW50YXgtanN4LTYuMTguMC50Z3ojMGFmMzJhOWE2ZTEzY2E3YTNmZDUwNjllNjJkN2IwZjU4ZDBk
ODk0NiIKKworYmFiZWwtcGx1Z2luLXN5bnRheC1vYmplY3QtcmVzdC1zcHJlYWRAXjYuOC4wOgor
ICB2ZXJzaW9uICI2LjEzLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL2JhYmVsLXBsdWdpbi1zeW50YXgtb2JqZWN0LXJlc3Qtc3ByZWFkLy0vYmFiZWwtcGx1Z2lu
LXN5bnRheC1vYmplY3QtcmVzdC1zcHJlYWQtNi4xMy4wLnRneiNmZDY1MzZmMmJjZTEzODM2ZmZh
M2E1NDU4YzQ5MDNhNTk3YmIzYmY1IgorCitiYWJlbC1wbHVnaW4tc3ludGF4LXRyYWlsaW5nLWZ1
bmN0aW9uLWNvbW1hc0BeNi4zLjEzOgorICB2ZXJzaW9uICI2LjEzLjAiCisgIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdpbi1zeW50YXgtdHJhaWxpbmct
ZnVuY3Rpb24tY29tbWFzLy0vYmFiZWwtcGx1Z2luLXN5bnRheC10cmFpbGluZy1mdW5jdGlvbi1j
b21tYXMtNi4xMy4wLnRneiMyYjg0YjdkNTNkZDc0NGY5NGZmMWZhZDc2Njk0MDYyNzRiMjNmNTQx
IgorCitiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWFzeW5jLWdlbmVyYXRvci1mdW5jdGlvbnNAXjYu
MTcuMDoKKyAgdmVyc2lvbiAiNi4xNy4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWFzeW5jLWdlbmVyYXRvci1mdW5jdGlv
bnMvLS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWFzeW5jLWdlbmVyYXRvci1mdW5jdGlvbnMtNi4x
Ny4wLnRneiNkMGI1YTJiMmYwOTQwZjJiMjQ1ZmEyMGEwMDUxOWVkN2JjNmNhZTU0IgorICBkZXBl
bmRlbmNpZXM6CisgICAgYmFiZWwtaGVscGVyLXJlbWFwLWFzeW5jLXRvLWdlbmVyYXRvciAiXjYu
MTYuMiIKKyAgICBiYWJlbC1wbHVnaW4tc3ludGF4LWFzeW5jLWdlbmVyYXRvcnMgIl42LjUuMCIK
KyAgICBiYWJlbC1ydW50aW1lICJeNi4wLjAiCisKK2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tYXN5
bmMtdG8tZ2VuZXJhdG9yQF42LjE2LjA6CisgIHZlcnNpb24gIjYuMTYuMCIKKyAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1hc3lu
Yy10by1nZW5lcmF0b3IvLS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWFzeW5jLXRvLWdlbmVyYXRv
ci02LjE2LjAudGd6IzE5ZWMzNmNiMTQ4NmI1OWY5ZjQ2OGFkZmE0MmNlMTM5MDhjYTI5OTkiCisg
IGRlcGVuZGVuY2llczoKKyAgICBiYWJlbC1oZWxwZXItcmVtYXAtYXN5bmMtdG8tZ2VuZXJhdG9y
ICJeNi4xNi4wIgorICAgIGJhYmVsLXBsdWdpbi1zeW50YXgtYXN5bmMtZnVuY3Rpb25zICJeNi44
LjAiCisgICAgYmFiZWwtcnVudGltZSAiXjYuMC4wIgorCitiYWJlbC1wbHVnaW4tdHJhbnNmb3Jt
LWNsYXNzLWNvbnN0cnVjdG9yLWNhbGxAXjYuMy4xMzoKKyAgdmVyc2lvbiAiNi4xOC4wIgorICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1wbHVnaW4tdHJhbnNm
b3JtLWNsYXNzLWNvbnN0cnVjdG9yLWNhbGwvLS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWNsYXNz
LWNvbnN0cnVjdG9yLWNhbGwtNi4xOC4wLnRneiM4MDg1NWUzOGExYWI0N2I4YzZjNjQ3ZjhlYTFi
Y2QyYzAwY2EzYWFlIgorICBkZXBlbmRlbmNpZXM6CisgICAgYmFiZWwtcGx1Z2luLXN5bnRheC1j
bGFzcy1jb25zdHJ1Y3Rvci1jYWxsICJeNi4xOC4wIgorICAgIGJhYmVsLXJ1bnRpbWUgIl42LjAu
MCIKKyAgICBiYWJlbC10ZW1wbGF0ZSAiXjYuOC4wIgorCitiYWJlbC1wbHVnaW4tdHJhbnNmb3Jt
LWNsYXNzLXByb3BlcnRpZXNAXjYuMTguMDoKKyAgdmVyc2lvbiAiNi4xOS4wIgorICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWNs
YXNzLXByb3BlcnRpZXMvLS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWNsYXNzLXByb3BlcnRpZXMt
Ni4xOS4wLnRneiMxMjc0YjM0OWFiYWFkYzgzNTE2NGUyMDA0ZjRhMjQ0NGEyNzg4ZDVmIgorICBk
ZXBlbmRlbmNpZXM6CisgICAgYmFiZWwtaGVscGVyLWZ1bmN0aW9uLW5hbWUgIl42LjE4LjAiCisg
ICAgYmFiZWwtcGx1Z2luLXN5bnRheC1jbGFzcy1wcm9wZXJ0aWVzICJeNi44LjAiCisgICAgYmFi
ZWwtcnVudGltZSAiXjYuOS4xIgorICAgIGJhYmVsLXRlbXBsYXRlICJeNi4xNS4wIgorCitiYWJl
bC1wbHVnaW4tdHJhbnNmb3JtLWRlY29yYXRvcnNAXjYuMTMuMDoKKyAgdmVyc2lvbiAiNi4xMy4w
IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1wbHVnaW4t
dHJhbnNmb3JtLWRlY29yYXRvcnMvLS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWRlY29yYXRvcnMt
Ni4xMy4wLnRneiM4MmQ2NWMxNDcwYWU4M2UyZDEzZWViZWNiMGExYzI0NzZkNjJkYTlkIgorICBk
ZXBlbmRlbmNpZXM6CisgICAgYmFiZWwtaGVscGVyLWRlZmluZS1tYXAgIl42LjguMCIKKyAgICBi
YWJlbC1oZWxwZXItZXhwbG9kZS1jbGFzcyAiXjYuOC4wIgorICAgIGJhYmVsLXBsdWdpbi1zeW50
YXgtZGVjb3JhdG9ycyAiXjYuMTMuMCIKKyAgICBiYWJlbC1ydW50aW1lICJeNi4wLjAiCisgICAg
YmFiZWwtdGVtcGxhdGUgIl42LjguMCIKKyAgICBiYWJlbC10eXBlcyAiXjYuMTMuMCIKKworYmFi
ZWwtcGx1Z2luLXRyYW5zZm9ybS1kby1leHByZXNzaW9uc0BeNi4zLjEzOgorICB2ZXJzaW9uICI2
LjguMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtcGx1
Z2luLXRyYW5zZm9ybS1kby1leHByZXNzaW9ucy8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZG8t
ZXhwcmVzc2lvbnMtNi44LjAudGd6I2ZkYTY5MmFmMzM5ODM1Y2MyNTViYjc1NDRlZmI4ZjdjMTMw
NmMyNzMiCisgIGRlcGVuZGVuY2llczoKKyAgICBiYWJlbC1wbHVnaW4tc3ludGF4LWRvLWV4cHJl
c3Npb25zICJeNi44LjAiCisgICAgYmFiZWwtcnVudGltZSAiXjYuMC4wIgorCitiYWJlbC1wbHVn
aW4tdHJhbnNmb3JtLWVzMjAxNS1hcnJvdy1mdW5jdGlvbnNAXjYuMy4xMzoKKyAgdmVyc2lvbiAi
Ni44LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBs
dWdpbi10cmFuc2Zvcm0tZXMyMDE1LWFycm93LWZ1bmN0aW9ucy8tL2JhYmVsLXBsdWdpbi10cmFu
c2Zvcm0tZXMyMDE1LWFycm93LWZ1bmN0aW9ucy02LjguMC50Z3ojNWI2M2FmYzMxODFiZGM5YThj
NGQ0ODFiNWE0ZjNmN2Q3ZmVmM2Q5ZCIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGJhYmVsLXJ1bnRp
bWUgIl42LjAuMCIKKworYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtYmxvY2stc2NvcGVk
LWZ1bmN0aW9uc0BeNi4zLjEzOgorICB2ZXJzaW9uICI2LjguMCIKKyAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtYmxv
Y2stc2NvcGVkLWZ1bmN0aW9ucy8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LWJsb2Nr
LXNjb3BlZC1mdW5jdGlvbnMtNi44LjAudGd6I2VkOTVkNjI5YzRiNWE3MWFlMjk2ODJiOTk4Zjcw
ZDk4MzNlYjM2NmQiCisgIGRlcGVuZGVuY2llczoKKyAgICBiYWJlbC1ydW50aW1lICJeNi4wLjAi
CisKK2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LWJsb2NrLXNjb3BpbmdAXjYuMTguMDoK
KyAgdmVyc2lvbiAiNi4xOC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1ibG9jay1zY29waW5nLy0vYmFiZWwt
cGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtYmxvY2stc2NvcGluZy02LjE4LjAudGd6IzNiZmRjZmVj
MzE4ZDQ2ZGYyMjUyNWNkZWE4OGYxOTc4ODEzNjUzYWYiCisgIGRlcGVuZGVuY2llczoKKyAgICBi
YWJlbC1ydW50aW1lICJeNi45LjAiCisgICAgYmFiZWwtdGVtcGxhdGUgIl42LjE1LjAiCisgICAg
YmFiZWwtdHJhdmVyc2UgIl42LjE4LjAiCisgICAgYmFiZWwtdHlwZXMgIl42LjE4LjAiCisgICAg
bG9kYXNoICJeNC4yLjAiCisKK2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LWNsYXNzZXNA
XjYuMTguMDoKKyAgdmVyc2lvbiAiNi4xOC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1jbGFzc2VzLy0vYmFi
ZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtY2xhc3Nlcy02LjE4LjAudGd6I2ZmZTdhMTczMjFi
ZjgzZTQ5NGRjZGEwYWUzZmM3MmRmNDhmZmQxZDkiCisgIGRlcGVuZGVuY2llczoKKyAgICBiYWJl
bC1oZWxwZXItZGVmaW5lLW1hcCAiXjYuMTguMCIKKyAgICBiYWJlbC1oZWxwZXItZnVuY3Rpb24t
bmFtZSAiXjYuMTguMCIKKyAgICBiYWJlbC1oZWxwZXItb3B0aW1pc2UtY2FsbC1leHByZXNzaW9u
ICJeNi4xOC4wIgorICAgIGJhYmVsLWhlbHBlci1yZXBsYWNlLXN1cGVycyAiXjYuMTguMCIKKyAg
ICBiYWJlbC1tZXNzYWdlcyAiXjYuOC4wIgorICAgIGJhYmVsLXJ1bnRpbWUgIl42LjkuMCIKKyAg
ICBiYWJlbC10ZW1wbGF0ZSAiXjYuMTQuMCIKKyAgICBiYWJlbC10cmF2ZXJzZSAiXjYuMTguMCIK
KyAgICBiYWJlbC10eXBlcyAiXjYuMTguMCIKKworYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIw
MTUtY29tcHV0ZWQtcHJvcGVydGllc0BeNi4zLjEzOgorICB2ZXJzaW9uICI2LjguMCIKKyAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtcGx1Z2luLXRyYW5zZm9y
bS1lczIwMTUtY29tcHV0ZWQtcHJvcGVydGllcy8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMy
MDE1LWNvbXB1dGVkLXByb3BlcnRpZXMtNi44LjAudGd6I2Y1MTAxMGZkNjFiM2JkN2I2YjYwYTVm
ZGZkMzA3YmI3YTUyNzk4NzAiCisgIGRlcGVuZGVuY2llczoKKyAgICBiYWJlbC1oZWxwZXItZGVm
aW5lLW1hcCAiXjYuOC4wIgorICAgIGJhYmVsLXJ1bnRpbWUgIl42LjAuMCIKKyAgICBiYWJlbC10
ZW1wbGF0ZSAiXjYuOC4wIgorCitiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1kZXN0cnVj
dHVyaW5nQF42LjE4LjA6CisgIHZlcnNpb24gIjYuMTkuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtZGVzdHJ1
Y3R1cmluZy8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LWRlc3RydWN0dXJpbmctNi4x
OS4wLnRneiNmZjFkOTExYzRiM2Y0Y2FiNjIxYmQ2NjcwMmE4NjlhY2QxOTAwNTMzIgorICBkZXBl
bmRlbmNpZXM6CisgICAgYmFiZWwtcnVudGltZSAiXjYuOS4wIgorCitiYWJlbC1wbHVnaW4tdHJh
bnNmb3JtLWVzMjAxNS1kdXBsaWNhdGUta2V5c0BeNi42LjA6CisgIHZlcnNpb24gIjYuOC4wIgor
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1wbHVnaW4tdHJh
bnNmb3JtLWVzMjAxNS1kdXBsaWNhdGUta2V5cy8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMy
MDE1LWR1cGxpY2F0ZS1rZXlzLTYuOC4wLnRneiNmZDhmN2Y3MTcxZmMxMDhjYzFjNzBjMzE2NGI5
ZjE1YTgxYzI1ZjdkIgorICBkZXBlbmRlbmNpZXM6CisgICAgYmFiZWwtcnVudGltZSAiXjYuMC4w
IgorICAgIGJhYmVsLXR5cGVzICJeNi44LjAiCisKK2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMy
MDE1LWZvci1vZkBeNi4xOC4wOgorICB2ZXJzaW9uICI2LjE4LjAiCisgIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LWZv
ci1vZi8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LWZvci1vZi02LjE4LjAudGd6IzRj
NTE3NTA0ZGI2NGJmOGNmYzExOWE2YjhmMTc3MjExZjIwMjhhNzAiCisgIGRlcGVuZGVuY2llczoK
KyAgICBiYWJlbC1ydW50aW1lICJeNi4wLjAiCisKK2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMy
MDE1LWZ1bmN0aW9uLW5hbWVAXjYuOS4wOgorICB2ZXJzaW9uICI2LjkuMCIKKyAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIw
MTUtZnVuY3Rpb24tbmFtZS8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LWZ1bmN0aW9u
LW5hbWUtNi45LjAudGd6IzhjMTM1YjE3ZGJkMDY0ZTViYmE1NmVjNTExYmFhZWUyZmNhODI3MTki
CisgIGRlcGVuZGVuY2llczoKKyAgICBiYWJlbC1oZWxwZXItZnVuY3Rpb24tbmFtZSAiXjYuOC4w
IgorICAgIGJhYmVsLXJ1bnRpbWUgIl42LjkuMCIKKyAgICBiYWJlbC10eXBlcyAiXjYuOS4wIgor
CitiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1saXRlcmFsc0BeNi4zLjEzOgorICB2ZXJz
aW9uICI2LjguMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFi
ZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtbGl0ZXJhbHMvLS9iYWJlbC1wbHVnaW4tdHJhbnNm
b3JtLWVzMjAxNS1saXRlcmFscy02LjguMC50Z3ojNTBhYTJlNWM3OTU4ZmMyYWIyNWQ3NGVjMTE3
ZTBjYzk4ZjA0NjQ2OCIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGJhYmVsLXJ1bnRpbWUgIl42LjAu
MCIKKworYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtbW9kdWxlcy1hbWRAXjYuMTguMDoK
KyAgdmVyc2lvbiAiNi4xOC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1tb2R1bGVzLWFtZC8tL2JhYmVsLXBs
dWdpbi10cmFuc2Zvcm0tZXMyMDE1LW1vZHVsZXMtYW1kLTYuMTguMC50Z3ojNDlhMDU0Y2JiNzYy
YmRmOWFlMmQ4YTgwNzA3NmNmYWRlNjE0MWU0MCIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGJhYmVs
LXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LW1vZHVsZXMtY29tbW9uanMgIl42LjE4LjAiCisgICAg
YmFiZWwtcnVudGltZSAiXjYuMC4wIgorICAgIGJhYmVsLXRlbXBsYXRlICJeNi44LjAiCisKK2Jh
YmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LW1vZHVsZXMtY29tbW9uanNAXjYuMTguMDoKKyAg
dmVyc2lvbiAiNi4xOC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1tb2R1bGVzLWNvbW1vbmpzLy0vYmFiZWwt
cGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtbW9kdWxlcy1jb21tb25qcy02LjE4LjAudGd6I2MxNWFl
NWJiMTFiMzJhMGFiZGNjOThhNTgzN2JhYTRlZThkNjdiY2MiCisgIGRlcGVuZGVuY2llczoKKyAg
ICBiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLXN0cmljdC1tb2RlICJeNi4xOC4wIgorICAgIGJhYmVs
LXJ1bnRpbWUgIl42LjAuMCIKKyAgICBiYWJlbC10ZW1wbGF0ZSAiXjYuMTYuMCIKKyAgICBiYWJl
bC10eXBlcyAiXjYuMTguMCIKKworYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtbW9kdWxl
cy1zeXN0ZW1qc0BeNi4xOC4wOgorICB2ZXJzaW9uICI2LjE5LjAiCisgIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LW1v
ZHVsZXMtc3lzdGVtanMvLS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1tb2R1bGVzLXN5
c3RlbWpzLTYuMTkuMC50Z3ojNTA0MzgxMzZlYmE3NDUyN2VmYTAwYTViMGZlZmFmMWRjNDA3MWRh
NiIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGJhYmVsLWhlbHBlci1ob2lzdC12YXJpYWJsZXMgIl42
LjE4LjAiCisgICAgYmFiZWwtcnVudGltZSAiXjYuMTEuNiIKKyAgICBiYWJlbC10ZW1wbGF0ZSAi
XjYuMTQuMCIKKworYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtbW9kdWxlcy11bWRAXjYu
MTguMDoKKyAgdmVyc2lvbiAiNi4xOC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1tb2R1bGVzLXVtZC8tL2Jh
YmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LW1vZHVsZXMtdW1kLTYuMTguMC50Z3ojMjMzNTE3
NzBlY2U1YzFmOGU4M2VkNjdjYjFkNzk5Mjg4NDQ5MWU1MCIKKyAgZGVwZW5kZW5jaWVzOgorICAg
IGJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LW1vZHVsZXMtYW1kICJeNi4xOC4wIgorICAg
IGJhYmVsLXJ1bnRpbWUgIl42LjAuMCIKKyAgICBiYWJlbC10ZW1wbGF0ZSAiXjYuOC4wIgorCiti
YWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1vYmplY3Qtc3VwZXJAXjYuMy4xMzoKKyAgdmVy
c2lvbiAiNi44LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Jh
YmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LW9iamVjdC1zdXBlci8tL2JhYmVsLXBsdWdpbi10
cmFuc2Zvcm0tZXMyMDE1LW9iamVjdC1zdXBlci02LjguMC50Z3ojMWI4NTg3NDBhNWE0NDAwODg3
YzIzZGNmZjZmNGQ1NmVlYTRhMjRjNSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGJhYmVsLWhlbHBl
ci1yZXBsYWNlLXN1cGVycyAiXjYuOC4wIgorICAgIGJhYmVsLXJ1bnRpbWUgIl42LjAuMCIKKwor
YmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtcGFyYW1ldGVyc0BeNi4xOC4wOgorICB2ZXJz
aW9uICI2LjE4LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Jh
YmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LXBhcmFtZXRlcnMvLS9iYWJlbC1wbHVnaW4tdHJh
bnNmb3JtLWVzMjAxNS1wYXJhbWV0ZXJzLTYuMTguMC50Z3ojOWIyY2ZlMjM4YzU0OWYxNjM1YmEy
N2ZjMWRhYTg1OGJlNzA2MDhiMSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGJhYmVsLWhlbHBlci1j
YWxsLWRlbGVnYXRlICJeNi4xOC4wIgorICAgIGJhYmVsLWhlbHBlci1nZXQtZnVuY3Rpb24tYXJp
dHkgIl42LjE4LjAiCisgICAgYmFiZWwtcnVudGltZSAiXjYuOS4wIgorICAgIGJhYmVsLXRlbXBs
YXRlICJeNi4xNi4wIgorICAgIGJhYmVsLXRyYXZlcnNlICJeNi4xOC4wIgorICAgIGJhYmVsLXR5
cGVzICJeNi4xOC4wIgorCitiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1zaG9ydGhhbmQt
cHJvcGVydGllc0BeNi4xOC4wOgorICB2ZXJzaW9uICI2LjE4LjAiCisgIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LXNo
b3J0aGFuZC1wcm9wZXJ0aWVzLy0vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtc2hvcnRo
YW5kLXByb3BlcnRpZXMtNi4xOC4wLnRneiNlMmVkZTNiN2RmNDdiZjk4MDE1MTkyNjUzNGQxZGQw
Y2JlYTU4ZjQzIgorICBkZXBlbmRlbmNpZXM6CisgICAgYmFiZWwtcnVudGltZSAiXjYuMC4wIgor
ICAgIGJhYmVsLXR5cGVzICJeNi4xOC4wIgorCitiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAx
NS1zcHJlYWRAXjYuMy4xMzoKKyAgdmVyc2lvbiAiNi44LjAiCisgIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LXNwcmVh
ZC8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LXNwcmVhZC02LjguMC50Z3ojMDIxN2Y3
MzdlM2I4MjFmYTVhNjY5ZjE4N2M2ZWQ1OTIwNWYwNWU5YyIKKyAgZGVwZW5kZW5jaWVzOgorICAg
IGJhYmVsLXJ1bnRpbWUgIl42LjAuMCIKKworYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUt
c3RpY2t5LXJlZ2V4QF42LjMuMTM6CisgIHZlcnNpb24gIjYuOC4wIgorICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1z
dGlja3ktcmVnZXgvLS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1zdGlja3ktcmVnZXgt
Ni44LjAudGd6I2U3M2QzMDBhNDQwYTM1ZDVjNjRmNWMyYTM0NGRjMjM2ZTNkZjQ3YmUiCisgIGRl
cGVuZGVuY2llczoKKyAgICBiYWJlbC1oZWxwZXItcmVnZXggIl42LjguMCIKKyAgICBiYWJlbC1y
dW50aW1lICJeNi4wLjAiCisgICAgYmFiZWwtdHlwZXMgIl42LjguMCIKKworYmFiZWwtcGx1Z2lu
LXRyYW5zZm9ybS1lczIwMTUtdGVtcGxhdGUtbGl0ZXJhbHNAXjYuNi4wOgorICB2ZXJzaW9uICI2
LjguMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtcGx1
Z2luLXRyYW5zZm9ybS1lczIwMTUtdGVtcGxhdGUtbGl0ZXJhbHMvLS9iYWJlbC1wbHVnaW4tdHJh
bnNmb3JtLWVzMjAxNS10ZW1wbGF0ZS1saXRlcmFscy02LjguMC50Z3ojODZlYjg3NmQwYTJjNjM1
ZGE0ZWMwNDhiNGY3ZGU5ZGZjODk3ZTY2YiIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGJhYmVsLXJ1
bnRpbWUgIl42LjAuMCIKKworYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtdHlwZW9mLXN5
bWJvbEBeNi4xOC4wOgorICB2ZXJzaW9uICI2LjE4LjAiCisgIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LXR5cGVvZi1z
eW1ib2wvLS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS10eXBlb2Ytc3ltYm9sLTYuMTgu
MC50Z3ojMGIxNGM0ODYyOWM5MGZmNDdhMDY1MDA3N2Y2YWE2OTliZWUzNTc5OCIKKyAgZGVwZW5k
ZW5jaWVzOgorICAgIGJhYmVsLXJ1bnRpbWUgIl42LjAuMCIKKworYmFiZWwtcGx1Z2luLXRyYW5z
Zm9ybS1lczIwMTUtdW5pY29kZS1yZWdleEBeNi4zLjEzOgorICB2ZXJzaW9uICI2LjExLjAiCisg
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdpbi10cmFu
c2Zvcm0tZXMyMDE1LXVuaWNvZGUtcmVnZXgvLS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAx
NS11bmljb2RlLXJlZ2V4LTYuMTEuMC50Z3ojNjI5OGNlYWJhYWQ4OGQ1MGEzZjRmMzkyZDhkZTk5
NzI2MGY2ZWYyYyIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGJhYmVsLWhlbHBlci1yZWdleCAiXjYu
OC4wIgorICAgIGJhYmVsLXJ1bnRpbWUgIl42LjAuMCIKKyAgICByZWdleHB1LWNvcmUgIl4yLjAu
MCIKKworYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1leHBvbmVudGlhdGlvbi1vcGVyYXRvckBeNi4z
LjEzOgorICB2ZXJzaW9uICI2LjguMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1leHBvbmVudGlhdGlvbi1vcGVyYXRvci8t
L2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXhwb25lbnRpYXRpb24tb3BlcmF0b3ItNi44LjAudGd6
I2RiMjU3NDJlOTMzOWVhZGU2NzZjYTlhY2VjNDZmOTU1NTk5YTY4YTQiCisgIGRlcGVuZGVuY2ll
czoKKyAgICBiYWJlbC1oZWxwZXItYnVpbGRlci1iaW5hcnktYXNzaWdubWVudC1vcGVyYXRvci12
aXNpdG9yICJeNi44LjAiCisgICAgYmFiZWwtcGx1Z2luLXN5bnRheC1leHBvbmVudGlhdGlvbi1v
cGVyYXRvciAiXjYuOC4wIgorICAgIGJhYmVsLXJ1bnRpbWUgIl42LjAuMCIKKworYmFiZWwtcGx1
Z2luLXRyYW5zZm9ybS1leHBvcnQtZXh0ZW5zaW9uc0BeNi4zLjEzOgorICB2ZXJzaW9uICI2Ljgu
MCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtcGx1Z2lu
LXRyYW5zZm9ybS1leHBvcnQtZXh0ZW5zaW9ucy8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXhw
b3J0LWV4dGVuc2lvbnMtNi44LjAudGd6I2ZhODBmZjY1NWI2MzY1NDk0MzFiZmQzOGY2YjgxN2Jk
ODJlNDdmNWIiCisgIGRlcGVuZGVuY2llczoKKyAgICBiYWJlbC1wbHVnaW4tc3ludGF4LWV4cG9y
dC1leHRlbnNpb25zICJeNi44LjAiCisgICAgYmFiZWwtcnVudGltZSAiXjYuMC4wIgorCitiYWJl
bC1wbHVnaW4tdHJhbnNmb3JtLWZ1bmN0aW9uLWJpbmRAXjYuMy4xMzoKKyAgdmVyc2lvbiAiNi44
LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdp
bi10cmFuc2Zvcm0tZnVuY3Rpb24tYmluZC8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZnVuY3Rp
b24tYmluZC02LjguMC50Z3ojZTdmMzM0Y2U2OWY1MGQyOGZlODUwYTgyMmVhYWFiOWZhNGY0ZDgy
MSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGJhYmVsLXBsdWdpbi1zeW50YXgtZnVuY3Rpb24tYmlu
ZCAiXjYuOC4wIgorICAgIGJhYmVsLXJ1bnRpbWUgIl42LjAuMCIKKworYmFiZWwtcGx1Z2luLXRy
YW5zZm9ybS1vYmplY3QtcmVzdC1zcHJlYWRAXjYuMTYuMDoKKyAgdmVyc2lvbiAiNi4xOS4wIgor
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1wbHVnaW4tdHJh
bnNmb3JtLW9iamVjdC1yZXN0LXNwcmVhZC8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tb2JqZWN0
LXJlc3Qtc3ByZWFkLTYuMTkuMC50Z3ojZjZhYzQyOGVlM2NiNGM2YWEwMDk0M2VkMTQyMmNlODEz
NjAzYjM0YyIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGJhYmVsLXBsdWdpbi1zeW50YXgtb2JqZWN0
LXJlc3Qtc3ByZWFkICJeNi44LjAiCisgICAgYmFiZWwtcnVudGltZSAiXjYuMC4wIgorCitiYWJl
bC1wbHVnaW4tdHJhbnNmb3JtLXJlZ2VuZXJhdG9yQF42LjE2LjA6CisgIHZlcnNpb24gIjYuMTYu
MSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtcGx1Z2lu
LXRyYW5zZm9ybS1yZWdlbmVyYXRvci8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tcmVnZW5lcmF0
b3ItNi4xNi4xLnRneiNhNzVkZTZiMDQ4YTE0MTU0YWFlMTRiMDEyMjc1NmM1YmVkMzkyZjU5Igor
ICBkZXBlbmRlbmNpZXM6CisgICAgYmFiZWwtcnVudGltZSAiXjYuOS4wIgorICAgIGJhYmVsLXR5
cGVzICJeNi4xNi4wIgorICAgIHByaXZhdGUgIn4wLjEuNSIKKworYmFiZWwtcGx1Z2luLXRyYW5z
Zm9ybS1zdHJpY3QtbW9kZUBeNi4xOC4wOgorICB2ZXJzaW9uICI2LjE4LjAiCisgIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tc3Ry
aWN0LW1vZGUvLS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLXN0cmljdC1tb2RlLTYuMTguMC50Z3oj
ZGY3Y2YyOTkxZmUwNDZmNDQxNjNkY2QxMTBkNWNhNDNiYzY1MmI5ZCIKKyAgZGVwZW5kZW5jaWVz
OgorICAgIGJhYmVsLXJ1bnRpbWUgIl42LjAuMCIKKyAgICBiYWJlbC10eXBlcyAiXjYuMTguMCIK
KworYmFiZWwtcHJlc2V0LWVzMjAxNS1sb29zZUBeNy4wLjA6CisgIHZlcnNpb24gIjcuMC4wIgor
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1wcmVzZXQtZXMy
MDE1LWxvb3NlLy0vYmFiZWwtcHJlc2V0LWVzMjAxNS1sb29zZS03LjAuMC50Z3ojZmQ4MGM4NWQz
YjIwY2JmMzA5YmQwY2UzMGEzNjM4MGM1Nzg0YmYwNiIKKyAgZGVwZW5kZW5jaWVzOgorICAgIG1v
ZGlmeS1iYWJlbC1wcmVzZXQgIl4xLjAuMCIKKworYmFiZWwtcHJlc2V0LWVzMjAxNUBeNi41LjA6
CisgIHZlcnNpb24gIjYuMTguMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vYmFiZWwtcHJlc2V0LWVzMjAxNS8tL2JhYmVsLXByZXNldC1lczIwMTUtNi4xOC4wLnRn
eiNiOGM3MGRmODRlYzk0OGM0M2RjZjJiZjc3MGU5ODhlYjdkYTg4MzEyIgorICBkZXBlbmRlbmNp
ZXM6CisgICAgYmFiZWwtcGx1Z2luLWNoZWNrLWVzMjAxNS1jb25zdGFudHMgIl42LjMuMTMiCisg
ICAgYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtYXJyb3ctZnVuY3Rpb25zICJeNi4zLjEz
IgorICAgIGJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LWJsb2NrLXNjb3BlZC1mdW5jdGlv
bnMgIl42LjMuMTMiCisgICAgYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtYmxvY2stc2Nv
cGluZyAiXjYuMTguMCIKKyAgICBiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1jbGFzc2Vz
ICJeNi4xOC4wIgorICAgIGJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LWNvbXB1dGVkLXBy
b3BlcnRpZXMgIl42LjMuMTMiCisgICAgYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtZGVz
dHJ1Y3R1cmluZyAiXjYuMTguMCIKKyAgICBiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1k
dXBsaWNhdGUta2V5cyAiXjYuNi4wIgorICAgIGJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1
LWZvci1vZiAiXjYuMTguMCIKKyAgICBiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1mdW5j
dGlvbi1uYW1lICJeNi45LjAiCisgICAgYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtbGl0
ZXJhbHMgIl42LjMuMTMiCisgICAgYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtbW9kdWxl
cy1hbWQgIl42LjE4LjAiCisgICAgYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtbW9kdWxl
cy1jb21tb25qcyAiXjYuMTguMCIKKyAgICBiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1t
b2R1bGVzLXN5c3RlbWpzICJeNi4xOC4wIgorICAgIGJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMy
MDE1LW1vZHVsZXMtdW1kICJeNi4xOC4wIgorICAgIGJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMy
MDE1LW9iamVjdC1zdXBlciAiXjYuMy4xMyIKKyAgICBiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVz
MjAxNS1wYXJhbWV0ZXJzICJeNi4xOC4wIgorICAgIGJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMy
MDE1LXNob3J0aGFuZC1wcm9wZXJ0aWVzICJeNi4xOC4wIgorICAgIGJhYmVsLXBsdWdpbi10cmFu
c2Zvcm0tZXMyMDE1LXNwcmVhZCAiXjYuMy4xMyIKKyAgICBiYWJlbC1wbHVnaW4tdHJhbnNmb3Jt
LWVzMjAxNS1zdGlja3ktcmVnZXggIl42LjMuMTMiCisgICAgYmFiZWwtcGx1Z2luLXRyYW5zZm9y
bS1lczIwMTUtdGVtcGxhdGUtbGl0ZXJhbHMgIl42LjYuMCIKKyAgICBiYWJlbC1wbHVnaW4tdHJh
bnNmb3JtLWVzMjAxNS10eXBlb2Ytc3ltYm9sICJeNi4xOC4wIgorICAgIGJhYmVsLXBsdWdpbi10
cmFuc2Zvcm0tZXMyMDE1LXVuaWNvZGUtcmVnZXggIl42LjMuMTMiCisgICAgYmFiZWwtcGx1Z2lu
LXRyYW5zZm9ybS1yZWdlbmVyYXRvciAiXjYuMTYuMCIKKworYmFiZWwtcHJlc2V0LXN0YWdlLTBA
XjYuNS4wOgorICB2ZXJzaW9uICI2LjE2LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL2JhYmVsLXByZXNldC1zdGFnZS0wLy0vYmFiZWwtcHJlc2V0LXN0YWdlLTAt
Ni4xNi4wLnRneiNmNWEyNjNjNDIwNTMyZmQ1NzQ5MWYxYTczMTViMzAzNmU0MjhmODIzIgorICBk
ZXBlbmRlbmNpZXM6CisgICAgYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1kby1leHByZXNzaW9ucyAi
XjYuMy4xMyIKKyAgICBiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWZ1bmN0aW9uLWJpbmQgIl42LjMu
MTMiCisgICAgYmFiZWwtcHJlc2V0LXN0YWdlLTEgIl42LjE2LjAiCisKK2JhYmVsLXByZXNldC1z
dGFnZS0xQF42LjE2LjA6CisgIHZlcnNpb24gIjYuMTYuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtcHJlc2V0LXN0YWdlLTEvLS9iYWJlbC1wcmVzZXQt
c3RhZ2UtMS02LjE2LjAudGd6IzlkMzFmYmJkYWU3YjE3YzU0OWZkM2FjOTNlM2NmNjkwMjY5NWU0
NzkiCisgIGRlcGVuZGVuY2llczoKKyAgICBiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWNsYXNzLWNv
bnN0cnVjdG9yLWNhbGwgIl42LjMuMTMiCisgICAgYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1leHBv
cnQtZXh0ZW5zaW9ucyAiXjYuMy4xMyIKKyAgICBiYWJlbC1wcmVzZXQtc3RhZ2UtMiAiXjYuMTYu
MCIKKworYmFiZWwtcHJlc2V0LXN0YWdlLTJAXjYuMTYuMDoKKyAgdmVyc2lvbiAiNi4xOC4wIgor
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1wcmVzZXQtc3Rh
Z2UtMi8tL2JhYmVsLXByZXNldC1zdGFnZS0yLTYuMTguMC50Z3ojOWViN2JmOWE4ZTkxYzY4MjYw
ZDViYTc1MDA0OTNjYWFhZGE0YjViNSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGJhYmVsLXBsdWdp
bi1zeW50YXgtZHluYW1pYy1pbXBvcnQgIl42LjE4LjAiCisgICAgYmFiZWwtcGx1Z2luLXRyYW5z
Zm9ybS1jbGFzcy1wcm9wZXJ0aWVzICJeNi4xOC4wIgorICAgIGJhYmVsLXBsdWdpbi10cmFuc2Zv
cm0tZGVjb3JhdG9ycyAiXjYuMTMuMCIKKyAgICBiYWJlbC1wcmVzZXQtc3RhZ2UtMyAiXjYuMTcu
MCIKKworYmFiZWwtcHJlc2V0LXN0YWdlLTNAXjYuMTcuMDoKKyAgdmVyc2lvbiAiNi4xNy4wIgor
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1wcmVzZXQtc3Rh
Z2UtMy8tL2JhYmVsLXByZXNldC1zdGFnZS0zLTYuMTcuMC50Z3ojYjY2MzhlNDZkYjZlOTFlM2Y4
ODkwMTNkOGNlMTQzOTE3YzY4NWUzOSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGJhYmVsLXBsdWdp
bi1zeW50YXgtdHJhaWxpbmctZnVuY3Rpb24tY29tbWFzICJeNi4zLjEzIgorICAgIGJhYmVsLXBs
dWdpbi10cmFuc2Zvcm0tYXN5bmMtZ2VuZXJhdG9yLWZ1bmN0aW9ucyAiXjYuMTcuMCIKKyAgICBi
YWJlbC1wbHVnaW4tdHJhbnNmb3JtLWFzeW5jLXRvLWdlbmVyYXRvciAiXjYuMTYuMCIKKyAgICBi
YWJlbC1wbHVnaW4tdHJhbnNmb3JtLWV4cG9uZW50aWF0aW9uLW9wZXJhdG9yICJeNi4zLjEzIgor
ICAgIGJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tb2JqZWN0LXJlc3Qtc3ByZWFkICJeNi4xNi4wIgor
CitiYWJlbC1yZWdpc3RlckBeNi4xOC4wOgorICB2ZXJzaW9uICI2LjE4LjAiCisgIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXJlZ2lzdGVyLy0vYmFiZWwtcmVn
aXN0ZXItNi4xOC4wLnRneiM4OTJlMmUwMzg2NTA3OGRkOTBhZDJjNzE1MTExZWM0NDQ5YjMyYTY4
IgorICBkZXBlbmRlbmNpZXM6CisgICAgYmFiZWwtY29yZSAiXjYuMTguMCIKKyAgICBiYWJlbC1y
dW50aW1lICJeNi4xMS42IgorICAgIGNvcmUtanMgIl4yLjQuMCIKKyAgICBob21lLW9yLXRtcCAi
XjIuMC4wIgorICAgIGxvZGFzaCAiXjQuMi4wIgorICAgIG1rZGlycCAiXjAuNS4xIgorICAgIHNv
dXJjZS1tYXAtc3VwcG9ydCAiXjAuNC4yIgorCitiYWJlbC1ydW50aW1lQF42LjAuMCwgYmFiZWwt
cnVudGltZUBeNi4xMS42LCBiYWJlbC1ydW50aW1lQF42LjkuMCwgYmFiZWwtcnVudGltZUBeNi45
LjE6CisgIHZlcnNpb24gIjYuMTguMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vYmFiZWwtcnVudGltZS8tL2JhYmVsLXJ1bnRpbWUtNi4xOC4wLnRneiMwZjQxNzdm
ZmQ5ODQ5MmVmMTNiOWY4MjNlOTk5NGEwMjU4NGM5MDc4IgorICBkZXBlbmRlbmNpZXM6CisgICAg
Y29yZS1qcyAiXjIuNC4wIgorICAgIHJlZ2VuZXJhdG9yLXJ1bnRpbWUgIl4wLjkuNSIKKworYmFi
ZWwtdGVtcGxhdGVAXjYuMTQuMCwgYmFiZWwtdGVtcGxhdGVAXjYuMTUuMCwgYmFiZWwtdGVtcGxh
dGVAXjYuMTYuMCwgYmFiZWwtdGVtcGxhdGVAXjYuOC4wOgorICB2ZXJzaW9uICI2LjE2LjAiCisg
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXRlbXBsYXRlLy0v
YmFiZWwtdGVtcGxhdGUtNi4xNi4wLnRneiNlMTQ5ZGQxYTlmMDNhMzVmODE3ZGRiYzRkMDQ4MTk4
OGU3ZWJjOGNhIgorICBkZXBlbmRlbmNpZXM6CisgICAgYmFiZWwtcnVudGltZSAiXjYuOS4wIgor
ICAgIGJhYmVsLXRyYXZlcnNlICJeNi4xNi4wIgorICAgIGJhYmVsLXR5cGVzICJeNi4xNi4wIgor
ICAgIGJhYnlsb24gIl42LjExLjAiCisgICAgbG9kYXNoICJeNC4yLjAiCisKK2JhYmVsLXRyYXZl
cnNlQF42LjE2LjAsIGJhYmVsLXRyYXZlcnNlQF42LjE4LjA6CisgIHZlcnNpb24gIjYuMTkuMCIK
KyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtdHJhdmVyc2Uv
LS9iYWJlbC10cmF2ZXJzZS02LjE5LjAudGd6IzY4MzYzZmI4MjFlMjYyNDdkNTJhNTE5YTg0YjJj
ZWFiOGRmNGY1NWEiCisgIGRlcGVuZGVuY2llczoKKyAgICBiYWJlbC1jb2RlLWZyYW1lICJeNi4x
Ni4wIgorICAgIGJhYmVsLW1lc3NhZ2VzICJeNi44LjAiCisgICAgYmFiZWwtcnVudGltZSAiXjYu
OS4wIgorICAgIGJhYmVsLXR5cGVzICJeNi4xOS4wIgorICAgIGJhYnlsb24gIl42LjExLjAiCisg
ICAgZGVidWcgIl4yLjIuMCIKKyAgICBnbG9iYWxzICJeOS4wLjAiCisgICAgaW52YXJpYW50ICJe
Mi4yLjAiCisgICAgbG9kYXNoICJeNC4yLjAiCisKK2JhYmVsLXR5cGVzQF42LjEzLjAsIGJhYmVs
LXR5cGVzQF42LjE2LjAsIGJhYmVsLXR5cGVzQF42LjE4LjAsIGJhYmVsLXR5cGVzQF42LjE5LjAs
IGJhYmVsLXR5cGVzQF42LjguMCwgYmFiZWwtdHlwZXNAXjYuOS4wOgorICB2ZXJzaW9uICI2LjE5
LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXR5cGVz
Ly0vYmFiZWwtdHlwZXMtNi4xOS4wLnRneiM4ZGIyOTcyZGJlZDAxZjExOTJhOGI2MDJiYTFlMWU0
YzUxNjI0MGI5IgorICBkZXBlbmRlbmNpZXM6CisgICAgYmFiZWwtcnVudGltZSAiXjYuOS4xIgor
ICAgIGVzdXRpbHMgIl4yLjAuMiIKKyAgICBsb2Rhc2ggIl40LjIuMCIKKyAgICB0by1mYXN0LXBy
b3BlcnRpZXMgIl4xLjAuMSIKKworYmFieWxvbkBeNi4xMS4wOgorICB2ZXJzaW9uICI2LjE0LjEi
CisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYnlsb24vLS9iYWJ5
bG9uLTYuMTQuMS50Z3ojOTU2Mjc1ZmFiNzI3NTNhZDliMzQzNWQ3YWZlNThmOGJmMGEyOTgxNSIK
KworYmFsYW5jZWQtbWF0Y2hAXjAuNC4xOgorICB2ZXJzaW9uICIwLjQuMiIKKyAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFsYW5jZWQtbWF0Y2gvLS9iYWxhbmNlZC1t
YXRjaC0wLjQuMi50Z3ojY2IzZjNlM2M3MzJkYzBmMDFlZTcwYjQwM2YzMDJlNjFkNzcwOTgzOCIK
KworYmFzZTY0LWpzQF4xLjAuMjoKKyAgdmVyc2lvbiAiMS4yLjAiCisgIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Jhc2U2NC1qcy8tL2Jhc2U2NC1qcy0xLjIuMC50Z3oj
YTM5OTkyZDcyMzU4NDgxMTk4MmJlNWUyOTBiYjZhNTNkODY3MDBmMSIKKworYmF0Y2hAMC41LjM6
CisgIHZlcnNpb24gIjAuNS4zIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9iYXRjaC8tL2JhdGNoLTAuNS4zLnRneiMzZjM0MTRmMzgwMzIxNzQzYmZjMTA0MmY5YTgz
ZmYxZDU4MjRkNDY0IgorCitiY3J5cHQtcGJrZGZAXjEuMC4wOgorICB2ZXJzaW9uICIxLjAuMCIK
KyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmNyeXB0LXBia2RmLy0v
YmNyeXB0LXBia2RmLTEuMC4wLnRneiMzY2E3NmI4NTI0MWM3MTcwYmY3ZDk3MDNlN2I5YWE3NDYz
MDA0MGQ0IgorICBkZXBlbmRlbmNpZXM6CisgICAgdHdlZXRuYWNsICJeMC4xNC4zIgorCitiaWcu
anNAXjMuMS4zOgorICB2ZXJzaW9uICIzLjEuMyIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vYmlnLmpzLy0vYmlnLmpzLTMuMS4zLnRneiM0Y2FkYTIxOTM2NTJlYjNj
YTllYzhlNTVjOTAxNTY2OWM5ODA2OTc4IgorCitiaW5hcnktZXh0ZW5zaW9uc0BeMS4wLjA6Cisg
IHZlcnNpb24gIjEuOC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9iaW5hcnktZXh0ZW5zaW9ucy8tL2JpbmFyeS1leHRlbnNpb25zLTEuOC4wLnRneiM0OGVjOGQx
NmRmNDM3N2VhZTVmYTU4ODQ2ODI0ODBhZjRkOTVjNzc0IgorCitibG9jay1zdHJlYW1AKjoKKyAg
dmVyc2lvbiAiMC4wLjkiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L2Jsb2NrLXN0cmVhbS8tL2Jsb2NrLXN0cmVhbS0wLjAuOS50Z3ojMTNlYmZlNzc4YTAzMjA1Y2Zl
MDM3NTE0ODFlYmI0YjMzMDBjMTI2YSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGluaGVyaXRzICJ+
Mi4wLjAiCisKK2Jvb21AMi54Lng6CisgIHZlcnNpb24gIjIuMTAuMSIKKyAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYm9vbS8tL2Jvb20tMi4xMC4xLnRneiMzOWM4OTE4
Y2VmZjU3OTlmODNmOTQ5MmE4NDhmNjI1YWRkMGM3NjZmIgorICBkZXBlbmRlbmNpZXM6CisgICAg
aG9layAiMi54LngiCisKK2JyYWNlLWV4cGFuc2lvbkBeMS4wLjA6CisgIHZlcnNpb24gIjEuMS42
IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9icmFjZS1leHBhbnNp
b24vLS9icmFjZS1leHBhbnNpb24tMS4xLjYudGd6IzcxOTdkN2VhYTliODdlNjQ4MzkwZWE2MWZj
NjZjODQ0Mjc0MjBkZjkiCisgIGRlcGVuZGVuY2llczoKKyAgICBiYWxhbmNlZC1tYXRjaCAiXjAu
NC4xIgorICAgIGNvbmNhdC1tYXAgIjAuMC4xIgorCiticmFjZXNAXjEuOC4yOgorICB2ZXJzaW9u
ICIxLjguNSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYnJhY2Vz
Ly0vYnJhY2VzLTEuOC41LnRneiNiYTc3OTYyZTEyZGZmOTY5ZDZiNzY3MTFlOTE0YjczNzg1N2Jm
NmE3IgorICBkZXBlbmRlbmNpZXM6CisgICAgZXhwYW5kLXJhbmdlICJeMS44LjEiCisgICAgcHJl
c2VydmUgIl4wLjIuMCIKKyAgICByZXBlYXQtZWxlbWVudCAiXjEuMS4yIgorCiticm93c2VyaWZ5
LWFlc0AwLjQuMDoKKyAgdmVyc2lvbiAiMC40LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL2Jyb3dzZXJpZnktYWVzLy0vYnJvd3NlcmlmeS1hZXMtMC40LjAudGd6
IzA2NzE0OWI2NjhkZjMxYzRiNTg1MzNlMDJkMDFlODA2ZDg2MDhlMmMiCisgIGRlcGVuZGVuY2ll
czoKKyAgICBpbmhlcml0cyAiXjIuMC4xIgorCiticm93c2VyaWZ5LXpsaWJAXjAuMS40OgorICB2
ZXJzaW9uICIwLjEuNCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
YnJvd3NlcmlmeS16bGliLy0vYnJvd3NlcmlmeS16bGliLTAuMS40LnRneiNiYjM1ZjhhNTE5ZjYw
MGUwZmE2Yjg0ODUyNDFjOTc5ZDAxNDFmYjJkIgorICBkZXBlbmRlbmNpZXM6CisgICAgcGFrbyAi
fjAuMi4wIgorCitidWZmZXItc2hpbXNAXjEuMC4wOgorICB2ZXJzaW9uICIxLjAuMCIKKyAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYnVmZmVyLXNoaW1zLy0vYnVmZmVy
LXNoaW1zLTEuMC4wLnRneiM5OTc4Y2UzMTczODhjNjQ5YWQ4NzkzMDI4YzM0NzdlZjA0NGE4YjUx
IgorCitidWZmZXJAXjQuOS4wOgorICB2ZXJzaW9uICI0LjkuMSIKKyAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vYnVmZmVyLy0vYnVmZmVyLTQuOS4xLnRneiM2ZDFiYjYw
MWIwN2E0ZWZjZWQ5NzA5NDEzMjA5MzAyN2M5NWJjMjk4IgorICBkZXBlbmRlbmNpZXM6CisgICAg
YmFzZTY0LWpzICJeMS4wLjIiCisgICAgaWVlZTc1NCAiXjEuMS40IgorICAgIGlzYXJyYXkgIl4x
LjAuMCIKKworYnVpbHRpbi1zdGF0dXMtY29kZXNAXjIuMC4wOgorICB2ZXJzaW9uICIyLjAuMCIK
KyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYnVpbHRpbi1zdGF0dXMt
Y29kZXMvLS9idWlsdGluLXN0YXR1cy1jb2Rlcy0yLjAuMC50Z3ojNmYyMjAwM2JhYWNmMDAzY2Nk
Mjg3YWZlNjg3MjE1MWZkZGM1ODU3OSIKKworYnl0ZXNAMi4zLjA6CisgIHZlcnNpb24gIjIuMy4w
IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9ieXRlcy8tL2J5dGVz
LTIuMy4wLnRneiNkNWI2ODBhMTY1YjYyMDE3MzlhY2I2MTE1NDJhYWJjMmQ4Y2ViMDcwIgorCitj
YW1lbGNhc2VAXjEuMC4yOgorICB2ZXJzaW9uICIxLjIuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vY2FtZWxjYXNlLy0vY2FtZWxjYXNlLTEuMi4xLnRneiM5YmI1
MzA0ZDJlMGI1NjY5OGIyYzc1OGIwOGEzZWFhOWRhYTU4YTM5IgorCitjYXNlbGVzc0B+MC4xMS4w
OgorICB2ZXJzaW9uICIwLjExLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w
a2cuY29tL2Nhc2VsZXNzLy0vY2FzZWxlc3MtMC4xMS4wLnRneiM3MTViOTZlYTk4NDE1OTNjYzMz
MDY3OTIzZjVlYzYwZWJkYTRmN2Q3IgorCitjZW50ZXItYWxpZ25AXjAuMS4xOgorICB2ZXJzaW9u
ICIwLjEuMyIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY2VudGVy
LWFsaWduLy0vY2VudGVyLWFsaWduLTAuMS4zLnRneiNhYTBkMzI2MjliNmVlOTcyMjAwNDExY2Jk
NDQ2MWM5MDdiYzJiN2FkIgorICBkZXBlbmRlbmNpZXM6CisgICAgYWxpZ24tdGV4dCAiXjAuMS4z
IgorICAgIGxhenktY2FjaGUgIl4xLjAuMyIKKworY2hhbGtAXjEuMS4wLCBjaGFsa0BeMS4xLjE6
CisgIHZlcnNpb24gIjEuMS4zIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9jaGFsay8tL2NoYWxrLTEuMS4zLnRneiNhODExNWM1NWU0YTcwMmZlNGQxNTBhYmQzODcy
ODIyYTdlMDlmYzk4IgorICBkZXBlbmRlbmNpZXM6CisgICAgYW5zaS1zdHlsZXMgIl4yLjIuMSIK
KyAgICBlc2NhcGUtc3RyaW5nLXJlZ2V4cCAiXjEuMC4yIgorICAgIGhhcy1hbnNpICJeMi4wLjAi
CisgICAgc3RyaXAtYW5zaSAiXjMuMC4wIgorICAgIHN1cHBvcnRzLWNvbG9yICJeMi4wLjAiCisK
K2Nob2tpZGFyQF4xLjAuMDoKKyAgdmVyc2lvbiAiMS42LjEiCisgIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Nob2tpZGFyLy0vY2hva2lkYXItMS42LjEudGd6IzJmNDQ0
N2FiNWU5NmU1MGZiM2Q3ODlmZDkwZDRjNzJlMGU0YzcwYzIiCisgIGRlcGVuZGVuY2llczoKKyAg
ICBhbnltYXRjaCAiXjEuMy4wIgorICAgIGFzeW5jLWVhY2ggIl4xLjAuMCIKKyAgICBnbG9iLXBh
cmVudCAiXjIuMC4wIgorICAgIGluaGVyaXRzICJeMi4wLjEiCisgICAgaXMtYmluYXJ5LXBhdGgg
Il4xLjAuMCIKKyAgICBpcy1nbG9iICJeMi4wLjAiCisgICAgcGF0aC1pcy1hYnNvbHV0ZSAiXjEu
MC4wIgorICAgIHJlYWRkaXJwICJeMi4wLjAiCisgIG9wdGlvbmFsRGVwZW5kZW5jaWVzOgorICAg
IGZzZXZlbnRzICJeMS4wLjAiCisKK2NsaXVpQF4yLjEuMDoKKyAgdmVyc2lvbiAiMi4xLjAiCisg
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NsaXVpLy0vY2xpdWktMi4x
LjAudGd6IzRiNDc1NzYwZmY4MDI2NGM3NjJjM2ExNzE5MDMyZTkxYzdmZWEwZDEiCisgIGRlcGVu
ZGVuY2llczoKKyAgICBjZW50ZXItYWxpZ24gIl4wLjEuMSIKKyAgICByaWdodC1hbGlnbiAiXjAu
MS4xIgorICAgIHdvcmR3cmFwICIwLjAuMiIKKworY2xvbmVAXjEuMC4yOgorICB2ZXJzaW9uICIx
LjAuMiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY2xvbmUvLS9j
bG9uZS0xLjAuMi50Z3ojMjYwYjdhOTllYmIxZWRmZTI0NzUzODE3NWY3ODMyNDNjYjE5ZDE0OSIK
KworY29kZS1wb2ludC1hdEBeMS4wLjA6CisgIHZlcnNpb24gIjEuMS4wIgorICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jb2RlLXBvaW50LWF0Ly0vY29kZS1wb2ludC1h
dC0xLjEuMC50Z3ojMGQwNzBiNGQwNDNhNWJlYTMzYTJmMWE0MGUyZWRiM2Q5YTRjY2Y3NyIKKwor
Y29tYmluZWQtc3RyZWFtQF4xLjAuNSwgY29tYmluZWQtc3RyZWFtQH4xLjAuNToKKyAgdmVyc2lv
biAiMS4wLjUiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NvbWJp
bmVkLXN0cmVhbS8tL2NvbWJpbmVkLXN0cmVhbS0xLjAuNS50Z3ojOTM4MzcwYTU3YjRhNTFkZWEy
Yzc3YzE1ZDVjNWZkZjg5NTE2NDAwOSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGRlbGF5ZWQtc3Ry
ZWFtICJ+MS4wLjAiCisKK2NvbW1hbmRlckBeMi45LjA6CisgIHZlcnNpb24gIjIuOS4wIgorICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jb21tYW5kZXIvLS9jb21tYW5k
ZXItMi45LjAudGd6IzljOTkwOTQxNzZlMTIyNDBjYjIyZDZjNTE0NjA5ODQwMGZlMGY3ZDQiCisg
IGRlcGVuZGVuY2llczoKKyAgICBncmFjZWZ1bC1yZWFkbGluayAiPj0gMS4wLjAiCisKK2NvbW1v
bmRpckBeMS4wLjE6CisgIHZlcnNpb24gIjEuMC4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9jb21tb25kaXIvLS9jb21tb25kaXItMS4wLjEudGd6I2RkZDgwMGRh
MGM2NjEyNzM5M2NjYTU5NTBlYTk2OGEzYWFmMTI1M2IiCisKK2NvbXByZXNzaWJsZUB+Mi4wLjg6
CisgIHZlcnNpb24gIjIuMC45IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9jb21wcmVzc2libGUvLS9jb21wcmVzc2libGUtMi4wLjkudGd6IzZkYWFiNGUyYjU5OWMy
NzcwZGQ5ZTIxZTdhODkxYjFjNWE3NTU0MjUiCisgIGRlcGVuZGVuY2llczoKKyAgICBtaW1lLWRi
ICI+PSAxLjI0LjAgPCAyIgorCitjb21wcmVzc2lvbkBeMS41LjI6CisgIHZlcnNpb24gIjEuNi4y
IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jb21wcmVzc2lvbi8t
L2NvbXByZXNzaW9uLTEuNi4yLnRneiNjY2ViMTIxZWNjOWQwOWM1MmQ3YWQwYzMzNTBlYTkzZGRk
NDAyYmMzIgorICBkZXBlbmRlbmNpZXM6CisgICAgYWNjZXB0cyAifjEuMy4zIgorICAgIGJ5dGVz
ICIyLjMuMCIKKyAgICBjb21wcmVzc2libGUgIn4yLjAuOCIKKyAgICBkZWJ1ZyAifjIuMi4wIgor
ICAgIG9uLWhlYWRlcnMgIn4xLjAuMSIKKyAgICB2YXJ5ICJ+MS4xLjAiCisKK2NvbmNhdC1tYXBA
MC4wLjE6CisgIHZlcnNpb24gIjAuMC4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9jb25jYXQtbWFwLy0vY29uY2F0LW1hcC0wLjAuMS50Z3ojZDhhOTZiZDc3ZmQ2
OGRmNzc5M2E3MzAzNmEzYmEwZDU0MDVkNDc3YiIKKworY29ubmVjdC1oaXN0b3J5LWFwaS1mYWxs
YmFja0BeMS4zLjA6CisgIHZlcnNpb24gIjEuMy4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9jb25uZWN0LWhpc3RvcnktYXBpLWZhbGxiYWNrLy0vY29ubmVjdC1o
aXN0b3J5LWFwaS1mYWxsYmFjay0xLjMuMC50Z3ojZTUxZDE3ZjhmMGVmMGRiOTBhNjRmZGI0N2Rl
MzA1MTU1NmU5ZjE2OSIKKworY29uc29sZS1icm93c2VyaWZ5QF4xLjEuMDoKKyAgdmVyc2lvbiAi
MS4xLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NvbnNvbGUt
YnJvd3NlcmlmeS8tL2NvbnNvbGUtYnJvd3NlcmlmeS0xLjEuMC50Z3ojZjAyNDFjNDU3MzBhOWZj
NjMyM2IyMDZkYmYzOGVkYzc0MWQwYmIxMCIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGRhdGUtbm93
ICJeMC4xLjQiCisKK2NvbnNvbGUtY29udHJvbC1zdHJpbmdzQF4xLjAuMCwgY29uc29sZS1jb250
cm9sLXN0cmluZ3NAfjEuMS4wOgorICB2ZXJzaW9uICIxLjEuMCIKKyAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vY29uc29sZS1jb250cm9sLXN0cmluZ3MvLS9jb25zb2xl
LWNvbnRyb2wtc3RyaW5ncy0xLjEuMC50Z3ojM2Q3Y2Y0NDY0ZGI2NDQ2ZWE2NDRiZjRiMzk1MDdm
OTg1MTAwOGU4ZSIKKworY29uc3RhbnRzLWJyb3dzZXJpZnlAXjEuMC4wOgorICB2ZXJzaW9uICIx
LjAuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY29uc3RhbnRz
LWJyb3dzZXJpZnkvLS9jb25zdGFudHMtYnJvd3NlcmlmeS0xLjAuMC50Z3ojYzIwYjk2ZDhjNjE3
NzQ4YWFmMWMxNjAyMTc2MGNkMjdmY2I4Y2I3NSIKKworY29udGVudC1kaXNwb3NpdGlvbkAwLjUu
MToKKyAgdmVyc2lvbiAiMC41LjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w
a2cuY29tL2NvbnRlbnQtZGlzcG9zaXRpb24vLS9jb250ZW50LWRpc3Bvc2l0aW9uLTAuNS4xLnRn
eiM4NzQ3NmM2YTY3YzhkYWE4N2UzMmU4NzYxNmRmODgzYmE3ZmIwNzFiIgorCitjb250ZW50LXR5
cGVAfjEuMC4yOgorICB2ZXJzaW9uICIxLjAuMiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vY29udGVudC10eXBlLy0vY29udGVudC10eXBlLTEuMC4yLnRneiNiN2Qx
MTNhZWU3YThkZDI3YmQyMTEzM2M0ZGMyNTI5ZGYxNzIxZWVkIgorCitjb252ZXJ0LXNvdXJjZS1t
YXBAXjEuMS4wOgorICB2ZXJzaW9uICIxLjMuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vY29udmVydC1zb3VyY2UtbWFwLy0vY29udmVydC1zb3VyY2UtbWFwLTEu
My4wLnRneiNlOWYzZTljNmUyNzI4ZWZjMjY3NjY5NmE3MGViMzgyZjczMTA2YTY3IgorCitjb29r
aWUtc2lnbmF0dXJlQDEuMC42OgorICB2ZXJzaW9uICIxLjAuNiIKKyAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vY29va2llLXNpZ25hdHVyZS8tL2Nvb2tpZS1zaWduYXR1
cmUtMS4wLjYudGd6I2UzMDNhODgyYjM0MmNjM2VlOGNhNTEzYTc5OTk5NzM0ZGFiM2FlMmMiCisK
K2Nvb2tpZUAwLjMuMToKKyAgdmVyc2lvbiAiMC4zLjEiCisgIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL2Nvb2tpZS8tL2Nvb2tpZS0wLjMuMS50Z3ojZTdlMGExZjllZjQz
YjRjOGJhOTI1YzVjNWE5NmU4MDZkMTY4NzNiYiIKKworY29yZS1qc0BeMi40LjA6CisgIHZlcnNp
b24gIjIuNC4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jb3Jl
LWpzLy0vY29yZS1qcy0yLjQuMS50Z3ojNGRlOTExZTY2N2IwZWFlOTEyNGUzNDI1NGI1M2FlYTZm
YzYxOGQzZSIKKworY29yZS11dGlsLWlzQH4xLjAuMDoKKyAgdmVyc2lvbiAiMS4wLjIiCisgIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NvcmUtdXRpbC1pcy8tL2NvcmUt
dXRpbC1pcy0xLjAuMi50Z3ojYjVmZDU0MjIwYWEyYmM1YWI1N2FhYjcxNDBjOTQwNzU0NTAzYzFh
NyIKKworY3J5cHRpbGVzQDIueC54OgorICB2ZXJzaW9uICIyLjAuNSIKKyAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY3J5cHRpbGVzLy0vY3J5cHRpbGVzLTIuMC41LnRn
eiMzYmRmZWNkYzYwODE0N2MxYzY3MjAyZmEyOTFlN2RjYTU5ZWFhM2I4IgorICBkZXBlbmRlbmNp
ZXM6CisgICAgYm9vbSAiMi54LngiCisKK2NyeXB0by1icm93c2VyaWZ5QDMuMy4wOgorICB2ZXJz
aW9uICIzLjMuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY3J5
cHRvLWJyb3dzZXJpZnkvLS9jcnlwdG8tYnJvd3NlcmlmeS0zLjMuMC50Z3ojYjlmYzc1YmI0YTBl
ZDYxZGNmMWNkNWRhZTk2ZWIzMGM5YzNlNTA2YyIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGJyb3dz
ZXJpZnktYWVzICIwLjQuMCIKKyAgICBwYmtkZjItY29tcGF0ICIyLjAuMSIKKyAgICByaXBlbWQx
NjAgIjAuMi4wIgorICAgIHNoYS5qcyAiMi4yLjYiCisKK2Rhc2hkYXNoQF4xLjEyLjA6CisgIHZl
cnNpb24gIjEuMTQuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
ZGFzaGRhc2gvLS9kYXNoZGFzaC0xLjE0LjEudGd6Izg1M2NmYTBmN2NiZTJmZWQ1ZGUyMDMyNmI4
ZGQ1ODEwMzVmNmUyZjAiCisgIGRlcGVuZGVuY2llczoKKyAgICBhc3NlcnQtcGx1cyAiXjEuMC4w
IgorCitkYXRlLW5vd0BeMC4xLjQ6CisgIHZlcnNpb24gIjAuMS40IgorICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9kYXRlLW5vdy8tL2RhdGUtbm93LTAuMS40LnRneiNl
YWY0MzlmZDRkNDg0OGFkNzRlNWNjN2RiZWYyMDA2NzJiOWUzNDViIgorCitkZWJ1Z0BeMi4xLjEs
IGRlYnVnQF4yLjIuMDoKKyAgdmVyc2lvbiAiMi4zLjMiCisgIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL2RlYnVnLy0vZGVidWctMi4zLjMudGd6IzQwYzQ1M2U2N2U2ZTEz
YzkwMWRkZWMzMTdhZjg5ODZjZGE5ZWZmOGMiCisgIGRlcGVuZGVuY2llczoKKyAgICBtcyAiMC43
LjIiCisKK2RlYnVnQH4yLjIuMDoKKyAgdmVyc2lvbiAiMi4yLjAiCisgIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2RlYnVnLy0vZGVidWctMi4yLjAudGd6I2Y4NzA1N2U5
OTViMWExZjZhZTZhNDk2MDY2NDEzN2JjNTZmMDM5ZGEiCisgIGRlcGVuZGVuY2llczoKKyAgICBt
cyAiMC43LjEiCisKK2RlY2FtZWxpemVAXjEuMC4wOgorICB2ZXJzaW9uICIxLjIuMCIKKyAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZGVjYW1lbGl6ZS8tL2RlY2FtZWxp
emUtMS4yLjAudGd6I2Y2NTM0ZDE1MTQ4MjY5YjIwMzUyZTdiZWUyNmY1MDFmOWExOTEyOTAiCisK
K2RlZXAtZXh0ZW5kQH4wLjQuMDoKKyAgdmVyc2lvbiAiMC40LjEiCisgIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2RlZXAtZXh0ZW5kLy0vZGVlcC1leHRlbmQtMC40LjEu
dGd6I2VmZTQxMTNkMDgwODVmNGU2Zjk2ODc3NTk4MTBmODA3NDY5ZTIyNTMiCisKK2RlbGF5ZWQt
c3RyZWFtQH4xLjAuMDoKKyAgdmVyc2lvbiAiMS4wLjAiCisgIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL2RlbGF5ZWQtc3RyZWFtLy0vZGVsYXllZC1zdHJlYW0tMS4wLjAu
dGd6I2RmM2FlMTk5YWNhZGZiN2Q0NDBhYWFlMGIyOWUyMjcyYjI0ZWM2MTkiCisKK2RlbGVnYXRl
c0BeMS4wLjA6CisgIHZlcnNpb24gIjEuMC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9kZWxlZ2F0ZXMvLS9kZWxlZ2F0ZXMtMS4wLjAudGd6Izg0YzZlMTU5Yjgx
OTA0ZmRjYTU5YTBlZjQ0Y2Q4NzBkMzEyNTBmOWEiCisKK2RlcGRAfjEuMS4wOgorICB2ZXJzaW9u
ICIxLjEuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZGVwZC8t
L2RlcGQtMS4xLjAudGd6I2UxYmQ4MmM2YWFiNmNlZDk2NWI5N2I4OGIxN2VkM2U1MjhjYTE4YzMi
CisKK2Rlc3Ryb3lAfjEuMC40OgorICB2ZXJzaW9uICIxLjAuNCIKKyAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vZGVzdHJveS8tL2Rlc3Ryb3ktMS4wLjQudGd6Izk3ODg1
NzQ0MmM0NDc0OWU0MjA2NjEzZTM3OTQ2MjA1ODI2YWJkODAiCisKK2RldGVjdC1pbmRlbnRAXjQu
MC4wOgorICB2ZXJzaW9uICI0LjAuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vZGV0ZWN0LWluZGVudC8tL2RldGVjdC1pbmRlbnQtNC4wLjAudGd6I2Y3NmQwNjQz
NTJjZGY0M2ExY2I2Y2U2MTljNGVlM2E5NDc1ZGUyMDgiCisgIGRlcGVuZGVuY2llczoKKyAgICBy
ZXBlYXRpbmcgIl4yLjAuMCIKKworZG9tYWluLWJyb3dzZXJAXjEuMS4xOgorICB2ZXJzaW9uICIx
LjEuNyIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZG9tYWluLWJy
b3dzZXIvLS9kb21haW4tYnJvd3Nlci0xLjEuNy50Z3ojODY3YWE0YjA5M2ZhYTA1ZjFkZTA4YzA2
ZjRkN2IyMWZkZjg2OThiYyIKKworZWNjLWpzYm5AfjAuMS4xOgorICB2ZXJzaW9uICIwLjEuMSIK
KyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZWNjLWpzYm4vLS9lY2Mt
anNibi0wLjEuMS50Z3ojMGZjNzNhOWVkNWYwZDUzYzM4MTkzMzk4NTIzZWY3ZTU0Mzc3NzUwNSIK
KyAgZGVwZW5kZW5jaWVzOgorICAgIGpzYm4gIn4wLjEuMCIKKworZWUtZmlyc3RAMS4xLjE6Cisg
IHZlcnNpb24gIjEuMS4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9lZS1maXJzdC8tL2VlLWZpcnN0LTEuMS4xLnRneiM1OTBjNjExNTZiMGFlMmY0ZjAyNTU3MzJh
MTU4YjI2NmJjNTZiMjFkIgorCitlbW9qaXMtbGlzdEBeMi4wLjA6CisgIHZlcnNpb24gIjIuMS4w
IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9lbW9qaXMtbGlzdC8t
L2Vtb2ppcy1saXN0LTIuMS4wLnRneiM0ZGFhNGQ5ZGIwMGY5ODE5ODgwYzc5ZmE0NTdhZTViMDlh
MWZkMzg5IgorCitlbmNvZGV1cmxAfjEuMC4xOgorICB2ZXJzaW9uICIxLjAuMSIKKyAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZW5jb2RldXJsLy0vZW5jb2RldXJsLTEu
MC4xLnRneiM3OWUzZDU4NjU1MzQ2OTA5ZmU2ZjBmNDVhNWRlNjgxMDNiMjk0ZDIwIgorCitlbmhh
bmNlZC1yZXNvbHZlQH4wLjkuMDoKKyAgdmVyc2lvbiAiMC45LjEiCisgIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2VuaGFuY2VkLXJlc29sdmUvLS9lbmhhbmNlZC1yZXNv
bHZlLTAuOS4xLnRneiM0ZDZlNjg5YjM3MjVmODYwOTA5MjdjY2M4NmNkOWYxNjM1Yjg5ZTJlIgor
ICBkZXBlbmRlbmNpZXM6CisgICAgZ3JhY2VmdWwtZnMgIl40LjEuMiIKKyAgICBtZW1vcnktZnMg
Il4wLjIuMCIKKyAgICB0YXBhYmxlICJeMC4xLjgiCisKK2Vycm5vQF4wLjEuMzoKKyAgdmVyc2lv
biAiMC4xLjQiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Vycm5v
Ly0vZXJybm8tMC4xLjQudGd6I2I4OTZlMjNhOWU1ZThiYTMzODcxZmM5OTZhYmQzNjM1ZmM5YTFj
N2QiCisgIGRlcGVuZGVuY2llczoKKyAgICBwcnIgIn4wLjAuMCIKKworZXNjYXBlLWh0bWxAfjEu
MC4zOgorICB2ZXJzaW9uICIxLjAuMyIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vZXNjYXBlLWh0bWwvLS9lc2NhcGUtaHRtbC0xLjAuMy50Z3ojMDI1OGVhZTRkM2Qw
YzA5NzRkZTFjMTY5MTg4ZWYwMDUxZDFkMTk4OCIKKworZXNjYXBlLXN0cmluZy1yZWdleHBAXjEu
MC4yOgorICB2ZXJzaW9uICIxLjAuNSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vZXNjYXBlLXN0cmluZy1yZWdleHAvLS9lc2NhcGUtc3RyaW5nLXJlZ2V4cC0xLjAu
NS50Z3ojMWI2MWMwNTYyMTkwYThkZmY2YWUzYmIyY2YwMjAwY2ExMzBiODZkNCIKKworZXN1dGls
c0BeMi4wLjI6CisgIHZlcnNpb24gIjIuMC4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9lc3V0aWxzLy0vZXN1dGlscy0yLjAuMi50Z3ojMGFiZjRmMWNhYTViY2Ix
ZjdhOWQ4YWNjNmRlYTRmYWFhMDRiYWM5YiIKKworZXRhZ0B+MS43LjA6CisgIHZlcnNpb24gIjEu
Ny4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9ldGFnLy0vZXRh
Zy0xLjcuMC50Z3ojMDNkMzBiNWY2N2RkNmU2MzJkMjk0NWQzMGQ2NjUyNzMxYTM0ZDVkOCIKKwor
ZXZlbnRlbWl0dGVyM0AxLngueDoKKyAgdmVyc2lvbiAiMS4yLjAiCisgIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2V2ZW50ZW1pdHRlcjMvLS9ldmVudGVtaXR0ZXIzLTEu
Mi4wLnRneiMxYzg2OTkxZDgxNmFkMWU1MDQ3NTBlNzM4NzQyMjRlY2YzYmVjNTA4IgorCitldmVu
dHNAXjEuMC4wOgorICB2ZXJzaW9uICIxLjEuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vZXZlbnRzLy0vZXZlbnRzLTEuMS4xLnRneiM5ZWJkYjc2MzVhZDA5OWM3
MGRjYzRjMmExZjUwMDQyODhlOGJkOTI0IgorCitldmVudHNvdXJjZUB+MC4xLjY6CisgIHZlcnNp
b24gIjAuMS42IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9ldmVu
dHNvdXJjZS8tL2V2ZW50c291cmNlLTAuMS42LnRneiMwYWNlZGU4NDllZDdkZDFjY2MzMmM4MTFi
YjExYjk0NGQ0ZjI5MjMyIgorICBkZXBlbmRlbmNpZXM6CisgICAgb3JpZ2luYWwgIj49MC4wLjUi
CisKK2V4cGFuZC1icmFja2V0c0BeMC4xLjQ6CisgIHZlcnNpb24gIjAuMS41IgorICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9leHBhbmQtYnJhY2tldHMvLS9leHBhbmQt
YnJhY2tldHMtMC4xLjUudGd6I2RmMDcyODRlMzQyYTgwN2NkNzMzYWM1YWY3MjQxMWU1ODFkMTE3
N2IiCisgIGRlcGVuZGVuY2llczoKKyAgICBpcy1wb3NpeC1icmFja2V0ICJeMC4xLjAiCisKK2V4
cGFuZC1yYW5nZUBeMS44LjE6CisgIHZlcnNpb24gIjEuOC4yIgorICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9leHBhbmQtcmFuZ2UvLS9leHBhbmQtcmFuZ2UtMS44LjIu
dGd6I2EyOTllZmZkMzM1ZmUyNzIxZWJhZThlMjU3ZWM3OTY0NGZjODUzMzciCisgIGRlcGVuZGVu
Y2llczoKKyAgICBmaWxsLXJhbmdlICJeMi4xLjAiCisKK2V4cHJlc3NAXjQuMTMuMzoKKyAgdmVy
c2lvbiAiNC4xNC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9l
eHByZXNzLy0vZXhwcmVzcy00LjE0LjAudGd6I2MxZWUzZjQyY2RjODkxZmIzZGM2NTBhODkyMmQ1
MWVjODQ3ZDBkNjYiCisgIGRlcGVuZGVuY2llczoKKyAgICBhY2NlcHRzICJ+MS4zLjMiCisgICAg
YXJyYXktZmxhdHRlbiAiMS4xLjEiCisgICAgY29udGVudC1kaXNwb3NpdGlvbiAiMC41LjEiCisg
ICAgY29udGVudC10eXBlICJ+MS4wLjIiCisgICAgY29va2llICIwLjMuMSIKKyAgICBjb29raWUt
c2lnbmF0dXJlICIxLjAuNiIKKyAgICBkZWJ1ZyAifjIuMi4wIgorICAgIGRlcGQgIn4xLjEuMCIK
KyAgICBlbmNvZGV1cmwgIn4xLjAuMSIKKyAgICBlc2NhcGUtaHRtbCAifjEuMC4zIgorICAgIGV0
YWcgIn4xLjcuMCIKKyAgICBmaW5hbGhhbmRsZXIgIjAuNS4wIgorICAgIGZyZXNoICIwLjMuMCIK
KyAgICBtZXJnZS1kZXNjcmlwdG9ycyAiMS4wLjEiCisgICAgbWV0aG9kcyAifjEuMS4yIgorICAg
IG9uLWZpbmlzaGVkICJ+Mi4zLjAiCisgICAgcGFyc2V1cmwgIn4xLjMuMSIKKyAgICBwYXRoLXRv
LXJlZ2V4cCAiMC4xLjciCisgICAgcHJveHktYWRkciAifjEuMS4yIgorICAgIHFzICI2LjIuMCIK
KyAgICByYW5nZS1wYXJzZXIgIn4xLjIuMCIKKyAgICBzZW5kICIwLjE0LjEiCisgICAgc2VydmUt
c3RhdGljICJ+MS4xMS4xIgorICAgIHR5cGUtaXMgIn4xLjYuMTMiCisgICAgdXRpbHMtbWVyZ2Ug
IjEuMC4wIgorICAgIHZhcnkgIn4xLjEuMCIKKworZXh0ZW5kQH4zLjAuMDoKKyAgdmVyc2lvbiAi
My4wLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2V4dGVuZC8t
L2V4dGVuZC0zLjAuMC50Z3ojNWE0NzQzNTNiOWYzMzUzZGRkODE3NmRmZDM3YjkxYzgzYTQ2ZjFk
NCIKKworZXh0Z2xvYkBeMC4zLjE6CisgIHZlcnNpb24gIjAuMy4yIgorICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9leHRnbG9iLy0vZXh0Z2xvYi0wLjMuMi50Z3ojMmUx
OGZmM2QyZjQ5YWIyNzY1Y2VjOTAyM2YwMTFkYWE4ZDgzNDlhMSIKKyAgZGVwZW5kZW5jaWVzOgor
ICAgIGlzLWV4dGdsb2IgIl4xLjAuMCIKKworZXh0c3ByaW50ZkAxLjAuMjoKKyAgdmVyc2lvbiAi
MS4wLjIiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2V4dHNwcmlu
dGYvLS9leHRzcHJpbnRmLTEuMC4yLnRneiNlMTA4MGUwNjU4ZTMwMGIwNjI5NDk5MGNjNzBlMTUw
MjIzNWZkNTUwIgorCitmYXllLXdlYnNvY2tldEBeMC4xMC4wOgorICB2ZXJzaW9uICIwLjEwLjAi
CisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2ZheWUtd2Vic29ja2V0
Ly0vZmF5ZS13ZWJzb2NrZXQtMC4xMC4wLnRneiM0ZTQ5MmY4ZDA0ZGZiNmY4OTAwMzUwN2Y2ZWRi
ZjJkNTAxZTdjNmY0IgorICBkZXBlbmRlbmNpZXM6CisgICAgd2Vic29ja2V0LWRyaXZlciAiPj0w
LjUuMSIKKworZmF5ZS13ZWJzb2NrZXRAfjAuMTEuMDoKKyAgdmVyc2lvbiAiMC4xMS4wIgorICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9mYXllLXdlYnNvY2tldC8tL2Zh
eWUtd2Vic29ja2V0LTAuMTEuMC50Z3ojZDljY2YwZTc4OWU3ZGI3MjVkNzRiYzQ4NzdkMjNhYTQy
OTcyYWM1MCIKKyAgZGVwZW5kZW5jaWVzOgorICAgIHdlYnNvY2tldC1kcml2ZXIgIj49MC41LjEi
CisKK2ZpbGVuYW1lLXJlZ2V4QF4yLjAuMDoKKyAgdmVyc2lvbiAiMi4wLjAiCisgIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2ZpbGVuYW1lLXJlZ2V4Ly0vZmlsZW5hbWUt
cmVnZXgtMi4wLjAudGd6Izk5NmUzZTgwNDc5Yjk4Yjk4OTdmMTVhOGE1OGIzZDA4NGU5MjY3NzUi
CisKK2ZpbGwtcmFuZ2VAXjIuMS4wOgorICB2ZXJzaW9uICIyLjIuMyIKKyAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZmlsbC1yYW5nZS8tL2ZpbGwtcmFuZ2UtMi4yLjMu
dGd6IzUwYjc3ZGZkN2U0NjliYzc0OTI0NzA5NjM2OTlmZTdhODQ4NWE3MjMiCisgIGRlcGVuZGVu
Y2llczoKKyAgICBpcy1udW1iZXIgIl4yLjEuMCIKKyAgICBpc29iamVjdCAiXjIuMC4wIgorICAg
IHJhbmRvbWF0aWMgIl4xLjEuMyIKKyAgICByZXBlYXQtZWxlbWVudCAiXjEuMS4yIgorICAgIHJl
cGVhdC1zdHJpbmcgIl4xLjUuMiIKKworZmluYWxoYW5kbGVyQDAuNS4wOgorICB2ZXJzaW9uICIw
LjUuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZmluYWxoYW5k
bGVyLy0vZmluYWxoYW5kbGVyLTAuNS4wLnRneiNlOTUwOGFiZWNlOWI2ZGJhODcxYTY5NDJhMWQ3
OTExYjkxOTExYWM3IgorICBkZXBlbmRlbmNpZXM6CisgICAgZGVidWcgIn4yLjIuMCIKKyAgICBl
c2NhcGUtaHRtbCAifjEuMC4zIgorICAgIG9uLWZpbmlzaGVkICJ+Mi4zLjAiCisgICAgc3RhdHVz
ZXMgIn4xLjMuMCIKKyAgICB1bnBpcGUgIn4xLjAuMCIKKworZmluZC1jYWNoZS1kaXJAXjAuMS4x
OgorICB2ZXJzaW9uICIwLjEuMSIKKyAgcmVzb2x2ZWQgImh0dHA6Ly9yZWdpc3RyeS5ucG1qcy5v
cmcvZmluZC1jYWNoZS1kaXIvLS9maW5kLWNhY2hlLWRpci0wLjEuMS50Z3ojYzhkZWZhZTU3Yzhh
NTJhOGE3ODRmOWUzMWM1N2M3NDJlOTkzYTBiOSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGNvbW1v
bmRpciAiXjEuMC4xIgorICAgIG1rZGlycCAiXjAuNS4xIgorICAgIHBrZy1kaXIgIl4xLjAuMCIK
KworZmluZC11cEBeMS4wLjA6CisgIHZlcnNpb24gIjEuMS4yIgorICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9maW5kLXVwLy0vZmluZC11cC0xLjEuMi50Z3ojNmIyZTk4
MjJiMWEyY2UwYTYwYWI2NGQ2MTBlY2NhZDUzY2IyNGQwZiIKKyAgZGVwZW5kZW5jaWVzOgorICAg
IHBhdGgtZXhpc3RzICJeMi4wLjAiCisgICAgcGlua2llLXByb21pc2UgIl4yLjAuMCIKKworZm9y
LWluQF4wLjEuNToKKyAgdmVyc2lvbiAiMC4xLjYiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL2Zvci1pbi8tL2Zvci1pbi0wLjEuNi50Z3ojYzlmOTZlODliZmFkMThh
NTQ1YWY1ZWMzZWQzNTJhMWQ5ZTViNGRjOCIKKworZm9yLW93bkBeMC4xLjQ6CisgIHZlcnNpb24g
IjAuMS40IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9mb3Itb3du
Ly0vZm9yLW93bi0wLjEuNC50Z3ojMDE0OWI0MWEzOTA4OGM3NTE1ZjUxZWJlMWMxMzg2ZDQ1Zjkz
NTA3MiIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGZvci1pbiAiXjAuMS41IgorCitmb3JldmVyLWFn
ZW50QH4wLjYuMToKKyAgdmVyc2lvbiAiMC42LjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL2ZvcmV2ZXItYWdlbnQvLS9mb3JldmVyLWFnZW50LTAuNi4xLnRneiNm
YmM3MWYwYzQxYWRlYjM3Zjk2YzU3N2FkMWVkNDJkOGZkYWNjYTkxIgorCitmb3JtLWRhdGFAfjIu
MS4xOgorICB2ZXJzaW9uICIyLjEuMiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vZm9ybS1kYXRhLy0vZm9ybS1kYXRhLTIuMS4yLnRneiM4OWMzNTM0MDA4Yjk3ZWFk
YTRjYmIxNTdkNThmNmY1ZGYwMjVlYWU0IgorICBkZXBlbmRlbmNpZXM6CisgICAgYXN5bmNraXQg
Il4wLjQuMCIKKyAgICBjb21iaW5lZC1zdHJlYW0gIl4xLjAuNSIKKyAgICBtaW1lLXR5cGVzICJe
Mi4xLjEyIgorCitmb3J3YXJkZWRAfjAuMS4wOgorICB2ZXJzaW9uICIwLjEuMCIKKyAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZm9yd2FyZGVkLy0vZm9yd2FyZGVkLTAu
MS4wLnRneiMxOWVmOTg3NGM0YWUxYzI5N2JjZjA3OGZkZTYzYTA5YjY2YTg0MzYzIgorCitmcmVz
aEAwLjMuMDoKKyAgdmVyc2lvbiAiMC4zLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL2ZyZXNoLy0vZnJlc2gtMC4zLjAudGd6IzY1MWY4MzhlMjI0MjRlNzU2NmRl
MTYxZDgzNThjYWExOTlmODNkNGYiCisKK2ZzLnJlYWxwYXRoQF4xLjAuMDoKKyAgdmVyc2lvbiAi
MS4wLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2ZzLnJlYWxw
YXRoLy0vZnMucmVhbHBhdGgtMS4wLjAudGd6IzE1MDRhZDI1MjMxNThjYWE0MGRiNGEyNzg3Y2Iw
MTQxMTk5NGVhNGYiCisKK2ZzZXZlbnRzQF4xLjAuMDoKKyAgdmVyc2lvbiAiMS4wLjE1IgorICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9mc2V2ZW50cy8tL2ZzZXZlbnRz
LTEuMC4xNS50Z3ojZmE2M2Y1OTBmM2MyYWQ5MTI3NWU0OTcyYTZjZWE1NDVmYjBhYWU0NCIKKyAg
ZGVwZW5kZW5jaWVzOgorICAgIG5hbiAiXjIuMy4wIgorICAgIG5vZGUtcHJlLWd5cCAiXjAuNi4y
OSIKKworZnN0cmVhbS1pZ25vcmVAfjEuMC41OgorICB2ZXJzaW9uICIxLjAuNSIKKyAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZnN0cmVhbS1pZ25vcmUvLS9mc3RyZWFt
LWlnbm9yZS0xLjAuNS50Z3ojOWMzMWRhZTM0NzY3MDE4ZmUxZDI0OWIyNGRhZGE2N2QwOTJkYTEw
NSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGZzdHJlYW0gIl4xLjAuMCIKKyAgICBpbmhlcml0cyAi
MiIKKyAgICBtaW5pbWF0Y2ggIl4zLjAuMCIKKworZnN0cmVhbUBeMS4wLjAsIGZzdHJlYW1AXjEu
MC4yLCBmc3RyZWFtQH4xLjAuMTA6CisgIHZlcnNpb24gIjEuMC4xMCIKKyAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZnN0cmVhbS8tL2ZzdHJlYW0tMS4wLjEwLnRneiM2
MDRlOGE5MmZlMjZmZmQ5ZjZmYWUzMDM5OWQ0OTg0ZTFhYjIyODIyIgorICBkZXBlbmRlbmNpZXM6
CisgICAgZ3JhY2VmdWwtZnMgIl40LjEuMiIKKyAgICBpbmhlcml0cyAifjIuMC4wIgorICAgIG1r
ZGlycCAiPj0wLjUgMCIKKyAgICByaW1yYWYgIjIiCisKK2dhdWdlQH4yLjcuMToKKyAgdmVyc2lv
biAiMi43LjIiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2dhdWdl
Ly0vZ2F1Z2UtMi43LjIudGd6IzE1Y2VjYzMxYjAyZDA1MzQ1YTVkNmIwZTE3MWNkYjNhZDIzMDc3
NzQiCisgIGRlcGVuZGVuY2llczoKKyAgICBhcHJvYmEgIl4xLjAuMyIKKyAgICBjb25zb2xlLWNv
bnRyb2wtc3RyaW5ncyAiXjEuMC4wIgorICAgIGhhcy11bmljb2RlICJeMi4wLjAiCisgICAgb2Jq
ZWN0LWFzc2lnbiAiXjQuMS4wIgorICAgIHNpZ25hbC1leGl0ICJeMy4wLjAiCisgICAgc3RyaW5n
LXdpZHRoICJeMS4wLjEiCisgICAgc3RyaXAtYW5zaSAiXjMuMC4xIgorICAgIHN1cHBvcnRzLWNv
bG9yICJeMC4yLjAiCisgICAgd2lkZS1hbGlnbiAiXjEuMS4wIgorCitnZW5lcmF0ZS1mdW5jdGlv
bkBeMi4wLjA6CisgIHZlcnNpb24gIjIuMC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9nZW5lcmF0ZS1mdW5jdGlvbi8tL2dlbmVyYXRlLWZ1bmN0aW9uLTIuMC4w
LnRneiM2ODU4ZmU3YzA5NjliN2Q0ZTkwOTMzMzc2NDdhYzc5ZjYwZGZiZTc0IgorCitnZW5lcmF0
ZS1vYmplY3QtcHJvcGVydHlAXjEuMS4wOgorICB2ZXJzaW9uICIxLjIuMCIKKyAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZ2VuZXJhdGUtb2JqZWN0LXByb3BlcnR5Ly0v
Z2VuZXJhdGUtb2JqZWN0LXByb3BlcnR5LTEuMi4wLnRneiM5YzBlMWM0MDMwOGNlODA0ZjQ3ODM2
MThiOTM3ZmE4OGY5OWQ1MGQwIgorICBkZXBlbmRlbmNpZXM6CisgICAgaXMtcHJvcGVydHkgIl4x
LjAuMCIKKworZ2V0cGFzc0BeMC4xLjE6CisgIHZlcnNpb24gIjAuMS42IgorICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9nZXRwYXNzLy0vZ2V0cGFzcy0wLjEuNi50Z3oj
MjgzZmZkOWZjMTI1Njg0MDg3NTMxMWMxYjYwZThjNDAxODcxMTBlNiIKKyAgZGVwZW5kZW5jaWVz
OgorICAgIGFzc2VydC1wbHVzICJeMS4wLjAiCisKK2dsb2ItYmFzZUBeMC4zLjA6CisgIHZlcnNp
b24gIjAuMy4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9nbG9i
LWJhc2UvLS9nbG9iLWJhc2UtMC4zLjAudGd6I2RiYjE2NGY2MjIxYjFjMGIxY2NmODJhZWEzMjhi
NDk3ZGYwZWEzYzQiCisgIGRlcGVuZGVuY2llczoKKyAgICBnbG9iLXBhcmVudCAiXjIuMC4wIgor
ICAgIGlzLWdsb2IgIl4yLjAuMCIKKworZ2xvYi1wYXJlbnRAXjIuMC4wOgorICB2ZXJzaW9uICIy
LjAuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZ2xvYi1wYXJl
bnQvLS9nbG9iLXBhcmVudC0yLjAuMC50Z3ojODEzODNkNzJkYjA1NGZjY2NmNTMzNmRhYTkwMmYx
ODJmNmVkYmIyOCIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGlzLWdsb2IgIl4yLjAuMCIKKworZ2xv
YkBeNy4wLjU6CisgIHZlcnNpb24gIjcuMS4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9nbG9iLy0vZ2xvYi03LjEuMS50Z3ojODA1MjExZGYwNGZhYWYxYzYzYTM2
MDAzMDZjZGY1YWRlNTBiMmVjOCIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGZzLnJlYWxwYXRoICJe
MS4wLjAiCisgICAgaW5mbGlnaHQgIl4xLjAuNCIKKyAgICBpbmhlcml0cyAiMiIKKyAgICBtaW5p
bWF0Y2ggIl4zLjAuMiIKKyAgICBvbmNlICJeMS4zLjAiCisgICAgcGF0aC1pcy1hYnNvbHV0ZSAi
XjEuMC4wIgorCitnbG9iYWxzQF45LjAuMDoKKyAgdmVyc2lvbiAiOS4xNC4wIgorICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9nbG9iYWxzLy0vZ2xvYmFscy05LjE0LjAu
dGd6Izg4NTk5MzZhZjAwMzg3NDEyNjMwNTNiMzlkMGU3NmNhMjQxZTQwMzQiCisKK2dyYWNlZnVs
LWZzQF40LjEuMjoKKyAgdmVyc2lvbiAiNC4xLjExIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9ncmFjZWZ1bC1mcy8tL2dyYWNlZnVsLWZzLTQuMS4xMS50Z3ojMGU4
YmRmZTRkMWRkYjg4NTRkNjRlMDRlYTdjMDBlMmEwMjZlNTY1OCIKKworImdyYWNlZnVsLXJlYWRs
aW5rQD49IDEuMC4wIjoKKyAgdmVyc2lvbiAiMS4wLjEiCisgIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL2dyYWNlZnVsLXJlYWRsaW5rLy0vZ3JhY2VmdWwtcmVhZGxpbmst
MS4wLjEudGd6IzRjYWZhZDc2YmM2MmYwMmZhMDM5YjJmOTRlOWEzZGQzYTM5MWE3MjUiCisKK2hh
ci12YWxpZGF0b3JAfjIuMC42OgorICB2ZXJzaW9uICIyLjAuNiIKKyAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vaGFyLXZhbGlkYXRvci8tL2hhci12YWxpZGF0b3ItMi4w
LjYudGd6I2NkY2JjMDgxODgyNjVhZDExOWI2YTVhN2M4YWI3MGVlY2ZiNWQyN2QiCisgIGRlcGVu
ZGVuY2llczoKKyAgICBjaGFsayAiXjEuMS4xIgorICAgIGNvbW1hbmRlciAiXjIuOS4wIgorICAg
IGlzLW15LWpzb24tdmFsaWQgIl4yLjEyLjQiCisgICAgcGlua2llLXByb21pc2UgIl4yLjAuMCIK
KworaGFzLWFuc2lAXjIuMC4wOgorICB2ZXJzaW9uICIyLjAuMCIKKyAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vaGFzLWFuc2kvLS9oYXMtYW5zaS0yLjAuMC50Z3ojMzRm
NTA0OWNlMWVjZGYyYjA2NDlhZjNlZjI0ZTQ1ZWQzNTQxNmQ5MSIKKyAgZGVwZW5kZW5jaWVzOgor
ICAgIGFuc2ktcmVnZXggIl4yLjAuMCIKKworaGFzLWZsYWdAXjEuMC4wOgorICB2ZXJzaW9uICIx
LjAuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaGFzLWZsYWcv
LS9oYXMtZmxhZy0xLjAuMC50Z3ojOWQ5ZTc5MzE2NWNlMDE3YTAwZjAwNDE4YzQzZjk0MmE3YjFk
MTFmYSIKKworaGFzLXVuaWNvZGVAXjIuMC4wOgorICB2ZXJzaW9uICIyLjAuMSIKKyAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaGFzLXVuaWNvZGUvLS9oYXMtdW5pY29k
ZS0yLjAuMS50Z3ojZTBlNmZlNmEyOGNmNTExMzg4NTVlMDg2ZDE2OTFlNzcxZGUyYThiOSIKKwor
aGF3a0B+My4xLjM6CisgIHZlcnNpb24gIjMuMS4zIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9oYXdrLy0vaGF3ay0zLjEuMy50Z3ojMDc4NDQ0YmQ3YzE2NDBiMGZl
NTQwZDJjOWI3M2Q1OTY3OGU4ZTFjNCIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGJvb20gIjIueC54
IgorICAgIGNyeXB0aWxlcyAiMi54LngiCisgICAgaG9layAiMi54LngiCisgICAgc250cCAiMS54
LngiCisKK2hvZWtAMi54Lng6CisgIHZlcnNpb24gIjIuMTYuMyIKKyAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vaG9lay8tL2hvZWstMi4xNi4zLnRneiMyMGJiNzQwM2Qz
Y2VhMzk4ZTkxZGM0NzEwYThmZjFiODI3NGEyNWVkIgorCitob21lLW9yLXRtcEBeMi4wLjA6Cisg
IHZlcnNpb24gIjIuMC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9ob21lLW9yLXRtcC8tL2hvbWUtb3ItdG1wLTIuMC4wLnRneiNlMzZjM2YyZDJjYWU3ZDc0NmE4
NTdlMzhkMThkNWYzMmE3ODgyZGI4IgorICBkZXBlbmRlbmNpZXM6CisgICAgb3MtaG9tZWRpciAi
XjEuMC4wIgorICAgIG9zLXRtcGRpciAiXjEuMC4xIgorCitodHRwLWVycm9yc0B+MS41LjA6Cisg
IHZlcnNpb24gIjEuNS4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9odHRwLWVycm9ycy8tL2h0dHAtZXJyb3JzLTEuNS4xLnRneiM3ODhjMGQyYzFkZTJjODFiOWU2
ZThjMDE4NDNiNmI5N2ViOTIwNzUwIgorICBkZXBlbmRlbmNpZXM6CisgICAgaW5oZXJpdHMgIjIu
MC4zIgorICAgIHNldHByb3RvdHlwZW9mICIxLjAuMiIKKyAgICBzdGF0dXNlcyAiPj0gMS4zLjEg
PCAyIgorCitodHRwLXByb3h5LW1pZGRsZXdhcmVAfjAuMTcuMToKKyAgdmVyc2lvbiAiMC4xNy4z
IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9odHRwLXByb3h5LW1p
ZGRsZXdhcmUvLS9odHRwLXByb3h5LW1pZGRsZXdhcmUtMC4xNy4zLnRneiM5NDAzODIxNDcxNDli
ODU2MDg0ZjU1MzQ3NTJkNWI1YTgxNjhjZDFkIgorICBkZXBlbmRlbmNpZXM6CisgICAgaHR0cC1w
cm94eSAiXjEuMTYuMiIKKyAgICBpcy1nbG9iICJeMy4xLjAiCisgICAgbG9kYXNoICJeNC4xNy4y
IgorICAgIG1pY3JvbWF0Y2ggIl4yLjMuMTEiCisKK2h0dHAtcHJveHlAXjEuMTYuMjoKKyAgdmVy
c2lvbiAiMS4xNi4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9o
dHRwLXByb3h5Ly0vaHR0cC1wcm94eS0xLjE2LjIudGd6IzA2ZGZmMjkyOTUyYmY2NGRiZTg0NzFm
YTlkZjczMDY2ZDRmMzc3NDIiCisgIGRlcGVuZGVuY2llczoKKyAgICBldmVudGVtaXR0ZXIzICIx
LngueCIKKyAgICByZXF1aXJlcy1wb3J0ICIxLngueCIKKworaHR0cC1zaWduYXR1cmVAfjEuMS4w
OgorICB2ZXJzaW9uICIxLjEuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vaHR0cC1zaWduYXR1cmUvLS9odHRwLXNpZ25hdHVyZS0xLjEuMS50Z3ojZGY3MmUyNjcw
NjZjZDBhYzY3ZmI3NmFkZjhlMTM0YThmYmNmOTFiZiIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGFz
c2VydC1wbHVzICJeMC4yLjAiCisgICAganNwcmltICJeMS4yLjIiCisgICAgc3NocGsgIl4xLjcu
MCIKKworaHR0cHMtYnJvd3NlcmlmeUAwLjAuMToKKyAgdmVyc2lvbiAiMC4wLjEiCisgIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2h0dHBzLWJyb3dzZXJpZnkvLS9odHRw
cy1icm93c2VyaWZ5LTAuMC4xLnRneiMzZjkxMzY1Y2FiZTYwYjc3ZWQwZWJiYTI0YjQ1NGUzZTA5
ZDk1YTgyIgorCitpZWVlNzU0QF4xLjEuNDoKKyAgdmVyc2lvbiAiMS4xLjgiCisgIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2llZWU3NTQvLS9pZWVlNzU0LTEuMS44LnRn
eiNiZTMzZDQwYWMxMGVmMTkyNjcwMWY2ZjA4YTJkODZmYmZkMWFkM2U0IgorCitpbmRleG9mQDAu
MC4xOgorICB2ZXJzaW9uICIwLjAuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vaW5kZXhvZi8tL2luZGV4b2YtMC4wLjEudGd6IzgyZGMzMzZkMjMyYjkwNjIxNzlk
MDVhYjMyOTNhNjYwNTlmZDQzNWQiCisKK2luZmVybm8tY29tcG9uZW50QGJldGEzMjoKKyAgdmVy
c2lvbiAiMS4wLjAtYmV0YTMyIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9pbmZlcm5vLWNvbXBvbmVudC8tL2luZmVybm8tY29tcG9uZW50LTEuMC4wLWJldGEzMi50
Z3ojMmJiMGFhYzkzM2M1MDMzYjE4NmQ4MDk4MTZlMTU4ZjU4YTI1OTBlZCIKKyAgZGVwZW5kZW5j
aWVzOgorICAgIGluZmVybm8gIjEuMC4wLWJldGEzMiIKKworaW5mZXJub0AxLjAuMC1iZXRhMzIs
IGluZmVybm9AYmV0YTMyOgorICB2ZXJzaW9uICIxLjAuMC1iZXRhMzIiCisgIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2luZmVybm8vLS9pbmZlcm5vLTEuMC4wLWJldGEz
Mi50Z3ojYmQyMTZhNTExNzI4MGRhNGExNWViY2M0YjRlMWZhZjM2MDNhZmMwZCIKKworaW5mbGln
aHRAXjEuMC40OgorICB2ZXJzaW9uICIxLjAuNiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vaW5mbGlnaHQvLS9pbmZsaWdodC0xLjAuNi50Z3ojNDliZDYzMzFkN2Qw
MmQwYzA5YmM5MTBhMTA3NWJhODE2NWI1NmRmOSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIG9uY2Ug
Il4xLjMuMCIKKyAgICB3cmFwcHkgIjEiCisKK2luaGVyaXRzQDIsIGluaGVyaXRzQDIuMC4zLCBp
bmhlcml0c0BeMi4wLjEsIGluaGVyaXRzQH4yLjAuMCwgaW5oZXJpdHNAfjIuMC4xOgorICB2ZXJz
aW9uICIyLjAuMyIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaW5o
ZXJpdHMvLS9pbmhlcml0cy0yLjAuMy50Z3ojNjMzYzJjODNlM2RhNDJhNTAyZjUyNDY2MDIyNDgw
ZjQyMDgyNjFkZSIKKworaW5oZXJpdHNAMi4wLjE6CisgIHZlcnNpb24gIjIuMC4xIgorICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pbmhlcml0cy8tL2luaGVyaXRzLTIu
MC4xLnRneiNiMTdkMDhkMzI2YjQ0MjNlNTY4ZWZmNzE5ZjkxYjBiMWNiZGY2OWYxIgorCitpbmlA
fjEuMy4wOgorICB2ZXJzaW9uICIxLjMuNCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vaW5pLy0vaW5pLTEuMy40LnRneiMwNTM3Y2I3OWRhZjU5YjU5YTFhNTE3ZGZm
NzA2Yzg2ZWMwMzkxNjJlIgorCitpbnRlcnByZXRAXjAuNi40OgorICB2ZXJzaW9uICIwLjYuNiIK
KyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaW50ZXJwcmV0Ly0vaW50
ZXJwcmV0LTAuNi42LnRneiNmZWNkN2ExOGU3Y2U1Y2E2YWJmYjk1M2UxZjg2MjEzYTQ5ZjE2MjVi
IgorCitpbnZhcmlhbnRAXjIuMi4wOgorICB2ZXJzaW9uICIyLjIuMiIKKyAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaW52YXJpYW50Ly0vaW52YXJpYW50LTIuMi4yLnRn
eiM5ZTFmNTZhYzBhY2RiNmJmMzAzMzA2ZjMzOGJlM2IyMDRhZTYwMzYwIgorICBkZXBlbmRlbmNp
ZXM6CisgICAgbG9vc2UtZW52aWZ5ICJeMS4wLjAiCisKK2lwYWRkci5qc0AxLjEuMToKKyAgdmVy
c2lvbiAiMS4xLjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lw
YWRkci5qcy8tL2lwYWRkci5qcy0xLjEuMS50Z3ojYzc5MWQ5NWY1MmIyOWMxMjQ3ZDVkZjgwYWRh
MzliOGE3MzY0NzIzMCIKKworaXMtYmluYXJ5LXBhdGhAXjEuMC4wOgorICB2ZXJzaW9uICIxLjAu
MSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXMtYmluYXJ5LXBh
dGgvLS9pcy1iaW5hcnktcGF0aC0xLjAuMS50Z3ojNzVmMTY2NDJiNDgwZjE4N2E3MTFjODE0MTYx
ZmQzYTRhNzY1NTg5OCIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGJpbmFyeS1leHRlbnNpb25zICJe
MS4wLjAiCisKK2lzLWJ1ZmZlckBeMS4wLjI6CisgIHZlcnNpb24gIjEuMS40IgorICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy1idWZmZXIvLS9pcy1idWZmZXItMS4x
LjQudGd6I2NmYzg2Y2NkNWRjNWE1MmZhODA0ODkxMTFjNjkyMGM0NTdlMmQ5OGIiCisKK2lzLWRv
dGZpbGVAXjEuMC4wOgorICB2ZXJzaW9uICIxLjAuMiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vaXMtZG90ZmlsZS8tL2lzLWRvdGZpbGUtMS4wLjIudGd6IzJjMTMy
MzgzZjM5MTk5ZjhlZGMyNjhjYTAxYjliMDA3ZDIwNWNjNGQiCisKK2lzLWVxdWFsLXNoYWxsb3dA
XjAuMS4zOgorICB2ZXJzaW9uICIwLjEuMyIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vaXMtZXF1YWwtc2hhbGxvdy8tL2lzLWVxdWFsLXNoYWxsb3ctMC4xLjMudGd6
IzIyMzgwOThmYzIyMWRlMGJjZmE1ZDllYWM0YzQ1ZDYzOGFhMWM1MzQiCisgIGRlcGVuZGVuY2ll
czoKKyAgICBpcy1wcmltaXRpdmUgIl4yLjAuMCIKKworaXMtZXh0ZW5kYWJsZUBeMC4xLjE6Cisg
IHZlcnNpb24gIjAuMS4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9pcy1leHRlbmRhYmxlLy0vaXMtZXh0ZW5kYWJsZS0wLjEuMS50Z3ojNjJiMTEwZTI4OWE0NzE0
MThlM2VjMzZhNjE3ZDQ3MmUzMDFkZmM4OSIKKworaXMtZXh0Z2xvYkBeMS4wLjA6CisgIHZlcnNp
b24gIjEuMC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy1l
eHRnbG9iLy0vaXMtZXh0Z2xvYi0xLjAuMC50Z3ojYWM0NjgxNzdjNDk0MzQwNWEwOTJmYzhmMjk3
NjBjNmZmYzYyMDZjMCIKKworaXMtZXh0Z2xvYkBeMi4xLjA6CisgIHZlcnNpb24gIjIuMS4wIgor
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy1leHRnbG9iLy0vaXMt
ZXh0Z2xvYi0yLjEuMC50Z3ojMzM0MTFhNDgyYjA0NmJmOTVlNmIwY2IyN2VlMjcxMWFmNGNmMTVh
ZCIKKworaXMtZmluaXRlQF4xLjAuMDoKKyAgdmVyc2lvbiAiMS4wLjIiCisgIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lzLWZpbml0ZS8tL2lzLWZpbml0ZS0xLjAuMi50
Z3ojY2M2Njc3Njk1NjAyYmU1NTBlZjExZThiNGFhNjMwNTM0MmI2ZDBhYSIKKyAgZGVwZW5kZW5j
aWVzOgorICAgIG51bWJlci1pcy1uYW4gIl4xLjAuMCIKKworaXMtZnVsbHdpZHRoLWNvZGUtcG9p
bnRAXjEuMC4wOgorICB2ZXJzaW9uICIxLjAuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vaXMtZnVsbHdpZHRoLWNvZGUtcG9pbnQvLS9pcy1mdWxsd2lkdGgtY29k
ZS1wb2ludC0xLjAuMC50Z3ojZWY5ZTMxMzg2ZjAzMWE3ZjBkNjQzYWY4MmZkZTUwYzQ1N2VmMDBj
YiIKKyAgZGVwZW5kZW5jaWVzOgorICAgIG51bWJlci1pcy1uYW4gIl4xLjAuMCIKKworaXMtZ2xv
YkBeMi4wLjAsIGlzLWdsb2JAXjIuMC4xOgorICB2ZXJzaW9uICIyLjAuMSIKKyAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXMtZ2xvYi8tL2lzLWdsb2ItMi4wLjEudGd6
I2QwOTZmOTI2YTNkZWQ1NjAwZjNmZGZkOTExOThjYjA4ODhjMmQ4NjMiCisgIGRlcGVuZGVuY2ll
czoKKyAgICBpcy1leHRnbG9iICJeMS4wLjAiCisKK2lzLWdsb2JAXjMuMS4wOgorICB2ZXJzaW9u
ICIzLjEuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXMtZ2xv
Yi8tL2lzLWdsb2ItMy4xLjAudGd6IzdiYTVhZTI0MjE3ODA0YWM3MDcwN2I5NjkyMjU2NzQ4NmNj
M2U4NGEiCisgIGRlcGVuZGVuY2llczoKKyAgICBpcy1leHRnbG9iICJeMi4xLjAiCisKK2lzLW15
LWpzb24tdmFsaWRAXjIuMTIuNDoKKyAgdmVyc2lvbiAiMi4xNS4wIgorICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy1teS1qc29uLXZhbGlkLy0vaXMtbXktanNvbi12
YWxpZC0yLjE1LjAudGd6IzkzNmVkZGEzY2EzYzIxMWZkOThmM2IyZDNlMDhkYTQzZjdiMjkxNWIi
CisgIGRlcGVuZGVuY2llczoKKyAgICBnZW5lcmF0ZS1mdW5jdGlvbiAiXjIuMC4wIgorICAgIGdl
bmVyYXRlLW9iamVjdC1wcm9wZXJ0eSAiXjEuMS4wIgorICAgIGpzb25wb2ludGVyICJeNC4wLjAi
CisgICAgeHRlbmQgIl40LjAuMCIKKworaXMtbnVtYmVyQF4yLjAuMiwgaXMtbnVtYmVyQF4yLjEu
MDoKKyAgdmVyc2lvbiAiMi4xLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w
a2cuY29tL2lzLW51bWJlci8tL2lzLW51bWJlci0yLjEuMC50Z3ojMDFmY2JiYjM5MzQ2M2E1NDhm
MmY0NjZjY2UxNmRlY2U0OWRiOTA4ZiIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGtpbmQtb2YgIl4z
LjAuMiIKKworaXMtcG9zaXgtYnJhY2tldEBeMC4xLjA6CisgIHZlcnNpb24gIjAuMS4xIgorICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy1wb3NpeC1icmFja2V0Ly0v
aXMtcG9zaXgtYnJhY2tldC0wLjEuMS50Z3ojMzMzNGRjNzk3NzQzNjhlOTJmMDE2ZTZmYmMwYTg4
ZjVjZDZlNmJjNCIKKworaXMtcHJpbWl0aXZlQF4yLjAuMDoKKyAgdmVyc2lvbiAiMi4wLjAiCisg
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lzLXByaW1pdGl2ZS8tL2lz
LXByaW1pdGl2ZS0yLjAuMC50Z3ojMjA3YmFiOTE2Mzg0OTljMDdiMmFkZjI0MGE0MWE4NzIxMDAz
NDU3NSIKKworaXMtcHJvcGVydHlAXjEuMC4wOgorICB2ZXJzaW9uICIxLjAuMiIKKyAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXMtcHJvcGVydHkvLS9pcy1wcm9wZXJ0
eS0xLjAuMi50Z3ojNTdmZTFjNGU0ODQ3NGVkZDY1YjA5OTExZjI2YjFjZDQwOTVkZGE4NCIKKwor
aXMtdHlwZWRhcnJheUB+MS4wLjA6CisgIHZlcnNpb24gIjEuMC4wIgorICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy10eXBlZGFycmF5Ly0vaXMtdHlwZWRhcnJheS0x
LjAuMC50Z3ojZTQ3OWM4MDg1OGRmMGMxYjExZGRkYTY5NDBmOTYwMTFmY2RhNGE5YSIKKworaXNh
cnJheUAxLjAuMCwgaXNhcnJheUBeMS4wLjAsIGlzYXJyYXlAfjEuMC4wOgorICB2ZXJzaW9uICIx
LjAuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXNhcnJheS8t
L2lzYXJyYXktMS4wLjAudGd6I2JiOTM1ZDQ4NTgyY2JhMTY4YzA2ODM0OTU3YTU0YTNlMDcxMjRm
MTEiCisKK2lzb2JqZWN0QF4yLjAuMDoKKyAgdmVyc2lvbiAiMi4xLjAiCisgIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lzb2JqZWN0Ly0vaXNvYmplY3QtMi4xLjAudGd6
I2YwNjU1NjEwOTZhM2YxZGEyZWY0NjI3MmY4MTVjODQwZDg3ZTBjODkiCisgIGRlcGVuZGVuY2ll
czoKKyAgICBpc2FycmF5ICIxLjAuMCIKKworaXNzdHJlYW1AfjAuMS4yOgorICB2ZXJzaW9uICIw
LjEuMiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXNzdHJlYW0v
LS9pc3N0cmVhbS0wLjEuMi50Z3ojNDdlNjNmN2FmNTVhZmE2ZjkyZTE1MDBlNjkwZWI4Yjg1Mjlj
MDk5YSIKKworam9kaWQyNTUxOUBeMS4wLjA6CisgIHZlcnNpb24gIjEuMC4yIgorICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9qb2RpZDI1NTE5Ly0vam9kaWQyNTUxOS0x
LjAuMi50Z3ojMDZkNDkxMjI1NTA5MzQxOTQ3N2Q0MjU2MzM2MDZlMGU5MDc4Mjk2NyIKKyAgZGVw
ZW5kZW5jaWVzOgorICAgIGpzYm4gIn4wLjEuMCIKKworanMtdG9rZW5zQF4yLjAuMDoKKyAgdmVy
c2lvbiAiMi4wLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2pz
LXRva2Vucy8tL2pzLXRva2Vucy0yLjAuMC50Z3ojNzk5MDNmNTU2M2VlNzc4Y2MxMTYyZTZkY2Yx
YTAwMjdjOTdmOWNiNSIKKworanNibkB+MC4xLjA6CisgIHZlcnNpb24gIjAuMS4wIgorICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9qc2JuLy0vanNibi0wLjEuMC50Z3oj
NjUwOTg3ZGEwZGQ3NGY0ZWJmNWExMTM3N2EyYWEyZDI3M2U5N2RmZCIKKworanNlc2NAXjEuMy4w
OgorICB2ZXJzaW9uICIxLjMuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vanNlc2MvLS9qc2VzYy0xLjMuMC50Z3ojNDZjM2ZlYzhjMTg5MmIxMmIwODMzZGI5YmM3
NjIyMTc2ZGJhYjM0YiIKKworanNlc2NAfjAuNS4wOgorICB2ZXJzaW9uICIwLjUuMCIKKyAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vanNlc2MvLS9qc2VzYy0wLjUuMC50
Z3ojZTdkZWU2NmUzNWQ2ZmMxNmY3MTBmZTkxZDVjZjY5ZjcwZjA4OTExZCIKKworanNvbi1zY2hl
bWFAMC4yLjM6CisgIHZlcnNpb24gIjAuMi4zIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9qc29uLXNjaGVtYS8tL2pzb24tc2NoZW1hLTAuMi4zLnRneiNiNDgwYzg5
MmU1OWEyZjA1OTU0Y2U3MjdiZDNmMmE0ZTg4MmY5ZTEzIgorCitqc29uLXN0cmluZ2lmeS1zYWZl
QH41LjAuMToKKyAgdmVyc2lvbiAiNS4wLjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL2pzb24tc3RyaW5naWZ5LXNhZmUvLS9qc29uLXN0cmluZ2lmeS1zYWZlLTUu
MC4xLnRneiMxMjk2YTJkNThmZDQ1ZjE5YTBmNmNlMDFkNjU3MDFlMmM3MzViNmViIgorCitqc29u
M0BeMy4zLjI6CisgIHZlcnNpb24gIjMuMy4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9qc29uMy8tL2pzb24zLTMuMy4yLnRneiMzYzA0MzQ3NDNkZjkzZTJmNWM0
MmFlZTdiMTliY2I0ODM1NzVmNGUxIgorCitqc29uNUBeMC41LjA6CisgIHZlcnNpb24gIjAuNS4x
IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9qc29uNS8tL2pzb241
LTAuNS4xLnRneiMxZWFkZTdhY2MwMTIwMzRhZDg0ZTIzOTY3NjdlYWQ5ZmE1NDk1ODIxIgorCitq
c29ucG9pbnRlckBeNC4wLjA6CisgIHZlcnNpb24gIjQuMC4wIgorICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9qc29ucG9pbnRlci8tL2pzb25wb2ludGVyLTQuMC4wLnRn
eiM2NjYxZTE2MWQyZmM0NDVmMTlmOTg0MzAyMzEzNDM3MjJlMWZjYmQ1IgorCitqc3ByaW1AXjEu
Mi4yOgorICB2ZXJzaW9uICIxLjMuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vanNwcmltLy0vanNwcmltLTEuMy4xLnRneiMyYTcyNTZmNzA0MTJhMjllZTM2NzBh
YWNhNjI1OTk0YzRkY2ZmMjUyIgorICBkZXBlbmRlbmNpZXM6CisgICAgZXh0c3ByaW50ZiAiMS4w
LjIiCisgICAganNvbi1zY2hlbWEgIjAuMi4zIgorICAgIHZlcnJvciAiMS4zLjYiCisKK2tpbmQt
b2ZAXjMuMC4yOgorICB2ZXJzaW9uICIzLjEuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20va2luZC1vZi8tL2tpbmQtb2YtMy4xLjAudGd6IzQ3NWQ2OThhNWU0OWZm
NWU1M2QxNGUzZTczMjQyOWRjOGJmNGNmNDciCisgIGRlcGVuZGVuY2llczoKKyAgICBpcy1idWZm
ZXIgIl4xLjAuMiIKKworbGF6eS1jYWNoZUBeMS4wLjM6CisgIHZlcnNpb24gIjEuMC40IgorICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9sYXp5LWNhY2hlLy0vbGF6eS1j
YWNoZS0xLjAuNC50Z3ojYTFkNzhmYzNhNTA0NzRjYjgwODQ1ZDNiM2I2ZTFkYTQ5YTQ0NmU4ZSIK
KworbG9hZGVyLXV0aWxzQF4wLjIuMTE6CisgIHZlcnNpb24gIjAuMi4xNiIKKyAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbG9hZGVyLXV0aWxzLy0vbG9hZGVyLXV0aWxz
LTAuMi4xNi50Z3ojZjA4NjMyMDY2ZWQ4MjgyODM1ZGZmODhkZmI1MjcwNDc2NWFkZWU2ZCIKKyAg
ZGVwZW5kZW5jaWVzOgorICAgIGJpZy5qcyAiXjMuMS4zIgorICAgIGVtb2ppcy1saXN0ICJeMi4w
LjAiCisgICAganNvbjUgIl4wLjUuMCIKKyAgICBvYmplY3QtYXNzaWduICJeNC4wLjEiCisKK2xv
ZGFzaEBeNC4xNy4yLCBsb2Rhc2hAXjQuMi4wOgorICB2ZXJzaW9uICI0LjE3LjIiCisgIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2xvZGFzaC8tL2xvZGFzaC00LjE3LjIu
dGd6IzM0YTMwNTViYWJlMDRjZTQyNDY3YjYwN2Q3MDAwNzJjN2ZmNmJmNDIiCisKK2xvbmdlc3RA
XjEuMC4xOgorICB2ZXJzaW9uICIxLjAuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vbG9uZ2VzdC8tL2xvbmdlc3QtMS4wLjEudGd6IzMwYTBiMmRhMzhmNzM3NzBl
ODI5NGEwZDIyZTY2MjVlZDc3ZDAwOTciCisKK2xvb3NlLWVudmlmeUBeMS4wLjA6CisgIHZlcnNp
b24gIjEuMy4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9sb29z
ZS1lbnZpZnkvLS9sb29zZS1lbnZpZnktMS4zLjAudGd6IzZiMjYyNDhjNDJmNmQ0ZmE0YjBkODU0
MmY3OGVkZmNkZTM1NjQyYTgiCisgIGRlcGVuZGVuY2llczoKKyAgICBqcy10b2tlbnMgIl4yLjAu
MCIKKworbWVkaWEtdHlwZXJAMC4zLjA6CisgIHZlcnNpb24gIjAuMy4wIgorICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9tZWRpYS10eXBlci8tL21lZGlhLXR5cGVyLTAu
My4wLnRneiM4NzEwZDdhZjBhYTYyNmY4ZmZmYTFjZTAwMTY4NTQ1MjYzMjU1NzQ4IgorCittZW1v
cnktZnNAXjAuMi4wOgorICB2ZXJzaW9uICIwLjIuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vbWVtb3J5LWZzLy0vbWVtb3J5LWZzLTAuMi4wLnRneiNmMmJiMjUz
NjhiYzEyMWUzOTFjMjUyMGRlOTI5NjljYWVlMGEwMjkwIgorCittZW1vcnktZnNAfjAuMy4wOgor
ICB2ZXJzaW9uICIwLjMuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vbWVtb3J5LWZzLy0vbWVtb3J5LWZzLTAuMy4wLnRneiM3YmNjNmI2MjllM2E0M2U4NzFkN2Uy
OWFjYTZhZThhN2YxNWNiYjIwIgorICBkZXBlbmRlbmNpZXM6CisgICAgZXJybm8gIl4wLjEuMyIK
KyAgICByZWFkYWJsZS1zdHJlYW0gIl4yLjAuMSIKKworbWVyZ2UtZGVzY3JpcHRvcnNAMS4wLjE6
CisgIHZlcnNpb24gIjEuMC4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9tZXJnZS1kZXNjcmlwdG9ycy8tL21lcmdlLWRlc2NyaXB0b3JzLTEuMC4xLnRneiNiMDBh
YWE1NTZkZDhiNDQ1NjgxNTBlYzlkMWI5NTNmM2Y5MGNiYjYxIgorCittZXRob2RzQH4xLjEuMjoK
KyAgdmVyc2lvbiAiMS4xLjIiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL21ldGhvZHMvLS9tZXRob2RzLTEuMS4yLnRneiM1NTI5YTRkNjc2NTQxMzRlZGNjNTI2NjY1
NjgzNWIwZjg1MWFmY2VlIgorCittaWNyb21hdGNoQF4yLjEuNSwgbWljcm9tYXRjaEBeMi4zLjEx
OgorICB2ZXJzaW9uICIyLjMuMTEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w
a2cuY29tL21pY3JvbWF0Y2gvLS9taWNyb21hdGNoLTIuMy4xMS50Z3ojODY2NzdjOTdkMTcyMGIz
NjM0MzFkMDRkMGQxNTI5M2JkMzhjMTU2NSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGFyci1kaWZm
ICJeMi4wLjAiCisgICAgYXJyYXktdW5pcXVlICJeMC4yLjEiCisgICAgYnJhY2VzICJeMS44LjIi
CisgICAgZXhwYW5kLWJyYWNrZXRzICJeMC4xLjQiCisgICAgZXh0Z2xvYiAiXjAuMy4xIgorICAg
IGZpbGVuYW1lLXJlZ2V4ICJeMi4wLjAiCisgICAgaXMtZXh0Z2xvYiAiXjEuMC4wIgorICAgIGlz
LWdsb2IgIl4yLjAuMSIKKyAgICBraW5kLW9mICJeMy4wLjIiCisgICAgbm9ybWFsaXplLXBhdGgg
Il4yLjAuMSIKKyAgICBvYmplY3Qub21pdCAiXjIuMC4wIgorICAgIHBhcnNlLWdsb2IgIl4zLjAu
NCIKKyAgICByZWdleC1jYWNoZSAiXjAuNC4yIgorCisibWltZS1kYkA+PSAxLjI0LjAgPCAyIiwg
bWltZS1kYkB+MS4yNS4wOgorICB2ZXJzaW9uICIxLjI1LjAiCisgIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL21pbWUtZGIvLS9taW1lLWRiLTEuMjUuMC50Z3ojYzE4ZGJk
N2M3M2E1ZGJmNmY0NGEwMjRkYzBkMTY1YTFlN2IxYzM5MiIKKworbWltZS10eXBlc0BeMi4xLjEy
LCBtaW1lLXR5cGVzQH4yLjEuMTEsIG1pbWUtdHlwZXNAfjIuMS4xMywgbWltZS10eXBlc0B+Mi4x
Ljc6CisgIHZlcnNpb24gIjIuMS4xMyIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vbWltZS10eXBlcy8tL21pbWUtdHlwZXMtMi4xLjEzLnRneiNlMDdhYWE5YzZjNmI5
YTdjYTMwMTJjNjkwMDNhZDI1YTM5ZTkyYTg4IgorICBkZXBlbmRlbmNpZXM6CisgICAgbWltZS1k
YiAifjEuMjUuMCIKKworbWltZUAxLjMuNCwgbWltZUBeMS4zLjQ6CisgIHZlcnNpb24gIjEuMy40
IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9taW1lLy0vbWltZS0x
LjMuNC50Z3ojMTE1ZjllM2I2YjNkYWYyOTU5OTgzY2IzOGYxNDlhMmQ0MGViNWQ1MyIKKworbWlu
aW1hdGNoQF4zLjAuMCwgbWluaW1hdGNoQF4zLjAuMjoKKyAgdmVyc2lvbiAiMy4wLjMiCisgIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL21pbmltYXRjaC8tL21pbmltYXRj
aC0zLjAuMy50Z3ojMmE0ZTQwOTBiOTZiMmRiMDZhOWQ3ZGYwMTA1NWE2MmE3N2M5Yjc3NCIKKyAg
ZGVwZW5kZW5jaWVzOgorICAgIGJyYWNlLWV4cGFuc2lvbiAiXjEuMC4wIgorCittaW5pbWlzdEAw
LjAuODoKKyAgdmVyc2lvbiAiMC4wLjgiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL21pbmltaXN0Ly0vbWluaW1pc3QtMC4wLjgudGd6Izg1N2ZjYWJmYzMzOTdkMjYy
NWI4MjI4MjYyZTg2YWE3YTAxMWIwNWQiCisKK21pbmltaXN0QF4xLjIuMDoKKyAgdmVyc2lvbiAi
MS4yLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL21pbmltaXN0
Ly0vbWluaW1pc3QtMS4yLjAudGd6I2EzNTAwOGIyMGY0MTM4M2VlYzFmYjkxNGY0Y2Q1ZGY3OWEy
NjQyODQiCisKK21pbmltaXN0QH4wLjAuMToKKyAgdmVyc2lvbiAiMC4wLjEwIgorICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9taW5pbWlzdC8tL21pbmltaXN0LTAuMC4x
MC50Z3ojZGUzZjk4NTQzZGJmOTYwODJiZTQ4YWQxYTBjN2NkYTgzNjMwMWRjZiIKKworIm1rZGly
cEA+PTAuNSAwIiwgbWtkaXJwQF4wLjUuMSwgbWtkaXJwQH4wLjUuMCwgbWtkaXJwQH4wLjUuMToK
KyAgdmVyc2lvbiAiMC41LjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL21rZGlycC8tL21rZGlycC0wLjUuMS50Z3ojMzAwNTc0MzhlYWM2Y2Y3ZjhjNDc2N2YzODY0
OGQ2Njk3ZDc1YzkwMyIKKyAgZGVwZW5kZW5jaWVzOgorICAgIG1pbmltaXN0ICIwLjAuOCIKKwor
bW9kaWZ5LWJhYmVsLXByZXNldEBeMS4wLjA6CisgIHZlcnNpb24gIjEuMi4wIgorICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9tb2RpZnktYmFiZWwtcHJlc2V0Ly0vbW9k
aWZ5LWJhYmVsLXByZXNldC0xLjIuMC50Z3ojZDFiN2M4YzI0ODk2ZTE5ZGJjNDg0NzM0NzIxM2U2
YjcxNDRkMWJjNyIKKyAgZGVwZW5kZW5jaWVzOgorICAgIHJlcXVpcmUtcmVsYXRpdmUgIl4wLjgu
NyIKKworbXNAMC43LjE6CisgIHZlcnNpb24gIjAuNy4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9tcy8tL21zLTAuNy4xLnRneiM5Y2QxM2MwM2FkYmZmMjViNjVl
ZmZkZTdjZTg2NGVlOTUyMDE3MDk4IgorCittc0AwLjcuMjoKKyAgdmVyc2lvbiAiMC43LjIiCisg
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL21zLy0vbXMtMC43LjIudGd6
I2FlMjVjZjI1MTJiMzg4NWExZDk1ZDdmMDM3ODY4ZDg0MzExMjQ3NjUiCisKK25hbkBeMi4zLjA6
CisgIHZlcnNpb24gIjIuNC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9uYW4vLS9uYW4tMi40LjAudGd6I2ZiM2M1OWQ0NWZlNGVmZmUyMTVmMGI4OTBmOGFkZjZl
YjMyZDIyMzIiCisKK25lZ290aWF0b3JAMC42LjE6CisgIHZlcnNpb24gIjAuNi4xIgorICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9uZWdvdGlhdG9yLy0vbmVnb3RpYXRv
ci0wLjYuMS50Z3ojMmIzMjcxODRlODk5MjEwMTE3N2IyODU2M2ZiNWU3MTAyYWNkMGNhOSIKKwor
bm9kZS1saWJzLWJyb3dzZXJAXjAuNy4wOgorICB2ZXJzaW9uICIwLjcuMCIKKyAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbm9kZS1saWJzLWJyb3dzZXIvLS9ub2RlLWxp
YnMtYnJvd3Nlci0wLjcuMC50Z3ojM2UyNzJjMDgxOWUzMDg5MzVlMjY2NzQ0MDhkN2FmMGUxNDkx
YjgzYiIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGFzc2VydCAiXjEuMS4xIgorICAgIGJyb3dzZXJp
ZnktemxpYiAiXjAuMS40IgorICAgIGJ1ZmZlciAiXjQuOS4wIgorICAgIGNvbnNvbGUtYnJvd3Nl
cmlmeSAiXjEuMS4wIgorICAgIGNvbnN0YW50cy1icm93c2VyaWZ5ICJeMS4wLjAiCisgICAgY3J5
cHRvLWJyb3dzZXJpZnkgIjMuMy4wIgorICAgIGRvbWFpbi1icm93c2VyICJeMS4xLjEiCisgICAg
ZXZlbnRzICJeMS4wLjAiCisgICAgaHR0cHMtYnJvd3NlcmlmeSAiMC4wLjEiCisgICAgb3MtYnJv
d3NlcmlmeSAiXjAuMi4wIgorICAgIHBhdGgtYnJvd3NlcmlmeSAiMC4wLjAiCisgICAgcHJvY2Vz
cyAiXjAuMTEuMCIKKyAgICBwdW55Y29kZSAiXjEuMi40IgorICAgIHF1ZXJ5c3RyaW5nLWVzMyAi
XjAuMi4wIgorICAgIHJlYWRhYmxlLXN0cmVhbSAiXjIuMC41IgorICAgIHN0cmVhbS1icm93c2Vy
aWZ5ICJeMi4wLjEiCisgICAgc3RyZWFtLWh0dHAgIl4yLjMuMSIKKyAgICBzdHJpbmdfZGVjb2Rl
ciAiXjAuMTAuMjUiCisgICAgdGltZXJzLWJyb3dzZXJpZnkgIl4yLjAuMiIKKyAgICB0dHktYnJv
d3NlcmlmeSAiMC4wLjAiCisgICAgdXJsICJeMC4xMS4wIgorICAgIHV0aWwgIl4wLjEwLjMiCisg
ICAgdm0tYnJvd3NlcmlmeSAiMC4wLjQiCisKK25vZGUtcHJlLWd5cEBeMC42LjI5OgorICB2ZXJz
aW9uICIwLjYuMzIiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL25v
ZGUtcHJlLWd5cC8tL25vZGUtcHJlLWd5cC0wLjYuMzIudGd6I2ZjNDUyYjM3NmU3MzE5YjNkMjU1
ZjVmMzQ4NTNlZjZmZDhmZTFmZDUiCisgIGRlcGVuZGVuY2llczoKKyAgICBta2RpcnAgIn4wLjUu
MSIKKyAgICBub3B0ICJ+My4wLjYiCisgICAgbnBtbG9nICJeNC4wLjEiCisgICAgcmMgIn4xLjEu
NiIKKyAgICByZXF1ZXN0ICJeMi43OS4wIgorICAgIHJpbXJhZiAifjIuNS40IgorICAgIHNlbXZl
ciAifjUuMy4wIgorICAgIHRhciAifjIuMi4xIgorICAgIHRhci1wYWNrICJ+My4zLjAiCisKK25v
cHRAfjMuMC42OgorICB2ZXJzaW9uICIzLjAuNiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vbm9wdC8tL25vcHQtMy4wLjYudGd6I2M2NDY1ZGJmMDhhYmNkNGRiMzU5
MzE3Zjc5YWM2OGE2NDZiMjhmZjkiCisgIGRlcGVuZGVuY2llczoKKyAgICBhYmJyZXYgIjEiCisK
K25vcm1hbGl6ZS1wYXRoQF4yLjAuMToKKyAgdmVyc2lvbiAiMi4wLjEiCisgIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL25vcm1hbGl6ZS1wYXRoLy0vbm9ybWFsaXplLXBh
dGgtMi4wLjEudGd6IzQ3ODg2YWMxNjYyNzYwZDQyNjFiN2Q5NzlkMjQxNzA5ZDNjZTNmN2EiCisK
K25wbWxvZ0BeNC4wLjE6CisgIHZlcnNpb24gIjQuMC4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9ucG1sb2cvLS9ucG1sb2ctNC4wLjEudGd6I2QxNGY1MDNiNGNk
Nzk3MTAzNzU1NTMwMDRiYTk2ZTY2NjJmYmMwYjgiCisgIGRlcGVuZGVuY2llczoKKyAgICBhcmUt
d2UtdGhlcmUteWV0ICJ+MS4xLjIiCisgICAgY29uc29sZS1jb250cm9sLXN0cmluZ3MgIn4xLjEu
MCIKKyAgICBnYXVnZSAifjIuNy4xIgorICAgIHNldC1ibG9ja2luZyAifjIuMC4wIgorCitudW1i
ZXItaXMtbmFuQF4xLjAuMDoKKyAgdmVyc2lvbiAiMS4wLjEiCisgIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL251bWJlci1pcy1uYW4vLS9udW1iZXItaXMtbmFuLTEuMC4x
LnRneiMwOTdiNjAyYjUzNDIyYTUyMmMxYWZiODc5MDMxODMzNjk0MWEwMTFkIgorCitvYXV0aC1z
aWduQH4wLjguMToKKyAgdmVyc2lvbiAiMC44LjIiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL29hdXRoLXNpZ24vLS9vYXV0aC1zaWduLTAuOC4yLnRneiM0NmE2YWI3
ZjBhZWFkOGRlYWU5ZWMwNTY1NzgwYjdkNGVmZWI5ZDQzIgorCitvYmplY3QtYXNzaWduQF40LjAu
MSwgb2JqZWN0LWFzc2lnbkBeNC4xLjA6CisgIHZlcnNpb24gIjQuMS4wIgorICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9vYmplY3QtYXNzaWduLy0vb2JqZWN0LWFzc2ln
bi00LjEuMC50Z3ojN2EzYjNkMGU5ODA2M2Q0M2Y0YzAzZjJlOGFlNmNkNTFhODY4ODNhMCIKKwor
b2JqZWN0Lm9taXRAXjIuMC4wOgorICB2ZXJzaW9uICIyLjAuMSIKKyAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vb2JqZWN0Lm9taXQvLS9vYmplY3Qub21pdC0yLjAuMS50
Z3ojMWE5Yzc0NDgyOWYzOWRiYjg1OGM3NmNhMzU3OWFlMmE1NGViZDFmYSIKKyAgZGVwZW5kZW5j
aWVzOgorICAgIGZvci1vd24gIl4wLjEuNCIKKyAgICBpcy1leHRlbmRhYmxlICJeMC4xLjEiCisK
K29uLWZpbmlzaGVkQH4yLjMuMDoKKyAgdmVyc2lvbiAiMi4zLjAiCisgIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL29uLWZpbmlzaGVkLy0vb24tZmluaXNoZWQtMi4zLjAu
dGd6IzIwZjEzMzY0ODFiMDgzY2Q3NTMzNzk5MmExNjk3MWFhMmQ5MDY5NDciCisgIGRlcGVuZGVu
Y2llczoKKyAgICBlZS1maXJzdCAiMS4xLjEiCisKK29uLWhlYWRlcnNAfjEuMC4xOgorICB2ZXJz
aW9uICIxLjAuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vb24t
aGVhZGVycy8tL29uLWhlYWRlcnMtMS4wLjEudGd6IzkyOGY1ZDBmNDcwZDQ5MzQyNjUxZWE2Nzk0
YjA4NTdjMTAwNjkzZjciCisKK29uY2VAXjEuMy4wLCBvbmNlQH4xLjMuMzoKKyAgdmVyc2lvbiAi
MS4zLjMiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL29uY2UvLS9v
bmNlLTEuMy4zLnRneiNiMmUyNjE1NTdjZTRjMzE0ZWM4MzA0ZjNmYTgyNjYzZTQyOTdjYTIwIgor
ICBkZXBlbmRlbmNpZXM6CisgICAgd3JhcHB5ICIxIgorCitvcGVuQDAuMC41OgorICB2ZXJzaW9u
ICIwLjAuNSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vb3Blbi8t
L29wZW4tMC4wLjUudGd6IzQyYzNlMThlYzk1NDY2YjZiZjBkYzQyZjNhMjk0NWMzZjBjYWQ4ZmMi
CisKK29wdGltaXN0QH4wLjYuMCwgb3B0aW1pc3RAfjAuNi4xOgorICB2ZXJzaW9uICIwLjYuMSIK
KyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vb3B0aW1pc3QvLS9vcHRp
bWlzdC0wLjYuMS50Z3ojZGEzZWE3NDY4NmZhMjFhMTlhMTExYzMyNmU5MGViMTVhMDE5NjY4NiIK
KyAgZGVwZW5kZW5jaWVzOgorICAgIG1pbmltaXN0ICJ+MC4wLjEiCisgICAgd29yZHdyYXAgIn4w
LjAuMiIKKworb3JpZ2luYWxAPj0wLjAuNToKKyAgdmVyc2lvbiAiMS4wLjAiCisgIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL29yaWdpbmFsLy0vb3JpZ2luYWwtMS4wLjAu
dGd6IzkxNDdmOTNmYTE2OTZkMDRiZTYxZTAxYmQ1MGJhZWFjYTY1NmJkM2IiCisgIGRlcGVuZGVu
Y2llczoKKyAgICB1cmwtcGFyc2UgIjEuMC54IgorCitvcy1icm93c2VyaWZ5QF4wLjIuMDoKKyAg
dmVyc2lvbiAiMC4yLjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L29zLWJyb3dzZXJpZnkvLS9vcy1icm93c2VyaWZ5LTAuMi4xLnRneiM2M2ZjNGNjZWU1ZDJkNzc2
M2QyNmJiZjg2MDEwNzhlNmMyZTAwNDRmIgorCitvcy1ob21lZGlyQF4xLjAuMDoKKyAgdmVyc2lv
biAiMS4wLjIiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL29zLWhv
bWVkaXIvLS9vcy1ob21lZGlyLTEuMC4yLnRneiNmZmJjNDk4ODMzNmUwZTgzM2RlMGMxNjhjN2Vm
MTUyMTIxYWE3ZmIzIgorCitvcy10bXBkaXJAXjEuMC4xOgorICB2ZXJzaW9uICIxLjAuMiIKKyAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vb3MtdG1wZGlyLy0vb3MtdG1w
ZGlyLTEuMC4yLnRneiNiYmU2NzQwNmM3OWFhODVjNWNmZWM3NjZmZTU3MzQ1NTVkZmExMjc0Igor
CitwYWtvQH4wLjIuMDoKKyAgdmVyc2lvbiAiMC4yLjkiCisgIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL3Bha28vLS9wYWtvLTAuMi45LnRneiNmM2Y3NTIyZjRlZjc4MjM0
OGRhODE2MWJhZDllY2ZkNTFiZjgzYTc1IgorCitwYXJzZS1nbG9iQF4zLjAuNDoKKyAgdmVyc2lv
biAiMy4wLjQiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3BhcnNl
LWdsb2IvLS9wYXJzZS1nbG9iLTMuMC40LnRneiNiMmMzNzZjZmIxMWYzNTUxM2JhZGQxNzNlZjBi
YjZlM2EzODgzOTFjIgorICBkZXBlbmRlbmNpZXM6CisgICAgZ2xvYi1iYXNlICJeMC4zLjAiCisg
ICAgaXMtZG90ZmlsZSAiXjEuMC4wIgorICAgIGlzLWV4dGdsb2IgIl4xLjAuMCIKKyAgICBpcy1n
bG9iICJeMi4wLjAiCisKK3BhcnNldXJsQH4xLjMuMToKKyAgdmVyc2lvbiAiMS4zLjEiCisgIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3BhcnNldXJsLy0vcGFyc2V1cmwt
MS4zLjEudGd6I2M4YWI4YzkyMjNiYTM0ODg4YWE2NGEyOTdiMjg4NTNiZWMxOGRhNTYiCisKK3Bh
dGgtYnJvd3NlcmlmeUAwLjAuMDoKKyAgdmVyc2lvbiAiMC4wLjAiCisgIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3BhdGgtYnJvd3NlcmlmeS8tL3BhdGgtYnJvd3Nlcmlm
eS0wLjAuMC50Z3ojYTBiODcwNzI5YWFlMjE0MDA1YjdkNTAzMmVjMmNiYmIwZmI0NDUxYSIKKwor
cGF0aC1leGlzdHNAXjIuMC4wOgorICB2ZXJzaW9uICIyLjEuMCIKKyAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vcGF0aC1leGlzdHMvLS9wYXRoLWV4aXN0cy0yLjEuMC50
Z3ojMGZlYjZjNjRmMGZjNTE4ZDlhNzU0ZGQ1ZWZiNjJjNzAyMjc2MWY0YiIKKyAgZGVwZW5kZW5j
aWVzOgorICAgIHBpbmtpZS1wcm9taXNlICJeMi4wLjAiCisKK3BhdGgtaXMtYWJzb2x1dGVAXjEu
MC4wOgorICB2ZXJzaW9uICIxLjAuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vcGF0aC1pcy1hYnNvbHV0ZS8tL3BhdGgtaXMtYWJzb2x1dGUtMS4wLjEudGd6IzE3
NGI5MjY4NzM1NTM0ZmZiYzdhY2U2YmY1M2E1YTllMWI1YzVmNWYiCisKK3BhdGgtdG8tcmVnZXhw
QDAuMS43OgorICB2ZXJzaW9uICIwLjEuNyIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vcGF0aC10by1yZWdleHAvLS9wYXRoLXRvLXJlZ2V4cC0wLjEuNy50Z3ojZGY2
MDQxNzgwMDVmNTIyZjE1ZWI0NDkwZTcyNDdhMWJmYWE2N2Y4YyIKKworcGJrZGYyLWNvbXBhdEAy
LjAuMToKKyAgdmVyc2lvbiAiMi4wLjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL3Bia2RmMi1jb21wYXQvLS9wYmtkZjItY29tcGF0LTIuMC4xLnRneiNiNmUwYzhm
YTk5NDk0ZDk0ZTA1MTE1NzU4MDJhNTlhNWMxNDJmMjg4IgorCitwaW5raWUtcHJvbWlzZUBeMi4w
LjA6CisgIHZlcnNpb24gIjIuMC4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9waW5raWUtcHJvbWlzZS8tL3BpbmtpZS1wcm9taXNlLTIuMC4xLnRneiMyMTM1ZDZk
ZmE3YTM1OGMwNjlhYzliMTc4Nzc2Mjg4MjI4NDUwZmZhIgorICBkZXBlbmRlbmNpZXM6CisgICAg
cGlua2llICJeMi4wLjAiCisKK3BpbmtpZUBeMi4wLjA6CisgIHZlcnNpb24gIjIuMC40IgorICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9waW5raWUvLS9waW5raWUtMi4w
LjQudGd6IzcyNTU2YjgwY2ZhMGQ0OGE5NzRlODBlNzcyNDhlODBlZDRmN2Y4NzAiCisKK3BrZy1k
aXJAXjEuMC4wOgorICB2ZXJzaW9uICIxLjAuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vcGtnLWRpci8tL3BrZy1kaXItMS4wLjAudGd6IzdhNGI1MDhhOGQ1YmIy
ZDYyOWQ0NDcwNTZmZjRlOWM5MzE0Y2YzZDQiCisgIGRlcGVuZGVuY2llczoKKyAgICBmaW5kLXVw
ICJeMS4wLjAiCisKK3ByZXNlcnZlQF4wLjIuMDoKKyAgdmVyc2lvbiAiMC4yLjAiCisgIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3ByZXNlcnZlLy0vcHJlc2VydmUtMC4y
LjAudGd6IzgxNWVkMWY2ZWJjNjU5MjZmODY1YjMxMGMwNzEzYmNiMzMxNWNlNGIiCisKK3ByaXZh
dGVAXjAuMS42LCBwcml2YXRlQH4wLjEuNToKKyAgdmVyc2lvbiAiMC4xLjYiCisgIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3ByaXZhdGUvLS9wcml2YXRlLTAuMS42LnRn
eiM1NWM2YTk3NmQwZjliYWZiOTkyNDg1MTM1MGZlNDdiOWI1ZmJiN2MxIgorCitwcm9jZXNzLW5l
eHRpY2stYXJnc0B+MS4wLjY6CisgIHZlcnNpb24gIjEuMC43IgorICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wcm9jZXNzLW5leHRpY2stYXJncy8tL3Byb2Nlc3MtbmV4
dGljay1hcmdzLTEuMC43LnRneiMxNTBlMjBiNzU2NTkwYWQzZjkxMDkzZjI1YTRmMmFkOGJmZjMw
YmEzIgorCitwcm9jZXNzQF4wLjExLjA6CisgIHZlcnNpb24gIjAuMTEuOSIKKyAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcHJvY2Vzcy8tL3Byb2Nlc3MtMC4xMS45LnRn
eiM3YmQ1YWQyMWFhNjI1M2U3ZGE4NjgyMjY0ZjFlMTFkMTFjMDMxOGMxIgorCitwcm94eS1hZGRy
QH4xLjEuMjoKKyAgdmVyc2lvbiAiMS4xLjIiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL3Byb3h5LWFkZHIvLS9wcm94eS1hZGRyLTEuMS4yLnRneiNiNGNjNWYyMjYx
MGQ5NTM1ODI0YzEyM2FlZjlkM2NmNzNjNDBiYTM3IgorICBkZXBlbmRlbmNpZXM6CisgICAgZm9y
d2FyZGVkICJ+MC4xLjAiCisgICAgaXBhZGRyLmpzICIxLjEuMSIKKworcHJyQH4wLjAuMDoKKyAg
dmVyc2lvbiAiMC4wLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L3Byci8tL3Byci0wLjAuMC50Z3ojMWE4NGI4NTkwODMyNTUwMTQxMTg1M2QwMDgxZWUzZmE4NmUy
OTI2YSIKKworcHVueWNvZGVAMS4zLjI6CisgIHZlcnNpb24gIjEuMy4yIgorICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wdW55Y29kZS8tL3B1bnljb2RlLTEuMy4yLnRn
eiM5NjUzYTAzNmZiN2MxZWU0MjM0MmYyMzI1Y2NlZWZlYTM5MjZjNDhkIgorCitwdW55Y29kZUBe
MS4yLjQsIHB1bnljb2RlQF4xLjQuMToKKyAgdmVyc2lvbiAiMS40LjEiCisgIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3B1bnljb2RlLy0vcHVueWNvZGUtMS40LjEudGd6
I2MwZDVhNjNiMjcxODgwMGFkOGUxZWIwZmE1MjY5Yzg0ZGQ0MTg0NWUiCisKK3FzQDYuMi4wOgor
ICB2ZXJzaW9uICI2LjIuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vcXMvLS9xcy02LjIuMC50Z3ojM2I3ODQ4YzAzYzJkZWNlNjlhOTUyMmIwZmFlOGM0MTI2ZDc0
NWYzYiIKKworcXNAfjYuMy4wOgorICB2ZXJzaW9uICI2LjMuMCIKKyAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vcXMvLS9xcy02LjMuMC50Z3ojZjQwM2IyNjRmMjNiYzAx
MjI4Yzc0MTMxYjQwN2YxOGQ1ZWE1ZDQ0MiIKKworcXVlcnlzdHJpbmctZXMzQF4wLjIuMDoKKyAg
dmVyc2lvbiAiMC4yLjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L3F1ZXJ5c3RyaW5nLWVzMy8tL3F1ZXJ5c3RyaW5nLWVzMy0wLjIuMS50Z3ojOWVjNjFmNzkwNDk4
NzU3MDdkNjk0MTQ1OTZmZDkwN2E0ZDcxMWU3MyIKKworcXVlcnlzdHJpbmdAMC4yLjA6CisgIHZl
cnNpb24gIjAuMi4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9x
dWVyeXN0cmluZy8tL3F1ZXJ5c3RyaW5nLTAuMi4wLnRneiNiMjA5ODQ5MjAzYmIyNWRmODIwZGE3
NTZlNzQ3MDA1ODc4NTIxNjIwIgorCitxdWVyeXN0cmluZ2lmeUAwLjAueDoKKyAgdmVyc2lvbiAi
MC4wLjQiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3F1ZXJ5c3Ry
aW5naWZ5Ly0vcXVlcnlzdHJpbmdpZnktMC4wLjQudGd6IzBjZjdmODRmOTQ2M2ZmMGFlNTFjNGM0
YjE0MmQ5NWJlMzc3MjRkOWMiCisKK3JhbmRvbWF0aWNAXjEuMS4zOgorICB2ZXJzaW9uICIxLjEu
NiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcmFuZG9tYXRpYy8t
L3JhbmRvbWF0aWMtMS4xLjYudGd6IzExMGRjYWJmZjM5N2U5ZGNmZjdjMDc4OWNjYzBhNDlhZGYx
ZWM1YmIiCisgIGRlcGVuZGVuY2llczoKKyAgICBpcy1udW1iZXIgIl4yLjAuMiIKKyAgICBraW5k
LW9mICJeMy4wLjIiCisKK3JhbmdlLXBhcnNlckBeMS4wLjMsIHJhbmdlLXBhcnNlckB+MS4yLjA6
CisgIHZlcnNpb24gIjEuMi4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9yYW5nZS1wYXJzZXIvLS9yYW5nZS1wYXJzZXItMS4yLjAudGd6I2Y0OWJlNmI0ODc4OTRk
ZGM0MGRjYzk0YTMyMmY2MTEwOTJlMDBkNWUiCisKK3JjQH4xLjEuNjoKKyAgdmVyc2lvbiAiMS4x
LjYiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3JjLy0vcmMtMS4x
LjYudGd6IzQzNjUxYjc2YjZhZTUzYjVjODAyZjExNTFmYTNmYzNiMDU5OTY5YzkiCisgIGRlcGVu
ZGVuY2llczoKKyAgICBkZWVwLWV4dGVuZCAifjAuNC4wIgorICAgIGluaSAifjEuMy4wIgorICAg
IG1pbmltaXN0ICJeMS4yLjAiCisgICAgc3RyaXAtanNvbi1jb21tZW50cyAifjEuMC40IgorCisi
cmVhZGFibGUtc3RyZWFtQF4yLjAuMCB8fCBeMS4xLjEzIiwgcmVhZGFibGUtc3RyZWFtQF4yLjAu
MSwgcmVhZGFibGUtc3RyZWFtQF4yLjAuMiwgcmVhZGFibGUtc3RyZWFtQF4yLjAuNSwgcmVhZGFi
bGUtc3RyZWFtQF4yLjEuMDoKKyAgdmVyc2lvbiAiMi4yLjIiCisgIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3JlYWRhYmxlLXN0cmVhbS8tL3JlYWRhYmxlLXN0cmVhbS0y
LjIuMi50Z3ojYTllNmZlYzNjN2RkYTg1ZjhiYjFiM2JhNzAyODYwNDU1NmZjODI1ZSIKKyAgZGVw
ZW5kZW5jaWVzOgorICAgIGJ1ZmZlci1zaGltcyAiXjEuMC4wIgorICAgIGNvcmUtdXRpbC1pcyAi
fjEuMC4wIgorICAgIGluaGVyaXRzICJ+Mi4wLjEiCisgICAgaXNhcnJheSAifjEuMC4wIgorICAg
IHByb2Nlc3MtbmV4dGljay1hcmdzICJ+MS4wLjYiCisgICAgc3RyaW5nX2RlY29kZXIgIn4wLjEw
LngiCisgICAgdXRpbC1kZXByZWNhdGUgIn4xLjAuMSIKKworcmVhZGFibGUtc3RyZWFtQH4yLjEu
NDoKKyAgdmVyc2lvbiAiMi4xLjUiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w
a2cuY29tL3JlYWRhYmxlLXN0cmVhbS8tL3JlYWRhYmxlLXN0cmVhbS0yLjEuNS50Z3ojNjZmYThi
NzIwZTE0MzhiMzY0NjgxZjJhZDFhNjNjNjE4NDQ4YzlkMCIKKyAgZGVwZW5kZW5jaWVzOgorICAg
IGJ1ZmZlci1zaGltcyAiXjEuMC4wIgorICAgIGNvcmUtdXRpbC1pcyAifjEuMC4wIgorICAgIGlu
aGVyaXRzICJ+Mi4wLjEiCisgICAgaXNhcnJheSAifjEuMC4wIgorICAgIHByb2Nlc3MtbmV4dGlj
ay1hcmdzICJ+MS4wLjYiCisgICAgc3RyaW5nX2RlY29kZXIgIn4wLjEwLngiCisgICAgdXRpbC1k
ZXByZWNhdGUgIn4xLjAuMSIKKworcmVhZGRpcnBAXjIuMC4wOgorICB2ZXJzaW9uICIyLjEuMCIK
KyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcmVhZGRpcnAvLS9yZWFk
ZGlycC0yLjEuMC50Z3ojNGVkMGFkMDYwZGYzMDczMzAwYzQ4NDQwMzczZjcyZDFjYzY0MmQ3OCIK
KyAgZGVwZW5kZW5jaWVzOgorICAgIGdyYWNlZnVsLWZzICJeNC4xLjIiCisgICAgbWluaW1hdGNo
ICJeMy4wLjIiCisgICAgcmVhZGFibGUtc3RyZWFtICJeMi4wLjIiCisgICAgc2V0LWltbWVkaWF0
ZS1zaGltICJeMS4wLjEiCisKK3JlZ2VuZXJhdGVAXjEuMi4xOgorICB2ZXJzaW9uICIxLjMuMiIK
KyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcmVnZW5lcmF0ZS8tL3Jl
Z2VuZXJhdGUtMS4zLjIudGd6I2QxOTQxYzY3YmFkNDM3ZTFiZTc2NDMzYWRkNWIzODVmOTViMTky
NjAiCisKK3JlZ2VuZXJhdG9yLXJ1bnRpbWVAXjAuOS41OgorICB2ZXJzaW9uICIwLjkuNiIKKyAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcmVnZW5lcmF0b3ItcnVudGlt
ZS8tL3JlZ2VuZXJhdG9yLXJ1bnRpbWUtMC45LjYudGd6I2QzM2ViOTVkMGQyMDAxYTRiZTM5NjU5
NzA3YzUxYjBjYjcxY2UwMjkiCisKK3JlZ2V4LWNhY2hlQF4wLjQuMjoKKyAgdmVyc2lvbiAiMC40
LjMiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3JlZ2V4LWNhY2hl
Ly0vcmVnZXgtY2FjaGUtMC40LjMudGd6IzliMWE2YzM1ZDRkMGRmY2VmNTcxMWFlNjUxZThlOWQz
ZDcxMTQxNDUiCisgIGRlcGVuZGVuY2llczoKKyAgICBpcy1lcXVhbC1zaGFsbG93ICJeMC4xLjMi
CisgICAgaXMtcHJpbWl0aXZlICJeMi4wLjAiCisKK3JlZ2V4cHUtY29yZUBeMi4wLjA6CisgIHZl
cnNpb24gIjIuMC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9y
ZWdleHB1LWNvcmUvLS9yZWdleHB1LWNvcmUtMi4wLjAudGd6IzQ5ZDAzODgzN2I4ZGNmOGJmYTVi
OWE0MjEzOTkzOGU2ZWEyYWUyNDAiCisgIGRlcGVuZGVuY2llczoKKyAgICByZWdlbmVyYXRlICJe
MS4yLjEiCisgICAgcmVnanNnZW4gIl4wLjIuMCIKKyAgICByZWdqc3BhcnNlciAiXjAuMS40Igor
CityZWdqc2dlbkBeMC4yLjA6CisgIHZlcnNpb24gIjAuMi4wIgorICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9yZWdqc2dlbi8tL3JlZ2pzZ2VuLTAuMi4wLnRneiM2YzAx
NmFkZWFjNTU0Zjc1ODIzZmUzN2FjMDViOTJkNWE0ZWRiMWY3IgorCityZWdqc3BhcnNlckBeMC4x
LjQ6CisgIHZlcnNpb24gIjAuMS41IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9yZWdqc3BhcnNlci8tL3JlZ2pzcGFyc2VyLTAuMS41LnRneiM3ZWU4Zjg0ZGM2ZmE3
OTJkM2ZkMGFlMjI4ZDI0YmQ5NDllYWQyMDVjIgorICBkZXBlbmRlbmNpZXM6CisgICAganNlc2Mg
In4wLjUuMCIKKworcmVwZWF0LWVsZW1lbnRAXjEuMS4yOgorICB2ZXJzaW9uICIxLjEuMiIKKyAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcmVwZWF0LWVsZW1lbnQvLS9y
ZXBlYXQtZWxlbWVudC0xLjEuMi50Z3ojZWYwODlhMTc4ZDE0ODNiYWFlNGQ5M2ViOThiNGY5ZTRl
MTFkOTkwYSIKKworcmVwZWF0LXN0cmluZ0BeMS41LjI6CisgIHZlcnNpb24gIjEuNi4xIgorICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9yZXBlYXQtc3RyaW5nLy0vcmVw
ZWF0LXN0cmluZy0xLjYuMS50Z3ojOGRjYWU0NzBlMWM4OGFiYzJkNjAwZmZmNGE3NzYyODZkYTc1
ZTYzNyIKKworcmVwZWF0aW5nQF4yLjAuMDoKKyAgdmVyc2lvbiAiMi4wLjEiCisgIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3JlcGVhdGluZy8tL3JlcGVhdGluZy0yLjAu
MS50Z3ojNTIxNGM1M2E5MjZkMzU1MjcwNzUyN2ZiYWI0MTVkYmMwOGQwNmRkYSIKKyAgZGVwZW5k
ZW5jaWVzOgorICAgIGlzLWZpbml0ZSAiXjEuMC4wIgorCityZXF1ZXN0QF4yLjc5LjA6CisgIHZl
cnNpb24gIjIuNzkuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
cmVxdWVzdC8tL3JlcXVlc3QtMi43OS4wLnRneiM0ZGZlNWJmNmJlOGI4Y2RjMzdmY2Y5M2UwNGI2
NTU3NzcyMjcxMGRlIgorICBkZXBlbmRlbmNpZXM6CisgICAgYXdzLXNpZ24yICJ+MC42LjAiCisg
ICAgYXdzNCAiXjEuMi4xIgorICAgIGNhc2VsZXNzICJ+MC4xMS4wIgorICAgIGNvbWJpbmVkLXN0
cmVhbSAifjEuMC41IgorICAgIGV4dGVuZCAifjMuMC4wIgorICAgIGZvcmV2ZXItYWdlbnQgIn4w
LjYuMSIKKyAgICBmb3JtLWRhdGEgIn4yLjEuMSIKKyAgICBoYXItdmFsaWRhdG9yICJ+Mi4wLjYi
CisgICAgaGF3ayAifjMuMS4zIgorICAgIGh0dHAtc2lnbmF0dXJlICJ+MS4xLjAiCisgICAgaXMt
dHlwZWRhcnJheSAifjEuMC4wIgorICAgIGlzc3RyZWFtICJ+MC4xLjIiCisgICAganNvbi1zdHJp
bmdpZnktc2FmZSAifjUuMC4xIgorICAgIG1pbWUtdHlwZXMgIn4yLjEuNyIKKyAgICBvYXV0aC1z
aWduICJ+MC44LjEiCisgICAgcXMgIn42LjMuMCIKKyAgICBzdHJpbmdzdHJlYW0gIn4wLjAuNCIK
KyAgICB0b3VnaC1jb29raWUgIn4yLjMuMCIKKyAgICB0dW5uZWwtYWdlbnQgIn4wLjQuMSIKKyAg
ICB1dWlkICJeMy4wLjAiCisKK3JlcXVpcmUtcmVsYXRpdmVAXjAuOC43OgorICB2ZXJzaW9uICIw
LjguNyIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcmVxdWlyZS1y
ZWxhdGl2ZS8tL3JlcXVpcmUtcmVsYXRpdmUtMC44LjcudGd6Izc5OTk1MzlmYzllMDQ3YTM3OTI4
ZmExOTZmOGUxNTYzZGFiZDM2ZGUiCisKK3JlcXVpcmVzLXBvcnRAMS4wLngsIHJlcXVpcmVzLXBv
cnRAMS54Lng6CisgIHZlcnNpb24gIjEuMC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9yZXF1aXJlcy1wb3J0Ly0vcmVxdWlyZXMtcG9ydC0xLjAuMC50Z3ojOTI1
ZDI2MDFkMzlhYzQ4NWUwOTFjZjBkYTVjNmU2OTRkYzNkY2FmZiIKKworcmlnaHQtYWxpZ25AXjAu
MS4xOgorICB2ZXJzaW9uICIwLjEuMyIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vcmlnaHQtYWxpZ24vLS9yaWdodC1hbGlnbi0wLjEuMy50Z3ojNjEzMzliNzIyZmU2
YTM1MTU2ODkyMTBkMjRlMTRjOTYxNDg2MTNlZiIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGFsaWdu
LXRleHQgIl4wLjEuMSIKKworcmltcmFmQDIsIHJpbXJhZkB+Mi41LjEsIHJpbXJhZkB+Mi41LjQ6
CisgIHZlcnNpb24gIjIuNS40IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9yaW1yYWYvLS9yaW1yYWYtMi41LjQudGd6Izk2ODAwMDkzY2JmMWEwYzg2YmQ5NWI0NjI1
NDY3NTM1YzI5ZGZhMDQiCisgIGRlcGVuZGVuY2llczoKKyAgICBnbG9iICJeNy4wLjUiCisKK3Jp
cGVtZDE2MEAwLjIuMDoKKyAgdmVyc2lvbiAiMC4yLjAiCisgIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL3JpcGVtZDE2MC8tL3JpcGVtZDE2MC0wLjIuMC50Z3ojMmJmMTk4
YmRlMTY3Y2FjZmE1MWMwYTkyOGU4NGI2OGJiZTE3MWZjZSIKKworc2VtdmVyQH41LjMuMDoKKyAg
dmVyc2lvbiAiNS4zLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L3NlbXZlci8tL3NlbXZlci01LjMuMC50Z3ojOWIyY2U1ZDNkZTAyZDE3YzYwMTJhZDMyNmFhNmI0
ZDBjZjU0Zjk0ZiIKKworc2VuZEAwLjE0LjE6CisgIHZlcnNpb24gIjAuMTQuMSIKKyAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc2VuZC8tL3NlbmQtMC4xNC4xLnRneiNh
OTU0OTg0MzI1MzkyZjUxNTMyYTc3NjA3NjBlNDU5NTk4Yzg5ZjdhIgorICBkZXBlbmRlbmNpZXM6
CisgICAgZGVidWcgIn4yLjIuMCIKKyAgICBkZXBkICJ+MS4xLjAiCisgICAgZGVzdHJveSAifjEu
MC40IgorICAgIGVuY29kZXVybCAifjEuMC4xIgorICAgIGVzY2FwZS1odG1sICJ+MS4wLjMiCisg
ICAgZXRhZyAifjEuNy4wIgorICAgIGZyZXNoICIwLjMuMCIKKyAgICBodHRwLWVycm9ycyAifjEu
NS4wIgorICAgIG1pbWUgIjEuMy40IgorICAgIG1zICIwLjcuMSIKKyAgICBvbi1maW5pc2hlZCAi
fjIuMy4wIgorICAgIHJhbmdlLXBhcnNlciAifjEuMi4wIgorICAgIHN0YXR1c2VzICJ+MS4zLjAi
CisKK3NlcnZlLWluZGV4QF4xLjcuMjoKKyAgdmVyc2lvbiAiMS44LjAiCisgIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3NlcnZlLWluZGV4Ly0vc2VydmUtaW5kZXgtMS44
LjAudGd6IzdjNWQ5NmMxM2ZiMTMxMTAxZjkzYzFjNTc3NGY4NTE2YTFlNzhkM2IiCisgIGRlcGVu
ZGVuY2llczoKKyAgICBhY2NlcHRzICJ+MS4zLjMiCisgICAgYmF0Y2ggIjAuNS4zIgorICAgIGRl
YnVnICJ+Mi4yLjAiCisgICAgZXNjYXBlLWh0bWwgIn4xLjAuMyIKKyAgICBodHRwLWVycm9ycyAi
fjEuNS4wIgorICAgIG1pbWUtdHlwZXMgIn4yLjEuMTEiCisgICAgcGFyc2V1cmwgIn4xLjMuMSIK
Kworc2VydmUtc3RhdGljQH4xLjExLjE6CisgIHZlcnNpb24gIjEuMTEuMSIKKyAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc2VydmUtc3RhdGljLy0vc2VydmUtc3RhdGlj
LTEuMTEuMS50Z3ojZDZjY2U3NjkzNTA1ZjczM2M3NTlkZTU3YmVmYzFhZjc2YzBmMDgwNSIKKyAg
ZGVwZW5kZW5jaWVzOgorICAgIGVuY29kZXVybCAifjEuMC4xIgorICAgIGVzY2FwZS1odG1sICJ+
MS4wLjMiCisgICAgcGFyc2V1cmwgIn4xLjMuMSIKKyAgICBzZW5kICIwLjE0LjEiCisKK3NldC1i
bG9ja2luZ0B+Mi4wLjA6CisgIHZlcnNpb24gIjIuMC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9zZXQtYmxvY2tpbmcvLS9zZXQtYmxvY2tpbmctMi4wLjAudGd6
IzA0NWY5NzgyZDAxMWFlOWE2ODAzZGRkMzgyYjI0MzkyYjNkODkwZjciCisKK3NldC1pbW1lZGlh
dGUtc2hpbUBeMS4wLjE6CisgIHZlcnNpb24gIjEuMC4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9zZXQtaW1tZWRpYXRlLXNoaW0vLS9zZXQtaW1tZWRpYXRlLXNo
aW0tMS4wLjEudGd6IzRiMmIxYjI3ZWI4MDhhOWY4ZGNjNDgxYTU4ZTVlNTZmNTk5ZjNmNjEiCisK
K3NldGltbWVkaWF0ZUBeMS4wLjQ6CisgIHZlcnNpb24gIjEuMC41IgorICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zZXRpbW1lZGlhdGUvLS9zZXRpbW1lZGlhdGUtMS4w
LjUudGd6IzI5MGNiYjIzMmUzMDY5NDJkN2Q3ZWE5YjgzNzMyYWI3ODU2ZjgyODUiCisKK3NldHBy
b3RvdHlwZW9mQDEuMC4yOgorICB2ZXJzaW9uICIxLjAuMiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vc2V0cHJvdG90eXBlb2YvLS9zZXRwcm90b3R5cGVvZi0xLjAu
Mi50Z3ojODFhNTUyMTQxZWMxMDRiODhlODljZTM4MzEwM2FkNWM2NjU2NGQwOCIKKworc2hhLmpz
QDIuMi42OgorICB2ZXJzaW9uICIyLjIuNiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vc2hhLmpzLy0vc2hhLmpzLTIuMi42LnRneiMxN2RkZWRkYzVmNzIyZmI2NjUw
MTY1ODg5NTQ2MTk3Nzg2NzMxNWJhIgorCitzaWduYWwtZXhpdEBeMy4wLjA6CisgIHZlcnNpb24g
IjMuMC4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zaWduYWwt
ZXhpdC8tL3NpZ25hbC1leGl0LTMuMC4yLnRneiNiNWZkYzA4ZjEyODdlYTExNzg2MjhlNDE1ZTI1
MTMyYjczNjQ2YzZkIgorCitzbGFzaEBeMS4wLjA6CisgIHZlcnNpb24gIjEuMC4wIgorICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zbGFzaC8tL3NsYXNoLTEuMC4wLnRn
eiNjNDFmMmY2YzM5ZmMxNmQxY2QxN2FkNGI1ZDg5NjExNGFlNDcwZDU1IgorCitzbnRwQDEueC54
OgorICB2ZXJzaW9uICIxLjAuOSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vc250cC8tL3NudHAtMS4wLjkudGd6IzY1NDExODRjYzkwYWVlYTZjNmU3YjM1ZTI2NTkw
ODI0NDNjNjYxOTgiCisgIGRlcGVuZGVuY2llczoKKyAgICBob2VrICIyLngueCIKKworc29ja2pz
LWNsaWVudEBeMS4wLjM6CisgIHZlcnNpb24gIjEuMS4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9zb2NranMtY2xpZW50Ly0vc29ja2pzLWNsaWVudC0xLjEuMS50
Z3ojMjg0ODQzZTlhOTc4NGQ3YzQ3NGIxNTcxYjMyNDBmY2E5ZGRhNGJiMCIKKyAgZGVwZW5kZW5j
aWVzOgorICAgIGRlYnVnICJeMi4yLjAiCisgICAgZXZlbnRzb3VyY2UgIn4wLjEuNiIKKyAgICBm
YXllLXdlYnNvY2tldCAifjAuMTEuMCIKKyAgICBpbmhlcml0cyAiXjIuMC4xIgorICAgIGpzb24z
ICJeMy4zLjIiCisgICAgdXJsLXBhcnNlICJeMS4xLjEiCisKK3NvY2tqc0BeMC4zLjE1OgorICB2
ZXJzaW9uICIwLjMuMTgiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L3NvY2tqcy8tL3NvY2tqcy0wLjMuMTgudGd6I2Q5YjI4OTMxNmNhN2RmNzc1OTVlZjI5OWUwNzVm
MGY5MzdlYjQyMDciCisgIGRlcGVuZGVuY2llczoKKyAgICBmYXllLXdlYnNvY2tldCAiXjAuMTAu
MCIKKyAgICB1dWlkICJeMi4wLjIiCisKK3NvdXJjZS1saXN0LW1hcEB+MC4xLjc6CisgIHZlcnNp
b24gIjAuMS43IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zb3Vy
Y2UtbGlzdC1tYXAvLS9zb3VyY2UtbGlzdC1tYXAtMC4xLjcudGd6I2Q0YjVjZTJhNDY1MzVjNzJj
N2U4NTI3YzcxYTc3ZDI1MDYxODE3MmUiCisKK3NvdXJjZS1tYXAtc3VwcG9ydEBeMC40LjI6Cisg
IHZlcnNpb24gIjAuNC42IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9zb3VyY2UtbWFwLXN1cHBvcnQvLS9zb3VyY2UtbWFwLXN1cHBvcnQtMC40LjYudGd6IzMyNTUy
YWE2NGI0NTgzOTJhODVlYWIzYjBiNWVlNjE1MjcxNjdhZWIiCisgIGRlcGVuZGVuY2llczoKKyAg
ICBzb3VyY2UtbWFwICJeMC41LjMiCisKK3NvdXJjZS1tYXBAXjAuNS4wLCBzb3VyY2UtbWFwQF4w
LjUuMywgc291cmNlLW1hcEB+MC41LjE6CisgIHZlcnNpb24gIjAuNS42IgorICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zb3VyY2UtbWFwLy0vc291cmNlLW1hcC0wLjUu
Ni50Z3ojNzVjZTM4ZjUyYmYwNzMzYzVhN2YwYzExOGQ4MTMzNGEyYmI1ZjQxMiIKKworc291cmNl
LW1hcEB+MC40LjE6CisgIHZlcnNpb24gIjAuNC40IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9zb3VyY2UtbWFwLy0vc291cmNlLW1hcC0wLjQuNC50Z3ojZWJhNGY1
ZGE5YzBkYzk5OWRlNjgwMzJkOGI0Zjc2MTczNjUyMDM2YiIKKyAgZGVwZW5kZW5jaWVzOgorICAg
IGFtZGVmaW5lICI+PTAuMC40IgorCitzc2hwa0BeMS43LjA6CisgIHZlcnNpb24gIjEuMTAuMSIK
KyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc3NocGsvLS9zc2hway0x
LjEwLjEudGd6IzMwZTFhNWQzMjkyNDQ5NzRhMWFmNjE1MTEzMzlkNTk1YWY2NjM4YjAiCisgIGRl
cGVuZGVuY2llczoKKyAgICBhc24xICJ+MC4yLjMiCisgICAgYXNzZXJ0LXBsdXMgIl4xLjAuMCIK
KyAgICBkYXNoZGFzaCAiXjEuMTIuMCIKKyAgICBnZXRwYXNzICJeMC4xLjEiCisgIG9wdGlvbmFs
RGVwZW5kZW5jaWVzOgorICAgIGJjcnlwdC1wYmtkZiAiXjEuMC4wIgorICAgIGVjYy1qc2JuICJ+
MC4xLjEiCisgICAgam9kaWQyNTUxOSAiXjEuMC4wIgorICAgIGpzYm4gIn4wLjEuMCIKKyAgICB0
d2VldG5hY2wgIn4wLjE0LjAiCisKKyJzdGF0dXNlc0A+PSAxLjMuMSA8IDIiLCBzdGF0dXNlc0B+
MS4zLjA6CisgIHZlcnNpb24gIjEuMy4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9zdGF0dXNlcy8tL3N0YXR1c2VzLTEuMy4xLnRneiNmYWY1MWI5ZWI3NGFhZWYz
YjNhY2Y0YWQ1ZjYxYWJmMjRjYjdiOTNlIgorCitzdHJlYW0tYnJvd3NlcmlmeUBeMi4wLjE6Cisg
IHZlcnNpb24gIjIuMC4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9zdHJlYW0tYnJvd3NlcmlmeS8tL3N0cmVhbS1icm93c2VyaWZ5LTIuMC4xLnRneiM2NjI2NmVl
NWY5YmRiOTk0MGE0ZTQ1MTRjYWZiNDNiYjcxZTVjOWRiIgorICBkZXBlbmRlbmNpZXM6CisgICAg
aW5oZXJpdHMgIn4yLjAuMSIKKyAgICByZWFkYWJsZS1zdHJlYW0gIl4yLjAuMiIKKworc3RyZWFt
LWNhY2hlQH4wLjAuMToKKyAgdmVyc2lvbiAiMC4wLjIiCisgIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL3N0cmVhbS1jYWNoZS8tL3N0cmVhbS1jYWNoZS0wLjAuMi50Z3oj
MWFjNWFkNjgzMjQyOGNhNTU2NjdkYmRlZTM5NWRhZDRlNmRiMTE4ZiIKKworc3RyZWFtLWh0dHBA
XjIuMy4xOgorICB2ZXJzaW9uICIyLjUuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vc3RyZWFtLWh0dHAvLS9zdHJlYW0taHR0cC0yLjUuMC50Z3ojNTg1ZWVlNTEz
MjE3ZWQ5OGZlMTk5ODE3ZTczMTNiNmY3NzJhNjgwMiIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGJ1
aWx0aW4tc3RhdHVzLWNvZGVzICJeMi4wLjAiCisgICAgaW5oZXJpdHMgIl4yLjAuMSIKKyAgICBy
ZWFkYWJsZS1zdHJlYW0gIl4yLjEuMCIKKyAgICB0by1hcnJheWJ1ZmZlciAiXjEuMC4wIgorICAg
IHh0ZW5kICJeNC4wLjAiCisKK3N0cmluZy13aWR0aEBeMS4wLjE6CisgIHZlcnNpb24gIjEuMC4y
IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zdHJpbmctd2lkdGgv
LS9zdHJpbmctd2lkdGgtMS4wLjIudGd6IzExOGJkZjViOGNkYzUxYTJhN2U3MGQyMTFlMDdlMmIw
YjliMTA3ZDMiCisgIGRlcGVuZGVuY2llczoKKyAgICBjb2RlLXBvaW50LWF0ICJeMS4wLjAiCisg
ICAgaXMtZnVsbHdpZHRoLWNvZGUtcG9pbnQgIl4xLjAuMCIKKyAgICBzdHJpcC1hbnNpICJeMy4w
LjAiCisKK3N0cmluZ19kZWNvZGVyQF4wLjEwLjI1LCBzdHJpbmdfZGVjb2RlckB+MC4xMC54Ogor
ICB2ZXJzaW9uICIwLjEwLjMxIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9zdHJpbmdfZGVjb2Rlci8tL3N0cmluZ19kZWNvZGVyLTAuMTAuMzEudGd6IzYyZTIwM2Jj
NDE3NjZjNmMyOGM5ZmM4NDMwMWRhYjFjNTMxMGZhOTQiCisKK3N0cmluZ3N0cmVhbUB+MC4wLjQ6
CisgIHZlcnNpb24gIjAuMC41IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9zdHJpbmdzdHJlYW0vLS9zdHJpbmdzdHJlYW0tMC4wLjUudGd6IzRlNDg0Y2Q0ZGU1YTBi
YmJlZTE4ZTQ2MzA3NzEwYThhODE2MjE4NzgiCisKK3N0cmlwLWFuc2lAXjMuMC4wLCBzdHJpcC1h
bnNpQF4zLjAuMToKKyAgdmVyc2lvbiAiMy4wLjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL3N0cmlwLWFuc2kvLS9zdHJpcC1hbnNpLTMuMC4xLnRneiM2YTM4NWZi
ODg1M2Q5NTJkNWZmMDVkMGU4YWFmOTQyNzhkYzYzZGNmIgorICBkZXBlbmRlbmNpZXM6CisgICAg
YW5zaS1yZWdleCAiXjIuMC4wIgorCitzdHJpcC1qc29uLWNvbW1lbnRzQH4xLjAuNDoKKyAgdmVy
c2lvbiAiMS4wLjQiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3N0
cmlwLWpzb24tY29tbWVudHMvLS9zdHJpcC1qc29uLWNvbW1lbnRzLTEuMC40LnRneiMxZTE1ZmJj
YWM5N2QzZWU5OWJmMmQ3M2I0YzY1NmIwODJiYmFmYjkxIgorCitzdXBwb3J0cy1jb2xvckBeMC4y
LjA6CisgIHZlcnNpb24gIjAuMi4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9zdXBwb3J0cy1jb2xvci8tL3N1cHBvcnRzLWNvbG9yLTAuMi4wLnRneiNkOTJkZTI2
OTRlYjNmNjczMjM5NzNkN2FlM2Q4YjU1YjRjMjIxOTBhIgorCitzdXBwb3J0cy1jb2xvckBeMi4w
LjA6CisgIHZlcnNpb24gIjIuMC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9zdXBwb3J0cy1jb2xvci8tL3N1cHBvcnRzLWNvbG9yLTIuMC4wLnRneiM1MzVkMDQ1
Y2U2YjYzNjNmYTQwMTE3MDg0NjI5OTk1ZTlkZjMyNGM3IgorCitzdXBwb3J0cy1jb2xvckBeMy4x
LjAsIHN1cHBvcnRzLWNvbG9yQF4zLjEuMToKKyAgdmVyc2lvbiAiMy4xLjIiCisgIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3N1cHBvcnRzLWNvbG9yLy0vc3VwcG9ydHMt
Y29sb3ItMy4xLjIudGd6IzcyYTI2Mjg5NGQ5ZDQwOGI5NTZjYTA1ZmYzN2IyZWQ4YTZlMmEyZDUi
CisgIGRlcGVuZGVuY2llczoKKyAgICBoYXMtZmxhZyAiXjEuMC4wIgorCit0YXBhYmxlQF4wLjEu
OCwgdGFwYWJsZUB+MC4xLjg6CisgIHZlcnNpb24gIjAuMS4xMCIKKyAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vdGFwYWJsZS8tL3RhcGFibGUtMC4xLjEwLnRneiMyOWMz
NTcwN2MyYjcwZTUwZDA3NDgyYjVkMjAyZThlZDQ0NmRhZmQ0IgorCit0YXItcGFja0B+My4zLjA6
CisgIHZlcnNpb24gIjMuMy4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS90YXItcGFjay8tL3Rhci1wYWNrLTMuMy4wLnRneiMzMDkzMTgxNjQxOGY1NWFmYzRkMjE3
NzVhZmRkNjcyMGNlZTQ1ZGFlIgorICBkZXBlbmRlbmNpZXM6CisgICAgZGVidWcgIn4yLjIuMCIK
KyAgICBmc3RyZWFtICJ+MS4wLjEwIgorICAgIGZzdHJlYW0taWdub3JlICJ+MS4wLjUiCisgICAg
b25jZSAifjEuMy4zIgorICAgIHJlYWRhYmxlLXN0cmVhbSAifjIuMS40IgorICAgIHJpbXJhZiAi
fjIuNS4xIgorICAgIHRhciAifjIuMi4xIgorICAgIHVpZC1udW1iZXIgIn4wLjAuNiIKKwordGFy
QH4yLjIuMToKKyAgdmVyc2lvbiAiMi4yLjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL3Rhci8tL3Rhci0yLjIuMS50Z3ojOGU0ZDJhMjU2YzBlMjE4NWM2YjE4YWQ2
OTRhZWM5NjhiODNjYjFkMSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGJsb2NrLXN0cmVhbSAiKiIK
KyAgICBmc3RyZWFtICJeMS4wLjIiCisgICAgaW5oZXJpdHMgIjIiCisKK3RpbWVycy1icm93c2Vy
aWZ5QF4yLjAuMjoKKyAgdmVyc2lvbiAiMi4wLjIiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL3RpbWVycy1icm93c2VyaWZ5Ly0vdGltZXJzLWJyb3dzZXJpZnktMi4w
LjIudGd6I2FiNDg4M2NmNTk3ZGNkNTBhZjIxMTM0OWEwMGZiY2E1NmFjODZiODYiCisgIGRlcGVu
ZGVuY2llczoKKyAgICBzZXRpbW1lZGlhdGUgIl4xLjAuNCIKKwordG8tYXJyYXlidWZmZXJAXjEu
MC4wOgorICB2ZXJzaW9uICIxLjAuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vdG8tYXJyYXlidWZmZXIvLS90by1hcnJheWJ1ZmZlci0xLjAuMS50Z3ojN2QyMjli
MWZjYzYzN2U0NjZjYTA4MTE4MDgzNmE3YWFiZmY4M2Y0MyIKKwordG8tZmFzdC1wcm9wZXJ0aWVz
QF4xLjAuMToKKyAgdmVyc2lvbiAiMS4wLjIiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL3RvLWZhc3QtcHJvcGVydGllcy8tL3RvLWZhc3QtcHJvcGVydGllcy0xLjAu
Mi50Z3ojZjNmNWMwYzNiYTcyOTlhN2VmOTk0MjdlNDQ2MzMyNTdhZGU0MzMyMCIKKwordG9kb212
Yy1hcHAtY3NzQF4yLjAuMDoKKyAgdmVyc2lvbiAiMi4wLjYiCisgIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3RvZG9tdmMtYXBwLWNzcy8tL3RvZG9tdmMtYXBwLWNzcy0y
LjAuNi50Z3ojMGIzNjY3YzVlMTg5ZjE1NjhkOWE5YmY3OTQ3ZWJkOTI4NDA2OTYxZCIKKwordG9k
b212Yy1jb21tb25AXjEuMC4wOgorICB2ZXJzaW9uICIxLjAuMyIKKyAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vdG9kb212Yy1jb21tb24vLS90b2RvbXZjLWNvbW1vbi0x
LjAuMy50Z3ojY2JhMTg2ODEwOWNhYTQwMWI5MDhlYmY3Nzc5NGNjMTAxNGI3NDg3MyIKKwordG91
Z2gtY29va2llQH4yLjMuMDoKKyAgdmVyc2lvbiAiMi4zLjIiCisgIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3RvdWdoLWNvb2tpZS8tL3RvdWdoLWNvb2tpZS0yLjMuMi50
Z3ojZjA4MWY3NmU0Yzg1NzIwZTZjMzdhNWZhY2VkNzM3MTUwZDg0MDcyYSIKKyAgZGVwZW5kZW5j
aWVzOgorICAgIHB1bnljb2RlICJeMS40LjEiCisKK3R0eS1icm93c2VyaWZ5QDAuMC4wOgorICB2
ZXJzaW9uICIwLjAuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
dHR5LWJyb3dzZXJpZnkvLS90dHktYnJvd3NlcmlmeS0wLjAuMC50Z3ojYTE1N2JhNDAyZGEyNGU5
YmY5NTdmOWFhNjlkNTI0ZWVkNDI5MDFhNiIKKwordHVubmVsLWFnZW50QH4wLjQuMToKKyAgdmVy
c2lvbiAiMC40LjMiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3R1
bm5lbC1hZ2VudC8tL3R1bm5lbC1hZ2VudC0wLjQuMy50Z3ojNjM3M2RiNzY5MDlmZTU3MGUwOGQ3
MzU4MzM2NWVkODI4YTc0ZWVlYiIKKwordHdlZXRuYWNsQF4wLjE0LjMsIHR3ZWV0bmFjbEB+MC4x
NC4wOgorICB2ZXJzaW9uICIwLjE0LjQiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL3R3ZWV0bmFjbC8tL3R3ZWV0bmFjbC0wLjE0LjQudGd6IzhjOWRiZmI1Mjc5NTY4
NmYxNjZjZDIwMjM3OTRiY2YxMDNkMTNjMmIiCisKK3R5cGUtaXNAfjEuNi4xMzoKKyAgdmVyc2lv
biAiMS42LjE0IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS90eXBl
LWlzLy0vdHlwZS1pcy0xLjYuMTQudGd6I2UyMTk2MzljMTdkZWQxY2EwNzg5MDkyZGQ1NGEwMzgy
NmI4MTdjYjIiCisgIGRlcGVuZGVuY2llczoKKyAgICBtZWRpYS10eXBlciAiMC4zLjAiCisgICAg
bWltZS10eXBlcyAifjIuMS4xMyIKKwordWdsaWZ5LWpzQH4yLjcuMzoKKyAgdmVyc2lvbiAiMi43
LjUiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3VnbGlmeS1qcy8t
L3VnbGlmeS1qcy0yLjcuNS50Z3ojNDYxMmMwYzdiYWFlZTJiYTdjNDg3ZGU0OTA0YWUxMjIwNzlm
MmNhOCIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGFzeW5jICJ+MC4yLjYiCisgICAgc291cmNlLW1h
cCAifjAuNS4xIgorICAgIHVnbGlmeS10by1icm93c2VyaWZ5ICJ+MS4wLjAiCisgICAgeWFyZ3Mg
In4zLjEwLjAiCisKK3VnbGlmeS10by1icm93c2VyaWZ5QH4xLjAuMDoKKyAgdmVyc2lvbiAiMS4w
LjIiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3VnbGlmeS10by1i
cm93c2VyaWZ5Ly0vdWdsaWZ5LXRvLWJyb3dzZXJpZnktMS4wLjIudGd6IzZlMDkyNGQ2YmRhNmI1
YWZlMzQ5ZTM5YTZkNjMyODUwYTBmODgyYjciCisKK3VpZC1udW1iZXJAfjAuMC42OgorICB2ZXJz
aW9uICIwLjAuNiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vdWlk
LW51bWJlci8tL3VpZC1udW1iZXItMC4wLjYudGd6IzBlYTEwZTgwMzVlOGViNWI4ZTQ0NDlmMDZk
YTFjNzMwNjYzYmFhODEiCisKK3VucGlwZUB+MS4wLjA6CisgIHZlcnNpb24gIjEuMC4wIgorICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS91bnBpcGUvLS91bnBpcGUtMS4w
LjAudGd6I2IyYmY0ZWU4NTE0YWFlNjE2NWI0ODE3ODI5ZDIxYjJlZjQ5OTA0ZWMiCisKK3VybC1w
YXJzZUAxLjAueDoKKyAgdmVyc2lvbiAiMS4wLjUiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL3VybC1wYXJzZS8tL3VybC1wYXJzZS0xLjAuNS50Z3ojMDg1NDg2MDQy
MmFmZGNmZWZlYjZjOTY1YzY2MmQ0ODAwMTY5OTI3YiIKKyAgZGVwZW5kZW5jaWVzOgorICAgIHF1
ZXJ5c3RyaW5naWZ5ICIwLjAueCIKKyAgICByZXF1aXJlcy1wb3J0ICIxLjAueCIKKwordXJsLXBh
cnNlQF4xLjEuMToKKyAgdmVyc2lvbiAiMS4xLjciCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL3VybC1wYXJzZS8tL3VybC1wYXJzZS0xLjEuNy50Z3ojMDI1Y2ZmOTk5
NjUzYTQ1OWFiMzQyMzIxNDdkODk1MTRjYzg3ZDc0YSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIHF1
ZXJ5c3RyaW5naWZ5ICIwLjAueCIKKyAgICByZXF1aXJlcy1wb3J0ICIxLjAueCIKKwordXJsQF4w
LjExLjA6CisgIHZlcnNpb24gIjAuMTEuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vdXJsLy0vdXJsLTAuMTEuMC50Z3ojMzgzOGU5N2NmYzYwNTIxZWI3M2M1MjVh
OGU1NWJmZGQ5ZTJlMjhmMSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIHB1bnljb2RlICIxLjMuMiIK
KyAgICBxdWVyeXN0cmluZyAiMC4yLjAiCisKK3V0aWwtZGVwcmVjYXRlQH4xLjAuMToKKyAgdmVy
c2lvbiAiMS4wLjIiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3V0
aWwtZGVwcmVjYXRlLy0vdXRpbC1kZXByZWNhdGUtMS4wLjIudGd6IzQ1MGQ0ZGM5ZmE3MGRlNzMy
NzYyZmJkMmQ0YTI4OTgxNDE5YTBjY2YiCisKK3V0aWxAMC4xMC4zLCB1dGlsQF4wLjEwLjM6Cisg
IHZlcnNpb24gIjAuMTAuMyIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vdXRpbC8tL3V0aWwtMC4xMC4zLnRneiM3YWZiMWFmZTUwODA1MjQ2NDg5ZTNkYjdmZTBlZDM3
OTMzNmFjMGY5IgorICBkZXBlbmRlbmNpZXM6CisgICAgaW5oZXJpdHMgIjIuMC4xIgorCit1dGls
cy1tZXJnZUAxLjAuMDoKKyAgdmVyc2lvbiAiMS4wLjAiCisgIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL3V0aWxzLW1lcmdlLy0vdXRpbHMtbWVyZ2UtMS4wLjAudGd6IzAy
OTRmYjkyMmJiOTM3NTE1MzU0MWM0ZjcwOTYyMzFmMjg3YzhhZjgiCisKK3V1aWRAXjIuMC4yOgor
ICB2ZXJzaW9uICIyLjAuMyIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vdXVpZC8tL3V1aWQtMi4wLjMudGd6IzY3ZTJlODYzNzk3MjE1NTMwZGZmMzE4ZTViZjlkY2Vi
ZmQ0N2IyMWEiCisKK3V1aWRAXjMuMC4wOgorICB2ZXJzaW9uICIzLjAuMSIKKyAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vdXVpZC8tL3V1aWQtMy4wLjEudGd6IzY1NDRi
YmEyZGZkYThjMWNmMTdlNjI5YTNhMzA1ZTJiYjFmZWU2YzEiCisKK3ZhcnlAfjEuMS4wOgorICB2
ZXJzaW9uICIxLjEuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
dmFyeS8tL3ZhcnktMS4xLjAudGd6I2UxZTVhZmZiYmQxNmFlNzY4ZGQyNjc0Mzk0YjlhZDMwMjI2
NTMxNDAiCisKK3ZlcnJvckAxLjMuNjoKKyAgdmVyc2lvbiAiMS4zLjYiCisgIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3ZlcnJvci8tL3ZlcnJvci0xLjMuNi50Z3ojY2Zm
NWRmMTI5NDZkMjk3ZDJiYWFlZmFhMjY4OWUyNWJlMDFjMDA1YyIKKyAgZGVwZW5kZW5jaWVzOgor
ICAgIGV4dHNwcmludGYgIjEuMC4yIgorCit2bS1icm93c2VyaWZ5QDAuMC40OgorICB2ZXJzaW9u
ICIwLjAuNCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vdm0tYnJv
d3NlcmlmeS8tL3ZtLWJyb3dzZXJpZnktMC4wLjQudGd6IzVkN2VhNDViYmVmOWU0YTZmZjY1Zjk1
NDM4ZTBhODdjMzU3ZDVhNzMiCisgIGRlcGVuZGVuY2llczoKKyAgICBpbmRleG9mICIwLjAuMSIK
Kword2F0Y2hwYWNrQF4wLjIuMToKKyAgdmVyc2lvbiAiMC4yLjkiCisgIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3dhdGNocGFjay8tL3dhdGNocGFjay0wLjIuOS50Z3oj
NjJlYWE0YWI1ZTViYTM1ZmRmYzAxODI3NTYyNmUzYzBmNWUzZmIwYiIKKyAgZGVwZW5kZW5jaWVz
OgorICAgIGFzeW5jICJeMC45LjAiCisgICAgY2hva2lkYXIgIl4xLjAuMCIKKyAgICBncmFjZWZ1
bC1mcyAiXjQuMS4yIgorCit3ZWJwYWNrLWNvcmVAfjAuNi45OgorICB2ZXJzaW9uICIwLjYuOSIK
KyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vd2VicGFjay1jb3JlLy0v
d2VicGFjay1jb3JlLTAuNi45LnRneiNmYzU3MTU4OGM4NTU4ZGE3N2JlOWVmYjZkZWJkYzVhM2Ix
NzJiZGMyIgorICBkZXBlbmRlbmNpZXM6CisgICAgc291cmNlLWxpc3QtbWFwICJ+MC4xLjciCisg
ICAgc291cmNlLW1hcCAifjAuNC4xIgorCit3ZWJwYWNrLWRldi1taWRkbGV3YXJlQF4xLjQuMDoK
KyAgdmVyc2lvbiAiMS44LjQiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL3dlYnBhY2stZGV2LW1pZGRsZXdhcmUvLS93ZWJwYWNrLWRldi1taWRkbGV3YXJlLTEuOC40
LnRneiNlODc2NWM5MTIyODg3Y2U5ZTNhYmQ0Y2M5YzNlYjMxYjYxZTA5NDhkIgorICBkZXBlbmRl
bmNpZXM6CisgICAgbWVtb3J5LWZzICJ+MC4zLjAiCisgICAgbWltZSAiXjEuMy40IgorICAgIHBh
dGgtaXMtYWJzb2x1dGUgIl4xLjAuMCIKKyAgICByYW5nZS1wYXJzZXIgIl4xLjAuMyIKKword2Vi
cGFjay1kZXYtc2VydmVyQF4xLjE0LjE6CisgIHZlcnNpb24gIjEuMTYuMiIKKyAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vd2VicGFjay1kZXYtc2VydmVyLy0vd2VicGFj
ay1kZXYtc2VydmVyLTEuMTYuMi50Z3ojOGJlYmMyYzRjZTFjNDVhMTVjNzJkZDc2OWQ5YmEwOGRi
MzA2YTc5MyIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGNvbXByZXNzaW9uICJeMS41LjIiCisgICAg
Y29ubmVjdC1oaXN0b3J5LWFwaS1mYWxsYmFjayAiXjEuMy4wIgorICAgIGV4cHJlc3MgIl40LjEz
LjMiCisgICAgaHR0cC1wcm94eS1taWRkbGV3YXJlICJ+MC4xNy4xIgorICAgIG9wZW4gIjAuMC41
IgorICAgIG9wdGltaXN0ICJ+MC42LjEiCisgICAgc2VydmUtaW5kZXggIl4xLjcuMiIKKyAgICBz
b2NranMgIl4wLjMuMTUiCisgICAgc29ja2pzLWNsaWVudCAiXjEuMC4zIgorICAgIHN0cmVhbS1j
YWNoZSAifjAuMC4xIgorICAgIHN0cmlwLWFuc2kgIl4zLjAuMCIKKyAgICBzdXBwb3J0cy1jb2xv
ciAiXjMuMS4xIgorICAgIHdlYnBhY2stZGV2LW1pZGRsZXdhcmUgIl4xLjQuMCIKKword2VicGFj
a0BeMS4xMi4xNDoKKyAgdmVyc2lvbiAiMS4xNC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS93ZWJwYWNrLy0vd2VicGFjay0xLjE0LjAudGd6IzU0ZjFmZmI5MjA1
MWEzMjhhNWIyMDU3ZDZhZTMzYzI4OTQ2MmM4MjMiCisgIGRlcGVuZGVuY2llczoKKyAgICBhY29y
biAiXjMuMC4wIgorICAgIGFzeW5jICJeMS4zLjAiCisgICAgY2xvbmUgIl4xLjAuMiIKKyAgICBl
bmhhbmNlZC1yZXNvbHZlICJ+MC45LjAiCisgICAgaW50ZXJwcmV0ICJeMC42LjQiCisgICAgbG9h
ZGVyLXV0aWxzICJeMC4yLjExIgorICAgIG1lbW9yeS1mcyAifjAuMy4wIgorICAgIG1rZGlycCAi
fjAuNS4wIgorICAgIG5vZGUtbGlicy1icm93c2VyICJeMC43LjAiCisgICAgb3B0aW1pc3QgIn4w
LjYuMCIKKyAgICBzdXBwb3J0cy1jb2xvciAiXjMuMS4wIgorICAgIHRhcGFibGUgIn4wLjEuOCIK
KyAgICB1Z2xpZnktanMgIn4yLjcuMyIKKyAgICB3YXRjaHBhY2sgIl4wLjIuMSIKKyAgICB3ZWJw
YWNrLWNvcmUgIn4wLjYuOSIKKword2Vic29ja2V0LWRyaXZlckA+PTAuNS4xOgorICB2ZXJzaW9u
ICIwLjYuNSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vd2Vic29j
a2V0LWRyaXZlci8tL3dlYnNvY2tldC1kcml2ZXItMC42LjUudGd6IzVjYjI1NTZjZWI4NWY0Mzcz
YzZkODIzOGFhNjkxYzg0NTRlMTNhMzYiCisgIGRlcGVuZGVuY2llczoKKyAgICB3ZWJzb2NrZXQt
ZXh0ZW5zaW9ucyAiPj0wLjEuMSIKKword2Vic29ja2V0LWV4dGVuc2lvbnNAPj0wLjEuMToKKyAg
dmVyc2lvbiAiMC4xLjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L3dlYnNvY2tldC1leHRlbnNpb25zLy0vd2Vic29ja2V0LWV4dGVuc2lvbnMtMC4xLjEudGd6Izc2
ODk5NDk5YzE4NGI2ZWY3NTQzNzdjMmRiYjBjZDZjYjU1ZDI5ZTciCisKK3dpZGUtYWxpZ25AXjEu
MS4wOgorICB2ZXJzaW9uICIxLjEuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vd2lkZS1hbGlnbi8tL3dpZGUtYWxpZ24tMS4xLjAudGd6IzQwZWRkZTgwMmE3MWZl
YTFmMDcwZGEzZTYyZGNkYTJlN2FkZDk2YWQiCisgIGRlcGVuZGVuY2llczoKKyAgICBzdHJpbmct
d2lkdGggIl4xLjAuMSIKKword2luZG93LXNpemVAMC4xLjA6CisgIHZlcnNpb24gIjAuMS4wIgor
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS93aW5kb3ctc2l6ZS8tL3dp
bmRvdy1zaXplLTAuMS4wLnRneiM1NDM4Y2QyZWE5M2IyMDJlZmEzYTE5ZmU4ODg3YWVlN2M5NGY5
YzlkIgorCit3b3Jkd3JhcEAwLjAuMjoKKyAgdmVyc2lvbiAiMC4wLjIiCisgIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3dvcmR3cmFwLy0vd29yZHdyYXAtMC4wLjIudGd6
I2I3OTY2OWJiNDJlY2I0MDlmODNkNTgzY2FkNTJjYTE3ZWFhMTY0M2YiCisKK3dvcmR3cmFwQH4w
LjAuMjoKKyAgdmVyc2lvbiAiMC4wLjMiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL3dvcmR3cmFwLy0vd29yZHdyYXAtMC4wLjMudGd6I2EzZDVkYTZjZDVjMGJjMDAw
OGQzNzIzNGJiYWYxYmVkNjMwNTkxMDciCisKK3dyYXBweUAxOgorICB2ZXJzaW9uICIxLjAuMiIK
KyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vd3JhcHB5Ly0vd3JhcHB5
LTEuMC4yLnRneiNiNTI0M2Q4ZjNlYzFhYTM1ZjEzNjQ2MDViYzBkMTAzNmUzMGFiNjlmIgorCit4
dGVuZEBeNC4wLjA6CisgIHZlcnNpb24gIjQuMC4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS94dGVuZC8tL3h0ZW5kLTQuMC4xLnRneiNhNWM2ZDUzMmJlNjU2ZTIz
ZGI4MjBlZmI5NDNhMWYwNDk5OGQ2M2FmIgorCit5YXJnc0B+My4xMC4wOgorICB2ZXJzaW9uICIz
LjEwLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3lhcmdzLy0v
eWFyZ3MtMy4xMC4wLnRneiNmN2VlN2JkODU3ZGQ3YzFkMmQzOGMwZTc0ZWZiZDY4MWQxNDMxZmQx
IgorICBkZXBlbmRlbmNpZXM6CisgICAgY2FtZWxjYXNlICJeMS4wLjIiCisgICAgY2xpdWkgIl4y
LjEuMCIKKyAgICBkZWNhbWVsaXplICJeMS4wLjAiCisgICAgd2luZG93LXNpemUgIjAuMS4wIgpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L2Jvd2VyLmpzb24gYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9q
cXVlcnkvYm93ZXIuanNvbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmJkYjMzZDc3
NjRjNGIxMjhlNzYwYTVkYThlMjYyM2JkNGJiN2I0OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvYm93ZXIuanNvbgorKysg
L2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotewotICAibmFtZSI6ICJ0b2RvbXZjLWpxdWVyeSIs
Ci0gICJ2ZXJzaW9uIjogIjAuMC4wIiwKLSAgImRlcGVuZGVuY2llcyI6IHsKLSAgICAianF1ZXJ5
IjogIn4xLjkuMSIsCi0gICAgImhhbmRsZWJhcnMiOiAifjEuMC4wLXJjLjMiLAotICAgICJ0b2Rv
bXZjLWNvbW1vbiI6ICJ+MC4xLjQiCi0gIH0KLX0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2px
dWVyeS9ib3dlcl9jb21wb25lbnRzL2hhbmRsZWJhcnMvaGFuZGxlYmFycy5qcyBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2pxdWVyeS9ib3dlcl9jb21wb25lbnRzL2hhbmRsZWJhcnMvaGFuZGxlYmFycy5qcwpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWU2NmU5MjY3YWQyNzhiZDU0NWNlNGQyYjdlMzU0
NDY5OTY1ZmNhMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9qcXVlcnkvYm93ZXJfY29tcG9uZW50cy9oYW5kbGViYXJzL2hhbmRsZWJh
cnMuanMKKysrIC9kZXYvbnVsbApAQCAtMSwyMjAxICswLDAgQEAKLS8qCi0KLUNvcHlyaWdodCAo
QykgMjAxMSBieSBZZWh1ZGEgS2F0egotCi1QZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBm
cmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Ci1vZiB0aGlzIHNv
ZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUi
KSwgdG8gZGVhbAotaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGlu
ZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwotdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1l
cmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAotY29waWVz
IG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3
YXJlIGlzCi1mdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zOgotCi1UaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9u
IG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgotYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBw
b3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi0KLVRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMg
SVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCi1JTVBMSUVELCBJ
TkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSwKLUZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1F
TlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQotQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBC
RSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgotTElBQklMSVRZLCBXSEVU
SEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcg
RlJPTSwKLU9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBV
U0UgT1IgT1RIRVIgREVBTElOR1MgSU4KLVRIRSBTT0ZUV0FSRS4KLQotKi8KLQotLy8gbGliL2hh
bmRsZWJhcnMvYmFzZS5qcwotCi0vKmpzaGludCBlcW51bGw6dHJ1ZSovCi10aGlzLkhhbmRsZWJh
cnMgPSB7fTsKLQotKGZ1bmN0aW9uKEhhbmRsZWJhcnMpIHsKLQotSGFuZGxlYmFycy5WRVJTSU9O
ID0gIjEuMC4wLXJjLjMiOwotSGFuZGxlYmFycy5DT01QSUxFUl9SRVZJU0lPTiA9IDI7Ci0KLUhh
bmRsZWJhcnMuUkVWSVNJT05fQ0hBTkdFUyA9IHsKLSAgMTogJzw9IDEuMC5yYy4yJywgLy8gMS4w
LnJjLjIgaXMgYWN0dWFsbHkgcmV2MiBidXQgZG9lc24ndCByZXBvcnQgaXQKLSAgMjogJz49IDEu
MC4wLXJjLjMnCi19OwotCi1IYW5kbGViYXJzLmhlbHBlcnMgID0ge307Ci1IYW5kbGViYXJzLnBh
cnRpYWxzID0ge307Ci0KLUhhbmRsZWJhcnMucmVnaXN0ZXJIZWxwZXIgPSBmdW5jdGlvbihuYW1l
LCBmbiwgaW52ZXJzZSkgewotICBpZihpbnZlcnNlKSB7IGZuLm5vdCA9IGludmVyc2U7IH0KLSAg
dGhpcy5oZWxwZXJzW25hbWVdID0gZm47Ci19OwotCi1IYW5kbGViYXJzLnJlZ2lzdGVyUGFydGlh
bCA9IGZ1bmN0aW9uKG5hbWUsIHN0cikgewotICB0aGlzLnBhcnRpYWxzW25hbWVdID0gc3RyOwot
fTsKLQotSGFuZGxlYmFycy5yZWdpc3RlckhlbHBlcignaGVscGVyTWlzc2luZycsIGZ1bmN0aW9u
KGFyZykgewotICBpZihhcmd1bWVudHMubGVuZ3RoID09PSAyKSB7Ci0gICAgcmV0dXJuIHVuZGVm
aW5lZDsKLSAgfSBlbHNlIHsKLSAgICB0aHJvdyBuZXcgRXJyb3IoIkNvdWxkIG5vdCBmaW5kIHBy
b3BlcnR5ICciICsgYXJnICsgIiciKTsKLSAgfQotfSk7Ci0KLXZhciB0b1N0cmluZyA9IE9iamVj
dC5wcm90b3R5cGUudG9TdHJpbmcsIGZ1bmN0aW9uVHlwZSA9ICJbb2JqZWN0IEZ1bmN0aW9uXSI7
Ci0KLUhhbmRsZWJhcnMucmVnaXN0ZXJIZWxwZXIoJ2Jsb2NrSGVscGVyTWlzc2luZycsIGZ1bmN0
aW9uKGNvbnRleHQsIG9wdGlvbnMpIHsKLSAgdmFyIGludmVyc2UgPSBvcHRpb25zLmludmVyc2Ug
fHwgZnVuY3Rpb24oKSB7fSwgZm4gPSBvcHRpb25zLmZuOwotCi0KLSAgdmFyIHJldCA9ICIiOwot
ICB2YXIgdHlwZSA9IHRvU3RyaW5nLmNhbGwoY29udGV4dCk7Ci0KLSAgaWYodHlwZSA9PT0gZnVu
Y3Rpb25UeXBlKSB7IGNvbnRleHQgPSBjb250ZXh0LmNhbGwodGhpcyk7IH0KLQotICBpZihjb250
ZXh0ID09PSB0cnVlKSB7Ci0gICAgcmV0dXJuIGZuKHRoaXMpOwotICB9IGVsc2UgaWYoY29udGV4
dCA9PT0gZmFsc2UgfHwgY29udGV4dCA9PSBudWxsKSB7Ci0gICAgcmV0dXJuIGludmVyc2UodGhp
cyk7Ci0gIH0gZWxzZSBpZih0eXBlID09PSAiW29iamVjdCBBcnJheV0iKSB7Ci0gICAgaWYoY29u
dGV4dC5sZW5ndGggPiAwKSB7Ci0gICAgICByZXR1cm4gSGFuZGxlYmFycy5oZWxwZXJzLmVhY2go
Y29udGV4dCwgb3B0aW9ucyk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIHJldHVybiBpbnZlcnNlKHRo
aXMpOwotICAgIH0KLSAgfSBlbHNlIHsKLSAgICByZXR1cm4gZm4oY29udGV4dCk7Ci0gIH0KLX0p
OwotCi1IYW5kbGViYXJzLksgPSBmdW5jdGlvbigpIHt9OwotCi1IYW5kbGViYXJzLmNyZWF0ZUZy
YW1lID0gT2JqZWN0LmNyZWF0ZSB8fCBmdW5jdGlvbihvYmplY3QpIHsKLSAgSGFuZGxlYmFycy5L
LnByb3RvdHlwZSA9IG9iamVjdDsKLSAgdmFyIG9iaiA9IG5ldyBIYW5kbGViYXJzLksoKTsKLSAg
SGFuZGxlYmFycy5LLnByb3RvdHlwZSA9IG51bGw7Ci0gIHJldHVybiBvYmo7Ci19OwotCi1IYW5k
bGViYXJzLmxvZ2dlciA9IHsKLSAgREVCVUc6IDAsIElORk86IDEsIFdBUk46IDIsIEVSUk9SOiAz
LCBsZXZlbDogMywKLQotICBtZXRob2RNYXA6IHswOiAnZGVidWcnLCAxOiAnaW5mbycsIDI6ICd3
YXJuJywgMzogJ2Vycm9yJ30sCi0KLSAgLy8gY2FuIGJlIG92ZXJyaWRkZW4gaW4gdGhlIGhvc3Qg
ZW52aXJvbm1lbnQKLSAgbG9nOiBmdW5jdGlvbihsZXZlbCwgb2JqKSB7Ci0gICAgaWYgKEhhbmRs
ZWJhcnMubG9nZ2VyLmxldmVsIDw9IGxldmVsKSB7Ci0gICAgICB2YXIgbWV0aG9kID0gSGFuZGxl
YmFycy5sb2dnZXIubWV0aG9kTWFwW2xldmVsXTsKLSAgICAgIGlmICh0eXBlb2YgY29uc29sZSAh
PT0gJ3VuZGVmaW5lZCcgJiYgY29uc29sZVttZXRob2RdKSB7Ci0gICAgICAgIGNvbnNvbGVbbWV0
aG9kXS5jYWxsKGNvbnNvbGUsIG9iaik7Ci0gICAgICB9Ci0gICAgfQotICB9Ci19OwotCi1IYW5k
bGViYXJzLmxvZyA9IGZ1bmN0aW9uKGxldmVsLCBvYmopIHsgSGFuZGxlYmFycy5sb2dnZXIubG9n
KGxldmVsLCBvYmopOyB9OwotCi1IYW5kbGViYXJzLnJlZ2lzdGVySGVscGVyKCdlYWNoJywgZnVu
Y3Rpb24oY29udGV4dCwgb3B0aW9ucykgewotICB2YXIgZm4gPSBvcHRpb25zLmZuLCBpbnZlcnNl
ID0gb3B0aW9ucy5pbnZlcnNlOwotICB2YXIgaSA9IDAsIHJldCA9ICIiLCBkYXRhOwotCi0gIGlm
IChvcHRpb25zLmRhdGEpIHsKLSAgICBkYXRhID0gSGFuZGxlYmFycy5jcmVhdGVGcmFtZShvcHRp
b25zLmRhdGEpOwotICB9Ci0KLSAgaWYoY29udGV4dCAmJiB0eXBlb2YgY29udGV4dCA9PT0gJ29i
amVjdCcpIHsKLSAgICBpZihjb250ZXh0IGluc3RhbmNlb2YgQXJyYXkpewotICAgICAgZm9yKHZh
ciBqID0gY29udGV4dC5sZW5ndGg7IGk8ajsgaSsrKSB7Ci0gICAgICAgIGlmIChkYXRhKSB7IGRh
dGEuaW5kZXggPSBpOyB9Ci0gICAgICAgIHJldCA9IHJldCArIGZuKGNvbnRleHRbaV0sIHsgZGF0
YTogZGF0YSB9KTsKLSAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgZm9yKHZhciBrZXkgaW4g
Y29udGV4dCkgewotICAgICAgICBpZihjb250ZXh0Lmhhc093blByb3BlcnR5KGtleSkpIHsKLSAg
ICAgICAgICBpZihkYXRhKSB7IGRhdGEua2V5ID0ga2V5OyB9Ci0gICAgICAgICAgcmV0ID0gcmV0
ICsgZm4oY29udGV4dFtrZXldLCB7ZGF0YTogZGF0YX0pOwotICAgICAgICAgIGkrKzsKLSAgICAg
ICAgfQotICAgICAgfQotICAgIH0KLSAgfQotCi0gIGlmKGkgPT09IDApewotICAgIHJldCA9IGlu
dmVyc2UodGhpcyk7Ci0gIH0KLQotICByZXR1cm4gcmV0OwotfSk7Ci0KLUhhbmRsZWJhcnMucmVn
aXN0ZXJIZWxwZXIoJ2lmJywgZnVuY3Rpb24oY29udGV4dCwgb3B0aW9ucykgewotICB2YXIgdHlw
ZSA9IHRvU3RyaW5nLmNhbGwoY29udGV4dCk7Ci0gIGlmKHR5cGUgPT09IGZ1bmN0aW9uVHlwZSkg
eyBjb250ZXh0ID0gY29udGV4dC5jYWxsKHRoaXMpOyB9Ci0KLSAgaWYoIWNvbnRleHQgfHwgSGFu
ZGxlYmFycy5VdGlscy5pc0VtcHR5KGNvbnRleHQpKSB7Ci0gICAgcmV0dXJuIG9wdGlvbnMuaW52
ZXJzZSh0aGlzKTsKLSAgfSBlbHNlIHsKLSAgICByZXR1cm4gb3B0aW9ucy5mbih0aGlzKTsKLSAg
fQotfSk7Ci0KLUhhbmRsZWJhcnMucmVnaXN0ZXJIZWxwZXIoJ3VubGVzcycsIGZ1bmN0aW9uKGNv
bnRleHQsIG9wdGlvbnMpIHsKLSAgdmFyIGZuID0gb3B0aW9ucy5mbiwgaW52ZXJzZSA9IG9wdGlv
bnMuaW52ZXJzZTsKLSAgb3B0aW9ucy5mbiA9IGludmVyc2U7Ci0gIG9wdGlvbnMuaW52ZXJzZSA9
IGZuOwotCi0gIHJldHVybiBIYW5kbGViYXJzLmhlbHBlcnNbJ2lmJ10uY2FsbCh0aGlzLCBjb250
ZXh0LCBvcHRpb25zKTsKLX0pOwotCi1IYW5kbGViYXJzLnJlZ2lzdGVySGVscGVyKCd3aXRoJywg
ZnVuY3Rpb24oY29udGV4dCwgb3B0aW9ucykgewotICByZXR1cm4gb3B0aW9ucy5mbihjb250ZXh0
KTsKLX0pOwotCi1IYW5kbGViYXJzLnJlZ2lzdGVySGVscGVyKCdsb2cnLCBmdW5jdGlvbihjb250
ZXh0LCBvcHRpb25zKSB7Ci0gIHZhciBsZXZlbCA9IG9wdGlvbnMuZGF0YSAmJiBvcHRpb25zLmRh
dGEubGV2ZWwgIT0gbnVsbCA/IHBhcnNlSW50KG9wdGlvbnMuZGF0YS5sZXZlbCwgMTApIDogMTsK
LSAgSGFuZGxlYmFycy5sb2cobGV2ZWwsIGNvbnRleHQpOwotfSk7Ci0KLX0odGhpcy5IYW5kbGVi
YXJzKSk7Ci07Ci0vLyBsaWIvaGFuZGxlYmFycy9jb21waWxlci9wYXJzZXIuanMKLS8qIEppc29u
IGdlbmVyYXRlZCBwYXJzZXIgKi8KLXZhciBoYW5kbGViYXJzID0gKGZ1bmN0aW9uKCl7Ci12YXIg
cGFyc2VyID0ge3RyYWNlOiBmdW5jdGlvbiB0cmFjZSgpIHsgfSwKLXl5OiB7fSwKLXN5bWJvbHNf
OiB7ImVycm9yIjoyLCJyb290IjozLCJwcm9ncmFtIjo0LCJFT0YiOjUsInNpbXBsZUludmVyc2Ui
OjYsInN0YXRlbWVudHMiOjcsInN0YXRlbWVudCI6OCwib3BlbkludmVyc2UiOjksImNsb3NlQmxv
Y2siOjEwLCJvcGVuQmxvY2siOjExLCJtdXN0YWNoZSI6MTIsInBhcnRpYWwiOjEzLCJDT05URU5U
IjoxNCwiQ09NTUVOVCI6MTUsIk9QRU5fQkxPQ0siOjE2LCJpbk11c3RhY2hlIjoxNywiQ0xPU0Ui
OjE4LCJPUEVOX0lOVkVSU0UiOjE5LCJPUEVOX0VOREJMT0NLIjoyMCwicGF0aCI6MjEsIk9QRU4i
OjIyLCJPUEVOX1VORVNDQVBFRCI6MjMsIk9QRU5fUEFSVElBTCI6MjQsInBhcnRpYWxOYW1lIjoy
NSwicGFyYW1zIjoyNiwiaGFzaCI6MjcsIkRBVEEiOjI4LCJwYXJhbSI6MjksIlNUUklORyI6MzAs
IklOVEVHRVIiOjMxLCJCT09MRUFOIjozMiwiaGFzaFNlZ21lbnRzIjozMywiaGFzaFNlZ21lbnQi
OjM0LCJJRCI6MzUsIkVRVUFMUyI6MzYsIlBBUlRJQUxfTkFNRSI6MzcsInBhdGhTZWdtZW50cyI6
MzgsIlNFUCI6MzksIiRhY2NlcHQiOjAsIiRlbmQiOjF9LAotdGVybWluYWxzXzogezI6ImVycm9y
Iiw1OiJFT0YiLDE0OiJDT05URU5UIiwxNToiQ09NTUVOVCIsMTY6Ik9QRU5fQkxPQ0siLDE4OiJD
TE9TRSIsMTk6Ik9QRU5fSU5WRVJTRSIsMjA6Ik9QRU5fRU5EQkxPQ0siLDIyOiJPUEVOIiwyMzoi
T1BFTl9VTkVTQ0FQRUQiLDI0OiJPUEVOX1BBUlRJQUwiLDI4OiJEQVRBIiwzMDoiU1RSSU5HIiwz
MToiSU5URUdFUiIsMzI6IkJPT0xFQU4iLDM1OiJJRCIsMzY6IkVRVUFMUyIsMzc6IlBBUlRJQUxf
TkFNRSIsMzk6IlNFUCJ9LAotcHJvZHVjdGlvbnNfOiBbMCxbMywyXSxbNCwyXSxbNCwzXSxbNCwy
XSxbNCwxXSxbNCwxXSxbNCwwXSxbNywxXSxbNywyXSxbOCwzXSxbOCwzXSxbOCwxXSxbOCwxXSxb
OCwxXSxbOCwxXSxbMTEsM10sWzksM10sWzEwLDNdLFsxMiwzXSxbMTIsM10sWzEzLDNdLFsxMyw0
XSxbNiwyXSxbMTcsM10sWzE3LDJdLFsxNywyXSxbMTcsMV0sWzE3LDFdLFsyNiwyXSxbMjYsMV0s
WzI5LDFdLFsyOSwxXSxbMjksMV0sWzI5LDFdLFsyOSwxXSxbMjcsMV0sWzMzLDJdLFszMywxXSxb
MzQsM10sWzM0LDNdLFszNCwzXSxbMzQsM10sWzM0LDNdLFsyNSwxXSxbMjEsMV0sWzM4LDNdLFsz
OCwxXV0sCi1wZXJmb3JtQWN0aW9uOiBmdW5jdGlvbiBhbm9ueW1vdXMoeXl0ZXh0LHl5bGVuZyx5
eWxpbmVubyx5eSx5eXN0YXRlLCQkLF8kKSB7Ci0KLXZhciAkMCA9ICQkLmxlbmd0aCAtIDE7Ci1z
d2l0Y2ggKHl5c3RhdGUpIHsKLWNhc2UgMTogcmV0dXJuICQkWyQwLTFdOwotYnJlYWs7Ci1jYXNl
IDI6IHRoaXMuJCA9IG5ldyB5eS5Qcm9ncmFtTm9kZShbXSwgJCRbJDBdKTsKLWJyZWFrOwotY2Fz
ZSAzOiB0aGlzLiQgPSBuZXcgeXkuUHJvZ3JhbU5vZGUoJCRbJDAtMl0sICQkWyQwXSk7Ci1icmVh
azsKLWNhc2UgNDogdGhpcy4kID0gbmV3IHl5LlByb2dyYW1Ob2RlKCQkWyQwLTFdLCBbXSk7Ci1i
cmVhazsKLWNhc2UgNTogdGhpcy4kID0gbmV3IHl5LlByb2dyYW1Ob2RlKCQkWyQwXSk7Ci1icmVh
azsKLWNhc2UgNjogdGhpcy4kID0gbmV3IHl5LlByb2dyYW1Ob2RlKFtdLCBbXSk7Ci1icmVhazsK
LWNhc2UgNzogdGhpcy4kID0gbmV3IHl5LlByb2dyYW1Ob2RlKFtdKTsKLWJyZWFrOwotY2FzZSA4
OiB0aGlzLiQgPSBbJCRbJDBdXTsKLWJyZWFrOwotY2FzZSA5OiAkJFskMC0xXS5wdXNoKCQkWyQw
XSk7IHRoaXMuJCA9ICQkWyQwLTFdOwotYnJlYWs7Ci1jYXNlIDEwOiB0aGlzLiQgPSBuZXcgeXku
QmxvY2tOb2RlKCQkWyQwLTJdLCAkJFskMC0xXS5pbnZlcnNlLCAkJFskMC0xXSwgJCRbJDBdKTsK
LWJyZWFrOwotY2FzZSAxMTogdGhpcy4kID0gbmV3IHl5LkJsb2NrTm9kZSgkJFskMC0yXSwgJCRb
JDAtMV0sICQkWyQwLTFdLmludmVyc2UsICQkWyQwXSk7Ci1icmVhazsKLWNhc2UgMTI6IHRoaXMu
JCA9ICQkWyQwXTsKLWJyZWFrOwotY2FzZSAxMzogdGhpcy4kID0gJCRbJDBdOwotYnJlYWs7Ci1j
YXNlIDE0OiB0aGlzLiQgPSBuZXcgeXkuQ29udGVudE5vZGUoJCRbJDBdKTsKLWJyZWFrOwotY2Fz
ZSAxNTogdGhpcy4kID0gbmV3IHl5LkNvbW1lbnROb2RlKCQkWyQwXSk7Ci1icmVhazsKLWNhc2Ug
MTY6IHRoaXMuJCA9IG5ldyB5eS5NdXN0YWNoZU5vZGUoJCRbJDAtMV1bMF0sICQkWyQwLTFdWzFd
KTsKLWJyZWFrOwotY2FzZSAxNzogdGhpcy4kID0gbmV3IHl5Lk11c3RhY2hlTm9kZSgkJFskMC0x
XVswXSwgJCRbJDAtMV1bMV0pOwotYnJlYWs7Ci1jYXNlIDE4OiB0aGlzLiQgPSAkJFskMC0xXTsK
LWJyZWFrOwotY2FzZSAxOTogdGhpcy4kID0gbmV3IHl5Lk11c3RhY2hlTm9kZSgkJFskMC0xXVsw
XSwgJCRbJDAtMV1bMV0pOwotYnJlYWs7Ci1jYXNlIDIwOiB0aGlzLiQgPSBuZXcgeXkuTXVzdGFj
aGVOb2RlKCQkWyQwLTFdWzBdLCAkJFskMC0xXVsxXSwgdHJ1ZSk7Ci1icmVhazsKLWNhc2UgMjE6
IHRoaXMuJCA9IG5ldyB5eS5QYXJ0aWFsTm9kZSgkJFskMC0xXSk7Ci1icmVhazsKLWNhc2UgMjI6
IHRoaXMuJCA9IG5ldyB5eS5QYXJ0aWFsTm9kZSgkJFskMC0yXSwgJCRbJDAtMV0pOwotYnJlYWs7
Ci1jYXNlIDIzOgotYnJlYWs7Ci1jYXNlIDI0OiB0aGlzLiQgPSBbWyQkWyQwLTJdXS5jb25jYXQo
JCRbJDAtMV0pLCAkJFskMF1dOwotYnJlYWs7Ci1jYXNlIDI1OiB0aGlzLiQgPSBbWyQkWyQwLTFd
XS5jb25jYXQoJCRbJDBdKSwgbnVsbF07Ci1icmVhazsKLWNhc2UgMjY6IHRoaXMuJCA9IFtbJCRb
JDAtMV1dLCAkJFskMF1dOwotYnJlYWs7Ci1jYXNlIDI3OiB0aGlzLiQgPSBbWyQkWyQwXV0sIG51
bGxdOwotYnJlYWs7Ci1jYXNlIDI4OiB0aGlzLiQgPSBbW25ldyB5eS5EYXRhTm9kZSgkJFskMF0p
XSwgbnVsbF07Ci1icmVhazsKLWNhc2UgMjk6ICQkWyQwLTFdLnB1c2goJCRbJDBdKTsgdGhpcy4k
ID0gJCRbJDAtMV07Ci1icmVhazsKLWNhc2UgMzA6IHRoaXMuJCA9IFskJFskMF1dOwotYnJlYWs7
Ci1jYXNlIDMxOiB0aGlzLiQgPSAkJFskMF07Ci1icmVhazsKLWNhc2UgMzI6IHRoaXMuJCA9IG5l
dyB5eS5TdHJpbmdOb2RlKCQkWyQwXSk7Ci1icmVhazsKLWNhc2UgMzM6IHRoaXMuJCA9IG5ldyB5
eS5JbnRlZ2VyTm9kZSgkJFskMF0pOwotYnJlYWs7Ci1jYXNlIDM0OiB0aGlzLiQgPSBuZXcgeXku
Qm9vbGVhbk5vZGUoJCRbJDBdKTsKLWJyZWFrOwotY2FzZSAzNTogdGhpcy4kID0gbmV3IHl5LkRh
dGFOb2RlKCQkWyQwXSk7Ci1icmVhazsKLWNhc2UgMzY6IHRoaXMuJCA9IG5ldyB5eS5IYXNoTm9k
ZSgkJFskMF0pOwotYnJlYWs7Ci1jYXNlIDM3OiAkJFskMC0xXS5wdXNoKCQkWyQwXSk7IHRoaXMu
JCA9ICQkWyQwLTFdOwotYnJlYWs7Ci1jYXNlIDM4OiB0aGlzLiQgPSBbJCRbJDBdXTsKLWJyZWFr
OwotY2FzZSAzOTogdGhpcy4kID0gWyQkWyQwLTJdLCAkJFskMF1dOwotYnJlYWs7Ci1jYXNlIDQw
OiB0aGlzLiQgPSBbJCRbJDAtMl0sIG5ldyB5eS5TdHJpbmdOb2RlKCQkWyQwXSldOwotYnJlYWs7
Ci1jYXNlIDQxOiB0aGlzLiQgPSBbJCRbJDAtMl0sIG5ldyB5eS5JbnRlZ2VyTm9kZSgkJFskMF0p
XTsKLWJyZWFrOwotY2FzZSA0MjogdGhpcy4kID0gWyQkWyQwLTJdLCBuZXcgeXkuQm9vbGVhbk5v
ZGUoJCRbJDBdKV07Ci1icmVhazsKLWNhc2UgNDM6IHRoaXMuJCA9IFskJFskMC0yXSwgbmV3IHl5
LkRhdGFOb2RlKCQkWyQwXSldOwotYnJlYWs7Ci1jYXNlIDQ0OiB0aGlzLiQgPSBuZXcgeXkuUGFy
dGlhbE5hbWVOb2RlKCQkWyQwXSk7Ci1icmVhazsKLWNhc2UgNDU6IHRoaXMuJCA9IG5ldyB5eS5J
ZE5vZGUoJCRbJDBdKTsKLWJyZWFrOwotY2FzZSA0NjogJCRbJDAtMl0ucHVzaCgkJFskMF0pOyB0
aGlzLiQgPSAkJFskMC0yXTsKLWJyZWFrOwotY2FzZSA0NzogdGhpcy4kID0gWyQkWyQwXV07Ci1i
cmVhazsKLX0KLX0sCi10YWJsZTogW3szOjEsNDoyLDU6WzIsN10sNjozLDc6NCw4OjYsOTo3LDEx
OjgsMTI6OSwxMzoxMCwxNDpbMSwxMV0sMTU6WzEsMTJdLDE2OlsxLDEzXSwxOTpbMSw1XSwyMjpb
MSwxNF0sMjM6WzEsMTVdLDI0OlsxLDE2XX0sezE6WzNdfSx7NTpbMSwxN119LHs1OlsyLDZdLDc6
MTgsODo2LDk6NywxMTo4LDEyOjksMTM6MTAsMTQ6WzEsMTFdLDE1OlsxLDEyXSwxNjpbMSwxM10s
MTk6WzEsMTldLDIwOlsyLDZdLDIyOlsxLDE0XSwyMzpbMSwxNV0sMjQ6WzEsMTZdfSx7NTpbMiw1
XSw2OjIwLDg6MjEsOTo3LDExOjgsMTI6OSwxMzoxMCwxNDpbMSwxMV0sMTU6WzEsMTJdLDE2Olsx
LDEzXSwxOTpbMSw1XSwyMDpbMiw1XSwyMjpbMSwxNF0sMjM6WzEsMTVdLDI0OlsxLDE2XX0sezE3
OjIzLDE4OlsxLDIyXSwyMToyNCwyODpbMSwyNV0sMzU6WzEsMjddLDM4OjI2fSx7NTpbMiw4XSwx
NDpbMiw4XSwxNTpbMiw4XSwxNjpbMiw4XSwxOTpbMiw4XSwyMDpbMiw4XSwyMjpbMiw4XSwyMzpb
Miw4XSwyNDpbMiw4XX0sezQ6MjgsNjozLDc6NCw4OjYsOTo3LDExOjgsMTI6OSwxMzoxMCwxNDpb
MSwxMV0sMTU6WzEsMTJdLDE2OlsxLDEzXSwxOTpbMSw1XSwyMDpbMiw3XSwyMjpbMSwxNF0sMjM6
WzEsMTVdLDI0OlsxLDE2XX0sezQ6MjksNjozLDc6NCw4OjYsOTo3LDExOjgsMTI6OSwxMzoxMCwx
NDpbMSwxMV0sMTU6WzEsMTJdLDE2OlsxLDEzXSwxOTpbMSw1XSwyMDpbMiw3XSwyMjpbMSwxNF0s
MjM6WzEsMTVdLDI0OlsxLDE2XX0sezU6WzIsMTJdLDE0OlsyLDEyXSwxNTpbMiwxMl0sMTY6WzIs
MTJdLDE5OlsyLDEyXSwyMDpbMiwxMl0sMjI6WzIsMTJdLDIzOlsyLDEyXSwyNDpbMiwxMl19LHs1
OlsyLDEzXSwxNDpbMiwxM10sMTU6WzIsMTNdLDE2OlsyLDEzXSwxOTpbMiwxM10sMjA6WzIsMTNd
LDIyOlsyLDEzXSwyMzpbMiwxM10sMjQ6WzIsMTNdfSx7NTpbMiwxNF0sMTQ6WzIsMTRdLDE1Olsy
LDE0XSwxNjpbMiwxNF0sMTk6WzIsMTRdLDIwOlsyLDE0XSwyMjpbMiwxNF0sMjM6WzIsMTRdLDI0
OlsyLDE0XX0sezU6WzIsMTVdLDE0OlsyLDE1XSwxNTpbMiwxNV0sMTY6WzIsMTVdLDE5OlsyLDE1
XSwyMDpbMiwxNV0sMjI6WzIsMTVdLDIzOlsyLDE1XSwyNDpbMiwxNV19LHsxNzozMCwyMToyNCwy
ODpbMSwyNV0sMzU6WzEsMjddLDM4OjI2fSx7MTc6MzEsMjE6MjQsMjg6WzEsMjVdLDM1OlsxLDI3
XSwzODoyNn0sezE3OjMyLDIxOjI0LDI4OlsxLDI1XSwzNTpbMSwyN10sMzg6MjZ9LHsyNTozMywz
NzpbMSwzNF19LHsxOlsyLDFdfSx7NTpbMiwyXSw4OjIxLDk6NywxMTo4LDEyOjksMTM6MTAsMTQ6
WzEsMTFdLDE1OlsxLDEyXSwxNjpbMSwxM10sMTk6WzEsMTldLDIwOlsyLDJdLDIyOlsxLDE0XSwy
MzpbMSwxNV0sMjQ6WzEsMTZdfSx7MTc6MjMsMjE6MjQsMjg6WzEsMjVdLDM1OlsxLDI3XSwzODoy
Nn0sezU6WzIsNF0sNzozNSw4OjYsOTo3LDExOjgsMTI6OSwxMzoxMCwxNDpbMSwxMV0sMTU6WzEs
MTJdLDE2OlsxLDEzXSwxOTpbMSwxOV0sMjA6WzIsNF0sMjI6WzEsMTRdLDIzOlsxLDE1XSwyNDpb
MSwxNl19LHs1OlsyLDldLDE0OlsyLDldLDE1OlsyLDldLDE2OlsyLDldLDE5OlsyLDldLDIwOlsy
LDldLDIyOlsyLDldLDIzOlsyLDldLDI0OlsyLDldfSx7NTpbMiwyM10sMTQ6WzIsMjNdLDE1Olsy
LDIzXSwxNjpbMiwyM10sMTk6WzIsMjNdLDIwOlsyLDIzXSwyMjpbMiwyM10sMjM6WzIsMjNdLDI0
OlsyLDIzXX0sezE4OlsxLDM2XX0sezE4OlsyLDI3XSwyMTo0MSwyNjozNywyNzozOCwyODpbMSw0
NV0sMjk6MzksMzA6WzEsNDJdLDMxOlsxLDQzXSwzMjpbMSw0NF0sMzM6NDAsMzQ6NDYsMzU6WzEs
NDddLDM4OjI2fSx7MTg6WzIsMjhdfSx7MTg6WzIsNDVdLDI4OlsyLDQ1XSwzMDpbMiw0NV0sMzE6
WzIsNDVdLDMyOlsyLDQ1XSwzNTpbMiw0NV0sMzk6WzEsNDhdfSx7MTg6WzIsNDddLDI4OlsyLDQ3
XSwzMDpbMiw0N10sMzE6WzIsNDddLDMyOlsyLDQ3XSwzNTpbMiw0N10sMzk6WzIsNDddfSx7MTA6
NDksMjA6WzEsNTBdfSx7MTA6NTEsMjA6WzEsNTBdfSx7MTg6WzEsNTJdfSx7MTg6WzEsNTNdfSx7
MTg6WzEsNTRdfSx7MTg6WzEsNTVdLDIxOjU2LDM1OlsxLDI3XSwzODoyNn0sezE4OlsyLDQ0XSwz
NTpbMiw0NF19LHs1OlsyLDNdLDg6MjEsOTo3LDExOjgsMTI6OSwxMzoxMCwxNDpbMSwxMV0sMTU6
WzEsMTJdLDE2OlsxLDEzXSwxOTpbMSwxOV0sMjA6WzIsM10sMjI6WzEsMTRdLDIzOlsxLDE1XSwy
NDpbMSwxNl19LHsxNDpbMiwxN10sMTU6WzIsMTddLDE2OlsyLDE3XSwxOTpbMiwxN10sMjA6WzIs
MTddLDIyOlsyLDE3XSwyMzpbMiwxN10sMjQ6WzIsMTddfSx7MTg6WzIsMjVdLDIxOjQxLDI3OjU3
LDI4OlsxLDQ1XSwyOTo1OCwzMDpbMSw0Ml0sMzE6WzEsNDNdLDMyOlsxLDQ0XSwzMzo0MCwzNDo0
NiwzNTpbMSw0N10sMzg6MjZ9LHsxODpbMiwyNl19LHsxODpbMiwzMF0sMjg6WzIsMzBdLDMwOlsy
LDMwXSwzMTpbMiwzMF0sMzI6WzIsMzBdLDM1OlsyLDMwXX0sezE4OlsyLDM2XSwzNDo1OSwzNTpb
MSw2MF19LHsxODpbMiwzMV0sMjg6WzIsMzFdLDMwOlsyLDMxXSwzMTpbMiwzMV0sMzI6WzIsMzFd
LDM1OlsyLDMxXX0sezE4OlsyLDMyXSwyODpbMiwzMl0sMzA6WzIsMzJdLDMxOlsyLDMyXSwzMjpb
MiwzMl0sMzU6WzIsMzJdfSx7MTg6WzIsMzNdLDI4OlsyLDMzXSwzMDpbMiwzM10sMzE6WzIsMzNd
LDMyOlsyLDMzXSwzNTpbMiwzM119LHsxODpbMiwzNF0sMjg6WzIsMzRdLDMwOlsyLDM0XSwzMTpb
MiwzNF0sMzI6WzIsMzRdLDM1OlsyLDM0XX0sezE4OlsyLDM1XSwyODpbMiwzNV0sMzA6WzIsMzVd
LDMxOlsyLDM1XSwzMjpbMiwzNV0sMzU6WzIsMzVdfSx7MTg6WzIsMzhdLDM1OlsyLDM4XX0sezE4
OlsyLDQ3XSwyODpbMiw0N10sMzA6WzIsNDddLDMxOlsyLDQ3XSwzMjpbMiw0N10sMzU6WzIsNDdd
LDM2OlsxLDYxXSwzOTpbMiw0N119LHszNTpbMSw2Ml19LHs1OlsyLDEwXSwxNDpbMiwxMF0sMTU6
WzIsMTBdLDE2OlsyLDEwXSwxOTpbMiwxMF0sMjA6WzIsMTBdLDIyOlsyLDEwXSwyMzpbMiwxMF0s
MjQ6WzIsMTBdfSx7MjE6NjMsMzU6WzEsMjddLDM4OjI2fSx7NTpbMiwxMV0sMTQ6WzIsMTFdLDE1
OlsyLDExXSwxNjpbMiwxMV0sMTk6WzIsMTFdLDIwOlsyLDExXSwyMjpbMiwxMV0sMjM6WzIsMTFd
LDI0OlsyLDExXX0sezE0OlsyLDE2XSwxNTpbMiwxNl0sMTY6WzIsMTZdLDE5OlsyLDE2XSwyMDpb
MiwxNl0sMjI6WzIsMTZdLDIzOlsyLDE2XSwyNDpbMiwxNl19LHs1OlsyLDE5XSwxNDpbMiwxOV0s
MTU6WzIsMTldLDE2OlsyLDE5XSwxOTpbMiwxOV0sMjA6WzIsMTldLDIyOlsyLDE5XSwyMzpbMiwx
OV0sMjQ6WzIsMTldfSx7NTpbMiwyMF0sMTQ6WzIsMjBdLDE1OlsyLDIwXSwxNjpbMiwyMF0sMTk6
WzIsMjBdLDIwOlsyLDIwXSwyMjpbMiwyMF0sMjM6WzIsMjBdLDI0OlsyLDIwXX0sezU6WzIsMjFd
LDE0OlsyLDIxXSwxNTpbMiwyMV0sMTY6WzIsMjFdLDE5OlsyLDIxXSwyMDpbMiwyMV0sMjI6WzIs
MjFdLDIzOlsyLDIxXSwyNDpbMiwyMV19LHsxODpbMSw2NF19LHsxODpbMiwyNF19LHsxODpbMiwy
OV0sMjg6WzIsMjldLDMwOlsyLDI5XSwzMTpbMiwyOV0sMzI6WzIsMjldLDM1OlsyLDI5XX0sezE4
OlsyLDM3XSwzNTpbMiwzN119LHszNjpbMSw2MV19LHsyMTo2NSwyODpbMSw2OV0sMzA6WzEsNjZd
LDMxOlsxLDY3XSwzMjpbMSw2OF0sMzU6WzEsMjddLDM4OjI2fSx7MTg6WzIsNDZdLDI4OlsyLDQ2
XSwzMDpbMiw0Nl0sMzE6WzIsNDZdLDMyOlsyLDQ2XSwzNTpbMiw0Nl0sMzk6WzIsNDZdfSx7MTg6
WzEsNzBdfSx7NTpbMiwyMl0sMTQ6WzIsMjJdLDE1OlsyLDIyXSwxNjpbMiwyMl0sMTk6WzIsMjJd
LDIwOlsyLDIyXSwyMjpbMiwyMl0sMjM6WzIsMjJdLDI0OlsyLDIyXX0sezE4OlsyLDM5XSwzNTpb
MiwzOV19LHsxODpbMiw0MF0sMzU6WzIsNDBdfSx7MTg6WzIsNDFdLDM1OlsyLDQxXX0sezE4Olsy
LDQyXSwzNTpbMiw0Ml19LHsxODpbMiw0M10sMzU6WzIsNDNdfSx7NTpbMiwxOF0sMTQ6WzIsMThd
LDE1OlsyLDE4XSwxNjpbMiwxOF0sMTk6WzIsMThdLDIwOlsyLDE4XSwyMjpbMiwxOF0sMjM6WzIs
MThdLDI0OlsyLDE4XX1dLAotZGVmYXVsdEFjdGlvbnM6IHsxNzpbMiwxXSwyNTpbMiwyOF0sMzg6
WzIsMjZdLDU3OlsyLDI0XX0sCi1wYXJzZUVycm9yOiBmdW5jdGlvbiBwYXJzZUVycm9yKHN0ciwg
aGFzaCkgewotICAgIHRocm93IG5ldyBFcnJvcihzdHIpOwotfSwKLXBhcnNlOiBmdW5jdGlvbiBw
YXJzZShpbnB1dCkgewotICAgIHZhciBzZWxmID0gdGhpcywgc3RhY2sgPSBbMF0sIHZzdGFjayA9
IFtudWxsXSwgbHN0YWNrID0gW10sIHRhYmxlID0gdGhpcy50YWJsZSwgeXl0ZXh0ID0gIiIsIHl5
bGluZW5vID0gMCwgeXlsZW5nID0gMCwgcmVjb3ZlcmluZyA9IDAsIFRFUlJPUiA9IDIsIEVPRiA9
IDE7Ci0gICAgdGhpcy5sZXhlci5zZXRJbnB1dChpbnB1dCk7Ci0gICAgdGhpcy5sZXhlci55eSA9
IHRoaXMueXk7Ci0gICAgdGhpcy55eS5sZXhlciA9IHRoaXMubGV4ZXI7Ci0gICAgdGhpcy55eS5w
YXJzZXIgPSB0aGlzOwotICAgIGlmICh0eXBlb2YgdGhpcy5sZXhlci55eWxsb2MgPT0gInVuZGVm
aW5lZCIpCi0gICAgICAgIHRoaXMubGV4ZXIueXlsbG9jID0ge307Ci0gICAgdmFyIHl5bG9jID0g
dGhpcy5sZXhlci55eWxsb2M7Ci0gICAgbHN0YWNrLnB1c2goeXlsb2MpOwotICAgIHZhciByYW5n
ZXMgPSB0aGlzLmxleGVyLm9wdGlvbnMgJiYgdGhpcy5sZXhlci5vcHRpb25zLnJhbmdlczsKLSAg
ICBpZiAodHlwZW9mIHRoaXMueXkucGFyc2VFcnJvciA9PT0gImZ1bmN0aW9uIikKLSAgICAgICAg
dGhpcy5wYXJzZUVycm9yID0gdGhpcy55eS5wYXJzZUVycm9yOwotICAgIGZ1bmN0aW9uIHBvcFN0
YWNrKG4pIHsKLSAgICAgICAgc3RhY2subGVuZ3RoID0gc3RhY2subGVuZ3RoIC0gMiAqIG47Ci0g
ICAgICAgIHZzdGFjay5sZW5ndGggPSB2c3RhY2subGVuZ3RoIC0gbjsKLSAgICAgICAgbHN0YWNr
Lmxlbmd0aCA9IGxzdGFjay5sZW5ndGggLSBuOwotICAgIH0KLSAgICBmdW5jdGlvbiBsZXgoKSB7
Ci0gICAgICAgIHZhciB0b2tlbjsKLSAgICAgICAgdG9rZW4gPSBzZWxmLmxleGVyLmxleCgpIHx8
IDE7Ci0gICAgICAgIGlmICh0eXBlb2YgdG9rZW4gIT09ICJudW1iZXIiKSB7Ci0gICAgICAgICAg
ICB0b2tlbiA9IHNlbGYuc3ltYm9sc19bdG9rZW5dIHx8IHRva2VuOwotICAgICAgICB9Ci0gICAg
ICAgIHJldHVybiB0b2tlbjsKLSAgICB9Ci0gICAgdmFyIHN5bWJvbCwgcHJlRXJyb3JTeW1ib2ws
IHN0YXRlLCBhY3Rpb24sIGEsIHIsIHl5dmFsID0ge30sIHAsIGxlbiwgbmV3U3RhdGUsIGV4cGVj
dGVkOwotICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIHN0YXRlID0gc3RhY2tbc3RhY2subGVu
Z3RoIC0gMV07Ci0gICAgICAgIGlmICh0aGlzLmRlZmF1bHRBY3Rpb25zW3N0YXRlXSkgewotICAg
ICAgICAgICAgYWN0aW9uID0gdGhpcy5kZWZhdWx0QWN0aW9uc1tzdGF0ZV07Ci0gICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICBpZiAoc3ltYm9sID09PSBudWxsIHx8IHR5cGVvZiBzeW1ib2wg
PT0gInVuZGVmaW5lZCIpIHsKLSAgICAgICAgICAgICAgICBzeW1ib2wgPSBsZXgoKTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGFjdGlvbiA9IHRhYmxlW3N0YXRlXSAmJiB0YWJsZVtzdGF0
ZV1bc3ltYm9sXTsKLSAgICAgICAgfQotICAgICAgICBpZiAodHlwZW9mIGFjdGlvbiA9PT0gInVu
ZGVmaW5lZCIgfHwgIWFjdGlvbi5sZW5ndGggfHwgIWFjdGlvblswXSkgewotICAgICAgICAgICAg
dmFyIGVyclN0ciA9ICIiOwotICAgICAgICAgICAgaWYgKCFyZWNvdmVyaW5nKSB7Ci0gICAgICAg
ICAgICAgICAgZXhwZWN0ZWQgPSBbXTsKLSAgICAgICAgICAgICAgICBmb3IgKHAgaW4gdGFibGVb
c3RhdGVdKQotICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy50ZXJtaW5hbHNfW3BdICYmIHAg
PiAyKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZC5wdXNoKCInIiArIHRoaXMu
dGVybWluYWxzX1twXSArICInIik7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICBpZiAodGhpcy5sZXhlci5zaG93UG9zaXRpb24pIHsKLSAgICAgICAgICAgICAgICAgICAg
ZXJyU3RyID0gIlBhcnNlIGVycm9yIG9uIGxpbmUgIiArICh5eWxpbmVubyArIDEpICsgIjpcbiIg
KyB0aGlzLmxleGVyLnNob3dQb3NpdGlvbigpICsgIlxuRXhwZWN0aW5nICIgKyBleHBlY3RlZC5q
b2luKCIsICIpICsgIiwgZ290ICciICsgKHRoaXMudGVybWluYWxzX1tzeW1ib2xdIHx8IHN5bWJv
bCkgKyAiJyI7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAg
ZXJyU3RyID0gIlBhcnNlIGVycm9yIG9uIGxpbmUgIiArICh5eWxpbmVubyArIDEpICsgIjogVW5l
eHBlY3RlZCAiICsgKHN5bWJvbCA9PSAxPyJlbmQgb2YgaW5wdXQiOiInIiArICh0aGlzLnRlcm1p
bmFsc19bc3ltYm9sXSB8fCBzeW1ib2wpICsgIiciKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgdGhpcy5wYXJzZUVycm9yKGVyclN0ciwge3RleHQ6IHRoaXMubGV4ZXIubWF0
Y2gsIHRva2VuOiB0aGlzLnRlcm1pbmFsc19bc3ltYm9sXSB8fCBzeW1ib2wsIGxpbmU6IHRoaXMu
bGV4ZXIueXlsaW5lbm8sIGxvYzogeXlsb2MsIGV4cGVjdGVkOiBleHBlY3RlZH0pOwotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGlmIChhY3Rpb25bMF0gaW5zdGFuY2VvZiBBcnJh
eSAmJiBhY3Rpb24ubGVuZ3RoID4gMSkgewotICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJQ
YXJzZSBFcnJvcjogbXVsdGlwbGUgYWN0aW9ucyBwb3NzaWJsZSBhdCBzdGF0ZTogIiArIHN0YXRl
ICsgIiwgdG9rZW46ICIgKyBzeW1ib2wpOwotICAgICAgICB9Ci0gICAgICAgIHN3aXRjaCAoYWN0
aW9uWzBdKSB7Ci0gICAgICAgIGNhc2UgMToKLSAgICAgICAgICAgIHN0YWNrLnB1c2goc3ltYm9s
KTsKLSAgICAgICAgICAgIHZzdGFjay5wdXNoKHRoaXMubGV4ZXIueXl0ZXh0KTsKLSAgICAgICAg
ICAgIGxzdGFjay5wdXNoKHRoaXMubGV4ZXIueXlsbG9jKTsKLSAgICAgICAgICAgIHN0YWNrLnB1
c2goYWN0aW9uWzFdKTsKLSAgICAgICAgICAgIHN5bWJvbCA9IG51bGw7Ci0gICAgICAgICAgICBp
ZiAoIXByZUVycm9yU3ltYm9sKSB7Ci0gICAgICAgICAgICAgICAgeXlsZW5nID0gdGhpcy5sZXhl
ci55eWxlbmc7Ci0gICAgICAgICAgICAgICAgeXl0ZXh0ID0gdGhpcy5sZXhlci55eXRleHQ7Ci0g
ICAgICAgICAgICAgICAgeXlsaW5lbm8gPSB0aGlzLmxleGVyLnl5bGluZW5vOwotICAgICAgICAg
ICAgICAgIHl5bG9jID0gdGhpcy5sZXhlci55eWxsb2M7Ci0gICAgICAgICAgICAgICAgaWYgKHJl
Y292ZXJpbmcgPiAwKQotICAgICAgICAgICAgICAgICAgICByZWNvdmVyaW5nLS07Ci0gICAgICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHN5bWJvbCA9IHByZUVycm9yU3ltYm9sOwot
ICAgICAgICAgICAgICAgIHByZUVycm9yU3ltYm9sID0gbnVsbDsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAgICBsZW4gPSB0aGlz
LnByb2R1Y3Rpb25zX1thY3Rpb25bMV1dWzFdOwotICAgICAgICAgICAgeXl2YWwuJCA9IHZzdGFj
a1t2c3RhY2subGVuZ3RoIC0gbGVuXTsKLSAgICAgICAgICAgIHl5dmFsLl8kID0ge2ZpcnN0X2xp
bmU6IGxzdGFja1tsc3RhY2subGVuZ3RoIC0gKGxlbiB8fCAxKV0uZmlyc3RfbGluZSwgbGFzdF9s
aW5lOiBsc3RhY2tbbHN0YWNrLmxlbmd0aCAtIDFdLmxhc3RfbGluZSwgZmlyc3RfY29sdW1uOiBs
c3RhY2tbbHN0YWNrLmxlbmd0aCAtIChsZW4gfHwgMSldLmZpcnN0X2NvbHVtbiwgbGFzdF9jb2x1
bW46IGxzdGFja1tsc3RhY2subGVuZ3RoIC0gMV0ubGFzdF9jb2x1bW59OwotICAgICAgICAgICAg
aWYgKHJhbmdlcykgewotICAgICAgICAgICAgICAgIHl5dmFsLl8kLnJhbmdlID0gW2xzdGFja1ts
c3RhY2subGVuZ3RoIC0gKGxlbiB8fCAxKV0ucmFuZ2VbMF0sIGxzdGFja1tsc3RhY2subGVuZ3Ro
IC0gMV0ucmFuZ2VbMV1dOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgciA9IHRoaXMucGVy
Zm9ybUFjdGlvbi5jYWxsKHl5dmFsLCB5eXRleHQsIHl5bGVuZywgeXlsaW5lbm8sIHRoaXMueXks
IGFjdGlvblsxXSwgdnN0YWNrLCBsc3RhY2spOwotICAgICAgICAgICAgaWYgKHR5cGVvZiByICE9
PSAidW5kZWZpbmVkIikgewotICAgICAgICAgICAgICAgIHJldHVybiByOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgaWYgKGxlbikgewotICAgICAgICAgICAgICAgIHN0YWNrID0gc3RhY2su
c2xpY2UoMCwgLTEgKiBsZW4gKiAyKTsKLSAgICAgICAgICAgICAgICB2c3RhY2sgPSB2c3RhY2su
c2xpY2UoMCwgLTEgKiBsZW4pOwotICAgICAgICAgICAgICAgIGxzdGFjayA9IGxzdGFjay5zbGlj
ZSgwLCAtMSAqIGxlbik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzdGFjay5wdXNoKHRo
aXMucHJvZHVjdGlvbnNfW2FjdGlvblsxXV1bMF0pOwotICAgICAgICAgICAgdnN0YWNrLnB1c2go
eXl2YWwuJCk7Ci0gICAgICAgICAgICBsc3RhY2sucHVzaCh5eXZhbC5fJCk7Ci0gICAgICAgICAg
ICBuZXdTdGF0ZSA9IHRhYmxlW3N0YWNrW3N0YWNrLmxlbmd0aCAtIDJdXVtzdGFja1tzdGFjay5s
ZW5ndGggLSAxXV07Ci0gICAgICAgICAgICBzdGFjay5wdXNoKG5ld1N0YXRlKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIDM6Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLX07Ci0vKiBKaXNvbiBnZW5lcmF0
ZWQgbGV4ZXIgKi8KLXZhciBsZXhlciA9IChmdW5jdGlvbigpewotdmFyIGxleGVyID0gKHtFT0Y6
MSwKLXBhcnNlRXJyb3I6ZnVuY3Rpb24gcGFyc2VFcnJvcihzdHIsIGhhc2gpIHsKLSAgICAgICAg
aWYgKHRoaXMueXkucGFyc2VyKSB7Ci0gICAgICAgICAgICB0aGlzLnl5LnBhcnNlci5wYXJzZUVy
cm9yKHN0ciwgaGFzaCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB0aHJvdyBuZXcg
RXJyb3Ioc3RyKTsKLSAgICAgICAgfQotICAgIH0sCi1zZXRJbnB1dDpmdW5jdGlvbiAoaW5wdXQp
IHsKLSAgICAgICAgdGhpcy5faW5wdXQgPSBpbnB1dDsKLSAgICAgICAgdGhpcy5fbW9yZSA9IHRo
aXMuX2xlc3MgPSB0aGlzLmRvbmUgPSBmYWxzZTsKLSAgICAgICAgdGhpcy55eWxpbmVubyA9IHRo
aXMueXlsZW5nID0gMDsKLSAgICAgICAgdGhpcy55eXRleHQgPSB0aGlzLm1hdGNoZWQgPSB0aGlz
Lm1hdGNoID0gJyc7Ci0gICAgICAgIHRoaXMuY29uZGl0aW9uU3RhY2sgPSBbJ0lOSVRJQUwnXTsK
LSAgICAgICAgdGhpcy55eWxsb2MgPSB7Zmlyc3RfbGluZToxLGZpcnN0X2NvbHVtbjowLGxhc3Rf
bGluZToxLGxhc3RfY29sdW1uOjB9OwotICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJhbmdlcykg
dGhpcy55eWxsb2MucmFuZ2UgPSBbMCwwXTsKLSAgICAgICAgdGhpcy5vZmZzZXQgPSAwOwotICAg
ICAgICByZXR1cm4gdGhpczsKLSAgICB9LAotaW5wdXQ6ZnVuY3Rpb24gKCkgewotICAgICAgICB2
YXIgY2ggPSB0aGlzLl9pbnB1dFswXTsKLSAgICAgICAgdGhpcy55eXRleHQgKz0gY2g7Ci0gICAg
ICAgIHRoaXMueXlsZW5nKys7Ci0gICAgICAgIHRoaXMub2Zmc2V0Kys7Ci0gICAgICAgIHRoaXMu
bWF0Y2ggKz0gY2g7Ci0gICAgICAgIHRoaXMubWF0Y2hlZCArPSBjaDsKLSAgICAgICAgdmFyIGxp
bmVzID0gY2gubWF0Y2goLyg/OlxyXG4/fFxuKS4qL2cpOwotICAgICAgICBpZiAobGluZXMpIHsK
LSAgICAgICAgICAgIHRoaXMueXlsaW5lbm8rKzsKLSAgICAgICAgICAgIHRoaXMueXlsbG9jLmxh
c3RfbGluZSsrOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdGhpcy55eWxsb2MubGFz
dF9jb2x1bW4rKzsKLSAgICAgICAgfQotICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJhbmdlcykg
dGhpcy55eWxsb2MucmFuZ2VbMV0rKzsKLQotICAgICAgICB0aGlzLl9pbnB1dCA9IHRoaXMuX2lu
cHV0LnNsaWNlKDEpOwotICAgICAgICByZXR1cm4gY2g7Ci0gICAgfSwKLXVucHV0OmZ1bmN0aW9u
IChjaCkgewotICAgICAgICB2YXIgbGVuID0gY2gubGVuZ3RoOwotICAgICAgICB2YXIgbGluZXMg
PSBjaC5zcGxpdCgvKD86XHJcbj98XG4pL2cpOwotCi0gICAgICAgIHRoaXMuX2lucHV0ID0gY2gg
KyB0aGlzLl9pbnB1dDsKLSAgICAgICAgdGhpcy55eXRleHQgPSB0aGlzLnl5dGV4dC5zdWJzdHIo
MCwgdGhpcy55eXRleHQubGVuZ3RoLWxlbi0xKTsKLSAgICAgICAgLy90aGlzLnl5bGVuZyAtPSBs
ZW47Ci0gICAgICAgIHRoaXMub2Zmc2V0IC09IGxlbjsKLSAgICAgICAgdmFyIG9sZExpbmVzID0g
dGhpcy5tYXRjaC5zcGxpdCgvKD86XHJcbj98XG4pL2cpOwotICAgICAgICB0aGlzLm1hdGNoID0g
dGhpcy5tYXRjaC5zdWJzdHIoMCwgdGhpcy5tYXRjaC5sZW5ndGgtMSk7Ci0gICAgICAgIHRoaXMu
bWF0Y2hlZCA9IHRoaXMubWF0Y2hlZC5zdWJzdHIoMCwgdGhpcy5tYXRjaGVkLmxlbmd0aC0xKTsK
LQotICAgICAgICBpZiAobGluZXMubGVuZ3RoLTEpIHRoaXMueXlsaW5lbm8gLT0gbGluZXMubGVu
Z3RoLTE7Ci0gICAgICAgIHZhciByID0gdGhpcy55eWxsb2MucmFuZ2U7Ci0KLSAgICAgICAgdGhp
cy55eWxsb2MgPSB7Zmlyc3RfbGluZTogdGhpcy55eWxsb2MuZmlyc3RfbGluZSwKLSAgICAgICAg
ICBsYXN0X2xpbmU6IHRoaXMueXlsaW5lbm8rMSwKLSAgICAgICAgICBmaXJzdF9jb2x1bW46IHRo
aXMueXlsbG9jLmZpcnN0X2NvbHVtbiwKLSAgICAgICAgICBsYXN0X2NvbHVtbjogbGluZXMgPwot
ICAgICAgICAgICAgICAobGluZXMubGVuZ3RoID09PSBvbGRMaW5lcy5sZW5ndGggPyB0aGlzLnl5
bGxvYy5maXJzdF9jb2x1bW4gOiAwKSArIG9sZExpbmVzW29sZExpbmVzLmxlbmd0aCAtIGxpbmVz
Lmxlbmd0aF0ubGVuZ3RoIC0gbGluZXNbMF0ubGVuZ3RoOgotICAgICAgICAgICAgICB0aGlzLnl5
bGxvYy5maXJzdF9jb2x1bW4gLSBsZW4KLSAgICAgICAgICB9OwotCi0gICAgICAgIGlmICh0aGlz
Lm9wdGlvbnMucmFuZ2VzKSB7Ci0gICAgICAgICAgICB0aGlzLnl5bGxvYy5yYW5nZSA9IFtyWzBd
LCByWzBdICsgdGhpcy55eWxlbmcgLSBsZW5dOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0
aGlzOwotICAgIH0sCi1tb3JlOmZ1bmN0aW9uICgpIHsKLSAgICAgICAgdGhpcy5fbW9yZSA9IHRy
dWU7Ci0gICAgICAgIHJldHVybiB0aGlzOwotICAgIH0sCi1sZXNzOmZ1bmN0aW9uIChuKSB7Ci0g
ICAgICAgIHRoaXMudW5wdXQodGhpcy5tYXRjaC5zbGljZShuKSk7Ci0gICAgfSwKLXBhc3RJbnB1
dDpmdW5jdGlvbiAoKSB7Ci0gICAgICAgIHZhciBwYXN0ID0gdGhpcy5tYXRjaGVkLnN1YnN0cigw
LCB0aGlzLm1hdGNoZWQubGVuZ3RoIC0gdGhpcy5tYXRjaC5sZW5ndGgpOwotICAgICAgICByZXR1
cm4gKHBhc3QubGVuZ3RoID4gMjAgPyAnLi4uJzonJykgKyBwYXN0LnN1YnN0cigtMjApLnJlcGxh
Y2UoL1xuL2csICIiKTsKLSAgICB9LAotdXBjb21pbmdJbnB1dDpmdW5jdGlvbiAoKSB7Ci0gICAg
ICAgIHZhciBuZXh0ID0gdGhpcy5tYXRjaDsKLSAgICAgICAgaWYgKG5leHQubGVuZ3RoIDwgMjAp
IHsKLSAgICAgICAgICAgIG5leHQgKz0gdGhpcy5faW5wdXQuc3Vic3RyKDAsIDIwLW5leHQubGVu
Z3RoKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gKG5leHQuc3Vic3RyKDAsMjApKyhuZXh0
Lmxlbmd0aCA+IDIwID8gJy4uLic6JycpKS5yZXBsYWNlKC9cbi9nLCAiIik7Ci0gICAgfSwKLXNo
b3dQb3NpdGlvbjpmdW5jdGlvbiAoKSB7Ci0gICAgICAgIHZhciBwcmUgPSB0aGlzLnBhc3RJbnB1
dCgpOwotICAgICAgICB2YXIgYyA9IG5ldyBBcnJheShwcmUubGVuZ3RoICsgMSkuam9pbigiLSIp
OwotICAgICAgICByZXR1cm4gcHJlICsgdGhpcy51cGNvbWluZ0lucHV0KCkgKyAiXG4iICsgYysi
XiI7Ci0gICAgfSwKLW5leHQ6ZnVuY3Rpb24gKCkgewotICAgICAgICBpZiAodGhpcy5kb25lKSB7
Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5FT0Y7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCF0
aGlzLl9pbnB1dCkgdGhpcy5kb25lID0gdHJ1ZTsKLQotICAgICAgICB2YXIgdG9rZW4sCi0gICAg
ICAgICAgICBtYXRjaCwKLSAgICAgICAgICAgIHRlbXBNYXRjaCwKLSAgICAgICAgICAgIGluZGV4
LAotICAgICAgICAgICAgY29sLAotICAgICAgICAgICAgbGluZXM7Ci0gICAgICAgIGlmICghdGhp
cy5fbW9yZSkgewotICAgICAgICAgICAgdGhpcy55eXRleHQgPSAnJzsKLSAgICAgICAgICAgIHRo
aXMubWF0Y2ggPSAnJzsKLSAgICAgICAgfQotICAgICAgICB2YXIgcnVsZXMgPSB0aGlzLl9jdXJy
ZW50UnVsZXMoKTsKLSAgICAgICAgZm9yICh2YXIgaT0wO2kgPCBydWxlcy5sZW5ndGg7IGkrKykg
ewotICAgICAgICAgICAgdGVtcE1hdGNoID0gdGhpcy5faW5wdXQubWF0Y2godGhpcy5ydWxlc1ty
dWxlc1tpXV0pOwotICAgICAgICAgICAgaWYgKHRlbXBNYXRjaCAmJiAoIW1hdGNoIHx8IHRlbXBN
YXRjaFswXS5sZW5ndGggPiBtYXRjaFswXS5sZW5ndGgpKSB7Ci0gICAgICAgICAgICAgICAgbWF0
Y2ggPSB0ZW1wTWF0Y2g7Ci0gICAgICAgICAgICAgICAgaW5kZXggPSBpOwotICAgICAgICAgICAg
ICAgIGlmICghdGhpcy5vcHRpb25zLmZsZXgpIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0gICAgICAgIGlmIChtYXRjaCkgewotICAgICAgICAgICAgbGluZXMgPSBtYXRjaFswXS5t
YXRjaCgvKD86XHJcbj98XG4pLiovZyk7Ci0gICAgICAgICAgICBpZiAobGluZXMpIHRoaXMueXls
aW5lbm8gKz0gbGluZXMubGVuZ3RoOwotICAgICAgICAgICAgdGhpcy55eWxsb2MgPSB7Zmlyc3Rf
bGluZTogdGhpcy55eWxsb2MubGFzdF9saW5lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
bGFzdF9saW5lOiB0aGlzLnl5bGluZW5vKzEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBm
aXJzdF9jb2x1bW46IHRoaXMueXlsbG9jLmxhc3RfY29sdW1uLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbGFzdF9jb2x1bW46IGxpbmVzID8gbGluZXNbbGluZXMubGVuZ3RoLTFdLmxlbmd0
aC1saW5lc1tsaW5lcy5sZW5ndGgtMV0ubWF0Y2goL1xyP1xuPy8pWzBdLmxlbmd0aCA6IHRoaXMu
eXlsbG9jLmxhc3RfY29sdW1uICsgbWF0Y2hbMF0ubGVuZ3RofTsKLSAgICAgICAgICAgIHRoaXMu
eXl0ZXh0ICs9IG1hdGNoWzBdOwotICAgICAgICAgICAgdGhpcy5tYXRjaCArPSBtYXRjaFswXTsK
LSAgICAgICAgICAgIHRoaXMubWF0Y2hlcyA9IG1hdGNoOwotICAgICAgICAgICAgdGhpcy55eWxl
bmcgPSB0aGlzLnl5dGV4dC5sZW5ndGg7Ci0gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJh
bmdlcykgewotICAgICAgICAgICAgICAgIHRoaXMueXlsbG9jLnJhbmdlID0gW3RoaXMub2Zmc2V0
LCB0aGlzLm9mZnNldCArPSB0aGlzLnl5bGVuZ107Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB0aGlzLl9tb3JlID0gZmFsc2U7Ci0gICAgICAgICAgICB0aGlzLl9pbnB1dCA9IHRoaXMuX2lu
cHV0LnNsaWNlKG1hdGNoWzBdLmxlbmd0aCk7Ci0gICAgICAgICAgICB0aGlzLm1hdGNoZWQgKz0g
bWF0Y2hbMF07Ci0gICAgICAgICAgICB0b2tlbiA9IHRoaXMucGVyZm9ybUFjdGlvbi5jYWxsKHRo
aXMsIHRoaXMueXksIHRoaXMsIHJ1bGVzW2luZGV4XSx0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMu
Y29uZGl0aW9uU3RhY2subGVuZ3RoLTFdKTsKLSAgICAgICAgICAgIGlmICh0aGlzLmRvbmUgJiYg
dGhpcy5faW5wdXQpIHRoaXMuZG9uZSA9IGZhbHNlOwotICAgICAgICAgICAgaWYgKHRva2VuKSBy
ZXR1cm4gdG9rZW47Ci0gICAgICAgICAgICBlbHNlIHJldHVybjsKLSAgICAgICAgfQotICAgICAg
ICBpZiAodGhpcy5faW5wdXQgPT09ICIiKSB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5FT0Y7
Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJzZUVycm9yKCdM
ZXhpY2FsIGVycm9yIG9uIGxpbmUgJysodGhpcy55eWxpbmVubysxKSsnLiBVbnJlY29nbml6ZWQg
dGV4dC5cbicrdGhpcy5zaG93UG9zaXRpb24oKSwKLSAgICAgICAgICAgICAgICAgICAge3RleHQ6
ICIiLCB0b2tlbjogbnVsbCwgbGluZTogdGhpcy55eWxpbmVub30pOwotICAgICAgICB9Ci0gICAg
fSwKLWxleDpmdW5jdGlvbiBsZXgoKSB7Ci0gICAgICAgIHZhciByID0gdGhpcy5uZXh0KCk7Ci0g
ICAgICAgIGlmICh0eXBlb2YgciAhPT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAgICAgIHJldHVy
biByOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMubGV4KCk7Ci0g
ICAgICAgIH0KLSAgICB9LAotYmVnaW46ZnVuY3Rpb24gYmVnaW4oY29uZGl0aW9uKSB7Ci0gICAg
ICAgIHRoaXMuY29uZGl0aW9uU3RhY2sucHVzaChjb25kaXRpb24pOwotICAgIH0sCi1wb3BTdGF0
ZTpmdW5jdGlvbiBwb3BTdGF0ZSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uU3Rh
Y2sucG9wKCk7Ci0gICAgfSwKLV9jdXJyZW50UnVsZXM6ZnVuY3Rpb24gX2N1cnJlbnRSdWxlcygp
IHsKLSAgICAgICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uc1t0aGlzLmNvbmRpdGlvblN0YWNrW3Ro
aXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTFdXS5ydWxlczsKLSAgICB9LAotdG9wU3RhdGU6ZnVu
Y3Rpb24gKCkgewotICAgICAgICByZXR1cm4gdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRp
dGlvblN0YWNrLmxlbmd0aC0yXTsKLSAgICB9LAotcHVzaFN0YXRlOmZ1bmN0aW9uIGJlZ2luKGNv
bmRpdGlvbikgewotICAgICAgICB0aGlzLmJlZ2luKGNvbmRpdGlvbik7Ci0gICAgfX0pOwotbGV4
ZXIub3B0aW9ucyA9IHt9OwotbGV4ZXIucGVyZm9ybUFjdGlvbiA9IGZ1bmN0aW9uIGFub255bW91
cyh5eSx5eV8sJGF2b2lkaW5nX25hbWVfY29sbGlzaW9ucyxZWV9TVEFSVCkgewotCi12YXIgWVlT
VEFURT1ZWV9TVEFSVAotc3dpdGNoKCRhdm9pZGluZ19uYW1lX2NvbGxpc2lvbnMpIHsKLWNhc2Ug
MDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoeXlfLnl5dGV4dC5zbGlj
ZSgtMSkgIT09ICJcXCIpIHRoaXMuYmVnaW4oIm11Iik7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmKHl5Xy55eXRleHQuc2xpY2UoLTEpID09PSAiXFwiKSB5eV8ueXl0ZXh0
ID0geXlfLnl5dGV4dC5zdWJzdHIoMCx5eV8ueXlsZW5nLTEpLCB0aGlzLmJlZ2luKCJlbXUiKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoeXlfLnl5dGV4dCkgcmV0dXJu
IDE0OwotCi1icmVhazsKLWNhc2UgMTogcmV0dXJuIDE0OwotYnJlYWs7Ci1jYXNlIDI6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHl5Xy55eXRleHQuc2xpY2UoLTEpICE9
PSAiXFwiKSB0aGlzLnBvcFN0YXRlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmKHl5Xy55eXRleHQuc2xpY2UoLTEpID09PSAiXFwiKSB5eV8ueXl0ZXh0ID0geXlfLnl5
dGV4dC5zdWJzdHIoMCx5eV8ueXlsZW5nLTEpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gMTQ7Ci0KLWJyZWFrOwotY2FzZSAzOiB5eV8ueXl0ZXh0ID0geXlfLnl5
dGV4dC5zdWJzdHIoMCwgeXlfLnl5bGVuZy00KTsgdGhpcy5wb3BTdGF0ZSgpOyByZXR1cm4gMTU7
Ci1icmVhazsKLWNhc2UgNDogdGhpcy5iZWdpbigicGFyIik7IHJldHVybiAyNDsKLWJyZWFrOwot
Y2FzZSA1OiByZXR1cm4gMTY7Ci1icmVhazsKLWNhc2UgNjogcmV0dXJuIDIwOwotYnJlYWs7Ci1j
YXNlIDc6IHJldHVybiAxOTsKLWJyZWFrOwotY2FzZSA4OiByZXR1cm4gMTk7Ci1icmVhazsKLWNh
c2UgOTogcmV0dXJuIDIzOwotYnJlYWs7Ci1jYXNlIDEwOiByZXR1cm4gMjM7Ci1icmVhazsKLWNh
c2UgMTE6IHRoaXMucG9wU3RhdGUoKTsgdGhpcy5iZWdpbignY29tJyk7Ci1icmVhazsKLWNhc2Ug
MTI6IHl5Xy55eXRleHQgPSB5eV8ueXl0ZXh0LnN1YnN0cigzLHl5Xy55eWxlbmctNSk7IHRoaXMu
cG9wU3RhdGUoKTsgcmV0dXJuIDE1OwotYnJlYWs7Ci1jYXNlIDEzOiByZXR1cm4gMjI7Ci1icmVh
azsKLWNhc2UgMTQ6IHJldHVybiAzNjsKLWJyZWFrOwotY2FzZSAxNTogcmV0dXJuIDM1OwotYnJl
YWs7Ci1jYXNlIDE2OiByZXR1cm4gMzU7Ci1icmVhazsKLWNhc2UgMTc6IHJldHVybiAzOTsKLWJy
ZWFrOwotY2FzZSAxODogLyppZ25vcmUgd2hpdGVzcGFjZSovCi1icmVhazsKLWNhc2UgMTk6IHRo
aXMucG9wU3RhdGUoKTsgcmV0dXJuIDE4OwotYnJlYWs7Ci1jYXNlIDIwOiB0aGlzLnBvcFN0YXRl
KCk7IHJldHVybiAxODsKLWJyZWFrOwotY2FzZSAyMTogeXlfLnl5dGV4dCA9IHl5Xy55eXRleHQu
c3Vic3RyKDEseXlfLnl5bGVuZy0yKS5yZXBsYWNlKC9cXCIvZywnIicpOyByZXR1cm4gMzA7Ci1i
cmVhazsKLWNhc2UgMjI6IHl5Xy55eXRleHQgPSB5eV8ueXl0ZXh0LnN1YnN0cigxLHl5Xy55eWxl
bmctMikucmVwbGFjZSgvXFwnL2csIiciKTsgcmV0dXJuIDMwOwotYnJlYWs7Ci1jYXNlIDIzOiB5
eV8ueXl0ZXh0ID0geXlfLnl5dGV4dC5zdWJzdHIoMSk7IHJldHVybiAyODsKLWJyZWFrOwotY2Fz
ZSAyNDogcmV0dXJuIDMyOwotYnJlYWs7Ci1jYXNlIDI1OiByZXR1cm4gMzI7Ci1icmVhazsKLWNh
c2UgMjY6IHJldHVybiAzMTsKLWJyZWFrOwotY2FzZSAyNzogcmV0dXJuIDM1OwotYnJlYWs7Ci1j
YXNlIDI4OiB5eV8ueXl0ZXh0ID0geXlfLnl5dGV4dC5zdWJzdHIoMSwgeXlfLnl5bGVuZy0yKTsg
cmV0dXJuIDM1OwotYnJlYWs7Ci1jYXNlIDI5OiByZXR1cm4gJ0lOVkFMSUQnOwotYnJlYWs7Ci1j
YXNlIDMwOiAvKmlnbm9yZSB3aGl0ZXNwYWNlKi8KLWJyZWFrOwotY2FzZSAzMTogdGhpcy5wb3BT
dGF0ZSgpOyByZXR1cm4gMzc7Ci1icmVhazsKLWNhc2UgMzI6IHJldHVybiA1OwotYnJlYWs7Ci19
Ci19OwotbGV4ZXIucnVsZXMgPSBbL14oPzpbXlx4MDBdKj8oPz0oXHtceykpKS8sL14oPzpbXlx4
MDBdKykvLC9eKD86W15ceDAwXXsyLH0/KD89KFx7XHt8JCkpKS8sL14oPzpbXHNcU10qPy0tXH1c
fSkvLC9eKD86XHtcez4pLywvXig/Olx7XHsjKS8sL14oPzpce1x7XC8pLywvXig/Olx7XHtcXikv
LC9eKD86XHtce1xzKmVsc2VcYikvLC9eKD86XHtce1x7KS8sL14oPzpce1x7JikvLC9eKD86XHtc
eyEtLSkvLC9eKD86XHtceyFbXHNcU10qP1x9XH0pLywvXig/Olx7XHspLywvXig/Oj0pLywvXig/
OlwuKD89W30gXSkpLywvXig/OlwuXC4pLywvXig/OltcLy5dKS8sL14oPzpccyspLywvXig/Olx9
XH1cfSkvLC9eKD86XH1cfSkvLC9eKD86IihcXFsiXXxbXiJdKSoiKS8sL14oPzonKFxcWyddfFte
J10pKicpLywvXig/OkBbYS16QS1aXSspLywvXig/OnRydWUoPz1bfVxzXSkpLywvXig/OmZhbHNl
KD89W31cc10pKS8sL14oPzpbMC05XSsoPz1bfVxzXSkpLywvXig/OlthLXpBLVowLTlfJC1dKyg/
PVs9fVxzXC8uXSkpLywvXig/OlxbW15cXV0qXF0pLywvXig/Oi4pLywvXig/OlxzKykvLC9eKD86
W2EtekEtWjAtOV8kLS9dKykvLC9eKD86JCkvXTsKLWxleGVyLmNvbmRpdGlvbnMgPSB7Im11Ijp7
InJ1bGVzIjpbNCw1LDYsNyw4LDksMTAsMTEsMTIsMTMsMTQsMTUsMTYsMTcsMTgsMTksMjAsMjEs
MjIsMjMsMjQsMjUsMjYsMjcsMjgsMjksMzJdLCJpbmNsdXNpdmUiOmZhbHNlfSwiZW11Ijp7InJ1
bGVzIjpbMl0sImluY2x1c2l2ZSI6ZmFsc2V9LCJjb20iOnsicnVsZXMiOlszXSwiaW5jbHVzaXZl
IjpmYWxzZX0sInBhciI6eyJydWxlcyI6WzMwLDMxXSwiaW5jbHVzaXZlIjpmYWxzZX0sIklOSVRJ
QUwiOnsicnVsZXMiOlswLDEsMzJdLCJpbmNsdXNpdmUiOnRydWV9fTsKLXJldHVybiBsZXhlcjt9
KSgpCi1wYXJzZXIubGV4ZXIgPSBsZXhlcjsKLWZ1bmN0aW9uIFBhcnNlciAoKSB7IHRoaXMueXkg
PSB7fTsgfVBhcnNlci5wcm90b3R5cGUgPSBwYXJzZXI7cGFyc2VyLlBhcnNlciA9IFBhcnNlcjsK
LXJldHVybiBuZXcgUGFyc2VyOwotfSkoKTs7Ci0vLyBsaWIvaGFuZGxlYmFycy9jb21waWxlci9i
YXNlLmpzCi1IYW5kbGViYXJzLlBhcnNlciA9IGhhbmRsZWJhcnM7Ci0KLUhhbmRsZWJhcnMucGFy
c2UgPSBmdW5jdGlvbihpbnB1dCkgewotCi0gIC8vIEp1c3QgcmV0dXJuIGlmIGFuIGFscmVhZHkt
Y29tcGlsZSBBU1Qgd2FzIHBhc3NlZCBpbi4KLSAgaWYoaW5wdXQuY29uc3RydWN0b3IgPT09IEhh
bmRsZWJhcnMuQVNULlByb2dyYW1Ob2RlKSB7IHJldHVybiBpbnB1dDsgfQotCi0gIEhhbmRsZWJh
cnMuUGFyc2VyLnl5ID0gSGFuZGxlYmFycy5BU1Q7Ci0gIHJldHVybiBIYW5kbGViYXJzLlBhcnNl
ci5wYXJzZShpbnB1dCk7Ci19OwotCi1IYW5kbGViYXJzLnByaW50ID0gZnVuY3Rpb24oYXN0KSB7
Ci0gIHJldHVybiBuZXcgSGFuZGxlYmFycy5QcmludFZpc2l0b3IoKS5hY2NlcHQoYXN0KTsKLX07
OwotLy8gbGliL2hhbmRsZWJhcnMvY29tcGlsZXIvYXN0LmpzCi0oZnVuY3Rpb24oKSB7Ci0KLSAg
SGFuZGxlYmFycy5BU1QgPSB7fTsKLQotICBIYW5kbGViYXJzLkFTVC5Qcm9ncmFtTm9kZSA9IGZ1
bmN0aW9uKHN0YXRlbWVudHMsIGludmVyc2UpIHsKLSAgICB0aGlzLnR5cGUgPSAicHJvZ3JhbSI7
Ci0gICAgdGhpcy5zdGF0ZW1lbnRzID0gc3RhdGVtZW50czsKLSAgICBpZihpbnZlcnNlKSB7IHRo
aXMuaW52ZXJzZSA9IG5ldyBIYW5kbGViYXJzLkFTVC5Qcm9ncmFtTm9kZShpbnZlcnNlKTsgfQot
ICB9OwotCi0gIEhhbmRsZWJhcnMuQVNULk11c3RhY2hlTm9kZSA9IGZ1bmN0aW9uKHJhd1BhcmFt
cywgaGFzaCwgdW5lc2NhcGVkKSB7Ci0gICAgdGhpcy50eXBlID0gIm11c3RhY2hlIjsKLSAgICB0
aGlzLmVzY2FwZWQgPSAhdW5lc2NhcGVkOwotICAgIHRoaXMuaGFzaCA9IGhhc2g7Ci0KLSAgICB2
YXIgaWQgPSB0aGlzLmlkID0gcmF3UGFyYW1zWzBdOwotICAgIHZhciBwYXJhbXMgPSB0aGlzLnBh
cmFtcyA9IHJhd1BhcmFtcy5zbGljZSgxKTsKLQotICAgIC8vIGEgbXVzdGFjaGUgaXMgYW4gZWxp
Z2libGUgaGVscGVyIGlmOgotICAgIC8vICogaXRzIGlkIGlzIHNpbXBsZSAoYSBzaW5nbGUgcGFy
dCwgbm90IGB0aGlzYCBvciBgLi5gKQotICAgIHZhciBlbGlnaWJsZUhlbHBlciA9IHRoaXMuZWxp
Z2libGVIZWxwZXIgPSBpZC5pc1NpbXBsZTsKLQotICAgIC8vIGEgbXVzdGFjaGUgaXMgZGVmaW5p
dGVseSBhIGhlbHBlciBpZjoKLSAgICAvLyAqIGl0IGlzIGFuIGVsaWdpYmxlIGhlbHBlciwgYW5k
Ci0gICAgLy8gKiBpdCBoYXMgYXQgbGVhc3Qgb25lIHBhcmFtZXRlciBvciBoYXNoIHNlZ21lbnQK
LSAgICB0aGlzLmlzSGVscGVyID0gZWxpZ2libGVIZWxwZXIgJiYgKHBhcmFtcy5sZW5ndGggfHwg
aGFzaCk7Ci0KLSAgICAvLyBpZiBhIG11c3RhY2hlIGlzIGFuIGVsaWdpYmxlIGhlbHBlciBidXQg
bm90IGEgZGVmaW5pdGUKLSAgICAvLyBoZWxwZXIsIGl0IGlzIGFtYmlndW91cywgYW5kIHdpbGwg
YmUgcmVzb2x2ZWQgaW4gYSBsYXRlcgotICAgIC8vIHBhc3Mgb3IgYXQgcnVudGltZS4KLSAgfTsK
LQotICBIYW5kbGViYXJzLkFTVC5QYXJ0aWFsTm9kZSA9IGZ1bmN0aW9uKHBhcnRpYWxOYW1lLCBj
b250ZXh0KSB7Ci0gICAgdGhpcy50eXBlICAgICAgICAgPSAicGFydGlhbCI7Ci0gICAgdGhpcy5w
YXJ0aWFsTmFtZSAgPSBwYXJ0aWFsTmFtZTsKLSAgICB0aGlzLmNvbnRleHQgICAgICA9IGNvbnRl
eHQ7Ci0gIH07Ci0KLSAgdmFyIHZlcmlmeU1hdGNoID0gZnVuY3Rpb24ob3BlbiwgY2xvc2UpIHsK
LSAgICBpZihvcGVuLm9yaWdpbmFsICE9PSBjbG9zZS5vcmlnaW5hbCkgewotICAgICAgdGhyb3cg
bmV3IEhhbmRsZWJhcnMuRXhjZXB0aW9uKG9wZW4ub3JpZ2luYWwgKyAiIGRvZXNuJ3QgbWF0Y2gg
IiArIGNsb3NlLm9yaWdpbmFsKTsKLSAgICB9Ci0gIH07Ci0KLSAgSGFuZGxlYmFycy5BU1QuQmxv
Y2tOb2RlID0gZnVuY3Rpb24obXVzdGFjaGUsIHByb2dyYW0sIGludmVyc2UsIGNsb3NlKSB7Ci0g
ICAgdmVyaWZ5TWF0Y2gobXVzdGFjaGUuaWQsIGNsb3NlKTsKLSAgICB0aGlzLnR5cGUgPSAiYmxv
Y2siOwotICAgIHRoaXMubXVzdGFjaGUgPSBtdXN0YWNoZTsKLSAgICB0aGlzLnByb2dyYW0gID0g
cHJvZ3JhbTsKLSAgICB0aGlzLmludmVyc2UgID0gaW52ZXJzZTsKLQotICAgIGlmICh0aGlzLmlu
dmVyc2UgJiYgIXRoaXMucHJvZ3JhbSkgewotICAgICAgdGhpcy5pc0ludmVyc2UgPSB0cnVlOwot
ICAgIH0KLSAgfTsKLQotICBIYW5kbGViYXJzLkFTVC5Db250ZW50Tm9kZSA9IGZ1bmN0aW9uKHN0
cmluZykgewotICAgIHRoaXMudHlwZSA9ICJjb250ZW50IjsKLSAgICB0aGlzLnN0cmluZyA9IHN0
cmluZzsKLSAgfTsKLQotICBIYW5kbGViYXJzLkFTVC5IYXNoTm9kZSA9IGZ1bmN0aW9uKHBhaXJz
KSB7Ci0gICAgdGhpcy50eXBlID0gImhhc2giOwotICAgIHRoaXMucGFpcnMgPSBwYWlyczsKLSAg
fTsKLQotICBIYW5kbGViYXJzLkFTVC5JZE5vZGUgPSBmdW5jdGlvbihwYXJ0cykgewotICAgIHRo
aXMudHlwZSA9ICJJRCI7Ci0gICAgdGhpcy5vcmlnaW5hbCA9IHBhcnRzLmpvaW4oIi4iKTsKLQot
ICAgIHZhciBkaWcgPSBbXSwgZGVwdGggPSAwOwotCi0gICAgZm9yKHZhciBpPTAsbD1wYXJ0cy5s
ZW5ndGg7IGk8bDsgaSsrKSB7Ci0gICAgICB2YXIgcGFydCA9IHBhcnRzW2ldOwotCi0gICAgICBp
ZiAocGFydCA9PT0gIi4uIiB8fCBwYXJ0ID09PSAiLiIgfHwgcGFydCA9PT0gInRoaXMiKSB7Ci0g
ICAgICAgIGlmIChkaWcubGVuZ3RoID4gMCkgeyB0aHJvdyBuZXcgSGFuZGxlYmFycy5FeGNlcHRp
b24oIkludmFsaWQgcGF0aDogIiArIHRoaXMub3JpZ2luYWwpOyB9Ci0gICAgICAgIGVsc2UgaWYg
KHBhcnQgPT09ICIuLiIpIHsgZGVwdGgrKzsgfQotICAgICAgICBlbHNlIHsgdGhpcy5pc1Njb3Bl
ZCA9IHRydWU7IH0KLSAgICAgIH0KLSAgICAgIGVsc2UgeyBkaWcucHVzaChwYXJ0KTsgfQotICAg
IH0KLQotICAgIHRoaXMucGFydHMgICAgPSBkaWc7Ci0gICAgdGhpcy5zdHJpbmcgICA9IGRpZy5q
b2luKCcuJyk7Ci0gICAgdGhpcy5kZXB0aCAgICA9IGRlcHRoOwotCi0gICAgLy8gYW4gSUQgaXMg
c2ltcGxlIGlmIGl0IG9ubHkgaGFzIG9uZSBwYXJ0LCBhbmQgdGhhdCBwYXJ0IGlzIG5vdAotICAg
IC8vIGAuLmAgb3IgYHRoaXNgLgotICAgIHRoaXMuaXNTaW1wbGUgPSBwYXJ0cy5sZW5ndGggPT09
IDEgJiYgIXRoaXMuaXNTY29wZWQgJiYgZGVwdGggPT09IDA7Ci0KLSAgICB0aGlzLnN0cmluZ01v
ZGVWYWx1ZSA9IHRoaXMuc3RyaW5nOwotICB9OwotCi0gIEhhbmRsZWJhcnMuQVNULlBhcnRpYWxO
YW1lTm9kZSA9IGZ1bmN0aW9uKG5hbWUpIHsKLSAgICB0aGlzLnR5cGUgPSAiUEFSVElBTF9OQU1F
IjsKLSAgICB0aGlzLm5hbWUgPSBuYW1lOwotICB9OwotCi0gIEhhbmRsZWJhcnMuQVNULkRhdGFO
b2RlID0gZnVuY3Rpb24oaWQpIHsKLSAgICB0aGlzLnR5cGUgPSAiREFUQSI7Ci0gICAgdGhpcy5p
ZCA9IGlkOwotICB9OwotCi0gIEhhbmRsZWJhcnMuQVNULlN0cmluZ05vZGUgPSBmdW5jdGlvbihz
dHJpbmcpIHsKLSAgICB0aGlzLnR5cGUgPSAiU1RSSU5HIjsKLSAgICB0aGlzLnN0cmluZyA9IHN0
cmluZzsKLSAgICB0aGlzLnN0cmluZ01vZGVWYWx1ZSA9IHN0cmluZzsKLSAgfTsKLQotICBIYW5k
bGViYXJzLkFTVC5JbnRlZ2VyTm9kZSA9IGZ1bmN0aW9uKGludGVnZXIpIHsKLSAgICB0aGlzLnR5
cGUgPSAiSU5URUdFUiI7Ci0gICAgdGhpcy5pbnRlZ2VyID0gaW50ZWdlcjsKLSAgICB0aGlzLnN0
cmluZ01vZGVWYWx1ZSA9IE51bWJlcihpbnRlZ2VyKTsKLSAgfTsKLQotICBIYW5kbGViYXJzLkFT
VC5Cb29sZWFuTm9kZSA9IGZ1bmN0aW9uKGJvb2wpIHsKLSAgICB0aGlzLnR5cGUgPSAiQk9PTEVB
TiI7Ci0gICAgdGhpcy5ib29sID0gYm9vbDsKLSAgICB0aGlzLnN0cmluZ01vZGVWYWx1ZSA9IGJv
b2wgPT09ICJ0cnVlIjsKLSAgfTsKLQotICBIYW5kbGViYXJzLkFTVC5Db21tZW50Tm9kZSA9IGZ1
bmN0aW9uKGNvbW1lbnQpIHsKLSAgICB0aGlzLnR5cGUgPSAiY29tbWVudCI7Ci0gICAgdGhpcy5j
b21tZW50ID0gY29tbWVudDsKLSAgfTsKLQotfSkoKTs7Ci0vLyBsaWIvaGFuZGxlYmFycy91dGls
cy5qcwotCi12YXIgZXJyb3JQcm9wcyA9IFsnZGVzY3JpcHRpb24nLCAnZmlsZU5hbWUnLCAnbGlu
ZU51bWJlcicsICdtZXNzYWdlJywgJ25hbWUnLCAnbnVtYmVyJywgJ3N0YWNrJ107Ci0KLUhhbmRs
ZWJhcnMuRXhjZXB0aW9uID0gZnVuY3Rpb24obWVzc2FnZSkgewotICB2YXIgdG1wID0gRXJyb3Iu
cHJvdG90eXBlLmNvbnN0cnVjdG9yLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7Ci0KLSAgLy8gVW5m
b3J0dW5hdGVseSBlcnJvcnMgYXJlIG5vdCBlbnVtZXJhYmxlIGluIENocm9tZSAoYXQgbGVhc3Qp
LCBzbyBgZm9yIHByb3AgaW4gdG1wYCBkb2Vzbid0IHdvcmsuCi0gIGZvciAodmFyIGlkeCA9IDA7
IGlkeCA8IGVycm9yUHJvcHMubGVuZ3RoOyBpZHgrKykgewotICAgIHRoaXNbZXJyb3JQcm9wc1tp
ZHhdXSA9IHRtcFtlcnJvclByb3BzW2lkeF1dOwotICB9Ci19OwotSGFuZGxlYmFycy5FeGNlcHRp
b24ucHJvdG90eXBlID0gbmV3IEVycm9yKCk7Ci0KLS8vIEJ1aWxkIG91dCBvdXIgYmFzaWMgU2Fm
ZVN0cmluZyB0eXBlCi1IYW5kbGViYXJzLlNhZmVTdHJpbmcgPSBmdW5jdGlvbihzdHJpbmcpIHsK
LSAgdGhpcy5zdHJpbmcgPSBzdHJpbmc7Ci19OwotSGFuZGxlYmFycy5TYWZlU3RyaW5nLnByb3Rv
dHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uKCkgewotICByZXR1cm4gdGhpcy5zdHJpbmcudG9TdHJp
bmcoKTsKLX07Ci0KLShmdW5jdGlvbigpIHsKLSAgdmFyIGVzY2FwZSA9IHsKLSAgICAiJiI6ICIm
YW1wOyIsCi0gICAgIjwiOiAiJmx0OyIsCi0gICAgIj4iOiAiJmd0OyIsCi0gICAgJyInOiAiJnF1
b3Q7IiwKLSAgICAiJyI6ICImI3gyNzsiLAotICAgICJgIjogIiYjeDYwOyIKLSAgfTsKLQotICB2
YXIgYmFkQ2hhcnMgPSAvWyY8PiInYF0vZzsKLSAgdmFyIHBvc3NpYmxlID0gL1smPD4iJ2BdLzsK
LQotICB2YXIgZXNjYXBlQ2hhciA9IGZ1bmN0aW9uKGNocikgewotICAgIHJldHVybiBlc2NhcGVb
Y2hyXSB8fCAiJmFtcDsiOwotICB9OwotCi0gIEhhbmRsZWJhcnMuVXRpbHMgPSB7Ci0gICAgZXNj
YXBlRXhwcmVzc2lvbjogZnVuY3Rpb24oc3RyaW5nKSB7Ci0gICAgICAvLyBkb24ndCBlc2NhcGUg
U2FmZVN0cmluZ3MsIHNpbmNlIHRoZXkncmUgYWxyZWFkeSBzYWZlCi0gICAgICBpZiAoc3RyaW5n
IGluc3RhbmNlb2YgSGFuZGxlYmFycy5TYWZlU3RyaW5nKSB7Ci0gICAgICAgIHJldHVybiBzdHJp
bmcudG9TdHJpbmcoKTsKLSAgICAgIH0gZWxzZSBpZiAoc3RyaW5nID09IG51bGwgfHwgc3RyaW5n
ID09PSBmYWxzZSkgewotICAgICAgICByZXR1cm4gIiI7Ci0gICAgICB9Ci0KLSAgICAgIGlmKCFw
b3NzaWJsZS50ZXN0KHN0cmluZykpIHsgcmV0dXJuIHN0cmluZzsgfQotICAgICAgcmV0dXJuIHN0
cmluZy5yZXBsYWNlKGJhZENoYXJzLCBlc2NhcGVDaGFyKTsKLSAgICB9LAotCi0gICAgaXNFbXB0
eTogZnVuY3Rpb24odmFsdWUpIHsKLSAgICAgIGlmICghdmFsdWUgJiYgdmFsdWUgIT09IDApIHsK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9IGVsc2UgaWYoT2JqZWN0LnByb3RvdHlwZS50
b1N0cmluZy5jYWxsKHZhbHVlKSA9PT0gIltvYmplY3QgQXJyYXldIiAmJiB2YWx1ZS5sZW5ndGgg
PT09IDApIHsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9IGVsc2UgewotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgfQotICB9OwotfSkoKTs7Ci0vLyBsaWIvaGFuZGxl
YmFycy9jb21waWxlci9jb21waWxlci5qcwotCi0vKmpzaGludCBlcW51bGw6dHJ1ZSovCi1IYW5k
bGViYXJzLkNvbXBpbGVyID0gZnVuY3Rpb24oKSB7fTsKLUhhbmRsZWJhcnMuSmF2YVNjcmlwdENv
bXBpbGVyID0gZnVuY3Rpb24oKSB7fTsKLQotKGZ1bmN0aW9uKENvbXBpbGVyLCBKYXZhU2NyaXB0
Q29tcGlsZXIpIHsKLSAgLy8gdGhlIGZvdW5kSGVscGVyIHJlZ2lzdGVyIHdpbGwgZGlzYW1iaWd1
YXRlIGhlbHBlciBsb29rdXAgZnJvbSBmaW5kaW5nIGEKLSAgLy8gZnVuY3Rpb24gaW4gYSBjb250
ZXh0LiBUaGlzIGlzIG5lY2Vzc2FyeSBmb3IgbXVzdGFjaGUgY29tcGF0aWJpbGl0eSwgd2hpY2gK
LSAgLy8gcmVxdWlyZXMgdGhhdCBjb250ZXh0IGZ1bmN0aW9ucyBpbiBibG9ja3MgYXJlIGV2YWx1
YXRlZCBieSBibG9ja0hlbHBlck1pc3NpbmcsCi0gIC8vIGFuZCB0aGVuIHByb2NlZWQgYXMgaWYg
dGhlIHJlc3VsdGluZyB2YWx1ZSB3YXMgcHJvdmlkZWQgdG8gYmxvY2tIZWxwZXJNaXNzaW5nLgot
Ci0gIENvbXBpbGVyLnByb3RvdHlwZSA9IHsKLSAgICBjb21waWxlcjogQ29tcGlsZXIsCi0KLSAg
ICBkaXNhc3NlbWJsZTogZnVuY3Rpb24oKSB7Ci0gICAgICB2YXIgb3Bjb2RlcyA9IHRoaXMub3Bj
b2Rlcywgb3Bjb2RlLCBvdXQgPSBbXSwgcGFyYW1zLCBwYXJhbTsKLQotICAgICAgZm9yICh2YXIg
aT0wLCBsPW9wY29kZXMubGVuZ3RoOyBpPGw7IGkrKykgewotICAgICAgICBvcGNvZGUgPSBvcGNv
ZGVzW2ldOwotCi0gICAgICAgIGlmIChvcGNvZGUub3Bjb2RlID09PSAnREVDTEFSRScpIHsKLSAg
ICAgICAgICBvdXQucHVzaCgiREVDTEFSRSAiICsgb3Bjb2RlLm5hbWUgKyAiPSIgKyBvcGNvZGUu
dmFsdWUpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIHBhcmFtcyA9IFtdOwotICAgICAg
ICAgIGZvciAodmFyIGo9MDsgajxvcGNvZGUuYXJncy5sZW5ndGg7IGorKykgewotICAgICAgICAg
ICAgcGFyYW0gPSBvcGNvZGUuYXJnc1tqXTsKLSAgICAgICAgICAgIGlmICh0eXBlb2YgcGFyYW0g
PT09ICJzdHJpbmciKSB7Ci0gICAgICAgICAgICAgIHBhcmFtID0gIlwiIiArIHBhcmFtLnJlcGxh
Y2UoIlxuIiwgIlxcbiIpICsgIlwiIjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHBhcmFt
cy5wdXNoKHBhcmFtKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgb3V0LnB1c2gob3Bjb2RlLm9w
Y29kZSArICIgIiArIHBhcmFtcy5qb2luKCIgIikpOwotICAgICAgICB9Ci0gICAgICB9Ci0KLSAg
ICAgIHJldHVybiBvdXQuam9pbigiXG4iKTsKLSAgICB9LAotICAgIGVxdWFsczogZnVuY3Rpb24o
b3RoZXIpIHsKLSAgICAgIHZhciBsZW4gPSB0aGlzLm9wY29kZXMubGVuZ3RoOwotICAgICAgaWYg
KG90aGVyLm9wY29kZXMubGVuZ3RoICE9PSBsZW4pIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgfQotCi0gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICAg
IHZhciBvcGNvZGUgPSB0aGlzLm9wY29kZXNbaV0sCi0gICAgICAgICAgICBvdGhlck9wY29kZSA9
IG90aGVyLm9wY29kZXNbaV07Ci0gICAgICAgIGlmIChvcGNvZGUub3Bjb2RlICE9PSBvdGhlck9w
Y29kZS5vcGNvZGUgfHwgb3Bjb2RlLmFyZ3MubGVuZ3RoICE9PSBvdGhlck9wY29kZS5hcmdzLmxl
bmd0aCkgewotICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBmb3Ig
KHZhciBqID0gMDsgaiA8IG9wY29kZS5hcmdzLmxlbmd0aDsgaisrKSB7Ci0gICAgICAgICAgaWYg
KG9wY29kZS5hcmdzW2pdICE9PSBvdGhlck9wY29kZS5hcmdzW2pdKSB7Ci0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICByZXR1
cm4gdHJ1ZTsKLSAgICB9LAotCi0gICAgZ3VpZDogMCwKLQotICAgIGNvbXBpbGU6IGZ1bmN0aW9u
KHByb2dyYW0sIG9wdGlvbnMpIHsKLSAgICAgIHRoaXMuY2hpbGRyZW4gPSBbXTsKLSAgICAgIHRo
aXMuZGVwdGhzID0ge2xpc3Q6IFtdfTsKLSAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7Ci0K
LSAgICAgIC8vIFRoZXNlIGNoYW5nZXMgd2lsbCBwcm9wYWdhdGUgdG8gdGhlIG90aGVyIGNvbXBp
bGVyIGNvbXBvbmVudHMKLSAgICAgIHZhciBrbm93bkhlbHBlcnMgPSB0aGlzLm9wdGlvbnMua25v
d25IZWxwZXJzOwotICAgICAgdGhpcy5vcHRpb25zLmtub3duSGVscGVycyA9IHsKLSAgICAgICAg
J2hlbHBlck1pc3NpbmcnOiB0cnVlLAotICAgICAgICAnYmxvY2tIZWxwZXJNaXNzaW5nJzogdHJ1
ZSwKLSAgICAgICAgJ2VhY2gnOiB0cnVlLAotICAgICAgICAnaWYnOiB0cnVlLAotICAgICAgICAn
dW5sZXNzJzogdHJ1ZSwKLSAgICAgICAgJ3dpdGgnOiB0cnVlLAotICAgICAgICAnbG9nJzogdHJ1
ZQotICAgICAgfTsKLSAgICAgIGlmIChrbm93bkhlbHBlcnMpIHsKLSAgICAgICAgZm9yICh2YXIg
bmFtZSBpbiBrbm93bkhlbHBlcnMpIHsKLSAgICAgICAgICB0aGlzLm9wdGlvbnMua25vd25IZWxw
ZXJzW25hbWVdID0ga25vd25IZWxwZXJzW25hbWVdOwotICAgICAgICB9Ci0gICAgICB9Ci0KLSAg
ICAgIHJldHVybiB0aGlzLnByb2dyYW0ocHJvZ3JhbSk7Ci0gICAgfSwKLQotICAgIGFjY2VwdDog
ZnVuY3Rpb24obm9kZSkgewotICAgICAgcmV0dXJuIHRoaXNbbm9kZS50eXBlXShub2RlKTsKLSAg
ICB9LAotCi0gICAgcHJvZ3JhbTogZnVuY3Rpb24ocHJvZ3JhbSkgewotICAgICAgdmFyIHN0YXRl
bWVudHMgPSBwcm9ncmFtLnN0YXRlbWVudHMsIHN0YXRlbWVudDsKLSAgICAgIHRoaXMub3Bjb2Rl
cyA9IFtdOwotCi0gICAgICBmb3IodmFyIGk9MCwgbD1zdGF0ZW1lbnRzLmxlbmd0aDsgaTxsOyBp
KyspIHsKLSAgICAgICAgc3RhdGVtZW50ID0gc3RhdGVtZW50c1tpXTsKLSAgICAgICAgdGhpc1tz
dGF0ZW1lbnQudHlwZV0oc3RhdGVtZW50KTsKLSAgICAgIH0KLSAgICAgIHRoaXMuaXNTaW1wbGUg
PSBsID09PSAxOwotCi0gICAgICB0aGlzLmRlcHRocy5saXN0ID0gdGhpcy5kZXB0aHMubGlzdC5z
b3J0KGZ1bmN0aW9uKGEsIGIpIHsKLSAgICAgICAgcmV0dXJuIGEgLSBiOwotICAgICAgfSk7Ci0K
LSAgICAgIHJldHVybiB0aGlzOwotICAgIH0sCi0KLSAgICBjb21waWxlUHJvZ3JhbTogZnVuY3Rp
b24ocHJvZ3JhbSkgewotICAgICAgdmFyIHJlc3VsdCA9IG5ldyB0aGlzLmNvbXBpbGVyKCkuY29t
cGlsZShwcm9ncmFtLCB0aGlzLm9wdGlvbnMpOwotICAgICAgdmFyIGd1aWQgPSB0aGlzLmd1aWQr
KywgZGVwdGg7Ci0KLSAgICAgIHRoaXMudXNlUGFydGlhbCA9IHRoaXMudXNlUGFydGlhbCB8fCBy
ZXN1bHQudXNlUGFydGlhbDsKLQotICAgICAgdGhpcy5jaGlsZHJlbltndWlkXSA9IHJlc3VsdDsK
LQotICAgICAgZm9yKHZhciBpPTAsIGw9cmVzdWx0LmRlcHRocy5saXN0Lmxlbmd0aDsgaTxsOyBp
KyspIHsKLSAgICAgICAgZGVwdGggPSByZXN1bHQuZGVwdGhzLmxpc3RbaV07Ci0KLSAgICAgICAg
aWYoZGVwdGggPCAyKSB7IGNvbnRpbnVlOyB9Ci0gICAgICAgIGVsc2UgeyB0aGlzLmFkZERlcHRo
KGRlcHRoIC0gMSk7IH0KLSAgICAgIH0KLQotICAgICAgcmV0dXJuIGd1aWQ7Ci0gICAgfSwKLQot
ICAgIGJsb2NrOiBmdW5jdGlvbihibG9jaykgewotICAgICAgdmFyIG11c3RhY2hlID0gYmxvY2su
bXVzdGFjaGUsCi0gICAgICAgICAgcHJvZ3JhbSA9IGJsb2NrLnByb2dyYW0sCi0gICAgICAgICAg
aW52ZXJzZSA9IGJsb2NrLmludmVyc2U7Ci0KLSAgICAgIGlmIChwcm9ncmFtKSB7Ci0gICAgICAg
IHByb2dyYW0gPSB0aGlzLmNvbXBpbGVQcm9ncmFtKHByb2dyYW0pOwotICAgICAgfQotCi0gICAg
ICBpZiAoaW52ZXJzZSkgewotICAgICAgICBpbnZlcnNlID0gdGhpcy5jb21waWxlUHJvZ3JhbShp
bnZlcnNlKTsKLSAgICAgIH0KLQotICAgICAgdmFyIHR5cGUgPSB0aGlzLmNsYXNzaWZ5TXVzdGFj
aGUobXVzdGFjaGUpOwotCi0gICAgICBpZiAodHlwZSA9PT0gImhlbHBlciIpIHsKLSAgICAgICAg
dGhpcy5oZWxwZXJNdXN0YWNoZShtdXN0YWNoZSwgcHJvZ3JhbSwgaW52ZXJzZSk7Ci0gICAgICB9
IGVsc2UgaWYgKHR5cGUgPT09ICJzaW1wbGUiKSB7Ci0gICAgICAgIHRoaXMuc2ltcGxlTXVzdGFj
aGUobXVzdGFjaGUpOwotCi0gICAgICAgIC8vIG5vdyB0aGF0IHRoZSBzaW1wbGUgbXVzdGFjaGUg
aXMgcmVzb2x2ZWQsIHdlIG5lZWQgdG8KLSAgICAgICAgLy8gZXZhbHVhdGUgaXQgYnkgZXhlY3V0
aW5nIGBibG9ja0hlbHBlck1pc3NpbmdgCi0gICAgICAgIHRoaXMub3Bjb2RlKCdwdXNoUHJvZ3Jh
bScsIHByb2dyYW0pOwotICAgICAgICB0aGlzLm9wY29kZSgncHVzaFByb2dyYW0nLCBpbnZlcnNl
KTsKLSAgICAgICAgdGhpcy5vcGNvZGUoJ2VtcHR5SGFzaCcpOwotICAgICAgICB0aGlzLm9wY29k
ZSgnYmxvY2tWYWx1ZScpOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgdGhpcy5hbWJpZ3VvdXNN
dXN0YWNoZShtdXN0YWNoZSwgcHJvZ3JhbSwgaW52ZXJzZSk7Ci0KLSAgICAgICAgLy8gbm93IHRo
YXQgdGhlIHNpbXBsZSBtdXN0YWNoZSBpcyByZXNvbHZlZCwgd2UgbmVlZCB0bwotICAgICAgICAv
LyBldmFsdWF0ZSBpdCBieSBleGVjdXRpbmcgYGJsb2NrSGVscGVyTWlzc2luZ2AKLSAgICAgICAg
dGhpcy5vcGNvZGUoJ3B1c2hQcm9ncmFtJywgcHJvZ3JhbSk7Ci0gICAgICAgIHRoaXMub3Bjb2Rl
KCdwdXNoUHJvZ3JhbScsIGludmVyc2UpOwotICAgICAgICB0aGlzLm9wY29kZSgnZW1wdHlIYXNo
Jyk7Ci0gICAgICAgIHRoaXMub3Bjb2RlKCdhbWJpZ3VvdXNCbG9ja1ZhbHVlJyk7Ci0gICAgICB9
Ci0KLSAgICAgIHRoaXMub3Bjb2RlKCdhcHBlbmQnKTsKLSAgICB9LAotCi0gICAgaGFzaDogZnVu
Y3Rpb24oaGFzaCkgewotICAgICAgdmFyIHBhaXJzID0gaGFzaC5wYWlycywgcGFpciwgdmFsOwot
Ci0gICAgICB0aGlzLm9wY29kZSgncHVzaEhhc2gnKTsKLQotICAgICAgZm9yKHZhciBpPTAsIGw9
cGFpcnMubGVuZ3RoOyBpPGw7IGkrKykgewotICAgICAgICBwYWlyID0gcGFpcnNbaV07Ci0gICAg
ICAgIHZhbCAgPSBwYWlyWzFdOwotCi0gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuc3RyaW5nUGFy
YW1zKSB7Ci0gICAgICAgICAgdGhpcy5vcGNvZGUoJ3B1c2hTdHJpbmdQYXJhbScsIHZhbC5zdHJp
bmdNb2RlVmFsdWUsIHZhbC50eXBlKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICB0aGlz
LmFjY2VwdCh2YWwpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5vcGNvZGUoJ2Fzc2lnblRv
SGFzaCcsIHBhaXJbMF0pOwotICAgICAgfQotICAgICAgdGhpcy5vcGNvZGUoJ3BvcEhhc2gnKTsK
LSAgICB9LAotCi0gICAgcGFydGlhbDogZnVuY3Rpb24ocGFydGlhbCkgewotICAgICAgdmFyIHBh
cnRpYWxOYW1lID0gcGFydGlhbC5wYXJ0aWFsTmFtZTsKLSAgICAgIHRoaXMudXNlUGFydGlhbCA9
IHRydWU7Ci0KLSAgICAgIGlmKHBhcnRpYWwuY29udGV4dCkgewotICAgICAgICB0aGlzLklEKHBh
cnRpYWwuY29udGV4dCk7Ci0gICAgICB9IGVsc2UgewotICAgICAgICB0aGlzLm9wY29kZSgncHVz
aCcsICdkZXB0aDAnKTsKLSAgICAgIH0KLQotICAgICAgdGhpcy5vcGNvZGUoJ2ludm9rZVBhcnRp
YWwnLCBwYXJ0aWFsTmFtZS5uYW1lKTsKLSAgICAgIHRoaXMub3Bjb2RlKCdhcHBlbmQnKTsKLSAg
ICB9LAotCi0gICAgY29udGVudDogZnVuY3Rpb24oY29udGVudCkgewotICAgICAgdGhpcy5vcGNv
ZGUoJ2FwcGVuZENvbnRlbnQnLCBjb250ZW50LnN0cmluZyk7Ci0gICAgfSwKLQotICAgIG11c3Rh
Y2hlOiBmdW5jdGlvbihtdXN0YWNoZSkgewotICAgICAgdmFyIG9wdGlvbnMgPSB0aGlzLm9wdGlv
bnM7Ci0gICAgICB2YXIgdHlwZSA9IHRoaXMuY2xhc3NpZnlNdXN0YWNoZShtdXN0YWNoZSk7Ci0K
LSAgICAgIGlmICh0eXBlID09PSAic2ltcGxlIikgewotICAgICAgICB0aGlzLnNpbXBsZU11c3Rh
Y2hlKG11c3RhY2hlKTsKLSAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gImhlbHBlciIpIHsKLSAg
ICAgICAgdGhpcy5oZWxwZXJNdXN0YWNoZShtdXN0YWNoZSk7Ci0gICAgICB9IGVsc2UgewotICAg
ICAgICB0aGlzLmFtYmlndW91c011c3RhY2hlKG11c3RhY2hlKTsKLSAgICAgIH0KLQotICAgICAg
aWYobXVzdGFjaGUuZXNjYXBlZCAmJiAhb3B0aW9ucy5ub0VzY2FwZSkgewotICAgICAgICB0aGlz
Lm9wY29kZSgnYXBwZW5kRXNjYXBlZCcpOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgdGhpcy5v
cGNvZGUoJ2FwcGVuZCcpOwotICAgICAgfQotICAgIH0sCi0KLSAgICBhbWJpZ3VvdXNNdXN0YWNo
ZTogZnVuY3Rpb24obXVzdGFjaGUsIHByb2dyYW0sIGludmVyc2UpIHsKLSAgICAgIHZhciBpZCA9
IG11c3RhY2hlLmlkLAotICAgICAgICAgIG5hbWUgPSBpZC5wYXJ0c1swXSwKLSAgICAgICAgICBp
c0Jsb2NrID0gcHJvZ3JhbSAhPSBudWxsIHx8IGludmVyc2UgIT0gbnVsbDsKLQotICAgICAgdGhp
cy5vcGNvZGUoJ2dldENvbnRleHQnLCBpZC5kZXB0aCk7Ci0KLSAgICAgIHRoaXMub3Bjb2RlKCdw
dXNoUHJvZ3JhbScsIHByb2dyYW0pOwotICAgICAgdGhpcy5vcGNvZGUoJ3B1c2hQcm9ncmFtJywg
aW52ZXJzZSk7Ci0KLSAgICAgIHRoaXMub3Bjb2RlKCdpbnZva2VBbWJpZ3VvdXMnLCBuYW1lLCBp
c0Jsb2NrKTsKLSAgICB9LAotCi0gICAgc2ltcGxlTXVzdGFjaGU6IGZ1bmN0aW9uKG11c3RhY2hl
KSB7Ci0gICAgICB2YXIgaWQgPSBtdXN0YWNoZS5pZDsKLQotICAgICAgaWYgKGlkLnR5cGUgPT09
ICdEQVRBJykgewotICAgICAgICB0aGlzLkRBVEEoaWQpOwotICAgICAgfSBlbHNlIGlmIChpZC5w
YXJ0cy5sZW5ndGgpIHsKLSAgICAgICAgdGhpcy5JRChpZCk7Ci0gICAgICB9IGVsc2UgewotICAg
ICAgICAvLyBTaW1wbGlmaWVkIElEIGZvciBgdGhpc2AKLSAgICAgICAgdGhpcy5hZGREZXB0aChp
ZC5kZXB0aCk7Ci0gICAgICAgIHRoaXMub3Bjb2RlKCdnZXRDb250ZXh0JywgaWQuZGVwdGgpOwot
ICAgICAgICB0aGlzLm9wY29kZSgncHVzaENvbnRleHQnKTsKLSAgICAgIH0KLQotICAgICAgdGhp
cy5vcGNvZGUoJ3Jlc29sdmVQb3NzaWJsZUxhbWJkYScpOwotICAgIH0sCi0KLSAgICBoZWxwZXJN
dXN0YWNoZTogZnVuY3Rpb24obXVzdGFjaGUsIHByb2dyYW0sIGludmVyc2UpIHsKLSAgICAgIHZh
ciBwYXJhbXMgPSB0aGlzLnNldHVwRnVsbE11c3RhY2hlUGFyYW1zKG11c3RhY2hlLCBwcm9ncmFt
LCBpbnZlcnNlKSwKLSAgICAgICAgICBuYW1lID0gbXVzdGFjaGUuaWQucGFydHNbMF07Ci0KLSAg
ICAgIGlmICh0aGlzLm9wdGlvbnMua25vd25IZWxwZXJzW25hbWVdKSB7Ci0gICAgICAgIHRoaXMu
b3Bjb2RlKCdpbnZva2VLbm93bkhlbHBlcicsIHBhcmFtcy5sZW5ndGgsIG5hbWUpOwotICAgICAg
fSBlbHNlIGlmICh0aGlzLmtub3duSGVscGVyc09ubHkpIHsKLSAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJZb3Ugc3BlY2lmaWVkIGtub3duSGVscGVyc09ubHksIGJ1dCB1c2VkIHRoZSB1bmtub3du
IGhlbHBlciAiICsgbmFtZSk7Ci0gICAgICB9IGVsc2UgewotICAgICAgICB0aGlzLm9wY29kZSgn
aW52b2tlSGVscGVyJywgcGFyYW1zLmxlbmd0aCwgbmFtZSk7Ci0gICAgICB9Ci0gICAgfSwKLQot
ICAgIElEOiBmdW5jdGlvbihpZCkgewotICAgICAgdGhpcy5hZGREZXB0aChpZC5kZXB0aCk7Ci0g
ICAgICB0aGlzLm9wY29kZSgnZ2V0Q29udGV4dCcsIGlkLmRlcHRoKTsKLQotICAgICAgdmFyIG5h
bWUgPSBpZC5wYXJ0c1swXTsKLSAgICAgIGlmICghbmFtZSkgewotICAgICAgICB0aGlzLm9wY29k
ZSgncHVzaENvbnRleHQnKTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIHRoaXMub3Bjb2RlKCds
b29rdXBPbkNvbnRleHQnLCBpZC5wYXJ0c1swXSk7Ci0gICAgICB9Ci0KLSAgICAgIGZvcih2YXIg
aT0xLCBsPWlkLnBhcnRzLmxlbmd0aDsgaTxsOyBpKyspIHsKLSAgICAgICAgdGhpcy5vcGNvZGUo
J2xvb2t1cCcsIGlkLnBhcnRzW2ldKTsKLSAgICAgIH0KLSAgICB9LAotCi0gICAgREFUQTogZnVu
Y3Rpb24oZGF0YSkgewotICAgICAgdGhpcy5vcHRpb25zLmRhdGEgPSB0cnVlOwotICAgICAgdGhp
cy5vcGNvZGUoJ2xvb2t1cERhdGEnLCBkYXRhLmlkKTsKLSAgICB9LAotCi0gICAgU1RSSU5HOiBm
dW5jdGlvbihzdHJpbmcpIHsKLSAgICAgIHRoaXMub3Bjb2RlKCdwdXNoU3RyaW5nJywgc3RyaW5n
LnN0cmluZyk7Ci0gICAgfSwKLQotICAgIElOVEVHRVI6IGZ1bmN0aW9uKGludGVnZXIpIHsKLSAg
ICAgIHRoaXMub3Bjb2RlKCdwdXNoTGl0ZXJhbCcsIGludGVnZXIuaW50ZWdlcik7Ci0gICAgfSwK
LQotICAgIEJPT0xFQU46IGZ1bmN0aW9uKGJvb2wpIHsKLSAgICAgIHRoaXMub3Bjb2RlKCdwdXNo
TGl0ZXJhbCcsIGJvb2wuYm9vbCk7Ci0gICAgfSwKLQotICAgIGNvbW1lbnQ6IGZ1bmN0aW9uKCkg
e30sCi0KLSAgICAvLyBIRUxQRVJTCi0gICAgb3Bjb2RlOiBmdW5jdGlvbihuYW1lKSB7Ci0gICAg
ICB0aGlzLm9wY29kZXMucHVzaCh7IG9wY29kZTogbmFtZSwgYXJnczogW10uc2xpY2UuY2FsbChh
cmd1bWVudHMsIDEpIH0pOwotICAgIH0sCi0KLSAgICBkZWNsYXJlOiBmdW5jdGlvbihuYW1lLCB2
YWx1ZSkgewotICAgICAgdGhpcy5vcGNvZGVzLnB1c2goeyBvcGNvZGU6ICdERUNMQVJFJywgbmFt
ZTogbmFtZSwgdmFsdWU6IHZhbHVlIH0pOwotICAgIH0sCi0KLSAgICBhZGREZXB0aDogZnVuY3Rp
b24oZGVwdGgpIHsKLSAgICAgIGlmKGlzTmFOKGRlcHRoKSkgeyB0aHJvdyBuZXcgRXJyb3IoIkVX
T1QiKTsgfQotICAgICAgaWYoZGVwdGggPT09IDApIHsgcmV0dXJuOyB9Ci0KLSAgICAgIGlmKCF0
aGlzLmRlcHRoc1tkZXB0aF0pIHsKLSAgICAgICAgdGhpcy5kZXB0aHNbZGVwdGhdID0gdHJ1ZTsK
LSAgICAgICAgdGhpcy5kZXB0aHMubGlzdC5wdXNoKGRlcHRoKTsKLSAgICAgIH0KLSAgICB9LAot
Ci0gICAgY2xhc3NpZnlNdXN0YWNoZTogZnVuY3Rpb24obXVzdGFjaGUpIHsKLSAgICAgIHZhciBp
c0hlbHBlciAgID0gbXVzdGFjaGUuaXNIZWxwZXI7Ci0gICAgICB2YXIgaXNFbGlnaWJsZSA9IG11
c3RhY2hlLmVsaWdpYmxlSGVscGVyOwotICAgICAgdmFyIG9wdGlvbnMgICAgPSB0aGlzLm9wdGlv
bnM7Ci0KLSAgICAgIC8vIGlmIGFtYmlndW91cywgd2UgY2FuIHBvc3NpYmx5IHJlc29sdmUgdGhl
IGFtYmlndWl0eSBub3cKLSAgICAgIGlmIChpc0VsaWdpYmxlICYmICFpc0hlbHBlcikgewotICAg
ICAgICB2YXIgbmFtZSA9IG11c3RhY2hlLmlkLnBhcnRzWzBdOwotCi0gICAgICAgIGlmIChvcHRp
b25zLmtub3duSGVscGVyc1tuYW1lXSkgewotICAgICAgICAgIGlzSGVscGVyID0gdHJ1ZTsKLSAg
ICAgICAgfSBlbHNlIGlmIChvcHRpb25zLmtub3duSGVscGVyc09ubHkpIHsKLSAgICAgICAgICBp
c0VsaWdpYmxlID0gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgICAgaWYgKGlzSGVs
cGVyKSB7IHJldHVybiAiaGVscGVyIjsgfQotICAgICAgZWxzZSBpZiAoaXNFbGlnaWJsZSkgeyBy
ZXR1cm4gImFtYmlndW91cyI7IH0KLSAgICAgIGVsc2UgeyByZXR1cm4gInNpbXBsZSI7IH0KLSAg
ICB9LAotCi0gICAgcHVzaFBhcmFtczogZnVuY3Rpb24ocGFyYW1zKSB7Ci0gICAgICB2YXIgaSA9
IHBhcmFtcy5sZW5ndGgsIHBhcmFtOwotCi0gICAgICB3aGlsZShpLS0pIHsKLSAgICAgICAgcGFy
YW0gPSBwYXJhbXNbaV07Ci0KLSAgICAgICAgaWYodGhpcy5vcHRpb25zLnN0cmluZ1BhcmFtcykg
ewotICAgICAgICAgIGlmKHBhcmFtLmRlcHRoKSB7Ci0gICAgICAgICAgICB0aGlzLmFkZERlcHRo
KHBhcmFtLmRlcHRoKTsKLSAgICAgICAgICB9Ci0KLSAgICAgICAgICB0aGlzLm9wY29kZSgnZ2V0
Q29udGV4dCcsIHBhcmFtLmRlcHRoIHx8IDApOwotICAgICAgICAgIHRoaXMub3Bjb2RlKCdwdXNo
U3RyaW5nUGFyYW0nLCBwYXJhbS5zdHJpbmdNb2RlVmFsdWUsIHBhcmFtLnR5cGUpOwotICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgIHRoaXNbcGFyYW0udHlwZV0ocGFyYW0pOwotICAgICAgICB9
Ci0gICAgICB9Ci0gICAgfSwKLQotICAgIHNldHVwTXVzdGFjaGVQYXJhbXM6IGZ1bmN0aW9uKG11
c3RhY2hlKSB7Ci0gICAgICB2YXIgcGFyYW1zID0gbXVzdGFjaGUucGFyYW1zOwotICAgICAgdGhp
cy5wdXNoUGFyYW1zKHBhcmFtcyk7Ci0KLSAgICAgIGlmKG11c3RhY2hlLmhhc2gpIHsKLSAgICAg
ICAgdGhpcy5oYXNoKG11c3RhY2hlLmhhc2gpOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgdGhp
cy5vcGNvZGUoJ2VtcHR5SGFzaCcpOwotICAgICAgfQotCi0gICAgICByZXR1cm4gcGFyYW1zOwot
ICAgIH0sCi0KLSAgICAvLyB0aGlzIHdpbGwgcmVwbGFjZSBzZXR1cE11c3RhY2hlUGFyYW1zIHdo
ZW4gd2UncmUgZG9uZQotICAgIHNldHVwRnVsbE11c3RhY2hlUGFyYW1zOiBmdW5jdGlvbihtdXN0
YWNoZSwgcHJvZ3JhbSwgaW52ZXJzZSkgewotICAgICAgdmFyIHBhcmFtcyA9IG11c3RhY2hlLnBh
cmFtczsKLSAgICAgIHRoaXMucHVzaFBhcmFtcyhwYXJhbXMpOwotCi0gICAgICB0aGlzLm9wY29k
ZSgncHVzaFByb2dyYW0nLCBwcm9ncmFtKTsKLSAgICAgIHRoaXMub3Bjb2RlKCdwdXNoUHJvZ3Jh
bScsIGludmVyc2UpOwotCi0gICAgICBpZihtdXN0YWNoZS5oYXNoKSB7Ci0gICAgICAgIHRoaXMu
aGFzaChtdXN0YWNoZS5oYXNoKTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIHRoaXMub3Bjb2Rl
KCdlbXB0eUhhc2gnKTsKLSAgICAgIH0KLQotICAgICAgcmV0dXJuIHBhcmFtczsKLSAgICB9Ci0g
IH07Ci0KLSAgdmFyIExpdGVyYWwgPSBmdW5jdGlvbih2YWx1ZSkgewotICAgIHRoaXMudmFsdWUg
PSB2YWx1ZTsKLSAgfTsKLQotICBKYXZhU2NyaXB0Q29tcGlsZXIucHJvdG90eXBlID0gewotICAg
IC8vIFBVQkxJQyBBUEk6IFlvdSBjYW4gb3ZlcnJpZGUgdGhlc2UgbWV0aG9kcyBpbiBhIHN1YmNs
YXNzIHRvIHByb3ZpZGUKLSAgICAvLyBhbHRlcm5hdGl2ZSBjb21waWxlZCBmb3JtcyBmb3IgbmFt
ZSBsb29rdXAgYW5kIGJ1ZmZlcmluZyBzZW1hbnRpY3MKLSAgICBuYW1lTG9va3VwOiBmdW5jdGlv
bihwYXJlbnQsIG5hbWUgLyogLCB0eXBlKi8pIHsKLSAgICAgIGlmICgvXlswLTldKyQvLnRlc3Qo
bmFtZSkpIHsKLSAgICAgICAgcmV0dXJuIHBhcmVudCArICJbIiArIG5hbWUgKyAiXSI7Ci0gICAg
ICB9IGVsc2UgaWYgKEphdmFTY3JpcHRDb21waWxlci5pc1ZhbGlkSmF2YVNjcmlwdFZhcmlhYmxl
TmFtZShuYW1lKSkgewotICAgICAgICByZXR1cm4gcGFyZW50ICsgIi4iICsgbmFtZTsKLSAgICAg
IH0KLSAgICAgIGVsc2UgewotICAgICAgICByZXR1cm4gcGFyZW50ICsgIlsnIiArIG5hbWUgKyAi
J10iOwotICAgICAgfQotICAgIH0sCi0KLSAgICBhcHBlbmRUb0J1ZmZlcjogZnVuY3Rpb24oc3Ry
aW5nKSB7Ci0gICAgICBpZiAodGhpcy5lbnZpcm9ubWVudC5pc1NpbXBsZSkgewotICAgICAgICBy
ZXR1cm4gInJldHVybiAiICsgc3RyaW5nICsgIjsiOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAg
cmV0dXJuIHsKLSAgICAgICAgICBhcHBlbmRUb0J1ZmZlcjogdHJ1ZSwKLSAgICAgICAgICBjb250
ZW50OiBzdHJpbmcsCi0gICAgICAgICAgdG9TdHJpbmc6IGZ1bmN0aW9uKCkgeyByZXR1cm4gImJ1
ZmZlciArPSAiICsgc3RyaW5nICsgIjsiOyB9Ci0gICAgICAgIH07Ci0gICAgICB9Ci0gICAgfSwK
LQotICAgIGluaXRpYWxpemVCdWZmZXI6IGZ1bmN0aW9uKCkgewotICAgICAgcmV0dXJuIHRoaXMu
cXVvdGVkU3RyaW5nKCIiKTsKLSAgICB9LAotCi0gICAgbmFtZXNwYWNlOiAiSGFuZGxlYmFycyIs
Ci0gICAgLy8gRU5EIFBVQkxJQyBBUEkKLQotICAgIGNvbXBpbGU6IGZ1bmN0aW9uKGVudmlyb25t
ZW50LCBvcHRpb25zLCBjb250ZXh0LCBhc09iamVjdCkgewotICAgICAgdGhpcy5lbnZpcm9ubWVu
dCA9IGVudmlyb25tZW50OwotICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKLQot
ICAgICAgSGFuZGxlYmFycy5sb2coSGFuZGxlYmFycy5sb2dnZXIuREVCVUcsIHRoaXMuZW52aXJv
bm1lbnQuZGlzYXNzZW1ibGUoKSArICJcblxuIik7Ci0KLSAgICAgIHRoaXMubmFtZSA9IHRoaXMu
ZW52aXJvbm1lbnQubmFtZTsKLSAgICAgIHRoaXMuaXNDaGlsZCA9ICEhY29udGV4dDsKLSAgICAg
IHRoaXMuY29udGV4dCA9IGNvbnRleHQgfHwgewotICAgICAgICBwcm9ncmFtczogW10sCi0gICAg
ICAgIGVudmlyb25tZW50czogW10sCi0gICAgICAgIGFsaWFzZXM6IHsgfQotICAgICAgfTsKLQot
ICAgICAgdGhpcy5wcmVhbWJsZSgpOwotCi0gICAgICB0aGlzLnN0YWNrU2xvdCA9IDA7Ci0gICAg
ICB0aGlzLnN0YWNrVmFycyA9IFtdOwotICAgICAgdGhpcy5yZWdpc3RlcnMgPSB7IGxpc3Q6IFtd
IH07Ci0gICAgICB0aGlzLmNvbXBpbGVTdGFjayA9IFtdOwotICAgICAgdGhpcy5pbmxpbmVTdGFj
ayA9IFtdOwotCi0gICAgICB0aGlzLmNvbXBpbGVDaGlsZHJlbihlbnZpcm9ubWVudCwgb3B0aW9u
cyk7Ci0KLSAgICAgIHZhciBvcGNvZGVzID0gZW52aXJvbm1lbnQub3Bjb2Rlcywgb3Bjb2RlOwot
Ci0gICAgICB0aGlzLmkgPSAwOwotCi0gICAgICBmb3IobD1vcGNvZGVzLmxlbmd0aDsgdGhpcy5p
PGw7IHRoaXMuaSsrKSB7Ci0gICAgICAgIG9wY29kZSA9IG9wY29kZXNbdGhpcy5pXTsKLQotICAg
ICAgICBpZihvcGNvZGUub3Bjb2RlID09PSAnREVDTEFSRScpIHsKLSAgICAgICAgICB0aGlzW29w
Y29kZS5uYW1lXSA9IG9wY29kZS52YWx1ZTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICB0
aGlzW29wY29kZS5vcGNvZGVdLmFwcGx5KHRoaXMsIG9wY29kZS5hcmdzKTsKLSAgICAgICAgfQot
ICAgICAgfQotCi0gICAgICByZXR1cm4gdGhpcy5jcmVhdGVGdW5jdGlvbkNvbnRleHQoYXNPYmpl
Y3QpOwotICAgIH0sCi0KLSAgICBuZXh0T3Bjb2RlOiBmdW5jdGlvbigpIHsKLSAgICAgIHZhciBv
cGNvZGVzID0gdGhpcy5lbnZpcm9ubWVudC5vcGNvZGVzOwotICAgICAgcmV0dXJuIG9wY29kZXNb
dGhpcy5pICsgMV07Ci0gICAgfSwKLQotICAgIGVhdDogZnVuY3Rpb24oKSB7Ci0gICAgICB0aGlz
LmkgPSB0aGlzLmkgKyAxOwotICAgIH0sCi0KLSAgICBwcmVhbWJsZTogZnVuY3Rpb24oKSB7Ci0g
ICAgICB2YXIgb3V0ID0gW107Ci0KLSAgICAgIGlmICghdGhpcy5pc0NoaWxkKSB7Ci0gICAgICAg
IHZhciBuYW1lc3BhY2UgPSB0aGlzLm5hbWVzcGFjZTsKLSAgICAgICAgdmFyIGNvcGllcyA9ICJo
ZWxwZXJzID0gaGVscGVycyB8fCAiICsgbmFtZXNwYWNlICsgIi5oZWxwZXJzOyI7Ci0gICAgICAg
IGlmICh0aGlzLmVudmlyb25tZW50LnVzZVBhcnRpYWwpIHsgY29waWVzID0gY29waWVzICsgIiBw
YXJ0aWFscyA9IHBhcnRpYWxzIHx8ICIgKyBuYW1lc3BhY2UgKyAiLnBhcnRpYWxzOyI7IH0KLSAg
ICAgICAgaWYgKHRoaXMub3B0aW9ucy5kYXRhKSB7IGNvcGllcyA9IGNvcGllcyArICIgZGF0YSA9
IGRhdGEgfHwge307IjsgfQotICAgICAgICBvdXQucHVzaChjb3BpZXMpOwotICAgICAgfSBlbHNl
IHsKLSAgICAgICAgb3V0LnB1c2goJycpOwotICAgICAgfQotCi0gICAgICBpZiAoIXRoaXMuZW52
aXJvbm1lbnQuaXNTaW1wbGUpIHsKLSAgICAgICAgb3V0LnB1c2goIiwgYnVmZmVyID0gIiArIHRo
aXMuaW5pdGlhbGl6ZUJ1ZmZlcigpKTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIG91dC5wdXNo
KCIiKTsKLSAgICAgIH0KLQotICAgICAgLy8gdHJhY2sgdGhlIGxhc3QgY29udGV4dCBwdXNoZWQg
aW50byBwbGFjZSB0byBhbGxvdyBza2lwcGluZyB0aGUKLSAgICAgIC8vIGdldENvbnRleHQgb3Bj
b2RlIHdoZW4gaXQgd291bGQgYmUgYSBub29wCi0gICAgICB0aGlzLmxhc3RDb250ZXh0ID0gMDsK
LSAgICAgIHRoaXMuc291cmNlID0gb3V0OwotICAgIH0sCi0KLSAgICBjcmVhdGVGdW5jdGlvbkNv
bnRleHQ6IGZ1bmN0aW9uKGFzT2JqZWN0KSB7Ci0gICAgICB2YXIgbG9jYWxzID0gdGhpcy5zdGFj
a1ZhcnMuY29uY2F0KHRoaXMucmVnaXN0ZXJzLmxpc3QpOwotCi0gICAgICBpZihsb2NhbHMubGVu
Z3RoID4gMCkgewotICAgICAgICB0aGlzLnNvdXJjZVsxXSA9IHRoaXMuc291cmNlWzFdICsgIiwg
IiArIGxvY2Fscy5qb2luKCIsICIpOwotICAgICAgfQotCi0gICAgICAvLyBHZW5lcmF0ZSBtaW5p
bWl6ZXIgYWxpYXMgbWFwcGluZ3MKLSAgICAgIGlmICghdGhpcy5pc0NoaWxkKSB7Ci0gICAgICAg
IGZvciAodmFyIGFsaWFzIGluIHRoaXMuY29udGV4dC5hbGlhc2VzKSB7Ci0gICAgICAgICAgdGhp
cy5zb3VyY2VbMV0gPSB0aGlzLnNvdXJjZVsxXSArICcsICcgKyBhbGlhcyArICc9JyArIHRoaXMu
Y29udGV4dC5hbGlhc2VzW2FsaWFzXTsKLSAgICAgICAgfQotICAgICAgfQotCi0gICAgICBpZiAo
dGhpcy5zb3VyY2VbMV0pIHsKLSAgICAgICAgdGhpcy5zb3VyY2VbMV0gPSAidmFyICIgKyB0aGlz
LnNvdXJjZVsxXS5zdWJzdHJpbmcoMikgKyAiOyI7Ci0gICAgICB9Ci0KLSAgICAgIC8vIE1lcmdl
IGNoaWxkcmVuCi0gICAgICBpZiAoIXRoaXMuaXNDaGlsZCkgewotICAgICAgICB0aGlzLnNvdXJj
ZVsxXSArPSAnXG4nICsgdGhpcy5jb250ZXh0LnByb2dyYW1zLmpvaW4oJ1xuJykgKyAnXG4nOwot
ICAgICAgfQotCi0gICAgICBpZiAoIXRoaXMuZW52aXJvbm1lbnQuaXNTaW1wbGUpIHsKLSAgICAg
ICAgdGhpcy5zb3VyY2UucHVzaCgicmV0dXJuIGJ1ZmZlcjsiKTsKLSAgICAgIH0KLQotICAgICAg
dmFyIHBhcmFtcyA9IHRoaXMuaXNDaGlsZCA/IFsiZGVwdGgwIiwgImRhdGEiXSA6IFsiSGFuZGxl
YmFycyIsICJkZXB0aDAiLCAiaGVscGVycyIsICJwYXJ0aWFscyIsICJkYXRhIl07Ci0KLSAgICAg
IGZvcih2YXIgaT0wLCBsPXRoaXMuZW52aXJvbm1lbnQuZGVwdGhzLmxpc3QubGVuZ3RoOyBpPGw7
IGkrKykgewotICAgICAgICBwYXJhbXMucHVzaCgiZGVwdGgiICsgdGhpcy5lbnZpcm9ubWVudC5k
ZXB0aHMubGlzdFtpXSk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIFBlcmZvcm0gYSBzZWNvbmQgcGFz
cyBvdmVyIHRoZSBvdXRwdXQgdG8gbWVyZ2UgY29udGVudCB3aGVuIHBvc3NpYmxlCi0gICAgICB2
YXIgc291cmNlID0gdGhpcy5tZXJnZVNvdXJjZSgpOwotCi0gICAgICBpZiAoIXRoaXMuaXNDaGls
ZCkgewotICAgICAgICB2YXIgcmV2aXNpb24gPSBIYW5kbGViYXJzLkNPTVBJTEVSX1JFVklTSU9O
LAotICAgICAgICAgICAgdmVyc2lvbnMgPSBIYW5kbGViYXJzLlJFVklTSU9OX0NIQU5HRVNbcmV2
aXNpb25dOwotICAgICAgICBzb3VyY2UgPSAidGhpcy5jb21waWxlckluZm8gPSBbIityZXZpc2lv
bisiLCciK3ZlcnNpb25zKyInXTtcbiIrc291cmNlOwotICAgICAgfQotCi0gICAgICBpZiAoYXNP
YmplY3QpIHsKLSAgICAgICAgcGFyYW1zLnB1c2goc291cmNlKTsKLQotICAgICAgICByZXR1cm4g
RnVuY3Rpb24uYXBwbHkodGhpcywgcGFyYW1zKTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIHZh
ciBmdW5jdGlvblNvdXJjZSA9ICdmdW5jdGlvbiAnICsgKHRoaXMubmFtZSB8fCAnJykgKyAnKCcg
KyBwYXJhbXMuam9pbignLCcpICsgJykge1xuICAnICsgc291cmNlICsgJ30nOwotICAgICAgICBI
YW5kbGViYXJzLmxvZyhIYW5kbGViYXJzLmxvZ2dlci5ERUJVRywgZnVuY3Rpb25Tb3VyY2UgKyAi
XG5cbiIpOwotICAgICAgICByZXR1cm4gZnVuY3Rpb25Tb3VyY2U7Ci0gICAgICB9Ci0gICAgfSwK
LSAgICBtZXJnZVNvdXJjZTogZnVuY3Rpb24oKSB7Ci0gICAgICAvLyBXQVJOOiBXZSBhcmUgbm90
IGhhbmRsaW5nIHRoZSBjYXNlIHdoZXJlIGJ1ZmZlciBpcyBzdGlsbCBwb3B1bGF0ZWQgYXMgdGhl
IHNvdXJjZSBzaG91bGQKLSAgICAgIC8vIG5vdCBoYXZlIGJ1ZmZlciBhcHBlbmQgb3BlcmF0aW9u
cyBhcyB0aGVpciBmaW5hbCBhY3Rpb24uCi0gICAgICB2YXIgc291cmNlID0gJycsCi0gICAgICAg
ICAgYnVmZmVyOwotICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IHRoaXMuc291cmNlLmxlbmd0
aDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICAgIHZhciBsaW5lID0gdGhpcy5zb3VyY2VbaV07Ci0g
ICAgICAgIGlmIChsaW5lLmFwcGVuZFRvQnVmZmVyKSB7Ci0gICAgICAgICAgaWYgKGJ1ZmZlcikg
ewotICAgICAgICAgICAgYnVmZmVyID0gYnVmZmVyICsgJ1xuICAgICsgJyArIGxpbmUuY29udGVu
dDsKLSAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgYnVmZmVyID0gbGluZS5jb250ZW50
OwotICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICBpZiAoYnVmZmVyKSB7
Ci0gICAgICAgICAgICBzb3VyY2UgKz0gJ2J1ZmZlciArPSAnICsgYnVmZmVyICsgJztcbiAgJzsK
LSAgICAgICAgICAgIGJ1ZmZlciA9IHVuZGVmaW5lZDsKLSAgICAgICAgICB9Ci0gICAgICAgICAg
c291cmNlICs9IGxpbmUgKyAnXG4gICc7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIHJldHVy
biBzb3VyY2U7Ci0gICAgfSwKLQotICAgIC8vIFtibG9ja1ZhbHVlXQotICAgIC8vCi0gICAgLy8g
T24gc3RhY2ssIGJlZm9yZTogaGFzaCwgaW52ZXJzZSwgcHJvZ3JhbSwgdmFsdWUKLSAgICAvLyBP
biBzdGFjaywgYWZ0ZXI6IHJldHVybiB2YWx1ZSBvZiBibG9ja0hlbHBlck1pc3NpbmcKLSAgICAv
LwotICAgIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgb3Bjb2RlIGlzIHRvIHRha2UgYSBibG9jayBv
ZiB0aGUgZm9ybQotICAgIC8vIGB7eyNmb299fS4uLnt7L2Zvb319YCwgcmVzb2x2ZSB0aGUgdmFs
dWUgb2YgYGZvb2AsIGFuZAotICAgIC8vIHJlcGxhY2UgaXQgb24gdGhlIHN0YWNrIHdpdGggdGhl
IHJlc3VsdCBvZiBwcm9wZXJseQotICAgIC8vIGludm9raW5nIGJsb2NrSGVscGVyTWlzc2luZy4K
LSAgICBibG9ja1ZhbHVlOiBmdW5jdGlvbigpIHsKLSAgICAgIHRoaXMuY29udGV4dC5hbGlhc2Vz
LmJsb2NrSGVscGVyTWlzc2luZyA9ICdoZWxwZXJzLmJsb2NrSGVscGVyTWlzc2luZyc7Ci0KLSAg
ICAgIHZhciBwYXJhbXMgPSBbImRlcHRoMCJdOwotICAgICAgdGhpcy5zZXR1cFBhcmFtcygwLCBw
YXJhbXMpOwotCi0gICAgICB0aGlzLnJlcGxhY2VTdGFjayhmdW5jdGlvbihjdXJyZW50KSB7Ci0g
ICAgICAgIHBhcmFtcy5zcGxpY2UoMSwgMCwgY3VycmVudCk7Ci0gICAgICAgIHJldHVybiAiYmxv
Y2tIZWxwZXJNaXNzaW5nLmNhbGwoIiArIHBhcmFtcy5qb2luKCIsICIpICsgIikiOwotICAgICAg
fSk7Ci0gICAgfSwKLQotICAgIC8vIFthbWJpZ3VvdXNCbG9ja1ZhbHVlXQotICAgIC8vCi0gICAg
Ly8gT24gc3RhY2ssIGJlZm9yZTogaGFzaCwgaW52ZXJzZSwgcHJvZ3JhbSwgdmFsdWUKLSAgICAv
LyBDb21waWxlciB2YWx1ZSwgYmVmb3JlOiBsYXN0SGVscGVyPXZhbHVlIG9mIGxhc3QgZm91bmQg
aGVscGVyLCBpZiBhbnkKLSAgICAvLyBPbiBzdGFjaywgYWZ0ZXIsIGlmIG5vIGxhc3RIZWxwZXI6
IHNhbWUgYXMgW2Jsb2NrVmFsdWVdCi0gICAgLy8gT24gc3RhY2ssIGFmdGVyLCBpZiBsYXN0SGVs
cGVyOiB2YWx1ZQotICAgIGFtYmlndW91c0Jsb2NrVmFsdWU6IGZ1bmN0aW9uKCkgewotICAgICAg
dGhpcy5jb250ZXh0LmFsaWFzZXMuYmxvY2tIZWxwZXJNaXNzaW5nID0gJ2hlbHBlcnMuYmxvY2tI
ZWxwZXJNaXNzaW5nJzsKLQotICAgICAgdmFyIHBhcmFtcyA9IFsiZGVwdGgwIl07Ci0gICAgICB0
aGlzLnNldHVwUGFyYW1zKDAsIHBhcmFtcyk7Ci0KLSAgICAgIHZhciBjdXJyZW50ID0gdGhpcy50
b3BTdGFjaygpOwotICAgICAgcGFyYW1zLnNwbGljZSgxLCAwLCBjdXJyZW50KTsKLQotICAgICAg
Ly8gVXNlIHRoZSBvcHRpb25zIHZhbHVlIGdlbmVyYXRlZCBmcm9tIHRoZSBpbnZvY2F0aW9uCi0g
ICAgICBwYXJhbXNbcGFyYW1zLmxlbmd0aC0xXSA9ICdvcHRpb25zJzsKLQotICAgICAgdGhpcy5z
b3VyY2UucHVzaCgiaWYgKCEiICsgdGhpcy5sYXN0SGVscGVyICsgIikgeyAiICsgY3VycmVudCAr
ICIgPSBibG9ja0hlbHBlck1pc3NpbmcuY2FsbCgiICsgcGFyYW1zLmpvaW4oIiwgIikgKyAiKTsg
fSIpOwotICAgIH0sCi0KLSAgICAvLyBbYXBwZW5kQ29udGVudF0KLSAgICAvLwotICAgIC8vIE9u
IHN0YWNrLCBiZWZvcmU6IC4uLgotICAgIC8vIE9uIHN0YWNrLCBhZnRlcjogLi4uCi0gICAgLy8K
LSAgICAvLyBBcHBlbmRzIHRoZSBzdHJpbmcgdmFsdWUgb2YgYGNvbnRlbnRgIHRvIHRoZSBjdXJy
ZW50IGJ1ZmZlcgotICAgIGFwcGVuZENvbnRlbnQ6IGZ1bmN0aW9uKGNvbnRlbnQpIHsKLSAgICAg
IHRoaXMuc291cmNlLnB1c2godGhpcy5hcHBlbmRUb0J1ZmZlcih0aGlzLnF1b3RlZFN0cmluZyhj
b250ZW50KSkpOwotICAgIH0sCi0KLSAgICAvLyBbYXBwZW5kXQotICAgIC8vCi0gICAgLy8gT24g
c3RhY2ssIGJlZm9yZTogdmFsdWUsIC4uLgotICAgIC8vIE9uIHN0YWNrLCBhZnRlcjogLi4uCi0g
ICAgLy8KLSAgICAvLyBDb2VyY2VzIGB2YWx1ZWAgdG8gYSBTdHJpbmcgYW5kIGFwcGVuZHMgaXQg
dG8gdGhlIGN1cnJlbnQgYnVmZmVyLgotICAgIC8vCi0gICAgLy8gSWYgYHZhbHVlYCBpcyB0cnV0
aHksIG9yIDAsIGl0IGlzIGNvZXJjZWQgaW50byBhIHN0cmluZyBhbmQgYXBwZW5kZWQKLSAgICAv
LyBPdGhlcndpc2UsIHRoZSBlbXB0eSBzdHJpbmcgaXMgYXBwZW5kZWQKLSAgICBhcHBlbmQ6IGZ1
bmN0aW9uKCkgewotICAgICAgLy8gRm9yY2UgYW55dGhpbmcgdGhhdCBpcyBpbmxpbmVkIG9udG8g
dGhlIHN0YWNrIHNvIHdlIGRvbid0IGhhdmUgZHVwbGljYXRpb24KLSAgICAgIC8vIHdoZW4gd2Ug
ZXhhbWluZSBsb2NhbAotICAgICAgdGhpcy5mbHVzaElubGluZSgpOwotICAgICAgdmFyIGxvY2Fs
ID0gdGhpcy5wb3BTdGFjaygpOwotICAgICAgdGhpcy5zb3VyY2UucHVzaCgiaWYoIiArIGxvY2Fs
ICsgIiB8fCAiICsgbG9jYWwgKyAiID09PSAwKSB7ICIgKyB0aGlzLmFwcGVuZFRvQnVmZmVyKGxv
Y2FsKSArICIgfSIpOwotICAgICAgaWYgKHRoaXMuZW52aXJvbm1lbnQuaXNTaW1wbGUpIHsKLSAg
ICAgICAgdGhpcy5zb3VyY2UucHVzaCgiZWxzZSB7ICIgKyB0aGlzLmFwcGVuZFRvQnVmZmVyKCIn
JyIpICsgIiB9Iik7Ci0gICAgICB9Ci0gICAgfSwKLQotICAgIC8vIFthcHBlbmRFc2NhcGVkXQot
ICAgIC8vCi0gICAgLy8gT24gc3RhY2ssIGJlZm9yZTogdmFsdWUsIC4uLgotICAgIC8vIE9uIHN0
YWNrLCBhZnRlcjogLi4uCi0gICAgLy8KLSAgICAvLyBFc2NhcGUgYHZhbHVlYCBhbmQgYXBwZW5k
IGl0IHRvIHRoZSBidWZmZXIKLSAgICBhcHBlbmRFc2NhcGVkOiBmdW5jdGlvbigpIHsKLSAgICAg
IHRoaXMuY29udGV4dC5hbGlhc2VzLmVzY2FwZUV4cHJlc3Npb24gPSAndGhpcy5lc2NhcGVFeHBy
ZXNzaW9uJzsKLQotICAgICAgdGhpcy5zb3VyY2UucHVzaCh0aGlzLmFwcGVuZFRvQnVmZmVyKCJl
c2NhcGVFeHByZXNzaW9uKCIgKyB0aGlzLnBvcFN0YWNrKCkgKyAiKSIpKTsKLSAgICB9LAotCi0g
ICAgLy8gW2dldENvbnRleHRdCi0gICAgLy8KLSAgICAvLyBPbiBzdGFjaywgYmVmb3JlOiAuLi4K
LSAgICAvLyBPbiBzdGFjaywgYWZ0ZXI6IC4uLgotICAgIC8vIENvbXBpbGVyIHZhbHVlLCBhZnRl
cjogbGFzdENvbnRleHQ9ZGVwdGgKLSAgICAvLwotICAgIC8vIFNldCB0aGUgdmFsdWUgb2YgdGhl
IGBsYXN0Q29udGV4dGAgY29tcGlsZXIgdmFsdWUgdG8gdGhlIGRlcHRoCi0gICAgZ2V0Q29udGV4
dDogZnVuY3Rpb24oZGVwdGgpIHsKLSAgICAgIGlmKHRoaXMubGFzdENvbnRleHQgIT09IGRlcHRo
KSB7Ci0gICAgICAgIHRoaXMubGFzdENvbnRleHQgPSBkZXB0aDsKLSAgICAgIH0KLSAgICB9LAot
Ci0gICAgLy8gW2xvb2t1cE9uQ29udGV4dF0KLSAgICAvLwotICAgIC8vIE9uIHN0YWNrLCBiZWZv
cmU6IC4uLgotICAgIC8vIE9uIHN0YWNrLCBhZnRlcjogY3VycmVudENvbnRleHRbbmFtZV0sIC4u
LgotICAgIC8vCi0gICAgLy8gTG9va3MgdXAgdGhlIHZhbHVlIG9mIGBuYW1lYCBvbiB0aGUgY3Vy
cmVudCBjb250ZXh0IGFuZCBwdXNoZXMKLSAgICAvLyBpdCBvbnRvIHRoZSBzdGFjay4KLSAgICBs
b29rdXBPbkNvbnRleHQ6IGZ1bmN0aW9uKG5hbWUpIHsKLSAgICAgIHRoaXMucHVzaCh0aGlzLm5h
bWVMb29rdXAoJ2RlcHRoJyArIHRoaXMubGFzdENvbnRleHQsIG5hbWUsICdjb250ZXh0JykpOwot
ICAgIH0sCi0KLSAgICAvLyBbcHVzaENvbnRleHRdCi0gICAgLy8KLSAgICAvLyBPbiBzdGFjaywg
YmVmb3JlOiAuLi4KLSAgICAvLyBPbiBzdGFjaywgYWZ0ZXI6IGN1cnJlbnRDb250ZXh0LCAuLi4K
LSAgICAvLwotICAgIC8vIFB1c2hlcyB0aGUgdmFsdWUgb2YgdGhlIGN1cnJlbnQgY29udGV4dCBv
bnRvIHRoZSBzdGFjay4KLSAgICBwdXNoQ29udGV4dDogZnVuY3Rpb24oKSB7Ci0gICAgICB0aGlz
LnB1c2hTdGFja0xpdGVyYWwoJ2RlcHRoJyArIHRoaXMubGFzdENvbnRleHQpOwotICAgIH0sCi0K
LSAgICAvLyBbcmVzb2x2ZVBvc3NpYmxlTGFtYmRhXQotICAgIC8vCi0gICAgLy8gT24gc3RhY2ss
IGJlZm9yZTogdmFsdWUsIC4uLgotICAgIC8vIE9uIHN0YWNrLCBhZnRlcjogcmVzb2x2ZWQgdmFs
dWUsIC4uLgotICAgIC8vCi0gICAgLy8gSWYgdGhlIGB2YWx1ZWAgaXMgYSBsYW1iZGEsIHJlcGxh
Y2UgaXQgb24gdGhlIHN0YWNrIGJ5Ci0gICAgLy8gdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgbGFt
YmRhCi0gICAgcmVzb2x2ZVBvc3NpYmxlTGFtYmRhOiBmdW5jdGlvbigpIHsKLSAgICAgIHRoaXMu
Y29udGV4dC5hbGlhc2VzLmZ1bmN0aW9uVHlwZSA9ICciZnVuY3Rpb24iJzsKLQotICAgICAgdGhp
cy5yZXBsYWNlU3RhY2soZnVuY3Rpb24oY3VycmVudCkgewotICAgICAgICByZXR1cm4gInR5cGVv
ZiAiICsgY3VycmVudCArICIgPT09IGZ1bmN0aW9uVHlwZSA/ICIgKyBjdXJyZW50ICsgIi5hcHBs
eShkZXB0aDApIDogIiArIGN1cnJlbnQ7Ci0gICAgICB9KTsKLSAgICB9LAotCi0gICAgLy8gW2xv
b2t1cF0KLSAgICAvLwotICAgIC8vIE9uIHN0YWNrLCBiZWZvcmU6IHZhbHVlLCAuLi4KLSAgICAv
LyBPbiBzdGFjaywgYWZ0ZXI6IHZhbHVlW25hbWVdLCAuLi4KLSAgICAvLwotICAgIC8vIFJlcGxh
Y2UgdGhlIHZhbHVlIG9uIHRoZSBzdGFjayB3aXRoIHRoZSByZXN1bHQgb2YgbG9va2luZwotICAg
IC8vIHVwIGBuYW1lYCBvbiBgdmFsdWVgCi0gICAgbG9va3VwOiBmdW5jdGlvbihuYW1lKSB7Ci0g
ICAgICB0aGlzLnJlcGxhY2VTdGFjayhmdW5jdGlvbihjdXJyZW50KSB7Ci0gICAgICAgIHJldHVy
biBjdXJyZW50ICsgIiA9PSBudWxsIHx8ICIgKyBjdXJyZW50ICsgIiA9PT0gZmFsc2UgPyAiICsg
Y3VycmVudCArICIgOiAiICsgdGhpcy5uYW1lTG9va3VwKGN1cnJlbnQsIG5hbWUsICdjb250ZXh0
Jyk7Ci0gICAgICB9KTsKLSAgICB9LAotCi0gICAgLy8gW2xvb2t1cERhdGFdCi0gICAgLy8KLSAg
ICAvLyBPbiBzdGFjaywgYmVmb3JlOiAuLi4KLSAgICAvLyBPbiBzdGFjaywgYWZ0ZXI6IGRhdGFb
aWRdLCAuLi4KLSAgICAvLwotICAgIC8vIFB1c2ggdGhlIHJlc3VsdCBvZiBsb29raW5nIHVwIGBp
ZGAgb24gdGhlIGN1cnJlbnQgZGF0YQotICAgIGxvb2t1cERhdGE6IGZ1bmN0aW9uKGlkKSB7Ci0g
ICAgICB0aGlzLnB1c2godGhpcy5uYW1lTG9va3VwKCdkYXRhJywgaWQsICdkYXRhJykpOwotICAg
IH0sCi0KLSAgICAvLyBbcHVzaFN0cmluZ1BhcmFtXQotICAgIC8vCi0gICAgLy8gT24gc3RhY2ss
IGJlZm9yZTogLi4uCi0gICAgLy8gT24gc3RhY2ssIGFmdGVyOiBzdHJpbmcsIGN1cnJlbnRDb250
ZXh0LCAuLi4KLSAgICAvLwotICAgIC8vIFRoaXMgb3Bjb2RlIGlzIGRlc2lnbmVkIGZvciB1c2Ug
aW4gc3RyaW5nIG1vZGUsIHdoaWNoCi0gICAgLy8gcHJvdmlkZXMgdGhlIHN0cmluZyB2YWx1ZSBv
ZiBhIHBhcmFtZXRlciBhbG9uZyB3aXRoIGl0cwotICAgIC8vIGRlcHRoIHJhdGhlciB0aGFuIHJl
c29sdmluZyBpdCBpbW1lZGlhdGVseS4KLSAgICBwdXNoU3RyaW5nUGFyYW06IGZ1bmN0aW9uKHN0
cmluZywgdHlwZSkgewotICAgICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFsKCdkZXB0aCcgKyB0aGlz
Lmxhc3RDb250ZXh0KTsKLQotICAgICAgdGhpcy5wdXNoU3RyaW5nKHR5cGUpOwotCi0gICAgICBp
ZiAodHlwZW9mIHN0cmluZyA9PT0gJ3N0cmluZycpIHsKLSAgICAgICAgdGhpcy5wdXNoU3RyaW5n
KHN0cmluZyk7Ci0gICAgICB9IGVsc2UgewotICAgICAgICB0aGlzLnB1c2hTdGFja0xpdGVyYWwo
c3RyaW5nKTsKLSAgICAgIH0KLSAgICB9LAotCi0gICAgZW1wdHlIYXNoOiBmdW5jdGlvbigpIHsK
LSAgICAgIHRoaXMucHVzaFN0YWNrTGl0ZXJhbCgne30nKTsKLQotICAgICAgaWYgKHRoaXMub3B0
aW9ucy5zdHJpbmdQYXJhbXMpIHsKLSAgICAgICAgdGhpcy5yZWdpc3RlcignaGFzaFR5cGVzJywg
J3t9Jyk7Ci0gICAgICB9Ci0gICAgfSwKLSAgICBwdXNoSGFzaDogZnVuY3Rpb24oKSB7Ci0gICAg
ICB0aGlzLmhhc2ggPSB7dmFsdWVzOiBbXSwgdHlwZXM6IFtdfTsKLSAgICB9LAotICAgIHBvcEhh
c2g6IGZ1bmN0aW9uKCkgewotICAgICAgdmFyIGhhc2ggPSB0aGlzLmhhc2g7Ci0gICAgICB0aGlz
Lmhhc2ggPSB1bmRlZmluZWQ7Ci0KLSAgICAgIGlmICh0aGlzLm9wdGlvbnMuc3RyaW5nUGFyYW1z
KSB7Ci0gICAgICAgIHRoaXMucmVnaXN0ZXIoJ2hhc2hUeXBlcycsICd7JyArIGhhc2gudHlwZXMu
am9pbignLCcpICsgJ30nKTsKLSAgICAgIH0KLSAgICAgIHRoaXMucHVzaCgne1xuICAgICcgKyBo
YXNoLnZhbHVlcy5qb2luKCcsXG4gICAgJykgKyAnXG4gIH0nKTsKLSAgICB9LAotCi0gICAgLy8g
W3B1c2hTdHJpbmddCi0gICAgLy8KLSAgICAvLyBPbiBzdGFjaywgYmVmb3JlOiAuLi4KLSAgICAv
LyBPbiBzdGFjaywgYWZ0ZXI6IHF1b3RlZFN0cmluZyhzdHJpbmcpLCAuLi4KLSAgICAvLwotICAg
IC8vIFB1c2ggYSBxdW90ZWQgdmVyc2lvbiBvZiBgc3RyaW5nYCBvbnRvIHRoZSBzdGFjawotICAg
IHB1c2hTdHJpbmc6IGZ1bmN0aW9uKHN0cmluZykgewotICAgICAgdGhpcy5wdXNoU3RhY2tMaXRl
cmFsKHRoaXMucXVvdGVkU3RyaW5nKHN0cmluZykpOwotICAgIH0sCi0KLSAgICAvLyBbcHVzaF0K
LSAgICAvLwotICAgIC8vIE9uIHN0YWNrLCBiZWZvcmU6IC4uLgotICAgIC8vIE9uIHN0YWNrLCBh
ZnRlcjogZXhwciwgLi4uCi0gICAgLy8KLSAgICAvLyBQdXNoIGFuIGV4cHJlc3Npb24gb250byB0
aGUgc3RhY2sKLSAgICBwdXNoOiBmdW5jdGlvbihleHByKSB7Ci0gICAgICB0aGlzLmlubGluZVN0
YWNrLnB1c2goZXhwcik7Ci0gICAgICByZXR1cm4gZXhwcjsKLSAgICB9LAotCi0gICAgLy8gW3B1
c2hMaXRlcmFsXQotICAgIC8vCi0gICAgLy8gT24gc3RhY2ssIGJlZm9yZTogLi4uCi0gICAgLy8g
T24gc3RhY2ssIGFmdGVyOiB2YWx1ZSwgLi4uCi0gICAgLy8KLSAgICAvLyBQdXNoZXMgYSB2YWx1
ZSBvbnRvIHRoZSBzdGFjay4gVGhpcyBvcGVyYXRpb24gcHJldmVudHMKLSAgICAvLyB0aGUgY29t
cGlsZXIgZnJvbSBjcmVhdGluZyBhIHRlbXBvcmFyeSB2YXJpYWJsZSB0byBob2xkCi0gICAgLy8g
aXQuCi0gICAgcHVzaExpdGVyYWw6IGZ1bmN0aW9uKHZhbHVlKSB7Ci0gICAgICB0aGlzLnB1c2hT
dGFja0xpdGVyYWwodmFsdWUpOwotICAgIH0sCi0KLSAgICAvLyBbcHVzaFByb2dyYW1dCi0gICAg
Ly8KLSAgICAvLyBPbiBzdGFjaywgYmVmb3JlOiAuLi4KLSAgICAvLyBPbiBzdGFjaywgYWZ0ZXI6
IHByb2dyYW0oZ3VpZCksIC4uLgotICAgIC8vCi0gICAgLy8gUHVzaCBhIHByb2dyYW0gZXhwcmVz
c2lvbiBvbnRvIHRoZSBzdGFjay4gVGhpcyB0YWtlcwotICAgIC8vIGEgY29tcGlsZS10aW1lIGd1
aWQgYW5kIGNvbnZlcnRzIGl0IGludG8gYSBydW50aW1lLWFjY2Vzc2libGUKLSAgICAvLyBleHBy
ZXNzaW9uLgotICAgIHB1c2hQcm9ncmFtOiBmdW5jdGlvbihndWlkKSB7Ci0gICAgICBpZiAoZ3Vp
ZCAhPSBudWxsKSB7Ci0gICAgICAgIHRoaXMucHVzaFN0YWNrTGl0ZXJhbCh0aGlzLnByb2dyYW1F
eHByZXNzaW9uKGd1aWQpKTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIHRoaXMucHVzaFN0YWNr
TGl0ZXJhbChudWxsKTsKLSAgICAgIH0KLSAgICB9LAotCi0gICAgLy8gW2ludm9rZUhlbHBlcl0K
LSAgICAvLwotICAgIC8vIE9uIHN0YWNrLCBiZWZvcmU6IGhhc2gsIGludmVyc2UsIHByb2dyYW0s
IHBhcmFtcy4uLiwgLi4uCi0gICAgLy8gT24gc3RhY2ssIGFmdGVyOiByZXN1bHQgb2YgaGVscGVy
IGludm9jYXRpb24KLSAgICAvLwotICAgIC8vIFBvcHMgb2ZmIHRoZSBoZWxwZXIncyBwYXJhbWV0
ZXJzLCBpbnZva2VzIHRoZSBoZWxwZXIsCi0gICAgLy8gYW5kIHB1c2hlcyB0aGUgaGVscGVyJ3Mg
cmV0dXJuIHZhbHVlIG9udG8gdGhlIHN0YWNrLgotICAgIC8vCi0gICAgLy8gSWYgdGhlIGhlbHBl
ciBpcyBub3QgZm91bmQsIGBoZWxwZXJNaXNzaW5nYCBpcyBjYWxsZWQuCi0gICAgaW52b2tlSGVs
cGVyOiBmdW5jdGlvbihwYXJhbVNpemUsIG5hbWUpIHsKLSAgICAgIHRoaXMuY29udGV4dC5hbGlh
c2VzLmhlbHBlck1pc3NpbmcgPSAnaGVscGVycy5oZWxwZXJNaXNzaW5nJzsKLQotICAgICAgdmFy
IGhlbHBlciA9IHRoaXMubGFzdEhlbHBlciA9IHRoaXMuc2V0dXBIZWxwZXIocGFyYW1TaXplLCBu
YW1lLCB0cnVlKTsKLQotICAgICAgdGhpcy5wdXNoKGhlbHBlci5uYW1lKTsKLSAgICAgIHRoaXMu
cmVwbGFjZVN0YWNrKGZ1bmN0aW9uKG5hbWUpIHsKLSAgICAgICAgcmV0dXJuIG5hbWUgKyAnID8g
JyArIG5hbWUgKyAnLmNhbGwoJyArCi0gICAgICAgICAgICBoZWxwZXIuY2FsbFBhcmFtcyArICIp
ICIgKyAiOiBoZWxwZXJNaXNzaW5nLmNhbGwoIiArCi0gICAgICAgICAgICBoZWxwZXIuaGVscGVy
TWlzc2luZ1BhcmFtcyArICIpIjsKLSAgICAgIH0pOwotICAgIH0sCi0KLSAgICAvLyBbaW52b2tl
S25vd25IZWxwZXJdCi0gICAgLy8KLSAgICAvLyBPbiBzdGFjaywgYmVmb3JlOiBoYXNoLCBpbnZl
cnNlLCBwcm9ncmFtLCBwYXJhbXMuLi4sIC4uLgotICAgIC8vIE9uIHN0YWNrLCBhZnRlcjogcmVz
dWx0IG9mIGhlbHBlciBpbnZvY2F0aW9uCi0gICAgLy8KLSAgICAvLyBUaGlzIG9wZXJhdGlvbiBp
cyB1c2VkIHdoZW4gdGhlIGhlbHBlciBpcyBrbm93biB0byBleGlzdCwKLSAgICAvLyBzbyBhIGBo
ZWxwZXJNaXNzaW5nYCBmYWxsYmFjayBpcyBub3QgcmVxdWlyZWQuCi0gICAgaW52b2tlS25vd25I
ZWxwZXI6IGZ1bmN0aW9uKHBhcmFtU2l6ZSwgbmFtZSkgewotICAgICAgdmFyIGhlbHBlciA9IHRo
aXMuc2V0dXBIZWxwZXIocGFyYW1TaXplLCBuYW1lKTsKLSAgICAgIHRoaXMucHVzaChoZWxwZXIu
bmFtZSArICIuY2FsbCgiICsgaGVscGVyLmNhbGxQYXJhbXMgKyAiKSIpOwotICAgIH0sCi0KLSAg
ICAvLyBbaW52b2tlQW1iaWd1b3VzXQotICAgIC8vCi0gICAgLy8gT24gc3RhY2ssIGJlZm9yZTog
aGFzaCwgaW52ZXJzZSwgcHJvZ3JhbSwgcGFyYW1zLi4uLCAuLi4KLSAgICAvLyBPbiBzdGFjaywg
YWZ0ZXI6IHJlc3VsdCBvZiBkaXNhbWJpZ3VhdGlvbgotICAgIC8vCi0gICAgLy8gVGhpcyBvcGVy
YXRpb24gaXMgdXNlZCB3aGVuIGFuIGV4cHJlc3Npb24gbGlrZSBge3tmb299fWAKLSAgICAvLyBp
cyBwcm92aWRlZCwgYnV0IHdlIGRvbid0IGtub3cgYXQgY29tcGlsZS10aW1lIHdoZXRoZXIgaXQK
LSAgICAvLyBpcyBhIGhlbHBlciBvciBhIHBhdGguCi0gICAgLy8KLSAgICAvLyBUaGlzIG9wZXJh
dGlvbiBlbWl0cyBtb3JlIGNvZGUgdGhhbiB0aGUgb3RoZXIgb3B0aW9ucywKLSAgICAvLyBhbmQg
Y2FuIGJlIGF2b2lkZWQgYnkgcGFzc2luZyB0aGUgYGtub3duSGVscGVyc2AgYW5kCi0gICAgLy8g
YGtub3duSGVscGVyc09ubHlgIGZsYWdzIGF0IGNvbXBpbGUtdGltZS4KLSAgICBpbnZva2VBbWJp
Z3VvdXM6IGZ1bmN0aW9uKG5hbWUsIGhlbHBlckNhbGwpIHsKLSAgICAgIHRoaXMuY29udGV4dC5h
bGlhc2VzLmZ1bmN0aW9uVHlwZSA9ICciZnVuY3Rpb24iJzsKLQotICAgICAgdGhpcy5wdXNoU3Rh
Y2tMaXRlcmFsKCd7fScpOyAgICAvLyBIYXNoIHZhbHVlCi0gICAgICB2YXIgaGVscGVyID0gdGhp
cy5zZXR1cEhlbHBlcigwLCBuYW1lLCBoZWxwZXJDYWxsKTsKLQotICAgICAgdmFyIGhlbHBlck5h
bWUgPSB0aGlzLmxhc3RIZWxwZXIgPSB0aGlzLm5hbWVMb29rdXAoJ2hlbHBlcnMnLCBuYW1lLCAn
aGVscGVyJyk7Ci0KLSAgICAgIHZhciBub25IZWxwZXIgPSB0aGlzLm5hbWVMb29rdXAoJ2RlcHRo
JyArIHRoaXMubGFzdENvbnRleHQsIG5hbWUsICdjb250ZXh0Jyk7Ci0gICAgICB2YXIgbmV4dFN0
YWNrID0gdGhpcy5uZXh0U3RhY2soKTsKLQotICAgICAgdGhpcy5zb3VyY2UucHVzaCgnaWYgKCcg
KyBuZXh0U3RhY2sgKyAnID0gJyArIGhlbHBlck5hbWUgKyAnKSB7ICcgKyBuZXh0U3RhY2sgKyAn
ID0gJyArIG5leHRTdGFjayArICcuY2FsbCgnICsgaGVscGVyLmNhbGxQYXJhbXMgKyAnKTsgfScp
OwotICAgICAgdGhpcy5zb3VyY2UucHVzaCgnZWxzZSB7ICcgKyBuZXh0U3RhY2sgKyAnID0gJyAr
IG5vbkhlbHBlciArICc7ICcgKyBuZXh0U3RhY2sgKyAnID0gdHlwZW9mICcgKyBuZXh0U3RhY2sg
KyAnID09PSBmdW5jdGlvblR5cGUgPyAnICsgbmV4dFN0YWNrICsgJy5hcHBseShkZXB0aDApIDog
JyArIG5leHRTdGFjayArICc7IH0nKTsKLSAgICB9LAotCi0gICAgLy8gW2ludm9rZVBhcnRpYWxd
Ci0gICAgLy8KLSAgICAvLyBPbiBzdGFjaywgYmVmb3JlOiBjb250ZXh0LCAuLi4KLSAgICAvLyBP
biBzdGFjayBhZnRlcjogcmVzdWx0IG9mIHBhcnRpYWwgaW52b2NhdGlvbgotICAgIC8vCi0gICAg
Ly8gVGhpcyBvcGVyYXRpb24gcG9wcyBvZmYgYSBjb250ZXh0LCBpbnZva2VzIGEgcGFydGlhbCB3
aXRoIHRoYXQgY29udGV4dCwKLSAgICAvLyBhbmQgcHVzaGVzIHRoZSByZXN1bHQgb2YgdGhlIGlu
dm9jYXRpb24gYmFjay4KLSAgICBpbnZva2VQYXJ0aWFsOiBmdW5jdGlvbihuYW1lKSB7Ci0gICAg
ICB2YXIgcGFyYW1zID0gW3RoaXMubmFtZUxvb2t1cCgncGFydGlhbHMnLCBuYW1lLCAncGFydGlh
bCcpLCAiJyIgKyBuYW1lICsgIiciLCB0aGlzLnBvcFN0YWNrKCksICJoZWxwZXJzIiwgInBhcnRp
YWxzIl07Ci0KLSAgICAgIGlmICh0aGlzLm9wdGlvbnMuZGF0YSkgewotICAgICAgICBwYXJhbXMu
cHVzaCgiZGF0YSIpOwotICAgICAgfQotCi0gICAgICB0aGlzLmNvbnRleHQuYWxpYXNlcy5zZWxm
ID0gInRoaXMiOwotICAgICAgdGhpcy5wdXNoKCJzZWxmLmludm9rZVBhcnRpYWwoIiArIHBhcmFt
cy5qb2luKCIsICIpICsgIikiKTsKLSAgICB9LAotCi0gICAgLy8gW2Fzc2lnblRvSGFzaF0KLSAg
ICAvLwotICAgIC8vIE9uIHN0YWNrLCBiZWZvcmU6IHZhbHVlLCBoYXNoLCAuLi4KLSAgICAvLyBP
biBzdGFjaywgYWZ0ZXI6IGhhc2gsIC4uLgotICAgIC8vCi0gICAgLy8gUG9wcyBhIHZhbHVlIGFu
ZCBoYXNoIG9mZiB0aGUgc3RhY2ssIGFzc2lnbnMgYGhhc2hba2V5XSA9IHZhbHVlYAotICAgIC8v
IGFuZCBwdXNoZXMgdGhlIGhhc2ggYmFjayBvbnRvIHRoZSBzdGFjay4KLSAgICBhc3NpZ25Ub0hh
c2g6IGZ1bmN0aW9uKGtleSkgewotICAgICAgdmFyIHZhbHVlID0gdGhpcy5wb3BTdGFjaygpLAot
ICAgICAgICAgIHR5cGU7Ci0KLSAgICAgIGlmICh0aGlzLm9wdGlvbnMuc3RyaW5nUGFyYW1zKSB7
Ci0gICAgICAgIHR5cGUgPSB0aGlzLnBvcFN0YWNrKCk7Ci0gICAgICAgIHRoaXMucG9wU3RhY2so
KTsKLSAgICAgIH0KLQotICAgICAgdmFyIGhhc2ggPSB0aGlzLmhhc2g7Ci0gICAgICBpZiAodHlw
ZSkgewotICAgICAgICBoYXNoLnR5cGVzLnB1c2goIiciICsga2V5ICsgIic6ICIgKyB0eXBlKTsK
LSAgICAgIH0KLSAgICAgIGhhc2gudmFsdWVzLnB1c2goIiciICsga2V5ICsgIic6ICgiICsgdmFs
dWUgKyAiKSIpOwotICAgIH0sCi0KLSAgICAvLyBIRUxQRVJTCi0KLSAgICBjb21waWxlcjogSmF2
YVNjcmlwdENvbXBpbGVyLAotCi0gICAgY29tcGlsZUNoaWxkcmVuOiBmdW5jdGlvbihlbnZpcm9u
bWVudCwgb3B0aW9ucykgewotICAgICAgdmFyIGNoaWxkcmVuID0gZW52aXJvbm1lbnQuY2hpbGRy
ZW4sIGNoaWxkLCBjb21waWxlcjsKLQotICAgICAgZm9yKHZhciBpPTAsIGw9Y2hpbGRyZW4ubGVu
Z3RoOyBpPGw7IGkrKykgewotICAgICAgICBjaGlsZCA9IGNoaWxkcmVuW2ldOwotICAgICAgICBj
b21waWxlciA9IG5ldyB0aGlzLmNvbXBpbGVyKCk7Ci0KLSAgICAgICAgdmFyIGluZGV4ID0gdGhp
cy5tYXRjaEV4aXN0aW5nUHJvZ3JhbShjaGlsZCk7Ci0KLSAgICAgICAgaWYgKGluZGV4ID09IG51
bGwpIHsKLSAgICAgICAgICB0aGlzLmNvbnRleHQucHJvZ3JhbXMucHVzaCgnJyk7ICAgICAvLyBQ
bGFjZWhvbGRlciB0byBwcmV2ZW50IG5hbWUgY29uZmxpY3RzIGZvciBuZXN0ZWQgY2hpbGRyZW4K
LSAgICAgICAgICBpbmRleCA9IHRoaXMuY29udGV4dC5wcm9ncmFtcy5sZW5ndGg7Ci0gICAgICAg
ICAgY2hpbGQuaW5kZXggPSBpbmRleDsKLSAgICAgICAgICBjaGlsZC5uYW1lID0gJ3Byb2dyYW0n
ICsgaW5kZXg7Ci0gICAgICAgICAgdGhpcy5jb250ZXh0LnByb2dyYW1zW2luZGV4XSA9IGNvbXBp
bGVyLmNvbXBpbGUoY2hpbGQsIG9wdGlvbnMsIHRoaXMuY29udGV4dCk7Ci0gICAgICAgICAgdGhp
cy5jb250ZXh0LmVudmlyb25tZW50c1tpbmRleF0gPSBjaGlsZDsKLSAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICBjaGlsZC5pbmRleCA9IGluZGV4OwotICAgICAgICAgIGNoaWxkLm5hbWUgPSAn
cHJvZ3JhbScgKyBpbmRleDsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0sCi0gICAgbWF0Y2hF
eGlzdGluZ1Byb2dyYW06IGZ1bmN0aW9uKGNoaWxkKSB7Ci0gICAgICBmb3IgKHZhciBpID0gMCwg
bGVuID0gdGhpcy5jb250ZXh0LmVudmlyb25tZW50cy5sZW5ndGg7IGkgPCBsZW47IGkrKykgewot
ICAgICAgICB2YXIgZW52aXJvbm1lbnQgPSB0aGlzLmNvbnRleHQuZW52aXJvbm1lbnRzW2ldOwot
ICAgICAgICBpZiAoZW52aXJvbm1lbnQgJiYgZW52aXJvbm1lbnQuZXF1YWxzKGNoaWxkKSkgewot
ICAgICAgICAgIHJldHVybiBpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfSwKLQotICAgIHBy
b2dyYW1FeHByZXNzaW9uOiBmdW5jdGlvbihndWlkKSB7Ci0gICAgICB0aGlzLmNvbnRleHQuYWxp
YXNlcy5zZWxmID0gInRoaXMiOwotCi0gICAgICBpZihndWlkID09IG51bGwpIHsKLSAgICAgICAg
cmV0dXJuICJzZWxmLm5vb3AiOwotICAgICAgfQotCi0gICAgICB2YXIgY2hpbGQgPSB0aGlzLmVu
dmlyb25tZW50LmNoaWxkcmVuW2d1aWRdLAotICAgICAgICAgIGRlcHRocyA9IGNoaWxkLmRlcHRo
cy5saXN0LCBkZXB0aDsKLQotICAgICAgdmFyIHByb2dyYW1QYXJhbXMgPSBbY2hpbGQuaW5kZXgs
IGNoaWxkLm5hbWUsICJkYXRhIl07Ci0KLSAgICAgIGZvcih2YXIgaT0wLCBsID0gZGVwdGhzLmxl
bmd0aDsgaTxsOyBpKyspIHsKLSAgICAgICAgZGVwdGggPSBkZXB0aHNbaV07Ci0KLSAgICAgICAg
aWYoZGVwdGggPT09IDEpIHsgcHJvZ3JhbVBhcmFtcy5wdXNoKCJkZXB0aDAiKTsgfQotICAgICAg
ICBlbHNlIHsgcHJvZ3JhbVBhcmFtcy5wdXNoKCJkZXB0aCIgKyAoZGVwdGggLSAxKSk7IH0KLSAg
ICAgIH0KLQotICAgICAgaWYoZGVwdGhzLmxlbmd0aCA9PT0gMCkgewotICAgICAgICByZXR1cm4g
InNlbGYucHJvZ3JhbSgiICsgcHJvZ3JhbVBhcmFtcy5qb2luKCIsICIpICsgIikiOwotICAgICAg
fSBlbHNlIHsKLSAgICAgICAgcHJvZ3JhbVBhcmFtcy5zaGlmdCgpOwotICAgICAgICByZXR1cm4g
InNlbGYucHJvZ3JhbVdpdGhEZXB0aCgiICsgcHJvZ3JhbVBhcmFtcy5qb2luKCIsICIpICsgIiki
OwotICAgICAgfQotICAgIH0sCi0KLSAgICByZWdpc3RlcjogZnVuY3Rpb24obmFtZSwgdmFsKSB7
Ci0gICAgICB0aGlzLnVzZVJlZ2lzdGVyKG5hbWUpOwotICAgICAgdGhpcy5zb3VyY2UucHVzaChu
YW1lICsgIiA9ICIgKyB2YWwgKyAiOyIpOwotICAgIH0sCi0KLSAgICB1c2VSZWdpc3RlcjogZnVu
Y3Rpb24obmFtZSkgewotICAgICAgaWYoIXRoaXMucmVnaXN0ZXJzW25hbWVdKSB7Ci0gICAgICAg
IHRoaXMucmVnaXN0ZXJzW25hbWVdID0gdHJ1ZTsKLSAgICAgICAgdGhpcy5yZWdpc3RlcnMubGlz
dC5wdXNoKG5hbWUpOwotICAgICAgfQotICAgIH0sCi0KLSAgICBwdXNoU3RhY2tMaXRlcmFsOiBm
dW5jdGlvbihpdGVtKSB7Ci0gICAgICByZXR1cm4gdGhpcy5wdXNoKG5ldyBMaXRlcmFsKGl0ZW0p
KTsKLSAgICB9LAotCi0gICAgcHVzaFN0YWNrOiBmdW5jdGlvbihpdGVtKSB7Ci0gICAgICB0aGlz
LmZsdXNoSW5saW5lKCk7Ci0KLSAgICAgIHZhciBzdGFjayA9IHRoaXMuaW5jclN0YWNrKCk7Ci0g
ICAgICBpZiAoaXRlbSkgewotICAgICAgICB0aGlzLnNvdXJjZS5wdXNoKHN0YWNrICsgIiA9ICIg
KyBpdGVtICsgIjsiKTsKLSAgICAgIH0KLSAgICAgIHRoaXMuY29tcGlsZVN0YWNrLnB1c2goc3Rh
Y2spOwotICAgICAgcmV0dXJuIHN0YWNrOwotICAgIH0sCi0KLSAgICByZXBsYWNlU3RhY2s6IGZ1
bmN0aW9uKGNhbGxiYWNrKSB7Ci0gICAgICB2YXIgcHJlZml4ID0gJycsCi0gICAgICAgICAgaW5s
aW5lID0gdGhpcy5pc0lubGluZSgpLAotICAgICAgICAgIHN0YWNrOwotCi0gICAgICAvLyBJZiB3
ZSBhcmUgY3VycmVudGx5IGlubGluZSB0aGVuIHdlIHdhbnQgdG8gbWVyZ2UgdGhlIGlubGluZSBz
dGF0ZW1lbnQgaW50byB0aGUKLSAgICAgIC8vIHJlcGxhY2VtZW50IHN0YXRlbWVudCB2aWEgJywn
Ci0gICAgICBpZiAoaW5saW5lKSB7Ci0gICAgICAgIHZhciB0b3AgPSB0aGlzLnBvcFN0YWNrKHRy
dWUpOwotCi0gICAgICAgIGlmICh0b3AgaW5zdGFuY2VvZiBMaXRlcmFsKSB7Ci0gICAgICAgICAg
Ly8gTGl0ZXJhbHMgZG8gbm90IG5lZWQgdG8gYmUgaW5saW5lZAotICAgICAgICAgIHN0YWNrID0g
dG9wLnZhbHVlOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIC8vIEdldCBvciBjcmVhdGUg
dGhlIGN1cnJlbnQgc3RhY2sgbmFtZSBmb3IgdXNlIGJ5IHRoZSBpbmxpbmUKLSAgICAgICAgICB2
YXIgbmFtZSA9IHRoaXMuc3RhY2tTbG90ID8gdGhpcy50b3BTdGFja05hbWUoKSA6IHRoaXMuaW5j
clN0YWNrKCk7Ci0KLSAgICAgICAgICBwcmVmaXggPSAnKCcgKyB0aGlzLnB1c2gobmFtZSkgKyAn
ID0gJyArIHRvcCArICcpLCc7Ci0gICAgICAgICAgc3RhY2sgPSB0aGlzLnRvcFN0YWNrKCk7Ci0g
ICAgICAgIH0KLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIHN0YWNrID0gdGhpcy50b3BTdGFjaygp
OwotICAgICAgfQotCi0gICAgICB2YXIgaXRlbSA9IGNhbGxiYWNrLmNhbGwodGhpcywgc3RhY2sp
OwotCi0gICAgICBpZiAoaW5saW5lKSB7Ci0gICAgICAgIGlmICh0aGlzLmlubGluZVN0YWNrLmxl
bmd0aCB8fCB0aGlzLmNvbXBpbGVTdGFjay5sZW5ndGgpIHsKLSAgICAgICAgICB0aGlzLnBvcFN0
YWNrKCk7Ci0gICAgICAgIH0KLSAgICAgICAgdGhpcy5wdXNoKCcoJyArIHByZWZpeCArIGl0ZW0g
KyAnKScpOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgLy8gUHJldmVudCBtb2RpZmljYXRpb24g
b2YgdGhlIGNvbnRleHQgZGVwdGggdmFyaWFibGUuIFRocm91Z2ggcmVwbGFjZVN0YWNrCi0gICAg
ICAgIGlmICghL15zdGFjay8udGVzdChzdGFjaykpIHsKLSAgICAgICAgICBzdGFjayA9IHRoaXMu
bmV4dFN0YWNrKCk7Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLnNvdXJjZS5wdXNoKHN0YWNr
ICsgIiA9ICgiICsgcHJlZml4ICsgaXRlbSArICIpOyIpOwotICAgICAgfQotICAgICAgcmV0dXJu
IHN0YWNrOwotICAgIH0sCi0KLSAgICBuZXh0U3RhY2s6IGZ1bmN0aW9uKCkgewotICAgICAgcmV0
dXJuIHRoaXMucHVzaFN0YWNrKCk7Ci0gICAgfSwKLQotICAgIGluY3JTdGFjazogZnVuY3Rpb24o
KSB7Ci0gICAgICB0aGlzLnN0YWNrU2xvdCsrOwotICAgICAgaWYodGhpcy5zdGFja1Nsb3QgPiB0
aGlzLnN0YWNrVmFycy5sZW5ndGgpIHsgdGhpcy5zdGFja1ZhcnMucHVzaCgic3RhY2siICsgdGhp
cy5zdGFja1Nsb3QpOyB9Ci0gICAgICByZXR1cm4gdGhpcy50b3BTdGFja05hbWUoKTsKLSAgICB9
LAotICAgIHRvcFN0YWNrTmFtZTogZnVuY3Rpb24oKSB7Ci0gICAgICByZXR1cm4gInN0YWNrIiAr
IHRoaXMuc3RhY2tTbG90OwotICAgIH0sCi0gICAgZmx1c2hJbmxpbmU6IGZ1bmN0aW9uKCkgewot
ICAgICAgdmFyIGlubGluZVN0YWNrID0gdGhpcy5pbmxpbmVTdGFjazsKLSAgICAgIGlmIChpbmxp
bmVTdGFjay5sZW5ndGgpIHsKLSAgICAgICAgdGhpcy5pbmxpbmVTdGFjayA9IFtdOwotICAgICAg
ICBmb3IgKHZhciBpID0gMCwgbGVuID0gaW5saW5lU3RhY2subGVuZ3RoOyBpIDwgbGVuOyBpKysp
IHsKLSAgICAgICAgICB2YXIgZW50cnkgPSBpbmxpbmVTdGFja1tpXTsKLSAgICAgICAgICBpZiAo
ZW50cnkgaW5zdGFuY2VvZiBMaXRlcmFsKSB7Ci0gICAgICAgICAgICB0aGlzLmNvbXBpbGVTdGFj
ay5wdXNoKGVudHJ5KTsKLSAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdGhpcy5wdXNo
U3RhY2soZW50cnkpOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotICAgIH0sCi0g
ICAgaXNJbmxpbmU6IGZ1bmN0aW9uKCkgewotICAgICAgcmV0dXJuIHRoaXMuaW5saW5lU3RhY2su
bGVuZ3RoOwotICAgIH0sCi0KLSAgICBwb3BTdGFjazogZnVuY3Rpb24od3JhcHBlZCkgewotICAg
ICAgdmFyIGlubGluZSA9IHRoaXMuaXNJbmxpbmUoKSwKLSAgICAgICAgICBpdGVtID0gKGlubGlu
ZSA/IHRoaXMuaW5saW5lU3RhY2sgOiB0aGlzLmNvbXBpbGVTdGFjaykucG9wKCk7Ci0KLSAgICAg
IGlmICghd3JhcHBlZCAmJiAoaXRlbSBpbnN0YW5jZW9mIExpdGVyYWwpKSB7Ci0gICAgICAgIHJl
dHVybiBpdGVtLnZhbHVlOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKCFpbmxpbmUpIHsK
LSAgICAgICAgICB0aGlzLnN0YWNrU2xvdC0tOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBp
dGVtOwotICAgICAgfQotICAgIH0sCi0KLSAgICB0b3BTdGFjazogZnVuY3Rpb24od3JhcHBlZCkg
ewotICAgICAgdmFyIHN0YWNrID0gKHRoaXMuaXNJbmxpbmUoKSA/IHRoaXMuaW5saW5lU3RhY2sg
OiB0aGlzLmNvbXBpbGVTdGFjayksCi0gICAgICAgICAgaXRlbSA9IHN0YWNrW3N0YWNrLmxlbmd0
aCAtIDFdOwotCi0gICAgICBpZiAoIXdyYXBwZWQgJiYgKGl0ZW0gaW5zdGFuY2VvZiBMaXRlcmFs
KSkgewotICAgICAgICByZXR1cm4gaXRlbS52YWx1ZTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAg
IHJldHVybiBpdGVtOwotICAgICAgfQotICAgIH0sCi0KLSAgICBxdW90ZWRTdHJpbmc6IGZ1bmN0
aW9uKHN0cikgewotICAgICAgcmV0dXJuICciJyArIHN0cgotICAgICAgICAucmVwbGFjZSgvXFwv
ZywgJ1xcXFwnKQotICAgICAgICAucmVwbGFjZSgvIi9nLCAnXFwiJykKLSAgICAgICAgLnJlcGxh
Y2UoL1xuL2csICdcXG4nKQotICAgICAgICAucmVwbGFjZSgvXHIvZywgJ1xccicpICsgJyInOwot
ICAgIH0sCi0KLSAgICBzZXR1cEhlbHBlcjogZnVuY3Rpb24ocGFyYW1TaXplLCBuYW1lLCBtaXNz
aW5nUGFyYW1zKSB7Ci0gICAgICB2YXIgcGFyYW1zID0gW107Ci0gICAgICB0aGlzLnNldHVwUGFy
YW1zKHBhcmFtU2l6ZSwgcGFyYW1zLCBtaXNzaW5nUGFyYW1zKTsKLSAgICAgIHZhciBmb3VuZEhl
bHBlciA9IHRoaXMubmFtZUxvb2t1cCgnaGVscGVycycsIG5hbWUsICdoZWxwZXInKTsKLQotICAg
ICAgcmV0dXJuIHsKLSAgICAgICAgcGFyYW1zOiBwYXJhbXMsCi0gICAgICAgIG5hbWU6IGZvdW5k
SGVscGVyLAotICAgICAgICBjYWxsUGFyYW1zOiBbImRlcHRoMCJdLmNvbmNhdChwYXJhbXMpLmpv
aW4oIiwgIiksCi0gICAgICAgIGhlbHBlck1pc3NpbmdQYXJhbXM6IG1pc3NpbmdQYXJhbXMgJiYg
WyJkZXB0aDAiLCB0aGlzLnF1b3RlZFN0cmluZyhuYW1lKV0uY29uY2F0KHBhcmFtcykuam9pbigi
LCAiKQotICAgICAgfTsKLSAgICB9LAotCi0gICAgLy8gdGhlIHBhcmFtcyBhbmQgY29udGV4dHMg
YXJndW1lbnRzIGFyZSBwYXNzZWQgaW4gYXJyYXlzCi0gICAgLy8gdG8gZmlsbCBpbgotICAgIHNl
dHVwUGFyYW1zOiBmdW5jdGlvbihwYXJhbVNpemUsIHBhcmFtcywgdXNlUmVnaXN0ZXIpIHsKLSAg
ICAgIHZhciBvcHRpb25zID0gW10sIGNvbnRleHRzID0gW10sIHR5cGVzID0gW10sIHBhcmFtLCBp
bnZlcnNlLCBwcm9ncmFtOwotCi0gICAgICBvcHRpb25zLnB1c2goImhhc2g6IiArIHRoaXMucG9w
U3RhY2soKSk7Ci0KLSAgICAgIGludmVyc2UgPSB0aGlzLnBvcFN0YWNrKCk7Ci0gICAgICBwcm9n
cmFtID0gdGhpcy5wb3BTdGFjaygpOwotCi0gICAgICAvLyBBdm9pZCBzZXR0aW5nIGZuIGFuZCBp
bnZlcnNlIGlmIG5laXRoZXIgYXJlIHNldC4gVGhpcyBhbGxvd3MKLSAgICAgIC8vIGhlbHBlcnMg
dG8gZG8gYSBjaGVjayBmb3IgYGlmIChvcHRpb25zLmZuKWAKLSAgICAgIGlmIChwcm9ncmFtIHx8
IGludmVyc2UpIHsKLSAgICAgICAgaWYgKCFwcm9ncmFtKSB7Ci0gICAgICAgICAgdGhpcy5jb250
ZXh0LmFsaWFzZXMuc2VsZiA9ICJ0aGlzIjsKLSAgICAgICAgICBwcm9ncmFtID0gInNlbGYubm9v
cCI7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIWludmVyc2UpIHsKLSAgICAgICAgIHRoaXMu
Y29udGV4dC5hbGlhc2VzLnNlbGYgPSAidGhpcyI7Ci0gICAgICAgICAgaW52ZXJzZSA9ICJzZWxm
Lm5vb3AiOwotICAgICAgICB9Ci0KLSAgICAgICAgb3B0aW9ucy5wdXNoKCJpbnZlcnNlOiIgKyBp
bnZlcnNlKTsKLSAgICAgICAgb3B0aW9ucy5wdXNoKCJmbjoiICsgcHJvZ3JhbSk7Ci0gICAgICB9
Ci0KLSAgICAgIGZvcih2YXIgaT0wOyBpPHBhcmFtU2l6ZTsgaSsrKSB7Ci0gICAgICAgIHBhcmFt
ID0gdGhpcy5wb3BTdGFjaygpOwotICAgICAgICBwYXJhbXMucHVzaChwYXJhbSk7Ci0KLSAgICAg
ICAgaWYodGhpcy5vcHRpb25zLnN0cmluZ1BhcmFtcykgewotICAgICAgICAgIHR5cGVzLnB1c2go
dGhpcy5wb3BTdGFjaygpKTsKLSAgICAgICAgICBjb250ZXh0cy5wdXNoKHRoaXMucG9wU3RhY2so
KSk7Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgICAgaWYgKHRoaXMub3B0aW9ucy5zdHJpbmdQ
YXJhbXMpIHsKLSAgICAgICAgb3B0aW9ucy5wdXNoKCJjb250ZXh0czpbIiArIGNvbnRleHRzLmpv
aW4oIiwiKSArICJdIik7Ci0gICAgICAgIG9wdGlvbnMucHVzaCgidHlwZXM6WyIgKyB0eXBlcy5q
b2luKCIsIikgKyAiXSIpOwotICAgICAgICBvcHRpb25zLnB1c2goImhhc2hUeXBlczpoYXNoVHlw
ZXMiKTsKLSAgICAgIH0KLQotICAgICAgaWYodGhpcy5vcHRpb25zLmRhdGEpIHsKLSAgICAgICAg
b3B0aW9ucy5wdXNoKCJkYXRhOmRhdGEiKTsKLSAgICAgIH0KLQotICAgICAgb3B0aW9ucyA9ICJ7
IiArIG9wdGlvbnMuam9pbigiLCIpICsgIn0iOwotICAgICAgaWYgKHVzZVJlZ2lzdGVyKSB7Ci0g
ICAgICAgIHRoaXMucmVnaXN0ZXIoJ29wdGlvbnMnLCBvcHRpb25zKTsKLSAgICAgICAgcGFyYW1z
LnB1c2goJ29wdGlvbnMnKTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIHBhcmFtcy5wdXNoKG9w
dGlvbnMpOwotICAgICAgfQotICAgICAgcmV0dXJuIHBhcmFtcy5qb2luKCIsICIpOwotICAgIH0K
LSAgfTsKLQotICB2YXIgcmVzZXJ2ZWRXb3JkcyA9ICgKLSAgICAiYnJlYWsgZWxzZSBuZXcgdmFy
IiArCi0gICAgIiBjYXNlIGZpbmFsbHkgcmV0dXJuIHZvaWQiICsKLSAgICAiIGNhdGNoIGZvciBz
d2l0Y2ggd2hpbGUiICsKLSAgICAiIGNvbnRpbnVlIGZ1bmN0aW9uIHRoaXMgd2l0aCIgKwotICAg
ICIgZGVmYXVsdCBpZiB0aHJvdyIgKwotICAgICIgZGVsZXRlIGluIHRyeSIgKwotICAgICIgZG8g
aW5zdGFuY2VvZiB0eXBlb2YiICsKLSAgICAiIGFic3RyYWN0IGVudW0gaW50IHNob3J0IiArCi0g
ICAgIiBib29sZWFuIGV4cG9ydCBpbnRlcmZhY2Ugc3RhdGljIiArCi0gICAgIiBieXRlIGV4dGVu
ZHMgbG9uZyBzdXBlciIgKwotICAgICIgY2hhciBmaW5hbCBuYXRpdmUgc3luY2hyb25pemVkIiAr
Ci0gICAgIiBjbGFzcyBmbG9hdCBwYWNrYWdlIHRocm93cyIgKwotICAgICIgY29uc3QgZ290byBw
cml2YXRlIHRyYW5zaWVudCIgKwotICAgICIgZGVidWdnZXIgaW1wbGVtZW50cyBwcm90ZWN0ZWQg
dm9sYXRpbGUiICsKLSAgICAiIGRvdWJsZSBpbXBvcnQgcHVibGljIGxldCB5aWVsZCIKLSAgKS5z
cGxpdCgiICIpOwotCi0gIHZhciBjb21waWxlcldvcmRzID0gSmF2YVNjcmlwdENvbXBpbGVyLlJF
U0VSVkVEX1dPUkRTID0ge307Ci0KLSAgZm9yKHZhciBpPTAsIGw9cmVzZXJ2ZWRXb3Jkcy5sZW5n
dGg7IGk8bDsgaSsrKSB7Ci0gICAgY29tcGlsZXJXb3Jkc1tyZXNlcnZlZFdvcmRzW2ldXSA9IHRy
dWU7Ci0gIH0KLQotICBKYXZhU2NyaXB0Q29tcGlsZXIuaXNWYWxpZEphdmFTY3JpcHRWYXJpYWJs
ZU5hbWUgPSBmdW5jdGlvbihuYW1lKSB7Ci0gICAgaWYoIUphdmFTY3JpcHRDb21waWxlci5SRVNF
UlZFRF9XT1JEU1tuYW1lXSAmJiAvXlthLXpBLVpfJF1bMC05YS16QS1aXyRdKyQvLnRlc3QobmFt
ZSkpIHsKLSAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci0gIH07
Ci0KLX0pKEhhbmRsZWJhcnMuQ29tcGlsZXIsIEhhbmRsZWJhcnMuSmF2YVNjcmlwdENvbXBpbGVy
KTsKLQotSGFuZGxlYmFycy5wcmVjb21waWxlID0gZnVuY3Rpb24oaW5wdXQsIG9wdGlvbnMpIHsK
LSAgaWYgKCFpbnB1dCB8fCAodHlwZW9mIGlucHV0ICE9PSAnc3RyaW5nJyAmJiBpbnB1dC5jb25z
dHJ1Y3RvciAhPT0gSGFuZGxlYmFycy5BU1QuUHJvZ3JhbU5vZGUpKSB7Ci0gICAgdGhyb3cgbmV3
IEhhbmRsZWJhcnMuRXhjZXB0aW9uKCJZb3UgbXVzdCBwYXNzIGEgc3RyaW5nIG9yIEhhbmRsZWJh
cnMgQVNUIHRvIEhhbmRsZWJhcnMuY29tcGlsZS4gWW91IHBhc3NlZCAiICsgaW5wdXQpOwotICB9
Ci0KLSAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307Ci0gIGlmICghKCdkYXRhJyBpbiBvcHRpb25z
KSkgewotICAgIG9wdGlvbnMuZGF0YSA9IHRydWU7Ci0gIH0KLSAgdmFyIGFzdCA9IEhhbmRsZWJh
cnMucGFyc2UoaW5wdXQpOwotICB2YXIgZW52aXJvbm1lbnQgPSBuZXcgSGFuZGxlYmFycy5Db21w
aWxlcigpLmNvbXBpbGUoYXN0LCBvcHRpb25zKTsKLSAgcmV0dXJuIG5ldyBIYW5kbGViYXJzLkph
dmFTY3JpcHRDb21waWxlcigpLmNvbXBpbGUoZW52aXJvbm1lbnQsIG9wdGlvbnMpOwotfTsKLQot
SGFuZGxlYmFycy5jb21waWxlID0gZnVuY3Rpb24oaW5wdXQsIG9wdGlvbnMpIHsKLSAgaWYgKCFp
bnB1dCB8fCAodHlwZW9mIGlucHV0ICE9PSAnc3RyaW5nJyAmJiBpbnB1dC5jb25zdHJ1Y3RvciAh
PT0gSGFuZGxlYmFycy5BU1QuUHJvZ3JhbU5vZGUpKSB7Ci0gICAgdGhyb3cgbmV3IEhhbmRsZWJh
cnMuRXhjZXB0aW9uKCJZb3UgbXVzdCBwYXNzIGEgc3RyaW5nIG9yIEhhbmRsZWJhcnMgQVNUIHRv
IEhhbmRsZWJhcnMuY29tcGlsZS4gWW91IHBhc3NlZCAiICsgaW5wdXQpOwotICB9Ci0KLSAgb3B0
aW9ucyA9IG9wdGlvbnMgfHwge307Ci0gIGlmICghKCdkYXRhJyBpbiBvcHRpb25zKSkgewotICAg
IG9wdGlvbnMuZGF0YSA9IHRydWU7Ci0gIH0KLSAgdmFyIGNvbXBpbGVkOwotICBmdW5jdGlvbiBj
b21waWxlKCkgewotICAgIHZhciBhc3QgPSBIYW5kbGViYXJzLnBhcnNlKGlucHV0KTsKLSAgICB2
YXIgZW52aXJvbm1lbnQgPSBuZXcgSGFuZGxlYmFycy5Db21waWxlcigpLmNvbXBpbGUoYXN0LCBv
cHRpb25zKTsKLSAgICB2YXIgdGVtcGxhdGVTcGVjID0gbmV3IEhhbmRsZWJhcnMuSmF2YVNjcmlw
dENvbXBpbGVyKCkuY29tcGlsZShlbnZpcm9ubWVudCwgb3B0aW9ucywgdW5kZWZpbmVkLCB0cnVl
KTsKLSAgICByZXR1cm4gSGFuZGxlYmFycy50ZW1wbGF0ZSh0ZW1wbGF0ZVNwZWMpOwotICB9Ci0K
LSAgLy8gVGVtcGxhdGUgaXMgb25seSBjb21waWxlZCBvbiBmaXJzdCB1c2UgYW5kIGNhY2hlZCBh
ZnRlciB0aGF0IHBvaW50LgotICByZXR1cm4gZnVuY3Rpb24oY29udGV4dCwgb3B0aW9ucykgewot
ICAgIGlmICghY29tcGlsZWQpIHsKLSAgICAgIGNvbXBpbGVkID0gY29tcGlsZSgpOwotICAgIH0K
LSAgICByZXR1cm4gY29tcGlsZWQuY2FsbCh0aGlzLCBjb250ZXh0LCBvcHRpb25zKTsKLSAgfTsK
LX07Ci07Ci0vLyBsaWIvaGFuZGxlYmFycy9ydW50aW1lLmpzCi1IYW5kbGViYXJzLlZNID0gewot
ICB0ZW1wbGF0ZTogZnVuY3Rpb24odGVtcGxhdGVTcGVjKSB7Ci0gICAgLy8gSnVzdCBhZGQgd2F0
ZXIKLSAgICB2YXIgY29udGFpbmVyID0gewotICAgICAgZXNjYXBlRXhwcmVzc2lvbjogSGFuZGxl
YmFycy5VdGlscy5lc2NhcGVFeHByZXNzaW9uLAotICAgICAgaW52b2tlUGFydGlhbDogSGFuZGxl
YmFycy5WTS5pbnZva2VQYXJ0aWFsLAotICAgICAgcHJvZ3JhbXM6IFtdLAotICAgICAgcHJvZ3Jh
bTogZnVuY3Rpb24oaSwgZm4sIGRhdGEpIHsKLSAgICAgICAgdmFyIHByb2dyYW1XcmFwcGVyID0g
dGhpcy5wcm9ncmFtc1tpXTsKLSAgICAgICAgaWYoZGF0YSkgewotICAgICAgICAgIHJldHVybiBI
YW5kbGViYXJzLlZNLnByb2dyYW0oZm4sIGRhdGEpOwotICAgICAgICB9IGVsc2UgaWYocHJvZ3Jh
bVdyYXBwZXIpIHsKLSAgICAgICAgICByZXR1cm4gcHJvZ3JhbVdyYXBwZXI7Ci0gICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgcHJvZ3JhbVdyYXBwZXIgPSB0aGlzLnByb2dyYW1zW2ldID0gSGFu
ZGxlYmFycy5WTS5wcm9ncmFtKGZuKTsKLSAgICAgICAgICByZXR1cm4gcHJvZ3JhbVdyYXBwZXI7
Ci0gICAgICAgIH0KLSAgICAgIH0sCi0gICAgICBwcm9ncmFtV2l0aERlcHRoOiBIYW5kbGViYXJz
LlZNLnByb2dyYW1XaXRoRGVwdGgsCi0gICAgICBub29wOiBIYW5kbGViYXJzLlZNLm5vb3AsCi0g
ICAgICBjb21waWxlckluZm86IG51bGwKLSAgICB9OwotCi0gICAgcmV0dXJuIGZ1bmN0aW9uKGNv
bnRleHQsIG9wdGlvbnMpIHsKLSAgICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OwotICAgICAg
dmFyIHJlc3VsdCA9IHRlbXBsYXRlU3BlYy5jYWxsKGNvbnRhaW5lciwgSGFuZGxlYmFycywgY29u
dGV4dCwgb3B0aW9ucy5oZWxwZXJzLCBvcHRpb25zLnBhcnRpYWxzLCBvcHRpb25zLmRhdGEpOwot
Ci0gICAgICB2YXIgY29tcGlsZXJJbmZvID0gY29udGFpbmVyLmNvbXBpbGVySW5mbyB8fCBbXSwK
LSAgICAgICAgICBjb21waWxlclJldmlzaW9uID0gY29tcGlsZXJJbmZvWzBdIHx8IDEsCi0gICAg
ICAgICAgY3VycmVudFJldmlzaW9uID0gSGFuZGxlYmFycy5DT01QSUxFUl9SRVZJU0lPTjsKLQot
ICAgICAgaWYgKGNvbXBpbGVyUmV2aXNpb24gIT09IGN1cnJlbnRSZXZpc2lvbikgewotICAgICAg
ICBpZiAoY29tcGlsZXJSZXZpc2lvbiA8IGN1cnJlbnRSZXZpc2lvbikgewotICAgICAgICAgIHZh
ciBydW50aW1lVmVyc2lvbnMgPSBIYW5kbGViYXJzLlJFVklTSU9OX0NIQU5HRVNbY3VycmVudFJl
dmlzaW9uXSwKLSAgICAgICAgICAgICAgY29tcGlsZXJWZXJzaW9ucyA9IEhhbmRsZWJhcnMuUkVW
SVNJT05fQ0hBTkdFU1tjb21waWxlclJldmlzaW9uXTsKLSAgICAgICAgICB0aHJvdyAiVGVtcGxh
dGUgd2FzIHByZWNvbXBpbGVkIHdpdGggYW4gb2xkZXIgdmVyc2lvbiBvZiBIYW5kbGViYXJzIHRo
YW4gdGhlIGN1cnJlbnQgcnVudGltZS4gIisKLSAgICAgICAgICAgICAgICAiUGxlYXNlIHVwZGF0
ZSB5b3VyIHByZWNvbXBpbGVyIHRvIGEgbmV3ZXIgdmVyc2lvbiAoIitydW50aW1lVmVyc2lvbnMr
Iikgb3IgZG93bmdyYWRlIHlvdXIgcnVudGltZSB0byBhbiBvbGRlciB2ZXJzaW9uICgiK2NvbXBp
bGVyVmVyc2lvbnMrIikuIjsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAvLyBVc2UgdGhl
IGVtYmVkZGVkIHZlcnNpb24gaW5mbyBzaW5jZSB0aGUgcnVudGltZSBkb2Vzbid0IGtub3cgYWJv
dXQgdGhpcyByZXZpc2lvbiB5ZXQKLSAgICAgICAgICB0aHJvdyAiVGVtcGxhdGUgd2FzIHByZWNv
bXBpbGVkIHdpdGggYSBuZXdlciB2ZXJzaW9uIG9mIEhhbmRsZWJhcnMgdGhhbiB0aGUgY3VycmVu
dCBydW50aW1lLiAiKwotICAgICAgICAgICAgICAgICJQbGVhc2UgdXBkYXRlIHlvdXIgcnVudGlt
ZSB0byBhIG5ld2VyIHZlcnNpb24gKCIrY29tcGlsZXJJbmZvWzFdKyIpLiI7Ci0gICAgICAgIH0K
LSAgICAgIH0KLQotICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9OwotICB9LAotCi0gIHByb2dy
YW1XaXRoRGVwdGg6IGZ1bmN0aW9uKGZuLCBkYXRhLCAkZGVwdGgpIHsKLSAgICB2YXIgYXJncyA9
IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMik7Ci0KLSAgICByZXR1cm4g
ZnVuY3Rpb24oY29udGV4dCwgb3B0aW9ucykgewotICAgICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwg
e307Ci0KLSAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBbY29udGV4dCwgb3B0aW9ucy5kYXRh
IHx8IGRhdGFdLmNvbmNhdChhcmdzKSk7Ci0gICAgfTsKLSAgfSwKLSAgcHJvZ3JhbTogZnVuY3Rp
b24oZm4sIGRhdGEpIHsKLSAgICByZXR1cm4gZnVuY3Rpb24oY29udGV4dCwgb3B0aW9ucykgewot
ICAgICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307Ci0KLSAgICAgIHJldHVybiBmbihjb250ZXh0
LCBvcHRpb25zLmRhdGEgfHwgZGF0YSk7Ci0gICAgfTsKLSAgfSwKLSAgbm9vcDogZnVuY3Rpb24o
KSB7IHJldHVybiAiIjsgfSwKLSAgaW52b2tlUGFydGlhbDogZnVuY3Rpb24ocGFydGlhbCwgbmFt
ZSwgY29udGV4dCwgaGVscGVycywgcGFydGlhbHMsIGRhdGEpIHsKLSAgICB2YXIgb3B0aW9ucyA9
IHsgaGVscGVyczogaGVscGVycywgcGFydGlhbHM6IHBhcnRpYWxzLCBkYXRhOiBkYXRhIH07Ci0K
LSAgICBpZihwYXJ0aWFsID09PSB1bmRlZmluZWQpIHsKLSAgICAgIHRocm93IG5ldyBIYW5kbGVi
YXJzLkV4Y2VwdGlvbigiVGhlIHBhcnRpYWwgIiArIG5hbWUgKyAiIGNvdWxkIG5vdCBiZSBmb3Vu
ZCIpOwotICAgIH0gZWxzZSBpZihwYXJ0aWFsIGluc3RhbmNlb2YgRnVuY3Rpb24pIHsKLSAgICAg
IHJldHVybiBwYXJ0aWFsKGNvbnRleHQsIG9wdGlvbnMpOwotICAgIH0gZWxzZSBpZiAoIUhhbmRs
ZWJhcnMuY29tcGlsZSkgewotICAgICAgdGhyb3cgbmV3IEhhbmRsZWJhcnMuRXhjZXB0aW9uKCJU
aGUgcGFydGlhbCAiICsgbmFtZSArICIgY291bGQgbm90IGJlIGNvbXBpbGVkIHdoZW4gcnVubmlu
ZyBpbiBydW50aW1lLW9ubHkgbW9kZSIpOwotICAgIH0gZWxzZSB7Ci0gICAgICBwYXJ0aWFsc1tu
YW1lXSA9IEhhbmRsZWJhcnMuY29tcGlsZShwYXJ0aWFsLCB7ZGF0YTogZGF0YSAhPT0gdW5kZWZp
bmVkfSk7Ci0gICAgICByZXR1cm4gcGFydGlhbHNbbmFtZV0oY29udGV4dCwgb3B0aW9ucyk7Ci0g
ICAgfQotICB9Ci19OwotCi1IYW5kbGViYXJzLnRlbXBsYXRlID0gSGFuZGxlYmFycy5WTS50ZW1w
bGF0ZTsKLTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ib3dlcl9jb21wb25lbnRz
L2pxdWVyeS9qcXVlcnkuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvYm93ZXJfY29tcG9uZW50cy9q
cXVlcnkvanF1ZXJ5LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwM2ZlZWYyZDk5
YWUyM2JkNjliMTAzZGZjZDZmNjQ2ZDBmOGZmZTFjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ib3dlcl9jb21wb25lbnRz
L2pxdWVyeS9qcXVlcnkuanMKKysrIC9kZXYvbnVsbApAQCAtMSw5NTk3ICswLDAgQEAKLS8qIQot
ICogalF1ZXJ5IEphdmFTY3JpcHQgTGlicmFyeSB2MS45LjEKLSAqIGh0dHA6Ly9qcXVlcnkuY29t
LwotICoKLSAqIEluY2x1ZGVzIFNpenpsZS5qcwotICogaHR0cDovL3NpenpsZWpzLmNvbS8KLSAq
Ci0gKiBDb3B5cmlnaHQgMjAwNSwgMjAxMiBqUXVlcnkgRm91bmRhdGlvbiwgSW5jLiBhbmQgb3Ro
ZXIgY29udHJpYnV0b3JzCi0gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UKLSAqIGh0
dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2UKLSAqCi0gKiBEYXRlOiAyMDEzLTItNAotICovCi0oZnVu
Y3Rpb24oIHdpbmRvdywgdW5kZWZpbmVkICkgewotCi0vLyBDYW4ndCBkbyB0aGlzIGJlY2F1c2Ug
c2V2ZXJhbCBhcHBzIGluY2x1ZGluZyBBU1AuTkVUIHRyYWNlCi0vLyB0aGUgc3RhY2sgdmlhIGFy
Z3VtZW50cy5jYWxsZXIuY2FsbGVlIGFuZCBGaXJlZm94IGRpZXMgaWYKLS8vIHlvdSB0cnkgdG8g
dHJhY2UgdGhyb3VnaCAidXNlIHN0cmljdCIgY2FsbCBjaGFpbnMuICgjMTMzMzUpCi0vLyBTdXBw
b3J0OiBGaXJlZm94IDE4KwotLy8idXNlIHN0cmljdCI7Ci12YXIKLSAgICAvLyBUaGUgZGVmZXJy
ZWQgdXNlZCBvbiBET00gcmVhZHkKLSAgICByZWFkeUxpc3QsCi0KLSAgICAvLyBBIGNlbnRyYWwg
cmVmZXJlbmNlIHRvIHRoZSByb290IGpRdWVyeShkb2N1bWVudCkKLSAgICByb290alF1ZXJ5LAot
Ci0gICAgLy8gU3VwcG9ydDogSUU8OQotICAgIC8vIEZvciBgdHlwZW9mIG5vZGUubWV0aG9kYCBp
bnN0ZWFkIG9mIGBub2RlLm1ldGhvZCAhPT0gdW5kZWZpbmVkYAotICAgIGNvcmVfc3RydW5kZWZp
bmVkID0gdHlwZW9mIHVuZGVmaW5lZCwKLQotICAgIC8vIFVzZSB0aGUgY29ycmVjdCBkb2N1bWVu
dCBhY2NvcmRpbmdseSB3aXRoIHdpbmRvdyBhcmd1bWVudCAoc2FuZGJveCkKLSAgICBkb2N1bWVu
dCA9IHdpbmRvdy5kb2N1bWVudCwKLSAgICBsb2NhdGlvbiA9IHdpbmRvdy5sb2NhdGlvbiwKLQot
ICAgIC8vIE1hcCBvdmVyIGpRdWVyeSBpbiBjYXNlIG9mIG92ZXJ3cml0ZQotICAgIF9qUXVlcnkg
PSB3aW5kb3cualF1ZXJ5LAotCi0gICAgLy8gTWFwIG92ZXIgdGhlICQgaW4gY2FzZSBvZiBvdmVy
d3JpdGUKLSAgICBfJCA9IHdpbmRvdy4kLAotCi0gICAgLy8gW1tDbGFzc11dIC0+IHR5cGUgcGFp
cnMKLSAgICBjbGFzczJ0eXBlID0ge30sCi0KLSAgICAvLyBMaXN0IG9mIGRlbGV0ZWQgZGF0YSBj
YWNoZSBpZHMsIHNvIHdlIGNhbiByZXVzZSB0aGVtCi0gICAgY29yZV9kZWxldGVkSWRzID0gW10s
Ci0KLSAgICBjb3JlX3ZlcnNpb24gPSAiMS45LjEiLAotCi0gICAgLy8gU2F2ZSBhIHJlZmVyZW5j
ZSB0byBzb21lIGNvcmUgbWV0aG9kcwotICAgIGNvcmVfY29uY2F0ID0gY29yZV9kZWxldGVkSWRz
LmNvbmNhdCwKLSAgICBjb3JlX3B1c2ggPSBjb3JlX2RlbGV0ZWRJZHMucHVzaCwKLSAgICBjb3Jl
X3NsaWNlID0gY29yZV9kZWxldGVkSWRzLnNsaWNlLAotICAgIGNvcmVfaW5kZXhPZiA9IGNvcmVf
ZGVsZXRlZElkcy5pbmRleE9mLAotICAgIGNvcmVfdG9TdHJpbmcgPSBjbGFzczJ0eXBlLnRvU3Ry
aW5nLAotICAgIGNvcmVfaGFzT3duID0gY2xhc3MydHlwZS5oYXNPd25Qcm9wZXJ0eSwKLSAgICBj
b3JlX3RyaW0gPSBjb3JlX3ZlcnNpb24udHJpbSwKLQotICAgIC8vIERlZmluZSBhIGxvY2FsIGNv
cHkgb2YgalF1ZXJ5Ci0gICAgalF1ZXJ5ID0gZnVuY3Rpb24oIHNlbGVjdG9yLCBjb250ZXh0ICkg
ewotICAgIC8vIFRoZSBqUXVlcnkgb2JqZWN0IGlzIGFjdHVhbGx5IGp1c3QgdGhlIGluaXQgY29u
c3RydWN0b3IgJ2VuaGFuY2VkJwotICAgIHJldHVybiBuZXcgalF1ZXJ5LmZuLmluaXQoIHNlbGVj
dG9yLCBjb250ZXh0LCByb290alF1ZXJ5ICk7Ci0gICAgfSwKLQotICAgIC8vIFVzZWQgZm9yIG1h
dGNoaW5nIG51bWJlcnMKLSAgICBjb3JlX3BudW0gPSAvWystXT8oPzpcZCpcLnwpXGQrKD86W2VF
XVsrLV0/XGQrfCkvLnNvdXJjZSwKLQotICAgIC8vIFVzZWQgZm9yIHNwbGl0dGluZyBvbiB3aGl0
ZXNwYWNlCi0gICAgY29yZV9ybm90d2hpdGUgPSAvXFMrL2csCi0KLSAgICAvLyBNYWtlIHN1cmUg
d2UgdHJpbSBCT00gYW5kIE5CU1AgKGhlcmUncyBsb29raW5nIGF0IHlvdSwgU2FmYXJpIDUuMCBh
bmQgSUUpCi0gICAgcnRyaW0gPSAvXltcc1x1RkVGRlx4QTBdK3xbXHNcdUZFRkZceEEwXSskL2cs
Ci0KLSAgICAvLyBBIHNpbXBsZSB3YXkgdG8gY2hlY2sgZm9yIEhUTUwgc3RyaW5ncwotICAgIC8v
IFByaW9yaXRpemUgI2lkIG92ZXIgPHRhZz4gdG8gYXZvaWQgWFNTIHZpYSBsb2NhdGlvbi5oYXNo
ICgjOTUyMSkKLSAgICAvLyBTdHJpY3QgSFRNTCByZWNvZ25pdGlvbiAoIzExMjkwOiBtdXN0IHN0
YXJ0IHdpdGggPCkKLSAgICBycXVpY2tFeHByID0gL14oPzooPFtcd1xXXSs+KVtePl0qfCMoW1x3
LV0qKSkkLywKLQotICAgIC8vIE1hdGNoIGEgc3RhbmRhbG9uZSB0YWcKLSAgICByc2luZ2xlVGFn
ID0gL148KFx3KylccypcLz8+KD86PFwvXDE+fCkkLywKLQotICAgIC8vIEpTT04gUmVnRXhwCi0g
ICAgcnZhbGlkY2hhcnMgPSAvXltcXSw6e31cc10qJC8sCi0gICAgcnZhbGlkYnJhY2VzID0gLyg/
Ol58OnwsKSg/OlxzKlxbKSsvZywKLSAgICBydmFsaWRlc2NhcGUgPSAvXFwoPzpbIlxcXC9iZm5y
dF18dVtcZGEtZkEtRl17NH0pL2csCi0gICAgcnZhbGlkdG9rZW5zID0gLyJbXiJcXFxyXG5dKiJ8
dHJ1ZXxmYWxzZXxudWxsfC0/KD86XGQrXC58KVxkKyg/OltlRV1bKy1dP1xkK3wpL2csCi0KLSAg
ICAvLyBNYXRjaGVzIGRhc2hlZCBzdHJpbmcgZm9yIGNhbWVsaXppbmcKLSAgICBybXNQcmVmaXgg
PSAvXi1tcy0vLAotICAgIHJkYXNoQWxwaGEgPSAvLShbXGRhLXpdKS9naSwKLQotICAgIC8vIFVz
ZWQgYnkgalF1ZXJ5LmNhbWVsQ2FzZSBhcyBjYWxsYmFjayB0byByZXBsYWNlKCkKLSAgICBmY2Ft
ZWxDYXNlID0gZnVuY3Rpb24oIGFsbCwgbGV0dGVyICkgewotICAgIHJldHVybiBsZXR0ZXIudG9V
cHBlckNhc2UoKTsKLSAgICB9LAotCi0gICAgLy8gVGhlIHJlYWR5IGV2ZW50IGhhbmRsZXIKLSAg
ICBjb21wbGV0ZWQgPSBmdW5jdGlvbiggZXZlbnQgKSB7Ci0KLSAgICAvLyByZWFkeVN0YXRlID09
PSAiY29tcGxldGUiIGlzIGdvb2QgZW5vdWdoIGZvciB1cyB0byBjYWxsIHRoZSBkb20gcmVhZHkg
aW4gb2xkSUUKLSAgICBpZiAoIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIgfHwgZXZlbnQudHlw
ZSA9PT0gImxvYWQiIHx8IGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICJjb21wbGV0ZSIgKSB7Ci0g
ICAgZGV0YWNoKCk7Ci0gICAgalF1ZXJ5LnJlYWR5KCk7Ci0gICAgfQotICAgIH0sCi0gICAgLy8g
Q2xlYW4tdXAgbWV0aG9kIGZvciBkb20gcmVhZHkgZXZlbnRzCi0gICAgZGV0YWNoID0gZnVuY3Rp
b24oKSB7Ci0gICAgaWYgKCBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyICkgewotICAgIGRvY3Vt
ZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoICJET01Db250ZW50TG9hZGVkIiwgY29tcGxldGVkLCBm
YWxzZSApOwotICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCAibG9hZCIsIGNvbXBsZXRl
ZCwgZmFsc2UgKTsKLQotICAgIH0gZWxzZSB7Ci0gICAgZG9jdW1lbnQuZGV0YWNoRXZlbnQoICJv
bnJlYWR5c3RhdGVjaGFuZ2UiLCBjb21wbGV0ZWQgKTsKLSAgICB3aW5kb3cuZGV0YWNoRXZlbnQo
ICJvbmxvYWQiLCBjb21wbGV0ZWQgKTsKLSAgICB9Ci0gICAgfTsKLQotalF1ZXJ5LmZuID0galF1
ZXJ5LnByb3RvdHlwZSA9IHsKLSAgICAvLyBUaGUgY3VycmVudCB2ZXJzaW9uIG9mIGpRdWVyeSBi
ZWluZyB1c2VkCi0gICAganF1ZXJ5OiBjb3JlX3ZlcnNpb24sCi0KLSAgICBjb25zdHJ1Y3Rvcjog
alF1ZXJ5LAotICAgIGluaXQ6IGZ1bmN0aW9uKCBzZWxlY3RvciwgY29udGV4dCwgcm9vdGpRdWVy
eSApIHsKLSAgICB2YXIgbWF0Y2gsIGVsZW07Ci0KLSAgICAvLyBIQU5ETEU6ICQoIiIpLCAkKG51
bGwpLCAkKHVuZGVmaW5lZCksICQoZmFsc2UpCi0gICAgaWYgKCAhc2VsZWN0b3IgKSB7Ci0gICAg
cmV0dXJuIHRoaXM7Ci0gICAgfQotCi0gICAgLy8gSGFuZGxlIEhUTUwgc3RyaW5ncwotICAgIGlm
ICggdHlwZW9mIHNlbGVjdG9yID09PSAic3RyaW5nIiApIHsKLSAgICBpZiAoIHNlbGVjdG9yLmNo
YXJBdCgwKSA9PT0gIjwiICYmIHNlbGVjdG9yLmNoYXJBdCggc2VsZWN0b3IubGVuZ3RoIC0gMSAp
ID09PSAiPiIgJiYgc2VsZWN0b3IubGVuZ3RoID49IDMgKSB7Ci0gICAgLy8gQXNzdW1lIHRoYXQg
c3RyaW5ncyB0aGF0IHN0YXJ0IGFuZCBlbmQgd2l0aCA8PiBhcmUgSFRNTCBhbmQgc2tpcCB0aGUg
cmVnZXggY2hlY2sKLSAgICBtYXRjaCA9IFsgbnVsbCwgc2VsZWN0b3IsIG51bGwgXTsKLQotICAg
IH0gZWxzZSB7Ci0gICAgbWF0Y2ggPSBycXVpY2tFeHByLmV4ZWMoIHNlbGVjdG9yICk7Ci0gICAg
fQotCi0gICAgLy8gTWF0Y2ggaHRtbCBvciBtYWtlIHN1cmUgbm8gY29udGV4dCBpcyBzcGVjaWZp
ZWQgZm9yICNpZAotICAgIGlmICggbWF0Y2ggJiYgKG1hdGNoWzFdIHx8ICFjb250ZXh0KSApIHsK
LQotICAgIC8vIEhBTkRMRTogJChodG1sKSAtPiAkKGFycmF5KQotICAgIGlmICggbWF0Y2hbMV0g
KSB7Ci0gICAgY29udGV4dCA9IGNvbnRleHQgaW5zdGFuY2VvZiBqUXVlcnkgPyBjb250ZXh0WzBd
IDogY29udGV4dDsKLQotICAgIC8vIHNjcmlwdHMgaXMgdHJ1ZSBmb3IgYmFjay1jb21wYXQKLSAg
ICBqUXVlcnkubWVyZ2UoIHRoaXMsIGpRdWVyeS5wYXJzZUhUTUwoCi0gICAgbWF0Y2hbMV0sCi0g
ICAgY29udGV4dCAmJiBjb250ZXh0Lm5vZGVUeXBlID8gY29udGV4dC5vd25lckRvY3VtZW50IHx8
IGNvbnRleHQgOiBkb2N1bWVudCwKLSAgICB0cnVlCi0gICAgKSApOwotCi0gICAgLy8gSEFORExF
OiAkKGh0bWwsIHByb3BzKQotICAgIGlmICggcnNpbmdsZVRhZy50ZXN0KCBtYXRjaFsxXSApICYm
IGpRdWVyeS5pc1BsYWluT2JqZWN0KCBjb250ZXh0ICkgKSB7Ci0gICAgZm9yICggbWF0Y2ggaW4g
Y29udGV4dCApIHsKLSAgICAvLyBQcm9wZXJ0aWVzIG9mIGNvbnRleHQgYXJlIGNhbGxlZCBhcyBt
ZXRob2RzIGlmIHBvc3NpYmxlCi0gICAgaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggdGhpc1sgbWF0
Y2ggXSApICkgewotICAgIHRoaXNbIG1hdGNoIF0oIGNvbnRleHRbIG1hdGNoIF0gKTsKLQotICAg
IC8vIC4uLmFuZCBvdGhlcndpc2Ugc2V0IGFzIGF0dHJpYnV0ZXMKLSAgICB9IGVsc2UgewotICAg
IHRoaXMuYXR0ciggbWF0Y2gsIGNvbnRleHRbIG1hdGNoIF0gKTsKLSAgICB9Ci0gICAgfQotICAg
IH0KLQotICAgIHJldHVybiB0aGlzOwotCi0gICAgLy8gSEFORExFOiAkKCNpZCkKLSAgICB9IGVs
c2UgewotICAgIGVsZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCggbWF0Y2hbMl0gKTsKLQot
ICAgIC8vIENoZWNrIHBhcmVudE5vZGUgdG8gY2F0Y2ggd2hlbiBCbGFja2JlcnJ5IDQuNiByZXR1
cm5zCi0gICAgLy8gbm9kZXMgdGhhdCBhcmUgbm8gbG9uZ2VyIGluIHRoZSBkb2N1bWVudCAjNjk2
MwotICAgIGlmICggZWxlbSAmJiBlbGVtLnBhcmVudE5vZGUgKSB7Ci0gICAgLy8gSGFuZGxlIHRo
ZSBjYXNlIHdoZXJlIElFIGFuZCBPcGVyYSByZXR1cm4gaXRlbXMKLSAgICAvLyBieSBuYW1lIGlu
c3RlYWQgb2YgSUQKLSAgICBpZiAoIGVsZW0uaWQgIT09IG1hdGNoWzJdICkgewotICAgIHJldHVy
biByb290alF1ZXJ5LmZpbmQoIHNlbGVjdG9yICk7Ci0gICAgfQotCi0gICAgLy8gT3RoZXJ3aXNl
LCB3ZSBpbmplY3QgdGhlIGVsZW1lbnQgZGlyZWN0bHkgaW50byB0aGUgalF1ZXJ5IG9iamVjdAot
ICAgIHRoaXMubGVuZ3RoID0gMTsKLSAgICB0aGlzWzBdID0gZWxlbTsKLSAgICB9Ci0KLSAgICB0
aGlzLmNvbnRleHQgPSBkb2N1bWVudDsKLSAgICB0aGlzLnNlbGVjdG9yID0gc2VsZWN0b3I7Ci0g
ICAgcmV0dXJuIHRoaXM7Ci0gICAgfQotCi0gICAgLy8gSEFORExFOiAkKGV4cHIsICQoLi4uKSkK
LSAgICB9IGVsc2UgaWYgKCAhY29udGV4dCB8fCBjb250ZXh0LmpxdWVyeSApIHsKLSAgICByZXR1
cm4gKCBjb250ZXh0IHx8IHJvb3RqUXVlcnkgKS5maW5kKCBzZWxlY3RvciApOwotCi0gICAgLy8g
SEFORExFOiAkKGV4cHIsIGNvbnRleHQpCi0gICAgLy8gKHdoaWNoIGlzIGp1c3QgZXF1aXZhbGVu
dCB0bzogJChjb250ZXh0KS5maW5kKGV4cHIpCi0gICAgfSBlbHNlIHsKLSAgICByZXR1cm4gdGhp
cy5jb25zdHJ1Y3RvciggY29udGV4dCApLmZpbmQoIHNlbGVjdG9yICk7Ci0gICAgfQotCi0gICAg
Ly8gSEFORExFOiAkKERPTUVsZW1lbnQpCi0gICAgfSBlbHNlIGlmICggc2VsZWN0b3Iubm9kZVR5
cGUgKSB7Ci0gICAgdGhpcy5jb250ZXh0ID0gdGhpc1swXSA9IHNlbGVjdG9yOwotICAgIHRoaXMu
bGVuZ3RoID0gMTsKLSAgICByZXR1cm4gdGhpczsKLQotICAgIC8vIEhBTkRMRTogJChmdW5jdGlv
bikKLSAgICAvLyBTaG9ydGN1dCBmb3IgZG9jdW1lbnQgcmVhZHkKLSAgICB9IGVsc2UgaWYgKCBq
UXVlcnkuaXNGdW5jdGlvbiggc2VsZWN0b3IgKSApIHsKLSAgICByZXR1cm4gcm9vdGpRdWVyeS5y
ZWFkeSggc2VsZWN0b3IgKTsKLSAgICB9Ci0KLSAgICBpZiAoIHNlbGVjdG9yLnNlbGVjdG9yICE9
PSB1bmRlZmluZWQgKSB7Ci0gICAgdGhpcy5zZWxlY3RvciA9IHNlbGVjdG9yLnNlbGVjdG9yOwot
ICAgIHRoaXMuY29udGV4dCA9IHNlbGVjdG9yLmNvbnRleHQ7Ci0gICAgfQotCi0gICAgcmV0dXJu
IGpRdWVyeS5tYWtlQXJyYXkoIHNlbGVjdG9yLCB0aGlzICk7Ci0gICAgfSwKLQotICAgIC8vIFN0
YXJ0IHdpdGggYW4gZW1wdHkgc2VsZWN0b3IKLSAgICBzZWxlY3RvcjogIiIsCi0KLSAgICAvLyBU
aGUgZGVmYXVsdCBsZW5ndGggb2YgYSBqUXVlcnkgb2JqZWN0IGlzIDAKLSAgICBsZW5ndGg6IDAs
Ci0KLSAgICAvLyBUaGUgbnVtYmVyIG9mIGVsZW1lbnRzIGNvbnRhaW5lZCBpbiB0aGUgbWF0Y2hl
ZCBlbGVtZW50IHNldAotICAgIHNpemU6IGZ1bmN0aW9uKCkgewotICAgIHJldHVybiB0aGlzLmxl
bmd0aDsKLSAgICB9LAotCi0gICAgdG9BcnJheTogZnVuY3Rpb24oKSB7Ci0gICAgcmV0dXJuIGNv
cmVfc2xpY2UuY2FsbCggdGhpcyApOwotICAgIH0sCi0KLSAgICAvLyBHZXQgdGhlIE50aCBlbGVt
ZW50IGluIHRoZSBtYXRjaGVkIGVsZW1lbnQgc2V0IE9SCi0gICAgLy8gR2V0IHRoZSB3aG9sZSBt
YXRjaGVkIGVsZW1lbnQgc2V0IGFzIGEgY2xlYW4gYXJyYXkKLSAgICBnZXQ6IGZ1bmN0aW9uKCBu
dW0gKSB7Ci0gICAgcmV0dXJuIG51bSA9PSBudWxsID8KLQotICAgIC8vIFJldHVybiBhICdjbGVh
bicgYXJyYXkKLSAgICB0aGlzLnRvQXJyYXkoKSA6Ci0KLSAgICAvLyBSZXR1cm4ganVzdCB0aGUg
b2JqZWN0Ci0gICAgKCBudW0gPCAwID8gdGhpc1sgdGhpcy5sZW5ndGggKyBudW0gXSA6IHRoaXNb
IG51bSBdICk7Ci0gICAgfSwKLQotICAgIC8vIFRha2UgYW4gYXJyYXkgb2YgZWxlbWVudHMgYW5k
IHB1c2ggaXQgb250byB0aGUgc3RhY2sKLSAgICAvLyAocmV0dXJuaW5nIHRoZSBuZXcgbWF0Y2hl
ZCBlbGVtZW50IHNldCkKLSAgICBwdXNoU3RhY2s6IGZ1bmN0aW9uKCBlbGVtcyApIHsKLQotICAg
IC8vIEJ1aWxkIGEgbmV3IGpRdWVyeSBtYXRjaGVkIGVsZW1lbnQgc2V0Ci0gICAgdmFyIHJldCA9
IGpRdWVyeS5tZXJnZSggdGhpcy5jb25zdHJ1Y3RvcigpLCBlbGVtcyApOwotCi0gICAgLy8gQWRk
IHRoZSBvbGQgb2JqZWN0IG9udG8gdGhlIHN0YWNrIChhcyBhIHJlZmVyZW5jZSkKLSAgICByZXQu
cHJldk9iamVjdCA9IHRoaXM7Ci0gICAgcmV0LmNvbnRleHQgPSB0aGlzLmNvbnRleHQ7Ci0KLSAg
ICAvLyBSZXR1cm4gdGhlIG5ld2x5LWZvcm1lZCBlbGVtZW50IHNldAotICAgIHJldHVybiByZXQ7
Ci0gICAgfSwKLQotICAgIC8vIEV4ZWN1dGUgYSBjYWxsYmFjayBmb3IgZXZlcnkgZWxlbWVudCBp
biB0aGUgbWF0Y2hlZCBzZXQuCi0gICAgLy8gKFlvdSBjYW4gc2VlZCB0aGUgYXJndW1lbnRzIHdp
dGggYW4gYXJyYXkgb2YgYXJncywgYnV0IHRoaXMgaXMKLSAgICAvLyBvbmx5IHVzZWQgaW50ZXJu
YWxseS4pCi0gICAgZWFjaDogZnVuY3Rpb24oIGNhbGxiYWNrLCBhcmdzICkgewotICAgIHJldHVy
biBqUXVlcnkuZWFjaCggdGhpcywgY2FsbGJhY2ssIGFyZ3MgKTsKLSAgICB9LAotCi0gICAgcmVh
ZHk6IGZ1bmN0aW9uKCBmbiApIHsKLSAgICAvLyBBZGQgdGhlIGNhbGxiYWNrCi0gICAgalF1ZXJ5
LnJlYWR5LnByb21pc2UoKS5kb25lKCBmbiApOwotCi0gICAgcmV0dXJuIHRoaXM7Ci0gICAgfSwK
LQotICAgIHNsaWNlOiBmdW5jdGlvbigpIHsKLSAgICByZXR1cm4gdGhpcy5wdXNoU3RhY2soIGNv
cmVfc2xpY2UuYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApICk7Ci0gICAgfSwKLQotICAgIGZpcnN0
OiBmdW5jdGlvbigpIHsKLSAgICByZXR1cm4gdGhpcy5lcSggMCApOwotICAgIH0sCi0KLSAgICBs
YXN0OiBmdW5jdGlvbigpIHsKLSAgICByZXR1cm4gdGhpcy5lcSggLTEgKTsKLSAgICB9LAotCi0g
ICAgZXE6IGZ1bmN0aW9uKCBpICkgewotICAgIHZhciBsZW4gPSB0aGlzLmxlbmd0aCwKLSAgICBq
ID0gK2kgKyAoIGkgPCAwID8gbGVuIDogMCApOwotICAgIHJldHVybiB0aGlzLnB1c2hTdGFjaygg
aiA+PSAwICYmIGogPCBsZW4gPyBbIHRoaXNbal0gXSA6IFtdICk7Ci0gICAgfSwKLQotICAgIG1h
cDogZnVuY3Rpb24oIGNhbGxiYWNrICkgewotICAgIHJldHVybiB0aGlzLnB1c2hTdGFjayggalF1
ZXJ5Lm1hcCh0aGlzLCBmdW5jdGlvbiggZWxlbSwgaSApIHsKLSAgICByZXR1cm4gY2FsbGJhY2su
Y2FsbCggZWxlbSwgaSwgZWxlbSApOwotICAgIH0pKTsKLSAgICB9LAotCi0gICAgZW5kOiBmdW5j
dGlvbigpIHsKLSAgICByZXR1cm4gdGhpcy5wcmV2T2JqZWN0IHx8IHRoaXMuY29uc3RydWN0b3Io
bnVsbCk7Ci0gICAgfSwKLQotICAgIC8vIEZvciBpbnRlcm5hbCB1c2Ugb25seS4KLSAgICAvLyBC
ZWhhdmVzIGxpa2UgYW4gQXJyYXkncyBtZXRob2QsIG5vdCBsaWtlIGEgalF1ZXJ5IG1ldGhvZC4K
LSAgICBwdXNoOiBjb3JlX3B1c2gsCi0gICAgc29ydDogW10uc29ydCwKLSAgICBzcGxpY2U6IFtd
LnNwbGljZQotfTsKLQotLy8gR2l2ZSB0aGUgaW5pdCBmdW5jdGlvbiB0aGUgalF1ZXJ5IHByb3Rv
dHlwZSBmb3IgbGF0ZXIgaW5zdGFudGlhdGlvbgotalF1ZXJ5LmZuLmluaXQucHJvdG90eXBlID0g
alF1ZXJ5LmZuOwotCi1qUXVlcnkuZXh0ZW5kID0galF1ZXJ5LmZuLmV4dGVuZCA9IGZ1bmN0aW9u
KCkgewotICAgIHZhciBzcmMsIGNvcHlJc0FycmF5LCBjb3B5LCBuYW1lLCBvcHRpb25zLCBjbG9u
ZSwKLSAgICB0YXJnZXQgPSBhcmd1bWVudHNbMF0gfHwge30sCi0gICAgaSA9IDEsCi0gICAgbGVu
Z3RoID0gYXJndW1lbnRzLmxlbmd0aCwKLSAgICBkZWVwID0gZmFsc2U7Ci0KLSAgICAvLyBIYW5k
bGUgYSBkZWVwIGNvcHkgc2l0dWF0aW9uCi0gICAgaWYgKCB0eXBlb2YgdGFyZ2V0ID09PSAiYm9v
bGVhbiIgKSB7Ci0gICAgZGVlcCA9IHRhcmdldDsKLSAgICB0YXJnZXQgPSBhcmd1bWVudHNbMV0g
fHwge307Ci0gICAgLy8gc2tpcCB0aGUgYm9vbGVhbiBhbmQgdGhlIHRhcmdldAotICAgIGkgPSAy
OwotICAgIH0KLQotICAgIC8vIEhhbmRsZSBjYXNlIHdoZW4gdGFyZ2V0IGlzIGEgc3RyaW5nIG9y
IHNvbWV0aGluZyAocG9zc2libGUgaW4gZGVlcCBjb3B5KQotICAgIGlmICggdHlwZW9mIHRhcmdl
dCAhPT0gIm9iamVjdCIgJiYgIWpRdWVyeS5pc0Z1bmN0aW9uKHRhcmdldCkgKSB7Ci0gICAgdGFy
Z2V0ID0ge307Ci0gICAgfQotCi0gICAgLy8gZXh0ZW5kIGpRdWVyeSBpdHNlbGYgaWYgb25seSBv
bmUgYXJndW1lbnQgaXMgcGFzc2VkCi0gICAgaWYgKCBsZW5ndGggPT09IGkgKSB7Ci0gICAgdGFy
Z2V0ID0gdGhpczsKLSAgICAtLWk7Ci0gICAgfQotCi0gICAgZm9yICggOyBpIDwgbGVuZ3RoOyBp
KysgKSB7Ci0gICAgLy8gT25seSBkZWFsIHdpdGggbm9uLW51bGwvdW5kZWZpbmVkIHZhbHVlcwot
ICAgIGlmICggKG9wdGlvbnMgPSBhcmd1bWVudHNbIGkgXSkgIT0gbnVsbCApIHsKLSAgICAvLyBF
eHRlbmQgdGhlIGJhc2Ugb2JqZWN0Ci0gICAgZm9yICggbmFtZSBpbiBvcHRpb25zICkgewotICAg
IHNyYyA9IHRhcmdldFsgbmFtZSBdOwotICAgIGNvcHkgPSBvcHRpb25zWyBuYW1lIF07Ci0KLSAg
ICAvLyBQcmV2ZW50IG5ldmVyLWVuZGluZyBsb29wCi0gICAgaWYgKCB0YXJnZXQgPT09IGNvcHkg
KSB7Ci0gICAgY29udGludWU7Ci0gICAgfQotCi0gICAgLy8gUmVjdXJzZSBpZiB3ZSdyZSBtZXJn
aW5nIHBsYWluIG9iamVjdHMgb3IgYXJyYXlzCi0gICAgaWYgKCBkZWVwICYmIGNvcHkgJiYgKCBq
UXVlcnkuaXNQbGFpbk9iamVjdChjb3B5KSB8fCAoY29weUlzQXJyYXkgPSBqUXVlcnkuaXNBcnJh
eShjb3B5KSkgKSApIHsKLSAgICBpZiAoIGNvcHlJc0FycmF5ICkgewotICAgIGNvcHlJc0FycmF5
ID0gZmFsc2U7Ci0gICAgY2xvbmUgPSBzcmMgJiYgalF1ZXJ5LmlzQXJyYXkoc3JjKSA/IHNyYyA6
IFtdOwotCi0gICAgfSBlbHNlIHsKLSAgICBjbG9uZSA9IHNyYyAmJiBqUXVlcnkuaXNQbGFpbk9i
amVjdChzcmMpID8gc3JjIDoge307Ci0gICAgfQotCi0gICAgLy8gTmV2ZXIgbW92ZSBvcmlnaW5h
bCBvYmplY3RzLCBjbG9uZSB0aGVtCi0gICAgdGFyZ2V0WyBuYW1lIF0gPSBqUXVlcnkuZXh0ZW5k
KCBkZWVwLCBjbG9uZSwgY29weSApOwotCi0gICAgLy8gRG9uJ3QgYnJpbmcgaW4gdW5kZWZpbmVk
IHZhbHVlcwotICAgIH0gZWxzZSBpZiAoIGNvcHkgIT09IHVuZGVmaW5lZCApIHsKLSAgICB0YXJn
ZXRbIG5hbWUgXSA9IGNvcHk7Ci0gICAgfQotICAgIH0KLSAgICB9Ci0gICAgfQotCi0gICAgLy8g
UmV0dXJuIHRoZSBtb2RpZmllZCBvYmplY3QKLSAgICByZXR1cm4gdGFyZ2V0OwotfTsKLQotalF1
ZXJ5LmV4dGVuZCh7Ci0gICAgbm9Db25mbGljdDogZnVuY3Rpb24oIGRlZXAgKSB7Ci0gICAgaWYg
KCB3aW5kb3cuJCA9PT0galF1ZXJ5ICkgewotICAgIHdpbmRvdy4kID0gXyQ7Ci0gICAgfQotCi0g
ICAgaWYgKCBkZWVwICYmIHdpbmRvdy5qUXVlcnkgPT09IGpRdWVyeSApIHsKLSAgICB3aW5kb3cu
alF1ZXJ5ID0gX2pRdWVyeTsKLSAgICB9Ci0KLSAgICByZXR1cm4galF1ZXJ5OwotICAgIH0sCi0K
LSAgICAvLyBJcyB0aGUgRE9NIHJlYWR5IHRvIGJlIHVzZWQ/IFNldCB0byB0cnVlIG9uY2UgaXQg
b2NjdXJzLgotICAgIGlzUmVhZHk6IGZhbHNlLAotCi0gICAgLy8gQSBjb3VudGVyIHRvIHRyYWNr
IGhvdyBtYW55IGl0ZW1zIHRvIHdhaXQgZm9yIGJlZm9yZQotICAgIC8vIHRoZSByZWFkeSBldmVu
dCBmaXJlcy4gU2VlICM2NzgxCi0gICAgcmVhZHlXYWl0OiAxLAotCi0gICAgLy8gSG9sZCAob3Ig
cmVsZWFzZSkgdGhlIHJlYWR5IGV2ZW50Ci0gICAgaG9sZFJlYWR5OiBmdW5jdGlvbiggaG9sZCAp
IHsKLSAgICBpZiAoIGhvbGQgKSB7Ci0gICAgalF1ZXJ5LnJlYWR5V2FpdCsrOwotICAgIH0gZWxz
ZSB7Ci0gICAgalF1ZXJ5LnJlYWR5KCB0cnVlICk7Ci0gICAgfQotICAgIH0sCi0KLSAgICAvLyBI
YW5kbGUgd2hlbiB0aGUgRE9NIGlzIHJlYWR5Ci0gICAgcmVhZHk6IGZ1bmN0aW9uKCB3YWl0ICkg
ewotCi0gICAgLy8gQWJvcnQgaWYgdGhlcmUgYXJlIHBlbmRpbmcgaG9sZHMgb3Igd2UncmUgYWxy
ZWFkeSByZWFkeQotICAgIGlmICggd2FpdCA9PT0gdHJ1ZSA/IC0talF1ZXJ5LnJlYWR5V2FpdCA6
IGpRdWVyeS5pc1JlYWR5ICkgewotICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBNYWtlIHN1
cmUgYm9keSBleGlzdHMsIGF0IGxlYXN0LCBpbiBjYXNlIElFIGdldHMgYSBsaXR0bGUgb3Zlcnpl
YWxvdXMgKHRpY2tldCAjNTQ0MykuCi0gICAgaWYgKCAhZG9jdW1lbnQuYm9keSApIHsKLSAgICBy
ZXR1cm4gc2V0VGltZW91dCggalF1ZXJ5LnJlYWR5ICk7Ci0gICAgfQotCi0gICAgLy8gUmVtZW1i
ZXIgdGhhdCB0aGUgRE9NIGlzIHJlYWR5Ci0gICAgalF1ZXJ5LmlzUmVhZHkgPSB0cnVlOwotCi0g
ICAgLy8gSWYgYSBub3JtYWwgRE9NIFJlYWR5IGV2ZW50IGZpcmVkLCBkZWNyZW1lbnQsIGFuZCB3
YWl0IGlmIG5lZWQgYmUKLSAgICBpZiAoIHdhaXQgIT09IHRydWUgJiYgLS1qUXVlcnkucmVhZHlX
YWl0ID4gMCApIHsKLSAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gSWYgdGhlcmUgYXJlIGZ1
bmN0aW9ucyBib3VuZCwgdG8gZXhlY3V0ZQotICAgIHJlYWR5TGlzdC5yZXNvbHZlV2l0aCggZG9j
dW1lbnQsIFsgalF1ZXJ5IF0gKTsKLQotICAgIC8vIFRyaWdnZXIgYW55IGJvdW5kIHJlYWR5IGV2
ZW50cwotICAgIGlmICggalF1ZXJ5LmZuLnRyaWdnZXIgKSB7Ci0gICAgalF1ZXJ5KCBkb2N1bWVu
dCApLnRyaWdnZXIoInJlYWR5Iikub2ZmKCJyZWFkeSIpOwotICAgIH0KLSAgICB9LAotCi0gICAg
Ly8gU2VlIHRlc3QvdW5pdC9jb3JlLmpzIGZvciBkZXRhaWxzIGNvbmNlcm5pbmcgaXNGdW5jdGlv
bi4KLSAgICAvLyBTaW5jZSB2ZXJzaW9uIDEuMywgRE9NIG1ldGhvZHMgYW5kIGZ1bmN0aW9ucyBs
aWtlIGFsZXJ0Ci0gICAgLy8gYXJlbid0IHN1cHBvcnRlZC4gVGhleSByZXR1cm4gZmFsc2Ugb24g
SUUgKCMyOTY4KS4KLSAgICBpc0Z1bmN0aW9uOiBmdW5jdGlvbiggb2JqICkgewotICAgIHJldHVy
biBqUXVlcnkudHlwZShvYmopID09PSAiZnVuY3Rpb24iOwotICAgIH0sCi0KLSAgICBpc0FycmF5
OiBBcnJheS5pc0FycmF5IHx8IGZ1bmN0aW9uKCBvYmogKSB7Ci0gICAgcmV0dXJuIGpRdWVyeS50
eXBlKG9iaikgPT09ICJhcnJheSI7Ci0gICAgfSwKLQotICAgIGlzV2luZG93OiBmdW5jdGlvbigg
b2JqICkgewotICAgIHJldHVybiBvYmogIT0gbnVsbCAmJiBvYmogPT0gb2JqLndpbmRvdzsKLSAg
ICB9LAotCi0gICAgaXNOdW1lcmljOiBmdW5jdGlvbiggb2JqICkgewotICAgIHJldHVybiAhaXNO
YU4oIHBhcnNlRmxvYXQob2JqKSApICYmIGlzRmluaXRlKCBvYmogKTsKLSAgICB9LAotCi0gICAg
dHlwZTogZnVuY3Rpb24oIG9iaiApIHsKLSAgICBpZiAoIG9iaiA9PSBudWxsICkgewotICAgIHJl
dHVybiBTdHJpbmcoIG9iaiApOwotICAgIH0KLSAgICByZXR1cm4gdHlwZW9mIG9iaiA9PT0gIm9i
amVjdCIgfHwgdHlwZW9mIG9iaiA9PT0gImZ1bmN0aW9uIiA/Ci0gICAgY2xhc3MydHlwZVsgY29y
ZV90b1N0cmluZy5jYWxsKG9iaikgXSB8fCAib2JqZWN0IiA6Ci0gICAgdHlwZW9mIG9iajsKLSAg
ICB9LAotCi0gICAgaXNQbGFpbk9iamVjdDogZnVuY3Rpb24oIG9iaiApIHsKLSAgICAvLyBNdXN0
IGJlIGFuIE9iamVjdC4KLSAgICAvLyBCZWNhdXNlIG9mIElFLCB3ZSBhbHNvIGhhdmUgdG8gY2hl
Y2sgdGhlIHByZXNlbmNlIG9mIHRoZSBjb25zdHJ1Y3RvciBwcm9wZXJ0eS4KLSAgICAvLyBNYWtl
IHN1cmUgdGhhdCBET00gbm9kZXMgYW5kIHdpbmRvdyBvYmplY3RzIGRvbid0IHBhc3MgdGhyb3Vn
aCwgYXMgd2VsbAotICAgIGlmICggIW9iaiB8fCBqUXVlcnkudHlwZShvYmopICE9PSAib2JqZWN0
IiB8fCBvYmoubm9kZVR5cGUgfHwgalF1ZXJ5LmlzV2luZG93KCBvYmogKSApIHsKLSAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgdHJ5IHsKLSAgICAvLyBOb3Qgb3duIGNvbnN0cnVjdG9y
IHByb3BlcnR5IG11c3QgYmUgT2JqZWN0Ci0gICAgaWYgKCBvYmouY29uc3RydWN0b3IgJiYKLSAg
ICAhY29yZV9oYXNPd24uY2FsbChvYmosICJjb25zdHJ1Y3RvciIpICYmCi0gICAgIWNvcmVfaGFz
T3duLmNhbGwob2JqLmNvbnN0cnVjdG9yLnByb3RvdHlwZSwgImlzUHJvdG90eXBlT2YiKSApIHsK
LSAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIH0gY2F0Y2ggKCBlICkgewotICAgIC8vIElF
OCw5IFdpbGwgdGhyb3cgZXhjZXB0aW9ucyBvbiBjZXJ0YWluIGhvc3Qgb2JqZWN0cyAjOTg5Nwot
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICAvLyBPd24gcHJvcGVydGllcyBhcmUgZW51
bWVyYXRlZCBmaXJzdGx5LCBzbyB0byBzcGVlZCB1cCwKLSAgICAvLyBpZiBsYXN0IG9uZSBpcyBv
d24sIHRoZW4gYWxsIHByb3BlcnRpZXMgYXJlIG93bi4KLQotICAgIHZhciBrZXk7Ci0gICAgZm9y
ICgga2V5IGluIG9iaiApIHt9Ci0KLSAgICByZXR1cm4ga2V5ID09PSB1bmRlZmluZWQgfHwgY29y
ZV9oYXNPd24uY2FsbCggb2JqLCBrZXkgKTsKLSAgICB9LAotCi0gICAgaXNFbXB0eU9iamVjdDog
ZnVuY3Rpb24oIG9iaiApIHsKLSAgICB2YXIgbmFtZTsKLSAgICBmb3IgKCBuYW1lIGluIG9iaiAp
IHsKLSAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotICAgIH0sCi0K
LSAgICBlcnJvcjogZnVuY3Rpb24oIG1zZyApIHsKLSAgICB0aHJvdyBuZXcgRXJyb3IoIG1zZyAp
OwotICAgIH0sCi0KLSAgICAvLyBkYXRhOiBzdHJpbmcgb2YgaHRtbAotICAgIC8vIGNvbnRleHQg
KG9wdGlvbmFsKTogSWYgc3BlY2lmaWVkLCB0aGUgZnJhZ21lbnQgd2lsbCBiZSBjcmVhdGVkIGlu
IHRoaXMgY29udGV4dCwgZGVmYXVsdHMgdG8gZG9jdW1lbnQKLSAgICAvLyBrZWVwU2NyaXB0cyAo
b3B0aW9uYWwpOiBJZiB0cnVlLCB3aWxsIGluY2x1ZGUgc2NyaXB0cyBwYXNzZWQgaW4gdGhlIGh0
bWwgc3RyaW5nCi0gICAgcGFyc2VIVE1MOiBmdW5jdGlvbiggZGF0YSwgY29udGV4dCwga2VlcFNj
cmlwdHMgKSB7Ci0gICAgaWYgKCAhZGF0YSB8fCB0eXBlb2YgZGF0YSAhPT0gInN0cmluZyIgKSB7
Ci0gICAgcmV0dXJuIG51bGw7Ci0gICAgfQotICAgIGlmICggdHlwZW9mIGNvbnRleHQgPT09ICJi
b29sZWFuIiApIHsKLSAgICBrZWVwU2NyaXB0cyA9IGNvbnRleHQ7Ci0gICAgY29udGV4dCA9IGZh
bHNlOwotICAgIH0KLSAgICBjb250ZXh0ID0gY29udGV4dCB8fCBkb2N1bWVudDsKLQotICAgIHZh
ciBwYXJzZWQgPSByc2luZ2xlVGFnLmV4ZWMoIGRhdGEgKSwKLSAgICBzY3JpcHRzID0gIWtlZXBT
Y3JpcHRzICYmIFtdOwotCi0gICAgLy8gU2luZ2xlIHRhZwotICAgIGlmICggcGFyc2VkICkgewot
ICAgIHJldHVybiBbIGNvbnRleHQuY3JlYXRlRWxlbWVudCggcGFyc2VkWzFdICkgXTsKLSAgICB9
Ci0KLSAgICBwYXJzZWQgPSBqUXVlcnkuYnVpbGRGcmFnbWVudCggWyBkYXRhIF0sIGNvbnRleHQs
IHNjcmlwdHMgKTsKLSAgICBpZiAoIHNjcmlwdHMgKSB7Ci0gICAgalF1ZXJ5KCBzY3JpcHRzICku
cmVtb3ZlKCk7Ci0gICAgfQotICAgIHJldHVybiBqUXVlcnkubWVyZ2UoIFtdLCBwYXJzZWQuY2hp
bGROb2RlcyApOwotICAgIH0sCi0KLSAgICBwYXJzZUpTT046IGZ1bmN0aW9uKCBkYXRhICkgewot
ICAgIC8vIEF0dGVtcHQgdG8gcGFyc2UgdXNpbmcgdGhlIG5hdGl2ZSBKU09OIHBhcnNlciBmaXJz
dAotICAgIGlmICggd2luZG93LkpTT04gJiYgd2luZG93LkpTT04ucGFyc2UgKSB7Ci0gICAgcmV0
dXJuIHdpbmRvdy5KU09OLnBhcnNlKCBkYXRhICk7Ci0gICAgfQotCi0gICAgaWYgKCBkYXRhID09
PSBudWxsICkgewotICAgIHJldHVybiBkYXRhOwotICAgIH0KLQotICAgIGlmICggdHlwZW9mIGRh
dGEgPT09ICJzdHJpbmciICkgewotCi0gICAgLy8gTWFrZSBzdXJlIGxlYWRpbmcvdHJhaWxpbmcg
d2hpdGVzcGFjZSBpcyByZW1vdmVkIChJRSBjYW4ndCBoYW5kbGUgaXQpCi0gICAgZGF0YSA9IGpR
dWVyeS50cmltKCBkYXRhICk7Ci0KLSAgICBpZiAoIGRhdGEgKSB7Ci0gICAgLy8gTWFrZSBzdXJl
IHRoZSBpbmNvbWluZyBkYXRhIGlzIGFjdHVhbCBKU09OCi0gICAgLy8gTG9naWMgYm9ycm93ZWQg
ZnJvbSBodHRwOi8vanNvbi5vcmcvanNvbjIuanMKLSAgICBpZiAoIHJ2YWxpZGNoYXJzLnRlc3Qo
IGRhdGEucmVwbGFjZSggcnZhbGlkZXNjYXBlLCAiQCIgKQotICAgIC5yZXBsYWNlKCBydmFsaWR0
b2tlbnMsICJdIiApCi0gICAgLnJlcGxhY2UoIHJ2YWxpZGJyYWNlcywgIiIpKSApIHsKLQotICAg
IHJldHVybiAoIG5ldyBGdW5jdGlvbiggInJldHVybiAiICsgZGF0YSApICkoKTsKLSAgICB9Ci0g
ICAgfQotICAgIH0KLQotICAgIGpRdWVyeS5lcnJvciggIkludmFsaWQgSlNPTjogIiArIGRhdGEg
KTsKLSAgICB9LAotCi0gICAgLy8gQ3Jvc3MtYnJvd3NlciB4bWwgcGFyc2luZwotICAgIHBhcnNl
WE1MOiBmdW5jdGlvbiggZGF0YSApIHsKLSAgICB2YXIgeG1sLCB0bXA7Ci0gICAgaWYgKCAhZGF0
YSB8fCB0eXBlb2YgZGF0YSAhPT0gInN0cmluZyIgKSB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gICAg
fQotICAgIHRyeSB7Ci0gICAgaWYgKCB3aW5kb3cuRE9NUGFyc2VyICkgeyAvLyBTdGFuZGFyZAot
ICAgIHRtcCA9IG5ldyBET01QYXJzZXIoKTsKLSAgICB4bWwgPSB0bXAucGFyc2VGcm9tU3RyaW5n
KCBkYXRhICwgInRleHQveG1sIiApOwotICAgIH0gZWxzZSB7IC8vIElFCi0gICAgeG1sID0gbmV3
IEFjdGl2ZVhPYmplY3QoICJNaWNyb3NvZnQuWE1MRE9NIiApOwotICAgIHhtbC5hc3luYyA9ICJm
YWxzZSI7Ci0gICAgeG1sLmxvYWRYTUwoIGRhdGEgKTsKLSAgICB9Ci0gICAgfSBjYXRjaCggZSAp
IHsKLSAgICB4bWwgPSB1bmRlZmluZWQ7Ci0gICAgfQotICAgIGlmICggIXhtbCB8fCAheG1sLmRv
Y3VtZW50RWxlbWVudCB8fCB4bWwuZ2V0RWxlbWVudHNCeVRhZ05hbWUoICJwYXJzZXJlcnJvciIg
KS5sZW5ndGggKSB7Ci0gICAgalF1ZXJ5LmVycm9yKCAiSW52YWxpZCBYTUw6ICIgKyBkYXRhICk7
Ci0gICAgfQotICAgIHJldHVybiB4bWw7Ci0gICAgfSwKLQotICAgIG5vb3A6IGZ1bmN0aW9uKCkg
e30sCi0KLSAgICAvLyBFdmFsdWF0ZXMgYSBzY3JpcHQgaW4gYSBnbG9iYWwgY29udGV4dAotICAg
IC8vIFdvcmthcm91bmRzIGJhc2VkIG9uIGZpbmRpbmdzIGJ5IEppbSBEcmlzY29sbAotICAgIC8v
IGh0dHA6Ly93ZWJsb2dzLmphdmEubmV0L2Jsb2cvZHJpc2NvbGwvYXJjaGl2ZS8yMDA5LzA5LzA4
L2V2YWwtamF2YXNjcmlwdC1nbG9iYWwtY29udGV4dAotICAgIGdsb2JhbEV2YWw6IGZ1bmN0aW9u
KCBkYXRhICkgewotICAgIGlmICggZGF0YSAmJiBqUXVlcnkudHJpbSggZGF0YSApICkgewotICAg
IC8vIFdlIHVzZSBleGVjU2NyaXB0IG9uIEludGVybmV0IEV4cGxvcmVyCi0gICAgLy8gV2UgdXNl
IGFuIGFub255bW91cyBmdW5jdGlvbiBzbyB0aGF0IGNvbnRleHQgaXMgd2luZG93Ci0gICAgLy8g
cmF0aGVyIHRoYW4galF1ZXJ5IGluIEZpcmVmb3gKLSAgICAoIHdpbmRvdy5leGVjU2NyaXB0IHx8
IGZ1bmN0aW9uKCBkYXRhICkgewotICAgIHdpbmRvd1sgImV2YWwiIF0uY2FsbCggd2luZG93LCBk
YXRhICk7Ci0gICAgfSApKCBkYXRhICk7Ci0gICAgfQotICAgIH0sCi0KLSAgICAvLyBDb252ZXJ0
IGRhc2hlZCB0byBjYW1lbENhc2U7IHVzZWQgYnkgdGhlIGNzcyBhbmQgZGF0YSBtb2R1bGVzCi0g
ICAgLy8gTWljcm9zb2Z0IGZvcmdvdCB0byBodW1wIHRoZWlyIHZlbmRvciBwcmVmaXggKCM5NTcy
KQotICAgIGNhbWVsQ2FzZTogZnVuY3Rpb24oIHN0cmluZyApIHsKLSAgICByZXR1cm4gc3RyaW5n
LnJlcGxhY2UoIHJtc1ByZWZpeCwgIm1zLSIgKS5yZXBsYWNlKCByZGFzaEFscGhhLCBmY2FtZWxD
YXNlICk7Ci0gICAgfSwKLQotICAgIG5vZGVOYW1lOiBmdW5jdGlvbiggZWxlbSwgbmFtZSApIHsK
LSAgICByZXR1cm4gZWxlbS5ub2RlTmFtZSAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkg
PT09IG5hbWUudG9Mb3dlckNhc2UoKTsKLSAgICB9LAotCi0gICAgLy8gYXJncyBpcyBmb3IgaW50
ZXJuYWwgdXNhZ2Ugb25seQotICAgIGVhY2g6IGZ1bmN0aW9uKCBvYmosIGNhbGxiYWNrLCBhcmdz
ICkgewotICAgIHZhciB2YWx1ZSwKLSAgICBpID0gMCwKLSAgICBsZW5ndGggPSBvYmoubGVuZ3Ro
LAotICAgIGlzQXJyYXkgPSBpc0FycmF5bGlrZSggb2JqICk7Ci0KLSAgICBpZiAoIGFyZ3MgKSB7
Ci0gICAgaWYgKCBpc0FycmF5ICkgewotICAgIGZvciAoIDsgaSA8IGxlbmd0aDsgaSsrICkgewot
ICAgIHZhbHVlID0gY2FsbGJhY2suYXBwbHkoIG9ialsgaSBdLCBhcmdzICk7Ci0KLSAgICBpZiAo
IHZhbHVlID09PSBmYWxzZSApIHsKLSAgICBicmVhazsKLSAgICB9Ci0gICAgfQotICAgIH0gZWxz
ZSB7Ci0gICAgZm9yICggaSBpbiBvYmogKSB7Ci0gICAgdmFsdWUgPSBjYWxsYmFjay5hcHBseSgg
b2JqWyBpIF0sIGFyZ3MgKTsKLQotICAgIGlmICggdmFsdWUgPT09IGZhbHNlICkgewotICAgIGJy
ZWFrOwotICAgIH0KLSAgICB9Ci0gICAgfQotCi0gICAgLy8gQSBzcGVjaWFsLCBmYXN0LCBjYXNl
IGZvciB0aGUgbW9zdCBjb21tb24gdXNlIG9mIGVhY2gKLSAgICB9IGVsc2UgewotICAgIGlmICgg
aXNBcnJheSApIHsKLSAgICBmb3IgKCA7IGkgPCBsZW5ndGg7IGkrKyApIHsKLSAgICB2YWx1ZSA9
IGNhbGxiYWNrLmNhbGwoIG9ialsgaSBdLCBpLCBvYmpbIGkgXSApOwotCi0gICAgaWYgKCB2YWx1
ZSA9PT0gZmFsc2UgKSB7Ci0gICAgYnJlYWs7Ci0gICAgfQotICAgIH0KLSAgICB9IGVsc2Ugewot
ICAgIGZvciAoIGkgaW4gb2JqICkgewotICAgIHZhbHVlID0gY2FsbGJhY2suY2FsbCggb2JqWyBp
IF0sIGksIG9ialsgaSBdICk7Ci0KLSAgICBpZiAoIHZhbHVlID09PSBmYWxzZSApIHsKLSAgICBi
cmVhazsKLSAgICB9Ci0gICAgfQotICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gb2JqOwotICAg
IH0sCi0KLSAgICAvLyBVc2UgbmF0aXZlIFN0cmluZy50cmltIGZ1bmN0aW9uIHdoZXJldmVyIHBv
c3NpYmxlCi0gICAgdHJpbTogY29yZV90cmltICYmICFjb3JlX3RyaW0uY2FsbCgiXHVGRUZGXHhB
MCIpID8KLSAgICBmdW5jdGlvbiggdGV4dCApIHsKLSAgICByZXR1cm4gdGV4dCA9PSBudWxsID8K
LSAgICAiIiA6Ci0gICAgY29yZV90cmltLmNhbGwoIHRleHQgKTsKLSAgICB9IDoKLQotICAgIC8v
IE90aGVyd2lzZSB1c2Ugb3VyIG93biB0cmltbWluZyBmdW5jdGlvbmFsaXR5Ci0gICAgZnVuY3Rp
b24oIHRleHQgKSB7Ci0gICAgcmV0dXJuIHRleHQgPT0gbnVsbCA/Ci0gICAgIiIgOgotICAgICgg
dGV4dCArICIiICkucmVwbGFjZSggcnRyaW0sICIiICk7Ci0gICAgfSwKLQotICAgIC8vIHJlc3Vs
dHMgaXMgZm9yIGludGVybmFsIHVzYWdlIG9ubHkKLSAgICBtYWtlQXJyYXk6IGZ1bmN0aW9uKCBh
cnIsIHJlc3VsdHMgKSB7Ci0gICAgdmFyIHJldCA9IHJlc3VsdHMgfHwgW107Ci0KLSAgICBpZiAo
IGFyciAhPSBudWxsICkgewotICAgIGlmICggaXNBcnJheWxpa2UoIE9iamVjdChhcnIpICkgKSB7
Ci0gICAgalF1ZXJ5Lm1lcmdlKCByZXQsCi0gICAgdHlwZW9mIGFyciA9PT0gInN0cmluZyIgPwot
ICAgIFsgYXJyIF0gOiBhcnIKLSAgICApOwotICAgIH0gZWxzZSB7Ci0gICAgY29yZV9wdXNoLmNh
bGwoIHJldCwgYXJyICk7Ci0gICAgfQotICAgIH0KLQotICAgIHJldHVybiByZXQ7Ci0gICAgfSwK
LQotICAgIGluQXJyYXk6IGZ1bmN0aW9uKCBlbGVtLCBhcnIsIGkgKSB7Ci0gICAgdmFyIGxlbjsK
LQotICAgIGlmICggYXJyICkgewotICAgIGlmICggY29yZV9pbmRleE9mICkgewotICAgIHJldHVy
biBjb3JlX2luZGV4T2YuY2FsbCggYXJyLCBlbGVtLCBpICk7Ci0gICAgfQotCi0gICAgbGVuID0g
YXJyLmxlbmd0aDsKLSAgICBpID0gaSA/IGkgPCAwID8gTWF0aC5tYXgoIDAsIGxlbiArIGkgKSA6
IGkgOiAwOwotCi0gICAgZm9yICggOyBpIDwgbGVuOyBpKysgKSB7Ci0gICAgLy8gU2tpcCBhY2Nl
c3NpbmcgaW4gc3BhcnNlIGFycmF5cwotICAgIGlmICggaSBpbiBhcnIgJiYgYXJyWyBpIF0gPT09
IGVsZW0gKSB7Ci0gICAgcmV0dXJuIGk7Ci0gICAgfQotICAgIH0KLSAgICB9Ci0KLSAgICByZXR1
cm4gLTE7Ci0gICAgfSwKLQotICAgIG1lcmdlOiBmdW5jdGlvbiggZmlyc3QsIHNlY29uZCApIHsK
LSAgICB2YXIgbCA9IHNlY29uZC5sZW5ndGgsCi0gICAgaSA9IGZpcnN0Lmxlbmd0aCwKLSAgICBq
ID0gMDsKLQotICAgIGlmICggdHlwZW9mIGwgPT09ICJudW1iZXIiICkgewotICAgIGZvciAoIDsg
aiA8IGw7IGorKyApIHsKLSAgICBmaXJzdFsgaSsrIF0gPSBzZWNvbmRbIGogXTsKLSAgICB9Ci0g
ICAgfSBlbHNlIHsKLSAgICB3aGlsZSAoIHNlY29uZFtqXSAhPT0gdW5kZWZpbmVkICkgewotICAg
IGZpcnN0WyBpKysgXSA9IHNlY29uZFsgaisrIF07Ci0gICAgfQotICAgIH0KLQotICAgIGZpcnN0
Lmxlbmd0aCA9IGk7Ci0KLSAgICByZXR1cm4gZmlyc3Q7Ci0gICAgfSwKLQotICAgIGdyZXA6IGZ1
bmN0aW9uKCBlbGVtcywgY2FsbGJhY2ssIGludiApIHsKLSAgICB2YXIgcmV0VmFsLAotICAgIHJl
dCA9IFtdLAotICAgIGkgPSAwLAotICAgIGxlbmd0aCA9IGVsZW1zLmxlbmd0aDsKLSAgICBpbnYg
PSAhIWludjsKLQotICAgIC8vIEdvIHRocm91Z2ggdGhlIGFycmF5LCBvbmx5IHNhdmluZyB0aGUg
aXRlbXMKLSAgICAvLyB0aGF0IHBhc3MgdGhlIHZhbGlkYXRvciBmdW5jdGlvbgotICAgIGZvciAo
IDsgaSA8IGxlbmd0aDsgaSsrICkgewotICAgIHJldFZhbCA9ICEhY2FsbGJhY2soIGVsZW1zWyBp
IF0sIGkgKTsKLSAgICBpZiAoIGludiAhPT0gcmV0VmFsICkgewotICAgIHJldC5wdXNoKCBlbGVt
c1sgaSBdICk7Ci0gICAgfQotICAgIH0KLQotICAgIHJldHVybiByZXQ7Ci0gICAgfSwKLQotICAg
IC8vIGFyZyBpcyBmb3IgaW50ZXJuYWwgdXNhZ2Ugb25seQotICAgIG1hcDogZnVuY3Rpb24oIGVs
ZW1zLCBjYWxsYmFjaywgYXJnICkgewotICAgIHZhciB2YWx1ZSwKLSAgICBpID0gMCwKLSAgICBs
ZW5ndGggPSBlbGVtcy5sZW5ndGgsCi0gICAgaXNBcnJheSA9IGlzQXJyYXlsaWtlKCBlbGVtcyAp
LAotICAgIHJldCA9IFtdOwotCi0gICAgLy8gR28gdGhyb3VnaCB0aGUgYXJyYXksIHRyYW5zbGF0
aW5nIGVhY2ggb2YgdGhlIGl0ZW1zIHRvIHRoZWlyCi0gICAgaWYgKCBpc0FycmF5ICkgewotICAg
IGZvciAoIDsgaSA8IGxlbmd0aDsgaSsrICkgewotICAgIHZhbHVlID0gY2FsbGJhY2soIGVsZW1z
WyBpIF0sIGksIGFyZyApOwotCi0gICAgaWYgKCB2YWx1ZSAhPSBudWxsICkgewotICAgIHJldFsg
cmV0Lmxlbmd0aCBdID0gdmFsdWU7Ci0gICAgfQotICAgIH0KLQotICAgIC8vIEdvIHRocm91Z2gg
ZXZlcnkga2V5IG9uIHRoZSBvYmplY3QsCi0gICAgfSBlbHNlIHsKLSAgICBmb3IgKCBpIGluIGVs
ZW1zICkgewotICAgIHZhbHVlID0gY2FsbGJhY2soIGVsZW1zWyBpIF0sIGksIGFyZyApOwotCi0g
ICAgaWYgKCB2YWx1ZSAhPSBudWxsICkgewotICAgIHJldFsgcmV0Lmxlbmd0aCBdID0gdmFsdWU7
Ci0gICAgfQotICAgIH0KLSAgICB9Ci0KLSAgICAvLyBGbGF0dGVuIGFueSBuZXN0ZWQgYXJyYXlz
Ci0gICAgcmV0dXJuIGNvcmVfY29uY2F0LmFwcGx5KCBbXSwgcmV0ICk7Ci0gICAgfSwKLQotICAg
IC8vIEEgZ2xvYmFsIEdVSUQgY291bnRlciBmb3Igb2JqZWN0cwotICAgIGd1aWQ6IDEsCi0KLSAg
ICAvLyBCaW5kIGEgZnVuY3Rpb24gdG8gYSBjb250ZXh0LCBvcHRpb25hbGx5IHBhcnRpYWxseSBh
cHBseWluZyBhbnkKLSAgICAvLyBhcmd1bWVudHMuCi0gICAgcHJveHk6IGZ1bmN0aW9uKCBmbiwg
Y29udGV4dCApIHsKLSAgICB2YXIgYXJncywgcHJveHksIHRtcDsKLQotICAgIGlmICggdHlwZW9m
IGNvbnRleHQgPT09ICJzdHJpbmciICkgewotICAgIHRtcCA9IGZuWyBjb250ZXh0IF07Ci0gICAg
Y29udGV4dCA9IGZuOwotICAgIGZuID0gdG1wOwotICAgIH0KLQotICAgIC8vIFF1aWNrIGNoZWNr
IHRvIGRldGVybWluZSBpZiB0YXJnZXQgaXMgY2FsbGFibGUsIGluIHRoZSBzcGVjCi0gICAgLy8g
dGhpcyB0aHJvd3MgYSBUeXBlRXJyb3IsIGJ1dCB3ZSB3aWxsIGp1c3QgcmV0dXJuIHVuZGVmaW5l
ZC4KLSAgICBpZiAoICFqUXVlcnkuaXNGdW5jdGlvbiggZm4gKSApIHsKLSAgICByZXR1cm4gdW5k
ZWZpbmVkOwotICAgIH0KLQotICAgIC8vIFNpbXVsYXRlZCBiaW5kCi0gICAgYXJncyA9IGNvcmVf
c2xpY2UuY2FsbCggYXJndW1lbnRzLCAyICk7Ci0gICAgcHJveHkgPSBmdW5jdGlvbigpIHsKLSAg
ICByZXR1cm4gZm4uYXBwbHkoIGNvbnRleHQgfHwgdGhpcywgYXJncy5jb25jYXQoIGNvcmVfc2xp
Y2UuY2FsbCggYXJndW1lbnRzICkgKSApOwotICAgIH07Ci0KLSAgICAvLyBTZXQgdGhlIGd1aWQg
b2YgdW5pcXVlIGhhbmRsZXIgdG8gdGhlIHNhbWUgb2Ygb3JpZ2luYWwgaGFuZGxlciwgc28gaXQg
Y2FuIGJlIHJlbW92ZWQKLSAgICBwcm94eS5ndWlkID0gZm4uZ3VpZCA9IGZuLmd1aWQgfHwgalF1
ZXJ5Lmd1aWQrKzsKLQotICAgIHJldHVybiBwcm94eTsKLSAgICB9LAotCi0gICAgLy8gTXVsdGlm
dW5jdGlvbmFsIG1ldGhvZCB0byBnZXQgYW5kIHNldCB2YWx1ZXMgb2YgYSBjb2xsZWN0aW9uCi0g
ICAgLy8gVGhlIHZhbHVlL3MgY2FuIG9wdGlvbmFsbHkgYmUgZXhlY3V0ZWQgaWYgaXQncyBhIGZ1
bmN0aW9uCi0gICAgYWNjZXNzOiBmdW5jdGlvbiggZWxlbXMsIGZuLCBrZXksIHZhbHVlLCBjaGFp
bmFibGUsIGVtcHR5R2V0LCByYXcgKSB7Ci0gICAgdmFyIGkgPSAwLAotICAgIGxlbmd0aCA9IGVs
ZW1zLmxlbmd0aCwKLSAgICBidWxrID0ga2V5ID09IG51bGw7Ci0KLSAgICAvLyBTZXRzIG1hbnkg
dmFsdWVzCi0gICAgaWYgKCBqUXVlcnkudHlwZSgga2V5ICkgPT09ICJvYmplY3QiICkgewotICAg
IGNoYWluYWJsZSA9IHRydWU7Ci0gICAgZm9yICggaSBpbiBrZXkgKSB7Ci0gICAgalF1ZXJ5LmFj
Y2VzcyggZWxlbXMsIGZuLCBpLCBrZXlbaV0sIHRydWUsIGVtcHR5R2V0LCByYXcgKTsKLSAgICB9
Ci0KLSAgICAvLyBTZXRzIG9uZSB2YWx1ZQotICAgIH0gZWxzZSBpZiAoIHZhbHVlICE9PSB1bmRl
ZmluZWQgKSB7Ci0gICAgY2hhaW5hYmxlID0gdHJ1ZTsKLQotICAgIGlmICggIWpRdWVyeS5pc0Z1
bmN0aW9uKCB2YWx1ZSApICkgewotICAgIHJhdyA9IHRydWU7Ci0gICAgfQotCi0gICAgaWYgKCBi
dWxrICkgewotICAgIC8vIEJ1bGsgb3BlcmF0aW9ucyBydW4gYWdhaW5zdCB0aGUgZW50aXJlIHNl
dAotICAgIGlmICggcmF3ICkgewotICAgIGZuLmNhbGwoIGVsZW1zLCB2YWx1ZSApOwotICAgIGZu
ID0gbnVsbDsKLQotICAgIC8vIC4uLmV4Y2VwdCB3aGVuIGV4ZWN1dGluZyBmdW5jdGlvbiB2YWx1
ZXMKLSAgICB9IGVsc2UgewotICAgIGJ1bGsgPSBmbjsKLSAgICBmbiA9IGZ1bmN0aW9uKCBlbGVt
LCBrZXksIHZhbHVlICkgewotICAgIHJldHVybiBidWxrLmNhbGwoIGpRdWVyeSggZWxlbSApLCB2
YWx1ZSApOwotICAgIH07Ci0gICAgfQotICAgIH0KLQotICAgIGlmICggZm4gKSB7Ci0gICAgZm9y
ICggOyBpIDwgbGVuZ3RoOyBpKysgKSB7Ci0gICAgZm4oIGVsZW1zW2ldLCBrZXksIHJhdyA/IHZh
bHVlIDogdmFsdWUuY2FsbCggZWxlbXNbaV0sIGksIGZuKCBlbGVtc1tpXSwga2V5ICkgKSApOwot
ICAgIH0KLSAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIGNoYWluYWJsZSA/Ci0gICAgZWxlbXMg
OgotCi0gICAgLy8gR2V0cwotICAgIGJ1bGsgPwotICAgIGZuLmNhbGwoIGVsZW1zICkgOgotICAg
IGxlbmd0aCA/IGZuKCBlbGVtc1swXSwga2V5ICkgOiBlbXB0eUdldDsKLSAgICB9LAotCi0gICAg
bm93OiBmdW5jdGlvbigpIHsKLSAgICByZXR1cm4gKCBuZXcgRGF0ZSgpICkuZ2V0VGltZSgpOwot
ICAgIH0KLX0pOwotCi1qUXVlcnkucmVhZHkucHJvbWlzZSA9IGZ1bmN0aW9uKCBvYmogKSB7Ci0g
ICAgaWYgKCAhcmVhZHlMaXN0ICkgewotCi0gICAgcmVhZHlMaXN0ID0galF1ZXJ5LkRlZmVycmVk
KCk7Ci0KLSAgICAvLyBDYXRjaCBjYXNlcyB3aGVyZSAkKGRvY3VtZW50KS5yZWFkeSgpIGlzIGNh
bGxlZCBhZnRlciB0aGUgYnJvd3NlciBldmVudCBoYXMgYWxyZWFkeSBvY2N1cnJlZC4KLSAgICAv
LyB3ZSBvbmNlIHRyaWVkIHRvIHVzZSByZWFkeVN0YXRlICJpbnRlcmFjdGl2ZSIgaGVyZSwgYnV0
IGl0IGNhdXNlZCBpc3N1ZXMgbGlrZSB0aGUgb25lCi0gICAgLy8gZGlzY292ZXJlZCBieSBDaHJp
c1MgaGVyZTogaHR0cDovL2J1Z3MuanF1ZXJ5LmNvbS90aWNrZXQvMTIyODIjY29tbWVudDoxNQot
ICAgIGlmICggZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gImNvbXBsZXRlIiApIHsKLSAgICAvLyBI
YW5kbGUgaXQgYXN5bmNocm9ub3VzbHkgdG8gYWxsb3cgc2NyaXB0cyB0aGUgb3Bwb3J0dW5pdHkg
dG8gZGVsYXkgcmVhZHkKLSAgICBzZXRUaW1lb3V0KCBqUXVlcnkucmVhZHkgKTsKLQotICAgIC8v
IFN0YW5kYXJkcy1iYXNlZCBicm93c2VycyBzdXBwb3J0IERPTUNvbnRlbnRMb2FkZWQKLSAgICB9
IGVsc2UgaWYgKCBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyICkgewotICAgIC8vIFVzZSB0aGUg
aGFuZHkgZXZlbnQgY2FsbGJhY2sKLSAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCAiRE9N
Q29udGVudExvYWRlZCIsIGNvbXBsZXRlZCwgZmFsc2UgKTsKLQotICAgIC8vIEEgZmFsbGJhY2sg
dG8gd2luZG93Lm9ubG9hZCwgdGhhdCB3aWxsIGFsd2F5cyB3b3JrCi0gICAgd2luZG93LmFkZEV2
ZW50TGlzdGVuZXIoICJsb2FkIiwgY29tcGxldGVkLCBmYWxzZSApOwotCi0gICAgLy8gSWYgSUUg
ZXZlbnQgbW9kZWwgaXMgdXNlZAotICAgIH0gZWxzZSB7Ci0gICAgLy8gRW5zdXJlIGZpcmluZyBi
ZWZvcmUgb25sb2FkLCBtYXliZSBsYXRlIGJ1dCBzYWZlIGFsc28gZm9yIGlmcmFtZXMKLSAgICBk
b2N1bWVudC5hdHRhY2hFdmVudCggIm9ucmVhZHlzdGF0ZWNoYW5nZSIsIGNvbXBsZXRlZCApOwot
Ci0gICAgLy8gQSBmYWxsYmFjayB0byB3aW5kb3cub25sb2FkLCB0aGF0IHdpbGwgYWx3YXlzIHdv
cmsKLSAgICB3aW5kb3cuYXR0YWNoRXZlbnQoICJvbmxvYWQiLCBjb21wbGV0ZWQgKTsKLQotICAg
IC8vIElmIElFIGFuZCBub3QgYSBmcmFtZQotICAgIC8vIGNvbnRpbnVhbGx5IGNoZWNrIHRvIHNl
ZSBpZiB0aGUgZG9jdW1lbnQgaXMgcmVhZHkKLSAgICB2YXIgdG9wID0gZmFsc2U7Ci0KLSAgICB0
cnkgewotICAgIHRvcCA9IHdpbmRvdy5mcmFtZUVsZW1lbnQgPT0gbnVsbCAmJiBkb2N1bWVudC5k
b2N1bWVudEVsZW1lbnQ7Ci0gICAgfSBjYXRjaChlKSB7fQotCi0gICAgaWYgKCB0b3AgJiYgdG9w
LmRvU2Nyb2xsICkgewotICAgIChmdW5jdGlvbiBkb1Njcm9sbENoZWNrKCkgewotICAgIGlmICgg
IWpRdWVyeS5pc1JlYWR5ICkgewotCi0gICAgdHJ5IHsKLSAgICAvLyBVc2UgdGhlIHRyaWNrIGJ5
IERpZWdvIFBlcmluaQotICAgIC8vIGh0dHA6Ly9qYXZhc2NyaXB0Lm53Ym94LmNvbS9JRUNvbnRl
bnRMb2FkZWQvCi0gICAgdG9wLmRvU2Nyb2xsKCJsZWZ0Iik7Ci0gICAgfSBjYXRjaChlKSB7Ci0g
ICAgcmV0dXJuIHNldFRpbWVvdXQoIGRvU2Nyb2xsQ2hlY2ssIDUwICk7Ci0gICAgfQotCi0gICAg
Ly8gZGV0YWNoIGFsbCBkb20gcmVhZHkgZXZlbnRzCi0gICAgZGV0YWNoKCk7Ci0KLSAgICAvLyBh
bmQgZXhlY3V0ZSBhbnkgd2FpdGluZyBmdW5jdGlvbnMKLSAgICBqUXVlcnkucmVhZHkoKTsKLSAg
ICB9Ci0gICAgfSkoKTsKLSAgICB9Ci0gICAgfQotICAgIH0KLSAgICByZXR1cm4gcmVhZHlMaXN0
LnByb21pc2UoIG9iaiApOwotfTsKLQotLy8gUG9wdWxhdGUgdGhlIGNsYXNzMnR5cGUgbWFwCi1q
UXVlcnkuZWFjaCgiQm9vbGVhbiBOdW1iZXIgU3RyaW5nIEZ1bmN0aW9uIEFycmF5IERhdGUgUmVn
RXhwIE9iamVjdCBFcnJvciIuc3BsaXQoIiAiKSwgZnVuY3Rpb24oaSwgbmFtZSkgewotICAgIGNs
YXNzMnR5cGVbICJbb2JqZWN0ICIgKyBuYW1lICsgIl0iIF0gPSBuYW1lLnRvTG93ZXJDYXNlKCk7
Ci19KTsKLQotZnVuY3Rpb24gaXNBcnJheWxpa2UoIG9iaiApIHsKLSAgICB2YXIgbGVuZ3RoID0g
b2JqLmxlbmd0aCwKLSAgICB0eXBlID0galF1ZXJ5LnR5cGUoIG9iaiApOwotCi0gICAgaWYgKCBq
UXVlcnkuaXNXaW5kb3coIG9iaiApICkgewotICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAg
ICBpZiAoIG9iai5ub2RlVHlwZSA9PT0gMSAmJiBsZW5ndGggKSB7Ci0gICAgcmV0dXJuIHRydWU7
Ci0gICAgfQotCi0gICAgcmV0dXJuIHR5cGUgPT09ICJhcnJheSIgfHwgdHlwZSAhPT0gImZ1bmN0
aW9uIiAmJgotICAgICggbGVuZ3RoID09PSAwIHx8Ci0gICAgdHlwZW9mIGxlbmd0aCA9PT0gIm51
bWJlciIgJiYgbGVuZ3RoID4gMCAmJiAoIGxlbmd0aCAtIDEgKSBpbiBvYmogKTsKLX0KLQotLy8g
QWxsIGpRdWVyeSBvYmplY3RzIHNob3VsZCBwb2ludCBiYWNrIHRvIHRoZXNlCi1yb290alF1ZXJ5
ID0galF1ZXJ5KGRvY3VtZW50KTsKLS8vIFN0cmluZyB0byBPYmplY3Qgb3B0aW9ucyBmb3JtYXQg
Y2FjaGUKLXZhciBvcHRpb25zQ2FjaGUgPSB7fTsKLQotLy8gQ29udmVydCBTdHJpbmctZm9ybWF0
dGVkIG9wdGlvbnMgaW50byBPYmplY3QtZm9ybWF0dGVkIG9uZXMgYW5kIHN0b3JlIGluIGNhY2hl
Ci1mdW5jdGlvbiBjcmVhdGVPcHRpb25zKCBvcHRpb25zICkgewotICAgIHZhciBvYmplY3QgPSBv
cHRpb25zQ2FjaGVbIG9wdGlvbnMgXSA9IHt9OwotICAgIGpRdWVyeS5lYWNoKCBvcHRpb25zLm1h
dGNoKCBjb3JlX3Jub3R3aGl0ZSApIHx8IFtdLCBmdW5jdGlvbiggXywgZmxhZyApIHsKLSAgICBv
YmplY3RbIGZsYWcgXSA9IHRydWU7Ci0gICAgfSk7Ci0gICAgcmV0dXJuIG9iamVjdDsKLX0KLQot
LyoKLSAqIENyZWF0ZSBhIGNhbGxiYWNrIGxpc3QgdXNpbmcgdGhlIGZvbGxvd2luZyBwYXJhbWV0
ZXJzOgotICoKLSAqICAgIG9wdGlvbnM6IGFuIG9wdGlvbmFsIGxpc3Qgb2Ygc3BhY2Utc2VwYXJh
dGVkIG9wdGlvbnMgdGhhdCB3aWxsIGNoYW5nZSBob3cKLSAqICAgICAgICAgICAgdGhlIGNhbGxi
YWNrIGxpc3QgYmVoYXZlcyBvciBhIG1vcmUgdHJhZGl0aW9uYWwgb3B0aW9uIG9iamVjdAotICoK
LSAqIEJ5IGRlZmF1bHQgYSBjYWxsYmFjayBsaXN0IHdpbGwgYWN0IGxpa2UgYW4gZXZlbnQgY2Fs
bGJhY2sgbGlzdCBhbmQgY2FuIGJlCi0gKiAiZmlyZWQiIG11bHRpcGxlIHRpbWVzLgotICoKLSAq
IFBvc3NpYmxlIG9wdGlvbnM6Ci0gKgotICogICAgb25jZTogICAgICAgICAgICB3aWxsIGVuc3Vy
ZSB0aGUgY2FsbGJhY2sgbGlzdCBjYW4gb25seSBiZSBmaXJlZCBvbmNlIChsaWtlIGEgRGVmZXJy
ZWQpCi0gKgotICogICAgbWVtb3J5OiAgICAgICAgICAgIHdpbGwga2VlcCB0cmFjayBvZiBwcmV2
aW91cyB2YWx1ZXMgYW5kIHdpbGwgY2FsbCBhbnkgY2FsbGJhY2sgYWRkZWQKLSAqICAgICAgICAg
ICAgICAgICAgICBhZnRlciB0aGUgbGlzdCBoYXMgYmVlbiBmaXJlZCByaWdodCBhd2F5IHdpdGgg
dGhlIGxhdGVzdCAibWVtb3JpemVkIgotICogICAgICAgICAgICAgICAgICAgIHZhbHVlcyAobGlr
ZSBhIERlZmVycmVkKQotICoKLSAqICAgIHVuaXF1ZTogICAgICAgICAgICB3aWxsIGVuc3VyZSBh
IGNhbGxiYWNrIGNhbiBvbmx5IGJlIGFkZGVkIG9uY2UgKG5vIGR1cGxpY2F0ZSBpbiB0aGUgbGlz
dCkKLSAqCi0gKiAgICBzdG9wT25GYWxzZTogICAgaW50ZXJydXB0IGNhbGxpbmdzIHdoZW4gYSBj
YWxsYmFjayByZXR1cm5zIGZhbHNlCi0gKgotICovCi1qUXVlcnkuQ2FsbGJhY2tzID0gZnVuY3Rp
b24oIG9wdGlvbnMgKSB7Ci0KLSAgICAvLyBDb252ZXJ0IG9wdGlvbnMgZnJvbSBTdHJpbmctZm9y
bWF0dGVkIHRvIE9iamVjdC1mb3JtYXR0ZWQgaWYgbmVlZGVkCi0gICAgLy8gKHdlIGNoZWNrIGlu
IGNhY2hlIGZpcnN0KQotICAgIG9wdGlvbnMgPSB0eXBlb2Ygb3B0aW9ucyA9PT0gInN0cmluZyIg
PwotICAgICggb3B0aW9uc0NhY2hlWyBvcHRpb25zIF0gfHwgY3JlYXRlT3B0aW9ucyggb3B0aW9u
cyApICkgOgotICAgIGpRdWVyeS5leHRlbmQoIHt9LCBvcHRpb25zICk7Ci0KLSAgICB2YXIgLy8g
RmxhZyB0byBrbm93IGlmIGxpc3QgaXMgY3VycmVudGx5IGZpcmluZwotICAgIGZpcmluZywKLSAg
ICAvLyBMYXN0IGZpcmUgdmFsdWUgKGZvciBub24tZm9yZ2V0dGFibGUgbGlzdHMpCi0gICAgbWVt
b3J5LAotICAgIC8vIEZsYWcgdG8ga25vdyBpZiBsaXN0IHdhcyBhbHJlYWR5IGZpcmVkCi0gICAg
ZmlyZWQsCi0gICAgLy8gRW5kIG9mIHRoZSBsb29wIHdoZW4gZmlyaW5nCi0gICAgZmlyaW5nTGVu
Z3RoLAotICAgIC8vIEluZGV4IG9mIGN1cnJlbnRseSBmaXJpbmcgY2FsbGJhY2sgKG1vZGlmaWVk
IGJ5IHJlbW92ZSBpZiBuZWVkZWQpCi0gICAgZmlyaW5nSW5kZXgsCi0gICAgLy8gRmlyc3QgY2Fs
bGJhY2sgdG8gZmlyZSAodXNlZCBpbnRlcm5hbGx5IGJ5IGFkZCBhbmQgZmlyZVdpdGgpCi0gICAg
ZmlyaW5nU3RhcnQsCi0gICAgLy8gQWN0dWFsIGNhbGxiYWNrIGxpc3QKLSAgICBsaXN0ID0gW10s
Ci0gICAgLy8gU3RhY2sgb2YgZmlyZSBjYWxscyBmb3IgcmVwZWF0YWJsZSBsaXN0cwotICAgIHN0
YWNrID0gIW9wdGlvbnMub25jZSAmJiBbXSwKLSAgICAvLyBGaXJlIGNhbGxiYWNrcwotICAgIGZp
cmUgPSBmdW5jdGlvbiggZGF0YSApIHsKLSAgICBtZW1vcnkgPSBvcHRpb25zLm1lbW9yeSAmJiBk
YXRhOwotICAgIGZpcmVkID0gdHJ1ZTsKLSAgICBmaXJpbmdJbmRleCA9IGZpcmluZ1N0YXJ0IHx8
IDA7Ci0gICAgZmlyaW5nU3RhcnQgPSAwOwotICAgIGZpcmluZ0xlbmd0aCA9IGxpc3QubGVuZ3Ro
OwotICAgIGZpcmluZyA9IHRydWU7Ci0gICAgZm9yICggOyBsaXN0ICYmIGZpcmluZ0luZGV4IDwg
ZmlyaW5nTGVuZ3RoOyBmaXJpbmdJbmRleCsrICkgewotICAgIGlmICggbGlzdFsgZmlyaW5nSW5k
ZXggXS5hcHBseSggZGF0YVsgMCBdLCBkYXRhWyAxIF0gKSA9PT0gZmFsc2UgJiYgb3B0aW9ucy5z
dG9wT25GYWxzZSApIHsKLSAgICBtZW1vcnkgPSBmYWxzZTsgLy8gVG8gcHJldmVudCBmdXJ0aGVy
IGNhbGxzIHVzaW5nIGFkZAotICAgIGJyZWFrOwotICAgIH0KLSAgICB9Ci0gICAgZmlyaW5nID0g
ZmFsc2U7Ci0gICAgaWYgKCBsaXN0ICkgewotICAgIGlmICggc3RhY2sgKSB7Ci0gICAgaWYgKCBz
dGFjay5sZW5ndGggKSB7Ci0gICAgZmlyZSggc3RhY2suc2hpZnQoKSApOwotICAgIH0KLSAgICB9
IGVsc2UgaWYgKCBtZW1vcnkgKSB7Ci0gICAgbGlzdCA9IFtdOwotICAgIH0gZWxzZSB7Ci0gICAg
c2VsZi5kaXNhYmxlKCk7Ci0gICAgfQotICAgIH0KLSAgICB9LAotICAgIC8vIEFjdHVhbCBDYWxs
YmFja3Mgb2JqZWN0Ci0gICAgc2VsZiA9IHsKLSAgICAvLyBBZGQgYSBjYWxsYmFjayBvciBhIGNv
bGxlY3Rpb24gb2YgY2FsbGJhY2tzIHRvIHRoZSBsaXN0Ci0gICAgYWRkOiBmdW5jdGlvbigpIHsK
LSAgICBpZiAoIGxpc3QgKSB7Ci0gICAgLy8gRmlyc3QsIHdlIHNhdmUgdGhlIGN1cnJlbnQgbGVu
Z3RoCi0gICAgdmFyIHN0YXJ0ID0gbGlzdC5sZW5ndGg7Ci0gICAgKGZ1bmN0aW9uIGFkZCggYXJn
cyApIHsKLSAgICBqUXVlcnkuZWFjaCggYXJncywgZnVuY3Rpb24oIF8sIGFyZyApIHsKLSAgICB2
YXIgdHlwZSA9IGpRdWVyeS50eXBlKCBhcmcgKTsKLSAgICBpZiAoIHR5cGUgPT09ICJmdW5jdGlv
biIgKSB7Ci0gICAgaWYgKCAhb3B0aW9ucy51bmlxdWUgfHwgIXNlbGYuaGFzKCBhcmcgKSApIHsK
LSAgICBsaXN0LnB1c2goIGFyZyApOwotICAgIH0KLSAgICB9IGVsc2UgaWYgKCBhcmcgJiYgYXJn
Lmxlbmd0aCAmJiB0eXBlICE9PSAic3RyaW5nIiApIHsKLSAgICAvLyBJbnNwZWN0IHJlY3Vyc2l2
ZWx5Ci0gICAgYWRkKCBhcmcgKTsKLSAgICB9Ci0gICAgfSk7Ci0gICAgfSkoIGFyZ3VtZW50cyAp
OwotICAgIC8vIERvIHdlIG5lZWQgdG8gYWRkIHRoZSBjYWxsYmFja3MgdG8gdGhlCi0gICAgLy8g
Y3VycmVudCBmaXJpbmcgYmF0Y2g/Ci0gICAgaWYgKCBmaXJpbmcgKSB7Ci0gICAgZmlyaW5nTGVu
Z3RoID0gbGlzdC5sZW5ndGg7Ci0gICAgLy8gV2l0aCBtZW1vcnksIGlmIHdlJ3JlIG5vdCBmaXJp
bmcgdGhlbgotICAgIC8vIHdlIHNob3VsZCBjYWxsIHJpZ2h0IGF3YXkKLSAgICB9IGVsc2UgaWYg
KCBtZW1vcnkgKSB7Ci0gICAgZmlyaW5nU3RhcnQgPSBzdGFydDsKLSAgICBmaXJlKCBtZW1vcnkg
KTsKLSAgICB9Ci0gICAgfQotICAgIHJldHVybiB0aGlzOwotICAgIH0sCi0gICAgLy8gUmVtb3Zl
IGEgY2FsbGJhY2sgZnJvbSB0aGUgbGlzdAotICAgIHJlbW92ZTogZnVuY3Rpb24oKSB7Ci0gICAg
aWYgKCBsaXN0ICkgewotICAgIGpRdWVyeS5lYWNoKCBhcmd1bWVudHMsIGZ1bmN0aW9uKCBfLCBh
cmcgKSB7Ci0gICAgdmFyIGluZGV4OwotICAgIHdoaWxlKCAoIGluZGV4ID0galF1ZXJ5LmluQXJy
YXkoIGFyZywgbGlzdCwgaW5kZXggKSApID4gLTEgKSB7Ci0gICAgbGlzdC5zcGxpY2UoIGluZGV4
LCAxICk7Ci0gICAgLy8gSGFuZGxlIGZpcmluZyBpbmRleGVzCi0gICAgaWYgKCBmaXJpbmcgKSB7
Ci0gICAgaWYgKCBpbmRleCA8PSBmaXJpbmdMZW5ndGggKSB7Ci0gICAgZmlyaW5nTGVuZ3RoLS07
Ci0gICAgfQotICAgIGlmICggaW5kZXggPD0gZmlyaW5nSW5kZXggKSB7Ci0gICAgZmlyaW5nSW5k
ZXgtLTsKLSAgICB9Ci0gICAgfQotICAgIH0KLSAgICB9KTsKLSAgICB9Ci0gICAgcmV0dXJuIHRo
aXM7Ci0gICAgfSwKLSAgICAvLyBDaGVjayBpZiBhIGdpdmVuIGNhbGxiYWNrIGlzIGluIHRoZSBs
aXN0LgotICAgIC8vIElmIG5vIGFyZ3VtZW50IGlzIGdpdmVuLCByZXR1cm4gd2hldGhlciBvciBu
b3QgbGlzdCBoYXMgY2FsbGJhY2tzIGF0dGFjaGVkLgotICAgIGhhczogZnVuY3Rpb24oIGZuICkg
ewotICAgIHJldHVybiBmbiA/IGpRdWVyeS5pbkFycmF5KCBmbiwgbGlzdCApID4gLTEgOiAhISgg
bGlzdCAmJiBsaXN0Lmxlbmd0aCApOwotICAgIH0sCi0gICAgLy8gUmVtb3ZlIGFsbCBjYWxsYmFj
a3MgZnJvbSB0aGUgbGlzdAotICAgIGVtcHR5OiBmdW5jdGlvbigpIHsKLSAgICBsaXN0ID0gW107
Ci0gICAgcmV0dXJuIHRoaXM7Ci0gICAgfSwKLSAgICAvLyBIYXZlIHRoZSBsaXN0IGRvIG5vdGhp
bmcgYW55bW9yZQotICAgIGRpc2FibGU6IGZ1bmN0aW9uKCkgewotICAgIGxpc3QgPSBzdGFjayA9
IG1lbW9yeSA9IHVuZGVmaW5lZDsKLSAgICByZXR1cm4gdGhpczsKLSAgICB9LAotICAgIC8vIElz
IGl0IGRpc2FibGVkPwotICAgIGRpc2FibGVkOiBmdW5jdGlvbigpIHsKLSAgICByZXR1cm4gIWxp
c3Q7Ci0gICAgfSwKLSAgICAvLyBMb2NrIHRoZSBsaXN0IGluIGl0cyBjdXJyZW50IHN0YXRlCi0g
ICAgbG9jazogZnVuY3Rpb24oKSB7Ci0gICAgc3RhY2sgPSB1bmRlZmluZWQ7Ci0gICAgaWYgKCAh
bWVtb3J5ICkgewotICAgIHNlbGYuZGlzYWJsZSgpOwotICAgIH0KLSAgICByZXR1cm4gdGhpczsK
LSAgICB9LAotICAgIC8vIElzIGl0IGxvY2tlZD8KLSAgICBsb2NrZWQ6IGZ1bmN0aW9uKCkgewot
ICAgIHJldHVybiAhc3RhY2s7Ci0gICAgfSwKLSAgICAvLyBDYWxsIGFsbCBjYWxsYmFja3Mgd2l0
aCB0aGUgZ2l2ZW4gY29udGV4dCBhbmQgYXJndW1lbnRzCi0gICAgZmlyZVdpdGg6IGZ1bmN0aW9u
KCBjb250ZXh0LCBhcmdzICkgewotICAgIGFyZ3MgPSBhcmdzIHx8IFtdOwotICAgIGFyZ3MgPSBb
IGNvbnRleHQsIGFyZ3Muc2xpY2UgPyBhcmdzLnNsaWNlKCkgOiBhcmdzIF07Ci0gICAgaWYgKCBs
aXN0ICYmICggIWZpcmVkIHx8IHN0YWNrICkgKSB7Ci0gICAgaWYgKCBmaXJpbmcgKSB7Ci0gICAg
c3RhY2sucHVzaCggYXJncyApOwotICAgIH0gZWxzZSB7Ci0gICAgZmlyZSggYXJncyApOwotICAg
IH0KLSAgICB9Ci0gICAgcmV0dXJuIHRoaXM7Ci0gICAgfSwKLSAgICAvLyBDYWxsIGFsbCB0aGUg
Y2FsbGJhY2tzIHdpdGggdGhlIGdpdmVuIGFyZ3VtZW50cwotICAgIGZpcmU6IGZ1bmN0aW9uKCkg
ewotICAgIHNlbGYuZmlyZVdpdGgoIHRoaXMsIGFyZ3VtZW50cyApOwotICAgIHJldHVybiB0aGlz
OwotICAgIH0sCi0gICAgLy8gVG8ga25vdyBpZiB0aGUgY2FsbGJhY2tzIGhhdmUgYWxyZWFkeSBi
ZWVuIGNhbGxlZCBhdCBsZWFzdCBvbmNlCi0gICAgZmlyZWQ6IGZ1bmN0aW9uKCkgewotICAgIHJl
dHVybiAhIWZpcmVkOwotICAgIH0KLSAgICB9OwotCi0gICAgcmV0dXJuIHNlbGY7Ci19OwotalF1
ZXJ5LmV4dGVuZCh7Ci0KLSAgICBEZWZlcnJlZDogZnVuY3Rpb24oIGZ1bmMgKSB7Ci0gICAgdmFy
IHR1cGxlcyA9IFsKLSAgICAvLyBhY3Rpb24sIGFkZCBsaXN0ZW5lciwgbGlzdGVuZXIgbGlzdCwg
ZmluYWwgc3RhdGUKLSAgICBbICJyZXNvbHZlIiwgImRvbmUiLCBqUXVlcnkuQ2FsbGJhY2tzKCJv
bmNlIG1lbW9yeSIpLCAicmVzb2x2ZWQiIF0sCi0gICAgWyAicmVqZWN0IiwgImZhaWwiLCBqUXVl
cnkuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLCAicmVqZWN0ZWQiIF0sCi0gICAgWyAibm90aWZ5
IiwgInByb2dyZXNzIiwgalF1ZXJ5LkNhbGxiYWNrcygibWVtb3J5IikgXQotICAgIF0sCi0gICAg
c3RhdGUgPSAicGVuZGluZyIsCi0gICAgcHJvbWlzZSA9IHsKLSAgICBzdGF0ZTogZnVuY3Rpb24o
KSB7Ci0gICAgcmV0dXJuIHN0YXRlOwotICAgIH0sCi0gICAgYWx3YXlzOiBmdW5jdGlvbigpIHsK
LSAgICBkZWZlcnJlZC5kb25lKCBhcmd1bWVudHMgKS5mYWlsKCBhcmd1bWVudHMgKTsKLSAgICBy
ZXR1cm4gdGhpczsKLSAgICB9LAotICAgIHRoZW46IGZ1bmN0aW9uKCAvKiBmbkRvbmUsIGZuRmFp
bCwgZm5Qcm9ncmVzcyAqLyApIHsKLSAgICB2YXIgZm5zID0gYXJndW1lbnRzOwotICAgIHJldHVy
biBqUXVlcnkuRGVmZXJyZWQoZnVuY3Rpb24oIG5ld0RlZmVyICkgewotICAgIGpRdWVyeS5lYWNo
KCB0dXBsZXMsIGZ1bmN0aW9uKCBpLCB0dXBsZSApIHsKLSAgICB2YXIgYWN0aW9uID0gdHVwbGVb
IDAgXSwKLSAgICBmbiA9IGpRdWVyeS5pc0Z1bmN0aW9uKCBmbnNbIGkgXSApICYmIGZuc1sgaSBd
OwotICAgIC8vIGRlZmVycmVkWyBkb25lIHwgZmFpbCB8IHByb2dyZXNzIF0gZm9yIGZvcndhcmRp
bmcgYWN0aW9ucyB0byBuZXdEZWZlcgotICAgIGRlZmVycmVkWyB0dXBsZVsxXSBdKGZ1bmN0aW9u
KCkgewotICAgIHZhciByZXR1cm5lZCA9IGZuICYmIGZuLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMg
KTsKLSAgICBpZiAoIHJldHVybmVkICYmIGpRdWVyeS5pc0Z1bmN0aW9uKCByZXR1cm5lZC5wcm9t
aXNlICkgKSB7Ci0gICAgcmV0dXJuZWQucHJvbWlzZSgpCi0gICAgLmRvbmUoIG5ld0RlZmVyLnJl
c29sdmUgKQotICAgIC5mYWlsKCBuZXdEZWZlci5yZWplY3QgKQotICAgIC5wcm9ncmVzcyggbmV3
RGVmZXIubm90aWZ5ICk7Ci0gICAgfSBlbHNlIHsKLSAgICBuZXdEZWZlclsgYWN0aW9uICsgIldp
dGgiIF0oIHRoaXMgPT09IHByb21pc2UgPyBuZXdEZWZlci5wcm9taXNlKCkgOiB0aGlzLCBmbiA/
IFsgcmV0dXJuZWQgXSA6IGFyZ3VtZW50cyApOwotICAgIH0KLSAgICB9KTsKLSAgICB9KTsKLSAg
ICBmbnMgPSBudWxsOwotICAgIH0pLnByb21pc2UoKTsKLSAgICB9LAotICAgIC8vIEdldCBhIHBy
b21pc2UgZm9yIHRoaXMgZGVmZXJyZWQKLSAgICAvLyBJZiBvYmogaXMgcHJvdmlkZWQsIHRoZSBw
cm9taXNlIGFzcGVjdCBpcyBhZGRlZCB0byB0aGUgb2JqZWN0Ci0gICAgcHJvbWlzZTogZnVuY3Rp
b24oIG9iaiApIHsKLSAgICByZXR1cm4gb2JqICE9IG51bGwgPyBqUXVlcnkuZXh0ZW5kKCBvYmos
IHByb21pc2UgKSA6IHByb21pc2U7Ci0gICAgfQotICAgIH0sCi0gICAgZGVmZXJyZWQgPSB7fTsK
LQotICAgIC8vIEtlZXAgcGlwZSBmb3IgYmFjay1jb21wYXQKLSAgICBwcm9taXNlLnBpcGUgPSBw
cm9taXNlLnRoZW47Ci0KLSAgICAvLyBBZGQgbGlzdC1zcGVjaWZpYyBtZXRob2RzCi0gICAgalF1
ZXJ5LmVhY2goIHR1cGxlcywgZnVuY3Rpb24oIGksIHR1cGxlICkgewotICAgIHZhciBsaXN0ID0g
dHVwbGVbIDIgXSwKLSAgICBzdGF0ZVN0cmluZyA9IHR1cGxlWyAzIF07Ci0KLSAgICAvLyBwcm9t
aXNlWyBkb25lIHwgZmFpbCB8IHByb2dyZXNzIF0gPSBsaXN0LmFkZAotICAgIHByb21pc2VbIHR1
cGxlWzFdIF0gPSBsaXN0LmFkZDsKLQotICAgIC8vIEhhbmRsZSBzdGF0ZQotICAgIGlmICggc3Rh
dGVTdHJpbmcgKSB7Ci0gICAgbGlzdC5hZGQoZnVuY3Rpb24oKSB7Ci0gICAgLy8gc3RhdGUgPSBb
IHJlc29sdmVkIHwgcmVqZWN0ZWQgXQotICAgIHN0YXRlID0gc3RhdGVTdHJpbmc7Ci0KLSAgICAv
LyBbIHJlamVjdF9saXN0IHwgcmVzb2x2ZV9saXN0IF0uZGlzYWJsZTsgcHJvZ3Jlc3NfbGlzdC5s
b2NrCi0gICAgfSwgdHVwbGVzWyBpIF4gMSBdWyAyIF0uZGlzYWJsZSwgdHVwbGVzWyAyIF1bIDIg
XS5sb2NrICk7Ci0gICAgfQotCi0gICAgLy8gZGVmZXJyZWRbIHJlc29sdmUgfCByZWplY3QgfCBu
b3RpZnkgXQotICAgIGRlZmVycmVkWyB0dXBsZVswXSBdID0gZnVuY3Rpb24oKSB7Ci0gICAgZGVm
ZXJyZWRbIHR1cGxlWzBdICsgIldpdGgiIF0oIHRoaXMgPT09IGRlZmVycmVkID8gcHJvbWlzZSA6
IHRoaXMsIGFyZ3VtZW50cyApOwotICAgIHJldHVybiB0aGlzOwotICAgIH07Ci0gICAgZGVmZXJy
ZWRbIHR1cGxlWzBdICsgIldpdGgiIF0gPSBsaXN0LmZpcmVXaXRoOwotICAgIH0pOwotCi0gICAg
Ly8gTWFrZSB0aGUgZGVmZXJyZWQgYSBwcm9taXNlCi0gICAgcHJvbWlzZS5wcm9taXNlKCBkZWZl
cnJlZCApOwotCi0gICAgLy8gQ2FsbCBnaXZlbiBmdW5jIGlmIGFueQotICAgIGlmICggZnVuYyAp
IHsKLSAgICBmdW5jLmNhbGwoIGRlZmVycmVkLCBkZWZlcnJlZCApOwotICAgIH0KLQotICAgIC8v
IEFsbCBkb25lIQotICAgIHJldHVybiBkZWZlcnJlZDsKLSAgICB9LAotCi0gICAgLy8gRGVmZXJy
ZWQgaGVscGVyCi0gICAgd2hlbjogZnVuY3Rpb24oIHN1Ym9yZGluYXRlIC8qICwgLi4uLCBzdWJv
cmRpbmF0ZU4gKi8gKSB7Ci0gICAgdmFyIGkgPSAwLAotICAgIHJlc29sdmVWYWx1ZXMgPSBjb3Jl
X3NsaWNlLmNhbGwoIGFyZ3VtZW50cyApLAotICAgIGxlbmd0aCA9IHJlc29sdmVWYWx1ZXMubGVu
Z3RoLAotCi0gICAgLy8gdGhlIGNvdW50IG9mIHVuY29tcGxldGVkIHN1Ym9yZGluYXRlcwotICAg
IHJlbWFpbmluZyA9IGxlbmd0aCAhPT0gMSB8fCAoIHN1Ym9yZGluYXRlICYmIGpRdWVyeS5pc0Z1
bmN0aW9uKCBzdWJvcmRpbmF0ZS5wcm9taXNlICkgKSA/IGxlbmd0aCA6IDAsCi0KLSAgICAvLyB0
aGUgbWFzdGVyIERlZmVycmVkLiBJZiByZXNvbHZlVmFsdWVzIGNvbnNpc3Qgb2Ygb25seSBhIHNp
bmdsZSBEZWZlcnJlZCwganVzdCB1c2UgdGhhdC4KLSAgICBkZWZlcnJlZCA9IHJlbWFpbmluZyA9
PT0gMSA/IHN1Ym9yZGluYXRlIDogalF1ZXJ5LkRlZmVycmVkKCksCi0KLSAgICAvLyBVcGRhdGUg
ZnVuY3Rpb24gZm9yIGJvdGggcmVzb2x2ZSBhbmQgcHJvZ3Jlc3MgdmFsdWVzCi0gICAgdXBkYXRl
RnVuYyA9IGZ1bmN0aW9uKCBpLCBjb250ZXh0cywgdmFsdWVzICkgewotICAgIHJldHVybiBmdW5j
dGlvbiggdmFsdWUgKSB7Ci0gICAgY29udGV4dHNbIGkgXSA9IHRoaXM7Ci0gICAgdmFsdWVzWyBp
IF0gPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGNvcmVfc2xpY2UuY2FsbCggYXJndW1lbnRzICkg
OiB2YWx1ZTsKLSAgICBpZiggdmFsdWVzID09PSBwcm9ncmVzc1ZhbHVlcyApIHsKLSAgICBkZWZl
cnJlZC5ub3RpZnlXaXRoKCBjb250ZXh0cywgdmFsdWVzICk7Ci0gICAgfSBlbHNlIGlmICggISgg
LS1yZW1haW5pbmcgKSApIHsKLSAgICBkZWZlcnJlZC5yZXNvbHZlV2l0aCggY29udGV4dHMsIHZh
bHVlcyApOwotICAgIH0KLSAgICB9OwotICAgIH0sCi0KLSAgICBwcm9ncmVzc1ZhbHVlcywgcHJv
Z3Jlc3NDb250ZXh0cywgcmVzb2x2ZUNvbnRleHRzOwotCi0gICAgLy8gYWRkIGxpc3RlbmVycyB0
byBEZWZlcnJlZCBzdWJvcmRpbmF0ZXM7IHRyZWF0IG90aGVycyBhcyByZXNvbHZlZAotICAgIGlm
ICggbGVuZ3RoID4gMSApIHsKLSAgICBwcm9ncmVzc1ZhbHVlcyA9IG5ldyBBcnJheSggbGVuZ3Ro
ICk7Ci0gICAgcHJvZ3Jlc3NDb250ZXh0cyA9IG5ldyBBcnJheSggbGVuZ3RoICk7Ci0gICAgcmVz
b2x2ZUNvbnRleHRzID0gbmV3IEFycmF5KCBsZW5ndGggKTsKLSAgICBmb3IgKCA7IGkgPCBsZW5n
dGg7IGkrKyApIHsKLSAgICBpZiAoIHJlc29sdmVWYWx1ZXNbIGkgXSAmJiBqUXVlcnkuaXNGdW5j
dGlvbiggcmVzb2x2ZVZhbHVlc1sgaSBdLnByb21pc2UgKSApIHsKLSAgICByZXNvbHZlVmFsdWVz
WyBpIF0ucHJvbWlzZSgpCi0gICAgLmRvbmUoIHVwZGF0ZUZ1bmMoIGksIHJlc29sdmVDb250ZXh0
cywgcmVzb2x2ZVZhbHVlcyApICkKLSAgICAuZmFpbCggZGVmZXJyZWQucmVqZWN0ICkKLSAgICAu
cHJvZ3Jlc3MoIHVwZGF0ZUZ1bmMoIGksIHByb2dyZXNzQ29udGV4dHMsIHByb2dyZXNzVmFsdWVz
ICkgKTsKLSAgICB9IGVsc2UgewotICAgIC0tcmVtYWluaW5nOwotICAgIH0KLSAgICB9Ci0gICAg
fQotCi0gICAgLy8gaWYgd2UncmUgbm90IHdhaXRpbmcgb24gYW55dGhpbmcsIHJlc29sdmUgdGhl
IG1hc3RlcgotICAgIGlmICggIXJlbWFpbmluZyApIHsKLSAgICBkZWZlcnJlZC5yZXNvbHZlV2l0
aCggcmVzb2x2ZUNvbnRleHRzLCByZXNvbHZlVmFsdWVzICk7Ci0gICAgfQotCi0gICAgcmV0dXJu
IGRlZmVycmVkLnByb21pc2UoKTsKLSAgICB9Ci19KTsKLWpRdWVyeS5zdXBwb3J0ID0gKGZ1bmN0
aW9uKCkgewotCi0gICAgdmFyIHN1cHBvcnQsIGFsbCwgYSwKLSAgICBpbnB1dCwgc2VsZWN0LCBm
cmFnbWVudCwKLSAgICBvcHQsIGV2ZW50TmFtZSwgaXNTdXBwb3J0ZWQsIGksCi0gICAgZGl2ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0KLSAgICAvLyBTZXR1cAotICAgIGRpdi5z
ZXRBdHRyaWJ1dGUoICJjbGFzc05hbWUiLCAidCIgKTsKLSAgICBkaXYuaW5uZXJIVE1MID0gIiAg
PGxpbmsvPjx0YWJsZT48L3RhYmxlPjxhIGhyZWY9Jy9hJz5hPC9hPjxpbnB1dCB0eXBlPSdjaGVj
a2JveCcvPiI7Ci0KLSAgICAvLyBTdXBwb3J0IHRlc3RzIHdvbid0IHJ1biBpbiBzb21lIGxpbWl0
ZWQgb3Igbm9uLWJyb3dzZXIgZW52aXJvbm1lbnRzCi0gICAgYWxsID0gZGl2LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCIqIik7Ci0gICAgYSA9IGRpdi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYSIpWyAw
IF07Ci0gICAgaWYgKCAhYWxsIHx8ICFhIHx8ICFhbGwubGVuZ3RoICkgewotICAgIHJldHVybiB7
fTsKLSAgICB9Ci0KLSAgICAvLyBGaXJzdCBiYXRjaCBvZiB0ZXN0cwotICAgIHNlbGVjdCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpOwotICAgIG9wdCA9IHNlbGVjdC5hcHBlbmRD
aGlsZCggZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3B0aW9uIikgKTsKLSAgICBpbnB1dCA9IGRp
di5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKVsgMCBdOwotCi0gICAgYS5zdHlsZS5jc3NU
ZXh0ID0gInRvcDoxcHg7ZmxvYXQ6bGVmdDtvcGFjaXR5Oi41IjsKLSAgICBzdXBwb3J0ID0gewot
ICAgIC8vIFRlc3Qgc2V0QXR0cmlidXRlIG9uIGNhbWVsQ2FzZSBjbGFzcy4gSWYgaXQgd29ya3Ms
IHdlIG5lZWQgYXR0ckZpeGVzIHdoZW4gZG9pbmcgZ2V0L3NldEF0dHJpYnV0ZSAoaWU2LzcpCi0g
ICAgZ2V0U2V0QXR0cmlidXRlOiBkaXYuY2xhc3NOYW1lICE9PSAidCIsCi0KLSAgICAvLyBJRSBz
dHJpcHMgbGVhZGluZyB3aGl0ZXNwYWNlIHdoZW4gLmlubmVySFRNTCBpcyB1c2VkCi0gICAgbGVh
ZGluZ1doaXRlc3BhY2U6IGRpdi5maXJzdENoaWxkLm5vZGVUeXBlID09PSAzLAotCi0gICAgLy8g
TWFrZSBzdXJlIHRoYXQgdGJvZHkgZWxlbWVudHMgYXJlbid0IGF1dG9tYXRpY2FsbHkgaW5zZXJ0
ZWQKLSAgICAvLyBJRSB3aWxsIGluc2VydCB0aGVtIGludG8gZW1wdHkgdGFibGVzCi0gICAgdGJv
ZHk6ICFkaXYuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRib2R5IikubGVuZ3RoLAotCi0gICAgLy8g
TWFrZSBzdXJlIHRoYXQgbGluayBlbGVtZW50cyBnZXQgc2VyaWFsaXplZCBjb3JyZWN0bHkgYnkg
aW5uZXJIVE1MCi0gICAgLy8gVGhpcyByZXF1aXJlcyBhIHdyYXBwZXIgZWxlbWVudCBpbiBJRQot
ICAgIGh0bWxTZXJpYWxpemU6ICEhZGl2LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIikubGVu
Z3RoLAotCi0gICAgLy8gR2V0IHRoZSBzdHlsZSBpbmZvcm1hdGlvbiBmcm9tIGdldEF0dHJpYnV0
ZQotICAgIC8vIChJRSB1c2VzIC5jc3NUZXh0IGluc3RlYWQpCi0gICAgc3R5bGU6IC90b3AvLnRl
c3QoIGEuZ2V0QXR0cmlidXRlKCJzdHlsZSIpICksCi0KLSAgICAvLyBNYWtlIHN1cmUgdGhhdCBV
UkxzIGFyZW4ndCBtYW5pcHVsYXRlZAotICAgIC8vIChJRSBub3JtYWxpemVzIGl0IGJ5IGRlZmF1
bHQpCi0gICAgaHJlZk5vcm1hbGl6ZWQ6IGEuZ2V0QXR0cmlidXRlKCJocmVmIikgPT09ICIvYSIs
Ci0KLSAgICAvLyBNYWtlIHN1cmUgdGhhdCBlbGVtZW50IG9wYWNpdHkgZXhpc3RzCi0gICAgLy8g
KElFIHVzZXMgZmlsdGVyIGluc3RlYWQpCi0gICAgLy8gVXNlIGEgcmVnZXggdG8gd29yayBhcm91
bmQgYSBXZWJLaXQgaXNzdWUuIFNlZSAjNTE0NQotICAgIG9wYWNpdHk6IC9eMC41Ly50ZXN0KCBh
LnN0eWxlLm9wYWNpdHkgKSwKLQotICAgIC8vIFZlcmlmeSBzdHlsZSBmbG9hdCBleGlzdGVuY2UK
LSAgICAvLyAoSUUgdXNlcyBzdHlsZUZsb2F0IGluc3RlYWQgb2YgY3NzRmxvYXQpCi0gICAgY3Nz
RmxvYXQ6ICEhYS5zdHlsZS5jc3NGbG9hdCwKLQotICAgIC8vIENoZWNrIHRoZSBkZWZhdWx0IGNo
ZWNrYm94L3JhZGlvIHZhbHVlICgiIiBvbiBXZWJLaXQ7ICJvbiIgZWxzZXdoZXJlKQotICAgIGNo
ZWNrT246ICEhaW5wdXQudmFsdWUsCi0KLSAgICAvLyBNYWtlIHN1cmUgdGhhdCBhIHNlbGVjdGVk
LWJ5LWRlZmF1bHQgb3B0aW9uIGhhcyBhIHdvcmtpbmcgc2VsZWN0ZWQgcHJvcGVydHkuCi0gICAg
Ly8gKFdlYktpdCBkZWZhdWx0cyB0byBmYWxzZSBpbnN0ZWFkIG9mIHRydWUsIElFIHRvbywgaWYg
aXQncyBpbiBhbiBvcHRncm91cCkKLSAgICBvcHRTZWxlY3RlZDogb3B0LnNlbGVjdGVkLAotCi0g
ICAgLy8gVGVzdHMgZm9yIGVuY3R5cGUgc3VwcG9ydCBvbiBhIGZvcm0gKCM2NzQzKQotICAgIGVu
Y3R5cGU6ICEhZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZm9ybSIpLmVuY3R5cGUsCi0KLSAgICAv
LyBNYWtlcyBzdXJlIGNsb25pbmcgYW4gaHRtbDUgZWxlbWVudCBkb2VzIG5vdCBjYXVzZSBwcm9i
bGVtcwotICAgIC8vIFdoZXJlIG91dGVySFRNTCBpcyB1bmRlZmluZWQsIHRoaXMgc3RpbGwgd29y
a3MKLSAgICBodG1sNUNsb25lOiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJuYXYiKS5jbG9uZU5v
ZGUoIHRydWUgKS5vdXRlckhUTUwgIT09ICI8Om5hdj48LzpuYXY+IiwKLQotICAgIC8vIGpRdWVy
eS5zdXBwb3J0LmJveE1vZGVsIERFUFJFQ0FURUQgaW4gMS44IHNpbmNlIHdlIGRvbid0IHN1cHBv
cnQgUXVpcmtzIE1vZGUKLSAgICBib3hNb2RlbDogZG9jdW1lbnQuY29tcGF0TW9kZSA9PT0gIkNT
UzFDb21wYXQiLAotCi0gICAgLy8gV2lsbCBiZSBkZWZpbmVkIGxhdGVyCi0gICAgZGVsZXRlRXhw
YW5kbzogdHJ1ZSwKLSAgICBub0Nsb25lRXZlbnQ6IHRydWUsCi0gICAgaW5saW5lQmxvY2tOZWVk
c0xheW91dDogZmFsc2UsCi0gICAgc2hyaW5rV3JhcEJsb2NrczogZmFsc2UsCi0gICAgcmVsaWFi
bGVNYXJnaW5SaWdodDogdHJ1ZSwKLSAgICBib3hTaXppbmdSZWxpYWJsZTogdHJ1ZSwKLSAgICBw
aXhlbFBvc2l0aW9uOiBmYWxzZQotICAgIH07Ci0KLSAgICAvLyBNYWtlIHN1cmUgY2hlY2tlZCBz
dGF0dXMgaXMgcHJvcGVybHkgY2xvbmVkCi0gICAgaW5wdXQuY2hlY2tlZCA9IHRydWU7Ci0gICAg
c3VwcG9ydC5ub0Nsb25lQ2hlY2tlZCA9IGlucHV0LmNsb25lTm9kZSggdHJ1ZSApLmNoZWNrZWQ7
Ci0KLSAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgb3B0aW9ucyBpbnNpZGUgZGlzYWJsZWQgc2Vs
ZWN0cyBhcmVuJ3QgbWFya2VkIGFzIGRpc2FibGVkCi0gICAgLy8gKFdlYktpdCBtYXJrcyB0aGVt
IGFzIGRpc2FibGVkKQotICAgIHNlbGVjdC5kaXNhYmxlZCA9IHRydWU7Ci0gICAgc3VwcG9ydC5v
cHREaXNhYmxlZCA9ICFvcHQuZGlzYWJsZWQ7Ci0KLSAgICAvLyBTdXBwb3J0OiBJRTw5Ci0gICAg
dHJ5IHsKLSAgICBkZWxldGUgZGl2LnRlc3Q7Ci0gICAgfSBjYXRjaCggZSApIHsKLSAgICBzdXBw
b3J0LmRlbGV0ZUV4cGFuZG8gPSBmYWxzZTsKLSAgICB9Ci0KLSAgICAvLyBDaGVjayBpZiB3ZSBj
YW4gdHJ1c3QgZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpCi0gICAgaW5wdXQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJpbnB1dCIpOwotICAgIGlucHV0LnNldEF0dHJpYnV0ZSggInZhbHVlIiwgIiIg
KTsKLSAgICBzdXBwb3J0LmlucHV0ID0gaW5wdXQuZ2V0QXR0cmlidXRlKCAidmFsdWUiICkgPT09
ICIiOwotCi0gICAgLy8gQ2hlY2sgaWYgYW4gaW5wdXQgbWFpbnRhaW5zIGl0cyB2YWx1ZSBhZnRl
ciBiZWNvbWluZyBhIHJhZGlvCi0gICAgaW5wdXQudmFsdWUgPSAidCI7Ci0gICAgaW5wdXQuc2V0
QXR0cmlidXRlKCAidHlwZSIsICJyYWRpbyIgKTsKLSAgICBzdXBwb3J0LnJhZGlvVmFsdWUgPSBp
bnB1dC52YWx1ZSA9PT0gInQiOwotCi0gICAgLy8gIzExMjE3IC0gV2ViS2l0IGxvc2VzIGNoZWNr
IHdoZW4gdGhlIG5hbWUgaXMgYWZ0ZXIgdGhlIGNoZWNrZWQgYXR0cmlidXRlCi0gICAgaW5wdXQu
c2V0QXR0cmlidXRlKCAiY2hlY2tlZCIsICJ0IiApOwotICAgIGlucHV0LnNldEF0dHJpYnV0ZSgg
Im5hbWUiLCAidCIgKTsKLQotICAgIGZyYWdtZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRG
cmFnbWVudCgpOwotICAgIGZyYWdtZW50LmFwcGVuZENoaWxkKCBpbnB1dCApOwotCi0gICAgLy8g
Q2hlY2sgaWYgYSBkaXNjb25uZWN0ZWQgY2hlY2tib3ggd2lsbCByZXRhaW4gaXRzIGNoZWNrZWQK
LSAgICAvLyB2YWx1ZSBvZiB0cnVlIGFmdGVyIGFwcGVuZGVkIHRvIHRoZSBET00gKElFNi83KQot
ICAgIHN1cHBvcnQuYXBwZW5kQ2hlY2tlZCA9IGlucHV0LmNoZWNrZWQ7Ci0KLSAgICAvLyBXZWJL
aXQgZG9lc24ndCBjbG9uZSBjaGVja2VkIHN0YXRlIGNvcnJlY3RseSBpbiBmcmFnbWVudHMKLSAg
ICBzdXBwb3J0LmNoZWNrQ2xvbmUgPSBmcmFnbWVudC5jbG9uZU5vZGUoIHRydWUgKS5jbG9uZU5v
ZGUoIHRydWUgKS5sYXN0Q2hpbGQuY2hlY2tlZDsKLQotICAgIC8vIFN1cHBvcnQ6IElFPDkKLSAg
ICAvLyBPcGVyYSBkb2VzIG5vdCBjbG9uZSBldmVudHMgKGFuZCB0eXBlb2YgZGl2LmF0dGFjaEV2
ZW50ID09PSB1bmRlZmluZWQpLgotICAgIC8vIElFOS0xMCBjbG9uZXMgZXZlbnRzIGJvdW5kIHZp
YSBhdHRhY2hFdmVudCwgYnV0IHRoZXkgZG9uJ3QgdHJpZ2dlciB3aXRoIC5jbGljaygpCi0gICAg
aWYgKCBkaXYuYXR0YWNoRXZlbnQgKSB7Ci0gICAgZGl2LmF0dGFjaEV2ZW50KCAib25jbGljayIs
IGZ1bmN0aW9uKCkgewotICAgIHN1cHBvcnQubm9DbG9uZUV2ZW50ID0gZmFsc2U7Ci0gICAgfSk7
Ci0KLSAgICBkaXYuY2xvbmVOb2RlKCB0cnVlICkuY2xpY2soKTsKLSAgICB9Ci0KLSAgICAvLyBT
dXBwb3J0OiBJRTw5IChsYWNrIHN1Ym1pdC9jaGFuZ2UgYnViYmxlKSwgRmlyZWZveCAxNysgKGxh
Y2sgZm9jdXNpbiBldmVudCkKLSAgICAvLyBCZXdhcmUgb2YgQ1NQIHJlc3RyaWN0aW9ucyAoaHR0
cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4vU2VjdXJpdHkvQ1NQKSwgdGVzdC9jc3AucGhw
Ci0gICAgZm9yICggaSBpbiB7IHN1Ym1pdDogdHJ1ZSwgY2hhbmdlOiB0cnVlLCBmb2N1c2luOiB0
cnVlIH0pIHsKLSAgICBkaXYuc2V0QXR0cmlidXRlKCBldmVudE5hbWUgPSAib24iICsgaSwgInQi
ICk7Ci0KLSAgICBzdXBwb3J0WyBpICsgIkJ1YmJsZXMiIF0gPSBldmVudE5hbWUgaW4gd2luZG93
IHx8IGRpdi5hdHRyaWJ1dGVzWyBldmVudE5hbWUgXS5leHBhbmRvID09PSBmYWxzZTsKLSAgICB9
Ci0KLSAgICBkaXYuc3R5bGUuYmFja2dyb3VuZENsaXAgPSAiY29udGVudC1ib3giOwotICAgIGRp
di5jbG9uZU5vZGUoIHRydWUgKS5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCA9ICIiOwotICAgIHN1cHBv
cnQuY2xlYXJDbG9uZVN0eWxlID0gZGl2LnN0eWxlLmJhY2tncm91bmRDbGlwID09PSAiY29udGVu
dC1ib3giOwotCi0gICAgLy8gUnVuIHRlc3RzIHRoYXQgbmVlZCBhIGJvZHkgYXQgZG9jIHJlYWR5
Ci0gICAgalF1ZXJ5KGZ1bmN0aW9uKCkgewotICAgIHZhciBjb250YWluZXIsIG1hcmdpbkRpdiwg
dGRzLAotICAgIGRpdlJlc2V0ID0gInBhZGRpbmc6MDttYXJnaW46MDtib3JkZXI6MDtkaXNwbGF5
OmJsb2NrO2JveC1zaXppbmc6Y29udGVudC1ib3g7LW1vei1ib3gtc2l6aW5nOmNvbnRlbnQtYm94
Oy13ZWJraXQtYm94LXNpemluZzpjb250ZW50LWJveDsiLAotICAgIGJvZHkgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdOwotCi0gICAgaWYgKCAhYm9keSApIHsKLSAg
ICAvLyBSZXR1cm4gZm9yIGZyYW1lc2V0IGRvY3MgdGhhdCBkb24ndCBoYXZlIGEgYm9keQotICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJkaXYiKTsKLSAgICBjb250YWluZXIuc3R5bGUuY3NzVGV4dCA9ICJib3JkZXI6MDt3aWR0aDow
O2hlaWdodDowO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6LTk5OTlweDttYXJnaW4tdG9w
OjFweCI7Ci0KLSAgICBib2R5LmFwcGVuZENoaWxkKCBjb250YWluZXIgKS5hcHBlbmRDaGlsZCgg
ZGl2ICk7Ci0KLSAgICAvLyBTdXBwb3J0OiBJRTgKLSAgICAvLyBDaGVjayBpZiB0YWJsZSBjZWxs
cyBzdGlsbCBoYXZlIG9mZnNldFdpZHRoL0hlaWdodCB3aGVuIHRoZXkgYXJlIHNldAotICAgIC8v
IHRvIGRpc3BsYXk6bm9uZSBhbmQgdGhlcmUgYXJlIHN0aWxsIG90aGVyIHZpc2libGUgdGFibGUg
Y2VsbHMgaW4gYQotICAgIC8vIHRhYmxlIHJvdzsgaWYgc28sIG9mZnNldFdpZHRoL0hlaWdodCBh
cmUgbm90IHJlbGlhYmxlIGZvciB1c2Ugd2hlbgotICAgIC8vIGRldGVybWluaW5nIGlmIGFuIGVs
ZW1lbnQgaGFzIGJlZW4gaGlkZGVuIGRpcmVjdGx5IHVzaW5nCi0gICAgLy8gZGlzcGxheTpub25l
IChpdCBpcyBzdGlsbCBzYWZlIHRvIHVzZSBvZmZzZXRzIGlmIGEgcGFyZW50IGVsZW1lbnQgaXMK
LSAgICAvLyBoaWRkZW47IGRvbiBzYWZldHkgZ29nZ2xlcyBhbmQgc2VlIGJ1ZyAjNDUxMiBmb3Ig
bW9yZSBpbmZvcm1hdGlvbikuCi0gICAgZGl2LmlubmVySFRNTCA9ICI8dGFibGU+PHRyPjx0ZD48
L3RkPjx0ZD50PC90ZD48L3RyPjwvdGFibGU+IjsKLSAgICB0ZHMgPSBkaXYuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRkIik7Ci0gICAgdGRzWyAwIF0uc3R5bGUuY3NzVGV4dCA9ICJwYWRkaW5nOjA7
bWFyZ2luOjA7Ym9yZGVyOjA7ZGlzcGxheTpub25lIjsKLSAgICBpc1N1cHBvcnRlZCA9ICggdGRz
WyAwIF0ub2Zmc2V0SGVpZ2h0ID09PSAwICk7Ci0KLSAgICB0ZHNbIDAgXS5zdHlsZS5kaXNwbGF5
ID0gIiI7Ci0gICAgdGRzWyAxIF0uc3R5bGUuZGlzcGxheSA9ICJub25lIjsKLQotICAgIC8vIFN1
cHBvcnQ6IElFOAotICAgIC8vIENoZWNrIGlmIGVtcHR5IHRhYmxlIGNlbGxzIHN0aWxsIGhhdmUg
b2Zmc2V0V2lkdGgvSGVpZ2h0Ci0gICAgc3VwcG9ydC5yZWxpYWJsZUhpZGRlbk9mZnNldHMgPSBp
c1N1cHBvcnRlZCAmJiAoIHRkc1sgMCBdLm9mZnNldEhlaWdodCA9PT0gMCApOwotCi0gICAgLy8g
Q2hlY2sgYm94LXNpemluZyBhbmQgbWFyZ2luIGJlaGF2aW9yCi0gICAgZGl2LmlubmVySFRNTCA9
ICIiOwotICAgIGRpdi5zdHlsZS5jc3NUZXh0ID0gImJveC1zaXppbmc6Ym9yZGVyLWJveDstbW96
LWJveC1zaXppbmc6Ym9yZGVyLWJveDstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDtwYWRk
aW5nOjFweDtib3JkZXI6MXB4O2Rpc3BsYXk6YmxvY2s7d2lkdGg6NHB4O21hcmdpbi10b3A6MSU7
cG9zaXRpb246YWJzb2x1dGU7dG9wOjElOyI7Ci0gICAgc3VwcG9ydC5ib3hTaXppbmcgPSAoIGRp
di5vZmZzZXRXaWR0aCA9PT0gNCApOwotICAgIHN1cHBvcnQuZG9lc05vdEluY2x1ZGVNYXJnaW5J
bkJvZHlPZmZzZXQgPSAoIGJvZHkub2Zmc2V0VG9wICE9PSAxICk7Ci0KLSAgICAvLyBVc2Ugd2lu
ZG93LmdldENvbXB1dGVkU3R5bGUgYmVjYXVzZSBqc2RvbSBvbiBub2RlLmpzIHdpbGwgYnJlYWsg
d2l0aG91dCBpdC4KLSAgICBpZiAoIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlICkgewotICAgIHN1
cHBvcnQucGl4ZWxQb3NpdGlvbiA9ICggd2luZG93LmdldENvbXB1dGVkU3R5bGUoIGRpdiwgbnVs
bCApIHx8IHt9ICkudG9wICE9PSAiMSUiOwotICAgIHN1cHBvcnQuYm94U2l6aW5nUmVsaWFibGUg
PSAoIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKCBkaXYsIG51bGwgKSB8fCB7IHdpZHRoOiAiNHB4
IiB9ICkud2lkdGggPT09ICI0cHgiOwotCi0gICAgLy8gQ2hlY2sgaWYgZGl2IHdpdGggZXhwbGlj
aXQgd2lkdGggYW5kIG5vIG1hcmdpbi1yaWdodCBpbmNvcnJlY3RseQotICAgIC8vIGdldHMgY29t
cHV0ZWQgbWFyZ2luLXJpZ2h0IGJhc2VkIG9uIHdpZHRoIG9mIGNvbnRhaW5lci4gKCMzMzMzKQot
ICAgIC8vIEZhaWxzIGluIFdlYktpdCBiZWZvcmUgRmViIDIwMTEgbmlnaHRsaWVzCi0gICAgLy8g
V2ViS2l0IEJ1ZyAxMzM0MyAtIGdldENvbXB1dGVkU3R5bGUgcmV0dXJucyB3cm9uZyB2YWx1ZSBm
b3IgbWFyZ2luLXJpZ2h0Ci0gICAgbWFyZ2luRGl2ID0gZGl2LmFwcGVuZENoaWxkKCBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKSApOwotICAgIG1hcmdpbkRpdi5zdHlsZS5jc3NUZXh0ID0g
ZGl2LnN0eWxlLmNzc1RleHQgPSBkaXZSZXNldDsKLSAgICBtYXJnaW5EaXYuc3R5bGUubWFyZ2lu
UmlnaHQgPSBtYXJnaW5EaXYuc3R5bGUud2lkdGggPSAiMCI7Ci0gICAgZGl2LnN0eWxlLndpZHRo
ID0gIjFweCI7Ci0KLSAgICBzdXBwb3J0LnJlbGlhYmxlTWFyZ2luUmlnaHQgPQotICAgICFwYXJz
ZUZsb2F0KCAoIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKCBtYXJnaW5EaXYsIG51bGwgKSB8fCB7
fSApLm1hcmdpblJpZ2h0ICk7Ci0gICAgfQotCi0gICAgaWYgKCB0eXBlb2YgZGl2LnN0eWxlLnpv
b20gIT09IGNvcmVfc3RydW5kZWZpbmVkICkgewotICAgIC8vIFN1cHBvcnQ6IElFPDgKLSAgICAv
LyBDaGVjayBpZiBuYXRpdmVseSBibG9jay1sZXZlbCBlbGVtZW50cyBhY3QgbGlrZSBpbmxpbmUt
YmxvY2sKLSAgICAvLyBlbGVtZW50cyB3aGVuIHNldHRpbmcgdGhlaXIgZGlzcGxheSB0byAnaW5s
aW5lJyBhbmQgZ2l2aW5nCi0gICAgLy8gdGhlbSBsYXlvdXQKLSAgICBkaXYuaW5uZXJIVE1MID0g
IiI7Ci0gICAgZGl2LnN0eWxlLmNzc1RleHQgPSBkaXZSZXNldCArICJ3aWR0aDoxcHg7cGFkZGlu
ZzoxcHg7ZGlzcGxheTppbmxpbmU7em9vbToxIjsKLSAgICBzdXBwb3J0LmlubGluZUJsb2NrTmVl
ZHNMYXlvdXQgPSAoIGRpdi5vZmZzZXRXaWR0aCA9PT0gMyApOwotCi0gICAgLy8gU3VwcG9ydDog
SUU2Ci0gICAgLy8gQ2hlY2sgaWYgZWxlbWVudHMgd2l0aCBsYXlvdXQgc2hyaW5rLXdyYXAgdGhl
aXIgY2hpbGRyZW4KLSAgICBkaXYuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7Ci0gICAgZGl2Lmlu
bmVySFRNTCA9ICI8ZGl2PjwvZGl2PiI7Ci0gICAgZGl2LmZpcnN0Q2hpbGQuc3R5bGUud2lkdGgg
PSAiNXB4IjsKLSAgICBzdXBwb3J0LnNocmlua1dyYXBCbG9ja3MgPSAoIGRpdi5vZmZzZXRXaWR0
aCAhPT0gMyApOwotCi0gICAgaWYgKCBzdXBwb3J0LmlubGluZUJsb2NrTmVlZHNMYXlvdXQgKSB7
Ci0gICAgLy8gUHJldmVudCBJRSA2IGZyb20gYWZmZWN0aW5nIGxheW91dCBmb3IgcG9zaXRpb25l
ZCBlbGVtZW50cyAjMTEwNDgKLSAgICAvLyBQcmV2ZW50IElFIGZyb20gc2hyaW5raW5nIHRoZSBi
b2R5IGluIElFIDcgbW9kZSAjMTI4NjkKLSAgICAvLyBTdXBwb3J0OiBJRTw4Ci0gICAgYm9keS5z
dHlsZS56b29tID0gMTsKLSAgICB9Ci0gICAgfQotCi0gICAgYm9keS5yZW1vdmVDaGlsZCggY29u
dGFpbmVyICk7Ci0KLSAgICAvLyBOdWxsIGVsZW1lbnRzIHRvIGF2b2lkIGxlYWtzIGluIElFCi0g
ICAgY29udGFpbmVyID0gZGl2ID0gdGRzID0gbWFyZ2luRGl2ID0gbnVsbDsKLSAgICB9KTsKLQot
ICAgIC8vIE51bGwgZWxlbWVudHMgdG8gYXZvaWQgbGVha3MgaW4gSUUKLSAgICBhbGwgPSBzZWxl
Y3QgPSBmcmFnbWVudCA9IG9wdCA9IGEgPSBpbnB1dCA9IG51bGw7Ci0KLSAgICByZXR1cm4gc3Vw
cG9ydDsKLX0pKCk7Ci0KLXZhciByYnJhY2UgPSAvKD86XHtbXHNcU10qXH18XFtbXHNcU10qXF0p
JC8sCi0gICAgcm11bHRpRGFzaCA9IC8oW0EtWl0pL2c7Ci0KLWZ1bmN0aW9uIGludGVybmFsRGF0
YSggZWxlbSwgbmFtZSwgZGF0YSwgcHZ0IC8qIEludGVybmFsIFVzZSBPbmx5ICovICl7Ci0gICAg
aWYgKCAhalF1ZXJ5LmFjY2VwdERhdGEoIGVsZW0gKSApIHsKLSAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgdmFyIHRoaXNDYWNoZSwgcmV0LAotICAgIGludGVybmFsS2V5ID0galF1ZXJ5LmV4cGFu
ZG8sCi0gICAgZ2V0QnlOYW1lID0gdHlwZW9mIG5hbWUgPT09ICJzdHJpbmciLAotCi0gICAgLy8g
V2UgaGF2ZSB0byBoYW5kbGUgRE9NIG5vZGVzIGFuZCBKUyBvYmplY3RzIGRpZmZlcmVudGx5IGJl
Y2F1c2UgSUU2LTcKLSAgICAvLyBjYW4ndCBHQyBvYmplY3QgcmVmZXJlbmNlcyBwcm9wZXJseSBh
Y3Jvc3MgdGhlIERPTS1KUyBib3VuZGFyeQotICAgIGlzTm9kZSA9IGVsZW0ubm9kZVR5cGUsCi0K
LSAgICAvLyBPbmx5IERPTSBub2RlcyBuZWVkIHRoZSBnbG9iYWwgalF1ZXJ5IGNhY2hlOyBKUyBv
YmplY3QgZGF0YSBpcwotICAgIC8vIGF0dGFjaGVkIGRpcmVjdGx5IHRvIHRoZSBvYmplY3Qgc28g
R0MgY2FuIG9jY3VyIGF1dG9tYXRpY2FsbHkKLSAgICBjYWNoZSA9IGlzTm9kZSA/IGpRdWVyeS5j
YWNoZSA6IGVsZW0sCi0KLSAgICAvLyBPbmx5IGRlZmluaW5nIGFuIElEIGZvciBKUyBvYmplY3Rz
IGlmIGl0cyBjYWNoZSBhbHJlYWR5IGV4aXN0cyBhbGxvd3MKLSAgICAvLyB0aGUgY29kZSB0byBz
aG9ydGN1dCBvbiB0aGUgc2FtZSBwYXRoIGFzIGEgRE9NIG5vZGUgd2l0aCBubyBjYWNoZQotICAg
IGlkID0gaXNOb2RlID8gZWxlbVsgaW50ZXJuYWxLZXkgXSA6IGVsZW1bIGludGVybmFsS2V5IF0g
JiYgaW50ZXJuYWxLZXk7Ci0KLSAgICAvLyBBdm9pZCBkb2luZyBhbnkgbW9yZSB3b3JrIHRoYW4g
d2UgbmVlZCB0byB3aGVuIHRyeWluZyB0byBnZXQgZGF0YSBvbiBhbgotICAgIC8vIG9iamVjdCB0
aGF0IGhhcyBubyBkYXRhIGF0IGFsbAotICAgIGlmICggKCFpZCB8fCAhY2FjaGVbaWRdIHx8ICgh
cHZ0ICYmICFjYWNoZVtpZF0uZGF0YSkpICYmIGdldEJ5TmFtZSAmJiBkYXRhID09PSB1bmRlZmlu
ZWQgKSB7Ci0gICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICggIWlkICkgewotICAgIC8vIE9u
bHkgRE9NIG5vZGVzIG5lZWQgYSBuZXcgdW5pcXVlIElEIGZvciBlYWNoIGVsZW1lbnQgc2luY2Ug
dGhlaXIgZGF0YQotICAgIC8vIGVuZHMgdXAgaW4gdGhlIGdsb2JhbCBjYWNoZQotICAgIGlmICgg
aXNOb2RlICkgewotICAgIGVsZW1bIGludGVybmFsS2V5IF0gPSBpZCA9IGNvcmVfZGVsZXRlZElk
cy5wb3AoKSB8fCBqUXVlcnkuZ3VpZCsrOwotICAgIH0gZWxzZSB7Ci0gICAgaWQgPSBpbnRlcm5h
bEtleTsKLSAgICB9Ci0gICAgfQotCi0gICAgaWYgKCAhY2FjaGVbIGlkIF0gKSB7Ci0gICAgY2Fj
aGVbIGlkIF0gPSB7fTsKLQotICAgIC8vIEF2b2lkcyBleHBvc2luZyBqUXVlcnkgbWV0YWRhdGEg
b24gcGxhaW4gSlMgb2JqZWN0cyB3aGVuIHRoZSBvYmplY3QKLSAgICAvLyBpcyBzZXJpYWxpemVk
IHVzaW5nIEpTT04uc3RyaW5naWZ5Ci0gICAgaWYgKCAhaXNOb2RlICkgewotICAgIGNhY2hlWyBp
ZCBdLnRvSlNPTiA9IGpRdWVyeS5ub29wOwotICAgIH0KLSAgICB9Ci0KLSAgICAvLyBBbiBvYmpl
Y3QgY2FuIGJlIHBhc3NlZCB0byBqUXVlcnkuZGF0YSBpbnN0ZWFkIG9mIGEga2V5L3ZhbHVlIHBh
aXI7IHRoaXMgZ2V0cwotICAgIC8vIHNoYWxsb3cgY29waWVkIG92ZXIgb250byB0aGUgZXhpc3Rp
bmcgY2FjaGUKLSAgICBpZiAoIHR5cGVvZiBuYW1lID09PSAib2JqZWN0IiB8fCB0eXBlb2YgbmFt
ZSA9PT0gImZ1bmN0aW9uIiApIHsKLSAgICBpZiAoIHB2dCApIHsKLSAgICBjYWNoZVsgaWQgXSA9
IGpRdWVyeS5leHRlbmQoIGNhY2hlWyBpZCBdLCBuYW1lICk7Ci0gICAgfSBlbHNlIHsKLSAgICBj
YWNoZVsgaWQgXS5kYXRhID0galF1ZXJ5LmV4dGVuZCggY2FjaGVbIGlkIF0uZGF0YSwgbmFtZSAp
OwotICAgIH0KLSAgICB9Ci0KLSAgICB0aGlzQ2FjaGUgPSBjYWNoZVsgaWQgXTsKLQotICAgIC8v
IGpRdWVyeSBkYXRhKCkgaXMgc3RvcmVkIGluIGEgc2VwYXJhdGUgb2JqZWN0IGluc2lkZSB0aGUg
b2JqZWN0J3MgaW50ZXJuYWwgZGF0YQotICAgIC8vIGNhY2hlIGluIG9yZGVyIHRvIGF2b2lkIGtl
eSBjb2xsaXNpb25zIGJldHdlZW4gaW50ZXJuYWwgZGF0YSBhbmQgdXNlci1kZWZpbmVkCi0gICAg
Ly8gZGF0YS4KLSAgICBpZiAoICFwdnQgKSB7Ci0gICAgaWYgKCAhdGhpc0NhY2hlLmRhdGEgKSB7
Ci0gICAgdGhpc0NhY2hlLmRhdGEgPSB7fTsKLSAgICB9Ci0KLSAgICB0aGlzQ2FjaGUgPSB0aGlz
Q2FjaGUuZGF0YTsKLSAgICB9Ci0KLSAgICBpZiAoIGRhdGEgIT09IHVuZGVmaW5lZCApIHsKLSAg
ICB0aGlzQ2FjaGVbIGpRdWVyeS5jYW1lbENhc2UoIG5hbWUgKSBdID0gZGF0YTsKLSAgICB9Ci0K
LSAgICAvLyBDaGVjayBmb3IgYm90aCBjb252ZXJ0ZWQtdG8tY2FtZWwgYW5kIG5vbi1jb252ZXJ0
ZWQgZGF0YSBwcm9wZXJ0eSBuYW1lcwotICAgIC8vIElmIGEgZGF0YSBwcm9wZXJ0eSB3YXMgc3Bl
Y2lmaWVkCi0gICAgaWYgKCBnZXRCeU5hbWUgKSB7Ci0KLSAgICAvLyBGaXJzdCBUcnkgdG8gZmlu
ZCBhcy1pcyBwcm9wZXJ0eSBkYXRhCi0gICAgcmV0ID0gdGhpc0NhY2hlWyBuYW1lIF07Ci0KLSAg
ICAvLyBUZXN0IGZvciBudWxsfHVuZGVmaW5lZCBwcm9wZXJ0eSBkYXRhCi0gICAgaWYgKCByZXQg
PT0gbnVsbCApIHsKLQotICAgIC8vIFRyeSB0byBmaW5kIHRoZSBjYW1lbENhc2VkIHByb3BlcnR5
Ci0gICAgcmV0ID0gdGhpc0NhY2hlWyBqUXVlcnkuY2FtZWxDYXNlKCBuYW1lICkgXTsKLSAgICB9
Ci0gICAgfSBlbHNlIHsKLSAgICByZXQgPSB0aGlzQ2FjaGU7Ci0gICAgfQotCi0gICAgcmV0dXJu
IHJldDsKLX0KLQotZnVuY3Rpb24gaW50ZXJuYWxSZW1vdmVEYXRhKCBlbGVtLCBuYW1lLCBwdnQg
KSB7Ci0gICAgaWYgKCAhalF1ZXJ5LmFjY2VwdERhdGEoIGVsZW0gKSApIHsKLSAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgdmFyIGksIGwsIHRoaXNDYWNoZSwKLSAgICBpc05vZGUgPSBlbGVtLm5v
ZGVUeXBlLAotCi0gICAgLy8gU2VlIGpRdWVyeS5kYXRhIGZvciBtb3JlIGluZm9ybWF0aW9uCi0g
ICAgY2FjaGUgPSBpc05vZGUgPyBqUXVlcnkuY2FjaGUgOiBlbGVtLAotICAgIGlkID0gaXNOb2Rl
ID8gZWxlbVsgalF1ZXJ5LmV4cGFuZG8gXSA6IGpRdWVyeS5leHBhbmRvOwotCi0gICAgLy8gSWYg
dGhlcmUgaXMgYWxyZWFkeSBubyBjYWNoZSBlbnRyeSBmb3IgdGhpcyBvYmplY3QsIHRoZXJlIGlz
IG5vCi0gICAgLy8gcHVycG9zZSBpbiBjb250aW51aW5nCi0gICAgaWYgKCAhY2FjaGVbIGlkIF0g
KSB7Ci0gICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICggbmFtZSApIHsKLQotICAgIHRoaXND
YWNoZSA9IHB2dCA/IGNhY2hlWyBpZCBdIDogY2FjaGVbIGlkIF0uZGF0YTsKLQotICAgIGlmICgg
dGhpc0NhY2hlICkgewotCi0gICAgLy8gU3VwcG9ydCBhcnJheSBvciBzcGFjZSBzZXBhcmF0ZWQg
c3RyaW5nIG5hbWVzIGZvciBkYXRhIGtleXMKLSAgICBpZiAoICFqUXVlcnkuaXNBcnJheSggbmFt
ZSApICkgewotCi0gICAgLy8gdHJ5IHRoZSBzdHJpbmcgYXMgYSBrZXkgYmVmb3JlIGFueSBtYW5p
cHVsYXRpb24KLSAgICBpZiAoIG5hbWUgaW4gdGhpc0NhY2hlICkgewotICAgIG5hbWUgPSBbIG5h
bWUgXTsKLSAgICB9IGVsc2UgewotCi0gICAgLy8gc3BsaXQgdGhlIGNhbWVsIGNhc2VkIHZlcnNp
b24gYnkgc3BhY2VzIHVubGVzcyBhIGtleSB3aXRoIHRoZSBzcGFjZXMgZXhpc3RzCi0gICAgbmFt
ZSA9IGpRdWVyeS5jYW1lbENhc2UoIG5hbWUgKTsKLSAgICBpZiAoIG5hbWUgaW4gdGhpc0NhY2hl
ICkgewotICAgIG5hbWUgPSBbIG5hbWUgXTsKLSAgICB9IGVsc2UgewotICAgIG5hbWUgPSBuYW1l
LnNwbGl0KCIgIik7Ci0gICAgfQotICAgIH0KLSAgICB9IGVsc2UgewotICAgIC8vIElmICJuYW1l
IiBpcyBhbiBhcnJheSBvZiBrZXlzLi4uCi0gICAgLy8gV2hlbiBkYXRhIGlzIGluaXRpYWxseSBj
cmVhdGVkLCB2aWEgKCJrZXkiLCAidmFsIikgc2lnbmF0dXJlLAotICAgIC8vIGtleXMgd2lsbCBi
ZSBjb252ZXJ0ZWQgdG8gY2FtZWxDYXNlLgotICAgIC8vIFNpbmNlIHRoZXJlIGlzIG5vIHdheSB0
byB0ZWxsIF9ob3dfIGEga2V5IHdhcyBhZGRlZCwgcmVtb3ZlCi0gICAgLy8gYm90aCBwbGFpbiBr
ZXkgYW5kIGNhbWVsQ2FzZSBrZXkuICMxMjc4NgotICAgIC8vIFRoaXMgd2lsbCBvbmx5IHBlbmFs
aXplIHRoZSBhcnJheSBhcmd1bWVudCBwYXRoLgotICAgIG5hbWUgPSBuYW1lLmNvbmNhdCggalF1
ZXJ5Lm1hcCggbmFtZSwgalF1ZXJ5LmNhbWVsQ2FzZSApICk7Ci0gICAgfQotCi0gICAgZm9yICgg
aSA9IDAsIGwgPSBuYW1lLmxlbmd0aDsgaSA8IGw7IGkrKyApIHsKLSAgICBkZWxldGUgdGhpc0Nh
Y2hlWyBuYW1lW2ldIF07Ci0gICAgfQotCi0gICAgLy8gSWYgdGhlcmUgaXMgbm8gZGF0YSBsZWZ0
IGluIHRoZSBjYWNoZSwgd2Ugd2FudCB0byBjb250aW51ZQotICAgIC8vIGFuZCBsZXQgdGhlIGNh
Y2hlIG9iamVjdCBpdHNlbGYgZ2V0IGRlc3Ryb3llZAotICAgIGlmICggISggcHZ0ID8gaXNFbXB0
eURhdGFPYmplY3QgOiBqUXVlcnkuaXNFbXB0eU9iamVjdCApKCB0aGlzQ2FjaGUgKSApIHsKLSAg
ICByZXR1cm47Ci0gICAgfQotICAgIH0KLSAgICB9Ci0KLSAgICAvLyBTZWUgalF1ZXJ5LmRhdGEg
Zm9yIG1vcmUgaW5mb3JtYXRpb24KLSAgICBpZiAoICFwdnQgKSB7Ci0gICAgZGVsZXRlIGNhY2hl
WyBpZCBdLmRhdGE7Ci0KLSAgICAvLyBEb24ndCBkZXN0cm95IHRoZSBwYXJlbnQgY2FjaGUgdW5s
ZXNzIHRoZSBpbnRlcm5hbCBkYXRhIG9iamVjdAotICAgIC8vIGhhZCBiZWVuIHRoZSBvbmx5IHRo
aW5nIGxlZnQgaW4gaXQKLSAgICBpZiAoICFpc0VtcHR5RGF0YU9iamVjdCggY2FjaGVbIGlkIF0g
KSApIHsKLSAgICByZXR1cm47Ci0gICAgfQotICAgIH0KLQotICAgIC8vIERlc3Ryb3kgdGhlIGNh
Y2hlCi0gICAgaWYgKCBpc05vZGUgKSB7Ci0gICAgalF1ZXJ5LmNsZWFuRGF0YSggWyBlbGVtIF0s
IHRydWUgKTsKLQotICAgIC8vIFVzZSBkZWxldGUgd2hlbiBzdXBwb3J0ZWQgZm9yIGV4cGFuZG9z
IG9yIGBjYWNoZWAgaXMgbm90IGEgd2luZG93IHBlciBpc1dpbmRvdyAoIzEwMDgwKQotICAgIH0g
ZWxzZSBpZiAoIGpRdWVyeS5zdXBwb3J0LmRlbGV0ZUV4cGFuZG8gfHwgY2FjaGUgIT0gY2FjaGUu
d2luZG93ICkgewotICAgIGRlbGV0ZSBjYWNoZVsgaWQgXTsKLQotICAgIC8vIFdoZW4gYWxsIGVs
c2UgZmFpbHMsIG51bGwKLSAgICB9IGVsc2UgewotICAgIGNhY2hlWyBpZCBdID0gbnVsbDsKLSAg
ICB9Ci19Ci0KLWpRdWVyeS5leHRlbmQoewotICAgIGNhY2hlOiB7fSwKLQotICAgIC8vIFVuaXF1
ZSBmb3IgZWFjaCBjb3B5IG9mIGpRdWVyeSBvbiB0aGUgcGFnZQotICAgIC8vIE5vbi1kaWdpdHMg
cmVtb3ZlZCB0byBtYXRjaCByaW5saW5lalF1ZXJ5Ci0gICAgZXhwYW5kbzogImpRdWVyeSIgKyAo
IGNvcmVfdmVyc2lvbiArIE1hdGgucmFuZG9tKCkgKS5yZXBsYWNlKCAvXEQvZywgIiIgKSwKLQot
ICAgIC8vIFRoZSBmb2xsb3dpbmcgZWxlbWVudHMgdGhyb3cgdW5jYXRjaGFibGUgZXhjZXB0aW9u
cyBpZiB5b3UKLSAgICAvLyBhdHRlbXB0IHRvIGFkZCBleHBhbmRvIHByb3BlcnRpZXMgdG8gdGhl
bS4KLSAgICBub0RhdGE6IHsKLSAgICAiZW1iZWQiOiB0cnVlLAotICAgIC8vIEJhbiBhbGwgb2Jq
ZWN0cyBleGNlcHQgZm9yIEZsYXNoICh3aGljaCBoYW5kbGUgZXhwYW5kb3MpCi0gICAgIm9iamVj
dCI6ICJjbHNpZDpEMjdDREI2RS1BRTZELTExY2YtOTZCOC00NDQ1NTM1NDAwMDAiLAotICAgICJh
cHBsZXQiOiB0cnVlCi0gICAgfSwKLQotICAgIGhhc0RhdGE6IGZ1bmN0aW9uKCBlbGVtICkgewot
ICAgIGVsZW0gPSBlbGVtLm5vZGVUeXBlID8galF1ZXJ5LmNhY2hlWyBlbGVtW2pRdWVyeS5leHBh
bmRvXSBdIDogZWxlbVsgalF1ZXJ5LmV4cGFuZG8gXTsKLSAgICByZXR1cm4gISFlbGVtICYmICFp
c0VtcHR5RGF0YU9iamVjdCggZWxlbSApOwotICAgIH0sCi0KLSAgICBkYXRhOiBmdW5jdGlvbigg
ZWxlbSwgbmFtZSwgZGF0YSApIHsKLSAgICByZXR1cm4gaW50ZXJuYWxEYXRhKCBlbGVtLCBuYW1l
LCBkYXRhICk7Ci0gICAgfSwKLQotICAgIHJlbW92ZURhdGE6IGZ1bmN0aW9uKCBlbGVtLCBuYW1l
ICkgewotICAgIHJldHVybiBpbnRlcm5hbFJlbW92ZURhdGEoIGVsZW0sIG5hbWUgKTsKLSAgICB9
LAotCi0gICAgLy8gRm9yIGludGVybmFsIHVzZSBvbmx5LgotICAgIF9kYXRhOiBmdW5jdGlvbigg
ZWxlbSwgbmFtZSwgZGF0YSApIHsKLSAgICByZXR1cm4gaW50ZXJuYWxEYXRhKCBlbGVtLCBuYW1l
LCBkYXRhLCB0cnVlICk7Ci0gICAgfSwKLQotICAgIF9yZW1vdmVEYXRhOiBmdW5jdGlvbiggZWxl
bSwgbmFtZSApIHsKLSAgICByZXR1cm4gaW50ZXJuYWxSZW1vdmVEYXRhKCBlbGVtLCBuYW1lLCB0
cnVlICk7Ci0gICAgfSwKLQotICAgIC8vIEEgbWV0aG9kIGZvciBkZXRlcm1pbmluZyBpZiBhIERP
TSBub2RlIGNhbiBoYW5kbGUgdGhlIGRhdGEgZXhwYW5kbwotICAgIGFjY2VwdERhdGE6IGZ1bmN0
aW9uKCBlbGVtICkgewotICAgIC8vIERvIG5vdCBzZXQgZGF0YSBvbiBub24tZWxlbWVudCBiZWNh
dXNlIGl0IHdpbGwgbm90IGJlIGNsZWFyZWQgKCM4MzM1KS4KLSAgICBpZiAoIGVsZW0ubm9kZVR5
cGUgJiYgZWxlbS5ub2RlVHlwZSAhPT0gMSAmJiBlbGVtLm5vZGVUeXBlICE9PSA5ICkgewotICAg
IHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICB2YXIgbm9EYXRhID0gZWxlbS5ub2RlTmFtZSAm
JiBqUXVlcnkubm9EYXRhWyBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgXTsKLQotICAgIC8v
IG5vZGVzIGFjY2VwdCBkYXRhIHVubGVzcyBvdGhlcndpc2Ugc3BlY2lmaWVkOyByZWplY3Rpb24g
Y2FuIGJlIGNvbmRpdGlvbmFsCi0gICAgcmV0dXJuICFub0RhdGEgfHwgbm9EYXRhICE9PSB0cnVl
ICYmIGVsZW0uZ2V0QXR0cmlidXRlKCJjbGFzc2lkIikgPT09IG5vRGF0YTsKLSAgICB9Ci19KTsK
LQotalF1ZXJ5LmZuLmV4dGVuZCh7Ci0gICAgZGF0YTogZnVuY3Rpb24oIGtleSwgdmFsdWUgKSB7
Ci0gICAgdmFyIGF0dHJzLCBuYW1lLAotICAgIGVsZW0gPSB0aGlzWzBdLAotICAgIGkgPSAwLAot
ICAgIGRhdGEgPSBudWxsOwotCi0gICAgLy8gR2V0cyBhbGwgdmFsdWVzCi0gICAgaWYgKCBrZXkg
PT09IHVuZGVmaW5lZCApIHsKLSAgICBpZiAoIHRoaXMubGVuZ3RoICkgewotICAgIGRhdGEgPSBq
UXVlcnkuZGF0YSggZWxlbSApOwotCi0gICAgaWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICYmICFq
UXVlcnkuX2RhdGEoIGVsZW0sICJwYXJzZWRBdHRycyIgKSApIHsKLSAgICBhdHRycyA9IGVsZW0u
YXR0cmlidXRlczsKLSAgICBmb3IgKCA7IGkgPCBhdHRycy5sZW5ndGg7IGkrKyApIHsKLSAgICBu
YW1lID0gYXR0cnNbaV0ubmFtZTsKLQotICAgIGlmICggIW5hbWUuaW5kZXhPZiggImRhdGEtIiAp
ICkgewotICAgIG5hbWUgPSBqUXVlcnkuY2FtZWxDYXNlKCBuYW1lLnNsaWNlKDUpICk7Ci0KLSAg
ICBkYXRhQXR0ciggZWxlbSwgbmFtZSwgZGF0YVsgbmFtZSBdICk7Ci0gICAgfQotICAgIH0KLSAg
ICBqUXVlcnkuX2RhdGEoIGVsZW0sICJwYXJzZWRBdHRycyIsIHRydWUgKTsKLSAgICB9Ci0gICAg
fQotCi0gICAgcmV0dXJuIGRhdGE7Ci0gICAgfQotCi0gICAgLy8gU2V0cyBtdWx0aXBsZSB2YWx1
ZXMKLSAgICBpZiAoIHR5cGVvZiBrZXkgPT09ICJvYmplY3QiICkgewotICAgIHJldHVybiB0aGlz
LmVhY2goZnVuY3Rpb24oKSB7Ci0gICAgalF1ZXJ5LmRhdGEoIHRoaXMsIGtleSApOwotICAgIH0p
OwotICAgIH0KLQotICAgIHJldHVybiBqUXVlcnkuYWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggdmFs
dWUgKSB7Ci0KLSAgICBpZiAoIHZhbHVlID09PSB1bmRlZmluZWQgKSB7Ci0gICAgLy8gVHJ5IHRv
IGZldGNoIGFueSBpbnRlcm5hbGx5IHN0b3JlZCBkYXRhIGZpcnN0Ci0gICAgcmV0dXJuIGVsZW0g
PyBkYXRhQXR0ciggZWxlbSwga2V5LCBqUXVlcnkuZGF0YSggZWxlbSwga2V5ICkgKSA6IG51bGw7
Ci0gICAgfQotCi0gICAgdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewotICAgIGpRdWVyeS5kYXRhKCB0
aGlzLCBrZXksIHZhbHVlICk7Ci0gICAgfSk7Ci0gICAgfSwgbnVsbCwgdmFsdWUsIGFyZ3VtZW50
cy5sZW5ndGggPiAxLCBudWxsLCB0cnVlICk7Ci0gICAgfSwKLQotICAgIHJlbW92ZURhdGE6IGZ1
bmN0aW9uKCBrZXkgKSB7Ci0gICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKLSAgICBq
UXVlcnkucmVtb3ZlRGF0YSggdGhpcywga2V5ICk7Ci0gICAgfSk7Ci0gICAgfQotfSk7Ci0KLWZ1
bmN0aW9uIGRhdGFBdHRyKCBlbGVtLCBrZXksIGRhdGEgKSB7Ci0gICAgLy8gSWYgbm90aGluZyB3
YXMgZm91bmQgaW50ZXJuYWxseSwgdHJ5IHRvIGZldGNoIGFueQotICAgIC8vIGRhdGEgZnJvbSB0
aGUgSFRNTDUgZGF0YS0qIGF0dHJpYnV0ZQotICAgIGlmICggZGF0YSA9PT0gdW5kZWZpbmVkICYm
IGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7Ci0KLSAgICB2YXIgbmFtZSA9ICJkYXRhLSIgKyBrZXku
cmVwbGFjZSggcm11bHRpRGFzaCwgIi0kMSIgKS50b0xvd2VyQ2FzZSgpOwotCi0gICAgZGF0YSA9
IGVsZW0uZ2V0QXR0cmlidXRlKCBuYW1lICk7Ci0KLSAgICBpZiAoIHR5cGVvZiBkYXRhID09PSAi
c3RyaW5nIiApIHsKLSAgICB0cnkgewotICAgIGRhdGEgPSBkYXRhID09PSAidHJ1ZSIgPyB0cnVl
IDoKLSAgICBkYXRhID09PSAiZmFsc2UiID8gZmFsc2UgOgotICAgIGRhdGEgPT09ICJudWxsIiA/
IG51bGwgOgotICAgIC8vIE9ubHkgY29udmVydCB0byBhIG51bWJlciBpZiBpdCBkb2Vzbid0IGNo
YW5nZSB0aGUgc3RyaW5nCi0gICAgK2RhdGEgKyAiIiA9PT0gZGF0YSA/ICtkYXRhIDoKLSAgICBy
YnJhY2UudGVzdCggZGF0YSApID8galF1ZXJ5LnBhcnNlSlNPTiggZGF0YSApIDoKLSAgICBkYXRh
OwotICAgIH0gY2F0Y2goIGUgKSB7fQotCi0gICAgLy8gTWFrZSBzdXJlIHdlIHNldCB0aGUgZGF0
YSBzbyBpdCBpc24ndCBjaGFuZ2VkIGxhdGVyCi0gICAgalF1ZXJ5LmRhdGEoIGVsZW0sIGtleSwg
ZGF0YSApOwotCi0gICAgfSBlbHNlIHsKLSAgICBkYXRhID0gdW5kZWZpbmVkOwotICAgIH0KLSAg
ICB9Ci0KLSAgICByZXR1cm4gZGF0YTsKLX0KLQotLy8gY2hlY2tzIGEgY2FjaGUgb2JqZWN0IGZv
ciBlbXB0aW5lc3MKLWZ1bmN0aW9uIGlzRW1wdHlEYXRhT2JqZWN0KCBvYmogKSB7Ci0gICAgdmFy
IG5hbWU7Ci0gICAgZm9yICggbmFtZSBpbiBvYmogKSB7Ci0KLSAgICAvLyBpZiB0aGUgcHVibGlj
IGRhdGEgb2JqZWN0IGlzIGVtcHR5LCB0aGUgcHJpdmF0ZSBpcyBzdGlsbCBlbXB0eQotICAgIGlm
ICggbmFtZSA9PT0gImRhdGEiICYmIGpRdWVyeS5pc0VtcHR5T2JqZWN0KCBvYmpbbmFtZV0gKSAp
IHsKLSAgICBjb250aW51ZTsKLSAgICB9Ci0gICAgaWYgKCBuYW1lICE9PSAidG9KU09OIiApIHsK
LSAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQot
alF1ZXJ5LmV4dGVuZCh7Ci0gICAgcXVldWU6IGZ1bmN0aW9uKCBlbGVtLCB0eXBlLCBkYXRhICkg
ewotICAgIHZhciBxdWV1ZTsKLQotICAgIGlmICggZWxlbSApIHsKLSAgICB0eXBlID0gKCB0eXBl
IHx8ICJmeCIgKSArICJxdWV1ZSI7Ci0gICAgcXVldWUgPSBqUXVlcnkuX2RhdGEoIGVsZW0sIHR5
cGUgKTsKLQotICAgIC8vIFNwZWVkIHVwIGRlcXVldWUgYnkgZ2V0dGluZyBvdXQgcXVpY2tseSBp
ZiB0aGlzIGlzIGp1c3QgYSBsb29rdXAKLSAgICBpZiAoIGRhdGEgKSB7Ci0gICAgaWYgKCAhcXVl
dWUgfHwgalF1ZXJ5LmlzQXJyYXkoZGF0YSkgKSB7Ci0gICAgcXVldWUgPSBqUXVlcnkuX2RhdGEo
IGVsZW0sIHR5cGUsIGpRdWVyeS5tYWtlQXJyYXkoZGF0YSkgKTsKLSAgICB9IGVsc2UgewotICAg
IHF1ZXVlLnB1c2goIGRhdGEgKTsKLSAgICB9Ci0gICAgfQotICAgIHJldHVybiBxdWV1ZSB8fCBb
XTsKLSAgICB9Ci0gICAgfSwKLQotICAgIGRlcXVldWU6IGZ1bmN0aW9uKCBlbGVtLCB0eXBlICkg
ewotICAgIHR5cGUgPSB0eXBlIHx8ICJmeCI7Ci0KLSAgICB2YXIgcXVldWUgPSBqUXVlcnkucXVl
dWUoIGVsZW0sIHR5cGUgKSwKLSAgICBzdGFydExlbmd0aCA9IHF1ZXVlLmxlbmd0aCwKLSAgICBm
biA9IHF1ZXVlLnNoaWZ0KCksCi0gICAgaG9va3MgPSBqUXVlcnkuX3F1ZXVlSG9va3MoIGVsZW0s
IHR5cGUgKSwKLSAgICBuZXh0ID0gZnVuY3Rpb24oKSB7Ci0gICAgalF1ZXJ5LmRlcXVldWUoIGVs
ZW0sIHR5cGUgKTsKLSAgICB9OwotCi0gICAgLy8gSWYgdGhlIGZ4IHF1ZXVlIGlzIGRlcXVldWVk
LCBhbHdheXMgcmVtb3ZlIHRoZSBwcm9ncmVzcyBzZW50aW5lbAotICAgIGlmICggZm4gPT09ICJp
bnByb2dyZXNzIiApIHsKLSAgICBmbiA9IHF1ZXVlLnNoaWZ0KCk7Ci0gICAgc3RhcnRMZW5ndGgt
LTsKLSAgICB9Ci0KLSAgICBob29rcy5jdXIgPSBmbjsKLSAgICBpZiAoIGZuICkgewotCi0gICAg
Ly8gQWRkIGEgcHJvZ3Jlc3Mgc2VudGluZWwgdG8gcHJldmVudCB0aGUgZnggcXVldWUgZnJvbSBi
ZWluZwotICAgIC8vIGF1dG9tYXRpY2FsbHkgZGVxdWV1ZWQKLSAgICBpZiAoIHR5cGUgPT09ICJm
eCIgKSB7Ci0gICAgcXVldWUudW5zaGlmdCggImlucHJvZ3Jlc3MiICk7Ci0gICAgfQotCi0gICAg
Ly8gY2xlYXIgdXAgdGhlIGxhc3QgcXVldWUgc3RvcCBmdW5jdGlvbgotICAgIGRlbGV0ZSBob29r
cy5zdG9wOwotICAgIGZuLmNhbGwoIGVsZW0sIG5leHQsIGhvb2tzICk7Ci0gICAgfQotCi0gICAg
aWYgKCAhc3RhcnRMZW5ndGggJiYgaG9va3MgKSB7Ci0gICAgaG9va3MuZW1wdHkuZmlyZSgpOwot
ICAgIH0KLSAgICB9LAotCi0gICAgLy8gbm90IGludGVuZGVkIGZvciBwdWJsaWMgY29uc3VtcHRp
b24gLSBnZW5lcmF0ZXMgYSBxdWV1ZUhvb2tzIG9iamVjdCwgb3IgcmV0dXJucyB0aGUgY3VycmVu
dCBvbmUKLSAgICBfcXVldWVIb29rczogZnVuY3Rpb24oIGVsZW0sIHR5cGUgKSB7Ci0gICAgdmFy
IGtleSA9IHR5cGUgKyAicXVldWVIb29rcyI7Ci0gICAgcmV0dXJuIGpRdWVyeS5fZGF0YSggZWxl
bSwga2V5ICkgfHwgalF1ZXJ5Ll9kYXRhKCBlbGVtLCBrZXksIHsKLSAgICBlbXB0eTogalF1ZXJ5
LkNhbGxiYWNrcygib25jZSBtZW1vcnkiKS5hZGQoZnVuY3Rpb24oKSB7Ci0gICAgalF1ZXJ5Ll9y
ZW1vdmVEYXRhKCBlbGVtLCB0eXBlICsgInF1ZXVlIiApOwotICAgIGpRdWVyeS5fcmVtb3ZlRGF0
YSggZWxlbSwga2V5ICk7Ci0gICAgfSkKLSAgICB9KTsKLSAgICB9Ci19KTsKLQotalF1ZXJ5LmZu
LmV4dGVuZCh7Ci0gICAgcXVldWU6IGZ1bmN0aW9uKCB0eXBlLCBkYXRhICkgewotICAgIHZhciBz
ZXR0ZXIgPSAyOwotCi0gICAgaWYgKCB0eXBlb2YgdHlwZSAhPT0gInN0cmluZyIgKSB7Ci0gICAg
ZGF0YSA9IHR5cGU7Ci0gICAgdHlwZSA9ICJmeCI7Ci0gICAgc2V0dGVyLS07Ci0gICAgfQotCi0g
ICAgaWYgKCBhcmd1bWVudHMubGVuZ3RoIDwgc2V0dGVyICkgewotICAgIHJldHVybiBqUXVlcnku
cXVldWUoIHRoaXNbMF0sIHR5cGUgKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZGF0YSA9PT0gdW5k
ZWZpbmVkID8KLSAgICB0aGlzIDoKLSAgICB0aGlzLmVhY2goZnVuY3Rpb24oKSB7Ci0gICAgdmFy
IHF1ZXVlID0galF1ZXJ5LnF1ZXVlKCB0aGlzLCB0eXBlLCBkYXRhICk7Ci0KLSAgICAvLyBlbnN1
cmUgYSBob29rcyBmb3IgdGhpcyBxdWV1ZQotICAgIGpRdWVyeS5fcXVldWVIb29rcyggdGhpcywg
dHlwZSApOwotCi0gICAgaWYgKCB0eXBlID09PSAiZngiICYmIHF1ZXVlWzBdICE9PSAiaW5wcm9n
cmVzcyIgKSB7Ci0gICAgalF1ZXJ5LmRlcXVldWUoIHRoaXMsIHR5cGUgKTsKLSAgICB9Ci0gICAg
fSk7Ci0gICAgfSwKLSAgICBkZXF1ZXVlOiBmdW5jdGlvbiggdHlwZSApIHsKLSAgICByZXR1cm4g
dGhpcy5lYWNoKGZ1bmN0aW9uKCkgewotICAgIGpRdWVyeS5kZXF1ZXVlKCB0aGlzLCB0eXBlICk7
Ci0gICAgfSk7Ci0gICAgfSwKLSAgICAvLyBCYXNlZCBvZmYgb2YgdGhlIHBsdWdpbiBieSBDbGlu
dCBIZWxmZXJzLCB3aXRoIHBlcm1pc3Npb24uCi0gICAgLy8gaHR0cDovL2JsaW5kc2lnbmFscy5j
b20vaW5kZXgucGhwLzIwMDkvMDcvanF1ZXJ5LWRlbGF5LwotICAgIGRlbGF5OiBmdW5jdGlvbigg
dGltZSwgdHlwZSApIHsKLSAgICB0aW1lID0galF1ZXJ5LmZ4ID8galF1ZXJ5LmZ4LnNwZWVkc1sg
dGltZSBdIHx8IHRpbWUgOiB0aW1lOwotICAgIHR5cGUgPSB0eXBlIHx8ICJmeCI7Ci0KLSAgICBy
ZXR1cm4gdGhpcy5xdWV1ZSggdHlwZSwgZnVuY3Rpb24oIG5leHQsIGhvb2tzICkgewotICAgIHZh
ciB0aW1lb3V0ID0gc2V0VGltZW91dCggbmV4dCwgdGltZSApOwotICAgIGhvb2tzLnN0b3AgPSBm
dW5jdGlvbigpIHsKLSAgICBjbGVhclRpbWVvdXQoIHRpbWVvdXQgKTsKLSAgICB9OwotICAgIH0p
OwotICAgIH0sCi0gICAgY2xlYXJRdWV1ZTogZnVuY3Rpb24oIHR5cGUgKSB7Ci0gICAgcmV0dXJu
IHRoaXMucXVldWUoIHR5cGUgfHwgImZ4IiwgW10gKTsKLSAgICB9LAotICAgIC8vIEdldCBhIHBy
b21pc2UgcmVzb2x2ZWQgd2hlbiBxdWV1ZXMgb2YgYSBjZXJ0YWluIHR5cGUKLSAgICAvLyBhcmUg
ZW1wdGllZCAoZnggaXMgdGhlIHR5cGUgYnkgZGVmYXVsdCkKLSAgICBwcm9taXNlOiBmdW5jdGlv
biggdHlwZSwgb2JqICkgewotICAgIHZhciB0bXAsCi0gICAgY291bnQgPSAxLAotICAgIGRlZmVy
ID0galF1ZXJ5LkRlZmVycmVkKCksCi0gICAgZWxlbWVudHMgPSB0aGlzLAotICAgIGkgPSB0aGlz
Lmxlbmd0aCwKLSAgICByZXNvbHZlID0gZnVuY3Rpb24oKSB7Ci0gICAgaWYgKCAhKCAtLWNvdW50
ICkgKSB7Ci0gICAgZGVmZXIucmVzb2x2ZVdpdGgoIGVsZW1lbnRzLCBbIGVsZW1lbnRzIF0gKTsK
LSAgICB9Ci0gICAgfTsKLQotICAgIGlmICggdHlwZW9mIHR5cGUgIT09ICJzdHJpbmciICkgewot
ICAgIG9iaiA9IHR5cGU7Ci0gICAgdHlwZSA9IHVuZGVmaW5lZDsKLSAgICB9Ci0gICAgdHlwZSA9
IHR5cGUgfHwgImZ4IjsKLQotICAgIHdoaWxlKCBpLS0gKSB7Ci0gICAgdG1wID0galF1ZXJ5Ll9k
YXRhKCBlbGVtZW50c1sgaSBdLCB0eXBlICsgInF1ZXVlSG9va3MiICk7Ci0gICAgaWYgKCB0bXAg
JiYgdG1wLmVtcHR5ICkgewotICAgIGNvdW50Kys7Ci0gICAgdG1wLmVtcHR5LmFkZCggcmVzb2x2
ZSApOwotICAgIH0KLSAgICB9Ci0gICAgcmVzb2x2ZSgpOwotICAgIHJldHVybiBkZWZlci5wcm9t
aXNlKCBvYmogKTsKLSAgICB9Ci19KTsKLXZhciBub2RlSG9vaywgYm9vbEhvb2ssCi0gICAgcmNs
YXNzID0gL1tcdFxyXG5dL2csCi0gICAgcnJldHVybiA9IC9cci9nLAotICAgIHJmb2N1c2FibGUg
PSAvXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b258b2JqZWN0KSQvaSwKLSAgICByY2xp
Y2thYmxlID0gL14oPzphfGFyZWEpJC9pLAotICAgIHJib29sZWFuID0gL14oPzpjaGVja2VkfHNl
bGVjdGVkfGF1dG9mb2N1c3xhdXRvcGxheXxhc3luY3xjb250cm9sc3xkZWZlcnxkaXNhYmxlZHxo
aWRkZW58bG9vcHxtdWx0aXBsZXxvcGVufHJlYWRvbmx5fHJlcXVpcmVkfHNjb3BlZCkkL2ksCi0g
ICAgcnVzZURlZmF1bHQgPSAvXig/OmNoZWNrZWR8c2VsZWN0ZWQpJC9pLAotICAgIGdldFNldEF0
dHJpYnV0ZSA9IGpRdWVyeS5zdXBwb3J0LmdldFNldEF0dHJpYnV0ZSwKLSAgICBnZXRTZXRJbnB1
dCA9IGpRdWVyeS5zdXBwb3J0LmlucHV0OwotCi1qUXVlcnkuZm4uZXh0ZW5kKHsKLSAgICBhdHRy
OiBmdW5jdGlvbiggbmFtZSwgdmFsdWUgKSB7Ci0gICAgcmV0dXJuIGpRdWVyeS5hY2Nlc3MoIHRo
aXMsIGpRdWVyeS5hdHRyLCBuYW1lLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDEgKTsKLSAg
ICB9LAotCi0gICAgcmVtb3ZlQXR0cjogZnVuY3Rpb24oIG5hbWUgKSB7Ci0gICAgcmV0dXJuIHRo
aXMuZWFjaChmdW5jdGlvbigpIHsKLSAgICBqUXVlcnkucmVtb3ZlQXR0ciggdGhpcywgbmFtZSAp
OwotICAgIH0pOwotICAgIH0sCi0KLSAgICBwcm9wOiBmdW5jdGlvbiggbmFtZSwgdmFsdWUgKSB7
Ci0gICAgcmV0dXJuIGpRdWVyeS5hY2Nlc3MoIHRoaXMsIGpRdWVyeS5wcm9wLCBuYW1lLCB2YWx1
ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDEgKTsKLSAgICB9LAotCi0gICAgcmVtb3ZlUHJvcDogZnVu
Y3Rpb24oIG5hbWUgKSB7Ci0gICAgbmFtZSA9IGpRdWVyeS5wcm9wRml4WyBuYW1lIF0gfHwgbmFt
ZTsKLSAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewotICAgIC8vIHRyeS9jYXRjaCBo
YW5kbGVzIGNhc2VzIHdoZXJlIElFIGJhbGtzIChzdWNoIGFzIHJlbW92aW5nIGEgcHJvcGVydHkg
b24gd2luZG93KQotICAgIHRyeSB7Ci0gICAgdGhpc1sgbmFtZSBdID0gdW5kZWZpbmVkOwotICAg
IGRlbGV0ZSB0aGlzWyBuYW1lIF07Ci0gICAgfSBjYXRjaCggZSApIHt9Ci0gICAgfSk7Ci0gICAg
fSwKLQotICAgIGFkZENsYXNzOiBmdW5jdGlvbiggdmFsdWUgKSB7Ci0gICAgdmFyIGNsYXNzZXMs
IGVsZW0sIGN1ciwgY2xhenosIGosCi0gICAgaSA9IDAsCi0gICAgbGVuID0gdGhpcy5sZW5ndGgs
Ci0gICAgcHJvY2VlZCA9IHR5cGVvZiB2YWx1ZSA9PT0gInN0cmluZyIgJiYgdmFsdWU7Ci0KLSAg
ICBpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCB2YWx1ZSApICkgewotICAgIHJldHVybiB0aGlzLmVh
Y2goZnVuY3Rpb24oIGogKSB7Ci0gICAgalF1ZXJ5KCB0aGlzICkuYWRkQ2xhc3MoIHZhbHVlLmNh
bGwoIHRoaXMsIGosIHRoaXMuY2xhc3NOYW1lICkgKTsKLSAgICB9KTsKLSAgICB9Ci0KLSAgICBp
ZiAoIHByb2NlZWQgKSB7Ci0gICAgLy8gVGhlIGRpc2p1bmN0aW9uIGhlcmUgaXMgZm9yIGJldHRl
ciBjb21wcmVzc2liaWxpdHkgKHNlZSByZW1vdmVDbGFzcykKLSAgICBjbGFzc2VzID0gKCB2YWx1
ZSB8fCAiIiApLm1hdGNoKCBjb3JlX3Jub3R3aGl0ZSApIHx8IFtdOwotCi0gICAgZm9yICggOyBp
IDwgbGVuOyBpKysgKSB7Ci0gICAgZWxlbSA9IHRoaXNbIGkgXTsKLSAgICBjdXIgPSBlbGVtLm5v
ZGVUeXBlID09PSAxICYmICggZWxlbS5jbGFzc05hbWUgPwotICAgICggIiAiICsgZWxlbS5jbGFz
c05hbWUgKyAiICIgKS5yZXBsYWNlKCByY2xhc3MsICIgIiApIDoKLSAgICAiICIKLSAgICApOwot
Ci0gICAgaWYgKCBjdXIgKSB7Ci0gICAgaiA9IDA7Ci0gICAgd2hpbGUgKCAoY2xhenogPSBjbGFz
c2VzW2orK10pICkgewotICAgIGlmICggY3VyLmluZGV4T2YoICIgIiArIGNsYXp6ICsgIiAiICkg
PCAwICkgewotICAgIGN1ciArPSBjbGF6eiArICIgIjsKLSAgICB9Ci0gICAgfQotICAgIGVsZW0u
Y2xhc3NOYW1lID0galF1ZXJ5LnRyaW0oIGN1ciApOwotCi0gICAgfQotICAgIH0KLSAgICB9Ci0K
LSAgICByZXR1cm4gdGhpczsKLSAgICB9LAotCi0gICAgcmVtb3ZlQ2xhc3M6IGZ1bmN0aW9uKCB2
YWx1ZSApIHsKLSAgICB2YXIgY2xhc3NlcywgZWxlbSwgY3VyLCBjbGF6eiwgaiwKLSAgICBpID0g
MCwKLSAgICBsZW4gPSB0aGlzLmxlbmd0aCwKLSAgICBwcm9jZWVkID0gYXJndW1lbnRzLmxlbmd0
aCA9PT0gMCB8fCB0eXBlb2YgdmFsdWUgPT09ICJzdHJpbmciICYmIHZhbHVlOwotCi0gICAgaWYg
KCBqUXVlcnkuaXNGdW5jdGlvbiggdmFsdWUgKSApIHsKLSAgICByZXR1cm4gdGhpcy5lYWNoKGZ1
bmN0aW9uKCBqICkgewotICAgIGpRdWVyeSggdGhpcyApLnJlbW92ZUNsYXNzKCB2YWx1ZS5jYWxs
KCB0aGlzLCBqLCB0aGlzLmNsYXNzTmFtZSApICk7Ci0gICAgfSk7Ci0gICAgfQotICAgIGlmICgg
cHJvY2VlZCApIHsKLSAgICBjbGFzc2VzID0gKCB2YWx1ZSB8fCAiIiApLm1hdGNoKCBjb3JlX3Ju
b3R3aGl0ZSApIHx8IFtdOwotCi0gICAgZm9yICggOyBpIDwgbGVuOyBpKysgKSB7Ci0gICAgZWxl
bSA9IHRoaXNbIGkgXTsKLSAgICAvLyBUaGlzIGV4cHJlc3Npb24gaXMgaGVyZSBmb3IgYmV0dGVy
IGNvbXByZXNzaWJpbGl0eSAoc2VlIGFkZENsYXNzKQotICAgIGN1ciA9IGVsZW0ubm9kZVR5cGUg
PT09IDEgJiYgKCBlbGVtLmNsYXNzTmFtZSA/Ci0gICAgKCAiICIgKyBlbGVtLmNsYXNzTmFtZSAr
ICIgIiApLnJlcGxhY2UoIHJjbGFzcywgIiAiICkgOgotICAgICIiCi0gICAgKTsKLQotICAgIGlm
ICggY3VyICkgewotICAgIGogPSAwOwotICAgIHdoaWxlICggKGNsYXp6ID0gY2xhc3Nlc1tqKytd
KSApIHsKLSAgICAvLyBSZW1vdmUgKmFsbCogaW5zdGFuY2VzCi0gICAgd2hpbGUgKCBjdXIuaW5k
ZXhPZiggIiAiICsgY2xhenogKyAiICIgKSA+PSAwICkgewotICAgIGN1ciA9IGN1ci5yZXBsYWNl
KCAiICIgKyBjbGF6eiArICIgIiwgIiAiICk7Ci0gICAgfQotICAgIH0KLSAgICBlbGVtLmNsYXNz
TmFtZSA9IHZhbHVlID8galF1ZXJ5LnRyaW0oIGN1ciApIDogIiI7Ci0gICAgfQotICAgIH0KLSAg
ICB9Ci0KLSAgICByZXR1cm4gdGhpczsKLSAgICB9LAotCi0gICAgdG9nZ2xlQ2xhc3M6IGZ1bmN0
aW9uKCB2YWx1ZSwgc3RhdGVWYWwgKSB7Ci0gICAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWUsCi0g
ICAgaXNCb29sID0gdHlwZW9mIHN0YXRlVmFsID09PSAiYm9vbGVhbiI7Ci0KLSAgICBpZiAoIGpR
dWVyeS5pc0Z1bmN0aW9uKCB2YWx1ZSApICkgewotICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rp
b24oIGkgKSB7Ci0gICAgalF1ZXJ5KCB0aGlzICkudG9nZ2xlQ2xhc3MoIHZhbHVlLmNhbGwodGhp
cywgaSwgdGhpcy5jbGFzc05hbWUsIHN0YXRlVmFsKSwgc3RhdGVWYWwgKTsKLSAgICB9KTsKLSAg
ICB9Ci0KLSAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewotICAgIGlmICggdHlwZSA9
PT0gInN0cmluZyIgKSB7Ci0gICAgLy8gdG9nZ2xlIGluZGl2aWR1YWwgY2xhc3MgbmFtZXMKLSAg
ICB2YXIgY2xhc3NOYW1lLAotICAgIGkgPSAwLAotICAgIHNlbGYgPSBqUXVlcnkoIHRoaXMgKSwK
LSAgICBzdGF0ZSA9IHN0YXRlVmFsLAotICAgIGNsYXNzTmFtZXMgPSB2YWx1ZS5tYXRjaCggY29y
ZV9ybm90d2hpdGUgKSB8fCBbXTsKLQotICAgIHdoaWxlICggKGNsYXNzTmFtZSA9IGNsYXNzTmFt
ZXNbIGkrKyBdKSApIHsKLSAgICAvLyBjaGVjayBlYWNoIGNsYXNzTmFtZSBnaXZlbiwgc3BhY2Ug
c2VwYXJhdGVkIGxpc3QKLSAgICBzdGF0ZSA9IGlzQm9vbCA/IHN0YXRlIDogIXNlbGYuaGFzQ2xh
c3MoIGNsYXNzTmFtZSApOwotICAgIHNlbGZbIHN0YXRlID8gImFkZENsYXNzIiA6ICJyZW1vdmVD
bGFzcyIgXSggY2xhc3NOYW1lICk7Ci0gICAgfQotCi0gICAgLy8gVG9nZ2xlIHdob2xlIGNsYXNz
IG5hbWUKLSAgICB9IGVsc2UgaWYgKCB0eXBlID09PSBjb3JlX3N0cnVuZGVmaW5lZCB8fCB0eXBl
ID09PSAiYm9vbGVhbiIgKSB7Ci0gICAgaWYgKCB0aGlzLmNsYXNzTmFtZSApIHsKLSAgICAvLyBz
dG9yZSBjbGFzc05hbWUgaWYgc2V0Ci0gICAgalF1ZXJ5Ll9kYXRhKCB0aGlzLCAiX19jbGFzc05h
bWVfXyIsIHRoaXMuY2xhc3NOYW1lICk7Ci0gICAgfQotCi0gICAgLy8gSWYgdGhlIGVsZW1lbnQg
aGFzIGEgY2xhc3MgbmFtZSBvciBpZiB3ZSdyZSBwYXNzZWQgImZhbHNlIiwKLSAgICAvLyB0aGVu
IHJlbW92ZSB0aGUgd2hvbGUgY2xhc3NuYW1lIChpZiB0aGVyZSB3YXMgb25lLCB0aGUgYWJvdmUg
c2F2ZWQgaXQpLgotICAgIC8vIE90aGVyd2lzZSBicmluZyBiYWNrIHdoYXRldmVyIHdhcyBwcmV2
aW91c2x5IHNhdmVkIChpZiBhbnl0aGluZyksCi0gICAgLy8gZmFsbGluZyBiYWNrIHRvIHRoZSBl
bXB0eSBzdHJpbmcgaWYgbm90aGluZyB3YXMgc3RvcmVkLgotICAgIHRoaXMuY2xhc3NOYW1lID0g
dGhpcy5jbGFzc05hbWUgfHwgdmFsdWUgPT09IGZhbHNlID8gIiIgOiBqUXVlcnkuX2RhdGEoIHRo
aXMsICJfX2NsYXNzTmFtZV9fIiApIHx8ICIiOwotICAgIH0KLSAgICB9KTsKLSAgICB9LAotCi0g
ICAgaGFzQ2xhc3M6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHsKLSAgICB2YXIgY2xhc3NOYW1lID0g
IiAiICsgc2VsZWN0b3IgKyAiICIsCi0gICAgaSA9IDAsCi0gICAgbCA9IHRoaXMubGVuZ3RoOwot
ICAgIGZvciAoIDsgaSA8IGw7IGkrKyApIHsKLSAgICBpZiAoIHRoaXNbaV0ubm9kZVR5cGUgPT09
IDEgJiYgKCIgIiArIHRoaXNbaV0uY2xhc3NOYW1lICsgIiAiKS5yZXBsYWNlKHJjbGFzcywgIiAi
KS5pbmRleE9mKCBjbGFzc05hbWUgKSA+PSAwICkgewotICAgIHJldHVybiB0cnVlOwotICAgIH0K
LSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSwKLQotICAgIHZhbDogZnVuY3Rpb24o
IHZhbHVlICkgewotICAgIHZhciByZXQsIGhvb2tzLCBpc0Z1bmN0aW9uLAotICAgIGVsZW0gPSB0
aGlzWzBdOwotCi0gICAgaWYgKCAhYXJndW1lbnRzLmxlbmd0aCApIHsKLSAgICBpZiAoIGVsZW0g
KSB7Ci0gICAgaG9va3MgPSBqUXVlcnkudmFsSG9va3NbIGVsZW0udHlwZSBdIHx8IGpRdWVyeS52
YWxIb29rc1sgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpIF07Ci0KLSAgICBpZiAoIGhvb2tz
ICYmICJnZXQiIGluIGhvb2tzICYmIChyZXQgPSBob29rcy5nZXQoIGVsZW0sICJ2YWx1ZSIgKSkg
IT09IHVuZGVmaW5lZCApIHsKLSAgICByZXR1cm4gcmV0OwotICAgIH0KLQotICAgIHJldCA9IGVs
ZW0udmFsdWU7Ci0KLSAgICByZXR1cm4gdHlwZW9mIHJldCA9PT0gInN0cmluZyIgPwotICAgIC8v
IGhhbmRsZSBtb3N0IGNvbW1vbiBzdHJpbmcgY2FzZXMKLSAgICByZXQucmVwbGFjZShycmV0dXJu
LCAiIikgOgotICAgIC8vIGhhbmRsZSBjYXNlcyB3aGVyZSB2YWx1ZSBpcyBudWxsL3VuZGVmIG9y
IG51bWJlcgotICAgIHJldCA9PSBudWxsID8gIiIgOiByZXQ7Ci0gICAgfQotCi0gICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGlzRnVuY3Rpb24gPSBqUXVlcnkuaXNGdW5jdGlvbiggdmFsdWUgKTsK
LQotICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oIGkgKSB7Ci0gICAgdmFyIHZhbCwKLSAg
ICBzZWxmID0galF1ZXJ5KHRoaXMpOwotCi0gICAgaWYgKCB0aGlzLm5vZGVUeXBlICE9PSAxICkg
ewotICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIGlzRnVuY3Rpb24gKSB7Ci0gICAgdmFs
ID0gdmFsdWUuY2FsbCggdGhpcywgaSwgc2VsZi52YWwoKSApOwotICAgIH0gZWxzZSB7Ci0gICAg
dmFsID0gdmFsdWU7Ci0gICAgfQotCi0gICAgLy8gVHJlYXQgbnVsbC91bmRlZmluZWQgYXMgIiI7
IGNvbnZlcnQgbnVtYmVycyB0byBzdHJpbmcKLSAgICBpZiAoIHZhbCA9PSBudWxsICkgewotICAg
IHZhbCA9ICIiOwotICAgIH0gZWxzZSBpZiAoIHR5cGVvZiB2YWwgPT09ICJudW1iZXIiICkgewot
ICAgIHZhbCArPSAiIjsKLSAgICB9IGVsc2UgaWYgKCBqUXVlcnkuaXNBcnJheSggdmFsICkgKSB7
Ci0gICAgdmFsID0galF1ZXJ5Lm1hcCh2YWwsIGZ1bmN0aW9uICggdmFsdWUgKSB7Ci0gICAgcmV0
dXJuIHZhbHVlID09IG51bGwgPyAiIiA6IHZhbHVlICsgIiI7Ci0gICAgfSk7Ci0gICAgfQotCi0g
ICAgaG9va3MgPSBqUXVlcnkudmFsSG9va3NbIHRoaXMudHlwZSBdIHx8IGpRdWVyeS52YWxIb29r
c1sgdGhpcy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpIF07Ci0KLSAgICAvLyBJZiBzZXQgcmV0dXJu
cyB1bmRlZmluZWQsIGZhbGwgYmFjayB0byBub3JtYWwgc2V0dGluZwotICAgIGlmICggIWhvb2tz
IHx8ICEoInNldCIgaW4gaG9va3MpIHx8IGhvb2tzLnNldCggdGhpcywgdmFsLCAidmFsdWUiICkg
PT09IHVuZGVmaW5lZCApIHsKLSAgICB0aGlzLnZhbHVlID0gdmFsOwotICAgIH0KLSAgICB9KTsK
LSAgICB9Ci19KTsKLQotalF1ZXJ5LmV4dGVuZCh7Ci0gICAgdmFsSG9va3M6IHsKLSAgICBvcHRp
b246IHsKLSAgICBnZXQ6IGZ1bmN0aW9uKCBlbGVtICkgewotICAgIC8vIGF0dHJpYnV0ZXMudmFs
dWUgaXMgdW5kZWZpbmVkIGluIEJsYWNrYmVycnkgNC43IGJ1dAotICAgIC8vIHVzZXMgLnZhbHVl
LiBTZWUgIzY5MzIKLSAgICB2YXIgdmFsID0gZWxlbS5hdHRyaWJ1dGVzLnZhbHVlOwotICAgIHJl
dHVybiAhdmFsIHx8IHZhbC5zcGVjaWZpZWQgPyBlbGVtLnZhbHVlIDogZWxlbS50ZXh0OwotICAg
IH0KLSAgICB9LAotICAgIHNlbGVjdDogewotICAgIGdldDogZnVuY3Rpb24oIGVsZW0gKSB7Ci0g
ICAgdmFyIHZhbHVlLCBvcHRpb24sCi0gICAgb3B0aW9ucyA9IGVsZW0ub3B0aW9ucywKLSAgICBp
bmRleCA9IGVsZW0uc2VsZWN0ZWRJbmRleCwKLSAgICBvbmUgPSBlbGVtLnR5cGUgPT09ICJzZWxl
Y3Qtb25lIiB8fCBpbmRleCA8IDAsCi0gICAgdmFsdWVzID0gb25lID8gbnVsbCA6IFtdLAotICAg
IG1heCA9IG9uZSA/IGluZGV4ICsgMSA6IG9wdGlvbnMubGVuZ3RoLAotICAgIGkgPSBpbmRleCA8
IDAgPwotICAgIG1heCA6Ci0gICAgb25lID8gaW5kZXggOiAwOwotCi0gICAgLy8gTG9vcCB0aHJv
dWdoIGFsbCB0aGUgc2VsZWN0ZWQgb3B0aW9ucwotICAgIGZvciAoIDsgaSA8IG1heDsgaSsrICkg
ewotICAgIG9wdGlvbiA9IG9wdGlvbnNbIGkgXTsKLQotICAgIC8vIG9sZElFIGRvZXNuJ3QgdXBk
YXRlIHNlbGVjdGVkIGFmdGVyIGZvcm0gcmVzZXQgKCMyNTUxKQotICAgIGlmICggKCBvcHRpb24u
c2VsZWN0ZWQgfHwgaSA9PT0gaW5kZXggKSAmJgotICAgIC8vIERvbid0IHJldHVybiBvcHRpb25z
IHRoYXQgYXJlIGRpc2FibGVkIG9yIGluIGEgZGlzYWJsZWQgb3B0Z3JvdXAKLSAgICAoIGpRdWVy
eS5zdXBwb3J0Lm9wdERpc2FibGVkID8gIW9wdGlvbi5kaXNhYmxlZCA6IG9wdGlvbi5nZXRBdHRy
aWJ1dGUoImRpc2FibGVkIikgPT09IG51bGwgKSAmJgotICAgICggIW9wdGlvbi5wYXJlbnROb2Rl
LmRpc2FibGVkIHx8ICFqUXVlcnkubm9kZU5hbWUoIG9wdGlvbi5wYXJlbnROb2RlLCAib3B0Z3Jv
dXAiICkgKSApIHsKLQotICAgIC8vIEdldCB0aGUgc3BlY2lmaWMgdmFsdWUgZm9yIHRoZSBvcHRp
b24KLSAgICB2YWx1ZSA9IGpRdWVyeSggb3B0aW9uICkudmFsKCk7Ci0KLSAgICAvLyBXZSBkb24n
dCBuZWVkIGFuIGFycmF5IGZvciBvbmUgc2VsZWN0cwotICAgIGlmICggb25lICkgewotICAgIHJl
dHVybiB2YWx1ZTsKLSAgICB9Ci0KLSAgICAvLyBNdWx0aS1TZWxlY3RzIHJldHVybiBhbiBhcnJh
eQotICAgIHZhbHVlcy5wdXNoKCB2YWx1ZSApOwotICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4g
dmFsdWVzOwotICAgIH0sCi0KLSAgICBzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSApIHsKLSAg
ICB2YXIgdmFsdWVzID0galF1ZXJ5Lm1ha2VBcnJheSggdmFsdWUgKTsKLQotICAgIGpRdWVyeShl
bGVtKS5maW5kKCJvcHRpb24iKS5lYWNoKGZ1bmN0aW9uKCkgewotICAgIHRoaXMuc2VsZWN0ZWQg
PSBqUXVlcnkuaW5BcnJheSggalF1ZXJ5KHRoaXMpLnZhbCgpLCB2YWx1ZXMgKSA+PSAwOwotICAg
IH0pOwotCi0gICAgaWYgKCAhdmFsdWVzLmxlbmd0aCApIHsKLSAgICBlbGVtLnNlbGVjdGVkSW5k
ZXggPSAtMTsKLSAgICB9Ci0gICAgcmV0dXJuIHZhbHVlczsKLSAgICB9Ci0gICAgfQotICAgIH0s
Ci0KLSAgICBhdHRyOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgdmFsdWUgKSB7Ci0gICAgdmFyIGhv
b2tzLCBub3R4bWwsIHJldCwKLSAgICBuVHlwZSA9IGVsZW0ubm9kZVR5cGU7Ci0KLSAgICAvLyBk
b24ndCBnZXQvc2V0IGF0dHJpYnV0ZXMgb24gdGV4dCwgY29tbWVudCBhbmQgYXR0cmlidXRlIG5v
ZGVzCi0gICAgaWYgKCAhZWxlbSB8fCBuVHlwZSA9PT0gMyB8fCBuVHlwZSA9PT0gOCB8fCBuVHlw
ZSA9PT0gMiApIHsKLSAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gRmFsbGJhY2sgdG8gcHJv
cCB3aGVuIGF0dHJpYnV0ZXMgYXJlIG5vdCBzdXBwb3J0ZWQKLSAgICBpZiAoIHR5cGVvZiBlbGVt
LmdldEF0dHJpYnV0ZSA9PT0gY29yZV9zdHJ1bmRlZmluZWQgKSB7Ci0gICAgcmV0dXJuIGpRdWVy
eS5wcm9wKCBlbGVtLCBuYW1lLCB2YWx1ZSApOwotICAgIH0KLQotICAgIG5vdHhtbCA9IG5UeXBl
ICE9PSAxIHx8ICFqUXVlcnkuaXNYTUxEb2MoIGVsZW0gKTsKLQotICAgIC8vIEFsbCBhdHRyaWJ1
dGVzIGFyZSBsb3dlcmNhc2UKLSAgICAvLyBHcmFiIG5lY2Vzc2FyeSBob29rIGlmIG9uZSBpcyBk
ZWZpbmVkCi0gICAgaWYgKCBub3R4bWwgKSB7Ci0gICAgbmFtZSA9IG5hbWUudG9Mb3dlckNhc2Uo
KTsKLSAgICBob29rcyA9IGpRdWVyeS5hdHRySG9va3NbIG5hbWUgXSB8fCAoIHJib29sZWFuLnRl
c3QoIG5hbWUgKSA/IGJvb2xIb29rIDogbm9kZUhvb2sgKTsKLSAgICB9Ci0KLSAgICBpZiAoIHZh
bHVlICE9PSB1bmRlZmluZWQgKSB7Ci0KLSAgICBpZiAoIHZhbHVlID09PSBudWxsICkgewotICAg
IGpRdWVyeS5yZW1vdmVBdHRyKCBlbGVtLCBuYW1lICk7Ci0KLSAgICB9IGVsc2UgaWYgKCBob29r
cyAmJiBub3R4bWwgJiYgInNldCIgaW4gaG9va3MgJiYgKHJldCA9IGhvb2tzLnNldCggZWxlbSwg
dmFsdWUsIG5hbWUgKSkgIT09IHVuZGVmaW5lZCApIHsKLSAgICByZXR1cm4gcmV0OwotCi0gICAg
fSBlbHNlIHsKLSAgICBlbGVtLnNldEF0dHJpYnV0ZSggbmFtZSwgdmFsdWUgKyAiIiApOwotICAg
IHJldHVybiB2YWx1ZTsKLSAgICB9Ci0KLSAgICB9IGVsc2UgaWYgKCBob29rcyAmJiBub3R4bWwg
JiYgImdldCIgaW4gaG9va3MgJiYgKHJldCA9IGhvb2tzLmdldCggZWxlbSwgbmFtZSApKSAhPT0g
bnVsbCApIHsKLSAgICByZXR1cm4gcmV0OwotCi0gICAgfSBlbHNlIHsKLQotICAgIC8vIEluIElF
OSssIEZsYXNoIG9iamVjdHMgZG9uJ3QgaGF2ZSAuZ2V0QXR0cmlidXRlICgjMTI5NDUpCi0gICAg
Ly8gU3VwcG9ydDogSUU5KwotICAgIGlmICggdHlwZW9mIGVsZW0uZ2V0QXR0cmlidXRlICE9PSBj
b3JlX3N0cnVuZGVmaW5lZCApIHsKLSAgICByZXQgPSAgZWxlbS5nZXRBdHRyaWJ1dGUoIG5hbWUg
KTsKLSAgICB9Ci0KLSAgICAvLyBOb24tZXhpc3RlbnQgYXR0cmlidXRlcyByZXR1cm4gbnVsbCwg
d2Ugbm9ybWFsaXplIHRvIHVuZGVmaW5lZAotICAgIHJldHVybiByZXQgPT0gbnVsbCA/Ci0gICAg
dW5kZWZpbmVkIDoKLSAgICByZXQ7Ci0gICAgfQotICAgIH0sCi0KLSAgICByZW1vdmVBdHRyOiBm
dW5jdGlvbiggZWxlbSwgdmFsdWUgKSB7Ci0gICAgdmFyIG5hbWUsIHByb3BOYW1lLAotICAgIGkg
PSAwLAotICAgIGF0dHJOYW1lcyA9IHZhbHVlICYmIHZhbHVlLm1hdGNoKCBjb3JlX3Jub3R3aGl0
ZSApOwotCi0gICAgaWYgKCBhdHRyTmFtZXMgJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSApIHsKLSAg
ICB3aGlsZSAoIChuYW1lID0gYXR0ck5hbWVzW2krK10pICkgewotICAgIHByb3BOYW1lID0galF1
ZXJ5LnByb3BGaXhbIG5hbWUgXSB8fCBuYW1lOwotCi0gICAgLy8gQm9vbGVhbiBhdHRyaWJ1dGVz
IGdldCBzcGVjaWFsIHRyZWF0bWVudCAoIzEwODcwKQotICAgIGlmICggcmJvb2xlYW4udGVzdCgg
bmFtZSApICkgewotICAgIC8vIFNldCBjb3JyZXNwb25kaW5nIHByb3BlcnR5IHRvIGZhbHNlIGZv
ciBib29sZWFuIGF0dHJpYnV0ZXMKLSAgICAvLyBBbHNvIGNsZWFyIGRlZmF1bHRDaGVja2VkL2Rl
ZmF1bHRTZWxlY3RlZCAoaWYgYXBwcm9wcmlhdGUpIGZvciBJRTw4Ci0gICAgaWYgKCAhZ2V0U2V0
QXR0cmlidXRlICYmIHJ1c2VEZWZhdWx0LnRlc3QoIG5hbWUgKSApIHsKLSAgICBlbGVtWyBqUXVl
cnkuY2FtZWxDYXNlKCAiZGVmYXVsdC0iICsgbmFtZSApIF0gPQotICAgIGVsZW1bIHByb3BOYW1l
IF0gPSBmYWxzZTsKLSAgICB9IGVsc2UgewotICAgIGVsZW1bIHByb3BOYW1lIF0gPSBmYWxzZTsK
LSAgICB9Ci0KLSAgICAvLyBTZWUgIzk2OTkgZm9yIGV4cGxhbmF0aW9uIG9mIHRoaXMgYXBwcm9h
Y2ggKHNldHRpbmcgZmlyc3QsIHRoZW4gcmVtb3ZhbCkKLSAgICB9IGVsc2UgewotICAgIGpRdWVy
eS5hdHRyKCBlbGVtLCBuYW1lLCAiIiApOwotICAgIH0KLQotICAgIGVsZW0ucmVtb3ZlQXR0cmli
dXRlKCBnZXRTZXRBdHRyaWJ1dGUgPyBuYW1lIDogcHJvcE5hbWUgKTsKLSAgICB9Ci0gICAgfQot
ICAgIH0sCi0KLSAgICBhdHRySG9va3M6IHsKLSAgICB0eXBlOiB7Ci0gICAgc2V0OiBmdW5jdGlv
biggZWxlbSwgdmFsdWUgKSB7Ci0gICAgaWYgKCAhalF1ZXJ5LnN1cHBvcnQucmFkaW9WYWx1ZSAm
JiB2YWx1ZSA9PT0gInJhZGlvIiAmJiBqUXVlcnkubm9kZU5hbWUoZWxlbSwgImlucHV0IikgKSB7
Ci0gICAgLy8gU2V0dGluZyB0aGUgdHlwZSBvbiBhIHJhZGlvIGJ1dHRvbiBhZnRlciB0aGUgdmFs
dWUgcmVzZXRzIHRoZSB2YWx1ZSBpbiBJRTYtOQotICAgIC8vIFJlc2V0IHZhbHVlIHRvIGRlZmF1
bHQgaW4gY2FzZSB0eXBlIGlzIHNldCBhZnRlciB2YWx1ZSBkdXJpbmcgY3JlYXRpb24KLSAgICB2
YXIgdmFsID0gZWxlbS52YWx1ZTsKLSAgICBlbGVtLnNldEF0dHJpYnV0ZSggInR5cGUiLCB2YWx1
ZSApOwotICAgIGlmICggdmFsICkgewotICAgIGVsZW0udmFsdWUgPSB2YWw7Ci0gICAgfQotICAg
IHJldHVybiB2YWx1ZTsKLSAgICB9Ci0gICAgfQotICAgIH0KLSAgICB9LAotCi0gICAgcHJvcEZp
eDogewotICAgIHRhYmluZGV4OiAidGFiSW5kZXgiLAotICAgIHJlYWRvbmx5OiAicmVhZE9ubHki
LAotICAgICJmb3IiOiAiaHRtbEZvciIsCi0gICAgImNsYXNzIjogImNsYXNzTmFtZSIsCi0gICAg
bWF4bGVuZ3RoOiAibWF4TGVuZ3RoIiwKLSAgICBjZWxsc3BhY2luZzogImNlbGxTcGFjaW5nIiwK
LSAgICBjZWxscGFkZGluZzogImNlbGxQYWRkaW5nIiwKLSAgICByb3dzcGFuOiAicm93U3BhbiIs
Ci0gICAgY29sc3BhbjogImNvbFNwYW4iLAotICAgIHVzZW1hcDogInVzZU1hcCIsCi0gICAgZnJh
bWVib3JkZXI6ICJmcmFtZUJvcmRlciIsCi0gICAgY29udGVudGVkaXRhYmxlOiAiY29udGVudEVk
aXRhYmxlIgotICAgIH0sCi0KLSAgICBwcm9wOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgdmFsdWUg
KSB7Ci0gICAgdmFyIHJldCwgaG9va3MsIG5vdHhtbCwKLSAgICBuVHlwZSA9IGVsZW0ubm9kZVR5
cGU7Ci0KLSAgICAvLyBkb24ndCBnZXQvc2V0IHByb3BlcnRpZXMgb24gdGV4dCwgY29tbWVudCBh
bmQgYXR0cmlidXRlIG5vZGVzCi0gICAgaWYgKCAhZWxlbSB8fCBuVHlwZSA9PT0gMyB8fCBuVHlw
ZSA9PT0gOCB8fCBuVHlwZSA9PT0gMiApIHsKLSAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbm90
eG1sID0gblR5cGUgIT09IDEgfHwgIWpRdWVyeS5pc1hNTERvYyggZWxlbSApOwotCi0gICAgaWYg
KCBub3R4bWwgKSB7Ci0gICAgLy8gRml4IG5hbWUgYW5kIGF0dGFjaCBob29rcwotICAgIG5hbWUg
PSBqUXVlcnkucHJvcEZpeFsgbmFtZSBdIHx8IG5hbWU7Ci0gICAgaG9va3MgPSBqUXVlcnkucHJv
cEhvb2tzWyBuYW1lIF07Ci0gICAgfQotCi0gICAgaWYgKCB2YWx1ZSAhPT0gdW5kZWZpbmVkICkg
ewotICAgIGlmICggaG9va3MgJiYgInNldCIgaW4gaG9va3MgJiYgKHJldCA9IGhvb2tzLnNldCgg
ZWxlbSwgdmFsdWUsIG5hbWUgKSkgIT09IHVuZGVmaW5lZCApIHsKLSAgICByZXR1cm4gcmV0Owot
Ci0gICAgfSBlbHNlIHsKLSAgICByZXR1cm4gKCBlbGVtWyBuYW1lIF0gPSB2YWx1ZSApOwotICAg
IH0KLQotICAgIH0gZWxzZSB7Ci0gICAgaWYgKCBob29rcyAmJiAiZ2V0IiBpbiBob29rcyAmJiAo
cmV0ID0gaG9va3MuZ2V0KCBlbGVtLCBuYW1lICkpICE9PSBudWxsICkgewotICAgIHJldHVybiBy
ZXQ7Ci0KLSAgICB9IGVsc2UgewotICAgIHJldHVybiBlbGVtWyBuYW1lIF07Ci0gICAgfQotICAg
IH0KLSAgICB9LAotCi0gICAgcHJvcEhvb2tzOiB7Ci0gICAgdGFiSW5kZXg6IHsKLSAgICBnZXQ6
IGZ1bmN0aW9uKCBlbGVtICkgewotICAgIC8vIGVsZW0udGFiSW5kZXggZG9lc24ndCBhbHdheXMg
cmV0dXJuIHRoZSBjb3JyZWN0IHZhbHVlIHdoZW4gaXQgaGFzbid0IGJlZW4gZXhwbGljaXRseSBz
ZXQKLSAgICAvLyBodHRwOi8vZmx1aWRwcm9qZWN0Lm9yZy9ibG9nLzIwMDgvMDEvMDkvZ2V0dGlu
Zy1zZXR0aW5nLWFuZC1yZW1vdmluZy10YWJpbmRleC12YWx1ZXMtd2l0aC1qYXZhc2NyaXB0Lwot
ICAgIHZhciBhdHRyaWJ1dGVOb2RlID0gZWxlbS5nZXRBdHRyaWJ1dGVOb2RlKCJ0YWJpbmRleCIp
OwotCi0gICAgcmV0dXJuIGF0dHJpYnV0ZU5vZGUgJiYgYXR0cmlidXRlTm9kZS5zcGVjaWZpZWQg
PwotICAgIHBhcnNlSW50KCBhdHRyaWJ1dGVOb2RlLnZhbHVlLCAxMCApIDoKLSAgICByZm9jdXNh
YmxlLnRlc3QoIGVsZW0ubm9kZU5hbWUgKSB8fCByY2xpY2thYmxlLnRlc3QoIGVsZW0ubm9kZU5h
bWUgKSAmJiBlbGVtLmhyZWYgPwotICAgIDAgOgotICAgIHVuZGVmaW5lZDsKLSAgICB9Ci0gICAg
fQotICAgIH0KLX0pOwotCi0vLyBIb29rIGZvciBib29sZWFuIGF0dHJpYnV0ZXMKLWJvb2xIb29r
ID0gewotICAgIGdldDogZnVuY3Rpb24oIGVsZW0sIG5hbWUgKSB7Ci0gICAgdmFyCi0gICAgLy8g
VXNlIC5wcm9wIHRvIGRldGVybWluZSBpZiB0aGlzIGF0dHJpYnV0ZSBpcyB1bmRlcnN0b29kIGFz
IGJvb2xlYW4KLSAgICBwcm9wID0galF1ZXJ5LnByb3AoIGVsZW0sIG5hbWUgKSwKLQotICAgIC8v
IEZldGNoIGl0IGFjY29yZGluZ2x5Ci0gICAgYXR0ciA9IHR5cGVvZiBwcm9wID09PSAiYm9vbGVh
biIgJiYgZWxlbS5nZXRBdHRyaWJ1dGUoIG5hbWUgKSwKLSAgICBkZXRhaWwgPSB0eXBlb2YgcHJv
cCA9PT0gImJvb2xlYW4iID8KLQotICAgIGdldFNldElucHV0ICYmIGdldFNldEF0dHJpYnV0ZSA/
Ci0gICAgYXR0ciAhPSBudWxsIDoKLSAgICAvLyBvbGRJRSBmYWJyaWNhdGVzIGFuIGVtcHR5IHN0
cmluZyBmb3IgbWlzc2luZyBib29sZWFuIGF0dHJpYnV0ZXMKLSAgICAvLyBhbmQgY29uZmxhdGVz
IGNoZWNrZWQvc2VsZWN0ZWQgaW50byBhdHRyb3BlcnRpZXMKLSAgICBydXNlRGVmYXVsdC50ZXN0
KCBuYW1lICkgPwotICAgIGVsZW1bIGpRdWVyeS5jYW1lbENhc2UoICJkZWZhdWx0LSIgKyBuYW1l
ICkgXSA6Ci0gICAgISFhdHRyIDoKLQotICAgIC8vIGZldGNoIGFuIGF0dHJpYnV0ZSBub2RlIGZv
ciBwcm9wZXJ0aWVzIG5vdCByZWNvZ25pemVkIGFzIGJvb2xlYW4KLSAgICBlbGVtLmdldEF0dHJp
YnV0ZU5vZGUoIG5hbWUgKTsKLQotICAgIHJldHVybiBkZXRhaWwgJiYgZGV0YWlsLnZhbHVlICE9
PSBmYWxzZSA/Ci0gICAgbmFtZS50b0xvd2VyQ2FzZSgpIDoKLSAgICB1bmRlZmluZWQ7Ci0gICAg
fSwKLSAgICBzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSwgbmFtZSApIHsKLSAgICBpZiAoIHZh
bHVlID09PSBmYWxzZSApIHsKLSAgICAvLyBSZW1vdmUgYm9vbGVhbiBhdHRyaWJ1dGVzIHdoZW4g
c2V0IHRvIGZhbHNlCi0gICAgalF1ZXJ5LnJlbW92ZUF0dHIoIGVsZW0sIG5hbWUgKTsKLSAgICB9
IGVsc2UgaWYgKCBnZXRTZXRJbnB1dCAmJiBnZXRTZXRBdHRyaWJ1dGUgfHwgIXJ1c2VEZWZhdWx0
LnRlc3QoIG5hbWUgKSApIHsKLSAgICAvLyBJRTw4IG5lZWRzIHRoZSAqcHJvcGVydHkqIG5hbWUK
LSAgICBlbGVtLnNldEF0dHJpYnV0ZSggIWdldFNldEF0dHJpYnV0ZSAmJiBqUXVlcnkucHJvcEZp
eFsgbmFtZSBdIHx8IG5hbWUsIG5hbWUgKTsKLQotICAgIC8vIFVzZSBkZWZhdWx0Q2hlY2tlZCBh
bmQgZGVmYXVsdFNlbGVjdGVkIGZvciBvbGRJRQotICAgIH0gZWxzZSB7Ci0gICAgZWxlbVsgalF1
ZXJ5LmNhbWVsQ2FzZSggImRlZmF1bHQtIiArIG5hbWUgKSBdID0gZWxlbVsgbmFtZSBdID0gdHJ1
ZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gbmFtZTsKLSAgICB9Ci19OwotCi0vLyBmaXggb2xkSUUg
dmFsdWUgYXR0cm9wZXJ0eQotaWYgKCAhZ2V0U2V0SW5wdXQgfHwgIWdldFNldEF0dHJpYnV0ZSAp
IHsKLSAgICBqUXVlcnkuYXR0ckhvb2tzLnZhbHVlID0gewotICAgIGdldDogZnVuY3Rpb24oIGVs
ZW0sIG5hbWUgKSB7Ci0gICAgdmFyIHJldCA9IGVsZW0uZ2V0QXR0cmlidXRlTm9kZSggbmFtZSAp
OwotICAgIHJldHVybiBqUXVlcnkubm9kZU5hbWUoIGVsZW0sICJpbnB1dCIgKSA/Ci0KLSAgICAv
LyBJZ25vcmUgdGhlIHZhbHVlICpwcm9wZXJ0eSogYnkgdXNpbmcgZGVmYXVsdFZhbHVlCi0gICAg
ZWxlbS5kZWZhdWx0VmFsdWUgOgotCi0gICAgcmV0ICYmIHJldC5zcGVjaWZpZWQgPyByZXQudmFs
dWUgOiB1bmRlZmluZWQ7Ci0gICAgfSwKLSAgICBzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSwg
bmFtZSApIHsKLSAgICBpZiAoIGpRdWVyeS5ub2RlTmFtZSggZWxlbSwgImlucHV0IiApICkgewot
ICAgIC8vIERvZXMgbm90IHJldHVybiBzbyB0aGF0IHNldEF0dHJpYnV0ZSBpcyBhbHNvIHVzZWQK
LSAgICBlbGVtLmRlZmF1bHRWYWx1ZSA9IHZhbHVlOwotICAgIH0gZWxzZSB7Ci0gICAgLy8gVXNl
IG5vZGVIb29rIGlmIGRlZmluZWQgKCMxOTU0KTsgb3RoZXJ3aXNlIHNldEF0dHJpYnV0ZSBpcyBm
aW5lCi0gICAgcmV0dXJuIG5vZGVIb29rICYmIG5vZGVIb29rLnNldCggZWxlbSwgdmFsdWUsIG5h
bWUgKTsKLSAgICB9Ci0gICAgfQotICAgIH07Ci19Ci0KLS8vIElFNi83IGRvIG5vdCBzdXBwb3J0
IGdldHRpbmcvc2V0dGluZyBzb21lIGF0dHJpYnV0ZXMgd2l0aCBnZXQvc2V0QXR0cmlidXRlCi1p
ZiAoICFnZXRTZXRBdHRyaWJ1dGUgKSB7Ci0KLSAgICAvLyBVc2UgdGhpcyBmb3IgYW55IGF0dHJp
YnV0ZSBpbiBJRTYvNwotICAgIC8vIFRoaXMgZml4ZXMgYWxtb3N0IGV2ZXJ5IElFNi83IGlzc3Vl
Ci0gICAgbm9kZUhvb2sgPSBqUXVlcnkudmFsSG9va3MuYnV0dG9uID0gewotICAgIGdldDogZnVu
Y3Rpb24oIGVsZW0sIG5hbWUgKSB7Ci0gICAgdmFyIHJldCA9IGVsZW0uZ2V0QXR0cmlidXRlTm9k
ZSggbmFtZSApOwotICAgIHJldHVybiByZXQgJiYgKCBuYW1lID09PSAiaWQiIHx8IG5hbWUgPT09
ICJuYW1lIiB8fCBuYW1lID09PSAiY29vcmRzIiA/IHJldC52YWx1ZSAhPT0gIiIgOiByZXQuc3Bl
Y2lmaWVkICkgPwotICAgIHJldC52YWx1ZSA6Ci0gICAgdW5kZWZpbmVkOwotICAgIH0sCi0gICAg
c2V0OiBmdW5jdGlvbiggZWxlbSwgdmFsdWUsIG5hbWUgKSB7Ci0gICAgLy8gU2V0IHRoZSBleGlz
dGluZyBvciBjcmVhdGUgYSBuZXcgYXR0cmlidXRlIG5vZGUKLSAgICB2YXIgcmV0ID0gZWxlbS5n
ZXRBdHRyaWJ1dGVOb2RlKCBuYW1lICk7Ci0gICAgaWYgKCAhcmV0ICkgewotICAgIGVsZW0uc2V0
QXR0cmlidXRlTm9kZSgKLSAgICAocmV0ID0gZWxlbS5vd25lckRvY3VtZW50LmNyZWF0ZUF0dHJp
YnV0ZSggbmFtZSApKQotICAgICk7Ci0gICAgfQotCi0gICAgcmV0LnZhbHVlID0gdmFsdWUgKz0g
IiI7Ci0KLSAgICAvLyBCcmVhayBhc3NvY2lhdGlvbiB3aXRoIGNsb25lZCBlbGVtZW50cyBieSBh
bHNvIHVzaW5nIHNldEF0dHJpYnV0ZSAoIzk2NDYpCi0gICAgcmV0dXJuIG5hbWUgPT09ICJ2YWx1
ZSIgfHwgdmFsdWUgPT09IGVsZW0uZ2V0QXR0cmlidXRlKCBuYW1lICkgPwotICAgIHZhbHVlIDoK
LSAgICB1bmRlZmluZWQ7Ci0gICAgfQotICAgIH07Ci0KLSAgICAvLyBTZXQgY29udGVudGVkaXRh
YmxlIHRvIGZhbHNlIG9uIHJlbW92YWxzKCMxMDQyOSkKLSAgICAvLyBTZXR0aW5nIHRvIGVtcHR5
IHN0cmluZyB0aHJvd3MgYW4gZXJyb3IgYXMgYW4gaW52YWxpZCB2YWx1ZQotICAgIGpRdWVyeS5h
dHRySG9va3MuY29udGVudGVkaXRhYmxlID0gewotICAgIGdldDogbm9kZUhvb2suZ2V0LAotICAg
IHNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlLCBuYW1lICkgewotICAgIG5vZGVIb29rLnNldCgg
ZWxlbSwgdmFsdWUgPT09ICIiID8gZmFsc2UgOiB2YWx1ZSwgbmFtZSApOwotICAgIH0KLSAgICB9
OwotCi0gICAgLy8gU2V0IHdpZHRoIGFuZCBoZWlnaHQgdG8gYXV0byBpbnN0ZWFkIG9mIDAgb24g
ZW1wdHkgc3RyaW5nKCBCdWcgIzgxNTAgKQotICAgIC8vIFRoaXMgaXMgZm9yIHJlbW92YWxzCi0g
ICAgalF1ZXJ5LmVhY2goWyAid2lkdGgiLCAiaGVpZ2h0IiBdLCBmdW5jdGlvbiggaSwgbmFtZSAp
IHsKLSAgICBqUXVlcnkuYXR0ckhvb2tzWyBuYW1lIF0gPSBqUXVlcnkuZXh0ZW5kKCBqUXVlcnku
YXR0ckhvb2tzWyBuYW1lIF0sIHsKLSAgICBzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSApIHsK
LSAgICBpZiAoIHZhbHVlID09PSAiIiApIHsKLSAgICBlbGVtLnNldEF0dHJpYnV0ZSggbmFtZSwg
ImF1dG8iICk7Ci0gICAgcmV0dXJuIHZhbHVlOwotICAgIH0KLSAgICB9Ci0gICAgfSk7Ci0gICAg
fSk7Ci19Ci0KLQotLy8gU29tZSBhdHRyaWJ1dGVzIHJlcXVpcmUgYSBzcGVjaWFsIGNhbGwgb24g
SUUKLS8vIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9tczUzNjQyOSUy
OFZTLjg1JTI5LmFzcHgKLWlmICggIWpRdWVyeS5zdXBwb3J0LmhyZWZOb3JtYWxpemVkICkgewot
ICAgIGpRdWVyeS5lYWNoKFsgImhyZWYiLCAic3JjIiwgIndpZHRoIiwgImhlaWdodCIgXSwgZnVu
Y3Rpb24oIGksIG5hbWUgKSB7Ci0gICAgalF1ZXJ5LmF0dHJIb29rc1sgbmFtZSBdID0galF1ZXJ5
LmV4dGVuZCggalF1ZXJ5LmF0dHJIb29rc1sgbmFtZSBdLCB7Ci0gICAgZ2V0OiBmdW5jdGlvbigg
ZWxlbSApIHsKLSAgICB2YXIgcmV0ID0gZWxlbS5nZXRBdHRyaWJ1dGUoIG5hbWUsIDIgKTsKLSAg
ICByZXR1cm4gcmV0ID09IG51bGwgPyB1bmRlZmluZWQgOiByZXQ7Ci0gICAgfQotICAgIH0pOwot
ICAgIH0pOwotCi0gICAgLy8gaHJlZi9zcmMgcHJvcGVydHkgc2hvdWxkIGdldCB0aGUgZnVsbCBu
b3JtYWxpemVkIFVSTCAoIzEwMjk5LyMxMjkxNSkKLSAgICBqUXVlcnkuZWFjaChbICJocmVmIiwg
InNyYyIgXSwgZnVuY3Rpb24oIGksIG5hbWUgKSB7Ci0gICAgalF1ZXJ5LnByb3BIb29rc1sgbmFt
ZSBdID0gewotICAgIGdldDogZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgcmV0dXJuIGVsZW0uZ2V0
QXR0cmlidXRlKCBuYW1lLCA0ICk7Ci0gICAgfQotICAgIH07Ci0gICAgfSk7Ci19Ci0KLWlmICgg
IWpRdWVyeS5zdXBwb3J0LnN0eWxlICkgewotICAgIGpRdWVyeS5hdHRySG9va3Muc3R5bGUgPSB7
Ci0gICAgZ2V0OiBmdW5jdGlvbiggZWxlbSApIHsKLSAgICAvLyBSZXR1cm4gdW5kZWZpbmVkIGlu
IHRoZSBjYXNlIG9mIGVtcHR5IHN0cmluZwotICAgIC8vIE5vdGU6IElFIHVwcGVyY2FzZXMgY3Nz
IHByb3BlcnR5IG5hbWVzLCBidXQgaWYgd2Ugd2VyZSB0byAudG9Mb3dlckNhc2UoKQotICAgIC8v
IC5jc3NUZXh0LCB0aGF0IHdvdWxkIGRlc3Ryb3kgY2FzZSBzZW5zdGl0aXZpdHkgaW4gVVJMJ3Ms
IGxpa2UgaW4gImJhY2tncm91bmQiCi0gICAgcmV0dXJuIGVsZW0uc3R5bGUuY3NzVGV4dCB8fCB1
bmRlZmluZWQ7Ci0gICAgfSwKLSAgICBzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSApIHsKLSAg
ICByZXR1cm4gKCBlbGVtLnN0eWxlLmNzc1RleHQgPSB2YWx1ZSArICIiICk7Ci0gICAgfQotICAg
IH07Ci19Ci0KLS8vIFNhZmFyaSBtaXMtcmVwb3J0cyB0aGUgZGVmYXVsdCBzZWxlY3RlZCBwcm9w
ZXJ0eSBvZiBhbiBvcHRpb24KLS8vIEFjY2Vzc2luZyB0aGUgcGFyZW50J3Mgc2VsZWN0ZWRJbmRl
eCBwcm9wZXJ0eSBmaXhlcyBpdAotaWYgKCAhalF1ZXJ5LnN1cHBvcnQub3B0U2VsZWN0ZWQgKSB7
Ci0gICAgalF1ZXJ5LnByb3BIb29rcy5zZWxlY3RlZCA9IGpRdWVyeS5leHRlbmQoIGpRdWVyeS5w
cm9wSG9va3Muc2VsZWN0ZWQsIHsKLSAgICBnZXQ6IGZ1bmN0aW9uKCBlbGVtICkgewotICAgIHZh
ciBwYXJlbnQgPSBlbGVtLnBhcmVudE5vZGU7Ci0KLSAgICBpZiAoIHBhcmVudCApIHsKLSAgICBw
YXJlbnQuc2VsZWN0ZWRJbmRleDsKLQotICAgIC8vIE1ha2Ugc3VyZSB0aGF0IGl0IGFsc28gd29y
a3Mgd2l0aCBvcHRncm91cHMsIHNlZSAjNTcwMQotICAgIGlmICggcGFyZW50LnBhcmVudE5vZGUg
KSB7Ci0gICAgcGFyZW50LnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleDsKLSAgICB9Ci0gICAgfQot
ICAgIHJldHVybiBudWxsOwotICAgIH0KLSAgICB9KTsKLX0KLQotLy8gSUU2LzcgY2FsbCBlbmN0
eXBlIGVuY29kaW5nCi1pZiAoICFqUXVlcnkuc3VwcG9ydC5lbmN0eXBlICkgewotICAgIGpRdWVy
eS5wcm9wRml4LmVuY3R5cGUgPSAiZW5jb2RpbmciOwotfQotCi0vLyBSYWRpb3MgYW5kIGNoZWNr
Ym94ZXMgZ2V0dGVyL3NldHRlcgotaWYgKCAhalF1ZXJ5LnN1cHBvcnQuY2hlY2tPbiApIHsKLSAg
ICBqUXVlcnkuZWFjaChbICJyYWRpbyIsICJjaGVja2JveCIgXSwgZnVuY3Rpb24oKSB7Ci0gICAg
alF1ZXJ5LnZhbEhvb2tzWyB0aGlzIF0gPSB7Ci0gICAgZ2V0OiBmdW5jdGlvbiggZWxlbSApIHsK
LSAgICAvLyBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgaW4gV2Via2l0ICIiIGlzIHJldHVybmVkIGlu
c3RlYWQgb2YgIm9uIiBpZiBhIHZhbHVlIGlzbid0IHNwZWNpZmllZAotICAgIHJldHVybiBlbGVt
LmdldEF0dHJpYnV0ZSgidmFsdWUiKSA9PT0gbnVsbCA/ICJvbiIgOiBlbGVtLnZhbHVlOwotICAg
IH0KLSAgICB9OwotICAgIH0pOwotfQotalF1ZXJ5LmVhY2goWyAicmFkaW8iLCAiY2hlY2tib3gi
IF0sIGZ1bmN0aW9uKCkgewotICAgIGpRdWVyeS52YWxIb29rc1sgdGhpcyBdID0galF1ZXJ5LmV4
dGVuZCggalF1ZXJ5LnZhbEhvb2tzWyB0aGlzIF0sIHsKLSAgICBzZXQ6IGZ1bmN0aW9uKCBlbGVt
LCB2YWx1ZSApIHsKLSAgICBpZiAoIGpRdWVyeS5pc0FycmF5KCB2YWx1ZSApICkgewotICAgIHJl
dHVybiAoIGVsZW0uY2hlY2tlZCA9IGpRdWVyeS5pbkFycmF5KCBqUXVlcnkoZWxlbSkudmFsKCks
IHZhbHVlICkgPj0gMCApOwotICAgIH0KLSAgICB9Ci0gICAgfSk7Ci19KTsKLXZhciByZm9ybUVs
ZW1zID0gL14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWEpJC9pLAotICAgIHJrZXlFdmVudCA9IC9e
a2V5LywKLSAgICBybW91c2VFdmVudCA9IC9eKD86bW91c2V8Y29udGV4dG1lbnUpfGNsaWNrLywK
LSAgICByZm9jdXNNb3JwaCA9IC9eKD86Zm9jdXNpbmZvY3VzfGZvY3Vzb3V0Ymx1cikkLywKLSAg
ICBydHlwZW5hbWVzcGFjZSA9IC9eKFteLl0qKSg/OlwuKC4rKXwpJC87Ci0KLWZ1bmN0aW9uIHJl
dHVyblRydWUoKSB7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWZ1bmN0aW9uIHJldHVybkZhbHNl
KCkgewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotLyoKLSAqIEhlbHBlciBmdW5jdGlvbnMgZm9y
IG1hbmFnaW5nIGV2ZW50cyAtLSBub3QgcGFydCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4KLSAq
IFByb3BzIHRvIERlYW4gRWR3YXJkcycgYWRkRXZlbnQgbGlicmFyeSBmb3IgbWFueSBvZiB0aGUg
aWRlYXMuCi0gKi8KLWpRdWVyeS5ldmVudCA9IHsKLQotICAgIGdsb2JhbDoge30sCi0KLSAgICBh
ZGQ6IGZ1bmN0aW9uKCBlbGVtLCB0eXBlcywgaGFuZGxlciwgZGF0YSwgc2VsZWN0b3IgKSB7Ci0g
ICAgdmFyIHRtcCwgZXZlbnRzLCB0LCBoYW5kbGVPYmpJbiwKLSAgICBzcGVjaWFsLCBldmVudEhh
bmRsZSwgaGFuZGxlT2JqLAotICAgIGhhbmRsZXJzLCB0eXBlLCBuYW1lc3BhY2VzLCBvcmlnVHlw
ZSwKLSAgICBlbGVtRGF0YSA9IGpRdWVyeS5fZGF0YSggZWxlbSApOwotCi0gICAgLy8gRG9uJ3Qg
YXR0YWNoIGV2ZW50cyB0byBub0RhdGEgb3IgdGV4dC9jb21tZW50IG5vZGVzIChidXQgYWxsb3cg
cGxhaW4gb2JqZWN0cykKLSAgICBpZiAoICFlbGVtRGF0YSApIHsKLSAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgLy8gQ2FsbGVyIGNhbiBwYXNzIGluIGFuIG9iamVjdCBvZiBjdXN0b20gZGF0YSBp
biBsaWV1IG9mIHRoZSBoYW5kbGVyCi0gICAgaWYgKCBoYW5kbGVyLmhhbmRsZXIgKSB7Ci0gICAg
aGFuZGxlT2JqSW4gPSBoYW5kbGVyOwotICAgIGhhbmRsZXIgPSBoYW5kbGVPYmpJbi5oYW5kbGVy
OwotICAgIHNlbGVjdG9yID0gaGFuZGxlT2JqSW4uc2VsZWN0b3I7Ci0gICAgfQotCi0gICAgLy8g
TWFrZSBzdXJlIHRoYXQgdGhlIGhhbmRsZXIgaGFzIGEgdW5pcXVlIElELCB1c2VkIHRvIGZpbmQv
cmVtb3ZlIGl0IGxhdGVyCi0gICAgaWYgKCAhaGFuZGxlci5ndWlkICkgewotICAgIGhhbmRsZXIu
Z3VpZCA9IGpRdWVyeS5ndWlkKys7Ci0gICAgfQotCi0gICAgLy8gSW5pdCB0aGUgZWxlbWVudCdz
IGV2ZW50IHN0cnVjdHVyZSBhbmQgbWFpbiBoYW5kbGVyLCBpZiB0aGlzIGlzIHRoZSBmaXJzdAot
ICAgIGlmICggIShldmVudHMgPSBlbGVtRGF0YS5ldmVudHMpICkgewotICAgIGV2ZW50cyA9IGVs
ZW1EYXRhLmV2ZW50cyA9IHt9OwotICAgIH0KLSAgICBpZiAoICEoZXZlbnRIYW5kbGUgPSBlbGVt
RGF0YS5oYW5kbGUpICkgewotICAgIGV2ZW50SGFuZGxlID0gZWxlbURhdGEuaGFuZGxlID0gZnVu
Y3Rpb24oIGUgKSB7Ci0gICAgLy8gRGlzY2FyZCB0aGUgc2Vjb25kIGV2ZW50IG9mIGEgalF1ZXJ5
LmV2ZW50LnRyaWdnZXIoKSBhbmQKLSAgICAvLyB3aGVuIGFuIGV2ZW50IGlzIGNhbGxlZCBhZnRl
ciBhIHBhZ2UgaGFzIHVubG9hZGVkCi0gICAgcmV0dXJuIHR5cGVvZiBqUXVlcnkgIT09IGNvcmVf
c3RydW5kZWZpbmVkICYmICghZSB8fCBqUXVlcnkuZXZlbnQudHJpZ2dlcmVkICE9PSBlLnR5cGUp
ID8KLSAgICBqUXVlcnkuZXZlbnQuZGlzcGF0Y2guYXBwbHkoIGV2ZW50SGFuZGxlLmVsZW0sIGFy
Z3VtZW50cyApIDoKLSAgICB1bmRlZmluZWQ7Ci0gICAgfTsKLSAgICAvLyBBZGQgZWxlbSBhcyBh
IHByb3BlcnR5IG9mIHRoZSBoYW5kbGUgZm4gdG8gcHJldmVudCBhIG1lbW9yeSBsZWFrIHdpdGgg
SUUgbm9uLW5hdGl2ZSBldmVudHMKLSAgICBldmVudEhhbmRsZS5lbGVtID0gZWxlbTsKLSAgICB9
Ci0KLSAgICAvLyBIYW5kbGUgbXVsdGlwbGUgZXZlbnRzIHNlcGFyYXRlZCBieSBhIHNwYWNlCi0g
ICAgLy8galF1ZXJ5KC4uLikuYmluZCgibW91c2VvdmVyIG1vdXNlb3V0IiwgZm4pOwotICAgIHR5
cGVzID0gKCB0eXBlcyB8fCAiIiApLm1hdGNoKCBjb3JlX3Jub3R3aGl0ZSApIHx8IFsiIl07Ci0g
ICAgdCA9IHR5cGVzLmxlbmd0aDsKLSAgICB3aGlsZSAoIHQtLSApIHsKLSAgICB0bXAgPSBydHlw
ZW5hbWVzcGFjZS5leGVjKCB0eXBlc1t0XSApIHx8IFtdOwotICAgIHR5cGUgPSBvcmlnVHlwZSA9
IHRtcFsxXTsKLSAgICBuYW1lc3BhY2VzID0gKCB0bXBbMl0gfHwgIiIgKS5zcGxpdCggIi4iICku
c29ydCgpOwotCi0gICAgLy8gSWYgZXZlbnQgY2hhbmdlcyBpdHMgdHlwZSwgdXNlIHRoZSBzcGVj
aWFsIGV2ZW50IGhhbmRsZXJzIGZvciB0aGUgY2hhbmdlZCB0eXBlCi0gICAgc3BlY2lhbCA9IGpR
dWVyeS5ldmVudC5zcGVjaWFsWyB0eXBlIF0gfHwge307Ci0KLSAgICAvLyBJZiBzZWxlY3RvciBk
ZWZpbmVkLCBkZXRlcm1pbmUgc3BlY2lhbCBldmVudCBhcGkgdHlwZSwgb3RoZXJ3aXNlIGdpdmVu
IHR5cGUKLSAgICB0eXBlID0gKCBzZWxlY3RvciA/IHNwZWNpYWwuZGVsZWdhdGVUeXBlIDogc3Bl
Y2lhbC5iaW5kVHlwZSApIHx8IHR5cGU7Ci0KLSAgICAvLyBVcGRhdGUgc3BlY2lhbCBiYXNlZCBv
biBuZXdseSByZXNldCB0eXBlCi0gICAgc3BlY2lhbCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsWyB0
eXBlIF0gfHwge307Ci0KLSAgICAvLyBoYW5kbGVPYmogaXMgcGFzc2VkIHRvIGFsbCBldmVudCBo
YW5kbGVycwotICAgIGhhbmRsZU9iaiA9IGpRdWVyeS5leHRlbmQoewotICAgIHR5cGU6IHR5cGUs
Ci0gICAgb3JpZ1R5cGU6IG9yaWdUeXBlLAotICAgIGRhdGE6IGRhdGEsCi0gICAgaGFuZGxlcjog
aGFuZGxlciwKLSAgICBndWlkOiBoYW5kbGVyLmd1aWQsCi0gICAgc2VsZWN0b3I6IHNlbGVjdG9y
LAotICAgIG5lZWRzQ29udGV4dDogc2VsZWN0b3IgJiYgalF1ZXJ5LmV4cHIubWF0Y2gubmVlZHND
b250ZXh0LnRlc3QoIHNlbGVjdG9yICksCi0gICAgbmFtZXNwYWNlOiBuYW1lc3BhY2VzLmpvaW4o
Ii4iKQotICAgIH0sIGhhbmRsZU9iakluICk7Ci0KLSAgICAvLyBJbml0IHRoZSBldmVudCBoYW5k
bGVyIHF1ZXVlIGlmIHdlJ3JlIHRoZSBmaXJzdAotICAgIGlmICggIShoYW5kbGVycyA9IGV2ZW50
c1sgdHlwZSBdKSApIHsKLSAgICBoYW5kbGVycyA9IGV2ZW50c1sgdHlwZSBdID0gW107Ci0gICAg
aGFuZGxlcnMuZGVsZWdhdGVDb3VudCA9IDA7Ci0KLSAgICAvLyBPbmx5IHVzZSBhZGRFdmVudExp
c3RlbmVyL2F0dGFjaEV2ZW50IGlmIHRoZSBzcGVjaWFsIGV2ZW50cyBoYW5kbGVyIHJldHVybnMg
ZmFsc2UKLSAgICBpZiAoICFzcGVjaWFsLnNldHVwIHx8IHNwZWNpYWwuc2V0dXAuY2FsbCggZWxl
bSwgZGF0YSwgbmFtZXNwYWNlcywgZXZlbnRIYW5kbGUgKSA9PT0gZmFsc2UgKSB7Ci0gICAgLy8g
QmluZCB0aGUgZ2xvYmFsIGV2ZW50IGhhbmRsZXIgdG8gdGhlIGVsZW1lbnQKLSAgICBpZiAoIGVs
ZW0uYWRkRXZlbnRMaXN0ZW5lciApIHsKLSAgICBlbGVtLmFkZEV2ZW50TGlzdGVuZXIoIHR5cGUs
IGV2ZW50SGFuZGxlLCBmYWxzZSApOwotCi0gICAgfSBlbHNlIGlmICggZWxlbS5hdHRhY2hFdmVu
dCApIHsKLSAgICBlbGVtLmF0dGFjaEV2ZW50KCAib24iICsgdHlwZSwgZXZlbnRIYW5kbGUgKTsK
LSAgICB9Ci0gICAgfQotICAgIH0KLQotICAgIGlmICggc3BlY2lhbC5hZGQgKSB7Ci0gICAgc3Bl
Y2lhbC5hZGQuY2FsbCggZWxlbSwgaGFuZGxlT2JqICk7Ci0KLSAgICBpZiAoICFoYW5kbGVPYmou
aGFuZGxlci5ndWlkICkgewotICAgIGhhbmRsZU9iai5oYW5kbGVyLmd1aWQgPSBoYW5kbGVyLmd1
aWQ7Ci0gICAgfQotICAgIH0KLQotICAgIC8vIEFkZCB0byB0aGUgZWxlbWVudCdzIGhhbmRsZXIg
bGlzdCwgZGVsZWdhdGVzIGluIGZyb250Ci0gICAgaWYgKCBzZWxlY3RvciApIHsKLSAgICBoYW5k
bGVycy5zcGxpY2UoIGhhbmRsZXJzLmRlbGVnYXRlQ291bnQrKywgMCwgaGFuZGxlT2JqICk7Ci0g
ICAgfSBlbHNlIHsKLSAgICBoYW5kbGVycy5wdXNoKCBoYW5kbGVPYmogKTsKLSAgICB9Ci0KLSAg
ICAvLyBLZWVwIHRyYWNrIG9mIHdoaWNoIGV2ZW50cyBoYXZlIGV2ZXIgYmVlbiB1c2VkLCBmb3Ig
ZXZlbnQgb3B0aW1pemF0aW9uCi0gICAgalF1ZXJ5LmV2ZW50Lmdsb2JhbFsgdHlwZSBdID0gdHJ1
ZTsKLSAgICB9Ci0KLSAgICAvLyBOdWxsaWZ5IGVsZW0gdG8gcHJldmVudCBtZW1vcnkgbGVha3Mg
aW4gSUUKLSAgICBlbGVtID0gbnVsbDsKLSAgICB9LAotCi0gICAgLy8gRGV0YWNoIGFuIGV2ZW50
IG9yIHNldCBvZiBldmVudHMgZnJvbSBhbiBlbGVtZW50Ci0gICAgcmVtb3ZlOiBmdW5jdGlvbigg
ZWxlbSwgdHlwZXMsIGhhbmRsZXIsIHNlbGVjdG9yLCBtYXBwZWRUeXBlcyApIHsKLSAgICB2YXIg
aiwgaGFuZGxlT2JqLCB0bXAsCi0gICAgb3JpZ0NvdW50LCB0LCBldmVudHMsCi0gICAgc3BlY2lh
bCwgaGFuZGxlcnMsIHR5cGUsCi0gICAgbmFtZXNwYWNlcywgb3JpZ1R5cGUsCi0gICAgZWxlbURh
dGEgPSBqUXVlcnkuaGFzRGF0YSggZWxlbSApICYmIGpRdWVyeS5fZGF0YSggZWxlbSApOwotCi0g
ICAgaWYgKCAhZWxlbURhdGEgfHwgIShldmVudHMgPSBlbGVtRGF0YS5ldmVudHMpICkgewotICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBPbmNlIGZvciBlYWNoIHR5cGUubmFtZXNwYWNlIGlu
IHR5cGVzOyB0eXBlIG1heSBiZSBvbWl0dGVkCi0gICAgdHlwZXMgPSAoIHR5cGVzIHx8ICIiICku
bWF0Y2goIGNvcmVfcm5vdHdoaXRlICkgfHwgWyIiXTsKLSAgICB0ID0gdHlwZXMubGVuZ3RoOwot
ICAgIHdoaWxlICggdC0tICkgewotICAgIHRtcCA9IHJ0eXBlbmFtZXNwYWNlLmV4ZWMoIHR5cGVz
W3RdICkgfHwgW107Ci0gICAgdHlwZSA9IG9yaWdUeXBlID0gdG1wWzFdOwotICAgIG5hbWVzcGFj
ZXMgPSAoIHRtcFsyXSB8fCAiIiApLnNwbGl0KCAiLiIgKS5zb3J0KCk7Ci0KLSAgICAvLyBVbmJp
bmQgYWxsIGV2ZW50cyAob24gdGhpcyBuYW1lc3BhY2UsIGlmIHByb3ZpZGVkKSBmb3IgdGhlIGVs
ZW1lbnQKLSAgICBpZiAoICF0eXBlICkgewotICAgIGZvciAoIHR5cGUgaW4gZXZlbnRzICkgewot
ICAgIGpRdWVyeS5ldmVudC5yZW1vdmUoIGVsZW0sIHR5cGUgKyB0eXBlc1sgdCBdLCBoYW5kbGVy
LCBzZWxlY3RvciwgdHJ1ZSApOwotICAgIH0KLSAgICBjb250aW51ZTsKLSAgICB9Ci0KLSAgICBz
cGVjaWFsID0galF1ZXJ5LmV2ZW50LnNwZWNpYWxbIHR5cGUgXSB8fCB7fTsKLSAgICB0eXBlID0g
KCBzZWxlY3RvciA/IHNwZWNpYWwuZGVsZWdhdGVUeXBlIDogc3BlY2lhbC5iaW5kVHlwZSApIHx8
IHR5cGU7Ci0gICAgaGFuZGxlcnMgPSBldmVudHNbIHR5cGUgXSB8fCBbXTsKLSAgICB0bXAgPSB0
bXBbMl0gJiYgbmV3IFJlZ0V4cCggIihefFxcLikiICsgbmFtZXNwYWNlcy5qb2luKCJcXC4oPzou
KlxcLnwpIikgKyAiKFxcLnwkKSIgKTsKLQotICAgIC8vIFJlbW92ZSBtYXRjaGluZyBldmVudHMK
LSAgICBvcmlnQ291bnQgPSBqID0gaGFuZGxlcnMubGVuZ3RoOwotICAgIHdoaWxlICggai0tICkg
ewotICAgIGhhbmRsZU9iaiA9IGhhbmRsZXJzWyBqIF07Ci0KLSAgICBpZiAoICggbWFwcGVkVHlw
ZXMgfHwgb3JpZ1R5cGUgPT09IGhhbmRsZU9iai5vcmlnVHlwZSApICYmCi0gICAgKCAhaGFuZGxl
ciB8fCBoYW5kbGVyLmd1aWQgPT09IGhhbmRsZU9iai5ndWlkICkgJiYKLSAgICAoICF0bXAgfHwg
dG1wLnRlc3QoIGhhbmRsZU9iai5uYW1lc3BhY2UgKSApICYmCi0gICAgKCAhc2VsZWN0b3IgfHwg
c2VsZWN0b3IgPT09IGhhbmRsZU9iai5zZWxlY3RvciB8fCBzZWxlY3RvciA9PT0gIioqIiAmJiBo
YW5kbGVPYmouc2VsZWN0b3IgKSApIHsKLSAgICBoYW5kbGVycy5zcGxpY2UoIGosIDEgKTsKLQot
ICAgIGlmICggaGFuZGxlT2JqLnNlbGVjdG9yICkgewotICAgIGhhbmRsZXJzLmRlbGVnYXRlQ291
bnQtLTsKLSAgICB9Ci0gICAgaWYgKCBzcGVjaWFsLnJlbW92ZSApIHsKLSAgICBzcGVjaWFsLnJl
bW92ZS5jYWxsKCBlbGVtLCBoYW5kbGVPYmogKTsKLSAgICB9Ci0gICAgfQotICAgIH0KLQotICAg
IC8vIFJlbW92ZSBnZW5lcmljIGV2ZW50IGhhbmRsZXIgaWYgd2UgcmVtb3ZlZCBzb21ldGhpbmcg
YW5kIG5vIG1vcmUgaGFuZGxlcnMgZXhpc3QKLSAgICAvLyAoYXZvaWRzIHBvdGVudGlhbCBmb3Ig
ZW5kbGVzcyByZWN1cnNpb24gZHVyaW5nIHJlbW92YWwgb2Ygc3BlY2lhbCBldmVudCBoYW5kbGVy
cykKLSAgICBpZiAoIG9yaWdDb3VudCAmJiAhaGFuZGxlcnMubGVuZ3RoICkgewotICAgIGlmICgg
IXNwZWNpYWwudGVhcmRvd24gfHwgc3BlY2lhbC50ZWFyZG93bi5jYWxsKCBlbGVtLCBuYW1lc3Bh
Y2VzLCBlbGVtRGF0YS5oYW5kbGUgKSA9PT0gZmFsc2UgKSB7Ci0gICAgalF1ZXJ5LnJlbW92ZUV2
ZW50KCBlbGVtLCB0eXBlLCBlbGVtRGF0YS5oYW5kbGUgKTsKLSAgICB9Ci0KLSAgICBkZWxldGUg
ZXZlbnRzWyB0eXBlIF07Ci0gICAgfQotICAgIH0KLQotICAgIC8vIFJlbW92ZSB0aGUgZXhwYW5k
byBpZiBpdCdzIG5vIGxvbmdlciB1c2VkCi0gICAgaWYgKCBqUXVlcnkuaXNFbXB0eU9iamVjdCgg
ZXZlbnRzICkgKSB7Ci0gICAgZGVsZXRlIGVsZW1EYXRhLmhhbmRsZTsKLQotICAgIC8vIHJlbW92
ZURhdGEgYWxzbyBjaGVja3MgZm9yIGVtcHRpbmVzcyBhbmQgY2xlYXJzIHRoZSBleHBhbmRvIGlm
IGVtcHR5Ci0gICAgLy8gc28gdXNlIGl0IGluc3RlYWQgb2YgZGVsZXRlCi0gICAgalF1ZXJ5Ll9y
ZW1vdmVEYXRhKCBlbGVtLCAiZXZlbnRzIiApOwotICAgIH0KLSAgICB9LAotCi0gICAgdHJpZ2dl
cjogZnVuY3Rpb24oIGV2ZW50LCBkYXRhLCBlbGVtLCBvbmx5SGFuZGxlcnMgKSB7Ci0gICAgdmFy
IGhhbmRsZSwgb250eXBlLCBjdXIsCi0gICAgYnViYmxlVHlwZSwgc3BlY2lhbCwgdG1wLCBpLAot
ICAgIGV2ZW50UGF0aCA9IFsgZWxlbSB8fCBkb2N1bWVudCBdLAotICAgIHR5cGUgPSBjb3JlX2hh
c093bi5jYWxsKCBldmVudCwgInR5cGUiICkgPyBldmVudC50eXBlIDogZXZlbnQsCi0gICAgbmFt
ZXNwYWNlcyA9IGNvcmVfaGFzT3duLmNhbGwoIGV2ZW50LCAibmFtZXNwYWNlIiApID8gZXZlbnQu
bmFtZXNwYWNlLnNwbGl0KCIuIikgOiBbXTsKLQotICAgIGN1ciA9IHRtcCA9IGVsZW0gPSBlbGVt
IHx8IGRvY3VtZW50OwotCi0gICAgLy8gRG9uJ3QgZG8gZXZlbnRzIG9uIHRleHQgYW5kIGNvbW1l
bnQgbm9kZXMKLSAgICBpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDMgfHwgZWxlbS5ub2RlVHlwZSA9
PT0gOCApIHsKLSAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gZm9jdXMvYmx1ciBtb3JwaHMg
dG8gZm9jdXNpbi9vdXQ7IGVuc3VyZSB3ZSdyZSBub3QgZmlyaW5nIHRoZW0gcmlnaHQgbm93Ci0g
ICAgaWYgKCByZm9jdXNNb3JwaC50ZXN0KCB0eXBlICsgalF1ZXJ5LmV2ZW50LnRyaWdnZXJlZCAp
ICkgewotICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIHR5cGUuaW5kZXhPZigiLiIpID49
IDAgKSB7Ci0gICAgLy8gTmFtZXNwYWNlZCB0cmlnZ2VyOyBjcmVhdGUgYSByZWdleHAgdG8gbWF0
Y2ggZXZlbnQgdHlwZSBpbiBoYW5kbGUoKQotICAgIG5hbWVzcGFjZXMgPSB0eXBlLnNwbGl0KCIu
Iik7Ci0gICAgdHlwZSA9IG5hbWVzcGFjZXMuc2hpZnQoKTsKLSAgICBuYW1lc3BhY2VzLnNvcnQo
KTsKLSAgICB9Ci0gICAgb250eXBlID0gdHlwZS5pbmRleE9mKCI6IikgPCAwICYmICJvbiIgKyB0
eXBlOwotCi0gICAgLy8gQ2FsbGVyIGNhbiBwYXNzIGluIGEgalF1ZXJ5LkV2ZW50IG9iamVjdCwg
T2JqZWN0LCBvciBqdXN0IGFuIGV2ZW50IHR5cGUgc3RyaW5nCi0gICAgZXZlbnQgPSBldmVudFsg
alF1ZXJ5LmV4cGFuZG8gXSA/Ci0gICAgZXZlbnQgOgotICAgIG5ldyBqUXVlcnkuRXZlbnQoIHR5
cGUsIHR5cGVvZiBldmVudCA9PT0gIm9iamVjdCIgJiYgZXZlbnQgKTsKLQotICAgIGV2ZW50Lmlz
VHJpZ2dlciA9IHRydWU7Ci0gICAgZXZlbnQubmFtZXNwYWNlID0gbmFtZXNwYWNlcy5qb2luKCIu
Iik7Ci0gICAgZXZlbnQubmFtZXNwYWNlX3JlID0gZXZlbnQubmFtZXNwYWNlID8KLSAgICBuZXcg
UmVnRXhwKCAiKF58XFwuKSIgKyBuYW1lc3BhY2VzLmpvaW4oIlxcLig/Oi4qXFwufCkiKSArICIo
XFwufCQpIiApIDoKLSAgICBudWxsOwotCi0gICAgLy8gQ2xlYW4gdXAgdGhlIGV2ZW50IGluIGNh
c2UgaXQgaXMgYmVpbmcgcmV1c2VkCi0gICAgZXZlbnQucmVzdWx0ID0gdW5kZWZpbmVkOwotICAg
IGlmICggIWV2ZW50LnRhcmdldCApIHsKLSAgICBldmVudC50YXJnZXQgPSBlbGVtOwotICAgIH0K
LQotICAgIC8vIENsb25lIGFueSBpbmNvbWluZyBkYXRhIGFuZCBwcmVwZW5kIHRoZSBldmVudCwg
Y3JlYXRpbmcgdGhlIGhhbmRsZXIgYXJnIGxpc3QKLSAgICBkYXRhID0gZGF0YSA9PSBudWxsID8K
LSAgICBbIGV2ZW50IF0gOgotICAgIGpRdWVyeS5tYWtlQXJyYXkoIGRhdGEsIFsgZXZlbnQgXSAp
OwotCi0gICAgLy8gQWxsb3cgc3BlY2lhbCBldmVudHMgdG8gZHJhdyBvdXRzaWRlIHRoZSBsaW5l
cwotICAgIHNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgdHlwZSBdIHx8IHt9OwotICAg
IGlmICggIW9ubHlIYW5kbGVycyAmJiBzcGVjaWFsLnRyaWdnZXIgJiYgc3BlY2lhbC50cmlnZ2Vy
LmFwcGx5KCBlbGVtLCBkYXRhICkgPT09IGZhbHNlICkgewotICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICAvLyBEZXRlcm1pbmUgZXZlbnQgcHJvcGFnYXRpb24gcGF0aCBpbiBhZHZhbmNlLCBwZXIg
VzNDIGV2ZW50cyBzcGVjICgjOTk1MSkKLSAgICAvLyBCdWJibGUgdXAgdG8gZG9jdW1lbnQsIHRo
ZW4gdG8gd2luZG93OyB3YXRjaCBmb3IgYSBnbG9iYWwgb3duZXJEb2N1bWVudCB2YXIgKCM5NzI0
KQotICAgIGlmICggIW9ubHlIYW5kbGVycyAmJiAhc3BlY2lhbC5ub0J1YmJsZSAmJiAhalF1ZXJ5
LmlzV2luZG93KCBlbGVtICkgKSB7Ci0KLSAgICBidWJibGVUeXBlID0gc3BlY2lhbC5kZWxlZ2F0
ZVR5cGUgfHwgdHlwZTsKLSAgICBpZiAoICFyZm9jdXNNb3JwaC50ZXN0KCBidWJibGVUeXBlICsg
dHlwZSApICkgewotICAgIGN1ciA9IGN1ci5wYXJlbnROb2RlOwotICAgIH0KLSAgICBmb3IgKCA7
IGN1cjsgY3VyID0gY3VyLnBhcmVudE5vZGUgKSB7Ci0gICAgZXZlbnRQYXRoLnB1c2goIGN1ciAp
OwotICAgIHRtcCA9IGN1cjsKLSAgICB9Ci0KLSAgICAvLyBPbmx5IGFkZCB3aW5kb3cgaWYgd2Ug
Z290IHRvIGRvY3VtZW50IChlLmcuLCBub3QgcGxhaW4gb2JqIG9yIGRldGFjaGVkIERPTSkKLSAg
ICBpZiAoIHRtcCA9PT0gKGVsZW0ub3duZXJEb2N1bWVudCB8fCBkb2N1bWVudCkgKSB7Ci0gICAg
ZXZlbnRQYXRoLnB1c2goIHRtcC5kZWZhdWx0VmlldyB8fCB0bXAucGFyZW50V2luZG93IHx8IHdp
bmRvdyApOwotICAgIH0KLSAgICB9Ci0KLSAgICAvLyBGaXJlIGhhbmRsZXJzIG9uIHRoZSBldmVu
dCBwYXRoCi0gICAgaSA9IDA7Ci0gICAgd2hpbGUgKCAoY3VyID0gZXZlbnRQYXRoW2krK10pICYm
ICFldmVudC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpICkgewotCi0gICAgZXZlbnQudHlwZSA9IGkg
PiAxID8KLSAgICBidWJibGVUeXBlIDoKLSAgICBzcGVjaWFsLmJpbmRUeXBlIHx8IHR5cGU7Ci0K
LSAgICAvLyBqUXVlcnkgaGFuZGxlcgotICAgIGhhbmRsZSA9ICggalF1ZXJ5Ll9kYXRhKCBjdXIs
ICJldmVudHMiICkgfHwge30gKVsgZXZlbnQudHlwZSBdICYmIGpRdWVyeS5fZGF0YSggY3VyLCAi
aGFuZGxlIiApOwotICAgIGlmICggaGFuZGxlICkgewotICAgIGhhbmRsZS5hcHBseSggY3VyLCBk
YXRhICk7Ci0gICAgfQotCi0gICAgLy8gTmF0aXZlIGhhbmRsZXIKLSAgICBoYW5kbGUgPSBvbnR5
cGUgJiYgY3VyWyBvbnR5cGUgXTsKLSAgICBpZiAoIGhhbmRsZSAmJiBqUXVlcnkuYWNjZXB0RGF0
YSggY3VyICkgJiYgaGFuZGxlLmFwcGx5ICYmIGhhbmRsZS5hcHBseSggY3VyLCBkYXRhICkgPT09
IGZhbHNlICkgewotICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7Ci0gICAgfQotICAgIH0KLSAg
ICBldmVudC50eXBlID0gdHlwZTsKLQotICAgIC8vIElmIG5vYm9keSBwcmV2ZW50ZWQgdGhlIGRl
ZmF1bHQgYWN0aW9uLCBkbyBpdCBub3cKLSAgICBpZiAoICFvbmx5SGFuZGxlcnMgJiYgIWV2ZW50
LmlzRGVmYXVsdFByZXZlbnRlZCgpICkgewotCi0gICAgaWYgKCAoIXNwZWNpYWwuX2RlZmF1bHQg
fHwgc3BlY2lhbC5fZGVmYXVsdC5hcHBseSggZWxlbS5vd25lckRvY3VtZW50LCBkYXRhICkgPT09
IGZhbHNlKSAmJgotICAgICEodHlwZSA9PT0gImNsaWNrIiAmJiBqUXVlcnkubm9kZU5hbWUoIGVs
ZW0sICJhIiApKSAmJiBqUXVlcnkuYWNjZXB0RGF0YSggZWxlbSApICkgewotCi0gICAgLy8gQ2Fs
bCBhIG5hdGl2ZSBET00gbWV0aG9kIG9uIHRoZSB0YXJnZXQgd2l0aCB0aGUgc2FtZSBuYW1lIG5h
bWUgYXMgdGhlIGV2ZW50LgotICAgIC8vIENhbid0IHVzZSBhbiAuaXNGdW5jdGlvbigpIGNoZWNr
IGhlcmUgYmVjYXVzZSBJRTYvNyBmYWlscyB0aGF0IHRlc3QuCi0gICAgLy8gRG9uJ3QgZG8gZGVm
YXVsdCBhY3Rpb25zIG9uIHdpbmRvdywgdGhhdCdzIHdoZXJlIGdsb2JhbCB2YXJpYWJsZXMgYmUg
KCM2MTcwKQotICAgIGlmICggb250eXBlICYmIGVsZW1bIHR5cGUgXSAmJiAhalF1ZXJ5LmlzV2lu
ZG93KCBlbGVtICkgKSB7Ci0KLSAgICAvLyBEb24ndCByZS10cmlnZ2VyIGFuIG9uRk9PIGV2ZW50
IHdoZW4gd2UgY2FsbCBpdHMgRk9PKCkgbWV0aG9kCi0gICAgdG1wID0gZWxlbVsgb250eXBlIF07
Ci0KLSAgICBpZiAoIHRtcCApIHsKLSAgICBlbGVtWyBvbnR5cGUgXSA9IG51bGw7Ci0gICAgfQot
Ci0gICAgLy8gUHJldmVudCByZS10cmlnZ2VyaW5nIG9mIHRoZSBzYW1lIGV2ZW50LCBzaW5jZSB3
ZSBhbHJlYWR5IGJ1YmJsZWQgaXQgYWJvdmUKLSAgICBqUXVlcnkuZXZlbnQudHJpZ2dlcmVkID0g
dHlwZTsKLSAgICB0cnkgewotICAgIGVsZW1bIHR5cGUgXSgpOwotICAgIH0gY2F0Y2ggKCBlICkg
ewotICAgIC8vIElFPDkgZGllcyBvbiBmb2N1cy9ibHVyIHRvIGhpZGRlbiBlbGVtZW50ICgjMTQ4
NiwjMTI1MTgpCi0gICAgLy8gb25seSByZXByb2R1Y2libGUgb24gd2luWFAgSUU4IG5hdGl2ZSwg
bm90IElFOSBpbiBJRTggbW9kZQotICAgIH0KLSAgICBqUXVlcnkuZXZlbnQudHJpZ2dlcmVkID0g
dW5kZWZpbmVkOwotCi0gICAgaWYgKCB0bXAgKSB7Ci0gICAgZWxlbVsgb250eXBlIF0gPSB0bXA7
Ci0gICAgfQotICAgIH0KLSAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIGV2ZW50LnJlc3VsdDsK
LSAgICB9LAotCi0gICAgZGlzcGF0Y2g6IGZ1bmN0aW9uKCBldmVudCApIHsKLQotICAgIC8vIE1h
a2UgYSB3cml0YWJsZSBqUXVlcnkuRXZlbnQgZnJvbSB0aGUgbmF0aXZlIGV2ZW50IG9iamVjdAot
ICAgIGV2ZW50ID0galF1ZXJ5LmV2ZW50LmZpeCggZXZlbnQgKTsKLQotICAgIHZhciBpLCByZXQs
IGhhbmRsZU9iaiwgbWF0Y2hlZCwgaiwKLSAgICBoYW5kbGVyUXVldWUgPSBbXSwKLSAgICBhcmdz
ID0gY29yZV9zbGljZS5jYWxsKCBhcmd1bWVudHMgKSwKLSAgICBoYW5kbGVycyA9ICggalF1ZXJ5
Ll9kYXRhKCB0aGlzLCAiZXZlbnRzIiApIHx8IHt9IClbIGV2ZW50LnR5cGUgXSB8fCBbXSwKLSAg
ICBzcGVjaWFsID0galF1ZXJ5LmV2ZW50LnNwZWNpYWxbIGV2ZW50LnR5cGUgXSB8fCB7fTsKLQot
ICAgIC8vIFVzZSB0aGUgZml4LWVkIGpRdWVyeS5FdmVudCByYXRoZXIgdGhhbiB0aGUgKHJlYWQt
b25seSkgbmF0aXZlIGV2ZW50Ci0gICAgYXJnc1swXSA9IGV2ZW50OwotICAgIGV2ZW50LmRlbGVn
YXRlVGFyZ2V0ID0gdGhpczsKLQotICAgIC8vIENhbGwgdGhlIHByZURpc3BhdGNoIGhvb2sgZm9y
IHRoZSBtYXBwZWQgdHlwZSwgYW5kIGxldCBpdCBiYWlsIGlmIGRlc2lyZWQKLSAgICBpZiAoIHNw
ZWNpYWwucHJlRGlzcGF0Y2ggJiYgc3BlY2lhbC5wcmVEaXNwYXRjaC5jYWxsKCB0aGlzLCBldmVu
dCApID09PSBmYWxzZSApIHsKLSAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gRGV0ZXJtaW5l
IGhhbmRsZXJzCi0gICAgaGFuZGxlclF1ZXVlID0galF1ZXJ5LmV2ZW50LmhhbmRsZXJzLmNhbGwo
IHRoaXMsIGV2ZW50LCBoYW5kbGVycyApOwotCi0gICAgLy8gUnVuIGRlbGVnYXRlcyBmaXJzdDsg
dGhleSBtYXkgd2FudCB0byBzdG9wIHByb3BhZ2F0aW9uIGJlbmVhdGggdXMKLSAgICBpID0gMDsK
LSAgICB3aGlsZSAoIChtYXRjaGVkID0gaGFuZGxlclF1ZXVlWyBpKysgXSkgJiYgIWV2ZW50Lmlz
UHJvcGFnYXRpb25TdG9wcGVkKCkgKSB7Ci0gICAgZXZlbnQuY3VycmVudFRhcmdldCA9IG1hdGNo
ZWQuZWxlbTsKLQotICAgIGogPSAwOwotICAgIHdoaWxlICggKGhhbmRsZU9iaiA9IG1hdGNoZWQu
aGFuZGxlcnNbIGorKyBdKSAmJiAhZXZlbnQuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQo
KSApIHsKLQotICAgIC8vIFRyaWdnZXJlZCBldmVudCBtdXN0IGVpdGhlciAxKSBoYXZlIG5vIG5h
bWVzcGFjZSwgb3IKLSAgICAvLyAyKSBoYXZlIG5hbWVzcGFjZShzKSBhIHN1YnNldCBvciBlcXVh
bCB0byB0aG9zZSBpbiB0aGUgYm91bmQgZXZlbnQgKGJvdGggY2FuIGhhdmUgbm8gbmFtZXNwYWNl
KS4KLSAgICBpZiAoICFldmVudC5uYW1lc3BhY2VfcmUgfHwgZXZlbnQubmFtZXNwYWNlX3JlLnRl
c3QoIGhhbmRsZU9iai5uYW1lc3BhY2UgKSApIHsKLQotICAgIGV2ZW50LmhhbmRsZU9iaiA9IGhh
bmRsZU9iajsKLSAgICBldmVudC5kYXRhID0gaGFuZGxlT2JqLmRhdGE7Ci0KLSAgICByZXQgPSAo
IChqUXVlcnkuZXZlbnQuc3BlY2lhbFsgaGFuZGxlT2JqLm9yaWdUeXBlIF0gfHwge30pLmhhbmRs
ZSB8fCBoYW5kbGVPYmouaGFuZGxlciApCi0gICAgLmFwcGx5KCBtYXRjaGVkLmVsZW0sIGFyZ3Mg
KTsKLQotICAgIGlmICggcmV0ICE9PSB1bmRlZmluZWQgKSB7Ci0gICAgaWYgKCAoZXZlbnQucmVz
dWx0ID0gcmV0KSA9PT0gZmFsc2UgKSB7Ci0gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKLSAg
ICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKLSAgICB9Ci0gICAgfQotICAgIH0KLSAgICB9Ci0g
ICAgfQotCi0gICAgLy8gQ2FsbCB0aGUgcG9zdERpc3BhdGNoIGhvb2sgZm9yIHRoZSBtYXBwZWQg
dHlwZQotICAgIGlmICggc3BlY2lhbC5wb3N0RGlzcGF0Y2ggKSB7Ci0gICAgc3BlY2lhbC5wb3N0
RGlzcGF0Y2guY2FsbCggdGhpcywgZXZlbnQgKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZXZlbnQu
cmVzdWx0OwotICAgIH0sCi0KLSAgICBoYW5kbGVyczogZnVuY3Rpb24oIGV2ZW50LCBoYW5kbGVy
cyApIHsKLSAgICB2YXIgc2VsLCBoYW5kbGVPYmosIG1hdGNoZXMsIGksCi0gICAgaGFuZGxlclF1
ZXVlID0gW10sCi0gICAgZGVsZWdhdGVDb3VudCA9IGhhbmRsZXJzLmRlbGVnYXRlQ291bnQsCi0g
ICAgY3VyID0gZXZlbnQudGFyZ2V0OwotCi0gICAgLy8gRmluZCBkZWxlZ2F0ZSBoYW5kbGVycwot
ICAgIC8vIEJsYWNrLWhvbGUgU1ZHIDx1c2U+IGluc3RhbmNlIHRyZWVzICgjMTMxODApCi0gICAg
Ly8gQXZvaWQgbm9uLWxlZnQtY2xpY2sgYnViYmxpbmcgaW4gRmlyZWZveCAoIzM4NjEpCi0gICAg
aWYgKCBkZWxlZ2F0ZUNvdW50ICYmIGN1ci5ub2RlVHlwZSAmJiAoIWV2ZW50LmJ1dHRvbiB8fCBl
dmVudC50eXBlICE9PSAiY2xpY2siKSApIHsKLQotICAgIGZvciAoIDsgY3VyICE9IHRoaXM7IGN1
ciA9IGN1ci5wYXJlbnROb2RlIHx8IHRoaXMgKSB7Ci0KLSAgICAvLyBEb24ndCBjaGVjayBub24t
ZWxlbWVudHMgKCMxMzIwOCkKLSAgICAvLyBEb24ndCBwcm9jZXNzIGNsaWNrcyBvbiBkaXNhYmxl
ZCBlbGVtZW50cyAoIzY5MTEsICM4MTY1LCAjMTEzODIsICMxMTc2NCkKLSAgICBpZiAoIGN1ci5u
b2RlVHlwZSA9PT0gMSAmJiAoY3VyLmRpc2FibGVkICE9PSB0cnVlIHx8IGV2ZW50LnR5cGUgIT09
ICJjbGljayIpICkgewotICAgIG1hdGNoZXMgPSBbXTsKLSAgICBmb3IgKCBpID0gMDsgaSA8IGRl
bGVnYXRlQ291bnQ7IGkrKyApIHsKLSAgICBoYW5kbGVPYmogPSBoYW5kbGVyc1sgaSBdOwotCi0g
ICAgLy8gRG9uJ3QgY29uZmxpY3Qgd2l0aCBPYmplY3QucHJvdG90eXBlIHByb3BlcnRpZXMgKCMx
MzIwMykKLSAgICBzZWwgPSBoYW5kbGVPYmouc2VsZWN0b3IgKyAiICI7Ci0KLSAgICBpZiAoIG1h
dGNoZXNbIHNlbCBdID09PSB1bmRlZmluZWQgKSB7Ci0gICAgbWF0Y2hlc1sgc2VsIF0gPSBoYW5k
bGVPYmoubmVlZHNDb250ZXh0ID8KLSAgICBqUXVlcnkoIHNlbCwgdGhpcyApLmluZGV4KCBjdXIg
KSA+PSAwIDoKLSAgICBqUXVlcnkuZmluZCggc2VsLCB0aGlzLCBudWxsLCBbIGN1ciBdICkubGVu
Z3RoOwotICAgIH0KLSAgICBpZiAoIG1hdGNoZXNbIHNlbCBdICkgewotICAgIG1hdGNoZXMucHVz
aCggaGFuZGxlT2JqICk7Ci0gICAgfQotICAgIH0KLSAgICBpZiAoIG1hdGNoZXMubGVuZ3RoICkg
ewotICAgIGhhbmRsZXJRdWV1ZS5wdXNoKHsgZWxlbTogY3VyLCBoYW5kbGVyczogbWF0Y2hlcyB9
KTsKLSAgICB9Ci0gICAgfQotICAgIH0KLSAgICB9Ci0KLSAgICAvLyBBZGQgdGhlIHJlbWFpbmlu
ZyAoZGlyZWN0bHktYm91bmQpIGhhbmRsZXJzCi0gICAgaWYgKCBkZWxlZ2F0ZUNvdW50IDwgaGFu
ZGxlcnMubGVuZ3RoICkgewotICAgIGhhbmRsZXJRdWV1ZS5wdXNoKHsgZWxlbTogdGhpcywgaGFu
ZGxlcnM6IGhhbmRsZXJzLnNsaWNlKCBkZWxlZ2F0ZUNvdW50ICkgfSk7Ci0gICAgfQotCi0gICAg
cmV0dXJuIGhhbmRsZXJRdWV1ZTsKLSAgICB9LAotCi0gICAgZml4OiBmdW5jdGlvbiggZXZlbnQg
KSB7Ci0gICAgaWYgKCBldmVudFsgalF1ZXJ5LmV4cGFuZG8gXSApIHsKLSAgICByZXR1cm4gZXZl
bnQ7Ci0gICAgfQotCi0gICAgLy8gQ3JlYXRlIGEgd3JpdGFibGUgY29weSBvZiB0aGUgZXZlbnQg
b2JqZWN0IGFuZCBub3JtYWxpemUgc29tZSBwcm9wZXJ0aWVzCi0gICAgdmFyIGksIHByb3AsIGNv
cHksCi0gICAgdHlwZSA9IGV2ZW50LnR5cGUsCi0gICAgb3JpZ2luYWxFdmVudCA9IGV2ZW50LAot
ICAgIGZpeEhvb2sgPSB0aGlzLmZpeEhvb2tzWyB0eXBlIF07Ci0KLSAgICBpZiAoICFmaXhIb29r
ICkgewotICAgIHRoaXMuZml4SG9va3NbIHR5cGUgXSA9IGZpeEhvb2sgPQotICAgIHJtb3VzZUV2
ZW50LnRlc3QoIHR5cGUgKSA/IHRoaXMubW91c2VIb29rcyA6Ci0gICAgcmtleUV2ZW50LnRlc3Qo
IHR5cGUgKSA/IHRoaXMua2V5SG9va3MgOgotICAgIHt9OwotICAgIH0KLSAgICBjb3B5ID0gZml4
SG9vay5wcm9wcyA/IHRoaXMucHJvcHMuY29uY2F0KCBmaXhIb29rLnByb3BzICkgOiB0aGlzLnBy
b3BzOwotCi0gICAgZXZlbnQgPSBuZXcgalF1ZXJ5LkV2ZW50KCBvcmlnaW5hbEV2ZW50ICk7Ci0K
LSAgICBpID0gY29weS5sZW5ndGg7Ci0gICAgd2hpbGUgKCBpLS0gKSB7Ci0gICAgcHJvcCA9IGNv
cHlbIGkgXTsKLSAgICBldmVudFsgcHJvcCBdID0gb3JpZ2luYWxFdmVudFsgcHJvcCBdOwotICAg
IH0KLQotICAgIC8vIFN1cHBvcnQ6IElFPDkKLSAgICAvLyBGaXggdGFyZ2V0IHByb3BlcnR5ICgj
MTkyNSkKLSAgICBpZiAoICFldmVudC50YXJnZXQgKSB7Ci0gICAgZXZlbnQudGFyZ2V0ID0gb3Jp
Z2luYWxFdmVudC5zcmNFbGVtZW50IHx8IGRvY3VtZW50OwotICAgIH0KLQotICAgIC8vIFN1cHBv
cnQ6IENocm9tZSAyMyssIFNhZmFyaT8KLSAgICAvLyBUYXJnZXQgc2hvdWxkIG5vdCBiZSBhIHRl
eHQgbm9kZSAoIzUwNCwgIzEzMTQzKQotICAgIGlmICggZXZlbnQudGFyZ2V0Lm5vZGVUeXBlID09
PSAzICkgewotICAgIGV2ZW50LnRhcmdldCA9IGV2ZW50LnRhcmdldC5wYXJlbnROb2RlOwotICAg
IH0KLQotICAgIC8vIFN1cHBvcnQ6IElFPDkKLSAgICAvLyBGb3IgbW91c2Uva2V5IGV2ZW50cywg
bWV0YUtleT09ZmFsc2UgaWYgaXQncyB1bmRlZmluZWQgKCMzMzY4LCAjMTEzMjgpCi0gICAgZXZl
bnQubWV0YUtleSA9ICEhZXZlbnQubWV0YUtleTsKLQotICAgIHJldHVybiBmaXhIb29rLmZpbHRl
ciA/IGZpeEhvb2suZmlsdGVyKCBldmVudCwgb3JpZ2luYWxFdmVudCApIDogZXZlbnQ7Ci0gICAg
fSwKLQotICAgIC8vIEluY2x1ZGVzIHNvbWUgZXZlbnQgcHJvcHMgc2hhcmVkIGJ5IEtleUV2ZW50
IGFuZCBNb3VzZUV2ZW50Ci0gICAgcHJvcHM6ICJhbHRLZXkgYnViYmxlcyBjYW5jZWxhYmxlIGN0
cmxLZXkgY3VycmVudFRhcmdldCBldmVudFBoYXNlIG1ldGFLZXkgcmVsYXRlZFRhcmdldCBzaGlm
dEtleSB0YXJnZXQgdGltZVN0YW1wIHZpZXcgd2hpY2giLnNwbGl0KCIgIiksCi0KLSAgICBmaXhI
b29rczoge30sCi0KLSAgICBrZXlIb29rczogewotICAgIHByb3BzOiAiY2hhciBjaGFyQ29kZSBr
ZXkga2V5Q29kZSIuc3BsaXQoIiAiKSwKLSAgICBmaWx0ZXI6IGZ1bmN0aW9uKCBldmVudCwgb3Jp
Z2luYWwgKSB7Ci0KLSAgICAvLyBBZGQgd2hpY2ggZm9yIGtleSBldmVudHMKLSAgICBpZiAoIGV2
ZW50LndoaWNoID09IG51bGwgKSB7Ci0gICAgZXZlbnQud2hpY2ggPSBvcmlnaW5hbC5jaGFyQ29k
ZSAhPSBudWxsID8gb3JpZ2luYWwuY2hhckNvZGUgOiBvcmlnaW5hbC5rZXlDb2RlOwotICAgIH0K
LQotICAgIHJldHVybiBldmVudDsKLSAgICB9Ci0gICAgfSwKLQotICAgIG1vdXNlSG9va3M6IHsK
LSAgICBwcm9wczogImJ1dHRvbiBidXR0b25zIGNsaWVudFggY2xpZW50WSBmcm9tRWxlbWVudCBv
ZmZzZXRYIG9mZnNldFkgcGFnZVggcGFnZVkgc2NyZWVuWCBzY3JlZW5ZIHRvRWxlbWVudCIuc3Bs
aXQoIiAiKSwKLSAgICBmaWx0ZXI6IGZ1bmN0aW9uKCBldmVudCwgb3JpZ2luYWwgKSB7Ci0gICAg
dmFyIGJvZHksIGV2ZW50RG9jLCBkb2MsCi0gICAgYnV0dG9uID0gb3JpZ2luYWwuYnV0dG9uLAot
ICAgIGZyb21FbGVtZW50ID0gb3JpZ2luYWwuZnJvbUVsZW1lbnQ7Ci0KLSAgICAvLyBDYWxjdWxh
dGUgcGFnZVgvWSBpZiBtaXNzaW5nIGFuZCBjbGllbnRYL1kgYXZhaWxhYmxlCi0gICAgaWYgKCBl
dmVudC5wYWdlWCA9PSBudWxsICYmIG9yaWdpbmFsLmNsaWVudFggIT0gbnVsbCApIHsKLSAgICBl
dmVudERvYyA9IGV2ZW50LnRhcmdldC5vd25lckRvY3VtZW50IHx8IGRvY3VtZW50OwotICAgIGRv
YyA9IGV2ZW50RG9jLmRvY3VtZW50RWxlbWVudDsKLSAgICBib2R5ID0gZXZlbnREb2MuYm9keTsK
LQotICAgIGV2ZW50LnBhZ2VYID0gb3JpZ2luYWwuY2xpZW50WCArICggZG9jICYmIGRvYy5zY3Jv
bGxMZWZ0IHx8IGJvZHkgJiYgYm9keS5zY3JvbGxMZWZ0IHx8IDAgKSAtICggZG9jICYmIGRvYy5j
bGllbnRMZWZ0IHx8IGJvZHkgJiYgYm9keS5jbGllbnRMZWZ0IHx8IDAgKTsKLSAgICBldmVudC5w
YWdlWSA9IG9yaWdpbmFsLmNsaWVudFkgKyAoIGRvYyAmJiBkb2Muc2Nyb2xsVG9wICB8fCBib2R5
ICYmIGJvZHkuc2Nyb2xsVG9wICB8fCAwICkgLSAoIGRvYyAmJiBkb2MuY2xpZW50VG9wICB8fCBi
b2R5ICYmIGJvZHkuY2xpZW50VG9wICB8fCAwICk7Ci0gICAgfQotCi0gICAgLy8gQWRkIHJlbGF0
ZWRUYXJnZXQsIGlmIG5lY2Vzc2FyeQotICAgIGlmICggIWV2ZW50LnJlbGF0ZWRUYXJnZXQgJiYg
ZnJvbUVsZW1lbnQgKSB7Ci0gICAgZXZlbnQucmVsYXRlZFRhcmdldCA9IGZyb21FbGVtZW50ID09
PSBldmVudC50YXJnZXQgPyBvcmlnaW5hbC50b0VsZW1lbnQgOiBmcm9tRWxlbWVudDsKLSAgICB9
Ci0KLSAgICAvLyBBZGQgd2hpY2ggZm9yIGNsaWNrOiAxID09PSBsZWZ0OyAyID09PSBtaWRkbGU7
IDMgPT09IHJpZ2h0Ci0gICAgLy8gTm90ZTogYnV0dG9uIGlzIG5vdCBub3JtYWxpemVkLCBzbyBk
b24ndCB1c2UgaXQKLSAgICBpZiAoICFldmVudC53aGljaCAmJiBidXR0b24gIT09IHVuZGVmaW5l
ZCApIHsKLSAgICBldmVudC53aGljaCA9ICggYnV0dG9uICYgMSA/IDEgOiAoIGJ1dHRvbiAmIDIg
PyAzIDogKCBidXR0b24gJiA0ID8gMiA6IDAgKSApICk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGV2
ZW50OwotICAgIH0KLSAgICB9LAotCi0gICAgc3BlY2lhbDogewotICAgIGxvYWQ6IHsKLSAgICAv
LyBQcmV2ZW50IHRyaWdnZXJlZCBpbWFnZS5sb2FkIGV2ZW50cyBmcm9tIGJ1YmJsaW5nIHRvIHdp
bmRvdy5sb2FkCi0gICAgbm9CdWJibGU6IHRydWUKLSAgICB9LAotICAgIGNsaWNrOiB7Ci0gICAg
Ly8gRm9yIGNoZWNrYm94LCBmaXJlIG5hdGl2ZSBldmVudCBzbyBjaGVja2VkIHN0YXRlIHdpbGwg
YmUgcmlnaHQKLSAgICB0cmlnZ2VyOiBmdW5jdGlvbigpIHsKLSAgICBpZiAoIGpRdWVyeS5ub2Rl
TmFtZSggdGhpcywgImlucHV0IiApICYmIHRoaXMudHlwZSA9PT0gImNoZWNrYm94IiAmJiB0aGlz
LmNsaWNrICkgewotICAgIHRoaXMuY2xpY2soKTsKLSAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
ICAgIH0KLSAgICB9LAotICAgIGZvY3VzOiB7Ci0gICAgLy8gRmlyZSBuYXRpdmUgZXZlbnQgaWYg
cG9zc2libGUgc28gYmx1ci9mb2N1cyBzZXF1ZW5jZSBpcyBjb3JyZWN0Ci0gICAgdHJpZ2dlcjog
ZnVuY3Rpb24oKSB7Ci0gICAgaWYgKCB0aGlzICE9PSBkb2N1bWVudC5hY3RpdmVFbGVtZW50ICYm
IHRoaXMuZm9jdXMgKSB7Ci0gICAgdHJ5IHsKLSAgICB0aGlzLmZvY3VzKCk7Ci0gICAgcmV0dXJu
IGZhbHNlOwotICAgIH0gY2F0Y2ggKCBlICkgewotICAgIC8vIFN1cHBvcnQ6IElFPDkKLSAgICAv
LyBJZiB3ZSBlcnJvciBvbiBmb2N1cyB0byBoaWRkZW4gZWxlbWVudCAoIzE0ODYsICMxMjUxOCks
Ci0gICAgLy8gbGV0IC50cmlnZ2VyKCkgcnVuIHRoZSBoYW5kbGVycwotICAgIH0KLSAgICB9Ci0g
ICAgfSwKLSAgICBkZWxlZ2F0ZVR5cGU6ICJmb2N1c2luIgotICAgIH0sCi0gICAgYmx1cjogewot
ICAgIHRyaWdnZXI6IGZ1bmN0aW9uKCkgewotICAgIGlmICggdGhpcyA9PT0gZG9jdW1lbnQuYWN0
aXZlRWxlbWVudCAmJiB0aGlzLmJsdXIgKSB7Ci0gICAgdGhpcy5ibHVyKCk7Ci0gICAgcmV0dXJu
IGZhbHNlOwotICAgIH0KLSAgICB9LAotICAgIGRlbGVnYXRlVHlwZTogImZvY3Vzb3V0IgotICAg
IH0sCi0KLSAgICBiZWZvcmV1bmxvYWQ6IHsKLSAgICBwb3N0RGlzcGF0Y2g6IGZ1bmN0aW9uKCBl
dmVudCApIHsKLQotICAgIC8vIEV2ZW4gd2hlbiByZXR1cm5WYWx1ZSBlcXVhbHMgdG8gdW5kZWZp
bmVkIEZpcmVmb3ggd2lsbCBzdGlsbCBzaG93IGFsZXJ0Ci0gICAgaWYgKCBldmVudC5yZXN1bHQg
IT09IHVuZGVmaW5lZCApIHsKLSAgICBldmVudC5vcmlnaW5hbEV2ZW50LnJldHVyblZhbHVlID0g
ZXZlbnQucmVzdWx0OwotICAgIH0KLSAgICB9Ci0gICAgfQotICAgIH0sCi0KLSAgICBzaW11bGF0
ZTogZnVuY3Rpb24oIHR5cGUsIGVsZW0sIGV2ZW50LCBidWJibGUgKSB7Ci0gICAgLy8gUGlnZ3li
YWNrIG9uIGEgZG9ub3IgZXZlbnQgdG8gc2ltdWxhdGUgYSBkaWZmZXJlbnQgb25lLgotICAgIC8v
IEZha2Ugb3JpZ2luYWxFdmVudCB0byBhdm9pZCBkb25vcidzIHN0b3BQcm9wYWdhdGlvbiwgYnV0
IGlmIHRoZQotICAgIC8vIHNpbXVsYXRlZCBldmVudCBwcmV2ZW50cyBkZWZhdWx0IHRoZW4gd2Ug
ZG8gdGhlIHNhbWUgb24gdGhlIGRvbm9yLgotICAgIHZhciBlID0galF1ZXJ5LmV4dGVuZCgKLSAg
ICBuZXcgalF1ZXJ5LkV2ZW50KCksCi0gICAgZXZlbnQsCi0gICAgeyB0eXBlOiB0eXBlLAotICAg
IGlzU2ltdWxhdGVkOiB0cnVlLAotICAgIG9yaWdpbmFsRXZlbnQ6IHt9Ci0gICAgfQotICAgICk7
Ci0gICAgaWYgKCBidWJibGUgKSB7Ci0gICAgalF1ZXJ5LmV2ZW50LnRyaWdnZXIoIGUsIG51bGws
IGVsZW0gKTsKLSAgICB9IGVsc2UgewotICAgIGpRdWVyeS5ldmVudC5kaXNwYXRjaC5jYWxsKCBl
bGVtLCBlICk7Ci0gICAgfQotICAgIGlmICggZS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSApIHsKLSAg
ICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwotICAgIH0KLSAgICB9Ci19OwotCi1qUXVlcnkucmVt
b3ZlRXZlbnQgPSBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyID8KLSAgICBmdW5jdGlvbigg
ZWxlbSwgdHlwZSwgaGFuZGxlICkgewotICAgIGlmICggZWxlbS5yZW1vdmVFdmVudExpc3RlbmVy
ICkgewotICAgIGVsZW0ucmVtb3ZlRXZlbnRMaXN0ZW5lciggdHlwZSwgaGFuZGxlLCBmYWxzZSAp
OwotICAgIH0KLSAgICB9IDoKLSAgICBmdW5jdGlvbiggZWxlbSwgdHlwZSwgaGFuZGxlICkgewot
ICAgIHZhciBuYW1lID0gIm9uIiArIHR5cGU7Ci0KLSAgICBpZiAoIGVsZW0uZGV0YWNoRXZlbnQg
KSB7Ci0KLSAgICAvLyAjODU0NSwgIzcwNTQsIHByZXZlbnRpbmcgbWVtb3J5IGxlYWtzIGZvciBj
dXN0b20gZXZlbnRzIGluIElFNi04Ci0gICAgLy8gZGV0YWNoRXZlbnQgbmVlZGVkIHByb3BlcnR5
IG9uIGVsZW1lbnQsIGJ5IG5hbWUgb2YgdGhhdCBldmVudCwgdG8gcHJvcGVybHkgZXhwb3NlIGl0
IHRvIEdDCi0gICAgaWYgKCB0eXBlb2YgZWxlbVsgbmFtZSBdID09PSBjb3JlX3N0cnVuZGVmaW5l
ZCApIHsKLSAgICBlbGVtWyBuYW1lIF0gPSBudWxsOwotICAgIH0KLQotICAgIGVsZW0uZGV0YWNo
RXZlbnQoIG5hbWUsIGhhbmRsZSApOwotICAgIH0KLSAgICB9OwotCi1qUXVlcnkuRXZlbnQgPSBm
dW5jdGlvbiggc3JjLCBwcm9wcyApIHsKLSAgICAvLyBBbGxvdyBpbnN0YW50aWF0aW9uIHdpdGhv
dXQgdGhlICduZXcnIGtleXdvcmQKLSAgICBpZiAoICEodGhpcyBpbnN0YW5jZW9mIGpRdWVyeS5F
dmVudCkgKSB7Ci0gICAgcmV0dXJuIG5ldyBqUXVlcnkuRXZlbnQoIHNyYywgcHJvcHMgKTsKLSAg
ICB9Ci0KLSAgICAvLyBFdmVudCBvYmplY3QKLSAgICBpZiAoIHNyYyAmJiBzcmMudHlwZSApIHsK
LSAgICB0aGlzLm9yaWdpbmFsRXZlbnQgPSBzcmM7Ci0gICAgdGhpcy50eXBlID0gc3JjLnR5cGU7
Ci0KLSAgICAvLyBFdmVudHMgYnViYmxpbmcgdXAgdGhlIGRvY3VtZW50IG1heSBoYXZlIGJlZW4g
bWFya2VkIGFzIHByZXZlbnRlZAotICAgIC8vIGJ5IGEgaGFuZGxlciBsb3dlciBkb3duIHRoZSB0
cmVlOyByZWZsZWN0IHRoZSBjb3JyZWN0IHZhbHVlLgotICAgIHRoaXMuaXNEZWZhdWx0UHJldmVu
dGVkID0gKCBzcmMuZGVmYXVsdFByZXZlbnRlZCB8fCBzcmMucmV0dXJuVmFsdWUgPT09IGZhbHNl
IHx8Ci0gICAgc3JjLmdldFByZXZlbnREZWZhdWx0ICYmIHNyYy5nZXRQcmV2ZW50RGVmYXVsdCgp
ICkgPyByZXR1cm5UcnVlIDogcmV0dXJuRmFsc2U7Ci0KLSAgICAvLyBFdmVudCB0eXBlCi0gICAg
fSBlbHNlIHsKLSAgICB0aGlzLnR5cGUgPSBzcmM7Ci0gICAgfQotCi0gICAgLy8gUHV0IGV4cGxp
Y2l0bHkgcHJvdmlkZWQgcHJvcGVydGllcyBvbnRvIHRoZSBldmVudCBvYmplY3QKLSAgICBpZiAo
IHByb3BzICkgewotICAgIGpRdWVyeS5leHRlbmQoIHRoaXMsIHByb3BzICk7Ci0gICAgfQotCi0g
ICAgLy8gQ3JlYXRlIGEgdGltZXN0YW1wIGlmIGluY29taW5nIGV2ZW50IGRvZXNuJ3QgaGF2ZSBv
bmUKLSAgICB0aGlzLnRpbWVTdGFtcCA9IHNyYyAmJiBzcmMudGltZVN0YW1wIHx8IGpRdWVyeS5u
b3coKTsKLQotICAgIC8vIE1hcmsgaXQgYXMgZml4ZWQKLSAgICB0aGlzWyBqUXVlcnkuZXhwYW5k
byBdID0gdHJ1ZTsKLX07Ci0KLS8vIGpRdWVyeS5FdmVudCBpcyBiYXNlZCBvbiBET00zIEV2ZW50
cyBhcyBzcGVjaWZpZWQgYnkgdGhlIEVDTUFTY3JpcHQgTGFuZ3VhZ2UgQmluZGluZwotLy8gaHR0
cDovL3d3dy53My5vcmcvVFIvMjAwMy9XRC1ET00tTGV2ZWwtMy1FdmVudHMtMjAwMzAzMzEvZWNt
YS1zY3JpcHQtYmluZGluZy5odG1sCi1qUXVlcnkuRXZlbnQucHJvdG90eXBlID0gewotICAgIGlz
RGVmYXVsdFByZXZlbnRlZDogcmV0dXJuRmFsc2UsCi0gICAgaXNQcm9wYWdhdGlvblN0b3BwZWQ6
IHJldHVybkZhbHNlLAotICAgIGlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkOiByZXR1cm5G
YWxzZSwKLQotICAgIHByZXZlbnREZWZhdWx0OiBmdW5jdGlvbigpIHsKLSAgICB2YXIgZSA9IHRo
aXMub3JpZ2luYWxFdmVudDsKLQotICAgIHRoaXMuaXNEZWZhdWx0UHJldmVudGVkID0gcmV0dXJu
VHJ1ZTsKLSAgICBpZiAoICFlICkgewotICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBJZiBw
cmV2ZW50RGVmYXVsdCBleGlzdHMsIHJ1biBpdCBvbiB0aGUgb3JpZ2luYWwgZXZlbnQKLSAgICBp
ZiAoIGUucHJldmVudERlZmF1bHQgKSB7Ci0gICAgZS5wcmV2ZW50RGVmYXVsdCgpOwotCi0gICAg
Ly8gU3VwcG9ydDogSUUKLSAgICAvLyBPdGhlcndpc2Ugc2V0IHRoZSByZXR1cm5WYWx1ZSBwcm9w
ZXJ0eSBvZiB0aGUgb3JpZ2luYWwgZXZlbnQgdG8gZmFsc2UKLSAgICB9IGVsc2UgewotICAgIGUu
cmV0dXJuVmFsdWUgPSBmYWxzZTsKLSAgICB9Ci0gICAgfSwKLSAgICBzdG9wUHJvcGFnYXRpb246
IGZ1bmN0aW9uKCkgewotICAgIHZhciBlID0gdGhpcy5vcmlnaW5hbEV2ZW50OwotCi0gICAgdGhp
cy5pc1Byb3BhZ2F0aW9uU3RvcHBlZCA9IHJldHVyblRydWU7Ci0gICAgaWYgKCAhZSApIHsKLSAg
ICByZXR1cm47Ci0gICAgfQotICAgIC8vIElmIHN0b3BQcm9wYWdhdGlvbiBleGlzdHMsIHJ1biBp
dCBvbiB0aGUgb3JpZ2luYWwgZXZlbnQKLSAgICBpZiAoIGUuc3RvcFByb3BhZ2F0aW9uICkgewot
ICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7Ci0gICAgfQotCi0gICAgLy8gU3VwcG9ydDogSUUKLSAg
ICAvLyBTZXQgdGhlIGNhbmNlbEJ1YmJsZSBwcm9wZXJ0eSBvZiB0aGUgb3JpZ2luYWwgZXZlbnQg
dG8gdHJ1ZQotICAgIGUuY2FuY2VsQnViYmxlID0gdHJ1ZTsKLSAgICB9LAotICAgIHN0b3BJbW1l
ZGlhdGVQcm9wYWdhdGlvbjogZnVuY3Rpb24oKSB7Ci0gICAgdGhpcy5pc0ltbWVkaWF0ZVByb3Bh
Z2F0aW9uU3RvcHBlZCA9IHJldHVyblRydWU7Ci0gICAgdGhpcy5zdG9wUHJvcGFnYXRpb24oKTsK
LSAgICB9Ci19OwotCi0vLyBDcmVhdGUgbW91c2VlbnRlci9sZWF2ZSBldmVudHMgdXNpbmcgbW91
c2VvdmVyL291dCBhbmQgZXZlbnQtdGltZSBjaGVja3MKLWpRdWVyeS5lYWNoKHsKLSAgICBtb3Vz
ZWVudGVyOiAibW91c2VvdmVyIiwKLSAgICBtb3VzZWxlYXZlOiAibW91c2VvdXQiCi19LCBmdW5j
dGlvbiggb3JpZywgZml4ICkgewotICAgIGpRdWVyeS5ldmVudC5zcGVjaWFsWyBvcmlnIF0gPSB7
Ci0gICAgZGVsZWdhdGVUeXBlOiBmaXgsCi0gICAgYmluZFR5cGU6IGZpeCwKLQotICAgIGhhbmRs
ZTogZnVuY3Rpb24oIGV2ZW50ICkgewotICAgIHZhciByZXQsCi0gICAgdGFyZ2V0ID0gdGhpcywK
LSAgICByZWxhdGVkID0gZXZlbnQucmVsYXRlZFRhcmdldCwKLSAgICBoYW5kbGVPYmogPSBldmVu
dC5oYW5kbGVPYmo7Ci0KLSAgICAvLyBGb3IgbW91c2VudGVyL2xlYXZlIGNhbGwgdGhlIGhhbmRs
ZXIgaWYgcmVsYXRlZCBpcyBvdXRzaWRlIHRoZSB0YXJnZXQuCi0gICAgLy8gTkI6IE5vIHJlbGF0
ZWRUYXJnZXQgaWYgdGhlIG1vdXNlIGxlZnQvZW50ZXJlZCB0aGUgYnJvd3NlciB3aW5kb3cKLSAg
ICBpZiAoICFyZWxhdGVkIHx8IChyZWxhdGVkICE9PSB0YXJnZXQgJiYgIWpRdWVyeS5jb250YWlu
cyggdGFyZ2V0LCByZWxhdGVkICkpICkgewotICAgIGV2ZW50LnR5cGUgPSBoYW5kbGVPYmoub3Jp
Z1R5cGU7Ci0gICAgcmV0ID0gaGFuZGxlT2JqLmhhbmRsZXIuYXBwbHkoIHRoaXMsIGFyZ3VtZW50
cyApOwotICAgIGV2ZW50LnR5cGUgPSBmaXg7Ci0gICAgfQotICAgIHJldHVybiByZXQ7Ci0gICAg
fQotICAgIH07Ci19KTsKLQotLy8gSUUgc3VibWl0IGRlbGVnYXRpb24KLWlmICggIWpRdWVyeS5z
dXBwb3J0LnN1Ym1pdEJ1YmJsZXMgKSB7Ci0KLSAgICBqUXVlcnkuZXZlbnQuc3BlY2lhbC5zdWJt
aXQgPSB7Ci0gICAgc2V0dXA6IGZ1bmN0aW9uKCkgewotICAgIC8vIE9ubHkgbmVlZCB0aGlzIGZv
ciBkZWxlZ2F0ZWQgZm9ybSBzdWJtaXQgZXZlbnRzCi0gICAgaWYgKCBqUXVlcnkubm9kZU5hbWUo
IHRoaXMsICJmb3JtIiApICkgewotICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICAvLyBM
YXp5LWFkZCBhIHN1Ym1pdCBoYW5kbGVyIHdoZW4gYSBkZXNjZW5kYW50IGZvcm0gbWF5IHBvdGVu
dGlhbGx5IGJlIHN1Ym1pdHRlZAotICAgIGpRdWVyeS5ldmVudC5hZGQoIHRoaXMsICJjbGljay5f
c3VibWl0IGtleXByZXNzLl9zdWJtaXQiLCBmdW5jdGlvbiggZSApIHsKLSAgICAvLyBOb2RlIG5h
bWUgY2hlY2sgYXZvaWRzIGEgVk1MLXJlbGF0ZWQgY3Jhc2ggaW4gSUUgKCM5ODA3KQotICAgIHZh
ciBlbGVtID0gZS50YXJnZXQsCi0gICAgZm9ybSA9IGpRdWVyeS5ub2RlTmFtZSggZWxlbSwgImlu
cHV0IiApIHx8IGpRdWVyeS5ub2RlTmFtZSggZWxlbSwgImJ1dHRvbiIgKSA/IGVsZW0uZm9ybSA6
IHVuZGVmaW5lZDsKLSAgICBpZiAoIGZvcm0gJiYgIWpRdWVyeS5fZGF0YSggZm9ybSwgInN1Ym1p
dEJ1YmJsZXMiICkgKSB7Ci0gICAgalF1ZXJ5LmV2ZW50LmFkZCggZm9ybSwgInN1Ym1pdC5fc3Vi
bWl0IiwgZnVuY3Rpb24oIGV2ZW50ICkgewotICAgIGV2ZW50Ll9zdWJtaXRfYnViYmxlID0gdHJ1
ZTsKLSAgICB9KTsKLSAgICBqUXVlcnkuX2RhdGEoIGZvcm0sICJzdWJtaXRCdWJibGVzIiwgdHJ1
ZSApOwotICAgIH0KLSAgICB9KTsKLSAgICAvLyByZXR1cm4gdW5kZWZpbmVkIHNpbmNlIHdlIGRv
bid0IG5lZWQgYW4gZXZlbnQgbGlzdGVuZXIKLSAgICB9LAotCi0gICAgcG9zdERpc3BhdGNoOiBm
dW5jdGlvbiggZXZlbnQgKSB7Ci0gICAgLy8gSWYgZm9ybSB3YXMgc3VibWl0dGVkIGJ5IHRoZSB1
c2VyLCBidWJibGUgdGhlIGV2ZW50IHVwIHRoZSB0cmVlCi0gICAgaWYgKCBldmVudC5fc3VibWl0
X2J1YmJsZSApIHsKLSAgICBkZWxldGUgZXZlbnQuX3N1Ym1pdF9idWJibGU7Ci0gICAgaWYgKCB0
aGlzLnBhcmVudE5vZGUgJiYgIWV2ZW50LmlzVHJpZ2dlciApIHsKLSAgICBqUXVlcnkuZXZlbnQu
c2ltdWxhdGUoICJzdWJtaXQiLCB0aGlzLnBhcmVudE5vZGUsIGV2ZW50LCB0cnVlICk7Ci0gICAg
fQotICAgIH0KLSAgICB9LAotCi0gICAgdGVhcmRvd246IGZ1bmN0aW9uKCkgewotICAgIC8vIE9u
bHkgbmVlZCB0aGlzIGZvciBkZWxlZ2F0ZWQgZm9ybSBzdWJtaXQgZXZlbnRzCi0gICAgaWYgKCBq
UXVlcnkubm9kZU5hbWUoIHRoaXMsICJmb3JtIiApICkgewotICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9Ci0KLSAgICAvLyBSZW1vdmUgZGVsZWdhdGVkIGhhbmRsZXJzOyBjbGVhbkRhdGEgZXZlbnR1
YWxseSByZWFwcyBzdWJtaXQgaGFuZGxlcnMgYXR0YWNoZWQgYWJvdmUKLSAgICBqUXVlcnkuZXZl
bnQucmVtb3ZlKCB0aGlzLCAiLl9zdWJtaXQiICk7Ci0gICAgfQotICAgIH07Ci19Ci0KLS8vIElF
IGNoYW5nZSBkZWxlZ2F0aW9uIGFuZCBjaGVja2JveC9yYWRpbyBmaXgKLWlmICggIWpRdWVyeS5z
dXBwb3J0LmNoYW5nZUJ1YmJsZXMgKSB7Ci0KLSAgICBqUXVlcnkuZXZlbnQuc3BlY2lhbC5jaGFu
Z2UgPSB7Ci0KLSAgICBzZXR1cDogZnVuY3Rpb24oKSB7Ci0KLSAgICBpZiAoIHJmb3JtRWxlbXMu
dGVzdCggdGhpcy5ub2RlTmFtZSApICkgewotICAgIC8vIElFIGRvZXNuJ3QgZmlyZSBjaGFuZ2Ug
b24gYSBjaGVjay9yYWRpbyB1bnRpbCBibHVyOyB0cmlnZ2VyIGl0IG9uIGNsaWNrCi0gICAgLy8g
YWZ0ZXIgYSBwcm9wZXJ0eWNoYW5nZS4gRWF0IHRoZSBibHVyLWNoYW5nZSBpbiBzcGVjaWFsLmNo
YW5nZS5oYW5kbGUuCi0gICAgLy8gVGhpcyBzdGlsbCBmaXJlcyBvbmNoYW5nZSBhIHNlY29uZCB0
aW1lIGZvciBjaGVjay9yYWRpbyBhZnRlciBibHVyLgotICAgIGlmICggdGhpcy50eXBlID09PSAi
Y2hlY2tib3giIHx8IHRoaXMudHlwZSA9PT0gInJhZGlvIiApIHsKLSAgICBqUXVlcnkuZXZlbnQu
YWRkKCB0aGlzLCAicHJvcGVydHljaGFuZ2UuX2NoYW5nZSIsIGZ1bmN0aW9uKCBldmVudCApIHsK
LSAgICBpZiAoIGV2ZW50Lm9yaWdpbmFsRXZlbnQucHJvcGVydHlOYW1lID09PSAiY2hlY2tlZCIg
KSB7Ci0gICAgdGhpcy5fanVzdF9jaGFuZ2VkID0gdHJ1ZTsKLSAgICB9Ci0gICAgfSk7Ci0gICAg
alF1ZXJ5LmV2ZW50LmFkZCggdGhpcywgImNsaWNrLl9jaGFuZ2UiLCBmdW5jdGlvbiggZXZlbnQg
KSB7Ci0gICAgaWYgKCB0aGlzLl9qdXN0X2NoYW5nZWQgJiYgIWV2ZW50LmlzVHJpZ2dlciApIHsK
LSAgICB0aGlzLl9qdXN0X2NoYW5nZWQgPSBmYWxzZTsKLSAgICB9Ci0gICAgLy8gQWxsb3cgdHJp
Z2dlcmVkLCBzaW11bGF0ZWQgY2hhbmdlIGV2ZW50cyAoIzExNTAwKQotICAgIGpRdWVyeS5ldmVu
dC5zaW11bGF0ZSggImNoYW5nZSIsIHRoaXMsIGV2ZW50LCB0cnVlICk7Ci0gICAgfSk7Ci0gICAg
fQotICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgLy8gRGVsZWdhdGVkIGV2ZW50OyBsYXp5
LWFkZCBhIGNoYW5nZSBoYW5kbGVyIG9uIGRlc2NlbmRhbnQgaW5wdXRzCi0gICAgalF1ZXJ5LmV2
ZW50LmFkZCggdGhpcywgImJlZm9yZWFjdGl2YXRlLl9jaGFuZ2UiLCBmdW5jdGlvbiggZSApIHsK
LSAgICB2YXIgZWxlbSA9IGUudGFyZ2V0OwotCi0gICAgaWYgKCByZm9ybUVsZW1zLnRlc3QoIGVs
ZW0ubm9kZU5hbWUgKSAmJiAhalF1ZXJ5Ll9kYXRhKCBlbGVtLCAiY2hhbmdlQnViYmxlcyIgKSAp
IHsKLSAgICBqUXVlcnkuZXZlbnQuYWRkKCBlbGVtLCAiY2hhbmdlLl9jaGFuZ2UiLCBmdW5jdGlv
biggZXZlbnQgKSB7Ci0gICAgaWYgKCB0aGlzLnBhcmVudE5vZGUgJiYgIWV2ZW50LmlzU2ltdWxh
dGVkICYmICFldmVudC5pc1RyaWdnZXIgKSB7Ci0gICAgalF1ZXJ5LmV2ZW50LnNpbXVsYXRlKCAi
Y2hhbmdlIiwgdGhpcy5wYXJlbnROb2RlLCBldmVudCwgdHJ1ZSApOwotICAgIH0KLSAgICB9KTsK
LSAgICBqUXVlcnkuX2RhdGEoIGVsZW0sICJjaGFuZ2VCdWJibGVzIiwgdHJ1ZSApOwotICAgIH0K
LSAgICB9KTsKLSAgICB9LAotCi0gICAgaGFuZGxlOiBmdW5jdGlvbiggZXZlbnQgKSB7Ci0gICAg
dmFyIGVsZW0gPSBldmVudC50YXJnZXQ7Ci0KLSAgICAvLyBTd2FsbG93IG5hdGl2ZSBjaGFuZ2Ug
ZXZlbnRzIGZyb20gY2hlY2tib3gvcmFkaW8sIHdlIGFscmVhZHkgdHJpZ2dlcmVkIHRoZW0gYWJv
dmUKLSAgICBpZiAoIHRoaXMgIT09IGVsZW0gfHwgZXZlbnQuaXNTaW11bGF0ZWQgfHwgZXZlbnQu
aXNUcmlnZ2VyIHx8IChlbGVtLnR5cGUgIT09ICJyYWRpbyIgJiYgZWxlbS50eXBlICE9PSAiY2hl
Y2tib3giKSApIHsKLSAgICByZXR1cm4gZXZlbnQuaGFuZGxlT2JqLmhhbmRsZXIuYXBwbHkoIHRo
aXMsIGFyZ3VtZW50cyApOwotICAgIH0KLSAgICB9LAotCi0gICAgdGVhcmRvd246IGZ1bmN0aW9u
KCkgewotICAgIGpRdWVyeS5ldmVudC5yZW1vdmUoIHRoaXMsICIuX2NoYW5nZSIgKTsKLQotICAg
IHJldHVybiAhcmZvcm1FbGVtcy50ZXN0KCB0aGlzLm5vZGVOYW1lICk7Ci0gICAgfQotICAgIH07
Ci19Ci0KLS8vIENyZWF0ZSAiYnViYmxpbmciIGZvY3VzIGFuZCBibHVyIGV2ZW50cwotaWYgKCAh
alF1ZXJ5LnN1cHBvcnQuZm9jdXNpbkJ1YmJsZXMgKSB7Ci0gICAgalF1ZXJ5LmVhY2goeyBmb2N1
czogImZvY3VzaW4iLCBibHVyOiAiZm9jdXNvdXQiIH0sIGZ1bmN0aW9uKCBvcmlnLCBmaXggKSB7
Ci0KLSAgICAvLyBBdHRhY2ggYSBzaW5nbGUgY2FwdHVyaW5nIGhhbmRsZXIgd2hpbGUgc29tZW9u
ZSB3YW50cyBmb2N1c2luL2ZvY3Vzb3V0Ci0gICAgdmFyIGF0dGFjaGVzID0gMCwKLSAgICBoYW5k
bGVyID0gZnVuY3Rpb24oIGV2ZW50ICkgewotICAgIGpRdWVyeS5ldmVudC5zaW11bGF0ZSggZml4
LCBldmVudC50YXJnZXQsIGpRdWVyeS5ldmVudC5maXgoIGV2ZW50ICksIHRydWUgKTsKLSAgICB9
OwotCi0gICAgalF1ZXJ5LmV2ZW50LnNwZWNpYWxbIGZpeCBdID0gewotICAgIHNldHVwOiBmdW5j
dGlvbigpIHsKLSAgICBpZiAoIGF0dGFjaGVzKysgPT09IDAgKSB7Ci0gICAgZG9jdW1lbnQuYWRk
RXZlbnRMaXN0ZW5lciggb3JpZywgaGFuZGxlciwgdHJ1ZSApOwotICAgIH0KLSAgICB9LAotICAg
IHRlYXJkb3duOiBmdW5jdGlvbigpIHsKLSAgICBpZiAoIC0tYXR0YWNoZXMgPT09IDAgKSB7Ci0g
ICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lciggb3JpZywgaGFuZGxlciwgdHJ1ZSApOwot
ICAgIH0KLSAgICB9Ci0gICAgfTsKLSAgICB9KTsKLX0KLQotalF1ZXJ5LmZuLmV4dGVuZCh7Ci0K
LSAgICBvbjogZnVuY3Rpb24oIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4sIC8qSU5URVJOQUwq
LyBvbmUgKSB7Ci0gICAgdmFyIHR5cGUsIG9yaWdGbjsKLQotICAgIC8vIFR5cGVzIGNhbiBiZSBh
IG1hcCBvZiB0eXBlcy9oYW5kbGVycwotICAgIGlmICggdHlwZW9mIHR5cGVzID09PSAib2JqZWN0
IiApIHsKLSAgICAvLyAoIHR5cGVzLU9iamVjdCwgc2VsZWN0b3IsIGRhdGEgKQotICAgIGlmICgg
dHlwZW9mIHNlbGVjdG9yICE9PSAic3RyaW5nIiApIHsKLSAgICAvLyAoIHR5cGVzLU9iamVjdCwg
ZGF0YSApCi0gICAgZGF0YSA9IGRhdGEgfHwgc2VsZWN0b3I7Ci0gICAgc2VsZWN0b3IgPSB1bmRl
ZmluZWQ7Ci0gICAgfQotICAgIGZvciAoIHR5cGUgaW4gdHlwZXMgKSB7Ci0gICAgdGhpcy5vbigg
dHlwZSwgc2VsZWN0b3IsIGRhdGEsIHR5cGVzWyB0eXBlIF0sIG9uZSApOwotICAgIH0KLSAgICBy
ZXR1cm4gdGhpczsKLSAgICB9Ci0KLSAgICBpZiAoIGRhdGEgPT0gbnVsbCAmJiBmbiA9PSBudWxs
ICkgewotICAgIC8vICggdHlwZXMsIGZuICkKLSAgICBmbiA9IHNlbGVjdG9yOwotICAgIGRhdGEg
PSBzZWxlY3RvciA9IHVuZGVmaW5lZDsKLSAgICB9IGVsc2UgaWYgKCBmbiA9PSBudWxsICkgewot
ICAgIGlmICggdHlwZW9mIHNlbGVjdG9yID09PSAic3RyaW5nIiApIHsKLSAgICAvLyAoIHR5cGVz
LCBzZWxlY3RvciwgZm4gKQotICAgIGZuID0gZGF0YTsKLSAgICBkYXRhID0gdW5kZWZpbmVkOwot
ICAgIH0gZWxzZSB7Ci0gICAgLy8gKCB0eXBlcywgZGF0YSwgZm4gKQotICAgIGZuID0gZGF0YTsK
LSAgICBkYXRhID0gc2VsZWN0b3I7Ci0gICAgc2VsZWN0b3IgPSB1bmRlZmluZWQ7Ci0gICAgfQot
ICAgIH0KLSAgICBpZiAoIGZuID09PSBmYWxzZSApIHsKLSAgICBmbiA9IHJldHVybkZhbHNlOwot
ICAgIH0gZWxzZSBpZiAoICFmbiApIHsKLSAgICByZXR1cm4gdGhpczsKLSAgICB9Ci0KLSAgICBp
ZiAoIG9uZSA9PT0gMSApIHsKLSAgICBvcmlnRm4gPSBmbjsKLSAgICBmbiA9IGZ1bmN0aW9uKCBl
dmVudCApIHsKLSAgICAvLyBDYW4gdXNlIGFuIGVtcHR5IHNldCwgc2luY2UgZXZlbnQgY29udGFp
bnMgdGhlIGluZm8KLSAgICBqUXVlcnkoKS5vZmYoIGV2ZW50ICk7Ci0gICAgcmV0dXJuIG9yaWdG
bi5hcHBseSggdGhpcywgYXJndW1lbnRzICk7Ci0gICAgfTsKLSAgICAvLyBVc2Ugc2FtZSBndWlk
IHNvIGNhbGxlciBjYW4gcmVtb3ZlIHVzaW5nIG9yaWdGbgotICAgIGZuLmd1aWQgPSBvcmlnRm4u
Z3VpZCB8fCAoIG9yaWdGbi5ndWlkID0galF1ZXJ5Lmd1aWQrKyApOwotICAgIH0KLSAgICByZXR1
cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHsKLSAgICBqUXVlcnkuZXZlbnQuYWRkKCB0aGlzLCB0
eXBlcywgZm4sIGRhdGEsIHNlbGVjdG9yICk7Ci0gICAgfSk7Ci0gICAgfSwKLSAgICBvbmU6IGZ1
bmN0aW9uKCB0eXBlcywgc2VsZWN0b3IsIGRhdGEsIGZuICkgewotICAgIHJldHVybiB0aGlzLm9u
KCB0eXBlcywgc2VsZWN0b3IsIGRhdGEsIGZuLCAxICk7Ci0gICAgfSwKLSAgICBvZmY6IGZ1bmN0
aW9uKCB0eXBlcywgc2VsZWN0b3IsIGZuICkgewotICAgIHZhciBoYW5kbGVPYmosIHR5cGU7Ci0g
ICAgaWYgKCB0eXBlcyAmJiB0eXBlcy5wcmV2ZW50RGVmYXVsdCAmJiB0eXBlcy5oYW5kbGVPYmog
KSB7Ci0gICAgLy8gKCBldmVudCApICBkaXNwYXRjaGVkIGpRdWVyeS5FdmVudAotICAgIGhhbmRs
ZU9iaiA9IHR5cGVzLmhhbmRsZU9iajsKLSAgICBqUXVlcnkoIHR5cGVzLmRlbGVnYXRlVGFyZ2V0
ICkub2ZmKAotICAgIGhhbmRsZU9iai5uYW1lc3BhY2UgPyBoYW5kbGVPYmoub3JpZ1R5cGUgKyAi
LiIgKyBoYW5kbGVPYmoubmFtZXNwYWNlIDogaGFuZGxlT2JqLm9yaWdUeXBlLAotICAgIGhhbmRs
ZU9iai5zZWxlY3RvciwKLSAgICBoYW5kbGVPYmouaGFuZGxlcgotICAgICk7Ci0gICAgcmV0dXJu
IHRoaXM7Ci0gICAgfQotICAgIGlmICggdHlwZW9mIHR5cGVzID09PSAib2JqZWN0IiApIHsKLSAg
ICAvLyAoIHR5cGVzLW9iamVjdCBbLCBzZWxlY3Rvcl0gKQotICAgIGZvciAoIHR5cGUgaW4gdHlw
ZXMgKSB7Ci0gICAgdGhpcy5vZmYoIHR5cGUsIHNlbGVjdG9yLCB0eXBlc1sgdHlwZSBdICk7Ci0g
ICAgfQotICAgIHJldHVybiB0aGlzOwotICAgIH0KLSAgICBpZiAoIHNlbGVjdG9yID09PSBmYWxz
ZSB8fCB0eXBlb2Ygc2VsZWN0b3IgPT09ICJmdW5jdGlvbiIgKSB7Ci0gICAgLy8gKCB0eXBlcyBb
LCBmbl0gKQotICAgIGZuID0gc2VsZWN0b3I7Ci0gICAgc2VsZWN0b3IgPSB1bmRlZmluZWQ7Ci0g
ICAgfQotICAgIGlmICggZm4gPT09IGZhbHNlICkgewotICAgIGZuID0gcmV0dXJuRmFsc2U7Ci0g
ICAgfQotICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7Ci0gICAgalF1ZXJ5LmV2ZW50
LnJlbW92ZSggdGhpcywgdHlwZXMsIGZuLCBzZWxlY3RvciApOwotICAgIH0pOwotICAgIH0sCi0K
LSAgICBiaW5kOiBmdW5jdGlvbiggdHlwZXMsIGRhdGEsIGZuICkgewotICAgIHJldHVybiB0aGlz
Lm9uKCB0eXBlcywgbnVsbCwgZGF0YSwgZm4gKTsKLSAgICB9LAotICAgIHVuYmluZDogZnVuY3Rp
b24oIHR5cGVzLCBmbiApIHsKLSAgICByZXR1cm4gdGhpcy5vZmYoIHR5cGVzLCBudWxsLCBmbiAp
OwotICAgIH0sCi0KLSAgICBkZWxlZ2F0ZTogZnVuY3Rpb24oIHNlbGVjdG9yLCB0eXBlcywgZGF0
YSwgZm4gKSB7Ci0gICAgcmV0dXJuIHRoaXMub24oIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4g
KTsKLSAgICB9LAotICAgIHVuZGVsZWdhdGU6IGZ1bmN0aW9uKCBzZWxlY3RvciwgdHlwZXMsIGZu
ICkgewotICAgIC8vICggbmFtZXNwYWNlICkgb3IgKCBzZWxlY3RvciwgdHlwZXMgWywgZm5dICkK
LSAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA9PT0gMSA/IHRoaXMub2ZmKCBzZWxlY3Rvciwg
IioqIiApIDogdGhpcy5vZmYoIHR5cGVzLCBzZWxlY3RvciB8fCAiKioiLCBmbiApOwotICAgIH0s
Ci0KLSAgICB0cmlnZ2VyOiBmdW5jdGlvbiggdHlwZSwgZGF0YSApIHsKLSAgICByZXR1cm4gdGhp
cy5lYWNoKGZ1bmN0aW9uKCkgewotICAgIGpRdWVyeS5ldmVudC50cmlnZ2VyKCB0eXBlLCBkYXRh
LCB0aGlzICk7Ci0gICAgfSk7Ci0gICAgfSwKLSAgICB0cmlnZ2VySGFuZGxlcjogZnVuY3Rpb24o
IHR5cGUsIGRhdGEgKSB7Ci0gICAgdmFyIGVsZW0gPSB0aGlzWzBdOwotICAgIGlmICggZWxlbSAp
IHsKLSAgICByZXR1cm4galF1ZXJ5LmV2ZW50LnRyaWdnZXIoIHR5cGUsIGRhdGEsIGVsZW0sIHRy
dWUgKTsKLSAgICB9Ci0gICAgfQotfSk7Ci0vKiEKLSAqIFNpenpsZSBDU1MgU2VsZWN0b3IgRW5n
aW5lCi0gKiBDb3B5cmlnaHQgMjAxMiBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJp
YnV0b3JzCi0gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UKLSAqIGh0dHA6Ly9zaXp6
bGVqcy5jb20vCi0gKi8KLShmdW5jdGlvbiggd2luZG93LCB1bmRlZmluZWQgKSB7Ci0KLXZhciBp
LAotICAgIGNhY2hlZHJ1bnMsCi0gICAgRXhwciwKLSAgICBnZXRUZXh0LAotICAgIGlzWE1MLAot
ICAgIGNvbXBpbGUsCi0gICAgaGFzRHVwbGljYXRlLAotICAgIG91dGVybW9zdENvbnRleHQsCi0K
LSAgICAvLyBMb2NhbCBkb2N1bWVudCB2YXJzCi0gICAgc2V0RG9jdW1lbnQsCi0gICAgZG9jdW1l
bnQsCi0gICAgZG9jRWxlbSwKLSAgICBkb2N1bWVudElzWE1MLAotICAgIHJidWdneVFTQSwKLSAg
ICByYnVnZ3lNYXRjaGVzLAotICAgIG1hdGNoZXMsCi0gICAgY29udGFpbnMsCi0gICAgc29ydE9y
ZGVyLAotCi0gICAgLy8gSW5zdGFuY2Utc3BlY2lmaWMgZGF0YQotICAgIGV4cGFuZG8gPSAic2l6
emxlIiArIC0obmV3IERhdGUoKSksCi0gICAgcHJlZmVycmVkRG9jID0gd2luZG93LmRvY3VtZW50
LAotICAgIHN1cHBvcnQgPSB7fSwKLSAgICBkaXJydW5zID0gMCwKLSAgICBkb25lID0gMCwKLSAg
ICBjbGFzc0NhY2hlID0gY3JlYXRlQ2FjaGUoKSwKLSAgICB0b2tlbkNhY2hlID0gY3JlYXRlQ2Fj
aGUoKSwKLSAgICBjb21waWxlckNhY2hlID0gY3JlYXRlQ2FjaGUoKSwKLQotICAgIC8vIEdlbmVy
YWwtcHVycG9zZSBjb25zdGFudHMKLSAgICBzdHJ1bmRlZmluZWQgPSB0eXBlb2YgdW5kZWZpbmVk
LAotICAgIE1BWF9ORUdBVElWRSA9IDEgPDwgMzEsCi0KLSAgICAvLyBBcnJheSBtZXRob2RzCi0g
ICAgYXJyID0gW10sCi0gICAgcG9wID0gYXJyLnBvcCwKLSAgICBwdXNoID0gYXJyLnB1c2gsCi0g
ICAgc2xpY2UgPSBhcnIuc2xpY2UsCi0gICAgLy8gVXNlIGEgc3RyaXBwZWQtZG93biBpbmRleE9m
IGlmIHdlIGNhbid0IHVzZSBhIG5hdGl2ZSBvbmUKLSAgICBpbmRleE9mID0gYXJyLmluZGV4T2Yg
fHwgZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgdmFyIGkgPSAwLAotICAgIGxlbiA9IHRoaXMubGVu
Z3RoOwotICAgIGZvciAoIDsgaSA8IGxlbjsgaSsrICkgewotICAgIGlmICggdGhpc1tpXSA9PT0g
ZWxlbSApIHsKLSAgICByZXR1cm4gaTsKLSAgICB9Ci0gICAgfQotICAgIHJldHVybiAtMTsKLSAg
ICB9LAotCi0KLSAgICAvLyBSZWd1bGFyIGV4cHJlc3Npb25zCi0KLSAgICAvLyBXaGl0ZXNwYWNl
IGNoYXJhY3RlcnMgaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1zZWxlY3RvcnMvI3doaXRlc3Bh
Y2UKLSAgICB3aGl0ZXNwYWNlID0gIltcXHgyMFxcdFxcclxcblxcZl0iLAotICAgIC8vIGh0dHA6
Ly93d3cudzMub3JnL1RSL2NzczMtc3ludGF4LyNjaGFyYWN0ZXJzCi0gICAgY2hhcmFjdGVyRW5j
b2RpbmcgPSAiKD86XFxcXC58W1xcdy1dfFteXFx4MDAtXFx4YTBdKSsiLAotCi0gICAgLy8gTG9v
c2VseSBtb2RlbGVkIG9uIENTUyBpZGVudGlmaWVyIGNoYXJhY3RlcnMKLSAgICAvLyBBbiB1bnF1
b3RlZCB2YWx1ZSBzaG91bGQgYmUgYSBDU1MgaWRlbnRpZmllciBodHRwOi8vd3d3LnczLm9yZy9U
Ui9jc3MzLXNlbGVjdG9ycy8jYXR0cmlidXRlLXNlbGVjdG9ycwotICAgIC8vIFByb3BlciBzeW50
YXg6IGh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIxL3N5bmRhdGEuaHRtbCN2YWx1ZS1kZWYtaWRl
bnRpZmllcgotICAgIGlkZW50aWZpZXIgPSBjaGFyYWN0ZXJFbmNvZGluZy5yZXBsYWNlKCAidyIs
ICJ3IyIgKSwKLQotICAgIC8vIEFjY2VwdGFibGUgb3BlcmF0b3JzIGh0dHA6Ly93d3cudzMub3Jn
L1RSL3NlbGVjdG9ycy8jYXR0cmlidXRlLXNlbGVjdG9ycwotICAgIG9wZXJhdG9ycyA9ICIoWype
JHwhfl0/PSkiLAotICAgIGF0dHJpYnV0ZXMgPSAiXFxbIiArIHdoaXRlc3BhY2UgKyAiKigiICsg
Y2hhcmFjdGVyRW5jb2RpbmcgKyAiKSIgKyB3aGl0ZXNwYWNlICsKLSAgICAiKig/OiIgKyBvcGVy
YXRvcnMgKyB3aGl0ZXNwYWNlICsgIiooPzooWydcIl0pKCg/OlxcXFwufFteXFxcXF0pKj8pXFwz
fCgiICsgaWRlbnRpZmllciArICIpfCl8KSIgKyB3aGl0ZXNwYWNlICsgIipcXF0iLAotCi0gICAg
Ly8gUHJlZmVyIGFyZ3VtZW50cyBxdW90ZWQsCi0gICAgLy8gICB0aGVuIG5vdCBjb250YWluaW5n
IHBzZXVkb3MvYnJhY2tldHMsCi0gICAgLy8gICB0aGVuIGF0dHJpYnV0ZSBzZWxlY3RvcnMvbm9u
LXBhcmVudGhldGljYWwgZXhwcmVzc2lvbnMsCi0gICAgLy8gICB0aGVuIGFueXRoaW5nIGVsc2UK
LSAgICAvLyBUaGVzZSBwcmVmZXJlbmNlcyBhcmUgaGVyZSB0byByZWR1Y2UgdGhlIG51bWJlciBv
ZiBzZWxlY3RvcnMKLSAgICAvLyAgIG5lZWRpbmcgdG9rZW5pemUgaW4gdGhlIFBTRVVETyBwcmVG
aWx0ZXIKLSAgICBwc2V1ZG9zID0gIjooIiArIGNoYXJhY3RlckVuY29kaW5nICsgIikoPzpcXCgo
KFsnXCJdKSgoPzpcXFxcLnxbXlxcXFxdKSo/KVxcM3woKD86XFxcXC58W15cXFxcKClbXFxdXXwi
ICsgYXR0cmlidXRlcy5yZXBsYWNlKCAzLCA4ICkgKyAiKSopfC4qKVxcKXwpIiwKLQotICAgIC8v
IExlYWRpbmcgYW5kIG5vbi1lc2NhcGVkIHRyYWlsaW5nIHdoaXRlc3BhY2UsIGNhcHR1cmluZyBz
b21lIG5vbi13aGl0ZXNwYWNlIGNoYXJhY3RlcnMgcHJlY2VkaW5nIHRoZSBsYXR0ZXIKLSAgICBy
dHJpbSA9IG5ldyBSZWdFeHAoICJeIiArIHdoaXRlc3BhY2UgKyAiK3woKD86XnxbXlxcXFxdKSg/
OlxcXFwuKSopIiArIHdoaXRlc3BhY2UgKyAiKyQiLCAiZyIgKSwKLQotICAgIHJjb21tYSA9IG5l
dyBSZWdFeHAoICJeIiArIHdoaXRlc3BhY2UgKyAiKiwiICsgd2hpdGVzcGFjZSArICIqIiApLAot
ICAgIHJjb21iaW5hdG9ycyA9IG5ldyBSZWdFeHAoICJeIiArIHdoaXRlc3BhY2UgKyAiKihbXFx4
MjBcXHRcXHJcXG5cXGY+K35dKSIgKyB3aGl0ZXNwYWNlICsgIioiICksCi0gICAgcnBzZXVkbyA9
IG5ldyBSZWdFeHAoIHBzZXVkb3MgKSwKLSAgICByaWRlbnRpZmllciA9IG5ldyBSZWdFeHAoICJe
IiArIGlkZW50aWZpZXIgKyAiJCIgKSwKLQotICAgIG1hdGNoRXhwciA9IHsKLSAgICAiSUQiOiBu
ZXcgUmVnRXhwKCAiXiMoIiArIGNoYXJhY3RlckVuY29kaW5nICsgIikiICksCi0gICAgIkNMQVNT
IjogbmV3IFJlZ0V4cCggIl5cXC4oIiArIGNoYXJhY3RlckVuY29kaW5nICsgIikiICksCi0gICAg
Ik5BTUUiOiBuZXcgUmVnRXhwKCAiXlxcW25hbWU9WydcIl0/KCIgKyBjaGFyYWN0ZXJFbmNvZGlu
ZyArICIpWydcIl0/XFxdIiApLAotICAgICJUQUciOiBuZXcgUmVnRXhwKCAiXigiICsgY2hhcmFj
dGVyRW5jb2RpbmcucmVwbGFjZSggInciLCAidyoiICkgKyAiKSIgKSwKLSAgICAiQVRUUiI6IG5l
dyBSZWdFeHAoICJeIiArIGF0dHJpYnV0ZXMgKSwKLSAgICAiUFNFVURPIjogbmV3IFJlZ0V4cCgg
Il4iICsgcHNldWRvcyApLAotICAgICJDSElMRCI6IG5ldyBSZWdFeHAoICJeOihvbmx5fGZpcnN0
fGxhc3R8bnRofG50aC1sYXN0KS0oY2hpbGR8b2YtdHlwZSkoPzpcXCgiICsgd2hpdGVzcGFjZSAr
Ci0gICAgIiooZXZlbnxvZGR8KChbKy1dfCkoXFxkKilufCkiICsgd2hpdGVzcGFjZSArICIqKD86
KFsrLV18KSIgKyB3aGl0ZXNwYWNlICsKLSAgICAiKihcXGQrKXwpKSIgKyB3aGl0ZXNwYWNlICsg
IipcXCl8KSIsICJpIiApLAotICAgIC8vIEZvciB1c2UgaW4gbGlicmFyaWVzIGltcGxlbWVudGlu
ZyAuaXMoKQotICAgIC8vIFdlIHVzZSB0aGlzIGZvciBQT1MgbWF0Y2hpbmcgaW4gYHNlbGVjdGAK
LSAgICAibmVlZHNDb250ZXh0IjogbmV3IFJlZ0V4cCggIl4iICsgd2hpdGVzcGFjZSArICIqWz4r
fl18OihldmVufG9kZHxlcXxndHxsdHxudGh8Zmlyc3R8bGFzdCkoPzpcXCgiICsKLSAgICB3aGl0
ZXNwYWNlICsgIiooKD86LVxcZCk/XFxkKikiICsgd2hpdGVzcGFjZSArICIqXFwpfCkoPz1bXi1d
fCQpIiwgImkiICkKLSAgICB9LAotCi0gICAgcnNpYmxpbmcgPSAvW1x4MjBcdFxyXG5cZl0qWyt+
XS8sCi0KLSAgICBybmF0aXZlID0gL15bXntdK1x7XHMqXFtuYXRpdmUgY29kZS8sCi0KLSAgICAv
LyBFYXNpbHktcGFyc2VhYmxlL3JldHJpZXZhYmxlIElEIG9yIFRBRyBvciBDTEFTUyBzZWxlY3Rv
cnMKLSAgICBycXVpY2tFeHByID0gL14oPzojKFtcdy1dKyl8KFx3Kyl8XC4oW1x3LV0rKSkkLywK
LQotICAgIHJpbnB1dHMgPSAvXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pLAot
ICAgIHJoZWFkZXIgPSAvXmhcZCQvaSwKLQotICAgIHJlc2NhcGUgPSAvJ3xcXC9nLAotICAgIHJh
dHRyaWJ1dGVRdW90ZXMgPSAvXD1bXHgyMFx0XHJcblxmXSooW14nIlxdXSopW1x4MjBcdFxyXG5c
Zl0qXF0vZywKLQotICAgIC8vIENTUyBlc2NhcGVzIGh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIx
L3N5bmRhdGEuaHRtbCNlc2NhcGVkLWNoYXJhY3RlcnMKLSAgICBydW5lc2NhcGUgPSAvXFwoW1xk
YS1mQS1GXXsxLDZ9W1x4MjBcdFxyXG5cZl0/fC4pL2csCi0gICAgZnVuZXNjYXBlID0gZnVuY3Rp
b24oIF8sIGVzY2FwZWQgKSB7Ci0gICAgdmFyIGhpZ2ggPSAiMHgiICsgZXNjYXBlZCAtIDB4MTAw
MDA7Ci0gICAgLy8gTmFOIG1lYW5zIG5vbi1jb2RlcG9pbnQKLSAgICByZXR1cm4gaGlnaCAhPT0g
aGlnaCA/Ci0gICAgZXNjYXBlZCA6Ci0gICAgLy8gQk1QIGNvZGVwb2ludAotICAgIGhpZ2ggPCAw
ID8KLSAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKCBoaWdoICsgMHgxMDAwMCApIDoKLSAgICAvLyBT
dXBwbGVtZW50YWwgUGxhbmUgY29kZXBvaW50IChzdXJyb2dhdGUgcGFpcikKLSAgICBTdHJpbmcu
ZnJvbUNoYXJDb2RlKCBoaWdoID4+IDEwIHwgMHhEODAwLCBoaWdoICYgMHgzRkYgfCAweERDMDAg
KTsKLSAgICB9OwotCi0vLyBVc2UgYSBzdHJpcHBlZC1kb3duIHNsaWNlIGlmIHdlIGNhbid0IHVz
ZSBhIG5hdGl2ZSBvbmUKLXRyeSB7Ci0gICAgc2xpY2UuY2FsbCggcHJlZmVycmVkRG9jLmRvY3Vt
ZW50RWxlbWVudC5jaGlsZE5vZGVzLCAwIClbMF0ubm9kZVR5cGU7Ci19IGNhdGNoICggZSApIHsK
LSAgICBzbGljZSA9IGZ1bmN0aW9uKCBpICkgewotICAgIHZhciBlbGVtLAotICAgIHJlc3VsdHMg
PSBbXTsKLSAgICB3aGlsZSAoIChlbGVtID0gdGhpc1tpKytdKSApIHsKLSAgICByZXN1bHRzLnB1
c2goIGVsZW0gKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdHM7Ci0gICAgfTsKLX0KLQotLyoq
Ci0gKiBGb3IgZmVhdHVyZSBkZXRlY3Rpb24KLSAqIEBwYXJhbSB7RnVuY3Rpb259IGZuIFRoZSBm
dW5jdGlvbiB0byB0ZXN0IGZvciBuYXRpdmUgc3VwcG9ydAotICovCi1mdW5jdGlvbiBpc05hdGl2
ZSggZm4gKSB7Ci0gICAgcmV0dXJuIHJuYXRpdmUudGVzdCggZm4gKyAiIiApOwotfQotCi0vKioK
LSAqIENyZWF0ZSBrZXktdmFsdWUgY2FjaGVzIG9mIGxpbWl0ZWQgc2l6ZQotICogQHJldHVybnMg
e0Z1bmN0aW9uKHN0cmluZywgT2JqZWN0KX0gUmV0dXJucyB0aGUgT2JqZWN0IGRhdGEgYWZ0ZXIg
c3RvcmluZyBpdCBvbiBpdHNlbGYgd2l0aAotICogICAgcHJvcGVydHkgbmFtZSB0aGUgKHNwYWNl
LXN1ZmZpeGVkKSBzdHJpbmcgYW5kIChpZiB0aGUgY2FjaGUgaXMgbGFyZ2VyIHRoYW4gRXhwci5j
YWNoZUxlbmd0aCkKLSAqICAgIGRlbGV0aW5nIHRoZSBvbGRlc3QgZW50cnkKLSAqLwotZnVuY3Rp
b24gY3JlYXRlQ2FjaGUoKSB7Ci0gICAgdmFyIGNhY2hlLAotICAgIGtleXMgPSBbXTsKLQotICAg
IHJldHVybiAoY2FjaGUgPSBmdW5jdGlvbigga2V5LCB2YWx1ZSApIHsKLSAgICAvLyBVc2UgKGtl
eSArICIgIikgdG8gYXZvaWQgY29sbGlzaW9uIHdpdGggbmF0aXZlIHByb3RvdHlwZSBwcm9wZXJ0
aWVzIChzZWUgSXNzdWUgIzE1NykKLSAgICBpZiAoIGtleXMucHVzaCgga2V5ICs9ICIgIiApID4g
RXhwci5jYWNoZUxlbmd0aCApIHsKLSAgICAvLyBPbmx5IGtlZXAgdGhlIG1vc3QgcmVjZW50IGVu
dHJpZXMKLSAgICBkZWxldGUgY2FjaGVbIGtleXMuc2hpZnQoKSBdOwotICAgIH0KLSAgICByZXR1
cm4gKGNhY2hlWyBrZXkgXSA9IHZhbHVlKTsKLSAgICB9KTsKLX0KLQotLyoqCi0gKiBNYXJrIGEg
ZnVuY3Rpb24gZm9yIHNwZWNpYWwgdXNlIGJ5IFNpenpsZQotICogQHBhcmFtIHtGdW5jdGlvbn0g
Zm4gVGhlIGZ1bmN0aW9uIHRvIG1hcmsKLSAqLwotZnVuY3Rpb24gbWFya0Z1bmN0aW9uKCBmbiAp
IHsKLSAgICBmblsgZXhwYW5kbyBdID0gdHJ1ZTsKLSAgICByZXR1cm4gZm47Ci19Ci0KLS8qKgot
ICogU3VwcG9ydCB0ZXN0aW5nIHVzaW5nIGFuIGVsZW1lbnQKLSAqIEBwYXJhbSB7RnVuY3Rpb259
IGZuIFBhc3NlZCB0aGUgY3JlYXRlZCBkaXYgYW5kIGV4cGVjdHMgYSBib29sZWFuIHJlc3VsdAot
ICovCi1mdW5jdGlvbiBhc3NlcnQoIGZuICkgewotICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKTsKLQotICAgIHRyeSB7Ci0gICAgcmV0dXJuIGZuKCBkaXYgKTsKLSAg
ICB9IGNhdGNoIChlKSB7Ci0gICAgcmV0dXJuIGZhbHNlOwotICAgIH0gZmluYWxseSB7Ci0gICAg
Ly8gcmVsZWFzZSBtZW1vcnkgaW4gSUUKLSAgICBkaXYgPSBudWxsOwotICAgIH0KLX0KLQotZnVu
Y3Rpb24gU2l6emxlKCBzZWxlY3RvciwgY29udGV4dCwgcmVzdWx0cywgc2VlZCApIHsKLSAgICB2
YXIgbWF0Y2gsIGVsZW0sIG0sIG5vZGVUeXBlLAotICAgIC8vIFFTQSB2YXJzCi0gICAgaSwgZ3Jv
dXBzLCBvbGQsIG5pZCwgbmV3Q29udGV4dCwgbmV3U2VsZWN0b3I7Ci0KLSAgICBpZiAoICggY29u
dGV4dCA/IGNvbnRleHQub3duZXJEb2N1bWVudCB8fCBjb250ZXh0IDogcHJlZmVycmVkRG9jICkg
IT09IGRvY3VtZW50ICkgewotICAgIHNldERvY3VtZW50KCBjb250ZXh0ICk7Ci0gICAgfQotCi0g
ICAgY29udGV4dCA9IGNvbnRleHQgfHwgZG9jdW1lbnQ7Ci0gICAgcmVzdWx0cyA9IHJlc3VsdHMg
fHwgW107Ci0KLSAgICBpZiAoICFzZWxlY3RvciB8fCB0eXBlb2Ygc2VsZWN0b3IgIT09ICJzdHJp
bmciICkgewotICAgIHJldHVybiByZXN1bHRzOwotICAgIH0KLQotICAgIGlmICggKG5vZGVUeXBl
ID0gY29udGV4dC5ub2RlVHlwZSkgIT09IDEgJiYgbm9kZVR5cGUgIT09IDkgKSB7Ci0gICAgcmV0
dXJuIFtdOwotICAgIH0KLQotICAgIGlmICggIWRvY3VtZW50SXNYTUwgJiYgIXNlZWQgKSB7Ci0K
LSAgICAvLyBTaG9ydGN1dHMKLSAgICBpZiAoIChtYXRjaCA9IHJxdWlja0V4cHIuZXhlYyggc2Vs
ZWN0b3IgKSkgKSB7Ci0gICAgLy8gU3BlZWQtdXA6IFNpenpsZSgiI0lEIikKLSAgICBpZiAoICht
ID0gbWF0Y2hbMV0pICkgewotICAgIGlmICggbm9kZVR5cGUgPT09IDkgKSB7Ci0gICAgZWxlbSA9
IGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQoIG0gKTsKLSAgICAvLyBDaGVjayBwYXJlbnROb2RlIHRv
IGNhdGNoIHdoZW4gQmxhY2tiZXJyeSA0LjYgcmV0dXJucwotICAgIC8vIG5vZGVzIHRoYXQgYXJl
IG5vIGxvbmdlciBpbiB0aGUgZG9jdW1lbnQgIzY5NjMKLSAgICBpZiAoIGVsZW0gJiYgZWxlbS5w
YXJlbnROb2RlICkgewotICAgIC8vIEhhbmRsZSB0aGUgY2FzZSB3aGVyZSBJRSwgT3BlcmEsIGFu
ZCBXZWJraXQgcmV0dXJuIGl0ZW1zCi0gICAgLy8gYnkgbmFtZSBpbnN0ZWFkIG9mIElECi0gICAg
aWYgKCBlbGVtLmlkID09PSBtICkgewotICAgIHJlc3VsdHMucHVzaCggZWxlbSApOwotICAgIHJl
dHVybiByZXN1bHRzOwotICAgIH0KLSAgICB9IGVsc2UgewotICAgIHJldHVybiByZXN1bHRzOwot
ICAgIH0KLSAgICB9IGVsc2UgewotICAgIC8vIENvbnRleHQgaXMgbm90IGEgZG9jdW1lbnQKLSAg
ICBpZiAoIGNvbnRleHQub3duZXJEb2N1bWVudCAmJiAoZWxlbSA9IGNvbnRleHQub3duZXJEb2N1
bWVudC5nZXRFbGVtZW50QnlJZCggbSApKSAmJgotICAgIGNvbnRhaW5zKCBjb250ZXh0LCBlbGVt
ICkgJiYgZWxlbS5pZCA9PT0gbSApIHsKLSAgICByZXN1bHRzLnB1c2goIGVsZW0gKTsKLSAgICBy
ZXR1cm4gcmVzdWx0czsKLSAgICB9Ci0gICAgfQotCi0gICAgLy8gU3BlZWQtdXA6IFNpenpsZSgi
VEFHIikKLSAgICB9IGVsc2UgaWYgKCBtYXRjaFsyXSApIHsKLSAgICBwdXNoLmFwcGx5KCByZXN1
bHRzLCBzbGljZS5jYWxsKGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIHNlbGVjdG9yICks
IDApICk7Ci0gICAgcmV0dXJuIHJlc3VsdHM7Ci0KLSAgICAvLyBTcGVlZC11cDogU2l6emxlKCIu
Q0xBU1MiKQotICAgIH0gZWxzZSBpZiAoIChtID0gbWF0Y2hbM10pICYmIHN1cHBvcnQuZ2V0QnlD
bGFzc05hbWUgJiYgY29udGV4dC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lICkgewotICAgIHB1c2gu
YXBwbHkoIHJlc3VsdHMsIHNsaWNlLmNhbGwoY29udGV4dC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1l
KCBtICksIDApICk7Ci0gICAgcmV0dXJuIHJlc3VsdHM7Ci0gICAgfQotICAgIH0KLQotICAgIC8v
IFFTQSBwYXRoCi0gICAgaWYgKCBzdXBwb3J0LnFzYSAmJiAhcmJ1Z2d5UVNBLnRlc3Qoc2VsZWN0
b3IpICkgewotICAgIG9sZCA9IHRydWU7Ci0gICAgbmlkID0gZXhwYW5kbzsKLSAgICBuZXdDb250
ZXh0ID0gY29udGV4dDsKLSAgICBuZXdTZWxlY3RvciA9IG5vZGVUeXBlID09PSA5ICYmIHNlbGVj
dG9yOwotCi0gICAgLy8gcVNBIHdvcmtzIHN0cmFuZ2VseSBvbiBFbGVtZW50LXJvb3RlZCBxdWVy
aWVzCi0gICAgLy8gV2UgY2FuIHdvcmsgYXJvdW5kIHRoaXMgYnkgc3BlY2lmeWluZyBhbiBleHRy
YSBJRCBvbiB0aGUgcm9vdAotICAgIC8vIGFuZCB3b3JraW5nIHVwIGZyb20gdGhlcmUgKFRoYW5r
cyB0byBBbmRyZXcgRHVwb250IGZvciB0aGUgdGVjaG5pcXVlKQotICAgIC8vIElFIDggZG9lc24n
dCB3b3JrIG9uIG9iamVjdCBlbGVtZW50cwotICAgIGlmICggbm9kZVR5cGUgPT09IDEgJiYgY29u
dGV4dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpICE9PSAib2JqZWN0IiApIHsKLSAgICBncm91cHMg
PSB0b2tlbml6ZSggc2VsZWN0b3IgKTsKLQotICAgIGlmICggKG9sZCA9IGNvbnRleHQuZ2V0QXR0
cmlidXRlKCJpZCIpKSApIHsKLSAgICBuaWQgPSBvbGQucmVwbGFjZSggcmVzY2FwZSwgIlxcJCYi
ICk7Ci0gICAgfSBlbHNlIHsKLSAgICBjb250ZXh0LnNldEF0dHJpYnV0ZSggImlkIiwgbmlkICk7
Ci0gICAgfQotICAgIG5pZCA9ICJbaWQ9JyIgKyBuaWQgKyAiJ10gIjsKLQotICAgIGkgPSBncm91
cHMubGVuZ3RoOwotICAgIHdoaWxlICggaS0tICkgewotICAgIGdyb3Vwc1tpXSA9IG5pZCArIHRv
U2VsZWN0b3IoIGdyb3Vwc1tpXSApOwotICAgIH0KLSAgICBuZXdDb250ZXh0ID0gcnNpYmxpbmcu
dGVzdCggc2VsZWN0b3IgKSAmJiBjb250ZXh0LnBhcmVudE5vZGUgfHwgY29udGV4dDsKLSAgICBu
ZXdTZWxlY3RvciA9IGdyb3Vwcy5qb2luKCIsIik7Ci0gICAgfQotCi0gICAgaWYgKCBuZXdTZWxl
Y3RvciApIHsKLSAgICB0cnkgewotICAgIHB1c2guYXBwbHkoIHJlc3VsdHMsIHNsaWNlLmNhbGwo
IG5ld0NvbnRleHQucXVlcnlTZWxlY3RvckFsbCgKLSAgICBuZXdTZWxlY3RvcgotICAgICksIDAg
KSApOwotICAgIHJldHVybiByZXN1bHRzOwotICAgIH0gY2F0Y2gocXNhRXJyb3IpIHsKLSAgICB9
IGZpbmFsbHkgewotICAgIGlmICggIW9sZCApIHsKLSAgICBjb250ZXh0LnJlbW92ZUF0dHJpYnV0
ZSgiaWQiKTsKLSAgICB9Ci0gICAgfQotICAgIH0KLSAgICB9Ci0gICAgfQotCi0gICAgLy8gQWxs
IG90aGVycwotICAgIHJldHVybiBzZWxlY3QoIHNlbGVjdG9yLnJlcGxhY2UoIHJ0cmltLCAiJDEi
ICksIGNvbnRleHQsIHJlc3VsdHMsIHNlZWQgKTsKLX0KLQotLyoqCi0gKiBEZXRlY3QgeG1sCi0g
KiBAcGFyYW0ge0VsZW1lbnR8T2JqZWN0fSBlbGVtIEFuIGVsZW1lbnQgb3IgYSBkb2N1bWVudAot
ICovCi1pc1hNTCA9IFNpenpsZS5pc1hNTCA9IGZ1bmN0aW9uKCBlbGVtICkgewotICAgIC8vIGRv
Y3VtZW50RWxlbWVudCBpcyB2ZXJpZmllZCBmb3IgY2FzZXMgd2hlcmUgaXQgZG9lc24ndCB5ZXQg
ZXhpc3QKLSAgICAvLyAoc3VjaCBhcyBsb2FkaW5nIGlmcmFtZXMgaW4gSUUgLSAjNDgzMykKLSAg
ICB2YXIgZG9jdW1lbnRFbGVtZW50ID0gZWxlbSAmJiAoZWxlbS5vd25lckRvY3VtZW50IHx8IGVs
ZW0pLmRvY3VtZW50RWxlbWVudDsKLSAgICByZXR1cm4gZG9jdW1lbnRFbGVtZW50ID8gZG9jdW1l
bnRFbGVtZW50Lm5vZGVOYW1lICE9PSAiSFRNTCIgOiBmYWxzZTsKLX07Ci0KLS8qKgotICogU2V0
cyBkb2N1bWVudC1yZWxhdGVkIHZhcmlhYmxlcyBvbmNlIGJhc2VkIG9uIHRoZSBjdXJyZW50IGRv
Y3VtZW50Ci0gKiBAcGFyYW0ge0VsZW1lbnR8T2JqZWN0fSBbZG9jXSBBbiBlbGVtZW50IG9yIGRv
Y3VtZW50IG9iamVjdCB0byB1c2UgdG8gc2V0IHRoZSBkb2N1bWVudAotICogQHJldHVybnMge09i
amVjdH0gUmV0dXJucyB0aGUgY3VycmVudCBkb2N1bWVudAotICovCi1zZXREb2N1bWVudCA9IFNp
enpsZS5zZXREb2N1bWVudCA9IGZ1bmN0aW9uKCBub2RlICkgewotICAgIHZhciBkb2MgPSBub2Rl
ID8gbm9kZS5vd25lckRvY3VtZW50IHx8IG5vZGUgOiBwcmVmZXJyZWREb2M7Ci0KLSAgICAvLyBJ
ZiBubyBkb2N1bWVudCBhbmQgZG9jdW1lbnRFbGVtZW50IGlzIGF2YWlsYWJsZSwgcmV0dXJuCi0g
ICAgaWYgKCBkb2MgPT09IGRvY3VtZW50IHx8IGRvYy5ub2RlVHlwZSAhPT0gOSB8fCAhZG9jLmRv
Y3VtZW50RWxlbWVudCApIHsKLSAgICByZXR1cm4gZG9jdW1lbnQ7Ci0gICAgfQotCi0gICAgLy8g
U2V0IG91ciBkb2N1bWVudAotICAgIGRvY3VtZW50ID0gZG9jOwotICAgIGRvY0VsZW0gPSBkb2Mu
ZG9jdW1lbnRFbGVtZW50OwotCi0gICAgLy8gU3VwcG9ydCB0ZXN0cwotICAgIGRvY3VtZW50SXNY
TUwgPSBpc1hNTCggZG9jICk7Ci0KLSAgICAvLyBDaGVjayBpZiBnZXRFbGVtZW50c0J5VGFnTmFt
ZSgiKiIpIHJldHVybnMgb25seSBlbGVtZW50cwotICAgIHN1cHBvcnQudGFnTmFtZU5vQ29tbWVu
dHMgPSBhc3NlcnQoZnVuY3Rpb24oIGRpdiApIHsKLSAgICBkaXYuYXBwZW5kQ2hpbGQoIGRvYy5j
cmVhdGVDb21tZW50KCIiKSApOwotICAgIHJldHVybiAhZGl2LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCIqIikubGVuZ3RoOwotICAgIH0pOwotCi0gICAgLy8gQ2hlY2sgaWYgYXR0cmlidXRlcyBzaG91
bGQgYmUgcmV0cmlldmVkIGJ5IGF0dHJpYnV0ZSBub2RlcwotICAgIHN1cHBvcnQuYXR0cmlidXRl
cyA9IGFzc2VydChmdW5jdGlvbiggZGl2ICkgewotICAgIGRpdi5pbm5lckhUTUwgPSAiPHNlbGVj
dD48L3NlbGVjdD4iOwotICAgIHZhciB0eXBlID0gdHlwZW9mIGRpdi5sYXN0Q2hpbGQuZ2V0QXR0
cmlidXRlKCJtdWx0aXBsZSIpOwotICAgIC8vIElFOCByZXR1cm5zIGEgc3RyaW5nIGZvciBzb21l
IGF0dHJpYnV0ZXMgZXZlbiB3aGVuIG5vdCBwcmVzZW50Ci0gICAgcmV0dXJuIHR5cGUgIT09ICJi
b29sZWFuIiAmJiB0eXBlICE9PSAic3RyaW5nIjsKLSAgICB9KTsKLQotICAgIC8vIENoZWNrIGlm
IGdldEVsZW1lbnRzQnlDbGFzc05hbWUgY2FuIGJlIHRydXN0ZWQKLSAgICBzdXBwb3J0LmdldEJ5
Q2xhc3NOYW1lID0gYXNzZXJ0KGZ1bmN0aW9uKCBkaXYgKSB7Ci0gICAgLy8gT3BlcmEgY2FuJ3Qg
ZmluZCBhIHNlY29uZCBjbGFzc25hbWUgKGluIDkuNikKLSAgICBkaXYuaW5uZXJIVE1MID0gIjxk
aXYgY2xhc3M9J2hpZGRlbiBlJz48L2Rpdj48ZGl2IGNsYXNzPSdoaWRkZW4nPjwvZGl2PiI7Ci0g
ICAgaWYgKCAhZGl2LmdldEVsZW1lbnRzQnlDbGFzc05hbWUgfHwgIWRpdi5nZXRFbGVtZW50c0J5
Q2xhc3NOYW1lKCJlIikubGVuZ3RoICkgewotICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAg
ICAvLyBTYWZhcmkgMy4yIGNhY2hlcyBjbGFzcyBhdHRyaWJ1dGVzIGFuZCBkb2Vzbid0IGNhdGNo
IGNoYW5nZXMKLSAgICBkaXYubGFzdENoaWxkLmNsYXNzTmFtZSA9ICJlIjsKLSAgICByZXR1cm4g
ZGl2LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImUiKS5sZW5ndGggPT09IDI7Ci0gICAgfSk7Ci0K
LSAgICAvLyBDaGVjayBpZiBnZXRFbGVtZW50QnlJZCByZXR1cm5zIGVsZW1lbnRzIGJ5IG5hbWUK
LSAgICAvLyBDaGVjayBpZiBnZXRFbGVtZW50c0J5TmFtZSBwcml2aWxlZ2VzIGZvcm0gY29udHJv
bHMgb3IgcmV0dXJucyBlbGVtZW50cyBieSBJRAotICAgIHN1cHBvcnQuZ2V0QnlOYW1lID0gYXNz
ZXJ0KGZ1bmN0aW9uKCBkaXYgKSB7Ci0gICAgLy8gSW5qZWN0IGNvbnRlbnQKLSAgICBkaXYuaWQg
PSBleHBhbmRvICsgMDsKLSAgICBkaXYuaW5uZXJIVE1MID0gIjxhIG5hbWU9JyIgKyBleHBhbmRv
ICsgIic+PC9hPjxkaXYgbmFtZT0nIiArIGV4cGFuZG8gKyAiJz48L2Rpdj4iOwotICAgIGRvY0Vs
ZW0uaW5zZXJ0QmVmb3JlKCBkaXYsIGRvY0VsZW0uZmlyc3RDaGlsZCApOwotCi0gICAgLy8gVGVz
dAotICAgIHZhciBwYXNzID0gZG9jLmdldEVsZW1lbnRzQnlOYW1lICYmCi0gICAgLy8gYnVnZ3kg
YnJvd3NlcnMgd2lsbCByZXR1cm4gZmV3ZXIgdGhhbiB0aGUgY29ycmVjdCAyCi0gICAgZG9jLmdl
dEVsZW1lbnRzQnlOYW1lKCBleHBhbmRvICkubGVuZ3RoID09PSAyICsKLSAgICAvLyBidWdneSBi
cm93c2VycyB3aWxsIHJldHVybiBtb3JlIHRoYW4gdGhlIGNvcnJlY3QgMAotICAgIGRvYy5nZXRF
bGVtZW50c0J5TmFtZSggZXhwYW5kbyArIDAgKS5sZW5ndGg7Ci0gICAgc3VwcG9ydC5nZXRJZE5v
dE5hbWUgPSAhZG9jLmdldEVsZW1lbnRCeUlkKCBleHBhbmRvICk7Ci0KLSAgICAvLyBDbGVhbnVw
Ci0gICAgZG9jRWxlbS5yZW1vdmVDaGlsZCggZGl2ICk7Ci0KLSAgICByZXR1cm4gcGFzczsKLSAg
ICB9KTsKLQotICAgIC8vIElFNi83IHJldHVybiBtb2RpZmllZCBhdHRyaWJ1dGVzCi0gICAgRXhw
ci5hdHRySGFuZGxlID0gYXNzZXJ0KGZ1bmN0aW9uKCBkaXYgKSB7Ci0gICAgZGl2LmlubmVySFRN
TCA9ICI8YSBocmVmPScjJz48L2E+IjsKLSAgICByZXR1cm4gZGl2LmZpcnN0Q2hpbGQgJiYgdHlw
ZW9mIGRpdi5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSAhPT0gc3RydW5kZWZpbmVkICYmCi0gICAg
ZGl2LmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCJocmVmIikgPT09ICIjIjsKLSAgICB9KSA/Ci0g
ICAge30gOgotICAgIHsKLSAgICAiaHJlZiI6IGZ1bmN0aW9uKCBlbGVtICkgewotICAgIHJldHVy
biBlbGVtLmdldEF0dHJpYnV0ZSggImhyZWYiLCAyICk7Ci0gICAgfSwKLSAgICAidHlwZSI6IGZ1
bmN0aW9uKCBlbGVtICkgewotICAgIHJldHVybiBlbGVtLmdldEF0dHJpYnV0ZSgidHlwZSIpOwot
ICAgIH0KLSAgICB9OwotCi0gICAgLy8gSUQgZmluZCBhbmQgZmlsdGVyCi0gICAgaWYgKCBzdXBw
b3J0LmdldElkTm90TmFtZSApIHsKLSAgICBFeHByLmZpbmRbIklEIl0gPSBmdW5jdGlvbiggaWQs
IGNvbnRleHQgKSB7Ci0gICAgaWYgKCB0eXBlb2YgY29udGV4dC5nZXRFbGVtZW50QnlJZCAhPT0g
c3RydW5kZWZpbmVkICYmICFkb2N1bWVudElzWE1MICkgewotICAgIHZhciBtID0gY29udGV4dC5n
ZXRFbGVtZW50QnlJZCggaWQgKTsKLSAgICAvLyBDaGVjayBwYXJlbnROb2RlIHRvIGNhdGNoIHdo
ZW4gQmxhY2tiZXJyeSA0LjYgcmV0dXJucwotICAgIC8vIG5vZGVzIHRoYXQgYXJlIG5vIGxvbmdl
ciBpbiB0aGUgZG9jdW1lbnQgIzY5NjMKLSAgICByZXR1cm4gbSAmJiBtLnBhcmVudE5vZGUgPyBb
bV0gOiBbXTsKLSAgICB9Ci0gICAgfTsKLSAgICBFeHByLmZpbHRlclsiSUQiXSA9IGZ1bmN0aW9u
KCBpZCApIHsKLSAgICB2YXIgYXR0cklkID0gaWQucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2Nh
cGUgKTsKLSAgICByZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgcmV0dXJuIGVsZW0uZ2V0
QXR0cmlidXRlKCJpZCIpID09PSBhdHRySWQ7Ci0gICAgfTsKLSAgICB9OwotICAgIH0gZWxzZSB7
Ci0gICAgRXhwci5maW5kWyJJRCJdID0gZnVuY3Rpb24oIGlkLCBjb250ZXh0ICkgewotICAgIGlm
ICggdHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQgIT09IHN0cnVuZGVmaW5lZCAmJiAhZG9j
dW1lbnRJc1hNTCApIHsKLSAgICB2YXIgbSA9IGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQoIGlkICk7
Ci0KLSAgICByZXR1cm4gbSA/Ci0gICAgbS5pZCA9PT0gaWQgfHwgdHlwZW9mIG0uZ2V0QXR0cmli
dXRlTm9kZSAhPT0gc3RydW5kZWZpbmVkICYmIG0uZ2V0QXR0cmlidXRlTm9kZSgiaWQiKS52YWx1
ZSA9PT0gaWQgPwotICAgIFttXSA6Ci0gICAgdW5kZWZpbmVkIDoKLSAgICBbXTsKLSAgICB9Ci0g
ICAgfTsKLSAgICBFeHByLmZpbHRlclsiSUQiXSA9ICBmdW5jdGlvbiggaWQgKSB7Ci0gICAgdmFy
IGF0dHJJZCA9IGlkLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICk7Ci0gICAgcmV0dXJu
IGZ1bmN0aW9uKCBlbGVtICkgewotICAgIHZhciBub2RlID0gdHlwZW9mIGVsZW0uZ2V0QXR0cmli
dXRlTm9kZSAhPT0gc3RydW5kZWZpbmVkICYmIGVsZW0uZ2V0QXR0cmlidXRlTm9kZSgiaWQiKTsK
LSAgICByZXR1cm4gbm9kZSAmJiBub2RlLnZhbHVlID09PSBhdHRySWQ7Ci0gICAgfTsKLSAgICB9
OwotICAgIH0KLQotICAgIC8vIFRhZwotICAgIEV4cHIuZmluZFsiVEFHIl0gPSBzdXBwb3J0LnRh
Z05hbWVOb0NvbW1lbnRzID8KLSAgICBmdW5jdGlvbiggdGFnLCBjb250ZXh0ICkgewotICAgIGlm
ICggdHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUgIT09IHN0cnVuZGVmaW5lZCAp
IHsKLSAgICByZXR1cm4gY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSggdGFnICk7Ci0gICAg
fQotICAgIH0gOgotICAgIGZ1bmN0aW9uKCB0YWcsIGNvbnRleHQgKSB7Ci0gICAgdmFyIGVsZW0s
Ci0gICAgdG1wID0gW10sCi0gICAgaSA9IDAsCi0gICAgcmVzdWx0cyA9IGNvbnRleHQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoIHRhZyApOwotCi0gICAgLy8gRmlsdGVyIG91dCBwb3NzaWJsZSBjb21t
ZW50cwotICAgIGlmICggdGFnID09PSAiKiIgKSB7Ci0gICAgd2hpbGUgKCAoZWxlbSA9IHJlc3Vs
dHNbaSsrXSkgKSB7Ci0gICAgaWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICkgewotICAgIHRtcC5w
dXNoKCBlbGVtICk7Ci0gICAgfQotICAgIH0KLQotICAgIHJldHVybiB0bXA7Ci0gICAgfQotICAg
IHJldHVybiByZXN1bHRzOwotICAgIH07Ci0KLSAgICAvLyBOYW1lCi0gICAgRXhwci5maW5kWyJO
QU1FIl0gPSBzdXBwb3J0LmdldEJ5TmFtZSAmJiBmdW5jdGlvbiggdGFnLCBjb250ZXh0ICkgewot
ICAgIGlmICggdHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudHNCeU5hbWUgIT09IHN0cnVuZGVmaW5l
ZCApIHsKLSAgICByZXR1cm4gY29udGV4dC5nZXRFbGVtZW50c0J5TmFtZSggbmFtZSApOwotICAg
IH0KLSAgICB9OwotCi0gICAgLy8gQ2xhc3MKLSAgICBFeHByLmZpbmRbIkNMQVNTIl0gPSBzdXBw
b3J0LmdldEJ5Q2xhc3NOYW1lICYmIGZ1bmN0aW9uKCBjbGFzc05hbWUsIGNvbnRleHQgKSB7Ci0g
ICAgaWYgKCB0eXBlb2YgY29udGV4dC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lICE9PSBzdHJ1bmRl
ZmluZWQgJiYgIWRvY3VtZW50SXNYTUwgKSB7Ci0gICAgcmV0dXJuIGNvbnRleHQuZ2V0RWxlbWVu
dHNCeUNsYXNzTmFtZSggY2xhc3NOYW1lICk7Ci0gICAgfQotICAgIH07Ci0KLSAgICAvLyBRU0Eg
YW5kIG1hdGNoZXNTZWxlY3RvciBzdXBwb3J0Ci0KLSAgICAvLyBtYXRjaGVzU2VsZWN0b3IoOmFj
dGl2ZSkgcmVwb3J0cyBmYWxzZSB3aGVuIHRydWUgKElFOS9PcGVyYSAxMS41KQotICAgIHJidWdn
eU1hdGNoZXMgPSBbXTsKLQotICAgIC8vIHFTYSg6Zm9jdXMpIHJlcG9ydHMgZmFsc2Ugd2hlbiB0
cnVlIChDaHJvbWUgMjEpLAotICAgIC8vIG5vIG5lZWQgdG8gYWxzbyBhZGQgdG8gYnVnZ3lNYXRj
aGVzIHNpbmNlIG1hdGNoZXMgY2hlY2tzIGJ1Z2d5UVNBCi0gICAgLy8gQSBzdXBwb3J0IHRlc3Qg
d291bGQgcmVxdWlyZSB0b28gbXVjaCBjb2RlICh3b3VsZCBpbmNsdWRlIGRvY3VtZW50IHJlYWR5
KQotICAgIHJidWdneVFTQSA9IFsgIjpmb2N1cyIgXTsKLQotICAgIGlmICggKHN1cHBvcnQucXNh
ID0gaXNOYXRpdmUoZG9jLnF1ZXJ5U2VsZWN0b3JBbGwpKSApIHsKLSAgICAvLyBCdWlsZCBRU0Eg
cmVnZXgKLSAgICAvLyBSZWdleCBzdHJhdGVneSBhZG9wdGVkIGZyb20gRGllZ28gUGVyaW5pCi0g
ICAgYXNzZXJ0KGZ1bmN0aW9uKCBkaXYgKSB7Ci0gICAgLy8gU2VsZWN0IGlzIHNldCB0byBlbXB0
eSBzdHJpbmcgb24gcHVycG9zZQotICAgIC8vIFRoaXMgaXMgdG8gdGVzdCBJRSdzIHRyZWF0bWVu
dCBvZiBub3QgZXhwbGljdGx5Ci0gICAgLy8gc2V0dGluZyBhIGJvb2xlYW4gY29udGVudCBhdHRy
aWJ1dGUsCi0gICAgLy8gc2luY2UgaXRzIHByZXNlbmNlIHNob3VsZCBiZSBlbm91Z2gKLSAgICAv
LyBodHRwOi8vYnVncy5qcXVlcnkuY29tL3RpY2tldC8xMjM1OQotICAgIGRpdi5pbm5lckhUTUwg
PSAiPHNlbGVjdD48b3B0aW9uIHNlbGVjdGVkPScnPjwvb3B0aW9uPjwvc2VsZWN0PiI7Ci0KLSAg
ICAvLyBJRTggLSBTb21lIGJvb2xlYW4gYXR0cmlidXRlcyBhcmUgbm90IHRyZWF0ZWQgY29ycmVj
dGx5Ci0gICAgaWYgKCAhZGl2LnF1ZXJ5U2VsZWN0b3JBbGwoIltzZWxlY3RlZF0iKS5sZW5ndGgg
KSB7Ci0gICAgcmJ1Z2d5UVNBLnB1c2goICJcXFsiICsgd2hpdGVzcGFjZSArICIqKD86Y2hlY2tl
ZHxkaXNhYmxlZHxpc21hcHxtdWx0aXBsZXxyZWFkb25seXxzZWxlY3RlZHx2YWx1ZSkiICk7Ci0g
ICAgfQotCi0gICAgLy8gV2Via2l0L09wZXJhIC0gOmNoZWNrZWQgc2hvdWxkIHJldHVybiBzZWxl
Y3RlZCBvcHRpb24gZWxlbWVudHMKLSAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDExL1JF
Qy1jc3MzLXNlbGVjdG9ycy0yMDExMDkyOS8jY2hlY2tlZAotICAgIC8vIElFOCB0aHJvd3MgZXJy
b3IgaGVyZSBhbmQgd2lsbCBub3Qgc2VlIGxhdGVyIHRlc3RzCi0gICAgaWYgKCAhZGl2LnF1ZXJ5
U2VsZWN0b3JBbGwoIjpjaGVja2VkIikubGVuZ3RoICkgewotICAgIHJidWdneVFTQS5wdXNoKCI6
Y2hlY2tlZCIpOwotICAgIH0KLSAgICB9KTsKLQotICAgIGFzc2VydChmdW5jdGlvbiggZGl2ICkg
ewotCi0gICAgLy8gT3BlcmEgMTAtMTIvSUU4IC0gXj0gJD0gKj0gYW5kIGVtcHR5IHZhbHVlcwot
ICAgIC8vIFNob3VsZCBub3Qgc2VsZWN0IGFueXRoaW5nCi0gICAgZGl2LmlubmVySFRNTCA9ICI8
aW5wdXQgdHlwZT0naGlkZGVuJyBpPScnLz4iOwotICAgIGlmICggZGl2LnF1ZXJ5U2VsZWN0b3JB
bGwoIltpXj0nJ10iKS5sZW5ndGggKSB7Ci0gICAgcmJ1Z2d5UVNBLnB1c2goICJbKl4kXT0iICsg
d2hpdGVzcGFjZSArICIqKD86XCJcInwnJykiICk7Ci0gICAgfQotCi0gICAgLy8gRkYgMy41IC0g
OmVuYWJsZWQvOmRpc2FibGVkIGFuZCBoaWRkZW4gZWxlbWVudHMgKGhpZGRlbiBlbGVtZW50cyBh
cmUgc3RpbGwgZW5hYmxlZCkKLSAgICAvLyBJRTggdGhyb3dzIGVycm9yIGhlcmUgYW5kIHdpbGwg
bm90IHNlZSBsYXRlciB0ZXN0cwotICAgIGlmICggIWRpdi5xdWVyeVNlbGVjdG9yQWxsKCI6ZW5h
YmxlZCIpLmxlbmd0aCApIHsKLSAgICByYnVnZ3lRU0EucHVzaCggIjplbmFibGVkIiwgIjpkaXNh
YmxlZCIgKTsKLSAgICB9Ci0KLSAgICAvLyBPcGVyYSAxMC0xMSBkb2VzIG5vdCB0aHJvdyBvbiBw
b3N0LWNvbW1hIGludmFsaWQgcHNldWRvcwotICAgIGRpdi5xdWVyeVNlbGVjdG9yQWxsKCIqLDp4
Iik7Ci0gICAgcmJ1Z2d5UVNBLnB1c2goIiwuKjoiKTsKLSAgICB9KTsKLSAgICB9Ci0KLSAgICBp
ZiAoIChzdXBwb3J0Lm1hdGNoZXNTZWxlY3RvciA9IGlzTmF0aXZlKCAobWF0Y2hlcyA9IGRvY0Vs
ZW0ubWF0Y2hlc1NlbGVjdG9yIHx8Ci0gICAgZG9jRWxlbS5tb3pNYXRjaGVzU2VsZWN0b3IgfHwK
LSAgICBkb2NFbGVtLndlYmtpdE1hdGNoZXNTZWxlY3RvciB8fAotICAgIGRvY0VsZW0ub01hdGNo
ZXNTZWxlY3RvciB8fAotICAgIGRvY0VsZW0ubXNNYXRjaGVzU2VsZWN0b3IpICkpICkgewotCi0g
ICAgYXNzZXJ0KGZ1bmN0aW9uKCBkaXYgKSB7Ci0gICAgLy8gQ2hlY2sgdG8gc2VlIGlmIGl0J3Mg
cG9zc2libGUgdG8gZG8gbWF0Y2hlc1NlbGVjdG9yCi0gICAgLy8gb24gYSBkaXNjb25uZWN0ZWQg
bm9kZSAoSUUgOSkKLSAgICBzdXBwb3J0LmRpc2Nvbm5lY3RlZE1hdGNoID0gbWF0Y2hlcy5jYWxs
KCBkaXYsICJkaXYiICk7Ci0KLSAgICAvLyBUaGlzIHNob3VsZCBmYWlsIHdpdGggYW4gZXhjZXB0
aW9uCi0gICAgLy8gR2Vja28gZG9lcyBub3QgZXJyb3IsIHJldHVybnMgZmFsc2UgaW5zdGVhZAot
ICAgIG1hdGNoZXMuY2FsbCggZGl2LCAiW3MhPScnXTp4IiApOwotICAgIHJidWdneU1hdGNoZXMu
cHVzaCggIiE9IiwgcHNldWRvcyApOwotICAgIH0pOwotICAgIH0KLQotICAgIHJidWdneVFTQSA9
IG5ldyBSZWdFeHAoIHJidWdneVFTQS5qb2luKCJ8IikgKTsKLSAgICByYnVnZ3lNYXRjaGVzID0g
bmV3IFJlZ0V4cCggcmJ1Z2d5TWF0Y2hlcy5qb2luKCJ8IikgKTsKLQotICAgIC8vIEVsZW1lbnQg
Y29udGFpbnMgYW5vdGhlcgotICAgIC8vIFB1cnBvc2VmdWxseSBkb2VzIG5vdCBpbXBsZW1lbnQg
aW5jbHVzaXZlIGRlc2NlbmRlbnQKLSAgICAvLyBBcyBpbiwgYW4gZWxlbWVudCBkb2VzIG5vdCBj
b250YWluIGl0c2VsZgotICAgIGNvbnRhaW5zID0gaXNOYXRpdmUoZG9jRWxlbS5jb250YWlucykg
fHwgZG9jRWxlbS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiA/Ci0gICAgZnVuY3Rpb24oIGEsIGIg
KSB7Ci0gICAgdmFyIGFkb3duID0gYS5ub2RlVHlwZSA9PT0gOSA/IGEuZG9jdW1lbnRFbGVtZW50
IDogYSwKLSAgICBidXAgPSBiICYmIGIucGFyZW50Tm9kZTsKLSAgICByZXR1cm4gYSA9PT0gYnVw
IHx8ICEhKCBidXAgJiYgYnVwLm5vZGVUeXBlID09PSAxICYmICgKLSAgICBhZG93bi5jb250YWlu
cyA/Ci0gICAgYWRvd24uY29udGFpbnMoIGJ1cCApIDoKLSAgICBhLmNvbXBhcmVEb2N1bWVudFBv
c2l0aW9uICYmIGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oIGJ1cCApICYgMTYKLSAgICApKTsK
LSAgICB9IDoKLSAgICBmdW5jdGlvbiggYSwgYiApIHsKLSAgICBpZiAoIGIgKSB7Ci0gICAgd2hp
bGUgKCAoYiA9IGIucGFyZW50Tm9kZSkgKSB7Ci0gICAgaWYgKCBiID09PSBhICkgewotICAgIHJl
dHVybiB0cnVlOwotICAgIH0KLSAgICB9Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLSAgICB9
OwotCi0gICAgLy8gRG9jdW1lbnQgb3JkZXIgc29ydGluZwotICAgIHNvcnRPcmRlciA9IGRvY0Vs
ZW0uY29tcGFyZURvY3VtZW50UG9zaXRpb24gPwotICAgIGZ1bmN0aW9uKCBhLCBiICkgewotICAg
IHZhciBjb21wYXJlOwotCi0gICAgaWYgKCBhID09PSBiICkgewotICAgIGhhc0R1cGxpY2F0ZSA9
IHRydWU7Ci0gICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgaWYgKCAoY29tcGFyZSA9IGIuY29t
cGFyZURvY3VtZW50UG9zaXRpb24gJiYgYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiAmJiBhLmNv
bXBhcmVEb2N1bWVudFBvc2l0aW9uKCBiICkpICkgewotICAgIGlmICggY29tcGFyZSAmIDEgfHwg
YS5wYXJlbnROb2RlICYmIGEucGFyZW50Tm9kZS5ub2RlVHlwZSA9PT0gMTEgKSB7Ci0gICAgaWYg
KCBhID09PSBkb2MgfHwgY29udGFpbnMoIHByZWZlcnJlZERvYywgYSApICkgewotICAgIHJldHVy
biAtMTsKLSAgICB9Ci0gICAgaWYgKCBiID09PSBkb2MgfHwgY29udGFpbnMoIHByZWZlcnJlZERv
YywgYiApICkgewotICAgIHJldHVybiAxOwotICAgIH0KLSAgICByZXR1cm4gMDsKLSAgICB9Ci0g
ICAgcmV0dXJuIGNvbXBhcmUgJiA0ID8gLTEgOiAxOwotICAgIH0KLQotICAgIHJldHVybiBhLmNv
bXBhcmVEb2N1bWVudFBvc2l0aW9uID8gLTEgOiAxOwotICAgIH0gOgotICAgIGZ1bmN0aW9uKCBh
LCBiICkgewotICAgIHZhciBjdXIsCi0gICAgaSA9IDAsCi0gICAgYXVwID0gYS5wYXJlbnROb2Rl
LAotICAgIGJ1cCA9IGIucGFyZW50Tm9kZSwKLSAgICBhcCA9IFsgYSBdLAotICAgIGJwID0gWyBi
IF07Ci0KLSAgICAvLyBFeGl0IGVhcmx5IGlmIHRoZSBub2RlcyBhcmUgaWRlbnRpY2FsCi0gICAg
aWYgKCBhID09PSBiICkgewotICAgIGhhc0R1cGxpY2F0ZSA9IHRydWU7Ci0gICAgcmV0dXJuIDA7
Ci0KLSAgICAvLyBQYXJlbnRsZXNzIG5vZGVzIGFyZSBlaXRoZXIgZG9jdW1lbnRzIG9yIGRpc2Nv
bm5lY3RlZAotICAgIH0gZWxzZSBpZiAoICFhdXAgfHwgIWJ1cCApIHsKLSAgICByZXR1cm4gYSA9
PT0gZG9jID8gLTEgOgotICAgIGIgPT09IGRvYyA/IDEgOgotICAgIGF1cCA/IC0xIDoKLSAgICBi
dXAgPyAxIDoKLSAgICAwOwotCi0gICAgLy8gSWYgdGhlIG5vZGVzIGFyZSBzaWJsaW5ncywgd2Ug
Y2FuIGRvIGEgcXVpY2sgY2hlY2sKLSAgICB9IGVsc2UgaWYgKCBhdXAgPT09IGJ1cCApIHsKLSAg
ICByZXR1cm4gc2libGluZ0NoZWNrKCBhLCBiICk7Ci0gICAgfQotCi0gICAgLy8gT3RoZXJ3aXNl
IHdlIG5lZWQgZnVsbCBsaXN0cyBvZiB0aGVpciBhbmNlc3RvcnMgZm9yIGNvbXBhcmlzb24KLSAg
ICBjdXIgPSBhOwotICAgIHdoaWxlICggKGN1ciA9IGN1ci5wYXJlbnROb2RlKSApIHsKLSAgICBh
cC51bnNoaWZ0KCBjdXIgKTsKLSAgICB9Ci0gICAgY3VyID0gYjsKLSAgICB3aGlsZSAoIChjdXIg
PSBjdXIucGFyZW50Tm9kZSkgKSB7Ci0gICAgYnAudW5zaGlmdCggY3VyICk7Ci0gICAgfQotCi0g
ICAgLy8gV2FsayBkb3duIHRoZSB0cmVlIGxvb2tpbmcgZm9yIGEgZGlzY3JlcGFuY3kKLSAgICB3
aGlsZSAoIGFwW2ldID09PSBicFtpXSApIHsKLSAgICBpKys7Ci0gICAgfQotCi0gICAgcmV0dXJu
IGkgPwotICAgIC8vIERvIGEgc2libGluZyBjaGVjayBpZiB0aGUgbm9kZXMgaGF2ZSBhIGNvbW1v
biBhbmNlc3RvcgotICAgIHNpYmxpbmdDaGVjayggYXBbaV0sIGJwW2ldICkgOgotCi0gICAgLy8g
T3RoZXJ3aXNlIG5vZGVzIGluIG91ciBkb2N1bWVudCBzb3J0IGZpcnN0Ci0gICAgYXBbaV0gPT09
IHByZWZlcnJlZERvYyA/IC0xIDoKLSAgICBicFtpXSA9PT0gcHJlZmVycmVkRG9jID8gMSA6Ci0g
ICAgMDsKLSAgICB9OwotCi0gICAgLy8gQWx3YXlzIGFzc3VtZSB0aGUgcHJlc2VuY2Ugb2YgZHVw
bGljYXRlcyBpZiBzb3J0IGRvZXNuJ3QKLSAgICAvLyBwYXNzIHRoZW0gdG8gb3VyIGNvbXBhcmlz
b24gZnVuY3Rpb24gKGFzIGluIEdvb2dsZSBDaHJvbWUpLgotICAgIGhhc0R1cGxpY2F0ZSA9IGZh
bHNlOwotICAgIFswLCAwXS5zb3J0KCBzb3J0T3JkZXIgKTsKLSAgICBzdXBwb3J0LmRldGVjdER1
cGxpY2F0ZXMgPSBoYXNEdXBsaWNhdGU7Ci0KLSAgICByZXR1cm4gZG9jdW1lbnQ7Ci19OwotCi1T
aXp6bGUubWF0Y2hlcyA9IGZ1bmN0aW9uKCBleHByLCBlbGVtZW50cyApIHsKLSAgICByZXR1cm4g
U2l6emxlKCBleHByLCBudWxsLCBudWxsLCBlbGVtZW50cyApOwotfTsKLQotU2l6emxlLm1hdGNo
ZXNTZWxlY3RvciA9IGZ1bmN0aW9uKCBlbGVtLCBleHByICkgewotICAgIC8vIFNldCBkb2N1bWVu
dCB2YXJzIGlmIG5lZWRlZAotICAgIGlmICggKCBlbGVtLm93bmVyRG9jdW1lbnQgfHwgZWxlbSAp
ICE9PSBkb2N1bWVudCApIHsKLSAgICBzZXREb2N1bWVudCggZWxlbSApOwotICAgIH0KLQotICAg
IC8vIE1ha2Ugc3VyZSB0aGF0IGF0dHJpYnV0ZSBzZWxlY3RvcnMgYXJlIHF1b3RlZAotICAgIGV4
cHIgPSBleHByLnJlcGxhY2UoIHJhdHRyaWJ1dGVRdW90ZXMsICI9JyQxJ10iICk7Ci0KLSAgICAv
LyByYnVnZ3lRU0EgYWx3YXlzIGNvbnRhaW5zIDpmb2N1cywgc28gbm8gbmVlZCBmb3IgYW4gZXhp
c3RlbmNlIGNoZWNrCi0gICAgaWYgKCBzdXBwb3J0Lm1hdGNoZXNTZWxlY3RvciAmJiAhZG9jdW1l
bnRJc1hNTCAmJiAoIXJidWdneU1hdGNoZXMgfHwgIXJidWdneU1hdGNoZXMudGVzdChleHByKSkg
JiYgIXJidWdneVFTQS50ZXN0KGV4cHIpICkgewotICAgIHRyeSB7Ci0gICAgdmFyIHJldCA9IG1h
dGNoZXMuY2FsbCggZWxlbSwgZXhwciApOwotCi0gICAgLy8gSUUgOSdzIG1hdGNoZXNTZWxlY3Rv
ciByZXR1cm5zIGZhbHNlIG9uIGRpc2Nvbm5lY3RlZCBub2RlcwotICAgIGlmICggcmV0IHx8IHN1
cHBvcnQuZGlzY29ubmVjdGVkTWF0Y2ggfHwKLSAgICAvLyBBcyB3ZWxsLCBkaXNjb25uZWN0ZWQg
bm9kZXMgYXJlIHNhaWQgdG8gYmUgaW4gYSBkb2N1bWVudAotICAgIC8vIGZyYWdtZW50IGluIElF
IDkKLSAgICBlbGVtLmRvY3VtZW50ICYmIGVsZW0uZG9jdW1lbnQubm9kZVR5cGUgIT09IDExICkg
ewotICAgIHJldHVybiByZXQ7Ci0gICAgfQotICAgIH0gY2F0Y2goZSkge30KLSAgICB9Ci0KLSAg
ICByZXR1cm4gU2l6emxlKCBleHByLCBkb2N1bWVudCwgbnVsbCwgW2VsZW1dICkubGVuZ3RoID4g
MDsKLX07Ci0KLVNpenpsZS5jb250YWlucyA9IGZ1bmN0aW9uKCBjb250ZXh0LCBlbGVtICkgewot
ICAgIC8vIFNldCBkb2N1bWVudCB2YXJzIGlmIG5lZWRlZAotICAgIGlmICggKCBjb250ZXh0Lm93
bmVyRG9jdW1lbnQgfHwgY29udGV4dCApICE9PSBkb2N1bWVudCApIHsKLSAgICBzZXREb2N1bWVu
dCggY29udGV4dCApOwotICAgIH0KLSAgICByZXR1cm4gY29udGFpbnMoIGNvbnRleHQsIGVsZW0g
KTsKLX07Ci0KLVNpenpsZS5hdHRyID0gZnVuY3Rpb24oIGVsZW0sIG5hbWUgKSB7Ci0gICAgdmFy
IHZhbDsKLQotICAgIC8vIFNldCBkb2N1bWVudCB2YXJzIGlmIG5lZWRlZAotICAgIGlmICggKCBl
bGVtLm93bmVyRG9jdW1lbnQgfHwgZWxlbSApICE9PSBkb2N1bWVudCApIHsKLSAgICBzZXREb2N1
bWVudCggZWxlbSApOwotICAgIH0KLQotICAgIGlmICggIWRvY3VtZW50SXNYTUwgKSB7Ci0gICAg
bmFtZSA9IG5hbWUudG9Mb3dlckNhc2UoKTsKLSAgICB9Ci0gICAgaWYgKCAodmFsID0gRXhwci5h
dHRySGFuZGxlWyBuYW1lIF0pICkgewotICAgIHJldHVybiB2YWwoIGVsZW0gKTsKLSAgICB9Ci0g
ICAgaWYgKCBkb2N1bWVudElzWE1MIHx8IHN1cHBvcnQuYXR0cmlidXRlcyApIHsKLSAgICByZXR1
cm4gZWxlbS5nZXRBdHRyaWJ1dGUoIG5hbWUgKTsKLSAgICB9Ci0gICAgcmV0dXJuICggKHZhbCA9
IGVsZW0uZ2V0QXR0cmlidXRlTm9kZSggbmFtZSApKSB8fCBlbGVtLmdldEF0dHJpYnV0ZSggbmFt
ZSApICkgJiYgZWxlbVsgbmFtZSBdID09PSB0cnVlID8KLSAgICBuYW1lIDoKLSAgICB2YWwgJiYg
dmFsLnNwZWNpZmllZCA/IHZhbC52YWx1ZSA6IG51bGw7Ci19OwotCi1TaXp6bGUuZXJyb3IgPSBm
dW5jdGlvbiggbXNnICkgewotICAgIHRocm93IG5ldyBFcnJvciggIlN5bnRheCBlcnJvciwgdW5y
ZWNvZ25pemVkIGV4cHJlc3Npb246ICIgKyBtc2cgKTsKLX07Ci0KLS8vIERvY3VtZW50IHNvcnRp
bmcgYW5kIHJlbW92aW5nIGR1cGxpY2F0ZXMKLVNpenpsZS51bmlxdWVTb3J0ID0gZnVuY3Rpb24o
IHJlc3VsdHMgKSB7Ci0gICAgdmFyIGVsZW0sCi0gICAgZHVwbGljYXRlcyA9IFtdLAotICAgIGkg
PSAxLAotICAgIGogPSAwOwotCi0gICAgLy8gVW5sZXNzIHdlICprbm93KiB3ZSBjYW4gZGV0ZWN0
IGR1cGxpY2F0ZXMsIGFzc3VtZSB0aGVpciBwcmVzZW5jZQotICAgIGhhc0R1cGxpY2F0ZSA9ICFz
dXBwb3J0LmRldGVjdER1cGxpY2F0ZXM7Ci0gICAgcmVzdWx0cy5zb3J0KCBzb3J0T3JkZXIgKTsK
LQotICAgIGlmICggaGFzRHVwbGljYXRlICkgewotICAgIGZvciAoIDsgKGVsZW0gPSByZXN1bHRz
W2ldKTsgaSsrICkgewotICAgIGlmICggZWxlbSA9PT0gcmVzdWx0c1sgaSAtIDEgXSApIHsKLSAg
ICBqID0gZHVwbGljYXRlcy5wdXNoKCBpICk7Ci0gICAgfQotICAgIH0KLSAgICB3aGlsZSAoIGot
LSApIHsKLSAgICByZXN1bHRzLnNwbGljZSggZHVwbGljYXRlc1sgaiBdLCAxICk7Ci0gICAgfQot
ICAgIH0KLQotICAgIHJldHVybiByZXN1bHRzOwotfTsKLQotZnVuY3Rpb24gc2libGluZ0NoZWNr
KCBhLCBiICkgewotICAgIHZhciBjdXIgPSBiICYmIGEsCi0gICAgZGlmZiA9IGN1ciAmJiAoIH5i
LnNvdXJjZUluZGV4IHx8IE1BWF9ORUdBVElWRSApIC0gKCB+YS5zb3VyY2VJbmRleCB8fCBNQVhf
TkVHQVRJVkUgKTsKLQotICAgIC8vIFVzZSBJRSBzb3VyY2VJbmRleCBpZiBhdmFpbGFibGUgb24g
Ym90aCBub2RlcwotICAgIGlmICggZGlmZiApIHsKLSAgICByZXR1cm4gZGlmZjsKLSAgICB9Ci0K
LSAgICAvLyBDaGVjayBpZiBiIGZvbGxvd3MgYQotICAgIGlmICggY3VyICkgewotICAgIHdoaWxl
ICggKGN1ciA9IGN1ci5uZXh0U2libGluZykgKSB7Ci0gICAgaWYgKCBjdXIgPT09IGIgKSB7Ci0g
ICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIGEgPyAxIDog
LTE7Ci19Ci0KLS8vIFJldHVybnMgYSBmdW5jdGlvbiB0byB1c2UgaW4gcHNldWRvcyBmb3IgaW5w
dXQgdHlwZXMKLWZ1bmN0aW9uIGNyZWF0ZUlucHV0UHNldWRvKCB0eXBlICkgewotICAgIHJldHVy
biBmdW5jdGlvbiggZWxlbSApIHsKLSAgICB2YXIgbmFtZSA9IGVsZW0ubm9kZU5hbWUudG9Mb3dl
ckNhc2UoKTsKLSAgICByZXR1cm4gbmFtZSA9PT0gImlucHV0IiAmJiBlbGVtLnR5cGUgPT09IHR5
cGU7Ci0gICAgfTsKLX0KLQotLy8gUmV0dXJucyBhIGZ1bmN0aW9uIHRvIHVzZSBpbiBwc2V1ZG9z
IGZvciBidXR0b25zCi1mdW5jdGlvbiBjcmVhdGVCdXR0b25Qc2V1ZG8oIHR5cGUgKSB7Ci0gICAg
cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkgewotICAgIHZhciBuYW1lID0gZWxlbS5ub2RlTmFtZS50
b0xvd2VyQ2FzZSgpOwotICAgIHJldHVybiAobmFtZSA9PT0gImlucHV0IiB8fCBuYW1lID09PSAi
YnV0dG9uIikgJiYgZWxlbS50eXBlID09PSB0eXBlOwotICAgIH07Ci19Ci0KLS8vIFJldHVybnMg
YSBmdW5jdGlvbiB0byB1c2UgaW4gcHNldWRvcyBmb3IgcG9zaXRpb25hbHMKLWZ1bmN0aW9uIGNy
ZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oIGZuICkgewotICAgIHJldHVybiBtYXJrRnVuY3Rpb24oZnVu
Y3Rpb24oIGFyZ3VtZW50ICkgewotICAgIGFyZ3VtZW50ID0gK2FyZ3VtZW50OwotICAgIHJldHVy
biBtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIHNlZWQsIG1hdGNoZXMgKSB7Ci0gICAgdmFyIGosCi0g
ICAgbWF0Y2hJbmRleGVzID0gZm4oIFtdLCBzZWVkLmxlbmd0aCwgYXJndW1lbnQgKSwKLSAgICBp
ID0gbWF0Y2hJbmRleGVzLmxlbmd0aDsKLQotICAgIC8vIE1hdGNoIGVsZW1lbnRzIGZvdW5kIGF0
IHRoZSBzcGVjaWZpZWQgaW5kZXhlcwotICAgIHdoaWxlICggaS0tICkgewotICAgIGlmICggc2Vl
ZFsgKGogPSBtYXRjaEluZGV4ZXNbaV0pIF0gKSB7Ci0gICAgc2VlZFtqXSA9ICEobWF0Y2hlc1tq
XSA9IHNlZWRbal0pOwotICAgIH0KLSAgICB9Ci0gICAgfSk7Ci0gICAgfSk7Ci19Ci0KLS8qKgot
ICogVXRpbGl0eSBmdW5jdGlvbiBmb3IgcmV0cmlldmluZyB0aGUgdGV4dCB2YWx1ZSBvZiBhbiBh
cnJheSBvZiBET00gbm9kZXMKLSAqIEBwYXJhbSB7QXJyYXl8RWxlbWVudH0gZWxlbQotICovCi1n
ZXRUZXh0ID0gU2l6emxlLmdldFRleHQgPSBmdW5jdGlvbiggZWxlbSApIHsKLSAgICB2YXIgbm9k
ZSwKLSAgICByZXQgPSAiIiwKLSAgICBpID0gMCwKLSAgICBub2RlVHlwZSA9IGVsZW0ubm9kZVR5
cGU7Ci0KLSAgICBpZiAoICFub2RlVHlwZSApIHsKLSAgICAvLyBJZiBubyBub2RlVHlwZSwgdGhp
cyBpcyBleHBlY3RlZCB0byBiZSBhbiBhcnJheQotICAgIGZvciAoIDsgKG5vZGUgPSBlbGVtW2ld
KTsgaSsrICkgewotICAgIC8vIERvIG5vdCB0cmF2ZXJzZSBjb21tZW50IG5vZGVzCi0gICAgcmV0
ICs9IGdldFRleHQoIG5vZGUgKTsKLSAgICB9Ci0gICAgfSBlbHNlIGlmICggbm9kZVR5cGUgPT09
IDEgfHwgbm9kZVR5cGUgPT09IDkgfHwgbm9kZVR5cGUgPT09IDExICkgewotICAgIC8vIFVzZSB0
ZXh0Q29udGVudCBmb3IgZWxlbWVudHMKLSAgICAvLyBpbm5lclRleHQgdXNhZ2UgcmVtb3ZlZCBm
b3IgY29uc2lzdGVuY3kgb2YgbmV3IGxpbmVzIChzZWUgIzExMTUzKQotICAgIGlmICggdHlwZW9m
IGVsZW0udGV4dENvbnRlbnQgPT09ICJzdHJpbmciICkgewotICAgIHJldHVybiBlbGVtLnRleHRD
b250ZW50OwotICAgIH0gZWxzZSB7Ci0gICAgLy8gVHJhdmVyc2UgaXRzIGNoaWxkcmVuCi0gICAg
Zm9yICggZWxlbSA9IGVsZW0uZmlyc3RDaGlsZDsgZWxlbTsgZWxlbSA9IGVsZW0ubmV4dFNpYmxp
bmcgKSB7Ci0gICAgcmV0ICs9IGdldFRleHQoIGVsZW0gKTsKLSAgICB9Ci0gICAgfQotICAgIH0g
ZWxzZSBpZiAoIG5vZGVUeXBlID09PSAzIHx8IG5vZGVUeXBlID09PSA0ICkgewotICAgIHJldHVy
biBlbGVtLm5vZGVWYWx1ZTsKLSAgICB9Ci0gICAgLy8gRG8gbm90IGluY2x1ZGUgY29tbWVudCBv
ciBwcm9jZXNzaW5nIGluc3RydWN0aW9uIG5vZGVzCi0KLSAgICByZXR1cm4gcmV0OwotfTsKLQot
RXhwciA9IFNpenpsZS5zZWxlY3RvcnMgPSB7Ci0KLSAgICAvLyBDYW4gYmUgYWRqdXN0ZWQgYnkg
dGhlIHVzZXIKLSAgICBjYWNoZUxlbmd0aDogNTAsCi0KLSAgICBjcmVhdGVQc2V1ZG86IG1hcmtG
dW5jdGlvbiwKLQotICAgIG1hdGNoOiBtYXRjaEV4cHIsCi0KLSAgICBmaW5kOiB7fSwKLQotICAg
IHJlbGF0aXZlOiB7Ci0gICAgIj4iOiB7IGRpcjogInBhcmVudE5vZGUiLCBmaXJzdDogdHJ1ZSB9
LAotICAgICIgIjogeyBkaXI6ICJwYXJlbnROb2RlIiB9LAotICAgICIrIjogeyBkaXI6ICJwcmV2
aW91c1NpYmxpbmciLCBmaXJzdDogdHJ1ZSB9LAotICAgICJ+IjogeyBkaXI6ICJwcmV2aW91c1Np
YmxpbmciIH0KLSAgICB9LAotCi0gICAgcHJlRmlsdGVyOiB7Ci0gICAgIkFUVFIiOiBmdW5jdGlv
biggbWF0Y2ggKSB7Ci0gICAgbWF0Y2hbMV0gPSBtYXRjaFsxXS5yZXBsYWNlKCBydW5lc2NhcGUs
IGZ1bmVzY2FwZSApOwotCi0gICAgLy8gTW92ZSB0aGUgZ2l2ZW4gdmFsdWUgdG8gbWF0Y2hbM10g
d2hldGhlciBxdW90ZWQgb3IgdW5xdW90ZWQKLSAgICBtYXRjaFszXSA9ICggbWF0Y2hbNF0gfHwg
bWF0Y2hbNV0gfHwgIiIgKS5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApOwotCi0gICAg
aWYgKCBtYXRjaFsyXSA9PT0gIn49IiApIHsKLSAgICBtYXRjaFszXSA9ICIgIiArIG1hdGNoWzNd
ICsgIiAiOwotICAgIH0KLQotICAgIHJldHVybiBtYXRjaC5zbGljZSggMCwgNCApOwotICAgIH0s
Ci0KLSAgICAiQ0hJTEQiOiBmdW5jdGlvbiggbWF0Y2ggKSB7Ci0gICAgLyogbWF0Y2hlcyBmcm9t
IG1hdGNoRXhwclsiQ0hJTEQiXQotICAgIDEgdHlwZSAob25seXxudGh8Li4uKQotICAgIDIgd2hh
dCAoY2hpbGR8b2YtdHlwZSkKLSAgICAzIGFyZ3VtZW50IChldmVufG9kZHxcZCp8XGQqbihbKy1d
XGQrKT98Li4uKQotICAgIDQgeG4tY29tcG9uZW50IG9mIHhuK3kgYXJndW1lbnQgKFsrLV0/XGQq
bnwpCi0gICAgNSBzaWduIG9mIHhuLWNvbXBvbmVudAotICAgIDYgeCBvZiB4bi1jb21wb25lbnQK
LSAgICA3IHNpZ24gb2YgeS1jb21wb25lbnQKLSAgICA4IHkgb2YgeS1jb21wb25lbnQKLSAgICAq
LwotICAgIG1hdGNoWzFdID0gbWF0Y2hbMV0udG9Mb3dlckNhc2UoKTsKLQotICAgIGlmICggbWF0
Y2hbMV0uc2xpY2UoIDAsIDMgKSA9PT0gIm50aCIgKSB7Ci0gICAgLy8gbnRoLSogcmVxdWlyZXMg
YXJndW1lbnQKLSAgICBpZiAoICFtYXRjaFszXSApIHsKLSAgICBTaXp6bGUuZXJyb3IoIG1hdGNo
WzBdICk7Ci0gICAgfQotCi0gICAgLy8gbnVtZXJpYyB4IGFuZCB5IHBhcmFtZXRlcnMgZm9yIEV4
cHIuZmlsdGVyLkNISUxECi0gICAgLy8gcmVtZW1iZXIgdGhhdCBmYWxzZS90cnVlIGNhc3QgcmVz
cGVjdGl2ZWx5IHRvIDAvMQotICAgIG1hdGNoWzRdID0gKyggbWF0Y2hbNF0gPyBtYXRjaFs1XSAr
IChtYXRjaFs2XSB8fCAxKSA6IDIgKiAoIG1hdGNoWzNdID09PSAiZXZlbiIgfHwgbWF0Y2hbM10g
PT09ICJvZGQiICkgKTsKLSAgICBtYXRjaFs1XSA9ICsoICggbWF0Y2hbN10gKyBtYXRjaFs4XSAp
IHx8IG1hdGNoWzNdID09PSAib2RkIiApOwotCi0gICAgLy8gb3RoZXIgdHlwZXMgcHJvaGliaXQg
YXJndW1lbnRzCi0gICAgfSBlbHNlIGlmICggbWF0Y2hbM10gKSB7Ci0gICAgU2l6emxlLmVycm9y
KCBtYXRjaFswXSApOwotICAgIH0KLQotICAgIHJldHVybiBtYXRjaDsKLSAgICB9LAotCi0gICAg
IlBTRVVETyI6IGZ1bmN0aW9uKCBtYXRjaCApIHsKLSAgICB2YXIgZXhjZXNzLAotICAgIHVucXVv
dGVkID0gIW1hdGNoWzVdICYmIG1hdGNoWzJdOwotCi0gICAgaWYgKCBtYXRjaEV4cHJbIkNISUxE
Il0udGVzdCggbWF0Y2hbMF0gKSApIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgICB9Ci0KLSAgICAv
LyBBY2NlcHQgcXVvdGVkIGFyZ3VtZW50cyBhcy1pcwotICAgIGlmICggbWF0Y2hbNF0gKSB7Ci0g
ICAgbWF0Y2hbMl0gPSBtYXRjaFs0XTsKLQotICAgIC8vIFN0cmlwIGV4Y2VzcyBjaGFyYWN0ZXJz
IGZyb20gdW5xdW90ZWQgYXJndW1lbnRzCi0gICAgfSBlbHNlIGlmICggdW5xdW90ZWQgJiYgcnBz
ZXVkby50ZXN0KCB1bnF1b3RlZCApICYmCi0gICAgLy8gR2V0IGV4Y2VzcyBmcm9tIHRva2VuaXpl
IChyZWN1cnNpdmVseSkKLSAgICAoZXhjZXNzID0gdG9rZW5pemUoIHVucXVvdGVkLCB0cnVlICkp
ICYmCi0gICAgLy8gYWR2YW5jZSB0byB0aGUgbmV4dCBjbG9zaW5nIHBhcmVudGhlc2lzCi0gICAg
KGV4Y2VzcyA9IHVucXVvdGVkLmluZGV4T2YoICIpIiwgdW5xdW90ZWQubGVuZ3RoIC0gZXhjZXNz
ICkgLSB1bnF1b3RlZC5sZW5ndGgpICkgewotCi0gICAgLy8gZXhjZXNzIGlzIGEgbmVnYXRpdmUg
aW5kZXgKLSAgICBtYXRjaFswXSA9IG1hdGNoWzBdLnNsaWNlKCAwLCBleGNlc3MgKTsKLSAgICBt
YXRjaFsyXSA9IHVucXVvdGVkLnNsaWNlKCAwLCBleGNlc3MgKTsKLSAgICB9Ci0KLSAgICAvLyBS
ZXR1cm4gb25seSBjYXB0dXJlcyBuZWVkZWQgYnkgdGhlIHBzZXVkbyBmaWx0ZXIgbWV0aG9kICh0
eXBlIGFuZCBhcmd1bWVudCkKLSAgICByZXR1cm4gbWF0Y2guc2xpY2UoIDAsIDMgKTsKLSAgICB9
Ci0gICAgfSwKLQotICAgIGZpbHRlcjogewotCi0gICAgIlRBRyI6IGZ1bmN0aW9uKCBub2RlTmFt
ZSApIHsKLSAgICBpZiAoIG5vZGVOYW1lID09PSAiKiIgKSB7Ci0gICAgcmV0dXJuIGZ1bmN0aW9u
KCkgeyByZXR1cm4gdHJ1ZTsgfTsKLSAgICB9Ci0KLSAgICBub2RlTmFtZSA9IG5vZGVOYW1lLnJl
cGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICkudG9Mb3dlckNhc2UoKTsKLSAgICByZXR1cm4g
ZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgcmV0dXJuIGVsZW0ubm9kZU5hbWUgJiYgZWxlbS5ub2Rl
TmFtZS50b0xvd2VyQ2FzZSgpID09PSBub2RlTmFtZTsKLSAgICB9OwotICAgIH0sCi0KLSAgICAi
Q0xBU1MiOiBmdW5jdGlvbiggY2xhc3NOYW1lICkgewotICAgIHZhciBwYXR0ZXJuID0gY2xhc3ND
YWNoZVsgY2xhc3NOYW1lICsgIiAiIF07Ci0KLSAgICByZXR1cm4gcGF0dGVybiB8fAotICAgIChw
YXR0ZXJuID0gbmV3IFJlZ0V4cCggIihefCIgKyB3aGl0ZXNwYWNlICsgIikiICsgY2xhc3NOYW1l
ICsgIigiICsgd2hpdGVzcGFjZSArICJ8JCkiICkpICYmCi0gICAgY2xhc3NDYWNoZSggY2xhc3NO
YW1lLCBmdW5jdGlvbiggZWxlbSApIHsKLSAgICByZXR1cm4gcGF0dGVybi50ZXN0KCBlbGVtLmNs
YXNzTmFtZSB8fCAodHlwZW9mIGVsZW0uZ2V0QXR0cmlidXRlICE9PSBzdHJ1bmRlZmluZWQgJiYg
ZWxlbS5nZXRBdHRyaWJ1dGUoImNsYXNzIikpIHx8ICIiICk7Ci0gICAgfSk7Ci0gICAgfSwKLQot
ICAgICJBVFRSIjogZnVuY3Rpb24oIG5hbWUsIG9wZXJhdG9yLCBjaGVjayApIHsKLSAgICByZXR1
cm4gZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgdmFyIHJlc3VsdCA9IFNpenpsZS5hdHRyKCBlbGVt
LCBuYW1lICk7Ci0KLSAgICBpZiAoIHJlc3VsdCA9PSBudWxsICkgewotICAgIHJldHVybiBvcGVy
YXRvciA9PT0gIiE9IjsKLSAgICB9Ci0gICAgaWYgKCAhb3BlcmF0b3IgKSB7Ci0gICAgcmV0dXJu
IHRydWU7Ci0gICAgfQotCi0gICAgcmVzdWx0ICs9ICIiOwotCi0gICAgcmV0dXJuIG9wZXJhdG9y
ID09PSAiPSIgPyByZXN1bHQgPT09IGNoZWNrIDoKLSAgICBvcGVyYXRvciA9PT0gIiE9IiA/IHJl
c3VsdCAhPT0gY2hlY2sgOgotICAgIG9wZXJhdG9yID09PSAiXj0iID8gY2hlY2sgJiYgcmVzdWx0
LmluZGV4T2YoIGNoZWNrICkgPT09IDAgOgotICAgIG9wZXJhdG9yID09PSAiKj0iID8gY2hlY2sg
JiYgcmVzdWx0LmluZGV4T2YoIGNoZWNrICkgPiAtMSA6Ci0gICAgb3BlcmF0b3IgPT09ICIkPSIg
PyBjaGVjayAmJiByZXN1bHQuc2xpY2UoIC1jaGVjay5sZW5ndGggKSA9PT0gY2hlY2sgOgotICAg
IG9wZXJhdG9yID09PSAifj0iID8gKCAiICIgKyByZXN1bHQgKyAiICIgKS5pbmRleE9mKCBjaGVj
ayApID4gLTEgOgotICAgIG9wZXJhdG9yID09PSAifD0iID8gcmVzdWx0ID09PSBjaGVjayB8fCBy
ZXN1bHQuc2xpY2UoIDAsIGNoZWNrLmxlbmd0aCArIDEgKSA9PT0gY2hlY2sgKyAiLSIgOgotICAg
IGZhbHNlOwotICAgIH07Ci0gICAgfSwKLQotICAgICJDSElMRCI6IGZ1bmN0aW9uKCB0eXBlLCB3
aGF0LCBhcmd1bWVudCwgZmlyc3QsIGxhc3QgKSB7Ci0gICAgdmFyIHNpbXBsZSA9IHR5cGUuc2xp
Y2UoIDAsIDMgKSAhPT0gIm50aCIsCi0gICAgZm9yd2FyZCA9IHR5cGUuc2xpY2UoIC00ICkgIT09
ICJsYXN0IiwKLSAgICBvZlR5cGUgPSB3aGF0ID09PSAib2YtdHlwZSI7Ci0KLSAgICByZXR1cm4g
Zmlyc3QgPT09IDEgJiYgbGFzdCA9PT0gMCA/Ci0KLSAgICAvLyBTaG9ydGN1dCBmb3IgOm50aC0q
KG4pCi0gICAgZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgcmV0dXJuICEhZWxlbS5wYXJlbnROb2Rl
OwotICAgIH0gOgotCi0gICAgZnVuY3Rpb24oIGVsZW0sIGNvbnRleHQsIHhtbCApIHsKLSAgICB2
YXIgY2FjaGUsIG91dGVyQ2FjaGUsIG5vZGUsIGRpZmYsIG5vZGVJbmRleCwgc3RhcnQsCi0gICAg
ZGlyID0gc2ltcGxlICE9PSBmb3J3YXJkID8gIm5leHRTaWJsaW5nIiA6ICJwcmV2aW91c1NpYmxp
bmciLAotICAgIHBhcmVudCA9IGVsZW0ucGFyZW50Tm9kZSwKLSAgICBuYW1lID0gb2ZUeXBlICYm
IGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSwKLSAgICB1c2VDYWNoZSA9ICF4bWwgJiYgIW9m
VHlwZTsKLQotICAgIGlmICggcGFyZW50ICkgewotCi0gICAgLy8gOihmaXJzdHxsYXN0fG9ubHkp
LShjaGlsZHxvZi10eXBlKQotICAgIGlmICggc2ltcGxlICkgewotICAgIHdoaWxlICggZGlyICkg
ewotICAgIG5vZGUgPSBlbGVtOwotICAgIHdoaWxlICggKG5vZGUgPSBub2RlWyBkaXIgXSkgKSB7
Ci0gICAgaWYgKCBvZlR5cGUgPyBub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IG5hbWUg
OiBub2RlLm5vZGVUeXBlID09PSAxICkgewotICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAg
fQotICAgIC8vIFJldmVyc2UgZGlyZWN0aW9uIGZvciA6b25seS0qIChpZiB3ZSBoYXZlbid0IHll
dCBkb25lIHNvKQotICAgIHN0YXJ0ID0gZGlyID0gdHlwZSA9PT0gIm9ubHkiICYmICFzdGFydCAm
JiAibmV4dFNpYmxpbmciOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBz
dGFydCA9IFsgZm9yd2FyZCA/IHBhcmVudC5maXJzdENoaWxkIDogcGFyZW50Lmxhc3RDaGlsZCBd
OwotCi0gICAgLy8gbm9uLXhtbCA6bnRoLWNoaWxkKC4uLikgc3RvcmVzIGNhY2hlIGRhdGEgb24g
YHBhcmVudGAKLSAgICBpZiAoIGZvcndhcmQgJiYgdXNlQ2FjaGUgKSB7Ci0gICAgLy8gU2VlayBg
ZWxlbWAgZnJvbSBhIHByZXZpb3VzbHktY2FjaGVkIGluZGV4Ci0gICAgb3V0ZXJDYWNoZSA9IHBh
cmVudFsgZXhwYW5kbyBdIHx8IChwYXJlbnRbIGV4cGFuZG8gXSA9IHt9KTsKLSAgICBjYWNoZSA9
IG91dGVyQ2FjaGVbIHR5cGUgXSB8fCBbXTsKLSAgICBub2RlSW5kZXggPSBjYWNoZVswXSA9PT0g
ZGlycnVucyAmJiBjYWNoZVsxXTsKLSAgICBkaWZmID0gY2FjaGVbMF0gPT09IGRpcnJ1bnMgJiYg
Y2FjaGVbMl07Ci0gICAgbm9kZSA9IG5vZGVJbmRleCAmJiBwYXJlbnQuY2hpbGROb2Rlc1sgbm9k
ZUluZGV4IF07Ci0KLSAgICB3aGlsZSAoIChub2RlID0gKytub2RlSW5kZXggJiYgbm9kZSAmJiBu
b2RlWyBkaXIgXSB8fAotCi0gICAgLy8gRmFsbGJhY2sgdG8gc2Vla2luZyBgZWxlbWAgZnJvbSB0
aGUgc3RhcnQKLSAgICAoZGlmZiA9IG5vZGVJbmRleCA9IDApIHx8IHN0YXJ0LnBvcCgpKSApIHsK
LQotICAgIC8vIFdoZW4gZm91bmQsIGNhY2hlIGluZGV4ZXMgb24gYHBhcmVudGAgYW5kIGJyZWFr
Ci0gICAgaWYgKCBub2RlLm5vZGVUeXBlID09PSAxICYmICsrZGlmZiAmJiBub2RlID09PSBlbGVt
ICkgewotICAgIG91dGVyQ2FjaGVbIHR5cGUgXSA9IFsgZGlycnVucywgbm9kZUluZGV4LCBkaWZm
IF07Ci0gICAgYnJlYWs7Ci0gICAgfQotICAgIH0KLQotICAgIC8vIFVzZSBwcmV2aW91c2x5LWNh
Y2hlZCBlbGVtZW50IGluZGV4IGlmIGF2YWlsYWJsZQotICAgIH0gZWxzZSBpZiAoIHVzZUNhY2hl
ICYmIChjYWNoZSA9IChlbGVtWyBleHBhbmRvIF0gfHwgKGVsZW1bIGV4cGFuZG8gXSA9IHt9KSlb
IHR5cGUgXSkgJiYgY2FjaGVbMF0gPT09IGRpcnJ1bnMgKSB7Ci0gICAgZGlmZiA9IGNhY2hlWzFd
OwotCi0gICAgLy8geG1sIDpudGgtY2hpbGQoLi4uKSBvciA6bnRoLWxhc3QtY2hpbGQoLi4uKSBv
ciA6bnRoKC1sYXN0KT8tb2YtdHlwZSguLi4pCi0gICAgfSBlbHNlIHsKLSAgICAvLyBVc2UgdGhl
IHNhbWUgbG9vcCBhcyBhYm92ZSB0byBzZWVrIGBlbGVtYCBmcm9tIHRoZSBzdGFydAotICAgIHdo
aWxlICggKG5vZGUgPSArK25vZGVJbmRleCAmJiBub2RlICYmIG5vZGVbIGRpciBdIHx8Ci0gICAg
KGRpZmYgPSBub2RlSW5kZXggPSAwKSB8fCBzdGFydC5wb3AoKSkgKSB7Ci0KLSAgICBpZiAoICgg
b2ZUeXBlID8gbm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBuYW1lIDogbm9kZS5ub2Rl
VHlwZSA9PT0gMSApICYmICsrZGlmZiApIHsKLSAgICAvLyBDYWNoZSB0aGUgaW5kZXggb2YgZWFj
aCBlbmNvdW50ZXJlZCBlbGVtZW50Ci0gICAgaWYgKCB1c2VDYWNoZSApIHsKLSAgICAobm9kZVsg
ZXhwYW5kbyBdIHx8IChub2RlWyBleHBhbmRvIF0gPSB7fSkpWyB0eXBlIF0gPSBbIGRpcnJ1bnMs
IGRpZmYgXTsKLSAgICB9Ci0KLSAgICBpZiAoIG5vZGUgPT09IGVsZW0gKSB7Ci0gICAgYnJlYWs7
Ci0gICAgfQotICAgIH0KLSAgICB9Ci0gICAgfQotCi0gICAgLy8gSW5jb3Jwb3JhdGUgdGhlIG9m
ZnNldCwgdGhlbiBjaGVjayBhZ2FpbnN0IGN5Y2xlIHNpemUKLSAgICBkaWZmIC09IGxhc3Q7Ci0g
ICAgcmV0dXJuIGRpZmYgPT09IGZpcnN0IHx8ICggZGlmZiAlIGZpcnN0ID09PSAwICYmIGRpZmYg
LyBmaXJzdCA+PSAwICk7Ci0gICAgfQotICAgIH07Ci0gICAgfSwKLQotICAgICJQU0VVRE8iOiBm
dW5jdGlvbiggcHNldWRvLCBhcmd1bWVudCApIHsKLSAgICAvLyBwc2V1ZG8tY2xhc3MgbmFtZXMg
YXJlIGNhc2UtaW5zZW5zaXRpdmUKLSAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9zZWxlY3Rv
cnMvI3BzZXVkby1jbGFzc2VzCi0gICAgLy8gUHJpb3JpdGl6ZSBieSBjYXNlIHNlbnNpdGl2aXR5
IGluIGNhc2UgY3VzdG9tIHBzZXVkb3MgYXJlIGFkZGVkIHdpdGggdXBwZXJjYXNlIGxldHRlcnMK
LSAgICAvLyBSZW1lbWJlciB0aGF0IHNldEZpbHRlcnMgaW5oZXJpdHMgZnJvbSBwc2V1ZG9zCi0g
ICAgdmFyIGFyZ3MsCi0gICAgZm4gPSBFeHByLnBzZXVkb3NbIHBzZXVkbyBdIHx8IEV4cHIuc2V0
RmlsdGVyc1sgcHNldWRvLnRvTG93ZXJDYXNlKCkgXSB8fAotICAgIFNpenpsZS5lcnJvciggInVu
c3VwcG9ydGVkIHBzZXVkbzogIiArIHBzZXVkbyApOwotCi0gICAgLy8gVGhlIHVzZXIgbWF5IHVz
ZSBjcmVhdGVQc2V1ZG8gdG8gaW5kaWNhdGUgdGhhdAotICAgIC8vIGFyZ3VtZW50cyBhcmUgbmVl
ZGVkIHRvIGNyZWF0ZSB0aGUgZmlsdGVyIGZ1bmN0aW9uCi0gICAgLy8ganVzdCBhcyBTaXp6bGUg
ZG9lcwotICAgIGlmICggZm5bIGV4cGFuZG8gXSApIHsKLSAgICByZXR1cm4gZm4oIGFyZ3VtZW50
ICk7Ci0gICAgfQotCi0gICAgLy8gQnV0IG1haW50YWluIHN1cHBvcnQgZm9yIG9sZCBzaWduYXR1
cmVzCi0gICAgaWYgKCBmbi5sZW5ndGggPiAxICkgewotICAgIGFyZ3MgPSBbIHBzZXVkbywgcHNl
dWRvLCAiIiwgYXJndW1lbnQgXTsKLSAgICByZXR1cm4gRXhwci5zZXRGaWx0ZXJzLmhhc093blBy
b3BlcnR5KCBwc2V1ZG8udG9Mb3dlckNhc2UoKSApID8KLSAgICBtYXJrRnVuY3Rpb24oZnVuY3Rp
b24oIHNlZWQsIG1hdGNoZXMgKSB7Ci0gICAgdmFyIGlkeCwKLSAgICBtYXRjaGVkID0gZm4oIHNl
ZWQsIGFyZ3VtZW50ICksCi0gICAgaSA9IG1hdGNoZWQubGVuZ3RoOwotICAgIHdoaWxlICggaS0t
ICkgewotICAgIGlkeCA9IGluZGV4T2YuY2FsbCggc2VlZCwgbWF0Y2hlZFtpXSApOwotICAgIHNl
ZWRbIGlkeCBdID0gISggbWF0Y2hlc1sgaWR4IF0gPSBtYXRjaGVkW2ldICk7Ci0gICAgfQotICAg
IH0pIDoKLSAgICBmdW5jdGlvbiggZWxlbSApIHsKLSAgICByZXR1cm4gZm4oIGVsZW0sIDAsIGFy
Z3MgKTsKLSAgICB9OwotICAgIH0KLQotICAgIHJldHVybiBmbjsKLSAgICB9Ci0gICAgfSwKLQot
ICAgIHBzZXVkb3M6IHsKLSAgICAvLyBQb3RlbnRpYWxseSBjb21wbGV4IHBzZXVkb3MKLSAgICAi
bm90IjogbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCBzZWxlY3RvciApIHsKLSAgICAvLyBUcmltIHRo
ZSBzZWxlY3RvciBwYXNzZWQgdG8gY29tcGlsZQotICAgIC8vIHRvIGF2b2lkIHRyZWF0aW5nIGxl
YWRpbmcgYW5kIHRyYWlsaW5nCi0gICAgLy8gc3BhY2VzIGFzIGNvbWJpbmF0b3JzCi0gICAgdmFy
IGlucHV0ID0gW10sCi0gICAgcmVzdWx0cyA9IFtdLAotICAgIG1hdGNoZXIgPSBjb21waWxlKCBz
ZWxlY3Rvci5yZXBsYWNlKCBydHJpbSwgIiQxIiApICk7Ci0KLSAgICByZXR1cm4gbWF0Y2hlclsg
ZXhwYW5kbyBdID8KLSAgICBtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIHNlZWQsIG1hdGNoZXMsIGNv
bnRleHQsIHhtbCApIHsKLSAgICB2YXIgZWxlbSwKLSAgICB1bm1hdGNoZWQgPSBtYXRjaGVyKCBz
ZWVkLCBudWxsLCB4bWwsIFtdICksCi0gICAgaSA9IHNlZWQubGVuZ3RoOwotCi0gICAgLy8gTWF0
Y2ggZWxlbWVudHMgdW5tYXRjaGVkIGJ5IGBtYXRjaGVyYAotICAgIHdoaWxlICggaS0tICkgewot
ICAgIGlmICggKGVsZW0gPSB1bm1hdGNoZWRbaV0pICkgewotICAgIHNlZWRbaV0gPSAhKG1hdGNo
ZXNbaV0gPSBlbGVtKTsKLSAgICB9Ci0gICAgfQotICAgIH0pIDoKLSAgICBmdW5jdGlvbiggZWxl
bSwgY29udGV4dCwgeG1sICkgewotICAgIGlucHV0WzBdID0gZWxlbTsKLSAgICBtYXRjaGVyKCBp
bnB1dCwgbnVsbCwgeG1sLCByZXN1bHRzICk7Ci0gICAgcmV0dXJuICFyZXN1bHRzLnBvcCgpOwot
ICAgIH07Ci0gICAgfSksCi0KLSAgICAiaGFzIjogbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCBzZWxl
Y3RvciApIHsKLSAgICByZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgcmV0dXJuIFNpenps
ZSggc2VsZWN0b3IsIGVsZW0gKS5sZW5ndGggPiAwOwotICAgIH07Ci0gICAgfSksCi0KLSAgICAi
Y29udGFpbnMiOiBtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIHRleHQgKSB7Ci0gICAgcmV0dXJuIGZ1
bmN0aW9uKCBlbGVtICkgewotICAgIHJldHVybiAoIGVsZW0udGV4dENvbnRlbnQgfHwgZWxlbS5p
bm5lclRleHQgfHwgZ2V0VGV4dCggZWxlbSApICkuaW5kZXhPZiggdGV4dCApID4gLTE7Ci0gICAg
fTsKLSAgICB9KSwKLQotICAgIC8vICJXaGV0aGVyIGFuIGVsZW1lbnQgaXMgcmVwcmVzZW50ZWQg
YnkgYSA6bGFuZygpIHNlbGVjdG9yCi0gICAgLy8gaXMgYmFzZWQgc29sZWx5IG9uIHRoZSBlbGVt
ZW50J3MgbGFuZ3VhZ2UgdmFsdWUKLSAgICAvLyBiZWluZyBlcXVhbCB0byB0aGUgaWRlbnRpZmll
ciBDLAotICAgIC8vIG9yIGJlZ2lubmluZyB3aXRoIHRoZSBpZGVudGlmaWVyIEMgaW1tZWRpYXRl
bHkgZm9sbG93ZWQgYnkgIi0iLgotICAgIC8vIFRoZSBtYXRjaGluZyBvZiBDIGFnYWluc3QgdGhl
IGVsZW1lbnQncyBsYW5ndWFnZSB2YWx1ZSBpcyBwZXJmb3JtZWQgY2FzZS1pbnNlbnNpdGl2ZWx5
LgotICAgIC8vIFRoZSBpZGVudGlmaWVyIEMgZG9lcyBub3QgaGF2ZSB0byBiZSBhIHZhbGlkIGxh
bmd1YWdlIG5hbWUuIgotICAgIC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL3NlbGVjdG9ycy8jbGFu
Zy1wc2V1ZG8KLSAgICAibGFuZyI6IG1hcmtGdW5jdGlvbiggZnVuY3Rpb24oIGxhbmcgKSB7Ci0g
ICAgLy8gbGFuZyB2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgaWRlbnRpZmlkZXIKLSAgICBpZiAoICFy
aWRlbnRpZmllci50ZXN0KGxhbmcgfHwgIiIpICkgewotICAgIFNpenpsZS5lcnJvciggInVuc3Vw
cG9ydGVkIGxhbmc6ICIgKyBsYW5nICk7Ci0gICAgfQotICAgIGxhbmcgPSBsYW5nLnJlcGxhY2Uo
IHJ1bmVzY2FwZSwgZnVuZXNjYXBlICkudG9Mb3dlckNhc2UoKTsKLSAgICByZXR1cm4gZnVuY3Rp
b24oIGVsZW0gKSB7Ci0gICAgdmFyIGVsZW1MYW5nOwotICAgIGRvIHsKLSAgICBpZiAoIChlbGVt
TGFuZyA9IGRvY3VtZW50SXNYTUwgPwotICAgIGVsZW0uZ2V0QXR0cmlidXRlKCJ4bWw6bGFuZyIp
IHx8IGVsZW0uZ2V0QXR0cmlidXRlKCJsYW5nIikgOgotICAgIGVsZW0ubGFuZykgKSB7Ci0KLSAg
ICBlbGVtTGFuZyA9IGVsZW1MYW5nLnRvTG93ZXJDYXNlKCk7Ci0gICAgcmV0dXJuIGVsZW1MYW5n
ID09PSBsYW5nIHx8IGVsZW1MYW5nLmluZGV4T2YoIGxhbmcgKyAiLSIgKSA9PT0gMDsKLSAgICB9
Ci0gICAgfSB3aGlsZSAoIChlbGVtID0gZWxlbS5wYXJlbnROb2RlKSAmJiBlbGVtLm5vZGVUeXBl
ID09PSAxICk7Ci0gICAgcmV0dXJuIGZhbHNlOwotICAgIH07Ci0gICAgfSksCi0KLSAgICAvLyBN
aXNjZWxsYW5lb3VzCi0gICAgInRhcmdldCI6IGZ1bmN0aW9uKCBlbGVtICkgewotICAgIHZhciBo
YXNoID0gd2luZG93LmxvY2F0aW9uICYmIHdpbmRvdy5sb2NhdGlvbi5oYXNoOwotICAgIHJldHVy
biBoYXNoICYmIGhhc2guc2xpY2UoIDEgKSA9PT0gZWxlbS5pZDsKLSAgICB9LAotCi0gICAgInJv
b3QiOiBmdW5jdGlvbiggZWxlbSApIHsKLSAgICByZXR1cm4gZWxlbSA9PT0gZG9jRWxlbTsKLSAg
ICB9LAotCi0gICAgImZvY3VzIjogZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgcmV0dXJuIGVsZW0g
PT09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgJiYgKCFkb2N1bWVudC5oYXNGb2N1cyB8fCBkb2N1
bWVudC5oYXNGb2N1cygpKSAmJiAhIShlbGVtLnR5cGUgfHwgZWxlbS5ocmVmIHx8IH5lbGVtLnRh
YkluZGV4KTsKLSAgICB9LAotCi0gICAgLy8gQm9vbGVhbiBwcm9wZXJ0aWVzCi0gICAgImVuYWJs
ZWQiOiBmdW5jdGlvbiggZWxlbSApIHsKLSAgICByZXR1cm4gZWxlbS5kaXNhYmxlZCA9PT0gZmFs
c2U7Ci0gICAgfSwKLQotICAgICJkaXNhYmxlZCI6IGZ1bmN0aW9uKCBlbGVtICkgewotICAgIHJl
dHVybiBlbGVtLmRpc2FibGVkID09PSB0cnVlOwotICAgIH0sCi0KLSAgICAiY2hlY2tlZCI6IGZ1
bmN0aW9uKCBlbGVtICkgewotICAgIC8vIEluIENTUzMsIDpjaGVja2VkIHNob3VsZCByZXR1cm4g
Ym90aCBjaGVja2VkIGFuZCBzZWxlY3RlZCBlbGVtZW50cwotICAgIC8vIGh0dHA6Ly93d3cudzMu
b3JnL1RSLzIwMTEvUkVDLWNzczMtc2VsZWN0b3JzLTIwMTEwOTI5LyNjaGVja2VkCi0gICAgdmFy
IG5vZGVOYW1lID0gZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOwotICAgIHJldHVybiAobm9k
ZU5hbWUgPT09ICJpbnB1dCIgJiYgISFlbGVtLmNoZWNrZWQpIHx8IChub2RlTmFtZSA9PT0gIm9w
dGlvbiIgJiYgISFlbGVtLnNlbGVjdGVkKTsKLSAgICB9LAotCi0gICAgInNlbGVjdGVkIjogZnVu
Y3Rpb24oIGVsZW0gKSB7Ci0gICAgLy8gQWNjZXNzaW5nIHRoaXMgcHJvcGVydHkgbWFrZXMgc2Vs
ZWN0ZWQtYnktZGVmYXVsdAotICAgIC8vIG9wdGlvbnMgaW4gU2FmYXJpIHdvcmsgcHJvcGVybHkK
LSAgICBpZiAoIGVsZW0ucGFyZW50Tm9kZSApIHsKLSAgICBlbGVtLnBhcmVudE5vZGUuc2VsZWN0
ZWRJbmRleDsKLSAgICB9Ci0KLSAgICByZXR1cm4gZWxlbS5zZWxlY3RlZCA9PT0gdHJ1ZTsKLSAg
ICB9LAotCi0gICAgLy8gQ29udGVudHMKLSAgICAiZW1wdHkiOiBmdW5jdGlvbiggZWxlbSApIHsK
LSAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9zZWxlY3RvcnMvI2VtcHR5LXBzZXVkbwotICAg
IC8vIDplbXB0eSBpcyBvbmx5IGFmZmVjdGVkIGJ5IGVsZW1lbnQgbm9kZXMgYW5kIGNvbnRlbnQg
bm9kZXMoaW5jbHVkaW5nIHRleHQoMyksIGNkYXRhKDQpKSwKLSAgICAvLyAgIG5vdCBjb21tZW50
LCBwcm9jZXNzaW5nIGluc3RydWN0aW9ucywgb3Igb3RoZXJzCi0gICAgLy8gVGhhbmtzIHRvIERp
ZWdvIFBlcmluaSBmb3IgdGhlIG5vZGVOYW1lIHNob3J0Y3V0Ci0gICAgLy8gICBHcmVhdGVyIHRo
YW4gIkAiIG1lYW5zIGFscGhhIGNoYXJhY3RlcnMgKHNwZWNpZmljYWxseSBub3Qgc3RhcnRpbmcg
d2l0aCAiIyIgb3IgIj8iKQotICAgIGZvciAoIGVsZW0gPSBlbGVtLmZpcnN0Q2hpbGQ7IGVsZW07
IGVsZW0gPSBlbGVtLm5leHRTaWJsaW5nICkgewotICAgIGlmICggZWxlbS5ub2RlTmFtZSA+ICJA
IiB8fCBlbGVtLm5vZGVUeXBlID09PSAzIHx8IGVsZW0ubm9kZVR5cGUgPT09IDQgKSB7Ci0gICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci0gICAgfSwKLQot
ICAgICJwYXJlbnQiOiBmdW5jdGlvbiggZWxlbSApIHsKLSAgICByZXR1cm4gIUV4cHIucHNldWRv
c1siZW1wdHkiXSggZWxlbSApOwotICAgIH0sCi0KLSAgICAvLyBFbGVtZW50L2lucHV0IHR5cGVz
Ci0gICAgImhlYWRlciI6IGZ1bmN0aW9uKCBlbGVtICkgewotICAgIHJldHVybiByaGVhZGVyLnRl
c3QoIGVsZW0ubm9kZU5hbWUgKTsKLSAgICB9LAotCi0gICAgImlucHV0IjogZnVuY3Rpb24oIGVs
ZW0gKSB7Ci0gICAgcmV0dXJuIHJpbnB1dHMudGVzdCggZWxlbS5ub2RlTmFtZSApOwotICAgIH0s
Ci0KLSAgICAiYnV0dG9uIjogZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgdmFyIG5hbWUgPSBlbGVt
Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7Ci0gICAgcmV0dXJuIG5hbWUgPT09ICJpbnB1dCIgJiYg
ZWxlbS50eXBlID09PSAiYnV0dG9uIiB8fCBuYW1lID09PSAiYnV0dG9uIjsKLSAgICB9LAotCi0g
ICAgInRleHQiOiBmdW5jdGlvbiggZWxlbSApIHsKLSAgICB2YXIgYXR0cjsKLSAgICAvLyBJRTYg
YW5kIDcgd2lsbCBtYXAgZWxlbS50eXBlIHRvICd0ZXh0JyBmb3IgbmV3IEhUTUw1IHR5cGVzIChz
ZWFyY2gsIGV0YykKLSAgICAvLyB1c2UgZ2V0QXR0cmlidXRlIGluc3RlYWQgdG8gdGVzdCB0aGlz
IGNhc2UKLSAgICByZXR1cm4gZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAiaW5wdXQi
ICYmCi0gICAgZWxlbS50eXBlID09PSAidGV4dCIgJiYKLSAgICAoIChhdHRyID0gZWxlbS5nZXRB
dHRyaWJ1dGUoInR5cGUiKSkgPT0gbnVsbCB8fCBhdHRyLnRvTG93ZXJDYXNlKCkgPT09IGVsZW0u
dHlwZSApOwotICAgIH0sCi0KLSAgICAvLyBQb3NpdGlvbi1pbi1jb2xsZWN0aW9uCi0gICAgImZp
cnN0IjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbigpIHsKLSAgICByZXR1cm4gWyAw
IF07Ci0gICAgfSksCi0KLSAgICAibGFzdCI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rp
b24oIG1hdGNoSW5kZXhlcywgbGVuZ3RoICkgewotICAgIHJldHVybiBbIGxlbmd0aCAtIDEgXTsK
LSAgICB9KSwKLQotICAgICJlcSI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24oIG1h
dGNoSW5kZXhlcywgbGVuZ3RoLCBhcmd1bWVudCApIHsKLSAgICByZXR1cm4gWyBhcmd1bWVudCA8
IDAgPyBhcmd1bWVudCArIGxlbmd0aCA6IGFyZ3VtZW50IF07Ci0gICAgfSksCi0KLSAgICAiZXZl
biI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24oIG1hdGNoSW5kZXhlcywgbGVuZ3Ro
ICkgewotICAgIHZhciBpID0gMDsKLSAgICBmb3IgKCA7IGkgPCBsZW5ndGg7IGkgKz0gMiApIHsK
LSAgICBtYXRjaEluZGV4ZXMucHVzaCggaSApOwotICAgIH0KLSAgICByZXR1cm4gbWF0Y2hJbmRl
eGVzOwotICAgIH0pLAotCi0gICAgIm9kZCI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rp
b24oIG1hdGNoSW5kZXhlcywgbGVuZ3RoICkgewotICAgIHZhciBpID0gMTsKLSAgICBmb3IgKCA7
IGkgPCBsZW5ndGg7IGkgKz0gMiApIHsKLSAgICBtYXRjaEluZGV4ZXMucHVzaCggaSApOwotICAg
IH0KLSAgICByZXR1cm4gbWF0Y2hJbmRleGVzOwotICAgIH0pLAotCi0gICAgImx0IjogY3JlYXRl
UG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbiggbWF0Y2hJbmRleGVzLCBsZW5ndGgsIGFyZ3VtZW50
ICkgewotICAgIHZhciBpID0gYXJndW1lbnQgPCAwID8gYXJndW1lbnQgKyBsZW5ndGggOiBhcmd1
bWVudDsKLSAgICBmb3IgKCA7IC0taSA+PSAwOyApIHsKLSAgICBtYXRjaEluZGV4ZXMucHVzaCgg
aSApOwotICAgIH0KLSAgICByZXR1cm4gbWF0Y2hJbmRleGVzOwotICAgIH0pLAotCi0gICAgImd0
IjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbiggbWF0Y2hJbmRleGVzLCBsZW5ndGgs
IGFyZ3VtZW50ICkgewotICAgIHZhciBpID0gYXJndW1lbnQgPCAwID8gYXJndW1lbnQgKyBsZW5n
dGggOiBhcmd1bWVudDsKLSAgICBmb3IgKCA7ICsraSA8IGxlbmd0aDsgKSB7Ci0gICAgbWF0Y2hJ
bmRleGVzLnB1c2goIGkgKTsKLSAgICB9Ci0gICAgcmV0dXJuIG1hdGNoSW5kZXhlczsKLSAgICB9
KQotICAgIH0KLX07Ci0KLS8vIEFkZCBidXR0b24vaW5wdXQgdHlwZSBwc2V1ZG9zCi1mb3IgKCBp
IGluIHsgcmFkaW86IHRydWUsIGNoZWNrYm94OiB0cnVlLCBmaWxlOiB0cnVlLCBwYXNzd29yZDog
dHJ1ZSwgaW1hZ2U6IHRydWUgfSApIHsKLSAgICBFeHByLnBzZXVkb3NbIGkgXSA9IGNyZWF0ZUlu
cHV0UHNldWRvKCBpICk7Ci19Ci1mb3IgKCBpIGluIHsgc3VibWl0OiB0cnVlLCByZXNldDogdHJ1
ZSB9ICkgewotICAgIEV4cHIucHNldWRvc1sgaSBdID0gY3JlYXRlQnV0dG9uUHNldWRvKCBpICk7
Ci19Ci0KLWZ1bmN0aW9uIHRva2VuaXplKCBzZWxlY3RvciwgcGFyc2VPbmx5ICkgewotICAgIHZh
ciBtYXRjaGVkLCBtYXRjaCwgdG9rZW5zLCB0eXBlLAotICAgIHNvRmFyLCBncm91cHMsIHByZUZp
bHRlcnMsCi0gICAgY2FjaGVkID0gdG9rZW5DYWNoZVsgc2VsZWN0b3IgKyAiICIgXTsKLQotICAg
IGlmICggY2FjaGVkICkgewotICAgIHJldHVybiBwYXJzZU9ubHkgPyAwIDogY2FjaGVkLnNsaWNl
KCAwICk7Ci0gICAgfQotCi0gICAgc29GYXIgPSBzZWxlY3RvcjsKLSAgICBncm91cHMgPSBbXTsK
LSAgICBwcmVGaWx0ZXJzID0gRXhwci5wcmVGaWx0ZXI7Ci0KLSAgICB3aGlsZSAoIHNvRmFyICkg
ewotCi0gICAgLy8gQ29tbWEgYW5kIGZpcnN0IHJ1bgotICAgIGlmICggIW1hdGNoZWQgfHwgKG1h
dGNoID0gcmNvbW1hLmV4ZWMoIHNvRmFyICkpICkgewotICAgIGlmICggbWF0Y2ggKSB7Ci0gICAg
Ly8gRG9uJ3QgY29uc3VtZSB0cmFpbGluZyBjb21tYXMgYXMgdmFsaWQKLSAgICBzb0ZhciA9IHNv
RmFyLnNsaWNlKCBtYXRjaFswXS5sZW5ndGggKSB8fCBzb0ZhcjsKLSAgICB9Ci0gICAgZ3JvdXBz
LnB1c2goIHRva2VucyA9IFtdICk7Ci0gICAgfQotCi0gICAgbWF0Y2hlZCA9IGZhbHNlOwotCi0g
ICAgLy8gQ29tYmluYXRvcnMKLSAgICBpZiAoIChtYXRjaCA9IHJjb21iaW5hdG9ycy5leGVjKCBz
b0ZhciApKSApIHsKLSAgICBtYXRjaGVkID0gbWF0Y2guc2hpZnQoKTsKLSAgICB0b2tlbnMucHVz
aCggewotICAgIHZhbHVlOiBtYXRjaGVkLAotICAgIC8vIENhc3QgZGVzY2VuZGFudCBjb21iaW5h
dG9ycyB0byBzcGFjZQotICAgIHR5cGU6IG1hdGNoWzBdLnJlcGxhY2UoIHJ0cmltLCAiICIgKQot
ICAgIH0gKTsKLSAgICBzb0ZhciA9IHNvRmFyLnNsaWNlKCBtYXRjaGVkLmxlbmd0aCApOwotICAg
IH0KLQotICAgIC8vIEZpbHRlcnMKLSAgICBmb3IgKCB0eXBlIGluIEV4cHIuZmlsdGVyICkgewot
ICAgIGlmICggKG1hdGNoID0gbWF0Y2hFeHByWyB0eXBlIF0uZXhlYyggc29GYXIgKSkgJiYgKCFw
cmVGaWx0ZXJzWyB0eXBlIF0gfHwKLSAgICAobWF0Y2ggPSBwcmVGaWx0ZXJzWyB0eXBlIF0oIG1h
dGNoICkpKSApIHsKLSAgICBtYXRjaGVkID0gbWF0Y2guc2hpZnQoKTsKLSAgICB0b2tlbnMucHVz
aCggewotICAgIHZhbHVlOiBtYXRjaGVkLAotICAgIHR5cGU6IHR5cGUsCi0gICAgbWF0Y2hlczog
bWF0Y2gKLSAgICB9ICk7Ci0gICAgc29GYXIgPSBzb0Zhci5zbGljZSggbWF0Y2hlZC5sZW5ndGgg
KTsKLSAgICB9Ci0gICAgfQotCi0gICAgaWYgKCAhbWF0Y2hlZCApIHsKLSAgICBicmVhazsKLSAg
ICB9Ci0gICAgfQotCi0gICAgLy8gUmV0dXJuIHRoZSBsZW5ndGggb2YgdGhlIGludmFsaWQgZXhj
ZXNzCi0gICAgLy8gaWYgd2UncmUganVzdCBwYXJzaW5nCi0gICAgLy8gT3RoZXJ3aXNlLCB0aHJv
dyBhbiBlcnJvciBvciByZXR1cm4gdG9rZW5zCi0gICAgcmV0dXJuIHBhcnNlT25seSA/Ci0gICAg
c29GYXIubGVuZ3RoIDoKLSAgICBzb0ZhciA/Ci0gICAgU2l6emxlLmVycm9yKCBzZWxlY3RvciAp
IDoKLSAgICAvLyBDYWNoZSB0aGUgdG9rZW5zCi0gICAgdG9rZW5DYWNoZSggc2VsZWN0b3IsIGdy
b3VwcyApLnNsaWNlKCAwICk7Ci19Ci0KLWZ1bmN0aW9uIHRvU2VsZWN0b3IoIHRva2VucyApIHsK
LSAgICB2YXIgaSA9IDAsCi0gICAgbGVuID0gdG9rZW5zLmxlbmd0aCwKLSAgICBzZWxlY3RvciA9
ICIiOwotICAgIGZvciAoIDsgaSA8IGxlbjsgaSsrICkgewotICAgIHNlbGVjdG9yICs9IHRva2Vu
c1tpXS52YWx1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIHNlbGVjdG9yOwotfQotCi1mdW5jdGlvbiBh
ZGRDb21iaW5hdG9yKCBtYXRjaGVyLCBjb21iaW5hdG9yLCBiYXNlICkgewotICAgIHZhciBkaXIg
PSBjb21iaW5hdG9yLmRpciwKLSAgICBjaGVja05vbkVsZW1lbnRzID0gYmFzZSAmJiBkaXIgPT09
ICJwYXJlbnROb2RlIiwKLSAgICBkb25lTmFtZSA9IGRvbmUrKzsKLQotICAgIHJldHVybiBjb21i
aW5hdG9yLmZpcnN0ID8KLSAgICAvLyBDaGVjayBhZ2FpbnN0IGNsb3Nlc3QgYW5jZXN0b3IvcHJl
Y2VkaW5nIGVsZW1lbnQKLSAgICBmdW5jdGlvbiggZWxlbSwgY29udGV4dCwgeG1sICkgewotICAg
IHdoaWxlICggKGVsZW0gPSBlbGVtWyBkaXIgXSkgKSB7Ci0gICAgaWYgKCBlbGVtLm5vZGVUeXBl
ID09PSAxIHx8IGNoZWNrTm9uRWxlbWVudHMgKSB7Ci0gICAgcmV0dXJuIG1hdGNoZXIoIGVsZW0s
IGNvbnRleHQsIHhtbCApOwotICAgIH0KLSAgICB9Ci0gICAgfSA6Ci0KLSAgICAvLyBDaGVjayBh
Z2FpbnN0IGFsbCBhbmNlc3Rvci9wcmVjZWRpbmcgZWxlbWVudHMKLSAgICBmdW5jdGlvbiggZWxl
bSwgY29udGV4dCwgeG1sICkgewotICAgIHZhciBkYXRhLCBjYWNoZSwgb3V0ZXJDYWNoZSwKLSAg
ICBkaXJrZXkgPSBkaXJydW5zICsgIiAiICsgZG9uZU5hbWU7Ci0KLSAgICAvLyBXZSBjYW4ndCBz
ZXQgYXJiaXRyYXJ5IGRhdGEgb24gWE1MIG5vZGVzLCBzbyB0aGV5IGRvbid0IGJlbmVmaXQgZnJv
bSBkaXIgY2FjaGluZwotICAgIGlmICggeG1sICkgewotICAgIHdoaWxlICggKGVsZW0gPSBlbGVt
WyBkaXIgXSkgKSB7Ci0gICAgaWYgKCBlbGVtLm5vZGVUeXBlID09PSAxIHx8IGNoZWNrTm9uRWxl
bWVudHMgKSB7Ci0gICAgaWYgKCBtYXRjaGVyKCBlbGVtLCBjb250ZXh0LCB4bWwgKSApIHsKLSAg
ICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgfQotICAgIH0KLSAgICB9IGVsc2UgewotICAgIHdo
aWxlICggKGVsZW0gPSBlbGVtWyBkaXIgXSkgKSB7Ci0gICAgaWYgKCBlbGVtLm5vZGVUeXBlID09
PSAxIHx8IGNoZWNrTm9uRWxlbWVudHMgKSB7Ci0gICAgb3V0ZXJDYWNoZSA9IGVsZW1bIGV4cGFu
ZG8gXSB8fCAoZWxlbVsgZXhwYW5kbyBdID0ge30pOwotICAgIGlmICggKGNhY2hlID0gb3V0ZXJD
YWNoZVsgZGlyIF0pICYmIGNhY2hlWzBdID09PSBkaXJrZXkgKSB7Ci0gICAgaWYgKCAoZGF0YSA9
IGNhY2hlWzFdKSA9PT0gdHJ1ZSB8fCBkYXRhID09PSBjYWNoZWRydW5zICkgewotICAgIHJldHVy
biBkYXRhID09PSB0cnVlOwotICAgIH0KLSAgICB9IGVsc2UgewotICAgIGNhY2hlID0gb3V0ZXJD
YWNoZVsgZGlyIF0gPSBbIGRpcmtleSBdOwotICAgIGNhY2hlWzFdID0gbWF0Y2hlciggZWxlbSwg
Y29udGV4dCwgeG1sICkgfHwgY2FjaGVkcnVuczsKLSAgICBpZiAoIGNhY2hlWzFdID09PSB0cnVl
ICkgewotICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICB9Ci0gICAgfQotICAgIH0KLSAgICB9
Ci0gICAgfTsKLX0KLQotZnVuY3Rpb24gZWxlbWVudE1hdGNoZXIoIG1hdGNoZXJzICkgewotICAg
IHJldHVybiBtYXRjaGVycy5sZW5ndGggPiAxID8KLSAgICBmdW5jdGlvbiggZWxlbSwgY29udGV4
dCwgeG1sICkgewotICAgIHZhciBpID0gbWF0Y2hlcnMubGVuZ3RoOwotICAgIHdoaWxlICggaS0t
ICkgewotICAgIGlmICggIW1hdGNoZXJzW2ldKCBlbGVtLCBjb250ZXh0LCB4bWwgKSApIHsKLSAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLSAgICB9IDoK
LSAgICBtYXRjaGVyc1swXTsKLX0KLQotZnVuY3Rpb24gY29uZGVuc2UoIHVubWF0Y2hlZCwgbWFw
LCBmaWx0ZXIsIGNvbnRleHQsIHhtbCApIHsKLSAgICB2YXIgZWxlbSwKLSAgICBuZXdVbm1hdGNo
ZWQgPSBbXSwKLSAgICBpID0gMCwKLSAgICBsZW4gPSB1bm1hdGNoZWQubGVuZ3RoLAotICAgIG1h
cHBlZCA9IG1hcCAhPSBudWxsOwotCi0gICAgZm9yICggOyBpIDwgbGVuOyBpKysgKSB7Ci0gICAg
aWYgKCAoZWxlbSA9IHVubWF0Y2hlZFtpXSkgKSB7Ci0gICAgaWYgKCAhZmlsdGVyIHx8IGZpbHRl
ciggZWxlbSwgY29udGV4dCwgeG1sICkgKSB7Ci0gICAgbmV3VW5tYXRjaGVkLnB1c2goIGVsZW0g
KTsKLSAgICBpZiAoIG1hcHBlZCApIHsKLSAgICBtYXAucHVzaCggaSApOwotICAgIH0KLSAgICB9
Ci0gICAgfQotICAgIH0KLQotICAgIHJldHVybiBuZXdVbm1hdGNoZWQ7Ci19Ci0KLWZ1bmN0aW9u
IHNldE1hdGNoZXIoIHByZUZpbHRlciwgc2VsZWN0b3IsIG1hdGNoZXIsIHBvc3RGaWx0ZXIsIHBv
c3RGaW5kZXIsIHBvc3RTZWxlY3RvciApIHsKLSAgICBpZiAoIHBvc3RGaWx0ZXIgJiYgIXBvc3RG
aWx0ZXJbIGV4cGFuZG8gXSApIHsKLSAgICBwb3N0RmlsdGVyID0gc2V0TWF0Y2hlciggcG9zdEZp
bHRlciApOwotICAgIH0KLSAgICBpZiAoIHBvc3RGaW5kZXIgJiYgIXBvc3RGaW5kZXJbIGV4cGFu
ZG8gXSApIHsKLSAgICBwb3N0RmluZGVyID0gc2V0TWF0Y2hlciggcG9zdEZpbmRlciwgcG9zdFNl
bGVjdG9yICk7Ci0gICAgfQotICAgIHJldHVybiBtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIHNlZWQs
IHJlc3VsdHMsIGNvbnRleHQsIHhtbCApIHsKLSAgICB2YXIgdGVtcCwgaSwgZWxlbSwKLSAgICBw
cmVNYXAgPSBbXSwKLSAgICBwb3N0TWFwID0gW10sCi0gICAgcHJlZXhpc3RpbmcgPSByZXN1bHRz
Lmxlbmd0aCwKLQotICAgIC8vIEdldCBpbml0aWFsIGVsZW1lbnRzIGZyb20gc2VlZCBvciBjb250
ZXh0Ci0gICAgZWxlbXMgPSBzZWVkIHx8IG11bHRpcGxlQ29udGV4dHMoIHNlbGVjdG9yIHx8ICIq
IiwgY29udGV4dC5ub2RlVHlwZSA/IFsgY29udGV4dCBdIDogY29udGV4dCwgW10gKSwKLQotICAg
IC8vIFByZWZpbHRlciB0byBnZXQgbWF0Y2hlciBpbnB1dCwgcHJlc2VydmluZyBhIG1hcCBmb3Ig
c2VlZC1yZXN1bHRzIHN5bmNocm9uaXphdGlvbgotICAgIG1hdGNoZXJJbiA9IHByZUZpbHRlciAm
JiAoIHNlZWQgfHwgIXNlbGVjdG9yICkgPwotICAgIGNvbmRlbnNlKCBlbGVtcywgcHJlTWFwLCBw
cmVGaWx0ZXIsIGNvbnRleHQsIHhtbCApIDoKLSAgICBlbGVtcywKLQotICAgIG1hdGNoZXJPdXQg
PSBtYXRjaGVyID8KLSAgICAvLyBJZiB3ZSBoYXZlIGEgcG9zdEZpbmRlciwgb3IgZmlsdGVyZWQg
c2VlZCwgb3Igbm9uLXNlZWQgcG9zdEZpbHRlciBvciBwcmVleGlzdGluZyByZXN1bHRzLAotICAg
IHBvc3RGaW5kZXIgfHwgKCBzZWVkID8gcHJlRmlsdGVyIDogcHJlZXhpc3RpbmcgfHwgcG9zdEZp
bHRlciApID8KLQotICAgIC8vIC4uLmludGVybWVkaWF0ZSBwcm9jZXNzaW5nIGlzIG5lY2Vzc2Fy
eQotICAgIFtdIDoKLQotICAgIC8vIC4uLm90aGVyd2lzZSB1c2UgcmVzdWx0cyBkaXJlY3RseQot
ICAgIHJlc3VsdHMgOgotICAgIG1hdGNoZXJJbjsKLQotICAgIC8vIEZpbmQgcHJpbWFyeSBtYXRj
aGVzCi0gICAgaWYgKCBtYXRjaGVyICkgewotICAgIG1hdGNoZXIoIG1hdGNoZXJJbiwgbWF0Y2hl
ck91dCwgY29udGV4dCwgeG1sICk7Ci0gICAgfQotCi0gICAgLy8gQXBwbHkgcG9zdEZpbHRlcgot
ICAgIGlmICggcG9zdEZpbHRlciApIHsKLSAgICB0ZW1wID0gY29uZGVuc2UoIG1hdGNoZXJPdXQs
IHBvc3RNYXAgKTsKLSAgICBwb3N0RmlsdGVyKCB0ZW1wLCBbXSwgY29udGV4dCwgeG1sICk7Ci0K
LSAgICAvLyBVbi1tYXRjaCBmYWlsaW5nIGVsZW1lbnRzIGJ5IG1vdmluZyB0aGVtIGJhY2sgdG8g
bWF0Y2hlckluCi0gICAgaSA9IHRlbXAubGVuZ3RoOwotICAgIHdoaWxlICggaS0tICkgewotICAg
IGlmICggKGVsZW0gPSB0ZW1wW2ldKSApIHsKLSAgICBtYXRjaGVyT3V0WyBwb3N0TWFwW2ldIF0g
PSAhKG1hdGNoZXJJblsgcG9zdE1hcFtpXSBdID0gZWxlbSk7Ci0gICAgfQotICAgIH0KLSAgICB9
Ci0KLSAgICBpZiAoIHNlZWQgKSB7Ci0gICAgaWYgKCBwb3N0RmluZGVyIHx8IHByZUZpbHRlciAp
IHsKLSAgICBpZiAoIHBvc3RGaW5kZXIgKSB7Ci0gICAgLy8gR2V0IHRoZSBmaW5hbCBtYXRjaGVy
T3V0IGJ5IGNvbmRlbnNpbmcgdGhpcyBpbnRlcm1lZGlhdGUgaW50byBwb3N0RmluZGVyIGNvbnRl
eHRzCi0gICAgdGVtcCA9IFtdOwotICAgIGkgPSBtYXRjaGVyT3V0Lmxlbmd0aDsKLSAgICB3aGls
ZSAoIGktLSApIHsKLSAgICBpZiAoIChlbGVtID0gbWF0Y2hlck91dFtpXSkgKSB7Ci0gICAgLy8g
UmVzdG9yZSBtYXRjaGVySW4gc2luY2UgZWxlbSBpcyBub3QgeWV0IGEgZmluYWwgbWF0Y2gKLSAg
ICB0ZW1wLnB1c2goIChtYXRjaGVySW5baV0gPSBlbGVtKSApOwotICAgIH0KLSAgICB9Ci0gICAg
cG9zdEZpbmRlciggbnVsbCwgKG1hdGNoZXJPdXQgPSBbXSksIHRlbXAsIHhtbCApOwotICAgIH0K
LQotICAgIC8vIE1vdmUgbWF0Y2hlZCBlbGVtZW50cyBmcm9tIHNlZWQgdG8gcmVzdWx0cyB0byBr
ZWVwIHRoZW0gc3luY2hyb25pemVkCi0gICAgaSA9IG1hdGNoZXJPdXQubGVuZ3RoOwotICAgIHdo
aWxlICggaS0tICkgewotICAgIGlmICggKGVsZW0gPSBtYXRjaGVyT3V0W2ldKSAmJgotICAgICh0
ZW1wID0gcG9zdEZpbmRlciA/IGluZGV4T2YuY2FsbCggc2VlZCwgZWxlbSApIDogcHJlTWFwW2ld
KSA+IC0xICkgewotCi0gICAgc2VlZFt0ZW1wXSA9ICEocmVzdWx0c1t0ZW1wXSA9IGVsZW0pOwot
ICAgIH0KLSAgICB9Ci0gICAgfQotCi0gICAgLy8gQWRkIGVsZW1lbnRzIHRvIHJlc3VsdHMsIHRo
cm91Z2ggcG9zdEZpbmRlciBpZiBkZWZpbmVkCi0gICAgfSBlbHNlIHsKLSAgICBtYXRjaGVyT3V0
ID0gY29uZGVuc2UoCi0gICAgbWF0Y2hlck91dCA9PT0gcmVzdWx0cyA/Ci0gICAgbWF0Y2hlck91
dC5zcGxpY2UoIHByZWV4aXN0aW5nLCBtYXRjaGVyT3V0Lmxlbmd0aCApIDoKLSAgICBtYXRjaGVy
T3V0Ci0gICAgKTsKLSAgICBpZiAoIHBvc3RGaW5kZXIgKSB7Ci0gICAgcG9zdEZpbmRlciggbnVs
bCwgcmVzdWx0cywgbWF0Y2hlck91dCwgeG1sICk7Ci0gICAgfSBlbHNlIHsKLSAgICBwdXNoLmFw
cGx5KCByZXN1bHRzLCBtYXRjaGVyT3V0ICk7Ci0gICAgfQotICAgIH0KLSAgICB9KTsKLX0KLQot
ZnVuY3Rpb24gbWF0Y2hlckZyb21Ub2tlbnMoIHRva2VucyApIHsKLSAgICB2YXIgY2hlY2tDb250
ZXh0LCBtYXRjaGVyLCBqLAotICAgIGxlbiA9IHRva2Vucy5sZW5ndGgsCi0gICAgbGVhZGluZ1Jl
bGF0aXZlID0gRXhwci5yZWxhdGl2ZVsgdG9rZW5zWzBdLnR5cGUgXSwKLSAgICBpbXBsaWNpdFJl
bGF0aXZlID0gbGVhZGluZ1JlbGF0aXZlIHx8IEV4cHIucmVsYXRpdmVbIiAiXSwKLSAgICBpID0g
bGVhZGluZ1JlbGF0aXZlID8gMSA6IDAsCi0KLSAgICAvLyBUaGUgZm91bmRhdGlvbmFsIG1hdGNo
ZXIgZW5zdXJlcyB0aGF0IGVsZW1lbnRzIGFyZSByZWFjaGFibGUgZnJvbSB0b3AtbGV2ZWwgY29u
dGV4dChzKQotICAgIG1hdGNoQ29udGV4dCA9IGFkZENvbWJpbmF0b3IoIGZ1bmN0aW9uKCBlbGVt
ICkgewotICAgIHJldHVybiBlbGVtID09PSBjaGVja0NvbnRleHQ7Ci0gICAgfSwgaW1wbGljaXRS
ZWxhdGl2ZSwgdHJ1ZSApLAotICAgIG1hdGNoQW55Q29udGV4dCA9IGFkZENvbWJpbmF0b3IoIGZ1
bmN0aW9uKCBlbGVtICkgewotICAgIHJldHVybiBpbmRleE9mLmNhbGwoIGNoZWNrQ29udGV4dCwg
ZWxlbSApID4gLTE7Ci0gICAgfSwgaW1wbGljaXRSZWxhdGl2ZSwgdHJ1ZSApLAotICAgIG1hdGNo
ZXJzID0gWyBmdW5jdGlvbiggZWxlbSwgY29udGV4dCwgeG1sICkgewotICAgIHJldHVybiAoICFs
ZWFkaW5nUmVsYXRpdmUgJiYgKCB4bWwgfHwgY29udGV4dCAhPT0gb3V0ZXJtb3N0Q29udGV4dCAp
ICkgfHwgKAotICAgIChjaGVja0NvbnRleHQgPSBjb250ZXh0KS5ub2RlVHlwZSA/Ci0gICAgbWF0
Y2hDb250ZXh0KCBlbGVtLCBjb250ZXh0LCB4bWwgKSA6Ci0gICAgbWF0Y2hBbnlDb250ZXh0KCBl
bGVtLCBjb250ZXh0LCB4bWwgKSApOwotICAgIH0gXTsKLQotICAgIGZvciAoIDsgaSA8IGxlbjsg
aSsrICkgewotICAgIGlmICggKG1hdGNoZXIgPSBFeHByLnJlbGF0aXZlWyB0b2tlbnNbaV0udHlw
ZSBdKSApIHsKLSAgICBtYXRjaGVycyA9IFsgYWRkQ29tYmluYXRvcihlbGVtZW50TWF0Y2hlcigg
bWF0Y2hlcnMgKSwgbWF0Y2hlcikgXTsKLSAgICB9IGVsc2UgewotICAgIG1hdGNoZXIgPSBFeHBy
LmZpbHRlclsgdG9rZW5zW2ldLnR5cGUgXS5hcHBseSggbnVsbCwgdG9rZW5zW2ldLm1hdGNoZXMg
KTsKLQotICAgIC8vIFJldHVybiBzcGVjaWFsIHVwb24gc2VlaW5nIGEgcG9zaXRpb25hbCBtYXRj
aGVyCi0gICAgaWYgKCBtYXRjaGVyWyBleHBhbmRvIF0gKSB7Ci0gICAgLy8gRmluZCB0aGUgbmV4
dCByZWxhdGl2ZSBvcGVyYXRvciAoaWYgYW55KSBmb3IgcHJvcGVyIGhhbmRsaW5nCi0gICAgaiA9
ICsraTsKLSAgICBmb3IgKCA7IGogPCBsZW47IGorKyApIHsKLSAgICBpZiAoIEV4cHIucmVsYXRp
dmVbIHRva2Vuc1tqXS50eXBlIF0gKSB7Ci0gICAgYnJlYWs7Ci0gICAgfQotICAgIH0KLSAgICBy
ZXR1cm4gc2V0TWF0Y2hlcigKLSAgICBpID4gMSAmJiBlbGVtZW50TWF0Y2hlciggbWF0Y2hlcnMg
KSwKLSAgICBpID4gMSAmJiB0b1NlbGVjdG9yKCB0b2tlbnMuc2xpY2UoIDAsIGkgLSAxICkgKS5y
ZXBsYWNlKCBydHJpbSwgIiQxIiApLAotICAgIG1hdGNoZXIsCi0gICAgaSA8IGogJiYgbWF0Y2hl
ckZyb21Ub2tlbnMoIHRva2Vucy5zbGljZSggaSwgaiApICksCi0gICAgaiA8IGxlbiAmJiBtYXRj
aGVyRnJvbVRva2VucyggKHRva2VucyA9IHRva2Vucy5zbGljZSggaiApKSApLAotICAgIGogPCBs
ZW4gJiYgdG9TZWxlY3RvciggdG9rZW5zICkKLSAgICApOwotICAgIH0KLSAgICBtYXRjaGVycy5w
dXNoKCBtYXRjaGVyICk7Ci0gICAgfQotICAgIH0KLQotICAgIHJldHVybiBlbGVtZW50TWF0Y2hl
ciggbWF0Y2hlcnMgKTsKLX0KLQotZnVuY3Rpb24gbWF0Y2hlckZyb21Hcm91cE1hdGNoZXJzKCBl
bGVtZW50TWF0Y2hlcnMsIHNldE1hdGNoZXJzICkgewotICAgIC8vIEEgY291bnRlciB0byBzcGVj
aWZ5IHdoaWNoIGVsZW1lbnQgaXMgY3VycmVudGx5IGJlaW5nIG1hdGNoZWQKLSAgICB2YXIgbWF0
Y2hlckNhY2hlZFJ1bnMgPSAwLAotICAgIGJ5U2V0ID0gc2V0TWF0Y2hlcnMubGVuZ3RoID4gMCwK
LSAgICBieUVsZW1lbnQgPSBlbGVtZW50TWF0Y2hlcnMubGVuZ3RoID4gMCwKLSAgICBzdXBlck1h
dGNoZXIgPSBmdW5jdGlvbiggc2VlZCwgY29udGV4dCwgeG1sLCByZXN1bHRzLCBleHBhbmRDb250
ZXh0ICkgewotICAgIHZhciBlbGVtLCBqLCBtYXRjaGVyLAotICAgIHNldE1hdGNoZWQgPSBbXSwK
LSAgICBtYXRjaGVkQ291bnQgPSAwLAotICAgIGkgPSAiMCIsCi0gICAgdW5tYXRjaGVkID0gc2Vl
ZCAmJiBbXSwKLSAgICBvdXRlcm1vc3QgPSBleHBhbmRDb250ZXh0ICE9IG51bGwsCi0gICAgY29u
dGV4dEJhY2t1cCA9IG91dGVybW9zdENvbnRleHQsCi0gICAgLy8gV2UgbXVzdCBhbHdheXMgaGF2
ZSBlaXRoZXIgc2VlZCBlbGVtZW50cyBvciBjb250ZXh0Ci0gICAgZWxlbXMgPSBzZWVkIHx8IGJ5
RWxlbWVudCAmJiBFeHByLmZpbmRbIlRBRyJdKCAiKiIsIGV4cGFuZENvbnRleHQgJiYgY29udGV4
dC5wYXJlbnROb2RlIHx8IGNvbnRleHQgKSwKLSAgICAvLyBVc2UgaW50ZWdlciBkaXJydW5zIGlm
ZiB0aGlzIGlzIHRoZSBvdXRlcm1vc3QgbWF0Y2hlcgotICAgIGRpcnJ1bnNVbmlxdWUgPSAoZGly
cnVucyArPSBjb250ZXh0QmFja3VwID09IG51bGwgPyAxIDogTWF0aC5yYW5kb20oKSB8fCAwLjEp
OwotCi0gICAgaWYgKCBvdXRlcm1vc3QgKSB7Ci0gICAgb3V0ZXJtb3N0Q29udGV4dCA9IGNvbnRl
eHQgIT09IGRvY3VtZW50ICYmIGNvbnRleHQ7Ci0gICAgY2FjaGVkcnVucyA9IG1hdGNoZXJDYWNo
ZWRSdW5zOwotICAgIH0KLQotICAgIC8vIEFkZCBlbGVtZW50cyBwYXNzaW5nIGVsZW1lbnRNYXRj
aGVycyBkaXJlY3RseSB0byByZXN1bHRzCi0gICAgLy8gS2VlcCBgaWAgYSBzdHJpbmcgaWYgdGhl
cmUgYXJlIG5vIGVsZW1lbnRzIHNvIGBtYXRjaGVkQ291bnRgIHdpbGwgYmUgIjAwIiBiZWxvdwot
ICAgIGZvciAoIDsgKGVsZW0gPSBlbGVtc1tpXSkgIT0gbnVsbDsgaSsrICkgewotICAgIGlmICgg
YnlFbGVtZW50ICYmIGVsZW0gKSB7Ci0gICAgaiA9IDA7Ci0gICAgd2hpbGUgKCAobWF0Y2hlciA9
IGVsZW1lbnRNYXRjaGVyc1tqKytdKSApIHsKLSAgICBpZiAoIG1hdGNoZXIoIGVsZW0sIGNvbnRl
eHQsIHhtbCApICkgewotICAgIHJlc3VsdHMucHVzaCggZWxlbSApOwotICAgIGJyZWFrOwotICAg
IH0KLSAgICB9Ci0gICAgaWYgKCBvdXRlcm1vc3QgKSB7Ci0gICAgZGlycnVucyA9IGRpcnJ1bnNV
bmlxdWU7Ci0gICAgY2FjaGVkcnVucyA9ICsrbWF0Y2hlckNhY2hlZFJ1bnM7Ci0gICAgfQotICAg
IH0KLQotICAgIC8vIFRyYWNrIHVubWF0Y2hlZCBlbGVtZW50cyBmb3Igc2V0IGZpbHRlcnMKLSAg
ICBpZiAoIGJ5U2V0ICkgewotICAgIC8vIFRoZXkgd2lsbCBoYXZlIGdvbmUgdGhyb3VnaCBhbGwg
cG9zc2libGUgbWF0Y2hlcnMKLSAgICBpZiAoIChlbGVtID0gIW1hdGNoZXIgJiYgZWxlbSkgKSB7
Ci0gICAgbWF0Y2hlZENvdW50LS07Ci0gICAgfQotCi0gICAgLy8gTGVuZ3RoZW4gdGhlIGFycmF5
IGZvciBldmVyeSBlbGVtZW50LCBtYXRjaGVkIG9yIG5vdAotICAgIGlmICggc2VlZCApIHsKLSAg
ICB1bm1hdGNoZWQucHVzaCggZWxlbSApOwotICAgIH0KLSAgICB9Ci0gICAgfQotCi0gICAgLy8g
QXBwbHkgc2V0IGZpbHRlcnMgdG8gdW5tYXRjaGVkIGVsZW1lbnRzCi0gICAgbWF0Y2hlZENvdW50
ICs9IGk7Ci0gICAgaWYgKCBieVNldCAmJiBpICE9PSBtYXRjaGVkQ291bnQgKSB7Ci0gICAgaiA9
IDA7Ci0gICAgd2hpbGUgKCAobWF0Y2hlciA9IHNldE1hdGNoZXJzW2orK10pICkgewotICAgIG1h
dGNoZXIoIHVubWF0Y2hlZCwgc2V0TWF0Y2hlZCwgY29udGV4dCwgeG1sICk7Ci0gICAgfQotCi0g
ICAgaWYgKCBzZWVkICkgewotICAgIC8vIFJlaW50ZWdyYXRlIGVsZW1lbnQgbWF0Y2hlcyB0byBl
bGltaW5hdGUgdGhlIG5lZWQgZm9yIHNvcnRpbmcKLSAgICBpZiAoIG1hdGNoZWRDb3VudCA+IDAg
KSB7Ci0gICAgd2hpbGUgKCBpLS0gKSB7Ci0gICAgaWYgKCAhKHVubWF0Y2hlZFtpXSB8fCBzZXRN
YXRjaGVkW2ldKSApIHsKLSAgICBzZXRNYXRjaGVkW2ldID0gcG9wLmNhbGwoIHJlc3VsdHMgKTsK
LSAgICB9Ci0gICAgfQotICAgIH0KLQotICAgIC8vIERpc2NhcmQgaW5kZXggcGxhY2Vob2xkZXIg
dmFsdWVzIHRvIGdldCBvbmx5IGFjdHVhbCBtYXRjaGVzCi0gICAgc2V0TWF0Y2hlZCA9IGNvbmRl
bnNlKCBzZXRNYXRjaGVkICk7Ci0gICAgfQotCi0gICAgLy8gQWRkIG1hdGNoZXMgdG8gcmVzdWx0
cwotICAgIHB1c2guYXBwbHkoIHJlc3VsdHMsIHNldE1hdGNoZWQgKTsKLQotICAgIC8vIFNlZWRs
ZXNzIHNldCBtYXRjaGVzIHN1Y2NlZWRpbmcgbXVsdGlwbGUgc3VjY2Vzc2Z1bCBtYXRjaGVycyBz
dGlwdWxhdGUgc29ydGluZwotICAgIGlmICggb3V0ZXJtb3N0ICYmICFzZWVkICYmIHNldE1hdGNo
ZWQubGVuZ3RoID4gMCAmJgotICAgICggbWF0Y2hlZENvdW50ICsgc2V0TWF0Y2hlcnMubGVuZ3Ro
ICkgPiAxICkgewotCi0gICAgU2l6emxlLnVuaXF1ZVNvcnQoIHJlc3VsdHMgKTsKLSAgICB9Ci0g
ICAgfQotCi0gICAgLy8gT3ZlcnJpZGUgbWFuaXB1bGF0aW9uIG9mIGdsb2JhbHMgYnkgbmVzdGVk
IG1hdGNoZXJzCi0gICAgaWYgKCBvdXRlcm1vc3QgKSB7Ci0gICAgZGlycnVucyA9IGRpcnJ1bnNV
bmlxdWU7Ci0gICAgb3V0ZXJtb3N0Q29udGV4dCA9IGNvbnRleHRCYWNrdXA7Ci0gICAgfQotCi0g
ICAgcmV0dXJuIHVubWF0Y2hlZDsKLSAgICB9OwotCi0gICAgcmV0dXJuIGJ5U2V0ID8KLSAgICBt
YXJrRnVuY3Rpb24oIHN1cGVyTWF0Y2hlciApIDoKLSAgICBzdXBlck1hdGNoZXI7Ci19Ci0KLWNv
bXBpbGUgPSBTaXp6bGUuY29tcGlsZSA9IGZ1bmN0aW9uKCBzZWxlY3RvciwgZ3JvdXAgLyogSW50
ZXJuYWwgVXNlIE9ubHkgKi8gKSB7Ci0gICAgdmFyIGksCi0gICAgc2V0TWF0Y2hlcnMgPSBbXSwK
LSAgICBlbGVtZW50TWF0Y2hlcnMgPSBbXSwKLSAgICBjYWNoZWQgPSBjb21waWxlckNhY2hlWyBz
ZWxlY3RvciArICIgIiBdOwotCi0gICAgaWYgKCAhY2FjaGVkICkgewotICAgIC8vIEdlbmVyYXRl
IGEgZnVuY3Rpb24gb2YgcmVjdXJzaXZlIGZ1bmN0aW9ucyB0aGF0IGNhbiBiZSB1c2VkIHRvIGNo
ZWNrIGVhY2ggZWxlbWVudAotICAgIGlmICggIWdyb3VwICkgewotICAgIGdyb3VwID0gdG9rZW5p
emUoIHNlbGVjdG9yICk7Ci0gICAgfQotICAgIGkgPSBncm91cC5sZW5ndGg7Ci0gICAgd2hpbGUg
KCBpLS0gKSB7Ci0gICAgY2FjaGVkID0gbWF0Y2hlckZyb21Ub2tlbnMoIGdyb3VwW2ldICk7Ci0g
ICAgaWYgKCBjYWNoZWRbIGV4cGFuZG8gXSApIHsKLSAgICBzZXRNYXRjaGVycy5wdXNoKCBjYWNo
ZWQgKTsKLSAgICB9IGVsc2UgewotICAgIGVsZW1lbnRNYXRjaGVycy5wdXNoKCBjYWNoZWQgKTsK
LSAgICB9Ci0gICAgfQotCi0gICAgLy8gQ2FjaGUgdGhlIGNvbXBpbGVkIGZ1bmN0aW9uCi0gICAg
Y2FjaGVkID0gY29tcGlsZXJDYWNoZSggc2VsZWN0b3IsIG1hdGNoZXJGcm9tR3JvdXBNYXRjaGVy
cyggZWxlbWVudE1hdGNoZXJzLCBzZXRNYXRjaGVycyApICk7Ci0gICAgfQotICAgIHJldHVybiBj
YWNoZWQ7Ci19OwotCi1mdW5jdGlvbiBtdWx0aXBsZUNvbnRleHRzKCBzZWxlY3RvciwgY29udGV4
dHMsIHJlc3VsdHMgKSB7Ci0gICAgdmFyIGkgPSAwLAotICAgIGxlbiA9IGNvbnRleHRzLmxlbmd0
aDsKLSAgICBmb3IgKCA7IGkgPCBsZW47IGkrKyApIHsKLSAgICBTaXp6bGUoIHNlbGVjdG9yLCBj
b250ZXh0c1tpXSwgcmVzdWx0cyApOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0czsKLX0KLQot
ZnVuY3Rpb24gc2VsZWN0KCBzZWxlY3RvciwgY29udGV4dCwgcmVzdWx0cywgc2VlZCApIHsKLSAg
ICB2YXIgaSwgdG9rZW5zLCB0b2tlbiwgdHlwZSwgZmluZCwKLSAgICBtYXRjaCA9IHRva2VuaXpl
KCBzZWxlY3RvciApOwotCi0gICAgaWYgKCAhc2VlZCApIHsKLSAgICAvLyBUcnkgdG8gbWluaW1p
emUgb3BlcmF0aW9ucyBpZiB0aGVyZSBpcyBvbmx5IG9uZSBncm91cAotICAgIGlmICggbWF0Y2gu
bGVuZ3RoID09PSAxICkgewotCi0gICAgLy8gVGFrZSBhIHNob3J0Y3V0IGFuZCBzZXQgdGhlIGNv
bnRleHQgaWYgdGhlIHJvb3Qgc2VsZWN0b3IgaXMgYW4gSUQKLSAgICB0b2tlbnMgPSBtYXRjaFsw
XSA9IG1hdGNoWzBdLnNsaWNlKCAwICk7Ci0gICAgaWYgKCB0b2tlbnMubGVuZ3RoID4gMiAmJiAo
dG9rZW4gPSB0b2tlbnNbMF0pLnR5cGUgPT09ICJJRCIgJiYKLSAgICBjb250ZXh0Lm5vZGVUeXBl
ID09PSA5ICYmICFkb2N1bWVudElzWE1MICYmCi0gICAgRXhwci5yZWxhdGl2ZVsgdG9rZW5zWzFd
LnR5cGUgXSApIHsKLQotICAgIGNvbnRleHQgPSBFeHByLmZpbmRbIklEIl0oIHRva2VuLm1hdGNo
ZXNbMF0ucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKSwgY29udGV4dCApWzBdOwotICAg
IGlmICggIWNvbnRleHQgKSB7Ci0gICAgcmV0dXJuIHJlc3VsdHM7Ci0gICAgfQotCi0gICAgc2Vs
ZWN0b3IgPSBzZWxlY3Rvci5zbGljZSggdG9rZW5zLnNoaWZ0KCkudmFsdWUubGVuZ3RoICk7Ci0g
ICAgfQotCi0gICAgLy8gRmV0Y2ggYSBzZWVkIHNldCBmb3IgcmlnaHQtdG8tbGVmdCBtYXRjaGlu
ZwotICAgIGkgPSBtYXRjaEV4cHJbIm5lZWRzQ29udGV4dCJdLnRlc3QoIHNlbGVjdG9yICkgPyAw
IDogdG9rZW5zLmxlbmd0aDsKLSAgICB3aGlsZSAoIGktLSApIHsKLSAgICB0b2tlbiA9IHRva2Vu
c1tpXTsKLQotICAgIC8vIEFib3J0IGlmIHdlIGhpdCBhIGNvbWJpbmF0b3IKLSAgICBpZiAoIEV4
cHIucmVsYXRpdmVbICh0eXBlID0gdG9rZW4udHlwZSkgXSApIHsKLSAgICBicmVhazsKLSAgICB9
Ci0gICAgaWYgKCAoZmluZCA9IEV4cHIuZmluZFsgdHlwZSBdKSApIHsKLSAgICAvLyBTZWFyY2gs
IGV4cGFuZGluZyBjb250ZXh0IGZvciBsZWFkaW5nIHNpYmxpbmcgY29tYmluYXRvcnMKLSAgICBp
ZiAoIChzZWVkID0gZmluZCgKLSAgICB0b2tlbi5tYXRjaGVzWzBdLnJlcGxhY2UoIHJ1bmVzY2Fw
ZSwgZnVuZXNjYXBlICksCi0gICAgcnNpYmxpbmcudGVzdCggdG9rZW5zWzBdLnR5cGUgKSAmJiBj
b250ZXh0LnBhcmVudE5vZGUgfHwgY29udGV4dAotICAgICkpICkgewotCi0gICAgLy8gSWYgc2Vl
ZCBpcyBlbXB0eSBvciBubyB0b2tlbnMgcmVtYWluLCB3ZSBjYW4gcmV0dXJuIGVhcmx5Ci0gICAg
dG9rZW5zLnNwbGljZSggaSwgMSApOwotICAgIHNlbGVjdG9yID0gc2VlZC5sZW5ndGggJiYgdG9T
ZWxlY3RvciggdG9rZW5zICk7Ci0gICAgaWYgKCAhc2VsZWN0b3IgKSB7Ci0gICAgcHVzaC5hcHBs
eSggcmVzdWx0cywgc2xpY2UuY2FsbCggc2VlZCwgMCApICk7Ci0gICAgcmV0dXJuIHJlc3VsdHM7
Ci0gICAgfQotCi0gICAgYnJlYWs7Ci0gICAgfQotICAgIH0KLSAgICB9Ci0gICAgfQotICAgIH0K
LQotICAgIC8vIENvbXBpbGUgYW5kIGV4ZWN1dGUgYSBmaWx0ZXJpbmcgZnVuY3Rpb24KLSAgICAv
LyBQcm92aWRlIGBtYXRjaGAgdG8gYXZvaWQgcmV0b2tlbml6YXRpb24gaWYgd2UgbW9kaWZpZWQg
dGhlIHNlbGVjdG9yIGFib3ZlCi0gICAgY29tcGlsZSggc2VsZWN0b3IsIG1hdGNoICkoCi0gICAg
c2VlZCwKLSAgICBjb250ZXh0LAotICAgIGRvY3VtZW50SXNYTUwsCi0gICAgcmVzdWx0cywKLSAg
ICByc2libGluZy50ZXN0KCBzZWxlY3RvciApCi0gICAgKTsKLSAgICByZXR1cm4gcmVzdWx0czsK
LX0KLQotLy8gRGVwcmVjYXRlZAotRXhwci5wc2V1ZG9zWyJudGgiXSA9IEV4cHIucHNldWRvc1si
ZXEiXTsKLQotLy8gRWFzeSBBUEkgZm9yIGNyZWF0aW5nIG5ldyBzZXRGaWx0ZXJzCi1mdW5jdGlv
biBzZXRGaWx0ZXJzKCkge30KLUV4cHIuZmlsdGVycyA9IHNldEZpbHRlcnMucHJvdG90eXBlID0g
RXhwci5wc2V1ZG9zOwotRXhwci5zZXRGaWx0ZXJzID0gbmV3IHNldEZpbHRlcnMoKTsKLQotLy8g
SW5pdGlhbGl6ZSB3aXRoIHRoZSBkZWZhdWx0IGRvY3VtZW50Ci1zZXREb2N1bWVudCgpOwotCi0v
LyBPdmVycmlkZSBzaXp6bGUgYXR0cmlidXRlIHJldHJpZXZhbAotU2l6emxlLmF0dHIgPSBqUXVl
cnkuYXR0cjsKLWpRdWVyeS5maW5kID0gU2l6emxlOwotalF1ZXJ5LmV4cHIgPSBTaXp6bGUuc2Vs
ZWN0b3JzOwotalF1ZXJ5LmV4cHJbIjoiXSA9IGpRdWVyeS5leHByLnBzZXVkb3M7Ci1qUXVlcnku
dW5pcXVlID0gU2l6emxlLnVuaXF1ZVNvcnQ7Ci1qUXVlcnkudGV4dCA9IFNpenpsZS5nZXRUZXh0
OwotalF1ZXJ5LmlzWE1MRG9jID0gU2l6emxlLmlzWE1MOwotalF1ZXJ5LmNvbnRhaW5zID0gU2l6
emxlLmNvbnRhaW5zOwotCi0KLX0pKCB3aW5kb3cgKTsKLXZhciBydW50aWwgPSAvVW50aWwkLywK
LSAgICBycGFyZW50c3ByZXYgPSAvXig/OnBhcmVudHN8cHJldig/OlVudGlsfEFsbCkpLywKLSAg
ICBpc1NpbXBsZSA9IC9eLlteOiNcW1wuLF0qJC8sCi0gICAgcm5lZWRzQ29udGV4dCA9IGpRdWVy
eS5leHByLm1hdGNoLm5lZWRzQ29udGV4dCwKLSAgICAvLyBtZXRob2RzIGd1YXJhbnRlZWQgdG8g
cHJvZHVjZSBhIHVuaXF1ZSBzZXQgd2hlbiBzdGFydGluZyBmcm9tIGEgdW5pcXVlIHNldAotICAg
IGd1YXJhbnRlZWRVbmlxdWUgPSB7Ci0gICAgY2hpbGRyZW46IHRydWUsCi0gICAgY29udGVudHM6
IHRydWUsCi0gICAgbmV4dDogdHJ1ZSwKLSAgICBwcmV2OiB0cnVlCi0gICAgfTsKLQotalF1ZXJ5
LmZuLmV4dGVuZCh7Ci0gICAgZmluZDogZnVuY3Rpb24oIHNlbGVjdG9yICkgewotICAgIHZhciBp
LCByZXQsIHNlbGYsCi0gICAgbGVuID0gdGhpcy5sZW5ndGg7Ci0KLSAgICBpZiAoIHR5cGVvZiBz
ZWxlY3RvciAhPT0gInN0cmluZyIgKSB7Ci0gICAgc2VsZiA9IHRoaXM7Ci0gICAgcmV0dXJuIHRo
aXMucHVzaFN0YWNrKCBqUXVlcnkoIHNlbGVjdG9yICkuZmlsdGVyKGZ1bmN0aW9uKCkgewotICAg
IGZvciAoIGkgPSAwOyBpIDwgbGVuOyBpKysgKSB7Ci0gICAgaWYgKCBqUXVlcnkuY29udGFpbnMo
IHNlbGZbIGkgXSwgdGhpcyApICkgewotICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICB9Ci0g
ICAgfSkgKTsKLSAgICB9Ci0KLSAgICByZXQgPSBbXTsKLSAgICBmb3IgKCBpID0gMDsgaSA8IGxl
bjsgaSsrICkgewotICAgIGpRdWVyeS5maW5kKCBzZWxlY3RvciwgdGhpc1sgaSBdLCByZXQgKTsK
LSAgICB9Ci0KLSAgICAvLyBOZWVkZWQgYmVjYXVzZSAkKCBzZWxlY3RvciwgY29udGV4dCApIGJl
Y29tZXMgJCggY29udGV4dCApLmZpbmQoIHNlbGVjdG9yICkKLSAgICByZXQgPSB0aGlzLnB1c2hT
dGFjayggbGVuID4gMSA/IGpRdWVyeS51bmlxdWUoIHJldCApIDogcmV0ICk7Ci0gICAgcmV0LnNl
bGVjdG9yID0gKCB0aGlzLnNlbGVjdG9yID8gdGhpcy5zZWxlY3RvciArICIgIiA6ICIiICkgKyBz
ZWxlY3RvcjsKLSAgICByZXR1cm4gcmV0OwotICAgIH0sCi0KLSAgICBoYXM6IGZ1bmN0aW9uKCB0
YXJnZXQgKSB7Ci0gICAgdmFyIGksCi0gICAgdGFyZ2V0cyA9IGpRdWVyeSggdGFyZ2V0LCB0aGlz
ICksCi0gICAgbGVuID0gdGFyZ2V0cy5sZW5ndGg7Ci0KLSAgICByZXR1cm4gdGhpcy5maWx0ZXIo
ZnVuY3Rpb24oKSB7Ci0gICAgZm9yICggaSA9IDA7IGkgPCBsZW47IGkrKyApIHsKLSAgICBpZiAo
IGpRdWVyeS5jb250YWlucyggdGhpcywgdGFyZ2V0c1tpXSApICkgewotICAgIHJldHVybiB0cnVl
OwotICAgIH0KLSAgICB9Ci0gICAgfSk7Ci0gICAgfSwKLQotICAgIG5vdDogZnVuY3Rpb24oIHNl
bGVjdG9yICkgewotICAgIHJldHVybiB0aGlzLnB1c2hTdGFjayggd2lubm93KHRoaXMsIHNlbGVj
dG9yLCBmYWxzZSkgKTsKLSAgICB9LAotCi0gICAgZmlsdGVyOiBmdW5jdGlvbiggc2VsZWN0b3Ig
KSB7Ci0gICAgcmV0dXJuIHRoaXMucHVzaFN0YWNrKCB3aW5ub3codGhpcywgc2VsZWN0b3IsIHRy
dWUpICk7Ci0gICAgfSwKLQotICAgIGlzOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7Ci0gICAgcmV0
dXJuICEhc2VsZWN0b3IgJiYgKAotICAgIHR5cGVvZiBzZWxlY3RvciA9PT0gInN0cmluZyIgPwot
ICAgIC8vIElmIHRoaXMgaXMgYSBwb3NpdGlvbmFsL3JlbGF0aXZlIHNlbGVjdG9yLCBjaGVjayBt
ZW1iZXJzaGlwIGluIHRoZSByZXR1cm5lZCBzZXQKLSAgICAvLyBzbyAkKCJwOmZpcnN0IikuaXMo
InA6bGFzdCIpIHdvbid0IHJldHVybiB0cnVlIGZvciBhIGRvYyB3aXRoIHR3byAicCIuCi0gICAg
cm5lZWRzQ29udGV4dC50ZXN0KCBzZWxlY3RvciApID8KLSAgICBqUXVlcnkoIHNlbGVjdG9yLCB0
aGlzLmNvbnRleHQgKS5pbmRleCggdGhpc1swXSApID49IDAgOgotICAgIGpRdWVyeS5maWx0ZXIo
IHNlbGVjdG9yLCB0aGlzICkubGVuZ3RoID4gMCA6Ci0gICAgdGhpcy5maWx0ZXIoIHNlbGVjdG9y
ICkubGVuZ3RoID4gMCApOwotICAgIH0sCi0KLSAgICBjbG9zZXN0OiBmdW5jdGlvbiggc2VsZWN0
b3JzLCBjb250ZXh0ICkgewotICAgIHZhciBjdXIsCi0gICAgaSA9IDAsCi0gICAgbCA9IHRoaXMu
bGVuZ3RoLAotICAgIHJldCA9IFtdLAotICAgIHBvcyA9IHJuZWVkc0NvbnRleHQudGVzdCggc2Vs
ZWN0b3JzICkgfHwgdHlwZW9mIHNlbGVjdG9ycyAhPT0gInN0cmluZyIgPwotICAgIGpRdWVyeSgg
c2VsZWN0b3JzLCBjb250ZXh0IHx8IHRoaXMuY29udGV4dCApIDoKLSAgICAwOwotCi0gICAgZm9y
ICggOyBpIDwgbDsgaSsrICkgewotICAgIGN1ciA9IHRoaXNbaV07Ci0KLSAgICB3aGlsZSAoIGN1
ciAmJiBjdXIub3duZXJEb2N1bWVudCAmJiBjdXIgIT09IGNvbnRleHQgJiYgY3VyLm5vZGVUeXBl
ICE9PSAxMSApIHsKLSAgICBpZiAoIHBvcyA/IHBvcy5pbmRleChjdXIpID4gLTEgOiBqUXVlcnku
ZmluZC5tYXRjaGVzU2VsZWN0b3IoY3VyLCBzZWxlY3RvcnMpICkgewotICAgIHJldC5wdXNoKCBj
dXIgKTsKLSAgICBicmVhazsKLSAgICB9Ci0gICAgY3VyID0gY3VyLnBhcmVudE5vZGU7Ci0gICAg
fQotICAgIH0KLQotICAgIHJldHVybiB0aGlzLnB1c2hTdGFjayggcmV0Lmxlbmd0aCA+IDEgPyBq
UXVlcnkudW5pcXVlKCByZXQgKSA6IHJldCApOwotICAgIH0sCi0KLSAgICAvLyBEZXRlcm1pbmUg
dGhlIHBvc2l0aW9uIG9mIGFuIGVsZW1lbnQgd2l0aGluCi0gICAgLy8gdGhlIG1hdGNoZWQgc2V0
IG9mIGVsZW1lbnRzCi0gICAgaW5kZXg6IGZ1bmN0aW9uKCBlbGVtICkgewotCi0gICAgLy8gTm8g
YXJndW1lbnQsIHJldHVybiBpbmRleCBpbiBwYXJlbnQKLSAgICBpZiAoICFlbGVtICkgewotICAg
IHJldHVybiAoIHRoaXNbMF0gJiYgdGhpc1swXS5wYXJlbnROb2RlICkgPyB0aGlzLmZpcnN0KCku
cHJldkFsbCgpLmxlbmd0aCA6IC0xOwotICAgIH0KLQotICAgIC8vIGluZGV4IGluIHNlbGVjdG9y
Ci0gICAgaWYgKCB0eXBlb2YgZWxlbSA9PT0gInN0cmluZyIgKSB7Ci0gICAgcmV0dXJuIGpRdWVy
eS5pbkFycmF5KCB0aGlzWzBdLCBqUXVlcnkoIGVsZW0gKSApOwotICAgIH0KLQotICAgIC8vIExv
Y2F0ZSB0aGUgcG9zaXRpb24gb2YgdGhlIGRlc2lyZWQgZWxlbWVudAotICAgIHJldHVybiBqUXVl
cnkuaW5BcnJheSgKLSAgICAvLyBJZiBpdCByZWNlaXZlcyBhIGpRdWVyeSBvYmplY3QsIHRoZSBm
aXJzdCBlbGVtZW50IGlzIHVzZWQKLSAgICBlbGVtLmpxdWVyeSA/IGVsZW1bMF0gOiBlbGVtLCB0
aGlzICk7Ci0gICAgfSwKLQotICAgIGFkZDogZnVuY3Rpb24oIHNlbGVjdG9yLCBjb250ZXh0ICkg
ewotICAgIHZhciBzZXQgPSB0eXBlb2Ygc2VsZWN0b3IgPT09ICJzdHJpbmciID8KLSAgICBqUXVl
cnkoIHNlbGVjdG9yLCBjb250ZXh0ICkgOgotICAgIGpRdWVyeS5tYWtlQXJyYXkoIHNlbGVjdG9y
ICYmIHNlbGVjdG9yLm5vZGVUeXBlID8gWyBzZWxlY3RvciBdIDogc2VsZWN0b3IgKSwKLSAgICBh
bGwgPSBqUXVlcnkubWVyZ2UoIHRoaXMuZ2V0KCksIHNldCApOwotCi0gICAgcmV0dXJuIHRoaXMu
cHVzaFN0YWNrKCBqUXVlcnkudW5pcXVlKGFsbCkgKTsKLSAgICB9LAotCi0gICAgYWRkQmFjazog
ZnVuY3Rpb24oIHNlbGVjdG9yICkgewotICAgIHJldHVybiB0aGlzLmFkZCggc2VsZWN0b3IgPT0g
bnVsbCA/Ci0gICAgdGhpcy5wcmV2T2JqZWN0IDogdGhpcy5wcmV2T2JqZWN0LmZpbHRlcihzZWxl
Y3RvcikKLSAgICApOwotICAgIH0KLX0pOwotCi1qUXVlcnkuZm4uYW5kU2VsZiA9IGpRdWVyeS5m
bi5hZGRCYWNrOwotCi1mdW5jdGlvbiBzaWJsaW5nKCBjdXIsIGRpciApIHsKLSAgICBkbyB7Ci0g
ICAgY3VyID0gY3VyWyBkaXIgXTsKLSAgICB9IHdoaWxlICggY3VyICYmIGN1ci5ub2RlVHlwZSAh
PT0gMSApOwotCi0gICAgcmV0dXJuIGN1cjsKLX0KLQotalF1ZXJ5LmVhY2goewotICAgIHBhcmVu
dDogZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgdmFyIHBhcmVudCA9IGVsZW0ucGFyZW50Tm9kZTsK
LSAgICByZXR1cm4gcGFyZW50ICYmIHBhcmVudC5ub2RlVHlwZSAhPT0gMTEgPyBwYXJlbnQgOiBu
dWxsOwotICAgIH0sCi0gICAgcGFyZW50czogZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgcmV0dXJu
IGpRdWVyeS5kaXIoIGVsZW0sICJwYXJlbnROb2RlIiApOwotICAgIH0sCi0gICAgcGFyZW50c1Vu
dGlsOiBmdW5jdGlvbiggZWxlbSwgaSwgdW50aWwgKSB7Ci0gICAgcmV0dXJuIGpRdWVyeS5kaXIo
IGVsZW0sICJwYXJlbnROb2RlIiwgdW50aWwgKTsKLSAgICB9LAotICAgIG5leHQ6IGZ1bmN0aW9u
KCBlbGVtICkgewotICAgIHJldHVybiBzaWJsaW5nKCBlbGVtLCAibmV4dFNpYmxpbmciICk7Ci0g
ICAgfSwKLSAgICBwcmV2OiBmdW5jdGlvbiggZWxlbSApIHsKLSAgICByZXR1cm4gc2libGluZygg
ZWxlbSwgInByZXZpb3VzU2libGluZyIgKTsKLSAgICB9LAotICAgIG5leHRBbGw6IGZ1bmN0aW9u
KCBlbGVtICkgewotICAgIHJldHVybiBqUXVlcnkuZGlyKCBlbGVtLCAibmV4dFNpYmxpbmciICk7
Ci0gICAgfSwKLSAgICBwcmV2QWxsOiBmdW5jdGlvbiggZWxlbSApIHsKLSAgICByZXR1cm4galF1
ZXJ5LmRpciggZWxlbSwgInByZXZpb3VzU2libGluZyIgKTsKLSAgICB9LAotICAgIG5leHRVbnRp
bDogZnVuY3Rpb24oIGVsZW0sIGksIHVudGlsICkgewotICAgIHJldHVybiBqUXVlcnkuZGlyKCBl
bGVtLCAibmV4dFNpYmxpbmciLCB1bnRpbCApOwotICAgIH0sCi0gICAgcHJldlVudGlsOiBmdW5j
dGlvbiggZWxlbSwgaSwgdW50aWwgKSB7Ci0gICAgcmV0dXJuIGpRdWVyeS5kaXIoIGVsZW0sICJw
cmV2aW91c1NpYmxpbmciLCB1bnRpbCApOwotICAgIH0sCi0gICAgc2libGluZ3M6IGZ1bmN0aW9u
KCBlbGVtICkgewotICAgIHJldHVybiBqUXVlcnkuc2libGluZyggKCBlbGVtLnBhcmVudE5vZGUg
fHwge30gKS5maXJzdENoaWxkLCBlbGVtICk7Ci0gICAgfSwKLSAgICBjaGlsZHJlbjogZnVuY3Rp
b24oIGVsZW0gKSB7Ci0gICAgcmV0dXJuIGpRdWVyeS5zaWJsaW5nKCBlbGVtLmZpcnN0Q2hpbGQg
KTsKLSAgICB9LAotICAgIGNvbnRlbnRzOiBmdW5jdGlvbiggZWxlbSApIHsKLSAgICByZXR1cm4g
alF1ZXJ5Lm5vZGVOYW1lKCBlbGVtLCAiaWZyYW1lIiApID8KLSAgICBlbGVtLmNvbnRlbnREb2N1
bWVudCB8fCBlbGVtLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQgOgotICAgIGpRdWVyeS5tZXJnZSgg
W10sIGVsZW0uY2hpbGROb2RlcyApOwotICAgIH0KLX0sIGZ1bmN0aW9uKCBuYW1lLCBmbiApIHsK
LSAgICBqUXVlcnkuZm5bIG5hbWUgXSA9IGZ1bmN0aW9uKCB1bnRpbCwgc2VsZWN0b3IgKSB7Ci0g
ICAgdmFyIHJldCA9IGpRdWVyeS5tYXAoIHRoaXMsIGZuLCB1bnRpbCApOwotCi0gICAgaWYgKCAh
cnVudGlsLnRlc3QoIG5hbWUgKSApIHsKLSAgICBzZWxlY3RvciA9IHVudGlsOwotICAgIH0KLQot
ICAgIGlmICggc2VsZWN0b3IgJiYgdHlwZW9mIHNlbGVjdG9yID09PSAic3RyaW5nIiApIHsKLSAg
ICByZXQgPSBqUXVlcnkuZmlsdGVyKCBzZWxlY3RvciwgcmV0ICk7Ci0gICAgfQotCi0gICAgcmV0
ID0gdGhpcy5sZW5ndGggPiAxICYmICFndWFyYW50ZWVkVW5pcXVlWyBuYW1lIF0gPyBqUXVlcnku
dW5pcXVlKCByZXQgKSA6IHJldDsKLQotICAgIGlmICggdGhpcy5sZW5ndGggPiAxICYmIHJwYXJl
bnRzcHJldi50ZXN0KCBuYW1lICkgKSB7Ci0gICAgcmV0ID0gcmV0LnJldmVyc2UoKTsKLSAgICB9
Ci0KLSAgICByZXR1cm4gdGhpcy5wdXNoU3RhY2soIHJldCApOwotICAgIH07Ci19KTsKLQotalF1
ZXJ5LmV4dGVuZCh7Ci0gICAgZmlsdGVyOiBmdW5jdGlvbiggZXhwciwgZWxlbXMsIG5vdCApIHsK
LSAgICBpZiAoIG5vdCApIHsKLSAgICBleHByID0gIjpub3QoIiArIGV4cHIgKyAiKSI7Ci0gICAg
fQotCi0gICAgcmV0dXJuIGVsZW1zLmxlbmd0aCA9PT0gMSA/Ci0gICAgalF1ZXJ5LmZpbmQubWF0
Y2hlc1NlbGVjdG9yKGVsZW1zWzBdLCBleHByKSA/IFsgZWxlbXNbMF0gXSA6IFtdIDoKLSAgICBq
UXVlcnkuZmluZC5tYXRjaGVzKGV4cHIsIGVsZW1zKTsKLSAgICB9LAotCi0gICAgZGlyOiBmdW5j
dGlvbiggZWxlbSwgZGlyLCB1bnRpbCApIHsKLSAgICB2YXIgbWF0Y2hlZCA9IFtdLAotICAgIGN1
ciA9IGVsZW1bIGRpciBdOwotCi0gICAgd2hpbGUgKCBjdXIgJiYgY3VyLm5vZGVUeXBlICE9PSA5
ICYmICh1bnRpbCA9PT0gdW5kZWZpbmVkIHx8IGN1ci5ub2RlVHlwZSAhPT0gMSB8fCAhalF1ZXJ5
KCBjdXIgKS5pcyggdW50aWwgKSkgKSB7Ci0gICAgaWYgKCBjdXIubm9kZVR5cGUgPT09IDEgKSB7
Ci0gICAgbWF0Y2hlZC5wdXNoKCBjdXIgKTsKLSAgICB9Ci0gICAgY3VyID0gY3VyW2Rpcl07Ci0g
ICAgfQotICAgIHJldHVybiBtYXRjaGVkOwotICAgIH0sCi0KLSAgICBzaWJsaW5nOiBmdW5jdGlv
biggbiwgZWxlbSApIHsKLSAgICB2YXIgciA9IFtdOwotCi0gICAgZm9yICggOyBuOyBuID0gbi5u
ZXh0U2libGluZyApIHsKLSAgICBpZiAoIG4ubm9kZVR5cGUgPT09IDEgJiYgbiAhPT0gZWxlbSAp
IHsKLSAgICByLnB1c2goIG4gKTsKLSAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHI7Ci0gICAg
fQotfSk7Ci0KLS8vIEltcGxlbWVudCB0aGUgaWRlbnRpY2FsIGZ1bmN0aW9uYWxpdHkgZm9yIGZp
bHRlciBhbmQgbm90Ci1mdW5jdGlvbiB3aW5ub3coIGVsZW1lbnRzLCBxdWFsaWZpZXIsIGtlZXAg
KSB7Ci0KLSAgICAvLyBDYW4ndCBwYXNzIG51bGwgb3IgdW5kZWZpbmVkIHRvIGluZGV4T2YgaW4g
RmlyZWZveCA0Ci0gICAgLy8gU2V0IHRvIDAgdG8gc2tpcCBzdHJpbmcgY2hlY2sKLSAgICBxdWFs
aWZpZXIgPSBxdWFsaWZpZXIgfHwgMDsKLQotICAgIGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIHF1
YWxpZmllciApICkgewotICAgIHJldHVybiBqUXVlcnkuZ3JlcChlbGVtZW50cywgZnVuY3Rpb24o
IGVsZW0sIGkgKSB7Ci0gICAgdmFyIHJldFZhbCA9ICEhcXVhbGlmaWVyLmNhbGwoIGVsZW0sIGks
IGVsZW0gKTsKLSAgICByZXR1cm4gcmV0VmFsID09PSBrZWVwOwotICAgIH0pOwotCi0gICAgfSBl
bHNlIGlmICggcXVhbGlmaWVyLm5vZGVUeXBlICkgewotICAgIHJldHVybiBqUXVlcnkuZ3JlcChl
bGVtZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgcmV0dXJuICggZWxlbSA9PT0gcXVhbGlm
aWVyICkgPT09IGtlZXA7Ci0gICAgfSk7Ci0KLSAgICB9IGVsc2UgaWYgKCB0eXBlb2YgcXVhbGlm
aWVyID09PSAic3RyaW5nIiApIHsKLSAgICB2YXIgZmlsdGVyZWQgPSBqUXVlcnkuZ3JlcChlbGVt
ZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgcmV0dXJuIGVsZW0ubm9kZVR5cGUgPT09IDE7
Ci0gICAgfSk7Ci0KLSAgICBpZiAoIGlzU2ltcGxlLnRlc3QoIHF1YWxpZmllciApICkgewotICAg
IHJldHVybiBqUXVlcnkuZmlsdGVyKHF1YWxpZmllciwgZmlsdGVyZWQsICFrZWVwKTsKLSAgICB9
IGVsc2UgewotICAgIHF1YWxpZmllciA9IGpRdWVyeS5maWx0ZXIoIHF1YWxpZmllciwgZmlsdGVy
ZWQgKTsKLSAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIGpRdWVyeS5ncmVwKGVsZW1lbnRzLCBm
dW5jdGlvbiggZWxlbSApIHsKLSAgICByZXR1cm4gKCBqUXVlcnkuaW5BcnJheSggZWxlbSwgcXVh
bGlmaWVyICkgPj0gMCApID09PSBrZWVwOwotICAgIH0pOwotfQotZnVuY3Rpb24gY3JlYXRlU2Fm
ZUZyYWdtZW50KCBkb2N1bWVudCApIHsKLSAgICB2YXIgbGlzdCA9IG5vZGVOYW1lcy5zcGxpdCgg
InwiICksCi0gICAgc2FmZUZyYWcgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7
Ci0KLSAgICBpZiAoIHNhZmVGcmFnLmNyZWF0ZUVsZW1lbnQgKSB7Ci0gICAgd2hpbGUgKCBsaXN0
Lmxlbmd0aCApIHsKLSAgICBzYWZlRnJhZy5jcmVhdGVFbGVtZW50KAotICAgIGxpc3QucG9wKCkK
LSAgICApOwotICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHNhZmVGcmFnOwotfQotCi12YXIgbm9k
ZU5hbWVzID0gImFiYnJ8YXJ0aWNsZXxhc2lkZXxhdWRpb3xiZGl8Y2FudmFzfGRhdGF8ZGF0YWxp
c3R8ZGV0YWlsc3xmaWdjYXB0aW9ufGZpZ3VyZXxmb290ZXJ8IiArCi0gICAgImhlYWRlcnxoZ3Jv
dXB8bWFya3xtZXRlcnxuYXZ8b3V0cHV0fHByb2dyZXNzfHNlY3Rpb258c3VtbWFyeXx0aW1lfHZp
ZGVvIiwKLSAgICByaW5saW5lalF1ZXJ5ID0gLyBqUXVlcnlcZCs9Iig/Om51bGx8XGQrKSIvZywK
LSAgICBybm9zaGltY2FjaGUgPSBuZXcgUmVnRXhwKCI8KD86IiArIG5vZGVOYW1lcyArICIpW1xc
cy8+XSIsICJpIiksCi0gICAgcmxlYWRpbmdXaGl0ZXNwYWNlID0gL15ccysvLAotICAgIHJ4aHRt
bFRhZyA9IC88KD8hYXJlYXxicnxjb2x8ZW1iZWR8aHJ8aW1nfGlucHV0fGxpbmt8bWV0YXxwYXJh
bSkoKFtcdzpdKylbXj5dKilcLz4vZ2ksCi0gICAgcnRhZ05hbWUgPSAvPChbXHc6XSspLywKLSAg
ICBydGJvZHkgPSAvPHRib2R5L2ksCi0gICAgcmh0bWwgPSAvPHwmIz9cdys7LywKLSAgICBybm9J
bm5lcmh0bWwgPSAvPCg/OnNjcmlwdHxzdHlsZXxsaW5rKS9pLAotICAgIG1hbmlwdWxhdGlvbl9y
Y2hlY2thYmxlVHlwZSA9IC9eKD86Y2hlY2tib3h8cmFkaW8pJC9pLAotICAgIC8vIGNoZWNrZWQ9
ImNoZWNrZWQiIG9yIGNoZWNrZWQKLSAgICByY2hlY2tlZCA9IC9jaGVja2VkXHMqKD86W149XXw9
XHMqLmNoZWNrZWQuKS9pLAotICAgIHJzY3JpcHRUeXBlID0gL14kfFwvKD86amF2YXxlY21hKXNj
cmlwdC9pLAotICAgIHJzY3JpcHRUeXBlTWFza2VkID0gL150cnVlXC8oLiopLywKLSAgICByY2xl
YW5TY3JpcHQgPSAvXlxzKjwhKD86XFtDREFUQVxbfC0tKXwoPzpcXVxdfC0tKT5ccyokL2csCi0K
LSAgICAvLyBXZSBoYXZlIHRvIGNsb3NlIHRoZXNlIHRhZ3MgdG8gc3VwcG9ydCBYSFRNTCAoIzEz
MjAwKQotICAgIHdyYXBNYXAgPSB7Ci0gICAgb3B0aW9uOiBbIDEsICI8c2VsZWN0IG11bHRpcGxl
PSdtdWx0aXBsZSc+IiwgIjwvc2VsZWN0PiIgXSwKLSAgICBsZWdlbmQ6IFsgMSwgIjxmaWVsZHNl
dD4iLCAiPC9maWVsZHNldD4iIF0sCi0gICAgYXJlYTogWyAxLCAiPG1hcD4iLCAiPC9tYXA+IiBd
LAotICAgIHBhcmFtOiBbIDEsICI8b2JqZWN0PiIsICI8L29iamVjdD4iIF0sCi0gICAgdGhlYWQ6
IFsgMSwgIjx0YWJsZT4iLCAiPC90YWJsZT4iIF0sCi0gICAgdHI6IFsgMiwgIjx0YWJsZT48dGJv
ZHk+IiwgIjwvdGJvZHk+PC90YWJsZT4iIF0sCi0gICAgY29sOiBbIDIsICI8dGFibGU+PHRib2R5
PjwvdGJvZHk+PGNvbGdyb3VwPiIsICI8L2NvbGdyb3VwPjwvdGFibGU+IiBdLAotICAgIHRkOiBb
IDMsICI8dGFibGU+PHRib2R5Pjx0cj4iLCAiPC90cj48L3Rib2R5PjwvdGFibGU+IiBdLAotCi0g
ICAgLy8gSUU2LTggY2FuJ3Qgc2VyaWFsaXplIGxpbmssIHNjcmlwdCwgc3R5bGUsIG9yIGFueSBo
dG1sNSAoTm9TY29wZSkgdGFncywKLSAgICAvLyB1bmxlc3Mgd3JhcHBlZCBpbiBhIGRpdiB3aXRo
IG5vbi1icmVha2luZyBjaGFyYWN0ZXJzIGluIGZyb250IG9mIGl0LgotICAgIF9kZWZhdWx0OiBq
UXVlcnkuc3VwcG9ydC5odG1sU2VyaWFsaXplID8gWyAwLCAiIiwgIiIgXSA6IFsgMSwgIlg8ZGl2
PiIsICI8L2Rpdj4iICBdCi0gICAgfSwKLSAgICBzYWZlRnJhZ21lbnQgPSBjcmVhdGVTYWZlRnJh
Z21lbnQoIGRvY3VtZW50ICksCi0gICAgZnJhZ21lbnREaXYgPSBzYWZlRnJhZ21lbnQuYXBwZW5k
Q2hpbGQoIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpICk7Ci0KLXdyYXBNYXAub3B0Z3Jv
dXAgPSB3cmFwTWFwLm9wdGlvbjsKLXdyYXBNYXAudGJvZHkgPSB3cmFwTWFwLnRmb290ID0gd3Jh
cE1hcC5jb2xncm91cCA9IHdyYXBNYXAuY2FwdGlvbiA9IHdyYXBNYXAudGhlYWQ7Ci13cmFwTWFw
LnRoID0gd3JhcE1hcC50ZDsKLQotalF1ZXJ5LmZuLmV4dGVuZCh7Ci0gICAgdGV4dDogZnVuY3Rp
b24oIHZhbHVlICkgewotICAgIHJldHVybiBqUXVlcnkuYWNjZXNzKCB0aGlzLCBmdW5jdGlvbigg
dmFsdWUgKSB7Ci0gICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPwotICAgIGpRdWVyeS50
ZXh0KCB0aGlzICkgOgotICAgIHRoaXMuZW1wdHkoKS5hcHBlbmQoICggdGhpc1swXSAmJiB0aGlz
WzBdLm93bmVyRG9jdW1lbnQgfHwgZG9jdW1lbnQgKS5jcmVhdGVUZXh0Tm9kZSggdmFsdWUgKSAp
OwotICAgIH0sIG51bGwsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoICk7Ci0gICAgfSwKLQotICAg
IHdyYXBBbGw6IGZ1bmN0aW9uKCBodG1sICkgewotICAgIGlmICggalF1ZXJ5LmlzRnVuY3Rpb24o
IGh0bWwgKSApIHsKLSAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGkpIHsKLSAgICBqUXVl
cnkodGhpcykud3JhcEFsbCggaHRtbC5jYWxsKHRoaXMsIGkpICk7Ci0gICAgfSk7Ci0gICAgfQot
Ci0gICAgaWYgKCB0aGlzWzBdICkgewotICAgIC8vIFRoZSBlbGVtZW50cyB0byB3cmFwIHRoZSB0
YXJnZXQgYXJvdW5kCi0gICAgdmFyIHdyYXAgPSBqUXVlcnkoIGh0bWwsIHRoaXNbMF0ub3duZXJE
b2N1bWVudCApLmVxKDApLmNsb25lKHRydWUpOwotCi0gICAgaWYgKCB0aGlzWzBdLnBhcmVudE5v
ZGUgKSB7Ci0gICAgd3JhcC5pbnNlcnRCZWZvcmUoIHRoaXNbMF0gKTsKLSAgICB9Ci0KLSAgICB3
cmFwLm1hcChmdW5jdGlvbigpIHsKLSAgICB2YXIgZWxlbSA9IHRoaXM7Ci0KLSAgICB3aGlsZSAo
IGVsZW0uZmlyc3RDaGlsZCAmJiBlbGVtLmZpcnN0Q2hpbGQubm9kZVR5cGUgPT09IDEgKSB7Ci0g
ICAgZWxlbSA9IGVsZW0uZmlyc3RDaGlsZDsKLSAgICB9Ci0KLSAgICByZXR1cm4gZWxlbTsKLSAg
ICB9KS5hcHBlbmQoIHRoaXMgKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdGhpczsKLSAgICB9LAot
Ci0gICAgd3JhcElubmVyOiBmdW5jdGlvbiggaHRtbCApIHsKLSAgICBpZiAoIGpRdWVyeS5pc0Z1
bmN0aW9uKCBodG1sICkgKSB7Ci0gICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihpKSB7Ci0g
ICAgalF1ZXJ5KHRoaXMpLndyYXBJbm5lciggaHRtbC5jYWxsKHRoaXMsIGkpICk7Ci0gICAgfSk7
Ci0gICAgfQotCi0gICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKLSAgICB2YXIgc2Vs
ZiA9IGpRdWVyeSggdGhpcyApLAotICAgIGNvbnRlbnRzID0gc2VsZi5jb250ZW50cygpOwotCi0g
ICAgaWYgKCBjb250ZW50cy5sZW5ndGggKSB7Ci0gICAgY29udGVudHMud3JhcEFsbCggaHRtbCAp
OwotCi0gICAgfSBlbHNlIHsKLSAgICBzZWxmLmFwcGVuZCggaHRtbCApOwotICAgIH0KLSAgICB9
KTsKLSAgICB9LAotCi0gICAgd3JhcDogZnVuY3Rpb24oIGh0bWwgKSB7Ci0gICAgdmFyIGlzRnVu
Y3Rpb24gPSBqUXVlcnkuaXNGdW5jdGlvbiggaHRtbCApOwotCi0gICAgcmV0dXJuIHRoaXMuZWFj
aChmdW5jdGlvbihpKSB7Ci0gICAgalF1ZXJ5KCB0aGlzICkud3JhcEFsbCggaXNGdW5jdGlvbiA/
IGh0bWwuY2FsbCh0aGlzLCBpKSA6IGh0bWwgKTsKLSAgICB9KTsKLSAgICB9LAotCi0gICAgdW53
cmFwOiBmdW5jdGlvbigpIHsKLSAgICByZXR1cm4gdGhpcy5wYXJlbnQoKS5lYWNoKGZ1bmN0aW9u
KCkgewotICAgIGlmICggIWpRdWVyeS5ub2RlTmFtZSggdGhpcywgImJvZHkiICkgKSB7Ci0gICAg
alF1ZXJ5KCB0aGlzICkucmVwbGFjZVdpdGgoIHRoaXMuY2hpbGROb2RlcyApOwotICAgIH0KLSAg
ICB9KS5lbmQoKTsKLSAgICB9LAotCi0gICAgYXBwZW5kOiBmdW5jdGlvbigpIHsKLSAgICByZXR1
cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsIHRydWUsIGZ1bmN0aW9uKCBlbGVtICkgewotICAg
IGlmICggdGhpcy5ub2RlVHlwZSA9PT0gMSB8fCB0aGlzLm5vZGVUeXBlID09PSAxMSB8fCB0aGlz
Lm5vZGVUeXBlID09PSA5ICkgewotICAgIHRoaXMuYXBwZW5kQ2hpbGQoIGVsZW0gKTsKLSAgICB9
Ci0gICAgfSk7Ci0gICAgfSwKLQotICAgIHByZXBlbmQ6IGZ1bmN0aW9uKCkgewotICAgIHJldHVy
biB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cywgdHJ1ZSwgZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAg
aWYgKCB0aGlzLm5vZGVUeXBlID09PSAxIHx8IHRoaXMubm9kZVR5cGUgPT09IDExIHx8IHRoaXMu
bm9kZVR5cGUgPT09IDkgKSB7Ci0gICAgdGhpcy5pbnNlcnRCZWZvcmUoIGVsZW0sIHRoaXMuZmly
c3RDaGlsZCApOwotICAgIH0KLSAgICB9KTsKLSAgICB9LAotCi0gICAgYmVmb3JlOiBmdW5jdGlv
bigpIHsKLSAgICByZXR1cm4gdGhpcy5kb21NYW5pcCggYXJndW1lbnRzLCBmYWxzZSwgZnVuY3Rp
b24oIGVsZW0gKSB7Ci0gICAgaWYgKCB0aGlzLnBhcmVudE5vZGUgKSB7Ci0gICAgdGhpcy5wYXJl
bnROb2RlLmluc2VydEJlZm9yZSggZWxlbSwgdGhpcyApOwotICAgIH0KLSAgICB9KTsKLSAgICB9
LAotCi0gICAgYWZ0ZXI6IGZ1bmN0aW9uKCkgewotICAgIHJldHVybiB0aGlzLmRvbU1hbmlwKCBh
cmd1bWVudHMsIGZhbHNlLCBmdW5jdGlvbiggZWxlbSApIHsKLSAgICBpZiAoIHRoaXMucGFyZW50
Tm9kZSApIHsKLSAgICB0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKCBlbGVtLCB0aGlzLm5l
eHRTaWJsaW5nICk7Ci0gICAgfQotICAgIH0pOwotICAgIH0sCi0KLSAgICAvLyBrZWVwRGF0YSBp
cyBmb3IgaW50ZXJuYWwgdXNlIG9ubHktLWRvIG5vdCBkb2N1bWVudAotICAgIHJlbW92ZTogZnVu
Y3Rpb24oIHNlbGVjdG9yLCBrZWVwRGF0YSApIHsKLSAgICB2YXIgZWxlbSwKLSAgICBpID0gMDsK
LQotICAgIGZvciAoIDsgKGVsZW0gPSB0aGlzW2ldKSAhPSBudWxsOyBpKysgKSB7Ci0gICAgaWYg
KCAhc2VsZWN0b3IgfHwgalF1ZXJ5LmZpbHRlciggc2VsZWN0b3IsIFsgZWxlbSBdICkubGVuZ3Ro
ID4gMCApIHsKLSAgICBpZiAoICFrZWVwRGF0YSAmJiBlbGVtLm5vZGVUeXBlID09PSAxICkgewot
ICAgIGpRdWVyeS5jbGVhbkRhdGEoIGdldEFsbCggZWxlbSApICk7Ci0gICAgfQotCi0gICAgaWYg
KCBlbGVtLnBhcmVudE5vZGUgKSB7Ci0gICAgaWYgKCBrZWVwRGF0YSAmJiBqUXVlcnkuY29udGFp
bnMoIGVsZW0ub3duZXJEb2N1bWVudCwgZWxlbSApICkgewotICAgIHNldEdsb2JhbEV2YWwoIGdl
dEFsbCggZWxlbSwgInNjcmlwdCIgKSApOwotICAgIH0KLSAgICBlbGVtLnBhcmVudE5vZGUucmVt
b3ZlQ2hpbGQoIGVsZW0gKTsKLSAgICB9Ci0gICAgfQotICAgIH0KLQotICAgIHJldHVybiB0aGlz
OwotICAgIH0sCi0KLSAgICBlbXB0eTogZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGVsZW0sCi0gICAg
aSA9IDA7Ci0KLSAgICBmb3IgKCA7IChlbGVtID0gdGhpc1tpXSkgIT0gbnVsbDsgaSsrICkgewot
ICAgIC8vIFJlbW92ZSBlbGVtZW50IG5vZGVzIGFuZCBwcmV2ZW50IG1lbW9yeSBsZWFrcwotICAg
IGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSApIHsKLSAgICBqUXVlcnkuY2xlYW5EYXRhKCBnZXRB
bGwoIGVsZW0sIGZhbHNlICkgKTsKLSAgICB9Ci0KLSAgICAvLyBSZW1vdmUgYW55IHJlbWFpbmlu
ZyBub2RlcwotICAgIHdoaWxlICggZWxlbS5maXJzdENoaWxkICkgewotICAgIGVsZW0ucmVtb3Zl
Q2hpbGQoIGVsZW0uZmlyc3RDaGlsZCApOwotICAgIH0KLQotICAgIC8vIElmIHRoaXMgaXMgYSBz
ZWxlY3QsIGVuc3VyZSB0aGF0IGl0IGRpc3BsYXlzIGVtcHR5ICgjMTIzMzYpCi0gICAgLy8gU3Vw
cG9ydDogSUU8OQotICAgIGlmICggZWxlbS5vcHRpb25zICYmIGpRdWVyeS5ub2RlTmFtZSggZWxl
bSwgInNlbGVjdCIgKSApIHsKLSAgICBlbGVtLm9wdGlvbnMubGVuZ3RoID0gMDsKLSAgICB9Ci0g
ICAgfQotCi0gICAgcmV0dXJuIHRoaXM7Ci0gICAgfSwKLQotICAgIGNsb25lOiBmdW5jdGlvbigg
ZGF0YUFuZEV2ZW50cywgZGVlcERhdGFBbmRFdmVudHMgKSB7Ci0gICAgZGF0YUFuZEV2ZW50cyA9
IGRhdGFBbmRFdmVudHMgPT0gbnVsbCA/IGZhbHNlIDogZGF0YUFuZEV2ZW50czsKLSAgICBkZWVw
RGF0YUFuZEV2ZW50cyA9IGRlZXBEYXRhQW5kRXZlbnRzID09IG51bGwgPyBkYXRhQW5kRXZlbnRz
IDogZGVlcERhdGFBbmRFdmVudHM7Ci0KLSAgICByZXR1cm4gdGhpcy5tYXAoIGZ1bmN0aW9uICgp
IHsKLSAgICByZXR1cm4galF1ZXJ5LmNsb25lKCB0aGlzLCBkYXRhQW5kRXZlbnRzLCBkZWVwRGF0
YUFuZEV2ZW50cyApOwotICAgIH0pOwotICAgIH0sCi0KLSAgICBodG1sOiBmdW5jdGlvbiggdmFs
dWUgKSB7Ci0gICAgcmV0dXJuIGpRdWVyeS5hY2Nlc3MoIHRoaXMsIGZ1bmN0aW9uKCB2YWx1ZSAp
IHsKLSAgICB2YXIgZWxlbSA9IHRoaXNbMF0gfHwge30sCi0gICAgaSA9IDAsCi0gICAgbCA9IHRo
aXMubGVuZ3RoOwotCi0gICAgaWYgKCB2YWx1ZSA9PT0gdW5kZWZpbmVkICkgewotICAgIHJldHVy
biBlbGVtLm5vZGVUeXBlID09PSAxID8KLSAgICBlbGVtLmlubmVySFRNTC5yZXBsYWNlKCByaW5s
aW5lalF1ZXJ5LCAiIiApIDoKLSAgICB1bmRlZmluZWQ7Ci0gICAgfQotCi0gICAgLy8gU2VlIGlm
IHdlIGNhbiB0YWtlIGEgc2hvcnRjdXQgYW5kIGp1c3QgdXNlIGlubmVySFRNTAotICAgIGlmICgg
dHlwZW9mIHZhbHVlID09PSAic3RyaW5nIiAmJiAhcm5vSW5uZXJodG1sLnRlc3QoIHZhbHVlICkg
JiYKLSAgICAoIGpRdWVyeS5zdXBwb3J0Lmh0bWxTZXJpYWxpemUgfHwgIXJub3NoaW1jYWNoZS50
ZXN0KCB2YWx1ZSApICApICYmCi0gICAgKCBqUXVlcnkuc3VwcG9ydC5sZWFkaW5nV2hpdGVzcGFj
ZSB8fCAhcmxlYWRpbmdXaGl0ZXNwYWNlLnRlc3QoIHZhbHVlICkgKSAmJgotICAgICF3cmFwTWFw
WyAoIHJ0YWdOYW1lLmV4ZWMoIHZhbHVlICkgfHwgWyIiLCAiIl0gKVsxXS50b0xvd2VyQ2FzZSgp
IF0gKSB7Ci0KLSAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoIHJ4aHRtbFRhZywgIjwkMT48LyQy
PiIgKTsKLQotICAgIHRyeSB7Ci0gICAgZm9yICg7IGkgPCBsOyBpKysgKSB7Ci0gICAgLy8gUmVt
b3ZlIGVsZW1lbnQgbm9kZXMgYW5kIHByZXZlbnQgbWVtb3J5IGxlYWtzCi0gICAgZWxlbSA9IHRo
aXNbaV0gfHwge307Ci0gICAgaWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICkgewotICAgIGpRdWVy
eS5jbGVhbkRhdGEoIGdldEFsbCggZWxlbSwgZmFsc2UgKSApOwotICAgIGVsZW0uaW5uZXJIVE1M
ID0gdmFsdWU7Ci0gICAgfQotICAgIH0KLQotICAgIGVsZW0gPSAwOwotCi0gICAgLy8gSWYgdXNp
bmcgaW5uZXJIVE1MIHRocm93cyBhbiBleGNlcHRpb24sIHVzZSB0aGUgZmFsbGJhY2sgbWV0aG9k
Ci0gICAgfSBjYXRjaChlKSB7fQotICAgIH0KLQotICAgIGlmICggZWxlbSApIHsKLSAgICB0aGlz
LmVtcHR5KCkuYXBwZW5kKCB2YWx1ZSApOwotICAgIH0KLSAgICB9LCBudWxsLCB2YWx1ZSwgYXJn
dW1lbnRzLmxlbmd0aCApOwotICAgIH0sCi0KLSAgICByZXBsYWNlV2l0aDogZnVuY3Rpb24oIHZh
bHVlICkgewotICAgIHZhciBpc0Z1bmMgPSBqUXVlcnkuaXNGdW5jdGlvbiggdmFsdWUgKTsKLQot
ICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBlbGVtZW50cyBhcmUgcmVtb3ZlZCBmcm9tIHRoZSBE
T00gYmVmb3JlIHRoZXkgYXJlIGluc2VydGVkCi0gICAgLy8gdGhpcyBjYW4gaGVscCBmaXggcmVw
bGFjaW5nIGEgcGFyZW50IHdpdGggY2hpbGQgZWxlbWVudHMKLSAgICBpZiAoICFpc0Z1bmMgJiYg
dHlwZW9mIHZhbHVlICE9PSAic3RyaW5nIiApIHsKLSAgICB2YWx1ZSA9IGpRdWVyeSggdmFsdWUg
KS5ub3QoIHRoaXMgKS5kZXRhY2goKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdGhpcy5kb21NYW5p
cCggWyB2YWx1ZSBdLCB0cnVlLCBmdW5jdGlvbiggZWxlbSApIHsKLSAgICB2YXIgbmV4dCA9IHRo
aXMubmV4dFNpYmxpbmcsCi0gICAgcGFyZW50ID0gdGhpcy5wYXJlbnROb2RlOwotCi0gICAgaWYg
KCBwYXJlbnQgKSB7Ci0gICAgalF1ZXJ5KCB0aGlzICkucmVtb3ZlKCk7Ci0gICAgcGFyZW50Lmlu
c2VydEJlZm9yZSggZWxlbSwgbmV4dCApOwotICAgIH0KLSAgICB9KTsKLSAgICB9LAotCi0gICAg
ZGV0YWNoOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7Ci0gICAgcmV0dXJuIHRoaXMucmVtb3ZlKCBz
ZWxlY3RvciwgdHJ1ZSApOwotICAgIH0sCi0KLSAgICBkb21NYW5pcDogZnVuY3Rpb24oIGFyZ3Ms
IHRhYmxlLCBjYWxsYmFjayApIHsKLQotICAgIC8vIEZsYXR0ZW4gYW55IG5lc3RlZCBhcnJheXMK
LSAgICBhcmdzID0gY29yZV9jb25jYXQuYXBwbHkoIFtdLCBhcmdzICk7Ci0KLSAgICB2YXIgZmly
c3QsIG5vZGUsIGhhc1NjcmlwdHMsCi0gICAgc2NyaXB0cywgZG9jLCBmcmFnbWVudCwKLSAgICBp
ID0gMCwKLSAgICBsID0gdGhpcy5sZW5ndGgsCi0gICAgc2V0ID0gdGhpcywKLSAgICBpTm9DbG9u
ZSA9IGwgLSAxLAotICAgIHZhbHVlID0gYXJnc1swXSwKLSAgICBpc0Z1bmN0aW9uID0galF1ZXJ5
LmlzRnVuY3Rpb24oIHZhbHVlICk7Ci0KLSAgICAvLyBXZSBjYW4ndCBjbG9uZU5vZGUgZnJhZ21l
bnRzIHRoYXQgY29udGFpbiBjaGVja2VkLCBpbiBXZWJLaXQKLSAgICBpZiAoIGlzRnVuY3Rpb24g
fHwgISggbCA8PSAxIHx8IHR5cGVvZiB2YWx1ZSAhPT0gInN0cmluZyIgfHwgalF1ZXJ5LnN1cHBv
cnQuY2hlY2tDbG9uZSB8fCAhcmNoZWNrZWQudGVzdCggdmFsdWUgKSApICkgewotICAgIHJldHVy
biB0aGlzLmVhY2goZnVuY3Rpb24oIGluZGV4ICkgewotICAgIHZhciBzZWxmID0gc2V0LmVxKCBp
bmRleCApOwotICAgIGlmICggaXNGdW5jdGlvbiApIHsKLSAgICBhcmdzWzBdID0gdmFsdWUuY2Fs
bCggdGhpcywgaW5kZXgsIHRhYmxlID8gc2VsZi5odG1sKCkgOiB1bmRlZmluZWQgKTsKLSAgICB9
Ci0gICAgc2VsZi5kb21NYW5pcCggYXJncywgdGFibGUsIGNhbGxiYWNrICk7Ci0gICAgfSk7Ci0g
ICAgfQotCi0gICAgaWYgKCBsICkgewotICAgIGZyYWdtZW50ID0galF1ZXJ5LmJ1aWxkRnJhZ21l
bnQoIGFyZ3MsIHRoaXNbIDAgXS5vd25lckRvY3VtZW50LCBmYWxzZSwgdGhpcyApOwotICAgIGZp
cnN0ID0gZnJhZ21lbnQuZmlyc3RDaGlsZDsKLQotICAgIGlmICggZnJhZ21lbnQuY2hpbGROb2Rl
cy5sZW5ndGggPT09IDEgKSB7Ci0gICAgZnJhZ21lbnQgPSBmaXJzdDsKLSAgICB9Ci0KLSAgICBp
ZiAoIGZpcnN0ICkgewotICAgIHRhYmxlID0gdGFibGUgJiYgalF1ZXJ5Lm5vZGVOYW1lKCBmaXJz
dCwgInRyIiApOwotICAgIHNjcmlwdHMgPSBqUXVlcnkubWFwKCBnZXRBbGwoIGZyYWdtZW50LCAi
c2NyaXB0IiApLCBkaXNhYmxlU2NyaXB0ICk7Ci0gICAgaGFzU2NyaXB0cyA9IHNjcmlwdHMubGVu
Z3RoOwotCi0gICAgLy8gVXNlIHRoZSBvcmlnaW5hbCBmcmFnbWVudCBmb3IgdGhlIGxhc3QgaXRl
bSBpbnN0ZWFkIG9mIHRoZSBmaXJzdCBiZWNhdXNlIGl0IGNhbiBlbmQgdXAKLSAgICAvLyBiZWlu
ZyBlbXB0aWVkIGluY29ycmVjdGx5IGluIGNlcnRhaW4gc2l0dWF0aW9ucyAoIzgwNzApLgotICAg
IGZvciAoIDsgaSA8IGw7IGkrKyApIHsKLSAgICBub2RlID0gZnJhZ21lbnQ7Ci0KLSAgICBpZiAo
IGkgIT09IGlOb0Nsb25lICkgewotICAgIG5vZGUgPSBqUXVlcnkuY2xvbmUoIG5vZGUsIHRydWUs
IHRydWUgKTsKLQotICAgIC8vIEtlZXAgcmVmZXJlbmNlcyB0byBjbG9uZWQgc2NyaXB0cyBmb3Ig
bGF0ZXIgcmVzdG9yYXRpb24KLSAgICBpZiAoIGhhc1NjcmlwdHMgKSB7Ci0gICAgalF1ZXJ5Lm1l
cmdlKCBzY3JpcHRzLCBnZXRBbGwoIG5vZGUsICJzY3JpcHQiICkgKTsKLSAgICB9Ci0gICAgfQot
Ci0gICAgY2FsbGJhY2suY2FsbCgKLSAgICB0YWJsZSAmJiBqUXVlcnkubm9kZU5hbWUoIHRoaXNb
aV0sICJ0YWJsZSIgKSA/Ci0gICAgZmluZE9yQXBwZW5kKCB0aGlzW2ldLCAidGJvZHkiICkgOgot
ICAgIHRoaXNbaV0sCi0gICAgbm9kZSwKLSAgICBpCi0gICAgKTsKLSAgICB9Ci0KLSAgICBpZiAo
IGhhc1NjcmlwdHMgKSB7Ci0gICAgZG9jID0gc2NyaXB0c1sgc2NyaXB0cy5sZW5ndGggLSAxIF0u
b3duZXJEb2N1bWVudDsKLQotICAgIC8vIFJlZW5hYmxlIHNjcmlwdHMKLSAgICBqUXVlcnkubWFw
KCBzY3JpcHRzLCByZXN0b3JlU2NyaXB0ICk7Ci0KLSAgICAvLyBFdmFsdWF0ZSBleGVjdXRhYmxl
IHNjcmlwdHMgb24gZmlyc3QgZG9jdW1lbnQgaW5zZXJ0aW9uCi0gICAgZm9yICggaSA9IDA7IGkg
PCBoYXNTY3JpcHRzOyBpKysgKSB7Ci0gICAgbm9kZSA9IHNjcmlwdHNbIGkgXTsKLSAgICBpZiAo
IHJzY3JpcHRUeXBlLnRlc3QoIG5vZGUudHlwZSB8fCAiIiApICYmCi0gICAgIWpRdWVyeS5fZGF0
YSggbm9kZSwgImdsb2JhbEV2YWwiICkgJiYgalF1ZXJ5LmNvbnRhaW5zKCBkb2MsIG5vZGUgKSAp
IHsKLQotICAgIGlmICggbm9kZS5zcmMgKSB7Ci0gICAgLy8gSG9wZSBhamF4IGlzIGF2YWlsYWJs
ZS4uLgotICAgIGpRdWVyeS5hamF4KHsKLSAgICB1cmw6IG5vZGUuc3JjLAotICAgIHR5cGU6ICJH
RVQiLAotICAgIGRhdGFUeXBlOiAic2NyaXB0IiwKLSAgICBhc3luYzogZmFsc2UsCi0gICAgZ2xv
YmFsOiBmYWxzZSwKLSAgICAidGhyb3dzIjogdHJ1ZQotICAgIH0pOwotICAgIH0gZWxzZSB7Ci0g
ICAgalF1ZXJ5Lmdsb2JhbEV2YWwoICggbm9kZS50ZXh0IHx8IG5vZGUudGV4dENvbnRlbnQgfHwg
bm9kZS5pbm5lckhUTUwgfHwgIiIgKS5yZXBsYWNlKCByY2xlYW5TY3JpcHQsICIiICkgKTsKLSAg
ICB9Ci0gICAgfQotICAgIH0KLSAgICB9Ci0KLSAgICAvLyBGaXggIzExODA5OiBBdm9pZCBsZWFr
aW5nIG1lbW9yeQotICAgIGZyYWdtZW50ID0gZmlyc3QgPSBudWxsOwotICAgIH0KLSAgICB9Ci0K
LSAgICByZXR1cm4gdGhpczsKLSAgICB9Ci19KTsKLQotZnVuY3Rpb24gZmluZE9yQXBwZW5kKCBl
bGVtLCB0YWcgKSB7Ci0gICAgcmV0dXJuIGVsZW0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoIHRhZyAp
WzBdIHx8IGVsZW0uYXBwZW5kQ2hpbGQoIGVsZW0ub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50
KCB0YWcgKSApOwotfQotCi0vLyBSZXBsYWNlL3Jlc3RvcmUgdGhlIHR5cGUgYXR0cmlidXRlIG9m
IHNjcmlwdCBlbGVtZW50cyBmb3Igc2FmZSBET00gbWFuaXB1bGF0aW9uCi1mdW5jdGlvbiBkaXNh
YmxlU2NyaXB0KCBlbGVtICkgewotICAgIHZhciBhdHRyID0gZWxlbS5nZXRBdHRyaWJ1dGVOb2Rl
KCJ0eXBlIik7Ci0gICAgZWxlbS50eXBlID0gKCBhdHRyICYmIGF0dHIuc3BlY2lmaWVkICkgKyAi
LyIgKyBlbGVtLnR5cGU7Ci0gICAgcmV0dXJuIGVsZW07Ci19Ci1mdW5jdGlvbiByZXN0b3JlU2Ny
aXB0KCBlbGVtICkgewotICAgIHZhciBtYXRjaCA9IHJzY3JpcHRUeXBlTWFza2VkLmV4ZWMoIGVs
ZW0udHlwZSApOwotICAgIGlmICggbWF0Y2ggKSB7Ci0gICAgZWxlbS50eXBlID0gbWF0Y2hbMV07
Ci0gICAgfSBlbHNlIHsKLSAgICBlbGVtLnJlbW92ZUF0dHJpYnV0ZSgidHlwZSIpOwotICAgIH0K
LSAgICByZXR1cm4gZWxlbTsKLX0KLQotLy8gTWFyayBzY3JpcHRzIGFzIGhhdmluZyBhbHJlYWR5
IGJlZW4gZXZhbHVhdGVkCi1mdW5jdGlvbiBzZXRHbG9iYWxFdmFsKCBlbGVtcywgcmVmRWxlbWVu
dHMgKSB7Ci0gICAgdmFyIGVsZW0sCi0gICAgaSA9IDA7Ci0gICAgZm9yICggOyAoZWxlbSA9IGVs
ZW1zW2ldKSAhPSBudWxsOyBpKysgKSB7Ci0gICAgalF1ZXJ5Ll9kYXRhKCBlbGVtLCAiZ2xvYmFs
RXZhbCIsICFyZWZFbGVtZW50cyB8fCBqUXVlcnkuX2RhdGEoIHJlZkVsZW1lbnRzW2ldLCAiZ2xv
YmFsRXZhbCIgKSApOwotICAgIH0KLX0KLQotZnVuY3Rpb24gY2xvbmVDb3B5RXZlbnQoIHNyYywg
ZGVzdCApIHsKLQotICAgIGlmICggZGVzdC5ub2RlVHlwZSAhPT0gMSB8fCAhalF1ZXJ5Lmhhc0Rh
dGEoIHNyYyApICkgewotICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICB2YXIgdHlwZSwgaSwgbCwK
LSAgICBvbGREYXRhID0galF1ZXJ5Ll9kYXRhKCBzcmMgKSwKLSAgICBjdXJEYXRhID0galF1ZXJ5
Ll9kYXRhKCBkZXN0LCBvbGREYXRhICksCi0gICAgZXZlbnRzID0gb2xkRGF0YS5ldmVudHM7Ci0K
LSAgICBpZiAoIGV2ZW50cyApIHsKLSAgICBkZWxldGUgY3VyRGF0YS5oYW5kbGU7Ci0gICAgY3Vy
RGF0YS5ldmVudHMgPSB7fTsKLQotICAgIGZvciAoIHR5cGUgaW4gZXZlbnRzICkgewotICAgIGZv
ciAoIGkgPSAwLCBsID0gZXZlbnRzWyB0eXBlIF0ubGVuZ3RoOyBpIDwgbDsgaSsrICkgewotICAg
IGpRdWVyeS5ldmVudC5hZGQoIGRlc3QsIHR5cGUsIGV2ZW50c1sgdHlwZSBdWyBpIF0gKTsKLSAg
ICB9Ci0gICAgfQotICAgIH0KLQotICAgIC8vIG1ha2UgdGhlIGNsb25lZCBwdWJsaWMgZGF0YSBv
YmplY3QgYSBjb3B5IGZyb20gdGhlIG9yaWdpbmFsCi0gICAgaWYgKCBjdXJEYXRhLmRhdGEgKSB7
Ci0gICAgY3VyRGF0YS5kYXRhID0galF1ZXJ5LmV4dGVuZCgge30sIGN1ckRhdGEuZGF0YSApOwot
ICAgIH0KLX0KLQotZnVuY3Rpb24gZml4Q2xvbmVOb2RlSXNzdWVzKCBzcmMsIGRlc3QgKSB7Ci0g
ICAgdmFyIG5vZGVOYW1lLCBlLCBkYXRhOwotCi0gICAgLy8gV2UgZG8gbm90IG5lZWQgdG8gZG8g
YW55dGhpbmcgZm9yIG5vbi1FbGVtZW50cwotICAgIGlmICggZGVzdC5ub2RlVHlwZSAhPT0gMSAp
IHsKLSAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbm9kZU5hbWUgPSBkZXN0Lm5vZGVOYW1lLnRv
TG93ZXJDYXNlKCk7Ci0KLSAgICAvLyBJRTYtOCBjb3BpZXMgZXZlbnRzIGJvdW5kIHZpYSBhdHRh
Y2hFdmVudCB3aGVuIHVzaW5nIGNsb25lTm9kZS4KLSAgICBpZiAoICFqUXVlcnkuc3VwcG9ydC5u
b0Nsb25lRXZlbnQgJiYgZGVzdFsgalF1ZXJ5LmV4cGFuZG8gXSApIHsKLSAgICBkYXRhID0galF1
ZXJ5Ll9kYXRhKCBkZXN0ICk7Ci0KLSAgICBmb3IgKCBlIGluIGRhdGEuZXZlbnRzICkgewotICAg
IGpRdWVyeS5yZW1vdmVFdmVudCggZGVzdCwgZSwgZGF0YS5oYW5kbGUgKTsKLSAgICB9Ci0KLSAg
ICAvLyBFdmVudCBkYXRhIGdldHMgcmVmZXJlbmNlZCBpbnN0ZWFkIG9mIGNvcGllZCBpZiB0aGUg
ZXhwYW5kbyBnZXRzIGNvcGllZCB0b28KLSAgICBkZXN0LnJlbW92ZUF0dHJpYnV0ZSggalF1ZXJ5
LmV4cGFuZG8gKTsKLSAgICB9Ci0KLSAgICAvLyBJRSBibGFua3MgY29udGVudHMgd2hlbiBjbG9u
aW5nIHNjcmlwdHMsIGFuZCB0cmllcyB0byBldmFsdWF0ZSBuZXdseS1zZXQgdGV4dAotICAgIGlm
ICggbm9kZU5hbWUgPT09ICJzY3JpcHQiICYmIGRlc3QudGV4dCAhPT0gc3JjLnRleHQgKSB7Ci0g
ICAgZGlzYWJsZVNjcmlwdCggZGVzdCApLnRleHQgPSBzcmMudGV4dDsKLSAgICByZXN0b3JlU2Ny
aXB0KCBkZXN0ICk7Ci0KLSAgICAvLyBJRTYtMTAgaW1wcm9wZXJseSBjbG9uZXMgY2hpbGRyZW4g
b2Ygb2JqZWN0IGVsZW1lbnRzIHVzaW5nIGNsYXNzaWQuCi0gICAgLy8gSUUxMCB0aHJvd3MgTm9N
b2RpZmljYXRpb25BbGxvd2VkRXJyb3IgaWYgcGFyZW50IGlzIG51bGwsICMxMjEzMi4KLSAgICB9
IGVsc2UgaWYgKCBub2RlTmFtZSA9PT0gIm9iamVjdCIgKSB7Ci0gICAgaWYgKCBkZXN0LnBhcmVu
dE5vZGUgKSB7Ci0gICAgZGVzdC5vdXRlckhUTUwgPSBzcmMub3V0ZXJIVE1MOwotICAgIH0KLQot
ICAgIC8vIFRoaXMgcGF0aCBhcHBlYXJzIHVuYXZvaWRhYmxlIGZvciBJRTkuIFdoZW4gY2xvbmlu
ZyBhbiBvYmplY3QKLSAgICAvLyBlbGVtZW50IGluIElFOSwgdGhlIG91dGVySFRNTCBzdHJhdGVn
eSBhYm92ZSBpcyBub3Qgc3VmZmljaWVudC4KLSAgICAvLyBJZiB0aGUgc3JjIGhhcyBpbm5lckhU
TUwgYW5kIHRoZSBkZXN0aW5hdGlvbiBkb2VzIG5vdCwKLSAgICAvLyBjb3B5IHRoZSBzcmMuaW5u
ZXJIVE1MIGludG8gdGhlIGRlc3QuaW5uZXJIVE1MLiAjMTAzMjQKLSAgICBpZiAoIGpRdWVyeS5z
dXBwb3J0Lmh0bWw1Q2xvbmUgJiYgKCBzcmMuaW5uZXJIVE1MICYmICFqUXVlcnkudHJpbShkZXN0
LmlubmVySFRNTCkgKSApIHsKLSAgICBkZXN0LmlubmVySFRNTCA9IHNyYy5pbm5lckhUTUw7Ci0g
ICAgfQotCi0gICAgfSBlbHNlIGlmICggbm9kZU5hbWUgPT09ICJpbnB1dCIgJiYgbWFuaXB1bGF0
aW9uX3JjaGVja2FibGVUeXBlLnRlc3QoIHNyYy50eXBlICkgKSB7Ci0gICAgLy8gSUU2LTggZmFp
bHMgdG8gcGVyc2lzdCB0aGUgY2hlY2tlZCBzdGF0ZSBvZiBhIGNsb25lZCBjaGVja2JveAotICAg
IC8vIG9yIHJhZGlvIGJ1dHRvbi4gV29yc2UsIElFNi03IGZhaWwgdG8gZ2l2ZSB0aGUgY2xvbmVk
IGVsZW1lbnQKLSAgICAvLyBhIGNoZWNrZWQgYXBwZWFyYW5jZSBpZiB0aGUgZGVmYXVsdENoZWNr
ZWQgdmFsdWUgaXNuJ3QgYWxzbyBzZXQKLQotICAgIGRlc3QuZGVmYXVsdENoZWNrZWQgPSBkZXN0
LmNoZWNrZWQgPSBzcmMuY2hlY2tlZDsKLQotICAgIC8vIElFNi03IGdldCBjb25mdXNlZCBhbmQg
ZW5kIHVwIHNldHRpbmcgdGhlIHZhbHVlIG9mIGEgY2xvbmVkCi0gICAgLy8gY2hlY2tib3gvcmFk
aW8gYnV0dG9uIHRvIGFuIGVtcHR5IHN0cmluZyBpbnN0ZWFkIG9mICJvbiIKLSAgICBpZiAoIGRl
c3QudmFsdWUgIT09IHNyYy52YWx1ZSApIHsKLSAgICBkZXN0LnZhbHVlID0gc3JjLnZhbHVlOwot
ICAgIH0KLQotICAgIC8vIElFNi04IGZhaWxzIHRvIHJldHVybiB0aGUgc2VsZWN0ZWQgb3B0aW9u
IHRvIHRoZSBkZWZhdWx0IHNlbGVjdGVkCi0gICAgLy8gc3RhdGUgd2hlbiBjbG9uaW5nIG9wdGlv
bnMKLSAgICB9IGVsc2UgaWYgKCBub2RlTmFtZSA9PT0gIm9wdGlvbiIgKSB7Ci0gICAgZGVzdC5k
ZWZhdWx0U2VsZWN0ZWQgPSBkZXN0LnNlbGVjdGVkID0gc3JjLmRlZmF1bHRTZWxlY3RlZDsKLQot
ICAgIC8vIElFNi04IGZhaWxzIHRvIHNldCB0aGUgZGVmYXVsdFZhbHVlIHRvIHRoZSBjb3JyZWN0
IHZhbHVlIHdoZW4KLSAgICAvLyBjbG9uaW5nIG90aGVyIHR5cGVzIG9mIGlucHV0IGZpZWxkcwot
ICAgIH0gZWxzZSBpZiAoIG5vZGVOYW1lID09PSAiaW5wdXQiIHx8IG5vZGVOYW1lID09PSAidGV4
dGFyZWEiICkgewotICAgIGRlc3QuZGVmYXVsdFZhbHVlID0gc3JjLmRlZmF1bHRWYWx1ZTsKLSAg
ICB9Ci19Ci0KLWpRdWVyeS5lYWNoKHsKLSAgICBhcHBlbmRUbzogImFwcGVuZCIsCi0gICAgcHJl
cGVuZFRvOiAicHJlcGVuZCIsCi0gICAgaW5zZXJ0QmVmb3JlOiAiYmVmb3JlIiwKLSAgICBpbnNl
cnRBZnRlcjogImFmdGVyIiwKLSAgICByZXBsYWNlQWxsOiAicmVwbGFjZVdpdGgiCi19LCBmdW5j
dGlvbiggbmFtZSwgb3JpZ2luYWwgKSB7Ci0gICAgalF1ZXJ5LmZuWyBuYW1lIF0gPSBmdW5jdGlv
biggc2VsZWN0b3IgKSB7Ci0gICAgdmFyIGVsZW1zLAotICAgIGkgPSAwLAotICAgIHJldCA9IFtd
LAotICAgIGluc2VydCA9IGpRdWVyeSggc2VsZWN0b3IgKSwKLSAgICBsYXN0ID0gaW5zZXJ0Lmxl
bmd0aCAtIDE7Ci0KLSAgICBmb3IgKCA7IGkgPD0gbGFzdDsgaSsrICkgewotICAgIGVsZW1zID0g
aSA9PT0gbGFzdCA/IHRoaXMgOiB0aGlzLmNsb25lKHRydWUpOwotICAgIGpRdWVyeSggaW5zZXJ0
W2ldIClbIG9yaWdpbmFsIF0oIGVsZW1zICk7Ci0KLSAgICAvLyBNb2Rlcm4gYnJvd3NlcnMgY2Fu
IGFwcGx5IGpRdWVyeSBjb2xsZWN0aW9ucyBhcyBhcnJheXMsIGJ1dCBvbGRJRSBuZWVkcyBhIC5n
ZXQoKQotICAgIGNvcmVfcHVzaC5hcHBseSggcmV0LCBlbGVtcy5nZXQoKSApOwotICAgIH0KLQot
ICAgIHJldHVybiB0aGlzLnB1c2hTdGFjayggcmV0ICk7Ci0gICAgfTsKLX0pOwotCi1mdW5jdGlv
biBnZXRBbGwoIGNvbnRleHQsIHRhZyApIHsKLSAgICB2YXIgZWxlbXMsIGVsZW0sCi0gICAgaSA9
IDAsCi0gICAgZm91bmQgPSB0eXBlb2YgY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSAhPT0g
Y29yZV9zdHJ1bmRlZmluZWQgPyBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lKCB0YWcgfHwg
IioiICkgOgotICAgIHR5cGVvZiBjb250ZXh0LnF1ZXJ5U2VsZWN0b3JBbGwgIT09IGNvcmVfc3Ry
dW5kZWZpbmVkID8gY29udGV4dC5xdWVyeVNlbGVjdG9yQWxsKCB0YWcgfHwgIioiICkgOgotICAg
IHVuZGVmaW5lZDsKLQotICAgIGlmICggIWZvdW5kICkgewotICAgIGZvciAoIGZvdW5kID0gW10s
IGVsZW1zID0gY29udGV4dC5jaGlsZE5vZGVzIHx8IGNvbnRleHQ7IChlbGVtID0gZWxlbXNbaV0p
ICE9IG51bGw7IGkrKyApIHsKLSAgICBpZiAoICF0YWcgfHwgalF1ZXJ5Lm5vZGVOYW1lKCBlbGVt
LCB0YWcgKSApIHsKLSAgICBmb3VuZC5wdXNoKCBlbGVtICk7Ci0gICAgfSBlbHNlIHsKLSAgICBq
UXVlcnkubWVyZ2UoIGZvdW5kLCBnZXRBbGwoIGVsZW0sIHRhZyApICk7Ci0gICAgfQotICAgIH0K
LSAgICB9Ci0KLSAgICByZXR1cm4gdGFnID09PSB1bmRlZmluZWQgfHwgdGFnICYmIGpRdWVyeS5u
b2RlTmFtZSggY29udGV4dCwgdGFnICkgPwotICAgIGpRdWVyeS5tZXJnZSggWyBjb250ZXh0IF0s
IGZvdW5kICkgOgotICAgIGZvdW5kOwotfQotCi0vLyBVc2VkIGluIGJ1aWxkRnJhZ21lbnQsIGZp
eGVzIHRoZSBkZWZhdWx0Q2hlY2tlZCBwcm9wZXJ0eQotZnVuY3Rpb24gZml4RGVmYXVsdENoZWNr
ZWQoIGVsZW0gKSB7Ci0gICAgaWYgKCBtYW5pcHVsYXRpb25fcmNoZWNrYWJsZVR5cGUudGVzdCgg
ZWxlbS50eXBlICkgKSB7Ci0gICAgZWxlbS5kZWZhdWx0Q2hlY2tlZCA9IGVsZW0uY2hlY2tlZDsK
LSAgICB9Ci19Ci0KLWpRdWVyeS5leHRlbmQoewotICAgIGNsb25lOiBmdW5jdGlvbiggZWxlbSwg
ZGF0YUFuZEV2ZW50cywgZGVlcERhdGFBbmRFdmVudHMgKSB7Ci0gICAgdmFyIGRlc3RFbGVtZW50
cywgbm9kZSwgY2xvbmUsIGksIHNyY0VsZW1lbnRzLAotICAgIGluUGFnZSA9IGpRdWVyeS5jb250
YWlucyggZWxlbS5vd25lckRvY3VtZW50LCBlbGVtICk7Ci0KLSAgICBpZiAoIGpRdWVyeS5zdXBw
b3J0Lmh0bWw1Q2xvbmUgfHwgalF1ZXJ5LmlzWE1MRG9jKGVsZW0pIHx8ICFybm9zaGltY2FjaGUu
dGVzdCggIjwiICsgZWxlbS5ub2RlTmFtZSArICI+IiApICkgewotICAgIGNsb25lID0gZWxlbS5j
bG9uZU5vZGUoIHRydWUgKTsKLQotICAgIC8vIElFPD04IGRvZXMgbm90IHByb3Blcmx5IGNsb25l
IGRldGFjaGVkLCB1bmtub3duIGVsZW1lbnQgbm9kZXMKLSAgICB9IGVsc2UgewotICAgIGZyYWdt
ZW50RGl2LmlubmVySFRNTCA9IGVsZW0ub3V0ZXJIVE1MOwotICAgIGZyYWdtZW50RGl2LnJlbW92
ZUNoaWxkKCBjbG9uZSA9IGZyYWdtZW50RGl2LmZpcnN0Q2hpbGQgKTsKLSAgICB9Ci0KLSAgICBp
ZiAoICghalF1ZXJ5LnN1cHBvcnQubm9DbG9uZUV2ZW50IHx8ICFqUXVlcnkuc3VwcG9ydC5ub0Ns
b25lQ2hlY2tlZCkgJiYKLSAgICAoZWxlbS5ub2RlVHlwZSA9PT0gMSB8fCBlbGVtLm5vZGVUeXBl
ID09PSAxMSkgJiYgIWpRdWVyeS5pc1hNTERvYyhlbGVtKSApIHsKLQotICAgIC8vIFdlIGVzY2hl
dyBTaXp6bGUgaGVyZSBmb3IgcGVyZm9ybWFuY2UgcmVhc29uczogaHR0cDovL2pzcGVyZi5jb20v
Z2V0YWxsLXZzLXNpenpsZS8yCi0gICAgZGVzdEVsZW1lbnRzID0gZ2V0QWxsKCBjbG9uZSApOwot
ICAgIHNyY0VsZW1lbnRzID0gZ2V0QWxsKCBlbGVtICk7Ci0KLSAgICAvLyBGaXggYWxsIElFIGNs
b25pbmcgaXNzdWVzCi0gICAgZm9yICggaSA9IDA7IChub2RlID0gc3JjRWxlbWVudHNbaV0pICE9
IG51bGw7ICsraSApIHsKLSAgICAvLyBFbnN1cmUgdGhhdCB0aGUgZGVzdGluYXRpb24gbm9kZSBp
cyBub3QgbnVsbDsgRml4ZXMgIzk1ODcKLSAgICBpZiAoIGRlc3RFbGVtZW50c1tpXSApIHsKLSAg
ICBmaXhDbG9uZU5vZGVJc3N1ZXMoIG5vZGUsIGRlc3RFbGVtZW50c1tpXSApOwotICAgIH0KLSAg
ICB9Ci0gICAgfQotCi0gICAgLy8gQ29weSB0aGUgZXZlbnRzIGZyb20gdGhlIG9yaWdpbmFsIHRv
IHRoZSBjbG9uZQotICAgIGlmICggZGF0YUFuZEV2ZW50cyApIHsKLSAgICBpZiAoIGRlZXBEYXRh
QW5kRXZlbnRzICkgewotICAgIHNyY0VsZW1lbnRzID0gc3JjRWxlbWVudHMgfHwgZ2V0QWxsKCBl
bGVtICk7Ci0gICAgZGVzdEVsZW1lbnRzID0gZGVzdEVsZW1lbnRzIHx8IGdldEFsbCggY2xvbmUg
KTsKLQotICAgIGZvciAoIGkgPSAwOyAobm9kZSA9IHNyY0VsZW1lbnRzW2ldKSAhPSBudWxsOyBp
KysgKSB7Ci0gICAgY2xvbmVDb3B5RXZlbnQoIG5vZGUsIGRlc3RFbGVtZW50c1tpXSApOwotICAg
IH0KLSAgICB9IGVsc2UgewotICAgIGNsb25lQ29weUV2ZW50KCBlbGVtLCBjbG9uZSApOwotICAg
IH0KLSAgICB9Ci0KLSAgICAvLyBQcmVzZXJ2ZSBzY3JpcHQgZXZhbHVhdGlvbiBoaXN0b3J5Ci0g
ICAgZGVzdEVsZW1lbnRzID0gZ2V0QWxsKCBjbG9uZSwgInNjcmlwdCIgKTsKLSAgICBpZiAoIGRl
c3RFbGVtZW50cy5sZW5ndGggPiAwICkgewotICAgIHNldEdsb2JhbEV2YWwoIGRlc3RFbGVtZW50
cywgIWluUGFnZSAmJiBnZXRBbGwoIGVsZW0sICJzY3JpcHQiICkgKTsKLSAgICB9Ci0KLSAgICBk
ZXN0RWxlbWVudHMgPSBzcmNFbGVtZW50cyA9IG5vZGUgPSBudWxsOwotCi0gICAgLy8gUmV0dXJu
IHRoZSBjbG9uZWQgc2V0Ci0gICAgcmV0dXJuIGNsb25lOwotICAgIH0sCi0KLSAgICBidWlsZEZy
YWdtZW50OiBmdW5jdGlvbiggZWxlbXMsIGNvbnRleHQsIHNjcmlwdHMsIHNlbGVjdGlvbiApIHsK
LSAgICB2YXIgaiwgZWxlbSwgY29udGFpbnMsCi0gICAgdG1wLCB0YWcsIHRib2R5LCB3cmFwLAot
ICAgIGwgPSBlbGVtcy5sZW5ndGgsCi0KLSAgICAvLyBFbnN1cmUgYSBzYWZlIGZyYWdtZW50Ci0g
ICAgc2FmZSA9IGNyZWF0ZVNhZmVGcmFnbWVudCggY29udGV4dCApLAotCi0gICAgbm9kZXMgPSBb
XSwKLSAgICBpID0gMDsKLQotICAgIGZvciAoIDsgaSA8IGw7IGkrKyApIHsKLSAgICBlbGVtID0g
ZWxlbXNbIGkgXTsKLQotICAgIGlmICggZWxlbSB8fCBlbGVtID09PSAwICkgewotCi0gICAgLy8g
QWRkIG5vZGVzIGRpcmVjdGx5Ci0gICAgaWYgKCBqUXVlcnkudHlwZSggZWxlbSApID09PSAib2Jq
ZWN0IiApIHsKLSAgICBqUXVlcnkubWVyZ2UoIG5vZGVzLCBlbGVtLm5vZGVUeXBlID8gWyBlbGVt
IF0gOiBlbGVtICk7Ci0KLSAgICAvLyBDb252ZXJ0IG5vbi1odG1sIGludG8gYSB0ZXh0IG5vZGUK
LSAgICB9IGVsc2UgaWYgKCAhcmh0bWwudGVzdCggZWxlbSApICkgewotICAgIG5vZGVzLnB1c2go
IGNvbnRleHQuY3JlYXRlVGV4dE5vZGUoIGVsZW0gKSApOwotCi0gICAgLy8gQ29udmVydCBodG1s
IGludG8gRE9NIG5vZGVzCi0gICAgfSBlbHNlIHsKLSAgICB0bXAgPSB0bXAgfHwgc2FmZS5hcHBl
bmRDaGlsZCggY29udGV4dC5jcmVhdGVFbGVtZW50KCJkaXYiKSApOwotCi0gICAgLy8gRGVzZXJp
YWxpemUgYSBzdGFuZGFyZCByZXByZXNlbnRhdGlvbgotICAgIHRhZyA9ICggcnRhZ05hbWUuZXhl
YyggZWxlbSApIHx8IFsiIiwgIiJdIClbMV0udG9Mb3dlckNhc2UoKTsKLSAgICB3cmFwID0gd3Jh
cE1hcFsgdGFnIF0gfHwgd3JhcE1hcC5fZGVmYXVsdDsKLQotICAgIHRtcC5pbm5lckhUTUwgPSB3
cmFwWzFdICsgZWxlbS5yZXBsYWNlKCByeGh0bWxUYWcsICI8JDE+PC8kMj4iICkgKyB3cmFwWzJd
OwotCi0gICAgLy8gRGVzY2VuZCB0aHJvdWdoIHdyYXBwZXJzIHRvIHRoZSByaWdodCBjb250ZW50
Ci0gICAgaiA9IHdyYXBbMF07Ci0gICAgd2hpbGUgKCBqLS0gKSB7Ci0gICAgdG1wID0gdG1wLmxh
c3RDaGlsZDsKLSAgICB9Ci0KLSAgICAvLyBNYW51YWxseSBhZGQgbGVhZGluZyB3aGl0ZXNwYWNl
IHJlbW92ZWQgYnkgSUUKLSAgICBpZiAoICFqUXVlcnkuc3VwcG9ydC5sZWFkaW5nV2hpdGVzcGFj
ZSAmJiBybGVhZGluZ1doaXRlc3BhY2UudGVzdCggZWxlbSApICkgewotICAgIG5vZGVzLnB1c2go
IGNvbnRleHQuY3JlYXRlVGV4dE5vZGUoIHJsZWFkaW5nV2hpdGVzcGFjZS5leGVjKCBlbGVtIClb
MF0gKSApOwotICAgIH0KLQotICAgIC8vIFJlbW92ZSBJRSdzIGF1dG9pbnNlcnRlZCA8dGJvZHk+
IGZyb20gdGFibGUgZnJhZ21lbnRzCi0gICAgaWYgKCAhalF1ZXJ5LnN1cHBvcnQudGJvZHkgKSB7
Ci0KLSAgICAvLyBTdHJpbmcgd2FzIGEgPHRhYmxlPiwgKm1heSogaGF2ZSBzcHVyaW91cyA8dGJv
ZHk+Ci0gICAgZWxlbSA9IHRhZyA9PT0gInRhYmxlIiAmJiAhcnRib2R5LnRlc3QoIGVsZW0gKSA/
Ci0gICAgdG1wLmZpcnN0Q2hpbGQgOgotCi0gICAgLy8gU3RyaW5nIHdhcyBhIGJhcmUgPHRoZWFk
PiBvciA8dGZvb3Q+Ci0gICAgd3JhcFsxXSA9PT0gIjx0YWJsZT4iICYmICFydGJvZHkudGVzdCgg
ZWxlbSApID8KLSAgICB0bXAgOgotICAgIDA7Ci0KLSAgICBqID0gZWxlbSAmJiBlbGVtLmNoaWxk
Tm9kZXMubGVuZ3RoOwotICAgIHdoaWxlICggai0tICkgewotICAgIGlmICggalF1ZXJ5Lm5vZGVO
YW1lKCAodGJvZHkgPSBlbGVtLmNoaWxkTm9kZXNbal0pLCAidGJvZHkiICkgJiYgIXRib2R5LmNo
aWxkTm9kZXMubGVuZ3RoICkgewotICAgIGVsZW0ucmVtb3ZlQ2hpbGQoIHRib2R5ICk7Ci0gICAg
fQotICAgIH0KLSAgICB9Ci0KLSAgICBqUXVlcnkubWVyZ2UoIG5vZGVzLCB0bXAuY2hpbGROb2Rl
cyApOwotCi0gICAgLy8gRml4ICMxMjM5MiBmb3IgV2ViS2l0IGFuZCBJRSA+IDkKLSAgICB0bXAu
dGV4dENvbnRlbnQgPSAiIjsKLQotICAgIC8vIEZpeCAjMTIzOTIgZm9yIG9sZElFCi0gICAgd2hp
bGUgKCB0bXAuZmlyc3RDaGlsZCApIHsKLSAgICB0bXAucmVtb3ZlQ2hpbGQoIHRtcC5maXJzdENo
aWxkICk7Ci0gICAgfQotCi0gICAgLy8gUmVtZW1iZXIgdGhlIHRvcC1sZXZlbCBjb250YWluZXIg
Zm9yIHByb3BlciBjbGVhbnVwCi0gICAgdG1wID0gc2FmZS5sYXN0Q2hpbGQ7Ci0gICAgfQotICAg
IH0KLSAgICB9Ci0KLSAgICAvLyBGaXggIzExMzU2OiBDbGVhciBlbGVtZW50cyBmcm9tIGZyYWdt
ZW50Ci0gICAgaWYgKCB0bXAgKSB7Ci0gICAgc2FmZS5yZW1vdmVDaGlsZCggdG1wICk7Ci0gICAg
fQotCi0gICAgLy8gUmVzZXQgZGVmYXVsdENoZWNrZWQgZm9yIGFueSByYWRpb3MgYW5kIGNoZWNr
Ym94ZXMKLSAgICAvLyBhYm91dCB0byBiZSBhcHBlbmRlZCB0byB0aGUgRE9NIGluIElFIDYvNyAo
IzgwNjApCi0gICAgaWYgKCAhalF1ZXJ5LnN1cHBvcnQuYXBwZW5kQ2hlY2tlZCApIHsKLSAgICBq
UXVlcnkuZ3JlcCggZ2V0QWxsKCBub2RlcywgImlucHV0IiApLCBmaXhEZWZhdWx0Q2hlY2tlZCAp
OwotICAgIH0KLQotICAgIGkgPSAwOwotICAgIHdoaWxlICggKGVsZW0gPSBub2Rlc1sgaSsrIF0p
ICkgewotCi0gICAgLy8gIzQwODcgLSBJZiBvcmlnaW4gYW5kIGRlc3RpbmF0aW9uIGVsZW1lbnRz
IGFyZSB0aGUgc2FtZSwgYW5kIHRoaXMgaXMKLSAgICAvLyB0aGF0IGVsZW1lbnQsIGRvIG5vdCBk
byBhbnl0aGluZwotICAgIGlmICggc2VsZWN0aW9uICYmIGpRdWVyeS5pbkFycmF5KCBlbGVtLCBz
ZWxlY3Rpb24gKSAhPT0gLTEgKSB7Ci0gICAgY29udGludWU7Ci0gICAgfQotCi0gICAgY29udGFp
bnMgPSBqUXVlcnkuY29udGFpbnMoIGVsZW0ub3duZXJEb2N1bWVudCwgZWxlbSApOwotCi0gICAg
Ly8gQXBwZW5kIHRvIGZyYWdtZW50Ci0gICAgdG1wID0gZ2V0QWxsKCBzYWZlLmFwcGVuZENoaWxk
KCBlbGVtICksICJzY3JpcHQiICk7Ci0KLSAgICAvLyBQcmVzZXJ2ZSBzY3JpcHQgZXZhbHVhdGlv
biBoaXN0b3J5Ci0gICAgaWYgKCBjb250YWlucyApIHsKLSAgICBzZXRHbG9iYWxFdmFsKCB0bXAg
KTsKLSAgICB9Ci0KLSAgICAvLyBDYXB0dXJlIGV4ZWN1dGFibGVzCi0gICAgaWYgKCBzY3JpcHRz
ICkgewotICAgIGogPSAwOwotICAgIHdoaWxlICggKGVsZW0gPSB0bXBbIGorKyBdKSApIHsKLSAg
ICBpZiAoIHJzY3JpcHRUeXBlLnRlc3QoIGVsZW0udHlwZSB8fCAiIiApICkgewotICAgIHNjcmlw
dHMucHVzaCggZWxlbSApOwotICAgIH0KLSAgICB9Ci0gICAgfQotICAgIH0KLQotICAgIHRtcCA9
IG51bGw7Ci0KLSAgICByZXR1cm4gc2FmZTsKLSAgICB9LAotCi0gICAgY2xlYW5EYXRhOiBmdW5j
dGlvbiggZWxlbXMsIC8qIGludGVybmFsICovIGFjY2VwdERhdGEgKSB7Ci0gICAgdmFyIGVsZW0s
IHR5cGUsIGlkLCBkYXRhLAotICAgIGkgPSAwLAotICAgIGludGVybmFsS2V5ID0galF1ZXJ5LmV4
cGFuZG8sCi0gICAgY2FjaGUgPSBqUXVlcnkuY2FjaGUsCi0gICAgZGVsZXRlRXhwYW5kbyA9IGpR
dWVyeS5zdXBwb3J0LmRlbGV0ZUV4cGFuZG8sCi0gICAgc3BlY2lhbCA9IGpRdWVyeS5ldmVudC5z
cGVjaWFsOwotCi0gICAgZm9yICggOyAoZWxlbSA9IGVsZW1zW2ldKSAhPSBudWxsOyBpKysgKSB7
Ci0KLSAgICBpZiAoIGFjY2VwdERhdGEgfHwgalF1ZXJ5LmFjY2VwdERhdGEoIGVsZW0gKSApIHsK
LQotICAgIGlkID0gZWxlbVsgaW50ZXJuYWxLZXkgXTsKLSAgICBkYXRhID0gaWQgJiYgY2FjaGVb
IGlkIF07Ci0KLSAgICBpZiAoIGRhdGEgKSB7Ci0gICAgaWYgKCBkYXRhLmV2ZW50cyApIHsKLSAg
ICBmb3IgKCB0eXBlIGluIGRhdGEuZXZlbnRzICkgewotICAgIGlmICggc3BlY2lhbFsgdHlwZSBd
ICkgewotICAgIGpRdWVyeS5ldmVudC5yZW1vdmUoIGVsZW0sIHR5cGUgKTsKLQotICAgIC8vIFRo
aXMgaXMgYSBzaG9ydGN1dCB0byBhdm9pZCBqUXVlcnkuZXZlbnQucmVtb3ZlJ3Mgb3ZlcmhlYWQK
LSAgICB9IGVsc2UgewotICAgIGpRdWVyeS5yZW1vdmVFdmVudCggZWxlbSwgdHlwZSwgZGF0YS5o
YW5kbGUgKTsKLSAgICB9Ci0gICAgfQotICAgIH0KLQotICAgIC8vIFJlbW92ZSBjYWNoZSBvbmx5
IGlmIGl0IHdhcyBub3QgYWxyZWFkeSByZW1vdmVkIGJ5IGpRdWVyeS5ldmVudC5yZW1vdmUKLSAg
ICBpZiAoIGNhY2hlWyBpZCBdICkgewotCi0gICAgZGVsZXRlIGNhY2hlWyBpZCBdOwotCi0gICAg
Ly8gSUUgZG9lcyBub3QgYWxsb3cgdXMgdG8gZGVsZXRlIGV4cGFuZG8gcHJvcGVydGllcyBmcm9t
IG5vZGVzLAotICAgIC8vIG5vciBkb2VzIGl0IGhhdmUgYSByZW1vdmVBdHRyaWJ1dGUgZnVuY3Rp
b24gb24gRG9jdW1lbnQgbm9kZXM7Ci0gICAgLy8gd2UgbXVzdCBoYW5kbGUgYWxsIG9mIHRoZXNl
IGNhc2VzCi0gICAgaWYgKCBkZWxldGVFeHBhbmRvICkgewotICAgIGRlbGV0ZSBlbGVtWyBpbnRl
cm5hbEtleSBdOwotCi0gICAgfSBlbHNlIGlmICggdHlwZW9mIGVsZW0ucmVtb3ZlQXR0cmlidXRl
ICE9PSBjb3JlX3N0cnVuZGVmaW5lZCApIHsKLSAgICBlbGVtLnJlbW92ZUF0dHJpYnV0ZSggaW50
ZXJuYWxLZXkgKTsKLQotICAgIH0gZWxzZSB7Ci0gICAgZWxlbVsgaW50ZXJuYWxLZXkgXSA9IG51
bGw7Ci0gICAgfQotCi0gICAgY29yZV9kZWxldGVkSWRzLnB1c2goIGlkICk7Ci0gICAgfQotICAg
IH0KLSAgICB9Ci0gICAgfQotICAgIH0KLX0pOwotdmFyIGlmcmFtZSwgZ2V0U3R5bGVzLCBjdXJD
U1MsCi0gICAgcmFscGhhID0gL2FscGhhXChbXildKlwpL2ksCi0gICAgcm9wYWNpdHkgPSAvb3Bh
Y2l0eVxzKj1ccyooW14pXSopLywKLSAgICBycG9zaXRpb24gPSAvXih0b3B8cmlnaHR8Ym90dG9t
fGxlZnQpJC8sCi0gICAgLy8gc3dhcHBhYmxlIGlmIGRpc3BsYXkgaXMgbm9uZSBvciBzdGFydHMg
d2l0aCB0YWJsZSBleGNlcHQgInRhYmxlIiwgInRhYmxlLWNlbGwiLCBvciAidGFibGUtY2FwdGlv
biIKLSAgICAvLyBzZWUgaGVyZSBmb3IgZGlzcGxheSB2YWx1ZXM6IGh0dHBzOi8vZGV2ZWxvcGVy
Lm1vemlsbGEub3JnL2VuLVVTL2RvY3MvQ1NTL2Rpc3BsYXkKLSAgICByZGlzcGxheXN3YXAgPSAv
Xihub25lfHRhYmxlKD8hLWNbZWFdKS4rKS8sCi0gICAgcm1hcmdpbiA9IC9ebWFyZ2luLywKLSAg
ICBybnVtc3BsaXQgPSBuZXcgUmVnRXhwKCAiXigiICsgY29yZV9wbnVtICsgIikoLiopJCIsICJp
IiApLAotICAgIHJudW1ub25weCA9IG5ldyBSZWdFeHAoICJeKCIgKyBjb3JlX3BudW0gKyAiKSg/
IXB4KVthLXolXSskIiwgImkiICksCi0gICAgcnJlbE51bSA9IG5ldyBSZWdFeHAoICJeKFsrLV0p
PSgiICsgY29yZV9wbnVtICsgIikiLCAiaSIgKSwKLSAgICBlbGVtZGlzcGxheSA9IHsgQk9EWTog
ImJsb2NrIiB9LAotCi0gICAgY3NzU2hvdyA9IHsgcG9zaXRpb246ICJhYnNvbHV0ZSIsIHZpc2li
aWxpdHk6ICJoaWRkZW4iLCBkaXNwbGF5OiAiYmxvY2siIH0sCi0gICAgY3NzTm9ybWFsVHJhbnNm
b3JtID0gewotICAgIGxldHRlclNwYWNpbmc6IDAsCi0gICAgZm9udFdlaWdodDogNDAwCi0gICAg
fSwKLQotICAgIGNzc0V4cGFuZCA9IFsgIlRvcCIsICJSaWdodCIsICJCb3R0b20iLCAiTGVmdCIg
XSwKLSAgICBjc3NQcmVmaXhlcyA9IFsgIldlYmtpdCIsICJPIiwgIk1veiIsICJtcyIgXTsKLQot
Ly8gcmV0dXJuIGEgY3NzIHByb3BlcnR5IG1hcHBlZCB0byBhIHBvdGVudGlhbGx5IHZlbmRvciBw
cmVmaXhlZCBwcm9wZXJ0eQotZnVuY3Rpb24gdmVuZG9yUHJvcE5hbWUoIHN0eWxlLCBuYW1lICkg
ewotCi0gICAgLy8gc2hvcnRjdXQgZm9yIG5hbWVzIHRoYXQgYXJlIG5vdCB2ZW5kb3IgcHJlZml4
ZWQKLSAgICBpZiAoIG5hbWUgaW4gc3R5bGUgKSB7Ci0gICAgcmV0dXJuIG5hbWU7Ci0gICAgfQot
Ci0gICAgLy8gY2hlY2sgZm9yIHZlbmRvciBwcmVmaXhlZCBuYW1lcwotICAgIHZhciBjYXBOYW1l
ID0gbmFtZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIG5hbWUuc2xpY2UoMSksCi0gICAgb3Jp
Z05hbWUgPSBuYW1lLAotICAgIGkgPSBjc3NQcmVmaXhlcy5sZW5ndGg7Ci0KLSAgICB3aGlsZSAo
IGktLSApIHsKLSAgICBuYW1lID0gY3NzUHJlZml4ZXNbIGkgXSArIGNhcE5hbWU7Ci0gICAgaWYg
KCBuYW1lIGluIHN0eWxlICkgewotICAgIHJldHVybiBuYW1lOwotICAgIH0KLSAgICB9Ci0KLSAg
ICByZXR1cm4gb3JpZ05hbWU7Ci19Ci0KLWZ1bmN0aW9uIGlzSGlkZGVuKCBlbGVtLCBlbCApIHsK
LSAgICAvLyBpc0hpZGRlbiBtaWdodCBiZSBjYWxsZWQgZnJvbSBqUXVlcnkjZmlsdGVyIGZ1bmN0
aW9uOwotICAgIC8vIGluIHRoYXQgY2FzZSwgZWxlbWVudCB3aWxsIGJlIHNlY29uZCBhcmd1bWVu
dAotICAgIGVsZW0gPSBlbCB8fCBlbGVtOwotICAgIHJldHVybiBqUXVlcnkuY3NzKCBlbGVtLCAi
ZGlzcGxheSIgKSA9PT0gIm5vbmUiIHx8ICFqUXVlcnkuY29udGFpbnMoIGVsZW0ub3duZXJEb2N1
bWVudCwgZWxlbSApOwotfQotCi1mdW5jdGlvbiBzaG93SGlkZSggZWxlbWVudHMsIHNob3cgKSB7
Ci0gICAgdmFyIGRpc3BsYXksIGVsZW0sIGhpZGRlbiwKLSAgICB2YWx1ZXMgPSBbXSwKLSAgICBp
bmRleCA9IDAsCi0gICAgbGVuZ3RoID0gZWxlbWVudHMubGVuZ3RoOwotCi0gICAgZm9yICggOyBp
bmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHsKLSAgICBlbGVtID0gZWxlbWVudHNbIGluZGV4IF07
Ci0gICAgaWYgKCAhZWxlbS5zdHlsZSApIHsKLSAgICBjb250aW51ZTsKLSAgICB9Ci0KLSAgICB2
YWx1ZXNbIGluZGV4IF0gPSBqUXVlcnkuX2RhdGEoIGVsZW0sICJvbGRkaXNwbGF5IiApOwotICAg
IGRpc3BsYXkgPSBlbGVtLnN0eWxlLmRpc3BsYXk7Ci0gICAgaWYgKCBzaG93ICkgewotICAgIC8v
IFJlc2V0IHRoZSBpbmxpbmUgZGlzcGxheSBvZiB0aGlzIGVsZW1lbnQgdG8gbGVhcm4gaWYgaXQg
aXMKLSAgICAvLyBiZWluZyBoaWRkZW4gYnkgY2FzY2FkZWQgcnVsZXMgb3Igbm90Ci0gICAgaWYg
KCAhdmFsdWVzWyBpbmRleCBdICYmIGRpc3BsYXkgPT09ICJub25lIiApIHsKLSAgICBlbGVtLnN0
eWxlLmRpc3BsYXkgPSAiIjsKLSAgICB9Ci0KLSAgICAvLyBTZXQgZWxlbWVudHMgd2hpY2ggaGF2
ZSBiZWVuIG92ZXJyaWRkZW4gd2l0aCBkaXNwbGF5OiBub25lCi0gICAgLy8gaW4gYSBzdHlsZXNo
ZWV0IHRvIHdoYXRldmVyIHRoZSBkZWZhdWx0IGJyb3dzZXIgc3R5bGUgaXMKLSAgICAvLyBmb3Ig
c3VjaCBhbiBlbGVtZW50Ci0gICAgaWYgKCBlbGVtLnN0eWxlLmRpc3BsYXkgPT09ICIiICYmIGlz
SGlkZGVuKCBlbGVtICkgKSB7Ci0gICAgdmFsdWVzWyBpbmRleCBdID0galF1ZXJ5Ll9kYXRhKCBl
bGVtLCAib2xkZGlzcGxheSIsIGNzc19kZWZhdWx0RGlzcGxheShlbGVtLm5vZGVOYW1lKSApOwot
ICAgIH0KLSAgICB9IGVsc2UgewotCi0gICAgaWYgKCAhdmFsdWVzWyBpbmRleCBdICkgewotICAg
IGhpZGRlbiA9IGlzSGlkZGVuKCBlbGVtICk7Ci0KLSAgICBpZiAoIGRpc3BsYXkgJiYgZGlzcGxh
eSAhPT0gIm5vbmUiIHx8ICFoaWRkZW4gKSB7Ci0gICAgalF1ZXJ5Ll9kYXRhKCBlbGVtLCAib2xk
ZGlzcGxheSIsIGhpZGRlbiA/IGRpc3BsYXkgOiBqUXVlcnkuY3NzKCBlbGVtLCAiZGlzcGxheSIg
KSApOwotICAgIH0KLSAgICB9Ci0gICAgfQotICAgIH0KLQotICAgIC8vIFNldCB0aGUgZGlzcGxh
eSBvZiBtb3N0IG9mIHRoZSBlbGVtZW50cyBpbiBhIHNlY29uZCBsb29wCi0gICAgLy8gdG8gYXZv
aWQgdGhlIGNvbnN0YW50IHJlZmxvdwotICAgIGZvciAoIGluZGV4ID0gMDsgaW5kZXggPCBsZW5n
dGg7IGluZGV4KysgKSB7Ci0gICAgZWxlbSA9IGVsZW1lbnRzWyBpbmRleCBdOwotICAgIGlmICgg
IWVsZW0uc3R5bGUgKSB7Ci0gICAgY29udGludWU7Ci0gICAgfQotICAgIGlmICggIXNob3cgfHwg
ZWxlbS5zdHlsZS5kaXNwbGF5ID09PSAibm9uZSIgfHwgZWxlbS5zdHlsZS5kaXNwbGF5ID09PSAi
IiApIHsKLSAgICBlbGVtLnN0eWxlLmRpc3BsYXkgPSBzaG93ID8gdmFsdWVzWyBpbmRleCBdIHx8
ICIiIDogIm5vbmUiOwotICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gZWxlbWVudHM7Ci19Ci0K
LWpRdWVyeS5mbi5leHRlbmQoewotICAgIGNzczogZnVuY3Rpb24oIG5hbWUsIHZhbHVlICkgewot
ICAgIHJldHVybiBqUXVlcnkuYWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggZWxlbSwgbmFtZSwgdmFs
dWUgKSB7Ci0gICAgdmFyIGxlbiwgc3R5bGVzLAotICAgIG1hcCA9IHt9LAotICAgIGkgPSAwOwot
Ci0gICAgaWYgKCBqUXVlcnkuaXNBcnJheSggbmFtZSApICkgewotICAgIHN0eWxlcyA9IGdldFN0
eWxlcyggZWxlbSApOwotICAgIGxlbiA9IG5hbWUubGVuZ3RoOwotCi0gICAgZm9yICggOyBpIDwg
bGVuOyBpKysgKSB7Ci0gICAgbWFwWyBuYW1lWyBpIF0gXSA9IGpRdWVyeS5jc3MoIGVsZW0sIG5h
bWVbIGkgXSwgZmFsc2UsIHN0eWxlcyApOwotICAgIH0KLQotICAgIHJldHVybiBtYXA7Ci0gICAg
fQotCi0gICAgcmV0dXJuIHZhbHVlICE9PSB1bmRlZmluZWQgPwotICAgIGpRdWVyeS5zdHlsZSgg
ZWxlbSwgbmFtZSwgdmFsdWUgKSA6Ci0gICAgalF1ZXJ5LmNzcyggZWxlbSwgbmFtZSApOwotICAg
IH0sIG5hbWUsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoID4gMSApOwotICAgIH0sCi0gICAgc2hv
dzogZnVuY3Rpb24oKSB7Ci0gICAgcmV0dXJuIHNob3dIaWRlKCB0aGlzLCB0cnVlICk7Ci0gICAg
fSwKLSAgICBoaWRlOiBmdW5jdGlvbigpIHsKLSAgICByZXR1cm4gc2hvd0hpZGUoIHRoaXMgKTsK
LSAgICB9LAotICAgIHRvZ2dsZTogZnVuY3Rpb24oIHN0YXRlICkgewotICAgIHZhciBib29sID0g
dHlwZW9mIHN0YXRlID09PSAiYm9vbGVhbiI7Ci0KLSAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0
aW9uKCkgewotICAgIGlmICggYm9vbCA/IHN0YXRlIDogaXNIaWRkZW4oIHRoaXMgKSApIHsKLSAg
ICBqUXVlcnkoIHRoaXMgKS5zaG93KCk7Ci0gICAgfSBlbHNlIHsKLSAgICBqUXVlcnkoIHRoaXMg
KS5oaWRlKCk7Ci0gICAgfQotICAgIH0pOwotICAgIH0KLX0pOwotCi1qUXVlcnkuZXh0ZW5kKHsK
LSAgICAvLyBBZGQgaW4gc3R5bGUgcHJvcGVydHkgaG9va3MgZm9yIG92ZXJyaWRpbmcgdGhlIGRl
ZmF1bHQKLSAgICAvLyBiZWhhdmlvciBvZiBnZXR0aW5nIGFuZCBzZXR0aW5nIGEgc3R5bGUgcHJv
cGVydHkKLSAgICBjc3NIb29rczogewotICAgIG9wYWNpdHk6IHsKLSAgICBnZXQ6IGZ1bmN0aW9u
KCBlbGVtLCBjb21wdXRlZCApIHsKLSAgICBpZiAoIGNvbXB1dGVkICkgewotICAgIC8vIFdlIHNo
b3VsZCBhbHdheXMgZ2V0IGEgbnVtYmVyIGJhY2sgZnJvbSBvcGFjaXR5Ci0gICAgdmFyIHJldCA9
IGN1ckNTUyggZWxlbSwgIm9wYWNpdHkiICk7Ci0gICAgcmV0dXJuIHJldCA9PT0gIiIgPyAiMSIg
OiByZXQ7Ci0gICAgfQotICAgIH0KLSAgICB9Ci0gICAgfSwKLQotICAgIC8vIEV4Y2x1ZGUgdGhl
IGZvbGxvd2luZyBjc3MgcHJvcGVydGllcyB0byBhZGQgcHgKLSAgICBjc3NOdW1iZXI6IHsKLSAg
ICAiY29sdW1uQ291bnQiOiB0cnVlLAotICAgICJmaWxsT3BhY2l0eSI6IHRydWUsCi0gICAgImZv
bnRXZWlnaHQiOiB0cnVlLAotICAgICJsaW5lSGVpZ2h0IjogdHJ1ZSwKLSAgICAib3BhY2l0eSI6
IHRydWUsCi0gICAgIm9ycGhhbnMiOiB0cnVlLAotICAgICJ3aWRvd3MiOiB0cnVlLAotICAgICJ6
SW5kZXgiOiB0cnVlLAotICAgICJ6b29tIjogdHJ1ZQotICAgIH0sCi0KLSAgICAvLyBBZGQgaW4g
cHJvcGVydGllcyB3aG9zZSBuYW1lcyB5b3Ugd2lzaCB0byBmaXggYmVmb3JlCi0gICAgLy8gc2V0
dGluZyBvciBnZXR0aW5nIHRoZSB2YWx1ZQotICAgIGNzc1Byb3BzOiB7Ci0gICAgLy8gbm9ybWFs
aXplIGZsb2F0IGNzcyBwcm9wZXJ0eQotICAgICJmbG9hdCI6IGpRdWVyeS5zdXBwb3J0LmNzc0Zs
b2F0ID8gImNzc0Zsb2F0IiA6ICJzdHlsZUZsb2F0IgotICAgIH0sCi0KLSAgICAvLyBHZXQgYW5k
IHNldCB0aGUgc3R5bGUgcHJvcGVydHkgb24gYSBET00gTm9kZQotICAgIHN0eWxlOiBmdW5jdGlv
biggZWxlbSwgbmFtZSwgdmFsdWUsIGV4dHJhICkgewotICAgIC8vIERvbid0IHNldCBzdHlsZXMg
b24gdGV4dCBhbmQgY29tbWVudCBub2RlcwotICAgIGlmICggIWVsZW0gfHwgZWxlbS5ub2RlVHlw
ZSA9PT0gMyB8fCBlbGVtLm5vZGVUeXBlID09PSA4IHx8ICFlbGVtLnN0eWxlICkgewotICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICAvLyBNYWtlIHN1cmUgdGhhdCB3ZSdyZSB3b3JraW5nIHdpdGgg
dGhlIHJpZ2h0IG5hbWUKLSAgICB2YXIgcmV0LCB0eXBlLCBob29rcywKLSAgICBvcmlnTmFtZSA9
IGpRdWVyeS5jYW1lbENhc2UoIG5hbWUgKSwKLSAgICBzdHlsZSA9IGVsZW0uc3R5bGU7Ci0KLSAg
ICBuYW1lID0galF1ZXJ5LmNzc1Byb3BzWyBvcmlnTmFtZSBdIHx8ICggalF1ZXJ5LmNzc1Byb3Bz
WyBvcmlnTmFtZSBdID0gdmVuZG9yUHJvcE5hbWUoIHN0eWxlLCBvcmlnTmFtZSApICk7Ci0KLSAg
ICAvLyBnZXRzIGhvb2sgZm9yIHRoZSBwcmVmaXhlZCB2ZXJzaW9uCi0gICAgLy8gZm9sbG93ZWQg
YnkgdGhlIHVucHJlZml4ZWQgdmVyc2lvbgotICAgIGhvb2tzID0galF1ZXJ5LmNzc0hvb2tzWyBu
YW1lIF0gfHwgalF1ZXJ5LmNzc0hvb2tzWyBvcmlnTmFtZSBdOwotCi0gICAgLy8gQ2hlY2sgaWYg
d2UncmUgc2V0dGluZyBhIHZhbHVlCi0gICAgaWYgKCB2YWx1ZSAhPT0gdW5kZWZpbmVkICkgewot
ICAgIHR5cGUgPSB0eXBlb2YgdmFsdWU7Ci0KLSAgICAvLyBjb252ZXJ0IHJlbGF0aXZlIG51bWJl
ciBzdHJpbmdzICgrPSBvciAtPSkgdG8gcmVsYXRpdmUgbnVtYmVycy4gIzczNDUKLSAgICBpZiAo
IHR5cGUgPT09ICJzdHJpbmciICYmIChyZXQgPSBycmVsTnVtLmV4ZWMoIHZhbHVlICkpICkgewot
ICAgIHZhbHVlID0gKCByZXRbMV0gKyAxICkgKiByZXRbMl0gKyBwYXJzZUZsb2F0KCBqUXVlcnku
Y3NzKCBlbGVtLCBuYW1lICkgKTsKLSAgICAvLyBGaXhlcyBidWcgIzkyMzcKLSAgICB0eXBlID0g
Im51bWJlciI7Ci0gICAgfQotCi0gICAgLy8gTWFrZSBzdXJlIHRoYXQgTmFOIGFuZCBudWxsIHZh
bHVlcyBhcmVuJ3Qgc2V0LiBTZWU6ICM3MTE2Ci0gICAgaWYgKCB2YWx1ZSA9PSBudWxsIHx8IHR5
cGUgPT09ICJudW1iZXIiICYmIGlzTmFOKCB2YWx1ZSApICkgewotICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICAvLyBJZiBhIG51bWJlciB3YXMgcGFzc2VkIGluLCBhZGQgJ3B4JyB0byB0aGUgKGV4
Y2VwdCBmb3IgY2VydGFpbiBDU1MgcHJvcGVydGllcykKLSAgICBpZiAoIHR5cGUgPT09ICJudW1i
ZXIiICYmICFqUXVlcnkuY3NzTnVtYmVyWyBvcmlnTmFtZSBdICkgewotICAgIHZhbHVlICs9ICJw
eCI7Ci0gICAgfQotCi0gICAgLy8gRml4ZXMgIzg5MDgsIGl0IGNhbiBiZSBkb25lIG1vcmUgY29y
cmVjdGx5IGJ5IHNwZWNpZmluZyBzZXR0ZXJzIGluIGNzc0hvb2tzLAotICAgIC8vIGJ1dCBpdCB3
b3VsZCBtZWFuIHRvIGRlZmluZSBlaWdodCAoZm9yIGV2ZXJ5IHByb2JsZW1hdGljIHByb3BlcnR5
KSBpZGVudGljYWwgZnVuY3Rpb25zCi0gICAgaWYgKCAhalF1ZXJ5LnN1cHBvcnQuY2xlYXJDbG9u
ZVN0eWxlICYmIHZhbHVlID09PSAiIiAmJiBuYW1lLmluZGV4T2YoImJhY2tncm91bmQiKSA9PT0g
MCApIHsKLSAgICBzdHlsZVsgbmFtZSBdID0gImluaGVyaXQiOwotICAgIH0KLQotICAgIC8vIElm
IGEgaG9vayB3YXMgcHJvdmlkZWQsIHVzZSB0aGF0IHZhbHVlLCBvdGhlcndpc2UganVzdCBzZXQg
dGhlIHNwZWNpZmllZCB2YWx1ZQotICAgIGlmICggIWhvb2tzIHx8ICEoInNldCIgaW4gaG9va3Mp
IHx8ICh2YWx1ZSA9IGhvb2tzLnNldCggZWxlbSwgdmFsdWUsIGV4dHJhICkpICE9PSB1bmRlZmlu
ZWQgKSB7Ci0KLSAgICAvLyBXcmFwcGVkIHRvIHByZXZlbnQgSUUgZnJvbSB0aHJvd2luZyBlcnJv
cnMgd2hlbiAnaW52YWxpZCcgdmFsdWVzIGFyZSBwcm92aWRlZAotICAgIC8vIEZpeGVzIGJ1ZyAj
NTUwOQotICAgIHRyeSB7Ci0gICAgc3R5bGVbIG5hbWUgXSA9IHZhbHVlOwotICAgIH0gY2F0Y2go
ZSkge30KLSAgICB9Ci0KLSAgICB9IGVsc2UgewotICAgIC8vIElmIGEgaG9vayB3YXMgcHJvdmlk
ZWQgZ2V0IHRoZSBub24tY29tcHV0ZWQgdmFsdWUgZnJvbSB0aGVyZQotICAgIGlmICggaG9va3Mg
JiYgImdldCIgaW4gaG9va3MgJiYgKHJldCA9IGhvb2tzLmdldCggZWxlbSwgZmFsc2UsIGV4dHJh
ICkpICE9PSB1bmRlZmluZWQgKSB7Ci0gICAgcmV0dXJuIHJldDsKLSAgICB9Ci0KLSAgICAvLyBP
dGhlcndpc2UganVzdCBnZXQgdGhlIHZhbHVlIGZyb20gdGhlIHN0eWxlIG9iamVjdAotICAgIHJl
dHVybiBzdHlsZVsgbmFtZSBdOwotICAgIH0KLSAgICB9LAotCi0gICAgY3NzOiBmdW5jdGlvbigg
ZWxlbSwgbmFtZSwgZXh0cmEsIHN0eWxlcyApIHsKLSAgICB2YXIgbnVtLCB2YWwsIGhvb2tzLAot
ICAgIG9yaWdOYW1lID0galF1ZXJ5LmNhbWVsQ2FzZSggbmFtZSApOwotCi0gICAgLy8gTWFrZSBz
dXJlIHRoYXQgd2UncmUgd29ya2luZyB3aXRoIHRoZSByaWdodCBuYW1lCi0gICAgbmFtZSA9IGpR
dWVyeS5jc3NQcm9wc1sgb3JpZ05hbWUgXSB8fCAoIGpRdWVyeS5jc3NQcm9wc1sgb3JpZ05hbWUg
XSA9IHZlbmRvclByb3BOYW1lKCBlbGVtLnN0eWxlLCBvcmlnTmFtZSApICk7Ci0KLSAgICAvLyBn
ZXRzIGhvb2sgZm9yIHRoZSBwcmVmaXhlZCB2ZXJzaW9uCi0gICAgLy8gZm9sbG93ZWQgYnkgdGhl
IHVucHJlZml4ZWQgdmVyc2lvbgotICAgIGhvb2tzID0galF1ZXJ5LmNzc0hvb2tzWyBuYW1lIF0g
fHwgalF1ZXJ5LmNzc0hvb2tzWyBvcmlnTmFtZSBdOwotCi0gICAgLy8gSWYgYSBob29rIHdhcyBw
cm92aWRlZCBnZXQgdGhlIGNvbXB1dGVkIHZhbHVlIGZyb20gdGhlcmUKLSAgICBpZiAoIGhvb2tz
ICYmICJnZXQiIGluIGhvb2tzICkgewotICAgIHZhbCA9IGhvb2tzLmdldCggZWxlbSwgdHJ1ZSwg
ZXh0cmEgKTsKLSAgICB9Ci0KLSAgICAvLyBPdGhlcndpc2UsIGlmIGEgd2F5IHRvIGdldCB0aGUg
Y29tcHV0ZWQgdmFsdWUgZXhpc3RzLCB1c2UgdGhhdAotICAgIGlmICggdmFsID09PSB1bmRlZmlu
ZWQgKSB7Ci0gICAgdmFsID0gY3VyQ1NTKCBlbGVtLCBuYW1lLCBzdHlsZXMgKTsKLSAgICB9Ci0K
LSAgICAvL2NvbnZlcnQgIm5vcm1hbCIgdG8gY29tcHV0ZWQgdmFsdWUKLSAgICBpZiAoIHZhbCA9
PT0gIm5vcm1hbCIgJiYgbmFtZSBpbiBjc3NOb3JtYWxUcmFuc2Zvcm0gKSB7Ci0gICAgdmFsID0g
Y3NzTm9ybWFsVHJhbnNmb3JtWyBuYW1lIF07Ci0gICAgfQotCi0gICAgLy8gUmV0dXJuLCBjb252
ZXJ0aW5nIHRvIG51bWJlciBpZiBmb3JjZWQgb3IgYSBxdWFsaWZpZXIgd2FzIHByb3ZpZGVkIGFu
ZCB2YWwgbG9va3MgbnVtZXJpYwotICAgIGlmICggZXh0cmEgPT09ICIiIHx8IGV4dHJhICkgewot
ICAgIG51bSA9IHBhcnNlRmxvYXQoIHZhbCApOwotICAgIHJldHVybiBleHRyYSA9PT0gdHJ1ZSB8
fCBqUXVlcnkuaXNOdW1lcmljKCBudW0gKSA/IG51bSB8fCAwIDogdmFsOwotICAgIH0KLSAgICBy
ZXR1cm4gdmFsOwotICAgIH0sCi0KLSAgICAvLyBBIG1ldGhvZCBmb3IgcXVpY2tseSBzd2FwcGlu
ZyBpbi9vdXQgQ1NTIHByb3BlcnRpZXMgdG8gZ2V0IGNvcnJlY3QgY2FsY3VsYXRpb25zCi0gICAg
c3dhcDogZnVuY3Rpb24oIGVsZW0sIG9wdGlvbnMsIGNhbGxiYWNrLCBhcmdzICkgewotICAgIHZh
ciByZXQsIG5hbWUsCi0gICAgb2xkID0ge307Ci0KLSAgICAvLyBSZW1lbWJlciB0aGUgb2xkIHZh
bHVlcywgYW5kIGluc2VydCB0aGUgbmV3IG9uZXMKLSAgICBmb3IgKCBuYW1lIGluIG9wdGlvbnMg
KSB7Ci0gICAgb2xkWyBuYW1lIF0gPSBlbGVtLnN0eWxlWyBuYW1lIF07Ci0gICAgZWxlbS5zdHls
ZVsgbmFtZSBdID0gb3B0aW9uc1sgbmFtZSBdOwotICAgIH0KLQotICAgIHJldCA9IGNhbGxiYWNr
LmFwcGx5KCBlbGVtLCBhcmdzIHx8IFtdICk7Ci0KLSAgICAvLyBSZXZlcnQgdGhlIG9sZCB2YWx1
ZXMKLSAgICBmb3IgKCBuYW1lIGluIG9wdGlvbnMgKSB7Ci0gICAgZWxlbS5zdHlsZVsgbmFtZSBd
ID0gb2xkWyBuYW1lIF07Ci0gICAgfQotCi0gICAgcmV0dXJuIHJldDsKLSAgICB9Ci19KTsKLQot
Ly8gTk9URTogd2UndmUgaW5jbHVkZWQgdGhlICJ3aW5kb3ciIGluIHdpbmRvdy5nZXRDb21wdXRl
ZFN0eWxlCi0vLyBiZWNhdXNlIGpzZG9tIG9uIG5vZGUuanMgd2lsbCBicmVhayB3aXRob3V0IGl0
LgotaWYgKCB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSApIHsKLSAgICBnZXRTdHlsZXMgPSBmdW5j
dGlvbiggZWxlbSApIHsKLSAgICByZXR1cm4gd2luZG93LmdldENvbXB1dGVkU3R5bGUoIGVsZW0s
IG51bGwgKTsKLSAgICB9OwotCi0gICAgY3VyQ1NTID0gZnVuY3Rpb24oIGVsZW0sIG5hbWUsIF9j
b21wdXRlZCApIHsKLSAgICB2YXIgd2lkdGgsIG1pbldpZHRoLCBtYXhXaWR0aCwKLSAgICBjb21w
dXRlZCA9IF9jb21wdXRlZCB8fCBnZXRTdHlsZXMoIGVsZW0gKSwKLQotICAgIC8vIGdldFByb3Bl
cnR5VmFsdWUgaXMgb25seSBuZWVkZWQgZm9yIC5jc3MoJ2ZpbHRlcicpIGluIElFOSwgc2VlICMx
MjUzNwotICAgIHJldCA9IGNvbXB1dGVkID8gY29tcHV0ZWQuZ2V0UHJvcGVydHlWYWx1ZSggbmFt
ZSApIHx8IGNvbXB1dGVkWyBuYW1lIF0gOiB1bmRlZmluZWQsCi0gICAgc3R5bGUgPSBlbGVtLnN0
eWxlOwotCi0gICAgaWYgKCBjb21wdXRlZCApIHsKLQotICAgIGlmICggcmV0ID09PSAiIiAmJiAh
alF1ZXJ5LmNvbnRhaW5zKCBlbGVtLm93bmVyRG9jdW1lbnQsIGVsZW0gKSApIHsKLSAgICByZXQg
PSBqUXVlcnkuc3R5bGUoIGVsZW0sIG5hbWUgKTsKLSAgICB9Ci0KLSAgICAvLyBBIHRyaWJ1dGUg
dG8gdGhlICJhd2Vzb21lIGhhY2sgYnkgRGVhbiBFZHdhcmRzIgotICAgIC8vIENocm9tZSA8IDE3
IGFuZCBTYWZhcmkgNS4wIHVzZXMgImNvbXB1dGVkIHZhbHVlIiBpbnN0ZWFkIG9mICJ1c2VkIHZh
bHVlIiBmb3IgbWFyZ2luLXJpZ2h0Ci0gICAgLy8gU2FmYXJpIDUuMS43IChhdCBsZWFzdCkgcmV0
dXJucyBwZXJjZW50YWdlIGZvciBhIGxhcmdlciBzZXQgb2YgdmFsdWVzLCBidXQgd2lkdGggc2Vl
bXMgdG8gYmUgcmVsaWFibHkgcGl4ZWxzCi0gICAgLy8gdGhpcyBpcyBhZ2FpbnN0IHRoZSBDU1NP
TSBkcmFmdCBzcGVjOiBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3NvbS8jcmVzb2x2ZWQtdmFs
dWVzCi0gICAgaWYgKCBybnVtbm9ucHgudGVzdCggcmV0ICkgJiYgcm1hcmdpbi50ZXN0KCBuYW1l
ICkgKSB7Ci0KLSAgICAvLyBSZW1lbWJlciB0aGUgb3JpZ2luYWwgdmFsdWVzCi0gICAgd2lkdGgg
PSBzdHlsZS53aWR0aDsKLSAgICBtaW5XaWR0aCA9IHN0eWxlLm1pbldpZHRoOwotICAgIG1heFdp
ZHRoID0gc3R5bGUubWF4V2lkdGg7Ci0KLSAgICAvLyBQdXQgaW4gdGhlIG5ldyB2YWx1ZXMgdG8g
Z2V0IGEgY29tcHV0ZWQgdmFsdWUgb3V0Ci0gICAgc3R5bGUubWluV2lkdGggPSBzdHlsZS5tYXhX
aWR0aCA9IHN0eWxlLndpZHRoID0gcmV0OwotICAgIHJldCA9IGNvbXB1dGVkLndpZHRoOwotCi0g
ICAgLy8gUmV2ZXJ0IHRoZSBjaGFuZ2VkIHZhbHVlcwotICAgIHN0eWxlLndpZHRoID0gd2lkdGg7
Ci0gICAgc3R5bGUubWluV2lkdGggPSBtaW5XaWR0aDsKLSAgICBzdHlsZS5tYXhXaWR0aCA9IG1h
eFdpZHRoOwotICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gcmV0OwotICAgIH07Ci19IGVsc2Ug
aWYgKCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY3VycmVudFN0eWxlICkgewotICAgIGdldFN0
eWxlcyA9IGZ1bmN0aW9uKCBlbGVtICkgewotICAgIHJldHVybiBlbGVtLmN1cnJlbnRTdHlsZTsK
LSAgICB9OwotCi0gICAgY3VyQ1NTID0gZnVuY3Rpb24oIGVsZW0sIG5hbWUsIF9jb21wdXRlZCAp
IHsKLSAgICB2YXIgbGVmdCwgcnMsIHJzTGVmdCwKLSAgICBjb21wdXRlZCA9IF9jb21wdXRlZCB8
fCBnZXRTdHlsZXMoIGVsZW0gKSwKLSAgICByZXQgPSBjb21wdXRlZCA/IGNvbXB1dGVkWyBuYW1l
IF0gOiB1bmRlZmluZWQsCi0gICAgc3R5bGUgPSBlbGVtLnN0eWxlOwotCi0gICAgLy8gQXZvaWQg
c2V0dGluZyByZXQgdG8gZW1wdHkgc3RyaW5nIGhlcmUKLSAgICAvLyBzbyB3ZSBkb24ndCBkZWZh
dWx0IHRvIGF1dG8KLSAgICBpZiAoIHJldCA9PSBudWxsICYmIHN0eWxlICYmIHN0eWxlWyBuYW1l
IF0gKSB7Ci0gICAgcmV0ID0gc3R5bGVbIG5hbWUgXTsKLSAgICB9Ci0KLSAgICAvLyBGcm9tIHRo
ZSBhd2Vzb21lIGhhY2sgYnkgRGVhbiBFZHdhcmRzCi0gICAgLy8gaHR0cDovL2VyaWsuZWFlLm5l
dC9hcmNoaXZlcy8yMDA3LzA3LzI3LzE4LjU0LjE1LyNjb21tZW50LTEwMjI5MQotCi0gICAgLy8g
SWYgd2UncmUgbm90IGRlYWxpbmcgd2l0aCBhIHJlZ3VsYXIgcGl4ZWwgbnVtYmVyCi0gICAgLy8g
YnV0IGEgbnVtYmVyIHRoYXQgaGFzIGEgd2VpcmQgZW5kaW5nLCB3ZSBuZWVkIHRvIGNvbnZlcnQg
aXQgdG8gcGl4ZWxzCi0gICAgLy8gYnV0IG5vdCBwb3NpdGlvbiBjc3MgYXR0cmlidXRlcywgYXMg
dGhvc2UgYXJlIHByb3BvcnRpb25hbCB0byB0aGUgcGFyZW50IGVsZW1lbnQgaW5zdGVhZAotICAg
IC8vIGFuZCB3ZSBjYW4ndCBtZWFzdXJlIHRoZSBwYXJlbnQgaW5zdGVhZCBiZWNhdXNlIGl0IG1p
Z2h0IHRyaWdnZXIgYSAic3RhY2tpbmcgZG9sbHMiIHByb2JsZW0KLSAgICBpZiAoIHJudW1ub25w
eC50ZXN0KCByZXQgKSAmJiAhcnBvc2l0aW9uLnRlc3QoIG5hbWUgKSApIHsKLQotICAgIC8vIFJl
bWVtYmVyIHRoZSBvcmlnaW5hbCB2YWx1ZXMKLSAgICBsZWZ0ID0gc3R5bGUubGVmdDsKLSAgICBy
cyA9IGVsZW0ucnVudGltZVN0eWxlOwotICAgIHJzTGVmdCA9IHJzICYmIHJzLmxlZnQ7Ci0KLSAg
ICAvLyBQdXQgaW4gdGhlIG5ldyB2YWx1ZXMgdG8gZ2V0IGEgY29tcHV0ZWQgdmFsdWUgb3V0Ci0g
ICAgaWYgKCByc0xlZnQgKSB7Ci0gICAgcnMubGVmdCA9IGVsZW0uY3VycmVudFN0eWxlLmxlZnQ7
Ci0gICAgfQotICAgIHN0eWxlLmxlZnQgPSBuYW1lID09PSAiZm9udFNpemUiID8gIjFlbSIgOiBy
ZXQ7Ci0gICAgcmV0ID0gc3R5bGUucGl4ZWxMZWZ0ICsgInB4IjsKLQotICAgIC8vIFJldmVydCB0
aGUgY2hhbmdlZCB2YWx1ZXMKLSAgICBzdHlsZS5sZWZ0ID0gbGVmdDsKLSAgICBpZiAoIHJzTGVm
dCApIHsKLSAgICBycy5sZWZ0ID0gcnNMZWZ0OwotICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4g
cmV0ID09PSAiIiA/ICJhdXRvIiA6IHJldDsKLSAgICB9OwotfQotCi1mdW5jdGlvbiBzZXRQb3Np
dGl2ZU51bWJlciggZWxlbSwgdmFsdWUsIHN1YnRyYWN0ICkgewotICAgIHZhciBtYXRjaGVzID0g
cm51bXNwbGl0LmV4ZWMoIHZhbHVlICk7Ci0gICAgcmV0dXJuIG1hdGNoZXMgPwotICAgIC8vIEd1
YXJkIGFnYWluc3QgdW5kZWZpbmVkICJzdWJ0cmFjdCIsIGUuZy4sIHdoZW4gdXNlZCBhcyBpbiBj
c3NIb29rcwotICAgIE1hdGgubWF4KCAwLCBtYXRjaGVzWyAxIF0gLSAoIHN1YnRyYWN0IHx8IDAg
KSApICsgKCBtYXRjaGVzWyAyIF0gfHwgInB4IiApIDoKLSAgICB2YWx1ZTsKLX0KLQotZnVuY3Rp
b24gYXVnbWVudFdpZHRoT3JIZWlnaHQoIGVsZW0sIG5hbWUsIGV4dHJhLCBpc0JvcmRlckJveCwg
c3R5bGVzICkgewotICAgIHZhciBpID0gZXh0cmEgPT09ICggaXNCb3JkZXJCb3ggPyAiYm9yZGVy
IiA6ICJjb250ZW50IiApID8KLSAgICAvLyBJZiB3ZSBhbHJlYWR5IGhhdmUgdGhlIHJpZ2h0IG1l
YXN1cmVtZW50LCBhdm9pZCBhdWdtZW50YXRpb24KLSAgICA0IDoKLSAgICAvLyBPdGhlcndpc2Ug
aW5pdGlhbGl6ZSBmb3IgaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCBwcm9wZXJ0aWVzCi0gICAgbmFt
ZSA9PT0gIndpZHRoIiA/IDEgOiAwLAotCi0gICAgdmFsID0gMDsKLQotICAgIGZvciAoIDsgaSA8
IDQ7IGkgKz0gMiApIHsKLSAgICAvLyBib3RoIGJveCBtb2RlbHMgZXhjbHVkZSBtYXJnaW4sIHNv
IGFkZCBpdCBpZiB3ZSB3YW50IGl0Ci0gICAgaWYgKCBleHRyYSA9PT0gIm1hcmdpbiIgKSB7Ci0g
ICAgdmFsICs9IGpRdWVyeS5jc3MoIGVsZW0sIGV4dHJhICsgY3NzRXhwYW5kWyBpIF0sIHRydWUs
IHN0eWxlcyApOwotICAgIH0KLQotICAgIGlmICggaXNCb3JkZXJCb3ggKSB7Ci0gICAgLy8gYm9y
ZGVyLWJveCBpbmNsdWRlcyBwYWRkaW5nLCBzbyByZW1vdmUgaXQgaWYgd2Ugd2FudCBjb250ZW50
Ci0gICAgaWYgKCBleHRyYSA9PT0gImNvbnRlbnQiICkgewotICAgIHZhbCAtPSBqUXVlcnkuY3Nz
KCBlbGVtLCAicGFkZGluZyIgKyBjc3NFeHBhbmRbIGkgXSwgdHJ1ZSwgc3R5bGVzICk7Ci0gICAg
fQotCi0gICAgLy8gYXQgdGhpcyBwb2ludCwgZXh0cmEgaXNuJ3QgYm9yZGVyIG5vciBtYXJnaW4s
IHNvIHJlbW92ZSBib3JkZXIKLSAgICBpZiAoIGV4dHJhICE9PSAibWFyZ2luIiApIHsKLSAgICB2
YWwgLT0galF1ZXJ5LmNzcyggZWxlbSwgImJvcmRlciIgKyBjc3NFeHBhbmRbIGkgXSArICJXaWR0
aCIsIHRydWUsIHN0eWxlcyApOwotICAgIH0KLSAgICB9IGVsc2UgewotICAgIC8vIGF0IHRoaXMg
cG9pbnQsIGV4dHJhIGlzbid0IGNvbnRlbnQsIHNvIGFkZCBwYWRkaW5nCi0gICAgdmFsICs9IGpR
dWVyeS5jc3MoIGVsZW0sICJwYWRkaW5nIiArIGNzc0V4cGFuZFsgaSBdLCB0cnVlLCBzdHlsZXMg
KTsKLQotICAgIC8vIGF0IHRoaXMgcG9pbnQsIGV4dHJhIGlzbid0IGNvbnRlbnQgbm9yIHBhZGRp
bmcsIHNvIGFkZCBib3JkZXIKLSAgICBpZiAoIGV4dHJhICE9PSAicGFkZGluZyIgKSB7Ci0gICAg
dmFsICs9IGpRdWVyeS5jc3MoIGVsZW0sICJib3JkZXIiICsgY3NzRXhwYW5kWyBpIF0gKyAiV2lk
dGgiLCB0cnVlLCBzdHlsZXMgKTsKLSAgICB9Ci0gICAgfQotICAgIH0KLQotICAgIHJldHVybiB2
YWw7Ci19Ci0KLWZ1bmN0aW9uIGdldFdpZHRoT3JIZWlnaHQoIGVsZW0sIG5hbWUsIGV4dHJhICkg
ewotCi0gICAgLy8gU3RhcnQgd2l0aCBvZmZzZXQgcHJvcGVydHksIHdoaWNoIGlzIGVxdWl2YWxl
bnQgdG8gdGhlIGJvcmRlci1ib3ggdmFsdWUKLSAgICB2YXIgdmFsdWVJc0JvcmRlckJveCA9IHRy
dWUsCi0gICAgdmFsID0gbmFtZSA9PT0gIndpZHRoIiA/IGVsZW0ub2Zmc2V0V2lkdGggOiBlbGVt
Lm9mZnNldEhlaWdodCwKLSAgICBzdHlsZXMgPSBnZXRTdHlsZXMoIGVsZW0gKSwKLSAgICBpc0Jv
cmRlckJveCA9IGpRdWVyeS5zdXBwb3J0LmJveFNpemluZyAmJiBqUXVlcnkuY3NzKCBlbGVtLCAi
Ym94U2l6aW5nIiwgZmFsc2UsIHN0eWxlcyApID09PSAiYm9yZGVyLWJveCI7Ci0KLSAgICAvLyBz
b21lIG5vbi1odG1sIGVsZW1lbnRzIHJldHVybiB1bmRlZmluZWQgZm9yIG9mZnNldFdpZHRoLCBz
byBjaGVjayBmb3IgbnVsbC91bmRlZmluZWQKLSAgICAvLyBzdmcgLSBodHRwczovL2J1Z3ppbGxh
Lm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD02NDkyODUKLSAgICAvLyBNYXRoTUwgLSBodHRw
czovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD00OTE2NjgKLSAgICBpZiAo
IHZhbCA8PSAwIHx8IHZhbCA9PSBudWxsICkgewotICAgIC8vIEZhbGwgYmFjayB0byBjb21wdXRl
ZCB0aGVuIHVuY29tcHV0ZWQgY3NzIGlmIG5lY2Vzc2FyeQotICAgIHZhbCA9IGN1ckNTUyggZWxl
bSwgbmFtZSwgc3R5bGVzICk7Ci0gICAgaWYgKCB2YWwgPCAwIHx8IHZhbCA9PSBudWxsICkgewot
ICAgIHZhbCA9IGVsZW0uc3R5bGVbIG5hbWUgXTsKLSAgICB9Ci0KLSAgICAvLyBDb21wdXRlZCB1
bml0IGlzIG5vdCBwaXhlbHMuIFN0b3AgaGVyZSBhbmQgcmV0dXJuLgotICAgIGlmICggcm51bW5v
bnB4LnRlc3QodmFsKSApIHsKLSAgICByZXR1cm4gdmFsOwotICAgIH0KLQotICAgIC8vIHdlIG5l
ZWQgdGhlIGNoZWNrIGZvciBzdHlsZSBpbiBjYXNlIGEgYnJvd3NlciB3aGljaCByZXR1cm5zIHVu
cmVsaWFibGUgdmFsdWVzCi0gICAgLy8gZm9yIGdldENvbXB1dGVkU3R5bGUgc2lsZW50bHkgZmFs
bHMgYmFjayB0byB0aGUgcmVsaWFibGUgZWxlbS5zdHlsZQotICAgIHZhbHVlSXNCb3JkZXJCb3gg
PSBpc0JvcmRlckJveCAmJiAoIGpRdWVyeS5zdXBwb3J0LmJveFNpemluZ1JlbGlhYmxlIHx8IHZh
bCA9PT0gZWxlbS5zdHlsZVsgbmFtZSBdICk7Ci0KLSAgICAvLyBOb3JtYWxpemUgIiIsIGF1dG8s
IGFuZCBwcmVwYXJlIGZvciBleHRyYQotICAgIHZhbCA9IHBhcnNlRmxvYXQoIHZhbCApIHx8IDA7
Ci0gICAgfQotCi0gICAgLy8gdXNlIHRoZSBhY3RpdmUgYm94LXNpemluZyBtb2RlbCB0byBhZGQv
c3VidHJhY3QgaXJyZWxldmFudCBzdHlsZXMKLSAgICByZXR1cm4gKCB2YWwgKwotICAgIGF1Z21l
bnRXaWR0aE9ySGVpZ2h0KAotICAgIGVsZW0sCi0gICAgbmFtZSwKLSAgICBleHRyYSB8fCAoIGlz
Qm9yZGVyQm94ID8gImJvcmRlciIgOiAiY29udGVudCIgKSwKLSAgICB2YWx1ZUlzQm9yZGVyQm94
LAotICAgIHN0eWxlcwotICAgICkKLSAgICApICsgInB4IjsKLX0KLQotLy8gVHJ5IHRvIGRldGVy
bWluZSB0aGUgZGVmYXVsdCBkaXNwbGF5IHZhbHVlIG9mIGFuIGVsZW1lbnQKLWZ1bmN0aW9uIGNz
c19kZWZhdWx0RGlzcGxheSggbm9kZU5hbWUgKSB7Ci0gICAgdmFyIGRvYyA9IGRvY3VtZW50LAot
ICAgIGRpc3BsYXkgPSBlbGVtZGlzcGxheVsgbm9kZU5hbWUgXTsKLQotICAgIGlmICggIWRpc3Bs
YXkgKSB7Ci0gICAgZGlzcGxheSA9IGFjdHVhbERpc3BsYXkoIG5vZGVOYW1lLCBkb2MgKTsKLQot
ICAgIC8vIElmIHRoZSBzaW1wbGUgd2F5IGZhaWxzLCByZWFkIGZyb20gaW5zaWRlIGFuIGlmcmFt
ZQotICAgIGlmICggZGlzcGxheSA9PT0gIm5vbmUiIHx8ICFkaXNwbGF5ICkgewotICAgIC8vIFVz
ZSB0aGUgYWxyZWFkeS1jcmVhdGVkIGlmcmFtZSBpZiBwb3NzaWJsZQotICAgIGlmcmFtZSA9ICgg
aWZyYW1lIHx8Ci0gICAgalF1ZXJ5KCI8aWZyYW1lIGZyYW1lYm9yZGVyPScwJyB3aWR0aD0nMCcg
aGVpZ2h0PScwJy8+IikKLSAgICAuY3NzKCAiY3NzVGV4dCIsICJkaXNwbGF5OmJsb2NrICFpbXBv
cnRhbnQiICkKLSAgICApLmFwcGVuZFRvKCBkb2MuZG9jdW1lbnRFbGVtZW50ICk7Ci0KLSAgICAv
LyBBbHdheXMgd3JpdGUgYSBuZXcgSFRNTCBza2VsZXRvbiBzbyBXZWJraXQgYW5kIEZpcmVmb3gg
ZG9uJ3QgY2hva2Ugb24gcmV1c2UKLSAgICBkb2MgPSAoIGlmcmFtZVswXS5jb250ZW50V2luZG93
IHx8IGlmcmFtZVswXS5jb250ZW50RG9jdW1lbnQgKS5kb2N1bWVudDsKLSAgICBkb2Mud3JpdGUo
IjwhZG9jdHlwZSBodG1sPjxodG1sPjxib2R5PiIpOwotICAgIGRvYy5jbG9zZSgpOwotCi0gICAg
ZGlzcGxheSA9IGFjdHVhbERpc3BsYXkoIG5vZGVOYW1lLCBkb2MgKTsKLSAgICBpZnJhbWUuZGV0
YWNoKCk7Ci0gICAgfQotCi0gICAgLy8gU3RvcmUgdGhlIGNvcnJlY3QgZGVmYXVsdCBkaXNwbGF5
Ci0gICAgZWxlbWRpc3BsYXlbIG5vZGVOYW1lIF0gPSBkaXNwbGF5OwotICAgIH0KLQotICAgIHJl
dHVybiBkaXNwbGF5OwotfQotCi0vLyBDYWxsZWQgT05MWSBmcm9tIHdpdGhpbiBjc3NfZGVmYXVs
dERpc3BsYXkKLWZ1bmN0aW9uIGFjdHVhbERpc3BsYXkoIG5hbWUsIGRvYyApIHsKLSAgICB2YXIg
ZWxlbSA9IGpRdWVyeSggZG9jLmNyZWF0ZUVsZW1lbnQoIG5hbWUgKSApLmFwcGVuZFRvKCBkb2Mu
Ym9keSApLAotICAgIGRpc3BsYXkgPSBqUXVlcnkuY3NzKCBlbGVtWzBdLCAiZGlzcGxheSIgKTsK
LSAgICBlbGVtLnJlbW92ZSgpOwotICAgIHJldHVybiBkaXNwbGF5OwotfQotCi1qUXVlcnkuZWFj
aChbICJoZWlnaHQiLCAid2lkdGgiIF0sIGZ1bmN0aW9uKCBpLCBuYW1lICkgewotICAgIGpRdWVy
eS5jc3NIb29rc1sgbmFtZSBdID0gewotICAgIGdldDogZnVuY3Rpb24oIGVsZW0sIGNvbXB1dGVk
LCBleHRyYSApIHsKLSAgICBpZiAoIGNvbXB1dGVkICkgewotICAgIC8vIGNlcnRhaW4gZWxlbWVu
dHMgY2FuIGhhdmUgZGltZW5zaW9uIGluZm8gaWYgd2UgaW52aXNpYmx5IHNob3cgdGhlbQotICAg
IC8vIGhvd2V2ZXIsIGl0IG11c3QgaGF2ZSBhIGN1cnJlbnQgZGlzcGxheSBzdHlsZSB0aGF0IHdv
dWxkIGJlbmVmaXQgZnJvbSB0aGlzCi0gICAgcmV0dXJuIGVsZW0ub2Zmc2V0V2lkdGggPT09IDAg
JiYgcmRpc3BsYXlzd2FwLnRlc3QoIGpRdWVyeS5jc3MoIGVsZW0sICJkaXNwbGF5IiApICkgPwot
ICAgIGpRdWVyeS5zd2FwKCBlbGVtLCBjc3NTaG93LCBmdW5jdGlvbigpIHsKLSAgICByZXR1cm4g
Z2V0V2lkdGhPckhlaWdodCggZWxlbSwgbmFtZSwgZXh0cmEgKTsKLSAgICB9KSA6Ci0gICAgZ2V0
V2lkdGhPckhlaWdodCggZWxlbSwgbmFtZSwgZXh0cmEgKTsKLSAgICB9Ci0gICAgfSwKLQotICAg
IHNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlLCBleHRyYSApIHsKLSAgICB2YXIgc3R5bGVzID0g
ZXh0cmEgJiYgZ2V0U3R5bGVzKCBlbGVtICk7Ci0gICAgcmV0dXJuIHNldFBvc2l0aXZlTnVtYmVy
KCBlbGVtLCB2YWx1ZSwgZXh0cmEgPwotICAgIGF1Z21lbnRXaWR0aE9ySGVpZ2h0KAotICAgIGVs
ZW0sCi0gICAgbmFtZSwKLSAgICBleHRyYSwKLSAgICBqUXVlcnkuc3VwcG9ydC5ib3hTaXppbmcg
JiYgalF1ZXJ5LmNzcyggZWxlbSwgImJveFNpemluZyIsIGZhbHNlLCBzdHlsZXMgKSA9PT0gImJv
cmRlci1ib3giLAotICAgIHN0eWxlcwotICAgICkgOiAwCi0gICAgKTsKLSAgICB9Ci0gICAgfTsK
LX0pOwotCi1pZiAoICFqUXVlcnkuc3VwcG9ydC5vcGFjaXR5ICkgewotICAgIGpRdWVyeS5jc3NI
b29rcy5vcGFjaXR5ID0gewotICAgIGdldDogZnVuY3Rpb24oIGVsZW0sIGNvbXB1dGVkICkgewot
ICAgIC8vIElFIHVzZXMgZmlsdGVycyBmb3Igb3BhY2l0eQotICAgIHJldHVybiByb3BhY2l0eS50
ZXN0KCAoY29tcHV0ZWQgJiYgZWxlbS5jdXJyZW50U3R5bGUgPyBlbGVtLmN1cnJlbnRTdHlsZS5m
aWx0ZXIgOiBlbGVtLnN0eWxlLmZpbHRlcikgfHwgIiIgKSA/Ci0gICAgKCAwLjAxICogcGFyc2VG
bG9hdCggUmVnRXhwLiQxICkgKSArICIiIDoKLSAgICBjb21wdXRlZCA/ICIxIiA6ICIiOwotICAg
IH0sCi0KLSAgICBzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSApIHsKLSAgICB2YXIgc3R5bGUg
PSBlbGVtLnN0eWxlLAotICAgIGN1cnJlbnRTdHlsZSA9IGVsZW0uY3VycmVudFN0eWxlLAotICAg
IG9wYWNpdHkgPSBqUXVlcnkuaXNOdW1lcmljKCB2YWx1ZSApID8gImFscGhhKG9wYWNpdHk9IiAr
IHZhbHVlICogMTAwICsgIikiIDogIiIsCi0gICAgZmlsdGVyID0gY3VycmVudFN0eWxlICYmIGN1
cnJlbnRTdHlsZS5maWx0ZXIgfHwgc3R5bGUuZmlsdGVyIHx8ICIiOwotCi0gICAgLy8gSUUgaGFz
IHRyb3VibGUgd2l0aCBvcGFjaXR5IGlmIGl0IGRvZXMgbm90IGhhdmUgbGF5b3V0Ci0gICAgLy8g
Rm9yY2UgaXQgYnkgc2V0dGluZyB0aGUgem9vbSBsZXZlbAotICAgIHN0eWxlLnpvb20gPSAxOwot
Ci0gICAgLy8gaWYgc2V0dGluZyBvcGFjaXR5IHRvIDEsIGFuZCBubyBvdGhlciBmaWx0ZXJzIGV4
aXN0IC0gYXR0ZW1wdCB0byByZW1vdmUgZmlsdGVyIGF0dHJpYnV0ZSAjNjY1MgotICAgIC8vIGlm
IHZhbHVlID09PSAiIiwgdGhlbiByZW1vdmUgaW5saW5lIG9wYWNpdHkgIzEyNjg1Ci0gICAgaWYg
KCAoIHZhbHVlID49IDEgfHwgdmFsdWUgPT09ICIiICkgJiYKLSAgICBqUXVlcnkudHJpbSggZmls
dGVyLnJlcGxhY2UoIHJhbHBoYSwgIiIgKSApID09PSAiIiAmJgotICAgIHN0eWxlLnJlbW92ZUF0
dHJpYnV0ZSApIHsKLQotICAgIC8vIFNldHRpbmcgc3R5bGUuZmlsdGVyIHRvIG51bGwsICIiICYg
IiAiIHN0aWxsIGxlYXZlICJmaWx0ZXI6IiBpbiB0aGUgY3NzVGV4dAotICAgIC8vIGlmICJmaWx0
ZXI6IiBpcyBwcmVzZW50IGF0IGFsbCwgY2xlYXJUeXBlIGlzIGRpc2FibGVkLCB3ZSB3YW50IHRv
IGF2b2lkIHRoaXMKLSAgICAvLyBzdHlsZS5yZW1vdmVBdHRyaWJ1dGUgaXMgSUUgT25seSwgYnV0
IHNvIGFwcGFyZW50bHkgaXMgdGhpcyBjb2RlIHBhdGguLi4KLSAgICBzdHlsZS5yZW1vdmVBdHRy
aWJ1dGUoICJmaWx0ZXIiICk7Ci0KLSAgICAvLyBpZiB0aGVyZSBpcyBubyBmaWx0ZXIgc3R5bGUg
YXBwbGllZCBpbiBhIGNzcyBydWxlIG9yIHVuc2V0IGlubGluZSBvcGFjaXR5LCB3ZSBhcmUgZG9u
ZQotICAgIGlmICggdmFsdWUgPT09ICIiIHx8IGN1cnJlbnRTdHlsZSAmJiAhY3VycmVudFN0eWxl
LmZpbHRlciApIHsKLSAgICByZXR1cm47Ci0gICAgfQotICAgIH0KLQotICAgIC8vIG90aGVyd2lz
ZSwgc2V0IG5ldyBmaWx0ZXIgdmFsdWVzCi0gICAgc3R5bGUuZmlsdGVyID0gcmFscGhhLnRlc3Qo
IGZpbHRlciApID8KLSAgICBmaWx0ZXIucmVwbGFjZSggcmFscGhhLCBvcGFjaXR5ICkgOgotICAg
IGZpbHRlciArICIgIiArIG9wYWNpdHk7Ci0gICAgfQotICAgIH07Ci19Ci0KLS8vIFRoZXNlIGhv
b2tzIGNhbm5vdCBiZSBhZGRlZCB1bnRpbCBET00gcmVhZHkgYmVjYXVzZSB0aGUgc3VwcG9ydCB0
ZXN0Ci0vLyBmb3IgaXQgaXMgbm90IHJ1biB1bnRpbCBhZnRlciBET00gcmVhZHkKLWpRdWVyeShm
dW5jdGlvbigpIHsKLSAgICBpZiAoICFqUXVlcnkuc3VwcG9ydC5yZWxpYWJsZU1hcmdpblJpZ2h0
ICkgewotICAgIGpRdWVyeS5jc3NIb29rcy5tYXJnaW5SaWdodCA9IHsKLSAgICBnZXQ6IGZ1bmN0
aW9uKCBlbGVtLCBjb21wdXRlZCApIHsKLSAgICBpZiAoIGNvbXB1dGVkICkgewotICAgIC8vIFdl
YktpdCBCdWcgMTMzNDMgLSBnZXRDb21wdXRlZFN0eWxlIHJldHVybnMgd3JvbmcgdmFsdWUgZm9y
IG1hcmdpbi1yaWdodAotICAgIC8vIFdvcmsgYXJvdW5kIGJ5IHRlbXBvcmFyaWx5IHNldHRpbmcg
ZWxlbWVudCBkaXNwbGF5IHRvIGlubGluZS1ibG9jawotICAgIHJldHVybiBqUXVlcnkuc3dhcCgg
ZWxlbSwgeyAiZGlzcGxheSI6ICJpbmxpbmUtYmxvY2siIH0sCi0gICAgY3VyQ1NTLCBbIGVsZW0s
ICJtYXJnaW5SaWdodCIgXSApOwotICAgIH0KLSAgICB9Ci0gICAgfTsKLSAgICB9Ci0KLSAgICAv
LyBXZWJraXQgYnVnOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjkw
ODQKLSAgICAvLyBnZXRDb21wdXRlZFN0eWxlIHJldHVybnMgcGVyY2VudCB3aGVuIHNwZWNpZmll
ZCBmb3IgdG9wL2xlZnQvYm90dG9tL3JpZ2h0Ci0gICAgLy8gcmF0aGVyIHRoYW4gbWFrZSB0aGUg
Y3NzIG1vZHVsZSBkZXBlbmQgb24gdGhlIG9mZnNldCBtb2R1bGUsIHdlIGp1c3QgY2hlY2sgZm9y
IGl0IGhlcmUKLSAgICBpZiAoICFqUXVlcnkuc3VwcG9ydC5waXhlbFBvc2l0aW9uICYmIGpRdWVy
eS5mbi5wb3NpdGlvbiApIHsKLSAgICBqUXVlcnkuZWFjaCggWyAidG9wIiwgImxlZnQiIF0sIGZ1
bmN0aW9uKCBpLCBwcm9wICkgewotICAgIGpRdWVyeS5jc3NIb29rc1sgcHJvcCBdID0gewotICAg
IGdldDogZnVuY3Rpb24oIGVsZW0sIGNvbXB1dGVkICkgewotICAgIGlmICggY29tcHV0ZWQgKSB7
Ci0gICAgY29tcHV0ZWQgPSBjdXJDU1MoIGVsZW0sIHByb3AgKTsKLSAgICAvLyBpZiBjdXJDU1Mg
cmV0dXJucyBwZXJjZW50YWdlLCBmYWxsYmFjayB0byBvZmZzZXQKLSAgICByZXR1cm4gcm51bW5v
bnB4LnRlc3QoIGNvbXB1dGVkICkgPwotICAgIGpRdWVyeSggZWxlbSApLnBvc2l0aW9uKClbIHBy
b3AgXSArICJweCIgOgotICAgIGNvbXB1dGVkOwotICAgIH0KLSAgICB9Ci0gICAgfTsKLSAgICB9
KTsKLSAgICB9Ci0KLX0pOwotCi1pZiAoIGpRdWVyeS5leHByICYmIGpRdWVyeS5leHByLmZpbHRl
cnMgKSB7Ci0gICAgalF1ZXJ5LmV4cHIuZmlsdGVycy5oaWRkZW4gPSBmdW5jdGlvbiggZWxlbSAp
IHsKLSAgICAvLyBTdXBwb3J0OiBPcGVyYSA8PSAxMi4xMgotICAgIC8vIE9wZXJhIHJlcG9ydHMg
b2Zmc2V0V2lkdGhzIGFuZCBvZmZzZXRIZWlnaHRzIGxlc3MgdGhhbiB6ZXJvIG9uIHNvbWUgZWxl
bWVudHMKLSAgICByZXR1cm4gZWxlbS5vZmZzZXRXaWR0aCA8PSAwICYmIGVsZW0ub2Zmc2V0SGVp
Z2h0IDw9IDAgfHwKLSAgICAoIWpRdWVyeS5zdXBwb3J0LnJlbGlhYmxlSGlkZGVuT2Zmc2V0cyAm
JiAoKGVsZW0uc3R5bGUgJiYgZWxlbS5zdHlsZS5kaXNwbGF5KSB8fCBqUXVlcnkuY3NzKCBlbGVt
LCAiZGlzcGxheSIgKSkgPT09ICJub25lIik7Ci0gICAgfTsKLQotICAgIGpRdWVyeS5leHByLmZp
bHRlcnMudmlzaWJsZSA9IGZ1bmN0aW9uKCBlbGVtICkgewotICAgIHJldHVybiAhalF1ZXJ5LmV4
cHIuZmlsdGVycy5oaWRkZW4oIGVsZW0gKTsKLSAgICB9OwotfQotCi0vLyBUaGVzZSBob29rcyBh
cmUgdXNlZCBieSBhbmltYXRlIHRvIGV4cGFuZCBwcm9wZXJ0aWVzCi1qUXVlcnkuZWFjaCh7Ci0g
ICAgbWFyZ2luOiAiIiwKLSAgICBwYWRkaW5nOiAiIiwKLSAgICBib3JkZXI6ICJXaWR0aCIKLX0s
IGZ1bmN0aW9uKCBwcmVmaXgsIHN1ZmZpeCApIHsKLSAgICBqUXVlcnkuY3NzSG9va3NbIHByZWZp
eCArIHN1ZmZpeCBdID0gewotICAgIGV4cGFuZDogZnVuY3Rpb24oIHZhbHVlICkgewotICAgIHZh
ciBpID0gMCwKLSAgICBleHBhbmRlZCA9IHt9LAotCi0gICAgLy8gYXNzdW1lcyBhIHNpbmdsZSBu
dW1iZXIgaWYgbm90IGEgc3RyaW5nCi0gICAgcGFydHMgPSB0eXBlb2YgdmFsdWUgPT09ICJzdHJp
bmciID8gdmFsdWUuc3BsaXQoIiAiKSA6IFsgdmFsdWUgXTsKLQotICAgIGZvciAoIDsgaSA8IDQ7
IGkrKyApIHsKLSAgICBleHBhbmRlZFsgcHJlZml4ICsgY3NzRXhwYW5kWyBpIF0gKyBzdWZmaXgg
XSA9Ci0gICAgcGFydHNbIGkgXSB8fCBwYXJ0c1sgaSAtIDIgXSB8fCBwYXJ0c1sgMCBdOwotICAg
IH0KLQotICAgIHJldHVybiBleHBhbmRlZDsKLSAgICB9Ci0gICAgfTsKLQotICAgIGlmICggIXJt
YXJnaW4udGVzdCggcHJlZml4ICkgKSB7Ci0gICAgalF1ZXJ5LmNzc0hvb2tzWyBwcmVmaXggKyBz
dWZmaXggXS5zZXQgPSBzZXRQb3NpdGl2ZU51bWJlcjsKLSAgICB9Ci19KTsKLXZhciByMjAgPSAv
JTIwL2csCi0gICAgcmJyYWNrZXQgPSAvXFtcXSQvLAotICAgIHJDUkxGID0gL1xyP1xuL2csCi0g
ICAgcnN1Ym1pdHRlclR5cGVzID0gL14oPzpzdWJtaXR8YnV0dG9ufGltYWdlfHJlc2V0fGZpbGUp
JC9pLAotICAgIHJzdWJtaXR0YWJsZSA9IC9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGtleWdl
bikvaTsKLQotalF1ZXJ5LmZuLmV4dGVuZCh7Ci0gICAgc2VyaWFsaXplOiBmdW5jdGlvbigpIHsK
LSAgICByZXR1cm4galF1ZXJ5LnBhcmFtKCB0aGlzLnNlcmlhbGl6ZUFycmF5KCkgKTsKLSAgICB9
LAotICAgIHNlcmlhbGl6ZUFycmF5OiBmdW5jdGlvbigpIHsKLSAgICByZXR1cm4gdGhpcy5tYXAo
ZnVuY3Rpb24oKXsKLSAgICAvLyBDYW4gYWRkIHByb3BIb29rIGZvciAiZWxlbWVudHMiIHRvIGZp
bHRlciBvciBhZGQgZm9ybSBlbGVtZW50cwotICAgIHZhciBlbGVtZW50cyA9IGpRdWVyeS5wcm9w
KCB0aGlzLCAiZWxlbWVudHMiICk7Ci0gICAgcmV0dXJuIGVsZW1lbnRzID8galF1ZXJ5Lm1ha2VB
cnJheSggZWxlbWVudHMgKSA6IHRoaXM7Ci0gICAgfSkKLSAgICAuZmlsdGVyKGZ1bmN0aW9uKCl7
Ci0gICAgdmFyIHR5cGUgPSB0aGlzLnR5cGU7Ci0gICAgLy8gVXNlIC5pcygiOmRpc2FibGVkIikg
c28gdGhhdCBmaWVsZHNldFtkaXNhYmxlZF0gd29ya3MKLSAgICByZXR1cm4gdGhpcy5uYW1lICYm
ICFqUXVlcnkoIHRoaXMgKS5pcyggIjpkaXNhYmxlZCIgKSAmJgotICAgIHJzdWJtaXR0YWJsZS50
ZXN0KCB0aGlzLm5vZGVOYW1lICkgJiYgIXJzdWJtaXR0ZXJUeXBlcy50ZXN0KCB0eXBlICkgJiYK
LSAgICAoIHRoaXMuY2hlY2tlZCB8fCAhbWFuaXB1bGF0aW9uX3JjaGVja2FibGVUeXBlLnRlc3Qo
IHR5cGUgKSApOwotICAgIH0pCi0gICAgLm1hcChmdW5jdGlvbiggaSwgZWxlbSApewotICAgIHZh
ciB2YWwgPSBqUXVlcnkoIHRoaXMgKS52YWwoKTsKLQotICAgIHJldHVybiB2YWwgPT0gbnVsbCA/
Ci0gICAgbnVsbCA6Ci0gICAgalF1ZXJ5LmlzQXJyYXkoIHZhbCApID8KLSAgICBqUXVlcnkubWFw
KCB2YWwsIGZ1bmN0aW9uKCB2YWwgKXsKLSAgICByZXR1cm4geyBuYW1lOiBlbGVtLm5hbWUsIHZh
bHVlOiB2YWwucmVwbGFjZSggckNSTEYsICJcclxuIiApIH07Ci0gICAgfSkgOgotICAgIHsgbmFt
ZTogZWxlbS5uYW1lLCB2YWx1ZTogdmFsLnJlcGxhY2UoIHJDUkxGLCAiXHJcbiIgKSB9OwotICAg
IH0pLmdldCgpOwotICAgIH0KLX0pOwotCi0vL1NlcmlhbGl6ZSBhbiBhcnJheSBvZiBmb3JtIGVs
ZW1lbnRzIG9yIGEgc2V0IG9mCi0vL2tleS92YWx1ZXMgaW50byBhIHF1ZXJ5IHN0cmluZwotalF1
ZXJ5LnBhcmFtID0gZnVuY3Rpb24oIGEsIHRyYWRpdGlvbmFsICkgewotICAgIHZhciBwcmVmaXgs
Ci0gICAgcyA9IFtdLAotICAgIGFkZCA9IGZ1bmN0aW9uKCBrZXksIHZhbHVlICkgewotICAgIC8v
IElmIHZhbHVlIGlzIGEgZnVuY3Rpb24sIGludm9rZSBpdCBhbmQgcmV0dXJuIGl0cyB2YWx1ZQot
ICAgIHZhbHVlID0galF1ZXJ5LmlzRnVuY3Rpb24oIHZhbHVlICkgPyB2YWx1ZSgpIDogKCB2YWx1
ZSA9PSBudWxsID8gIiIgOiB2YWx1ZSApOwotICAgIHNbIHMubGVuZ3RoIF0gPSBlbmNvZGVVUklD
b21wb25lbnQoIGtleSApICsgIj0iICsgZW5jb2RlVVJJQ29tcG9uZW50KCB2YWx1ZSApOwotICAg
IH07Ci0KLSAgICAvLyBTZXQgdHJhZGl0aW9uYWwgdG8gdHJ1ZSBmb3IgalF1ZXJ5IDw9IDEuMy4y
IGJlaGF2aW9yLgotICAgIGlmICggdHJhZGl0aW9uYWwgPT09IHVuZGVmaW5lZCApIHsKLSAgICB0
cmFkaXRpb25hbCA9IGpRdWVyeS5hamF4U2V0dGluZ3MgJiYgalF1ZXJ5LmFqYXhTZXR0aW5ncy50
cmFkaXRpb25hbDsKLSAgICB9Ci0KLSAgICAvLyBJZiBhbiBhcnJheSB3YXMgcGFzc2VkIGluLCBh
c3N1bWUgdGhhdCBpdCBpcyBhbiBhcnJheSBvZiBmb3JtIGVsZW1lbnRzLgotICAgIGlmICggalF1
ZXJ5LmlzQXJyYXkoIGEgKSB8fCAoIGEuanF1ZXJ5ICYmICFqUXVlcnkuaXNQbGFpbk9iamVjdCgg
YSApICkgKSB7Ci0gICAgLy8gU2VyaWFsaXplIHRoZSBmb3JtIGVsZW1lbnRzCi0gICAgalF1ZXJ5
LmVhY2goIGEsIGZ1bmN0aW9uKCkgewotICAgIGFkZCggdGhpcy5uYW1lLCB0aGlzLnZhbHVlICk7
Ci0gICAgfSk7Ci0KLSAgICB9IGVsc2UgewotICAgIC8vIElmIHRyYWRpdGlvbmFsLCBlbmNvZGUg
dGhlICJvbGQiIHdheSAodGhlIHdheSAxLjMuMiBvciBvbGRlcgotICAgIC8vIGRpZCBpdCksIG90
aGVyd2lzZSBlbmNvZGUgcGFyYW1zIHJlY3Vyc2l2ZWx5LgotICAgIGZvciAoIHByZWZpeCBpbiBh
ICkgewotICAgIGJ1aWxkUGFyYW1zKCBwcmVmaXgsIGFbIHByZWZpeCBdLCB0cmFkaXRpb25hbCwg
YWRkICk7Ci0gICAgfQotICAgIH0KLQotICAgIC8vIFJldHVybiB0aGUgcmVzdWx0aW5nIHNlcmlh
bGl6YXRpb24KLSAgICByZXR1cm4gcy5qb2luKCAiJiIgKS5yZXBsYWNlKCByMjAsICIrIiApOwot
fTsKLQotZnVuY3Rpb24gYnVpbGRQYXJhbXMoIHByZWZpeCwgb2JqLCB0cmFkaXRpb25hbCwgYWRk
ICkgewotICAgIHZhciBuYW1lOwotCi0gICAgaWYgKCBqUXVlcnkuaXNBcnJheSggb2JqICkgKSB7
Ci0gICAgLy8gU2VyaWFsaXplIGFycmF5IGl0ZW0uCi0gICAgalF1ZXJ5LmVhY2goIG9iaiwgZnVu
Y3Rpb24oIGksIHYgKSB7Ci0gICAgaWYgKCB0cmFkaXRpb25hbCB8fCByYnJhY2tldC50ZXN0KCBw
cmVmaXggKSApIHsKLSAgICAvLyBUcmVhdCBlYWNoIGFycmF5IGl0ZW0gYXMgYSBzY2FsYXIuCi0g
ICAgYWRkKCBwcmVmaXgsIHYgKTsKLQotICAgIH0gZWxzZSB7Ci0gICAgLy8gSXRlbSBpcyBub24t
c2NhbGFyIChhcnJheSBvciBvYmplY3QpLCBlbmNvZGUgaXRzIG51bWVyaWMgaW5kZXguCi0gICAg
YnVpbGRQYXJhbXMoIHByZWZpeCArICJbIiArICggdHlwZW9mIHYgPT09ICJvYmplY3QiID8gaSA6
ICIiICkgKyAiXSIsIHYsIHRyYWRpdGlvbmFsLCBhZGQgKTsKLSAgICB9Ci0gICAgfSk7Ci0KLSAg
ICB9IGVsc2UgaWYgKCAhdHJhZGl0aW9uYWwgJiYgalF1ZXJ5LnR5cGUoIG9iaiApID09PSAib2Jq
ZWN0IiApIHsKLSAgICAvLyBTZXJpYWxpemUgb2JqZWN0IGl0ZW0uCi0gICAgZm9yICggbmFtZSBp
biBvYmogKSB7Ci0gICAgYnVpbGRQYXJhbXMoIHByZWZpeCArICJbIiArIG5hbWUgKyAiXSIsIG9i
alsgbmFtZSBdLCB0cmFkaXRpb25hbCwgYWRkICk7Ci0gICAgfQotCi0gICAgfSBlbHNlIHsKLSAg
ICAvLyBTZXJpYWxpemUgc2NhbGFyIGl0ZW0uCi0gICAgYWRkKCBwcmVmaXgsIG9iaiApOwotICAg
IH0KLX0KLWpRdWVyeS5lYWNoKCAoImJsdXIgZm9jdXMgZm9jdXNpbiBmb2N1c291dCBsb2FkIHJl
c2l6ZSBzY3JvbGwgdW5sb2FkIGNsaWNrIGRibGNsaWNrICIgKwotICAgICJtb3VzZWRvd24gbW91
c2V1cCBtb3VzZW1vdmUgbW91c2VvdmVyIG1vdXNlb3V0IG1vdXNlZW50ZXIgbW91c2VsZWF2ZSAi
ICsKLSAgICAiY2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBlcnJv
ciBjb250ZXh0bWVudSIpLnNwbGl0KCIgIiksIGZ1bmN0aW9uKCBpLCBuYW1lICkgewotCi0gICAg
Ly8gSGFuZGxlIGV2ZW50IGJpbmRpbmcKLSAgICBqUXVlcnkuZm5bIG5hbWUgXSA9IGZ1bmN0aW9u
KCBkYXRhLCBmbiApIHsKLSAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA+IDAgPwotICAgIHRo
aXMub24oIG5hbWUsIG51bGwsIGRhdGEsIGZuICkgOgotICAgIHRoaXMudHJpZ2dlciggbmFtZSAp
OwotICAgIH07Ci19KTsKLQotalF1ZXJ5LmZuLmhvdmVyID0gZnVuY3Rpb24oIGZuT3ZlciwgZm5P
dXQgKSB7Ci0gICAgcmV0dXJuIHRoaXMubW91c2VlbnRlciggZm5PdmVyICkubW91c2VsZWF2ZSgg
Zm5PdXQgfHwgZm5PdmVyICk7Ci19OwotdmFyCi0gICAgLy8gRG9jdW1lbnQgbG9jYXRpb24KLSAg
ICBhamF4TG9jUGFydHMsCi0gICAgYWpheExvY2F0aW9uLAotICAgIGFqYXhfbm9uY2UgPSBqUXVl
cnkubm93KCksCi0KLSAgICBhamF4X3JxdWVyeSA9IC9cPy8sCi0gICAgcmhhc2ggPSAvIy4qJC8s
Ci0gICAgcnRzID0gLyhbPyZdKV89W14mXSovLAotICAgIHJoZWFkZXJzID0gL14oLio/KTpbIFx0
XSooW15cclxuXSopXHI/JC9tZywgLy8gSUUgbGVhdmVzIGFuIFxyIGNoYXJhY3RlciBhdCBFT0wK
LSAgICAvLyAjNzY1MywgIzgxMjUsICM4MTUyOiBsb2NhbCBwcm90b2NvbCBkZXRlY3Rpb24KLSAg
ICBybG9jYWxQcm90b2NvbCA9IC9eKD86YWJvdXR8YXBwfGFwcC1zdG9yYWdlfC4rLWV4dGVuc2lv
bnxmaWxlfHJlc3x3aWRnZXQpOiQvLAotICAgIHJub0NvbnRlbnQgPSAvXig/OkdFVHxIRUFEKSQv
LAotICAgIHJwcm90b2NvbCA9IC9eXC9cLy8sCi0gICAgcnVybCA9IC9eKFtcdy4rLV0rOikoPzpc
L1wvKFteXC8/IzpdKikoPzo6KFxkKyl8KXwpLywKLQotICAgIC8vIEtlZXAgYSBjb3B5IG9mIHRo
ZSBvbGQgbG9hZCBtZXRob2QKLSAgICBfbG9hZCA9IGpRdWVyeS5mbi5sb2FkLAotCi0gICAgLyog
UHJlZmlsdGVycwotICAgICAqIDEpIFRoZXkgYXJlIHVzZWZ1bCB0byBpbnRyb2R1Y2UgY3VzdG9t
IGRhdGFUeXBlcyAoc2VlIGFqYXgvanNvbnAuanMgZm9yIGFuIGV4YW1wbGUpCi0gICAgICogMikg
VGhlc2UgYXJlIGNhbGxlZDoKLSAgICAgKiAgICAtIEJFRk9SRSBhc2tpbmcgZm9yIGEgdHJhbnNw
b3J0Ci0gICAgICogICAgLSBBRlRFUiBwYXJhbSBzZXJpYWxpemF0aW9uIChzLmRhdGEgaXMgYSBz
dHJpbmcgaWYgcy5wcm9jZXNzRGF0YSBpcyB0cnVlKQotICAgICAqIDMpIGtleSBpcyB0aGUgZGF0
YVR5cGUKLSAgICAgKiA0KSB0aGUgY2F0Y2hhbGwgc3ltYm9sICIqIiBjYW4gYmUgdXNlZAotICAg
ICAqIDUpIGV4ZWN1dGlvbiB3aWxsIHN0YXJ0IHdpdGggdHJhbnNwb3J0IGRhdGFUeXBlIGFuZCBU
SEVOIGNvbnRpbnVlIGRvd24gdG8gIioiIGlmIG5lZWRlZAotICAgICAqLwotICAgIHByZWZpbHRl
cnMgPSB7fSwKLQotICAgIC8qIFRyYW5zcG9ydHMgYmluZGluZ3MKLSAgICAgKiAxKSBrZXkgaXMg
dGhlIGRhdGFUeXBlCi0gICAgICogMikgdGhlIGNhdGNoYWxsIHN5bWJvbCAiKiIgY2FuIGJlIHVz
ZWQKLSAgICAgKiAzKSBzZWxlY3Rpb24gd2lsbCBzdGFydCB3aXRoIHRyYW5zcG9ydCBkYXRhVHlw
ZSBhbmQgVEhFTiBnbyB0byAiKiIgaWYgbmVlZGVkCi0gICAgICovCi0gICAgdHJhbnNwb3J0cyA9
IHt9LAotCi0gICAgLy8gQXZvaWQgY29tbWVudC1wcm9sb2cgY2hhciBzZXF1ZW5jZSAoIzEwMDk4
KTsgbXVzdCBhcHBlYXNlIGxpbnQgYW5kIGV2YWRlIGNvbXByZXNzaW9uCi0gICAgYWxsVHlwZXMg
PSAiKi8iLmNvbmNhdCgiKiIpOwotCi0vLyAjODEzOCwgSUUgbWF5IHRocm93IGFuIGV4Y2VwdGlv
biB3aGVuIGFjY2Vzc2luZwotLy8gYSBmaWVsZCBmcm9tIHdpbmRvdy5sb2NhdGlvbiBpZiBkb2N1
bWVudC5kb21haW4gaGFzIGJlZW4gc2V0Ci10cnkgewotICAgIGFqYXhMb2NhdGlvbiA9IGxvY2F0
aW9uLmhyZWY7Ci19IGNhdGNoKCBlICkgewotICAgIC8vIFVzZSB0aGUgaHJlZiBhdHRyaWJ1dGUg
b2YgYW4gQSBlbGVtZW50Ci0gICAgLy8gc2luY2UgSUUgd2lsbCBtb2RpZnkgaXQgZ2l2ZW4gZG9j
dW1lbnQubG9jYXRpb24KLSAgICBhamF4TG9jYXRpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCAiYSIgKTsKLSAgICBhamF4TG9jYXRpb24uaHJlZiA9ICIiOwotICAgIGFqYXhMb2NhdGlvbiA9
IGFqYXhMb2NhdGlvbi5ocmVmOwotfQotCi0vLyBTZWdtZW50IGxvY2F0aW9uIGludG8gcGFydHMK
LWFqYXhMb2NQYXJ0cyA9IHJ1cmwuZXhlYyggYWpheExvY2F0aW9uLnRvTG93ZXJDYXNlKCkgKSB8
fCBbXTsKLQotLy8gQmFzZSAiY29uc3RydWN0b3IiIGZvciBqUXVlcnkuYWpheFByZWZpbHRlciBh
bmQgalF1ZXJ5LmFqYXhUcmFuc3BvcnQKLWZ1bmN0aW9uIGFkZFRvUHJlZmlsdGVyc09yVHJhbnNw
b3J0cyggc3RydWN0dXJlICkgewotCi0gICAgLy8gZGF0YVR5cGVFeHByZXNzaW9uIGlzIG9wdGlv
bmFsIGFuZCBkZWZhdWx0cyB0byAiKiIKLSAgICByZXR1cm4gZnVuY3Rpb24oIGRhdGFUeXBlRXhw
cmVzc2lvbiwgZnVuYyApIHsKLQotICAgIGlmICggdHlwZW9mIGRhdGFUeXBlRXhwcmVzc2lvbiAh
PT0gInN0cmluZyIgKSB7Ci0gICAgZnVuYyA9IGRhdGFUeXBlRXhwcmVzc2lvbjsKLSAgICBkYXRh
VHlwZUV4cHJlc3Npb24gPSAiKiI7Ci0gICAgfQotCi0gICAgdmFyIGRhdGFUeXBlLAotICAgIGkg
PSAwLAotICAgIGRhdGFUeXBlcyA9IGRhdGFUeXBlRXhwcmVzc2lvbi50b0xvd2VyQ2FzZSgpLm1h
dGNoKCBjb3JlX3Jub3R3aGl0ZSApIHx8IFtdOwotCi0gICAgaWYgKCBqUXVlcnkuaXNGdW5jdGlv
biggZnVuYyApICkgewotICAgIC8vIEZvciBlYWNoIGRhdGFUeXBlIGluIHRoZSBkYXRhVHlwZUV4
cHJlc3Npb24KLSAgICB3aGlsZSAoIChkYXRhVHlwZSA9IGRhdGFUeXBlc1tpKytdKSApIHsKLSAg
ICAvLyBQcmVwZW5kIGlmIHJlcXVlc3RlZAotICAgIGlmICggZGF0YVR5cGVbMF0gPT09ICIrIiAp
IHsKLSAgICBkYXRhVHlwZSA9IGRhdGFUeXBlLnNsaWNlKCAxICkgfHwgIioiOwotICAgIChzdHJ1
Y3R1cmVbIGRhdGFUeXBlIF0gPSBzdHJ1Y3R1cmVbIGRhdGFUeXBlIF0gfHwgW10pLnVuc2hpZnQo
IGZ1bmMgKTsKLQotICAgIC8vIE90aGVyd2lzZSBhcHBlbmQKLSAgICB9IGVsc2UgewotICAgIChz
dHJ1Y3R1cmVbIGRhdGFUeXBlIF0gPSBzdHJ1Y3R1cmVbIGRhdGFUeXBlIF0gfHwgW10pLnB1c2go
IGZ1bmMgKTsKLSAgICB9Ci0gICAgfQotICAgIH0KLSAgICB9OwotfQotCi0vLyBCYXNlIGluc3Bl
Y3Rpb24gZnVuY3Rpb24gZm9yIHByZWZpbHRlcnMgYW5kIHRyYW5zcG9ydHMKLWZ1bmN0aW9uIGlu
c3BlY3RQcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCBzdHJ1Y3R1cmUsIG9wdGlvbnMsIG9yaWdpbmFs
T3B0aW9ucywganFYSFIgKSB7Ci0KLSAgICB2YXIgaW5zcGVjdGVkID0ge30sCi0gICAgc2Vla2lu
Z1RyYW5zcG9ydCA9ICggc3RydWN0dXJlID09PSB0cmFuc3BvcnRzICk7Ci0KLSAgICBmdW5jdGlv
biBpbnNwZWN0KCBkYXRhVHlwZSApIHsKLSAgICB2YXIgc2VsZWN0ZWQ7Ci0gICAgaW5zcGVjdGVk
WyBkYXRhVHlwZSBdID0gdHJ1ZTsKLSAgICBqUXVlcnkuZWFjaCggc3RydWN0dXJlWyBkYXRhVHlw
ZSBdIHx8IFtdLCBmdW5jdGlvbiggXywgcHJlZmlsdGVyT3JGYWN0b3J5ICkgewotICAgIHZhciBk
YXRhVHlwZU9yVHJhbnNwb3J0ID0gcHJlZmlsdGVyT3JGYWN0b3J5KCBvcHRpb25zLCBvcmlnaW5h
bE9wdGlvbnMsIGpxWEhSICk7Ci0gICAgaWYoIHR5cGVvZiBkYXRhVHlwZU9yVHJhbnNwb3J0ID09
PSAic3RyaW5nIiAmJiAhc2Vla2luZ1RyYW5zcG9ydCAmJiAhaW5zcGVjdGVkWyBkYXRhVHlwZU9y
VHJhbnNwb3J0IF0gKSB7Ci0gICAgb3B0aW9ucy5kYXRhVHlwZXMudW5zaGlmdCggZGF0YVR5cGVP
clRyYW5zcG9ydCApOwotICAgIGluc3BlY3QoIGRhdGFUeXBlT3JUcmFuc3BvcnQgKTsKLSAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfSBlbHNlIGlmICggc2Vla2luZ1RyYW5zcG9ydCApIHsKLSAgICBy
ZXR1cm4gISggc2VsZWN0ZWQgPSBkYXRhVHlwZU9yVHJhbnNwb3J0ICk7Ci0gICAgfQotICAgIH0p
OwotICAgIHJldHVybiBzZWxlY3RlZDsKLSAgICB9Ci0KLSAgICByZXR1cm4gaW5zcGVjdCggb3B0
aW9ucy5kYXRhVHlwZXNbIDAgXSApIHx8ICFpbnNwZWN0ZWRbICIqIiBdICYmIGluc3BlY3QoICIq
IiApOwotfQotCi0vLyBBIHNwZWNpYWwgZXh0ZW5kIGZvciBhamF4IG9wdGlvbnMKLS8vIHRoYXQg
dGFrZXMgImZsYXQiIG9wdGlvbnMgKG5vdCB0byBiZSBkZWVwIGV4dGVuZGVkKQotLy8gRml4ZXMg
Izk4ODcKLWZ1bmN0aW9uIGFqYXhFeHRlbmQoIHRhcmdldCwgc3JjICkgewotICAgIHZhciBkZWVw
LCBrZXksCi0gICAgZmxhdE9wdGlvbnMgPSBqUXVlcnkuYWpheFNldHRpbmdzLmZsYXRPcHRpb25z
IHx8IHt9OwotCi0gICAgZm9yICgga2V5IGluIHNyYyApIHsKLSAgICBpZiAoIHNyY1sga2V5IF0g
IT09IHVuZGVmaW5lZCApIHsKLSAgICAoIGZsYXRPcHRpb25zWyBrZXkgXSA/IHRhcmdldCA6ICgg
ZGVlcCB8fCAoZGVlcCA9IHt9KSApIClbIGtleSBdID0gc3JjWyBrZXkgXTsKLSAgICB9Ci0gICAg
fQotICAgIGlmICggZGVlcCApIHsKLSAgICBqUXVlcnkuZXh0ZW5kKCB0cnVlLCB0YXJnZXQsIGRl
ZXAgKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdGFyZ2V0OwotfQotCi1qUXVlcnkuZm4ubG9hZCA9
IGZ1bmN0aW9uKCB1cmwsIHBhcmFtcywgY2FsbGJhY2sgKSB7Ci0gICAgaWYgKCB0eXBlb2YgdXJs
ICE9PSAic3RyaW5nIiAmJiBfbG9hZCApIHsKLSAgICByZXR1cm4gX2xvYWQuYXBwbHkoIHRoaXMs
IGFyZ3VtZW50cyApOwotICAgIH0KLQotICAgIHZhciBzZWxlY3RvciwgcmVzcG9uc2UsIHR5cGUs
Ci0gICAgc2VsZiA9IHRoaXMsCi0gICAgb2ZmID0gdXJsLmluZGV4T2YoIiAiKTsKLQotICAgIGlm
ICggb2ZmID49IDAgKSB7Ci0gICAgc2VsZWN0b3IgPSB1cmwuc2xpY2UoIG9mZiwgdXJsLmxlbmd0
aCApOwotICAgIHVybCA9IHVybC5zbGljZSggMCwgb2ZmICk7Ci0gICAgfQotCi0gICAgLy8gSWYg
aXQncyBhIGZ1bmN0aW9uCi0gICAgaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggcGFyYW1zICkgKSB7
Ci0KLSAgICAvLyBXZSBhc3N1bWUgdGhhdCBpdCdzIHRoZSBjYWxsYmFjawotICAgIGNhbGxiYWNr
ID0gcGFyYW1zOwotICAgIHBhcmFtcyA9IHVuZGVmaW5lZDsKLQotICAgIC8vIE90aGVyd2lzZSwg
YnVpbGQgYSBwYXJhbSBzdHJpbmcKLSAgICB9IGVsc2UgaWYgKCBwYXJhbXMgJiYgdHlwZW9mIHBh
cmFtcyA9PT0gIm9iamVjdCIgKSB7Ci0gICAgdHlwZSA9ICJQT1NUIjsKLSAgICB9Ci0KLSAgICAv
LyBJZiB3ZSBoYXZlIGVsZW1lbnRzIHRvIG1vZGlmeSwgbWFrZSB0aGUgcmVxdWVzdAotICAgIGlm
ICggc2VsZi5sZW5ndGggPiAwICkgewotICAgIGpRdWVyeS5hamF4KHsKLSAgICB1cmw6IHVybCwK
LQotICAgIC8vIGlmICJ0eXBlIiB2YXJpYWJsZSBpcyB1bmRlZmluZWQsIHRoZW4gIkdFVCIgbWV0
aG9kIHdpbGwgYmUgdXNlZAotICAgIHR5cGU6IHR5cGUsCi0gICAgZGF0YVR5cGU6ICJodG1sIiwK
LSAgICBkYXRhOiBwYXJhbXMKLSAgICB9KS5kb25lKGZ1bmN0aW9uKCByZXNwb25zZVRleHQgKSB7
Ci0KLSAgICAvLyBTYXZlIHJlc3BvbnNlIGZvciB1c2UgaW4gY29tcGxldGUgY2FsbGJhY2sKLSAg
ICByZXNwb25zZSA9IGFyZ3VtZW50czsKLQotICAgIHNlbGYuaHRtbCggc2VsZWN0b3IgPwotCi0g
ICAgLy8gSWYgYSBzZWxlY3RvciB3YXMgc3BlY2lmaWVkLCBsb2NhdGUgdGhlIHJpZ2h0IGVsZW1l
bnRzIGluIGEgZHVtbXkgZGl2Ci0gICAgLy8gRXhjbHVkZSBzY3JpcHRzIHRvIGF2b2lkIElFICdQ
ZXJtaXNzaW9uIERlbmllZCcgZXJyb3JzCi0gICAgalF1ZXJ5KCI8ZGl2PiIpLmFwcGVuZCggalF1
ZXJ5LnBhcnNlSFRNTCggcmVzcG9uc2VUZXh0ICkgKS5maW5kKCBzZWxlY3RvciApIDoKLQotICAg
IC8vIE90aGVyd2lzZSB1c2UgdGhlIGZ1bGwgcmVzdWx0Ci0gICAgcmVzcG9uc2VUZXh0ICk7Ci0K
LSAgICB9KS5jb21wbGV0ZSggY2FsbGJhY2sgJiYgZnVuY3Rpb24oIGpxWEhSLCBzdGF0dXMgKSB7
Ci0gICAgc2VsZi5lYWNoKCBjYWxsYmFjaywgcmVzcG9uc2UgfHwgWyBqcVhIUi5yZXNwb25zZVRl
eHQsIHN0YXR1cywganFYSFIgXSApOwotICAgIH0pOwotICAgIH0KLQotICAgIHJldHVybiB0aGlz
OwotfTsKLQotLy8gQXR0YWNoIGEgYnVuY2ggb2YgZnVuY3Rpb25zIGZvciBoYW5kbGluZyBjb21t
b24gQUpBWCBldmVudHMKLWpRdWVyeS5lYWNoKCBbICJhamF4U3RhcnQiLCAiYWpheFN0b3AiLCAi
YWpheENvbXBsZXRlIiwgImFqYXhFcnJvciIsICJhamF4U3VjY2VzcyIsICJhamF4U2VuZCIgXSwg
ZnVuY3Rpb24oIGksIHR5cGUgKXsKLSAgICBqUXVlcnkuZm5bIHR5cGUgXSA9IGZ1bmN0aW9uKCBm
biApewotICAgIHJldHVybiB0aGlzLm9uKCB0eXBlLCBmbiApOwotICAgIH07Ci19KTsKLQotalF1
ZXJ5LmVhY2goIFsgImdldCIsICJwb3N0IiBdLCBmdW5jdGlvbiggaSwgbWV0aG9kICkgewotICAg
IGpRdWVyeVsgbWV0aG9kIF0gPSBmdW5jdGlvbiggdXJsLCBkYXRhLCBjYWxsYmFjaywgdHlwZSAp
IHsKLSAgICAvLyBzaGlmdCBhcmd1bWVudHMgaWYgZGF0YSBhcmd1bWVudCB3YXMgb21pdHRlZAot
ICAgIGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIGRhdGEgKSApIHsKLSAgICB0eXBlID0gdHlwZSB8
fCBjYWxsYmFjazsKLSAgICBjYWxsYmFjayA9IGRhdGE7Ci0gICAgZGF0YSA9IHVuZGVmaW5lZDsK
LSAgICB9Ci0KLSAgICByZXR1cm4galF1ZXJ5LmFqYXgoewotICAgIHVybDogdXJsLAotICAgIHR5
cGU6IG1ldGhvZCwKLSAgICBkYXRhVHlwZTogdHlwZSwKLSAgICBkYXRhOiBkYXRhLAotICAgIHN1
Y2Nlc3M6IGNhbGxiYWNrCi0gICAgfSk7Ci0gICAgfTsKLX0pOwotCi1qUXVlcnkuZXh0ZW5kKHsK
LQotICAgIC8vIENvdW50ZXIgZm9yIGhvbGRpbmcgdGhlIG51bWJlciBvZiBhY3RpdmUgcXVlcmll
cwotICAgIGFjdGl2ZTogMCwKLQotICAgIC8vIExhc3QtTW9kaWZpZWQgaGVhZGVyIGNhY2hlIGZv
ciBuZXh0IHJlcXVlc3QKLSAgICBsYXN0TW9kaWZpZWQ6IHt9LAotICAgIGV0YWc6IHt9LAotCi0g
ICAgYWpheFNldHRpbmdzOiB7Ci0gICAgdXJsOiBhamF4TG9jYXRpb24sCi0gICAgdHlwZTogIkdF
VCIsCi0gICAgaXNMb2NhbDogcmxvY2FsUHJvdG9jb2wudGVzdCggYWpheExvY1BhcnRzWyAxIF0g
KSwKLSAgICBnbG9iYWw6IHRydWUsCi0gICAgcHJvY2Vzc0RhdGE6IHRydWUsCi0gICAgYXN5bmM6
IHRydWUsCi0gICAgY29udGVudFR5cGU6ICJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29k
ZWQ7IGNoYXJzZXQ9VVRGLTgiLAotICAgIC8qCi0gICAgdGltZW91dDogMCwKLSAgICBkYXRhOiBu
dWxsLAotICAgIGRhdGFUeXBlOiBudWxsLAotICAgIHVzZXJuYW1lOiBudWxsLAotICAgIHBhc3N3
b3JkOiBudWxsLAotICAgIGNhY2hlOiBudWxsLAotICAgIHRocm93czogZmFsc2UsCi0gICAgdHJh
ZGl0aW9uYWw6IGZhbHNlLAotICAgIGhlYWRlcnM6IHt9LAotICAgICovCi0KLSAgICBhY2NlcHRz
OiB7Ci0gICAgIioiOiBhbGxUeXBlcywKLSAgICB0ZXh0OiAidGV4dC9wbGFpbiIsCi0gICAgaHRt
bDogInRleHQvaHRtbCIsCi0gICAgeG1sOiAiYXBwbGljYXRpb24veG1sLCB0ZXh0L3htbCIsCi0g
ICAganNvbjogImFwcGxpY2F0aW9uL2pzb24sIHRleHQvamF2YXNjcmlwdCIKLSAgICB9LAotCi0g
ICAgY29udGVudHM6IHsKLSAgICB4bWw6IC94bWwvLAotICAgIGh0bWw6IC9odG1sLywKLSAgICBq
c29uOiAvanNvbi8KLSAgICB9LAotCi0gICAgcmVzcG9uc2VGaWVsZHM6IHsKLSAgICB4bWw6ICJy
ZXNwb25zZVhNTCIsCi0gICAgdGV4dDogInJlc3BvbnNlVGV4dCIKLSAgICB9LAotCi0gICAgLy8g
RGF0YSBjb252ZXJ0ZXJzCi0gICAgLy8gS2V5cyBzZXBhcmF0ZSBzb3VyY2UgKG9yIGNhdGNoYWxs
ICIqIikgYW5kIGRlc3RpbmF0aW9uIHR5cGVzIHdpdGggYSBzaW5nbGUgc3BhY2UKLSAgICBjb252
ZXJ0ZXJzOiB7Ci0KLSAgICAvLyBDb252ZXJ0IGFueXRoaW5nIHRvIHRleHQKLSAgICAiKiB0ZXh0
Ijogd2luZG93LlN0cmluZywKLQotICAgIC8vIFRleHQgdG8gaHRtbCAodHJ1ZSA9IG5vIHRyYW5z
Zm9ybWF0aW9uKQotICAgICJ0ZXh0IGh0bWwiOiB0cnVlLAotCi0gICAgLy8gRXZhbHVhdGUgdGV4
dCBhcyBhIGpzb24gZXhwcmVzc2lvbgotICAgICJ0ZXh0IGpzb24iOiBqUXVlcnkucGFyc2VKU09O
LAotCi0gICAgLy8gUGFyc2UgdGV4dCBhcyB4bWwKLSAgICAidGV4dCB4bWwiOiBqUXVlcnkucGFy
c2VYTUwKLSAgICB9LAotCi0gICAgLy8gRm9yIG9wdGlvbnMgdGhhdCBzaG91bGRuJ3QgYmUgZGVl
cCBleHRlbmRlZDoKLSAgICAvLyB5b3UgY2FuIGFkZCB5b3VyIG93biBjdXN0b20gb3B0aW9ucyBo
ZXJlIGlmCi0gICAgLy8gYW5kIHdoZW4geW91IGNyZWF0ZSBvbmUgdGhhdCBzaG91bGRuJ3QgYmUK
LSAgICAvLyBkZWVwIGV4dGVuZGVkIChzZWUgYWpheEV4dGVuZCkKLSAgICBmbGF0T3B0aW9uczog
ewotICAgIHVybDogdHJ1ZSwKLSAgICBjb250ZXh0OiB0cnVlCi0gICAgfQotICAgIH0sCi0KLSAg
ICAvLyBDcmVhdGVzIGEgZnVsbCBmbGVkZ2VkIHNldHRpbmdzIG9iamVjdCBpbnRvIHRhcmdldAot
ICAgIC8vIHdpdGggYm90aCBhamF4U2V0dGluZ3MgYW5kIHNldHRpbmdzIGZpZWxkcy4KLSAgICAv
LyBJZiB0YXJnZXQgaXMgb21pdHRlZCwgd3JpdGVzIGludG8gYWpheFNldHRpbmdzLgotICAgIGFq
YXhTZXR1cDogZnVuY3Rpb24oIHRhcmdldCwgc2V0dGluZ3MgKSB7Ci0gICAgcmV0dXJuIHNldHRp
bmdzID8KLQotICAgIC8vIEJ1aWxkaW5nIGEgc2V0dGluZ3Mgb2JqZWN0Ci0gICAgYWpheEV4dGVu
ZCggYWpheEV4dGVuZCggdGFyZ2V0LCBqUXVlcnkuYWpheFNldHRpbmdzICksIHNldHRpbmdzICkg
OgotCi0gICAgLy8gRXh0ZW5kaW5nIGFqYXhTZXR0aW5ncwotICAgIGFqYXhFeHRlbmQoIGpRdWVy
eS5hamF4U2V0dGluZ3MsIHRhcmdldCApOwotICAgIH0sCi0KLSAgICBhamF4UHJlZmlsdGVyOiBh
ZGRUb1ByZWZpbHRlcnNPclRyYW5zcG9ydHMoIHByZWZpbHRlcnMgKSwKLSAgICBhamF4VHJhbnNw
b3J0OiBhZGRUb1ByZWZpbHRlcnNPclRyYW5zcG9ydHMoIHRyYW5zcG9ydHMgKSwKLQotICAgIC8v
IE1haW4gbWV0aG9kCi0gICAgYWpheDogZnVuY3Rpb24oIHVybCwgb3B0aW9ucyApIHsKLQotICAg
IC8vIElmIHVybCBpcyBhbiBvYmplY3QsIHNpbXVsYXRlIHByZS0xLjUgc2lnbmF0dXJlCi0gICAg
aWYgKCB0eXBlb2YgdXJsID09PSAib2JqZWN0IiApIHsKLSAgICBvcHRpb25zID0gdXJsOwotICAg
IHVybCA9IHVuZGVmaW5lZDsKLSAgICB9Ci0KLSAgICAvLyBGb3JjZSBvcHRpb25zIHRvIGJlIGFu
IG9iamVjdAotICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OwotCi0gICAgdmFyIC8vIENyb3Nz
LWRvbWFpbiBkZXRlY3Rpb24gdmFycwotICAgIHBhcnRzLAotICAgIC8vIExvb3AgdmFyaWFibGUK
LSAgICBpLAotICAgIC8vIFVSTCB3aXRob3V0IGFudGktY2FjaGUgcGFyYW0KLSAgICBjYWNoZVVS
TCwKLSAgICAvLyBSZXNwb25zZSBoZWFkZXJzIGFzIHN0cmluZwotICAgIHJlc3BvbnNlSGVhZGVy
c1N0cmluZywKLSAgICAvLyB0aW1lb3V0IGhhbmRsZQotICAgIHRpbWVvdXRUaW1lciwKLQotICAg
IC8vIFRvIGtub3cgaWYgZ2xvYmFsIGV2ZW50cyBhcmUgdG8gYmUgZGlzcGF0Y2hlZAotICAgIGZp
cmVHbG9iYWxzLAotCi0gICAgdHJhbnNwb3J0LAotICAgIC8vIFJlc3BvbnNlIGhlYWRlcnMKLSAg
ICByZXNwb25zZUhlYWRlcnMsCi0gICAgLy8gQ3JlYXRlIHRoZSBmaW5hbCBvcHRpb25zIG9iamVj
dAotICAgIHMgPSBqUXVlcnkuYWpheFNldHVwKCB7fSwgb3B0aW9ucyApLAotICAgIC8vIENhbGxi
YWNrcyBjb250ZXh0Ci0gICAgY2FsbGJhY2tDb250ZXh0ID0gcy5jb250ZXh0IHx8IHMsCi0gICAg
Ly8gQ29udGV4dCBmb3IgZ2xvYmFsIGV2ZW50cyBpcyBjYWxsYmFja0NvbnRleHQgaWYgaXQgaXMg
YSBET00gbm9kZSBvciBqUXVlcnkgY29sbGVjdGlvbgotICAgIGdsb2JhbEV2ZW50Q29udGV4dCA9
IHMuY29udGV4dCAmJiAoIGNhbGxiYWNrQ29udGV4dC5ub2RlVHlwZSB8fCBjYWxsYmFja0NvbnRl
eHQuanF1ZXJ5ICkgPwotICAgIGpRdWVyeSggY2FsbGJhY2tDb250ZXh0ICkgOgotICAgIGpRdWVy
eS5ldmVudCwKLSAgICAvLyBEZWZlcnJlZHMKLSAgICBkZWZlcnJlZCA9IGpRdWVyeS5EZWZlcnJl
ZCgpLAotICAgIGNvbXBsZXRlRGVmZXJyZWQgPSBqUXVlcnkuQ2FsbGJhY2tzKCJvbmNlIG1lbW9y
eSIpLAotICAgIC8vIFN0YXR1cy1kZXBlbmRlbnQgY2FsbGJhY2tzCi0gICAgc3RhdHVzQ29kZSA9
IHMuc3RhdHVzQ29kZSB8fCB7fSwKLSAgICAvLyBIZWFkZXJzICh0aGV5IGFyZSBzZW50IGFsbCBh
dCBvbmNlKQotICAgIHJlcXVlc3RIZWFkZXJzID0ge30sCi0gICAgcmVxdWVzdEhlYWRlcnNOYW1l
cyA9IHt9LAotICAgIC8vIFRoZSBqcVhIUiBzdGF0ZQotICAgIHN0YXRlID0gMCwKLSAgICAvLyBE
ZWZhdWx0IGFib3J0IG1lc3NhZ2UKLSAgICBzdHJBYm9ydCA9ICJjYW5jZWxlZCIsCi0gICAgLy8g
RmFrZSB4aHIKLSAgICBqcVhIUiA9IHsKLSAgICByZWFkeVN0YXRlOiAwLAotCi0gICAgLy8gQnVp
bGRzIGhlYWRlcnMgaGFzaHRhYmxlIGlmIG5lZWRlZAotICAgIGdldFJlc3BvbnNlSGVhZGVyOiBm
dW5jdGlvbigga2V5ICkgewotICAgIHZhciBtYXRjaDsKLSAgICBpZiAoIHN0YXRlID09PSAyICkg
ewotICAgIGlmICggIXJlc3BvbnNlSGVhZGVycyApIHsKLSAgICByZXNwb25zZUhlYWRlcnMgPSB7
fTsKLSAgICB3aGlsZSAoIChtYXRjaCA9IHJoZWFkZXJzLmV4ZWMoIHJlc3BvbnNlSGVhZGVyc1N0
cmluZyApKSApIHsKLSAgICByZXNwb25zZUhlYWRlcnNbIG1hdGNoWzFdLnRvTG93ZXJDYXNlKCkg
XSA9IG1hdGNoWyAyIF07Ci0gICAgfQotICAgIH0KLSAgICBtYXRjaCA9IHJlc3BvbnNlSGVhZGVy
c1sga2V5LnRvTG93ZXJDYXNlKCkgXTsKLSAgICB9Ci0gICAgcmV0dXJuIG1hdGNoID09IG51bGwg
PyBudWxsIDogbWF0Y2g7Ci0gICAgfSwKLQotICAgIC8vIFJhdyBzdHJpbmcKLSAgICBnZXRBbGxS
ZXNwb25zZUhlYWRlcnM6IGZ1bmN0aW9uKCkgewotICAgIHJldHVybiBzdGF0ZSA9PT0gMiA/IHJl
c3BvbnNlSGVhZGVyc1N0cmluZyA6IG51bGw7Ci0gICAgfSwKLQotICAgIC8vIENhY2hlcyB0aGUg
aGVhZGVyCi0gICAgc2V0UmVxdWVzdEhlYWRlcjogZnVuY3Rpb24oIG5hbWUsIHZhbHVlICkgewot
ICAgIHZhciBsbmFtZSA9IG5hbWUudG9Mb3dlckNhc2UoKTsKLSAgICBpZiAoICFzdGF0ZSApIHsK
LSAgICBuYW1lID0gcmVxdWVzdEhlYWRlcnNOYW1lc1sgbG5hbWUgXSA9IHJlcXVlc3RIZWFkZXJz
TmFtZXNbIGxuYW1lIF0gfHwgbmFtZTsKLSAgICByZXF1ZXN0SGVhZGVyc1sgbmFtZSBdID0gdmFs
dWU7Ci0gICAgfQotICAgIHJldHVybiB0aGlzOwotICAgIH0sCi0KLSAgICAvLyBPdmVycmlkZXMg
cmVzcG9uc2UgY29udGVudC10eXBlIGhlYWRlcgotICAgIG92ZXJyaWRlTWltZVR5cGU6IGZ1bmN0
aW9uKCB0eXBlICkgewotICAgIGlmICggIXN0YXRlICkgewotICAgIHMubWltZVR5cGUgPSB0eXBl
OwotICAgIH0KLSAgICByZXR1cm4gdGhpczsKLSAgICB9LAotCi0gICAgLy8gU3RhdHVzLWRlcGVu
ZGVudCBjYWxsYmFja3MKLSAgICBzdGF0dXNDb2RlOiBmdW5jdGlvbiggbWFwICkgewotICAgIHZh
ciBjb2RlOwotICAgIGlmICggbWFwICkgewotICAgIGlmICggc3RhdGUgPCAyICkgewotICAgIGZv
ciAoIGNvZGUgaW4gbWFwICkgewotICAgIC8vIExhenktYWRkIHRoZSBuZXcgY2FsbGJhY2sgaW4g
YSB3YXkgdGhhdCBwcmVzZXJ2ZXMgb2xkIG9uZXMKLSAgICBzdGF0dXNDb2RlWyBjb2RlIF0gPSBb
IHN0YXR1c0NvZGVbIGNvZGUgXSwgbWFwWyBjb2RlIF0gXTsKLSAgICB9Ci0gICAgfSBlbHNlIHsK
LSAgICAvLyBFeGVjdXRlIHRoZSBhcHByb3ByaWF0ZSBjYWxsYmFja3MKLSAgICBqcVhIUi5hbHdh
eXMoIG1hcFsganFYSFIuc3RhdHVzIF0gKTsKLSAgICB9Ci0gICAgfQotICAgIHJldHVybiB0aGlz
OwotICAgIH0sCi0KLSAgICAvLyBDYW5jZWwgdGhlIHJlcXVlc3QKLSAgICBhYm9ydDogZnVuY3Rp
b24oIHN0YXR1c1RleHQgKSB7Ci0gICAgdmFyIGZpbmFsVGV4dCA9IHN0YXR1c1RleHQgfHwgc3Ry
QWJvcnQ7Ci0gICAgaWYgKCB0cmFuc3BvcnQgKSB7Ci0gICAgdHJhbnNwb3J0LmFib3J0KCBmaW5h
bFRleHQgKTsKLSAgICB9Ci0gICAgZG9uZSggMCwgZmluYWxUZXh0ICk7Ci0gICAgcmV0dXJuIHRo
aXM7Ci0gICAgfQotICAgIH07Ci0KLSAgICAvLyBBdHRhY2ggZGVmZXJyZWRzCi0gICAgZGVmZXJy
ZWQucHJvbWlzZSgganFYSFIgKS5jb21wbGV0ZSA9IGNvbXBsZXRlRGVmZXJyZWQuYWRkOwotICAg
IGpxWEhSLnN1Y2Nlc3MgPSBqcVhIUi5kb25lOwotICAgIGpxWEhSLmVycm9yID0ganFYSFIuZmFp
bDsKLQotICAgIC8vIFJlbW92ZSBoYXNoIGNoYXJhY3RlciAoIzc1MzE6IGFuZCBzdHJpbmcgcHJv
bW90aW9uKQotICAgIC8vIEFkZCBwcm90b2NvbCBpZiBub3QgcHJvdmlkZWQgKCM1ODY2OiBJRTcg
aXNzdWUgd2l0aCBwcm90b2NvbC1sZXNzIHVybHMpCi0gICAgLy8gSGFuZGxlIGZhbHN5IHVybCBp
biB0aGUgc2V0dGluZ3Mgb2JqZWN0ICgjMTAwOTM6IGNvbnNpc3RlbmN5IHdpdGggb2xkIHNpZ25h
dHVyZSkKLSAgICAvLyBXZSBhbHNvIHVzZSB0aGUgdXJsIHBhcmFtZXRlciBpZiBhdmFpbGFibGUK
LSAgICBzLnVybCA9ICggKCB1cmwgfHwgcy51cmwgfHwgYWpheExvY2F0aW9uICkgKyAiIiApLnJl
cGxhY2UoIHJoYXNoLCAiIiApLnJlcGxhY2UoIHJwcm90b2NvbCwgYWpheExvY1BhcnRzWyAxIF0g
KyAiLy8iICk7Ci0KLSAgICAvLyBBbGlhcyBtZXRob2Qgb3B0aW9uIHRvIHR5cGUgYXMgcGVyIHRp
Y2tldCAjMTIwMDQKLSAgICBzLnR5cGUgPSBvcHRpb25zLm1ldGhvZCB8fCBvcHRpb25zLnR5cGUg
fHwgcy5tZXRob2QgfHwgcy50eXBlOwotCi0gICAgLy8gRXh0cmFjdCBkYXRhVHlwZXMgbGlzdAot
ICAgIHMuZGF0YVR5cGVzID0galF1ZXJ5LnRyaW0oIHMuZGF0YVR5cGUgfHwgIioiICkudG9Mb3dl
ckNhc2UoKS5tYXRjaCggY29yZV9ybm90d2hpdGUgKSB8fCBbIiJdOwotCi0gICAgLy8gQSBjcm9z
cy1kb21haW4gcmVxdWVzdCBpcyBpbiBvcmRlciB3aGVuIHdlIGhhdmUgYSBwcm90b2NvbDpob3N0
OnBvcnQgbWlzbWF0Y2gKLSAgICBpZiAoIHMuY3Jvc3NEb21haW4gPT0gbnVsbCApIHsKLSAgICBw
YXJ0cyA9IHJ1cmwuZXhlYyggcy51cmwudG9Mb3dlckNhc2UoKSApOwotICAgIHMuY3Jvc3NEb21h
aW4gPSAhISggcGFydHMgJiYKLSAgICAoIHBhcnRzWyAxIF0gIT09IGFqYXhMb2NQYXJ0c1sgMSBd
IHx8IHBhcnRzWyAyIF0gIT09IGFqYXhMb2NQYXJ0c1sgMiBdIHx8Ci0gICAgKCBwYXJ0c1sgMyBd
IHx8ICggcGFydHNbIDEgXSA9PT0gImh0dHA6IiA/IDgwIDogNDQzICkgKSAhPQotICAgICggYWph
eExvY1BhcnRzWyAzIF0gfHwgKCBhamF4TG9jUGFydHNbIDEgXSA9PT0gImh0dHA6IiA/IDgwIDog
NDQzICkgKSApCi0gICAgKTsKLSAgICB9Ci0KLSAgICAvLyBDb252ZXJ0IGRhdGEgaWYgbm90IGFs
cmVhZHkgYSBzdHJpbmcKLSAgICBpZiAoIHMuZGF0YSAmJiBzLnByb2Nlc3NEYXRhICYmIHR5cGVv
ZiBzLmRhdGEgIT09ICJzdHJpbmciICkgewotICAgIHMuZGF0YSA9IGpRdWVyeS5wYXJhbSggcy5k
YXRhLCBzLnRyYWRpdGlvbmFsICk7Ci0gICAgfQotCi0gICAgLy8gQXBwbHkgcHJlZmlsdGVycwot
ICAgIGluc3BlY3RQcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCBwcmVmaWx0ZXJzLCBzLCBvcHRpb25z
LCBqcVhIUiApOwotCi0gICAgLy8gSWYgcmVxdWVzdCB3YXMgYWJvcnRlZCBpbnNpZGUgYSBwcmVm
aWx0ZXIsIHN0b3AgdGhlcmUKLSAgICBpZiAoIHN0YXRlID09PSAyICkgewotICAgIHJldHVybiBq
cVhIUjsKLSAgICB9Ci0KLSAgICAvLyBXZSBjYW4gZmlyZSBnbG9iYWwgZXZlbnRzIGFzIG9mIG5v
dyBpZiBhc2tlZCB0bwotICAgIGZpcmVHbG9iYWxzID0gcy5nbG9iYWw7Ci0KLSAgICAvLyBXYXRj
aCBmb3IgYSBuZXcgc2V0IG9mIHJlcXVlc3RzCi0gICAgaWYgKCBmaXJlR2xvYmFscyAmJiBqUXVl
cnkuYWN0aXZlKysgPT09IDAgKSB7Ci0gICAgalF1ZXJ5LmV2ZW50LnRyaWdnZXIoImFqYXhTdGFy
dCIpOwotICAgIH0KLQotICAgIC8vIFVwcGVyY2FzZSB0aGUgdHlwZQotICAgIHMudHlwZSA9IHMu
dHlwZS50b1VwcGVyQ2FzZSgpOwotCi0gICAgLy8gRGV0ZXJtaW5lIGlmIHJlcXVlc3QgaGFzIGNv
bnRlbnQKLSAgICBzLmhhc0NvbnRlbnQgPSAhcm5vQ29udGVudC50ZXN0KCBzLnR5cGUgKTsKLQot
ICAgIC8vIFNhdmUgdGhlIFVSTCBpbiBjYXNlIHdlJ3JlIHRveWluZyB3aXRoIHRoZSBJZi1Nb2Rp
ZmllZC1TaW5jZQotICAgIC8vIGFuZC9vciBJZi1Ob25lLU1hdGNoIGhlYWRlciBsYXRlciBvbgot
ICAgIGNhY2hlVVJMID0gcy51cmw7Ci0KLSAgICAvLyBNb3JlIG9wdGlvbnMgaGFuZGxpbmcgZm9y
IHJlcXVlc3RzIHdpdGggbm8gY29udGVudAotICAgIGlmICggIXMuaGFzQ29udGVudCApIHsKLQot
ICAgIC8vIElmIGRhdGEgaXMgYXZhaWxhYmxlLCBhcHBlbmQgZGF0YSB0byB1cmwKLSAgICBpZiAo
IHMuZGF0YSApIHsKLSAgICBjYWNoZVVSTCA9ICggcy51cmwgKz0gKCBhamF4X3JxdWVyeS50ZXN0
KCBjYWNoZVVSTCApID8gIiYiIDogIj8iICkgKyBzLmRhdGEgKTsKLSAgICAvLyAjOTY4MjogcmVt
b3ZlIGRhdGEgc28gdGhhdCBpdCdzIG5vdCB1c2VkIGluIGFuIGV2ZW50dWFsIHJldHJ5Ci0gICAg
ZGVsZXRlIHMuZGF0YTsKLSAgICB9Ci0KLSAgICAvLyBBZGQgYW50aS1jYWNoZSBpbiB1cmwgaWYg
bmVlZGVkCi0gICAgaWYgKCBzLmNhY2hlID09PSBmYWxzZSApIHsKLSAgICBzLnVybCA9IHJ0cy50
ZXN0KCBjYWNoZVVSTCApID8KLQotICAgIC8vIElmIHRoZXJlIGlzIGFscmVhZHkgYSAnXycgcGFy
YW1ldGVyLCBzZXQgaXRzIHZhbHVlCi0gICAgY2FjaGVVUkwucmVwbGFjZSggcnRzLCAiJDFfPSIg
KyBhamF4X25vbmNlKysgKSA6Ci0KLSAgICAvLyBPdGhlcndpc2UgYWRkIG9uZSB0byB0aGUgZW5k
Ci0gICAgY2FjaGVVUkwgKyAoIGFqYXhfcnF1ZXJ5LnRlc3QoIGNhY2hlVVJMICkgPyAiJiIgOiAi
PyIgKSArICJfPSIgKyBhamF4X25vbmNlKys7Ci0gICAgfQotICAgIH0KLQotICAgIC8vIFNldCB0
aGUgSWYtTW9kaWZpZWQtU2luY2UgYW5kL29yIElmLU5vbmUtTWF0Y2ggaGVhZGVyLCBpZiBpbiBp
Zk1vZGlmaWVkIG1vZGUuCi0gICAgaWYgKCBzLmlmTW9kaWZpZWQgKSB7Ci0gICAgaWYgKCBqUXVl
cnkubGFzdE1vZGlmaWVkWyBjYWNoZVVSTCBdICkgewotICAgIGpxWEhSLnNldFJlcXVlc3RIZWFk
ZXIoICJJZi1Nb2RpZmllZC1TaW5jZSIsIGpRdWVyeS5sYXN0TW9kaWZpZWRbIGNhY2hlVVJMIF0g
KTsKLSAgICB9Ci0gICAgaWYgKCBqUXVlcnkuZXRhZ1sgY2FjaGVVUkwgXSApIHsKLSAgICBqcVhI
Ui5zZXRSZXF1ZXN0SGVhZGVyKCAiSWYtTm9uZS1NYXRjaCIsIGpRdWVyeS5ldGFnWyBjYWNoZVVS
TCBdICk7Ci0gICAgfQotICAgIH0KLQotICAgIC8vIFNldCB0aGUgY29ycmVjdCBoZWFkZXIsIGlm
IGRhdGEgaXMgYmVpbmcgc2VudAotICAgIGlmICggcy5kYXRhICYmIHMuaGFzQ29udGVudCAmJiBz
LmNvbnRlbnRUeXBlICE9PSBmYWxzZSB8fCBvcHRpb25zLmNvbnRlbnRUeXBlICkgewotICAgIGpx
WEhSLnNldFJlcXVlc3RIZWFkZXIoICJDb250ZW50LVR5cGUiLCBzLmNvbnRlbnRUeXBlICk7Ci0g
ICAgfQotCi0gICAgLy8gU2V0IHRoZSBBY2NlcHRzIGhlYWRlciBmb3IgdGhlIHNlcnZlciwgZGVw
ZW5kaW5nIG9uIHRoZSBkYXRhVHlwZQotICAgIGpxWEhSLnNldFJlcXVlc3RIZWFkZXIoCi0gICAg
IkFjY2VwdCIsCi0gICAgcy5kYXRhVHlwZXNbIDAgXSAmJiBzLmFjY2VwdHNbIHMuZGF0YVR5cGVz
WzBdIF0gPwotICAgIHMuYWNjZXB0c1sgcy5kYXRhVHlwZXNbMF0gXSArICggcy5kYXRhVHlwZXNb
IDAgXSAhPT0gIioiID8gIiwgIiArIGFsbFR5cGVzICsgIjsgcT0wLjAxIiA6ICIiICkgOgotICAg
IHMuYWNjZXB0c1sgIioiIF0KLSAgICApOwotCi0gICAgLy8gQ2hlY2sgZm9yIGhlYWRlcnMgb3B0
aW9uCi0gICAgZm9yICggaSBpbiBzLmhlYWRlcnMgKSB7Ci0gICAganFYSFIuc2V0UmVxdWVzdEhl
YWRlciggaSwgcy5oZWFkZXJzWyBpIF0gKTsKLSAgICB9Ci0KLSAgICAvLyBBbGxvdyBjdXN0b20g
aGVhZGVycy9taW1ldHlwZXMgYW5kIGVhcmx5IGFib3J0Ci0gICAgaWYgKCBzLmJlZm9yZVNlbmQg
JiYgKCBzLmJlZm9yZVNlbmQuY2FsbCggY2FsbGJhY2tDb250ZXh0LCBqcVhIUiwgcyApID09PSBm
YWxzZSB8fCBzdGF0ZSA9PT0gMiApICkgewotICAgIC8vIEFib3J0IGlmIG5vdCBkb25lIGFscmVh
ZHkgYW5kIHJldHVybgotICAgIHJldHVybiBqcVhIUi5hYm9ydCgpOwotICAgIH0KLQotICAgIC8v
IGFib3J0aW5nIGlzIG5vIGxvbmdlciBhIGNhbmNlbGxhdGlvbgotICAgIHN0ckFib3J0ID0gImFi
b3J0IjsKLQotICAgIC8vIEluc3RhbGwgY2FsbGJhY2tzIG9uIGRlZmVycmVkcwotICAgIGZvciAo
IGkgaW4geyBzdWNjZXNzOiAxLCBlcnJvcjogMSwgY29tcGxldGU6IDEgfSApIHsKLSAgICBqcVhI
UlsgaSBdKCBzWyBpIF0gKTsKLSAgICB9Ci0KLSAgICAvLyBHZXQgdHJhbnNwb3J0Ci0gICAgdHJh
bnNwb3J0ID0gaW5zcGVjdFByZWZpbHRlcnNPclRyYW5zcG9ydHMoIHRyYW5zcG9ydHMsIHMsIG9w
dGlvbnMsIGpxWEhSICk7Ci0KLSAgICAvLyBJZiBubyB0cmFuc3BvcnQsIHdlIGF1dG8tYWJvcnQK
LSAgICBpZiAoICF0cmFuc3BvcnQgKSB7Ci0gICAgZG9uZSggLTEsICJObyBUcmFuc3BvcnQiICk7
Ci0gICAgfSBlbHNlIHsKLSAgICBqcVhIUi5yZWFkeVN0YXRlID0gMTsKLQotICAgIC8vIFNlbmQg
Z2xvYmFsIGV2ZW50Ci0gICAgaWYgKCBmaXJlR2xvYmFscyApIHsKLSAgICBnbG9iYWxFdmVudENv
bnRleHQudHJpZ2dlciggImFqYXhTZW5kIiwgWyBqcVhIUiwgcyBdICk7Ci0gICAgfQotICAgIC8v
IFRpbWVvdXQKLSAgICBpZiAoIHMuYXN5bmMgJiYgcy50aW1lb3V0ID4gMCApIHsKLSAgICB0aW1l
b3V0VGltZXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgIGpxWEhSLmFib3J0KCJ0aW1l
b3V0Iik7Ci0gICAgfSwgcy50aW1lb3V0ICk7Ci0gICAgfQotCi0gICAgdHJ5IHsKLSAgICBzdGF0
ZSA9IDE7Ci0gICAgdHJhbnNwb3J0LnNlbmQoIHJlcXVlc3RIZWFkZXJzLCBkb25lICk7Ci0gICAg
fSBjYXRjaCAoIGUgKSB7Ci0gICAgLy8gUHJvcGFnYXRlIGV4Y2VwdGlvbiBhcyBlcnJvciBpZiBu
b3QgZG9uZQotICAgIGlmICggc3RhdGUgPCAyICkgewotICAgIGRvbmUoIC0xLCBlICk7Ci0gICAg
Ly8gU2ltcGx5IHJldGhyb3cgb3RoZXJ3aXNlCi0gICAgfSBlbHNlIHsKLSAgICB0aHJvdyBlOwot
ICAgIH0KLSAgICB9Ci0gICAgfQotCi0gICAgLy8gQ2FsbGJhY2sgZm9yIHdoZW4gZXZlcnl0aGlu
ZyBpcyBkb25lCi0gICAgZnVuY3Rpb24gZG9uZSggc3RhdHVzLCBuYXRpdmVTdGF0dXNUZXh0LCBy
ZXNwb25zZXMsIGhlYWRlcnMgKSB7Ci0gICAgdmFyIGlzU3VjY2Vzcywgc3VjY2VzcywgZXJyb3Is
IHJlc3BvbnNlLCBtb2RpZmllZCwKLSAgICBzdGF0dXNUZXh0ID0gbmF0aXZlU3RhdHVzVGV4dDsK
LQotICAgIC8vIENhbGxlZCBvbmNlCi0gICAgaWYgKCBzdGF0ZSA9PT0gMiApIHsKLSAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgLy8gU3RhdGUgaXMgImRvbmUiIG5vdwotICAgIHN0YXRlID0gMjsK
LQotICAgIC8vIENsZWFyIHRpbWVvdXQgaWYgaXQgZXhpc3RzCi0gICAgaWYgKCB0aW1lb3V0VGlt
ZXIgKSB7Ci0gICAgY2xlYXJUaW1lb3V0KCB0aW1lb3V0VGltZXIgKTsKLSAgICB9Ci0KLSAgICAv
LyBEZXJlZmVyZW5jZSB0cmFuc3BvcnQgZm9yIGVhcmx5IGdhcmJhZ2UgY29sbGVjdGlvbgotICAg
IC8vIChubyBtYXR0ZXIgaG93IGxvbmcgdGhlIGpxWEhSIG9iamVjdCB3aWxsIGJlIHVzZWQpCi0g
ICAgdHJhbnNwb3J0ID0gdW5kZWZpbmVkOwotCi0gICAgLy8gQ2FjaGUgcmVzcG9uc2UgaGVhZGVy
cwotICAgIHJlc3BvbnNlSGVhZGVyc1N0cmluZyA9IGhlYWRlcnMgfHwgIiI7Ci0KLSAgICAvLyBT
ZXQgcmVhZHlTdGF0ZQotICAgIGpxWEhSLnJlYWR5U3RhdGUgPSBzdGF0dXMgPiAwID8gNCA6IDA7
Ci0KLSAgICAvLyBHZXQgcmVzcG9uc2UgZGF0YQotICAgIGlmICggcmVzcG9uc2VzICkgewotICAg
IHJlc3BvbnNlID0gYWpheEhhbmRsZVJlc3BvbnNlcyggcywganFYSFIsIHJlc3BvbnNlcyApOwot
ICAgIH0KLQotICAgIC8vIElmIHN1Y2Nlc3NmdWwsIGhhbmRsZSB0eXBlIGNoYWluaW5nCi0gICAg
aWYgKCBzdGF0dXMgPj0gMjAwICYmIHN0YXR1cyA8IDMwMCB8fCBzdGF0dXMgPT09IDMwNCApIHsK
LQotICAgIC8vIFNldCB0aGUgSWYtTW9kaWZpZWQtU2luY2UgYW5kL29yIElmLU5vbmUtTWF0Y2gg
aGVhZGVyLCBpZiBpbiBpZk1vZGlmaWVkIG1vZGUuCi0gICAgaWYgKCBzLmlmTW9kaWZpZWQgKSB7
Ci0gICAgbW9kaWZpZWQgPSBqcVhIUi5nZXRSZXNwb25zZUhlYWRlcigiTGFzdC1Nb2RpZmllZCIp
OwotICAgIGlmICggbW9kaWZpZWQgKSB7Ci0gICAgalF1ZXJ5Lmxhc3RNb2RpZmllZFsgY2FjaGVV
UkwgXSA9IG1vZGlmaWVkOwotICAgIH0KLSAgICBtb2RpZmllZCA9IGpxWEhSLmdldFJlc3BvbnNl
SGVhZGVyKCJldGFnIik7Ci0gICAgaWYgKCBtb2RpZmllZCApIHsKLSAgICBqUXVlcnkuZXRhZ1sg
Y2FjaGVVUkwgXSA9IG1vZGlmaWVkOwotICAgIH0KLSAgICB9Ci0KLSAgICAvLyBpZiBubyBjb250
ZW50Ci0gICAgaWYgKCBzdGF0dXMgPT09IDIwNCApIHsKLSAgICBpc1N1Y2Nlc3MgPSB0cnVlOwot
ICAgIHN0YXR1c1RleHQgPSAibm9jb250ZW50IjsKLQotICAgIC8vIGlmIG5vdCBtb2RpZmllZAot
ICAgIH0gZWxzZSBpZiAoIHN0YXR1cyA9PT0gMzA0ICkgewotICAgIGlzU3VjY2VzcyA9IHRydWU7
Ci0gICAgc3RhdHVzVGV4dCA9ICJub3Rtb2RpZmllZCI7Ci0KLSAgICAvLyBJZiB3ZSBoYXZlIGRh
dGEsIGxldCdzIGNvbnZlcnQgaXQKLSAgICB9IGVsc2UgewotICAgIGlzU3VjY2VzcyA9IGFqYXhD
b252ZXJ0KCBzLCByZXNwb25zZSApOwotICAgIHN0YXR1c1RleHQgPSBpc1N1Y2Nlc3Muc3RhdGU7
Ci0gICAgc3VjY2VzcyA9IGlzU3VjY2Vzcy5kYXRhOwotICAgIGVycm9yID0gaXNTdWNjZXNzLmVy
cm9yOwotICAgIGlzU3VjY2VzcyA9ICFlcnJvcjsKLSAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAv
LyBXZSBleHRyYWN0IGVycm9yIGZyb20gc3RhdHVzVGV4dAotICAgIC8vIHRoZW4gbm9ybWFsaXpl
IHN0YXR1c1RleHQgYW5kIHN0YXR1cyBmb3Igbm9uLWFib3J0cwotICAgIGVycm9yID0gc3RhdHVz
VGV4dDsKLSAgICBpZiAoIHN0YXR1cyB8fCAhc3RhdHVzVGV4dCApIHsKLSAgICBzdGF0dXNUZXh0
ID0gImVycm9yIjsKLSAgICBpZiAoIHN0YXR1cyA8IDAgKSB7Ci0gICAgc3RhdHVzID0gMDsKLSAg
ICB9Ci0gICAgfQotICAgIH0KLQotICAgIC8vIFNldCBkYXRhIGZvciB0aGUgZmFrZSB4aHIgb2Jq
ZWN0Ci0gICAganFYSFIuc3RhdHVzID0gc3RhdHVzOwotICAgIGpxWEhSLnN0YXR1c1RleHQgPSAo
IG5hdGl2ZVN0YXR1c1RleHQgfHwgc3RhdHVzVGV4dCApICsgIiI7Ci0KLSAgICAvLyBTdWNjZXNz
L0Vycm9yCi0gICAgaWYgKCBpc1N1Y2Nlc3MgKSB7Ci0gICAgZGVmZXJyZWQucmVzb2x2ZVdpdGgo
IGNhbGxiYWNrQ29udGV4dCwgWyBzdWNjZXNzLCBzdGF0dXNUZXh0LCBqcVhIUiBdICk7Ci0gICAg
fSBlbHNlIHsKLSAgICBkZWZlcnJlZC5yZWplY3RXaXRoKCBjYWxsYmFja0NvbnRleHQsIFsganFY
SFIsIHN0YXR1c1RleHQsIGVycm9yIF0gKTsKLSAgICB9Ci0KLSAgICAvLyBTdGF0dXMtZGVwZW5k
ZW50IGNhbGxiYWNrcwotICAgIGpxWEhSLnN0YXR1c0NvZGUoIHN0YXR1c0NvZGUgKTsKLSAgICBz
dGF0dXNDb2RlID0gdW5kZWZpbmVkOwotCi0gICAgaWYgKCBmaXJlR2xvYmFscyApIHsKLSAgICBn
bG9iYWxFdmVudENvbnRleHQudHJpZ2dlciggaXNTdWNjZXNzID8gImFqYXhTdWNjZXNzIiA6ICJh
amF4RXJyb3IiLAotICAgIFsganFYSFIsIHMsIGlzU3VjY2VzcyA/IHN1Y2Nlc3MgOiBlcnJvciBd
ICk7Ci0gICAgfQotCi0gICAgLy8gQ29tcGxldGUKLSAgICBjb21wbGV0ZURlZmVycmVkLmZpcmVX
aXRoKCBjYWxsYmFja0NvbnRleHQsIFsganFYSFIsIHN0YXR1c1RleHQgXSApOwotCi0gICAgaWYg
KCBmaXJlR2xvYmFscyApIHsKLSAgICBnbG9iYWxFdmVudENvbnRleHQudHJpZ2dlciggImFqYXhD
b21wbGV0ZSIsIFsganFYSFIsIHMgXSApOwotICAgIC8vIEhhbmRsZSB0aGUgZ2xvYmFsIEFKQVgg
Y291bnRlcgotICAgIGlmICggISggLS1qUXVlcnkuYWN0aXZlICkgKSB7Ci0gICAgalF1ZXJ5LmV2
ZW50LnRyaWdnZXIoImFqYXhTdG9wIik7Ci0gICAgfQotICAgIH0KLSAgICB9Ci0KLSAgICByZXR1
cm4ganFYSFI7Ci0gICAgfSwKLQotICAgIGdldFNjcmlwdDogZnVuY3Rpb24oIHVybCwgY2FsbGJh
Y2sgKSB7Ci0gICAgcmV0dXJuIGpRdWVyeS5nZXQoIHVybCwgdW5kZWZpbmVkLCBjYWxsYmFjaywg
InNjcmlwdCIgKTsKLSAgICB9LAotCi0gICAgZ2V0SlNPTjogZnVuY3Rpb24oIHVybCwgZGF0YSwg
Y2FsbGJhY2sgKSB7Ci0gICAgcmV0dXJuIGpRdWVyeS5nZXQoIHVybCwgZGF0YSwgY2FsbGJhY2ss
ICJqc29uIiApOwotICAgIH0KLX0pOwotCi0vKiBIYW5kbGVzIHJlc3BvbnNlcyB0byBhbiBhamF4
IHJlcXVlc3Q6Ci0gKiAtIHNldHMgYWxsIHJlc3BvbnNlWFhYIGZpZWxkcyBhY2NvcmRpbmdseQot
ICogLSBmaW5kcyB0aGUgcmlnaHQgZGF0YVR5cGUgKG1lZGlhdGVzIGJldHdlZW4gY29udGVudC10
eXBlIGFuZCBleHBlY3RlZCBkYXRhVHlwZSkKLSAqIC0gcmV0dXJucyB0aGUgY29ycmVzcG9uZGlu
ZyByZXNwb25zZQotICovCi1mdW5jdGlvbiBhamF4SGFuZGxlUmVzcG9uc2VzKCBzLCBqcVhIUiwg
cmVzcG9uc2VzICkgewotICAgIHZhciBmaXJzdERhdGFUeXBlLCBjdCwgZmluYWxEYXRhVHlwZSwg
dHlwZSwKLSAgICBjb250ZW50cyA9IHMuY29udGVudHMsCi0gICAgZGF0YVR5cGVzID0gcy5kYXRh
VHlwZXMsCi0gICAgcmVzcG9uc2VGaWVsZHMgPSBzLnJlc3BvbnNlRmllbGRzOwotCi0gICAgLy8g
RmlsbCByZXNwb25zZVhYWCBmaWVsZHMKLSAgICBmb3IgKCB0eXBlIGluIHJlc3BvbnNlRmllbGRz
ICkgewotICAgIGlmICggdHlwZSBpbiByZXNwb25zZXMgKSB7Ci0gICAganFYSFJbIHJlc3BvbnNl
RmllbGRzW3R5cGVdIF0gPSByZXNwb25zZXNbIHR5cGUgXTsKLSAgICB9Ci0gICAgfQotCi0gICAg
Ly8gUmVtb3ZlIGF1dG8gZGF0YVR5cGUgYW5kIGdldCBjb250ZW50LXR5cGUgaW4gdGhlIHByb2Nl
c3MKLSAgICB3aGlsZSggZGF0YVR5cGVzWyAwIF0gPT09ICIqIiApIHsKLSAgICBkYXRhVHlwZXMu
c2hpZnQoKTsKLSAgICBpZiAoIGN0ID09PSB1bmRlZmluZWQgKSB7Ci0gICAgY3QgPSBzLm1pbWVU
eXBlIHx8IGpxWEhSLmdldFJlc3BvbnNlSGVhZGVyKCJDb250ZW50LVR5cGUiKTsKLSAgICB9Ci0g
ICAgfQotCi0gICAgLy8gQ2hlY2sgaWYgd2UncmUgZGVhbGluZyB3aXRoIGEga25vd24gY29udGVu
dC10eXBlCi0gICAgaWYgKCBjdCApIHsKLSAgICBmb3IgKCB0eXBlIGluIGNvbnRlbnRzICkgewot
ICAgIGlmICggY29udGVudHNbIHR5cGUgXSAmJiBjb250ZW50c1sgdHlwZSBdLnRlc3QoIGN0ICkg
KSB7Ci0gICAgZGF0YVR5cGVzLnVuc2hpZnQoIHR5cGUgKTsKLSAgICBicmVhazsKLSAgICB9Ci0g
ICAgfQotICAgIH0KLQotICAgIC8vIENoZWNrIHRvIHNlZSBpZiB3ZSBoYXZlIGEgcmVzcG9uc2Ug
Zm9yIHRoZSBleHBlY3RlZCBkYXRhVHlwZQotICAgIGlmICggZGF0YVR5cGVzWyAwIF0gaW4gcmVz
cG9uc2VzICkgewotICAgIGZpbmFsRGF0YVR5cGUgPSBkYXRhVHlwZXNbIDAgXTsKLSAgICB9IGVs
c2UgewotICAgIC8vIFRyeSBjb252ZXJ0aWJsZSBkYXRhVHlwZXMKLSAgICBmb3IgKCB0eXBlIGlu
IHJlc3BvbnNlcyApIHsKLSAgICBpZiAoICFkYXRhVHlwZXNbIDAgXSB8fCBzLmNvbnZlcnRlcnNb
IHR5cGUgKyAiICIgKyBkYXRhVHlwZXNbMF0gXSApIHsKLSAgICBmaW5hbERhdGFUeXBlID0gdHlw
ZTsKLSAgICBicmVhazsKLSAgICB9Ci0gICAgaWYgKCAhZmlyc3REYXRhVHlwZSApIHsKLSAgICBm
aXJzdERhdGFUeXBlID0gdHlwZTsKLSAgICB9Ci0gICAgfQotICAgIC8vIE9yIGp1c3QgdXNlIGZp
cnN0IG9uZQotICAgIGZpbmFsRGF0YVR5cGUgPSBmaW5hbERhdGFUeXBlIHx8IGZpcnN0RGF0YVR5
cGU7Ci0gICAgfQotCi0gICAgLy8gSWYgd2UgZm91bmQgYSBkYXRhVHlwZQotICAgIC8vIFdlIGFk
ZCB0aGUgZGF0YVR5cGUgdG8gdGhlIGxpc3QgaWYgbmVlZGVkCi0gICAgLy8gYW5kIHJldHVybiB0
aGUgY29ycmVzcG9uZGluZyByZXNwb25zZQotICAgIGlmICggZmluYWxEYXRhVHlwZSApIHsKLSAg
ICBpZiAoIGZpbmFsRGF0YVR5cGUgIT09IGRhdGFUeXBlc1sgMCBdICkgewotICAgIGRhdGFUeXBl
cy51bnNoaWZ0KCBmaW5hbERhdGFUeXBlICk7Ci0gICAgfQotICAgIHJldHVybiByZXNwb25zZXNb
IGZpbmFsRGF0YVR5cGUgXTsKLSAgICB9Ci19Ci0KLS8vIENoYWluIGNvbnZlcnNpb25zIGdpdmVu
IHRoZSByZXF1ZXN0IGFuZCB0aGUgb3JpZ2luYWwgcmVzcG9uc2UKLWZ1bmN0aW9uIGFqYXhDb252
ZXJ0KCBzLCByZXNwb25zZSApIHsKLSAgICB2YXIgY29udjIsIGN1cnJlbnQsIGNvbnYsIHRtcCwK
LSAgICBjb252ZXJ0ZXJzID0ge30sCi0gICAgaSA9IDAsCi0gICAgLy8gV29yayB3aXRoIGEgY29w
eSBvZiBkYXRhVHlwZXMgaW4gY2FzZSB3ZSBuZWVkIHRvIG1vZGlmeSBpdCBmb3IgY29udmVyc2lv
bgotICAgIGRhdGFUeXBlcyA9IHMuZGF0YVR5cGVzLnNsaWNlKCksCi0gICAgcHJldiA9IGRhdGFU
eXBlc1sgMCBdOwotCi0gICAgLy8gQXBwbHkgdGhlIGRhdGFGaWx0ZXIgaWYgcHJvdmlkZWQKLSAg
ICBpZiAoIHMuZGF0YUZpbHRlciApIHsKLSAgICByZXNwb25zZSA9IHMuZGF0YUZpbHRlciggcmVz
cG9uc2UsIHMuZGF0YVR5cGUgKTsKLSAgICB9Ci0KLSAgICAvLyBDcmVhdGUgY29udmVydGVycyBt
YXAgd2l0aCBsb3dlcmNhc2VkIGtleXMKLSAgICBpZiAoIGRhdGFUeXBlc1sgMSBdICkgewotICAg
IGZvciAoIGNvbnYgaW4gcy5jb252ZXJ0ZXJzICkgewotICAgIGNvbnZlcnRlcnNbIGNvbnYudG9M
b3dlckNhc2UoKSBdID0gcy5jb252ZXJ0ZXJzWyBjb252IF07Ci0gICAgfQotICAgIH0KLQotICAg
IC8vIENvbnZlcnQgdG8gZWFjaCBzZXF1ZW50aWFsIGRhdGFUeXBlLCB0b2xlcmF0aW5nIGxpc3Qg
bW9kaWZpY2F0aW9uCi0gICAgZm9yICggOyAoY3VycmVudCA9IGRhdGFUeXBlc1srK2ldKTsgKSB7
Ci0KLSAgICAvLyBUaGVyZSdzIG9ubHkgd29yayB0byBkbyBpZiBjdXJyZW50IGRhdGFUeXBlIGlz
IG5vbi1hdXRvCi0gICAgaWYgKCBjdXJyZW50ICE9PSAiKiIgKSB7Ci0KLSAgICAvLyBDb252ZXJ0
IHJlc3BvbnNlIGlmIHByZXYgZGF0YVR5cGUgaXMgbm9uLWF1dG8gYW5kIGRpZmZlcnMgZnJvbSBj
dXJyZW50Ci0gICAgaWYgKCBwcmV2ICE9PSAiKiIgJiYgcHJldiAhPT0gY3VycmVudCApIHsKLQot
ICAgIC8vIFNlZWsgYSBkaXJlY3QgY29udmVydGVyCi0gICAgY29udiA9IGNvbnZlcnRlcnNbIHBy
ZXYgKyAiICIgKyBjdXJyZW50IF0gfHwgY29udmVydGVyc1sgIiogIiArIGN1cnJlbnQgXTsKLQot
ICAgIC8vIElmIG5vbmUgZm91bmQsIHNlZWsgYSBwYWlyCi0gICAgaWYgKCAhY29udiApIHsKLSAg
ICBmb3IgKCBjb252MiBpbiBjb252ZXJ0ZXJzICkgewotCi0gICAgLy8gSWYgY29udjIgb3V0cHV0
cyBjdXJyZW50Ci0gICAgdG1wID0gY29udjIuc3BsaXQoIiAiKTsKLSAgICBpZiAoIHRtcFsgMSBd
ID09PSBjdXJyZW50ICkgewotCi0gICAgLy8gSWYgcHJldiBjYW4gYmUgY29udmVydGVkIHRvIGFj
Y2VwdGVkIGlucHV0Ci0gICAgY29udiA9IGNvbnZlcnRlcnNbIHByZXYgKyAiICIgKyB0bXBbIDAg
XSBdIHx8Ci0gICAgY29udmVydGVyc1sgIiogIiArIHRtcFsgMCBdIF07Ci0gICAgaWYgKCBjb252
ICkgewotICAgIC8vIENvbmRlbnNlIGVxdWl2YWxlbmNlIGNvbnZlcnRlcnMKLSAgICBpZiAoIGNv
bnYgPT09IHRydWUgKSB7Ci0gICAgY29udiA9IGNvbnZlcnRlcnNbIGNvbnYyIF07Ci0KLSAgICAv
LyBPdGhlcndpc2UsIGluc2VydCB0aGUgaW50ZXJtZWRpYXRlIGRhdGFUeXBlCi0gICAgfSBlbHNl
IGlmICggY29udmVydGVyc1sgY29udjIgXSAhPT0gdHJ1ZSApIHsKLSAgICBjdXJyZW50ID0gdG1w
WyAwIF07Ci0gICAgZGF0YVR5cGVzLnNwbGljZSggaS0tLCAwLCBjdXJyZW50ICk7Ci0gICAgfQot
Ci0gICAgYnJlYWs7Ci0gICAgfQotICAgIH0KLSAgICB9Ci0gICAgfQotCi0gICAgLy8gQXBwbHkg
Y29udmVydGVyIChpZiBub3QgYW4gZXF1aXZhbGVuY2UpCi0gICAgaWYgKCBjb252ICE9PSB0cnVl
ICkgewotCi0gICAgLy8gVW5sZXNzIGVycm9ycyBhcmUgYWxsb3dlZCB0byBidWJibGUsIGNhdGNo
IGFuZCByZXR1cm4gdGhlbQotICAgIGlmICggY29udiAmJiBzWyJ0aHJvd3MiXSApIHsKLSAgICBy
ZXNwb25zZSA9IGNvbnYoIHJlc3BvbnNlICk7Ci0gICAgfSBlbHNlIHsKLSAgICB0cnkgewotICAg
IHJlc3BvbnNlID0gY29udiggcmVzcG9uc2UgKTsKLSAgICB9IGNhdGNoICggZSApIHsKLSAgICBy
ZXR1cm4geyBzdGF0ZTogInBhcnNlcmVycm9yIiwgZXJyb3I6IGNvbnYgPyBlIDogIk5vIGNvbnZl
cnNpb24gZnJvbSAiICsgcHJldiArICIgdG8gIiArIGN1cnJlbnQgfTsKLSAgICB9Ci0gICAgfQot
ICAgIH0KLSAgICB9Ci0KLSAgICAvLyBVcGRhdGUgcHJldiBmb3IgbmV4dCBpdGVyYXRpb24KLSAg
ICBwcmV2ID0gY3VycmVudDsKLSAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHsgc3RhdGU6ICJz
dWNjZXNzIiwgZGF0YTogcmVzcG9uc2UgfTsKLX0KLS8vIEluc3RhbGwgc2NyaXB0IGRhdGFUeXBl
Ci1qUXVlcnkuYWpheFNldHVwKHsKLSAgICBhY2NlcHRzOiB7Ci0gICAgc2NyaXB0OiAidGV4dC9q
YXZhc2NyaXB0LCBhcHBsaWNhdGlvbi9qYXZhc2NyaXB0LCBhcHBsaWNhdGlvbi9lY21hc2NyaXB0
LCBhcHBsaWNhdGlvbi94LWVjbWFzY3JpcHQiCi0gICAgfSwKLSAgICBjb250ZW50czogewotICAg
IHNjcmlwdDogLyg/OmphdmF8ZWNtYSlzY3JpcHQvCi0gICAgfSwKLSAgICBjb252ZXJ0ZXJzOiB7
Ci0gICAgInRleHQgc2NyaXB0IjogZnVuY3Rpb24oIHRleHQgKSB7Ci0gICAgalF1ZXJ5Lmdsb2Jh
bEV2YWwoIHRleHQgKTsKLSAgICByZXR1cm4gdGV4dDsKLSAgICB9Ci0gICAgfQotfSk7Ci0KLS8v
IEhhbmRsZSBjYWNoZSdzIHNwZWNpYWwgY2FzZSBhbmQgZ2xvYmFsCi1qUXVlcnkuYWpheFByZWZp
bHRlciggInNjcmlwdCIsIGZ1bmN0aW9uKCBzICkgewotICAgIGlmICggcy5jYWNoZSA9PT0gdW5k
ZWZpbmVkICkgewotICAgIHMuY2FjaGUgPSBmYWxzZTsKLSAgICB9Ci0gICAgaWYgKCBzLmNyb3Nz
RG9tYWluICkgewotICAgIHMudHlwZSA9ICJHRVQiOwotICAgIHMuZ2xvYmFsID0gZmFsc2U7Ci0g
ICAgfQotfSk7Ci0KLS8vIEJpbmQgc2NyaXB0IHRhZyBoYWNrIHRyYW5zcG9ydAotalF1ZXJ5LmFq
YXhUcmFuc3BvcnQoICJzY3JpcHQiLCBmdW5jdGlvbihzKSB7Ci0KLSAgICAvLyBUaGlzIHRyYW5z
cG9ydCBvbmx5IGRlYWxzIHdpdGggY3Jvc3MgZG9tYWluIHJlcXVlc3RzCi0gICAgaWYgKCBzLmNy
b3NzRG9tYWluICkgewotCi0gICAgdmFyIHNjcmlwdCwKLSAgICBoZWFkID0gZG9jdW1lbnQuaGVh
ZCB8fCBqUXVlcnkoImhlYWQiKVswXSB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7Ci0KLSAg
ICByZXR1cm4gewotCi0gICAgc2VuZDogZnVuY3Rpb24oIF8sIGNhbGxiYWNrICkgewotCi0gICAg
c2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7Ci0KLSAgICBzY3JpcHQu
YXN5bmMgPSB0cnVlOwotCi0gICAgaWYgKCBzLnNjcmlwdENoYXJzZXQgKSB7Ci0gICAgc2NyaXB0
LmNoYXJzZXQgPSBzLnNjcmlwdENoYXJzZXQ7Ci0gICAgfQotCi0gICAgc2NyaXB0LnNyYyA9IHMu
dXJsOwotCi0gICAgLy8gQXR0YWNoIGhhbmRsZXJzIGZvciBhbGwgYnJvd3NlcnMKLSAgICBzY3Jp
cHQub25sb2FkID0gc2NyaXB0Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCBfLCBpc0Fi
b3J0ICkgewotCi0gICAgaWYgKCBpc0Fib3J0IHx8ICFzY3JpcHQucmVhZHlTdGF0ZSB8fCAvbG9h
ZGVkfGNvbXBsZXRlLy50ZXN0KCBzY3JpcHQucmVhZHlTdGF0ZSApICkgewotCi0gICAgLy8gSGFu
ZGxlIG1lbW9yeSBsZWFrIGluIElFCi0gICAgc2NyaXB0Lm9ubG9hZCA9IHNjcmlwdC5vbnJlYWR5
c3RhdGVjaGFuZ2UgPSBudWxsOwotCi0gICAgLy8gUmVtb3ZlIHRoZSBzY3JpcHQKLSAgICBpZiAo
IHNjcmlwdC5wYXJlbnROb2RlICkgewotICAgIHNjcmlwdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxk
KCBzY3JpcHQgKTsKLSAgICB9Ci0KLSAgICAvLyBEZXJlZmVyZW5jZSB0aGUgc2NyaXB0Ci0gICAg
c2NyaXB0ID0gbnVsbDsKLQotICAgIC8vIENhbGxiYWNrIGlmIG5vdCBhYm9ydAotICAgIGlmICgg
IWlzQWJvcnQgKSB7Ci0gICAgY2FsbGJhY2soIDIwMCwgInN1Y2Nlc3MiICk7Ci0gICAgfQotICAg
IH0KLSAgICB9OwotCi0gICAgLy8gQ2lyY3VtdmVudCBJRTYgYnVncyB3aXRoIGJhc2UgZWxlbWVu
dHMgKCMyNzA5IGFuZCAjNDM3OCkgYnkgcHJlcGVuZGluZwotICAgIC8vIFVzZSBuYXRpdmUgRE9N
IG1hbmlwdWxhdGlvbiB0byBhdm9pZCBvdXIgZG9tTWFuaXAgQUpBWCB0cmlja2VyeQotICAgIGhl
YWQuaW5zZXJ0QmVmb3JlKCBzY3JpcHQsIGhlYWQuZmlyc3RDaGlsZCApOwotICAgIH0sCi0KLSAg
ICBhYm9ydDogZnVuY3Rpb24oKSB7Ci0gICAgaWYgKCBzY3JpcHQgKSB7Ci0gICAgc2NyaXB0Lm9u
bG9hZCggdW5kZWZpbmVkLCB0cnVlICk7Ci0gICAgfQotICAgIH0KLSAgICB9OwotICAgIH0KLX0p
OwotdmFyIG9sZENhbGxiYWNrcyA9IFtdLAotICAgIHJqc29ucCA9IC8oPSlcPyg/PSZ8JCl8XD9c
Py87Ci0KLS8vIERlZmF1bHQganNvbnAgc2V0dGluZ3MKLWpRdWVyeS5hamF4U2V0dXAoewotICAg
IGpzb25wOiAiY2FsbGJhY2siLAotICAgIGpzb25wQ2FsbGJhY2s6IGZ1bmN0aW9uKCkgewotICAg
IHZhciBjYWxsYmFjayA9IG9sZENhbGxiYWNrcy5wb3AoKSB8fCAoIGpRdWVyeS5leHBhbmRvICsg
Il8iICsgKCBhamF4X25vbmNlKysgKSApOwotICAgIHRoaXNbIGNhbGxiYWNrIF0gPSB0cnVlOwot
ICAgIHJldHVybiBjYWxsYmFjazsKLSAgICB9Ci19KTsKLQotLy8gRGV0ZWN0LCBub3JtYWxpemUg
b3B0aW9ucyBhbmQgaW5zdGFsbCBjYWxsYmFja3MgZm9yIGpzb25wIHJlcXVlc3RzCi1qUXVlcnku
YWpheFByZWZpbHRlciggImpzb24ganNvbnAiLCBmdW5jdGlvbiggcywgb3JpZ2luYWxTZXR0aW5n
cywganFYSFIgKSB7Ci0KLSAgICB2YXIgY2FsbGJhY2tOYW1lLCBvdmVyd3JpdHRlbiwgcmVzcG9u
c2VDb250YWluZXIsCi0gICAganNvblByb3AgPSBzLmpzb25wICE9PSBmYWxzZSAmJiAoIHJqc29u
cC50ZXN0KCBzLnVybCApID8KLSAgICAidXJsIiA6Ci0gICAgdHlwZW9mIHMuZGF0YSA9PT0gInN0
cmluZyIgJiYgISggcy5jb250ZW50VHlwZSB8fCAiIiApLmluZGV4T2YoImFwcGxpY2F0aW9uL3gt
d3d3LWZvcm0tdXJsZW5jb2RlZCIpICYmIHJqc29ucC50ZXN0KCBzLmRhdGEgKSAmJiAiZGF0YSIK
LSAgICApOwotCi0gICAgLy8gSGFuZGxlIGlmZiB0aGUgZXhwZWN0ZWQgZGF0YSB0eXBlIGlzICJq
c29ucCIgb3Igd2UgaGF2ZSBhIHBhcmFtZXRlciB0byBzZXQKLSAgICBpZiAoIGpzb25Qcm9wIHx8
IHMuZGF0YVR5cGVzWyAwIF0gPT09ICJqc29ucCIgKSB7Ci0KLSAgICAvLyBHZXQgY2FsbGJhY2sg
bmFtZSwgcmVtZW1iZXJpbmcgcHJlZXhpc3RpbmcgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIGl0Ci0g
ICAgY2FsbGJhY2tOYW1lID0gcy5qc29ucENhbGxiYWNrID0galF1ZXJ5LmlzRnVuY3Rpb24oIHMu
anNvbnBDYWxsYmFjayApID8KLSAgICBzLmpzb25wQ2FsbGJhY2soKSA6Ci0gICAgcy5qc29ucENh
bGxiYWNrOwotCi0gICAgLy8gSW5zZXJ0IGNhbGxiYWNrIGludG8gdXJsIG9yIGZvcm0gZGF0YQot
ICAgIGlmICgganNvblByb3AgKSB7Ci0gICAgc1sganNvblByb3AgXSA9IHNbIGpzb25Qcm9wIF0u
cmVwbGFjZSggcmpzb25wLCAiJDEiICsgY2FsbGJhY2tOYW1lICk7Ci0gICAgfSBlbHNlIGlmICgg
cy5qc29ucCAhPT0gZmFsc2UgKSB7Ci0gICAgcy51cmwgKz0gKCBhamF4X3JxdWVyeS50ZXN0KCBz
LnVybCApID8gIiYiIDogIj8iICkgKyBzLmpzb25wICsgIj0iICsgY2FsbGJhY2tOYW1lOwotICAg
IH0KLQotICAgIC8vIFVzZSBkYXRhIGNvbnZlcnRlciB0byByZXRyaWV2ZSBqc29uIGFmdGVyIHNj
cmlwdCBleGVjdXRpb24KLSAgICBzLmNvbnZlcnRlcnNbInNjcmlwdCBqc29uIl0gPSBmdW5jdGlv
bigpIHsKLSAgICBpZiAoICFyZXNwb25zZUNvbnRhaW5lciApIHsKLSAgICBqUXVlcnkuZXJyb3Io
IGNhbGxiYWNrTmFtZSArICIgd2FzIG5vdCBjYWxsZWQiICk7Ci0gICAgfQotICAgIHJldHVybiBy
ZXNwb25zZUNvbnRhaW5lclsgMCBdOwotICAgIH07Ci0KLSAgICAvLyBmb3JjZSBqc29uIGRhdGFU
eXBlCi0gICAgcy5kYXRhVHlwZXNbIDAgXSA9ICJqc29uIjsKLQotICAgIC8vIEluc3RhbGwgY2Fs
bGJhY2sKLSAgICBvdmVyd3JpdHRlbiA9IHdpbmRvd1sgY2FsbGJhY2tOYW1lIF07Ci0gICAgd2lu
ZG93WyBjYWxsYmFja05hbWUgXSA9IGZ1bmN0aW9uKCkgewotICAgIHJlc3BvbnNlQ29udGFpbmVy
ID0gYXJndW1lbnRzOwotICAgIH07Ci0KLSAgICAvLyBDbGVhbi11cCBmdW5jdGlvbiAoZmlyZXMg
YWZ0ZXIgY29udmVydGVycykKLSAgICBqcVhIUi5hbHdheXMoZnVuY3Rpb24oKSB7Ci0gICAgLy8g
UmVzdG9yZSBwcmVleGlzdGluZyB2YWx1ZQotICAgIHdpbmRvd1sgY2FsbGJhY2tOYW1lIF0gPSBv
dmVyd3JpdHRlbjsKLQotICAgIC8vIFNhdmUgYmFjayBhcyBmcmVlCi0gICAgaWYgKCBzWyBjYWxs
YmFja05hbWUgXSApIHsKLSAgICAvLyBtYWtlIHN1cmUgdGhhdCByZS11c2luZyB0aGUgb3B0aW9u
cyBkb2Vzbid0IHNjcmV3IHRoaW5ncyBhcm91bmQKLSAgICBzLmpzb25wQ2FsbGJhY2sgPSBvcmln
aW5hbFNldHRpbmdzLmpzb25wQ2FsbGJhY2s7Ci0KLSAgICAvLyBzYXZlIHRoZSBjYWxsYmFjayBu
YW1lIGZvciBmdXR1cmUgdXNlCi0gICAgb2xkQ2FsbGJhY2tzLnB1c2goIGNhbGxiYWNrTmFtZSAp
OwotICAgIH0KLQotICAgIC8vIENhbGwgaWYgaXQgd2FzIGEgZnVuY3Rpb24gYW5kIHdlIGhhdmUg
YSByZXNwb25zZQotICAgIGlmICggcmVzcG9uc2VDb250YWluZXIgJiYgalF1ZXJ5LmlzRnVuY3Rp
b24oIG92ZXJ3cml0dGVuICkgKSB7Ci0gICAgb3ZlcndyaXR0ZW4oIHJlc3BvbnNlQ29udGFpbmVy
WyAwIF0gKTsKLSAgICB9Ci0KLSAgICByZXNwb25zZUNvbnRhaW5lciA9IG92ZXJ3cml0dGVuID0g
dW5kZWZpbmVkOwotICAgIH0pOwotCi0gICAgLy8gRGVsZWdhdGUgdG8gc2NyaXB0Ci0gICAgcmV0
dXJuICJzY3JpcHQiOwotICAgIH0KLX0pOwotdmFyIHhockNhbGxiYWNrcywgeGhyU3VwcG9ydGVk
LAotICAgIHhocklkID0gMCwKLSAgICAvLyAjNTI4MDogSW50ZXJuZXQgRXhwbG9yZXIgd2lsbCBr
ZWVwIGNvbm5lY3Rpb25zIGFsaXZlIGlmIHdlIGRvbid0IGFib3J0IG9uIHVubG9hZAotICAgIHho
ck9uVW5sb2FkQWJvcnQgPSB3aW5kb3cuQWN0aXZlWE9iamVjdCAmJiBmdW5jdGlvbigpIHsKLSAg
ICAvLyBBYm9ydCBhbGwgcGVuZGluZyByZXF1ZXN0cwotICAgIHZhciBrZXk7Ci0gICAgZm9yICgg
a2V5IGluIHhockNhbGxiYWNrcyApIHsKLSAgICB4aHJDYWxsYmFja3NbIGtleSBdKCB1bmRlZmlu
ZWQsIHRydWUgKTsKLSAgICB9Ci0gICAgfTsKLQotLy8gRnVuY3Rpb25zIHRvIGNyZWF0ZSB4aHJz
Ci1mdW5jdGlvbiBjcmVhdGVTdGFuZGFyZFhIUigpIHsKLSAgICB0cnkgewotICAgIHJldHVybiBu
ZXcgd2luZG93LlhNTEh0dHBSZXF1ZXN0KCk7Ci0gICAgfSBjYXRjaCggZSApIHt9Ci19Ci0KLWZ1
bmN0aW9uIGNyZWF0ZUFjdGl2ZVhIUigpIHsKLSAgICB0cnkgewotICAgIHJldHVybiBuZXcgd2lu
ZG93LkFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxIVFRQIik7Ci0gICAgfSBjYXRjaCggZSAp
IHt9Ci19Ci0KLS8vIENyZWF0ZSB0aGUgcmVxdWVzdCBvYmplY3QKLS8vIChUaGlzIGlzIHN0aWxs
IGF0dGFjaGVkIHRvIGFqYXhTZXR0aW5ncyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSkKLWpR
dWVyeS5hamF4U2V0dGluZ3MueGhyID0gd2luZG93LkFjdGl2ZVhPYmplY3QgPwotICAgIC8qIE1p
Y3Jvc29mdCBmYWlsZWQgdG8gcHJvcGVybHkKLSAgICAgKiBpbXBsZW1lbnQgdGhlIFhNTEh0dHBS
ZXF1ZXN0IGluIElFNyAoY2FuJ3QgcmVxdWVzdCBsb2NhbCBmaWxlcyksCi0gICAgICogc28gd2Ug
dXNlIHRoZSBBY3RpdmVYT2JqZWN0IHdoZW4gaXQgaXMgYXZhaWxhYmxlCi0gICAgICogQWRkaXRp
b25hbGx5IFhNTEh0dHBSZXF1ZXN0IGNhbiBiZSBkaXNhYmxlZCBpbiBJRTcvSUU4IHNvCi0gICAg
ICogd2UgbmVlZCBhIGZhbGxiYWNrLgotICAgICAqLwotICAgIGZ1bmN0aW9uKCkgewotICAgIHJl
dHVybiAhdGhpcy5pc0xvY2FsICYmIGNyZWF0ZVN0YW5kYXJkWEhSKCkgfHwgY3JlYXRlQWN0aXZl
WEhSKCk7Ci0gICAgfSA6Ci0gICAgLy8gRm9yIGFsbCBvdGhlciBicm93c2VycywgdXNlIHRoZSBz
dGFuZGFyZCBYTUxIdHRwUmVxdWVzdCBvYmplY3QKLSAgICBjcmVhdGVTdGFuZGFyZFhIUjsKLQot
Ly8gRGV0ZXJtaW5lIHN1cHBvcnQgcHJvcGVydGllcwoteGhyU3VwcG9ydGVkID0galF1ZXJ5LmFq
YXhTZXR0aW5ncy54aHIoKTsKLWpRdWVyeS5zdXBwb3J0LmNvcnMgPSAhIXhoclN1cHBvcnRlZCAm
JiAoICJ3aXRoQ3JlZGVudGlhbHMiIGluIHhoclN1cHBvcnRlZCApOwoteGhyU3VwcG9ydGVkID0g
alF1ZXJ5LnN1cHBvcnQuYWpheCA9ICEheGhyU3VwcG9ydGVkOwotCi0vLyBDcmVhdGUgdHJhbnNw
b3J0IGlmIHRoZSBicm93c2VyIGNhbiBwcm92aWRlIGFuIHhocgotaWYgKCB4aHJTdXBwb3J0ZWQg
KSB7Ci0KLSAgICBqUXVlcnkuYWpheFRyYW5zcG9ydChmdW5jdGlvbiggcyApIHsKLSAgICAvLyBD
cm9zcyBkb21haW4gb25seSBhbGxvd2VkIGlmIHN1cHBvcnRlZCB0aHJvdWdoIFhNTEh0dHBSZXF1
ZXN0Ci0gICAgaWYgKCAhcy5jcm9zc0RvbWFpbiB8fCBqUXVlcnkuc3VwcG9ydC5jb3JzICkgewot
Ci0gICAgdmFyIGNhbGxiYWNrOwotCi0gICAgcmV0dXJuIHsKLSAgICBzZW5kOiBmdW5jdGlvbigg
aGVhZGVycywgY29tcGxldGUgKSB7Ci0KLSAgICAvLyBHZXQgYSBuZXcgeGhyCi0gICAgdmFyIGhh
bmRsZSwgaSwKLSAgICB4aHIgPSBzLnhocigpOwotCi0gICAgLy8gT3BlbiB0aGUgc29ja2V0Ci0g
ICAgLy8gUGFzc2luZyBudWxsIHVzZXJuYW1lLCBnZW5lcmF0ZXMgYSBsb2dpbiBwb3B1cCBvbiBP
cGVyYSAoIzI4NjUpCi0gICAgaWYgKCBzLnVzZXJuYW1lICkgewotICAgIHhoci5vcGVuKCBzLnR5
cGUsIHMudXJsLCBzLmFzeW5jLCBzLnVzZXJuYW1lLCBzLnBhc3N3b3JkICk7Ci0gICAgfSBlbHNl
IHsKLSAgICB4aHIub3Blbiggcy50eXBlLCBzLnVybCwgcy5hc3luYyApOwotICAgIH0KLQotICAg
IC8vIEFwcGx5IGN1c3RvbSBmaWVsZHMgaWYgcHJvdmlkZWQKLSAgICBpZiAoIHMueGhyRmllbGRz
ICkgewotICAgIGZvciAoIGkgaW4gcy54aHJGaWVsZHMgKSB7Ci0gICAgeGhyWyBpIF0gPSBzLnho
ckZpZWxkc1sgaSBdOwotICAgIH0KLSAgICB9Ci0KLSAgICAvLyBPdmVycmlkZSBtaW1lIHR5cGUg
aWYgbmVlZGVkCi0gICAgaWYgKCBzLm1pbWVUeXBlICYmIHhoci5vdmVycmlkZU1pbWVUeXBlICkg
ewotICAgIHhoci5vdmVycmlkZU1pbWVUeXBlKCBzLm1pbWVUeXBlICk7Ci0gICAgfQotCi0gICAg
Ly8gWC1SZXF1ZXN0ZWQtV2l0aCBoZWFkZXIKLSAgICAvLyBGb3IgY3Jvc3MtZG9tYWluIHJlcXVl
c3RzLCBzZWVpbmcgYXMgY29uZGl0aW9ucyBmb3IgYSBwcmVmbGlnaHQgYXJlCi0gICAgLy8gYWtp
biB0byBhIGppZ3NhdyBwdXp6bGUsIHdlIHNpbXBseSBuZXZlciBzZXQgaXQgdG8gYmUgc3VyZS4K
LSAgICAvLyAoaXQgY2FuIGFsd2F5cyBiZSBzZXQgb24gYSBwZXItcmVxdWVzdCBiYXNpcyBvciBl
dmVuIHVzaW5nIGFqYXhTZXR1cCkKLSAgICAvLyBGb3Igc2FtZS1kb21haW4gcmVxdWVzdHMsIHdv
bid0IGNoYW5nZSBoZWFkZXIgaWYgYWxyZWFkeSBwcm92aWRlZC4KLSAgICBpZiAoICFzLmNyb3Nz
RG9tYWluICYmICFoZWFkZXJzWyJYLVJlcXVlc3RlZC1XaXRoIl0gKSB7Ci0gICAgaGVhZGVyc1si
WC1SZXF1ZXN0ZWQtV2l0aCJdID0gIlhNTEh0dHBSZXF1ZXN0IjsKLSAgICB9Ci0KLSAgICAvLyBO
ZWVkIGFuIGV4dHJhIHRyeS9jYXRjaCBmb3IgY3Jvc3MgZG9tYWluIHJlcXVlc3RzIGluIEZpcmVm
b3ggMwotICAgIHRyeSB7Ci0gICAgZm9yICggaSBpbiBoZWFkZXJzICkgewotICAgIHhoci5zZXRS
ZXF1ZXN0SGVhZGVyKCBpLCBoZWFkZXJzWyBpIF0gKTsKLSAgICB9Ci0gICAgfSBjYXRjaCggZXJy
ICkge30KLQotICAgIC8vIERvIHNlbmQgdGhlIHJlcXVlc3QKLSAgICAvLyBUaGlzIG1heSByYWlz
ZSBhbiBleGNlcHRpb24gd2hpY2ggaXMgYWN0dWFsbHkKLSAgICAvLyBoYW5kbGVkIGluIGpRdWVy
eS5hamF4IChzbyBubyB0cnkvY2F0Y2ggaGVyZSkKLSAgICB4aHIuc2VuZCggKCBzLmhhc0NvbnRl
bnQgJiYgcy5kYXRhICkgfHwgbnVsbCApOwotCi0gICAgLy8gTGlzdGVuZXIKLSAgICBjYWxsYmFj
ayA9IGZ1bmN0aW9uKCBfLCBpc0Fib3J0ICkgewotICAgIHZhciBzdGF0dXMsIHJlc3BvbnNlSGVh
ZGVycywgc3RhdHVzVGV4dCwgcmVzcG9uc2VzOwotCi0gICAgLy8gRmlyZWZveCB0aHJvd3MgZXhj
ZXB0aW9ucyB3aGVuIGFjY2Vzc2luZyBwcm9wZXJ0aWVzCi0gICAgLy8gb2YgYW4geGhyIHdoZW4g
YSBuZXR3b3JrIGVycm9yIG9jY3VycmVkCi0gICAgLy8gaHR0cDovL2hlbHBmdWwua25vYnMtZGlh
bHMuY29tL2luZGV4LnBocC9Db21wb25lbnRfcmV0dXJuZWRfZmFpbHVyZV9jb2RlOl8weDgwMDQw
MTExXyhOU19FUlJPUl9OT1RfQVZBSUxBQkxFKQotICAgIHRyeSB7Ci0KLSAgICAvLyBXYXMgbmV2
ZXIgY2FsbGVkIGFuZCBpcyBhYm9ydGVkIG9yIGNvbXBsZXRlCi0gICAgaWYgKCBjYWxsYmFjayAm
JiAoIGlzQWJvcnQgfHwgeGhyLnJlYWR5U3RhdGUgPT09IDQgKSApIHsKLQotICAgIC8vIE9ubHkg
Y2FsbGVkIG9uY2UKLSAgICBjYWxsYmFjayA9IHVuZGVmaW5lZDsKLQotICAgIC8vIERvIG5vdCBr
ZWVwIGFzIGFjdGl2ZSBhbnltb3JlCi0gICAgaWYgKCBoYW5kbGUgKSB7Ci0gICAgeGhyLm9ucmVh
ZHlzdGF0ZWNoYW5nZSA9IGpRdWVyeS5ub29wOwotICAgIGlmICggeGhyT25VbmxvYWRBYm9ydCAp
IHsKLSAgICBkZWxldGUgeGhyQ2FsbGJhY2tzWyBoYW5kbGUgXTsKLSAgICB9Ci0gICAgfQotCi0g
ICAgLy8gSWYgaXQncyBhbiBhYm9ydAotICAgIGlmICggaXNBYm9ydCApIHsKLSAgICAvLyBBYm9y
dCBpdCBtYW51YWxseSBpZiBuZWVkZWQKLSAgICBpZiAoIHhoci5yZWFkeVN0YXRlICE9PSA0ICkg
ewotICAgIHhoci5hYm9ydCgpOwotICAgIH0KLSAgICB9IGVsc2UgewotICAgIHJlc3BvbnNlcyA9
IHt9OwotICAgIHN0YXR1cyA9IHhoci5zdGF0dXM7Ci0gICAgcmVzcG9uc2VIZWFkZXJzID0geGhy
LmdldEFsbFJlc3BvbnNlSGVhZGVycygpOwotCi0gICAgLy8gV2hlbiByZXF1ZXN0aW5nIGJpbmFy
eSBkYXRhLCBJRTYtOSB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbgotICAgIC8vIG9uIGFueSBhdHRl
bXB0IHRvIGFjY2VzcyByZXNwb25zZVRleHQgKCMxMTQyNikKLSAgICBpZiAoIHR5cGVvZiB4aHIu
cmVzcG9uc2VUZXh0ID09PSAic3RyaW5nIiApIHsKLSAgICByZXNwb25zZXMudGV4dCA9IHhoci5y
ZXNwb25zZVRleHQ7Ci0gICAgfQotCi0gICAgLy8gRmlyZWZveCB0aHJvd3MgYW4gZXhjZXB0aW9u
IHdoZW4gYWNjZXNzaW5nCi0gICAgLy8gc3RhdHVzVGV4dCBmb3IgZmF1bHR5IGNyb3NzLWRvbWFp
biByZXF1ZXN0cwotICAgIHRyeSB7Ci0gICAgc3RhdHVzVGV4dCA9IHhoci5zdGF0dXNUZXh0Owot
ICAgIH0gY2F0Y2goIGUgKSB7Ci0gICAgLy8gV2Ugbm9ybWFsaXplIHdpdGggV2Via2l0IGdpdmlu
ZyBhbiBlbXB0eSBzdGF0dXNUZXh0Ci0gICAgc3RhdHVzVGV4dCA9ICIiOwotICAgIH0KLQotICAg
IC8vIEZpbHRlciBzdGF0dXMgZm9yIG5vbiBzdGFuZGFyZCBiZWhhdmlvcnMKLQotICAgIC8vIElm
IHRoZSByZXF1ZXN0IGlzIGxvY2FsIGFuZCB3ZSBoYXZlIGRhdGE6IGFzc3VtZSBhIHN1Y2Nlc3MK
LSAgICAvLyAoc3VjY2VzcyB3aXRoIG5vIGRhdGEgd29uJ3QgZ2V0IG5vdGlmaWVkLCB0aGF0J3Mg
dGhlIGJlc3Qgd2UKLSAgICAvLyBjYW4gZG8gZ2l2ZW4gY3VycmVudCBpbXBsZW1lbnRhdGlvbnMp
Ci0gICAgaWYgKCAhc3RhdHVzICYmIHMuaXNMb2NhbCAmJiAhcy5jcm9zc0RvbWFpbiApIHsKLSAg
ICBzdGF0dXMgPSByZXNwb25zZXMudGV4dCA/IDIwMCA6IDQwNDsKLSAgICAvLyBJRSAtICMxNDUw
OiBzb21ldGltZXMgcmV0dXJucyAxMjIzIHdoZW4gaXQgc2hvdWxkIGJlIDIwNAotICAgIH0gZWxz
ZSBpZiAoIHN0YXR1cyA9PT0gMTIyMyApIHsKLSAgICBzdGF0dXMgPSAyMDQ7Ci0gICAgfQotICAg
IH0KLSAgICB9Ci0gICAgfSBjYXRjaCggZmlyZWZveEFjY2Vzc0V4Y2VwdGlvbiApIHsKLSAgICBp
ZiAoICFpc0Fib3J0ICkgewotICAgIGNvbXBsZXRlKCAtMSwgZmlyZWZveEFjY2Vzc0V4Y2VwdGlv
biApOwotICAgIH0KLSAgICB9Ci0KLSAgICAvLyBDYWxsIGNvbXBsZXRlIGlmIG5lZWRlZAotICAg
IGlmICggcmVzcG9uc2VzICkgewotICAgIGNvbXBsZXRlKCBzdGF0dXMsIHN0YXR1c1RleHQsIHJl
c3BvbnNlcywgcmVzcG9uc2VIZWFkZXJzICk7Ci0gICAgfQotICAgIH07Ci0KLSAgICBpZiAoICFz
LmFzeW5jICkgewotICAgIC8vIGlmIHdlJ3JlIGluIHN5bmMgbW9kZSB3ZSBmaXJlIHRoZSBjYWxs
YmFjawotICAgIGNhbGxiYWNrKCk7Ci0gICAgfSBlbHNlIGlmICggeGhyLnJlYWR5U3RhdGUgPT09
IDQgKSB7Ci0gICAgLy8gKElFNiAmIElFNykgaWYgaXQncyBpbiBjYWNoZSBhbmQgaGFzIGJlZW4K
LSAgICAvLyByZXRyaWV2ZWQgZGlyZWN0bHkgd2UgbmVlZCB0byBmaXJlIHRoZSBjYWxsYmFjawot
ICAgIHNldFRpbWVvdXQoIGNhbGxiYWNrICk7Ci0gICAgfSBlbHNlIHsKLSAgICBoYW5kbGUgPSAr
K3hocklkOwotICAgIGlmICggeGhyT25VbmxvYWRBYm9ydCApIHsKLSAgICAvLyBDcmVhdGUgdGhl
IGFjdGl2ZSB4aHJzIGNhbGxiYWNrcyBsaXN0IGlmIG5lZWRlZAotICAgIC8vIGFuZCBhdHRhY2gg
dGhlIHVubG9hZCBoYW5kbGVyCi0gICAgaWYgKCAheGhyQ2FsbGJhY2tzICkgewotICAgIHhockNh
bGxiYWNrcyA9IHt9OwotICAgIGpRdWVyeSggd2luZG93ICkudW5sb2FkKCB4aHJPblVubG9hZEFi
b3J0ICk7Ci0gICAgfQotICAgIC8vIEFkZCB0byBsaXN0IG9mIGFjdGl2ZSB4aHJzIGNhbGxiYWNr
cwotICAgIHhockNhbGxiYWNrc1sgaGFuZGxlIF0gPSBjYWxsYmFjazsKLSAgICB9Ci0gICAgeGhy
Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGNhbGxiYWNrOwotICAgIH0KLSAgICB9LAotCi0gICAgYWJv
cnQ6IGZ1bmN0aW9uKCkgewotICAgIGlmICggY2FsbGJhY2sgKSB7Ci0gICAgY2FsbGJhY2soIHVu
ZGVmaW5lZCwgdHJ1ZSApOwotICAgIH0KLSAgICB9Ci0gICAgfTsKLSAgICB9Ci0gICAgfSk7Ci19
Ci12YXIgZnhOb3csIHRpbWVySWQsCi0gICAgcmZ4dHlwZXMgPSAvXig/OnRvZ2dsZXxzaG93fGhp
ZGUpJC8sCi0gICAgcmZ4bnVtID0gbmV3IFJlZ0V4cCggIl4oPzooWystXSk9fCkoIiArIGNvcmVf
cG51bSArICIpKFthLXolXSopJCIsICJpIiApLAotICAgIHJydW4gPSAvcXVldWVIb29rcyQvLAot
ICAgIGFuaW1hdGlvblByZWZpbHRlcnMgPSBbIGRlZmF1bHRQcmVmaWx0ZXIgXSwKLSAgICB0d2Vl
bmVycyA9IHsKLSAgICAiKiI6IFtmdW5jdGlvbiggcHJvcCwgdmFsdWUgKSB7Ci0gICAgdmFyIGVu
ZCwgdW5pdCwKLSAgICB0d2VlbiA9IHRoaXMuY3JlYXRlVHdlZW4oIHByb3AsIHZhbHVlICksCi0g
ICAgcGFydHMgPSByZnhudW0uZXhlYyggdmFsdWUgKSwKLSAgICB0YXJnZXQgPSB0d2Vlbi5jdXIo
KSwKLSAgICBzdGFydCA9ICt0YXJnZXQgfHwgMCwKLSAgICBzY2FsZSA9IDEsCi0gICAgbWF4SXRl
cmF0aW9ucyA9IDIwOwotCi0gICAgaWYgKCBwYXJ0cyApIHsKLSAgICBlbmQgPSArcGFydHNbMl07
Ci0gICAgdW5pdCA9IHBhcnRzWzNdIHx8ICggalF1ZXJ5LmNzc051bWJlclsgcHJvcCBdID8gIiIg
OiAicHgiICk7Ci0KLSAgICAvLyBXZSBuZWVkIHRvIGNvbXB1dGUgc3RhcnRpbmcgdmFsdWUKLSAg
ICBpZiAoIHVuaXQgIT09ICJweCIgJiYgc3RhcnQgKSB7Ci0gICAgLy8gSXRlcmF0aXZlbHkgYXBw
cm94aW1hdGUgZnJvbSBhIG5vbnplcm8gc3RhcnRpbmcgcG9pbnQKLSAgICAvLyBQcmVmZXIgdGhl
IGN1cnJlbnQgcHJvcGVydHksIGJlY2F1c2UgdGhpcyBwcm9jZXNzIHdpbGwgYmUgdHJpdmlhbCBp
ZiBpdCB1c2VzIHRoZSBzYW1lIHVuaXRzCi0gICAgLy8gRmFsbGJhY2sgdG8gZW5kIG9yIGEgc2lt
cGxlIGNvbnN0YW50Ci0gICAgc3RhcnQgPSBqUXVlcnkuY3NzKCB0d2Vlbi5lbGVtLCBwcm9wLCB0
cnVlICkgfHwgZW5kIHx8IDE7Ci0KLSAgICBkbyB7Ci0gICAgLy8gSWYgcHJldmlvdXMgaXRlcmF0
aW9uIHplcm9lZCBvdXQsIGRvdWJsZSB1bnRpbCB3ZSBnZXQgKnNvbWV0aGluZyoKLSAgICAvLyBV
c2UgYSBzdHJpbmcgZm9yIGRvdWJsaW5nIGZhY3RvciBzbyB3ZSBkb24ndCBhY2NpZGVudGFsbHkg
c2VlIHNjYWxlIGFzIHVuY2hhbmdlZCBiZWxvdwotICAgIHNjYWxlID0gc2NhbGUgfHwgIi41IjsK
LQotICAgIC8vIEFkanVzdCBhbmQgYXBwbHkKLSAgICBzdGFydCA9IHN0YXJ0IC8gc2NhbGU7Ci0g
ICAgalF1ZXJ5LnN0eWxlKCB0d2Vlbi5lbGVtLCBwcm9wLCBzdGFydCArIHVuaXQgKTsKLQotICAg
IC8vIFVwZGF0ZSBzY2FsZSwgdG9sZXJhdGluZyB6ZXJvIG9yIE5hTiBmcm9tIHR3ZWVuLmN1cigp
Ci0gICAgLy8gQW5kIGJyZWFraW5nIHRoZSBsb29wIGlmIHNjYWxlIGlzIHVuY2hhbmdlZCBvciBw
ZXJmZWN0LCBvciBpZiB3ZSd2ZSBqdXN0IGhhZCBlbm91Z2gKLSAgICB9IHdoaWxlICggc2NhbGUg
IT09IChzY2FsZSA9IHR3ZWVuLmN1cigpIC8gdGFyZ2V0KSAmJiBzY2FsZSAhPT0gMSAmJiAtLW1h
eEl0ZXJhdGlvbnMgKTsKLSAgICB9Ci0KLSAgICB0d2Vlbi51bml0ID0gdW5pdDsKLSAgICB0d2Vl
bi5zdGFydCA9IHN0YXJ0OwotICAgIC8vIElmIGEgKz0vLT0gdG9rZW4gd2FzIHByb3ZpZGVkLCB3
ZSdyZSBkb2luZyBhIHJlbGF0aXZlIGFuaW1hdGlvbgotICAgIHR3ZWVuLmVuZCA9IHBhcnRzWzFd
ID8gc3RhcnQgKyAoIHBhcnRzWzFdICsgMSApICogZW5kIDogZW5kOwotICAgIH0KLSAgICByZXR1
cm4gdHdlZW47Ci0gICAgfV0KLSAgICB9OwotCi0vLyBBbmltYXRpb25zIGNyZWF0ZWQgc3luY2hy
b25vdXNseSB3aWxsIHJ1biBzeW5jaHJvbm91c2x5Ci1mdW5jdGlvbiBjcmVhdGVGeE5vdygpIHsK
LSAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgIGZ4Tm93ID0gdW5kZWZpbmVkOwotICAg
IH0pOwotICAgIHJldHVybiAoIGZ4Tm93ID0galF1ZXJ5Lm5vdygpICk7Ci19Ci0KLWZ1bmN0aW9u
IGNyZWF0ZVR3ZWVucyggYW5pbWF0aW9uLCBwcm9wcyApIHsKLSAgICBqUXVlcnkuZWFjaCggcHJv
cHMsIGZ1bmN0aW9uKCBwcm9wLCB2YWx1ZSApIHsKLSAgICB2YXIgY29sbGVjdGlvbiA9ICggdHdl
ZW5lcnNbIHByb3AgXSB8fCBbXSApLmNvbmNhdCggdHdlZW5lcnNbICIqIiBdICksCi0gICAgaW5k
ZXggPSAwLAotICAgIGxlbmd0aCA9IGNvbGxlY3Rpb24ubGVuZ3RoOwotICAgIGZvciAoIDsgaW5k
ZXggPCBsZW5ndGg7IGluZGV4KysgKSB7Ci0gICAgaWYgKCBjb2xsZWN0aW9uWyBpbmRleCBdLmNh
bGwoIGFuaW1hdGlvbiwgcHJvcCwgdmFsdWUgKSApIHsKLQotICAgIC8vIHdlJ3JlIGRvbmUgd2l0
aCB0aGlzIHByb3BlcnR5Ci0gICAgcmV0dXJuOwotICAgIH0KLSAgICB9Ci0gICAgfSk7Ci19Ci0K
LWZ1bmN0aW9uIEFuaW1hdGlvbiggZWxlbSwgcHJvcGVydGllcywgb3B0aW9ucyApIHsKLSAgICB2
YXIgcmVzdWx0LAotICAgIHN0b3BwZWQsCi0gICAgaW5kZXggPSAwLAotICAgIGxlbmd0aCA9IGFu
aW1hdGlvblByZWZpbHRlcnMubGVuZ3RoLAotICAgIGRlZmVycmVkID0galF1ZXJ5LkRlZmVycmVk
KCkuYWx3YXlzKCBmdW5jdGlvbigpIHsKLSAgICAvLyBkb24ndCBtYXRjaCBlbGVtIGluIHRoZSA6
YW5pbWF0ZWQgc2VsZWN0b3IKLSAgICBkZWxldGUgdGljay5lbGVtOwotICAgIH0pLAotICAgIHRp
Y2sgPSBmdW5jdGlvbigpIHsKLSAgICBpZiAoIHN0b3BwZWQgKSB7Ci0gICAgcmV0dXJuIGZhbHNl
OwotICAgIH0KLSAgICB2YXIgY3VycmVudFRpbWUgPSBmeE5vdyB8fCBjcmVhdGVGeE5vdygpLAot
ICAgIHJlbWFpbmluZyA9IE1hdGgubWF4KCAwLCBhbmltYXRpb24uc3RhcnRUaW1lICsgYW5pbWF0
aW9uLmR1cmF0aW9uIC0gY3VycmVudFRpbWUgKSwKLSAgICAvLyBhcmNoYWljIGNyYXNoIGJ1ZyB3
b24ndCBhbGxvdyB1cyB0byB1c2UgMSAtICggMC41IHx8IDAgKSAoIzEyNDk3KQotICAgIHRlbXAg
PSByZW1haW5pbmcgLyBhbmltYXRpb24uZHVyYXRpb24gfHwgMCwKLSAgICBwZXJjZW50ID0gMSAt
IHRlbXAsCi0gICAgaW5kZXggPSAwLAotICAgIGxlbmd0aCA9IGFuaW1hdGlvbi50d2VlbnMubGVu
Z3RoOwotCi0gICAgZm9yICggOyBpbmRleCA8IGxlbmd0aCA7IGluZGV4KysgKSB7Ci0gICAgYW5p
bWF0aW9uLnR3ZWVuc1sgaW5kZXggXS5ydW4oIHBlcmNlbnQgKTsKLSAgICB9Ci0KLSAgICBkZWZl
cnJlZC5ub3RpZnlXaXRoKCBlbGVtLCBbIGFuaW1hdGlvbiwgcGVyY2VudCwgcmVtYWluaW5nIF0p
OwotCi0gICAgaWYgKCBwZXJjZW50IDwgMSAmJiBsZW5ndGggKSB7Ci0gICAgcmV0dXJuIHJlbWFp
bmluZzsKLSAgICB9IGVsc2UgewotICAgIGRlZmVycmVkLnJlc29sdmVXaXRoKCBlbGVtLCBbIGFu
aW1hdGlvbiBdICk7Ci0gICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICB9LAotICAgIGFuaW1h
dGlvbiA9IGRlZmVycmVkLnByb21pc2UoewotICAgIGVsZW06IGVsZW0sCi0gICAgcHJvcHM6IGpR
dWVyeS5leHRlbmQoIHt9LCBwcm9wZXJ0aWVzICksCi0gICAgb3B0czogalF1ZXJ5LmV4dGVuZCgg
dHJ1ZSwgeyBzcGVjaWFsRWFzaW5nOiB7fSB9LCBvcHRpb25zICksCi0gICAgb3JpZ2luYWxQcm9w
ZXJ0aWVzOiBwcm9wZXJ0aWVzLAotICAgIG9yaWdpbmFsT3B0aW9uczogb3B0aW9ucywKLSAgICBz
dGFydFRpbWU6IGZ4Tm93IHx8IGNyZWF0ZUZ4Tm93KCksCi0gICAgZHVyYXRpb246IG9wdGlvbnMu
ZHVyYXRpb24sCi0gICAgdHdlZW5zOiBbXSwKLSAgICBjcmVhdGVUd2VlbjogZnVuY3Rpb24oIHBy
b3AsIGVuZCApIHsKLSAgICB2YXIgdHdlZW4gPSBqUXVlcnkuVHdlZW4oIGVsZW0sIGFuaW1hdGlv
bi5vcHRzLCBwcm9wLCBlbmQsCi0gICAgYW5pbWF0aW9uLm9wdHMuc3BlY2lhbEVhc2luZ1sgcHJv
cCBdIHx8IGFuaW1hdGlvbi5vcHRzLmVhc2luZyApOwotICAgIGFuaW1hdGlvbi50d2VlbnMucHVz
aCggdHdlZW4gKTsKLSAgICByZXR1cm4gdHdlZW47Ci0gICAgfSwKLSAgICBzdG9wOiBmdW5jdGlv
biggZ290b0VuZCApIHsKLSAgICB2YXIgaW5kZXggPSAwLAotICAgIC8vIGlmIHdlIGFyZSBnb2lu
ZyB0byB0aGUgZW5kLCB3ZSB3YW50IHRvIHJ1biBhbGwgdGhlIHR3ZWVucwotICAgIC8vIG90aGVy
d2lzZSB3ZSBza2lwIHRoaXMgcGFydAotICAgIGxlbmd0aCA9IGdvdG9FbmQgPyBhbmltYXRpb24u
dHdlZW5zLmxlbmd0aCA6IDA7Ci0gICAgaWYgKCBzdG9wcGVkICkgewotICAgIHJldHVybiB0aGlz
OwotICAgIH0KLSAgICBzdG9wcGVkID0gdHJ1ZTsKLSAgICBmb3IgKCA7IGluZGV4IDwgbGVuZ3Ro
IDsgaW5kZXgrKyApIHsKLSAgICBhbmltYXRpb24udHdlZW5zWyBpbmRleCBdLnJ1biggMSApOwot
ICAgIH0KLQotICAgIC8vIHJlc29sdmUgd2hlbiB3ZSBwbGF5ZWQgdGhlIGxhc3QgZnJhbWUKLSAg
ICAvLyBvdGhlcndpc2UsIHJlamVjdAotICAgIGlmICggZ290b0VuZCApIHsKLSAgICBkZWZlcnJl
ZC5yZXNvbHZlV2l0aCggZWxlbSwgWyBhbmltYXRpb24sIGdvdG9FbmQgXSApOwotICAgIH0gZWxz
ZSB7Ci0gICAgZGVmZXJyZWQucmVqZWN0V2l0aCggZWxlbSwgWyBhbmltYXRpb24sIGdvdG9FbmQg
XSApOwotICAgIH0KLSAgICByZXR1cm4gdGhpczsKLSAgICB9Ci0gICAgfSksCi0gICAgcHJvcHMg
PSBhbmltYXRpb24ucHJvcHM7Ci0KLSAgICBwcm9wRmlsdGVyKCBwcm9wcywgYW5pbWF0aW9uLm9w
dHMuc3BlY2lhbEVhc2luZyApOwotCi0gICAgZm9yICggOyBpbmRleCA8IGxlbmd0aCA7IGluZGV4
KysgKSB7Ci0gICAgcmVzdWx0ID0gYW5pbWF0aW9uUHJlZmlsdGVyc1sgaW5kZXggXS5jYWxsKCBh
bmltYXRpb24sIGVsZW0sIHByb3BzLCBhbmltYXRpb24ub3B0cyApOwotICAgIGlmICggcmVzdWx0
ICkgewotICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotICAgIH0KLQotICAgIGNyZWF0ZVR3ZWVu
cyggYW5pbWF0aW9uLCBwcm9wcyApOwotCi0gICAgaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggYW5p
bWF0aW9uLm9wdHMuc3RhcnQgKSApIHsKLSAgICBhbmltYXRpb24ub3B0cy5zdGFydC5jYWxsKCBl
bGVtLCBhbmltYXRpb24gKTsKLSAgICB9Ci0KLSAgICBqUXVlcnkuZngudGltZXIoCi0gICAgalF1
ZXJ5LmV4dGVuZCggdGljaywgewotICAgIGVsZW06IGVsZW0sCi0gICAgYW5pbTogYW5pbWF0aW9u
LAotICAgIHF1ZXVlOiBhbmltYXRpb24ub3B0cy5xdWV1ZQotICAgIH0pCi0gICAgKTsKLQotICAg
IC8vIGF0dGFjaCBjYWxsYmFja3MgZnJvbSBvcHRpb25zCi0gICAgcmV0dXJuIGFuaW1hdGlvbi5w
cm9ncmVzcyggYW5pbWF0aW9uLm9wdHMucHJvZ3Jlc3MgKQotICAgIC5kb25lKCBhbmltYXRpb24u
b3B0cy5kb25lLCBhbmltYXRpb24ub3B0cy5jb21wbGV0ZSApCi0gICAgLmZhaWwoIGFuaW1hdGlv
bi5vcHRzLmZhaWwgKQotICAgIC5hbHdheXMoIGFuaW1hdGlvbi5vcHRzLmFsd2F5cyApOwotfQot
Ci1mdW5jdGlvbiBwcm9wRmlsdGVyKCBwcm9wcywgc3BlY2lhbEVhc2luZyApIHsKLSAgICB2YXIg
dmFsdWUsIG5hbWUsIGluZGV4LCBlYXNpbmcsIGhvb2tzOwotCi0gICAgLy8gY2FtZWxDYXNlLCBz
cGVjaWFsRWFzaW5nIGFuZCBleHBhbmQgY3NzSG9vayBwYXNzCi0gICAgZm9yICggaW5kZXggaW4g
cHJvcHMgKSB7Ci0gICAgbmFtZSA9IGpRdWVyeS5jYW1lbENhc2UoIGluZGV4ICk7Ci0gICAgZWFz
aW5nID0gc3BlY2lhbEVhc2luZ1sgbmFtZSBdOwotICAgIHZhbHVlID0gcHJvcHNbIGluZGV4IF07
Ci0gICAgaWYgKCBqUXVlcnkuaXNBcnJheSggdmFsdWUgKSApIHsKLSAgICBlYXNpbmcgPSB2YWx1
ZVsgMSBdOwotICAgIHZhbHVlID0gcHJvcHNbIGluZGV4IF0gPSB2YWx1ZVsgMCBdOwotICAgIH0K
LQotICAgIGlmICggaW5kZXggIT09IG5hbWUgKSB7Ci0gICAgcHJvcHNbIG5hbWUgXSA9IHZhbHVl
OwotICAgIGRlbGV0ZSBwcm9wc1sgaW5kZXggXTsKLSAgICB9Ci0KLSAgICBob29rcyA9IGpRdWVy
eS5jc3NIb29rc1sgbmFtZSBdOwotICAgIGlmICggaG9va3MgJiYgImV4cGFuZCIgaW4gaG9va3Mg
KSB7Ci0gICAgdmFsdWUgPSBob29rcy5leHBhbmQoIHZhbHVlICk7Ci0gICAgZGVsZXRlIHByb3Bz
WyBuYW1lIF07Ci0KLSAgICAvLyBub3QgcXVpdGUgJC5leHRlbmQsIHRoaXMgd29udCBvdmVyd3Jp
dGUga2V5cyBhbHJlYWR5IHByZXNlbnQuCi0gICAgLy8gYWxzbyAtIHJldXNpbmcgJ2luZGV4JyBm
cm9tIGFib3ZlIGJlY2F1c2Ugd2UgaGF2ZSB0aGUgY29ycmVjdCAibmFtZSIKLSAgICBmb3IgKCBp
bmRleCBpbiB2YWx1ZSApIHsKLSAgICBpZiAoICEoIGluZGV4IGluIHByb3BzICkgKSB7Ci0gICAg
cHJvcHNbIGluZGV4IF0gPSB2YWx1ZVsgaW5kZXggXTsKLSAgICBzcGVjaWFsRWFzaW5nWyBpbmRl
eCBdID0gZWFzaW5nOwotICAgIH0KLSAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICBzcGVjaWFsRWFz
aW5nWyBuYW1lIF0gPSBlYXNpbmc7Ci0gICAgfQotICAgIH0KLX0KLQotalF1ZXJ5LkFuaW1hdGlv
biA9IGpRdWVyeS5leHRlbmQoIEFuaW1hdGlvbiwgewotCi0gICAgdHdlZW5lcjogZnVuY3Rpb24o
IHByb3BzLCBjYWxsYmFjayApIHsKLSAgICBpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBwcm9wcyAp
ICkgewotICAgIGNhbGxiYWNrID0gcHJvcHM7Ci0gICAgcHJvcHMgPSBbICIqIiBdOwotICAgIH0g
ZWxzZSB7Ci0gICAgcHJvcHMgPSBwcm9wcy5zcGxpdCgiICIpOwotICAgIH0KLQotICAgIHZhciBw
cm9wLAotICAgIGluZGV4ID0gMCwKLSAgICBsZW5ndGggPSBwcm9wcy5sZW5ndGg7Ci0KLSAgICBm
b3IgKCA7IGluZGV4IDwgbGVuZ3RoIDsgaW5kZXgrKyApIHsKLSAgICBwcm9wID0gcHJvcHNbIGlu
ZGV4IF07Ci0gICAgdHdlZW5lcnNbIHByb3AgXSA9IHR3ZWVuZXJzWyBwcm9wIF0gfHwgW107Ci0g
ICAgdHdlZW5lcnNbIHByb3AgXS51bnNoaWZ0KCBjYWxsYmFjayApOwotICAgIH0KLSAgICB9LAot
Ci0gICAgcHJlZmlsdGVyOiBmdW5jdGlvbiggY2FsbGJhY2ssIHByZXBlbmQgKSB7Ci0gICAgaWYg
KCBwcmVwZW5kICkgewotICAgIGFuaW1hdGlvblByZWZpbHRlcnMudW5zaGlmdCggY2FsbGJhY2sg
KTsKLSAgICB9IGVsc2UgewotICAgIGFuaW1hdGlvblByZWZpbHRlcnMucHVzaCggY2FsbGJhY2sg
KTsKLSAgICB9Ci0gICAgfQotfSk7Ci0KLWZ1bmN0aW9uIGRlZmF1bHRQcmVmaWx0ZXIoIGVsZW0s
IHByb3BzLCBvcHRzICkgewotICAgIC8qanNoaW50IHZhbGlkdGhpczp0cnVlICovCi0gICAgdmFy
IHByb3AsIGluZGV4LCBsZW5ndGgsCi0gICAgdmFsdWUsIGRhdGFTaG93LCB0b2dnbGUsCi0gICAg
dHdlZW4sIGhvb2tzLCBvbGRmaXJlLAotICAgIGFuaW0gPSB0aGlzLAotICAgIHN0eWxlID0gZWxl
bS5zdHlsZSwKLSAgICBvcmlnID0ge30sCi0gICAgaGFuZGxlZCA9IFtdLAotICAgIGhpZGRlbiA9
IGVsZW0ubm9kZVR5cGUgJiYgaXNIaWRkZW4oIGVsZW0gKTsKLQotICAgIC8vIGhhbmRsZSBxdWV1
ZTogZmFsc2UgcHJvbWlzZXMKLSAgICBpZiAoICFvcHRzLnF1ZXVlICkgewotICAgIGhvb2tzID0g
alF1ZXJ5Ll9xdWV1ZUhvb2tzKCBlbGVtLCAiZngiICk7Ci0gICAgaWYgKCBob29rcy51bnF1ZXVl
ZCA9PSBudWxsICkgewotICAgIGhvb2tzLnVucXVldWVkID0gMDsKLSAgICBvbGRmaXJlID0gaG9v
a3MuZW1wdHkuZmlyZTsKLSAgICBob29rcy5lbXB0eS5maXJlID0gZnVuY3Rpb24oKSB7Ci0gICAg
aWYgKCAhaG9va3MudW5xdWV1ZWQgKSB7Ci0gICAgb2xkZmlyZSgpOwotICAgIH0KLSAgICB9Owot
ICAgIH0KLSAgICBob29rcy51bnF1ZXVlZCsrOwotCi0gICAgYW5pbS5hbHdheXMoZnVuY3Rpb24o
KSB7Ci0gICAgLy8gZG9pbmcgdGhpcyBtYWtlcyBzdXJlIHRoYXQgdGhlIGNvbXBsZXRlIGhhbmRs
ZXIgd2lsbCBiZSBjYWxsZWQKLSAgICAvLyBiZWZvcmUgdGhpcyBjb21wbGV0ZXMKLSAgICBhbmlt
LmFsd2F5cyhmdW5jdGlvbigpIHsKLSAgICBob29rcy51bnF1ZXVlZC0tOwotICAgIGlmICggIWpR
dWVyeS5xdWV1ZSggZWxlbSwgImZ4IiApLmxlbmd0aCApIHsKLSAgICBob29rcy5lbXB0eS5maXJl
KCk7Ci0gICAgfQotICAgIH0pOwotICAgIH0pOwotICAgIH0KLQotICAgIC8vIGhlaWdodC93aWR0
aCBvdmVyZmxvdyBwYXNzCi0gICAgaWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICYmICggImhlaWdo
dCIgaW4gcHJvcHMgfHwgIndpZHRoIiBpbiBwcm9wcyApICkgewotICAgIC8vIE1ha2Ugc3VyZSB0
aGF0IG5vdGhpbmcgc25lYWtzIG91dAotICAgIC8vIFJlY29yZCBhbGwgMyBvdmVyZmxvdyBhdHRy
aWJ1dGVzIGJlY2F1c2UgSUUgZG9lcyBub3QKLSAgICAvLyBjaGFuZ2UgdGhlIG92ZXJmbG93IGF0
dHJpYnV0ZSB3aGVuIG92ZXJmbG93WCBhbmQKLSAgICAvLyBvdmVyZmxvd1kgYXJlIHNldCB0byB0
aGUgc2FtZSB2YWx1ZQotICAgIG9wdHMub3ZlcmZsb3cgPSBbIHN0eWxlLm92ZXJmbG93LCBzdHls
ZS5vdmVyZmxvd1gsIHN0eWxlLm92ZXJmbG93WSBdOwotCi0gICAgLy8gU2V0IGRpc3BsYXkgcHJv
cGVydHkgdG8gaW5saW5lLWJsb2NrIGZvciBoZWlnaHQvd2lkdGgKLSAgICAvLyBhbmltYXRpb25z
IG9uIGlubGluZSBlbGVtZW50cyB0aGF0IGFyZSBoYXZpbmcgd2lkdGgvaGVpZ2h0IGFuaW1hdGVk
Ci0gICAgaWYgKCBqUXVlcnkuY3NzKCBlbGVtLCAiZGlzcGxheSIgKSA9PT0gImlubGluZSIgJiYK
LSAgICBqUXVlcnkuY3NzKCBlbGVtLCAiZmxvYXQiICkgPT09ICJub25lIiApIHsKLQotICAgIC8v
IGlubGluZS1sZXZlbCBlbGVtZW50cyBhY2NlcHQgaW5saW5lLWJsb2NrOwotICAgIC8vIGJsb2Nr
LWxldmVsIGVsZW1lbnRzIG5lZWQgdG8gYmUgaW5saW5lIHdpdGggbGF5b3V0Ci0gICAgaWYgKCAh
alF1ZXJ5LnN1cHBvcnQuaW5saW5lQmxvY2tOZWVkc0xheW91dCB8fCBjc3NfZGVmYXVsdERpc3Bs
YXkoIGVsZW0ubm9kZU5hbWUgKSA9PT0gImlubGluZSIgKSB7Ci0gICAgc3R5bGUuZGlzcGxheSA9
ICJpbmxpbmUtYmxvY2siOwotCi0gICAgfSBlbHNlIHsKLSAgICBzdHlsZS56b29tID0gMTsKLSAg
ICB9Ci0gICAgfQotICAgIH0KLQotICAgIGlmICggb3B0cy5vdmVyZmxvdyApIHsKLSAgICBzdHls
ZS5vdmVyZmxvdyA9ICJoaWRkZW4iOwotICAgIGlmICggIWpRdWVyeS5zdXBwb3J0LnNocmlua1dy
YXBCbG9ja3MgKSB7Ci0gICAgYW5pbS5hbHdheXMoZnVuY3Rpb24oKSB7Ci0gICAgc3R5bGUub3Zl
cmZsb3cgPSBvcHRzLm92ZXJmbG93WyAwIF07Ci0gICAgc3R5bGUub3ZlcmZsb3dYID0gb3B0cy5v
dmVyZmxvd1sgMSBdOwotICAgIHN0eWxlLm92ZXJmbG93WSA9IG9wdHMub3ZlcmZsb3dbIDIgXTsK
LSAgICB9KTsKLSAgICB9Ci0gICAgfQotCi0KLSAgICAvLyBzaG93L2hpZGUgcGFzcwotICAgIGZv
ciAoIGluZGV4IGluIHByb3BzICkgewotICAgIHZhbHVlID0gcHJvcHNbIGluZGV4IF07Ci0gICAg
aWYgKCByZnh0eXBlcy5leGVjKCB2YWx1ZSApICkgewotICAgIGRlbGV0ZSBwcm9wc1sgaW5kZXgg
XTsKLSAgICB0b2dnbGUgPSB0b2dnbGUgfHwgdmFsdWUgPT09ICJ0b2dnbGUiOwotICAgIGlmICgg
dmFsdWUgPT09ICggaGlkZGVuID8gImhpZGUiIDogInNob3ciICkgKSB7Ci0gICAgY29udGludWU7
Ci0gICAgfQotICAgIGhhbmRsZWQucHVzaCggaW5kZXggKTsKLSAgICB9Ci0gICAgfQotCi0gICAg
bGVuZ3RoID0gaGFuZGxlZC5sZW5ndGg7Ci0gICAgaWYgKCBsZW5ndGggKSB7Ci0gICAgZGF0YVNo
b3cgPSBqUXVlcnkuX2RhdGEoIGVsZW0sICJmeHNob3ciICkgfHwgalF1ZXJ5Ll9kYXRhKCBlbGVt
LCAiZnhzaG93Iiwge30gKTsKLSAgICBpZiAoICJoaWRkZW4iIGluIGRhdGFTaG93ICkgewotICAg
IGhpZGRlbiA9IGRhdGFTaG93LmhpZGRlbjsKLSAgICB9Ci0KLSAgICAvLyBzdG9yZSBzdGF0ZSBp
ZiBpdHMgdG9nZ2xlIC0gZW5hYmxlcyAuc3RvcCgpLnRvZ2dsZSgpIHRvICJyZXZlcnNlIgotICAg
IGlmICggdG9nZ2xlICkgewotICAgIGRhdGFTaG93LmhpZGRlbiA9ICFoaWRkZW47Ci0gICAgfQot
ICAgIGlmICggaGlkZGVuICkgewotICAgIGpRdWVyeSggZWxlbSApLnNob3coKTsKLSAgICB9IGVs
c2UgewotICAgIGFuaW0uZG9uZShmdW5jdGlvbigpIHsKLSAgICBqUXVlcnkoIGVsZW0gKS5oaWRl
KCk7Ci0gICAgfSk7Ci0gICAgfQotICAgIGFuaW0uZG9uZShmdW5jdGlvbigpIHsKLSAgICB2YXIg
cHJvcDsKLSAgICBqUXVlcnkuX3JlbW92ZURhdGEoIGVsZW0sICJmeHNob3ciICk7Ci0gICAgZm9y
ICggcHJvcCBpbiBvcmlnICkgewotICAgIGpRdWVyeS5zdHlsZSggZWxlbSwgcHJvcCwgb3JpZ1sg
cHJvcCBdICk7Ci0gICAgfQotICAgIH0pOwotICAgIGZvciAoIGluZGV4ID0gMCA7IGluZGV4IDwg
bGVuZ3RoIDsgaW5kZXgrKyApIHsKLSAgICBwcm9wID0gaGFuZGxlZFsgaW5kZXggXTsKLSAgICB0
d2VlbiA9IGFuaW0uY3JlYXRlVHdlZW4oIHByb3AsIGhpZGRlbiA/IGRhdGFTaG93WyBwcm9wIF0g
OiAwICk7Ci0gICAgb3JpZ1sgcHJvcCBdID0gZGF0YVNob3dbIHByb3AgXSB8fCBqUXVlcnkuc3R5
bGUoIGVsZW0sIHByb3AgKTsKLQotICAgIGlmICggISggcHJvcCBpbiBkYXRhU2hvdyApICkgewot
ICAgIGRhdGFTaG93WyBwcm9wIF0gPSB0d2Vlbi5zdGFydDsKLSAgICBpZiAoIGhpZGRlbiApIHsK
LSAgICB0d2Vlbi5lbmQgPSB0d2Vlbi5zdGFydDsKLSAgICB0d2Vlbi5zdGFydCA9IHByb3AgPT09
ICJ3aWR0aCIgfHwgcHJvcCA9PT0gImhlaWdodCIgPyAxIDogMDsKLSAgICB9Ci0gICAgfQotICAg
IH0KLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIFR3ZWVuKCBlbGVtLCBvcHRpb25zLCBwcm9wLCBlbmQs
IGVhc2luZyApIHsKLSAgICByZXR1cm4gbmV3IFR3ZWVuLnByb3RvdHlwZS5pbml0KCBlbGVtLCBv
cHRpb25zLCBwcm9wLCBlbmQsIGVhc2luZyApOwotfQotalF1ZXJ5LlR3ZWVuID0gVHdlZW47Ci0K
LVR3ZWVuLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogVHdlZW4sCi0gICAgaW5pdDog
ZnVuY3Rpb24oIGVsZW0sIG9wdGlvbnMsIHByb3AsIGVuZCwgZWFzaW5nLCB1bml0ICkgewotICAg
IHRoaXMuZWxlbSA9IGVsZW07Ci0gICAgdGhpcy5wcm9wID0gcHJvcDsKLSAgICB0aGlzLmVhc2lu
ZyA9IGVhc2luZyB8fCAic3dpbmciOwotICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7Ci0gICAg
dGhpcy5zdGFydCA9IHRoaXMubm93ID0gdGhpcy5jdXIoKTsKLSAgICB0aGlzLmVuZCA9IGVuZDsK
LSAgICB0aGlzLnVuaXQgPSB1bml0IHx8ICggalF1ZXJ5LmNzc051bWJlclsgcHJvcCBdID8gIiIg
OiAicHgiICk7Ci0gICAgfSwKLSAgICBjdXI6IGZ1bmN0aW9uKCkgewotICAgIHZhciBob29rcyA9
IFR3ZWVuLnByb3BIb29rc1sgdGhpcy5wcm9wIF07Ci0KLSAgICByZXR1cm4gaG9va3MgJiYgaG9v
a3MuZ2V0ID8KLSAgICBob29rcy5nZXQoIHRoaXMgKSA6Ci0gICAgVHdlZW4ucHJvcEhvb2tzLl9k
ZWZhdWx0LmdldCggdGhpcyApOwotICAgIH0sCi0gICAgcnVuOiBmdW5jdGlvbiggcGVyY2VudCAp
IHsKLSAgICB2YXIgZWFzZWQsCi0gICAgaG9va3MgPSBUd2Vlbi5wcm9wSG9va3NbIHRoaXMucHJv
cCBdOwotCi0gICAgaWYgKCB0aGlzLm9wdGlvbnMuZHVyYXRpb24gKSB7Ci0gICAgdGhpcy5wb3Mg
PSBlYXNlZCA9IGpRdWVyeS5lYXNpbmdbIHRoaXMuZWFzaW5nIF0oCi0gICAgcGVyY2VudCwgdGhp
cy5vcHRpb25zLmR1cmF0aW9uICogcGVyY2VudCwgMCwgMSwgdGhpcy5vcHRpb25zLmR1cmF0aW9u
Ci0gICAgKTsKLSAgICB9IGVsc2UgewotICAgIHRoaXMucG9zID0gZWFzZWQgPSBwZXJjZW50Owot
ICAgIH0KLSAgICB0aGlzLm5vdyA9ICggdGhpcy5lbmQgLSB0aGlzLnN0YXJ0ICkgKiBlYXNlZCAr
IHRoaXMuc3RhcnQ7Ci0KLSAgICBpZiAoIHRoaXMub3B0aW9ucy5zdGVwICkgewotICAgIHRoaXMu
b3B0aW9ucy5zdGVwLmNhbGwoIHRoaXMuZWxlbSwgdGhpcy5ub3csIHRoaXMgKTsKLSAgICB9Ci0K
LSAgICBpZiAoIGhvb2tzICYmIGhvb2tzLnNldCApIHsKLSAgICBob29rcy5zZXQoIHRoaXMgKTsK
LSAgICB9IGVsc2UgewotICAgIFR3ZWVuLnByb3BIb29rcy5fZGVmYXVsdC5zZXQoIHRoaXMgKTsK
LSAgICB9Ci0gICAgcmV0dXJuIHRoaXM7Ci0gICAgfQotfTsKLQotVHdlZW4ucHJvdG90eXBlLmlu
aXQucHJvdG90eXBlID0gVHdlZW4ucHJvdG90eXBlOwotCi1Ud2Vlbi5wcm9wSG9va3MgPSB7Ci0g
ICAgX2RlZmF1bHQ6IHsKLSAgICBnZXQ6IGZ1bmN0aW9uKCB0d2VlbiApIHsKLSAgICB2YXIgcmVz
dWx0OwotCi0gICAgaWYgKCB0d2Vlbi5lbGVtWyB0d2Vlbi5wcm9wIF0gIT0gbnVsbCAmJgotICAg
ICghdHdlZW4uZWxlbS5zdHlsZSB8fCB0d2Vlbi5lbGVtLnN0eWxlWyB0d2Vlbi5wcm9wIF0gPT0g
bnVsbCkgKSB7Ci0gICAgcmV0dXJuIHR3ZWVuLmVsZW1bIHR3ZWVuLnByb3AgXTsKLSAgICB9Ci0K
LSAgICAvLyBwYXNzaW5nIGFuIGVtcHR5IHN0cmluZyBhcyBhIDNyZCBwYXJhbWV0ZXIgdG8gLmNz
cyB3aWxsIGF1dG9tYXRpY2FsbHkKLSAgICAvLyBhdHRlbXB0IGEgcGFyc2VGbG9hdCBhbmQgZmFs
bGJhY2sgdG8gYSBzdHJpbmcgaWYgdGhlIHBhcnNlIGZhaWxzCi0gICAgLy8gc28sIHNpbXBsZSB2
YWx1ZXMgc3VjaCBhcyAiMTBweCIgYXJlIHBhcnNlZCB0byBGbG9hdC4KLSAgICAvLyBjb21wbGV4
IHZhbHVlcyBzdWNoIGFzICJyb3RhdGUoMXJhZCkiIGFyZSByZXR1cm5lZCBhcyBpcy4KLSAgICBy
ZXN1bHQgPSBqUXVlcnkuY3NzKCB0d2Vlbi5lbGVtLCB0d2Vlbi5wcm9wLCAiIiApOwotICAgIC8v
IEVtcHR5IHN0cmluZ3MsIG51bGwsIHVuZGVmaW5lZCBhbmQgImF1dG8iIGFyZSBjb252ZXJ0ZWQg
dG8gMC4KLSAgICByZXR1cm4gIXJlc3VsdCB8fCByZXN1bHQgPT09ICJhdXRvIiA/IDAgOiByZXN1
bHQ7Ci0gICAgfSwKLSAgICBzZXQ6IGZ1bmN0aW9uKCB0d2VlbiApIHsKLSAgICAvLyB1c2Ugc3Rl
cCBob29rIGZvciBiYWNrIGNvbXBhdCAtIHVzZSBjc3NIb29rIGlmIGl0cyB0aGVyZSAtIHVzZSAu
c3R5bGUgaWYgaXRzCi0gICAgLy8gYXZhaWxhYmxlIGFuZCB1c2UgcGxhaW4gcHJvcGVydGllcyB3
aGVyZSBhdmFpbGFibGUKLSAgICBpZiAoIGpRdWVyeS5meC5zdGVwWyB0d2Vlbi5wcm9wIF0gKSB7
Ci0gICAgalF1ZXJ5LmZ4LnN0ZXBbIHR3ZWVuLnByb3AgXSggdHdlZW4gKTsKLSAgICB9IGVsc2Ug
aWYgKCB0d2Vlbi5lbGVtLnN0eWxlICYmICggdHdlZW4uZWxlbS5zdHlsZVsgalF1ZXJ5LmNzc1By
b3BzWyB0d2Vlbi5wcm9wIF0gXSAhPSBudWxsIHx8IGpRdWVyeS5jc3NIb29rc1sgdHdlZW4ucHJv
cCBdICkgKSB7Ci0gICAgalF1ZXJ5LnN0eWxlKCB0d2Vlbi5lbGVtLCB0d2Vlbi5wcm9wLCB0d2Vl
bi5ub3cgKyB0d2Vlbi51bml0ICk7Ci0gICAgfSBlbHNlIHsKLSAgICB0d2Vlbi5lbGVtWyB0d2Vl
bi5wcm9wIF0gPSB0d2Vlbi5ub3c7Ci0gICAgfQotICAgIH0KLSAgICB9Ci19OwotCi0vLyBSZW1v
dmUgaW4gMi4wIC0gdGhpcyBzdXBwb3J0cyBJRTgncyBwYW5pYyBiYXNlZCBhcHByb2FjaAotLy8g
dG8gc2V0dGluZyB0aGluZ3Mgb24gZGlzY29ubmVjdGVkIG5vZGVzCi0KLVR3ZWVuLnByb3BIb29r
cy5zY3JvbGxUb3AgPSBUd2Vlbi5wcm9wSG9va3Muc2Nyb2xsTGVmdCA9IHsKLSAgICBzZXQ6IGZ1
bmN0aW9uKCB0d2VlbiApIHsKLSAgICBpZiAoIHR3ZWVuLmVsZW0ubm9kZVR5cGUgJiYgdHdlZW4u
ZWxlbS5wYXJlbnROb2RlICkgewotICAgIHR3ZWVuLmVsZW1bIHR3ZWVuLnByb3AgXSA9IHR3ZWVu
Lm5vdzsKLSAgICB9Ci0gICAgfQotfTsKLQotalF1ZXJ5LmVhY2goWyAidG9nZ2xlIiwgInNob3ci
LCAiaGlkZSIgXSwgZnVuY3Rpb24oIGksIG5hbWUgKSB7Ci0gICAgdmFyIGNzc0ZuID0galF1ZXJ5
LmZuWyBuYW1lIF07Ci0gICAgalF1ZXJ5LmZuWyBuYW1lIF0gPSBmdW5jdGlvbiggc3BlZWQsIGVh
c2luZywgY2FsbGJhY2sgKSB7Ci0gICAgcmV0dXJuIHNwZWVkID09IG51bGwgfHwgdHlwZW9mIHNw
ZWVkID09PSAiYm9vbGVhbiIgPwotICAgIGNzc0ZuLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKSA6
Ci0gICAgdGhpcy5hbmltYXRlKCBnZW5GeCggbmFtZSwgdHJ1ZSApLCBzcGVlZCwgZWFzaW5nLCBj
YWxsYmFjayApOwotICAgIH07Ci19KTsKLQotalF1ZXJ5LmZuLmV4dGVuZCh7Ci0gICAgZmFkZVRv
OiBmdW5jdGlvbiggc3BlZWQsIHRvLCBlYXNpbmcsIGNhbGxiYWNrICkgewotCi0gICAgLy8gc2hv
dyBhbnkgaGlkZGVuIGVsZW1lbnRzIGFmdGVyIHNldHRpbmcgb3BhY2l0eSB0byAwCi0gICAgcmV0
dXJuIHRoaXMuZmlsdGVyKCBpc0hpZGRlbiApLmNzcyggIm9wYWNpdHkiLCAwICkuc2hvdygpCi0K
LSAgICAvLyBhbmltYXRlIHRvIHRoZSB2YWx1ZSBzcGVjaWZpZWQKLSAgICAuZW5kKCkuYW5pbWF0
ZSh7IG9wYWNpdHk6IHRvIH0sIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICk7Ci0gICAgfSwKLSAg
ICBhbmltYXRlOiBmdW5jdGlvbiggcHJvcCwgc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKSB7Ci0g
ICAgdmFyIGVtcHR5ID0galF1ZXJ5LmlzRW1wdHlPYmplY3QoIHByb3AgKSwKLSAgICBvcHRhbGwg
PSBqUXVlcnkuc3BlZWQoIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICksCi0gICAgZG9BbmltYXRp
b24gPSBmdW5jdGlvbigpIHsKLSAgICAvLyBPcGVyYXRlIG9uIGEgY29weSBvZiBwcm9wIHNvIHBl
ci1wcm9wZXJ0eSBlYXNpbmcgd29uJ3QgYmUgbG9zdAotICAgIHZhciBhbmltID0gQW5pbWF0aW9u
KCB0aGlzLCBqUXVlcnkuZXh0ZW5kKCB7fSwgcHJvcCApLCBvcHRhbGwgKTsKLSAgICBkb0FuaW1h
dGlvbi5maW5pc2ggPSBmdW5jdGlvbigpIHsKLSAgICBhbmltLnN0b3AoIHRydWUgKTsKLSAgICB9
OwotICAgIC8vIEVtcHR5IGFuaW1hdGlvbnMsIG9yIGZpbmlzaGluZyByZXNvbHZlcyBpbW1lZGlh
dGVseQotICAgIGlmICggZW1wdHkgfHwgalF1ZXJ5Ll9kYXRhKCB0aGlzLCAiZmluaXNoIiApICkg
ewotICAgIGFuaW0uc3RvcCggdHJ1ZSApOwotICAgIH0KLSAgICB9OwotICAgIGRvQW5pbWF0aW9u
LmZpbmlzaCA9IGRvQW5pbWF0aW9uOwotCi0gICAgcmV0dXJuIGVtcHR5IHx8IG9wdGFsbC5xdWV1
ZSA9PT0gZmFsc2UgPwotICAgIHRoaXMuZWFjaCggZG9BbmltYXRpb24gKSA6Ci0gICAgdGhpcy5x
dWV1ZSggb3B0YWxsLnF1ZXVlLCBkb0FuaW1hdGlvbiApOwotICAgIH0sCi0gICAgc3RvcDogZnVu
Y3Rpb24oIHR5cGUsIGNsZWFyUXVldWUsIGdvdG9FbmQgKSB7Ci0gICAgdmFyIHN0b3BRdWV1ZSA9
IGZ1bmN0aW9uKCBob29rcyApIHsKLSAgICB2YXIgc3RvcCA9IGhvb2tzLnN0b3A7Ci0gICAgZGVs
ZXRlIGhvb2tzLnN0b3A7Ci0gICAgc3RvcCggZ290b0VuZCApOwotICAgIH07Ci0KLSAgICBpZiAo
IHR5cGVvZiB0eXBlICE9PSAic3RyaW5nIiApIHsKLSAgICBnb3RvRW5kID0gY2xlYXJRdWV1ZTsK
LSAgICBjbGVhclF1ZXVlID0gdHlwZTsKLSAgICB0eXBlID0gdW5kZWZpbmVkOwotICAgIH0KLSAg
ICBpZiAoIGNsZWFyUXVldWUgJiYgdHlwZSAhPT0gZmFsc2UgKSB7Ci0gICAgdGhpcy5xdWV1ZSgg
dHlwZSB8fCAiZngiLCBbXSApOwotICAgIH0KLQotICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rp
b24oKSB7Ci0gICAgdmFyIGRlcXVldWUgPSB0cnVlLAotICAgIGluZGV4ID0gdHlwZSAhPSBudWxs
ICYmIHR5cGUgKyAicXVldWVIb29rcyIsCi0gICAgdGltZXJzID0galF1ZXJ5LnRpbWVycywKLSAg
ICBkYXRhID0galF1ZXJ5Ll9kYXRhKCB0aGlzICk7Ci0KLSAgICBpZiAoIGluZGV4ICkgewotICAg
IGlmICggZGF0YVsgaW5kZXggXSAmJiBkYXRhWyBpbmRleCBdLnN0b3AgKSB7Ci0gICAgc3RvcFF1
ZXVlKCBkYXRhWyBpbmRleCBdICk7Ci0gICAgfQotICAgIH0gZWxzZSB7Ci0gICAgZm9yICggaW5k
ZXggaW4gZGF0YSApIHsKLSAgICBpZiAoIGRhdGFbIGluZGV4IF0gJiYgZGF0YVsgaW5kZXggXS5z
dG9wICYmIHJydW4udGVzdCggaW5kZXggKSApIHsKLSAgICBzdG9wUXVldWUoIGRhdGFbIGluZGV4
IF0gKTsKLSAgICB9Ci0gICAgfQotICAgIH0KLQotICAgIGZvciAoIGluZGV4ID0gdGltZXJzLmxl
bmd0aDsgaW5kZXgtLTsgKSB7Ci0gICAgaWYgKCB0aW1lcnNbIGluZGV4IF0uZWxlbSA9PT0gdGhp
cyAmJiAodHlwZSA9PSBudWxsIHx8IHRpbWVyc1sgaW5kZXggXS5xdWV1ZSA9PT0gdHlwZSkgKSB7
Ci0gICAgdGltZXJzWyBpbmRleCBdLmFuaW0uc3RvcCggZ290b0VuZCApOwotICAgIGRlcXVldWUg
PSBmYWxzZTsKLSAgICB0aW1lcnMuc3BsaWNlKCBpbmRleCwgMSApOwotICAgIH0KLSAgICB9Ci0K
LSAgICAvLyBzdGFydCB0aGUgbmV4dCBpbiB0aGUgcXVldWUgaWYgdGhlIGxhc3Qgc3RlcCB3YXNu
J3QgZm9yY2VkCi0gICAgLy8gdGltZXJzIGN1cnJlbnRseSB3aWxsIGNhbGwgdGhlaXIgY29tcGxl
dGUgY2FsbGJhY2tzLCB3aGljaCB3aWxsIGRlcXVldWUKLSAgICAvLyBidXQgb25seSBpZiB0aGV5
IHdlcmUgZ290b0VuZAotICAgIGlmICggZGVxdWV1ZSB8fCAhZ290b0VuZCApIHsKLSAgICBqUXVl
cnkuZGVxdWV1ZSggdGhpcywgdHlwZSApOwotICAgIH0KLSAgICB9KTsKLSAgICB9LAotICAgIGZp
bmlzaDogZnVuY3Rpb24oIHR5cGUgKSB7Ci0gICAgaWYgKCB0eXBlICE9PSBmYWxzZSApIHsKLSAg
ICB0eXBlID0gdHlwZSB8fCAiZngiOwotICAgIH0KLSAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0
aW9uKCkgewotICAgIHZhciBpbmRleCwKLSAgICBkYXRhID0galF1ZXJ5Ll9kYXRhKCB0aGlzICks
Ci0gICAgcXVldWUgPSBkYXRhWyB0eXBlICsgInF1ZXVlIiBdLAotICAgIGhvb2tzID0gZGF0YVsg
dHlwZSArICJxdWV1ZUhvb2tzIiBdLAotICAgIHRpbWVycyA9IGpRdWVyeS50aW1lcnMsCi0gICAg
bGVuZ3RoID0gcXVldWUgPyBxdWV1ZS5sZW5ndGggOiAwOwotCi0gICAgLy8gZW5hYmxlIGZpbmlz
aGluZyBmbGFnIG9uIHByaXZhdGUgZGF0YQotICAgIGRhdGEuZmluaXNoID0gdHJ1ZTsKLQotICAg
IC8vIGVtcHR5IHRoZSBxdWV1ZSBmaXJzdAotICAgIGpRdWVyeS5xdWV1ZSggdGhpcywgdHlwZSwg
W10gKTsKLQotICAgIGlmICggaG9va3MgJiYgaG9va3MuY3VyICYmIGhvb2tzLmN1ci5maW5pc2gg
KSB7Ci0gICAgaG9va3MuY3VyLmZpbmlzaC5jYWxsKCB0aGlzICk7Ci0gICAgfQotCi0gICAgLy8g
bG9vayBmb3IgYW55IGFjdGl2ZSBhbmltYXRpb25zLCBhbmQgZmluaXNoIHRoZW0KLSAgICBmb3Ig
KCBpbmRleCA9IHRpbWVycy5sZW5ndGg7IGluZGV4LS07ICkgewotICAgIGlmICggdGltZXJzWyBp
bmRleCBdLmVsZW0gPT09IHRoaXMgJiYgdGltZXJzWyBpbmRleCBdLnF1ZXVlID09PSB0eXBlICkg
ewotICAgIHRpbWVyc1sgaW5kZXggXS5hbmltLnN0b3AoIHRydWUgKTsKLSAgICB0aW1lcnMuc3Bs
aWNlKCBpbmRleCwgMSApOwotICAgIH0KLSAgICB9Ci0KLSAgICAvLyBsb29rIGZvciBhbnkgYW5p
bWF0aW9ucyBpbiB0aGUgb2xkIHF1ZXVlIGFuZCBmaW5pc2ggdGhlbQotICAgIGZvciAoIGluZGV4
ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7Ci0gICAgaWYgKCBxdWV1ZVsgaW5kZXgg
XSAmJiBxdWV1ZVsgaW5kZXggXS5maW5pc2ggKSB7Ci0gICAgcXVldWVbIGluZGV4IF0uZmluaXNo
LmNhbGwoIHRoaXMgKTsKLSAgICB9Ci0gICAgfQotCi0gICAgLy8gdHVybiBvZmYgZmluaXNoaW5n
IGZsYWcKLSAgICBkZWxldGUgZGF0YS5maW5pc2g7Ci0gICAgfSk7Ci0gICAgfQotfSk7Ci0KLS8v
IEdlbmVyYXRlIHBhcmFtZXRlcnMgdG8gY3JlYXRlIGEgc3RhbmRhcmQgYW5pbWF0aW9uCi1mdW5j
dGlvbiBnZW5GeCggdHlwZSwgaW5jbHVkZVdpZHRoICkgewotICAgIHZhciB3aGljaCwKLSAgICBh
dHRycyA9IHsgaGVpZ2h0OiB0eXBlIH0sCi0gICAgaSA9IDA7Ci0KLSAgICAvLyBpZiB3ZSBpbmNs
dWRlIHdpZHRoLCBzdGVwIHZhbHVlIGlzIDEgdG8gZG8gYWxsIGNzc0V4cGFuZCB2YWx1ZXMsCi0g
ICAgLy8gaWYgd2UgZG9uJ3QgaW5jbHVkZSB3aWR0aCwgc3RlcCB2YWx1ZSBpcyAyIHRvIHNraXAg
b3ZlciBMZWZ0IGFuZCBSaWdodAotICAgIGluY2x1ZGVXaWR0aCA9IGluY2x1ZGVXaWR0aD8gMSA6
IDA7Ci0gICAgZm9yKCA7IGkgPCA0IDsgaSArPSAyIC0gaW5jbHVkZVdpZHRoICkgewotICAgIHdo
aWNoID0gY3NzRXhwYW5kWyBpIF07Ci0gICAgYXR0cnNbICJtYXJnaW4iICsgd2hpY2ggXSA9IGF0
dHJzWyAicGFkZGluZyIgKyB3aGljaCBdID0gdHlwZTsKLSAgICB9Ci0KLSAgICBpZiAoIGluY2x1
ZGVXaWR0aCApIHsKLSAgICBhdHRycy5vcGFjaXR5ID0gYXR0cnMud2lkdGggPSB0eXBlOwotICAg
IH0KLQotICAgIHJldHVybiBhdHRyczsKLX0KLQotLy8gR2VuZXJhdGUgc2hvcnRjdXRzIGZvciBj
dXN0b20gYW5pbWF0aW9ucwotalF1ZXJ5LmVhY2goewotICAgIHNsaWRlRG93bjogZ2VuRngoInNo
b3ciKSwKLSAgICBzbGlkZVVwOiBnZW5GeCgiaGlkZSIpLAotICAgIHNsaWRlVG9nZ2xlOiBnZW5G
eCgidG9nZ2xlIiksCi0gICAgZmFkZUluOiB7IG9wYWNpdHk6ICJzaG93IiB9LAotICAgIGZhZGVP
dXQ6IHsgb3BhY2l0eTogImhpZGUiIH0sCi0gICAgZmFkZVRvZ2dsZTogeyBvcGFjaXR5OiAidG9n
Z2xlIiB9Ci19LCBmdW5jdGlvbiggbmFtZSwgcHJvcHMgKSB7Ci0gICAgalF1ZXJ5LmZuWyBuYW1l
IF0gPSBmdW5jdGlvbiggc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKSB7Ci0gICAgcmV0dXJuIHRo
aXMuYW5pbWF0ZSggcHJvcHMsIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICk7Ci0gICAgfTsKLX0p
OwotCi1qUXVlcnkuc3BlZWQgPSBmdW5jdGlvbiggc3BlZWQsIGVhc2luZywgZm4gKSB7Ci0gICAg
dmFyIG9wdCA9IHNwZWVkICYmIHR5cGVvZiBzcGVlZCA9PT0gIm9iamVjdCIgPyBqUXVlcnkuZXh0
ZW5kKCB7fSwgc3BlZWQgKSA6IHsKLSAgICBjb21wbGV0ZTogZm4gfHwgIWZuICYmIGVhc2luZyB8
fAotICAgIGpRdWVyeS5pc0Z1bmN0aW9uKCBzcGVlZCApICYmIHNwZWVkLAotICAgIGR1cmF0aW9u
OiBzcGVlZCwKLSAgICBlYXNpbmc6IGZuICYmIGVhc2luZyB8fCBlYXNpbmcgJiYgIWpRdWVyeS5p
c0Z1bmN0aW9uKCBlYXNpbmcgKSAmJiBlYXNpbmcKLSAgICB9OwotCi0gICAgb3B0LmR1cmF0aW9u
ID0galF1ZXJ5LmZ4Lm9mZiA/IDAgOiB0eXBlb2Ygb3B0LmR1cmF0aW9uID09PSAibnVtYmVyIiA/
IG9wdC5kdXJhdGlvbiA6Ci0gICAgb3B0LmR1cmF0aW9uIGluIGpRdWVyeS5meC5zcGVlZHMgPyBq
UXVlcnkuZnguc3BlZWRzWyBvcHQuZHVyYXRpb24gXSA6IGpRdWVyeS5meC5zcGVlZHMuX2RlZmF1
bHQ7Ci0KLSAgICAvLyBub3JtYWxpemUgb3B0LnF1ZXVlIC0gdHJ1ZS91bmRlZmluZWQvbnVsbCAt
PiAiZngiCi0gICAgaWYgKCBvcHQucXVldWUgPT0gbnVsbCB8fCBvcHQucXVldWUgPT09IHRydWUg
KSB7Ci0gICAgb3B0LnF1ZXVlID0gImZ4IjsKLSAgICB9Ci0KLSAgICAvLyBRdWV1ZWluZwotICAg
IG9wdC5vbGQgPSBvcHQuY29tcGxldGU7Ci0KLSAgICBvcHQuY29tcGxldGUgPSBmdW5jdGlvbigp
IHsKLSAgICBpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBvcHQub2xkICkgKSB7Ci0gICAgb3B0Lm9s
ZC5jYWxsKCB0aGlzICk7Ci0gICAgfQotCi0gICAgaWYgKCBvcHQucXVldWUgKSB7Ci0gICAgalF1
ZXJ5LmRlcXVldWUoIHRoaXMsIG9wdC5xdWV1ZSApOwotICAgIH0KLSAgICB9OwotCi0gICAgcmV0
dXJuIG9wdDsKLX07Ci0KLWpRdWVyeS5lYXNpbmcgPSB7Ci0gICAgbGluZWFyOiBmdW5jdGlvbigg
cCApIHsKLSAgICByZXR1cm4gcDsKLSAgICB9LAotICAgIHN3aW5nOiBmdW5jdGlvbiggcCApIHsK
LSAgICByZXR1cm4gMC41IC0gTWF0aC5jb3MoIHAqTWF0aC5QSSApIC8gMjsKLSAgICB9Ci19Owot
Ci1qUXVlcnkudGltZXJzID0gW107Ci1qUXVlcnkuZnggPSBUd2Vlbi5wcm90b3R5cGUuaW5pdDsK
LWpRdWVyeS5meC50aWNrID0gZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHRpbWVyLAotICAgIHRpbWVy
cyA9IGpRdWVyeS50aW1lcnMsCi0gICAgaSA9IDA7Ci0KLSAgICBmeE5vdyA9IGpRdWVyeS5ub3co
KTsKLQotICAgIGZvciAoIDsgaSA8IHRpbWVycy5sZW5ndGg7IGkrKyApIHsKLSAgICB0aW1lciA9
IHRpbWVyc1sgaSBdOwotICAgIC8vIENoZWNrcyB0aGUgdGltZXIgaGFzIG5vdCBhbHJlYWR5IGJl
ZW4gcmVtb3ZlZAotICAgIGlmICggIXRpbWVyKCkgJiYgdGltZXJzWyBpIF0gPT09IHRpbWVyICkg
ewotICAgIHRpbWVycy5zcGxpY2UoIGktLSwgMSApOwotICAgIH0KLSAgICB9Ci0KLSAgICBpZiAo
ICF0aW1lcnMubGVuZ3RoICkgewotICAgIGpRdWVyeS5meC5zdG9wKCk7Ci0gICAgfQotICAgIGZ4
Tm93ID0gdW5kZWZpbmVkOwotfTsKLQotalF1ZXJ5LmZ4LnRpbWVyID0gZnVuY3Rpb24oIHRpbWVy
ICkgewotICAgIGlmICggdGltZXIoKSAmJiBqUXVlcnkudGltZXJzLnB1c2goIHRpbWVyICkgKSB7
Ci0gICAgalF1ZXJ5LmZ4LnN0YXJ0KCk7Ci0gICAgfQotfTsKLQotalF1ZXJ5LmZ4LmludGVydmFs
ID0gMTM7Ci0KLWpRdWVyeS5meC5zdGFydCA9IGZ1bmN0aW9uKCkgewotICAgIGlmICggIXRpbWVy
SWQgKSB7Ci0gICAgdGltZXJJZCA9IHNldEludGVydmFsKCBqUXVlcnkuZngudGljaywgalF1ZXJ5
LmZ4LmludGVydmFsICk7Ci0gICAgfQotfTsKLQotalF1ZXJ5LmZ4LnN0b3AgPSBmdW5jdGlvbigp
IHsKLSAgICBjbGVhckludGVydmFsKCB0aW1lcklkICk7Ci0gICAgdGltZXJJZCA9IG51bGw7Ci19
OwotCi1qUXVlcnkuZnguc3BlZWRzID0gewotICAgIHNsb3c6IDYwMCwKLSAgICBmYXN0OiAyMDAs
Ci0gICAgLy8gRGVmYXVsdCBzcGVlZAotICAgIF9kZWZhdWx0OiA0MDAKLX07Ci0KLS8vIEJhY2sg
Q29tcGF0IDwxLjggZXh0ZW5zaW9uIHBvaW50Ci1qUXVlcnkuZnguc3RlcCA9IHt9OwotCi1pZiAo
IGpRdWVyeS5leHByICYmIGpRdWVyeS5leHByLmZpbHRlcnMgKSB7Ci0gICAgalF1ZXJ5LmV4cHIu
ZmlsdGVycy5hbmltYXRlZCA9IGZ1bmN0aW9uKCBlbGVtICkgewotICAgIHJldHVybiBqUXVlcnku
Z3JlcChqUXVlcnkudGltZXJzLCBmdW5jdGlvbiggZm4gKSB7Ci0gICAgcmV0dXJuIGVsZW0gPT09
IGZuLmVsZW07Ci0gICAgfSkubGVuZ3RoOwotICAgIH07Ci19Ci1qUXVlcnkuZm4ub2Zmc2V0ID0g
ZnVuY3Rpb24oIG9wdGlvbnMgKSB7Ci0gICAgaWYgKCBhcmd1bWVudHMubGVuZ3RoICkgewotICAg
IHJldHVybiBvcHRpb25zID09PSB1bmRlZmluZWQgPwotICAgIHRoaXMgOgotICAgIHRoaXMuZWFj
aChmdW5jdGlvbiggaSApIHsKLSAgICBqUXVlcnkub2Zmc2V0LnNldE9mZnNldCggdGhpcywgb3B0
aW9ucywgaSApOwotICAgIH0pOwotICAgIH0KLQotICAgIHZhciBkb2NFbGVtLCB3aW4sCi0gICAg
Ym94ID0geyB0b3A6IDAsIGxlZnQ6IDAgfSwKLSAgICBlbGVtID0gdGhpc1sgMCBdLAotICAgIGRv
YyA9IGVsZW0gJiYgZWxlbS5vd25lckRvY3VtZW50OwotCi0gICAgaWYgKCAhZG9jICkgewotICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBkb2NFbGVtID0gZG9jLmRvY3VtZW50RWxlbWVudDsKLQot
ICAgIC8vIE1ha2Ugc3VyZSBpdCdzIG5vdCBhIGRpc2Nvbm5lY3RlZCBET00gbm9kZQotICAgIGlm
ICggIWpRdWVyeS5jb250YWlucyggZG9jRWxlbSwgZWxlbSApICkgewotICAgIHJldHVybiBib3g7
Ci0gICAgfQotCi0gICAgLy8gSWYgd2UgZG9uJ3QgaGF2ZSBnQkNSLCBqdXN0IHVzZSAwLDAgcmF0
aGVyIHRoYW4gZXJyb3IKLSAgICAvLyBCbGFja0JlcnJ5IDUsIGlPUyAzIChvcmlnaW5hbCBpUGhv
bmUpCi0gICAgaWYgKCB0eXBlb2YgZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QgIT09IGNvcmVf
c3RydW5kZWZpbmVkICkgewotICAgIGJveCA9IGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7
Ci0gICAgfQotICAgIHdpbiA9IGdldFdpbmRvdyggZG9jICk7Ci0gICAgcmV0dXJuIHsKLSAgICB0
b3A6IGJveC50b3AgICsgKCB3aW4ucGFnZVlPZmZzZXQgfHwgZG9jRWxlbS5zY3JvbGxUb3AgKSAg
LSAoIGRvY0VsZW0uY2xpZW50VG9wICB8fCAwICksCi0gICAgbGVmdDogYm94LmxlZnQgKyAoIHdp
bi5wYWdlWE9mZnNldCB8fCBkb2NFbGVtLnNjcm9sbExlZnQgKSAtICggZG9jRWxlbS5jbGllbnRM
ZWZ0IHx8IDAgKQotICAgIH07Ci19OwotCi1qUXVlcnkub2Zmc2V0ID0gewotCi0gICAgc2V0T2Zm
c2V0OiBmdW5jdGlvbiggZWxlbSwgb3B0aW9ucywgaSApIHsKLSAgICB2YXIgcG9zaXRpb24gPSBq
UXVlcnkuY3NzKCBlbGVtLCAicG9zaXRpb24iICk7Ci0KLSAgICAvLyBzZXQgcG9zaXRpb24gZmly
c3QsIGluLWNhc2UgdG9wL2xlZnQgYXJlIHNldCBldmVuIG9uIHN0YXRpYyBlbGVtCi0gICAgaWYg
KCBwb3NpdGlvbiA9PT0gInN0YXRpYyIgKSB7Ci0gICAgZWxlbS5zdHlsZS5wb3NpdGlvbiA9ICJy
ZWxhdGl2ZSI7Ci0gICAgfQotCi0gICAgdmFyIGN1ckVsZW0gPSBqUXVlcnkoIGVsZW0gKSwKLSAg
ICBjdXJPZmZzZXQgPSBjdXJFbGVtLm9mZnNldCgpLAotICAgIGN1ckNTU1RvcCA9IGpRdWVyeS5j
c3MoIGVsZW0sICJ0b3AiICksCi0gICAgY3VyQ1NTTGVmdCA9IGpRdWVyeS5jc3MoIGVsZW0sICJs
ZWZ0IiApLAotICAgIGNhbGN1bGF0ZVBvc2l0aW9uID0gKCBwb3NpdGlvbiA9PT0gImFic29sdXRl
IiB8fCBwb3NpdGlvbiA9PT0gImZpeGVkIiApICYmIGpRdWVyeS5pbkFycmF5KCJhdXRvIiwgW2N1
ckNTU1RvcCwgY3VyQ1NTTGVmdF0pID4gLTEsCi0gICAgcHJvcHMgPSB7fSwgY3VyUG9zaXRpb24g
PSB7fSwgY3VyVG9wLCBjdXJMZWZ0OwotCi0gICAgLy8gbmVlZCB0byBiZSBhYmxlIHRvIGNhbGN1
bGF0ZSBwb3NpdGlvbiBpZiBlaXRoZXIgdG9wIG9yIGxlZnQgaXMgYXV0byBhbmQgcG9zaXRpb24g
aXMgZWl0aGVyIGFic29sdXRlIG9yIGZpeGVkCi0gICAgaWYgKCBjYWxjdWxhdGVQb3NpdGlvbiAp
IHsKLSAgICBjdXJQb3NpdGlvbiA9IGN1ckVsZW0ucG9zaXRpb24oKTsKLSAgICBjdXJUb3AgPSBj
dXJQb3NpdGlvbi50b3A7Ci0gICAgY3VyTGVmdCA9IGN1clBvc2l0aW9uLmxlZnQ7Ci0gICAgfSBl
bHNlIHsKLSAgICBjdXJUb3AgPSBwYXJzZUZsb2F0KCBjdXJDU1NUb3AgKSB8fCAwOwotICAgIGN1
ckxlZnQgPSBwYXJzZUZsb2F0KCBjdXJDU1NMZWZ0ICkgfHwgMDsKLSAgICB9Ci0KLSAgICBpZiAo
IGpRdWVyeS5pc0Z1bmN0aW9uKCBvcHRpb25zICkgKSB7Ci0gICAgb3B0aW9ucyA9IG9wdGlvbnMu
Y2FsbCggZWxlbSwgaSwgY3VyT2Zmc2V0ICk7Ci0gICAgfQotCi0gICAgaWYgKCBvcHRpb25zLnRv
cCAhPSBudWxsICkgewotICAgIHByb3BzLnRvcCA9ICggb3B0aW9ucy50b3AgLSBjdXJPZmZzZXQu
dG9wICkgKyBjdXJUb3A7Ci0gICAgfQotICAgIGlmICggb3B0aW9ucy5sZWZ0ICE9IG51bGwgKSB7
Ci0gICAgcHJvcHMubGVmdCA9ICggb3B0aW9ucy5sZWZ0IC0gY3VyT2Zmc2V0LmxlZnQgKSArIGN1
ckxlZnQ7Ci0gICAgfQotCi0gICAgaWYgKCAidXNpbmciIGluIG9wdGlvbnMgKSB7Ci0gICAgb3B0
aW9ucy51c2luZy5jYWxsKCBlbGVtLCBwcm9wcyApOwotICAgIH0gZWxzZSB7Ci0gICAgY3VyRWxl
bS5jc3MoIHByb3BzICk7Ci0gICAgfQotICAgIH0KLX07Ci0KLQotalF1ZXJ5LmZuLmV4dGVuZCh7
Ci0KLSAgICBwb3NpdGlvbjogZnVuY3Rpb24oKSB7Ci0gICAgaWYgKCAhdGhpc1sgMCBdICkgewot
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICB2YXIgb2Zmc2V0UGFyZW50LCBvZmZzZXQsCi0gICAg
cGFyZW50T2Zmc2V0ID0geyB0b3A6IDAsIGxlZnQ6IDAgfSwKLSAgICBlbGVtID0gdGhpc1sgMCBd
OwotCi0gICAgLy8gZml4ZWQgZWxlbWVudHMgYXJlIG9mZnNldCBmcm9tIHdpbmRvdyAocGFyZW50
T2Zmc2V0ID0ge3RvcDowLCBsZWZ0OiAwfSwgYmVjYXVzZSBpdCBpcyBpdCdzIG9ubHkgb2Zmc2V0
IHBhcmVudAotICAgIGlmICggalF1ZXJ5LmNzcyggZWxlbSwgInBvc2l0aW9uIiApID09PSAiZml4
ZWQiICkgewotICAgIC8vIHdlIGFzc3VtZSB0aGF0IGdldEJvdW5kaW5nQ2xpZW50UmVjdCBpcyBh
dmFpbGFibGUgd2hlbiBjb21wdXRlZCBwb3NpdGlvbiBpcyBmaXhlZAotICAgIG9mZnNldCA9IGVs
ZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7Ci0gICAgfSBlbHNlIHsKLSAgICAvLyBHZXQgKnJl
YWwqIG9mZnNldFBhcmVudAotICAgIG9mZnNldFBhcmVudCA9IHRoaXMub2Zmc2V0UGFyZW50KCk7
Ci0KLSAgICAvLyBHZXQgY29ycmVjdCBvZmZzZXRzCi0gICAgb2Zmc2V0ID0gdGhpcy5vZmZzZXQo
KTsKLSAgICBpZiAoICFqUXVlcnkubm9kZU5hbWUoIG9mZnNldFBhcmVudFsgMCBdLCAiaHRtbCIg
KSApIHsKLSAgICBwYXJlbnRPZmZzZXQgPSBvZmZzZXRQYXJlbnQub2Zmc2V0KCk7Ci0gICAgfQot
Ci0gICAgLy8gQWRkIG9mZnNldFBhcmVudCBib3JkZXJzCi0gICAgcGFyZW50T2Zmc2V0LnRvcCAg
Kz0galF1ZXJ5LmNzcyggb2Zmc2V0UGFyZW50WyAwIF0sICJib3JkZXJUb3BXaWR0aCIsIHRydWUg
KTsKLSAgICBwYXJlbnRPZmZzZXQubGVmdCArPSBqUXVlcnkuY3NzKCBvZmZzZXRQYXJlbnRbIDAg
XSwgImJvcmRlckxlZnRXaWR0aCIsIHRydWUgKTsKLSAgICB9Ci0KLSAgICAvLyBTdWJ0cmFjdCBw
YXJlbnQgb2Zmc2V0cyBhbmQgZWxlbWVudCBtYXJnaW5zCi0gICAgLy8gbm90ZTogd2hlbiBhbiBl
bGVtZW50IGhhcyBtYXJnaW46IGF1dG8gdGhlIG9mZnNldExlZnQgYW5kIG1hcmdpbkxlZnQKLSAg
ICAvLyBhcmUgdGhlIHNhbWUgaW4gU2FmYXJpIGNhdXNpbmcgb2Zmc2V0LmxlZnQgdG8gaW5jb3Jy
ZWN0bHkgYmUgMAotICAgIHJldHVybiB7Ci0gICAgdG9wOiAgb2Zmc2V0LnRvcCAgLSBwYXJlbnRP
ZmZzZXQudG9wIC0galF1ZXJ5LmNzcyggZWxlbSwgIm1hcmdpblRvcCIsIHRydWUgKSwKLSAgICBs
ZWZ0OiBvZmZzZXQubGVmdCAtIHBhcmVudE9mZnNldC5sZWZ0IC0galF1ZXJ5LmNzcyggZWxlbSwg
Im1hcmdpbkxlZnQiLCB0cnVlKQotICAgIH07Ci0gICAgfSwKLQotICAgIG9mZnNldFBhcmVudDog
ZnVuY3Rpb24oKSB7Ci0gICAgcmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCkgewotICAgIHZhciBv
ZmZzZXRQYXJlbnQgPSB0aGlzLm9mZnNldFBhcmVudCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1l
bnQ7Ci0gICAgd2hpbGUgKCBvZmZzZXRQYXJlbnQgJiYgKCAhalF1ZXJ5Lm5vZGVOYW1lKCBvZmZz
ZXRQYXJlbnQsICJodG1sIiApICYmIGpRdWVyeS5jc3MoIG9mZnNldFBhcmVudCwgInBvc2l0aW9u
IikgPT09ICJzdGF0aWMiICkgKSB7Ci0gICAgb2Zmc2V0UGFyZW50ID0gb2Zmc2V0UGFyZW50Lm9m
ZnNldFBhcmVudDsKLSAgICB9Ci0gICAgcmV0dXJuIG9mZnNldFBhcmVudCB8fCBkb2N1bWVudC5k
b2N1bWVudEVsZW1lbnQ7Ci0gICAgfSk7Ci0gICAgfQotfSk7Ci0KLQotLy8gQ3JlYXRlIHNjcm9s
bExlZnQgYW5kIHNjcm9sbFRvcCBtZXRob2RzCi1qUXVlcnkuZWFjaCgge3Njcm9sbExlZnQ6ICJw
YWdlWE9mZnNldCIsIHNjcm9sbFRvcDogInBhZ2VZT2Zmc2V0In0sIGZ1bmN0aW9uKCBtZXRob2Qs
IHByb3AgKSB7Ci0gICAgdmFyIHRvcCA9IC9ZLy50ZXN0KCBwcm9wICk7Ci0KLSAgICBqUXVlcnku
Zm5bIG1ldGhvZCBdID0gZnVuY3Rpb24oIHZhbCApIHsKLSAgICByZXR1cm4galF1ZXJ5LmFjY2Vz
cyggdGhpcywgZnVuY3Rpb24oIGVsZW0sIG1ldGhvZCwgdmFsICkgewotICAgIHZhciB3aW4gPSBn
ZXRXaW5kb3coIGVsZW0gKTsKLQotICAgIGlmICggdmFsID09PSB1bmRlZmluZWQgKSB7Ci0gICAg
cmV0dXJuIHdpbiA/IChwcm9wIGluIHdpbikgPyB3aW5bIHByb3AgXSA6Ci0gICAgd2luLmRvY3Vt
ZW50LmRvY3VtZW50RWxlbWVudFsgbWV0aG9kIF0gOgotICAgIGVsZW1bIG1ldGhvZCBdOwotICAg
IH0KLQotICAgIGlmICggd2luICkgewotICAgIHdpbi5zY3JvbGxUbygKLSAgICAhdG9wID8gdmFs
IDogalF1ZXJ5KCB3aW4gKS5zY3JvbGxMZWZ0KCksCi0gICAgdG9wID8gdmFsIDogalF1ZXJ5KCB3
aW4gKS5zY3JvbGxUb3AoKQotICAgICk7Ci0KLSAgICB9IGVsc2UgewotICAgIGVsZW1bIG1ldGhv
ZCBdID0gdmFsOwotICAgIH0KLSAgICB9LCBtZXRob2QsIHZhbCwgYXJndW1lbnRzLmxlbmd0aCwg
bnVsbCApOwotICAgIH07Ci19KTsKLQotZnVuY3Rpb24gZ2V0V2luZG93KCBlbGVtICkgewotICAg
IHJldHVybiBqUXVlcnkuaXNXaW5kb3coIGVsZW0gKSA/Ci0gICAgZWxlbSA6Ci0gICAgZWxlbS5u
b2RlVHlwZSA9PT0gOSA/Ci0gICAgZWxlbS5kZWZhdWx0VmlldyB8fCBlbGVtLnBhcmVudFdpbmRv
dyA6Ci0gICAgZmFsc2U7Ci19Ci0vLyBDcmVhdGUgaW5uZXJIZWlnaHQsIGlubmVyV2lkdGgsIGhl
aWdodCwgd2lkdGgsIG91dGVySGVpZ2h0IGFuZCBvdXRlcldpZHRoIG1ldGhvZHMKLWpRdWVyeS5l
YWNoKCB7IEhlaWdodDogImhlaWdodCIsIFdpZHRoOiAid2lkdGgiIH0sIGZ1bmN0aW9uKCBuYW1l
LCB0eXBlICkgewotICAgIGpRdWVyeS5lYWNoKCB7IHBhZGRpbmc6ICJpbm5lciIgKyBuYW1lLCBj
b250ZW50OiB0eXBlLCAiIjogIm91dGVyIiArIG5hbWUgfSwgZnVuY3Rpb24oIGRlZmF1bHRFeHRy
YSwgZnVuY05hbWUgKSB7Ci0gICAgLy8gbWFyZ2luIGlzIG9ubHkgZm9yIG91dGVySGVpZ2h0LCBv
dXRlcldpZHRoCi0gICAgalF1ZXJ5LmZuWyBmdW5jTmFtZSBdID0gZnVuY3Rpb24oIG1hcmdpbiwg
dmFsdWUgKSB7Ci0gICAgdmFyIGNoYWluYWJsZSA9IGFyZ3VtZW50cy5sZW5ndGggJiYgKCBkZWZh
dWx0RXh0cmEgfHwgdHlwZW9mIG1hcmdpbiAhPT0gImJvb2xlYW4iICksCi0gICAgZXh0cmEgPSBk
ZWZhdWx0RXh0cmEgfHwgKCBtYXJnaW4gPT09IHRydWUgfHwgdmFsdWUgPT09IHRydWUgPyAibWFy
Z2luIiA6ICJib3JkZXIiICk7Ci0KLSAgICByZXR1cm4galF1ZXJ5LmFjY2VzcyggdGhpcywgZnVu
Y3Rpb24oIGVsZW0sIHR5cGUsIHZhbHVlICkgewotICAgIHZhciBkb2M7Ci0KLSAgICBpZiAoIGpR
dWVyeS5pc1dpbmRvdyggZWxlbSApICkgewotICAgIC8vIEFzIG9mIDUvOC8yMDEyIHRoaXMgd2ls
bCB5aWVsZCBpbmNvcnJlY3QgcmVzdWx0cyBmb3IgTW9iaWxlIFNhZmFyaSwgYnV0IHRoZXJlCi0g
ICAgLy8gaXNuJ3QgYSB3aG9sZSBsb3Qgd2UgY2FuIGRvLiBTZWUgcHVsbCByZXF1ZXN0IGF0IHRo
aXMgVVJMIGZvciBkaXNjdXNzaW9uOgotICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9qcXVlcnkv
anF1ZXJ5L3B1bGwvNzY0Ci0gICAgcmV0dXJuIGVsZW0uZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50
WyAiY2xpZW50IiArIG5hbWUgXTsKLSAgICB9Ci0KLSAgICAvLyBHZXQgZG9jdW1lbnQgd2lkdGgg
b3IgaGVpZ2h0Ci0gICAgaWYgKCBlbGVtLm5vZGVUeXBlID09PSA5ICkgewotICAgIGRvYyA9IGVs
ZW0uZG9jdW1lbnRFbGVtZW50OwotCi0gICAgLy8gRWl0aGVyIHNjcm9sbFtXaWR0aC9IZWlnaHRd
IG9yIG9mZnNldFtXaWR0aC9IZWlnaHRdIG9yIGNsaWVudFtXaWR0aC9IZWlnaHRdLCB3aGljaGV2
ZXIgaXMgZ3JlYXRlc3QKLSAgICAvLyB1bmZvcnR1bmF0ZWx5LCB0aGlzIGNhdXNlcyBidWcgIzM4
MzggaW4gSUU2Lzggb25seSwgYnV0IHRoZXJlIGlzIGN1cnJlbnRseSBubyBnb29kLCBzbWFsbCB3
YXkgdG8gZml4IGl0LgotICAgIHJldHVybiBNYXRoLm1heCgKLSAgICBlbGVtLmJvZHlbICJzY3Jv
bGwiICsgbmFtZSBdLCBkb2NbICJzY3JvbGwiICsgbmFtZSBdLAotICAgIGVsZW0uYm9keVsgIm9m
ZnNldCIgKyBuYW1lIF0sIGRvY1sgIm9mZnNldCIgKyBuYW1lIF0sCi0gICAgZG9jWyAiY2xpZW50
IiArIG5hbWUgXQotICAgICk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmlu
ZWQgPwotICAgIC8vIEdldCB3aWR0aCBvciBoZWlnaHQgb24gdGhlIGVsZW1lbnQsIHJlcXVlc3Rp
bmcgYnV0IG5vdCBmb3JjaW5nIHBhcnNlRmxvYXQKLSAgICBqUXVlcnkuY3NzKCBlbGVtLCB0eXBl
LCBleHRyYSApIDoKLQotICAgIC8vIFNldCB3aWR0aCBvciBoZWlnaHQgb24gdGhlIGVsZW1lbnQK
LSAgICBqUXVlcnkuc3R5bGUoIGVsZW0sIHR5cGUsIHZhbHVlLCBleHRyYSApOwotICAgIH0sIHR5
cGUsIGNoYWluYWJsZSA/IG1hcmdpbiA6IHVuZGVmaW5lZCwgY2hhaW5hYmxlLCBudWxsICk7Ci0g
ICAgfTsKLSAgICB9KTsKLX0pOwotLy8gTGltaXQgc2NvcGUgcG9sbHV0aW9uIGZyb20gYW55IGRl
cHJlY2F0ZWQgQVBJCi0vLyAoZnVuY3Rpb24oKSB7Ci0KLS8vIH0pKCk7Ci0vLyBFeHBvc2UgalF1
ZXJ5IHRvIHRoZSBnbG9iYWwgb2JqZWN0Ci13aW5kb3cualF1ZXJ5ID0gd2luZG93LiQgPSBqUXVl
cnk7Ci0KLS8vIEV4cG9zZSBqUXVlcnkgYXMgYW4gQU1EIG1vZHVsZSwgYnV0IG9ubHkgZm9yIEFN
RCBsb2FkZXJzIHRoYXQKLS8vIHVuZGVyc3RhbmQgdGhlIGlzc3VlcyB3aXRoIGxvYWRpbmcgbXVs
dGlwbGUgdmVyc2lvbnMgb2YgalF1ZXJ5Ci0vLyBpbiBhIHBhZ2UgdGhhdCBhbGwgbWlnaHQgY2Fs
bCBkZWZpbmUoKS4gVGhlIGxvYWRlciB3aWxsIGluZGljYXRlCi0vLyB0aGV5IGhhdmUgc3BlY2lh
bCBhbGxvd2FuY2VzIGZvciBtdWx0aXBsZSBqUXVlcnkgdmVyc2lvbnMgYnkKLS8vIHNwZWNpZnlp
bmcgZGVmaW5lLmFtZC5qUXVlcnkgPSB0cnVlLiBSZWdpc3RlciBhcyBhIG5hbWVkIG1vZHVsZSwK
LS8vIHNpbmNlIGpRdWVyeSBjYW4gYmUgY29uY2F0ZW5hdGVkIHdpdGggb3RoZXIgZmlsZXMgdGhh
dCBtYXkgdXNlIGRlZmluZSwKLS8vIGJ1dCBub3QgdXNlIGEgcHJvcGVyIGNvbmNhdGVuYXRpb24g
c2NyaXB0IHRoYXQgdW5kZXJzdGFuZHMgYW5vbnltb3VzCi0vLyBBTUQgbW9kdWxlcy4gQSBuYW1l
ZCBBTUQgaXMgc2FmZXN0IGFuZCBtb3N0IHJvYnVzdCB3YXkgdG8gcmVnaXN0ZXIuCi0vLyBMb3dl
cmNhc2UganF1ZXJ5IGlzIHVzZWQgYmVjYXVzZSBBTUQgbW9kdWxlIG5hbWVzIGFyZSBkZXJpdmVk
IGZyb20KLS8vIGZpbGUgbmFtZXMsIGFuZCBqUXVlcnkgaXMgbm9ybWFsbHkgZGVsaXZlcmVkIGlu
IGEgbG93ZXJjYXNlIGZpbGUgbmFtZS4KLS8vIERvIHRoaXMgYWZ0ZXIgY3JlYXRpbmcgdGhlIGds
b2JhbCBzbyB0aGF0IGlmIGFuIEFNRCBtb2R1bGUgd2FudHMgdG8gY2FsbAotLy8gbm9Db25mbGlj
dCB0byBoaWRlIHRoaXMgdmVyc2lvbiBvZiBqUXVlcnksIGl0IHdpbGwgd29yay4KLWlmICggdHlw
ZW9mIGRlZmluZSA9PT0gImZ1bmN0aW9uIiAmJiBkZWZpbmUuYW1kICYmIGRlZmluZS5hbWQualF1
ZXJ5ICkgewotICAgIGRlZmluZSggImpxdWVyeSIsIFtdLCBmdW5jdGlvbiAoKSB7IHJldHVybiBq
UXVlcnk7IH0gKTsKLX0KLQotfSkoIHdpbmRvdyApOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ib3dlcl9jb21wb25lbnRzL3RvZG9t
dmMtY29tbW9uL2Jhc2UuY3NzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L2Jvd2VyX2NvbXBvbmVudHMv
dG9kb212Yy1jb21tb24vYmFzZS5jc3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcz
N2NkOWNjOGM3ZTA3ZTQ2OTFkNGVlMWJhYTcwMmU0OTkzY2EyMWEuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L2Jvd2VyX2Nv
bXBvbmVudHMvdG9kb212Yy1jb21tb24vYmFzZS5jc3MKKysrIC9kZXYvbnVsbApAQCAtMSw1NTQg
KzAsMCBAQAotaHRtbCwKLWJvZHkgewotICAgIG1hcmdpbjogMDsKLSAgICBwYWRkaW5nOiAwOwot
fQotCi1idXR0b24gewotICAgIG1hcmdpbjogMDsKLSAgICBwYWRkaW5nOiAwOwotICAgIGJvcmRl
cjogMDsKLSAgICBiYWNrZ3JvdW5kOiBub25lOwotICAgIGZvbnQtc2l6ZTogMTAwJTsKLSAgICB2
ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7Ci0gICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7Ci0gICAg
Y29sb3I6IGluaGVyaXQ7Ci0gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwotICAgIC8qLW1v
ei1hcHBlYXJhbmNlOiBub25lOyovCi0gICAgLW1zLWFwcGVhcmFuY2U6IG5vbmU7Ci0gICAgLW8t
YXBwZWFyYW5jZTogbm9uZTsKLSAgICBhcHBlYXJhbmNlOiBub25lOwotfQotCi1ib2R5IHsKLSAg
ICBmb250OiAxNHB4ICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2Vy
aWY7Ci0gICAgbGluZS1oZWlnaHQ6IDEuNGVtOwotICAgIGJhY2tncm91bmQ6ICNlYWVhZWEgdXJs
KCdiZy5wbmcnKTsKLSAgICBjb2xvcjogIzRkNGQ0ZDsKLSAgICB3aWR0aDogNTUwcHg7Ci0gICAg
bWFyZ2luOiAwIGF1dG87Ci0gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7
Ci0gICAgLW1vei1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7Ci0gICAgLW1zLWZvbnQtc21v
b3RoaW5nOiBhbnRpYWxpYXNlZDsKLSAgICAtby1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7
Ci0gICAgZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwotfQotCi0jdG9kb2FwcCB7Ci0gICAg
YmFja2dyb3VuZDogI2ZmZjsKLSAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAu
OSk7Ci0gICAgbWFyZ2luOiAxMzBweCAwIDQwcHggMDsKLSAgICBib3JkZXI6IDFweCBzb2xpZCAj
Y2NjOwotICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKLSAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVz
OiAycHg7Ci0gICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDJweDsKLSAgICBib3gtc2hhZG93
OiAwIDJweCA2cHggMCByZ2JhKDAsIDAsIDAsIDAuMiksCi0gICAgMCAyNXB4IDUwcHggMCByZ2Jh
KDAsIDAsIDAsIDAuMTUpOwotfQotCi0jdG9kb2FwcDpiZWZvcmUgewotICAgIGNvbnRlbnQ6ICcn
OwotICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2Y1ZDZkNjsKLSAgICBib3JkZXItcmlnaHQ6
IDFweCBzb2xpZCAjZjVkNmQ2OwotICAgIHdpZHRoOiAycHg7Ci0gICAgcG9zaXRpb246IGFic29s
dXRlOwotICAgIHRvcDogMDsKLSAgICBsZWZ0OiA0MHB4OwotICAgIGhlaWdodDogMTAwJTsKLX0K
LQotI3RvZG9hcHAgaW5wdXQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIgewotICAgIGZvbnQt
c3R5bGU6IGl0YWxpYzsKLX0KLQotI3RvZG9hcHAgaW5wdXQ6Oi1tb3otcGxhY2Vob2xkZXIgewot
ICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKLSAgICBjb2xvcjogI2E5YTlhOTsKLX0KLQotI3RvZG9h
cHAgaDEgewotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICB0b3A6IC0xMjBweDsKLSAgICB3
aWR0aDogMTAwJTsKLSAgICBmb250LXNpemU6IDcwcHg7Ci0gICAgZm9udC13ZWlnaHQ6IGJvbGQ7
Ci0gICAgdGV4dC1hbGlnbjogY2VudGVyOwotICAgIGNvbG9yOiAjYjNiM2IzOwotICAgIGNvbG9y
OiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7Ci0gICAgdGV4dC1zaGFkb3c6IC0xcHggLTFweCBy
Z2JhKDAsIDAsIDAsIDAuMik7Ci0gICAgLXdlYmtpdC10ZXh0LXJlbmRlcmluZzogb3B0aW1pemVM
ZWdpYmlsaXR5OwotICAgIC1tb3otdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTsK
LSAgICAtbXMtdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTsKLSAgICAtby10ZXh0
LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5OwotICAgIHRleHQtcmVuZGVyaW5nOiBvcHRp
bWl6ZUxlZ2liaWxpdHk7Ci19Ci0KLSNoZWFkZXIgewotICAgIHBhZGRpbmctdG9wOiAxNXB4Owot
ICAgIGJvcmRlci1yYWRpdXM6IGluaGVyaXQ7Ci19Ci0KLSNoZWFkZXI6YmVmb3JlIHsKLSAgICBj
b250ZW50OiAnJzsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgdG9wOiAwOwotICAgIHJp
Z2h0OiAwOwotICAgIGxlZnQ6IDA7Ci0gICAgaGVpZ2h0OiAxNXB4OwotICAgIHotaW5kZXg6IDI7
Ci0gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICM2YzYxNWM7Ci0gICAgYmFja2dyb3VuZDog
IzhkN2Q3NzsKLSAgICBiYWNrZ3JvdW5kOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0
b3AsIGxlZnQgYm90dG9tLCBmcm9tKHJnYmEoMTMyLCAxMTAsIDEwMCwgMC44KSksdG8ocmdiYSgx
MDEsIDg0LCA3NiwgMC44KSkpOwotICAgIGJhY2tncm91bmQ6IC13ZWJraXQtbGluZWFyLWdyYWRp
ZW50KHRvcCwgcmdiYSgxMzIsIDExMCwgMTAwLCAwLjgpLCByZ2JhKDEwMSwgODQsIDc2LCAwLjgp
KTsKLSAgICBiYWNrZ3JvdW5kOiAtbW96LWxpbmVhci1ncmFkaWVudCh0b3AsIHJnYmEoMTMyLCAx
MTAsIDEwMCwgMC44KSwgcmdiYSgxMDEsIDg0LCA3NiwgMC44KSk7Ci0gICAgYmFja2dyb3VuZDog
LW8tbGluZWFyLWdyYWRpZW50KHRvcCwgcmdiYSgxMzIsIDExMCwgMTAwLCAwLjgpLCByZ2JhKDEw
MSwgODQsIDc2LCAwLjgpKTsKLSAgICBiYWNrZ3JvdW5kOiAtbXMtbGluZWFyLWdyYWRpZW50KHRv
cCwgcmdiYSgxMzIsIDExMCwgMTAwLCAwLjgpLCByZ2JhKDEwMSwgODQsIDc2LCAwLjgpKTsKLSAg
ICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG9wLCByZ2JhKDEzMiwgMTEwLCAxMDAsIDAu
OCksIHJnYmEoMTAxLCA4NCwgNzYsIDAuOCkpOwotICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6
IDFweDsKLSAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMXB4OwotfQotCi0jbmV3LXRvZG8s
Ci0uZWRpdCB7Ci0gICAgcG9zaXRpb246IHJlbGF0aXZlOwotICAgIG1hcmdpbjogMDsKLSAgICB3
aWR0aDogMTAwJTsKLSAgICBmb250LXNpemU6IDI0cHg7Ci0gICAgZm9udC1mYW1pbHk6IGluaGVy
aXQ7Ci0gICAgbGluZS1oZWlnaHQ6IDEuNGVtOwotICAgIGJvcmRlcjogMDsKLSAgICBvdXRsaW5l
OiBub25lOwotICAgIGNvbG9yOiBpbmhlcml0OwotICAgIHBhZGRpbmc6IDZweDsKLSAgICBib3Jk
ZXI6IDFweCBzb2xpZCAjOTk5OwotICAgIGJveC1zaGFkb3c6IGluc2V0IDAgLTFweCA1cHggMCBy
Z2JhKDAsIDAsIDAsIDAuMik7Ci0gICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94Owot
ICAgIC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDsKLSAgICAtbXMtYm94LXNpemluZzogYm9y
ZGVyLWJveDsKLSAgICAtby1ib3gtc2l6aW5nOiBib3JkZXItYm94OwotICAgIGJveC1zaXppbmc6
IGJvcmRlci1ib3g7Ci0gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7Ci0g
ICAgLW1vei1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7Ci0gICAgLW1zLWZvbnQtc21vb3Ro
aW5nOiBhbnRpYWxpYXNlZDsKLSAgICAtby1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7Ci0g
ICAgZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwotfQotCi0jbmV3LXRvZG8gewotICAgIHBh
ZGRpbmc6IDE2cHggMTZweCAxNnB4IDYwcHg7Ci0gICAgYm9yZGVyOiBub25lOwotICAgIGJhY2tn
cm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4wMik7Ci0gICAgei1pbmRleDogMjsKLSAgICBib3gtc2hh
ZG93OiBub25lOwotfQotCi0jbWFpbiB7Ci0gICAgcG9zaXRpb246IHJlbGF0aXZlOwotICAgIHot
aW5kZXg6IDI7Ci0gICAgYm9yZGVyLXRvcDogMXB4IGRvdHRlZCAjYWRhZGFkOwotfQotCi1sYWJl
bFtmb3I9J3RvZ2dsZS1hbGwnXSB7Ci0gICAgZGlzcGxheTogbm9uZTsKLX0KLQotI3RvZ2dsZS1h
bGwgewotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICB0b3A6IC00MnB4OwotICAgIGxlZnQ6
IC00cHg7Ci0gICAgd2lkdGg6IDQwcHg7Ci0gICAgdGV4dC1hbGlnbjogY2VudGVyOwotICAgIGJv
cmRlcjogbm9uZTsgLyogTW9iaWxlIFNhZmFyaSAqLwotfQotCi0jdG9nZ2xlLWFsbDpiZWZvcmUg
ewotICAgIGNvbnRlbnQ6ICfCuyc7Ci0gICAgZm9udC1zaXplOiAyOHB4OwotICAgIGNvbG9yOiAj
ZDlkOWQ5OwotICAgIHBhZGRpbmc6IDAgMjVweCA3cHg7Ci19Ci0KLSN0b2dnbGUtYWxsOmNoZWNr
ZWQ6YmVmb3JlIHsKLSAgICBjb2xvcjogIzczNzM3MzsKLX0KLQotI3RvZG8tbGlzdCB7Ci0gICAg
bWFyZ2luOiAwOwotICAgIHBhZGRpbmc6IDA7Ci0gICAgbGlzdC1zdHlsZTogbm9uZTsKLX0KLQot
I3RvZG8tbGlzdCBsaSB7Ci0gICAgcG9zaXRpb246IHJlbGF0aXZlOwotICAgIGZvbnQtc2l6ZTog
MjRweDsKLSAgICBib3JkZXItYm90dG9tOiAxcHggZG90dGVkICNjY2M7Ci19Ci0KLSN0b2RvLWxp
c3QgbGk6bGFzdC1jaGlsZCB7Ci0gICAgYm9yZGVyLWJvdHRvbTogbm9uZTsKLX0KLQotI3RvZG8t
bGlzdCBsaS5lZGl0aW5nIHsKLSAgICBib3JkZXItYm90dG9tOiBub25lOwotICAgIHBhZGRpbmc6
IDA7Ci19Ci0KLSN0b2RvLWxpc3QgbGkuZWRpdGluZyAuZWRpdCB7Ci0gICAgZGlzcGxheTogYmxv
Y2s7Ci0gICAgd2lkdGg6IDUwNnB4OwotICAgIHBhZGRpbmc6IDEzcHggMTdweCAxMnB4IDE3cHg7
Ci0gICAgbWFyZ2luOiAwIDAgMCA0M3B4OwotfQotCi0jdG9kby1saXN0IGxpLmVkaXRpbmcgLnZp
ZXcgewotICAgIGRpc3BsYXk6IG5vbmU7Ci19Ci0KLSN0b2RvLWxpc3QgbGkgLnRvZ2dsZSB7Ci0g
ICAgdGV4dC1hbGlnbjogY2VudGVyOwotICAgIHdpZHRoOiA0MHB4OwotICAgIC8qIGF1dG8sIHNp
bmNlIG5vbi1XZWJLaXQgYnJvd3NlcnMgZG9lc24ndCBzdXBwb3J0IGlucHV0IHN0eWxpbmcgKi8K
LSAgICBoZWlnaHQ6IGF1dG87Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHRvcDogMDsK
LSAgICBib3R0b206IDA7Ci0gICAgbWFyZ2luOiBhdXRvIDA7Ci0gICAgYm9yZGVyOiBub25lOyAv
KiBNb2JpbGUgU2FmYXJpICovCi0gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwotICAgIC8q
LW1vei1hcHBlYXJhbmNlOiBub25lOyovCi0gICAgLW1zLWFwcGVhcmFuY2U6IG5vbmU7Ci0gICAg
LW8tYXBwZWFyYW5jZTogbm9uZTsKLSAgICBhcHBlYXJhbmNlOiBub25lOwotfQotCi0jdG9kby1s
aXN0IGxpIC50b2dnbGU6YWZ0ZXIgewotICAgIGNvbnRlbnQ6ICfinJQnOwotICAgIGxpbmUtaGVp
Z2h0OiA0M3B4OyAvKiA0MCArIGEgY291cGxlIG9mIHBpeGVscyB2aXN1YWwgYWRqdXN0bWVudCAq
LwotICAgIGZvbnQtc2l6ZTogMjBweDsKLSAgICBjb2xvcjogI2Q5ZDlkOTsKLSAgICB0ZXh0LXNo
YWRvdzogMCAtMXB4IDAgI2JmYmZiZjsKLX0KLQotI3RvZG8tbGlzdCBsaSAudG9nZ2xlOmNoZWNr
ZWQ6YWZ0ZXIgewotICAgIGNvbG9yOiAjODVhZGE3OwotICAgIHRleHQtc2hhZG93OiAwIDFweCAw
ICM2Njk5OTE7Ci0gICAgYm90dG9tOiAxcHg7Ci0gICAgcG9zaXRpb246IHJlbGF0aXZlOwotfQot
Ci0jdG9kby1saXN0IGxpIGxhYmVsIHsKLSAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkOwotICAg
IHBhZGRpbmc6IDE1cHg7Ci0gICAgbWFyZ2luLWxlZnQ6IDQ1cHg7Ci0gICAgZGlzcGxheTogYmxv
Y2s7Ci0gICAgbGluZS1oZWlnaHQ6IDEuMjsKLSAgICAtd2Via2l0LXRyYW5zaXRpb246IGNvbG9y
IDAuNHM7Ci0gICAgLW1vei10cmFuc2l0aW9uOiBjb2xvciAwLjRzOwotICAgIC1tcy10cmFuc2l0
aW9uOiBjb2xvciAwLjRzOwotICAgIC1vLXRyYW5zaXRpb246IGNvbG9yIDAuNHM7Ci0gICAgdHJh
bnNpdGlvbjogY29sb3IgMC40czsKLX0KLQotI3RvZG8tbGlzdCBsaS5jb21wbGV0ZWQgbGFiZWwg
ewotICAgIGNvbG9yOiAjYTlhOWE5OwotICAgIHRleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdo
OwotfQotCi0jdG9kby1saXN0IGxpIC5kZXN0cm95IHsKLSAgICBkaXNwbGF5OiBub25lOwotICAg
IHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICB0b3A6IDA7Ci0gICAgcmlnaHQ6IDEwcHg7Ci0gICAg
Ym90dG9tOiAwOwotICAgIHdpZHRoOiA0MHB4OwotICAgIGhlaWdodDogNDBweDsKLSAgICBtYXJn
aW46IGF1dG8gMDsKLSAgICBmb250LXNpemU6IDIycHg7Ci0gICAgY29sb3I6ICNhODhhOGE7Ci0g
ICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4yczsKLSAgICAtbW96LXRyYW5zaXRpb246IGFs
bCAwLjJzOwotICAgIC1tcy10cmFuc2l0aW9uOiBhbGwgMC4yczsKLSAgICAtby10cmFuc2l0aW9u
OiBhbGwgMC4yczsKLSAgICB0cmFuc2l0aW9uOiBhbGwgMC4yczsKLX0KLQotI3RvZG8tbGlzdCBs
aSAuZGVzdHJveTpob3ZlciB7Ci0gICAgdGV4dC1zaGFkb3c6IDAgMCAxcHggIzAwMCwKLSAgICAg
MCAwIDEwcHggcmdiYSgxOTksIDEwNywgMTA3LCAwLjgpOwotICAgIC13ZWJraXQtdHJhbnNmb3Jt
OiBzY2FsZSgxLjMpOwotICAgIC1tb3otdHJhbnNmb3JtOiBzY2FsZSgxLjMpOwotICAgIC1tcy10
cmFuc2Zvcm06IHNjYWxlKDEuMyk7Ci0gICAgLW8tdHJhbnNmb3JtOiBzY2FsZSgxLjMpOwotICAg
IHRyYW5zZm9ybTogc2NhbGUoMS4zKTsKLX0KLQotI3RvZG8tbGlzdCBsaSAuZGVzdHJveTphZnRl
ciB7Ci0gICAgY29udGVudDogJ+Kclic7Ci19Ci0KLSN0b2RvLWxpc3QgbGk6aG92ZXIgLmRlc3Ry
b3kgewotICAgIGRpc3BsYXk6IGJsb2NrOwotfQotCi0jdG9kby1saXN0IGxpIC5lZGl0IHsKLSAg
ICBkaXNwbGF5OiBub25lOwotfQotCi0jdG9kby1saXN0IGxpLmVkaXRpbmc6bGFzdC1jaGlsZCB7
Ci0gICAgbWFyZ2luLWJvdHRvbTogLTFweDsKLX0KLQotI2Zvb3RlciB7Ci0gICAgY29sb3I6ICM3
Nzc7Ci0gICAgcGFkZGluZzogMCAxNXB4OwotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICBy
aWdodDogMDsKLSAgICBib3R0b206IC0zMXB4OwotICAgIGxlZnQ6IDA7Ci0gICAgaGVpZ2h0OiAy
MHB4OwotICAgIHotaW5kZXg6IDE7Ci0gICAgdGV4dC1hbGlnbjogY2VudGVyOwotfQotCi0jZm9v
dGVyOmJlZm9yZSB7Ci0gICAgY29udGVudDogJyc7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwot
ICAgIHJpZ2h0OiAwOwotICAgIGJvdHRvbTogMzFweDsKLSAgICBsZWZ0OiAwOwotICAgIGhlaWdo
dDogNTBweDsKLSAgICB6LWluZGV4OiAtMTsKLSAgICBib3gtc2hhZG93OiAwIDFweCAxcHggcmdi
YSgwLCAwLCAwLCAwLjMpLAotICAgIDAgNnB4IDAgLTNweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAu
OCksCi0gICAgMCA3cHggMXB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjMpLAotICAgIDAgNDNweCAw
IC02cHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpLAotICAgIDAgNDRweCAycHggLTZweCByZ2Jh
KDAsIDAsIDAsIDAuMik7Ci19Ci0KLSN0b2RvLWNvdW50IHsKLSAgICBmbG9hdDogbGVmdDsKLSAg
ICB0ZXh0LWFsaWduOiBsZWZ0OwotfQotCi0jZmlsdGVycyB7Ci0gICAgbWFyZ2luOiAwOwotICAg
IHBhZGRpbmc6IDA7Ci0gICAgbGlzdC1zdHlsZTogbm9uZTsKLSAgICBwb3NpdGlvbjogYWJzb2x1
dGU7Ci0gICAgcmlnaHQ6IDA7Ci0gICAgbGVmdDogMDsKLX0KLQotI2ZpbHRlcnMgbGkgewotICAg
IGRpc3BsYXk6IGlubGluZTsKLX0KLQotI2ZpbHRlcnMgbGkgYSB7Ci0gICAgY29sb3I6ICM4Mzc1
NmY7Ci0gICAgbWFyZ2luOiAycHg7Ci0gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwotfQotCi0j
ZmlsdGVycyBsaSBhLnNlbGVjdGVkIHsKLSAgICBmb250LXdlaWdodDogYm9sZDsKLX0KLQotI2Ns
ZWFyLWNvbXBsZXRlZCB7Ci0gICAgZmxvYXQ6IHJpZ2h0OwotICAgIHBvc2l0aW9uOiByZWxhdGl2
ZTsKLSAgICBsaW5lLWhlaWdodDogMjBweDsKLSAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Ci0g
ICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjEpOwotICAgIGZvbnQtc2l6ZTogMTFweDsK
LSAgICBwYWRkaW5nOiAwIDEwcHg7Ci0gICAgYm9yZGVyLXJhZGl1czogM3B4OwotICAgIGJveC1z
aGFkb3c6IDAgLTFweCAwIDAgcmdiYSgwLCAwLCAwLCAwLjIpOwotfQotCi0jY2xlYXItY29tcGxl
dGVkOmhvdmVyIHsKLSAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMTUpOwotICAgIGJv
eC1zaGFkb3c6IDAgLTFweCAwIDAgcmdiYSgwLCAwLCAwLCAwLjMpOwotfQotCi0jaW5mbyB7Ci0g
ICAgbWFyZ2luOiA2NXB4IGF1dG8gMDsKLSAgICBjb2xvcjogI2E2YTZhNjsKLSAgICBmb250LXNp
emU6IDEycHg7Ci0gICAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAw
LjcpOwotICAgIHRleHQtYWxpZ246IGNlbnRlcjsKLX0KLQotI2luZm8gYSB7Ci0gICAgY29sb3I6
IGluaGVyaXQ7Ci19Ci0KLS8qCi0gICAgSGFjayB0byByZW1vdmUgYmFja2dyb3VuZCBmcm9tIE1v
YmlsZSBTYWZhcmkuCi0gICAgQ2FuJ3QgdXNlIGl0IGdsb2JhbGx5IHNpbmNlIGl0IGRlc3Ryb3lz
IGNoZWNrYm94ZXMgaW4gRmlyZWZveCBhbmQgT3BlcmEKLSovCi1AbWVkaWEgc2NyZWVuIGFuZCAo
LXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOjApIHsKLSAgICAjdG9nZ2xlLWFsbCwKLSAg
ICAjdG9kby1saXN0IGxpIC50b2dnbGUgewotICAgIGJhY2tncm91bmQ6IG5vbmU7Ci0gICAgfQot
Ci0gICAgI3RvZG8tbGlzdCBsaSAudG9nZ2xlIHsKLSAgICBoZWlnaHQ6IDQwcHg7Ci0gICAgfQot
Ci0gICAgI3RvZ2dsZS1hbGwgewotICAgIHRvcDogLTU2cHg7Ci0gICAgbGVmdDogLTE1cHg7Ci0g
ICAgd2lkdGg6IDY1cHg7Ci0gICAgaGVpZ2h0OiA0MXB4OwotICAgIC13ZWJraXQtdHJhbnNmb3Jt
OiByb3RhdGUoOTBkZWcpOwotICAgIHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsKLSAgICAtd2Vi
a2l0LWFwcGVhcmFuY2U6IG5vbmU7Ci0gICAgYXBwZWFyYW5jZTogbm9uZTsKLSAgICB9Ci19Ci0K
LS5oaWRkZW57Ci0gICAgZGlzcGxheTpub25lOwotfQotCi1ociB7Ci0gICAgbWFyZ2luOiAyMHB4
IDA7Ci0gICAgYm9yZGVyOiAwOwotICAgIGJvcmRlci10b3A6IDFweCBkYXNoZWQgI0M1QzVDNTsK
LSAgICBib3JkZXItYm90dG9tOiAxcHggZGFzaGVkICNGN0Y3Rjc7Ci19Ci0KLS5sZWFybiBhIHsK
LSAgICBmb250LXdlaWdodDogbm9ybWFsOwotICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKLSAg
ICBjb2xvcjogI2I4M2Y0NTsKLX0KLQotLmxlYXJuIGE6aG92ZXIgewotICAgIHRleHQtZGVjb3Jh
dGlvbjogdW5kZXJsaW5lOwotICAgIGNvbG9yOiAjNzg3ZTdlOwotfQotCi0ubGVhcm4gaDMsCi0u
bGVhcm4gaDQsCi0ubGVhcm4gaDUgewotICAgIG1hcmdpbjogMTBweCAwOwotICAgIGZvbnQtd2Vp
Z2h0OiA1MDA7Ci0gICAgbGluZS1oZWlnaHQ6IDEuMjsKLSAgICBjb2xvcjogIzAwMDsKLX0KLQot
LmxlYXJuIGgzIHsKLSAgICBmb250LXNpemU6IDI0cHg7Ci19Ci0KLS5sZWFybiBoNCB7Ci0gICAg
Zm9udC1zaXplOiAxOHB4OwotfQotCi0ubGVhcm4gaDUgewotICAgIG1hcmdpbi1ib3R0b206IDA7
Ci0gICAgZm9udC1zaXplOiAxNHB4OwotfQotCi0ubGVhcm4gdWwgewotICAgIHBhZGRpbmc6IDA7
Ci0gICAgbWFyZ2luOiAwIDAgMzBweCAyNXB4OwotfQotCi0ubGVhcm4gbGkgewotICAgIGxpbmUt
aGVpZ2h0OiAyMHB4OwotfQotCi0ubGVhcm4gcCB7Ci0gICAgZm9udC1zaXplOiAxNXB4OwotICAg
IGZvbnQtd2VpZ2h0OiAzMDA7Ci0gICAgbGluZS1oZWlnaHQ6IDEuMzsKLSAgICBtYXJnaW4tdG9w
OiAwOwotICAgIG1hcmdpbi1ib3R0b206IDA7Ci19Ci0KLS5xdW90ZSB7Ci0gICAgYm9yZGVyOiBu
b25lOwotICAgIG1hcmdpbjogMjBweCAwIDYwcHggMDsKLX0KLQotLnF1b3RlIHAgewotICAgIGZv
bnQtc3R5bGU6IGl0YWxpYzsKLX0KLQotLnF1b3RlIHA6YmVmb3JlIHsKLSAgICBjb250ZW50OiAn
4oCcJzsKLSAgICBmb250LXNpemU6IDUwcHg7Ci0gICAgb3BhY2l0eTogLjE1OwotICAgIHBvc2l0
aW9uOiBhYnNvbHV0ZTsKLSAgICB0b3A6IC0yMHB4OwotICAgIGxlZnQ6IDNweDsKLX0KLQotLnF1
b3RlIHA6YWZ0ZXIgewotICAgIGNvbnRlbnQ6ICfigJ0nOwotICAgIGZvbnQtc2l6ZTogNTBweDsK
LSAgICBvcGFjaXR5OiAuMTU7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIGJvdHRvbTog
LTQycHg7Ci0gICAgcmlnaHQ6IDNweDsKLX0KLQotLnF1b3RlIGZvb3RlciB7Ci0gICAgcG9zaXRp
b246IGFic29sdXRlOwotICAgIGJvdHRvbTogLTQwcHg7Ci0gICAgcmlnaHQ6IDA7Ci19Ci0KLS5x
dW90ZSBmb290ZXIgaW1nIHsKLSAgICBib3JkZXItcmFkaXVzOiAzcHg7Ci19Ci0KLS5xdW90ZSBm
b290ZXIgYSB7Ci0gICAgbWFyZ2luLWxlZnQ6IDVweDsKLSAgICB2ZXJ0aWNhbC1hbGlnbjogbWlk
ZGxlOwotfQotCi0uc3BlZWNoLWJ1YmJsZSB7Ci0gICAgcG9zaXRpb246IHJlbGF0aXZlOwotICAg
IHBhZGRpbmc6IDEwcHg7Ci0gICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAuMDQpOwotICAg
IGJvcmRlci1yYWRpdXM6IDVweDsKLX0KLQotLnNwZWVjaC1idWJibGU6YWZ0ZXIgewotICAgIGNv
bnRlbnQ6ICcnOwotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICB0b3A6IDEwMCU7Ci0gICAg
cmlnaHQ6IDMwcHg7Ci0gICAgYm9yZGVyOiAxM3B4IHNvbGlkIHRyYW5zcGFyZW50OwotICAgIGJv
cmRlci10b3AtY29sb3I6IHJnYmEoMCwgMCwgMCwgLjA0KTsKLX0KLQotLyoqYm9keSovLmxlYXJu
LWJhciA+IC5sZWFybiB7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHdpZHRoOiAyNzJw
eDsKLSAgICB0b3A6IDhweDsKLSAgICBsZWZ0OiAtMzAwcHg7Ci0gICAgcGFkZGluZzogMTBweDsK
LSAgICBib3JkZXItcmFkaXVzOiA1cHg7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUs
IDI1NSwgMjU1LCAuNik7Ci0gICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogbGVmdDsKLSAgICB0cmFu
c2l0aW9uLWR1cmF0aW9uOiA1MDBtczsKLX0KLQotQG1lZGlhIChtaW4td2lkdGg6IDg5OXB4KSB7
Ci0gICAgLyoqYm9keSovLmxlYXJuLWJhciB7Ci0gICAgd2lkdGg6IGF1dG87Ci0gICAgbWFyZ2lu
OiAwIDAgMCAzMDBweDsKLSAgICB9Ci0gICAgLyoqYm9keSovLmxlYXJuLWJhciA+IC5sZWFybiB7
Ci0gICAgbGVmdDogOHB4OwotICAgIH0KLSAgICAvKipib2R5Ki8ubGVhcm4tYmFyICN0b2RvYXBw
IHsKLSAgICB3aWR0aDogNTUwcHg7Ci0gICAgbWFyZ2luOiAxMzBweCBhdXRvIDQwcHggYXV0bzsK
LSAgICB9Ci19CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvYm93ZXJfY29tcG9uZW50
cy90b2RvbXZjLWNvbW1vbi9iYXNlLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L2Jvd2VyX2NvbXBv
bmVudHMvdG9kb212Yy1jb21tb24vYmFzZS5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZjliZjQyNDBmYWQ5YTljMTE5NGM4MTU4NmRjMjkxNmJlYzFjY2E3OC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvYm93
ZXJfY29tcG9uZW50cy90b2RvbXZjLWNvbW1vbi9iYXNlLmpzCisrKyAvZGV2L251bGwKQEAgLTEs
MjA5ICswLDAgQEAKLShmdW5jdGlvbiAoKSB7Ci0gICAgJ3VzZSBzdHJpY3QnOwotCi0gICAgLy8g
VW5kZXJzY29yZSdzIFRlbXBsYXRlIE1vZHVsZQotICAgIC8vIENvdXJ0ZXN5IG9mIHVuZGVyc2Nv
cmVqcy5vcmcKLSAgICB2YXIgXyA9IChmdW5jdGlvbiAoXykgewotICAgIF8uZGVmYXVsdHMgPSBm
dW5jdGlvbiAob2JqZWN0KSB7Ci0gICAgaWYgKCFvYmplY3QpIHsKLSAgICByZXR1cm4gb2JqZWN0
OwotICAgIH0KLSAgICBmb3IgKHZhciBhcmdzSW5kZXggPSAxLCBhcmdzTGVuZ3RoID0gYXJndW1l
bnRzLmxlbmd0aDsgYXJnc0luZGV4IDwgYXJnc0xlbmd0aDsgYXJnc0luZGV4KyspIHsKLSAgICB2
YXIgaXRlcmFibGUgPSBhcmd1bWVudHNbYXJnc0luZGV4XTsKLSAgICBpZiAoaXRlcmFibGUpIHsK
LSAgICBmb3IgKHZhciBrZXkgaW4gaXRlcmFibGUpIHsKLSAgICBpZiAob2JqZWN0W2tleV0gPT0g
bnVsbCkgewotICAgIG9iamVjdFtrZXldID0gaXRlcmFibGVba2V5XTsKLSAgICB9Ci0gICAgfQot
ICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIG9iamVjdDsKLSAgICB9Ci0KLSAgICAvLyBCeSBkZWZh
dWx0LCBVbmRlcnNjb3JlIHVzZXMgRVJCLXN0eWxlIHRlbXBsYXRlIGRlbGltaXRlcnMsIGNoYW5n
ZSB0aGUKLSAgICAvLyBmb2xsb3dpbmcgdGVtcGxhdGUgc2V0dGluZ3MgdG8gdXNlIGFsdGVybmF0
aXZlIGRlbGltaXRlcnMuCi0gICAgXy50ZW1wbGF0ZVNldHRpbmdzID0gewotICAgIGV2YWx1YXRl
ICAgIDogLzwlKFtcc1xTXSs/KSU+L2csCi0gICAgaW50ZXJwb2xhdGUgOiAvPCU9KFtcc1xTXSs/
KSU+L2csCi0gICAgZXNjYXBlICAgICAgOiAvPCUtKFtcc1xTXSs/KSU+L2cKLSAgICB9OwotCi0g
ICAgLy8gV2hlbiBjdXN0b21pemluZyBgdGVtcGxhdGVTZXR0aW5nc2AsIGlmIHlvdSBkb24ndCB3
YW50IHRvIGRlZmluZSBhbgotICAgIC8vIGludGVycG9sYXRpb24sIGV2YWx1YXRpb24gb3IgZXNj
YXBpbmcgcmVnZXgsIHdlIG5lZWQgb25lIHRoYXQgaXMKLSAgICAvLyBndWFyYW50ZWVkIG5vdCB0
byBtYXRjaC4KLSAgICB2YXIgbm9NYXRjaCA9IC8oLileLzsKLQotICAgIC8vIENlcnRhaW4gY2hh
cmFjdGVycyBuZWVkIHRvIGJlIGVzY2FwZWQgc28gdGhhdCB0aGV5IGNhbiBiZSBwdXQgaW50byBh
Ci0gICAgLy8gc3RyaW5nIGxpdGVyYWwuCi0gICAgdmFyIGVzY2FwZXMgPSB7Ci0gICAgIiciOiAg
ICAgICInIiwKLSAgICAnXFwnOiAgICAgJ1xcJywKLSAgICAnXHInOiAgICAgJ3InLAotICAgICdc
bic6ICAgICAnbicsCi0gICAgJ1x0JzogICAgICd0JywKLSAgICAnXHUyMDI4JzogJ3UyMDI4JywK
LSAgICAnXHUyMDI5JzogJ3UyMDI5JwotICAgIH07Ci0KLSAgICB2YXIgZXNjYXBlciA9IC9cXHwn
fFxyfFxufFx0fFx1MjAyOHxcdTIwMjkvZzsKLQotICAgIC8vIEphdmFTY3JpcHQgbWljcm8tdGVt
cGxhdGluZywgc2ltaWxhciB0byBKb2huIFJlc2lnJ3MgaW1wbGVtZW50YXRpb24uCi0gICAgLy8g
VW5kZXJzY29yZSB0ZW1wbGF0aW5nIGhhbmRsZXMgYXJiaXRyYXJ5IGRlbGltaXRlcnMsIHByZXNl
cnZlcyB3aGl0ZXNwYWNlLAotICAgIC8vIGFuZCBjb3JyZWN0bHkgZXNjYXBlcyBxdW90ZXMgd2l0
aGluIGludGVycG9sYXRlZCBjb2RlLgotICAgIF8udGVtcGxhdGUgPSBmdW5jdGlvbih0ZXh0LCBk
YXRhLCBzZXR0aW5ncykgewotICAgIHZhciByZW5kZXI7Ci0gICAgc2V0dGluZ3MgPSBfLmRlZmF1
bHRzKHt9LCBzZXR0aW5ncywgXy50ZW1wbGF0ZVNldHRpbmdzKTsKLQotICAgIC8vIENvbWJpbmUg
ZGVsaW1pdGVycyBpbnRvIG9uZSByZWd1bGFyIGV4cHJlc3Npb24gdmlhIGFsdGVybmF0aW9uLgot
ICAgIHZhciBtYXRjaGVyID0gbmV3IFJlZ0V4cChbCi0gICAgKHNldHRpbmdzLmVzY2FwZSB8fCBu
b01hdGNoKS5zb3VyY2UsCi0gICAgKHNldHRpbmdzLmludGVycG9sYXRlIHx8IG5vTWF0Y2gpLnNv
dXJjZSwKLSAgICAoc2V0dGluZ3MuZXZhbHVhdGUgfHwgbm9NYXRjaCkuc291cmNlCi0gICAgXS5q
b2luKCd8JykgKyAnfCQnLCAnZycpOwotCi0gICAgLy8gQ29tcGlsZSB0aGUgdGVtcGxhdGUgc291
cmNlLCBlc2NhcGluZyBzdHJpbmcgbGl0ZXJhbHMgYXBwcm9wcmlhdGVseS4KLSAgICB2YXIgaW5k
ZXggPSAwOwotICAgIHZhciBzb3VyY2UgPSAiX19wKz0nIjsKLSAgICB0ZXh0LnJlcGxhY2UobWF0
Y2hlciwgZnVuY3Rpb24obWF0Y2gsIGVzY2FwZSwgaW50ZXJwb2xhdGUsIGV2YWx1YXRlLCBvZmZz
ZXQpIHsKLSAgICBzb3VyY2UgKz0gdGV4dC5zbGljZShpbmRleCwgb2Zmc2V0KQotICAgIC5yZXBs
YWNlKGVzY2FwZXIsIGZ1bmN0aW9uKG1hdGNoKSB7IHJldHVybiAnXFwnICsgZXNjYXBlc1ttYXRj
aF07IH0pOwotCi0gICAgaWYgKGVzY2FwZSkgewotICAgIHNvdXJjZSArPSAiJytcbigoX190PSgi
ICsgZXNjYXBlICsgIikpPT1udWxsPycnOl8uZXNjYXBlKF9fdCkpK1xuJyI7Ci0gICAgfQotICAg
IGlmIChpbnRlcnBvbGF0ZSkgewotICAgIHNvdXJjZSArPSAiJytcbigoX190PSgiICsgaW50ZXJw
b2xhdGUgKyAiKSk9PW51bGw/Jyc6X190KStcbiciOwotICAgIH0KLSAgICBpZiAoZXZhbHVhdGUp
IHsKLSAgICBzb3VyY2UgKz0gIic7XG4iICsgZXZhbHVhdGUgKyAiXG5fX3ArPSciOwotICAgIH0K
LSAgICBpbmRleCA9IG9mZnNldCArIG1hdGNoLmxlbmd0aDsKLSAgICByZXR1cm4gbWF0Y2g7Ci0g
ICAgfSk7Ci0gICAgc291cmNlICs9ICInO1xuIjsKLQotICAgIC8vIElmIGEgdmFyaWFibGUgaXMg
bm90IHNwZWNpZmllZCwgcGxhY2UgZGF0YSB2YWx1ZXMgaW4gbG9jYWwgc2NvcGUuCi0gICAgaWYg
KCFzZXR0aW5ncy52YXJpYWJsZSkgc291cmNlID0gJ3dpdGgob2JqfHx7fSl7XG4nICsgc291cmNl
ICsgJ31cbic7Ci0KLSAgICBzb3VyY2UgPSAidmFyIF9fdCxfX3A9JycsX19qPUFycmF5LnByb3Rv
dHlwZS5qb2luLCIgKwotICAgICJwcmludD1mdW5jdGlvbigpe19fcCs9X19qLmNhbGwoYXJndW1l
bnRzLCcnKTt9O1xuIiArCi0gICAgc291cmNlICsgInJldHVybiBfX3A7XG4iOwotCi0gICAgdHJ5
IHsKLSAgICByZW5kZXIgPSBuZXcgRnVuY3Rpb24oc2V0dGluZ3MudmFyaWFibGUgfHwgJ29iaics
ICdfJywgc291cmNlKTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAgZS5zb3VyY2UgPSBzb3VyY2U7
Ci0gICAgdGhyb3cgZTsKLSAgICB9Ci0KLSAgICBpZiAoZGF0YSkgcmV0dXJuIHJlbmRlcihkYXRh
LCBfKTsKLSAgICB2YXIgdGVtcGxhdGUgPSBmdW5jdGlvbihkYXRhKSB7Ci0gICAgcmV0dXJuIHJl
bmRlci5jYWxsKHRoaXMsIGRhdGEsIF8pOwotICAgIH07Ci0KLSAgICAvLyBQcm92aWRlIHRoZSBj
b21waWxlZCBmdW5jdGlvbiBzb3VyY2UgYXMgYSBjb252ZW5pZW5jZSBmb3IgcHJlY29tcGlsYXRp
b24uCi0gICAgdGVtcGxhdGUuc291cmNlID0gJ2Z1bmN0aW9uKCcgKyAoc2V0dGluZ3MudmFyaWFi
bGUgfHwgJ29iaicpICsgJyl7XG4nICsgc291cmNlICsgJ30nOwotCi0gICAgcmV0dXJuIHRlbXBs
YXRlOwotICAgIH07Ci0KLSAgICByZXR1cm4gXzsKLSAgICB9KSh7fSk7Ci0KLSAgICBpZiAobG9j
YXRpb24uaG9zdG5hbWUgPT09ICd0b2RvbXZjLmNvbScpIHsKLSAgICB3aW5kb3cuX2dhcSA9IFtb
J19zZXRBY2NvdW50JywnVUEtMzEwODEwNjItMSddLFsnX3RyYWNrUGFnZXZpZXcnXV07KGZ1bmN0
aW9uKGQsdCl7dmFyIGc9ZC5jcmVhdGVFbGVtZW50KHQpLHM9ZC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSh0KVswXTtnLnNyYz0nLy93d3cuZ29vZ2xlLWFuYWx5dGljcy5jb20vZ2EuanMnO3MucGFyZW50
Tm9kZS5pbnNlcnRCZWZvcmUoZyxzKX0oZG9jdW1lbnQsJ3NjcmlwdCcpKTsKLSAgICB9Ci0KLSAg
ICBmdW5jdGlvbiByZWRpcmVjdCgpIHsKLSAgICBpZiAobG9jYXRpb24uaG9zdG5hbWUgPT09ICd0
YXN0ZWpzLmdpdGh1Yi5pbycpIHsKLSAgICBsb2NhdGlvbi5ocmVmID0gbG9jYXRpb24uaHJlZi5y
ZXBsYWNlKCd0YXN0ZWpzLmdpdGh1Yi5pby90b2RvbXZjJywgJ3RvZG9tdmMuY29tJyk7Ci0gICAg
fQotICAgIH0KLQotICAgIGZ1bmN0aW9uIGZpbmRSb290KCkgewotICAgIHZhciBiYXNlOwotCi0g
ICAgWy9sYWJzLywgL1x3Ki1leGFtcGxlcy9dLmZvckVhY2goZnVuY3Rpb24gKGhyZWYpIHsKLSAg
ICB2YXIgbWF0Y2ggPSBsb2NhdGlvbi5ocmVmLm1hdGNoKGhyZWYpOwotCi0gICAgaWYgKCFiYXNl
ICYmIG1hdGNoKSB7Ci0gICAgYmFzZSA9IGxvY2F0aW9uLmhyZWYuaW5kZXhPZihtYXRjaCk7Ci0g
ICAgfQotICAgIH0pOwotCi0gICAgcmV0dXJuIGxvY2F0aW9uLmhyZWYuc3Vic3RyKDAsIGJhc2Up
OwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGdldEZpbGUoZmlsZSwgY2FsbGJhY2spIHsKLSAgICBp
ZiAoIWxvY2F0aW9uLmhvc3QpIHsKLSAgICByZXR1cm4gY29uc29sZS5pbmZvKCdNaXNzIHRoZSBp
bmZvIGJhcj8gUnVuIFRvZG9NVkMgZnJvbSBhIHNlcnZlciB0byBhdm9pZCBhIGNyb3NzLW9yaWdp
biBlcnJvci4nKTsKLSAgICB9Ci0KLSAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7
Ci0KLSAgICB4aHIub3BlbignR0VUJywgZmluZFJvb3QoKSArIGZpbGUsIHRydWUpOwotICAgIHho
ci5zZW5kKCk7Ci0KLSAgICB4aHIub25sb2FkID0gZnVuY3Rpb24gKCkgewotICAgIGlmICh4aHIu
c3RhdHVzID09PSAyMDAgJiYgY2FsbGJhY2spIHsKLSAgICBjYWxsYmFjayh4aHIucmVzcG9uc2VU
ZXh0KTsKLSAgICB9Ci0gICAgfTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBMZWFybihsZWFybkpT
T04sIGNvbmZpZykgewotICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBMZWFybikpIHsKLSAgICBy
ZXR1cm4gbmV3IExlYXJuKGxlYXJuSlNPTiwgY29uZmlnKTsKLSAgICB9Ci0KLSAgICB2YXIgdGVt
cGxhdGUsIGZyYW1ld29yazsKLQotICAgIGlmICh0eXBlb2YgbGVhcm5KU09OICE9PSAnb2JqZWN0
JykgewotICAgIHRyeSB7Ci0gICAgbGVhcm5KU09OID0gSlNPTi5wYXJzZShsZWFybkpTT04pOwot
ICAgIH0gY2F0Y2ggKGUpIHsKLSAgICByZXR1cm47Ci0gICAgfQotICAgIH0KLQotICAgIGlmIChj
b25maWcpIHsKLSAgICB0ZW1wbGF0ZSA9IGNvbmZpZy50ZW1wbGF0ZTsKLSAgICBmcmFtZXdvcmsg
PSBjb25maWcuZnJhbWV3b3JrOwotICAgIH0KLQotICAgIGlmICghdGVtcGxhdGUgJiYgbGVhcm5K
U09OLnRlbXBsYXRlcykgewotICAgIHRlbXBsYXRlID0gbGVhcm5KU09OLnRlbXBsYXRlcy50b2Rv
bXZjOwotICAgIH0KLQotICAgIGlmICghZnJhbWV3b3JrICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0
b3IoJ1tkYXRhLWZyYW1ld29ya10nKSkgewotICAgIGZyYW1ld29yayA9IGRvY3VtZW50LnF1ZXJ5
U2VsZWN0b3IoJ1tkYXRhLWZyYW1ld29ya10nKS5nZXRBdHRyaWJ1dGUoJ2RhdGEtZnJhbWV3b3Jr
Jyk7Ci0gICAgfQotCi0KLSAgICBpZiAodGVtcGxhdGUgJiYgbGVhcm5KU09OW2ZyYW1ld29ya10p
IHsKLSAgICB0aGlzLmZyYW1ld29ya0pTT04gPSBsZWFybkpTT05bZnJhbWV3b3JrXTsKLSAgICB0
aGlzLnRlbXBsYXRlID0gdGVtcGxhdGU7Ci0KLSAgICB0aGlzLmFwcGVuZCgpOwotICAgIH0KLSAg
ICB9Ci0KLSAgICBMZWFybi5wcm90b3R5cGUuYXBwZW5kID0gZnVuY3Rpb24gKCkgewotICAgIHZh
ciBhc2lkZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2FzaWRlJyk7Ci0gICAgYXNpZGUuaW5u
ZXJIVE1MID0gXy50ZW1wbGF0ZSh0aGlzLnRlbXBsYXRlLCB0aGlzLmZyYW1ld29ya0pTT04pOwot
ICAgIGFzaWRlLmNsYXNzTmFtZSA9ICdsZWFybic7Ci0KLSAgICAvLyBMb2NhbGl6ZSBkZW1vIGxp
bmtzCi0gICAgdmFyIGRlbW9MaW5rcyA9IGFzaWRlLnF1ZXJ5U2VsZWN0b3JBbGwoJy5kZW1vLWxp
bmsnKTsKLSAgICBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGRlbW9MaW5rcywgZnVuY3Rp
b24gKGRlbW9MaW5rKSB7Ci0gICAgZGVtb0xpbmsuc2V0QXR0cmlidXRlKCdocmVmJywgZmluZFJv
b3QoKSArIGRlbW9MaW5rLmdldEF0dHJpYnV0ZSgnaHJlZicpKTsKLSAgICB9KTsKLQotICAgIGRv
Y3VtZW50LmJvZHkuY2xhc3NOYW1lID0gKGRvY3VtZW50LmJvZHkuY2xhc3NOYW1lICsgJyBsZWFy
bi1iYXInKS50cmltKCk7Ci0gICAgZG9jdW1lbnQuYm9keS5pbnNlcnRBZGphY2VudEhUTUwoJ2Fm
dGVyQmVnaW4nLCBhc2lkZS5vdXRlckhUTUwpOwotICAgIH07Ci0KLSAgICByZWRpcmVjdCgpOwot
ICAgIGdldEZpbGUoJ2xlYXJuLmpzb24nLCBMZWFybik7Ci19KSgpOwpkaWZmIC0tZ2l0IGEvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvanF1ZXJ5L2Jvd2VyX2NvbXBvbmVudHMvdG9kb212Yy1jb21tb24vYmcucG5nIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvanF1ZXJ5L2Jvd2VyX2NvbXBvbmVudHMvdG9kb212Yy1jb21tb24vYmcucG5n
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMmE3NjAwODI1ZWUxMWYyMTg0OWVkNDc1
NDk5YzdkMWVjYmNjODcwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpsaXRlcmFsIDIxMjYKemNt
Vi1VMihrQnhQKTxoOzNLfExrMDAwZTFOSkxUcTAwM2tGMDAza0gwe3tSMzRVQiFxMDAwMENQKXQt
cz8oWGpFCno+Kzl5YD1ISzdudD1+M3QwMDBPNU5rbDxaY3dUanUoUTR2fjdLV0VXI1ltP2xLX3Y7
VG18IUZjKUBOd0VubXRzaAp6eCFPfno4MUpUM3BGc20+bT0wNGhWYV9sWGxfYm09K007PWVJPCUk
ck8ydGFgc3VoKlNyI1BPdyo/YWRxIU8hQ1YKeiowJmIpcmtDQ0VWKTFuSXVpTEJudFVILU1KSTsm
cVlnenxkQE5obm5fYWJpMmdgcHU0TkFNVmlkM2hTJT9xdXp+CnpqbEpmKHg4Y2o8UEdjam4qSith
eyZINXAqbjUkNWUzPzxLQ2M/bzA2bUFzTlNiZ1BXTz9QeiNDem48IT17PntWUwp6VVZFUDFtc2c5
YF5PRlVoU081cnRYSGhSbHlVMmk+NiRCVD1nbEdge0psY3RHSHJ3UkltKTZCdXU2NWpMUW5eSDgK
enZsOWxacVVCQSslcXZNNVhDK3lZQG1mQShZQn5YUD1lfDY8eyUkXmVVOG5ySz92MmNjYkBKb201
Q0c+cktBTDdKCnpwbEhFSWF2VnB8MHAxJm0hR2BUaT88N2laO31ARzcjWil9S20lMiFGSG5RMCom
P1BMUilHIUhBYUhnVSNjfCRkegp6cGojMEhtZWFkSWU+YCMpPUpqa2J7Qj1GS25VM3BjLSZZQGpf
ajYoaDRZfitVcTxQVTM2Qzs1Yj1NXkZgPXAxZEkKems8Q1FPUE5hNz4hXko9TEh1bngxeGk0UVhL
LVl7Jk1vVDhreTZWYjljfFdobk93Rn5jPTN6T3k4YWdrdGxpUzYjCnpgIzhGYDlIKUQ9Ym1rOUI1
TW5XJl9yIylmJGMrOyRMU3ItQF5BbjhkaGN+SXF1dXY+ak9LN3B3N0xKOyZYMGkxQwp6R01zSGRQ
MU9zQG55JCRqIT5YQWlpJTdicDVrPmBweU5BIX5lcGIpKClwOXpSNFlsNno9VX17Q0lkaDF6KEZw
QW8KelFJVyE7MHpwQ3lDNCo3WUxrWkNPQGN1bDBSXyZ6Z2hzQThFayl6JTwhcC1idnNzcGxZWTJ9
UDshdjRDWWo5a21GCnpiMGJOX200VipmXllaTW9iMihqM3BLan43diNadGtzPUlvK3tzdSVXaXVr
ZEpIJGI/ZlpraUE9UFlfM09oREJrbwp6KExUUUhZJkZeXjJoRy1ZYCpaOTN2Yn5jPyooSmNoRGpU
ZkNzP3pSbSpgKk4qVi0kPT9RcXRoblNyKj9PUzNzaksKem88X1VeZnt+YWc2MHVsPmpOcEthOTJ7
QE5IK1NzdFglQH14QipKayFsfVBaMWNDbEluc359NV4hUm5jVWsqcm1BCnolU0lWZ3Q1OEVReExK
K09pRnE8eXU0ZU9EfDlMdDNkTnNlZnhPdXEpRCYkXyVqMERncUN5MWd6Y3x0VEQzKm1lZQp6ez0l
fDxgYH1fSHlwaE91ezspeGtSZytRbkhDQzNUZitrc3BxVjYqfFFLLVJjcUR9ND5La0J1d3F1eVpM
VXB8Z3IKelBVYlViRmJCclBkMXhPYF5DKnItaTNwOSpGIyhPQmghNFd5QGFDJiohfE98R1hjakRB
JlloRns7Y0Q3Km8oR1NeCnpAcFFTRTcpeF84MT1ReWplNipMUSNUWHUtNyhvO1M4dTN0cERBPFNn
Y0tjS09wbUE7PUhCWlNAT0ZUQF9YT3Z4cQp6Kk58M0tMeXRnekg2R1UmJlVvYzRaems0bHVtM1B7
OT9mcEk0K1FHUEordjZgMWxmUnEzTGNTKihNKldLK3xiJU8KemUkej4wX2RkaiVobUNzcGVYZGhZ
Un0taTlBPUNgRW9DaFVZdUh+XnghOSt8JihQZ2IqPkNrPD05anwpKkB4eWZUCnpwUCMrS3Q8fTM5
YnwzV2w0ZnhUKCtHP2FIPmdHXmRATUVhVU9KUmZ5NTVUdEZJN15ZKVZ1TVU9N1BwMHk1NWpTfgp6
K1RKKWlnTXlycWtYO3dVOGo2OGlJRHRxSlloU19EM19PZW0tQGc2bWVfUmZpUX11VF9LLUEtOXFH
JX1nazNFOWMKeiE4YEtnc01OWG0pYmVsb1BmTXFsKnwmJE0+MXFgaSFjWSlSRlluak5ZdSpnU3ZA
OFhlYlY3JX14WUw+NilHSlBKCnpKcEE3SzMxbGNKdUlGS1N3LXt4NEZYMEsyQXopflhnPGBzT3Uk
NHxePE1DN0AreGJ3eHNHZ1R2SklBTGpQezY4TAp6OEFZdVNHUzBHVWdrNldgdjRXO1J5KnVvRVRu
dWxQaXw1NzMlbHYqWnh3I3Y2eVVRXk1PZmNwVCNWOFJJRFYjI04KekQxYCtBZW1zT2gpd2JXREV4
VmNmcEt6KWp5Vj08fiZaWFBnNmN8WkRFN1U0Yms8RF4+LSheWEpYNFl6b2lOUnZMCnp5dVk3fjI2
dy1QXlp3JTZGfXNoQndWMiQwMmM4UnNTVXk2ZE05MmRpQ0F4aVgzSVVxc3E1aWc2PlVfIVZ5KnE1
JAp6am19MTZ0SnIrUVomVD9Ia2twZUl3VlgtcjFFST1AJVpsdDs2PHR3SDg2SUQ+ZyptaiZFIUEp
KSVnWEo9eDZ1I2wKemNLRVA+Yng0cnFWKmtgQkJyWiRNcWp0e1RzSGN4VUg+OylpQUt9QihLaWxh
JlZEJWI/Nm0mXjBXSzReJkVaTkFJCno4QU1Zc18lJEQlfE0rQCtjUXFMLWhpNHlHPmgqandkaWkh
VzF7fXA+Wmh3Rll0XzRTdTFralk5PGJBWmp6fjllawp6X0RpYXIrQWZKRlBfOUB5bVVvJEtXPjwt
NWAhJFZOT0kxeShFRFNINFdwQ2lqRV8+YWwhTnQ9XmVWRVIjdUoxPWIKejtCV0YySWd5RjVMZXhW
K3llYyRLaW47QWlAbXlvO0c+ekomanJkVyNlY1hoSVpwaDVPWXF3X1BFZmNGNTY8TzE5CnpMKThy
IUtNKClpZjBgQD9XNChKZGMpN1dvUEdeJj0kPHpVc00rSENXYWtDXjN0WnhrK1BqUUd9Qj5aNTxa
NlZ4dwp6QkBIclYkJmx+QFRhajcwcGNle2lTdVJMc1VjekRZXzVUbkRxOFB5X1Ezd2hgRDghNGpL
O3ZGZFJQK1EwPXpKeSoKenp1V2QlIWFpQER7fCpKPEk7T0QmaSVse0pwLTgqUHUzVkdMV2l5azZ2
I1htUXF3YC0rJWUkfENKdypAYDV6YjM8CnpFfXojO2tSaEwmcTVQREc2QG1tKiQ+WnVfWlpFI3Ez
TWMrTiYxT143aG9oOVFSN2ArTCRjQlA1cHFHPWZxQTB1aAp6VUJ1a2F4VEZtSCk8fFhidnAyYz1I
U2JOa3BYdzczYTVsdjdWJGpiOTIjeVoxNDFAJFg/Rn1KdDhnSVU3V202bTkKej9lXzs7enNubTZg
TFplUD5UPSQpS3I+Wj9rcipVbUZxUjd6eDBDNl5ibWNzY0AxQUd0d19yTkg+LVhtJGQqfFE8Cnpu
JjFMbjB1Nz1sJklMcz4lQ2tKcGBEaUc5RjE4eDROZStsZzwjaT9lN2pMJXg7NFpuUmtOXk14MDcq
cW9NNk48JApFZig+ME4hMmtkTgoKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9pbmRl
eC5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L2luZGV4Lmh0bWwKaW5kZXggYzQ4OTNjZjAwMWFi
YTcyNmIyZDE5NzYyM2YyZTY3MWVjMDdlZjRmNy4uNDE0YWM1OGY2MWFiYzJiNzIyZGI1M2ZlZWNl
N2UwM2U1MmZkMzM0NCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L2luZGV4Lmh0bWwK
KysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L2luZGV4Lmh0bWwKQEAgLTEsNTIgKzEsNjEgQEAKIDwh
ZG9jdHlwZSBodG1sPgogPGh0bWwgbGFuZz0iZW4iIGRhdGEtZnJhbWV3b3JrPSJqcXVlcnkiPgog
ICAgIDxoZWFkPgotICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLSAgICA8bWV0YSBodHRwLWVx
dWl2PSJYLVVBLUNvbXBhdGlibGUiIGNvbnRlbnQ9IklFPWVkZ2UiPgotICAgIDx0aXRsZT5qUXVl
cnkg4oCiIFRvZG9NVkM8L3RpdGxlPgotICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Ym93ZXJfY29tcG9uZW50cy90b2RvbXZjLWNvbW1vbi9iYXNlLmNzcyI+Ci0gICAgPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSJjc3MvYXBwLmNzcyI+CisgICAgICAgIDxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKyAgICAgICAgPHRpdGxlPmpRdWVyeSDigKIgVG9kb01WQzwvdGl0bGU+CisgICAg
ICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ibm9kZV9tb2R1bGVzL3RvZG9tdmMtY29t
bW9uL2Jhc2UuY3NzIj4KKyAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJub2Rl
X21vZHVsZXMvdG9kb212Yy1hcHAtY3NzL2luZGV4LmNzcyI+CisgICAgICAgIDxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iY3NzL2FwcC5jc3MiPgogICAgIDwvaGVhZD4KICAgICA8Ym9keT4K
LSAgICA8c2VjdGlvbiBpZD0idG9kb2FwcCI+Ci0gICAgPGhlYWRlciBpZD0iaGVhZGVyIj4KLSAg
ICA8aDE+dG9kb3M8L2gxPgotICAgIDxpbnB1dCBpZD0ibmV3LXRvZG8iIHBsYWNlaG9sZGVyPSJX
aGF0IG5lZWRzIHRvIGJlIGRvbmU/IiBhdXRvZm9jdXM+Ci0gICAgPC9oZWFkZXI+Ci0gICAgPHNl
Y3Rpb24gaWQ9Im1haW4iPgotICAgIDxpbnB1dCBpZD0idG9nZ2xlLWFsbCIgdHlwZT0iY2hlY2ti
b3giPgotICAgIDxsYWJlbCBmb3I9InRvZ2dsZS1hbGwiPk1hcmsgYWxsIGFzIGNvbXBsZXRlPC9s
YWJlbD4KLSAgICA8dWwgaWQ9InRvZG8tbGlzdCI+PC91bD4KLSAgICA8L3NlY3Rpb24+Ci0gICAg
PGZvb3RlciBpZD0iZm9vdGVyIj4KLSAgICA8c3BhbiBpZD0idG9kby1jb3VudCI+PHN0cm9uZz4w
PC9zdHJvbmc+IGl0ZW0gbGVmdDwvc3Bhbj4KLSAgICA8YnV0dG9uIGlkPSJjbGVhci1jb21wbGV0
ZWQiPkNsZWFyIGNvbXBsZXRlZDwvYnV0dG9uPgotICAgIDwvZm9vdGVyPgotICAgIDwvc2VjdGlv
bj4KLSAgICA8Zm9vdGVyIGlkPSJpbmZvIj4KLSAgICA8cD5Eb3VibGUtY2xpY2sgdG8gZWRpdCBh
IHRvZG88L3A+Ci0gICAgPHA+Q3JlYXRlZCBieSA8YSBocmVmPSJodHRwOi8vZ2l0aHViLmNvbS9z
aW5kcmVzb3JodXMiPlNpbmRyZSBTb3JodXM8L2E+PC9wPgotICAgIDxwPlBhcnQgb2YgPGEgaHJl
Zj0iaHR0cDovL3RvZG9tdmMuY29tIj5Ub2RvTVZDPC9hPjwvcD4KLSAgICA8L2Zvb3Rlcj4KLSAg
ICA8c2NyaXB0IGlkPSJ0b2RvLXRlbXBsYXRlIiB0eXBlPSJ0ZXh0L3gtaGFuZGxlYmFycy10ZW1w
bGF0ZSI+Ci0gICAge3sjdGhpc319Ci0gICAgPGxpIHt7I2lmIGNvbXBsZXRlZH19Y2xhc3M9ImNv
bXBsZXRlZCJ7ey9pZn19IGRhdGEtaWQ9Int7aWR9fSI+Ci0gICAgPGRpdiBjbGFzcz0idmlldyI+
Ci0gICAgPGlucHV0IGNsYXNzPSJ0b2dnbGUiIHR5cGU9ImNoZWNrYm94IiB7eyNpZiBjb21wbGV0
ZWR9fWNoZWNrZWR7ey9pZn19PgotICAgIDxsYWJlbD57e3RpdGxlfX08L2xhYmVsPgotICAgIDxi
dXR0b24gY2xhc3M9ImRlc3Ryb3kiPjwvYnV0dG9uPgotICAgIDwvZGl2PgotICAgIDxpbnB1dCBj
bGFzcz0iZWRpdCIgdmFsdWU9Int7dGl0bGV9fSI+Ci0gICAgPC9saT4KLSAgICB7ey90aGlzfX0K
LSAgICA8L3NjcmlwdD4KLSAgICA8c2NyaXB0IGlkPSJmb290ZXItdGVtcGxhdGUiIHR5cGU9InRl
eHQveC1oYW5kbGViYXJzLXRlbXBsYXRlIj4KLSAgICA8c3BhbiBpZD0idG9kby1jb3VudCI+PHN0
cm9uZz57e2FjdGl2ZVRvZG9Db3VudH19PC9zdHJvbmc+IHt7YWN0aXZlVG9kb1dvcmR9fSBsZWZ0
PC9zcGFuPgotICAgIHt7I2lmIGNvbXBsZXRlZFRvZG9zfX08YnV0dG9uIGlkPSJjbGVhci1jb21w
bGV0ZWQiPkNsZWFyIGNvbXBsZXRlZCAoe3tjb21wbGV0ZWRUb2Rvc319KTwvYnV0dG9uPnt7L2lm
fX0KLSAgICA8L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iYm93ZXJfY29tcG9uZW50cy90b2Rv
bXZjLWNvbW1vbi9iYXNlLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iYm93ZXJfY29t
cG9uZW50cy9qcXVlcnkvanF1ZXJ5LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iYm93
ZXJfY29tcG9uZW50cy9oYW5kbGViYXJzL2hhbmRsZWJhcnMuanMiPjwvc2NyaXB0PgotICAgIDxz
Y3JpcHQgc3JjPSJqcy9hcHAuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2VjdGlvbiBpZD0idG9k
b2FwcCI+CisgICAgICAgICAgICA8aGVhZGVyIGlkPSJoZWFkZXIiPgorICAgICAgICAgICAgICAg
IDxoMT50b2RvczwvaDE+CisgICAgICAgICAgICAgICAgPGlucHV0IGlkPSJuZXctdG9kbyIgcGxh
Y2Vob2xkZXI9IldoYXQgbmVlZHMgdG8gYmUgZG9uZT8iIGF1dG9mb2N1cz4KKyAgICAgICAgICAg
IDwvaGVhZGVyPgorICAgICAgICAgICAgPHNlY3Rpb24gaWQ9Im1haW4iPgorICAgICAgICAgICAg
ICAgIDxpbnB1dCBpZD0idG9nZ2xlLWFsbCIgdHlwZT0iY2hlY2tib3giPgorICAgICAgICAgICAg
ICAgIDxsYWJlbCBmb3I9InRvZ2dsZS1hbGwiPk1hcmsgYWxsIGFzIGNvbXBsZXRlPC9sYWJlbD4K
KyAgICAgICAgICAgICAgICA8dWwgaWQ9InRvZG8tbGlzdCI+PC91bD4KKyAgICAgICAgICAgIDwv
c2VjdGlvbj4KKyAgICAgICAgICAgIDxmb290ZXIgaWQ9ImZvb3RlciI+PC9mb290ZXI+CisgICAg
ICAgIDwvc2VjdGlvbj4KKyAgICAgICAgPGZvb3RlciBpZD0iaW5mbyI+CisgICAgICAgICAgICA8
cD5Eb3VibGUtY2xpY2sgdG8gZWRpdCBhIHRvZG88L3A+CisgICAgICAgICAgICA8cD5DcmVhdGVk
IGJ5IDxhIGhyZWY9Imh0dHA6Ly9zaW5kcmVzb3JodXMuY29tIj5TaW5kcmUgU29yaHVzPC9hPjwv
cD4KKyAgICAgICAgICAgIDxwPlBhcnQgb2YgPGEgaHJlZj0iaHR0cDovL3RvZG9tdmMuY29tIj5U
b2RvTVZDPC9hPjwvcD4KKyAgICAgICAgPC9mb290ZXI+CisgICAgICAgIDxzY3JpcHQgaWQ9InRv
ZG8tdGVtcGxhdGUiIHR5cGU9InRleHQveC1oYW5kbGViYXJzLXRlbXBsYXRlIj4KKyAgICAgICAg
ICAgIHt7I3RoaXN9fQorICAgICAgICAgICAgPGxpIHt7I2lmIGNvbXBsZXRlZH19Y2xhc3M9ImNv
bXBsZXRlZCJ7ey9pZn19IGRhdGEtaWQ9Int7aWR9fSI+CisgICAgICAgICAgICAgICAgPGRpdiBj
bGFzcz0idmlldyI+CisgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0idG9nZ2xlIiB0
eXBlPSJjaGVja2JveCIge3sjaWYgY29tcGxldGVkfX1jaGVja2Vke3svaWZ9fT4KKyAgICAgICAg
ICAgICAgICAgICAgPGxhYmVsPnt7dGl0bGV9fTwvbGFiZWw+CisgICAgICAgICAgICAgICAgICAg
IDxidXR0b24gY2xhc3M9ImRlc3Ryb3kiPjwvYnV0dG9uPgorICAgICAgICAgICAgICAgIDwvZGl2
PgorICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0iZWRpdCIgdmFsdWU9Int7dGl0bGV9fSI+
CisgICAgICAgICAgICA8L2xpPgorICAgICAgICB7ey90aGlzfX0KKyAgICAgICAgPC9zY3JpcHQ+
CisgICAgICAgIDxzY3JpcHQgaWQ9ImZvb3Rlci10ZW1wbGF0ZSIgdHlwZT0idGV4dC94LWhhbmRs
ZWJhcnMtdGVtcGxhdGUiPgorICAgICAgICAgICAgPHNwYW4gaWQ9InRvZG8tY291bnQiPjxzdHJv
bmc+e3thY3RpdmVUb2RvQ291bnR9fTwvc3Ryb25nPiB7e2FjdGl2ZVRvZG9Xb3JkfX0gbGVmdDwv
c3Bhbj4KKyAgICAgICAgICAgIDx1bCBpZD0iZmlsdGVycyI+CisgICAgICAgICAgICAgICAgPGxp
PgorICAgICAgICAgICAgICAgICAgICA8YSB7eyNlcSBmaWx0ZXIgJ2FsbCd9fWNsYXNzPSJzZWxl
Y3RlZCJ7ey9lcX19IGhyZWY9IiMvYWxsIj5BbGw8L2E+CisgICAgICAgICAgICAgICAgPC9saT4K
KyAgICAgICAgICAgICAgICA8bGk+CisgICAgICAgICAgICAgICAgICAgIDxhIHt7I2VxIGZpbHRl
ciAnYWN0aXZlJ319Y2xhc3M9InNlbGVjdGVkInt7L2VxfX1ocmVmPSIjL2FjdGl2ZSI+QWN0aXZl
PC9hPgorICAgICAgICAgICAgICAgIDwvbGk+CisgICAgICAgICAgICAgICAgPGxpPgorICAgICAg
ICAgICAgICAgICAgICA8YSB7eyNlcSBmaWx0ZXIgJ2NvbXBsZXRlZCd9fWNsYXNzPSJzZWxlY3Rl
ZCJ7ey9lcX19aHJlZj0iIy9jb21wbGV0ZWQiPkNvbXBsZXRlZDwvYT4KKyAgICAgICAgICAgICAg
ICA8L2xpPgorICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgIHt7I2lmIGNvbXBsZXRlZFRv
ZG9zfX08YnV0dG9uIGlkPSJjbGVhci1jb21wbGV0ZWQiPkNsZWFyIGNvbXBsZXRlZDwvYnV0dG9u
Pnt7L2lmfX0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgICAgIDwhLS0gPHNjcmlwdCBzcmM9Im5v
ZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1vbi9iYXNlLmpzIj48L3NjcmlwdD4gLS0+CisgICAgICAg
IDxzY3JpcHQgc3JjPSJub2RlX21vZHVsZXMvanF1ZXJ5L2Rpc3QvanF1ZXJ5LmpzIj48L3Njcmlw
dD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Im5vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvaGFu
ZGxlYmFycy5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSJub2RlX21vZHVsZXMv
ZGlyZWN0b3IvYnVpbGQvZGlyZWN0b3IuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNy
Yz0ianMvYXBwLmpzIj48L3NjcmlwdD4KICAgICA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQg
YS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9qcXVlcnkvanMvYXBwLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L2pzL2Fw
cC5qcwppbmRleCAxMmZiMjRkNTAyNWQzYzg1Y2UyMDM1ODUxNzc5YmIxMWE3ZTQwM2IzLi4yM2Y0
YWVhYWM2NjY0NzFlNGNmNGVjZjBhYjRkN2IzNzg5MWEwOTVhIDEwMDY0NAotLS0gYS9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9qcXVlcnkvanMvYXBwLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9qcy9hcHAuanMK
QEAgLTEsMTg3ICsxLDE5MiBAQAotLypnbG9iYWwgalF1ZXJ5LCBIYW5kbGViYXJzICovCisvKmds
b2JhbCBqUXVlcnksIEhhbmRsZWJhcnMsIFJvdXRlciAqLwogalF1ZXJ5KGZ1bmN0aW9uICgkKSB7
CiAgICAgJ3VzZSBzdHJpY3QnOwogCi0gICAgdmFyIFV0aWxzID0gewotICAgIHV1aWQ6IGZ1bmN0
aW9uICgpIHsKLSAgICAvKmpzaGludCBiaXR3aXNlOmZhbHNlICovCi0gICAgdmFyIGksIHJhbmRv
bTsKLSAgICB2YXIgdXVpZCA9ICcnOwotCi0gICAgZm9yIChpID0gMDsgaSA8IDMyOyBpKyspIHsK
LSAgICByYW5kb20gPSBNYXRoLnJhbmRvbSgpICogMTYgfCAwOwotICAgIGlmIChpID09PSA4IHx8
IGkgPT09IDEyIHx8IGkgPT09IDE2IHx8IGkgPT09IDIwKSB7Ci0gICAgdXVpZCArPSAnLSc7Ci0g
ICAgfQotICAgIHV1aWQgKz0gKGkgPT09IDEyID8gNCA6IChpID09PSAxNiA/IChyYW5kb20gJiAz
IHwgOCkgOiByYW5kb20pKS50b1N0cmluZygxNik7Ci0gICAgfQotCi0gICAgcmV0dXJuIHV1aWQ7
Ci0gICAgfSwKLSAgICBwbHVyYWxpemU6IGZ1bmN0aW9uIChjb3VudCwgd29yZCkgewotICAgIHJl
dHVybiBjb3VudCA9PT0gMSA/IHdvcmQgOiB3b3JkICsgJ3MnOwotICAgIH0sCi0gICAgc3RvcmU6
IGZ1bmN0aW9uIChuYW1lc3BhY2UsIGRhdGEpIHsKLSAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+
IDEpIHsKLSAgICByZXR1cm4gbG9jYWxTdG9yYWdlLnNldEl0ZW0obmFtZXNwYWNlLCBKU09OLnN0
cmluZ2lmeShkYXRhKSk7Ci0gICAgfSBlbHNlIHsKLSAgICB2YXIgc3RvcmUgPSBsb2NhbFN0b3Jh
Z2UuZ2V0SXRlbShuYW1lc3BhY2UpOwotICAgIHJldHVybiAoc3RvcmUgJiYgSlNPTi5wYXJzZShz
dG9yZSkpIHx8IFtdOwotICAgIH0KLSAgICB9Ci0gICAgfTsKLQotICAgIHZhciBBcHAgPSB7Ci0g
ICAgaW5pdDogZnVuY3Rpb24gKCkgewotICAgIHRoaXMuRU5URVJfS0VZID0gMTM7Ci0gICAgdGhp
cy50b2RvcyA9IFV0aWxzLnN0b3JlKCd0b2Rvcy1qcXVlcnknKTsKLSAgICB0aGlzLmNhY2hlRWxl
bWVudHMoKTsKLSAgICB0aGlzLmJpbmRFdmVudHMoKTsKLSAgICB0aGlzLnJlbmRlcigpOwotICAg
IH0sCi0gICAgY2FjaGVFbGVtZW50czogZnVuY3Rpb24gKCkgewotICAgIHRoaXMudG9kb1RlbXBs
YXRlID0gSGFuZGxlYmFycy5jb21waWxlKCQoJyN0b2RvLXRlbXBsYXRlJykuaHRtbCgpKTsKLSAg
ICB0aGlzLmZvb3RlclRlbXBsYXRlID0gSGFuZGxlYmFycy5jb21waWxlKCQoJyNmb290ZXItdGVt
cGxhdGUnKS5odG1sKCkpOwotICAgIHRoaXMuJHRvZG9BcHAgPSAkKCcjdG9kb2FwcCcpOwotICAg
IHRoaXMuJGhlYWRlciA9IHRoaXMuJHRvZG9BcHAuZmluZCgnI2hlYWRlcicpOwotICAgIHRoaXMu
JG1haW4gPSB0aGlzLiR0b2RvQXBwLmZpbmQoJyNtYWluJyk7Ci0gICAgdGhpcy4kZm9vdGVyID0g
dGhpcy4kdG9kb0FwcC5maW5kKCcjZm9vdGVyJyk7Ci0gICAgdGhpcy4kbmV3VG9kbyA9IHRoaXMu
JGhlYWRlci5maW5kKCcjbmV3LXRvZG8nKTsKLSAgICB0aGlzLiR0b2dnbGVBbGwgPSB0aGlzLiRt
YWluLmZpbmQoJyN0b2dnbGUtYWxsJyk7Ci0gICAgdGhpcy4kdG9kb0xpc3QgPSB0aGlzLiRtYWlu
LmZpbmQoJyN0b2RvLWxpc3QnKTsKLSAgICB0aGlzLiRjb3VudCA9IHRoaXMuJGZvb3Rlci5maW5k
KCcjdG9kby1jb3VudCcpOwotICAgIHRoaXMuJGNsZWFyQnRuID0gdGhpcy4kZm9vdGVyLmZpbmQo
JyNjbGVhci1jb21wbGV0ZWQnKTsKLSAgICB9LAotICAgIGJpbmRFdmVudHM6IGZ1bmN0aW9uICgp
IHsKLSAgICB2YXIgbGlzdCA9IHRoaXMuJHRvZG9MaXN0OwotICAgIHRoaXMuJG5ld1RvZG8ub24o
J2tleXVwJywgdGhpcy5jcmVhdGUpOwotICAgIHRoaXMuJHRvZ2dsZUFsbC5vbignY2hhbmdlJywg
dGhpcy50b2dnbGVBbGwpOwotICAgIHRoaXMuJGZvb3Rlci5vbignY2xpY2snLCAnI2NsZWFyLWNv
bXBsZXRlZCcsIHRoaXMuZGVzdHJveUNvbXBsZXRlZCk7Ci0gICAgbGlzdC5vbignY2hhbmdlJywg
Jy50b2dnbGUnLCB0aGlzLnRvZ2dsZSk7Ci0gICAgbGlzdC5vbignZGJsY2xpY2snLCAnbGFiZWwn
LCB0aGlzLmVkaXQpOwotICAgIGxpc3Qub24oJ2tleXByZXNzJywgJy5lZGl0JywgdGhpcy5ibHVy
T25FbnRlcik7Ci0gICAgbGlzdC5vbignYmx1cicsICcuZWRpdCcsIHRoaXMudXBkYXRlKTsKLSAg
ICBsaXN0Lm9uKCdjbGljaycsICcuZGVzdHJveScsIHRoaXMuZGVzdHJveSk7Ci0gICAgfSwKLSAg
ICByZW5kZXI6IGZ1bmN0aW9uICgpIHsKLSAgICB0aGlzLiR0b2RvTGlzdC5odG1sKHRoaXMudG9k
b1RlbXBsYXRlKHRoaXMudG9kb3MpKTsKLSAgICB0aGlzLiRtYWluLnRvZ2dsZSghIXRoaXMudG9k
b3MubGVuZ3RoKTsKLSAgICB0aGlzLiR0b2dnbGVBbGwucHJvcCgnY2hlY2tlZCcsICF0aGlzLmFj
dGl2ZVRvZG9Db3VudCgpKTsKLSAgICB0aGlzLnJlbmRlckZvb3RlcigpOwotICAgIFV0aWxzLnN0
b3JlKCd0b2Rvcy1qcXVlcnknLCB0aGlzLnRvZG9zKTsKLSAgICB9LAotICAgIHJlbmRlckZvb3Rl
cjogZnVuY3Rpb24gKCkgewotICAgIHZhciB0b2RvQ291bnQgPSB0aGlzLnRvZG9zLmxlbmd0aDsK
LSAgICB2YXIgYWN0aXZlVG9kb0NvdW50ID0gdGhpcy5hY3RpdmVUb2RvQ291bnQoKTsKLSAgICB2
YXIgZm9vdGVyID0gewotICAgIGFjdGl2ZVRvZG9Db3VudDogYWN0aXZlVG9kb0NvdW50LAotICAg
IGFjdGl2ZVRvZG9Xb3JkOiBVdGlscy5wbHVyYWxpemUoYWN0aXZlVG9kb0NvdW50LCAnaXRlbScp
LAotICAgIGNvbXBsZXRlZFRvZG9zOiB0b2RvQ291bnQgLSBhY3RpdmVUb2RvQ291bnQKLSAgICB9
OwotCi0gICAgdGhpcy4kZm9vdGVyLnRvZ2dsZSghIXRvZG9Db3VudCk7Ci0gICAgdGhpcy4kZm9v
dGVyLmh0bWwodGhpcy5mb290ZXJUZW1wbGF0ZShmb290ZXIpKTsKLSAgICB9LAotICAgIHRvZ2ds
ZUFsbDogZnVuY3Rpb24gKCkgewotICAgIHZhciBpc0NoZWNrZWQgPSAkKHRoaXMpLnByb3AoJ2No
ZWNrZWQnKTsKLQotICAgICQuZWFjaChBcHAudG9kb3MsIGZ1bmN0aW9uIChpLCB2YWwpIHsKLSAg
ICB2YWwuY29tcGxldGVkID0gaXNDaGVja2VkOworICAgIEhhbmRsZWJhcnMucmVnaXN0ZXJIZWxw
ZXIoJ2VxJywgZnVuY3Rpb24gKGEsIGIsIG9wdGlvbnMpIHsKKyAgICAgICAgcmV0dXJuIGEgPT09
IGIgPyBvcHRpb25zLmZuKHRoaXMpIDogb3B0aW9ucy5pbnZlcnNlKHRoaXMpOwogICAgIH0pOwog
Ci0gICAgQXBwLnJlbmRlcigpOwotICAgIH0sCi0gICAgYWN0aXZlVG9kb0NvdW50OiBmdW5jdGlv
biAoKSB7Ci0gICAgdmFyIGNvdW50ID0gMDsKLQotICAgICQuZWFjaCh0aGlzLnRvZG9zLCBmdW5j
dGlvbiAoaSwgdmFsKSB7Ci0gICAgaWYgKCF2YWwuY29tcGxldGVkKSB7Ci0gICAgY291bnQrKzsK
LSAgICB9Ci0gICAgfSk7CiAKLSAgICByZXR1cm4gY291bnQ7Ci0gICAgfSwKLSAgICBkZXN0cm95
Q29tcGxldGVkOiBmdW5jdGlvbiAoKSB7Ci0gICAgdmFyIHRvZG9zID0gQXBwLnRvZG9zOwotICAg
IHZhciBsID0gdG9kb3MubGVuZ3RoOwotCi0gICAgd2hpbGUgKGwtLSkgewotICAgIGlmICh0b2Rv
c1tsXS5jb21wbGV0ZWQpIHsKLSAgICB0b2Rvcy5zcGxpY2UobCwgMSk7Ci0gICAgfQotICAgIH0K
LQotICAgIEFwcC5yZW5kZXIoKTsKLSAgICB9LAotICAgIC8vIGFjY2VwdHMgYW4gZWxlbWVudCBm
cm9tIGluc2lkZSB0aGUgYC5pdGVtYCBkaXYgYW5kCi0gICAgLy8gcmV0dXJucyB0aGUgY29ycmVz
cG9uZGluZyB0b2RvIGluIHRoZSB0b2RvcyBhcnJheQotICAgIGdldFRvZG86IGZ1bmN0aW9uIChl
bGVtLCBjYWxsYmFjaykgewotICAgIHZhciBpZCA9ICQoZWxlbSkuY2xvc2VzdCgnbGknKS5kYXRh
KCdpZCcpOwotCi0gICAgJC5lYWNoKHRoaXMudG9kb3MsIGZ1bmN0aW9uIChpLCB2YWwpIHsKLSAg
ICBpZiAodmFsLmlkID09PSBpZCkgewotICAgIGNhbGxiYWNrLmFwcGx5KEFwcCwgYXJndW1lbnRz
KTsKLSAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIH0pOwotICAgIH0sCi0gICAgY3JlYXRl
OiBmdW5jdGlvbiAoZSkgewotICAgIHZhciAkaW5wdXQgPSAkKHRoaXMpOwotICAgIHZhciB2YWwg
PSAkLnRyaW0oJGlucHV0LnZhbCgpKTsKLQotICAgIGlmIChlLndoaWNoICE9PSBBcHAuRU5URVJf
S0VZIHx8ICF2YWwpIHsKLSAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQXBwLnRvZG9zLnB1c2go
ewotICAgIGlkOiBVdGlscy51dWlkKCksCi0gICAgdGl0bGU6IHZhbCwKLSAgICBjb21wbGV0ZWQ6
IGZhbHNlCi0gICAgfSk7CisgICAgdmFyIHV0aWwgPSB7CisgICAgICAgIHV1aWQ6IGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgIC8qanNoaW50IGJpdHdpc2U6ZmFsc2UgKi8KKyAgICAgICAgICAg
IHZhciBpLCByYW5kb207CisgICAgICAgICAgICB2YXIgdXVpZCA9ICcnOworCisgICAgICAgICAg
ICBmb3IgKGkgPSAwOyBpIDwgMzI7IGkrKykgeworICAgICAgICAgICAgICAgIHJhbmRvbSA9IE1h
dGgucmFuZG9tKCkgKiAxNiB8IDA7CisgICAgICAgICAgICAgICAgaWYgKGkgPT09IDggfHwgaSA9
PT0gMTIgfHwgaSA9PT0gMTYgfHwgaSA9PT0gMjApIHsKKyAgICAgICAgICAgICAgICAgICAgdXVp
ZCArPSAnLSc7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHV1aWQgKz0gKGkg
PT09IDEyID8gNCA6IChpID09PSAxNiA/IChyYW5kb20gJiAzIHwgOCkgOiByYW5kb20pKS50b1N0
cmluZygxNik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiB1dWlkOworICAg
ICAgICB9LAorICAgICAgICBwbHVyYWxpemU6IGZ1bmN0aW9uIChjb3VudCwgd29yZCkgeworICAg
ICAgICAgICAgcmV0dXJuIGNvdW50ID09PSAxID8gd29yZCA6IHdvcmQgKyAncyc7CisgICAgICAg
IH0sCisgICAgICAgIHN0b3JlOiBmdW5jdGlvbiAobmFtZXNwYWNlLCBkYXRhKSB7CisgICAgICAg
ICAgICByZXR1cm4gW107CisgICAgICAgIH0KKyAgICB9OwogCi0gICAgJGlucHV0LnZhbCgnJyk7
Ci0gICAgQXBwLnJlbmRlcigpOwotICAgIH0sCi0gICAgdG9nZ2xlOiBmdW5jdGlvbiAoKSB7Ci0g
ICAgQXBwLmdldFRvZG8odGhpcywgZnVuY3Rpb24gKGksIHZhbCkgewotICAgIHZhbC5jb21wbGV0
ZWQgPSAhdmFsLmNvbXBsZXRlZDsKLSAgICB9KTsKLSAgICBBcHAucmVuZGVyKCk7Ci0gICAgfSwK
LSAgICBlZGl0OiBmdW5jdGlvbiAoKSB7Ci0gICAgdmFyICRpbnB1dCA9ICQodGhpcykuY2xvc2Vz
dCgnbGknKS5hZGRDbGFzcygnZWRpdGluZycpLmZpbmQoJy5lZGl0Jyk7Ci0gICAgdmFyIHZhbCA9
ICRpbnB1dC52YWwoKTsKLQotICAgICRpbnB1dC52YWwodmFsKS5mb2N1cygpOwotICAgIH0sCi0g
ICAgYmx1ck9uRW50ZXI6IGZ1bmN0aW9uIChlKSB7Ci0gICAgaWYgKGUud2hpY2ggPT09IEFwcC5F
TlRFUl9LRVkpIHsKLSAgICBlLnRhcmdldC5ibHVyKCk7Ci0gICAgfQotICAgIH0sCi0gICAgdXBk
YXRlOiBmdW5jdGlvbiAoKSB7Ci0gICAgdmFyIHZhbCA9ICQudHJpbSgkKHRoaXMpLnJlbW92ZUNs
YXNzKCdlZGl0aW5nJykudmFsKCkpOwotCi0gICAgQXBwLmdldFRvZG8odGhpcywgZnVuY3Rpb24g
KGkpIHsKLSAgICBpZiAodmFsKSB7Ci0gICAgdGhpcy50b2Rvc1tpXS50aXRsZSA9IHZhbDsKLSAg
ICB9IGVsc2UgewotICAgIHRoaXMudG9kb3Muc3BsaWNlKGksIDEpOwotICAgIH0KLSAgICB0aGlz
LnJlbmRlcigpOwotICAgIH0pOwotICAgIH0sCi0gICAgZGVzdHJveTogZnVuY3Rpb24gKCkgewot
ICAgIEFwcC5nZXRUb2RvKHRoaXMsIGZ1bmN0aW9uIChpKSB7Ci0gICAgdGhpcy50b2Rvcy5zcGxp
Y2UoaSwgMSk7Ci0gICAgdGhpcy5yZW5kZXIoKTsKLSAgICB9KTsKLSAgICB9CisgICAgdmFyIEFw
cCA9IHsKKyAgICAgICAgRU5URVJfS0VZOiAxMywKKyAgICAgICAgRVNDQVBFX0tFWTogMjcsCisg
ICAgICAgIGluaXQ6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRoaXMudG9kb3MgPSB1dGls
LnN0b3JlKCd0b2Rvcy1qcXVlcnknKTsKKyAgICAgICAgICAgIHRoaXMudG9kb1RlbXBsYXRlID0g
SGFuZGxlYmFycy5jb21waWxlKCQoJyN0b2RvLXRlbXBsYXRlJykuaHRtbCgpKTsKKyAgICAgICAg
ICAgIHRoaXMuZm9vdGVyVGVtcGxhdGUgPSBIYW5kbGViYXJzLmNvbXBpbGUoJCgnI2Zvb3Rlci10
ZW1wbGF0ZScpLmh0bWwoKSk7CisgICAgICAgICAgICB0aGlzLmJpbmRFdmVudHMoKTsKKworICAg
ICAgICAgICAgbmV3IFJvdXRlcih7CisgICAgICAgICAgICAgICAgJy86ZmlsdGVyJzogZnVuY3Rp
b24gKGZpbHRlcikgeworICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlciA9IGZpbHRlcjsK
KyAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXIoKTsKKyAgICAgICAgICAgICAgICB9LmJp
bmQodGhpcykKKyAgICAgICAgICAgIH0pLmluaXQoJy9hbGwnKTsKKyAgICAgICAgfSwKKyAgICAg
ICAgYmluZEV2ZW50czogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgJCgnI25ldy10b2RvJyku
b24oJ2tleXVwJywgdGhpcy5jcmVhdGUuYmluZCh0aGlzKSk7CisgICAgICAgICAgICAkKCcjdG9n
Z2xlLWFsbCcpLm9uKCdjaGFuZ2UnLCB0aGlzLnRvZ2dsZUFsbC5iaW5kKHRoaXMpKTsKKyAgICAg
ICAgICAgICQoJyNmb290ZXInKS5vbignY2xpY2snLCAnI2NsZWFyLWNvbXBsZXRlZCcsIHRoaXMu
ZGVzdHJveUNvbXBsZXRlZC5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAgICQoJyN0b2RvLWxpc3Qn
KQorICAgICAgICAgICAgICAgIC5vbignY2hhbmdlJywgJy50b2dnbGUnLCB0aGlzLnRvZ2dsZS5i
aW5kKHRoaXMpKQorICAgICAgICAgICAgICAgIC5vbignZGJsY2xpY2snLCAnbGFiZWwnLCB0aGlz
LmVkaXQuYmluZCh0aGlzKSkKKyAgICAgICAgICAgICAgICAub24oJ2tleXVwJywgJy5lZGl0Jywg
dGhpcy5lZGl0S2V5dXAuYmluZCh0aGlzKSkKKyAgICAgICAgICAgICAgICAub24oJ2ZvY3Vzb3V0
JywgJy5lZGl0JywgdGhpcy51cGRhdGUuYmluZCh0aGlzKSkKKyAgICAgICAgICAgICAgICAub24o
J2NsaWNrJywgJy5kZXN0cm95JywgdGhpcy5kZXN0cm95LmJpbmQodGhpcykpOworICAgICAgICB9
LAorICAgICAgICByZW5kZXI6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHZhciB0b2RvcyA9
IHRoaXMuZ2V0RmlsdGVyZWRUb2RvcygpOworICAgICAgICAgICAgJCgnI3RvZG8tbGlzdCcpLmh0
bWwodGhpcy50b2RvVGVtcGxhdGUodG9kb3MpKTsKKyAgICAgICAgICAgICQoJyNtYWluJykudG9n
Z2xlKHRvZG9zLmxlbmd0aCA+IDApOworICAgICAgICAgICAgJCgnI3RvZ2dsZS1hbGwnKS5wcm9w
KCdjaGVja2VkJywgdGhpcy5nZXRBY3RpdmVUb2RvcygpLmxlbmd0aCA9PT0gMCk7CisgICAgICAg
ICAgICB0aGlzLnJlbmRlckZvb3RlcigpOworICAgICAgICAgICAgJCgnI25ldy10b2RvJykuZm9j
dXMoKTsKKyAgICAgICAgICAgIHV0aWwuc3RvcmUoJ3RvZG9zLWpxdWVyeScsIHRoaXMudG9kb3Mp
OworICAgICAgICB9LAorICAgICAgICByZW5kZXJGb290ZXI6IGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgIHZhciB0b2RvQ291bnQgPSB0aGlzLnRvZG9zLmxlbmd0aDsKKyAgICAgICAgICAgIHZh
ciBhY3RpdmVUb2RvQ291bnQgPSB0aGlzLmdldEFjdGl2ZVRvZG9zKCkubGVuZ3RoOworICAgICAg
ICAgICAgdmFyIHRlbXBsYXRlID0gdGhpcy5mb290ZXJUZW1wbGF0ZSh7CisgICAgICAgICAgICAg
ICAgYWN0aXZlVG9kb0NvdW50OiBhY3RpdmVUb2RvQ291bnQsCisgICAgICAgICAgICAgICAgYWN0
aXZlVG9kb1dvcmQ6IHV0aWwucGx1cmFsaXplKGFjdGl2ZVRvZG9Db3VudCwgJ2l0ZW0nKSwKKyAg
ICAgICAgICAgICAgICBjb21wbGV0ZWRUb2RvczogdG9kb0NvdW50IC0gYWN0aXZlVG9kb0NvdW50
LAorICAgICAgICAgICAgICAgIGZpbHRlcjogdGhpcy5maWx0ZXIKKyAgICAgICAgICAgIH0pOwor
CisgICAgICAgICAgICAkKCcjZm9vdGVyJykudG9nZ2xlKHRvZG9Db3VudCA+IDApLmh0bWwodGVt
cGxhdGUpOworICAgICAgICB9LAorICAgICAgICB0b2dnbGVBbGw6IGZ1bmN0aW9uIChlKSB7Cisg
ICAgICAgICAgICB2YXIgaXNDaGVja2VkID0gJChlLnRhcmdldCkucHJvcCgnY2hlY2tlZCcpOwor
CisgICAgICAgICAgICB0aGlzLnRvZG9zLmZvckVhY2goZnVuY3Rpb24gKHRvZG8pIHsKKyAgICAg
ICAgICAgICAgICB0b2RvLmNvbXBsZXRlZCA9IGlzQ2hlY2tlZDsKKyAgICAgICAgICAgIH0pOwor
CisgICAgICAgICAgICB0aGlzLnJlbmRlcigpOworICAgICAgICB9LAorICAgICAgICBnZXRBY3Rp
dmVUb2RvczogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMudG9kb3MuZmls
dGVyKGZ1bmN0aW9uICh0b2RvKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuICF0b2RvLmNvbXBs
ZXRlZDsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LAorICAgICAgICBnZXRDb21wbGV0ZWRU
b2RvczogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMudG9kb3MuZmlsdGVy
KGZ1bmN0aW9uICh0b2RvKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRvZG8uY29tcGxldGVk
OworICAgICAgICAgICAgfSk7CisgICAgICAgIH0sCisgICAgICAgIGdldEZpbHRlcmVkVG9kb3M6
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGlmICh0aGlzLmZpbHRlciA9PT0gJ2FjdGl2ZScp
IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRBY3RpdmVUb2RvcygpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBpZiAodGhpcy5maWx0ZXIgPT09ICdjb21wbGV0ZWQnKSB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Q29tcGxldGVkVG9kb3MoKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHRoaXMudG9kb3M7CisgICAgICAgIH0sCisg
ICAgICAgIGRlc3Ryb3lDb21wbGV0ZWQ6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRoaXMu
dG9kb3MgPSB0aGlzLmdldEFjdGl2ZVRvZG9zKCk7CisgICAgICAgICAgICB0aGlzLmZpbHRlciA9
ICdhbGwnOworICAgICAgICAgICAgdGhpcy5yZW5kZXIoKTsKKyAgICAgICAgfSwKKyAgICAgICAg
Ly8gYWNjZXB0cyBhbiBlbGVtZW50IGZyb20gaW5zaWRlIHRoZSBgLml0ZW1gIGRpdiBhbmQKKyAg
ICAgICAgLy8gcmV0dXJucyB0aGUgY29ycmVzcG9uZGluZyBpbmRleCBpbiB0aGUgYHRvZG9zYCBh
cnJheQorICAgICAgICBpbmRleEZyb21FbDogZnVuY3Rpb24gKGVsKSB7CisgICAgICAgICAgICB2
YXIgaWQgPSAkKGVsKS5jbG9zZXN0KCdsaScpLmRhdGEoJ2lkJyk7CisgICAgICAgICAgICB2YXIg
dG9kb3MgPSB0aGlzLnRvZG9zOworICAgICAgICAgICAgdmFyIGkgPSB0b2Rvcy5sZW5ndGg7CisK
KyAgICAgICAgICAgIHdoaWxlIChpLS0pIHsKKyAgICAgICAgICAgICAgICBpZiAodG9kb3NbaV0u
aWQgPT09IGlkKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgY3JlYXRlOiBmdW5jdGlv
biAoZSkgeworICAgICAgICAgICAgdmFyICRpbnB1dCA9ICQoZS50YXJnZXQpOworICAgICAgICAg
ICAgdmFyIHZhbCA9ICQudHJpbSgkaW5wdXQudmFsKCkpOworCisgICAgICAgICAgICBpZiAoZS53
aGljaCAhPT0gdGhpcy5FTlRFUl9LRVkgfHwgIXZhbCkgeworICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdGhpcy50b2Rvcy5wdXNoKHsKKyAgICAg
ICAgICAgICAgICBpZDogdXRpbC51dWlkKCksCisgICAgICAgICAgICAgICAgdGl0bGU6IHZhbCwK
KyAgICAgICAgICAgICAgICBjb21wbGV0ZWQ6IGZhbHNlCisgICAgICAgICAgICB9KTsKKworICAg
ICAgICAgICAgJGlucHV0LnZhbCgnJyk7CisKKyAgICAgICAgICAgIHRoaXMucmVuZGVyKCk7Cisg
ICAgICAgIH0sCisgICAgICAgIHRvZ2dsZTogZnVuY3Rpb24gKGUpIHsKKyAgICAgICAgICAgIHZh
ciBpID0gdGhpcy5pbmRleEZyb21FbChlLnRhcmdldCk7CisgICAgICAgICAgICB0aGlzLnRvZG9z
W2ldLmNvbXBsZXRlZCA9ICF0aGlzLnRvZG9zW2ldLmNvbXBsZXRlZDsKKyAgICAgICAgICAgIHRo
aXMucmVuZGVyKCk7CisgICAgICAgIH0sCisgICAgICAgIGVkaXQ6IGZ1bmN0aW9uIChlKSB7Cisg
ICAgICAgICAgICB2YXIgJGlucHV0ID0gJChlLnRhcmdldCkuY2xvc2VzdCgnbGknKS5hZGRDbGFz
cygnZWRpdGluZycpLmZpbmQoJy5lZGl0Jyk7CisgICAgICAgICAgICAkaW5wdXQudmFsKCRpbnB1
dC52YWwoKSkuZm9jdXMoKTsKKyAgICAgICAgfSwKKyAgICAgICAgZWRpdEtleXVwOiBmdW5jdGlv
biAoZSkgeworICAgICAgICAgICAgaWYgKGUud2hpY2ggPT09IHRoaXMuRU5URVJfS0VZKSB7Cisg
ICAgICAgICAgICAgICAgZS50YXJnZXQuYmx1cigpOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBpZiAoZS53aGljaCA9PT0gdGhpcy5FU0NBUEVfS0VZKSB7CisgICAgICAgICAgICAgICAg
JChlLnRhcmdldCkuZGF0YSgnYWJvcnQnLCB0cnVlKS5ibHVyKCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0sCisgICAgICAgIHVwZGF0ZTogZnVuY3Rpb24gKGUpIHsKKyAgICAgICAgICAgIHZh
ciBlbCA9IGUudGFyZ2V0OworICAgICAgICAgICAgdmFyICRlbCA9ICQoZWwpOworICAgICAgICAg
ICAgdmFyIHZhbCA9ICRlbC52YWwoKS50cmltKCk7CisKKyAgICAgICAgICAgIGlmICghdmFsKSB7
CisgICAgICAgICAgICAgICAgdGhpcy5kZXN0cm95KGUpOworICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCRlbC5kYXRhKCdhYm9ydCcpKSB7
CisgICAgICAgICAgICAgICAgJGVsLmRhdGEoJ2Fib3J0JywgZmFsc2UpOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICB0aGlzLnRvZG9zW3RoaXMuaW5kZXhGcm9tRWwoZWwp
XS50aXRsZSA9IHZhbDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdGhpcy5yZW5kZXIo
KTsKKyAgICAgICAgfSwKKyAgICAgICAgZGVzdHJveTogZnVuY3Rpb24gKGUpIHsKKyAgICAgICAg
ICAgIHRoaXMudG9kb3Muc3BsaWNlKHRoaXMuaW5kZXhGcm9tRWwoZS50YXJnZXQpLCAxKTsKKyAg
ICAgICAgICAgIHRoaXMucmVuZGVyKCk7CisgICAgICAgIH0KICAgICB9OwogCiAgICAgd2luZG93
LmFwcCA9IEFwcDsKLSAgICBVdGlscy5zdG9yZSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIFtdOyB9
Ci0KLSAgICBBcHAuaW5pdCgpOworICAgIHdpbmRvdy5hcHAuaW5pdCgpOwogfSk7CmRpZmYgLS1n
aXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yLy5ucG1pZ25vcmUg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yLy5ucG1pZ25vcmUKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZmYxYTgwYzRlYmM2NjBjODdlMDE4MWExOGVlOGEyODMyMTRkM2RmYgotLS0gL2Rl
di9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvLm5w
bWlnbm9yZQpAQCAtMCwwICsxLDYgQEAKKy8uaWRlYS8KK25vZGVfbW9kdWxlcworbnBtLWRlYnVn
LmxvZworLkRTX1N0b3JlCisKKy90ZXN0L2Jyb3dzZXIvYnJvd3NlcmlmaWVkLWJ1bmRsZS5qcwpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci8udHJh
dmlzLnltbCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvLnRyYXZp
cy55bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYjg5NWI3ZjBiNTI5M2EzOTYyYTYzOGEyNDVlZjQ2Yzk1ODI4MWQ4
MAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGly
ZWN0b3IvLnRyYXZpcy55bWwKQEAgLTAsMCArMSwxNCBAQAorbGFuZ3VhZ2U6IG5vZGVfanMKKwor
YmVmb3JlX2luc3RhbGw6CisgIC0gY3VybCAtLWxvY2F0aW9uIGh0dHA6Ly9naXQuaW8vMU9jSVpB
IHwgYmFzaCAtcworCitub2RlX2pzOgorICAtICIwLjgiCisgIC0gIjAuMTAiCisgIC0gIjAuMTEi
CisKK25vdGlmaWNhdGlvbnM6CisgIGVtYWlsOgorICAgIC0gdHJhdmlzQG5vZGVqaXRzdS5jb20K
KyAgaXJjOiAiaXJjLmZyZWVub2RlLm9yZyNub2Rlaml0c3UiCmRpZmYgLS1naXQgYS9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL0xJQ0VOU0UgYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9q
cXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL0xJQ0VOU0UKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGE0OTgxMDg1
MDE5ZjkxN2MxMjM3NjlhMGMyN2NkODcwZTM1YTc4NAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvTElDRU5TRQpAQCAtMCwwICsxLDE5
IEBACitDb3B5cmlnaHQgKGMpIDIwMTEgQ2hhcmxpZSBSb2JiaW5zLCBQYW9sbyBGcmFnb21lbmks
ICYgdGhlIENvbnRyaWJ1dG9ycy4KKworUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJl
ZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQorb2YgdGhpcyBzb2Z0
d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiks
IHRvIGRlYWwKK2luIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcg
d2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKK3RvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJn
ZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKK2NvcGllcyBv
ZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2Fy
ZSBpcworZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9uczoKKworVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBu
b3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KK2FsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9y
dGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorCitUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElT
IiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorSU1QTElFRCwgSU5D
TFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFksCitGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5U
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKK0FVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUg
TElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKK0xJQUJJTElUWSwgV0hFVEhF
UiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZS
T00sCitPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNF
IE9SIE9USEVSIERFQUxJTkdTIElOCitUSEUgU09GVFdBUkUuCmRpZmYgLS1naXQgYS9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL1JFQURNRS5tZCBiL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvUkVBRE1FLm1kCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEyZjY0
ZjYzNmUwOTM2MmM4NDQxNGE1ODY5YzlkNTQyMmE1YjAzNTYKLS0tIC9kZXYvbnVsbAorKysgYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL1JFQURNRS5tZApAQCAtMCww
ICsxLDk2MiBAQAorIVtMb2dvXShodHRwczovL2dpdGh1Yi5jb20vZmxhdGlyb24vZGlyZWN0b3Iv
cmF3L21hc3Rlci9pbWcvZGlyZWN0b3IucG5nKQorCisjIFN5bm9wc2lzCisKK0RpcmVjdG9yIGlz
IGEgcm91dGVyLiBSb3V0aW5nIGlzIHRoZSBwcm9jZXNzIG9mIGRldGVybWluaW5nIHdoYXQgY29k
ZSB0byBydW4KK3doZW4gYSBVUkwgaXMgcmVxdWVzdGVkLgorCisjIE1vdGl2YXRpb24KKworQSBy
b3V0aW5nIGxpYnJhcnkgdGhhdCB3b3JrcyBpbiBib3RoIHRoZSBicm93c2VyIGFuZCBub2RlLmpz
IGVudmlyb25tZW50cyB3aXRoCithcyBmZXcgZGlmZmVyZW5jZXMgYXMgcG9zc2libGUuIFNpbXBs
aWZpZXMgdGhlIGRldmVsb3BtZW50IG9mIFNpbmdsZSBQYWdlIEFwcHMKK2FuZCBOb2RlLmpzIGFw
cGxpY2F0aW9ucy4gRGVwZW5kZW5jeSBmcmVlIChkb2Vzbid0IHJlcXVpcmUgalF1ZXJ5IG9yIEV4
cHJlc3MsCitldGMpLgorCisjIFN0YXR1cworWyFbQnVpbGQgU3RhdHVzXShodHRwczovL3NlY3Vy
ZS50cmF2aXMtY2kub3JnL2ZsYXRpcm9uL2RpcmVjdG9yLnBuZz9icmFuY2g9bWFzdGVyKV0oaHR0
cDovL3RyYXZpcy1jaS5vcmcvZmxhdGlyb24vZGlyZWN0b3IpCisKKyMgRmVhdHVyZXMKKworKiBb
Q2xpZW50LVNpZGUgUm91dGluZ10oI2NsaWVudC1zaWRlLXJvdXRpbmcpCisqIFtTZXJ2ZXItU2lk
ZSBIVFRQIFJvdXRpbmddKCNzZXJ2ZXItc2lkZS1odHRwLXJvdXRpbmcpCisqIFtTZXJ2ZXItU2lk
ZSBDTEkgUm91dGluZ10oI3NlcnZlci1zaWRlLWNsaS1yb3V0aW5nKQorCisjIFVzYWdlCisKKyog
W0FQSSBEb2N1bWVudGF0aW9uXSgjYXBpLWRvY3VtZW50YXRpb24pCisqIFtGcmVxdWVudGx5IEFz
a2VkIFF1ZXN0aW9uc10oI2ZhcSkKKworIyMgQnVpbGRpbmcgY2xpZW50LXNpZGUgc2NyaXB0CisK
K1J1biB0aGUgcHJvdmlkZWQgQ0xJIHNjcmlwdC4KKworYGBgYmFzaAorLi9iaW4vYnVpbGQKK2Bg
YAorCisjIyBDbGllbnQtc2lkZSBSb3V0aW5nCisKK0l0IHNpbXBseSB3YXRjaGVzIHRoZSBoYXNo
IG9mIHRoZSBVUkwgdG8gZGV0ZXJtaW5lIHdoYXQgdG8gZG8sIGZvciBleGFtcGxlOgorCitgYGAK
K2h0dHA6Ly9mb28uY29tLyMvYmFyCitgYGAKKworQ2xpZW50LXNpZGUgcm91dGluZyAoYWthIGhh
c2gtcm91dGluZykgYWxsb3dzIHlvdSB0byBzcGVjaWZ5IHNvbWUgaW5mb3JtYXRpb24KK2Fib3V0
IHRoZSBzdGF0ZSBvZiB0aGUgYXBwbGljYXRpb24gdXNpbmcgdGhlIFVSTC4gU28gdGhhdCB3aGVu
IHRoZSB1c2VyIHZpc2l0cworYSBzcGVjaWZpYyBVUkwsIHRoZSBhcHBsaWNhdGlvbiBjYW4gYmUg
dHJhbnNmb3JtZWQgYWNjb3JkaW5nbHkuCisKKyFbSGFzaCByb3V0ZV0oaHR0cHM6Ly9naXRodWIu
Y29tL2ZsYXRpcm9uL2RpcmVjdG9yL3Jhdy9tYXN0ZXIvaW1nL2hhc2hSb3V0ZS5wbmcpCisKK0hl
cmUgaXMgYSBzaW1wbGUgZXhhbXBsZToKKworYGBgaHRtbAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKyAgPGhlYWQ+CisgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgorICAgIDx0aXRsZT5BIEdl
bnRsZSBJbnRyb2R1Y3Rpb248L3RpdGxlPgorCisgICAgPHNjcmlwdAorICAgICAgc3JjPSJodHRw
czovL3Jhd2dpdC5jb20vZmxhdGlyb24vZGlyZWN0b3IvbWFzdGVyL2J1aWxkL2RpcmVjdG9yLm1p
bi5qcyI+CisgICAgPC9zY3JpcHQ+CisKKyAgICA8c2NyaXB0PgorICAgICAgdmFyIGF1dGhvciA9
IGZ1bmN0aW9uICgpIHsgY29uc29sZS5sb2coImF1dGhvciIpOyB9OworICAgICAgdmFyIGJvb2tz
ID0gZnVuY3Rpb24gKCkgeyBjb25zb2xlLmxvZygiYm9va3MiKTsgfTsKKyAgICAgIHZhciB2aWV3
Qm9vayA9IGZ1bmN0aW9uIChib29rSWQpIHsKKyAgICAgICAgY29uc29sZS5sb2coInZpZXdCb29r
OiBib29rSWQgaXMgcG9wdWxhdGVkOiAiICsgYm9va0lkKTsKKyAgICAgIH07CisKKyAgICAgIHZh
ciByb3V0ZXMgPSB7CisgICAgICAgICcvYXV0aG9yJzogYXV0aG9yLAorICAgICAgICAnL2Jvb2tz
JzogW2Jvb2tzLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICBjb25zb2xlLmxvZygiQW4gaW5saW5l
IHJvdXRlIGhhbmRsZXIuIik7CisgICAgICAgIH1dLAorICAgICAgICAnL2Jvb2tzL3ZpZXcvOmJv
b2tJZCc6IHZpZXdCb29rCisgICAgICB9OworCisgICAgICB2YXIgcm91dGVyID0gUm91dGVyKHJv
dXRlcyk7CisKKyAgICAgIHJvdXRlci5pbml0KCk7CisgICAgPC9zY3JpcHQ+CisgIDwvaGVhZD4K
KworICA8Ym9keT4KKyAgICA8dWw+CisgICAgICA8bGk+PGEgaHJlZj0iIy9hdXRob3IiPiMvYXV0
aG9yPC9hPjwvbGk+CisgICAgICA8bGk+PGEgaHJlZj0iIy9ib29rcyI+Iy9ib29rczwvYT48L2xp
PgorICAgICAgPGxpPjxhIGhyZWY9IiMvYm9va3Mvdmlldy8xIj4jL2Jvb2tzL3ZpZXcvMTwvYT48
L2xpPgorICAgIDwvdWw+CisgIDwvYm9keT4KKzwvaHRtbD4KK2BgYAorCitEaXJlY3RvciB3b3Jr
cyBncmVhdCB3aXRoIHlvdXIgZmF2b3JpdGUgRE9NIGxpYnJhcnksIHN1Y2ggYXMgalF1ZXJ5Lgor
CitgYGBodG1sCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICA8aGVhZD4KKyAgICA8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+CisgICAgPHRpdGxlPkEgR2VudGxlIEludHJvZHVjdGlvbiAyPC90aXRs
ZT4KKworICAgIDxzY3JpcHQKKyAgICAgIHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNv
bS9hamF4L2xpYnMvanF1ZXJ5LzIuMS4xL2pxdWVyeS5taW4uanMiPgorICAgIDwvc2NyaXB0Pgor
CisgICAgPHNjcmlwdAorICAgICAgc3JjPSJodHRwczovL3Jhd2dpdC5jb20vZmxhdGlyb24vZGly
ZWN0b3IvbWFzdGVyL2J1aWxkL2RpcmVjdG9yLm1pbi5qcyI+CisgICAgPC9zY3JpcHQ+CisKKyAg
ICA8c2NyaXB0PgorICAgICQoJ2RvY3VtZW50JykucmVhZHkoZnVuY3Rpb24oKSB7CisgICAgICAv
LworICAgICAgLy8gY3JlYXRlIHNvbWUgZnVuY3Rpb25zIHRvIGJlIGV4ZWN1dGVkIHdoZW4KKyAg
ICAgIC8vIHRoZSBjb3JyZWN0IHJvdXRlIGlzIGlzc3VlZCBieSB0aGUgdXNlci4KKyAgICAgIC8v
CisgICAgICB2YXIgc2hvd0F1dGhvckluZm8gPSBmdW5jdGlvbiAoKSB7IGNvbnNvbGUubG9nKCJz
aG93QXV0aG9ySW5mbyIpOyB9OworICAgICAgdmFyIGxpc3RCb29rcyA9IGZ1bmN0aW9uICgpIHsg
Y29uc29sZS5sb2coImxpc3RCb29rcyIpOyB9OworCisgICAgICB2YXIgYWxscm91dGVzID0gZnVu
Y3Rpb24oKSB7CisgICAgICAgIHZhciByb3V0ZSA9IHdpbmRvdy5sb2NhdGlvbi5oYXNoLnNsaWNl
KDIpOworICAgICAgICB2YXIgc2VjdGlvbnMgPSAkKCdzZWN0aW9uJyk7CisgICAgICAgIHZhciBz
ZWN0aW9uOworCisgICAgICAgIHNlY3Rpb24gPSBzZWN0aW9ucy5maWx0ZXIoJ1tkYXRhLXJvdXRl
PScgKyByb3V0ZSArICddJyk7CisKKyAgICAgICAgaWYgKHNlY3Rpb24ubGVuZ3RoKSB7CisgICAg
ICAgICAgc2VjdGlvbnMuaGlkZSgyNTApOworICAgICAgICAgIHNlY3Rpb24uc2hvdygyNTApOwor
ICAgICAgICB9CisgICAgICB9OworCisgICAgICAvLworICAgICAgLy8gZGVmaW5lIHRoZSByb3V0
aW5nIHRhYmxlLgorICAgICAgLy8KKyAgICAgIHZhciByb3V0ZXMgPSB7CisgICAgICAgICcvYXV0
aG9yJzogc2hvd0F1dGhvckluZm8sCisgICAgICAgICcvYm9va3MnOiBsaXN0Qm9va3MKKyAgICAg
IH07CisKKyAgICAgIC8vCisgICAgICAvLyBpbnN0YW50aWF0ZSB0aGUgcm91dGVyLgorICAgICAg
Ly8KKyAgICAgIHZhciByb3V0ZXIgPSBSb3V0ZXIocm91dGVzKTsKKworICAgICAgLy8KKyAgICAg
IC8vIGEgZ2xvYmFsIGNvbmZpZ3VyYXRpb24gc2V0dGluZy4KKyAgICAgIC8vCisgICAgICByb3V0
ZXIuY29uZmlndXJlKHsKKyAgICAgICAgb246IGFsbHJvdXRlcworICAgICAgfSk7CisKKyAgICAg
IHJvdXRlci5pbml0KCk7CisgICAgfSk7CisgICAgPC9zY3JpcHQ+CisgIDwvaGVhZD4KKworICA8
Ym9keT4KKyAgICA8c2VjdGlvbiBkYXRhLXJvdXRlPSJhdXRob3IiPkF1dGhvciBOYW1lPC9zZWN0
aW9uPgorICAgIDxzZWN0aW9uIGRhdGEtcm91dGU9ImJvb2tzIj5Cb29rMSwgQm9vazIsIEJvb2sz
PC9zZWN0aW9uPgorICAgIDx1bD4KKyAgICAgIDxsaT48YSBocmVmPSIjL2F1dGhvciI+Iy9hdXRo
b3I8L2E+PC9saT4KKyAgICAgIDxsaT48YSBocmVmPSIjL2Jvb2tzIj4jL2Jvb2tzPC9hPjwvbGk+
CisgICAgPC91bD4KKyAgPC9ib2R5PgorPC9odG1sPgorYGBgCisKK1lvdSBjYW4gZmluZCBhIGJy
b3dzZXItc3BlY2lmaWMgYnVpbGQgb2YgYGRpcmVjdG9yYCBbaGVyZV1bMV0gd2hpY2ggaGFzIGFs
bCBvZgordGhlIHNlcnZlciBjb2RlIHN0cmlwcGVkIGF3YXkuCisKKyMjIFNlcnZlci1TaWRlIEhU
VFAgUm91dGluZworCitEaXJlY3RvciBoYW5kbGVzIHJvdXRpbmcgZm9yIEhUVFAgcmVxdWVzdHMg
c2ltaWxhciB0byBgam91cm5leWAgb3IgYGV4cHJlc3NgOgorCitgYGBqcworICAvLworICAvLyBy
ZXF1aXJlIHRoZSBuYXRpdmUgaHR0cCBtb2R1bGUsIGFzIHdlbGwgYXMgZGlyZWN0b3IuCisgIC8v
CisgIHZhciBodHRwID0gcmVxdWlyZSgnaHR0cCcpLAorICAgICAgZGlyZWN0b3IgPSByZXF1aXJl
KCdkaXJlY3RvcicpOworCisgIC8vCisgIC8vIGNyZWF0ZSBzb21lIGxvZ2ljIHRvIGJlIHJvdXRl
ZCB0by4KKyAgLy8KKyAgZnVuY3Rpb24gaGVsbG9Xb3JsZCgpIHsKKyAgICB0aGlzLnJlcy53cml0
ZUhlYWQoMjAwLCB7ICdDb250ZW50LVR5cGUnOiAndGV4dC9wbGFpbicgfSkKKyAgICB0aGlzLnJl
cy5lbmQoJ2hlbGxvIHdvcmxkJyk7CisgIH0KKworICAvLworICAvLyBkZWZpbmUgYSByb3V0aW5n
IHRhYmxlLgorICAvLworICB2YXIgcm91dGVyID0gbmV3IGRpcmVjdG9yLmh0dHAuUm91dGVyKHsK
KyAgICAnL2hlbGxvJzogeworICAgICAgZ2V0OiBoZWxsb1dvcmxkCisgICAgfQorICB9KTsKKwor
ICAvLworICAvLyBzZXR1cCBhIHNlcnZlciBhbmQgd2hlbiB0aGVyZSBpcyBhIHJlcXVlc3QsIGRp
c3BhdGNoIHRoZQorICAvLyByb3V0ZSB0aGF0IHdhcyByZXF1ZXN0ZWQgaW4gdGhlIHJlcXVlc3Qg
b2JqZWN0LgorICAvLworICB2YXIgc2VydmVyID0gaHR0cC5jcmVhdGVTZXJ2ZXIoZnVuY3Rpb24g
KHJlcSwgcmVzKSB7CisgICAgcm91dGVyLmRpc3BhdGNoKHJlcSwgcmVzLCBmdW5jdGlvbiAoZXJy
KSB7CisgICAgICBpZiAoZXJyKSB7CisgICAgICAgIHJlcy53cml0ZUhlYWQoNDA0KTsKKyAgICAg
ICAgcmVzLmVuZCgpOworICAgICAgfQorICAgIH0pOworICB9KTsKKworICAvLworICAvLyBZb3Ug
Y2FuIGFsc28gZG8gYWQtaG9jIHJvdXRpbmcsIHNpbWlsYXIgdG8gYGpvdXJuZXlgIG9yIGBleHBy
ZXNzYC4KKyAgLy8gVGhpcyBjYW4gYmUgZG9uZSB3aXRoIGEgc3RyaW5nIG9yIGEgcmVnZXhwLgor
ICAvLworICByb3V0ZXIuZ2V0KCcvYm9uam91cicsIGhlbGxvV29ybGQpOworICByb3V0ZXIuZ2V0
KC9ob2xhLywgaGVsbG9Xb3JsZCk7CisKKyAgLy8KKyAgLy8gc2V0IHRoZSBzZXJ2ZXIgdG8gbGlz
dGVuIG9uIHBvcnQgYDgwODBgLgorICAvLworICBzZXJ2ZXIubGlzdGVuKDgwODApOworYGBgCisK
KyMjIyBTZWUgQWxzbzoKKworIC0gQXV0by1nZW5lcmF0ZWQgTm9kZS5qcyBBUEkgQ2xpZW50cyBm
b3Igcm91dGVycyB1c2luZworICAgW0RpcmVjdG9yLVJlZmxlY3Rvcl0oaHR0cDovL2dpdGh1Yi5j
b20vZmxhdGlyb24vZGlyZWN0b3ItcmVmbGVjdG9yKQorIC0gUkVTVGZ1bCBSZXNvdXJjZSByb3V0
aW5nIHVzaW5nIFtyZXN0ZnVsXShodHRwOi8vZ2l0aHViLmNvbS9mbGF0aXJvbi9yZXN0ZnVsKQor
IC0gSFRNTCAvIFBsYWluIFRleHQgdmlld3Mgb2Ygcm91dGVycyB1c2luZworICAgW0RpcmVjdG9y
LUV4cGxvcmVyXShodHRwOi8vZ2l0aHViLmNvbS9mbGF0aXJvbi9kaXJlY3Rvci1leHBsb3JlcikK
KworIyMgU2VydmVyLVNpZGUgQ0xJIFJvdXRpbmcKKworRGlyZWN0b3Igc3VwcG9ydHMgQ29tbWFu
ZCBMaW5lIEludGVyZmFjZSByb3V0aW5nLiBSb3V0ZXMgZm9yIGNsaSBvcHRpb25zIGFyZQorYmFz
ZWQgb24gY29tbWFuZCBsaW5lIGlucHV0IChpLmUuIGBwcm9jZXNzLmFyZ3ZgKSBpbnN0ZWFkIG9m
IGEgVVJMLgorCitgYGAganMKKyAgdmFyIGRpcmVjdG9yID0gcmVxdWlyZSgnZGlyZWN0b3InKTsK
KworICB2YXIgcm91dGVyID0gbmV3IGRpcmVjdG9yLmNsaS5Sb3V0ZXIoKTsKKworICByb3V0ZXIu
b24oJ2NyZWF0ZScsIGZ1bmN0aW9uICgpIHsKKyAgICBjb25zb2xlLmxvZygnY3JlYXRlIHNvbWV0
aGluZycpOworICB9KTsKKworICByb3V0ZXIub24oL2Rlc3Ryb3kvLCBmdW5jdGlvbiAoKSB7Cisg
ICAgY29uc29sZS5sb2coJ2Rlc3Ryb3kgc29tZXRoaW5nJyk7CisgIH0pOworCisgIC8vIFlvdSB3
aWxsIG5lZWQgdG8gZGlzcGF0Y2ggdGhlIGNsaSBhcmd1bWVudHMgeW91cnNlbGYKKyAgcm91dGVy
LmRpc3BhdGNoKCdvbicsIHByb2Nlc3MuYXJndi5zbGljZSgyKS5qb2luKCcgJykpOworYGBgCisK
K1VzaW5nIHRoZSBjbGkgcm91dGVyLCB5b3UgY2FuIGRpc3BhdGNoIGNvbW1hbmRzIGJ5IHBhc3Np
bmcgdGhlbSBhcyBhIHN0cmluZy4KK0ZvciBleGFtcGxlLCBpZiB0aGlzIGV4YW1wbGUgaXMgaW4g
YSBmaWxlIGNhbGxlZCBgZm9vLmpzYDoKKworYGBgYmFzaAorJCBub2RlIGZvby5qcyBjcmVhdGUK
K2NyZWF0ZSBzb21ldGhpbmcKKyQgbm9kZSBmb28uanMgZGVzdHJveQorZGVzdHJveSBzb21ldGhp
bmcKK2BgYAorCisjIEFQSSBEb2N1bWVudGF0aW9uCisKKyogW0NvbnN0cnVjdG9yXSgjY29uc3Ry
dWN0b3IpCisqIFtSb3V0aW5nIFRhYmxlXSgjcm91dGluZy10YWJsZSkKKyogW0FkaG9jIFJvdXRp
bmddKCNhZGhvYy1yb3V0aW5nKQorKiBbU2NvcGVkIFJvdXRpbmddKCNzY29wZWQtcm91dGluZykK
KyogW1JvdXRpbmcgRXZlbnRzXSgjcm91dGluZy1ldmVudHMpCisqIFtDb25maWd1cmF0aW9uXSgj
Y29uZmlndXJhdGlvbikKKyogW1VSTCBNYXRjaGluZ10oI3VybC1tYXRjaGluZykKKyogW1VSTCBQ
YXJhbWV0ZXJzXSgjdXJsLXBhcmFtZXRlcnMpCisqIFtXaWxkY2FyZCByb3V0ZXNdKCN3aWxkY2Fy
ZC1yb3V0ZXMpCisqIFtSb3V0ZSBSZWN1cnNpb25dKCNyb3V0ZS1yZWN1cnNpb24pCisqIFtBc3lu
YyBSb3V0aW5nXSgjYXN5bmMtcm91dGluZykKKyogW1Jlc291cmNlc10oI3Jlc291cmNlcykKKyog
W0hpc3RvcnkgQVBJXSgjaGlzdG9yeS1hcGkpCisqIFtJbnN0YW5jZSBNZXRob2RzXSgjaW5zdGFu
Y2UtbWV0aG9kcykKKyogW0F0dGFjaCBQcm9wZXJ0aWVzIHRvIGB0aGlzYF0oI2F0dGFjaC1wcm9w
ZXJ0aWVzLXRvLXRoaXMpCisqIFtIVFRQIFN0cmVhbWluZyBhbmQgQm9keSBQYXJzaW5nXSgjaHR0
cC1zdHJlYW1pbmctYW5kLWJvZHktcGFyc2luZykKKworIyMgQ29uc3RydWN0b3IKKworYGBgIGpz
CisgIHZhciByb3V0ZXIgPSBSb3V0ZXIocm91dGVzKTsKK2BgYAorCisjIyBSb3V0aW5nIFRhYmxl
CisKK0FuIG9iamVjdCBsaXRlcmFsIHRoYXQgY29udGFpbnMgbmVzdGVkIHJvdXRlIGRlZmluaXRp
b25zLiBBIHBvdGVudGlhbGx5IG5lc3RlZAorc2V0IG9mIGtleS92YWx1ZSBwYWlycy4gVGhlIGtl
eXMgaW4gdGhlIG9iamVjdCBsaXRlcmFsIHJlcHJlc2VudCBlYWNoIHBvdGVudGlhbAorcGFydCBv
ZiB0aGUgVVJMLiBUaGUgdmFsdWVzIGluIHRoZSBvYmplY3QgbGl0ZXJhbCBjb250YWluIHJlZmVy
ZW5jZXMgdG8gdGhlCitmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgYXNzb2NpYXRlZCB3aXRoIHRo
ZW0uICpiYXJrKiBhbmQgKm1lb3cqIGFyZSB0d28KK2Z1bmN0aW9ucyB0aGF0IHlvdSBoYXZlIGRl
ZmluZWQgaW4geW91ciBjb2RlLgorCitgYGAganMKKyAgLy8KKyAgLy8gQXNzaWduIHJvdXRlcyB0
byBhbiBvYmplY3QgbGl0ZXJhbC4KKyAgLy8KKyAgdmFyIHJvdXRlcyA9IHsKKyAgICAvLworICAg
IC8vIGEgcm91dGUgd2hpY2ggYXNzaWducyB0aGUgZnVuY3Rpb24gYGJhcmtgLgorICAgIC8vCisg
ICAgJy9kb2cnOiBiYXJrLAorICAgIC8vCisgICAgLy8gYSByb3V0ZSB3aGljaCBhc3NpZ25zIHRo
ZSBmdW5jdGlvbnMgYG1lb3dgIGFuZCBgc2NyYXRjaGAuCisgICAgLy8KKyAgICAnL2NhdCc6IFtt
ZW93LCBzY3JhdGNoXQorICB9OworCisgIC8vCisgIC8vIEluc3RhbnRpYXRlIHRoZSByb3V0ZXIu
CisgIC8vCisgIHZhciByb3V0ZXIgPSBSb3V0ZXIocm91dGVzKTsKK2BgYAorCisjIyBBZGhvYyBS
b3V0aW5nCisKK1doZW4gZGV2ZWxvcGluZyBsYXJnZSBjbGllbnQtc2lkZSBvciBzZXJ2ZXItc2lk
ZSBhcHBsaWNhdGlvbnMgaXQgaXMgbm90IGFsd2F5cworcG9zc2libGUgdG8gZGVmaW5lIHJvdXRl
cyBpbiBvbmUgbG9jYXRpb24uIFVzdWFsbHkgaW5kaXZpZHVhbCBkZWNvdXBsZWQKK2NvbXBvbmVu
dHMgcmVnaXN0ZXIgdGhlaXIgb3duIHJvdXRlcyB3aXRoIHRoZSBhcHBsaWNhdGlvbiByb3V0ZXIu
IFdlIHJlZmVyIHRvCit0aGlzIGFzIF9BZGhvYyBSb3V0aW5nLl8gTGV0cyB0YWtlIGEgbG9vayBh
dCB0aGUgQVBJIGBkaXJlY3RvcmAgZXhwb3NlcyBmb3IKK2FkaG9jIHJvdXRpbmc6CisKKyoqQ2xp
ZW50LXNpZGUgUm91dGluZyoqCisKK2BgYCBqcworICB2YXIgcm91dGVyID0gbmV3IFJvdXRlcigp
LmluaXQoKTsKKworICByb3V0ZXIub24oJy9zb21lL3Jlc291cmNlJywgZnVuY3Rpb24gKCkgewor
ICAgIC8vCisgICAgLy8gRG8gc29tZXRoaW5nIG9uIGAvIy9zb21lL3Jlc291cmNlYAorICAgIC8v
CisgIH0pOworYGBgCisKKyoqSFRUUCBSb3V0aW5nKioKKworYGBgIGpzCisgIHZhciByb3V0ZXIg
PSBuZXcgZGlyZWN0b3IuaHR0cC5Sb3V0ZXIoKTsKKworICByb3V0ZXIuZ2V0KC9cL3NvbWVcL3Jl
c291cmNlLywgZnVuY3Rpb24gKCkgeworICAgIC8vCisgICAgLy8gRG8gc29tZXRoaW5nIG9uIGFu
IEdFVCB0byBgL3NvbWUvcmVzb3VyY2VgCisgICAgLy8KKyAgfSk7CitgYGAKKworIyMgU2NvcGVk
IFJvdXRpbmcKKworSW4gbGFyZ2Ugd2ViIGFwcGxpYXRpb25zLCBib3RoIFtDbGllbnQtc2lkZV0o
I2NsaWVudC1zaWRlKSBhbmQKK1tTZXJ2ZXItc2lkZV0oI2h0dHAtcm91dGluZyksIHJvdXRlcyBh
cmUgb2Z0ZW4gc2NvcGVkIHdpdGhpbiBhIGZldyBpbmRpdmlkdWFsCityZXNvdXJjZXMuIERpcmVj
dG9yIGV4cG9zZXMgYSBzaW1wbGUgd2F5IHRvIGRvIHRoaXMgZm9yIFtBZGhvYworUm91dGluZ10o
I2FkaG9jLXJvdXRpbmcpIHNjZW5hcmlvczoKKworYGBgIGpzCisgIHZhciByb3V0ZXIgPSBuZXcg
ZGlyZWN0b3IuaHR0cC5Sb3V0ZXIoKTsKKworICAvLworICAvLyBDcmVhdGUgcm91dGVzIGluc2lk
ZSB0aGUgYC91c2Vyc2Agc2NvcGUuCisgIC8vCisgIHJvdXRlci5wYXRoKC9cL3VzZXJzXC8oXHcr
KS8sIGZ1bmN0aW9uICgpIHsKKyAgICAvLworICAgIC8vIFRoZSBgdGhpc2AgY29udGV4dCBvZiB0
aGUgZnVuY3Rpb24gcGFzc2VkIHRvIGAucGF0aCgpYAorICAgIC8vIGlzIHRoZSBSb3V0ZXIgaXRz
ZWxmLgorICAgIC8vCisKKyAgICB0aGlzLnBvc3QoZnVuY3Rpb24gKGlkKSB7CisgICAgICAvLwor
ICAgICAgLy8gQ3JlYXRlIHRoZSB1c2VyIHdpdGggdGhlIHNwZWNpZmllZCBgaWRgLgorICAgICAg
Ly8KKyAgICB9KTsKKworICAgIHRoaXMuZ2V0KGZ1bmN0aW9uIChpZCkgeworICAgICAgLy8KKyAg
ICAgIC8vIFJldHJlaXZlIHRoZSB1c2VyIHdpdGggdGhlIHNwZWNpZmllZCBgaWRgLgorICAgICAg
Ly8KKyAgICB9KTsKKworICAgIHRoaXMuZ2V0KC9cL2ZyaWVuZHMvLCBmdW5jdGlvbiAoaWQpIHsK
KyAgICAgIC8vCisgICAgICAvLyBHZXQgdGhlIGZyaWVuZHMgZm9yIHRoZSB1c2VyIHdpdGggdGhl
IHNwZWNpZmllZCBgaWRgLgorICAgICAgLy8KKyAgICB9KTsKKyAgfSk7CitgYGAKKworIyMgUm91
dGluZyBFdmVudHMKKworSW4gYGRpcmVjdG9yYCwgYSAicm91dGluZyBldmVudCIgaXMgYSBuYW1l
ZCBwcm9wZXJ0eSBpbiB0aGUKK1tSb3V0aW5nIFRhYmxlXSgjcm91dGluZy10YWJsZSkgd2hpY2gg
Y2FuIGJlIGFzc2lnbmVkIHRvIGEgZnVuY3Rpb24gb3IgYW4gQXJyYXkKK29mIGZ1bmN0aW9ucyB0
byBiZSBjYWxsZWQgd2hlbiBhIHJvdXRlIGlzIG1hdGNoZWQgaW4gYSBjYWxsIHRvCitgcm91dGVy
LmRpc3BhdGNoKClgLgorCisqICoqb246KiogQSBmdW5jdGlvbiBvciBBcnJheSBvZiBmdW5jdGlv
bnMgdG8gZXhlY3V0ZSB3aGVuIHRoZSByb3V0ZSBpcyBtYXRjaGVkLgorKiAqKmJlZm9yZToqKiBB
IGZ1bmN0aW9uIG9yIEFycmF5IG9mIGZ1bmN0aW9ucyB0byBleGVjdXRlIGJlZm9yZSBjYWxsaW5n
IHRoZQorICBgb25gIG1ldGhvZChzKS4KKworKipDbGllbnQtc2lkZSBvbmx5KioKKworKiAqKmFm
dGVyOioqIEEgZnVuY3Rpb24gb3IgQXJyYXkgb2YgZnVuY3Rpb25zIHRvIGV4ZWN1dGUgd2hlbiBs
ZWF2aW5nIGEKKyAgcGFydGljdWxhciByb3V0ZS4KKyogKipvbmNlOioqIEEgZnVuY3Rpb24gb3Ig
QXJyYXkgb2YgZnVuY3Rpb25zIHRvIGV4ZWN1dGUgb25seSBvbmNlIGZvciBhCisgIHBhcnRpY3Vs
YXIgcm91dGUuCisKKyMjIENvbmZpZ3VyYXRpb24KKworR2l2ZW4gdGhlIGZsZXhpYmxlIG5hdHVy
ZSBvZiBgZGlyZWN0b3JgIHRoZXJlIGFyZSBzZXZlcmFsIG9wdGlvbnMgYXZhaWxhYmxlIGZvcgor
Ym90aCB0aGUgW0NsaWVudC1zaWRlXSgjY2xpZW50LXNpZGUpIGFuZCBbU2VydmVyLXNpZGVdKCNo
dHRwLXJvdXRpbmcpLiBUaGVzZQorb3B0aW9ucyBjYW4gYmUgc2V0IHVzaW5nIHRoZSBgLmNvbmZp
Z3VyZSgpYCBtZXRob2Q6CisKK2BgYCBqcworICB2YXIgcm91dGVyID0gbmV3IGRpcmVjdG9yLlJv
dXRlcihyb3V0ZXMpLmNvbmZpZ3VyZShvcHRpb25zKTsKK2BgYAorCitUaGUgYG9wdGlvbnNgIGFy
ZToKKworKiAqKnJlY3Vyc2U6KiogQ29udHJvbHMgW3JvdXRlIHJlY3Vyc2lvbl0oI3JvdXRlLXJl
Y3Vyc2lvbikuIFVzZSBgZm9yd2FyZGAsCisgIGBiYWNrd2FyZGAsIG9yIGBmYWxzZWAuIERlZmF1
bHQgaXMgYGZhbHNlYCBDbGllbnQtc2lkZSwgYW5kIGBiYWNrd2FyZGAKKyAgU2VydmVyLXNpZGUu
CisqICoqc3RyaWN0OioqIElmIHNldCB0byBgZmFsc2VgLCB0aGVuIHRyYWlsaW5nIHNsYXNoZXMg
KG9yIG90aGVyIGRlbGltaXRlcnMpCisgIGFyZSBhbGxvd2VkIGluIHJvdXRlcy4gRGVmYXVsdCBp
cyBgdHJ1ZWAuCisqICoqYXN5bmM6KiogQ29udHJvbHMgW2FzeW5jIHJvdXRpbmddKCNhc3luYy1y
b3V0aW5nKS4gVXNlIGB0cnVlYCBvciBgZmFsc2VgLgorICBEZWZhdWx0IGlzIGBmYWxzZWAuCisq
ICoqZGVsaW1pdGVyOioqIENoYXJhY3RlciBzZXBhcmF0b3IgYmV0d2VlbiByb3V0ZSBmcmFnbWVu
dHMuIERlZmF1bHQgaXMgYC9gLgorKiAqKm5vdGZvdW5kOioqIEEgZnVuY3Rpb24gdG8gY2FsbCBp
ZiBubyByb3V0ZSBpcyBmb3VuZCBvbiBhIGNhbGwgdG8KKyAgYHJvdXRlci5kaXNwYXRjaCgpYC4K
KyogKipvbjoqKiBBIGZ1bmN0aW9uIChvciBsaXN0IG9mIGZ1bmN0aW9ucykgdG8gY2FsbCBvbiBl
dmVyeSBjYWxsIHRvCisgIGByb3V0ZXIuZGlzcGF0Y2goKWAgd2hlbiBhIHJvdXRlIGlzIGZvdW5k
LgorKiAqKmJlZm9yZToqKiBBIGZ1bmN0aW9uIChvciBsaXN0IG9mIGZ1bmN0aW9ucykgdG8gY2Fs
bCBiZWZvcmUgZXZlcnkgY2FsbCB0bworICBgcm91dGVyLmRpc3BhdGNoKClgIHdoZW4gYSByb3V0
ZSBpcyBmb3VuZC4KKworKipDbGllbnQtc2lkZSBvbmx5KioKKworKiAqKnJlc291cmNlOioqIEFu
IG9iamVjdCB0byB3aGljaCBzdHJpbmctYmFzZWQgcm91dGVzIHdpbGwgYmUgYm91bmQuIFRoaXMg
Y2FuCisgIGJlIGVzcGVjaWFsbHkgdXNlZnVsIGZvciBsYXRlLWJpbmRpbmcgdG8gcm91dGUgZnVu
Y3Rpb25zIChzdWNoIGFzIGFzeW5jCisgIGNsaWVudC1zaWRlIHJlcXVpcmVzKS4KKyogKiphZnRl
cjoqKiBBIGZ1bmN0aW9uIChvciBsaXN0IG9mIGZ1bmN0aW9ucykgdG8gY2FsbCB3aGVuIGEgZ2l2
ZW4gcm91dGUgaXMgbm8KKyAgbG9uZ2VyIHRoZSBhY3RpdmUgcm91dGUuCisqICoqaHRtbDVoaXN0
b3J5OioqIElmIHNldCB0byBgdHJ1ZWAgYW5kIGNsaWVudCBzdXBwb3J0cyBgcHVzaFN0YXRlKClg
LCB0aGVuCisgIHVzZXMgSFRNTDUgSGlzdG9yeSBBUEkgaW5zdGVhZCBvZiBoYXNoIGZyYWdtZW50
cy4gU2VlCisgIFtIaXN0b3J5IEFQSV0oI2hpc3RvcnktYXBpKSBmb3IgbW9yZSBpbmZvcm1hdGlv
bi4KKyogKipydW5faGFuZGxlcl9pbl9pbml0OioqIElmIGBodG1sNWhpc3RvcnlgIGlzIGVuYWJs
ZWQsIHRoZSByb3V0ZSBoYW5kbGVyIGJ5CisgIGRlZmF1bHQgaXMgZXhlY3V0ZWQgdXBvbiBgUm91
dGVyLmluaXQoKWAgc2luY2Ugd2l0aCByZWFsIFVSSXMgdGhlIHJvdXRlciBjYW4KKyAgbm90IGtu
b3cgaWYgaXQgc2hvdWxkIGNhbGwgYSByb3V0ZSBoYW5kbGVyIG9yIG5vdC4gU2V0dGluZyB0aGlz
IHRvIGBmYWxzZWAKKyAgZGlzYWJsZXMgdGhlIHJvdXRlIGhhbmRsZXIgaW5pdGlhbCBleGVjdXRp
b24uCisqICoqY29udmVydF9oYXNoX2luX2luaXQ6KiogSWYgYGh0bWw1aGlzdG9yeWAgaXMgZW5h
YmxlZCwgdGhlIHdpbmRvdy5sb2NhdGlvbiBoYXNoIGJ5IGRlZmF1bHQgaXMgY29udmVydGVkIHRv
IGEgcm91dGUgdXBvbiBgUm91dGVyLmluaXQoKWAgc2luY2Ugd2l0aCBjYW5vbmljYWwgVVJJcyB0
aGUgcm91dGVyIGNhbiBub3Qga25vdyBpZiBpdCBzaG91bGQgY29udmVydCB0aGUgaGFzaCB0byBh
IHJvdXRlIG9yIG5vdC4gU2V0dGluZyB0aGlzIHRvIGBmYWxzZWAgZGlzYWJsZXMgdGhlIGhhc2gg
Y29udmVyc2lvbiBvbiByb3V0ZXIgaW5pdGlhbGlzYXRpb24uCisKKyMjIFVSTCBNYXRjaGluZwor
CitgYGAganMKKyAgdmFyIHJvdXRlciA9IFJvdXRlcih7CisgICAgLy8KKyAgICAvLyBnaXZlbiB0
aGUgcm91dGUgJy9kb2cveWVsbGEnLgorICAgIC8vCisgICAgJy9kb2cnOiB7CisgICAgICAnLzpj
b2xvcic6IHsKKyAgICAgICAgLy8KKyAgICAgICAgLy8gdGhpcyBmdW5jdGlvbiB3aWxsIHJldHVy
biB0aGUgdmFsdWUgJ3llbGxhJy4KKyAgICAgICAgLy8KKyAgICAgICAgb246IGZ1bmN0aW9uIChj
b2xvcikgeyBjb25zb2xlLmxvZyhjb2xvcikgfQorICAgICAgfQorICAgIH0KKyAgfSk7CitgYGAK
KworUm91dGVzIGNhbiBzb21ldGltZXMgYmVjb21lIHZlcnkgY29tcGxleCwgYHNpbXBsZS86dG9r
ZW5zYCBkb24ndCBhbHdheXMKK3N1ZmZpY2UuIERpcmVjdG9yIHN1cHBvcnRzIHJlZ3VsYXIgZXhw
cmVzc2lvbnMgaW5zaWRlIHRoZSByb3V0ZSBuYW1lcy4gVGhlCit2YWx1ZXMgY2FwdHVyZWQgZnJv
bSB0aGUgcmVndWxhciBleHByZXNzaW9ucyBhcmUgcGFzc2VkIHRvIHlvdXIgbGlzdGVuZXIKK2Z1
bmN0aW9uLgorCitgYGAganMKKyAgdmFyIHJvdXRlciA9IFJvdXRlcih7CisgICAgLy8KKyAgICAv
LyBnaXZlbiB0aGUgcm91dGUgJy9oZWxsby93b3JsZCcuCisgICAgLy8KKyAgICAnL2hlbGxvJzog
eworICAgICAgJy8oXFx3KyknOiB7CisgICAgICAgIC8vCisgICAgICAgIC8vIHRoaXMgZnVuY3Rp
b24gd2lsbCByZXR1cm4gdGhlIHZhbHVlICd3b3JsZCcuCisgICAgICAgIC8vCisgICAgICAgIG9u
OiBmdW5jdGlvbiAod2hvKSB7IGNvbnNvbGUubG9nKHdobykgfQorICAgICAgfQorICAgIH0KKyAg
fSk7CitgYGAKKworYGBgIGpzCisgIHZhciByb3V0ZXIgPSBSb3V0ZXIoeworICAgIC8vCisgICAg
Ly8gZ2l2ZW4gdGhlIHJvdXRlICcvaGVsbG8vd29ybGQvam9obnkvYXBwbGVzZWVkJy4KKyAgICAv
LworICAgICcvaGVsbG8nOiB7CisgICAgICAnL3dvcmxkLz8oW15cL10qKVwvKFteXC9dKikvPyc6
IGZ1bmN0aW9uIChhLCBiKSB7CisgICAgICAgIGNvbnNvbGUubG9nKGEsIGIpOworICAgICAgfQor
ICAgIH0KKyAgfSk7CitgYGAKKworIyMgVVJMIFBhcmFtZXRlcnMKKworV2hlbiB5b3UgYXJlIHVz
aW5nIHRoZSBzYW1lIHJvdXRlIGZyYWdtZW50cyBpdCBpcyBtb3JlIGRlc2NyaXB0aXZlIHRvIGRl
ZmluZQordGhlc2UgZnJhZ21lbnRzIGJ5IG5hbWUgYW5kIHRoZW4gdXNlIHRoZW0gaW4geW91cgor
W1JvdXRpbmcgVGFibGVdKCNyb3V0aW5nLXRhYmxlKSBvciBbQWRob2MgUm91dGVzXSgjYWRob2Mt
cm91dGluZykuIENvbnNpZGVyIGEKK3NpbXBsZSBleGFtcGxlIHdoZXJlIGEgYHVzZXJJZGAgaXMg
dXNlZCByZXBlYXRlZGx5LgorCitgYGAganMKKyAgLy8KKyAgLy8gQ3JlYXRlIGEgcm91dGVyLiBU
aGlzIGNvdWxkIGFsc28gYmUgZGlyZWN0b3IuY2xpLlJvdXRlcigpIG9yCisgIC8vIGRpcmVjdG9y
Lmh0dHAuUm91dGVyKCkuCisgIC8vCisgIHZhciByb3V0ZXIgPSBuZXcgZGlyZWN0b3IuUm91dGVy
KCk7CisKKyAgLy8KKyAgLy8gQSByb3V0ZSBjb3VsZCBiZSBkZWZpbmVkIHVzaW5nIHRoZSBgdXNl
cklkYCBleHBsaWNpdGx5LgorICAvLworICByb3V0ZXIub24oLyhbXHctX10rKS8sIGZ1bmN0aW9u
ICh1c2VySWQpIHsgfSk7CisKKyAgLy8KKyAgLy8gRGVmaW5lIGEgc2hvcnRoYW5kIGZvciB0aGlz
IGZyYWdtZW50IGNhbGxlZCBgdXNlcklkYC4KKyAgLy8KKyAgcm91dGVyLnBhcmFtKCd1c2VySWQn
LCAvKFtcXHdcXC1dKykvKTsKKworICAvLworICAvLyBOb3cgbXVsdGlwbGUgcm91dGVzIGNhbiBi
ZSBkZWZpbmVkIHdpdGggdGhlIHNhbWUKKyAgLy8gcmVndWxhciBleHByZXNzaW9uLgorICAvLwor
ICByb3V0ZXIub24oJy9hbnl0aGluZy86dXNlcklkJywgZnVuY3Rpb24gKHVzZXJJZCkgeyB9KTsK
KyAgcm91dGVyLm9uKCcvc29tZXRoaW5nLWVsc2UvOnVzZXJJZCcsIGZ1bmN0aW9uICh1c2VySWQp
IHsgfSk7CitgYGAKKworIyMgV2lsZGNhcmQgcm91dGVzCisKK0l0IGlzIHBvc3NpYmxlIHRvIGRl
ZmluZSB3aWxkY2FyZCByb3V0ZXMsIHNvIHRoYXQgL2ZvbyBhbmQgL2Zvby9hL2IvYyByb3V0ZXMg
dG8KK3RoZSBzYW1lIGhhbmRsZXIsIGFuZCBnZXRzIHBhc3NlZCBgIiJgIGFuZCBgImEvYi9jImAg
cmVzcGVjdGl2ZWx5LgorCitgYGAganMKKyAgcm91dGVyLm9uKCIvZm9vLz8oKFx3fC4pKikiKSwg
ZnVuY3Rpb24gKHBhdGgpIHsgfSk7CitgYGAKKworIyMgUm91dGUgUmVjdXJzaW9uCisKK0NhbiBi
ZSBhc3NpZ25lZCB0aGUgdmFsdWUgb2YgYGZvcndhcmRgIG9yIGBiYWNrd2FyZGAuIFRoZSByZWN1
cnNlIG9wdGlvbiB3aWxsCitkZXRlcm1pbmUgdGhlIG9yZGVyIGluIHdoaWNoIHRvIGZpcmUgdGhl
IGxpc3RlbmVycyB0aGF0IGFyZSBhc3NvY2lhdGVkIHdpdGgKK3lvdXIgcm91dGVzLiBJZiB0aGlz
IG9wdGlvbiBpcyBOT1Qgc3BlY2lmaWVkIG9yIHNldCB0byBudWxsLCB0aGVuIG9ubHkgdGhlCits
aXN0ZW5lcnMgYXNzb2NpYXRlZCB3aXRoIGFuIGV4YWN0IG1hdGNoIHdpbGwgYmUgZmlyZWQuCisK
KyMjIyBObyByZWN1cnNpb24sIHdpdGggdGhlIFVSTCAvZG9nL2FuZ3J5CisKK2BgYCBqcworICB2
YXIgcm91dGVzID0geworICAgICcvZG9nJzogeworICAgICAgJy9hbmdyeSc6IHsKKyAgICAgICAg
Ly8KKyAgICAgICAgLy8gT25seSB0aGlzIG1ldGhvZCB3aWxsIGJlIGZpcmVkLgorICAgICAgICAv
LworICAgICAgICBvbjogZ3Jvd2wKKyAgICAgIH0sCisgICAgICBvbjogYmFyaworICAgIH0KKyAg
fTsKKworICB2YXIgcm91dGVyID0gUm91dGVyKHJvdXRlcyk7CitgYGAKKworIyMjIFJlY3Vyc2lv
biBzZXQgdG8gYGJhY2t3YXJkYCwgd2l0aCB0aGUgVVJMIC9kb2cvYW5ncnkKKworYGBgIGpzCisg
IHZhciByb3V0ZXMgPSB7CisgICAgJy9kb2cnOiB7CisgICAgICAnL2FuZ3J5JzogeworICAgICAg
ICAvLworICAgICAgICAvLyBUaGlzIG1ldGhvZCB3aWxsIGJlIGZpcmVkIGZpcnN0LgorICAgICAg
ICAvLworICAgICAgICBvbjogZ3Jvd2wKKyAgICAgIH0sCisgICAgICAvLworICAgICAgLy8gVGhp
cyBtZXRob2Qgd2lsbCBiZSBmaXJlZCBzZWNvbmQuCisgICAgICAvLworICAgICAgb246IGJhcmsK
KyAgICB9CisgIH07CisKKyAgdmFyIHJvdXRlciA9IFJvdXRlcihyb3V0ZXMpLmNvbmZpZ3VyZSh7
IHJlY3Vyc2U6ICdiYWNrd2FyZCcgfSk7CitgYGAKKworIyMjIFJlY3Vyc2lvbiBzZXQgdG8gYGZv
cndhcmRgLCB3aXRoIHRoZSBVUkwgL2RvZy9hbmdyeQorCitgYGAganMKKyAgdmFyIHJvdXRlcyA9
IHsKKyAgICAnL2RvZyc6IHsKKyAgICAgICcvYW5ncnknOiB7CisgICAgICAgIC8vCisgICAgICAg
IC8vIFRoaXMgbWV0aG9kIHdpbGwgYmUgZmlyZWQgc2Vjb25kLgorICAgICAgICAvLworICAgICAg
ICBvbjogZ3Jvd2wKKyAgICAgIH0sCisgICAgICAvLworICAgICAgLy8gVGhpcyBtZXRob2Qgd2ls
bCBiZSBmaXJlZCBmaXJzdC4KKyAgICAgIC8vCisgICAgICBvbjogYmFyaworICAgIH0KKyAgfTsK
KworICB2YXIgcm91dGVyID0gUm91dGVyKHJvdXRlcykuY29uZmlndXJlKHsgcmVjdXJzZTogJ2Zv
cndhcmQnIH0pOworYGBgCisKKyMjIyBCcmVha2luZyBvdXQgb2YgcmVjdXJzaW9uLCB3aXRoIHRo
ZSBVUkwgL2RvZy9hbmdyeQorCitgYGAganMKKyAgdmFyIHJvdXRlcyA9IHsKKyAgICAnL2RvZyc6
IHsKKyAgICAgICcvYW5ncnknOiB7CisgICAgICAgIC8vCisgICAgICAgIC8vIFRoaXMgbWV0aG9k
IHdpbGwgYmUgZmlyZWQgZmlyc3QuCisgICAgICAgIC8vCisgICAgICAgIG9uOiBmdW5jdGlvbigp
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICB9LAorICAgICAgLy8KKyAgICAgIC8vIFRoaXMgbWV0
aG9kIHdpbGwgbm90IGJlIGZpcmVkLgorICAgICAgLy8KKyAgICAgIG9uOiBiYXJrCisgICAgfQor
ICB9OworCisgIC8vCisgIC8vIFRoaXMgZmVhdHVyZSB3b3JrcyBpbiByZXZlcnNlIHdpdGggcmVj
dXJzaW9uIHNldCB0byB0cnVlLgorICAvLworICB2YXIgcm91dGVyID0gUm91dGVyKHJvdXRlcyku
Y29uZmlndXJlKHsgcmVjdXJzZTogJ2JhY2t3YXJkJyB9KTsKK2BgYAorCisjIyBBc3luYyBSb3V0
aW5nCisKK0JlZm9yZSBkaXZpbmcgaW50byBob3cgRGlyZWN0b3IgZXhwb3NlcyBhc3luYyByb3V0
aW5nLCB5b3Ugc2hvdWxkIHVuZGVyc3RhbmQKK1tSb3V0ZSBSZWN1cnNpb25dKCNyb3V0ZS1yZWN1
cnNpb24pLiBBdCBpdCdzIGNvcmUgcm91dGUgcmVjdXJzaW9uIGlzIGFib3V0CitldmFsdWF0aW5n
IGEgc2VyaWVzIG9mIGZ1bmN0aW9ucyBnYXRoZXJlZCB3aGVuIHRyYXZlcnNpbmcgdGhlIFtSb3V0
aW5nCitUYWJsZV0oI3JvdXRpbmctdGFibGUpLgorCitOb3JtYWxseSB0aGlzIHNlcmllcyBvZiBm
dW5jdGlvbnMgaXMgZXZhbHVhdGVkIHN5bmNocm9ub3VzbHkuIEluIGFzeW5jIHJvdXRpbmcsCit0
aGVzZSBmdW5jdGlvbnMgYXJlIGV2YWx1YXRlZCBhc3luY2hyb25vdXNseS4gQXN5bmMgcm91dGlu
ZyBjYW4gYmUgZXh0cmVtZWx5Cit1c2VmdWwgYm90aCBvbiB0aGUgY2xpZW50LXNpZGUgYW5kIHRo
ZSBzZXJ2ZXItc2lkZToKKworKiAqKkNsaWVudC1zaWRlOioqIFRvIGVuc3VyZSBhbiBhbmltYXRp
b24gb3Igb3RoZXIgYXN5bmMgb3BlcmF0aW9ucyAoc3VjaCBhcworICBIVFRQIHJlcXVlc3RzIGZv
ciBhdXRoZW50aWNhdGlvbikgaGF2ZSBjb21wbGV0ZWQgYmVmb3JlIGNvbnRpbnVpbmcgZXZhbHVh
dGlvbgorICBvZiBhIHJvdXRlLgorKiAqKlNlcnZlci1zaWRlOioqIFRvIGVuc3VyZSBhcmJpdHJh
cnkgYXN5bmMgb3BlcmF0aW9ucyAoc3VjaCBhcyBwZXJmb3JtaW5nCisgIGF1dGhlbnRpY2F0aW9u
KSBoYXZlIGNvbXBsZXRlZCBiZWZvcmUgY29udGludWluZyB0aGUgZXZhbHVhdGlvbiBvZiBhIHJv
dXRlLgorCitUaGUgbWV0aG9kIHNpZ25hdHVyZXMgZm9yIHJvdXRlIGZ1bmN0aW9ucyBpbiBzeW5j
aHJvbm91cyBhbmQgYXN5bmNocm9ub3VzCitldmFsdWF0aW9uIGFyZSBkaWZmZXJlbnQ6IGFzeW5j
IHJvdXRlIGZ1bmN0aW9ucyB0YWtlIGFuIGFkZGl0aW9uYWwgYG5leHQoKWAKK2NhbGxiYWNrLgor
CisjIyMgU3luY2hyb25vdXMgcm91dGUgZnVuY3Rpb25zCisKK2BgYCBqcworICB2YXIgcm91dGVy
ID0gbmV3IGRpcmVjdG9yLlJvdXRlcigpOworCisgIHJvdXRlci5vbignLzpmb28vOmJhci86YmF6
eicsIGZ1bmN0aW9uIChmb28sIGJhciwgYmF6eikgeworICAgIC8vCisgICAgLy8gRG8gc29tZXRo
aW5nIGFzeW5jaHJvbm91cyB3aXRoIGBmb29gLCBgYmFyYCwgYW5kIGBiYXp6YC4KKyAgICAvLwor
ICB9KTsKK2BgYAorCisjIyMgQXN5bmNocm9ub3VzIHJvdXRlIGZ1bmN0aW9ucworCitgYGAganMK
KyAgdmFyIHJvdXRlciA9IG5ldyBkaXJlY3Rvci5odHRwLlJvdXRlcigpLmNvbmZpZ3VyZSh7IGFz
eW5jOiB0cnVlIH0pOworCisgIHJvdXRlci5vbignLzpmb28vOmJhci86YmF6eicsIGZ1bmN0aW9u
IChmb28sIGJhciwgYmF6eiwgbmV4dCkgeworICAgIC8vCisgICAgLy8gR28gZG8gc29tZXRoaW5n
IGFzeW5jLCBhbmQgZGV0ZXJtaW5lIHRoYXQgcm91dGluZyBzaG91bGQgc3RvcAorICAgIC8vCisg
ICAgbmV4dChmYWxzZSk7CisgIH0pOworYGBgCisKKyMjIFJlc291cmNlcworCisqKkF2YWlsYWJs
ZSBvbiB0aGUgQ2xpZW50LXNpZGUgb25seS4qKiBBbiBvYmplY3QgbGl0ZXJhbCBjb250YWluaW5n
IGZ1bmN0aW9ucy4KK0lmIGEgaG9zdCBvYmplY3QgaXMgc3BlY2lmaWVkLCB5b3VyIHJvdXRlIGRl
ZmluaXRpb25zIGNhbiBwcm92aWRlIHN0cmluZworbGl0ZXJhbHMgdGhhdCByZXByZXNlbnQgdGhl
IGZ1bmN0aW9uIG5hbWVzIGluc2lkZSB0aGUgaG9zdCBvYmplY3QuIEEgaG9zdAorb2JqZWN0IGNh
biBwcm92aWRlIHRoZSBtZWFucyBmb3IgYmV0dGVyIGVuY2Fwc3VsYXRpb24gYW5kIGRlc2lnbi4K
KworYGBgIGpzCisKKyAgdmFyIHJvdXRlciA9IFJvdXRlcih7CisKKyAgICAnL2hlbGxvJzogewor
ICAgICAgJy91c2EnOiAnYW1lcmljYXMnLAorICAgICAgJy9jaGluYSc6ICdhc2lhJworICAgIH0K
KworICB9KS5jb25maWd1cmUoeyByZXNvdXJjZTogY29udGFpbmVyIH0pLmluaXQoKTsKKworICB2
YXIgY29udGFpbmVyID0geworICAgIGFtZXJpY2FzOiBmdW5jdGlvbigpIHsgcmV0dXJuIHRydWU7
IH0sCisgICAgY2hpbmE6IGZ1bmN0aW9uKCkgeyByZXR1cm4gdHJ1ZTsgfQorICB9OworCitgYGAK
KworIyMgSGlzdG9yeSBBUEkKKworKipBdmFpbGFibGUgb24gdGhlIENsaWVudC1zaWRlIG9ubHku
KiogRGlyZWN0b3Igc3VwcG9ydHMgdXNpbmcgSFRNTDUgSGlzdG9yeQorQVBJIGluc3RlYWQgb2Yg
aGFzaCBmcmFnbWVudHMgZm9yIG5hdmlnYXRpb24uIFRvIHVzZSB0aGUgQVBJLCBwYXNzCitge2h0
bWw1aGlzdG9yeTogdHJ1ZX1gIHRvIGBjb25maWd1cmUoKWAuIFVzZSBvZiB0aGUgQVBJIGlzIGVu
YWJsZWQgb25seSBpZiB0aGUKK2NsaWVudCBzdXBwb3J0cyBgcHVzaFN0YXRlKClgLgorCitVc2lu
ZyB0aGUgQVBJIGdpdmVzIHlvdSBjbGVhbmVyIFVSSXMgYnV0IHRoZXkgY29tZSB3aXRoIGEgY29z
dC4gVW5saWtlIHdpdGgKK2hhc2ggZnJhZ21lbnRzIHlvdXIgcm91dGUgVVJJcyBtdXN0IGV4aXN0
LiBXaGVuIHRoZSBjbGllbnQgZW50ZXJzIGEgcGFnZSwgc2F5CitodHRwOi8vZm9vLmNvbS9iYXIv
YmF6LCB0aGUgd2ViIHNlcnZlciBtdXN0IHJlc3BvbmQgd2l0aCBzb21ldGhpbmcgbWVhbmluZ2Z1
bC4KK1VzdWFsbHkgdGhpcyBtZWFucyB0aGF0IHlvdXIgd2ViIHNlcnZlciBjaGVja3MgdGhlIFVS
SSBwb2ludHMgdG8gc29tZXRoaW5nCit0aGF0LCBpbiBhIHNlbnNlLCBleGlzdHMsIGFuZCB0aGVu
IHNlcnZlcyB0aGUgY2xpZW50IHRoZSBKYXZhU2NyaXB0CithcHBsaWNhdGlvbi4KKworSWYgeW91
J3JlIGFmdGVyIGEgc2luZ2xlLXBhZ2UgYXBwbGljYXRpb24geW91IGNhbiBub3QgdXNlIHBsYWlu
IG9sZCBgPGEKK2hyZWY9Ii9iYXIvYmF6Ij5gIHRhZ3MgZm9yIG5hdmlnYXRpb24gYW55bW9yZS4g
V2hlbiBzdWNoIGxpbmsgaXMgY2xpY2tlZCwgd2ViCiticm93c2VycyB0cnkgdG8gYXNrIGZvciB0
aGUgcmVzb3VyY2UgZnJvbSBzZXJ2ZXIgd2hpY2ggaXMgbm90IG9mIGNvdXJzZSBkZXNpcmVkCitm
b3IgYSBzaW5nbGUtcGFnZSBhcHBsaWNhdGlvbi4gSW5zdGVhZCB5b3UgbmVlZCB0byB1c2UgZS5n
LiBjbGljayBoYW5kbGVycyBhbmQKK2NhbGwgdGhlIGBzZXRSb3V0ZSgpYCBtZXRob2QgeW91cnNl
bGYuCisKKyMjIEF0dGFjaCBQcm9wZXJ0aWVzIFRvIGB0aGlzYAorCisqKkF2YWlsYWJsZSBpbiB0
aGUgaHR0cCByb3V0ZXIgb25seS4qKiBHZW5lcmFsbHksIHRoZSBgdGhpc2Agb2JqZWN0IGJvdW5k
IHRvCityb3V0ZSBoYW5kbGVycywgd2lsbCBjb250YWluIHRoZSByZXF1ZXN0IGluIGB0aGlzLnJl
cWAgYW5kIHRoZSByZXNwb25zZSBpbgorYHRoaXMucmVzYC4gT25lIG1heSBhdHRhY2ggYWRkaXRp
b25hbCBwcm9wZXJ0aWVzIHRvIGB0aGlzYCB3aXRoIHRoZQorYHJvdXRlci5hdHRhY2hgIG1ldGhv
ZDoKKworYGBganMKKyAgdmFyIGRpcmVjdG9yID0gcmVxdWlyZSgnZGlyZWN0b3InKTsKKworICB2
YXIgcm91dGVyID0gbmV3IGRpcmVjdG9yLmh0dHAuUm91dGVyKCkuY29uZmlndXJlKG9wdGlvbnMp
OworCisgIC8vCisgIC8vIEF0dGFjaCBwcm9wZXJ0aWVzIHRvIGB0aGlzYAorICAvLworICByb3V0
ZXIuYXR0YWNoKGZ1bmN0aW9uICgpIHsKKyAgICB0aGlzLmRhdGEgPSBbMSwyLDNdOworICB9KTsK
KworICAvLworICAvLyBBY2Nlc3MgcHJvcGVydGllcyBhdHRhY2hlZCB0byBgdGhpc2AgaW4geW91
ciByb3V0ZXMhCisgIC8vCisgIHJvdXRlci5nZXQoJy9oZWxsbycsIGZ1bmN0aW9uICgpIHsKKyAg
ICB0aGlzLnJlcy53cml0ZUhlYWQoMjAwLCB7ICdjb250ZW50LXR5cGUnOiAndGV4dC9wbGFpbicg
fSk7CisKKyAgICAvLworICAgIC8vIFJlc3BvbnNlIHdpbGwgYmUgYFsxLDIsM11gIQorICAgIC8v
CisgICAgdGhpcy5yZXMuZW5kKHRoaXMuZGF0YSk7CisgIH0pOworYGBgCisKK1RoaXMgQVBJIG1h
eSBiZSB1c2VkIHRvIGF0dGFjaCBjb252ZW5pZW5jZSBtZXRob2RzIHRvIHRoZSBgdGhpc2AgY29u
dGV4dCBvZgorcm91dGUgaGFuZGxlcnMuCisKKyMjIEhUVFAgU3RyZWFtaW5nIGFuZCBCb2R5IFBh
cnNpbmcKKworV2hlbiB5b3UgYXJlIHBlcmZvcm1pbmcgSFRUUCByb3V0aW5nIHRoZXJlIGFyZSB0
d28gY29tbW9uIHNjZW5hcmlvczoKKworKiBCdWZmZXIgdGhlIHJlcXVlc3QgYm9keSBhbmQgcGFy
c2UgaXQgYWNjb3JkaW5nIHRvIHRoZSBgQ29udGVudC1UeXBlYCBoZWFkZXIKKyAgKHVzdWFsbHkg
YGFwcGxpY2F0aW9uL2pzb25gIG9yIGBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRg
KS4KKyogU3RyZWFtIHRoZSByZXF1ZXN0IGJvZHkgYnkgbWFudWFsbHkgY2FsbGluZyBgLnBpcGVg
IG9yIGxpc3RlbmluZyB0byB0aGUKKyAgYGRhdGFgIGFuZCBgZW5kYCBldmVudHMuCisKK0J5IGRl
ZmF1bHQgYGRpcmVjdG9yLmh0dHAuUm91dGVyKClgIHdpbGwgYXR0ZW1wdCB0byBwYXJzZSBlaXRo
ZXIgdGhlIGAuY2h1bmtzYAorb3IgYC5ib2R5YCBwcm9wZXJ0aWVzIHNldCBvbiB0aGUgcmVxdWVz
dCBwYXJhbWV0ZXIgcGFzc2VkIHRvCitgcm91dGVyLmRpc3BhdGNoKHJlcXVlc3QsIHJlc3BvbnNl
LCBjYWxsYmFjaylgLiBUaGUgcm91dGVyIGluc3RhbmNlIHdpbGwgYWxzbword2FpdCBmb3IgdGhl
IGBlbmRgIGV2ZW50IGJlZm9yZSBmaXJpbmcgYW55IHJvdXRlcy4KKworKipEZWZhdWx0IEJlaGF2
aW9yKioKKworYGBgIGpzCisgIHZhciBkaXJlY3RvciA9IHJlcXVpcmUoJ2RpcmVjdG9yJyk7CisK
KyAgdmFyIHJvdXRlciA9IG5ldyBkaXJlY3Rvci5odHRwLlJvdXRlcigpOworCisgIHJvdXRlci5n
ZXQoJy8nLCBmdW5jdGlvbiAoKSB7CisgICAgLy8KKyAgICAvLyBUaGlzIHdpbGwgbm90IHdvcmss
IGJlY2F1c2UgYWxsIG9mIHRoZSBkYXRhCisgICAgLy8gZXZlbnRzIGFuZCB0aGUgZW5kIGV2ZW50
IGhhdmUgYWxyZWFkeSBmaXJlZC4KKyAgICAvLworICAgIHRoaXMucmVxLm9uKCdkYXRhJywgZnVu
Y3Rpb24gKGNodW5rKSB7CisgICAgICBjb25zb2xlLmxvZyhjaHVuaykKKyAgICB9KTsKKyAgfSk7
CitgYGAKKworSW4gW2ZsYXRpcm9uXVsyXSwgYGRpcmVjdG9yYCBpcyB1c2VkIGluIGNvbmp1bmN0
aW9uIHdpdGggW3VuaW9uXVszXSB3aGljaCB1c2VzCithIGBCdWZmZXJlZFN0cmVhbWAgcHJveHkg
dG8gdGhlIHJhdyBgaHR0cC5SZXF1ZXN0YCBpbnN0YW5jZS4gW3VuaW9uXVszXSB3aWxsCitzZXQg
dGhlIGByZXEuY2h1bmtzYCBwcm9wZXJ0eSBmb3IgeW91IGFuZCBkaXJlY3RvciB3aWxsIGF1dG9t
YXRpY2FsbHkgcGFyc2UgdGhlCitib2R5LiBJZiB5b3Ugd2lzaCB0byBwZXJmb3JtIHRoaXMgYnVm
ZmVyaW5nIHlvdXJzZWxmIGRpcmVjdGx5IHdpdGggYGRpcmVjdG9yYAoreW91IGNhbiB1c2UgYSBz
aW1wbGUgcmVxdWVzdCBoYW5kbGVyIGluIHlvdXIgaHR0cCBzZXJ2ZXI6CisKK2BgYCBqcworICB2
YXIgaHR0cCA9IHJlcXVpcmUoJ2h0dHAnKSwKKyAgICAgIGRpcmVjdG9yID0gcmVxdWlyZSgnZGly
ZWN0b3InKTsKKworICB2YXIgcm91dGVyID0gbmV3IGRpcmVjdG9yLmh0dHAuUm91dGVyKCk7CisK
KyAgdmFyIHNlcnZlciA9IGh0dHAuY3JlYXRlU2VydmVyKGZ1bmN0aW9uIChyZXEsIHJlcykgewor
ICAgIHJlcS5jaHVua3MgPSBbXTsKKyAgICByZXEub24oJ2RhdGEnLCBmdW5jdGlvbiAoY2h1bmsp
IHsKKyAgICAgIHJlcS5jaHVua3MucHVzaChjaHVuay50b1N0cmluZygpKTsKKyAgICB9KTsKKwor
ICAgIHJvdXRlci5kaXNwYXRjaChyZXEsIHJlcywgZnVuY3Rpb24gKGVycikgeworICAgICAgaWYg
KGVycikgeworICAgICAgICByZXMud3JpdGVIZWFkKDQwNCk7CisgICAgICAgIHJlcy5lbmQoKTsK
KyAgICAgIH0KKworICAgICAgY29uc29sZS5sb2coJ1NlcnZlZCAnICsgcmVxLnVybCk7CisgICAg
fSk7CisgIH0pOworCisgIHJvdXRlci5wb3N0KCcvJywgZnVuY3Rpb24gKCkgeworICAgIHRoaXMu
cmVzLndyaXRlSGVhZCgyMDAsIHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9
KQorICAgIHRoaXMucmVzLmVuZChKU09OLnN0cmluZ2lmeSh0aGlzLnJlcS5ib2R5KSk7CisgIH0p
OworYGBgCisKKyoqU3RyZWFtaW5nIFN1cHBvcnQqKgorCitJZiB5b3Ugd2lzaCB0byBnZXQgYWNj
ZXNzIHRvIHRoZSByZXF1ZXN0IHN0cmVhbSBiZWZvcmUgdGhlIGBlbmRgIGV2ZW50IGlzCitmaXJl
ZCwgeW91IGNhbiBwYXNzIHRoZSBgeyBzdHJlYW06IHRydWUgfWAgb3B0aW9ucyB0byB0aGUgcm91
dGUuCisKK2BgYCBqcworICB2YXIgZGlyZWN0b3IgPSByZXF1aXJlKCdkaXJlY3RvcicpOworCisg
IHZhciByb3V0ZXIgPSBuZXcgZGlyZWN0b3IuaHR0cC5Sb3V0ZXIoKTsKKworICByb3V0ZXIuZ2V0
KCcvJywgeyBzdHJlYW06IHRydWUgfSwgZnVuY3Rpb24gKCkgeworICAgIC8vCisgICAgLy8gVGhp
cyB3aWxsIHdvcmsgYmVjYXVzZSB0aGUgcm91dGUgaGFuZGxlciBpcyBpbnZva2VkCisgICAgLy8g
aW1tZWRpYXRlbHkgd2l0aG91dCB3YWl0aW5nIGZvciB0aGUgYGVuZGAgZXZlbnQuCisgICAgLy8K
KyAgICB0aGlzLnJlcS5vbignZGF0YScsIGZ1bmN0aW9uIChjaHVuaykgeworICAgICAgY29uc29s
ZS5sb2coY2h1bmspOworICAgIH0pOworICB9KTsKK2BgYAorCisjIyBJbnN0YW5jZSBtZXRob2Rz
CisKKyMjIyBjb25maWd1cmUob3B0aW9ucykKKworKiBgb3B0aW9uc2Age09iamVjdH06IE9wdGlv
bnMgdG8gY29uZmlndXJlIHRoaXMgaW5zdGFuY2Ugd2l0aC4KKworQ29uZmlndXJlcyB0aGUgUm91
dGVyIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBgb3B0aW9uc2AuIFNlZQorW0NvbmZpZ3Vy
YXRpb25dKCNjb25maWd1cmF0aW9uKSBmb3IgbW9yZSBkb2N1bWVudGF0aW9uLgorCisjIyMgcGFy
YW0odG9rZW4sIG1hdGNoZXIpCisKKyogdG9rZW4ge3N0cmluZ306IE5hbWVkIHBhcmFtZXRlciB0
b2tlbiB0byBzZXQgdG8gdGhlIHNwZWNpZmllZCBgbWF0Y2hlcmAKKyogbWF0Y2hlciB7c3RyaW5n
fFJlZ2V4cH06IE1hdGNoZXIgZm9yIHRoZSBzcGVjaWZpZWQgYHRva2VuYC4KKworQWRkcyBhIHJv
dXRlIGZyYWdtZW50IGZvciB0aGUgZ2l2ZW4gc3RyaW5nIGB0b2tlbmAgdG8gdGhlIHNwZWNpZmll
ZCByZWdleAorYG1hdGNoZXJgIHRvIHRoaXMgUm91dGVyIGluc3RhbmNlLiBTZWUgW1VSTCBQYXJh
bWV0ZXJzXSgjdXJsLXBhcmFtZXRlcnMpIGZvciBtb3JlCitkb2N1bWVudGF0aW9uLgorCisjIyMg
b24obWV0aG9kLCBwYXRoLCByb3V0ZSkKKworKiBgbWV0aG9kYCB7c3RyaW5nfTogTWV0aG9kIHRv
IGluc2VydCB3aXRoaW4gdGhlIFJvdXRpbmcgVGFibGUgKGUuZy4gYG9uYCwKKyAgYGdldGAsIGV0
Yy4pLgorKiBgcGF0aGAge3N0cmluZ306IFBhdGggd2l0aGluIHRoZSBSb3V0aW5nIFRhYmxlIHRv
IHNldCB0aGUgYHJvdXRlYCB0by4KKyogYHJvdXRlYCB7ZnVuY3Rpb258QXJyYXl9OiBSb3V0ZSBo
YW5kbGVyIHRvIGludm9rZSBmb3IgdGhlIGBtZXRob2RgIGFuZCBgcGF0aGAuCisKK0FkZHMgdGhl
IGByb3V0ZWAgaGFuZGxlciBmb3IgdGhlIHNwZWNpZmllZCBgbWV0aG9kYCBhbmQgYHBhdGhgIHdp
dGhpbiB0aGUKK1tSb3V0aW5nIFRhYmxlXSgjcm91dGluZy10YWJsZSkuCisKKyMjIyBwYXRoKHBh
dGgsIHJvdXRlc0ZuKQorCisqIGBwYXRoYCB7c3RyaW5nfFJlZ2V4cH06IFNjb3BlIHdpdGhpbiB0
aGUgUm91dGluZyBUYWJsZSB0byBpbnZva2UgdGhlCisgIGByb3V0ZXNGbmAgd2l0aGluLgorKiBg
cm91dGVzRm5gIHtmdW5jdGlvbn06IEFkaG9jIFJvdXRpbmcgZnVuY3Rpb24gd2l0aCBjYWxscyB0
byBgdGhpcy5vbigpYCwKKyAgYHRoaXMuZ2V0KClgIGV0Yy4KKworSW52b2tlcyB0aGUgYHJvdXRl
c0ZuYCB3aXRoaW4gdGhlIHNjb3BlIG9mIHRoZSBzcGVjaWZpZWQgYHBhdGhgIGZvciB0aGlzIFJv
dXRlcgoraW5zdGFuY2UuCisKKyMjIyBkaXNwYXRjaChtZXRob2QsIHBhdGhbLCBjYWxsYmFja10p
CisKKyogbWV0aG9kIHtzdHJpbmd9OiBNZXRob2QgdG8gaW52b2tlIGhhbmRsZXJzIGZvciB3aXRo
aW4gdGhlIFJvdXRpbmcgVGFibGUKKyogcGF0aCB7c3RyaW5nfTogUGF0aCB3aXRoaW4gdGhlIFJv
dXRpbmcgVGFibGUgdG8gbWF0Y2gKKyogY2FsbGJhY2sge2Z1bmN0aW9ufTogSW52b2tlZCBvbmNl
IGFsbCByb3V0ZSBoYW5kbGVycyBoYXZlIGJlZW4gY2FsbGVkLgorCitEaXNwYXRjaGVzIHRoZSBy
b3V0ZSBoYW5kbGVycyBtYXRjaGVkIHdpdGhpbiB0aGUgW1JvdXRpbmcgVGFibGVdKCNyb3V0aW5n
LXRhYmxlKQorZm9yIHRoaXMgaW5zdGFuY2UgZm9yIHRoZSBzcGVjaWZpZWQgYG1ldGhvZGAgYW5k
IGBwYXRoYC4KKworIyMjIG1vdW50KHJvdXRlcywgcGF0aCkKKworKiByb3V0ZXMge29iamVjdH06
IFBhcnRpYWwgcm91dGluZyB0YWJsZSB0byBpbnNlcnQgaW50byB0aGlzIGluc3RhbmNlLgorKiBw
YXRoIHtzdHJpbmd8UmVnZXhwfTogUGF0aCB3aXRoaW4gdGhlIFJvdXRpbmcgVGFibGUgdG8gaW5z
ZXJ0IHRoZSBgcm91dGVzYAorICBpbnRvLgorCitJbnNlcnRzIHRoZSBwYXJ0aWFsIFtSb3V0aW5n
IFRhYmxlXSgjcm91dGluZy10YWJsZSksIGByb3V0ZXNgLCBpbnRvIHRoZSBSb3V0aW5nCitUYWJs
ZSBmb3IgdGhpcyBSb3V0ZXIgaW5zdGFuY2UgYXQgdGhlIHNwZWNpZmllZCBgcGF0aGAuCisKKyMj
IEluc3RhbmNlIG1ldGhvZHMgKENsaWVudC1zaWRlIG9ubHkpCisKKyMjIyBpbml0KFtyZWRpcmVj
dF0pCisKKyogYHJlZGlyZWN0YCB7U3RyaW5nfTogVGhpcyB2YWx1ZSB3aWxsIGJlIHVzZWQgaWYg
Jy8jLycgaXMgbm90IGZvdW5kIGluIHRoZQorICBVUkwuIChlLmcuLCBpbml0KCcvJykgd2lsbCBy
ZXNvbHZlIHRvICcvIy8nLCBpbml0KCdmb28nKSB3aWxsIHJlc29sdmUgdG8KKyAgJy8jZm9vJyku
CisKK0luaXRpYWxpemUgdGhlIHJvdXRlciwgc3RhcnQgbGlzdGVuaW5nIGZvciBjaGFuZ2VzIHRv
IHRoZSBVUkwuCisKKyMjIyBnZXRSb3V0ZShbaW5kZXhdKQorCisqIGBpbmRleGAge051bWJlcn06
IFRoZSBoYXNoIHZhbHVlIGlzIGRpdmlkZWQgYnkgZm9yd2FyZCBzbGFzaGVzLCBlYWNoIHNlY3Rp
b24KKyAgdGhlbiBoYXMgYW4gaW5kZXgsIGlmIHRoaXMgaXMgcHJvdmlkZWQsIG9ubHkgdGhhdCBz
ZWN0aW9uIG9mIHRoZSByb3V0ZSB3aWxsCisgIGJlIHJldHVybmVkLgorCitSZXR1cm5zIHRoZSBl
bnRpcmUgcm91dGUgb3IganVzdCBhIHNlY3Rpb24gb2YgaXQuCisKKyMjIyBzZXRSb3V0ZShyb3V0
ZSkKKworKiBgcm91dGVgIHtTdHJpbmd9OiBTdXBwbHkgYSByb3V0ZSB2YWx1ZSwgc3VjaCBhcyBg
aG9tZS9zdGF0c2AuCisKK1NldCB0aGUgY3VycmVudCByb3V0ZS4KKworIyMjIHNldFJvdXRlKHN0
YXJ0LCBsZW5ndGgpCisKKyogYHN0YXJ0YCB7TnVtYmVyfSAtIFRoZSBwb3NpdGlvbiBhdCB3aGlj
aCB0byBzdGFydCByZW1vdmluZyBpdGVtcy4KKyogYGxlbmd0aGAge051bWJlcn0gLSBUaGUgbnVt
YmVyIG9mIGl0ZW1zIHRvIHJlbW92ZSBmcm9tIHRoZSByb3V0ZS4KKworUmVtb3ZlIGEgc2VnbWVu
dCBmcm9tIHRoZSBjdXJyZW50IHJvdXRlLgorCisjIyMgc2V0Um91dGUoaW5kZXgsIHZhbHVlKQor
CisqIGBpbmRleGAge051bWJlcn0gLSBUaGUgaGFzaCB2YWx1ZSBpcyBkaXZpZGVkIGJ5IGZvcndh
cmQgc2xhc2hlcywgZWFjaCBzZWN0aW9uCisgIHRoZW4gaGFzIGFuIGluZGV4LgorKiBgdmFsdWVg
IHtTdHJpbmd9IC0gVGhlIG5ldyB2YWx1ZSB0byBhc3NpZ24gdGhlIHRoZSBwb3NpdGlvbiBpbmRp
Y2F0ZWQgYnkgdGhlCisgIGZpcnN0IHBhcmFtZXRlci4KKworU2V0IGEgc2VnbWVudCBvZiB0aGUg
Y3VycmVudCByb3V0ZS4KKworIyBGcmVxdWVudGx5IEFza2VkIFF1ZXN0aW9ucworCisjIyBXaGF0
IEFib3V0IFNFTz8KKworSXMgdXNpbmcgYSBDbGllbnQtc2lkZSByb3V0ZXIgYSBwcm9ibGVtIGZv
ciBTRU8/IFllcy4gSWYgYWR2ZXJ0aXNpbmcgaXMgYQorcmVxdWlyZW1lbnQsIHlvdSBhcmUgcHJv
YmFibHkgYnVpbGRpbmcgYSAiV2ViIFBhZ2UiIGFuZCBub3QgYSAiV2ViCitBcHBsaWNhdGlvbiIu
IERpcmVjdG9yIG9uIHRoZSBjbGllbnQgaXMgbWVhbnQgZm9yIHNjcmlwdC1oZWF2eSBXZWIKK0Fw
cGxpY2F0aW9ucy4KKworIyMjIyMgTElDRU5TRTogTUlUCisjIyMjIyBBdXRob3I6IFtDaGFybGll
IFJvYmJpbnNdKGh0dHBzOi8vZ2l0aHViLmNvbS9pbmRleHplcm8pCisjIyMjIyBDb250cmlidXRv
cnM6IFtQYW9sbyBGcmFnb21lbmldKGh0dHBzOi8vZ2l0aHViLmNvbS9oaWoxbngpCisKK1swXTog
aHR0cDovL2dpdGh1Yi5jb20vZmxhdGlyb24vZGlyZWN0b3IKK1sxXTogaHR0cHM6Ly9naXRodWIu
Y29tL2ZsYXRpcm9uL2RpcmVjdG9yL2Jsb2IvbWFzdGVyL2J1aWxkL2RpcmVjdG9yLm1pbi5qcwor
WzJdOiBodHRwOi8vZ2l0aHViLmNvbS9mbGF0aXJvbi9mbGF0aXJvbgorWzNdOiBodHRwOi8vZ2l0
aHViLmNvbS9mbGF0aXJvbi91bmlvbgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25v
ZGVfbW9kdWxlcy9kaXJlY3Rvci9iaW4vYnVpbGQgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9t
b2R1bGVzL2RpcmVjdG9yL2Jpbi9idWlsZApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMDU0MjI2ZmFkODMwMjM0Yjk2
MzFiNmY4YmM0MzdhZTdlMTdhOTkwCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1
ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9iaW4vYnVpbGQKQEAgLTAsMCArMSw4MSBAQAorIyEv
dXNyL2Jpbi9lbnYgbm9kZQorCit2YXIgQ29kZXN1cmdlb24gPSByZXF1aXJlKCdjb2Rlc3VyZ2Vv
bicpLkNvZGVzdXJnZW9uOwordmFyIHN1cmdlb24gPSBuZXcgQ29kZXN1cmdlb24oKTsKKwordmFy
IHBhdGggICAgPSByZXF1aXJlKCdwYXRoJyk7CisKK3ZhciByb290ICAgID0gcGF0aC5qb2luKF9f
ZGlybmFtZSwgJy4uJyk7Cit2YXIgbGliICAgICA9IHBhdGguam9pbihyb290LCAnbGliJywgJ2Rp
cmVjdG9yJyk7CisKKy8vCisvLyBEaXN0aWxsIGFuZCBwYWNrYWdlIHRoZSBicm93c2VyIHZlcnNp
b24uCisvLworc3VyZ2VvbgorICAvLworICAuY29uZmlndXJlKHsKKyAgICBwYWNrYWdlOiByb290
ICsgJy9wYWNrYWdlLmpzb24nLAorICAgIG93bmVyOiAnQ2hhcmxpZSBSb2JiaW5zLCBQYW9sbyBG
cmFnb21lbmkgJiB0aGUgQ29udHJpYnV0b3JzIChVc2luZyBDb2Rlc3VyZ2VvbikuJywKKyAgICBu
b1ZlcnNpb246IHRydWUKKyAgfSkKKyAgLnJlYWQoCisgICAgcGF0aC5qb2luKGxpYiwgJ2Jyb3dz
ZXIuanMnKQorICApCisgIC8vCisgIC8vIFdlIHdhbnQgZXZlcnl0aGluZyBzbyBmYXIuIHNwZWNp
ZnkgZXh0cmFjdCB3aXRoIG5vCisgIC8vIHBhcmFtZXRlcnMgdG8gZ2V0IGV2ZXJ5dGhpbmcgaW50
byB0aGUgb3V0cHV0IGJ1ZmZlci4KKyAgLy8KKyAuZXh0cmFjdCgpCisgIC8vCisgIC8vIENsZWFy
IHRoZSBpbnB1dCBzbyBmYXIsIGJ1dCBkb24ndCBjbGVhciB0aGUgb3V0cHV0LgorICAvLworICAu
Y2xlYXIoJ2lucHV0cycpCisgIC8vCisgIC8vIFJlYWQgdGhlIGByb3V0ZXIuanNgIGZpbGUKKyAg
Ly8KKyAgLnJlYWQoCisgICAgcGF0aC5qb2luKGxpYiwgJ3JvdXRlci5qcycpCisgICkKKyAgLy8K
KyAgLy8gVGhlIGN1cnJlbnQgaW5wdXQgYnVmZmVyIGNvbnRhaW5zIHN0dWZmIHRoYXQgd2UgZG9u
dAorICAvLyB3YW50IGluIHRoZSBicm93c2VyIGJ1aWxkLCBzbyBsZXQncyBjaGVycnkgcGljayBm
cm9tCisgIC8vIHRoZSBidWZmZXIuCisgIC8vCisgIC5leHRyYWN0KAorICAgICdfZXZlcnknLAor
ICAgICdfZmxhdHRlbicsCisgICAgJ19hc3luY0V2ZXJ5U2VyaWVzJywKKyAgICAncGFyYW1pZnlT
dHJpbmcnLAorICAgICdyZWdpZnlTdHJpbmcnLAorICAgICd0ZXJtaW5hdG9yJywKKyAgICAnUVVF
UllfU0VQQVJBVE9SJywKKyAgICAnUm91dGVyLnByb3RvdHlwZS5jb25maWd1cmUnLAorICAgICdS
b3V0ZXIucHJvdG90eXBlLnBhcmFtJywKKyAgICAnUm91dGVyLnByb3RvdHlwZS5vbicsCisgICAg
J1JvdXRlci5wcm90b3R5cGUucGF0aCcsCisgICAgJ1JvdXRlci5wcm90b3R5cGUuZGlzcGF0Y2gn
LAorICAgICdSb3V0ZXIucHJvdG90eXBlLmludm9rZScsCisgICAgJ1JvdXRlci5wcm90b3R5cGUu
dHJhdmVyc2UnLAorICAgICdSb3V0ZXIucHJvdG90eXBlLmluc2VydCcsCisgICAgJ1JvdXRlci5w
cm90b3R5cGUuaW5zZXJ0RXgnLAorICAgICdSb3V0ZXIucHJvdG90eXBlLmV4dGVuZCcsCisgICAg
J1JvdXRlci5wcm90b3R5cGUucnVubGlzdCcsCisgICAgJ1JvdXRlci5wcm90b3R5cGUubW91bnQn
CisgICkKKyAgLy8KKyAgLy8gV3JhcCBldmVyeXRoaW5nIHRoYXQgaXMgaW4gdGhlIGN1cnJlbnQg
YnVmZmVyIHdpdGggYQorICAvLyBjbG9zdXJlIHNvIHRoYXQgd2UgZG9uJ3QgZ2V0IGFueSBjb2xs
aXNpb25zIHdpdGggb3RoZXIKKyAgLy8gbGlicmFyaWVzLgorICAvLworICAud3JhcCgpCisgIC8v
CisgIC8vIFdyaXRlIHRoZSBkZWJ1Z2dhYmxlIHZlcnNpb24gb2YgdGhlIGZpbGUuIFRoaXMgZmls
ZSB3aWxsCisgIC8vIGdldCByZW5hbWVkIHRvIGluY2x1ZGUgdGhlIHZlcnNpb24gZnJvbSB0aGUg
cGFja2FnZS5qc29uLgorICAvLworICAud3JpdGUocm9vdCArICcvYnVpbGQvZGlyZWN0b3IuanMn
KQorICAvLworICAvLyBNYWtlIGEgbWluaWZpZWQgdmVyc2lvbiBmb3IgcHJvZHVjdGlvbiB1c2Uu
CisgIC8vCisgIC51Z2xpZnkoKQorICAud3JpdGUocm9vdCArICcvYnVpbGQvZGlyZWN0b3IubWlu
LmpzJykKKzsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGly
ZWN0b3IvYm93ZXIuanNvbiBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0
b3IvYm93ZXIuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOTM5YmI0NzBlZDY0ZGIxMTFhYWE4YzYzM2QyMzJm
YTllYmZjZjA0Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9k
dWxlcy9kaXJlY3Rvci9ib3dlci5qc29uCkBAIC0wLDAgKzEsOSBAQAoreworICAibmFtZSI6ICJk
aXJlY3RvciIsCisgICJ2ZXJzaW9uIjogIjEuMi43IiwKKyAgImRlcGVuZGVuY2llcyI6IHt9LAor
ICAibWFpbiI6ICJidWlsZC9kaXJlY3Rvci5qcyIsCisgICJzY3JpcHRzIjogWworICAgICJidWls
ZC9kaXJlY3Rvci5qcyIKKyAgXQorfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25v
ZGVfbW9kdWxlcy9kaXJlY3Rvci9leGFtcGxlcy9odHRwLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5
L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9leGFtcGxlcy9odHRwLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRlN2Ex
ZDcyMDhjYzczOGM3Y2JmM2FmNmJkOWY4YjMxYTQ4YTk5MmMKLS0tIC9kZXYvbnVsbAorKysgYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL2V4YW1wbGVzL2h0dHAuanMK
QEAgLTAsMCArMSwzMyBAQAordmFyIGh0dHAgPSByZXF1aXJlKCdodHRwJyksCisgICAgZGlyZWN0
b3IgPSByZXF1aXJlKCcuLi9saWIvZGlyZWN0b3InKTsKKwordmFyIHJvdXRlciA9IG5ldyBkaXJl
Y3Rvci5odHRwLlJvdXRlcigpOworCit2YXIgc2VydmVyID0gaHR0cC5jcmVhdGVTZXJ2ZXIoZnVu
Y3Rpb24gKHJlcSwgcmVzKSB7CisgIHJlcS5jaHVua3MgPSBbXTsKKyAgcmVxLm9uKCdkYXRhJywg
ZnVuY3Rpb24gKGNodW5rKSB7CisgICAgcmVxLmNodW5rcy5wdXNoKGNodW5rLnRvU3RyaW5nKCkp
OworICB9KTsKKworICByb3V0ZXIuZGlzcGF0Y2gocmVxLCByZXMsIGZ1bmN0aW9uIChlcnIpIHsK
KyAgICBpZiAoZXJyKSB7CisgICAgICByZXMud3JpdGVIZWFkKDQwNCk7CisgICAgICByZXMuZW5k
KCk7CisgICAgfQorCisgICAgY29uc29sZS5sb2coJ1NlcnZlZCAnICsgcmVxLnVybCk7CisgIH0p
OworfSk7CisKK3JvdXRlci5nZXQoL2Zvby8sIGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5yZXMud3Jp
dGVIZWFkKDIwMCwgeyAnQ29udGVudC1UeXBlJzogJ3RleHQvcGxhaW4nIH0pOworICB0aGlzLnJl
cy5lbmQoJ2hlbGxvIHdvcmxkXG4nKTsKK30pOworCityb3V0ZXIucG9zdCgvZm9vLywgZnVuY3Rp
b24gKCkgeworICB0aGlzLnJlcy53cml0ZUhlYWQoMjAwLCB7ICdDb250ZW50LVR5cGUnOiAnYXBw
bGljYXRpb24vanNvbicgfSk7CisgIHRoaXMucmVzLmVuZChKU09OLnN0cmluZ2lmeSh0aGlzLnJl
cS5ib2R5KSk7Cit9KTsKKworc2VydmVyLmxpc3Rlbig4MDgwKTsKK2NvbnNvbGUubG9nKCd2YW5p
bGxhIGh0dHAgc2VydmVyIHdpdGggZGlyZWN0b3IgcnVubmluZyBvbiA4MDgwJyk7CmRpZmYgLS1n
aXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL2xpYi9kaXJlY3Rv
ci5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvbGliL2RpcmVj
dG9yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmY0M2FlODI3NTBmNjQ3NDcyOWM2MzQ5ZjQ3YjcwZThhZjk4MzQx
OTEKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2Rp
cmVjdG9yL2xpYi9kaXJlY3Rvci5qcwpAQCAtMCwwICsxLDYgQEAKKworCisKK2V4cG9ydHMuUm91
dGVyID0gcmVxdWlyZSgnLi9kaXJlY3Rvci9yb3V0ZXInKS5Sb3V0ZXI7CitleHBvcnRzLmh0dHAg
ICA9IHJlcXVpcmUoJy4vZGlyZWN0b3IvaHR0cCcpOworZXhwb3J0cy5jbGkgICAgPSByZXF1aXJl
KCcuL2RpcmVjdG9yL2NsaScpOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVf
bW9kdWxlcy9kaXJlY3Rvci9saWIvZGlyZWN0b3IvYnJvd3Nlci5qcyBiL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2px
dWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvbGliL2RpcmVjdG9yL2Jyb3dzZXIuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMWU0NzI5MzI1YjcxMmM1Mzk0MjBjMDk1ZmE5M2JlNTEyMjM3MWE0ZQotLS0gL2Rldi9u
dWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvbGliL2Rp
cmVjdG9yL2Jyb3dzZXIuanMKQEAgLTAsMCArMSwyODYgQEAKKy8qCisgKiBicm93c2VyLmpzOiBC
cm93c2VyIHNwZWNpZmljIGZ1bmN0aW9uYWxpdHkgZm9yIGRpcmVjdG9yLgorICoKKyAqIChDKSAy
MDExLCBDaGFybGllIFJvYmJpbnMsIFBhb2xvIEZyYWdvbWVuaSwgJiB0aGUgQ29udHJpYnV0b3Jz
LgorICogTUlUIExJQ0VOU0UKKyAqCisgKi8KKwordmFyIGRsb2MgPSBkb2N1bWVudC5sb2NhdGlv
bjsKKworZnVuY3Rpb24gZGxvY0hhc2hFbXB0eSgpIHsKKyAgLy8gTm9uLUlFIGJyb3dzZXJzIHJl
dHVybiAnJyB3aGVuIHRoZSBhZGRyZXNzIGJhciBzaG93cyAnIyc7IERpcmVjdG9yJ3MgbG9naWMK
KyAgLy8gYXNzdW1lcyBib3RoIG1lYW4gZW1wdHkuCisgIHJldHVybiBkbG9jLmhhc2ggPT09ICcn
IHx8IGRsb2MuaGFzaCA9PT0gJyMnOworfQorCit2YXIgbGlzdGVuZXIgPSB7CisgIG1vZGU6ICdt
b2Rlcm4nLAorICBoYXNoOiBkbG9jLmhhc2gsCisgIGhpc3Rvcnk6IGZhbHNlLAorCisgIGNoZWNr
OiBmdW5jdGlvbiAoKSB7CisgICAgdmFyIGggPSBkbG9jLmhhc2g7CisgICAgaWYgKGggIT0gdGhp
cy5oYXNoKSB7CisgICAgICB0aGlzLmhhc2ggPSBoOworICAgICAgdGhpcy5vbkhhc2hDaGFuZ2Vk
KCk7CisgICAgfQorICB9LAorCisgIGZpcmU6IGZ1bmN0aW9uICgpIHsKKyAgICBpZiAodGhpcy5t
b2RlID09PSAnbW9kZXJuJykgeworICAgICAgdGhpcy5oaXN0b3J5ID09PSB0cnVlID8gd2luZG93
Lm9ucG9wc3RhdGUoKSA6IHdpbmRvdy5vbmhhc2hjaGFuZ2UoKTsKKyAgICB9CisgICAgZWxzZSB7
CisgICAgICB0aGlzLm9uSGFzaENoYW5nZWQoKTsKKyAgICB9CisgIH0sCisKKyAgaW5pdDogZnVu
Y3Rpb24gKGZuLCBoaXN0b3J5KSB7CisgICAgdmFyIHNlbGYgPSB0aGlzOworICAgIHRoaXMuaGlz
dG9yeSA9IGhpc3Rvcnk7CisKKyAgICBpZiAoIVJvdXRlci5saXN0ZW5lcnMpIHsKKyAgICAgIFJv
dXRlci5saXN0ZW5lcnMgPSBbXTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBvbmNoYW5nZShvbkNo
YW5nZUV2ZW50KSB7CisgICAgICBmb3IgKHZhciBpID0gMCwgbCA9IFJvdXRlci5saXN0ZW5lcnMu
bGVuZ3RoOyBpIDwgbDsgaSsrKSB7CisgICAgICAgIFJvdXRlci5saXN0ZW5lcnNbaV0ob25DaGFu
Z2VFdmVudCk7CisgICAgICB9CisgICAgfQorCisgICAgLy9ub3RlIElFOCBpcyBiZWluZyBjb3Vu
dGVkIGFzICdtb2Rlcm4nIGJlY2F1c2UgaXQgaGFzIHRoZSBoYXNoY2hhbmdlIGV2ZW50CisgICAg
aWYgKCdvbmhhc2hjaGFuZ2UnIGluIHdpbmRvdyAmJiAoZG9jdW1lbnQuZG9jdW1lbnRNb2RlID09
PSB1bmRlZmluZWQKKyAgICAgIHx8IGRvY3VtZW50LmRvY3VtZW50TW9kZSA+IDcpKSB7CisgICAg
ICAvLyBBdCBsZWFzdCBmb3Igbm93IEhUTUw1IGhpc3RvcnkgaXMgYXZhaWxhYmxlIGZvciAnbW9k
ZXJuJyBicm93c2VycyBvbmx5CisgICAgICBpZiAodGhpcy5oaXN0b3J5ID09PSB0cnVlKSB7Cisg
ICAgICAgIC8vIFRoZXJlIGlzIGFuIG9sZCBidWcgaW4gQ2hyb21lIHRoYXQgY2F1c2VzIG9ucG9w
c3RhdGUgdG8gZmlyZSBldmVuCisgICAgICAgIC8vIHVwb24gaW5pdGlhbCBwYWdlIGxvYWQuIFNp
bmNlIHRoZSBoYW5kbGVyIGlzIHJ1biBtYW51YWxseSBpbiBpbml0KCksCisgICAgICAgIC8vIHRo
aXMgd291bGQgY2F1c2UgQ2hyb21lIHRvIHJ1biBpdCB0d2lzZS4gQ3VycmVudGx5IHRoZSBvbmx5
CisgICAgICAgIC8vIHdvcmthcm91bmQgc2VlbXMgdG8gYmUgdG8gc2V0IHRoZSBoYW5kbGVyIGFm
dGVyIHRoZSBpbml0aWFsIHBhZ2UgbG9hZAorICAgICAgICAvLyBodHRwOi8vY29kZS5nb29nbGUu
Y29tL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD02MzA0MAorICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeworICAgICAgICAgIHdpbmRvdy5vbnBvcHN0YXRlID0gb25jaGFuZ2U7Cisg
ICAgICAgIH0sIDUwMCk7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgd2luZG93Lm9u
aGFzaGNoYW5nZSA9IG9uY2hhbmdlOworICAgICAgfQorICAgICAgdGhpcy5tb2RlID0gJ21vZGVy
bic7CisgICAgfQorICAgIGVsc2UgeworICAgICAgLy8KKyAgICAgIC8vIElFIHN1cHBvcnQsIGJh
c2VkIG9uIGEgY29uY2VwdCBieSBFcmlrIEFydmlkc29uIC4uLgorICAgICAgLy8KKyAgICAgIHZh
ciBmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpOworICAgICAgZnJhbWUu
aWQgPSAnc3RhdGUtZnJhbWUnOworICAgICAgZnJhbWUuc3R5bGUuZGlzcGxheSA9ICdub25lJzsK
KyAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZnJhbWUpOworICAgICAgdGhpcy53cml0
ZUZyYW1lKCcnKTsKKworICAgICAgaWYgKCdvbnByb3BlcnR5Y2hhbmdlJyBpbiBkb2N1bWVudCAm
JiAnYXR0YWNoRXZlbnQnIGluIGRvY3VtZW50KSB7CisgICAgICAgIGRvY3VtZW50LmF0dGFjaEV2
ZW50KCdvbnByb3BlcnR5Y2hhbmdlJywgZnVuY3Rpb24gKCkgeworICAgICAgICAgIGlmIChldmVu
dC5wcm9wZXJ0eU5hbWUgPT09ICdsb2NhdGlvbicpIHsKKyAgICAgICAgICAgIHNlbGYuY2hlY2so
KTsKKyAgICAgICAgICB9CisgICAgICAgIH0pOworICAgICAgfQorCisgICAgICB3aW5kb3cuc2V0
SW50ZXJ2YWwoZnVuY3Rpb24gKCkgeyBzZWxmLmNoZWNrKCk7IH0sIDUwKTsKKworICAgICAgdGhp
cy5vbkhhc2hDaGFuZ2VkID0gb25jaGFuZ2U7CisgICAgICB0aGlzLm1vZGUgPSAnbGVnYWN5JzsK
KyAgICB9CisKKyAgICBSb3V0ZXIubGlzdGVuZXJzLnB1c2goZm4pOworCisgICAgcmV0dXJuIHRo
aXMubW9kZTsKKyAgfSwKKworICBkZXN0cm95OiBmdW5jdGlvbiAoZm4pIHsKKyAgICBpZiAoIVJv
dXRlciB8fCAhUm91dGVyLmxpc3RlbmVycykgeworICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IHZhciBsaXN0ZW5lcnMgPSBSb3V0ZXIubGlzdGVuZXJzOworCisgICAgZm9yICh2YXIgaSA9IGxp
c3RlbmVycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgeworICAgICAgaWYgKGxpc3RlbmVyc1tp
XSA9PT0gZm4pIHsKKyAgICAgICAgbGlzdGVuZXJzLnNwbGljZShpLCAxKTsKKyAgICAgIH0KKyAg
ICB9CisgIH0sCisKKyAgc2V0SGFzaDogZnVuY3Rpb24gKHMpIHsKKyAgICAvLyBNb3ppbGxhIGFs
d2F5cyBhZGRzIGFuIGVudHJ5IHRvIHRoZSBoaXN0b3J5CisgICAgaWYgKHRoaXMubW9kZSA9PT0g
J2xlZ2FjeScpIHsKKyAgICAgIHRoaXMud3JpdGVGcmFtZShzKTsKKyAgICB9CisKKyAgICBpZiAo
dGhpcy5oaXN0b3J5ID09PSB0cnVlKSB7CisgICAgICB3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUo
e30sIGRvY3VtZW50LnRpdGxlLCBzKTsKKyAgICAgIC8vIEZpcmUgYW4gb25wb3BzdGF0ZSBldmVu
dCBtYW51YWxseSBzaW5jZSBwdXNoaW5nIGRvZXMgbm90IG9idmlvdXNseQorICAgICAgLy8gdHJp
Z2dlciB0aGUgcG9wIGV2ZW50LgorICAgICAgdGhpcy5maXJlKCk7CisgICAgfSBlbHNlIHsKKyAg
ICAgIGRsb2MuaGFzaCA9IChzWzBdID09PSAnLycpID8gcyA6ICcvJyArIHM7CisgICAgfQorICAg
IHJldHVybiB0aGlzOworICB9LAorCisgIHdyaXRlRnJhbWU6IGZ1bmN0aW9uIChzKSB7CisgICAg
Ly8gSUUgc3VwcG9ydC4uLgorICAgIHZhciBmID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0
YXRlLWZyYW1lJyk7CisgICAgdmFyIGQgPSBmLmNvbnRlbnREb2N1bWVudCB8fCBmLmNvbnRlbnRX
aW5kb3cuZG9jdW1lbnQ7CisgICAgZC5vcGVuKCk7CisgICAgZC53cml0ZSgiPHNjcmlwdD5faGFz
aCA9ICciICsgcyArICInOyBvbmxvYWQgPSBwYXJlbnQubGlzdGVuZXIuc3luY0hhc2g7PHNjcmlw
dD4iKTsKKyAgICBkLmNsb3NlKCk7CisgIH0sCisKKyAgc3luY0hhc2g6IGZ1bmN0aW9uICgpIHsK
KyAgICAvLyBJRSBzdXBwb3J0Li4uCisgICAgdmFyIHMgPSB0aGlzLl9oYXNoOworICAgIGlmIChz
ICE9IGRsb2MuaGFzaCkgeworICAgICAgZGxvYy5oYXNoID0gczsKKyAgICB9CisgICAgcmV0dXJu
IHRoaXM7CisgIH0sCisKKyAgb25IYXNoQ2hhbmdlZDogZnVuY3Rpb24gKCkge30KK307CisKK3Zh
ciBSb3V0ZXIgPSBleHBvcnRzLlJvdXRlciA9IGZ1bmN0aW9uIChyb3V0ZXMpIHsKKyAgaWYgKCEo
dGhpcyBpbnN0YW5jZW9mIFJvdXRlcikpIHJldHVybiBuZXcgUm91dGVyKHJvdXRlcyk7CisKKyAg
dGhpcy5wYXJhbXMgICA9IHt9OworICB0aGlzLnJvdXRlcyAgID0ge307CisgIHRoaXMubWV0aG9k
cyAgPSBbJ29uJywgJ29uY2UnLCAnYWZ0ZXInLCAnYmVmb3JlJ107CisgIHRoaXMuc2NvcGUgICAg
PSBbXTsKKyAgdGhpcy5fbWV0aG9kcyA9IHt9OworCisgIHRoaXMuX2luc2VydCA9IHRoaXMuaW5z
ZXJ0OworICB0aGlzLmluc2VydCA9IHRoaXMuaW5zZXJ0RXg7CisKKyAgdGhpcy5oaXN0b3J5U3Vw
cG9ydCA9ICh3aW5kb3cuaGlzdG9yeSAhPSBudWxsID8gd2luZG93Lmhpc3RvcnkucHVzaFN0YXRl
IDogbnVsbCkgIT0gbnVsbAorCisgIHRoaXMuY29uZmlndXJlKCk7CisgIHRoaXMubW91bnQocm91
dGVzIHx8IHt9KTsKK307CisKK1JvdXRlci5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uIChyKSB7
CisgIHZhciBzZWxmID0gdGhpcworICAgICwgcm91dGVUbzsKKyAgdGhpcy5oYW5kbGVyID0gZnVu
Y3Rpb24ob25DaGFuZ2VFdmVudCkgeworICAgIHZhciBuZXdVUkwgPSBvbkNoYW5nZUV2ZW50ICYm
IG9uQ2hhbmdlRXZlbnQubmV3VVJMIHx8IHdpbmRvdy5sb2NhdGlvbi5oYXNoOworICAgIHZhciB1
cmwgPSBzZWxmLmhpc3RvcnkgPT09IHRydWUgPyBzZWxmLmdldFBhdGgoKSA6IG5ld1VSTC5yZXBs
YWNlKC8uKiMvLCAnJyk7CisgICAgc2VsZi5kaXNwYXRjaCgnb24nLCB1cmwuY2hhckF0KDApID09
PSAnLycgPyB1cmwgOiAnLycgKyB1cmwpOworICB9OworCisgIGxpc3RlbmVyLmluaXQodGhpcy5o
YW5kbGVyLCB0aGlzLmhpc3RvcnkpOworCisgIGlmICh0aGlzLmhpc3RvcnkgPT09IGZhbHNlKSB7
CisgICAgaWYgKGRsb2NIYXNoRW1wdHkoKSAmJiByKSB7CisgICAgICBkbG9jLmhhc2ggPSByOwor
ICAgIH0gZWxzZSBpZiAoIWRsb2NIYXNoRW1wdHkoKSkgeworICAgICAgc2VsZi5kaXNwYXRjaCgn
b24nLCAnLycgKyBkbG9jLmhhc2gucmVwbGFjZSgvXigjXC98I3xcLykvLCAnJykpOworICAgIH0K
KyAgfQorICBlbHNlIHsKKyAgICBpZiAodGhpcy5jb252ZXJ0X2hhc2hfaW5faW5pdCkgeworICAg
ICAgLy8gVXNlIGhhc2ggYXMgcm91dGUKKyAgICAgIHJvdXRlVG8gPSBkbG9jSGFzaEVtcHR5KCkg
JiYgciA/IHIgOiAhZGxvY0hhc2hFbXB0eSgpID8gZGxvYy5oYXNoLnJlcGxhY2UoL14jLywgJycp
IDogbnVsbDsKKyAgICAgIGlmIChyb3V0ZVRvKSB7CisgICAgICAgIHdpbmRvdy5oaXN0b3J5LnJl
cGxhY2VTdGF0ZSh7fSwgZG9jdW1lbnQudGl0bGUsIHJvdXRlVG8pOworICAgICAgfQorICAgIH0K
KyAgICBlbHNlIHsKKyAgICAgIC8vIFVzZSBjYW5vbmljYWwgdXJsCisgICAgICByb3V0ZVRvID0g
dGhpcy5nZXRQYXRoKCk7CisgICAgfQorCisgICAgLy8gUm91dGVyIGhhcyBiZWVuIGluaXRpYWxp
emVkLCBidXQgZHVlIHRvIHRoZSBjaHJvbWUgYnVnIGl0IHdpbGwgbm90CisgICAgLy8geWV0IGFj
dHVhbGx5IHJvdXRlIEhUTUw1IGhpc3Rvcnkgc3RhdGUgY2hhbmdlcy4gVGh1cywgZGVjaWRlIGlm
IHNob3VsZCByb3V0ZS4KKyAgICBpZiAocm91dGVUbyB8fCB0aGlzLnJ1bl9pbl9pbml0ID09PSB0
cnVlKSB7CisgICAgICB0aGlzLmhhbmRsZXIoKTsKKyAgICB9CisgIH0KKworICByZXR1cm4gdGhp
czsKK307CisKK1JvdXRlci5wcm90b3R5cGUuZXhwbG9kZSA9IGZ1bmN0aW9uICgpIHsKKyAgdmFy
IHYgPSB0aGlzLmhpc3RvcnkgPT09IHRydWUgPyB0aGlzLmdldFBhdGgoKSA6IGRsb2MuaGFzaDsK
KyAgaWYgKHYuY2hhckF0KDEpID09PSAnLycpIHsgdj12LnNsaWNlKDEpIH0KKyAgcmV0dXJuIHYu
c2xpY2UoMSwgdi5sZW5ndGgpLnNwbGl0KCIvIik7Cit9OworCitSb3V0ZXIucHJvdG90eXBlLnNl
dFJvdXRlID0gZnVuY3Rpb24gKGksIHYsIHZhbCkgeworICB2YXIgdXJsID0gdGhpcy5leHBsb2Rl
KCk7CisKKyAgaWYgKHR5cGVvZiBpID09PSAnbnVtYmVyJyAmJiB0eXBlb2YgdiA9PT0gJ3N0cmlu
ZycpIHsKKyAgICB1cmxbaV0gPSB2OworICB9CisgIGVsc2UgaWYgKHR5cGVvZiB2YWwgPT09ICdz
dHJpbmcnKSB7CisgICAgdXJsLnNwbGljZShpLCB2LCBzKTsKKyAgfQorICBlbHNlIHsKKyAgICB1
cmwgPSBbaV07CisgIH0KKworICBsaXN0ZW5lci5zZXRIYXNoKHVybC5qb2luKCcvJykpOworICBy
ZXR1cm4gdXJsOworfTsKKworLy8KKy8vICMjIyBmdW5jdGlvbiBpbnNlcnRFeChtZXRob2QsIHBh
dGgsIHJvdXRlLCBwYXJlbnQpCisvLyAjIyMjIEBtZXRob2Qge3N0cmluZ30gTWV0aG9kIHRvIGlu
c2VydCB0aGUgc3BlY2lmaWMgYHJvdXRlYC4KKy8vICMjIyMgQHBhdGgge0FycmF5fSBQYXJzZWQg
cGF0aCB0byBpbnNlcnQgdGhlIGByb3V0ZWAgYXQuCisvLyAjIyMjIEByb3V0ZSB7QXJyYXl8ZnVu
Y3Rpb259IFJvdXRlIGhhbmRsZXJzIHRvIGluc2VydC4KKy8vICMjIyMgQHBhcmVudCB7T2JqZWN0
fSAqKk9wdGlvbmFsKiogUGFyZW50ICJyb3V0ZXMiIHRvIGluc2VydCBpbnRvLgorLy8gaW5zZXJ0
IGEgY2FsbGJhY2sgdGhhdCB3aWxsIG9ubHkgb2NjdXIgb25jZSBwZXIgdGhlIG1hdGNoZWQgcm91
dGUuCisvLworUm91dGVyLnByb3RvdHlwZS5pbnNlcnRFeCA9IGZ1bmN0aW9uKG1ldGhvZCwgcGF0
aCwgcm91dGUsIHBhcmVudCkgeworICBpZiAobWV0aG9kID09PSAib25jZSIpIHsKKyAgICBtZXRo
b2QgPSAib24iOworICAgIHJvdXRlID0gZnVuY3Rpb24ocm91dGUpIHsKKyAgICAgIHZhciBvbmNl
ID0gZmFsc2U7CisgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICAgIGlmIChvbmNlKSBy
ZXR1cm47CisgICAgICAgIG9uY2UgPSB0cnVlOworICAgICAgICByZXR1cm4gcm91dGUuYXBwbHko
dGhpcywgYXJndW1lbnRzKTsKKyAgICAgIH07CisgICAgfShyb3V0ZSk7CisgIH0KKyAgcmV0dXJu
IHRoaXMuX2luc2VydChtZXRob2QsIHBhdGgsIHJvdXRlLCBwYXJlbnQpOworfTsKKworUm91dGVy
LnByb3RvdHlwZS5nZXRSb3V0ZSA9IGZ1bmN0aW9uICh2KSB7CisgIHZhciByZXQgPSB2OworCisg
IGlmICh0eXBlb2YgdiA9PT0gIm51bWJlciIpIHsKKyAgICByZXQgPSB0aGlzLmV4cGxvZGUoKVt2
XTsKKyAgfQorICBlbHNlIGlmICh0eXBlb2YgdiA9PT0gInN0cmluZyIpeworICAgIHZhciBoID0g
dGhpcy5leHBsb2RlKCk7CisgICAgcmV0ID0gaC5pbmRleE9mKHYpOworICB9CisgIGVsc2Ugewor
ICAgIHJldCA9IHRoaXMuZXhwbG9kZSgpOworICB9CisKKyAgcmV0dXJuIHJldDsKK307CisKK1Jv
dXRlci5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHsKKyAgbGlzdGVuZXIuZGVzdHJv
eSh0aGlzLmhhbmRsZXIpOworICByZXR1cm4gdGhpczsKK307CisKK1JvdXRlci5wcm90b3R5cGUu
Z2V0UGF0aCA9IGZ1bmN0aW9uICgpIHsKKyAgdmFyIHBhdGggPSB3aW5kb3cubG9jYXRpb24ucGF0
aG5hbWU7CisgIGlmIChwYXRoLnN1YnN0cigwLCAxKSAhPT0gJy8nKSB7CisgICAgcGF0aCA9ICcv
JyArIHBhdGg7CisgIH0KKyAgcmV0dXJuIHBhdGg7Cit9OwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9saWIvZGlyZWN0b3IvY2xpLmpzIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9saWIvZGlyZWN0b3IvY2xpLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjYyZGY2ZDdmZWZmYzFhNGMwNTY5ZjQ5NzQ4NDZjYjAyNGViNzAwNzgKLS0t
IC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9y
L2xpYi9kaXJlY3Rvci9jbGkuanMKQEAgLTAsMCArMSw2NSBAQAorCit2YXIgdXRpbCA9IHJlcXVp
cmUoJ3V0aWwnKSwKKyAgICBCYXNlUm91dGVyID0gcmVxdWlyZSgnLi9yb3V0ZXInKS5Sb3V0ZXI7
CisKK3ZhciBSb3V0ZXIgPSBleHBvcnRzLlJvdXRlciA9IGZ1bmN0aW9uIChyb3V0ZXMpIHsKKyAg
QmFzZVJvdXRlci5jYWxsKHRoaXMsIHJvdXRlcyk7CisgIHRoaXMucmVjdXJzZSA9IGZhbHNlOwor
fTsKKworLy8KKy8vIEluaGVyaXQgZnJvbSBgQmFzZVJvdXRlcmAuCisvLwordXRpbC5pbmhlcml0
cyhSb3V0ZXIsIEJhc2VSb3V0ZXIpOworCisvLworLy8gIyMjIGZ1bmN0aW9uIGNvbmZpZ3VyZSAo
b3B0aW9ucykKKy8vICMjIyMgQG9wdGlvbnMge09iamVjdH0gKipPcHRpb25hbCoqIE9wdGlvbnMg
dG8gY29uZmlndXJlIHRoaXMgaW5zdGFuY2Ugd2l0aAorLy8gQ29uZmlndXJlcyB0aGlzIGluc3Rh
bmNlIHdpdGggdGhlIHNwZWNpZmllZCBgb3B0aW9uc2AuCisvLworUm91dGVyLnByb3RvdHlwZS5j
b25maWd1cmUgPSBmdW5jdGlvbiAob3B0aW9ucykgeworICBvcHRpb25zID0gb3B0aW9ucyB8fCB7
fTsKKyAgQmFzZVJvdXRlci5wcm90b3R5cGUuY29uZmlndXJlLmNhbGwodGhpcywgb3B0aW9ucyk7
CisKKyAgLy8KKyAgLy8gRGVsaW1pdGVyIG11c3QgYWx3YXlzIGJlIGBcc2AgaW4gQ0xJIHJvdXRp
bmcuCisgIC8vIGUuZy4gYGppdHN1IHVzZXJzIGNyZWF0ZWAKKyAgLy8KKyAgdGhpcy5kZWxpbWl0
ZXIgPSAnXFxzJzsKKyAgcmV0dXJuIHRoaXM7Cit9OworCisvLworLy8gIyMjIGZ1bmN0aW9uIGRp
c3BhdGNoIChtZXRob2QsIHBhdGgpCisvLyAjIyMjIEBtZXRob2Qge3N0cmluZ30gTWV0aG9kIHRv
IGRpc3BhdGNoCisvLyAjIyMjIEBwYXRoIHtzdHJpbmd9IFBhdGggdG8gZGlzcGF0Y2gKKy8vIEZp
bmRzIGEgc2V0IG9mIGZ1bmN0aW9ucyBvbiB0aGUgdHJhdmVyc2FsIHRvd2FyZHMKKy8vIGBtZXRo
b2RgIGFuZCBgcGF0aGAgaW4gdGhlIGNvcmUgcm91dGluZyB0YWJsZSB0aGVuCisvLyBpbnZva2Vz
IHRoZW0gYmFzZWQgb24gc2V0dGluZ3MgaW4gdGhpcyBpbnN0YW5jZS4KKy8vCitSb3V0ZXIucHJv
dG90eXBlLmRpc3BhdGNoID0gZnVuY3Rpb24gKG1ldGhvZCwgcGF0aCwgdHR5LCBjYWxsYmFjaykg
eworICAvLworICAvLyBQcmVwZW5kIGEgc2luZ2xlIHNwYWNlIG9udG8gdGhlIHBhdGggc28gdGhh
dCB0aGUgdHJhdmVyc2FsCisgIC8vIGFsZ29yaXRobSB3aWxsIHJlY29nbml6ZSBpdC4gVGhpcyBp
cyBiZWNhdXNlIHdlIGFsd2F5cyBhc3N1bWUKKyAgLy8gdGhhdCB0aGUgYHBhdGhgIGJlZ2lucyB3
aXRoIGB0aGlzLmRlbGltaXRlcmAuCisgIC8vCisgIHBhdGggPSAnICcgKyBwYXRoOworICB2YXIg
Zm5zID0gdGhpcy50cmF2ZXJzZShtZXRob2QsIHBhdGgsIHRoaXMucm91dGVzLCAnJyk7CisgIGlm
ICghZm5zIHx8IGZucy5sZW5ndGggPT09IDApIHsKKyAgICBpZiAodHlwZW9mIHRoaXMubm90Zm91
bmQgPT09ICdmdW5jdGlvbicpIHsKKyAgICAgIHRoaXMubm90Zm91bmQuY2FsbCh7IHR0eTogdHR5
LCBjbWQ6IHBhdGggfSwgY2FsbGJhY2spOworICAgIH0KKyAgICBlbHNlIGlmIChjYWxsYmFjaykg
eworICAgICAgY2FsbGJhY2sobmV3IEVycm9yKCdDb3VsZCBub3QgZmluZCBwYXRoOiAnICsgcGF0
aCkpOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKKyAgfQorCisgIGlmICh0aGlzLnJlY3Vy
c2UgPT09ICdmb3J3YXJkJykgeworICAgIGZucyA9IGZucy5yZXZlcnNlKCk7CisgIH0KKworICB0
aGlzLmludm9rZSh0aGlzLnJ1bmxpc3QoZm5zKSwgeyB0dHk6IHR0eSwgY21kOiBwYXRoIH0sIGNh
bGxiYWNrKTsKKyAgcmV0dXJuIHRydWU7Cit9OwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1
ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9saWIvZGlyZWN0b3IvaHR0cC9pbmRleC5qcyBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvbGliL2RpcmVjdG9yL2h0dHAv
aW5kZXguanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZWNjZTk4MjRjOWIzMTZiZWNkOWRlMGVkNjhiODBiZmE1YTcw
ZTE1ZAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMv
ZGlyZWN0b3IvbGliL2RpcmVjdG9yL2h0dHAvaW5kZXguanMKQEAgLTAsMCArMSwyNTMgQEAKK3Zh
ciBldmVudHMgPSByZXF1aXJlKCdldmVudHMnKSwKKyAgICBxcyA9IHJlcXVpcmUoJ3F1ZXJ5c3Ry
aW5nJyksCisgICAgdXRpbCA9IHJlcXVpcmUoJ3V0aWwnKSwKKyAgICBCYXNlUm91dGVyID0gcmVx
dWlyZSgnLi4vcm91dGVyJykuUm91dGVyLAorICAgIHJlc3BvbnNlcyA9IHJlcXVpcmUoJy4vcmVz
cG9uc2VzJyk7CisKKy8vCisvLyAjIyMgRXhwb3NlIGFsbCBIVFRQIG1ldGhvZHMgYW5kIHJlc3Bv
bnNlcworLy8KK2V4cG9ydHMubWV0aG9kcyAgID0gcmVxdWlyZSgnLi9tZXRob2RzJyk7CitPYmpl
Y3Qua2V5cyhyZXNwb25zZXMpLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHsKKyAgZXhwb3J0c1tu
YW1lXSA9IHJlc3BvbnNlc1tuYW1lXTsKK30pOworCisvLworLy8gIyMjIGZ1bmN0aW9uIFJvdXRl
ciAocm91dGVzKQorLy8gIyMjIyBAcm91dGVzIHtPYmplY3R9ICoqT3B0aW9uYWwqKiBSb3V0aW5n
IHRhYmxlIGZvciB0aGlzIGluc3RhbmNlLgorLy8gQ29uc3R1Y3RvciBmdW5jdGlvbiBmb3IgdGhl
IEhUVFAgUm91dGVyIG9iamVjdCByZXNwb25zaWJsZSBmb3IgYnVpbGRpbmcKKy8vIGFuZCBkaXNw
YXRjaGluZyBmcm9tIGEgZ2l2ZW4gcm91dGluZyB0YWJsZS4KKy8vCit2YXIgUm91dGVyID0gZXhw
b3J0cy5Sb3V0ZXIgPSBmdW5jdGlvbiAocm91dGVzKSB7CisgIC8vCisgIC8vICMjIyBFeHRlbmQg
dGhlIGBSb3V0ZXJgIHByb3RvdHlwZSB3aXRoIGFsbCBvZiB0aGUgUkZDIG1ldGhvZHMuCisgIC8v
CisgIHRoaXMucGFyYW1zICAgPSB7fTsKKyAgdGhpcy5yb3V0ZXMgICA9IHt9OworICB0aGlzLm1l
dGhvZHMgID0gWydvbicsICdhZnRlcicsICdiZWZvcmUnXTsKKyAgdGhpcy5zY29wZSAgICA9IFtd
OworICB0aGlzLl9tZXRob2RzID0ge307CisgIHRoaXMucmVjdXJzZSA9ICdmb3J3YXJkJzsKKyAg
dGhpcy5fYXR0YWNoID0gW107CisKKyAgdGhpcy5leHRlbmQoZXhwb3J0cy5tZXRob2RzLmNvbmNh
dChbJ2JlZm9yZScsICdhZnRlciddKSk7CisgIHRoaXMuY29uZmlndXJlKCk7CisgIHRoaXMubW91
bnQocm91dGVzIHx8IHt9KTsKK307CisKKy8vCisvLyBJbmhlcml0IGZyb20gYEJhc2VSb3V0ZXJg
LgorLy8KK3V0aWwuaW5oZXJpdHMoUm91dGVyLCBCYXNlUm91dGVyKTsKKworLy8KKy8vICMjIyBm
dW5jdGlvbiBjb25maWd1cmUgKG9wdGlvbnMpCisvLyAjIyMjIEBvcHRpb25zIHtPYmplY3R9ICoq
T3B0aW9uYWwqKiBPcHRpb25zIHRvIGNvbmZpZ3VyZSB0aGlzIGluc3RhbmNlIHdpdGgKKy8vIENv
bmZpZ3VyZXMgdGhpcyBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgYG9wdGlvbnNgLgorLy8K
K1JvdXRlci5wcm90b3R5cGUuY29uZmlndXJlID0gZnVuY3Rpb24gKG9wdGlvbnMpIHsKKyAgb3B0
aW9ucyA9IG9wdGlvbnMgfHwge307CisKKyAgLy8gdXNlZnVsIHdoZW4gdXNpbmcgY29ubmVjdCdz
IGJvZHlQYXJzZXIKKyAgdGhpcy5zdHJlYW0gPSBvcHRpb25zLnN0cmVhbSB8fCBmYWxzZTsKKwor
ICByZXR1cm4gQmFzZVJvdXRlci5wcm90b3R5cGUuY29uZmlndXJlLmNhbGwodGhpcywgb3B0aW9u
cyk7Cit9OworCisvLworLy8gIyMjIGZ1bmN0aW9uIG9uIChtZXRob2QsIHBhdGgsIHJvdXRlKQor
Ly8gIyMjIyBAbWV0aG9kIHtzdHJpbmd9ICoqT3B0aW9uYWwqKiBNZXRob2QgdG8gdXNlCisvLyAj
IyMjIEBwYXRoIHtzdHJpbmd9IFBhdGggdG8gc2V0IHRoaXMgcm91dGUgb24uCisvLyAjIyMjIEBy
b3V0ZSB7QXJyYXl8ZnVuY3Rpb259IEhhbmRsZXIgZm9yIHRoZSBzcGVjaWZpZWQgbWV0aG9kIGFu
ZCBwYXRoLgorLy8gQWRkcyBhIG5ldyBgcm91dGVgIHRvIHRoaXMgaW5zdGFuY2UgZm9yIHRoZSBz
cGVjaWZpZWQgYG1ldGhvZGAKKy8vIGFuZCBgcGF0aGAuCisvLworUm91dGVyLnByb3RvdHlwZS5v
biA9IGZ1bmN0aW9uIChtZXRob2QsIHBhdGgpIHsKKyAgdmFyIGFyZ3MgPSBBcnJheS5wcm90b3R5
cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDIpLAorICAgICAgcm91dGUgPSBhcmdzLnBvcCgpLAor
ICAgICAgb3B0aW9ucyA9IGFyZ3MucG9wKCksCisgICAgICBhY2NlcHQ7CisKKyAgaWYgKG9wdGlv
bnMpIHsKKyAgICBpZiAob3B0aW9ucy5zdHJlYW0pIHsKKyAgICAgIHJvdXRlLnN0cmVhbSA9IHRy
dWU7CisgICAgfQorCisgICAgaWYgKG9wdGlvbnMuYWNjZXB0KSB7CisgICAgICB0aGlzLl9oYXNB
Y2NlcHRzID0gdHJ1ZTsKKyAgICAgIGFjY2VwdCA9IG9wdGlvbnMuYWNjZXB0OworICAgICAgcm91
dGUuYWNjZXB0ID0gKEFycmF5LmlzQXJyYXkoYWNjZXB0KSA/IGFjY2VwdCA6IFthY2NlcHRdKS5t
YXAoZnVuY3Rpb24gKGEpIHsKKyAgICAgICAgcmV0dXJuIHR5cGVvZiBhID09PSAnc3RyaW5nJyA/
IFJlZ0V4cChhKSA6IGE7CisgICAgICB9KTsKKyAgICB9CisgIH0KKworICBpZiAodHlwZW9mIHBh
dGggIT09ICdzdHJpbmcnICYmICFwYXRoLnNvdXJjZSkgeworICAgIHBhdGggPSAnJzsKKyAgfQor
CisgIEJhc2VSb3V0ZXIucHJvdG90eXBlLm9uLmNhbGwodGhpcywgbWV0aG9kLCBwYXRoLCByb3V0
ZSk7Cit9OworCisvLworLy8gIyMjIGZ1bmN0aW9uIGF0dGFjaCAoZnVuYykKKy8vICMjIyBAZnVu
YyB7ZnVuY3Rpb259IEZ1bmN0aW9uIHRvIGV4ZWN1dGUgb24gYHRoaXNgIGJlZm9yZSBhcHBseWlu
ZyB0byByb3V0ZXIgZnVuY3Rpb24KKy8vIEFzayB0aGUgcm91dGVyIHRvIGF0dGFjaCBvYmplY3Rz
IG9yIG1hbmlwdWxhdGUgYHRoaXNgIG9iamVjdCBvbiB3aGljaCB0aGUKKy8vIGZ1bmN0aW9uIHBh
c3NlZCB0byB0aGUgaHR0cCByb3V0ZXIgd2lsbCBnZXQgYXBwbGllZAorUm91dGVyLnByb3RvdHlw
ZS5hdHRhY2ggPSBmdW5jdGlvbiAoZnVuYykgeworICB0aGlzLl9hdHRhY2gucHVzaChmdW5jKTsK
K307CisKKy8vCisvLyAjIyMgZnVuY3Rpb24gZGlzcGF0Y2ggKG1ldGhvZCwgcGF0aCkKKy8vICMj
IyMgQHJlcSB7aHR0cC5TZXJ2ZXJSZXF1ZXN0fSBJbmNvbWluZyByZXF1ZXN0IHRvIGRpc3BhdGNo
LgorLy8gIyMjIyBAcmVzIHtodHRwLlNlcnZlclJlc3BvbnNlfSBPdXRnb2luZyByZXNwb25zZSB0
byBkaXNwYXRjaC4KKy8vICMjIyMgQGNhbGxiYWNrIHtmdW5jdGlvbn0gKipPcHRpb25hbCoqIENv
bnRpbnVhdGlvbiB0byByZXNwb25kIHRvIGZvciBhc3luYyBzY2VuYXJpb3MuCisvLyBGaW5kcyBh
IHNldCBvZiBmdW5jdGlvbnMgb24gdGhlIHRyYXZlcnNhbCB0b3dhcmRzCisvLyBgbWV0aG9kYCBh
bmQgYHBhdGhgIGluIHRoZSBjb3JlIHJvdXRpbmcgdGFibGUgdGhlbgorLy8gaW52b2tlcyB0aGVt
IGJhc2VkIG9uIHNldHRpbmdzIGluIHRoaXMgaW5zdGFuY2UuCisvLworUm91dGVyLnByb3RvdHlw
ZS5kaXNwYXRjaCA9IGZ1bmN0aW9uIChyZXEsIHJlcywgY2FsbGJhY2spIHsKKyAgLy8KKyAgLy8g
RGlzcGF0Y2ggYEhFQURgIHJlcXVlc3RzIHRvIGBHRVRgCisgIC8vCisgIHZhciBtZXRob2QgPSBy
ZXEubWV0aG9kID09PSAnSEVBRCcgPyAnZ2V0JyA6IHJlcS5tZXRob2QudG9Mb3dlckNhc2UoKSwK
KyAgICAgIHRoaXNBcmcgPSB7IHJlcTogcmVxLCByZXM6IHJlcyB9LAorICAgICAgc2VsZiA9IHRo
aXMsCisgICAgICBjb250ZW50VHlwZSwKKyAgICAgIHJ1bmxpc3QsCisgICAgICBzdHJlYW0sCisg
ICAgICBlcnJvciwKKyAgICAgIGZucywKKyAgICAgIHVybDsKKworICAvLworICAvLyBUcmFwIGJh
ZCBVUkxzIGZyb20gYGRlY29kZVVyaWAKKyAgLy8KKyAgdHJ5IHsgdXJsID0gZGVjb2RlVVJJKHJl
cS51cmwuc3BsaXQoJz8nLCAxKVswXSk7IH0KKyAgY2F0Y2ggKGV4KSB7IHVybCA9IG51bGwgfQor
CisgIGlmICh1cmwgJiYgdGhpcy5faGFzQWNjZXB0cykgeworICAgIGNvbnRlbnRUeXBlID0gcmVx
LmhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddOworICAgIGZucyA9IHRoaXMudHJhdmVyc2UobWV0aG9k
LCB1cmwsIHRoaXMucm91dGVzLCAnJywgZnVuY3Rpb24gKHJvdXRlKSB7CisgICAgICByZXR1cm4g
IXJvdXRlLmFjY2VwdCB8fCByb3V0ZS5hY2NlcHQuc29tZShmdW5jdGlvbiAoYSkgeworICAgICAg
ICByZXR1cm4gYS50ZXN0KGNvbnRlbnRUeXBlKTsKKyAgICAgIH0pOworICAgIH0pOworICB9Cisg
IGVsc2UgaWYgKHVybCkgeworICAgIGZucyA9IHRoaXMudHJhdmVyc2UobWV0aG9kLCB1cmwsIHRo
aXMucm91dGVzLCAnJyk7CisgIH0KKworICBpZiAodGhpcy5fYXR0YWNoKSB7CisgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCB0aGlzLl9hdHRhY2gubGVuZ3RoOyBpKyspIHsKKyAgICAgIHRoaXMuX2F0
dGFjaFtpXS5jYWxsKHRoaXNBcmcpOworICAgIH0KKyAgfQorCisgIGlmICghZm5zIHx8IGZucy5s
ZW5ndGggPT09IDApIHsKKyAgICBlcnJvciA9IG5ldyBleHBvcnRzLk5vdEZvdW5kKCdDb3VsZCBu
b3QgZmluZCBwYXRoOiAnICsgcmVxLnVybCk7CisgICAgaWYgKHR5cGVvZiB0aGlzLm5vdGZvdW5k
ID09PSAnZnVuY3Rpb24nKSB7CisgICAgICB0aGlzLm5vdGZvdW5kLmNhbGwodGhpc0FyZywgY2Fs
bGJhY2spOworICAgIH0KKyAgICBlbHNlIGlmIChjYWxsYmFjaykgeworICAgICAgY2FsbGJhY2su
Y2FsbCh0aGlzQXJnLCBlcnJvciwgcmVxLCByZXMpOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7
CisgIH0KKworICBpZiAodGhpcy5yZWN1cnNlID09PSAnZm9yd2FyZCcpIHsKKyAgICBmbnMgPSBm
bnMucmV2ZXJzZSgpOworICB9CisKKyAgcnVubGlzdCA9IHRoaXMucnVubGlzdChmbnMpOworICBz
dHJlYW0gID0gdGhpcy5zdHJlYW0gfHwgcnVubGlzdC5zb21lKGZ1bmN0aW9uIChmbikgeyByZXR1
cm4gZm4uc3RyZWFtID09PSB0cnVlOyB9KTsKKworICBmdW5jdGlvbiBwYXJzZUFuZEludm9rZSgp
IHsKKyAgICBlcnJvciA9IHNlbGYucGFyc2UocmVxKTsKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAg
IGlmIChjYWxsYmFjaykgeworICAgICAgICBjYWxsYmFjay5jYWxsKHRoaXNBcmcsIGVycm9yLCBy
ZXEsIHJlcyk7CisgICAgICB9CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgc2Vs
Zi5pbnZva2UocnVubGlzdCwgdGhpc0FyZywgY2FsbGJhY2spOworICB9CisKKyAgaWYgKCFzdHJl
YW0pIHsKKyAgICAvLworICAgIC8vIElmIHRoZXJlIGlzIG5vIHN0cmVhbWluZyByZXF1aXJlZCBv
biBhbnkgb2YgdGhlIGZ1bmN0aW9ucyBvbiB0aGUKKyAgICAvLyB3YXkgdG8gYHBhdGhgLCB0aGVu
IGF0dGVtcHQgdG8gcGFyc2UgdGhlIGZ1bGx5IGJ1ZmZlcmVkIHJlcXVlc3Qgc3RyZWFtCisgICAg
Ly8gb25jZSBpdCBoYXMgZW1pdHRlZCB0aGUgYGVuZGAgZXZlbnQuCisgICAgLy8KKyAgICBpZiAo
cmVxLnJlYWRhYmxlKSB7CisgICAgICAvLworICAgICAgLy8gSWYgdGhlIGBodHRwLlNlcnZlclJl
cXVlc3RgIGlzIHN0aWxsIHJlYWRhYmxlLCB0aGVuIGF3YWl0CisgICAgICAvLyB0aGUgZW5kIGV2
ZW50IGFuZCB0aGVuIGNvbnRpbnVlCisgICAgICAvLworICAgICAgcmVxLm9uY2UoJ2VuZCcsIHBh
cnNlQW5kSW52b2tlKTsKKyAgICAgIC8vIFN0cmVhbXMyIHJlcXVpcmVzIHVzIHRvIHN0YXJ0IHRo
ZSBzdHJlYW0gaWYgd2UncmUgbm90IGV4cGxpY2l0bHkKKyAgICAgIC8vIHJlYWRpbmcgZnJvbSBp
dC4KKyAgICAgIHJlcS5yZXN1bWUoKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAvLworICAg
ICAgLy8gT3RoZXJ3aXNlLCBqdXN0IHBhcnNlIHRoZSBib2R5IG5vdy4KKyAgICAgIC8vCisgICAg
ICBwYXJzZUFuZEludm9rZSgpOworICAgIH0KKyAgfQorICBlbHNlIHsKKyAgICB0aGlzLmludm9r
ZShydW5saXN0LCB0aGlzQXJnLCBjYWxsYmFjayk7CisgIH0KKworICByZXR1cm4gdHJ1ZTsKK307
CisKKy8vCisvLyAjIyMgQHBhcnNlcnMge09iamVjdH0KKy8vIExvb2t1cCB0YWJsZSBvZiBwYXJz
ZXJzIHRvIHVzZSB3aGVuIGF0dGVtcHRpbmcgdG8KKy8vIHBhcnNlIGluY29taW5nIHJlc3BvbnNl
cy4KKy8vCitSb3V0ZXIucHJvdG90eXBlLnBhcnNlcnMgPSB7CisgICdhcHBsaWNhdGlvbi94LXd3
dy1mb3JtLXVybGVuY29kZWQnOiBxcy5wYXJzZSwKKyAgJ2FwcGxpY2F0aW9uL2pzb24nOiBKU09O
LnBhcnNlCit9OworCisvLworLy8gIyMjIGZ1bmN0aW9uIHBhcnNlIChyZXEpCisvLyAjIyMjIEBy
ZXEge2h0dHAuU2VydmVyUmVzcG9uc2V8QnVmZmVyZWRTdHJlYW19IEluY29taW5nIEhUVFAgcmVx
dWVzdCB0byBwYXJzZQorLy8gQXR0ZW1wdHMgdG8gcGFyc2UgYHJlcS5ib2R5YCB1c2luZyB0aGUg
dmFsdWUgZm91bmQgYXQgYHJlcS5oZWFkZXJzWydjb250ZW50LXR5cGUnXWAuCisvLworUm91dGVy
LnByb3RvdHlwZS5wYXJzZSA9IGZ1bmN0aW9uIChyZXEpIHsKKyAgZnVuY3Rpb24gbWltZShyZXEp
IHsKKyAgICB2YXIgc3RyID0gcmVxLmhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddIHx8ICcnOworICAg
IHJldHVybiBzdHIuc3BsaXQoJzsnKVswXTsKKyAgfQorCisgIHZhciBwYXJzZXIgPSB0aGlzLnBh
cnNlcnNbbWltZShyZXEpXSwKKyAgICAgIGJvZHk7CisKKyAgaWYgKHBhcnNlcikgeworICAgIHJl
cS5ib2R5ID0gcmVxLmJvZHkgfHwgJyc7CisKKyAgICBpZiAocmVxLmNodW5rcykgeworICAgICAg
cmVxLmNodW5rcy5mb3JFYWNoKGZ1bmN0aW9uIChjaHVuaykgeworICAgICAgICByZXEuYm9keSAr
PSBjaHVuazsKKyAgICAgIH0pOworICAgIH0KKworICAgIGlmICgnc3RyaW5nJyA9PT0gdHlwZW9m
IHJlcS5ib2R5KSB7CisgICAgICB0cnkgeworICAgICAgICByZXEuYm9keSA9IHJlcS5ib2R5ICYm
IHJlcS5ib2R5Lmxlbmd0aAorICAgICAgICAgID8gcGFyc2VyKHJlcS5ib2R5KQorICAgICAgICAg
IDoge307CisgICAgICB9CisgICAgICBjYXRjaCAoZXJyKSB7CisgICAgICAgIHJldHVybiBuZXcg
ZXhwb3J0cy5CYWRSZXF1ZXN0KCdNYWxmb3JtZWQgZGF0YScpOworICAgICAgfQorICAgIH0KKyAg
fQorfTsKKwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJl
Y3Rvci9saWIvZGlyZWN0b3IvaHR0cC9tZXRob2RzLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25v
ZGVfbW9kdWxlcy9kaXJlY3Rvci9saWIvZGlyZWN0b3IvaHR0cC9tZXRob2RzLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmUwYzAxZGMyMDNiMGUzYjM4MDBmMzdhNzdiNDI2YTkzYWIxOWI1NjcKLS0tIC9kZXYvbnVs
bAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL2xpYi9kaXJl
Y3Rvci9odHRwL21ldGhvZHMuanMKQEAgLTAsMCArMSw2NiBAQAorLyohCisgKiBFeHByZXNzIC0g
cm91dGVyIC0gbWV0aG9kcworICogQ29weXJpZ2h0KGMpIDIwMTAgVEogSG9sb3dheWNodWsgPHRq
QHZpc2lvbi1tZWRpYS5jYT4KKyAqIE1JVCBMaWNlbnNlZAorICoKKyAqIEFkYXB0ZWQgZm9yIGRp
cmVjdG9yCisgKiAoQykgMjAxMSBDaGFybGllIFJvYmJpbnMsIFBhb2xvIEZyYW9nbWVuaSwgJiB0
aGUgQ29udHJpYnV0b3JzLgorICoKKyAqLworCisvKioKKyAqIEh5cGVydGV4dCBUcmFuc2ZlciBQ
cm90b2NvbCAtLSBIVFRQLzEuMQorICogaHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMjYxNi50
eHQKKyAqLwordmFyIFJGQzI2MTYgPSBbJ09QVElPTlMnLCAnR0VUJywgJ1BPU1QnLCAnUFVUJywg
J0RFTEVURScsICdUUkFDRScsICdDT05ORUNUJ107CisKKy8qKgorICogSFRUUCBFeHRlbnNpb25z
IGZvciBEaXN0cmlidXRlZCBBdXRob3JpbmcgLS0gV0VCREFWCisgKiBodHRwOi8vd3d3LmlldGYu
b3JnL3JmYy9yZmMyNTE4LnR4dAorICovCit2YXIgUkZDMjUxOCA9IFsnUFJPUEZJTkQnLCAnUFJP
UFBBVENIJywgJ01LQ09MJywgJ0NPUFknLCAnTU9WRScsICdMT0NLJywgJ1VOTE9DSyddOworCisv
KioKKyAqIFZlcnNpb25pbmcgRXh0ZW5zaW9ucyB0byBXZWJEQVYKKyAqIGh0dHA6Ly93d3cuaWV0
Zi5vcmcvcmZjL3JmYzMyNTMudHh0CisgKi8KK3ZhciBSRkMzMjUzID0gWydWRVJTSU9OLUNPTlRS
T0wnLCAnUkVQT1JUJywgJ0NIRUNLT1VUJywgJ0NIRUNLSU4nLCAnVU5DSEVDS09VVCcsICdNS1dP
UktTUEFDRScsICdVUERBVEUnLCAnTEFCRUwnLCAnTUVSR0UnLCAnQkFTRUxJTkUtQ09OVFJPTCcs
ICdNS0FDVElWSVRZJ107CisKKy8qKgorICogT3JkZXJlZCBDb2xsZWN0aW9ucyBQcm90b2NvbCAo
V2ViREFWKQorICogaHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMzY0OC50eHQKKyAqLwordmFy
IFJGQzM2NDggPSBbJ09SREVSUEFUQ0gnXTsKKworLyoqCisgKiBXZWIgRGlzdHJpYnV0ZWQgQXV0
aG9yaW5nIGFuZCBWZXJzaW9uaW5nIChXZWJEQVYpIEFjY2VzcyBDb250cm9sIFByb3RvY29sCisg
KiBodHRwOi8vd3d3LmlldGYub3JnL3JmYy9yZmMzNzQ0LnR4dAorICovCit2YXIgUkZDMzc0NCA9
IFsnQUNMJ107CisKKy8qKgorICogV2ViIERpc3RyaWJ1dGVkIEF1dGhvcmluZyBhbmQgVmVyc2lv
bmluZyAoV2ViREFWKSBTRUFSQ0gKKyAqIGh0dHA6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzUzMjMu
dHh0CisgKi8KK3ZhciBSRkM1MzIzID0gWydTRUFSQ0gnXTsKKworLyoqCisgKiBQQVRDSCBNZXRo
b2QgZm9yIEhUVFAKKyAqIGh0dHA6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzU3ODkudHh0CisgKi8K
K3ZhciBSRkM1Nzg5ID0gWydQQVRDSCddOworCisvKioKKyAqIEV4cG9zZSB0aGUgbWV0aG9kcy4K
KyAqLworbW9kdWxlLmV4cG9ydHMgPSBbXS5jb25jYXQoCisgIFJGQzI2MTYsCisgIFJGQzI1MTgs
CisgIFJGQzMyNTMsCisgIFJGQzM2NDgsCisgIFJGQzM3NDQsCisgIFJGQzUzMjMsCisgIFJGQzU3
ODkKKykubWFwKGZ1bmN0aW9uIChtZXRob2QpIHsKKyAgcmV0dXJuIG1ldGhvZC50b0xvd2VyQ2Fz
ZSgpOworfSk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2Rp
cmVjdG9yL2xpYi9kaXJlY3Rvci9odHRwL3Jlc3BvbnNlcy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVy
eS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvbGliL2RpcmVjdG9yL2h0dHAvcmVzcG9uc2VzLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjFlMDAyYTIxNDNhNTAxZTU3YTQ4NmZmYzUyMDM5OTZiZTU3NjMwODIKLS0tIC9k
ZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL2xp
Yi9kaXJlY3Rvci9odHRwL3Jlc3BvbnNlcy5qcwpAQCAtMCwwICsxLDkzIEBACisvLworLy8gSFRU
UCBFcnJvciBvYmplY3RzdAorLy8KK3ZhciB1dGlsID0gcmVxdWlyZSgndXRpbCcpOworCitleHBv
cnRzLk5vdE1vZGlmaWVkID0gZnVuY3Rpb24gKCkgeworICB0aGlzLnN0YXR1cyA9IDMwNDsKKyAg
dGhpcy5vcHRpb25zID0geworICAgIHJlbW92ZUNvbnRlbnRIZWFkZXJzOiB0cnVlCisgIH07Cit9
OworCit1dGlsLmluaGVyaXRzKGV4cG9ydHMuTm90TW9kaWZpZWQsIEVycm9yKTsKKworZXhwb3J0
cy5CYWRSZXF1ZXN0ID0gZnVuY3Rpb24gKG1zZykgeworICBtc2cgPSBtc2cgfHwgJ0JhZCByZXF1
ZXN0JzsKKworICB0aGlzLnN0YXR1cyA9IDQwMDsKKyAgdGhpcy5oZWFkZXJzID0ge307CisgIHRo
aXMubWVzc2FnZSA9IG1zZzsKKyAgdGhpcy5ib2R5ID0geyBlcnJvcjogbXNnIH07Cit9OworCit1
dGlsLmluaGVyaXRzKGV4cG9ydHMuQmFkUmVxdWVzdCwgRXJyb3IpOworCitleHBvcnRzLk5vdEF1
dGhvcml6ZWQgPSBmdW5jdGlvbiAobXNnKSB7CisgIG1zZyA9IG1zZyB8fCAnTm90IEF1dGhvcml6
ZWQnOworCisgIHRoaXMuc3RhdHVzID0gNDAxOworICB0aGlzLmhlYWRlcnMgPSB7fTsKKyAgdGhp
cy5tZXNzYWdlID0gbXNnOworICB0aGlzLmJvZHkgPSB7IGVycm9yOiBtc2cgfTsKK307CisKK3V0
aWwuaW5oZXJpdHMoZXhwb3J0cy5Ob3RBdXRob3JpemVkLCBFcnJvcik7CisKK2V4cG9ydHMuRm9y
YmlkZGVuID0gZnVuY3Rpb24gKG1zZykgeworICBtc2cgPSBtc2cgfHwgJ05vdCBBdXRob3JpemVk
JzsKKworICB0aGlzLnN0YXR1cyA9IDQwMzsKKyAgdGhpcy5oZWFkZXJzID0ge307CisgIHRoaXMu
bWVzc2FnZSA9IG1zZzsKKyAgdGhpcy5ib2R5ID0geyBlcnJvcjogbXNnIH07Cit9OworCit1dGls
LmluaGVyaXRzKGV4cG9ydHMuRm9yYmlkZGVuLCBFcnJvcik7CisKK2V4cG9ydHMuTm90Rm91bmQg
PSBmdW5jdGlvbiAobXNnKSB7CisgIG1zZyA9IG1zZyB8fCAnTm90IEZvdW5kJzsKKworICB0aGlz
LnN0YXR1cyA9IDQwNDsKKyAgdGhpcy5oZWFkZXJzID0ge307CisgIHRoaXMubWVzc2FnZSA9IG1z
ZzsKKyAgdGhpcy5ib2R5ID0geyBlcnJvcjogbXNnIH07Cit9OworCit1dGlsLmluaGVyaXRzKGV4
cG9ydHMuTm90Rm91bmQsIEVycm9yKTsKKworZXhwb3J0cy5NZXRob2ROb3RBbGxvd2VkID0gZnVu
Y3Rpb24gKGFsbG93ZWQpIHsKKyAgdmFyIG1zZyA9ICdtZXRob2Qgbm90IGFsbG93ZWQuJzsKKwor
ICB0aGlzLnN0YXR1cyA9IDQwNTsKKyAgdGhpcy5oZWFkZXJzID0geyBhbGxvdzogYWxsb3dlZCB9
OworICB0aGlzLm1lc3NhZ2UgPSBtc2c7CisgIHRoaXMuYm9keSA9IHsgZXJyb3I6IG1zZyB9Owor
fTsKKwordXRpbC5pbmhlcml0cyhleHBvcnRzLk1ldGhvZE5vdEFsbG93ZWQsIEVycm9yKTsKKwor
ZXhwb3J0cy5Ob3RBY2NlcHRhYmxlID0gZnVuY3Rpb24gKGFjY2VwdCkgeworICB2YXIgbXNnID0g
J2Nhbm5vdCBnZW5lcmF0ZSAiJyArIGFjY2VwdCArICciIHJlc3BvbnNlJzsKKworICB0aGlzLnN0
YXR1cyA9IDQwNjsKKyAgdGhpcy5oZWFkZXJzID0ge307CisgIHRoaXMubWVzc2FnZSA9IG1zZzsK
KyAgdGhpcy5ib2R5ID0geworICAgIGVycm9yOiBtc2csCisgICAgb25seTogJ2FwcGxpY2F0aW9u
L2pzb24nCisgIH07Cit9OworCit1dGlsLmluaGVyaXRzKGV4cG9ydHMuTm90QWNjZXB0YWJsZSwg
RXJyb3IpOworCitleHBvcnRzLk5vdEltcGxlbWVudGVkID0gZnVuY3Rpb24gKG1zZykgeworICBt
c2cgPSBtc2cgfHwgJ05vdCBJbXBsZW1lbnRlZCc7CisKKyAgdGhpcy5zdGF0dXMgPSA1MDE7Cisg
IHRoaXMuaGVhZGVycyA9IHt9OworICB0aGlzLm1lc3NhZ2UgPSBtc2c7CisgIHRoaXMuYm9keSA9
IHsgZXJyb3I6IG1zZyB9OworfTsKKwordXRpbC5pbmhlcml0cyhleHBvcnRzLk5vdEltcGxlbWVu
dGVkLCBFcnJvcik7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVz
L2RpcmVjdG9yL2xpYi9kaXJlY3Rvci9yb3V0ZXIuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9k
ZV9tb2R1bGVzL2RpcmVjdG9yL2xpYi9kaXJlY3Rvci9yb3V0ZXIuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWY0
NDJlYjY2YmRmYThjNWQ4NDQzNDI3ZmM0N2Q5MmU3ZGVlNmM4YQotLS0gL2Rldi9udWxsCisrKyBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvbGliL2RpcmVjdG9yL3Jv
dXRlci5qcwpAQCAtMCwwICsxLDgxMiBAQAorLyoKKyAqIHJvdXRlci5qczogQmFzZSBmdW5jdGlv
bmFsaXR5IGZvciB0aGUgcm91dGVyLgorICoKKyAqIChDKSAyMDExLCBDaGFybGllIFJvYmJpbnMs
IFBhb2xvIEZyYWdvbWVuaSwgJiB0aGUgQ29udHJpYnV0b3JzLgorICogTUlUIExJQ0VOU0UKKyAq
CisgKi8KKwordmFyIFFVRVJZX1NFUEFSQVRPUiA9IC9cPy4qLzsKKworLy8KKy8vIEhlbHBlciBm
dW5jdGlvbiB0byB0dXJuIGZsYXR0ZW4gYW4gYXJyYXkuCisvLworZnVuY3Rpb24gX2ZsYXR0ZW4g
KGFycikgeworICB2YXIgZmxhdCA9IFtdOworCisgIGZvciAodmFyIGkgPSAwLCBuID0gYXJyLmxl
bmd0aDsgaSA8IG47IGkrKykgeworICAgIGZsYXQgPSBmbGF0LmNvbmNhdChhcnJbaV0pOworICB9
CisKKyAgcmV0dXJuIGZsYXQ7Cit9CisKKy8vCisvLyBIZWxwZXIgZnVuY3Rpb24gZm9yIHdyYXBw
aW5nIEFycmF5LmV2ZXJ5CisvLyBpbiB0aGUgYnJvd3Nlci4KKy8vCitmdW5jdGlvbiBfZXZlcnkg
KGFyciwgaXRlcmF0b3IpIHsKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpICs9
IDEpIHsKKyAgICBpZiAoaXRlcmF0b3IoYXJyW2ldLCBpLCBhcnIpID09PSBmYWxzZSkgeworICAg
ICAgcmV0dXJuOworICAgIH0KKyAgfQorfQorCisvLworLy8gSGVscGVyIGZ1bmN0aW9uIGZvciBw
ZXJmb3JtaW5nIGFuIGFzeW5jaHJvbm91cyBldmVyeQorLy8gaW4gc2VyaWVzIGluIHRoZSBicm93
c2VyIGFuZCB0aGUgc2VydmVyLgorLy8KK2Z1bmN0aW9uIF9hc3luY0V2ZXJ5U2VyaWVzIChhcnIs
IGl0ZXJhdG9yLCBjYWxsYmFjaykgeworICBpZiAoIWFyci5sZW5ndGgpIHsKKyAgICByZXR1cm4g
Y2FsbGJhY2soKTsKKyAgfQorCisgIHZhciBjb21wbGV0ZWQgPSAwOworICAoZnVuY3Rpb24gaXRl
cmF0ZSgpIHsKKyAgICBpdGVyYXRvcihhcnJbY29tcGxldGVkXSwgZnVuY3Rpb24gKGVycikgewor
ICAgICAgaWYgKGVyciB8fCBlcnIgPT09IGZhbHNlKSB7CisgICAgICAgIGNhbGxiYWNrKGVycik7
CisgICAgICAgIGNhbGxiYWNrID0gZnVuY3Rpb24gKCkge307CisgICAgICB9CisgICAgICBlbHNl
IHsKKyAgICAgICAgY29tcGxldGVkICs9IDE7CisgICAgICAgIGlmIChjb21wbGV0ZWQgPT09IGFy
ci5sZW5ndGgpIHsKKyAgICAgICAgICBjYWxsYmFjaygpOworICAgICAgICB9CisgICAgICAgIGVs
c2UgeworICAgICAgICAgIGl0ZXJhdGUoKTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0pOwor
ICB9KSgpOworfQorCisvLworLy8gSGVscGVyIGZ1bmN0aW9uIGZvciBleHBhbmRpbmcgIm5hbWVk
IiBtYXRjaGVzCisvLyAoZS5nLiBgOmRvZ2AsIGV0Yy4pIGFnYWluc3QgdGhlIGdpdmVuIHNldAor
Ly8gb2YgcGFyYW1zOgorLy8KKy8vICAgIHsKKy8vICAgICAgJzpkb2cnOiBmdW5jdGlvbiAoc3Ry
KSB7CisvLyAgICAgICAgcmV0dXJuIHN0ci5yZXBsYWNlKC86ZG9nLywgJ1RBUkdFVCcpOworLy8g
ICAgICB9CisvLyAgICAgIC4uLgorLy8gICAgfQorLy8KK2Z1bmN0aW9uIHBhcmFtaWZ5U3RyaW5n
KHN0ciwgcGFyYW1zLCBtb2QpIHsKKyAgbW9kID0gc3RyOworICBmb3IgKHZhciBwYXJhbSBpbiBw
YXJhbXMpIHsKKyAgICBpZiAocGFyYW1zLmhhc093blByb3BlcnR5KHBhcmFtKSkgeworICAgICAg
bW9kID0gcGFyYW1zW3BhcmFtXShzdHIpOworICAgICAgaWYgKG1vZCAhPT0gc3RyKSB7IGJyZWFr
OyB9CisgICAgfQorICB9CisKKyAgcmV0dXJuIG1vZCA9PT0gc3RyCisgICAgPyAnKFsuX2EtekEt
WjAtOS0lKCldKyknCisgICAgOiBtb2Q7Cit9CisKKy8vCisvLyBIZWxwZXIgZnVuY3Rpb24gZm9y
IGV4cGFuZGluZyB3aWxkY2FyZHMgKCopIGFuZAorLy8gIm5hbWVkIiBtYXRjaGVzICg6d2hhdGV2
ZXIpCisvLworZnVuY3Rpb24gcmVnaWZ5U3RyaW5nKHN0ciwgcGFyYW1zKSB7CisgIHZhciBtYXRj
aGVzLAorICAgICAgbGFzdCA9IDAsCisgICAgICBvdXQgPSAnJzsKKworICB3aGlsZSAobWF0Y2hl
cyA9IHN0ci5zdWJzdHIobGFzdCkubWF0Y2goL1teXHdcZFwtICVAJl0qXCpbXlx3XGRcLSAlQCZd
Ki8pKSB7CisgICAgbGFzdCA9IG1hdGNoZXMuaW5kZXggKyBtYXRjaGVzWzBdLmxlbmd0aDsKKyAg
ICBtYXRjaGVzWzBdID0gbWF0Y2hlc1swXS5yZXBsYWNlKC9eXCovLCAnKFtfXC5cKFwpIVxcICVA
JmEtekEtWjAtOS1dKyknKTsKKyAgICBvdXQgKz0gc3RyLnN1YnN0cigwLCBtYXRjaGVzLmluZGV4
KSArIG1hdGNoZXNbMF07CisgIH0KKworICBzdHIgPSBvdXQgKz0gc3RyLnN1YnN0cihsYXN0KTsK
KworICAgdmFyIGNhcHR1cmVzID0gc3RyLm1hdGNoKC86KFteXC9dKykvaWcpLAorICAgICAgIGNh
cHR1cmUsCisgICAgICAgbGVuZ3RoOworCisgICBpZiAoY2FwdHVyZXMpIHsKKyAgICAgbGVuZ3Ro
ID0gY2FwdHVyZXMubGVuZ3RoOworICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsr
KSB7CisgICAgICAgY2FwdHVyZSA9IGNhcHR1cmVzW2ldOworICAgICAgIGlmICggY2FwdHVyZS5z
bGljZSgwLCAyKSA9PT0gIjo6IiApIHsKKyAgICAgICAgICAgLy8gVGhpcyBwYXJhbWV0ZXIgd2Fz
IGVzY2FwZWQgYW5kIHNob3VsZCBiZSBsZWZ0IGluIHRoZSB1cmwgYXMgYSBsaXRlcmFsCisgICAg
ICAgICAgIC8vIFJlbW92ZSB0aGUgZXNjYXBpbmcgOiBmcm9tIHRoZSBiZWdpbm5pbmcKKyAgICAg
ICAgICAgc3RyID0gY2FwdHVyZS5zbGljZSggMSApOworICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgIHN0ciA9IHN0ci5yZXBsYWNlKGNhcHR1cmUsIHBhcmFtaWZ5U3RyaW5nKGNhcHR1cmUsIHBh
cmFtcykpOworICB9CisgICAgIH0KKyAgIH0KKworICByZXR1cm4gc3RyOworfQorCisvLworLy8g
IyMjIEZpeCB1bnRlcm1pbmF0ZWQgUmVnRXhwIGdyb3VwcyBpbiByb3V0ZXMuCisvLworZnVuY3Rp
b24gdGVybWluYXRvcihyb3V0ZXMsIGRlbGltaXRlciwgc3RhcnQsIHN0b3ApIHsKKyAgdmFyIGxh
c3QgPSAwLAorICAgICAgbGVmdCA9IDAsCisgICAgICByaWdodCA9IDAsCisgICAgICBzdGFydCA9
IChzdGFydCB8fCAnKCcpLnRvU3RyaW5nKCksCisgICAgICBzdG9wID0gKHN0b3AgfHwgJyknKS50
b1N0cmluZygpLAorICAgICAgaTsKKworICBmb3IgKGkgPSAwOyBpIDwgcm91dGVzLmxlbmd0aDsg
aSsrKSB7CisgICAgdmFyIGNodW5rID0gcm91dGVzW2ldOworCisgICAgaWYgKChjaHVuay5pbmRl
eE9mKHN0YXJ0LCBsYXN0KSA+IGNodW5rLmluZGV4T2Yoc3RvcCwgbGFzdCkpIHx8CisgICAgICAg
ICh+Y2h1bmsuaW5kZXhPZihzdGFydCwgbGFzdCkgJiYgIX5jaHVuay5pbmRleE9mKHN0b3AsIGxh
c3QpKSB8fAorICAgICAgICAoIX5jaHVuay5pbmRleE9mKHN0YXJ0LCBsYXN0KSAmJiB+Y2h1bmsu
aW5kZXhPZihzdG9wLCBsYXN0KSkpIHsKKworICAgICAgbGVmdCA9IGNodW5rLmluZGV4T2Yoc3Rh
cnQsIGxhc3QpOworICAgICAgcmlnaHQgPSBjaHVuay5pbmRleE9mKHN0b3AsIGxhc3QpOworCisg
ICAgICBpZiAoKH5sZWZ0ICYmICF+cmlnaHQpIHx8ICghfmxlZnQgJiYgfnJpZ2h0KSkgeworICAg
ICAgICB2YXIgdG1wID0gcm91dGVzLnNsaWNlKDAsIChpIHx8IDEpICsgMSkuam9pbihkZWxpbWl0
ZXIpOworICAgICAgICByb3V0ZXMgPSBbdG1wXS5jb25jYXQocm91dGVzLnNsaWNlKChpIHx8IDEp
ICsgMSkpOworICAgICAgfQorCisgICAgICBsYXN0ID0gKHJpZ2h0ID4gbGVmdCA/IHJpZ2h0IDog
bGVmdCkgKyAxOworICAgICAgaSA9IDA7CisgICAgfQorICAgIGVsc2UgeworICAgICAgbGFzdCA9
IDA7CisgICAgfQorICB9CisKKyAgcmV0dXJuIHJvdXRlczsKK30KKworCisKKy8vCisvLyAjIyMg
ZnVuY3Rpb24gUm91dGVyIChyb3V0ZXMpCisvLyAjIyMjIEByb3V0ZXMge09iamVjdH0gKipPcHRp
b25hbCoqIFJvdXRpbmcgdGFibGUgZm9yIHRoaXMgaW5zdGFuY2UuCisvLyBDb25zdHVjdG9yIGZ1
bmN0aW9uIGZvciB0aGUgUm91dGVyIG9iamVjdCByZXNwb25zaWJsZSBmb3IgYnVpbGRpbmcKKy8v
IGFuZCBkaXNwYXRjaGluZyBmcm9tIGEgZ2l2ZW4gcm91dGluZyB0YWJsZS4KKy8vCit2YXIgUm91
dGVyID0gZXhwb3J0cy5Sb3V0ZXIgPSBmdW5jdGlvbiAocm91dGVzKSB7CisgIHRoaXMucGFyYW1z
ICAgPSB7fTsKKyAgdGhpcy5yb3V0ZXMgICA9IHt9OworICB0aGlzLm1ldGhvZHMgID0gWydvbics
ICdhZnRlcicsICdiZWZvcmUnXTsKKyAgdGhpcy5zY29wZSAgICA9IFtdOworICB0aGlzLl9tZXRo
b2RzID0ge307CisKKyAgdGhpcy5jb25maWd1cmUoKTsKKyAgdGhpcy5tb3VudChyb3V0ZXMgfHwg
e30pOworfTsKKworLy8KKy8vICMjIyBmdW5jdGlvbiBjb25maWd1cmUgKG9wdGlvbnMpCisvLyAj
IyMjIEBvcHRpb25zIHtPYmplY3R9ICoqT3B0aW9uYWwqKiBPcHRpb25zIHRvIGNvbmZpZ3VyZSB0
aGlzIGluc3RhbmNlIHdpdGgKKy8vIENvbmZpZ3VyZXMgdGhpcyBpbnN0YW5jZSB3aXRoIHRoZSBz
cGVjaWZpZWQgYG9wdGlvbnNgLgorLy8KK1JvdXRlci5wcm90b3R5cGUuY29uZmlndXJlID0gZnVu
Y3Rpb24gKG9wdGlvbnMpIHsKKyAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307CisKKyAgZm9yICh2
YXIgaSA9IDA7IGkgPCB0aGlzLm1ldGhvZHMubGVuZ3RoOyBpKyspIHsKKyAgICB0aGlzLl9tZXRo
b2RzW3RoaXMubWV0aG9kc1tpXV0gPSB0cnVlOworICB9CisKKyAgdGhpcy5yZWN1cnNlICAgPSB0
eXBlb2Ygb3B0aW9ucy5yZWN1cnNlID09PSAndW5kZWZpbmVkJyA/IHRoaXMucmVjdXJzZSB8fCBm
YWxzZSA6IG9wdGlvbnMucmVjdXJzZTsKKyAgdGhpcy5hc3luYyAgICAgPSBvcHRpb25zLmFzeW5j
ICAgICB8fCBmYWxzZTsKKyAgdGhpcy5kZWxpbWl0ZXIgPSBvcHRpb25zLmRlbGltaXRlciB8fCAn
XC8nOworICB0aGlzLnN0cmljdCAgICA9IHR5cGVvZiBvcHRpb25zLnN0cmljdCA9PT0gJ3VuZGVm
aW5lZCcgPyB0cnVlIDogb3B0aW9ucy5zdHJpY3Q7CisgIHRoaXMubm90Zm91bmQgID0gb3B0aW9u
cy5ub3Rmb3VuZDsKKyAgdGhpcy5yZXNvdXJjZSAgPSBvcHRpb25zLnJlc291cmNlOworCisgIC8v
IENsaWVudCBvbmx5LCBidXQgYnJvd3Nlci5qcyBkb2VzIG5vdCBpbmNsdWRlIGEgc3VwZXIgaW1w
bGVtZW50YXRpb24KKyAgdGhpcy5oaXN0b3J5ICAgICA9IChvcHRpb25zLmh0bWw1aGlzdG9yeSAm
JiB0aGlzLmhpc3RvcnlTdXBwb3J0KSB8fCBmYWxzZTsKKyAgdGhpcy5ydW5faW5faW5pdCA9ICh0
aGlzLmhpc3RvcnkgPT09IHRydWUgJiYgb3B0aW9ucy5ydW5faGFuZGxlcl9pbl9pbml0ICE9PSBm
YWxzZSk7CisgIHRoaXMuY29udmVydF9oYXNoX2luX2luaXQgPSAodGhpcy5oaXN0b3J5ID09PSB0
cnVlICYmIG9wdGlvbnMuY29udmVydF9oYXNoX2luX2luaXQgIT09IGZhbHNlKTsKKworICAvLwor
ICAvLyBUT0RPOiBHbG9iYWwgb25jZQorICAvLworICB0aGlzLmV2ZXJ5ID0geworICAgIGFmdGVy
OiBvcHRpb25zLmFmdGVyIHx8IG51bGwsCisgICAgYmVmb3JlOiBvcHRpb25zLmJlZm9yZSB8fCBu
dWxsLAorICAgIG9uOiBvcHRpb25zLm9uIHx8IG51bGwKKyAgfTsKKworICByZXR1cm4gdGhpczsK
K307CisKKy8vCisvLyAjIyMgZnVuY3Rpb24gcGFyYW0gKHRva2VuLCByZWdleCkKKy8vICMjIyMg
QHRva2VuIHtzdHJpbmd9IFRva2VuIHdoaWNoIHRvIHJlcGxhY2UgKGUuZy4gYDpkb2dgLCAnY2F0
JykKKy8vICMjIyMgQG1hdGNoZXIge3N0cmluZ3xSZWdFeHB9IFRhcmdldCB0byByZXBsYWNlIHRo
ZSB0b2tlbiB3aXRoLgorLy8gU2V0dXBzIHVwIGEgYHBhcmFtc2AgZnVuY3Rpb24gd2hpY2ggcmVw
bGFjZXMgYW55IGluc3RhbmNlIG9mIGB0b2tlbmAsCisvLyBpbnNpZGUgb2YgYSBnaXZlbiBgc3Ry
YCB3aXRoIGBtYXRjaGVyYC4gVGhpcyBpcyB2ZXJ5IHVzZWZ1bCBpZiB5b3UKKy8vIGhhdmUgYSBj
b21tb24gcmVndWxhciBleHByZXNzaW9uIHRocm91Z2hvdXQgeW91ciBjb2RlIGJhc2Ugd2hpY2gK
Ky8vIHlvdSB3aXNoIHRvIGJlIG1vcmUgRFJZLgorLy8KK1JvdXRlci5wcm90b3R5cGUucGFyYW0g
PSBmdW5jdGlvbiAodG9rZW4sIG1hdGNoZXIpIHsKKyAgaWYgKHRva2VuWzBdICE9PSAnOicpIHsK
KyAgICB0b2tlbiA9ICc6JyArIHRva2VuOworICB9CisKKyAgdmFyIGNvbXBpbGVkID0gbmV3IFJl
Z0V4cCh0b2tlbiwgJ2cnKTsKKyAgdGhpcy5wYXJhbXNbdG9rZW5dID0gZnVuY3Rpb24gKHN0cikg
eworICAgIHJldHVybiBzdHIucmVwbGFjZShjb21waWxlZCwgbWF0Y2hlci5zb3VyY2UgfHwgbWF0
Y2hlcik7CisgIH07CisgIHJldHVybiB0aGlzOworfTsKKworLy8KKy8vICMjIyBmdW5jdGlvbiBv
biAobWV0aG9kLCBwYXRoLCByb3V0ZSkKKy8vICMjIyMgQG1ldGhvZCB7c3RyaW5nfSAqKk9wdGlv
bmFsKiogTWV0aG9kIHRvIHVzZQorLy8gIyMjIyBAcGF0aCB7QXJyYXl8c3RyaW5nfSBQYXRoIHRv
IHNldCB0aGlzIHJvdXRlIG9uLgorLy8gIyMjIyBAcm91dGUge0FycmF5fGZ1bmN0aW9ufSBIYW5k
bGVyIGZvciB0aGUgc3BlY2lmaWVkIG1ldGhvZCBhbmQgcGF0aC4KKy8vIEFkZHMgYSBuZXcgYHJv
dXRlYCB0byB0aGlzIGluc3RhbmNlIGZvciB0aGUgc3BlY2lmaWVkIGBtZXRob2RgCisvLyBhbmQg
YHBhdGhgLgorLy8KK1JvdXRlci5wcm90b3R5cGUub24gPSBSb3V0ZXIucHJvdG90eXBlLnJvdXRl
ID0gZnVuY3Rpb24gKG1ldGhvZCwgcGF0aCwgcm91dGUpIHsKKyAgdmFyIHNlbGYgPSB0aGlzOwor
CisgIGlmICghcm91dGUgJiYgdHlwZW9mIHBhdGggPT0gJ2Z1bmN0aW9uJykgeworICAgIC8vCisg
ICAgLy8gSWYgb25seSB0d28gYXJndW1lbnRzIGFyZSBzdXBwbGllZCB0aGVuIGFzc3VtZSB0aGlz
CisgICAgLy8gYHJvdXRlYCB3YXMgbWVhbnQgdG8gYmUgYSBnZW5lcmljIGBvbmAuCisgICAgLy8K
KyAgICByb3V0ZSA9IHBhdGg7CisgICAgcGF0aCA9IG1ldGhvZDsKKyAgICBtZXRob2QgPSAnb24n
OworICB9CisKKyAgaWYgKEFycmF5LmlzQXJyYXkocGF0aCkpIHsKKyAgICByZXR1cm4gcGF0aC5m
b3JFYWNoKGZ1bmN0aW9uKHApIHsKKyAgICAgIHNlbGYub24obWV0aG9kLCBwLCByb3V0ZSk7Cisg
ICAgfSk7CisgIH0KKworICBpZiAocGF0aC5zb3VyY2UpIHsKKyAgICBwYXRoID0gcGF0aC5zb3Vy
Y2UucmVwbGFjZSgvXFxcLy9pZywgJy8nKTsKKyAgfQorCisgIGlmIChBcnJheS5pc0FycmF5KG1l
dGhvZCkpIHsKKyAgICByZXR1cm4gbWV0aG9kLmZvckVhY2goZnVuY3Rpb24gKG0pIHsKKyAgICAg
IHNlbGYub24obS50b0xvd2VyQ2FzZSgpLCBwYXRoLCByb3V0ZSk7CisgICAgfSk7CisgIH0KKwor
ICAvLworICAvLyAjIyMgU3BsaXQgdGhlIHJvdXRlIHVwIGJ5IHRoZSBkZWxpbWl0ZXIuCisgIC8v
CisgIHBhdGggPSBwYXRoLnNwbGl0KG5ldyBSZWdFeHAodGhpcy5kZWxpbWl0ZXIpKTsKKworICAv
LworICAvLyAjIyMgRml4IHVudGVybWluYXRlZCBncm91cHMuIEZpeGVzICM1OQorICAvLworICBw
YXRoID0gdGVybWluYXRvcihwYXRoLCB0aGlzLmRlbGltaXRlcik7CisKKyAgdGhpcy5pbnNlcnQo
bWV0aG9kLCB0aGlzLnNjb3BlLmNvbmNhdChwYXRoKSwgcm91dGUpOworfTsKKworLy8KKy8vICMj
IyBmdW5jdGlvbiBwYXRoIChwYXRoLCByb3V0ZXNGbikKKy8vICMjIyMgQHBhdGgge3N0cmluZ3xS
ZWdFeHB9IE5lc3RlZCBzY29wZSBpbiB3aGljaCB0byBwYXRoCisvLyAjIyMjIEByb3V0ZXNGbiB7
ZnVuY3Rpb259IEZ1bmN0aW9uIHRvIGV2YWx1YXRlIGluIHRoZSBuZXcgc2NvcGUKKy8vIEV2YWx1
dGVzIHRoZSBgcm91dGVzRm5gIGluIHRoZSBnaXZlbiBwYXRoIHNjb3BlLgorLy8KK1JvdXRlci5w
cm90b3R5cGUucGF0aCA9IGZ1bmN0aW9uIChwYXRoLCByb3V0ZXNGbikgeworICB2YXIgc2VsZiA9
IHRoaXMsCisgICAgICBsZW5ndGggPSB0aGlzLnNjb3BlLmxlbmd0aDsKKworICBpZiAocGF0aC5z
b3VyY2UpIHsKKyAgICBwYXRoID0gcGF0aC5zb3VyY2UucmVwbGFjZSgvXFxcLy9pZywgJy8nKTsK
KyAgfQorCisgIC8vCisgIC8vICMjIyBTcGxpdCB0aGUgcm91dGUgdXAgYnkgdGhlIGRlbGltaXRl
ci4KKyAgLy8KKyAgcGF0aCA9IHBhdGguc3BsaXQobmV3IFJlZ0V4cCh0aGlzLmRlbGltaXRlcikp
OworCisgIC8vCisgIC8vICMjIyBGaXggdW50ZXJtaW5hdGVkIGdyb3Vwcy4KKyAgLy8KKyAgcGF0
aCA9IHRlcm1pbmF0b3IocGF0aCwgdGhpcy5kZWxpbWl0ZXIpOworICB0aGlzLnNjb3BlID0gdGhp
cy5zY29wZS5jb25jYXQocGF0aCk7CisKKyAgcm91dGVzRm4uY2FsbCh0aGlzLCB0aGlzKTsKKyAg
dGhpcy5zY29wZS5zcGxpY2UobGVuZ3RoLCBwYXRoLmxlbmd0aCk7Cit9OworCisvLworLy8gIyMj
IGZ1bmN0aW9uIGRpc3BhdGNoIChtZXRob2QsIHBhdGhbLCBjYWxsYmFja10pCisvLyAjIyMjIEBt
ZXRob2Qge3N0cmluZ30gTWV0aG9kIHRvIGRpc3BhdGNoCisvLyAjIyMjIEBwYXRoIHtzdHJpbmd9
IFBhdGggdG8gZGlzcGF0Y2gKKy8vICMjIyMgQGNhbGxiYWNrIHtmdW5jdGlvbn0gKipPcHRpb25h
bCoqIENvbnRpbnVhdGlvbiB0byByZXNwb25kIHRvIGZvciBhc3luYyBzY2VuYXJpb3MuCisvLyBG
aW5kcyBhIHNldCBvZiBmdW5jdGlvbnMgb24gdGhlIHRyYXZlcnNhbCB0b3dhcmRzCisvLyBgbWV0
aG9kYCBhbmQgYHBhdGhgIGluIHRoZSBjb3JlIHJvdXRpbmcgdGFibGUgdGhlbgorLy8gaW52b2tl
cyB0aGVtIGJhc2VkIG9uIHNldHRpbmdzIGluIHRoaXMgaW5zdGFuY2UuCisvLworUm91dGVyLnBy
b3RvdHlwZS5kaXNwYXRjaCA9IGZ1bmN0aW9uIChtZXRob2QsIHBhdGgsIGNhbGxiYWNrKSB7Cisg
IHZhciBzZWxmID0gdGhpcywKKyAgICAgIGZucyA9IHRoaXMudHJhdmVyc2UobWV0aG9kLCBwYXRo
LnJlcGxhY2UoUVVFUllfU0VQQVJBVE9SLCAnJyksIHRoaXMucm91dGVzLCAnJyksCisgICAgICBp
bnZva2VkID0gdGhpcy5faW52b2tlZCwKKyAgICAgIGFmdGVyOworCisgIHRoaXMuX2ludm9rZWQg
PSB0cnVlOworICBpZiAoIWZucyB8fCBmbnMubGVuZ3RoID09PSAwKSB7CisgICAgdGhpcy5sYXN0
ID0gW107CisgICAgaWYgKHR5cGVvZiB0aGlzLm5vdGZvdW5kID09PSAnZnVuY3Rpb24nKSB7Cisg
ICAgICB0aGlzLmludm9rZShbdGhpcy5ub3Rmb3VuZF0sIHsgbWV0aG9kOiBtZXRob2QsIHBhdGg6
IHBhdGggfSwgY2FsbGJhY2spOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKKyAgfQorCisg
IGlmICh0aGlzLnJlY3Vyc2UgPT09ICdmb3J3YXJkJykgeworICAgIGZucyA9IGZucy5yZXZlcnNl
KCk7CisgIH0KKworICBmdW5jdGlvbiB1cGRhdGVBbmRJbnZva2UoKSB7CisgICAgc2VsZi5sYXN0
ID0gZm5zLmFmdGVyOworICAgIHNlbGYuaW52b2tlKHNlbGYucnVubGlzdChmbnMpLCBzZWxmLCBj
YWxsYmFjayk7CisgIH0KKworICAvLworICAvLyBCdWlsZHMgdGhlIGxpc3Qgb2YgZnVuY3Rpb25z
IHRvIGludm9rZSBmcm9tIHRoaXMgY2FsbAorICAvLyB0byBkaXNwYXRjaCBjb25mb3JtaW5nIHRv
IHRoZSBmb2xsb3dpbmcgb3JkZXI6CisgIC8vCisgIC8vIDEuIEdsb2JhbCBhZnRlciAoaWYgYW55
KQorICAvLyAyLiBBZnRlciBmdW5jdGlvbnMgZnJvbSB0aGUgbGFzdCBjYWxsIHRvIGRpc3BhdGNo
CisgIC8vIDMuIEdsb2JhbCBiZWZvcmUgKGlmIGFueSkKKyAgLy8gNC4gR2xvYmFsIG9uIChpZiBh
bnkpCisgIC8vIDUuIE1hdGNoZWQgZnVuY3Rpb25zIGZyb20gcm91dGluZyB0YWJsZSAoYFsnYmVm
b3JlJywgJ29uJ10sIFsnYmVmb3JlJywgJ29uYF0sIC4uLl1gKQorICAvLworICBhZnRlciA9IHRo
aXMuZXZlcnkgJiYgdGhpcy5ldmVyeS5hZnRlcgorICAgID8gW3RoaXMuZXZlcnkuYWZ0ZXJdLmNv
bmNhdCh0aGlzLmxhc3QpCisgICAgOiBbdGhpcy5sYXN0XTsKKworICBpZiAoYWZ0ZXIgJiYgYWZ0
ZXIubGVuZ3RoID4gMCAmJiBpbnZva2VkKSB7CisgICAgaWYgKHRoaXMuYXN5bmMpIHsKKyAgICAg
IHRoaXMuaW52b2tlKGFmdGVyLCB0aGlzLCB1cGRhdGVBbmRJbnZva2UpOworICAgIH0KKyAgICBl
bHNlIHsKKyAgICAgIHRoaXMuaW52b2tlKGFmdGVyLCB0aGlzKTsKKyAgICAgIHVwZGF0ZUFuZElu
dm9rZSgpOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworICB9CisKKyAgdXBkYXRlQW5kSW52
b2tlKCk7CisgIHJldHVybiB0cnVlOworfTsKKworLy8KKy8vICMjIyBmdW5jdGlvbiBydW5saXN0
IChmbnMpCisvLyAjIyMjIEBmbnMge0FycmF5fSBMaXN0IG9mIGZ1bmN0aW9ucyB0byBpbmNsdWRl
IGluIHRoZSBydW5saXN0CisvLyBCdWlsZHMgdGhlIGxpc3Qgb2YgZnVuY3Rpb25zIHRvIGludm9r
ZSBmcm9tIHRoaXMgY2FsbAorLy8gdG8gZGlzcGF0Y2ggY29uZm9ybWluZyB0byB0aGUgZm9sbG93
aW5nIG9yZGVyOgorLy8KKy8vIDEuIEdsb2JhbCBiZWZvcmUgKGlmIGFueSkKKy8vIDIuIEdsb2Jh
bCBvbiAoaWYgYW55KQorLy8gMy4gTWF0Y2hlZCBmdW5jdGlvbnMgZnJvbSByb3V0aW5nIHRhYmxl
IChgWydiZWZvcmUnLCAnb24nXSwgWydiZWZvcmUnLCAnb25gXSwgLi4uXWApCisvLworUm91dGVy
LnByb3RvdHlwZS5ydW5saXN0ID0gZnVuY3Rpb24gKGZucykgeworICB2YXIgcnVubGlzdCA9IHRo
aXMuZXZlcnkgJiYgdGhpcy5ldmVyeS5iZWZvcmUKKyAgICA/IFt0aGlzLmV2ZXJ5LmJlZm9yZV0u
Y29uY2F0KF9mbGF0dGVuKGZucykpCisgICAgOiBfZmxhdHRlbihmbnMpOworCisgIGlmICh0aGlz
LmV2ZXJ5ICYmIHRoaXMuZXZlcnkub24pIHsKKyAgICBydW5saXN0LnB1c2godGhpcy5ldmVyeS5v
bik7CisgIH0KKworICBydW5saXN0LmNhcHR1cmVzID0gZm5zLmNhcHR1cmVzOworICBydW5saXN0
LnNvdXJjZSA9IGZucy5zb3VyY2U7CisgIHJldHVybiBydW5saXN0OworfTsKKworLy8KKy8vICMj
IyBmdW5jdGlvbiBpbnZva2UgKGZucywgdGhpc0FyZykKKy8vICMjIyMgQGZucyB7QXJyYXl9IFNl
dCBvZiBmdW5jdGlvbnMgdG8gaW52b2tlIGluIG9yZGVyLgorLy8gIyMjIyBAdGhpc0FyZyB7T2Jq
ZWN0fSBgdGhpc0FyZ2AgZm9yIGVhY2ggZnVuY3Rpb24uCisvLyAjIyMjIEBjYWxsYmFjayB7ZnVu
Y3Rpb259ICoqT3B0aW9uYWwqKiBDb250aW51YXRpb24gdG8gcGFzcyBjb250cm9sIHRvIGZvciBh
c3luYyBgZm5zYC4KKy8vIEludm9rZXMgdGhlIGBmbnNgIHN5bmNocm9ub3VzbHkgb3IgYXN5bmNo
cm9ub3VzbHkgZGVwZW5kaW5nIG9uIHRoZQorLy8gdmFsdWUgb2YgYHRoaXMuYXN5bmNgLiBFYWNo
IGZ1bmN0aW9uIG11c3QgKipub3QqKiByZXR1cm4gKG9yIHJlc3BvbmQpCisvLyB3aXRoIGZhbHNl
LCBvciBldmFsdWF0aW9uIHdpbGwgc2hvcnQgY2lyY3VpdC4KKy8vCitSb3V0ZXIucHJvdG90eXBl
Lmludm9rZSA9IGZ1bmN0aW9uIChmbnMsIHRoaXNBcmcsIGNhbGxiYWNrKSB7CisgIHZhciBzZWxm
ID0gdGhpczsKKworICB2YXIgYXBwbHk7CisgIGlmICh0aGlzLmFzeW5jKSB7CisgICAgYXBwbHkg
PSBmdW5jdGlvbihmbiwgbmV4dCl7CisgICAgICBpZiAoQXJyYXkuaXNBcnJheShmbikpIHsKKyAg
ICAgICAgcmV0dXJuIF9hc3luY0V2ZXJ5U2VyaWVzKGZuLCBhcHBseSwgbmV4dCk7CisgICAgICB9
CisgICAgICBlbHNlIGlmICh0eXBlb2YgZm4gPT0gJ2Z1bmN0aW9uJykgeworICAgICAgICBmbi5h
cHBseSh0aGlzQXJnLCAoZm5zLmNhcHR1cmVzIHx8IFtdKS5jb25jYXQobmV4dCkpOworICAgICAg
fQorICAgIH07CisgICAgX2FzeW5jRXZlcnlTZXJpZXMoZm5zLCBhcHBseSwgZnVuY3Rpb24gKCkg
eworICAgICAgLy8KKyAgICAgIC8vIElnbm9yZSB0aGUgcmVzcG9uc2UgaGVyZS4gTGV0IHRoZSBy
b3V0ZWQgdGFrZSBjYXJlCisgICAgICAvLyBvZiB0aGVtc2VsdmVzIGFuZCBlYWdlcmx5IHJldHVy
biB0cnVlLgorICAgICAgLy8KKworICAgICAgaWYgKGNhbGxiYWNrKSB7CisgICAgICAgIGNhbGxi
YWNrLmFwcGx5KHRoaXNBcmcsIGFyZ3VtZW50cyk7CisgICAgICB9CisgICAgfSk7CisgIH0KKyAg
ZWxzZSB7CisgICAgYXBwbHkgPSBmdW5jdGlvbihmbil7CisgICAgICBpZiAoQXJyYXkuaXNBcnJh
eShmbikpIHsKKyAgICAgICAgcmV0dXJuIF9ldmVyeShmbiwgYXBwbHkpOworICAgICAgfQorICAg
ICAgZWxzZSBpZiAodHlwZW9mIGZuID09PSAnZnVuY3Rpb24nKSB7CisgICAgICAgIHJldHVybiBm
bi5hcHBseSh0aGlzQXJnLCBmbnMuY2FwdHVyZXMgfHwgW10pOworICAgICAgfQorICAgICAgZWxz
ZSBpZiAodHlwZW9mIGZuID09PSAnc3RyaW5nJyAmJiBzZWxmLnJlc291cmNlKSB7CisgICAgICAg
IHNlbGYucmVzb3VyY2VbZm5dLmFwcGx5KHRoaXNBcmcsIGZucy5jYXB0dXJlcyB8fCBbXSk7Cisg
ICAgICB9CisgICAgfQorICAgIF9ldmVyeShmbnMsIGFwcGx5KTsKKyAgfQorfTsKKworLy8KKy8v
ICMjIyBmdW5jdGlvbiB0cmF2ZXJzZSAobWV0aG9kLCBwYXRoLCByb3V0ZXMsIHJlZ2V4cCkKKy8v
ICMjIyMgQG1ldGhvZCB7c3RyaW5nfSBNZXRob2QgdG8gZmluZCBpbiB0aGUgYHJvdXRlc2AgdGFi
bGUuCisvLyAjIyMjIEBwYXRoIHtzdHJpbmd9IFBhdGggdG8gZmluZCBpbiB0aGUgYHJvdXRlc2Ag
dGFibGUuCisvLyAjIyMjIEByb3V0ZXMge09iamVjdH0gUGFydGlhbCByb3V0aW5nIHRhYmxlIHRv
IG1hdGNoIGFnYWluc3QKKy8vICMjIyMgQHJlZ2V4cCB7c3RyaW5nfSBQYXJ0aWFsIHJlZ2V4cCBy
ZXByZXNlbnRpbmcgdGhlIHBhdGggdG8gYHJvdXRlc2AuCisvLyAjIyMjIEBmaWx0ZXIge2Z1bmN0
aW9ufSBGaWx0ZXIgZnVuY3Rpb24gZm9yIGZpbHRlcmluZyByb3V0ZXMgKGV4cGVuc2l2ZSkuCisv
LyBDb3JlIHJvdXRpbmcgbG9naWMgZm9yIGBkaXJlY3Rvci5Sb3V0ZXJgOiB0cmF2ZXJzZXMgdGhl
CisvLyBzcGVjaWZpZWQgYHBhdGhgIHdpdGhpbiBgdGhpcy5yb3V0ZXNgIGxvb2tpbmcgZm9yIGBt
ZXRob2RgCisvLyByZXR1cm5pbmcgYW55IGBmbnNgIHRoYXQgYXJlIGZvdW5kLgorLy8KK1JvdXRl
ci5wcm90b3R5cGUudHJhdmVyc2UgPSBmdW5jdGlvbiAobWV0aG9kLCBwYXRoLCByb3V0ZXMsIHJl
Z2V4cCwgZmlsdGVyKSB7CisgIHZhciBmbnMgPSBbXSwKKyAgICAgIGN1cnJlbnQsCisgICAgICBl
eGFjdCwKKyAgICAgIG1hdGNoLAorICAgICAgbmV4dCwKKyAgICAgIHRoYXQ7CisKKyAgZnVuY3Rp
b24gZmlsdGVyUm91dGVzKHJvdXRlcykgeworICAgIGlmICghZmlsdGVyKSB7CisgICAgICByZXR1
cm4gcm91dGVzOworICAgIH0KKworICAgIGZ1bmN0aW9uIGRlZXBDb3B5KHNvdXJjZSkgeworICAg
ICAgdmFyIHJlc3VsdCA9IFtdOworICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzb3VyY2UubGVu
Z3RoOyBpKyspIHsKKyAgICAgICAgcmVzdWx0W2ldID0gQXJyYXkuaXNBcnJheShzb3VyY2VbaV0p
ID8gZGVlcENvcHkoc291cmNlW2ldKSA6IHNvdXJjZVtpXTsKKyAgICAgIH0KKyAgICAgIHJldHVy
biByZXN1bHQ7CisgICAgfQorCisgICAgZnVuY3Rpb24gYXBwbHlGaWx0ZXIoZm5zKSB7CisgICAg
ICBmb3IgKHZhciBpID0gZm5zLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7CisgICAgICAgIGlm
IChBcnJheS5pc0FycmF5KGZuc1tpXSkpIHsKKyAgICAgICAgICBhcHBseUZpbHRlcihmbnNbaV0p
OworICAgICAgICAgIGlmIChmbnNbaV0ubGVuZ3RoID09PSAwKSB7CisgICAgICAgICAgICBmbnMu
c3BsaWNlKGksIDEpOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICBpZiAoIWZpbHRlcihmbnNbaV0pKSB7CisgICAgICAgICAgICBmbnMuc3BsaWNlKGks
IDEpOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKworICAgIHZhciBu
ZXdSb3V0ZXMgPSBkZWVwQ29weShyb3V0ZXMpOworICAgIG5ld1JvdXRlcy5tYXRjaGVkID0gcm91
dGVzLm1hdGNoZWQ7CisgICAgbmV3Um91dGVzLmNhcHR1cmVzID0gcm91dGVzLmNhcHR1cmVzOwor
ICAgIG5ld1JvdXRlcy5hZnRlciA9IHJvdXRlcy5hZnRlci5maWx0ZXIoZmlsdGVyKTsKKworICAg
IGFwcGx5RmlsdGVyKG5ld1JvdXRlcyk7CisKKyAgICByZXR1cm4gbmV3Um91dGVzOworICB9CisK
KyAgLy8KKyAgLy8gQmFzZSBDYXNlICMxOgorICAvLyBJZiB3ZSBhcmUgZGlzcGF0Y2hpbmcgZnJv
bSB0aGUgcm9vdAorICAvLyB0aGVuIG9ubHkgY2hlY2sgaWYgdGhlIG1ldGhvZCBleGlzdHMuCisg
IC8vCisgIGlmIChwYXRoID09PSB0aGlzLmRlbGltaXRlciAmJiByb3V0ZXNbbWV0aG9kXSkgewor
ICAgIG5leHQgPSBbW3JvdXRlcy5iZWZvcmUsIHJvdXRlc1ttZXRob2RdXS5maWx0ZXIoQm9vbGVh
bildOworICAgIG5leHQuYWZ0ZXIgPSBbcm91dGVzLmFmdGVyXS5maWx0ZXIoQm9vbGVhbik7Cisg
ICAgbmV4dC5tYXRjaGVkID0gdHJ1ZTsKKyAgICBuZXh0LmNhcHR1cmVzID0gW107CisgICAgcmV0
dXJuIGZpbHRlclJvdXRlcyhuZXh0KTsKKyAgfQorCisgIGZvciAodmFyIHIgaW4gcm91dGVzKSB7
CisgICAgLy8KKyAgICAvLyBXZSBkb250IGhhdmUgYW4gZXhhY3QgbWF0Y2gsIGxldHMgZXhwbG9y
ZSB0aGUgdHJlZQorICAgIC8vIGluIGEgZGVwdGgtZmlyc3QsIHJlY3Vyc2l2ZSwgaW4tb3JkZXIg
bWFubmVyIHdoZXJlCisgICAgLy8gb3JkZXIgaXMgZGVmaW5lZCBhczoKKyAgICAvLworICAgIC8v
ICAgIFsnYmVmb3JlJywgJ29uJywgJzxtZXRob2Q+JywgJ2FmdGVyJ10KKyAgICAvLworICAgIC8v
IFJlbWVtYmVyIHRvIGlnbm9yZSBrZXlzIChpLmUuIHZhbHVlcyBvZiBgcmApIHdoaWNoCisgICAg
Ly8gYXJlIGFjdHVhbCBtZXRob2RzIChlLmcuIGBvbmAsIGBiZWZvcmVgLCBldGMpLCBidXQKKyAg
ICAvLyB3aGljaCBhcmUgbm90IGFjdHVhbCBuZXN0ZWQgcm91dGUgKGkuZS4gSlNPTiBsaXRlcmFs
cykuCisgICAgLy8KKyAgICBpZiAocm91dGVzLmhhc093blByb3BlcnR5KHIpICYmICghdGhpcy5f
bWV0aG9kc1tyXSB8fAorICAgICAgdGhpcy5fbWV0aG9kc1tyXSAmJiB0eXBlb2Ygcm91dGVzW3Jd
ID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShyb3V0ZXNbcl0pKSkgeworICAgICAgLy8K
KyAgICAgIC8vIEF0dGVtcHQgdG8gbWFrZSBhbiBleGFjdCBtYXRjaCBmb3IgdGhlIGN1cnJlbnQg
cm91dGUKKyAgICAgIC8vIHdoaWNoIGlzIGJ1aWx0IGZyb20gdGhlIGByZWdleHBgIHRoYXQgaGFz
IGJlZW4gYnVpbHQKKyAgICAgIC8vIHRocm91Z2ggcmVjdXJzaXZlIGl0ZXJhdGlvbi4KKyAgICAg
IC8vCisgICAgICBjdXJyZW50ID0gZXhhY3QgPSByZWdleHAgKyB0aGlzLmRlbGltaXRlciArIHI7
CisKKyAgICAgIGlmICghdGhpcy5zdHJpY3QpIHsKKyAgICAgICAgZXhhY3QgKz0gJ1snICsgdGhp
cy5kZWxpbWl0ZXIgKyAnXT8nOworICAgICAgfQorCisgICAgICBtYXRjaCA9IHBhdGgubWF0Y2go
bmV3IFJlZ0V4cCgnXicgKyBleGFjdCkpOworCisgICAgICBpZiAoIW1hdGNoKSB7CisgICAgICAg
IC8vCisgICAgICAgIC8vIElmIHRoZXJlIGlzbid0IGEgYG1hdGNoYCB0aGVuIGNvbnRpbnVlLiBI
ZXJlLCB0aGUKKyAgICAgICAgLy8gYG1hdGNoYCBpcyBhIHBhcnRpYWwgbWF0Y2guIGUuZy4KKyAg
ICAgICAgLy8KKyAgICAgICAgLy8gICAgJy9mb28vYmFyL2J1enonLm1hdGNoKC9eXC9mb28vKSAg
IC8vIFsnL2ZvbyddCisgICAgICAgIC8vICAgICcvbm8tbWF0Y2gvcm91dGUnLm1hdGNoKC9eXC9m
b28vKSAvLyBudWxsCisgICAgICAgIC8vCisgICAgICAgIGNvbnRpbnVlOworICAgICAgfQorCisg
ICAgICBpZiAobWF0Y2hbMF0gJiYgbWF0Y2hbMF0gPT0gcGF0aCAmJiByb3V0ZXNbcl1bbWV0aG9k
XSkgeworICAgICAgICAvLworICAgICAgICAvLyAjIyMgQmFzZSBjYXNlIDI6CisgICAgICAgIC8v
IElmIHdlIGhhZCBhIGBtYXRjaGAgYW5kIHRoZSBjYXB0dXJlIGlzIHRoZSBwYXRoIGl0c2VsZiwK
KyAgICAgICAgLy8gdGhlbiB3ZSBoYXZlIGNvbXBsZXRlZCBvdXIgcmVjdXJzaW9uLgorICAgICAg
ICAvLworICAgICAgICBuZXh0ID0gW1tyb3V0ZXNbcl0uYmVmb3JlLCByb3V0ZXNbcl1bbWV0aG9k
XV0uZmlsdGVyKEJvb2xlYW4pXTsKKyAgICAgICAgbmV4dC5hZnRlciA9IFtyb3V0ZXNbcl0uYWZ0
ZXJdLmZpbHRlcihCb29sZWFuKTsKKyAgICAgICAgbmV4dC5tYXRjaGVkID0gdHJ1ZTsKKyAgICAg
ICAgbmV4dC5jYXB0dXJlcyA9IG1hdGNoLnNsaWNlKDEpOworCisgICAgICAgIGlmICh0aGlzLnJl
Y3Vyc2UgJiYgcm91dGVzID09PSB0aGlzLnJvdXRlcykgeworICAgICAgICAgIG5leHQucHVzaChb
cm91dGVzLmJlZm9yZSwgcm91dGVzLm9uXS5maWx0ZXIoQm9vbGVhbikpOworICAgICAgICAgIG5l
eHQuYWZ0ZXIgPSBuZXh0LmFmdGVyLmNvbmNhdChbcm91dGVzLmFmdGVyXS5maWx0ZXIoQm9vbGVh
bikpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGZpbHRlclJvdXRlcyhuZXh0KTsKKyAg
ICAgIH0KKworICAgICAgLy8KKyAgICAgIC8vICMjIyBSZWN1cnNpdmUgY2FzZToKKyAgICAgIC8v
IElmIHdlIGhhZCBhIG1hdGNoLCBidXQgaXQgaXMgbm90IHlldCBhbiBleGFjdCBtYXRjaCB0aGVu
CisgICAgICAvLyBhdHRlbXB0IHRvIGNvbnRpbnVlIG1hdGNoaW5nIGFnYWluc3QgdGhlIG5leHQg
cG9ydGlvbiBvZiB0aGUKKyAgICAgIC8vIHJvdXRpbmcgdGFibGUuCisgICAgICAvLworICAgICAg
bmV4dCA9IHRoaXMudHJhdmVyc2UobWV0aG9kLCBwYXRoLCByb3V0ZXNbcl0sIGN1cnJlbnQpOwor
CisgICAgICAvLworICAgICAgLy8gYG5leHQubWF0Y2hlZGAgd2lsbCBiZSB0cnVlIGlmIHRoZSBk
ZXB0aC1maXJzdCBzZWFyY2ggb2YgdGhlIHJvdXRpbmcKKyAgICAgIC8vIHRhYmxlIGZyb20gdGhp
cyBwb3NpdGlvbiB3YXMgc3VjY2Vzc2Z1bC4KKyAgICAgIC8vCisgICAgICBpZiAobmV4dC5tYXRj
aGVkKSB7CisgICAgICAgIC8vCisgICAgICAgIC8vIEJ1aWxkIHRoZSBpbi1wbGFjZSB0cmVlIHN0
cnVjdHVyZSByZXByZXNlbnRpbmcgdGhlIGZ1bmN0aW9uCisgICAgICAgIC8vIGluIHRoZSBjb3Jy
ZWN0IG9yZGVyLgorICAgICAgICAvLworICAgICAgICBpZiAobmV4dC5sZW5ndGggPiAwKSB7Cisg
ICAgICAgICAgZm5zID0gZm5zLmNvbmNhdChuZXh0KTsKKyAgICAgICAgfQorCisgICAgICAgIGlm
ICh0aGlzLnJlY3Vyc2UpIHsKKyAgICAgICAgICBmbnMucHVzaChbcm91dGVzW3JdLmJlZm9yZSwg
cm91dGVzW3JdW21ldGhvZF1dLmZpbHRlcihCb29sZWFuKSk7CisgICAgICAgICAgbmV4dC5hZnRl
ciA9IG5leHQuYWZ0ZXIuY29uY2F0KFtyb3V0ZXNbcl0uYWZ0ZXJdLmZpbHRlcihCb29sZWFuKSk7
CisKKyAgICAgICAgICBpZiAocm91dGVzID09PSB0aGlzLnJvdXRlcykgeworICAgICAgICAgICAg
Zm5zLnB1c2goW3JvdXRlc1snYmVmb3JlJ10sIHJvdXRlc1snb24nXV0uZmlsdGVyKEJvb2xlYW4p
KTsKKyAgICAgICAgICAgIG5leHQuYWZ0ZXIgPSBuZXh0LmFmdGVyLmNvbmNhdChbcm91dGVzWydh
ZnRlciddXS5maWx0ZXIoQm9vbGVhbikpOworICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAg
ICAgIGZucy5tYXRjaGVkID0gdHJ1ZTsKKyAgICAgICAgZm5zLmNhcHR1cmVzID0gbmV4dC5jYXB0
dXJlczsKKyAgICAgICAgZm5zLmFmdGVyID0gbmV4dC5hZnRlcjsKKworICAgICAgICAvLworICAg
ICAgICAvLyAjIyMgQmFzZSBjYXNlIDI6CisgICAgICAgIC8vIENvbnRpbnVlIHBhc3NpbmcgdGhl
IHBhcnRpYWwgdHJlZSBzdHJ1Y3R1cmUgYmFjayB1cCB0aGUgc3RhY2suCisgICAgICAgIC8vIFRo
ZSBjYWxsZXIgZm9yIGBkaXNwYXRjaCgpYCB3aWxsIGRlY2lkZSB3aGF0IHRvIGRvIHdpdGggdGhl
IGZ1bmN0aW9ucy4KKyAgICAgICAgLy8KKyAgICAgICAgcmV0dXJuIGZpbHRlclJvdXRlcyhmbnMp
OworICAgICAgfQorICAgIH0KKyAgfQorCisgIHJldHVybiBmYWxzZTsKK307CisKKy8vCisvLyAj
IyMgZnVuY3Rpb24gaW5zZXJ0IChtZXRob2QsIHBhdGgsIHJvdXRlLCBjb250ZXh0KQorLy8gIyMj
IyBAbWV0aG9kIHtzdHJpbmd9IE1ldGhvZCB0byBpbnNlcnQgdGhlIHNwZWNpZmljIGByb3V0ZWAu
CisvLyAjIyMjIEBwYXRoIHtBcnJheX0gUGFyc2VkIHBhdGggdG8gaW5zZXJ0IHRoZSBgcm91dGVg
IGF0LgorLy8gIyMjIyBAcm91dGUge0FycmF5fGZ1bmN0aW9ufSBSb3V0ZSBoYW5kbGVycyB0byBp
bnNlcnQuCisvLyAjIyMjIEBwYXJlbnQge09iamVjdH0gKipPcHRpb25hbCoqIFBhcmVudCAicm91
dGVzIiB0byBpbnNlcnQgaW50by4KKy8vIEluc2VydHMgdGhlIGByb3V0ZWAgZm9yIHRoZSBgbWV0
aG9kYCBpbnRvIHRoZSByb3V0aW5nIHRhYmxlIGZvcgorLy8gdGhpcyBpbnN0YW5jZSBhdCB0aGUg
c3BlY2lmaWVkIGBwYXRoYCB3aXRoaW4gdGhlIGBjb250ZXh0YCBwcm92aWRlZC4KKy8vIElmIG5v
IGNvbnRleHQgaXMgcHJvdmlkZWQgdGhlbiBgdGhpcy5yb3V0ZXNgIHdpbGwgYmUgdXNlZC4KKy8v
CitSb3V0ZXIucHJvdG90eXBlLmluc2VydCA9IGZ1bmN0aW9uIChtZXRob2QsIHBhdGgsIHJvdXRl
LCBwYXJlbnQpIHsKKyAgdmFyIG1ldGhvZFR5cGUsCisgICAgICBwYXJlbnRUeXBlLAorICAgICAg
aXNBcnJheSwKKyAgICAgIG5lc3RlZCwKKyAgICAgIHBhcnQ7CisKKyAgcGF0aCA9IHBhdGguZmls
dGVyKGZ1bmN0aW9uIChwKSB7CisgICAgcmV0dXJuIHAgJiYgcC5sZW5ndGggPiAwOworICB9KTsK
KworICBwYXJlbnQgPSBwYXJlbnQgfHwgdGhpcy5yb3V0ZXM7CisgIHBhcnQgPSBwYXRoLnNoaWZ0
KCk7CisgIGlmICgvXDp8XCovLnRlc3QocGFydCkgJiYgIS9cXGR8XFx3Ly50ZXN0KHBhcnQpKSB7
CisgICAgcGFydCA9IHJlZ2lmeVN0cmluZyhwYXJ0LCB0aGlzLnBhcmFtcyk7CisgIH0KKworICBp
ZiAocGF0aC5sZW5ndGggPiAwKSB7CisgICAgLy8KKyAgICAvLyBJZiB0aGlzIGlzIG5vdCB0aGUg
bGFzdCBwYXJ0IGxlZnQgaW4gdGhlIGBwYXRoYAorICAgIC8vIChlLmcuIGBbJ2NpdGllcycsICdu
ZXcteW9yayddYCkgdGhlbiByZWN1cnNlIGludG8gdGhhdAorICAgIC8vIGNoaWxkCisgICAgLy8K
KyAgICBwYXJlbnRbcGFydF0gPSBwYXJlbnRbcGFydF0gfHwge307CisgICAgcmV0dXJuIHRoaXMu
aW5zZXJ0KG1ldGhvZCwgcGF0aCwgcm91dGUsIHBhcmVudFtwYXJ0XSk7CisgIH0KKworICAvLwor
ICAvLyBJZiB0aGVyZSBpcyBubyBwYXJ0IGFuZCB0aGUgcGF0aCBoYXMgYmVlbiBleGhhdXN0ZWQK
KyAgLy8gYW5kIHRoZSBwYXJlbnQgaXMgdGhlIHJvb3Qgb2YgdGhlIHJvdXRpbmcgdGFibGUsCisg
IC8vIHRoZW4gd2UgYXJlIGluc2VydGluZyBpbnRvIHRoZSByb290IGFuZCBzaG91bGQKKyAgLy8g
b25seSBkaXZlIG9uZSBsZXZlbCBkZWVwIGluIHRoZSBSb3V0aW5nIFRhYmxlLgorICAvLworICBp
ZiAoIXBhcnQgJiYgIXBhdGgubGVuZ3RoICYmIHBhcmVudCA9PT0gdGhpcy5yb3V0ZXMpIHsKKyAg
ICBtZXRob2RUeXBlID0gdHlwZW9mIHBhcmVudFttZXRob2RdOworCisgICAgc3dpdGNoIChtZXRo
b2RUeXBlKSB7CisgICAgICBjYXNlICdmdW5jdGlvbic6CisgICAgICAgIHBhcmVudFttZXRob2Rd
ID0gW3BhcmVudFttZXRob2RdLCByb3V0ZV07CisgICAgICAgIHJldHVybjsKKyAgICAgIGNhc2Ug
J29iamVjdCc6CisgICAgICAgIHBhcmVudFttZXRob2RdLnB1c2gocm91dGUpOworICAgICAgICBy
ZXR1cm47CisgICAgICBjYXNlICd1bmRlZmluZWQnOgorICAgICAgICBwYXJlbnRbbWV0aG9kXSA9
IHJvdXRlOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgcmV0dXJuOworICB9CisKKyAg
Ly8KKyAgLy8gT3RoZXJ3aXNlLCB3ZSBhcmUgYXQgdGhlIGVuZCBvZiBvdXIgaW5zZXJ0aW9uIHNv
IHdlIHNob3VsZAorICAvLyBpbnNlcnQgdGhlIGByb3V0ZWAgYmFzZWQgb24gdGhlIGBtZXRob2Rg
IGFmdGVyIGdldHRpbmcgdGhlCisgIC8vIGBwYXJlbnRgIG9mIHRoZSBsYXN0IGBwYXJ0YC4KKyAg
Ly8KKyAgcGFyZW50VHlwZSA9IHR5cGVvZiBwYXJlbnRbcGFydF07CisgIGlzQXJyYXkgPSBBcnJh
eS5pc0FycmF5KHBhcmVudFtwYXJ0XSk7CisKKyAgaWYgKHBhcmVudFtwYXJ0XSAmJiAhaXNBcnJh
eSAmJiBwYXJlbnRUeXBlID09ICdvYmplY3QnKSB7CisgICAgbWV0aG9kVHlwZSA9IHR5cGVvZiBw
YXJlbnRbcGFydF1bbWV0aG9kXTsKKworICAgIHN3aXRjaCAobWV0aG9kVHlwZSkgeworICAgICAg
Y2FzZSAnZnVuY3Rpb24nOgorICAgICAgICBwYXJlbnRbcGFydF1bbWV0aG9kXSA9IFtwYXJlbnRb
cGFydF1bbWV0aG9kXSwgcm91dGVdOworICAgICAgICByZXR1cm47CisgICAgICBjYXNlICdvYmpl
Y3QnOgorICAgICAgICBwYXJlbnRbcGFydF1bbWV0aG9kXS5wdXNoKHJvdXRlKTsKKyAgICAgICAg
cmV0dXJuOworICAgICAgY2FzZSAndW5kZWZpbmVkJzoKKyAgICAgICAgcGFyZW50W3BhcnRdW21l
dGhvZF0gPSByb3V0ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgfQorICBlbHNlIGlmIChw
YXJlbnRUeXBlID09ICd1bmRlZmluZWQnKSB7CisgICAgbmVzdGVkID0ge307CisgICAgbmVzdGVk
W21ldGhvZF0gPSByb3V0ZTsKKyAgICBwYXJlbnRbcGFydF0gPSBuZXN0ZWQ7CisgICAgcmV0dXJu
OworICB9CisKKyAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHJvdXRlIGNvbnRleHQ6ICcgKyBw
YXJlbnRUeXBlKTsKK307CisKKworLy8KKy8vICMjIyBmdW5jdGlvbiBleHRlbmQgKG1ldGhvZHMp
CisvLyAjIyMjIEBtZXRob2RzIHtBcnJheX0gTGlzdCBvZiBtZXRob2QgbmFtZXMgdG8gZXh0ZW5k
IHRoaXMgaW5zdGFuY2Ugd2l0aAorLy8gRXh0ZW5kcyB0aGlzIGluc3RhbmNlIHdpdGggc2ltcGxl
IGhlbHBlciBtZXRob2RzIHRvIGB0aGlzLm9uYAorLy8gZm9yIGVhY2ggb2YgdGhlIHNwZWNpZmll
ZCBgbWV0aG9kc2AKKy8vCitSb3V0ZXIucHJvdG90eXBlLmV4dGVuZCA9IGZ1bmN0aW9uKG1ldGhv
ZHMpIHsKKyAgdmFyIHNlbGYgPSB0aGlzLAorICAgICAgbGVuID0gbWV0aG9kcy5sZW5ndGgsCisg
ICAgICBpOworCisgIGZ1bmN0aW9uIGV4dGVuZChtZXRob2QpIHsKKyAgICBzZWxmLl9tZXRob2Rz
W21ldGhvZF0gPSB0cnVlOworICAgIHNlbGZbbWV0aG9kXSA9IGZ1bmN0aW9uICgpIHsKKyAgICAg
IHZhciBleHRyYSA9IGFyZ3VtZW50cy5sZW5ndGggPT09IDEKKyAgICAgICAgPyBbbWV0aG9kLCAn
J10KKyAgICAgICAgOiBbbWV0aG9kXTsKKworICAgICAgc2VsZi5vbi5hcHBseShzZWxmLCBleHRy
YS5jb25jYXQoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSkpOworICAgIH07
CisgIH0KKworICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICBleHRlbmQobWV0aG9k
c1tpXSk7CisgIH0KK307CisKKy8vCisvLyAjIyMgZnVuY3Rpb24gbW91bnQgKHJvdXRlcywgY29u
dGV4dCkKKy8vICMjIyMgQHJvdXRlcyB7T2JqZWN0fSBSb3V0ZXMgdG8gbW91bnQgb250byB0aGlz
IGluc3RhbmNlCisvLyBNb3VudHMgdGhlIHNhbml0aXplZCBgcm91dGVzYCBvbnRvIHRoZSByb290
IGNvbnRleHQgZm9yIHRoaXMgaW5zdGFuY2UuCisvLworLy8gZS5nLgorLy8KKy8vICAgIG5ldyBS
b3V0ZXIoKS5tb3VudCh7ICcvZm9vJzogeyAnL2Jhcic6IGZ1bmN0aW9uIGZvb2JhcigpIHt9IH0g
fSkKKy8vCisvLyB5aWVsZHMKKy8vCisvLyAgICB7ICdmb28nOiAnYmFyJzogZnVuY3Rpb24gZm9v
YmFyKCkge30gfSB9CisvLworUm91dGVyLnByb3RvdHlwZS5tb3VudCA9IGZ1bmN0aW9uKHJvdXRl
cywgcGF0aCkgeworICBpZiAoIXJvdXRlcyB8fCB0eXBlb2Ygcm91dGVzICE9PSAib2JqZWN0IiB8
fCBBcnJheS5pc0FycmF5KHJvdXRlcykpIHsKKyAgICByZXR1cm47CisgIH0KKworICB2YXIgc2Vs
ZiA9IHRoaXM7CisgIHBhdGggPSBwYXRoIHx8IFtdOworICBpZiAoIUFycmF5LmlzQXJyYXkocGF0
aCkpIHsKKyAgICBwYXRoID0gcGF0aC5zcGxpdChzZWxmLmRlbGltaXRlcik7CisgIH0KKworICBm
dW5jdGlvbiBpbnNlcnRPck1vdW50KHJvdXRlLCBsb2NhbCkgeworICAgIHZhciByZW5hbWUgPSBy
b3V0ZSwKKyAgICAgICAgcGFydHMgPSByb3V0ZS5zcGxpdChzZWxmLmRlbGltaXRlciksCisgICAg
ICAgIHJvdXRlVHlwZSA9IHR5cGVvZiByb3V0ZXNbcm91dGVdLAorICAgICAgICBpc1JvdXRlID0g
cGFydHNbMF0gPT09ICIiIHx8ICFzZWxmLl9tZXRob2RzW3BhcnRzWzBdXSwKKyAgICAgICAgZXZl
bnQgPSBpc1JvdXRlID8gIm9uIiA6IHJlbmFtZTsKKworICAgIGlmIChpc1JvdXRlKSB7CisgICAg
ICByZW5hbWUgPSByZW5hbWUuc2xpY2UoKHJlbmFtZS5tYXRjaChuZXcgUmVnRXhwKCdeJyArIHNl
bGYuZGVsaW1pdGVyKSkgfHwgWycnXSlbMF0ubGVuZ3RoKTsKKyAgICAgIHBhcnRzLnNoaWZ0KCk7
CisgICAgfQorCisgICAgaWYgKGlzUm91dGUgJiYgcm91dGVUeXBlID09PSAnb2JqZWN0JyAmJiAh
QXJyYXkuaXNBcnJheShyb3V0ZXNbcm91dGVdKSkgeworICAgICAgbG9jYWwgPSBsb2NhbC5jb25j
YXQocGFydHMpOworICAgICAgc2VsZi5tb3VudChyb3V0ZXNbcm91dGVdLCBsb2NhbCk7CisgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGlzUm91dGUpIHsKKyAgICAgIGxvY2FsID0gbG9j
YWwuY29uY2F0KHJlbmFtZS5zcGxpdChzZWxmLmRlbGltaXRlcikpOworICAgICAgbG9jYWwgPSB0
ZXJtaW5hdG9yKGxvY2FsLCBzZWxmLmRlbGltaXRlcik7CisgICAgfQorCisgICAgc2VsZi5pbnNl
cnQoZXZlbnQsIGxvY2FsLCByb3V0ZXNbcm91dGVdKTsKKyAgfQorCisgIGZvciAodmFyIHJvdXRl
IGluIHJvdXRlcykgeworICAgIGlmIChyb3V0ZXMuaGFzT3duUHJvcGVydHkocm91dGUpKSB7Cisg
ICAgICBpbnNlcnRPck1vdW50KHJvdXRlLCBwYXRoLnNsaWNlKDApKTsKKyAgICB9CisgIH0KK307
CisKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3Iv
cGFja2FnZS5qc29uIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9w
YWNrYWdlLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDhlYjg0Y2ZhMjYwZjE4YmQ1ZjliMDNiN2IwNzE4N2Rm
Y2U3YTRkYwotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVs
ZXMvZGlyZWN0b3IvcGFja2FnZS5qc29uCkBAIC0wLDAgKzEsMTA5IEBACit7CisgICJfYXJncyI6
IFsKKyAgICBbCisgICAgICB7CisgICAgICAgICJyYXciOiAiZGlyZWN0b3JAfjEuMi4yIiwKKyAg
ICAgICAgInNjb3BlIjogbnVsbCwKKyAgICAgICAgImVzY2FwZWROYW1lIjogImRpcmVjdG9yIiwK
KyAgICAgICAgIm5hbWUiOiAiZGlyZWN0b3IiLAorICAgICAgICAicmF3U3BlYyI6ICJ+MS4yLjIi
LAorICAgICAgICAic3BlYyI6ICI+PTEuMi4yIDwxLjMuMCIsCisgICAgICAgICJ0eXBlIjogInJh
bmdlIgorICAgICAgfSwKKyAgICAgICIvVXNlcnMvYWRkeW8vcHJvamVjdHMvc3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeSIKKyAgICBdCisg
IF0sCisgICJfZnJvbSI6ICJkaXJlY3RvckA+PTEuMi4yIDwxLjMuMCIsCisgICJfaWQiOiAiZGly
ZWN0b3JAMS4yLjgiLAorICAiX2luQ2FjaGUiOiB0cnVlLAorICAiX2xvY2F0aW9uIjogIi9kaXJl
Y3RvciIsCisgICJfbm9kZVZlcnNpb24iOiAiMC44LjI3IiwKKyAgIl9ucG1Vc2VyIjogeworICAg
ICJuYW1lIjogImpjcnVnenoiLAorICAgICJlbWFpbCI6ICJqY3J1Z3p6QGdtYWlsLmNvbSIKKyAg
fSwKKyAgIl9ucG1WZXJzaW9uIjogIjIuMS43IiwKKyAgIl9waGFudG9tQ2hpbGRyZW4iOiB7fSwK
KyAgIl9yZXF1ZXN0ZWQiOiB7CisgICAgInJhdyI6ICJkaXJlY3RvckB+MS4yLjIiLAorICAgICJz
Y29wZSI6IG51bGwsCisgICAgImVzY2FwZWROYW1lIjogImRpcmVjdG9yIiwKKyAgICAibmFtZSI6
ICJkaXJlY3RvciIsCisgICAgInJhd1NwZWMiOiAifjEuMi4yIiwKKyAgICAic3BlYyI6ICI+PTEu
Mi4yIDwxLjMuMCIsCisgICAgInR5cGUiOiAicmFuZ2UiCisgIH0sCisgICJfcmVxdWlyZWRCeSI6
IFsKKyAgICAiLyIKKyAgXSwKKyAgIl9yZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpz
Lm9yZy9kaXJlY3Rvci8tL2RpcmVjdG9yLTEuMi44LnRneiIsCisgICJfc2hhc3VtIjogImM2ZDli
NGRkODkwZTlhZmY1MzY1MTgzZmU5Y2M4ZTczOTk0Y2YyZDUiLAorICAiX3Nocmlua3dyYXAiOiBu
dWxsLAorICAiX3NwZWMiOiAiZGlyZWN0b3JAfjEuMi4yIiwKKyAgIl93aGVyZSI6ICIvVXNlcnMv
YWRkeW8vcHJvamVjdHMvc3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2pxdWVyeSIsCisgICJhdXRob3IiOiB7CisgICAgIm5hbWUiOiAiQ2hhcmxpZSBS
b2JiaW5zIiwKKyAgICAiZW1haWwiOiAiY2hhcmxpZS5yb2JiaW5zQGdtYWlsLmNvbSIKKyAgfSwK
KyAgImJyb3dzZXJpZnkiOiAiLi9idWlsZC9kaXJlY3RvciIsCisgICJidWdzIjogeworICAgICJ1
cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2ZsYXRpcm9uL2RpcmVjdG9yL2lzc3VlcyIKKyAgfSwK
KyAgImRlcGVuZGVuY2llcyI6IHt9LAorICAiZGVzY3JpcHRpb24iOiAiQSBjbGllbnQgU2lkZS9T
ZXJ2ZXIgU2lkZSBSb3V0ZXIiLAorICAiZGV2RGVwZW5kZW5jaWVzIjogeworICAgICJhcGktZWFz
eSI6ICIwLjQueCIsCisgICAgImNvZGVzdXJnZW9uIjogImh0dHBzOi8vZ2l0aHViLmNvbS9oaWox
bngvY29kZXN1cmdlb24vdGFyYmFsbC9tYXN0ZXIiLAorICAgICJjb2xvcnMiOiAiMS4wLngiLAor
ICAgICJxdW5pdGpzIjogIjEuOS54IiwKKyAgICAicmVxdWVzdCI6ICIyLjQ5LngiLAorICAgICJ1
Z2xpZnktanMiOiAiMi40LngiLAorICAgICJ2b3dzIjogIjAuOC4wIgorICB9LAorICAiZGlyZWN0
b3JpZXMiOiB7fSwKKyAgImRpc3QiOiB7CisgICAgInNoYXN1bSI6ICJjNmQ5YjRkZDg5MGU5YWZm
NTM2NTE4M2ZlOWNjOGU3Mzk5NGNmMmQ1IiwKKyAgICAidGFyYmFsbCI6ICJodHRwczovL3JlZ2lz
dHJ5Lm5wbWpzLm9yZy9kaXJlY3Rvci8tL2RpcmVjdG9yLTEuMi44LnRneiIKKyAgfSwKKyAgImVu
ZGVyIjogIi4vYnVpbGQvZW5kZXIuanMiLAorICAiZW5naW5lcyI6IHsKKyAgICAibm9kZSI6ICI+
PSAwLjguMCIKKyAgfSwKKyAgImdpdEhlYWQiOiAiYjUwN2JhZWQyNWNmZDM4MzA3ODA4ZWE0MWEw
ZDYzMDVlZTZlMWViZiIsCisgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vZmxhdGly
b24vZGlyZWN0b3IiLAorICAia2V5d29yZHMiOiBbCisgICAgIlVSTCIsCisgICAgInJvdXRlciIs
CisgICAgImh0dHAiLAorICAgICJjbGkiLAorICAgICJmbGF0aXJvbiIsCisgICAgImNsaWVudCBz
aWRlIiwKKyAgICAiZW5kZXIiCisgIF0sCisgICJtYWluIjogIi4vbGliL2RpcmVjdG9yIiwKKyAg
Im1haW50YWluZXJzIjogWworICAgIHsKKyAgICAgICJuYW1lIjogImluZGV4emVybyIsCisgICAg
ICAiZW1haWwiOiAiY2hhcmxpZS5yb2JiaW5zQGdtYWlsLmNvbSIKKyAgICB9LAorICAgIHsKKyAg
ICAgICJuYW1lIjogImpjcnVnenoiLAorICAgICAgImVtYWlsIjogImpjcnVnenpAZ21haWwuY29t
IgorICAgIH0sCisgICAgeworICAgICAgIm5hbWUiOiAic3dhYWdpZSIsCisgICAgICAiZW1haWwi
OiAiaW5mb0BtYXJ0aWpuc3dhYWdtYW4ubmwiCisgICAgfQorICBdLAorICAibmFtZSI6ICJkaXJl
Y3RvciIsCisgICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHt9LAorICAicmVhZG1lIjogIkVSUk9S
OiBObyBSRUFETUUgZGF0YSBmb3VuZCEiLAorICAicmVwb3NpdG9yeSI6IHsKKyAgICAidHlwZSI6
ICJnaXQiLAorICAgICJ1cmwiOiAiZ2l0K3NzaDovL2dpdEBnaXRodWIuY29tL2ZsYXRpcm9uL2Rp
cmVjdG9yLmdpdCIKKyAgfSwKKyAgInNjcmlwdHMiOiB7CisgICAgInRlc3QiOiAidm93cyB0ZXN0
L3NlcnZlci8qLyotdGVzdC5qcyAtLXNwZWMiCisgIH0sCisgICJ2ZXJzaW9uIjogIjEuMi44Igor
fQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci90
ZXN0L2Jyb3dzZXIvYmFja2VuZC9iYWNrZW5kLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVf
bW9kdWxlcy9kaXJlY3Rvci90ZXN0L2Jyb3dzZXIvYmFja2VuZC9iYWNrZW5kLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjY3YzY4MGU0NjRkMGM5ZTFiNGZmNjc0YzM1NjIzM2QzZTU2MTU1YTgKLS0tIC9kZXYvbnVs
bAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL3Rlc3QvYnJv
d3Nlci9iYWNrZW5kL2JhY2tlbmQuanMKQEAgLTAsMCArMSw3OSBAQAordmFyIGh0dHAgICAgID0g
cmVxdWlyZSgnaHR0cCcpLAorICBmcyAgICAgICA9IHJlcXVpcmUoJ2ZzJyksCisgIHBhdGggICAg
ID0gcmVxdWlyZSgncGF0aCcpLAorICBkaXJlY3RvciA9IHJlcXVpcmUoJy4uLy4uLy4uL2xpYi9k
aXJlY3RvcicpLAorICBpbmRleDsKKworZnMucmVhZEZpbGUocGF0aC5qb2luKF9fZGlybmFtZSwg
Jy4uJywgJ2h0bWw1LXJvdXRlcy1oYXJuZXNzLmh0bWwnKSwgZnVuY3Rpb24gKGVyciwgZGF0YSkg
eworICBpZiAoZXJyKSB7CisgICAgdGhyb3cgZXJyOworICB9CisKKyAgaW5kZXggPSBkYXRhOwor
fSk7CisKK3ZhciBDT05URU5UX1RZUEVTID0geworICAnLmpzJyAgOiAndGV4dC9qYXZhc2NyaXB0
JywKKyAgJy5jc3MnIDogJ3RleHQvY3NzJworfTsKKwordmFyIGRpcm5hbWUgPSBwYXRoLmRpcm5h
bWUobW9kdWxlLnVyaSk7CisKKy8vIER1bW15IGZpbGUgc2VydmVyCitmdW5jdGlvbiBmaWxlU2Vy
dmVyKGZvbGRlciwgZmlsZSkgeworICB2YXIgcm9vdCA9IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUs
ICcuLicpOworCisgIGlmIChmb2xkZXIgPT09ICdidWlsZCcgfHwgZm9sZGVyID09PSAnbm9kZV9t
b2R1bGVzJykgeworICAgIHJvb3QgPSBwYXRoLnJlc29sdmUocm9vdCwgJy4uJywgJy4uJyk7Cisg
IH0KKworICBpZiAoZmlsZSA9PT0gdW5kZWZpbmVkKSB7CisgICAgZmlsZSA9IGZvbGRlcjsKKyAg
ICBmb2xkZXIgPSAnLic7CisgIH0KKworICB2YXIgZmlsZXBhdGggPSBwYXRoLnJlc29sdmUocm9v
dCwgZm9sZGVyLCBmaWxlKTsKKworICB2YXIgcmVzID0gdGhpcy5yZXM7CisKKyAgKGZzLmV4aXN0
cyB8fCBwYXRoLmV4aXN0cykoZmlsZXBhdGgsIGZ1bmN0aW9uIChleGlzdHMpIHsKKyAgICBpZiAo
ZXhpc3RzKSB7CisgICAgICBmcy5yZWFkRmlsZShmaWxlcGF0aCwgZnVuY3Rpb24gKGVyciwgZGF0
YSkgeworICAgICAgICBpZiAoZXJyKSB7CisgICAgICAgICAgcmVzLndyaXRlSGVhZCg0MDQpOwor
ICAgICAgICAgIHJlcy5lbmQoKTsKKyAgICAgICAgfQorCisgICAgICAgIHJlcy53cml0ZUhlYWQo
MjAwLCB7J0NvbnRlbnQtVHlwZSc6IENPTlRFTlRfVFlQRVNbcGF0aC5leHRuYW1lKGZpbGVwYXRo
KV19KTsKKyAgICAgICAgcmVzLmVuZChkYXRhKTsKKyAgICAgIH0pOworICAgIH0gZWxzZSB7Cisg
ICAgICByZXMud3JpdGVIZWFkKDQwNCk7CisgICAgICByZXMuZW5kKCk7CisgICAgfQorICB9KTsK
K30KKwordmFyIHJvdXRlciA9IG5ldyBkaXJlY3Rvci5odHRwLlJvdXRlcih7CisgICcvZmlsZXMn
OiB7CisgICAgJy86Zm9sZGVyJzogeworICAgICAgJy8oLispJzogeworICAgICAgICBnZXQ6IGZp
bGVTZXJ2ZXIKKyAgICAgIH0sCisKKyAgICAgIGdldDogZmlsZVNlcnZlcgorICAgIH0KKyAgfQor
fSk7CisKK3ZhciBzZXJ2ZXIgPSBodHRwLmNyZWF0ZVNlcnZlcihmdW5jdGlvbiAocmVxLCByZXMp
IHsKKyAgcm91dGVyLmRpc3BhdGNoKHJlcSwgcmVzLCBmdW5jdGlvbiAoZXJyKSB7CisgICAgaWYg
KGVyciAmJiByZXEudXJsICE9PSAnL2Zhdmljb24uaWNvJykgeworICAgICAgLy8gQnkgZGVmYXVs
dCBqdXN0IHJlcGx5IHdpdGggdGhlIGluZGV4IHBhZ2UKKyAgICAgIHRoaXMucmVzLndyaXRlSGVh
ZCgyMDAsIHsnQ29udGVudC1UeXBlJzogJ3RleHQvaHRtbCd9KTsKKyAgICAgIHRoaXMucmVzLmVu
ZChpbmRleCk7CisgICAgfQorICB9KTsKK30pOworCitzZXJ2ZXIubGlzdGVuKDgwODApOwpkaWZm
IC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci90ZXN0L2Jy
b3dzZXIvYnJvd3NlcmlmeS1oYXJuZXNzLmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9t
b2R1bGVzL2RpcmVjdG9yL3Rlc3QvYnJvd3Nlci9icm93c2VyaWZ5LWhhcm5lc3MuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hZWNmMDYzOWI4ZDQzZjAxMzcyYTVlYmYxOGExOTc3Mjg5MGVmMGViCi0tLSAvZGV2
L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci90ZXN0
L2Jyb3dzZXIvYnJvd3NlcmlmeS1oYXJuZXNzLmh0bWwKQEAgLTAsMCArMSwyNCBAQAorPCFET0NU
WVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KKyAg
ICA8dGl0bGU+RGlyZWN0b3IgQnJvd3NlcmlmeSBUZXN0czwvdGl0bGU+CisgICAgPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9ub2RlX21vZHVsZXMvcXVuaXRqcy9xdW5pdC9xdW5p
dC5jc3MiPgorPC9oZWFkPgorPGJvZHk+CisgICAgPHA+VG8gcnVuIHRoZXNlIHRlc3RzIGZpcnN0
IGdlbmVyYXRlIGEgQnJvd3NlcmlmeSBidW5kbGUgZm9yIGRpcmVjdG9yIGJ5IHJ1bm5pbmcgdGhl
IGNvbW1hbmQgPGtiZD5icm93c2VyaWZ5IC1yIC4uL2RpcmVjdG9yIC1vIHRlc3QvYnJvd3Nlci9i
cm93c2VyaWZpZWQtYnVuZGxlLmpzPC9rYmQ+IGluIHRoZSByZXBvJ3Mgcm9vdCBkaXJlY3Rvcnku
PC9wPgorCisgICAgPGRpdiBpZD0icXVuaXQiPgorICAgIDxkaXYgaWQ9InF1bml0LWZpeHR1cmUi
PjwvZGl2PgorCisgICAgPHNjcmlwdCBzcmM9ImJyb3dzZXJpZmllZC1idW5kbGUuanMiPjwvc2Ny
aXB0PgorICAgIDxzY3JpcHQ+CisgICAgICAgIHZhciBIVE1MNVRFU1QgPSBmYWxzZTsKKyAgICAg
ICAgdmFyIFJvdXRlckFsaWFzID0gcmVxdWlyZSgnLycpLlJvdXRlcjsKKyAgICA8L3NjcmlwdD4K
KworICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9ub2RlX21vZHVsZXMvcXVuaXRqcy9xdW5pdC9xdW5p
dC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9ImhlbHBlcnMvYXBpLmpzIj48L3Njcmlw
dD4KKyAgICA8c2NyaXB0IHNyYz0icm91dGVzLXRlc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJl
Y3Rvci90ZXN0L2Jyb3dzZXIvaGVscGVycy9hcGkuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9k
ZV9tb2R1bGVzL2RpcmVjdG9yL3Rlc3QvYnJvd3Nlci9oZWxwZXJzL2FwaS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kNzg0NzAwYWEwZjE3ZTk4Y2M1MDU0MTdkOTE3ZTY4NWQzZGY3NTdiCi0tLSAvZGV2L251bGwK
KysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci90ZXN0L2Jyb3dz
ZXIvaGVscGVycy9hcGkuanMKQEAgLTAsMCArMSw3NyBAQAorbW9kdWxlKCJEaXJlY3Rvci5qcyIs
IHsKKyAgc2V0dXA6IGZ1bmN0aW9uKCkgeworICAgIHdpbmRvdy5sb2NhdGlvbi5oYXNoID0gIiI7
CisgICAgc2hhcmVkID0ge307CisgICAgLy8gSW5pdCBuZWVkZWQga2V5cyBlYXJsaWVyIGJlY2F1
c2Ugb2YgaW4gSFRNTDUgbW9kZSB0aGUgcm91dGUgaGFuZGxlcgorICAgIC8vIGlzIGV4ZWN1dGVk
IHVwb24gUm91dGVyLmluaXQoKSBhbmQgZHVlIHRvIHRoYXQgc2V0dGluZyBzaGFyZWQuZmlyZWQK
KyAgICAvLyBpbiB0aGUgcGFyYW0gdGVzdCBvZiBjcmVhdGVUZXN0IGlzIHRvbyBsYXRlCisgICAg
aWYgKEhUTUw1VEVTVCkgeworICAgICAgc2hhcmVkLmZpcmVkICAgICAgID0gW107CisgICAgICBz
aGFyZWQuZmlyZWRfY291bnQgPSAwOworICAgIH0KKyAgfSwKKyAgdGVhcmRvd246IGZ1bmN0aW9u
KCkgeworICAgIHdpbmRvdy5sb2NhdGlvbi5oYXNoID0gIiI7CisgICAgc2hhcmVkID0ge307Cisg
IH0KK30pOworCit2YXIgc2hhcmVkOworCitmdW5jdGlvbiBjcmVhdGVUZXN0KG5hbWUsIGNvbmZp
ZywgdXNlLCB0ZXN0LCBpbml0aWFsUm91dGUpIHsKKyAgLy8gV2UgcmVuYW1lIHRvIGBSb3V0ZXJB
bGlhc2AgZm9yIHRoZSBicm93c2VyaWZ5IHRlc3RzLCBzaW5jZSB3ZSB3YW50IHRvIGJlCisgIC8v
IHN1cmUgdGhhdCBubyBjb2RlIGlzIGRlcGVuZGluZyBvbiBgd2luZG93LlJvdXRlcmAgYmVpbmcg
YXZhaWxhYmxlLgorICB2YXIgUm91dGVyID0gd2luZG93LlJvdXRlciB8fCB3aW5kb3cuUm91dGVy
QWxpYXM7CisKKyAgaWYgKHR5cGVvZiB1c2UgPT09ICdmdW5jdGlvbicpIHsKKyAgICB0ZXN0ID0g
dXNlOworICAgIHVzZSA9IHVuZGVmaW5lZDsKKyAgfQorCisgIGlmIChIVE1MNVRFU1QpIHsKKyAg
ICBpZiAodXNlID09PSB1bmRlZmluZWQpIHsKKyAgICAgIHVzZSA9IHt9OworICAgIH0KKworICAg
IGlmICh1c2UucnVuX2hhbmRsZXJfaW5faW5pdCA9PT0gdW5kZWZpbmVkKSB7CisgICAgICB1c2Uu
cnVuX2hhbmRsZXJfaW5faW5pdCA9IGZhbHNlOworICAgIH0KKyAgICB1c2UuaHRtbDVoaXN0b3J5
ICAgICAgICA9IHRydWU7CisgIH0KKworICAvLyBCZWNhdXNlIG9mIHRoZSB1c2Ugb2Ygc2V0VGlt
ZW91dCB3aGVuIGRlZmluaW5nIG9ucG9wc3RhdGUKKyAgdmFyIGlubmVyVGltZW91dCA9IEhUTUw1
VEVTVCA9PT0gdHJ1ZSA/IDUwMCA6IDA7CisKKyAgYXN5bmNUZXN0KG5hbWUsIGZ1bmN0aW9uKCkg
eworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICB2YXIgcm91dGVyID0gbmV3IFJv
dXRlcihjb25maWcpLAorICAgICAgICAgIGNvbnRleHQ7CisKKyAgICAgIGlmICh1c2UgIT09IHVu
ZGVmaW5lZCkgeworICAgICAgICByb3V0ZXIuY29uZmlndXJlKHVzZSk7CisgICAgICB9CisKKyAg
ICAgIHJvdXRlci5pbml0KGluaXRpYWxSb3V0ZSk7CisKKyAgICAgIHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7CisgICAgICAgIHRlc3QuY2FsbChjb250ZXh0ID0geworICAgICAgICAgIHJvdXRlcjog
cm91dGVyLAorICAgICAgICAgIG5hdmlnYXRlOiBmdW5jdGlvbih1cmwsIGNhbGxiYWNrKSB7Cisg
ICAgICAgICAgICBpZiAoSFRNTDVURVNUKSB7CisgICAgICAgICAgICAgIHJvdXRlci5zZXRSb3V0
ZSh1cmwpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgd2luZG93LmxvY2F0
aW9uLmhhc2ggPSB1cmw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgICBjYWxsYmFjay5jYWxsKGNvbnRleHQpOworICAgICAg
ICAgICAgfSwgMTQpOworICAgICAgICAgIH0sCisgICAgICAgICAgZmluaXNoOiBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgIHJvdXRlci5kZXN0cm95KCk7CisgICAgICAgICAgICBzdGFydCgpOwor
ICAgICAgICAgIH0KKyAgICAgICAgfSkKKyAgICAgIH0sIGlubmVyVGltZW91dCk7CisgICAgfSwg
MTQpOworICB9KTsKK307CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1
bGVzL2RpcmVjdG9yL3Rlc3QvYnJvd3Nlci9odG1sNS1yb3V0ZXMtaGFybmVzcy5odG1sIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci90ZXN0L2Jyb3dzZXIvaHRtbDUt
cm91dGVzLWhhcm5lc3MuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYWY4ZmZjMjRiOTMzODRmMzU1MzQxZWNk
MmM4Yzg1ZDIzMjgyNTFjCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25v
ZGVfbW9kdWxlcy9kaXJlY3Rvci90ZXN0L2Jyb3dzZXIvaHRtbDUtcm91dGVzLWhhcm5lc3MuaHRt
bApAQCAtMCwwICsxLDIzIEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+CisgICAg
PG1ldGEgY2hhcnNldD0iVVRGLTgiPgorICAgIDx0aXRsZT5EaXJlY3RvciBIVE1MNSBUZXN0czwv
dGl0bGU+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvZmlsZXMvbm9kZV9tb2R1
bGVzL3F1bml0anMvcXVuaXQvcXVuaXQuY3NzIj4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxwPk5v
dGU6IGluIG9yZGVyIHRvIGV4ZWN1dGUgSFRNTDUgbW9kZSB0ZXN0IHRoaXMgZmlsZSBuZWVkcyB0
byBiZSBzZXJ2ZWQgd2l0aCBwcm92aWRlZCBub2RlanMgYmFja2VuZC4gU3RhcnQgdGhlIHNlcnZl
ciBmcm9tIDxrYmQ+ZGlyZWN0b3IvdGVzdC9icm93c2VyL2JhY2tlbmQ8L2tiZD4gYW5kIGdvIHRv
IDxrYmQ+aHR0cDovL2xvY2FsaG9zdDo4MDgwLzwva2JkPiB0byBsYXVuY2ggdGhlIHRlc3RzLjwv
cD4KKworICAgIDxkaXYgaWQ9InF1bml0Ij48L2Rpdj4KKyAgICA8ZGl2IGlkPSJxdW5pdC1maXh0
dXJlIj48L2Rpdj4KKworICAgIDxzY3JpcHQ+CisgICAgICAgIHZhciBIVE1MNVRFU1QgPSB0cnVl
OworICAgIDwvc2NyaXB0PgorCisgICAgPHNjcmlwdCBzcmM9Ii9maWxlcy9ub2RlX21vZHVsZXMv
cXVuaXRqcy9xdW5pdC9xdW5pdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii9maWxl
cy9idWlsZC9kaXJlY3Rvci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii9maWxlcy9o
ZWxwZXJzL2FwaS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii9maWxlcy9odG1sNS1y
b3V0ZXMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL3Rlc3QvYnJvd3Nlci9odG1s
NS1yb3V0ZXMtdGVzdC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0
b3IvdGVzdC9icm93c2VyL2h0bWw1LXJvdXRlcy10ZXN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYyOGQzYzk3
MDBiMmQ5Y2IxNjlmOTY0NjQ3MzRkYTEzZWQ4NDA5YWMKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL3Rlc3QvYnJvd3Nlci9odG1sNS1y
b3V0ZXMtdGVzdC5qcwpAQCAtMCwwICsxLDY2MCBAQAordmFyIGJyb3dzZXJfaGlzdG9yeV9zdXBw
b3J0ID0gKHdpbmRvdy5oaXN0b3J5ICE9IG51bGwgPyB3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUg
OiBudWxsKSAhPSBudWxsOworCitjcmVhdGVUZXN0KCdOZXN0ZWQgcm91dGUgd2l0aCB0aGUgbWFu
eSBjaGlsZHJlbiBhcyBhIHRva2VucywgY2FsbGJhY2tzIHNob3VsZCB5aWVsZCBoaXN0b3JpYyBw
YXJhbXMnLCB7CisgICcvYSc6IHsKKyAgICAnLzppZCc6IHsKKyAgICAgICcvOmlkJzogZnVuY3Rp
b24oYSwgYikgeworICAgICAgICBpZiAoIWJyb3dzZXJfaGlzdG9yeV9zdXBwb3J0KSB7CisgICAg
ICAgICAgc2hhcmVkLmZpcmVkLnB1c2gobG9jYXRpb24uaGFzaC5yZXBsYWNlKC9eIy8sICcnKSwg
YSwgYik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgc2hhcmVkLmZpcmVkLnB1c2gobG9j
YXRpb24ucGF0aG5hbWUsIGEsIGIpOworICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9Cit9
LCBmdW5jdGlvbigpIHsKKyAgdGhpcy5uYXZpZ2F0ZSgnL2EvYi9jJywgZnVuY3Rpb24oKSB7Cisg
ICAgZGVlcEVxdWFsKHNoYXJlZC5maXJlZCwgWycvYS9iL2MnLCAnYicsICdjJ10pOworICAgIHRo
aXMuZmluaXNoKCk7CisgIH0pOworfSk7CisKK2NyZWF0ZVRlc3QoJ05lc3RlZCByb3V0ZSB3aXRo
IHRoZSBmaXJzdCBjaGlsZCBhcyBhIHRva2VuLCBjYWxsYmFjayBzaG91bGQgeWllbGQgYSBwYXJh
bScsIHsKKyAgJy9mb28nOiB7CisgICAgJy86aWQnOiB7CisgICAgICBvbjogZnVuY3Rpb24oaWQp
IHsKKyAgICAgICAgaWYgKCFicm93c2VyX2hpc3Rvcnlfc3VwcG9ydCkgeworICAgICAgICAgIHNo
YXJlZC5maXJlZC5wdXNoKGxvY2F0aW9uLmhhc2gucmVwbGFjZSgvXiMvLCAnJyksIGlkKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBzaGFyZWQuZmlyZWQucHVzaChsb2NhdGlvbi5wYXRo
bmFtZSwgaWQpOworICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9Cit9LCBmdW5jdGlvbigp
IHsKKyAgdGhpcy5uYXZpZ2F0ZSgnL2Zvby9hJywgZnVuY3Rpb24oKSB7CisgICAgdGhpcy5uYXZp
Z2F0ZSgnL2Zvby9iL2MnLCBmdW5jdGlvbigpIHsKKyAgICAgIGRlZXBFcXVhbChzaGFyZWQuZmly
ZWQsIFsnL2Zvby9hJywgJ2EnXSk7CisgICAgICB0aGlzLmZpbmlzaCgpOworICAgIH0pOworICB9
KTsKK30pOworCitjcmVhdGVUZXN0KCdOZXN0ZWQgcm91dGUgd2l0aCB0aGUgZmlyc3QgY2hpbGQg
YXMgYSByZWdleHAsIGNhbGxiYWNrIHNob3VsZCB5aWVsZCBhIHBhcmFtJywgeworICAnL2Zvbyc6
IHsKKyAgICAnLyhcXHcrKSc6IHsKKyAgICAgIG9uOiBmdW5jdGlvbih2YWx1ZSkgeworICAgICAg
ICBpZiAoIWJyb3dzZXJfaGlzdG9yeV9zdXBwb3J0KSB7CisgICAgICAgICAgc2hhcmVkLmZpcmVk
LnB1c2gobG9jYXRpb24uaGFzaC5yZXBsYWNlKC9eIy8sICcnKSwgdmFsdWUpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgIHNoYXJlZC5maXJlZC5wdXNoKGxvY2F0aW9uLnBhdGhuYW1lLCB2
YWx1ZSk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgIH0KK30sIGZ1bmN0aW9uKCkgewor
ICB0aGlzLm5hdmlnYXRlKCcvZm9vL2EnLCBmdW5jdGlvbigpIHsKKyAgICB0aGlzLm5hdmlnYXRl
KCcvZm9vL2IvYycsIGZ1bmN0aW9uKCkgeworICAgICAgZGVlcEVxdWFsKHNoYXJlZC5maXJlZCwg
WycvZm9vL2EnLCAnYSddKTsKKyAgICAgIHRoaXMuZmluaXNoKCk7CisgICAgfSk7CisgIH0pOwor
fSk7CisKK2NyZWF0ZVRlc3QoJ05lc3RlZCByb3V0ZSB3aXRoIHRoZSBzZXZlcmFsIHJlZ3VsYXIg
ZXhwcmVzc2lvbnMsIGNhbGxiYWNrIHNob3VsZCB5aWVsZCBhIHBhcmFtJywgeworICAnL2EnOiB7
CisgICAgJy8oXFx3KyknOiB7CisgICAgICAnLyhcXHcrKSc6IGZ1bmN0aW9uKGEsIGIpIHsKKyAg
ICAgICAgc2hhcmVkLmZpcmVkLnB1c2goYSwgYik7CisgICAgICB9CisgICAgfQorICB9Cit9LCBm
dW5jdGlvbigpIHsKKyAgdGhpcy5uYXZpZ2F0ZSgnL2EvYi9jJywgZnVuY3Rpb24oKSB7CisgICAg
ZGVlcEVxdWFsKHNoYXJlZC5maXJlZCwgWydiJywgJ2MnXSk7CisgICAgdGhpcy5maW5pc2goKTsK
KyAgfSk7Cit9KTsKKworY3JlYXRlVGVzdCgnU2luZ2xlIG5lc3RlZCByb3V0ZSB3aXRoIG9uIG1l
bWJlciBjb250YWluaW5nIGZ1bmN0aW9uIHZhbHVlJywgeworICAnL2EnOiB7CisgICAgJy9iJzog
eworICAgICAgb246IGZ1bmN0aW9uKCkgeworICAgICAgICBpZiAoIWJyb3dzZXJfaGlzdG9yeV9z
dXBwb3J0KSB7CisgICAgICAgICAgc2hhcmVkLmZpcmVkLnB1c2gobG9jYXRpb24uaGFzaC5yZXBs
YWNlKC9eIy8sICcnKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgc2hhcmVkLmZpcmVk
LnB1c2gobG9jYXRpb24ucGF0aG5hbWUpOworICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9
Cit9LCBmdW5jdGlvbigpIHsKKyAgdGhpcy5uYXZpZ2F0ZSgnL2EvYicsIGZ1bmN0aW9uKCkgewor
ICAgICAgZGVlcEVxdWFsKHNoYXJlZC5maXJlZCwgWycvYS9iJ10pOworICAgICAgdGhpcy5maW5p
c2goKTsKKyAgfSk7Cit9KTsKKworY3JlYXRlVGVzdCgnU2luZ2xlIG5vbi1uZXN0ZWQgcm91dGUg
d2l0aCBvbiBtZW1iZXIgY29udGFpbmluZyBmdW5jdGlvbiB2YWx1ZScsIHsKKyAgJy9hL2InOiB7
CisgICAgb246IGZ1bmN0aW9uKCkgeworICAgICAgaWYgKCFicm93c2VyX2hpc3Rvcnlfc3VwcG9y
dCkgeworICAgICAgICBzaGFyZWQuZmlyZWQucHVzaChsb2NhdGlvbi5oYXNoLnJlcGxhY2UoL14j
LywgJycpKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHNoYXJlZC5maXJlZC5wdXNoKGxvY2F0
aW9uLnBhdGhuYW1lKTsKKyAgICAgIH0KKyAgICB9CisgIH0KK30sIGZ1bmN0aW9uKCkgeworICB0
aGlzLm5hdmlnYXRlKCcvYS9iJywgZnVuY3Rpb24oKSB7CisgICAgZGVlcEVxdWFsKHNoYXJlZC5m
aXJlZCwgWycvYS9iJ10pOworICAgIHRoaXMuZmluaXNoKCk7CisgIH0pOworfSk7CisKK2NyZWF0
ZVRlc3QoJ1NpbmdsZSBuZXN0ZWQgcm91dGUgd2l0aCBvbiBtZW1iZXIgY29udGFpbmluZyBhcnJh
eSBvZiBmdW5jdGlvbiB2YWx1ZXMnLCB7CisgICcvYSc6IHsKKyAgICAnL2InOiB7CisgICAgICBv
bjogW2Z1bmN0aW9uKCkgeworICAgICAgICBpZiAoIWJyb3dzZXJfaGlzdG9yeV9zdXBwb3J0KSB7
CisgICAgICAgICAgc2hhcmVkLmZpcmVkLnB1c2gobG9jYXRpb24uaGFzaC5yZXBsYWNlKC9eIy8s
ICcnKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgc2hhcmVkLmZpcmVkLnB1c2gobG9j
YXRpb24ucGF0aG5hbWUpOworICAgICAgICB9CisgICAgICB9LAorICAgICAgICBmdW5jdGlvbigp
IHsKKyAgICAgICAgICBpZiAoIWJyb3dzZXJfaGlzdG9yeV9zdXBwb3J0KSB7CisgICAgICAgICAg
ICBzaGFyZWQuZmlyZWQucHVzaChsb2NhdGlvbi5oYXNoLnJlcGxhY2UoL14jLywgJycpKTsKKyAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc2hhcmVkLmZpcmVkLnB1c2gobG9jYXRpb24u
cGF0aG5hbWUpOworICAgICAgICAgIH0KKyAgICAgIH1dCisgICAgfQorICB9Cit9LCBmdW5jdGlv
bigpIHsKKyAgdGhpcy5uYXZpZ2F0ZSgnL2EvYicsIGZ1bmN0aW9uKCkgeworICAgICAgZGVlcEVx
dWFsKHNoYXJlZC5maXJlZCwgWycvYS9iJywgJy9hL2InXSk7CisgICAgICB0aGlzLmZpbmlzaCgp
OworICB9KTsKK30pOworCitjcmVhdGVUZXN0KCdtZXRob2Qgc2hvdWxkIG9ubHkgZmlyZSBvbmNl
IG9uIHRoZSByb3V0ZS4nLCB7CisgICcvYSc6IHsKKyAgICAnL2InOiB7CisgICAgICBvbmNlOiBm
dW5jdGlvbigpIHsKKyAgICAgICAgc2hhcmVkLmZpcmVkX2NvdW50Kys7CisgICAgICB9CisgICAg
fQorICB9Cit9LCBmdW5jdGlvbigpIHsKKyAgdGhpcy5uYXZpZ2F0ZSgnL2EvYicsIGZ1bmN0aW9u
KCkgeworICAgIHRoaXMubmF2aWdhdGUoJy9hL2InLCBmdW5jdGlvbigpIHsKKyAgICAgIHRoaXMu
bmF2aWdhdGUoJy9hL2InLCBmdW5jdGlvbigpIHsKKyAgICAgICAgZGVlcEVxdWFsKHNoYXJlZC5m
aXJlZF9jb3VudCwgMSk7CisgICAgICAgIHRoaXMuZmluaXNoKCk7CisgICAgICB9KTsKKyAgICB9
KTsKKyAgfSk7Cit9KTsKKworY3JlYXRlVGVzdCgnbWV0aG9kIHNob3VsZCBvbmx5IGZpcmUgb25j
ZSBvbiB0aGUgcm91dGUsIG11bHRpcGxlIG5lc3RpbmcuJywgeworICAnL2EnOiB7CisgICAgb246
IGZ1bmN0aW9uKCkgeyBzaGFyZWQuZmlyZWRfY291bnQrKzsgfSwKKyAgICBvbmNlOiBmdW5jdGlv
bigpIHsgc2hhcmVkLmZpcmVkX2NvdW50Kys7IH0KKyAgfSwKKyAgJy9iJzogeworICAgIG9uOiBm
dW5jdGlvbigpIHsgc2hhcmVkLmZpcmVkX2NvdW50Kys7IH0sCisgICAgb25jZTogZnVuY3Rpb24o
KSB7IHNoYXJlZC5maXJlZF9jb3VudCsrOyB9CisgIH0KK30sIGZ1bmN0aW9uKCkgeworICB0aGlz
Lm5hdmlnYXRlKCcvYScsIGZ1bmN0aW9uKCkgeworICAgIHRoaXMubmF2aWdhdGUoJy9iJywgZnVu
Y3Rpb24oKSB7CisgICAgICB0aGlzLm5hdmlnYXRlKCcvYScsIGZ1bmN0aW9uKCkgeworICAgICAg
ICB0aGlzLm5hdmlnYXRlKCcvYicsIGZ1bmN0aW9uKCkgeworICAgICAgICAgIGRlZXBFcXVhbChz
aGFyZWQuZmlyZWRfY291bnQsIDYpOworICAgICAgICAgIHRoaXMuZmluaXNoKCk7CisgICAgICAg
IH0pOworICAgICAgfSk7CisgICAgfSk7CisgIH0pOworfSk7CisKK2NyZWF0ZVRlc3QoJ292ZXJs
YXBwaW5nIHJvdXRlcyB3aXRoIHRva2Vucy4nLCB7CisgICcvYS86Yi9jJyA6IGZ1bmN0aW9uKCkg
eworICAgIGlmICghYnJvd3Nlcl9oaXN0b3J5X3N1cHBvcnQpIHsKKyAgICAgIHNoYXJlZC5maXJl
ZC5wdXNoKGxvY2F0aW9uLmhhc2gucmVwbGFjZSgvXiMvLCAnJykpOworICAgIH0gZWxzZSB7Cisg
ICAgICBzaGFyZWQuZmlyZWQucHVzaChsb2NhdGlvbi5wYXRobmFtZSk7CisgICAgfQorICB9LAor
ICAnL2EvOmIvYy86ZCcgOiBmdW5jdGlvbigpIHsKKyAgICBpZiAoIWJyb3dzZXJfaGlzdG9yeV9z
dXBwb3J0KSB7CisgICAgICBzaGFyZWQuZmlyZWQucHVzaChsb2NhdGlvbi5oYXNoLnJlcGxhY2Uo
L14jLywgJycpKTsKKyAgICB9IGVsc2UgeworICAgICAgc2hhcmVkLmZpcmVkLnB1c2gobG9jYXRp
b24ucGF0aG5hbWUpOworICAgIH0KKyAgfQorfSwgZnVuY3Rpb24oKSB7CisgIHRoaXMubmF2aWdh
dGUoJy9hL2IvYycsIGZ1bmN0aW9uKCkgeworCisgICAgdGhpcy5uYXZpZ2F0ZSgnL2EvYi9jL2Qn
LCBmdW5jdGlvbigpIHsKKyAgICAgIGRlZXBFcXVhbChzaGFyZWQuZmlyZWQsIFsnL2EvYi9jJywg
Jy9hL2IvYy9kJ10pOworICAgICAgdGhpcy5maW5pc2goKTsKKyAgICB9KTsKKyAgfSk7Cit9KTsK
KworLy8gLy8gLy8KKy8vIC8vIC8vIFJlY3Vyc2lvbiBmZWF0dXJlcworLy8gLy8gLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitj
cmVhdGVUZXN0KCdOZXN0ZWQgcm91dGVzIHdpdGggbm8gcmVjdXJzaW9uJywgeworICAnL2EnOiB7
CisgICAgJy9iJzogeworICAgICAgJy9jJzogeworICAgICAgICBvbjogZnVuY3Rpb24gYygpIHsK
KyAgICAgICAgICBzaGFyZWQuZmlyZWQucHVzaCgnYycpOworICAgICAgICB9CisgICAgICB9LAor
ICAgICAgb246IGZ1bmN0aW9uIGIoKSB7CisgICAgICAgIHNoYXJlZC5maXJlZC5wdXNoKCdiJyk7
CisgICAgICB9CisgICAgfSwKKyAgICBvbjogZnVuY3Rpb24gYSgpIHsKKyAgICAgIHNoYXJlZC5m
aXJlZC5wdXNoKCdhJyk7CisgICAgfQorICB9Cit9LCBmdW5jdGlvbigpIHsKKyAgdGhpcy5uYXZp
Z2F0ZSgnL2EvYi9jJywgZnVuY3Rpb24oKSB7CisgICAgZGVlcEVxdWFsKHNoYXJlZC5maXJlZCwg
WydjJ10pOworICAgIHRoaXMuZmluaXNoKCk7CisgIH0pOworfSk7CisKK2NyZWF0ZVRlc3QoJ05l
c3RlZCByb3V0ZXMgd2l0aCBiYWNrd2FyZCByZWN1cnNpb24nLCB7CisgICcvYSc6IHsKKyAgICAn
L2InOiB7CisgICAgICAnL2MnOiB7CisgICAgICAgIG9uOiBmdW5jdGlvbiBjKCkgeworICAgICAg
ICAgIHNoYXJlZC5maXJlZC5wdXNoKCdjJyk7CisgICAgICAgIH0KKyAgICAgIH0sCisgICAgICBv
bjogZnVuY3Rpb24gYigpIHsKKyAgICAgICAgc2hhcmVkLmZpcmVkLnB1c2goJ2InKTsKKyAgICAg
IH0KKyAgICB9LAorICAgIG9uOiBmdW5jdGlvbiBhKCkgeworICAgICAgc2hhcmVkLmZpcmVkLnB1
c2goJ2EnKTsKKyAgICB9CisgIH0KK30sIHsKKyAgcmVjdXJzZTogJ2JhY2t3YXJkJworfSwgZnVu
Y3Rpb24oKSB7CisgIHRoaXMubmF2aWdhdGUoJy9hL2IvYycsIGZ1bmN0aW9uKCkgeworICAgIGRl
ZXBFcXVhbChzaGFyZWQuZmlyZWQsIFsnYycsICdiJywgJ2EnXSk7CisgICAgdGhpcy5maW5pc2go
KTsKKyAgfSk7Cit9KTsKKworY3JlYXRlVGVzdCgnQnJlYWtpbmcgb3V0IG9mIG5lc3RlZCByb3V0
ZXMgd2l0aCBiYWNrd2FyZCByZWN1cnNpb24nLCB7CisgICcvYSc6IHsKKyAgICAnLzpiJzogewor
ICAgICAgJy9jJzogeworICAgICAgICBvbjogZnVuY3Rpb24gYygpIHsKKyAgICAgICAgICBzaGFy
ZWQuZmlyZWQucHVzaCgnYycpOworICAgICAgICB9CisgICAgICB9LAorICAgICAgb246IGZ1bmN0
aW9uIGIoKSB7CisgICAgICAgIHNoYXJlZC5maXJlZC5wdXNoKCdiJyk7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgIH0KKyAgICB9LAorICAgIG9uOiBmdW5jdGlvbiBhKCkgeworICAgICAg
c2hhcmVkLmZpcmVkLnB1c2goJ2EnKTsKKyAgICB9CisgIH0KK30sIHsKKyAgcmVjdXJzZTogJ2Jh
Y2t3YXJkJworfSwgZnVuY3Rpb24oKSB7CisgIHRoaXMubmF2aWdhdGUoJy9hL2IvYycsIGZ1bmN0
aW9uKCkgeworICAgIGRlZXBFcXVhbChzaGFyZWQuZmlyZWQsIFsnYycsICdiJ10pOworICAgIHRo
aXMuZmluaXNoKCk7CisgIH0pOworfSk7CisKK2NyZWF0ZVRlc3QoJ05lc3RlZCByb3V0ZXMgd2l0
aCBmb3J3YXJkIHJlY3Vyc2lvbicsIHsKKyAgJy9hJzogeworICAgICcvYic6IHsKKyAgICAgICcv
Yyc6IHsKKyAgICAgICAgb246IGZ1bmN0aW9uIGMoKSB7CisgICAgICAgICAgc2hhcmVkLmZpcmVk
LnB1c2goJ2MnKTsKKyAgICAgICAgfQorICAgICAgfSwKKyAgICAgIG9uOiBmdW5jdGlvbiBiKCkg
eworICAgICAgICBzaGFyZWQuZmlyZWQucHVzaCgnYicpOworICAgICAgfQorICAgIH0sCisgICAg
b246IGZ1bmN0aW9uIGEoKSB7CisgICAgICBzaGFyZWQuZmlyZWQucHVzaCgnYScpOworICAgIH0K
KyAgfQorfSwgeworICByZWN1cnNlOiAnZm9yd2FyZCcKK30sIGZ1bmN0aW9uKCkgeworICB0aGlz
Lm5hdmlnYXRlKCcvYS9iL2MnLCBmdW5jdGlvbigpIHsKKyAgICBkZWVwRXF1YWwoc2hhcmVkLmZp
cmVkLCBbJ2EnLCAnYicsICdjJ10pOworICAgIHRoaXMuZmluaXNoKCk7CisgIH0pOworfSk7CisK
K2NyZWF0ZVRlc3QoJ05lc3RlZCByb3V0ZXMgd2l0aCBmb3J3YXJkIHJlY3Vyc2lvbiwgc2luZ2xl
IHJvdXRlIHdpdGggYW4gYWZ0ZXIgZXZlbnQuJywgeworICAnL2EnOiB7CisgICAgJy9iJzogewor
ICAgICAgJy9jJzogeworICAgICAgICBvbjogZnVuY3Rpb24gYygpIHsKKyAgICAgICAgICBzaGFy
ZWQuZmlyZWQucHVzaCgnYycpOworICAgICAgICB9LAorICAgICAgICBhZnRlcjogZnVuY3Rpb24o
KSB7CisgICAgICAgICAgc2hhcmVkLmZpcmVkLnB1c2goJ2MtYWZ0ZXInKTsKKyAgICAgICAgfQor
ICAgICAgfSwKKyAgICAgIG9uOiBmdW5jdGlvbiBiKCkgeworICAgICAgICBzaGFyZWQuZmlyZWQu
cHVzaCgnYicpOworICAgICAgfQorICAgIH0sCisgICAgb246IGZ1bmN0aW9uIGEoKSB7CisgICAg
ICBzaGFyZWQuZmlyZWQucHVzaCgnYScpOworICAgIH0KKyAgfQorfSwgeworICByZWN1cnNlOiAn
Zm9yd2FyZCcKK30sIGZ1bmN0aW9uKCkgeworICB0aGlzLm5hdmlnYXRlKCcvYS9iL2MnLCBmdW5j
dGlvbigpIHsKKyAgICB0aGlzLm5hdmlnYXRlKCcvYS9iJywgZnVuY3Rpb24oKSB7CisgICAgICBk
ZWVwRXF1YWwoc2hhcmVkLmZpcmVkLCBbJ2EnLCAnYicsICdjJywgJ2MtYWZ0ZXInLCAnYScsICdi
J10pOworICAgICAgdGhpcy5maW5pc2goKTsKKyAgICB9KTsKKyAgfSk7Cit9KTsKKworY3JlYXRl
VGVzdCgnQnJlYWtpbmcgb3V0IG9mIG5lc3RlZCByb3V0ZXMgd2l0aCBmb3J3YXJkIHJlY3Vyc2lv
bicsIHsKKyAgJy9hJzogeworICAgICcvYic6IHsKKyAgICAgICcvYyc6IHsKKyAgICAgICAgb246
IGZ1bmN0aW9uIGMoKSB7CisgICAgICAgICAgc2hhcmVkLmZpcmVkLnB1c2goJ2MnKTsKKyAgICAg
ICAgfQorICAgICAgfSwKKyAgICAgIG9uOiBmdW5jdGlvbiBiKCkgeworICAgICAgICBzaGFyZWQu
ZmlyZWQucHVzaCgnYicpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICB9CisgICAgfSwK
KyAgICBvbjogZnVuY3Rpb24gYSgpIHsKKyAgICAgIHNoYXJlZC5maXJlZC5wdXNoKCdhJyk7Cisg
ICAgfQorICB9Cit9LCB7CisgIHJlY3Vyc2U6ICdmb3J3YXJkJworfSwgZnVuY3Rpb24oKSB7Cisg
IHRoaXMubmF2aWdhdGUoJy9hL2IvYycsIGZ1bmN0aW9uKCkgeworICAgIGRlZXBFcXVhbChzaGFy
ZWQuZmlyZWQsIFsnYScsICdiJ10pOworICAgIHRoaXMuZmluaXNoKCk7CisgIH0pOworfSk7CisK
Ky8vCisvLyBBQk9WRSBJUyBXT1JLSU5HCisvLworCisvLyAvLworLy8gLy8gU3BlY2lhbCBFdmVu
dHMKKy8vIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworY3JlYXRlVGVzdCgnQWxsIGdsb2JhbCBldmVudCBzaG91bGQgZmlyZSBh
ZnRlciBldmVyeSByb3V0ZScsIHsKKyAgJy9hJzogICB7CisgICAgb246IGZ1bmN0aW9uIGEoKSB7
CisgICAgICBzaGFyZWQuZmlyZWQucHVzaCgnYScpOworICAgIH0KKyAgfSwKKyAgJy9iJzogewor
ICAgICcvYyc6IHsKKyAgICAgIG9uOiBmdW5jdGlvbiBhKCkgeworICAgICAgICBzaGFyZWQuZmly
ZWQucHVzaCgnYScpOworICAgICAgfQorICAgIH0KKyAgfSwKKyAgJy9kJzogeworICAgICcvOmUn
OiB7CisgICAgICBvbjogZnVuY3Rpb24gYSgpIHsKKyAgICAgICAgc2hhcmVkLmZpcmVkLnB1c2go
J2EnKTsKKyAgICAgIH0KKyAgICB9CisgIH0KK30sIHsKKyAgYWZ0ZXI6IGZ1bmN0aW9uKCkgewor
ICAgIHNoYXJlZC5maXJlZC5wdXNoKCdiJyk7CisgIH0KK30sIGZ1bmN0aW9uKCkgeworICB0aGlz
Lm5hdmlnYXRlKCcvYScsIGZ1bmN0aW9uKCkgeworICAgIHRoaXMubmF2aWdhdGUoJy9iL2MnLCBm
dW5jdGlvbigpIHsKKyAgICAgIHRoaXMubmF2aWdhdGUoJy9kL2UnLCBmdW5jdGlvbigpIHsKKyAg
ICAgICAgZGVlcEVxdWFsKHNoYXJlZC5maXJlZCwgWydhJywgJ2InLCAnYScsICdiJywgJ2EnXSk7
CisgICAgICAgIHRoaXMuZmluaXNoKCk7CisgICAgICB9KTsKKyAgICB9KTsKKyAgfSk7CisKK30p
OworCitjcmVhdGVUZXN0KCdOb3QgZm91bmQuJywgeworICAnL2EnOiB7CisgICAgb246IGZ1bmN0
aW9uIGEoKSB7CisgICAgICBzaGFyZWQuZmlyZWQucHVzaCgnYScpOworICAgIH0KKyAgfSwKKyAg
Jy9iJzogeworICAgIG9uOiBmdW5jdGlvbiBhKCkgeworICAgICAgc2hhcmVkLmZpcmVkLnB1c2go
J2InKTsKKyAgICB9CisgIH0KK30sIHsKKyAgbm90Zm91bmQ6IGZ1bmN0aW9uKCkgeworICAgIHNo
YXJlZC5maXJlZC5wdXNoKCdub3Rmb3VuZCcpOworICB9Cit9LCBmdW5jdGlvbigpIHsKKyAgdGhp
cy5uYXZpZ2F0ZSgnL2MnLCBmdW5jdGlvbigpIHsKKyAgICB0aGlzLm5hdmlnYXRlKCcvZCcsIGZ1
bmN0aW9uKCkgeworICAgICAgZGVlcEVxdWFsKHNoYXJlZC5maXJlZCwgWydub3Rmb3VuZCcsICdu
b3Rmb3VuZCddKTsKKyAgICAgIHRoaXMuZmluaXNoKCk7CisgICAgfSk7CisgIH0pOworfSk7CisK
K2NyZWF0ZVRlc3QoJ09uIGFsbC4nLCB7CisgICcvYSc6IHsKKyAgICBvbjogZnVuY3Rpb24gYSgp
IHsKKyAgICAgIHNoYXJlZC5maXJlZC5wdXNoKCdhJyk7CisgICAgfQorICB9LAorICAnL2InOiB7
CisgICAgb246IGZ1bmN0aW9uIGEoKSB7CisgICAgICBzaGFyZWQuZmlyZWQucHVzaCgnYicpOwor
ICAgIH0KKyAgfQorfSwgeworICBvbjogZnVuY3Rpb24oKSB7CisgICAgc2hhcmVkLmZpcmVkLnB1
c2goJ2MnKTsKKyAgfQorfSwgZnVuY3Rpb24oKSB7CisgIHRoaXMubmF2aWdhdGUoJy9hJywgZnVu
Y3Rpb24oKSB7CisgICAgdGhpcy5uYXZpZ2F0ZSgnL2InLCBmdW5jdGlvbigpIHsKKyAgICAgIGRl
ZXBFcXVhbChzaGFyZWQuZmlyZWQsIFsnYScsICdjJywgJ2InLCAnYyddKTsKKyAgICAgIHRoaXMu
ZmluaXNoKCk7CisgICAgfSk7CisgIH0pOworfSk7CisKKworY3JlYXRlVGVzdCgnQWZ0ZXIgYWxs
LicsIHsKKyAgJy9hJzogeworICAgIG9uOiBmdW5jdGlvbiBhKCkgeworICAgICAgc2hhcmVkLmZp
cmVkLnB1c2goJ2EnKTsKKyAgICB9CisgIH0sCisgICcvYic6IHsKKyAgICBvbjogZnVuY3Rpb24g
YSgpIHsKKyAgICAgIHNoYXJlZC5maXJlZC5wdXNoKCdiJyk7CisgICAgfQorICB9Cit9LCB7Cisg
IGFmdGVyOiBmdW5jdGlvbigpIHsKKyAgICBzaGFyZWQuZmlyZWQucHVzaCgnYycpOworICB9Cit9
LCBmdW5jdGlvbigpIHsKKyAgdGhpcy5uYXZpZ2F0ZSgnL2EnLCBmdW5jdGlvbigpIHsKKyAgICB0
aGlzLm5hdmlnYXRlKCcvYicsIGZ1bmN0aW9uKCkgeworICAgICAgZGVlcEVxdWFsKHNoYXJlZC5m
aXJlZCwgWydhJywgJ2MnLCAnYiddKTsKKyAgICAgIHRoaXMuZmluaXNoKCk7CisgICAgfSk7Cisg
IH0pOworfSk7CisKK2NyZWF0ZVRlc3QoJ3Jlc291cmNlIG9iamVjdC4nLCB7CisgICcvYSc6IHsK
KyAgICAnL2IvOmMnOiB7CisgICAgICBvbjogJ2YxJworICAgIH0sCisgICAgb246ICdmMicKKyAg
fSwKKyAgJy9kJzogeworICAgIG9uOiBbJ2YxJywgJ2YyJ10KKyAgfQorfSwKK3sKKyAgcmVzb3Vy
Y2U6IHsKKyAgICBmMTogZnVuY3Rpb24gKG5hbWUpeworICAgICAgICBzaGFyZWQuZmlyZWQucHVz
aCgiZjEtIiArIG5hbWUpOworICAgIH0sCisgICAgZjI6IGZ1bmN0aW9uIChuYW1lKXsKKyAgICAg
ICAgc2hhcmVkLmZpcmVkLnB1c2goImYyIik7CisgICAgfQorICB9Cit9LCBmdW5jdGlvbigpIHsK
KyAgdGhpcy5uYXZpZ2F0ZSgnL2EvYi9jJywgZnVuY3Rpb24oKSB7CisgICAgdGhpcy5uYXZpZ2F0
ZSgnL2QnLCBmdW5jdGlvbigpIHsKKyAgICAgIGRlZXBFcXVhbChzaGFyZWQuZmlyZWQsIFsnZjEt
YycsICdmMS11bmRlZmluZWQnLCAnZjInXSk7CisgICAgICB0aGlzLmZpbmlzaCgpOworICAgIH0p
OworICB9KTsKK30pOworCitjcmVhdGVUZXN0KCdhcmd1bWVudCBtYXRjaGluZyBzaG91bGQgYmUg
Y2FzZSBhZ25vc3RpYycsIHsKKyAgJy9mb29CYXIvOm5hbWUnOiB7CisgICAgICBvbjogZnVuY3Rp
b24obmFtZSkgeworICAgICAgICBzaGFyZWQuZmlyZWQucHVzaCgiZm9vQmFyLSIgKyBuYW1lKTsK
KyAgICAgIH0KKyAgICB9Cit9LCBmdW5jdGlvbigpIHsKKyAgdGhpcy5uYXZpZ2F0ZSgnL2Zvb0Jh
ci90ZXNUaW5nJywgZnVuY3Rpb24oKSB7CisgICAgZGVlcEVxdWFsKHNoYXJlZC5maXJlZCwgWydm
b29CYXItdGVzVGluZyddKTsKKyAgICB0aGlzLmZpbmlzaCgpOworICB9KTsKK30pOworCitjcmVh
dGVUZXN0KCdzYW5pdHkgdGVzdCcsIHsKKyAgJy9pcy86dGhpcy86c2FuZSc6IHsKKyAgICBvbjog
ZnVuY3Rpb24oYSwgYikgeworICAgICAgc2hhcmVkLmZpcmVkLnB1c2goJ3llcyAnICsgYSArICcg
aXMgJyArIGIpOworICAgIH0KKyAgfSwKKyAgJy8nOiB7CisgICAgb246IGZ1bmN0aW9uKCkgewor
ICAgICAgc2hhcmVkLmZpcmVkLnB1c2goJ2lzIHRoZXJlIHNhbml0eT8nKTsKKyAgICB9CisgIH0K
K30sIGZ1bmN0aW9uKCkgeworICB0aGlzLm5hdmlnYXRlKCcvaXMvdGhlcmUvc2FuaXR5JywgZnVu
Y3Rpb24oKSB7CisgICAgZGVlcEVxdWFsKHNoYXJlZC5maXJlZCwgWyd5ZXMgdGhlcmUgaXMgc2Fu
aXR5J10pOworICAgIHRoaXMuZmluaXNoKCk7CisgIH0pOworfSk7CisKK2NyZWF0ZVRlc3QoJ2Av
YCByb3V0ZSBzaG91bGQgYmUgbmF2aWdhYmxlIGZyb20gdGhlIHJvdXRpbmcgdGFibGUnLCB7Cisg
ICcvJzogeworICAgIG9uOiBmdW5jdGlvbiByb290KCkgeworICAgICAgc2hhcmVkLmZpcmVkLnB1
c2goJy8nKTsKKyAgICB9CisgIH0sCisgICcvOnVzZXJuYW1lJzogeworICAgIG9uOiBmdW5jdGlv
biBhZnVuYyh1c2VybmFtZSkgeworICAgICAgc2hhcmVkLmZpcmVkLnB1c2goJy8nICsgdXNlcm5h
bWUpOworICAgIH0KKyAgfQorfSwgZnVuY3Rpb24oKSB7CisgIHRoaXMubmF2aWdhdGUoJy8nLCBm
dW5jdGlvbiByb290KCkgeworICAgIGRlZXBFcXVhbChzaGFyZWQuZmlyZWQsIFsnLyddKTsKKyAg
ICB0aGlzLmZpbmlzaCgpOworICB9KTsKK30pOworCitjcmVhdGVUZXN0KCdgL2Agcm91dGUgc2hv
dWxkIG5vdCBvdmVycmlkZSBhIGAvOnRva2VuYCByb3V0ZScsIHsKKyAgJy8nOiB7CisgICAgb246
IGZ1bmN0aW9uIHJvb3QoKSB7CisgICAgICBzaGFyZWQuZmlyZWQucHVzaCgnLycpOworICAgIH0K
KyAgfSwKKyAgJy86dXNlcm5hbWUnOiB7CisgICAgb246IGZ1bmN0aW9uIGFmdW5jKHVzZXJuYW1l
KSB7CisgICAgICBzaGFyZWQuZmlyZWQucHVzaCgnLycgKyB1c2VybmFtZSk7CisgICAgfQorICB9
Cit9LCBmdW5jdGlvbigpIHsKKyAgdGhpcy5uYXZpZ2F0ZSgnL2EnLCBmdW5jdGlvbiBhZnVuYygp
IHsKKyAgICBkZWVwRXF1YWwoc2hhcmVkLmZpcmVkLCBbJy9hJ10pOworICAgIHRoaXMuZmluaXNo
KCk7CisgIH0pOworfSk7CisKK2NyZWF0ZVRlc3QoJ3Nob3VsZCBhY2NlcHQgdGhlIHJvb3QgYXMg
YSB0b2tlbi4nLCB7CisgICcvOmEnOiB7CisgICAgb246IGZ1bmN0aW9uIHJvb3QoKSB7CisgICAg
ICBpZiAoIWJyb3dzZXJfaGlzdG9yeV9zdXBwb3J0KSB7CisgICAgICAgIHNoYXJlZC5maXJlZC5w
dXNoKGxvY2F0aW9uLmhhc2gucmVwbGFjZSgvXiMvLCAnJykpOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgc2hhcmVkLmZpcmVkLnB1c2gobG9jYXRpb24ucGF0aG5hbWUpOworICAgICAgfQorICAg
IH0KKyAgfQorfSwgZnVuY3Rpb24oKSB7CisgIHRoaXMubmF2aWdhdGUoJy9hJywgZnVuY3Rpb24g
cm9vdCgpIHsKKyAgICBkZWVwRXF1YWwoc2hhcmVkLmZpcmVkLCBbJy9hJ10pOworICAgIHRoaXMu
ZmluaXNoKCk7CisgIH0pOworfSk7CisKK2NyZWF0ZVRlc3QoJ3JvdXRlcyBzaG91bGQgYWxsb3cg
d2lsZGNhcmRzLicsIHsKKyAgJy86YS9iKmQnOiB7CisgICAgb246IGZ1bmN0aW9uKCkgeworICAg
ICAgaWYgKCFicm93c2VyX2hpc3Rvcnlfc3VwcG9ydCkgeworICAgICAgICBzaGFyZWQuZmlyZWQu
cHVzaChsb2NhdGlvbi5oYXNoLnJlcGxhY2UoL14jLywgJycpKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHNoYXJlZC5maXJlZC5wdXNoKGxvY2F0aW9uLnBhdGhuYW1lKTsKKyAgICAgIH0KKyAg
ICB9CisgIH0KK30sIGZ1bmN0aW9uKCkgeworICB0aGlzLm5hdmlnYXRlKCcvYS9iY2QnLCBmdW5j
dGlvbiByb290KCkgeworICAgIGRlZXBFcXVhbChzaGFyZWQuZmlyZWQsIFsnL2EvYmNkJ10pOwor
ICAgIHRoaXMuZmluaXNoKCk7CisgIH0pOworfSk7CisKK2NyZWF0ZVRlc3QoJ2Z1bmN0aW9ucyBz
aG91bGQgaGF2ZSB8dGhpc3wgY29udGV4dCBvZiB0aGUgcm91dGVyIGluc3RhbmNlLicsIHsKKyAg
Jy8nOiB7CisgICAgb246IGZ1bmN0aW9uIHJvb3QoKSB7CisgICAgICBzaGFyZWQuZmlyZWQucHVz
aCghIXRoaXMucm91dGVzKTsKKyAgICB9CisgIH0KK30sIGZ1bmN0aW9uKCkgeworICB0aGlzLm5h
dmlnYXRlKCcvJywgZnVuY3Rpb24gcm9vdCgpIHsKKyAgICBkZWVwRXF1YWwoc2hhcmVkLmZpcmVk
LCBbdHJ1ZV0pOworICAgIHRoaXMuZmluaXNoKCk7CisgIH0pOworfSk7CisKK2NyZWF0ZVRlc3Qo
J3NldFJvdXRlIHdpdGggYSBzaW5nbGUgcGFyYW1ldGVyIHNob3VsZCBjaGFuZ2UgbG9jYXRpb24g
Y29ycmVjdGx5JywgeworICAnL2JvbmsnOiB7CisgICAgb246IGZ1bmN0aW9uKCkgeworICAgICAg
aWYgKCFicm93c2VyX2hpc3Rvcnlfc3VwcG9ydCkgeworICAgICAgICBzaGFyZWQuZmlyZWQucHVz
aChsb2NhdGlvbi5oYXNoLnJlcGxhY2UoL14jLywgJycpKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHNoYXJlZC5maXJlZC5wdXNoKHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSk7CisgICAgICB9
CisgICAgfQorICB9Cit9LCBmdW5jdGlvbigpIHsKKyAgdmFyIHNlbGYgPSB0aGlzOworICB0aGlz
LnJvdXRlci5zZXRSb3V0ZSgnL2JvbmsnKTsKKyAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAg
ICBkZWVwRXF1YWwoc2hhcmVkLmZpcmVkLCBbJy9ib25rJ10pOworICAgIHNlbGYuZmluaXNoKCk7
CisgIH0sIDE0KQorfSk7CisKK2NyZWF0ZVRlc3QoJ3JvdXRlIHNob3VsZCBhY2NlcHQgXyBhbmQg
LiB3aXRoaW4gcGFyYW1ldGVycycsIHsKKyAgJy86YSc6IHsKKyAgICBvbjogZnVuY3Rpb24gcm9v
dCgpIHsKKyAgICAgIGlmICghYnJvd3Nlcl9oaXN0b3J5X3N1cHBvcnQpIHsKKyAgICAgICAgc2hh
cmVkLmZpcmVkLnB1c2gobG9jYXRpb24uaGFzaC5yZXBsYWNlKC9eIy8sICcnKSk7CisgICAgICB9
IGVsc2UgeworICAgICAgICBzaGFyZWQuZmlyZWQucHVzaChsb2NhdGlvbi5wYXRobmFtZSk7Cisg
ICAgICB9CisgICAgfQorICB9Cit9LCBmdW5jdGlvbigpIHsKKyAgICB0aGlzLm5hdmlnYXRlKCcv
YV9jb21wbGV4X3JvdXRlLmNvLnVrJywgZnVuY3Rpb24gcm9vdCgpIHsKKyAgICBkZWVwRXF1YWwo
c2hhcmVkLmZpcmVkLCBbJy9hX2NvbXBsZXhfcm91dGUuY28udWsnXSk7CisgICAgdGhpcy5maW5p
c2goKTsKKyAgfSk7Cit9KTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21v
ZHVsZXMvZGlyZWN0b3IvdGVzdC9icm93c2VyL3JvdXRlcy1oYXJuZXNzLmh0bWwgYi9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL3Rlc3QvYnJvd3Nlci9yb3V0ZXMtaGFy
bmVzcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5N2M4MjY2N2EwNmE3MGEyNTczNDEzZWExZWE0MTBkYmU4
MTE3YmQKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVz
L2RpcmVjdG9yL3Rlc3QvYnJvd3Nlci9yb3V0ZXMtaGFybmVzcy5odG1sCkBAIC0wLDAgKzEsMjEg
QEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJV
VEYtOCI+CisgICAgPHRpdGxlPkRpcmVjdG9yIFRlc3RzPC90aXRsZT4KKyAgICA8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL25vZGVfbW9kdWxlcy9xdW5pdGpzL3F1bml0L3F1bml0
LmNzcyI+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8ZGl2IGlkPSJxdW5pdCI+PC9kaXY+CisgICAg
PGRpdiBpZD0icXVuaXQtZml4dHVyZSI+PC9kaXY+CisKKyAgICA8c2NyaXB0PgorICAgICAgICB2
YXIgSFRNTDVURVNUID0gZmFsc2U7CisgICAgPC9zY3JpcHQ+CisKKyAgICA8c2NyaXB0IHNyYz0i
Li4vLi4vbm9kZV9tb2R1bGVzL3F1bml0anMvcXVuaXQvcXVuaXQuanMiPjwvc2NyaXB0PgorICAg
IDxzY3JpcHQgc3JjPSIuLi8uLi9idWlsZC9kaXJlY3Rvci5qcyI+PC9zY3JpcHQ+CisgICAgPHNj
cmlwdCBzcmM9ImhlbHBlcnMvYXBpLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icm91
dGVzLXRlc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci90ZXN0L2Jyb3dzZXIvcm91dGVz
LXRlc3QuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL3Rlc3Qv
YnJvd3Nlci9yb3V0ZXMtdGVzdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MzgzMWMyMTJmOWYwMjlmNGYyMGY4
YjM2ZDYwNDM4MTU4MjVkYmY1Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5
L25vZGVfbW9kdWxlcy9kaXJlY3Rvci90ZXN0L2Jyb3dzZXIvcm91dGVzLXRlc3QuanMKQEAgLTAs
MCArMSw3MzkgQEAKKworY3JlYXRlVGVzdCgnTmVzdGVkIHJvdXRlIHdpdGggdGhlIG1hbnkgY2hp
bGRyZW4gYXMgYSB0b2tlbnMsIGNhbGxiYWNrcyBzaG91bGQgeWllbGQgaGlzdG9yaWMgcGFyYW1z
JywgeworICAnL2EnOiB7CisgICAgJy86aWQnOiB7CisgICAgICAnLzppZCc6IGZ1bmN0aW9uKGEs
IGIpIHsKKyAgICAgICAgc2hhcmVkLmZpcmVkLnB1c2gobG9jYXRpb24uaGFzaCwgYSwgYik7Cisg
ICAgICB9CisgICAgfQorICB9Cit9LCBmdW5jdGlvbigpIHsKKyAgc2hhcmVkLmZpcmVkID0gW107
CisgIHRoaXMubmF2aWdhdGUoJy9hL2IvYycsIGZ1bmN0aW9uKCkgeworICAgIGRlZXBFcXVhbChz
aGFyZWQuZmlyZWQsIFsnIy9hL2IvYycsICdiJywgJ2MnXSk7CisgICAgdGhpcy5maW5pc2goKTsK
KyAgfSk7Cit9KTsKKworY3JlYXRlVGVzdCgnTmVzdGVkIHJvdXRlIHdpdGggdGhlIGZpcnN0IGNo
aWxkIGFzIGEgdG9rZW4sIGNhbGxiYWNrIHNob3VsZCB5aWVsZCBhIHBhcmFtJywgeworICAnL2Zv
byc6IHsKKyAgICAnLzppZCc6IHsKKyAgICAgIG9uOiBmdW5jdGlvbihpZCkgeworICAgICAgICBz
aGFyZWQuZmlyZWQucHVzaChsb2NhdGlvbi5oYXNoLCBpZCk7CisgICAgICB9CisgICAgfQorICB9
Cit9LCBmdW5jdGlvbigpIHsKKyAgc2hhcmVkLmZpcmVkID0gW107CisgIHRoaXMubmF2aWdhdGUo
Jy9mb28vYScsIGZ1bmN0aW9uKCkgeworICAgIHRoaXMubmF2aWdhdGUoJy9mb28vYi9jJywgZnVu
Y3Rpb24oKSB7CisgICAgICBkZWVwRXF1YWwoc2hhcmVkLmZpcmVkLCBbJyMvZm9vL2EnLCAnYSdd
KTsKKyAgICAgIHRoaXMuZmluaXNoKCk7CisgICAgfSk7CisgIH0pOworfSk7CisKK2NyZWF0ZVRl
c3QoJ05lc3RlZCByb3V0ZSB3aXRoIHRoZSBmaXJzdCBjaGlsZCBhcyBhIHJlZ2V4cCwgY2FsbGJh
Y2sgc2hvdWxkIHlpZWxkIGEgcGFyYW0nLCB7CisgICcvZm9vJzogeworICAgICcvKFxcdyspJzog
eworICAgICAgb246IGZ1bmN0aW9uKHZhbHVlKSB7CisgICAgICAgIHNoYXJlZC5maXJlZC5wdXNo
KGxvY2F0aW9uLmhhc2gsIHZhbHVlKTsKKyAgICAgIH0KKyAgICB9CisgIH0KK30sIGZ1bmN0aW9u
KCkgeworICBzaGFyZWQuZmlyZWQgPSBbXTsKKyAgdGhpcy5uYXZpZ2F0ZSgnL2Zvby9hJywgZnVu
Y3Rpb24oKSB7CisgICAgdGhpcy5uYXZpZ2F0ZSgnL2Zvby9iL2MnLCBmdW5jdGlvbigpIHsKKyAg
ICAgIGRlZXBFcXVhbChzaGFyZWQuZmlyZWQsIFsnIy9mb28vYScsICdhJ10pOworICAgICAgdGhp
cy5maW5pc2goKTsKKyAgICB9KTsKKyAgfSk7Cit9KTsKKworY3JlYXRlVGVzdCgnTmVzdGVkIHJv
dXRlIHdpdGggdGhlIHNldmVyYWwgcmVndWxhciBleHByZXNzaW9ucywgY2FsbGJhY2sgc2hvdWxk
IHlpZWxkIGEgcGFyYW0nLCB7CisgICcvYSc6IHsKKyAgICAnLyhcXHcrKSc6IHsKKyAgICAgICcv
KFxcdyspJzogZnVuY3Rpb24oYSwgYikgeworICAgICAgICBzaGFyZWQuZmlyZWQucHVzaChhLCBi
KTsKKyAgICAgIH0KKyAgICB9CisgIH0KK30sIGZ1bmN0aW9uKCkgeworICBzaGFyZWQuZmlyZWQg
PSBbXTsKKyAgdGhpcy5uYXZpZ2F0ZSgnL2EvYi9jJywgZnVuY3Rpb24oKSB7CisgICAgZGVlcEVx
dWFsKHNoYXJlZC5maXJlZCwgWydiJywgJ2MnXSk7CisgICAgdGhpcy5maW5pc2goKTsKKyAgfSk7
Cit9KTsKKworCisKK2NyZWF0ZVRlc3QoJ1NpbmdsZSBuZXN0ZWQgcm91dGUgd2l0aCBvbiBtZW1i
ZXIgY29udGFpbmluZyBmdW5jdGlvbiB2YWx1ZScsIHsKKyAgJy9hJzogeworICAgICcvYic6IHsK
KyAgICAgIG9uOiBmdW5jdGlvbigpIHsKKyAgICAgICAgc2hhcmVkLmZpcmVkLnB1c2gobG9jYXRp
b24uaGFzaCk7CisgICAgICB9CisgICAgfQorICB9Cit9LCBmdW5jdGlvbigpIHsKKyAgc2hhcmVk
LmZpcmVkID0gW107CisgIHRoaXMubmF2aWdhdGUoJy9hL2InLCBmdW5jdGlvbigpIHsKKyAgICAg
IGRlZXBFcXVhbChzaGFyZWQuZmlyZWQsIFsnIy9hL2InXSk7CisgICAgICB0aGlzLmZpbmlzaCgp
OworICB9KTsKK30pOworCitjcmVhdGVUZXN0KCdTaW5nbGUgbm9uLW5lc3RlZCByb3V0ZSB3aXRo
IG9uIG1lbWJlciBjb250YWluaW5nIGZ1bmN0aW9uIHZhbHVlJywgeworICAnL2EvYic6IHsKKyAg
ICBvbjogZnVuY3Rpb24oKSB7CisgICAgICBzaGFyZWQuZmlyZWQucHVzaChsb2NhdGlvbi5oYXNo
KTsKKyAgICB9CisgIH0KK30sIGZ1bmN0aW9uKCkgeworICBzaGFyZWQuZmlyZWQgPSBbXTsKKyAg
dGhpcy5uYXZpZ2F0ZSgnL2EvYicsIGZ1bmN0aW9uKCkgeworICAgIGRlZXBFcXVhbChzaGFyZWQu
ZmlyZWQsIFsnIy9hL2InXSk7CisgICAgdGhpcy5maW5pc2goKTsKKyAgfSk7Cit9KTsKKworY3Jl
YXRlVGVzdCgnU2luZ2xlIG5lc3RlZCByb3V0ZSB3aXRoIG9uIG1lbWJlciBjb250YWluaW5nIGFy
cmF5IG9mIGZ1bmN0aW9uIHZhbHVlcycsIHsKKyAgJy9hJzogeworICAgICcvYic6IHsKKyAgICAg
IG9uOiBbZnVuY3Rpb24oKSB7IHNoYXJlZC5maXJlZC5wdXNoKGxvY2F0aW9uLmhhc2gpOyB9LAor
ICAgICAgICBmdW5jdGlvbigpIHsgc2hhcmVkLmZpcmVkLnB1c2gobG9jYXRpb24uaGFzaCk7IH1d
CisgICAgfQorICB9Cit9LCBmdW5jdGlvbigpIHsKKyAgc2hhcmVkLmZpcmVkID0gW107CisgIHRo
aXMubmF2aWdhdGUoJy9hL2InLCBmdW5jdGlvbigpIHsKKyAgICAgIGRlZXBFcXVhbChzaGFyZWQu
ZmlyZWQsIFsnIy9hL2InLCAnIy9hL2InXSk7CisgICAgICB0aGlzLmZpbmlzaCgpOworICB9KTsK
K30pOworCitjcmVhdGVUZXN0KCdtZXRob2Qgc2hvdWxkIG9ubHkgZmlyZSBvbmNlIG9uIHRoZSBy
b3V0ZS4nLCB7CisgICcvYSc6IHsKKyAgICAnL2InOiB7CisgICAgICBvbmNlOiBmdW5jdGlvbigp
IHsKKyAgICAgICAgc2hhcmVkLmZpcmVkKys7CisgICAgICB9CisgICAgfQorICB9Cit9LCBmdW5j
dGlvbigpIHsKKyAgc2hhcmVkLmZpcmVkID0gMDsKKyAgdGhpcy5uYXZpZ2F0ZSgnL2EvYicsIGZ1
bmN0aW9uKCkgeworICAgIHRoaXMubmF2aWdhdGUoJy9hL2InLCBmdW5jdGlvbigpIHsKKyAgICAg
IHRoaXMubmF2aWdhdGUoJy9hL2InLCBmdW5jdGlvbigpIHsKKyAgICAgICAgZGVlcEVxdWFsKHNo
YXJlZC5maXJlZCwgMSk7CisgICAgICAgIHRoaXMuZmluaXNoKCk7CisgICAgICB9KTsKKyAgICB9
KTsKKyAgfSk7Cit9KTsKKworY3JlYXRlVGVzdCgnbWV0aG9kIHNob3VsZCBvbmx5IGZpcmUgb25j
ZSBvbiB0aGUgcm91dGUsIG11bHRpcGxlIG5lc3RpbmcuJywgeworICAnL2EnOiB7CisgICAgb246
IGZ1bmN0aW9uKCkgeyBzaGFyZWQuZmlyZWQrKzsgfSwKKyAgICBvbmNlOiBmdW5jdGlvbigpIHsg
c2hhcmVkLmZpcmVkKys7IH0KKyAgfSwKKyAgJy9iJzogeworICAgIG9uOiBmdW5jdGlvbigpIHsg
c2hhcmVkLmZpcmVkKys7IH0sCisgICAgb25jZTogZnVuY3Rpb24oKSB7IHNoYXJlZC5maXJlZCsr
OyB9CisgIH0KK30sIGZ1bmN0aW9uKCkgeworICBzaGFyZWQuZmlyZWQgPSAwOworICB0aGlzLm5h
dmlnYXRlKCcvYScsIGZ1bmN0aW9uKCkgeworICAgIHRoaXMubmF2aWdhdGUoJy9iJywgZnVuY3Rp
b24oKSB7CisgICAgICB0aGlzLm5hdmlnYXRlKCcvYScsIGZ1bmN0aW9uKCkgeworICAgICAgICB0
aGlzLm5hdmlnYXRlKCcvYicsIGZ1bmN0aW9uKCkgeworICAgICAgICAgIGRlZXBFcXVhbChzaGFy
ZWQuZmlyZWQsIDYpOworICAgICAgICAgIHRoaXMuZmluaXNoKCk7CisgICAgICAgIH0pOworICAg
ICAgfSk7CisgICAgfSk7CisgIH0pOworfSk7CisKK2NyZWF0ZVRlc3QoJ292ZXJsYXBwaW5nIHJv
dXRlcyB3aXRoIHRva2Vucy4nLCB7CisgICcvYS86Yi9jJyA6IGZ1bmN0aW9uKCkgeworICAgIHNo
YXJlZC5maXJlZC5wdXNoKGxvY2F0aW9uLmhhc2gpOworICB9LAorICAnL2EvOmIvYy86ZCcgOiBm
dW5jdGlvbigpIHsKKyAgICBzaGFyZWQuZmlyZWQucHVzaChsb2NhdGlvbi5oYXNoKTsKKyAgfQor
fSwgZnVuY3Rpb24oKSB7CisgIHNoYXJlZC5maXJlZCA9IFtdOworICB0aGlzLm5hdmlnYXRlKCcv
YS9iL2MnLCBmdW5jdGlvbigpIHsKKworICAgIHRoaXMubmF2aWdhdGUoJy9hL2IvYy9kJywgZnVu
Y3Rpb24oKSB7CisgICAgICBkZWVwRXF1YWwoc2hhcmVkLmZpcmVkLCBbJyMvYS9iL2MnLCAnIy9h
L2IvYy9kJ10pOworICAgICAgdGhpcy5maW5pc2goKTsKKyAgICB9KTsKKyAgfSk7Cit9KTsKKwor
Ly8gLy8gLy8KKy8vIC8vIC8vIFJlY3Vyc2lvbiBmZWF0dXJlcworLy8gLy8gLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitjcmVh
dGVUZXN0KCdOZXN0ZWQgcm91dGVzIHdpdGggbm8gcmVjdXJzaW9uJywgeworICAnL2EnOiB7Cisg
ICAgJy9iJzogeworICAgICAgJy9jJzogeworICAgICAgICBvbjogZnVuY3Rpb24gYygpIHsKKyAg
ICAgICAgICBzaGFyZWQuZmlyZWQucHVzaCgnYycpOworICAgICAgICB9CisgICAgICB9LAorICAg
ICAgb246IGZ1bmN0aW9uIGIoKSB7CisgICAgICAgIHNoYXJlZC5maXJlZC5wdXNoKCdiJyk7Cisg
ICAgICB9CisgICAgfSwKKyAgICBvbjogZnVuY3Rpb24gYSgpIHsKKyAgICAgIHNoYXJlZC5maXJl
ZC5wdXNoKCdhJyk7CisgICAgfQorICB9Cit9LCBmdW5jdGlvbigpIHsKKyAgc2hhcmVkLmZpcmVk
ID0gW107CisKKyAgdGhpcy5uYXZpZ2F0ZSgnL2EvYi9jJywgZnVuY3Rpb24oKSB7CisgICAgZGVl
cEVxdWFsKHNoYXJlZC5maXJlZCwgWydjJ10pOworICAgIHRoaXMuZmluaXNoKCk7CisgIH0pOwor
fSk7CisKK2NyZWF0ZVRlc3QoJ05lc3RlZCByb3V0ZXMgd2l0aCBiYWNrd2FyZCByZWN1cnNpb24n
LCB7CisgICcvYSc6IHsKKyAgICAnL2InOiB7CisgICAgICAnL2MnOiB7CisgICAgICAgIG9uOiBm
dW5jdGlvbiBjKCkgeworICAgICAgICAgIHNoYXJlZC5maXJlZC5wdXNoKCdjJyk7CisgICAgICAg
IH0KKyAgICAgIH0sCisgICAgICBvbjogZnVuY3Rpb24gYigpIHsKKyAgICAgICAgc2hhcmVkLmZp
cmVkLnB1c2goJ2InKTsKKyAgICAgIH0KKyAgICB9LAorICAgIG9uOiBmdW5jdGlvbiBhKCkgewor
ICAgICAgc2hhcmVkLmZpcmVkLnB1c2goJ2EnKTsKKyAgICB9CisgIH0KK30sIHsKKyAgcmVjdXJz
ZTogJ2JhY2t3YXJkJworfSwgZnVuY3Rpb24oKSB7CisgIHNoYXJlZC5maXJlZCA9IFtdOworCisg
IHRoaXMubmF2aWdhdGUoJy9hL2IvYycsIGZ1bmN0aW9uKCkgeworICAgIGRlZXBFcXVhbChzaGFy
ZWQuZmlyZWQsIFsnYycsICdiJywgJ2EnXSk7CisgICAgdGhpcy5maW5pc2goKTsKKyAgfSk7Cit9
KTsKKworY3JlYXRlVGVzdCgnQnJlYWtpbmcgb3V0IG9mIG5lc3RlZCByb3V0ZXMgd2l0aCBiYWNr
d2FyZCByZWN1cnNpb24nLCB7CisgICcvYSc6IHsKKyAgICAnLzpiJzogeworICAgICAgJy9jJzog
eworICAgICAgICBvbjogZnVuY3Rpb24gYygpIHsKKyAgICAgICAgICBzaGFyZWQuZmlyZWQucHVz
aCgnYycpOworICAgICAgICB9CisgICAgICB9LAorICAgICAgb246IGZ1bmN0aW9uIGIoKSB7Cisg
ICAgICAgIHNoYXJlZC5maXJlZC5wdXNoKCdiJyk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgIH0KKyAgICB9LAorICAgIG9uOiBmdW5jdGlvbiBhKCkgeworICAgICAgc2hhcmVkLmZpcmVk
LnB1c2goJ2EnKTsKKyAgICB9CisgIH0KK30sIHsKKyAgcmVjdXJzZTogJ2JhY2t3YXJkJworfSwg
ZnVuY3Rpb24oKSB7CisgIHNoYXJlZC5maXJlZCA9IFtdOworCisgIHRoaXMubmF2aWdhdGUoJy9h
L2IvYycsIGZ1bmN0aW9uKCkgeworICAgIGRlZXBFcXVhbChzaGFyZWQuZmlyZWQsIFsnYycsICdi
J10pOworICAgIHRoaXMuZmluaXNoKCk7CisgIH0pOworfSk7CisKK2NyZWF0ZVRlc3QoJ05lc3Rl
ZCByb3V0ZXMgd2l0aCBmb3J3YXJkIHJlY3Vyc2lvbicsIHsKKyAgJy9hJzogeworICAgICcvYic6
IHsKKyAgICAgICcvYyc6IHsKKyAgICAgICAgb246IGZ1bmN0aW9uIGMoKSB7CisgICAgICAgICAg
c2hhcmVkLmZpcmVkLnB1c2goJ2MnKTsKKyAgICAgICAgfQorICAgICAgfSwKKyAgICAgIG9uOiBm
dW5jdGlvbiBiKCkgeworICAgICAgICBzaGFyZWQuZmlyZWQucHVzaCgnYicpOworICAgICAgfQor
ICAgIH0sCisgICAgb246IGZ1bmN0aW9uIGEoKSB7CisgICAgICBzaGFyZWQuZmlyZWQucHVzaCgn
YScpOworICAgIH0KKyAgfQorfSwgeworICByZWN1cnNlOiAnZm9yd2FyZCcKK30sIGZ1bmN0aW9u
KCkgeworICBzaGFyZWQuZmlyZWQgPSBbXTsKKworICB0aGlzLm5hdmlnYXRlKCcvYS9iL2MnLCBm
dW5jdGlvbigpIHsKKyAgICBkZWVwRXF1YWwoc2hhcmVkLmZpcmVkLCBbJ2EnLCAnYicsICdjJ10p
OworICAgIHRoaXMuZmluaXNoKCk7CisgIH0pOworfSk7CisKK2NyZWF0ZVRlc3QoJ05lc3RlZCBy
b3V0ZXMgd2l0aCBmb3J3YXJkIHJlY3Vyc2lvbiwgc2luZ2xlIHJvdXRlIHdpdGggYW4gYWZ0ZXIg
ZXZlbnQuJywgeworICAnL2EnOiB7CisgICAgJy9iJzogeworICAgICAgJy9jJzogeworICAgICAg
ICBvbjogZnVuY3Rpb24gYygpIHsKKyAgICAgICAgICBzaGFyZWQuZmlyZWQucHVzaCgnYycpOwor
ICAgICAgICB9LAorICAgICAgICBhZnRlcjogZnVuY3Rpb24oKSB7CisgICAgICAgICAgc2hhcmVk
LmZpcmVkLnB1c2goJ2MtYWZ0ZXInKTsKKyAgICAgICAgfQorICAgICAgfSwKKyAgICAgIG9uOiBm
dW5jdGlvbiBiKCkgeworICAgICAgICBzaGFyZWQuZmlyZWQucHVzaCgnYicpOworICAgICAgfQor
ICAgIH0sCisgICAgb246IGZ1bmN0aW9uIGEoKSB7CisgICAgICBzaGFyZWQuZmlyZWQucHVzaCgn
YScpOworICAgIH0KKyAgfQorfSwgeworICByZWN1cnNlOiAnZm9yd2FyZCcKK30sIGZ1bmN0aW9u
KCkgeworICBzaGFyZWQuZmlyZWQgPSBbXTsKKworICB0aGlzLm5hdmlnYXRlKCcvYS9iL2MnLCBm
dW5jdGlvbigpIHsKKyAgICB0aGlzLm5hdmlnYXRlKCcvYS9iJywgZnVuY3Rpb24oKSB7CisgICAg
ICBkZWVwRXF1YWwoc2hhcmVkLmZpcmVkLCBbJ2EnLCAnYicsICdjJywgJ2MtYWZ0ZXInLCAnYScs
ICdiJ10pOworICAgICAgdGhpcy5maW5pc2goKTsKKyAgICB9KTsKKyAgfSk7Cit9KTsKKworY3Jl
YXRlVGVzdCgnQnJlYWtpbmcgb3V0IG9mIG5lc3RlZCByb3V0ZXMgd2l0aCBmb3J3YXJkIHJlY3Vy
c2lvbicsIHsKKyAgJy9hJzogeworICAgICcvYic6IHsKKyAgICAgICcvYyc6IHsKKyAgICAgICAg
b246IGZ1bmN0aW9uIGMoKSB7CisgICAgICAgICAgc2hhcmVkLmZpcmVkLnB1c2goJ2MnKTsKKyAg
ICAgICAgfQorICAgICAgfSwKKyAgICAgIG9uOiBmdW5jdGlvbiBiKCkgeworICAgICAgICBzaGFy
ZWQuZmlyZWQucHVzaCgnYicpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICB9CisgICAg
fSwKKyAgICBvbjogZnVuY3Rpb24gYSgpIHsKKyAgICAgIHNoYXJlZC5maXJlZC5wdXNoKCdhJyk7
CisgICAgfQorICB9Cit9LCB7CisgIHJlY3Vyc2U6ICdmb3J3YXJkJworfSwgZnVuY3Rpb24oKSB7
CisgIHNoYXJlZC5maXJlZCA9IFtdOworCisgIHRoaXMubmF2aWdhdGUoJy9hL2IvYycsIGZ1bmN0
aW9uKCkgeworICAgIGRlZXBFcXVhbChzaGFyZWQuZmlyZWQsIFsnYScsICdiJ10pOworICAgIHRo
aXMuZmluaXNoKCk7CisgIH0pOworfSk7CisKKy8vCisvLyBBQk9WRSBJUyBXT1JLSU5HCisvLwor
CisvLyAvLworLy8gLy8gU3BlY2lhbCBFdmVudHMKKy8vIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY3JlYXRlVGVzdCgnQWxs
IGdsb2JhbCBldmVudCBzaG91bGQgZmlyZSBhZnRlciBldmVyeSByb3V0ZScsIHsKKyAgJy9hJzog
eworICAgIG9uOiBmdW5jdGlvbiBhKCkgeworICAgICAgc2hhcmVkLmZpcmVkLnB1c2goJ2EnKTsK
KyAgICB9CisgIH0sCisgICcvYic6IHsKKyAgICAnL2MnOiB7CisgICAgICBvbjogZnVuY3Rpb24g
YSgpIHsKKyAgICAgICAgc2hhcmVkLmZpcmVkLnB1c2goJ2EnKTsKKyAgICAgIH0KKyAgICB9Cisg
IH0sCisgICcvZCc6IHsKKyAgICAnLzplJzogeworICAgICAgb246IGZ1bmN0aW9uIGEoKSB7Cisg
ICAgICAgIHNoYXJlZC5maXJlZC5wdXNoKCdhJyk7CisgICAgICB9CisgICAgfQorICB9Cit9LCB7
CisgIGFmdGVyOiBmdW5jdGlvbigpIHsKKyAgICBzaGFyZWQuZmlyZWQucHVzaCgnYicpOworICB9
Cit9LCBmdW5jdGlvbigpIHsKKyAgc2hhcmVkLmZpcmVkID0gW107CisKKyAgdGhpcy5uYXZpZ2F0
ZSgnL2EnLCBmdW5jdGlvbigpIHsKKyAgICB0aGlzLm5hdmlnYXRlKCcvYi9jJywgZnVuY3Rpb24o
KSB7CisgICAgICB0aGlzLm5hdmlnYXRlKCcvZC9lJywgZnVuY3Rpb24oKSB7CisgICAgICAgIGRl
ZXBFcXVhbChzaGFyZWQuZmlyZWQsIFsnYScsICdiJywgJ2EnLCAnYicsICdhJ10pOworICAgICAg
ICB0aGlzLmZpbmlzaCgpOworICAgICAgfSk7CisgICAgfSk7CisgIH0pOworCit9KTsKKworY3Jl
YXRlVGVzdCgnTm90IGZvdW5kLicsIHsKKyAgJy9hJzogeworICAgIG9uOiBmdW5jdGlvbiBhKCkg
eworICAgICAgc2hhcmVkLmZpcmVkLnB1c2goJ2EnKTsKKyAgICB9CisgIH0sCisgICcvYic6IHsK
KyAgICBvbjogZnVuY3Rpb24gYSgpIHsKKyAgICAgIHNoYXJlZC5maXJlZC5wdXNoKCdiJyk7Cisg
ICAgfQorICB9Cit9LCB7CisgIG5vdGZvdW5kOiBmdW5jdGlvbigpIHsKKyAgICBzaGFyZWQuZmly
ZWQucHVzaCgnbm90Zm91bmQnKTsKKyAgfQorfSwgZnVuY3Rpb24oKSB7CisgIHNoYXJlZC5maXJl
ZCA9IFtdOworCisgIHRoaXMubmF2aWdhdGUoJy9jJywgZnVuY3Rpb24oKSB7CisgICAgdGhpcy5u
YXZpZ2F0ZSgnL2QnLCBmdW5jdGlvbigpIHsKKyAgICAgIGRlZXBFcXVhbChzaGFyZWQuZmlyZWQs
IFsnbm90Zm91bmQnLCAnbm90Zm91bmQnXSk7CisgICAgICB0aGlzLmZpbmlzaCgpOworICAgIH0p
OworICB9KTsKK30pOworCitjcmVhdGVUZXN0KCdPbiBhbGwuJywgeworICAnL2EnOiB7CisgICAg
b246IGZ1bmN0aW9uIGEoKSB7CisgICAgICBzaGFyZWQuZmlyZWQucHVzaCgnYScpOworICAgIH0K
KyAgfSwKKyAgJy9iJzogeworICAgIG9uOiBmdW5jdGlvbiBhKCkgeworICAgICAgc2hhcmVkLmZp
cmVkLnB1c2goJ2InKTsKKyAgICB9CisgIH0KK30sIHsKKyAgb246IGZ1bmN0aW9uKCkgeworICAg
IHNoYXJlZC5maXJlZC5wdXNoKCdjJyk7CisgIH0KK30sIGZ1bmN0aW9uKCkgeworICBzaGFyZWQu
ZmlyZWQgPSBbXTsKKworICB0aGlzLm5hdmlnYXRlKCcvYScsIGZ1bmN0aW9uKCkgeworICAgIHRo
aXMubmF2aWdhdGUoJy9iJywgZnVuY3Rpb24oKSB7CisgICAgICBkZWVwRXF1YWwoc2hhcmVkLmZp
cmVkLCBbJ2EnLCAnYycsICdiJywgJ2MnXSk7CisgICAgICB0aGlzLmZpbmlzaCgpOworICAgIH0p
OworICB9KTsKK30pOworCisKK2NyZWF0ZVRlc3QoJ0FmdGVyIGFsbC4nLCB7CisgICcvYSc6IHsK
KyAgICBvbjogZnVuY3Rpb24gYSgpIHsKKyAgICAgIHNoYXJlZC5maXJlZC5wdXNoKCdhJyk7Cisg
ICAgfQorICB9LAorICAnL2InOiB7CisgICAgb246IGZ1bmN0aW9uIGEoKSB7CisgICAgICBzaGFy
ZWQuZmlyZWQucHVzaCgnYicpOworICAgIH0KKyAgfQorfSwgeworICBhZnRlcjogZnVuY3Rpb24o
KSB7CisgICAgc2hhcmVkLmZpcmVkLnB1c2goJ2MnKTsKKyAgfQorfSwgZnVuY3Rpb24oKSB7Cisg
IHNoYXJlZC5maXJlZCA9IFtdOworCisgIHRoaXMubmF2aWdhdGUoJy9hJywgZnVuY3Rpb24oKSB7
CisgICAgdGhpcy5uYXZpZ2F0ZSgnL2InLCBmdW5jdGlvbigpIHsKKyAgICAgIGRlZXBFcXVhbChz
aGFyZWQuZmlyZWQsIFsnYScsICdjJywgJ2InXSk7CisgICAgICB0aGlzLmZpbmlzaCgpOworICAg
IH0pOworICB9KTsKK30pOworCitjcmVhdGVUZXN0KCdyZXNvdXJjZSBvYmplY3QuJywgeworICAn
L2EnOiB7CisgICAgJy9iLzpjJzogeworICAgICAgb246ICdmMScKKyAgICB9LAorICAgIG9uOiAn
ZjInCisgIH0sCisgICcvZCc6IHsKKyAgICBvbjogWydmMScsICdmMiddCisgIH0KK30sCit7Cisg
IHJlc291cmNlOiB7CisgICAgZjE6IGZ1bmN0aW9uIChuYW1lKXsKKyAgICAgICAgc2hhcmVkLmZp
cmVkLnB1c2goImYxLSIgKyBuYW1lKTsKKyAgICB9LAorICAgIGYyOiBmdW5jdGlvbiAobmFtZSl7
CisgICAgICAgIHNoYXJlZC5maXJlZC5wdXNoKCJmMiIpOworICAgIH0KKyAgfQorfSwgZnVuY3Rp
b24oKSB7CisgIHNoYXJlZC5maXJlZCA9IFtdOworCisgIHRoaXMubmF2aWdhdGUoJy9hL2IvYycs
IGZ1bmN0aW9uKCkgeworICAgIHRoaXMubmF2aWdhdGUoJy9kJywgZnVuY3Rpb24oKSB7CisgICAg
ICBkZWVwRXF1YWwoc2hhcmVkLmZpcmVkLCBbJ2YxLWMnLCAnZjEtdW5kZWZpbmVkJywgJ2YyJ10p
OworICAgICAgdGhpcy5maW5pc2goKTsKKyAgICB9KTsKKyAgfSk7Cit9KTsKKworY3JlYXRlVGVz
dCgnYXJndW1lbnQgbWF0Y2hpbmcgc2hvdWxkIGJlIGNhc2UgYWdub3N0aWMnLCB7CisgICcvZm9v
QmFyLzpuYW1lJzogeworICAgICAgb246IGZ1bmN0aW9uKG5hbWUpIHsKKyAgICAgICAgc2hhcmVk
LmZpcmVkLnB1c2goImZvb0Jhci0iICsgbmFtZSk7CisgICAgICB9CisgICAgfQorfSwgZnVuY3Rp
b24oKSB7CisgIHNoYXJlZC5maXJlZCA9IFtdOworICB0aGlzLm5hdmlnYXRlKCcvZm9vQmFyL3Rl
c1RpbmcnLCBmdW5jdGlvbigpIHsKKyAgICBkZWVwRXF1YWwoc2hhcmVkLmZpcmVkLCBbJ2Zvb0Jh
ci10ZXNUaW5nJ10pOworICAgIHRoaXMuZmluaXNoKCk7CisgIH0pOworfSk7CisKK2NyZWF0ZVRl
c3QoJ3Nhbml0eSB0ZXN0JywgeworICAnL2lzLzp0aGlzLzpzYW5lJzogeworICAgIG9uOiBmdW5j
dGlvbihhLCBiKSB7CisgICAgICBzaGFyZWQuZmlyZWQucHVzaCgneWVzICcgKyBhICsgJyBpcyAn
ICsgYik7CisgICAgfQorICB9LAorICAnLyc6IHsKKyAgICBvbjogZnVuY3Rpb24oKSB7CisgICAg
ICBzaGFyZWQuZmlyZWQucHVzaCgnaXMgdGhlcmUgc2FuaXR5PycpOworICAgIH0KKyAgfQorfSwg
ZnVuY3Rpb24oKSB7CisgIHNoYXJlZC5maXJlZCA9IFtdOworICB0aGlzLm5hdmlnYXRlKCcvaXMv
dGhlcmUvc2FuaXR5JywgZnVuY3Rpb24oKSB7CisgICAgZGVlcEVxdWFsKHNoYXJlZC5maXJlZCwg
Wyd5ZXMgdGhlcmUgaXMgc2FuaXR5J10pOworICAgIHRoaXMuZmluaXNoKCk7CisgIH0pOworfSk7
CisKK2NyZWF0ZVRlc3QoJ2AvYCByb3V0ZSBzaG91bGQgYmUgbmF2aWdhYmxlIGZyb20gdGhlIHJv
dXRpbmcgdGFibGUnLCB7CisgICcvJzogeworICAgIG9uOiBmdW5jdGlvbiByb290KCkgeworICAg
ICAgc2hhcmVkLmZpcmVkLnB1c2goJy8nKTsKKyAgICB9CisgIH0sCisgICcvOnVzZXJuYW1lJzog
eworICAgIG9uOiBmdW5jdGlvbiBhZnVuYyh1c2VybmFtZSkgeworICAgICAgc2hhcmVkLmZpcmVk
LnB1c2goJy8nICsgdXNlcm5hbWUpOworICAgIH0KKyAgfQorfSwgZnVuY3Rpb24oKSB7CisgIHNo
YXJlZC5maXJlZCA9IFtdOworICB0aGlzLm5hdmlnYXRlKCcvJywgZnVuY3Rpb24gcm9vdCgpIHsK
KyAgICBkZWVwRXF1YWwoc2hhcmVkLmZpcmVkLCBbJy8nXSk7CisgICAgdGhpcy5maW5pc2goKTsK
KyAgfSk7Cit9KTsKKworY3JlYXRlVGVzdCgnYC9gIHJvdXRlIHNob3VsZCBub3Qgb3ZlcnJpZGUg
YSBgLzp0b2tlbmAgcm91dGUnLCB7CisgICcvJzogeworICAgIG9uOiBmdW5jdGlvbiByb290KCkg
eworICAgICAgc2hhcmVkLmZpcmVkLnB1c2goJy8nKTsKKyAgICB9CisgIH0sCisgICcvOnVzZXJu
YW1lJzogeworICAgIG9uOiBmdW5jdGlvbiBhZnVuYyh1c2VybmFtZSkgeworICAgICAgc2hhcmVk
LmZpcmVkLnB1c2goJy8nICsgdXNlcm5hbWUpOworICAgIH0KKyAgfQorfSwgZnVuY3Rpb24oKSB7
CisgIHNoYXJlZC5maXJlZCA9IFtdOworICB0aGlzLm5hdmlnYXRlKCcvYScsIGZ1bmN0aW9uIGFm
dW5jKCkgeworICAgIGRlZXBFcXVhbChzaGFyZWQuZmlyZWQsIFsnL2EnXSk7CisgICAgdGhpcy5m
aW5pc2goKTsKKyAgfSk7Cit9KTsKKworY3JlYXRlVGVzdCgnc2hvdWxkIGFjY2VwdCB0aGUgcm9v
dCBhcyBhIHRva2VuLicsIHsKKyAgJy86YSc6IHsKKyAgICBvbjogZnVuY3Rpb24gcm9vdCgpIHsK
KyAgICAgIHNoYXJlZC5maXJlZC5wdXNoKGxvY2F0aW9uLmhhc2gpOworICAgIH0KKyAgfQorfSwg
ZnVuY3Rpb24oKSB7CisgIHNoYXJlZC5maXJlZCA9IFtdOworICB0aGlzLm5hdmlnYXRlKCcvYScs
IGZ1bmN0aW9uIHJvb3QoKSB7CisgICAgZGVlcEVxdWFsKHNoYXJlZC5maXJlZCwgWycjL2EnXSk7
CisgICAgdGhpcy5maW5pc2goKTsKKyAgfSk7Cit9KTsKKworY3JlYXRlVGVzdCgncm91dGVzIHNo
b3VsZCBhbGxvdyB3aWxkY2FyZHMuJywgeworICAnLzphL2IqZCc6IHsKKyAgICBvbjogZnVuY3Rp
b24oKSB7CisgICAgICBzaGFyZWQuZmlyZWQucHVzaChsb2NhdGlvbi5oYXNoKTsKKyAgICB9Cisg
IH0KK30sIGZ1bmN0aW9uKCkgeworICBzaGFyZWQuZmlyZWQgPSBbXTsKKyAgdGhpcy5uYXZpZ2F0
ZSgnL2EvYmNkJywgZnVuY3Rpb24gcm9vdCgpIHsKKyAgICBkZWVwRXF1YWwoc2hhcmVkLmZpcmVk
LCBbJyMvYS9iY2QnXSk7CisgICAgdGhpcy5maW5pc2goKTsKKyAgfSk7Cit9KTsKKworY3JlYXRl
VGVzdCgnZnVuY3Rpb25zIHNob3VsZCBoYXZlIHx0aGlzfCBjb250ZXh0IG9mIHRoZSByb3V0ZXIg
aW5zdGFuY2UuJywgeworICAnLyc6IHsKKyAgICBvbjogZnVuY3Rpb24gcm9vdCgpIHsKKyAgICAg
IHNoYXJlZC5maXJlZC5wdXNoKCEhdGhpcy5yb3V0ZXMpOworICAgIH0KKyAgfQorfSwgZnVuY3Rp
b24oKSB7CisgIHNoYXJlZC5maXJlZCA9IFtdOworICB0aGlzLm5hdmlnYXRlKCcvJywgZnVuY3Rp
b24gcm9vdCgpIHsKKyAgICBkZWVwRXF1YWwoc2hhcmVkLmZpcmVkLCBbdHJ1ZV0pOworICAgIHRo
aXMuZmluaXNoKCk7CisgIH0pOworfSk7CisKK2NyZWF0ZVRlc3QoJ3NldFJvdXRlIHdpdGggYSBz
aW5nbGUgcGFyYW1ldGVyIHNob3VsZCBjaGFuZ2UgbG9jYXRpb24gY29ycmVjdGx5JywgeworICAn
L2JvbmsnOiB7CisgICAgb246IGZ1bmN0aW9uKCkgeworICAgICAgc2hhcmVkLmZpcmVkLnB1c2go
d2luZG93LmxvY2F0aW9uLmhhc2gpOworICAgIH0KKyAgfQorfSwgZnVuY3Rpb24oKSB7CisgIHZh
ciBzZWxmID0gdGhpczsKKyAgc2hhcmVkLmZpcmVkID0gW107CisgIHRoaXMucm91dGVyLnNldFJv
dXRlKCcvYm9uaycpOworICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgIGRlZXBFcXVhbChz
aGFyZWQuZmlyZWQsIFsnIy9ib25rJ10pOworICAgIHNlbGYuZmluaXNoKCk7CisgIH0sIDE0KQor
fSk7CisKK2NyZWF0ZVRlc3QoJ3JvdXRlIHNob3VsZCBhY2NlcHQgXyBhbmQgLiB3aXRoaW4gcGFy
YW1ldGVycycsIHsKKyAgJy86YSc6IHsKKyAgICBvbjogZnVuY3Rpb24gcm9vdCgpIHsKKyAgICAg
IHNoYXJlZC5maXJlZC5wdXNoKGxvY2F0aW9uLmhhc2gpOworICAgIH0KKyAgfQorfSwgZnVuY3Rp
b24oKSB7CisgIHNoYXJlZC5maXJlZCA9IFtdOworICB0aGlzLm5hdmlnYXRlKCcvYV9jb21wbGV4
X3JvdXRlLmNvLnVrJywgZnVuY3Rpb24gcm9vdCgpIHsKKyAgICBkZWVwRXF1YWwoc2hhcmVkLmZp
cmVkLCBbJyMvYV9jb21wbGV4X3JvdXRlLmNvLnVrJ10pOworICAgIHRoaXMuZmluaXNoKCk7Cisg
IH0pOworfSk7CisKK2NyZWF0ZVRlc3QoJ2luaXRpYWxpemluZyB3aXRoIGEgZGVmYXVsdCByb3V0
ZSBzaG91bGQgb25seSByZXN1bHQgaW4gb25lIHJvdXRlIGhhbmRsaW5nJywgeworICAgICcvJzog
eworICAgICAgb246IGZ1bmN0aW9uIHJvb3QoKSB7CisgICAgICAgIGlmICghc2hhcmVkLmluaXQp
eworICAgICAgICAgICAgc2hhcmVkLmluaXQgPSAwOworICAgICAgICB9CisgICAgICAgIHNoYXJl
ZC5pbml0Kys7CisgICAgICB9CisgICAgfSwKKyAgICAnL3Rlc3QnOiB7CisgICAgICBvbjogZnVu
Y3Rpb24gcm9vdCgpIHsKKyAgICAgICAgaWYgKCFzaGFyZWQudGVzdCl7CisgICAgICAgICAgICBz
aGFyZWQudGVzdCA9IDA7CisgICAgICAgIH0KKyAgICAgICAgc2hhcmVkLnRlc3QrKzsKKyAgICAg
IH0KKyAgICB9CisgIH0sIGZ1bmN0aW9uKCkgeworICAgIHRoaXMubmF2aWdhdGUoJy90ZXN0Jywg
ZnVuY3Rpb24gcm9vdCgpIHsKKyAgICAgIGVxdWFsKHNoYXJlZC5pbml0LCAxKTsKKyAgICAgIGVx
dWFsKHNoYXJlZC50ZXN0LCAxKTsKKyAgICAgIHRoaXMuZmluaXNoKCk7CisgICAgfSk7CisgIH0s
CisgIG51bGwsCisgICcvJyk7CisKK2NyZWF0ZVRlc3QoJ2NoYW5naW5nIHRoZSBoYXNoIHR3aWNl
IHNob3VsZCBjYWxsIGVhY2ggcm91dGUgb25jZScsIHsKKyAgICAnL2hhc2gxJzogeworICAgICAg
b246IGZ1bmN0aW9uIHJvb3QoKSB7CisgICAgICAgICAgc2hhcmVkLmZpcmVkLnB1c2goJ2hhc2gx
Jyk7CisgICAgICB9CisgICAgfSwKKyAgICAnL2hhc2gyJzogeworICAgICAgICBvbjogZnVuY3Rp
b24gcm9vdCgpIHsKKyAgICAgICAgICAgIHNoYXJlZC5maXJlZC5wdXNoKCdoYXNoMicpOworICAg
ICAgICB9CisgICAgICB9CisgIH0sIGZ1bmN0aW9uKCkgeworICAgIHNoYXJlZC5maXJlZCA9IFtd
OworICAgIHRoaXMubmF2aWdhdGUoJy9oYXNoMScsIGZ1bmN0aW9uKCl7fSk7CisgICAgdGhpcy5u
YXZpZ2F0ZSgnL2hhc2gyJywgZnVuY3Rpb24oKXsKKyAgICAgIGRlZXBFcXVhbChzaGFyZWQuZmly
ZWQsIFsnaGFzaDEnLCAnaGFzaDInXSk7CisgICAgICB0aGlzLmZpbmlzaCgpOworICAgIH0pOwor
ICB9CispOworCisvLyBUaGlzIHRlc3QgZG9lc24ndCB1c2UgdGhlIGNyZWF0ZVRlc3Qgc2luY2Ug
Y3JlYXRlVGVzdCBydW5zIGluaXQgb24gdGhlIHJvdXRlciBiZWZvcmUKKy8vIHJ1bm5pbmcgdGhl
IHRlc3QsIHdoaWNoIGlzIHdoYXQgd2Ugd2FudCB0byB0ZXN0LgordGVzdCgnZmlyZSB0aGUgY29y
cmVjdCByb3V0ZSB3aGVuIGluaXRpYWxpemluZyB0aGUgcm91dGVyJywgZnVuY3Rpb24oKXsKKyAg
d2luZG93LmxvY2F0aW9uLmhhc2ggPSAnaW5pdGlhbCc7CisgIHZhciBmaXJlZCA9IFtdOworICB2
YXIgcm91dGVyID0gbmV3ICh3aW5kb3cuUm91dGVyIHx8IHdpbmRvdy5Sb3V0ZXJBbGlhcykoewor
ICAgICcvaW5pdGlhbCc6IGZ1bmN0aW9uKCl7CisgICAgICBmaXJlZC5wdXNoKCcvaW5pdGlhbCcp
OworICAgIH0sCisgICAgJ2luaXRpYWwnOiBmdW5jdGlvbigpeworICAgICAgZmlyZWQucHVzaCgn
aW5pdGlhbCcpOworICAgIH0KKyAgfSk7CisgIHJvdXRlci5pbml0KCk7CisgIGRlZXBFcXVhbChm
aXJlZCwgWycvaW5pdGlhbCcsICdpbml0aWFsJ10pOworICByb3V0ZXIuZGVzdHJveSgpOworfSk7
CisKK3Rlc3QoJ2RvIG5vdCBjb21iaW5lIGhhc2ggaWYgY29udmVydF9oYXNoX2luX2luaXQgaXMg
ZmFsc2UnLCBmdW5jdGlvbigpeworICB3aW5kb3cubG9jYXRpb24uaGFzaCA9ICdpbml0aWFsJzsK
KyAgdmFyIGZpcmVkID0gW107CisgIHZhciBpbml0aWFsUGF0aCA9IHdpbmRvdy5sb2NhdGlvbi5w
YXRobmFtZTsKKyAgdmFyIHJvdXRlcyA9IHsKKyAgICAnL2luaXRpYWwnOiBmdW5jdGlvbigpewor
ICAgICAgZmlyZWQucHVzaCgnL2luaXRpYWwnKTsKKyAgICB9LAorICAgICdpbml0aWFsJzogZnVu
Y3Rpb24oKXsKKyAgICAgIGZpcmVkLnB1c2goJ2luaXRpYWwnKTsKKyAgICB9CisgIH07CisgIHJv
dXRlc1tpbml0aWFsUGF0aF0gPSBmdW5jdGlvbigpeworICAgIGZpcmVkLnB1c2goJyonKTsKKyAg
fTsKKworICB2YXIgcm91dGVyID0gbmV3ICh3aW5kb3cuUm91dGVyIHx8IHdpbmRvdy5Sb3V0ZXJB
bGlhcykocm91dGVzKTsKKworICByb3V0ZXIuY29uZmlndXJlKHsKKyAgICBodG1sNWhpc3Rvcnk6
IHRydWUsCisgICAgY29udmVydF9oYXNoX2luX2luaXQ6IGZhbHNlCisgIH0pOworICByb3V0ZXIu
aW5pdCgpOworICBkZWVwRXF1YWwoZmlyZWQsIFsnKiddKTsKKyAgcm91dGVyLmRlc3Ryb3koKTsK
K30pOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rv
ci90ZXN0L3NlcnZlci9jbGkvZGlzcGF0Y2gtdGVzdC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9u
b2RlX21vZHVsZXMvZGlyZWN0b3IvdGVzdC9zZXJ2ZXIvY2xpL2Rpc3BhdGNoLXRlc3QuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOThkYzU4YzMwNWQ0NGZhOTA5Zjg1NjdjMTk1ZWFhOTIwMDMxMDBmYwotLS0gL2Rl
di9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvdGVz
dC9zZXJ2ZXIvY2xpL2Rpc3BhdGNoLXRlc3QuanMKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIGRp
c3BhdGNoLXRlc3QuanM6IFRlc3RzIGZvciB0aGUgY29yZSBkaXNwYXRjaCBtZXRob2QuCisgKgor
ICogKEMpIDIwMTEsIENoYXJsaWUgUm9iYmlucywgUGFvbG8gRnJhZ29tZW5pLCAmIHRoZSBDb250
cmlidXRvcnMuCisgKiBNSVQgTElDRU5TRQorICoKKyAqLworCit2YXIgYXNzZXJ0ID0gcmVxdWly
ZSgnYXNzZXJ0JyksCisgICAgdm93cyA9IHJlcXVpcmUoJ3Zvd3MnKSwKKyAgICBkaXJlY3RvciA9
IHJlcXVpcmUoJy4uLy4uLy4uL2xpYi9kaXJlY3RvcicpOworCit2b3dzLmRlc2NyaWJlKCdkaXJl
Y3Rvci9jbGkvZGlzcGF0Y2gnKS5hZGRCYXRjaCh7CisgICJBbiBpbnN0YW5jZSBvZiBkaXJlY3Rv
ci5jbGkuUm91dGVyIjogeworICAgIHRvcGljOiBmdW5jdGlvbiAoKSB7CisgICAgICB2YXIgcm91
dGVyID0gbmV3IGRpcmVjdG9yLmNsaS5Sb3V0ZXIoKSwKKyAgICAgICAgICB0aGF0ID0gdGhpczsK
KworICAgICAgdGhhdC5tYXRjaGVkID0ge307CisgICAgICB0aGF0Lm1hdGNoZWRbJ3VzZXJzJ10g
PSBbXTsKKyAgICAgIHRoYXQubWF0Y2hlZFsnYXBwcyddID0gW10KKworICAgICAgcm91dGVyLm9u
KCd1c2VycyBjcmVhdGUnLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIHRoYXQubWF0Y2hlZFsndXNl
cnMnXS5wdXNoKCdvbiB1c2VycyBjcmVhdGUnKTsKKyAgICAgIH0pOworCisgICAgICByb3V0ZXIu
b24oL2FwcHMgKFx3K1xzXHcrKS8sIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgYXNzZXJ0LmVxdWFs
KGFyZ3VtZW50cy5sZW5ndGgsIDEpOworICAgICAgICB0aGF0Lm1hdGNoZWRbJ2FwcHMnXS5wdXNo
KCdvbiBhcHBzIChcXHcrXFxzXFx3KyknKTsKKyAgICAgIH0pOworCisgICAgICByZXR1cm4gcm91
dGVyOworICAgIH0sCisgICAgInNob3VsZCBoYXZlIHRoZSBjb3JyZWN0IHJvdXRpbmcgdGFibGUi
OiBmdW5jdGlvbiAocm91dGVyKSB7CisgICAgICBhc3NlcnQuaXNPYmplY3Qocm91dGVyLnJvdXRl
cy51c2Vycyk7CisgICAgICBhc3NlcnQuaXNPYmplY3Qocm91dGVyLnJvdXRlcy51c2Vycy5jcmVh
dGUpOworICAgIH0sCisgICAgInRoZSBkaXNwYXRjaCgpIG1ldGhvZCI6IHsKKyAgICAgICJ1c2Vy
cyBjcmVhdGUiOiBmdW5jdGlvbiAocm91dGVyKSB7CisgICAgICAgIGFzc2VydC5pc1RydWUocm91
dGVyLmRpc3BhdGNoKCdvbicsICd1c2VycyBjcmVhdGUnKSk7CisgICAgICAgIGFzc2VydC5lcXVh
bCh0aGlzLm1hdGNoZWQudXNlcnNbMF0sICdvbiB1c2VycyBjcmVhdGUnKTsKKyAgICAgIH0sCisg
ICAgICAiYXBwcyBmb28gYmFyIjogZnVuY3Rpb24gKHJvdXRlcikgeworICAgICAgICBhc3NlcnQu
aXNUcnVlKHJvdXRlci5kaXNwYXRjaCgnb24nLCAnYXBwcyBmb28gYmFyJykpOworICAgICAgICBh
c3NlcnQuZXF1YWwodGhpcy5tYXRjaGVkWydhcHBzJ11bMF0sICdvbiBhcHBzIChcXHcrXFxzXFx3
KyknKTsKKyAgICAgIH0sCisgICAgICAibm90IGhlcmUiOiBmdW5jdGlvbiAocm91dGVyKSB7Cisg
ICAgICAgIGFzc2VydC5pc0ZhbHNlKHJvdXRlci5kaXNwYXRjaCgnb24nLCAnbm90IGhlcmUnKSk7
CisgICAgICB9LAorICAgICAgInN0aWxsIG5vdCBoZXJlIjogZnVuY3Rpb24gKHJvdXRlcikgewor
ICAgICAgICBhc3NlcnQuaXNGYWxzZShyb3V0ZXIuZGlzcGF0Y2goJ29uJywgJ3N0aWxsIG5vdCBo
ZXJlJykpOworICAgICAgfQorICAgIH0KKyAgfQorfSkuZXhwb3J0KG1vZHVsZSk7CmRpZmYgLS1n
aXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL3Rlc3Qvc2VydmVy
L2NsaS9tb3VudC10ZXN0LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJl
Y3Rvci90ZXN0L3NlcnZlci9jbGkvbW91bnQtdGVzdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZTkyYjM1Mjg4
MmMwYjBkYTkyY2QxN2VkMGRlNTgzZWE1OTA3ZGJhCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci90ZXN0L3NlcnZlci9jbGkvbW91bnQt
dGVzdC5qcwpAQCAtMCwwICsxLDMwIEBACisvKgorICogbW91bnQtdGVzdC5qczogVGVzdHMgZm9y
IHRoZSBjb3JlIG1vdW50IG1ldGhvZC4KKyAqCisgKiAoQykgMjAxMSwgQ2hhcmxpZSBSb2JiaW5z
LCBQYW9sbyBGcmFnb21lbmksICYgdGhlIENvbnRyaWJ1dG9ycy4KKyAqIE1JVCBMSUNFTlNFCisg
KgorICovCisKK3ZhciBhc3NlcnQgPSByZXF1aXJlKCdhc3NlcnQnKSwKKyAgICB2b3dzID0gcmVx
dWlyZSgndm93cycpLAorICAgIGRpcmVjdG9yID0gcmVxdWlyZSgnLi4vLi4vLi4vbGliL2RpcmVj
dG9yJyk7CisKK3Zvd3MuZGVzY3JpYmUoJ2RpcmVjdG9yL2NsaS9wYXRoJykuYWRkQmF0Y2goewor
ICAiQW4gaW5zdGFuY2Ugb2YgZGlyZWN0b3IuY2xpLlJvdXRlciB3aXRoIHJvdXRlcyI6IHsKKyAg
ICB0b3BpYzogbmV3IGRpcmVjdG9yLmNsaS5Sb3V0ZXIoeworICAgICAgJ2FwcHMnOiBmdW5jdGlv
biAoKSB7CisgICAgICAgIGNvbnNvbGUubG9nKCdhcHBzJyk7CisgICAgICB9LAorICAgICAgJyB1
c2Vycyc6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgY29uc29sZS5sb2coJ3VzZXJzJyk7CisgICAg
ICB9CisgICAgfSksCisgICAgInNob3VsZCBjcmVhdGUgdGhlIGNvcnJlY3QgbmVzdGVkIHJvdXRp
bmcgdGFibGUiOiBmdW5jdGlvbiAocm91dGVyKSB7CisgICAgICBhc3NlcnQuaXNPYmplY3Qocm91
dGVyLnJvdXRlcy5hcHBzKTsKKyAgICAgIGFzc2VydC5pc0Z1bmN0aW9uKHJvdXRlci5yb3V0ZXMu
YXBwcy5vbik7CisgICAgICBhc3NlcnQuaXNPYmplY3Qocm91dGVyLnJvdXRlcy51c2Vycyk7Cisg
ICAgICBhc3NlcnQuaXNGdW5jdGlvbihyb3V0ZXIucm91dGVzLnVzZXJzLm9uKTsKKyAgICB9Cisg
IH0KK30pLmV4cG9ydChtb2R1bGUpOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25v
ZGVfbW9kdWxlcy9kaXJlY3Rvci90ZXN0L3NlcnZlci9jbGkvcGF0aC10ZXN0LmpzIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci90ZXN0L3NlcnZlci9jbGkvcGF0aC10
ZXN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjA4YjRiNTUxMDE5ZjcwNTU4MGM0NjVmYWJlYmRiMGIzZDAyYTFl
MGMKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2Rp
cmVjdG9yL3Rlc3Qvc2VydmVyL2NsaS9wYXRoLXRlc3QuanMKQEAgLTAsMCArMSwzOSBAQAorLyoK
KyAqIGRpc3BhdGNoLXRlc3QuanM6IFRlc3RzIGZvciB0aGUgY29yZSBkaXNwYXRjaCBtZXRob2Qu
CisgKgorICogKEMpIDIwMTEsIENoYXJsaWUgUm9iYmlucywgUGFvbG8gRnJhZ29tZW5pLCAmIHRo
ZSBDb250cmlidXRvcnMuCisgKiBNSVQgTElDRU5TRQorICoKKyAqLworCit2YXIgYXNzZXJ0ID0g
cmVxdWlyZSgnYXNzZXJ0JyksCisgICAgdm93cyA9IHJlcXVpcmUoJ3Zvd3MnKSwKKyAgICBkaXJl
Y3RvciA9IHJlcXVpcmUoJy4uLy4uLy4uL2xpYi9kaXJlY3RvcicpOworCit2b3dzLmRlc2NyaWJl
KCdkaXJlY3Rvci9jbGkvcGF0aCcpLmFkZEJhdGNoKHsKKyAgIkFuIGluc3RhbmNlIG9mIGRpcmVj
dG9yLmNsaS5Sb3V0ZXIiOiB7CisgICAgdG9waWM6IG5ldyBkaXJlY3Rvci5jbGkuUm91dGVyKCks
CisgICAgInRoZSBwYXRoKCkgbWV0aG9kIjogeworICAgICAgInNob3VsZCBjcmVhdGUgdGhlIGNv
cnJlY3QgbmVzdGVkIHJvdXRpbmcgdGFibGUiOiBmdW5jdGlvbiAocm91dGVyKSB7CisgICAgICAg
IGZ1bmN0aW9uIG5vb3AgKCkge30KKworICAgICAgICByb3V0ZXIucGF0aCgvYXBwcy8sIGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICByb3V0ZXIucGF0aCgvZm9vLywgZnVuY3Rpb24gKCkgeworICAg
ICAgICAgICAgcm91dGVyLm9uKC9iYXIvLCBub29wKTsKKyAgICAgICAgICB9KTsKKworICAgICAg
ICAgIHJvdXRlci5vbigvbGlzdC8sIG5vb3ApOworICAgICAgICB9KTsKKworICAgICAgICByb3V0
ZXIub24oL3VzZXJzLywgbm9vcCk7CisKKyAgICAgICAgYXNzZXJ0LmlzT2JqZWN0KHJvdXRlci5y
b3V0ZXMuYXBwcyk7CisgICAgICAgIGFzc2VydC5pc0Z1bmN0aW9uKHJvdXRlci5yb3V0ZXMuYXBw
cy5saXN0Lm9uKTsKKyAgICAgICAgYXNzZXJ0LmlzT2JqZWN0KHJvdXRlci5yb3V0ZXMuYXBwcy5m
b28pOworICAgICAgICBhc3NlcnQuaXNGdW5jdGlvbihyb3V0ZXIucm91dGVzLmFwcHMuZm9vLmJh
ci5vbik7CisgICAgICAgIGFzc2VydC5pc0Z1bmN0aW9uKHJvdXRlci5yb3V0ZXMudXNlcnMub24p
OworICAgICAgfQorICAgIH0KKyAgfQorfSkuZXhwb3J0KG1vZHVsZSk7CisKZGlmZiAtLWdpdCBh
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvdGVzdC9zZXJ2ZXIvY29y
ZS9kaXNwYXRjaC10ZXN0LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJl
Y3Rvci90ZXN0L3NlcnZlci9jb3JlL2Rpc3BhdGNoLXRlc3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTNhMzNk
ZTQ1MWExZTY0ZjgxMmQyMTdmZGZlYzdiNWU0MWI4ODlhZgotLS0gL2Rldi9udWxsCisrKyBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvdGVzdC9zZXJ2ZXIvY29yZS9k
aXNwYXRjaC10ZXN0LmpzCkBAIC0wLDAgKzEsMTEzIEBACisvKgorICogZGlzcGF0Y2gtdGVzdC5q
czogVGVzdHMgZm9yIHRoZSBjb3JlIGRpc3BhdGNoIG1ldGhvZC4KKyAqCisgKiAoQykgMjAxMSwg
Q2hhcmxpZSBSb2JiaW5zLCBQYW9sbyBGcmFnb21lbmksICYgdGhlIENvbnRyaWJ1dG9ycy4KKyAq
IE1JVCBMSUNFTlNFCisgKgorICovCisKK3ZhciBhc3NlcnQgPSByZXF1aXJlKCdhc3NlcnQnKSwK
KyAgICB2b3dzID0gcmVxdWlyZSgndm93cycpLAorICAgIGRpcmVjdG9yID0gcmVxdWlyZSgnLi4v
Li4vLi4vbGliL2RpcmVjdG9yJyk7CisKK3Zvd3MuZGVzY3JpYmUoJ2RpcmVjdG9yL2NvcmUvZGlz
cGF0Y2gnKS5hZGRCYXRjaCh7CisgICJBbiBpbnN0YW5jZSBvZiBkaXJlY3Rvci5Sb3V0ZXIiOiB7
CisgICAgdG9waWM6IGZ1bmN0aW9uICgpIHsKKyAgICAgIHZhciB0aGF0ID0gdGhpczsKKyAgICAg
IHRoYXQubWF0Y2hlZCA9IHt9OworICAgICAgdGhhdC5tYXRjaGVkWycvJ10gPSBbXTsKKyAgICAg
IHRoYXQubWF0Y2hlZFsnZm9vJ10gPSBbXTsKKyAgICAgIHRoYXQubWF0Y2hlZFsnZionXSA9IFtd
CisKKyAgICAgIHZhciByb3V0ZXIgPSBuZXcgZGlyZWN0b3IuUm91dGVyKHsKKyAgICAgICAgJy8n
OiB7CisgICAgICAgICAgYmVmb3JlOiBmdW5jdGlvbiAoKSB7IHRoYXQubWF0Y2hlZFsnLyddLnB1
c2goJ2JlZm9yZSAvJykgfSwKKyAgICAgICAgICBvbjogZnVuY3Rpb24gKCkgeyB0aGF0Lm1hdGNo
ZWRbJy8nXS5wdXNoKCdvbiAvJykgfSwKKyAgICAgICAgICBhZnRlcjogZnVuY3Rpb24gKCkgeyB0
aGF0Lm1hdGNoZWRbJy8nXS5wdXNoKCdhZnRlciAvJykgfQorICAgICAgICB9LAorICAgICAgICAn
L2Zvbyc6IHsKKyAgICAgICAgICBiZWZvcmU6IGZ1bmN0aW9uICgpIHsgdGhhdC5tYXRjaGVkLmZv
by5wdXNoKCdiZWZvcmUgZm9vJykgfSwKKyAgICAgICAgICBvbjogZnVuY3Rpb24gKCkgeyB0aGF0
Lm1hdGNoZWQuZm9vLnB1c2goJ29uIGZvbycpIH0sCisgICAgICAgICAgYWZ0ZXI6IGZ1bmN0aW9u
ICgpIHsgdGhhdC5tYXRjaGVkLmZvby5wdXNoKCdhZnRlciBmb28nKSB9LAorICAgICAgICAgICcv
YmFyJzogeworICAgICAgICAgICAgYmVmb3JlOiBmdW5jdGlvbiAoKSB7IHRoYXQubWF0Y2hlZC5m
b28ucHVzaCgnYmVmb3JlIGZvbyBiYXInKSB9LAorICAgICAgICAgICAgb246IGZ1bmN0aW9uICgp
IHsgdGhhdC5tYXRjaGVkLmZvby5wdXNoKCdmb28gYmFyJykgfSwKKyAgICAgICAgICAgIGFmdGVy
OiBmdW5jdGlvbiAoKSB7IHRoYXQubWF0Y2hlZC5mb28ucHVzaCgnYWZ0ZXIgZm9vIGJhcicpIH0s
CisgICAgICAgICAgICAnL2J1enonOiBmdW5jdGlvbiAoKSB7IHRoYXQubWF0Y2hlZC5mb28ucHVz
aCgnZm9vIGJhciBidXp6JykgfQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgJy9m
Kic6IHsKKyAgICAgICAgICAnL2JhcmJpZSc6IGZ1bmN0aW9uICgpIHsgdGhhdC5tYXRjaGVkWydm
KiddLnB1c2goJ2YqIGJhcmJpZScpIH0KKyAgICAgICAgfQorICAgICAgfSk7CisKKyAgICAgIHJv
dXRlci5jb25maWd1cmUoeworICAgICAgICByZWN1cnNlOiAnYmFja3dhcmQnCisgICAgICB9KTsK
KworICAgICAgcmV0dXJuIHJvdXRlcjsKKyAgICB9LAorICAgICJzaG91bGQgaGF2ZSB0aGUgY29y
cmVjdCByb3V0aW5nIHRhYmxlIjogZnVuY3Rpb24gKHJvdXRlcikgeworICAgICAgYXNzZXJ0Lmlz
T2JqZWN0KHJvdXRlci5yb3V0ZXMuZm9vKTsKKyAgICAgIGFzc2VydC5pc09iamVjdChyb3V0ZXIu
cm91dGVzLmZvby5iYXIpOworICAgICAgYXNzZXJ0LmlzT2JqZWN0KHJvdXRlci5yb3V0ZXMuZm9v
LmJhci5idXp6KTsKKyAgICAgIGFzc2VydC5pc0Z1bmN0aW9uKHJvdXRlci5yb3V0ZXMuZm9vLmJh
ci5idXp6Lm9uKTsKKyAgICB9LAorICAgICJ0aGUgZGlzcGF0Y2goKSBtZXRob2QiOiB7CisgICAg
ICAiLyI6IGZ1bmN0aW9uIChyb3V0ZXIpIHsKKyAgICAgICAgYXNzZXJ0LmlzVHJ1ZShyb3V0ZXIu
ZGlzcGF0Y2goJ29uJywgJy8nKSk7CisgICAgICAgIGFzc2VydC5pc1RydWUocm91dGVyLmRpc3Bh
dGNoKCdvbicsICcvJykpOworCisgICAgICAgIGFzc2VydC5lcXVhbCh0aGlzLm1hdGNoZWRbJy8n
XVswXSwgJ2JlZm9yZSAvJyk7CisgICAgICAgIGFzc2VydC5lcXVhbCh0aGlzLm1hdGNoZWRbJy8n
XVsxXSwgJ29uIC8nKTsKKyAgICAgICAgYXNzZXJ0LmVxdWFsKHRoaXMubWF0Y2hlZFsnLyddWzJd
LCAnYWZ0ZXIgLycpOworICAgICAgfSwKKyAgICAgICIvZm9vL2Jhci9idXp6IjogZnVuY3Rpb24g
KHJvdXRlcikgeworICAgICAgICBhc3NlcnQuaXNUcnVlKHJvdXRlci5kaXNwYXRjaCgnb24nLCAn
L2Zvby9iYXIvYnV6eicpKTsKKworICAgICAgICBhc3NlcnQuZXF1YWwodGhpcy5tYXRjaGVkLmZv
b1swXSwgJ2ZvbyBiYXIgYnV6eicpOworICAgICAgICBhc3NlcnQuZXF1YWwodGhpcy5tYXRjaGVk
LmZvb1sxXSwgJ2JlZm9yZSBmb28gYmFyJyk7CisgICAgICAgIGFzc2VydC5lcXVhbCh0aGlzLm1h
dGNoZWQuZm9vWzJdLCAnZm9vIGJhcicpOworICAgICAgICBhc3NlcnQuZXF1YWwodGhpcy5tYXRj
aGVkLmZvb1szXSwgJ2JlZm9yZSBmb28nKTsKKyAgICAgICAgYXNzZXJ0LmVxdWFsKHRoaXMubWF0
Y2hlZC5mb29bNF0sICdvbiBmb28nKTsKKyAgICAgIH0sCisgICAgICAiL2Zvby9iYXJiaWUiOiBm
dW5jdGlvbiAocm91dGVyKSB7CisgICAgICAgIGFzc2VydC5pc1RydWUocm91dGVyLmRpc3BhdGNo
KCdvbicsICcvZm9vL2JhcmJpZScpKTsKKyAgICAgICAgYXNzZXJ0LmVxdWFsKHRoaXMubWF0Y2hl
ZFsnZionXVswXSwgJ2YqIGJhcmJpZScpOworICAgICAgfSwKKyAgICAgICIvZm9vL2JhcmJpZS8i
OiBmdW5jdGlvbiAocm91dGVyKSB7CisgICAgICAgIGFzc2VydC5pc0ZhbHNlKHJvdXRlci5kaXNw
YXRjaCgnb24nLCAnL2Zvby9iYXJiaWUvJykpOworICAgICAgfSwKKyAgICAgICIvZm9vL0JBRCI6
IGZ1bmN0aW9uIChyb3V0ZXIpIHsKKyAgICAgICAgYXNzZXJ0LmlzRmFsc2Uocm91dGVyLmRpc3Bh
dGNoKCdvbicsICcvZm9vL0JBRCcpKTsKKyAgICAgIH0sCisgICAgICAiL2Jhci9iYXIiOiBmdW5j
dGlvbiAocm91dGVyKSB7CisgICAgICAgIGFzc2VydC5pc0ZhbHNlKHJvdXRlci5kaXNwYXRjaCgn
b24nLCAnL2Jhci9iYXInKSk7CisgICAgICB9LAorICAgICAgIndpdGggdGhlIHN0cmljdCBvcHRp
b24gZGlzYWJsZWQiOiB7CisgICAgICAgIHRvcGljOiBmdW5jdGlvbiAocm91dGVyKSB7CisgICAg
ICAgICAgcmV0dXJuIHJvdXRlci5jb25maWd1cmUoeworICAgICAgICAgICAgcmVjdXJzZTogJ2Jh
Y2t3YXJkJywKKyAgICAgICAgICAgIHN0cmljdDogZmFsc2UKKyAgICAgICAgICB9KTsKKyAgICAg
ICAgfSwKKyAgICAgICAgInNob3VsZCBoYXZlIHRoZSBwcm9wZXIgY29uZmlndXJhdGlvbiBzZXQi
OiBmdW5jdGlvbiAocm91dGVyKSB7CisgICAgICAgICAgYXNzZXJ0LmlzRmFsc2Uocm91dGVyLnN0
cmljdCk7CisgICAgICAgIH0sCisgICAgICAgICIvZm9vL2JhcmJpZS8iOiBmdW5jdGlvbiAocm91
dGVyKSB7CisgICAgICAgICAgYXNzZXJ0LmlzVHJ1ZShyb3V0ZXIuZGlzcGF0Y2goJ29uJywgJy9m
b28vYmFyYmllLycpKTsKKyAgICAgICAgICBhc3NlcnQuZXF1YWwodGhpcy5tYXRjaGVkWydmKidd
WzBdLCAnZiogYmFyYmllJyk7CisgICAgICAgIH0sCisgICAgICAgICIvZm9vL2Jhci9idXp6Ijog
ZnVuY3Rpb24gKHJvdXRlcikgeworICAgICAgICAgIGFzc2VydC5pc1RydWUocm91dGVyLmRpc3Bh
dGNoKCdvbicsICcvZm9vL2Jhci9idXp6JykpOworCisgICAgICAgICAgYXNzZXJ0LmVxdWFsKHRo
aXMubWF0Y2hlZC5mb29bMF0sICdmb28gYmFyIGJ1enonKTsKKyAgICAgICAgICBhc3NlcnQuZXF1
YWwodGhpcy5tYXRjaGVkLmZvb1sxXSwgJ2JlZm9yZSBmb28gYmFyJyk7CisgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKHRoaXMubWF0Y2hlZC5mb29bMl0sICdmb28gYmFyJyk7CisgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKHRoaXMubWF0Y2hlZC5mb29bM10sICdiZWZvcmUgZm9vJyk7CisgICAgICAgICAg
YXNzZXJ0LmVxdWFsKHRoaXMubWF0Y2hlZC5mb29bNF0sICdvbiBmb28nKTsKKyAgICAgICAgfSwK
KyAgICAgIH0KKyAgICB9CisgIH0KK30pLmV4cG9ydChtb2R1bGUpOwpkaWZmIC0tZ2l0IGEvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci90ZXN0L3NlcnZlci9jb3JlL2lu
c2VydC10ZXN0LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci90
ZXN0L3NlcnZlci9jb3JlL2luc2VydC10ZXN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4MjhkZDliYWM5Yzk2
OTMwODExNDhjOGY2ZWEwMGIyZTcyNTJmNjgKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL3Rlc3Qvc2VydmVyL2NvcmUvaW5zZXJ0LXRl
c3QuanMKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIGluc2VydC10ZXN0LmpzOiBUZXN0cyBmb3Ig
aW5zZXJ0aW5nIHJvdXRlcyBpbnRvIGEgbm9ybWFsaXplZCByb3V0aW5nIHRhYmxlLgorICoKKyAq
IChDKSAyMDExLCBDaGFybGllIFJvYmJpbnMsIFBhb2xvIEZyYWdvbWVuaSwgJiB0aGUgQ29udHJp
YnV0b3JzLgorICogTUlUIExJQ0VOU0UKKyAqCisgKi8KKwordmFyIGFzc2VydCA9IHJlcXVpcmUo
J2Fzc2VydCcpLAorICAgIHZvd3MgPSByZXF1aXJlKCd2b3dzJyksCisgICAgZGlyZWN0b3IgPSBy
ZXF1aXJlKCcuLi8uLi8uLi9saWIvZGlyZWN0b3InKTsKKwordm93cy5kZXNjcmliZSgnZGlyZWN0
b3IvY29yZS9pbnNlcnQnKS5hZGRCYXRjaCh7CisgICJBbiBpbnN0YW5jZSBvZiBkaXJlY3Rvci5S
b3V0ZXIiOiB7CisgICAgdG9waWM6IG5ldyBkaXJlY3Rvci5Sb3V0ZXIoKSwKKyAgICAidGhlIGlu
c2VydCgpIG1ldGhvZCI6IHsKKyAgICAgICInb24nLCBbJ2ZvbycsICdiYXInXSI6IGZ1bmN0aW9u
IChyb3V0ZXIpIHsKKyAgICAgICAgZnVuY3Rpb24gcm91dGUgKCkgeyB9CisKKyAgICAgICAgcm91
dGVyLmluc2VydCgnb24nLCBbJ2ZvbycsICdiYXInXSwgcm91dGUpOworICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwocm91dGVyLnJvdXRlcy5mb28uYmFyLm9uLCByb3V0ZSk7CisgICAgICB9LAor
ICAgICAgIidvbicsIFsnZm9vJywgJ2JhciddIGFnYWluIjogZnVuY3Rpb24gKHJvdXRlcikgewor
ICAgICAgICBmdW5jdGlvbiByb3V0ZSAoKSB7IH0KKworICAgICAgICByb3V0ZXIuaW5zZXJ0KCdv
bicsIFsnZm9vJywgJ2JhciddLCByb3V0ZSk7CisgICAgICAgIGFzc2VydC5pc0FycmF5KHJvdXRl
ci5yb3V0ZXMuZm9vLmJhci5vbik7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyb3V0ZXIu
cm91dGVzLmZvby5iYXIub24ubGVuZ3RoLCAyKTsKKyAgICAgIH0sCisgICAgICAiJ29uJywgWydm
b28nLCAnYmFyJ10gYSB0aGlyZCB0aW1lIjogZnVuY3Rpb24gKHJvdXRlcikgeworICAgICAgICBm
dW5jdGlvbiByb3V0ZSAoKSB7IH0KKworICAgICAgICByb3V0ZXIuaW5zZXJ0KCdvbicsIFsnZm9v
JywgJ2JhciddLCByb3V0ZSk7CisgICAgICAgIGFzc2VydC5pc0FycmF5KHJvdXRlci5yb3V0ZXMu
Zm9vLmJhci5vbik7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyb3V0ZXIucm91dGVzLmZv
by5iYXIub24ubGVuZ3RoLCAzKTsKKyAgICAgIH0sCisgICAgICAiJ2dldCcsIFsnZml6eicsICdi
dXp6J10iOiBmdW5jdGlvbiAocm91dGVyKSB7CisgICAgICAgIGZ1bmN0aW9uIHJvdXRlICgpIHsg
fQorCisgICAgICAgIHJvdXRlci5pbnNlcnQoJ2dldCcsIFsnZml6eicsICdidXp6J10sIHJvdXRl
KTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJvdXRlci5yb3V0ZXMuZml6ei5idXp6Lmdl
dCwgcm91dGUpOworICAgICAgfQorICAgIH0KKyAgfQorfSkuZXhwb3J0KG1vZHVsZSk7CmRpZmYg
LS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL3Rlc3Qvc2Vy
dmVyL2NvcmUvbW91bnQtdGVzdC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMv
ZGlyZWN0b3IvdGVzdC9zZXJ2ZXIvY29yZS9tb3VudC10ZXN0LmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ3ZWFj
NGFjMGY3ODdjMjljZjMxZGU4ZWFhYWQ4ZDczYmFlMTFhMmEKLS0tIC9kZXYvbnVsbAorKysgYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL3Rlc3Qvc2VydmVyL2NvcmUv
bW91bnQtdGVzdC5qcwpAQCAtMCwwICsxLDExNyBAQAorLyoKKyAqIG1vdW50LXRlc3QuanM6IFRl
c3RzIGZvciBtb3VudGluZyBhbmQgbm9ybWFsaXppbmcgcm91dGVzIGludG8gYSBSb3V0ZXIgaW5z
dGFuY2UuCisgKgorICogKEMpIDIwMTEsIENoYXJsaWUgUm9iYmlucywgUGFvbG8gRnJhZ29tZW5p
LCAmIHRoZSBDb250cmlidXRvcnMuCisgKiBNSVQgTElDRU5TRQorICoKKyAqLworCit2YXIgYXNz
ZXJ0ID0gcmVxdWlyZSgnYXNzZXJ0JyksCisgICAgdm93cyA9IHJlcXVpcmUoJ3Zvd3MnKSwKKyAg
ICBkaXJlY3RvciA9IHJlcXVpcmUoJy4uLy4uLy4uL2xpYi9kaXJlY3RvcicpOworCitmdW5jdGlv
biBhc3NlcnRSb3V0ZSAoZm4sIHBhdGgsIHJvdXRlKSB7CisgIGlmIChwYXRoLmxlbmd0aCA9PT0g
MSkgeworICAgIHJldHVybiBhc3NlcnQuc3RyaWN0RXF1YWwocm91dGVbcGF0aC5zaGlmdCgpXSwg
Zm4pOworICB9CisKKyAgcm91dGUgPSByb3V0ZVtwYXRoLnNoaWZ0KCldOworICBhc3NlcnQuaXNP
YmplY3Qocm91dGUpOworICBhc3NlcnRSb3V0ZShmbiwgcGF0aCwgcm91dGUpOworfQorCit2b3dz
LmRlc2NyaWJlKCdkaXJlY3Rvci9jb3JlL21vdW50JykuYWRkQmF0Y2goeworICAiQW4gaW5zdGFu
Y2Ugb2YgZGlyZWN0b3IuUm91dGVyIjogeworICAgICJ3aXRoIG5vIHByZWNvbmZpZ3VyZWQgcGFy
YW1zIjogeworICAgICAgdG9waWM6IG5ldyBkaXJlY3Rvci5Sb3V0ZXIoKSwKKyAgICAgICJ0aGUg
bW91bnQoKSBtZXRob2QiOiB7CisgICAgICAgICJzaG91bGQgc2FuaXRpemUgdGhlIHJvdXRlcyBj
b3JyZWN0bHkiOiBmdW5jdGlvbiAocm91dGVyKSB7CisgICAgICAgICAgZnVuY3Rpb24gZm9vYmFy
ICgpIHsgfQorICAgICAgICAgIGZ1bmN0aW9uIGZvb3N0YXIgKCkgeyB9CisgICAgICAgICAgZnVu
Y3Rpb24gZm9vYmF6emJ1enogKCkgeyB9CisgICAgICAgICAgZnVuY3Rpb24gZm9vZG9nICgpIHsg
fQorICAgICAgICAgIGZ1bmN0aW9uIHJvb3QgKCkge30KKyAgICAgICAgICB2YXIgZm5BcnJheSA9
IFtmb29iYXIsIGZvb3N0YXJdOworCisgICAgICAgICAgcm91dGVyLm1vdW50KHsKKyAgICAgICAg
ICAgICcvJzogeworICAgICAgICAgICAgICBiZWZvcmU6IHJvb3QsCisgICAgICAgICAgICAgIG9u
OiByb290LAorICAgICAgICAgICAgICBhZnRlcjogcm9vdCwKKyAgICAgICAgICAgICAgJy9uZXN0
aW5nJzogeworICAgICAgICAgICAgICAgIG9uOiBmb29iYXIsCisgICAgICAgICAgICAgICAgJy9k
ZWVwJzogZm9vc3RhcgorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgJy9mb28nOiB7CisgICAgICAgICAgICAgICcvYmFyJzogZm9vYmFyLAorICAgICAgICAgICAg
ICAnLyonOiBmb29zdGFyLAorICAgICAgICAgICAgICAnL2ppdHN1L3RoZW4nOiB7CisgICAgICAg
ICAgICAgICAgYmVmb3JlOiBmb29iYXIKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgICcvZm9vL2JhenonOiB7CisgICAgICAgICAgICAgICcvYnV6eic6IGZvb2Jh
enpidXp6CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgJy9mb28vaml0c3UnOiB7CisgICAg
ICAgICAgICAgICcvdGhlbic6IGZuQXJyYXkKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAn
L2Zvby9qaXRzdS90aGVuL25vdyc6IGZvb3N0YXIsCisgICAgICAgICAgICAnL2Zvby86ZG9nJzog
Zm9vZG9nCisgICAgICAgICAgfSk7CisKKyAgICAgICAgICBhc3NlcnRSb3V0ZShyb290LCAgICAg
ICAgWydvbiddLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVyLnJv
dXRlcyk7CisgICAgICAgICAgYXNzZXJ0Um91dGUocm9vdCwgICAgICAgIFsnYWZ0ZXInXSwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlci5yb3V0ZXMpOworICAgICAgICAg
IGFzc2VydFJvdXRlKHJvb3QsICAgICAgICBbJ2JlZm9yZSddLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByb3V0ZXIucm91dGVzKTsKKyAgICAgICAgICBhc3NlcnRSb3V0ZShmb29i
YXIsICAgICAgWyduZXN0aW5nJywgJ29uJ10sICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91
dGVyLnJvdXRlcyk7CisgICAgICAgICAgYXNzZXJ0Um91dGUoZm9vc3RhciwgICAgIFsnbmVzdGlu
ZycsICdkZWVwJywgJ29uJ10sICAgICAgICAgICAgICAgICAgIHJvdXRlci5yb3V0ZXMpOworICAg
ICAgICAgIGFzc2VydFJvdXRlKGZvb2JhciwgICAgICBbICdmb28nLCAnYmFyJywgJ29uJ10sICAg
ICAgICAgICAgICAgICAgICAgICByb3V0ZXIucm91dGVzKTsKKyAgICAgICAgICBhc3NlcnRSb3V0
ZShmb29zdGFyLCAgICAgWydmb28nLCAnKFtfLigpIVxcICVAJmEtekEtWjAtOS1dKyknLCAnb24n
XSwgcm91dGVyLnJvdXRlcyk7CisgICAgICAgICAgYXNzZXJ0Um91dGUoZm5BcnJheSwgICAgIFsn
Zm9vJywgJ2ppdHN1JywgJ3RoZW4nLCAnb24nXSwgICAgICAgICAgICAgIHJvdXRlci5yb3V0ZXMp
OworICAgICAgICAgIGFzc2VydFJvdXRlKGZvb2JhciwgICAgICBbJ2ZvbycsICdqaXRzdScsICd0
aGVuJywgJ2JlZm9yZSddLCAgICAgICAgICByb3V0ZXIucm91dGVzKTsKKyAgICAgICAgICBhc3Nl
cnRSb3V0ZShmb29iYXp6YnV6eiwgWydmb28nLCAnYmF6eicsICdidXp6JywgJ29uJ10sICAgICAg
ICAgICAgICAgcm91dGVyLnJvdXRlcyk7CisgICAgICAgICAgYXNzZXJ0Um91dGUoZm9vc3Rhciwg
ICAgIFsnZm9vJywgJ2ppdHN1JywgJ3RoZW4nLCAnbm93JywgJ29uJ10sICAgICAgIHJvdXRlci5y
b3V0ZXMpOworICAgICAgICAgIGFzc2VydFJvdXRlKGZvb2RvZywgICAgICBbJ2ZvbycsICcoWy5f
YS16QS1aMC05LSUoKV0rKScsICdvbiddLCAgICAgcm91dGVyLnJvdXRlcyk7CisgICAgICAgIH0s
CisKKyAgICAgICAgInNob3VsZCBhY2NlcHQgc3RyaW5nIHBhdGgiOiBmdW5jdGlvbihyb3V0ZXIp
IHsKKyAgICAgICAgICBmdW5jdGlvbiBkb2dzICgpIHsgfQorCisgICAgICAgICAgcm91dGVyLm1v
dW50KHsKKyAgICAgICAgICAgICcvZG9ncyc6IHsKKyAgICAgICAgICAgICAgb246IGRvZ3MKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICB9LAorICAgICAgICAgICcvYXBpJyk7CisKKyAgICAgICAg
ICBhc3NlcnRSb3V0ZShkb2dzLCBbJ2FwaScsICdkb2dzJywgJ29uJ10sIHJvdXRlci5yb3V0ZXMp
OworICAgICAgICB9CisgICAgICB9CisgICAgfSwKKyAgICAid2l0aCBwcmVjb25maWd1cmVkIHBh
cmFtcyI6IHsKKyAgICAgIHRvcGljOiBmdW5jdGlvbiAoKSB7CisgICAgICAgIHZhciByb3V0ZXIg
PSBuZXcgZGlyZWN0b3IuUm91dGVyKCk7CisgICAgICAgIHJvdXRlci5wYXJhbSgnY2l0eScsICco
W1xcd1xcLV0rKScpOworICAgICAgICByb3V0ZXIucGFyYW0oJzpjb3VudHJ5JywgLyhbQS1aXVtB
LVphLXpdKykvKTsKKyAgICAgICAgcm91dGVyLnBhcmFtKCc6emlwJywgLyhbXGRdezV9KS8pOwor
ICAgICAgICByZXR1cm4gcm91dGVyOworICAgICAgfSwKKyAgICAgICJzaG91bGQgc2FuaXRpemUg
dGhlIHJvdXRlcyBjb3JyZWN0bHkiOiBmdW5jdGlvbiAocm91dGVyKSB7CisgICAgICAgIGZ1bmN0
aW9uIHVzYUNpdHlaaXAgKCkgeyB9CisgICAgICAgIGZ1bmN0aW9uIGNvdW50cnlDaXR5WmlwICgp
IHsgfQorCisgICAgICAgIHJvdXRlci5tb3VudCh7CisgICAgICAgICAgJy91c2EvOmNpdHkvOnpp
cCc6IHVzYUNpdHlaaXAsCisgICAgICAgICAgJy93b3JsZCc6IHsKKyAgICAgICAgICAgICcvOmNv
dW50cnknOiB7CisgICAgICAgICAgICAgICcvOmNpdHkvOnppcCc6IGNvdW50cnlDaXR5WmlwCisg
ICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9KTsKKworICAgICAgICBhc3NlcnRS
b3V0ZSh1c2FDaXR5WmlwLCBbJ3VzYScsICcoW1xcd1xcLV0rKScsICcoW1xcZF17NX0pJywgJ29u
J10sIHJvdXRlci5yb3V0ZXMpOworICAgICAgICBhc3NlcnRSb3V0ZShjb3VudHJ5Q2l0eVppcCwg
Wyd3b3JsZCcsICcoW0EtWl1bQS1aYS16XSspJywgJyhbXFx3XFwtXSspJywgJyhbXFxkXXs1fSkn
LCAnb24nXSwgcm91dGVyLnJvdXRlcyk7CisgICAgICB9CisgICAgfQorICB9Cit9KS5leHBvcnQo
bW9kdWxlKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGly
ZWN0b3IvdGVzdC9zZXJ2ZXIvY29yZS9vbi10ZXN0LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25v
ZGVfbW9kdWxlcy9kaXJlY3Rvci90ZXN0L3NlcnZlci9jb3JlL29uLXRlc3QuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjJlMTgyZGVjZDY3OTc2NDZjYjllZjMwMjVmNmM0N2ZjOTczY2FmNgotLS0gL2Rldi9udWxs
CisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvdGVzdC9zZXJ2
ZXIvY29yZS9vbi10ZXN0LmpzCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBvbi10ZXN0LmpzOiBU
ZXN0cyBmb3IgdGhlIG9uL3JvdXRlIG1ldGhvZC4KKyAqCisgKiAoQykgMjAxMSwgQ2hhcmxpZSBS
b2JiaW5zLCBQYW9sbyBGcmFnb21lbmksICYgdGhlIENvbnRyaWJ1dG9ycy4KKyAqIE1JVCBMSUNF
TlNFCisgKgorICovCisKK3ZhciBhc3NlcnQgPSByZXF1aXJlKCdhc3NlcnQnKSwKKyAgICB2b3dz
ID0gcmVxdWlyZSgndm93cycpLAorICAgIGRpcmVjdG9yID0gcmVxdWlyZSgnLi4vLi4vLi4vbGli
L2RpcmVjdG9yJyk7CisKK3Zvd3MuZGVzY3JpYmUoJ2RpcmVjdG9yL2NvcmUvaW5zZXJ0JykuYWRk
QmF0Y2goeworICAiQW4gaW5zdGFuY2Ugb2YgZGlyZWN0b3IuUm91dGVyIjogeworICAgIHRvcGlj
OiBuZXcgZGlyZWN0b3IuUm91dGVyKCksCisgICAgInRoZSBvbigpIG1ldGhvZCI6IHsKKyAgICAg
ICJbJ2ZvbycsICdiYXInXSI6IGZ1bmN0aW9uIChyb3V0ZXIpIHsKKyAgICAgICAgZnVuY3Rpb24g
bm9vcCAoKSB7IH0KKworICAgICAgICByb3V0ZXIub24oWydmb28nLCAnYmFyJ10sIG5vb3ApOwor
ICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocm91dGVyLnJvdXRlcy5mb28ub24sIG5vb3ApOwor
ICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocm91dGVyLnJvdXRlcy5iYXIub24sIG5vb3ApOwor
ICAgICAgfSwKKyAgICAgICInYmF6JyI6IGZ1bmN0aW9uIChyb3V0ZXIpIHsKKyAgICAgICAgZnVu
Y3Rpb24gbm9vcCAoKSB7IH0KKworICAgICAgICByb3V0ZXIub24oJ2JheicsIG5vb3ApOworICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocm91dGVyLnJvdXRlcy5iYXoub24sIG5vb3ApOworICAg
ICAgfSwKKyAgICAgICInYWZ0ZXInLCAnYmF6JyI6IGZ1bmN0aW9uIChyb3V0ZXIpIHsKKyAgICAg
ICAgZnVuY3Rpb24gbm9vcCAoKSB7IH0KKworICAgICAgICByb3V0ZXIub24oJ2FmdGVyJywgJ2Jv
bycsIG5vb3ApOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocm91dGVyLnJvdXRlcy5ib28u
YWZ0ZXIsIG5vb3ApOworICAgICAgfQorICAgIH0KKyAgfQorfSkuZXhwb3J0KG1vZHVsZSk7CmRp
ZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL3Rlc3Qv
c2VydmVyL2NvcmUvcGF0aC10ZXN0LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxl
cy9kaXJlY3Rvci90ZXN0L3NlcnZlci9jb3JlL3BhdGgtdGVzdC5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYzMz
MTNlMjc3MzJjZTA2ZDJlNTk5MDdlNWRlYWE3MDFjYWQ2OTVmCi0tLSAvZGV2L251bGwKKysrIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci90ZXN0L3NlcnZlci9jb3Jl
L3BhdGgtdGVzdC5qcwpAQCAtMCwwICsxLDQ5IEBACisvKgorICogcGF0aC10ZXN0LmpzOiBUZXN0
cyBmb3IgdGhlIGNvcmUgYC5wYXRoKClgIG1ldGhvZC4KKyAqCisgKiAoQykgMjAxMSwgQ2hhcmxp
ZSBSb2JiaW5zLCBQYW9sbyBGcmFnb21lbmksICYgdGhlIENvbnRyaWJ1dG9ycy4KKyAqIE1JVCBM
SUNFTlNFCisgKgorICovCisKK3ZhciBhc3NlcnQgPSByZXF1aXJlKCdhc3NlcnQnKSwKKyAgICB2
b3dzID0gcmVxdWlyZSgndm93cycpLAorICAgIGRpcmVjdG9yID0gcmVxdWlyZSgnLi4vLi4vLi4v
bGliL2RpcmVjdG9yJyk7CisKK3Zvd3MuZGVzY3JpYmUoJ2RpcmVjdG9yL2NvcmUvcGF0aCcpLmFk
ZEJhdGNoKHsKKyAgIkFuIGluc3RhbmNlIG9mIGRpcmVjdG9yLlJvdXRlciI6IHsKKyAgICB0b3Bp
YzogZnVuY3Rpb24gKCkgeworICAgICAgdmFyIHRoYXQgPSB0aGlzOworICAgICAgdGhhdC5tYXRj
aGVkID0ge307CisgICAgICB0aGF0Lm1hdGNoZWRbJ2ZvbyddID0gW107CisgICAgICB0aGF0Lm1h
dGNoZWRbJ25ld3lvcmsnXSA9IFtdOworCisgICAgICB2YXIgcm91dGVyID0gbmV3IGRpcmVjdG9y
LlJvdXRlcih7CisgICAgICAgICcvZm9vJzogZnVuY3Rpb24gKCkgeyB0aGF0Lm1hdGNoZWRbJ2Zv
byddLnB1c2goJ2ZvbycpOyB9CisgICAgICB9KTsKKyAgICAgIHJldHVybiByb3V0ZXI7CisgICAg
fSwKKyAgICAidGhlIHBhdGgoKSBtZXRob2QiOiB7CisgICAgICAic2hvdWxkIGNyZWF0ZSB0aGUg
Y29ycmVjdCBuZXN0ZWQgcm91dGluZyB0YWJsZSI6IGZ1bmN0aW9uIChyb3V0ZXIpIHsKKyAgICAg
ICAgdmFyIHRoYXQgPSB0aGlzOworICAgICAgICByb3V0ZXIucGF0aCgnL3JlZ2lvbnMnLCBmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgdGhpcy5vbignLzpzdGF0ZScsIGZ1bmN0aW9uKGNvdW50cnkp
IHsKKyAgICAgICAgICAgIHRoYXQubWF0Y2hlZFsnbmV3eW9yayddLnB1c2goJ25ldyB5b3JrJyk7
CisgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGFzc2VydC5pc0Z1bmN0aW9u
KHJvdXRlci5yb3V0ZXMuZm9vLm9uKTsKKyAgICAgICAgYXNzZXJ0LmlzT2JqZWN0KHJvdXRlci5y
b3V0ZXMucmVnaW9ucyk7CisgICAgICAgIGFzc2VydC5pc0Z1bmN0aW9uKHJvdXRlci5yb3V0ZXMu
cmVnaW9uc1snKFsuX2EtekEtWjAtOS0lKCldKyknXS5vbik7CisgICAgICB9LAorICAgICAgInNo
b3VsZCBkaXNwYXRjaCB0aGUgZnVuY3Rpb24gY29ycmVjdGx5IjogZnVuY3Rpb24gKHJvdXRlcikg
eworICAgICAgICByb3V0ZXIuZGlzcGF0Y2goJ29uJywgJy9yZWdpb25zL25ld3lvcmsnKQorICAg
ICAgICByb3V0ZXIuZGlzcGF0Y2goJ29uJywgJy9mb28nKTsKKyAgICAgICAgYXNzZXJ0LmVxdWFs
KHRoaXMubWF0Y2hlZFsnZm9vJ10ubGVuZ3RoLCAxKTsKKyAgICAgICAgYXNzZXJ0LmVxdWFsKHRo
aXMubWF0Y2hlZFsnbmV3eW9yayddLmxlbmd0aCwgMSk7CisgICAgICAgIGFzc2VydC5lcXVhbCh0
aGlzLm1hdGNoZWRbJ2ZvbyddWzBdLCAnZm9vJyk7CisgICAgICAgIGFzc2VydC5lcXVhbCh0aGlz
Lm1hdGNoZWRbJ25ld3lvcmsnXVswXSwgJ25ldyB5b3JrJyk7CisgICAgICB9CisgICAgfQorICB9
Cit9KS5leHBvcnQobW9kdWxlKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2Rl
X21vZHVsZXMvZGlyZWN0b3IvdGVzdC9zZXJ2ZXIvY29yZS9yZWdpZnlzdHJpbmctdGVzdC5qcyBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvdGVzdC9zZXJ2ZXIvY29y
ZS9yZWdpZnlzdHJpbmctdGVzdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMDc1Nzg4NWVhZDEyMDA1MDkxNGI2
MDQ1MWMyMTFiZmYxNWVjN2U0Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5
L25vZGVfbW9kdWxlcy9kaXJlY3Rvci90ZXN0L3NlcnZlci9jb3JlL3JlZ2lmeXN0cmluZy10ZXN0
LmpzCkBAIC0wLDAgKzEsMTE3IEBACisKK3ZhciBhc3NlcnQgPSByZXF1aXJlKCdhc3NlcnQnKSwK
KyAgICB2b3dzID0gcmVxdWlyZSgndm93cycpLAorICAgIGRpcmVjdG9yID0gcmVxdWlyZSgnLi4v
Li4vLi4vbGliL2RpcmVjdG9yJyk7CisKK3ZhciBjYWxsYmFjayA9IGZ1bmN0aW9uKCkgeworICBy
ZXR1cm4gdHJ1ZTsKK307CisKK3ZhciB0ZXN0Um91dGUgPSBmdW5jdGlvbihyb3V0ZSwgY2FsbGJh
Y2spIHsKKyAgdmFyIHJvdXRlciA9IG5ldyBkaXJlY3Rvci5Sb3V0ZXIoKTsKKyAgcm91dGVyLm9u
KHJvdXRlLCBjYWxsYmFjayk7CisKKyAgcmV0dXJuIGZ1bmN0aW9uKHZhbHVlKSB7CisgICAgcmV0
dXJuIHJvdXRlci5kaXNwYXRjaCgnb24nLCB2YWx1ZSk7CisgIH07Cit9OworCit2b3dzLmRlc2Ny
aWJlKCdkaXJlY3Rvci9jb3JlL3JlZ2lmeVN0cmluZycpLmFkZEJhdGNoKHsKKworICAnV2hlbiB1
c2luZyAiL2hvbWUoLiopIic6IHsKKyAgICB0b3BpYzogZnVuY3Rpb24oKSB7CisgICAgICByZXR1
cm4gdGVzdFJvdXRlKCcvaG9tZSguKiknLCBjYWxsYmFjayk7CisgICAgfSwKKworICAgICdTaG91
bGQgbWF0Y2ggIi9ob21lcGFnZSInOiBmdW5jdGlvbihyZXN1bHQpIHsKKyAgICAgIGFzc2VydC5p
c1RydWUocmVzdWx0KCcvaG9tZXBhZ2UnKSk7CisgICAgfSwKKworICAgICdTaG91bGQgbWF0Y2gg
Ii9ob21lL3BhZ2UiJzogZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgICBhc3NlcnQuaXNUcnVlKHJl
c3VsdCgnL2hvbWUvcGFnZScpKTsKKyAgICB9LAorCisgICAgJ1Nob3VsZCBub3QgbWF0Y2ggIi9m
b28tYmFyIic6IGZ1bmN0aW9uKHJlc3VsdCkgeworICAgICAgYXNzZXJ0LmlzRmFsc2UocmVzdWx0
KCcvZm9vLWJhcicpKTsKKyAgICB9CisgIH0sCisKKyAgJ1doZW4gdXNpbmcgIi9ob21lLioiJzog
eworICAgIHRvcGljOiBmdW5jdGlvbigpIHsKKyAgICAgIHJldHVybiB0ZXN0Um91dGUoJy9ob21l
LionLCBjYWxsYmFjayk7CisgICAgfSwKKworICAgICdTaG91bGQgbWF0Y2ggIi9ob21lcGFnZSIn
OiBmdW5jdGlvbihyZXN1bHQpIHsKKyAgICAgIGFzc2VydC5pc1RydWUocmVzdWx0KCcvaG9tZXBh
Z2UnKSk7CisgICAgfSwKKworICAgICdTaG91bGQgbWF0Y2ggIi9ob21lL3BhZ2UiJzogZnVuY3Rp
b24ocmVzdWx0KSB7CisgICAgICBhc3NlcnQuaXNUcnVlKHJlc3VsdCgnL2hvbWUvcGFnZScpKTsK
KyAgICB9LAorCisgICAgJ1Nob3VsZCBub3QgbWF0Y2ggIi9mb28tYmFyIic6IGZ1bmN0aW9uKHJl
c3VsdCkgeworICAgICAgYXNzZXJ0LmlzRmFsc2UocmVzdWx0KCcvZm9vLWJhcicpKTsKKyAgICB9
CisgIH0sCisKKyAgJ1doZW4gdXNpbmcgIi9ob21lKHBhZ2VbMC05XSkqIic6IHsKKyAgICB0b3Bp
YzogZnVuY3Rpb24oKSB7CisgICAgICByZXR1cm4gdGVzdFJvdXRlKCcvaG9tZShwYWdlWzAtOV0p
KicsIGNhbGxiYWNrKTsKKyAgICB9LAorCisgICAgJ1Nob3VsZCBtYXRjaCAiL2hvbWUiJzogZnVu
Y3Rpb24ocmVzdWx0KSB7CisgICAgICBhc3NlcnQuaXNUcnVlKHJlc3VsdCgnL2hvbWUnKSk7Cisg
ICAgfSwKKworICAgICdTaG91bGQgbWF0Y2ggIi9ob21lcGFnZTAiLCAiL2hvbWVwYWdlMSIsIGV0
Yy4nOiBmdW5jdGlvbihyZXN1bHQpIHsKKyAgICAgIGZvciAoaSA9IDA7IGkgPCAxMDsgaSsrKSB7
CisgICAgICAgIGFzc2VydC5pc1RydWUocmVzdWx0KCcvaG9tZXBhZ2UnICsgaSkpOworICAgICAg
fQorICAgIH0sCisKKyAgICAnU2hvdWxkIG5vdCBtYXRjaCAiL2hvbWVfcGFnZSInOiBmdW5jdGlv
bihyZXN1bHQpIHsKKyAgICAgIGFzc2VydC5pc0ZhbHNlKHJlc3VsdCgnL2hvbWVfcGFnZScpKTsK
KyAgICB9LAorCisgICAgJ1Nob3VsZCBub3QgbWF0Y2ggIi9ob21lL3BhZ2UiJzogZnVuY3Rpb24o
cmVzdWx0KSB7CisgICAgICBhc3NlcnQuaXNGYWxzZShyZXN1bHQoJy9ob21lL3BhZ2UnKSk7Cisg
ICAgfQorICB9LAorCisgICdXaGVuIHVzaW5nICIvaG9tZSoiJzogeworICAgIHRvcGljOiBmdW5j
dGlvbigpIHsKKyAgICAgIHJldHVybiB0ZXN0Um91dGUoJy9ob21lKicsIGNhbGxiYWNrKTsKKyAg
ICB9LAorCisgICAgJ1Nob3VsZCBtYXRjaCAiL2hvbWVwYWdlIic6IGZ1bmN0aW9uKHJlc3VsdCkg
eworICAgICAgYXNzZXJ0LmlzVHJ1ZShyZXN1bHQoJy9ob21lcGFnZScpKTsKKyAgICB9LAorCisg
ICAgJ1Nob3VsZCBtYXRjaCAiL2hvbWVfcGFnZSInOiBmdW5jdGlvbihyZXN1bHQpIHsKKyAgICAg
IGFzc2VydC5pc1RydWUocmVzdWx0KCcvaG9tZV9wYWdlJykpOworICAgIH0sCisKKyAgICAnU2hv
dWxkIG1hdGNoICIvaG9tZS1wYWdlIic6IGZ1bmN0aW9uKHJlc3VsdCkgeworICAgICAgYXNzZXJ0
LmlzVHJ1ZShyZXN1bHQoJy9ob21lLXBhZ2UnKSk7CisgICAgfSwKKworICAgICdTaG91bGQgbm90
IG1hdGNoICIvaG9tZS9wYWdlIic6IGZ1bmN0aW9uKHJlc3VsdCkgeworICAgICAgYXNzZXJ0Lmlz
RmFsc2UocmVzdWx0KCcvaG9tZS9wYWdlJykpOworICAgIH0KKyAgfSwKKyAgJ1doZW4gdXNpbmcg
Ii9mb2xkZXIvOjpob21lIic6IHsKKyAgICB0b3BpYzogZnVuY3Rpb24oKSB7CisgICAgICByZXR1
cm4gdGVzdFJvdXRlKCcvZm9sZGVyLzo6aG9tZScsIGNhbGxiYWNrKTsKKyAgICB9LAorICAgICdT
aG91bGQgbWF0Y2ggIi9mb2xkZXIvOmhvbWUiJzogZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgICBh
c3NlcnQuaXNUcnVlKHJlc3VsdCgnL2ZvbGRlci86aG9tZScpKTsKKyAgICB9LAorICAgICdTaG91
bGQgbm90IG1hdGNoICIvZm9sZGVyLzo6aG9tZSInOiBmdW5jdGlvbihyZXN1bHQpIHsKKyAgICAg
IGFzc2VydC5pc0ZhbHNlKHJlc3VsdCgnL2ZvbGRlci86OmhvbWUnKSk7CisgICAgfSwKKyAgICAn
U2hvdWxkIG5vdCBtYXRjaCAiL2ZvbGRlci9hYmMiICh0aGUgY2F0Y2hhbGwgcmVnZXhwKSc6IGZ1
bmN0aW9uKHJlc3VsdCkgeworICAgICAgYXNzZXJ0LmlzRmFsc2UocmVzdWx0KCcvZm9sZGVyL2Fi
YycpKTsKKyAgICB9CisgIH0KKworfSkuZXhwb3J0KG1vZHVsZSk7CmRpZmYgLS1naXQgYS9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL3Rlc3Qvc2VydmVyL2hlbHBlcnMv
aW5kZXguanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL3Rlc3Qv
c2VydmVyL2hlbHBlcnMvaW5kZXguanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjEwNGRhNjliOWQ5YTRjMzJlNzVk
Yjc4ZmQ2YmMzYzgxZjc1ZDQyNgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVy
eS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvdGVzdC9zZXJ2ZXIvaGVscGVycy9pbmRleC5qcwpAQCAt
MCwwICsxLDUyIEBACisvKgorICogaW5kZXguanM6IFRlc3QgaGVscGVycyBmb3IgZGlyZWN0b3Iu
CisgKgorICogKEMpIDIwMTEsIENoYXJsaWUgUm9iYmlucywgUGFvbG8gRnJhZ29tZW5pLCAmIHRo
ZSBDb250cmlidXRvcnMuCisgKiBNSVQgTElDRU5TRQorICoKKyAqLworCit2YXIgaHR0cCA9IHJl
cXVpcmUoJ2h0dHAnKTsKKworZXhwb3J0cy5jcmVhdGVTZXJ2ZXIgPSBmdW5jdGlvbiAocm91dGVy
KSB7CisgIHJldHVybiBodHRwLmNyZWF0ZVNlcnZlcihmdW5jdGlvbiAocmVxLCByZXMpIHsKKyAg
ICByb3V0ZXIuZGlzcGF0Y2gocmVxLCByZXMsIGZ1bmN0aW9uIChlcnIpIHsKKyAgICAgIGlmIChl
cnIpIHsKKyAgICAgICAgcmVzLndyaXRlSGVhZCg0MDQpOworICAgICAgICByZXMuZW5kKCk7Cisg
ICAgICB9CisgICAgfSk7CisgIH0pOworfTsKKworZXhwb3J0cy5oYW5kbGVycyA9IHsKKyAgcmVz
cG9uZFdpdGhJZDogZnVuY3Rpb24gKGlkKSB7CisgICAgdGhpcy5yZXMud3JpdGVIZWFkKDIwMCwg
eyAnQ29udGVudC1UeXBlJzogJ3RleHQvcGxhaW4nIH0pCisgICAgdGhpcy5yZXMuZW5kKCdoZWxs
byBmcm9tICgnICsgaWQgKyAnKScpOworICB9LAorICByZXNwb25kV2l0aERhdGE6IGZ1bmN0aW9u
ICgpIHsKKyAgICB0aGlzLnJlcy53cml0ZUhlYWQoMjAwLCB7ICdDb250ZW50LVR5cGUnOiAnYXBw
bGljYXRpb24vanNvbicgfSkKKyAgICB0aGlzLnJlcy5lbmQoSlNPTi5zdHJpbmdpZnkodGhpcy5k
YXRhKSk7CisgIH0sCisgIHJlc3BvbmRXaXRoT2s6IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4g
ZnVuY3Rpb24gKCkgeworICAgICAgdGhpcy5yZXMud3JpdGVIZWFkKDIwMCk7CisgICAgICB0aGlz
LnJlcy5lbmQoJ29rJyk7CisgICAgfTsKKyAgfSwKKyAgc3RyZWFtQm9keTogZnVuY3Rpb24gKCkg
eworICAgIHZhciBib2R5ID0gJycsCisgICAgICAgIHJlcyA9IHRoaXMucmVzOworCisgICAgdGhp
cy5yZXEub24oJ2RhdGEnLCBmdW5jdGlvbiAoY2h1bmspIHsKKyAgICAgIGJvZHkgKz0gY2h1bms7
CisgICAgfSk7CisKKyAgICB0aGlzLnJlcS5vbignZW5kJywgZnVuY3Rpb24gKCkgeworICAgICAg
cmVzLndyaXRlSGVhZCgyMDAsIHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9
KTsKKyAgICAgIHJlcy5lbmQoYm9keSk7CisgICAgfSk7CisgIH0KK307CisKK2V4cG9ydHMubWFj
cm9zID0gcmVxdWlyZSgnLi9tYWNyb3MnKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVy
eS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvdGVzdC9zZXJ2ZXIvaGVscGVycy9tYWNyb3MuanMgYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL3Rlc3Qvc2VydmVyL2hlbHBl
cnMvbWFjcm9zLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5N2ExN2UxMTliNDhmYjMyYWUwYzI3ODAwODJmYWYy
ZmVmNjg2NGMKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1
bGVzL2RpcmVjdG9yL3Rlc3Qvc2VydmVyL2hlbHBlcnMvbWFjcm9zLmpzCkBAIC0wLDAgKzEsNTUg
QEAKKy8qCisgKiBtYWNyb3MuanM6IFRlc3QgbWFjcm9zIGZvciBkaXJlY3RvciB0ZXN0cy4KKyAq
CisgKiAoQykgMjAxMSwgQ2hhcmxpZSBSb2JiaW5zLCBQYW9sbyBGcmFnb21lbmksICYgdGhlIENv
bnRyaWJ1dG9ycy4KKyAqIE1JVCBMSUNFTlNFCisgKgorICovCisKK3ZhciBhc3NlcnQgPSByZXF1
aXJlKCdhc3NlcnQnKSwKKyAgICByZXF1ZXN0ID0gcmVxdWlyZSgncmVxdWVzdCcpOworCitleHBv
cnRzLmFzc2VydEdldCA9IGZ1bmN0aW9uKHBvcnQsIHVyaSwgZXhwZWN0ZWQpIHsKKyAgdmFyIGNv
bnRleHQgPSB7CisgICAgdG9waWM6IGZ1bmN0aW9uICgpIHsKKyAgICAgIHJlcXVlc3QoeyB1cmk6
ICdodHRwOi8vbG9jYWxob3N0OicgKyBwb3J0ICsgJy8nICsgdXJpIH0sIHRoaXMuY2FsbGJhY2sp
OworICAgIH0KKyAgfTsKKworICBjb250ZXh0WydzaG91bGQgcmVzcG9uZCB3aXRoIGAnICsgZXhw
ZWN0ZWQgKyAnYCddID0gZnVuY3Rpb24gKGVyciwgcmVzLCBib2R5KSB7CisgICAgYXNzZXJ0Lmlz
TnVsbChlcnIpOworICAgIGFzc2VydC5lcXVhbChyZXMuc3RhdHVzQ29kZSwgMjAwKTsKKyAgICBh
c3NlcnQuZXF1YWwoYm9keSwgZXhwZWN0ZWQpOworICB9OworCisgIHJldHVybiBjb250ZXh0Owor
fTsKKworZXhwb3J0cy5hc3NlcnQ0MDQgPSBmdW5jdGlvbiAocG9ydCwgdXJpKSB7CisgIHJldHVy
biB7CisgICAgdG9waWM6IGZ1bmN0aW9uICgpIHsKKyAgICAgIHJlcXVlc3QoeyB1cmk6ICdodHRw
Oi8vbG9jYWxob3N0OicgKyBwb3J0ICsgJy8nICsgdXJpIH0sIHRoaXMuY2FsbGJhY2spOworICAg
IH0sCisgICAgInNob3VsZCByZXNwb25kIHdpdGggNDA0IjogZnVuY3Rpb24gKGVyciwgcmVzLCBi
b2R5KSB7CisgICAgICBhc3NlcnQuaXNOdWxsKGVycik7CisgICAgICBhc3NlcnQuZXF1YWwocmVz
LnN0YXR1c0NvZGUsIDQwNCk7CisgICAgfQorICB9OworfTsKKworZXhwb3J0cy5hc3NlcnRQb3N0
ID0gZnVuY3Rpb24ocG9ydCwgdXJpLCBleHBlY3RlZCkgeworICByZXR1cm4geworICAgIHRvcGlj
OiBmdW5jdGlvbiAoKSB7CisgICAgICByZXF1ZXN0KHsKKyAgICAgICAgbWV0aG9kOiAnUE9TVCcs
CisgICAgICAgIHVyaTogJ2h0dHA6Ly9sb2NhbGhvc3Q6JyArIHBvcnQgKyAnLycgKyB1cmksCisg
ICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KGV4cGVjdGVkKQorICAgICAgfSwgdGhpcy5jYWxs
YmFjayk7CisgICAgfSwKKyAgICAic2hvdWxkIHJlc3BvbmQgd2l0aCB0aGUgUE9TVCBib2R5Ijog
ZnVuY3Rpb24gKGVyciwgcmVzLCBib2R5KSB7CisgICAgICBhc3NlcnQuaXNOdWxsKGVycik7Cisg
ICAgICBhc3NlcnQuZXF1YWwocmVzLnN0YXR1c0NvZGUsIDIwMCk7CisgICAgICBhc3NlcnQuZGVl
cEVxdWFsKEpTT04ucGFyc2UoYm9keSksIGV4cGVjdGVkKTsKKyAgICB9CisgIH07Cit9OwpkaWZm
IC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci90ZXN0L3Nl
cnZlci9odHRwL2FjY2VwdC10ZXN0LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxl
cy9kaXJlY3Rvci90ZXN0L3NlcnZlci9odHRwL2FjY2VwdC10ZXN0LmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcz
NTNhNzA4N2RhMjI0MWZiMDg0YmM3NzNiMWMzNzQ4Nzg3NTJkYmIKLS0tIC9kZXYvbnVsbAorKysg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL3Rlc3Qvc2VydmVyL2h0
dHAvYWNjZXB0LXRlc3QuanMKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIGFjY2VwdC10ZXN0Lmpz
OiBUZXN0cyBmb3IgYGNvbnRlbnQtdHlwZWAtYmFzZWQgcm91dGluZworICoKKyAqIChDKSAyMDEy
LCBDaGFybGllIFJvYmJpbnMsIFBhb2xvIEZyYWdvbWVuaSwgJiB0aGUgQ29udHJpYnV0b3JzLgor
ICogTUlUIExJQ0VOU0UKKyAqCisgKi8KKwordmFyIGFzc2VydCA9IHJlcXVpcmUoJ2Fzc2VydCcp
LAorICAgIGFwaUVhc3kgPSByZXF1aXJlKCdhcGktZWFzeScpLAorICAgIGRpcmVjdG9yID0gcmVx
dWlyZSgnLi4vLi4vLi4vbGliL2RpcmVjdG9yJyksCisgICAgaGVscGVycyA9IHJlcXVpcmUoJy4u
L2hlbHBlcnMnKSwKKyAgICBtYWNyb3MgPSBoZWxwZXJzLm1hY3JvcywKKyAgICBoYW5kbGVycyA9
IGhlbHBlcnMuaGFuZGxlcnM7CisKK3ZhciBQT1JUID0gOTA2NzsKKworYXBpRWFzeS5kZXNjcmli
ZSgnZGlyZWN0b3IvaHR0cC9hY2NlcHQnKQorICAuYWRkQmF0Y2goeworICAgICJBbiBpbnN0YW5j
ZSBvZiBgZGlyZWN0b3IuaHR0cC5Sb3V0ZXJgIjogeworICAgICAgIndpdGggcm91dGVzIHNldCB1
cCI6IHsKKyAgICAgICAgdG9waWM6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICB2YXIgcm91dGVy
ID0gbmV3IGRpcmVjdG9yLmh0dHAuUm91dGVyKCk7CisgICAgICAgICAgcm91dGVyLmdldCgnL2pz
b24nLCB7IGFjY2VwdDogJ2FwcGxpY2F0aW9uL2pzb24nIH0sIGhhbmRsZXJzLnJlc3BvbmRXaXRo
T2soKSk7CisgICAgICAgICAgcm91dGVyLmdldCgnL3R4dCcsIHsgYWNjZXB0OiAndGV4dC9wbGFp
bicgfSwgaGFuZGxlcnMucmVzcG9uZFdpdGhPaygpKTsKKyAgICAgICAgICByb3V0ZXIuZ2V0KCcv
Ym90aCcsIHsgYWNjZXB0OiBbJ3RleHQvcGxhaW4nLCAnYXBwbGljYXRpb24vanNvbiddIH0sIGhh
bmRsZXJzLnJlc3BvbmRXaXRoT2soKSk7CisgICAgICAgICAgcm91dGVyLmdldCgnL3JlZ2V4Jywg
eyBhY2NlcHQ6IC8uK1wveFwtLisvIH0sIGhhbmRsZXJzLnJlc3BvbmRXaXRoT2soKSk7CisKKyAg
ICAgICAgICByb3V0ZXIuZ2V0KCcvd2VpcmQnLCB7IGFjY2VwdDogJ2FwcGxpY2F0aW9uL2pzb24n
IH0sIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRoaXMucmVzLndyaXRlSGVhZCg0MDApOwor
ICAgICAgICAgICAgdGhpcy5yZXMuZW5kKCk7CisgICAgICAgICAgfSk7CisKKyAgICAgICAgICBy
b3V0ZXIuZ2V0KCcvd2VpcmQnLCBoYW5kbGVycy5yZXNwb25kV2l0aE9rKCkpOworCisgICAgICAg
ICAgaGVscGVycy5jcmVhdGVTZXJ2ZXIocm91dGVyKS5saXN0ZW4oUE9SVCwgdGhpcy5jYWxsYmFj
ayk7CisgICAgICAgIH0sCisgICAgICAgICJzaG91bGQgYmUgY3JlYXRlZCI6IGZ1bmN0aW9uIChl
cnIpIHsKKyAgICAgICAgICBhc3NlcnQoIWVycik7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9
CisgIH0pCisgIC51c2UoJ2xvY2FsaG9zdCcsIFBPUlQpCisgIC5kaXNjdXNzKCd3aXRoIGBjb250
ZW50LXR5cGU6IGFwcGxpY2F0aW9uL2pzb25gJykKKyAgLnNldEhlYWRlcignY29udGVudC10eXBl
JywgJ2FwcGxpY2F0aW9uL2pzb24nKQorICAgIC5nZXQoJy9qc29uJykKKyAgICAgIC5leHBlY3Qo
MjAwKQorICAgIC5nZXQoJy90eHQnKQorICAgICAgLmV4cGVjdCg0MDQpCisgICAgLmdldCgnL2Jv
dGgnKQorICAgICAgLmV4cGVjdCgyMDApCisgICAgLmdldCgnL3JlZ2V4JykKKyAgICAgIC5leHBl
Y3QoNDA0KQorICAgIC5nZXQoJy93ZWlyZCcpCisgICAgICAuZXhwZWN0KDQwMCkKKyAgLnVuZGlz
Y3VzcygpCisgIC5uZXh0KCkKKyAgLmRpc2N1c3MoJ3dpdGggYGNvbnRlbnQtdHlwZTogdGV4dC9w
bGFpbmAnKQorICAuc2V0SGVhZGVyKCdjb250ZW50LXR5cGUnLCAndGV4dC9wbGFpbicpCisgICAg
LmdldCgnL2pzb24nKQorICAgICAgLmV4cGVjdCg0MDQpCisgICAgLmdldCgnL3R4dCcpCisgICAg
ICAuZXhwZWN0KDIwMCkKKyAgICAuZ2V0KCcvYm90aCcpCisgICAgICAuZXhwZWN0KDIwMCkKKyAg
ICAuZ2V0KCcvcmVnZXgnKQorICAgICAgLmV4cGVjdCg0MDQpCisgICAgLmdldCgnL3dlaXJkJykK
KyAgICAgIC5leHBlY3QoMjAwKQorICAudW5kaXNjdXNzKCkKKyAgLm5leHQoKQorICAuZGlzY3Vz
cygnd2l0aCBgY29udGVudC10eXBlOiBhcHBsaWNhdGlvbi94LXRhci1nemAnKQorICAuc2V0SGVh
ZGVyKCdjb250ZW50LXR5cGUnLCAnYXBwbGljYXRpb24veC10YXItZ3pgJykKKyAgICAuZ2V0KCcv
anNvbicpCisgICAgLmdldCgnL2pzb24nKQorICAgICAgLmV4cGVjdCg0MDQpCisgICAgLmdldCgn
L3R4dCcpCisgICAgICAuZXhwZWN0KDQwNCkKKyAgICAuZ2V0KCcvYm90aCcpCisgICAgICAuZXhw
ZWN0KDQwNCkKKyAgICAuZ2V0KCcvcmVnZXgnKQorICAgICAgLmV4cGVjdCgyMDApCisgICAgLmdl
dCgnL3dlaXJkJykKKyAgICAgIC5leHBlY3QoMjAwKQorICAudW5kaXNjdXNzKCkKKyAgLmV4cG9y
dChtb2R1bGUpOworCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVz
L2RpcmVjdG9yL3Rlc3Qvc2VydmVyL2h0dHAvYXR0YWNoLXRlc3QuanMgYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9q
cXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL3Rlc3Qvc2VydmVyL2h0dHAvYXR0YWNoLXRlc3Qu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOWZiMzIwYTcwZDRlZmMyN2VlNGUyNTEwNjkyMDZiMGZjMzc0MDkyOAot
LS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0
b3IvdGVzdC9zZXJ2ZXIvaHR0cC9hdHRhY2gtdGVzdC5qcwpAQCAtMCwwICsxLDUxIEBACisvKgor
ICogYXR0YWNoLXRlc3QuanM6IFRlc3RzICdyb3V0ZXIuYXR0YWNoJyBmdW5jdGlvbmFsaXR5Lgor
ICoKKyAqIChDKSAyMDExLCBDaGFybGllIFJvYmJpbnMsIFBhb2xvIEZyYWdvbWVuaSwgJiB0aGUg
Q29udHJpYnV0b3JzLgorICogTUlUIExJQ0VOU0UKKyAqCisgKi8KKwordmFyIGFzc2VydCA9IHJl
cXVpcmUoJ2Fzc2VydCcpLAorICAgIGh0dHAgPSByZXF1aXJlKCdodHRwJyksCisgICAgdm93cyA9
IHJlcXVpcmUoJ3Zvd3MnKSwKKyAgICByZXF1ZXN0ID0gcmVxdWlyZSgncmVxdWVzdCcpLAorICAg
IGRpcmVjdG9yID0gcmVxdWlyZSgnLi4vLi4vLi4vbGliL2RpcmVjdG9yJyksCisgICAgaGVscGVy
cyA9IHJlcXVpcmUoJy4uL2hlbHBlcnMnKSwKKyAgICBoYW5kbGVycyA9IGhlbHBlcnMuaGFuZGxl
cnMsCisgICAgbWFjcm9zID0gaGVscGVycy5tYWNyb3M7CisKK2Z1bmN0aW9uIGFzc2VydERhdGEo
dXJpKSB7CisgIHJldHVybiBtYWNyb3MuYXNzZXJ0R2V0KAorICAgIDkwOTEsCisgICAgdXJpLAor
ICAgIEpTT04uc3RyaW5naWZ5KFsxLDIsM10pCisgICk7Cit9CisKK3Zvd3MuZGVzY3JpYmUoJ2Rp
cmVjdG9yL2h0dHAvYXR0YWNoJykuYWRkQmF0Y2goeworICAiQW4gaW5zdGFuY2Ugb2YgZGlyZWN0
b3IuaHR0cC5Sb3V0ZXIiOiB7CisgICAgImluc3RhbnRpYXRlZCB3aXRoIGEgUm91dGluZyB0YWJs
ZSI6IHsKKyAgICAgIHRvcGljOiBuZXcgZGlyZWN0b3IuaHR0cC5Sb3V0ZXIoeworICAgICAgICAn
L2hlbGxvJzogeworICAgICAgICAgIGdldDogaGFuZGxlcnMucmVzcG9uZFdpdGhEYXRhCisgICAg
ICAgIH0KKyAgICAgIH0pLAorICAgICAgInNob3VsZCBoYXZlIHRoZSBjb3JyZWN0IHJvdXRlcyBk
ZWZpbmVkIjogZnVuY3Rpb24gKHJvdXRlcikgeworICAgICAgICBhc3NlcnQuaXNPYmplY3Qocm91
dGVyLnJvdXRlcy5oZWxsbyk7CisgICAgICAgIGFzc2VydC5pc0Z1bmN0aW9uKHJvdXRlci5yb3V0
ZXMuaGVsbG8uZ2V0KTsKKyAgICAgIH0sCisgICAgICAid2hlbiBwYXNzZWQgdG8gYW4gaHR0cC5T
ZXJ2ZXIgaW5zdGFuY2UiOiB7CisgICAgICAgIHRvcGljOiBmdW5jdGlvbiAocm91dGVyKSB7Cisg
ICAgICAgICAgcm91dGVyLmF0dGFjaChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0aGlzLmRh
dGEgPSBbMSwyLDNdOworICAgICAgICAgIH0pOworCisgICAgICAgICAgaGVscGVycy5jcmVhdGVT
ZXJ2ZXIocm91dGVyKQorICAgICAgICAgICAgLmxpc3Rlbig5MDkxLCB0aGlzLmNhbGxiYWNrKTsK
KyAgICAgICAgfSwKKyAgICAgICAgImEgcmVxdWVzdCB0byBoZWxsbyI6IGFzc2VydERhdGEoJ2hl
bGxvJyksCisgICAgICB9CisgICAgfQorICB9Cit9KS5leHBvcnQobW9kdWxlKTsKZGlmZiAtLWdp
dCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvdGVzdC9zZXJ2ZXIv
aHR0cC9iZWZvcmUtdGVzdC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGly
ZWN0b3IvdGVzdC9zZXJ2ZXIvaHR0cC9iZWZvcmUtdGVzdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NTAyYzg3
YjMxNTJiODQ4NmJjNmE5NmE5ZjNhYTJjZWZhOTE2ZDVlCi0tLSAvZGV2L251bGwKKysrIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci90ZXN0L3NlcnZlci9odHRwL2Jl
Zm9yZS10ZXN0LmpzCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBiZWZvcmUtdGVzdC5qczogVGVz
dHMgZm9yIHJ1bm5pbmcgYmVmb3JlIG1ldGhvZHMgb24gSFRUUCBzZXJ2ZXIocykuCisgKgorICog
KEMpIDIwMTEsIENoYXJsaWUgUm9iYmlucywgUGFvbG8gRnJhZ29tZW5pLCAmIHRoZSBDb250cmli
dXRvcnMuCisgKiBNSVQgTElDRU5TRQorICoKKyAqLworCit2YXIgYXNzZXJ0ID0gcmVxdWlyZSgn
YXNzZXJ0JyksCisgICAgaHR0cCA9IHJlcXVpcmUoJ2h0dHAnKSwKKyAgICB2b3dzID0gcmVxdWly
ZSgndm93cycpLAorICAgIHJlcXVlc3QgPSByZXF1aXJlKCdyZXF1ZXN0JyksCisgICAgZGlyZWN0
b3IgPSByZXF1aXJlKCcuLi8uLi8uLi9saWIvZGlyZWN0b3InKSwKKyAgICBoZWxwZXJzID0gcmVx
dWlyZSgnLi4vaGVscGVycycpLAorICAgIGhhbmRsZXJzID0gaGVscGVycy5oYW5kbGVycywKKyAg
ICBtYWNyb3MgPSBoZWxwZXJzLm1hY3JvczsKKwordm93cy5kZXNjcmliZSgnZGlyZWN0b3IvaHR0
cC9iZWZvcmUnKS5hZGRCYXRjaCh7CisgICJBbiBpbnN0YW5jZSBvZiBkaXJlY3Rvci5odHRwLlJv
dXRlciI6IHsKKyAgICAid2l0aCBhZC1ob2Mgcm91dGVzIGluY2x1ZGluZyAuYmVmb3JlKCkiOiB7
CisgICAgICB0b3BpYzogZnVuY3Rpb24gKCkgeworICAgICAgICB2YXIgcm91dGVyID0gbmV3IGRp
cmVjdG9yLmh0dHAuUm91dGVyKCk7CisKKyAgICAgICAgcm91dGVyLmJlZm9yZSgnL2hlbGxvJywg
ZnVuY3Rpb24gKCkgeyB9KTsKKyAgICAgICAgcm91dGVyLmFmdGVyKCcvaGVsbG8nLCBmdW5jdGlv
biAoKSB7IH0pOworICAgICAgICByb3V0ZXIuZ2V0KCcvaGVsbG8nLCBoYW5kbGVycy5yZXNwb25k
V2l0aElkKTsKKworICAgICAgICByZXR1cm4gcm91dGVyOworICAgICAgfSwKKyAgICAgICJzaG91
bGQgaGF2ZSB0aGUgY29ycmVjdCByb3V0ZXMgZGVmaW5lZCI6IGZ1bmN0aW9uIChyb3V0ZXIpIHsK
KyAgICAgICAgYXNzZXJ0LmlzT2JqZWN0KHJvdXRlci5yb3V0ZXMuaGVsbG8pOworICAgICAgICBh
c3NlcnQuaXNGdW5jdGlvbihyb3V0ZXIucm91dGVzLmhlbGxvLmJlZm9yZSk7CisgICAgICAgIGFz
c2VydC5pc0Z1bmN0aW9uKHJvdXRlci5yb3V0ZXMuaGVsbG8uYWZ0ZXIpOworICAgICAgICBhc3Nl
cnQuaXNGdW5jdGlvbihyb3V0ZXIucm91dGVzLmhlbGxvLmdldCk7CisgICAgICB9CisgICAgfQor
ICB9Cit9KS5leHBvcnQobW9kdWxlKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9u
b2RlX21vZHVsZXMvZGlyZWN0b3IvdGVzdC9zZXJ2ZXIvaHR0cC9jb25maWd1cmUtdGVzdC5qcyBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvdGVzdC9zZXJ2ZXIvaHR0
cC9jb25maWd1cmUtdGVzdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMWIyNzRlMTcwYzVhNjY0ZmUxNmQzNWNh
ZGZhNTMwMjE5NjY5MmY3Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25v
ZGVfbW9kdWxlcy9kaXJlY3Rvci90ZXN0L3NlcnZlci9odHRwL2NvbmZpZ3VyZS10ZXN0LmpzCkBA
IC0wLDAgKzEsMzcgQEAKKy8qCisgKiBvbi10ZXN0LmpzOiBUZXN0cyBmb3IgdGhlIG9uL3JvdXRl
IG1ldGhvZC4KKyAqCisgKiAoQykgMjAxMSwgQ2hhcmxpZSBSb2JiaW5zLCBQYW9sbyBGcmFnb21l
bmksICYgdGhlIENvbnRyaWJ1dG9ycy4KKyAqIE1JVCBMSUNFTlNFCisgKgorICovCisKK3ZhciBh
c3NlcnQgPSByZXF1aXJlKCdhc3NlcnQnKSwKKyAgICB2b3dzID0gcmVxdWlyZSgndm93cycpLAor
ICAgIGRpcmVjdG9yID0gcmVxdWlyZSgnLi4vLi4vLi4vbGliL2RpcmVjdG9yJyk7CisKK3Zvd3Mu
ZGVzY3JpYmUoJ2RpcmVjdG9yL2NvcmUvY29uZmlndXJlJykuYWRkQmF0Y2goeworICAiQW4gaW5z
dGFuY2Ugb2YgZGlyZWN0b3IuUm91dGVyIjogeworICAgIHRvcGljOiBuZXcgZGlyZWN0b3IuaHR0
cC5Sb3V0ZXIoKSwKKyAgICAidGhlIGNvbmZpZ3VyZSgpIG1ldGhvZCI6IHsKKyAgICAgICJjYWxs
ZWQgd2l0aCBhbiBlbXB0eSBvYmplY3QiOiB7CisgICAgICAgICJzaG91bGQgZGVmYXVsdCByZWN1
cnNlIHRvICdmb3J3YXJkJyI6IGZ1bmN0aW9uKHJvdXRlcikgeworICAgICAgICAgIHJvdXRlci5j
b25maWd1cmUoe30pOworICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyb3V0ZXIucmVjdXJz
ZSwgJ2ZvcndhcmQnKTsKKyAgICAgICAgfQorICAgICAgfSwKKyAgICAgICJjYWxsZWQgd2l0aCBy
ZWN1cnNlID0gZmFsc2UiOiB7CisgICAgICAgICJzaG91bGQgc2V0IHJlY3Vyc2UgdG8gZmFsc2Ui
OiBmdW5jdGlvbihyb3V0ZXIpIHsKKyAgICAgICAgICByb3V0ZXIuY29uZmlndXJlKHsgcmVjdXJz
ZTogZmFsc2UgfSk7CisgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJvdXRlci5yZWN1cnNl
LCBmYWxzZSk7CisgICAgICAgIH0KKyAgICAgIH0sCisgICAgICAiY2FsbGVkIHdpdGggcmVjdXJz
ZSA9ICdiYWNrd2FyZCciOiB7CisgICAgICAgICJzaG91bGQgc2V0IHJlY3Vyc2UgdG8gJ2JhY2t3
YXJkJyI6IGZ1bmN0aW9uKHJvdXRlcikgeworICAgICAgICAgIHJvdXRlci5jb25maWd1cmUoeyBy
ZWN1cnNlOiAnYmFja3dhcmQnIH0pOworICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyb3V0
ZXIucmVjdXJzZSwgJ2JhY2t3YXJkJyk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgIH0K
K30pLmV4cG9ydChtb2R1bGUpOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVf
bW9kdWxlcy9kaXJlY3Rvci90ZXN0L3NlcnZlci9odHRwL2h0dHAtdGVzdC5qcyBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvdGVzdC9zZXJ2ZXIvaHR0cC9odHRwLXRl
c3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOGJmZTBiMjA0ODU4MGQzZmMzY2FlNGE5ZjNlYmIzOGRhZmFjNmE4
YwotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGly
ZWN0b3IvdGVzdC9zZXJ2ZXIvaHR0cC9odHRwLXRlc3QuanMKQEAgLTAsMCArMSw5NiBAQAorLyoK
KyAqIGh0dHAtdGVzdC5qczogVGVzdHMgZm9yIGJhc2ljIEhUVFAgc2VydmVyKHMpLgorICoKKyAq
IChDKSAyMDExLCBDaGFybGllIFJvYmJpbnMsIFBhb2xvIEZyYWdvbWVuaSwgJiB0aGUgQ29udHJp
YnV0b3JzLgorICogTUlUIExJQ0VOU0UKKyAqCisgKi8KKwordmFyIGFzc2VydCA9IHJlcXVpcmUo
J2Fzc2VydCcpLAorICAgIGh0dHAgPSByZXF1aXJlKCdodHRwJyksCisgICAgdm93cyA9IHJlcXVp
cmUoJ3Zvd3MnKSwKKyAgICByZXF1ZXN0ID0gcmVxdWlyZSgncmVxdWVzdCcpLAorICAgIGRpcmVj
dG9yID0gcmVxdWlyZSgnLi4vLi4vLi4vbGliL2RpcmVjdG9yJyksCisgICAgaGVscGVycyA9IHJl
cXVpcmUoJy4uL2hlbHBlcnMnKSwKKyAgICBoYW5kbGVycyA9IGhlbHBlcnMuaGFuZGxlcnMsCisg
ICAgbWFjcm9zID0gaGVscGVycy5tYWNyb3M7CisKK2Z1bmN0aW9uIGFzc2VydEJhcmsodXJpKSB7
CisgIHJldHVybiBtYWNyb3MuYXNzZXJ0R2V0KAorICAgIDkwOTAsCisgICAgdXJpLAorICAgICdo
ZWxsbyBmcm9tIChiYXJrKScKKyAgKTsKK30KKwordm93cy5kZXNjcmliZSgnZGlyZWN0b3IvaHR0
cCcpLmFkZEJhdGNoKHsKKyAgIkFuIGluc3RhbmNlIG9mIGRpcmVjdG9yLmh0dHAuUm91dGVyIjog
eworICAgICJpbnN0YW50aWF0ZWQgd2l0aCBhIFJvdXRpbmcgdGFibGUiOiB7CisgICAgICB0b3Bp
YzogbmV3IGRpcmVjdG9yLmh0dHAuUm91dGVyKHsKKyAgICAgICAgJy9oZWxsbyc6IHsKKyAgICAg
ICAgICBnZXQ6IGhhbmRsZXJzLnJlc3BvbmRXaXRoSWQKKyAgICAgICAgfQorICAgICAgfSksCisg
ICAgICAic2hvdWxkIGhhdmUgdGhlIGNvcnJlY3Qgcm91dGVzIGRlZmluZWQiOiBmdW5jdGlvbiAo
cm91dGVyKSB7CisgICAgICAgIGFzc2VydC5pc09iamVjdChyb3V0ZXIucm91dGVzLmhlbGxvKTsK
KyAgICAgICAgYXNzZXJ0LmlzRnVuY3Rpb24ocm91dGVyLnJvdXRlcy5oZWxsby5nZXQpOworICAg
ICAgfSwKKyAgICAgICJ3aGVuIHBhc3NlZCB0byBhbiBodHRwLlNlcnZlciBpbnN0YW5jZSI6IHsK
KyAgICAgICAgdG9waWM6IGZ1bmN0aW9uIChyb3V0ZXIpIHsKKyAgICAgICAgICByb3V0ZXIuZ2V0
KC9mb29cL2JhclwvKFx3KykvLCBoYW5kbGVycy5yZXNwb25kV2l0aElkKTsKKyAgICAgICAgICBy
b3V0ZXIuZ2V0KC9hZGRcLzpwYXJhbVwvYmFyay8sIGhhbmRsZXJzLnJlc3BvbmRXaXRoSWQpOwor
ICAgICAgICAgIHJvdXRlci5nZXQoL2Zvb1wvdXBkYXRlXC8oXHcrKS8sIGhhbmRsZXJzLnJlc3Bv
bmRXaXRoSWQpOworICAgICAgICAgIHJvdXRlci5wYXRoKC9iYXJcL2JhenpcLy8sIGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgIHRoaXMuZ2V0KC8oXHcrKS8sIGhhbmRsZXJzLnJlc3BvbmRXaXRo
SWQpOworICAgICAgICAgIH0pOworICAgICAgICAgIHJvdXRlci5nZXQoL1wvZm9vXC93aWxkXC8o
LiopLywgaGFuZGxlcnMucmVzcG9uZFdpdGhJZCk7CisgICAgICAgICAgcm91dGVyLmdldCgvKFwv
djIpP1wvc29tZXBhdGgvLCBoYW5kbGVycy5yZXNwb25kV2l0aElkKTsKKworICAgICAgICAgIGhl
bHBlcnMuY3JlYXRlU2VydmVyKHJvdXRlcikKKyAgICAgICAgICAgIC5saXN0ZW4oOTA5MCwgdGhp
cy5jYWxsYmFjayk7CisgICAgICAgIH0sCisgICAgICAgICJhIHJlcXVlc3QgdG8gZm9vL2Jhci9i
YXJrIjogYXNzZXJ0QmFyaygnZm9vL2Jhci9iYXJrJyksCisgICAgICAgICJhIHJlcXVlc3QgdG8g
Zm9vL3VwZGF0ZS9iYXJrIjogYXNzZXJ0QmFyaygnZm9vL3VwZGF0ZS9iYXJrJyksCisgICAgICAg
ICJhIHJlcXVlc3QgdG8gYmFyL2JhenovYmFyayI6IGFzc2VydEJhcmsoJ2Jhci9iYXp6L2Jhcmsn
KSwKKyAgICAgICAgImEgcmVxdWVzdCB0byBmb28vYmFyL2Jhcms/dGVzdD10ZXN0IjogYXNzZXJ0
QmFyaygnZm9vL2Jhci9iYXJrP3Rlc3Q9dGVzdCcpLAorICAgICAgICAiYSByZXF1ZXN0IHRvIGZv
by93aWxkL2JhcmsiOiBhc3NlcnRCYXJrKCdmb28vd2lsZC9iYXJrJyksCisgICAgICAgICJhIHJl
cXVlc3QgdG8gYWRkLzpwYXJhbS9iYXJrIjogeworICAgICAgICAgIHRvcGljOiBmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICByZXF1ZXN0KHsgdXJpOiAnaHR0cDovL2xvY2FsaG9zdDo5MDkwL2Fk
ZC90ZXN0L2JhcmsnIH0sIHRoaXMuY2FsbGJhY2spOworICAgICAgICAgIH0sCisgICAgICAgICAg
J3Nob3VsZCByZXNwb25kIGFuZCBwYXJzZSB0aGUgcGFyYW1zJzogZnVuY3Rpb24gKGVyciwgcmVz
LCBib2R5KSB7CisgICAgICAgICAgICBhc3NlcnQuaXNOdWxsKGVycik7CisgICAgICAgICAgICBh
c3NlcnQuZXF1YWwocmVzLnN0YXR1c0NvZGUsIDIwMCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoYm9keSwgJ2hlbGxvIGZyb20gKHRlc3QpJyk7CisgICAgICAgICAgfQorICAgICAgICB9LAor
ICAgICAgICAiYW4gZW5jb2RlZCByZXF1ZXN0IHRvIGFkZC86cGFyYW0vYmFyayI6IHsKKyAgICAg
ICAgICB0b3BpYzogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgcmVxdWVzdCh7IHVyaTogJ2h0
dHA6Ly9sb2NhbGhvc3Q6OTA5MC9hZGQvc29tZXRoaW5nJTQwZXhhbXBsZS5jb20vYmFyaycgfSwg
dGhpcy5jYWxsYmFjayk7CisgICAgICAgICAgfSwKKyAgICAgICAgICAnc2hvdWxkIHJlc3BvbmQg
YW5kIHBhcnNlIHRoZSBwYXJhbXMnOiBmdW5jdGlvbiAoZXJyLCByZXMsIGJvZHkpIHsKKyAgICAg
ICAgICAgIGFzc2VydC5pc051bGwoZXJyKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXMu
c3RhdHVzQ29kZSwgMjAwKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChib2R5LCAnaGVsbG8g
ZnJvbSAoc29tZXRoaW5nJTQwZXhhbXBsZS5jb20pJyk7CisgICAgICAgICAgfQorICAgICAgICB9
LAorICAgICAgICAiYW4gZW5jb2RlZCByZXF1ZXN0IHRvIGFkZC86cGFyYW0vYmFyayB3aXRoIGFk
ZGl0aW9uYWwgc3BlY2lhbCBjaGFyYWN0ZXJzIjogeworICAgICAgICAgIHRvcGljOiBmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICByZXF1ZXN0KHsgdXJpOiAnaHR0cDovL2xvY2FsaG9zdDo5MDkw
L2FkZC9zb21ldGhpbmclNDAoZXhhbXBsZSkuY29tL2JhcmsnIH0sIHRoaXMuY2FsbGJhY2spOwor
ICAgICAgICAgIH0sCisgICAgICAgICAgJ3Nob3VsZCByZXNwb25kIGFuZCBwYXJzZSB0aGUgcGFy
YW1zJzogZnVuY3Rpb24gKGVyciwgcmVzLCBib2R5KSB7CisgICAgICAgICAgICBhc3NlcnQuaXNO
dWxsKGVycik7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzLnN0YXR1c0NvZGUsIDIwMCk7
CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoYm9keSwgJ2hlbGxvIGZyb20gKHNvbWV0aGluZyU0
MChleGFtcGxlKS5jb20pJyk7CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiYSBy
ZXF1ZXN0IHRvIGZvby8lUlQiOiBtYWNyb3MuYXNzZXJ0NDA0KDkwOTAsICdmb28vJVJUJyksCisg
ICAgICAgICJhIHJlcXVlc3QgdG8gL3YyL3NvbWVwYXRoIjogbWFjcm9zLmFzc2VydEdldCgKKyAg
ICAgICAgICA5MDkwLAorICAgICAgICAgICcvdjIvc29tZXBhdGgnLAorICAgICAgICAgICdoZWxs
byBmcm9tICgvdjIpJworICAgICAgICApCisgICAgICB9CisgICAgfQorICB9Cit9KS5leHBvcnQo
bW9kdWxlKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGly
ZWN0b3IvdGVzdC9zZXJ2ZXIvaHR0cC9tZXRob2RzLXRlc3QuanMgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVl
cnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL3Rlc3Qvc2VydmVyL2h0dHAvbWV0aG9kcy10ZXN0Lmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjEzYTI1NzQyMmE4YTY0YjVlYzRkNTlkOGVmY2VjMzVhMDMxOGExZWEKLS0t
IC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9y
L3Rlc3Qvc2VydmVyL2h0dHAvbWV0aG9kcy10ZXN0LmpzCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisg
KiBtZXRob2RzLXRlc3QuanM6IFRlc3RzIGZvciBIVFRQIG1ldGhvZHMuCisgKgorICogKEMpIDIw
MTEsIENoYXJsaWUgUm9iYmlucywgUGFvbG8gRnJhZ29tZW5pLCAmIHRoZSBDb250cmlidXRvcnMu
CisgKiBNSVQgTElDRU5TRQorICoKKyAqLworCit2YXIgYXNzZXJ0ID0gcmVxdWlyZSgnYXNzZXJ0
JyksCisgICAgdm93cyA9IHJlcXVpcmUoJ3Zvd3MnKSwKKyAgICBkaXJlY3RvciA9IHJlcXVpcmUo
Jy4uLy4uLy4uL2xpYi9kaXJlY3RvcicpOworCit2b3dzLmRlc2NyaWJlKCdkaXJlY3Rvci9odHRw
L21ldGhvZHMnKS5hZGRCYXRjaCh7CisgICJXaGVuIHVzaW5nIGRpcmVjdG9yIjogeworICAgICJh
biBpbnN0YW5jZSBvZiBkaXJlY3Rvci5odHRwLlJvdXRlciBzaG91bGQgaGF2ZSBhbGwgcmVsZXZh
bnQgUkZDIG1ldGhvZHMiOiBmdW5jdGlvbiAoKSB7CisgICAgICB2YXIgcm91dGVyID0gbmV3IGRp
cmVjdG9yLmh0dHAuUm91dGVyKCk7CisgICAgICBkaXJlY3Rvci5odHRwLm1ldGhvZHMuZm9yRWFj
aChmdW5jdGlvbiAobWV0aG9kKSB7CisgICAgICAgIGFzc2VydC5pc0Z1bmN0aW9uKHJvdXRlcltt
ZXRob2QudG9Mb3dlckNhc2UoKV0pOworICAgICAgfSk7CisgICAgfSwKKyAgICAidGhlIHBhdGgo
KSBtZXRob2QiOiB7CisgICAgICB0b3BpYzogbmV3IGRpcmVjdG9yLmh0dHAuUm91dGVyKCksCisg
ICAgICAiL3Jlc291cmNlIjogeworICAgICAgICAic2hvdWxkIGluc2VydCBuZXN0ZWQgcm91dGVz
IGNvcnJlY3QiOiBmdW5jdGlvbiAocm91dGVyKSB7CisgICAgICAgICAgZnVuY3Rpb24gZ2V0UmVz
b3VyY2UoKSB7fQorICAgICAgICAgIGZ1bmN0aW9uIG1vZGlmeVJlc291cmNlKCkge30KKworICAg
ICAgICAgIHJvdXRlci5wYXRoKC9cL3Jlc291cmNlLywgZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgdGhpcy5nZXQoZ2V0UmVzb3VyY2UpOworCisgICAgICAgICAgICB0aGlzLnB1dCgvXC91cGRh
dGUvLCBtb2RpZnlSZXNvdXJjZSk7CisgICAgICAgICAgICB0aGlzLnBvc3QoL2NyZWF0ZS8sIG1v
ZGlmeVJlc291cmNlKTsKKyAgICAgICAgICB9KTsKKworICAgICAgICAgIGFzc2VydC5lcXVhbChy
b3V0ZXIucm91dGVzLnJlc291cmNlLmdldCwgZ2V0UmVzb3VyY2UpOworICAgICAgICAgIGFzc2Vy
dC5lcXVhbChyb3V0ZXIucm91dGVzLnJlc291cmNlLnVwZGF0ZS5wdXQsIG1vZGlmeVJlc291cmNl
KTsKKyAgICAgICAgICBhc3NlcnQuZXF1YWwocm91dGVyLnJvdXRlcy5yZXNvdXJjZS5jcmVhdGUu
cG9zdCwgbW9kaWZ5UmVzb3VyY2UpOworICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9Cit9
KS5leHBvcnQobW9kdWxlKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21v
ZHVsZXMvZGlyZWN0b3IvdGVzdC9zZXJ2ZXIvaHR0cC9yZWN1cnNpb24tdGVzdC5qcyBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvdGVzdC9zZXJ2ZXIvaHR0cC9yZWN1
cnNpb24tdGVzdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYjUwOGVkZWZhMzI2YmI3YmNmMWRhODI4Mzg5YTkz
ODMzZTI2NGQ2Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9k
dWxlcy9kaXJlY3Rvci90ZXN0L3NlcnZlci9odHRwL3JlY3Vyc2lvbi10ZXN0LmpzCkBAIC0wLDAg
KzEsNDMgQEAKKy8qCisgKiByZWN1cnNpb24tdGVzdC5qczogVGVzdHMgZm9yIHJlY3Vyc2l2ZSBy
b3V0ZSByZXRyaWV2YWwuCisgKgorICogKEMpIDIwMTEsIE5vZGVqaXRzdSBJbmMuCisgKiBNSVQg
TElDRU5TRQorICoKKyAqLworCit2YXIgYXNzZXJ0ID0gcmVxdWlyZSgnYXNzZXJ0JyksCisgIHZv
d3MgPSByZXF1aXJlKCd2b3dzJyksCisgIGRpcmVjdG9yID0gcmVxdWlyZSgnLi4vLi4vLi4vbGli
L2RpcmVjdG9yJyk7CisKK3Zvd3MuZGVzY3JpYmUoJ2RpcmVjdG9yL2h0dHAvaW5kZXgnKS5hZGRC
YXRjaCh7CisgICJ0aGUgdHJhdmVyc2UoKSBtZXRob2QiIDogeworICAgIHRvcGljOiBuZXcgZGly
ZWN0b3IuaHR0cC5Sb3V0ZXIoKSwKKyAgICAiL3NvbWUvMS9uZXN0ZWQvMi9yb3V0ZS8zIiA6IHsK
KyAgICAgICJzaG91bGQgcmV0dXJuIGEgc3RhY2sgb2YgdGhyZWUgZnVuY3Rpb25zIGFuZCB0aHJl
ZSBjYXB0dXJlcyIgOiBmdW5jdGlvbihyb3V0ZXIpIHsKKyAgICAgICAgZnVuY3Rpb24gYWxwaGEo
KSB7fQorICAgICAgICBmdW5jdGlvbiBiZXRhKCkge30KKyAgICAgICAgZnVuY3Rpb24gZ2FtbWEo
KSB7fQorCisgICAgICAgIHJvdXRlci5wYXRoKCcvc29tZS86aWQnLCBmdW5jdGlvbigpIHsKKyAg
ICAgICAgICB0aGlzLmdldChhbHBoYSk7CisgICAgICAgICAgdGhpcy5wYXRoKCcvbmVzdGVkLzpp
ZCcsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdGhpcy5nZXQoYmV0YSk7CisgICAgICAgICAg
ICB0aGlzLnBhdGgoJy9yb3V0ZS86aWQnLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgdGhp
cy5nZXQoZ2FtbWEpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgfSk7CisgICAgICAgIH0p
OworCisgICAgICAgIHZhciBmbnMgPSByb3V0ZXIudHJhdmVyc2UoJ2dldCcsICcvc29tZS8xL25l
c3RlZC8yL3JvdXRlLzMnLCByb3V0ZXIucm91dGVzLCAnJyk7CisgICAgICAgIHZhciBydW5saXN0
ID0gcm91dGVyLnJ1bmxpc3QoZm5zKTsKKyAgICAgICAgYXNzZXJ0LmVxdWFsKHJ1bmxpc3RbMF0s
IGdhbW1hKTsKKyAgICAgICAgYXNzZXJ0LmVxdWFsKHJ1bmxpc3RbMV0sIGJldGEpOworICAgICAg
ICBhc3NlcnQuZXF1YWwocnVubGlzdFsyXSwgYWxwaGEpOworICAgICAgICBhc3NlcnQuZXF1YWwo
cnVubGlzdC5jYXB0dXJlc1swXSwgMSk7CisgICAgICAgIGFzc2VydC5lcXVhbChydW5saXN0LmNh
cHR1cmVzWzFdLCAyKTsKKyAgICAgICAgYXNzZXJ0LmVxdWFsKHJ1bmxpc3QuY2FwdHVyZXNbMl0s
IDMpOworICAgICAgfQorICAgIH0KKyAgfQorfSkuZXhwb3J0KG1vZHVsZSk7CmRpZmYgLS1naXQg
YS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL3Rlc3Qvc2VydmVyL2h0
dHAvcmVzcG9uc2VzLXRlc3QuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2Rp
cmVjdG9yL3Rlc3Qvc2VydmVyL2h0dHAvcmVzcG9uc2VzLXRlc3QuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Y2
YjkyMzY0MjY1NTFlYTYyYjNkOGJiZWUyMWEyZDA1NDMxMWM0OQotLS0gL2Rldi9udWxsCisrKyBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvdGVzdC9zZXJ2ZXIvaHR0
cC9yZXNwb25zZXMtdGVzdC5qcwpAQCAtMCwwICsxLDIxIEBACisvKgorICogcmVzcG9uc2VzLXRl
c3QuanM6IFRlc3RzIGZvciBIVFRQIHJlc3BvbnNlcy4KKyAqCisgKiAoQykgMjAxMSwgQ2hhcmxp
ZSBSb2JiaW5zLCBQYW9sbyBGcmFnb21lbmksICYgdGhlIENvbnRyaWJ1dG9ycy4KKyAqIE1JVCBM
SUNFTlNFCisgKgorICovCisKK3ZhciBhc3NlcnQgPSByZXF1aXJlKCdhc3NlcnQnKSwKKyAgICB2
b3dzID0gcmVxdWlyZSgndm93cycpLAorICAgIGRpcmVjdG9yID0gcmVxdWlyZSgnLi4vLi4vLi4v
bGliL2RpcmVjdG9yJyk7CisKK3Zvd3MuZGVzY3JpYmUoJ2RpcmVjdG9yL2h0dHAvcmVzcG9uc2Vz
JykuYWRkQmF0Y2goeworICAiV2hlbiB1c2luZyBkaXJlY3Rvci5odHRwIjogeworICAgICJpdCBz
aG91bGQgaGF2ZSB0aGUgcmVsZXZhbnQgcmVzcG9uc2VzIGRlZmluZWQiOiBmdW5jdGlvbiAoKSB7
CisgICAgICBPYmplY3Qua2V5cyhyZXF1aXJlKCcuLi8uLi8uLi9saWIvZGlyZWN0b3IvaHR0cC9y
ZXNwb25zZXMnKSkuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkgeworICAgICAgICBhc3NlcnQuaXNG
dW5jdGlvbihkaXJlY3Rvci5odHRwW25hbWVdKTsKKyAgICAgIH0pOworICAgIH0KKyAgfQorfSku
ZXhwb3J0KG1vZHVsZSk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1
bGVzL2RpcmVjdG9yL3Rlc3Qvc2VydmVyL2h0dHAvc3RyZWFtLXRlc3QuanMgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL3Rlc3Qvc2VydmVyL2h0dHAvc3RyZWFtLXRl
c3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGE1Y2VmNTFhZmZiY2RhZjNiM2YzMTA4ZWUwMDhmNzJiZDE0ODE3
OQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGly
ZWN0b3IvdGVzdC9zZXJ2ZXIvaHR0cC9zdHJlYW0tdGVzdC5qcwpAQCAtMCwwICsxLDQ2IEBACisv
KgorICogc3RyZWFtLXRlc3QuanM6IFRlc3RzIGZvciBzdHJlYW1pbmcgSFRUUCBpbiBkaXJlY3Rv
ci4KKyAqCisgKiAoQykgMjAxMSwgQ2hhcmxpZSBSb2JiaW5zLCBQYW9sbyBGcmFnb21lbmksICYg
dGhlIENvbnRyaWJ1dG9ycy4KKyAqIE1JVCBMSUNFTlNFCisgKgorICovCisKK3ZhciBhc3NlcnQg
PSByZXF1aXJlKCdhc3NlcnQnKSwKKyAgICBodHRwID0gcmVxdWlyZSgnaHR0cCcpLAorICAgIHZv
d3MgPSByZXF1aXJlKCd2b3dzJyksCisgICAgcmVxdWVzdCA9IHJlcXVpcmUoJ3JlcXVlc3QnKSwK
KyAgICBkaXJlY3RvciA9IHJlcXVpcmUoJy4uLy4uLy4uL2xpYi9kaXJlY3RvcicpLAorICAgIGhl
bHBlcnMgPSByZXF1aXJlKCcuLi9oZWxwZXJzJyksCisgICAgbWFjcm9zID0gaGVscGVycy5tYWNy
b3MsCisgICAgaGFuZGxlcnMgPSBoZWxwZXJzLmhhbmRsZXJzCisKK3Zvd3MuZGVzY3JpYmUoJ2Rp
cmVjdG9yL2h0dHAvc3RyZWFtJykuYWRkQmF0Y2goeworICAiQW4gaW5zdGFuY2Ugb2YgZGlyZWN0
b3IuaHR0cC5Sb3V0ZXIiOiB7CisgICAgIndpdGggc3RyZWFtaW5nIHJvdXRlcyI6IHsKKyAgICAg
IHRvcGljOiBmdW5jdGlvbiAoKSB7CisgICAgICAgIHZhciByb3V0ZXIgPSBuZXcgZGlyZWN0b3Iu
aHR0cC5Sb3V0ZXIoKTsKKyAgICAgICAgcm91dGVyLnBvc3QoL2Zvb1wvYmFyLywgeyBzdHJlYW06
IHRydWUgfSwgaGFuZGxlcnMuc3RyZWFtQm9keSk7CisgICAgICAgIHJvdXRlci5wYXRoKCcvYS1w
YXRoJywgZnVuY3Rpb24gKCkgeworICAgICAgICAgIHRoaXMucG9zdCh7IHN0cmVhbTogdHJ1ZSB9
LCBoYW5kbGVycy5zdHJlYW1Cb2R5KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgcmV0dXJuIHJv
dXRlcjsKKyAgICAgIH0sCisgICAgICAid2hlbiBwYXNzZWQgdG8gYW4gaHR0cC5TZXJ2ZXIgaW5z
dGFuY2UiOiB7CisgICAgICAgIHRvcGljOiBmdW5jdGlvbiAocm91dGVyKSB7CisgICAgICAgICAg
aGVscGVycy5jcmVhdGVTZXJ2ZXIocm91dGVyKQorICAgICAgICAgICAgLmxpc3Rlbig5MDkyLCB0
aGlzLmNhbGxiYWNrKTsKKyAgICAgICAgfSwKKyAgICAgICAgImEgUE9TVCByZXF1ZXN0IHRvIC9m
b28vYmFyIjogbWFjcm9zLmFzc2VydFBvc3QoOTA5MiwgJ2Zvby9iYXInLCB7CisgICAgICAgICAg
Zm9vOiAnZm9vJywKKyAgICAgICAgICBiYXI6ICdiYXInCisgICAgICAgIH0pLAorICAgICAgICAi
YSBQT1NUIHJlcXVlc3QgdG8gL2EtcGF0aCI6IG1hY3Jvcy5hc3NlcnRQb3N0KDkwOTIsICdhLXBh
dGgnLCB7CisgICAgICAgICAgZm9vOiAnZm9vJywKKyAgICAgICAgICBiYXI6ICdiYXInCisgICAg
ICAgIH0pCisgICAgICB9CisgICAgfQorICB9Cit9KS5leHBvcnQobW9kdWxlKTsKZGlmZiAtLWdp
dCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy8uZ2l0bW9kdWxl
cyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy8uZ2l0bW9kdWxl
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xNzM5Mjc1YThiMDkzOTNiMmI5OTRiY2I2MGY4OTFhYThjNjhmYTEzCi0t
LSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGVi
YXJzLy5naXRtb2R1bGVzCkBAIC0wLDAgKzEsMyBAQAorW3N1Ym1vZHVsZSAic3BlYy9tdXN0YWNo
ZSJdCisJcGF0aCA9IHNwZWMvbXVzdGFjaGUKKwl1cmwgPSBnaXQ6Ly9naXRodWIuY29tL211c3Rh
Y2hlL3NwZWMuZ2l0CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVz
L2hhbmRsZWJhcnMvLmlzdGFuYnVsLnltbCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVs
ZXMvaGFuZGxlYmFycy8uaXN0YW5idWwueW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2OTExZjE5MDhjYmI2NGMy
ZjkwMDFmNDM2MGFkNDVkMDVmNmRkN2UKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9q
cXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvLmlzdGFuYnVsLnltbApAQCAtMCwwICsxLDIg
QEAKK2luc3RydW1lbnRhdGlvbjoKKyAgICBleGNsdWRlczogWycqKi9zcGVjLyoqJ10KZGlmZiAt
LWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy8ubnBtaWdu
b3JlIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzLy5ucG1pZ25v
cmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZjEwNTkyYzBmMWU4ZDAxZmM3MWRiOTdjNmIwODdmNjQ4NmNlYTMxMgot
LS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxl
YmFycy8ubnBtaWdub3JlCkBAIC0wLDAgKzEsMjUgQEAKKy5EU19TdG9yZQorLmdpdGlnbm9yZQor
LnJ2bXJjCisuZXNsaW50cmMKKy50cmF2aXMueW1sCisucnNwZWMKK0dlbWZpbGUKK0dlbWZpbGUu
bG9jaworUmFrZWZpbGUKK0dydW50ZmlsZS5qcworKi5nZW1zcGVjCisqLm51c3BlYworKi5sb2cK
K2JlbmNoLyoKK2NvbmZpZ3VyYXRpb25zLyoKK2NvbXBvbmVudHMvKgorY292ZXJhZ2UvKgorZGlz
dC9jZG5qcy8qCitkaXN0L2NvbXBvbmVudHMvKgorc3BlYy8qCitzcmMvKgordGFza3MvKgordG1w
LyoKK3B1Ymxpc2gvKgordmVuZG9yLyoKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9u
b2RlX21vZHVsZXMvaGFuZGxlYmFycy9DT05UUklCVVRJTkcubWQgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVl
cnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvQ09OVFJJQlVUSU5HLm1kCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFl
YTI0NjY0OTJkOGFhZDIyNGI0N2YyNDNmZTg5YzJjYWQ4MzI0ZmQKLS0tIC9kZXYvbnVsbAorKysg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvQ09OVFJJQlVUSU5H
Lm1kCkBAIC0wLDAgKzEsOTkgQEAKKyMgSG93IHRvIENvbnRyaWJ1dGUKKworIyMgUmVwb3J0aW5n
IElzc3VlcworCitQbGVhc2Ugc2VlIG91ciBbRkFRXShodHRwczovL2dpdGh1Yi5jb20vd3ljYXRz
L2hhbmRsZWJhcnMuanMvYmxvYi9tYXN0ZXIvRkFRLm1kKSBmb3IgY29tbW9uIGlzc3VlcyB0aGF0
IHBlb3BsZSBydW4gaW50by4KKworU2hvdWxkIHlvdSBydW4gaW50byBvdGhlciBpc3N1ZXMgd2l0
aCB0aGUgcHJvamVjdCwgcGxlYXNlIGRvbid0IGhlc2l0YXRlIHRvIGxldCB1cyBrbm93IGJ5IGZp
bGluZyBhbiBbaXNzdWVdW2lzc3VlXSEgSW4gZ2VuZXJhbCB3ZSBhcmUgZ29pbmcgdG8gYXNrIGZv
ciBhbiBleGFtcGxlIG9mIHRoZSBwcm9ibGVtIGZhaWxpbmcsIHdoaWNoIGNhbiBiZSBhcyBzaW1w
bGUgYXMgYSBqc2ZpZGRsZS9qc2Jpbi9ldGMuIFdlJ3ZlIHB1dCB0b2dldGhlciBhIGpzZmlkZGxl
IFt0ZW1wbGF0ZV1banNmaWRkbGVdIHRvIGVhc2UgdGhpcy4gKFdlIHdpbGwga2VlcCB0aGlzIGxp
bmsgdXAgdG8gZGF0ZSBhcyBuZXcgcmVsZWFzZXMgb2NjdXIsIHNvIGZlZWwgZnJlZSB0byBjaGVj
ayBiYWNrIGhlcmUpCisKK1B1bGwgcmVxdWVzdHMgY29udGFpbmluZyBvbmx5IGZhaWxpbmcgdGVz
dHMgZGVtb25zdHJhdGluZyB0aGUgaXNzdWUgYXJlIHdlbGNvbWVkIGFuZCB0aGlzIGFsc28gaGVs
cHMgZW5zdXJlIHRoYXQgeW91ciBpc3N1ZSB3b24ndCByZWdyZXNzIGluIHRoZSBmdXR1cmUgb25j
ZSBpdCdzIGZpeGVkLgorCitEb2N1bWVudGF0aW9uIGlzc3VlcyBvbiB0aGUgaGFuZGxlYmFyc2pz
LmNvbSBzaXRlIHNob3VsZCBiZSByZXBvcnRlZCBvbiBbaGFuZGxlYmFycy1zaXRlXShodHRwczov
L2dpdGh1Yi5jb20vd3ljYXRzL2hhbmRsZWJhcnMtc2l0ZSkuCisKKyMjIFB1bGwgUmVxdWVzdHMK
KworV2UgYWxzbyBhY2NlcHQgW3B1bGwgcmVxdWVzdHNdW3B1bGwtcmVxdWVzdF0hCisKK0dlbmVy
YWxseSB3ZSBsaWtlIHRvIHNlZSBwdWxsIHJlcXVlc3RzIHRoYXQKKy0gTWFpbnRhaW4gdGhlIGV4
aXN0aW5nIGNvZGUgc3R5bGUKKy0gQXJlIGZvY3VzZWQgb24gYSBzaW5nbGUgY2hhbmdlIChpLmUu
IGF2b2lkIGxhcmdlIHJlZmFjdG9yaW5nIG9yIHN0eWxlIGFkanVzdG1lbnRzIGluIHVudG91Y2hl
ZCBjb2RlIGlmIG5vdCB0aGUgcHJpbWFyeSBnb2FsIG9mIHRoZSBwdWxsIHJlcXVlc3QpCistIEhh
dmUgW2dvb2QgY29tbWl0IG1lc3NhZ2VzXShodHRwOi8vdGJhZ2dlcnkuY29tLzIwMDgvMDQvMTkv
YS1ub3RlLWFib3V0LWdpdC1jb21taXQtbWVzc2FnZXMuaHRtbCkKKy0gSGF2ZSB0ZXN0cworLSBE
b24ndCBzaWduaWZpY2FudGx5IGRlY3JlYXNlIHRoZSBjdXJyZW50IGNvZGUgY292ZXJhZ2UgKHNl
ZSBjb3ZlcmFnZS9sY292LXJlcG9ydC9pbmRleC5odG1sKQorCisjIyBCdWlsZGluZworCitUbyBi
dWlsZCBIYW5kbGViYXJzLmpzIHlvdSdsbCBuZWVkIGEgZmV3IHRoaW5ncyBpbnN0YWxsZWQuCisK
KyogTm9kZS5qcworKiBbR3J1bnRdKGh0dHA6Ly9ncnVudGpzLmNvbS9nZXR0aW5nLXN0YXJ0ZWQp
CisKK0JlZm9yZSBidWlsZGluZywgeW91IG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIEdpdCBz
dWJtb2R1bGUgYHNwZWMvbXVzdGFjaGVgIGlzIGluY2x1ZGVkIChpLmUuIHRoZSBkaXJlY3Rvcnkg
YHNwZWMvbXVzdGFjaGVgIHNob3VsZCBub3QgYmUgZW1wdHkpLiBUbyBpbmNsdWRlIGl0LCBpZiB1
c2luZyBHaXQgdmVyc2lvbiAxLjYuNSBvciBuZXdlciwgdXNlIGBnaXQgY2xvbmUgLS1yZWN1cnNp
dmVgIHJhdGhlciB0aGFuIGBnaXQgY2xvbmVgLiBPciwgaWYgeW91IGFscmVhZHkgY2xvbmVkIHdp
dGhvdXQgYC0tcmVjdXJzaXZlYCwgdXNlIGBnaXQgc3VibW9kdWxlIHVwZGF0ZSAtLWluaXRgLgor
CitQcm9qZWN0IGRlcGVuZGVuY2llcyBtYXkgYmUgaW5zdGFsbGVkIHZpYSBgbnBtIGluc3RhbGxg
LgorCitUbyBidWlsZCBIYW5kbGViYXJzLmpzIGZyb20gc2NyYXRjaCwgeW91J2xsIHdhbnQgdG8g
cnVuIGBncnVudGAKK2luIHRoZSByb290IG9mIHRoZSBwcm9qZWN0LiBUaGF0IHdpbGwgYnVpbGQg
SGFuZGxlYmFycyBhbmQgb3V0cHV0IHRoZQorcmVzdWx0cyB0byB0aGUgZGlzdC8gZm9sZGVyLiBU
byByZS1ydW4gdGVzdHMsIHJ1biBgZ3J1bnQgdGVzdGAgb3IgYG5wbSB0ZXN0YC4KK1lvdSBjYW4g
YWxzbyBydW4gb3VyIHNldCBvZiBiZW5jaG1hcmtzIHdpdGggYGdydW50IGJlbmNoYC4KKworVGhl
IGBncnVudCBkZXZgIGltcGxlbWVudHMgd2F0Y2hpbmcgZm9yIHRlc3RzIGFuZCBhbGxvd3MgZm9y
IGluIGJyb3dzZXIgdGVzdGluZyBhdCBgaHR0cDovL2xvY2FsaG9zdDo5OTk5L3NwZWMvYC4KKwor
SWYgeW91IG5vdGljZSBhbnkgcHJvYmxlbXMsIHBsZWFzZSByZXBvcnQgdGhlbSB0byB0aGUgR2l0
SHViIGlzc3VlIHRyYWNrZXIgYXQKK1todHRwOi8vZ2l0aHViLmNvbS93eWNhdHMvaGFuZGxlYmFy
cy5qcy9pc3N1ZXNdKGh0dHA6Ly9naXRodWIuY29tL3d5Y2F0cy9oYW5kbGViYXJzLmpzL2lzc3Vl
cykuCisKKyMjUnVubmluZyBUZXN0cworCitUbyBydW4gdGVzdHMgbG9jYWxseSwgZmlyc3QgaW5z
dGFsbCBhbGwgZGVwZW5kZW5jaWVzLgorYGBgc2gKK25wbSBpbnN0YWxsCitgYGAKKworQ2xvbmUg
dGhlIG11c3RhY2hlIHNwZWNzIGludG8gdGhlIHNwZWMvbXVzdGFjaGUgZm9sZGVyLgorYGBgc2gK
K2NkIHNwZWMKK3JtIC1yIG11c3RhY2hlCitnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL211
c3RhY2hlL3NwZWMuZ2l0IG11c3RhY2hlCitgYGAKKworRnJvbSB0aGUgcm9vdCBkaXJlY3Rvcnks
IHJ1biB0aGUgdGVzdHMuCitgYGBzaAorbnBtIHRlc3QKK2BgYAorCisjIyBFbWJlciB0ZXN0aW5n
CisKK1RoZSBjdXJyZW50IGVtYmVyIGRpc3RyaWJ1dGlvbiBzaG91bGQgYmUgdGVzdGVkIGFzIHBh
cnQgb2YgdGhlIGhhbmRsZWJhcnMgcmVsZWFzZSBwcm9jZXNzLiBUaGlzIHJlcXVpcmVzIGJ1aWxk
aW5nIHRoZSBgaGFuZGxlYmFycy1zb3VyY2VgIGdlbSBsb2NhbGx5IGFuZCB0aGVuIGV4ZWN1dGlu
ZyB0aGUgZW1iZXIgdGVzdCBzY3JpcHQuCisKK2BgYHNoCitucG0gbGluaworZ3J1bnQgYnVpbGQg
cmVsZWFzZQorY3AgZGlzdC8qLmpzICRlbWJlclJlcG9EaXIvYm93ZXJfY29tcG9uZW50cy9oYW5k
bGViYXJzLworCitjZCAkZW1iZXJSZXBvRGlyCitucG0gbGluayBoYW5kbGViYXJzCitucG0gdGVz
dAorYGBgCisKKyMjIFJlbGVhc2luZworCitIYW5kbGViYXJzIHV0aWxpemVzIHRoZSBbcmVsZWFz
ZSB5ZW9tYW4gZ2VuZXJhdG9yXVtnZW5lcmF0b3ItcmVsZWFzZV0gdG8gcGVyZm9ybSBtb3N0IHJl
bGVhc2UgdGFza3MuCisKK0EgZnVsbCByZWxlYXNlIG1heSBiZSBjb21wbGV0ZWQgd2l0aCB0aGUg
Zm9sbG93aW5nOgorCitgYGAKK3lvIHJlbGVhc2UKK25wbSBwdWJsaXNoCit5byByZWxlYXNlOnB1
Ymxpc2ggY29tcG9uZW50cyBoYW5kbGViYXJzLmpzIGRpc3QvY29tcG9uZW50cy8KKworY2QgZGlz
dC9jb21wb25lbnRzLworZ2VtIGJ1aWxkIGhhbmRsZWJhcnMtc291cmNlLmdlbXNwZWMKK2dlbSBw
dXNoIGhhbmRsZWJhcnMtc291cmNlLSouZ2VtCitgYGAKKworQWZ0ZXIgdGhpcyBwb2ludCB0aGUg
aGFuZGxlYmFycyBzaXRlIG5lZWRzIHRvIGJlIHVwZGF0ZWQgdG8gcG9pbnQgdG8gdGhlIG5ldyB2
ZXJzaW9uIG51bWJlcnMuIFRoZSBqc2ZpZGRsZSBsaW5rIHNob3VsZCBiZSB1cGRhdGVkIHRvIHBv
aW50IHRvIHRoZSBtb3N0IHJlY2VudCBkaXN0cmlidXRpb24gZm9yIGFsbCBpbnN0YW5jZXMgaW4g
b3VyIGRvY3VtZW50YXRpb24uCisKK1tnZW5lcmF0b3ItcmVsZWFzZV06IGh0dHBzOi8vZ2l0aHVi
LmNvbS93YWxtYXJ0bGFicy9nZW5lcmF0b3ItcmVsZWFzZQorW3B1bGwtcmVxdWVzdF06IGh0dHBz
Oi8vZ2l0aHViLmNvbS93eWNhdHMvaGFuZGxlYmFycy5qcy9wdWxsL25ldy9tYXN0ZXIKK1tpc3N1
ZV06IGh0dHBzOi8vZ2l0aHViLmNvbS93eWNhdHMvaGFuZGxlYmFycy5qcy9pc3N1ZXMvbmV3Citb
anNmaWRkbGVdOiBodHRwczovL2pzZmlkZGxlLm5ldC85RDg4Zy80Ny8KZGlmZiAtLWdpdCBhL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9GQVEubWQgYi9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvRkFRLm1kCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEw
OGU4MzlhZjBlYjE3NWRjMzFhYzEzYzVjYmY0NDUxOTgyNjlmMjYKLS0tIC9kZXYvbnVsbAorKysg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvRkFRLm1kCkBAIC0w
LDAgKzEsNjAgQEAKKyMgRnJlcXVlbnRseSBBc2tlZCBRdWVzdGlvbnMKKworMS4gSG93IGNhbiBJ
IGZpbGUgYSBidWcgcmVwb3J0OgorCisgIFNlZSBvdXIgZ3VpZGVsaW5lcyBvbiBbcmVwb3J0aW5n
IGlzc3Vlc10oaHR0cHM6Ly9naXRodWIuY29tL3d5Y2F0cy9oYW5kbGViYXJzLmpzL2Jsb2IvbWFz
dGVyL0NPTlRSSUJVVElORy5tZCNyZXBvcnRpbmctaXNzdWVzKS4KKworMS4gV2h5IGlzbid0IG15
IE11c3RhY2hlIHRlbXBsYXRlIHdvcmtpbmc/CisKKyAgSGFuZGxlYmFycyBkZXZpYXRlcyBmcm9t
IE11c3RhY2hlIHNsaWdodGx5IG9uIGEgZmV3IGJlaGF2aW9ycy4gVGhlc2UgdmFyaWF0aW9ucyBh
cmUgZG9jdW1lbnRlZCBpbiBvdXIgW3JlYWRtZV0oaHR0cHM6Ly9naXRodWIuY29tL3d5Y2F0cy9o
YW5kbGViYXJzLmpzI2RpZmZlcmVuY2VzLWJldHdlZW4taGFuZGxlYmFyc2pzLWFuZC1tdXN0YWNo
ZSkuCisKKzEuIFdoeSBpcyBpdCBzbG93ZXIgd2hlbiBjb21waWxpbmc/CisKKyAgVGhlIEhhbmRs
ZWJhcnMgY29tcGlsZXIgbXVzdCBwYXJzZSB0aGUgdGVtcGxhdGUgYW5kIGNvbnN0cnVjdCBhIEph
dmFTY3JpcHQgcHJvZ3JhbSB3aGljaCBjYW4gdGhlbiBiZSBydW4uIFVuZGVyIHNvbWUgZW52aXJv
bm1lbnRzIHN1Y2ggYXMgb2xkZXIgbW9iaWxlIGRldmljZXMgdGhpcyBjYW4gaGF2ZSBhIHBlcmZv
cm1hbmNlIGltcGFjdCB3aGljaCBjYW4gYmUgYXZvaWRlZCBieSBwcmVjb21waWxpbmcuIEdlbmVy
YWxseSBpdCdzIHJlY29tbWVuZGVkIHRoYXQgcHJlY29tcGlsYXRpb24gYW5kIHRoZSBydW50aW1l
IGxpYnJhcnkgYmUgdXNlZCBvbiBhbGwgY2xpZW50cy4KKworMS4gV2h5IGRvZXNuJ3QgdGhpcyB3
b3JrIHdpdGggQ29udGVudCBTZWN1cml0eSBQb2xpY3kgcmVzdHJpY3Rpb25zPworCisgIFdoZW4g
bm90IHVzaW5nIHRoZSBwcmVjb21waWxlciwgSGFuZGxlYmFycyBnZW5lcmF0ZXMgYSBkeW5hbWlj
IGZ1bmN0aW9uIGZvciBlYWNoIHRlbXBsYXRlIHdoaWNoIGNhbiBjYXVzZSBpc3N1ZXMgd2l0aCBw
YWdlcyB0aGF0IGhhdmUgZW5hYmxlZCBDb250ZW50IFBvbGljeS4gSXQncyByZWNvbW1lbmRlZCB0
aGF0IHRlbXBsYXRlcyBhcmUgcHJlY29tcGlsZWQgb3IgdGhlIGB1bnNhZmUtZXZhbGAgcG9saWN5
IGlzIGVuYWJsZWQgZm9yIHNpdGVzIHRoYXQgbXVzdCBnZW5lcmF0ZSBkeW5hbWljIHRlbXBsYXRl
cyBhdCBydW50aW1lLgorCisxLiBIb3cgY2FuIEkgaW5jbHVkZSBzY3JpcHQgdGFncyBpbiBteSB0
ZW1wbGF0ZT8KKworICBJZiBsb2FkaW5nIHRoZSB0ZW1wbGF0ZSB2aWEgYW4gaW5saW5lZCBgPHNj
cmlwdCB0eXBlPSJ0ZXh0L3gtaGFuZGxlYmFycyI+YCB0YWcgdGhlbiB5b3UgbWF5IG5lZWQgdG8g
YnJlYWsgdXAgdGhlIHNjcmlwdCB0YWcgd2l0aCBhbiBlbXB0eSBjb21tZW50IHRvIGF2b2lkIGJy
b3dzZXIgcGFyc2VyIGVycm9yczoKKworICBgYGBodG1sCisgIDxzY3JpcHQgdHlwZT0idGV4dC94
LWhhbmRsZWJhcnMiPgorICAgIGZvbworICAgIDxzY3J7eyF9fWlwdCBzcmM9ImJhciI+PC9zY3J7
eyF9fWlwdD4KKyAgPC9zY3JpcHQ+CisgIGBgYAorCisgIEl0J3MgZ2VuZXJhbGx5IHJlY29tbWVu
ZGVkIHRoYXQgdGVtcGxhdGVzIGFyZSBzZXJ2ZWQgdGhyb3VnaCBleHRlcm5hbCwgcHJlY29tcGls
ZWQsIGZpbGVzLCB3aGljaCBkbyBub3Qgc3VmZmVyIGZyb20gdGhpcyBpc3N1ZS4KKworMS4gV2h5
IGFyZSBteSBwcmVjb21waWxlZCBzY3JpcHRzIHRocm93aW5nIGV4Y2VwdGlvbnM/CisKKyAgV2hl
biB1c2luZyB0aGUgcHJlY29tcGlsZXIsIGl0J3MgaW1wb3J0YW50IHRoYXQgYSBzdXBwb3J0aW5n
IHZlcnNpb24gb2YgdGhlIEhhbmRsZWJhcnMgcnVudGltZSBiZSBsb2FkZWQgb24gdGhlIHRhcmdl
dCBwYWdlLiBJbiB2ZXJzaW9uIDEueCB0aGVyZSB3ZXJlIHJ1ZGltZW50YXJ5IGNoZWNrcyB0byBj
b21wYXJlIHRoZSB2ZXJzaW9uIGJ1dCB0aGVzZSBkaWQgbm90IGFsd2F5cyB3b3JrLiBUaGlzIGlz
IGZpeGVkIHVuZGVyIDIueCBidXQgdGhlIHZlcnNpb24gY2hlY2tpbmcgZG9lcyBub3Qgd29yayBi
ZXR3ZWVuIHRoZXNlIHR3byB2ZXJzaW9ucy4gSWYgeW91IHNlZSB1bmV4cGVjdGVkIGVycm9ycyBz
dWNoIGFzIGB1bmRlZmluZWQgaXMgbm90IGEgZnVuY3Rpb25gIG9yIHNpbWlsYXIsIHBsZWFzZSB2
ZXJpZnkgdGhhdCB0aGUgc2FtZSB2ZXJzaW9uIGlzIGJlaW5nIHVzZWQgZm9yIGJvdGggdGhlIHBy
ZWNvbXBpbGVyIGFuZCB0aGUgY2xpZW50LiBUaGlzIGNhbiBiZSBjaGVja2VkIHZpYToKKworICBg
YGBzaAorICBoYW5kbGViYXJzIC0tdmVyc2lvbgorICBgYGAKKyAgSWYgdXNpbmcgdGhlIGludGVn
cmF0ZWQgcHJlY29tcGlsZXIgYW5kCisKKyAgYGBgamF2YXNjcmlwdAorICBjb25zb2xlLmxvZyhI
YW5kbGViYXJzLlZFUlNJT04pOworICBgYGAKKyAgT24gdGhlIGNsaWVudCBzaWRlLgorCisgIFdl
IGluY2x1ZGUgdGhlIGJ1aWx0IGNsaWVudCBsaWJyYXJpZXMgaW4gdGhlIG5wbSBwYWNrYWdlIGZv
ciB0aG9zZSB3aG8gd2FudCB0byBiZSBjZXJ0YWluIHRoYXQgdGhleSBhcmUgdXNpbmcgdGhlIHNh
bWUgY2xpZW50IGxpYnJhcmllcyBhcyB0aGUgY29tcGlsZXIuCisKKyAgU2hvdWxkIHRoZXNlIG1h
dGNoLCBwbGVhc2UgZmlsZSBhbiBpc3N1ZSB3aXRoIHVzLCBwZXIgb3VyIFtpc3N1ZSBmaWxpbmcg
Z3VpZGVsaW5lc10oaHR0cHM6Ly9naXRodWIuY29tL3d5Y2F0cy9oYW5kbGViYXJzLmpzL2Jsb2Iv
bWFzdGVyL0NPTlRSSUJVVElORy5tZCNyZXBvcnRpbmctaXNzdWVzKS4KKworMS4gV2h5IGRvZXNu
J3QgSUUgbGlrZSB0aGUgYGRlZmF1bHRgIG5hbWUgaW4gdGhlIEFNRCBtb2R1bGU/CisKKyAgU29t
ZSBicm93c2VycyBzdWNoIGFzIHBhcnRpY3VsYXIgdmVyc2lvbnMgb2YgSUUgdHJlYXQgYGRlZmF1
bHRgIGFzIGEgcmVzZXJ2ZWQgd29yZCBpbiBKYXZhU2NyaXB0IHNvdXJjZSBmaWxlcy4gVG8gc2Fm
ZWx5IHVzZSB0aGlzIHlvdSBuZWVkIHRvIHJlZmVyZW5jZSB0aGlzIHZpYSB0aGUgYEhhbmRsZWJh
cnNbJ2RlZmF1bHQnXWAgbG9va3VwIG1ldGhvZC4gVGhpcyBpcyBhbiB1bmZvcnR1bmF0ZSBzaWRl
IGVmZmVjdCBvZiB0aGUgc2hpbXMgbmVjZXNzYXJ5IHRvIGJhY2twb3J0IHRoZSBIYW5kbGViYXJz
IEVTNiBjb2RlIHRvIGFsbCBjdXJyZW50IGJyb3dzZXJzLgorCisxLiBIb3cgZG8gSSBsb2FkIHRo
ZSBydW50aW1lIGxpYnJhcnkgd2hlbiB1c2luZyBBTUQ/CisKKyAgVGhlcmUgYXJlIHR3byBvcHRp
b25zIGZvciBsb2FkaW5nIHVuZGVyIEFNRCBlbnZpcm9ubWVudHMuIFRoZSBmaXJzdCBpcyB0byB1
c2UgdGhlIGBoYW5kbGViYXJzLnJ1bnRpbWUuYW1kLmpzYCBmaWxlLiBUaGlzIG1heSByZXF1aXJl
IGEgW3BhdGggbWFwcGluZ10oaHR0cHM6Ly9naXRodWIuY29tL3d5Y2F0cy9oYW5kbGViYXJzLmpz
L2Jsb2IvbWFzdGVyL3NwZWMvYW1kLXJ1bnRpbWUuaHRtbCNMMzEpIGFzIHdlbGwgYXMgYWNjZXNz
IHZpYSB0aGUgYGRlZmF1bHRgIGZpZWxkLgorCisgIFRoZSBvdGhlciBvcHRpb24gaXMgdG8gbG9h
ZCB0aGUgYGhhbmRsZWJhcnMucnVudGltZS5qc2AgVU1EIGJ1aWxkLCB3aGljaCBtaWdodCBub3Qg
cmVxdWlyZSBwYXRoIGNvbmZpZ3VyYXRpb24gYW5kIGV4cG9zZXMgdGhlIGxpYnJhcnkgYXMgYm90
aCB0aGUgbW9kdWxlIHJvb3QgYW5kIHRoZSBgZGVmYXVsdGAgZmllbGQgZm9yIGNvbXBhdGliaWxp
dHkuIAorCisgIElmIG5vdCB1c2luZyBFUzYgdHJhbnNwaWxlcnMgb3IgYWNjZXNzaW5nIHN1Ym1v
ZHVsZXMgaW4gdGhlIGJ1aWxkIHRoZSBmb3JtZXIgb3B0aW9uIHNob3VsZCBiZSBzdWZmaWNpZW50
IGZvciBtb3N0IHVzZSBjYXNlcy4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2Rl
X21vZHVsZXMvaGFuZGxlYmFycy9MSUNFTlNFIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9k
dWxlcy9oYW5kbGViYXJzL0xJQ0VOU0UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzA3ZWJjMWMyMDYyYjA4ZGE1ZTg0
ZTRhMmU4YmI0MGE3MWNkNGEwMwotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVy
eS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9MSUNFTlNFCkBAIC0wLDAgKzEsMTkgQEAKK0NvcHly
aWdodCAoQykgMjAxMS0yMDE2IGJ5IFllaHVkYSBLYXR6CisKK1Blcm1pc3Npb24gaXMgaGVyZWJ5
IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkK
K29mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhl
ICJTb2Z0d2FyZSIpLCB0byBkZWFsCitpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlv
biwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCit0byB1c2UsIGNvcHks
IG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBz
ZWxsCitjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hv
bSB0aGUgU29mdHdhcmUgaXMKK2Z1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnM6CisKK1RoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlz
IHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCithbGwgY29waWVzIG9yIHN1
YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKworVEhFIFNPRlRXQVJFIElTIFBS
T1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IK
K0lNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZLAorRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5P
TklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCitBVVRIT1JTIE9SIENPUFlSSUdI
VCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCitMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lT
RSwgQVJJU0lORyBGUk9NLAorT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdB
UkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgorVEhFIFNPRlRXQVJFLgpkaWZmIC0t
Z2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL1JFQURNRS5t
YXJrZG93biBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9SRUFE
TUUubWFya2Rvd24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODllM2ZjNTlhMjFlM2M3M2JkZGEzNGY1NmJiODNiYTNm
ZjhjYjcwNAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVs
ZXMvaGFuZGxlYmFycy9SRUFETUUubWFya2Rvd24KQEAgLTAsMCArMSwxNjcgQEAKK1shW1RyYXZp
cyBCdWlsZCBTdGF0dXNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vdHJhdmlzL3d5Y2F0cy9oYW5k
bGViYXJzLmpzL21hc3Rlci5zdmcpXShodHRwczovL3RyYXZpcy1jaS5vcmcvd3ljYXRzL2hhbmRs
ZWJhcnMuanMpCitbIVtTZWxlbml1bSBUZXN0IFN0YXR1c10oaHR0cHM6Ly9zYXVjZWxhYnMuY29t
L2J1aWxkc3RhdHVzL2hhbmRsZWJhcnMpXShodHRwczovL3NhdWNlbGFicy5jb20vdS9oYW5kbGVi
YXJzKQorCitIYW5kbGViYXJzLmpzCis9PT09PT09PT09PT09CisKK0hhbmRsZWJhcnMuanMgaXMg
YW4gZXh0ZW5zaW9uIHRvIHRoZSBbTXVzdGFjaGUgdGVtcGxhdGluZworbGFuZ3VhZ2VdKGh0dHA6
Ly9tdXN0YWNoZS5naXRodWIuY29tLykgY3JlYXRlZCBieSBDaHJpcyBXYW5zdHJhdGguCitIYW5k
bGViYXJzLmpzIGFuZCBNdXN0YWNoZSBhcmUgYm90aCBsb2dpY2xlc3MgdGVtcGxhdGluZyBsYW5n
dWFnZXMgdGhhdAora2VlcCB0aGUgdmlldyBhbmQgdGhlIGNvZGUgc2VwYXJhdGVkIGxpa2Ugd2Ug
YWxsIGtub3cgdGhleSBzaG91bGQgYmUuCisKK0NoZWNrb3V0IHRoZSBvZmZpY2lhbCBIYW5kbGVi
YXJzIGRvY3Mgc2l0ZSBhdAorW2h0dHA6Ly93d3cuaGFuZGxlYmFyc2pzLmNvbV0oaHR0cDovL3d3
dy5oYW5kbGViYXJzanMuY29tKSBhbmQgdGhlIGxpdmUgZGVtbyBhdCBbaHR0cDovL3RyeWhhbmRs
ZWJhcnNqcy5jb20vXShodHRwOi8vdHJ5aGFuZGxlYmFyc2pzLmNvbS8pLgorCitJbnN0YWxsaW5n
CistLS0tLS0tLS0tCisKK1NlZSBvdXIgW2luc3RhbGxhdGlvbiBkb2N1bWVudGF0aW9uXShodHRw
Oi8vaGFuZGxlYmFyc2pzLmNvbS9pbnN0YWxsYXRpb24uaHRtbCkuCisKK1VzYWdlCistLS0tLQor
SW4gZ2VuZXJhbCwgdGhlIHN5bnRheCBvZiBIYW5kbGViYXJzLmpzIHRlbXBsYXRlcyBpcyBhIHN1
cGVyc2V0CitvZiBNdXN0YWNoZSB0ZW1wbGF0ZXMuIEZvciBiYXNpYyBzeW50YXgsIGNoZWNrIG91
dCB0aGUgW011c3RhY2hlCittYW5wYWdlXShodHRwOi8vbXVzdGFjaGUuZ2l0aHViLmNvbS9tdXN0
YWNoZS41Lmh0bWwpLgorCitPbmNlIHlvdSBoYXZlIGEgdGVtcGxhdGUsIHVzZSB0aGUgYEhhbmRs
ZWJhcnMuY29tcGlsZWAgbWV0aG9kIHRvIGNvbXBpbGUKK3RoZSB0ZW1wbGF0ZSBpbnRvIGEgZnVu
Y3Rpb24uIFRoZSBnZW5lcmF0ZWQgZnVuY3Rpb24gdGFrZXMgYSBjb250ZXh0Cithcmd1bWVudCwg
d2hpY2ggd2lsbCBiZSB1c2VkIHRvIHJlbmRlciB0aGUgdGVtcGxhdGUuCisKK2BgYGpzCit2YXIg
c291cmNlID0gIjxwPkhlbGxvLCBteSBuYW1lIGlzIHt7bmFtZX19LiBJIGFtIGZyb20ge3tob21l
dG93bn19LiBJIGhhdmUgIiArCisgICAgICAgICAgICAgInt7a2lkcy5sZW5ndGh9fSBraWRzOjwv
cD4iICsKKyAgICAgICAgICAgICAiPHVsPnt7I2tpZHN9fTxsaT57e25hbWV9fSBpcyB7e2FnZX19
PC9saT57ey9raWRzfX08L3VsPiI7Cit2YXIgdGVtcGxhdGUgPSBIYW5kbGViYXJzLmNvbXBpbGUo
c291cmNlKTsKKwordmFyIGRhdGEgPSB7ICJuYW1lIjogIkFsYW4iLCAiaG9tZXRvd24iOiAiU29t
ZXdoZXJlLCBUWCIsCisgICAgICAgICAgICAgImtpZHMiOiBbeyJuYW1lIjogIkppbW15IiwgImFn
ZSI6ICIxMiJ9LCB7Im5hbWUiOiAiU2FsbHkiLCAiYWdlIjogIjQifV19OwordmFyIHJlc3VsdCA9
IHRlbXBsYXRlKGRhdGEpOworCisvLyBXb3VsZCByZW5kZXI6CisvLyA8cD5IZWxsbywgbXkgbmFt
ZSBpcyBBbGFuLiBJIGFtIGZyb20gU29tZXdoZXJlLCBUWC4gSSBoYXZlIDIga2lkczo8L3A+Cisv
LyA8dWw+CisvLyAgIDxsaT5KaW1teSBpcyAxMjwvbGk+CisvLyAgIDxsaT5TYWxseSBpcyA0PC9s
aT4KKy8vIDwvdWw+CitgYGAKKworRnVsbCBkb2N1bWVudGF0aW9uIGFuZCBtb3JlIGV4YW1wbGVz
IGFyZSBhdCBbaGFuZGxlYmFyc2pzLmNvbV0oaHR0cDovL2hhbmRsZWJhcnNqcy5jb20vKS4KKwor
UHJlY29tcGlsaW5nIFRlbXBsYXRlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitIYW5kbGVi
YXJzIGFsbG93cyB0ZW1wbGF0ZXMgdG8gYmUgcHJlY29tcGlsZWQgYW5kIGluY2x1ZGVkIGFzIGph
dmFzY3JpcHQgY29kZSByYXRoZXIgdGhhbiB0aGUgaGFuZGxlYmFycyB0ZW1wbGF0ZSBhbGxvd2lu
ZyBmb3IgZmFzdGVyIHN0YXJ0dXAgdGltZS4gRnVsbCBkZXRhaWxzIGFyZSBsb2NhdGVkIFtoZXJl
XShodHRwOi8vaGFuZGxlYmFyc2pzLmNvbS9wcmVjb21waWxhdGlvbi5odG1sKS4KKworRGlmZmVy
ZW5jZXMgQmV0d2VlbiBIYW5kbGViYXJzLmpzIGFuZCBNdXN0YWNoZQorLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorSGFuZGxlYmFycy5qcyBhZGRzIGEgY291
cGxlIG9mIGFkZGl0aW9uYWwgZmVhdHVyZXMgdG8gbWFrZSB3cml0aW5nCit0ZW1wbGF0ZXMgZWFz
aWVyIGFuZCBhbHNvIGNoYW5nZXMgYSB0aW55IGRldGFpbCBvZiBob3cgcGFydGlhbHMgd29yay4K
KworLSBbTmVzdGVkIFBhdGhzXShodHRwOi8vaGFuZGxlYmFyc2pzLmNvbS8jcGF0aHMpCistIFtI
ZWxwZXJzXShodHRwOi8vaGFuZGxlYmFyc2pzLmNvbS8jaGVscGVycykKKy0gW0Jsb2NrIEV4cHJl
c3Npb25zXShodHRwOi8vaGFuZGxlYmFyc2pzLmNvbS8jYmxvY2stZXhwcmVzc2lvbnMpCistIFtM
aXRlcmFsIFZhbHVlc10oaHR0cDovL2hhbmRsZWJhcnNqcy5jb20vI2xpdGVyYWxzKQorLSBbRGVs
aW1pdGVkIENvbW1lbnRzXShodHRwOi8vaGFuZGxlYmFyc2pzLmNvbS8jY29tbWVudHMpCisKK0Js
b2NrIGV4cHJlc3Npb25zIGhhdmUgdGhlIHNhbWUgc3ludGF4IGFzIG11c3RhY2hlIHNlY3Rpb25z
IGJ1dCBzaG91bGQgbm90IGJlIGNvbmZ1c2VkIHdpdGggb25lIGFub3RoZXIuIFNlY3Rpb25zIGFy
ZSBha2luIHRvIGFuIGltcGxpY2l0IGBlYWNoYCBvciBgd2l0aGAgc3RhdGVtZW50IGRlcGVuZGlu
ZyBvbiB0aGUgaW5wdXQgZGF0YSBhbmQgaGVscGVycyBhcmUgZXhwbGljaXQgcGllY2VzIG9mIGNv
ZGUgdGhhdCBhcmUgZnJlZSB0byBpbXBsZW1lbnQgd2hhdGV2ZXIgYmVoYXZpb3IgdGhleSBsaWtl
LiBUaGUgW211c3RhY2hlIHNwZWNdKGh0dHA6Ly9tdXN0YWNoZS5naXRodWIuaW8vbXVzdGFjaGUu
NS5odG1sKSBkZWZpbmVzIHRoZSBleGFjdCBiZWhhdmlvciBvZiBzZWN0aW9ucy4gSW4gdGhlIGNh
c2Ugb2YgbmFtZSBjb25mbGljdHMsIGhlbHBlcnMgYXJlIGdpdmVuIHByaW9yaXR5LgorCisjIyMg
Q29tcGF0aWJpbGl0eQorCitUaGVyZSBhcmUgYSBmZXcgTXVzdGFjaGUgYmVoYXZpb3JzIHRoYXQg
SGFuZGxlYmFycyBkb2VzIG5vdCBpbXBsZW1lbnQuCistIEhhbmRsZWJhcnMgZGV2aWF0ZXMgZnJv
bSBNdXN0YWNoZSBzbGlnaHRseSBpbiB0aGF0IGl0IGRvZXMgbm90IHBlcmZvcm0gcmVjdXJzaXZl
IGxvb2t1cCBieSBkZWZhdWx0LiBUaGUgY29tcGlsZSB0aW1lIGBjb21wYXRgIGZsYWcgbXVzdCBi
ZSBzZXQgdG8gZW5hYmxlIHRoaXMgZnVuY3Rpb25hbGl0eS4gVXNlcnMgc2hvdWxkIG5vdGUgdGhh
dCB0aGVyZSBpcyBhIHBlcmZvcm1hbmNlIGNvc3QgZm9yIGVuYWJsaW5nIHRoaXMgZmxhZy4gVGhl
IGV4YWN0IGNvc3QgdmFyaWVzIGJ5IHRlbXBsYXRlLCBidXQgaXQncyByZWNvbW1lbmRlZCB0aGF0
IHBlcmZvcm1hbmNlIHNlbnNpdGl2ZSBvcGVyYXRpb25zIHNob3VsZCBhdm9pZCB0aGlzIG1vZGUg
YW5kIGluc3RlYWQgb3B0IGZvciBleHBsaWNpdCBwYXRoIHJlZmVyZW5jZXMuCistIFRoZSBvcHRp
b25hbCBNdXN0YWNoZS1zdHlsZSBsYW1iZGFzIGFyZSBub3Qgc3VwcG9ydGVkLiBJbnN0ZWFkIEhh
bmRsZWJhcnMgcHJvdmlkZXMgaXRzIG93biBsYW1iZGEgcmVzb2x1dGlvbiB0aGF0IGZvbGxvd3Mg
dGhlIGJlaGF2aW9ycyBvZiBoZWxwZXJzLgorLSBBbHRlcm5hdGl2ZSBkZWxpbWl0ZXJzIGFyZSBu
b3Qgc3VwcG9ydGVkLgorCisKK1N1cHBvcnRlZCBFbnZpcm9ubWVudHMKKy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworSGFuZGxlYmFycyBoYXMgYmVlbiBkZXNpZ25lZCB0byB3b3JrIGluIGFueSBF
Q01BU2NyaXB0IDMgZW52aXJvbm1lbnQuIFRoaXMgaW5jbHVkZXMKKworLSBOb2RlLmpzCistIENo
cm9tZQorLSBGaXJlZm94CistIFNhZmFyaSA1KworLSBPcGVyYSAxMSsKKy0gSUUgNisKKworT2xk
ZXIgdmVyc2lvbnMgYW5kIG90aGVyIHJ1bnRpbWVzIGFyZSBsaWtlbHkgdG8gd29yayBidXQgaGF2
ZSBub3QgYmVlbiBmb3JtYWxseQordGVzdGVkLiBUaGUgY29tcGlsZXIgcmVxdWlyZXMgYEpTT04u
c3RyaW5naWZ5YCB0byBiZSBpbXBsZW1lbnRlZCBuYXRpdmVseSBvciB2aWEgYSBwb2x5ZmlsbC4g
SWYgdXNpbmcgdGhlIHByZWNvbXBpbGVyIHRoaXMgaXMgbm90IG5lY2Vzc2FyeS4KKworWyFbU2Vs
ZW5pdW0gVGVzdCBTdGF0dXNdKGh0dHBzOi8vc2F1Y2VsYWJzLmNvbS9icm93c2VyLW1hdHJpeC9o
YW5kbGViYXJzLnN2ZyldKGh0dHBzOi8vc2F1Y2VsYWJzLmNvbS91L2hhbmRsZWJhcnMpCisKK1Bl
cmZvcm1hbmNlCistLS0tLS0tLS0tLQorCitJbiBhIHJvdWdoIHBlcmZvcm1hbmNlIHRlc3QsIHBy
ZWNvbXBpbGVkIEhhbmRsZWJhcnMuanMgdGVtcGxhdGVzIChpbgordGhlIG9yaWdpbmFsIHZlcnNp
b24gb2YgSGFuZGxlYmFycy5qcykgcmVuZGVyZWQgaW4gYWJvdXQgaGFsZiB0aGUKK3RpbWUgb2Yg
TXVzdGFjaGUgdGVtcGxhdGVzLiBJdCB3b3VsZCBiZSBhIHNoYW1lIGlmIGl0IHdlcmUgYW55IG90
aGVyCit3YXksIHNpbmNlIHRoZXkgd2VyZSBwcmVjb21waWxlZCwgYnV0IHRoZSBkaWZmZXJlbmNl
IGluIGFyY2hpdGVjdHVyZQorZG9lcyBoYXZlIHNvbWUgYmlnIHBlcmZvcm1hbmNlIGFkdmFudGFn
ZXMuIEp1c3RpbiBNYXJuZXksIGEuay5hLgorW2dvdGFzY2lpXShodHRwOi8vZ2l0aHViLmNvbS9n
b3Rhc2NpaSksIGNvbmZpcm1lZCB0aGF0IHdpdGggYW4KK1tpbmRlcGVuZGVudCB0ZXN0XShodHRw
Oi8vc29yZXNjb2RlLmNvbS8yMDEwLzA5LzEyL2JlbmNobWFya3MuaHRtbCkuIFRoZQorcmV3cml0
dGVuIEhhbmRsZWJhcnMgKGN1cnJlbnQgdmVyc2lvbikgaXMgZmFzdGVyIHRoYW4gdGhlIG9sZCB2
ZXJzaW9uLAord2l0aCBtYW55IFtwZXJmb3JtYW5jZSB0ZXN0c10oaHR0cHM6Ly90cmF2aXMtY2ku
b3JnL3d5Y2F0cy9oYW5kbGViYXJzLmpzL2J1aWxkcy8zMzM5MjE4MiNMNTM4KSBiZWluZyA1IHRv
IDcgdGltZXMgZmFzdGVyIHRoYW4gdGhlIE11c3RhY2hlIGVxdWl2YWxlbnQuCisKKworVXBncmFk
aW5nCistLS0tLS0tLS0KKworU2VlIFtyZWxlYXNlLW5vdGVzLm1kXShodHRwczovL2dpdGh1Yi5j
b20vd3ljYXRzL2hhbmRsZWJhcnMuanMvYmxvYi9tYXN0ZXIvcmVsZWFzZS1ub3Rlcy5tZCkgZm9y
IHVwZ3JhZGUgbm90ZXMuCisKK0tub3duIElzc3VlcworLS0tLS0tLS0tLS0tCisKK1NlZSBbRkFR
Lm1kXShodHRwczovL2dpdGh1Yi5jb20vd3ljYXRzL2hhbmRsZWJhcnMuanMvYmxvYi9tYXN0ZXIv
RkFRLm1kKSBmb3Iga25vd24gaXNzdWVzIGFuZCBjb21tb24gcGl0ZmFsbHMuCisKKworSGFuZGxl
YmFycyBpbiB0aGUgV2lsZAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisqIFtBc3NlbWJsZV0o
aHR0cDovL2Fzc2VtYmxlLmlvKSwgYnkgW0Bqb25zY2hsaW5rZXJ0XShodHRwczovL2dpdGh1Yi5j
b20vam9uc2NobGlua2VydCkKKyAgYW5kIFtAZG9vd2JdKGh0dHBzOi8vZ2l0aHViLmNvbS9kb293
YiksIGlzIGEgc3RhdGljIHNpdGUgZ2VuZXJhdG9yIHRoYXQgdXNlcyBIYW5kbGViYXJzLmpzCisg
IGFzIGl0cyB0ZW1wbGF0ZSBlbmdpbmUuCisqIFtDb3J5XShodHRwczovL2dpdGh1Yi5jb20vbGVv
L2NvcnkpLCBieSBbQGxlb10oaHR0cHM6Ly9naXRodWIuY29tL2xlbyksIGlzIGFub3RoZXIgdGlu
eSBzdGF0aWMgc2l0ZSBnZW5lcmF0b3IKKyogW0NvU2NoZWR1bGVdKGh0dHA6Ly9jb3NjaGVkdWxl
LmNvbSkgQW4gZWRpdG9yaWFsIGNhbGVuZGFyIGZvciBXb3JkUHJlc3MgdGhhdCB1c2VzIEhhbmRs
ZWJhcnMuanMKKyogW2Rhc2hiYXJzXShodHRwczovL2dpdGh1Yi5jb20vcGlzbXV0ZS9kYXNoYmFy
cykgQSBtb2Rlcm4gaGVscGVyIGxpYnJhcnkgZm9yIEhhbmRsZWJhcnMuanMuCisqIFtFbWJlci5q
c10oaHR0cDovL3d3dy5lbWJlcmpzLmNvbSkgbWFrZXMgSGFuZGxlYmFycy5qcyB0aGUgcHJpbWFy
eSB3YXkgdG8KKyAgc3RydWN0dXJlIHlvdXIgdmlld3MsIGFsc28gd2l0aCBhdXRvbWF0aWMgZGF0
YSBiaW5kaW5nIHN1cHBvcnQuCisqIFtHaG9zdF0oaHR0cHM6Ly9naG9zdC5vcmcvKSBKdXN0IGEg
YmxvZ2dpbmcgcGxhdGZvcm0uCisqIFtoYW5kbGViYXJzX2Fzc2V0c10oaHR0cDovL2dpdGh1Yi5j
b20vbGVzaGlsbC9oYW5kbGViYXJzX2Fzc2V0cyk6IEEgUmFpbHMgQXNzZXQgUGlwZWxpbmUgZ2Vt
CisgIGZyb20gTGVzIEhpbGwgKEBsZXNoaWxsKS4KKyogW2hhbmRsZWJhcnMtaGVscGVyc10oaHR0
cHM6Ly9naXRodWIuY29tL2Fzc2VtYmxlL2hhbmRsZWJhcnMtaGVscGVycykgaXMgYW4gZXh0ZW5z
aXZlIGxpYnJhcnkKKyAgd2l0aCAxMDArIGhhbmRsZWJhcnMgaGVscGVycy4KKyogW2hhbmRsZWJh
cnMtbGF5b3V0c10oaHR0cHM6Ly9naXRodWIuY29tL3NoYW5ub25tb2VsbGVyL2hhbmRsZWJhcnMt
bGF5b3V0cykgaXMgYSBzZXQgb2YgaGVscGVycyB3aGljaCBpbXBsZW1lbnQgZXh0ZW5kaWJsZSBh
bmQgZW1iZWRkYWJsZSBsYXlvdXQgYmxvY2tzIGFzIHNlZW4gaW4gb3RoZXIgcG9wdWxhciB0ZW1w
bGF0aW5nIGxhbmd1YWdlcy4KKyogW2hic10oaHR0cDovL2dpdGh1Yi5jb20vZG9ucGFyay9oYnMp
OiBBbiBFeHByZXNzLmpzIHZpZXcgZW5naW5lIGFkYXB0ZXIgZm9yIEhhbmRsZWJhcnMuanMsCisg
IGZyb20gRG9uIFBhcmsuCisqIFtrb2EtaGJzXShodHRwczovL2dpdGh1Yi5jb20vandpbG0va29h
LWhicyk6IFtrb2FdKGh0dHBzOi8vZ2l0aHViLmNvbS9rb2Fqcy9rb2EpIGdlbmVyYXRvciBiYXNl
ZAorICByZW5kZXJlciBmb3IgSGFuZGxlYmFycy5qcy4KKyogW2pibG90dXNdKGh0dHA6Ly9naXRo
dWIuY29tL2pibG90dXMpIGNyZWF0ZWQgW2h0dHA6Ly90cnloYW5kbGViYXJzanMuY29tXShodHRw
Oi8vdHJ5aGFuZGxlYmFyc2pzLmNvbSkKKyAgZm9yIGFueW9uZSB3aG8gd291bGQgbGlrZSB0byB0
cnkgb3V0IEhhbmRsZWJhcnMuanMgaW4gdGhlaXIgYnJvd3Nlci4KKyogW2pRdWVyeSBwbHVnaW5d
KGh0dHA6Ly83MTEwNC5naXRodWIuaW8vanF1ZXJ5LWhhbmRsZWJhcnMvKTogYWxsb3dzIHlvdSB0
byB1c2UKKyAgSGFuZGxlYmFycy5qcyB3aXRoIFtqUXVlcnldKGh0dHA6Ly9qcXVlcnkuY29tLyku
CisqIFtMdW1iYXJdKGh0dHA6Ly93YWxtYXJ0bGFicy5naXRodWIuaW8vbHVtYmFyKSBwcm92aWRl
cyBlYXN5IG1vZHVsZS1iYXNlZCB0ZW1wbGF0ZSBtYW5hZ2VtZW50IGZvcgorICBoYW5kbGViYXJz
IHByb2plY3RzLgorKiBbTWFyaW9uZXR0ZS5IYW5kbGViYXJzXShodHRwczovL2dpdGh1Yi5jb20v
aGFzaGNoYW5nZS9tYXJpb25ldHRlLmhhbmRsZWJhcnMpIGFkZHMgc3VwcG9ydCBmb3IgSGFuZGxl
YmFycyBhbmQgTXVzdGFjaGUgdGVtcGxhdGVzIHRvIE1hcmlvbmV0dGUuCisqIFtzYW1teS5qc10o
aHR0cDovL2dpdGh1Yi5jb20vcXVpcmtleS9zYW1teSkgYnkgQWFyb24gUXVpbnQsIGEuay5hLiBx
dWlya2V5LAorICBzdXBwb3J0cyBIYW5kbGViYXJzLmpzIGFzIG9uZSBvZiBpdHMgdGVtcGxhdGUg
cGx1Z2lucy4KKyogW1Nwcm91dENvcmVdKGh0dHA6Ly93d3cuc3Byb3V0Y29yZS5jb20pIHVzZXMg
SGFuZGxlYmFycy5qcyBhcyBpdHMgbWFpbgorICB0ZW1wbGF0aW5nIGVuZ2luZSwgZXh0ZW5kaW5n
IGl0IHdpdGggYXV0b21hdGljIGRhdGEgYmluZGluZyBzdXBwb3J0LgorKiBbWVVJXShodHRwOi8v
eXVpbGlicmFyeS5jb20veXVpL2RvY3MvaGFuZGxlYmFycy8pIGltcGxlbWVudHMgYSBwb3J0IG9m
IGhhbmRsZWJhcnMKKyogW1N3YWddKGh0dHBzOi8vZ2l0aHViLmNvbS9lbHZpbmcvc3dhZykgYnkg
W0BlbHZpbmddKGh0dHBzOi8vZ2l0aHViLmNvbS9lbHZpbmcpIGlzIGEgZ3Jvd2luZyBjb2xsZWN0
aW9uIG9mIGhlbHBlcnMgZm9yIGhhbmRsZWJhcnMuanMuIEdpdmUgeW91ciBoYW5kbGViYXJzLmpz
IHRlbXBsYXRlcyBzb21lIHN3YWcgc29uIQorKiBbRE9NQmFyc10oaHR0cHM6Ly9naXRodWIuY29t
L2JsYWtlZW1icmV5L2RvbWJhcnMpIGlzIGEgRE9NLWJhc2VkIHRlbXBsYXRpbmcgZW5naW5lIGJ1
aWx0IG9uIHRoZSBIYW5kbGViYXJzIHBhcnNlciBhbmQgcnVudGltZSAqKkRFUFJFQ0FURUQqKgor
KiBbcHJvbWlzZWQtaGFuZGxlYmFyc10oaHR0cHM6Ly9naXRodWIuY29tL25rbmFwcC9wcm9taXNl
ZC1oYW5kbGViYXJzKSBpcyBhIHdyYXBwZXIgZm9yIEhhbmRsZWJhcnMgdGhhdCBhbGxvd3MgaGVs
cGVycyB0byByZXR1cm4gUHJvbWlzZXMuCisqIFtqdXN0LWhhbmRsZWJhcnMtaGVscGVyc10oaHR0
cHM6Ly9naXRodWIuY29tL2xlYXBmcm9ndGVjaG5vbG9neS9qdXN0LWhhbmRsZWJhcnMtaGVscGVy
cykgQSBmdWxseSB0ZXN0ZWQgbGlnaHR3ZWlnaHQgcGFja2FnZSB3aXRoIGNvbW1vbiBIYW5kbGVi
YXJzIGhlbHBlcnMuCisKK0V4dGVybmFsIFJlc291cmNlcworLS0tLS0tLS0tLS0tLS0tLS0tCisK
KyogW0dpc3QgYWJvdXQgU3luY2hyb25vdXMgYW5kIGFzeW5jaHJvbm91cyBsb2FkaW5nIG9mIGV4
dGVybmFsIGhhbmRsZWJhcnMgdGVtcGxhdGVzXShodHRwczovL2dpc3QuZ2l0aHViLmNvbS8yMjg3
MDcwKQorCitIYXZlIGEgcHJvamVjdCB1c2luZyBIYW5kbGViYXJzPyBTZW5kIHVzIGEgW3B1bGwg
cmVxdWVzdF1bcHVsbC1yZXF1ZXN0XSEKKworTGljZW5zZQorLS0tLS0tLQorSGFuZGxlYmFycy5q
cyBpcyByZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuCisKK1twdWxsLXJlcXVlc3RdOiBo
dHRwczovL2dpdGh1Yi5jb20vd3ljYXRzL2hhbmRsZWJhcnMuanMvcHVsbC9uZXcvbWFzdGVyCmRp
ZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvYmlu
L2hhbmRsZWJhcnMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMv
YmluL2hhbmRsZWJhcnMKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzY0NWFkZjM2NzcyNTA1ZDlkODgwODFjMGZlZDY1
NzU1NjcyZjAzMgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21v
ZHVsZXMvaGFuZGxlYmFycy9iaW4vaGFuZGxlYmFycwpAQCAtMCwwICsxLDEyOCBAQAorIyEvdXNy
L2Jpbi9lbnYgbm9kZQorCit2YXIgb3B0aW1pc3QgPSByZXF1aXJlKCdvcHRpbWlzdCcpCisgICAg
LnVzYWdlKCdQcmVjb21waWxlIGhhbmRsZWJhciB0ZW1wbGF0ZXMuXG5Vc2FnZTogJDAgW3RlbXBs
YXRlfGRpcmVjdG9yeV0uLi4nLCB7CisgICAgICAnZic6IHsKKyAgICAgICAgJ3R5cGUnOiAnc3Ry
aW5nJywKKyAgICAgICAgJ2Rlc2NyaXB0aW9uJzogJ091dHB1dCBGaWxlJywKKyAgICAgICAgJ2Fs
aWFzJzogJ291dHB1dCcKKyAgICAgIH0sCisgICAgICAnbWFwJzogeworICAgICAgICAndHlwZSc6
ICdzdHJpbmcnLAorICAgICAgICAnZGVzY3JpcHRpb24nOiAnU291cmNlIE1hcCBGaWxlJworICAg
ICAgfSwKKyAgICAgICdhJzogeworICAgICAgICAndHlwZSc6ICdib29sZWFuJywKKyAgICAgICAg
J2Rlc2NyaXB0aW9uJzogJ0V4cG9ydHMgYW1kIHN0eWxlIChyZXF1aXJlLmpzKScsCisgICAgICAg
ICdhbGlhcyc6ICdhbWQnCisgICAgICB9LAorICAgICAgJ2MnOiB7CisgICAgICAgICd0eXBlJzog
J3N0cmluZycsCisgICAgICAgICdkZXNjcmlwdGlvbic6ICdFeHBvcnRzIENvbW1vbkpTIHN0eWxl
LCBwYXRoIHRvIEhhbmRsZWJhcnMgbW9kdWxlJywKKyAgICAgICAgJ2FsaWFzJzogJ2NvbW1vbmpz
JywKKyAgICAgICAgJ2RlZmF1bHQnOiBudWxsCisgICAgICB9LAorICAgICAgJ2gnOiB7CisgICAg
ICAgICd0eXBlJzogJ3N0cmluZycsCisgICAgICAgICdkZXNjcmlwdGlvbic6ICdQYXRoIHRvIGhh
bmRsZWJhci5qcyAob25seSB2YWxpZCBmb3IgYW1kLXN0eWxlKScsCisgICAgICAgICdhbGlhcyc6
ICdoYW5kbGViYXJQYXRoJywKKyAgICAgICAgJ2RlZmF1bHQnOiAnJworICAgICAgfSwKKyAgICAg
ICdrJzogeworICAgICAgICAndHlwZSc6ICdzdHJpbmcnLAorICAgICAgICAnZGVzY3JpcHRpb24n
OiAnS25vd24gaGVscGVycycsCisgICAgICAgICdhbGlhcyc6ICdrbm93bicKKyAgICAgIH0sCisg
ICAgICAnbyc6IHsKKyAgICAgICAgJ3R5cGUnOiAnYm9vbGVhbicsCisgICAgICAgICdkZXNjcmlw
dGlvbic6ICdLbm93biBoZWxwZXJzIG9ubHknLAorICAgICAgICAnYWxpYXMnOiAna25vd25Pbmx5
JworICAgICAgfSwKKyAgICAgICdtJzogeworICAgICAgICAndHlwZSc6ICdib29sZWFuJywKKyAg
ICAgICAgJ2Rlc2NyaXB0aW9uJzogJ01pbmltaXplIG91dHB1dCcsCisgICAgICAgICdhbGlhcyc6
ICdtaW4nCisgICAgICB9LAorICAgICAgJ24nOiB7CisgICAgICAgICd0eXBlJzogJ3N0cmluZycs
CisgICAgICAgICdkZXNjcmlwdGlvbic6ICdUZW1wbGF0ZSBuYW1lc3BhY2UnLAorICAgICAgICAn
YWxpYXMnOiAnbmFtZXNwYWNlJywKKyAgICAgICAgJ2RlZmF1bHQnOiAnSGFuZGxlYmFycy50ZW1w
bGF0ZXMnCisgICAgICB9LAorICAgICAgJ3MnOiB7CisgICAgICAgICd0eXBlJzogJ2Jvb2xlYW4n
LAorICAgICAgICAnZGVzY3JpcHRpb24nOiAnT3V0cHV0IHRlbXBsYXRlIGZ1bmN0aW9uIG9ubHku
JywKKyAgICAgICAgJ2FsaWFzJzogJ3NpbXBsZScKKyAgICAgIH0sCisgICAgICAnTic6IHsKKyAg
ICAgICAgJ3R5cGUnOiAnc3RyaW5nJywKKyAgICAgICAgJ2Rlc2NyaXB0aW9uJzogJ05hbWUgb2Yg
cGFzc2VkIHN0cmluZyB0ZW1wbGF0ZXMuIE9wdGlvbmFsIGlmIHJ1bm5pbmcgaW4gYSBzaW1wbGUg
bW9kZS4gUmVxdWlyZWQgd2hlbiBvcGVyYXRpbmcgb24gbXVsdGlwbGUgdGVtcGxhdGVzLicsCisg
ICAgICAgICdhbGlhcyc6ICduYW1lJworICAgICAgfSwKKyAgICAgICdpJzogeworICAgICAgICAn
dHlwZSc6ICdzdHJpbmcnLAorICAgICAgICAnZGVzY3JpcHRpb24nOiAnR2VuZXJhdGVzIGEgdGVt
cGxhdGUgZnJvbSB0aGUgcGFzc2VkIENMSSBhcmd1bWVudC5cbiItIiBpcyB0cmVhdGVkIGFzIGEg
c3BlY2lhbCB2YWx1ZSBhbmQgY2F1c2VzIHN0ZGluIHRvIGJlIHJlYWQgZm9yIHRoZSB0ZW1wbGF0
ZSB2YWx1ZS4nLAorICAgICAgICAnYWxpYXMnOiAnc3RyaW5nJworICAgICAgfSwKKyAgICAgICdy
JzogeworICAgICAgICAndHlwZSc6ICdzdHJpbmcnLAorICAgICAgICAnZGVzY3JpcHRpb24nOiAn
VGVtcGxhdGUgcm9vdC4gQmFzZSB2YWx1ZSB0aGF0IHdpbGwgYmUgc3RyaXBwZWQgZnJvbSB0ZW1w
bGF0ZSBuYW1lcy4nLAorICAgICAgICAnYWxpYXMnOiAncm9vdCcKKyAgICAgIH0sCisgICAgICAn
cCc6IHsKKyAgICAgICAgJ3R5cGUnOiAnYm9vbGVhbicsCisgICAgICAgICdkZXNjcmlwdGlvbic6
ICdDb21waWxpbmcgYSBwYXJ0aWFsIHRlbXBsYXRlJywKKyAgICAgICAgJ2FsaWFzJzogJ3BhcnRp
YWwnCisgICAgICB9LAorICAgICAgJ2QnOiB7CisgICAgICAgICd0eXBlJzogJ2Jvb2xlYW4nLAor
ICAgICAgICAnZGVzY3JpcHRpb24nOiAnSW5jbHVkZSBkYXRhIHdoZW4gY29tcGlsaW5nJywKKyAg
ICAgICAgJ2FsaWFzJzogJ2RhdGEnCisgICAgICB9LAorICAgICAgJ2UnOiB7CisgICAgICAgICd0
eXBlJzogJ3N0cmluZycsCisgICAgICAgICdkZXNjcmlwdGlvbic6ICdUZW1wbGF0ZSBleHRlbnNp
b24uJywKKyAgICAgICAgJ2FsaWFzJzogJ2V4dGVuc2lvbicsCisgICAgICAgICdkZWZhdWx0Jzog
J2hhbmRsZWJhcnMnCisgICAgICB9LAorICAgICAgJ2InOiB7CisgICAgICAgICd0eXBlJzogJ2Jv
b2xlYW4nLAorICAgICAgICAnZGVzY3JpcHRpb24nOiAnUmVtb3ZlcyB0aGUgQk9NIChCeXRlIE9y
ZGVyIE1hcmspIGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgdGVtcGxhdGVzLicsCisgICAgICAg
ICdhbGlhcyc6ICdib20nCisgICAgICB9LAorICAgICAgJ3YnOiB7CisgICAgICAgICd0eXBlJzog
J2Jvb2xlYW4nLAorICAgICAgICAnZGVzY3JpcHRpb24nOiAnUHJpbnRzIHRoZSBjdXJyZW50IGNv
bXBpbGVyIHZlcnNpb24nLAorICAgICAgICAnYWxpYXMnOiAndmVyc2lvbicKKyAgICAgIH0sCisK
KyAgICAgICdoZWxwJzogeworICAgICAgICAndHlwZSc6ICdib29sZWFuJywKKyAgICAgICAgJ2Rl
c2NyaXB0aW9uJzogJ091dHB1dHMgdGhpcyBtZXNzYWdlJworICAgICAgfQorICAgIH0pCisKKyAg
ICAud3JhcCgxMjApCisgICAgLmNoZWNrKGZ1bmN0aW9uKGFyZ3YpIHsKKyAgICAgIGlmIChhcmd2
LnZlcnNpb24pIHsKKyAgICAgICAgcmV0dXJuOworICAgICAgfQorICAgIH0pOworCisKK3ZhciBh
cmd2ID0gb3B0aW1pc3QuYXJndjsKK2FyZ3YuZmlsZXMgPSBhcmd2Ll87CitkZWxldGUgYXJndi5f
OworCit2YXIgUHJlY29tcGlsZXIgPSByZXF1aXJlKCcuLi9kaXN0L2Nqcy9wcmVjb21waWxlcicp
OworUHJlY29tcGlsZXIubG9hZFRlbXBsYXRlcyhhcmd2LCBmdW5jdGlvbihlcnIsIG9wdHMpIHsK
KyAgaWYgKGVycikgeworICAgIHRocm93IGVycjsKKyAgfQorCisgIGlmIChvcHRzLmhlbHAgfHwg
KCFvcHRzLnRlbXBsYXRlcy5sZW5ndGggJiYgIW9wdHMudmVyc2lvbikpIHsKKyAgICBvcHRpbWlz
dC5zaG93SGVscCgpOworICB9IGVsc2UgeworICAgIFByZWNvbXBpbGVyLmNsaShvcHRzKTsKKyAg
fQorfSk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRs
ZWJhcnMvZGlzdC9hbWQvaGFuZGxlYmFycy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21v
ZHVsZXMvaGFuZGxlYmFycy9kaXN0L2FtZC9oYW5kbGViYXJzLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE5ODAw
YmIzZTYyZmZlMzg0OTkzMTUyZjVjMzA0NDcxYmM0N2Y3MjcKLS0tIC9kZXYvbnVsbAorKysgYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9hbWQvaGFuZGxl
YmFycy5qcwpAQCAtMCwwICsxLDUxIEBACitkZWZpbmUoWydleHBvcnRzJywgJ21vZHVsZScsICcu
L2hhbmRsZWJhcnMucnVudGltZScsICcuL2hhbmRsZWJhcnMvY29tcGlsZXIvYXN0JywgJy4vaGFu
ZGxlYmFycy9jb21waWxlci9iYXNlJywgJy4vaGFuZGxlYmFycy9jb21waWxlci9jb21waWxlcics
ICcuL2hhbmRsZWJhcnMvY29tcGlsZXIvamF2YXNjcmlwdC1jb21waWxlcicsICcuL2hhbmRsZWJh
cnMvY29tcGlsZXIvdmlzaXRvcicsICcuL2hhbmRsZWJhcnMvbm8tY29uZmxpY3QnXSwgZnVuY3Rp
b24gKGV4cG9ydHMsIG1vZHVsZSwgX2hhbmRsZWJhcnNSdW50aW1lLCBfaGFuZGxlYmFyc0NvbXBp
bGVyQXN0LCBfaGFuZGxlYmFyc0NvbXBpbGVyQmFzZSwgX2hhbmRsZWJhcnNDb21waWxlckNvbXBp
bGVyLCBfaGFuZGxlYmFyc0NvbXBpbGVySmF2YXNjcmlwdENvbXBpbGVyLCBfaGFuZGxlYmFyc0Nv
bXBpbGVyVmlzaXRvciwgX2hhbmRsZWJhcnNOb0NvbmZsaWN0KSB7CisgICd1c2Ugc3RyaWN0JzsK
KworICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dAorCisgIGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWly
ZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdk
ZWZhdWx0Jzogb2JqIH07IH0KKworICB2YXIgX3J1bnRpbWUgPSBfaW50ZXJvcFJlcXVpcmVEZWZh
dWx0KF9oYW5kbGViYXJzUnVudGltZSk7CisKKyAgLy8gQ29tcGlsZXIgaW1wb3J0cworCisgIHZh
ciBfQVNUID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaGFuZGxlYmFyc0NvbXBpbGVyQXN0KTsK
KworICB2YXIgX0phdmFTY3JpcHRDb21waWxlciA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2hh
bmRsZWJhcnNDb21waWxlckphdmFzY3JpcHRDb21waWxlcik7CisKKyAgdmFyIF9WaXNpdG9yID0g
X2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaGFuZGxlYmFyc0NvbXBpbGVyVmlzaXRvcik7CisKKyAg
dmFyIF9ub0NvbmZsaWN0ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaGFuZGxlYmFyc05vQ29u
ZmxpY3QpOworCisgIHZhciBfY3JlYXRlID0gX3J1bnRpbWVbJ2RlZmF1bHQnXS5jcmVhdGU7Cisg
IGZ1bmN0aW9uIGNyZWF0ZSgpIHsKKyAgICB2YXIgaGIgPSBfY3JlYXRlKCk7CisKKyAgICBoYi5j
b21waWxlID0gZnVuY3Rpb24gKGlucHV0LCBvcHRpb25zKSB7CisgICAgICByZXR1cm4gX2hhbmRs
ZWJhcnNDb21waWxlckNvbXBpbGVyLmNvbXBpbGUoaW5wdXQsIG9wdGlvbnMsIGhiKTsKKyAgICB9
OworICAgIGhiLnByZWNvbXBpbGUgPSBmdW5jdGlvbiAoaW5wdXQsIG9wdGlvbnMpIHsKKyAgICAg
IHJldHVybiBfaGFuZGxlYmFyc0NvbXBpbGVyQ29tcGlsZXIucHJlY29tcGlsZShpbnB1dCwgb3B0
aW9ucywgaGIpOworICAgIH07CisKKyAgICBoYi5BU1QgPSBfQVNUWydkZWZhdWx0J107CisgICAg
aGIuQ29tcGlsZXIgPSBfaGFuZGxlYmFyc0NvbXBpbGVyQ29tcGlsZXIuQ29tcGlsZXI7CisgICAg
aGIuSmF2YVNjcmlwdENvbXBpbGVyID0gX0phdmFTY3JpcHRDb21waWxlclsnZGVmYXVsdCddOwor
ICAgIGhiLlBhcnNlciA9IF9oYW5kbGViYXJzQ29tcGlsZXJCYXNlLnBhcnNlcjsKKyAgICBoYi5w
YXJzZSA9IF9oYW5kbGViYXJzQ29tcGlsZXJCYXNlLnBhcnNlOworCisgICAgcmV0dXJuIGhiOwor
ICB9CisKKyAgdmFyIGluc3QgPSBjcmVhdGUoKTsKKyAgaW5zdC5jcmVhdGUgPSBjcmVhdGU7CisK
KyAgX25vQ29uZmxpY3RbJ2RlZmF1bHQnXShpbnN0KTsKKworICBpbnN0LlZpc2l0b3IgPSBfVmlz
aXRvclsnZGVmYXVsdCddOworCisgIGluc3RbJ2RlZmF1bHQnXSA9IGluc3Q7CisKKyAgbW9kdWxl
LmV4cG9ydHMgPSBpbnN0OworfSk7CisvLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0
aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVM
MnhwWWk5b1lXNWtiR1ZpWVhKekxtcHpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9p
STdPenM3T3pzN096czdPenM3T3pzN096czdRVUZYUVN4TlFVRkpMRTlCUVU4c1IwRkJSeXh2UWtG
QlVTeE5RVUZOTEVOQlFVTTdRVUZETjBJc1YwRkJVeXhOUVVGTkxFZEJRVWM3UVVGRGFFSXNVVUZC
U1N4RlFVRkZMRWRCUVVjc1QwRkJUeXhGUVVGRkxFTkJRVU03TzBGQlJXNUNMRTFCUVVVc1EwRkJR
eXhQUVVGUExFZEJRVWNzVlVGQlV5eExRVUZMTEVWQlFVVXNUMEZCVHl4RlFVRkZPMEZCUTNCRExH
RkJRVThzTkVKQldGRXNUMEZCVHl4RFFWZFFMRXRCUVVzc1JVRkJSU3hQUVVGUExFVkJRVVVzUlVG
QlJTeERRVUZETEVOQlFVTTdTMEZEY0VNc1EwRkJRenRCUVVOR0xFMUJRVVVzUTBGQlF5eFZRVUZW
TEVkQlFVY3NWVUZCVXl4TFFVRkxMRVZCUVVVc1QwRkJUeXhGUVVGRk8wRkJRM1pETEdGQlFVOHNO
RUpCWkdsQ0xGVkJRVlVzUTBGamFFSXNTMEZCU3l4RlFVRkZMRTlCUVU4c1JVRkJSU3hGUVVGRkxF
TkJRVU1zUTBGQlF6dExRVU4yUXl4RFFVRkRPenRCUVVWR0xFMUJRVVVzUTBGQlF5eEhRVUZITEd0
Q1FVRk5MRU5CUVVNN1FVRkRZaXhOUVVGRkxFTkJRVU1zVVVGQlVTd3JRa0ZzUWtvc1VVRkJVU3hC
UVd0Q1R5eERRVUZETzBGQlEzWkNMRTFCUVVVc1EwRkJReXhyUWtGQmEwSXNhVU5CUVhGQ0xFTkJR
VU03UVVGRE0wTXNUVUZCUlN4RFFVRkRMRTFCUVUwc01rSkJja0pHTEUxQlFVMHNRVUZ4UWtzc1Ew
RkJRenRCUVVOdVFpeE5RVUZGTEVOQlFVTXNTMEZCU3l3eVFrRjBRbWxDTEV0QlFVc3NRVUZ6UW1R
c1EwRkJRenM3UVVGRmFrSXNWMEZCVHl4RlFVRkZMRU5CUVVNN1IwRkRXRHM3UVVGRlJDeE5RVUZK
TEVsQlFVa3NSMEZCUnl4TlFVRk5MRVZCUVVVc1EwRkJRenRCUVVOd1FpeE5RVUZKTEVOQlFVTXNU
VUZCVFN4SFFVRkhMRTFCUVUwc1EwRkJRenM3UVVGRmNrSXNlVUpCUVZjc1NVRkJTU3hEUVVGRExF
TkJRVU03TzBGQlJXcENMRTFCUVVrc1EwRkJReXhQUVVGUExITkNRVUZWTEVOQlFVTTdPMEZCUlha
Q0xFMUJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNN08yMUNRVVZT
TEVsQlFVa2lMQ0ptYVd4bElqb2lhR0Z1Wkd4bFltRnljeTVxY3lJc0luTnZkWEpqWlhORGIyNTBa
VzUwSWpwYkltbHRjRzl5ZENCeWRXNTBhVzFsSUdaeWIyMGdKeTR2YUdGdVpHeGxZbUZ5Y3k1eWRX
NTBhVzFsSnp0Y2JseHVMeThnUTI5dGNHbHNaWElnYVcxd2IzSjBjMXh1YVcxd2IzSjBJRUZUVkNC
bWNtOXRJQ2N1TDJoaGJtUnNaV0poY25NdlkyOXRjR2xzWlhJdllYTjBKenRjYm1sdGNHOXlkQ0I3
SUhCaGNuTmxjaUJoY3lCUVlYSnpaWElzSUhCaGNuTmxJSDBnWm5KdmJTQW5MaTlvWVc1a2JHVmlZ
WEp6TDJOdmJYQnBiR1Z5TDJKaGMyVW5PMXh1YVcxd2IzSjBJSHNnUTI5dGNHbHNaWElzSUdOdmJY
QnBiR1VzSUhCeVpXTnZiWEJwYkdVZ2ZTQm1jbTl0SUNjdUwyaGhibVJzWldKaGNuTXZZMjl0Y0ds
c1pYSXZZMjl0Y0dsc1pYSW5PMXh1YVcxd2IzSjBJRXBoZG1GVFkzSnBjSFJEYjIxd2FXeGxjaUJt
Y205dElDY3VMMmhoYm1Sc1pXSmhjbk12WTI5dGNHbHNaWEl2YW1GMllYTmpjbWx3ZEMxamIyMXdh
V3hsY2ljN1hHNXBiWEJ2Y25RZ1ZtbHphWFJ2Y2lCbWNtOXRJQ2N1TDJoaGJtUnNaV0poY25Ndlky
OXRjR2xzWlhJdmRtbHphWFJ2Y2ljN1hHNWNibWx0Y0c5eWRDQnViME52Ym1ac2FXTjBJR1p5YjIw
Z0p5NHZhR0Z1Wkd4bFltRnljeTl1YnkxamIyNW1iR2xqZENjN1hHNWNibXhsZENCZlkzSmxZWFJs
SUQwZ2NuVnVkR2x0WlM1amNtVmhkR1U3WEc1bWRXNWpkR2x2YmlCamNtVmhkR1VvS1NCN1hHNGdJ
R3hsZENCb1lpQTlJRjlqY21WaGRHVW9LVHRjYmx4dUlDQm9ZaTVqYjIxd2FXeGxJRDBnWm5WdVkz
UnBiMjRvYVc1d2RYUXNJRzl3ZEdsdmJuTXBJSHRjYmlBZ0lDQnlaWFIxY200Z1kyOXRjR2xzWlNo
cGJuQjFkQ3dnYjNCMGFXOXVjeXdnYUdJcE8xeHVJQ0I5TzF4dUlDQm9ZaTV3Y21WamIyMXdhV3hs
SUQwZ1puVnVZM1JwYjI0b2FXNXdkWFFzSUc5d2RHbHZibk1wSUh0Y2JpQWdJQ0J5WlhSMWNtNGdj
SEpsWTI5dGNHbHNaU2hwYm5CMWRDd2diM0IwYVc5dWN5d2dhR0lwTzF4dUlDQjlPMXh1WEc0Z0lH
aGlMa0ZUVkNBOUlFRlRWRHRjYmlBZ2FHSXVRMjl0Y0dsc1pYSWdQU0JEYjIxd2FXeGxjanRjYmlB
Z2FHSXVTbUYyWVZOamNtbHdkRU52YlhCcGJHVnlJRDBnU21GMllWTmpjbWx3ZEVOdmJYQnBiR1Z5
TzF4dUlDQm9ZaTVRWVhKelpYSWdQU0JRWVhKelpYSTdYRzRnSUdoaUxuQmhjbk5sSUQwZ2NHRnlj
MlU3WEc1Y2JpQWdjbVYwZFhKdUlHaGlPMXh1ZlZ4dVhHNXNaWFFnYVc1emRDQTlJR055WldGMFpT
Z3BPMXh1YVc1emRDNWpjbVZoZEdVZ1BTQmpjbVZoZEdVN1hHNWNibTV2UTI5dVpteHBZM1FvYVc1
emRDazdYRzVjYm1sdWMzUXVWbWx6YVhSdmNpQTlJRlpwYzJsMGIzSTdYRzVjYm1sdWMzUmJKMlJs
Wm1GMWJIUW5YU0E5SUdsdWMzUTdYRzVjYm1WNGNHOXlkQ0JrWldaaGRXeDBJR2x1YzNRN1hHNGlY
WDA9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJh
cnMvZGlzdC9hbWQvaGFuZGxlYmFycy5ydW50aW1lLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25v
ZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvYW1kL2hhbmRsZWJhcnMucnVudGltZS5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42MmU1NjNjMWU0NzY1NDQzNmUyZThkMjk3Y2UxNDVmNjg5OWMxOTZhCi0tLSAvZGV2
L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rp
c3QvYW1kL2hhbmRsZWJhcnMucnVudGltZS5qcwpAQCAtMCwwICsxLDQ0IEBACitkZWZpbmUoWydl
eHBvcnRzJywgJ21vZHVsZScsICcuL2hhbmRsZWJhcnMvYmFzZScsICcuL2hhbmRsZWJhcnMvc2Fm
ZS1zdHJpbmcnLCAnLi9oYW5kbGViYXJzL2V4Y2VwdGlvbicsICcuL2hhbmRsZWJhcnMvdXRpbHMn
LCAnLi9oYW5kbGViYXJzL3J1bnRpbWUnLCAnLi9oYW5kbGViYXJzL25vLWNvbmZsaWN0J10sIGZ1
bmN0aW9uIChleHBvcnRzLCBtb2R1bGUsIF9oYW5kbGViYXJzQmFzZSwgX2hhbmRsZWJhcnNTYWZl
U3RyaW5nLCBfaGFuZGxlYmFyc0V4Y2VwdGlvbiwgX2hhbmRsZWJhcnNVdGlscywgX2hhbmRsZWJh
cnNSdW50aW1lLCBfaGFuZGxlYmFyc05vQ29uZmxpY3QpIHsKKyAgJ3VzZSBzdHJpY3QnOworCisg
IC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0CisKKyAgZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVm
YXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1
bHQnOiBvYmogfTsgfQorCisgIC8vIEVhY2ggb2YgdGhlc2UgYXVnbWVudCB0aGUgSGFuZGxlYmFy
cyBvYmplY3QuIE5vIG5lZWQgdG8gc2V0dXAgaGVyZS4KKyAgLy8gKFRoaXMgaXMgZG9uZSB0byBl
YXNpbHkgc2hhcmUgY29kZSBiZXR3ZWVuIGNvbW1vbmpzIGFuZCBicm93c2UgZW52cykKKworICB2
YXIgX1NhZmVTdHJpbmcgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9oYW5kbGViYXJzU2FmZVN0
cmluZyk7CisKKyAgdmFyIF9FeGNlcHRpb24gPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9oYW5k
bGViYXJzRXhjZXB0aW9uKTsKKworICB2YXIgX25vQ29uZmxpY3QgPSBfaW50ZXJvcFJlcXVpcmVE
ZWZhdWx0KF9oYW5kbGViYXJzTm9Db25mbGljdCk7CisKKyAgLy8gRm9yIGNvbXBhdGliaWxpdHkg
YW5kIHVzYWdlIG91dHNpZGUgb2YgbW9kdWxlIHN5c3RlbXMsIG1ha2UgdGhlIEhhbmRsZWJhcnMg
b2JqZWN0IGEgbmFtZXNwYWNlCisgIGZ1bmN0aW9uIGNyZWF0ZSgpIHsKKyAgICB2YXIgaGIgPSBu
ZXcgX2hhbmRsZWJhcnNCYXNlLkhhbmRsZWJhcnNFbnZpcm9ubWVudCgpOworCisgICAgX2hhbmRs
ZWJhcnNVdGlscy5leHRlbmQoaGIsIF9oYW5kbGViYXJzQmFzZSk7CisgICAgaGIuU2FmZVN0cmlu
ZyA9IF9TYWZlU3RyaW5nWydkZWZhdWx0J107CisgICAgaGIuRXhjZXB0aW9uID0gX0V4Y2VwdGlv
blsnZGVmYXVsdCddOworICAgIGhiLlV0aWxzID0gX2hhbmRsZWJhcnNVdGlsczsKKyAgICBoYi5l
c2NhcGVFeHByZXNzaW9uID0gX2hhbmRsZWJhcnNVdGlscy5lc2NhcGVFeHByZXNzaW9uOworCisg
ICAgaGIuVk0gPSBfaGFuZGxlYmFyc1J1bnRpbWU7CisgICAgaGIudGVtcGxhdGUgPSBmdW5jdGlv
biAoc3BlYykgeworICAgICAgcmV0dXJuIF9oYW5kbGViYXJzUnVudGltZS50ZW1wbGF0ZShzcGVj
LCBoYik7CisgICAgfTsKKworICAgIHJldHVybiBoYjsKKyAgfQorCisgIHZhciBpbnN0ID0gY3Jl
YXRlKCk7CisgIGluc3QuY3JlYXRlID0gY3JlYXRlOworCisgIF9ub0NvbmZsaWN0WydkZWZhdWx0
J10oaW5zdCk7CisKKyAgaW5zdFsnZGVmYXVsdCddID0gaW5zdDsKKworICBtb2R1bGUuZXhwb3J0
cyA9IGluc3Q7Cit9KTsKKy8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNv
bjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUwyeHBZaTlv
WVc1a2JHVmlZWEp6TG5KMWJuUnBiV1V1YW5NaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5j
eUk2SWpzN096czdPenM3T3pzN096czdPenM3UVVGWlFTeFhRVUZUTEUxQlFVMHNSMEZCUnp0QlFV
Tm9RaXhSUVVGSkxFVkJRVVVzUjBGQlJ5eEpRVUZKTEdkQ1FVRkxMSEZDUVVGeFFpeEZRVUZGTEVO
QlFVTTdPMEZCUlRGRExIRkNRVUZOTEUxQlFVMHNRMEZCUXl4RlFVRkZMR3RDUVVGUExFTkJRVU03
UVVGRGRrSXNUVUZCUlN4RFFVRkRMRlZCUVZVc2VVSkJRV0VzUTBGQlF6dEJRVU16UWl4TlFVRkZM
RU5CUVVNc1UwRkJVeXgzUWtGQldTeERRVUZETzBGQlEzcENMRTFCUVVVc1EwRkJReXhMUVVGTExH
MUNRVUZSTEVOQlFVTTdRVUZEYWtJc1RVRkJSU3hEUVVGRExHZENRVUZuUWl4SFFVRkhMR2xDUVVG
TkxHZENRVUZuUWl4RFFVRkRPenRCUVVVM1F5eE5RVUZGTEVOQlFVTXNSVUZCUlN4eFFrRkJWU3hE
UVVGRE8wRkJRMmhDTEUxQlFVVXNRMEZCUXl4UlFVRlJMRWRCUVVjc1ZVRkJVeXhKUVVGSkxFVkJR
VVU3UVVGRE0wSXNZVUZCVHl4dFFrRkJVU3hSUVVGUkxFTkJRVU1zU1VGQlNTeEZRVUZGTEVWQlFV
VXNRMEZCUXl4RFFVRkRPMHRCUTI1RExFTkJRVU03TzBGQlJVWXNWMEZCVHl4RlFVRkZMRU5CUVVN
N1IwRkRXRHM3UVVGRlJDeE5RVUZKTEVsQlFVa3NSMEZCUnl4TlFVRk5MRVZCUVVVc1EwRkJRenRC
UVVOd1FpeE5RVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRTFCUVUwc1EwRkJRenM3UVVGRmNrSXNl
VUpCUVZjc1NVRkJTU3hEUVVGRExFTkJRVU03TzBGQlJXcENMRTFCUVVrc1EwRkJReXhUUVVGVExF
TkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTTdPMjFDUVVWU0xFbEJRVWtpTENKbWFXeGxJam9pYUdG
dVpHeGxZbUZ5Y3k1eWRXNTBhVzFsTG1weklpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3
YjNKMElDb2dZWE1nWW1GelpTQm1jbTl0SUNjdUwyaGhibVJzWldKaGNuTXZZbUZ6WlNjN1hHNWNi
aTh2SUVWaFkyZ2diMllnZEdobGMyVWdZWFZuYldWdWRDQjBhR1VnU0dGdVpHeGxZbUZ5Y3lCdllt
cGxZM1F1SUU1dklHNWxaV1FnZEc4Z2MyVjBkWEFnYUdWeVpTNWNiaTh2SUNoVWFHbHpJR2x6SUdS
dmJtVWdkRzhnWldGemFXeDVJSE5vWVhKbElHTnZaR1VnWW1WMGQyVmxiaUJqYjIxdGIyNXFjeUJo
Ym1RZ1luSnZkM05sSUdWdWRuTXBYRzVwYlhCdmNuUWdVMkZtWlZOMGNtbHVaeUJtY205dElDY3VM
MmhoYm1Sc1pXSmhjbk12YzJGbVpTMXpkSEpwYm1jbk8xeHVhVzF3YjNKMElFVjRZMlZ3ZEdsdmJp
Qm1jbTl0SUNjdUwyaGhibVJzWldKaGNuTXZaWGhqWlhCMGFXOXVKenRjYm1sdGNHOXlkQ0FxSUdG
eklGVjBhV3h6SUdaeWIyMGdKeTR2YUdGdVpHeGxZbUZ5Y3k5MWRHbHNjeWM3WEc1cGJYQnZjblFn
S2lCaGN5QnlkVzUwYVcxbElHWnliMjBnSnk0dmFHRnVaR3hsWW1GeWN5OXlkVzUwYVcxbEp6dGNi
bHh1YVcxd2IzSjBJRzV2UTI5dVpteHBZM1FnWm5KdmJTQW5MaTlvWVc1a2JHVmlZWEp6TDI1dkxX
TnZibVpzYVdOMEp6dGNibHh1THk4Z1JtOXlJR052YlhCaGRHbGlhV3hwZEhrZ1lXNWtJSFZ6WVdk
bElHOTFkSE5wWkdVZ2IyWWdiVzlrZFd4bElITjVjM1JsYlhNc0lHMWhhMlVnZEdobElFaGhibVJz
WldKaGNuTWdiMkpxWldOMElHRWdibUZ0WlhOd1lXTmxYRzVtZFc1amRHbHZiaUJqY21WaGRHVW9L
U0I3WEc0Z0lHeGxkQ0JvWWlBOUlHNWxkeUJpWVhObExraGhibVJzWldKaGNuTkZiblpwY205dWJX
VnVkQ2dwTzF4dVhHNGdJRlYwYVd4ekxtVjRkR1Z1WkNob1lpd2dZbUZ6WlNrN1hHNGdJR2hpTGxO
aFptVlRkSEpwYm1jZ1BTQlRZV1psVTNSeWFXNW5PMXh1SUNCb1lpNUZlR05sY0hScGIyNGdQU0JG
ZUdObGNIUnBiMjQ3WEc0Z0lHaGlMbFYwYVd4eklEMGdWWFJwYkhNN1hHNGdJR2hpTG1WelkyRnda
VVY0Y0hKbGMzTnBiMjRnUFNCVmRHbHNjeTVsYzJOaGNHVkZlSEJ5WlhOemFXOXVPMXh1WEc0Z0lH
aGlMbFpOSUQwZ2NuVnVkR2x0WlR0Y2JpQWdhR0l1ZEdWdGNHeGhkR1VnUFNCbWRXNWpkR2x2Ymlo
emNHVmpLU0I3WEc0Z0lDQWdjbVYwZFhKdUlISjFiblJwYldVdWRHVnRjR3hoZEdVb2MzQmxZeXdn
YUdJcE8xeHVJQ0I5TzF4dVhHNGdJSEpsZEhWeWJpQm9ZanRjYm4xY2JseHViR1YwSUdsdWMzUWdQ
U0JqY21WaGRHVW9LVHRjYm1sdWMzUXVZM0psWVhSbElEMGdZM0psWVhSbE8xeHVYRzV1YjBOdmJt
WnNhV04wS0dsdWMzUXBPMXh1WEc1cGJuTjBXeWRrWldaaGRXeDBKMTBnUFNCcGJuTjBPMXh1WEc1
bGVIQnZjblFnWkdWbVlYVnNkQ0JwYm5OME8xeHVJbDE5CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9hbWQvaGFuZGxlYmFycy9iYXNl
LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvYW1k
L2hhbmRsZWJhcnMvYmFzZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iM2RjZjQ2ZThiNWRhMTI1MTU2NzA1MWZk
YTI1ZWIzMTRkYzk4YzEyCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25v
ZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvYW1kL2hhbmRsZWJhcnMvYmFzZS5qcwpAQCAtMCww
ICsxLDk2IEBACitkZWZpbmUoWydleHBvcnRzJywgJy4vdXRpbHMnLCAnLi9leGNlcHRpb24nLCAn
Li9oZWxwZXJzJywgJy4vZGVjb3JhdG9ycycsICcuL2xvZ2dlciddLCBmdW5jdGlvbiAoZXhwb3J0
cywgX3V0aWxzLCBfZXhjZXB0aW9uLCBfaGVscGVycywgX2RlY29yYXRvcnMsIF9sb2dnZXIpIHsK
KyAgJ3VzZSBzdHJpY3QnOworCisgIGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7CisgIGV4cG9y
dHMuSGFuZGxlYmFyc0Vudmlyb25tZW50ID0gSGFuZGxlYmFyc0Vudmlyb25tZW50OworICAvLyBp
c3RhbmJ1bCBpZ25vcmUgbmV4dAorCisgIGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQo
b2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzog
b2JqIH07IH0KKworICB2YXIgX0V4Y2VwdGlvbiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2V4
Y2VwdGlvbik7CisKKyAgdmFyIF9sb2dnZXIyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfbG9n
Z2VyKTsKKworICB2YXIgVkVSU0lPTiA9ICc0LjAuNic7CisgIGV4cG9ydHMuVkVSU0lPTiA9IFZF
UlNJT047CisgIHZhciBDT01QSUxFUl9SRVZJU0lPTiA9IDc7CisKKyAgZXhwb3J0cy5DT01QSUxF
Ul9SRVZJU0lPTiA9IENPTVBJTEVSX1JFVklTSU9OOworICB2YXIgUkVWSVNJT05fQ0hBTkdFUyA9
IHsKKyAgICAxOiAnPD0gMS4wLnJjLjInLCAvLyAxLjAucmMuMiBpcyBhY3R1YWxseSByZXYyIGJ1
dCBkb2Vzbid0IHJlcG9ydCBpdAorICAgIDI6ICc9PSAxLjAuMC1yYy4zJywKKyAgICAzOiAnPT0g
MS4wLjAtcmMuNCcsCisgICAgNDogJz09IDEueC54JywKKyAgICA1OiAnPT0gMi4wLjAtYWxwaGEu
eCcsCisgICAgNjogJz49IDIuMC4wLWJldGEuMScsCisgICAgNzogJz49IDQuMC4wJworICB9Owor
CisgIGV4cG9ydHMuUkVWSVNJT05fQ0hBTkdFUyA9IFJFVklTSU9OX0NIQU5HRVM7CisgIHZhciBv
YmplY3RUeXBlID0gJ1tvYmplY3QgT2JqZWN0XSc7CisKKyAgZnVuY3Rpb24gSGFuZGxlYmFyc0Vu
dmlyb25tZW50KGhlbHBlcnMsIHBhcnRpYWxzLCBkZWNvcmF0b3JzKSB7CisgICAgdGhpcy5oZWxw
ZXJzID0gaGVscGVycyB8fCB7fTsKKyAgICB0aGlzLnBhcnRpYWxzID0gcGFydGlhbHMgfHwge307
CisgICAgdGhpcy5kZWNvcmF0b3JzID0gZGVjb3JhdG9ycyB8fCB7fTsKKworICAgIF9oZWxwZXJz
LnJlZ2lzdGVyRGVmYXVsdEhlbHBlcnModGhpcyk7CisgICAgX2RlY29yYXRvcnMucmVnaXN0ZXJE
ZWZhdWx0RGVjb3JhdG9ycyh0aGlzKTsKKyAgfQorCisgIEhhbmRsZWJhcnNFbnZpcm9ubWVudC5w
cm90b3R5cGUgPSB7CisgICAgY29uc3RydWN0b3I6IEhhbmRsZWJhcnNFbnZpcm9ubWVudCwKKwor
ICAgIGxvZ2dlcjogX2xvZ2dlcjJbJ2RlZmF1bHQnXSwKKyAgICBsb2c6IF9sb2dnZXIyWydkZWZh
dWx0J10ubG9nLAorCisgICAgcmVnaXN0ZXJIZWxwZXI6IGZ1bmN0aW9uIHJlZ2lzdGVySGVscGVy
KG5hbWUsIGZuKSB7CisgICAgICBpZiAoX3V0aWxzLnRvU3RyaW5nLmNhbGwobmFtZSkgPT09IG9i
amVjdFR5cGUpIHsKKyAgICAgICAgaWYgKGZuKSB7CisgICAgICAgICAgdGhyb3cgbmV3IF9FeGNl
cHRpb25bJ2RlZmF1bHQnXSgnQXJnIG5vdCBzdXBwb3J0ZWQgd2l0aCBtdWx0aXBsZSBoZWxwZXJz
Jyk7CisgICAgICAgIH0KKyAgICAgICAgX3V0aWxzLmV4dGVuZCh0aGlzLmhlbHBlcnMsIG5hbWUp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgdGhpcy5oZWxwZXJzW25hbWVdID0gZm47CisgICAg
ICB9CisgICAgfSwKKyAgICB1bnJlZ2lzdGVySGVscGVyOiBmdW5jdGlvbiB1bnJlZ2lzdGVySGVs
cGVyKG5hbWUpIHsKKyAgICAgIGRlbGV0ZSB0aGlzLmhlbHBlcnNbbmFtZV07CisgICAgfSwKKwor
ICAgIHJlZ2lzdGVyUGFydGlhbDogZnVuY3Rpb24gcmVnaXN0ZXJQYXJ0aWFsKG5hbWUsIHBhcnRp
YWwpIHsKKyAgICAgIGlmIChfdXRpbHMudG9TdHJpbmcuY2FsbChuYW1lKSA9PT0gb2JqZWN0VHlw
ZSkgeworICAgICAgICBfdXRpbHMuZXh0ZW5kKHRoaXMucGFydGlhbHMsIG5hbWUpOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgaWYgKHR5cGVvZiBwYXJ0aWFsID09PSAndW5kZWZpbmVkJykgewor
ICAgICAgICAgIHRocm93IG5ldyBfRXhjZXB0aW9uWydkZWZhdWx0J10oJ0F0dGVtcHRpbmcgdG8g
cmVnaXN0ZXIgYSBwYXJ0aWFsIGNhbGxlZCAiJyArIG5hbWUgKyAnIiBhcyB1bmRlZmluZWQnKTsK
KyAgICAgICAgfQorICAgICAgICB0aGlzLnBhcnRpYWxzW25hbWVdID0gcGFydGlhbDsKKyAgICAg
IH0KKyAgICB9LAorICAgIHVucmVnaXN0ZXJQYXJ0aWFsOiBmdW5jdGlvbiB1bnJlZ2lzdGVyUGFy
dGlhbChuYW1lKSB7CisgICAgICBkZWxldGUgdGhpcy5wYXJ0aWFsc1tuYW1lXTsKKyAgICB9LAor
CisgICAgcmVnaXN0ZXJEZWNvcmF0b3I6IGZ1bmN0aW9uIHJlZ2lzdGVyRGVjb3JhdG9yKG5hbWUs
IGZuKSB7CisgICAgICBpZiAoX3V0aWxzLnRvU3RyaW5nLmNhbGwobmFtZSkgPT09IG9iamVjdFR5
cGUpIHsKKyAgICAgICAgaWYgKGZuKSB7CisgICAgICAgICAgdGhyb3cgbmV3IF9FeGNlcHRpb25b
J2RlZmF1bHQnXSgnQXJnIG5vdCBzdXBwb3J0ZWQgd2l0aCBtdWx0aXBsZSBkZWNvcmF0b3JzJyk7
CisgICAgICAgIH0KKyAgICAgICAgX3V0aWxzLmV4dGVuZCh0aGlzLmRlY29yYXRvcnMsIG5hbWUp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgdGhpcy5kZWNvcmF0b3JzW25hbWVdID0gZm47Cisg
ICAgICB9CisgICAgfSwKKyAgICB1bnJlZ2lzdGVyRGVjb3JhdG9yOiBmdW5jdGlvbiB1bnJlZ2lz
dGVyRGVjb3JhdG9yKG5hbWUpIHsKKyAgICAgIGRlbGV0ZSB0aGlzLmRlY29yYXRvcnNbbmFtZV07
CisgICAgfQorICB9OworCisgIHZhciBsb2cgPSBfbG9nZ2VyMlsnZGVmYXVsdCddLmxvZzsKKwor
ICBleHBvcnRzLmxvZyA9IGxvZzsKKyAgZXhwb3J0cy5jcmVhdGVGcmFtZSA9IF91dGlscy5jcmVh
dGVGcmFtZTsKKyAgZXhwb3J0cy5sb2dnZXIgPSBfbG9nZ2VyMlsnZGVmYXVsdCddOworfSk7Cisv
LyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6
YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMeTR1TDJ4cFlpOW9ZVzVrYkdWaVlYSnpM
MkpoYzJVdWFuTWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqczdPenM3T3pzN096
czdPenRCUVUxUExFMUJRVTBzVDBGQlR5eEhRVUZITEU5QlFVOHNRMEZCUXpzN1FVRkRlRUlzVFVG
QlRTeHBRa0ZCYVVJc1IwRkJSeXhEUVVGRExFTkJRVU03T3p0QlFVVTFRaXhOUVVGTkxHZENRVUZu
UWl4SFFVRkhPMEZCUXpsQ0xFdEJRVU1zUlVGQlJTeGhRVUZoTzBGQlEyaENMRXRCUVVNc1JVRkJS
U3hsUVVGbE8wRkJRMnhDTEV0QlFVTXNSVUZCUlN4bFFVRmxPMEZCUTJ4Q0xFdEJRVU1zUlVGQlJT
eFZRVUZWTzBGQlEySXNTMEZCUXl4RlFVRkZMR3RDUVVGclFqdEJRVU55UWl4TFFVRkRMRVZCUVVV
c2FVSkJRV2xDTzBGQlEzQkNMRXRCUVVNc1JVRkJSU3hWUVVGVk8wZEJRMlFzUTBGQlF6czdPMEZC
UlVZc1RVRkJUU3hWUVVGVkxFZEJRVWNzYVVKQlFXbENMRU5CUVVNN08wRkJSVGxDTEZkQlFWTXNj
VUpCUVhGQ0xFTkJRVU1zVDBGQlR5eEZRVUZGTEZGQlFWRXNSVUZCUlN4VlFVRlZMRVZCUVVVN1FV
RkRia1VzVVVGQlNTeERRVUZETEU5QlFVOHNSMEZCUnl4UFFVRlBMRWxCUVVrc1JVRkJSU3hEUVVG
RE8wRkJRemRDTEZGQlFVa3NRMEZCUXl4UlFVRlJMRWRCUVVjc1VVRkJVU3hKUVVGSkxFVkJRVVVz
UTBGQlF6dEJRVU12UWl4UlFVRkpMRU5CUVVNc1ZVRkJWU3hIUVVGSExGVkJRVlVzU1VGQlNTeEZR
VUZGTEVOQlFVTTdPMEZCUlc1RExHRkJlRUpOTEhOQ1FVRnpRaXhEUVhkQ1RDeEpRVUZKTEVOQlFV
TXNRMEZCUXp0QlFVTTNRaXhuUWtGNFFrMHNlVUpCUVhsQ0xFTkJkMEpNTEVsQlFVa3NRMEZCUXl4
RFFVRkRPMGRCUTJwRE96dEJRVVZFTEhWQ1FVRnhRaXhEUVVGRExGTkJRVk1zUjBGQlJ6dEJRVU5v
UXl4bFFVRlhMRVZCUVVVc2NVSkJRWEZDT3p0QlFVVnNReXhWUVVGTkxIRkNRVUZSTzBGQlEyUXNU
MEZCUnl4RlFVRkZMRzlDUVVGUExFZEJRVWM3TzBGQlJXWXNhMEpCUVdNc1JVRkJSU3gzUWtGQlV5
eEpRVUZKTEVWQlFVVXNSVUZCUlN4RlFVRkZPMEZCUTJwRExGVkJRVWtzVDBGeVEzRkNMRkZCUVZF
c1EwRnhRM0JDTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhWUVVGVkxFVkJRVVU3
UVVGRGRFTXNXVUZCU1N4RlFVRkZMRVZCUVVVN1FVRkJSU3huUWtGQlRTd3dRa0ZCWXl4NVEwRkJl
VU1zUTBGQlF5eERRVUZETzFOQlFVVTdRVUZETTBVc1pVRjJRMlVzVFVGQlRTeERRWFZEWkN4SlFV
RkpMRU5CUVVNc1QwRkJUeXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETzA5QlF6VkNMRTFCUVUw
N1FVRkRUQ3haUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRVZC
UVVVc1EwRkJRenRQUVVONlFqdExRVU5HTzBGQlEwUXNiMEpCUVdkQ0xFVkJRVVVzTUVKQlFWTXNT
VUZCU1N4RlFVRkZPMEZCUXk5Q0xHRkJRVThzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4SlFV
RkpMRU5CUVVNc1EwRkJRenRMUVVNelFqczdRVUZGUkN4dFFrRkJaU3hGUVVGRkxIbENRVUZUTEVs
QlFVa3NSVUZCUlN4UFFVRlBMRVZCUVVVN1FVRkRka01zVlVGQlNTeFBRV3BFY1VJc1VVRkJVU3hE
UVdsRWNFSXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExGVkJRVlVzUlVGQlJUdEJR
VU4wUXl4bFFXeEVaU3hOUVVGTkxFTkJhMFJrTEVsQlFVa3NRMEZCUXl4UlFVRlJMRVZCUVVVc1NV
RkJTU3hEUVVGRExFTkJRVU03VDBGRE4wSXNUVUZCVFR0QlFVTk1MRmxCUVVrc1QwRkJUeXhQUVVG
UExFdEJRVXNzVjBGQlZ5eEZRVUZGTzBGQlEyeERMR2RDUVVGTkxIZEZRVUV3UkN4SlFVRkpMRzlD
UVVGcFFpeERRVUZETzFOQlEzWkdPMEZCUTBRc1dVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eEpR
VUZKTEVOQlFVTXNSMEZCUnl4UFFVRlBMRU5CUVVNN1QwRkRMMEk3UzBGRFJqdEJRVU5FTEhGQ1FV
RnBRaXhGUVVGRkxESkNRVUZUTEVsQlFVa3NSVUZCUlR0QlFVTm9ReXhoUVVGUExFbEJRVWtzUTBG
QlF5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1MwRkROVUk3TzBGQlJVUXNjVUpC
UVdsQ0xFVkJRVVVzTWtKQlFWTXNTVUZCU1N4RlFVRkZMRVZCUVVVc1JVRkJSVHRCUVVOd1F5eFZR
VUZKTEU5QkwwUnhRaXhSUVVGUkxFTkJLMFJ3UWl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExF
dEJRVXNzVlVGQlZTeEZRVUZGTzBGQlEzUkRMRmxCUVVrc1JVRkJSU3hGUVVGRk8wRkJRVVVzWjBK
QlFVMHNNRUpCUVdNc05FTkJRVFJETEVOQlFVTXNRMEZCUXp0VFFVRkZPMEZCUXpsRkxHVkJha1Zs
TEUxQlFVMHNRMEZwUldRc1NVRkJTU3hEUVVGRExGVkJRVlVzUlVGQlJTeEpRVUZKTEVOQlFVTXNR
MEZCUXp0UFFVTXZRaXhOUVVGTk8wRkJRMHdzV1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4SlFV
RkpMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU03VDBGRE5VSTdTMEZEUmp0QlFVTkVMSFZDUVVG
dFFpeEZRVUZGTERaQ1FVRlRMRWxCUVVrc1JVRkJSVHRCUVVOc1F5eGhRVUZQTEVsQlFVa3NRMEZC
UXl4VlFVRlZMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03UzBGRE9VSTdSMEZEUml4RFFVRkRP
enRCUVVWTExFMUJRVWtzUjBGQlJ5eEhRVUZITEc5Q1FVRlBMRWRCUVVjc1EwRkJRenM3TzFWQlJY
QkNMRmRCUVZjc1ZVRTNSVmdzVjBGQlZ6dFZRVFpGUlN4TlFVRk5JaXdpWm1sc1pTSTZJbUpoYzJV
dWFuTWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUpwYlhCdmNuUWdlMk55WldGMFpVWnlZVzFs
TENCbGVIUmxibVFzSUhSdlUzUnlhVzVuZlNCbWNtOXRJQ2N1TDNWMGFXeHpKenRjYm1sdGNHOXlk
Q0JGZUdObGNIUnBiMjRnWm5KdmJTQW5MaTlsZUdObGNIUnBiMjRuTzF4dWFXMXdiM0owSUh0eVpX
ZHBjM1JsY2tSbFptRjFiSFJJWld4d1pYSnpmU0JtY205dElDY3VMMmhsYkhCbGNuTW5PMXh1YVcx
d2IzSjBJSHR5WldkcGMzUmxja1JsWm1GMWJIUkVaV052Y21GMGIzSnpmU0JtY205dElDY3VMMlJs
WTI5eVlYUnZjbk1uTzF4dWFXMXdiM0owSUd4dloyZGxjaUJtY205dElDY3VMMnh2WjJkbGNpYzdY
RzVjYm1WNGNHOXlkQ0JqYjI1emRDQldSVkpUU1U5T0lEMGdKelF1TUM0Mkp6dGNibVY0Y0c5eWRD
QmpiMjV6ZENCRFQwMVFTVXhGVWw5U1JWWkpVMGxQVGlBOUlEYzdYRzVjYm1WNGNHOXlkQ0JqYjI1
emRDQlNSVlpKVTBsUFRsOURTRUZPUjBWVElEMGdlMXh1SUNBeE9pQW5QRDBnTVM0d0xuSmpMaklu
TENBdkx5QXhMakF1Y21NdU1pQnBjeUJoWTNSMVlXeHNlU0J5WlhZeUlHSjFkQ0JrYjJWemJpZDBJ
SEpsY0c5eWRDQnBkRnh1SUNBeU9pQW5QVDBnTVM0d0xqQXRjbU11TXljc1hHNGdJRE02SUNjOVBT
QXhMakF1TUMxeVl5NDBKeXhjYmlBZ05Eb2dKejA5SURFdWVDNTRKeXhjYmlBZ05Ub2dKejA5SURJ
dU1DNHdMV0ZzY0doaExuZ25MRnh1SUNBMk9pQW5QajBnTWk0d0xqQXRZbVYwWVM0eEp5eGNiaUFn
TnpvZ0p6NDlJRFF1TUM0d0oxeHVmVHRjYmx4dVkyOXVjM1FnYjJKcVpXTjBWSGx3WlNBOUlDZGJi
MkpxWldOMElFOWlhbVZqZEYwbk8xeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdTR0Z1Wkd4bFlt
RnljMFZ1ZG1seWIyNXRaVzUwS0dobGJIQmxjbk1zSUhCaGNuUnBZV3h6TENCa1pXTnZjbUYwYjNK
ektTQjdYRzRnSUhSb2FYTXVhR1ZzY0dWeWN5QTlJR2hsYkhCbGNuTWdmSHdnZTMwN1hHNGdJSFJv
YVhNdWNHRnlkR2xoYkhNZ1BTQndZWEowYVdGc2N5QjhmQ0I3ZlR0Y2JpQWdkR2hwY3k1a1pXTnZj
bUYwYjNKeklEMGdaR1ZqYjNKaGRHOXljeUI4ZkNCN2ZUdGNibHh1SUNCeVpXZHBjM1JsY2tSbFpt
RjFiSFJJWld4d1pYSnpLSFJvYVhNcE8xeHVJQ0J5WldkcGMzUmxja1JsWm1GMWJIUkVaV052Y21G
MGIzSnpLSFJvYVhNcE8xeHVmVnh1WEc1SVlXNWtiR1ZpWVhKelJXNTJhWEp2Ym0xbGJuUXVjSEp2
ZEc5MGVYQmxJRDBnZTF4dUlDQmpiMjV6ZEhKMVkzUnZjam9nU0dGdVpHeGxZbUZ5YzBWdWRtbHli
MjV0Wlc1MExGeHVYRzRnSUd4dloyZGxjam9nYkc5bloyVnlMRnh1SUNCc2IyYzZJR3h2WjJkbGNp
NXNiMmNzWEc1Y2JpQWdjbVZuYVhOMFpYSklaV3h3WlhJNklHWjFibU4wYVc5dUtHNWhiV1VzSUda
dUtTQjdYRzRnSUNBZ2FXWWdLSFJ2VTNSeWFXNW5MbU5oYkd3b2JtRnRaU2tnUFQwOUlHOWlhbVZq
ZEZSNWNHVXBJSHRjYmlBZ0lDQWdJR2xtSUNobWJpa2dleUIwYUhKdmR5QnVaWGNnUlhoalpYQjBh
Vzl1S0NkQmNtY2dibTkwSUhOMWNIQnZjblJsWkNCM2FYUm9JRzExYkhScGNHeGxJR2hsYkhCbGNu
TW5LVHNnZlZ4dUlDQWdJQ0FnWlhoMFpXNWtLSFJvYVhNdWFHVnNjR1Z5Y3l3Z2JtRnRaU2s3WEc0
Z0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lIUm9hWE11YUdWc2NHVnljMXR1WVcxbFhTQTlJR1p1
TzF4dUlDQWdJSDFjYmlBZ2ZTeGNiaUFnZFc1eVpXZHBjM1JsY2tobGJIQmxjam9nWm5WdVkzUnBi
MjRvYm1GdFpTa2dlMXh1SUNBZ0lHUmxiR1YwWlNCMGFHbHpMbWhsYkhCbGNuTmJibUZ0WlYwN1hH
NGdJSDBzWEc1Y2JpQWdjbVZuYVhOMFpYSlFZWEowYVdGc09pQm1kVzVqZEdsdmJpaHVZVzFsTENC
d1lYSjBhV0ZzS1NCN1hHNGdJQ0FnYVdZZ0tIUnZVM1J5YVc1bkxtTmhiR3dvYm1GdFpTa2dQVDA5
SUc5aWFtVmpkRlI1Y0dVcElIdGNiaUFnSUNBZ0lHVjRkR1Z1WkNoMGFHbHpMbkJoY25ScFlXeHpM
Q0J1WVcxbEtUdGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnYVdZZ0tIUjVjR1Z2WmlCd1lY
SjBhV0ZzSUQwOVBTQW5kVzVrWldacGJtVmtKeWtnZTF4dUlDQWdJQ0FnSUNCMGFISnZkeUJ1Wlhj
Z1JYaGpaWEIwYVc5dUtHQkJkSFJsYlhCMGFXNW5JSFJ2SUhKbFoybHpkR1Z5SUdFZ2NHRnlkR2xo
YkNCallXeHNaV1FnWENJa2UyNWhiV1Y5WENJZ1lYTWdkVzVrWldacGJtVmtZQ2s3WEc0Z0lDQWdJ
Q0I5WEc0Z0lDQWdJQ0IwYUdsekxuQmhjblJwWVd4elcyNWhiV1ZkSUQwZ2NHRnlkR2xoYkR0Y2Jp
QWdJQ0I5WEc0Z0lIMHNYRzRnSUhWdWNtVm5hWE4wWlhKUVlYSjBhV0ZzT2lCbWRXNWpkR2x2Ymlo
dVlXMWxLU0I3WEc0Z0lDQWdaR1ZzWlhSbElIUm9hWE11Y0dGeWRHbGhiSE5iYm1GdFpWMDdYRzRn
SUgwc1hHNWNiaUFnY21WbmFYTjBaWEpFWldOdmNtRjBiM0k2SUdaMWJtTjBhVzl1S0c1aGJXVXNJ
R1p1S1NCN1hHNGdJQ0FnYVdZZ0tIUnZVM1J5YVc1bkxtTmhiR3dvYm1GdFpTa2dQVDA5SUc5aWFt
VmpkRlI1Y0dVcElIdGNiaUFnSUNBZ0lHbG1JQ2htYmlrZ2V5QjBhSEp2ZHlCdVpYY2dSWGhqWlhC
MGFXOXVLQ2RCY21jZ2JtOTBJSE4xY0hCdmNuUmxaQ0IzYVhSb0lHMTFiSFJwY0d4bElHUmxZMjl5
WVhSdmNuTW5LVHNnZlZ4dUlDQWdJQ0FnWlhoMFpXNWtLSFJvYVhNdVpHVmpiM0poZEc5eWN5d2di
bUZ0WlNrN1hHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJSFJvYVhNdVpHVmpiM0poZEc5eWMx
dHVZVzFsWFNBOUlHWnVPMXh1SUNBZ0lIMWNiaUFnZlN4Y2JpQWdkVzV5WldkcGMzUmxja1JsWTI5
eVlYUnZjam9nWm5WdVkzUnBiMjRvYm1GdFpTa2dlMXh1SUNBZ0lHUmxiR1YwWlNCMGFHbHpMbVJs
WTI5eVlYUnZjbk5iYm1GdFpWMDdYRzRnSUgxY2JuMDdYRzVjYm1WNGNHOXlkQ0JzWlhRZ2JHOW5J
RDBnYkc5bloyVnlMbXh2Wnp0Y2JseHVaWGh3YjNKMElIdGpjbVZoZEdWR2NtRnRaU3dnYkc5bloy
VnlmVHRjYmlKZGZRPT0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVs
ZXMvaGFuZGxlYmFycy9kaXN0L2FtZC9oYW5kbGViYXJzL2NvbXBpbGVyL2FzdC5qcyBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2FtZC9oYW5kbGViYXJz
L2NvbXBpbGVyL2FzdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMjhmZmViNDMyYzc2MmZlNjk0OTY0OGI0NjZl
ZDAyNmIyYjAwOGJmCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVf
bW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvYW1kL2hhbmRsZWJhcnMvY29tcGlsZXIvYXN0LmpzCkBA
IC0wLDAgKzEsMzEgQEAKK2RlZmluZShbJ2V4cG9ydHMnLCAnbW9kdWxlJ10sIGZ1bmN0aW9uIChl
eHBvcnRzLCBtb2R1bGUpIHsKKyAgJ3VzZSBzdHJpY3QnOworCisgIHZhciBBU1QgPSB7CisgICAg
Ly8gUHVibGljIEFQSSB1c2VkIHRvIGV2YWx1YXRlIGRlcml2ZWQgYXR0cmlidXRlcyByZWdhcmRp
bmcgQVNUIG5vZGVzCisgICAgaGVscGVyczogeworICAgICAgLy8gYSBtdXN0YWNoZSBpcyBkZWZp
bml0ZWx5IGEgaGVscGVyIGlmOgorICAgICAgLy8gKiBpdCBpcyBhbiBlbGlnaWJsZSBoZWxwZXIs
IGFuZAorICAgICAgLy8gKiBpdCBoYXMgYXQgbGVhc3Qgb25lIHBhcmFtZXRlciBvciBoYXNoIHNl
Z21lbnQKKyAgICAgIGhlbHBlckV4cHJlc3Npb246IGZ1bmN0aW9uIGhlbHBlckV4cHJlc3Npb24o
bm9kZSkgeworICAgICAgICByZXR1cm4gbm9kZS50eXBlID09PSAnU3ViRXhwcmVzc2lvbicgfHwg
KG5vZGUudHlwZSA9PT0gJ011c3RhY2hlU3RhdGVtZW50JyB8fCBub2RlLnR5cGUgPT09ICdCbG9j
a1N0YXRlbWVudCcpICYmICEhKG5vZGUucGFyYW1zICYmIG5vZGUucGFyYW1zLmxlbmd0aCB8fCBu
b2RlLmhhc2gpOworICAgICAgfSwKKworICAgICAgc2NvcGVkSWQ6IGZ1bmN0aW9uIHNjb3BlZElk
KHBhdGgpIHsKKyAgICAgICAgcmV0dXJuICgvXlwufHRoaXNcYi8udGVzdChwYXRoLm9yaWdpbmFs
KQorICAgICAgICApOworICAgICAgfSwKKworICAgICAgLy8gYW4gSUQgaXMgc2ltcGxlIGlmIGl0
IG9ubHkgaGFzIG9uZSBwYXJ0LCBhbmQgdGhhdCBwYXJ0IGlzIG5vdAorICAgICAgLy8gYC4uYCBv
ciBgdGhpc2AuCisgICAgICBzaW1wbGVJZDogZnVuY3Rpb24gc2ltcGxlSWQocGF0aCkgeworICAg
ICAgICByZXR1cm4gcGF0aC5wYXJ0cy5sZW5ndGggPT09IDEgJiYgIUFTVC5oZWxwZXJzLnNjb3Bl
ZElkKHBhdGgpICYmICFwYXRoLmRlcHRoOworICAgICAgfQorICAgIH0KKyAgfTsKKworICAvLyBN
dXN0IGJlIGV4cG9ydGVkIGFzIGFuIG9iamVjdCByYXRoZXIgdGhhbiB0aGUgcm9vdCBvZiB0aGUg
bW9kdWxlIGFzIHRoZSBqaXNvbiBsZXhlcgorICAvLyBtdXN0IG1vZGlmeSB0aGUgb2JqZWN0IHRv
IG9wZXJhdGUgcHJvcGVybHkuCisgIG1vZHVsZS5leHBvcnRzID0gQVNUOworfSk7CisvLyMgc291
cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlq
b3pMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMeTR1THk0dUwyeHBZaTlvWVc1a2JHVmlZWEp6TDJO
dmJYQnBiR1Z5TDJGemRDNXFjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPenM3
UVVGQlFTeE5RVUZKTEVkQlFVY3NSMEZCUnpzN1FVRkZVaXhYUVVGUExFVkJRVVU3T3pzN1FVRkpV
Q3h6UWtGQlowSXNSVUZCUlN3d1FrRkJVeXhKUVVGSkxFVkJRVVU3UVVGREwwSXNaVUZCVHl4QlFV
RkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFdEJRVXNzWlVGQlpTeEpRVU0zUWl4RFFVRkRMRWxCUVVr
c1EwRkJReXhKUVVGSkxFdEJRVXNzYlVKQlFXMUNMRWxCUVVrc1NVRkJTU3hEUVVGRExFbEJRVWtz
UzBGQlN5eG5Ra0ZCWjBJc1EwRkJRU3hKUVVOdVJTeERRVUZETEVWQlFVVXNRVUZCUXl4SlFVRkpM
RU5CUVVNc1RVRkJUU3hKUVVGSkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNUVUZCVFN4SlFV
RkxMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVUVzUVVGQlF5eEJRVUZETEVOQlFVTTdUMEZEYUVV
N08wRkJSVVFzWTBGQlVTeEZRVUZGTEd0Q1FVRlRMRWxCUVVrc1JVRkJSVHRCUVVOMlFpeGxRVUZQ
TEVGQlFVTXNZVUZCV1N4RFFVRkZMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVVVGQlVTeERR
VUZETzFWQlFVTTdUMEZETTBNN096czdRVUZKUkN4alFVRlJMRVZCUVVVc2EwSkJRVk1zU1VGQlNT
eEZRVUZGTzBGQlEzWkNMR1ZCUVU4c1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eE5RVUZOTEV0
QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFOUJRVThzUTBGQlF5eFJRVUZS
TEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERR
VUZETzA5QlF6bEZPMHRCUTBZN1IwRkRSaXhEUVVGRE96czdPMjFDUVV0aExFZEJRVWNpTENKbWFX
eGxJam9pWVhOMExtcHpJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYkdWMElFRlRWQ0E5SUh0
Y2JpQWdMeThnVUhWaWJHbGpJRUZRU1NCMWMyVmtJSFJ2SUdWMllXeDFZWFJsSUdSbGNtbDJaV1Fn
WVhSMGNtbGlkWFJsY3lCeVpXZGhjbVJwYm1jZ1FWTlVJRzV2WkdWelhHNGdJR2hsYkhCbGNuTTZJ
SHRjYmlBZ0lDQXZMeUJoSUcxMWMzUmhZMmhsSUdseklHUmxabWx1YVhSbGJIa2dZU0JvWld4d1pY
SWdhV1k2WEc0Z0lDQWdMeThnS2lCcGRDQnBjeUJoYmlCbGJHbG5hV0pzWlNCb1pXeHdaWElzSUdG
dVpGeHVJQ0FnSUM4dklDb2dhWFFnYUdGeklHRjBJR3hsWVhOMElHOXVaU0J3WVhKaGJXVjBaWEln
YjNJZ2FHRnphQ0J6WldkdFpXNTBYRzRnSUNBZ2FHVnNjR1Z5Ulhod2NtVnpjMmx2YmpvZ1puVnVZ
M1JwYjI0b2JtOWtaU2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVJQ2h1YjJSbExuUjVjR1VnUFQwOUlD
ZFRkV0pGZUhCeVpYTnphVzl1SnlsY2JpQWdJQ0FnSUNBZ0lDQjhmQ0FvS0c1dlpHVXVkSGx3WlNB
OVBUMGdKMDExYzNSaFkyaGxVM1JoZEdWdFpXNTBKeUI4ZkNCdWIyUmxMblI1Y0dVZ1BUMDlJQ2RD
Ykc5amExTjBZWFJsYldWdWRDY3BYRzRnSUNBZ0lDQWdJQ0FnSUNBbUppQWhJU2dvYm05a1pTNXdZ
WEpoYlhNZ0ppWWdibTlrWlM1d1lYSmhiWE11YkdWdVozUm9LU0I4ZkNCdWIyUmxMbWhoYzJncEtU
dGNiaUFnSUNCOUxGeHVYRzRnSUNBZ2MyTnZjR1ZrU1dRNklHWjFibU4wYVc5dUtIQmhkR2dwSUh0
Y2JpQWdJQ0FnSUhKbGRIVnliaUFvTDE1Y1hDNThkR2hwYzF4Y1lpOHBMblJsYzNRb2NHRjBhQzV2
Y21sbmFXNWhiQ2s3WEc0Z0lDQWdmU3hjYmx4dUlDQWdJQzh2SUdGdUlFbEVJR2x6SUhOcGJYQnNa
U0JwWmlCcGRDQnZibXg1SUdoaGN5QnZibVVnY0dGeWRDd2dZVzVrSUhSb1lYUWdjR0Z5ZENCcGN5
QnViM1JjYmlBZ0lDQXZMeUJnTGk1Z0lHOXlJR0IwYUdsellDNWNiaUFnSUNCemFXMXdiR1ZKWkRv
Z1puVnVZM1JwYjI0b2NHRjBhQ2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVJSEJoZEdndWNHRnlkSE11
YkdWdVozUm9JRDA5UFNBeElDWW1JQ0ZCVTFRdWFHVnNjR1Z5Y3k1elkyOXdaV1JKWkNod1lYUm9L
U0FtSmlBaGNHRjBhQzVrWlhCMGFEdGNiaUFnSUNCOVhHNGdJSDFjYm4wN1hHNWNibHh1THk4Z1RY
VnpkQ0JpWlNCbGVIQnZjblJsWkNCaGN5QmhiaUJ2WW1wbFkzUWdjbUYwYUdWeUlIUm9ZVzRnZEdo
bElISnZiM1FnYjJZZ2RHaGxJRzF2WkhWc1pTQmhjeUIwYUdVZ2FtbHpiMjRnYkdWNFpYSmNiaTh2
SUcxMWMzUWdiVzlrYVdaNUlIUm9aU0J2WW1wbFkzUWdkRzhnYjNCbGNtRjBaU0J3Y205d1pYSnNl
UzVjYm1WNGNHOXlkQ0JrWldaaGRXeDBJRUZUVkR0Y2JpSmRmUT09CmRpZmYgLS1naXQgYS9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9hbWQvaGFuZGxlYmFy
cy9jb21waWxlci9iYXNlLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5k
bGViYXJzL2Rpc3QvYW1kL2hhbmRsZWJhcnMvY29tcGlsZXIvYmFzZS5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
NGM2NWNjZGJhZTA2YThhZTAyNjRjZWI1N2E5OWRiOTJjZTcxZjVmCi0tLSAvZGV2L251bGwKKysr
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvYW1kL2hh
bmRsZWJhcnMvY29tcGlsZXIvYmFzZS5qcwpAQCAtMCwwICsxLDM2IEBACitkZWZpbmUoWydleHBv
cnRzJywgJy4vcGFyc2VyJywgJy4vd2hpdGVzcGFjZS1jb250cm9sJywgJy4vaGVscGVycycsICcu
Li91dGlscyddLCBmdW5jdGlvbiAoZXhwb3J0cywgX3BhcnNlciwgX3doaXRlc3BhY2VDb250cm9s
LCBfaGVscGVycywgX3V0aWxzKSB7CisgICd1c2Ugc3RyaWN0JzsKKworICBleHBvcnRzLl9fZXNN
b2R1bGUgPSB0cnVlOworICBleHBvcnRzLnBhcnNlID0gcGFyc2U7CisgIC8vIGlzdGFuYnVsIGln
bm9yZSBuZXh0CisKKyAgZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0
dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfQor
CisgIHZhciBfcGFyc2VyMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3BhcnNlcik7CisKKyAg
dmFyIF9XaGl0ZXNwYWNlQ29udHJvbCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3doaXRlc3Bh
Y2VDb250cm9sKTsKKworICBleHBvcnRzLnBhcnNlciA9IF9wYXJzZXIyWydkZWZhdWx0J107CisK
KyAgdmFyIHl5ID0ge307CisgIF91dGlscy5leHRlbmQoeXksIF9oZWxwZXJzKTsKKworICBmdW5j
dGlvbiBwYXJzZShpbnB1dCwgb3B0aW9ucykgeworICAgIC8vIEp1c3QgcmV0dXJuIGlmIGFuIGFs
cmVhZHktY29tcGlsZWQgQVNUIHdhcyBwYXNzZWQgaW4uCisgICAgaWYgKGlucHV0LnR5cGUgPT09
ICdQcm9ncmFtJykgeworICAgICAgcmV0dXJuIGlucHV0OworICAgIH0KKworICAgIF9wYXJzZXIy
WydkZWZhdWx0J10ueXkgPSB5eTsKKworICAgIC8vIEFsdGVyaW5nIHRoZSBzaGFyZWQgb2JqZWN0
IGhlcmUsIGJ1dCB0aGlzIGlzIG9rIGFzIHBhcnNlciBpcyBhIHN5bmMgb3BlcmF0aW9uCisgICAg
eXkubG9jSW5mbyA9IGZ1bmN0aW9uIChsb2NJbmZvKSB7CisgICAgICByZXR1cm4gbmV3IHl5LlNv
dXJjZUxvY2F0aW9uKG9wdGlvbnMgJiYgb3B0aW9ucy5zcmNOYW1lLCBsb2NJbmZvKTsKKyAgICB9
OworCisgICAgdmFyIHN0cmlwID0gbmV3IF9XaGl0ZXNwYWNlQ29udHJvbFsnZGVmYXVsdCddKG9w
dGlvbnMpOworICAgIHJldHVybiBzdHJpcC5hY2NlcHQoX3BhcnNlcjJbJ2RlZmF1bHQnXS5wYXJz
ZShpbnB1dCkpOworICB9Cit9KTsKKy8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRp
b24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUx5
NHVMeTR1TDJ4cFlpOW9ZVzVrYkdWaVlYSnpMMk52YlhCcGJHVnlMMkpoYzJVdWFuTWlYU3dpYm1G
dFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqczdPenM3T3pzN096czdPenRWUVV0VExFMUJRVTA3
TzBGQlJXWXNUVUZCU1N4RlFVRkZMRWRCUVVjc1JVRkJSU3hEUVVGRE8wRkJRMW9zVTBGTVV5eE5R
VUZOTEVOQlMxSXNSVUZCUlN4WFFVRlZMRU5CUVVNN08wRkJSV0lzVjBGQlV5eExRVUZMTEVOQlFV
TXNTMEZCU3l4RlFVRkZMRTlCUVU4c1JVRkJSVHM3UVVGRmNFTXNVVUZCU1N4TFFVRkxMRU5CUVVN
c1NVRkJTU3hMUVVGTExGTkJRVk1zUlVGQlJUdEJRVUZGTEdGQlFVOHNTMEZCU3l4RFFVRkRPMHRC
UVVVN08wRkJSUzlETEhkQ1FVRlBMRVZCUVVVc1IwRkJSeXhGUVVGRkxFTkJRVU03T3p0QlFVZG1M
RTFCUVVVc1EwRkJReXhQUVVGUExFZEJRVWNzVlVGQlV5eFBRVUZQTEVWQlFVVTdRVUZETjBJc1lV
RkJUeXhKUVVGSkxFVkJRVVVzUTBGQlF5eGpRVUZqTEVOQlFVTXNUMEZCVHl4SlFVRkpMRTlCUVU4
c1EwRkJReXhQUVVGUExFVkJRVVVzVDBGQlR5eERRVUZETEVOQlFVTTdTMEZEYmtVc1EwRkJRenM3
UVVGRlJpeFJRVUZKTEV0QlFVc3NSMEZCUnl4clEwRkJjMElzVDBGQlR5eERRVUZETEVOQlFVTTdR
VUZETTBNc1YwRkJUeXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEc5Q1FVRlBMRXRCUVVzc1Ew
RkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETzBkQlF6RkRJaXdpWm1sc1pTSTZJbUpoYzJV
dWFuTWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUpwYlhCdmNuUWdjR0Z5YzJWeUlHWnliMjBn
Snk0dmNHRnljMlZ5Snp0Y2JtbHRjRzl5ZENCWGFHbDBaWE53WVdObFEyOXVkSEp2YkNCbWNtOXRJ
Q2N1TDNkb2FYUmxjM0JoWTJVdFkyOXVkSEp2YkNjN1hHNXBiWEJ2Y25RZ0tpQmhjeUJJWld4d1pY
SnpJR1p5YjIwZ0p5NHZhR1ZzY0dWeWN5YzdYRzVwYlhCdmNuUWdleUJsZUhSbGJtUWdmU0JtY205
dElDY3VMaTkxZEdsc2N5YzdYRzVjYm1WNGNHOXlkQ0I3SUhCaGNuTmxjaUI5TzF4dVhHNXNaWFFn
ZVhrZ1BTQjdmVHRjYm1WNGRHVnVaQ2g1ZVN3Z1NHVnNjR1Z5Y3lrN1hHNWNibVY0Y0c5eWRDQm1k
VzVqZEdsdmJpQndZWEp6WlNocGJuQjFkQ3dnYjNCMGFXOXVjeWtnZTF4dUlDQXZMeUJLZFhOMElI
SmxkSFZ5YmlCcFppQmhiaUJoYkhKbFlXUjVMV052YlhCcGJHVmtJRUZUVkNCM1lYTWdjR0Z6YzJW
a0lHbHVMbHh1SUNCcFppQW9hVzV3ZFhRdWRIbHdaU0E5UFQwZ0oxQnliMmR5WVcwbktTQjdJSEps
ZEhWeWJpQnBibkIxZERzZ2ZWeHVYRzRnSUhCaGNuTmxjaTU1ZVNBOUlIbDVPMXh1WEc0Z0lDOHZJ
RUZzZEdWeWFXNW5JSFJvWlNCemFHRnlaV1FnYjJKcVpXTjBJR2hsY21Vc0lHSjFkQ0IwYUdseklH
bHpJRzlySUdGeklIQmhjbk5sY2lCcGN5QmhJSE41Ym1NZ2IzQmxjbUYwYVc5dVhHNGdJSGw1TG14
dlkwbHVabThnUFNCbWRXNWpkR2x2Ymloc2IyTkpibVp2S1NCN1hHNGdJQ0FnY21WMGRYSnVJRzVs
ZHlCNWVTNVRiM1Z5WTJWTWIyTmhkR2x2YmlodmNIUnBiMjV6SUNZbUlHOXdkR2x2Ym5NdWMzSmpU
bUZ0WlN3Z2JHOWpTVzVtYnlrN1hHNGdJSDA3WEc1Y2JpQWdiR1YwSUhOMGNtbHdJRDBnYm1WM0lG
ZG9hWFJsYzNCaFkyVkRiMjUwY205c0tHOXdkR2x2Ym5NcE8xeHVJQ0J5WlhSMWNtNGdjM1J5YVhB
dVlXTmpaWEIwS0hCaGNuTmxjaTV3WVhKelpTaHBibkIxZENrcE8xeHVmVnh1SWwxOQpkaWZmIC0t
Z2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvYW1k
L2hhbmRsZWJhcnMvY29tcGlsZXIvY29kZS1nZW4uanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9k
ZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9hbWQvaGFuZGxlYmFycy9jb21waWxlci9jb2RlLWdl
bi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mM2NjODBjMGQ3YzkwYjI4OWI4NTU4OGJhMDY0ODM0YzA5M2VkMTgy
Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5k
bGViYXJzL2Rpc3QvYW1kL2hhbmRsZWJhcnMvY29tcGlsZXIvY29kZS1nZW4uanMKQEAgLTAsMCAr
MSwxNjMgQEAKK2RlZmluZShbJ2V4cG9ydHMnLCAnbW9kdWxlJywgJy4uL3V0aWxzJ10sIGZ1bmN0
aW9uIChleHBvcnRzLCBtb2R1bGUsIF91dGlscykgeworICAvKiBnbG9iYWwgZGVmaW5lICovCisg
ICd1c2Ugc3RyaWN0JzsKKworICB2YXIgU291cmNlTm9kZSA9IHVuZGVmaW5lZDsKKworICB0cnkg
eworICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovCisgICAgaWYgKHR5cGVvZiBkZWZpbmUg
IT09ICdmdW5jdGlvbicgfHwgIWRlZmluZS5hbWQpIHsKKyAgICAgIC8vIFdlIGRvbid0IHN1cHBv
cnQgdGhpcyBpbiBBTUQgZW52aXJvbm1lbnRzLiBGb3IgdGhlc2UgZW52aXJvbm1lbnRzLCB3ZSBh
c3VzbWUgdGhhdAorICAgICAgLy8gdGhleSBhcmUgcnVubmluZyBvbiB0aGUgYnJvd3NlciBhbmQg
dGh1cyBoYXZlIG5vIG5lZWQgZm9yIHRoZSBzb3VyY2UtbWFwIGxpYnJhcnkuCisgICAgICB2YXIg
U291cmNlTWFwID0gcmVxdWlyZSgnc291cmNlLW1hcCcpOworICAgICAgU291cmNlTm9kZSA9IFNv
dXJjZU1hcC5Tb3VyY2VOb2RlOworICAgIH0KKyAgfSBjYXRjaCAoZXJyKSB7fQorICAvKiBOT1Ag
Ki8KKworICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWY6IHRlc3RlZCBidXQgbm90IGNvdmVyZWQgaW4g
aXN0YW5idWwgZHVlIHRvIGRpc3QgYnVpbGQgICovCisgIGlmICghU291cmNlTm9kZSkgeworICAg
IFNvdXJjZU5vZGUgPSBmdW5jdGlvbiAobGluZSwgY29sdW1uLCBzcmNGaWxlLCBjaHVua3MpIHsK
KyAgICAgIHRoaXMuc3JjID0gJyc7CisgICAgICBpZiAoY2h1bmtzKSB7CisgICAgICAgIHRoaXMu
YWRkKGNodW5rcyk7CisgICAgICB9CisgICAgfTsKKyAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4
dCAqLworICAgIFNvdXJjZU5vZGUucHJvdG90eXBlID0geworICAgICAgYWRkOiBmdW5jdGlvbiBh
ZGQoY2h1bmtzKSB7CisgICAgICAgIGlmIChfdXRpbHMuaXNBcnJheShjaHVua3MpKSB7CisgICAg
ICAgICAgY2h1bmtzID0gY2h1bmtzLmpvaW4oJycpOworICAgICAgICB9CisgICAgICAgIHRoaXMu
c3JjICs9IGNodW5rczsKKyAgICAgIH0sCisgICAgICBwcmVwZW5kOiBmdW5jdGlvbiBwcmVwZW5k
KGNodW5rcykgeworICAgICAgICBpZiAoX3V0aWxzLmlzQXJyYXkoY2h1bmtzKSkgeworICAgICAg
ICAgIGNodW5rcyA9IGNodW5rcy5qb2luKCcnKTsKKyAgICAgICAgfQorICAgICAgICB0aGlzLnNy
YyA9IGNodW5rcyArIHRoaXMuc3JjOworICAgICAgfSwKKyAgICAgIHRvU3RyaW5nV2l0aFNvdXJj
ZU1hcDogZnVuY3Rpb24gdG9TdHJpbmdXaXRoU291cmNlTWFwKCkgeworICAgICAgICByZXR1cm4g
eyBjb2RlOiB0aGlzLnRvU3RyaW5nKCkgfTsKKyAgICAgIH0sCisgICAgICB0b1N0cmluZzogZnVu
Y3Rpb24gdG9TdHJpbmcoKSB7CisgICAgICAgIHJldHVybiB0aGlzLnNyYzsKKyAgICAgIH0KKyAg
ICB9OworICB9CisKKyAgZnVuY3Rpb24gY2FzdENodW5rKGNodW5rLCBjb2RlR2VuLCBsb2MpIHsK
KyAgICBpZiAoX3V0aWxzLmlzQXJyYXkoY2h1bmspKSB7CisgICAgICB2YXIgcmV0ID0gW107CisK
KyAgICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBjaHVuay5sZW5ndGg7IGkgPCBsZW47IGkrKykg
eworICAgICAgICByZXQucHVzaChjb2RlR2VuLndyYXAoY2h1bmtbaV0sIGxvYykpOworICAgICAg
fQorICAgICAgcmV0dXJuIHJldDsKKyAgICB9IGVsc2UgaWYgKHR5cGVvZiBjaHVuayA9PT0gJ2Jv
b2xlYW4nIHx8IHR5cGVvZiBjaHVuayA9PT0gJ251bWJlcicpIHsKKyAgICAgIC8vIEhhbmRsZSBw
cmltaXRpdmVzIHRoYXQgdGhlIFNvdXJjZU5vZGUgd2lsbCB0aHJvdyB1cCBvbgorICAgICAgcmV0
dXJuIGNodW5rICsgJyc7CisgICAgfQorICAgIHJldHVybiBjaHVuazsKKyAgfQorCisgIGZ1bmN0
aW9uIENvZGVHZW4oc3JjRmlsZSkgeworICAgIHRoaXMuc3JjRmlsZSA9IHNyY0ZpbGU7CisgICAg
dGhpcy5zb3VyY2UgPSBbXTsKKyAgfQorCisgIENvZGVHZW4ucHJvdG90eXBlID0geworICAgIGlz
RW1wdHk6IGZ1bmN0aW9uIGlzRW1wdHkoKSB7CisgICAgICByZXR1cm4gIXRoaXMuc291cmNlLmxl
bmd0aDsKKyAgICB9LAorICAgIHByZXBlbmQ6IGZ1bmN0aW9uIHByZXBlbmQoc291cmNlLCBsb2Mp
IHsKKyAgICAgIHRoaXMuc291cmNlLnVuc2hpZnQodGhpcy53cmFwKHNvdXJjZSwgbG9jKSk7Cisg
ICAgfSwKKyAgICBwdXNoOiBmdW5jdGlvbiBwdXNoKHNvdXJjZSwgbG9jKSB7CisgICAgICB0aGlz
LnNvdXJjZS5wdXNoKHRoaXMud3JhcChzb3VyY2UsIGxvYykpOworICAgIH0sCisKKyAgICBtZXJn
ZTogZnVuY3Rpb24gbWVyZ2UoKSB7CisgICAgICB2YXIgc291cmNlID0gdGhpcy5lbXB0eSgpOwor
ICAgICAgdGhpcy5lYWNoKGZ1bmN0aW9uIChsaW5lKSB7CisgICAgICAgIHNvdXJjZS5hZGQoWycg
ICcsIGxpbmUsICdcbiddKTsKKyAgICAgIH0pOworICAgICAgcmV0dXJuIHNvdXJjZTsKKyAgICB9
LAorCisgICAgZWFjaDogZnVuY3Rpb24gZWFjaChpdGVyKSB7CisgICAgICBmb3IgKHZhciBpID0g
MCwgbGVuID0gdGhpcy5zb3VyY2UubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgaXRl
cih0aGlzLnNvdXJjZVtpXSk7CisgICAgICB9CisgICAgfSwKKworICAgIGVtcHR5OiBmdW5jdGlv
biBlbXB0eSgpIHsKKyAgICAgIHZhciBsb2MgPSB0aGlzLmN1cnJlbnRMb2NhdGlvbiB8fCB7IHN0
YXJ0OiB7fSB9OworICAgICAgcmV0dXJuIG5ldyBTb3VyY2VOb2RlKGxvYy5zdGFydC5saW5lLCBs
b2Muc3RhcnQuY29sdW1uLCB0aGlzLnNyY0ZpbGUpOworICAgIH0sCisgICAgd3JhcDogZnVuY3Rp
b24gd3JhcChjaHVuaykgeworICAgICAgdmFyIGxvYyA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMSB8
fCBhcmd1bWVudHNbMV0gPT09IHVuZGVmaW5lZCA/IHRoaXMuY3VycmVudExvY2F0aW9uIHx8IHsg
c3RhcnQ6IHt9IH0gOiBhcmd1bWVudHNbMV07CisKKyAgICAgIGlmIChjaHVuayBpbnN0YW5jZW9m
IFNvdXJjZU5vZGUpIHsKKyAgICAgICAgcmV0dXJuIGNodW5rOworICAgICAgfQorCisgICAgICBj
aHVuayA9IGNhc3RDaHVuayhjaHVuaywgdGhpcywgbG9jKTsKKworICAgICAgcmV0dXJuIG5ldyBT
b3VyY2VOb2RlKGxvYy5zdGFydC5saW5lLCBsb2Muc3RhcnQuY29sdW1uLCB0aGlzLnNyY0ZpbGUs
IGNodW5rKTsKKyAgICB9LAorCisgICAgZnVuY3Rpb25DYWxsOiBmdW5jdGlvbiBmdW5jdGlvbkNh
bGwoZm4sIHR5cGUsIHBhcmFtcykgeworICAgICAgcGFyYW1zID0gdGhpcy5nZW5lcmF0ZUxpc3Qo
cGFyYW1zKTsKKyAgICAgIHJldHVybiB0aGlzLndyYXAoW2ZuLCB0eXBlID8gJy4nICsgdHlwZSAr
ICcoJyA6ICcoJywgcGFyYW1zLCAnKSddKTsKKyAgICB9LAorCisgICAgcXVvdGVkU3RyaW5nOiBm
dW5jdGlvbiBxdW90ZWRTdHJpbmcoc3RyKSB7CisgICAgICByZXR1cm4gJyInICsgKHN0ciArICcn
KS5yZXBsYWNlKC9cXC9nLCAnXFxcXCcpLnJlcGxhY2UoLyIvZywgJ1xcIicpLnJlcGxhY2UoL1xu
L2csICdcXG4nKS5yZXBsYWNlKC9cci9nLCAnXFxyJykucmVwbGFjZSgvXHUyMDI4L2csICdcXHUy
MDI4JykgLy8gUGVyIEVjbWEtMjYyIDcuMyArIDcuOC40CisgICAgICAucmVwbGFjZSgvXHUyMDI5
L2csICdcXHUyMDI5JykgKyAnIic7CisgICAgfSwKKworICAgIG9iamVjdExpdGVyYWw6IGZ1bmN0
aW9uIG9iamVjdExpdGVyYWwob2JqKSB7CisgICAgICB2YXIgcGFpcnMgPSBbXTsKKworICAgICAg
Zm9yICh2YXIga2V5IGluIG9iaikgeworICAgICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KGtl
eSkpIHsKKyAgICAgICAgICB2YXIgdmFsdWUgPSBjYXN0Q2h1bmsob2JqW2tleV0sIHRoaXMpOwor
ICAgICAgICAgIGlmICh2YWx1ZSAhPT0gJ3VuZGVmaW5lZCcpIHsKKyAgICAgICAgICAgIHBhaXJz
LnB1c2goW3RoaXMucXVvdGVkU3RyaW5nKGtleSksICc6JywgdmFsdWVdKTsKKyAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgdmFyIHJldCA9IHRoaXMuZ2VuZXJhdGVMaXN0
KHBhaXJzKTsKKyAgICAgIHJldC5wcmVwZW5kKCd7Jyk7CisgICAgICByZXQuYWRkKCd9Jyk7Cisg
ICAgICByZXR1cm4gcmV0OworICAgIH0sCisKKyAgICBnZW5lcmF0ZUxpc3Q6IGZ1bmN0aW9uIGdl
bmVyYXRlTGlzdChlbnRyaWVzKSB7CisgICAgICB2YXIgcmV0ID0gdGhpcy5lbXB0eSgpOworCisg
ICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gZW50cmllcy5sZW5ndGg7IGkgPCBsZW47IGkrKykg
eworICAgICAgICBpZiAoaSkgeworICAgICAgICAgIHJldC5hZGQoJywnKTsKKyAgICAgICAgfQor
CisgICAgICAgIHJldC5hZGQoY2FzdENodW5rKGVudHJpZXNbaV0sIHRoaXMpKTsKKyAgICAgIH0K
KworICAgICAgcmV0dXJuIHJldDsKKyAgICB9LAorCisgICAgZ2VuZXJhdGVBcnJheTogZnVuY3Rp
b24gZ2VuZXJhdGVBcnJheShlbnRyaWVzKSB7CisgICAgICB2YXIgcmV0ID0gdGhpcy5nZW5lcmF0
ZUxpc3QoZW50cmllcyk7CisgICAgICByZXQucHJlcGVuZCgnWycpOworICAgICAgcmV0LmFkZCgn
XScpOworCisgICAgICByZXR1cm4gcmV0OworICAgIH0KKyAgfTsKKworICBtb2R1bGUuZXhwb3J0
cyA9IENvZGVHZW47Cit9KTsKKy8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24v
anNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUx5NHVM
eTR1TDJ4cFlpOW9ZVzVrYkdWaVlYSnpMMk52YlhCcGJHVnlMMk52WkdVdFoyVnVMbXB6SWwwc0lt
NWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3T3pzN1FVRkhRU3hOUVVGSkxGVkJRVlVzV1VG
QlFTeERRVUZET3p0QlFVVm1MRTFCUVVrN08wRkJSVVlzVVVGQlNTeFBRVUZQTEUxQlFVMHNTMEZC
U3l4VlFVRlZMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUjBGQlJ5eEZRVUZGT3pzN1FVRkhM
ME1zVlVGQlNTeFRRVUZUTEVkQlFVY3NUMEZCVHl4RFFVRkRMRmxCUVZrc1EwRkJReXhEUVVGRE8w
RkJRM1JETEdkQ1FVRlZMRWRCUVVjc1UwRkJVeXhEUVVGRExGVkJRVlVzUTBGQlF6dExRVU51UXp0
SFFVTkdMRU5CUVVNc1QwRkJUeXhIUVVGSExFVkJRVVVzUlVGRllqczdPenRCUVVGQkxFRkJSMFFz
VFVGQlNTeERRVUZETEZWQlFWVXNSVUZCUlR0QlFVTm1MR05CUVZVc1IwRkJSeXhWUVVGVExFbEJR
VWtzUlVGQlJTeE5RVUZOTEVWQlFVVXNUMEZCVHl4RlFVRkZMRTFCUVUwc1JVRkJSVHRCUVVOdVJD
eFZRVUZKTEVOQlFVTXNSMEZCUnl4SFFVRkhMRVZCUVVVc1EwRkJRenRCUVVOa0xGVkJRVWtzVFVG
QlRTeEZRVUZGTzBGQlExWXNXVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhOUVVGTkxFTkJRVU1z
UTBGQlF6dFBRVU5zUWp0TFFVTkdMRU5CUVVNN08wRkJSVVlzWTBGQlZTeERRVUZETEZOQlFWTXNS
MEZCUnp0QlFVTnlRaXhUUVVGSExFVkJRVVVzWVVGQlV5eE5RVUZOTEVWQlFVVTdRVUZEY0VJc1dV
RkJTU3hQUVROQ1JpeFBRVUZQTEVOQk1rSkhMRTFCUVUwc1EwRkJReXhGUVVGRk8wRkJRMjVDTEdk
Q1FVRk5MRWRCUVVjc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZC
UXp0VFFVTXhRanRCUVVORUxGbEJRVWtzUTBGQlF5eEhRVUZITEVsQlFVa3NUVUZCVFN4RFFVRkRP
MDlCUTNCQ08wRkJRMFFzWVVGQlR5eEZRVUZGTEdsQ1FVRlRMRTFCUVUwc1JVRkJSVHRCUVVONFFp
eFpRVUZKTEU5QmFrTkdMRTlCUVU4c1EwRnBRMGNzVFVGQlRTeERRVUZETEVWQlFVVTdRVUZEYmtJ
c1owSkJRVTBzUjBGQlJ5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhE
UVVGRE8xTkJRekZDTzBGQlEwUXNXVUZCU1N4RFFVRkRMRWRCUVVjc1IwRkJSeXhOUVVGTkxFZEJR
VWNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXp0UFFVTTVRanRCUVVORUxESkNRVUZ4UWl4RlFV
RkZMR2xEUVVGWE8wRkJRMmhETEdWQlFVOHNSVUZCUXl4SlFVRkpMRVZCUVVVc1NVRkJTU3hEUVVG
RExGRkJRVkVzUlVGQlJTeEZRVUZETEVOQlFVTTdUMEZEYUVNN1FVRkRSQ3hqUVVGUkxFVkJRVVVz
YjBKQlFWYzdRVUZEYmtJc1pVRkJUeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETzA5QlEycENP
MHRCUTBZc1EwRkJRenRIUVVOSU96dEJRVWRFTEZkQlFWTXNVMEZCVXl4RFFVRkRMRXRCUVVzc1JV
RkJSU3hQUVVGUExFVkJRVVVzUjBGQlJ5eEZRVUZGTzBGQlEzUkRMRkZCUVVrc1QwRnFSRVVzVDBG
QlR5eERRV2xFUkN4TFFVRkxMRU5CUVVNc1JVRkJSVHRCUVVOc1FpeFZRVUZKTEVkQlFVY3NSMEZC
Unl4RlFVRkZMRU5CUVVNN08wRkJSV0lzVjBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRM
RVZCUVVVc1IwRkJSeXhIUVVGSExFdEJRVXNzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4SFFV
RkhMRWRCUVVjc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdEJRVU5vUkN4WFFVRkhMRU5CUVVN
c1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5C
UVVNc1EwRkJReXhGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTTdUMEZEZGtNN1FVRkRS
Q3hoUVVGUExFZEJRVWNzUTBGQlF6dExRVU5hTEUxQlFVMHNTVUZCU1N4UFFVRlBMRXRCUVVzc1Mw
RkJTeXhUUVVGVExFbEJRVWtzVDBGQlR5eExRVUZMTEV0QlFVc3NVVUZCVVN4RlFVRkZPenRCUVVW
c1JTeGhRVUZQTEV0QlFVc3NSMEZCUnl4RlFVRkZMRU5CUVVNN1MwRkRia0k3UVVGRFJDeFhRVUZQ
TEV0QlFVc3NRMEZCUXp0SFFVTmtPenRCUVVkRUxGZEJRVk1zVDBGQlR5eERRVUZETEU5QlFVOHNS
VUZCUlR0QlFVTjRRaXhSUVVGSkxFTkJRVU1zVDBGQlR5eEhRVUZITEU5QlFVOHNRMEZCUXp0QlFV
TjJRaXhSUVVGSkxFTkJRVU1zVFVGQlRTeEhRVUZITEVWQlFVVXNRMEZCUXp0SFFVTnNRanM3UVVG
RlJDeFRRVUZQTEVOQlFVTXNVMEZCVXl4SFFVRkhPMEZCUTJ4Q0xGZEJRVThzUlVGQlFTeHRRa0ZC
Unp0QlFVTlNMR0ZCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEUxQlFVMHNR
MEZCUXp0TFFVTTFRanRCUVVORUxGZEJRVThzUlVGQlJTeHBRa0ZCVXl4TlFVRk5MRVZCUVVVc1Iw
RkJSeXhGUVVGRk8wRkJRemRDTEZWQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1QwRkJUeXhEUVVG
RExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RlFVRkZMRWRCUVVjc1EwRkJReXhE
UVVGRExFTkJRVU03UzBGRE4wTTdRVUZEUkN4UlFVRkpMRVZCUVVVc1kwRkJVeXhOUVVGTkxFVkJR
VVVzUjBGQlJ5eEZRVUZGTzBGQlF6RkNMRlZCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNT
eERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRkxFZEJRVWNzUTBG
QlF5eERRVUZETEVOQlFVTTdTMEZETVVNN08wRkJSVVFzVTBGQlN5eEZRVUZGTEdsQ1FVRlhPMEZC
UTJoQ0xGVkJRVWtzVFVGQlRTeEhRVUZITEVsQlFVa3NRMEZCUXl4TFFVRkxMRVZCUVVVc1EwRkJR
enRCUVVNeFFpeFZRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRlZCUVZNc1NVRkJTU3hGUVVGRk8w
RkJRM1pDTEdOQlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhKUVVGSkxFVkJRVVVzU1VG
QlNTeEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNN1QwRkRhRU1zUTBGQlF5eERRVUZE
TzBGQlEwZ3NZVUZCVHl4TlFVRk5MRU5CUVVNN1MwRkRaanM3UVVGRlJDeFJRVUZKTEVWQlFVVXNZ
MEZCVXl4SlFVRkpMRVZCUVVVN1FVRkRia0lzVjBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFV
RkRMRVZCUVVVc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNUVUZCVFN4
RlFVRkZMRU5CUVVNc1IwRkJSeXhIUVVGSExFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdRVUZE
ZEVRc1dVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRM
RU5CUVVNc1EwRkJRenRQUVVOMFFqdExRVU5HT3p0QlFVVkVMRk5CUVVzc1JVRkJSU3hwUWtGQlZ6
dEJRVU5vUWl4VlFVRkpMRWRCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zWlVGQlpTeEpRVUZKTEVW
QlFVTXNTMEZCU3l4RlFVRkZMRVZCUVVVc1JVRkJReXhEUVVGRE8wRkJRemxETEdGQlFVOHNTVUZC
U1N4VlFVRlZMRU5CUVVNc1IwRkJSeXhEUVVGRExFdEJRVXNzUTBGQlF5eEpRVUZKTEVWQlFVVXNS
MEZCUnl4RFFVRkRMRXRCUVVzc1EwRkJReXhOUVVGTkxFVkJRVVVzU1VGQlNTeERRVUZETEU5QlFV
OHNRMEZCUXl4RFFVRkRPMHRCUTNaRk8wRkJRMFFzVVVGQlNTeEZRVUZGTEdOQlFWTXNTMEZCU3l4
RlFVRTJRenRWUVVFelF5eEhRVUZITEhsRVFVRkhMRWxCUVVrc1EwRkJReXhsUVVGbExFbEJRVWtz
UlVGQlF5eExRVUZMTEVWQlFVVXNSVUZCUlN4RlFVRkRPenRCUVVNM1JDeFZRVUZKTEV0QlFVc3NX
VUZCV1N4VlFVRlZMRVZCUVVVN1FVRkRMMElzWlVGQlR5eExRVUZMTEVOQlFVTTdUMEZEWkRzN1FV
RkZSQ3hYUVVGTExFZEJRVWNzVTBGQlV5eERRVUZETEV0QlFVc3NSVUZCUlN4SlFVRkpMRVZCUVVV
c1IwRkJSeXhEUVVGRExFTkJRVU03TzBGQlJYQkRMR0ZCUVU4c1NVRkJTU3hWUVVGVkxFTkJRVU1z
UjBGQlJ5eERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRVZCUVVVc1IwRkJSeXhEUVVGRExFdEJR
VXNzUTBGQlF5eE5RVUZOTEVWQlFVVXNTVUZCU1N4RFFVRkRMRTlCUVU4c1JVRkJSU3hMUVVGTExF
TkJRVU1zUTBGQlF6dExRVU01UlRzN1FVRkZSQ3huUWtGQldTeEZRVUZGTEhOQ1FVRlRMRVZCUVVV
c1JVRkJSU3hKUVVGSkxFVkJRVVVzVFVGQlRTeEZRVUZGTzBGQlEzWkRMRmxCUVUwc1IwRkJSeXhK
UVVGSkxFTkJRVU1zV1VGQldTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMEZCUTI1RExHRkJR
VThzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSU3hKUVVGSkxF
ZEJRVWNzUjBGQlJ5eEhRVUZITEVsQlFVa3NSMEZCUnl4SFFVRkhMRWRCUVVjc1IwRkJSeXhGUVVG
RkxFMUJRVTBzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPMHRCUTNCRk96dEJRVVZF
TEdkQ1FVRlpMRVZCUVVVc2MwSkJRVk1zUjBGQlJ5eEZRVUZGTzBGQlF6RkNMR0ZCUVU4c1IwRkJS
eXhIUVVGSExFTkJRVU1zUjBGQlJ5eEhRVUZITEVWQlFVVXNRMEZCUVN4RFFVTnVRaXhQUVVGUExF
TkJRVU1zUzBGQlN5eEZRVUZGTEUxQlFVMHNRMEZCUXl4RFFVTjBRaXhQUVVGUExFTkJRVU1zU1VG
QlNTeEZRVUZGTEV0QlFVc3NRMEZCUXl4RFFVTndRaXhQUVVGUExFTkJRVU1zUzBGQlN5eEZRVUZG
TEV0QlFVc3NRMEZCUXl4RFFVTnlRaXhQUVVGUExFTkJRVU1zUzBGQlN5eEZRVUZGTEV0QlFVc3NR
MEZCUXl4RFFVTnlRaXhQUVVGUExFTkJRVU1zVTBGQlV5eEZRVUZGTEZOQlFWTXNRMEZCUXp0UFFV
TTNRaXhQUVVGUExFTkJRVU1zVTBGQlV5eEZRVUZGTEZOQlFWTXNRMEZCUXl4SFFVRkhMRWRCUVVj
c1EwRkJRenRMUVVONFF6czdRVUZGUkN4cFFrRkJZU3hGUVVGRkxIVkNRVUZUTEVkQlFVY3NSVUZC
UlR0QlFVTXpRaXhWUVVGSkxFdEJRVXNzUjBGQlJ5eEZRVUZGTEVOQlFVTTdPMEZCUldZc1YwRkJT
eXhKUVVGSkxFZEJRVWNzU1VGQlNTeEhRVUZITEVWQlFVVTdRVUZEYmtJc1dVRkJTU3hIUVVGSExF
TkJRVU1zWTBGQll5eERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZPMEZCUXpOQ0xHTkJRVWtzUzBG
QlN5eEhRVUZITEZOQlFWTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVz
U1VGQlNTeERRVUZETEVOQlFVTTdRVUZEZEVNc1kwRkJTU3hMUVVGTExFdEJRVXNzVjBGQlZ5eEZR
VUZGTzBGQlEzcENMR2xDUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNTVUZCU1N4RFFV
RkRMRmxCUVZrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeEhRVUZITEVWQlFVVXNTMEZCU3l4
RFFVRkRMRU5CUVVNc1EwRkJRenRYUVVOc1JEdFRRVU5HTzA5QlEwWTdPMEZCUlVRc1ZVRkJTU3hI
UVVGSExFZEJRVWNzU1VGQlNTeERRVUZETEZsQlFWa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJR
enRCUVVOdVF5eFRRVUZITEVOQlFVTXNUMEZCVHl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8w
RkJRMnBDTEZOQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03UVVG
RFlpeGhRVUZQTEVkQlFVY3NRMEZCUXp0TFFVTmFPenRCUVVkRUxHZENRVUZaTEVWQlFVVXNjMEpC
UVZNc1QwRkJUeXhGUVVGRk8wRkJRemxDTEZWQlFVa3NSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJR
eXhMUVVGTExFVkJRVVVzUTBGQlF6czdRVUZGZGtJc1YwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5
eERRVUZETEVWQlFVVXNSMEZCUnl4SFFVRkhMRTlCUVU4c1EwRkJReXhOUVVGTkxFVkJRVVVzUTBG
QlF5eEhRVUZITEVkQlFVY3NSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRCUVVOc1JDeFpRVUZK
TEVOQlFVTXNSVUZCUlR0QlFVTk1MR0ZCUVVjc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eERR
VUZETEVOQlFVTTdVMEZEWkRzN1FVRkZSQ3hYUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEZOQlFW
TXNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEVO
QlFVTXNRMEZCUXp0UFFVTjBRenM3UVVGRlJDeGhRVUZQTEVkQlFVY3NRMEZCUXp0TFFVTmFPenRC
UVVWRUxHbENRVUZoTEVWQlFVVXNkVUpCUVZNc1QwRkJUeXhGUVVGRk8wRkJReTlDTEZWQlFVa3NS
MEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFV
TTdRVUZEY2tNc1UwRkJSeXhEUVVGRExFOUJRVThzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0
QlFVTnFRaXhUUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPenRC
UVVWaUxHRkJRVThzUjBGQlJ5eERRVUZETzB0QlExbzdSMEZEUml4RFFVRkRPenR0UWtGRllTeFBR
VUZQSWl3aVptbHNaU0k2SW1OdlpHVXRaMlZ1TG1weklpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9s
c2lMeW9nWjJ4dlltRnNJR1JsWm1sdVpTQXFMMXh1YVcxd2IzSjBJSHRwYzBGeWNtRjVmU0JtY205
dElDY3VMaTkxZEdsc2N5YzdYRzVjYm14bGRDQlRiM1Z5WTJWT2IyUmxPMXh1WEc1MGNua2dlMXh1
SUNBdktpQnBjM1JoYm1KMWJDQnBaMjV2Y21VZ2JtVjRkQ0FxTDF4dUlDQnBaaUFvZEhsd1pXOW1J
R1JsWm1sdVpTQWhQVDBnSjJaMWJtTjBhVzl1SnlCOGZDQWhaR1ZtYVc1bExtRnRaQ2tnZTF4dUlD
QWdJQzh2SUZkbElHUnZiaWQwSUhOMWNIQnZjblFnZEdocGN5QnBiaUJCVFVRZ1pXNTJhWEp2Ym0x
bGJuUnpMaUJHYjNJZ2RHaGxjMlVnWlc1MmFYSnZibTFsYm5SekxDQjNaU0JoYzNWemJXVWdkR2ho
ZEZ4dUlDQWdJQzh2SUhSb1pYa2dZWEpsSUhKMWJtNXBibWNnYjI0Z2RHaGxJR0p5YjNkelpYSWdZ
VzVrSUhSb2RYTWdhR0YyWlNCdWJ5QnVaV1ZrSUdadmNpQjBhR1VnYzI5MWNtTmxMVzFoY0NCc2FX
SnlZWEo1TGx4dUlDQWdJR3hsZENCVGIzVnlZMlZOWVhBZ1BTQnlaWEYxYVhKbEtDZHpiM1Z5WTJV
dGJXRndKeWs3WEc0Z0lDQWdVMjkxY21ObFRtOWtaU0E5SUZOdmRYSmpaVTFoY0M1VGIzVnlZMlZP
YjJSbE8xeHVJQ0I5WEc1OUlHTmhkR05vSUNobGNuSXBJSHRjYmlBZ0x5b2dUazlRSUNvdlhHNTlY
RzVjYmk4cUlHbHpkR0Z1WW5Wc0lHbG5ibTl5WlNCcFpqb2dkR1Z6ZEdWa0lHSjFkQ0J1YjNRZ1ky
OTJaWEpsWkNCcGJpQnBjM1JoYm1KMWJDQmtkV1VnZEc4Z1pHbHpkQ0JpZFdsc1pDQWdLaTljYm1s
bUlDZ2hVMjkxY21ObFRtOWtaU2tnZTF4dUlDQlRiM1Z5WTJWT2IyUmxJRDBnWm5WdVkzUnBiMjRv
YkdsdVpTd2dZMjlzZFcxdUxDQnpjbU5HYVd4bExDQmphSFZ1YTNNcElIdGNiaUFnSUNCMGFHbHpM
bk55WXlBOUlDY25PMXh1SUNBZ0lHbG1JQ2hqYUhWdWEzTXBJSHRjYmlBZ0lDQWdJSFJvYVhNdVlX
UmtLR05vZFc1cmN5azdYRzRnSUNBZ2ZWeHVJQ0I5TzF4dUlDQXZLaUJwYzNSaGJtSjFiQ0JwWjI1
dmNtVWdibVY0ZENBcUwxeHVJQ0JUYjNWeVkyVk9iMlJsTG5CeWIzUnZkSGx3WlNBOUlIdGNiaUFn
SUNCaFpHUTZJR1oxYm1OMGFXOXVLR05vZFc1cmN5a2dlMXh1SUNBZ0lDQWdhV1lnS0dselFYSnlZ
WGtvWTJoMWJtdHpLU2tnZTF4dUlDQWdJQ0FnSUNCamFIVnVhM01nUFNCamFIVnVhM011YW05cGJp
Z25KeWs3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdJQ0IwYUdsekxuTnlZeUFyUFNCamFIVnVhM003WEc0
Z0lDQWdmU3hjYmlBZ0lDQndjbVZ3Wlc1a09pQm1kVzVqZEdsdmJpaGphSFZ1YTNNcElIdGNiaUFn
SUNBZ0lHbG1JQ2hwYzBGeWNtRjVLR05vZFc1cmN5a3BJSHRjYmlBZ0lDQWdJQ0FnWTJoMWJtdHpJ
RDBnWTJoMWJtdHpMbXB2YVc0b0p5Y3BPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdkR2hwY3k1emNt
TWdQU0JqYUhWdWEzTWdLeUIwYUdsekxuTnlZenRjYmlBZ0lDQjlMRnh1SUNBZ0lIUnZVM1J5YVc1
blYybDBhRk52ZFhKalpVMWhjRG9nWm5WdVkzUnBiMjRvS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRn
ZTJOdlpHVTZJSFJvYVhNdWRHOVRkSEpwYm1jb0tYMDdYRzRnSUNBZ2ZTeGNiaUFnSUNCMGIxTjBj
bWx1WnpvZ1puVnVZM1JwYjI0b0tTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z2RHaHBjeTV6Y21NN1hH
NGdJQ0FnZlZ4dUlDQjlPMXh1ZlZ4dVhHNWNibVoxYm1OMGFXOXVJR05oYzNSRGFIVnVheWhqYUhW
dWF5d2dZMjlrWlVkbGJpd2diRzlqS1NCN1hHNGdJR2xtSUNocGMwRnljbUY1S0dOb2RXNXJLU2tn
ZTF4dUlDQWdJR3hsZENCeVpYUWdQU0JiWFR0Y2JseHVJQ0FnSUdadmNpQW9iR1YwSUdrZ1BTQXdM
Q0JzWlc0Z1BTQmphSFZ1YXk1c1pXNW5kR2c3SUdrZ1BDQnNaVzQ3SUdrckt5a2dlMXh1SUNBZ0lD
QWdjbVYwTG5CMWMyZ29ZMjlrWlVkbGJpNTNjbUZ3S0dOb2RXNXJXMmxkTENCc2IyTXBLVHRjYmlB
Z0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUhKbGREdGNiaUFnZlNCbGJITmxJR2xtSUNoMGVYQmxiMlln
WTJoMWJtc2dQVDA5SUNkaWIyOXNaV0Z1SnlCOGZDQjBlWEJsYjJZZ1kyaDFibXNnUFQwOUlDZHVk
VzFpWlhJbktTQjdYRzRnSUNBZ0x5OGdTR0Z1Wkd4bElIQnlhVzFwZEdsMlpYTWdkR2hoZENCMGFH
VWdVMjkxY21ObFRtOWtaU0IzYVd4c0lIUm9jbTkzSUhWd0lHOXVYRzRnSUNBZ2NtVjBkWEp1SUdO
b2RXNXJJQ3NnSnljN1hHNGdJSDFjYmlBZ2NtVjBkWEp1SUdOb2RXNXJPMXh1ZlZ4dVhHNWNibVox
Ym1OMGFXOXVJRU52WkdWSFpXNG9jM0pqUm1sc1pTa2dlMXh1SUNCMGFHbHpMbk55WTBacGJHVWdQ
U0J6Y21OR2FXeGxPMXh1SUNCMGFHbHpMbk52ZFhKalpTQTlJRnRkTzF4dWZWeHVYRzVEYjJSbFIy
VnVMbkJ5YjNSdmRIbHdaU0E5SUh0Y2JpQWdhWE5GYlhCMGVTZ3BJSHRjYmlBZ0lDQnlaWFIxY200
Z0lYUm9hWE11YzI5MWNtTmxMbXhsYm1kMGFEdGNiaUFnZlN4Y2JpQWdjSEpsY0dWdVpEb2dablZ1
WTNScGIyNG9jMjkxY21ObExDQnNiMk1wSUh0Y2JpQWdJQ0IwYUdsekxuTnZkWEpqWlM1MWJuTm9h
V1owS0hSb2FYTXVkM0poY0NoemIzVnlZMlVzSUd4dll5a3BPMXh1SUNCOUxGeHVJQ0J3ZFhOb09p
Qm1kVzVqZEdsdmJpaHpiM1Z5WTJVc0lHeHZZeWtnZTF4dUlDQWdJSFJvYVhNdWMyOTFjbU5sTG5C
MWMyZ29kR2hwY3k1M2NtRndLSE52ZFhKalpTd2diRzlqS1NrN1hHNGdJSDBzWEc1Y2JpQWdiV1Z5
WjJVNklHWjFibU4wYVc5dUtDa2dlMXh1SUNBZ0lHeGxkQ0J6YjNWeVkyVWdQU0IwYUdsekxtVnRj
SFI1S0NrN1hHNGdJQ0FnZEdocGN5NWxZV05vS0daMWJtTjBhVzl1S0d4cGJtVXBJSHRjYmlBZ0lD
QWdJSE52ZFhKalpTNWhaR1FvV3ljZ0lDY3NJR3hwYm1Vc0lDZGNYRzRuWFNrN1hHNGdJQ0FnZlNr
N1hHNGdJQ0FnY21WMGRYSnVJSE52ZFhKalpUdGNiaUFnZlN4Y2JseHVJQ0JsWVdOb09pQm1kVzVq
ZEdsdmJpaHBkR1Z5S1NCN1hHNGdJQ0FnWm05eUlDaHNaWFFnYVNBOUlEQXNJR3hsYmlBOUlIUm9h
WE11YzI5MWNtTmxMbXhsYm1kMGFEc2dhU0E4SUd4bGJqc2dhU3NyS1NCN1hHNGdJQ0FnSUNCcGRH
VnlLSFJvYVhNdWMyOTFjbU5sVzJsZEtUdGNiaUFnSUNCOVhHNGdJSDBzWEc1Y2JpQWdaVzF3ZEhr
NklHWjFibU4wYVc5dUtDa2dlMXh1SUNBZ0lHeGxkQ0JzYjJNZ1BTQjBhR2x6TG1OMWNuSmxiblJN
YjJOaGRHbHZiaUI4ZkNCN2MzUmhjblE2SUh0OWZUdGNiaUFnSUNCeVpYUjFjbTRnYm1WM0lGTnZk
WEpqWlU1dlpHVW9iRzlqTG5OMFlYSjBMbXhwYm1Vc0lHeHZZeTV6ZEdGeWRDNWpiMngxYlc0c0lI
Um9hWE11YzNKalJtbHNaU2s3WEc0Z0lIMHNYRzRnSUhkeVlYQTZJR1oxYm1OMGFXOXVLR05vZFc1
ckxDQnNiMk1nUFNCMGFHbHpMbU4xY25KbGJuUk1iMk5oZEdsdmJpQjhmQ0I3YzNSaGNuUTZJSHQ5
ZlNrZ2UxeHVJQ0FnSUdsbUlDaGphSFZ1YXlCcGJuTjBZVzVqWlc5bUlGTnZkWEpqWlU1dlpHVXBJ
SHRjYmlBZ0lDQWdJSEpsZEhWeWJpQmphSFZ1YXp0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JqYUhWdWF5
QTlJR05oYzNSRGFIVnVheWhqYUhWdWF5d2dkR2hwY3l3Z2JHOWpLVHRjYmx4dUlDQWdJSEpsZEhW
eWJpQnVaWGNnVTI5MWNtTmxUbTlrWlNoc2IyTXVjM1JoY25RdWJHbHVaU3dnYkc5akxuTjBZWEow
TG1OdmJIVnRiaXdnZEdocGN5NXpjbU5HYVd4bExDQmphSFZ1YXlrN1hHNGdJSDBzWEc1Y2JpQWda
blZ1WTNScGIyNURZV3hzT2lCbWRXNWpkR2x2YmlobWJpd2dkSGx3WlN3Z2NHRnlZVzF6S1NCN1hH
NGdJQ0FnY0dGeVlXMXpJRDBnZEdocGN5NW5aVzVsY21GMFpVeHBjM1FvY0dGeVlXMXpLVHRjYmlB
Z0lDQnlaWFIxY200Z2RHaHBjeTUzY21Gd0tGdG1iaXdnZEhsd1pTQS9JQ2N1SnlBcklIUjVjR1Vn
S3lBbktDY2dPaUFuS0Njc0lIQmhjbUZ0Y3l3Z0p5a25YU2s3WEc0Z0lIMHNYRzVjYmlBZ2NYVnZk
R1ZrVTNSeWFXNW5PaUJtZFc1amRHbHZiaWh6ZEhJcElIdGNiaUFnSUNCeVpYUjFjbTRnSjF3aUp5
QXJJQ2h6ZEhJZ0t5QW5KeWxjYmlBZ0lDQWdJQzV5WlhCc1lXTmxLQzljWEZ4Y0wyY3NJQ2RjWEZ4
Y1hGeGNYQ2NwWEc0Z0lDQWdJQ0F1Y21Wd2JHRmpaU2d2WENJdlp5d2dKMXhjWEZ4Y0lpY3BYRzRn
SUNBZ0lDQXVjbVZ3YkdGalpTZ3ZYRnh1TDJjc0lDZGNYRnhjYmljcFhHNGdJQ0FnSUNBdWNtVndi
R0ZqWlNndlhGeHlMMmNzSUNkY1hGeGNjaWNwWEc0Z0lDQWdJQ0F1Y21Wd2JHRmpaU2d2WEZ4MU1q
QXlPQzluTENBblhGeGNYSFV5TURJNEp5a2dJQ0F2THlCUVpYSWdSV050WVMweU5qSWdOeTR6SUNz
Z055NDRMalJjYmlBZ0lDQWdJQzV5WlhCc1lXTmxLQzljWEhVeU1ESTVMMmNzSUNkY1hGeGNkVEl3
TWprbktTQXJJQ2RjSWljN1hHNGdJSDBzWEc1Y2JpQWdiMkpxWldOMFRHbDBaWEpoYkRvZ1puVnVZ
M1JwYjI0b2IySnFLU0I3WEc0Z0lDQWdiR1YwSUhCaGFYSnpJRDBnVzEwN1hHNWNiaUFnSUNCbWIz
SWdLR3hsZENCclpYa2dhVzRnYjJKcUtTQjdYRzRnSUNBZ0lDQnBaaUFvYjJKcUxtaGhjMDkzYmxC
eWIzQmxjblI1S0d0bGVTa3BJSHRjYmlBZ0lDQWdJQ0FnYkdWMElIWmhiSFZsSUQwZ1kyRnpkRU5v
ZFc1cktHOWlhbHRyWlhsZExDQjBhR2x6S1R0Y2JpQWdJQ0FnSUNBZ2FXWWdLSFpoYkhWbElDRTlQ
U0FuZFc1a1pXWnBibVZrSnlrZ2UxeHVJQ0FnSUNBZ0lDQWdJSEJoYVhKekxuQjFjMmdvVzNSb2FY
TXVjWFZ2ZEdWa1UzUnlhVzVuS0d0bGVTa3NJQ2M2Snl3Z2RtRnNkV1ZkS1R0Y2JpQWdJQ0FnSUNB
Z2ZWeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JseHVJQ0FnSUd4bGRDQnlaWFFnUFNCMGFHbHpMbWRs
Ym1WeVlYUmxUR2x6ZENod1lXbHljeWs3WEc0Z0lDQWdjbVYwTG5CeVpYQmxibVFvSjNzbktUdGNi
aUFnSUNCeVpYUXVZV1JrS0NkOUp5azdYRzRnSUNBZ2NtVjBkWEp1SUhKbGREdGNiaUFnZlN4Y2Js
eHVYRzRnSUdkbGJtVnlZWFJsVEdsemREb2dablZ1WTNScGIyNG9aVzUwY21sbGN5a2dlMXh1SUNB
Z0lHeGxkQ0J5WlhRZ1BTQjBhR2x6TG1WdGNIUjVLQ2s3WEc1Y2JpQWdJQ0JtYjNJZ0tHeGxkQ0Jw
SUQwZ01Dd2diR1Z1SUQwZ1pXNTBjbWxsY3k1c1pXNW5kR2c3SUdrZ1BDQnNaVzQ3SUdrckt5a2dl
MXh1SUNBZ0lDQWdhV1lnS0drcElIdGNiaUFnSUNBZ0lDQWdjbVYwTG1Ga1pDZ25MQ2NwTzF4dUlD
QWdJQ0FnZlZ4dVhHNGdJQ0FnSUNCeVpYUXVZV1JrS0dOaGMzUkRhSFZ1YXlobGJuUnlhV1Z6VzJs
ZExDQjBhR2x6S1NrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnY21WMGRYSnVJSEpsZER0Y2JpQWdmU3hj
Ymx4dUlDQm5aVzVsY21GMFpVRnljbUY1T2lCbWRXNWpkR2x2YmlobGJuUnlhV1Z6S1NCN1hHNGdJ
Q0FnYkdWMElISmxkQ0E5SUhSb2FYTXVaMlZ1WlhKaGRHVk1hWE4wS0dWdWRISnBaWE1wTzF4dUlD
QWdJSEpsZEM1d2NtVndaVzVrS0NkYkp5azdYRzRnSUNBZ2NtVjBMbUZrWkNnblhTY3BPMXh1WEc0
Z0lDQWdjbVYwZFhKdUlISmxkRHRjYmlBZ2ZWeHVmVHRjYmx4dVpYaHdiM0owSUdSbFptRjFiSFFn
UTI5a1pVZGxianRjYmx4dUlsMTkKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2Rl
X21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2FtZC9oYW5kbGViYXJzL2NvbXBpbGVyL2NvbXBpbGVy
LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvYW1k
L2hhbmRsZWJhcnMvY29tcGlsZXIvY29tcGlsZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzFlZGMxNWRlYjQ5
MmY1ODUyMjE4ZjQ4N2IyNmVhNzBkYTY0NGIwYgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2FtZC9oYW5kbGViYXJzL2Nv
bXBpbGVyL2NvbXBpbGVyLmpzCkBAIC0wLDAgKzEsNTY4IEBACitkZWZpbmUoWydleHBvcnRzJywg
Jy4uL2V4Y2VwdGlvbicsICcuLi91dGlscycsICcuL2FzdCddLCBmdW5jdGlvbiAoZXhwb3J0cywg
X2V4Y2VwdGlvbiwgX3V0aWxzLCBfYXN0KSB7CisgIC8qIGVzbGludC1kaXNhYmxlIG5ldy1jYXAg
Ki8KKworICAndXNlIHN0cmljdCc7CisKKyAgZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKKyAg
ZXhwb3J0cy5Db21waWxlciA9IENvbXBpbGVyOworICBleHBvcnRzLnByZWNvbXBpbGUgPSBwcmVj
b21waWxlOworICBleHBvcnRzLmNvbXBpbGUgPSBjb21waWxlOworICAvLyBpc3RhbmJ1bCBpZ25v
cmUgbmV4dAorCisgIGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVy
biBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH0KKwor
ICB2YXIgX0V4Y2VwdGlvbiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2V4Y2VwdGlvbik7CisK
KyAgdmFyIF9BU1QgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hc3QpOworCisgIHZhciBzbGlj
ZSA9IFtdLnNsaWNlOworCisgIGZ1bmN0aW9uIENvbXBpbGVyKCkge30KKworICAvLyB0aGUgZm91
bmRIZWxwZXIgcmVnaXN0ZXIgd2lsbCBkaXNhbWJpZ3VhdGUgaGVscGVyIGxvb2t1cCBmcm9tIGZp
bmRpbmcgYQorICAvLyBmdW5jdGlvbiBpbiBhIGNvbnRleHQuIFRoaXMgaXMgbmVjZXNzYXJ5IGZv
ciBtdXN0YWNoZSBjb21wYXRpYmlsaXR5LCB3aGljaAorICAvLyByZXF1aXJlcyB0aGF0IGNvbnRl
eHQgZnVuY3Rpb25zIGluIGJsb2NrcyBhcmUgZXZhbHVhdGVkIGJ5IGJsb2NrSGVscGVyTWlzc2lu
ZywKKyAgLy8gYW5kIHRoZW4gcHJvY2VlZCBhcyBpZiB0aGUgcmVzdWx0aW5nIHZhbHVlIHdhcyBw
cm92aWRlZCB0byBibG9ja0hlbHBlck1pc3NpbmcuCisKKyAgQ29tcGlsZXIucHJvdG90eXBlID0g
eworICAgIGNvbXBpbGVyOiBDb21waWxlciwKKworICAgIGVxdWFsczogZnVuY3Rpb24gZXF1YWxz
KG90aGVyKSB7CisgICAgICB2YXIgbGVuID0gdGhpcy5vcGNvZGVzLmxlbmd0aDsKKyAgICAgIGlm
IChvdGhlci5vcGNvZGVzLmxlbmd0aCAhPT0gbGVuKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgIH0KKworICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAg
ICB2YXIgb3Bjb2RlID0gdGhpcy5vcGNvZGVzW2ldLAorICAgICAgICAgICAgb3RoZXJPcGNvZGUg
PSBvdGhlci5vcGNvZGVzW2ldOworICAgICAgICBpZiAob3Bjb2RlLm9wY29kZSAhPT0gb3RoZXJP
cGNvZGUub3Bjb2RlIHx8ICFhcmdFcXVhbHMob3Bjb2RlLmFyZ3MsIG90aGVyT3Bjb2RlLmFyZ3Mp
KSB7CisgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICB9CisKKyAgICAg
IC8vIFdlIGtub3cgdGhhdCBsZW5ndGggaXMgdGhlIHNhbWUgYmV0d2VlbiB0aGUgdHdvIGFycmF5
cyBiZWNhdXNlIHRoZXkgYXJlIGRpcmVjdGx5IHRpZWQKKyAgICAgIC8vIHRvIHRoZSBvcGNvZGUg
YmVoYXZpb3IgYWJvdmUuCisgICAgICBsZW4gPSB0aGlzLmNoaWxkcmVuLmxlbmd0aDsKKyAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgaWYgKCF0aGlzLmNoaWxk
cmVuW2ldLmVxdWFscyhvdGhlci5jaGlsZHJlbltpXSkpIHsKKyAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgcmV0dXJuIHRydWU7CisgICAgfSwKKwor
ICAgIGd1aWQ6IDAsCisKKyAgICBjb21waWxlOiBmdW5jdGlvbiBjb21waWxlKHByb2dyYW0sIG9w
dGlvbnMpIHsKKyAgICAgIHRoaXMuc291cmNlTm9kZSA9IFtdOworICAgICAgdGhpcy5vcGNvZGVz
ID0gW107CisgICAgICB0aGlzLmNoaWxkcmVuID0gW107CisgICAgICB0aGlzLm9wdGlvbnMgPSBv
cHRpb25zOworICAgICAgdGhpcy5zdHJpbmdQYXJhbXMgPSBvcHRpb25zLnN0cmluZ1BhcmFtczsK
KyAgICAgIHRoaXMudHJhY2tJZHMgPSBvcHRpb25zLnRyYWNrSWRzOworCisgICAgICBvcHRpb25z
LmJsb2NrUGFyYW1zID0gb3B0aW9ucy5ibG9ja1BhcmFtcyB8fCBbXTsKKworICAgICAgLy8gVGhl
c2UgY2hhbmdlcyB3aWxsIHByb3BhZ2F0ZSB0byB0aGUgb3RoZXIgY29tcGlsZXIgY29tcG9uZW50
cworICAgICAgdmFyIGtub3duSGVscGVycyA9IG9wdGlvbnMua25vd25IZWxwZXJzOworICAgICAg
b3B0aW9ucy5rbm93bkhlbHBlcnMgPSB7CisgICAgICAgICdoZWxwZXJNaXNzaW5nJzogdHJ1ZSwK
KyAgICAgICAgJ2Jsb2NrSGVscGVyTWlzc2luZyc6IHRydWUsCisgICAgICAgICdlYWNoJzogdHJ1
ZSwKKyAgICAgICAgJ2lmJzogdHJ1ZSwKKyAgICAgICAgJ3VubGVzcyc6IHRydWUsCisgICAgICAg
ICd3aXRoJzogdHJ1ZSwKKyAgICAgICAgJ2xvZyc6IHRydWUsCisgICAgICAgICdsb29rdXAnOiB0
cnVlCisgICAgICB9OworICAgICAgaWYgKGtub3duSGVscGVycykgeworICAgICAgICBmb3IgKHZh
ciBfbmFtZSBpbiBrbm93bkhlbHBlcnMpIHsKKyAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUg
ZWxzZSAqLworICAgICAgICAgIGlmIChfbmFtZSBpbiBrbm93bkhlbHBlcnMpIHsKKyAgICAgICAg
ICAgIG9wdGlvbnMua25vd25IZWxwZXJzW19uYW1lXSA9IGtub3duSGVscGVyc1tfbmFtZV07Cisg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisKKyAgICAgIHJldHVybiB0aGlzLmFjY2Vw
dChwcm9ncmFtKTsKKyAgICB9LAorCisgICAgY29tcGlsZVByb2dyYW06IGZ1bmN0aW9uIGNvbXBp
bGVQcm9ncmFtKHByb2dyYW0pIHsKKyAgICAgIHZhciBjaGlsZENvbXBpbGVyID0gbmV3IHRoaXMu
Y29tcGlsZXIoKSwKKyAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5ldy1jYXAKKyAg
ICAgIHJlc3VsdCA9IGNoaWxkQ29tcGlsZXIuY29tcGlsZShwcm9ncmFtLCB0aGlzLm9wdGlvbnMp
LAorICAgICAgICAgIGd1aWQgPSB0aGlzLmd1aWQrKzsKKworICAgICAgdGhpcy51c2VQYXJ0aWFs
ID0gdGhpcy51c2VQYXJ0aWFsIHx8IHJlc3VsdC51c2VQYXJ0aWFsOworCisgICAgICB0aGlzLmNo
aWxkcmVuW2d1aWRdID0gcmVzdWx0OworICAgICAgdGhpcy51c2VEZXB0aHMgPSB0aGlzLnVzZURl
cHRocyB8fCByZXN1bHQudXNlRGVwdGhzOworCisgICAgICByZXR1cm4gZ3VpZDsKKyAgICB9LAor
CisgICAgYWNjZXB0OiBmdW5jdGlvbiBhY2NlcHQobm9kZSkgeworICAgICAgLyogaXN0YW5idWwg
aWdub3JlIG5leHQ6IFNhbml0eSBjb2RlICovCisgICAgICBpZiAoIXRoaXNbbm9kZS50eXBlXSkg
eworICAgICAgICB0aHJvdyBuZXcgX0V4Y2VwdGlvblsnZGVmYXVsdCddKCdVbmtub3duIHR5cGU6
ICcgKyBub2RlLnR5cGUsIG5vZGUpOworICAgICAgfQorCisgICAgICB0aGlzLnNvdXJjZU5vZGUu
dW5zaGlmdChub2RlKTsKKyAgICAgIHZhciByZXQgPSB0aGlzW25vZGUudHlwZV0obm9kZSk7Cisg
ICAgICB0aGlzLnNvdXJjZU5vZGUuc2hpZnQoKTsKKyAgICAgIHJldHVybiByZXQ7CisgICAgfSwK
KworICAgIFByb2dyYW06IGZ1bmN0aW9uIFByb2dyYW0ocHJvZ3JhbSkgeworICAgICAgdGhpcy5v
cHRpb25zLmJsb2NrUGFyYW1zLnVuc2hpZnQocHJvZ3JhbS5ibG9ja1BhcmFtcyk7CisKKyAgICAg
IHZhciBib2R5ID0gcHJvZ3JhbS5ib2R5LAorICAgICAgICAgIGJvZHlMZW5ndGggPSBib2R5Lmxl
bmd0aDsKKyAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYm9keUxlbmd0aDsgaSsrKSB7CisgICAg
ICAgIHRoaXMuYWNjZXB0KGJvZHlbaV0pOworICAgICAgfQorCisgICAgICB0aGlzLm9wdGlvbnMu
YmxvY2tQYXJhbXMuc2hpZnQoKTsKKworICAgICAgdGhpcy5pc1NpbXBsZSA9IGJvZHlMZW5ndGgg
PT09IDE7CisgICAgICB0aGlzLmJsb2NrUGFyYW1zID0gcHJvZ3JhbS5ibG9ja1BhcmFtcyA/IHBy
b2dyYW0uYmxvY2tQYXJhbXMubGVuZ3RoIDogMDsKKworICAgICAgcmV0dXJuIHRoaXM7CisgICAg
fSwKKworICAgIEJsb2NrU3RhdGVtZW50OiBmdW5jdGlvbiBCbG9ja1N0YXRlbWVudChibG9jaykg
eworICAgICAgdHJhbnNmb3JtTGl0ZXJhbFRvUGF0aChibG9jayk7CisKKyAgICAgIHZhciBwcm9n
cmFtID0gYmxvY2sucHJvZ3JhbSwKKyAgICAgICAgICBpbnZlcnNlID0gYmxvY2suaW52ZXJzZTsK
KworICAgICAgcHJvZ3JhbSA9IHByb2dyYW0gJiYgdGhpcy5jb21waWxlUHJvZ3JhbShwcm9ncmFt
KTsKKyAgICAgIGludmVyc2UgPSBpbnZlcnNlICYmIHRoaXMuY29tcGlsZVByb2dyYW0oaW52ZXJz
ZSk7CisKKyAgICAgIHZhciB0eXBlID0gdGhpcy5jbGFzc2lmeVNleHByKGJsb2NrKTsKKworICAg
ICAgaWYgKHR5cGUgPT09ICdoZWxwZXInKSB7CisgICAgICAgIHRoaXMuaGVscGVyU2V4cHIoYmxv
Y2ssIHByb2dyYW0sIGludmVyc2UpOworICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnc2ltcGxl
JykgeworICAgICAgICB0aGlzLnNpbXBsZVNleHByKGJsb2NrKTsKKworICAgICAgICAvLyBub3cg
dGhhdCB0aGUgc2ltcGxlIG11c3RhY2hlIGlzIHJlc29sdmVkLCB3ZSBuZWVkIHRvCisgICAgICAg
IC8vIGV2YWx1YXRlIGl0IGJ5IGV4ZWN1dGluZyBgYmxvY2tIZWxwZXJNaXNzaW5nYAorICAgICAg
ICB0aGlzLm9wY29kZSgncHVzaFByb2dyYW0nLCBwcm9ncmFtKTsKKyAgICAgICAgdGhpcy5vcGNv
ZGUoJ3B1c2hQcm9ncmFtJywgaW52ZXJzZSk7CisgICAgICAgIHRoaXMub3Bjb2RlKCdlbXB0eUhh
c2gnKTsKKyAgICAgICAgdGhpcy5vcGNvZGUoJ2Jsb2NrVmFsdWUnLCBibG9jay5wYXRoLm9yaWdp
bmFsKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHRoaXMuYW1iaWd1b3VzU2V4cHIoYmxvY2ss
IHByb2dyYW0sIGludmVyc2UpOworCisgICAgICAgIC8vIG5vdyB0aGF0IHRoZSBzaW1wbGUgbXVz
dGFjaGUgaXMgcmVzb2x2ZWQsIHdlIG5lZWQgdG8KKyAgICAgICAgLy8gZXZhbHVhdGUgaXQgYnkg
ZXhlY3V0aW5nIGBibG9ja0hlbHBlck1pc3NpbmdgCisgICAgICAgIHRoaXMub3Bjb2RlKCdwdXNo
UHJvZ3JhbScsIHByb2dyYW0pOworICAgICAgICB0aGlzLm9wY29kZSgncHVzaFByb2dyYW0nLCBp
bnZlcnNlKTsKKyAgICAgICAgdGhpcy5vcGNvZGUoJ2VtcHR5SGFzaCcpOworICAgICAgICB0aGlz
Lm9wY29kZSgnYW1iaWd1b3VzQmxvY2tWYWx1ZScpOworICAgICAgfQorCisgICAgICB0aGlzLm9w
Y29kZSgnYXBwZW5kJyk7CisgICAgfSwKKworICAgIERlY29yYXRvckJsb2NrOiBmdW5jdGlvbiBE
ZWNvcmF0b3JCbG9jayhkZWNvcmF0b3IpIHsKKyAgICAgIHZhciBwcm9ncmFtID0gZGVjb3JhdG9y
LnByb2dyYW0gJiYgdGhpcy5jb21waWxlUHJvZ3JhbShkZWNvcmF0b3IucHJvZ3JhbSk7CisgICAg
ICB2YXIgcGFyYW1zID0gdGhpcy5zZXR1cEZ1bGxNdXN0YWNoZVBhcmFtcyhkZWNvcmF0b3IsIHBy
b2dyYW0sIHVuZGVmaW5lZCksCisgICAgICAgICAgcGF0aCA9IGRlY29yYXRvci5wYXRoOworCisg
ICAgICB0aGlzLnVzZURlY29yYXRvcnMgPSB0cnVlOworICAgICAgdGhpcy5vcGNvZGUoJ3JlZ2lz
dGVyRGVjb3JhdG9yJywgcGFyYW1zLmxlbmd0aCwgcGF0aC5vcmlnaW5hbCk7CisgICAgfSwKKwor
ICAgIFBhcnRpYWxTdGF0ZW1lbnQ6IGZ1bmN0aW9uIFBhcnRpYWxTdGF0ZW1lbnQocGFydGlhbCkg
eworICAgICAgdGhpcy51c2VQYXJ0aWFsID0gdHJ1ZTsKKworICAgICAgdmFyIHByb2dyYW0gPSBw
YXJ0aWFsLnByb2dyYW07CisgICAgICBpZiAocHJvZ3JhbSkgeworICAgICAgICBwcm9ncmFtID0g
dGhpcy5jb21waWxlUHJvZ3JhbShwYXJ0aWFsLnByb2dyYW0pOworICAgICAgfQorCisgICAgICB2
YXIgcGFyYW1zID0gcGFydGlhbC5wYXJhbXM7CisgICAgICBpZiAocGFyYW1zLmxlbmd0aCA+IDEp
IHsKKyAgICAgICAgdGhyb3cgbmV3IF9FeGNlcHRpb25bJ2RlZmF1bHQnXSgnVW5zdXBwb3J0ZWQg
bnVtYmVyIG9mIHBhcnRpYWwgYXJndW1lbnRzOiAnICsgcGFyYW1zLmxlbmd0aCwgcGFydGlhbCk7
CisgICAgICB9IGVsc2UgaWYgKCFwYXJhbXMubGVuZ3RoKSB7CisgICAgICAgIGlmICh0aGlzLm9w
dGlvbnMuZXhwbGljaXRQYXJ0aWFsQ29udGV4dCkgeworICAgICAgICAgIHRoaXMub3Bjb2RlKCdw
dXNoTGl0ZXJhbCcsICd1bmRlZmluZWQnKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBw
YXJhbXMucHVzaCh7IHR5cGU6ICdQYXRoRXhwcmVzc2lvbicsIHBhcnRzOiBbXSwgZGVwdGg6IDAg
fSk7CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgdmFyIHBhcnRpYWxOYW1lID0gcGFydGlh
bC5uYW1lLm9yaWdpbmFsLAorICAgICAgICAgIGlzRHluYW1pYyA9IHBhcnRpYWwubmFtZS50eXBl
ID09PSAnU3ViRXhwcmVzc2lvbic7CisgICAgICBpZiAoaXNEeW5hbWljKSB7CisgICAgICAgIHRo
aXMuYWNjZXB0KHBhcnRpYWwubmFtZSk7CisgICAgICB9CisKKyAgICAgIHRoaXMuc2V0dXBGdWxs
TXVzdGFjaGVQYXJhbXMocGFydGlhbCwgcHJvZ3JhbSwgdW5kZWZpbmVkLCB0cnVlKTsKKworICAg
ICAgdmFyIGluZGVudCA9IHBhcnRpYWwuaW5kZW50IHx8ICcnOworICAgICAgaWYgKHRoaXMub3B0
aW9ucy5wcmV2ZW50SW5kZW50ICYmIGluZGVudCkgeworICAgICAgICB0aGlzLm9wY29kZSgnYXBw
ZW5kQ29udGVudCcsIGluZGVudCk7CisgICAgICAgIGluZGVudCA9ICcnOworICAgICAgfQorCisg
ICAgICB0aGlzLm9wY29kZSgnaW52b2tlUGFydGlhbCcsIGlzRHluYW1pYywgcGFydGlhbE5hbWUs
IGluZGVudCk7CisgICAgICB0aGlzLm9wY29kZSgnYXBwZW5kJyk7CisgICAgfSwKKyAgICBQYXJ0
aWFsQmxvY2tTdGF0ZW1lbnQ6IGZ1bmN0aW9uIFBhcnRpYWxCbG9ja1N0YXRlbWVudChwYXJ0aWFs
QmxvY2spIHsKKyAgICAgIHRoaXMuUGFydGlhbFN0YXRlbWVudChwYXJ0aWFsQmxvY2spOworICAg
IH0sCisKKyAgICBNdXN0YWNoZVN0YXRlbWVudDogZnVuY3Rpb24gTXVzdGFjaGVTdGF0ZW1lbnQo
bXVzdGFjaGUpIHsKKyAgICAgIHRoaXMuU3ViRXhwcmVzc2lvbihtdXN0YWNoZSk7CisKKyAgICAg
IGlmIChtdXN0YWNoZS5lc2NhcGVkICYmICF0aGlzLm9wdGlvbnMubm9Fc2NhcGUpIHsKKyAgICAg
ICAgdGhpcy5vcGNvZGUoJ2FwcGVuZEVzY2FwZWQnKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHRoaXMub3Bjb2RlKCdhcHBlbmQnKTsKKyAgICAgIH0KKyAgICB9LAorICAgIERlY29yYXRvcjog
ZnVuY3Rpb24gRGVjb3JhdG9yKGRlY29yYXRvcikgeworICAgICAgdGhpcy5EZWNvcmF0b3JCbG9j
ayhkZWNvcmF0b3IpOworICAgIH0sCisKKyAgICBDb250ZW50U3RhdGVtZW50OiBmdW5jdGlvbiBD
b250ZW50U3RhdGVtZW50KGNvbnRlbnQpIHsKKyAgICAgIGlmIChjb250ZW50LnZhbHVlKSB7Cisg
ICAgICAgIHRoaXMub3Bjb2RlKCdhcHBlbmRDb250ZW50JywgY29udGVudC52YWx1ZSk7CisgICAg
ICB9CisgICAgfSwKKworICAgIENvbW1lbnRTdGF0ZW1lbnQ6IGZ1bmN0aW9uIENvbW1lbnRTdGF0
ZW1lbnQoKSB7fSwKKworICAgIFN1YkV4cHJlc3Npb246IGZ1bmN0aW9uIFN1YkV4cHJlc3Npb24o
c2V4cHIpIHsKKyAgICAgIHRyYW5zZm9ybUxpdGVyYWxUb1BhdGgoc2V4cHIpOworICAgICAgdmFy
IHR5cGUgPSB0aGlzLmNsYXNzaWZ5U2V4cHIoc2V4cHIpOworCisgICAgICBpZiAodHlwZSA9PT0g
J3NpbXBsZScpIHsKKyAgICAgICAgdGhpcy5zaW1wbGVTZXhwcihzZXhwcik7CisgICAgICB9IGVs
c2UgaWYgKHR5cGUgPT09ICdoZWxwZXInKSB7CisgICAgICAgIHRoaXMuaGVscGVyU2V4cHIoc2V4
cHIpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgdGhpcy5hbWJpZ3VvdXNTZXhwcihzZXhwcik7
CisgICAgICB9CisgICAgfSwKKyAgICBhbWJpZ3VvdXNTZXhwcjogZnVuY3Rpb24gYW1iaWd1b3Vz
U2V4cHIoc2V4cHIsIHByb2dyYW0sIGludmVyc2UpIHsKKyAgICAgIHZhciBwYXRoID0gc2V4cHIu
cGF0aCwKKyAgICAgICAgICBuYW1lID0gcGF0aC5wYXJ0c1swXSwKKyAgICAgICAgICBpc0Jsb2Nr
ID0gcHJvZ3JhbSAhPSBudWxsIHx8IGludmVyc2UgIT0gbnVsbDsKKworICAgICAgdGhpcy5vcGNv
ZGUoJ2dldENvbnRleHQnLCBwYXRoLmRlcHRoKTsKKworICAgICAgdGhpcy5vcGNvZGUoJ3B1c2hQ
cm9ncmFtJywgcHJvZ3JhbSk7CisgICAgICB0aGlzLm9wY29kZSgncHVzaFByb2dyYW0nLCBpbnZl
cnNlKTsKKworICAgICAgcGF0aC5zdHJpY3QgPSB0cnVlOworICAgICAgdGhpcy5hY2NlcHQocGF0
aCk7CisKKyAgICAgIHRoaXMub3Bjb2RlKCdpbnZva2VBbWJpZ3VvdXMnLCBuYW1lLCBpc0Jsb2Nr
KTsKKyAgICB9LAorCisgICAgc2ltcGxlU2V4cHI6IGZ1bmN0aW9uIHNpbXBsZVNleHByKHNleHBy
KSB7CisgICAgICB2YXIgcGF0aCA9IHNleHByLnBhdGg7CisgICAgICBwYXRoLnN0cmljdCA9IHRy
dWU7CisgICAgICB0aGlzLmFjY2VwdChwYXRoKTsKKyAgICAgIHRoaXMub3Bjb2RlKCdyZXNvbHZl
UG9zc2libGVMYW1iZGEnKTsKKyAgICB9LAorCisgICAgaGVscGVyU2V4cHI6IGZ1bmN0aW9uIGhl
bHBlclNleHByKHNleHByLCBwcm9ncmFtLCBpbnZlcnNlKSB7CisgICAgICB2YXIgcGFyYW1zID0g
dGhpcy5zZXR1cEZ1bGxNdXN0YWNoZVBhcmFtcyhzZXhwciwgcHJvZ3JhbSwgaW52ZXJzZSksCisg
ICAgICAgICAgcGF0aCA9IHNleHByLnBhdGgsCisgICAgICAgICAgbmFtZSA9IHBhdGgucGFydHNb
MF07CisKKyAgICAgIGlmICh0aGlzLm9wdGlvbnMua25vd25IZWxwZXJzW25hbWVdKSB7CisgICAg
ICAgIHRoaXMub3Bjb2RlKCdpbnZva2VLbm93bkhlbHBlcicsIHBhcmFtcy5sZW5ndGgsIG5hbWUp
OworICAgICAgfSBlbHNlIGlmICh0aGlzLm9wdGlvbnMua25vd25IZWxwZXJzT25seSkgeworICAg
ICAgICB0aHJvdyBuZXcgX0V4Y2VwdGlvblsnZGVmYXVsdCddKCdZb3Ugc3BlY2lmaWVkIGtub3du
SGVscGVyc09ubHksIGJ1dCB1c2VkIHRoZSB1bmtub3duIGhlbHBlciAnICsgbmFtZSwgc2V4cHIp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcGF0aC5zdHJpY3QgPSB0cnVlOworICAgICAgICBw
YXRoLmZhbHN5ID0gdHJ1ZTsKKworICAgICAgICB0aGlzLmFjY2VwdChwYXRoKTsKKyAgICAgICAg
dGhpcy5vcGNvZGUoJ2ludm9rZUhlbHBlcicsIHBhcmFtcy5sZW5ndGgsIHBhdGgub3JpZ2luYWws
IF9BU1RbJ2RlZmF1bHQnXS5oZWxwZXJzLnNpbXBsZUlkKHBhdGgpKTsKKyAgICAgIH0KKyAgICB9
LAorCisgICAgUGF0aEV4cHJlc3Npb246IGZ1bmN0aW9uIFBhdGhFeHByZXNzaW9uKHBhdGgpIHsK
KyAgICAgIHRoaXMuYWRkRGVwdGgocGF0aC5kZXB0aCk7CisgICAgICB0aGlzLm9wY29kZSgnZ2V0
Q29udGV4dCcsIHBhdGguZGVwdGgpOworCisgICAgICB2YXIgbmFtZSA9IHBhdGgucGFydHNbMF0s
CisgICAgICAgICAgc2NvcGVkID0gX0FTVFsnZGVmYXVsdCddLmhlbHBlcnMuc2NvcGVkSWQocGF0
aCksCisgICAgICAgICAgYmxvY2tQYXJhbUlkID0gIXBhdGguZGVwdGggJiYgIXNjb3BlZCAmJiB0
aGlzLmJsb2NrUGFyYW1JbmRleChuYW1lKTsKKworICAgICAgaWYgKGJsb2NrUGFyYW1JZCkgewor
ICAgICAgICB0aGlzLm9wY29kZSgnbG9va3VwQmxvY2tQYXJhbScsIGJsb2NrUGFyYW1JZCwgcGF0
aC5wYXJ0cyk7CisgICAgICB9IGVsc2UgaWYgKCFuYW1lKSB7CisgICAgICAgIC8vIENvbnRleHQg
cmVmZXJlbmNlLCBpLmUuIGB7e2ZvbyAufX1gIG9yIGB7e2ZvbyAuLn19YAorICAgICAgICB0aGlz
Lm9wY29kZSgncHVzaENvbnRleHQnKTsKKyAgICAgIH0gZWxzZSBpZiAocGF0aC5kYXRhKSB7Cisg
ICAgICAgIHRoaXMub3B0aW9ucy5kYXRhID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5vcGNvZGUoJ2xv
b2t1cERhdGEnLCBwYXRoLmRlcHRoLCBwYXRoLnBhcnRzLCBwYXRoLnN0cmljdCk7CisgICAgICB9
IGVsc2UgeworICAgICAgICB0aGlzLm9wY29kZSgnbG9va3VwT25Db250ZXh0JywgcGF0aC5wYXJ0
cywgcGF0aC5mYWxzeSwgcGF0aC5zdHJpY3QsIHNjb3BlZCk7CisgICAgICB9CisgICAgfSwKKwor
ICAgIFN0cmluZ0xpdGVyYWw6IGZ1bmN0aW9uIFN0cmluZ0xpdGVyYWwoc3RyaW5nKSB7CisgICAg
ICB0aGlzLm9wY29kZSgncHVzaFN0cmluZycsIHN0cmluZy52YWx1ZSk7CisgICAgfSwKKworICAg
IE51bWJlckxpdGVyYWw6IGZ1bmN0aW9uIE51bWJlckxpdGVyYWwobnVtYmVyKSB7CisgICAgICB0
aGlzLm9wY29kZSgncHVzaExpdGVyYWwnLCBudW1iZXIudmFsdWUpOworICAgIH0sCisKKyAgICBC
b29sZWFuTGl0ZXJhbDogZnVuY3Rpb24gQm9vbGVhbkxpdGVyYWwoYm9vbCkgeworICAgICAgdGhp
cy5vcGNvZGUoJ3B1c2hMaXRlcmFsJywgYm9vbC52YWx1ZSk7CisgICAgfSwKKworICAgIFVuZGVm
aW5lZExpdGVyYWw6IGZ1bmN0aW9uIFVuZGVmaW5lZExpdGVyYWwoKSB7CisgICAgICB0aGlzLm9w
Y29kZSgncHVzaExpdGVyYWwnLCAndW5kZWZpbmVkJyk7CisgICAgfSwKKworICAgIE51bGxMaXRl
cmFsOiBmdW5jdGlvbiBOdWxsTGl0ZXJhbCgpIHsKKyAgICAgIHRoaXMub3Bjb2RlKCdwdXNoTGl0
ZXJhbCcsICdudWxsJyk7CisgICAgfSwKKworICAgIEhhc2g6IGZ1bmN0aW9uIEhhc2goaGFzaCkg
eworICAgICAgdmFyIHBhaXJzID0gaGFzaC5wYWlycywKKyAgICAgICAgICBpID0gMCwKKyAgICAg
ICAgICBsID0gcGFpcnMubGVuZ3RoOworCisgICAgICB0aGlzLm9wY29kZSgncHVzaEhhc2gnKTsK
KworICAgICAgZm9yICg7IGkgPCBsOyBpKyspIHsKKyAgICAgICAgdGhpcy5wdXNoUGFyYW0ocGFp
cnNbaV0udmFsdWUpOworICAgICAgfQorICAgICAgd2hpbGUgKGktLSkgeworICAgICAgICB0aGlz
Lm9wY29kZSgnYXNzaWduVG9IYXNoJywgcGFpcnNbaV0ua2V5KTsKKyAgICAgIH0KKyAgICAgIHRo
aXMub3Bjb2RlKCdwb3BIYXNoJyk7CisgICAgfSwKKworICAgIC8vIEhFTFBFUlMKKyAgICBvcGNv
ZGU6IGZ1bmN0aW9uIG9wY29kZShuYW1lKSB7CisgICAgICB0aGlzLm9wY29kZXMucHVzaCh7IG9w
Y29kZTogbmFtZSwgYXJnczogc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpLCBsb2M6IHRoaXMuc291
cmNlTm9kZVswXS5sb2MgfSk7CisgICAgfSwKKworICAgIGFkZERlcHRoOiBmdW5jdGlvbiBhZGRE
ZXB0aChkZXB0aCkgeworICAgICAgaWYgKCFkZXB0aCkgeworICAgICAgICByZXR1cm47CisgICAg
ICB9CisKKyAgICAgIHRoaXMudXNlRGVwdGhzID0gdHJ1ZTsKKyAgICB9LAorCisgICAgY2xhc3Np
ZnlTZXhwcjogZnVuY3Rpb24gY2xhc3NpZnlTZXhwcihzZXhwcikgeworICAgICAgdmFyIGlzU2lt
cGxlID0gX0FTVFsnZGVmYXVsdCddLmhlbHBlcnMuc2ltcGxlSWQoc2V4cHIucGF0aCk7CisKKyAg
ICAgIHZhciBpc0Jsb2NrUGFyYW0gPSBpc1NpbXBsZSAmJiAhIXRoaXMuYmxvY2tQYXJhbUluZGV4
KHNleHByLnBhdGgucGFydHNbMF0pOworCisgICAgICAvLyBhIG11c3RhY2hlIGlzIGFuIGVsaWdp
YmxlIGhlbHBlciBpZjoKKyAgICAgIC8vICogaXRzIGlkIGlzIHNpbXBsZSAoYSBzaW5nbGUgcGFy
dCwgbm90IGB0aGlzYCBvciBgLi5gKQorICAgICAgdmFyIGlzSGVscGVyID0gIWlzQmxvY2tQYXJh
bSAmJiBfQVNUWydkZWZhdWx0J10uaGVscGVycy5oZWxwZXJFeHByZXNzaW9uKHNleHByKTsKKwor
ICAgICAgLy8gaWYgYSBtdXN0YWNoZSBpcyBhbiBlbGlnaWJsZSBoZWxwZXIgYnV0IG5vdCBhIGRl
ZmluaXRlCisgICAgICAvLyBoZWxwZXIsIGl0IGlzIGFtYmlndW91cywgYW5kIHdpbGwgYmUgcmVz
b2x2ZWQgaW4gYSBsYXRlcgorICAgICAgLy8gcGFzcyBvciBhdCBydW50aW1lLgorICAgICAgdmFy
IGlzRWxpZ2libGUgPSAhaXNCbG9ja1BhcmFtICYmIChpc0hlbHBlciB8fCBpc1NpbXBsZSk7CisK
KyAgICAgIC8vIGlmIGFtYmlndW91cywgd2UgY2FuIHBvc3NpYmx5IHJlc29sdmUgdGhlIGFtYmln
dWl0eSBub3cKKyAgICAgIC8vIEFuIGVsaWdpYmxlIGhlbHBlciBpcyBvbmUgdGhhdCBkb2VzIG5v
dCBoYXZlIGEgY29tcGxleCBwYXRoLCBpLmUuIGB0aGlzLmZvb2AsIGAuLi9mb29gIGV0Yy4KKyAg
ICAgIGlmIChpc0VsaWdpYmxlICYmICFpc0hlbHBlcikgeworICAgICAgICB2YXIgX25hbWUyID0g
c2V4cHIucGF0aC5wYXJ0c1swXSwKKyAgICAgICAgICAgIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7
CisKKyAgICAgICAgaWYgKG9wdGlvbnMua25vd25IZWxwZXJzW19uYW1lMl0pIHsKKyAgICAgICAg
ICBpc0hlbHBlciA9IHRydWU7CisgICAgICAgIH0gZWxzZSBpZiAob3B0aW9ucy5rbm93bkhlbHBl
cnNPbmx5KSB7CisgICAgICAgICAgaXNFbGlnaWJsZSA9IGZhbHNlOworICAgICAgICB9CisgICAg
ICB9CisKKyAgICAgIGlmIChpc0hlbHBlcikgeworICAgICAgICByZXR1cm4gJ2hlbHBlcic7Cisg
ICAgICB9IGVsc2UgaWYgKGlzRWxpZ2libGUpIHsKKyAgICAgICAgcmV0dXJuICdhbWJpZ3VvdXMn
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuICdzaW1wbGUnOworICAgICAgfQorICAg
IH0sCisKKyAgICBwdXNoUGFyYW1zOiBmdW5jdGlvbiBwdXNoUGFyYW1zKHBhcmFtcykgeworICAg
ICAgZm9yICh2YXIgaSA9IDAsIGwgPSBwYXJhbXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CisgICAg
ICAgIHRoaXMucHVzaFBhcmFtKHBhcmFtc1tpXSk7CisgICAgICB9CisgICAgfSwKKworICAgIHB1
c2hQYXJhbTogZnVuY3Rpb24gcHVzaFBhcmFtKHZhbCkgeworICAgICAgdmFyIHZhbHVlID0gdmFs
LnZhbHVlICE9IG51bGwgPyB2YWwudmFsdWUgOiB2YWwub3JpZ2luYWwgfHwgJyc7CisKKyAgICAg
IGlmICh0aGlzLnN0cmluZ1BhcmFtcykgeworICAgICAgICBpZiAodmFsdWUucmVwbGFjZSkgewor
ICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvXihcLj9cLlwvKSovZywgJycpLnJlcGxh
Y2UoL1wvL2csICcuJyk7CisgICAgICAgIH0KKworICAgICAgICBpZiAodmFsLmRlcHRoKSB7Cisg
ICAgICAgICAgdGhpcy5hZGREZXB0aCh2YWwuZGVwdGgpOworICAgICAgICB9CisgICAgICAgIHRo
aXMub3Bjb2RlKCdnZXRDb250ZXh0JywgdmFsLmRlcHRoIHx8IDApOworICAgICAgICB0aGlzLm9w
Y29kZSgncHVzaFN0cmluZ1BhcmFtJywgdmFsdWUsIHZhbC50eXBlKTsKKworICAgICAgICBpZiAo
dmFsLnR5cGUgPT09ICdTdWJFeHByZXNzaW9uJykgeworICAgICAgICAgIC8vIFN1YkV4cHJlc3Np
b25zIGdldCBldmFsdWF0ZWQgYW5kIHBhc3NlZCBpbgorICAgICAgICAgIC8vIGluIHN0cmluZyBw
YXJhbXMgbW9kZS4KKyAgICAgICAgICB0aGlzLmFjY2VwdCh2YWwpOworICAgICAgICB9CisgICAg
ICB9IGVsc2UgeworICAgICAgICBpZiAodGhpcy50cmFja0lkcykgeworICAgICAgICAgIHZhciBi
bG9ja1BhcmFtSW5kZXggPSB1bmRlZmluZWQ7CisgICAgICAgICAgaWYgKHZhbC5wYXJ0cyAmJiAh
X0FTVFsnZGVmYXVsdCddLmhlbHBlcnMuc2NvcGVkSWQodmFsKSAmJiAhdmFsLmRlcHRoKSB7Cisg
ICAgICAgICAgICBibG9ja1BhcmFtSW5kZXggPSB0aGlzLmJsb2NrUGFyYW1JbmRleCh2YWwucGFy
dHNbMF0pOworICAgICAgICAgIH0KKyAgICAgICAgICBpZiAoYmxvY2tQYXJhbUluZGV4KSB7Cisg
ICAgICAgICAgICB2YXIgYmxvY2tQYXJhbUNoaWxkID0gdmFsLnBhcnRzLnNsaWNlKDEpLmpvaW4o
Jy4nKTsKKyAgICAgICAgICAgIHRoaXMub3Bjb2RlKCdwdXNoSWQnLCAnQmxvY2tQYXJhbScsIGJs
b2NrUGFyYW1JbmRleCwgYmxvY2tQYXJhbUNoaWxkKTsKKyAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgdmFsdWUgPSB2YWwub3JpZ2luYWwgfHwgdmFsdWU7CisgICAgICAgICAgICBpZiAo
dmFsdWUucmVwbGFjZSkgeworICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL150
aGlzKD86XC58JCkvLCAnJykucmVwbGFjZSgvXlwuXC8vLCAnJykucmVwbGFjZSgvXlwuJC8sICcn
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdGhpcy5vcGNvZGUoJ3B1c2hJZCcsIHZh
bC50eXBlLCB2YWx1ZSk7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHRoaXMuYWNj
ZXB0KHZhbCk7CisgICAgICB9CisgICAgfSwKKworICAgIHNldHVwRnVsbE11c3RhY2hlUGFyYW1z
OiBmdW5jdGlvbiBzZXR1cEZ1bGxNdXN0YWNoZVBhcmFtcyhzZXhwciwgcHJvZ3JhbSwgaW52ZXJz
ZSwgb21pdEVtcHR5KSB7CisgICAgICB2YXIgcGFyYW1zID0gc2V4cHIucGFyYW1zOworICAgICAg
dGhpcy5wdXNoUGFyYW1zKHBhcmFtcyk7CisKKyAgICAgIHRoaXMub3Bjb2RlKCdwdXNoUHJvZ3Jh
bScsIHByb2dyYW0pOworICAgICAgdGhpcy5vcGNvZGUoJ3B1c2hQcm9ncmFtJywgaW52ZXJzZSk7
CisKKyAgICAgIGlmIChzZXhwci5oYXNoKSB7CisgICAgICAgIHRoaXMuYWNjZXB0KHNleHByLmhh
c2gpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgdGhpcy5vcGNvZGUoJ2VtcHR5SGFzaCcsIG9t
aXRFbXB0eSk7CisgICAgICB9CisKKyAgICAgIHJldHVybiBwYXJhbXM7CisgICAgfSwKKworICAg
IGJsb2NrUGFyYW1JbmRleDogZnVuY3Rpb24gYmxvY2tQYXJhbUluZGV4KG5hbWUpIHsKKyAgICAg
IGZvciAodmFyIGRlcHRoID0gMCwgbGVuID0gdGhpcy5vcHRpb25zLmJsb2NrUGFyYW1zLmxlbmd0
aDsgZGVwdGggPCBsZW47IGRlcHRoKyspIHsKKyAgICAgICAgdmFyIGJsb2NrUGFyYW1zID0gdGhp
cy5vcHRpb25zLmJsb2NrUGFyYW1zW2RlcHRoXSwKKyAgICAgICAgICAgIHBhcmFtID0gYmxvY2tQ
YXJhbXMgJiYgX3V0aWxzLmluZGV4T2YoYmxvY2tQYXJhbXMsIG5hbWUpOworICAgICAgICBpZiAo
YmxvY2tQYXJhbXMgJiYgcGFyYW0gPj0gMCkgeworICAgICAgICAgIHJldHVybiBbZGVwdGgsIHBh
cmFtXTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfTsKKworICBmdW5jdGlvbiBwcmVj
b21waWxlKGlucHV0LCBvcHRpb25zLCBlbnYpIHsKKyAgICBpZiAoaW5wdXQgPT0gbnVsbCB8fCB0
eXBlb2YgaW5wdXQgIT09ICdzdHJpbmcnICYmIGlucHV0LnR5cGUgIT09ICdQcm9ncmFtJykgewor
ICAgICAgdGhyb3cgbmV3IF9FeGNlcHRpb25bJ2RlZmF1bHQnXSgnWW91IG11c3QgcGFzcyBhIHN0
cmluZyBvciBIYW5kbGViYXJzIEFTVCB0byBIYW5kbGViYXJzLnByZWNvbXBpbGUuIFlvdSBwYXNz
ZWQgJyArIGlucHV0KTsKKyAgICB9CisKKyAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKKyAg
ICBpZiAoISgnZGF0YScgaW4gb3B0aW9ucykpIHsKKyAgICAgIG9wdGlvbnMuZGF0YSA9IHRydWU7
CisgICAgfQorICAgIGlmIChvcHRpb25zLmNvbXBhdCkgeworICAgICAgb3B0aW9ucy51c2VEZXB0
aHMgPSB0cnVlOworICAgIH0KKworICAgIHZhciBhc3QgPSBlbnYucGFyc2UoaW5wdXQsIG9wdGlv
bnMpLAorICAgICAgICBlbnZpcm9ubWVudCA9IG5ldyBlbnYuQ29tcGlsZXIoKS5jb21waWxlKGFz
dCwgb3B0aW9ucyk7CisgICAgcmV0dXJuIG5ldyBlbnYuSmF2YVNjcmlwdENvbXBpbGVyKCkuY29t
cGlsZShlbnZpcm9ubWVudCwgb3B0aW9ucyk7CisgIH0KKworICBmdW5jdGlvbiBjb21waWxlKGlu
cHV0LCBvcHRpb25zLCBlbnYpIHsKKyAgICBpZiAob3B0aW9ucyA9PT0gdW5kZWZpbmVkKSBvcHRp
b25zID0ge307CisKKyAgICBpZiAoaW5wdXQgPT0gbnVsbCB8fCB0eXBlb2YgaW5wdXQgIT09ICdz
dHJpbmcnICYmIGlucHV0LnR5cGUgIT09ICdQcm9ncmFtJykgeworICAgICAgdGhyb3cgbmV3IF9F
eGNlcHRpb25bJ2RlZmF1bHQnXSgnWW91IG11c3QgcGFzcyBhIHN0cmluZyBvciBIYW5kbGViYXJz
IEFTVCB0byBIYW5kbGViYXJzLmNvbXBpbGUuIFlvdSBwYXNzZWQgJyArIGlucHV0KTsKKyAgICB9
CisKKyAgICBpZiAoISgnZGF0YScgaW4gb3B0aW9ucykpIHsKKyAgICAgIG9wdGlvbnMuZGF0YSA9
IHRydWU7CisgICAgfQorICAgIGlmIChvcHRpb25zLmNvbXBhdCkgeworICAgICAgb3B0aW9ucy51
c2VEZXB0aHMgPSB0cnVlOworICAgIH0KKworICAgIHZhciBjb21waWxlZCA9IHVuZGVmaW5lZDsK
KworICAgIGZ1bmN0aW9uIGNvbXBpbGVJbnB1dCgpIHsKKyAgICAgIHZhciBhc3QgPSBlbnYucGFy
c2UoaW5wdXQsIG9wdGlvbnMpLAorICAgICAgICAgIGVudmlyb25tZW50ID0gbmV3IGVudi5Db21w
aWxlcigpLmNvbXBpbGUoYXN0LCBvcHRpb25zKSwKKyAgICAgICAgICB0ZW1wbGF0ZVNwZWMgPSBu
ZXcgZW52LkphdmFTY3JpcHRDb21waWxlcigpLmNvbXBpbGUoZW52aXJvbm1lbnQsIG9wdGlvbnMs
IHVuZGVmaW5lZCwgdHJ1ZSk7CisgICAgICByZXR1cm4gZW52LnRlbXBsYXRlKHRlbXBsYXRlU3Bl
Yyk7CisgICAgfQorCisgICAgLy8gVGVtcGxhdGUgaXMgb25seSBjb21waWxlZCBvbiBmaXJzdCB1
c2UgYW5kIGNhY2hlZCBhZnRlciB0aGF0IHBvaW50LgorICAgIGZ1bmN0aW9uIHJldChjb250ZXh0
LCBleGVjT3B0aW9ucykgeworICAgICAgaWYgKCFjb21waWxlZCkgeworICAgICAgICBjb21waWxl
ZCA9IGNvbXBpbGVJbnB1dCgpOworICAgICAgfQorICAgICAgcmV0dXJuIGNvbXBpbGVkLmNhbGwo
dGhpcywgY29udGV4dCwgZXhlY09wdGlvbnMpOworICAgIH0KKyAgICByZXQuX3NldHVwID0gZnVu
Y3Rpb24gKHNldHVwT3B0aW9ucykgeworICAgICAgaWYgKCFjb21waWxlZCkgeworICAgICAgICBj
b21waWxlZCA9IGNvbXBpbGVJbnB1dCgpOworICAgICAgfQorICAgICAgcmV0dXJuIGNvbXBpbGVk
Ll9zZXR1cChzZXR1cE9wdGlvbnMpOworICAgIH07CisgICAgcmV0Ll9jaGlsZCA9IGZ1bmN0aW9u
IChpLCBkYXRhLCBibG9ja1BhcmFtcywgZGVwdGhzKSB7CisgICAgICBpZiAoIWNvbXBpbGVkKSB7
CisgICAgICAgIGNvbXBpbGVkID0gY29tcGlsZUlucHV0KCk7CisgICAgICB9CisgICAgICByZXR1
cm4gY29tcGlsZWQuX2NoaWxkKGksIGRhdGEsIGJsb2NrUGFyYW1zLCBkZXB0aHMpOworICAgIH07
CisgICAgcmV0dXJuIHJldDsKKyAgfQorCisgIGZ1bmN0aW9uIGFyZ0VxdWFscyhhLCBiKSB7Cisg
ICAgaWYgKGEgPT09IGIpIHsKKyAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGlmIChf
dXRpbHMuaXNBcnJheShhKSAmJiBfdXRpbHMuaXNBcnJheShiKSAmJiBhLmxlbmd0aCA9PT0gYi5s
ZW5ndGgpIHsKKyAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykgeworICAg
ICAgICBpZiAoIWFyZ0VxdWFscyhhW2ldLCBiW2ldKSkgeworICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICB9CisK
KyAgZnVuY3Rpb24gdHJhbnNmb3JtTGl0ZXJhbFRvUGF0aChzZXhwcikgeworICAgIGlmICghc2V4
cHIucGF0aC5wYXJ0cykgeworICAgICAgdmFyIGxpdGVyYWwgPSBzZXhwci5wYXRoOworICAgICAg
Ly8gQ2FzdGluZyB0byBzdHJpbmcgaGVyZSB0byBtYWtlIGZhbHNlIGFuZCAwIGxpdGVyYWwgdmFs
dWVzIHBsYXkgbmljZWx5IHdpdGggdGhlIHJlc3QKKyAgICAgIC8vIG9mIHRoZSBzeXN0ZW0uCisg
ICAgICBzZXhwci5wYXRoID0geworICAgICAgICB0eXBlOiAnUGF0aEV4cHJlc3Npb24nLAorICAg
ICAgICBkYXRhOiBmYWxzZSwKKyAgICAgICAgZGVwdGg6IDAsCisgICAgICAgIHBhcnRzOiBbbGl0
ZXJhbC5vcmlnaW5hbCArICcnXSwKKyAgICAgICAgb3JpZ2luYWw6IGxpdGVyYWwub3JpZ2luYWwg
KyAnJywKKyAgICAgICAgbG9jOiBsaXRlcmFsLmxvYworICAgICAgfTsKKyAgICB9CisgIH0KK30p
OworLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoy
WlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYklpNHVMeTR1THk0dUx5NHVMMnhwWWk5b1lXNWti
R1ZpWVhKekwyTnZiWEJwYkdWeUwyTnZiWEJwYkdWeUxtcHpJbDBzSW01aGJXVnpJanBiWFN3aWJX
RndjR2x1WjNNaU9pSTdPenM3T3pzN096czdPenM3T3pzN08wRkJUVUVzVFVGQlRTeExRVUZMTEVk
QlFVY3NSVUZCUlN4RFFVRkRMRXRCUVVzc1EwRkJRenM3UVVGRmFFSXNWMEZCVXl4UlFVRlJMRWRC
UVVjc1JVRkJSVHM3T3pzN096dEJRVTgzUWl4VlFVRlJMRU5CUVVNc1UwRkJVeXhIUVVGSE8wRkJR
MjVDTEZsQlFWRXNSVUZCUlN4UlFVRlJPenRCUVVWc1FpeFZRVUZOTEVWQlFVVXNaMEpCUVZNc1Mw
RkJTeXhGUVVGRk8wRkJRM1JDTEZWQlFVa3NSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJReXhQUVVG
UExFTkJRVU1zVFVGQlRTeERRVUZETzBGQlF6bENMRlZCUVVrc1MwRkJTeXhEUVVGRExFOUJRVThz
UTBGQlF5eE5RVUZOTEV0QlFVc3NSMEZCUnl4RlFVRkZPMEZCUTJoRExHVkJRVThzUzBGQlN5eERR
VUZETzA5QlEyUTdPMEZCUlVRc1YwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFV
VXNRMEZCUXl4SFFVRkhMRWRCUVVjc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdEJRVU0xUWl4
WlFVRkpMRTFCUVUwc1IwRkJSeXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNRMEZC
UXp0WlFVTjRRaXhYUVVGWExFZEJRVWNzUzBGQlN5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRM
RU5CUVVNc1EwRkJRenRCUVVOdVF5eFpRVUZKTEUxQlFVMHNRMEZCUXl4TlFVRk5MRXRCUVVzc1Yw
RkJWeXhEUVVGRExFMUJRVTBzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4TlFVRk5MRU5CUVVN
c1NVRkJTU3hGUVVGRkxGZEJRVmNzUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlR0QlFVTnlSaXhw
UWtGQlR5eExRVUZMTEVOQlFVTTdVMEZEWkR0UFFVTkdPenM3TzBGQlNVUXNVMEZCUnl4SFFVRkhM
RWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zVFVGQlRTeERRVUZETzBGQlF6TkNMRmRCUVVzc1NV
RkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4SFFVRkhMRVZCUVVV
c1EwRkJReXhGUVVGRkxFVkJRVVU3UVVGRE5VSXNXVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhS
UVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRMRXRCUVVzc1EwRkJR
eXhSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlR0QlFVTXZReXhwUWtGQlR5
eExRVUZMTEVOQlFVTTdVMEZEWkR0UFFVTkdPenRCUVVWRUxHRkJRVThzU1VGQlNTeERRVUZETzB0
QlEySTdPMEZCUlVRc1VVRkJTU3hGUVVGRkxFTkJRVU03TzBGQlJWQXNWMEZCVHl4RlFVRkZMR2xD
UVVGVExFOUJRVThzUlVGQlJTeFBRVUZQTEVWQlFVVTdRVUZEYkVNc1ZVRkJTU3hEUVVGRExGVkJR
VlVzUjBGQlJ5eEZRVUZGTEVOQlFVTTdRVUZEY2tJc1ZVRkJTU3hEUVVGRExFOUJRVThzUjBGQlJ5
eEZRVUZGTEVOQlFVTTdRVUZEYkVJc1ZVRkJTU3hEUVVGRExGRkJRVkVzUjBGQlJ5eEZRVUZGTEVO
QlFVTTdRVUZEYmtJc1ZVRkJTU3hEUVVGRExFOUJRVThzUjBGQlJ5eFBRVUZQTEVOQlFVTTdRVUZE
ZGtJc1ZVRkJTU3hEUVVGRExGbEJRVmtzUjBGQlJ5eFBRVUZQTEVOQlFVTXNXVUZCV1N4RFFVRkRP
MEZCUTNwRExGVkJRVWtzUTBGQlF5eFJRVUZSTEVkQlFVY3NUMEZCVHl4RFFVRkRMRkZCUVZFc1Ew
RkJRenM3UVVGRmFrTXNZVUZCVHl4RFFVRkRMRmRCUVZjc1IwRkJSeXhQUVVGUExFTkJRVU1zVjBG
QlZ5eEpRVUZKTEVWQlFVVXNRMEZCUXpzN08wRkJSMmhFTEZWQlFVa3NXVUZCV1N4SFFVRkhMRTlC
UVU4c1EwRkJReXhaUVVGWkxFTkJRVU03UVVGRGVFTXNZVUZCVHl4RFFVRkRMRmxCUVZrc1IwRkJS
enRCUVVOeVFpeDFRa0ZCWlN4RlFVRkZMRWxCUVVrN1FVRkRja0lzTkVKQlFXOUNMRVZCUVVVc1NV
RkJTVHRCUVVNeFFpeGpRVUZOTEVWQlFVVXNTVUZCU1R0QlFVTmFMRmxCUVVrc1JVRkJSU3hKUVVG
Sk8wRkJRMVlzWjBKQlFWRXNSVUZCUlN4SlFVRkpPMEZCUTJRc1kwRkJUU3hGUVVGRkxFbEJRVWs3
UVVGRFdpeGhRVUZMTEVWQlFVVXNTVUZCU1R0QlFVTllMR2RDUVVGUkxFVkJRVVVzU1VGQlNUdFBR
VU5tTEVOQlFVTTdRVUZEUml4VlFVRkpMRmxCUVZrc1JVRkJSVHRCUVVOb1FpeGhRVUZMTEVsQlFV
a3NTMEZCU1N4SlFVRkpMRmxCUVZrc1JVRkJSVHM3UVVGRk4wSXNZMEZCU1N4TFFVRkpMRWxCUVVr
c1dVRkJXU3hGUVVGRk8wRkJRM2hDTEcxQ1FVRlBMRU5CUVVNc1dVRkJXU3hEUVVGRExFdEJRVWtz
UTBGQlF5eEhRVUZITEZsQlFWa3NRMEZCUXl4TFFVRkpMRU5CUVVNc1EwRkJRenRYUVVOcVJEdFRR
VU5HTzA5QlEwWTdPMEZCUlVRc1lVRkJUeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEU5QlFV
OHNRMEZCUXl4RFFVRkRPMHRCUXpkQ096dEJRVVZFTEd0Q1FVRmpMRVZCUVVVc2QwSkJRVk1zVDBG
QlR5eEZRVUZGTzBGQlEyaERMRlZCUVVrc1lVRkJZU3hIUVVGSExFbEJRVWtzU1VGQlNTeERRVUZE
TEZGQlFWRXNSVUZCUlRzN1FVRkRia01zV1VGQlRTeEhRVUZITEdGQlFXRXNRMEZCUXl4UFFVRlBM
RU5CUVVNc1QwRkJUeXhGUVVGRkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTTdWVUZEY2tRc1NV
RkJTU3hIUVVGSExFbEJRVWtzUTBGQlF5eEpRVUZKTEVWQlFVVXNRMEZCUXpzN1FVRkZka0lzVlVG
QlNTeERRVUZETEZWQlFWVXNSMEZCUnl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hKUVVGSkxFMUJRVTBz
UTBGQlF5eFZRVUZWTEVOQlFVTTdPMEZCUlhaRUxGVkJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNT
VUZCU1N4RFFVRkRMRWRCUVVjc1RVRkJUU3hEUVVGRE8wRkJRemRDTEZWQlFVa3NRMEZCUXl4VFFV
RlRMRWRCUVVjc1NVRkJTU3hEUVVGRExGTkJRVk1zU1VGQlNTeE5RVUZOTEVOQlFVTXNVMEZCVXl4
RFFVRkRPenRCUVVWd1JDeGhRVUZQTEVsQlFVa3NRMEZCUXp0TFFVTmlPenRCUVVWRUxGVkJRVTBz
UlVGQlJTeG5Ra0ZCVXl4SlFVRkpMRVZCUVVVN08wRkJSWEpDTEZWQlFVa3NRMEZCUXl4SlFVRkpM
RU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTzBGQlEzQkNMR05CUVUwc01F
SkJRV01zWjBKQlFXZENMRWRCUVVjc1NVRkJTU3hEUVVGRExFbEJRVWtzUlVGQlJTeEpRVUZKTEVO
QlFVTXNRMEZCUXp0UFFVTjZSRHM3UVVGRlJDeFZRVUZKTEVOQlFVTXNWVUZCVlN4RFFVRkRMRTlC
UVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dEJRVU01UWl4VlFVRkpMRWRCUVVjc1IwRkJS
eXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRWxCUVVrc1Ew
RkJReXhEUVVGRE8wRkJRMmhETEZWQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1MwRkJTeXhGUVVG
RkxFTkJRVU03UVVGRGVFSXNZVUZCVHl4SFFVRkhMRU5CUVVNN1MwRkRXanM3UVVGRlJDeFhRVUZQ
TEVWQlFVVXNhVUpCUVZNc1QwRkJUeXhGUVVGRk8wRkJRM3BDTEZWQlFVa3NRMEZCUXl4UFFVRlBM
RU5CUVVNc1YwRkJWeXhEUVVGRExFOUJRVThzUTBGQlF5eFBRVUZQTEVOQlFVTXNWMEZCVnl4RFFV
RkRMRU5CUVVNN08wRkJSWFJFTEZWQlFVa3NTVUZCU1N4SFFVRkhMRTlCUVU4c1EwRkJReXhKUVVG
Sk8xVkJRMjVDTEZWQlFWVXNSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRE8wRkJRemRD
TEZkQlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eFZR
VUZWTEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVN1FVRkRia01zV1VGQlNTeERRVUZETEUxQlFV
MHNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFBRVU4wUWpz
N1FVRkZSQ3hWUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEZkQlFWY3NRMEZCUXl4TFFVRkxMRVZC
UVVVc1EwRkJRenM3UVVGRmFrTXNWVUZCU1N4RFFVRkRMRkZCUVZFc1IwRkJSeXhWUVVGVkxFdEJR
VXNzUTBGQlF5eERRVUZETzBGQlEycERMRlZCUVVrc1EwRkJReXhYUVVGWExFZEJRVWNzVDBGQlR5
eERRVUZETEZkQlFWY3NSMEZCUnl4UFFVRlBMRU5CUVVNc1YwRkJWeXhEUVVGRExFMUJRVTBzUjBG
QlJ5eERRVUZETEVOQlFVTTdPMEZCUlhoRkxHRkJRVThzU1VGQlNTeERRVUZETzB0QlEySTdPMEZC
UlVRc2EwSkJRV01zUlVGQlJTeDNRa0ZCVXl4TFFVRkxMRVZCUVVVN1FVRkRPVUlzTkVKQlFYTkNM
RU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03TzBGQlJUbENMRlZCUVVrc1QwRkJUeXhIUVVGSExF
dEJRVXNzUTBGQlF5eFBRVUZQTzFWQlEzWkNMRTlCUVU4c1IwRkJSeXhMUVVGTExFTkJRVU1zVDBG
QlR5eERRVUZET3p0QlFVVTFRaXhoUVVGUExFZEJRVWNzVDBGQlR5eEpRVUZKTEVsQlFVa3NRMEZC
UXl4alFVRmpMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03UVVGRGJFUXNZVUZCVHl4SFFVRkhM
RTlCUVU4c1NVRkJTU3hKUVVGSkxFTkJRVU1zWTBGQll5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFV
RkRPenRCUVVWc1JDeFZRVUZKTEVsQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNc1lVRkJZU3hEUVVG
RExFdEJRVXNzUTBGQlF5eERRVUZET3p0QlFVVnlReXhWUVVGSkxFbEJRVWtzUzBGQlN5eFJRVUZS
TEVWQlFVVTdRVUZEY2tJc1dVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF5eExRVUZMTEVWQlFVVXNU
MEZCVHl4RlFVRkZMRTlCUVU4c1EwRkJReXhEUVVGRE8wOUJRek5ETEUxQlFVMHNTVUZCU1N4SlFV
RkpMRXRCUVVzc1VVRkJVU3hGUVVGRk8wRkJRelZDTEZsQlFVa3NRMEZCUXl4WFFVRlhMRU5CUVVN
c1MwRkJTeXhEUVVGRExFTkJRVU03T3pzN1FVRkplRUlzV1VGQlNTeERRVUZETEUxQlFVMHNRMEZC
UXl4aFFVRmhMRVZCUVVVc1QwRkJUeXhEUVVGRExFTkJRVU03UVVGRGNFTXNXVUZCU1N4RFFVRkRM
RTFCUVUwc1EwRkJReXhoUVVGaExFVkJRVVVzVDBGQlR5eERRVUZETEVOQlFVTTdRVUZEY0VNc1dV
RkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFhRVUZYTEVOQlFVTXNRMEZCUXp0QlFVTjZRaXhaUVVG
SkxFTkJRVU1zVFVGQlRTeERRVUZETEZsQlFWa3NSVUZCUlN4TFFVRkxMRU5CUVVNc1NVRkJTU3hE
UVVGRExGRkJRVkVzUTBGQlF5eERRVUZETzA5QlEyaEVMRTFCUVUwN1FVRkRUQ3haUVVGSkxFTkJR
VU1zWTBGQll5eERRVUZETEV0QlFVc3NSVUZCUlN4UFFVRlBMRVZCUVVVc1QwRkJUeXhEUVVGRExF
TkJRVU03T3pzN1FVRkpOME1zV1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4aFFVRmhMRVZCUVVV
c1QwRkJUeXhEUVVGRExFTkJRVU03UVVGRGNFTXNXVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXho
UVVGaExFVkJRVVVzVDBGQlR5eERRVUZETEVOQlFVTTdRVUZEY0VNc1dVRkJTU3hEUVVGRExFMUJR
VTBzUTBGQlF5eFhRVUZYTEVOQlFVTXNRMEZCUXp0QlFVTjZRaXhaUVVGSkxFTkJRVU1zVFVGQlRT
eERRVUZETEhGQ1FVRnhRaXhEUVVGRExFTkJRVU03VDBGRGNFTTdPMEZCUlVRc1ZVRkJTU3hEUVVG
RExFMUJRVTBzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXp0TFFVTjJRanM3UVVGRlJDeHJRa0ZC
WXl4RlFVRkJMSGRDUVVGRExGTkJRVk1zUlVGQlJUdEJRVU40UWl4VlFVRkpMRTlCUVU4c1IwRkJS
eXhUUVVGVExFTkJRVU1zVDBGQlR5eEpRVUZKTEVsQlFVa3NRMEZCUXl4alFVRmpMRU5CUVVNc1Uw
RkJVeXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzBGQlF6RkZMRlZCUVVrc1RVRkJUU3hIUVVG
SExFbEJRVWtzUTBGQlF5eDFRa0ZCZFVJc1EwRkJReXhUUVVGVExFVkJRVVVzVDBGQlR5eEZRVUZG
TEZOQlFWTXNRMEZCUXp0VlFVTndSU3hKUVVGSkxFZEJRVWNzVTBGQlV5eERRVUZETEVsQlFVa3NR
MEZCUXpzN1FVRkZNVUlzVlVGQlNTeERRVUZETEdGQlFXRXNSMEZCUnl4SlFVRkpMRU5CUVVNN1FV
RkRNVUlzVlVGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4dFFrRkJiVUlzUlVGQlJTeE5RVUZOTEVO
QlFVTXNUVUZCVFN4RlFVRkZMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF6dExRVU5v
UlRzN1FVRkZSQ3h2UWtGQlowSXNSVUZCUlN3d1FrRkJVeXhQUVVGUExFVkJRVVU3UVVGRGJFTXNW
VUZCU1N4RFFVRkRMRlZCUVZVc1IwRkJSeXhKUVVGSkxFTkJRVU03TzBGQlJYWkNMRlZCUVVrc1Qw
RkJUeXhIUVVGSExFOUJRVThzUTBGQlF5eFBRVUZQTEVOQlFVTTdRVUZET1VJc1ZVRkJTU3hQUVVG
UExFVkJRVVU3UVVGRFdDeGxRVUZQTEVkQlFVY3NTVUZCU1N4RFFVRkRMR05CUVdNc1EwRkJReXhQ
UVVGUExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdUMEZEYUVRN08wRkJSVVFzVlVGQlNTeE5R
VUZOTEVkQlFVY3NUMEZCVHl4RFFVRkRMRTFCUVUwc1EwRkJRenRCUVVNMVFpeFZRVUZKTEUxQlFV
MHNRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhGUVVGRk8wRkJRM0pDTEdOQlFVMHNNRUpCUVdN
c01rTkJRVEpETEVkQlFVY3NUVUZCVFN4RFFVRkRMRTFCUVUwc1JVRkJSU3hQUVVGUExFTkJRVU1z
UTBGQlF6dFBRVU16Uml4TlFVRk5MRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zVFVGQlRTeEZR
VUZGTzBGQlEzcENMRmxCUVVrc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eHpRa0ZCYzBJc1JV
RkJSVHRCUVVOMlF5eGpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMR0ZCUVdFc1JVRkJSU3hYUVVG
WExFTkJRVU1zUTBGQlF6dFRRVU42UXl4TlFVRk5PMEZCUTB3c1owSkJRVTBzUTBGQlF5eEpRVUZK
TEVOQlFVTXNSVUZCUXl4SlFVRkpMRVZCUVVVc1owSkJRV2RDTEVWQlFVVXNTMEZCU3l4RlFVRkZM
RVZCUVVVc1JVRkJSU3hMUVVGTExFVkJRVVVzUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXp0VFFV
TTFSRHRQUVVOR096dEJRVVZFTEZWQlFVa3NWMEZCVnl4SFFVRkhMRTlCUVU4c1EwRkJReXhKUVVG
SkxFTkJRVU1zVVVGQlVUdFZRVU51UXl4VFFVRlRMRWRCUVVjc1QwRkJUeXhEUVVGRExFbEJRVWtz
UTBGQlF5eEpRVUZKTEV0QlFVc3NaVUZCWlN4RFFVRkRPMEZCUTNSRUxGVkJRVWtzVTBGQlV5eEZR
VUZGTzBGQlEySXNXVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhQUVVGUExFTkJRVU1zU1VGQlNT
eERRVUZETEVOQlFVTTdUMEZETTBJN08wRkJSVVFzVlVGQlNTeERRVUZETEhWQ1FVRjFRaXhEUVVG
RExFOUJRVThzUlVGQlJTeFBRVUZQTEVWQlFVVXNVMEZCVXl4RlFVRkZMRWxCUVVrc1EwRkJReXhE
UVVGRE96dEJRVVZvUlN4VlFVRkpMRTFCUVUwc1IwRkJSeXhQUVVGUExFTkJRVU1zVFVGQlRTeEpR
VUZKTEVWQlFVVXNRMEZCUXp0QlFVTnNReXhWUVVGSkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFV
TXNZVUZCWVN4SlFVRkpMRTFCUVUwc1JVRkJSVHRCUVVONFF5eFpRVUZKTEVOQlFVTXNUVUZCVFN4
RFFVRkRMR1ZCUVdVc1JVRkJSU3hOUVVGTkxFTkJRVU1zUTBGQlF6dEJRVU55UXl4alFVRk5MRWRC
UVVjc1JVRkJSU3hEUVVGRE8wOUJRMkk3TzBGQlJVUXNWVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJR
eXhsUVVGbExFVkJRVVVzVTBGQlV5eEZRVUZGTEZkQlFWY3NSVUZCUlN4TlFVRk5MRU5CUVVNc1Ew
RkJRenRCUVVNM1JDeFZRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVG
RE8wdEJRM1pDTzBGQlEwUXNlVUpCUVhGQ0xFVkJRVVVzSzBKQlFWTXNXVUZCV1N4RlFVRkZPMEZC
UXpWRExGVkJRVWtzUTBGQlF5eG5Ra0ZCWjBJc1EwRkJReXhaUVVGWkxFTkJRVU1zUTBGQlF6dExR
VU55UXpzN1FVRkZSQ3h4UWtGQmFVSXNSVUZCUlN3eVFrRkJVeXhSUVVGUkxFVkJRVVU3UVVGRGNF
TXNWVUZCU1N4RFFVRkRMR0ZCUVdFc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF6czdRVUZGTjBJ
c1ZVRkJTU3hSUVVGUkxFTkJRVU1zVDBGQlR5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTlC
UVU4c1EwRkJReXhSUVVGUkxFVkJRVVU3UVVGRE9VTXNXVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJR
eXhsUVVGbExFTkJRVU1zUTBGQlF6dFBRVU01UWl4TlFVRk5PMEZCUTB3c1dVRkJTU3hEUVVGRExF
MUJRVTBzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXp0UFFVTjJRanRMUVVOR08wRkJRMFFzWVVG
QlV5eEZRVUZCTEcxQ1FVRkRMRk5CUVZNc1JVRkJSVHRCUVVOdVFpeFZRVUZKTEVOQlFVTXNZMEZC
WXl4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRE8wdEJRMmhET3p0QlFVZEVMRzlDUVVGblFpeEZR
VUZGTERCQ1FVRlRMRTlCUVU4c1JVRkJSVHRCUVVOc1F5eFZRVUZKTEU5QlFVOHNRMEZCUXl4TFFV
RkxMRVZCUVVVN1FVRkRha0lzV1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4bFFVRmxMRVZCUVVV
c1QwRkJUeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzA5QlF6ZERPMHRCUTBZN08wRkJSVVFz
YjBKQlFXZENMRVZCUVVVc05FSkJRVmNzUlVGQlJUczdRVUZGTDBJc2FVSkJRV0VzUlVGQlJTeDFR
a0ZCVXl4TFFVRkxMRVZCUVVVN1FVRkROMElzTkVKQlFYTkNMRU5CUVVNc1MwRkJTeXhEUVVGRExF
TkJRVU03UVVGRE9VSXNWVUZCU1N4SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGRExHRkJRV0VzUTBG
QlF5eExRVUZMTEVOQlFVTXNRMEZCUXpzN1FVRkZja01zVlVGQlNTeEpRVUZKTEV0QlFVc3NVVUZC
VVN4RlFVRkZPMEZCUTNKQ0xGbEJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTXNTMEZCU3l4RFFVRkRM
RU5CUVVNN1QwRkRla0lzVFVGQlRTeEpRVUZKTEVsQlFVa3NTMEZCU3l4UlFVRlJMRVZCUVVVN1FV
RkROVUlzV1VGQlNTeERRVUZETEZkQlFWY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRQUVVO
NlFpeE5RVUZOTzBGQlEwd3NXVUZCU1N4RFFVRkRMR05CUVdNc1EwRkJReXhMUVVGTExFTkJRVU1z
UTBGQlF6dFBRVU0xUWp0TFFVTkdPMEZCUTBRc2EwSkJRV01zUlVGQlJTeDNRa0ZCVXl4TFFVRkxM
RVZCUVVVc1QwRkJUeXhGUVVGRkxFOUJRVThzUlVGQlJUdEJRVU5vUkN4VlFVRkpMRWxCUVVrc1Iw
RkJSeXhMUVVGTExFTkJRVU1zU1VGQlNUdFZRVU5xUWl4SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVG
RExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTTdWVUZEY0VJc1QwRkJUeXhIUVVGSExFOUJRVThz
U1VGQlNTeEpRVUZKTEVsQlFVa3NUMEZCVHl4SlFVRkpMRWxCUVVrc1EwRkJRenM3UVVGRmFrUXNW
VUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhaUVVGWkxFVkJRVVVzU1VGQlNTeERRVUZETEV0QlFV
c3NRMEZCUXl4RFFVRkRPenRCUVVWMFF5eFZRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMR0ZCUVdF
c1JVRkJSU3hQUVVGUExFTkJRVU1zUTBGQlF6dEJRVU53UXl4VlFVRkpMRU5CUVVNc1RVRkJUU3hE
UVVGRExHRkJRV0VzUlVGQlJTeFBRVUZQTEVOQlFVTXNRMEZCUXpzN1FVRkZjRU1zVlVGQlNTeERR
VUZETEUxQlFVMHNSMEZCUnl4SlFVRkpMRU5CUVVNN1FVRkRia0lzVlVGQlNTeERRVUZETEUxQlFV
MHNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenM3UVVGRmJFSXNWVUZCU1N4RFFVRkRMRTFCUVUw
c1EwRkJReXhwUWtGQmFVSXNSVUZCUlN4SlFVRkpMRVZCUVVVc1QwRkJUeXhEUVVGRExFTkJRVU03
UzBGREwwTTdPMEZCUlVRc1pVRkJWeXhGUVVGRkxIRkNRVUZUTEV0QlFVc3NSVUZCUlR0QlFVTXpR
aXhWUVVGSkxFbEJRVWtzUjBGQlJ5eExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRPMEZCUTNSQ0xG
VkJRVWtzUTBGQlF5eE5RVUZOTEVkQlFVY3NTVUZCU1N4RFFVRkRPMEZCUTI1Q0xGVkJRVWtzUTBG
QlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1FVRkRiRUlzVlVGQlNTeERRVUZE
TEUxQlFVMHNRMEZCUXl4MVFrRkJkVUlzUTBGQlF5eERRVUZETzB0QlEzUkRPenRCUVVWRUxHVkJR
VmNzUlVGQlJTeHhRa0ZCVXl4TFFVRkxMRVZCUVVVc1QwRkJUeXhGUVVGRkxFOUJRVThzUlVGQlJU
dEJRVU0zUXl4VlFVRkpMRTFCUVUwc1IwRkJSeXhKUVVGSkxFTkJRVU1zZFVKQlFYVkNMRU5CUVVN
c1MwRkJTeXhGUVVGRkxFOUJRVThzUlVGQlJTeFBRVUZQTEVOQlFVTTdWVUZET1VRc1NVRkJTU3hI
UVVGSExFdEJRVXNzUTBGQlF5eEpRVUZKTzFWQlEycENMRWxCUVVrc1IwRkJSeXhKUVVGSkxFTkJR
VU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPenRCUVVWNlFpeFZRVUZKTEVsQlFV
a3NRMEZCUXl4UFFVRlBMRU5CUVVNc1dVRkJXU3hEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTzBG
QlEyNURMRmxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zYlVKQlFXMUNMRVZCUVVVc1RVRkJUU3hE
UVVGRExFMUJRVTBzUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0UFFVTjJSQ3hOUVVGTkxFbEJR
VWtzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4blFrRkJaMElzUlVGQlJUdEJRVU40UXl4alFV
Rk5MREJDUVVGakxEaEVRVUU0UkN4SFFVRkhMRWxCUVVrc1JVRkJSU3hMUVVGTExFTkJRVU1zUTBG
QlF6dFBRVU51Unl4TlFVRk5PMEZCUTB3c1dVRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eEpRVUZK
TEVOQlFVTTdRVUZEYmtJc1dVRkJTU3hEUVVGRExFdEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTTdP
MEZCUld4Q0xGbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1FV
RkRiRUlzV1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4alFVRmpMRVZCUVVVc1RVRkJUU3hEUVVG
RExFMUJRVTBzUlVGQlJTeEpRVUZKTEVOQlFVTXNVVUZCVVN4RlFVRkZMR2RDUVVGSkxFOUJRVThz
UTBGQlF5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJRenRQUVVOMlJqdExR
VU5HT3p0QlFVVkVMR3RDUVVGakxFVkJRVVVzZDBKQlFWTXNTVUZCU1N4RlFVRkZPMEZCUXpkQ0xG
VkJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVG
RE8wRkJRekZDTEZWQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1dVRkJXU3hGUVVGRkxFbEJRVWtz
UTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXpzN1FVRkZkRU1zVlVGQlNTeEpRVUZKTEVkQlFVY3NT
VUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU03VlVGRGNFSXNUVUZCVFN4SFFV
RkhMR2RDUVVGSkxFOUJRVThzUTBGQlF5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRPMVZCUTI1
RExGbEJRVmtzUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRWxCUVVrc1EwRkJReXhO
UVVGTkxFbEJRVWtzU1VGQlNTeERRVUZETEdWQlFXVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJR
enM3UVVGRmVFVXNWVUZCU1N4WlFVRlpMRVZCUVVVN1FVRkRhRUlzV1VGQlNTeERRVUZETEUxQlFV
MHNRMEZCUXl4clFrRkJhMElzUlVGQlJTeFpRVUZaTEVWQlFVVXNTVUZCU1N4RFFVRkRMRXRCUVVz
c1EwRkJReXhEUVVGRE8wOUJRek5FTEUxQlFVMHNTVUZCU1N4RFFVRkRMRWxCUVVrc1JVRkJSVHM3
UVVGRmFFSXNXVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhoUVVGaExFTkJRVU1zUTBGQlF6dFBR
VU0xUWl4TlFVRk5MRWxCUVVrc1NVRkJTU3hEUVVGRExFbEJRVWtzUlVGQlJUdEJRVU53UWl4WlFV
RkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFbEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTTdRVUZEZWtJ
c1dVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFpRVUZaTEVWQlFVVXNTVUZCU1N4RFFVRkRMRXRC
UVVzc1JVRkJSU3hKUVVGSkxFTkJRVU1zUzBGQlN5eEZRVUZGTEVsQlFVa3NRMEZCUXl4TlFVRk5M
RU5CUVVNc1EwRkJRenRQUVVOb1JTeE5RVUZOTzBGQlEwd3NXVUZCU1N4RFFVRkRMRTFCUVUwc1Ew
RkJReXhwUWtGQmFVSXNSVUZCUlN4SlFVRkpMRU5CUVVNc1MwRkJTeXhGUVVGRkxFbEJRVWtzUTBG
QlF5eExRVUZMTEVWQlFVVXNTVUZCU1N4RFFVRkRMRTFCUVUwc1JVRkJSU3hOUVVGTkxFTkJRVU1z
UTBGQlF6dFBRVU0zUlR0TFFVTkdPenRCUVVWRUxHbENRVUZoTEVWQlFVVXNkVUpCUVZNc1RVRkJU
U3hGUVVGRk8wRkJRemxDTEZWQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1dVRkJXU3hGUVVGRkxF
MUJRVTBzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXp0TFFVTjZRenM3UVVGRlJDeHBRa0ZCWVN4
RlFVRkZMSFZDUVVGVExFMUJRVTBzUlVGQlJUdEJRVU01UWl4VlFVRkpMRU5CUVVNc1RVRkJUU3hE
UVVGRExHRkJRV0VzUlVGQlJTeE5RVUZOTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1MwRkRN
VU03TzBGQlJVUXNhMEpCUVdNc1JVRkJSU3gzUWtGQlV5eEpRVUZKTEVWQlFVVTdRVUZETjBJc1ZV
RkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eGhRVUZoTEVWQlFVVXNTVUZCU1N4RFFVRkRMRXRCUVVz
c1EwRkJReXhEUVVGRE8wdEJRM2hET3p0QlFVVkVMRzlDUVVGblFpeEZRVUZGTERSQ1FVRlhPMEZC
UXpOQ0xGVkJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNZVUZCWVN4RlFVRkZMRmRCUVZjc1EwRkJR
eXhEUVVGRE8wdEJRM3BET3p0QlFVVkVMR1ZCUVZjc1JVRkJSU3gxUWtGQlZ6dEJRVU4wUWl4VlFV
RkpMRU5CUVVNc1RVRkJUU3hEUVVGRExHRkJRV0VzUlVGQlJTeE5RVUZOTEVOQlFVTXNRMEZCUXp0
TFFVTndRenM3UVVGRlJDeFJRVUZKTEVWQlFVVXNZMEZCVXl4SlFVRkpMRVZCUVVVN1FVRkRia0lz
VlVGQlNTeExRVUZMTEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzN1ZVRkRiRUlzUTBGQlF5eEhR
VUZITEVOQlFVTTdWVUZEVEN4RFFVRkRMRWRCUVVjc1MwRkJTeXhEUVVGRExFMUJRVTBzUTBGQlF6
czdRVUZGY2tJc1ZVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCUXpz
N1FVRkZlRUlzWVVGQlR5eERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hG
UVVGRk8wRkJRMnBDTEZsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJR
VU1zUTBGQlF5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMDlCUTJoRE8wRkJRMFFzWVVGQlR5
eERRVUZETEVWQlFVVXNSVUZCUlR0QlFVTldMRmxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zWTBG
Qll5eEZRVUZGTEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1z
UTBGQlF6dFBRVU16UXp0QlFVTkVMRlZCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zVTBGQlV5eERR
VUZETEVOQlFVTTdTMEZEZUVJN096dEJRVWRFTEZWQlFVMHNSVUZCUlN4blFrRkJVeXhKUVVGSkxF
VkJRVVU3UVVGRGNrSXNWVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zUlVG
QlJTeE5RVUZOTEVWQlFVVXNTVUZCU1N4RlFVRkZMRWxCUVVrc1JVRkJSU3hMUVVGTExFTkJRVU1z
U1VGQlNTeERRVUZETEZOQlFWTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hIUVVGSExFVkJR
VVVzU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExF
VkJRVVVzUTBGQlF5eERRVUZETzB0QlEyeEhPenRCUVVWRUxGbEJRVkVzUlVGQlJTeHJRa0ZCVXl4
TFFVRkxMRVZCUVVVN1FVRkRlRUlzVlVGQlNTeERRVUZETEV0QlFVc3NSVUZCUlR0QlFVTldMR1ZC
UVU4N1QwRkRVanM3UVVGRlJDeFZRVUZKTEVOQlFVTXNVMEZCVXl4SFFVRkhMRWxCUVVrc1EwRkJR
enRMUVVOMlFqczdRVUZGUkN4cFFrRkJZU3hGUVVGRkxIVkNRVUZUTEV0QlFVc3NSVUZCUlR0QlFV
TTNRaXhWUVVGSkxGRkJRVkVzUjBGQlJ5eG5Ra0ZCU1N4UFFVRlBMRU5CUVVNc1VVRkJVU3hEUVVG
RExFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXpzN1FVRkZhRVFzVlVGQlNTeFpRVUZa
TEVkQlFVY3NVVUZCVVN4SlFVRkpMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zWlVGQlpTeERR
VUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5
eERRVUZETEVOQlFVTTdPenM3UVVGSk0wVXNWVUZCU1N4UlFVRlJMRWRCUVVjc1EwRkJReXhaUVVG
WkxFbEJRVWtzWjBKQlFVa3NUMEZCVHl4RFFVRkRMR2RDUVVGblFpeERRVUZETEV0QlFVc3NRMEZC
UXl4RFFVRkRPenM3T3p0QlFVdHdSU3hWUVVGSkxGVkJRVlVzUjBGQlJ5eERRVUZETEZsQlFWa3NT
MEZCU3l4UlFVRlJMRWxCUVVrc1VVRkJVU3hEUVVGQkxFRkJRVU1zUTBGQlF6czdPenRCUVVsNlJD
eFZRVUZKTEZWQlFWVXNTVUZCU1N4RFFVRkRMRkZCUVZFc1JVRkJSVHRCUVVNelFpeFpRVUZKTEUx
QlFVa3NSMEZCUnl4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZE
TEVOQlFVTTdXVUZETVVJc1QwRkJUeXhIUVVGSExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTTdP
MEZCUlROQ0xGbEJRVWtzVDBGQlR5eERRVUZETEZsQlFWa3NRMEZCUXl4TlFVRkpMRU5CUVVNc1JV
RkJSVHRCUVVNNVFpeHJRa0ZCVVN4SFFVRkhMRWxCUVVrc1EwRkJRenRUUVVOcVFpeE5RVUZOTEVs
QlFVa3NUMEZCVHl4RFFVRkRMR2RDUVVGblFpeEZRVUZGTzBGQlEyNURMRzlDUVVGVkxFZEJRVWNz
UzBGQlN5eERRVUZETzFOQlEzQkNPMDlCUTBZN08wRkJSVVFzVlVGQlNTeFJRVUZSTEVWQlFVVTdR
VUZEV2l4bFFVRlBMRkZCUVZFc1EwRkJRenRQUVVOcVFpeE5RVUZOTEVsQlFVa3NWVUZCVlN4RlFV
RkZPMEZCUTNKQ0xHVkJRVThzVjBGQlZ5eERRVUZETzA5QlEzQkNMRTFCUVUwN1FVRkRUQ3hsUVVG
UExGRkJRVkVzUTBGQlF6dFBRVU5xUWp0TFFVTkdPenRCUVVWRUxHTkJRVlVzUlVGQlJTeHZRa0ZC
VXl4TlFVRk5MRVZCUVVVN1FVRkRNMElzVjBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRM
RVZCUVVVc1EwRkJReXhIUVVGSExFMUJRVTBzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4SFFV
RkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdEJRVU0zUXl4WlFVRkpMRU5CUVVN
c1UwRkJVeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMDlC
UXpOQ08wdEJRMFk3TzBGQlJVUXNZVUZCVXl4RlFVRkZMRzFDUVVGVExFZEJRVWNzUlVGQlJUdEJR
VU4yUWl4VlFVRkpMRXRCUVVzc1IwRkJSeXhIUVVGSExFTkJRVU1zUzBGQlN5eEpRVUZKTEVsQlFV
a3NSMEZCUnl4SFFVRkhMRU5CUVVNc1MwRkJTeXhIUVVGSExFZEJRVWNzUTBGQlF5eFJRVUZSTEVs
QlFVa3NSVUZCUlN4RFFVRkRPenRCUVVVdlJDeFZRVUZKTEVsQlFVa3NRMEZCUXl4WlFVRlpMRVZC
UVVVN1FVRkRja0lzV1VGQlNTeExRVUZMTEVOQlFVTXNUMEZCVHl4RlFVRkZPMEZCUTJwQ0xHVkJR
VXNzUjBGQlJ5eExRVUZMTEVOQlExSXNUMEZCVHl4RFFVRkRMR05CUVdNc1JVRkJSU3hGUVVGRkxF
TkJRVU1zUTBGRE0wSXNUMEZCVHl4RFFVRkRMRXRCUVVzc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBG
QlF6dFRRVU14UWpzN1FVRkZSQ3haUVVGSkxFZEJRVWNzUTBGQlF5eExRVUZMTEVWQlFVVTdRVUZE
WWl4alFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNR
MEZCUXp0VFFVTXhRanRCUVVORUxGbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNXVUZCV1N4RlFV
RkZMRWRCUVVjc1EwRkJReXhMUVVGTExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTTdRVUZETVVN
c1dVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eHBRa0ZCYVVJc1JVRkJSU3hMUVVGTExFVkJRVVVz
UjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPenRCUVVWb1JDeFpRVUZKTEVkQlFVY3NR
MEZCUXl4SlFVRkpMRXRCUVVzc1pVRkJaU3hGUVVGRk96czdRVUZIYUVNc1kwRkJTU3hEUVVGRExF
MUJRVTBzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0VFFVTnNRanRQUVVOR0xFMUJRVTA3UVVG
RFRDeFpRVUZKTEVsQlFVa3NRMEZCUXl4UlFVRlJMRVZCUVVVN1FVRkRha0lzWTBGQlNTeGxRVUZs
TEZsQlFVRXNRMEZCUXp0QlFVTndRaXhqUVVGSkxFZEJRVWNzUTBGQlF5eExRVUZMTEVsQlFVa3NR
MEZCUXl4blFrRkJTU3hQUVVGUExFTkJRVU1zVVVGQlVTeERRVUZETEVkQlFVY3NRMEZCUXl4SlFV
RkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFdEJRVXNzUlVGQlJUdEJRVU40UkN3eVFrRkJaU3hIUVVG
SExFbEJRVWtzUTBGQlF5eGxRVUZsTEVOQlFVTXNSMEZCUnl4RFFVRkRMRXRCUVVzc1EwRkJReXhE
UVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFkQlEzWkVPMEZCUTBRc1kwRkJTU3hsUVVGbExFVkJR
VVU3UVVGRGJrSXNaMEpCUVVrc1pVRkJaU3hIUVVGSExFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFV
TXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVO
QlFVTXNRMEZCUXp0QlFVTnVSQ3huUWtGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4UlFVRlJMRVZC
UVVVc1dVRkJXU3hGUVVGRkxHVkJRV1VzUlVGQlJTeGxRVUZsTEVOQlFVTXNRMEZCUXp0WFFVTjJS
U3hOUVVGTk8wRkJRMHdzYVVKQlFVc3NSMEZCUnl4SFFVRkhMRU5CUVVNc1VVRkJVU3hKUVVGSkxF
dEJRVXNzUTBGQlF6dEJRVU01UWl4blFrRkJTU3hMUVVGTExFTkJRVU1zVDBGQlR5eEZRVUZGTzBG
QlEycENMRzFDUVVGTExFZEJRVWNzUzBGQlN5eERRVU5TTEU5QlFVOHNRMEZCUXl4bFFVRmxMRVZC
UVVVc1JVRkJSU3hEUVVGRExFTkJRelZDTEU5QlFVOHNRMEZCUXl4UFFVRlBMRVZCUVVVc1JVRkJS
U3hEUVVGRExFTkJRM0JDTEU5QlFVOHNRMEZCUXl4TlFVRk5MRVZCUVVVc1JVRkJSU3hEUVVGRExF
TkJRVU03WVVGRE1VSTdPMEZCUlVRc1owSkJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNVVUZCVVN4
RlFVRkZMRWRCUVVjc1EwRkJReXhKUVVGSkxFVkJRVVVzUzBGQlN5eERRVUZETEVOQlFVTTdWMEZE
ZUVNN1UwRkRSanRCUVVORUxGbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNSMEZCUnl4RFFVRkRM
RU5CUVVNN1QwRkRiRUk3UzBGRFJqczdRVUZGUkN3eVFrRkJkVUlzUlVGQlJTeHBRMEZCVXl4TFFV
RkxMRVZCUVVVc1QwRkJUeXhGUVVGRkxFOUJRVThzUlVGQlJTeFRRVUZUTEVWQlFVVTdRVUZEY0VV
c1ZVRkJTU3hOUVVGTkxFZEJRVWNzUzBGQlN5eERRVUZETEUxQlFVMHNRMEZCUXp0QlFVTXhRaXhW
UVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPenRCUVVWNFFpeFZR
VUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMR0ZCUVdFc1JVRkJSU3hQUVVGUExFTkJRVU1zUTBGQlF6
dEJRVU53UXl4VlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExHRkJRV0VzUlVGQlJTeFBRVUZQTEVO
QlFVTXNRMEZCUXpzN1FVRkZjRU1zVlVGQlNTeExRVUZMTEVOQlFVTXNTVUZCU1N4RlFVRkZPMEZC
UTJRc1dVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRM
RU5CUVVNN1QwRkRla0lzVFVGQlRUdEJRVU5NTEZsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1Yw
RkJWeXhGUVVGRkxGTkJRVk1zUTBGQlF5eERRVUZETzA5QlEzSkRPenRCUVVWRUxHRkJRVThzVFVG
QlRTeERRVUZETzB0QlEyWTdPMEZCUlVRc2JVSkJRV1VzUlVGQlJTeDVRa0ZCVXl4SlFVRkpMRVZC
UVVVN1FVRkRPVUlzVjBGQlN5eEpRVUZKTEV0QlFVc3NSMEZCUnl4RFFVRkRMRVZCUVVVc1IwRkJS
eXhIUVVGSExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNWMEZCVnl4RFFVRkRMRTFCUVUwc1JV
RkJSU3hMUVVGTExFZEJRVWNzUjBGQlJ5eEZRVUZGTEV0QlFVc3NSVUZCUlN4RlFVRkZPMEZCUXk5
RkxGbEJRVWtzVjBGQlZ5eEhRVUZITEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1YwRkJWeXhE
UVVGRExFdEJRVXNzUTBGQlF6dFpRVU0zUXl4TFFVRkxMRWRCUVVjc1YwRkJWeXhKUVVGSkxFOUJl
R05vUWl4UFFVRlBMRU5CZDJOcFFpeFhRVUZYTEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNN1FV
RkRkRVFzV1VGQlNTeFhRVUZYTEVsQlFVa3NTMEZCU3l4SlFVRkpMRU5CUVVNc1JVRkJSVHRCUVVN
M1FpeHBRa0ZCVHl4RFFVRkRMRXRCUVVzc1JVRkJSU3hMUVVGTExFTkJRVU1zUTBGQlF6dFRRVU4y
UWp0UFFVTkdPMHRCUTBZN1IwRkRSaXhEUVVGRE96dEJRVVZMTEZkQlFWTXNWVUZCVlN4RFFVRkRM
RXRCUVVzc1JVRkJSU3hQUVVGUExFVkJRVVVzUjBGQlJ5eEZRVUZGTzBGQlF6bERMRkZCUVVrc1Mw
RkJTeXhKUVVGSkxFbEJRVWtzU1VGQlN5eFBRVUZQTEV0QlFVc3NTMEZCU3l4UlFVRlJMRWxCUVVr
c1MwRkJTeXhEUVVGRExFbEJRVWtzUzBGQlN5eFRRVUZUTEVGQlFVTXNSVUZCUlR0QlFVTTFSU3ha
UVVGTkxEQkNRVUZqTEdkR1FVRm5SaXhIUVVGSExFdEJRVXNzUTBGQlF5eERRVUZETzB0QlF5OUhP
enRCUVVWRUxGZEJRVThzUjBGQlJ5eFBRVUZQTEVsQlFVa3NSVUZCUlN4RFFVRkRPMEZCUTNoQ0xG
RkJRVWtzUlVGQlJTeE5RVUZOTEVsQlFVa3NUMEZCVHl4RFFVRkJMRUZCUVVNc1JVRkJSVHRCUVVO
NFFpeGhRVUZQTEVOQlFVTXNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJRenRMUVVOeVFqdEJRVU5F
TEZGQlFVa3NUMEZCVHl4RFFVRkRMRTFCUVUwc1JVRkJSVHRCUVVOc1FpeGhRVUZQTEVOQlFVTXNV
MEZCVXl4SFFVRkhMRWxCUVVrc1EwRkJRenRMUVVNeFFqczdRVUZGUkN4UlFVRkpMRWRCUVVjc1Iw
RkJSeXhIUVVGSExFTkJRVU1zUzBGQlN5eERRVUZETEV0QlFVc3NSVUZCUlN4UFFVRlBMRU5CUVVN
N1VVRkRMMElzVjBGQlZ5eEhRVUZITEVsQlFVa3NSMEZCUnl4RFFVRkRMRkZCUVZFc1JVRkJSU3hE
UVVGRExFOUJRVThzUTBGQlF5eEhRVUZITEVWQlFVVXNUMEZCVHl4RFFVRkRMRU5CUVVNN1FVRkRN
MFFzVjBGQlR5eEpRVUZKTEVkQlFVY3NRMEZCUXl4clFrRkJhMElzUlVGQlJTeERRVUZETEU5QlFV
OHNRMEZCUXl4WFFVRlhMRVZCUVVVc1QwRkJUeXhEUVVGRExFTkJRVU03UjBGRGJrVTdPMEZCUlUw
c1YwRkJVeXhQUVVGUExFTkJRVU1zUzBGQlN5eEZRVUZGTEU5QlFVOHNSVUZCVHl4SFFVRkhMRVZC
UVVVN1VVRkJia0lzVDBGQlR5eG5Ra0ZCVUN4UFFVRlBMRWRCUVVjc1JVRkJSVHM3UVVGRGVrTXNV
VUZCU1N4TFFVRkxMRWxCUVVrc1NVRkJTU3hKUVVGTExFOUJRVThzUzBGQlN5eExRVUZMTEZGQlFW
RXNTVUZCU1N4TFFVRkxMRU5CUVVNc1NVRkJTU3hMUVVGTExGTkJRVk1zUVVGQlF5eEZRVUZGTzBG
QlF6VkZMRmxCUVUwc01FSkJRV01zTmtWQlFUWkZMRWRCUVVjc1MwRkJTeXhEUVVGRExFTkJRVU03
UzBGRE5VYzdPMEZCUlVRc1VVRkJTU3hGUVVGRkxFMUJRVTBzU1VGQlNTeFBRVUZQTEVOQlFVRXNR
VUZCUXl4RlFVRkZPMEZCUTNoQ0xHRkJRVThzUTBGQlF5eEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFV
RkRPMHRCUTNKQ08wRkJRMFFzVVVGQlNTeFBRVUZQTEVOQlFVTXNUVUZCVFN4RlFVRkZPMEZCUTJ4
Q0xHRkJRVThzUTBGQlF5eFRRVUZUTEVkQlFVY3NTVUZCU1N4RFFVRkRPMHRCUXpGQ096dEJRVVZF
TEZGQlFVa3NVVUZCVVN4WlFVRkJMRU5CUVVNN08wRkJSV0lzWVVGQlV5eFpRVUZaTEVkQlFVYzdR
VUZEZEVJc1ZVRkJTU3hIUVVGSExFZEJRVWNzUjBGQlJ5eERRVUZETEV0QlFVc3NRMEZCUXl4TFFV
RkxMRVZCUVVVc1QwRkJUeXhEUVVGRE8xVkJReTlDTEZkQlFWY3NSMEZCUnl4SlFVRkpMRWRCUVVj
c1EwRkJReXhSUVVGUkxFVkJRVVVzUTBGQlF5eFBRVUZQTEVOQlFVTXNSMEZCUnl4RlFVRkZMRTlC
UVU4c1EwRkJRenRWUVVOMFJDeFpRVUZaTEVkQlFVY3NTVUZCU1N4SFFVRkhMRU5CUVVNc2EwSkJR
V3RDTEVWQlFVVXNRMEZCUXl4UFFVRlBMRU5CUVVNc1YwRkJWeXhGUVVGRkxFOUJRVThzUlVGQlJT
eFRRVUZUTEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNN1FVRkRMMFlzWVVGQlR5eEhRVUZITEVO
QlFVTXNVVUZCVVN4RFFVRkRMRmxCUVZrc1EwRkJReXhEUVVGRE8wdEJRMjVET3pzN1FVRkhSQ3ho
UVVGVExFZEJRVWNzUTBGQlF5eFBRVUZQTEVWQlFVVXNWMEZCVnl4RlFVRkZPMEZCUTJwRExGVkJR
VWtzUTBGQlF5eFJRVUZSTEVWQlFVVTdRVUZEWWl4blFrRkJVU3hIUVVGSExGbEJRVmtzUlVGQlJT
eERRVUZETzA5QlF6TkNPMEZCUTBRc1lVRkJUeXhSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEVs
QlFVa3NSVUZCUlN4UFFVRlBMRVZCUVVVc1YwRkJWeXhEUVVGRExFTkJRVU03UzBGRGJFUTdRVUZE
UkN4UFFVRkhMRU5CUVVNc1RVRkJUU3hIUVVGSExGVkJRVk1zV1VGQldTeEZRVUZGTzBGQlEyeERM
RlZCUVVrc1EwRkJReXhSUVVGUkxFVkJRVVU3UVVGRFlpeG5Ra0ZCVVN4SFFVRkhMRmxCUVZrc1JV
RkJSU3hEUVVGRE8wOUJRek5DTzBGQlEwUXNZVUZCVHl4UlFVRlJMRU5CUVVNc1RVRkJUU3hEUVVG
RExGbEJRVmtzUTBGQlF5eERRVUZETzB0QlEzUkRMRU5CUVVNN1FVRkRSaXhQUVVGSExFTkJRVU1z
VFVGQlRTeEhRVUZITEZWQlFWTXNRMEZCUXl4RlFVRkZMRWxCUVVrc1JVRkJSU3hYUVVGWExFVkJR
VVVzVFVGQlRTeEZRVUZGTzBGQlEyeEVMRlZCUVVrc1EwRkJReXhSUVVGUkxFVkJRVVU3UVVGRFlp
eG5Ra0ZCVVN4SFFVRkhMRmxCUVZrc1JVRkJSU3hEUVVGRE8wOUJRek5DTzBGQlEwUXNZVUZCVHl4
UlFVRlJMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVWQlFVVXNWMEZC
Vnl4RlFVRkZMRTFCUVUwc1EwRkJReXhEUVVGRE8wdEJRM1JFTEVOQlFVTTdRVUZEUml4WFFVRlBM
RWRCUVVjc1EwRkJRenRIUVVOYU96dEJRVVZFTEZkQlFWTXNVMEZCVXl4RFFVRkRMRU5CUVVNc1JV
RkJSU3hEUVVGRExFVkJRVVU3UVVGRGRrSXNVVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhGUVVG
Rk8wRkJRMWdzWVVGQlR5eEpRVUZKTEVOQlFVTTdTMEZEWWpzN1FVRkZSQ3hSUVVGSkxFOUJiR2hD
UlN4UFFVRlBMRU5CYTJoQ1JDeERRVUZETEVOQlFVTXNTVUZCU1N4UFFXeG9RbG9zVDBGQlR5eERR
V3RvUW1Fc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEUxQlFVMHNTMEZCU3l4RFFV
RkRMRU5CUVVNc1RVRkJUU3hGUVVGRk8wRkJRM0pFTEZkQlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVj
c1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5C
UVVNc1JVRkJSU3hGUVVGRk8wRkJRMnBETEZsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJR
eXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1Ew
RkJReXhGUVVGRk8wRkJRekZDTEdsQ1FVRlBMRXRCUVVzc1EwRkJRenRUUVVOa08wOUJRMFk3UVVG
RFJDeGhRVUZQTEVsQlFVa3NRMEZCUXp0TFFVTmlPMGRCUTBZN08wRkJSVVFzVjBGQlV5eHpRa0ZC
YzBJc1EwRkJReXhMUVVGTExFVkJRVVU3UVVGRGNrTXNVVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJR
eXhKUVVGSkxFTkJRVU1zUzBGQlN5eEZRVUZGTzBGQlEzSkNMRlZCUVVrc1QwRkJUeXhIUVVGSExF
dEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTTdPenRCUVVkNlFpeFhRVUZMTEVOQlFVTXNTVUZCU1N4
SFFVRkhPMEZCUTFnc1dVRkJTU3hGUVVGRkxHZENRVUZuUWp0QlFVTjBRaXhaUVVGSkxFVkJRVVVz
UzBGQlN6dEJRVU5ZTEdGQlFVc3NSVUZCUlN4RFFVRkRPMEZCUTFJc1lVRkJTeXhGUVVGRkxFTkJR
VU1zVDBGQlR5eERRVUZETEZGQlFWRXNSMEZCUnl4RlFVRkZMRU5CUVVNN1FVRkRPVUlzWjBKQlFW
RXNSVUZCUlN4UFFVRlBMRU5CUVVNc1VVRkJVU3hIUVVGSExFVkJRVVU3UVVGREwwSXNWMEZCUnl4
RlFVRkZMRTlCUVU4c1EwRkJReXhIUVVGSE8wOUJRMnBDTEVOQlFVTTdTMEZEU0R0SFFVTkdJaXdp
Wm1sc1pTSTZJbU52YlhCcGJHVnlMbXB6SWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaUx5b2da
WE5zYVc1MExXUnBjMkZpYkdVZ2JtVjNMV05oY0NBcUwxeHVYRzVwYlhCdmNuUWdSWGhqWlhCMGFX
OXVJR1p5YjIwZ0p5NHVMMlY0WTJWd2RHbHZiaWM3WEc1cGJYQnZjblFnZTJselFYSnlZWGtzSUds
dVpHVjRUMlo5SUdaeWIyMGdKeTR1TDNWMGFXeHpKenRjYm1sdGNHOXlkQ0JCVTFRZ1puSnZiU0Fu
TGk5aGMzUW5PMXh1WEc1amIyNXpkQ0J6YkdsalpTQTlJRnRkTG5Oc2FXTmxPMXh1WEc1bGVIQnZj
blFnWm5WdVkzUnBiMjRnUTI5dGNHbHNaWElvS1NCN2ZWeHVYRzR2THlCMGFHVWdabTkxYm1SSVpX
eHdaWElnY21WbmFYTjBaWElnZDJsc2JDQmthWE5oYldKcFozVmhkR1VnYUdWc2NHVnlJR3h2YjJ0
MWNDQm1jbTl0SUdacGJtUnBibWNnWVZ4dUx5OGdablZ1WTNScGIyNGdhVzRnWVNCamIyNTBaWGgw
TGlCVWFHbHpJR2x6SUc1bFkyVnpjMkZ5ZVNCbWIzSWdiWFZ6ZEdGamFHVWdZMjl0Y0dGMGFXSnBi
R2wwZVN3Z2QyaHBZMmhjYmk4dklISmxjWFZwY21WeklIUm9ZWFFnWTI5dWRHVjRkQ0JtZFc1amRH
bHZibk1nYVc0Z1lteHZZMnR6SUdGeVpTQmxkbUZzZFdGMFpXUWdZbmtnWW14dlkydElaV3h3WlhK
TmFYTnphVzVuTEZ4dUx5OGdZVzVrSUhSb1pXNGdjSEp2WTJWbFpDQmhjeUJwWmlCMGFHVWdjbVZ6
ZFd4MGFXNW5JSFpoYkhWbElIZGhjeUJ3Y205MmFXUmxaQ0IwYnlCaWJHOWphMGhsYkhCbGNrMXBj
M05wYm1jdVhHNWNia052YlhCcGJHVnlMbkJ5YjNSdmRIbHdaU0E5SUh0Y2JpQWdZMjl0Y0dsc1pY
STZJRU52YlhCcGJHVnlMRnh1WEc0Z0lHVnhkV0ZzY3pvZ1puVnVZM1JwYjI0b2IzUm9aWElwSUh0
Y2JpQWdJQ0JzWlhRZ2JHVnVJRDBnZEdocGN5NXZjR052WkdWekxteGxibWQwYUR0Y2JpQWdJQ0Jw
WmlBb2IzUm9aWEl1YjNCamIyUmxjeTVzWlc1bmRHZ2dJVDA5SUd4bGJpa2dlMXh1SUNBZ0lDQWdj
bVYwZFhKdUlHWmhiSE5sTzF4dUlDQWdJSDFjYmx4dUlDQWdJR1p2Y2lBb2JHVjBJR2tnUFNBd095
QnBJRHdnYkdWdU95QnBLeXNwSUh0Y2JpQWdJQ0FnSUd4bGRDQnZjR052WkdVZ1BTQjBhR2x6TG05
d1kyOWtaWE5iYVYwc1hHNGdJQ0FnSUNBZ0lDQWdiM1JvWlhKUGNHTnZaR1VnUFNCdmRHaGxjaTV2
Y0dOdlpHVnpXMmxkTzF4dUlDQWdJQ0FnYVdZZ0tHOXdZMjlrWlM1dmNHTnZaR1VnSVQwOUlHOTBh
R1Z5VDNCamIyUmxMbTl3WTI5a1pTQjhmQ0FoWVhKblJYRjFZV3h6S0c5d1kyOWtaUzVoY21kekxD
QnZkR2hsY2s5d1kyOWtaUzVoY21kektTa2dlMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdabUZzYzJV
N1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dVhHNGdJQ0FnTHk4Z1YyVWdhMjV2ZHlCMGFHRjBJR3hs
Ym1kMGFDQnBjeUIwYUdVZ2MyRnRaU0JpWlhSM1pXVnVJSFJvWlNCMGQyOGdZWEp5WVhseklHSmxZ
MkYxYzJVZ2RHaGxlU0JoY21VZ1pHbHlaV04wYkhrZ2RHbGxaRnh1SUNBZ0lDOHZJSFJ2SUhSb1pT
QnZjR052WkdVZ1ltVm9ZWFpwYjNJZ1lXSnZkbVV1WEc0Z0lDQWdiR1Z1SUQwZ2RHaHBjeTVqYUds
c1pISmxiaTVzWlc1bmRHZzdYRzRnSUNBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQnNaVzQ3
SUdrckt5a2dlMXh1SUNBZ0lDQWdhV1lnS0NGMGFHbHpMbU5vYVd4a2NtVnVXMmxkTG1WeGRXRnNj
eWh2ZEdobGNpNWphR2xzWkhKbGJsdHBYU2twSUh0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUdaaGJI
TmxPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNibHh1SUNBZ0lISmxkSFZ5YmlCMGNuVmxPMXh1SUNC
OUxGeHVYRzRnSUdkMWFXUTZJREFzWEc1Y2JpQWdZMjl0Y0dsc1pUb2dablZ1WTNScGIyNG9jSEp2
WjNKaGJTd2diM0IwYVc5dWN5a2dlMXh1SUNBZ0lIUm9hWE11YzI5MWNtTmxUbTlrWlNBOUlGdGRP
MXh1SUNBZ0lIUm9hWE11YjNCamIyUmxjeUE5SUZ0ZE8xeHVJQ0FnSUhSb2FYTXVZMmhwYkdSeVpX
NGdQU0JiWFR0Y2JpQWdJQ0IwYUdsekxtOXdkR2x2Ym5NZ1BTQnZjSFJwYjI1ek8xeHVJQ0FnSUhS
b2FYTXVjM1J5YVc1blVHRnlZVzF6SUQwZ2IzQjBhVzl1Y3k1emRISnBibWRRWVhKaGJYTTdYRzRn
SUNBZ2RHaHBjeTUwY21GamEwbGtjeUE5SUc5d2RHbHZibk11ZEhKaFkydEpaSE03WEc1Y2JpQWdJ
Q0J2Y0hScGIyNXpMbUpzYjJOclVHRnlZVzF6SUQwZ2IzQjBhVzl1Y3k1aWJHOWphMUJoY21GdGN5
QjhmQ0JiWFR0Y2JseHVJQ0FnSUM4dklGUm9aWE5sSUdOb1lXNW5aWE1nZDJsc2JDQndjbTl3WVdk
aGRHVWdkRzhnZEdobElHOTBhR1Z5SUdOdmJYQnBiR1Z5SUdOdmJYQnZibVZ1ZEhOY2JpQWdJQ0Jz
WlhRZ2EyNXZkMjVJWld4d1pYSnpJRDBnYjNCMGFXOXVjeTVyYm05M2JraGxiSEJsY25NN1hHNGdJ
Q0FnYjNCMGFXOXVjeTVyYm05M2JraGxiSEJsY25NZ1BTQjdYRzRnSUNBZ0lDQW5hR1ZzY0dWeVRX
bHpjMmx1WnljNklIUnlkV1VzWEc0Z0lDQWdJQ0FuWW14dlkydElaV3h3WlhKTmFYTnphVzVuSnpv
Z2RISjFaU3hjYmlBZ0lDQWdJQ2RsWVdOb0p6b2dkSEoxWlN4Y2JpQWdJQ0FnSUNkcFppYzZJSFJ5
ZFdVc1hHNGdJQ0FnSUNBbmRXNXNaWE56SnpvZ2RISjFaU3hjYmlBZ0lDQWdJQ2QzYVhSb0p6b2dk
SEoxWlN4Y2JpQWdJQ0FnSUNkc2IyY25PaUIwY25WbExGeHVJQ0FnSUNBZ0oyeHZiMnQxY0NjNklI
UnlkV1ZjYmlBZ0lDQjlPMXh1SUNBZ0lHbG1JQ2hyYm05M2JraGxiSEJsY25NcElIdGNiaUFnSUNB
Z0lHWnZjaUFvYkdWMElHNWhiV1VnYVc0Z2EyNXZkMjVJWld4d1pYSnpLU0I3WEc0Z0lDQWdJQ0Fn
SUM4cUlHbHpkR0Z1WW5Wc0lHbG5ibTl5WlNCbGJITmxJQ292WEc0Z0lDQWdJQ0FnSUdsbUlDaHVZ
VzFsSUdsdUlHdHViM2R1U0dWc2NHVnljeWtnZTF4dUlDQWdJQ0FnSUNBZ0lHOXdkR2x2Ym5NdWEy
NXZkMjVJWld4d1pYSnpXMjVoYldWZElEMGdhMjV2ZDI1SVpXeHdaWEp6VzI1aGJXVmRPMXh1SUNB
Z0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11
WVdOalpYQjBLSEJ5YjJkeVlXMHBPMXh1SUNCOUxGeHVYRzRnSUdOdmJYQnBiR1ZRY205bmNtRnRP
aUJtZFc1amRHbHZiaWh3Y205bmNtRnRLU0I3WEc0Z0lDQWdiR1YwSUdOb2FXeGtRMjl0Y0dsc1pY
SWdQU0J1WlhjZ2RHaHBjeTVqYjIxd2FXeGxjaWdwTENBdkx5QmxjMnhwYm5RdFpHbHpZV0pzWlMx
c2FXNWxJRzVsZHkxallYQmNiaUFnSUNBZ0lDQWdjbVZ6ZFd4MElEMGdZMmhwYkdSRGIyMXdhV3hs
Y2k1amIyMXdhV3hsS0hCeWIyZHlZVzBzSUhSb2FYTXViM0IwYVc5dWN5a3NYRzRnSUNBZ0lDQWdJ
R2QxYVdRZ1BTQjBhR2x6TG1kMWFXUXJLenRjYmx4dUlDQWdJSFJvYVhNdWRYTmxVR0Z5ZEdsaGJD
QTlJSFJvYVhNdWRYTmxVR0Z5ZEdsaGJDQjhmQ0J5WlhOMWJIUXVkWE5sVUdGeWRHbGhiRHRjYmx4
dUlDQWdJSFJvYVhNdVkyaHBiR1J5Wlc1YlozVnBaRjBnUFNCeVpYTjFiSFE3WEc0Z0lDQWdkR2hw
Y3k1MWMyVkVaWEIwYUhNZ1BTQjBhR2x6TG5WelpVUmxjSFJvY3lCOGZDQnlaWE4xYkhRdWRYTmxS
R1Z3ZEdoek8xeHVYRzRnSUNBZ2NtVjBkWEp1SUdkMWFXUTdYRzRnSUgwc1hHNWNiaUFnWVdOalpY
QjBPaUJtZFc1amRHbHZiaWh1YjJSbEtTQjdYRzRnSUNBZ0x5b2dhWE4wWVc1aWRXd2dhV2R1YjNK
bElHNWxlSFE2SUZOaGJtbDBlU0JqYjJSbElDb3ZYRzRnSUNBZ2FXWWdLQ0YwYUdselcyNXZaR1V1
ZEhsd1pWMHBJSHRjYmlBZ0lDQWdJSFJvY205M0lHNWxkeUJGZUdObGNIUnBiMjRvSjFWdWEyNXZk
MjRnZEhsd1pUb2dKeUFySUc1dlpHVXVkSGx3WlN3Z2JtOWtaU2s3WEc0Z0lDQWdmVnh1WEc0Z0lD
QWdkR2hwY3k1emIzVnlZMlZPYjJSbExuVnVjMmhwWm5Rb2JtOWtaU2s3WEc0Z0lDQWdiR1YwSUhK
bGRDQTlJSFJvYVhOYmJtOWtaUzUwZVhCbFhTaHViMlJsS1R0Y2JpQWdJQ0IwYUdsekxuTnZkWEpq
WlU1dlpHVXVjMmhwWm5Rb0tUdGNiaUFnSUNCeVpYUjFjbTRnY21WME8xeHVJQ0I5TEZ4dVhHNGdJ
RkJ5YjJkeVlXMDZJR1oxYm1OMGFXOXVLSEJ5YjJkeVlXMHBJSHRjYmlBZ0lDQjBhR2x6TG05d2RH
bHZibk11WW14dlkydFFZWEpoYlhNdWRXNXphR2xtZENod2NtOW5jbUZ0TG1Kc2IyTnJVR0Z5WVcx
ektUdGNibHh1SUNBZ0lHeGxkQ0JpYjJSNUlEMGdjSEp2WjNKaGJTNWliMlI1TEZ4dUlDQWdJQ0Fn
SUNCaWIyUjVUR1Z1WjNSb0lEMGdZbTlrZVM1c1pXNW5kR2c3WEc0Z0lDQWdabTl5SUNoc1pYUWdh
U0E5SURBN0lHa2dQQ0JpYjJSNVRHVnVaM1JvT3lCcEt5c3BJSHRjYmlBZ0lDQWdJSFJvYVhNdVlX
TmpaWEIwS0dKdlpIbGJhVjBwTzF4dUlDQWdJSDFjYmx4dUlDQWdJSFJvYVhNdWIzQjBhVzl1Y3k1
aWJHOWphMUJoY21GdGN5NXphR2xtZENncE8xeHVYRzRnSUNBZ2RHaHBjeTVwYzFOcGJYQnNaU0E5
SUdKdlpIbE1aVzVuZEdnZ1BUMDlJREU3WEc0Z0lDQWdkR2hwY3k1aWJHOWphMUJoY21GdGN5QTlJ
SEJ5YjJkeVlXMHVZbXh2WTJ0UVlYSmhiWE1nUHlCd2NtOW5jbUZ0TG1Kc2IyTnJVR0Z5WVcxekxt
eGxibWQwYUNBNklEQTdYRzVjYmlBZ0lDQnlaWFIxY200Z2RHaHBjenRjYmlBZ2ZTeGNibHh1SUNC
Q2JHOWphMU4wWVhSbGJXVnVkRG9nWm5WdVkzUnBiMjRvWW14dlkyc3BJSHRjYmlBZ0lDQjBjbUZ1
YzJadmNtMU1hWFJsY21Gc1ZHOVFZWFJvS0dKc2IyTnJLVHRjYmx4dUlDQWdJR3hsZENCd2NtOW5j
bUZ0SUQwZ1lteHZZMnN1Y0hKdlozSmhiU3hjYmlBZ0lDQWdJQ0FnYVc1MlpYSnpaU0E5SUdKc2Iy
TnJMbWx1ZG1WeWMyVTdYRzVjYmlBZ0lDQndjbTluY21GdElEMGdjSEp2WjNKaGJTQW1KaUIwYUds
ekxtTnZiWEJwYkdWUWNtOW5jbUZ0S0hCeWIyZHlZVzBwTzF4dUlDQWdJR2x1ZG1WeWMyVWdQU0Jw
Ym5abGNuTmxJQ1ltSUhSb2FYTXVZMjl0Y0dsc1pWQnliMmR5WVcwb2FXNTJaWEp6WlNrN1hHNWNi
aUFnSUNCc1pYUWdkSGx3WlNBOUlIUm9hWE11WTJ4aGMzTnBabmxUWlhod2NpaGliRzlqYXlrN1hH
NWNiaUFnSUNCcFppQW9kSGx3WlNBOVBUMGdKMmhsYkhCbGNpY3BJSHRjYmlBZ0lDQWdJSFJvYVhN
dWFHVnNjR1Z5VTJWNGNISW9ZbXh2WTJzc0lIQnliMmR5WVcwc0lHbHVkbVZ5YzJVcE8xeHVJQ0Fn
SUgwZ1pXeHpaU0JwWmlBb2RIbHdaU0E5UFQwZ0ozTnBiWEJzWlNjcElIdGNiaUFnSUNBZ0lIUm9h
WE11YzJsdGNHeGxVMlY0Y0hJb1lteHZZMnNwTzF4dVhHNGdJQ0FnSUNBdkx5QnViM2NnZEdoaGRD
QjBhR1VnYzJsdGNHeGxJRzExYzNSaFkyaGxJR2x6SUhKbGMyOXNkbVZrTENCM1pTQnVaV1ZrSUhS
dlhHNGdJQ0FnSUNBdkx5QmxkbUZzZFdGMFpTQnBkQ0JpZVNCbGVHVmpkWFJwYm1jZ1lHSnNiMk5y
U0dWc2NHVnlUV2x6YzJsdVoyQmNiaUFnSUNBZ0lIUm9hWE11YjNCamIyUmxLQ2R3ZFhOb1VISnZa
M0poYlNjc0lIQnliMmR5WVcwcE8xeHVJQ0FnSUNBZ2RHaHBjeTV2Y0dOdlpHVW9KM0IxYzJoUWNt
OW5jbUZ0Snl3Z2FXNTJaWEp6WlNrN1hHNGdJQ0FnSUNCMGFHbHpMbTl3WTI5a1pTZ25aVzF3ZEhs
SVlYTm9KeWs3WEc0Z0lDQWdJQ0IwYUdsekxtOXdZMjlrWlNnbllteHZZMnRXWVd4MVpTY3NJR0pz
YjJOckxuQmhkR2d1YjNKcFoybHVZV3dwTzF4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQjBh
R2x6TG1GdFltbG5kVzkxYzFObGVIQnlLR0pzYjJOckxDQndjbTluY21GdExDQnBiblpsY25ObEtU
dGNibHh1SUNBZ0lDQWdMeThnYm05M0lIUm9ZWFFnZEdobElITnBiWEJzWlNCdGRYTjBZV05vWlNC
cGN5QnlaWE52YkhabFpDd2dkMlVnYm1WbFpDQjBiMXh1SUNBZ0lDQWdMeThnWlhaaGJIVmhkR1Vn
YVhRZ1lua2daWGhsWTNWMGFXNW5JR0JpYkc5amEwaGxiSEJsY2sxcGMzTnBibWRnWEc0Z0lDQWdJ
Q0IwYUdsekxtOXdZMjlrWlNnbmNIVnphRkJ5YjJkeVlXMG5MQ0J3Y205bmNtRnRLVHRjYmlBZ0lD
QWdJSFJvYVhNdWIzQmpiMlJsS0Nkd2RYTm9VSEp2WjNKaGJTY3NJR2x1ZG1WeWMyVXBPMXh1SUNB
Z0lDQWdkR2hwY3k1dmNHTnZaR1VvSjJWdGNIUjVTR0Z6YUNjcE8xeHVJQ0FnSUNBZ2RHaHBjeTV2
Y0dOdlpHVW9KMkZ0WW1sbmRXOTFjMEpzYjJOclZtRnNkV1VuS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJ
Q0IwYUdsekxtOXdZMjlrWlNnbllYQndaVzVrSnlrN1hHNGdJSDBzWEc1Y2JpQWdSR1ZqYjNKaGRH
OXlRbXh2WTJzb1pHVmpiM0poZEc5eUtTQjdYRzRnSUNBZ2JHVjBJSEJ5YjJkeVlXMGdQU0JrWldO
dmNtRjBiM0l1Y0hKdlozSmhiU0FtSmlCMGFHbHpMbU52YlhCcGJHVlFjbTluY21GdEtHUmxZMjl5
WVhSdmNpNXdjbTluY21GdEtUdGNiaUFnSUNCc1pYUWdjR0Z5WVcxeklEMGdkR2hwY3k1elpYUjFj
RVoxYkd4TmRYTjBZV05vWlZCaGNtRnRjeWhrWldOdmNtRjBiM0lzSUhCeWIyZHlZVzBzSUhWdVpH
Vm1hVzVsWkNrc1hHNGdJQ0FnSUNBZ0lIQmhkR2dnUFNCa1pXTnZjbUYwYjNJdWNHRjBhRHRjYmx4
dUlDQWdJSFJvYVhNdWRYTmxSR1ZqYjNKaGRHOXljeUE5SUhSeWRXVTdYRzRnSUNBZ2RHaHBjeTV2
Y0dOdlpHVW9KM0psWjJsemRHVnlSR1ZqYjNKaGRHOXlKeXdnY0dGeVlXMXpMbXhsYm1kMGFDd2dj
R0YwYUM1dmNtbG5hVzVoYkNrN1hHNGdJSDBzWEc1Y2JpQWdVR0Z5ZEdsaGJGTjBZWFJsYldWdWRE
b2dablZ1WTNScGIyNG9jR0Z5ZEdsaGJDa2dlMXh1SUNBZ0lIUm9hWE11ZFhObFVHRnlkR2xoYkNB
OUlIUnlkV1U3WEc1Y2JpQWdJQ0JzWlhRZ2NISnZaM0poYlNBOUlIQmhjblJwWVd3dWNISnZaM0po
YlR0Y2JpQWdJQ0JwWmlBb2NISnZaM0poYlNrZ2UxeHVJQ0FnSUNBZ2NISnZaM0poYlNBOUlIUm9h
WE11WTI5dGNHbHNaVkJ5YjJkeVlXMG9jR0Z5ZEdsaGJDNXdjbTluY21GdEtUdGNiaUFnSUNCOVhH
NWNiaUFnSUNCc1pYUWdjR0Z5WVcxeklEMGdjR0Z5ZEdsaGJDNXdZWEpoYlhNN1hHNGdJQ0FnYVdZ
Z0tIQmhjbUZ0Y3k1c1pXNW5kR2dnUGlBeEtTQjdYRzRnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dSWGhq
WlhCMGFXOXVLQ2RWYm5OMWNIQnZjblJsWkNCdWRXMWlaWElnYjJZZ2NHRnlkR2xoYkNCaGNtZDFi
V1Z1ZEhNNklDY2dLeUJ3WVhKaGJYTXViR1Z1WjNSb0xDQndZWEowYVdGc0tUdGNiaUFnSUNCOUlH
VnNjMlVnYVdZZ0tDRndZWEpoYlhNdWJHVnVaM1JvS1NCN1hHNGdJQ0FnSUNCcFppQW9kR2hwY3k1
dmNIUnBiMjV6TG1WNGNHeHBZMmwwVUdGeWRHbGhiRU52Ym5SbGVIUXBJSHRjYmlBZ0lDQWdJQ0Fn
ZEdocGN5NXZjR052WkdVb0ozQjFjMmhNYVhSbGNtRnNKeXdnSjNWdVpHVm1hVzVsWkNjcE8xeHVJ
Q0FnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ2NHRnlZVzF6TG5CMWMyZ29lM1I1Y0dVNklD
ZFFZWFJvUlhod2NtVnpjMmx2Ymljc0lIQmhjblJ6T2lCYlhTd2daR1Z3ZEdnNklEQjlLVHRjYmlB
Z0lDQWdJSDFjYmlBZ0lDQjlYRzVjYmlBZ0lDQnNaWFFnY0dGeWRHbGhiRTVoYldVZ1BTQndZWEow
YVdGc0xtNWhiV1V1YjNKcFoybHVZV3dzWEc0Z0lDQWdJQ0FnSUdselJIbHVZVzFwWXlBOUlIQmhj
blJwWVd3dWJtRnRaUzUwZVhCbElEMDlQU0FuVTNWaVJYaHdjbVZ6YzJsdmJpYzdYRzRnSUNBZ2FX
WWdLR2x6UkhsdVlXMXBZeWtnZTF4dUlDQWdJQ0FnZEdocGN5NWhZMk5sY0hRb2NHRnlkR2xoYkM1
dVlXMWxLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQjBhR2x6TG5ObGRIVndSblZzYkUxMWMzUmhZMmhs
VUdGeVlXMXpLSEJoY25ScFlXd3NJSEJ5YjJkeVlXMHNJSFZ1WkdWbWFXNWxaQ3dnZEhKMVpTazdY
RzVjYmlBZ0lDQnNaWFFnYVc1a1pXNTBJRDBnY0dGeWRHbGhiQzVwYm1SbGJuUWdmSHdnSnljN1hH
NGdJQ0FnYVdZZ0tIUm9hWE11YjNCMGFXOXVjeTV3Y21WMlpXNTBTVzVrWlc1MElDWW1JR2x1WkdW
dWRDa2dlMXh1SUNBZ0lDQWdkR2hwY3k1dmNHTnZaR1VvSjJGd2NHVnVaRU52Ym5SbGJuUW5MQ0Jw
Ym1SbGJuUXBPMXh1SUNBZ0lDQWdhVzVrWlc1MElEMGdKeWM3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdk
R2hwY3k1dmNHTnZaR1VvSjJsdWRtOXJaVkJoY25ScFlXd25MQ0JwYzBSNWJtRnRhV01zSUhCaGNu
UnBZV3hPWVcxbExDQnBibVJsYm5RcE8xeHVJQ0FnSUhSb2FYTXViM0JqYjJSbEtDZGhjSEJsYm1R
bktUdGNiaUFnZlN4Y2JpQWdVR0Z5ZEdsaGJFSnNiMk5yVTNSaGRHVnRaVzUwT2lCbWRXNWpkR2x2
Ymlod1lYSjBhV0ZzUW14dlkyc3BJSHRjYmlBZ0lDQjBhR2x6TGxCaGNuUnBZV3hUZEdGMFpXMWxi
blFvY0dGeWRHbGhiRUpzYjJOcktUdGNiaUFnZlN4Y2JseHVJQ0JOZFhOMFlXTm9aVk4wWVhSbGJX
VnVkRG9nWm5WdVkzUnBiMjRvYlhWemRHRmphR1VwSUh0Y2JpQWdJQ0IwYUdsekxsTjFZa1Y0Y0hK
bGMzTnBiMjRvYlhWemRHRmphR1VwTzF4dVhHNGdJQ0FnYVdZZ0tHMTFjM1JoWTJobExtVnpZMkZ3
WldRZ0ppWWdJWFJvYVhNdWIzQjBhVzl1Y3k1dWIwVnpZMkZ3WlNrZ2UxeHVJQ0FnSUNBZ2RHaHBj
eTV2Y0dOdlpHVW9KMkZ3Y0dWdVpFVnpZMkZ3WldRbktUdGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlD
QWdJQ0FnZEdocGN5NXZjR052WkdVb0oyRndjR1Z1WkNjcE8xeHVJQ0FnSUgxY2JpQWdmU3hjYmlB
Z1JHVmpiM0poZEc5eUtHUmxZMjl5WVhSdmNpa2dlMXh1SUNBZ0lIUm9hWE11UkdWamIzSmhkRzl5
UW14dlkyc29aR1ZqYjNKaGRHOXlLVHRjYmlBZ2ZTeGNibHh1WEc0Z0lFTnZiblJsYm5SVGRHRjBa
VzFsYm5RNklHWjFibU4wYVc5dUtHTnZiblJsYm5RcElIdGNiaUFnSUNCcFppQW9ZMjl1ZEdWdWRD
NTJZV3gxWlNrZ2UxeHVJQ0FnSUNBZ2RHaHBjeTV2Y0dOdlpHVW9KMkZ3Y0dWdVpFTnZiblJsYm5R
bkxDQmpiMjUwWlc1MExuWmhiSFZsS1R0Y2JpQWdJQ0I5WEc0Z0lIMHNYRzVjYmlBZ1EyOXRiV1Z1
ZEZOMFlYUmxiV1Z1ZERvZ1puVnVZM1JwYjI0b0tTQjdmU3hjYmx4dUlDQlRkV0pGZUhCeVpYTnph
Vzl1T2lCbWRXNWpkR2x2YmloelpYaHdjaWtnZTF4dUlDQWdJSFJ5WVc1elptOXliVXhwZEdWeVlX
eFViMUJoZEdnb2MyVjRjSElwTzF4dUlDQWdJR3hsZENCMGVYQmxJRDBnZEdocGN5NWpiR0Z6YzJs
bWVWTmxlSEJ5S0hObGVIQnlLVHRjYmx4dUlDQWdJR2xtSUNoMGVYQmxJRDA5UFNBbmMybHRjR3hs
SnlrZ2UxeHVJQ0FnSUNBZ2RHaHBjeTV6YVcxd2JHVlRaWGh3Y2loelpYaHdjaWs3WEc0Z0lDQWdm
U0JsYkhObElHbG1JQ2gwZVhCbElEMDlQU0FuYUdWc2NHVnlKeWtnZTF4dUlDQWdJQ0FnZEdocGN5
NW9aV3h3WlhKVFpYaHdjaWh6Wlhod2NpazdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUhS
b2FYTXVZVzFpYVdkMWIzVnpVMlY0Y0hJb2MyVjRjSElwTzF4dUlDQWdJSDFjYmlBZ2ZTeGNiaUFn
WVcxaWFXZDFiM1Z6VTJWNGNISTZJR1oxYm1OMGFXOXVLSE5sZUhCeUxDQndjbTluY21GdExDQnBi
blpsY25ObEtTQjdYRzRnSUNBZ2JHVjBJSEJoZEdnZ1BTQnpaWGh3Y2k1d1lYUm9MRnh1SUNBZ0lD
QWdJQ0J1WVcxbElEMGdjR0YwYUM1d1lYSjBjMXN3WFN4Y2JpQWdJQ0FnSUNBZ2FYTkNiRzlqYXlB
OUlIQnliMmR5WVcwZ0lUMGdiblZzYkNCOGZDQnBiblpsY25ObElDRTlJRzUxYkd3N1hHNWNiaUFn
SUNCMGFHbHpMbTl3WTI5a1pTZ25aMlYwUTI5dWRHVjRkQ2NzSUhCaGRHZ3VaR1Z3ZEdncE8xeHVY
RzRnSUNBZ2RHaHBjeTV2Y0dOdlpHVW9KM0IxYzJoUWNtOW5jbUZ0Snl3Z2NISnZaM0poYlNrN1hH
NGdJQ0FnZEdocGN5NXZjR052WkdVb0ozQjFjMmhRY205bmNtRnRKeXdnYVc1MlpYSnpaU2s3WEc1
Y2JpQWdJQ0J3WVhSb0xuTjBjbWxqZENBOUlIUnlkV1U3WEc0Z0lDQWdkR2hwY3k1aFkyTmxjSFFv
Y0dGMGFDazdYRzVjYmlBZ0lDQjBhR2x6TG05d1kyOWtaU2duYVc1MmIydGxRVzFpYVdkMWIzVnpK
eXdnYm1GdFpTd2dhWE5DYkc5amF5azdYRzRnSUgwc1hHNWNiaUFnYzJsdGNHeGxVMlY0Y0hJNklH
WjFibU4wYVc5dUtITmxlSEJ5S1NCN1hHNGdJQ0FnYkdWMElIQmhkR2dnUFNCelpYaHdjaTV3WVhS
b08xeHVJQ0FnSUhCaGRHZ3VjM1J5YVdOMElEMGdkSEoxWlR0Y2JpQWdJQ0IwYUdsekxtRmpZMlZ3
ZENod1lYUm9LVHRjYmlBZ0lDQjBhR2x6TG05d1kyOWtaU2duY21WemIyeDJaVkJ2YzNOcFlteGxU
R0Z0WW1SaEp5azdYRzRnSUgwc1hHNWNiaUFnYUdWc2NHVnlVMlY0Y0hJNklHWjFibU4wYVc5dUtI
TmxlSEJ5TENCd2NtOW5jbUZ0TENCcGJuWmxjbk5sS1NCN1hHNGdJQ0FnYkdWMElIQmhjbUZ0Y3lB
OUlIUm9hWE11YzJWMGRYQkdkV3hzVFhWemRHRmphR1ZRWVhKaGJYTW9jMlY0Y0hJc0lIQnliMmR5
WVcwc0lHbHVkbVZ5YzJVcExGeHVJQ0FnSUNBZ0lDQndZWFJvSUQwZ2MyVjRjSEl1Y0dGMGFDeGNi
aUFnSUNBZ0lDQWdibUZ0WlNBOUlIQmhkR2d1Y0dGeWRITmJNRjA3WEc1Y2JpQWdJQ0JwWmlBb2RH
aHBjeTV2Y0hScGIyNXpMbXR1YjNkdVNHVnNjR1Z5YzF0dVlXMWxYU2tnZTF4dUlDQWdJQ0FnZEdo
cGN5NXZjR052WkdVb0oybHVkbTlyWlV0dWIzZHVTR1ZzY0dWeUp5d2djR0Z5WVcxekxteGxibWQw
YUN3Z2JtRnRaU2s3WEc0Z0lDQWdmU0JsYkhObElHbG1JQ2gwYUdsekxtOXdkR2x2Ym5NdWEyNXZk
MjVJWld4d1pYSnpUMjVzZVNrZ2UxeHVJQ0FnSUNBZ2RHaHliM2NnYm1WM0lFVjRZMlZ3ZEdsdmJp
Z25XVzkxSUhOd1pXTnBabWxsWkNCcmJtOTNia2hsYkhCbGNuTlBibXg1TENCaWRYUWdkWE5sWkNC
MGFHVWdkVzVyYm05M2JpQm9aV3h3WlhJZ0p5QXJJRzVoYldVc0lITmxlSEJ5S1R0Y2JpQWdJQ0I5
SUdWc2MyVWdlMXh1SUNBZ0lDQWdjR0YwYUM1emRISnBZM1FnUFNCMGNuVmxPMXh1SUNBZ0lDQWdj
R0YwYUM1bVlXeHplU0E5SUhSeWRXVTdYRzVjYmlBZ0lDQWdJSFJvYVhNdVlXTmpaWEIwS0hCaGRH
Z3BPMXh1SUNBZ0lDQWdkR2hwY3k1dmNHTnZaR1VvSjJsdWRtOXJaVWhsYkhCbGNpY3NJSEJoY21G
dGN5NXNaVzVuZEdnc0lIQmhkR2d1YjNKcFoybHVZV3dzSUVGVFZDNW9aV3h3WlhKekxuTnBiWEJz
WlVsa0tIQmhkR2dwS1R0Y2JpQWdJQ0I5WEc0Z0lIMHNYRzVjYmlBZ1VHRjBhRVY0Y0hKbGMzTnBi
MjQ2SUdaMWJtTjBhVzl1S0hCaGRHZ3BJSHRjYmlBZ0lDQjBhR2x6TG1Ga1pFUmxjSFJvS0hCaGRH
Z3VaR1Z3ZEdncE8xeHVJQ0FnSUhSb2FYTXViM0JqYjJSbEtDZG5aWFJEYjI1MFpYaDBKeXdnY0dG
MGFDNWtaWEIwYUNrN1hHNWNiaUFnSUNCc1pYUWdibUZ0WlNBOUlIQmhkR2d1Y0dGeWRITmJNRjBz
WEc0Z0lDQWdJQ0FnSUhOamIzQmxaQ0E5SUVGVFZDNW9aV3h3WlhKekxuTmpiM0JsWkVsa0tIQmhk
R2dwTEZ4dUlDQWdJQ0FnSUNCaWJHOWphMUJoY21GdFNXUWdQU0FoY0dGMGFDNWtaWEIwYUNBbUpp
QWhjMk52Y0dWa0lDWW1JSFJvYVhNdVlteHZZMnRRWVhKaGJVbHVaR1Y0S0c1aGJXVXBPMXh1WEc0
Z0lDQWdhV1lnS0dKc2IyTnJVR0Z5WVcxSlpDa2dlMXh1SUNBZ0lDQWdkR2hwY3k1dmNHTnZaR1Vv
SjJ4dmIydDFjRUpzYjJOclVHRnlZVzBuTENCaWJHOWphMUJoY21GdFNXUXNJSEJoZEdndWNHRnlk
SE1wTzF4dUlDQWdJSDBnWld4elpTQnBaaUFvSVc1aGJXVXBJSHRjYmlBZ0lDQWdJQzh2SUVOdmJu
UmxlSFFnY21WbVpYSmxibU5sTENCcExtVXVJR0I3ZTJadmJ5QXVmWDFnSUc5eUlHQjdlMlp2YnlB
dUxuMTlZRnh1SUNBZ0lDQWdkR2hwY3k1dmNHTnZaR1VvSjNCMWMyaERiMjUwWlhoMEp5azdYRzRn
SUNBZ2ZTQmxiSE5sSUdsbUlDaHdZWFJvTG1SaGRHRXBJSHRjYmlBZ0lDQWdJSFJvYVhNdWIzQjBh
Vzl1Y3k1a1lYUmhJRDBnZEhKMVpUdGNiaUFnSUNBZ0lIUm9hWE11YjNCamIyUmxLQ2RzYjI5cmRY
QkVZWFJoSnl3Z2NHRjBhQzVrWlhCMGFDd2djR0YwYUM1d1lYSjBjeXdnY0dGMGFDNXpkSEpwWTNR
cE8xeHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0IwYUdsekxtOXdZMjlrWlNnbmJHOXZhM1Z3
VDI1RGIyNTBaWGgwSnl3Z2NHRjBhQzV3WVhKMGN5d2djR0YwYUM1bVlXeHplU3dnY0dGMGFDNXpk
SEpwWTNRc0lITmpiM0JsWkNrN1hHNGdJQ0FnZlZ4dUlDQjlMRnh1WEc0Z0lGTjBjbWx1WjB4cGRH
VnlZV3c2SUdaMWJtTjBhVzl1S0hOMGNtbHVaeWtnZTF4dUlDQWdJSFJvYVhNdWIzQmpiMlJsS0Nk
d2RYTm9VM1J5YVc1bkp5d2djM1J5YVc1bkxuWmhiSFZsS1R0Y2JpQWdmU3hjYmx4dUlDQk9kVzFp
WlhKTWFYUmxjbUZzT2lCbWRXNWpkR2x2YmlodWRXMWlaWElwSUh0Y2JpQWdJQ0IwYUdsekxtOXdZ
MjlrWlNnbmNIVnphRXhwZEdWeVlXd25MQ0J1ZFcxaVpYSXVkbUZzZFdVcE8xeHVJQ0I5TEZ4dVhH
NGdJRUp2YjJ4bFlXNU1hWFJsY21Gc09pQm1kVzVqZEdsdmJpaGliMjlzS1NCN1hHNGdJQ0FnZEdo
cGN5NXZjR052WkdVb0ozQjFjMmhNYVhSbGNtRnNKeXdnWW05dmJDNTJZV3gxWlNrN1hHNGdJSDBz
WEc1Y2JpQWdWVzVrWldacGJtVmtUR2wwWlhKaGJEb2dablZ1WTNScGIyNG9LU0I3WEc0Z0lDQWdk
R2hwY3k1dmNHTnZaR1VvSjNCMWMyaE1hWFJsY21Gc0p5d2dKM1Z1WkdWbWFXNWxaQ2NwTzF4dUlD
QjlMRnh1WEc0Z0lFNTFiR3hNYVhSbGNtRnNPaUJtZFc1amRHbHZiaWdwSUh0Y2JpQWdJQ0IwYUds
ekxtOXdZMjlrWlNnbmNIVnphRXhwZEdWeVlXd25MQ0FuYm5Wc2JDY3BPMXh1SUNCOUxGeHVYRzRn
SUVoaGMyZzZJR1oxYm1OMGFXOXVLR2hoYzJncElIdGNiaUFnSUNCc1pYUWdjR0ZwY25NZ1BTQm9Z
WE5vTG5CaGFYSnpMRnh1SUNBZ0lDQWdJQ0JwSUQwZ01DeGNiaUFnSUNBZ0lDQWdiQ0E5SUhCaGFY
SnpMbXhsYm1kMGFEdGNibHh1SUNBZ0lIUm9hWE11YjNCamIyUmxLQ2R3ZFhOb1NHRnphQ2NwTzF4
dVhHNGdJQ0FnWm05eUlDZzdJR2tnUENCc095QnBLeXNwSUh0Y2JpQWdJQ0FnSUhSb2FYTXVjSFZ6
YUZCaGNtRnRLSEJoYVhKelcybGRMblpoYkhWbEtUdGNiaUFnSUNCOVhHNGdJQ0FnZDJocGJHVWdL
R2t0TFNrZ2UxeHVJQ0FnSUNBZ2RHaHBjeTV2Y0dOdlpHVW9KMkZ6YzJsbmJsUnZTR0Z6YUNjc0lI
QmhhWEp6VzJsZExtdGxlU2s3WEc0Z0lDQWdmVnh1SUNBZ0lIUm9hWE11YjNCamIyUmxLQ2R3YjNC
SVlYTm9KeWs3WEc0Z0lIMHNYRzVjYmlBZ0x5OGdTRVZNVUVWU1UxeHVJQ0J2Y0dOdlpHVTZJR1ox
Ym1OMGFXOXVLRzVoYldVcElIdGNiaUFnSUNCMGFHbHpMbTl3WTI5a1pYTXVjSFZ6YUNoN0lHOXdZ
MjlrWlRvZ2JtRnRaU3dnWVhKbmN6b2djMnhwWTJVdVkyRnNiQ2hoY21kMWJXVnVkSE1zSURFcExD
QnNiMk02SUhSb2FYTXVjMjkxY21ObFRtOWtaVnN3WFM1c2IyTWdmU2s3WEc0Z0lIMHNYRzVjYmlB
Z1lXUmtSR1Z3ZEdnNklHWjFibU4wYVc5dUtHUmxjSFJvS1NCN1hHNGdJQ0FnYVdZZ0tDRmtaWEIw
YUNrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1TzF4dUlDQWdJSDFjYmx4dUlDQWdJSFJvYVhNdWRYTmxS
R1Z3ZEdoeklEMGdkSEoxWlR0Y2JpQWdmU3hjYmx4dUlDQmpiR0Z6YzJsbWVWTmxlSEJ5T2lCbWRX
NWpkR2x2YmloelpYaHdjaWtnZTF4dUlDQWdJR3hsZENCcGMxTnBiWEJzWlNBOUlFRlRWQzVvWld4
d1pYSnpMbk5wYlhCc1pVbGtLSE5sZUhCeUxuQmhkR2dwTzF4dVhHNGdJQ0FnYkdWMElHbHpRbXh2
WTJ0UVlYSmhiU0E5SUdselUybHRjR3hsSUNZbUlDRWhkR2hwY3k1aWJHOWphMUJoY21GdFNXNWta
WGdvYzJWNGNISXVjR0YwYUM1d1lYSjBjMXN3WFNrN1hHNWNiaUFnSUNBdkx5QmhJRzExYzNSaFky
aGxJR2x6SUdGdUlHVnNhV2RwWW14bElHaGxiSEJsY2lCcFpqcGNiaUFnSUNBdkx5QXFJR2wwY3lC
cFpDQnBjeUJ6YVcxd2JHVWdLR0VnYzJsdVoyeGxJSEJoY25Rc0lHNXZkQ0JnZEdocGMyQWdiM0ln
WUM0dVlDbGNiaUFnSUNCc1pYUWdhWE5JWld4d1pYSWdQU0FoYVhOQ2JHOWphMUJoY21GdElDWW1J
RUZUVkM1b1pXeHdaWEp6TG1obGJIQmxja1Y0Y0hKbGMzTnBiMjRvYzJWNGNISXBPMXh1WEc0Z0lD
QWdMeThnYVdZZ1lTQnRkWE4wWVdOb1pTQnBjeUJoYmlCbGJHbG5hV0pzWlNCb1pXeHdaWElnWW5W
MElHNXZkQ0JoSUdSbFptbHVhWFJsWEc0Z0lDQWdMeThnYUdWc2NHVnlMQ0JwZENCcGN5QmhiV0pw
WjNWdmRYTXNJR0Z1WkNCM2FXeHNJR0psSUhKbGMyOXNkbVZrSUdsdUlHRWdiR0YwWlhKY2JpQWdJ
Q0F2THlCd1lYTnpJRzl5SUdGMElISjFiblJwYldVdVhHNGdJQ0FnYkdWMElHbHpSV3hwWjJsaWJH
VWdQU0FoYVhOQ2JHOWphMUJoY21GdElDWW1JQ2hwYzBobGJIQmxjaUI4ZkNCcGMxTnBiWEJzWlNr
N1hHNWNiaUFnSUNBdkx5QnBaaUJoYldKcFozVnZkWE1zSUhkbElHTmhiaUJ3YjNOemFXSnNlU0J5
WlhOdmJIWmxJSFJvWlNCaGJXSnBaM1ZwZEhrZ2JtOTNYRzRnSUNBZ0x5OGdRVzRnWld4cFoybGli
R1VnYUdWc2NHVnlJR2x6SUc5dVpTQjBhR0YwSUdSdlpYTWdibTkwSUdoaGRtVWdZU0JqYjIxd2JH
VjRJSEJoZEdnc0lHa3VaUzRnWUhSb2FYTXVabTl2WUN3Z1lDNHVMMlp2YjJBZ1pYUmpMbHh1SUNB
Z0lHbG1JQ2hwYzBWc2FXZHBZbXhsSUNZbUlDRnBjMGhsYkhCbGNpa2dlMXh1SUNBZ0lDQWdiR1Yw
SUc1aGJXVWdQU0J6Wlhod2NpNXdZWFJvTG5CaGNuUnpXekJkTEZ4dUlDQWdJQ0FnSUNBZ0lHOXdk
R2x2Ym5NZ1BTQjBhR2x6TG05d2RHbHZibk03WEc1Y2JpQWdJQ0FnSUdsbUlDaHZjSFJwYjI1ekxt
dHViM2R1U0dWc2NHVnljMXR1WVcxbFhTa2dlMXh1SUNBZ0lDQWdJQ0JwYzBobGJIQmxjaUE5SUhS
eWRXVTdYRzRnSUNBZ0lDQjlJR1ZzYzJVZ2FXWWdLRzl3ZEdsdmJuTXVhMjV2ZDI1SVpXeHdaWEp6
VDI1c2VTa2dlMXh1SUNBZ0lDQWdJQ0JwYzBWc2FXZHBZbXhsSUQwZ1ptRnNjMlU3WEc0Z0lDQWdJ
Q0I5WEc0Z0lDQWdmVnh1WEc0Z0lDQWdhV1lnS0dselNHVnNjR1Z5S1NCN1hHNGdJQ0FnSUNCeVpY
UjFjbTRnSjJobGJIQmxjaWM3WEc0Z0lDQWdmU0JsYkhObElHbG1JQ2hwYzBWc2FXZHBZbXhsS1NC
N1hHNGdJQ0FnSUNCeVpYUjFjbTRnSjJGdFltbG5kVzkxY3ljN1hHNGdJQ0FnZlNCbGJITmxJSHRj
YmlBZ0lDQWdJSEpsZEhWeWJpQW5jMmx0Y0d4bEp6dGNiaUFnSUNCOVhHNGdJSDBzWEc1Y2JpQWdj
SFZ6YUZCaGNtRnRjem9nWm5WdVkzUnBiMjRvY0dGeVlXMXpLU0I3WEc0Z0lDQWdabTl5SUNoc1pY
UWdhU0E5SURBc0lHd2dQU0J3WVhKaGJYTXViR1Z1WjNSb095QnBJRHdnYkRzZ2FTc3JLU0I3WEc0
Z0lDQWdJQ0IwYUdsekxuQjFjMmhRWVhKaGJTaHdZWEpoYlhOYmFWMHBPMXh1SUNBZ0lIMWNiaUFn
ZlN4Y2JseHVJQ0J3ZFhOb1VHRnlZVzA2SUdaMWJtTjBhVzl1S0haaGJDa2dlMXh1SUNBZ0lHeGxk
Q0IyWVd4MVpTQTlJSFpoYkM1MllXeDFaU0FoUFNCdWRXeHNJRDhnZG1Gc0xuWmhiSFZsSURvZ2Rt
RnNMbTl5YVdkcGJtRnNJSHg4SUNjbk8xeHVYRzRnSUNBZ2FXWWdLSFJvYVhNdWMzUnlhVzVuVUdG
eVlXMXpLU0I3WEc0Z0lDQWdJQ0JwWmlBb2RtRnNkV1V1Y21Wd2JHRmpaU2tnZTF4dUlDQWdJQ0Fn
SUNCMllXeDFaU0E5SUhaaGJIVmxYRzRnSUNBZ0lDQWdJQ0FnSUNBdWNtVndiR0ZqWlNndlhpaGNY
QzQvWEZ3dVhGd3ZLU292Wnl3Z0p5Y3BYRzRnSUNBZ0lDQWdJQ0FnSUNBdWNtVndiR0ZqWlNndlhG
d3ZMMmNzSUNjdUp5azdYRzRnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJR2xtSUNoMllXd3VaR1Z3ZEdn
cElIdGNiaUFnSUNBZ0lDQWdkR2hwY3k1aFpHUkVaWEIwYUNoMllXd3VaR1Z3ZEdncE8xeHVJQ0Fn
SUNBZ2ZWeHVJQ0FnSUNBZ2RHaHBjeTV2Y0dOdlpHVW9KMmRsZEVOdmJuUmxlSFFuTENCMllXd3Va
R1Z3ZEdnZ2ZId2dNQ2s3WEc0Z0lDQWdJQ0IwYUdsekxtOXdZMjlrWlNnbmNIVnphRk4wY21sdVox
QmhjbUZ0Snl3Z2RtRnNkV1VzSUhaaGJDNTBlWEJsS1R0Y2JseHVJQ0FnSUNBZ2FXWWdLSFpoYkM1
MGVYQmxJRDA5UFNBblUzVmlSWGh3Y21WemMybHZiaWNwSUh0Y2JpQWdJQ0FnSUNBZ0x5OGdVM1Zp
Ulhod2NtVnpjMmx2Ym5NZ1oyVjBJR1YyWVd4MVlYUmxaQ0JoYm1RZ2NHRnpjMlZrSUdsdVhHNGdJ
Q0FnSUNBZ0lDOHZJR2x1SUhOMGNtbHVaeUJ3WVhKaGJYTWdiVzlrWlM1Y2JpQWdJQ0FnSUNBZ2RH
aHBjeTVoWTJObGNIUW9kbUZzS1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNB
Z0lDQWdhV1lnS0hSb2FYTXVkSEpoWTJ0SlpITXBJSHRjYmlBZ0lDQWdJQ0FnYkdWMElHSnNiMk5y
VUdGeVlXMUpibVJsZUR0Y2JpQWdJQ0FnSUNBZ2FXWWdLSFpoYkM1d1lYSjBjeUFtSmlBaFFWTlVM
bWhsYkhCbGNuTXVjMk52Y0dWa1NXUW9kbUZzS1NBbUppQWhkbUZzTG1SbGNIUm9LU0I3WEc0Z0lD
QWdJQ0FnSUNBZ0lHSnNiMk5yVUdGeVlXMUpibVJsZUNBOUlIUm9hWE11WW14dlkydFFZWEpoYlVs
dVpHVjRLSFpoYkM1d1lYSjBjMXN3WFNrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdhV1ln
S0dKc2IyTnJVR0Z5WVcxSmJtUmxlQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lHeGxkQ0JpYkc5amExQmhj
bUZ0UTJocGJHUWdQU0IyWVd3dWNHRnlkSE11YzJ4cFkyVW9NU2t1YW05cGJpZ25MaWNwTzF4dUlD
QWdJQ0FnSUNBZ0lIUm9hWE11YjNCamIyUmxLQ2R3ZFhOb1NXUW5MQ0FuUW14dlkydFFZWEpoYlNj
c0lHSnNiMk5yVUdGeVlXMUpibVJsZUN3Z1lteHZZMnRRWVhKaGJVTm9hV3hrS1R0Y2JpQWdJQ0Fn
SUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ0lDQjJZV3gxWlNBOUlIWmhiQzV2Y21sbmFXNWhi
Q0I4ZkNCMllXeDFaVHRjYmlBZ0lDQWdJQ0FnSUNCcFppQW9kbUZzZFdVdWNtVndiR0ZqWlNrZ2Ux
eHVJQ0FnSUNBZ0lDQWdJQ0FnZG1Gc2RXVWdQU0IyWVd4MVpWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNB
Z0lDNXlaWEJzWVdObEtDOWVkR2hwY3lnL09seGNMbndrS1M4c0lDY25LVnh1SUNBZ0lDQWdJQ0Fn
SUNBZ0lDQWdJQzV5WlhCc1lXTmxLQzllWEZ3dVhGd3ZMeXdnSnljcFhHNGdJQ0FnSUNBZ0lDQWdJ
Q0FnSUNBZ0xuSmxjR3hoWTJVb0wxNWNYQzRrTHl3Z0p5Y3BPMXh1SUNBZ0lDQWdJQ0FnSUgxY2Js
eHVJQ0FnSUNBZ0lDQWdJSFJvYVhNdWIzQmpiMlJsS0Nkd2RYTm9TV1FuTENCMllXd3VkSGx3WlN3
Z2RtRnNkV1VwTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNCMGFHbHpMbUZq
WTJWd2RDaDJZV3dwTzF4dUlDQWdJSDFjYmlBZ2ZTeGNibHh1SUNCelpYUjFjRVoxYkd4TmRYTjBZ
V05vWlZCaGNtRnRjem9nWm5WdVkzUnBiMjRvYzJWNGNISXNJSEJ5YjJkeVlXMHNJR2x1ZG1WeWMy
VXNJRzl0YVhSRmJYQjBlU2tnZTF4dUlDQWdJR3hsZENCd1lYSmhiWE1nUFNCelpYaHdjaTV3WVhK
aGJYTTdYRzRnSUNBZ2RHaHBjeTV3ZFhOb1VHRnlZVzF6S0hCaGNtRnRjeWs3WEc1Y2JpQWdJQ0Iw
YUdsekxtOXdZMjlrWlNnbmNIVnphRkJ5YjJkeVlXMG5MQ0J3Y205bmNtRnRLVHRjYmlBZ0lDQjBh
R2x6TG05d1kyOWtaU2duY0hWemFGQnliMmR5WVcwbkxDQnBiblpsY25ObEtUdGNibHh1SUNBZ0lH
bG1JQ2h6Wlhod2NpNW9ZWE5vS1NCN1hHNGdJQ0FnSUNCMGFHbHpMbUZqWTJWd2RDaHpaWGh3Y2k1
b1lYTm9LVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2RHaHBjeTV2Y0dOdlpHVW9KMlZ0
Y0hSNVNHRnphQ2NzSUc5dGFYUkZiWEIwZVNrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnY21WMGRYSnVJ
SEJoY21GdGN6dGNiaUFnZlN4Y2JseHVJQ0JpYkc5amExQmhjbUZ0U1c1a1pYZzZJR1oxYm1OMGFX
OXVLRzVoYldVcElIdGNiaUFnSUNCbWIzSWdLR3hsZENCa1pYQjBhQ0E5SURBc0lHeGxiaUE5SUhS
b2FYTXViM0IwYVc5dWN5NWliRzlqYTFCaGNtRnRjeTVzWlc1bmRHZzdJR1JsY0hSb0lEd2diR1Z1
T3lCa1pYQjBhQ3NyS1NCN1hHNGdJQ0FnSUNCc1pYUWdZbXh2WTJ0UVlYSmhiWE1nUFNCMGFHbHpM
bTl3ZEdsdmJuTXVZbXh2WTJ0UVlYSmhiWE5iWkdWd2RHaGRMRnh1SUNBZ0lDQWdJQ0FnSUhCaGNt
RnRJRDBnWW14dlkydFFZWEpoYlhNZ0ppWWdhVzVrWlhoUFppaGliRzlqYTFCaGNtRnRjeXdnYm1G
dFpTazdYRzRnSUNBZ0lDQnBaaUFvWW14dlkydFFZWEpoYlhNZ0ppWWdjR0Z5WVcwZ1BqMGdNQ2tn
ZTF4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnVzJSbGNIUm9MQ0J3WVhKaGJWMDdYRzRnSUNBZ0lDQjlY
RzRnSUNBZ2ZWeHVJQ0I5WEc1OU8xeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdjSEpsWTI5dGNH
bHNaU2hwYm5CMWRDd2diM0IwYVc5dWN5d2daVzUyS1NCN1hHNGdJR2xtSUNocGJuQjFkQ0E5UFNC
dWRXeHNJSHg4SUNoMGVYQmxiMllnYVc1d2RYUWdJVDA5SUNkemRISnBibWNuSUNZbUlHbHVjSFYw
TG5SNWNHVWdJVDA5SUNkUWNtOW5jbUZ0SnlrcElIdGNiaUFnSUNCMGFISnZkeUJ1WlhjZ1JYaGpa
WEIwYVc5dUtDZFpiM1VnYlhWemRDQndZWE56SUdFZ2MzUnlhVzVuSUc5eUlFaGhibVJzWldKaGNu
TWdRVk5VSUhSdklFaGhibVJzWldKaGNuTXVjSEpsWTI5dGNHbHNaUzRnV1c5MUlIQmhjM05sWkNB
bklDc2dhVzV3ZFhRcE8xeHVJQ0I5WEc1Y2JpQWdiM0IwYVc5dWN5QTlJRzl3ZEdsdmJuTWdmSHdn
ZTMwN1hHNGdJR2xtSUNnaEtDZGtZWFJoSnlCcGJpQnZjSFJwYjI1ektTa2dlMXh1SUNBZ0lHOXdk
R2x2Ym5NdVpHRjBZU0E5SUhSeWRXVTdYRzRnSUgxY2JpQWdhV1lnS0c5d2RHbHZibk11WTI5dGNH
RjBLU0I3WEc0Z0lDQWdiM0IwYVc5dWN5NTFjMlZFWlhCMGFITWdQU0IwY25WbE8xeHVJQ0I5WEc1
Y2JpQWdiR1YwSUdGemRDQTlJR1Z1ZGk1d1lYSnpaU2hwYm5CMWRDd2diM0IwYVc5dWN5a3NYRzRn
SUNBZ0lDQmxiblpwY205dWJXVnVkQ0E5SUc1bGR5Qmxibll1UTI5dGNHbHNaWElvS1M1amIyMXdh
V3hsS0dGemRDd2diM0IwYVc5dWN5azdYRzRnSUhKbGRIVnliaUJ1WlhjZ1pXNTJMa3BoZG1GVFkz
SnBjSFJEYjIxd2FXeGxjaWdwTG1OdmJYQnBiR1VvWlc1MmFYSnZibTFsYm5Rc0lHOXdkR2x2Ym5N
cE8xeHVmVnh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWTI5dGNHbHNaU2hwYm5CMWRDd2diM0Iw
YVc5dWN5QTlJSHQ5TENCbGJuWXBJSHRjYmlBZ2FXWWdLR2x1Y0hWMElEMDlJRzUxYkd3Z2ZId2dL
SFI1Y0dWdlppQnBibkIxZENBaFBUMGdKM04wY21sdVp5Y2dKaVlnYVc1d2RYUXVkSGx3WlNBaFBU
MGdKMUJ5YjJkeVlXMG5LU2tnZTF4dUlDQWdJSFJvY205M0lHNWxkeUJGZUdObGNIUnBiMjRvSjFs
dmRTQnRkWE4wSUhCaGMzTWdZU0J6ZEhKcGJtY2diM0lnU0dGdVpHeGxZbUZ5Y3lCQlUxUWdkRzhn
U0dGdVpHeGxZbUZ5Y3k1amIyMXdhV3hsTGlCWmIzVWdjR0Z6YzJWa0lDY2dLeUJwYm5CMWRDazdY
RzRnSUgxY2JseHVJQ0JwWmlBb0lTZ25aR0YwWVNjZ2FXNGdiM0IwYVc5dWN5a3BJSHRjYmlBZ0lD
QnZjSFJwYjI1ekxtUmhkR0VnUFNCMGNuVmxPMXh1SUNCOVhHNGdJR2xtSUNodmNIUnBiMjV6TG1O
dmJYQmhkQ2tnZTF4dUlDQWdJRzl3ZEdsdmJuTXVkWE5sUkdWd2RHaHpJRDBnZEhKMVpUdGNiaUFn
ZlZ4dVhHNGdJR3hsZENCamIyMXdhV3hsWkR0Y2JseHVJQ0JtZFc1amRHbHZiaUJqYjIxd2FXeGxT
VzV3ZFhRb0tTQjdYRzRnSUNBZ2JHVjBJR0Z6ZENBOUlHVnVkaTV3WVhKelpTaHBibkIxZEN3Z2Iz
QjBhVzl1Y3lrc1hHNGdJQ0FnSUNBZ0lHVnVkbWx5YjI1dFpXNTBJRDBnYm1WM0lHVnVkaTVEYjIx
d2FXeGxjaWdwTG1OdmJYQnBiR1VvWVhOMExDQnZjSFJwYjI1ektTeGNiaUFnSUNBZ0lDQWdkR1Z0
Y0d4aGRHVlRjR1ZqSUQwZ2JtVjNJR1Z1ZGk1S1lYWmhVMk55YVhCMFEyOXRjR2xzWlhJb0tTNWpi
MjF3YVd4bEtHVnVkbWx5YjI1dFpXNTBMQ0J2Y0hScGIyNXpMQ0IxYm1SbFptbHVaV1FzSUhSeWRX
VXBPMXh1SUNBZ0lISmxkSFZ5YmlCbGJuWXVkR1Z0Y0d4aGRHVW9kR1Z0Y0d4aGRHVlRjR1ZqS1R0
Y2JpQWdmVnh1WEc0Z0lDOHZJRlJsYlhCc1lYUmxJR2x6SUc5dWJIa2dZMjl0Y0dsc1pXUWdiMjRn
Wm1seWMzUWdkWE5sSUdGdVpDQmpZV05vWldRZ1lXWjBaWElnZEdoaGRDQndiMmx1ZEM1Y2JpQWda
blZ1WTNScGIyNGdjbVYwS0dOdmJuUmxlSFFzSUdWNFpXTlBjSFJwYjI1ektTQjdYRzRnSUNBZ2FX
WWdLQ0ZqYjIxd2FXeGxaQ2tnZTF4dUlDQWdJQ0FnWTI5dGNHbHNaV1FnUFNCamIyMXdhV3hsU1c1
d2RYUW9LVHRjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUdOdmJYQnBiR1ZrTG1OaGJHd29kR2hw
Y3l3Z1kyOXVkR1Y0ZEN3Z1pYaGxZMDl3ZEdsdmJuTXBPMXh1SUNCOVhHNGdJSEpsZEM1ZmMyVjBk
WEFnUFNCbWRXNWpkR2x2YmloelpYUjFjRTl3ZEdsdmJuTXBJSHRjYmlBZ0lDQnBaaUFvSVdOdmJY
QnBiR1ZrS1NCN1hHNGdJQ0FnSUNCamIyMXdhV3hsWkNBOUlHTnZiWEJwYkdWSmJuQjFkQ2dwTzF4
dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z1kyOXRjR2xzWldRdVgzTmxkSFZ3S0hObGRIVndUM0Iw
YVc5dWN5azdYRzRnSUgwN1hHNGdJSEpsZEM1ZlkyaHBiR1FnUFNCbWRXNWpkR2x2YmlocExDQmtZ
WFJoTENCaWJHOWphMUJoY21GdGN5d2daR1Z3ZEdoektTQjdYRzRnSUNBZ2FXWWdLQ0ZqYjIxd2FX
eGxaQ2tnZTF4dUlDQWdJQ0FnWTI5dGNHbHNaV1FnUFNCamIyMXdhV3hsU1c1d2RYUW9LVHRjYmlB
Z0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUdOdmJYQnBiR1ZrTGw5amFHbHNaQ2hwTENCa1lYUmhMQ0Jp
Ykc5amExQmhjbUZ0Y3l3Z1pHVndkR2h6S1R0Y2JpQWdmVHRjYmlBZ2NtVjBkWEp1SUhKbGREdGNi
bjFjYmx4dVpuVnVZM1JwYjI0Z1lYSm5SWEYxWVd4ektHRXNJR0lwSUh0Y2JpQWdhV1lnS0dFZ1BU
MDlJR0lwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkSEoxWlR0Y2JpQWdmVnh1WEc0Z0lHbG1JQ2hwYzBG
eWNtRjVLR0VwSUNZbUlHbHpRWEp5WVhrb1lpa2dKaVlnWVM1c1pXNW5kR2dnUFQwOUlHSXViR1Z1
WjNSb0tTQjdYRzRnSUNBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQmhMbXhsYm1kMGFEc2dh
U3NyS1NCN1hHNGdJQ0FnSUNCcFppQW9JV0Z5WjBWeGRXRnNjeWhoVzJsZExDQmlXMmxkS1NrZ2Ux
eHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1ptRnNjMlU3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNB
Z0lISmxkSFZ5YmlCMGNuVmxPMXh1SUNCOVhHNTlYRzVjYm1aMWJtTjBhVzl1SUhSeVlXNXpabTl5
YlV4cGRHVnlZV3hVYjFCaGRHZ29jMlY0Y0hJcElIdGNiaUFnYVdZZ0tDRnpaWGh3Y2k1d1lYUm9M
bkJoY25SektTQjdYRzRnSUNBZ2JHVjBJR3hwZEdWeVlXd2dQU0J6Wlhod2NpNXdZWFJvTzF4dUlD
QWdJQzh2SUVOaGMzUnBibWNnZEc4Z2MzUnlhVzVuSUdobGNtVWdkRzhnYldGclpTQm1ZV3h6WlNC
aGJtUWdNQ0JzYVhSbGNtRnNJSFpoYkhWbGN5QndiR0Y1SUc1cFkyVnNlU0IzYVhSb0lIUm9aU0J5
WlhOMFhHNGdJQ0FnTHk4Z2IyWWdkR2hsSUhONWMzUmxiUzVjYmlBZ0lDQnpaWGh3Y2k1d1lYUm9J
RDBnZTF4dUlDQWdJQ0FnZEhsd1pUb2dKMUJoZEdoRmVIQnlaWE56YVc5dUp5eGNiaUFnSUNBZ0lH
UmhkR0U2SUdaaGJITmxMRnh1SUNBZ0lDQWdaR1Z3ZEdnNklEQXNYRzRnSUNBZ0lDQndZWEowY3pv
Z1cyeHBkR1Z5WVd3dWIzSnBaMmx1WVd3Z0t5QW5KMTBzWEc0Z0lDQWdJQ0J2Y21sbmFXNWhiRG9n
YkdsMFpYSmhiQzV2Y21sbmFXNWhiQ0FySUNjbkxGeHVJQ0FnSUNBZ2JHOWpPaUJzYVhSbGNtRnNM
bXh2WTF4dUlDQWdJSDA3WEc0Z0lIMWNibjFjYmlKZGZRPT0KZGlmZiAtLWdpdCBhL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2FtZC9oYW5kbGViYXJzL2Nv
bXBpbGVyL2hlbHBlcnMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRs
ZWJhcnMvZGlzdC9hbWQvaGFuZGxlYmFycy9jb21waWxlci9oZWxwZXJzLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjYwYmMxMTlhNzkwNzBiMzVjMDcwMDVhZmQ5Y2VlNDc5NjhiYmVhNGIKLS0tIC9kZXYvbnVsbAor
KysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9hbWQv
aGFuZGxlYmFycy9jb21waWxlci9oZWxwZXJzLmpzCkBAIC0wLDAgKzEsMjMwIEBACitkZWZpbmUo
WydleHBvcnRzJywgJy4uL2V4Y2VwdGlvbiddLCBmdW5jdGlvbiAoZXhwb3J0cywgX2V4Y2VwdGlv
bikgeworICAndXNlIHN0cmljdCc7CisKKyAgZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKKyAg
ZXhwb3J0cy5Tb3VyY2VMb2NhdGlvbiA9IFNvdXJjZUxvY2F0aW9uOworICBleHBvcnRzLmlkID0g
aWQ7CisgIGV4cG9ydHMuc3RyaXBGbGFncyA9IHN0cmlwRmxhZ3M7CisgIGV4cG9ydHMuc3RyaXBD
b21tZW50ID0gc3RyaXBDb21tZW50OworICBleHBvcnRzLnByZXBhcmVQYXRoID0gcHJlcGFyZVBh
dGg7CisgIGV4cG9ydHMucHJlcGFyZU11c3RhY2hlID0gcHJlcGFyZU11c3RhY2hlOworICBleHBv
cnRzLnByZXBhcmVSYXdCbG9jayA9IHByZXBhcmVSYXdCbG9jazsKKyAgZXhwb3J0cy5wcmVwYXJl
QmxvY2sgPSBwcmVwYXJlQmxvY2s7CisgIGV4cG9ydHMucHJlcGFyZVByb2dyYW0gPSBwcmVwYXJl
UHJvZ3JhbTsKKyAgZXhwb3J0cy5wcmVwYXJlUGFydGlhbEJsb2NrID0gcHJlcGFyZVBhcnRpYWxC
bG9jazsKKyAgLy8gaXN0YW5idWwgaWdub3JlIG5leHQKKworICBmdW5jdGlvbiBfaW50ZXJvcFJl
cXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDog
eyAnZGVmYXVsdCc6IG9iaiB9OyB9CisKKyAgdmFyIF9FeGNlcHRpb24gPSBfaW50ZXJvcFJlcXVp
cmVEZWZhdWx0KF9leGNlcHRpb24pOworCisgIGZ1bmN0aW9uIHZhbGlkYXRlQ2xvc2Uob3Blbiwg
Y2xvc2UpIHsKKyAgICBjbG9zZSA9IGNsb3NlLnBhdGggPyBjbG9zZS5wYXRoLm9yaWdpbmFsIDog
Y2xvc2U7CisKKyAgICBpZiAob3Blbi5wYXRoLm9yaWdpbmFsICE9PSBjbG9zZSkgeworICAgICAg
dmFyIGVycm9yTm9kZSA9IHsgbG9jOiBvcGVuLnBhdGgubG9jIH07CisKKyAgICAgIHRocm93IG5l
dyBfRXhjZXB0aW9uWydkZWZhdWx0J10ob3Blbi5wYXRoLm9yaWdpbmFsICsgIiBkb2Vzbid0IG1h
dGNoICIgKyBjbG9zZSwgZXJyb3JOb2RlKTsKKyAgICB9CisgIH0KKworICBmdW5jdGlvbiBTb3Vy
Y2VMb2NhdGlvbihzb3VyY2UsIGxvY0luZm8pIHsKKyAgICB0aGlzLnNvdXJjZSA9IHNvdXJjZTsK
KyAgICB0aGlzLnN0YXJ0ID0geworICAgICAgbGluZTogbG9jSW5mby5maXJzdF9saW5lLAorICAg
ICAgY29sdW1uOiBsb2NJbmZvLmZpcnN0X2NvbHVtbgorICAgIH07CisgICAgdGhpcy5lbmQgPSB7
CisgICAgICBsaW5lOiBsb2NJbmZvLmxhc3RfbGluZSwKKyAgICAgIGNvbHVtbjogbG9jSW5mby5s
YXN0X2NvbHVtbgorICAgIH07CisgIH0KKworICBmdW5jdGlvbiBpZCh0b2tlbikgeworICAgIGlm
ICgvXlxbLipcXSQvLnRlc3QodG9rZW4pKSB7CisgICAgICByZXR1cm4gdG9rZW4uc3Vic3RyKDEs
IHRva2VuLmxlbmd0aCAtIDIpOworICAgIH0gZWxzZSB7CisgICAgICByZXR1cm4gdG9rZW47Cisg
ICAgfQorICB9CisKKyAgZnVuY3Rpb24gc3RyaXBGbGFncyhvcGVuLCBjbG9zZSkgeworICAgIHJl
dHVybiB7CisgICAgICBvcGVuOiBvcGVuLmNoYXJBdCgyKSA9PT0gJ34nLAorICAgICAgY2xvc2U6
IGNsb3NlLmNoYXJBdChjbG9zZS5sZW5ndGggLSAzKSA9PT0gJ34nCisgICAgfTsKKyAgfQorCisg
IGZ1bmN0aW9uIHN0cmlwQ29tbWVudChjb21tZW50KSB7CisgICAgcmV0dXJuIGNvbW1lbnQucmVw
bGFjZSgvXlx7XHt+P1whLT8tPy8sICcnKS5yZXBsYWNlKC8tPy0/fj9cfVx9JC8sICcnKTsKKyAg
fQorCisgIGZ1bmN0aW9uIHByZXBhcmVQYXRoKGRhdGEsIHBhcnRzLCBsb2MpIHsKKyAgICBsb2Mg
PSB0aGlzLmxvY0luZm8obG9jKTsKKworICAgIHZhciBvcmlnaW5hbCA9IGRhdGEgPyAnQCcgOiAn
JywKKyAgICAgICAgZGlnID0gW10sCisgICAgICAgIGRlcHRoID0gMCwKKyAgICAgICAgZGVwdGhT
dHJpbmcgPSAnJzsKKworICAgIGZvciAodmFyIGkgPSAwLCBsID0gcGFydHMubGVuZ3RoOyBpIDwg
bDsgaSsrKSB7CisgICAgICB2YXIgcGFydCA9IHBhcnRzW2ldLnBhcnQsCisKKyAgICAgIC8vIElm
IHdlIGhhdmUgW10gc3ludGF4IHRoZW4gd2UgZG8gbm90IHRyZWF0IHBhdGggcmVmZXJlbmNlcyBh
cyBvcGVyYXRvcnMsCisgICAgICAvLyBpLmUuIGZvby5bdGhpc10gcmVzb2x2ZXMgdG8gYXBwcm94
aW1hdGVseSBjb250ZXh0LmZvb1sndGhpcyddCisgICAgICBpc0xpdGVyYWwgPSBwYXJ0c1tpXS5v
cmlnaW5hbCAhPT0gcGFydDsKKyAgICAgIG9yaWdpbmFsICs9IChwYXJ0c1tpXS5zZXBhcmF0b3Ig
fHwgJycpICsgcGFydDsKKworICAgICAgaWYgKCFpc0xpdGVyYWwgJiYgKHBhcnQgPT09ICcuLicg
fHwgcGFydCA9PT0gJy4nIHx8IHBhcnQgPT09ICd0aGlzJykpIHsKKyAgICAgICAgaWYgKGRpZy5s
ZW5ndGggPiAwKSB7CisgICAgICAgICAgdGhyb3cgbmV3IF9FeGNlcHRpb25bJ2RlZmF1bHQnXSgn
SW52YWxpZCBwYXRoOiAnICsgb3JpZ2luYWwsIHsgbG9jOiBsb2MgfSk7CisgICAgICAgIH0gZWxz
ZSBpZiAocGFydCA9PT0gJy4uJykgeworICAgICAgICAgIGRlcHRoKys7CisgICAgICAgICAgZGVw
dGhTdHJpbmcgKz0gJy4uLyc7CisgICAgICAgIH0KKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGRp
Zy5wdXNoKHBhcnQpOworICAgICAgfQorICAgIH0KKworICAgIHJldHVybiB7CisgICAgICB0eXBl
OiAnUGF0aEV4cHJlc3Npb24nLAorICAgICAgZGF0YTogZGF0YSwKKyAgICAgIGRlcHRoOiBkZXB0
aCwKKyAgICAgIHBhcnRzOiBkaWcsCisgICAgICBvcmlnaW5hbDogb3JpZ2luYWwsCisgICAgICBs
b2M6IGxvYworICAgIH07CisgIH0KKworICBmdW5jdGlvbiBwcmVwYXJlTXVzdGFjaGUocGF0aCwg
cGFyYW1zLCBoYXNoLCBvcGVuLCBzdHJpcCwgbG9jSW5mbykgeworICAgIC8vIE11c3QgdXNlIGNo
YXJBdCB0byBzdXBwb3J0IElFIHByZS0xMAorICAgIHZhciBlc2NhcGVGbGFnID0gb3Blbi5jaGFy
QXQoMykgfHwgb3Blbi5jaGFyQXQoMiksCisgICAgICAgIGVzY2FwZWQgPSBlc2NhcGVGbGFnICE9
PSAneycgJiYgZXNjYXBlRmxhZyAhPT0gJyYnOworCisgICAgdmFyIGRlY29yYXRvciA9IC9cKi8u
dGVzdChvcGVuKTsKKyAgICByZXR1cm4geworICAgICAgdHlwZTogZGVjb3JhdG9yID8gJ0RlY29y
YXRvcicgOiAnTXVzdGFjaGVTdGF0ZW1lbnQnLAorICAgICAgcGF0aDogcGF0aCwKKyAgICAgIHBh
cmFtczogcGFyYW1zLAorICAgICAgaGFzaDogaGFzaCwKKyAgICAgIGVzY2FwZWQ6IGVzY2FwZWQs
CisgICAgICBzdHJpcDogc3RyaXAsCisgICAgICBsb2M6IHRoaXMubG9jSW5mbyhsb2NJbmZvKQor
ICAgIH07CisgIH0KKworICBmdW5jdGlvbiBwcmVwYXJlUmF3QmxvY2sob3BlblJhd0Jsb2NrLCBj
b250ZW50cywgY2xvc2UsIGxvY0luZm8pIHsKKyAgICB2YWxpZGF0ZUNsb3NlKG9wZW5SYXdCbG9j
aywgY2xvc2UpOworCisgICAgbG9jSW5mbyA9IHRoaXMubG9jSW5mbyhsb2NJbmZvKTsKKyAgICB2
YXIgcHJvZ3JhbSA9IHsKKyAgICAgIHR5cGU6ICdQcm9ncmFtJywKKyAgICAgIGJvZHk6IGNvbnRl
bnRzLAorICAgICAgc3RyaXA6IHt9LAorICAgICAgbG9jOiBsb2NJbmZvCisgICAgfTsKKworICAg
IHJldHVybiB7CisgICAgICB0eXBlOiAnQmxvY2tTdGF0ZW1lbnQnLAorICAgICAgcGF0aDogb3Bl
blJhd0Jsb2NrLnBhdGgsCisgICAgICBwYXJhbXM6IG9wZW5SYXdCbG9jay5wYXJhbXMsCisgICAg
ICBoYXNoOiBvcGVuUmF3QmxvY2suaGFzaCwKKyAgICAgIHByb2dyYW06IHByb2dyYW0sCisgICAg
ICBvcGVuU3RyaXA6IHt9LAorICAgICAgaW52ZXJzZVN0cmlwOiB7fSwKKyAgICAgIGNsb3NlU3Ry
aXA6IHt9LAorICAgICAgbG9jOiBsb2NJbmZvCisgICAgfTsKKyAgfQorCisgIGZ1bmN0aW9uIHBy
ZXBhcmVCbG9jayhvcGVuQmxvY2ssIHByb2dyYW0sIGludmVyc2VBbmRQcm9ncmFtLCBjbG9zZSwg
aW52ZXJ0ZWQsIGxvY0luZm8pIHsKKyAgICBpZiAoY2xvc2UgJiYgY2xvc2UucGF0aCkgeworICAg
ICAgdmFsaWRhdGVDbG9zZShvcGVuQmxvY2ssIGNsb3NlKTsKKyAgICB9CisKKyAgICB2YXIgZGVj
b3JhdG9yID0gL1wqLy50ZXN0KG9wZW5CbG9jay5vcGVuKTsKKworICAgIHByb2dyYW0uYmxvY2tQ
YXJhbXMgPSBvcGVuQmxvY2suYmxvY2tQYXJhbXM7CisKKyAgICB2YXIgaW52ZXJzZSA9IHVuZGVm
aW5lZCwKKyAgICAgICAgaW52ZXJzZVN0cmlwID0gdW5kZWZpbmVkOworCisgICAgaWYgKGludmVy
c2VBbmRQcm9ncmFtKSB7CisgICAgICBpZiAoZGVjb3JhdG9yKSB7CisgICAgICAgIHRocm93IG5l
dyBfRXhjZXB0aW9uWydkZWZhdWx0J10oJ1VuZXhwZWN0ZWQgaW52ZXJzZSBibG9jayBvbiBkZWNv
cmF0b3InLCBpbnZlcnNlQW5kUHJvZ3JhbSk7CisgICAgICB9CisKKyAgICAgIGlmIChpbnZlcnNl
QW5kUHJvZ3JhbS5jaGFpbikgeworICAgICAgICBpbnZlcnNlQW5kUHJvZ3JhbS5wcm9ncmFtLmJv
ZHlbMF0uY2xvc2VTdHJpcCA9IGNsb3NlLnN0cmlwOworICAgICAgfQorCisgICAgICBpbnZlcnNl
U3RyaXAgPSBpbnZlcnNlQW5kUHJvZ3JhbS5zdHJpcDsKKyAgICAgIGludmVyc2UgPSBpbnZlcnNl
QW5kUHJvZ3JhbS5wcm9ncmFtOworICAgIH0KKworICAgIGlmIChpbnZlcnRlZCkgeworICAgICAg
aW52ZXJ0ZWQgPSBpbnZlcnNlOworICAgICAgaW52ZXJzZSA9IHByb2dyYW07CisgICAgICBwcm9n
cmFtID0gaW52ZXJ0ZWQ7CisgICAgfQorCisgICAgcmV0dXJuIHsKKyAgICAgIHR5cGU6IGRlY29y
YXRvciA/ICdEZWNvcmF0b3JCbG9jaycgOiAnQmxvY2tTdGF0ZW1lbnQnLAorICAgICAgcGF0aDog
b3BlbkJsb2NrLnBhdGgsCisgICAgICBwYXJhbXM6IG9wZW5CbG9jay5wYXJhbXMsCisgICAgICBo
YXNoOiBvcGVuQmxvY2suaGFzaCwKKyAgICAgIHByb2dyYW06IHByb2dyYW0sCisgICAgICBpbnZl
cnNlOiBpbnZlcnNlLAorICAgICAgb3BlblN0cmlwOiBvcGVuQmxvY2suc3RyaXAsCisgICAgICBp
bnZlcnNlU3RyaXA6IGludmVyc2VTdHJpcCwKKyAgICAgIGNsb3NlU3RyaXA6IGNsb3NlICYmIGNs
b3NlLnN0cmlwLAorICAgICAgbG9jOiB0aGlzLmxvY0luZm8obG9jSW5mbykKKyAgICB9OworICB9
CisKKyAgZnVuY3Rpb24gcHJlcGFyZVByb2dyYW0oc3RhdGVtZW50cywgbG9jKSB7CisgICAgaWYg
KCFsb2MgJiYgc3RhdGVtZW50cy5sZW5ndGgpIHsKKyAgICAgIHZhciBmaXJzdExvYyA9IHN0YXRl
bWVudHNbMF0ubG9jLAorICAgICAgICAgIGxhc3RMb2MgPSBzdGF0ZW1lbnRzW3N0YXRlbWVudHMu
bGVuZ3RoIC0gMV0ubG9jOworCisgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqLworICAg
ICAgaWYgKGZpcnN0TG9jICYmIGxhc3RMb2MpIHsKKyAgICAgICAgbG9jID0geworICAgICAgICAg
IHNvdXJjZTogZmlyc3RMb2Muc291cmNlLAorICAgICAgICAgIHN0YXJ0OiB7CisgICAgICAgICAg
ICBsaW5lOiBmaXJzdExvYy5zdGFydC5saW5lLAorICAgICAgICAgICAgY29sdW1uOiBmaXJzdExv
Yy5zdGFydC5jb2x1bW4KKyAgICAgICAgICB9LAorICAgICAgICAgIGVuZDogeworICAgICAgICAg
ICAgbGluZTogbGFzdExvYy5lbmQubGluZSwKKyAgICAgICAgICAgIGNvbHVtbjogbGFzdExvYy5l
bmQuY29sdW1uCisgICAgICAgICAgfQorICAgICAgICB9OworICAgICAgfQorICAgIH0KKworICAg
IHJldHVybiB7CisgICAgICB0eXBlOiAnUHJvZ3JhbScsCisgICAgICBib2R5OiBzdGF0ZW1lbnRz
LAorICAgICAgc3RyaXA6IHt9LAorICAgICAgbG9jOiBsb2MKKyAgICB9OworICB9CisKKyAgZnVu
Y3Rpb24gcHJlcGFyZVBhcnRpYWxCbG9jayhvcGVuLCBwcm9ncmFtLCBjbG9zZSwgbG9jSW5mbykg
eworICAgIHZhbGlkYXRlQ2xvc2Uob3BlbiwgY2xvc2UpOworCisgICAgcmV0dXJuIHsKKyAgICAg
IHR5cGU6ICdQYXJ0aWFsQmxvY2tTdGF0ZW1lbnQnLAorICAgICAgbmFtZTogb3Blbi5wYXRoLAor
ICAgICAgcGFyYW1zOiBvcGVuLnBhcmFtcywKKyAgICAgIGhhc2g6IG9wZW4uaGFzaCwKKyAgICAg
IHByb2dyYW06IHByb2dyYW0sCisgICAgICBvcGVuU3RyaXA6IG9wZW4uc3RyaXAsCisgICAgICBj
bG9zZVN0cmlwOiBjbG9zZSAmJiBjbG9zZS5zdHJpcCwKKyAgICAgIGxvYzogdGhpcy5sb2NJbmZv
KGxvY0luZm8pCisgICAgfTsKKyAgfQorfSk7CisvLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFw
cGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSWk0
dUx5NHVMeTR1THk0dUwyeHBZaTlvWVc1a2JHVmlZWEp6TDJOdmJYQnBiR1Z5TDJobGJIQmxjbk11
YW5NaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWpzN096czdPenM3T3pzN096czdP
enM3T3pzN1FVRkZRU3hYUVVGVExHRkJRV0VzUTBGQlF5eEpRVUZKTEVWQlFVVXNTMEZCU3l4RlFV
RkZPMEZCUTJ4RExGTkJRVXNzUjBGQlJ5eExRVUZMTEVOQlFVTXNTVUZCU1N4SFFVRkhMRXRCUVVz
c1EwRkJReXhKUVVGSkxFTkJRVU1zVVVGQlVTeEhRVUZITEV0QlFVc3NRMEZCUXpzN1FVRkZha1Fz
VVVGQlNTeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRkZCUVZFc1MwRkJTeXhMUVVGTExFVkJR
VVU3UVVGRGFFTXNWVUZCU1N4VFFVRlRMRWRCUVVjc1JVRkJReXhIUVVGSExFVkJRVVVzU1VGQlNT
eERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRVZCUVVNc1EwRkJRenM3UVVGRmNrTXNXVUZCVFN3
d1FrRkJZeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEZGQlFWRXNSMEZCUnl4cFFrRkJhVUlz
UjBGQlJ5eExRVUZMTEVWQlFVVXNVMEZCVXl4RFFVRkRMRU5CUVVNN1MwRkRhRVk3UjBGRFJqczdR
VUZGVFN4WFFVRlRMR05CUVdNc1EwRkJReXhOUVVGTkxFVkJRVVVzVDBGQlR5eEZRVUZGTzBGQlF6
bERMRkZCUVVrc1EwRkJReXhOUVVGTkxFZEJRVWNzVFVGQlRTeERRVUZETzBGQlEzSkNMRkZCUVVr
c1EwRkJReXhMUVVGTExFZEJRVWM3UVVGRFdDeFZRVUZKTEVWQlFVVXNUMEZCVHl4RFFVRkRMRlZC
UVZVN1FVRkRlRUlzV1VGQlRTeEZRVUZGTEU5QlFVOHNRMEZCUXl4WlFVRlpPMHRCUXpkQ0xFTkJR
VU03UVVGRFJpeFJRVUZKTEVOQlFVTXNSMEZCUnl4SFFVRkhPMEZCUTFRc1ZVRkJTU3hGUVVGRkxF
OUJRVThzUTBGQlF5eFRRVUZUTzBGQlEzWkNMRmxCUVUwc1JVRkJSU3hQUVVGUExFTkJRVU1zVjBG
QlZ6dExRVU0xUWl4RFFVRkRPMGRCUTBnN08wRkJSVTBzVjBGQlV5eEZRVUZGTEVOQlFVTXNTMEZC
U3l4RlFVRkZPMEZCUTNoQ0xGRkJRVWtzVlVGQlZTeERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxM
RU5CUVVNc1JVRkJSVHRCUVVNeFFpeGhRVUZQTEV0QlFVc3NRMEZCUXl4TlFVRk5MRU5CUVVNc1Ew
RkJReXhGUVVGRkxFdEJRVXNzUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVN
N1MwRkRNVU1zVFVGQlRUdEJRVU5NTEdGQlFVOHNTMEZCU3l4RFFVRkRPMHRCUTJRN1IwRkRSanM3
UVVGRlRTeFhRVUZUTEZWQlFWVXNRMEZCUXl4SlFVRkpMRVZCUVVVc1MwRkJTeXhGUVVGRk8wRkJR
M1JETEZkQlFVODdRVUZEVEN4VlFVRkpMRVZCUVVVc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5
eERRVUZETEVOQlFVTXNTMEZCU3l4SFFVRkhPMEZCUXpWQ0xGZEJRVXNzUlVGQlJTeExRVUZMTEVO
QlFVTXNUVUZCVFN4RFFVRkRMRXRCUVVzc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZE
TEV0QlFVc3NSMEZCUnp0TFFVTTVReXhEUVVGRE8wZEJRMGc3TzBGQlJVMHNWMEZCVXl4WlFVRlpM
RU5CUVVNc1QwRkJUeXhGUVVGRk8wRkJRM0JETEZkQlFVOHNUMEZCVHl4RFFVRkRMRTlCUVU4c1Ew
RkJReXhsUVVGbExFVkJRVVVzUlVGQlJTeERRVUZETEVOQlF6VkNMRTlCUVU4c1EwRkJReXhoUVVG
aExFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTTdSMEZETTBNN08wRkJSVTBzVjBGQlV5eFhRVUZY
TEVOQlFVTXNTVUZCU1N4RlFVRkZMRXRCUVVzc1JVRkJSU3hIUVVGSExFVkJRVVU3UVVGRE5VTXNU
MEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFV
TTdPMEZCUlhoQ0xGRkJRVWtzVVVGQlVTeEhRVUZITEVsQlFVa3NSMEZCUnl4SFFVRkhMRWRCUVVj
c1JVRkJSVHRSUVVNeFFpeEhRVUZITEVkQlFVY3NSVUZCUlR0UlFVTlNMRXRCUVVzc1IwRkJSeXhE
UVVGRE8xRkJRMVFzVjBGQlZ5eEhRVUZITEVWQlFVVXNRMEZCUXpzN1FVRkZja0lzVTBGQlN5eEpR
VUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFdEJRVXNzUTBGQlF5
eE5RVUZOTEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVG
QlJUdEJRVU0xUXl4VlFVRkpMRWxCUVVrc1IwRkJSeXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZE
TEVOQlFVTXNTVUZCU1RzN096dEJRVWR3UWl4bFFVRlRMRWRCUVVjc1MwRkJTeXhEUVVGRExFTkJR
VU1zUTBGQlF5eERRVUZETEZGQlFWRXNTMEZCU3l4SlFVRkpMRU5CUVVNN1FVRkRNME1zWTBGQlVT
eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExGTkJRVk1zU1VG
QlNTeEZRVUZGTEVOQlFVRXNSMEZCU1N4SlFVRkpMRU5CUVVNN08wRkJSVGxETEZWQlFVa3NRMEZC
UXl4VFFVRlRMRXRCUVVzc1NVRkJTU3hMUVVGTExFbEJRVWtzU1VGQlNTeEpRVUZKTEV0QlFVc3NS
MEZCUnl4SlFVRkpMRWxCUVVrc1MwRkJTeXhOUVVGTkxFTkJRVUVzUVVGQlF5eEZRVUZGTzBGQlEz
QkZMRmxCUVVrc1IwRkJSeXhEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVWQlFVVTdRVUZEYkVJ
c1owSkJRVTBzTUVKQlFXTXNaMEpCUVdkQ0xFZEJRVWNzVVVGQlVTeEZRVUZGTEVWQlFVTXNSMEZC
Unl4RlFVRklMRWRCUVVjc1JVRkJReXhEUVVGRExFTkJRVU03VTBGRGVrUXNUVUZCVFN4SlFVRkpM
RWxCUVVrc1MwRkJTeXhKUVVGSkxFVkJRVVU3UVVGRGVFSXNaVUZCU3l4RlFVRkZMRU5CUVVNN1FV
RkRVaXh4UWtGQlZ5eEpRVUZKTEV0QlFVc3NRMEZCUXp0VFFVTjBRanRQUVVOR0xFMUJRVTA3UVVG
RFRDeFhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8wOUJRMmhD
TzB0QlEwWTdPMEZCUlVRc1YwRkJUenRCUVVOTUxGVkJRVWtzUlVGQlJTeG5Ra0ZCWjBJN1FVRkRk
RUlzVlVGQlNTeEZRVUZLTEVsQlFVazdRVUZEU2l4WFFVRkxMRVZCUVV3c1MwRkJTenRCUVVOTUxG
ZEJRVXNzUlVGQlJTeEhRVUZITzBGQlExWXNZMEZCVVN4RlFVRlNMRkZCUVZFN1FVRkRVaXhUUVVG
SExFVkJRVWdzUjBGQlJ6dExRVU5LTEVOQlFVTTdSMEZEU0RzN1FVRkZUU3hYUVVGVExHVkJRV1Vz
UTBGQlF5eEpRVUZKTEVWQlFVVXNUVUZCVFN4RlFVRkZMRWxCUVVrc1JVRkJSU3hKUVVGSkxFVkJR
VVVzUzBGQlN5eEZRVUZGTEU5QlFVOHNSVUZCUlRzN1FVRkZlRVVzVVVGQlNTeFZRVUZWTEVkQlFV
Y3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeEpRVUZKTEVO
QlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVNM1F5eFBRVUZQTEVkQlFVY3NWVUZC
VlN4TFFVRkxMRWRCUVVjc1NVRkJTU3hWUVVGVkxFdEJRVXNzUjBGQlJ5eERRVUZET3p0QlFVVjJS
Q3hSUVVGSkxGTkJRVk1zUjBGQlNTeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1Ew
RkJReXhCUVVGRExFTkJRVU03UVVGRGJFTXNWMEZCVHp0QlFVTk1MRlZCUVVrc1JVRkJSU3hUUVVG
VExFZEJRVWNzVjBGQlZ5eEhRVUZITEcxQ1FVRnRRanRCUVVOdVJDeFZRVUZKTEVWQlFVb3NTVUZC
U1R0QlFVTktMRmxCUVUwc1JVRkJUaXhOUVVGTk8wRkJRMDRzVlVGQlNTeEZRVUZLTEVsQlFVazdR
VUZEU2l4aFFVRlBMRVZCUVZBc1QwRkJUenRCUVVOUUxGZEJRVXNzUlVGQlRDeExRVUZMTzBGQlEw
d3NVMEZCUnl4RlFVRkZMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zVDBGQlR5eERRVUZETzB0
QlF6TkNMRU5CUVVNN1IwRkRTRHM3UVVGRlRTeFhRVUZUTEdWQlFXVXNRMEZCUXl4WlFVRlpMRVZC
UVVVc1VVRkJVU3hGUVVGRkxFdEJRVXNzUlVGQlJTeFBRVUZQTEVWQlFVVTdRVUZEZEVVc2FVSkJR
V0VzUTBGQlF5eFpRVUZaTEVWQlFVVXNTMEZCU3l4RFFVRkRMRU5CUVVNN08wRkJSVzVETEZkQlFV
OHNSMEZCUnl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzBG
QlEyaERMRkZCUVVrc1QwRkJUeXhIUVVGSE8wRkJRMW9zVlVGQlNTeEZRVUZGTEZOQlFWTTdRVUZE
Wml4VlFVRkpMRVZCUVVVc1VVRkJVVHRCUVVOa0xGZEJRVXNzUlVGQlJTeEZRVUZGTzBGQlExUXNV
MEZCUnl4RlFVRkZMRTlCUVU4N1MwRkRZaXhEUVVGRE96dEJRVVZHTEZkQlFVODdRVUZEVEN4VlFV
RkpMRVZCUVVVc1owSkJRV2RDTzBGQlEzUkNMRlZCUVVrc1JVRkJSU3haUVVGWkxFTkJRVU1zU1VG
QlNUdEJRVU4yUWl4WlFVRk5MRVZCUVVVc1dVRkJXU3hEUVVGRExFMUJRVTA3UVVGRE0wSXNWVUZC
U1N4RlFVRkZMRmxCUVZrc1EwRkJReXhKUVVGSk8wRkJRM1pDTEdGQlFVOHNSVUZCVUN4UFFVRlBP
MEZCUTFBc1pVRkJVeXhGUVVGRkxFVkJRVVU3UVVGRFlpeHJRa0ZCV1N4RlFVRkZMRVZCUVVVN1FV
RkRhRUlzWjBKQlFWVXNSVUZCUlN4RlFVRkZPMEZCUTJRc1UwRkJSeXhGUVVGRkxFOUJRVTg3UzBG
RFlpeERRVUZETzBkQlEwZzdPMEZCUlUwc1YwRkJVeXhaUVVGWkxFTkJRVU1zVTBGQlV5eEZRVUZG
TEU5QlFVOHNSVUZCUlN4cFFrRkJhVUlzUlVGQlJTeExRVUZMTEVWQlFVVXNVVUZCVVN4RlFVRkZM
RTlCUVU4c1JVRkJSVHRCUVVNMVJpeFJRVUZKTEV0QlFVc3NTVUZCU1N4TFFVRkxMRU5CUVVNc1NV
RkJTU3hGUVVGRk8wRkJRM1pDTEcxQ1FVRmhMRU5CUVVNc1UwRkJVeXhGUVVGRkxFdEJRVXNzUTBG
QlF5eERRVUZETzB0QlEycERPenRCUVVWRUxGRkJRVWtzVTBGQlV5eEhRVUZKTEVsQlFVa3NRMEZC
UXl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFbEJRVWtzUTBGQlF5eEJRVUZETEVOQlFVTTdP
MEZCUlRWRExGZEJRVThzUTBGQlF5eFhRVUZYTEVkQlFVY3NVMEZCVXl4RFFVRkRMRmRCUVZjc1Ew
RkJRenM3UVVGRk5VTXNVVUZCU1N4UFFVRlBMRmxCUVVFN1VVRkRVQ3haUVVGWkxGbEJRVUVzUTBG
QlF6czdRVUZGYWtJc1VVRkJTU3hwUWtGQmFVSXNSVUZCUlR0QlFVTnlRaXhWUVVGSkxGTkJRVk1z
UlVGQlJUdEJRVU5pTEdOQlFVMHNNRUpCUVdNc2RVTkJRWFZETEVWQlFVVXNhVUpCUVdsQ0xFTkJR
VU1zUTBGQlF6dFBRVU5xUmpzN1FVRkZSQ3hWUVVGSkxHbENRVUZwUWl4RFFVRkRMRXRCUVVzc1JV
RkJSVHRCUVVNelFpeDVRa0ZCYVVJc1EwRkJReXhQUVVGUExFTkJRVU1zU1VGQlNTeERRVUZETEVO
QlFVTXNRMEZCUXl4RFFVRkRMRlZCUVZVc1IwRkJSeXhMUVVGTExFTkJRVU1zUzBGQlN5eERRVUZE
TzA5QlF6VkVPenRCUVVWRUxHdENRVUZaTEVkQlFVY3NhVUpCUVdsQ0xFTkJRVU1zUzBGQlN5eERR
VUZETzBGQlEzWkRMR0ZCUVU4c1IwRkJSeXhwUWtGQmFVSXNRMEZCUXl4UFFVRlBMRU5CUVVNN1Mw
RkRja003TzBGQlJVUXNVVUZCU1N4UlFVRlJMRVZCUVVVN1FVRkRXaXhqUVVGUkxFZEJRVWNzVDBG
QlR5eERRVUZETzBGQlEyNUNMR0ZCUVU4c1IwRkJSeXhQUVVGUExFTkJRVU03UVVGRGJFSXNZVUZC
VHl4SFFVRkhMRkZCUVZFc1EwRkJRenRMUVVOd1FqczdRVUZGUkN4WFFVRlBPMEZCUTB3c1ZVRkJT
U3hGUVVGRkxGTkJRVk1zUjBGQlJ5eG5Ra0ZCWjBJc1IwRkJSeXhuUWtGQlowSTdRVUZEY2tRc1ZV
RkJTU3hGUVVGRkxGTkJRVk1zUTBGQlF5eEpRVUZKTzBGQlEzQkNMRmxCUVUwc1JVRkJSU3hUUVVG
VExFTkJRVU1zVFVGQlRUdEJRVU40UWl4VlFVRkpMRVZCUVVVc1UwRkJVeXhEUVVGRExFbEJRVWs3
UVVGRGNFSXNZVUZCVHl4RlFVRlFMRTlCUVU4N1FVRkRVQ3hoUVVGUExFVkJRVkFzVDBGQlR6dEJR
VU5RTEdWQlFWTXNSVUZCUlN4VFFVRlRMRU5CUVVNc1MwRkJTenRCUVVNeFFpeHJRa0ZCV1N4RlFV
RmFMRmxCUVZrN1FVRkRXaXhuUWtGQlZTeEZRVUZGTEV0QlFVc3NTVUZCU1N4TFFVRkxMRU5CUVVN
c1MwRkJTenRCUVVOb1F5eFRRVUZITEVWQlFVVXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhQ
UVVGUExFTkJRVU03UzBGRE0wSXNRMEZCUXp0SFFVTklPenRCUVVWTkxGZEJRVk1zWTBGQll5eERR
VUZETEZWQlFWVXNSVUZCUlN4SFFVRkhMRVZCUVVVN1FVRkRPVU1zVVVGQlNTeERRVUZETEVkQlFV
Y3NTVUZCU1N4VlFVRlZMRU5CUVVNc1RVRkJUU3hGUVVGRk8wRkJRemRDTEZWQlFVMHNVVUZCVVN4
SFFVRkhMRlZCUVZVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITzFWQlF6VkNMRTlC
UVU4c1IwRkJSeXhWUVVGVkxFTkJRVU1zVlVGQlZTeERRVUZETEUxQlFVMHNSMEZCUnl4RFFVRkRM
RU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU03T3p0QlFVZDBSQ3hWUVVGSkxGRkJRVkVzU1VGQlNT
eFBRVUZQTEVWQlFVVTdRVUZEZGtJc1YwRkJSeXhIUVVGSE8wRkJRMG9zWjBKQlFVMHNSVUZCUlN4
UlFVRlJMRU5CUVVNc1RVRkJUVHRCUVVOMlFpeGxRVUZMTEVWQlFVVTdRVUZEVEN4blFrRkJTU3hG
UVVGRkxGRkJRVkVzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1R0QlFVTjZRaXhyUWtGQlRTeEZR
VUZGTEZGQlFWRXNRMEZCUXl4TFFVRkxMRU5CUVVNc1RVRkJUVHRYUVVNNVFqdEJRVU5FTEdGQlFV
Y3NSVUZCUlR0QlFVTklMR2RDUVVGSkxFVkJRVVVzVDBGQlR5eERRVUZETEVkQlFVY3NRMEZCUXl4
SlFVRkpPMEZCUTNSQ0xHdENRVUZOTEVWQlFVVXNUMEZCVHl4RFFVRkRMRWRCUVVjc1EwRkJReXhO
UVVGTk8xZEJRek5DTzFOQlEwWXNRMEZCUXp0UFFVTklPMHRCUTBZN08wRkJSVVFzVjBGQlR6dEJR
VU5NTEZWQlFVa3NSVUZCUlN4VFFVRlRPMEZCUTJZc1ZVRkJTU3hGUVVGRkxGVkJRVlU3UVVGRGFF
SXNWMEZCU3l4RlFVRkZMRVZCUVVVN1FVRkRWQ3hUUVVGSExFVkJRVVVzUjBGQlJ6dExRVU5VTEVO
QlFVTTdSMEZEU0RzN1FVRkhUU3hYUVVGVExHMUNRVUZ0UWl4RFFVRkRMRWxCUVVrc1JVRkJSU3hQ
UVVGUExFVkJRVVVzUzBGQlN5eEZRVUZGTEU5QlFVOHNSVUZCUlR0QlFVTnFSU3hwUWtGQllTeERR
VUZETEVsQlFVa3NSVUZCUlN4TFFVRkxMRU5CUVVNc1EwRkJRenM3UVVGRk0wSXNWMEZCVHp0QlFV
Tk1MRlZCUVVrc1JVRkJSU3gxUWtGQmRVSTdRVUZETjBJc1ZVRkJTU3hGUVVGRkxFbEJRVWtzUTBG
QlF5eEpRVUZKTzBGQlEyWXNXVUZCVFN4RlFVRkZMRWxCUVVrc1EwRkJReXhOUVVGTk8wRkJRMjVD
TEZWQlFVa3NSVUZCUlN4SlFVRkpMRU5CUVVNc1NVRkJTVHRCUVVObUxHRkJRVThzUlVGQlVDeFBR
VUZQTzBGQlExQXNaVUZCVXl4RlFVRkZMRWxCUVVrc1EwRkJReXhMUVVGTE8wRkJRM0pDTEdkQ1FV
RlZMRVZCUVVVc1MwRkJTeXhKUVVGSkxFdEJRVXNzUTBGQlF5eExRVUZMTzBGQlEyaERMRk5CUVVj
c1JVRkJSU3hKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEU5QlFVOHNRMEZCUXp0TFFVTXpRaXhE
UVVGRE8wZEJRMGdpTENKbWFXeGxJam9pYUdWc2NHVnljeTVxY3lJc0luTnZkWEpqWlhORGIyNTBa
VzUwSWpwYkltbHRjRzl5ZENCRmVHTmxjSFJwYjI0Z1puSnZiU0FuTGk0dlpYaGpaWEIwYVc5dUp6
dGNibHh1Wm5WdVkzUnBiMjRnZG1Gc2FXUmhkR1ZEYkc5elpTaHZjR1Z1TENCamJHOXpaU2tnZTF4
dUlDQmpiRzl6WlNBOUlHTnNiM05sTG5CaGRHZ2dQeUJqYkc5elpTNXdZWFJvTG05eWFXZHBibUZz
SURvZ1kyeHZjMlU3WEc1Y2JpQWdhV1lnS0c5d1pXNHVjR0YwYUM1dmNtbG5hVzVoYkNBaFBUMGdZ
Mnh2YzJVcElIdGNiaUFnSUNCc1pYUWdaWEp5YjNKT2IyUmxJRDBnZTJ4dll6b2diM0JsYmk1d1lY
Um9MbXh2WTMwN1hHNWNiaUFnSUNCMGFISnZkeUJ1WlhjZ1JYaGpaWEIwYVc5dUtHOXdaVzR1Y0dG
MGFDNXZjbWxuYVc1aGJDQXJJRndpSUdSdlpYTnVKM1FnYldGMFkyZ2dYQ0lnS3lCamJHOXpaU3dn
WlhKeWIzSk9iMlJsS1R0Y2JpQWdmVnh1ZlZ4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1UyOTFj
bU5sVEc5allYUnBiMjRvYzI5MWNtTmxMQ0JzYjJOSmJtWnZLU0I3WEc0Z0lIUm9hWE11YzI5MWNt
TmxJRDBnYzI5MWNtTmxPMXh1SUNCMGFHbHpMbk4wWVhKMElEMGdlMXh1SUNBZ0lHeHBibVU2SUd4
dlkwbHVabTh1Wm1seWMzUmZiR2x1WlN4Y2JpQWdJQ0JqYjJ4MWJXNDZJR3h2WTBsdVptOHVabWx5
YzNSZlkyOXNkVzF1WEc0Z0lIMDdYRzRnSUhSb2FYTXVaVzVrSUQwZ2UxeHVJQ0FnSUd4cGJtVTZJ
R3h2WTBsdVptOHViR0Z6ZEY5c2FXNWxMRnh1SUNBZ0lHTnZiSFZ0YmpvZ2JHOWpTVzVtYnk1c1lY
TjBYMk52YkhWdGJseHVJQ0I5TzF4dWZWeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdhV1FvZEc5
clpXNHBJSHRjYmlBZ2FXWWdLQzllWEZ4YkxpcGNYRjBrTHk1MFpYTjBLSFJ2YTJWdUtTa2dlMXh1
SUNBZ0lISmxkSFZ5YmlCMGIydGxiaTV6ZFdKemRISW9NU3dnZEc5clpXNHViR1Z1WjNSb0lDMGdN
aWs3WEc0Z0lIMGdaV3h6WlNCN1hHNGdJQ0FnY21WMGRYSnVJSFJ2YTJWdU8xeHVJQ0I5WEc1OVhH
NWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQnpkSEpwY0Vac1lXZHpLRzl3Wlc0c0lHTnNiM05sS1NC
N1hHNGdJSEpsZEhWeWJpQjdYRzRnSUNBZ2IzQmxiam9nYjNCbGJpNWphR0Z5UVhRb01pa2dQVDA5
SUNkK0p5eGNiaUFnSUNCamJHOXpaVG9nWTJ4dmMyVXVZMmhoY2tGMEtHTnNiM05sTG14bGJtZDBh
Q0F0SURNcElEMDlQU0FuZmlkY2JpQWdmVHRjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlI
TjBjbWx3UTI5dGJXVnVkQ2hqYjIxdFpXNTBLU0I3WEc0Z0lISmxkSFZ5YmlCamIyMXRaVzUwTG5K
bGNHeGhZMlVvTDE1Y1hIdGNYSHQrUDF4Y0lTMC9MVDh2TENBbkp5bGNiaUFnSUNBZ0lDQWdJQ0Fn
SUNBZ0lDQXVjbVZ3YkdGalpTZ3ZMVDh0UDM0L1hGeDlYRng5SkM4c0lDY25LVHRjYm4xY2JseHVa
WGh3YjNKMElHWjFibU4wYVc5dUlIQnlaWEJoY21WUVlYUm9LR1JoZEdFc0lIQmhjblJ6TENCc2Iy
TXBJSHRjYmlBZ2JHOWpJRDBnZEdocGN5NXNiMk5KYm1adktHeHZZeWs3WEc1Y2JpQWdiR1YwSUc5
eWFXZHBibUZzSUQwZ1pHRjBZU0EvSUNkQUp5QTZJQ2NuTEZ4dUlDQWdJQ0FnWkdsbklEMGdXMTBz
WEc0Z0lDQWdJQ0JrWlhCMGFDQTlJREFzWEc0Z0lDQWdJQ0JrWlhCMGFGTjBjbWx1WnlBOUlDY25P
MXh1WEc0Z0lHWnZjaUFvYkdWMElHa2dQU0F3TENCc0lEMGdjR0Z5ZEhNdWJHVnVaM1JvT3lCcElE
d2diRHNnYVNzcktTQjdYRzRnSUNBZ2JHVjBJSEJoY25RZ1BTQndZWEowYzF0cFhTNXdZWEowTEZ4
dUlDQWdJQ0FnSUNBdkx5QkpaaUIzWlNCb1lYWmxJRnRkSUhONWJuUmhlQ0IwYUdWdUlIZGxJR1J2
SUc1dmRDQjBjbVZoZENCd1lYUm9JSEpsWm1WeVpXNWpaWE1nWVhNZ2IzQmxjbUYwYjNKekxGeHVJ
Q0FnSUNBZ0lDQXZMeUJwTG1VdUlHWnZieTViZEdocGMxMGdjbVZ6YjJ4MlpYTWdkRzhnWVhCd2Nt
OTRhVzFoZEdWc2VTQmpiMjUwWlhoMExtWnZiMXNuZEdocGN5ZGRYRzRnSUNBZ0lDQWdJR2x6VEds
MFpYSmhiQ0E5SUhCaGNuUnpXMmxkTG05eWFXZHBibUZzSUNFOVBTQndZWEowTzF4dUlDQWdJRzl5
YVdkcGJtRnNJQ3M5SUNod1lYSjBjMXRwWFM1elpYQmhjbUYwYjNJZ2ZId2dKeWNwSUNzZ2NHRnlk
RHRjYmx4dUlDQWdJR2xtSUNnaGFYTk1hWFJsY21Gc0lDWW1JQ2h3WVhKMElEMDlQU0FuTGk0bklI
eDhJSEJoY25RZ1BUMDlJQ2N1SnlCOGZDQndZWEowSUQwOVBTQW5kR2hwY3ljcEtTQjdYRzRnSUNB
Z0lDQnBaaUFvWkdsbkxteGxibWQwYUNBK0lEQXBJSHRjYmlBZ0lDQWdJQ0FnZEdoeWIzY2dibVYz
SUVWNFkyVndkR2x2YmlnblNXNTJZV3hwWkNCd1lYUm9PaUFuSUNzZ2IzSnBaMmx1WVd3c0lIdHNi
Mk45S1R0Y2JpQWdJQ0FnSUgwZ1pXeHpaU0JwWmlBb2NHRnlkQ0E5UFQwZ0p5NHVKeWtnZTF4dUlD
QWdJQ0FnSUNCa1pYQjBhQ3NyTzF4dUlDQWdJQ0FnSUNCa1pYQjBhRk4wY21sdVp5QXJQU0FuTGk0
dkp6dGNiaUFnSUNBZ0lIMWNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnWkdsbkxuQjFjMmdv
Y0dGeWRDazdYRzRnSUNBZ2ZWeHVJQ0I5WEc1Y2JpQWdjbVYwZFhKdUlIdGNiaUFnSUNCMGVYQmxP
aUFuVUdGMGFFVjRjSEpsYzNOcGIyNG5MRnh1SUNBZ0lHUmhkR0VzWEc0Z0lDQWdaR1Z3ZEdnc1hH
NGdJQ0FnY0dGeWRITTZJR1JwWnl4Y2JpQWdJQ0J2Y21sbmFXNWhiQ3hjYmlBZ0lDQnNiMk5jYmlB
Z2ZUdGNibjFjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUhCeVpYQmhjbVZOZFhOMFlXTm9aU2h3
WVhSb0xDQndZWEpoYlhNc0lHaGhjMmdzSUc5d1pXNHNJSE4wY21sd0xDQnNiMk5KYm1adktTQjdY
RzRnSUM4dklFMTFjM1FnZFhObElHTm9ZWEpCZENCMGJ5QnpkWEJ3YjNKMElFbEZJSEJ5WlMweE1G
eHVJQ0JzWlhRZ1pYTmpZWEJsUm14aFp5QTlJRzl3Wlc0dVkyaGhja0YwS0RNcElIeDhJRzl3Wlc0
dVkyaGhja0YwS0RJcExGeHVJQ0FnSUNBZ1pYTmpZWEJsWkNBOUlHVnpZMkZ3WlVac1lXY2dJVDA5
SUNkN0p5QW1KaUJsYzJOaGNHVkdiR0ZuSUNFOVBTQW5KaWM3WEc1Y2JpQWdiR1YwSUdSbFkyOXlZ
WFJ2Y2lBOUlDZ3ZYRndxTHk1MFpYTjBLRzl3Wlc0cEtUdGNiaUFnY21WMGRYSnVJSHRjYmlBZ0lD
QjBlWEJsT2lCa1pXTnZjbUYwYjNJZ1B5QW5SR1ZqYjNKaGRHOXlKeUE2SUNkTmRYTjBZV05vWlZO
MFlYUmxiV1Z1ZENjc1hHNGdJQ0FnY0dGMGFDeGNiaUFnSUNCd1lYSmhiWE1zWEc0Z0lDQWdhR0Z6
YUN4Y2JpQWdJQ0JsYzJOaGNHVmtMRnh1SUNBZ0lITjBjbWx3TEZ4dUlDQWdJR3h2WXpvZ2RHaHBj
eTVzYjJOSmJtWnZLR3h2WTBsdVptOHBYRzRnSUgwN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRH
bHZiaUJ3Y21Wd1lYSmxVbUYzUW14dlkyc29iM0JsYmxKaGQwSnNiMk5yTENCamIyNTBaVzUwY3l3
Z1kyeHZjMlVzSUd4dlkwbHVabThwSUh0Y2JpQWdkbUZzYVdSaGRHVkRiRzl6WlNodmNHVnVVbUYz
UW14dlkyc3NJR05zYjNObEtUdGNibHh1SUNCc2IyTkpibVp2SUQwZ2RHaHBjeTVzYjJOSmJtWnZL
R3h2WTBsdVptOHBPMXh1SUNCc1pYUWdjSEp2WjNKaGJTQTlJSHRjYmlBZ0lDQjBlWEJsT2lBblVI
SnZaM0poYlNjc1hHNGdJQ0FnWW05a2VUb2dZMjl1ZEdWdWRITXNYRzRnSUNBZ2MzUnlhWEE2SUh0
OUxGeHVJQ0FnSUd4dll6b2diRzlqU1c1bWIxeHVJQ0I5TzF4dVhHNGdJSEpsZEhWeWJpQjdYRzRn
SUNBZ2RIbHdaVG9nSjBKc2IyTnJVM1JoZEdWdFpXNTBKeXhjYmlBZ0lDQndZWFJvT2lCdmNHVnVV
bUYzUW14dlkyc3VjR0YwYUN4Y2JpQWdJQ0J3WVhKaGJYTTZJRzl3Wlc1U1lYZENiRzlqYXk1d1lY
SmhiWE1zWEc0Z0lDQWdhR0Z6YURvZ2IzQmxibEpoZDBKc2IyTnJMbWhoYzJnc1hHNGdJQ0FnY0hK
dlozSmhiU3hjYmlBZ0lDQnZjR1Z1VTNSeWFYQTZJSHQ5TEZ4dUlDQWdJR2x1ZG1WeWMyVlRkSEpw
Y0RvZ2UzMHNYRzRnSUNBZ1kyeHZjMlZUZEhKcGNEb2dlMzBzWEc0Z0lDQWdiRzlqT2lCc2IyTkpi
bVp2WEc0Z0lIMDdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCd2NtVndZWEpsUW14dlky
c29iM0JsYmtKc2IyTnJMQ0J3Y205bmNtRnRMQ0JwYm5abGNuTmxRVzVrVUhKdlozSmhiU3dnWTJ4
dmMyVXNJR2x1ZG1WeWRHVmtMQ0JzYjJOSmJtWnZLU0I3WEc0Z0lHbG1JQ2hqYkc5elpTQW1KaUJq
Ykc5elpTNXdZWFJvS1NCN1hHNGdJQ0FnZG1Gc2FXUmhkR1ZEYkc5elpTaHZjR1Z1UW14dlkyc3NJ
R05zYjNObEtUdGNiaUFnZlZ4dVhHNGdJR3hsZENCa1pXTnZjbUYwYjNJZ1BTQW9MMXhjS2k4dWRH
VnpkQ2h2Y0dWdVFteHZZMnN1YjNCbGJpa3BPMXh1WEc0Z0lIQnliMmR5WVcwdVlteHZZMnRRWVhK
aGJYTWdQU0J2Y0dWdVFteHZZMnN1WW14dlkydFFZWEpoYlhNN1hHNWNiaUFnYkdWMElHbHVkbVZ5
YzJVc1hHNGdJQ0FnSUNCcGJuWmxjbk5sVTNSeWFYQTdYRzVjYmlBZ2FXWWdLR2x1ZG1WeWMyVkJi
bVJRY205bmNtRnRLU0I3WEc0Z0lDQWdhV1lnS0dSbFkyOXlZWFJ2Y2lrZ2UxeHVJQ0FnSUNBZ2RH
aHliM2NnYm1WM0lFVjRZMlZ3ZEdsdmJpZ25WVzVsZUhCbFkzUmxaQ0JwYm5abGNuTmxJR0pzYjJO
cklHOXVJR1JsWTI5eVlYUnZjaWNzSUdsdWRtVnljMlZCYm1SUWNtOW5jbUZ0S1R0Y2JpQWdJQ0I5
WEc1Y2JpQWdJQ0JwWmlBb2FXNTJaWEp6WlVGdVpGQnliMmR5WVcwdVkyaGhhVzRwSUh0Y2JpQWdJ
Q0FnSUdsdWRtVnljMlZCYm1SUWNtOW5jbUZ0TG5CeWIyZHlZVzB1WW05a2VWc3dYUzVqYkc5elpW
TjBjbWx3SUQwZ1kyeHZjMlV1YzNSeWFYQTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2FXNTJaWEp6WlZO
MGNtbHdJRDBnYVc1MlpYSnpaVUZ1WkZCeWIyZHlZVzB1YzNSeWFYQTdYRzRnSUNBZ2FXNTJaWEp6
WlNBOUlHbHVkbVZ5YzJWQmJtUlFjbTluY21GdExuQnliMmR5WVcwN1hHNGdJSDFjYmx4dUlDQnBa
aUFvYVc1MlpYSjBaV1FwSUh0Y2JpQWdJQ0JwYm5abGNuUmxaQ0E5SUdsdWRtVnljMlU3WEc0Z0lD
QWdhVzUyWlhKelpTQTlJSEJ5YjJkeVlXMDdYRzRnSUNBZ2NISnZaM0poYlNBOUlHbHVkbVZ5ZEdW
a08xeHVJQ0I5WEc1Y2JpQWdjbVYwZFhKdUlIdGNiaUFnSUNCMGVYQmxPaUJrWldOdmNtRjBiM0ln
UHlBblJHVmpiM0poZEc5eVFteHZZMnNuSURvZ0owSnNiMk5yVTNSaGRHVnRaVzUwSnl4Y2JpQWdJ
Q0J3WVhSb09pQnZjR1Z1UW14dlkyc3VjR0YwYUN4Y2JpQWdJQ0J3WVhKaGJYTTZJRzl3Wlc1Q2JH
OWpheTV3WVhKaGJYTXNYRzRnSUNBZ2FHRnphRG9nYjNCbGJrSnNiMk5yTG1oaGMyZ3NYRzRnSUNB
Z2NISnZaM0poYlN4Y2JpQWdJQ0JwYm5abGNuTmxMRnh1SUNBZ0lHOXdaVzVUZEhKcGNEb2diM0Js
YmtKc2IyTnJMbk4wY21sd0xGeHVJQ0FnSUdsdWRtVnljMlZUZEhKcGNDeGNiaUFnSUNCamJHOXpa
Vk4wY21sd09pQmpiRzl6WlNBbUppQmpiRzl6WlM1emRISnBjQ3hjYmlBZ0lDQnNiMk02SUhSb2FY
TXViRzlqU1c1bWJ5aHNiMk5KYm1adktWeHVJQ0I5TzF4dWZWeHVYRzVsZUhCdmNuUWdablZ1WTNS
cGIyNGdjSEpsY0dGeVpWQnliMmR5WVcwb2MzUmhkR1Z0Wlc1MGN5d2diRzlqS1NCN1hHNGdJR2xt
SUNnaGJHOWpJQ1ltSUhOMFlYUmxiV1Z1ZEhNdWJHVnVaM1JvS1NCN1hHNGdJQ0FnWTI5dWMzUWda
bWx5YzNSTWIyTWdQU0J6ZEdGMFpXMWxiblJ6V3pCZExteHZZeXhjYmlBZ0lDQWdJQ0FnSUNCc1lY
TjBURzlqSUQwZ2MzUmhkR1Z0Wlc1MGMxdHpkR0YwWlcxbGJuUnpMbXhsYm1kMGFDQXRJREZkTG14
dll6dGNibHh1SUNBZ0lDOHFJR2x6ZEdGdVluVnNJR2xuYm05eVpTQmxiSE5sSUNvdlhHNGdJQ0Fn
YVdZZ0tHWnBjbk4wVEc5aklDWW1JR3hoYzNSTWIyTXBJSHRjYmlBZ0lDQWdJR3h2WXlBOUlIdGNi
aUFnSUNBZ0lDQWdjMjkxY21ObE9pQm1hWEp6ZEV4dll5NXpiM1Z5WTJVc1hHNGdJQ0FnSUNBZ0lI
TjBZWEowT2lCN1hHNGdJQ0FnSUNBZ0lDQWdiR2x1WlRvZ1ptbHljM1JNYjJNdWMzUmhjblF1Ykds
dVpTeGNiaUFnSUNBZ0lDQWdJQ0JqYjJ4MWJXNDZJR1pwY25OMFRHOWpMbk4wWVhKMExtTnZiSFZ0
Ymx4dUlDQWdJQ0FnSUNCOUxGeHVJQ0FnSUNBZ0lDQmxibVE2SUh0Y2JpQWdJQ0FnSUNBZ0lDQnNh
VzVsT2lCc1lYTjBURzlqTG1WdVpDNXNhVzVsTEZ4dUlDQWdJQ0FnSUNBZ0lHTnZiSFZ0YmpvZ2JH
RnpkRXh2WXk1bGJtUXVZMjlzZFcxdVhHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMDdYRzRnSUNB
Z2ZWeHVJQ0I5WEc1Y2JpQWdjbVYwZFhKdUlIdGNiaUFnSUNCMGVYQmxPaUFuVUhKdlozSmhiU2Nz
WEc0Z0lDQWdZbTlrZVRvZ2MzUmhkR1Z0Wlc1MGN5eGNiaUFnSUNCemRISnBjRG9nZTMwc1hHNGdJ
Q0FnYkc5ak9pQnNiMk5jYmlBZ2ZUdGNibjFjYmx4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2NI
SmxjR0Z5WlZCaGNuUnBZV3hDYkc5amF5aHZjR1Z1TENCd2NtOW5jbUZ0TENCamJHOXpaU3dnYkc5
alNXNW1ieWtnZTF4dUlDQjJZV3hwWkdGMFpVTnNiM05sS0c5d1pXNHNJR05zYjNObEtUdGNibHh1
SUNCeVpYUjFjbTRnZTF4dUlDQWdJSFI1Y0dVNklDZFFZWEowYVdGc1FteHZZMnRUZEdGMFpXMWxi
blFuTEZ4dUlDQWdJRzVoYldVNklHOXdaVzR1Y0dGMGFDeGNiaUFnSUNCd1lYSmhiWE02SUc5d1pX
NHVjR0Z5WVcxekxGeHVJQ0FnSUdoaGMyZzZJRzl3Wlc0dWFHRnphQ3hjYmlBZ0lDQndjbTluY21G
dExGeHVJQ0FnSUc5d1pXNVRkSEpwY0RvZ2IzQmxiaTV6ZEhKcGNDeGNiaUFnSUNCamJHOXpaVk4w
Y21sd09pQmpiRzl6WlNBbUppQmpiRzl6WlM1emRISnBjQ3hjYmlBZ0lDQnNiMk02SUhSb2FYTXVi
RzlqU1c1bWJ5aHNiMk5KYm1adktWeHVJQ0I5TzF4dWZWeHVYRzRpWFgwPQpkaWZmIC0tZ2l0IGEv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvYW1kL2hhbmRs
ZWJhcnMvY29tcGlsZXIvamF2YXNjcmlwdC1jb21waWxlci5qcyBiL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVy
eS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2FtZC9oYW5kbGViYXJzL2NvbXBpbGVyL2ph
dmFzY3JpcHQtY29tcGlsZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGQ2MTY1ZWU0ZDYxODhlNGVhZWFlODlh
Y2I2MmM1ZGFkNGE5NWViNQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9u
b2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2FtZC9oYW5kbGViYXJzL2NvbXBpbGVyL2phdmFz
Y3JpcHQtY29tcGlsZXIuanMKQEAgLTAsMCArMSwxMTIwIEBACitkZWZpbmUoWydleHBvcnRzJywg
J21vZHVsZScsICcuLi9iYXNlJywgJy4uL2V4Y2VwdGlvbicsICcuLi91dGlscycsICcuL2NvZGUt
Z2VuJ10sIGZ1bmN0aW9uIChleHBvcnRzLCBtb2R1bGUsIF9iYXNlLCBfZXhjZXB0aW9uLCBfdXRp
bHMsIF9jb2RlR2VuKSB7CisgICd1c2Ugc3RyaWN0JzsKKworICAvLyBpc3RhbmJ1bCBpZ25vcmUg
bmV4dAorCisgIGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBv
YmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH0KKworICB2
YXIgX0V4Y2VwdGlvbiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2V4Y2VwdGlvbik7CisKKyAg
dmFyIF9Db2RlR2VuID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY29kZUdlbik7CisKKyAgZnVu
Y3Rpb24gTGl0ZXJhbCh2YWx1ZSkgeworICAgIHRoaXMudmFsdWUgPSB2YWx1ZTsKKyAgfQorCisg
IGZ1bmN0aW9uIEphdmFTY3JpcHRDb21waWxlcigpIHt9CisKKyAgSmF2YVNjcmlwdENvbXBpbGVy
LnByb3RvdHlwZSA9IHsKKyAgICAvLyBQVUJMSUMgQVBJOiBZb3UgY2FuIG92ZXJyaWRlIHRoZXNl
IG1ldGhvZHMgaW4gYSBzdWJjbGFzcyB0byBwcm92aWRlCisgICAgLy8gYWx0ZXJuYXRpdmUgY29t
cGlsZWQgZm9ybXMgZm9yIG5hbWUgbG9va3VwIGFuZCBidWZmZXJpbmcgc2VtYW50aWNzCisgICAg
bmFtZUxvb2t1cDogZnVuY3Rpb24gbmFtZUxvb2t1cChwYXJlbnQsIG5hbWUgLyogLCB0eXBlKi8p
IHsKKyAgICAgIGlmIChKYXZhU2NyaXB0Q29tcGlsZXIuaXNWYWxpZEphdmFTY3JpcHRWYXJpYWJs
ZU5hbWUobmFtZSkpIHsKKyAgICAgICAgcmV0dXJuIFtwYXJlbnQsICcuJywgbmFtZV07CisgICAg
ICB9IGVsc2UgeworICAgICAgICByZXR1cm4gW3BhcmVudCwgJ1snLCBKU09OLnN0cmluZ2lmeShu
YW1lKSwgJ10nXTsKKyAgICAgIH0KKyAgICB9LAorICAgIGRlcHRoZWRMb29rdXA6IGZ1bmN0aW9u
IGRlcHRoZWRMb29rdXAobmFtZSkgeworICAgICAgcmV0dXJuIFt0aGlzLmFsaWFzYWJsZSgnY29u
dGFpbmVyLmxvb2t1cCcpLCAnKGRlcHRocywgIicsIG5hbWUsICciKSddOworICAgIH0sCisKKyAg
ICBjb21waWxlckluZm86IGZ1bmN0aW9uIGNvbXBpbGVySW5mbygpIHsKKyAgICAgIHZhciByZXZp
c2lvbiA9IF9iYXNlLkNPTVBJTEVSX1JFVklTSU9OLAorICAgICAgICAgIHZlcnNpb25zID0gX2Jh
c2UuUkVWSVNJT05fQ0hBTkdFU1tyZXZpc2lvbl07CisgICAgICByZXR1cm4gW3JldmlzaW9uLCB2
ZXJzaW9uc107CisgICAgfSwKKworICAgIGFwcGVuZFRvQnVmZmVyOiBmdW5jdGlvbiBhcHBlbmRU
b0J1ZmZlcihzb3VyY2UsIGxvY2F0aW9uLCBleHBsaWNpdCkgeworICAgICAgLy8gRm9yY2UgYSBz
b3VyY2UgYXMgdGhpcyBzaW1wbGlmaWVzIHRoZSBtZXJnZSBsb2dpYy4KKyAgICAgIGlmICghX3V0
aWxzLmlzQXJyYXkoc291cmNlKSkgeworICAgICAgICBzb3VyY2UgPSBbc291cmNlXTsKKyAgICAg
IH0KKyAgICAgIHNvdXJjZSA9IHRoaXMuc291cmNlLndyYXAoc291cmNlLCBsb2NhdGlvbik7CisK
KyAgICAgIGlmICh0aGlzLmVudmlyb25tZW50LmlzU2ltcGxlKSB7CisgICAgICAgIHJldHVybiBb
J3JldHVybiAnLCBzb3VyY2UsICc7J107CisgICAgICB9IGVsc2UgaWYgKGV4cGxpY2l0KSB7Cisg
ICAgICAgIC8vIFRoaXMgaXMgYSBjYXNlIHdoZXJlIHRoZSBidWZmZXIgb3BlcmF0aW9uIG9jY3Vy
cyBhcyBhIGNoaWxkIG9mIGFub3RoZXIKKyAgICAgICAgLy8gY29uc3RydWN0LCBnZW5lcmFsbHkg
YnJhY2VzLiBXZSBoYXZlIHRvIGV4cGxpY2l0bHkgb3V0cHV0IHRoZXNlIGJ1ZmZlcgorICAgICAg
ICAvLyBvcGVyYXRpb25zIHRvIGVuc3VyZSB0aGF0IHRoZSBlbWl0dGVkIGNvZGUgZ29lcyBpbiB0
aGUgY29ycmVjdCBsb2NhdGlvbi4KKyAgICAgICAgcmV0dXJuIFsnYnVmZmVyICs9ICcsIHNvdXJj
ZSwgJzsnXTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHNvdXJjZS5hcHBlbmRUb0J1ZmZlciA9
IHRydWU7CisgICAgICAgIHJldHVybiBzb3VyY2U7CisgICAgICB9CisgICAgfSwKKworICAgIGlu
aXRpYWxpemVCdWZmZXI6IGZ1bmN0aW9uIGluaXRpYWxpemVCdWZmZXIoKSB7CisgICAgICByZXR1
cm4gdGhpcy5xdW90ZWRTdHJpbmcoJycpOworICAgIH0sCisgICAgLy8gRU5EIFBVQkxJQyBBUEkK
KworICAgIGNvbXBpbGU6IGZ1bmN0aW9uIGNvbXBpbGUoZW52aXJvbm1lbnQsIG9wdGlvbnMsIGNv
bnRleHQsIGFzT2JqZWN0KSB7CisgICAgICB0aGlzLmVudmlyb25tZW50ID0gZW52aXJvbm1lbnQ7
CisgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zOworICAgICAgdGhpcy5zdHJpbmdQYXJhbXMg
PSB0aGlzLm9wdGlvbnMuc3RyaW5nUGFyYW1zOworICAgICAgdGhpcy50cmFja0lkcyA9IHRoaXMu
b3B0aW9ucy50cmFja0lkczsKKyAgICAgIHRoaXMucHJlY29tcGlsZSA9ICFhc09iamVjdDsKKwor
ICAgICAgdGhpcy5uYW1lID0gdGhpcy5lbnZpcm9ubWVudC5uYW1lOworICAgICAgdGhpcy5pc0No
aWxkID0gISFjb250ZXh0OworICAgICAgdGhpcy5jb250ZXh0ID0gY29udGV4dCB8fCB7CisgICAg
ICAgIGRlY29yYXRvcnM6IFtdLAorICAgICAgICBwcm9ncmFtczogW10sCisgICAgICAgIGVudmly
b25tZW50czogW10KKyAgICAgIH07CisKKyAgICAgIHRoaXMucHJlYW1ibGUoKTsKKworICAgICAg
dGhpcy5zdGFja1Nsb3QgPSAwOworICAgICAgdGhpcy5zdGFja1ZhcnMgPSBbXTsKKyAgICAgIHRo
aXMuYWxpYXNlcyA9IHt9OworICAgICAgdGhpcy5yZWdpc3RlcnMgPSB7IGxpc3Q6IFtdIH07Cisg
ICAgICB0aGlzLmhhc2hlcyA9IFtdOworICAgICAgdGhpcy5jb21waWxlU3RhY2sgPSBbXTsKKyAg
ICAgIHRoaXMuaW5saW5lU3RhY2sgPSBbXTsKKyAgICAgIHRoaXMuYmxvY2tQYXJhbXMgPSBbXTsK
KworICAgICAgdGhpcy5jb21waWxlQ2hpbGRyZW4oZW52aXJvbm1lbnQsIG9wdGlvbnMpOworCisg
ICAgICB0aGlzLnVzZURlcHRocyA9IHRoaXMudXNlRGVwdGhzIHx8IGVudmlyb25tZW50LnVzZURl
cHRocyB8fCBlbnZpcm9ubWVudC51c2VEZWNvcmF0b3JzIHx8IHRoaXMub3B0aW9ucy5jb21wYXQ7
CisgICAgICB0aGlzLnVzZUJsb2NrUGFyYW1zID0gdGhpcy51c2VCbG9ja1BhcmFtcyB8fCBlbnZp
cm9ubWVudC51c2VCbG9ja1BhcmFtczsKKworICAgICAgdmFyIG9wY29kZXMgPSBlbnZpcm9ubWVu
dC5vcGNvZGVzLAorICAgICAgICAgIG9wY29kZSA9IHVuZGVmaW5lZCwKKyAgICAgICAgICBmaXJz
dExvYyA9IHVuZGVmaW5lZCwKKyAgICAgICAgICBpID0gdW5kZWZpbmVkLAorICAgICAgICAgIGwg
PSB1bmRlZmluZWQ7CisKKyAgICAgIGZvciAoaSA9IDAsIGwgPSBvcGNvZGVzLmxlbmd0aDsgaSA8
IGw7IGkrKykgeworICAgICAgICBvcGNvZGUgPSBvcGNvZGVzW2ldOworCisgICAgICAgIHRoaXMu
c291cmNlLmN1cnJlbnRMb2NhdGlvbiA9IG9wY29kZS5sb2M7CisgICAgICAgIGZpcnN0TG9jID0g
Zmlyc3RMb2MgfHwgb3Bjb2RlLmxvYzsKKyAgICAgICAgdGhpc1tvcGNvZGUub3Bjb2RlXS5hcHBs
eSh0aGlzLCBvcGNvZGUuYXJncyk7CisgICAgICB9CisKKyAgICAgIC8vIEZsdXNoIGFueSB0cmFp
bGluZyBjb250ZW50IHRoYXQgbWlnaHQgYmUgcGVuZGluZy4KKyAgICAgIHRoaXMuc291cmNlLmN1
cnJlbnRMb2NhdGlvbiA9IGZpcnN0TG9jOworICAgICAgdGhpcy5wdXNoU291cmNlKCcnKTsKKwor
ICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8KKyAgICAgIGlmICh0aGlzLnN0YWNrU2xv
dCB8fCB0aGlzLmlubGluZVN0YWNrLmxlbmd0aCB8fCB0aGlzLmNvbXBpbGVTdGFjay5sZW5ndGgp
IHsKKyAgICAgICAgdGhyb3cgbmV3IF9FeGNlcHRpb25bJ2RlZmF1bHQnXSgnQ29tcGlsZSBjb21w
bGV0ZWQgd2l0aCBjb250ZW50IGxlZnQgb24gc3RhY2snKTsKKyAgICAgIH0KKworICAgICAgaWYg
KCF0aGlzLmRlY29yYXRvcnMuaXNFbXB0eSgpKSB7CisgICAgICAgIHRoaXMudXNlRGVjb3JhdG9y
cyA9IHRydWU7CisKKyAgICAgICAgdGhpcy5kZWNvcmF0b3JzLnByZXBlbmQoJ3ZhciBkZWNvcmF0
b3JzID0gY29udGFpbmVyLmRlY29yYXRvcnM7XG4nKTsKKyAgICAgICAgdGhpcy5kZWNvcmF0b3Jz
LnB1c2goJ3JldHVybiBmbjsnKTsKKworICAgICAgICBpZiAoYXNPYmplY3QpIHsKKyAgICAgICAg
ICB0aGlzLmRlY29yYXRvcnMgPSBGdW5jdGlvbi5hcHBseSh0aGlzLCBbJ2ZuJywgJ3Byb3BzJywg
J2NvbnRhaW5lcicsICdkZXB0aDAnLCAnZGF0YScsICdibG9ja1BhcmFtcycsICdkZXB0aHMnLCB0
aGlzLmRlY29yYXRvcnMubWVyZ2UoKV0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIHRo
aXMuZGVjb3JhdG9ycy5wcmVwZW5kKCdmdW5jdGlvbihmbiwgcHJvcHMsIGNvbnRhaW5lciwgZGVw
dGgwLCBkYXRhLCBibG9ja1BhcmFtcywgZGVwdGhzKSB7XG4nKTsKKyAgICAgICAgICB0aGlzLmRl
Y29yYXRvcnMucHVzaCgnfVxuJyk7CisgICAgICAgICAgdGhpcy5kZWNvcmF0b3JzID0gdGhpcy5k
ZWNvcmF0b3JzLm1lcmdlKCk7CisgICAgICAgIH0KKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHRo
aXMuZGVjb3JhdG9ycyA9IHVuZGVmaW5lZDsKKyAgICAgIH0KKworICAgICAgdmFyIGZuID0gdGhp
cy5jcmVhdGVGdW5jdGlvbkNvbnRleHQoYXNPYmplY3QpOworICAgICAgaWYgKCF0aGlzLmlzQ2hp
bGQpIHsKKyAgICAgICAgdmFyIHJldCA9IHsKKyAgICAgICAgICBjb21waWxlcjogdGhpcy5jb21w
aWxlckluZm8oKSwKKyAgICAgICAgICBtYWluOiBmbgorICAgICAgICB9OworCisgICAgICAgIGlm
ICh0aGlzLmRlY29yYXRvcnMpIHsKKyAgICAgICAgICByZXQubWFpbl9kID0gdGhpcy5kZWNvcmF0
b3JzOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGNhbWVsY2FzZQorICAgICAgICAgIHJldC51c2VE
ZWNvcmF0b3JzID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBfY29udGV4dCA9IHRo
aXMuY29udGV4dDsKKyAgICAgICAgdmFyIHByb2dyYW1zID0gX2NvbnRleHQucHJvZ3JhbXM7Cisg
ICAgICAgIHZhciBkZWNvcmF0b3JzID0gX2NvbnRleHQuZGVjb3JhdG9yczsKKworICAgICAgICBm
b3IgKGkgPSAwLCBsID0gcHJvZ3JhbXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CisgICAgICAgICAg
aWYgKHByb2dyYW1zW2ldKSB7CisgICAgICAgICAgICByZXRbaV0gPSBwcm9ncmFtc1tpXTsKKyAg
ICAgICAgICAgIGlmIChkZWNvcmF0b3JzW2ldKSB7CisgICAgICAgICAgICAgIHJldFtpICsgJ19k
J10gPSBkZWNvcmF0b3JzW2ldOworICAgICAgICAgICAgICByZXQudXNlRGVjb3JhdG9ycyA9IHRy
dWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYg
KHRoaXMuZW52aXJvbm1lbnQudXNlUGFydGlhbCkgeworICAgICAgICAgIHJldC51c2VQYXJ0aWFs
ID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAodGhpcy5vcHRpb25zLmRhdGEpIHsKKyAg
ICAgICAgICByZXQudXNlRGF0YSA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHRoaXMu
dXNlRGVwdGhzKSB7CisgICAgICAgICAgcmV0LnVzZURlcHRocyA9IHRydWU7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKHRoaXMudXNlQmxvY2tQYXJhbXMpIHsKKyAgICAgICAgICByZXQudXNlQmxv
Y2tQYXJhbXMgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuY29t
cGF0KSB7CisgICAgICAgICAgcmV0LmNvbXBhdCA9IHRydWU7CisgICAgICAgIH0KKworICAgICAg
ICBpZiAoIWFzT2JqZWN0KSB7CisgICAgICAgICAgcmV0LmNvbXBpbGVyID0gSlNPTi5zdHJpbmdp
ZnkocmV0LmNvbXBpbGVyKTsKKworICAgICAgICAgIHRoaXMuc291cmNlLmN1cnJlbnRMb2NhdGlv
biA9IHsgc3RhcnQ6IHsgbGluZTogMSwgY29sdW1uOiAwIH0gfTsKKyAgICAgICAgICByZXQgPSB0
aGlzLm9iamVjdExpdGVyYWwocmV0KTsKKworICAgICAgICAgIGlmIChvcHRpb25zLnNyY05hbWUp
IHsKKyAgICAgICAgICAgIHJldCA9IHJldC50b1N0cmluZ1dpdGhTb3VyY2VNYXAoeyBmaWxlOiBv
cHRpb25zLmRlc3ROYW1lIH0pOworICAgICAgICAgICAgcmV0Lm1hcCA9IHJldC5tYXAgJiYgcmV0
Lm1hcC50b1N0cmluZygpOworICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXQgPSBy
ZXQudG9TdHJpbmcoKTsKKyAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
cmV0LmNvbXBpbGVyT3B0aW9ucyA9IHRoaXMub3B0aW9uczsKKyAgICAgICAgfQorCisgICAgICAg
IHJldHVybiByZXQ7CisgICAgICB9IGVsc2UgeworICAgICAgICByZXR1cm4gZm47CisgICAgICB9
CisgICAgfSwKKworICAgIHByZWFtYmxlOiBmdW5jdGlvbiBwcmVhbWJsZSgpIHsKKyAgICAgIC8v
IHRyYWNrIHRoZSBsYXN0IGNvbnRleHQgcHVzaGVkIGludG8gcGxhY2UgdG8gYWxsb3cgc2tpcHBp
bmcgdGhlCisgICAgICAvLyBnZXRDb250ZXh0IG9wY29kZSB3aGVuIGl0IHdvdWxkIGJlIGEgbm9v
cAorICAgICAgdGhpcy5sYXN0Q29udGV4dCA9IDA7CisgICAgICB0aGlzLnNvdXJjZSA9IG5ldyBf
Q29kZUdlblsnZGVmYXVsdCddKHRoaXMub3B0aW9ucy5zcmNOYW1lKTsKKyAgICAgIHRoaXMuZGVj
b3JhdG9ycyA9IG5ldyBfQ29kZUdlblsnZGVmYXVsdCddKHRoaXMub3B0aW9ucy5zcmNOYW1lKTsK
KyAgICB9LAorCisgICAgY3JlYXRlRnVuY3Rpb25Db250ZXh0OiBmdW5jdGlvbiBjcmVhdGVGdW5j
dGlvbkNvbnRleHQoYXNPYmplY3QpIHsKKyAgICAgIHZhciB2YXJEZWNsYXJhdGlvbnMgPSAnJzsK
KworICAgICAgdmFyIGxvY2FscyA9IHRoaXMuc3RhY2tWYXJzLmNvbmNhdCh0aGlzLnJlZ2lzdGVy
cy5saXN0KTsKKyAgICAgIGlmIChsb2NhbHMubGVuZ3RoID4gMCkgeworICAgICAgICB2YXJEZWNs
YXJhdGlvbnMgKz0gJywgJyArIGxvY2Fscy5qb2luKCcsICcpOworICAgICAgfQorCisgICAgICAv
LyBHZW5lcmF0ZSBtaW5pbWl6ZXIgYWxpYXMgbWFwcGluZ3MKKyAgICAgIC8vCisgICAgICAvLyBX
aGVuIHVzaW5nIHRydWUgU291cmNlTm9kZXMsIHRoaXMgd2lsbCB1cGRhdGUgYWxsIHJlZmVyZW5j
ZXMgdG8gdGhlIGdpdmVuIGFsaWFzCisgICAgICAvLyBhcyB0aGUgc291cmNlIG5vZGVzIGFyZSBy
ZXVzZWQgaW4gc2l0dS4gRm9yIHRoZSBub24tc291cmNlIG5vZGUgY29tcGlsYXRpb24gbW9kZSwK
KyAgICAgIC8vIGFsaWFzZXMgd2lsbCBub3QgYmUgdXNlZCwgYnV0IHRoaXMgY2FzZSBpcyBhbHJl
YWR5IGJlaW5nIHJ1biBvbiB0aGUgY2xpZW50IGFuZAorICAgICAgLy8gd2UgYXJlbid0IGNvbmNl
cm4gYWJvdXQgbWluaW1pemluZyB0aGUgdGVtcGxhdGUgc2l6ZS4KKyAgICAgIHZhciBhbGlhc0Nv
dW50ID0gMDsKKyAgICAgIGZvciAodmFyIGFsaWFzIGluIHRoaXMuYWxpYXNlcykgeworICAgICAg
ICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGd1YXJkLWZvci1pbgorICAgICAgICB2YXIgbm9kZSA9
IHRoaXMuYWxpYXNlc1thbGlhc107CisKKyAgICAgICAgaWYgKHRoaXMuYWxpYXNlcy5oYXNPd25Q
cm9wZXJ0eShhbGlhcykgJiYgbm9kZS5jaGlsZHJlbiAmJiBub2RlLnJlZmVyZW5jZUNvdW50ID4g
MSkgeworICAgICAgICAgIHZhckRlY2xhcmF0aW9ucyArPSAnLCBhbGlhcycgKyArK2FsaWFzQ291
bnQgKyAnPScgKyBhbGlhczsKKyAgICAgICAgICBub2RlLmNoaWxkcmVuWzBdID0gJ2FsaWFzJyAr
IGFsaWFzQ291bnQ7CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgdmFyIHBhcmFtcyA9IFsn
Y29udGFpbmVyJywgJ2RlcHRoMCcsICdoZWxwZXJzJywgJ3BhcnRpYWxzJywgJ2RhdGEnXTsKKwor
ICAgICAgaWYgKHRoaXMudXNlQmxvY2tQYXJhbXMgfHwgdGhpcy51c2VEZXB0aHMpIHsKKyAgICAg
ICAgcGFyYW1zLnB1c2goJ2Jsb2NrUGFyYW1zJyk7CisgICAgICB9CisgICAgICBpZiAodGhpcy51
c2VEZXB0aHMpIHsKKyAgICAgICAgcGFyYW1zLnB1c2goJ2RlcHRocycpOworICAgICAgfQorCisg
ICAgICAvLyBQZXJmb3JtIGEgc2Vjb25kIHBhc3Mgb3ZlciB0aGUgb3V0cHV0IHRvIG1lcmdlIGNv
bnRlbnQgd2hlbiBwb3NzaWJsZQorICAgICAgdmFyIHNvdXJjZSA9IHRoaXMubWVyZ2VTb3VyY2Uo
dmFyRGVjbGFyYXRpb25zKTsKKworICAgICAgaWYgKGFzT2JqZWN0KSB7CisgICAgICAgIHBhcmFt
cy5wdXNoKHNvdXJjZSk7CisKKyAgICAgICAgcmV0dXJuIEZ1bmN0aW9uLmFwcGx5KHRoaXMsIHBh
cmFtcyk7CisgICAgICB9IGVsc2UgeworICAgICAgICByZXR1cm4gdGhpcy5zb3VyY2Uud3JhcChb
J2Z1bmN0aW9uKCcsIHBhcmFtcy5qb2luKCcsJyksICcpIHtcbiAgJywgc291cmNlLCAnfSddKTsK
KyAgICAgIH0KKyAgICB9LAorICAgIG1lcmdlU291cmNlOiBmdW5jdGlvbiBtZXJnZVNvdXJjZSh2
YXJEZWNsYXJhdGlvbnMpIHsKKyAgICAgIHZhciBpc1NpbXBsZSA9IHRoaXMuZW52aXJvbm1lbnQu
aXNTaW1wbGUsCisgICAgICAgICAgYXBwZW5kT25seSA9ICF0aGlzLmZvcmNlQnVmZmVyLAorICAg
ICAgICAgIGFwcGVuZEZpcnN0ID0gdW5kZWZpbmVkLAorICAgICAgICAgIHNvdXJjZVNlZW4gPSB1
bmRlZmluZWQsCisgICAgICAgICAgYnVmZmVyU3RhcnQgPSB1bmRlZmluZWQsCisgICAgICAgICAg
YnVmZmVyRW5kID0gdW5kZWZpbmVkOworICAgICAgdGhpcy5zb3VyY2UuZWFjaChmdW5jdGlvbiAo
bGluZSkgeworICAgICAgICBpZiAobGluZS5hcHBlbmRUb0J1ZmZlcikgeworICAgICAgICAgIGlm
IChidWZmZXJTdGFydCkgeworICAgICAgICAgICAgbGluZS5wcmVwZW5kKCcgICsgJyk7CisgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGJ1ZmZlclN0YXJ0ID0gbGluZTsKKyAgICAgICAg
ICB9CisgICAgICAgICAgYnVmZmVyRW5kID0gbGluZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICBpZiAoYnVmZmVyU3RhcnQpIHsKKyAgICAgICAgICAgIGlmICghc291cmNlU2Vlbikgewor
ICAgICAgICAgICAgICBhcHBlbmRGaXJzdCA9IHRydWU7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICBidWZmZXJTdGFydC5wcmVwZW5kKCdidWZmZXIgKz0gJyk7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBidWZmZXJFbmQuYWRkKCc7Jyk7CisgICAgICAgICAgICBidWZm
ZXJTdGFydCA9IGJ1ZmZlckVuZCA9IHVuZGVmaW5lZDsKKyAgICAgICAgICB9CisKKyAgICAgICAg
ICBzb3VyY2VTZWVuID0gdHJ1ZTsKKyAgICAgICAgICBpZiAoIWlzU2ltcGxlKSB7CisgICAgICAg
ICAgICBhcHBlbmRPbmx5ID0gZmFsc2U7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9
KTsKKworICAgICAgaWYgKGFwcGVuZE9ubHkpIHsKKyAgICAgICAgaWYgKGJ1ZmZlclN0YXJ0KSB7
CisgICAgICAgICAgYnVmZmVyU3RhcnQucHJlcGVuZCgncmV0dXJuICcpOworICAgICAgICAgIGJ1
ZmZlckVuZC5hZGQoJzsnKTsKKyAgICAgICAgfSBlbHNlIGlmICghc291cmNlU2VlbikgeworICAg
ICAgICAgIHRoaXMuc291cmNlLnB1c2goJ3JldHVybiAiIjsnKTsKKyAgICAgICAgfQorICAgICAg
fSBlbHNlIHsKKyAgICAgICAgdmFyRGVjbGFyYXRpb25zICs9ICcsIGJ1ZmZlciA9ICcgKyAoYXBw
ZW5kRmlyc3QgPyAnJyA6IHRoaXMuaW5pdGlhbGl6ZUJ1ZmZlcigpKTsKKworICAgICAgICBpZiAo
YnVmZmVyU3RhcnQpIHsKKyAgICAgICAgICBidWZmZXJTdGFydC5wcmVwZW5kKCdyZXR1cm4gYnVm
ZmVyICsgJyk7CisgICAgICAgICAgYnVmZmVyRW5kLmFkZCgnOycpOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgIHRoaXMuc291cmNlLnB1c2goJ3JldHVybiBidWZmZXI7Jyk7CisgICAgICAg
IH0KKyAgICAgIH0KKworICAgICAgaWYgKHZhckRlY2xhcmF0aW9ucykgeworICAgICAgICB0aGlz
LnNvdXJjZS5wcmVwZW5kKCd2YXIgJyArIHZhckRlY2xhcmF0aW9ucy5zdWJzdHJpbmcoMikgKyAo
YXBwZW5kRmlyc3QgPyAnJyA6ICc7XG4nKSk7CisgICAgICB9CisKKyAgICAgIHJldHVybiB0aGlz
LnNvdXJjZS5tZXJnZSgpOworICAgIH0sCisKKyAgICAvLyBbYmxvY2tWYWx1ZV0KKyAgICAvLwor
ICAgIC8vIE9uIHN0YWNrLCBiZWZvcmU6IGhhc2gsIGludmVyc2UsIHByb2dyYW0sIHZhbHVlCisg
ICAgLy8gT24gc3RhY2ssIGFmdGVyOiByZXR1cm4gdmFsdWUgb2YgYmxvY2tIZWxwZXJNaXNzaW5n
CisgICAgLy8KKyAgICAvLyBUaGUgcHVycG9zZSBvZiB0aGlzIG9wY29kZSBpcyB0byB0YWtlIGEg
YmxvY2sgb2YgdGhlIGZvcm0KKyAgICAvLyBge3sjdGhpcy5mb299fS4uLnt7L3RoaXMuZm9vfX1g
LCByZXNvbHZlIHRoZSB2YWx1ZSBvZiBgZm9vYCwgYW5kCisgICAgLy8gcmVwbGFjZSBpdCBvbiB0
aGUgc3RhY2sgd2l0aCB0aGUgcmVzdWx0IG9mIHByb3Blcmx5CisgICAgLy8gaW52b2tpbmcgYmxv
Y2tIZWxwZXJNaXNzaW5nLgorICAgIGJsb2NrVmFsdWU6IGZ1bmN0aW9uIGJsb2NrVmFsdWUobmFt
ZSkgeworICAgICAgdmFyIGJsb2NrSGVscGVyTWlzc2luZyA9IHRoaXMuYWxpYXNhYmxlKCdoZWxw
ZXJzLmJsb2NrSGVscGVyTWlzc2luZycpLAorICAgICAgICAgIHBhcmFtcyA9IFt0aGlzLmNvbnRl
eHROYW1lKDApXTsKKyAgICAgIHRoaXMuc2V0dXBIZWxwZXJBcmdzKG5hbWUsIDAsIHBhcmFtcyk7
CisKKyAgICAgIHZhciBibG9ja05hbWUgPSB0aGlzLnBvcFN0YWNrKCk7CisgICAgICBwYXJhbXMu
c3BsaWNlKDEsIDAsIGJsb2NrTmFtZSk7CisKKyAgICAgIHRoaXMucHVzaCh0aGlzLnNvdXJjZS5m
dW5jdGlvbkNhbGwoYmxvY2tIZWxwZXJNaXNzaW5nLCAnY2FsbCcsIHBhcmFtcykpOworICAgIH0s
CisKKyAgICAvLyBbYW1iaWd1b3VzQmxvY2tWYWx1ZV0KKyAgICAvLworICAgIC8vIE9uIHN0YWNr
LCBiZWZvcmU6IGhhc2gsIGludmVyc2UsIHByb2dyYW0sIHZhbHVlCisgICAgLy8gQ29tcGlsZXIg
dmFsdWUsIGJlZm9yZTogbGFzdEhlbHBlcj12YWx1ZSBvZiBsYXN0IGZvdW5kIGhlbHBlciwgaWYg
YW55CisgICAgLy8gT24gc3RhY2ssIGFmdGVyLCBpZiBubyBsYXN0SGVscGVyOiBzYW1lIGFzIFti
bG9ja1ZhbHVlXQorICAgIC8vIE9uIHN0YWNrLCBhZnRlciwgaWYgbGFzdEhlbHBlcjogdmFsdWUK
KyAgICBhbWJpZ3VvdXNCbG9ja1ZhbHVlOiBmdW5jdGlvbiBhbWJpZ3VvdXNCbG9ja1ZhbHVlKCkg
eworICAgICAgLy8gV2UncmUgYmVpbmcgYSBiaXQgY2hlZWt5IGFuZCByZXVzaW5nIHRoZSBvcHRp
b25zIHZhbHVlIGZyb20gdGhlIHByaW9yIGV4ZWMKKyAgICAgIHZhciBibG9ja0hlbHBlck1pc3Np
bmcgPSB0aGlzLmFsaWFzYWJsZSgnaGVscGVycy5ibG9ja0hlbHBlck1pc3NpbmcnKSwKKyAgICAg
ICAgICBwYXJhbXMgPSBbdGhpcy5jb250ZXh0TmFtZSgwKV07CisgICAgICB0aGlzLnNldHVwSGVs
cGVyQXJncygnJywgMCwgcGFyYW1zLCB0cnVlKTsKKworICAgICAgdGhpcy5mbHVzaElubGluZSgp
OworCisgICAgICB2YXIgY3VycmVudCA9IHRoaXMudG9wU3RhY2soKTsKKyAgICAgIHBhcmFtcy5z
cGxpY2UoMSwgMCwgY3VycmVudCk7CisKKyAgICAgIHRoaXMucHVzaFNvdXJjZShbJ2lmICghJywg
dGhpcy5sYXN0SGVscGVyLCAnKSB7ICcsIGN1cnJlbnQsICcgPSAnLCB0aGlzLnNvdXJjZS5mdW5j
dGlvbkNhbGwoYmxvY2tIZWxwZXJNaXNzaW5nLCAnY2FsbCcsIHBhcmFtcyksICd9J10pOworICAg
IH0sCisKKyAgICAvLyBbYXBwZW5kQ29udGVudF0KKyAgICAvLworICAgIC8vIE9uIHN0YWNrLCBi
ZWZvcmU6IC4uLgorICAgIC8vIE9uIHN0YWNrLCBhZnRlcjogLi4uCisgICAgLy8KKyAgICAvLyBB
cHBlbmRzIHRoZSBzdHJpbmcgdmFsdWUgb2YgYGNvbnRlbnRgIHRvIHRoZSBjdXJyZW50IGJ1ZmZl
cgorICAgIGFwcGVuZENvbnRlbnQ6IGZ1bmN0aW9uIGFwcGVuZENvbnRlbnQoY29udGVudCkgewor
ICAgICAgaWYgKHRoaXMucGVuZGluZ0NvbnRlbnQpIHsKKyAgICAgICAgY29udGVudCA9IHRoaXMu
cGVuZGluZ0NvbnRlbnQgKyBjb250ZW50OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgdGhpcy5w
ZW5kaW5nTG9jYXRpb24gPSB0aGlzLnNvdXJjZS5jdXJyZW50TG9jYXRpb247CisgICAgICB9CisK
KyAgICAgIHRoaXMucGVuZGluZ0NvbnRlbnQgPSBjb250ZW50OworICAgIH0sCisKKyAgICAvLyBb
YXBwZW5kXQorICAgIC8vCisgICAgLy8gT24gc3RhY2ssIGJlZm9yZTogdmFsdWUsIC4uLgorICAg
IC8vIE9uIHN0YWNrLCBhZnRlcjogLi4uCisgICAgLy8KKyAgICAvLyBDb2VyY2VzIGB2YWx1ZWAg
dG8gYSBTdHJpbmcgYW5kIGFwcGVuZHMgaXQgdG8gdGhlIGN1cnJlbnQgYnVmZmVyLgorICAgIC8v
CisgICAgLy8gSWYgYHZhbHVlYCBpcyB0cnV0aHksIG9yIDAsIGl0IGlzIGNvZXJjZWQgaW50byBh
IHN0cmluZyBhbmQgYXBwZW5kZWQKKyAgICAvLyBPdGhlcndpc2UsIHRoZSBlbXB0eSBzdHJpbmcg
aXMgYXBwZW5kZWQKKyAgICBhcHBlbmQ6IGZ1bmN0aW9uIGFwcGVuZCgpIHsKKyAgICAgIGlmICh0
aGlzLmlzSW5saW5lKCkpIHsKKyAgICAgICAgdGhpcy5yZXBsYWNlU3RhY2soZnVuY3Rpb24gKGN1
cnJlbnQpIHsKKyAgICAgICAgICByZXR1cm4gWycgIT0gbnVsbCA/ICcsIGN1cnJlbnQsICcgOiAi
IiddOworICAgICAgICB9KTsKKworICAgICAgICB0aGlzLnB1c2hTb3VyY2UodGhpcy5hcHBlbmRU
b0J1ZmZlcih0aGlzLnBvcFN0YWNrKCkpKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHZhciBs
b2NhbCA9IHRoaXMucG9wU3RhY2soKTsKKyAgICAgICAgdGhpcy5wdXNoU291cmNlKFsnaWYgKCcs
IGxvY2FsLCAnICE9IG51bGwpIHsgJywgdGhpcy5hcHBlbmRUb0J1ZmZlcihsb2NhbCwgdW5kZWZp
bmVkLCB0cnVlKSwgJyB9J10pOworICAgICAgICBpZiAodGhpcy5lbnZpcm9ubWVudC5pc1NpbXBs
ZSkgeworICAgICAgICAgIHRoaXMucHVzaFNvdXJjZShbJ2Vsc2UgeyAnLCB0aGlzLmFwcGVuZFRv
QnVmZmVyKCInJyIsIHVuZGVmaW5lZCwgdHJ1ZSksICcgfSddKTsKKyAgICAgICAgfQorICAgICAg
fQorICAgIH0sCisKKyAgICAvLyBbYXBwZW5kRXNjYXBlZF0KKyAgICAvLworICAgIC8vIE9uIHN0
YWNrLCBiZWZvcmU6IHZhbHVlLCAuLi4KKyAgICAvLyBPbiBzdGFjaywgYWZ0ZXI6IC4uLgorICAg
IC8vCisgICAgLy8gRXNjYXBlIGB2YWx1ZWAgYW5kIGFwcGVuZCBpdCB0byB0aGUgYnVmZmVyCisg
ICAgYXBwZW5kRXNjYXBlZDogZnVuY3Rpb24gYXBwZW5kRXNjYXBlZCgpIHsKKyAgICAgIHRoaXMu
cHVzaFNvdXJjZSh0aGlzLmFwcGVuZFRvQnVmZmVyKFt0aGlzLmFsaWFzYWJsZSgnY29udGFpbmVy
LmVzY2FwZUV4cHJlc3Npb24nKSwgJygnLCB0aGlzLnBvcFN0YWNrKCksICcpJ10pKTsKKyAgICB9
LAorCisgICAgLy8gW2dldENvbnRleHRdCisgICAgLy8KKyAgICAvLyBPbiBzdGFjaywgYmVmb3Jl
OiAuLi4KKyAgICAvLyBPbiBzdGFjaywgYWZ0ZXI6IC4uLgorICAgIC8vIENvbXBpbGVyIHZhbHVl
LCBhZnRlcjogbGFzdENvbnRleHQ9ZGVwdGgKKyAgICAvLworICAgIC8vIFNldCB0aGUgdmFsdWUg
b2YgdGhlIGBsYXN0Q29udGV4dGAgY29tcGlsZXIgdmFsdWUgdG8gdGhlIGRlcHRoCisgICAgZ2V0
Q29udGV4dDogZnVuY3Rpb24gZ2V0Q29udGV4dChkZXB0aCkgeworICAgICAgdGhpcy5sYXN0Q29u
dGV4dCA9IGRlcHRoOworICAgIH0sCisKKyAgICAvLyBbcHVzaENvbnRleHRdCisgICAgLy8KKyAg
ICAvLyBPbiBzdGFjaywgYmVmb3JlOiAuLi4KKyAgICAvLyBPbiBzdGFjaywgYWZ0ZXI6IGN1cnJl
bnRDb250ZXh0LCAuLi4KKyAgICAvLworICAgIC8vIFB1c2hlcyB0aGUgdmFsdWUgb2YgdGhlIGN1
cnJlbnQgY29udGV4dCBvbnRvIHRoZSBzdGFjay4KKyAgICBwdXNoQ29udGV4dDogZnVuY3Rpb24g
cHVzaENvbnRleHQoKSB7CisgICAgICB0aGlzLnB1c2hTdGFja0xpdGVyYWwodGhpcy5jb250ZXh0
TmFtZSh0aGlzLmxhc3RDb250ZXh0KSk7CisgICAgfSwKKworICAgIC8vIFtsb29rdXBPbkNvbnRl
eHRdCisgICAgLy8KKyAgICAvLyBPbiBzdGFjaywgYmVmb3JlOiAuLi4KKyAgICAvLyBPbiBzdGFj
aywgYWZ0ZXI6IGN1cnJlbnRDb250ZXh0W25hbWVdLCAuLi4KKyAgICAvLworICAgIC8vIExvb2tz
IHVwIHRoZSB2YWx1ZSBvZiBgbmFtZWAgb24gdGhlIGN1cnJlbnQgY29udGV4dCBhbmQgcHVzaGVz
CisgICAgLy8gaXQgb250byB0aGUgc3RhY2suCisgICAgbG9va3VwT25Db250ZXh0OiBmdW5jdGlv
biBsb29rdXBPbkNvbnRleHQocGFydHMsIGZhbHN5LCBzdHJpY3QsIHNjb3BlZCkgeworICAgICAg
dmFyIGkgPSAwOworCisgICAgICBpZiAoIXNjb3BlZCAmJiB0aGlzLm9wdGlvbnMuY29tcGF0ICYm
ICF0aGlzLmxhc3RDb250ZXh0KSB7CisgICAgICAgIC8vIFRoZSBkZXB0aGVkIHF1ZXJ5IGlzIGV4
cGVjdGVkIHRvIGhhbmRsZSB0aGUgdW5kZWZpbmVkIGxvZ2ljIGZvciB0aGUgcm9vdCBsZXZlbCB0
aGF0CisgICAgICAgIC8vIGlzIGltcGxlbWVudGVkIGJlbG93LCBzbyB3ZSBldmFsdWF0ZSB0aGF0
IGRpcmVjdGx5IGluIGNvbXBhdCBtb2RlCisgICAgICAgIHRoaXMucHVzaCh0aGlzLmRlcHRoZWRM
b29rdXAocGFydHNbaSsrXSkpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgdGhpcy5wdXNoQ29u
dGV4dCgpOworICAgICAgfQorCisgICAgICB0aGlzLnJlc29sdmVQYXRoKCdjb250ZXh0JywgcGFy
dHMsIGksIGZhbHN5LCBzdHJpY3QpOworICAgIH0sCisKKyAgICAvLyBbbG9va3VwQmxvY2tQYXJh
bV0KKyAgICAvLworICAgIC8vIE9uIHN0YWNrLCBiZWZvcmU6IC4uLgorICAgIC8vIE9uIHN0YWNr
LCBhZnRlcjogYmxvY2tQYXJhbVtuYW1lXSwgLi4uCisgICAgLy8KKyAgICAvLyBMb29rcyB1cCB0
aGUgdmFsdWUgb2YgYHBhcnRzYCBvbiB0aGUgZ2l2ZW4gYmxvY2sgcGFyYW0gYW5kIHB1c2hlcwor
ICAgIC8vIGl0IG9udG8gdGhlIHN0YWNrLgorICAgIGxvb2t1cEJsb2NrUGFyYW06IGZ1bmN0aW9u
IGxvb2t1cEJsb2NrUGFyYW0oYmxvY2tQYXJhbUlkLCBwYXJ0cykgeworICAgICAgdGhpcy51c2VC
bG9ja1BhcmFtcyA9IHRydWU7CisKKyAgICAgIHRoaXMucHVzaChbJ2Jsb2NrUGFyYW1zWycsIGJs
b2NrUGFyYW1JZFswXSwgJ11bJywgYmxvY2tQYXJhbUlkWzFdLCAnXSddKTsKKyAgICAgIHRoaXMu
cmVzb2x2ZVBhdGgoJ2NvbnRleHQnLCBwYXJ0cywgMSk7CisgICAgfSwKKworICAgIC8vIFtsb29r
dXBEYXRhXQorICAgIC8vCisgICAgLy8gT24gc3RhY2ssIGJlZm9yZTogLi4uCisgICAgLy8gT24g
c3RhY2ssIGFmdGVyOiBkYXRhLCAuLi4KKyAgICAvLworICAgIC8vIFB1c2ggdGhlIGRhdGEgbG9v
a3VwIG9wZXJhdG9yCisgICAgbG9va3VwRGF0YTogZnVuY3Rpb24gbG9va3VwRGF0YShkZXB0aCwg
cGFydHMsIHN0cmljdCkgeworICAgICAgaWYgKCFkZXB0aCkgeworICAgICAgICB0aGlzLnB1c2hT
dGFja0xpdGVyYWwoJ2RhdGEnKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHRoaXMucHVzaFN0
YWNrTGl0ZXJhbCgnY29udGFpbmVyLmRhdGEoZGF0YSwgJyArIGRlcHRoICsgJyknKTsKKyAgICAg
IH0KKworICAgICAgdGhpcy5yZXNvbHZlUGF0aCgnZGF0YScsIHBhcnRzLCAwLCB0cnVlLCBzdHJp
Y3QpOworICAgIH0sCisKKyAgICByZXNvbHZlUGF0aDogZnVuY3Rpb24gcmVzb2x2ZVBhdGgodHlw
ZSwgcGFydHMsIGksIGZhbHN5LCBzdHJpY3QpIHsKKyAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBu
ZXh0CisKKyAgICAgIHZhciBfdGhpcyA9IHRoaXM7CisKKyAgICAgIGlmICh0aGlzLm9wdGlvbnMu
c3RyaWN0IHx8IHRoaXMub3B0aW9ucy5hc3N1bWVPYmplY3RzKSB7CisgICAgICAgIHRoaXMucHVz
aChzdHJpY3RMb29rdXAodGhpcy5vcHRpb25zLnN0cmljdCAmJiBzdHJpY3QsIHRoaXMsIHBhcnRz
LCB0eXBlKSk7CisgICAgICAgIHJldHVybjsKKyAgICAgIH0KKworICAgICAgdmFyIGxlbiA9IHBh
cnRzLmxlbmd0aDsKKyAgICAgIGZvciAoOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgLyogZXNs
aW50LWRpc2FibGUgbm8tbG9vcC1mdW5jICovCisgICAgICAgIHRoaXMucmVwbGFjZVN0YWNrKGZ1
bmN0aW9uIChjdXJyZW50KSB7CisgICAgICAgICAgdmFyIGxvb2t1cCA9IF90aGlzLm5hbWVMb29r
dXAoY3VycmVudCwgcGFydHNbaV0sIHR5cGUpOworICAgICAgICAgIC8vIFdlIHdhbnQgdG8gZW5z
dXJlIHRoYXQgemVybyBhbmQgZmFsc2UgYXJlIGhhbmRsZWQgcHJvcGVybHkgaWYgdGhlIGNvbnRl
eHQgKGZhbHN5IGZsYWcpCisgICAgICAgICAgLy8gbmVlZHMgdG8gaGF2ZSB0aGUgc3BlY2lhbCBo
YW5kbGluZyBmb3IgdGhlc2UgdmFsdWVzLgorICAgICAgICAgIGlmICghZmFsc3kpIHsKKyAgICAg
ICAgICAgIHJldHVybiBbJyAhPSBudWxsID8gJywgbG9va3VwLCAnIDogJywgY3VycmVudF07Cisg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIE90aGVyd2lzZSB3ZSBjYW4gdXNlIGdl
bmVyaWMgZmFsc3kgaGFuZGxpbmcKKyAgICAgICAgICAgIHJldHVybiBbJyAmJiAnLCBsb29rdXBd
OworICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgICAgIC8qIGVzbGludC1lbmFibGUgbm8t
bG9vcC1mdW5jICovCisgICAgICB9CisgICAgfSwKKworICAgIC8vIFtyZXNvbHZlUG9zc2libGVM
YW1iZGFdCisgICAgLy8KKyAgICAvLyBPbiBzdGFjaywgYmVmb3JlOiB2YWx1ZSwgLi4uCisgICAg
Ly8gT24gc3RhY2ssIGFmdGVyOiByZXNvbHZlZCB2YWx1ZSwgLi4uCisgICAgLy8KKyAgICAvLyBJ
ZiB0aGUgYHZhbHVlYCBpcyBhIGxhbWJkYSwgcmVwbGFjZSBpdCBvbiB0aGUgc3RhY2sgYnkKKyAg
ICAvLyB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBsYW1iZGEKKyAgICByZXNvbHZlUG9zc2libGVM
YW1iZGE6IGZ1bmN0aW9uIHJlc29sdmVQb3NzaWJsZUxhbWJkYSgpIHsKKyAgICAgIHRoaXMucHVz
aChbdGhpcy5hbGlhc2FibGUoJ2NvbnRhaW5lci5sYW1iZGEnKSwgJygnLCB0aGlzLnBvcFN0YWNr
KCksICcsICcsIHRoaXMuY29udGV4dE5hbWUoMCksICcpJ10pOworICAgIH0sCisKKyAgICAvLyBb
cHVzaFN0cmluZ1BhcmFtXQorICAgIC8vCisgICAgLy8gT24gc3RhY2ssIGJlZm9yZTogLi4uCisg
ICAgLy8gT24gc3RhY2ssIGFmdGVyOiBzdHJpbmcsIGN1cnJlbnRDb250ZXh0LCAuLi4KKyAgICAv
LworICAgIC8vIFRoaXMgb3Bjb2RlIGlzIGRlc2lnbmVkIGZvciB1c2UgaW4gc3RyaW5nIG1vZGUs
IHdoaWNoCisgICAgLy8gcHJvdmlkZXMgdGhlIHN0cmluZyB2YWx1ZSBvZiBhIHBhcmFtZXRlciBh
bG9uZyB3aXRoIGl0cworICAgIC8vIGRlcHRoIHJhdGhlciB0aGFuIHJlc29sdmluZyBpdCBpbW1l
ZGlhdGVseS4KKyAgICBwdXNoU3RyaW5nUGFyYW06IGZ1bmN0aW9uIHB1c2hTdHJpbmdQYXJhbShz
dHJpbmcsIHR5cGUpIHsKKyAgICAgIHRoaXMucHVzaENvbnRleHQoKTsKKyAgICAgIHRoaXMucHVz
aFN0cmluZyh0eXBlKTsKKworICAgICAgLy8gSWYgaXQncyBhIHN1YmV4cHJlc3Npb24sIHRoZSBz
dHJpbmcgcmVzdWx0CisgICAgICAvLyB3aWxsIGJlIHB1c2hlZCBhZnRlciB0aGlzIG9wY29kZS4K
KyAgICAgIGlmICh0eXBlICE9PSAnU3ViRXhwcmVzc2lvbicpIHsKKyAgICAgICAgaWYgKHR5cGVv
ZiBzdHJpbmcgPT09ICdzdHJpbmcnKSB7CisgICAgICAgICAgdGhpcy5wdXNoU3RyaW5nKHN0cmlu
Zyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFsKHN0
cmluZyk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LAorCisgICAgZW1wdHlIYXNoOiBmdW5j
dGlvbiBlbXB0eUhhc2gob21pdEVtcHR5KSB7CisgICAgICBpZiAodGhpcy50cmFja0lkcykgewor
ICAgICAgICB0aGlzLnB1c2goJ3t9Jyk7IC8vIGhhc2hJZHMKKyAgICAgIH0KKyAgICAgIGlmICh0
aGlzLnN0cmluZ1BhcmFtcykgeworICAgICAgICB0aGlzLnB1c2goJ3t9Jyk7IC8vIGhhc2hDb250
ZXh0cworICAgICAgICB0aGlzLnB1c2goJ3t9Jyk7IC8vIGhhc2hUeXBlcworICAgICAgfQorICAg
ICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFsKG9taXRFbXB0eSA/ICd1bmRlZmluZWQnIDogJ3t9Jyk7
CisgICAgfSwKKyAgICBwdXNoSGFzaDogZnVuY3Rpb24gcHVzaEhhc2goKSB7CisgICAgICBpZiAo
dGhpcy5oYXNoKSB7CisgICAgICAgIHRoaXMuaGFzaGVzLnB1c2godGhpcy5oYXNoKTsKKyAgICAg
IH0KKyAgICAgIHRoaXMuaGFzaCA9IHsgdmFsdWVzOiBbXSwgdHlwZXM6IFtdLCBjb250ZXh0czog
W10sIGlkczogW10gfTsKKyAgICB9LAorICAgIHBvcEhhc2g6IGZ1bmN0aW9uIHBvcEhhc2goKSB7
CisgICAgICB2YXIgaGFzaCA9IHRoaXMuaGFzaDsKKyAgICAgIHRoaXMuaGFzaCA9IHRoaXMuaGFz
aGVzLnBvcCgpOworCisgICAgICBpZiAodGhpcy50cmFja0lkcykgeworICAgICAgICB0aGlzLnB1
c2godGhpcy5vYmplY3RMaXRlcmFsKGhhc2guaWRzKSk7CisgICAgICB9CisgICAgICBpZiAodGhp
cy5zdHJpbmdQYXJhbXMpIHsKKyAgICAgICAgdGhpcy5wdXNoKHRoaXMub2JqZWN0TGl0ZXJhbCho
YXNoLmNvbnRleHRzKSk7CisgICAgICAgIHRoaXMucHVzaCh0aGlzLm9iamVjdExpdGVyYWwoaGFz
aC50eXBlcykpOworICAgICAgfQorCisgICAgICB0aGlzLnB1c2godGhpcy5vYmplY3RMaXRlcmFs
KGhhc2gudmFsdWVzKSk7CisgICAgfSwKKworICAgIC8vIFtwdXNoU3RyaW5nXQorICAgIC8vCisg
ICAgLy8gT24gc3RhY2ssIGJlZm9yZTogLi4uCisgICAgLy8gT24gc3RhY2ssIGFmdGVyOiBxdW90
ZWRTdHJpbmcoc3RyaW5nKSwgLi4uCisgICAgLy8KKyAgICAvLyBQdXNoIGEgcXVvdGVkIHZlcnNp
b24gb2YgYHN0cmluZ2Agb250byB0aGUgc3RhY2sKKyAgICBwdXNoU3RyaW5nOiBmdW5jdGlvbiBw
dXNoU3RyaW5nKHN0cmluZykgeworICAgICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFsKHRoaXMucXVv
dGVkU3RyaW5nKHN0cmluZykpOworICAgIH0sCisKKyAgICAvLyBbcHVzaExpdGVyYWxdCisgICAg
Ly8KKyAgICAvLyBPbiBzdGFjaywgYmVmb3JlOiAuLi4KKyAgICAvLyBPbiBzdGFjaywgYWZ0ZXI6
IHZhbHVlLCAuLi4KKyAgICAvLworICAgIC8vIFB1c2hlcyBhIHZhbHVlIG9udG8gdGhlIHN0YWNr
LiBUaGlzIG9wZXJhdGlvbiBwcmV2ZW50cworICAgIC8vIHRoZSBjb21waWxlciBmcm9tIGNyZWF0
aW5nIGEgdGVtcG9yYXJ5IHZhcmlhYmxlIHRvIGhvbGQKKyAgICAvLyBpdC4KKyAgICBwdXNoTGl0
ZXJhbDogZnVuY3Rpb24gcHVzaExpdGVyYWwodmFsdWUpIHsKKyAgICAgIHRoaXMucHVzaFN0YWNr
TGl0ZXJhbCh2YWx1ZSk7CisgICAgfSwKKworICAgIC8vIFtwdXNoUHJvZ3JhbV0KKyAgICAvLwor
ICAgIC8vIE9uIHN0YWNrLCBiZWZvcmU6IC4uLgorICAgIC8vIE9uIHN0YWNrLCBhZnRlcjogcHJv
Z3JhbShndWlkKSwgLi4uCisgICAgLy8KKyAgICAvLyBQdXNoIGEgcHJvZ3JhbSBleHByZXNzaW9u
IG9udG8gdGhlIHN0YWNrLiBUaGlzIHRha2VzCisgICAgLy8gYSBjb21waWxlLXRpbWUgZ3VpZCBh
bmQgY29udmVydHMgaXQgaW50byBhIHJ1bnRpbWUtYWNjZXNzaWJsZQorICAgIC8vIGV4cHJlc3Np
b24uCisgICAgcHVzaFByb2dyYW06IGZ1bmN0aW9uIHB1c2hQcm9ncmFtKGd1aWQpIHsKKyAgICAg
IGlmIChndWlkICE9IG51bGwpIHsKKyAgICAgICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFsKHRoaXMu
cHJvZ3JhbUV4cHJlc3Npb24oZ3VpZCkpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgdGhpcy5w
dXNoU3RhY2tMaXRlcmFsKG51bGwpOworICAgICAgfQorICAgIH0sCisKKyAgICAvLyBbcmVnaXN0
ZXJEZWNvcmF0b3JdCisgICAgLy8KKyAgICAvLyBPbiBzdGFjaywgYmVmb3JlOiBoYXNoLCBwcm9n
cmFtLCBwYXJhbXMuLi4sIC4uLgorICAgIC8vIE9uIHN0YWNrLCBhZnRlcjogLi4uCisgICAgLy8K
KyAgICAvLyBQb3BzIG9mZiB0aGUgZGVjb3JhdG9yJ3MgcGFyYW1ldGVycywgaW52b2tlcyB0aGUg
ZGVjb3JhdG9yLAorICAgIC8vIGFuZCBpbnNlcnRzIHRoZSBkZWNvcmF0b3IgaW50byB0aGUgZGVj
b3JhdG9ycyBsaXN0LgorICAgIHJlZ2lzdGVyRGVjb3JhdG9yOiBmdW5jdGlvbiByZWdpc3RlckRl
Y29yYXRvcihwYXJhbVNpemUsIG5hbWUpIHsKKyAgICAgIHZhciBmb3VuZERlY29yYXRvciA9IHRo
aXMubmFtZUxvb2t1cCgnZGVjb3JhdG9ycycsIG5hbWUsICdkZWNvcmF0b3InKSwKKyAgICAgICAg
ICBvcHRpb25zID0gdGhpcy5zZXR1cEhlbHBlckFyZ3MobmFtZSwgcGFyYW1TaXplKTsKKworICAg
ICAgdGhpcy5kZWNvcmF0b3JzLnB1c2goWydmbiA9ICcsIHRoaXMuZGVjb3JhdG9ycy5mdW5jdGlv
bkNhbGwoZm91bmREZWNvcmF0b3IsICcnLCBbJ2ZuJywgJ3Byb3BzJywgJ2NvbnRhaW5lcicsIG9w
dGlvbnNdKSwgJyB8fCBmbjsnXSk7CisgICAgfSwKKworICAgIC8vIFtpbnZva2VIZWxwZXJdCisg
ICAgLy8KKyAgICAvLyBPbiBzdGFjaywgYmVmb3JlOiBoYXNoLCBpbnZlcnNlLCBwcm9ncmFtLCBw
YXJhbXMuLi4sIC4uLgorICAgIC8vIE9uIHN0YWNrLCBhZnRlcjogcmVzdWx0IG9mIGhlbHBlciBp
bnZvY2F0aW9uCisgICAgLy8KKyAgICAvLyBQb3BzIG9mZiB0aGUgaGVscGVyJ3MgcGFyYW1ldGVy
cywgaW52b2tlcyB0aGUgaGVscGVyLAorICAgIC8vIGFuZCBwdXNoZXMgdGhlIGhlbHBlcidzIHJl
dHVybiB2YWx1ZSBvbnRvIHRoZSBzdGFjay4KKyAgICAvLworICAgIC8vIElmIHRoZSBoZWxwZXIg
aXMgbm90IGZvdW5kLCBgaGVscGVyTWlzc2luZ2AgaXMgY2FsbGVkLgorICAgIGludm9rZUhlbHBl
cjogZnVuY3Rpb24gaW52b2tlSGVscGVyKHBhcmFtU2l6ZSwgbmFtZSwgaXNTaW1wbGUpIHsKKyAg
ICAgIHZhciBub25IZWxwZXIgPSB0aGlzLnBvcFN0YWNrKCksCisgICAgICAgICAgaGVscGVyID0g
dGhpcy5zZXR1cEhlbHBlcihwYXJhbVNpemUsIG5hbWUpLAorICAgICAgICAgIHNpbXBsZSA9IGlz
U2ltcGxlID8gW2hlbHBlci5uYW1lLCAnIHx8ICddIDogJyc7CisKKyAgICAgIHZhciBsb29rdXAg
PSBbJygnXS5jb25jYXQoc2ltcGxlLCBub25IZWxwZXIpOworICAgICAgaWYgKCF0aGlzLm9wdGlv
bnMuc3RyaWN0KSB7CisgICAgICAgIGxvb2t1cC5wdXNoKCcgfHwgJywgdGhpcy5hbGlhc2FibGUo
J2hlbHBlcnMuaGVscGVyTWlzc2luZycpKTsKKyAgICAgIH0KKyAgICAgIGxvb2t1cC5wdXNoKCcp
Jyk7CisKKyAgICAgIHRoaXMucHVzaCh0aGlzLnNvdXJjZS5mdW5jdGlvbkNhbGwobG9va3VwLCAn
Y2FsbCcsIGhlbHBlci5jYWxsUGFyYW1zKSk7CisgICAgfSwKKworICAgIC8vIFtpbnZva2VLbm93
bkhlbHBlcl0KKyAgICAvLworICAgIC8vIE9uIHN0YWNrLCBiZWZvcmU6IGhhc2gsIGludmVyc2Us
IHByb2dyYW0sIHBhcmFtcy4uLiwgLi4uCisgICAgLy8gT24gc3RhY2ssIGFmdGVyOiByZXN1bHQg
b2YgaGVscGVyIGludm9jYXRpb24KKyAgICAvLworICAgIC8vIFRoaXMgb3BlcmF0aW9uIGlzIHVz
ZWQgd2hlbiB0aGUgaGVscGVyIGlzIGtub3duIHRvIGV4aXN0LAorICAgIC8vIHNvIGEgYGhlbHBl
ck1pc3NpbmdgIGZhbGxiYWNrIGlzIG5vdCByZXF1aXJlZC4KKyAgICBpbnZva2VLbm93bkhlbHBl
cjogZnVuY3Rpb24gaW52b2tlS25vd25IZWxwZXIocGFyYW1TaXplLCBuYW1lKSB7CisgICAgICB2
YXIgaGVscGVyID0gdGhpcy5zZXR1cEhlbHBlcihwYXJhbVNpemUsIG5hbWUpOworICAgICAgdGhp
cy5wdXNoKHRoaXMuc291cmNlLmZ1bmN0aW9uQ2FsbChoZWxwZXIubmFtZSwgJ2NhbGwnLCBoZWxw
ZXIuY2FsbFBhcmFtcykpOworICAgIH0sCisKKyAgICAvLyBbaW52b2tlQW1iaWd1b3VzXQorICAg
IC8vCisgICAgLy8gT24gc3RhY2ssIGJlZm9yZTogaGFzaCwgaW52ZXJzZSwgcHJvZ3JhbSwgcGFy
YW1zLi4uLCAuLi4KKyAgICAvLyBPbiBzdGFjaywgYWZ0ZXI6IHJlc3VsdCBvZiBkaXNhbWJpZ3Vh
dGlvbgorICAgIC8vCisgICAgLy8gVGhpcyBvcGVyYXRpb24gaXMgdXNlZCB3aGVuIGFuIGV4cHJl
c3Npb24gbGlrZSBge3tmb299fWAKKyAgICAvLyBpcyBwcm92aWRlZCwgYnV0IHdlIGRvbid0IGtu
b3cgYXQgY29tcGlsZS10aW1lIHdoZXRoZXIgaXQKKyAgICAvLyBpcyBhIGhlbHBlciBvciBhIHBh
dGguCisgICAgLy8KKyAgICAvLyBUaGlzIG9wZXJhdGlvbiBlbWl0cyBtb3JlIGNvZGUgdGhhbiB0
aGUgb3RoZXIgb3B0aW9ucywKKyAgICAvLyBhbmQgY2FuIGJlIGF2b2lkZWQgYnkgcGFzc2luZyB0
aGUgYGtub3duSGVscGVyc2AgYW5kCisgICAgLy8gYGtub3duSGVscGVyc09ubHlgIGZsYWdzIGF0
IGNvbXBpbGUtdGltZS4KKyAgICBpbnZva2VBbWJpZ3VvdXM6IGZ1bmN0aW9uIGludm9rZUFtYmln
dW91cyhuYW1lLCBoZWxwZXJDYWxsKSB7CisgICAgICB0aGlzLnVzZVJlZ2lzdGVyKCdoZWxwZXIn
KTsKKworICAgICAgdmFyIG5vbkhlbHBlciA9IHRoaXMucG9wU3RhY2soKTsKKworICAgICAgdGhp
cy5lbXB0eUhhc2goKTsKKyAgICAgIHZhciBoZWxwZXIgPSB0aGlzLnNldHVwSGVscGVyKDAsIG5h
bWUsIGhlbHBlckNhbGwpOworCisgICAgICB2YXIgaGVscGVyTmFtZSA9IHRoaXMubGFzdEhlbHBl
ciA9IHRoaXMubmFtZUxvb2t1cCgnaGVscGVycycsIG5hbWUsICdoZWxwZXInKTsKKworICAgICAg
dmFyIGxvb2t1cCA9IFsnKCcsICcoaGVscGVyID0gJywgaGVscGVyTmFtZSwgJyB8fCAnLCBub25I
ZWxwZXIsICcpJ107CisgICAgICBpZiAoIXRoaXMub3B0aW9ucy5zdHJpY3QpIHsKKyAgICAgICAg
bG9va3VwWzBdID0gJyhoZWxwZXIgPSAnOworICAgICAgICBsb29rdXAucHVzaCgnICE9IG51bGwg
PyBoZWxwZXIgOiAnLCB0aGlzLmFsaWFzYWJsZSgnaGVscGVycy5oZWxwZXJNaXNzaW5nJykpOwor
ICAgICAgfQorCisgICAgICB0aGlzLnB1c2goWycoJywgbG9va3VwLCBoZWxwZXIucGFyYW1zSW5p
dCA/IFsnKSwoJywgaGVscGVyLnBhcmFtc0luaXRdIDogW10sICcpLCcsICcodHlwZW9mIGhlbHBl
ciA9PT0gJywgdGhpcy5hbGlhc2FibGUoJyJmdW5jdGlvbiInKSwgJyA/ICcsIHRoaXMuc291cmNl
LmZ1bmN0aW9uQ2FsbCgnaGVscGVyJywgJ2NhbGwnLCBoZWxwZXIuY2FsbFBhcmFtcyksICcgOiBo
ZWxwZXIpKSddKTsKKyAgICB9LAorCisgICAgLy8gW2ludm9rZVBhcnRpYWxdCisgICAgLy8KKyAg
ICAvLyBPbiBzdGFjaywgYmVmb3JlOiBjb250ZXh0LCAuLi4KKyAgICAvLyBPbiBzdGFjayBhZnRl
cjogcmVzdWx0IG9mIHBhcnRpYWwgaW52b2NhdGlvbgorICAgIC8vCisgICAgLy8gVGhpcyBvcGVy
YXRpb24gcG9wcyBvZmYgYSBjb250ZXh0LCBpbnZva2VzIGEgcGFydGlhbCB3aXRoIHRoYXQgY29u
dGV4dCwKKyAgICAvLyBhbmQgcHVzaGVzIHRoZSByZXN1bHQgb2YgdGhlIGludm9jYXRpb24gYmFj
ay4KKyAgICBpbnZva2VQYXJ0aWFsOiBmdW5jdGlvbiBpbnZva2VQYXJ0aWFsKGlzRHluYW1pYywg
bmFtZSwgaW5kZW50KSB7CisgICAgICB2YXIgcGFyYW1zID0gW10sCisgICAgICAgICAgb3B0aW9u
cyA9IHRoaXMuc2V0dXBQYXJhbXMobmFtZSwgMSwgcGFyYW1zKTsKKworICAgICAgaWYgKGlzRHlu
YW1pYykgeworICAgICAgICBuYW1lID0gdGhpcy5wb3BTdGFjaygpOworICAgICAgICBkZWxldGUg
b3B0aW9ucy5uYW1lOworICAgICAgfQorCisgICAgICBpZiAoaW5kZW50KSB7CisgICAgICAgIG9w
dGlvbnMuaW5kZW50ID0gSlNPTi5zdHJpbmdpZnkoaW5kZW50KTsKKyAgICAgIH0KKyAgICAgIG9w
dGlvbnMuaGVscGVycyA9ICdoZWxwZXJzJzsKKyAgICAgIG9wdGlvbnMucGFydGlhbHMgPSAncGFy
dGlhbHMnOworICAgICAgb3B0aW9ucy5kZWNvcmF0b3JzID0gJ2NvbnRhaW5lci5kZWNvcmF0b3Jz
JzsKKworICAgICAgaWYgKCFpc0R5bmFtaWMpIHsKKyAgICAgICAgcGFyYW1zLnVuc2hpZnQodGhp
cy5uYW1lTG9va3VwKCdwYXJ0aWFscycsIG5hbWUsICdwYXJ0aWFsJykpOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgcGFyYW1zLnVuc2hpZnQobmFtZSk7CisgICAgICB9CisKKyAgICAgIGlmICh0
aGlzLm9wdGlvbnMuY29tcGF0KSB7CisgICAgICAgIG9wdGlvbnMuZGVwdGhzID0gJ2RlcHRocyc7
CisgICAgICB9CisgICAgICBvcHRpb25zID0gdGhpcy5vYmplY3RMaXRlcmFsKG9wdGlvbnMpOwor
ICAgICAgcGFyYW1zLnB1c2gob3B0aW9ucyk7CisKKyAgICAgIHRoaXMucHVzaCh0aGlzLnNvdXJj
ZS5mdW5jdGlvbkNhbGwoJ2NvbnRhaW5lci5pbnZva2VQYXJ0aWFsJywgJycsIHBhcmFtcykpOwor
ICAgIH0sCisKKyAgICAvLyBbYXNzaWduVG9IYXNoXQorICAgIC8vCisgICAgLy8gT24gc3RhY2ss
IGJlZm9yZTogdmFsdWUsIC4uLiwgaGFzaCwgLi4uCisgICAgLy8gT24gc3RhY2ssIGFmdGVyOiAu
Li4sIGhhc2gsIC4uLgorICAgIC8vCisgICAgLy8gUG9wcyBhIHZhbHVlIG9mZiB0aGUgc3RhY2sg
YW5kIGFzc2lnbnMgaXQgdG8gdGhlIGN1cnJlbnQgaGFzaAorICAgIGFzc2lnblRvSGFzaDogZnVu
Y3Rpb24gYXNzaWduVG9IYXNoKGtleSkgeworICAgICAgdmFyIHZhbHVlID0gdGhpcy5wb3BTdGFj
aygpLAorICAgICAgICAgIGNvbnRleHQgPSB1bmRlZmluZWQsCisgICAgICAgICAgdHlwZSA9IHVu
ZGVmaW5lZCwKKyAgICAgICAgICBpZCA9IHVuZGVmaW5lZDsKKworICAgICAgaWYgKHRoaXMudHJh
Y2tJZHMpIHsKKyAgICAgICAgaWQgPSB0aGlzLnBvcFN0YWNrKCk7CisgICAgICB9CisgICAgICBp
ZiAodGhpcy5zdHJpbmdQYXJhbXMpIHsKKyAgICAgICAgdHlwZSA9IHRoaXMucG9wU3RhY2soKTsK
KyAgICAgICAgY29udGV4dCA9IHRoaXMucG9wU3RhY2soKTsKKyAgICAgIH0KKworICAgICAgdmFy
IGhhc2ggPSB0aGlzLmhhc2g7CisgICAgICBpZiAoY29udGV4dCkgeworICAgICAgICBoYXNoLmNv
bnRleHRzW2tleV0gPSBjb250ZXh0OworICAgICAgfQorICAgICAgaWYgKHR5cGUpIHsKKyAgICAg
ICAgaGFzaC50eXBlc1trZXldID0gdHlwZTsKKyAgICAgIH0KKyAgICAgIGlmIChpZCkgeworICAg
ICAgICBoYXNoLmlkc1trZXldID0gaWQ7CisgICAgICB9CisgICAgICBoYXNoLnZhbHVlc1trZXld
ID0gdmFsdWU7CisgICAgfSwKKworICAgIHB1c2hJZDogZnVuY3Rpb24gcHVzaElkKHR5cGUsIG5h
bWUsIGNoaWxkKSB7CisgICAgICBpZiAodHlwZSA9PT0gJ0Jsb2NrUGFyYW0nKSB7CisgICAgICAg
IHRoaXMucHVzaFN0YWNrTGl0ZXJhbCgnYmxvY2tQYXJhbXNbJyArIG5hbWVbMF0gKyAnXS5wYXRo
WycgKyBuYW1lWzFdICsgJ10nICsgKGNoaWxkID8gJyArICcgKyBKU09OLnN0cmluZ2lmeSgnLicg
KyBjaGlsZCkgOiAnJykpOworICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnUGF0aEV4cHJlc3Np
b24nKSB7CisgICAgICAgIHRoaXMucHVzaFN0cmluZyhuYW1lKTsKKyAgICAgIH0gZWxzZSBpZiAo
dHlwZSA9PT0gJ1N1YkV4cHJlc3Npb24nKSB7CisgICAgICAgIHRoaXMucHVzaFN0YWNrTGl0ZXJh
bCgndHJ1ZScpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFs
KCdudWxsJyk7CisgICAgICB9CisgICAgfSwKKworICAgIC8vIEhFTFBFUlMKKworICAgIGNvbXBp
bGVyOiBKYXZhU2NyaXB0Q29tcGlsZXIsCisKKyAgICBjb21waWxlQ2hpbGRyZW46IGZ1bmN0aW9u
IGNvbXBpbGVDaGlsZHJlbihlbnZpcm9ubWVudCwgb3B0aW9ucykgeworICAgICAgdmFyIGNoaWxk
cmVuID0gZW52aXJvbm1lbnQuY2hpbGRyZW4sCisgICAgICAgICAgY2hpbGQgPSB1bmRlZmluZWQs
CisgICAgICAgICAgY29tcGlsZXIgPSB1bmRlZmluZWQ7CisKKyAgICAgIGZvciAodmFyIGkgPSAw
LCBsID0gY2hpbGRyZW4ubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CisgICAgICAgIGNoaWxkID0gY2hp
bGRyZW5baV07CisgICAgICAgIGNvbXBpbGVyID0gbmV3IHRoaXMuY29tcGlsZXIoKTsgLy8gZXNs
aW50LWRpc2FibGUtbGluZSBuZXctY2FwCisKKyAgICAgICAgdmFyIGV4aXN0aW5nID0gdGhpcy5t
YXRjaEV4aXN0aW5nUHJvZ3JhbShjaGlsZCk7CisKKyAgICAgICAgaWYgKGV4aXN0aW5nID09IG51
bGwpIHsKKyAgICAgICAgICB0aGlzLmNvbnRleHQucHJvZ3JhbXMucHVzaCgnJyk7IC8vIFBsYWNl
aG9sZGVyIHRvIHByZXZlbnQgbmFtZSBjb25mbGljdHMgZm9yIG5lc3RlZCBjaGlsZHJlbgorICAg
ICAgICAgIHZhciBpbmRleCA9IHRoaXMuY29udGV4dC5wcm9ncmFtcy5sZW5ndGg7CisgICAgICAg
ICAgY2hpbGQuaW5kZXggPSBpbmRleDsKKyAgICAgICAgICBjaGlsZC5uYW1lID0gJ3Byb2dyYW0n
ICsgaW5kZXg7CisgICAgICAgICAgdGhpcy5jb250ZXh0LnByb2dyYW1zW2luZGV4XSA9IGNvbXBp
bGVyLmNvbXBpbGUoY2hpbGQsIG9wdGlvbnMsIHRoaXMuY29udGV4dCwgIXRoaXMucHJlY29tcGls
ZSk7CisgICAgICAgICAgdGhpcy5jb250ZXh0LmRlY29yYXRvcnNbaW5kZXhdID0gY29tcGlsZXIu
ZGVjb3JhdG9yczsKKyAgICAgICAgICB0aGlzLmNvbnRleHQuZW52aXJvbm1lbnRzW2luZGV4XSA9
IGNoaWxkOworCisgICAgICAgICAgdGhpcy51c2VEZXB0aHMgPSB0aGlzLnVzZURlcHRocyB8fCBj
b21waWxlci51c2VEZXB0aHM7CisgICAgICAgICAgdGhpcy51c2VCbG9ja1BhcmFtcyA9IHRoaXMu
dXNlQmxvY2tQYXJhbXMgfHwgY29tcGlsZXIudXNlQmxvY2tQYXJhbXM7CisgICAgICAgICAgY2hp
bGQudXNlRGVwdGhzID0gdGhpcy51c2VEZXB0aHM7CisgICAgICAgICAgY2hpbGQudXNlQmxvY2tQ
YXJhbXMgPSB0aGlzLnVzZUJsb2NrUGFyYW1zOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
IGNoaWxkLmluZGV4ID0gZXhpc3RpbmcuaW5kZXg7CisgICAgICAgICAgY2hpbGQubmFtZSA9ICdw
cm9ncmFtJyArIGV4aXN0aW5nLmluZGV4OworCisgICAgICAgICAgdGhpcy51c2VEZXB0aHMgPSB0
aGlzLnVzZURlcHRocyB8fCBleGlzdGluZy51c2VEZXB0aHM7CisgICAgICAgICAgdGhpcy51c2VC
bG9ja1BhcmFtcyA9IHRoaXMudXNlQmxvY2tQYXJhbXMgfHwgZXhpc3RpbmcudXNlQmxvY2tQYXJh
bXM7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LAorICAgIG1hdGNoRXhpc3RpbmdQcm9ncmFt
OiBmdW5jdGlvbiBtYXRjaEV4aXN0aW5nUHJvZ3JhbShjaGlsZCkgeworICAgICAgZm9yICh2YXIg
aSA9IDAsIGxlbiA9IHRoaXMuY29udGV4dC5lbnZpcm9ubWVudHMubGVuZ3RoOyBpIDwgbGVuOyBp
KyspIHsKKyAgICAgICAgdmFyIGVudmlyb25tZW50ID0gdGhpcy5jb250ZXh0LmVudmlyb25tZW50
c1tpXTsKKyAgICAgICAgaWYgKGVudmlyb25tZW50ICYmIGVudmlyb25tZW50LmVxdWFscyhjaGls
ZCkpIHsKKyAgICAgICAgICByZXR1cm4gZW52aXJvbm1lbnQ7CisgICAgICAgIH0KKyAgICAgIH0K
KyAgICB9LAorCisgICAgcHJvZ3JhbUV4cHJlc3Npb246IGZ1bmN0aW9uIHByb2dyYW1FeHByZXNz
aW9uKGd1aWQpIHsKKyAgICAgIHZhciBjaGlsZCA9IHRoaXMuZW52aXJvbm1lbnQuY2hpbGRyZW5b
Z3VpZF0sCisgICAgICAgICAgcHJvZ3JhbVBhcmFtcyA9IFtjaGlsZC5pbmRleCwgJ2RhdGEnLCBj
aGlsZC5ibG9ja1BhcmFtc107CisKKyAgICAgIGlmICh0aGlzLnVzZUJsb2NrUGFyYW1zIHx8IHRo
aXMudXNlRGVwdGhzKSB7CisgICAgICAgIHByb2dyYW1QYXJhbXMucHVzaCgnYmxvY2tQYXJhbXMn
KTsKKyAgICAgIH0KKyAgICAgIGlmICh0aGlzLnVzZURlcHRocykgeworICAgICAgICBwcm9ncmFt
UGFyYW1zLnB1c2goJ2RlcHRocycpOworICAgICAgfQorCisgICAgICByZXR1cm4gJ2NvbnRhaW5l
ci5wcm9ncmFtKCcgKyBwcm9ncmFtUGFyYW1zLmpvaW4oJywgJykgKyAnKSc7CisgICAgfSwKKwor
ICAgIHVzZVJlZ2lzdGVyOiBmdW5jdGlvbiB1c2VSZWdpc3RlcihuYW1lKSB7CisgICAgICBpZiAo
IXRoaXMucmVnaXN0ZXJzW25hbWVdKSB7CisgICAgICAgIHRoaXMucmVnaXN0ZXJzW25hbWVdID0g
dHJ1ZTsKKyAgICAgICAgdGhpcy5yZWdpc3RlcnMubGlzdC5wdXNoKG5hbWUpOworICAgICAgfQor
ICAgIH0sCisKKyAgICBwdXNoOiBmdW5jdGlvbiBwdXNoKGV4cHIpIHsKKyAgICAgIGlmICghKGV4
cHIgaW5zdGFuY2VvZiBMaXRlcmFsKSkgeworICAgICAgICBleHByID0gdGhpcy5zb3VyY2Uud3Jh
cChleHByKTsKKyAgICAgIH0KKworICAgICAgdGhpcy5pbmxpbmVTdGFjay5wdXNoKGV4cHIpOwor
ICAgICAgcmV0dXJuIGV4cHI7CisgICAgfSwKKworICAgIHB1c2hTdGFja0xpdGVyYWw6IGZ1bmN0
aW9uIHB1c2hTdGFja0xpdGVyYWwoaXRlbSkgeworICAgICAgdGhpcy5wdXNoKG5ldyBMaXRlcmFs
KGl0ZW0pKTsKKyAgICB9LAorCisgICAgcHVzaFNvdXJjZTogZnVuY3Rpb24gcHVzaFNvdXJjZShz
b3VyY2UpIHsKKyAgICAgIGlmICh0aGlzLnBlbmRpbmdDb250ZW50KSB7CisgICAgICAgIHRoaXMu
c291cmNlLnB1c2godGhpcy5hcHBlbmRUb0J1ZmZlcih0aGlzLnNvdXJjZS5xdW90ZWRTdHJpbmco
dGhpcy5wZW5kaW5nQ29udGVudCksIHRoaXMucGVuZGluZ0xvY2F0aW9uKSk7CisgICAgICAgIHRo
aXMucGVuZGluZ0NvbnRlbnQgPSB1bmRlZmluZWQ7CisgICAgICB9CisKKyAgICAgIGlmIChzb3Vy
Y2UpIHsKKyAgICAgICAgdGhpcy5zb3VyY2UucHVzaChzb3VyY2UpOworICAgICAgfQorICAgIH0s
CisKKyAgICByZXBsYWNlU3RhY2s6IGZ1bmN0aW9uIHJlcGxhY2VTdGFjayhjYWxsYmFjaykgewor
ICAgICAgdmFyIHByZWZpeCA9IFsnKCddLAorICAgICAgICAgIHN0YWNrID0gdW5kZWZpbmVkLAor
ICAgICAgICAgIGNyZWF0ZWRTdGFjayA9IHVuZGVmaW5lZCwKKyAgICAgICAgICB1c2VkTGl0ZXJh
bCA9IHVuZGVmaW5lZDsKKworICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8KKyAgICAg
IGlmICghdGhpcy5pc0lubGluZSgpKSB7CisgICAgICAgIHRocm93IG5ldyBfRXhjZXB0aW9uWydk
ZWZhdWx0J10oJ3JlcGxhY2VTdGFjayBvbiBub24taW5saW5lJyk7CisgICAgICB9CisKKyAgICAg
IC8vIFdlIHdhbnQgdG8gbWVyZ2UgdGhlIGlubGluZSBzdGF0ZW1lbnQgaW50byB0aGUgcmVwbGFj
ZW1lbnQgc3RhdGVtZW50IHZpYSAnLCcKKyAgICAgIHZhciB0b3AgPSB0aGlzLnBvcFN0YWNrKHRy
dWUpOworCisgICAgICBpZiAodG9wIGluc3RhbmNlb2YgTGl0ZXJhbCkgeworICAgICAgICAvLyBM
aXRlcmFscyBkbyBub3QgbmVlZCB0byBiZSBpbmxpbmVkCisgICAgICAgIHN0YWNrID0gW3RvcC52
YWx1ZV07CisgICAgICAgIHByZWZpeCA9IFsnKCcsIHN0YWNrXTsKKyAgICAgICAgdXNlZExpdGVy
YWwgPSB0cnVlOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gR2V0IG9yIGNyZWF0ZSB0aGUg
Y3VycmVudCBzdGFjayBuYW1lIGZvciB1c2UgYnkgdGhlIGlubGluZQorICAgICAgICBjcmVhdGVk
U3RhY2sgPSB0cnVlOworICAgICAgICB2YXIgX25hbWUgPSB0aGlzLmluY3JTdGFjaygpOworCisg
ICAgICAgIHByZWZpeCA9IFsnKCgnLCB0aGlzLnB1c2goX25hbWUpLCAnID0gJywgdG9wLCAnKSdd
OworICAgICAgICBzdGFjayA9IHRoaXMudG9wU3RhY2soKTsKKyAgICAgIH0KKworICAgICAgdmFy
IGl0ZW0gPSBjYWxsYmFjay5jYWxsKHRoaXMsIHN0YWNrKTsKKworICAgICAgaWYgKCF1c2VkTGl0
ZXJhbCkgeworICAgICAgICB0aGlzLnBvcFN0YWNrKCk7CisgICAgICB9CisgICAgICBpZiAoY3Jl
YXRlZFN0YWNrKSB7CisgICAgICAgIHRoaXMuc3RhY2tTbG90LS07CisgICAgICB9CisgICAgICB0
aGlzLnB1c2gocHJlZml4LmNvbmNhdChpdGVtLCAnKScpKTsKKyAgICB9LAorCisgICAgaW5jclN0
YWNrOiBmdW5jdGlvbiBpbmNyU3RhY2soKSB7CisgICAgICB0aGlzLnN0YWNrU2xvdCsrOworICAg
ICAgaWYgKHRoaXMuc3RhY2tTbG90ID4gdGhpcy5zdGFja1ZhcnMubGVuZ3RoKSB7CisgICAgICAg
IHRoaXMuc3RhY2tWYXJzLnB1c2goJ3N0YWNrJyArIHRoaXMuc3RhY2tTbG90KTsKKyAgICAgIH0K
KyAgICAgIHJldHVybiB0aGlzLnRvcFN0YWNrTmFtZSgpOworICAgIH0sCisgICAgdG9wU3RhY2tO
YW1lOiBmdW5jdGlvbiB0b3BTdGFja05hbWUoKSB7CisgICAgICByZXR1cm4gJ3N0YWNrJyArIHRo
aXMuc3RhY2tTbG90OworICAgIH0sCisgICAgZmx1c2hJbmxpbmU6IGZ1bmN0aW9uIGZsdXNoSW5s
aW5lKCkgeworICAgICAgdmFyIGlubGluZVN0YWNrID0gdGhpcy5pbmxpbmVTdGFjazsKKyAgICAg
IHRoaXMuaW5saW5lU3RhY2sgPSBbXTsKKyAgICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBpbmxp
bmVTdGFjay5sZW5ndGg7IGkgPCBsZW47IGkrKykgeworICAgICAgICB2YXIgZW50cnkgPSBpbmxp
bmVTdGFja1tpXTsKKyAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovCisgICAgICAgIGlm
IChlbnRyeSBpbnN0YW5jZW9mIExpdGVyYWwpIHsKKyAgICAgICAgICB0aGlzLmNvbXBpbGVTdGFj
ay5wdXNoKGVudHJ5KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICB2YXIgc3RhY2sgPSB0
aGlzLmluY3JTdGFjaygpOworICAgICAgICAgIHRoaXMucHVzaFNvdXJjZShbc3RhY2ssICcgPSAn
LCBlbnRyeSwgJzsnXSk7CisgICAgICAgICAgdGhpcy5jb21waWxlU3RhY2sucHVzaChzdGFjayk7
CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LAorICAgIGlzSW5saW5lOiBmdW5jdGlvbiBpc0lu
bGluZSgpIHsKKyAgICAgIHJldHVybiB0aGlzLmlubGluZVN0YWNrLmxlbmd0aDsKKyAgICB9LAor
CisgICAgcG9wU3RhY2s6IGZ1bmN0aW9uIHBvcFN0YWNrKHdyYXBwZWQpIHsKKyAgICAgIHZhciBp
bmxpbmUgPSB0aGlzLmlzSW5saW5lKCksCisgICAgICAgICAgaXRlbSA9IChpbmxpbmUgPyB0aGlz
LmlubGluZVN0YWNrIDogdGhpcy5jb21waWxlU3RhY2spLnBvcCgpOworCisgICAgICBpZiAoIXdy
YXBwZWQgJiYgaXRlbSBpbnN0YW5jZW9mIExpdGVyYWwpIHsKKyAgICAgICAgcmV0dXJuIGl0ZW0u
dmFsdWU7CisgICAgICB9IGVsc2UgeworICAgICAgICBpZiAoIWlubGluZSkgeworICAgICAgICAg
IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovCisgICAgICAgICAgaWYgKCF0aGlzLnN0YWNrU2xv
dCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IF9FeGNlcHRpb25bJ2RlZmF1bHQnXSgnSW52YWxp
ZCBzdGFjayBwb3AnKTsKKyAgICAgICAgICB9CisgICAgICAgICAgdGhpcy5zdGFja1Nsb3QtLTsK
KyAgICAgICAgfQorICAgICAgICByZXR1cm4gaXRlbTsKKyAgICAgIH0KKyAgICB9LAorCisgICAg
dG9wU3RhY2s6IGZ1bmN0aW9uIHRvcFN0YWNrKCkgeworICAgICAgdmFyIHN0YWNrID0gdGhpcy5p
c0lubGluZSgpID8gdGhpcy5pbmxpbmVTdGFjayA6IHRoaXMuY29tcGlsZVN0YWNrLAorICAgICAg
ICAgIGl0ZW0gPSBzdGFja1tzdGFjay5sZW5ndGggLSAxXTsKKworICAgICAgLyogaXN0YW5idWwg
aWdub3JlIGlmICovCisgICAgICBpZiAoaXRlbSBpbnN0YW5jZW9mIExpdGVyYWwpIHsKKyAgICAg
ICAgcmV0dXJuIGl0ZW0udmFsdWU7CisgICAgICB9IGVsc2UgeworICAgICAgICByZXR1cm4gaXRl
bTsKKyAgICAgIH0KKyAgICB9LAorCisgICAgY29udGV4dE5hbWU6IGZ1bmN0aW9uIGNvbnRleHRO
YW1lKGNvbnRleHQpIHsKKyAgICAgIGlmICh0aGlzLnVzZURlcHRocyAmJiBjb250ZXh0KSB7Cisg
ICAgICAgIHJldHVybiAnZGVwdGhzWycgKyBjb250ZXh0ICsgJ10nOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcmV0dXJuICdkZXB0aCcgKyBjb250ZXh0OworICAgICAgfQorICAgIH0sCisKKyAg
ICBxdW90ZWRTdHJpbmc6IGZ1bmN0aW9uIHF1b3RlZFN0cmluZyhzdHIpIHsKKyAgICAgIHJldHVy
biB0aGlzLnNvdXJjZS5xdW90ZWRTdHJpbmcoc3RyKTsKKyAgICB9LAorCisgICAgb2JqZWN0TGl0
ZXJhbDogZnVuY3Rpb24gb2JqZWN0TGl0ZXJhbChvYmopIHsKKyAgICAgIHJldHVybiB0aGlzLnNv
dXJjZS5vYmplY3RMaXRlcmFsKG9iaik7CisgICAgfSwKKworICAgIGFsaWFzYWJsZTogZnVuY3Rp
b24gYWxpYXNhYmxlKG5hbWUpIHsKKyAgICAgIHZhciByZXQgPSB0aGlzLmFsaWFzZXNbbmFtZV07
CisgICAgICBpZiAocmV0KSB7CisgICAgICAgIHJldC5yZWZlcmVuY2VDb3VudCsrOworICAgICAg
ICByZXR1cm4gcmV0OworICAgICAgfQorCisgICAgICByZXQgPSB0aGlzLmFsaWFzZXNbbmFtZV0g
PSB0aGlzLnNvdXJjZS53cmFwKG5hbWUpOworICAgICAgcmV0LmFsaWFzYWJsZSA9IHRydWU7Cisg
ICAgICByZXQucmVmZXJlbmNlQ291bnQgPSAxOworCisgICAgICByZXR1cm4gcmV0OworICAgIH0s
CisKKyAgICBzZXR1cEhlbHBlcjogZnVuY3Rpb24gc2V0dXBIZWxwZXIocGFyYW1TaXplLCBuYW1l
LCBibG9ja0hlbHBlcikgeworICAgICAgdmFyIHBhcmFtcyA9IFtdLAorICAgICAgICAgIHBhcmFt
c0luaXQgPSB0aGlzLnNldHVwSGVscGVyQXJncyhuYW1lLCBwYXJhbVNpemUsIHBhcmFtcywgYmxv
Y2tIZWxwZXIpOworICAgICAgdmFyIGZvdW5kSGVscGVyID0gdGhpcy5uYW1lTG9va3VwKCdoZWxw
ZXJzJywgbmFtZSwgJ2hlbHBlcicpLAorICAgICAgICAgIGNhbGxDb250ZXh0ID0gdGhpcy5hbGlh
c2FibGUodGhpcy5jb250ZXh0TmFtZSgwKSArICcgIT0gbnVsbCA/ICcgKyB0aGlzLmNvbnRleHRO
YW1lKDApICsgJyA6IHt9Jyk7CisKKyAgICAgIHJldHVybiB7CisgICAgICAgIHBhcmFtczogcGFy
YW1zLAorICAgICAgICBwYXJhbXNJbml0OiBwYXJhbXNJbml0LAorICAgICAgICBuYW1lOiBmb3Vu
ZEhlbHBlciwKKyAgICAgICAgY2FsbFBhcmFtczogW2NhbGxDb250ZXh0XS5jb25jYXQocGFyYW1z
KQorICAgICAgfTsKKyAgICB9LAorCisgICAgc2V0dXBQYXJhbXM6IGZ1bmN0aW9uIHNldHVwUGFy
YW1zKGhlbHBlciwgcGFyYW1TaXplLCBwYXJhbXMpIHsKKyAgICAgIHZhciBvcHRpb25zID0ge30s
CisgICAgICAgICAgY29udGV4dHMgPSBbXSwKKyAgICAgICAgICB0eXBlcyA9IFtdLAorICAgICAg
ICAgIGlkcyA9IFtdLAorICAgICAgICAgIG9iamVjdEFyZ3MgPSAhcGFyYW1zLAorICAgICAgICAg
IHBhcmFtID0gdW5kZWZpbmVkOworCisgICAgICBpZiAob2JqZWN0QXJncykgeworICAgICAgICBw
YXJhbXMgPSBbXTsKKyAgICAgIH0KKworICAgICAgb3B0aW9ucy5uYW1lID0gdGhpcy5xdW90ZWRT
dHJpbmcoaGVscGVyKTsKKyAgICAgIG9wdGlvbnMuaGFzaCA9IHRoaXMucG9wU3RhY2soKTsKKwor
ICAgICAgaWYgKHRoaXMudHJhY2tJZHMpIHsKKyAgICAgICAgb3B0aW9ucy5oYXNoSWRzID0gdGhp
cy5wb3BTdGFjaygpOworICAgICAgfQorICAgICAgaWYgKHRoaXMuc3RyaW5nUGFyYW1zKSB7Cisg
ICAgICAgIG9wdGlvbnMuaGFzaFR5cGVzID0gdGhpcy5wb3BTdGFjaygpOworICAgICAgICBvcHRp
b25zLmhhc2hDb250ZXh0cyA9IHRoaXMucG9wU3RhY2soKTsKKyAgICAgIH0KKworICAgICAgdmFy
IGludmVyc2UgPSB0aGlzLnBvcFN0YWNrKCksCisgICAgICAgICAgcHJvZ3JhbSA9IHRoaXMucG9w
U3RhY2soKTsKKworICAgICAgLy8gQXZvaWQgc2V0dGluZyBmbiBhbmQgaW52ZXJzZSBpZiBuZWl0
aGVyIGFyZSBzZXQuIFRoaXMgYWxsb3dzCisgICAgICAvLyBoZWxwZXJzIHRvIGRvIGEgY2hlY2sg
Zm9yIGBpZiAob3B0aW9ucy5mbilgCisgICAgICBpZiAocHJvZ3JhbSB8fCBpbnZlcnNlKSB7Cisg
ICAgICAgIG9wdGlvbnMuZm4gPSBwcm9ncmFtIHx8ICdjb250YWluZXIubm9vcCc7CisgICAgICAg
IG9wdGlvbnMuaW52ZXJzZSA9IGludmVyc2UgfHwgJ2NvbnRhaW5lci5ub29wJzsKKyAgICAgIH0K
KworICAgICAgLy8gVGhlIHBhcmFtZXRlcnMgZ28gb24gdG8gdGhlIHN0YWNrIGluIG9yZGVyICht
YWtpbmcgc3VyZSB0aGF0IHRoZXkgYXJlIGV2YWx1YXRlZCBpbiBvcmRlcikKKyAgICAgIC8vIHNv
IHdlIG5lZWQgdG8gcG9wIHRoZW0gb2ZmIHRoZSBzdGFjayBpbiByZXZlcnNlIG9yZGVyCisgICAg
ICB2YXIgaSA9IHBhcmFtU2l6ZTsKKyAgICAgIHdoaWxlIChpLS0pIHsKKyAgICAgICAgcGFyYW0g
PSB0aGlzLnBvcFN0YWNrKCk7CisgICAgICAgIHBhcmFtc1tpXSA9IHBhcmFtOworCisgICAgICAg
IGlmICh0aGlzLnRyYWNrSWRzKSB7CisgICAgICAgICAgaWRzW2ldID0gdGhpcy5wb3BTdGFjaygp
OworICAgICAgICB9CisgICAgICAgIGlmICh0aGlzLnN0cmluZ1BhcmFtcykgeworICAgICAgICAg
IHR5cGVzW2ldID0gdGhpcy5wb3BTdGFjaygpOworICAgICAgICAgIGNvbnRleHRzW2ldID0gdGhp
cy5wb3BTdGFjaygpOworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIGlmIChvYmplY3RBcmdz
KSB7CisgICAgICAgIG9wdGlvbnMuYXJncyA9IHRoaXMuc291cmNlLmdlbmVyYXRlQXJyYXkocGFy
YW1zKTsKKyAgICAgIH0KKworICAgICAgaWYgKHRoaXMudHJhY2tJZHMpIHsKKyAgICAgICAgb3B0
aW9ucy5pZHMgPSB0aGlzLnNvdXJjZS5nZW5lcmF0ZUFycmF5KGlkcyk7CisgICAgICB9CisgICAg
ICBpZiAodGhpcy5zdHJpbmdQYXJhbXMpIHsKKyAgICAgICAgb3B0aW9ucy50eXBlcyA9IHRoaXMu
c291cmNlLmdlbmVyYXRlQXJyYXkodHlwZXMpOworICAgICAgICBvcHRpb25zLmNvbnRleHRzID0g
dGhpcy5zb3VyY2UuZ2VuZXJhdGVBcnJheShjb250ZXh0cyk7CisgICAgICB9CisKKyAgICAgIGlm
ICh0aGlzLm9wdGlvbnMuZGF0YSkgeworICAgICAgICBvcHRpb25zLmRhdGEgPSAnZGF0YSc7Cisg
ICAgICB9CisgICAgICBpZiAodGhpcy51c2VCbG9ja1BhcmFtcykgeworICAgICAgICBvcHRpb25z
LmJsb2NrUGFyYW1zID0gJ2Jsb2NrUGFyYW1zJzsKKyAgICAgIH0KKyAgICAgIHJldHVybiBvcHRp
b25zOworICAgIH0sCisKKyAgICBzZXR1cEhlbHBlckFyZ3M6IGZ1bmN0aW9uIHNldHVwSGVscGVy
QXJncyhoZWxwZXIsIHBhcmFtU2l6ZSwgcGFyYW1zLCB1c2VSZWdpc3RlcikgeworICAgICAgdmFy
IG9wdGlvbnMgPSB0aGlzLnNldHVwUGFyYW1zKGhlbHBlciwgcGFyYW1TaXplLCBwYXJhbXMpOwor
ICAgICAgb3B0aW9ucyA9IHRoaXMub2JqZWN0TGl0ZXJhbChvcHRpb25zKTsKKyAgICAgIGlmICh1
c2VSZWdpc3RlcikgeworICAgICAgICB0aGlzLnVzZVJlZ2lzdGVyKCdvcHRpb25zJyk7CisgICAg
ICAgIHBhcmFtcy5wdXNoKCdvcHRpb25zJyk7CisgICAgICAgIHJldHVybiBbJ29wdGlvbnM9Jywg
b3B0aW9uc107CisgICAgICB9IGVsc2UgaWYgKHBhcmFtcykgeworICAgICAgICBwYXJhbXMucHVz
aChvcHRpb25zKTsKKyAgICAgICAgcmV0dXJuICcnOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cmV0dXJuIG9wdGlvbnM7CisgICAgICB9CisgICAgfQorICB9OworCisgIChmdW5jdGlvbiAoKSB7
CisgICAgdmFyIHJlc2VydmVkV29yZHMgPSAoJ2JyZWFrIGVsc2UgbmV3IHZhcicgKyAnIGNhc2Ug
ZmluYWxseSByZXR1cm4gdm9pZCcgKyAnIGNhdGNoIGZvciBzd2l0Y2ggd2hpbGUnICsgJyBjb250
aW51ZSBmdW5jdGlvbiB0aGlzIHdpdGgnICsgJyBkZWZhdWx0IGlmIHRocm93JyArICcgZGVsZXRl
IGluIHRyeScgKyAnIGRvIGluc3RhbmNlb2YgdHlwZW9mJyArICcgYWJzdHJhY3QgZW51bSBpbnQg
c2hvcnQnICsgJyBib29sZWFuIGV4cG9ydCBpbnRlcmZhY2Ugc3RhdGljJyArICcgYnl0ZSBleHRl
bmRzIGxvbmcgc3VwZXInICsgJyBjaGFyIGZpbmFsIG5hdGl2ZSBzeW5jaHJvbml6ZWQnICsgJyBj
bGFzcyBmbG9hdCBwYWNrYWdlIHRocm93cycgKyAnIGNvbnN0IGdvdG8gcHJpdmF0ZSB0cmFuc2ll
bnQnICsgJyBkZWJ1Z2dlciBpbXBsZW1lbnRzIHByb3RlY3RlZCB2b2xhdGlsZScgKyAnIGRvdWJs
ZSBpbXBvcnQgcHVibGljIGxldCB5aWVsZCBhd2FpdCcgKyAnIG51bGwgdHJ1ZSBmYWxzZScpLnNw
bGl0KCcgJyk7CisKKyAgICB2YXIgY29tcGlsZXJXb3JkcyA9IEphdmFTY3JpcHRDb21waWxlci5S
RVNFUlZFRF9XT1JEUyA9IHt9OworCisgICAgZm9yICh2YXIgaSA9IDAsIGwgPSByZXNlcnZlZFdv
cmRzLmxlbmd0aDsgaSA8IGw7IGkrKykgeworICAgICAgY29tcGlsZXJXb3Jkc1tyZXNlcnZlZFdv
cmRzW2ldXSA9IHRydWU7CisgICAgfQorICB9KSgpOworCisgIEphdmFTY3JpcHRDb21waWxlci5p
c1ZhbGlkSmF2YVNjcmlwdFZhcmlhYmxlTmFtZSA9IGZ1bmN0aW9uIChuYW1lKSB7CisgICAgcmV0
dXJuICFKYXZhU2NyaXB0Q29tcGlsZXIuUkVTRVJWRURfV09SRFNbbmFtZV0gJiYgL15bYS16QS1a
XyRdWzAtOWEtekEtWl8kXSokLy50ZXN0KG5hbWUpOworICB9OworCisgIGZ1bmN0aW9uIHN0cmlj
dExvb2t1cChyZXF1aXJlVGVybWluYWwsIGNvbXBpbGVyLCBwYXJ0cywgdHlwZSkgeworICAgIHZh
ciBzdGFjayA9IGNvbXBpbGVyLnBvcFN0YWNrKCksCisgICAgICAgIGkgPSAwLAorICAgICAgICBs
ZW4gPSBwYXJ0cy5sZW5ndGg7CisgICAgaWYgKHJlcXVpcmVUZXJtaW5hbCkgeworICAgICAgbGVu
LS07CisgICAgfQorCisgICAgZm9yICg7IGkgPCBsZW47IGkrKykgeworICAgICAgc3RhY2sgPSBj
b21waWxlci5uYW1lTG9va3VwKHN0YWNrLCBwYXJ0c1tpXSwgdHlwZSk7CisgICAgfQorCisgICAg
aWYgKHJlcXVpcmVUZXJtaW5hbCkgeworICAgICAgcmV0dXJuIFtjb21waWxlci5hbGlhc2FibGUo
J2NvbnRhaW5lci5zdHJpY3QnKSwgJygnLCBzdGFjaywgJywgJywgY29tcGlsZXIucXVvdGVkU3Ry
aW5nKHBhcnRzW2ldKSwgJyknXTsKKyAgICB9IGVsc2UgeworICAgICAgcmV0dXJuIHN0YWNrOwor
ICAgIH0KKyAgfQorCisgIG1vZHVsZS5leHBvcnRzID0gSmF2YVNjcmlwdENvbXBpbGVyOworfSk7
CisvLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJa
WEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMeTR1THk0dUwyeHBZaTlvWVc1a2JH
VmlZWEp6TDJOdmJYQnBiR1Z5TDJwaGRtRnpZM0pwY0hRdFkyOXRjR2xzWlhJdWFuTWlYU3dpYm1G
dFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqczdPenM3T3pzN096czdRVUZMUVN4WFFVRlRMRTlC
UVU4c1EwRkJReXhMUVVGTExFVkJRVVU3UVVGRGRFSXNVVUZCU1N4RFFVRkRMRXRCUVVzc1IwRkJS
eXhMUVVGTExFTkJRVU03UjBGRGNFSTdPMEZCUlVRc1YwRkJVeXhyUWtGQmEwSXNSMEZCUnl4RlFV
RkZPenRCUVVWb1F5eHZRa0ZCYTBJc1EwRkJReXhUUVVGVExFZEJRVWM3T3p0QlFVYzNRaXhqUVVG
VkxFVkJRVVVzYjBKQlFWTXNUVUZCVFN4RlFVRkZMRWxCUVVrc1kwRkJZVHRCUVVNMVF5eFZRVUZK
TEd0Q1FVRnJRaXhEUVVGRExEWkNRVUUyUWl4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRk8wRkJR
ekZFTEdWQlFVOHNRMEZCUXl4TlFVRk5MRVZCUVVVc1IwRkJSeXhGUVVGRkxFbEJRVWtzUTBGQlF5
eERRVUZETzA5QlF6VkNMRTFCUVUwN1FVRkRUQ3hsUVVGUExFTkJRVU1zVFVGQlRTeEZRVUZGTEVk
QlFVY3NSVUZCUlN4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZG
TEVkQlFVY3NRMEZCUXl4RFFVRkRPMDlCUTJwRU8wdEJRMFk3UVVGRFJDeHBRa0ZCWVN4RlFVRkZM
SFZDUVVGVExFbEJRVWtzUlVGQlJUdEJRVU0xUWl4aFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExG
TkJRVk1zUTBGQlF5eHJRa0ZCYTBJc1EwRkJReXhGUVVGRkxGbEJRVmtzUlVGQlJTeEpRVUZKTEVW
QlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNN1MwRkRka1U3TzBGQlJVUXNaMEpCUVZrc1JVRkJSU3gz
UWtGQlZ6dEJRVU4yUWl4VlFVRk5MRkZCUVZFc1UwRXhRbFFzYVVKQlFXbENMRUZCTUVKWk8xVkJR
elZDTEZGQlFWRXNSMEZCUnl4TlFUTkNUeXhuUWtGQlowSXNRMEV5UWs0c1VVRkJVU3hEUVVGRExF
TkJRVU03UVVGRE5VTXNZVUZCVHl4RFFVRkRMRkZCUVZFc1JVRkJSU3hSUVVGUkxFTkJRVU1zUTBG
QlF6dExRVU0zUWpzN1FVRkZSQ3hyUWtGQll5eEZRVUZGTEhkQ1FVRlRMRTFCUVUwc1JVRkJSU3hS
UVVGUkxFVkJRVVVzVVVGQlVTeEZRVUZGT3p0QlFVVnVSQ3hWUVVGSkxFTkJRVU1zVDBFdlFrUXNU
MEZCVHl4RFFTdENSU3hOUVVGTkxFTkJRVU1zUlVGQlJUdEJRVU53UWl4alFVRk5MRWRCUVVjc1Ew
RkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dFBRVU51UWp0QlFVTkVMRmxCUVUwc1IwRkJSeXhKUVVG
SkxFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1VVRkJVU3hE
UVVGRExFTkJRVU03TzBGQlJUVkRMRlZCUVVrc1NVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF5eFJR
VUZSTEVWQlFVVTdRVUZETjBJc1pVRkJUeXhEUVVGRExGTkJRVk1zUlVGQlJTeE5RVUZOTEVWQlFV
VXNSMEZCUnl4RFFVRkRMRU5CUVVNN1QwRkRha01zVFVGQlRTeEpRVUZKTEZGQlFWRXNSVUZCUlRz
N096dEJRVWx1UWl4bFFVRlBMRU5CUVVNc1dVRkJXU3hGUVVGRkxFMUJRVTBzUlVGQlJTeEhRVUZI
TEVOQlFVTXNRMEZCUXp0UFFVTndReXhOUVVGTk8wRkJRMHdzWTBGQlRTeERRVUZETEdOQlFXTXNS
MEZCUnl4SlFVRkpMRU5CUVVNN1FVRkROMElzWlVGQlR5eE5RVUZOTEVOQlFVTTdUMEZEWmp0TFFV
TkdPenRCUVVWRUxHOUNRVUZuUWl4RlFVRkZMRFJDUVVGWE8wRkJRek5DTEdGQlFVOHNTVUZCU1N4
RFFVRkRMRmxCUVZrc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF6dExRVU01UWpzN08wRkJSMFFz
VjBGQlR5eEZRVUZGTEdsQ1FVRlRMRmRCUVZjc1JVRkJSU3hQUVVGUExFVkJRVVVzVDBGQlR5eEZR
VUZGTEZGQlFWRXNSVUZCUlR0QlFVTjZSQ3hWUVVGSkxFTkJRVU1zVjBGQlZ5eEhRVUZITEZkQlFW
Y3NRMEZCUXp0QlFVTXZRaXhWUVVGSkxFTkJRVU1zVDBGQlR5eEhRVUZITEU5QlFVOHNRMEZCUXp0
QlFVTjJRaXhWUVVGSkxFTkJRVU1zV1VGQldTeEhRVUZITEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5C
UVVNc1dVRkJXU3hEUVVGRE8wRkJRemxETEZWQlFVa3NRMEZCUXl4UlFVRlJMRWRCUVVjc1NVRkJT
U3hEUVVGRExFOUJRVThzUTBGQlF5eFJRVUZSTEVOQlFVTTdRVUZEZEVNc1ZVRkJTU3hEUVVGRExG
VkJRVlVzUjBGQlJ5eERRVUZETEZGQlFWRXNRMEZCUXpzN1FVRkZOVUlzVlVGQlNTeERRVUZETEVs
QlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNc1YwRkJWeXhEUVVGRExFbEJRVWtzUTBGQlF6dEJRVU5z
UXl4VlFVRkpMRU5CUVVNc1QwRkJUeXhIUVVGSExFTkJRVU1zUTBGQlF5eFBRVUZQTEVOQlFVTTdR
VUZEZWtJc1ZVRkJTU3hEUVVGRExFOUJRVThzUjBGQlJ5eFBRVUZQTEVsQlFVazdRVUZEZUVJc2Ew
SkJRVlVzUlVGQlJTeEZRVUZGTzBGQlEyUXNaMEpCUVZFc1JVRkJSU3hGUVVGRk8wRkJRMW9zYjBK
QlFWa3NSVUZCUlN4RlFVRkZPMDlCUTJwQ0xFTkJRVU03TzBGQlJVWXNWVUZCU1N4RFFVRkRMRkZC
UVZFc1JVRkJSU3hEUVVGRE96dEJRVVZvUWl4VlFVRkpMRU5CUVVNc1UwRkJVeXhIUVVGSExFTkJR
VU1zUTBGQlF6dEJRVU51UWl4VlFVRkpMRU5CUVVNc1UwRkJVeXhIUVVGSExFVkJRVVVzUTBGQlF6
dEJRVU53UWl4VlFVRkpMRU5CUVVNc1QwRkJUeXhIUVVGSExFVkJRVVVzUTBGQlF6dEJRVU5zUWl4
VlFVRkpMRU5CUVVNc1UwRkJVeXhIUVVGSExFVkJRVVVzU1VGQlNTeEZRVUZGTEVWQlFVVXNSVUZC
UlN4RFFVRkRPMEZCUXpsQ0xGVkJRVWtzUTBGQlF5eE5RVUZOTEVkQlFVY3NSVUZCUlN4RFFVRkRP
MEZCUTJwQ0xGVkJRVWtzUTBGQlF5eFpRVUZaTEVkQlFVY3NSVUZCUlN4RFFVRkRPMEZCUTNaQ0xG
VkJRVWtzUTBGQlF5eFhRVUZYTEVkQlFVY3NSVUZCUlN4RFFVRkRPMEZCUTNSQ0xGVkJRVWtzUTBG
QlF5eFhRVUZYTEVkQlFVY3NSVUZCUlN4RFFVRkRPenRCUVVWMFFpeFZRVUZKTEVOQlFVTXNaVUZC
WlN4RFFVRkRMRmRCUVZjc1JVRkJSU3hQUVVGUExFTkJRVU1zUTBGQlF6czdRVUZGTTBNc1ZVRkJT
U3hEUVVGRExGTkJRVk1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNVMEZCVXl4SlFVRkpMRmRCUVZjc1Ew
RkJReXhUUVVGVExFbEJRVWtzVjBGQlZ5eERRVUZETEdGQlFXRXNTVUZCU1N4SlFVRkpMRU5CUVVN
c1QwRkJUeXhEUVVGRExFMUJRVTBzUTBGQlF6dEJRVU0zUnl4VlFVRkpMRU5CUVVNc1kwRkJZeXhI
UVVGSExFbEJRVWtzUTBGQlF5eGpRVUZqTEVsQlFVa3NWMEZCVnl4RFFVRkRMR05CUVdNc1EwRkJR
enM3UVVGRmVFVXNWVUZCU1N4UFFVRlBMRWRCUVVjc1YwRkJWeXhEUVVGRExFOUJRVTg3VlVGRE4w
SXNUVUZCVFN4WlFVRkJPMVZCUTA0c1VVRkJVU3haUVVGQk8xVkJRMUlzUTBGQlF5eFpRVUZCTzFW
QlEwUXNRMEZCUXl4WlFVRkJMRU5CUVVNN08wRkJSVTRzVjBGQlN5eERRVUZETEVkQlFVY3NRMEZC
UXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhQUVVGUExFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTXNS
MEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3UVVGRE1VTXNZMEZCVFN4SFFV
RkhMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6czdRVUZGY0VJc1dVRkJTU3hEUVVG
RExFMUJRVTBzUTBGQlF5eGxRVUZsTEVkQlFVY3NUVUZCVFN4RFFVRkRMRWRCUVVjc1EwRkJRenRC
UVVONlF5eG5Ra0ZCVVN4SFFVRkhMRkZCUVZFc1NVRkJTU3hOUVVGTkxFTkJRVU1zUjBGQlJ5eERR
VUZETzBGQlEyeERMRmxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFV
TXNTMEZCU3l4RFFVRkRMRWxCUVVrc1JVRkJSU3hOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEVO
QlFVTTdUMEZET1VNN096dEJRVWRFTEZWQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1pVRkJaU3hI
UVVGSExGRkJRVkVzUTBGQlF6dEJRVU4yUXl4VlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRExFVkJR
VVVzUTBGQlF5eERRVUZET3pzN1FVRkhjRUlzVlVGQlNTeEpRVUZKTEVOQlFVTXNVMEZCVXl4SlFV
RkpMRWxCUVVrc1EwRkJReXhYUVVGWExFTkJRVU1zVFVGQlRTeEpRVUZKTEVsQlFVa3NRMEZCUXl4
WlFVRlpMRU5CUVVNc1RVRkJUU3hGUVVGRk8wRkJRM3BGTEdOQlFVMHNNRUpCUVdNc09FTkJRVGhE
TEVOQlFVTXNRMEZCUXp0UFFVTnlSVHM3UVVGRlJDeFZRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRM
RlZCUVZVc1EwRkJReXhQUVVGUExFVkJRVVVzUlVGQlJUdEJRVU01UWl4WlFVRkpMRU5CUVVNc1lV
RkJZU3hIUVVGSExFbEJRVWtzUTBGQlF6czdRVUZGTVVJc1dVRkJTU3hEUVVGRExGVkJRVlVzUTBG
QlF5eFBRVUZQTEVOQlFVTXNNRU5CUVRCRExFTkJRVU1zUTBGQlF6dEJRVU53UlN4WlFVRkpMRU5C
UVVNc1ZVRkJWU3hEUVVGRExFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTXNRMEZCUXpzN1FVRkZi
a01zV1VGQlNTeFJRVUZSTEVWQlFVVTdRVUZEV2l4alFVRkpMRU5CUVVNc1ZVRkJWU3hIUVVGSExG
RkJRVkVzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNc1NVRkJTU3hGUVVG
RkxFOUJRVThzUlVGQlJTeFhRVUZYTEVWQlFVVXNVVUZCVVN4RlFVRkZMRTFCUVUwc1JVRkJSU3ho
UVVGaExFVkJRVVVzVVVGQlVTeEZRVUZGTEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1MwRkJT
eXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzFOQlF6RkpMRTFCUVUwN1FVRkRUQ3hqUVVGSkxF
TkJRVU1zVlVGQlZTeERRVUZETEU5QlFVOHNRMEZCUXl4MVJVRkJkVVVzUTBGQlF5eERRVUZETzBG
QlEycEhMR05CUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZC
UXl4RFFVRkRPMEZCUXpWQ0xHTkJRVWtzUTBGQlF5eFZRVUZWTEVkQlFVY3NTVUZCU1N4RFFVRkRM
RlZCUVZVc1EwRkJReXhMUVVGTExFVkJRVVVzUTBGQlF6dFRRVU16UXp0UFFVTkdMRTFCUVUwN1FV
RkRUQ3haUVVGSkxFTkJRVU1zVlVGQlZTeEhRVUZITEZOQlFWTXNRMEZCUXp0UFFVTTNRanM3UVVG
RlJDeFZRVUZKTEVWQlFVVXNSMEZCUnl4SlFVRkpMRU5CUVVNc2NVSkJRWEZDTEVOQlFVTXNVVUZC
VVN4RFFVRkRMRU5CUVVNN1FVRkRPVU1zVlVGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4UFFVRlBM
RVZCUVVVN1FVRkRha0lzV1VGQlNTeEhRVUZITEVkQlFVYzdRVUZEVWl4clFrRkJVU3hGUVVGRkxF
bEJRVWtzUTBGQlF5eFpRVUZaTEVWQlFVVTdRVUZETjBJc1kwRkJTU3hGUVVGRkxFVkJRVVU3VTBG
RFZDeERRVUZET3p0QlFVVkdMRmxCUVVrc1NVRkJTU3hEUVVGRExGVkJRVlVzUlVGQlJUdEJRVU51
UWl4aFFVRkhMRU5CUVVNc1RVRkJUU3hIUVVGSExFbEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTTdR
VUZETjBJc1lVRkJSeXhEUVVGRExHRkJRV0VzUjBGQlJ5eEpRVUZKTEVOQlFVTTdVMEZETVVJN08z
VkNRVVUwUWl4SlFVRkpMRU5CUVVNc1QwRkJUenRaUVVGd1F5eFJRVUZSTEZsQlFWSXNVVUZCVVR0
WlFVRkZMRlZCUVZVc1dVRkJWaXhWUVVGVk96dEJRVU42UWl4aFFVRkxMRU5CUVVNc1IwRkJSeXhE
UVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEZGQlFWRXNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJR
eXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlR0QlFVTXpReXhqUVVGSkxG
RkJRVkVzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlR0QlFVTm1MR1ZCUVVjc1EwRkJReXhEUVVG
RExFTkJRVU1zUjBGQlJ5eFJRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRja0lz
WjBKQlFVa3NWVUZCVlN4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRk8wRkJRMnBDTEdsQ1FVRkhM
RU5CUVVNc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eEhRVUZITEZWQlFWVXNRMEZCUXl4RFFV
RkRMRU5CUVVNc1EwRkJRenRCUVVNNVFpeHBRa0ZCUnl4RFFVRkRMR0ZCUVdFc1IwRkJSeXhKUVVG
SkxFTkJRVU03WVVGRE1VSTdWMEZEUmp0VFFVTkdPenRCUVVWRUxGbEJRVWtzU1VGQlNTeERRVUZE
TEZkQlFWY3NRMEZCUXl4VlFVRlZMRVZCUVVVN1FVRkRMMElzWVVGQlJ5eERRVUZETEZWQlFWVXNS
MEZCUnl4SlFVRkpMRU5CUVVNN1UwRkRka0k3UVVGRFJDeFpRVUZKTEVsQlFVa3NRMEZCUXl4UFFV
RlBMRU5CUVVNc1NVRkJTU3hGUVVGRk8wRkJRM0pDTEdGQlFVY3NRMEZCUXl4UFFVRlBMRWRCUVVj
c1NVRkJTU3hEUVVGRE8xTkJRM0JDTzBGQlEwUXNXVUZCU1N4SlFVRkpMRU5CUVVNc1UwRkJVeXhG
UVVGRk8wRkJRMnhDTEdGQlFVY3NRMEZCUXl4VFFVRlRMRWRCUVVjc1NVRkJTU3hEUVVGRE8xTkJR
M1JDTzBGQlEwUXNXVUZCU1N4SlFVRkpMRU5CUVVNc1kwRkJZeXhGUVVGRk8wRkJRM1pDTEdGQlFV
Y3NRMEZCUXl4alFVRmpMRWRCUVVjc1NVRkJTU3hEUVVGRE8xTkJRek5DTzBGQlEwUXNXVUZCU1N4
SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFMUJRVTBzUlVGQlJUdEJRVU4yUWl4aFFVRkhMRU5C
UVVNc1RVRkJUU3hIUVVGSExFbEJRVWtzUTBGQlF6dFRRVU51UWpzN1FVRkZSQ3haUVVGSkxFTkJR
VU1zVVVGQlVTeEZRVUZGTzBGQlEySXNZVUZCUnl4RFFVRkRMRkZCUVZFc1IwRkJSeXhKUVVGSkxF
TkJRVU1zVTBGQlV5eERRVUZETEVkQlFVY3NRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJRenM3UVVG
Rk5VTXNZMEZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhsUVVGbExFZEJRVWNzUlVGQlF5eExRVUZM
TEVWQlFVVXNSVUZCUXl4SlFVRkpMRVZCUVVVc1EwRkJReXhGUVVGRkxFMUJRVTBzUlVGQlJTeERR
VUZETEVWQlFVTXNSVUZCUXl4RFFVRkRPMEZCUXpWRUxHRkJRVWNzUjBGQlJ5eEpRVUZKTEVOQlFV
TXNZVUZCWVN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE96dEJRVVU1UWl4alFVRkpMRTlCUVU4
c1EwRkJReXhQUVVGUExFVkJRVVU3UVVGRGJrSXNaVUZCUnl4SFFVRkhMRWRCUVVjc1EwRkJReXh4
UWtGQmNVSXNRMEZCUXl4RlFVRkRMRWxCUVVrc1JVRkJSU3hQUVVGUExFTkJRVU1zVVVGQlVTeEZR
VUZETEVOQlFVTXNRMEZCUXp0QlFVTXhSQ3hsUVVGSExFTkJRVU1zUjBGQlJ5eEhRVUZITEVkQlFV
Y3NRMEZCUXl4SFFVRkhMRWxCUVVrc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eFJRVUZSTEVW
QlFVVXNRMEZCUXp0WFFVTjZReXhOUVVGTk8wRkJRMHdzWlVGQlJ5eEhRVUZITEVkQlFVY3NRMEZC
UXl4UlFVRlJMRVZCUVVVc1EwRkJRenRYUVVOMFFqdFRRVU5HTEUxQlFVMDdRVUZEVEN4aFFVRkhM
RU5CUVVNc1pVRkJaU3hIUVVGSExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTTdVMEZEY0VNN08w
RkJSVVFzWlVGQlR5eEhRVUZITEVOQlFVTTdUMEZEV2l4TlFVRk5PMEZCUTB3c1pVRkJUeXhGUVVG
RkxFTkJRVU03VDBGRFdEdExRVU5HT3p0QlFVVkVMRmxCUVZFc1JVRkJSU3h2UWtGQlZ6czdPMEZC
UjI1Q0xGVkJRVWtzUTBGQlF5eFhRVUZYTEVkQlFVY3NRMEZCUXl4RFFVRkRPMEZCUTNKQ0xGVkJR
VWtzUTBGQlF5eE5RVUZOTEVkQlFVY3NkMEpCUVZrc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5
eFBRVUZQTEVOQlFVTXNRMEZCUXp0QlFVTm9SQ3hWUVVGSkxFTkJRVU1zVlVGQlZTeEhRVUZITEhk
Q1FVRlpMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdTMEZE
Y2tRN08wRkJSVVFzZVVKQlFYRkNMRVZCUVVVc0swSkJRVk1zVVVGQlVTeEZRVUZGTzBGQlEzaERM
RlZCUVVrc1pVRkJaU3hIUVVGSExFVkJRVVVzUTBGQlF6czdRVUZGZWtJc1ZVRkJTU3hOUVVGTkxF
ZEJRVWNzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVG
RExGTkJRVk1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0QlFVTjRSQ3hWUVVGSkxFMUJRVTBz
UTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RlFVRkZPMEZCUTNKQ0xIVkNRVUZsTEVsQlFVa3NT
VUZCU1N4SFFVRkhMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFV
TTdUMEZETjBNN096czdPenM3TzBGQlVVUXNWVUZCU1N4VlFVRlZMRWRCUVVjc1EwRkJReXhEUVVG
RE8wRkJRMjVDTEZkQlFVc3NTVUZCU1N4TFFVRkxMRWxCUVVrc1NVRkJTU3hEUVVGRExFOUJRVThz
UlVGQlJUczdRVUZET1VJc1dVRkJTU3hKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETEU5QlFVOHNR
MEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenM3UVVGRkwwSXNXVUZCU1N4SlFVRkpMRU5CUVVNc1Qw
RkJUeXhEUVVGRExHTkJRV01zUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4SlFVRkpMRU5CUVVN
c1VVRkJVU3hKUVVGSkxFbEJRVWtzUTBGQlF5eGpRVUZqTEVkQlFVY3NRMEZCUXl4RlFVRkZPMEZC
UTJ4R0xIbENRVUZsTEVsQlFVa3NVMEZCVXl4SFFVRkpMRVZCUVVVc1ZVRkJWU3hCUVVGRExFZEJR
VWNzUjBGQlJ5eEhRVUZITEV0QlFVc3NRMEZCUXp0QlFVTTFSQ3hqUVVGSkxFTkJRVU1zVVVGQlVT
eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRTlCUVU4c1IwRkJSeXhWUVVGVkxFTkJRVU03VTBG
RGVrTTdUMEZEUmpzN1FVRkZSQ3hWUVVGSkxFMUJRVTBzUjBGQlJ5eERRVUZETEZkQlFWY3NSVUZC
UlN4UlFVRlJMRVZCUVVVc1UwRkJVeXhGUVVGRkxGVkJRVlVzUlVGQlJTeE5RVUZOTEVOQlFVTXNR
MEZCUXpzN1FVRkZjRVVzVlVGQlNTeEpRVUZKTEVOQlFVTXNZMEZCWXl4SlFVRkpMRWxCUVVrc1Ew
RkJReXhUUVVGVExFVkJRVVU3UVVGRGVrTXNZMEZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhoUVVG
aExFTkJRVU1zUTBGQlF6dFBRVU0xUWp0QlFVTkVMRlZCUVVrc1NVRkJTU3hEUVVGRExGTkJRVk1z
UlVGQlJUdEJRVU5zUWl4alFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eERR
VUZETzA5QlEzWkNPenM3UVVGSFJDeFZRVUZKTEUxQlFVMHNSMEZCUnl4SlFVRkpMRU5CUVVNc1Yw
RkJWeXhEUVVGRExHVkJRV1VzUTBGQlF5eERRVUZET3p0QlFVVXZReXhWUVVGSkxGRkJRVkVzUlVG
QlJUdEJRVU5hTEdOQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03
TzBGQlJYQkNMR1ZCUVU4c1VVRkJVU3hEUVVGRExFdEJRVXNzUTBGQlF5eEpRVUZKTEVWQlFVVXNU
VUZCVFN4RFFVRkRMRU5CUVVNN1QwRkRja01zVFVGQlRUdEJRVU5NTEdWQlFVOHNTVUZCU1N4RFFV
RkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eFhRVUZYTEVWQlFVVXNUVUZCVFN4
RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeFRRVUZUTEVWQlFVVXNUVUZC
VFN4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU03VDBGRGJFWTdTMEZEUmp0QlFVTkVM
R1ZCUVZjc1JVRkJSU3h4UWtGQlV5eGxRVUZsTEVWQlFVVTdRVUZEY2tNc1ZVRkJTU3hSUVVGUkxF
ZEJRVWNzU1VGQlNTeERRVUZETEZkQlFWY3NRMEZCUXl4UlFVRlJPMVZCUTNCRExGVkJRVlVzUjBG
QlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4WFFVRlhPMVZCUXpsQ0xGZEJRVmNzV1VGQlFUdFZRVVZZ
TEZWQlFWVXNXVUZCUVR0VlFVTldMRmRCUVZjc1dVRkJRVHRWUVVOWUxGTkJRVk1zV1VGQlFTeERR
VUZETzBGQlEyUXNWVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zVlVGQlF5
eEpRVUZKTEVWQlFVczdRVUZEZWtJc1dVRkJTU3hKUVVGSkxFTkJRVU1zWTBGQll5eEZRVUZGTzBG
QlEzWkNMR05CUVVrc1YwRkJWeXhGUVVGRk8wRkJRMllzWjBKQlFVa3NRMEZCUXl4UFFVRlBMRU5C
UVVNc1RVRkJUU3hEUVVGRExFTkJRVU03VjBGRGRFSXNUVUZCVFR0QlFVTk1MSFZDUVVGWExFZEJR
VWNzU1VGQlNTeERRVUZETzFkQlEzQkNPMEZCUTBRc2JVSkJRVk1zUjBGQlJ5eEpRVUZKTEVOQlFV
TTdVMEZEYkVJc1RVRkJUVHRCUVVOTUxHTkJRVWtzVjBGQlZ5eEZRVUZGTzBGQlEyWXNaMEpCUVVr
c1EwRkJReXhWUVVGVkxFVkJRVVU3UVVGRFppeDVRa0ZCVnl4SFFVRkhMRWxCUVVrc1EwRkJRenRo
UVVOd1FpeE5RVUZOTzBGQlEwd3NlVUpCUVZjc1EwRkJReXhQUVVGUExFTkJRVU1zV1VGQldTeERR
VUZETEVOQlFVTTdZVUZEYmtNN1FVRkRSQ3h4UWtGQlV5eERRVUZETEVkQlFVY3NRMEZCUXl4SFFV
RkhMRU5CUVVNc1EwRkJRenRCUVVOdVFpeDFRa0ZCVnl4SFFVRkhMRk5CUVZNc1IwRkJSeXhUUVVG
VExFTkJRVU03VjBGRGNrTTdPMEZCUlVRc2IwSkJRVlVzUjBGQlJ5eEpRVUZKTEVOQlFVTTdRVUZE
YkVJc1kwRkJTU3hEUVVGRExGRkJRVkVzUlVGQlJUdEJRVU5pTEhOQ1FVRlZMRWRCUVVjc1MwRkJT
eXhEUVVGRE8xZEJRM0JDTzFOQlEwWTdUMEZEUml4RFFVRkRMRU5CUVVNN08wRkJSMGdzVlVGQlNT
eFZRVUZWTEVWQlFVVTdRVUZEWkN4WlFVRkpMRmRCUVZjc1JVRkJSVHRCUVVObUxIRkNRVUZYTEVO
QlFVTXNUMEZCVHl4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRE8wRkJReTlDTEcxQ1FVRlRMRU5C
UVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFOQlEzQkNMRTFCUVUwc1NVRkJT
U3hEUVVGRExGVkJRVlVzUlVGQlJUdEJRVU4wUWl4alFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExF
bEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTXNRMEZCUXp0VFFVTm9RenRQUVVOR0xFMUJRVTA3UVVG
RFRDeDFRa0ZCWlN4SlFVRkpMR0ZCUVdFc1NVRkJTU3hYUVVGWExFZEJRVWNzUlVGQlJTeEhRVUZI
TEVsQlFVa3NRMEZCUXl4blFrRkJaMElzUlVGQlJTeERRVUZCTEVGQlFVTXNRMEZCUXpzN1FVRkZh
RVlzV1VGQlNTeFhRVUZYTEVWQlFVVTdRVUZEWml4eFFrRkJWeXhEUVVGRExFOUJRVThzUTBGQlF5
eHJRa0ZCYTBJc1EwRkJReXhEUVVGRE8wRkJRM2hETEcxQ1FVRlRMRU5CUVVNc1IwRkJSeXhEUVVG
RExFZEJRVWNzUTBGQlF5eERRVUZETzFOQlEzQkNMRTFCUVUwN1FVRkRUQ3hqUVVGSkxFTkJRVU1z
VFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4blFrRkJaMElzUTBGQlF5eERRVUZETzFOQlEzQkRP
MDlCUTBZN08wRkJSVVFzVlVGQlNTeGxRVUZsTEVWQlFVVTdRVUZEYmtJc1dVRkJTU3hEUVVGRExF
MUJRVTBzUTBGQlF5eFBRVUZQTEVOQlFVTXNUVUZCVFN4SFFVRkhMR1ZCUVdVc1EwRkJReXhUUVVG
VExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NWMEZCVnl4SFFVRkhMRVZCUVVVc1IwRkJSeXhM
UVVGTExFTkJRVUVzUVVGQlF5eERRVUZETEVOQlFVTTdUMEZEZWtZN08wRkJSVVFzWVVGQlR5eEpR
VUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRXRCUVVzc1JVRkJSU3hEUVVGRE8wdEJRelZDT3pzN096
czdPenM3T3p0QlFWZEVMR05CUVZVc1JVRkJSU3h2UWtGQlV5eEpRVUZKTEVWQlFVVTdRVUZEZWtJ
c1ZVRkJTU3hyUWtGQmEwSXNSMEZCUnl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExEUkNRVUUw
UWl4RFFVRkRPMVZCUTJwRkxFMUJRVTBzUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4WFFVRlhM
RU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU51UXl4VlFVRkpMRU5CUVVNc1pV
RkJaU3hEUVVGRExFbEJRVWtzUlVGQlJTeERRVUZETEVWQlFVVXNUVUZCVFN4RFFVRkRMRU5CUVVN
N08wRkJSWFJETEZWQlFVa3NVMEZCVXl4SFFVRkhMRWxCUVVrc1EwRkJReXhSUVVGUkxFVkJRVVVz
UTBGQlF6dEJRVU5vUXl4WlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUlVGQlJTeERR
VUZETEVWQlFVVXNVMEZCVXl4RFFVRkRMRU5CUVVNN08wRkJSUzlDTEZWQlFVa3NRMEZCUXl4SlFV
RkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFpRVUZaTEVOQlFVTXNhMEpCUVd0
Q0xFVkJRVVVzVFVGQlRTeEZRVUZGTEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNN1MwRkRla1U3
T3pzN096czdPMEZCVVVRc2RVSkJRVzFDTEVWQlFVVXNLMEpCUVZjN08wRkJSVGxDTEZWQlFVa3Nh
MEpCUVd0Q0xFZEJRVWNzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl3MFFrRkJORUlzUTBGQlF6
dFZRVU5xUlN4TlFVRk5MRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zVjBGQlZ5eERRVUZETEVO
QlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRia01zVlVGQlNTeERRVUZETEdWQlFXVXNRMEZC
UXl4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRkxFMUJRVTBzUlVGQlJTeEpRVUZKTEVOQlFVTXNR
MEZCUXpzN1FVRkZNVU1zVlVGQlNTeERRVUZETEZkQlFWY3NSVUZCUlN4RFFVRkRPenRCUVVWdVFp
eFZRVUZKTEU5QlFVOHNSMEZCUnl4SlFVRkpMRU5CUVVNc1VVRkJVU3hGUVVGRkxFTkJRVU03UVVG
RE9VSXNXVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZG
TEU5QlFVOHNRMEZCUXl4RFFVRkRPenRCUVVVM1FpeFZRVUZKTEVOQlFVTXNWVUZCVlN4RFFVRkRM
RU5CUTFvc1QwRkJUeXhGUVVGRkxFbEJRVWtzUTBGQlF5eFZRVUZWTEVWQlFVVXNUVUZCVFN4RlFV
TTVRaXhQUVVGUExFVkJRVVVzUzBGQlN5eEZRVUZGTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVN
c1dVRkJXU3hEUVVGRExHdENRVUZyUWl4RlFVRkZMRTFCUVUwc1JVRkJSU3hOUVVGTkxFTkJRVU1z
UlVGRE9VVXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJRenRMUVVOWU96czdPenM3T3p0QlFWRkVM
R2xDUVVGaExFVkJRVVVzZFVKQlFWTXNUMEZCVHl4RlFVRkZPMEZCUXk5Q0xGVkJRVWtzU1VGQlNT
eERRVUZETEdOQlFXTXNSVUZCUlR0QlFVTjJRaXhsUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETEdO
QlFXTXNSMEZCUnl4UFFVRlBMRU5CUVVNN1QwRkRla01zVFVGQlRUdEJRVU5NTEZsQlFVa3NRMEZC
UXl4bFFVRmxMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eGxRVUZsTEVOQlFVTTdU
MEZEY0VRN08wRkJSVVFzVlVGQlNTeERRVUZETEdOQlFXTXNSMEZCUnl4UFFVRlBMRU5CUVVNN1Mw
RkRMMEk3T3pzN096czdPenM3TzBGQlYwUXNWVUZCVFN4RlFVRkZMR3RDUVVGWE8wRkJRMnBDTEZW
QlFVa3NTVUZCU1N4RFFVRkRMRkZCUVZFc1JVRkJSU3hGUVVGRk8wRkJRMjVDTEZsQlFVa3NRMEZC
UXl4WlFVRlpMRU5CUVVNc1ZVRkJReXhQUVVGUE8ybENRVUZMTEVOQlFVTXNZVUZCWVN4RlFVRkZM
RTlCUVU4c1JVRkJSU3hQUVVGUExFTkJRVU03VTBGQlFTeERRVUZETEVOQlFVTTdPMEZCUld4RkxG
bEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNTVUZCU1N4RFFVRkRMR05CUVdNc1EwRkJReXhKUVVG
SkxFTkJRVU1zVVVGQlVTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMDlCUTNaRUxFMUJRVTA3
UVVGRFRDeFpRVUZKTEV0QlFVc3NSMEZCUnl4SlFVRkpMRU5CUVVNc1VVRkJVU3hGUVVGRkxFTkJR
VU03UVVGRE5VSXNXVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRExFMUJRVTBzUlVGQlJT
eExRVUZMTEVWQlFVVXNZMEZCWXl4RlFVRkZMRWxCUVVrc1EwRkJReXhqUVVGakxFTkJRVU1zUzBG
QlN5eEZRVUZGTEZOQlFWTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1z
UTBGQlF5eERRVUZETzBGQlEzQkhMRmxCUVVrc1NVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF5eFJR
VUZSTEVWQlFVVTdRVUZETjBJc1kwRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eERRVUZETEZOQlFW
TXNSVUZCUlN4SlFVRkpMRU5CUVVNc1kwRkJZeXhEUVVGRExFbEJRVWtzUlVGQlJTeFRRVUZUTEVW
QlFVVXNTVUZCU1N4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF6dFRRVU5v
Ump0UFFVTkdPMHRCUTBZN096czdPenM3TzBGQlVVUXNhVUpCUVdFc1JVRkJSU3g1UWtGQlZ6dEJR
VU40UWl4VlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRExFbEJRVWtzUTBGQlF5eGpRVUZqTEVOQlF5
OUNMRU5CUVVNc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5dzBRa0ZCTkVJc1EwRkJReXhGUVVG
RkxFZEJRVWNzUlVGQlJTeEpRVUZKTEVOQlFVTXNVVUZCVVN4RlFVRkZMRVZCUVVVc1IwRkJSeXhE
UVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzB0QlEycEdPenM3T3pzN096czdRVUZUUkN4alFVRlZM
RVZCUVVVc2IwSkJRVk1zUzBGQlN5eEZRVUZGTzBGQlF6RkNMRlZCUVVrc1EwRkJReXhYUVVGWExF
ZEJRVWNzUzBGQlN5eERRVUZETzB0QlF6RkNPenM3T3pzN096dEJRVkZFTEdWQlFWY3NSVUZCUlN4
MVFrRkJWenRCUVVOMFFpeFZRVUZKTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zU1VGQlNTeERRVUZE
TEZkQlFWY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1YwRkJWeXhEUVVGRExFTkJRVU1zUTBGQlF6dExR
VU16UkRzN096czdPenM3TzBGQlUwUXNiVUpCUVdVc1JVRkJSU3g1UWtGQlV5eExRVUZMTEVWQlFV
VXNTMEZCU3l4RlFVRkZMRTFCUVUwc1JVRkJSU3hOUVVGTkxFVkJRVVU3UVVGRGRFUXNWVUZCU1N4
RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE96dEJRVVZXTEZWQlFVa3NRMEZCUXl4TlFVRk5MRWxC
UVVrc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eE5RVUZOTEVsQlFVa3NRMEZCUXl4SlFVRkpM
RU5CUVVNc1YwRkJWeXhGUVVGRk96czdRVUZIZGtRc1dVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5
eEpRVUZKTEVOQlFVTXNZVUZCWVN4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFVkJRVVVzUTBG
QlF5eERRVUZETEVOQlFVTXNRMEZCUXp0UFFVTXpReXhOUVVGTk8wRkJRMHdzV1VGQlNTeERRVUZE
TEZkQlFWY3NSVUZCUlN4RFFVRkRPMDlCUTNCQ096dEJRVVZFTEZWQlFVa3NRMEZCUXl4WFFVRlhM
RU5CUVVNc1UwRkJVeXhGUVVGRkxFdEJRVXNzUlVGQlJTeERRVUZETEVWQlFVVXNTMEZCU3l4RlFV
RkZMRTFCUVUwc1EwRkJReXhEUVVGRE8wdEJRM1JFT3pzN096czdPenM3UVVGVFJDeHZRa0ZCWjBJ
c1JVRkJSU3d3UWtGQlV5eFpRVUZaTEVWQlFVVXNTMEZCU3l4RlFVRkZPMEZCUXpsRExGVkJRVWtz
UTBGQlF5eGpRVUZqTEVkQlFVY3NTVUZCU1N4RFFVRkRPenRCUVVVelFpeFZRVUZKTEVOQlFVTXNT
VUZCU1N4RFFVRkRMRU5CUVVNc1kwRkJZeXhGUVVGRkxGbEJRVmtzUTBGQlF5eERRVUZETEVOQlFV
TXNSVUZCUlN4SlFVRkpMRVZCUVVVc1dVRkJXU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVk
QlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRla1VzVlVGQlNTeERRVUZETEZkQlFWY3NRMEZC
UXl4VFFVRlRMRVZCUVVVc1MwRkJTeXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzB0QlEzWkRP
enM3T3pzN096dEJRVkZFTEdOQlFWVXNSVUZCUlN4dlFrRkJVeXhMUVVGTExFVkJRVVVzUzBGQlN5
eEZRVUZGTEUxQlFVMHNSVUZCUlR0QlFVTjZReXhWUVVGSkxFTkJRVU1zUzBGQlN5eEZRVUZGTzBG
QlExWXNXVUZCU1N4RFFVRkRMR2RDUVVGblFpeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMDlC
UXk5Q0xFMUJRVTA3UVVGRFRDeFpRVUZKTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zZFVKQlFYVkNM
RWRCUVVjc1MwRkJTeXhIUVVGSExFZEJRVWNzUTBGQlF5eERRVUZETzA5QlF6bEVPenRCUVVWRUxG
VkJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTXNUVUZCVFN4RlFVRkZMRXRCUVVzc1JVRkJSU3hEUVVG
RExFVkJRVVVzU1VGQlNTeEZRVUZGTEUxQlFVMHNRMEZCUXl4RFFVRkRPMHRCUTJ4RU96dEJRVVZF
TEdWQlFWY3NSVUZCUlN4eFFrRkJVeXhKUVVGSkxFVkJRVVVzUzBGQlN5eEZRVUZGTEVOQlFVTXNS
VUZCUlN4TFFVRkxMRVZCUVVVc1RVRkJUU3hGUVVGRk96czdPenRCUVVOdVJDeFZRVUZKTEVsQlFV
a3NRMEZCUXl4UFFVRlBMRU5CUVVNc1RVRkJUU3hKUVVGSkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVO
QlFVTXNZVUZCWVN4RlFVRkZPMEZCUTNKRUxGbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNXVUZC
V1N4RFFVRkRMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zVFVGQlRTeEpRVUZKTEUxQlFVMHNS
VUZCUlN4SlFVRkpMRVZCUVVVc1MwRkJTeXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFV
TTdRVUZETVVVc1pVRkJUenRQUVVOU096dEJRVVZFTEZWQlFVa3NSMEZCUnl4SFFVRkhMRXRCUVVz
c1EwRkJReXhOUVVGTkxFTkJRVU03UVVGRGRrSXNZVUZCVHl4RFFVRkRMRWRCUVVjc1IwRkJSeXhG
UVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGT3p0QlFVVnVRaXhaUVVGSkxFTkJRVU1zV1VGQldTeERR
VUZETEZWQlFVTXNUMEZCVHl4RlFVRkxPMEZCUXpkQ0xHTkJRVWtzVFVGQlRTeEhRVUZITEUxQlFV
c3NWVUZCVlN4RFFVRkRMRTlCUVU4c1JVRkJSU3hMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVW
QlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNN096dEJRVWQwUkN4alFVRkpMRU5CUVVNc1MwRkJTeXhG
UVVGRk8wRkJRMVlzYlVKQlFVOHNRMEZCUXl4aFFVRmhMRVZCUVVVc1RVRkJUU3hGUVVGRkxFdEJR
VXNzUlVGQlJTeFBRVUZQTEVOQlFVTXNRMEZCUXp0WFFVTm9SQ3hOUVVGTk96dEJRVVZNTEcxQ1FV
RlBMRU5CUVVNc1RVRkJUU3hGUVVGRkxFMUJRVTBzUTBGQlF5eERRVUZETzFkQlEzcENPMU5CUTBZ
c1EwRkJReXhEUVVGRE96dFBRVVZLTzB0QlEwWTdPenM3T3pzN096dEJRVk5FTEhsQ1FVRnhRaXhG
UVVGRkxHbERRVUZYTzBGQlEyaERMRlZCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eEpR
VUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMR3RDUVVGclFpeERRVUZETEVWQlFVVXNSMEZCUnl4RlFV
RkZMRWxCUVVrc1EwRkJReXhSUVVGUkxFVkJRVVVzUlVGQlJTeEpRVUZKTEVWQlFVVXNTVUZCU1N4
RFFVRkRMRmRCUVZjc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZC
UXl4RFFVRkRPMHRCUTNaSE96czdPenM3T3pzN08wRkJWVVFzYlVKQlFXVXNSVUZCUlN4NVFrRkJV
eXhOUVVGTkxFVkJRVVVzU1VGQlNTeEZRVUZGTzBGQlEzUkRMRlZCUVVrc1EwRkJReXhYUVVGWExF
VkJRVVVzUTBGQlF6dEJRVU51UWl4VlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRExFbEJRVWtzUTBG
QlF5eERRVUZET3pzN08wRkJTWFJDTEZWQlFVa3NTVUZCU1N4TFFVRkxMR1ZCUVdVc1JVRkJSVHRC
UVVNMVFpeFpRVUZKTEU5QlFVOHNUVUZCVFN4TFFVRkxMRkZCUVZFc1JVRkJSVHRCUVVNNVFpeGpR
VUZKTEVOQlFVTXNWVUZCVlN4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8xTkJRM3BDTEUxQlFV
MDdRVUZEVEN4alFVRkpMRU5CUVVNc1owSkJRV2RDTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVN
N1UwRkRMMEk3VDBGRFJqdExRVU5HT3p0QlFVVkVMR0ZCUVZNc1JVRkJSU3h0UWtGQlV5eFRRVUZU
TEVWQlFVVTdRVUZETjBJc1ZVRkJTU3hKUVVGSkxFTkJRVU1zVVVGQlVTeEZRVUZGTzBGQlEycENM
RmxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdUMEZEYWtJN1FV
RkRSQ3hWUVVGSkxFbEJRVWtzUTBGQlF5eFpRVUZaTEVWQlFVVTdRVUZEY2tJc1dVRkJTU3hEUVVG
RExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0QlFVTm9RaXhaUVVGSkxFTkJRVU1z
U1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMDlCUTJwQ08wRkJRMFFzVlVGQlNTeERR
VUZETEdkQ1FVRm5RaXhEUVVGRExGTkJRVk1zUjBGQlJ5eFhRVUZYTEVkQlFVY3NTVUZCU1N4RFFV
RkRMRU5CUVVNN1MwRkRka1E3UVVGRFJDeFpRVUZSTEVWQlFVVXNiMEpCUVZjN1FVRkRia0lzVlVG
QlNTeEpRVUZKTEVOQlFVTXNTVUZCU1N4RlFVRkZPMEZCUTJJc1dVRkJTU3hEUVVGRExFMUJRVTBz
UTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8wOUJR
emRDTzBGQlEwUXNWVUZCU1N4RFFVRkRMRWxCUVVrc1IwRkJSeXhGUVVGRExFMUJRVTBzUlVGQlJT
eEZRVUZGTEVWQlFVVXNTMEZCU3l4RlFVRkZMRVZCUVVVc1JVRkJSU3hSUVVGUkxFVkJRVVVzUlVG
QlJTeEZRVUZGTEVkQlFVY3NSVUZCUlN4RlFVRkZMRVZCUVVNc1EwRkJRenRMUVVNMVJEdEJRVU5F
TEZkQlFVOHNSVUZCUlN4dFFrRkJWenRCUVVOc1FpeFZRVUZKTEVsQlFVa3NSMEZCUnl4SlFVRkpM
RU5CUVVNc1NVRkJTU3hEUVVGRE8wRkJRM0pDTEZWQlFVa3NRMEZCUXl4SlFVRkpMRWRCUVVjc1NV
RkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXpzN1FVRkZPVUlzVlVG
QlNTeEpRVUZKTEVOQlFVTXNVVUZCVVN4RlFVRkZPMEZCUTJwQ0xGbEJRVWtzUTBGQlF5eEpRVUZK
TEVOQlFVTXNTVUZCU1N4RFFVRkRMR0ZCUVdFc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERR
VUZETEVOQlFVTXNRMEZCUXp0UFFVTjZRenRCUVVORUxGVkJRVWtzU1VGQlNTeERRVUZETEZsQlFW
a3NSVUZCUlR0QlFVTnlRaXhaUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4
aFFVRmhMRU5CUVVNc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETEVOQlFVTTdRVUZE
TjBNc1dVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNZVUZCWVN4RFFVRkRM
RWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETzA5QlF6TkRPenRCUVVWRUxG
VkJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMR0ZCUVdFc1EwRkJReXhKUVVG
SkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXp0TFFVTTFRenM3T3pzN096czdRVUZS
UkN4alFVRlZMRVZCUVVVc2IwSkJRVk1zVFVGQlRTeEZRVUZGTzBGQlF6TkNMRlZCUVVrc1EwRkJR
eXhuUWtGQlowSXNRMEZCUXl4SlFVRkpMRU5CUVVNc1dVRkJXU3hEUVVGRExFMUJRVTBzUTBGQlF5
eERRVUZETEVOQlFVTTdTMEZEYkVRN096czdPenM3T3pzN1FVRlZSQ3hsUVVGWExFVkJRVVVzY1VK
QlFWTXNTMEZCU3l4RlFVRkZPMEZCUXpOQ0xGVkJRVWtzUTBGQlF5eG5Ra0ZCWjBJc1EwRkJReXhM
UVVGTExFTkJRVU1zUTBGQlF6dExRVU01UWpzN096czdPenM3T3p0QlFWVkVMR1ZCUVZjc1JVRkJS
U3h4UWtGQlV5eEpRVUZKTEVWQlFVVTdRVUZETVVJc1ZVRkJTU3hKUVVGSkxFbEJRVWtzU1VGQlNT
eEZRVUZGTzBGQlEyaENMRmxCUVVrc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4SlFVRkpMRU5CUVVN
c2FVSkJRV2xDTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJRenRQUVVOeVJDeE5RVUZO
TzBGQlEwd3NXVUZCU1N4RFFVRkRMR2RDUVVGblFpeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRP
MDlCUXpkQ08wdEJRMFk3T3pzN096czdPenRCUVZORUxIRkNRVUZwUWl4RlFVRkJMREpDUVVGRExG
TkJRVk1zUlVGQlJTeEpRVUZKTEVWQlFVVTdRVUZEYWtNc1ZVRkJTU3hqUVVGakxFZEJRVWNzU1VG
QlNTeERRVUZETEZWQlFWVXNRMEZCUXl4WlFVRlpMRVZCUVVVc1NVRkJTU3hGUVVGRkxGZEJRVmNz
UTBGQlF6dFZRVU5xUlN4UFFVRlBMRWRCUVVjc1NVRkJTU3hEUVVGRExHVkJRV1VzUTBGQlF5eEpR
VUZKTEVWQlFVVXNVMEZCVXl4RFFVRkRMRU5CUVVNN08wRkJSWEJFTEZWQlFVa3NRMEZCUXl4VlFV
RlZMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRMjVDTEU5QlFVOHNSVUZEVUN4SlFVRkpMRU5CUVVN
c1ZVRkJWU3hEUVVGRExGbEJRVmtzUTBGQlF5eGpRVUZqTEVWQlFVVXNSVUZCUlN4RlFVRkZMRU5C
UVVNc1NVRkJTU3hGUVVGRkxFOUJRVThzUlVGQlJTeFhRVUZYTEVWQlFVVXNUMEZCVHl4RFFVRkRM
RU5CUVVNc1JVRkRka1lzVTBGQlV5eERRVU5XTEVOQlFVTXNRMEZCUXp0TFFVTktPenM3T3pzN096
czdPenRCUVZkRUxHZENRVUZaTEVWQlFVVXNjMEpCUVZNc1UwRkJVeXhGUVVGRkxFbEJRVWtzUlVG
QlJTeFJRVUZSTEVWQlFVVTdRVUZEYUVRc1ZVRkJTU3hUUVVGVExFZEJRVWNzU1VGQlNTeERRVUZE
TEZGQlFWRXNSVUZCUlR0VlFVTXpRaXhOUVVGTkxFZEJRVWNzU1VGQlNTeERRVUZETEZkQlFWY3NR
MEZCUXl4VFFVRlRMRVZCUVVVc1NVRkJTU3hEUVVGRE8xVkJRekZETEUxQlFVMHNSMEZCUnl4UlFV
RlJMRWRCUVVjc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeEZRVUZGTEUxQlFVMHNRMEZCUXl4
SFFVRkhMRVZCUVVVc1EwRkJRenM3UVVGRmJrUXNWVUZCU1N4TlFVRk5MRWRCUVVjc1EwRkJReXhI
UVVGSExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNUVUZCVFN4RlFVRkZMRk5CUVZNc1EwRkJR
eXhEUVVGRE8wRkJRemRETEZWQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExF
MUJRVTBzUlVGQlJUdEJRVU40UWl4alFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUlVG
QlJTeEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMSFZDUVVGMVFpeERRVUZETEVOQlFVTXNRMEZC
UXp0UFFVTTVSRHRCUVVORUxGbEJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRM
RU5CUVVNN08wRkJSV3BDTEZWQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExF
MUJRVTBzUTBGQlF5eFpRVUZaTEVOQlFVTXNUVUZCVFN4RlFVRkZMRTFCUVUwc1JVRkJSU3hOUVVG
TkxFTkJRVU1zVlVGQlZTeERRVUZETEVOQlFVTXNRMEZCUXp0TFFVTjRSVHM3T3pzN096czdPMEZC
VTBRc2NVSkJRV2xDTEVWQlFVVXNNa0pCUVZNc1UwRkJVeXhGUVVGRkxFbEJRVWtzUlVGQlJUdEJR
VU16UXl4VlFVRkpMRTFCUVUwc1IwRkJSeXhKUVVGSkxFTkJRVU1zVjBGQlZ5eERRVUZETEZOQlFW
TXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJRenRCUVVNdlF5eFZRVUZKTEVOQlFVTXNTVUZCU1N4
RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zV1VGQldTeERRVUZETEUxQlFVMHNRMEZC
UXl4SlFVRkpMRVZCUVVVc1RVRkJUU3hGUVVGRkxFMUJRVTBzUTBGQlF5eFZRVUZWTEVOQlFVTXNR
MEZCUXl4RFFVRkRPMHRCUXpkRk96czdPenM3T3pzN096czdPenRCUVdORUxHMUNRVUZsTEVWQlFV
VXNlVUpCUVZNc1NVRkJTU3hGUVVGRkxGVkJRVlVzUlVGQlJUdEJRVU14UXl4VlFVRkpMRU5CUVVN
c1YwRkJWeXhEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZET3p0QlFVVXpRaXhWUVVGSkxGTkJRVk1z
UjBGQlJ5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RlFVRkZMRU5CUVVNN08wRkJSV2hETEZWQlFVa3NR
MEZCUXl4VFFVRlRMRVZCUVVVc1EwRkJRenRCUVVOcVFpeFZRVUZKTEUxQlFVMHNSMEZCUnl4SlFV
RkpMRU5CUVVNc1YwRkJWeXhEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVWQlFVVXNWVUZCVlN4
RFFVRkRMRU5CUVVNN08wRkJSVzVFTEZWQlFVa3NWVUZCVlN4SFFVRkhMRWxCUVVrc1EwRkJReXhW
UVVGVkxFZEJRVWNzU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4VFFVRlRMRVZCUVVVc1NVRkJT
U3hGUVVGRkxGRkJRVkVzUTBGQlF5eERRVUZET3p0QlFVVTVSU3hWUVVGSkxFMUJRVTBzUjBGQlJ5
eERRVUZETEVkQlFVY3NSVUZCUlN4WlFVRlpMRVZCUVVVc1ZVRkJWU3hGUVVGRkxFMUJRVTBzUlVG
QlJTeFRRVUZUTEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNN1FVRkRja1VzVlVGQlNTeERRVUZE
TEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1RVRkJUU3hGUVVGRk8wRkJRM2hDTEdOQlFVMHNR
MEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhaUVVGWkxFTkJRVU03UVVGRGVrSXNZMEZCVFN4RFFV
RkRMRWxCUVVrc1EwRkRWQ3h6UWtGQmMwSXNSVUZEZEVJc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBG
QlF5eDFRa0ZCZFVJc1EwRkJReXhEUVVONFF5eERRVUZETzA5QlEwZzdPMEZCUlVRc1ZVRkJTU3hE
UVVGRExFbEJRVWtzUTBGQlF5eERRVU5PTEVkQlFVY3NSVUZCUlN4TlFVRk5MRVZCUTFZc1RVRkJU
U3hEUVVGRExGVkJRVlVzUjBGQlJ5eERRVUZETEV0QlFVc3NSVUZCUlN4TlFVRk5MRU5CUVVNc1ZV
RkJWU3hEUVVGRExFZEJRVWNzUlVGQlJTeEZRVUZITEVsQlFVa3NSVUZETTBRc2NVSkJRWEZDTEVW
QlFVVXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhaUVVGWkxFTkJRVU1zUlVGQlJTeExRVUZM
TEVWQlF6RkVMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zV1VGQldTeERRVUZETEZGQlFWRXNS
VUZCUlN4TlFVRk5MRVZCUVVVc1RVRkJUU3hEUVVGRExGVkJRVlVzUTBGQlF5eEZRVUZGTEdGQlFX
RXNRMEZETDBVc1EwRkJReXhEUVVGRE8wdEJRMG83T3pzN096czdPenRCUVZORUxHbENRVUZoTEVW
QlFVVXNkVUpCUVZNc1UwRkJVeXhGUVVGRkxFbEJRVWtzUlVGQlJTeE5RVUZOTEVWQlFVVTdRVUZE
TDBNc1ZVRkJTU3hOUVVGTkxFZEJRVWNzUlVGQlJUdFZRVU5ZTEU5QlFVOHNSMEZCUnl4SlFVRkpM
RU5CUVVNc1YwRkJWeXhEUVVGRExFbEJRVWtzUlVGQlJTeERRVUZETEVWQlFVVXNUVUZCVFN4RFFV
RkRMRU5CUVVNN08wRkJSV2hFTEZWQlFVa3NVMEZCVXl4RlFVRkZPMEZCUTJJc1dVRkJTU3hIUVVG
SExFbEJRVWtzUTBGQlF5eFJRVUZSTEVWQlFVVXNRMEZCUXp0QlFVTjJRaXhsUVVGUExFOUJRVThz
UTBGQlF5eEpRVUZKTEVOQlFVTTdUMEZEY2tJN08wRkJSVVFzVlVGQlNTeE5RVUZOTEVWQlFVVTdR
VUZEVml4bFFVRlBMRU5CUVVNc1RVRkJUU3hIUVVGSExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFV
TXNUVUZCVFN4RFFVRkRMRU5CUVVNN1QwRkRla003UVVGRFJDeGhRVUZQTEVOQlFVTXNUMEZCVHl4
SFFVRkhMRk5CUVZNc1EwRkJRenRCUVVNMVFpeGhRVUZQTEVOQlFVTXNVVUZCVVN4SFFVRkhMRlZC
UVZVc1EwRkJRenRCUVVNNVFpeGhRVUZQTEVOQlFVTXNWVUZCVlN4SFFVRkhMSE5DUVVGelFpeERR
VUZET3p0QlFVVTFReXhWUVVGSkxFTkJRVU1zVTBGQlV5eEZRVUZGTzBGQlEyUXNZMEZCVFN4RFFV
RkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEZWQlFWVXNSVUZCUlN4
SlFVRkpMRVZCUVVVc1UwRkJVeXhEUVVGRExFTkJRVU1zUTBGQlF6dFBRVU01UkN4TlFVRk5PMEZC
UTB3c1kwRkJUU3hEUVVGRExFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0UFFVTjBR
anM3UVVGRlJDeFZRVUZKTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1RVRkJUU3hGUVVGRk8w
RkJRM1pDTEdWQlFVOHNRMEZCUXl4TlFVRk5MRWRCUVVjc1VVRkJVU3hEUVVGRE8wOUJRek5DTzBG
QlEwUXNZVUZCVHl4SFFVRkhMRWxCUVVrc1EwRkJReXhoUVVGaExFTkJRVU1zVDBGQlR5eERRVUZE
TEVOQlFVTTdRVUZEZEVNc1dVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNR
MEZCUXpzN1FVRkZja0lzVlVGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1RV
RkJUU3hEUVVGRExGbEJRVmtzUTBGQlF5eDVRa0ZCZVVJc1JVRkJSU3hGUVVGRkxFVkJRVVVzVFVG
QlRTeERRVUZETEVOQlFVTXNRMEZCUXp0TFFVTTFSVHM3T3pzN096czdRVUZSUkN4blFrRkJXU3hG
UVVGRkxITkNRVUZUTEVkQlFVY3NSVUZCUlR0QlFVTXhRaXhWUVVGSkxFdEJRVXNzUjBGQlJ5eEpR
VUZKTEVOQlFVTXNVVUZCVVN4RlFVRkZPMVZCUTNaQ0xFOUJRVThzV1VGQlFUdFZRVU5RTEVsQlFV
a3NXVUZCUVR0VlFVTktMRVZCUVVVc1dVRkJRU3hEUVVGRE96dEJRVVZRTEZWQlFVa3NTVUZCU1N4
RFFVRkRMRkZCUVZFc1JVRkJSVHRCUVVOcVFpeFZRVUZGTEVkQlFVY3NTVUZCU1N4RFFVRkRMRkZC
UVZFc1JVRkJSU3hEUVVGRE8wOUJRM1JDTzBGQlEwUXNWVUZCU1N4SlFVRkpMRU5CUVVNc1dVRkJX
U3hGUVVGRk8wRkJRM0pDTEZsQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNc1VVRkJVU3hGUVVGRkxF
TkJRVU03UVVGRGRrSXNaVUZCVHl4SFFVRkhMRWxCUVVrc1EwRkJReXhSUVVGUkxFVkJRVVVzUTBG
QlF6dFBRVU16UWpzN1FVRkZSQ3hWUVVGSkxFbEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTVUZC
U1N4RFFVRkRPMEZCUTNKQ0xGVkJRVWtzVDBGQlR5eEZRVUZGTzBGQlExZ3NXVUZCU1N4RFFVRkRM
RkZCUVZFc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eFBRVUZQTEVOQlFVTTdUMEZET1VJN1FV
RkRSQ3hWUVVGSkxFbEJRVWtzUlVGQlJUdEJRVU5TTEZsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVN
c1IwRkJSeXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETzA5QlEzaENPMEZCUTBRc1ZVRkJTU3hG
UVVGRkxFVkJRVVU3UVVGRFRpeFpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJR
eXhIUVVGSExFVkJRVVVzUTBGQlF6dFBRVU53UWp0QlFVTkVMRlZCUVVrc1EwRkJReXhOUVVGTkxF
TkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NTMEZCU3l4RFFVRkRPMHRCUXpGQ096dEJRVVZFTEZW
QlFVMHNSVUZCUlN4blFrRkJVeXhKUVVGSkxFVkJRVVVzU1VGQlNTeEZRVUZGTEV0QlFVc3NSVUZC
UlR0QlFVTnNReXhWUVVGSkxFbEJRVWtzUzBGQlN5eFpRVUZaTEVWQlFVVTdRVUZEZWtJc1dVRkJT
U3hEUVVGRExHZENRVUZuUWl4RFFVTnFRaXhqUVVGakxFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFV
TXNRMEZCUXl4SFFVRkhMRk5CUVZNc1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVk
QlFVY3NSMEZCUnl4SlFVTnFSQ3hMUVVGTExFZEJRVWNzUzBGQlN5eEhRVUZITEVsQlFVa3NRMEZC
UXl4VFFVRlRMRU5CUVVNc1IwRkJSeXhIUVVGSExFdEJRVXNzUTBGQlF5eEhRVUZITEVWQlFVVXNR
MEZCUVN4QlFVRkRMRU5CUVVNc1EwRkJRenRQUVVNelJDeE5RVUZOTEVsQlFVa3NTVUZCU1N4TFFV
RkxMR2RDUVVGblFpeEZRVUZGTzBGQlEzQkRMRmxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zU1VG
QlNTeERRVUZETEVOQlFVTTdUMEZEZGtJc1RVRkJUU3hKUVVGSkxFbEJRVWtzUzBGQlN5eGxRVUZs
TEVWQlFVVTdRVUZEYmtNc1dVRkJTU3hEUVVGRExHZENRVUZuUWl4RFFVRkRMRTFCUVUwc1EwRkJR
eXhEUVVGRE8wOUJReTlDTEUxQlFVMDdRVUZEVEN4WlFVRkpMRU5CUVVNc1owSkJRV2RDTEVOQlFV
TXNUVUZCVFN4RFFVRkRMRU5CUVVNN1QwRkRMMEk3UzBGRFJqczdPenRCUVVsRUxGbEJRVkVzUlVG
QlJTeHJRa0ZCYTBJN08wRkJSVFZDTEcxQ1FVRmxMRVZCUVVVc2VVSkJRVk1zVjBGQlZ5eEZRVUZG
TEU5QlFVOHNSVUZCUlR0QlFVTTVReXhWUVVGSkxGRkJRVkVzUjBGQlJ5eFhRVUZYTEVOQlFVTXNV
VUZCVVR0VlFVRkZMRXRCUVVzc1dVRkJRVHRWUVVGRkxGRkJRVkVzV1VGQlFTeERRVUZET3p0QlFV
VnlSQ3hYUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVj
c1VVRkJVU3hEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5C
UVVNc1JVRkJSU3hGUVVGRk8wRkJReTlETEdGQlFVc3NSMEZCUnl4UlFVRlJMRU5CUVVNc1EwRkJR
eXhEUVVGRExFTkJRVU03UVVGRGNFSXNaMEpCUVZFc1IwRkJSeXhKUVVGSkxFbEJRVWtzUTBGQlF5
eFJRVUZSTEVWQlFVVXNRMEZCUXpzN1FVRkZMMElzV1VGQlNTeFJRVUZSTEVkQlFVY3NTVUZCU1N4
RFFVRkRMRzlDUVVGdlFpeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPenRCUVVWb1JDeFpRVUZK
TEZGQlFWRXNTVUZCU1N4SlFVRkpMRVZCUVVVN1FVRkRjRUlzWTBGQlNTeERRVUZETEU5QlFVOHNR
MEZCUXl4UlFVRlJMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETzBGQlF5
OUNMR05CUVVrc1MwRkJTeXhIUVVGSExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNVVUZCVVN4
RFFVRkRMRTFCUVUwc1EwRkJRenRCUVVONlF5eGxRVUZMTEVOQlFVTXNTMEZCU3l4SFFVRkhMRXRC
UVVzc1EwRkJRenRCUVVOd1FpeGxRVUZMTEVOQlFVTXNTVUZCU1N4SFFVRkhMRk5CUVZNc1IwRkJS
eXhMUVVGTExFTkJRVU03UVVGREwwSXNZMEZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhSUVVGUkxF
TkJRVU1zUzBGQlN5eERRVUZETEVkQlFVY3NVVUZCVVN4RFFVRkRMRTlCUVU4c1EwRkJReXhMUVVG
TExFVkJRVVVzVDBGQlR5eEZRVUZGTEVsQlFVa3NRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJReXhK
UVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEVOQlFVTTdRVUZEYUVjc1kwRkJTU3hEUVVGRExFOUJR
VThzUTBGQlF5eFZRVUZWTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWRCUVVjc1VVRkJVU3hEUVVGRExG
VkJRVlVzUTBGQlF6dEJRVU55UkN4alFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExGbEJRVmtzUTBG
QlF5eExRVUZMTEVOQlFVTXNSMEZCUnl4TFFVRkxMRU5CUVVNN08wRkJSWHBETEdOQlFVa3NRMEZC
UXl4VFFVRlRMRWRCUVVjc1NVRkJTU3hEUVVGRExGTkJRVk1zU1VGQlNTeFJRVUZSTEVOQlFVTXNV
MEZCVXl4RFFVRkRPMEZCUTNSRUxHTkJRVWtzUTBGQlF5eGpRVUZqTEVkQlFVY3NTVUZCU1N4RFFV
RkRMR05CUVdNc1NVRkJTU3hSUVVGUkxFTkJRVU1zWTBGQll5eERRVUZETzBGQlEzSkZMR1ZCUVVz
c1EwRkJReXhUUVVGVExFZEJRVWNzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXp0QlFVTnFReXhs
UVVGTExFTkJRVU1zWTBGQll5eEhRVUZITEVsQlFVa3NRMEZCUXl4alFVRmpMRU5CUVVNN1UwRkRO
VU1zVFVGQlRUdEJRVU5NTEdWQlFVc3NRMEZCUXl4TFFVRkxMRWRCUVVjc1VVRkJVU3hEUVVGRExF
dEJRVXNzUTBGQlF6dEJRVU0zUWl4bFFVRkxMRU5CUVVNc1NVRkJTU3hIUVVGSExGTkJRVk1zUjBG
QlJ5eFJRVUZSTEVOQlFVTXNTMEZCU3l4RFFVRkRPenRCUVVWNFF5eGpRVUZKTEVOQlFVTXNVMEZC
VXl4SFFVRkhMRWxCUVVrc1EwRkJReXhUUVVGVExFbEJRVWtzVVVGQlVTeERRVUZETEZOQlFWTXNR
MEZCUXp0QlFVTjBSQ3hqUVVGSkxFTkJRVU1zWTBGQll5eEhRVUZITEVsQlFVa3NRMEZCUXl4alFV
RmpMRWxCUVVrc1VVRkJVU3hEUVVGRExHTkJRV01zUTBGQlF6dFRRVU4wUlR0UFFVTkdPMHRCUTBZ
N1FVRkRSQ3gzUWtGQmIwSXNSVUZCUlN3NFFrRkJVeXhMUVVGTExFVkJRVVU3UVVGRGNFTXNWMEZC
U3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUjBGQlJ5eEhRVUZITEVsQlFVa3NR
MEZCUXl4UFFVRlBMRU5CUVVNc1dVRkJXU3hEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETEVkQlFV
Y3NSMEZCUnl4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRk8wRkJRM0JGTEZsQlFVa3NWMEZCVnl4
SFFVRkhMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zV1VGQldTeERRVUZETEVOQlFVTXNRMEZC
UXl4RFFVRkRPMEZCUXk5RExGbEJRVWtzVjBGQlZ5eEpRVUZKTEZkQlFWY3NRMEZCUXl4TlFVRk5M
RU5CUVVNc1MwRkJTeXhEUVVGRExFVkJRVVU3UVVGRE5VTXNhVUpCUVU4c1YwRkJWeXhEUVVGRE8x
TkJRM0JDTzA5QlEwWTdTMEZEUmpzN1FVRkZSQ3h4UWtGQmFVSXNSVUZCUlN3eVFrRkJVeXhKUVVG
SkxFVkJRVVU3UVVGRGFFTXNWVUZCU1N4TFFVRkxMRWRCUVVjc1NVRkJTU3hEUVVGRExGZEJRVmNz
UTBGQlF5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRPMVZCUTNaRExHRkJRV0VzUjBGQlJ5eERR
VUZETEV0QlFVc3NRMEZCUXl4TFFVRkxMRVZCUVVVc1RVRkJUU3hGUVVGRkxFdEJRVXNzUTBGQlF5
eFhRVUZYTEVOQlFVTXNRMEZCUXpzN1FVRkZOMFFzVlVGQlNTeEpRVUZKTEVOQlFVTXNZMEZCWXl4
SlFVRkpMRWxCUVVrc1EwRkJReXhUUVVGVExFVkJRVVU3UVVGRGVrTXNjVUpCUVdFc1EwRkJReXhK
UVVGSkxFTkJRVU1zWVVGQllTeERRVUZETEVOQlFVTTdUMEZEYmtNN1FVRkRSQ3hWUVVGSkxFbEJR
VWtzUTBGQlF5eFRRVUZUTEVWQlFVVTdRVUZEYkVJc2NVSkJRV0VzUTBGQlF5eEpRVUZKTEVOQlFV
TXNVVUZCVVN4RFFVRkRMRU5CUVVNN1QwRkRPVUk3TzBGQlJVUXNZVUZCVHl4dlFrRkJiMElzUjBG
QlJ5eGhRVUZoTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFZEJRVWNz
UTBGQlF6dExRVU01UkRzN1FVRkZSQ3hsUVVGWExFVkJRVVVzY1VKQlFWTXNTVUZCU1N4RlFVRkZP
MEZCUXpGQ0xGVkJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1Ew
RkJReXhGUVVGRk8wRkJRM3BDTEZsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1NVRkJTU3hEUVVG
RExFZEJRVWNzU1VGQlNTeERRVUZETzBGQlF6VkNMRmxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1z
U1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRQUVVOb1F6dExR
VU5HT3p0QlFVVkVMRkZCUVVrc1JVRkJSU3hqUVVGVExFbEJRVWtzUlVGQlJUdEJRVU51UWl4VlFV
RkpMRVZCUVVVc1NVRkJTU3haUVVGWkxFOUJRVThzUTBGQlFTeEJRVUZETEVWQlFVVTdRVUZET1VJ
c1dVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxC
UVVrc1EwRkJReXhEUVVGRE8wOUJReTlDT3p0QlFVVkVMRlZCUVVrc1EwRkJReXhYUVVGWExFTkJR
VU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMEZCUXpWQ0xHRkJRVThzU1VGQlNT
eERRVUZETzB0QlEySTdPMEZCUlVRc2IwSkJRV2RDTEVWQlFVVXNNRUpCUVZNc1NVRkJTU3hGUVVG
Rk8wRkJReTlDTEZWQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hQUVVGUExFTkJRVU1z
U1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXp0TFFVTTVRanM3UVVGRlJDeGpRVUZWTEVWQlFVVXNi
MEpCUVZNc1RVRkJUU3hGUVVGRk8wRkJRek5DTEZWQlFVa3NTVUZCU1N4RFFVRkRMR05CUVdNc1JV
RkJSVHRCUVVOMlFpeFpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkRXaXhKUVVG
SkxFTkJRVU1zWTBGQll5eERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1dVRkJXU3hE
UVVGRExFbEJRVWtzUTBGQlF5eGpRVUZqTEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1pVRkJa
U3hEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU01Uml4WlFVRkpMRU5CUVVNc1kwRkJZeXhIUVVGSExG
TkJRVk1zUTBGQlF6dFBRVU5xUXpzN1FVRkZSQ3hWUVVGSkxFMUJRVTBzUlVGQlJUdEJRVU5XTEZs
QlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZE
TzA5QlF6RkNPMHRCUTBZN08wRkJSVVFzWjBKQlFWa3NSVUZCUlN4elFrRkJVeXhSUVVGUkxFVkJR
VVU3UVVGREwwSXNWVUZCU1N4TlFVRk5MRWRCUVVjc1EwRkJReXhIUVVGSExFTkJRVU03VlVGRFpD
eExRVUZMTEZsQlFVRTdWVUZEVEN4WlFVRlpMRmxCUVVFN1ZVRkRXaXhYUVVGWExGbEJRVUVzUTBG
QlF6czdPMEZCUjJoQ0xGVkJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RlFVRkZMRVZC
UVVVN1FVRkRjRUlzWTBGQlRTd3dRa0ZCWXl3MFFrRkJORUlzUTBGQlF5eERRVUZETzA5QlEyNUVP
enM3UVVGSFJDeFZRVUZKTEVkQlFVY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExF
bEJRVWtzUTBGQlF5eERRVUZET3p0QlFVVTVRaXhWUVVGSkxFZEJRVWNzV1VGQldTeFBRVUZQTEVW
QlFVVTdPMEZCUlRGQ0xHRkJRVXNzUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5C
UVVNc1EwRkJRenRCUVVOd1FpeGpRVUZOTEVkQlFVY3NRMEZCUXl4SFFVRkhMRVZCUVVVc1MwRkJT
eXhEUVVGRExFTkJRVU03UVVGRGRFSXNiVUpCUVZjc1IwRkJSeXhKUVVGSkxFTkJRVU03VDBGRGNF
SXNUVUZCVFRzN1FVRkZUQ3h2UWtGQldTeEhRVUZITEVsQlFVa3NRMEZCUXp0QlFVTndRaXhaUVVG
SkxFdEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RlFVRkZMRU5CUVVNN08wRkJSVFZD
TEdOQlFVMHNSMEZCUnl4RFFVRkRMRWxCUVVrc1JVRkJSU3hKUVVGSkxFTkJRVU1zU1VGQlNTeERR
VUZETEV0QlFVa3NRMEZCUXl4RlFVRkZMRXRCUVVzc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5
eERRVUZETEVOQlFVTTdRVUZEYkVRc1lVRkJTeXhIUVVGSExFbEJRVWtzUTBGQlF5eFJRVUZSTEVW
QlFVVXNRMEZCUXp0UFFVTjZRanM3UVVGRlJDeFZRVUZKTEVsQlFVa3NSMEZCUnl4UlFVRlJMRU5C
UVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUlVGQlJTeExRVUZMTEVOQlFVTXNRMEZCUXpzN1FVRkZk
RU1zVlVGQlNTeERRVUZETEZkQlFWY3NSVUZCUlR0QlFVTm9RaXhaUVVGSkxFTkJRVU1zVVVGQlVT
eEZRVUZGTEVOQlFVTTdUMEZEYWtJN1FVRkRSQ3hWUVVGSkxGbEJRVmtzUlVGQlJUdEJRVU5vUWl4
WlFVRkpMRU5CUVVNc1UwRkJVeXhGUVVGRkxFTkJRVU03VDBGRGJFSTdRVUZEUkN4VlFVRkpMRU5C
UVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RlFVRkZM
RWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU03UzBGRGNrTTdPMEZCUlVRc1lVRkJVeXhGUVVGRkxI
RkNRVUZYTzBGQlEzQkNMRlZCUVVrc1EwRkJReXhUUVVGVExFVkJRVVVzUTBGQlF6dEJRVU5xUWl4
VlFVRkpMRWxCUVVrc1EwRkJReXhUUVVGVExFZEJRVWNzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZC
UXl4TlFVRk5MRVZCUVVVN1FVRkJSU3haUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVsQlFVa3NR
MEZCUXl4UFFVRlBMRWRCUVVjc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETzA5QlFV
VTdRVUZET1VZc1lVRkJUeXhKUVVGSkxFTkJRVU1zV1VGQldTeEZRVUZGTEVOQlFVTTdTMEZETlVJ
N1FVRkRSQ3huUWtGQldTeEZRVUZGTEhkQ1FVRlhPMEZCUTNaQ0xHRkJRVThzVDBGQlR5eEhRVUZI
TEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNN1MwRkRha003UVVGRFJDeGxRVUZYTEVWQlFVVXNk
VUpCUVZjN1FVRkRkRUlzVlVGQlNTeFhRVUZYTEVkQlFVY3NTVUZCU1N4RFFVRkRMRmRCUVZjc1Ew
RkJRenRCUVVOdVF5eFZRVUZKTEVOQlFVTXNWMEZCVnl4SFFVRkhMRVZCUVVVc1EwRkJRenRCUVVO
MFFpeFhRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hIUVVGSExFZEJRVWNz
VjBGQlZ5eERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRMRWRCUVVjc1IwRkJSeXhGUVVGRkxFTkJR
VU1zUlVGQlJTeEZRVUZGTzBGQlEzUkVMRmxCUVVrc1MwRkJTeXhIUVVGSExGZEJRVmNzUTBGQlF5
eERRVUZETEVOQlFVTXNRMEZCUXpzN1FVRkZNMElzV1VGQlNTeExRVUZMTEZsQlFWa3NUMEZCVHl4
RlFVRkZPMEZCUXpWQ0xHTkJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRC
UVVzc1EwRkJReXhEUVVGRE8xTkJReTlDTEUxQlFVMDdRVUZEVEN4alFVRkpMRXRCUVVzc1IwRkJS
eXhKUVVGSkxFTkJRVU1zVTBGQlV5eEZRVUZGTEVOQlFVTTdRVUZETjBJc1kwRkJTU3hEUVVGRExG
VkJRVlVzUTBGQlF5eERRVUZETEV0QlFVc3NSVUZCUlN4TFFVRkxMRVZCUVVVc1MwRkJTeXhGUVVG
RkxFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTTdRVUZETlVNc1kwRkJTU3hEUVVGRExGbEJRVmtz
UTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1UwRkRMMEk3VDBGRFJqdExR
VU5HTzBGQlEwUXNXVUZCVVN4RlFVRkZMRzlDUVVGWE8wRkJRMjVDTEdGQlFVOHNTVUZCU1N4RFFV
RkRMRmRCUVZjc1EwRkJReXhOUVVGTkxFTkJRVU03UzBGRGFFTTdPMEZCUlVRc1dVRkJVU3hGUVVG
RkxHdENRVUZUTEU5QlFVOHNSVUZCUlR0QlFVTXhRaXhWUVVGSkxFMUJRVTBzUjBGQlJ5eEpRVUZK
TEVOQlFVTXNVVUZCVVN4RlFVRkZPMVZCUTNoQ0xFbEJRVWtzUjBGQlJ5eERRVUZETEUxQlFVMHNS
MEZCUnl4SlFVRkpMRU5CUVVNc1YwRkJWeXhIUVVGSExFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFV
RXNRMEZCUlN4SFFVRkhMRVZCUVVVc1EwRkJRenM3UVVGRmFrVXNWVUZCU1N4RFFVRkRMRTlCUVU4
c1NVRkJTeXhKUVVGSkxGbEJRVmtzVDBGQlR5eEJRVUZETEVWQlFVVTdRVUZEZWtNc1pVRkJUeXhK
UVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETzA5QlEyNUNMRTFCUVUwN1FVRkRUQ3haUVVGSkxFTkJR
VU1zVFVGQlRTeEZRVUZGT3p0QlFVVllMR05CUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVTBGQlV5
eEZRVUZGTzBGQlEyNUNMR3RDUVVGTkxEQkNRVUZqTEcxQ1FVRnRRaXhEUVVGRExFTkJRVU03VjBG
RE1VTTdRVUZEUkN4alFVRkpMRU5CUVVNc1UwRkJVeXhGUVVGRkxFTkJRVU03VTBGRGJFSTdRVUZE
UkN4bFFVRlBMRWxCUVVrc1EwRkJRenRQUVVOaU8wdEJRMFk3TzBGQlJVUXNXVUZCVVN4RlFVRkZM
RzlDUVVGWE8wRkJRMjVDTEZWQlFVa3NTMEZCU3l4SFFVRkpMRWxCUVVrc1EwRkJReXhSUVVGUkxF
VkJRVVVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNWMEZCVnl4SFFVRkhMRWxCUVVrc1EwRkJReXhaUVVG
WkxFRkJRVU03VlVGRGFFVXNTVUZCU1N4SFFVRkhMRXRCUVVzc1EwRkJReXhMUVVGTExFTkJRVU1z
VFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPenM3UVVGSGJrTXNWVUZCU1N4SlFVRkpM
RmxCUVZrc1QwRkJUeXhGUVVGRk8wRkJRek5DTEdWQlFVOHNTVUZCU1N4RFFVRkRMRXRCUVVzc1Ew
RkJRenRQUVVOdVFpeE5RVUZOTzBGQlEwd3NaVUZCVHl4SlFVRkpMRU5CUVVNN1QwRkRZanRMUVVO
R096dEJRVVZFTEdWQlFWY3NSVUZCUlN4eFFrRkJVeXhQUVVGUExFVkJRVVU3UVVGRE4wSXNWVUZC
U1N4SlFVRkpMRU5CUVVNc1UwRkJVeXhKUVVGSkxFOUJRVThzUlVGQlJUdEJRVU0zUWl4bFFVRlBM
Rk5CUVZNc1IwRkJSeXhQUVVGUExFZEJRVWNzUjBGQlJ5eERRVUZETzA5QlEyeERMRTFCUVUwN1FV
RkRUQ3hsUVVGUExFOUJRVThzUjBGQlJ5eFBRVUZQTEVOQlFVTTdUMEZETVVJN1MwRkRSanM3UVVG
RlJDeG5Ra0ZCV1N4RlFVRkZMSE5DUVVGVExFZEJRVWNzUlVGQlJUdEJRVU14UWl4aFFVRlBMRWxC
UVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zV1VGQldTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRP
MHRCUTNSRE96dEJRVVZFTEdsQ1FVRmhMRVZCUVVVc2RVSkJRVk1zUjBGQlJ5eEZRVUZGTzBGQlF6
TkNMR0ZCUVU4c1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eGhRVUZoTEVOQlFVTXNSMEZCUnl4
RFFVRkRMRU5CUVVNN1MwRkRka003TzBGQlJVUXNZVUZCVXl4RlFVRkZMRzFDUVVGVExFbEJRVWtz
UlVGQlJUdEJRVU40UWl4VlFVRkpMRWRCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zVDBGQlR5eERR
VUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMEZCUXpkQ0xGVkJRVWtzUjBGQlJ5eEZRVUZGTzBGQlEx
QXNWMEZCUnl4RFFVRkRMR05CUVdNc1JVRkJSU3hEUVVGRE8wRkJRM0pDTEdWQlFVOHNSMEZCUnl4
RFFVRkRPMDlCUTFvN08wRkJSVVFzVTBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5C
UVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRkpM
RU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03UVVGRGJFUXNVMEZCUnl4RFFVRkRMRk5CUVZNc1Iw
RkJSeXhKUVVGSkxFTkJRVU03UVVGRGNrSXNVMEZCUnl4RFFVRkRMR05CUVdNc1IwRkJSeXhEUVVG
RExFTkJRVU03TzBGQlJYWkNMR0ZCUVU4c1IwRkJSeXhEUVVGRE8wdEJRMW83TzBGQlJVUXNaVUZC
Vnl4RlFVRkZMSEZDUVVGVExGTkJRVk1zUlVGQlJTeEpRVUZKTEVWQlFVVXNWMEZCVnl4RlFVRkZP
MEZCUTJ4RUxGVkJRVWtzVFVGQlRTeEhRVUZITEVWQlFVVTdWVUZEV0N4VlFVRlZMRWRCUVVjc1NV
RkJTU3hEUVVGRExHVkJRV1VzUTBGQlF5eEpRVUZKTEVWQlFVVXNVMEZCVXl4RlFVRkZMRTFCUVUw
c1JVRkJSU3hYUVVGWExFTkJRVU1zUTBGQlF6dEJRVU0xUlN4VlFVRkpMRmRCUVZjc1IwRkJSeXhK
UVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEZOQlFWTXNSVUZCUlN4SlFVRkpMRVZCUVVVc1VVRkJV
U3hEUVVGRE8xVkJRM2hFTEZkQlFWY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGSkxF
bEJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTXNRMEZCUXl4RFFVRkRMRzFDUVVGakxFbEJRVWtzUTBG
QlF5eFhRVUZYTEVOQlFVTXNRMEZCUXl4RFFVRkRMRmRCUVZFc1EwRkJRenM3UVVGRmFrY3NZVUZC
VHp0QlFVTk1MR05CUVUwc1JVRkJSU3hOUVVGTk8wRkJRMlFzYTBKQlFWVXNSVUZCUlN4VlFVRlZP
MEZCUTNSQ0xGbEJRVWtzUlVGQlJTeFhRVUZYTzBGQlEycENMR3RDUVVGVkxFVkJRVVVzUTBGQlF5
eFhRVUZYTEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRE8wOUJRM3BETEVO
QlFVTTdTMEZEU0RzN1FVRkZSQ3hsUVVGWExFVkJRVVVzY1VKQlFWTXNUVUZCVFN4RlFVRkZMRk5C
UVZNc1JVRkJSU3hOUVVGTkxFVkJRVVU3UVVGREwwTXNWVUZCU1N4UFFVRlBMRWRCUVVjc1JVRkJS
VHRWUVVOYUxGRkJRVkVzUjBGQlJ5eEZRVUZGTzFWQlEySXNTMEZCU3l4SFFVRkhMRVZCUVVVN1ZV
RkRWaXhIUVVGSExFZEJRVWNzUlVGQlJUdFZRVU5TTEZWQlFWVXNSMEZCUnl4RFFVRkRMRTFCUVUw
N1ZVRkRjRUlzUzBGQlN5eFpRVUZCTEVOQlFVTTdPMEZCUlZZc1ZVRkJTU3hWUVVGVkxFVkJRVVU3
UVVGRFpDeGpRVUZOTEVkQlFVY3NSVUZCUlN4RFFVRkRPMDlCUTJJN08wRkJSVVFzWVVGQlR5eERR
VUZETEVsQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNc1dVRkJXU3hEUVVGRExFMUJRVTBzUTBGQlF5
eERRVUZETzBGQlEzcERMR0ZCUVU4c1EwRkJReXhKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETEZG
QlFWRXNSVUZCUlN4RFFVRkRPenRCUVVVdlFpeFZRVUZKTEVsQlFVa3NRMEZCUXl4UlFVRlJMRVZC
UVVVN1FVRkRha0lzWlVGQlR5eERRVUZETEU5QlFVOHNSMEZCUnl4SlFVRkpMRU5CUVVNc1VVRkJV
U3hGUVVGRkxFTkJRVU03VDBGRGJrTTdRVUZEUkN4VlFVRkpMRWxCUVVrc1EwRkJReXhaUVVGWkxF
VkJRVVU3UVVGRGNrSXNaVUZCVHl4RFFVRkRMRk5CUVZNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVVVG
QlVTeEZRVUZGTEVOQlFVTTdRVUZEY0VNc1pVRkJUeXhEUVVGRExGbEJRVmtzUjBGQlJ5eEpRVUZK
TEVOQlFVTXNVVUZCVVN4RlFVRkZMRU5CUVVNN1QwRkRlRU03TzBGQlJVUXNWVUZCU1N4UFFVRlBM
RWRCUVVjc1NVRkJTU3hEUVVGRExGRkJRVkVzUlVGQlJUdFZRVU42UWl4UFFVRlBMRWRCUVVjc1NV
RkJTU3hEUVVGRExGRkJRVkVzUlVGQlJTeERRVUZET3pzN08wRkJTVGxDTEZWQlFVa3NUMEZCVHl4
SlFVRkpMRTlCUVU4c1JVRkJSVHRCUVVOMFFpeGxRVUZQTEVOQlFVTXNSVUZCUlN4SFFVRkhMRTlC
UVU4c1NVRkJTU3huUWtGQlowSXNRMEZCUXp0QlFVTjZReXhsUVVGUExFTkJRVU1zVDBGQlR5eEhR
VUZITEU5QlFVOHNTVUZCU1N4blFrRkJaMElzUTBGQlF6dFBRVU12UXpzN096dEJRVWxFTEZWQlFV
a3NRMEZCUXl4SFFVRkhMRk5CUVZNc1EwRkJRenRCUVVOc1FpeGhRVUZQTEVOQlFVTXNSVUZCUlN4
RlFVRkZPMEZCUTFZc1lVRkJTeXhIUVVGSExFbEJRVWtzUTBGQlF5eFJRVUZSTEVWQlFVVXNRMEZC
UXp0QlFVTjRRaXhqUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NTMEZCU3l4RFFVRkRP
enRCUVVWc1FpeFpRVUZKTEVsQlFVa3NRMEZCUXl4UlFVRlJMRVZCUVVVN1FVRkRha0lzWVVGQlJ5
eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhSUVVGUkxFVkJRVVVzUTBG
QlF6dFRRVU14UWp0QlFVTkVMRmxCUVVrc1NVRkJTU3hEUVVGRExGbEJRVmtzUlVGQlJUdEJRVU55
UWl4bFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEZGQlFWRXNS
VUZCUlN4RFFVRkRPMEZCUXpOQ0xHdENRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1NV
RkJTU3hEUVVGRExGRkJRVkVzUlVGQlJTeERRVUZETzFOQlF5OUNPMDlCUTBZN08wRkJSVVFzVlVG
QlNTeFZRVUZWTEVWQlFVVTdRVUZEWkN4bFFVRlBMRU5CUVVNc1NVRkJTU3hIUVVGSExFbEJRVWtz
UTBGQlF5eE5RVUZOTEVOQlFVTXNZVUZCWVN4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8wOUJR
MnhFT3p0QlFVVkVMRlZCUVVrc1NVRkJTU3hEUVVGRExGRkJRVkVzUlVGQlJUdEJRVU5xUWl4bFFV
RlBMRU5CUVVNc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNZVUZCWVN4
RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8wOUJRemxETzBGQlEwUXNWVUZCU1N4SlFVRkpMRU5C
UVVNc1dVRkJXU3hGUVVGRk8wRkJRM0pDTEdWQlFVOHNRMEZCUXl4TFFVRkxMRWRCUVVjc1NVRkJT
U3hEUVVGRExFMUJRVTBzUTBGQlF5eGhRVUZoTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1FV
RkRha1FzWlVGQlR5eERRVUZETEZGQlFWRXNSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVG
RExHRkJRV0VzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXp0UFFVTjRSRHM3UVVGRlJDeFZRVUZK
TEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1NVRkJTU3hGUVVGRk8wRkJRM0pDTEdWQlFVOHNR
MEZCUXl4SlFVRkpMRWRCUVVjc1RVRkJUU3hEUVVGRE8wOUJRM1pDTzBGQlEwUXNWVUZCU1N4SlFV
RkpMRU5CUVVNc1kwRkJZeXhGUVVGRk8wRkJRM1pDTEdWQlFVOHNRMEZCUXl4WFFVRlhMRWRCUVVj
c1lVRkJZU3hEUVVGRE8wOUJRM0pETzBGQlEwUXNZVUZCVHl4UFFVRlBMRU5CUVVNN1MwRkRhRUk3
TzBGQlJVUXNiVUpCUVdVc1JVRkJSU3g1UWtGQlV5eE5RVUZOTEVWQlFVVXNVMEZCVXl4RlFVRkZM
RTFCUVUwc1JVRkJSU3hYUVVGWExFVkJRVVU3UVVGRGFFVXNWVUZCU1N4UFFVRlBMRWRCUVVjc1NV
RkJTU3hEUVVGRExGZEJRVmNzUTBGQlF5eE5RVUZOTEVWQlFVVXNVMEZCVXl4RlFVRkZMRTFCUVUw
c1EwRkJReXhEUVVGRE8wRkJRekZFTEdGQlFVOHNSMEZCUnl4SlFVRkpMRU5CUVVNc1lVRkJZU3hE
UVVGRExFOUJRVThzUTBGQlF5eERRVUZETzBGQlEzUkRMRlZCUVVrc1YwRkJWeXhGUVVGRk8wRkJR
MllzV1VGQlNTeERRVUZETEZkQlFWY3NRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJRenRCUVVNMVFp
eGpRVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRE8wRkJRM1pDTEdW
QlFVOHNRMEZCUXl4VlFVRlZMRVZCUVVVc1QwRkJUeXhEUVVGRExFTkJRVU03VDBGRE9VSXNUVUZC
VFN4SlFVRkpMRTFCUVUwc1JVRkJSVHRCUVVOcVFpeGpRVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRM
RTlCUVU4c1EwRkJReXhEUVVGRE8wRkJRM0pDTEdWQlFVOHNSVUZCUlN4RFFVRkRPMDlCUTFnc1RV
RkJUVHRCUVVOTUxHVkJRVThzVDBGQlR5eERRVUZETzA5QlEyaENPMHRCUTBZN1IwRkRSaXhEUVVG
RE96dEJRVWRHTEVGQlFVTXNSMEZCUVN4WlFVRlhPMEZCUTFZc1VVRkJUU3hoUVVGaExFZEJRVWNz
UTBGRGNFSXNiMEpCUVc5Q0xFZEJRM0JDTERKQ1FVRXlRaXhIUVVNelFpeDVRa0ZCZVVJc1IwRkRl
a0lzT0VKQlFUaENMRWRCUXpsQ0xHMUNRVUZ0UWl4SFFVTnVRaXhuUWtGQlowSXNSMEZEYUVJc2RV
SkJRWFZDTEVkQlEzWkNMREJDUVVFd1FpeEhRVU14UWl4clEwRkJhME1zUjBGRGJFTXNNRUpCUVRC
Q0xFZEJRekZDTEdsRFFVRnBReXhIUVVOcVF5dzJRa0ZCTmtJc1IwRkROMElzSzBKQlFTdENMRWRC
UXk5Q0xIbERRVUY1UXl4SFFVTjZReXgxUTBGQmRVTXNSMEZEZGtNc2EwSkJRV3RDTEVOQlFVRXNR
MEZEYkVJc1MwRkJTeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZET3p0QlFVVmlMRkZCUVUwc1lV
RkJZU3hIUVVGSExHdENRVUZyUWl4RFFVRkRMR05CUVdNc1IwRkJSeXhGUVVGRkxFTkJRVU03TzBG
QlJUZEVMRk5CUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZC
Unl4aFFVRmhMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNR
MEZCUXl4RlFVRkZMRVZCUVVVN1FVRkRjRVFzYlVKQlFXRXNRMEZCUXl4aFFVRmhMRU5CUVVNc1Ew
RkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTTdTMEZEZUVNN1IwRkRSaXhEUVVG
QkxFVkJRVVVzUTBGQlJUczdRVUZGVEN4dlFrRkJhMElzUTBGQlF5dzJRa0ZCTmtJc1IwRkJSeXhW
UVVGVExFbEJRVWtzUlVGQlJUdEJRVU5vUlN4WFFVRlBMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTXNZ
MEZCWXl4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFRkJRVU1zTkVKQlFUUkNMRU5CUVVVc1NV
RkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzBkQlF6bEdMRU5CUVVNN08wRkJSVVlzVjBG
QlV5eFpRVUZaTEVOQlFVTXNaVUZCWlN4RlFVRkZMRkZCUVZFc1JVRkJSU3hMUVVGTExFVkJRVVVz
U1VGQlNTeEZRVUZGTzBGQlF6VkVMRkZCUVVrc1MwRkJTeXhIUVVGSExGRkJRVkVzUTBGQlF5eFJR
VUZSTEVWQlFVVTdVVUZETTBJc1EwRkJReXhIUVVGSExFTkJRVU03VVVGRFRDeEhRVUZITEVkQlFV
Y3NTMEZCU3l4RFFVRkRMRTFCUVUwc1EwRkJRenRCUVVOMlFpeFJRVUZKTEdWQlFXVXNSVUZCUlR0
QlFVTnVRaXhUUVVGSExFVkJRVVVzUTBGQlF6dExRVU5RT3p0QlFVVkVMRmRCUVU4c1EwRkJReXhI
UVVGSExFZEJRVWNzUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlR0QlFVTnVRaXhYUVVGTExFZEJR
VWNzVVVGQlVTeERRVUZETEZWQlFWVXNRMEZCUXl4TFFVRkxMRVZCUVVVc1MwRkJTeXhEUVVGRExF
TkJRVU1zUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPMHRCUTNCRU96dEJRVVZFTEZG
QlFVa3NaVUZCWlN4RlFVRkZPMEZCUTI1Q0xHRkJRVThzUTBGQlF5eFJRVUZSTEVOQlFVTXNVMEZC
VXl4RFFVRkRMR3RDUVVGclFpeERRVUZETEVWQlFVVXNSMEZCUnl4RlFVRkZMRXRCUVVzc1JVRkJS
U3hKUVVGSkxFVkJRVVVzVVVGQlVTeERRVUZETEZsQlFWa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1Ew
RkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXp0TFFVTjZSeXhOUVVG
Tk8wRkJRMHdzWVVGQlR5eExRVUZMTEVOQlFVTTdTMEZEWkR0SFFVTkdPenR0UWtGRll5eHJRa0ZC
YTBJaUxDSm1hV3hsSWpvaWFtRjJZWE5qY21sd2RDMWpiMjF3YVd4bGNpNXFjeUlzSW5OdmRYSmpa
WE5EYjI1MFpXNTBJanBiSW1sdGNHOXlkQ0I3SUVOUFRWQkpURVZTWDFKRlZrbFRTVTlPTENCU1JW
WkpVMGxQVGw5RFNFRk9SMFZUSUgwZ1puSnZiU0FuTGk0dlltRnpaU2M3WEc1cGJYQnZjblFnUlho
alpYQjBhVzl1SUdaeWIyMGdKeTR1TDJWNFkyVndkR2x2YmljN1hHNXBiWEJ2Y25RZ2UybHpRWEp5
WVhsOUlHWnliMjBnSnk0dUwzVjBhV3h6Snp0Y2JtbHRjRzl5ZENCRGIyUmxSMlZ1SUdaeWIyMGdK
eTR2WTI5a1pTMW5aVzRuTzF4dVhHNW1kVzVqZEdsdmJpQk1hWFJsY21Gc0tIWmhiSFZsS1NCN1hH
NGdJSFJvYVhNdWRtRnNkV1VnUFNCMllXeDFaVHRjYm4xY2JseHVablZ1WTNScGIyNGdTbUYyWVZO
amNtbHdkRU52YlhCcGJHVnlLQ2tnZTMxY2JseHVTbUYyWVZOamNtbHdkRU52YlhCcGJHVnlMbkJ5
YjNSdmRIbHdaU0E5SUh0Y2JpQWdMeThnVUZWQ1RFbERJRUZRU1RvZ1dXOTFJR05oYmlCdmRtVnlj
bWxrWlNCMGFHVnpaU0J0WlhSb2IyUnpJR2x1SUdFZ2MzVmlZMnhoYzNNZ2RHOGdjSEp2ZG1sa1pW
eHVJQ0F2THlCaGJIUmxjbTVoZEdsMlpTQmpiMjF3YVd4bFpDQm1iM0p0Y3lCbWIzSWdibUZ0WlNC
c2IyOXJkWEFnWVc1a0lHSjFabVpsY21sdVp5QnpaVzFoYm5ScFkzTmNiaUFnYm1GdFpVeHZiMnQx
Y0RvZ1puVnVZM1JwYjI0b2NHRnlaVzUwTENCdVlXMWxMeW9nTENCMGVYQmxLaThwSUh0Y2JpQWdJ
Q0JwWmlBb1NtRjJZVk5qY21sd2RFTnZiWEJwYkdWeUxtbHpWbUZzYVdSS1lYWmhVMk55YVhCMFZt
RnlhV0ZpYkdWT1lXMWxLRzVoYldVcEtTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z1czQmhjbVZ1ZEN3
Z0p5NG5MQ0J1WVcxbFhUdGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnY21WMGRYSnVJRnR3
WVhKbGJuUXNJQ2RiSnl3Z1NsTlBUaTV6ZEhKcGJtZHBabmtvYm1GdFpTa3NJQ2RkSjEwN1hHNGdJ
Q0FnZlZ4dUlDQjlMRnh1SUNCa1pYQjBhR1ZrVEc5dmEzVndPaUJtZFc1amRHbHZiaWh1WVcxbEtT
QjdYRzRnSUNBZ2NtVjBkWEp1SUZ0MGFHbHpMbUZzYVdGellXSnNaU2duWTI5dWRHRnBibVZ5TG14
dmIydDFjQ2NwTENBbktHUmxjSFJvY3l3Z1hDSW5MQ0J1WVcxbExDQW5YQ0lwSjEwN1hHNGdJSDBz
WEc1Y2JpQWdZMjl0Y0dsc1pYSkpibVp2T2lCbWRXNWpkR2x2YmlncElIdGNiaUFnSUNCamIyNXpk
Q0J5WlhacGMybHZiaUE5SUVOUFRWQkpURVZTWDFKRlZrbFRTVTlPTEZ4dUlDQWdJQ0FnSUNBZ0lI
Wmxjbk5wYjI1eklEMGdVa1ZXU1ZOSlQwNWZRMGhCVGtkRlUxdHlaWFpwYzJsdmJsMDdYRzRnSUNB
Z2NtVjBkWEp1SUZ0eVpYWnBjMmx2Yml3Z2RtVnljMmx2Ym5OZE8xeHVJQ0I5TEZ4dVhHNGdJR0Z3
Y0dWdVpGUnZRblZtWm1WeU9pQm1kVzVqZEdsdmJpaHpiM1Z5WTJVc0lHeHZZMkYwYVc5dUxDQmxl
SEJzYVdOcGRDa2dlMXh1SUNBZ0lDOHZJRVp2Y21ObElHRWdjMjkxY21ObElHRnpJSFJvYVhNZ2My
bHRjR3hwWm1sbGN5QjBhR1VnYldWeVoyVWdiRzluYVdNdVhHNGdJQ0FnYVdZZ0tDRnBjMEZ5Y21G
NUtITnZkWEpqWlNrcElIdGNiaUFnSUNBZ0lITnZkWEpqWlNBOUlGdHpiM1Z5WTJWZE8xeHVJQ0Fn
SUgxY2JpQWdJQ0J6YjNWeVkyVWdQU0IwYUdsekxuTnZkWEpqWlM1M2NtRndLSE52ZFhKalpTd2di
RzlqWVhScGIyNHBPMXh1WEc0Z0lDQWdhV1lnS0hSb2FYTXVaVzUyYVhKdmJtMWxiblF1YVhOVGFX
MXdiR1VwSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJiSjNKbGRIVnliaUFuTENCemIzVnlZMlVzSUNj
N0oxMDdYRzRnSUNBZ2ZTQmxiSE5sSUdsbUlDaGxlSEJzYVdOcGRDa2dlMXh1SUNBZ0lDQWdMeThn
VkdocGN5QnBjeUJoSUdOaGMyVWdkMmhsY21VZ2RHaGxJR0oxWm1abGNpQnZjR1Z5WVhScGIyNGdi
Mk5qZFhKeklHRnpJR0VnWTJocGJHUWdiMllnWVc1dmRHaGxjbHh1SUNBZ0lDQWdMeThnWTI5dWMz
UnlkV04wTENCblpXNWxjbUZzYkhrZ1luSmhZMlZ6TGlCWFpTQm9ZWFpsSUhSdklHVjRjR3hwWTJs
MGJIa2diM1YwY0hWMElIUm9aWE5sSUdKMVptWmxjbHh1SUNBZ0lDQWdMeThnYjNCbGNtRjBhVzl1
Y3lCMGJ5Qmxibk4xY21VZ2RHaGhkQ0IwYUdVZ1pXMXBkSFJsWkNCamIyUmxJR2R2WlhNZ2FXNGdk
R2hsSUdOdmNuSmxZM1FnYkc5allYUnBiMjR1WEc0Z0lDQWdJQ0J5WlhSMWNtNGdXeWRpZFdabVpY
SWdLejBnSnl3Z2MyOTFjbU5sTENBbk95ZGRPMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNC
emIzVnlZMlV1WVhCd1pXNWtWRzlDZFdabVpYSWdQU0IwY25WbE8xeHVJQ0FnSUNBZ2NtVjBkWEp1
SUhOdmRYSmpaVHRjYmlBZ0lDQjlYRzRnSUgwc1hHNWNiaUFnYVc1cGRHbGhiR2w2WlVKMVptWmxj
am9nWm5WdVkzUnBiMjRvS1NCN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdWNYVnZkR1ZrVTNSeWFX
NW5LQ2NuS1R0Y2JpQWdmU3hjYmlBZ0x5OGdSVTVFSUZCVlFreEpReUJCVUVsY2JseHVJQ0JqYjIx
d2FXeGxPaUJtZFc1amRHbHZiaWhsYm5acGNtOXViV1Z1ZEN3Z2IzQjBhVzl1Y3l3Z1kyOXVkR1Y0
ZEN3Z1lYTlBZbXBsWTNRcElIdGNiaUFnSUNCMGFHbHpMbVZ1ZG1seWIyNXRaVzUwSUQwZ1pXNTJh
WEp2Ym0xbGJuUTdYRzRnSUNBZ2RHaHBjeTV2Y0hScGIyNXpJRDBnYjNCMGFXOXVjenRjYmlBZ0lD
QjBhR2x6TG5OMGNtbHVaMUJoY21GdGN5QTlJSFJvYVhNdWIzQjBhVzl1Y3k1emRISnBibWRRWVhK
aGJYTTdYRzRnSUNBZ2RHaHBjeTUwY21GamEwbGtjeUE5SUhSb2FYTXViM0IwYVc5dWN5NTBjbUZq
YTBsa2N6dGNiaUFnSUNCMGFHbHpMbkJ5WldOdmJYQnBiR1VnUFNBaFlYTlBZbXBsWTNRN1hHNWNi
aUFnSUNCMGFHbHpMbTVoYldVZ1BTQjBhR2x6TG1WdWRtbHliMjV0Wlc1MExtNWhiV1U3WEc0Z0lD
QWdkR2hwY3k1cGMwTm9hV3hrSUQwZ0lTRmpiMjUwWlhoME8xeHVJQ0FnSUhSb2FYTXVZMjl1ZEdW
NGRDQTlJR052Ym5SbGVIUWdmSHdnZTF4dUlDQWdJQ0FnWkdWamIzSmhkRzl5Y3pvZ1cxMHNYRzRn
SUNBZ0lDQndjbTluY21GdGN6b2dXMTBzWEc0Z0lDQWdJQ0JsYm5acGNtOXViV1Z1ZEhNNklGdGRY
RzRnSUNBZ2ZUdGNibHh1SUNBZ0lIUm9hWE11Y0hKbFlXMWliR1VvS1R0Y2JseHVJQ0FnSUhSb2FY
TXVjM1JoWTJ0VGJHOTBJRDBnTUR0Y2JpQWdJQ0IwYUdsekxuTjBZV05yVm1GeWN5QTlJRnRkTzF4
dUlDQWdJSFJvYVhNdVlXeHBZWE5sY3lBOUlIdDlPMXh1SUNBZ0lIUm9hWE11Y21WbmFYTjBaWEp6
SUQwZ2V5QnNhWE4wT2lCYlhTQjlPMXh1SUNBZ0lIUm9hWE11YUdGemFHVnpJRDBnVzEwN1hHNGdJ
Q0FnZEdocGN5NWpiMjF3YVd4bFUzUmhZMnNnUFNCYlhUdGNiaUFnSUNCMGFHbHpMbWx1YkdsdVpW
TjBZV05ySUQwZ1cxMDdYRzRnSUNBZ2RHaHBjeTVpYkc5amExQmhjbUZ0Y3lBOUlGdGRPMXh1WEc0
Z0lDQWdkR2hwY3k1amIyMXdhV3hsUTJocGJHUnlaVzRvWlc1MmFYSnZibTFsYm5Rc0lHOXdkR2x2
Ym5NcE8xeHVYRzRnSUNBZ2RHaHBjeTUxYzJWRVpYQjBhSE1nUFNCMGFHbHpMblZ6WlVSbGNIUm9j
eUI4ZkNCbGJuWnBjbTl1YldWdWRDNTFjMlZFWlhCMGFITWdmSHdnWlc1MmFYSnZibTFsYm5RdWRY
TmxSR1ZqYjNKaGRHOXljeUI4ZkNCMGFHbHpMbTl3ZEdsdmJuTXVZMjl0Y0dGME8xeHVJQ0FnSUhS
b2FYTXVkWE5sUW14dlkydFFZWEpoYlhNZ1BTQjBhR2x6TG5WelpVSnNiMk5yVUdGeVlXMXpJSHg4
SUdWdWRtbHliMjV0Wlc1MExuVnpaVUpzYjJOclVHRnlZVzF6TzF4dVhHNGdJQ0FnYkdWMElHOXdZ
MjlrWlhNZ1BTQmxiblpwY205dWJXVnVkQzV2Y0dOdlpHVnpMRnh1SUNBZ0lDQWdJQ0J2Y0dOdlpH
VXNYRzRnSUNBZ0lDQWdJR1pwY25OMFRHOWpMRnh1SUNBZ0lDQWdJQ0JwTEZ4dUlDQWdJQ0FnSUNC
c08xeHVYRzRnSUNBZ1ptOXlJQ2hwSUQwZ01Dd2diQ0E5SUc5d1kyOWtaWE11YkdWdVozUm9PeUJw
SUR3Z2JEc2dhU3NyS1NCN1hHNGdJQ0FnSUNCdmNHTnZaR1VnUFNCdmNHTnZaR1Z6VzJsZE8xeHVY
RzRnSUNBZ0lDQjBhR2x6TG5OdmRYSmpaUzVqZFhKeVpXNTBURzlqWVhScGIyNGdQU0J2Y0dOdlpH
VXViRzlqTzF4dUlDQWdJQ0FnWm1seWMzUk1iMk1nUFNCbWFYSnpkRXh2WXlCOGZDQnZjR052WkdV
dWJHOWpPMXh1SUNBZ0lDQWdkR2hwYzF0dmNHTnZaR1V1YjNCamIyUmxYUzVoY0hCc2VTaDBhR2x6
TENCdmNHTnZaR1V1WVhKbmN5azdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ0x5OGdSbXgxYzJnZ1lXNTVJ
SFJ5WVdsc2FXNW5JR052Ym5SbGJuUWdkR2hoZENCdGFXZG9kQ0JpWlNCd1pXNWthVzVuTGx4dUlD
QWdJSFJvYVhNdWMyOTFjbU5sTG1OMWNuSmxiblJNYjJOaGRHbHZiaUE5SUdacGNuTjBURzlqTzF4
dUlDQWdJSFJvYVhNdWNIVnphRk52ZFhKalpTZ25KeWs3WEc1Y2JpQWdJQ0F2S2lCcGMzUmhibUox
YkNCcFoyNXZjbVVnYm1WNGRDQXFMMXh1SUNBZ0lHbG1JQ2gwYUdsekxuTjBZV05yVTJ4dmRDQjhm
Q0IwYUdsekxtbHViR2x1WlZOMFlXTnJMbXhsYm1kMGFDQjhmQ0IwYUdsekxtTnZiWEJwYkdWVGRH
RmpheTVzWlc1bmRHZ3BJSHRjYmlBZ0lDQWdJSFJvY205M0lHNWxkeUJGZUdObGNIUnBiMjRvSjBO
dmJYQnBiR1VnWTI5dGNHeGxkR1ZrSUhkcGRHZ2dZMjl1ZEdWdWRDQnNaV1owSUc5dUlITjBZV05y
SnlrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tDRjBhR2x6TG1SbFkyOXlZWFJ2Y25NdWFYTkZi
WEIwZVNncEtTQjdYRzRnSUNBZ0lDQjBhR2x6TG5WelpVUmxZMjl5WVhSdmNuTWdQU0IwY25WbE8x
eHVYRzRnSUNBZ0lDQjBhR2x6TG1SbFkyOXlZWFJ2Y25NdWNISmxjR1Z1WkNnbmRtRnlJR1JsWTI5
eVlYUnZjbk1nUFNCamIyNTBZV2x1WlhJdVpHVmpiM0poZEc5eWN6dGNYRzRuS1R0Y2JpQWdJQ0Fn
SUhSb2FYTXVaR1ZqYjNKaGRHOXljeTV3ZFhOb0tDZHlaWFIxY200Z1ptNDdKeWs3WEc1Y2JpQWdJ
Q0FnSUdsbUlDaGhjMDlpYW1WamRDa2dlMXh1SUNBZ0lDQWdJQ0IwYUdsekxtUmxZMjl5WVhSdmNu
TWdQU0JHZFc1amRHbHZiaTVoY0hCc2VTaDBhR2x6TENCYkoyWnVKeXdnSjNCeWIzQnpKeXdnSjJO
dmJuUmhhVzVsY2ljc0lDZGtaWEIwYURBbkxDQW5aR0YwWVNjc0lDZGliRzlqYTFCaGNtRnRjeWNz
SUNka1pYQjBhSE1uTENCMGFHbHpMbVJsWTI5eVlYUnZjbk11YldWeVoyVW9LVjBwTzF4dUlDQWdJ
Q0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnZEdocGN5NWtaV052Y21GMGIzSnpMbkJ5WlhCbGJt
UW9KMloxYm1OMGFXOXVLR1p1TENCd2NtOXdjeXdnWTI5dWRHRnBibVZ5TENCa1pYQjBhREFzSUdS
aGRHRXNJR0pzYjJOclVHRnlZVzF6TENCa1pYQjBhSE1wSUh0Y1hHNG5LVHRjYmlBZ0lDQWdJQ0Fn
ZEdocGN5NWtaV052Y21GMGIzSnpMbkIxYzJnb0ozMWNYRzRuS1R0Y2JpQWdJQ0FnSUNBZ2RHaHBj
eTVrWldOdmNtRjBiM0p6SUQwZ2RHaHBjeTVrWldOdmNtRjBiM0p6TG0xbGNtZGxLQ2s3WEc0Z0lD
QWdJQ0I5WEc0Z0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lIUm9hWE11WkdWamIzSmhkRzl5Y3lB
OUlIVnVaR1ZtYVc1bFpEdGNiaUFnSUNCOVhHNWNiaUFnSUNCc1pYUWdabTRnUFNCMGFHbHpMbU55
WldGMFpVWjFibU4wYVc5dVEyOXVkR1Y0ZENoaGMwOWlhbVZqZENrN1hHNGdJQ0FnYVdZZ0tDRjBh
R2x6TG1selEyaHBiR1FwSUh0Y2JpQWdJQ0FnSUd4bGRDQnlaWFFnUFNCN1hHNGdJQ0FnSUNBZ0lH
TnZiWEJwYkdWeU9pQjBhR2x6TG1OdmJYQnBiR1Z5U1c1bWJ5Z3BMRnh1SUNBZ0lDQWdJQ0J0WVds
dU9pQm1ibHh1SUNBZ0lDQWdmVHRjYmx4dUlDQWdJQ0FnYVdZZ0tIUm9hWE11WkdWamIzSmhkRzl5
Y3lrZ2UxeHVJQ0FnSUNBZ0lDQnlaWFF1YldGcGJsOWtJRDBnZEdocGN5NWtaV052Y21GMGIzSnpP
eUFnSUM4dklHVnpiR2x1ZEMxa2FYTmhZbXhsTFd4cGJtVWdZMkZ0Wld4allYTmxYRzRnSUNBZ0lD
QWdJSEpsZEM1MWMyVkVaV052Y21GMGIzSnpJRDBnZEhKMVpUdGNiaUFnSUNBZ0lIMWNibHh1SUNB
Z0lDQWdiR1YwSUh0d2NtOW5jbUZ0Y3l3Z1pHVmpiM0poZEc5eWMzMGdQU0IwYUdsekxtTnZiblJs
ZUhRN1hHNGdJQ0FnSUNCbWIzSWdLR2tnUFNBd0xDQnNJRDBnY0hKdlozSmhiWE11YkdWdVozUm9P
eUJwSUR3Z2JEc2dhU3NyS1NCN1hHNGdJQ0FnSUNBZ0lHbG1JQ2h3Y205bmNtRnRjMXRwWFNrZ2Ux
eHVJQ0FnSUNBZ0lDQWdJSEpsZEZ0cFhTQTlJSEJ5YjJkeVlXMXpXMmxkTzF4dUlDQWdJQ0FnSUNB
Z0lHbG1JQ2hrWldOdmNtRjBiM0p6VzJsZEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUmJhU0Fy
SUNkZlpDZGRJRDBnWkdWamIzSmhkRzl5YzF0cFhUdGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRDNTFj
MlZFWldOdmNtRjBiM0p6SUQwZ2RISjFaVHRjYmlBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lI
MWNiaUFnSUNBZ0lIMWNibHh1SUNBZ0lDQWdhV1lnS0hSb2FYTXVaVzUyYVhKdmJtMWxiblF1ZFhO
bFVHRnlkR2xoYkNrZ2UxeHVJQ0FnSUNBZ0lDQnlaWFF1ZFhObFVHRnlkR2xoYkNBOUlIUnlkV1U3
WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdJQ0JwWmlBb2RHaHBjeTV2Y0hScGIyNXpMbVJoZEdFcElIdGNi
aUFnSUNBZ0lDQWdjbVYwTG5WelpVUmhkR0VnUFNCMGNuVmxPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lD
QWdhV1lnS0hSb2FYTXVkWE5sUkdWd2RHaHpLU0I3WEc0Z0lDQWdJQ0FnSUhKbGRDNTFjMlZFWlhC
MGFITWdQU0IwY25WbE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2FXWWdLSFJvYVhNdWRYTmxRbXh2
WTJ0UVlYSmhiWE1wSUh0Y2JpQWdJQ0FnSUNBZ2NtVjBMblZ6WlVKc2IyTnJVR0Z5WVcxeklEMGdk
SEoxWlR0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0FnSUdsbUlDaDBhR2x6TG05d2RHbHZibk11WTI5dGNH
RjBLU0I3WEc0Z0lDQWdJQ0FnSUhKbGRDNWpiMjF3WVhRZ1BTQjBjblZsTzF4dUlDQWdJQ0FnZlZ4
dVhHNGdJQ0FnSUNCcFppQW9JV0Z6VDJKcVpXTjBLU0I3WEc0Z0lDQWdJQ0FnSUhKbGRDNWpiMjF3
YVd4bGNpQTlJRXBUVDA0dWMzUnlhVzVuYVdaNUtISmxkQzVqYjIxd2FXeGxjaWs3WEc1Y2JpQWdJ
Q0FnSUNBZ2RHaHBjeTV6YjNWeVkyVXVZM1Z5Y21WdWRFeHZZMkYwYVc5dUlEMGdlM04wWVhKME9p
QjdiR2x1WlRvZ01Td2dZMjlzZFcxdU9pQXdmWDA3WEc0Z0lDQWdJQ0FnSUhKbGRDQTlJSFJvYVhN
dWIySnFaV04wVEdsMFpYSmhiQ2h5WlhRcE8xeHVYRzRnSUNBZ0lDQWdJR2xtSUNodmNIUnBiMjV6
TG5OeVkwNWhiV1VwSUh0Y2JpQWdJQ0FnSUNBZ0lDQnlaWFFnUFNCeVpYUXVkRzlUZEhKcGJtZFhh
WFJvVTI5MWNtTmxUV0Z3S0h0bWFXeGxPaUJ2Y0hScGIyNXpMbVJsYzNST1lXMWxmU2s3WEc0Z0lD
QWdJQ0FnSUNBZ2NtVjBMbTFoY0NBOUlISmxkQzV0WVhBZ0ppWWdjbVYwTG0xaGNDNTBiMU4wY21s
dVp5Z3BPMXh1SUNBZ0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUhKbGRDQTlJSEps
ZEM1MGIxTjBjbWx1WnlncE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJ
Q0FnSUNBZ0lDQnlaWFF1WTI5dGNHbHNaWEpQY0hScGIyNXpJRDBnZEdocGN5NXZjSFJwYjI1ek8x
eHVJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQnlaWFIxY200Z2NtVjBPMXh1SUNBZ0lIMGdaV3h6WlNC
N1hHNGdJQ0FnSUNCeVpYUjFjbTRnWm00N1hHNGdJQ0FnZlZ4dUlDQjlMRnh1WEc0Z0lIQnlaV0Z0
WW14bE9pQm1kVzVqZEdsdmJpZ3BJSHRjYmlBZ0lDQXZMeUIwY21GamF5QjBhR1VnYkdGemRDQmpi
MjUwWlhoMElIQjFjMmhsWkNCcGJuUnZJSEJzWVdObElIUnZJR0ZzYkc5M0lITnJhWEJ3YVc1bklI
Um9aVnh1SUNBZ0lDOHZJR2RsZEVOdmJuUmxlSFFnYjNCamIyUmxJSGRvWlc0Z2FYUWdkMjkxYkdR
Z1ltVWdZU0J1YjI5d1hHNGdJQ0FnZEdocGN5NXNZWE4wUTI5dWRHVjRkQ0E5SURBN1hHNGdJQ0Fn
ZEdocGN5NXpiM1Z5WTJVZ1BTQnVaWGNnUTI5a1pVZGxiaWgwYUdsekxtOXdkR2x2Ym5NdWMzSmpU
bUZ0WlNrN1hHNGdJQ0FnZEdocGN5NWtaV052Y21GMGIzSnpJRDBnYm1WM0lFTnZaR1ZIWlc0b2RH
aHBjeTV2Y0hScGIyNXpMbk55WTA1aGJXVXBPMXh1SUNCOUxGeHVYRzRnSUdOeVpXRjBaVVoxYm1O
MGFXOXVRMjl1ZEdWNGREb2dablZ1WTNScGIyNG9ZWE5QWW1wbFkzUXBJSHRjYmlBZ0lDQnNaWFFn
ZG1GeVJHVmpiR0Z5WVhScGIyNXpJRDBnSnljN1hHNWNiaUFnSUNCc1pYUWdiRzlqWVd4eklEMGdk
R2hwY3k1emRHRmphMVpoY25NdVkyOXVZMkYwS0hSb2FYTXVjbVZuYVhOMFpYSnpMbXhwYzNRcE8x
eHVJQ0FnSUdsbUlDaHNiMk5oYkhNdWJHVnVaM1JvSUQ0Z01Da2dlMXh1SUNBZ0lDQWdkbUZ5UkdW
amJHRnlZWFJwYjI1eklDczlJQ2NzSUNjZ0t5QnNiMk5oYkhNdWFtOXBiaWduTENBbktUdGNiaUFn
SUNCOVhHNWNiaUFnSUNBdkx5QkhaVzVsY21GMFpTQnRhVzVwYldsNlpYSWdZV3hwWVhNZ2JXRndj
R2x1WjNOY2JpQWdJQ0F2TDF4dUlDQWdJQzh2SUZkb1pXNGdkWE5wYm1jZ2RISjFaU0JUYjNWeVky
Vk9iMlJsY3l3Z2RHaHBjeUIzYVd4c0lIVndaR0YwWlNCaGJHd2djbVZtWlhKbGJtTmxjeUIwYnlC
MGFHVWdaMmwyWlc0Z1lXeHBZWE5jYmlBZ0lDQXZMeUJoY3lCMGFHVWdjMjkxY21ObElHNXZaR1Z6
SUdGeVpTQnlaWFZ6WldRZ2FXNGdjMmwwZFM0Z1JtOXlJSFJvWlNCdWIyNHRjMjkxY21ObElHNXZa
R1VnWTI5dGNHbHNZWFJwYjI0Z2JXOWtaU3hjYmlBZ0lDQXZMeUJoYkdsaGMyVnpJSGRwYkd3Z2Jt
OTBJR0psSUhWelpXUXNJR0oxZENCMGFHbHpJR05oYzJVZ2FYTWdZV3h5WldGa2VTQmlaV2x1WnlC
eWRXNGdiMjRnZEdobElHTnNhV1Z1ZENCaGJtUmNiaUFnSUNBdkx5QjNaU0JoY21WdUozUWdZMjl1
WTJWeWJpQmhZbTkxZENCdGFXNXBiV2w2YVc1bklIUm9aU0IwWlcxd2JHRjBaU0J6YVhwbExseHVJ
Q0FnSUd4bGRDQmhiR2xoYzBOdmRXNTBJRDBnTUR0Y2JpQWdJQ0JtYjNJZ0tHeGxkQ0JoYkdsaGN5
QnBiaUIwYUdsekxtRnNhV0Z6WlhNcElIc2dJQ0FnTHk4Z1pYTnNhVzUwTFdScGMyRmliR1V0Ykds
dVpTQm5kV0Z5WkMxbWIzSXRhVzVjYmlBZ0lDQWdJR3hsZENCdWIyUmxJRDBnZEdocGN5NWhiR2xo
YzJWelcyRnNhV0Z6WFR0Y2JseHVJQ0FnSUNBZ2FXWWdLSFJvYVhNdVlXeHBZWE5sY3k1b1lYTlBk
MjVRY205d1pYSjBlU2hoYkdsaGN5a2dKaVlnYm05a1pTNWphR2xzWkhKbGJpQW1KaUJ1YjJSbExu
SmxabVZ5Wlc1alpVTnZkVzUwSUQ0Z01Ta2dlMXh1SUNBZ0lDQWdJQ0IyWVhKRVpXTnNZWEpoZEds
dmJuTWdLejBnSnl3Z1lXeHBZWE1uSUNzZ0tDc3JZV3hwWVhORGIzVnVkQ2tnS3lBblBTY2dLeUJo
YkdsaGN6dGNiaUFnSUNBZ0lDQWdibTlrWlM1amFHbHNaSEpsYmxzd1hTQTlJQ2RoYkdsaGN5Y2dL
eUJoYkdsaGMwTnZkVzUwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmx4dUlDQWdJR3hsZENCd1lY
SmhiWE1nUFNCYkoyTnZiblJoYVc1bGNpY3NJQ2RrWlhCMGFEQW5MQ0FuYUdWc2NHVnljeWNzSUNk
d1lYSjBhV0ZzY3ljc0lDZGtZWFJoSjEwN1hHNWNiaUFnSUNCcFppQW9kR2hwY3k1MWMyVkNiRzlq
YTFCaGNtRnRjeUI4ZkNCMGFHbHpMblZ6WlVSbGNIUm9jeWtnZTF4dUlDQWdJQ0FnY0dGeVlXMXpM
bkIxYzJnb0oySnNiMk5yVUdGeVlXMXpKeWs3WEc0Z0lDQWdmVnh1SUNBZ0lHbG1JQ2gwYUdsekxu
VnpaVVJsY0hSb2N5a2dlMXh1SUNBZ0lDQWdjR0Z5WVcxekxuQjFjMmdvSjJSbGNIUm9jeWNwTzF4
dUlDQWdJSDFjYmx4dUlDQWdJQzh2SUZCbGNtWnZjbTBnWVNCelpXTnZibVFnY0dGemN5QnZkbVZ5
SUhSb1pTQnZkWFJ3ZFhRZ2RHOGdiV1Z5WjJVZ1kyOXVkR1Z1ZENCM2FHVnVJSEJ2YzNOcFlteGxY
RzRnSUNBZ2JHVjBJSE52ZFhKalpTQTlJSFJvYVhNdWJXVnlaMlZUYjNWeVkyVW9kbUZ5UkdWamJH
RnlZWFJwYjI1ektUdGNibHh1SUNBZ0lHbG1JQ2hoYzA5aWFtVmpkQ2tnZTF4dUlDQWdJQ0FnY0dG
eVlXMXpMbkIxYzJnb2MyOTFjbU5sS1R0Y2JseHVJQ0FnSUNBZ2NtVjBkWEp1SUVaMWJtTjBhVzl1
TG1Gd2NHeDVLSFJvYVhNc0lIQmhjbUZ0Y3lrN1hHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJ
SEpsZEhWeWJpQjBhR2x6TG5OdmRYSmpaUzUzY21Gd0tGc25ablZ1WTNScGIyNG9KeXdnY0dGeVlX
MXpMbXB2YVc0b0p5d25LU3dnSnlrZ2UxeGNiaUFnSnl3Z2MyOTFjbU5sTENBbmZTZGRLVHRjYmlB
Z0lDQjlYRzRnSUgwc1hHNGdJRzFsY21kbFUyOTFjbU5sT2lCbWRXNWpkR2x2YmloMllYSkVaV05z
WVhKaGRHbHZibk1wSUh0Y2JpQWdJQ0JzWlhRZ2FYTlRhVzF3YkdVZ1BTQjBhR2x6TG1WdWRtbHli
MjV0Wlc1MExtbHpVMmx0Y0d4bExGeHVJQ0FnSUNBZ0lDQmhjSEJsYm1SUGJteDVJRDBnSVhSb2FY
TXVabTl5WTJWQ2RXWm1aWElzWEc0Z0lDQWdJQ0FnSUdGd2NHVnVaRVpwY25OMExGeHVYRzRnSUNB
Z0lDQWdJSE52ZFhKalpWTmxaVzRzWEc0Z0lDQWdJQ0FnSUdKMVptWmxjbE4wWVhKMExGeHVJQ0Fn
SUNBZ0lDQmlkV1ptWlhKRmJtUTdYRzRnSUNBZ2RHaHBjeTV6YjNWeVkyVXVaV0ZqYUNnb2JHbHVa
U2tnUFQ0Z2UxeHVJQ0FnSUNBZ2FXWWdLR3hwYm1VdVlYQndaVzVrVkc5Q2RXWm1aWElwSUh0Y2Jp
QWdJQ0FnSUNBZ2FXWWdLR0oxWm1abGNsTjBZWEowS1NCN1hHNGdJQ0FnSUNBZ0lDQWdiR2x1WlM1
d2NtVndaVzVrS0NjZ0lDc2dKeWs3WEc0Z0lDQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0Fn
SUNBZ1luVm1abVZ5VTNSaGNuUWdQU0JzYVc1bE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJ
R0oxWm1abGNrVnVaQ0E5SUd4cGJtVTdYRzRnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lD
QnBaaUFvWW5WbVptVnlVM1JoY25RcElIdGNiaUFnSUNBZ0lDQWdJQ0JwWmlBb0lYTnZkWEpqWlZO
bFpXNHBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHRndjR1Z1WkVacGNuTjBJRDBnZEhKMVpUdGNiaUFn
SUNBZ0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ1luVm1abVZ5VTNSaGNuUXVj
SEpsY0dWdVpDZ25ZblZtWm1WeUlDczlJQ2NwTzF4dUlDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lD
QWdJQ0JpZFdabVpYSkZibVF1WVdSa0tDYzdKeWs3WEc0Z0lDQWdJQ0FnSUNBZ1luVm1abVZ5VTNS
aGNuUWdQU0JpZFdabVpYSkZibVFnUFNCMWJtUmxabWx1WldRN1hHNGdJQ0FnSUNBZ0lIMWNibHh1
SUNBZ0lDQWdJQ0J6YjNWeVkyVlRaV1Z1SUQwZ2RISjFaVHRjYmlBZ0lDQWdJQ0FnYVdZZ0tDRnBj
MU5wYlhCc1pTa2dlMXh1SUNBZ0lDQWdJQ0FnSUdGd2NHVnVaRTl1YkhrZ1BTQm1ZV3h6WlR0Y2Jp
QWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgwcE8xeHVYRzVjYmlBZ0lDQnBaaUFvWVhC
d1pXNWtUMjVzZVNrZ2UxeHVJQ0FnSUNBZ2FXWWdLR0oxWm1abGNsTjBZWEowS1NCN1hHNGdJQ0Fn
SUNBZ0lHSjFabVpsY2xOMFlYSjBMbkJ5WlhCbGJtUW9KM0psZEhWeWJpQW5LVHRjYmlBZ0lDQWdJ
Q0FnWW5WbVptVnlSVzVrTG1Ga1pDZ25PeWNwTzF4dUlDQWdJQ0FnZlNCbGJITmxJR2xtSUNnaGMy
OTFjbU5sVTJWbGJpa2dlMXh1SUNBZ0lDQWdJQ0IwYUdsekxuTnZkWEpqWlM1d2RYTm9LQ2R5WlhS
MWNtNGdYQ0pjSWpzbktUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0Fn
ZG1GeVJHVmpiR0Z5WVhScGIyNXpJQ3M5SUNjc0lHSjFabVpsY2lBOUlDY2dLeUFvWVhCd1pXNWtS
bWx5YzNRZ1B5QW5KeUE2SUhSb2FYTXVhVzVwZEdsaGJHbDZaVUoxWm1abGNpZ3BLVHRjYmx4dUlD
QWdJQ0FnYVdZZ0tHSjFabVpsY2xOMFlYSjBLU0I3WEc0Z0lDQWdJQ0FnSUdKMVptWmxjbE4wWVhK
MExuQnlaWEJsYm1Rb0ozSmxkSFZ5YmlCaWRXWm1aWElnS3lBbktUdGNiaUFnSUNBZ0lDQWdZblZt
Wm1WeVJXNWtMbUZrWkNnbk95Y3BPMXh1SUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdk
R2hwY3k1emIzVnlZMlV1Y0hWemFDZ25jbVYwZFhKdUlHSjFabVpsY2pzbktUdGNiaUFnSUNBZ0lI
MWNiaUFnSUNCOVhHNWNiaUFnSUNCcFppQW9kbUZ5UkdWamJHRnlZWFJwYjI1ektTQjdYRzRnSUNB
Z0lDQjBhR2x6TG5OdmRYSmpaUzV3Y21Wd1pXNWtLQ2QyWVhJZ0p5QXJJSFpoY2tSbFkyeGhjbUYw
YVc5dWN5NXpkV0p6ZEhKcGJtY29NaWtnS3lBb1lYQndaVzVrUm1seWMzUWdQeUFuSnlBNklDYzdY
Rnh1SnlrcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhKbGRIVnliaUIwYUdsekxuTnZkWEpqWlM1dFpY
Sm5aU2dwTzF4dUlDQjlMRnh1WEc0Z0lDOHZJRnRpYkc5amExWmhiSFZsWFZ4dUlDQXZMMXh1SUNB
dkx5QlBiaUJ6ZEdGamF5d2dZbVZtYjNKbE9pQm9ZWE5vTENCcGJuWmxjbk5sTENCd2NtOW5jbUZ0
TENCMllXeDFaVnh1SUNBdkx5QlBiaUJ6ZEdGamF5d2dZV1owWlhJNklISmxkSFZ5YmlCMllXeDFa
U0J2WmlCaWJHOWphMGhsYkhCbGNrMXBjM05wYm1kY2JpQWdMeTljYmlBZ0x5OGdWR2hsSUhCMWNu
QnZjMlVnYjJZZ2RHaHBjeUJ2Y0dOdlpHVWdhWE1nZEc4Z2RHRnJaU0JoSUdKc2IyTnJJRzltSUhS
b1pTQm1iM0p0WEc0Z0lDOHZJR0I3ZXlOMGFHbHpMbVp2YjMxOUxpNHVlM3N2ZEdocGN5NW1iMjk5
ZldBc0lISmxjMjlzZG1VZ2RHaGxJSFpoYkhWbElHOW1JR0JtYjI5Z0xDQmhibVJjYmlBZ0x5OGdj
bVZ3YkdGalpTQnBkQ0J2YmlCMGFHVWdjM1JoWTJzZ2QybDBhQ0IwYUdVZ2NtVnpkV3gwSUc5bUlI
QnliM0JsY214NVhHNGdJQzh2SUdsdWRtOXJhVzVuSUdKc2IyTnJTR1ZzY0dWeVRXbHpjMmx1Wnk1
Y2JpQWdZbXh2WTJ0V1lXeDFaVG9nWm5WdVkzUnBiMjRvYm1GdFpTa2dlMXh1SUNBZ0lHeGxkQ0Jp
Ykc5amEwaGxiSEJsY2sxcGMzTnBibWNnUFNCMGFHbHpMbUZzYVdGellXSnNaU2duYUdWc2NHVnlj
eTVpYkc5amEwaGxiSEJsY2sxcGMzTnBibWNuS1N4Y2JpQWdJQ0FnSUNBZ2NHRnlZVzF6SUQwZ1cz
Um9hWE11WTI5dWRHVjRkRTVoYldVb01DbGRPMXh1SUNBZ0lIUm9hWE11YzJWMGRYQklaV3h3WlhK
QmNtZHpLRzVoYldVc0lEQXNJSEJoY21GdGN5azdYRzVjYmlBZ0lDQnNaWFFnWW14dlkydE9ZVzFs
SUQwZ2RHaHBjeTV3YjNCVGRHRmpheWdwTzF4dUlDQWdJSEJoY21GdGN5NXpjR3hwWTJVb01Td2dN
Q3dnWW14dlkydE9ZVzFsS1R0Y2JseHVJQ0FnSUhSb2FYTXVjSFZ6YUNoMGFHbHpMbk52ZFhKalpT
NW1kVzVqZEdsdmJrTmhiR3dvWW14dlkydElaV3h3WlhKTmFYTnphVzVuTENBblkyRnNiQ2NzSUhC
aGNtRnRjeWtwTzF4dUlDQjlMRnh1WEc0Z0lDOHZJRnRoYldKcFozVnZkWE5DYkc5amExWmhiSFZs
WFZ4dUlDQXZMMXh1SUNBdkx5QlBiaUJ6ZEdGamF5d2dZbVZtYjNKbE9pQm9ZWE5vTENCcGJuWmxj
bk5sTENCd2NtOW5jbUZ0TENCMllXeDFaVnh1SUNBdkx5QkRiMjF3YVd4bGNpQjJZV3gxWlN3Z1lt
Vm1iM0psT2lCc1lYTjBTR1ZzY0dWeVBYWmhiSFZsSUc5bUlHeGhjM1FnWm05MWJtUWdhR1ZzY0dW
eUxDQnBaaUJoYm5sY2JpQWdMeThnVDI0Z2MzUmhZMnNzSUdGbWRHVnlMQ0JwWmlCdWJ5QnNZWE4w
U0dWc2NHVnlPaUJ6WVcxbElHRnpJRnRpYkc5amExWmhiSFZsWFZ4dUlDQXZMeUJQYmlCemRHRmph
eXdnWVdaMFpYSXNJR2xtSUd4aGMzUklaV3h3WlhJNklIWmhiSFZsWEc0Z0lHRnRZbWxuZFc5MWMw
SnNiMk5yVm1Gc2RXVTZJR1oxYm1OMGFXOXVLQ2tnZTF4dUlDQWdJQzh2SUZkbEozSmxJR0psYVc1
bklHRWdZbWwwSUdOb1pXVnJlU0JoYm1RZ2NtVjFjMmx1WnlCMGFHVWdiM0IwYVc5dWN5QjJZV3gx
WlNCbWNtOXRJSFJvWlNCd2NtbHZjaUJsZUdWalhHNGdJQ0FnYkdWMElHSnNiMk5yU0dWc2NHVnlU
V2x6YzJsdVp5QTlJSFJvYVhNdVlXeHBZWE5oWW14bEtDZG9aV3h3WlhKekxtSnNiMk5yU0dWc2NH
VnlUV2x6YzJsdVp5Y3BMRnh1SUNBZ0lDQWdJQ0J3WVhKaGJYTWdQU0JiZEdocGN5NWpiMjUwWlho
MFRtRnRaU2d3S1YwN1hHNGdJQ0FnZEdocGN5NXpaWFIxY0VobGJIQmxja0Z5WjNNb0p5Y3NJREFz
SUhCaGNtRnRjeXdnZEhKMVpTazdYRzVjYmlBZ0lDQjBhR2x6TG1ac2RYTm9TVzVzYVc1bEtDazdY
RzVjYmlBZ0lDQnNaWFFnWTNWeWNtVnVkQ0E5SUhSb2FYTXVkRzl3VTNSaFkyc29LVHRjYmlBZ0lD
QndZWEpoYlhNdWMzQnNhV05sS0RFc0lEQXNJR04xY25KbGJuUXBPMXh1WEc0Z0lDQWdkR2hwY3k1
d2RYTm9VMjkxY21ObEtGdGNiaUFnSUNBZ0lDQWdKMmxtSUNnaEp5d2dkR2hwY3k1c1lYTjBTR1Zz
Y0dWeUxDQW5LU0I3SUNjc1hHNGdJQ0FnSUNBZ0lDQWdZM1Z5Y21WdWRDd2dKeUE5SUNjc0lIUm9h
WE11YzI5MWNtTmxMbVoxYm1OMGFXOXVRMkZzYkNoaWJHOWphMGhsYkhCbGNrMXBjM05wYm1jc0lD
ZGpZV3hzSnl3Z2NHRnlZVzF6S1N4Y2JpQWdJQ0FnSUNBZ0ozMG5YU2s3WEc0Z0lIMHNYRzVjYmlB
Z0x5OGdXMkZ3Y0dWdVpFTnZiblJsYm5SZFhHNGdJQzh2WEc0Z0lDOHZJRTl1SUhOMFlXTnJMQ0Jp
WldadmNtVTZJQzR1TGx4dUlDQXZMeUJQYmlCemRHRmpheXdnWVdaMFpYSTZJQzR1TGx4dUlDQXZM
MXh1SUNBdkx5QkJjSEJsYm1SeklIUm9aU0J6ZEhKcGJtY2dkbUZzZFdVZ2IyWWdZR052Ym5SbGJu
UmdJSFJ2SUhSb1pTQmpkWEp5Wlc1MElHSjFabVpsY2x4dUlDQmhjSEJsYm1SRGIyNTBaVzUwT2lC
bWRXNWpkR2x2YmloamIyNTBaVzUwS1NCN1hHNGdJQ0FnYVdZZ0tIUm9hWE11Y0dWdVpHbHVaME52
Ym5SbGJuUXBJSHRjYmlBZ0lDQWdJR052Ym5SbGJuUWdQU0IwYUdsekxuQmxibVJwYm1kRGIyNTBa
VzUwSUNzZ1kyOXVkR1Z1ZER0Y2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdkR2hwY3k1d1pX
NWthVzVuVEc5allYUnBiMjRnUFNCMGFHbHpMbk52ZFhKalpTNWpkWEp5Wlc1MFRHOWpZWFJwYjI0
N1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnZEdocGN5NXdaVzVrYVc1blEyOXVkR1Z1ZENBOUlHTnZiblJs
Ym5RN1hHNGdJSDBzWEc1Y2JpQWdMeThnVzJGd2NHVnVaRjFjYmlBZ0x5OWNiaUFnTHk4Z1QyNGdj
M1JoWTJzc0lHSmxabTl5WlRvZ2RtRnNkV1VzSUM0dUxseHVJQ0F2THlCUGJpQnpkR0ZqYXl3Z1lX
WjBaWEk2SUM0dUxseHVJQ0F2TDF4dUlDQXZMeUJEYjJWeVkyVnpJR0IyWVd4MVpXQWdkRzhnWVNC
VGRISnBibWNnWVc1a0lHRndjR1Z1WkhNZ2FYUWdkRzhnZEdobElHTjFjbkpsYm5RZ1luVm1abVZ5
TGx4dUlDQXZMMXh1SUNBdkx5QkpaaUJnZG1Gc2RXVmdJR2x6SUhSeWRYUm9lU3dnYjNJZ01Dd2dh
WFFnYVhNZ1kyOWxjbU5sWkNCcGJuUnZJR0VnYzNSeWFXNW5JR0Z1WkNCaGNIQmxibVJsWkZ4dUlD
QXZMeUJQZEdobGNuZHBjMlVzSUhSb1pTQmxiWEIwZVNCemRISnBibWNnYVhNZ1lYQndaVzVrWldS
Y2JpQWdZWEJ3Wlc1a09pQm1kVzVqZEdsdmJpZ3BJSHRjYmlBZ0lDQnBaaUFvZEdocGN5NXBjMGx1
YkdsdVpTZ3BLU0I3WEc0Z0lDQWdJQ0IwYUdsekxuSmxjR3hoWTJWVGRHRmpheWdvWTNWeWNtVnVk
Q2tnUFQ0Z1d5Y2dJVDBnYm5Wc2JDQS9JQ2NzSUdOMWNuSmxiblFzSUNjZ09pQmNJbHdpSjEwcE8x
eHVYRzRnSUNBZ0lDQjBhR2x6TG5CMWMyaFRiM1Z5WTJVb2RHaHBjeTVoY0hCbGJtUlViMEoxWm1a
bGNpaDBhR2x6TG5CdmNGTjBZV05yS0NrcEtUdGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0Fn
YkdWMElHeHZZMkZzSUQwZ2RHaHBjeTV3YjNCVGRHRmpheWdwTzF4dUlDQWdJQ0FnZEdocGN5NXdk
WE5vVTI5MWNtTmxLRnNuYVdZZ0tDY3NJR3h2WTJGc0xDQW5JQ0U5SUc1MWJHd3BJSHNnSnl3Z2RH
aHBjeTVoY0hCbGJtUlViMEoxWm1abGNpaHNiMk5oYkN3Z2RXNWtaV1pwYm1Wa0xDQjBjblZsS1N3
Z0p5QjlKMTBwTzF4dUlDQWdJQ0FnYVdZZ0tIUm9hWE11Wlc1MmFYSnZibTFsYm5RdWFYTlRhVzF3
YkdVcElIdGNiaUFnSUNBZ0lDQWdkR2hwY3k1d2RYTm9VMjkxY21ObEtGc25aV3h6WlNCN0lDY3NJ
SFJvYVhNdVlYQndaVzVrVkc5Q2RXWm1aWElvWENJbkoxd2lMQ0IxYm1SbFptbHVaV1FzSUhSeWRX
VXBMQ0FuSUgwblhTazdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0I5TEZ4dVhHNGdJQzh2SUZ0
aGNIQmxibVJGYzJOaGNHVmtYVnh1SUNBdkwxeHVJQ0F2THlCUGJpQnpkR0ZqYXl3Z1ltVm1iM0ps
T2lCMllXeDFaU3dnTGk0dVhHNGdJQzh2SUU5dUlITjBZV05yTENCaFpuUmxjam9nTGk0dVhHNGdJ
Qzh2WEc0Z0lDOHZJRVZ6WTJGd1pTQmdkbUZzZFdWZ0lHRnVaQ0JoY0hCbGJtUWdhWFFnZEc4Z2RH
aGxJR0oxWm1abGNseHVJQ0JoY0hCbGJtUkZjMk5oY0dWa09pQm1kVzVqZEdsdmJpZ3BJSHRjYmlB
Z0lDQjBhR2x6TG5CMWMyaFRiM1Z5WTJVb2RHaHBjeTVoY0hCbGJtUlViMEoxWm1abGNpaGNiaUFn
SUNBZ0lDQWdXM1JvYVhNdVlXeHBZWE5oWW14bEtDZGpiMjUwWVdsdVpYSXVaWE5qWVhCbFJYaHdj
bVZ6YzJsdmJpY3BMQ0FuS0Njc0lIUm9hWE11Y0c5d1UzUmhZMnNvS1N3Z0p5a25YU2twTzF4dUlD
QjlMRnh1WEc0Z0lDOHZJRnRuWlhSRGIyNTBaWGgwWFZ4dUlDQXZMMXh1SUNBdkx5QlBiaUJ6ZEdG
amF5d2dZbVZtYjNKbE9pQXVMaTVjYmlBZ0x5OGdUMjRnYzNSaFkyc3NJR0ZtZEdWeU9pQXVMaTVj
YmlBZ0x5OGdRMjl0Y0dsc1pYSWdkbUZzZFdVc0lHRm1kR1Z5T2lCc1lYTjBRMjl1ZEdWNGREMWta
WEIwYUZ4dUlDQXZMMXh1SUNBdkx5QlRaWFFnZEdobElIWmhiSFZsSUc5bUlIUm9aU0JnYkdGemRF
TnZiblJsZUhSZ0lHTnZiWEJwYkdWeUlIWmhiSFZsSUhSdklIUm9aU0JrWlhCMGFGeHVJQ0JuWlhS
RGIyNTBaWGgwT2lCbWRXNWpkR2x2Ymloa1pYQjBhQ2tnZTF4dUlDQWdJSFJvYVhNdWJHRnpkRU52
Ym5SbGVIUWdQU0JrWlhCMGFEdGNiaUFnZlN4Y2JseHVJQ0F2THlCYmNIVnphRU52Ym5SbGVIUmRY
RzRnSUM4dlhHNGdJQzh2SUU5dUlITjBZV05yTENCaVpXWnZjbVU2SUM0dUxseHVJQ0F2THlCUGJp
QnpkR0ZqYXl3Z1lXWjBaWEk2SUdOMWNuSmxiblJEYjI1MFpYaDBMQ0F1TGk1Y2JpQWdMeTljYmlB
Z0x5OGdVSFZ6YUdWeklIUm9aU0IyWVd4MVpTQnZaaUIwYUdVZ1kzVnljbVZ1ZENCamIyNTBaWGgw
SUc5dWRHOGdkR2hsSUhOMFlXTnJMbHh1SUNCd2RYTm9RMjl1ZEdWNGREb2dablZ1WTNScGIyNG9L
U0I3WEc0Z0lDQWdkR2hwY3k1d2RYTm9VM1JoWTJ0TWFYUmxjbUZzS0hSb2FYTXVZMjl1ZEdWNGRF
NWhiV1VvZEdocGN5NXNZWE4wUTI5dWRHVjRkQ2twTzF4dUlDQjlMRnh1WEc0Z0lDOHZJRnRzYjI5
cmRYQlBia052Ym5SbGVIUmRYRzRnSUM4dlhHNGdJQzh2SUU5dUlITjBZV05yTENCaVpXWnZjbVU2
SUM0dUxseHVJQ0F2THlCUGJpQnpkR0ZqYXl3Z1lXWjBaWEk2SUdOMWNuSmxiblJEYjI1MFpYaDBX
MjVoYldWZExDQXVMaTVjYmlBZ0x5OWNiaUFnTHk4Z1RHOXZhM01nZFhBZ2RHaGxJSFpoYkhWbElH
OW1JR0J1WVcxbFlDQnZiaUIwYUdVZ1kzVnljbVZ1ZENCamIyNTBaWGgwSUdGdVpDQndkWE5vWlhO
Y2JpQWdMeThnYVhRZ2IyNTBieUIwYUdVZ2MzUmhZMnN1WEc0Z0lHeHZiMnQxY0U5dVEyOXVkR1Y0
ZERvZ1puVnVZM1JwYjI0b2NHRnlkSE1zSUdaaGJITjVMQ0J6ZEhKcFkzUXNJSE5qYjNCbFpDa2dl
MXh1SUNBZ0lHeGxkQ0JwSUQwZ01EdGNibHh1SUNBZ0lHbG1JQ2doYzJOdmNHVmtJQ1ltSUhSb2FY
TXViM0IwYVc5dWN5NWpiMjF3WVhRZ0ppWWdJWFJvYVhNdWJHRnpkRU52Ym5SbGVIUXBJSHRjYmlB
Z0lDQWdJQzh2SUZSb1pTQmtaWEIwYUdWa0lIRjFaWEo1SUdseklHVjRjR1ZqZEdWa0lIUnZJR2ho
Ym1Sc1pTQjBhR1VnZFc1a1pXWnBibVZrSUd4dloybGpJR1p2Y2lCMGFHVWdjbTl2ZENCc1pYWmxi
Q0IwYUdGMFhHNGdJQ0FnSUNBdkx5QnBjeUJwYlhCc1pXMWxiblJsWkNCaVpXeHZkeXdnYzI4Z2Qy
VWdaWFpoYkhWaGRHVWdkR2hoZENCa2FYSmxZM1JzZVNCcGJpQmpiMjF3WVhRZ2JXOWtaVnh1SUNB
Z0lDQWdkR2hwY3k1d2RYTm9LSFJvYVhNdVpHVndkR2hsWkV4dmIydDFjQ2h3WVhKMGMxdHBLeXRk
S1NrN1hHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJSFJvYVhNdWNIVnphRU52Ym5SbGVIUW9L
VHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQjBhR2x6TG5KbGMyOXNkbVZRWVhSb0tDZGpiMjUwWlhoMEp5
d2djR0Z5ZEhNc0lHa3NJR1poYkhONUxDQnpkSEpwWTNRcE8xeHVJQ0I5TEZ4dVhHNGdJQzh2SUZ0
c2IyOXJkWEJDYkc5amExQmhjbUZ0WFZ4dUlDQXZMMXh1SUNBdkx5QlBiaUJ6ZEdGamF5d2dZbVZt
YjNKbE9pQXVMaTVjYmlBZ0x5OGdUMjRnYzNSaFkyc3NJR0ZtZEdWeU9pQmliRzlqYTFCaGNtRnRX
MjVoYldWZExDQXVMaTVjYmlBZ0x5OWNiaUFnTHk4Z1RHOXZhM01nZFhBZ2RHaGxJSFpoYkhWbElH
OW1JR0J3WVhKMGMyQWdiMjRnZEdobElHZHBkbVZ1SUdKc2IyTnJJSEJoY21GdElHRnVaQ0J3ZFhO
b1pYTmNiaUFnTHk4Z2FYUWdiMjUwYnlCMGFHVWdjM1JoWTJzdVhHNGdJR3h2YjJ0MWNFSnNiMk5y
VUdGeVlXMDZJR1oxYm1OMGFXOXVLR0pzYjJOclVHRnlZVzFKWkN3Z2NHRnlkSE1wSUh0Y2JpQWdJ
Q0IwYUdsekxuVnpaVUpzYjJOclVHRnlZVzF6SUQwZ2RISjFaVHRjYmx4dUlDQWdJSFJvYVhNdWNI
VnphQ2hiSjJKc2IyTnJVR0Z5WVcxeld5Y3NJR0pzYjJOclVHRnlZVzFKWkZzd1hTd2dKMTFiSnl3
Z1lteHZZMnRRWVhKaGJVbGtXekZkTENBblhTZGRLVHRjYmlBZ0lDQjBhR2x6TG5KbGMyOXNkbVZR
WVhSb0tDZGpiMjUwWlhoMEp5d2djR0Z5ZEhNc0lERXBPMXh1SUNCOUxGeHVYRzRnSUM4dklGdHNi
MjlyZFhCRVlYUmhYVnh1SUNBdkwxeHVJQ0F2THlCUGJpQnpkR0ZqYXl3Z1ltVm1iM0psT2lBdUxp
NWNiaUFnTHk4Z1QyNGdjM1JoWTJzc0lHRm1kR1Z5T2lCa1lYUmhMQ0F1TGk1Y2JpQWdMeTljYmlB
Z0x5OGdVSFZ6YUNCMGFHVWdaR0YwWVNCc2IyOXJkWEFnYjNCbGNtRjBiM0pjYmlBZ2JHOXZhM1Z3
UkdGMFlUb2dablZ1WTNScGIyNG9aR1Z3ZEdnc0lIQmhjblJ6TENCemRISnBZM1FwSUh0Y2JpQWdJ
Q0JwWmlBb0lXUmxjSFJvS1NCN1hHNGdJQ0FnSUNCMGFHbHpMbkIxYzJoVGRHRmphMHhwZEdWeVlX
d29KMlJoZEdFbktUdGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnZEdocGN5NXdkWE5vVTNS
aFkydE1hWFJsY21Gc0tDZGpiMjUwWVdsdVpYSXVaR0YwWVNoa1lYUmhMQ0FuSUNzZ1pHVndkR2dn
S3lBbktTY3BPMXh1SUNBZ0lIMWNibHh1SUNBZ0lIUm9hWE11Y21WemIyeDJaVkJoZEdnb0oyUmhk
R0VuTENCd1lYSjBjeXdnTUN3Z2RISjFaU3dnYzNSeWFXTjBLVHRjYmlBZ2ZTeGNibHh1SUNCeVpY
TnZiSFpsVUdGMGFEb2dablZ1WTNScGIyNG9kSGx3WlN3Z2NHRnlkSE1zSUdrc0lHWmhiSE41TENC
emRISnBZM1FwSUh0Y2JpQWdJQ0JwWmlBb2RHaHBjeTV2Y0hScGIyNXpMbk4wY21samRDQjhmQ0Iw
YUdsekxtOXdkR2x2Ym5NdVlYTnpkVzFsVDJKcVpXTjBjeWtnZTF4dUlDQWdJQ0FnZEdocGN5NXdk
WE5vS0hOMGNtbGpkRXh2YjJ0MWNDaDBhR2x6TG05d2RHbHZibk11YzNSeWFXTjBJQ1ltSUhOMGNt
bGpkQ3dnZEdocGN5d2djR0Z5ZEhNc0lIUjVjR1VwS1R0Y2JpQWdJQ0FnSUhKbGRIVnlianRjYmlB
Z0lDQjlYRzVjYmlBZ0lDQnNaWFFnYkdWdUlEMGdjR0Z5ZEhNdWJHVnVaM1JvTzF4dUlDQWdJR1p2
Y2lBb095QnBJRHdnYkdWdU95QnBLeXNwSUh0Y2JpQWdJQ0FnSUM4cUlHVnpiR2x1ZEMxa2FYTmhZ
bXhsSUc1dkxXeHZiM0F0Wm5WdVl5QXFMMXh1SUNBZ0lDQWdkR2hwY3k1eVpYQnNZV05sVTNSaFky
c29LR04xY25KbGJuUXBJRDArSUh0Y2JpQWdJQ0FnSUNBZ2JHVjBJR3h2YjJ0MWNDQTlJSFJvYVhN
dWJtRnRaVXh2YjJ0MWNDaGpkWEp5Wlc1MExDQndZWEowYzF0cFhTd2dkSGx3WlNrN1hHNGdJQ0Fn
SUNBZ0lDOHZJRmRsSUhkaGJuUWdkRzhnWlc1emRYSmxJSFJvWVhRZ2VtVnlieUJoYm1RZ1ptRnNj
MlVnWVhKbElHaGhibVJzWldRZ2NISnZjR1Z5YkhrZ2FXWWdkR2hsSUdOdmJuUmxlSFFnS0daaGJI
TjVJR1pzWVdjcFhHNGdJQ0FnSUNBZ0lDOHZJRzVsWldSeklIUnZJR2hoZG1VZ2RHaGxJSE53WldO
cFlXd2dhR0Z1Wkd4cGJtY2dabTl5SUhSb1pYTmxJSFpoYkhWbGN5NWNiaUFnSUNBZ0lDQWdhV1ln
S0NGbVlXeHplU2tnZTF4dUlDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCYkp5QWhQU0J1ZFd4c0lEOGdK
eXdnYkc5dmEzVndMQ0FuSURvZ0p5d2dZM1Z5Y21WdWRGMDdYRzRnSUNBZ0lDQWdJSDBnWld4elpT
QjdYRzRnSUNBZ0lDQWdJQ0FnTHk4Z1QzUm9aWEozYVhObElIZGxJR05oYmlCMWMyVWdaMlZ1WlhK
cFl5Qm1ZV3h6ZVNCb1lXNWtiR2x1WjF4dUlDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCYkp5QW1KaUFu
TENCc2IyOXJkWEJkTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOUtUdGNiaUFnSUNBZ0lDOHFJ
R1Z6YkdsdWRDMWxibUZpYkdVZ2JtOHRiRzl2Y0MxbWRXNWpJQ292WEc0Z0lDQWdmVnh1SUNCOUxG
eHVYRzRnSUM4dklGdHlaWE52YkhabFVHOXpjMmxpYkdWTVlXMWlaR0ZkWEc0Z0lDOHZYRzRnSUM4
dklFOXVJSE4wWVdOckxDQmlaV1p2Y21VNklIWmhiSFZsTENBdUxpNWNiaUFnTHk4Z1QyNGdjM1Jo
WTJzc0lHRm1kR1Z5T2lCeVpYTnZiSFpsWkNCMllXeDFaU3dnTGk0dVhHNGdJQzh2WEc0Z0lDOHZJ
RWxtSUhSb1pTQmdkbUZzZFdWZ0lHbHpJR0VnYkdGdFltUmhMQ0J5WlhCc1lXTmxJR2wwSUc5dUlI
Um9aU0J6ZEdGamF5QmllVnh1SUNBdkx5QjBhR1VnY21WMGRYSnVJSFpoYkhWbElHOW1JSFJvWlNC
c1lXMWlaR0ZjYmlBZ2NtVnpiMngyWlZCdmMzTnBZbXhsVEdGdFltUmhPaUJtZFc1amRHbHZiaWdw
SUh0Y2JpQWdJQ0IwYUdsekxuQjFjMmdvVzNSb2FYTXVZV3hwWVhOaFlteGxLQ2RqYjI1MFlXbHVa
WEl1YkdGdFltUmhKeWtzSUNjb0p5d2dkR2hwY3k1d2IzQlRkR0ZqYXlncExDQW5MQ0FuTENCMGFH
bHpMbU52Ym5SbGVIUk9ZVzFsS0RBcExDQW5LU2RkS1R0Y2JpQWdmU3hjYmx4dUlDQXZMeUJiY0hW
emFGTjBjbWx1WjFCaGNtRnRYVnh1SUNBdkwxeHVJQ0F2THlCUGJpQnpkR0ZqYXl3Z1ltVm1iM0ps
T2lBdUxpNWNiaUFnTHk4Z1QyNGdjM1JoWTJzc0lHRm1kR1Z5T2lCemRISnBibWNzSUdOMWNuSmxi
blJEYjI1MFpYaDBMQ0F1TGk1Y2JpQWdMeTljYmlBZ0x5OGdWR2hwY3lCdmNHTnZaR1VnYVhNZ1pH
VnphV2R1WldRZ1ptOXlJSFZ6WlNCcGJpQnpkSEpwYm1jZ2JXOWtaU3dnZDJocFkyaGNiaUFnTHk4
Z2NISnZkbWxrWlhNZ2RHaGxJSE4wY21sdVp5QjJZV3gxWlNCdlppQmhJSEJoY21GdFpYUmxjaUJo
Ykc5dVp5QjNhWFJvSUdsMGMxeHVJQ0F2THlCa1pYQjBhQ0J5WVhSb1pYSWdkR2hoYmlCeVpYTnZi
SFpwYm1jZ2FYUWdhVzF0WldScFlYUmxiSGt1WEc0Z0lIQjFjMmhUZEhKcGJtZFFZWEpoYlRvZ1pu
VnVZM1JwYjI0b2MzUnlhVzVuTENCMGVYQmxLU0I3WEc0Z0lDQWdkR2hwY3k1d2RYTm9RMjl1ZEdW
NGRDZ3BPMXh1SUNBZ0lIUm9hWE11Y0hWemFGTjBjbWx1WnloMGVYQmxLVHRjYmx4dUlDQWdJQzh2
SUVsbUlHbDBKM01nWVNCemRXSmxlSEJ5WlhOemFXOXVMQ0IwYUdVZ2MzUnlhVzVuSUhKbGMzVnNk
Rnh1SUNBZ0lDOHZJSGRwYkd3Z1ltVWdjSFZ6YUdWa0lHRm1kR1Z5SUhSb2FYTWdiM0JqYjJSbExs
eHVJQ0FnSUdsbUlDaDBlWEJsSUNFOVBTQW5VM1ZpUlhod2NtVnpjMmx2YmljcElIdGNiaUFnSUNB
Z0lHbG1JQ2gwZVhCbGIyWWdjM1J5YVc1bklEMDlQU0FuYzNSeWFXNW5KeWtnZTF4dUlDQWdJQ0Fn
SUNCMGFHbHpMbkIxYzJoVGRISnBibWNvYzNSeWFXNW5LVHRjYmlBZ0lDQWdJSDBnWld4elpTQjdY
RzRnSUNBZ0lDQWdJSFJvYVhNdWNIVnphRk4wWVdOclRHbDBaWEpoYkNoemRISnBibWNwTzF4dUlD
QWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ2ZTeGNibHh1SUNCbGJYQjBlVWhoYzJnNklHWjFibU4wYVc5
dUtHOXRhWFJGYlhCMGVTa2dlMXh1SUNBZ0lHbG1JQ2gwYUdsekxuUnlZV05yU1dSektTQjdYRzRn
SUNBZ0lDQjBhR2x6TG5CMWMyZ29KM3Q5SnlrN0lDOHZJR2hoYzJoSlpITmNiaUFnSUNCOVhHNGdJ
Q0FnYVdZZ0tIUm9hWE11YzNSeWFXNW5VR0Z5WVcxektTQjdYRzRnSUNBZ0lDQjBhR2x6TG5CMWMy
Z29KM3Q5SnlrN0lDOHZJR2hoYzJoRGIyNTBaWGgwYzF4dUlDQWdJQ0FnZEdocGN5NXdkWE5vS0Nk
N2ZTY3BPeUF2THlCb1lYTm9WSGx3WlhOY2JpQWdJQ0I5WEc0Z0lDQWdkR2hwY3k1d2RYTm9VM1Jo
WTJ0TWFYUmxjbUZzS0c5dGFYUkZiWEIwZVNBL0lDZDFibVJsWm1sdVpXUW5JRG9nSjN0OUp5azdY
RzRnSUgwc1hHNGdJSEIxYzJoSVlYTm9PaUJtZFc1amRHbHZiaWdwSUh0Y2JpQWdJQ0JwWmlBb2RH
aHBjeTVvWVhOb0tTQjdYRzRnSUNBZ0lDQjBhR2x6TG1oaGMyaGxjeTV3ZFhOb0tIUm9hWE11YUdG
emFDazdYRzRnSUNBZ2ZWeHVJQ0FnSUhSb2FYTXVhR0Z6YUNBOUlIdDJZV3gxWlhNNklGdGRMQ0Iw
ZVhCbGN6b2dXMTBzSUdOdmJuUmxlSFJ6T2lCYlhTd2dhV1J6T2lCYlhYMDdYRzRnSUgwc1hHNGdJ
SEJ2Y0VoaGMyZzZJR1oxYm1OMGFXOXVLQ2tnZTF4dUlDQWdJR3hsZENCb1lYTm9JRDBnZEdocGN5
NW9ZWE5vTzF4dUlDQWdJSFJvYVhNdWFHRnphQ0E5SUhSb2FYTXVhR0Z6YUdWekxuQnZjQ2dwTzF4
dVhHNGdJQ0FnYVdZZ0tIUm9hWE11ZEhKaFkydEpaSE1wSUh0Y2JpQWdJQ0FnSUhSb2FYTXVjSFZ6
YUNoMGFHbHpMbTlpYW1WamRFeHBkR1Z5WVd3b2FHRnphQzVwWkhNcEtUdGNiaUFnSUNCOVhHNGdJ
Q0FnYVdZZ0tIUm9hWE11YzNSeWFXNW5VR0Z5WVcxektTQjdYRzRnSUNBZ0lDQjBhR2x6TG5CMWMy
Z29kR2hwY3k1dlltcGxZM1JNYVhSbGNtRnNLR2hoYzJndVkyOXVkR1Y0ZEhNcEtUdGNiaUFnSUNB
Z0lIUm9hWE11Y0hWemFDaDBhR2x6TG05aWFtVmpkRXhwZEdWeVlXd29hR0Z6YUM1MGVYQmxjeWtw
TzF4dUlDQWdJSDFjYmx4dUlDQWdJSFJvYVhNdWNIVnphQ2gwYUdsekxtOWlhbVZqZEV4cGRHVnlZ
V3dvYUdGemFDNTJZV3gxWlhNcEtUdGNiaUFnZlN4Y2JseHVJQ0F2THlCYmNIVnphRk4wY21sdVox
MWNiaUFnTHk5Y2JpQWdMeThnVDI0Z2MzUmhZMnNzSUdKbFptOXlaVG9nTGk0dVhHNGdJQzh2SUU5
dUlITjBZV05yTENCaFpuUmxjam9nY1hWdmRHVmtVM1J5YVc1bktITjBjbWx1Wnlrc0lDNHVMbHh1
SUNBdkwxeHVJQ0F2THlCUWRYTm9JR0VnY1hWdmRHVmtJSFpsY25OcGIyNGdiMllnWUhOMGNtbHVa
MkFnYjI1MGJ5QjBhR1VnYzNSaFkydGNiaUFnY0hWemFGTjBjbWx1WnpvZ1puVnVZM1JwYjI0b2Mz
UnlhVzVuS1NCN1hHNGdJQ0FnZEdocGN5NXdkWE5vVTNSaFkydE1hWFJsY21Gc0tIUm9hWE11Y1hW
dmRHVmtVM1J5YVc1bktITjBjbWx1WnlrcE8xeHVJQ0I5TEZ4dVhHNGdJQzh2SUZ0d2RYTm9UR2ww
WlhKaGJGMWNiaUFnTHk5Y2JpQWdMeThnVDI0Z2MzUmhZMnNzSUdKbFptOXlaVG9nTGk0dVhHNGdJ
Qzh2SUU5dUlITjBZV05yTENCaFpuUmxjam9nZG1Gc2RXVXNJQzR1TGx4dUlDQXZMMXh1SUNBdkx5
QlFkWE5vWlhNZ1lTQjJZV3gxWlNCdmJuUnZJSFJvWlNCemRHRmpheTRnVkdocGN5QnZjR1Z5WVhS
cGIyNGdjSEpsZG1WdWRITmNiaUFnTHk4Z2RHaGxJR052YlhCcGJHVnlJR1p5YjIwZ1kzSmxZWFJw
Ym1jZ1lTQjBaVzF3YjNKaGNua2dkbUZ5YVdGaWJHVWdkRzhnYUc5c1pGeHVJQ0F2THlCcGRDNWNi
aUFnY0hWemFFeHBkR1Z5WVd3NklHWjFibU4wYVc5dUtIWmhiSFZsS1NCN1hHNGdJQ0FnZEdocGN5
NXdkWE5vVTNSaFkydE1hWFJsY21Gc0tIWmhiSFZsS1R0Y2JpQWdmU3hjYmx4dUlDQXZMeUJiY0hW
emFGQnliMmR5WVcxZFhHNGdJQzh2WEc0Z0lDOHZJRTl1SUhOMFlXTnJMQ0JpWldadmNtVTZJQzR1
TGx4dUlDQXZMeUJQYmlCemRHRmpheXdnWVdaMFpYSTZJSEJ5YjJkeVlXMG9aM1ZwWkNrc0lDNHVM
bHh1SUNBdkwxeHVJQ0F2THlCUWRYTm9JR0VnY0hKdlozSmhiU0JsZUhCeVpYTnphVzl1SUc5dWRH
OGdkR2hsSUhOMFlXTnJMaUJVYUdseklIUmhhMlZ6WEc0Z0lDOHZJR0VnWTI5dGNHbHNaUzEwYVcx
bElHZDFhV1FnWVc1a0lHTnZiblpsY25SeklHbDBJR2x1ZEc4Z1lTQnlkVzUwYVcxbExXRmpZMlZ6
YzJsaWJHVmNiaUFnTHk4Z1pYaHdjbVZ6YzJsdmJpNWNiaUFnY0hWemFGQnliMmR5WVcwNklHWjFi
bU4wYVc5dUtHZDFhV1FwSUh0Y2JpQWdJQ0JwWmlBb1ozVnBaQ0FoUFNCdWRXeHNLU0I3WEc0Z0lD
QWdJQ0IwYUdsekxuQjFjMmhUZEdGamEweHBkR1Z5WVd3b2RHaHBjeTV3Y205bmNtRnRSWGh3Y21W
emMybHZiaWhuZFdsa0tTazdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUhSb2FYTXVjSFZ6
YUZOMFlXTnJUR2wwWlhKaGJDaHVkV3hzS1R0Y2JpQWdJQ0I5WEc0Z0lIMHNYRzVjYmlBZ0x5OGdX
M0psWjJsemRHVnlSR1ZqYjNKaGRHOXlYVnh1SUNBdkwxeHVJQ0F2THlCUGJpQnpkR0ZqYXl3Z1lt
Vm1iM0psT2lCb1lYTm9MQ0J3Y205bmNtRnRMQ0J3WVhKaGJYTXVMaTRzSUM0dUxseHVJQ0F2THlC
UGJpQnpkR0ZqYXl3Z1lXWjBaWEk2SUM0dUxseHVJQ0F2TDF4dUlDQXZMeUJRYjNCeklHOW1aaUIw
YUdVZ1pHVmpiM0poZEc5eUozTWdjR0Z5WVcxbGRHVnljeXdnYVc1MmIydGxjeUIwYUdVZ1pHVmpi
M0poZEc5eUxGeHVJQ0F2THlCaGJtUWdhVzV6WlhKMGN5QjBhR1VnWkdWamIzSmhkRzl5SUdsdWRH
OGdkR2hsSUdSbFkyOXlZWFJ2Y25NZ2JHbHpkQzVjYmlBZ2NtVm5hWE4wWlhKRVpXTnZjbUYwYjNJ
b2NHRnlZVzFUYVhwbExDQnVZVzFsS1NCN1hHNGdJQ0FnYkdWMElHWnZkVzVrUkdWamIzSmhkRzl5
SUQwZ2RHaHBjeTV1WVcxbFRHOXZhM1Z3S0Nka1pXTnZjbUYwYjNKekp5d2dibUZ0WlN3Z0oyUmxZ
Mjl5WVhSdmNpY3BMRnh1SUNBZ0lDQWdJQ0J2Y0hScGIyNXpJRDBnZEdocGN5NXpaWFIxY0VobGJI
Qmxja0Z5WjNNb2JtRnRaU3dnY0dGeVlXMVRhWHBsS1R0Y2JseHVJQ0FnSUhSb2FYTXVaR1ZqYjNK
aGRHOXljeTV3ZFhOb0tGdGNiaUFnSUNBZ0lDZG1iaUE5SUNjc1hHNGdJQ0FnSUNCMGFHbHpMbVJs
WTI5eVlYUnZjbk11Wm5WdVkzUnBiMjVEWVd4c0tHWnZkVzVrUkdWamIzSmhkRzl5TENBbkp5d2dX
eWRtYmljc0lDZHdjbTl3Y3ljc0lDZGpiMjUwWVdsdVpYSW5MQ0J2Y0hScGIyNXpYU2tzWEc0Z0lD
QWdJQ0FuSUh4OElHWnVPeWRjYmlBZ0lDQmRLVHRjYmlBZ2ZTeGNibHh1SUNBdkx5QmJhVzUyYjJ0
bFNHVnNjR1Z5WFZ4dUlDQXZMMXh1SUNBdkx5QlBiaUJ6ZEdGamF5d2dZbVZtYjNKbE9pQm9ZWE5v
TENCcGJuWmxjbk5sTENCd2NtOW5jbUZ0TENCd1lYSmhiWE11TGk0c0lDNHVMbHh1SUNBdkx5QlBi
aUJ6ZEdGamF5d2dZV1owWlhJNklISmxjM1ZzZENCdlppQm9aV3h3WlhJZ2FXNTJiMk5oZEdsdmJs
eHVJQ0F2TDF4dUlDQXZMeUJRYjNCeklHOW1aaUIwYUdVZ2FHVnNjR1Z5SjNNZ2NHRnlZVzFsZEdW
eWN5d2dhVzUyYjJ0bGN5QjBhR1VnYUdWc2NHVnlMRnh1SUNBdkx5QmhibVFnY0hWemFHVnpJSFJv
WlNCb1pXeHdaWEluY3lCeVpYUjFjbTRnZG1Gc2RXVWdiMjUwYnlCMGFHVWdjM1JoWTJzdVhHNGdJ
Qzh2WEc0Z0lDOHZJRWxtSUhSb1pTQm9aV3h3WlhJZ2FYTWdibTkwSUdadmRXNWtMQ0JnYUdWc2NH
VnlUV2x6YzJsdVoyQWdhWE1nWTJGc2JHVmtMbHh1SUNCcGJuWnZhMlZJWld4d1pYSTZJR1oxYm1O
MGFXOXVLSEJoY21GdFUybDZaU3dnYm1GdFpTd2dhWE5UYVcxd2JHVXBJSHRjYmlBZ0lDQnNaWFFn
Ym05dVNHVnNjR1Z5SUQwZ2RHaHBjeTV3YjNCVGRHRmpheWdwTEZ4dUlDQWdJQ0FnSUNCb1pXeHda
WElnUFNCMGFHbHpMbk5sZEhWd1NHVnNjR1Z5S0hCaGNtRnRVMmw2WlN3Z2JtRnRaU2tzWEc0Z0lD
QWdJQ0FnSUhOcGJYQnNaU0E5SUdselUybHRjR3hsSUQ4Z1cyaGxiSEJsY2k1dVlXMWxMQ0FuSUh4
OElDZGRJRG9nSnljN1hHNWNiaUFnSUNCc1pYUWdiRzl2YTNWd0lEMGdXeWNvSjEwdVkyOXVZMkYw
S0hOcGJYQnNaU3dnYm05dVNHVnNjR1Z5S1R0Y2JpQWdJQ0JwWmlBb0lYUm9hWE11YjNCMGFXOXVj
eTV6ZEhKcFkzUXBJSHRjYmlBZ0lDQWdJR3h2YjJ0MWNDNXdkWE5vS0NjZ2ZId2dKeXdnZEdocGN5
NWhiR2xoYzJGaWJHVW9KMmhsYkhCbGNuTXVhR1ZzY0dWeVRXbHpjMmx1WnljcEtUdGNiaUFnSUNC
OVhHNGdJQ0FnYkc5dmEzVndMbkIxYzJnb0p5a25LVHRjYmx4dUlDQWdJSFJvYVhNdWNIVnphQ2gw
YUdsekxuTnZkWEpqWlM1bWRXNWpkR2x2YmtOaGJHd29iRzl2YTNWd0xDQW5ZMkZzYkNjc0lHaGxi
SEJsY2k1allXeHNVR0Z5WVcxektTazdYRzRnSUgwc1hHNWNiaUFnTHk4Z1cybHVkbTlyWlV0dWIz
ZHVTR1ZzY0dWeVhWeHVJQ0F2TDF4dUlDQXZMeUJQYmlCemRHRmpheXdnWW1WbWIzSmxPaUJvWVhO
b0xDQnBiblpsY25ObExDQndjbTluY21GdExDQndZWEpoYlhNdUxpNHNJQzR1TGx4dUlDQXZMeUJQ
YmlCemRHRmpheXdnWVdaMFpYSTZJSEpsYzNWc2RDQnZaaUJvWld4d1pYSWdhVzUyYjJOaGRHbHZi
bHh1SUNBdkwxeHVJQ0F2THlCVWFHbHpJRzl3WlhKaGRHbHZiaUJwY3lCMWMyVmtJSGRvWlc0Z2RH
aGxJR2hsYkhCbGNpQnBjeUJyYm05M2JpQjBieUJsZUdsemRDeGNiaUFnTHk4Z2MyOGdZU0JnYUdW
c2NHVnlUV2x6YzJsdVoyQWdabUZzYkdKaFkyc2dhWE1nYm05MElISmxjWFZwY21Wa0xseHVJQ0Jw
Ym5admEyVkxibTkzYmtobGJIQmxjam9nWm5WdVkzUnBiMjRvY0dGeVlXMVRhWHBsTENCdVlXMWxL
U0I3WEc0Z0lDQWdiR1YwSUdobGJIQmxjaUE5SUhSb2FYTXVjMlYwZFhCSVpXeHdaWElvY0dGeVlX
MVRhWHBsTENCdVlXMWxLVHRjYmlBZ0lDQjBhR2x6TG5CMWMyZ29kR2hwY3k1emIzVnlZMlV1Wm5W
dVkzUnBiMjVEWVd4c0tHaGxiSEJsY2k1dVlXMWxMQ0FuWTJGc2JDY3NJR2hsYkhCbGNpNWpZV3hz
VUdGeVlXMXpLU2s3WEc0Z0lIMHNYRzVjYmlBZ0x5OGdXMmx1ZG05clpVRnRZbWxuZFc5MWMxMWNi
aUFnTHk5Y2JpQWdMeThnVDI0Z2MzUmhZMnNzSUdKbFptOXlaVG9nYUdGemFDd2dhVzUyWlhKelpT
d2djSEp2WjNKaGJTd2djR0Z5WVcxekxpNHVMQ0F1TGk1Y2JpQWdMeThnVDI0Z2MzUmhZMnNzSUdG
bWRHVnlPaUJ5WlhOMWJIUWdiMllnWkdsellXMWlhV2QxWVhScGIyNWNiaUFnTHk5Y2JpQWdMeThn
VkdocGN5QnZjR1Z5WVhScGIyNGdhWE1nZFhObFpDQjNhR1Z1SUdGdUlHVjRjSEpsYzNOcGIyNGdi
R2xyWlNCZ2UzdG1iMjk5ZldCY2JpQWdMeThnYVhNZ2NISnZkbWxrWldRc0lHSjFkQ0IzWlNCa2Iy
NG5kQ0JyYm05M0lHRjBJR052YlhCcGJHVXRkR2x0WlNCM2FHVjBhR1Z5SUdsMFhHNGdJQzh2SUds
eklHRWdhR1ZzY0dWeUlHOXlJR0VnY0dGMGFDNWNiaUFnTHk5Y2JpQWdMeThnVkdocGN5QnZjR1Z5
WVhScGIyNGdaVzFwZEhNZ2JXOXlaU0JqYjJSbElIUm9ZVzRnZEdobElHOTBhR1Z5SUc5d2RHbHZi
bk1zWEc0Z0lDOHZJR0Z1WkNCallXNGdZbVVnWVhadmFXUmxaQ0JpZVNCd1lYTnphVzVuSUhSb1pT
QmdhMjV2ZDI1SVpXeHdaWEp6WUNCaGJtUmNiaUFnTHk4Z1lHdHViM2R1U0dWc2NHVnljMDl1Ykhs
Z0lHWnNZV2R6SUdGMElHTnZiWEJwYkdVdGRHbHRaUzVjYmlBZ2FXNTJiMnRsUVcxaWFXZDFiM1Z6
T2lCbWRXNWpkR2x2YmlodVlXMWxMQ0JvWld4d1pYSkRZV3hzS1NCN1hHNGdJQ0FnZEdocGN5NTFj
MlZTWldkcGMzUmxjaWduYUdWc2NHVnlKeWs3WEc1Y2JpQWdJQ0JzWlhRZ2JtOXVTR1ZzY0dWeUlE
MGdkR2hwY3k1d2IzQlRkR0ZqYXlncE8xeHVYRzRnSUNBZ2RHaHBjeTVsYlhCMGVVaGhjMmdvS1R0
Y2JpQWdJQ0JzWlhRZ2FHVnNjR1Z5SUQwZ2RHaHBjeTV6WlhSMWNFaGxiSEJsY2lnd0xDQnVZVzFs
TENCb1pXeHdaWEpEWVd4c0tUdGNibHh1SUNBZ0lHeGxkQ0JvWld4d1pYSk9ZVzFsSUQwZ2RHaHBj
eTVzWVhOMFNHVnNjR1Z5SUQwZ2RHaHBjeTV1WVcxbFRHOXZhM1Z3S0Nkb1pXeHdaWEp6Snl3Z2Jt
RnRaU3dnSjJobGJIQmxjaWNwTzF4dVhHNGdJQ0FnYkdWMElHeHZiMnQxY0NBOUlGc25LQ2NzSUNj
b2FHVnNjR1Z5SUQwZ0p5d2dhR1ZzY0dWeVRtRnRaU3dnSnlCOGZDQW5MQ0J1YjI1SVpXeHdaWElz
SUNjcEoxMDdYRzRnSUNBZ2FXWWdLQ0YwYUdsekxtOXdkR2x2Ym5NdWMzUnlhV04wS1NCN1hHNGdJ
Q0FnSUNCc2IyOXJkWEJiTUYwZ1BTQW5LR2hsYkhCbGNpQTlJQ2M3WEc0Z0lDQWdJQ0JzYjI5cmRY
QXVjSFZ6YUNoY2JpQWdJQ0FnSUNBZ0p5QWhQU0J1ZFd4c0lEOGdhR1ZzY0dWeUlEb2dKeXhjYmlB
Z0lDQWdJQ0FnZEdocGN5NWhiR2xoYzJGaWJHVW9KMmhsYkhCbGNuTXVhR1ZzY0dWeVRXbHpjMmx1
WnljcFhHNGdJQ0FnSUNBcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhSb2FYTXVjSFZ6YUNoYlhHNGdJ
Q0FnSUNBZ0lDY29KeXdnYkc5dmEzVndMRnh1SUNBZ0lDQWdJQ0FvYUdWc2NHVnlMbkJoY21GdGMw
bHVhWFFnUHlCYkp5a3NLQ2NzSUdobGJIQmxjaTV3WVhKaGJYTkpibWwwWFNBNklGdGRLU3dnSnlr
c0p5eGNiaUFnSUNBZ0lDQWdKeWgwZVhCbGIyWWdhR1ZzY0dWeUlEMDlQU0FuTENCMGFHbHpMbUZz
YVdGellXSnNaU2duWENKbWRXNWpkR2x2Ymx3aUp5a3NJQ2NnUHlBbkxGeHVJQ0FnSUNBZ0lDQjBh
R2x6TG5OdmRYSmpaUzVtZFc1amRHbHZia05oYkd3b0oyaGxiSEJsY2ljc0lDZGpZV3hzSnl3Z2FH
VnNjR1Z5TG1OaGJHeFFZWEpoYlhNcExDQW5JRG9nYUdWc2NHVnlLU2tuWEc0Z0lDQWdYU2s3WEc0
Z0lIMHNYRzVjYmlBZ0x5OGdXMmx1ZG05clpWQmhjblJwWVd4ZFhHNGdJQzh2WEc0Z0lDOHZJRTl1
SUhOMFlXTnJMQ0JpWldadmNtVTZJR052Ym5SbGVIUXNJQzR1TGx4dUlDQXZMeUJQYmlCemRHRmph
eUJoWm5SbGNqb2djbVZ6ZFd4MElHOW1JSEJoY25ScFlXd2dhVzUyYjJOaGRHbHZibHh1SUNBdkwx
eHVJQ0F2THlCVWFHbHpJRzl3WlhKaGRHbHZiaUJ3YjNCeklHOW1aaUJoSUdOdmJuUmxlSFFzSUds
dWRtOXJaWE1nWVNCd1lYSjBhV0ZzSUhkcGRHZ2dkR2hoZENCamIyNTBaWGgwTEZ4dUlDQXZMeUJo
Ym1RZ2NIVnphR1Z6SUhSb1pTQnlaWE4xYkhRZ2IyWWdkR2hsSUdsdWRtOWpZWFJwYjI0Z1ltRmph
eTVjYmlBZ2FXNTJiMnRsVUdGeWRHbGhiRG9nWm5WdVkzUnBiMjRvYVhORWVXNWhiV2xqTENCdVlX
MWxMQ0JwYm1SbGJuUXBJSHRjYmlBZ0lDQnNaWFFnY0dGeVlXMXpJRDBnVzEwc1hHNGdJQ0FnSUNB
Z0lHOXdkR2x2Ym5NZ1BTQjBhR2x6TG5ObGRIVndVR0Z5WVcxektHNWhiV1VzSURFc0lIQmhjbUZ0
Y3lrN1hHNWNiaUFnSUNCcFppQW9hWE5FZVc1aGJXbGpLU0I3WEc0Z0lDQWdJQ0J1WVcxbElEMGdk
R2hwY3k1d2IzQlRkR0ZqYXlncE8xeHVJQ0FnSUNBZ1pHVnNaWFJsSUc5d2RHbHZibk11Ym1GdFpU
dGNiaUFnSUNCOVhHNWNiaUFnSUNCcFppQW9hVzVrWlc1MEtTQjdYRzRnSUNBZ0lDQnZjSFJwYjI1
ekxtbHVaR1Z1ZENBOUlFcFRUMDR1YzNSeWFXNW5hV1o1S0dsdVpHVnVkQ2s3WEc0Z0lDQWdmVnh1
SUNBZ0lHOXdkR2x2Ym5NdWFHVnNjR1Z5Y3lBOUlDZG9aV3h3WlhKekp6dGNiaUFnSUNCdmNIUnBi
MjV6TG5CaGNuUnBZV3h6SUQwZ0ozQmhjblJwWVd4ekp6dGNiaUFnSUNCdmNIUnBiMjV6TG1SbFky
OXlZWFJ2Y25NZ1BTQW5ZMjl1ZEdGcGJtVnlMbVJsWTI5eVlYUnZjbk1uTzF4dVhHNGdJQ0FnYVdZ
Z0tDRnBjMFI1Ym1GdGFXTXBJSHRjYmlBZ0lDQWdJSEJoY21GdGN5NTFibk5vYVdaMEtIUm9hWE11
Ym1GdFpVeHZiMnQxY0NnbmNHRnlkR2xoYkhNbkxDQnVZVzFsTENBbmNHRnlkR2xoYkNjcEtUdGNi
aUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnY0dGeVlXMXpMblZ1YzJocFpuUW9ibUZ0WlNrN1hH
NGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tIUm9hWE11YjNCMGFXOXVjeTVqYjIxd1lYUXBJSHRjYmlB
Z0lDQWdJRzl3ZEdsdmJuTXVaR1Z3ZEdoeklEMGdKMlJsY0hSb2N5YzdYRzRnSUNBZ2ZWeHVJQ0Fn
SUc5d2RHbHZibk1nUFNCMGFHbHpMbTlpYW1WamRFeHBkR1Z5WVd3b2IzQjBhVzl1Y3lrN1hHNGdJ
Q0FnY0dGeVlXMXpMbkIxYzJnb2IzQjBhVzl1Y3lrN1hHNWNiaUFnSUNCMGFHbHpMbkIxYzJnb2RH
aHBjeTV6YjNWeVkyVXVablZ1WTNScGIyNURZV3hzS0NkamIyNTBZV2x1WlhJdWFXNTJiMnRsVUdG
eWRHbGhiQ2NzSUNjbkxDQndZWEpoYlhNcEtUdGNiaUFnZlN4Y2JseHVJQ0F2THlCYllYTnphV2R1
Vkc5SVlYTm9YVnh1SUNBdkwxeHVJQ0F2THlCUGJpQnpkR0ZqYXl3Z1ltVm1iM0psT2lCMllXeDFa
U3dnTGk0dUxDQm9ZWE5vTENBdUxpNWNiaUFnTHk4Z1QyNGdjM1JoWTJzc0lHRm1kR1Z5T2lBdUxp
NHNJR2hoYzJnc0lDNHVMbHh1SUNBdkwxeHVJQ0F2THlCUWIzQnpJR0VnZG1Gc2RXVWdiMlptSUhS
b1pTQnpkR0ZqYXlCaGJtUWdZWE56YVdkdWN5QnBkQ0IwYnlCMGFHVWdZM1Z5Y21WdWRDQm9ZWE5v
WEc0Z0lHRnpjMmxuYmxSdlNHRnphRG9nWm5WdVkzUnBiMjRvYTJWNUtTQjdYRzRnSUNBZ2JHVjBJ
SFpoYkhWbElEMGdkR2hwY3k1d2IzQlRkR0ZqYXlncExGeHVJQ0FnSUNBZ0lDQmpiMjUwWlhoMExG
eHVJQ0FnSUNBZ0lDQjBlWEJsTEZ4dUlDQWdJQ0FnSUNCcFpEdGNibHh1SUNBZ0lHbG1JQ2gwYUds
ekxuUnlZV05yU1dSektTQjdYRzRnSUNBZ0lDQnBaQ0E5SUhSb2FYTXVjRzl3VTNSaFkyc29LVHRj
YmlBZ0lDQjlYRzRnSUNBZ2FXWWdLSFJvYVhNdWMzUnlhVzVuVUdGeVlXMXpLU0I3WEc0Z0lDQWdJ
Q0IwZVhCbElEMGdkR2hwY3k1d2IzQlRkR0ZqYXlncE8xeHVJQ0FnSUNBZ1kyOXVkR1Y0ZENBOUlI
Um9hWE11Y0c5d1UzUmhZMnNvS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JzWlhRZ2FHRnphQ0E5SUhS
b2FYTXVhR0Z6YUR0Y2JpQWdJQ0JwWmlBb1kyOXVkR1Y0ZENrZ2UxeHVJQ0FnSUNBZ2FHRnphQzVq
YjI1MFpYaDBjMXRyWlhsZElEMGdZMjl1ZEdWNGREdGNiaUFnSUNCOVhHNGdJQ0FnYVdZZ0tIUjVj
R1VwSUh0Y2JpQWdJQ0FnSUdoaGMyZ3VkSGx3WlhOYmEyVjVYU0E5SUhSNWNHVTdYRzRnSUNBZ2ZW
eHVJQ0FnSUdsbUlDaHBaQ2tnZTF4dUlDQWdJQ0FnYUdGemFDNXBaSE5iYTJWNVhTQTlJR2xrTzF4
dUlDQWdJSDFjYmlBZ0lDQm9ZWE5vTG5aaGJIVmxjMXRyWlhsZElEMGdkbUZzZFdVN1hHNGdJSDBz
WEc1Y2JpQWdjSFZ6YUVsa09pQm1kVzVqZEdsdmJpaDBlWEJsTENCdVlXMWxMQ0JqYUdsc1pDa2dl
MXh1SUNBZ0lHbG1JQ2gwZVhCbElEMDlQU0FuUW14dlkydFFZWEpoYlNjcElIdGNiaUFnSUNBZ0lI
Um9hWE11Y0hWemFGTjBZV05yVEdsMFpYSmhiQ2hjYmlBZ0lDQWdJQ0FnSUNBbllteHZZMnRRWVhK
aGJYTmJKeUFySUc1aGJXVmJNRjBnS3lBblhTNXdZWFJvV3ljZ0t5QnVZVzFsV3pGZElDc2dKMTBu
WEc0Z0lDQWdJQ0FnSUNBZ0t5QW9ZMmhwYkdRZ1B5QW5JQ3NnSnlBcklFcFRUMDR1YzNSeWFXNW5h
V1o1S0NjdUp5QXJJR05vYVd4a0tTQTZJQ2NuS1NrN1hHNGdJQ0FnZlNCbGJITmxJR2xtSUNoMGVY
QmxJRDA5UFNBblVHRjBhRVY0Y0hKbGMzTnBiMjRuS1NCN1hHNGdJQ0FnSUNCMGFHbHpMbkIxYzJo
VGRISnBibWNvYm1GdFpTazdYRzRnSUNBZ2ZTQmxiSE5sSUdsbUlDaDBlWEJsSUQwOVBTQW5VM1Zp
Ulhod2NtVnpjMmx2YmljcElIdGNiaUFnSUNBZ0lIUm9hWE11Y0hWemFGTjBZV05yVEdsMFpYSmhi
Q2duZEhKMVpTY3BPMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNCMGFHbHpMbkIxYzJoVGRH
RmphMHhwZEdWeVlXd29KMjUxYkd3bktUdGNiaUFnSUNCOVhHNGdJSDBzWEc1Y2JpQWdMeThnU0VW
TVVFVlNVMXh1WEc0Z0lHTnZiWEJwYkdWeU9pQktZWFpoVTJOeWFYQjBRMjl0Y0dsc1pYSXNYRzVj
YmlBZ1kyOXRjR2xzWlVOb2FXeGtjbVZ1T2lCbWRXNWpkR2x2YmlobGJuWnBjbTl1YldWdWRDd2di
M0IwYVc5dWN5a2dlMXh1SUNBZ0lHeGxkQ0JqYUdsc1pISmxiaUE5SUdWdWRtbHliMjV0Wlc1MExt
Tm9hV3hrY21WdUxDQmphR2xzWkN3Z1kyOXRjR2xzWlhJN1hHNWNiaUFnSUNCbWIzSWdLR3hsZENC
cElEMGdNQ3dnYkNBOUlHTm9hV3hrY21WdUxteGxibWQwYURzZ2FTQThJR3c3SUdrckt5a2dlMXh1
SUNBZ0lDQWdZMmhwYkdRZ1BTQmphR2xzWkhKbGJsdHBYVHRjYmlBZ0lDQWdJR052YlhCcGJHVnlJ
RDBnYm1WM0lIUm9hWE11WTI5dGNHbHNaWElvS1RzZ0lDQWdMeThnWlhOc2FXNTBMV1JwYzJGaWJH
VXRiR2x1WlNCdVpYY3RZMkZ3WEc1Y2JpQWdJQ0FnSUd4bGRDQmxlR2x6ZEdsdVp5QTlJSFJvYVhN
dWJXRjBZMmhGZUdsemRHbHVaMUJ5YjJkeVlXMG9ZMmhwYkdRcE8xeHVYRzRnSUNBZ0lDQnBaaUFv
WlhocGMzUnBibWNnUFQwZ2JuVnNiQ2tnZTF4dUlDQWdJQ0FnSUNCMGFHbHpMbU52Ym5SbGVIUXVj
SEp2WjNKaGJYTXVjSFZ6YUNnbkp5azdJQ0FnSUNBdkx5QlFiR0ZqWldodmJHUmxjaUIwYnlCd2Nt
VjJaVzUwSUc1aGJXVWdZMjl1Wm14cFkzUnpJR1p2Y2lCdVpYTjBaV1FnWTJocGJHUnlaVzVjYmlB
Z0lDQWdJQ0FnYkdWMElHbHVaR1Y0SUQwZ2RHaHBjeTVqYjI1MFpYaDBMbkJ5YjJkeVlXMXpMbXhs
Ym1kMGFEdGNiaUFnSUNBZ0lDQWdZMmhwYkdRdWFXNWtaWGdnUFNCcGJtUmxlRHRjYmlBZ0lDQWdJ
Q0FnWTJocGJHUXVibUZ0WlNBOUlDZHdjbTluY21GdEp5QXJJR2x1WkdWNE8xeHVJQ0FnSUNBZ0lD
QjBhR2x6TG1OdmJuUmxlSFF1Y0hKdlozSmhiWE5iYVc1a1pYaGRJRDBnWTI5dGNHbHNaWEl1WTI5
dGNHbHNaU2hqYUdsc1pDd2diM0IwYVc5dWN5d2dkR2hwY3k1amIyNTBaWGgwTENBaGRHaHBjeTV3
Y21WamIyMXdhV3hsS1R0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTVqYjI1MFpYaDBMbVJsWTI5eVlYUnZj
bk5iYVc1a1pYaGRJRDBnWTI5dGNHbHNaWEl1WkdWamIzSmhkRzl5Y3p0Y2JpQWdJQ0FnSUNBZ2RH
aHBjeTVqYjI1MFpYaDBMbVZ1ZG1seWIyNXRaVzUwYzF0cGJtUmxlRjBnUFNCamFHbHNaRHRjYmx4
dUlDQWdJQ0FnSUNCMGFHbHpMblZ6WlVSbGNIUm9jeUE5SUhSb2FYTXVkWE5sUkdWd2RHaHpJSHg4
SUdOdmJYQnBiR1Z5TG5WelpVUmxjSFJvY3p0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTUxYzJWQ2JHOWph
MUJoY21GdGN5QTlJSFJvYVhNdWRYTmxRbXh2WTJ0UVlYSmhiWE1nZkh3Z1kyOXRjR2xzWlhJdWRY
TmxRbXh2WTJ0UVlYSmhiWE03WEc0Z0lDQWdJQ0FnSUdOb2FXeGtMblZ6WlVSbGNIUm9jeUE5SUhS
b2FYTXVkWE5sUkdWd2RHaHpPMXh1SUNBZ0lDQWdJQ0JqYUdsc1pDNTFjMlZDYkc5amExQmhjbUZ0
Y3lBOUlIUm9hWE11ZFhObFFteHZZMnRRWVhKaGJYTTdYRzRnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJ
Q0FnSUNBZ0lDQmphR2xzWkM1cGJtUmxlQ0E5SUdWNGFYTjBhVzVuTG1sdVpHVjRPMXh1SUNBZ0lD
QWdJQ0JqYUdsc1pDNXVZVzFsSUQwZ0ozQnliMmR5WVcwbklDc2daWGhwYzNScGJtY3VhVzVrWlhn
N1hHNWNiaUFnSUNBZ0lDQWdkR2hwY3k1MWMyVkVaWEIwYUhNZ1BTQjBhR2x6TG5WelpVUmxjSFJv
Y3lCOGZDQmxlR2x6ZEdsdVp5NTFjMlZFWlhCMGFITTdYRzRnSUNBZ0lDQWdJSFJvYVhNdWRYTmxR
bXh2WTJ0UVlYSmhiWE1nUFNCMGFHbHpMblZ6WlVKc2IyTnJVR0Z5WVcxeklIeDhJR1Y0YVhOMGFX
NW5MblZ6WlVKc2IyTnJVR0Z5WVcxek8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdmU3hjYmlB
Z2JXRjBZMmhGZUdsemRHbHVaMUJ5YjJkeVlXMDZJR1oxYm1OMGFXOXVLR05vYVd4a0tTQjdYRzRn
SUNBZ1ptOXlJQ2hzWlhRZ2FTQTlJREFzSUd4bGJpQTlJSFJvYVhNdVkyOXVkR1Y0ZEM1bGJuWnBj
bTl1YldWdWRITXViR1Z1WjNSb095QnBJRHdnYkdWdU95QnBLeXNwSUh0Y2JpQWdJQ0FnSUd4bGRD
QmxiblpwY205dWJXVnVkQ0E5SUhSb2FYTXVZMjl1ZEdWNGRDNWxiblpwY205dWJXVnVkSE5iYVYw
N1hHNGdJQ0FnSUNCcFppQW9aVzUyYVhKdmJtMWxiblFnSmlZZ1pXNTJhWEp2Ym0xbGJuUXVaWEYx
WVd4ektHTm9hV3hrS1NrZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1pXNTJhWEp2Ym0xbGJuUTdY
RzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0I5TEZ4dVhHNGdJSEJ5YjJkeVlXMUZlSEJ5WlhOemFX
OXVPaUJtZFc1amRHbHZiaWhuZFdsa0tTQjdYRzRnSUNBZ2JHVjBJR05vYVd4a0lEMGdkR2hwY3k1
bGJuWnBjbTl1YldWdWRDNWphR2xzWkhKbGJsdG5kV2xrWFN4Y2JpQWdJQ0FnSUNBZ2NISnZaM0po
YlZCaGNtRnRjeUE5SUZ0amFHbHNaQzVwYm1SbGVDd2dKMlJoZEdFbkxDQmphR2xzWkM1aWJHOWph
MUJoY21GdGMxMDdYRzVjYmlBZ0lDQnBaaUFvZEdocGN5NTFjMlZDYkc5amExQmhjbUZ0Y3lCOGZD
QjBhR2x6TG5WelpVUmxjSFJvY3lrZ2UxeHVJQ0FnSUNBZ2NISnZaM0poYlZCaGNtRnRjeTV3ZFhO
b0tDZGliRzlqYTFCaGNtRnRjeWNwTzF4dUlDQWdJSDFjYmlBZ0lDQnBaaUFvZEdocGN5NTFjMlZF
WlhCMGFITXBJSHRjYmlBZ0lDQWdJSEJ5YjJkeVlXMVFZWEpoYlhNdWNIVnphQ2duWkdWd2RHaHpK
eWs3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdjbVYwZFhKdUlDZGpiMjUwWVdsdVpYSXVjSEp2WjNKaGJT
Z25JQ3NnY0hKdlozSmhiVkJoY21GdGN5NXFiMmx1S0Njc0lDY3BJQ3NnSnlrbk8xeHVJQ0I5TEZ4
dVhHNGdJSFZ6WlZKbFoybHpkR1Z5T2lCbWRXNWpkR2x2YmlodVlXMWxLU0I3WEc0Z0lDQWdhV1ln
S0NGMGFHbHpMbkpsWjJsemRHVnljMXR1WVcxbFhTa2dlMXh1SUNBZ0lDQWdkR2hwY3k1eVpXZHBj
M1JsY25OYmJtRnRaVjBnUFNCMGNuVmxPMXh1SUNBZ0lDQWdkR2hwY3k1eVpXZHBjM1JsY25NdWJH
bHpkQzV3ZFhOb0tHNWhiV1VwTzF4dUlDQWdJSDFjYmlBZ2ZTeGNibHh1SUNCd2RYTm9PaUJtZFc1
amRHbHZiaWhsZUhCeUtTQjdYRzRnSUNBZ2FXWWdLQ0VvWlhod2NpQnBibk4wWVc1alpXOW1JRXhw
ZEdWeVlXd3BLU0I3WEc0Z0lDQWdJQ0JsZUhCeUlEMGdkR2hwY3k1emIzVnlZMlV1ZDNKaGNDaGxl
SEJ5S1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0IwYUdsekxtbHViR2x1WlZOMFlXTnJMbkIxYzJnb1pY
aHdjaWs3WEc0Z0lDQWdjbVYwZFhKdUlHVjRjSEk3WEc0Z0lIMHNYRzVjYmlBZ2NIVnphRk4wWVdO
clRHbDBaWEpoYkRvZ1puVnVZM1JwYjI0b2FYUmxiU2tnZTF4dUlDQWdJSFJvYVhNdWNIVnphQ2h1
WlhjZ1RHbDBaWEpoYkNocGRHVnRLU2s3WEc0Z0lIMHNYRzVjYmlBZ2NIVnphRk52ZFhKalpUb2da
blZ1WTNScGIyNG9jMjkxY21ObEtTQjdYRzRnSUNBZ2FXWWdLSFJvYVhNdWNHVnVaR2x1WjBOdmJu
UmxiblFwSUh0Y2JpQWdJQ0FnSUhSb2FYTXVjMjkxY21ObExuQjFjMmdvWEc0Z0lDQWdJQ0FnSUNB
Z2RHaHBjeTVoY0hCbGJtUlViMEoxWm1abGNpaDBhR2x6TG5OdmRYSmpaUzV4ZFc5MFpXUlRkSEpw
Ym1jb2RHaHBjeTV3Wlc1a2FXNW5RMjl1ZEdWdWRDa3NJSFJvYVhNdWNHVnVaR2x1WjB4dlkyRjBh
Vzl1S1NrN1hHNGdJQ0FnSUNCMGFHbHpMbkJsYm1ScGJtZERiMjUwWlc1MElEMGdkVzVrWldacGJt
VmtPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHbG1JQ2h6YjNWeVkyVXBJSHRjYmlBZ0lDQWdJSFJvYVhN
dWMyOTFjbU5sTG5CMWMyZ29jMjkxY21ObEtUdGNiaUFnSUNCOVhHNGdJSDBzWEc1Y2JpQWdjbVZ3
YkdGalpWTjBZV05yT2lCbWRXNWpkR2x2YmloallXeHNZbUZqYXlrZ2UxeHVJQ0FnSUd4bGRDQndj
bVZtYVhnZ1BTQmJKeWduWFN4Y2JpQWdJQ0FnSUNBZ2MzUmhZMnNzWEc0Z0lDQWdJQ0FnSUdOeVpX
RjBaV1JUZEdGamF5eGNiaUFnSUNBZ0lDQWdkWE5sWkV4cGRHVnlZV3c3WEc1Y2JpQWdJQ0F2S2lC
cGMzUmhibUoxYkNCcFoyNXZjbVVnYm1WNGRDQXFMMXh1SUNBZ0lHbG1JQ2doZEdocGN5NXBjMGx1
YkdsdVpTZ3BLU0I3WEc0Z0lDQWdJQ0IwYUhKdmR5QnVaWGNnUlhoalpYQjBhVzl1S0NkeVpYQnNZ
V05sVTNSaFkyc2diMjRnYm05dUxXbHViR2x1WlNjcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUM4dklG
ZGxJSGRoYm5RZ2RHOGdiV1Z5WjJVZ2RHaGxJR2x1YkdsdVpTQnpkR0YwWlcxbGJuUWdhVzUwYnlC
MGFHVWdjbVZ3YkdGalpXMWxiblFnYzNSaGRHVnRaVzUwSUhacFlTQW5MQ2RjYmlBZ0lDQnNaWFFn
ZEc5d0lEMGdkR2hwY3k1d2IzQlRkR0ZqYXloMGNuVmxLVHRjYmx4dUlDQWdJR2xtSUNoMGIzQWdh
VzV6ZEdGdVkyVnZaaUJNYVhSbGNtRnNLU0I3WEc0Z0lDQWdJQ0F2THlCTWFYUmxjbUZzY3lCa2J5
QnViM1FnYm1WbFpDQjBieUJpWlNCcGJteHBibVZrWEc0Z0lDQWdJQ0J6ZEdGamF5QTlJRnQwYjNB
dWRtRnNkV1ZkTzF4dUlDQWdJQ0FnY0hKbFptbDRJRDBnV3ljb0p5d2djM1JoWTJ0ZE8xeHVJQ0Fn
SUNBZ2RYTmxaRXhwZEdWeVlXd2dQU0IwY25WbE8xeHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJ
Q0F2THlCSFpYUWdiM0lnWTNKbFlYUmxJSFJvWlNCamRYSnlaVzUwSUhOMFlXTnJJRzVoYldVZ1pt
OXlJSFZ6WlNCaWVTQjBhR1VnYVc1c2FXNWxYRzRnSUNBZ0lDQmpjbVZoZEdWa1UzUmhZMnNnUFNC
MGNuVmxPMXh1SUNBZ0lDQWdiR1YwSUc1aGJXVWdQU0IwYUdsekxtbHVZM0pUZEdGamF5Z3BPMXh1
WEc0Z0lDQWdJQ0J3Y21WbWFYZ2dQU0JiSnlnb0p5d2dkR2hwY3k1d2RYTm9LRzVoYldVcExDQW5J
RDBnSnl3Z2RHOXdMQ0FuS1NkZE8xeHVJQ0FnSUNBZ2MzUmhZMnNnUFNCMGFHbHpMblJ2Y0ZOMFlX
TnJLQ2s3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdiR1YwSUdsMFpXMGdQU0JqWVd4c1ltRmpheTVqWVd4
c0tIUm9hWE1zSUhOMFlXTnJLVHRjYmx4dUlDQWdJR2xtSUNnaGRYTmxaRXhwZEdWeVlXd3BJSHRj
YmlBZ0lDQWdJSFJvYVhNdWNHOXdVM1JoWTJzb0tUdGNiaUFnSUNCOVhHNGdJQ0FnYVdZZ0tHTnla
V0YwWldSVGRHRmpheWtnZTF4dUlDQWdJQ0FnZEdocGN5NXpkR0ZqYTFOc2IzUXRMVHRjYmlBZ0lD
QjlYRzRnSUNBZ2RHaHBjeTV3ZFhOb0tIQnlaV1pwZUM1amIyNWpZWFFvYVhSbGJTd2dKeWtuS1Nr
N1hHNGdJSDBzWEc1Y2JpQWdhVzVqY2xOMFlXTnJPaUJtZFc1amRHbHZiaWdwSUh0Y2JpQWdJQ0Iw
YUdsekxuTjBZV05yVTJ4dmRDc3JPMXh1SUNBZ0lHbG1JQ2gwYUdsekxuTjBZV05yVTJ4dmRDQStJ
SFJvYVhNdWMzUmhZMnRXWVhKekxteGxibWQwYUNrZ2V5QjBhR2x6TG5OMFlXTnJWbUZ5Y3k1d2RY
Tm9LQ2R6ZEdGamF5Y2dLeUIwYUdsekxuTjBZV05yVTJ4dmRDazdJSDFjYmlBZ0lDQnlaWFIxY200
Z2RHaHBjeTUwYjNCVGRHRmphMDVoYldVb0tUdGNiaUFnZlN4Y2JpQWdkRzl3VTNSaFkydE9ZVzFs
T2lCbWRXNWpkR2x2YmlncElIdGNiaUFnSUNCeVpYUjFjbTRnSjNOMFlXTnJKeUFySUhSb2FYTXVj
M1JoWTJ0VGJHOTBPMXh1SUNCOUxGeHVJQ0JtYkhWemFFbHViR2x1WlRvZ1puVnVZM1JwYjI0b0tT
QjdYRzRnSUNBZ2JHVjBJR2x1YkdsdVpWTjBZV05ySUQwZ2RHaHBjeTVwYm14cGJtVlRkR0ZqYXp0
Y2JpQWdJQ0IwYUdsekxtbHViR2x1WlZOMFlXTnJJRDBnVzEwN1hHNGdJQ0FnWm05eUlDaHNaWFFn
YVNBOUlEQXNJR3hsYmlBOUlHbHViR2x1WlZOMFlXTnJMbXhsYm1kMGFEc2dhU0E4SUd4bGJqc2dh
U3NyS1NCN1hHNGdJQ0FnSUNCc1pYUWdaVzUwY25rZ1BTQnBibXhwYm1WVGRHRmphMXRwWFR0Y2Jp
QWdJQ0FnSUM4cUlHbHpkR0Z1WW5Wc0lHbG5ibTl5WlNCcFppQXFMMXh1SUNBZ0lDQWdhV1lnS0dW
dWRISjVJR2x1YzNSaGJtTmxiMllnVEdsMFpYSmhiQ2tnZTF4dUlDQWdJQ0FnSUNCMGFHbHpMbU52
YlhCcGJHVlRkR0ZqYXk1d2RYTm9LR1Z1ZEhKNUtUdGNiaUFnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJ
Q0FnSUNBZ0lHeGxkQ0J6ZEdGamF5QTlJSFJvYVhNdWFXNWpjbE4wWVdOcktDazdYRzRnSUNBZ0lD
QWdJSFJvYVhNdWNIVnphRk52ZFhKalpTaGJjM1JoWTJzc0lDY2dQU0FuTENCbGJuUnllU3dnSnpz
blhTazdYRzRnSUNBZ0lDQWdJSFJvYVhNdVkyOXRjR2xzWlZOMFlXTnJMbkIxYzJnb2MzUmhZMnNw
TzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ2ZTeGNiaUFnYVhOSmJteHBibVU2SUdaMWJtTjBh
Vzl1S0NrZ2UxeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxtbHViR2x1WlZOMFlXTnJMbXhsYm1kMGFE
dGNiaUFnZlN4Y2JseHVJQ0J3YjNCVGRHRmphem9nWm5WdVkzUnBiMjRvZDNKaGNIQmxaQ2tnZTF4
dUlDQWdJR3hsZENCcGJteHBibVVnUFNCMGFHbHpMbWx6U1c1c2FXNWxLQ2tzWEc0Z0lDQWdJQ0Fn
SUdsMFpXMGdQU0FvYVc1c2FXNWxJRDhnZEdocGN5NXBibXhwYm1WVGRHRmpheUE2SUhSb2FYTXVZ
Mjl0Y0dsc1pWTjBZV05yS1M1d2IzQW9LVHRjYmx4dUlDQWdJR2xtSUNnaGQzSmhjSEJsWkNBbUpp
QW9hWFJsYlNCcGJuTjBZVzVqWlc5bUlFeHBkR1Z5WVd3cEtTQjdYRzRnSUNBZ0lDQnlaWFIxY200
Z2FYUmxiUzUyWVd4MVpUdGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnYVdZZ0tDRnBibXhw
Ym1VcElIdGNiaUFnSUNBZ0lDQWdMeW9nYVhOMFlXNWlkV3dnYVdkdWIzSmxJRzVsZUhRZ0tpOWNi
aUFnSUNBZ0lDQWdhV1lnS0NGMGFHbHpMbk4wWVdOclUyeHZkQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lI
Um9jbTkzSUc1bGR5QkZlR05sY0hScGIyNG9KMGx1ZG1Gc2FXUWdjM1JoWTJzZ2NHOXdKeWs3WEc0
Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2RHaHBjeTV6ZEdGamExTnNiM1F0TFR0Y2JpQWdJQ0Fn
SUgxY2JpQWdJQ0FnSUhKbGRIVnliaUJwZEdWdE8xeHVJQ0FnSUgxY2JpQWdmU3hjYmx4dUlDQjBi
M0JUZEdGamF6b2dablZ1WTNScGIyNG9LU0I3WEc0Z0lDQWdiR1YwSUhOMFlXTnJJRDBnS0hSb2FY
TXVhWE5KYm14cGJtVW9LU0EvSUhSb2FYTXVhVzVzYVc1bFUzUmhZMnNnT2lCMGFHbHpMbU52YlhC
cGJHVlRkR0ZqYXlrc1hHNGdJQ0FnSUNBZ0lHbDBaVzBnUFNCemRHRmphMXR6ZEdGamF5NXNaVzVu
ZEdnZ0xTQXhYVHRjYmx4dUlDQWdJQzhxSUdsemRHRnVZblZzSUdsbmJtOXlaU0JwWmlBcUwxeHVJ
Q0FnSUdsbUlDaHBkR1Z0SUdsdWMzUmhibU5sYjJZZ1RHbDBaWEpoYkNrZ2UxeHVJQ0FnSUNBZ2Nt
VjBkWEp1SUdsMFpXMHVkbUZzZFdVN1hHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJSEpsZEhW
eWJpQnBkR1Z0TzF4dUlDQWdJSDFjYmlBZ2ZTeGNibHh1SUNCamIyNTBaWGgwVG1GdFpUb2dablZ1
WTNScGIyNG9ZMjl1ZEdWNGRDa2dlMXh1SUNBZ0lHbG1JQ2gwYUdsekxuVnpaVVJsY0hSb2N5QW1K
aUJqYjI1MFpYaDBLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdKMlJsY0hSb2Mxc25JQ3NnWTI5dWRH
VjRkQ0FySUNkZEp6dGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnY21WMGRYSnVJQ2RrWlhC
MGFDY2dLeUJqYjI1MFpYaDBPMXh1SUNBZ0lIMWNiaUFnZlN4Y2JseHVJQ0J4ZFc5MFpXUlRkSEpw
Ym1jNklHWjFibU4wYVc5dUtITjBjaWtnZTF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG5OdmRYSmpa
UzV4ZFc5MFpXUlRkSEpwYm1jb2MzUnlLVHRjYmlBZ2ZTeGNibHh1SUNCdlltcGxZM1JNYVhSbGNt
RnNPaUJtZFc1amRHbHZiaWh2WW1vcElIdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NXpiM1Z5WTJV
dWIySnFaV04wVEdsMFpYSmhiQ2h2WW1vcE8xeHVJQ0I5TEZ4dVhHNGdJR0ZzYVdGellXSnNaVG9n
Wm5WdVkzUnBiMjRvYm1GdFpTa2dlMXh1SUNBZ0lHeGxkQ0J5WlhRZ1BTQjBhR2x6TG1Gc2FXRnpa
WE5iYm1GdFpWMDdYRzRnSUNBZ2FXWWdLSEpsZENrZ2UxeHVJQ0FnSUNBZ2NtVjBMbkpsWm1WeVpX
NWpaVU52ZFc1MEt5czdYRzRnSUNBZ0lDQnlaWFIxY200Z2NtVjBPMXh1SUNBZ0lIMWNibHh1SUNB
Z0lISmxkQ0E5SUhSb2FYTXVZV3hwWVhObGMxdHVZVzFsWFNBOUlIUm9hWE11YzI5MWNtTmxMbmR5
WVhBb2JtRnRaU2s3WEc0Z0lDQWdjbVYwTG1Gc2FXRnpZV0pzWlNBOUlIUnlkV1U3WEc0Z0lDQWdj
bVYwTG5KbFptVnlaVzVqWlVOdmRXNTBJRDBnTVR0Y2JseHVJQ0FnSUhKbGRIVnliaUJ5WlhRN1hH
NGdJSDBzWEc1Y2JpQWdjMlYwZFhCSVpXeHdaWEk2SUdaMWJtTjBhVzl1S0hCaGNtRnRVMmw2WlN3
Z2JtRnRaU3dnWW14dlkydElaV3h3WlhJcElIdGNiaUFnSUNCc1pYUWdjR0Z5WVcxeklEMGdXMTBz
WEc0Z0lDQWdJQ0FnSUhCaGNtRnRjMGx1YVhRZ1BTQjBhR2x6TG5ObGRIVndTR1ZzY0dWeVFYSm5j
eWh1WVcxbExDQndZWEpoYlZOcGVtVXNJSEJoY21GdGN5d2dZbXh2WTJ0SVpXeHdaWElwTzF4dUlD
QWdJR3hsZENCbWIzVnVaRWhsYkhCbGNpQTlJSFJvYVhNdWJtRnRaVXh2YjJ0MWNDZ25hR1ZzY0dW
eWN5Y3NJRzVoYldVc0lDZG9aV3h3WlhJbktTeGNiaUFnSUNBZ0lDQWdZMkZzYkVOdmJuUmxlSFFn
UFNCMGFHbHpMbUZzYVdGellXSnNaU2hnSkh0MGFHbHpMbU52Ym5SbGVIUk9ZVzFsS0RBcGZTQWhQ
U0J1ZFd4c0lEOGdKSHQwYUdsekxtTnZiblJsZUhST1lXMWxLREFwZlNBNklIdDlZQ2s3WEc1Y2Jp
QWdJQ0J5WlhSMWNtNGdlMXh1SUNBZ0lDQWdjR0Z5WVcxek9pQndZWEpoYlhNc1hHNGdJQ0FnSUNC
d1lYSmhiWE5KYm1sME9pQndZWEpoYlhOSmJtbDBMRnh1SUNBZ0lDQWdibUZ0WlRvZ1ptOTFibVJJ
Wld4d1pYSXNYRzRnSUNBZ0lDQmpZV3hzVUdGeVlXMXpPaUJiWTJGc2JFTnZiblJsZUhSZExtTnZi
bU5oZENod1lYSmhiWE1wWEc0Z0lDQWdmVHRjYmlBZ2ZTeGNibHh1SUNCelpYUjFjRkJoY21GdGN6
b2dablZ1WTNScGIyNG9hR1ZzY0dWeUxDQndZWEpoYlZOcGVtVXNJSEJoY21GdGN5a2dlMXh1SUNB
Z0lHeGxkQ0J2Y0hScGIyNXpJRDBnZTMwc1hHNGdJQ0FnSUNBZ0lHTnZiblJsZUhSeklEMGdXMTBz
WEc0Z0lDQWdJQ0FnSUhSNWNHVnpJRDBnVzEwc1hHNGdJQ0FnSUNBZ0lHbGtjeUE5SUZ0ZExGeHVJ
Q0FnSUNBZ0lDQnZZbXBsWTNSQmNtZHpJRDBnSVhCaGNtRnRjeXhjYmlBZ0lDQWdJQ0FnY0dGeVlX
MDdYRzVjYmlBZ0lDQnBaaUFvYjJKcVpXTjBRWEpuY3lrZ2UxeHVJQ0FnSUNBZ2NHRnlZVzF6SUQw
Z1cxMDdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2IzQjBhVzl1Y3k1dVlXMWxJRDBnZEdocGN5NXhkVzkw
WldSVGRISnBibWNvYUdWc2NHVnlLVHRjYmlBZ0lDQnZjSFJwYjI1ekxtaGhjMmdnUFNCMGFHbHpM
bkJ2Y0ZOMFlXTnJLQ2s3WEc1Y2JpQWdJQ0JwWmlBb2RHaHBjeTUwY21GamEwbGtjeWtnZTF4dUlD
QWdJQ0FnYjNCMGFXOXVjeTVvWVhOb1NXUnpJRDBnZEdocGN5NXdiM0JUZEdGamF5Z3BPMXh1SUNB
Z0lIMWNiaUFnSUNCcFppQW9kR2hwY3k1emRISnBibWRRWVhKaGJYTXBJSHRjYmlBZ0lDQWdJRzl3
ZEdsdmJuTXVhR0Z6YUZSNWNHVnpJRDBnZEdocGN5NXdiM0JUZEdGamF5Z3BPMXh1SUNBZ0lDQWdi
M0IwYVc5dWN5NW9ZWE5vUTI5dWRHVjRkSE1nUFNCMGFHbHpMbkJ2Y0ZOMFlXTnJLQ2s3WEc0Z0lD
QWdmVnh1WEc0Z0lDQWdiR1YwSUdsdWRtVnljMlVnUFNCMGFHbHpMbkJ2Y0ZOMFlXTnJLQ2tzWEc0
Z0lDQWdJQ0FnSUhCeWIyZHlZVzBnUFNCMGFHbHpMbkJ2Y0ZOMFlXTnJLQ2s3WEc1Y2JpQWdJQ0F2
THlCQmRtOXBaQ0J6WlhSMGFXNW5JR1p1SUdGdVpDQnBiblpsY25ObElHbG1JRzVsYVhSb1pYSWdZ
WEpsSUhObGRDNGdWR2hwY3lCaGJHeHZkM05jYmlBZ0lDQXZMeUJvWld4d1pYSnpJSFJ2SUdSdklH
RWdZMmhsWTJzZ1ptOXlJR0JwWmlBb2IzQjBhVzl1Y3k1bWJpbGdYRzRnSUNBZ2FXWWdLSEJ5YjJk
eVlXMGdmSHdnYVc1MlpYSnpaU2tnZTF4dUlDQWdJQ0FnYjNCMGFXOXVjeTVtYmlBOUlIQnliMmR5
WVcwZ2ZId2dKMk52Ym5SaGFXNWxjaTV1YjI5d0p6dGNiaUFnSUNBZ0lHOXdkR2x2Ym5NdWFXNTJa
WEp6WlNBOUlHbHVkbVZ5YzJVZ2ZId2dKMk52Ym5SaGFXNWxjaTV1YjI5d0p6dGNiaUFnSUNCOVhH
NWNiaUFnSUNBdkx5QlVhR1VnY0dGeVlXMWxkR1Z5Y3lCbmJ5QnZiaUIwYnlCMGFHVWdjM1JoWTJz
Z2FXNGdiM0prWlhJZ0tHMWhhMmx1WnlCemRYSmxJSFJvWVhRZ2RHaGxlU0JoY21VZ1pYWmhiSFZo
ZEdWa0lHbHVJRzl5WkdWeUtWeHVJQ0FnSUM4dklITnZJSGRsSUc1bFpXUWdkRzhnY0c5d0lIUm9a
VzBnYjJabUlIUm9aU0J6ZEdGamF5QnBiaUJ5WlhabGNuTmxJRzl5WkdWeVhHNGdJQ0FnYkdWMElH
a2dQU0J3WVhKaGJWTnBlbVU3WEc0Z0lDQWdkMmhwYkdVZ0tHa3RMU2tnZTF4dUlDQWdJQ0FnY0dG
eVlXMGdQU0IwYUdsekxuQnZjRk4wWVdOcktDazdYRzRnSUNBZ0lDQndZWEpoYlhOYmFWMGdQU0J3
WVhKaGJUdGNibHh1SUNBZ0lDQWdhV1lnS0hSb2FYTXVkSEpoWTJ0SlpITXBJSHRjYmlBZ0lDQWdJ
Q0FnYVdSelcybGRJRDBnZEdocGN5NXdiM0JUZEdGamF5Z3BPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lD
QWdhV1lnS0hSb2FYTXVjM1J5YVc1blVHRnlZVzF6S1NCN1hHNGdJQ0FnSUNBZ0lIUjVjR1Z6VzJs
ZElEMGdkR2hwY3k1d2IzQlRkR0ZqYXlncE8xeHVJQ0FnSUNBZ0lDQmpiMjUwWlhoMGMxdHBYU0E5
SUhSb2FYTXVjRzl3VTNSaFkyc29LVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzVjYmlBZ0lDQnBa
aUFvYjJKcVpXTjBRWEpuY3lrZ2UxeHVJQ0FnSUNBZ2IzQjBhVzl1Y3k1aGNtZHpJRDBnZEdocGN5
NXpiM1Z5WTJVdVoyVnVaWEpoZEdWQmNuSmhlU2h3WVhKaGJYTXBPMXh1SUNBZ0lIMWNibHh1SUNB
Z0lHbG1JQ2gwYUdsekxuUnlZV05yU1dSektTQjdYRzRnSUNBZ0lDQnZjSFJwYjI1ekxtbGtjeUE5
SUhSb2FYTXVjMjkxY21ObExtZGxibVZ5WVhSbFFYSnlZWGtvYVdSektUdGNiaUFnSUNCOVhHNGdJ
Q0FnYVdZZ0tIUm9hWE11YzNSeWFXNW5VR0Z5WVcxektTQjdYRzRnSUNBZ0lDQnZjSFJwYjI1ekxu
UjVjR1Z6SUQwZ2RHaHBjeTV6YjNWeVkyVXVaMlZ1WlhKaGRHVkJjbkpoZVNoMGVYQmxjeWs3WEc0
Z0lDQWdJQ0J2Y0hScGIyNXpMbU52Ym5SbGVIUnpJRDBnZEdocGN5NXpiM1Z5WTJVdVoyVnVaWEpo
ZEdWQmNuSmhlU2hqYjI1MFpYaDBjeWs3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdhV1lnS0hSb2FYTXVi
M0IwYVc5dWN5NWtZWFJoS1NCN1hHNGdJQ0FnSUNCdmNIUnBiMjV6TG1SaGRHRWdQU0FuWkdGMFlT
YzdYRzRnSUNBZ2ZWeHVJQ0FnSUdsbUlDaDBhR2x6TG5WelpVSnNiMk5yVUdGeVlXMXpLU0I3WEc0
Z0lDQWdJQ0J2Y0hScGIyNXpMbUpzYjJOclVHRnlZVzF6SUQwZ0oySnNiMk5yVUdGeVlXMXpKenRj
YmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUc5d2RHbHZibk03WEc0Z0lIMHNYRzVjYmlBZ2MyVjBk
WEJJWld4d1pYSkJjbWR6T2lCbWRXNWpkR2x2Ymlob1pXeHdaWElzSUhCaGNtRnRVMmw2WlN3Z2NH
RnlZVzF6TENCMWMyVlNaV2RwYzNSbGNpa2dlMXh1SUNBZ0lHeGxkQ0J2Y0hScGIyNXpJRDBnZEdo
cGN5NXpaWFIxY0ZCaGNtRnRjeWhvWld4d1pYSXNJSEJoY21GdFUybDZaU3dnY0dGeVlXMXpLVHRj
YmlBZ0lDQnZjSFJwYjI1eklEMGdkR2hwY3k1dlltcGxZM1JNYVhSbGNtRnNLRzl3ZEdsdmJuTXBP
MXh1SUNBZ0lHbG1JQ2gxYzJWU1pXZHBjM1JsY2lrZ2UxeHVJQ0FnSUNBZ2RHaHBjeTUxYzJWU1pX
ZHBjM1JsY2lnbmIzQjBhVzl1Y3ljcE8xeHVJQ0FnSUNBZ2NHRnlZVzF6TG5CMWMyZ29KMjl3ZEds
dmJuTW5LVHRjYmlBZ0lDQWdJSEpsZEhWeWJpQmJKMjl3ZEdsdmJuTTlKeXdnYjNCMGFXOXVjMTA3
WEc0Z0lDQWdmU0JsYkhObElHbG1JQ2h3WVhKaGJYTXBJSHRjYmlBZ0lDQWdJSEJoY21GdGN5NXdk
WE5vS0c5d2RHbHZibk1wTzF4dUlDQWdJQ0FnY21WMGRYSnVJQ2NuTzF4dUlDQWdJSDBnWld4elpT
QjdYRzRnSUNBZ0lDQnlaWFIxY200Z2IzQjBhVzl1Y3p0Y2JpQWdJQ0I5WEc0Z0lIMWNibjA3WEc1
Y2JseHVLR1oxYm1OMGFXOXVLQ2tnZTF4dUlDQmpiMjV6ZENCeVpYTmxjblpsWkZkdmNtUnpJRDBn
S0Z4dUlDQWdJQ2RpY21WaGF5QmxiSE5sSUc1bGR5QjJZWEluSUN0Y2JpQWdJQ0FuSUdOaGMyVWda
bWx1WVd4c2VTQnlaWFIxY200Z2RtOXBaQ2NnSzF4dUlDQWdJQ2NnWTJGMFkyZ2dabTl5SUhOM2FY
UmphQ0IzYUdsc1pTY2dLMXh1SUNBZ0lDY2dZMjl1ZEdsdWRXVWdablZ1WTNScGIyNGdkR2hwY3lC
M2FYUm9KeUFyWEc0Z0lDQWdKeUJrWldaaGRXeDBJR2xtSUhSb2NtOTNKeUFyWEc0Z0lDQWdKeUJr
Wld4bGRHVWdhVzRnZEhKNUp5QXJYRzRnSUNBZ0p5QmtieUJwYm5OMFlXNWpaVzltSUhSNWNHVnZa
aWNnSzF4dUlDQWdJQ2NnWVdKemRISmhZM1FnWlc1MWJTQnBiblFnYzJodmNuUW5JQ3RjYmlBZ0lD
QW5JR0p2YjJ4bFlXNGdaWGh3YjNKMElHbHVkR1Z5Wm1GalpTQnpkR0YwYVdNbklDdGNiaUFnSUNB
bklHSjVkR1VnWlhoMFpXNWtjeUJzYjI1bklITjFjR1Z5SnlBclhHNGdJQ0FnSnlCamFHRnlJR1pw
Ym1Gc0lHNWhkR2wyWlNCemVXNWphSEp2Ym1sNlpXUW5JQ3RjYmlBZ0lDQW5JR05zWVhOeklHWnNi
MkYwSUhCaFkydGhaMlVnZEdoeWIzZHpKeUFyWEc0Z0lDQWdKeUJqYjI1emRDQm5iM1J2SUhCeWFY
WmhkR1VnZEhKaGJuTnBaVzUwSnlBclhHNGdJQ0FnSnlCa1pXSjFaMmRsY2lCcGJYQnNaVzFsYm5S
eklIQnliM1JsWTNSbFpDQjJiMnhoZEdsc1pTY2dLMXh1SUNBZ0lDY2daRzkxWW14bElHbHRjRzl5
ZENCd2RXSnNhV01nYkdWMElIbHBaV3hrSUdGM1lXbDBKeUFyWEc0Z0lDQWdKeUJ1ZFd4c0lIUnlk
V1VnWm1Gc2MyVW5YRzRnSUNrdWMzQnNhWFFvSnlBbktUdGNibHh1SUNCamIyNXpkQ0JqYjIxd2FX
eGxjbGR2Y21SeklEMGdTbUYyWVZOamNtbHdkRU52YlhCcGJHVnlMbEpGVTBWU1ZrVkVYMWRQVWtS
VElEMGdlMzA3WEc1Y2JpQWdabTl5SUNoc1pYUWdhU0E5SURBc0lHd2dQU0J5WlhObGNuWmxaRmR2
Y21SekxteGxibWQwYURzZ2FTQThJR3c3SUdrckt5a2dlMXh1SUNBZ0lHTnZiWEJwYkdWeVYyOXla
SE5iY21WelpYSjJaV1JYYjNKa2MxdHBYVjBnUFNCMGNuVmxPMXh1SUNCOVhHNTlLQ2twTzF4dVhH
NUtZWFpoVTJOeWFYQjBRMjl0Y0dsc1pYSXVhWE5XWVd4cFpFcGhkbUZUWTNKcGNIUldZWEpwWVdK
c1pVNWhiV1VnUFNCbWRXNWpkR2x2YmlodVlXMWxLU0I3WEc0Z0lISmxkSFZ5YmlBaFNtRjJZVk5q
Y21sd2RFTnZiWEJwYkdWeUxsSkZVMFZTVmtWRVgxZFBVa1JUVzI1aGJXVmRJQ1ltSUNndlhsdGhM
WHBCTFZwZkpGMWJNQzA1WVMxNlFTMWFYeVJkS2lRdktTNTBaWE4wS0c1aGJXVXBPMXh1ZlR0Y2Js
eHVablZ1WTNScGIyNGdjM1J5YVdOMFRHOXZhM1Z3S0hKbGNYVnBjbVZVWlhKdGFXNWhiQ3dnWTI5
dGNHbHNaWElzSUhCaGNuUnpMQ0IwZVhCbEtTQjdYRzRnSUd4bGRDQnpkR0ZqYXlBOUlHTnZiWEJw
YkdWeUxuQnZjRk4wWVdOcktDa3NYRzRnSUNBZ0lDQnBJRDBnTUN4Y2JpQWdJQ0FnSUd4bGJpQTlJ
SEJoY25SekxteGxibWQwYUR0Y2JpQWdhV1lnS0hKbGNYVnBjbVZVWlhKdGFXNWhiQ2tnZTF4dUlD
QWdJR3hsYmkwdE8xeHVJQ0I5WEc1Y2JpQWdabTl5SUNnN0lHa2dQQ0JzWlc0N0lHa3JLeWtnZTF4
dUlDQWdJSE4wWVdOcklEMGdZMjl0Y0dsc1pYSXVibUZ0WlV4dmIydDFjQ2h6ZEdGamF5d2djR0Z5
ZEhOYmFWMHNJSFI1Y0dVcE8xeHVJQ0I5WEc1Y2JpQWdhV1lnS0hKbGNYVnBjbVZVWlhKdGFXNWhi
Q2tnZTF4dUlDQWdJSEpsZEhWeWJpQmJZMjl0Y0dsc1pYSXVZV3hwWVhOaFlteGxLQ2RqYjI1MFlX
bHVaWEl1YzNSeWFXTjBKeWtzSUNjb0p5d2djM1JoWTJzc0lDY3NJQ2NzSUdOdmJYQnBiR1Z5TG5G
MWIzUmxaRk4wY21sdVp5aHdZWEowYzF0cFhTa3NJQ2NwSjEwN1hHNGdJSDBnWld4elpTQjdYRzRn
SUNBZ2NtVjBkWEp1SUhOMFlXTnJPMXh1SUNCOVhHNTlYRzVjYm1WNGNHOXlkQ0JrWldaaGRXeDBJ
RXBoZG1GVFkzSnBjSFJEYjIxd2FXeGxjanRjYmlKZGZRPT0KZGlmZiAtLWdpdCBhL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2FtZC9oYW5kbGViYXJzL2Nv
bXBpbGVyL3BhcnNlci5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxl
YmFycy9kaXN0L2FtZC9oYW5kbGViYXJzL2NvbXBpbGVyL3BhcnNlci5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
ODc0OGUwODU5YWQ0ZmVmMGQwNTFmZmM1OWNjYjlhNTNiMDYxNzIyCi0tLSAvZGV2L251bGwKKysr
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvYW1kL2hh
bmRsZWJhcnMvY29tcGlsZXIvcGFyc2VyLmpzCkBAIC0wLDAgKzEsNzQwIEBACitkZWZpbmUoWyJl
eHBvcnRzIl0sIGZ1bmN0aW9uIChleHBvcnRzKSB7CisgICAgLyogaXN0YW5idWwgaWdub3JlIG5l
eHQgKi8KKyAgICAvKiBKaXNvbiBnZW5lcmF0ZWQgcGFyc2VyICovCisgICAgInVzZSBzdHJpY3Qi
OworCisgICAgdmFyIGhhbmRsZWJhcnMgPSAoZnVuY3Rpb24gKCkgeworICAgICAgICB2YXIgcGFy
c2VyID0geyB0cmFjZTogZnVuY3Rpb24gdHJhY2UoKSB7fSwKKyAgICAgICAgICAgIHl5OiB7fSwK
KyAgICAgICAgICAgIHN5bWJvbHNfOiB7ICJlcnJvciI6IDIsICJyb290IjogMywgInByb2dyYW0i
OiA0LCAiRU9GIjogNSwgInByb2dyYW1fcmVwZXRpdGlvbjAiOiA2LCAic3RhdGVtZW50IjogNywg
Im11c3RhY2hlIjogOCwgImJsb2NrIjogOSwgInJhd0Jsb2NrIjogMTAsICJwYXJ0aWFsIjogMTEs
ICJwYXJ0aWFsQmxvY2siOiAxMiwgImNvbnRlbnQiOiAxMywgIkNPTU1FTlQiOiAxNCwgIkNPTlRF
TlQiOiAxNSwgIm9wZW5SYXdCbG9jayI6IDE2LCAicmF3QmxvY2tfcmVwZXRpdGlvbl9wbHVzMCI6
IDE3LCAiRU5EX1JBV19CTE9DSyI6IDE4LCAiT1BFTl9SQVdfQkxPQ0siOiAxOSwgImhlbHBlck5h
bWUiOiAyMCwgIm9wZW5SYXdCbG9ja19yZXBldGl0aW9uMCI6IDIxLCAib3BlblJhd0Jsb2NrX29w
dGlvbjAiOiAyMiwgIkNMT1NFX1JBV19CTE9DSyI6IDIzLCAib3BlbkJsb2NrIjogMjQsICJibG9j
a19vcHRpb24wIjogMjUsICJjbG9zZUJsb2NrIjogMjYsICJvcGVuSW52ZXJzZSI6IDI3LCAiYmxv
Y2tfb3B0aW9uMSI6IDI4LCAiT1BFTl9CTE9DSyI6IDI5LCAib3BlbkJsb2NrX3JlcGV0aXRpb24w
IjogMzAsICJvcGVuQmxvY2tfb3B0aW9uMCI6IDMxLCAib3BlbkJsb2NrX29wdGlvbjEiOiAzMiwg
IkNMT1NFIjogMzMsICJPUEVOX0lOVkVSU0UiOiAzNCwgIm9wZW5JbnZlcnNlX3JlcGV0aXRpb24w
IjogMzUsICJvcGVuSW52ZXJzZV9vcHRpb24wIjogMzYsICJvcGVuSW52ZXJzZV9vcHRpb24xIjog
MzcsICJvcGVuSW52ZXJzZUNoYWluIjogMzgsICJPUEVOX0lOVkVSU0VfQ0hBSU4iOiAzOSwgIm9w
ZW5JbnZlcnNlQ2hhaW5fcmVwZXRpdGlvbjAiOiA0MCwgIm9wZW5JbnZlcnNlQ2hhaW5fb3B0aW9u
MCI6IDQxLCAib3BlbkludmVyc2VDaGFpbl9vcHRpb24xIjogNDIsICJpbnZlcnNlQW5kUHJvZ3Jh
bSI6IDQzLCAiSU5WRVJTRSI6IDQ0LCAiaW52ZXJzZUNoYWluIjogNDUsICJpbnZlcnNlQ2hhaW5f
b3B0aW9uMCI6IDQ2LCAiT1BFTl9FTkRCTE9DSyI6IDQ3LCAiT1BFTiI6IDQ4LCAibXVzdGFjaGVf
cmVwZXRpdGlvbjAiOiA0OSwgIm11c3RhY2hlX29wdGlvbjAiOiA1MCwgIk9QRU5fVU5FU0NBUEVE
IjogNTEsICJtdXN0YWNoZV9yZXBldGl0aW9uMSI6IDUyLCAibXVzdGFjaGVfb3B0aW9uMSI6IDUz
LCAiQ0xPU0VfVU5FU0NBUEVEIjogNTQsICJPUEVOX1BBUlRJQUwiOiA1NSwgInBhcnRpYWxOYW1l
IjogNTYsICJwYXJ0aWFsX3JlcGV0aXRpb24wIjogNTcsICJwYXJ0aWFsX29wdGlvbjAiOiA1OCwg
Im9wZW5QYXJ0aWFsQmxvY2siOiA1OSwgIk9QRU5fUEFSVElBTF9CTE9DSyI6IDYwLCAib3BlblBh
cnRpYWxCbG9ja19yZXBldGl0aW9uMCI6IDYxLCAib3BlblBhcnRpYWxCbG9ja19vcHRpb24wIjog
NjIsICJwYXJhbSI6IDYzLCAic2V4cHIiOiA2NCwgIk9QRU5fU0VYUFIiOiA2NSwgInNleHByX3Jl
cGV0aXRpb24wIjogNjYsICJzZXhwcl9vcHRpb24wIjogNjcsICJDTE9TRV9TRVhQUiI6IDY4LCAi
aGFzaCI6IDY5LCAiaGFzaF9yZXBldGl0aW9uX3BsdXMwIjogNzAsICJoYXNoU2VnbWVudCI6IDcx
LCAiSUQiOiA3MiwgIkVRVUFMUyI6IDczLCAiYmxvY2tQYXJhbXMiOiA3NCwgIk9QRU5fQkxPQ0tf
UEFSQU1TIjogNzUsICJibG9ja1BhcmFtc19yZXBldGl0aW9uX3BsdXMwIjogNzYsICJDTE9TRV9C
TE9DS19QQVJBTVMiOiA3NywgInBhdGgiOiA3OCwgImRhdGFOYW1lIjogNzksICJTVFJJTkciOiA4
MCwgIk5VTUJFUiI6IDgxLCAiQk9PTEVBTiI6IDgyLCAiVU5ERUZJTkVEIjogODMsICJOVUxMIjog
ODQsICJEQVRBIjogODUsICJwYXRoU2VnbWVudHMiOiA4NiwgIlNFUCI6IDg3LCAiJGFjY2VwdCI6
IDAsICIkZW5kIjogMSB9LAorICAgICAgICAgICAgdGVybWluYWxzXzogeyAyOiAiZXJyb3IiLCA1
OiAiRU9GIiwgMTQ6ICJDT01NRU5UIiwgMTU6ICJDT05URU5UIiwgMTg6ICJFTkRfUkFXX0JMT0NL
IiwgMTk6ICJPUEVOX1JBV19CTE9DSyIsIDIzOiAiQ0xPU0VfUkFXX0JMT0NLIiwgMjk6ICJPUEVO
X0JMT0NLIiwgMzM6ICJDTE9TRSIsIDM0OiAiT1BFTl9JTlZFUlNFIiwgMzk6ICJPUEVOX0lOVkVS
U0VfQ0hBSU4iLCA0NDogIklOVkVSU0UiLCA0NzogIk9QRU5fRU5EQkxPQ0siLCA0ODogIk9QRU4i
LCA1MTogIk9QRU5fVU5FU0NBUEVEIiwgNTQ6ICJDTE9TRV9VTkVTQ0FQRUQiLCA1NTogIk9QRU5f
UEFSVElBTCIsIDYwOiAiT1BFTl9QQVJUSUFMX0JMT0NLIiwgNjU6ICJPUEVOX1NFWFBSIiwgNjg6
ICJDTE9TRV9TRVhQUiIsIDcyOiAiSUQiLCA3MzogIkVRVUFMUyIsIDc1OiAiT1BFTl9CTE9DS19Q
QVJBTVMiLCA3NzogIkNMT1NFX0JMT0NLX1BBUkFNUyIsIDgwOiAiU1RSSU5HIiwgODE6ICJOVU1C
RVIiLCA4MjogIkJPT0xFQU4iLCA4MzogIlVOREVGSU5FRCIsIDg0OiAiTlVMTCIsIDg1OiAiREFU
QSIsIDg3OiAiU0VQIiB9LAorICAgICAgICAgICAgcHJvZHVjdGlvbnNfOiBbMCwgWzMsIDJdLCBb
NCwgMV0sIFs3LCAxXSwgWzcsIDFdLCBbNywgMV0sIFs3LCAxXSwgWzcsIDFdLCBbNywgMV0sIFs3
LCAxXSwgWzEzLCAxXSwgWzEwLCAzXSwgWzE2LCA1XSwgWzksIDRdLCBbOSwgNF0sIFsyNCwgNl0s
IFsyNywgNl0sIFszOCwgNl0sIFs0MywgMl0sIFs0NSwgM10sIFs0NSwgMV0sIFsyNiwgM10sIFs4
LCA1XSwgWzgsIDVdLCBbMTEsIDVdLCBbMTIsIDNdLCBbNTksIDVdLCBbNjMsIDFdLCBbNjMsIDFd
LCBbNjQsIDVdLCBbNjksIDFdLCBbNzEsIDNdLCBbNzQsIDNdLCBbMjAsIDFdLCBbMjAsIDFdLCBb
MjAsIDFdLCBbMjAsIDFdLCBbMjAsIDFdLCBbMjAsIDFdLCBbMjAsIDFdLCBbNTYsIDFdLCBbNTYs
IDFdLCBbNzksIDJdLCBbNzgsIDFdLCBbODYsIDNdLCBbODYsIDFdLCBbNiwgMF0sIFs2LCAyXSwg
WzE3LCAxXSwgWzE3LCAyXSwgWzIxLCAwXSwgWzIxLCAyXSwgWzIyLCAwXSwgWzIyLCAxXSwgWzI1
LCAwXSwgWzI1LCAxXSwgWzI4LCAwXSwgWzI4LCAxXSwgWzMwLCAwXSwgWzMwLCAyXSwgWzMxLCAw
XSwgWzMxLCAxXSwgWzMyLCAwXSwgWzMyLCAxXSwgWzM1LCAwXSwgWzM1LCAyXSwgWzM2LCAwXSwg
WzM2LCAxXSwgWzM3LCAwXSwgWzM3LCAxXSwgWzQwLCAwXSwgWzQwLCAyXSwgWzQxLCAwXSwgWzQx
LCAxXSwgWzQyLCAwXSwgWzQyLCAxXSwgWzQ2LCAwXSwgWzQ2LCAxXSwgWzQ5LCAwXSwgWzQ5LCAy
XSwgWzUwLCAwXSwgWzUwLCAxXSwgWzUyLCAwXSwgWzUyLCAyXSwgWzUzLCAwXSwgWzUzLCAxXSwg
WzU3LCAwXSwgWzU3LCAyXSwgWzU4LCAwXSwgWzU4LCAxXSwgWzYxLCAwXSwgWzYxLCAyXSwgWzYy
LCAwXSwgWzYyLCAxXSwgWzY2LCAwXSwgWzY2LCAyXSwgWzY3LCAwXSwgWzY3LCAxXSwgWzcwLCAx
XSwgWzcwLCAyXSwgWzc2LCAxXSwgWzc2LCAyXV0sCisgICAgICAgICAgICBwZXJmb3JtQWN0aW9u
OiBmdW5jdGlvbiBhbm9ueW1vdXMoeXl0ZXh0LCB5eWxlbmcsIHl5bGluZW5vLCB5eSwgeXlzdGF0
ZSwgJCQsIF8kCisgICAgICAgICAgICAvKiovKSB7CisKKyAgICAgICAgICAgICAgICB2YXIgJDAg
PSAkJC5sZW5ndGggLSAxOworICAgICAgICAgICAgICAgIHN3aXRjaCAoeXlzdGF0ZSkgeworICAg
ICAgICAgICAgICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
JCRbJDAgLSAxXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB5eS5wcmVw
YXJlUHJvZ3JhbSgkJFskMF0pOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9
ICQkWyQwXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgICBjYXNlIDQ6CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSAkJFskMF07Cisg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA1
OgorICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gJCRbJDBdOworICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNjoKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDc6CisgICAgICAgICAgICAgICAgICAg
ICAgICB0aGlzLiQgPSAkJFskMF07CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICAgICAgY2FzZSA4OgorICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4k
ID0gJCRbJDBdOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICAgIGNhc2UgOToKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnQ29tbWVudFN0YXRlbWVudCcsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHl5LnN0cmlwQ29tbWVudCgkJFskMF0pLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmlwOiB5eS5zdHJpcEZsYWdzKCQkWyQwXSwgJCRb
JDBdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2M6IHl5LmxvY0luZm8odGhpcy5f
JCkKKyAgICAgICAgICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDEwOgorICAgICAgICAgICAgICAgICAg
ICAgICAgdGhpcy4kID0geworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdDb250
ZW50U3RhdGVtZW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbDogJCRb
JDBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAkJFskMF0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbG9jOiB5eS5sb2NJbmZvKHRoaXMuXyQpCisgICAgICAgICAg
ICAgICAgICAgICAgICB9OworCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICAgICAgY2FzZSAxMToKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9
IHl5LnByZXBhcmVSYXdCbG9jaygkJFskMCAtIDJdLCAkJFskMCAtIDFdLCAkJFskMF0sIHRoaXMu
XyQpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAg
IGNhc2UgMTI6CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB7IHBhdGg6ICQkWyQw
IC0gM10sIHBhcmFtczogJCRbJDAgLSAyXSwgaGFzaDogJCRbJDAgLSAxXSB9OworICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMTM6CisgICAg
ICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB5eS5wcmVwYXJlQmxvY2soJCRbJDAgLSAzXSwg
JCRbJDAgLSAyXSwgJCRbJDAgLSAxXSwgJCRbJDBdLCBmYWxzZSwgdGhpcy5fJCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAxNDoKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHl5LnByZXBhcmVCbG9jaygkJFskMCAtIDNd
LCAkJFskMCAtIDJdLCAkJFskMCAtIDFdLCAkJFskMF0sIHRydWUsIHRoaXMuXyQpOworICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMTU6Cisg
ICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB7IG9wZW46ICQkWyQwIC0gNV0sIHBhdGg6
ICQkWyQwIC0gNF0sIHBhcmFtczogJCRbJDAgLSAzXSwgaGFzaDogJCRbJDAgLSAyXSwgYmxvY2tQ
YXJhbXM6ICQkWyQwIC0gMV0sIHN0cmlwOiB5eS5zdHJpcEZsYWdzKCQkWyQwIC0gNV0sICQkWyQw
XSkgfTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAg
ICBjYXNlIDE2OgorICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0geyBwYXRoOiAkJFsk
MCAtIDRdLCBwYXJhbXM6ICQkWyQwIC0gM10sIGhhc2g6ICQkWyQwIC0gMl0sIGJsb2NrUGFyYW1z
OiAkJFskMCAtIDFdLCBzdHJpcDogeXkuc3RyaXBGbGFncygkJFskMCAtIDVdLCAkJFskMF0pIH07
CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2Fz
ZSAxNzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHsgcGF0aDogJCRbJDAgLSA0
XSwgcGFyYW1zOiAkJFskMCAtIDNdLCBoYXNoOiAkJFskMCAtIDJdLCBibG9ja1BhcmFtczogJCRb
JDAgLSAxXSwgc3RyaXA6IHl5LnN0cmlwRmxhZ3MoJCRbJDAgLSA1XSwgJCRbJDBdKSB9OworICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMTg6
CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB7IHN0cmlwOiB5eS5zdHJpcEZsYWdz
KCQkWyQwIC0gMV0sICQkWyQwIC0gMV0pLCBwcm9ncmFtOiAkJFskMF0gfTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDE5OgorICAgICAg
ICAgICAgICAgICAgICAgICAgdmFyIGludmVyc2UgPSB5eS5wcmVwYXJlQmxvY2soJCRbJDAgLSAy
XSwgJCRbJDAgLSAxXSwgJCRbJDBdLCAkJFskMF0sIGZhbHNlLCB0aGlzLl8kKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwcm9ncmFtID0geXkucHJlcGFyZVByb2dyYW0oW2ludmVyc2Vd
LCAkJFskMCAtIDFdLmxvYyk7CisgICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtLmNoYWlu
ZWQgPSB0cnVlOworCisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB7IHN0cmlwOiAk
JFskMCAtIDJdLnN0cmlwLCBwcm9ncmFtOiBwcm9ncmFtLCBjaGFpbjogdHJ1ZSB9OworCisgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAyMDoK
KyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDIxOgorICAgICAgICAg
ICAgICAgICAgICAgICAgdGhpcy4kID0geyBwYXRoOiAkJFskMCAtIDFdLCBzdHJpcDogeXkuc3Ry
aXBGbGFncygkJFskMCAtIDJdLCAkJFskMF0pIH07CisgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAyMjoKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHRoaXMuJCA9IHl5LnByZXBhcmVNdXN0YWNoZSgkJFskMCAtIDNdLCAkJFskMCAtIDJdLCAk
JFskMCAtIDFdLCAkJFskMCAtIDRdLCB5eS5zdHJpcEZsYWdzKCQkWyQwIC0gNF0sICQkWyQwXSks
IHRoaXMuXyQpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICAgIGNhc2UgMjM6CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB5eS5wcmVw
YXJlTXVzdGFjaGUoJCRbJDAgLSAzXSwgJCRbJDAgLSAyXSwgJCRbJDAgLSAxXSwgJCRbJDAgLSA0
XSwgeXkuc3RyaXBGbGFncygkJFskMCAtIDRdLCAkJFskMF0pLCB0aGlzLl8kKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDI0OgorICAg
ICAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0geworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHR5cGU6ICdQYXJ0aWFsU3RhdGVtZW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBuYW1lOiAkJFskMCAtIDNdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtczog
JCRbJDAgLSAyXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNoOiAkJFskMCAtIDFd
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGVudDogJycsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RyaXA6IHl5LnN0cmlwRmxhZ3MoJCRbJDAgLSA0XSwgJCRbJDBdKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2M6IHl5LmxvY0luZm8odGhpcy5fJCkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgICAgICBjYXNlIDI1OgorICAgICAgICAgICAgICAgICAgICAgICAg
dGhpcy4kID0geXkucHJlcGFyZVBhcnRpYWxCbG9jaygkJFskMCAtIDJdLCAkJFskMCAtIDFdLCAk
JFskMF0sIHRoaXMuXyQpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgICAgIGNhc2UgMjY6CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB7
IHBhdGg6ICQkWyQwIC0gM10sIHBhcmFtczogJCRbJDAgLSAyXSwgaGFzaDogJCRbJDAgLSAxXSwg
c3RyaXA6IHl5LnN0cmlwRmxhZ3MoJCRbJDAgLSA0XSwgJCRbJDBdKSB9OworICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMjc6CisgICAgICAg
ICAgICAgICAgICAgICAgICB0aGlzLiQgPSAkJFskMF07CisgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAyODoKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHRoaXMuJCA9ICQkWyQwXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgICAgICBjYXNlIDI5OgorICAgICAgICAgICAgICAgICAgICAgICAgdGhp
cy4kID0geworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdTdWJFeHByZXNzaW9u
JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiAkJFskMCAtIDNdLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHBhcmFtczogJCRbJDAgLSAyXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBoYXNoOiAkJFskMCAtIDFdLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxvYzogeXkubG9jSW5mbyh0aGlzLl8kKQorICAgICAgICAgICAgICAgICAgICAgICAgfTsK
KworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNh
c2UgMzA6CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB7IHR5cGU6ICdIYXNoJywg
cGFpcnM6ICQkWyQwXSwgbG9jOiB5eS5sb2NJbmZvKHRoaXMuXyQpIH07CisgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAzMToKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHRoaXMuJCA9IHsgdHlwZTogJ0hhc2hQYWlyJywga2V5OiB5eS5pZCgk
JFskMCAtIDJdKSwgdmFsdWU6ICQkWyQwXSwgbG9jOiB5eS5sb2NJbmZvKHRoaXMuXyQpIH07Cisg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAz
MjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHl5LmlkKCQkWyQwIC0gMV0pOwor
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2Ug
MzM6CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSAkJFskMF07CisgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAzNDoKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDM1OgorICAgICAgICAgICAgICAg
ICAgICAgICAgdGhpcy4kID0geyB0eXBlOiAnU3RyaW5nTGl0ZXJhbCcsIHZhbHVlOiAkJFskMF0s
IG9yaWdpbmFsOiAkJFskMF0sIGxvYzogeXkubG9jSW5mbyh0aGlzLl8kKSB9OworICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMzY6CisgICAg
ICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB7IHR5cGU6ICdOdW1iZXJMaXRlcmFsJywgdmFs
dWU6IE51bWJlcigkJFskMF0pLCBvcmlnaW5hbDogTnVtYmVyKCQkWyQwXSksIGxvYzogeXkubG9j
SW5mbyh0aGlzLl8kKSB9OworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgICAgIGNhc2UgMzc6CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB7
IHR5cGU6ICdCb29sZWFuTGl0ZXJhbCcsIHZhbHVlOiAkJFskMF0gPT09ICd0cnVlJywgb3JpZ2lu
YWw6ICQkWyQwXSA9PT0gJ3RydWUnLCBsb2M6IHl5LmxvY0luZm8odGhpcy5fJCkgfTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDM4Ogor
ICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0geyB0eXBlOiAnVW5kZWZpbmVkTGl0ZXJh
bCcsIG9yaWdpbmFsOiB1bmRlZmluZWQsIHZhbHVlOiB1bmRlZmluZWQsIGxvYzogeXkubG9jSW5m
byh0aGlzLl8kKSB9OworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgICAgIGNhc2UgMzk6CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB7IHR5
cGU6ICdOdWxsTGl0ZXJhbCcsIG9yaWdpbmFsOiBudWxsLCB2YWx1ZTogbnVsbCwgbG9jOiB5eS5s
b2NJbmZvKHRoaXMuXyQpIH07CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICAgICAgY2FzZSA0MDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9
ICQkWyQwXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgICBjYXNlIDQxOgorICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gJCRbJDBdOwor
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2Ug
NDI6CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB5eS5wcmVwYXJlUGF0aCh0cnVl
LCAkJFskMF0sIHRoaXMuXyQpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgICAgIGNhc2UgNDM6CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQg
PSB5eS5wcmVwYXJlUGF0aChmYWxzZSwgJCRbJDBdLCB0aGlzLl8kKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDQ0OgorICAgICAgICAg
ICAgICAgICAgICAgICAgJCRbJDAgLSAyXS5wdXNoKHsgcGFydDogeXkuaWQoJCRbJDBdKSwgb3Jp
Z2luYWw6ICQkWyQwXSwgc2VwYXJhdG9yOiAkJFskMCAtIDFdIH0pO3RoaXMuJCA9ICQkWyQwIC0g
Ml07CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAg
Y2FzZSA0NToKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IFt7IHBhcnQ6IHl5Lmlk
KCQkWyQwXSksIG9yaWdpbmFsOiAkJFskMF0gfV07CisgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA0NjoKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHRoaXMuJCA9IFtdOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgICAgIGNhc2UgNDc6CisgICAgICAgICAgICAgICAgICAgICAgICAkJFskMCAtIDFd
LnB1c2goJCRbJDBdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgICAgICBjYXNlIDQ4OgorICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gWyQk
WyQwXV07CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAg
ICAgY2FzZSA0OToKKyAgICAgICAgICAgICAgICAgICAgICAgICQkWyQwIC0gMV0ucHVzaCgkJFsk
MF0pOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAg
IGNhc2UgNTA6CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSBbXTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDUxOgorICAg
ICAgICAgICAgICAgICAgICAgICAgJCRbJDAgLSAxXS5wdXNoKCQkWyQwXSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA1ODoKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IFtdOworICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNTk6CisgICAgICAgICAgICAgICAgICAg
ICAgICAkJFskMCAtIDFdLnB1c2goJCRbJDBdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDY0OgorICAgICAgICAgICAgICAgICAgICAg
ICAgdGhpcy4kID0gW107CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICAgICAgY2FzZSA2NToKKyAgICAgICAgICAgICAgICAgICAgICAgICQkWyQwIC0gMV0u
cHVzaCgkJFskMF0pOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgICAgIGNhc2UgNzA6CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSBbXTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNl
IDcxOgorICAgICAgICAgICAgICAgICAgICAgICAgJCRbJDAgLSAxXS5wdXNoKCQkWyQwXSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA3
ODoKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IFtdOworICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNzk6CisgICAgICAgICAg
ICAgICAgICAgICAgICAkJFskMCAtIDFdLnB1c2goJCRbJDBdKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDgyOgorICAgICAgICAgICAg
ICAgICAgICAgICAgdGhpcy4kID0gW107CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICAgICAgY2FzZSA4MzoKKyAgICAgICAgICAgICAgICAgICAgICAgICQk
WyQwIC0gMV0ucHVzaCgkJFskMF0pOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgICAgIGNhc2UgODY6CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlz
LiQgPSBbXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgICBjYXNlIDg3OgorICAgICAgICAgICAgICAgICAgICAgICAgJCRbJDAgLSAxXS5wdXNoKCQk
WyQwXSk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAg
ICAgY2FzZSA5MDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IFtdOworICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgOTE6Cisg
ICAgICAgICAgICAgICAgICAgICAgICAkJFskMCAtIDFdLnB1c2goJCRbJDBdKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDk0OgorICAg
ICAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gW107CisgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA5NToKKyAgICAgICAgICAgICAgICAg
ICAgICAgICQkWyQwIC0gMV0ucHVzaCgkJFskMF0pOworICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgOTg6CisgICAgICAgICAgICAgICAgICAg
ICAgICB0aGlzLiQgPSBbJCRbJDBdXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgICAgICBjYXNlIDk5OgorICAgICAgICAgICAgICAgICAgICAgICAgJCRb
JDAgLSAxXS5wdXNoKCQkWyQwXSk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICAgICAgY2FzZSAxMDA6CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlz
LiQgPSBbJCRbJDBdXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgICAgICBjYXNlIDEwMToKKyAgICAgICAgICAgICAgICAgICAgICAgICQkWyQwIC0gMV0u
cHVzaCgkJFskMF0pOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHRhYmxlOiBbeyAzOiAxLCA0OiAy
LCA1OiBbMiwgNDZdLCA2OiAzLCAxNDogWzIsIDQ2XSwgMTU6IFsyLCA0Nl0sIDE5OiBbMiwgNDZd
LCAyOTogWzIsIDQ2XSwgMzQ6IFsyLCA0Nl0sIDQ4OiBbMiwgNDZdLCA1MTogWzIsIDQ2XSwgNTU6
IFsyLCA0Nl0sIDYwOiBbMiwgNDZdIH0sIHsgMTogWzNdIH0sIHsgNTogWzEsIDRdIH0sIHsgNTog
WzIsIDJdLCA3OiA1LCA4OiA2LCA5OiA3LCAxMDogOCwgMTE6IDksIDEyOiAxMCwgMTM6IDExLCAx
NDogWzEsIDEyXSwgMTU6IFsxLCAyMF0sIDE2OiAxNywgMTk6IFsxLCAyM10sIDI0OiAxNSwgMjc6
IDE2LCAyOTogWzEsIDIxXSwgMzQ6IFsxLCAyMl0sIDM5OiBbMiwgMl0sIDQ0OiBbMiwgMl0sIDQ3
OiBbMiwgMl0sIDQ4OiBbMSwgMTNdLCA1MTogWzEsIDE0XSwgNTU6IFsxLCAxOF0sIDU5OiAxOSwg
NjA6IFsxLCAyNF0gfSwgeyAxOiBbMiwgMV0gfSwgeyA1OiBbMiwgNDddLCAxNDogWzIsIDQ3XSwg
MTU6IFsyLCA0N10sIDE5OiBbMiwgNDddLCAyOTogWzIsIDQ3XSwgMzQ6IFsyLCA0N10sIDM5OiBb
MiwgNDddLCA0NDogWzIsIDQ3XSwgNDc6IFsyLCA0N10sIDQ4OiBbMiwgNDddLCA1MTogWzIsIDQ3
XSwgNTU6IFsyLCA0N10sIDYwOiBbMiwgNDddIH0sIHsgNTogWzIsIDNdLCAxNDogWzIsIDNdLCAx
NTogWzIsIDNdLCAxOTogWzIsIDNdLCAyOTogWzIsIDNdLCAzNDogWzIsIDNdLCAzOTogWzIsIDNd
LCA0NDogWzIsIDNdLCA0NzogWzIsIDNdLCA0ODogWzIsIDNdLCA1MTogWzIsIDNdLCA1NTogWzIs
IDNdLCA2MDogWzIsIDNdIH0sIHsgNTogWzIsIDRdLCAxNDogWzIsIDRdLCAxNTogWzIsIDRdLCAx
OTogWzIsIDRdLCAyOTogWzIsIDRdLCAzNDogWzIsIDRdLCAzOTogWzIsIDRdLCA0NDogWzIsIDRd
LCA0NzogWzIsIDRdLCA0ODogWzIsIDRdLCA1MTogWzIsIDRdLCA1NTogWzIsIDRdLCA2MDogWzIs
IDRdIH0sIHsgNTogWzIsIDVdLCAxNDogWzIsIDVdLCAxNTogWzIsIDVdLCAxOTogWzIsIDVdLCAy
OTogWzIsIDVdLCAzNDogWzIsIDVdLCAzOTogWzIsIDVdLCA0NDogWzIsIDVdLCA0NzogWzIsIDVd
LCA0ODogWzIsIDVdLCA1MTogWzIsIDVdLCA1NTogWzIsIDVdLCA2MDogWzIsIDVdIH0sIHsgNTog
WzIsIDZdLCAxNDogWzIsIDZdLCAxNTogWzIsIDZdLCAxOTogWzIsIDZdLCAyOTogWzIsIDZdLCAz
NDogWzIsIDZdLCAzOTogWzIsIDZdLCA0NDogWzIsIDZdLCA0NzogWzIsIDZdLCA0ODogWzIsIDZd
LCA1MTogWzIsIDZdLCA1NTogWzIsIDZdLCA2MDogWzIsIDZdIH0sIHsgNTogWzIsIDddLCAxNDog
WzIsIDddLCAxNTogWzIsIDddLCAxOTogWzIsIDddLCAyOTogWzIsIDddLCAzNDogWzIsIDddLCAz
OTogWzIsIDddLCA0NDogWzIsIDddLCA0NzogWzIsIDddLCA0ODogWzIsIDddLCA1MTogWzIsIDdd
LCA1NTogWzIsIDddLCA2MDogWzIsIDddIH0sIHsgNTogWzIsIDhdLCAxNDogWzIsIDhdLCAxNTog
WzIsIDhdLCAxOTogWzIsIDhdLCAyOTogWzIsIDhdLCAzNDogWzIsIDhdLCAzOTogWzIsIDhdLCA0
NDogWzIsIDhdLCA0NzogWzIsIDhdLCA0ODogWzIsIDhdLCA1MTogWzIsIDhdLCA1NTogWzIsIDhd
LCA2MDogWzIsIDhdIH0sIHsgNTogWzIsIDldLCAxNDogWzIsIDldLCAxNTogWzIsIDldLCAxOTog
WzIsIDldLCAyOTogWzIsIDldLCAzNDogWzIsIDldLCAzOTogWzIsIDldLCA0NDogWzIsIDldLCA0
NzogWzIsIDldLCA0ODogWzIsIDldLCA1MTogWzIsIDldLCA1NTogWzIsIDldLCA2MDogWzIsIDld
IH0sIHsgMjA6IDI1LCA3MjogWzEsIDM1XSwgNzg6IDI2LCA3OTogMjcsIDgwOiBbMSwgMjhdLCA4
MTogWzEsIDI5XSwgODI6IFsxLCAzMF0sIDgzOiBbMSwgMzFdLCA4NDogWzEsIDMyXSwgODU6IFsx
LCAzNF0sIDg2OiAzMyB9LCB7IDIwOiAzNiwgNzI6IFsxLCAzNV0sIDc4OiAyNiwgNzk6IDI3LCA4
MDogWzEsIDI4XSwgODE6IFsxLCAyOV0sIDgyOiBbMSwgMzBdLCA4MzogWzEsIDMxXSwgODQ6IFsx
LCAzMl0sIDg1OiBbMSwgMzRdLCA4NjogMzMgfSwgeyA0OiAzNywgNjogMywgMTQ6IFsyLCA0Nl0s
IDE1OiBbMiwgNDZdLCAxOTogWzIsIDQ2XSwgMjk6IFsyLCA0Nl0sIDM0OiBbMiwgNDZdLCAzOTog
WzIsIDQ2XSwgNDQ6IFsyLCA0Nl0sIDQ3OiBbMiwgNDZdLCA0ODogWzIsIDQ2XSwgNTE6IFsyLCA0
Nl0sIDU1OiBbMiwgNDZdLCA2MDogWzIsIDQ2XSB9LCB7IDQ6IDM4LCA2OiAzLCAxNDogWzIsIDQ2
XSwgMTU6IFsyLCA0Nl0sIDE5OiBbMiwgNDZdLCAyOTogWzIsIDQ2XSwgMzQ6IFsyLCA0Nl0sIDQ0
OiBbMiwgNDZdLCA0NzogWzIsIDQ2XSwgNDg6IFsyLCA0Nl0sIDUxOiBbMiwgNDZdLCA1NTogWzIs
IDQ2XSwgNjA6IFsyLCA0Nl0gfSwgeyAxMzogNDAsIDE1OiBbMSwgMjBdLCAxNzogMzkgfSwgeyAy
MDogNDIsIDU2OiA0MSwgNjQ6IDQzLCA2NTogWzEsIDQ0XSwgNzI6IFsxLCAzNV0sIDc4OiAyNiwg
Nzk6IDI3LCA4MDogWzEsIDI4XSwgODE6IFsxLCAyOV0sIDgyOiBbMSwgMzBdLCA4MzogWzEsIDMx
XSwgODQ6IFsxLCAzMl0sIDg1OiBbMSwgMzRdLCA4NjogMzMgfSwgeyA0OiA0NSwgNjogMywgMTQ6
IFsyLCA0Nl0sIDE1OiBbMiwgNDZdLCAxOTogWzIsIDQ2XSwgMjk6IFsyLCA0Nl0sIDM0OiBbMiwg
NDZdLCA0NzogWzIsIDQ2XSwgNDg6IFsyLCA0Nl0sIDUxOiBbMiwgNDZdLCA1NTogWzIsIDQ2XSwg
NjA6IFsyLCA0Nl0gfSwgeyA1OiBbMiwgMTBdLCAxNDogWzIsIDEwXSwgMTU6IFsyLCAxMF0sIDE4
OiBbMiwgMTBdLCAxOTogWzIsIDEwXSwgMjk6IFsyLCAxMF0sIDM0OiBbMiwgMTBdLCAzOTogWzIs
IDEwXSwgNDQ6IFsyLCAxMF0sIDQ3OiBbMiwgMTBdLCA0ODogWzIsIDEwXSwgNTE6IFsyLCAxMF0s
IDU1OiBbMiwgMTBdLCA2MDogWzIsIDEwXSB9LCB7IDIwOiA0NiwgNzI6IFsxLCAzNV0sIDc4OiAy
NiwgNzk6IDI3LCA4MDogWzEsIDI4XSwgODE6IFsxLCAyOV0sIDgyOiBbMSwgMzBdLCA4MzogWzEs
IDMxXSwgODQ6IFsxLCAzMl0sIDg1OiBbMSwgMzRdLCA4NjogMzMgfSwgeyAyMDogNDcsIDcyOiBb
MSwgMzVdLCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0sIDgxOiBbMSwgMjldLCA4MjogWzEs
IDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwgODY6IDMzIH0sIHsg
MjA6IDQ4LCA3MjogWzEsIDM1XSwgNzg6IDI2LCA3OTogMjcsIDgwOiBbMSwgMjhdLCA4MTogWzEs
IDI5XSwgODI6IFsxLCAzMF0sIDgzOiBbMSwgMzFdLCA4NDogWzEsIDMyXSwgODU6IFsxLCAzNF0s
IDg2OiAzMyB9LCB7IDIwOiA0MiwgNTY6IDQ5LCA2NDogNDMsIDY1OiBbMSwgNDRdLCA3MjogWzEs
IDM1XSwgNzg6IDI2LCA3OTogMjcsIDgwOiBbMSwgMjhdLCA4MTogWzEsIDI5XSwgODI6IFsxLCAz
MF0sIDgzOiBbMSwgMzFdLCA4NDogWzEsIDMyXSwgODU6IFsxLCAzNF0sIDg2OiAzMyB9LCB7IDMz
OiBbMiwgNzhdLCA0OTogNTAsIDY1OiBbMiwgNzhdLCA3MjogWzIsIDc4XSwgODA6IFsyLCA3OF0s
IDgxOiBbMiwgNzhdLCA4MjogWzIsIDc4XSwgODM6IFsyLCA3OF0sIDg0OiBbMiwgNzhdLCA4NTog
WzIsIDc4XSB9LCB7IDIzOiBbMiwgMzNdLCAzMzogWzIsIDMzXSwgNTQ6IFsyLCAzM10sIDY1OiBb
MiwgMzNdLCA2ODogWzIsIDMzXSwgNzI6IFsyLCAzM10sIDc1OiBbMiwgMzNdLCA4MDogWzIsIDMz
XSwgODE6IFsyLCAzM10sIDgyOiBbMiwgMzNdLCA4MzogWzIsIDMzXSwgODQ6IFsyLCAzM10sIDg1
OiBbMiwgMzNdIH0sIHsgMjM6IFsyLCAzNF0sIDMzOiBbMiwgMzRdLCA1NDogWzIsIDM0XSwgNjU6
IFsyLCAzNF0sIDY4OiBbMiwgMzRdLCA3MjogWzIsIDM0XSwgNzU6IFsyLCAzNF0sIDgwOiBbMiwg
MzRdLCA4MTogWzIsIDM0XSwgODI6IFsyLCAzNF0sIDgzOiBbMiwgMzRdLCA4NDogWzIsIDM0XSwg
ODU6IFsyLCAzNF0gfSwgeyAyMzogWzIsIDM1XSwgMzM6IFsyLCAzNV0sIDU0OiBbMiwgMzVdLCA2
NTogWzIsIDM1XSwgNjg6IFsyLCAzNV0sIDcyOiBbMiwgMzVdLCA3NTogWzIsIDM1XSwgODA6IFsy
LCAzNV0sIDgxOiBbMiwgMzVdLCA4MjogWzIsIDM1XSwgODM6IFsyLCAzNV0sIDg0OiBbMiwgMzVd
LCA4NTogWzIsIDM1XSB9LCB7IDIzOiBbMiwgMzZdLCAzMzogWzIsIDM2XSwgNTQ6IFsyLCAzNl0s
IDY1OiBbMiwgMzZdLCA2ODogWzIsIDM2XSwgNzI6IFsyLCAzNl0sIDc1OiBbMiwgMzZdLCA4MDog
WzIsIDM2XSwgODE6IFsyLCAzNl0sIDgyOiBbMiwgMzZdLCA4MzogWzIsIDM2XSwgODQ6IFsyLCAz
Nl0sIDg1OiBbMiwgMzZdIH0sIHsgMjM6IFsyLCAzN10sIDMzOiBbMiwgMzddLCA1NDogWzIsIDM3
XSwgNjU6IFsyLCAzN10sIDY4OiBbMiwgMzddLCA3MjogWzIsIDM3XSwgNzU6IFsyLCAzN10sIDgw
OiBbMiwgMzddLCA4MTogWzIsIDM3XSwgODI6IFsyLCAzN10sIDgzOiBbMiwgMzddLCA4NDogWzIs
IDM3XSwgODU6IFsyLCAzN10gfSwgeyAyMzogWzIsIDM4XSwgMzM6IFsyLCAzOF0sIDU0OiBbMiwg
MzhdLCA2NTogWzIsIDM4XSwgNjg6IFsyLCAzOF0sIDcyOiBbMiwgMzhdLCA3NTogWzIsIDM4XSwg
ODA6IFsyLCAzOF0sIDgxOiBbMiwgMzhdLCA4MjogWzIsIDM4XSwgODM6IFsyLCAzOF0sIDg0OiBb
MiwgMzhdLCA4NTogWzIsIDM4XSB9LCB7IDIzOiBbMiwgMzldLCAzMzogWzIsIDM5XSwgNTQ6IFsy
LCAzOV0sIDY1OiBbMiwgMzldLCA2ODogWzIsIDM5XSwgNzI6IFsyLCAzOV0sIDc1OiBbMiwgMzld
LCA4MDogWzIsIDM5XSwgODE6IFsyLCAzOV0sIDgyOiBbMiwgMzldLCA4MzogWzIsIDM5XSwgODQ6
IFsyLCAzOV0sIDg1OiBbMiwgMzldIH0sIHsgMjM6IFsyLCA0M10sIDMzOiBbMiwgNDNdLCA1NDog
WzIsIDQzXSwgNjU6IFsyLCA0M10sIDY4OiBbMiwgNDNdLCA3MjogWzIsIDQzXSwgNzU6IFsyLCA0
M10sIDgwOiBbMiwgNDNdLCA4MTogWzIsIDQzXSwgODI6IFsyLCA0M10sIDgzOiBbMiwgNDNdLCA4
NDogWzIsIDQzXSwgODU6IFsyLCA0M10sIDg3OiBbMSwgNTFdIH0sIHsgNzI6IFsxLCAzNV0sIDg2
OiA1MiB9LCB7IDIzOiBbMiwgNDVdLCAzMzogWzIsIDQ1XSwgNTQ6IFsyLCA0NV0sIDY1OiBbMiwg
NDVdLCA2ODogWzIsIDQ1XSwgNzI6IFsyLCA0NV0sIDc1OiBbMiwgNDVdLCA4MDogWzIsIDQ1XSwg
ODE6IFsyLCA0NV0sIDgyOiBbMiwgNDVdLCA4MzogWzIsIDQ1XSwgODQ6IFsyLCA0NV0sIDg1OiBb
MiwgNDVdLCA4NzogWzIsIDQ1XSB9LCB7IDUyOiA1MywgNTQ6IFsyLCA4Ml0sIDY1OiBbMiwgODJd
LCA3MjogWzIsIDgyXSwgODA6IFsyLCA4Ml0sIDgxOiBbMiwgODJdLCA4MjogWzIsIDgyXSwgODM6
IFsyLCA4Ml0sIDg0OiBbMiwgODJdLCA4NTogWzIsIDgyXSB9LCB7IDI1OiA1NCwgMzg6IDU2LCAz
OTogWzEsIDU4XSwgNDM6IDU3LCA0NDogWzEsIDU5XSwgNDU6IDU1LCA0NzogWzIsIDU0XSB9LCB7
IDI4OiA2MCwgNDM6IDYxLCA0NDogWzEsIDU5XSwgNDc6IFsyLCA1Nl0gfSwgeyAxMzogNjMsIDE1
OiBbMSwgMjBdLCAxODogWzEsIDYyXSB9LCB7IDE1OiBbMiwgNDhdLCAxODogWzIsIDQ4XSB9LCB7
IDMzOiBbMiwgODZdLCA1NzogNjQsIDY1OiBbMiwgODZdLCA3MjogWzIsIDg2XSwgODA6IFsyLCA4
Nl0sIDgxOiBbMiwgODZdLCA4MjogWzIsIDg2XSwgODM6IFsyLCA4Nl0sIDg0OiBbMiwgODZdLCA4
NTogWzIsIDg2XSB9LCB7IDMzOiBbMiwgNDBdLCA2NTogWzIsIDQwXSwgNzI6IFsyLCA0MF0sIDgw
OiBbMiwgNDBdLCA4MTogWzIsIDQwXSwgODI6IFsyLCA0MF0sIDgzOiBbMiwgNDBdLCA4NDogWzIs
IDQwXSwgODU6IFsyLCA0MF0gfSwgeyAzMzogWzIsIDQxXSwgNjU6IFsyLCA0MV0sIDcyOiBbMiwg
NDFdLCA4MDogWzIsIDQxXSwgODE6IFsyLCA0MV0sIDgyOiBbMiwgNDFdLCA4MzogWzIsIDQxXSwg
ODQ6IFsyLCA0MV0sIDg1OiBbMiwgNDFdIH0sIHsgMjA6IDY1LCA3MjogWzEsIDM1XSwgNzg6IDI2
LCA3OTogMjcsIDgwOiBbMSwgMjhdLCA4MTogWzEsIDI5XSwgODI6IFsxLCAzMF0sIDgzOiBbMSwg
MzFdLCA4NDogWzEsIDMyXSwgODU6IFsxLCAzNF0sIDg2OiAzMyB9LCB7IDI2OiA2NiwgNDc6IFsx
LCA2N10gfSwgeyAzMDogNjgsIDMzOiBbMiwgNThdLCA2NTogWzIsIDU4XSwgNzI6IFsyLCA1OF0s
IDc1OiBbMiwgNThdLCA4MDogWzIsIDU4XSwgODE6IFsyLCA1OF0sIDgyOiBbMiwgNThdLCA4Mzog
WzIsIDU4XSwgODQ6IFsyLCA1OF0sIDg1OiBbMiwgNThdIH0sIHsgMzM6IFsyLCA2NF0sIDM1OiA2
OSwgNjU6IFsyLCA2NF0sIDcyOiBbMiwgNjRdLCA3NTogWzIsIDY0XSwgODA6IFsyLCA2NF0sIDgx
OiBbMiwgNjRdLCA4MjogWzIsIDY0XSwgODM6IFsyLCA2NF0sIDg0OiBbMiwgNjRdLCA4NTogWzIs
IDY0XSB9LCB7IDIxOiA3MCwgMjM6IFsyLCA1MF0sIDY1OiBbMiwgNTBdLCA3MjogWzIsIDUwXSwg
ODA6IFsyLCA1MF0sIDgxOiBbMiwgNTBdLCA4MjogWzIsIDUwXSwgODM6IFsyLCA1MF0sIDg0OiBb
MiwgNTBdLCA4NTogWzIsIDUwXSB9LCB7IDMzOiBbMiwgOTBdLCA2MTogNzEsIDY1OiBbMiwgOTBd
LCA3MjogWzIsIDkwXSwgODA6IFsyLCA5MF0sIDgxOiBbMiwgOTBdLCA4MjogWzIsIDkwXSwgODM6
IFsyLCA5MF0sIDg0OiBbMiwgOTBdLCA4NTogWzIsIDkwXSB9LCB7IDIwOiA3NSwgMzM6IFsyLCA4
MF0sIDUwOiA3MiwgNjM6IDczLCA2NDogNzYsIDY1OiBbMSwgNDRdLCA2OTogNzQsIDcwOiA3Nywg
NzE6IDc4LCA3MjogWzEsIDc5XSwgNzg6IDI2LCA3OTogMjcsIDgwOiBbMSwgMjhdLCA4MTogWzEs
IDI5XSwgODI6IFsxLCAzMF0sIDgzOiBbMSwgMzFdLCA4NDogWzEsIDMyXSwgODU6IFsxLCAzNF0s
IDg2OiAzMyB9LCB7IDcyOiBbMSwgODBdIH0sIHsgMjM6IFsyLCA0Ml0sIDMzOiBbMiwgNDJdLCA1
NDogWzIsIDQyXSwgNjU6IFsyLCA0Ml0sIDY4OiBbMiwgNDJdLCA3MjogWzIsIDQyXSwgNzU6IFsy
LCA0Ml0sIDgwOiBbMiwgNDJdLCA4MTogWzIsIDQyXSwgODI6IFsyLCA0Ml0sIDgzOiBbMiwgNDJd
LCA4NDogWzIsIDQyXSwgODU6IFsyLCA0Ml0sIDg3OiBbMSwgNTFdIH0sIHsgMjA6IDc1LCA1Mzog
ODEsIDU0OiBbMiwgODRdLCA2MzogODIsIDY0OiA3NiwgNjU6IFsxLCA0NF0sIDY5OiA4MywgNzA6
IDc3LCA3MTogNzgsIDcyOiBbMSwgNzldLCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0sIDgx
OiBbMSwgMjldLCA4MjogWzEsIDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTogWzEs
IDM0XSwgODY6IDMzIH0sIHsgMjY6IDg0LCA0NzogWzEsIDY3XSB9LCB7IDQ3OiBbMiwgNTVdIH0s
IHsgNDogODUsIDY6IDMsIDE0OiBbMiwgNDZdLCAxNTogWzIsIDQ2XSwgMTk6IFsyLCA0Nl0sIDI5
OiBbMiwgNDZdLCAzNDogWzIsIDQ2XSwgMzk6IFsyLCA0Nl0sIDQ0OiBbMiwgNDZdLCA0NzogWzIs
IDQ2XSwgNDg6IFsyLCA0Nl0sIDUxOiBbMiwgNDZdLCA1NTogWzIsIDQ2XSwgNjA6IFsyLCA0Nl0g
fSwgeyA0NzogWzIsIDIwXSB9LCB7IDIwOiA4NiwgNzI6IFsxLCAzNV0sIDc4OiAyNiwgNzk6IDI3
LCA4MDogWzEsIDI4XSwgODE6IFsxLCAyOV0sIDgyOiBbMSwgMzBdLCA4MzogWzEsIDMxXSwgODQ6
IFsxLCAzMl0sIDg1OiBbMSwgMzRdLCA4NjogMzMgfSwgeyA0OiA4NywgNjogMywgMTQ6IFsyLCA0
Nl0sIDE1OiBbMiwgNDZdLCAxOTogWzIsIDQ2XSwgMjk6IFsyLCA0Nl0sIDM0OiBbMiwgNDZdLCA0
NzogWzIsIDQ2XSwgNDg6IFsyLCA0Nl0sIDUxOiBbMiwgNDZdLCA1NTogWzIsIDQ2XSwgNjA6IFsy
LCA0Nl0gfSwgeyAyNjogODgsIDQ3OiBbMSwgNjddIH0sIHsgNDc6IFsyLCA1N10gfSwgeyA1OiBb
MiwgMTFdLCAxNDogWzIsIDExXSwgMTU6IFsyLCAxMV0sIDE5OiBbMiwgMTFdLCAyOTogWzIsIDEx
XSwgMzQ6IFsyLCAxMV0sIDM5OiBbMiwgMTFdLCA0NDogWzIsIDExXSwgNDc6IFsyLCAxMV0sIDQ4
OiBbMiwgMTFdLCA1MTogWzIsIDExXSwgNTU6IFsyLCAxMV0sIDYwOiBbMiwgMTFdIH0sIHsgMTU6
IFsyLCA0OV0sIDE4OiBbMiwgNDldIH0sIHsgMjA6IDc1LCAzMzogWzIsIDg4XSwgNTg6IDg5LCA2
MzogOTAsIDY0OiA3NiwgNjU6IFsxLCA0NF0sIDY5OiA5MSwgNzA6IDc3LCA3MTogNzgsIDcyOiBb
MSwgNzldLCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0sIDgxOiBbMSwgMjldLCA4MjogWzEs
IDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwgODY6IDMzIH0sIHsg
NjU6IFsyLCA5NF0sIDY2OiA5MiwgNjg6IFsyLCA5NF0sIDcyOiBbMiwgOTRdLCA4MDogWzIsIDk0
XSwgODE6IFsyLCA5NF0sIDgyOiBbMiwgOTRdLCA4MzogWzIsIDk0XSwgODQ6IFsyLCA5NF0sIDg1
OiBbMiwgOTRdIH0sIHsgNTogWzIsIDI1XSwgMTQ6IFsyLCAyNV0sIDE1OiBbMiwgMjVdLCAxOTog
WzIsIDI1XSwgMjk6IFsyLCAyNV0sIDM0OiBbMiwgMjVdLCAzOTogWzIsIDI1XSwgNDQ6IFsyLCAy
NV0sIDQ3OiBbMiwgMjVdLCA0ODogWzIsIDI1XSwgNTE6IFsyLCAyNV0sIDU1OiBbMiwgMjVdLCA2
MDogWzIsIDI1XSB9LCB7IDIwOiA5MywgNzI6IFsxLCAzNV0sIDc4OiAyNiwgNzk6IDI3LCA4MDog
WzEsIDI4XSwgODE6IFsxLCAyOV0sIDgyOiBbMSwgMzBdLCA4MzogWzEsIDMxXSwgODQ6IFsxLCAz
Ml0sIDg1OiBbMSwgMzRdLCA4NjogMzMgfSwgeyAyMDogNzUsIDMxOiA5NCwgMzM6IFsyLCA2MF0s
IDYzOiA5NSwgNjQ6IDc2LCA2NTogWzEsIDQ0XSwgNjk6IDk2LCA3MDogNzcsIDcxOiA3OCwgNzI6
IFsxLCA3OV0sIDc1OiBbMiwgNjBdLCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0sIDgxOiBb
MSwgMjldLCA4MjogWzEsIDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0
XSwgODY6IDMzIH0sIHsgMjA6IDc1LCAzMzogWzIsIDY2XSwgMzY6IDk3LCA2MzogOTgsIDY0OiA3
NiwgNjU6IFsxLCA0NF0sIDY5OiA5OSwgNzA6IDc3LCA3MTogNzgsIDcyOiBbMSwgNzldLCA3NTog
WzIsIDY2XSwgNzg6IDI2LCA3OTogMjcsIDgwOiBbMSwgMjhdLCA4MTogWzEsIDI5XSwgODI6IFsx
LCAzMF0sIDgzOiBbMSwgMzFdLCA4NDogWzEsIDMyXSwgODU6IFsxLCAzNF0sIDg2OiAzMyB9LCB7
IDIwOiA3NSwgMjI6IDEwMCwgMjM6IFsyLCA1Ml0sIDYzOiAxMDEsIDY0OiA3NiwgNjU6IFsxLCA0
NF0sIDY5OiAxMDIsIDcwOiA3NywgNzE6IDc4LCA3MjogWzEsIDc5XSwgNzg6IDI2LCA3OTogMjcs
IDgwOiBbMSwgMjhdLCA4MTogWzEsIDI5XSwgODI6IFsxLCAzMF0sIDgzOiBbMSwgMzFdLCA4NDog
WzEsIDMyXSwgODU6IFsxLCAzNF0sIDg2OiAzMyB9LCB7IDIwOiA3NSwgMzM6IFsyLCA5Ml0sIDYy
OiAxMDMsIDYzOiAxMDQsIDY0OiA3NiwgNjU6IFsxLCA0NF0sIDY5OiAxMDUsIDcwOiA3NywgNzE6
IDc4LCA3MjogWzEsIDc5XSwgNzg6IDI2LCA3OTogMjcsIDgwOiBbMSwgMjhdLCA4MTogWzEsIDI5
XSwgODI6IFsxLCAzMF0sIDgzOiBbMSwgMzFdLCA4NDogWzEsIDMyXSwgODU6IFsxLCAzNF0sIDg2
OiAzMyB9LCB7IDMzOiBbMSwgMTA2XSB9LCB7IDMzOiBbMiwgNzldLCA2NTogWzIsIDc5XSwgNzI6
IFsyLCA3OV0sIDgwOiBbMiwgNzldLCA4MTogWzIsIDc5XSwgODI6IFsyLCA3OV0sIDgzOiBbMiwg
NzldLCA4NDogWzIsIDc5XSwgODU6IFsyLCA3OV0gfSwgeyAzMzogWzIsIDgxXSB9LCB7IDIzOiBb
MiwgMjddLCAzMzogWzIsIDI3XSwgNTQ6IFsyLCAyN10sIDY1OiBbMiwgMjddLCA2ODogWzIsIDI3
XSwgNzI6IFsyLCAyN10sIDc1OiBbMiwgMjddLCA4MDogWzIsIDI3XSwgODE6IFsyLCAyN10sIDgy
OiBbMiwgMjddLCA4MzogWzIsIDI3XSwgODQ6IFsyLCAyN10sIDg1OiBbMiwgMjddIH0sIHsgMjM6
IFsyLCAyOF0sIDMzOiBbMiwgMjhdLCA1NDogWzIsIDI4XSwgNjU6IFsyLCAyOF0sIDY4OiBbMiwg
MjhdLCA3MjogWzIsIDI4XSwgNzU6IFsyLCAyOF0sIDgwOiBbMiwgMjhdLCA4MTogWzIsIDI4XSwg
ODI6IFsyLCAyOF0sIDgzOiBbMiwgMjhdLCA4NDogWzIsIDI4XSwgODU6IFsyLCAyOF0gfSwgeyAy
MzogWzIsIDMwXSwgMzM6IFsyLCAzMF0sIDU0OiBbMiwgMzBdLCA2ODogWzIsIDMwXSwgNzE6IDEw
NywgNzI6IFsxLCAxMDhdLCA3NTogWzIsIDMwXSB9LCB7IDIzOiBbMiwgOThdLCAzMzogWzIsIDk4
XSwgNTQ6IFsyLCA5OF0sIDY4OiBbMiwgOThdLCA3MjogWzIsIDk4XSwgNzU6IFsyLCA5OF0gfSwg
eyAyMzogWzIsIDQ1XSwgMzM6IFsyLCA0NV0sIDU0OiBbMiwgNDVdLCA2NTogWzIsIDQ1XSwgNjg6
IFsyLCA0NV0sIDcyOiBbMiwgNDVdLCA3MzogWzEsIDEwOV0sIDc1OiBbMiwgNDVdLCA4MDogWzIs
IDQ1XSwgODE6IFsyLCA0NV0sIDgyOiBbMiwgNDVdLCA4MzogWzIsIDQ1XSwgODQ6IFsyLCA0NV0s
IDg1OiBbMiwgNDVdLCA4NzogWzIsIDQ1XSB9LCB7IDIzOiBbMiwgNDRdLCAzMzogWzIsIDQ0XSwg
NTQ6IFsyLCA0NF0sIDY1OiBbMiwgNDRdLCA2ODogWzIsIDQ0XSwgNzI6IFsyLCA0NF0sIDc1OiBb
MiwgNDRdLCA4MDogWzIsIDQ0XSwgODE6IFsyLCA0NF0sIDgyOiBbMiwgNDRdLCA4MzogWzIsIDQ0
XSwgODQ6IFsyLCA0NF0sIDg1OiBbMiwgNDRdLCA4NzogWzIsIDQ0XSB9LCB7IDU0OiBbMSwgMTEw
XSB9LCB7IDU0OiBbMiwgODNdLCA2NTogWzIsIDgzXSwgNzI6IFsyLCA4M10sIDgwOiBbMiwgODNd
LCA4MTogWzIsIDgzXSwgODI6IFsyLCA4M10sIDgzOiBbMiwgODNdLCA4NDogWzIsIDgzXSwgODU6
IFsyLCA4M10gfSwgeyA1NDogWzIsIDg1XSB9LCB7IDU6IFsyLCAxM10sIDE0OiBbMiwgMTNdLCAx
NTogWzIsIDEzXSwgMTk6IFsyLCAxM10sIDI5OiBbMiwgMTNdLCAzNDogWzIsIDEzXSwgMzk6IFsy
LCAxM10sIDQ0OiBbMiwgMTNdLCA0NzogWzIsIDEzXSwgNDg6IFsyLCAxM10sIDUxOiBbMiwgMTNd
LCA1NTogWzIsIDEzXSwgNjA6IFsyLCAxM10gfSwgeyAzODogNTYsIDM5OiBbMSwgNThdLCA0Mzog
NTcsIDQ0OiBbMSwgNTldLCA0NTogMTEyLCA0NjogMTExLCA0NzogWzIsIDc2XSB9LCB7IDMzOiBb
MiwgNzBdLCA0MDogMTEzLCA2NTogWzIsIDcwXSwgNzI6IFsyLCA3MF0sIDc1OiBbMiwgNzBdLCA4
MDogWzIsIDcwXSwgODE6IFsyLCA3MF0sIDgyOiBbMiwgNzBdLCA4MzogWzIsIDcwXSwgODQ6IFsy
LCA3MF0sIDg1OiBbMiwgNzBdIH0sIHsgNDc6IFsyLCAxOF0gfSwgeyA1OiBbMiwgMTRdLCAxNDog
WzIsIDE0XSwgMTU6IFsyLCAxNF0sIDE5OiBbMiwgMTRdLCAyOTogWzIsIDE0XSwgMzQ6IFsyLCAx
NF0sIDM5OiBbMiwgMTRdLCA0NDogWzIsIDE0XSwgNDc6IFsyLCAxNF0sIDQ4OiBbMiwgMTRdLCA1
MTogWzIsIDE0XSwgNTU6IFsyLCAxNF0sIDYwOiBbMiwgMTRdIH0sIHsgMzM6IFsxLCAxMTRdIH0s
IHsgMzM6IFsyLCA4N10sIDY1OiBbMiwgODddLCA3MjogWzIsIDg3XSwgODA6IFsyLCA4N10sIDgx
OiBbMiwgODddLCA4MjogWzIsIDg3XSwgODM6IFsyLCA4N10sIDg0OiBbMiwgODddLCA4NTogWzIs
IDg3XSB9LCB7IDMzOiBbMiwgODldIH0sIHsgMjA6IDc1LCA2MzogMTE2LCA2NDogNzYsIDY1OiBb
MSwgNDRdLCA2NzogMTE1LCA2ODogWzIsIDk2XSwgNjk6IDExNywgNzA6IDc3LCA3MTogNzgsIDcy
OiBbMSwgNzldLCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0sIDgxOiBbMSwgMjldLCA4Mjog
WzEsIDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwgODY6IDMzIH0s
IHsgMzM6IFsxLCAxMThdIH0sIHsgMzI6IDExOSwgMzM6IFsyLCA2Ml0sIDc0OiAxMjAsIDc1OiBb
MSwgMTIxXSB9LCB7IDMzOiBbMiwgNTldLCA2NTogWzIsIDU5XSwgNzI6IFsyLCA1OV0sIDc1OiBb
MiwgNTldLCA4MDogWzIsIDU5XSwgODE6IFsyLCA1OV0sIDgyOiBbMiwgNTldLCA4MzogWzIsIDU5
XSwgODQ6IFsyLCA1OV0sIDg1OiBbMiwgNTldIH0sIHsgMzM6IFsyLCA2MV0sIDc1OiBbMiwgNjFd
IH0sIHsgMzM6IFsyLCA2OF0sIDM3OiAxMjIsIDc0OiAxMjMsIDc1OiBbMSwgMTIxXSB9LCB7IDMz
OiBbMiwgNjVdLCA2NTogWzIsIDY1XSwgNzI6IFsyLCA2NV0sIDc1OiBbMiwgNjVdLCA4MDogWzIs
IDY1XSwgODE6IFsyLCA2NV0sIDgyOiBbMiwgNjVdLCA4MzogWzIsIDY1XSwgODQ6IFsyLCA2NV0s
IDg1OiBbMiwgNjVdIH0sIHsgMzM6IFsyLCA2N10sIDc1OiBbMiwgNjddIH0sIHsgMjM6IFsxLCAx
MjRdIH0sIHsgMjM6IFsyLCA1MV0sIDY1OiBbMiwgNTFdLCA3MjogWzIsIDUxXSwgODA6IFsyLCA1
MV0sIDgxOiBbMiwgNTFdLCA4MjogWzIsIDUxXSwgODM6IFsyLCA1MV0sIDg0OiBbMiwgNTFdLCA4
NTogWzIsIDUxXSB9LCB7IDIzOiBbMiwgNTNdIH0sIHsgMzM6IFsxLCAxMjVdIH0sIHsgMzM6IFsy
LCA5MV0sIDY1OiBbMiwgOTFdLCA3MjogWzIsIDkxXSwgODA6IFsyLCA5MV0sIDgxOiBbMiwgOTFd
LCA4MjogWzIsIDkxXSwgODM6IFsyLCA5MV0sIDg0OiBbMiwgOTFdLCA4NTogWzIsIDkxXSB9LCB7
IDMzOiBbMiwgOTNdIH0sIHsgNTogWzIsIDIyXSwgMTQ6IFsyLCAyMl0sIDE1OiBbMiwgMjJdLCAx
OTogWzIsIDIyXSwgMjk6IFsyLCAyMl0sIDM0OiBbMiwgMjJdLCAzOTogWzIsIDIyXSwgNDQ6IFsy
LCAyMl0sIDQ3OiBbMiwgMjJdLCA0ODogWzIsIDIyXSwgNTE6IFsyLCAyMl0sIDU1OiBbMiwgMjJd
LCA2MDogWzIsIDIyXSB9LCB7IDIzOiBbMiwgOTldLCAzMzogWzIsIDk5XSwgNTQ6IFsyLCA5OV0s
IDY4OiBbMiwgOTldLCA3MjogWzIsIDk5XSwgNzU6IFsyLCA5OV0gfSwgeyA3MzogWzEsIDEwOV0g
fSwgeyAyMDogNzUsIDYzOiAxMjYsIDY0OiA3NiwgNjU6IFsxLCA0NF0sIDcyOiBbMSwgMzVdLCA3
ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0sIDgxOiBbMSwgMjldLCA4MjogWzEsIDMwXSwgODM6
IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwgODY6IDMzIH0sIHsgNTogWzIsIDIz
XSwgMTQ6IFsyLCAyM10sIDE1OiBbMiwgMjNdLCAxOTogWzIsIDIzXSwgMjk6IFsyLCAyM10sIDM0
OiBbMiwgMjNdLCAzOTogWzIsIDIzXSwgNDQ6IFsyLCAyM10sIDQ3OiBbMiwgMjNdLCA0ODogWzIs
IDIzXSwgNTE6IFsyLCAyM10sIDU1OiBbMiwgMjNdLCA2MDogWzIsIDIzXSB9LCB7IDQ3OiBbMiwg
MTldIH0sIHsgNDc6IFsyLCA3N10gfSwgeyAyMDogNzUsIDMzOiBbMiwgNzJdLCA0MTogMTI3LCA2
MzogMTI4LCA2NDogNzYsIDY1OiBbMSwgNDRdLCA2OTogMTI5LCA3MDogNzcsIDcxOiA3OCwgNzI6
IFsxLCA3OV0sIDc1OiBbMiwgNzJdLCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0sIDgxOiBb
MSwgMjldLCA4MjogWzEsIDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0
XSwgODY6IDMzIH0sIHsgNTogWzIsIDI0XSwgMTQ6IFsyLCAyNF0sIDE1OiBbMiwgMjRdLCAxOTog
WzIsIDI0XSwgMjk6IFsyLCAyNF0sIDM0OiBbMiwgMjRdLCAzOTogWzIsIDI0XSwgNDQ6IFsyLCAy
NF0sIDQ3OiBbMiwgMjRdLCA0ODogWzIsIDI0XSwgNTE6IFsyLCAyNF0sIDU1OiBbMiwgMjRdLCA2
MDogWzIsIDI0XSB9LCB7IDY4OiBbMSwgMTMwXSB9LCB7IDY1OiBbMiwgOTVdLCA2ODogWzIsIDk1
XSwgNzI6IFsyLCA5NV0sIDgwOiBbMiwgOTVdLCA4MTogWzIsIDk1XSwgODI6IFsyLCA5NV0sIDgz
OiBbMiwgOTVdLCA4NDogWzIsIDk1XSwgODU6IFsyLCA5NV0gfSwgeyA2ODogWzIsIDk3XSB9LCB7
IDU6IFsyLCAyMV0sIDE0OiBbMiwgMjFdLCAxNTogWzIsIDIxXSwgMTk6IFsyLCAyMV0sIDI5OiBb
MiwgMjFdLCAzNDogWzIsIDIxXSwgMzk6IFsyLCAyMV0sIDQ0OiBbMiwgMjFdLCA0NzogWzIsIDIx
XSwgNDg6IFsyLCAyMV0sIDUxOiBbMiwgMjFdLCA1NTogWzIsIDIxXSwgNjA6IFsyLCAyMV0gfSwg
eyAzMzogWzEsIDEzMV0gfSwgeyAzMzogWzIsIDYzXSB9LCB7IDcyOiBbMSwgMTMzXSwgNzY6IDEz
MiB9LCB7IDMzOiBbMSwgMTM0XSB9LCB7IDMzOiBbMiwgNjldIH0sIHsgMTU6IFsyLCAxMl0gfSwg
eyAxNDogWzIsIDI2XSwgMTU6IFsyLCAyNl0sIDE5OiBbMiwgMjZdLCAyOTogWzIsIDI2XSwgMzQ6
IFsyLCAyNl0sIDQ3OiBbMiwgMjZdLCA0ODogWzIsIDI2XSwgNTE6IFsyLCAyNl0sIDU1OiBbMiwg
MjZdLCA2MDogWzIsIDI2XSB9LCB7IDIzOiBbMiwgMzFdLCAzMzogWzIsIDMxXSwgNTQ6IFsyLCAz
MV0sIDY4OiBbMiwgMzFdLCA3MjogWzIsIDMxXSwgNzU6IFsyLCAzMV0gfSwgeyAzMzogWzIsIDc0
XSwgNDI6IDEzNSwgNzQ6IDEzNiwgNzU6IFsxLCAxMjFdIH0sIHsgMzM6IFsyLCA3MV0sIDY1OiBb
MiwgNzFdLCA3MjogWzIsIDcxXSwgNzU6IFsyLCA3MV0sIDgwOiBbMiwgNzFdLCA4MTogWzIsIDcx
XSwgODI6IFsyLCA3MV0sIDgzOiBbMiwgNzFdLCA4NDogWzIsIDcxXSwgODU6IFsyLCA3MV0gfSwg
eyAzMzogWzIsIDczXSwgNzU6IFsyLCA3M10gfSwgeyAyMzogWzIsIDI5XSwgMzM6IFsyLCAyOV0s
IDU0OiBbMiwgMjldLCA2NTogWzIsIDI5XSwgNjg6IFsyLCAyOV0sIDcyOiBbMiwgMjldLCA3NTog
WzIsIDI5XSwgODA6IFsyLCAyOV0sIDgxOiBbMiwgMjldLCA4MjogWzIsIDI5XSwgODM6IFsyLCAy
OV0sIDg0OiBbMiwgMjldLCA4NTogWzIsIDI5XSB9LCB7IDE0OiBbMiwgMTVdLCAxNTogWzIsIDE1
XSwgMTk6IFsyLCAxNV0sIDI5OiBbMiwgMTVdLCAzNDogWzIsIDE1XSwgMzk6IFsyLCAxNV0sIDQ0
OiBbMiwgMTVdLCA0NzogWzIsIDE1XSwgNDg6IFsyLCAxNV0sIDUxOiBbMiwgMTVdLCA1NTogWzIs
IDE1XSwgNjA6IFsyLCAxNV0gfSwgeyA3MjogWzEsIDEzOF0sIDc3OiBbMSwgMTM3XSB9LCB7IDcy
OiBbMiwgMTAwXSwgNzc6IFsyLCAxMDBdIH0sIHsgMTQ6IFsyLCAxNl0sIDE1OiBbMiwgMTZdLCAx
OTogWzIsIDE2XSwgMjk6IFsyLCAxNl0sIDM0OiBbMiwgMTZdLCA0NDogWzIsIDE2XSwgNDc6IFsy
LCAxNl0sIDQ4OiBbMiwgMTZdLCA1MTogWzIsIDE2XSwgNTU6IFsyLCAxNl0sIDYwOiBbMiwgMTZd
IH0sIHsgMzM6IFsxLCAxMzldIH0sIHsgMzM6IFsyLCA3NV0gfSwgeyAzMzogWzIsIDMyXSB9LCB7
IDcyOiBbMiwgMTAxXSwgNzc6IFsyLCAxMDFdIH0sIHsgMTQ6IFsyLCAxN10sIDE1OiBbMiwgMTdd
LCAxOTogWzIsIDE3XSwgMjk6IFsyLCAxN10sIDM0OiBbMiwgMTddLCAzOTogWzIsIDE3XSwgNDQ6
IFsyLCAxN10sIDQ3OiBbMiwgMTddLCA0ODogWzIsIDE3XSwgNTE6IFsyLCAxN10sIDU1OiBbMiwg
MTddLCA2MDogWzIsIDE3XSB9XSwKKyAgICAgICAgICAgIGRlZmF1bHRBY3Rpb25zOiB7IDQ6IFsy
LCAxXSwgNTU6IFsyLCA1NV0sIDU3OiBbMiwgMjBdLCA2MTogWzIsIDU3XSwgNzQ6IFsyLCA4MV0s
IDgzOiBbMiwgODVdLCA4NzogWzIsIDE4XSwgOTE6IFsyLCA4OV0sIDEwMjogWzIsIDUzXSwgMTA1
OiBbMiwgOTNdLCAxMTE6IFsyLCAxOV0sIDExMjogWzIsIDc3XSwgMTE3OiBbMiwgOTddLCAxMjA6
IFsyLCA2M10sIDEyMzogWzIsIDY5XSwgMTI0OiBbMiwgMTJdLCAxMzY6IFsyLCA3NV0sIDEzNzog
WzIsIDMyXSB9LAorICAgICAgICAgICAgcGFyc2VFcnJvcjogZnVuY3Rpb24gcGFyc2VFcnJvcihz
dHIsIGhhc2gpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Ioc3RyKTsKKyAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICBwYXJzZTogZnVuY3Rpb24gcGFyc2UoaW5wdXQpIHsKKyAg
ICAgICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXMsCisgICAgICAgICAgICAgICAgICAgIHN0YWNr
ID0gWzBdLAorICAgICAgICAgICAgICAgICAgICB2c3RhY2sgPSBbbnVsbF0sCisgICAgICAgICAg
ICAgICAgICAgIGxzdGFjayA9IFtdLAorICAgICAgICAgICAgICAgICAgICB0YWJsZSA9IHRoaXMu
dGFibGUsCisgICAgICAgICAgICAgICAgICAgIHl5dGV4dCA9ICIiLAorICAgICAgICAgICAgICAg
ICAgICB5eWxpbmVubyA9IDAsCisgICAgICAgICAgICAgICAgICAgIHl5bGVuZyA9IDAsCisgICAg
ICAgICAgICAgICAgICAgIHJlY292ZXJpbmcgPSAwLAorICAgICAgICAgICAgICAgICAgICBURVJS
T1IgPSAyLAorICAgICAgICAgICAgICAgICAgICBFT0YgPSAxOworICAgICAgICAgICAgICAgIHRo
aXMubGV4ZXIuc2V0SW5wdXQoaW5wdXQpOworICAgICAgICAgICAgICAgIHRoaXMubGV4ZXIueXkg
PSB0aGlzLnl5OworICAgICAgICAgICAgICAgIHRoaXMueXkubGV4ZXIgPSB0aGlzLmxleGVyOwor
ICAgICAgICAgICAgICAgIHRoaXMueXkucGFyc2VyID0gdGhpczsKKyAgICAgICAgICAgICAgICBp
ZiAodHlwZW9mIHRoaXMubGV4ZXIueXlsbG9jID09ICJ1bmRlZmluZWQiKSB0aGlzLmxleGVyLnl5
bGxvYyA9IHt9OworICAgICAgICAgICAgICAgIHZhciB5eWxvYyA9IHRoaXMubGV4ZXIueXlsbG9j
OworICAgICAgICAgICAgICAgIGxzdGFjay5wdXNoKHl5bG9jKTsKKyAgICAgICAgICAgICAgICB2
YXIgcmFuZ2VzID0gdGhpcy5sZXhlci5vcHRpb25zICYmIHRoaXMubGV4ZXIub3B0aW9ucy5yYW5n
ZXM7CisgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnl5LnBhcnNlRXJyb3IgPT09ICJm
dW5jdGlvbiIpIHRoaXMucGFyc2VFcnJvciA9IHRoaXMueXkucGFyc2VFcnJvcjsKKyAgICAgICAg
ICAgICAgICBmdW5jdGlvbiBwb3BTdGFjayhuKSB7CisgICAgICAgICAgICAgICAgICAgIHN0YWNr
Lmxlbmd0aCA9IHN0YWNrLmxlbmd0aCAtIDIgKiBuOworICAgICAgICAgICAgICAgICAgICB2c3Rh
Y2subGVuZ3RoID0gdnN0YWNrLmxlbmd0aCAtIG47CisgICAgICAgICAgICAgICAgICAgIGxzdGFj
ay5sZW5ndGggPSBsc3RhY2subGVuZ3RoIC0gbjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgZnVuY3Rpb24gbGV4KCkgeworICAgICAgICAgICAgICAgICAgICB2YXIgdG9rZW47
CisgICAgICAgICAgICAgICAgICAgIHRva2VuID0gc2VsZi5sZXhlci5sZXgoKSB8fCAxOworICAg
ICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHRva2VuICE9PSAibnVtYmVyIikgeworICAgICAg
ICAgICAgICAgICAgICAgICAgdG9rZW4gPSBzZWxmLnN5bWJvbHNfW3Rva2VuXSB8fCB0b2tlbjsK
KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW47
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHZhciBzeW1ib2wsCisgICAgICAg
ICAgICAgICAgICAgIHByZUVycm9yU3ltYm9sLAorICAgICAgICAgICAgICAgICAgICBzdGF0ZSwK
KyAgICAgICAgICAgICAgICAgICAgYWN0aW9uLAorICAgICAgICAgICAgICAgICAgICBhLAorICAg
ICAgICAgICAgICAgICAgICByLAorICAgICAgICAgICAgICAgICAgICB5eXZhbCA9IHt9LAorICAg
ICAgICAgICAgICAgICAgICBwLAorICAgICAgICAgICAgICAgICAgICBsZW4sCisgICAgICAgICAg
ICAgICAgICAgIG5ld1N0YXRlLAorICAgICAgICAgICAgICAgICAgICBleHBlY3RlZDsKKyAgICAg
ICAgICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IHN0
YWNrW3N0YWNrLmxlbmd0aCAtIDFdOworICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5kZWZh
dWx0QWN0aW9uc1tzdGF0ZV0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbiA9IHRo
aXMuZGVmYXVsdEFjdGlvbnNbc3RhdGVdOworICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN5bWJvbCA9PT0gbnVsbCB8fCB0eXBlb2Ygc3lt
Ym9sID09ICJ1bmRlZmluZWQiKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ltYm9s
ID0gbGV4KCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
ICAgICBhY3Rpb24gPSB0YWJsZVtzdGF0ZV0gJiYgdGFibGVbc3RhdGVdW3N5bWJvbF07CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBhY3Rpb24g
PT09ICJ1bmRlZmluZWQiIHx8ICFhY3Rpb24ubGVuZ3RoIHx8ICFhY3Rpb25bMF0pIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHZhciBlcnJTdHIgPSAiIjsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICghcmVjb3ZlcmluZykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVj
dGVkID0gW107CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChwIGluIHRhYmxlW3N0
YXRlXSkgaWYgKHRoaXMudGVybWluYWxzX1twXSAmJiBwID4gMikgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBleHBlY3RlZC5wdXNoKCInIiArIHRoaXMudGVybWluYWxzX1twXSAr
ICInIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICh0aGlzLmxleGVyLnNob3dQb3NpdGlvbikgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBlcnJTdHIgPSAiUGFyc2UgZXJyb3Igb24gbGluZSAiICsgKHl5bGlu
ZW5vICsgMSkgKyAiOlxuIiArIHRoaXMubGV4ZXIuc2hvd1Bvc2l0aW9uKCkgKyAiXG5FeHBlY3Rp
bmcgIiArIGV4cGVjdGVkLmpvaW4oIiwgIikgKyAiLCBnb3QgJyIgKyAodGhpcy50ZXJtaW5hbHNf
W3N5bWJvbF0gfHwgc3ltYm9sKSArICInIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJTdHIgPSAiUGFyc2Ug
ZXJyb3Igb24gbGluZSAiICsgKHl5bGluZW5vICsgMSkgKyAiOiBVbmV4cGVjdGVkICIgKyAoc3lt
Ym9sID09IDEgPyAiZW5kIG9mIGlucHV0IiA6ICInIiArICh0aGlzLnRlcm1pbmFsc19bc3ltYm9s
XSB8fCBzeW1ib2wpICsgIiciKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJzZUVycm9yKGVyclN0ciwgeyB0ZXh0OiB0
aGlzLmxleGVyLm1hdGNoLCB0b2tlbjogdGhpcy50ZXJtaW5hbHNfW3N5bWJvbF0gfHwgc3ltYm9s
LCBsaW5lOiB0aGlzLmxleGVyLnl5bGluZW5vLCBsb2M6IHl5bG9jLCBleHBlY3RlZDogZXhwZWN0
ZWQgfSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgaWYgKGFjdGlvblswXSBpbnN0YW5jZW9mIEFycmF5ICYmIGFj
dGlvbi5sZW5ndGggPiAxKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoIlBhcnNlIEVycm9yOiBtdWx0aXBsZSBhY3Rpb25zIHBvc3NpYmxlIGF0IHN0YXRlOiAiICsg
c3RhdGUgKyAiLCB0b2tlbjogIiArIHN5bWJvbCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgc3dpdGNoIChhY3Rpb25bMF0pIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFjay5wdXNoKHN5
bWJvbCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnN0YWNrLnB1c2godGhpcy5sZXhl
ci55eXRleHQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxzdGFjay5wdXNoKHRoaXMu
bGV4ZXIueXlsbG9jKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFjay5wdXNoKGFj
dGlvblsxXSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ltYm9sID0gbnVsbDsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByZUVycm9yU3ltYm9sKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHl5bGVuZyA9IHRoaXMubGV4ZXIueXlsZW5nOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5eXRleHQgPSB0aGlzLmxleGVyLnl5dGV4dDsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeXlsaW5lbm8gPSB0aGlzLmxleGVyLnl5
bGluZW5vOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5eWxvYyA9IHRoaXMubGV4
ZXIueXlsbG9jOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVjb3Zlcmlu
ZyA+IDApIHJlY292ZXJpbmctLTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW1ib2wgPSBwcmVFcnJvclN5bWJv
bDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlRXJyb3JTeW1ib2wgPSBudWxs
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBsZW4gPSB0aGlzLnByb2R1Y3Rpb25zX1thY3Rpb25bMV1dWzFdOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHl5dmFsLiQgPSB2c3RhY2tbdnN0YWNrLmxlbmd0
aCAtIGxlbl07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeXl2YWwuXyQgPSB7IGZpcnN0
X2xpbmU6IGxzdGFja1tsc3RhY2subGVuZ3RoIC0gKGxlbiB8fCAxKV0uZmlyc3RfbGluZSwgbGFz
dF9saW5lOiBsc3RhY2tbbHN0YWNrLmxlbmd0aCAtIDFdLmxhc3RfbGluZSwgZmlyc3RfY29sdW1u
OiBsc3RhY2tbbHN0YWNrLmxlbmd0aCAtIChsZW4gfHwgMSldLmZpcnN0X2NvbHVtbiwgbGFzdF9j
b2x1bW46IGxzdGFja1tsc3RhY2subGVuZ3RoIC0gMV0ubGFzdF9jb2x1bW4gfTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAocmFuZ2VzKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHl5dmFsLl8kLnJhbmdlID0gW2xzdGFja1tsc3RhY2subGVuZ3RoIC0gKGxlbiB8
fCAxKV0ucmFuZ2VbMF0sIGxzdGFja1tsc3RhY2subGVuZ3RoIC0gMV0ucmFuZ2VbMV1dOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ID0gdGhpcy5wZXJmb3JtQWN0aW9uLmNhbGwoeXl2YWwsIHl5dGV4dCwgeXlsZW5nLCB5eWxpbmVu
bywgdGhpcy55eSwgYWN0aW9uWzFdLCB2c3RhY2ssIGxzdGFjayk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKHR5cGVvZiByICE9PSAidW5kZWZpbmVkIikgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gcjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxlbikgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGFjayA9IHN0YWNrLnNsaWNlKDAsIC0xICogbGVuICogMik7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZzdGFjayA9IHZzdGFjay5zbGljZSgw
LCAtMSAqIGxlbik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxzdGFjayA9IGxz
dGFjay5zbGljZSgwLCAtMSAqIGxlbik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrLnB1c2godGhpcy5wcm9kdWN0aW9uc19b
YWN0aW9uWzFdXVswXSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnN0YWNrLnB1c2go
eXl2YWwuJCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHN0YWNrLnB1c2goeXl2YWwu
XyQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1N0YXRlID0gdGFibGVbc3RhY2tb
c3RhY2subGVuZ3RoIC0gMl1dW3N0YWNrW3N0YWNrLmxlbmd0aCAtIDFdXTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGFjay5wdXNoKG5ld1N0YXRlKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzoKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfTsKKyAgICAgICAgLyogSmlzb24gZ2VuZXJhdGVkIGxleGVyICov
CisgICAgICAgIHZhciBsZXhlciA9IChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB2YXIgbGV4
ZXIgPSB7IEVPRjogMSwKKyAgICAgICAgICAgICAgICBwYXJzZUVycm9yOiBmdW5jdGlvbiBwYXJz
ZUVycm9yKHN0ciwgaGFzaCkgeworICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy55eS5wYXJz
ZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMueXkucGFyc2VyLnBhcnNlRXJyb3Io
c3RyLCBoYXNoKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHRocm93IG5ldyBFcnJvcihzdHIpOworICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBzZXRJbnB1dDogZnVuY3Rpb24gc2V0
SW5wdXQoaW5wdXQpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5wdXQgPSBpbnB1dDsK
KyAgICAgICAgICAgICAgICAgICAgdGhpcy5fbW9yZSA9IHRoaXMuX2xlc3MgPSB0aGlzLmRvbmUg
PSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy55eWxpbmVubyA9IHRoaXMueXlsZW5n
ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy55eXRleHQgPSB0aGlzLm1hdGNoZWQgPSB0
aGlzLm1hdGNoID0gJyc7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uU3RhY2sg
PSBbJ0lOSVRJQUwnXTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy55eWxsb2MgPSB7IGZpcnN0
X2xpbmU6IDEsIGZpcnN0X2NvbHVtbjogMCwgbGFzdF9saW5lOiAxLCBsYXN0X2NvbHVtbjogMCB9
OworICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJhbmdlcykgdGhpcy55eWxs
b2MucmFuZ2UgPSBbMCwgMF07CisgICAgICAgICAgICAgICAgICAgIHRoaXMub2Zmc2V0ID0gMDsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgICAgICBpbnB1dDogZnVuY3Rpb24gaW5wdXQoKSB7CisgICAgICAgICAgICAgICAg
ICAgIHZhciBjaCA9IHRoaXMuX2lucHV0WzBdOworICAgICAgICAgICAgICAgICAgICB0aGlzLnl5
dGV4dCArPSBjaDsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy55eWxlbmcrKzsKKyAgICAgICAg
ICAgICAgICAgICAgdGhpcy5vZmZzZXQrKzsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXRj
aCArPSBjaDsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXRjaGVkICs9IGNoOworICAgICAg
ICAgICAgICAgICAgICB2YXIgbGluZXMgPSBjaC5tYXRjaCgvKD86XHJcbj98XG4pLiovZyk7Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChsaW5lcykgeworICAgICAgICAgICAgICAgICAgICAgICAg
dGhpcy55eWxpbmVubysrOworICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy55eWxsb2MubGFz
dF9saW5lKys7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICB0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbisrOworICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMucmFuZ2VzKSB0aGlzLnl5bGxv
Yy5yYW5nZVsxXSsrOworCisgICAgICAgICAgICAgICAgICAgIHRoaXMuX2lucHV0ID0gdGhpcy5f
aW5wdXQuc2xpY2UoMSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBjaDsKKyAgICAgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgICAgIHVucHV0OiBmdW5jdGlvbiB1bnB1dChjaCkgewor
ICAgICAgICAgICAgICAgICAgICB2YXIgbGVuID0gY2gubGVuZ3RoOworICAgICAgICAgICAgICAg
ICAgICB2YXIgbGluZXMgPSBjaC5zcGxpdCgvKD86XHJcbj98XG4pL2cpOworCisgICAgICAgICAg
ICAgICAgICAgIHRoaXMuX2lucHV0ID0gY2ggKyB0aGlzLl9pbnB1dDsKKyAgICAgICAgICAgICAg
ICAgICAgdGhpcy55eXRleHQgPSB0aGlzLnl5dGV4dC5zdWJzdHIoMCwgdGhpcy55eXRleHQubGVu
Z3RoIC0gbGVuIC0gMSk7CisgICAgICAgICAgICAgICAgICAgIC8vdGhpcy55eWxlbmcgLT0gbGVu
OworICAgICAgICAgICAgICAgICAgICB0aGlzLm9mZnNldCAtPSBsZW47CisgICAgICAgICAgICAg
ICAgICAgIHZhciBvbGRMaW5lcyA9IHRoaXMubWF0Y2guc3BsaXQoLyg/OlxyXG4/fFxuKS9nKTsK
KyAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXRjaCA9IHRoaXMubWF0Y2guc3Vic3RyKDAsIHRo
aXMubWF0Y2gubGVuZ3RoIC0gMSk7CisgICAgICAgICAgICAgICAgICAgIHRoaXMubWF0Y2hlZCA9
IHRoaXMubWF0Y2hlZC5zdWJzdHIoMCwgdGhpcy5tYXRjaGVkLmxlbmd0aCAtIDEpOworCisgICAg
ICAgICAgICAgICAgICAgIGlmIChsaW5lcy5sZW5ndGggLSAxKSB0aGlzLnl5bGluZW5vIC09IGxp
bmVzLmxlbmd0aCAtIDE7CisgICAgICAgICAgICAgICAgICAgIHZhciByID0gdGhpcy55eWxsb2Mu
cmFuZ2U7CisKKyAgICAgICAgICAgICAgICAgICAgdGhpcy55eWxsb2MgPSB7IGZpcnN0X2xpbmU6
IHRoaXMueXlsbG9jLmZpcnN0X2xpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICBsYXN0X2xp
bmU6IHRoaXMueXlsaW5lbm8gKyAxLAorICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RfY29s
dW1uOiB0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4sCisgICAgICAgICAgICAgICAgICAgICAgICBs
YXN0X2NvbHVtbjogbGluZXMgPyAobGluZXMubGVuZ3RoID09PSBvbGRMaW5lcy5sZW5ndGggPyB0
aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4gOiAwKSArIG9sZExpbmVzW29sZExpbmVzLmxlbmd0aCAt
IGxpbmVzLmxlbmd0aF0ubGVuZ3RoIC0gbGluZXNbMF0ubGVuZ3RoIDogdGhpcy55eWxsb2MuZmly
c3RfY29sdW1uIC0gbGVuCisgICAgICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKHRoaXMub3B0aW9ucy5yYW5nZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHRoaXMueXlsbG9jLnJhbmdlID0gW3JbMF0sIHJbMF0gKyB0aGlzLnl5bGVuZyAtIGxlbl07Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7Cisg
ICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBtb3JlOiBmdW5jdGlvbiBtb3JlKCkg
eworICAgICAgICAgICAgICAgICAgICB0aGlzLl9tb3JlID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBs
ZXNzOiBmdW5jdGlvbiBsZXNzKG4pIHsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy51bnB1dCh0
aGlzLm1hdGNoLnNsaWNlKG4pKTsKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAg
IHBhc3RJbnB1dDogZnVuY3Rpb24gcGFzdElucHV0KCkgeworICAgICAgICAgICAgICAgICAgICB2
YXIgcGFzdCA9IHRoaXMubWF0Y2hlZC5zdWJzdHIoMCwgdGhpcy5tYXRjaGVkLmxlbmd0aCAtIHRo
aXMubWF0Y2gubGVuZ3RoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChwYXN0Lmxlbmd0
aCA+IDIwID8gJy4uLicgOiAnJykgKyBwYXN0LnN1YnN0cigtMjApLnJlcGxhY2UoL1xuL2csICIi
KTsKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHVwY29taW5nSW5wdXQ6IGZ1
bmN0aW9uIHVwY29taW5nSW5wdXQoKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBuZXh0ID0g
dGhpcy5tYXRjaDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5leHQubGVuZ3RoIDwgMjApIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgKz0gdGhpcy5faW5wdXQuc3Vic3RyKDAsIDIw
IC0gbmV4dC5sZW5ndGgpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiAobmV4dC5zdWJzdHIoMCwgMjApICsgKG5leHQubGVuZ3RoID4gMjAgPyAnLi4u
JyA6ICcnKSkucmVwbGFjZSgvXG4vZywgIiIpOworICAgICAgICAgICAgICAgIH0sCisgICAgICAg
ICAgICAgICAgc2hvd1Bvc2l0aW9uOiBmdW5jdGlvbiBzaG93UG9zaXRpb24oKSB7CisgICAgICAg
ICAgICAgICAgICAgIHZhciBwcmUgPSB0aGlzLnBhc3RJbnB1dCgpOworICAgICAgICAgICAgICAg
ICAgICB2YXIgYyA9IG5ldyBBcnJheShwcmUubGVuZ3RoICsgMSkuam9pbigiLSIpOworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gcHJlICsgdGhpcy51cGNvbWluZ0lucHV0KCkgKyAiXG4iICsg
YyArICJeIjsKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIG5leHQ6IGZ1bmN0
aW9uIG5leHQoKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmRvbmUpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLkVPRjsKKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX2lucHV0KSB0aGlzLmRvbmUgPSB0cnVl
OworCisgICAgICAgICAgICAgICAgICAgIHZhciB0b2tlbiwgbWF0Y2gsIHRlbXBNYXRjaCwgaW5k
ZXgsIGNvbCwgbGluZXM7CisgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5fbW9yZSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy55eXRleHQgPSAnJzsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHRoaXMubWF0Y2ggPSAnJzsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICB2YXIgcnVsZXMgPSB0aGlzLl9jdXJyZW50UnVsZXMoKTsKKyAgICAgICAg
ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBydWxlcy5sZW5ndGg7IGkrKykgeworICAg
ICAgICAgICAgICAgICAgICAgICAgdGVtcE1hdGNoID0gdGhpcy5faW5wdXQubWF0Y2godGhpcy5y
dWxlc1tydWxlc1tpXV0pOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRlbXBNYXRjaCAm
JiAoIW1hdGNoIHx8IHRlbXBNYXRjaFswXS5sZW5ndGggPiBtYXRjaFswXS5sZW5ndGgpKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggPSB0ZW1wTWF0Y2g7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW5kZXggPSBpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmICghdGhpcy5vcHRpb25zLmZsZXgpIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChtYXRjaCkg
eworICAgICAgICAgICAgICAgICAgICAgICAgbGluZXMgPSBtYXRjaFswXS5tYXRjaCgvKD86XHJc
bj98XG4pLiovZyk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGluZXMpIHRoaXMueXls
aW5lbm8gKz0gbGluZXMubGVuZ3RoOworICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy55eWxs
b2MgPSB7IGZpcnN0X2xpbmU6IHRoaXMueXlsbG9jLmxhc3RfbGluZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBsYXN0X2xpbmU6IHRoaXMueXlsaW5lbm8gKyAxLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZpcnN0X2NvbHVtbjogdGhpcy55eWxsb2MubGFzdF9jb2x1bW4sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdF9jb2x1bW46IGxpbmVzID8gbGluZXNbbGlu
ZXMubGVuZ3RoIC0gMV0ubGVuZ3RoIC0gbGluZXNbbGluZXMubGVuZ3RoIC0gMV0ubWF0Y2goL1xy
P1xuPy8pWzBdLmxlbmd0aCA6IHRoaXMueXlsbG9jLmxhc3RfY29sdW1uICsgbWF0Y2hbMF0ubGVu
Z3RoIH07CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnl5dGV4dCArPSBtYXRjaFswXTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWF0Y2ggKz0gbWF0Y2hbMF07CisgICAgICAg
ICAgICAgICAgICAgICAgICB0aGlzLm1hdGNoZXMgPSBtYXRjaDsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHRoaXMueXlsZW5nID0gdGhpcy55eXRleHQubGVuZ3RoOworICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5yYW5nZXMpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0aGlzLnl5bGxvYy5yYW5nZSA9IFt0aGlzLm9mZnNldCwgdGhpcy5vZmZzZXQgKz0g
dGhpcy55eWxlbmddOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICAgICAgdGhpcy5fbW9yZSA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgdGhp
cy5faW5wdXQgPSB0aGlzLl9pbnB1dC5zbGljZShtYXRjaFswXS5sZW5ndGgpOworICAgICAgICAg
ICAgICAgICAgICAgICAgdGhpcy5tYXRjaGVkICs9IG1hdGNoWzBdOworICAgICAgICAgICAgICAg
ICAgICAgICAgdG9rZW4gPSB0aGlzLnBlcmZvcm1BY3Rpb24uY2FsbCh0aGlzLCB0aGlzLnl5LCB0
aGlzLCBydWxlc1tpbmRleF0sIHRoaXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25TdGFj
ay5sZW5ndGggLSAxXSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5kb25lICYm
IHRoaXMuX2lucHV0KSB0aGlzLmRvbmUgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGlmICh0b2tlbikgcmV0dXJuIHRva2VuO2Vsc2UgcmV0dXJuOworICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9pbnB1dCA9PT0gIiIpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLkVPRjsKKyAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcnNlRXJyb3Io
J0xleGljYWwgZXJyb3Igb24gbGluZSAnICsgKHRoaXMueXlsaW5lbm8gKyAxKSArICcuIFVucmVj
b2duaXplZCB0ZXh0LlxuJyArIHRoaXMuc2hvd1Bvc2l0aW9uKCksIHsgdGV4dDogIiIsIHRva2Vu
OiBudWxsLCBsaW5lOiB0aGlzLnl5bGluZW5vIH0pOworICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBsZXg6IGZ1bmN0aW9uIGxleCgpIHsK
KyAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0aGlzLm5leHQoKTsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKHR5cGVvZiByICE9PSAndW5kZWZpbmVkJykgeworICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHI7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdGhpcy5sZXgoKTsKKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgYmVnaW46IGZ1bmN0aW9uIGJlZ2lu
KGNvbmRpdGlvbikgeworICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbmRpdGlvblN0YWNrLnB1
c2goY29uZGl0aW9uKTsKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHBvcFN0
YXRlOiBmdW5jdGlvbiBwb3BTdGF0ZSgpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRo
aXMuY29uZGl0aW9uU3RhY2sucG9wKCk7CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
ICAgICBfY3VycmVudFJ1bGVzOiBmdW5jdGlvbiBfY3VycmVudFJ1bGVzKCkgeworICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdGhpcy5jb25kaXRpb25zW3RoaXMuY29uZGl0aW9uU3RhY2tbdGhp
cy5jb25kaXRpb25TdGFjay5sZW5ndGggLSAxXV0ucnVsZXM7CisgICAgICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgICAgICB0b3BTdGF0ZTogZnVuY3Rpb24gdG9wU3RhdGUoKSB7CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3Rh
Y2subGVuZ3RoIC0gMl07CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBwdXNo
U3RhdGU6IGZ1bmN0aW9uIGJlZ2luKGNvbmRpdGlvbikgeworICAgICAgICAgICAgICAgICAgICB0
aGlzLmJlZ2luKGNvbmRpdGlvbik7CisgICAgICAgICAgICAgICAgfSB9OworICAgICAgICAgICAg
bGV4ZXIub3B0aW9ucyA9IHt9OworICAgICAgICAgICAgbGV4ZXIucGVyZm9ybUFjdGlvbiA9IGZ1
bmN0aW9uIGFub255bW91cyh5eSwgeXlfLCAkYXZvaWRpbmdfbmFtZV9jb2xsaXNpb25zLCBZWV9T
VEFSVAorICAgICAgICAgICAgLyoqLykgeworCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gc3Ry
aXAoc3RhcnQsIGVuZCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4geXlfLnl5dGV4dCA9
IHl5Xy55eXRleHQuc3Vic3RyKHN0YXJ0LCB5eV8ueXlsZW5nIC0gZW5kKTsKKyAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICB2YXIgWVlTVEFURSA9IFlZX1NUQVJUOworICAgICAg
ICAgICAgICAgIHN3aXRjaCAoJGF2b2lkaW5nX25hbWVfY29sbGlzaW9ucykgeworICAgICAgICAg
ICAgICAgICAgICBjYXNlIDA6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoeXlfLnl5dGV4
dC5zbGljZSgtMikgPT09ICJcXFxcIikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
cmlwKDAsIDEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmVnaW4oIm11Iik7
CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHl5Xy55eXRleHQuc2xpY2UoLTEp
ID09PSAiXFwiKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaXAoMCwgMSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iZWdpbigiZW11Iik7CisgICAgICAgICAg
ICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMu
YmVnaW4oIm11Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoeXlfLnl5dGV4dCkgcmV0dXJuIDE1OworCisgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIDE1OworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucG9w
U3RhdGUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxNTsKKworICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMzoKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHRoaXMuYmVnaW4oJ3JhdycpO3JldHVybiAxNTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6CisgICAg
ICAgICAgICAgICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBTaG91bGQgYmUgdXNpbmcgYHRoaXMudG9wU3RhdGUoKWAgYmVsb3csIGJ1dCBpdCBj
dXJyZW50bHkKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJldHVybnMgdGhlIHNlY29uZCB0
b3AgaW5zdGVhZCBvZiB0aGUgZmlyc3QgdG9wLiBPcGVuZWQgYW4KKyAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIGlzc3VlIGFib3V0IGl0IGF0IGh0dHBzOi8vZ2l0aHViLmNvbS96YWFjaC9qaXNv
bi9pc3N1ZXMvMjkxCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jb25kaXRpb25T
dGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCAtIDFdID09PSAncmF3JykgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxNTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeXlfLnl5dGV4dCA9IHl5Xy55
eXRleHQuc3Vic3RyKDUsIHl5Xy55eWxlbmcgLSA5KTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gJ0VORF9SQVdfQkxPQ0snOworICAgICAgICAgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2Fz
ZSA1OgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE1OworICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNjoKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiAxNDsKKworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICAgIGNhc2UgNzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA2NTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDg6Cisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gNjg7CisgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA5OgorICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIDE5OworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgICAgIGNhc2UgMTA6CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBvcFN0
YXRlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJlZ2luKCdyYXcnKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiAyMzsKKworICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMTE6CisgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gNTU7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICAgICAgY2FzZSAxMjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA2MDsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNl
IDEzOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDI5OworICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMTQ6CisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gNDc7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICAgICAgY2FzZSAxNToKKyAgICAgICAgICAgICAgICAgICAgICAgIHRo
aXMucG9wU3RhdGUoKTtyZXR1cm4gNDQ7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICAgICAgY2FzZSAxNjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHRo
aXMucG9wU3RhdGUoKTtyZXR1cm4gNDQ7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICAgICAgY2FzZSAxNzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiAzNDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgICBjYXNlIDE4OgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDM5OworICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMTk6Cisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gNTE7CisgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAyMDoKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiA0ODsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgICAgICBjYXNlIDIxOgorICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51bnB1
dCh5eV8ueXl0ZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmVnaW4oJ2NvbScpOworCisgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAyMjoKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiAxNDsKKworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgICAgIGNhc2UgMjM6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gNDg7
CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2Fz
ZSAyNDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA3MzsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDI1OgorICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIDcyOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMjY6CisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gNzI7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICAgICAgY2FzZSAyNzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA4NzsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDI4Ogor
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWdub3JlIHdoaXRlc3BhY2UKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDI5OgorICAgICAg
ICAgICAgICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO3JldHVybiA1NDsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDMwOgorICAgICAg
ICAgICAgICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO3JldHVybiAzMzsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDMxOgorICAgICAg
ICAgICAgICAgICAgICAgICAgeXlfLnl5dGV4dCA9IHN0cmlwKDEsIDIpLnJlcGxhY2UoL1xcIi9n
LCAnIicpO3JldHVybiA4MDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgICAgICBjYXNlIDMyOgorICAgICAgICAgICAgICAgICAgICAgICAgeXlfLnl5dGV4
dCA9IHN0cmlwKDEsIDIpLnJlcGxhY2UoL1xcJy9nLCAiJyIpO3JldHVybiA4MDsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDMzOgorICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDg1OworICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMzQ6CisgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gODI7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICAgICAgY2FzZSAzNToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA4MjsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNl
IDM2OgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDgzOworICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMzc6CisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gODQ7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICAgICAgY2FzZSAzODoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiA4MTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgICBjYXNlIDM5OgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDc1OworICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNDA6Cisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gNzc7CisgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA0MToKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiA3MjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgICAgICBjYXNlIDQyOgorICAgICAgICAgICAgICAgICAgICAgICAgeXlfLnl5dGV4
dCA9IHl5Xy55eXRleHQucmVwbGFjZSgvXFwoW1xcXF1dKS9nLCAnJDEnKTtyZXR1cm4gNzI7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA0
MzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnSU5WQUxJRCc7CisgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA0NDoKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiA1OworICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIGxleGVy
LnJ1bGVzID0gWy9eKD86W15ceDAwXSo/KD89KFx7XHspKSkvLCAvXig/OlteXHgwMF0rKS8sIC9e
KD86W15ceDAwXXsyLH0/KD89KFx7XHt8XFxce1x7fFxcXFxce1x7fCQpKSkvLCAvXig/Olx7XHtc
e1x7KD89W15cL10pKS8sIC9eKD86XHtce1x7XHtcL1teXHMhIiMlLSxcLlwvOy0+QFxbLVxeYFx7
LX5dKyg/PVs9fVxzXC8uXSlcfVx9XH1cfSkvLCAvXig/OlteXHgwMF0qPyg/PShce1x7XHtceykp
KS8sIC9eKD86W1xzXFNdKj8tLSh+KT9cfVx9KS8sIC9eKD86XCgpLywgL14oPzpcKSkvLCAvXig/
Olx7XHtce1x7KS8sIC9eKD86XH1cfVx9XH0pLywgL14oPzpce1x7KH4pPz4pLywgL14oPzpce1x7
KH4pPyM+KS8sIC9eKD86XHtceyh+KT8jXCo/KS8sIC9eKD86XHtceyh+KT9cLykvLCAvXig/Olx7
XHsofik/XF5ccyoofik/XH1cfSkvLCAvXig/Olx7XHsofik/XHMqZWxzZVxzKih+KT9cfVx9KS8s
IC9eKD86XHtceyh+KT9cXikvLCAvXig/Olx7XHsofik/XHMqZWxzZVxiKS8sIC9eKD86XHtceyh+
KT9ceykvLCAvXig/Olx7XHsofik/JikvLCAvXig/Olx7XHsofik/IS0tKS8sIC9eKD86XHtceyh+
KT8hW1xzXFNdKj9cfVx9KS8sIC9eKD86XHtceyh+KT9cKj8pLywgL14oPzo9KS8sIC9eKD86XC5c
LikvLCAvXig/OlwuKD89KFs9fn1cc1wvLil8XSkpKS8sIC9eKD86W1wvLl0pLywgL14oPzpccysp
LywgL14oPzpcfSh+KT9cfVx9KS8sIC9eKD86KH4pP1x9XH0pLywgL14oPzoiKFxcWyJdfFteIl0p
KiIpLywgL14oPzonKFxcWyddfFteJ10pKicpLywgL14oPzpAKS8sIC9eKD86dHJ1ZSg/PShbfn1c
cyldKSkpLywgL14oPzpmYWxzZSg/PShbfn1ccyldKSkpLywgL14oPzp1bmRlZmluZWQoPz0oW359
XHMpXSkpKS8sIC9eKD86bnVsbCg/PShbfn1ccyldKSkpLywgL14oPzotP1swLTldKyg/OlwuWzAt
OV0rKT8oPz0oW359XHMpXSkpKS8sIC9eKD86YXNccytcfCkvLCAvXig/Olx8KS8sIC9eKD86KFte
XHMhIiMlLSxcLlwvOy0+QFxbLVxeYFx7LX5dKyg/PShbPX59XHNcLy4pfF0pKSkpLywgL14oPzpc
WyhcXFxdfFteXF1dKSpcXSkvLCAvXig/Oi4pLywgL14oPzokKS9dOworICAgICAgICAgICAgbGV4
ZXIuY29uZGl0aW9ucyA9IHsgIm11IjogeyAicnVsZXMiOiBbNywgOCwgOSwgMTAsIDExLCAxMiwg
MTMsIDE0LCAxNSwgMTYsIDE3LCAxOCwgMTksIDIwLCAyMSwgMjIsIDIzLCAyNCwgMjUsIDI2LCAy
NywgMjgsIDI5LCAzMCwgMzEsIDMyLCAzMywgMzQsIDM1LCAzNiwgMzcsIDM4LCAzOSwgNDAsIDQx
LCA0MiwgNDMsIDQ0XSwgImluY2x1c2l2ZSI6IGZhbHNlIH0sICJlbXUiOiB7ICJydWxlcyI6IFsy
XSwgImluY2x1c2l2ZSI6IGZhbHNlIH0sICJjb20iOiB7ICJydWxlcyI6IFs2XSwgImluY2x1c2l2
ZSI6IGZhbHNlIH0sICJyYXciOiB7ICJydWxlcyI6IFszLCA0LCA1XSwgImluY2x1c2l2ZSI6IGZh
bHNlIH0sICJJTklUSUFMIjogeyAicnVsZXMiOiBbMCwgMSwgNDRdLCAiaW5jbHVzaXZlIjogdHJ1
ZSB9IH07CisgICAgICAgICAgICByZXR1cm4gbGV4ZXI7CisgICAgICAgIH0pKCk7CisgICAgICAg
IHBhcnNlci5sZXhlciA9IGxleGVyOworICAgICAgICBmdW5jdGlvbiBQYXJzZXIoKSB7CisgICAg
ICAgICAgICB0aGlzLnl5ID0ge307CisgICAgICAgIH1QYXJzZXIucHJvdG90eXBlID0gcGFyc2Vy
O3BhcnNlci5QYXJzZXIgPSBQYXJzZXI7CisgICAgICAgIHJldHVybiBuZXcgUGFyc2VyKCk7Cisg
ICAgfSkoKTtleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOworICAgIGV4cG9ydHNbJ2RlZmF1bHQn
XSA9IGhhbmRsZWJhcnM7Cit9KTsKKy8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRp
b24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUx5
NHVMeTR1TDJ4cFlpOW9ZVzVrYkdWaVlYSnpMMk52YlhCcGJHVnlMM0JoY25ObGNpNXFjeUpkTENK
dVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPenM3T3p0QlFVVkJMRkZCUVVrc1ZVRkJWU3hI
UVVGSExFTkJRVU1zV1VGQlZUdEJRVU0xUWl4WlFVRkpMRTFCUVUwc1IwRkJSeXhGUVVGRExFdEJR
VXNzUlVGQlJTeFRRVUZUTEV0QlFVc3NSMEZCUnl4RlFVRkhPMEZCUTNwRExHTkJRVVVzUlVGQlJT
eEZRVUZGTzBGQlEwNHNiMEpCUVZFc1JVRkJSU3hGUVVGRExFOUJRVThzUlVGQlF5eERRVUZETEVW
QlFVTXNUVUZCVFN4RlFVRkRMRU5CUVVNc1JVRkJReXhUUVVGVExFVkJRVU1zUTBGQlF5eEZRVUZE
TEV0QlFVc3NSVUZCUXl4RFFVRkRMRVZCUVVNc2NVSkJRWEZDTEVWQlFVTXNRMEZCUXl4RlFVRkRM
RmRCUVZjc1JVRkJReXhEUVVGRExFVkJRVU1zVlVGQlZTeEZRVUZETEVOQlFVTXNSVUZCUXl4UFFV
RlBMRVZCUVVNc1EwRkJReXhGUVVGRExGVkJRVlVzUlVGQlF5eEZRVUZGTEVWQlFVTXNVMEZCVXl4
RlFVRkRMRVZCUVVVc1JVRkJReXhqUVVGakxFVkJRVU1zUlVGQlJTeEZRVUZETEZOQlFWTXNSVUZC
UXl4RlFVRkZMRVZCUVVNc1UwRkJVeXhGUVVGRExFVkJRVVVzUlVGQlF5eFRRVUZUTEVWQlFVTXNS
VUZCUlN4RlFVRkRMR05CUVdNc1JVRkJReXhGUVVGRkxFVkJRVU1zTWtKQlFUSkNMRVZCUVVNc1JV
RkJSU3hGUVVGRExHVkJRV1VzUlVGQlF5eEZRVUZGTEVWQlFVTXNaMEpCUVdkQ0xFVkJRVU1zUlVG
QlJTeEZRVUZETEZsQlFWa3NSVUZCUXl4RlFVRkZMRVZCUVVNc01FSkJRVEJDTEVWQlFVTXNSVUZC
UlN4RlFVRkRMSE5DUVVGelFpeEZRVUZETEVWQlFVVXNSVUZCUXl4cFFrRkJhVUlzUlVGQlF5eEZR
VUZGTEVWQlFVTXNWMEZCVnl4RlFVRkRMRVZCUVVVc1JVRkJReXhsUVVGbExFVkJRVU1zUlVGQlJT
eEZRVUZETEZsQlFWa3NSVUZCUXl4RlFVRkZMRVZCUVVNc1lVRkJZU3hGUVVGRExFVkJRVVVzUlVG
QlF5eGxRVUZsTEVWQlFVTXNSVUZCUlN4RlFVRkRMRmxCUVZrc1JVRkJReXhGUVVGRkxFVkJRVU1z
ZFVKQlFYVkNMRVZCUVVNc1JVRkJSU3hGUVVGRExHMUNRVUZ0UWl4RlFVRkRMRVZCUVVVc1JVRkJR
eXh0UWtGQmJVSXNSVUZCUXl4RlFVRkZMRVZCUVVNc1QwRkJUeXhGUVVGRExFVkJRVVVzUlVGQlF5
eGpRVUZqTEVWQlFVTXNSVUZCUlN4RlFVRkRMSGxDUVVGNVFpeEZRVUZETEVWQlFVVXNSVUZCUXl4
eFFrRkJjVUlzUlVGQlF5eEZRVUZGTEVWQlFVTXNjVUpCUVhGQ0xFVkJRVU1zUlVGQlJTeEZRVUZE
TEd0Q1FVRnJRaXhGUVVGRExFVkJRVVVzUlVGQlF5eHZRa0ZCYjBJc1JVRkJReXhGUVVGRkxFVkJR
VU1zT0VKQlFUaENMRVZCUVVNc1JVRkJSU3hGUVVGRExEQkNRVUV3UWl4RlFVRkRMRVZCUVVVc1JV
RkJReXd3UWtGQk1FSXNSVUZCUXl4RlFVRkZMRVZCUVVNc2JVSkJRVzFDTEVWQlFVTXNSVUZCUlN4
RlFVRkRMRk5CUVZNc1JVRkJReXhGUVVGRkxFVkJRVU1zWTBGQll5eEZRVUZETEVWQlFVVXNSVUZC
UXl4elFrRkJjMElzUlVGQlF5eEZRVUZGTEVWQlFVTXNaVUZCWlN4RlFVRkRMRVZCUVVVc1JVRkJR
eXhOUVVGTkxFVkJRVU1zUlVGQlJTeEZRVUZETEhOQ1FVRnpRaXhGUVVGRExFVkJRVVVzUlVGQlF5
eHJRa0ZCYTBJc1JVRkJReXhGUVVGRkxFVkJRVU1zWjBKQlFXZENMRVZCUVVNc1JVRkJSU3hGUVVG
RExITkNRVUZ6UWl4RlFVRkRMRVZCUVVVc1JVRkJReXhyUWtGQmEwSXNSVUZCUXl4RlFVRkZMRVZC
UVVNc2FVSkJRV2xDTEVWQlFVTXNSVUZCUlN4RlFVRkRMR05CUVdNc1JVRkJReXhGUVVGRkxFVkJR
VU1zWVVGQllTeEZRVUZETEVWQlFVVXNSVUZCUXl4eFFrRkJjVUlzUlVGQlF5eEZRVUZGTEVWQlFV
TXNhVUpCUVdsQ0xFVkJRVU1zUlVGQlJTeEZRVUZETEd0Q1FVRnJRaXhGUVVGRExFVkJRVVVzUlVG
QlF5eHZRa0ZCYjBJc1JVRkJReXhGUVVGRkxFVkJRVU1zT0VKQlFUaENMRVZCUVVNc1JVRkJSU3hG
UVVGRExEQkNRVUV3UWl4RlFVRkRMRVZCUVVVc1JVRkJReXhQUVVGUExFVkJRVU1zUlVGQlJTeEZR
VUZETEU5QlFVOHNSVUZCUXl4RlFVRkZMRVZCUVVNc1dVRkJXU3hGUVVGRExFVkJRVVVzUlVGQlF5
eHRRa0ZCYlVJc1JVRkJReXhGUVVGRkxFVkJRVU1zWlVGQlpTeEZRVUZETEVWQlFVVXNSVUZCUXl4
aFFVRmhMRVZCUVVNc1JVRkJSU3hGUVVGRExFMUJRVTBzUlVGQlF5eEZRVUZGTEVWQlFVTXNkVUpC
UVhWQ0xFVkJRVU1zUlVGQlJTeEZRVUZETEdGQlFXRXNSVUZCUXl4RlFVRkZMRVZCUVVNc1NVRkJT
U3hGUVVGRExFVkJRVVVzUlVGQlF5eFJRVUZSTEVWQlFVTXNSVUZCUlN4RlFVRkRMR0ZCUVdFc1JV
RkJReXhGUVVGRkxFVkJRVU1zYlVKQlFXMUNMRVZCUVVNc1JVRkJSU3hGUVVGRExEaENRVUU0UWl4
RlFVRkRMRVZCUVVVc1JVRkJReXh2UWtGQmIwSXNSVUZCUXl4RlFVRkZMRVZCUVVNc1RVRkJUU3hG
UVVGRExFVkJRVVVzUlVGQlF5eFZRVUZWTEVWQlFVTXNSVUZCUlN4RlFVRkRMRkZCUVZFc1JVRkJR
eXhGUVVGRkxFVkJRVU1zVVVGQlVTeEZRVUZETEVWQlFVVXNSVUZCUXl4VFFVRlRMRVZCUVVNc1JV
RkJSU3hGUVVGRExGZEJRVmNzUlVGQlF5eEZRVUZGTEVWQlFVTXNUVUZCVFN4RlFVRkRMRVZCUVVV
c1JVRkJReXhOUVVGTkxFVkJRVU1zUlVGQlJTeEZRVUZETEdOQlFXTXNSVUZCUXl4RlFVRkZMRVZC
UVVNc1MwRkJTeXhGUVVGRExFVkJRVVVzUlVGQlF5eFRRVUZUTEVWQlFVTXNRMEZCUXl4RlFVRkRM
RTFCUVUwc1JVRkJReXhEUVVGRExFVkJRVU03UVVGRGFtNUVMSE5DUVVGVkxFVkJRVVVzUlVGQlF5
eERRVUZETEVWQlFVTXNUMEZCVHl4RlFVRkRMRU5CUVVNc1JVRkJReXhMUVVGTExFVkJRVU1zUlVG
QlJTeEZRVUZETEZOQlFWTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1UwRkJVeXhGUVVGRExFVkJRVVVz
UlVGQlF5eGxRVUZsTEVWQlFVTXNSVUZCUlN4RlFVRkRMR2RDUVVGblFpeEZRVUZETEVWQlFVVXNS
VUZCUXl4cFFrRkJhVUlzUlVGQlF5eEZRVUZGTEVWQlFVTXNXVUZCV1N4RlFVRkRMRVZCUVVVc1JV
RkJReXhQUVVGUExFVkJRVU1zUlVGQlJTeEZRVUZETEdOQlFXTXNSVUZCUXl4RlFVRkZMRVZCUVVN
c2IwSkJRVzlDTEVWQlFVTXNSVUZCUlN4RlFVRkRMRk5CUVZNc1JVRkJReXhGUVVGRkxFVkJRVU1z
WlVGQlpTeEZRVUZETEVWQlFVVXNSVUZCUXl4TlFVRk5MRVZCUVVNc1JVRkJSU3hGUVVGRExHZENR
VUZuUWl4RlFVRkRMRVZCUVVVc1JVRkJReXhwUWtGQmFVSXNSVUZCUXl4RlFVRkZMRVZCUVVNc1kw
RkJZeXhGUVVGRExFVkJRVVVzUlVGQlF5eHZRa0ZCYjBJc1JVRkJReXhGUVVGRkxFVkJRVU1zV1VG
QldTeEZRVUZETEVWQlFVVXNSVUZCUXl4aFFVRmhMRVZCUVVNc1JVRkJSU3hGUVVGRExFbEJRVWtz
UlVGQlF5eEZRVUZGTEVWQlFVTXNVVUZCVVN4RlFVRkRMRVZCUVVVc1JVRkJReXh0UWtGQmJVSXNS
VUZCUXl4RlFVRkZMRVZCUVVNc2IwSkJRVzlDTEVWQlFVTXNSVUZCUlN4RlFVRkRMRkZCUVZFc1JV
RkJReXhGUVVGRkxFVkJRVU1zVVVGQlVTeEZRVUZETEVWQlFVVXNSVUZCUXl4VFFVRlRMRVZCUVVN
c1JVRkJSU3hGUVVGRExGZEJRVmNzUlVGQlF5eEZRVUZGTEVWQlFVTXNUVUZCVFN4RlFVRkRMRVZC
UVVVc1JVRkJReXhOUVVGTkxFVkJRVU1zUlVGQlJTeEZRVUZETEV0QlFVc3NSVUZCUXp0QlFVTTFa
U3gzUWtGQldTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExF
TkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVG
RExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhG
UVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJR
eXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1Ew
RkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVN
c1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5C
UVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRM
RU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFV
RkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4
RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZC
UXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNS
VUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFV
TXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVO
QlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZE
TEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZR
VUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJT
eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBG
QlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1z
UlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJR
VU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExF
TkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVG
RExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhG
UVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJS
U3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1Ew
RkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVN
c1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5C
UVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRM
RU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFV
RkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4
RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZC
UlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNR
MEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFV
TXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVO
QlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZE
TEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZR
VUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5
eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVG
QlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1z
UTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJR
VU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExF
TkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVG
RExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hG
UVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJR
eXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JV
RkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVN
c1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5C
UVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRM
RU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFV
RkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4
RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZC
UXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNS
VUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFV
TXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVO
QlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZE
TEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZR
VUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJT
eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBG
QlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1z
UlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJR
VU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExF
TkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVG
RExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhG
UVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJS
U3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1Ew
RkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVN
c1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5C
UVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRM
RU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFV
RkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4
RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZC
UlN4RlFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJRM0p6UWl4NVFrRkJZU3hGUVVGRkxGTkJR
Vk1zVTBGQlV5eERRVUZETEUxQlFVMHNSVUZCUXl4TlFVRk5MRVZCUVVNc1VVRkJVU3hGUVVGRExF
VkJRVVVzUlVGQlF5eFBRVUZQTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVN2EwSkJRMjVGT3p0
QlFVVk9MRzlDUVVGSkxFVkJRVVVzUjBGQlJ5eEZRVUZGTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5C
UVVNc1EwRkJRenRCUVVOMlFpeDNRa0ZCVVN4UFFVRlBPMEZCUTJZc2VVSkJRVXNzUTBGQlF6dEJR
VUZGTEN0Q1FVRlBMRVZCUVVVc1EwRkJReXhGUVVGRkxFZEJRVU1zUTBGQlF5eERRVUZETEVOQlFV
TTdRVUZEZUVJc09FSkJRVTA3UVVGQlFTeEJRVU5PTEhsQ1FVRkxMRU5CUVVNN1FVRkJReXcwUWtG
QlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1kwRkJZeXhEUVVGRExFVkJRVVVz
UTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUXpGRExEaENRVUZOTzBGQlFVRXNR
VUZEVGl4NVFrRkJTeXhEUVVGRE8wRkJRVU1zTkVKQlFVa3NRMEZCUXl4RFFVRkRMRWRCUVVjc1JV
RkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETzBGQlEzWkNMRGhDUVVGTk8wRkJRVUVzUVVG
RFRpeDVRa0ZCU3l4RFFVRkRPMEZCUVVNc05FSkJRVWtzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZC
UlN4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRE8wRkJRM1pDTERoQ1FVRk5PMEZCUVVFc1FVRkRU
aXg1UWtGQlN5eERRVUZETzBGQlFVTXNORUpCUVVrc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJT
eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRPMEZCUTNaQ0xEaENRVUZOTzBGQlFVRXNRVUZEVGl4
NVFrRkJTeXhEUVVGRE8wRkJRVU1zTkVKQlFVa3NRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hE
UVVGRExFVkJRVVVzUTBGQlF5eERRVUZETzBGQlEzWkNMRGhDUVVGTk8wRkJRVUVzUVVGRFRpeDVR
a0ZCU3l4RFFVRkRPMEZCUVVNc05FSkJRVWtzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4RFFV
RkRMRVZCUVVVc1EwRkJReXhEUVVGRE8wRkJRM1pDTERoQ1FVRk5PMEZCUVVFc1FVRkRUaXg1UWtG
QlN5eERRVUZETzBGQlFVTXNORUpCUVVrc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZE
TEVWQlFVVXNRMEZCUXl4RFFVRkRPMEZCUTNaQ0xEaENRVUZOTzBGQlFVRXNRVUZEVGl4NVFrRkJT
eXhEUVVGRE8wRkJRMFlzTkVKQlFVa3NRMEZCUXl4RFFVRkRMRWRCUVVjN1FVRkRVQ3huUTBGQlNT
eEZRVUZGTEd0Q1FVRnJRanRCUVVONFFpeHBRMEZCU3l4RlFVRkZMRVZCUVVVc1EwRkJReXhaUVVG
WkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRPMEZCUXpsQ0xHbERRVUZM
TEVWQlFVVXNSVUZCUlN4RFFVRkRMRlZCUVZVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERR
VUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRE8wRkJRM0JETEN0Q1FV
RkhMRVZCUVVVc1JVRkJSU3hEUVVGRExFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlN4
RFFVRkRPM2xDUVVONlFpeERRVUZET3p0QlFVVk9MRGhDUVVGTk8wRkJRVUVzUVVGRFRpeDVRa0ZC
U3l4RlFVRkZPMEZCUTBnc05FSkJRVWtzUTBGQlF5eERRVUZETEVkQlFVYzdRVUZEVUN4blEwRkJT
U3hGUVVGRkxHdENRVUZyUWp0QlFVTjRRaXh2UTBGQlVTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFV
RkZMRU5CUVVNN1FVRkRhRUlzYVVOQlFVc3NSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVG
RE8wRkJRMklzSzBKQlFVY3NSVUZCUlN4RlFVRkZMRU5CUVVNc1QwRkJUeXhEUVVGRExFbEJRVWtz
UTBGQlF5eEZRVUZGTEVOQlFVTTdlVUpCUTNwQ0xFTkJRVU03TzBGQlJVNHNPRUpCUVUwN1FVRkJR
U3hCUVVOT0xIbENRVUZMTEVWQlFVVTdRVUZCUXl3MFFrRkJTU3hEUVVGRExFTkJRVU1zUjBGQlJ5
eEZRVUZGTEVOQlFVTXNaVUZCWlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFZEJRVU1zUTBG
QlF5eERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVc1IwRkJReXhEUVVGRExFTkJRVU1z
UlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFVkJR
VVVzUTBGQlF5eERRVUZETzBGQlEzcEZMRGhDUVVGTk8wRkJRVUVzUVVGRFRpeDVRa0ZCU3l4RlFV
RkZPMEZCUVVNc05FSkJRVWtzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4SlFVRkpMRVZCUVVV
c1JVRkJSU3hEUVVGRExFVkJRVVVzUjBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4TlFVRk5MRVZC
UVVVc1JVRkJSU3hEUVVGRExFVkJRVVVzUjBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpM
RVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVVzUjBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFV
RkRPMEZCUTNSRkxEaENRVUZOTzBGQlFVRXNRVUZEVGl4NVFrRkJTeXhGUVVGRk8wRkJRVU1zTkVK
QlFVa3NRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRExGbEJRVmtzUTBGQlF5eEZRVUZG
TEVOQlFVTXNSVUZCUlN4SFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eEZR
VUZGTEVkQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVVzUjBGQlF5
eERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUzBG
QlN5eEZRVUZGTEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJRenRCUVVOMlJpdzRRa0ZC
VFR0QlFVRkJMRUZCUTA0c2VVSkJRVXNzUlVGQlJUdEJRVUZETERSQ1FVRkpMRU5CUVVNc1EwRkJR
eXhIUVVGSExFVkJRVVVzUTBGQlF5eFpRVUZaTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1Iw
RkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlN4SFFVRkRMRU5CUVVN
c1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVkQlFVTXNRMEZCUXl4RFFVRkRMRVZC
UVVVc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVsQlFVa3NSVUZCUlN4SlFVRkpM
RU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU03UVVGRGRFWXNPRUpCUVUwN1FVRkJRU3hCUVVOT0xI
bENRVUZMTEVWQlFVVTdRVUZCUXl3MFFrRkJTU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVs
QlFVa3NSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSU3hIUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZG
TEVsQlFVa3NSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSU3hIUVVGRExFTkJRVU1zUTBGQlF5eEZR
VUZGTEUxQlFVMHNSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSU3hIUVVGRExFTkJRVU1zUTBGQlF5
eEZRVUZGTEVsQlFVa3NSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSU3hIUVVGRExFTkJRVU1zUTBG
QlF5eEZRVUZGTEZkQlFWY3NSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSU3hIUVVGRExFTkJRVU1z
UTBGQlF5eEZRVUZGTEV0QlFVc3NSVUZCUlN4RlFVRkZMRU5CUVVNc1ZVRkJWU3hEUVVGRExFVkJR
VVVzUTBGQlF5eEZRVUZGTEVkQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExF
VkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXp0QlFVTnlTaXc0UWtGQlRUdEJRVUZCTEVG
QlEwNHNlVUpCUVVzc1JVRkJSVHRCUVVGRExEUkNRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZC
UVVVc1NVRkJTU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVkQlFVTXNRMEZCUXl4RFFVRkRM
RVZCUVVVc1RVRkJUU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVkQlFVTXNRMEZCUXl4RFFV
RkRMRVZCUVVVc1NVRkJTU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVkQlFVTXNRMEZCUXl4
RFFVRkRMRVZCUVVVc1YwRkJWeXhGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVkQlFVTXNRMEZC
UXl4RFFVRkRMRVZCUVVVc1MwRkJTeXhGUVVGRkxFVkJRVVVzUTBGQlF5eFZRVUZWTEVOQlFVTXNS
VUZCUlN4RFFVRkRMRVZCUVVVc1IwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFV
TXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRE8wRkJRM0pKTERoQ1FVRk5PMEZCUVVF
c1FVRkRUaXg1UWtGQlN5eEZRVUZGTzBGQlFVTXNORUpCUVVrc1EwRkJReXhEUVVGRExFZEJRVWNz
UlVGQlJTeEpRVUZKTEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVc1IwRkJReXhEUVVGRExFTkJR
VU1zUlVGQlJTeE5RVUZOTEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVc1IwRkJReXhEUVVGRExF
TkJRVU1zUlVGQlJTeEpRVUZKTEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVc1IwRkJReXhEUVVG
RExFTkJRVU1zUlVGQlJTeFhRVUZYTEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVc1IwRkJReXhE
UVVGRExFTkJRVU1zUlVGQlJTeExRVUZMTEVWQlFVVXNSVUZCUlN4RFFVRkRMRlZCUVZVc1EwRkJR
eXhGUVVGRkxFTkJRVU1zUlVGQlJTeEhRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1Ew
RkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTTdRVUZEY2trc09FSkJRVTA3UVVG
QlFTeEJRVU5PTEhsQ1FVRkxMRVZCUVVVN1FVRkJReXcwUWtGQlNTeERRVUZETEVOQlFVTXNSMEZC
Unl4RlFVRkZMRXRCUVVzc1JVRkJSU3hGUVVGRkxFTkJRVU1zVlVGQlZTeERRVUZETEVWQlFVVXNR
MEZCUXl4RlFVRkZMRWRCUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFV
VXNSMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFOUJRVThzUlVGQlJTeEZRVUZGTEVO
QlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJRenRCUVVNdlJTdzRRa0ZCVFR0QlFVRkJMRUZC
UTA0c2VVSkJRVXNzUlVGQlJUdEJRVU5JTERSQ1FVRkpMRTlCUVU4c1IwRkJSeXhGUVVGRkxFTkJR
VU1zV1VGQldTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRWRCUVVNc1EwRkJReXhEUVVGRExF
VkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVXNSMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVG
RkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhG
UVVGRkxFdEJRVXNzUlVGQlJTeEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRPelJDUVVNM1JTeFBR
VUZQTEVkQlFVY3NSVUZCUlN4RFFVRkRMR05CUVdNc1EwRkJReXhEUVVGRExFOUJRVThzUTBGQlF5
eEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZMRWRCUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBG
QlJ5eERRVUZETEVOQlFVTTdRVUZEZWtRc0swSkJRVThzUTBGQlF5eFBRVUZQTEVkQlFVY3NTVUZC
U1N4RFFVRkRPenRCUVVWMlFpdzBRa0ZCU1N4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFdEJR
VXNzUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlN4SFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExF
dEJRVXNzUlVGQlJTeFBRVUZQTEVWQlFVVXNUMEZCVHl4RlFVRkZMRXRCUVVzc1JVRkJSU3hKUVVG
SkxFVkJRVVVzUTBGQlF6czdRVUZGZEVVc09FSkJRVTA3UVVGQlFTeEJRVU5PTEhsQ1FVRkxMRVZC
UVVVN1FVRkJReXcwUWtGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1JVRkJS
U3hEUVVGRExFTkJRVU03UVVGRGVFSXNPRUpCUVUwN1FVRkJRU3hCUVVOT0xIbENRVUZMTEVWQlFV
VTdRVUZCUXl3MFFrRkJTU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZETEVsQlFVa3NSVUZCUlN4
RlFVRkZMRU5CUVVNc1JVRkJSU3hIUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEV0QlFVc3NSVUZC
UlN4RlFVRkZMRU5CUVVNc1ZVRkJWU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVkQlFVTXNR
MEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFV
TXNRMEZCUXp0QlFVTXhSU3c0UWtGQlRUdEJRVUZCTEVGQlEwNHNlVUpCUVVzc1JVRkJSVHRCUVVG
RExEUkNRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhsUVVGbExFTkJRVU1z
UlVGQlJTeERRVUZETEVWQlFVVXNSMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJR
VU1zUlVGQlJTeEhRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRkxF
ZEJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVc1IwRkJReXhEUVVG
RExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNWVUZCVlN4RFFVRkRMRVZCUVVVc1EwRkJReXhG
UVVGRkxFZEJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJR
eXhEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRPMEZCUTNSSUxE
aENRVUZOTzBGQlFVRXNRVUZEVGl4NVFrRkJTeXhGUVVGRk8wRkJRVU1zTkVKQlFVa3NRMEZCUXl4
RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRExHVkJRV1VzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZC
UlN4SFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVkQlFVTXNR
MEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVVzUjBGQlF5eERRVUZETEVOQlFV
TXNSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSU3hIUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVW
QlFVVXNRMEZCUXl4VlFVRlZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUjBGQlF5eERRVUZE
TEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeEpR
VUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNN1FVRkRkRWdzT0VKQlFVMDdRVUZCUVN4QlFV
Tk9MSGxDUVVGTExFVkJRVVU3UVVGRFNDdzBRa0ZCU1N4RFFVRkRMRU5CUVVNc1IwRkJSenRCUVVO
UUxHZERRVUZKTEVWQlFVVXNhMEpCUVd0Q08wRkJRM2hDTEdkRFFVRkpMRVZCUVVVc1JVRkJSU3hE
UVVGRExFVkJRVVVzUjBGQlF5eERRVUZETEVOQlFVTTdRVUZEWkN4clEwRkJUU3hGUVVGRkxFVkJR
VVVzUTBGQlF5eEZRVUZGTEVkQlFVTXNRMEZCUXl4RFFVRkRPMEZCUTJoQ0xHZERRVUZKTEVWQlFV
VXNSVUZCUlN4RFFVRkRMRVZCUVVVc1IwRkJReXhEUVVGRExFTkJRVU03UVVGRFpDeHJRMEZCVFN4
RlFVRkZMRVZCUVVVN1FVRkRWaXhwUTBGQlN5eEZRVUZGTEVWQlFVVXNRMEZCUXl4VlFVRlZMRU5C
UVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUjBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZM
RU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU03UVVGRGRFTXNLMEpCUVVjc1JVRkJSU3hGUVVGRkxF
TkJRVU1zVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNN2VVSkJRM3BDTEVO
QlFVTTdPMEZCUlU0c09FSkJRVTA3UVVGQlFTeEJRVU5PTEhsQ1FVRkxMRVZCUVVVN1FVRkJReXcw
UWtGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc2JVSkJRVzFDTEVOQlFVTXNS
VUZCUlN4RFFVRkRMRVZCUVVVc1IwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFV
TXNSVUZCUlN4SFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVO
QlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU03UVVGRE4wVXNPRUpC
UVUwN1FVRkJRU3hCUVVOT0xIbENRVUZMTEVWQlFVVTdRVUZCUXl3MFFrRkJTU3hEUVVGRExFTkJR
VU1zUjBGQlJ5eEZRVUZGTEVsQlFVa3NSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSU3hIUVVGRExF
TkJRVU1zUTBGQlF5eEZRVUZGTEUxQlFVMHNSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSU3hIUVVG
RExFTkJRVU1zUTBGQlF5eEZRVUZGTEVsQlFVa3NSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSU3hI
UVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEV0QlFVc3NSVUZCUlN4RlFVRkZMRU5CUVVNc1ZVRkJW
U3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVkQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1JV
RkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXp0QlFVTTVSeXc0UWtG
QlRUdEJRVUZCTEVGQlEwNHNlVUpCUVVzc1JVRkJSVHRCUVVGRExEUkNRVUZKTEVOQlFVTXNRMEZC
UXl4SFFVRkhMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF6dEJRVU40UWl3NFFrRkJU
VHRCUVVGQkxFRkJRMDRzZVVKQlFVc3NSVUZCUlR0QlFVRkRMRFJDUVVGSkxFTkJRVU1zUTBGQlF5
eEhRVUZITEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJRenRCUVVONFFpdzRRa0ZCVFR0
QlFVRkJMRUZCUTA0c2VVSkJRVXNzUlVGQlJUdEJRVU5JTERSQ1FVRkpMRU5CUVVNc1EwRkJReXhI
UVVGSE8wRkJRMUFzWjBOQlFVa3NSVUZCUlN4bFFVRmxPMEZCUTNKQ0xHZERRVUZKTEVWQlFVVXNS
VUZCUlN4RFFVRkRMRVZCUVVVc1IwRkJReXhEUVVGRExFTkJRVU03UVVGRFpDeHJRMEZCVFN4RlFV
RkZMRVZCUVVVc1EwRkJReXhGUVVGRkxFZEJRVU1zUTBGQlF5eERRVUZETzBGQlEyaENMR2REUVVG
SkxFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVXNSMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRaQ3dy
UWtGQlJ5eEZRVUZGTEVWQlFVVXNRMEZCUXl4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJR
VVVzUTBGQlF6dDVRa0ZEZWtJc1EwRkJRenM3UVVGRlRpdzRRa0ZCVFR0QlFVRkJMRUZCUTA0c2VV
SkJRVXNzUlVGQlJUdEJRVUZETERSQ1FVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVU1zU1VG
QlNTeEZRVUZGTEUxQlFVMHNSVUZCUlN4TFFVRkxMRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVVz
UTBGQlF5eEZRVUZGTEVkQlFVY3NSVUZCUlN4RlFVRkZMRU5CUVVNc1QwRkJUeXhEUVVGRExFbEJR
VWtzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RFFVRkRPMEZCUTNwRkxEaENRVUZOTzBGQlFV
RXNRVUZEVGl4NVFrRkJTeXhGUVVGRk8wRkJRVU1zTkVKQlFVa3NRMEZCUXl4RFFVRkRMRWRCUVVj
c1JVRkJReXhKUVVGSkxFVkJRVVVzVlVGQlZTeEZRVUZGTEVkQlFVY3NSVUZCUlN4RlFVRkZMRU5C
UVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVkQlFVTXNRMEZCUXl4RFFVRkRM
RU5CUVVNc1JVRkJSU3hMUVVGTExFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFV
RkZMRWRCUVVjc1JVRkJSU3hGUVVGRkxFTkJRVU1zVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4
RlFVRkZMRU5CUVVNc1JVRkJReXhEUVVGRE8wRkJRMjVITERoQ1FVRk5PMEZCUVVFc1FVRkRUaXg1
UWtGQlN5eEZRVUZGTzBGQlFVTXNORUpCUVVrc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeERR
VUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hIUVVGRExFTkJRVU1zUTBGQlF5
eERRVUZETEVOQlFVTTdRVUZEYWtNc09FSkJRVTA3UVVGQlFTeEJRVU5PTEhsQ1FVRkxMRVZCUVVV
N1FVRkJReXcwUWtGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1JVRkJSU3hE
UVVGRExFTkJRVU03UVVGRGVFSXNPRUpCUVUwN1FVRkJRU3hCUVVOT0xIbENRVUZMTEVWQlFVVTdR
VUZCUXl3MFFrRkJTU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFV
RkRMRU5CUVVNN1FVRkRlRUlzT0VKQlFVMDdRVUZCUVN4QlFVTk9MSGxDUVVGTExFVkJRVVU3UVVG
QlF5dzBRa0ZCU1N4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRExFbEJRVWtzUlVGQlJTeGxRVUZs
TEVWQlFVVXNTMEZCU3l4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeFJR
VUZSTEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFZEJRVWNzUlVGQlJT
eEZRVUZGTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVG
QlF5eERRVUZETzBGQlEzQkhMRGhDUVVGTk8wRkJRVUVzUVVGRFRpeDVRa0ZCU3l4RlFVRkZPMEZC
UVVNc05FSkJRVWtzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUXl4SlFVRkpMRVZCUVVVc1pVRkJa
U3hGUVVGRkxFdEJRVXNzUlVGQlJTeE5RVUZOTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1Ew
RkJReXhEUVVGRExFVkJRVVVzVVVGQlVTeEZRVUZGTEUxQlFVMHNRMEZCUXl4RlFVRkZMRU5CUVVN
c1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeEhRVUZITEVWQlFVVXNSVUZCUlN4RFFVRkRMRTlC
UVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNRMEZCUXp0QlFVTndT
Q3c0UWtGQlRUdEJRVUZCTEVGQlEwNHNlVUpCUVVzc1JVRkJSVHRCUVVGRExEUkNRVUZKTEVOQlFV
TXNRMEZCUXl4SFFVRkhMRVZCUVVNc1NVRkJTU3hGUVVGRkxHZENRVUZuUWl4RlFVRkZMRXRCUVVz
c1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEV0QlFVc3NUVUZCVFN4RlFVRkZMRkZC
UVZFc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEV0QlFVc3NUVUZCVFN4RlFVRkZM
RWRCUVVjc1JVRkJSU3hGUVVGRkxFTkJRVU1zVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4RlFV
RkZMRU5CUVVNc1JVRkJReXhEUVVGRE8wRkJRek5JTERoQ1FVRk5PMEZCUVVFc1FVRkRUaXg1UWtG
QlN5eEZRVUZGTzBGQlFVTXNORUpCUVVrc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlF5eEpRVUZK
TEVWQlFVVXNhMEpCUVd0Q0xFVkJRVVVzVVVGQlVTeEZRVUZGTEZOQlFWTXNSVUZCUlN4TFFVRkxM
RVZCUVVVc1UwRkJVeXhGUVVGRkxFZEJRVWNzUlVGQlJTeEZRVUZGTEVOQlFVTXNUMEZCVHl4RFFV
RkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eERRVUZETzBGQlF6ZEhMRGhDUVVG
Tk8wRkJRVUVzUVVGRFRpeDVRa0ZCU3l4RlFVRkZPMEZCUVVNc05FSkJRVWtzUTBGQlF5eERRVUZE
TEVkQlFVY3NSVUZCUXl4SlFVRkpMRVZCUVVVc1lVRkJZU3hGUVVGRkxGRkJRVkVzUlVGQlJTeEpR
VUZKTEVWQlFVVXNTMEZCU3l4RlFVRkZMRWxCUVVrc1JVRkJSU3hIUVVGSExFVkJRVVVzUlVGQlJT
eERRVUZETEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUTBG
QlF6dEJRVU01Uml3NFFrRkJUVHRCUVVGQkxFRkJRMDRzZVVKQlFVc3NSVUZCUlR0QlFVRkRMRFJD
UVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJR
enRCUVVONFFpdzRRa0ZCVFR0QlFVRkJMRUZCUTA0c2VVSkJRVXNzUlVGQlJUdEJRVUZETERSQ1FV
RkpMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXp0
QlFVTjRRaXc0UWtGQlRUdEJRVUZCTEVGQlEwNHNlVUpCUVVzc1JVRkJSVHRCUVVGRExEUkNRVUZK
TEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhYUVVGWExFTkJRVU1zU1VGQlNTeEZR
VUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zUlVGQlJT
eERRVUZETEVOQlFVTTdRVUZEZGtRc09FSkJRVTA3UVVGQlFTeEJRVU5PTEhsQ1FVRkxMRVZCUVVV
N1FVRkJReXcwUWtGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1YwRkJWeXhE
UVVGRExFdEJRVXNzUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1NVRkJT
U3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETzBGQlEzaEVMRGhDUVVGTk8wRkJRVUVzUVVGRFRp
eDVRa0ZCU3l4RlFVRkZPMEZCUVVVc01FSkJRVVVzUTBGQlF5eEZRVUZGTEVkQlFVTXNRMEZCUXl4
RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVU1zU1VGQlNTeEZRVUZGTEVWQlFVVXNRMEZC
UXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNV
VUZCVVN4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeFRRVUZUTEVWQlFV
VXNSVUZCUlN4RFFVRkRMRVZCUVVVc1IwRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVO
QlFVTXNRVUZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eEZRVUZG
TEVkQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRlRWNzT0VKQlFVMDdRVUZCUVN4QlFVTk9M
SGxDUVVGTExFVkJRVVU3UVVGQlF5dzBRa0ZCU1N4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExF
VkJRVU1zU1VGQlNTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVG
RExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNVVUZCVVN4RlFVRkZMRVZCUVVVc1EwRkJReXhG
UVVGRkxFTkJRVU1zUlVGQlF5eERRVUZETEVOQlFVTTdRVUZETTBRc09FSkJRVTA3UVVGQlFTeEJR
VU5PTEhsQ1FVRkxMRVZCUVVVN1FVRkJReXcwUWtGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RlFV
RkZMRU5CUVVNN1FVRkRjRUlzT0VKQlFVMDdRVUZCUVN4QlFVTk9MSGxDUVVGTExFVkJRVVU3UVVG
QlF5d3dRa0ZCUlN4RFFVRkRMRVZCUVVVc1IwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZK
TEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03UVVGRE9VSXNP
RUpCUVUwN1FVRkJRU3hCUVVOT0xIbENRVUZMTEVWQlFVVTdRVUZCUXl3MFFrRkJTU3hEUVVGRExF
TkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVG
RE8wRkJRekZDTERoQ1FVRk5PMEZCUVVFc1FVRkRUaXg1UWtGQlN5eEZRVUZGTzBGQlFVTXNNRUpC
UVVVc1EwRkJReXhGUVVGRkxFZEJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRM
RVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzBGQlF6bENMRGhDUVVGTk8w
RkJRVUVzUVVGRFRpeDVRa0ZCU3l4RlFVRkZPMEZCUVVNc05FSkJRVWtzUTBGQlF5eERRVUZETEVk
QlFVY3NSVUZCUlN4RFFVRkRPMEZCUTNCQ0xEaENRVUZOTzBGQlFVRXNRVUZEVGl4NVFrRkJTeXhG
UVVGRk8wRkJRVU1zTUVKQlFVVXNRMEZCUXl4RlFVRkZMRWRCUVVNc1EwRkJReXhEUVVGRExFTkJR
VU1zU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8w
RkJRemxDTERoQ1FVRk5PMEZCUVVFc1FVRkRUaXg1UWtGQlN5eEZRVUZGTzBGQlFVTXNORUpCUVVr
c1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETzBGQlEzQkNMRGhDUVVGTk8wRkJRVUVz
UVVGRFRpeDVRa0ZCU3l4RlFVRkZPMEZCUVVNc01FSkJRVVVzUTBGQlF5eEZRVUZGTEVkQlFVTXNR
MEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFV
TXNRMEZCUXl4RFFVRkRPMEZCUXpsQ0xEaENRVUZOTzBGQlFVRXNRVUZEVGl4NVFrRkJTeXhGUVVG
Rk8wRkJRVU1zTkVKQlFVa3NRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRE8wRkJRM0JD
TERoQ1FVRk5PMEZCUVVFc1FVRkRUaXg1UWtGQlN5eEZRVUZGTzBGQlFVTXNNRUpCUVVVc1EwRkJR
eXhGUVVGRkxFZEJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1Ew
RkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzBGQlF6bENMRGhDUVVGTk8wRkJRVUVzUVVG
RFRpeDVRa0ZCU3l4RlFVRkZPMEZCUVVNc05FSkJRVWtzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZC
UlN4RFFVRkRPMEZCUTNCQ0xEaENRVUZOTzBGQlFVRXNRVUZEVGl4NVFrRkJTeXhGUVVGRk8wRkJR
VU1zTUVKQlFVVXNRMEZCUXl4RlFVRkZMRWRCUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNT
eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJRemxDTERo
Q1FVRk5PMEZCUVVFc1FVRkRUaXg1UWtGQlN5eEZRVUZGTzBGQlFVTXNORUpCUVVrc1EwRkJReXhE
UVVGRExFZEJRVWNzUlVGQlJTeERRVUZETzBGQlEzQkNMRGhDUVVGTk8wRkJRVUVzUVVGRFRpeDVR
a0ZCU3l4RlFVRkZPMEZCUVVNc01FSkJRVVVzUTBGQlF5eEZRVUZGTEVkQlFVTXNRMEZCUXl4RFFV
RkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4
RFFVRkRPMEZCUXpsQ0xEaENRVUZOTzBGQlFVRXNRVUZEVGl4NVFrRkJTeXhGUVVGRk8wRkJRVU1z
TkVKQlFVa3NRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRE8wRkJRM0JDTERoQ1FVRk5P
MEZCUVVFc1FVRkRUaXg1UWtGQlN5eEZRVUZGTzBGQlFVTXNNRUpCUVVVc1EwRkJReXhGUVVGRkxF
ZEJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVG
RkxFTkJRVU1zUTBGQlF5eERRVUZETzBGQlF6bENMRGhDUVVGTk8wRkJRVUVzUVVGRFRpeDVRa0ZC
U3l4RlFVRkZPMEZCUVVNc05FSkJRVWtzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRP
MEZCUTNCQ0xEaENRVUZOTzBGQlFVRXNRVUZEVGl4NVFrRkJTeXhGUVVGRk8wRkJRVU1zTUVKQlFV
VXNRMEZCUXl4RlFVRkZMRWRCUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVW
QlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJRemxDTERoQ1FVRk5PMEZC
UVVFc1FVRkRUaXg1UWtGQlN5eEZRVUZGTzBGQlFVTXNORUpCUVVrc1EwRkJReXhEUVVGRExFZEJR
VWNzUlVGQlJTeERRVUZETzBGQlEzQkNMRGhDUVVGTk8wRkJRVUVzUVVGRFRpeDVRa0ZCU3l4RlFV
RkZPMEZCUVVNc01FSkJRVVVzUTBGQlF5eEZRVUZGTEVkQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVN
c1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZC
UXpsQ0xEaENRVUZOTzBGQlFVRXNRVUZEVGl4NVFrRkJTeXhGUVVGRk8wRkJRVU1zTkVKQlFVa3NR
MEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRE8wRkJRM0JDTERoQ1FVRk5PMEZCUVVFc1FV
RkRUaXg1UWtGQlN5eEZRVUZGTzBGQlFVTXNNRUpCUVVVc1EwRkJReXhGUVVGRkxFZEJRVU1zUTBG
QlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1z
UTBGQlF5eERRVUZETzBGQlF6bENMRGhDUVVGTk8wRkJRVUVzUVVGRFRpeDVRa0ZCU3l4RlFVRkZP
MEZCUVVNc05FSkJRVWtzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1JV
RkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU14UWl3NFFrRkJUVHRCUVVGQkxFRkJRMDRzZVVK
QlFVc3NSVUZCUlR0QlFVRkRMREJDUVVGRkxFTkJRVU1zUlVGQlJTeEhRVUZETEVOQlFVTXNRMEZC
UXl4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNR
MEZCUXp0QlFVTTVRaXc0UWtGQlRUdEJRVUZCTEVGQlEwNHNlVUpCUVVzc1IwRkJSenRCUVVGRExE
UkNRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBG
QlF5eERRVUZETEVOQlFVTTdRVUZETTBJc09FSkJRVTA3UVVGQlFTeEJRVU5PTEhsQ1FVRkxMRWRC
UVVjN1FVRkJReXd3UWtGQlJTeERRVUZETEVWQlFVVXNSMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJR
eXhKUVVGSkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNN1FV
RkRMMElzT0VKQlFVMDdRVUZCUVN4cFFrRkRURHRoUVVOQk8wRkJRMFFzYVVKQlFVc3NSVUZCUlN4
RFFVRkRMRVZCUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVWQlFVTXNRMEZC
UXl4RlFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNS
VUZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFV
TXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVW
QlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZE
TEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZR
VUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJT
eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBG
QlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1z
UlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJR
VU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExF
VkJRVU1zUlVGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVG
RExFVkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhG
UVVGRExFVkJRVU1zUlVGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJR
eXhEUVVGRExFVkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRVZCUVVNc1Ew
RkJReXhGUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVN
c1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZC
UVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRM
RVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFV
RkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4
RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZC
UXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNR
MEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFV
TXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVO
QlFVTXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZE
TEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZR
VUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5
eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVG
QlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVz
UTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJR
VU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVNc1JVRkJReXhEUVVGRExF
VkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJReXhGUVVG
RExFTkJRVU1zUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhG
UVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJS
U3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JV
RkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVN
c1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5C
UVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRM
RU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFV
RkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4
RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZC
UXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNS
VUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFV
VXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVO
QlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZE
TEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eERR
VUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5
eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBG
QlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRExFTkJRVU1z
UlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJR
VU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExF
VkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVG
RkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hG
UVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJR
eXhEUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1Ew
RkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVN
c1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVTXNSVUZCUXl4RFFVRkRMRVZC
UVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRM
RU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFV
RkRMRU5CUVVNc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4
RFFVRkRMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZC
UXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNS
VUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFV
TXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVO
QlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eERRVUZE
TEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERR
VUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5
eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRExFTkJRVU1zUlVG
QlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1z
UlVGQlF5eEZRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRExFTkJR
VU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhEUVVGRExF
VkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVG
RExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhG
UVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJS
U3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JV
RkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVN
c1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5C
UVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRM
RU5CUVVNc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFV
RkRMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4
RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZC
UXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRExFVkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNR
MEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFV
TXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVW
QlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZE
TEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eERR
VUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5
eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBG
QlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRExFTkJRVU1z
UlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJR
VU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExF
VkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVG
RkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hG
UVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVNc1JVRkJR
eXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JV
RkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVV
c1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZC
UVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRM
RU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFV
RkRMRU5CUVVNc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4
RFFVRkRMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZC
UXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNS
VUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFV
TXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVO
QlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eERRVUZE
TEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERR
VUZETEVWQlFVTXNSVUZCUXl4RlFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5
eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBG
QlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1z
UTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRExFTkJR
VU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhEUVVGRExF
VkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVG
RExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhG
UVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJS
U3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JV
RkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVN
c1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5C
UVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRM
RU5CUVVNc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVTXNRMEZCUXl4RlFV
RkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4
RFFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZC
UXl4RFFVRkRMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNR
MEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFV
TXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVW
QlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZE
TEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eERR
VUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5
eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBG
QlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRExFTkJRVU1z
UlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJR
VU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExF
VkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVG
RExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hG
UVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJR
eXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JV
RkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVN
c1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZC
UVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZM
RU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFV
RkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZETEVWQlFVTXNSVUZCUlN4
RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZC
UlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNS
VUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFV
TXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVW
QlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZE
TEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZR
VUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJT
eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVG
QlF5eEZRVUZGTEVWQlFVTXNSVUZCUXl4RlFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1z
UTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJR
VU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExF
VkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVG
RkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hE
UVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJR
eXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JV
RkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVN
c1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZC
UVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZM
RVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFV
RkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4
RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVTXNRMEZC
UXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNS
VUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFV
TXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVO
QlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZE
TEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERR
VUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5
eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVG
QlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1z
UlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJR
VVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxF
TkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVG
RExFVkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hG
UVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJR
eXhGUVVGRkxFVkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JV
RkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVV
c1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZC
UVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRM
RVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RFFV
RkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4
RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZC
UXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNS
VUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFV
TXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVW
QlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlF5eEZRVUZE
TEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlF5eEZR
VUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJT
eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVG
QlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1z
UTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJR
VU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExF
TkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVG
RExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhG
UVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJR
eXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JV
RkJSU3hEUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRU5CUVVN
c1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZC
UVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRM
RVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFV
RkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4
RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZC
UXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNS
VUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFV
TXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVW
QlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZG
TEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZR
VUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5
eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBG
QlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRExFVkJRVVVz
UlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJR
VVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExF
VkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVG
RExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhG
UVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJR
eXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JV
RkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVV
c1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZC
UVVNc1JVRkJSU3hGUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRM
RVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFV
RkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4
RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZC
UXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNR
MEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFV
TXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVO
QlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZE
TEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZR
VUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5
eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVG
QlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1z
UlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJR
VU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExF
VkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVG
RkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hE
UVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJR
eXhGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVVc1JV
RkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVN
c1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5C
UVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRM
RVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFV
RkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4
RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZC
UlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNS
VUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFV
TXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVO
QlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZG
TEVWQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZR
VUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5
eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBG
QlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1z
UTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJR
VU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExF
VkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVG
RExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhG
UVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJS
U3hEUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JV
RkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVN
c1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZC
UVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZM
RU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFV
RkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4
RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZC
UXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNS
VUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFV
VXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVW
QlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZE
TEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERR
VUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRExFVkJRVU1zUlVGQlJT
eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVG
QlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1z
UTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJR
VU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExF
TkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVG
RExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhG
UVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJR
eXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JV
RkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVV
c1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5C
UVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRM
RVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFV
RkRMRVZCUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4
RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZC
UXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNS
VUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFV
TXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVW
QlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZG
TEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZR
VUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5
eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBG
QlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1z
UTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJR
VU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExF
VkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVG
RExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhE
UVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJR
eXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JV
RkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVN
c1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZC
UVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZM
RU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFV
RkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4
RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZC
UXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNS
VUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFV
VXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZETEVW
QlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZE
TEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZR
VUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJT
eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVG
QlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1z
UTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJR
VU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExF
TkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVG
RExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhG
UVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJR
eXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JV
RkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVV
c1EwRkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZC
UVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRM
RVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFV
RkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4
RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZC
UXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNS
VUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFV
TXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVW
QlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZG
TEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZR
VUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5
eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBG
QlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRExFVkJRVVVz
UlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJR
VU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExF
TkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVG
RExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhE
UVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJR
eXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JV
RkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVN
c1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZC
UVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZM
RU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFV
RkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4
RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZC
UXl4RlFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNR
MEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFV
TXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVW
QlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZE
TEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZR
VUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJT
eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVG
QlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1z
UTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJR
VU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExF
TkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVG
RExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhG
UVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJR
eXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1Ew
RkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVN
c1JVRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5C
UVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRM
RVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFV
RkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4
RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZC
UlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNS
VUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFV
TXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVO
QlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZE
TEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERR
VUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5
eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVG
QlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1z
UlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJR
VU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExF
VkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVG
RkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hG
UVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJR
eXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1Ew
RkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVN
c1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5C
UVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRM
RVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RlFV
RkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4
RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZC
UXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNS
VUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFV
TXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVW
QlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZE
TEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZR
VUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJT
eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVG
QlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1z
UlVGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJR
VU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExF
VkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVG
RkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhE
UVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJR
eXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1Ew
RkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVN
c1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZC
UVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRM
RVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFV
RkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4
RFFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZC
UXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNS
VUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFV
VXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVO
QlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZE
TEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZR
VUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5
eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVG
QlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVU1z
UlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJR
VU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExF
VkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVG
RkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hG
UVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJR
eXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1Ew
RkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVN
c1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5C
UVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRM
RVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFV
RkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4
RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZC
UXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNS
VUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFV
VXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVW
QlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZE
TEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eEZR
VUZGTEVWQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJT
eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVU1zUlVG
QlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1z
UlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJR
VU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExF
VkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVG
RkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hE
UVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJR
eXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JV
RkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVN
c1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZC
UVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkRM
RVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFV
RkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4
RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZC
UXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNS
VUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFV
VXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVO
QlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZE
TEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZR
VUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5
eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVG
QlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1z
UTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJR
VU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExF
VkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVG
RExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhG
UVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJS
U3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1Ew
RkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVN
c1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZC
UVVNc1JVRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZM
RU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RFFV
RkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4
RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZC
UXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNS
VUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFV
TXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVW
QlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZG
TEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERR
VUZETEVWQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJT
eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVG
QlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1z
UlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJR
VU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxF
VkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVG
RExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhG
UVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJR
eXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JV
RkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVV
c1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5C
UVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRM
RVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFV
RkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4
RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVTXNSVUZC
UlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNS
VUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFV
TXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVO
QlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZE
TEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERR
VUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5
eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVG
QlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1z
UlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJR
VVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxF
TkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVG
RExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhG
UVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJR
eXhGUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JV
RkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVN
c1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZC
UVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRM
RVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFV
RkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4
RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZC
UXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNR
MEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFV
TXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVW
QlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZE
TEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZR
VUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJT
eEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVG
QlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1z
UlVGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJR
VU1zUlVGQlF5eEZRVUZETEVWQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExF
VkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVG
RkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hE
UVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJR
eXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JV
RkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVN
c1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZC
UVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZM
RVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFV
RkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4
RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZC
UXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNR
MEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFV
TXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZETEVW
QlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZE
TEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZR
VUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJT
eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBG
QlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1z
UlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJR
VU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExF
VkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVG
RkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVTXNSVUZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hG
UVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJR
eXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JV
RkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVN
c1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZC
UVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZM
RU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFV
RkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4
RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZC
UXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNS
VUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFV
TXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVO
QlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZE
TEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eERR
VUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJT
eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVG
QlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1z
UTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJR
VU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExF
TkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVG
RExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhG
UVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJR
eXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JV
RkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVV
c1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5C
UVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRM
RVZCUVVNc1JVRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFV
RkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4
RFFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZC
UlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNS
VUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFV
TXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVO
QlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZG
TEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERR
VUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5
eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVG
QlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1z
UlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJR
VVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxF
TkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVG
RExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhG
UVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVVc1JVRkJR
eXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JV
RkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVN
c1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZC
UVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRM
RVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFV
RkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4
RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZC
UXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNR
MEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZETEVOQlFV
TXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVW
QlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZE
TEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERR
VUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5
eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBG
QlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1z
UlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJR
VU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExF
VkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVG
RkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hE
UVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJR
eXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JV
RkJReXhGUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVN
c1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZC
UVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRM
RU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFV
RkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4
RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZC
UXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNS
VUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFV
VXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlF5eEZRVUZETEVW
QlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZG
TEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZR
VUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5
eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVG
QlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVz
UlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJR
VU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExF
VkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVG
RkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hG
UVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJR
eXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1Ew
RkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVN
c1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5C
UVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRM
RVZCUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RFFV
RkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4
RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZC
UXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNS
VUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFV
VXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVW
QlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZG
TEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZR
VUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5
eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVG
QlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1z
UlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJR
VVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxF
VkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVG
RExFVkJRVVVzUlVGQlF5eEZRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhG
UVVGRkxFVkJRVU1zUjBGQlJ5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJR
eXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNSMEZCUnl4RlFVRkRMRVZCUVVVc1JV
RkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVV
c1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eEhRVUZITEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZC
UVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRM
RU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFV
RkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4
RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZC
UXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNS
VUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFV
VXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVO
QlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZE
TEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRExFVkJRVU1zUlVGQlJTeEZR
VUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJT
eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRWRCUVVjc1JVRkJReXhGUVVGRkxFVkJRVU1zUjBG
QlJ5eEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1z
UTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhIUVVGSExFVkJR
VU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExF
VkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVG
RkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hG
UVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJR
eXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1Ew
RkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVN
c1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5C
UVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRM
RVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFV
RkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVkQlFVY3NRMEZCUXl4
RlFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZC
UlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNR
MEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFV
TXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVW
QlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZE
TEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZR
VUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJT
eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVG
QlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRExFVkJRVU1z
UlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJR
VU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExF
VkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVG
RExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhG
UVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJS
U3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JV
RkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVN
c1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5C
UVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRM
RU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFV
RkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4
RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZC
UXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNS
VUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFV
TXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVW
QlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZE
TEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZR
VUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJT
eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBG
QlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1z
UlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJR
VU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExF
VkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVG
RkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hG
UVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJR
eXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVNc1JV
RkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVV
c1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZC
UVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRM
RU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4SFFV
RkhMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVkQlFVY3NRMEZCUXl4
RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZC
UXl4RlFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNR
MEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFV
TXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVW
QlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZE
TEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZR
VUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlF5
eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVG
QlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1z
UlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJR
VVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxF
VkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVG
RExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhE
UVVGRExFTkJRVU1zUlVGQlF5eEhRVUZITEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJR
eXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1Ew
RkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVN
c1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZC
UVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRM
RVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFV
RkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4
RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZC
UXl4RlFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNS
VUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFV
VXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVO
QlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZE
TEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZR
VUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5
eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVG
QlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVz
UlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJR
VU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExF
TkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVG
RExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhE
UVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJR
eXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1Ew
RkJReXhEUVVGRExFVkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVV
c1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZC
UVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRM
RU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFV
RkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4
RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZC
UXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNS
VUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFV
TXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVW
QlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZE
TEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRExFTkJRVU1zUlVGQlF5eERR
VUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5
eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBG
QlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1z
UlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJR
VU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExF
VkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVG
RkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hE
UVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJR
eXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JV
RkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVN
c1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZC
UVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkRM
RVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFV
RkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4
RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZC
UlN4RlFVRkRMRWRCUVVjc1JVRkJReXhGUVVGRkxFVkJRVU1zUjBGQlJ5eEZRVUZETEVWQlFVVXNS
VUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZETEVWQlFV
TXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVW
QlFVVXNSVUZCUXl4SFFVRkhMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZE
TEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZR
VUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJT
eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBG
QlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1z
UlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJR
VU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExF
VkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVG
RkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJReXhG
UVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJR
eXhGUVVGRExFVkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1Ew
RkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVN
c1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZC
UVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRM
RVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFV
RkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4
RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZC
UXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNR
MEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFV
TXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVO
QlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZE
TEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZR
VUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5
eERRVUZETEVWQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRExFVkJRVVVzUlVG
QlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1z
UTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJR
VU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExF
TkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVG
RExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhG
UVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJR
eXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JV
RkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVV
c1EwRkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZC
UVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZM
RVZCUVVNc1JVRkJSU3hGUVVGRExFZEJRVWNzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFV
RkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4
RlFVRkZMRVZCUVVNc1IwRkJSeXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZC
UXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUjBGQlJ5eEZRVUZETEVWQlFVVXNS
VUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFV
TXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVW
QlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZE
TEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERR
VUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5
eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVG
QlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1z
UlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJR
VVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJReXhGUVVGRExF
VkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4SFFVRkhMRU5CUVVNc1JVRkJReXhGUVVG
RExFVkJRVU1zUlVGQlJTeEZRVUZETEVkQlFVY3NSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhE
UVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRWRCUVVjc1JVRkJR
eXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVNc1JV
RkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVN
c1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZC
UVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRM
RVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFV
RkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4
RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZC
UXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNR
MEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFV
TXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVO
QlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZE
TEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERR
VUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRExFVkJRVU1zUlVGQlJT
eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVG
QlF5eEhRVUZITEVWQlFVTXNSVUZCUlN4RlFVRkRMRWRCUVVjc1JVRkJReXhGUVVGRkxFVkJRVU1z
UTBGQlF5eERRVUZETEVWQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRExFVkJR
VVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxF
VkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVG
RExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhE
UVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJR
eXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1Ew
RkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVN
c1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZC
UVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRM
RVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFV
RkZMRU5CUVVNc1JVRkJReXhGUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4
RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZC
UXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNR
MEZCUXl4RlFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFV
TXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVO
QlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZE
TEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERR
VUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5
eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVG
QlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1z
UlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJR
VVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxF
TkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVG
RExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhE
UVVGRExFVkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVVc1JVRkJR
eXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1Ew
RkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVN
c1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5C
UVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRM
RVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFV
RkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4
RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZC
UlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNR
MEZCUXl4RlFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFV
TXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVO
QlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZE
TEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZR
VUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5
eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVG
QlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVz
UTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJR
VU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExF
VkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVG
RExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhG
UVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJS
U3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JV
RkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVN
c1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZC
UVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZM
RVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFV
RkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4
RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZC
UXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVVXNS
VUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhIUVVGSExFTkJRVU1zUlVGQlF5eEZRVUZETEVWQlFV
TXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUjBGQlJ5eEZRVUZETEVW
QlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZE
TEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZR
VUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5
eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBG
QlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1z
UlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJR
VU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExF
VkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVG
RkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hG
UVVGRExFVkJRVVVzUlVGQlF5eEZRVUZETEVWQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJR
eXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JV
RkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVN
c1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZC
UVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZM
RU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFV
RkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4
RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZC
UXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNS
VUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFV
VXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVW
QlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZE
TEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eEZR
VUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlF5
eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVG
QlF5eEZRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1z
UTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFZEJR
VWNzUlVGQlF5eEZRVUZGTEVWQlFVTXNSMEZCUnl4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxF
VkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVG
RExFVkJRVVVzUlVGQlF5eEhRVUZITEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhG
UVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJR
eXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JV
RkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVN
c1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5C
UVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRM
RVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFV
RkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4
RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZC
UlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNS
VUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJReXhGUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVOQlFV
TXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVW
QlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZE
TEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZR
VUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJT
eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBG
QlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1z
UlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJR
VU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExF
VkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVG
RkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hG
UVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJR
eXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVNc1JV
RkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkRMRVZCUVVN
c1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZC
UVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRM
RVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFV
RkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4
RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZC
UXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNR
MEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFV
TXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVO
QlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZE
TEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eERR
VUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJT
eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVG
QlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1z
UTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJR
VU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExF
TkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVG
RExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhG
UVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJR
eXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JV
RkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVV
c1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5C
UVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRM
RVZCUVVNc1JVRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4SFFV
RkhMRU5CUVVNc1JVRkJReXhGUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4
RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZC
UXl4RFFVRkRMRVZCUVVNc1IwRkJSeXhEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVkQlFVY3NS
VUZCUXl4RlFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVkQlFV
Y3NRMEZCUXl4RlFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVW
QlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZE
TEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRExFVkJRVU1zUlVGQlJTeEZR
VUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5
eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBG
QlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1z
UTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJR
VU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExF
VkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVG
RExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhG
UVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJS
U3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1Ew
RkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVN
c1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZC
UVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZM
RU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFV
RkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4
RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZC
UXl4RlFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNR
MEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhIUVVGSExFVkJRVU1zUlVGQlJTeEZRVUZETEVkQlFV
Y3NSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUjBGQlJ5eERRVUZETEVW
QlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZG
TEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERR
VUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5
eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVG
QlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1z
UlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJR
VVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxF
VkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVG
RExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhE
UVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVNc1JVRkJS
U3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JV
RkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVN
c1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZC
UVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZM
RVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFV
RkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4
RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZC
UXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNR
MEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFV
TXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVW
QlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZE
TEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZR
VUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJT
eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBG
QlF5eEZRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1z
UlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJR
VVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxF
TkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVG
RExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhG
UVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJR
eXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JV
RkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVV
c1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZC
UVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRM
RU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFV
RkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVTXNSVUZCUlN4
RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZC
UXl4RFFVRkRMRU5CUVVNc1JVRkJReXhIUVVGSExFTkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVTXNS
VUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZETEVWQlFV
VXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhIUVVGSExFTkJRVU1zUlVGQlF5eEZRVUZETEVW
QlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZE
TEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZR
VUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJT
eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVG
QlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1z
UTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJR
VU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExF
TkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVG
RExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhG
UVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJR
eXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1Ew
RkJReXhGUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVN
c1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkRMRVZC
UVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkRM
RVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVkQlFVY3NRMEZCUXl4RlFV
RkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEhRVUZITEVOQlFVTXNSVUZCUXl4
RlFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZC
UXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNS
VUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFV
TXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVW
QlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZG
TEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZR
VUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5
eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBG
QlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1z
UTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJR
VU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExF
VkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNRMEZCUXp0QlFVTjRaMWNzTUVKQlFXTXNSVUZCUlN4
RlFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVOQlFVTXNSVUZC
UXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNS
VUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFV
VXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVW
QlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZE
TEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERR
VUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5
eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1IwRkJSeXhGUVVGRExFTkJRVU1zUTBG
QlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRWRCUVVjc1JVRkJReXhEUVVGRExFTkJRVU1z
UlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4SFFVRkhMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJR
VU1zUlVGQlJTeERRVUZETEVWQlFVTXNSMEZCUnl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExF
VkJRVVVzUTBGQlF5eEZRVUZETEVkQlFVY3NSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVG
RkxFTkJRVU1zUlVGQlF5eEhRVUZITEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hE
UVVGRExFVkJRVU1zUjBGQlJ5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJR
eXhGUVVGRExFZEJRVWNzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JV
RkJReXhIUVVGSExFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVN
c1IwRkJSeXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRPMEZC
UXpkTkxITkNRVUZWTEVWQlFVVXNVMEZCVXl4VlFVRlZMRU5CUVVNc1IwRkJSeXhGUVVGRkxFbEJR
VWtzUlVGQlJUdEJRVU4yUXl4elFrRkJUU3hKUVVGSkxFdEJRVXNzUTBGQlF5eEhRVUZITEVOQlFV
TXNRMEZCUXp0aFFVTjRRanRCUVVORUxHbENRVUZMTEVWQlFVVXNVMEZCVXl4TFFVRkxMRU5CUVVN
c1MwRkJTeXhGUVVGRk8wRkJRM3BDTEc5Q1FVRkpMRWxCUVVrc1IwRkJSeXhKUVVGSk8yOUNRVUZG
TEV0QlFVc3NSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJRenR2UWtGQlJTeE5RVUZOTEVkQlFVY3NR
MEZCUXl4SlFVRkpMRU5CUVVNN2IwSkJRVVVzVFVGQlRTeEhRVUZITEVWQlFVVTdiMEpCUVVVc1Mw
RkJTeXhIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTzI5Q1FVRkZMRTFCUVUwc1IwRkJSeXhGUVVG
Rk8yOUNRVUZGTEZGQlFWRXNSMEZCUnl4RFFVRkRPMjlDUVVGRkxFMUJRVTBzUjBGQlJ5eERRVUZE
TzI5Q1FVRkZMRlZCUVZVc1IwRkJSeXhEUVVGRE8yOUNRVUZGTEUxQlFVMHNSMEZCUnl4RFFVRkRP
MjlDUVVGRkxFZEJRVWNzUjBGQlJ5eERRVUZETEVOQlFVTTdRVUZETTBvc2IwSkJRVWtzUTBGQlF5
eExRVUZMTEVOQlFVTXNVVUZCVVN4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE8wRkJRek5DTEc5
Q1FVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFVkJRVVVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNSVUZC
UlN4RFFVRkRPMEZCUTNoQ0xHOUNRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRMRXRCUVVzc1IwRkJS
eXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETzBGQlF6TkNMRzlDUVVGSkxFTkJRVU1zUlVGQlJT
eERRVUZETEUxQlFVMHNSMEZCUnl4SlFVRkpMRU5CUVVNN1FVRkRkRUlzYjBKQlFVa3NUMEZCVHl4
SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFMUJRVTBzU1VGQlNTeFhRVUZYTEVWQlEzWkRMRWxC
UVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVFVGQlRTeEhRVUZITEVWQlFVVXNRMEZCUXp0QlFVTXpR
aXh2UWtGQlNTeExRVUZMTEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhOUVVGTkxF
TkJRVU03UVVGRE9VSXNjMEpCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVO
QlFVTTdRVUZEYmtJc2IwSkJRVWtzVFVGQlRTeEhRVUZITEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5C
UVVNc1QwRkJUeXhKUVVGSkxFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNUMEZCVHl4RFFVRkRM
RTFCUVUwc1EwRkJRenRCUVVNM1JDeHZRa0ZCU1N4UFFVRlBMRWxCUVVrc1EwRkJReXhGUVVGRkxF
TkJRVU1zVlVGQlZTeExRVUZMTEZWQlFWVXNSVUZEZUVNc1NVRkJTU3hEUVVGRExGVkJRVlVzUjBG
QlJ5eEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRMRlZCUVZVc1EwRkJRenRCUVVONlF5eDVRa0ZC
VXl4UlFVRlJMRU5CUVVNc1EwRkJReXhGUVVGRk8wRkJRMnBDTEhsQ1FVRkxMRU5CUVVNc1RVRkJU
U3hIUVVGSExFdEJRVXNzUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1Ew
RkJRenRCUVVOd1F5d3dRa0ZCVFN4RFFVRkRMRTFCUVUwc1IwRkJSeXhOUVVGTkxFTkJRVU1zVFVG
QlRTeEhRVUZITEVOQlFVTXNRMEZCUXp0QlFVTnNReXd3UWtGQlRTeERRVUZETEUxQlFVMHNSMEZC
Unl4TlFVRk5MRU5CUVVNc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF6dHBRa0ZEY2tNN1FVRkRS
Q3g1UWtGQlV5eEhRVUZITEVkQlFVYzdRVUZEV0N4M1FrRkJTU3hMUVVGTExFTkJRVU03UVVGRFZp
eDVRa0ZCU3l4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVs
QlFVa3NRMEZCUXl4RFFVRkRPMEZCUXpsQ0xIZENRVUZKTEU5QlFVOHNTMEZCU3l4TFFVRkxMRkZC
UVZFc1JVRkJSVHRCUVVNelFpdzJRa0ZCU3l4SFFVRkhMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJR
VU1zUzBGQlN5eERRVUZETEVsQlFVa3NTMEZCU3l4RFFVRkRPM0ZDUVVONlF6dEJRVU5FTERKQ1FV
RlBMRXRCUVVzc1EwRkJRenRwUWtGRGFFSTdRVUZEUkN4dlFrRkJTU3hOUVVGTk8yOUNRVUZGTEdO
QlFXTTdiMEpCUVVVc1MwRkJTenR2UWtGQlJTeE5RVUZOTzI5Q1FVRkZMRU5CUVVNN2IwSkJRVVVz
UTBGQlF6dHZRa0ZCUlN4TFFVRkxMRWRCUVVjc1JVRkJSVHR2UWtGQlJTeERRVUZETzI5Q1FVRkZM
RWRCUVVjN2IwSkJRVVVzVVVGQlVUdHZRa0ZCUlN4UlFVRlJMRU5CUVVNN1FVRkRlRVlzZFVKQlFV
OHNTVUZCU1N4RlFVRkZPMEZCUTFRc2VVSkJRVXNzUjBGQlJ5eExRVUZMTEVOQlFVTXNTMEZCU3l4
RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU5vUXl4M1FrRkJTU3hK
UVVGSkxFTkJRVU1zWTBGQll5eERRVUZETEV0QlFVc3NRMEZCUXl4RlFVRkZPMEZCUXpWQ0xEaENR
VUZOTEVkQlFVY3NTVUZCU1N4RFFVRkRMR05CUVdNc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6
dHhRa0ZEZGtNc1RVRkJUVHRCUVVOSUxEUkNRVUZKTEUxQlFVMHNTMEZCU3l4SlFVRkpMRWxCUVVr
c1QwRkJUeXhOUVVGTkxFbEJRVWtzVjBGQlZ5eEZRVUZGTzBGQlEycEVMR3REUVVGTkxFZEJRVWNz
UjBGQlJ5eEZRVUZGTEVOQlFVTTdlVUpCUTJ4Q08wRkJRMFFzT0VKQlFVMHNSMEZCUnl4TFFVRkxM
RU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUzBGQlN5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFV
RkRMRTFCUVUwc1EwRkJReXhEUVVGRE8zRkNRVU5xUkR0QlFVTkVMSGRDUVVGSkxFOUJRVThzVFVG
QlRTeExRVUZMTEZkQlFWY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhOUVVGTkxFbEJRVWtz
UTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVN1FVRkRMMFFzTkVKQlFVa3NU
VUZCVFN4SFFVRkhMRVZCUVVVc1EwRkJRenRCUVVOb1FpdzBRa0ZCU1N4RFFVRkRMRlZCUVZVc1JV
RkJSVHRCUVVOaUxHOURRVUZSTEVkQlFVY3NSVUZCUlN4RFFVRkRPMEZCUTJRc2FVTkJRVXNzUTBG
QlF5eEpRVUZKTEV0QlFVc3NRMEZCUXl4TFFVRkxMRU5CUVVNc1JVRkRiRUlzU1VGQlNTeEpRVUZK
TEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERR
VUZETEVWQlFVVTdRVUZETjBJc2QwTkJRVkVzUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4SFFV
RkhMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NSMEZCUnl4
RFFVRkRMRU5CUVVNN05rSkJRMnBFTzBGQlEwd3NaME5CUVVrc1NVRkJTU3hEUVVGRExFdEJRVXNz
UTBGQlF5eFpRVUZaTEVWQlFVVTdRVUZEZWtJc2MwTkJRVTBzUjBGQlJ5eHpRa0ZCYzBJc1NVRkJT
U3hSUVVGUkxFZEJRVWNzUTBGQlF5eERRVUZCTEVGQlFVTXNSMEZCUnl4TFFVRkxMRWRCUVVjc1NV
RkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eFpRVUZaTEVWQlFVVXNSMEZCUnl4alFVRmpMRWRCUVVj
c1VVRkJVU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4VFFVRlRMRWxC
UVVrc1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4TlFVRk5M
RU5CUVVFc1FVRkJReXhIUVVGSExFZEJRVWNzUTBGQlF6czJRa0ZEZGt3c1RVRkJUVHRCUVVOSUxI
TkRRVUZOTEVkQlFVY3NjMEpCUVhOQ0xFbEJRVWtzVVVGQlVTeEhRVUZITEVOQlFVTXNRMEZCUVN4
QlFVRkRMRWRCUVVjc1pVRkJaU3hKUVVGSkxFMUJRVTBzU1VGQlNTeERRVUZETEVkQlFVTXNZMEZC
WXl4SFFVRkRMRWRCUVVjc1NVRkJTU3hKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEUxQlFVMHNR
MEZCUXl4SlFVRkpMRTFCUVUwc1EwRkJRU3hCUVVGRExFZEJRVWNzUjBGQlJ5eERRVUZCTEVGQlFV
TXNRMEZCUXpzMlFrRkRja283UVVGRFJDeG5RMEZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhOUVVG
TkxFVkJRVVVzUlVGQlF5eEpRVUZKTEVWQlFVVXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhM
UVVGTExFVkJRVVVzUzBGQlN5eEZRVUZGTEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1RVRkJU
U3hEUVVGRExFbEJRVWtzVFVGQlRTeEZRVUZGTEVsQlFVa3NSVUZCUlN4SlFVRkpMRU5CUVVNc1Mw
RkJTeXhEUVVGRExGRkJRVkVzUlVGQlJTeEhRVUZITEVWQlFVVXNTMEZCU3l4RlFVRkZMRkZCUVZF
c1JVRkJSU3hSUVVGUkxFVkJRVU1zUTBGQlF5eERRVUZETzNsQ1FVTXhTanR4UWtGRFNqdEJRVU5F
TEhkQ1FVRkpMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zV1VGQldTeExRVUZMTEVsQlFVa3NU
VUZCVFN4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFVkJRVVU3UVVGRGFrUXNPRUpCUVUwc1NV
RkJTU3hMUVVGTExFTkJRVU1zYlVSQlFXMUVMRWRCUVVjc1MwRkJTeXhIUVVGSExGZEJRVmNzUjBG
QlJ5eE5RVUZOTEVOQlFVTXNRMEZCUXp0eFFrRkRka2M3UVVGRFJDdzBRa0ZCVVN4TlFVRk5MRU5C
UVVNc1EwRkJReXhEUVVGRE8wRkJRMnBDTERaQ1FVRkxMRU5CUVVNN1FVRkRSaXhwUTBGQlN5eERR
VUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRCUVVOdVFpeHJRMEZCVFN4RFFV
RkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEUxQlFVMHNRMEZCUXl4
RFFVRkRPMEZCUXk5Q0xHdERRVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhM
UVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdRVUZETDBJc2FVTkJRVXNzUTBGQlF5eEpR
VUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03UVVGRGRF
SXNhME5CUVUwc1IwRkJSeXhKUVVGSkxFTkJRVU03UVVGRFpDeG5RMEZCU1N4RFFVRkRMR05CUVdN
c1JVRkJSVHRCUVVOcVFpeHpRMEZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1z
VFVGQlRTeERRVUZETzBGQlF6TkNMSE5EUVVGTkxFZEJRVWNzU1VGQlNTeERRVUZETEV0QlFVc3NR
MEZCUXl4TlFVRk5MRU5CUVVNN1FVRkRNMElzZDBOQlFWRXNSMEZCUnl4SlFVRkpMRU5CUVVNc1Mw
RkJTeXhEUVVGRExGRkJRVkVzUTBGQlF6dEJRVU12UWl4eFEwRkJTeXhIUVVGSExFbEJRVWtzUTBG
QlF5eExRVUZMTEVOQlFVTXNUVUZCVFN4RFFVRkRPMEZCUXpGQ0xHOURRVUZKTEZWQlFWVXNSMEZC
Unl4RFFVRkRMRVZCUTJRc1ZVRkJWU3hGUVVGRkxFTkJRVU03TmtKQlEzQkNMRTFCUVUwN1FVRkRT
Q3h6UTBGQlRTeEhRVUZITEdOQlFXTXNRMEZCUXp0QlFVTjRRaXc0UTBGQll5eEhRVUZITEVsQlFV
a3NRMEZCUXpzMlFrRkRla0k3UVVGRFJDeHJRMEZCVFR0QlFVRkJMRUZCUTFZc05rSkJRVXNzUTBG
QlF6dEJRVU5HTEN0Q1FVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExGbEJRVmtzUTBGQlF5eE5RVUZO
TEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEJR
VU4wUXl4cFEwRkJTeXhEUVVGRExFTkJRVU1zUjBGQlJ5eE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFV
RkRMRTFCUVUwc1IwRkJSeXhIUVVGSExFTkJRVU1zUTBGQlF6dEJRVU4wUXl4cFEwRkJTeXhEUVVG
RExFVkJRVVVzUjBGQlJ5eEZRVUZETEZWQlFWVXNSVUZCUlN4TlFVRk5MRU5CUVVNc1RVRkJUU3hE
UVVGRExFMUJRVTBzU1VGQlNTeEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkJMRUZCUVVNc1EwRkJR
eXhEUVVGRExGVkJRVlVzUlVGQlJTeFRRVUZUTEVWQlFVVXNUVUZCVFN4RFFVRkRMRTFCUVUwc1Ew
RkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNVMEZCVXl4RlFVRkZMRmxCUVZr
c1JVRkJSU3hOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEUxQlFVMHNTVUZCU1N4SFFVRkhMRWxC
UVVrc1EwRkJReXhEUVVGQkxFRkJRVU1zUTBGQlF5eERRVUZETEZsQlFWa3NSVUZCUlN4WFFVRlhM
RVZCUVVVc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFV
RkRMRU5CUVVNc1YwRkJWeXhGUVVGRExFTkJRVU03UVVGRE1VOHNaME5CUVVrc1RVRkJUU3hGUVVG
Rk8wRkJRMUlzY1VOQlFVc3NRMEZCUXl4RlFVRkZMRU5CUVVNc1MwRkJTeXhIUVVGSExFTkJRVU1z
VFVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXl4TlFVRk5MRWxCUVVrc1IwRkJSeXhKUVVGSkxFTkJR
VU1zUTBGQlFTeEJRVUZETEVOQlFVTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExF
VkJRVVVzVFVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhEUVVG
RExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN05rSkJRM1JI
TzBGQlEwUXNOa0pCUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zWVVGQllTeERRVUZETEVsQlFVa3NR
MEZCUXl4TFFVRkxMRVZCUVVVc1RVRkJUU3hGUVVGRkxFMUJRVTBzUlVGQlJTeFJRVUZSTEVWQlFV
VXNTVUZCU1N4RFFVRkRMRVZCUVVVc1JVRkJSU3hOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEVW
QlFVVXNUVUZCVFN4RlFVRkZMRTFCUVUwc1EwRkJReXhEUVVGRE8wRkJRMnBITEdkRFFVRkpMRTlC
UVU4c1EwRkJReXhMUVVGTExGZEJRVmNzUlVGQlJUdEJRVU14UWl4MVEwRkJUeXhEUVVGRExFTkJR
VU03TmtKQlExbzdRVUZEUkN4blEwRkJTU3hIUVVGSExFVkJRVVU3UVVGRFRDeHhRMEZCU3l4SFFV
RkhMRXRCUVVzc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4
SFFVRkhMRWRCUVVjc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU55UXl4elEwRkJUU3hI
UVVGSExFMUJRVTBzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJR
eXhIUVVGSExFZEJRVWNzUTBGQlF5eERRVUZETzBGQlEyNURMSE5EUVVGTkxFZEJRVWNzVFVGQlRT
eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFZEJRVWNzUjBG
QlJ5eERRVUZETEVOQlFVTTdOa0pCUTNSRE8wRkJRMFFzYVVOQlFVc3NRMEZCUXl4SlFVRkpMRU5C
UVVNc1NVRkJTU3hEUVVGRExGbEJRVmtzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRM
RU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBGQlF6VkRMR3REUVVGTkxF
TkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVO
eVFpeHJRMEZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUlVGQlJTeERRVUZE
TEVOQlFVTTdRVUZEZEVJc2IwTkJRVkVzUjBGQlJ5eExRVUZMTEVOQlFVTXNTMEZCU3l4RFFVRkRM
RXRCUVVzc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TFFV
RkxMRU5CUVVNc1MwRkJTeXhEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4
RFFVRkRPMEZCUTI1RkxHbERRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhE
UVVGRE8wRkJRM0pDTEd0RFFVRk5PMEZCUVVFc1FVRkRWaXcyUWtGQlN5eERRVUZETzBGQlEwWXNi
VU5CUVU4c1NVRkJTU3hEUVVGRE8wRkJRVUVzY1VKQlEyWTdhVUpCUTBvN1FVRkRSQ3gxUWtGQlR5
eEpRVUZKTEVOQlFVTTdZVUZEWmp0VFFVTkJMRU5CUVVNN08wRkJSVVlzV1VGQlNTeExRVUZMTEVk
QlFVY3NRMEZCUXl4WlFVRlZPMEZCUTNaQ0xHZENRVUZKTEV0QlFVc3NSMEZCU1N4RlFVRkRMRWRC
UVVjc1JVRkJReXhEUVVGRE8wRkJRMjVDTERCQ1FVRlZMRVZCUVVNc1UwRkJVeXhWUVVGVkxFTkJR
VU1zUjBGQlJ5eEZRVUZGTEVsQlFVa3NSVUZCUlR0QlFVTnNReXgzUWtGQlNTeEpRVUZKTEVOQlFV
TXNSVUZCUlN4RFFVRkRMRTFCUVUwc1JVRkJSVHRCUVVOb1FpdzBRa0ZCU1N4RFFVRkRMRVZCUVVV
c1EwRkJReXhOUVVGTkxFTkJRVU1zVlVGQlZTeERRVUZETEVkQlFVY3NSVUZCUlN4SlFVRkpMRU5C
UVVNc1EwRkJRenR4UWtGRGVFTXNUVUZCVFR0QlFVTklMRGhDUVVGTkxFbEJRVWtzUzBGQlN5eERR
VUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPM0ZDUVVONFFqdHBRa0ZEU2p0QlFVTk1MSGRDUVVGUkxF
VkJRVU1zYTBKQlFWVXNTMEZCU3l4RlFVRkZPMEZCUTJ4Q0xIZENRVUZKTEVOQlFVTXNUVUZCVFN4
SFFVRkhMRXRCUVVzc1EwRkJRenRCUVVOd1FpeDNRa0ZCU1N4RFFVRkRMRXRCUVVzc1IwRkJSeXhK
UVVGSkxFTkJRVU1zUzBGQlN5eEhRVUZITEVsQlFVa3NRMEZCUXl4SlFVRkpMRWRCUVVjc1MwRkJT
eXhEUVVGRE8wRkJRelZETEhkQ1FVRkpMRU5CUVVNc1VVRkJVU3hIUVVGSExFbEJRVWtzUTBGQlF5
eE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRPMEZCUTJoRExIZENRVUZKTEVOQlFVTXNUVUZCVFN4
SFFVRkhMRWxCUVVrc1EwRkJReXhQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETEV0QlFVc3NSMEZC
Unl4RlFVRkZMRU5CUVVNN1FVRkROME1zZDBKQlFVa3NRMEZCUXl4alFVRmpMRWRCUVVjc1EwRkJR
eXhUUVVGVExFTkJRVU1zUTBGQlF6dEJRVU5zUXl4M1FrRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5
eEZRVUZETEZWQlFWVXNSVUZCUXl4RFFVRkRMRVZCUVVNc1dVRkJXU3hGUVVGRExFTkJRVU1zUlVG
QlF5eFRRVUZUTEVWQlFVTXNRMEZCUXl4RlFVRkRMRmRCUVZjc1JVRkJReXhEUVVGRExFVkJRVU1z
UTBGQlF6dEJRVU4wUlN4M1FrRkJTU3hKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEUxQlFVMHNS
VUZCUlN4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFdEJRVXNzUjBGQlJ5eERRVUZETEVOQlFV
TXNSVUZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVOdVJDeDNRa0ZCU1N4RFFVRkRMRTFCUVUw
c1IwRkJSeXhEUVVGRExFTkJRVU03UVVGRGFFSXNNa0pCUVU4c1NVRkJTU3hEUVVGRE8ybENRVU5t
TzBGQlEwd3NjVUpCUVVzc1JVRkJReXhwUWtGQldUdEJRVU5XTEhkQ1FVRkpMRVZCUVVVc1IwRkJS
eXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUTNoQ0xI
ZENRVUZKTEVOQlFVTXNUVUZCVFN4SlFVRkpMRVZCUVVVc1EwRkJRenRCUVVOc1FpeDNRa0ZCU1N4
RFFVRkRMRTFCUVUwc1JVRkJSU3hEUVVGRE8wRkJRMlFzZDBKQlFVa3NRMEZCUXl4TlFVRk5MRVZC
UVVVc1EwRkJRenRCUVVOa0xIZENRVUZKTEVOQlFVTXNTMEZCU3l4SlFVRkpMRVZCUVVVc1EwRkJR
enRCUVVOcVFpeDNRa0ZCU1N4RFFVRkRMRTlCUVU4c1NVRkJTU3hGUVVGRkxFTkJRVU03UVVGRGJr
SXNkMEpCUVVrc1MwRkJTeXhIUVVGSExFVkJRVVVzUTBGQlF5eExRVUZMTEVOQlFVTXNhVUpCUVds
Q0xFTkJRVU1zUTBGQlF6dEJRVU40UXl4M1FrRkJTU3hMUVVGTExFVkJRVVU3UVVGRFVDdzBRa0ZC
U1N4RFFVRkRMRkZCUVZFc1JVRkJSU3hEUVVGRE8wRkJRMmhDTERSQ1FVRkpMRU5CUVVNc1RVRkJU
U3hEUVVGRExGTkJRVk1zUlVGQlJTeERRVUZETzNGQ1FVTXpRaXhOUVVGTk8wRkJRMGdzTkVKQlFV
a3NRMEZCUXl4TlFVRk5MRU5CUVVNc1YwRkJWeXhGUVVGRkxFTkJRVU03Y1VKQlF6ZENPMEZCUTBR
c2QwSkJRVWtzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4TlFVRk5MRVZCUVVVc1NVRkJTU3hE
UVVGRExFMUJRVTBzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJR
enM3UVVGRmFFUXNkMEpCUVVrc1EwRkJReXhOUVVGTkxFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFV
MHNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03UVVGRGJrTXNNa0pCUVU4
c1JVRkJSU3hEUVVGRE8ybENRVU5pTzBGQlEwd3NjVUpCUVVzc1JVRkJReXhsUVVGVkxFVkJRVVVz
UlVGQlJUdEJRVU5hTEhkQ1FVRkpMRWRCUVVjc1IwRkJSeXhGUVVGRkxFTkJRVU1zVFVGQlRTeERR
VUZETzBGQlEzQkNMSGRDUVVGSkxFdEJRVXNzUjBGQlJ5eEZRVUZGTEVOQlFVTXNTMEZCU3l4RFFV
RkRMR1ZCUVdVc1EwRkJReXhEUVVGRE96dEJRVVYwUXl4M1FrRkJTU3hEUVVGRExFMUJRVTBzUjBG
QlJ5eEZRVUZGTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJRenRCUVVNdlFpeDNRa0ZC
U1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEUxQlFVMHNR
MEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eE5RVUZOTEVkQlFV
TXNSMEZCUnl4SFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE96dEJRVVU1UkN4M1FrRkJTU3hEUVVG
RExFMUJRVTBzU1VGQlNTeEhRVUZITEVOQlFVTTdRVUZEYmtJc2QwSkJRVWtzVVVGQlVTeEhRVUZI
TEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1MwRkJTeXhEUVVGRExHVkJRV1VzUTBGQlF5eERR
VUZETzBGQlEycEVMSGRDUVVGSkxFTkJRVU1zUzBGQlN5eEhRVUZITEVsQlFVa3NRMEZCUXl4TFFV
RkxMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNTMEZCU3l4
RFFVRkRMRTFCUVUwc1IwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU4yUkN4M1FrRkJTU3hE
UVVGRExFOUJRVThzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRTFCUVUwc1EwRkJR
eXhEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4TlFVRk5MRWRCUVVNc1Ew
RkJReXhEUVVGRExFTkJRVU03TzBGQlJUZEVMSGRDUVVGSkxFdEJRVXNzUTBGQlF5eE5RVUZOTEVk
QlFVTXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhSUVVGUkxFbEJRVWtzUzBGQlN5eERRVUZE
TEUxQlFVMHNSMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRjRVFzZDBKQlFVa3NRMEZCUXl4SFFVRkhM
RWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUzBGQlN5eERRVUZET3p0QlFVVXhRaXgzUWtGQlNT
eERRVUZETEUxQlFVMHNSMEZCUnl4RlFVRkRMRlZCUVZVc1JVRkJSU3hKUVVGSkxFTkJRVU1zVFVG
QlRTeERRVUZETEZWQlFWVTdRVUZETDBNc2FVTkJRVk1zUlVGQlJTeEpRVUZKTEVOQlFVTXNVVUZC
VVN4SFFVRkRMRU5CUVVNN1FVRkRNVUlzYjBOQlFWa3NSVUZCUlN4SlFVRkpMRU5CUVVNc1RVRkJU
U3hEUVVGRExGbEJRVms3UVVGRGRFTXNiVU5CUVZjc1JVRkJSU3hMUVVGTExFZEJRMlFzUTBGQlF5
eExRVUZMTEVOQlFVTXNUVUZCVFN4TFFVRkxMRkZCUVZFc1EwRkJReXhOUVVGTkxFZEJRVWNzU1VG
QlNTeERRVUZETEUxQlFVMHNRMEZCUXl4WlFVRlpMRWRCUVVjc1EwRkJReXhEUVVGQkxFZEJRVWtz
VVVGQlVTeERRVUZETEZGQlFWRXNRMEZCUXl4TlFVRk5MRWRCUVVjc1MwRkJTeXhEUVVGRExFMUJR
VTBzUTBGQlF5eERRVUZETEUxQlFVMHNSMEZCUnl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExF
TkJRVU1zVFVGQlRTeEhRVU55U1N4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExGbEJRVmtzUjBG
QlJ5eEhRVUZITzNGQ1FVTnFReXhEUVVGRE96dEJRVVZLTEhkQ1FVRkpMRWxCUVVrc1EwRkJReXhQ
UVVGUExFTkJRVU1zVFVGQlRTeEZRVUZGTzBGQlEzSkNMRFJDUVVGSkxFTkJRVU1zVFVGQlRTeERR
VUZETEV0QlFVc3NSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJT
eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUjBG
QlJ5eEhRVUZITEVOQlFVTXNRMEZCUXp0eFFrRkRlRVE3UVVGRFJDd3lRa0ZCVHl4SlFVRkpMRU5C
UVVNN2FVSkJRMlk3UVVGRFRDeHZRa0ZCU1N4RlFVRkRMR2RDUVVGWk8wRkJRMVFzZDBKQlFVa3NR
MEZCUXl4TFFVRkxMRWRCUVVjc1NVRkJTU3hEUVVGRE8wRkJRMnhDTERKQ1FVRlBMRWxCUVVrc1Ew
RkJRenRwUWtGRFpqdEJRVU5NTEc5Q1FVRkpMRVZCUVVNc1kwRkJWU3hEUVVGRExFVkJRVVU3UVVG
RFZpeDNRa0ZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZE
TEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8ybENRVU51UXp0QlFVTk1M
SGxDUVVGVExFVkJRVU1zY1VKQlFWazdRVUZEWkN4M1FrRkJTU3hKUVVGSkxFZEJRVWNzU1VGQlNT
eERRVUZETEU5QlFVOHNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBG
QlF5eFBRVUZQTEVOQlFVTXNUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1z
VFVGQlRTeERRVUZETEVOQlFVTTdRVUZETTBVc01rSkJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNU
VUZCVFN4SFFVRkhMRVZCUVVVc1IwRkJSeXhMUVVGTExFZEJRVU1zUlVGQlJTeERRVUZCTEVkQlFV
a3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEU5
QlFVOHNRMEZCUXl4TFFVRkxMRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU03YVVKQlF6bEZPMEZC
UTB3c05rSkJRV0VzUlVGQlF5eDVRa0ZCV1R0QlFVTnNRaXgzUWtGQlNTeEpRVUZKTEVkQlFVY3NT
VUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJRenRCUVVOMFFpeDNRa0ZCU1N4SlFVRkpMRU5CUVVNc1RV
RkJUU3hIUVVGSExFVkJRVVVzUlVGQlJUdEJRVU5zUWl3MFFrRkJTU3hKUVVGSkxFbEJRVWtzUTBG
QlF5eE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxFZEJRVU1z
U1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPM0ZDUVVOcVJEdEJRVU5FTERKQ1FVRlBM
RU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFV
RkRMRWxCUVVVc1NVRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eEZRVUZGTEVkQlFVY3NTMEZCU3l4
SFFVRkRMRVZCUVVVc1EwRkJRU3hEUVVGRExFTkJRVVVzVDBGQlR5eERRVUZETEV0QlFVc3NSVUZC
UlN4RlFVRkZMRU5CUVVNc1EwRkJRenRwUWtGREwwVTdRVUZEVEN3MFFrRkJXU3hGUVVGRExIZENR
VUZaTzBGQlEycENMSGRDUVVGSkxFZEJRVWNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RlFV
RkZMRU5CUVVNN1FVRkRNMElzZDBKQlFVa3NRMEZCUXl4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVG
RExFZEJRVWNzUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hE
UVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzBGQlF6VkRMREpDUVVGUExFZEJRVWNzUjBGQlJ5eEpR
VUZKTEVOQlFVTXNZVUZCWVN4RlFVRkZMRWRCUVVjc1NVRkJTU3hIUVVGSExFTkJRVU1zUjBGQlF5
eEhRVUZITEVOQlFVTTdhVUpCUTNCRU8wRkJRMHdzYjBKQlFVa3NSVUZCUXl4blFrRkJXVHRCUVVO
VUxIZENRVUZKTEVsQlFVa3NRMEZCUXl4SlFVRkpMRVZCUVVVN1FVRkRXQ3dyUWtGQlR5eEpRVUZK
TEVOQlFVTXNSMEZCUnl4RFFVRkRPM0ZDUVVOdVFqdEJRVU5FTEhkQ1FVRkpMRU5CUVVNc1NVRkJT
U3hEUVVGRExFMUJRVTBzUlVGQlJTeEpRVUZKTEVOQlFVTXNTVUZCU1N4SFFVRkhMRWxCUVVrc1Ew
RkJRenM3UVVGRmJrTXNkMEpCUVVrc1MwRkJTeXhGUVVOTUxFdEJRVXNzUlVGRFRDeFRRVUZUTEVW
QlExUXNTMEZCU3l4RlFVTk1MRWRCUVVjc1JVRkRTQ3hMUVVGTExFTkJRVU03UVVGRFZpeDNRa0ZC
U1N4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFVkJRVVU3UVVGRFlpdzBRa0ZCU1N4RFFVRkRM
RTFCUVUwc1IwRkJSeXhGUVVGRkxFTkJRVU03UVVGRGFrSXNORUpCUVVrc1EwRkJReXhMUVVGTExF
ZEJRVWNzUlVGQlJTeERRVUZETzNGQ1FVTnVRanRCUVVORUxIZENRVUZKTEV0QlFVc3NSMEZCUnl4
SlFVRkpMRU5CUVVNc1lVRkJZU3hGUVVGRkxFTkJRVU03UVVGRGFrTXNlVUpCUVVzc1NVRkJTU3hE
UVVGRExFZEJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSMEZCUnl4TFFVRkxMRU5CUVVNc1RVRkJU
U3hGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTzBGQlEyaERMR2xEUVVGVExFZEJRVWNzU1VGQlNT
eERRVUZETEUxQlFVMHNRMEZCUXl4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBG
QlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJRM0JF
TERSQ1FVRkpMRk5CUVZNc1MwRkJTeXhEUVVGRExFdEJRVXNzU1VGQlNTeFRRVUZUTEVOQlFVTXNR
MEZCUXl4RFFVRkRMRU5CUVVNc1RVRkJUU3hIUVVGSExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFV
TXNRMEZCUXl4TlFVRk5MRU5CUVVFc1FVRkJReXhGUVVGRk8wRkJRMmhGTEdsRFFVRkxMRWRCUVVj
c1UwRkJVeXhEUVVGRE8wRkJRMnhDTEdsRFFVRkxMRWRCUVVjc1EwRkJReXhEUVVGRE8wRkJRMVlz
WjBOQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFbEJRVWtzUlVGQlJTeE5R
VUZOTzNsQ1FVTnFRenR4UWtGRFNqdEJRVU5FTEhkQ1FVRkpMRXRCUVVzc1JVRkJSVHRCUVVOUUxE
WkNRVUZMTEVkQlFVY3NTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUTBG
QlF5eHBRa0ZCYVVJc1EwRkJReXhEUVVGRE8wRkJRekZETERSQ1FVRkpMRXRCUVVzc1JVRkJSU3hK
UVVGSkxFTkJRVU1zVVVGQlVTeEpRVUZKTEV0QlFVc3NRMEZCUXl4TlFVRk5MRU5CUVVNN1FVRkRl
a01zTkVKQlFVa3NRMEZCUXl4TlFVRk5MRWRCUVVjc1JVRkJReXhWUVVGVkxFVkJRVVVzU1VGQlNT
eERRVUZETEUxQlFVMHNRMEZCUXl4VFFVRlRPMEZCUTJwRExIRkRRVUZUTEVWQlFVVXNTVUZCU1N4
RFFVRkRMRkZCUVZFc1IwRkJReXhEUVVGRE8wRkJRekZDTEhkRFFVRlpMRVZCUVVVc1NVRkJTU3hE
UVVGRExFMUJRVTBzUTBGQlF5eFhRVUZYTzBGQlEzSkRMSFZEUVVGWExFVkJRVVVzUzBGQlN5eEhR
VUZITEV0QlFVc3NRMEZCUXl4TFFVRkxMRU5CUVVNc1RVRkJUU3hIUVVGRExFTkJRVU1zUTBGQlF5
eERRVUZETEUxQlFVMHNSMEZCUXl4TFFVRkxMRU5CUVVNc1MwRkJTeXhEUVVGRExFMUJRVTBzUjBG
QlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU1z
UTBGQlF5eERRVUZETEVOQlFVTXNUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJR
VU1zVjBGQlZ5eEhRVUZITEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhOUVVGTkxF
VkJRVU1zUTBGQlF6dEJRVU01U2l3MFFrRkJTU3hEUVVGRExFMUJRVTBzU1VGQlNTeExRVUZMTEVO
QlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRlRUlzTkVKQlFVa3NRMEZCUXl4TFFVRkxMRWxC
UVVrc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBGQlEzWkNMRFJDUVVGSkxFTkJR
VU1zVDBGQlR5eEhRVUZITEV0QlFVc3NRMEZCUXp0QlFVTnlRaXcwUWtGQlNTeERRVUZETEUxQlFV
MHNSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF6dEJRVU5xUXl3
MFFrRkJTU3hKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEUxQlFVMHNSVUZCUlR0QlFVTnlRaXhu
UTBGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4TFFVRkxMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJR
VU1zVFVGQlRTeEZRVUZGTEVsQlFVa3NRMEZCUXl4TlFVRk5MRWxCUVVrc1NVRkJTU3hEUVVGRExF
MUJRVTBzUTBGQlF5eERRVUZETzNsQ1FVTnFSVHRCUVVORUxEUkNRVUZKTEVOQlFVTXNTMEZCU3l4
SFFVRkhMRXRCUVVzc1EwRkJRenRCUVVOdVFpdzBRa0ZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhK
UVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEV0QlFVc3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJR
eXhEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdRVUZEYWtRc05FSkJRVWtzUTBGQlF5
eFBRVUZQTEVsQlFVa3NTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJRM3BDTERa
Q1FVRkxMRWRCUVVjc1NVRkJTU3hEUVVGRExHRkJRV0VzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZC
U1N4RlFVRkZMRWxCUVVrc1EwRkJReXhGUVVGRkxFVkJRVVVzU1VGQlNTeEZRVUZGTEV0QlFVc3NR
MEZCUXl4TFFVRkxMRU5CUVVNc1JVRkJReXhKUVVGSkxFTkJRVU1zWTBGQll5eERRVUZETEVsQlFV
a3NRMEZCUXl4alFVRmpMRU5CUVVNc1RVRkJUU3hIUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVO
QlFVTTdRVUZEY2tnc05FSkJRVWtzU1VGQlNTeERRVUZETEVsQlFVa3NTVUZCU1N4SlFVRkpMRU5C
UVVNc1RVRkJUU3hGUVVGRkxFbEJRVWtzUTBGQlF5eEpRVUZKTEVkQlFVY3NTMEZCU3l4RFFVRkRP
MEZCUTJoRUxEUkNRVUZKTEV0QlFVc3NSVUZCUlN4UFFVRlBMRXRCUVVzc1EwRkJReXhMUVVOdVFp
eFBRVUZQTzNGQ1FVTm1PMEZCUTBRc2QwSkJRVWtzU1VGQlNTeERRVUZETEUxQlFVMHNTMEZCU3l4
RlFVRkZMRVZCUVVVN1FVRkRjRUlzSzBKQlFVOHNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJRenR4
UWtGRGJrSXNUVUZCVFR0QlFVTklMQ3RDUVVGUExFbEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNk
MEpCUVhkQ0xFbEJRVVVzU1VGQlNTeERRVUZETEZGQlFWRXNSMEZCUXl4RFFVRkRMRU5CUVVFc1FV
RkJReXhIUVVGRExIZENRVUYzUWl4SFFVRkRMRWxCUVVrc1EwRkJReXhaUVVGWkxFVkJRVVVzUlVG
RGRFY3NSVUZCUXl4SlFVRkpMRVZCUVVVc1JVRkJSU3hGUVVGRkxFdEJRVXNzUlVGQlJTeEpRVUZK
TEVWQlFVVXNTVUZCU1N4RlFVRkZMRWxCUVVrc1EwRkJReXhSUVVGUkxFVkJRVU1zUTBGQlF5eERR
VUZETzNGQ1FVTjZSRHRwUWtGRFNqdEJRVU5NTEcxQ1FVRkhMRVZCUVVNc1UwRkJVeXhIUVVGSExF
ZEJRVWM3UVVGRFdDeDNRa0ZCU1N4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFbEJRVWtzUlVG
QlJTeERRVUZETzBGQlEzQkNMSGRDUVVGSkxFOUJRVThzUTBGQlF5eExRVUZMTEZkQlFWY3NSVUZC
UlR0QlFVTXhRaXdyUWtGQlR5eERRVUZETEVOQlFVTTdjVUpCUTFvc1RVRkJUVHRCUVVOSUxDdENR
VUZQTEVsQlFVa3NRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJRenR4UWtGRGNrSTdhVUpCUTBvN1FV
RkRUQ3h4UWtGQlN5eEZRVUZETEZOQlFWTXNTMEZCU3l4RFFVRkRMRk5CUVZNc1JVRkJSVHRCUVVO
NFFpeDNRa0ZCU1N4RFFVRkRMR05CUVdNc1EwRkJReXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZE
TEVOQlFVTTdhVUpCUTNaRE8wRkJRMHdzZDBKQlFWRXNSVUZCUXl4VFFVRlRMRkZCUVZFc1IwRkJS
enRCUVVOeVFpd3lRa0ZCVHl4SlFVRkpMRU5CUVVNc1kwRkJZeXhEUVVGRExFZEJRVWNzUlVGQlJT
eERRVUZETzJsQ1FVTndRenRCUVVOTUxEWkNRVUZoTEVWQlFVTXNVMEZCVXl4aFFVRmhMRWRCUVVj
N1FVRkRMMElzTWtKQlFVOHNTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhKUVVGSkxFTkJRVU1z
WTBGQll5eERRVUZETEVsQlFVa3NRMEZCUXl4alFVRmpMRU5CUVVNc1RVRkJUU3hIUVVGRExFTkJR
VU1zUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRPMmxDUVVOdVJqdEJRVU5NTEhkQ1FV
RlJMRVZCUVVNc2IwSkJRVms3UVVGRFlpd3lRa0ZCVHl4SlFVRkpMRU5CUVVNc1kwRkJZeXhEUVVG
RExFbEJRVWtzUTBGQlF5eGpRVUZqTEVOQlFVTXNUVUZCVFN4SFFVRkRMRU5CUVVNc1EwRkJReXhE
UVVGRE8ybENRVU0xUkR0QlFVTk1MSGxDUVVGVExFVkJRVU1zVTBGQlV5eExRVUZMTEVOQlFVTXNV
MEZCVXl4RlFVRkZPMEZCUXpWQ0xIZENRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRk5CUVZNc1Ew
RkJReXhEUVVGRE8ybENRVU42UWl4RlFVRkRMRUZCUVVNc1EwRkJRenRCUVVOU0xHbENRVUZMTEVO
QlFVTXNUMEZCVHl4SFFVRkhMRVZCUVVVc1EwRkJRenRCUVVOdVFpeHBRa0ZCU3l4RFFVRkRMR0ZC
UVdFc1IwRkJSeXhUUVVGVExGTkJRVk1zUTBGQlF5eEZRVUZGTEVWQlFVTXNSMEZCUnl4RlFVRkRM
SGxDUVVGNVFpeEZRVUZETEZGQlFWRTdhMEpCUXpWRk96dEJRVWRPTEhsQ1FVRlRMRXRCUVVzc1Ew
RkJReXhMUVVGTExFVkJRVVVzUjBGQlJ5eEZRVUZGTzBGQlEzcENMREpDUVVGUExFZEJRVWNzUTBG
QlF5eE5RVUZOTEVkQlFVY3NSMEZCUnl4RFFVRkRMRTFCUVUwc1EwRkJReXhOUVVGTkxFTkJRVU1z
UzBGQlN5eEZRVUZGTEVkQlFVY3NRMEZCUXl4TlFVRk5MRWRCUVVNc1IwRkJSeXhEUVVGRExFTkJR
VU03YVVKQlF6bEVPenRCUVVkRUxHOUNRVUZKTEU5QlFVOHNSMEZCUXl4UlFVRlJMRU5CUVVFN1FV
RkRjRUlzZDBKQlFVOHNlVUpCUVhsQ08wRkJRMmhETEhsQ1FVRkxMRU5CUVVNN1FVRkROa0lzTkVK
QlFVY3NSMEZCUnl4RFFVRkRMRTFCUVUwc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZE
TEVOQlFVTXNTMEZCU3l4TlFVRk5MRVZCUVVVN1FVRkRiRU1zYVVOQlFVc3NRMEZCUXl4RFFVRkRM
RVZCUVVNc1EwRkJReXhEUVVGRExFTkJRVU03UVVGRFdDeG5RMEZCU1N4RFFVRkRMRXRCUVVzc1Ew
RkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dDVRa0ZEYkVJc1RVRkJUU3hKUVVGSExFZEJRVWNzUTBG
QlF5eE5RVUZOTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNz
U1VGQlNTeEZRVUZGTzBGQlEzWkRMR2xEUVVGTExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNR
MEZCUXl4RFFVRkRPMEZCUTFnc1owTkJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNTMEZCU3l4RFFV
RkRMRU5CUVVNN2VVSkJRMjVDTEUxQlFVMDdRVUZEVEN4blEwRkJTU3hEUVVGRExFdEJRVXNzUTBG
QlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0NVFrRkRiRUk3UVVGRFJDdzBRa0ZCUnl4SFFVRkhMRU5C
UVVNc1RVRkJUU3hGUVVGRkxFOUJRVThzUlVGQlJTeERRVUZET3p0QlFVVTFSQ3c0UWtGQlRUdEJR
VUZCTEVGQlEwNHNlVUpCUVVzc1EwRkJRenRCUVVGRExDdENRVUZQTEVWQlFVVXNRMEZCUXp0QlFV
TnFRaXc0UWtGQlRUdEJRVUZCTEVGQlEwNHNlVUpCUVVzc1EwRkJRenRCUVVNMlFpdzBRa0ZCU1N4
RFFVRkRMRkZCUVZFc1JVRkJSU3hEUVVGRE8wRkJRMmhDTEN0Q1FVRlBMRVZCUVVVc1EwRkJRenM3
UVVGRk4wTXNPRUpCUVUwN1FVRkJRU3hCUVVOT0xIbENRVUZMTEVOQlFVTTdRVUZCUXl3MFFrRkJT
U3hEUVVGRExFdEJRVXNzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4QlFVRkRMRTlCUVU4c1JV
RkJSU3hEUVVGRE8wRkJRM0JETERoQ1FVRk5PMEZCUVVFc1FVRkRUaXg1UWtGQlN5eERRVUZETzBG
QlF6UkNMRFJDUVVGSkxFTkJRVU1zVVVGQlVTeEZRVUZGTEVOQlFVTTdPenM3UVVGSmFFSXNORUpC
UVVrc1NVRkJTU3hEUVVGRExHTkJRV01zUTBGQlF5eEpRVUZKTEVOQlFVTXNZMEZCWXl4RFFVRkRM
RTFCUVUwc1IwRkJReXhEUVVGRExFTkJRVU1zUzBGQlN5eExRVUZMTEVWQlFVVTdRVUZETDBRc2JV
TkJRVThzUlVGQlJTeERRVUZETzNsQ1FVTllMRTFCUVUwN1FVRkRUQ3dyUWtGQlJ5eERRVUZETEUx
QlFVMHNSMEZCUnl4SFFVRkhMRU5CUVVNc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZE
TEVWQlFVVXNSMEZCUnl4RFFVRkRMRTFCUVUwc1IwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEJR
VU5vUkN4dFEwRkJUeXhsUVVGbExFTkJRVU03ZVVKQlEzaENPenRCUVVWdVF5dzRRa0ZCVFR0QlFV
RkJMRUZCUTA0c2VVSkJRVXNzUTBGQlF6dEJRVUZGTEN0Q1FVRlBMRVZCUVVVc1EwRkJRenRCUVVO
c1FpdzRRa0ZCVFR0QlFVRkJMRUZCUTA0c2VVSkJRVXNzUTBGQlF6dEJRVU5LTERSQ1FVRkpMRU5C
UVVNc1VVRkJVU3hGUVVGRkxFTkJRVU03UVVGRGFFSXNLMEpCUVU4c1JVRkJSU3hEUVVGRE96dEJR
VVZhTERoQ1FVRk5PMEZCUVVFc1FVRkRUaXg1UWtGQlN5eERRVUZETzBGQlFVTXNLMEpCUVU4c1JV
RkJSU3hEUVVGRE8wRkJRMnBDTERoQ1FVRk5PMEZCUVVFc1FVRkRUaXg1UWtGQlN5eERRVUZETzBG
QlFVTXNLMEpCUVU4c1JVRkJSU3hEUVVGRE8wRkJRMnBDTERoQ1FVRk5PMEZCUVVFc1FVRkRUaXg1
UWtGQlN5eERRVUZETzBGQlFVVXNLMEpCUVU4c1JVRkJSU3hEUVVGRE8wRkJRMnhDTERoQ1FVRk5P
MEZCUVVFc1FVRkRUaXg1UWtGQlN5eEZRVUZGTzBGQlF6SkNMRFJDUVVGSkxFTkJRVU1zVVVGQlVT
eEZRVUZGTEVOQlFVTTdRVUZEYUVJc05FSkJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNTMEZCU3l4
RFFVRkRMRU5CUVVNN1FVRkRiRUlzSzBKQlFVOHNSVUZCUlN4RFFVRkRPenRCUVVVMVF5dzRRa0ZC
VFR0QlFVRkJMRUZCUTA0c2VVSkJRVXNzUlVGQlJUdEJRVUZETEN0Q1FVRlBMRVZCUVVVc1EwRkJR
enRCUVVOc1FpdzRRa0ZCVFR0QlFVRkJMRUZCUTA0c2VVSkJRVXNzUlVGQlJUdEJRVUZETEN0Q1FV
RlBMRVZCUVVVc1EwRkJRenRCUVVOc1FpdzRRa0ZCVFR0QlFVRkJMRUZCUTA0c2VVSkJRVXNzUlVG
QlJUdEJRVUZETEN0Q1FVRlBMRVZCUVVVc1EwRkJRenRCUVVOc1FpdzRRa0ZCVFR0QlFVRkJMRUZC
UTA0c2VVSkJRVXNzUlVGQlJUdEJRVUZETEN0Q1FVRlBMRVZCUVVVc1EwRkJRenRCUVVOc1FpdzRR
a0ZCVFR0QlFVRkJMRUZCUTA0c2VVSkJRVXNzUlVGQlJUdEJRVUZETERSQ1FVRkpMRU5CUVVNc1VV
RkJVU3hGUVVGRkxFTkJRVU1zUVVGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXp0QlFVTnVReXc0UWtG
QlRUdEJRVUZCTEVGQlEwNHNlVUpCUVVzc1JVRkJSVHRCUVVGRExEUkNRVUZKTEVOQlFVTXNVVUZC
VVN4RlFVRkZMRU5CUVVNc1FVRkJReXhQUVVGUExFVkJRVVVzUTBGQlF6dEJRVU51UXl3NFFrRkJU
VHRCUVVGQkxFRkJRMDRzZVVKQlFVc3NSVUZCUlR0QlFVRkRMQ3RDUVVGUExFVkJRVVVzUTBGQlF6
dEJRVU5zUWl3NFFrRkJUVHRCUVVGQkxFRkJRMDRzZVVKQlFVc3NSVUZCUlR0QlFVRkRMQ3RDUVVG
UExFVkJRVVVzUTBGQlF6dEJRVU5zUWl3NFFrRkJUVHRCUVVGQkxFRkJRMDRzZVVKQlFVc3NSVUZC
UlR0QlFVRkRMQ3RDUVVGUExFVkJRVVVzUTBGQlF6dEJRVU5zUWl3NFFrRkJUVHRCUVVGQkxFRkJR
MDRzZVVKQlFVc3NSVUZCUlR0QlFVRkRMQ3RDUVVGUExFVkJRVVVzUTBGQlF6dEJRVU5zUWl3NFFr
RkJUVHRCUVVGQkxFRkJRMDRzZVVKQlFVc3NSVUZCUlR0QlFVTk1MRFJDUVVGSkxFTkJRVU1zUzBG
QlN5eERRVUZETEVkQlFVY3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRCUVVOMlFpdzBRa0ZC
U1N4RFFVRkRMRkZCUVZFc1JVRkJSU3hEUVVGRE8wRkJRMmhDTERSQ1FVRkpMRU5CUVVNc1MwRkJT
eXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZET3p0QlFVVndRaXc0UWtGQlRUdEJRVUZCTEVGQlEw
NHNlVUpCUVVzc1JVRkJSVHRCUVVOTUxEUkNRVUZKTEVOQlFVTXNVVUZCVVN4RlFVRkZMRU5CUVVN
N1FVRkRhRUlzSzBKQlFVOHNSVUZCUlN4RFFVRkRPenRCUVVWYUxEaENRVUZOTzBGQlFVRXNRVUZE
VGl4NVFrRkJTeXhGUVVGRk8wRkJRVU1zSzBKQlFVOHNSVUZCUlN4RFFVRkRPMEZCUTJ4Q0xEaENR
VUZOTzBGQlFVRXNRVUZEVGl4NVFrRkJTeXhGUVVGRk8wRkJRVU1zSzBKQlFVOHNSVUZCUlN4RFFV
RkRPMEZCUTJ4Q0xEaENRVUZOTzBGQlFVRXNRVUZEVGl4NVFrRkJTeXhGUVVGRk8wRkJRVU1zSzBK
QlFVOHNSVUZCUlN4RFFVRkRPMEZCUTJ4Q0xEaENRVUZOTzBGQlFVRXNRVUZEVGl4NVFrRkJTeXhG
UVVGRk8wRkJRVU1zSzBKQlFVOHNSVUZCUlN4RFFVRkRPMEZCUTJ4Q0xEaENRVUZOTzBGQlFVRXNR
VUZEVGl4NVFrRkJTeXhGUVVGRk8wRkJRVU1zSzBKQlFVOHNSVUZCUlN4RFFVRkRPMEZCUTJ4Q0xE
aENRVUZOTzBGQlFVRXNRVUZEVGl4NVFrRkJTeXhGUVVGRk96dEJRVU5RTERoQ1FVRk5PMEZCUVVF
c1FVRkRUaXg1UWtGQlN5eEZRVUZGTzBGQlFVTXNORUpCUVVrc1EwRkJReXhSUVVGUkxFVkJRVVVz
UTBGQlF5eEJRVUZETEU5QlFVOHNSVUZCUlN4RFFVRkRPMEZCUTI1RExEaENRVUZOTzBGQlFVRXNR
VUZEVGl4NVFrRkJTeXhGUVVGRk8wRkJRVU1zTkVKQlFVa3NRMEZCUXl4UlFVRlJMRVZCUVVVc1Ew
RkJReXhCUVVGRExFOUJRVThzUlVGQlJTeERRVUZETzBGQlEyNURMRGhDUVVGTk8wRkJRVUVzUVVG
RFRpeDVRa0ZCU3l4RlFVRkZPMEZCUVVNc01rSkJRVWNzUTBGQlF5eE5RVUZOTEVkQlFVY3NTMEZC
U3l4RFFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eFBRVUZQTEVOQlFVTXNU
VUZCVFN4RlFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFRkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFV
TTdRVUZETDBRc09FSkJRVTA3UVVGQlFTeEJRVU5PTEhsQ1FVRkxMRVZCUVVVN1FVRkJReXd5UWtG
QlJ5eERRVUZETEUxQlFVMHNSMEZCUnl4TFFVRkxMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1z
UTBGQlF5eERRVUZETEU5QlFVOHNRMEZCUXl4TlFVRk5MRVZCUVVNc1IwRkJSeXhEUVVGRExFTkJR
VU1zUVVGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXp0QlFVTXZSQ3c0UWtGQlRUdEJRVUZCTEVGQlEw
NHNlVUpCUVVzc1JVRkJSVHRCUVVGRExDdENRVUZQTEVWQlFVVXNRMEZCUXp0QlFVTnNRaXc0UWtG
QlRUdEJRVUZCTEVGQlEwNHNlVUpCUVVzc1JVRkJSVHRCUVVGRExDdENRVUZQTEVWQlFVVXNRMEZC
UXp0QlFVTnNRaXc0UWtGQlRUdEJRVUZCTEVGQlEwNHNlVUpCUVVzc1JVRkJSVHRCUVVGRExDdENR
VUZQTEVWQlFVVXNRMEZCUXp0QlFVTnNRaXc0UWtGQlRUdEJRVUZCTEVGQlEwNHNlVUpCUVVzc1JV
RkJSVHRCUVVGRExDdENRVUZQTEVWQlFVVXNRMEZCUXp0QlFVTnNRaXc0UWtGQlRUdEJRVUZCTEVG
QlEwNHNlVUpCUVVzc1JVRkJSVHRCUVVGRExDdENRVUZQTEVWQlFVVXNRMEZCUXp0QlFVTnNRaXc0
UWtGQlRUdEJRVUZCTEVGQlEwNHNlVUpCUVVzc1JVRkJSVHRCUVVGRExDdENRVUZQTEVWQlFVVXNR
MEZCUXp0QlFVTnNRaXc0UWtGQlRUdEJRVUZCTEVGQlEwNHNlVUpCUVVzc1JVRkJSVHRCUVVGRExD
dENRVUZQTEVWQlFVVXNRMEZCUXp0QlFVTnNRaXc0UWtGQlRUdEJRVUZCTEVGQlEwNHNlVUpCUVVz
c1JVRkJSVHRCUVVGRExDdENRVUZQTEVWQlFVVXNRMEZCUXp0QlFVTnNRaXc0UWtGQlRUdEJRVUZC
TEVGQlEwNHNlVUpCUVVzc1JVRkJSVHRCUVVGRExDdENRVUZQTEVWQlFVVXNRMEZCUXp0QlFVTnNR
aXc0UWtGQlRUdEJRVUZCTEVGQlEwNHNlVUpCUVVzc1JVRkJSVHRCUVVGRExESkNRVUZITEVOQlFV
TXNUVUZCVFN4SFFVRkhMRWRCUVVjc1EwRkJReXhOUVVGTkxFTkJRVU1zVDBGQlR5eERRVUZETEdG
QlFXRXNSVUZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhCUVVGRExFOUJRVThzUlVGQlJTeERRVUZE
TzBGQlEzWkZMRGhDUVVGTk8wRkJRVUVzUVVGRFRpeDVRa0ZCU3l4RlFVRkZPMEZCUVVNc0swSkJR
VThzVTBGQlV5eERRVUZETzBGQlEzcENMRGhDUVVGTk8wRkJRVUVzUVVGRFRpeDVRa0ZCU3l4RlFV
RkZPMEZCUVVNc0swSkJRVThzUTBGQlF5eERRVUZETzBGQlEycENMRGhDUVVGTk8wRkJRVUVzYVVK
QlEwdzdZVUZEUVN4RFFVRkRPMEZCUTBZc2FVSkJRVXNzUTBGQlF5eExRVUZMTEVkQlFVY3NRMEZC
UXl3d1FrRkJNRUlzUlVGQlF5eGxRVUZsTEVWQlFVTXNLME5CUVN0RExFVkJRVU1zZDBKQlFYZENM
RVZCUVVNc2IwVkJRVzlGTEVWQlFVTXNPRUpCUVRoQ0xFVkJRVU1zZVVKQlFYbENMRVZCUVVNc1Uw
RkJVeXhGUVVGRExGTkJRVk1zUlVGQlF5eGxRVUZsTEVWQlFVTXNaVUZCWlN4RlFVRkRMR2RDUVVG
blFpeEZRVUZETEdsQ1FVRnBRaXhGUVVGRExHMUNRVUZ0UWl4RlFVRkRMR2xDUVVGcFFpeEZRVUZE
TERSQ1FVRTBRaXhGUVVGRExHbERRVUZwUXl4RlFVRkRMR2xDUVVGcFFpeEZRVUZETEhkQ1FVRjNR
aXhGUVVGRExHbENRVUZwUWl4RlFVRkRMR2RDUVVGblFpeEZRVUZETEd0Q1FVRnJRaXhGUVVGRExE
UkNRVUUwUWl4RlFVRkRMR3RDUVVGclFpeEZRVUZETEZGQlFWRXNSVUZCUXl4WFFVRlhMRVZCUVVN
c01rSkJRVEpDTEVWQlFVTXNXVUZCV1N4RlFVRkRMRlZCUVZVc1JVRkJReXhwUWtGQmFVSXNSVUZC
UXl4bFFVRmxMRVZCUVVNc2MwSkJRWE5DTEVWQlFVTXNjMEpCUVhOQ0xFVkJRVU1zVVVGQlVTeEZR
VUZETEhkQ1FVRjNRaXhGUVVGRExIbENRVUY1UWl4RlFVRkRMRFpDUVVFMlFpeEZRVUZETEhkQ1FV
RjNRaXhGUVVGRExIbERRVUY1UXl4RlFVRkRMR05CUVdNc1JVRkJReXhUUVVGVExFVkJRVU1zZVVS
QlFYbEVMRVZCUVVNc2QwSkJRWGRDTEVWQlFVTXNVVUZCVVN4RlFVRkRMRkZCUVZFc1EwRkJReXhE
UVVGRE8wRkJRMjVuUXl4cFFrRkJTeXhEUVVGRExGVkJRVlVzUjBGQlJ5eEZRVUZETEVsQlFVa3NS
VUZCUXl4RlFVRkRMRTlCUVU4c1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVWQlFV
TXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVW
QlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZG
TEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZR
VUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5
eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVG
QlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVz
UlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJR
VU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExF
VkJRVVVzUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4WFFVRlhMRVZCUVVNc1MwRkJTeXhGUVVG
RExFVkJRVU1zUzBGQlN5eEZRVUZETEVWQlFVTXNUMEZCVHl4RlFVRkRMRU5CUVVNc1EwRkJReXhE
UVVGRExFVkJRVU1zVjBGQlZ5eEZRVUZETEV0QlFVc3NSVUZCUXl4RlFVRkRMRXRCUVVzc1JVRkJR
eXhGUVVGRExFOUJRVThzUlVGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRmRCUVZjc1JV
RkJReXhMUVVGTExFVkJRVU1zUlVGQlF5eExRVUZMTEVWQlFVTXNSVUZCUXl4UFFVRlBMRVZCUVVN
c1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRmRC
UVZjc1JVRkJReXhMUVVGTExFVkJRVU1zUlVGQlF5eFRRVUZUTEVWQlFVTXNSVUZCUXl4UFFVRlBM
RVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFV
RkRMRmRCUVZjc1JVRkJReXhKUVVGSkxFVkJRVU1zUlVGQlF5eERRVUZETzBGQlF6TlZMRzFDUVVG
UExFdEJRVXNzUTBGQlF6dFRRVUZETEVOQlFVRXNSVUZCUnl4RFFVRkJPMEZCUTJwQ0xHTkJRVTBz
UTBGQlF5eExRVUZMTEVkQlFVY3NTMEZCU3l4RFFVRkRPMEZCUTNKQ0xHbENRVUZUTEUxQlFVMHNS
MEZCU1R0QlFVRkZMR2RDUVVGSkxFTkJRVU1zUlVGQlJTeEhRVUZITEVWQlFVVXNRMEZCUXp0VFFV
RkZMRTFCUVUwc1EwRkJReXhUUVVGVExFZEJRVWNzVFVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXl4
TlFVRk5MRWRCUVVjc1RVRkJUU3hEUVVGRE8wRkJRM0pHTEdWQlFVOHNTVUZCU1N4TlFVRk5MRVZC
UVVFc1EwRkJRenRMUVVOcVFpeERRVUZCTEVWQlFVY3NRMEZCUXl4UFFVRlBMRU5CUVVNc1ZVRkJW
U3hIUVVGSExFbEJRVWtzUTBGQlF6dEJRVU12UWl4WFFVRlBMRU5CUVVNc1UwRkJVeXhEUVVGRExF
ZEJRVWNzVlVGQlZTeERRVUZESWl3aVptbHNaU0k2SW5CaGNuTmxjaTVxY3lJc0luTnZkWEpqWlhO
RGIyNTBaVzUwSWpwYklpOHFJR2x6ZEdGdVluVnNJR2xuYm05eVpTQnVaWGgwSUNvdlhHNHZLaUJL
YVhOdmJpQm5aVzVsY21GMFpXUWdjR0Z5YzJWeUlDb3ZYRzUyWVhJZ2FHRnVaR3hsWW1GeWN5QTlJ
Q2htZFc1amRHbHZiaWdwZTF4dWRtRnlJSEJoY25ObGNpQTlJSHQwY21GalpUb2dablZ1WTNScGIy
NGdkSEpoWTJVb0tTQjdJSDBzWEc1NWVUb2dlMzBzWEc1emVXMWliMnh6WHpvZ2Uxd2laWEp5YjNK
Y0lqb3lMRndpY205dmRGd2lPak1zWENKd2NtOW5jbUZ0WENJNk5DeGNJa1ZQUmx3aU9qVXNYQ0p3
Y205bmNtRnRYM0psY0dWMGFYUnBiMjR3WENJNk5peGNJbk4wWVhSbGJXVnVkRndpT2pjc1hDSnRk
WE4wWVdOb1pWd2lPamdzWENKaWJHOWphMXdpT2prc1hDSnlZWGRDYkc5amExd2lPakV3TEZ3aWNH
RnlkR2xoYkZ3aU9qRXhMRndpY0dGeWRHbGhiRUpzYjJOclhDSTZNVElzWENKamIyNTBaVzUwWENJ
Nk1UTXNYQ0pEVDAxTlJVNVVYQ0k2TVRRc1hDSkRUMDVVUlU1VVhDSTZNVFVzWENKdmNHVnVVbUYz
UW14dlkydGNJam94Tml4Y0luSmhkMEpzYjJOclgzSmxjR1YwYVhScGIyNWZjR3gxY3pCY0lqb3hO
eXhjSWtWT1JGOVNRVmRmUWt4UFEwdGNJam94T0N4Y0lrOVFSVTVmVWtGWFgwSk1UME5MWENJNk1U
a3NYQ0pvWld4d1pYSk9ZVzFsWENJNk1qQXNYQ0p2Y0dWdVVtRjNRbXh2WTJ0ZmNtVndaWFJwZEds
dmJqQmNJam95TVN4Y0ltOXdaVzVTWVhkQ2JHOWphMTl2Y0hScGIyNHdYQ0k2TWpJc1hDSkRURTlU
UlY5U1FWZGZRa3hQUTB0Y0lqb3lNeXhjSW05d1pXNUNiRzlqYTF3aU9qSTBMRndpWW14dlkydGZi
M0IwYVc5dU1Gd2lPakkxTEZ3aVkyeHZjMlZDYkc5amExd2lPakkyTEZ3aWIzQmxia2x1ZG1WeWMy
VmNJam95Tnl4Y0ltSnNiMk5yWDI5d2RHbHZiakZjSWpveU9DeGNJazlRUlU1ZlFreFBRMHRjSWpv
eU9TeGNJbTl3Wlc1Q2JHOWphMTl5WlhCbGRHbDBhVzl1TUZ3aU9qTXdMRndpYjNCbGJrSnNiMk5y
WDI5d2RHbHZiakJjSWpvek1TeGNJbTl3Wlc1Q2JHOWphMTl2Y0hScGIyNHhYQ0k2TXpJc1hDSkRU
RTlUUlZ3aU9qTXpMRndpVDFCRlRsOUpUbFpGVWxORlhDSTZNelFzWENKdmNHVnVTVzUyWlhKelpW
OXlaWEJsZEdsMGFXOXVNRndpT2pNMUxGd2liM0JsYmtsdWRtVnljMlZmYjNCMGFXOXVNRndpT2pN
MkxGd2liM0JsYmtsdWRtVnljMlZmYjNCMGFXOXVNVndpT2pNM0xGd2liM0JsYmtsdWRtVnljMlZE
YUdGcGJsd2lPak00TEZ3aVQxQkZUbDlKVGxaRlVsTkZYME5JUVVsT1hDSTZNemtzWENKdmNHVnVT
VzUyWlhKelpVTm9ZV2x1WDNKbGNHVjBhWFJwYjI0d1hDSTZOREFzWENKdmNHVnVTVzUyWlhKelpV
Tm9ZV2x1WDI5d2RHbHZiakJjSWpvME1TeGNJbTl3Wlc1SmJuWmxjbk5sUTJoaGFXNWZiM0IwYVc5
dU1Wd2lPalF5TEZ3aWFXNTJaWEp6WlVGdVpGQnliMmR5WVcxY0lqbzBNeXhjSWtsT1ZrVlNVMFZj
SWpvME5DeGNJbWx1ZG1WeWMyVkRhR0ZwYmx3aU9qUTFMRndpYVc1MlpYSnpaVU5vWVdsdVgyOXdk
R2x2YmpCY0lqbzBOaXhjSWs5UVJVNWZSVTVFUWt4UFEwdGNJam8wTnl4Y0lrOVFSVTVjSWpvME9D
eGNJbTExYzNSaFkyaGxYM0psY0dWMGFYUnBiMjR3WENJNk5Ea3NYQ0p0ZFhOMFlXTm9aVjl2Y0hS
cGIyNHdYQ0k2TlRBc1hDSlBVRVZPWDFWT1JWTkRRVkJGUkZ3aU9qVXhMRndpYlhWemRHRmphR1Zm
Y21Wd1pYUnBkR2x2YmpGY0lqbzFNaXhjSW0xMWMzUmhZMmhsWDI5d2RHbHZiakZjSWpvMU15eGNJ
a05NVDFORlgxVk9SVk5EUVZCRlJGd2lPalUwTEZ3aVQxQkZUbDlRUVZKVVNVRk1YQ0k2TlRVc1hD
SndZWEowYVdGc1RtRnRaVndpT2pVMkxGd2ljR0Z5ZEdsaGJGOXlaWEJsZEdsMGFXOXVNRndpT2pV
M0xGd2ljR0Z5ZEdsaGJGOXZjSFJwYjI0d1hDSTZOVGdzWENKdmNHVnVVR0Z5ZEdsaGJFSnNiMk5y
WENJNk5Ua3NYQ0pQVUVWT1gxQkJVbFJKUVV4ZlFreFBRMHRjSWpvMk1DeGNJbTl3Wlc1UVlYSjBh
V0ZzUW14dlkydGZjbVZ3WlhScGRHbHZiakJjSWpvMk1TeGNJbTl3Wlc1UVlYSjBhV0ZzUW14dlky
dGZiM0IwYVc5dU1Gd2lPall5TEZ3aWNHRnlZVzFjSWpvMk15eGNJbk5sZUhCeVhDSTZOalFzWENK
UFVFVk9YMU5GV0ZCU1hDSTZOalVzWENKelpYaHdjbDl5WlhCbGRHbDBhVzl1TUZ3aU9qWTJMRndp
YzJWNGNISmZiM0IwYVc5dU1Gd2lPalkzTEZ3aVEweFBVMFZmVTBWWVVGSmNJam8yT0N4Y0ltaGhj
MmhjSWpvMk9TeGNJbWhoYzJoZmNtVndaWFJwZEdsdmJsOXdiSFZ6TUZ3aU9qY3dMRndpYUdGemFG
TmxaMjFsYm5SY0lqbzNNU3hjSWtsRVhDSTZOeklzWENKRlVWVkJURk5jSWpvM015eGNJbUpzYjJO
clVHRnlZVzF6WENJNk56UXNYQ0pQVUVWT1gwSk1UME5MWDFCQlVrRk5VMXdpT2pjMUxGd2lZbXh2
WTJ0UVlYSmhiWE5mY21Wd1pYUnBkR2x2Ymw5d2JIVnpNRndpT2pjMkxGd2lRMHhQVTBWZlFreFBR
MHRmVUVGU1FVMVRYQ0k2Tnpjc1hDSndZWFJvWENJNk56Z3NYQ0prWVhSaFRtRnRaVndpT2pjNUxG
d2lVMVJTU1U1SFhDSTZPREFzWENKT1ZVMUNSVkpjSWpvNE1TeGNJa0pQVDB4RlFVNWNJam80TWl4
Y0lsVk9SRVZHU1U1RlJGd2lPamd6TEZ3aVRsVk1URndpT2pnMExGd2lSRUZVUVZ3aU9qZzFMRndp
Y0dGMGFGTmxaMjFsYm5SelhDSTZPRFlzWENKVFJWQmNJam80Tnl4Y0lpUmhZMk5sY0hSY0lqb3dM
RndpSkdWdVpGd2lPakY5TEZ4dWRHVnliV2x1WVd4elh6b2dlekk2WENKbGNuSnZjbHdpTERVNlhD
SkZUMFpjSWl3eE5EcGNJa05QVFUxRlRsUmNJaXd4TlRwY0lrTlBUbFJGVGxSY0lpd3hPRHBjSWtW
T1JGOVNRVmRmUWt4UFEwdGNJaXd4T1RwY0lrOVFSVTVmVWtGWFgwSk1UME5MWENJc01qTTZYQ0pE
VEU5VFJWOVNRVmRmUWt4UFEwdGNJaXd5T1RwY0lrOVFSVTVmUWt4UFEwdGNJaXd6TXpwY0lrTk1U
MU5GWENJc016UTZYQ0pQVUVWT1gwbE9Wa1ZTVTBWY0lpd3pPVHBjSWs5UVJVNWZTVTVXUlZKVFJW
OURTRUZKVGx3aUxEUTBPbHdpU1U1V1JWSlRSVndpTERRM09sd2lUMUJGVGw5RlRrUkNURTlEUzF3
aUxEUTRPbHdpVDFCRlRsd2lMRFV4T2x3aVQxQkZUbDlWVGtWVFEwRlFSVVJjSWl3MU5EcGNJa05N
VDFORlgxVk9SVk5EUVZCRlJGd2lMRFUxT2x3aVQxQkZUbDlRUVZKVVNVRk1YQ0lzTmpBNlhDSlBV
RVZPWDFCQlVsUkpRVXhmUWt4UFEwdGNJaXcyTlRwY0lrOVFSVTVmVTBWWVVGSmNJaXcyT0RwY0lr
Tk1UMU5GWDFORldGQlNYQ0lzTnpJNlhDSkpSRndpTERjek9sd2lSVkZWUVV4VFhDSXNOelU2WENK
UFVFVk9YMEpNVDBOTFgxQkJVa0ZOVTF3aUxEYzNPbHdpUTB4UFUwVmZRa3hQUTB0ZlVFRlNRVTFU
WENJc09EQTZYQ0pUVkZKSlRrZGNJaXc0TVRwY0lrNVZUVUpGVWx3aUxEZ3lPbHdpUWs5UFRFVkJU
bHdpTERnek9sd2lWVTVFUlVaSlRrVkVYQ0lzT0RRNlhDSk9WVXhNWENJc09EVTZYQ0pFUVZSQlhD
SXNPRGM2WENKVFJWQmNJbjBzWEc1d2NtOWtkV04wYVc5dWMxODZJRnN3TEZzekxESmRMRnMwTERG
ZExGczNMREZkTEZzM0xERmRMRnMzTERGZExGczNMREZkTEZzM0xERmRMRnMzTERGZExGczNMREZk
TEZzeE15d3hYU3hiTVRBc00xMHNXekUyTERWZExGczVMRFJkTEZzNUxEUmRMRnN5TkN3MlhTeGJN
amNzTmwwc1d6TTRMRFpkTEZzME15d3lYU3hiTkRVc00xMHNXelExTERGZExGc3lOaXd6WFN4Yk9D
dzFYU3hiT0N3MVhTeGJNVEVzTlYwc1d6RXlMRE5kTEZzMU9TdzFYU3hiTmpNc01WMHNXell6TERG
ZExGczJOQ3cxWFN4Yk5qa3NNVjBzV3pjeExETmRMRnMzTkN3elhTeGJNakFzTVYwc1d6SXdMREZk
TEZzeU1Dd3hYU3hiTWpBc01WMHNXekl3TERGZExGc3lNQ3d4WFN4Yk1qQXNNVjBzV3pVMkxERmRM
RnMxTml3eFhTeGJOemtzTWwwc1d6YzRMREZkTEZzNE5pd3pYU3hiT0RZc01WMHNXellzTUYwc1d6
WXNNbDBzV3pFM0xERmRMRnN4Tnl3eVhTeGJNakVzTUYwc1d6SXhMREpkTEZzeU1pd3dYU3hiTWpJ
c01WMHNXekkxTERCZExGc3lOU3d4WFN4Yk1qZ3NNRjBzV3pJNExERmRMRnN6TUN3d1hTeGJNekFz
TWwwc1d6TXhMREJkTEZzek1Td3hYU3hiTXpJc01GMHNXek15TERGZExGc3pOU3d3WFN4Yk16VXNN
bDBzV3pNMkxEQmRMRnN6Tml3eFhTeGJNemNzTUYwc1d6TTNMREZkTEZzME1Dd3dYU3hiTkRBc01s
MHNXelF4TERCZExGczBNU3d4WFN4Yk5ESXNNRjBzV3pReUxERmRMRnMwTml3d1hTeGJORFlzTVYw
c1d6UTVMREJkTEZzME9Td3lYU3hiTlRBc01GMHNXelV3TERGZExGczFNaXd3WFN4Yk5USXNNbDBz
V3pVekxEQmRMRnMxTXl3eFhTeGJOVGNzTUYwc1d6VTNMREpkTEZzMU9Dd3dYU3hiTlRnc01WMHNX
ell4TERCZExGczJNU3d5WFN4Yk5qSXNNRjBzV3pZeUxERmRMRnMyTml3d1hTeGJOallzTWwwc1d6
WTNMREJkTEZzMk55d3hYU3hiTnpBc01WMHNXemN3TERKZExGczNOaXd4WFN4Yk56WXNNbDFkTEZ4
dWNHVnlabTl5YlVGamRHbHZiam9nWm5WdVkzUnBiMjRnWVc1dmJubHRiM1Z6S0hsNWRHVjRkQ3g1
ZVd4bGJtY3NlWGxzYVc1bGJtOHNlWGtzZVhsemRHRjBaU3drSkN4ZkpGeHVMeW9xTHlrZ2UxeHVY
RzUyWVhJZ0pEQWdQU0FrSkM1c1pXNW5kR2dnTFNBeE8xeHVjM2RwZEdOb0lDaDVlWE4wWVhSbEtT
QjdYRzVqWVhObElERTZJSEpsZEhWeWJpQWtKRnNrTUMweFhUc2dYRzVpY21WaGF6dGNibU5oYzJV
Z01qcDBhR2x6TGlRZ1BTQjVlUzV3Y21Wd1lYSmxVSEp2WjNKaGJTZ2tKRnNrTUYwcE8xeHVZbkps
WVdzN1hHNWpZWE5sSURNNmRHaHBjeTRrSUQwZ0pDUmJKREJkTzF4dVluSmxZV3M3WEc1allYTmxJ
RFE2ZEdocGN5NGtJRDBnSkNSYkpEQmRPMXh1WW5KbFlXczdYRzVqWVhObElEVTZkR2hwY3k0a0lE
MGdKQ1JiSkRCZE8xeHVZbkpsWVdzN1hHNWpZWE5sSURZNmRHaHBjeTRrSUQwZ0pDUmJKREJkTzF4
dVluSmxZV3M3WEc1allYTmxJRGM2ZEdocGN5NGtJRDBnSkNSYkpEQmRPMXh1WW5KbFlXczdYRzVq
WVhObElEZzZkR2hwY3k0a0lEMGdKQ1JiSkRCZE8xeHVZbkpsWVdzN1hHNWpZWE5sSURrNlhHNGdJ
Q0FnZEdocGN5NGtJRDBnZTF4dUlDQWdJQ0FnZEhsd1pUb2dKME52YlcxbGJuUlRkR0YwWlcxbGJu
UW5MRnh1SUNBZ0lDQWdkbUZzZFdVNklIbDVMbk4wY21sd1EyOXRiV1Z1ZENna0pGc2tNRjBwTEZ4
dUlDQWdJQ0FnYzNSeWFYQTZJSGw1TG5OMGNtbHdSbXhoWjNNb0pDUmJKREJkTENBa0pGc2tNRjBw
TEZ4dUlDQWdJQ0FnYkc5ak9pQjVlUzVzYjJOSmJtWnZLSFJvYVhNdVh5UXBYRzRnSUNBZ2ZUdGNi
aUFnWEc1aWNtVmhhenRjYm1OaGMyVWdNVEE2WEc0Z0lDQWdkR2hwY3k0a0lEMGdlMXh1SUNBZ0lD
QWdkSGx3WlRvZ0owTnZiblJsYm5SVGRHRjBaVzFsYm5RbkxGeHVJQ0FnSUNBZ2IzSnBaMmx1WVd3
NklDUWtXeVF3WFN4Y2JpQWdJQ0FnSUhaaGJIVmxPaUFrSkZza01GMHNYRzRnSUNBZ0lDQnNiMk02
SUhsNUxteHZZMGx1Wm04b2RHaHBjeTVmSkNsY2JpQWdJQ0I5TzF4dUlDQmNibUp5WldGck8xeHVZ
MkZ6WlNBeE1UcDBhR2x6TGlRZ1BTQjVlUzV3Y21Wd1lYSmxVbUYzUW14dlkyc29KQ1JiSkRBdE1s
MHNJQ1FrV3lRd0xURmRMQ0FrSkZza01GMHNJSFJvYVhNdVh5UXBPMXh1WW5KbFlXczdYRzVqWVhO
bElERXlPblJvYVhNdUpDQTlJSHNnY0dGMGFEb2dKQ1JiSkRBdE0xMHNJSEJoY21GdGN6b2dKQ1Ji
SkRBdE1sMHNJR2hoYzJnNklDUWtXeVF3TFRGZElIMDdYRzVpY21WaGF6dGNibU5oYzJVZ01UTTZk
R2hwY3k0a0lEMGdlWGt1Y0hKbGNHRnlaVUpzYjJOcktDUWtXeVF3TFROZExDQWtKRnNrTUMweVhT
d2dKQ1JiSkRBdE1WMHNJQ1FrV3lRd1hTd2dabUZzYzJVc0lIUm9hWE11WHlRcE8xeHVZbkpsWVdz
N1hHNWpZWE5sSURFME9uUm9hWE11SkNBOUlIbDVMbkJ5WlhCaGNtVkNiRzlqYXlna0pGc2tNQzB6
WFN3Z0pDUmJKREF0TWwwc0lDUWtXeVF3TFRGZExDQWtKRnNrTUYwc0lIUnlkV1VzSUhSb2FYTXVY
eVFwTzF4dVluSmxZV3M3WEc1allYTmxJREUxT25Sb2FYTXVKQ0E5SUhzZ2IzQmxiam9nSkNSYkpE
QXROVjBzSUhCaGRHZzZJQ1FrV3lRd0xUUmRMQ0J3WVhKaGJYTTZJQ1FrV3lRd0xUTmRMQ0JvWVhO
b09pQWtKRnNrTUMweVhTd2dZbXh2WTJ0UVlYSmhiWE02SUNRa1d5UXdMVEZkTENCemRISnBjRG9n
ZVhrdWMzUnlhWEJHYkdGbmN5Z2tKRnNrTUMwMVhTd2dKQ1JiSkRCZEtTQjlPMXh1WW5KbFlXczdY
RzVqWVhObElERTJPblJvYVhNdUpDQTlJSHNnY0dGMGFEb2dKQ1JiSkRBdE5GMHNJSEJoY21GdGN6
b2dKQ1JiSkRBdE0xMHNJR2hoYzJnNklDUWtXeVF3TFRKZExDQmliRzlqYTFCaGNtRnRjem9nSkNS
YkpEQXRNVjBzSUhOMGNtbHdPaUI1ZVM1emRISnBjRVpzWVdkektDUWtXeVF3TFRWZExDQWtKRnNr
TUYwcElIMDdYRzVpY21WaGF6dGNibU5oYzJVZ01UYzZkR2hwY3k0a0lEMGdleUJ3WVhSb09pQWtK
RnNrTUMwMFhTd2djR0Z5WVcxek9pQWtKRnNrTUMwelhTd2dhR0Z6YURvZ0pDUmJKREF0TWwwc0lH
SnNiMk5yVUdGeVlXMXpPaUFrSkZza01DMHhYU3dnYzNSeWFYQTZJSGw1TG5OMGNtbHdSbXhoWjNN
b0pDUmJKREF0TlYwc0lDUWtXeVF3WFNrZ2ZUdGNibUp5WldGck8xeHVZMkZ6WlNBeE9EcDBhR2x6
TGlRZ1BTQjdJSE4wY21sd09pQjVlUzV6ZEhKcGNFWnNZV2R6S0NRa1d5UXdMVEZkTENBa0pGc2tN
QzB4WFNrc0lIQnliMmR5WVcwNklDUWtXeVF3WFNCOU8xeHVZbkpsWVdzN1hHNWpZWE5sSURFNU9s
eHVJQ0FnSUhaaGNpQnBiblpsY25ObElEMGdlWGt1Y0hKbGNHRnlaVUpzYjJOcktDUWtXeVF3TFRK
ZExDQWtKRnNrTUMweFhTd2dKQ1JiSkRCZExDQWtKRnNrTUYwc0lHWmhiSE5sTENCMGFHbHpMbDhr
S1N4Y2JpQWdJQ0FnSUNBZ2NISnZaM0poYlNBOUlIbDVMbkJ5WlhCaGNtVlFjbTluY21GdEtGdHBi
blpsY25ObFhTd2dKQ1JiSkRBdE1WMHViRzlqS1R0Y2JpQWdJQ0J3Y205bmNtRnRMbU5vWVdsdVpX
UWdQU0IwY25WbE8xeHVYRzRnSUNBZ2RHaHBjeTRrSUQwZ2V5QnpkSEpwY0RvZ0pDUmJKREF0TWww
dWMzUnlhWEFzSUhCeWIyZHlZVzA2SUhCeWIyZHlZVzBzSUdOb1lXbHVPaUIwY25WbElIMDdYRzRn
SUZ4dVluSmxZV3M3WEc1allYTmxJREl3T25Sb2FYTXVKQ0E5SUNRa1d5UXdYVHRjYm1KeVpXRnJP
MXh1WTJGelpTQXlNVHAwYUdsekxpUWdQU0I3Y0dGMGFEb2dKQ1JiSkRBdE1WMHNJSE4wY21sd09p
QjVlUzV6ZEhKcGNFWnNZV2R6S0NRa1d5UXdMVEpkTENBa0pGc2tNRjBwZlR0Y2JtSnlaV0ZyTzF4
dVkyRnpaU0F5TWpwMGFHbHpMaVFnUFNCNWVTNXdjbVZ3WVhKbFRYVnpkR0ZqYUdVb0pDUmJKREF0
TTEwc0lDUWtXeVF3TFRKZExDQWtKRnNrTUMweFhTd2dKQ1JiSkRBdE5GMHNJSGw1TG5OMGNtbHdS
bXhoWjNNb0pDUmJKREF0TkYwc0lDUWtXeVF3WFNrc0lIUm9hWE11WHlRcE8xeHVZbkpsWVdzN1hH
NWpZWE5sSURJek9uUm9hWE11SkNBOUlIbDVMbkJ5WlhCaGNtVk5kWE4wWVdOb1pTZ2tKRnNrTUMw
elhTd2dKQ1JiSkRBdE1sMHNJQ1FrV3lRd0xURmRMQ0FrSkZza01DMDBYU3dnZVhrdWMzUnlhWEJH
YkdGbmN5Z2tKRnNrTUMwMFhTd2dKQ1JiSkRCZEtTd2dkR2hwY3k1ZkpDazdYRzVpY21WaGF6dGNi
bU5oYzJVZ01qUTZYRzRnSUNBZ2RHaHBjeTRrSUQwZ2UxeHVJQ0FnSUNBZ2RIbHdaVG9nSjFCaGNu
UnBZV3hUZEdGMFpXMWxiblFuTEZ4dUlDQWdJQ0FnYm1GdFpUb2dKQ1JiSkRBdE0xMHNYRzRnSUNB
Z0lDQndZWEpoYlhNNklDUWtXeVF3TFRKZExGeHVJQ0FnSUNBZ2FHRnphRG9nSkNSYkpEQXRNVjBz
WEc0Z0lDQWdJQ0JwYm1SbGJuUTZJQ2NuTEZ4dUlDQWdJQ0FnYzNSeWFYQTZJSGw1TG5OMGNtbHdS
bXhoWjNNb0pDUmJKREF0TkYwc0lDUWtXeVF3WFNrc1hHNGdJQ0FnSUNCc2IyTTZJSGw1TG14dlkw
bHVabThvZEdocGN5NWZKQ2xjYmlBZ0lDQjlPMXh1SUNCY2JtSnlaV0ZyTzF4dVkyRnpaU0F5TlRw
MGFHbHpMaVFnUFNCNWVTNXdjbVZ3WVhKbFVHRnlkR2xoYkVKc2IyTnJLQ1FrV3lRd0xUSmRMQ0Fr
SkZza01DMHhYU3dnSkNSYkpEQmRMQ0IwYUdsekxsOGtLVHRjYm1KeVpXRnJPMXh1WTJGelpTQXlO
anAwYUdsekxpUWdQU0I3SUhCaGRHZzZJQ1FrV3lRd0xUTmRMQ0J3WVhKaGJYTTZJQ1FrV3lRd0xU
SmRMQ0JvWVhOb09pQWtKRnNrTUMweFhTd2djM1J5YVhBNklIbDVMbk4wY21sd1JteGhaM01vSkNS
YkpEQXRORjBzSUNRa1d5UXdYU2tnZlR0Y2JtSnlaV0ZyTzF4dVkyRnpaU0F5TnpwMGFHbHpMaVFn
UFNBa0pGc2tNRjA3WEc1aWNtVmhhenRjYm1OaGMyVWdNamc2ZEdocGN5NGtJRDBnSkNSYkpEQmRP
MXh1WW5KbFlXczdYRzVqWVhObElESTVPbHh1SUNBZ0lIUm9hWE11SkNBOUlIdGNiaUFnSUNBZ0lI
UjVjR1U2SUNkVGRXSkZlSEJ5WlhOemFXOXVKeXhjYmlBZ0lDQWdJSEJoZEdnNklDUWtXeVF3TFRO
ZExGeHVJQ0FnSUNBZ2NHRnlZVzF6T2lBa0pGc2tNQzB5WFN4Y2JpQWdJQ0FnSUdoaGMyZzZJQ1Fr
V3lRd0xURmRMRnh1SUNBZ0lDQWdiRzlqT2lCNWVTNXNiMk5KYm1adktIUm9hWE11WHlRcFhHNGdJ
Q0FnZlR0Y2JpQWdYRzVpY21WaGF6dGNibU5oYzJVZ016QTZkR2hwY3k0a0lEMGdlM1I1Y0dVNklD
ZElZWE5vSnl3Z2NHRnBjbk02SUNRa1d5UXdYU3dnYkc5ak9pQjVlUzVzYjJOSmJtWnZLSFJvYVhN
dVh5UXBmVHRjYm1KeVpXRnJPMXh1WTJGelpTQXpNVHAwYUdsekxpUWdQU0I3ZEhsd1pUb2dKMGho
YzJoUVlXbHlKeXdnYTJWNU9pQjVlUzVwWkNna0pGc2tNQzB5WFNrc0lIWmhiSFZsT2lBa0pGc2tN
RjBzSUd4dll6b2dlWGt1Ykc5alNXNW1ieWgwYUdsekxsOGtLWDA3WEc1aWNtVmhhenRjYm1OaGMy
VWdNekk2ZEdocGN5NGtJRDBnZVhrdWFXUW9KQ1JiSkRBdE1WMHBPMXh1WW5KbFlXczdYRzVqWVhO
bElETXpPblJvYVhNdUpDQTlJQ1FrV3lRd1hUdGNibUp5WldGck8xeHVZMkZ6WlNBek5EcDBhR2x6
TGlRZ1BTQWtKRnNrTUYwN1hHNWljbVZoYXp0Y2JtTmhjMlVnTXpVNmRHaHBjeTRrSUQwZ2UzUjVj
R1U2SUNkVGRISnBibWRNYVhSbGNtRnNKeXdnZG1Gc2RXVTZJQ1FrV3lRd1hTd2diM0pwWjJsdVlX
dzZJQ1FrV3lRd1hTd2diRzlqT2lCNWVTNXNiMk5KYm1adktIUm9hWE11WHlRcGZUdGNibUp5WldG
ck8xeHVZMkZ6WlNBek5qcDBhR2x6TGlRZ1BTQjdkSGx3WlRvZ0owNTFiV0psY2t4cGRHVnlZV3du
TENCMllXeDFaVG9nVG5WdFltVnlLQ1FrV3lRd1hTa3NJRzl5YVdkcGJtRnNPaUJPZFcxaVpYSW9K
Q1JiSkRCZEtTd2diRzlqT2lCNWVTNXNiMk5KYm1adktIUm9hWE11WHlRcGZUdGNibUp5WldGck8x
eHVZMkZ6WlNBek56cDBhR2x6TGlRZ1BTQjdkSGx3WlRvZ0owSnZiMnhsWVc1TWFYUmxjbUZzSnl3
Z2RtRnNkV1U2SUNRa1d5UXdYU0E5UFQwZ0ozUnlkV1VuTENCdmNtbG5hVzVoYkRvZ0pDUmJKREJk
SUQwOVBTQW5kSEoxWlNjc0lHeHZZem9nZVhrdWJHOWpTVzVtYnloMGFHbHpMbDhrS1gwN1hHNWlj
bVZoYXp0Y2JtTmhjMlVnTXpnNmRHaHBjeTRrSUQwZ2UzUjVjR1U2SUNkVmJtUmxabWx1WldSTWFY
UmxjbUZzSnl3Z2IzSnBaMmx1WVd3NklIVnVaR1ZtYVc1bFpDd2dkbUZzZFdVNklIVnVaR1ZtYVc1
bFpDd2diRzlqT2lCNWVTNXNiMk5KYm1adktIUm9hWE11WHlRcGZUdGNibUp5WldGck8xeHVZMkZ6
WlNBek9UcDBhR2x6TGlRZ1BTQjdkSGx3WlRvZ0owNTFiR3hNYVhSbGNtRnNKeXdnYjNKcFoybHVZ
V3c2SUc1MWJHd3NJSFpoYkhWbE9pQnVkV3hzTENCc2IyTTZJSGw1TG14dlkwbHVabThvZEdocGN5
NWZKQ2w5TzF4dVluSmxZV3M3WEc1allYTmxJRFF3T25Sb2FYTXVKQ0E5SUNRa1d5UXdYVHRjYm1K
eVpXRnJPMXh1WTJGelpTQTBNVHAwYUdsekxpUWdQU0FrSkZza01GMDdYRzVpY21WaGF6dGNibU5o
YzJVZ05ESTZkR2hwY3k0a0lEMGdlWGt1Y0hKbGNHRnlaVkJoZEdnb2RISjFaU3dnSkNSYkpEQmRM
Q0IwYUdsekxsOGtLVHRjYm1KeVpXRnJPMXh1WTJGelpTQTBNenAwYUdsekxpUWdQU0I1ZVM1d2Nt
VndZWEpsVUdGMGFDaG1ZV3h6WlN3Z0pDUmJKREJkTENCMGFHbHpMbDhrS1R0Y2JtSnlaV0ZyTzF4
dVkyRnpaU0EwTkRvZ0pDUmJKREF0TWwwdWNIVnphQ2g3Y0dGeWREb2dlWGt1YVdRb0pDUmJKREJk
S1N3Z2IzSnBaMmx1WVd3NklDUWtXeVF3WFN3Z2MyVndZWEpoZEc5eU9pQWtKRnNrTUMweFhYMHBP
eUIwYUdsekxpUWdQU0FrSkZza01DMHlYVHNnWEc1aWNtVmhhenRjYm1OaGMyVWdORFU2ZEdocGN5
NGtJRDBnVzN0d1lYSjBPaUI1ZVM1cFpDZ2tKRnNrTUYwcExDQnZjbWxuYVc1aGJEb2dKQ1JiSkRC
ZGZWMDdYRzVpY21WaGF6dGNibU5oYzJVZ05EWTZkR2hwY3k0a0lEMGdXMTA3WEc1aWNtVmhhenRj
Ym1OaGMyVWdORGM2SkNSYkpEQXRNVjB1Y0hWemFDZ2tKRnNrTUYwcE8xeHVZbkpsWVdzN1hHNWpZ
WE5sSURRNE9uUm9hWE11SkNBOUlGc2tKRnNrTUYxZE8xeHVZbkpsWVdzN1hHNWpZWE5sSURRNU9p
UWtXeVF3TFRGZExuQjFjMmdvSkNSYkpEQmRLVHRjYm1KeVpXRnJPMXh1WTJGelpTQTFNRHAwYUds
ekxpUWdQU0JiWFR0Y2JtSnlaV0ZyTzF4dVkyRnpaU0ExTVRva0pGc2tNQzB4WFM1d2RYTm9LQ1Fr
V3lRd1hTazdYRzVpY21WaGF6dGNibU5oYzJVZ05UZzZkR2hwY3k0a0lEMGdXMTA3WEc1aWNtVmhh
enRjYm1OaGMyVWdOVGs2SkNSYkpEQXRNVjB1Y0hWemFDZ2tKRnNrTUYwcE8xeHVZbkpsWVdzN1hH
NWpZWE5sSURZME9uUm9hWE11SkNBOUlGdGRPMXh1WW5KbFlXczdYRzVqWVhObElEWTFPaVFrV3lR
d0xURmRMbkIxYzJnb0pDUmJKREJkS1R0Y2JtSnlaV0ZyTzF4dVkyRnpaU0EzTURwMGFHbHpMaVFn
UFNCYlhUdGNibUp5WldGck8xeHVZMkZ6WlNBM01Ub2tKRnNrTUMweFhTNXdkWE5vS0NRa1d5UXdY
U2s3WEc1aWNtVmhhenRjYm1OaGMyVWdOemc2ZEdocGN5NGtJRDBnVzEwN1hHNWljbVZoYXp0Y2Jt
TmhjMlVnTnprNkpDUmJKREF0TVYwdWNIVnphQ2drSkZza01GMHBPMXh1WW5KbFlXczdYRzVqWVhO
bElEZ3lPblJvYVhNdUpDQTlJRnRkTzF4dVluSmxZV3M3WEc1allYTmxJRGd6T2lRa1d5UXdMVEZk
TG5CMWMyZ29KQ1JiSkRCZEtUdGNibUp5WldGck8xeHVZMkZ6WlNBNE5qcDBhR2x6TGlRZ1BTQmJY
VHRjYm1KeVpXRnJPMXh1WTJGelpTQTROem9rSkZza01DMHhYUzV3ZFhOb0tDUWtXeVF3WFNrN1hH
NWljbVZoYXp0Y2JtTmhjMlVnT1RBNmRHaHBjeTRrSUQwZ1cxMDdYRzVpY21WaGF6dGNibU5oYzJV
Z09URTZKQ1JiSkRBdE1WMHVjSFZ6YUNna0pGc2tNRjBwTzF4dVluSmxZV3M3WEc1allYTmxJRGsw
T25Sb2FYTXVKQ0E5SUZ0ZE8xeHVZbkpsWVdzN1hHNWpZWE5sSURrMU9pUWtXeVF3TFRGZExuQjFj
MmdvSkNSYkpEQmRLVHRjYm1KeVpXRnJPMXh1WTJGelpTQTVPRHAwYUdsekxpUWdQU0JiSkNSYkpE
QmRYVHRjYm1KeVpXRnJPMXh1WTJGelpTQTVPVG9rSkZza01DMHhYUzV3ZFhOb0tDUWtXeVF3WFNr
N1hHNWljbVZoYXp0Y2JtTmhjMlVnTVRBd09uUm9hWE11SkNBOUlGc2tKRnNrTUYxZE8xeHVZbkps
WVdzN1hHNWpZWE5sSURFd01Ub2tKRnNrTUMweFhTNXdkWE5vS0NRa1d5UXdYU2s3WEc1aWNtVmhh
enRjYm4xY2JuMHNYRzUwWVdKc1pUb2dXM3N6T2pFc05Eb3lMRFU2V3pJc05EWmRMRFk2TXl3eE5E
cGJNaXcwTmwwc01UVTZXeklzTkRaZExERTVPbHN5TERRMlhTd3lPVHBiTWl3ME5sMHNNelE2V3pJ
c05EWmRMRFE0T2xzeUxEUTJYU3cxTVRwYk1pdzBObDBzTlRVNld6SXNORFpkTERZd09sc3lMRFEy
WFgwc2V6RTZXek5kZlN4N05UcGJNU3cwWFgwc2V6VTZXeklzTWwwc056bzFMRGc2Tml3NU9qY3NN
VEE2T0N3eE1UbzVMREV5T2pFd0xERXpPakV4TERFME9sc3hMREV5WFN3eE5UcGJNU3d5TUYwc01U
WTZNVGNzTVRrNld6RXNNak5kTERJME9qRTFMREkzT2pFMkxESTVPbHN4TERJeFhTd3pORHBiTVN3
eU1sMHNNems2V3pJc01sMHNORFE2V3pJc01sMHNORGM2V3pJc01sMHNORGc2V3pFc01UTmRMRFV4
T2xzeExERTBYU3cxTlRwYk1Td3hPRjBzTlRrNk1Ua3NOakE2V3pFc01qUmRmU3g3TVRwYk1pd3hY
WDBzZXpVNld6SXNORGRkTERFME9sc3lMRFEzWFN3eE5UcGJNaXcwTjEwc01UazZXeklzTkRkZExE
STVPbHN5TERRM1hTd3pORHBiTWl3ME4xMHNNems2V3pJc05EZGRMRFEwT2xzeUxEUTNYU3cwTnpw
Yk1pdzBOMTBzTkRnNld6SXNORGRkTERVeE9sc3lMRFEzWFN3MU5UcGJNaXcwTjEwc05qQTZXeklz
TkRkZGZTeDdOVHBiTWl3elhTd3hORHBiTWl3elhTd3hOVHBiTWl3elhTd3hPVHBiTWl3elhTd3lP
VHBiTWl3elhTd3pORHBiTWl3elhTd3pPVHBiTWl3elhTdzBORHBiTWl3elhTdzBOenBiTWl3elhT
dzBPRHBiTWl3elhTdzFNVHBiTWl3elhTdzFOVHBiTWl3elhTdzJNRHBiTWl3elhYMHNlelU2V3pJ
c05GMHNNVFE2V3pJc05GMHNNVFU2V3pJc05GMHNNVGs2V3pJc05GMHNNams2V3pJc05GMHNNelE2
V3pJc05GMHNNems2V3pJc05GMHNORFE2V3pJc05GMHNORGM2V3pJc05GMHNORGc2V3pJc05GMHNO
VEU2V3pJc05GMHNOVFU2V3pJc05GMHNOakE2V3pJc05GMTlMSHMxT2xzeUxEVmRMREUwT2xzeUxE
VmRMREUxT2xzeUxEVmRMREU1T2xzeUxEVmRMREk1T2xzeUxEVmRMRE0wT2xzeUxEVmRMRE01T2xz
eUxEVmRMRFEwT2xzeUxEVmRMRFEzT2xzeUxEVmRMRFE0T2xzeUxEVmRMRFV4T2xzeUxEVmRMRFUx
T2xzeUxEVmRMRFl3T2xzeUxEVmRmU3g3TlRwYk1pdzJYU3d4TkRwYk1pdzJYU3d4TlRwYk1pdzJY
U3d4T1RwYk1pdzJYU3d5T1RwYk1pdzJYU3d6TkRwYk1pdzJYU3d6T1RwYk1pdzJYU3cwTkRwYk1p
dzJYU3cwTnpwYk1pdzJYU3cwT0RwYk1pdzJYU3cxTVRwYk1pdzJYU3cxTlRwYk1pdzJYU3cyTURw
Yk1pdzJYWDBzZXpVNld6SXNOMTBzTVRRNld6SXNOMTBzTVRVNld6SXNOMTBzTVRrNld6SXNOMTBz
TWprNld6SXNOMTBzTXpRNld6SXNOMTBzTXprNld6SXNOMTBzTkRRNld6SXNOMTBzTkRjNld6SXNO
MTBzTkRnNld6SXNOMTBzTlRFNld6SXNOMTBzTlRVNld6SXNOMTBzTmpBNld6SXNOMTE5TEhzMU9s
c3lMRGhkTERFME9sc3lMRGhkTERFMU9sc3lMRGhkTERFNU9sc3lMRGhkTERJNU9sc3lMRGhkTERN
ME9sc3lMRGhkTERNNU9sc3lMRGhkTERRME9sc3lMRGhkTERRM09sc3lMRGhkTERRNE9sc3lMRGhk
TERVeE9sc3lMRGhkTERVMU9sc3lMRGhkTERZd09sc3lMRGhkZlN4N05UcGJNaXc1WFN3eE5EcGJN
aXc1WFN3eE5UcGJNaXc1WFN3eE9UcGJNaXc1WFN3eU9UcGJNaXc1WFN3ek5EcGJNaXc1WFN3ek9U
cGJNaXc1WFN3ME5EcGJNaXc1WFN3ME56cGJNaXc1WFN3ME9EcGJNaXc1WFN3MU1UcGJNaXc1WFN3
MU5UcGJNaXc1WFN3Mk1EcGJNaXc1WFgwc2V6SXdPakkxTERjeU9sc3hMRE0xWFN3M09Eb3lOaXcz
T1RveU55dzRNRHBiTVN3eU9GMHNPREU2V3pFc01qbGRMRGd5T2xzeExETXdYU3c0TXpwYk1Td3pN
VjBzT0RRNld6RXNNekpkTERnMU9sc3hMRE0wWFN3NE5qb3pNMzBzZXpJd09qTTJMRGN5T2xzeExE
TTFYU3czT0RveU5pdzNPVG95Tnl3NE1EcGJNU3d5T0Ywc09ERTZXekVzTWpsZExEZ3lPbHN4TERN
d1hTdzRNenBiTVN3ek1WMHNPRFE2V3pFc016SmRMRGcxT2xzeExETTBYU3c0Tmpvek0zMHNlelE2
TXpjc05qb3pMREUwT2xzeUxEUTJYU3d4TlRwYk1pdzBObDBzTVRrNld6SXNORFpkTERJNU9sc3lM
RFEyWFN3ek5EcGJNaXcwTmwwc016azZXeklzTkRaZExEUTBPbHN5TERRMlhTdzBOenBiTWl3ME5s
MHNORGc2V3pJc05EWmRMRFV4T2xzeUxEUTJYU3cxTlRwYk1pdzBObDBzTmpBNld6SXNORFpkZlN4
N05Eb3pPQ3cyT2pNc01UUTZXeklzTkRaZExERTFPbHN5TERRMlhTd3hPVHBiTWl3ME5sMHNNams2
V3pJc05EWmRMRE0wT2xzeUxEUTJYU3cwTkRwYk1pdzBObDBzTkRjNld6SXNORFpkTERRNE9sc3lM
RFEyWFN3MU1UcGJNaXcwTmwwc05UVTZXeklzTkRaZExEWXdPbHN5TERRMlhYMHNlekV6T2pRd0xE
RTFPbHN4TERJd1hTd3hOem96T1gwc2V6SXdPalF5TERVMk9qUXhMRFkwT2pRekxEWTFPbHN4TERR
MFhTdzNNanBiTVN3ek5WMHNOemc2TWpZc056azZNamNzT0RBNld6RXNNamhkTERneE9sc3hMREk1
WFN3NE1qcGJNU3d6TUYwc09ETTZXekVzTXpGZExEZzBPbHN4TERNeVhTdzROVHBiTVN3ek5GMHNP
RFk2TXpOOUxIczBPalExTERZNk15d3hORHBiTWl3ME5sMHNNVFU2V3pJc05EWmRMREU1T2xzeUxE
UTJYU3d5T1RwYk1pdzBObDBzTXpRNld6SXNORFpkTERRM09sc3lMRFEyWFN3ME9EcGJNaXcwTmww
c05URTZXeklzTkRaZExEVTFPbHN5TERRMlhTdzJNRHBiTWl3ME5sMTlMSHMxT2xzeUxERXdYU3d4
TkRwYk1pd3hNRjBzTVRVNld6SXNNVEJkTERFNE9sc3lMREV3WFN3eE9UcGJNaXd4TUYwc01qazZX
eklzTVRCZExETTBPbHN5TERFd1hTd3pPVHBiTWl3eE1GMHNORFE2V3pJc01UQmRMRFEzT2xzeUxE
RXdYU3cwT0RwYk1pd3hNRjBzTlRFNld6SXNNVEJkTERVMU9sc3lMREV3WFN3Mk1EcGJNaXd4TUYx
OUxIc3lNRG8wTml3M01qcGJNU3d6TlYwc056ZzZNallzTnprNk1qY3NPREE2V3pFc01qaGRMRGd4
T2xzeExESTVYU3c0TWpwYk1Td3pNRjBzT0RNNld6RXNNekZkTERnME9sc3hMRE15WFN3NE5UcGJN
U3d6TkYwc09EWTZNek45TEhzeU1EbzBOeXczTWpwYk1Td3pOVjBzTnpnNk1qWXNOems2TWpjc09E
QTZXekVzTWpoZExEZ3hPbHN4TERJNVhTdzRNanBiTVN3ek1GMHNPRE02V3pFc016RmRMRGcwT2xz
eExETXlYU3c0TlRwYk1Td3pORjBzT0RZNk16TjlMSHN5TURvME9DdzNNanBiTVN3ek5WMHNOemc2
TWpZc056azZNamNzT0RBNld6RXNNamhkTERneE9sc3hMREk1WFN3NE1qcGJNU3d6TUYwc09ETTZX
ekVzTXpGZExEZzBPbHN4TERNeVhTdzROVHBiTVN3ek5GMHNPRFk2TXpOOUxIc3lNRG8wTWl3MU5q
bzBPU3cyTkRvME15dzJOVHBiTVN3ME5GMHNOekk2V3pFc016VmRMRGM0T2pJMkxEYzVPakkzTERn
d09sc3hMREk0WFN3NE1UcGJNU3d5T1Ywc09ESTZXekVzTXpCZExEZ3pPbHN4TERNeFhTdzRORHBi
TVN3ek1sMHNPRFU2V3pFc016UmRMRGcyT2pNemZTeDdNek02V3pJc056aGRMRFE1T2pVd0xEWTFP
bHN5TERjNFhTdzNNanBiTWl3M09GMHNPREE2V3pJc056aGRMRGd4T2xzeUxEYzRYU3c0TWpwYk1p
dzNPRjBzT0RNNld6SXNOemhkTERnME9sc3lMRGM0WFN3NE5UcGJNaXczT0YxOUxIc3lNenBiTWl3
ek0xMHNNek02V3pJc016TmRMRFUwT2xzeUxETXpYU3cyTlRwYk1pd3pNMTBzTmpnNld6SXNNek5k
TERjeU9sc3lMRE16WFN3M05UcGJNaXd6TTEwc09EQTZXeklzTXpOZExEZ3hPbHN5TERNelhTdzRN
anBiTWl3ek0xMHNPRE02V3pJc016TmRMRGcwT2xzeUxETXpYU3c0TlRwYk1pd3pNMTE5TEhzeU16
cGJNaXd6TkYwc016TTZXeklzTXpSZExEVTBPbHN5TERNMFhTdzJOVHBiTWl3ek5GMHNOamc2V3pJ
c016UmRMRGN5T2xzeUxETTBYU3czTlRwYk1pd3pORjBzT0RBNld6SXNNelJkTERneE9sc3lMRE0w
WFN3NE1qcGJNaXd6TkYwc09ETTZXeklzTXpSZExEZzBPbHN5TERNMFhTdzROVHBiTWl3ek5GMTlM
SHN5TXpwYk1pd3pOVjBzTXpNNld6SXNNelZkTERVME9sc3lMRE0xWFN3Mk5UcGJNaXd6TlYwc05q
ZzZXeklzTXpWZExEY3lPbHN5TERNMVhTdzNOVHBiTWl3ek5WMHNPREE2V3pJc016VmRMRGd4T2xz
eUxETTFYU3c0TWpwYk1pd3pOVjBzT0RNNld6SXNNelZkTERnME9sc3lMRE0xWFN3NE5UcGJNaXd6
TlYxOUxIc3lNenBiTWl3ek5sMHNNek02V3pJc016WmRMRFUwT2xzeUxETTJYU3cyTlRwYk1pd3pO
bDBzTmpnNld6SXNNelpkTERjeU9sc3lMRE0yWFN3M05UcGJNaXd6Tmwwc09EQTZXeklzTXpaZExE
Z3hPbHN5TERNMlhTdzRNanBiTWl3ek5sMHNPRE02V3pJc016WmRMRGcwT2xzeUxETTJYU3c0TlRw
Yk1pd3pObDE5TEhzeU16cGJNaXd6TjEwc016TTZXeklzTXpkZExEVTBPbHN5TERNM1hTdzJOVHBi
TWl3ek4xMHNOamc2V3pJc016ZGRMRGN5T2xzeUxETTNYU3czTlRwYk1pd3pOMTBzT0RBNld6SXNN
emRkTERneE9sc3lMRE0zWFN3NE1qcGJNaXd6TjEwc09ETTZXeklzTXpkZExEZzBPbHN5TERNM1hT
dzROVHBiTWl3ek4xMTlMSHN5TXpwYk1pd3pPRjBzTXpNNld6SXNNemhkTERVME9sc3lMRE00WFN3
Mk5UcGJNaXd6T0Ywc05qZzZXeklzTXpoZExEY3lPbHN5TERNNFhTdzNOVHBiTWl3ek9GMHNPREE2
V3pJc016aGRMRGd4T2xzeUxETTRYU3c0TWpwYk1pd3pPRjBzT0RNNld6SXNNemhkTERnME9sc3lM
RE00WFN3NE5UcGJNaXd6T0YxOUxIc3lNenBiTWl3ek9WMHNNek02V3pJc016bGRMRFUwT2xzeUxE
TTVYU3cyTlRwYk1pd3pPVjBzTmpnNld6SXNNemxkTERjeU9sc3lMRE01WFN3M05UcGJNaXd6T1Yw
c09EQTZXeklzTXpsZExEZ3hPbHN5TERNNVhTdzRNanBiTWl3ek9WMHNPRE02V3pJc016bGRMRGcw
T2xzeUxETTVYU3c0TlRwYk1pd3pPVjE5TEhzeU16cGJNaXcwTTEwc016TTZXeklzTkROZExEVTBP
bHN5TERRelhTdzJOVHBiTWl3ME0xMHNOamc2V3pJc05ETmRMRGN5T2xzeUxEUXpYU3czTlRwYk1p
dzBNMTBzT0RBNld6SXNORE5kTERneE9sc3lMRFF6WFN3NE1qcGJNaXcwTTEwc09ETTZXeklzTkRO
ZExEZzBPbHN5TERRelhTdzROVHBiTWl3ME0xMHNPRGM2V3pFc05URmRmU3g3TnpJNld6RXNNelZk
TERnMk9qVXlmU3g3TWpNNld6SXNORFZkTERNek9sc3lMRFExWFN3MU5EcGJNaXcwTlYwc05qVTZX
eklzTkRWZExEWTRPbHN5TERRMVhTdzNNanBiTWl3ME5WMHNOelU2V3pJc05EVmRMRGd3T2xzeUxE
UTFYU3c0TVRwYk1pdzBOVjBzT0RJNld6SXNORFZkTERnek9sc3lMRFExWFN3NE5EcGJNaXcwTlYw
c09EVTZXeklzTkRWZExEZzNPbHN5TERRMVhYMHNlelV5T2pVekxEVTBPbHN5TERneVhTdzJOVHBi
TWl3NE1sMHNOekk2V3pJc09ESmRMRGd3T2xzeUxEZ3lYU3c0TVRwYk1pdzRNbDBzT0RJNld6SXNP
REpkTERnek9sc3lMRGd5WFN3NE5EcGJNaXc0TWwwc09EVTZXeklzT0RKZGZTeDdNalU2TlRRc016
ZzZOVFlzTXprNld6RXNOVGhkTERRek9qVTNMRFEwT2xzeExEVTVYU3cwTlRvMU5TdzBOenBiTWl3
MU5GMTlMSHN5T0RvMk1DdzBNem8yTVN3ME5EcGJNU3cxT1Ywc05EYzZXeklzTlRaZGZTeDdNVE02
TmpNc01UVTZXekVzTWpCZExERTRPbHN4TERZeVhYMHNlekUxT2xzeUxEUTRYU3d4T0RwYk1pdzBP
RjE5TEhzek16cGJNaXc0Tmwwc05UYzZOalFzTmpVNld6SXNPRFpkTERjeU9sc3lMRGcyWFN3NE1E
cGJNaXc0Tmwwc09ERTZXeklzT0RaZExEZ3lPbHN5TERnMlhTdzRNenBiTWl3NE5sMHNPRFE2V3pJ
c09EWmRMRGcxT2xzeUxEZzJYWDBzZXpNek9sc3lMRFF3WFN3Mk5UcGJNaXcwTUYwc056STZXeklz
TkRCZExEZ3dPbHN5TERRd1hTdzRNVHBiTWl3ME1GMHNPREk2V3pJc05EQmRMRGd6T2xzeUxEUXdY
U3c0TkRwYk1pdzBNRjBzT0RVNld6SXNOREJkZlN4N016TTZXeklzTkRGZExEWTFPbHN5TERReFhT
dzNNanBiTWl3ME1WMHNPREE2V3pJc05ERmRMRGd4T2xzeUxEUXhYU3c0TWpwYk1pdzBNVjBzT0RN
Nld6SXNOREZkTERnME9sc3lMRFF4WFN3NE5UcGJNaXcwTVYxOUxIc3lNRG8yTlN3M01qcGJNU3d6
TlYwc056ZzZNallzTnprNk1qY3NPREE2V3pFc01qaGRMRGd4T2xzeExESTVYU3c0TWpwYk1Td3pN
RjBzT0RNNld6RXNNekZkTERnME9sc3hMRE15WFN3NE5UcGJNU3d6TkYwc09EWTZNek45TEhzeU5q
bzJOaXcwTnpwYk1TdzJOMTE5TEhzek1EbzJPQ3d6TXpwYk1pdzFPRjBzTmpVNld6SXNOVGhkTERj
eU9sc3lMRFU0WFN3M05UcGJNaXcxT0Ywc09EQTZXeklzTlRoZExEZ3hPbHN5TERVNFhTdzRNanBi
TWl3MU9GMHNPRE02V3pJc05UaGRMRGcwT2xzeUxEVTRYU3c0TlRwYk1pdzFPRjE5TEhzek16cGJN
aXcyTkYwc016VTZOamtzTmpVNld6SXNOalJkTERjeU9sc3lMRFkwWFN3M05UcGJNaXcyTkYwc09E
QTZXeklzTmpSZExEZ3hPbHN5TERZMFhTdzRNanBiTWl3Mk5GMHNPRE02V3pJc05qUmRMRGcwT2xz
eUxEWTBYU3c0TlRwYk1pdzJORjE5TEhzeU1UbzNNQ3d5TXpwYk1pdzFNRjBzTmpVNld6SXNOVEJk
TERjeU9sc3lMRFV3WFN3NE1EcGJNaXcxTUYwc09ERTZXeklzTlRCZExEZ3lPbHN5TERVd1hTdzRN
enBiTWl3MU1GMHNPRFE2V3pJc05UQmRMRGcxT2xzeUxEVXdYWDBzZXpNek9sc3lMRGt3WFN3Mk1U
bzNNU3cyTlRwYk1pdzVNRjBzTnpJNld6SXNPVEJkTERnd09sc3lMRGt3WFN3NE1UcGJNaXc1TUYw
c09ESTZXeklzT1RCZExEZ3pPbHN5TERrd1hTdzRORHBiTWl3NU1GMHNPRFU2V3pJc09UQmRmU3g3
TWpBNk56VXNNek02V3pJc09EQmRMRFV3T2pjeUxEWXpPamN6TERZME9qYzJMRFkxT2xzeExEUTBY
U3cyT1RvM05DdzNNRG8zTnl3M01UbzNPQ3czTWpwYk1TdzNPVjBzTnpnNk1qWXNOems2TWpjc09E
QTZXekVzTWpoZExEZ3hPbHN4TERJNVhTdzRNanBiTVN3ek1GMHNPRE02V3pFc016RmRMRGcwT2xz
eExETXlYU3c0TlRwYk1Td3pORjBzT0RZNk16TjlMSHMzTWpwYk1TdzRNRjE5TEhzeU16cGJNaXcw
TWwwc016TTZXeklzTkRKZExEVTBPbHN5TERReVhTdzJOVHBiTWl3ME1sMHNOamc2V3pJc05ESmRM
RGN5T2xzeUxEUXlYU3czTlRwYk1pdzBNbDBzT0RBNld6SXNOREpkTERneE9sc3lMRFF5WFN3NE1q
cGJNaXcwTWwwc09ETTZXeklzTkRKZExEZzBPbHN5TERReVhTdzROVHBiTWl3ME1sMHNPRGM2V3pF
c05URmRmU3g3TWpBNk56VXNOVE02T0RFc05UUTZXeklzT0RSZExEWXpPamd5TERZME9qYzJMRFkx
T2xzeExEUTBYU3cyT1RvNE15dzNNRG8zTnl3M01UbzNPQ3czTWpwYk1TdzNPVjBzTnpnNk1qWXNO
ems2TWpjc09EQTZXekVzTWpoZExEZ3hPbHN4TERJNVhTdzRNanBiTVN3ek1GMHNPRE02V3pFc016
RmRMRGcwT2xzeExETXlYU3c0TlRwYk1Td3pORjBzT0RZNk16TjlMSHN5TmpvNE5DdzBOenBiTVN3
Mk4xMTlMSHMwTnpwYk1pdzFOVjE5TEhzME9qZzFMRFk2TXl3eE5EcGJNaXcwTmwwc01UVTZXeklz
TkRaZExERTVPbHN5TERRMlhTd3lPVHBiTWl3ME5sMHNNelE2V3pJc05EWmRMRE01T2xzeUxEUTJY
U3cwTkRwYk1pdzBObDBzTkRjNld6SXNORFpkTERRNE9sc3lMRFEyWFN3MU1UcGJNaXcwTmwwc05U
VTZXeklzTkRaZExEWXdPbHN5TERRMlhYMHNlelEzT2xzeUxESXdYWDBzZXpJd09qZzJMRGN5T2xz
eExETTFYU3czT0RveU5pdzNPVG95Tnl3NE1EcGJNU3d5T0Ywc09ERTZXekVzTWpsZExEZ3lPbHN4
TERNd1hTdzRNenBiTVN3ek1WMHNPRFE2V3pFc016SmRMRGcxT2xzeExETTBYU3c0Tmpvek0zMHNl
elE2T0Rjc05qb3pMREUwT2xzeUxEUTJYU3d4TlRwYk1pdzBObDBzTVRrNld6SXNORFpkTERJNU9s
c3lMRFEyWFN3ek5EcGJNaXcwTmwwc05EYzZXeklzTkRaZExEUTRPbHN5TERRMlhTdzFNVHBiTWl3
ME5sMHNOVFU2V3pJc05EWmRMRFl3T2xzeUxEUTJYWDBzZXpJMk9qZzRMRFEzT2xzeExEWTNYWDBz
ZXpRM09sc3lMRFUzWFgwc2V6VTZXeklzTVRGZExERTBPbHN5TERFeFhTd3hOVHBiTWl3eE1WMHNN
VGs2V3pJc01URmRMREk1T2xzeUxERXhYU3d6TkRwYk1pd3hNVjBzTXprNld6SXNNVEZkTERRME9s
c3lMREV4WFN3ME56cGJNaXd4TVYwc05EZzZXeklzTVRGZExEVXhPbHN5TERFeFhTdzFOVHBiTWl3
eE1WMHNOakE2V3pJc01URmRmU3g3TVRVNld6SXNORGxkTERFNE9sc3lMRFE1WFgwc2V6SXdPamMx
TERNek9sc3lMRGc0WFN3MU9EbzRPU3cyTXpvNU1DdzJORG8zTml3Mk5UcGJNU3cwTkYwc05qazZP
VEVzTnpBNk56Y3NOekU2Tnpnc056STZXekVzTnpsZExEYzRPakkyTERjNU9qSTNMRGd3T2xzeExE
STRYU3c0TVRwYk1Td3lPVjBzT0RJNld6RXNNekJkTERnek9sc3hMRE14WFN3NE5EcGJNU3d6TWww
c09EVTZXekVzTXpSZExEZzJPak16ZlN4N05qVTZXeklzT1RSZExEWTJPamt5TERZNE9sc3lMRGsw
WFN3M01qcGJNaXc1TkYwc09EQTZXeklzT1RSZExEZ3hPbHN5TERrMFhTdzRNanBiTWl3NU5GMHNP
RE02V3pJc09UUmRMRGcwT2xzeUxEazBYU3c0TlRwYk1pdzVORjE5TEhzMU9sc3lMREkxWFN3eE5E
cGJNaXd5TlYwc01UVTZXeklzTWpWZExERTVPbHN5TERJMVhTd3lPVHBiTWl3eU5WMHNNelE2V3pJ
c01qVmRMRE01T2xzeUxESTFYU3cwTkRwYk1pd3lOVjBzTkRjNld6SXNNalZkTERRNE9sc3lMREkx
WFN3MU1UcGJNaXd5TlYwc05UVTZXeklzTWpWZExEWXdPbHN5TERJMVhYMHNlekl3T2prekxEY3lP
bHN4TERNMVhTdzNPRG95Tml3M09Ub3lOeXc0TURwYk1Td3lPRjBzT0RFNld6RXNNamxkTERneU9s
c3hMRE13WFN3NE16cGJNU3d6TVYwc09EUTZXekVzTXpKZExEZzFPbHN4TERNMFhTdzROam96TTMw
c2V6SXdPamMxTERNeE9qazBMRE16T2xzeUxEWXdYU3cyTXpvNU5TdzJORG8zTml3Mk5UcGJNU3cw
TkYwc05qazZPVFlzTnpBNk56Y3NOekU2Tnpnc056STZXekVzTnpsZExEYzFPbHN5TERZd1hTdzNP
RG95Tml3M09Ub3lOeXc0TURwYk1Td3lPRjBzT0RFNld6RXNNamxkTERneU9sc3hMRE13WFN3NE16
cGJNU3d6TVYwc09EUTZXekVzTXpKZExEZzFPbHN4TERNMFhTdzROam96TTMwc2V6SXdPamMxTERN
ek9sc3lMRFkyWFN3ek5qbzVOeXcyTXpvNU9DdzJORG8zTml3Mk5UcGJNU3cwTkYwc05qazZPVGtz
TnpBNk56Y3NOekU2Tnpnc056STZXekVzTnpsZExEYzFPbHN5TERZMlhTdzNPRG95Tml3M09Ub3lO
eXc0TURwYk1Td3lPRjBzT0RFNld6RXNNamxkTERneU9sc3hMRE13WFN3NE16cGJNU3d6TVYwc09E
UTZXekVzTXpKZExEZzFPbHN4TERNMFhTdzROam96TTMwc2V6SXdPamMxTERJeU9qRXdNQ3d5TXpw
Yk1pdzFNbDBzTmpNNk1UQXhMRFkwT2pjMkxEWTFPbHN4TERRMFhTdzJPVG94TURJc056QTZOemNz
TnpFNk56Z3NOekk2V3pFc056bGRMRGM0T2pJMkxEYzVPakkzTERnd09sc3hMREk0WFN3NE1UcGJN
U3d5T1Ywc09ESTZXekVzTXpCZExEZ3pPbHN4TERNeFhTdzRORHBiTVN3ek1sMHNPRFU2V3pFc016
UmRMRGcyT2pNemZTeDdNakE2TnpVc016TTZXeklzT1RKZExEWXlPakV3TXl3Mk16b3hNRFFzTmpR
Nk56WXNOalU2V3pFc05EUmRMRFk1T2pFd05TdzNNRG8zTnl3M01UbzNPQ3czTWpwYk1TdzNPVjBz
TnpnNk1qWXNOems2TWpjc09EQTZXekVzTWpoZExEZ3hPbHN4TERJNVhTdzRNanBiTVN3ek1GMHNP
RE02V3pFc016RmRMRGcwT2xzeExETXlYU3c0TlRwYk1Td3pORjBzT0RZNk16TjlMSHN6TXpwYk1T
d3hNRFpkZlN4N016TTZXeklzTnpsZExEWTFPbHN5TERjNVhTdzNNanBiTWl3M09WMHNPREE2V3pJ
c056bGRMRGd4T2xzeUxEYzVYU3c0TWpwYk1pdzNPVjBzT0RNNld6SXNOemxkTERnME9sc3lMRGM1
WFN3NE5UcGJNaXczT1YxOUxIc3pNenBiTWl3NE1WMTlMSHN5TXpwYk1pd3lOMTBzTXpNNld6SXNN
amRkTERVME9sc3lMREkzWFN3Mk5UcGJNaXd5TjEwc05qZzZXeklzTWpkZExEY3lPbHN5TERJM1hT
dzNOVHBiTWl3eU4xMHNPREE2V3pJc01qZGRMRGd4T2xzeUxESTNYU3c0TWpwYk1pd3lOMTBzT0RN
Nld6SXNNamRkTERnME9sc3lMREkzWFN3NE5UcGJNaXd5TjExOUxIc3lNenBiTWl3eU9GMHNNek02
V3pJc01qaGRMRFUwT2xzeUxESTRYU3cyTlRwYk1pd3lPRjBzTmpnNld6SXNNamhkTERjeU9sc3lM
REk0WFN3M05UcGJNaXd5T0Ywc09EQTZXeklzTWpoZExEZ3hPbHN5TERJNFhTdzRNanBiTWl3eU9G
MHNPRE02V3pJc01qaGRMRGcwT2xzeUxESTRYU3c0TlRwYk1pd3lPRjE5TEhzeU16cGJNaXd6TUYw
c016TTZXeklzTXpCZExEVTBPbHN5TERNd1hTdzJPRHBiTWl3ek1GMHNOekU2TVRBM0xEY3lPbHN4
TERFd09GMHNOelU2V3pJc016QmRmU3g3TWpNNld6SXNPVGhkTERNek9sc3lMRGs0WFN3MU5EcGJN
aXc1T0Ywc05qZzZXeklzT1RoZExEY3lPbHN5TERrNFhTdzNOVHBiTWl3NU9GMTlMSHN5TXpwYk1p
dzBOVjBzTXpNNld6SXNORFZkTERVME9sc3lMRFExWFN3Mk5UcGJNaXcwTlYwc05qZzZXeklzTkRW
ZExEY3lPbHN5TERRMVhTdzNNenBiTVN3eE1EbGRMRGMxT2xzeUxEUTFYU3c0TURwYk1pdzBOVjBz
T0RFNld6SXNORFZkTERneU9sc3lMRFExWFN3NE16cGJNaXcwTlYwc09EUTZXeklzTkRWZExEZzFP
bHN5TERRMVhTdzROenBiTWl3ME5WMTlMSHN5TXpwYk1pdzBORjBzTXpNNld6SXNORFJkTERVME9s
c3lMRFEwWFN3Mk5UcGJNaXcwTkYwc05qZzZXeklzTkRSZExEY3lPbHN5TERRMFhTdzNOVHBiTWl3
ME5GMHNPREE2V3pJc05EUmRMRGd4T2xzeUxEUTBYU3c0TWpwYk1pdzBORjBzT0RNNld6SXNORFJk
TERnME9sc3lMRFEwWFN3NE5UcGJNaXcwTkYwc09EYzZXeklzTkRSZGZTeDdOVFE2V3pFc01URXdY
WDBzZXpVME9sc3lMRGd6WFN3Mk5UcGJNaXc0TTEwc056STZXeklzT0ROZExEZ3dPbHN5TERnelhT
dzRNVHBiTWl3NE0xMHNPREk2V3pJc09ETmRMRGd6T2xzeUxEZ3pYU3c0TkRwYk1pdzRNMTBzT0RV
Nld6SXNPRE5kZlN4N05UUTZXeklzT0RWZGZTeDdOVHBiTWl3eE0xMHNNVFE2V3pJc01UTmRMREUx
T2xzeUxERXpYU3d4T1RwYk1pd3hNMTBzTWprNld6SXNNVE5kTERNME9sc3lMREV6WFN3ek9UcGJN
aXd4TTEwc05EUTZXeklzTVROZExEUTNPbHN5TERFelhTdzBPRHBiTWl3eE0xMHNOVEU2V3pJc01U
TmRMRFUxT2xzeUxERXpYU3cyTURwYk1pd3hNMTE5TEhzek9EbzFOaXd6T1RwYk1TdzFPRjBzTkRN
Nk5UY3NORFE2V3pFc05UbGRMRFExT2pFeE1pdzBOam94TVRFc05EYzZXeklzTnpaZGZTeDdNek02
V3pJc056QmRMRFF3T2pFeE15dzJOVHBiTWl3M01GMHNOekk2V3pJc056QmRMRGMxT2xzeUxEY3dY
U3c0TURwYk1pdzNNRjBzT0RFNld6SXNOekJkTERneU9sc3lMRGN3WFN3NE16cGJNaXczTUYwc09E
UTZXeklzTnpCZExEZzFPbHN5TERjd1hYMHNlelEzT2xzeUxERTRYWDBzZXpVNld6SXNNVFJkTERF
ME9sc3lMREUwWFN3eE5UcGJNaXd4TkYwc01UazZXeklzTVRSZExESTVPbHN5TERFMFhTd3pORHBi
TWl3eE5GMHNNems2V3pJc01UUmRMRFEwT2xzeUxERTBYU3cwTnpwYk1pd3hORjBzTkRnNld6SXNN
VFJkTERVeE9sc3lMREUwWFN3MU5UcGJNaXd4TkYwc05qQTZXeklzTVRSZGZTeDdNek02V3pFc01U
RTBYWDBzZXpNek9sc3lMRGczWFN3Mk5UcGJNaXc0TjEwc056STZXeklzT0RkZExEZ3dPbHN5TERn
M1hTdzRNVHBiTWl3NE4xMHNPREk2V3pJc09EZGRMRGd6T2xzeUxEZzNYU3c0TkRwYk1pdzROMTBz
T0RVNld6SXNPRGRkZlN4N016TTZXeklzT0RsZGZTeDdNakE2TnpVc05qTTZNVEUyTERZME9qYzJM
RFkxT2xzeExEUTBYU3cyTnpveE1UVXNOamc2V3pJc09UWmRMRFk1T2pFeE55dzNNRG8zTnl3M01U
bzNPQ3czTWpwYk1TdzNPVjBzTnpnNk1qWXNOems2TWpjc09EQTZXekVzTWpoZExEZ3hPbHN4TERJ
NVhTdzRNanBiTVN3ek1GMHNPRE02V3pFc016RmRMRGcwT2xzeExETXlYU3c0TlRwYk1Td3pORjBz
T0RZNk16TjlMSHN6TXpwYk1Td3hNVGhkZlN4N016STZNVEU1TERNek9sc3lMRFl5WFN3M05Eb3hN
akFzTnpVNld6RXNNVEl4WFgwc2V6TXpPbHN5TERVNVhTdzJOVHBiTWl3MU9WMHNOekk2V3pJc05U
bGRMRGMxT2xzeUxEVTVYU3c0TURwYk1pdzFPVjBzT0RFNld6SXNOVGxkTERneU9sc3lMRFU1WFN3
NE16cGJNaXcxT1Ywc09EUTZXeklzTlRsZExEZzFPbHN5TERVNVhYMHNlek16T2xzeUxEWXhYU3cz
TlRwYk1pdzJNVjE5TEhzek16cGJNaXcyT0Ywc016YzZNVEl5TERjME9qRXlNeXczTlRwYk1Td3hN
akZkZlN4N016TTZXeklzTmpWZExEWTFPbHN5TERZMVhTdzNNanBiTWl3Mk5WMHNOelU2V3pJc05q
VmRMRGd3T2xzeUxEWTFYU3c0TVRwYk1pdzJOVjBzT0RJNld6SXNOalZkTERnek9sc3lMRFkxWFN3
NE5EcGJNaXcyTlYwc09EVTZXeklzTmpWZGZTeDdNek02V3pJc05qZGRMRGMxT2xzeUxEWTNYWDBz
ZXpJek9sc3hMREV5TkYxOUxIc3lNenBiTWl3MU1WMHNOalU2V3pJc05URmRMRGN5T2xzeUxEVXhY
U3c0TURwYk1pdzFNVjBzT0RFNld6SXNOVEZkTERneU9sc3lMRFV4WFN3NE16cGJNaXcxTVYwc09E
UTZXeklzTlRGZExEZzFPbHN5TERVeFhYMHNlekl6T2xzeUxEVXpYWDBzZXpNek9sc3hMREV5TlYx
OUxIc3pNenBiTWl3NU1WMHNOalU2V3pJc09URmRMRGN5T2xzeUxEa3hYU3c0TURwYk1pdzVNVjBz
T0RFNld6SXNPVEZkTERneU9sc3lMRGt4WFN3NE16cGJNaXc1TVYwc09EUTZXeklzT1RGZExEZzFP
bHN5TERreFhYMHNlek16T2xzeUxEa3pYWDBzZXpVNld6SXNNakpkTERFME9sc3lMREl5WFN3eE5U
cGJNaXd5TWwwc01UazZXeklzTWpKZExESTVPbHN5TERJeVhTd3pORHBiTWl3eU1sMHNNems2V3pJ
c01qSmRMRFEwT2xzeUxESXlYU3cwTnpwYk1pd3lNbDBzTkRnNld6SXNNakpkTERVeE9sc3lMREl5
WFN3MU5UcGJNaXd5TWwwc05qQTZXeklzTWpKZGZTeDdNak02V3pJc09UbGRMRE16T2xzeUxEazVY
U3cxTkRwYk1pdzVPVjBzTmpnNld6SXNPVGxkTERjeU9sc3lMRGs1WFN3M05UcGJNaXc1T1YxOUxI
czNNenBiTVN3eE1EbGRmU3g3TWpBNk56VXNOak02TVRJMkxEWTBPamMyTERZMU9sc3hMRFEwWFN3
M01qcGJNU3d6TlYwc056ZzZNallzTnprNk1qY3NPREE2V3pFc01qaGRMRGd4T2xzeExESTVYU3c0
TWpwYk1Td3pNRjBzT0RNNld6RXNNekZkTERnME9sc3hMRE15WFN3NE5UcGJNU3d6TkYwc09EWTZN
ek45TEhzMU9sc3lMREl6WFN3eE5EcGJNaXd5TTEwc01UVTZXeklzTWpOZExERTVPbHN5TERJelhT
d3lPVHBiTWl3eU0xMHNNelE2V3pJc01qTmRMRE01T2xzeUxESXpYU3cwTkRwYk1pd3lNMTBzTkRj
Nld6SXNNak5kTERRNE9sc3lMREl6WFN3MU1UcGJNaXd5TTEwc05UVTZXeklzTWpOZExEWXdPbHN5
TERJelhYMHNlelEzT2xzeUxERTVYWDBzZXpRM09sc3lMRGMzWFgwc2V6SXdPamMxTERNek9sc3lM
RGN5WFN3ME1Ub3hNamNzTmpNNk1USTRMRFkwT2pjMkxEWTFPbHN4TERRMFhTdzJPVG94TWprc056
QTZOemNzTnpFNk56Z3NOekk2V3pFc056bGRMRGMxT2xzeUxEY3lYU3czT0RveU5pdzNPVG95Tnl3
NE1EcGJNU3d5T0Ywc09ERTZXekVzTWpsZExEZ3lPbHN4TERNd1hTdzRNenBiTVN3ek1WMHNPRFE2
V3pFc016SmRMRGcxT2xzeExETTBYU3c0Tmpvek0zMHNlelU2V3pJc01qUmRMREUwT2xzeUxESTBY
U3d4TlRwYk1pd3lORjBzTVRrNld6SXNNalJkTERJNU9sc3lMREkwWFN3ek5EcGJNaXd5TkYwc016
azZXeklzTWpSZExEUTBPbHN5TERJMFhTdzBOenBiTWl3eU5GMHNORGc2V3pJc01qUmRMRFV4T2xz
eUxESTBYU3cxTlRwYk1pd3lORjBzTmpBNld6SXNNalJkZlN4N05qZzZXekVzTVRNd1hYMHNlelkx
T2xzeUxEazFYU3cyT0RwYk1pdzVOVjBzTnpJNld6SXNPVFZkTERnd09sc3lMRGsxWFN3NE1UcGJN
aXc1TlYwc09ESTZXeklzT1RWZExEZ3pPbHN5TERrMVhTdzRORHBiTWl3NU5WMHNPRFU2V3pJc09U
VmRmU3g3TmpnNld6SXNPVGRkZlN4N05UcGJNaXd5TVYwc01UUTZXeklzTWpGZExERTFPbHN5TERJ
eFhTd3hPVHBiTWl3eU1WMHNNams2V3pJc01qRmRMRE0wT2xzeUxESXhYU3d6T1RwYk1pd3lNVjBz
TkRRNld6SXNNakZkTERRM09sc3lMREl4WFN3ME9EcGJNaXd5TVYwc05URTZXeklzTWpGZExEVTFP
bHN5TERJeFhTdzJNRHBiTWl3eU1WMTlMSHN6TXpwYk1Td3hNekZkZlN4N016TTZXeklzTmpOZGZT
eDdOekk2V3pFc01UTXpYU3czTmpveE16SjlMSHN6TXpwYk1Td3hNelJkZlN4N016TTZXeklzTmps
ZGZTeDdNVFU2V3pJc01USmRmU3g3TVRRNld6SXNNalpkTERFMU9sc3lMREkyWFN3eE9UcGJNaXd5
Tmwwc01qazZXeklzTWpaZExETTBPbHN5TERJMlhTdzBOenBiTWl3eU5sMHNORGc2V3pJc01qWmRM
RFV4T2xzeUxESTJYU3cxTlRwYk1pd3lObDBzTmpBNld6SXNNalpkZlN4N01qTTZXeklzTXpGZExE
TXpPbHN5TERNeFhTdzFORHBiTWl3ek1WMHNOamc2V3pJc016RmRMRGN5T2xzeUxETXhYU3czTlRw
Yk1pd3pNVjE5TEhzek16cGJNaXczTkYwc05ESTZNVE0xTERjME9qRXpOaXczTlRwYk1Td3hNakZk
ZlN4N016TTZXeklzTnpGZExEWTFPbHN5TERjeFhTdzNNanBiTWl3M01WMHNOelU2V3pJc056RmRM
RGd3T2xzeUxEY3hYU3c0TVRwYk1pdzNNVjBzT0RJNld6SXNOekZkTERnek9sc3lMRGN4WFN3NE5E
cGJNaXczTVYwc09EVTZXeklzTnpGZGZTeDdNek02V3pJc056TmRMRGMxT2xzeUxEY3pYWDBzZXpJ
ek9sc3lMREk1WFN3ek16cGJNaXd5T1Ywc05UUTZXeklzTWpsZExEWTFPbHN5TERJNVhTdzJPRHBi
TWl3eU9WMHNOekk2V3pJc01qbGRMRGMxT2xzeUxESTVYU3c0TURwYk1pd3lPVjBzT0RFNld6SXNN
amxkTERneU9sc3lMREk1WFN3NE16cGJNaXd5T1Ywc09EUTZXeklzTWpsZExEZzFPbHN5TERJNVhY
MHNlekUwT2xzeUxERTFYU3d4TlRwYk1pd3hOVjBzTVRrNld6SXNNVFZkTERJNU9sc3lMREUxWFN3
ek5EcGJNaXd4TlYwc016azZXeklzTVRWZExEUTBPbHN5TERFMVhTdzBOenBiTWl3eE5WMHNORGc2
V3pJc01UVmRMRFV4T2xzeUxERTFYU3cxTlRwYk1pd3hOVjBzTmpBNld6SXNNVFZkZlN4N056STZX
ekVzTVRNNFhTdzNOenBiTVN3eE16ZGRmU3g3TnpJNld6SXNNVEF3WFN3M056cGJNaXd4TURCZGZT
eDdNVFE2V3pJc01UWmRMREUxT2xzeUxERTJYU3d4T1RwYk1pd3hObDBzTWprNld6SXNNVFpkTERN
ME9sc3lMREUyWFN3ME5EcGJNaXd4Tmwwc05EYzZXeklzTVRaZExEUTRPbHN5TERFMlhTdzFNVHBi
TWl3eE5sMHNOVFU2V3pJc01UWmRMRFl3T2xzeUxERTJYWDBzZXpNek9sc3hMREV6T1YxOUxIc3pN
enBiTWl3M05WMTlMSHN6TXpwYk1pd3pNbDE5TEhzM01qcGJNaXd4TURGZExEYzNPbHN5TERFd01W
MTlMSHN4TkRwYk1pd3hOMTBzTVRVNld6SXNNVGRkTERFNU9sc3lMREUzWFN3eU9UcGJNaXd4TjEw
c016UTZXeklzTVRkZExETTVPbHN5TERFM1hTdzBORHBiTWl3eE4xMHNORGM2V3pJc01UZGRMRFE0
T2xzeUxERTNYU3cxTVRwYk1pd3hOMTBzTlRVNld6SXNNVGRkTERZd09sc3lMREUzWFgxZExGeHVa
R1ZtWVhWc2RFRmpkR2x2Ym5NNklIczBPbHN5TERGZExEVTFPbHN5TERVMVhTdzFOenBiTWl3eU1G
MHNOakU2V3pJc05UZGRMRGMwT2xzeUxEZ3hYU3c0TXpwYk1pdzROVjBzT0RjNld6SXNNVGhkTERr
eE9sc3lMRGc1WFN3eE1ESTZXeklzTlROZExERXdOVHBiTWl3NU0xMHNNVEV4T2xzeUxERTVYU3d4
TVRJNld6SXNOemRkTERFeE56cGJNaXc1TjEwc01USXdPbHN5TERZelhTd3hNak02V3pJc05qbGRM
REV5TkRwYk1pd3hNbDBzTVRNMk9sc3lMRGMxWFN3eE16YzZXeklzTXpKZGZTeGNibkJoY25ObFJY
SnliM0k2SUdaMWJtTjBhVzl1SUhCaGNuTmxSWEp5YjNJb2MzUnlMQ0JvWVhOb0tTQjdYRzRnSUNB
Z2RHaHliM2NnYm1WM0lFVnljbTl5S0hOMGNpazdYRzU5TEZ4dWNHRnljMlU2SUdaMWJtTjBhVzl1
SUhCaGNuTmxLR2x1Y0hWMEtTQjdYRzRnSUNBZ2RtRnlJSE5sYkdZZ1BTQjBhR2x6TENCemRHRmph
eUE5SUZzd1hTd2dkbk4wWVdOcklEMGdXMjUxYkd4ZExDQnNjM1JoWTJzZ1BTQmJYU3dnZEdGaWJH
VWdQU0IwYUdsekxuUmhZbXhsTENCNWVYUmxlSFFnUFNCY0lsd2lMQ0I1ZVd4cGJtVnVieUE5SURB
c0lIbDViR1Z1WnlBOUlEQXNJSEpsWTI5MlpYSnBibWNnUFNBd0xDQlVSVkpTVDFJZ1BTQXlMQ0JG
VDBZZ1BTQXhPMXh1SUNBZ0lIUm9hWE11YkdWNFpYSXVjMlYwU1c1d2RYUW9hVzV3ZFhRcE8xeHVJ
Q0FnSUhSb2FYTXViR1Y0WlhJdWVYa2dQU0IwYUdsekxubDVPMXh1SUNBZ0lIUm9hWE11ZVhrdWJH
VjRaWElnUFNCMGFHbHpMbXhsZUdWeU8xeHVJQ0FnSUhSb2FYTXVlWGt1Y0dGeWMyVnlJRDBnZEdo
cGN6dGNiaUFnSUNCcFppQW9kSGx3Wlc5bUlIUm9hWE11YkdWNFpYSXVlWGxzYkc5aklEMDlJRndp
ZFc1a1pXWnBibVZrWENJcFhHNGdJQ0FnSUNBZ0lIUm9hWE11YkdWNFpYSXVlWGxzYkc5aklEMGdl
MzA3WEc0Z0lDQWdkbUZ5SUhsNWJHOWpJRDBnZEdocGN5NXNaWGhsY2k1NWVXeHNiMk03WEc0Z0lD
QWdiSE4wWVdOckxuQjFjMmdvZVhsc2IyTXBPMXh1SUNBZ0lIWmhjaUJ5WVc1blpYTWdQU0IwYUds
ekxteGxlR1Z5TG05d2RHbHZibk1nSmlZZ2RHaHBjeTVzWlhobGNpNXZjSFJwYjI1ekxuSmhibWRs
Y3p0Y2JpQWdJQ0JwWmlBb2RIbHdaVzltSUhSb2FYTXVlWGt1Y0dGeWMyVkZjbkp2Y2lBOVBUMGdY
Q0ptZFc1amRHbHZibHdpS1Z4dUlDQWdJQ0FnSUNCMGFHbHpMbkJoY25ObFJYSnliM0lnUFNCMGFH
bHpMbmw1TG5CaGNuTmxSWEp5YjNJN1hHNGdJQ0FnWm5WdVkzUnBiMjRnY0c5d1UzUmhZMnNvYmlr
Z2UxeHVJQ0FnSUNBZ0lDQnpkR0ZqYXk1c1pXNW5kR2dnUFNCemRHRmpheTVzWlc1bmRHZ2dMU0F5
SUNvZ2JqdGNiaUFnSUNBZ0lDQWdkbk4wWVdOckxteGxibWQwYUNBOUlIWnpkR0ZqYXk1c1pXNW5k
R2dnTFNCdU8xeHVJQ0FnSUNBZ0lDQnNjM1JoWTJzdWJHVnVaM1JvSUQwZ2JITjBZV05yTG14bGJt
ZDBhQ0F0SUc0N1hHNGdJQ0FnZlZ4dUlDQWdJR1oxYm1OMGFXOXVJR3hsZUNncElIdGNiaUFnSUNB
Z0lDQWdkbUZ5SUhSdmEyVnVPMXh1SUNBZ0lDQWdJQ0IwYjJ0bGJpQTlJSE5sYkdZdWJHVjRaWEl1
YkdWNEtDa2dmSHdnTVR0Y2JpQWdJQ0FnSUNBZ2FXWWdLSFI1Y0dWdlppQjBiMnRsYmlBaFBUMGdY
Q0p1ZFcxaVpYSmNJaWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdkRzlyWlc0Z1BTQnpaV3htTG5ONWJX
SnZiSE5mVzNSdmEyVnVYU0I4ZkNCMGIydGxianRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNC
eVpYUjFjbTRnZEc5clpXNDdYRzRnSUNBZ2ZWeHVJQ0FnSUhaaGNpQnplVzFpYjJ3c0lIQnlaVVZ5
Y205eVUzbHRZbTlzTENCemRHRjBaU3dnWVdOMGFXOXVMQ0JoTENCeUxDQjVlWFpoYkNBOUlIdDlM
Q0J3TENCc1pXNHNJRzVsZDFOMFlYUmxMQ0JsZUhCbFkzUmxaRHRjYmlBZ0lDQjNhR2xzWlNBb2RI
SjFaU2tnZTF4dUlDQWdJQ0FnSUNCemRHRjBaU0E5SUhOMFlXTnJXM04wWVdOckxteGxibWQwYUNB
dElERmRPMXh1SUNBZ0lDQWdJQ0JwWmlBb2RHaHBjeTVrWldaaGRXeDBRV04wYVc5dWMxdHpkR0Yw
WlYwcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUdGamRHbHZiaUE5SUhSb2FYTXVaR1ZtWVhWc2RFRmpk
R2x2Ym5OYmMzUmhkR1ZkTzF4dUlDQWdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lD
QWdhV1lnS0hONWJXSnZiQ0E5UFQwZ2JuVnNiQ0I4ZkNCMGVYQmxiMllnYzNsdFltOXNJRDA5SUZ3
aWRXNWtaV1pwYm1Wa1hDSXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J6ZVcxaWIyd2dQU0Jz
Wlhnb0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJR0ZqZEdsdmJpQTlJ
SFJoWW14bFczTjBZWFJsWFNBbUppQjBZV0pzWlZ0emRHRjBaVjFiYzNsdFltOXNYVHRjYmlBZ0lD
QWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCcFppQW9kSGx3Wlc5bUlHRmpkR2x2YmlBOVBUMGdYQ0oxYm1S
bFptbHVaV1JjSWlCOGZDQWhZV04wYVc5dUxteGxibWQwYUNCOGZDQWhZV04wYVc5dVd6QmRLU0I3
WEc0Z0lDQWdJQ0FnSUNBZ0lDQjJZWElnWlhKeVUzUnlJRDBnWENKY0lqdGNiaUFnSUNBZ0lDQWdJ
Q0FnSUdsbUlDZ2hjbVZqYjNabGNtbHVaeWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdWNGNH
VmpkR1ZrSUQwZ1cxMDdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdabTl5SUNod0lHbHVJSFJoWW14
bFczTjBZWFJsWFNsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0hSb2FYTXVkR1Z5
YldsdVlXeHpYMXR3WFNBbUppQndJRDRnTWlrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJ
Q0FnSUNBZ1pYaHdaV04wWldRdWNIVnphQ2hjSWlkY0lpQXJJSFJvYVhNdWRHVnliV2x1WVd4elgx
dHdYU0FySUZ3aUoxd2lLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNB
Z0lDQWdJQ0FnSUNBZ0lHbG1JQ2gwYUdsekxteGxlR1Z5TG5Ob2IzZFFiM05wZEdsdmJpa2dlMXh1
SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCbGNuSlRkSElnUFNCY0lsQmhjbk5sSUdWeWNtOXlJ
Rzl1SUd4cGJtVWdYQ0lnS3lBb2VYbHNhVzVsYm04Z0t5QXhLU0FySUZ3aU9seGNibHdpSUNzZ2RH
aHBjeTVzWlhobGNpNXphRzkzVUc5emFYUnBiMjRvS1NBcklGd2lYRnh1Ulhod1pXTjBhVzVuSUZ3
aUlDc2daWGh3WldOMFpXUXVhbTlwYmloY0lpd2dYQ0lwSUNzZ1hDSXNJR2R2ZENBblhDSWdLeUFv
ZEdocGN5NTBaWEp0YVc1aGJITmZXM041YldKdmJGMGdmSHdnYzNsdFltOXNLU0FySUZ3aUoxd2lP
MXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lD
QWdJQ0FnSUdWeWNsTjBjaUE5SUZ3aVVHRnljMlVnWlhKeWIzSWdiMjRnYkdsdVpTQmNJaUFySUNo
NWVXeHBibVZ1YnlBcklERXBJQ3NnWENJNklGVnVaWGh3WldOMFpXUWdYQ0lnS3lBb2MzbHRZbTlz
SUQwOUlERS9YQ0psYm1RZ2IyWWdhVzV3ZFhSY0lqcGNJaWRjSWlBcklDaDBhR2x6TG5SbGNtMXBi
bUZzYzE5YmMzbHRZbTlzWFNCOGZDQnplVzFpYjJ3cElDc2dYQ0luWENJcE8xeHVJQ0FnSUNBZ0lD
QWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjBhR2x6TG5CaGNuTmxSWEp5YjNJ
b1pYSnlVM1J5TENCN2RHVjRkRG9nZEdocGN5NXNaWGhsY2k1dFlYUmphQ3dnZEc5clpXNDZJSFJv
YVhNdWRHVnliV2x1WVd4elgxdHplVzFpYjJ4ZElIeDhJSE41YldKdmJDd2diR2x1WlRvZ2RHaHBj
eTVzWlhobGNpNTVlV3hwYm1WdWJ5d2diRzlqT2lCNWVXeHZZeXdnWlhod1pXTjBaV1E2SUdWNGNH
VmpkR1ZrZlNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNB
Z2FXWWdLR0ZqZEdsdmJsc3dYU0JwYm5OMFlXNWpaVzltSUVGeWNtRjVJQ1ltSUdGamRHbHZiaTVz
Wlc1bmRHZ2dQaUF4S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0IwYUhKdmR5QnVaWGNnUlhKeWIzSW9Y
Q0pRWVhKelpTQkZjbkp2Y2pvZ2JYVnNkR2x3YkdVZ1lXTjBhVzl1Y3lCd2IzTnphV0pzWlNCaGRD
QnpkR0YwWlRvZ1hDSWdLeUJ6ZEdGMFpTQXJJRndpTENCMGIydGxiam9nWENJZ0t5QnplVzFpYjJ3
cE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSE4zYVhSamFDQW9ZV04wYVc5dVd6QmRLU0I3
WEc0Z0lDQWdJQ0FnSUdOaGMyVWdNVHBjYmlBZ0lDQWdJQ0FnSUNBZ0lITjBZV05yTG5CMWMyZ29j
M2x0WW05c0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUhaemRHRmpheTV3ZFhOb0tIUm9hWE11YkdWNFpY
SXVlWGwwWlhoMEtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUd4emRHRmpheTV3ZFhOb0tIUm9hWE11YkdW
NFpYSXVlWGxzYkc5aktUdGNiaUFnSUNBZ0lDQWdJQ0FnSUhOMFlXTnJMbkIxYzJnb1lXTjBhVzl1
V3pGZEtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUhONWJXSnZiQ0E5SUc1MWJHdzdYRzRnSUNBZ0lDQWdJ
Q0FnSUNCcFppQW9JWEJ5WlVWeWNtOXlVM2x0WW05c0tTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lD
QWdlWGxzWlc1bklEMGdkR2hwY3k1c1pYaGxjaTU1ZVd4bGJtYzdYRzRnSUNBZ0lDQWdJQ0FnSUNB
Z0lDQWdlWGwwWlhoMElEMGdkR2hwY3k1c1pYaGxjaTU1ZVhSbGVIUTdYRzRnSUNBZ0lDQWdJQ0Fn
SUNBZ0lDQWdlWGxzYVc1bGJtOGdQU0IwYUdsekxteGxlR1Z5TG5sNWJHbHVaVzV2TzF4dUlDQWdJ
Q0FnSUNBZ0lDQWdJQ0FnSUhsNWJHOWpJRDBnZEdocGN5NXNaWGhsY2k1NWVXeHNiMk03WEc0Z0lD
QWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tISmxZMjkyWlhKcGJtY2dQaUF3S1Z4dUlDQWdJQ0FnSUNB
Z0lDQWdJQ0FnSUNBZ0lDQnlaV052ZG1WeWFXNW5MUzA3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlJR1Zz
YzJVZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lITjViV0p2YkNBOUlIQnlaVVZ5Y205eVUzbHRZ
bTlzTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhCeVpVVnljbTl5VTNsdFltOXNJRDBnYm5Wc2JE
dGNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUNB
Z0lDQmpZWE5sSURJNlhHNGdJQ0FnSUNBZ0lDQWdJQ0JzWlc0Z1BTQjBhR2x6TG5CeWIyUjFZM1Jw
YjI1elgxdGhZM1JwYjI1Yk1WMWRXekZkTzF4dUlDQWdJQ0FnSUNBZ0lDQWdlWGwyWVd3dUpDQTlJ
SFp6ZEdGamExdDJjM1JoWTJzdWJHVnVaM1JvSUMwZ2JHVnVYVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lI
bDVkbUZzTGw4a0lEMGdlMlpwY25OMFgyeHBibVU2SUd4emRHRmphMXRzYzNSaFkyc3ViR1Z1WjNS
b0lDMGdLR3hsYmlCOGZDQXhLVjB1Wm1seWMzUmZiR2x1WlN3Z2JHRnpkRjlzYVc1bE9pQnNjM1Jo
WTJ0YmJITjBZV05yTG14bGJtZDBhQ0F0SURGZExteGhjM1JmYkdsdVpTd2dabWx5YzNSZlkyOXNk
VzF1T2lCc2MzUmhZMnRiYkhOMFlXTnJMbXhsYm1kMGFDQXRJQ2hzWlc0Z2ZId2dNU2xkTG1acGNu
TjBYMk52YkhWdGJpd2diR0Z6ZEY5amIyeDFiVzQ2SUd4emRHRmphMXRzYzNSaFkyc3ViR1Z1WjNS
b0lDMGdNVjB1YkdGemRGOWpiMngxYlc1OU8xeHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tISmhibWRs
Y3lrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIbDVkbUZzTGw4a0xuSmhibWRsSUQwZ1cyeHpk
R0ZqYTF0c2MzUmhZMnN1YkdWdVozUm9JQzBnS0d4bGJpQjhmQ0F4S1YwdWNtRnVaMlZiTUYwc0lH
eHpkR0ZqYTF0c2MzUmhZMnN1YkdWdVozUm9JQzBnTVYwdWNtRnVaMlZiTVYxZE8xeHVJQ0FnSUNB
Z0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lDQWdjaUE5SUhSb2FYTXVjR1Z5Wm05eWJVRmpkR2x2
Ymk1allXeHNLSGw1ZG1Gc0xDQjVlWFJsZUhRc0lIbDViR1Z1Wnl3Z2VYbHNhVzVsYm04c0lIUm9h
WE11ZVhrc0lHRmpkR2x2YmxzeFhTd2dkbk4wWVdOckxDQnNjM1JoWTJzcE8xeHVJQ0FnSUNBZ0lD
QWdJQ0FnYVdZZ0tIUjVjR1Z2WmlCeUlDRTlQU0JjSW5WdVpHVm1hVzVsWkZ3aUtTQjdYRzRnSUNB
Z0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlISTdYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0Fn
SUNBZ0lDQWdJQ0JwWmlBb2JHVnVLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYzNSaFkyc2dQ
U0J6ZEdGamF5NXpiR2xqWlNnd0xDQXRNU0FxSUd4bGJpQXFJRElwTzF4dUlDQWdJQ0FnSUNBZ0lD
QWdJQ0FnSUhaemRHRmpheUE5SUhaemRHRmpheTV6YkdsalpTZ3dMQ0F0TVNBcUlHeGxiaWs3WEc0
Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYkhOMFlXTnJJRDBnYkhOMFlXTnJMbk5zYVdObEtEQXNJQzB4
SUNvZ2JHVnVLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0FnSUhOMFlXTnJM
bkIxYzJnb2RHaHBjeTV3Y205a2RXTjBhVzl1YzE5YllXTjBhVzl1V3pGZFhWc3dYU2s3WEc0Z0lD
QWdJQ0FnSUNBZ0lDQjJjM1JoWTJzdWNIVnphQ2g1ZVhaaGJDNGtLVHRjYmlBZ0lDQWdJQ0FnSUNB
Z0lHeHpkR0ZqYXk1d2RYTm9LSGw1ZG1Gc0xsOGtLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHNWxkMU4w
WVhSbElEMGdkR0ZpYkdWYmMzUmhZMnRiYzNSaFkyc3ViR1Z1WjNSb0lDMGdNbDFkVzNOMFlXTnJX
M04wWVdOckxteGxibWQwYUNBdElERmRYVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lITjBZV05yTG5CMWMy
Z29ibVYzVTNSaGRHVXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ1luSmxZV3M3WEc0Z0lDQWdJQ0FnSUdO
aGMyVWdNenBjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCMGNuVmxPMXh1SUNBZ0lDQWdJQ0I5
WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCMGNuVmxPMXh1ZlZ4dWZUdGNiaThxSUVwcGMyOXVJ
R2RsYm1WeVlYUmxaQ0JzWlhobGNpQXFMMXh1ZG1GeUlHeGxlR1Z5SUQwZ0tHWjFibU4wYVc5dUtD
bDdYRzUyWVhJZ2JHVjRaWElnUFNBb2UwVlBSam94TEZ4dWNHRnljMlZGY25KdmNqcG1kVzVqZEds
dmJpQndZWEp6WlVWeWNtOXlLSE4wY2l3Z2FHRnphQ2tnZTF4dUlDQWdJQ0FnSUNCcFppQW9kR2hw
Y3k1NWVTNXdZWEp6WlhJcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhSb2FYTXVlWGt1Y0dGeWMyVnlM
bkJoY25ObFJYSnliM0lvYzNSeUxDQm9ZWE5vS1R0Y2JpQWdJQ0FnSUNBZ2ZTQmxiSE5sSUh0Y2Jp
QWdJQ0FnSUNBZ0lDQWdJSFJvY205M0lHNWxkeUJGY25KdmNpaHpkSElwTzF4dUlDQWdJQ0FnSUNC
OVhHNGdJQ0FnZlN4Y2JuTmxkRWx1Y0hWME9tWjFibU4wYVc5dUlDaHBibkIxZENrZ2UxeHVJQ0Fn
SUNBZ0lDQjBhR2x6TGw5cGJuQjFkQ0E5SUdsdWNIVjBPMXh1SUNBZ0lDQWdJQ0IwYUdsekxsOXRi
M0psSUQwZ2RHaHBjeTVmYkdWemN5QTlJSFJvYVhNdVpHOXVaU0E5SUdaaGJITmxPMXh1SUNBZ0lD
QWdJQ0IwYUdsekxubDViR2x1Wlc1dklEMGdkR2hwY3k1NWVXeGxibWNnUFNBd08xeHVJQ0FnSUNB
Z0lDQjBhR2x6TG5sNWRHVjRkQ0E5SUhSb2FYTXViV0YwWTJobFpDQTlJSFJvYVhNdWJXRjBZMmdn
UFNBbkp6dGNiaUFnSUNBZ0lDQWdkR2hwY3k1amIyNWthWFJwYjI1VGRHRmpheUE5SUZzblNVNUpW
RWxCVENkZE8xeHVJQ0FnSUNBZ0lDQjBhR2x6TG5sNWJHeHZZeUE5SUh0bWFYSnpkRjlzYVc1bE9q
RXNabWx5YzNSZlkyOXNkVzF1T2pBc2JHRnpkRjlzYVc1bE9qRXNiR0Z6ZEY5amIyeDFiVzQ2TUgw
N1hHNGdJQ0FnSUNBZ0lHbG1JQ2gwYUdsekxtOXdkR2x2Ym5NdWNtRnVaMlZ6S1NCMGFHbHpMbmw1
Ykd4dll5NXlZVzVuWlNBOUlGc3dMREJkTzF4dUlDQWdJQ0FnSUNCMGFHbHpMbTltWm5ObGRDQTlJ
REE3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUIwYUdsek8xeHVJQ0FnSUgwc1hHNXBibkIxZERwbWRX
NWpkR2x2YmlBb0tTQjdYRzRnSUNBZ0lDQWdJSFpoY2lCamFDQTlJSFJvYVhNdVgybHVjSFYwV3pC
ZE8xeHVJQ0FnSUNBZ0lDQjBhR2x6TG5sNWRHVjRkQ0FyUFNCamFEdGNiaUFnSUNBZ0lDQWdkR2hw
Y3k1NWVXeGxibWNyS3p0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTV2Wm1aelpYUXJLenRjYmlBZ0lDQWdJ
Q0FnZEdocGN5NXRZWFJqYUNBclBTQmphRHRjYmlBZ0lDQWdJQ0FnZEdocGN5NXRZWFJqYUdWa0lD
czlJR05vTzF4dUlDQWdJQ0FnSUNCMllYSWdiR2x1WlhNZ1BTQmphQzV0WVhSamFDZ3ZLRDg2WEZ4
eVhGeHVQM3hjWEc0cExpb3ZaeWs3WEc0Z0lDQWdJQ0FnSUdsbUlDaHNhVzVsY3lrZ2UxeHVJQ0Fn
SUNBZ0lDQWdJQ0FnZEdocGN5NTVlV3hwYm1WdWJ5c3JPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2RHaHBj
eTU1ZVd4c2IyTXViR0Z6ZEY5c2FXNWxLeXM3WEc0Z0lDQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lD
QWdJQ0FnSUNBZ0lDQjBhR2x6TG5sNWJHeHZZeTVzWVhOMFgyTnZiSFZ0Ymlzck8xeHVJQ0FnSUNB
Z0lDQjlYRzRnSUNBZ0lDQWdJR2xtSUNoMGFHbHpMbTl3ZEdsdmJuTXVjbUZ1WjJWektTQjBhR2x6
TG5sNWJHeHZZeTV5WVc1blpWc3hYU3NyTzF4dVhHNGdJQ0FnSUNBZ0lIUm9hWE11WDJsdWNIVjBJ
RDBnZEdocGN5NWZhVzV3ZFhRdWMyeHBZMlVvTVNrN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCamFE
dGNiaUFnSUNCOUxGeHVkVzV3ZFhRNlpuVnVZM1JwYjI0Z0tHTm9LU0I3WEc0Z0lDQWdJQ0FnSUha
aGNpQnNaVzRnUFNCamFDNXNaVzVuZEdnN1hHNGdJQ0FnSUNBZ0lIWmhjaUJzYVc1bGN5QTlJR05v
TG5Od2JHbDBLQzhvUHpwY1hISmNYRzQvZkZ4Y2Jpa3ZaeWs3WEc1Y2JpQWdJQ0FnSUNBZ2RHaHBj
eTVmYVc1d2RYUWdQU0JqYUNBcklIUm9hWE11WDJsdWNIVjBPMXh1SUNBZ0lDQWdJQ0IwYUdsekxu
bDVkR1Y0ZENBOUlIUm9hWE11ZVhsMFpYaDBMbk4xWW5OMGNpZ3dMQ0IwYUdsekxubDVkR1Y0ZEM1
c1pXNW5kR2d0YkdWdUxURXBPMXh1SUNBZ0lDQWdJQ0F2TDNSb2FYTXVlWGxzWlc1bklDMDlJR3hs
Ymp0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTV2Wm1aelpYUWdMVDBnYkdWdU8xeHVJQ0FnSUNBZ0lDQjJZ
WElnYjJ4a1RHbHVaWE1nUFNCMGFHbHpMbTFoZEdOb0xuTndiR2wwS0M4b1B6cGNYSEpjWEc0L2ZG
eGNiaWt2WnlrN1hHNGdJQ0FnSUNBZ0lIUm9hWE11YldGMFkyZ2dQU0IwYUdsekxtMWhkR05vTG5O
MVluTjBjaWd3TENCMGFHbHpMbTFoZEdOb0xteGxibWQwYUMweEtUdGNiaUFnSUNBZ0lDQWdkR2hw
Y3k1dFlYUmphR1ZrSUQwZ2RHaHBjeTV0WVhSamFHVmtMbk4xWW5OMGNpZ3dMQ0IwYUdsekxtMWhk
R05vWldRdWJHVnVaM1JvTFRFcE8xeHVYRzRnSUNBZ0lDQWdJR2xtSUNoc2FXNWxjeTVzWlc1bmRH
Z3RNU2tnZEdocGN5NTVlV3hwYm1WdWJ5QXRQU0JzYVc1bGN5NXNaVzVuZEdndE1UdGNiaUFnSUNB
Z0lDQWdkbUZ5SUhJZ1BTQjBhR2x6TG5sNWJHeHZZeTV5WVc1blpUdGNibHh1SUNBZ0lDQWdJQ0Iw
YUdsekxubDViR3h2WXlBOUlIdG1hWEp6ZEY5c2FXNWxPaUIwYUdsekxubDViR3h2WXk1bWFYSnpk
RjlzYVc1bExGeHVJQ0FnSUNBZ0lDQWdJR3hoYzNSZmJHbHVaVG9nZEdocGN5NTVlV3hwYm1WdWJ5
c3hMRnh1SUNBZ0lDQWdJQ0FnSUdacGNuTjBYMk52YkhWdGJqb2dkR2hwY3k1NWVXeHNiMk11Wm1s
eWMzUmZZMjlzZFcxdUxGeHVJQ0FnSUNBZ0lDQWdJR3hoYzNSZlkyOXNkVzF1T2lCc2FXNWxjeUEv
WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ2hzYVc1bGN5NXNaVzVuZEdnZ1BUMDlJRzlzWkV4cGJtVnpM
bXhsYm1kMGFDQS9JSFJvYVhNdWVYbHNiRzlqTG1acGNuTjBYMk52YkhWdGJpQTZJREFwSUNzZ2Iy
eGtUR2x1WlhOYmIyeGtUR2x1WlhNdWJHVnVaM1JvSUMwZ2JHbHVaWE11YkdWdVozUm9YUzVzWlc1
bmRHZ2dMU0JzYVc1bGMxc3dYUzVzWlc1bmRHZzZYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lIUm9hWE11
ZVhsc2JHOWpMbVpwY25OMFgyTnZiSFZ0YmlBdElHeGxibHh1SUNBZ0lDQWdJQ0FnSUgwN1hHNWNi
aUFnSUNBZ0lDQWdhV1lnS0hSb2FYTXViM0IwYVc5dWN5NXlZVzVuWlhNcElIdGNiaUFnSUNBZ0lD
QWdJQ0FnSUhSb2FYTXVlWGxzYkc5akxuSmhibWRsSUQwZ1czSmJNRjBzSUhKYk1GMGdLeUIwYUds
ekxubDViR1Z1WnlBdElHeGxibDA3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2NtVjBkWEp1
SUhSb2FYTTdYRzRnSUNBZ2ZTeGNibTF2Y21VNlpuVnVZM1JwYjI0Z0tDa2dlMXh1SUNBZ0lDQWdJ
Q0IwYUdsekxsOXRiM0psSUQwZ2RISjFaVHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSFJvYVhNN1hH
NGdJQ0FnZlN4Y2JteGxjM002Wm5WdVkzUnBiMjRnS0c0cElIdGNiaUFnSUNBZ0lDQWdkR2hwY3k1
MWJuQjFkQ2gwYUdsekxtMWhkR05vTG5Oc2FXTmxLRzRwS1R0Y2JpQWdJQ0I5TEZ4dWNHRnpkRWx1
Y0hWME9tWjFibU4wYVc5dUlDZ3BJSHRjYmlBZ0lDQWdJQ0FnZG1GeUlIQmhjM1FnUFNCMGFHbHpM
bTFoZEdOb1pXUXVjM1ZpYzNSeUtEQXNJSFJvYVhNdWJXRjBZMmhsWkM1c1pXNW5kR2dnTFNCMGFH
bHpMbTFoZEdOb0xteGxibWQwYUNrN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlBb2NHRnpkQzVzWlc1
bmRHZ2dQaUF5TUNBL0lDY3VMaTRuT2ljbktTQXJJSEJoYzNRdWMzVmljM1J5S0MweU1Da3VjbVZ3
YkdGalpTZ3ZYRnh1TDJjc0lGd2lYQ0lwTzF4dUlDQWdJSDBzWEc1MWNHTnZiV2x1WjBsdWNIVjBP
bVoxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0FnSUNBZ2RtRnlJRzVsZUhRZ1BTQjBhR2x6TG0xaGRH
Tm9PMXh1SUNBZ0lDQWdJQ0JwWmlBb2JtVjRkQzVzWlc1bmRHZ2dQQ0F5TUNrZ2UxeHVJQ0FnSUNB
Z0lDQWdJQ0FnYm1WNGRDQXJQU0IwYUdsekxsOXBibkIxZEM1emRXSnpkSElvTUN3Z01qQXRibVY0
ZEM1c1pXNW5kR2dwTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlBb2JtVjRk
QzV6ZFdKemRISW9NQ3d5TUNrcktHNWxlSFF1YkdWdVozUm9JRDRnTWpBZ1B5QW5MaTR1Snpvbkp5
a3BMbkpsY0d4aFkyVW9MMXhjYmk5bkxDQmNJbHdpS1R0Y2JpQWdJQ0I5TEZ4dWMyaHZkMUJ2YzJs
MGFXOXVPbVoxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0FnSUNBZ2RtRnlJSEJ5WlNBOUlIUm9hWE11
Y0dGemRFbHVjSFYwS0NrN1hHNGdJQ0FnSUNBZ0lIWmhjaUJqSUQwZ2JtVjNJRUZ5Y21GNUtIQnla
UzVzWlc1bmRHZ2dLeUF4S1M1cWIybHVLRndpTFZ3aUtUdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlI
QnlaU0FySUhSb2FYTXVkWEJqYjIxcGJtZEpibkIxZENncElDc2dYQ0pjWEc1Y0lpQXJJR01yWENK
ZVhDSTdYRzRnSUNBZ2ZTeGNibTVsZUhRNlpuVnVZM1JwYjI0Z0tDa2dlMXh1SUNBZ0lDQWdJQ0Jw
WmlBb2RHaHBjeTVrYjI1bEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnZEdocGN5NUZU
MFk3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2FXWWdLQ0YwYUdsekxsOXBibkIxZENrZ2RH
aHBjeTVrYjI1bElEMGdkSEoxWlR0Y2JseHVJQ0FnSUNBZ0lDQjJZWElnZEc5clpXNHNYRzRnSUNB
Z0lDQWdJQ0FnSUNCdFlYUmphQ3hjYmlBZ0lDQWdJQ0FnSUNBZ0lIUmxiWEJOWVhSamFDeGNiaUFn
SUNBZ0lDQWdJQ0FnSUdsdVpHVjRMRnh1SUNBZ0lDQWdJQ0FnSUNBZ1kyOXNMRnh1SUNBZ0lDQWdJ
Q0FnSUNBZ2JHbHVaWE03WEc0Z0lDQWdJQ0FnSUdsbUlDZ2hkR2hwY3k1ZmJXOXlaU2tnZTF4dUlD
QWdJQ0FnSUNBZ0lDQWdkR2hwY3k1NWVYUmxlSFFnUFNBbkp6dGNiaUFnSUNBZ0lDQWdJQ0FnSUhS
b2FYTXViV0YwWTJnZ1BTQW5KenRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCMllYSWdjblZz
WlhNZ1BTQjBhR2x6TGw5amRYSnlaVzUwVW5Wc1pYTW9LVHRjYmlBZ0lDQWdJQ0FnWm05eUlDaDJZ
WElnYVQwd08ya2dQQ0J5ZFd4bGN5NXNaVzVuZEdnN0lHa3JLeWtnZTF4dUlDQWdJQ0FnSUNBZ0lD
QWdkR1Z0Y0UxaGRHTm9JRDBnZEdocGN5NWZhVzV3ZFhRdWJXRjBZMmdvZEdocGN5NXlkV3hsYzF0
eWRXeGxjMXRwWFYwcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tIUmxiWEJOWVhSamFDQW1KaUFv
SVcxaGRHTm9JSHg4SUhSbGJYQk5ZWFJqYUZzd1hTNXNaVzVuZEdnZ1BpQnRZWFJqYUZzd1hTNXNa
VzVuZEdncEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdiV0YwWTJnZ1BTQjBaVzF3VFdGMFky
ZzdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhVzVrWlhnZ1BTQnBPMXh1SUNBZ0lDQWdJQ0FnSUNB
Z0lDQWdJR2xtSUNnaGRHaHBjeTV2Y0hScGIyNXpMbVpzWlhncElHSnlaV0ZyTzF4dUlDQWdJQ0Fn
SUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUdsbUlDaHRZWFJqYUNrZ2UxeHVJ
Q0FnSUNBZ0lDQWdJQ0FnYkdsdVpYTWdQU0J0WVhSamFGc3dYUzV0WVhSamFDZ3ZLRDg2WEZ4eVhG
eHVQM3hjWEc0cExpb3ZaeWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvYkdsdVpYTXBJSFJvYVhN
dWVYbHNhVzVsYm04Z0t6MGdiR2x1WlhNdWJHVnVaM1JvTzF4dUlDQWdJQ0FnSUNBZ0lDQWdkR2hw
Y3k1NWVXeHNiMk1nUFNCN1ptbHljM1JmYkdsdVpUb2dkR2hwY3k1NWVXeHNiMk11YkdGemRGOXNh
VzVsTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2JHRnpkRjlzYVc1bE9p
QjBhR2x6TG5sNWJHbHVaVzV2S3pFc1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNB
Z0lDQm1hWEp6ZEY5amIyeDFiVzQ2SUhSb2FYTXVlWGxzYkc5akxteGhjM1JmWTI5c2RXMXVMRnh1
SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYkdGemRGOWpiMngxYlc0NklHeHBi
bVZ6SUQ4Z2JHbHVaWE5iYkdsdVpYTXViR1Z1WjNSb0xURmRMbXhsYm1kMGFDMXNhVzVsYzF0c2FX
NWxjeTVzWlc1bmRHZ3RNVjB1YldGMFkyZ29MMXhjY2o5Y1hHNC9MeWxiTUYwdWJHVnVaM1JvSURv
Z2RHaHBjeTU1ZVd4c2IyTXViR0Z6ZEY5amIyeDFiVzRnS3lCdFlYUmphRnN3WFM1c1pXNW5kR2g5
TzF4dUlDQWdJQ0FnSUNBZ0lDQWdkR2hwY3k1NWVYUmxlSFFnS3owZ2JXRjBZMmhiTUYwN1hHNGdJ
Q0FnSUNBZ0lDQWdJQ0IwYUdsekxtMWhkR05vSUNzOUlHMWhkR05vV3pCZE8xeHVJQ0FnSUNBZ0lD
QWdJQ0FnZEdocGN5NXRZWFJqYUdWeklEMGdiV0YwWTJnN1hHNGdJQ0FnSUNBZ0lDQWdJQ0IwYUds
ekxubDViR1Z1WnlBOUlIUm9hWE11ZVhsMFpYaDBMbXhsYm1kMGFEdGNiaUFnSUNBZ0lDQWdJQ0Fn
SUdsbUlDaDBhR2x6TG05d2RHbHZibk11Y21GdVoyVnpLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJ
Q0FnZEdocGN5NTVlV3hzYjJNdWNtRnVaMlVnUFNCYmRHaHBjeTV2Wm1aelpYUXNJSFJvYVhNdWIy
Wm1jMlYwSUNzOUlIUm9hWE11ZVhsc1pXNW5YVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNB
Z0lDQWdJQ0FnSUhSb2FYTXVYMjF2Y21VZ1BTQm1ZV3h6WlR0Y2JpQWdJQ0FnSUNBZ0lDQWdJSFJv
YVhNdVgybHVjSFYwSUQwZ2RHaHBjeTVmYVc1d2RYUXVjMnhwWTJVb2JXRjBZMmhiTUYwdWJHVnVa
M1JvS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSFJvYVhNdWJXRjBZMmhsWkNBclBTQnRZWFJqYUZzd1hU
dGNiaUFnSUNBZ0lDQWdJQ0FnSUhSdmEyVnVJRDBnZEdocGN5NXdaWEptYjNKdFFXTjBhVzl1TG1O
aGJHd29kR2hwY3l3Z2RHaHBjeTU1ZVN3Z2RHaHBjeXdnY25Wc1pYTmJhVzVrWlhoZExIUm9hWE11
WTI5dVpHbDBhVzl1VTNSaFkydGJkR2hwY3k1amIyNWthWFJwYjI1VGRHRmpheTVzWlc1bmRHZ3RN
VjBwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0hSb2FYTXVaRzl1WlNBbUppQjBhR2x6TGw5cGJu
QjFkQ2tnZEdocGN5NWtiMjVsSUQwZ1ptRnNjMlU3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvZEc5
clpXNHBJSEpsZEhWeWJpQjBiMnRsYmp0Y2JpQWdJQ0FnSUNBZ0lDQWdJR1ZzYzJVZ2NtVjBkWEp1
TzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lHbG1JQ2gwYUdsekxsOXBibkIxZENBOVBUMGdY
Q0pjSWlrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJSFJvYVhNdVJVOUdPMXh1SUNBZ0lD
QWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhSb2FYTXVjR0Z5YzJW
RmNuSnZjaWduVEdWNGFXTmhiQ0JsY25KdmNpQnZiaUJzYVc1bElDY3JLSFJvYVhNdWVYbHNhVzVs
Ym04ck1Ta3JKeTRnVlc1eVpXTnZaMjVwZW1Wa0lIUmxlSFF1WEZ4dUp5dDBhR2x6TG5Ob2IzZFFi
M05wZEdsdmJpZ3BMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCN2RHVjRkRG9nWENKY0lp
d2dkRzlyWlc0NklHNTFiR3dzSUd4cGJtVTZJSFJvYVhNdWVYbHNhVzVsYm05OUtUdGNiaUFnSUNB
Z0lDQWdmVnh1SUNBZ0lIMHNYRzVzWlhnNlpuVnVZM1JwYjI0Z2JHVjRLQ2tnZTF4dUlDQWdJQ0Fn
SUNCMllYSWdjaUE5SUhSb2FYTXVibVY0ZENncE8xeHVJQ0FnSUNBZ0lDQnBaaUFvZEhsd1pXOW1J
SElnSVQwOUlDZDFibVJsWm1sdVpXUW5LU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2Nq
dGNiaUFnSUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUIwYUds
ekxteGxlQ2dwTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnZlN4Y2JtSmxaMmx1T21aMWJtTjBhVzl1
SUdKbFoybHVLR052Ym1ScGRHbHZiaWtnZTF4dUlDQWdJQ0FnSUNCMGFHbHpMbU52Ym1ScGRHbHZi
bE4wWVdOckxuQjFjMmdvWTI5dVpHbDBhVzl1S1R0Y2JpQWdJQ0I5TEZ4dWNHOXdVM1JoZEdVNlpu
VnVZM1JwYjI0Z2NHOXdVM1JoZEdVb0tTQjdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQjBhR2x6TG1O
dmJtUnBkR2x2YmxOMFlXTnJMbkJ2Y0NncE8xeHVJQ0FnSUgwc1hHNWZZM1Z5Y21WdWRGSjFiR1Z6
T21aMWJtTjBhVzl1SUY5amRYSnlaVzUwVW5Wc1pYTW9LU0I3WEc0Z0lDQWdJQ0FnSUhKbGRIVnli
aUIwYUdsekxtTnZibVJwZEdsdmJuTmJkR2hwY3k1amIyNWthWFJwYjI1VGRHRmphMXQwYUdsekxt
TnZibVJwZEdsdmJsTjBZV05yTG14bGJtZDBhQzB4WFYwdWNuVnNaWE03WEc0Z0lDQWdmU3hjYm5S
dmNGTjBZWFJsT21aMWJtTjBhVzl1SUNncElIdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlIUm9hWE11
WTI5dVpHbDBhVzl1VTNSaFkydGJkR2hwY3k1amIyNWthWFJwYjI1VGRHRmpheTVzWlc1bmRHZ3RN
bDA3WEc0Z0lDQWdmU3hjYm5CMWMyaFRkR0YwWlRwbWRXNWpkR2x2YmlCaVpXZHBiaWhqYjI1a2FY
UnBiMjRwSUh0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTVpWldkcGJpaGpiMjVrYVhScGIyNHBPMXh1SUNB
Z0lIMTlLVHRjYm14bGVHVnlMbTl3ZEdsdmJuTWdQU0I3ZlR0Y2JteGxlR1Z5TG5CbGNtWnZjbTFC
WTNScGIyNGdQU0JtZFc1amRHbHZiaUJoYm05dWVXMXZkWE1vZVhrc2VYbGZMQ1JoZG05cFpHbHVa
MTl1WVcxbFgyTnZiR3hwYzJsdmJuTXNXVmxmVTFSQlVsUmNiaThxS2k4cElIdGNibHh1WEc1bWRX
NWpkR2x2YmlCemRISnBjQ2h6ZEdGeWRDd2daVzVrS1NCN1hHNGdJSEpsZEhWeWJpQjVlVjh1ZVhs
MFpYaDBJRDBnZVhsZkxubDVkR1Y0ZEM1emRXSnpkSElvYzNSaGNuUXNJSGw1WHk1NWVXeGxibWN0
Wlc1a0tUdGNibjFjYmx4dVhHNTJZWElnV1ZsVFZFRlVSVDFaV1Y5VFZFRlNWRnh1YzNkcGRHTm9L
Q1JoZG05cFpHbHVaMTl1WVcxbFgyTnZiR3hwYzJsdmJuTXBJSHRjYm1OaGMyVWdNRHBjYmlBZ0lD
QWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZb2VYbGZMbmw1ZEdW
NGRDNXpiR2xqWlNndE1pa2dQVDA5SUZ3aVhGeGNYRnhjWEZ4Y0lpa2dlMXh1SUNBZ0lDQWdJQ0Fn
SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhOMGNtbHdLREFzTVNrN1hHNGdJ
Q0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkR2hwY3k1aVpX
ZHBiaWhjSW0xMVhDSXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNB
Z0lDQWdJQ0I5SUdWc2MyVWdhV1lvZVhsZkxubDVkR1Y0ZEM1emJHbGpaU2d0TVNrZ1BUMDlJRndp
WEZ4Y1hGd2lLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJ
Q0FnSUNBZ2MzUnlhWEFvTUN3eEtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lD
QWdJQ0FnSUNBZ0lDQWdJQ0IwYUdsekxtSmxaMmx1S0Z3aVpXMTFYQ0lwTzF4dUlDQWdJQ0FnSUNB
Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0Fn
SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIUm9hWE11WW1WbmFXNG9Y
Q0p0ZFZ3aUtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lD
QWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlo
NWVWOHVlWGwwWlhoMEtTQnlaWFIxY200Z01UVTdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0Fn
SUNBZ0lDQWdJQ0FnSUNBZ0lDQmNibUp5WldGck8xeHVZMkZ6WlNBeE9uSmxkSFZ5YmlBeE5UdGNi
bUp5WldGck8xeHVZMkZ6WlNBeU9seHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lD
QWdJQ0FnSUNBZ0lDQjBhR2x6TG5CdmNGTjBZWFJsS0NrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNB
Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlBeE5UdGNiaUFnSUNBZ0lDQWdJQ0Fn
SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lGeHVZbkpsWVdzN1hHNWpZWE5sSURNNmRHaHBj
eTVpWldkcGJpZ25jbUYzSnlrN0lISmxkSFZ5YmlBeE5UdGNibUp5WldGck8xeHVZMkZ6WlNBME9s
eHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIUm9hWE11Y0c5
d1UzUmhkR1VvS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0Fn
SUNBdkx5QlRhRzkxYkdRZ1ltVWdkWE5wYm1jZ1lIUm9hWE11ZEc5d1UzUmhkR1VvS1dBZ1ltVnNi
M2NzSUdKMWRDQnBkQ0JqZFhKeVpXNTBiSGxjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lD
QWdJQ0FnSUNBZ0lDQWdJQ0F2THlCeVpYUjFjbTV6SUhSb1pTQnpaV052Ym1RZ2RHOXdJR2x1YzNS
bFlXUWdiMllnZEdobElHWnBjbk4wSUhSdmNDNGdUM0JsYm1Wa0lHRnVYRzRnSUNBZ0lDQWdJQ0Fn
SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdMeThnYVhOemRXVWdZV0p2ZFhRZ2FYUWdZ
WFFnYUhSMGNITTZMeTluYVhSb2RXSXVZMjl0TDNwaFlXTm9MMnBwYzI5dUwybHpjM1ZsY3k4eU9U
RmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvZEdo
cGN5NWpiMjVrYVhScGIyNVRkR0ZqYTF0MGFHbHpMbU52Ym1ScGRHbHZibE4wWVdOckxteGxibWQw
YUMweFhTQTlQVDBnSjNKaGR5Y3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJ
Q0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUF4TlR0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lD
QWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNB
Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2VYbGZMbmw1ZEdWNGRDQTlJSGw1WHk1NWVYUmxlSFF1
YzNWaWMzUnlLRFVzSUhsNVh5NTVlV3hsYm1jdE9TazdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJ
Q0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdKMFZPUkY5U1FWZGZRa3hQUTBzbk8x
eHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNB
Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lGeHVZbkpsWVdzN1hHNWpZWE5s
SURVNklISmxkSFZ5YmlBeE5Uc2dYRzVpY21WaGF6dGNibU5oYzJVZ05qcGNiaUFnZEdocGN5NXdi
M0JUZEdGMFpTZ3BPMXh1SUNCeVpYUjFjbTRnTVRRN1hHNWNibUp5WldGck8xeHVZMkZ6WlNBM09u
SmxkSFZ5YmlBMk5UdGNibUp5WldGck8xeHVZMkZ6WlNBNE9uSmxkSFZ5YmlBMk9EdGNibUp5WldG
ck8xeHVZMkZ6WlNBNU9pQnlaWFIxY200Z01UazdJRnh1WW5KbFlXczdYRzVqWVhObElERXdPbHh1
SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSFJvYVhNdWNHOXdV
M1JoZEdVb0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lD
QjBhR2x6TG1KbFoybHVLQ2R5WVhjbktUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNB
Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z01qTTdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0Fn
SUNBZ0lDQWdJQ0FnSUNBZ0lDQmNibUp5WldGck8xeHVZMkZ6WlNBeE1UcHlaWFIxY200Z05UVTdY
RzVpY21WaGF6dGNibU5oYzJVZ01USTZjbVYwZFhKdUlEWXdPMXh1WW5KbFlXczdYRzVqWVhObElE
RXpPbkpsZEhWeWJpQXlPVHRjYm1KeVpXRnJPMXh1WTJGelpTQXhORHB5WlhSMWNtNGdORGM3WEc1
aWNtVmhhenRjYm1OaGMyVWdNVFU2ZEdocGN5NXdiM0JUZEdGMFpTZ3BPeUJ5WlhSMWNtNGdORFE3
WEc1aWNtVmhhenRjYm1OaGMyVWdNVFk2ZEdocGN5NXdiM0JUZEdGMFpTZ3BPeUJ5WlhSMWNtNGdO
RFE3WEc1aWNtVmhhenRjYm1OaGMyVWdNVGM2Y21WMGRYSnVJRE0wTzF4dVluSmxZV3M3WEc1allY
TmxJREU0T25KbGRIVnliaUF6T1R0Y2JtSnlaV0ZyTzF4dVkyRnpaU0F4T1RweVpYUjFjbTRnTlRF
N1hHNWljbVZoYXp0Y2JtTmhjMlVnTWpBNmNtVjBkWEp1SURRNE8xeHVZbkpsWVdzN1hHNWpZWE5s
SURJeE9seHVJQ0IwYUdsekxuVnVjSFYwS0hsNVh5NTVlWFJsZUhRcE8xeHVJQ0IwYUdsekxuQnZj
Rk4wWVhSbEtDazdYRzRnSUhSb2FYTXVZbVZuYVc0b0oyTnZiU2NwTzF4dVhHNWljbVZoYXp0Y2Jt
TmhjMlVnTWpJNlhHNGdJSFJvYVhNdWNHOXdVM1JoZEdVb0tUdGNiaUFnY21WMGRYSnVJREUwTzF4
dVhHNWljbVZoYXp0Y2JtTmhjMlVnTWpNNmNtVjBkWEp1SURRNE8xeHVZbkpsWVdzN1hHNWpZWE5s
SURJME9uSmxkSFZ5YmlBM016dGNibUp5WldGck8xeHVZMkZ6WlNBeU5UcHlaWFIxY200Z056STdY
RzVpY21WaGF6dGNibU5oYzJVZ01qWTZjbVYwZFhKdUlEY3lPMXh1WW5KbFlXczdYRzVqWVhObElE
STNPbkpsZEhWeWJpQTROenRjYm1KeVpXRnJPMXh1WTJGelpTQXlPRG92THlCcFoyNXZjbVVnZDJo
cGRHVnpjR0ZqWlZ4dVluSmxZV3M3WEc1allYTmxJREk1T25Sb2FYTXVjRzl3VTNSaGRHVW9LVHNn
Y21WMGRYSnVJRFUwTzF4dVluSmxZV3M3WEc1allYTmxJRE13T25Sb2FYTXVjRzl3VTNSaGRHVW9L
VHNnY21WMGRYSnVJRE16TzF4dVluSmxZV3M3WEc1allYTmxJRE14T25sNVh5NTVlWFJsZUhRZ1BT
QnpkSEpwY0NneExESXBMbkpsY0d4aFkyVW9MMXhjWEZ4Y0lpOW5MQ2RjSWljcE95QnlaWFIxY200
Z09EQTdYRzVpY21WaGF6dGNibU5oYzJVZ016STZlWGxmTG5sNWRHVjRkQ0E5SUhOMGNtbHdLREVz
TWlrdWNtVndiR0ZqWlNndlhGeGNYQ2N2Wnl4Y0lpZGNJaWs3SUhKbGRIVnliaUE0TUR0Y2JtSnla
V0ZyTzF4dVkyRnpaU0F6TXpweVpYUjFjbTRnT0RVN1hHNWljbVZoYXp0Y2JtTmhjMlVnTXpRNmNt
VjBkWEp1SURneU8xeHVZbkpsWVdzN1hHNWpZWE5sSURNMU9uSmxkSFZ5YmlBNE1qdGNibUp5WldG
ck8xeHVZMkZ6WlNBek5qcHlaWFIxY200Z09ETTdYRzVpY21WaGF6dGNibU5oYzJVZ016YzZjbVYw
ZFhKdUlEZzBPMXh1WW5KbFlXczdYRzVqWVhObElETTRPbkpsZEhWeWJpQTRNVHRjYm1KeVpXRnJP
MXh1WTJGelpTQXpPVHB5WlhSMWNtNGdOelU3WEc1aWNtVmhhenRjYm1OaGMyVWdOREE2Y21WMGRY
SnVJRGMzTzF4dVluSmxZV3M3WEc1allYTmxJRFF4T25KbGRIVnliaUEzTWp0Y2JtSnlaV0ZyTzF4
dVkyRnpaU0EwTWpwNWVWOHVlWGwwWlhoMElEMGdlWGxmTG5sNWRHVjRkQzV5WlhCc1lXTmxLQzlj
WEZ4Y0tGdGNYRnhjWEZ4ZFhTa3ZaeXduSkRFbktUc2djbVYwZFhKdUlEY3lPMXh1WW5KbFlXczdY
RzVqWVhObElEUXpPbkpsZEhWeWJpQW5TVTVXUVV4SlJDYzdYRzVpY21WaGF6dGNibU5oYzJVZ05E
UTZjbVYwZFhKdUlEVTdYRzVpY21WaGF6dGNibjFjYm4wN1hHNXNaWGhsY2k1eWRXeGxjeUE5SUZz
dlhpZy9PbHRlWEZ4NE1EQmRLajhvUHowb1hGeDdYRng3S1NrcEx5d3ZYaWcvT2x0ZVhGeDRNREJk
S3lrdkxDOWVLRDg2VzE1Y1hIZ3dNRjE3TWl4OVB5Zy9QU2hjWEh0Y1hIdDhYRnhjWEZ4Y2UxeGNl
M3hjWEZ4Y1hGeGNYRnhjZTF4Y2Uzd2tLU2twTHl3dlhpZy9PbHhjZTF4Y2UxeGNlMXhjZXlnL1BW
dGVYRnd2WFNrcEx5d3ZYaWcvT2x4Y2UxeGNlMXhjZTF4Y2UxeGNMMXRlWEZ4eklWd2lJeVV0TEZ4
Y0xseGNMenN0UGtCY1hGc3RYRnhlWUZ4Y2V5MStYU3NvUHoxYlBYMWNYSE5jWEM4dVhTbGNYSDFj
WEgxY1hIMWNYSDBwTHl3dlhpZy9PbHRlWEZ4NE1EQmRLajhvUHowb1hGeDdYRng3WEZ4N1hGeDdL
U2twTHl3dlhpZy9PbHRjWEhOY1hGTmRLajh0TFNoK0tUOWNYSDFjWEgwcEx5d3ZYaWcvT2x4Y0tD
a3ZMQzllS0Q4NlhGd3BLUzhzTDE0b1B6cGNYSHRjWEh0Y1hIdGNYSHNwTHl3dlhpZy9PbHhjZlZ4
Y2ZWeGNmVnhjZlNrdkxDOWVLRDg2WEZ4N1hGeDdLSDRwUHo0cEx5d3ZYaWcvT2x4Y2UxeGNleWgr
S1Q4alBpa3ZMQzllS0Q4NlhGeDdYRng3S0g0cFB5TmNYQ28vS1M4c0wxNG9QenBjWEh0Y1hIc29m
aWsvWEZ3dktTOHNMMTRvUHpwY1hIdGNYSHNvZmlrL1hGeGVYRnh6S2loK0tUOWNYSDFjWEgwcEx5
d3ZYaWcvT2x4Y2UxeGNleWgrS1Q5Y1hITXFaV3h6WlZ4Y2N5b29maWsvWEZ4OVhGeDlLUzhzTDE0
b1B6cGNYSHRjWEhzb2Zpay9YRnhlS1M4c0wxNG9QenBjWEh0Y1hIc29maWsvWEZ4ekttVnNjMlZj
WEdJcEx5d3ZYaWcvT2x4Y2UxeGNleWgrS1Q5Y1hIc3BMeXd2WGlnL09seGNlMXhjZXloK0tUOG1L
UzhzTDE0b1B6cGNYSHRjWEhzb2Zpay9JUzB0S1M4c0wxNG9QenBjWEh0Y1hIc29maWsvSVZ0Y1hI
TmNYRk5kS2o5Y1hIMWNYSDBwTHl3dlhpZy9PbHhjZTF4Y2V5aCtLVDljWENvL0tTOHNMMTRvUHpv
OUtTOHNMMTRvUHpwY1hDNWNYQzRwTHl3dlhpZy9PbHhjTGlnL1BTaGJQWDU5WEZ4elhGd3ZMaWw4
WFNrcEtTOHNMMTRvUHpwYlhGd3ZMbDBwTHl3dlhpZy9PbHhjY3lzcEx5d3ZYaWcvT2x4Y2ZTaCtL
VDljWEgxY1hIMHBMeXd2WGlnL09paCtLVDljWEgxY1hIMHBMeXd2WGlnL09sd2lLRnhjWEZ4YlhD
SmRmRnRlWENKZEtTcGNJaWt2TEM5ZUtEODZKeWhjWEZ4Y1d5ZGRmRnRlSjEwcEtpY3BMeXd2WGln
L09rQXBMeXd2WGlnL09uUnlkV1VvUHowb1czNTlYRnh6S1YwcEtTa3ZMQzllS0Q4NlptRnNjMlVv
UHowb1czNTlYRnh6S1YwcEtTa3ZMQzllS0Q4NmRXNWtaV1pwYm1Wa0tEODlLRnQrZlZ4Y2N5bGRL
U2twTHl3dlhpZy9PbTUxYkd3b1B6MG9XMzU5WEZ4ektWMHBLU2t2TEM5ZUtEODZMVDliTUMwNVhT
c29QenBjWEM1Yk1DMDVYU3NwUHlnL1BTaGJmbjFjWEhNcFhTa3BLUzhzTDE0b1B6cGhjMXhjY3l0
Y1hId3BMeXd2WGlnL09seGNmQ2t2TEM5ZUtEODZLRnRlWEZ4eklWd2lJeVV0TEZ4Y0xseGNMenN0
UGtCY1hGc3RYRnhlWUZ4Y2V5MStYU3NvUHowb1d6MStmVnhjYzF4Y0x5NHBmRjBwS1NrcEx5d3ZY
aWcvT2x4Y1d5aGNYRnhjWEZ4ZGZGdGVYRnhkWFNrcVhGeGRLUzhzTDE0b1B6b3VLUzhzTDE0b1B6
b2tLUzlkTzF4dWJHVjRaWEl1WTI5dVpHbDBhVzl1Y3lBOUlIdGNJbTExWENJNmUxd2ljblZzWlhO
Y0lqcGJOeXc0TERrc01UQXNNVEVzTVRJc01UTXNNVFFzTVRVc01UWXNNVGNzTVRnc01Ua3NNakFz
TWpFc01qSXNNak1zTWpRc01qVXNNallzTWpjc01qZ3NNamtzTXpBc016RXNNeklzTXpNc016UXNN
elVzTXpZc016Y3NNemdzTXprc05EQXNOREVzTkRJc05ETXNORFJkTEZ3aWFXNWpiSFZ6YVhabFhD
STZabUZzYzJWOUxGd2laVzExWENJNmUxd2ljblZzWlhOY0lqcGJNbDBzWENKcGJtTnNkWE5wZG1W
Y0lqcG1ZV3h6Wlgwc1hDSmpiMjFjSWpwN1hDSnlkV3hsYzF3aU9sczJYU3hjSW1sdVkyeDFjMmwy
WlZ3aU9tWmhiSE5sZlN4Y0luSmhkMXdpT250Y0luSjFiR1Z6WENJNld6TXNOQ3cxWFN4Y0ltbHVZ
MngxYzJsMlpWd2lPbVpoYkhObGZTeGNJa2xPU1ZSSlFVeGNJanA3WENKeWRXeGxjMXdpT2xzd0xE
RXNORFJkTEZ3aWFXNWpiSFZ6YVhabFhDSTZkSEoxWlgxOU8xeHVjbVYwZFhKdUlHeGxlR1Z5TzMw
cEtDbGNibkJoY25ObGNpNXNaWGhsY2lBOUlHeGxlR1Z5TzF4dVpuVnVZM1JwYjI0Z1VHRnljMlZ5
SUNncElIc2dkR2hwY3k1NWVTQTlJSHQ5T3lCOVVHRnljMlZ5TG5CeWIzUnZkSGx3WlNBOUlIQmhj
bk5sY2p0d1lYSnpaWEl1VUdGeWMyVnlJRDBnVUdGeWMyVnlPMXh1Y21WMGRYSnVJRzVsZHlCUVlY
SnpaWEk3WEc1OUtTZ3BPMlY0Y0c5eWRITXVYMTlsYzAxdlpIVnNaU0E5SUhSeWRXVTdYRzVsZUhC
dmNuUnpXeWRrWldaaGRXeDBKMTBnUFNCb1lXNWtiR1ZpWVhKek8xeHVJbDE5CmRpZmYgLS1naXQg
YS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9hbWQvaGFu
ZGxlYmFycy9jb21waWxlci9wcmludGVyLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9k
dWxlcy9oYW5kbGViYXJzL2Rpc3QvYW1kL2hhbmRsZWJhcnMvY29tcGlsZXIvcHJpbnRlci5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZjlmOWMzNWFkNzAzMGJlNTUwYjJmZGM3ZjAzZjZhZjYwZGJkMGE5Ci0tLSAv
ZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJz
L2Rpc3QvYW1kL2hhbmRsZWJhcnMvY29tcGlsZXIvcHJpbnRlci5qcwpAQCAtMCwwICsxLDE4NiBA
QAorZGVmaW5lKFsnZXhwb3J0cycsICcuL3Zpc2l0b3InXSwgZnVuY3Rpb24gKGV4cG9ydHMsIF92
aXNpdG9yKSB7CisgIC8qIGVzbGludC1kaXNhYmxlIG5ldy1jYXAgKi8KKyAgJ3VzZSBzdHJpY3Qn
OworCisgIGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7CisgIGV4cG9ydHMucHJpbnQgPSBwcmlu
dDsKKyAgZXhwb3J0cy5QcmludFZpc2l0b3IgPSBQcmludFZpc2l0b3I7CisgIC8vIGlzdGFuYnVs
IGlnbm9yZSBuZXh0CisKKyAgZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsg
cmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsg
fQorCisgIHZhciBfVmlzaXRvciA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3Zpc2l0b3IpOwor
CisgIGZ1bmN0aW9uIHByaW50KGFzdCkgeworICAgIHJldHVybiBuZXcgUHJpbnRWaXNpdG9yKCku
YWNjZXB0KGFzdCk7CisgIH0KKworICBmdW5jdGlvbiBQcmludFZpc2l0b3IoKSB7CisgICAgdGhp
cy5wYWRkaW5nID0gMDsKKyAgfQorCisgIFByaW50VmlzaXRvci5wcm90b3R5cGUgPSBuZXcgX1Zp
c2l0b3JbJ2RlZmF1bHQnXSgpOworCisgIFByaW50VmlzaXRvci5wcm90b3R5cGUucGFkID0gZnVu
Y3Rpb24gKHN0cmluZykgeworICAgIHZhciBvdXQgPSAnJzsKKworICAgIGZvciAodmFyIGkgPSAw
LCBsID0gdGhpcy5wYWRkaW5nOyBpIDwgbDsgaSsrKSB7CisgICAgICBvdXQgKz0gJyAgJzsKKyAg
ICB9CisKKyAgICBvdXQgKz0gc3RyaW5nICsgJ1xuJzsKKyAgICByZXR1cm4gb3V0OworICB9Owor
CisgIFByaW50VmlzaXRvci5wcm90b3R5cGUuUHJvZ3JhbSA9IGZ1bmN0aW9uIChwcm9ncmFtKSB7
CisgICAgdmFyIG91dCA9ICcnLAorICAgICAgICBib2R5ID0gcHJvZ3JhbS5ib2R5LAorICAgICAg
ICBpID0gdW5kZWZpbmVkLAorICAgICAgICBsID0gdW5kZWZpbmVkOworCisgICAgaWYgKHByb2dy
YW0uYmxvY2tQYXJhbXMpIHsKKyAgICAgIHZhciBibG9ja1BhcmFtcyA9ICdCTE9DSyBQQVJBTVM6
IFsnOworICAgICAgZm9yIChpID0gMCwgbCA9IHByb2dyYW0uYmxvY2tQYXJhbXMubGVuZ3RoOyBp
IDwgbDsgaSsrKSB7CisgICAgICAgIGJsb2NrUGFyYW1zICs9ICcgJyArIHByb2dyYW0uYmxvY2tQ
YXJhbXNbaV07CisgICAgICB9CisgICAgICBibG9ja1BhcmFtcyArPSAnIF0nOworICAgICAgb3V0
ICs9IHRoaXMucGFkKGJsb2NrUGFyYW1zKTsKKyAgICB9CisKKyAgICBmb3IgKGkgPSAwLCBsID0g
Ym9keS5sZW5ndGg7IGkgPCBsOyBpKyspIHsKKyAgICAgIG91dCArPSB0aGlzLmFjY2VwdChib2R5
W2ldKTsKKyAgICB9CisKKyAgICB0aGlzLnBhZGRpbmctLTsKKworICAgIHJldHVybiBvdXQ7Cisg
IH07CisKKyAgUHJpbnRWaXNpdG9yLnByb3RvdHlwZS5NdXN0YWNoZVN0YXRlbWVudCA9IGZ1bmN0
aW9uIChtdXN0YWNoZSkgeworICAgIHJldHVybiB0aGlzLnBhZCgne3sgJyArIHRoaXMuU3ViRXhw
cmVzc2lvbihtdXN0YWNoZSkgKyAnIH19Jyk7CisgIH07CisgIFByaW50VmlzaXRvci5wcm90b3R5
cGUuRGVjb3JhdG9yID0gZnVuY3Rpb24gKG11c3RhY2hlKSB7CisgICAgcmV0dXJuIHRoaXMucGFk
KCd7eyBESVJFQ1RJVkUgJyArIHRoaXMuU3ViRXhwcmVzc2lvbihtdXN0YWNoZSkgKyAnIH19Jyk7
CisgIH07CisKKyAgUHJpbnRWaXNpdG9yLnByb3RvdHlwZS5CbG9ja1N0YXRlbWVudCA9IFByaW50
VmlzaXRvci5wcm90b3R5cGUuRGVjb3JhdG9yQmxvY2sgPSBmdW5jdGlvbiAoYmxvY2spIHsKKyAg
ICB2YXIgb3V0ID0gJyc7CisKKyAgICBvdXQgKz0gdGhpcy5wYWQoKGJsb2NrLnR5cGUgPT09ICdE
ZWNvcmF0b3JCbG9jaycgPyAnRElSRUNUSVZFICcgOiAnJykgKyAnQkxPQ0s6Jyk7CisgICAgdGhp
cy5wYWRkaW5nKys7CisgICAgb3V0ICs9IHRoaXMucGFkKHRoaXMuU3ViRXhwcmVzc2lvbihibG9j
aykpOworICAgIGlmIChibG9jay5wcm9ncmFtKSB7CisgICAgICBvdXQgKz0gdGhpcy5wYWQoJ1BS
T0dSQU06Jyk7CisgICAgICB0aGlzLnBhZGRpbmcrKzsKKyAgICAgIG91dCArPSB0aGlzLmFjY2Vw
dChibG9jay5wcm9ncmFtKTsKKyAgICAgIHRoaXMucGFkZGluZy0tOworICAgIH0KKyAgICBpZiAo
YmxvY2suaW52ZXJzZSkgeworICAgICAgaWYgKGJsb2NrLnByb2dyYW0pIHsKKyAgICAgICAgdGhp
cy5wYWRkaW5nKys7CisgICAgICB9CisgICAgICBvdXQgKz0gdGhpcy5wYWQoJ3t7Xn19Jyk7Cisg
ICAgICB0aGlzLnBhZGRpbmcrKzsKKyAgICAgIG91dCArPSB0aGlzLmFjY2VwdChibG9jay5pbnZl
cnNlKTsKKyAgICAgIHRoaXMucGFkZGluZy0tOworICAgICAgaWYgKGJsb2NrLnByb2dyYW0pIHsK
KyAgICAgICAgdGhpcy5wYWRkaW5nLS07CisgICAgICB9CisgICAgfQorICAgIHRoaXMucGFkZGlu
Zy0tOworCisgICAgcmV0dXJuIG91dDsKKyAgfTsKKworICBQcmludFZpc2l0b3IucHJvdG90eXBl
LlBhcnRpYWxTdGF0ZW1lbnQgPSBmdW5jdGlvbiAocGFydGlhbCkgeworICAgIHZhciBjb250ZW50
ID0gJ1BBUlRJQUw6JyArIHBhcnRpYWwubmFtZS5vcmlnaW5hbDsKKyAgICBpZiAocGFydGlhbC5w
YXJhbXNbMF0pIHsKKyAgICAgIGNvbnRlbnQgKz0gJyAnICsgdGhpcy5hY2NlcHQocGFydGlhbC5w
YXJhbXNbMF0pOworICAgIH0KKyAgICBpZiAocGFydGlhbC5oYXNoKSB7CisgICAgICBjb250ZW50
ICs9ICcgJyArIHRoaXMuYWNjZXB0KHBhcnRpYWwuaGFzaCk7CisgICAgfQorICAgIHJldHVybiB0
aGlzLnBhZCgne3s+ICcgKyBjb250ZW50ICsgJyB9fScpOworICB9OworICBQcmludFZpc2l0b3Iu
cHJvdG90eXBlLlBhcnRpYWxCbG9ja1N0YXRlbWVudCA9IGZ1bmN0aW9uIChwYXJ0aWFsKSB7Cisg
ICAgdmFyIGNvbnRlbnQgPSAnUEFSVElBTCBCTE9DSzonICsgcGFydGlhbC5uYW1lLm9yaWdpbmFs
OworICAgIGlmIChwYXJ0aWFsLnBhcmFtc1swXSkgeworICAgICAgY29udGVudCArPSAnICcgKyB0
aGlzLmFjY2VwdChwYXJ0aWFsLnBhcmFtc1swXSk7CisgICAgfQorICAgIGlmIChwYXJ0aWFsLmhh
c2gpIHsKKyAgICAgIGNvbnRlbnQgKz0gJyAnICsgdGhpcy5hY2NlcHQocGFydGlhbC5oYXNoKTsK
KyAgICB9CisKKyAgICBjb250ZW50ICs9ICcgJyArIHRoaXMucGFkKCdQUk9HUkFNOicpOworICAg
IHRoaXMucGFkZGluZysrOworICAgIGNvbnRlbnQgKz0gdGhpcy5hY2NlcHQocGFydGlhbC5wcm9n
cmFtKTsKKyAgICB0aGlzLnBhZGRpbmctLTsKKworICAgIHJldHVybiB0aGlzLnBhZCgne3s+ICcg
KyBjb250ZW50ICsgJyB9fScpOworICB9OworCisgIFByaW50VmlzaXRvci5wcm90b3R5cGUuQ29u
dGVudFN0YXRlbWVudCA9IGZ1bmN0aW9uIChjb250ZW50KSB7CisgICAgcmV0dXJuIHRoaXMucGFk
KCJDT05URU5UWyAnIiArIGNvbnRlbnQudmFsdWUgKyAiJyBdIik7CisgIH07CisKKyAgUHJpbnRW
aXNpdG9yLnByb3RvdHlwZS5Db21tZW50U3RhdGVtZW50ID0gZnVuY3Rpb24gKGNvbW1lbnQpIHsK
KyAgICByZXR1cm4gdGhpcy5wYWQoInt7ISAnIiArIGNvbW1lbnQudmFsdWUgKyAiJyB9fSIpOwor
ICB9OworCisgIFByaW50VmlzaXRvci5wcm90b3R5cGUuU3ViRXhwcmVzc2lvbiA9IGZ1bmN0aW9u
IChzZXhwcikgeworICAgIHZhciBwYXJhbXMgPSBzZXhwci5wYXJhbXMsCisgICAgICAgIHBhcmFt
U3RyaW5ncyA9IFtdLAorICAgICAgICBoYXNoID0gdW5kZWZpbmVkOworCisgICAgZm9yICh2YXIg
aSA9IDAsIGwgPSBwYXJhbXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CisgICAgICBwYXJhbVN0cmlu
Z3MucHVzaCh0aGlzLmFjY2VwdChwYXJhbXNbaV0pKTsKKyAgICB9CisKKyAgICBwYXJhbXMgPSAn
WycgKyBwYXJhbVN0cmluZ3Muam9pbignLCAnKSArICddJzsKKworICAgIGhhc2ggPSBzZXhwci5o
YXNoID8gJyAnICsgdGhpcy5hY2NlcHQoc2V4cHIuaGFzaCkgOiAnJzsKKworICAgIHJldHVybiB0
aGlzLmFjY2VwdChzZXhwci5wYXRoKSArICcgJyArIHBhcmFtcyArIGhhc2g7CisgIH07CisKKyAg
UHJpbnRWaXNpdG9yLnByb3RvdHlwZS5QYXRoRXhwcmVzc2lvbiA9IGZ1bmN0aW9uIChpZCkgewor
ICAgIHZhciBwYXRoID0gaWQucGFydHMuam9pbignLycpOworICAgIHJldHVybiAoaWQuZGF0YSA/
ICdAJyA6ICcnKSArICdQQVRIOicgKyBwYXRoOworICB9OworCisgIFByaW50VmlzaXRvci5wcm90
b3R5cGUuU3RyaW5nTGl0ZXJhbCA9IGZ1bmN0aW9uIChzdHJpbmcpIHsKKyAgICByZXR1cm4gJyIn
ICsgc3RyaW5nLnZhbHVlICsgJyInOworICB9OworCisgIFByaW50VmlzaXRvci5wcm90b3R5cGUu
TnVtYmVyTGl0ZXJhbCA9IGZ1bmN0aW9uIChudW1iZXIpIHsKKyAgICByZXR1cm4gJ05VTUJFUnsn
ICsgbnVtYmVyLnZhbHVlICsgJ30nOworICB9OworCisgIFByaW50VmlzaXRvci5wcm90b3R5cGUu
Qm9vbGVhbkxpdGVyYWwgPSBmdW5jdGlvbiAoYm9vbCkgeworICAgIHJldHVybiAnQk9PTEVBTnsn
ICsgYm9vbC52YWx1ZSArICd9JzsKKyAgfTsKKworICBQcmludFZpc2l0b3IucHJvdG90eXBlLlVu
ZGVmaW5lZExpdGVyYWwgPSBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuICdVTkRFRklORUQnOwor
ICB9OworCisgIFByaW50VmlzaXRvci5wcm90b3R5cGUuTnVsbExpdGVyYWwgPSBmdW5jdGlvbiAo
KSB7CisgICAgcmV0dXJuICdOVUxMJzsKKyAgfTsKKworICBQcmludFZpc2l0b3IucHJvdG90eXBl
Lkhhc2ggPSBmdW5jdGlvbiAoaGFzaCkgeworICAgIHZhciBwYWlycyA9IGhhc2gucGFpcnMsCisg
ICAgICAgIGpvaW5lZFBhaXJzID0gW107CisKKyAgICBmb3IgKHZhciBpID0gMCwgbCA9IHBhaXJz
Lmxlbmd0aDsgaSA8IGw7IGkrKykgeworICAgICAgam9pbmVkUGFpcnMucHVzaCh0aGlzLmFjY2Vw
dChwYWlyc1tpXSkpOworICAgIH0KKworICAgIHJldHVybiAnSEFTSHsnICsgam9pbmVkUGFpcnMu
am9pbignLCAnKSArICd9JzsKKyAgfTsKKyAgUHJpbnRWaXNpdG9yLnByb3RvdHlwZS5IYXNoUGFp
ciA9IGZ1bmN0aW9uIChwYWlyKSB7CisgICAgcmV0dXJuIHBhaXIua2V5ICsgJz0nICsgdGhpcy5h
Y2NlcHQocGFpci52YWx1ZSk7CisgIH07CisgIC8qIGVzbGludC1lbmFibGUgbmV3LWNhcCAqLwor
fSk7CisvLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5
SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMeTR1THk0dUwyeHBZaTlvWVc1
a2JHVmlZWEp6TDJOdmJYQnBiR1Z5TDNCeWFXNTBaWEl1YW5NaVhTd2libUZ0WlhNaU9sdGRMQ0p0
WVhCd2FXNW5jeUk2SWpzN096czdPenM3T3pzN096dEJRVWRQTEZkQlFWTXNTMEZCU3l4RFFVRkRM
RWRCUVVjc1JVRkJSVHRCUVVONlFpeFhRVUZQTEVsQlFVa3NXVUZCV1N4RlFVRkZMRU5CUVVNc1RV
RkJUU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzBkQlEzWkRPenRCUVVWTkxGZEJRVk1zV1VG
QldTeEhRVUZITzBGQlF6ZENMRkZCUVVrc1EwRkJReXhQUVVGUExFZEJRVWNzUTBGQlF5eERRVUZE
TzBkQlEyeENPenRCUVVWRUxHTkJRVmtzUTBGQlF5eFRRVUZUTEVkQlFVY3NlVUpCUVdFc1EwRkJR
enM3UVVGRmRrTXNZMEZCV1N4RFFVRkRMRk5CUVZNc1EwRkJReXhIUVVGSExFZEJRVWNzVlVGQlV5
eE5RVUZOTEVWQlFVVTdRVUZETlVNc1VVRkJTU3hIUVVGSExFZEJRVWNzUlVGQlJTeERRVUZET3p0
QlFVVmlMRk5CUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZC
Unl4SlFVRkpMRU5CUVVNc1QwRkJUeXhGUVVGRkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNR
MEZCUXl4RlFVRkZMRVZCUVVVN1FVRkROVU1zVTBGQlJ5eEpRVUZKTEVsQlFVa3NRMEZCUXp0TFFV
TmlPenRCUVVWRUxFOUJRVWNzU1VGQlNTeE5RVUZOTEVkQlFVY3NTVUZCU1N4RFFVRkRPMEZCUTNK
Q0xGZEJRVThzUjBGQlJ5eERRVUZETzBkQlExb3NRMEZCUXpzN1FVRkZSaXhqUVVGWkxFTkJRVU1z
VTBGQlV5eERRVUZETEU5QlFVOHNSMEZCUnl4VlFVRlRMRTlCUVU4c1JVRkJSVHRCUVVOcVJDeFJR
VUZKTEVkQlFVY3NSMEZCUnl4RlFVRkZPMUZCUTFJc1NVRkJTU3hIUVVGSExFOUJRVThzUTBGQlF5
eEpRVUZKTzFGQlEyNUNMRU5CUVVNc1dVRkJRVHRSUVVGRkxFTkJRVU1zV1VGQlFTeERRVUZET3p0
QlFVVlVMRkZCUVVrc1QwRkJUeXhEUVVGRExGZEJRVmNzUlVGQlJUdEJRVU4yUWl4VlFVRkpMRmRC
UVZjc1IwRkJSeXhwUWtGQmFVSXNRMEZCUXp0QlFVTndReXhYUVVGTExFTkJRVU1zUjBGQlJ5eERR
VUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRTlCUVU4c1EwRkJReXhYUVVGWExFTkJRVU1zVFVGQlRT
eEZRVUZGTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3UVVG
RGNrUXNiVUpCUVZjc1NVRkJTU3hIUVVGSExFZEJRVWNzVDBGQlR5eERRVUZETEZkQlFWY3NRMEZC
UXl4RFFVRkRMRU5CUVVNc1EwRkJRenRQUVVNNVF6dEJRVU5FTEdsQ1FVRlhMRWxCUVVrc1NVRkJT
U3hEUVVGRE8wRkJRM0JDTEZOQlFVY3NTVUZCU1N4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExG
ZEJRVmNzUTBGQlF5eERRVUZETzB0QlF6bENPenRCUVVWRUxGTkJRVXNzUTBGQlF5eEhRVUZITEVO
QlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZE
TEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRk8wRkJRM1pETEZOQlFVY3NT
VUZCU1N4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFV
TXNRMEZCUXl4RFFVRkRPMHRCUXpkQ096dEJRVVZFTEZGQlFVa3NRMEZCUXl4UFFVRlBMRVZCUVVV
c1EwRkJRenM3UVVGRlppeFhRVUZQTEVkQlFVY3NRMEZCUXp0SFFVTmFMRU5CUVVNN08wRkJSVVlz
WTBGQldTeERRVUZETEZOQlFWTXNRMEZCUXl4cFFrRkJhVUlzUjBGQlJ5eFZRVUZUTEZGQlFWRXNS
VUZCUlR0QlFVTTFSQ3hYUVVGUExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNTMEZCU3l4SFFV
RkhMRWxCUVVrc1EwRkJReXhoUVVGaExFTkJRVU1zVVVGQlVTeERRVUZETEVkQlFVY3NTMEZCU3l4
RFFVRkRMRU5CUVVNN1IwRkRMMFFzUTBGQlF6dEJRVU5HTEdOQlFWa3NRMEZCUXl4VFFVRlRMRU5C
UVVNc1UwRkJVeXhIUVVGSExGVkJRVk1zVVVGQlVTeEZRVUZGTzBGQlEzQkVMRmRCUVU4c1NVRkJT
U3hEUVVGRExFZEJRVWNzUTBGQlF5eGxRVUZsTEVkQlFVY3NTVUZCU1N4RFFVRkRMR0ZCUVdFc1Ew
RkJReXhSUVVGUkxFTkJRVU1zUjBGQlJ5eExRVUZMTEVOQlFVTXNRMEZCUXp0SFFVTjZSU3hEUVVG
RE96dEJRVVZHTEdOQlFWa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1kwRkJZeXhIUVVOeVF5eFpRVUZa
TEVOQlFVTXNVMEZCVXl4RFFVRkRMR05CUVdNc1IwRkJSeXhWUVVGVExFdEJRVXNzUlVGQlJUdEJR
VU4wUkN4UlFVRkpMRWRCUVVjc1IwRkJSeXhGUVVGRkxFTkJRVU03TzBGQlJXSXNUMEZCUnl4SlFV
RkpMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4
TFFVRkxMR2RDUVVGblFpeEhRVUZITEZsQlFWa3NSMEZCUnl4RlFVRkZMRU5CUVVFc1IwRkJTU3hS
UVVGUkxFTkJRVU1zUTBGQlF6dEJRVU5zUml4UlFVRkpMRU5CUVVNc1QwRkJUeXhGUVVGRkxFTkJR
VU03UVVGRFppeFBRVUZITEVsQlFVa3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhKUVVGSkxF
TkJRVU1zWVVGQllTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRNME1zVVVG
QlNTeExRVUZMTEVOQlFVTXNUMEZCVHl4RlFVRkZPMEZCUTJwQ0xGTkJRVWNzU1VGQlNTeEpRVUZK
TEVOQlFVTXNSMEZCUnl4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRE8wRkJRelZDTEZWQlFVa3NR
MEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJRenRCUVVObUxGTkJRVWNzU1VGQlNTeEpRVUZKTEVOQlFV
TXNUVUZCVFN4RFFVRkRMRXRCUVVzc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF6dEJRVU5zUXl4
VlFVRkpMRU5CUVVNc1QwRkJUeXhGUVVGRkxFTkJRVU03UzBGRGFFSTdRVUZEUkN4UlFVRkpMRXRC
UVVzc1EwRkJReXhQUVVGUExFVkJRVVU3UVVGRGFrSXNWVUZCU1N4TFFVRkxMRU5CUVVNc1QwRkJU
eXhGUVVGRk8wRkJRVVVzV1VGQlNTeERRVUZETEU5QlFVOHNSVUZCUlN4RFFVRkRPMDlCUVVVN1FV
RkRkRU1zVTBGQlJ5eEpRVUZKTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1QwRkJUeXhEUVVG
RExFTkJRVU03UVVGRGVrSXNWVUZCU1N4RFFVRkRMRTlCUVU4c1JVRkJSU3hEUVVGRE8wRkJRMllz
VTBGQlJ5eEpRVUZKTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1MwRkJTeXhEUVVGRExFOUJR
VThzUTBGQlF5eERRVUZETzBGQlEyeERMRlZCUVVrc1EwRkJReXhQUVVGUExFVkJRVVVzUTBGQlF6
dEJRVU5tTEZWQlFVa3NTMEZCU3l4RFFVRkRMRTlCUVU4c1JVRkJSVHRCUVVGRkxGbEJRVWtzUTBG
QlF5eFBRVUZQTEVWQlFVVXNRMEZCUXp0UFFVRkZPMHRCUTNaRE8wRkJRMFFzVVVGQlNTeERRVUZE
TEU5QlFVOHNSVUZCUlN4RFFVRkRPenRCUVVWbUxGZEJRVThzUjBGQlJ5eERRVUZETzBkQlExb3NR
MEZCUXpzN1FVRkZSaXhqUVVGWkxFTkJRVU1zVTBGQlV5eERRVUZETEdkQ1FVRm5RaXhIUVVGSExG
VkJRVk1zVDBGQlR5eEZRVUZGTzBGQlF6RkVMRkZCUVVrc1QwRkJUeXhIUVVGSExGVkJRVlVzUjBG
QlJ5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJRenRCUVVOcVJDeFJRVUZK
TEU5QlFVOHNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVU3UVVGRGNrSXNZ
VUZCVHl4SlFVRkpMRWRCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEU5QlFV
OHNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dExRVU5xUkR0
QlFVTkVMRkZCUVVrc1QwRkJUeXhEUVVGRExFbEJRVWtzUlVGQlJUdEJRVU5vUWl4aFFVRlBMRWxC
UVVrc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNUMEZCVHl4RFFVRkRM
RWxCUVVrc1EwRkJReXhEUVVGRE8wdEJRelZETzBGQlEwUXNWMEZCVHl4SlFVRkpMRU5CUVVNc1Iw
RkJSeXhEUVVGRExFMUJRVTBzUjBGQlJ5eFBRVUZQTEVkQlFVY3NTMEZCU3l4RFFVRkRMRU5CUVVN
N1IwRkRNME1zUTBGQlF6dEJRVU5HTEdOQlFWa3NRMEZCUXl4VFFVRlRMRU5CUVVNc2NVSkJRWEZD
TEVkQlFVY3NWVUZCVXl4UFFVRlBMRVZCUVVVN1FVRkRMMFFzVVVGQlNTeFBRVUZQTEVkQlFVY3Na
MEpCUVdkQ0xFZEJRVWNzVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNN1FV
RkRka1FzVVVGQlNTeFBRVUZQTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVG
Rk8wRkJRM0pDTEdGQlFVOHNTVUZCU1N4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBz
UTBGQlF5eFBRVUZQTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJR
VU03UzBGRGFrUTdRVUZEUkN4UlFVRkpMRTlCUVU4c1EwRkJReXhKUVVGSkxFVkJRVVU3UVVGRGFF
SXNZVUZCVHl4SlFVRkpMRWRCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEU5
QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRMUVVNMVF6czdRVUZGUkN4WFFVRlBMRWxC
UVVrc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNWVUZCVlN4RFFVRkRM
RU5CUVVNN1FVRkRkRU1zVVVGQlNTeERRVUZETEU5QlFVOHNSVUZCUlN4RFFVRkRPMEZCUTJZc1Yw
RkJUeXhKUVVGSkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNUMEZCVHl4RFFVRkRMRTlCUVU4
c1EwRkJReXhEUVVGRE8wRkJRM2hETEZGQlFVa3NRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJRenM3
UVVGRlppeFhRVUZQTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1RVRkJUU3hIUVVGSExFOUJR
VThzUjBGQlJ5eExRVUZMTEVOQlFVTXNRMEZCUXp0SFFVTXpReXhEUVVGRE96dEJRVVZHTEdOQlFW
a3NRMEZCUXl4VFFVRlRMRU5CUVVNc1owSkJRV2RDTEVkQlFVY3NWVUZCVXl4UFFVRlBMRVZCUVVV
N1FVRkRNVVFzVjBGQlR5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRmxCUVZrc1IwRkJSeXhQ
UVVGUExFTkJRVU1zUzBGQlN5eEhRVUZITEV0QlFVc3NRMEZCUXl4RFFVRkRPMGRCUTNaRUxFTkJR
VU03TzBGQlJVWXNZMEZCV1N4RFFVRkRMRk5CUVZNc1EwRkJReXhuUWtGQlowSXNSMEZCUnl4VlFV
RlRMRTlCUVU4c1JVRkJSVHRCUVVNeFJDeFhRVUZQTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVN
c1QwRkJUeXhIUVVGSExFOUJRVThzUTBGQlF5eExRVUZMTEVkQlFVY3NUVUZCVFN4RFFVRkRMRU5C
UVVNN1IwRkRia1FzUTBGQlF6czdRVUZGUml4alFVRlpMRU5CUVVNc1UwRkJVeXhEUVVGRExHRkJR
V0VzUjBGQlJ5eFZRVUZUTEV0QlFVc3NSVUZCUlR0QlFVTnlSQ3hSUVVGSkxFMUJRVTBzUjBGQlJ5
eExRVUZMTEVOQlFVTXNUVUZCVFR0UlFVTnlRaXhaUVVGWkxFZEJRVWNzUlVGQlJUdFJRVU5xUWl4
SlFVRkpMRmxCUVVFc1EwRkJRenM3UVVGRlZDeFRRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5C
UVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzVFVGQlRTeERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRM
RWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTzBGQlF6ZERMR3RDUVVGWkxF
TkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVG
RExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0TFFVTXpRenM3UVVGRlJDeFZRVUZO
TEVkQlFVY3NSMEZCUnl4SFFVRkhMRmxCUVZrc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERR
VUZETEVkQlFVY3NSMEZCUnl4RFFVRkRPenRCUVVVM1F5eFJRVUZKTEVkQlFVY3NTMEZCU3l4RFFV
RkRMRWxCUVVrc1IwRkJSeXhIUVVGSExFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4
TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZET3p0QlFVVjJSQ3hY
UVVGUExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJR
eXhIUVVGSExFZEJRVWNzUjBGQlJ5eE5RVUZOTEVkQlFVY3NTVUZCU1N4RFFVRkRPMGRCUTNSRUxF
TkJRVU03TzBGQlJVWXNZMEZCV1N4RFFVRkRMRk5CUVZNc1EwRkJReXhqUVVGakxFZEJRVWNzVlVG
QlV5eEZRVUZGTEVWQlFVVTdRVUZEYmtRc1VVRkJTU3hKUVVGSkxFZEJRVWNzUlVGQlJTeERRVUZE
TEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03UVVGRE9VSXNW
MEZCVHl4RFFVRkRMRVZCUVVVc1EwRkJReXhKUVVGSkxFZEJRVWNzUjBGQlJ5eEhRVUZITEVWQlFV
VXNRMEZCUVN4SFFVRkpMRTlCUVU4c1IwRkJSeXhKUVVGSkxFTkJRVU03UjBGRE9VTXNRMEZCUXpz
N1FVRkhSaXhqUVVGWkxFTkJRVU1zVTBGQlV5eERRVUZETEdGQlFXRXNSMEZCUnl4VlFVRlRMRTFC
UVUwc1JVRkJSVHRCUVVOMFJDeFhRVUZQTEVkQlFVY3NSMEZCUnl4TlFVRk5MRU5CUVVNc1MwRkJT
eXhIUVVGSExFZEJRVWNzUTBGQlF6dEhRVU5xUXl4RFFVRkRPenRCUVVWR0xHTkJRVmtzUTBGQlF5
eFRRVUZUTEVOQlFVTXNZVUZCWVN4SFFVRkhMRlZCUVZNc1RVRkJUU3hGUVVGRk8wRkJRM1JFTEZk
QlFVOHNVMEZCVXl4SFFVRkhMRTFCUVUwc1EwRkJReXhMUVVGTExFZEJRVWNzUjBGQlJ5eERRVUZE
TzBkQlEzWkRMRU5CUVVNN08wRkJSVVlzWTBGQldTeERRVUZETEZOQlFWTXNRMEZCUXl4alFVRmpM
RWRCUVVjc1ZVRkJVeXhKUVVGSkxFVkJRVVU3UVVGRGNrUXNWMEZCVHl4VlFVRlZMRWRCUVVjc1NV
RkJTU3hEUVVGRExFdEJRVXNzUjBGQlJ5eEhRVUZITEVOQlFVTTdSMEZEZEVNc1EwRkJRenM3UVVG
RlJpeGpRVUZaTEVOQlFVTXNVMEZCVXl4RFFVRkRMR2RDUVVGblFpeEhRVUZITEZsQlFWYzdRVUZE
YmtRc1YwRkJUeXhYUVVGWExFTkJRVU03UjBGRGNFSXNRMEZCUXpzN1FVRkZSaXhqUVVGWkxFTkJR
VU1zVTBGQlV5eERRVUZETEZkQlFWY3NSMEZCUnl4WlFVRlhPMEZCUXpsRExGZEJRVThzVFVGQlRT
eERRVUZETzBkQlEyWXNRMEZCUXpzN1FVRkZSaXhqUVVGWkxFTkJRVU1zVTBGQlV5eERRVUZETEVs
QlFVa3NSMEZCUnl4VlFVRlRMRWxCUVVrc1JVRkJSVHRCUVVNelF5eFJRVUZKTEV0QlFVc3NSMEZC
Unl4SlFVRkpMRU5CUVVNc1MwRkJTenRSUVVOc1FpeFhRVUZYTEVkQlFVY3NSVUZCUlN4RFFVRkRP
enRCUVVWeVFpeFRRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExF
ZEJRVWNzUzBGQlN5eERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVG
RkxFTkJRVU1zUlVGQlJTeEZRVUZGTzBGQlF6VkRMR2xDUVVGWExFTkJRVU1zU1VGQlNTeERRVUZE
TEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERR
VUZETEVOQlFVTXNRMEZCUXp0TFFVTjZRenM3UVVGRlJDeFhRVUZQTEU5QlFVOHNSMEZCUnl4WFFV
RlhMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVkQlFVY3NRMEZCUXp0
SFFVTXZReXhEUVVGRE8wRkJRMFlzWTBGQldTeERRVUZETEZOQlFWTXNRMEZCUXl4UlFVRlJMRWRC
UVVjc1ZVRkJVeXhKUVVGSkxFVkJRVVU3UVVGREwwTXNWMEZCVHl4SlFVRkpMRU5CUVVNc1IwRkJS
eXhIUVVGSExFZEJRVWNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1Ew
RkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dEhRVU5xUkN4RFFVRkRJaXdpWm1sc1pTSTZJbkJ5YVc1
MFpYSXVhbk1pTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lJdktpQmxjMnhwYm5RdFpHbHpZV0pz
WlNCdVpYY3RZMkZ3SUNvdlhHNXBiWEJ2Y25RZ1ZtbHphWFJ2Y2lCbWNtOXRJQ2N1TDNacGMybDBi
M0luTzF4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2NISnBiblFvWVhOMEtTQjdYRzRnSUhKbGRI
VnliaUJ1WlhjZ1VISnBiblJXYVhOcGRHOXlLQ2t1WVdOalpYQjBLR0Z6ZENrN1hHNTlYRzVjYm1W
NGNHOXlkQ0JtZFc1amRHbHZiaUJRY21sdWRGWnBjMmwwYjNJb0tTQjdYRzRnSUhSb2FYTXVjR0Zr
WkdsdVp5QTlJREE3WEc1OVhHNWNibEJ5YVc1MFZtbHphWFJ2Y2k1d2NtOTBiM1I1Y0dVZ1BTQnVa
WGNnVm1semFYUnZjaWdwTzF4dVhHNVFjbWx1ZEZacGMybDBiM0l1Y0hKdmRHOTBlWEJsTG5CaFpD
QTlJR1oxYm1OMGFXOXVLSE4wY21sdVp5a2dlMXh1SUNCc1pYUWdiM1YwSUQwZ0p5YzdYRzVjYmlB
Z1ptOXlJQ2hzWlhRZ2FTQTlJREFzSUd3Z1BTQjBhR2x6TG5CaFpHUnBibWM3SUdrZ1BDQnNPeUJw
S3lzcElIdGNiaUFnSUNCdmRYUWdLejBnSnlBZ0p6dGNiaUFnZlZ4dVhHNGdJRzkxZENBclBTQnpk
SEpwYm1jZ0t5QW5YRnh1Snp0Y2JpQWdjbVYwZFhKdUlHOTFkRHRjYm4wN1hHNWNibEJ5YVc1MFZt
bHphWFJ2Y2k1d2NtOTBiM1I1Y0dVdVVISnZaM0poYlNBOUlHWjFibU4wYVc5dUtIQnliMmR5WVcw
cElIdGNiaUFnYkdWMElHOTFkQ0E5SUNjbkxGeHVJQ0FnSUNBZ1ltOWtlU0E5SUhCeWIyZHlZVzB1
WW05a2VTeGNiaUFnSUNBZ0lHa3NJR3c3WEc1Y2JpQWdhV1lnS0hCeWIyZHlZVzB1WW14dlkydFFZ
WEpoYlhNcElIdGNiaUFnSUNCc1pYUWdZbXh2WTJ0UVlYSmhiWE1nUFNBblFreFBRMHNnVUVGU1FV
MVRPaUJiSnp0Y2JpQWdJQ0JtYjNJZ0tHa2dQU0F3TENCc0lEMGdjSEp2WjNKaGJTNWliRzlqYTFC
aGNtRnRjeTVzWlc1bmRHZzdJR2tnUENCc095QnBLeXNwSUh0Y2JpQWdJQ0FnSUNCaWJHOWphMUJo
Y21GdGN5QXJQU0FuSUNjZ0t5QndjbTluY21GdExtSnNiMk5yVUdGeVlXMXpXMmxkTzF4dUlDQWdJ
SDFjYmlBZ0lDQmliRzlqYTFCaGNtRnRjeUFyUFNBbklGMG5PMXh1SUNBZ0lHOTFkQ0FyUFNCMGFH
bHpMbkJoWkNoaWJHOWphMUJoY21GdGN5azdYRzRnSUgxY2JseHVJQ0JtYjNJZ0tHa2dQU0F3TENC
c0lEMGdZbTlrZVM1c1pXNW5kR2c3SUdrZ1BDQnNPeUJwS3lzcElIdGNiaUFnSUNCdmRYUWdLejBn
ZEdocGN5NWhZMk5sY0hRb1ltOWtlVnRwWFNrN1hHNGdJSDFjYmx4dUlDQjBhR2x6TG5CaFpHUnBi
bWN0TFR0Y2JseHVJQ0J5WlhSMWNtNGdiM1YwTzF4dWZUdGNibHh1VUhKcGJuUldhWE5wZEc5eUxu
QnliM1J2ZEhsd1pTNU5kWE4wWVdOb1pWTjBZWFJsYldWdWRDQTlJR1oxYm1OMGFXOXVLRzExYzNS
aFkyaGxLU0I3WEc0Z0lISmxkSFZ5YmlCMGFHbHpMbkJoWkNnbmUzc2dKeUFySUhSb2FYTXVVM1Zp
Ulhod2NtVnpjMmx2YmlodGRYTjBZV05vWlNrZ0t5QW5JSDE5SnlrN1hHNTlPMXh1VUhKcGJuUldh
WE5wZEc5eUxuQnliM1J2ZEhsd1pTNUVaV052Y21GMGIzSWdQU0JtZFc1amRHbHZiaWh0ZFhOMFlX
Tm9aU2tnZTF4dUlDQnlaWFIxY200Z2RHaHBjeTV3WVdRb0ozdDdJRVJKVWtWRFZFbFdSU0FuSUNz
Z2RHaHBjeTVUZFdKRmVIQnlaWE56YVc5dUtHMTFjM1JoWTJobEtTQXJJQ2NnZlgwbktUdGNibjA3
WEc1Y2JsQnlhVzUwVm1semFYUnZjaTV3Y205MGIzUjVjR1V1UW14dlkydFRkR0YwWlcxbGJuUWdQ
Vnh1VUhKcGJuUldhWE5wZEc5eUxuQnliM1J2ZEhsd1pTNUVaV052Y21GMGIzSkNiRzlqYXlBOUlH
WjFibU4wYVc5dUtHSnNiMk5yS1NCN1hHNGdJR3hsZENCdmRYUWdQU0FuSnp0Y2JseHVJQ0J2ZFhR
Z0t6MGdkR2hwY3k1d1lXUW9LR0pzYjJOckxuUjVjR1VnUFQwOUlDZEVaV052Y21GMGIzSkNiRzlq
YXljZ1B5QW5SRWxTUlVOVVNWWkZJQ2NnT2lBbkp5a2dLeUFuUWt4UFEwczZKeWs3WEc0Z0lIUm9h
WE11Y0dGa1pHbHVaeXNyTzF4dUlDQnZkWFFnS3owZ2RHaHBjeTV3WVdRb2RHaHBjeTVUZFdKRmVI
QnlaWE56YVc5dUtHSnNiMk5yS1NrN1hHNGdJR2xtSUNoaWJHOWpheTV3Y205bmNtRnRLU0I3WEc0
Z0lDQWdiM1YwSUNzOUlIUm9hWE11Y0dGa0tDZFFVazlIVWtGTk9pY3BPMXh1SUNBZ0lIUm9hWE11
Y0dGa1pHbHVaeXNyTzF4dUlDQWdJRzkxZENBclBTQjBhR2x6TG1GalkyVndkQ2hpYkc5amF5NXdj
bTluY21GdEtUdGNiaUFnSUNCMGFHbHpMbkJoWkdScGJtY3RMVHRjYmlBZ2ZWeHVJQ0JwWmlBb1lt
eHZZMnN1YVc1MlpYSnpaU2tnZTF4dUlDQWdJR2xtSUNoaWJHOWpheTV3Y205bmNtRnRLU0I3SUhS
b2FYTXVjR0ZrWkdsdVp5c3JPeUI5WEc0Z0lDQWdiM1YwSUNzOUlIUm9hWE11Y0dGa0tDZDdlMTU5
ZlNjcE8xeHVJQ0FnSUhSb2FYTXVjR0ZrWkdsdVp5c3JPMXh1SUNBZ0lHOTFkQ0FyUFNCMGFHbHpM
bUZqWTJWd2RDaGliRzlqYXk1cGJuWmxjbk5sS1R0Y2JpQWdJQ0IwYUdsekxuQmhaR1JwYm1jdExU
dGNiaUFnSUNCcFppQW9ZbXh2WTJzdWNISnZaM0poYlNrZ2V5QjBhR2x6TG5CaFpHUnBibWN0TFRz
Z2ZWeHVJQ0I5WEc0Z0lIUm9hWE11Y0dGa1pHbHVaeTB0TzF4dVhHNGdJSEpsZEhWeWJpQnZkWFE3
WEc1OU8xeHVYRzVRY21sdWRGWnBjMmwwYjNJdWNISnZkRzkwZVhCbExsQmhjblJwWVd4VGRHRjBa
VzFsYm5RZ1BTQm1kVzVqZEdsdmJpaHdZWEowYVdGc0tTQjdYRzRnSUd4bGRDQmpiMjUwWlc1MElE
MGdKMUJCVWxSSlFVdzZKeUFySUhCaGNuUnBZV3d1Ym1GdFpTNXZjbWxuYVc1aGJEdGNiaUFnYVdZ
Z0tIQmhjblJwWVd3dWNHRnlZVzF6V3pCZEtTQjdYRzRnSUNBZ1kyOXVkR1Z1ZENBclBTQW5JQ2Nn
S3lCMGFHbHpMbUZqWTJWd2RDaHdZWEowYVdGc0xuQmhjbUZ0YzFzd1hTazdYRzRnSUgxY2JpQWdh
V1lnS0hCaGNuUnBZV3d1YUdGemFDa2dlMXh1SUNBZ0lHTnZiblJsYm5RZ0t6MGdKeUFuSUNzZ2RH
aHBjeTVoWTJObGNIUW9jR0Z5ZEdsaGJDNW9ZWE5vS1R0Y2JpQWdmVnh1SUNCeVpYUjFjbTRnZEdo
cGN5NXdZV1FvSjN0N1BpQW5JQ3NnWTI5dWRHVnVkQ0FySUNjZ2ZYMG5LVHRjYm4wN1hHNVFjbWx1
ZEZacGMybDBiM0l1Y0hKdmRHOTBlWEJsTGxCaGNuUnBZV3hDYkc5amExTjBZWFJsYldWdWRDQTlJ
R1oxYm1OMGFXOXVLSEJoY25ScFlXd3BJSHRjYmlBZ2JHVjBJR052Ym5SbGJuUWdQU0FuVUVGU1ZF
bEJUQ0JDVEU5RFN6b25JQ3NnY0dGeWRHbGhiQzV1WVcxbExtOXlhV2RwYm1Gc08xeHVJQ0JwWmlB
b2NHRnlkR2xoYkM1d1lYSmhiWE5iTUYwcElIdGNiaUFnSUNCamIyNTBaVzUwSUNzOUlDY2dKeUFy
SUhSb2FYTXVZV05qWlhCMEtIQmhjblJwWVd3dWNHRnlZVzF6V3pCZEtUdGNiaUFnZlZ4dUlDQnBa
aUFvY0dGeWRHbGhiQzVvWVhOb0tTQjdYRzRnSUNBZ1kyOXVkR1Z1ZENBclBTQW5JQ2NnS3lCMGFH
bHpMbUZqWTJWd2RDaHdZWEowYVdGc0xtaGhjMmdwTzF4dUlDQjlYRzVjYmlBZ1kyOXVkR1Z1ZENB
clBTQW5JQ2NnS3lCMGFHbHpMbkJoWkNnblVGSlBSMUpCVFRvbktUdGNiaUFnZEdocGN5NXdZV1Jr
YVc1bkt5czdYRzRnSUdOdmJuUmxiblFnS3owZ2RHaHBjeTVoWTJObGNIUW9jR0Z5ZEdsaGJDNXdj
bTluY21GdEtUdGNiaUFnZEdocGN5NXdZV1JrYVc1bkxTMDdYRzVjYmlBZ2NtVjBkWEp1SUhSb2FY
TXVjR0ZrS0NkN2V6NGdKeUFySUdOdmJuUmxiblFnS3lBbklIMTlKeWs3WEc1OU8xeHVYRzVRY21s
dWRGWnBjMmwwYjNJdWNISnZkRzkwZVhCbExrTnZiblJsYm5SVGRHRjBaVzFsYm5RZ1BTQm1kVzVq
ZEdsdmJpaGpiMjUwWlc1MEtTQjdYRzRnSUhKbGRIVnliaUIwYUdsekxuQmhaQ2hjSWtOUFRsUkZU
bFJiSUNkY0lpQXJJR052Ym5SbGJuUXVkbUZzZFdVZ0t5QmNJaWNnWFZ3aUtUdGNibjA3WEc1Y2Js
QnlhVzUwVm1semFYUnZjaTV3Y205MGIzUjVjR1V1UTI5dGJXVnVkRk4wWVhSbGJXVnVkQ0E5SUda
MWJtTjBhVzl1S0dOdmJXMWxiblFwSUh0Y2JpQWdjbVYwZFhKdUlIUm9hWE11Y0dGa0tGd2llM3No
SUNkY0lpQXJJR052YlcxbGJuUXVkbUZzZFdVZ0t5QmNJaWNnZlgxY0lpazdYRzU5TzF4dVhHNVFj
bWx1ZEZacGMybDBiM0l1Y0hKdmRHOTBlWEJsTGxOMVlrVjRjSEpsYzNOcGIyNGdQU0JtZFc1amRH
bHZiaWh6Wlhod2Npa2dlMXh1SUNCc1pYUWdjR0Z5WVcxeklEMGdjMlY0Y0hJdWNHRnlZVzF6TEZ4
dUlDQWdJQ0FnY0dGeVlXMVRkSEpwYm1keklEMGdXMTBzWEc0Z0lDQWdJQ0JvWVhOb08xeHVYRzRn
SUdadmNpQW9iR1YwSUdrZ1BTQXdMQ0JzSUQwZ2NHRnlZVzF6TG14bGJtZDBhRHNnYVNBOElHdzdJ
R2tyS3lrZ2UxeHVJQ0FnSUhCaGNtRnRVM1J5YVc1bmN5NXdkWE5vS0hSb2FYTXVZV05qWlhCMEtI
QmhjbUZ0YzF0cFhTa3BPMXh1SUNCOVhHNWNiaUFnY0dGeVlXMXpJRDBnSjFzbklDc2djR0Z5WVcx
VGRISnBibWR6TG1wdmFXNG9KeXdnSnlrZ0t5QW5YU2M3WEc1Y2JpQWdhR0Z6YUNBOUlITmxlSEJ5
TG1oaGMyZ2dQeUFuSUNjZ0t5QjBhR2x6TG1GalkyVndkQ2h6Wlhod2NpNW9ZWE5vS1NBNklDY25P
MXh1WEc0Z0lISmxkSFZ5YmlCMGFHbHpMbUZqWTJWd2RDaHpaWGh3Y2k1d1lYUm9LU0FySUNjZ0p5
QXJJSEJoY21GdGN5QXJJR2hoYzJnN1hHNTlPMXh1WEc1UWNtbHVkRlpwYzJsMGIzSXVjSEp2ZEc5
MGVYQmxMbEJoZEdoRmVIQnlaWE56YVc5dUlEMGdablZ1WTNScGIyNG9hV1FwSUh0Y2JpQWdiR1Yw
SUhCaGRHZ2dQU0JwWkM1d1lYSjBjeTVxYjJsdUtDY3ZKeWs3WEc0Z0lISmxkSFZ5YmlBb2FXUXVa
R0YwWVNBL0lDZEFKeUE2SUNjbktTQXJJQ2RRUVZSSU9pY2dLeUJ3WVhSb08xeHVmVHRjYmx4dVhH
NVFjbWx1ZEZacGMybDBiM0l1Y0hKdmRHOTBlWEJsTGxOMGNtbHVaMHhwZEdWeVlXd2dQU0JtZFc1
amRHbHZiaWh6ZEhKcGJtY3BJSHRjYmlBZ2NtVjBkWEp1SUNkY0lpY2dLeUJ6ZEhKcGJtY3VkbUZz
ZFdVZ0t5QW5YQ0luTzF4dWZUdGNibHh1VUhKcGJuUldhWE5wZEc5eUxuQnliM1J2ZEhsd1pTNU9k
VzFpWlhKTWFYUmxjbUZzSUQwZ1puVnVZM1JwYjI0b2JuVnRZbVZ5S1NCN1hHNGdJSEpsZEhWeWJp
QW5UbFZOUWtWU2V5Y2dLeUJ1ZFcxaVpYSXVkbUZzZFdVZ0t5QW5mU2M3WEc1OU8xeHVYRzVRY21s
dWRGWnBjMmwwYjNJdWNISnZkRzkwZVhCbExrSnZiMnhsWVc1TWFYUmxjbUZzSUQwZ1puVnVZM1Jw
YjI0b1ltOXZiQ2tnZTF4dUlDQnlaWFIxY200Z0owSlBUMHhGUVU1N0p5QXJJR0p2YjJ3dWRtRnNk
V1VnS3lBbmZTYzdYRzU5TzF4dVhHNVFjbWx1ZEZacGMybDBiM0l1Y0hKdmRHOTBlWEJsTGxWdVpH
Vm1hVzVsWkV4cGRHVnlZV3dnUFNCbWRXNWpkR2x2YmlncElIdGNiaUFnY21WMGRYSnVJQ2RWVGtS
RlJrbE9SVVFuTzF4dWZUdGNibHh1VUhKcGJuUldhWE5wZEc5eUxuQnliM1J2ZEhsd1pTNU9kV3hz
VEdsMFpYSmhiQ0E5SUdaMWJtTjBhVzl1S0NrZ2UxeHVJQ0J5WlhSMWNtNGdKMDVWVEV3bk8xeHVm
VHRjYmx4dVVISnBiblJXYVhOcGRHOXlMbkJ5YjNSdmRIbHdaUzVJWVhOb0lEMGdablZ1WTNScGIy
NG9hR0Z6YUNrZ2UxeHVJQ0JzWlhRZ2NHRnBjbk1nUFNCb1lYTm9MbkJoYVhKekxGeHVJQ0FnSUNB
Z2FtOXBibVZrVUdGcGNuTWdQU0JiWFR0Y2JseHVJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Dd2diQ0E5
SUhCaGFYSnpMbXhsYm1kMGFEc2dhU0E4SUd3N0lHa3JLeWtnZTF4dUlDQWdJR3B2YVc1bFpGQmhh
WEp6TG5CMWMyZ29kR2hwY3k1aFkyTmxjSFFvY0dGcGNuTmJhVjBwS1R0Y2JpQWdmVnh1WEc0Z0lI
SmxkSFZ5YmlBblNFRlRTSHNuSUNzZ2FtOXBibVZrVUdGcGNuTXVhbTlwYmlnbkxDQW5LU0FySUNk
OUp6dGNibjA3WEc1UWNtbHVkRlpwYzJsMGIzSXVjSEp2ZEc5MGVYQmxMa2hoYzJoUVlXbHlJRDBn
Wm5WdVkzUnBiMjRvY0dGcGNpa2dlMXh1SUNCeVpYUjFjbTRnY0dGcGNpNXJaWGtnS3lBblBTY2dL
eUIwYUdsekxtRmpZMlZ3ZENod1lXbHlMblpoYkhWbEtUdGNibjA3WEc0dktpQmxjMnhwYm5RdFpX
NWhZbXhsSUc1bGR5MWpZWEFnS2k5Y2JpSmRmUT09CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9q
cXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9hbWQvaGFuZGxlYmFycy9jb21waWxl
ci92aXNpdG9yLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJz
L2Rpc3QvYW1kL2hhbmRsZWJhcnMvY29tcGlsZXIvdmlzaXRvci5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNzRk
OTg3MGRmM2QyMWNmZmRkMzk5ZjZkYTJlYjdjMmU1MDY1ZDBiCi0tLSAvZGV2L251bGwKKysrIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvYW1kL2hhbmRs
ZWJhcnMvY29tcGlsZXIvdmlzaXRvci5qcwpAQCAtMCwwICsxLDEzOCBAQAorZGVmaW5lKFsnZXhw
b3J0cycsICdtb2R1bGUnLCAnLi4vZXhjZXB0aW9uJ10sIGZ1bmN0aW9uIChleHBvcnRzLCBtb2R1
bGUsIF9leGNlcHRpb24pIHsKKyAgJ3VzZSBzdHJpY3QnOworCisgIC8vIGlzdGFuYnVsIGlnbm9y
ZSBuZXh0CisKKyAgZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJu
IG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfQorCisg
IHZhciBfRXhjZXB0aW9uID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZXhjZXB0aW9uKTsKKwor
ICBmdW5jdGlvbiBWaXNpdG9yKCkgeworICAgIHRoaXMucGFyZW50cyA9IFtdOworICB9CisKKyAg
VmlzaXRvci5wcm90b3R5cGUgPSB7CisgICAgY29uc3RydWN0b3I6IFZpc2l0b3IsCisgICAgbXV0
YXRpbmc6IGZhbHNlLAorCisgICAgLy8gVmlzaXRzIGEgZ2l2ZW4gdmFsdWUuIElmIG11dGF0aW5n
LCB3aWxsIHJlcGxhY2UgdGhlIHZhbHVlIGlmIG5lY2Vzc2FyeS4KKyAgICBhY2NlcHRLZXk6IGZ1
bmN0aW9uIGFjY2VwdEtleShub2RlLCBuYW1lKSB7CisgICAgICB2YXIgdmFsdWUgPSB0aGlzLmFj
Y2VwdChub2RlW25hbWVdKTsKKyAgICAgIGlmICh0aGlzLm11dGF0aW5nKSB7CisgICAgICAgIC8v
IEhhY2t5IHNhbml0eSBjaGVjazogVGhpcyBtYXkgaGF2ZSBhIGZldyBmYWxzZSBwb3NpdGl2ZXMg
Zm9yIHR5cGUgZm9yIHRoZSBoZWxwZXIKKyAgICAgICAgLy8gbWV0aG9kcyBidXQgd2lsbCBnZW5l
cmFsbHkgZG8gdGhlIHJpZ2h0IHRoaW5nIHdpdGhvdXQgYSBsb3Qgb2Ygb3ZlcmhlYWQuCisgICAg
ICAgIGlmICh2YWx1ZSAmJiAhVmlzaXRvci5wcm90b3R5cGVbdmFsdWUudHlwZV0pIHsKKyAgICAg
ICAgICB0aHJvdyBuZXcgX0V4Y2VwdGlvblsnZGVmYXVsdCddKCdVbmV4cGVjdGVkIG5vZGUgdHlw
ZSAiJyArIHZhbHVlLnR5cGUgKyAnIiBmb3VuZCB3aGVuIGFjY2VwdGluZyAnICsgbmFtZSArICcg
b24gJyArIG5vZGUudHlwZSk7CisgICAgICAgIH0KKyAgICAgICAgbm9kZVtuYW1lXSA9IHZhbHVl
OworICAgICAgfQorICAgIH0sCisKKyAgICAvLyBQZXJmb3JtcyBhbiBhY2NlcHQgb3BlcmF0aW9u
IHdpdGggYWRkZWQgc2FuaXR5IGNoZWNrIHRvIGVuc3VyZQorICAgIC8vIHJlcXVpcmVkIGtleXMg
YXJlIG5vdCByZW1vdmVkLgorICAgIGFjY2VwdFJlcXVpcmVkOiBmdW5jdGlvbiBhY2NlcHRSZXF1
aXJlZChub2RlLCBuYW1lKSB7CisgICAgICB0aGlzLmFjY2VwdEtleShub2RlLCBuYW1lKTsKKwor
ICAgICAgaWYgKCFub2RlW25hbWVdKSB7CisgICAgICAgIHRocm93IG5ldyBfRXhjZXB0aW9uWydk
ZWZhdWx0J10obm9kZS50eXBlICsgJyByZXF1aXJlcyAnICsgbmFtZSk7CisgICAgICB9CisgICAg
fSwKKworICAgIC8vIFRyYXZlcnNlcyBhIGdpdmVuIGFycmF5LiBJZiBtdXRhdGluZywgZW1wdHkg
cmVzcG5zZXMgd2lsbCBiZSByZW1vdmVkCisgICAgLy8gZm9yIGNoaWxkIGVsZW1lbnRzLgorICAg
IGFjY2VwdEFycmF5OiBmdW5jdGlvbiBhY2NlcHRBcnJheShhcnJheSkgeworICAgICAgZm9yICh2
YXIgaSA9IDAsIGwgPSBhcnJheS5sZW5ndGg7IGkgPCBsOyBpKyspIHsKKyAgICAgICAgdGhpcy5h
Y2NlcHRLZXkoYXJyYXksIGkpOworCisgICAgICAgIGlmICghYXJyYXlbaV0pIHsKKyAgICAgICAg
ICBhcnJheS5zcGxpY2UoaSwgMSk7CisgICAgICAgICAgaS0tOworICAgICAgICAgIGwtLTsKKyAg
ICAgICAgfQorICAgICAgfQorICAgIH0sCisKKyAgICBhY2NlcHQ6IGZ1bmN0aW9uIGFjY2VwdChv
YmplY3QpIHsKKyAgICAgIGlmICghb2JqZWN0KSB7CisgICAgICAgIHJldHVybjsKKyAgICAgIH0K
KworICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IFNhbml0eSBjb2RlICovCisgICAgICBp
ZiAoIXRoaXNbb2JqZWN0LnR5cGVdKSB7CisgICAgICAgIHRocm93IG5ldyBfRXhjZXB0aW9uWydk
ZWZhdWx0J10oJ1Vua25vd24gdHlwZTogJyArIG9iamVjdC50eXBlLCBvYmplY3QpOworICAgICAg
fQorCisgICAgICBpZiAodGhpcy5jdXJyZW50KSB7CisgICAgICAgIHRoaXMucGFyZW50cy51bnNo
aWZ0KHRoaXMuY3VycmVudCk7CisgICAgICB9CisgICAgICB0aGlzLmN1cnJlbnQgPSBvYmplY3Q7
CisKKyAgICAgIHZhciByZXQgPSB0aGlzW29iamVjdC50eXBlXShvYmplY3QpOworCisgICAgICB0
aGlzLmN1cnJlbnQgPSB0aGlzLnBhcmVudHMuc2hpZnQoKTsKKworICAgICAgaWYgKCF0aGlzLm11
dGF0aW5nIHx8IHJldCkgeworICAgICAgICByZXR1cm4gcmV0OworICAgICAgfSBlbHNlIGlmIChy
ZXQgIT09IGZhbHNlKSB7CisgICAgICAgIHJldHVybiBvYmplY3Q7CisgICAgICB9CisgICAgfSwK
KworICAgIFByb2dyYW06IGZ1bmN0aW9uIFByb2dyYW0ocHJvZ3JhbSkgeworICAgICAgdGhpcy5h
Y2NlcHRBcnJheShwcm9ncmFtLmJvZHkpOworICAgIH0sCisKKyAgICBNdXN0YWNoZVN0YXRlbWVu
dDogdmlzaXRTdWJFeHByZXNzaW9uLAorICAgIERlY29yYXRvcjogdmlzaXRTdWJFeHByZXNzaW9u
LAorCisgICAgQmxvY2tTdGF0ZW1lbnQ6IHZpc2l0QmxvY2ssCisgICAgRGVjb3JhdG9yQmxvY2s6
IHZpc2l0QmxvY2ssCisKKyAgICBQYXJ0aWFsU3RhdGVtZW50OiB2aXNpdFBhcnRpYWwsCisgICAg
UGFydGlhbEJsb2NrU3RhdGVtZW50OiBmdW5jdGlvbiBQYXJ0aWFsQmxvY2tTdGF0ZW1lbnQocGFy
dGlhbCkgeworICAgICAgdmlzaXRQYXJ0aWFsLmNhbGwodGhpcywgcGFydGlhbCk7CisKKyAgICAg
IHRoaXMuYWNjZXB0S2V5KHBhcnRpYWwsICdwcm9ncmFtJyk7CisgICAgfSwKKworICAgIENvbnRl
bnRTdGF0ZW1lbnQ6IGZ1bmN0aW9uIENvbnRlbnRTdGF0ZW1lbnQoKSAvKiBjb250ZW50ICove30s
CisgICAgQ29tbWVudFN0YXRlbWVudDogZnVuY3Rpb24gQ29tbWVudFN0YXRlbWVudCgpIC8qIGNv
bW1lbnQgKi97fSwKKworICAgIFN1YkV4cHJlc3Npb246IHZpc2l0U3ViRXhwcmVzc2lvbiwKKwor
ICAgIFBhdGhFeHByZXNzaW9uOiBmdW5jdGlvbiBQYXRoRXhwcmVzc2lvbigpIC8qIHBhdGggKi97
fSwKKworICAgIFN0cmluZ0xpdGVyYWw6IGZ1bmN0aW9uIFN0cmluZ0xpdGVyYWwoKSAvKiBzdHJp
bmcgKi97fSwKKyAgICBOdW1iZXJMaXRlcmFsOiBmdW5jdGlvbiBOdW1iZXJMaXRlcmFsKCkgLyog
bnVtYmVyICove30sCisgICAgQm9vbGVhbkxpdGVyYWw6IGZ1bmN0aW9uIEJvb2xlYW5MaXRlcmFs
KCkgLyogYm9vbCAqL3t9LAorICAgIFVuZGVmaW5lZExpdGVyYWw6IGZ1bmN0aW9uIFVuZGVmaW5l
ZExpdGVyYWwoKSAvKiBsaXRlcmFsICove30sCisgICAgTnVsbExpdGVyYWw6IGZ1bmN0aW9uIE51
bGxMaXRlcmFsKCkgLyogbGl0ZXJhbCAqL3t9LAorCisgICAgSGFzaDogZnVuY3Rpb24gSGFzaCho
YXNoKSB7CisgICAgICB0aGlzLmFjY2VwdEFycmF5KGhhc2gucGFpcnMpOworICAgIH0sCisgICAg
SGFzaFBhaXI6IGZ1bmN0aW9uIEhhc2hQYWlyKHBhaXIpIHsKKyAgICAgIHRoaXMuYWNjZXB0UmVx
dWlyZWQocGFpciwgJ3ZhbHVlJyk7CisgICAgfQorICB9OworCisgIGZ1bmN0aW9uIHZpc2l0U3Vi
RXhwcmVzc2lvbihtdXN0YWNoZSkgeworICAgIHRoaXMuYWNjZXB0UmVxdWlyZWQobXVzdGFjaGUs
ICdwYXRoJyk7CisgICAgdGhpcy5hY2NlcHRBcnJheShtdXN0YWNoZS5wYXJhbXMpOworICAgIHRo
aXMuYWNjZXB0S2V5KG11c3RhY2hlLCAnaGFzaCcpOworICB9CisgIGZ1bmN0aW9uIHZpc2l0Qmxv
Y2soYmxvY2spIHsKKyAgICB2aXNpdFN1YkV4cHJlc3Npb24uY2FsbCh0aGlzLCBibG9jayk7CisK
KyAgICB0aGlzLmFjY2VwdEtleShibG9jaywgJ3Byb2dyYW0nKTsKKyAgICB0aGlzLmFjY2VwdEtl
eShibG9jaywgJ2ludmVyc2UnKTsKKyAgfQorICBmdW5jdGlvbiB2aXNpdFBhcnRpYWwocGFydGlh
bCkgeworICAgIHRoaXMuYWNjZXB0UmVxdWlyZWQocGFydGlhbCwgJ25hbWUnKTsKKyAgICB0aGlz
LmFjY2VwdEFycmF5KHBhcnRpYWwucGFyYW1zKTsKKyAgICB0aGlzLmFjY2VwdEtleShwYXJ0aWFs
LCAnaGFzaCcpOworICB9CisKKyAgbW9kdWxlLmV4cG9ydHMgPSBWaXNpdG9yOworfSk7CisvLyMg
c291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5
dUlqb3pMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMeTR1THk0dUwyeHBZaTlvWVc1a2JHVmlZWEp6
TDJOdmJYQnBiR1Z5TDNacGMybDBiM0l1YW5NaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5j
eUk2SWpzN096czdPenM3TzBGQlJVRXNWMEZCVXl4UFFVRlBMRWRCUVVjN1FVRkRha0lzVVVGQlNT
eERRVUZETEU5QlFVOHNSMEZCUnl4RlFVRkZMRU5CUVVNN1IwRkRia0k3TzBGQlJVUXNVMEZCVHl4
RFFVRkRMRk5CUVZNc1IwRkJSenRCUVVOc1FpeGxRVUZYTEVWQlFVVXNUMEZCVHp0QlFVTndRaXha
UVVGUkxFVkJRVVVzUzBGQlN6czdPMEZCUjJZc1lVRkJVeXhGUVVGRkxHMUNRVUZUTEVsQlFVa3NS
VUZCUlN4SlFVRkpMRVZCUVVVN1FVRkRPVUlzVlVGQlNTeExRVUZMTEVkQlFVY3NTVUZCU1N4RFFV
RkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXp0
QlFVTndReXhWUVVGSkxFbEJRVWtzUTBGQlF5eFJRVUZSTEVWQlFVVTdPenRCUVVkcVFpeFpRVUZK
TEV0QlFVc3NTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhUUVVGVExFTkJRVU1zUzBGQlN5eERR
VUZETEVsQlFVa3NRMEZCUXl4RlFVRkZPMEZCUXpORExHZENRVUZOTERCQ1FVRmpMSGRDUVVGM1Fp
eEhRVUZITEV0QlFVc3NRMEZCUXl4SlFVRkpMRWRCUVVjc2VVSkJRWGxDTEVkQlFVY3NTVUZCU1N4
SFFVRkhMRTFCUVUwc1IwRkJSeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdVMEZE
Y0VnN1FVRkRSQ3haUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NTMEZCU3l4RFFVRkRP
MDlCUTNCQ08wdEJRMFk3T3pzN1FVRkpSQ3hyUWtGQll5eEZRVUZGTEhkQ1FVRlRMRWxCUVVrc1JV
RkJSU3hKUVVGSkxFVkJRVVU3UVVGRGJrTXNWVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhKUVVG
SkxFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTTdPMEZCUlROQ0xGVkJRVWtzUTBGQlF5eEpRVUZK
TEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVN1FVRkRaaXhqUVVGTkxEQkNRVUZqTEVsQlFVa3NR
MEZCUXl4SlFVRkpMRWRCUVVjc1dVRkJXU3hIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETzA5QlEz
UkVPMHRCUTBZN096czdRVUZKUkN4bFFVRlhMRVZCUVVVc2NVSkJRVk1zUzBGQlN5eEZRVUZGTzBG
QlF6TkNMRmRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZC
Unl4TFFVRkxMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNR
MEZCUXl4RlFVRkZMRVZCUVVVN1FVRkROVU1zV1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4TFFV
RkxMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03TzBGQlJYcENMRmxCUVVrc1EwRkJReXhMUVVG
TExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVTdRVUZEWWl4bFFVRkxMRU5CUVVNc1RVRkJUU3hE
UVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTnVRaXhYUVVGRExFVkJR
VVVzUTBGQlF6dEJRVU5LTEZkQlFVTXNSVUZCUlN4RFFVRkRPMU5CUTB3N1QwRkRSanRMUVVOR096
dEJRVVZFTEZWQlFVMHNSVUZCUlN4blFrRkJVeXhOUVVGTkxFVkJRVVU3UVVGRGRrSXNWVUZCU1N4
RFFVRkRMRTFCUVUwc1JVRkJSVHRCUVVOWUxHVkJRVTg3VDBGRFVqczdPMEZCUjBRc1ZVRkJTU3hE
UVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVN1FVRkRk
RUlzWTBGQlRTd3dRa0ZCWXl4blFrRkJaMElzUjBGQlJ5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RlFV
RkZMRTFCUVUwc1EwRkJReXhEUVVGRE8wOUJRemRFT3p0QlFVVkVMRlZCUVVrc1NVRkJTU3hEUVVG
RExFOUJRVThzUlVGQlJUdEJRVU5vUWl4WlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFOUJRVThz
UTBGQlF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1QwRkRjRU03UVVGRFJDeFZR
VUZKTEVOQlFVTXNUMEZCVHl4SFFVRkhMRTFCUVUwc1EwRkJRenM3UVVGRmRFSXNWVUZCU1N4SFFV
RkhMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4
TlFVRk5MRU5CUVVNc1EwRkJRenM3UVVGRmNFTXNWVUZCU1N4RFFVRkRMRTlCUVU4c1IwRkJSeXhK
UVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEV0QlFVc3NSVUZCUlN4RFFVRkRPenRCUVVWd1F5eFZR
VUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRkZCUVZFc1NVRkJTU3hIUVVGSExFVkJRVVU3UVVGRGVr
SXNaVUZCVHl4SFFVRkhMRU5CUVVNN1QwRkRXaXhOUVVGTkxFbEJRVWtzUjBGQlJ5eExRVUZMTEV0
QlFVc3NSVUZCUlR0QlFVTjRRaXhsUVVGUExFMUJRVTBzUTBGQlF6dFBRVU5tTzB0QlEwWTdPMEZC
UlVRc1YwRkJUeXhGUVVGRkxHbENRVUZUTEU5QlFVOHNSVUZCUlR0QlFVTjZRaXhWUVVGSkxFTkJR
VU1zVjBGQlZ5eERRVUZETEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRMUVVOb1F6
czdRVUZGUkN4eFFrRkJhVUlzUlVGQlJTeHJRa0ZCYTBJN1FVRkRja01zWVVGQlV5eEZRVUZGTEd0
Q1FVRnJRanM3UVVGRk4wSXNhMEpCUVdNc1JVRkJSU3hWUVVGVk8wRkJRekZDTEd0Q1FVRmpMRVZC
UVVVc1ZVRkJWVHM3UVVGRk1VSXNiMEpCUVdkQ0xFVkJRVVVzV1VGQldUdEJRVU01UWl4NVFrRkJj
VUlzUlVGQlJTd3JRa0ZCVXl4UFFVRlBMRVZCUVVVN1FVRkRka01zYTBKQlFWa3NRMEZCUXl4SlFV
RkpMRU5CUVVNc1NVRkJTU3hGUVVGRkxFOUJRVThzUTBGQlF5eERRVUZET3p0QlFVVnFReXhWUVVG
SkxFTkJRVU1zVTBGQlV5eERRVUZETEU5QlFVOHNSVUZCUlN4VFFVRlRMRU5CUVVNc1EwRkJRenRM
UVVOd1F6czdRVUZGUkN4dlFrRkJaMElzUlVGQlJTeDVRMEZCZDBJc1JVRkJSVHRCUVVNMVF5eHZR
a0ZCWjBJc1JVRkJSU3g1UTBGQmQwSXNSVUZCUlRzN1FVRkZOVU1zYVVKQlFXRXNSVUZCUlN4clFr
RkJhMEk3TzBGQlJXcERMR3RDUVVGakxFVkJRVVVzYjBOQlFYRkNMRVZCUVVVN08wRkJSWFpETEds
Q1FVRmhMRVZCUVVVc2NVTkJRWFZDTEVWQlFVVTdRVUZEZUVNc2FVSkJRV0VzUlVGQlJTeHhRMEZC
ZFVJc1JVRkJSVHRCUVVONFF5eHJRa0ZCWXl4RlFVRkZMRzlEUVVGeFFpeEZRVUZGTzBGQlEzWkRM
RzlDUVVGblFpeEZRVUZGTEhsRFFVRjNRaXhGUVVGRk8wRkJRelZETEdWQlFWY3NSVUZCUlN4dlEw
RkJkMElzUlVGQlJUczdRVUZGZGtNc1VVRkJTU3hGUVVGRkxHTkJRVk1zU1VGQlNTeEZRVUZGTzBG
QlEyNUNMRlZCUVVrc1EwRkJReXhYUVVGWExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZC
UXl4RFFVRkRPMHRCUXpsQ08wRkJRMFFzV1VGQlVTeEZRVUZGTEd0Q1FVRlRMRWxCUVVrc1JVRkJS
VHRCUVVOMlFpeFZRVUZKTEVOQlFVTXNZMEZCWXl4RFFVRkRMRWxCUVVrc1JVRkJSU3hQUVVGUExF
TkJRVU1zUTBGQlF6dExRVU53UXp0SFFVTkdMRU5CUVVNN08wRkJSVVlzVjBGQlV5eHJRa0ZCYTBJ
c1EwRkJReXhSUVVGUkxFVkJRVVU3UVVGRGNFTXNVVUZCU1N4RFFVRkRMR05CUVdNc1EwRkJReXhS
UVVGUkxFVkJRVVVzVFVGQlRTeERRVUZETEVOQlFVTTdRVUZEZEVNc1VVRkJTU3hEUVVGRExGZEJR
VmNzUTBGQlF5eFJRVUZSTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1FVRkRiRU1zVVVGQlNT
eERRVUZETEZOQlFWTXNRMEZCUXl4UlFVRlJMRVZCUVVVc1RVRkJUU3hEUVVGRExFTkJRVU03UjBG
RGJFTTdRVUZEUkN4WFFVRlRMRlZCUVZVc1EwRkJReXhMUVVGTExFVkJRVVU3UVVGRGVrSXNjMEpC
UVd0Q0xFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NSVUZCUlN4TFFVRkxMRU5CUVVNc1EwRkJR
enM3UVVGRmNrTXNVVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhMUVVGTExFVkJRVVVzVTBGQlV5
eERRVUZETEVOQlFVTTdRVUZEYWtNc1VVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eExRVUZMTEVW
QlFVVXNVMEZCVXl4RFFVRkRMRU5CUVVNN1IwRkRiRU03UVVGRFJDeFhRVUZUTEZsQlFWa3NRMEZC
UXl4UFFVRlBMRVZCUVVVN1FVRkROMElzVVVGQlNTeERRVUZETEdOQlFXTXNRMEZCUXl4UFFVRlBM
RVZCUVVVc1RVRkJUU3hEUVVGRExFTkJRVU03UVVGRGNrTXNVVUZCU1N4RFFVRkRMRmRCUVZjc1Ew
RkJReXhQUVVGUExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdRVUZEYWtNc1VVRkJTU3hEUVVG
RExGTkJRVk1zUTBGQlF5eFBRVUZQTEVWQlFVVXNUVUZCVFN4RFFVRkRMRU5CUVVNN1IwRkRha003
TzIxQ1FVVmpMRTlCUVU4aUxDSm1hV3hsSWpvaWRtbHphWFJ2Y2k1cWN5SXNJbk52ZFhKalpYTkRi
MjUwWlc1MElqcGJJbWx0Y0c5eWRDQkZlR05sY0hScGIyNGdabkp2YlNBbkxpNHZaWGhqWlhCMGFX
OXVKenRjYmx4dVpuVnVZM1JwYjI0Z1ZtbHphWFJ2Y2lncElIdGNiaUFnZEdocGN5NXdZWEpsYm5S
eklEMGdXMTA3WEc1OVhHNWNibFpwYzJsMGIzSXVjSEp2ZEc5MGVYQmxJRDBnZTF4dUlDQmpiMjV6
ZEhKMVkzUnZjam9nVm1semFYUnZjaXhjYmlBZ2JYVjBZWFJwYm1jNklHWmhiSE5sTEZ4dVhHNGdJ
Qzh2SUZacGMybDBjeUJoSUdkcGRtVnVJSFpoYkhWbExpQkpaaUJ0ZFhSaGRHbHVaeXdnZDJsc2JD
QnlaWEJzWVdObElIUm9aU0IyWVd4MVpTQnBaaUJ1WldObGMzTmhjbmt1WEc0Z0lHRmpZMlZ3ZEV0
bGVUb2dablZ1WTNScGIyNG9ibTlrWlN3Z2JtRnRaU2tnZTF4dUlDQWdJR3hsZENCMllXeDFaU0E5
SUhSb2FYTXVZV05qWlhCMEtHNXZaR1ZiYm1GdFpWMHBPMXh1SUNBZ0lHbG1JQ2gwYUdsekxtMTFk
R0YwYVc1bktTQjdYRzRnSUNBZ0lDQXZMeUJJWVdOcmVTQnpZVzVwZEhrZ1kyaGxZMnM2SUZSb2FY
TWdiV0Y1SUdoaGRtVWdZU0JtWlhjZ1ptRnNjMlVnY0c5emFYUnBkbVZ6SUdadmNpQjBlWEJsSUda
dmNpQjBhR1VnYUdWc2NHVnlYRzRnSUNBZ0lDQXZMeUJ0WlhSb2IyUnpJR0oxZENCM2FXeHNJR2Rs
Ym1WeVlXeHNlU0JrYnlCMGFHVWdjbWxuYUhRZ2RHaHBibWNnZDJsMGFHOTFkQ0JoSUd4dmRDQnZa
aUJ2ZG1WeWFHVmhaQzVjYmlBZ0lDQWdJR2xtSUNoMllXeDFaU0FtSmlBaFZtbHphWFJ2Y2k1d2Nt
OTBiM1I1Y0dWYmRtRnNkV1V1ZEhsd1pWMHBJSHRjYmlBZ0lDQWdJQ0FnZEdoeWIzY2dibVYzSUVW
NFkyVndkR2x2YmlnblZXNWxlSEJsWTNSbFpDQnViMlJsSUhSNWNHVWdYQ0luSUNzZ2RtRnNkV1V1
ZEhsd1pTQXJJQ2RjSWlCbWIzVnVaQ0IzYUdWdUlHRmpZMlZ3ZEdsdVp5QW5JQ3NnYm1GdFpTQXJJ
Q2NnYjI0Z0p5QXJJRzV2WkdVdWRIbHdaU2s3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdJQ0J1YjJSbFcy
NWhiV1ZkSUQwZ2RtRnNkV1U3WEc0Z0lDQWdmVnh1SUNCOUxGeHVYRzRnSUM4dklGQmxjbVp2Y20x
eklHRnVJR0ZqWTJWd2RDQnZjR1Z5WVhScGIyNGdkMmwwYUNCaFpHUmxaQ0J6WVc1cGRIa2dZMmhs
WTJzZ2RHOGdaVzV6ZFhKbFhHNGdJQzh2SUhKbGNYVnBjbVZrSUd0bGVYTWdZWEpsSUc1dmRDQnla
VzF2ZG1Wa0xseHVJQ0JoWTJObGNIUlNaWEYxYVhKbFpEb2dablZ1WTNScGIyNG9ibTlrWlN3Z2Jt
RnRaU2tnZTF4dUlDQWdJSFJvYVhNdVlXTmpaWEIwUzJWNUtHNXZaR1VzSUc1aGJXVXBPMXh1WEc0
Z0lDQWdhV1lnS0NGdWIyUmxXMjVoYldWZEtTQjdYRzRnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dSWGhq
WlhCMGFXOXVLRzV2WkdVdWRIbHdaU0FySUNjZ2NtVnhkV2x5WlhNZ0p5QXJJRzVoYldVcE8xeHVJ
Q0FnSUgxY2JpQWdmU3hjYmx4dUlDQXZMeUJVY21GMlpYSnpaWE1nWVNCbmFYWmxiaUJoY25KaGVT
NGdTV1lnYlhWMFlYUnBibWNzSUdWdGNIUjVJSEpsYzNCdWMyVnpJSGRwYkd3Z1ltVWdjbVZ0YjNa
bFpGeHVJQ0F2THlCbWIzSWdZMmhwYkdRZ1pXeGxiV1Z1ZEhNdVhHNGdJR0ZqWTJWd2RFRnljbUY1
T2lCbWRXNWpkR2x2YmloaGNuSmhlU2tnZTF4dUlDQWdJR1p2Y2lBb2JHVjBJR2tnUFNBd0xDQnNJ
RDBnWVhKeVlYa3ViR1Z1WjNSb095QnBJRHdnYkRzZ2FTc3JLU0I3WEc0Z0lDQWdJQ0IwYUdsekxt
RmpZMlZ3ZEV0bGVTaGhjbkpoZVN3Z2FTazdYRzVjYmlBZ0lDQWdJR2xtSUNnaFlYSnlZWGxiYVYw
cElIdGNiaUFnSUNBZ0lDQWdZWEp5WVhrdWMzQnNhV05sS0drc0lERXBPMXh1SUNBZ0lDQWdJQ0Jw
TFMwN1hHNGdJQ0FnSUNBZ0lHd3RMVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUgwc1hHNWNi
aUFnWVdOalpYQjBPaUJtZFc1amRHbHZiaWh2WW1wbFkzUXBJSHRjYmlBZ0lDQnBaaUFvSVc5aWFt
VmpkQ2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVPMXh1SUNBZ0lIMWNibHh1SUNBZ0lDOHFJR2x6ZEdG
dVluVnNJR2xuYm05eVpTQnVaWGgwT2lCVFlXNXBkSGtnWTI5a1pTQXFMMXh1SUNBZ0lHbG1JQ2do
ZEdocGMxdHZZbXBsWTNRdWRIbHdaVjBwSUh0Y2JpQWdJQ0FnSUhSb2NtOTNJRzVsZHlCRmVHTmxj
SFJwYjI0b0oxVnVhMjV2ZDI0Z2RIbHdaVG9nSnlBcklHOWlhbVZqZEM1MGVYQmxMQ0J2WW1wbFkz
UXBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHbG1JQ2gwYUdsekxtTjFjbkpsYm5RcElIdGNiaUFnSUNB
Z0lIUm9hWE11Y0dGeVpXNTBjeTUxYm5Ob2FXWjBLSFJvYVhNdVkzVnljbVZ1ZENrN1hHNGdJQ0Fn
ZlZ4dUlDQWdJSFJvYVhNdVkzVnljbVZ1ZENBOUlHOWlhbVZqZER0Y2JseHVJQ0FnSUd4bGRDQnla
WFFnUFNCMGFHbHpXMjlpYW1WamRDNTBlWEJsWFNodlltcGxZM1FwTzF4dVhHNGdJQ0FnZEdocGN5
NWpkWEp5Wlc1MElEMGdkR2hwY3k1d1lYSmxiblJ6TG5Ob2FXWjBLQ2s3WEc1Y2JpQWdJQ0JwWmlB
b0lYUm9hWE11YlhWMFlYUnBibWNnZkh3Z2NtVjBLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdjbVYw
TzF4dUlDQWdJSDBnWld4elpTQnBaaUFvY21WMElDRTlQU0JtWVd4elpTa2dlMXh1SUNBZ0lDQWdj
bVYwZFhKdUlHOWlhbVZqZER0Y2JpQWdJQ0I5WEc0Z0lIMHNYRzVjYmlBZ1VISnZaM0poYlRvZ1pu
VnVZM1JwYjI0b2NISnZaM0poYlNrZ2UxeHVJQ0FnSUhSb2FYTXVZV05qWlhCMFFYSnlZWGtvY0hK
dlozSmhiUzVpYjJSNUtUdGNiaUFnZlN4Y2JseHVJQ0JOZFhOMFlXTm9aVk4wWVhSbGJXVnVkRG9n
ZG1semFYUlRkV0pGZUhCeVpYTnphVzl1TEZ4dUlDQkVaV052Y21GMGIzSTZJSFpwYzJsMFUzVmlS
WGh3Y21WemMybHZiaXhjYmx4dUlDQkNiRzlqYTFOMFlYUmxiV1Z1ZERvZ2RtbHphWFJDYkc5amF5
eGNiaUFnUkdWamIzSmhkRzl5UW14dlkyczZJSFpwYzJsMFFteHZZMnNzWEc1Y2JpQWdVR0Z5ZEds
aGJGTjBZWFJsYldWdWREb2dkbWx6YVhSUVlYSjBhV0ZzTEZ4dUlDQlFZWEowYVdGc1FteHZZMnRU
ZEdGMFpXMWxiblE2SUdaMWJtTjBhVzl1S0hCaGNuUnBZV3dwSUh0Y2JpQWdJQ0IyYVhOcGRGQmhj
blJwWVd3dVkyRnNiQ2gwYUdsekxDQndZWEowYVdGc0tUdGNibHh1SUNBZ0lIUm9hWE11WVdOalpY
QjBTMlY1S0hCaGNuUnBZV3dzSUNkd2NtOW5jbUZ0SnlrN1hHNGdJSDBzWEc1Y2JpQWdRMjl1ZEdW
dWRGTjBZWFJsYldWdWREb2dablZ1WTNScGIyNG9MeW9nWTI5dWRHVnVkQ0FxTHlrZ2UzMHNYRzRn
SUVOdmJXMWxiblJUZEdGMFpXMWxiblE2SUdaMWJtTjBhVzl1S0M4cUlHTnZiVzFsYm5RZ0tpOHBJ
SHQ5TEZ4dVhHNGdJRk4xWWtWNGNISmxjM05wYjI0NklIWnBjMmwwVTNWaVJYaHdjbVZ6YzJsdmJp
eGNibHh1SUNCUVlYUm9SWGh3Y21WemMybHZiam9nWm5WdVkzUnBiMjRvTHlvZ2NHRjBhQ0FxTHlr
Z2UzMHNYRzVjYmlBZ1UzUnlhVzVuVEdsMFpYSmhiRG9nWm5WdVkzUnBiMjRvTHlvZ2MzUnlhVzVu
SUNvdktTQjdmU3hjYmlBZ1RuVnRZbVZ5VEdsMFpYSmhiRG9nWm5WdVkzUnBiMjRvTHlvZ2JuVnRZ
bVZ5SUNvdktTQjdmU3hjYmlBZ1FtOXZiR1ZoYmt4cGRHVnlZV3c2SUdaMWJtTjBhVzl1S0M4cUlH
SnZiMndnS2k4cElIdDlMRnh1SUNCVmJtUmxabWx1WldSTWFYUmxjbUZzT2lCbWRXNWpkR2x2Ymln
dktpQnNhWFJsY21Gc0lDb3ZLU0I3ZlN4Y2JpQWdUblZzYkV4cGRHVnlZV3c2SUdaMWJtTjBhVzl1
S0M4cUlHeHBkR1Z5WVd3Z0tpOHBJSHQ5TEZ4dVhHNGdJRWhoYzJnNklHWjFibU4wYVc5dUtHaGhj
MmdwSUh0Y2JpQWdJQ0IwYUdsekxtRmpZMlZ3ZEVGeWNtRjVLR2hoYzJndWNHRnBjbk1wTzF4dUlD
QjlMRnh1SUNCSVlYTm9VR0ZwY2pvZ1puVnVZM1JwYjI0b2NHRnBjaWtnZTF4dUlDQWdJSFJvYVhN
dVlXTmpaWEIwVW1WeGRXbHlaV1FvY0dGcGNpd2dKM1poYkhWbEp5azdYRzRnSUgxY2JuMDdYRzVj
Ym1aMWJtTjBhVzl1SUhacGMybDBVM1ZpUlhod2NtVnpjMmx2YmlodGRYTjBZV05vWlNrZ2UxeHVJ
Q0IwYUdsekxtRmpZMlZ3ZEZKbGNYVnBjbVZrS0cxMWMzUmhZMmhsTENBbmNHRjBhQ2NwTzF4dUlD
QjBhR2x6TG1GalkyVndkRUZ5Y21GNUtHMTFjM1JoWTJobExuQmhjbUZ0Y3lrN1hHNGdJSFJvYVhN
dVlXTmpaWEIwUzJWNUtHMTFjM1JoWTJobExDQW5hR0Z6YUNjcE8xeHVmVnh1Wm5WdVkzUnBiMjRn
ZG1semFYUkNiRzlqYXloaWJHOWpheWtnZTF4dUlDQjJhWE5wZEZOMVlrVjRjSEpsYzNOcGIyNHVZ
MkZzYkNoMGFHbHpMQ0JpYkc5amF5azdYRzVjYmlBZ2RHaHBjeTVoWTJObGNIUkxaWGtvWW14dlky
c3NJQ2R3Y205bmNtRnRKeWs3WEc0Z0lIUm9hWE11WVdOalpYQjBTMlY1S0dKc2IyTnJMQ0FuYVc1
MlpYSnpaU2NwTzF4dWZWeHVablZ1WTNScGIyNGdkbWx6YVhSUVlYSjBhV0ZzS0hCaGNuUnBZV3dw
SUh0Y2JpQWdkR2hwY3k1aFkyTmxjSFJTWlhGMWFYSmxaQ2h3WVhKMGFXRnNMQ0FuYm1GdFpTY3BP
MXh1SUNCMGFHbHpMbUZqWTJWd2RFRnljbUY1S0hCaGNuUnBZV3d1Y0dGeVlXMXpLVHRjYmlBZ2RH
aHBjeTVoWTJObGNIUkxaWGtvY0dGeWRHbGhiQ3dnSjJoaGMyZ25LVHRjYm4xY2JseHVaWGh3YjNK
MElHUmxabUYxYkhRZ1ZtbHphWFJ2Y2p0Y2JpSmRmUT09CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9hbWQvaGFuZGxlYmFycy9jb21w
aWxlci93aGl0ZXNwYWNlLWNvbnRyb2wuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1
bGVzL2hhbmRsZWJhcnMvZGlzdC9hbWQvaGFuZGxlYmFycy9jb21waWxlci93aGl0ZXNwYWNlLWNv
bnRyb2wuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNDdjMzY1YTk2MjI2ZDJmNjMyMzRjNWU5OTdkZTk2ZjljZWIy
YWY0MQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMv
aGFuZGxlYmFycy9kaXN0L2FtZC9oYW5kbGViYXJzL2NvbXBpbGVyL3doaXRlc3BhY2UtY29udHJv
bC5qcwpAQCAtMCwwICsxLDIxOSBAQAorZGVmaW5lKFsnZXhwb3J0cycsICdtb2R1bGUnLCAnLi92
aXNpdG9yJ10sIGZ1bmN0aW9uIChleHBvcnRzLCBtb2R1bGUsIF92aXNpdG9yKSB7CisgICd1c2Ug
c3RyaWN0JzsKKworICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dAorCisgIGZ1bmN0aW9uIF9pbnRl
cm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBv
YmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH0KKworICB2YXIgX1Zpc2l0b3IgPSBfaW50ZXJvcFJl
cXVpcmVEZWZhdWx0KF92aXNpdG9yKTsKKworICBmdW5jdGlvbiBXaGl0ZXNwYWNlQ29udHJvbCgp
IHsKKyAgICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNb
MF0gPT09IHVuZGVmaW5lZCA/IHt9IDogYXJndW1lbnRzWzBdOworCisgICAgdGhpcy5vcHRpb25z
ID0gb3B0aW9uczsKKyAgfQorICBXaGl0ZXNwYWNlQ29udHJvbC5wcm90b3R5cGUgPSBuZXcgX1Zp
c2l0b3JbJ2RlZmF1bHQnXSgpOworCisgIFdoaXRlc3BhY2VDb250cm9sLnByb3RvdHlwZS5Qcm9n
cmFtID0gZnVuY3Rpb24gKHByb2dyYW0pIHsKKyAgICB2YXIgZG9TdGFuZGFsb25lID0gIXRoaXMu
b3B0aW9ucy5pZ25vcmVTdGFuZGFsb25lOworCisgICAgdmFyIGlzUm9vdCA9ICF0aGlzLmlzUm9v
dFNlZW47CisgICAgdGhpcy5pc1Jvb3RTZWVuID0gdHJ1ZTsKKworICAgIHZhciBib2R5ID0gcHJv
Z3JhbS5ib2R5OworICAgIGZvciAodmFyIGkgPSAwLCBsID0gYm9keS5sZW5ndGg7IGkgPCBsOyBp
KyspIHsKKyAgICAgIHZhciBjdXJyZW50ID0gYm9keVtpXSwKKyAgICAgICAgICBzdHJpcCA9IHRo
aXMuYWNjZXB0KGN1cnJlbnQpOworCisgICAgICBpZiAoIXN0cmlwKSB7CisgICAgICAgIGNvbnRp
bnVlOworICAgICAgfQorCisgICAgICB2YXIgX2lzUHJldldoaXRlc3BhY2UgPSBpc1ByZXZXaGl0
ZXNwYWNlKGJvZHksIGksIGlzUm9vdCksCisgICAgICAgICAgX2lzTmV4dFdoaXRlc3BhY2UgPSBp
c05leHRXaGl0ZXNwYWNlKGJvZHksIGksIGlzUm9vdCksCisgICAgICAgICAgb3BlblN0YW5kYWxv
bmUgPSBzdHJpcC5vcGVuU3RhbmRhbG9uZSAmJiBfaXNQcmV2V2hpdGVzcGFjZSwKKyAgICAgICAg
ICBjbG9zZVN0YW5kYWxvbmUgPSBzdHJpcC5jbG9zZVN0YW5kYWxvbmUgJiYgX2lzTmV4dFdoaXRl
c3BhY2UsCisgICAgICAgICAgaW5saW5lU3RhbmRhbG9uZSA9IHN0cmlwLmlubGluZVN0YW5kYWxv
bmUgJiYgX2lzUHJldldoaXRlc3BhY2UgJiYgX2lzTmV4dFdoaXRlc3BhY2U7CisKKyAgICAgIGlm
IChzdHJpcC5jbG9zZSkgeworICAgICAgICBvbWl0UmlnaHQoYm9keSwgaSwgdHJ1ZSk7CisgICAg
ICB9CisgICAgICBpZiAoc3RyaXAub3BlbikgeworICAgICAgICBvbWl0TGVmdChib2R5LCBpLCB0
cnVlKTsKKyAgICAgIH0KKworICAgICAgaWYgKGRvU3RhbmRhbG9uZSAmJiBpbmxpbmVTdGFuZGFs
b25lKSB7CisgICAgICAgIG9taXRSaWdodChib2R5LCBpKTsKKworICAgICAgICBpZiAob21pdExl
ZnQoYm9keSwgaSkpIHsKKyAgICAgICAgICAvLyBJZiB3ZSBhcmUgb24gYSBzdGFuZGFsb25lIG5v
ZGUsIHNhdmUgdGhlIGluZGVudCBpbmZvIGZvciBwYXJ0aWFscworICAgICAgICAgIGlmIChjdXJy
ZW50LnR5cGUgPT09ICdQYXJ0aWFsU3RhdGVtZW50JykgeworICAgICAgICAgICAgLy8gUHVsbCBv
dXQgdGhlIHdoaXRlc3BhY2UgZnJvbSB0aGUgZmluYWwgbGluZQorICAgICAgICAgICAgY3VycmVu
dC5pbmRlbnQgPSAvKFsgXHRdKyQpLy5leGVjKGJvZHlbaSAtIDFdLm9yaWdpbmFsKVsxXTsKKyAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGlmIChkb1N0YW5kYWxvbmUgJiYg
b3BlblN0YW5kYWxvbmUpIHsKKyAgICAgICAgb21pdFJpZ2h0KChjdXJyZW50LnByb2dyYW0gfHwg
Y3VycmVudC5pbnZlcnNlKS5ib2R5KTsKKworICAgICAgICAvLyBTdHJpcCBvdXQgdGhlIHByZXZp
b3VzIGNvbnRlbnQgbm9kZSBpZiBpdCdzIHdoaXRlc3BhY2Ugb25seQorICAgICAgICBvbWl0TGVm
dChib2R5LCBpKTsKKyAgICAgIH0KKyAgICAgIGlmIChkb1N0YW5kYWxvbmUgJiYgY2xvc2VTdGFu
ZGFsb25lKSB7CisgICAgICAgIC8vIEFsd2F5cyBzdHJpcCB0aGUgbmV4dCBub2RlCisgICAgICAg
IG9taXRSaWdodChib2R5LCBpKTsKKworICAgICAgICBvbWl0TGVmdCgoY3VycmVudC5pbnZlcnNl
IHx8IGN1cnJlbnQucHJvZ3JhbSkuYm9keSk7CisgICAgICB9CisgICAgfQorCisgICAgcmV0dXJu
IHByb2dyYW07CisgIH07CisKKyAgV2hpdGVzcGFjZUNvbnRyb2wucHJvdG90eXBlLkJsb2NrU3Rh
dGVtZW50ID0gV2hpdGVzcGFjZUNvbnRyb2wucHJvdG90eXBlLkRlY29yYXRvckJsb2NrID0gV2hp
dGVzcGFjZUNvbnRyb2wucHJvdG90eXBlLlBhcnRpYWxCbG9ja1N0YXRlbWVudCA9IGZ1bmN0aW9u
IChibG9jaykgeworICAgIHRoaXMuYWNjZXB0KGJsb2NrLnByb2dyYW0pOworICAgIHRoaXMuYWNj
ZXB0KGJsb2NrLmludmVyc2UpOworCisgICAgLy8gRmluZCB0aGUgaW52ZXJzZSBwcm9ncmFtIHRo
YXQgaXMgaW52b2xlZCB3aXRoIHdoaXRlc3BhY2Ugc3RyaXBwaW5nLgorICAgIHZhciBwcm9ncmFt
ID0gYmxvY2sucHJvZ3JhbSB8fCBibG9jay5pbnZlcnNlLAorICAgICAgICBpbnZlcnNlID0gYmxv
Y2sucHJvZ3JhbSAmJiBibG9jay5pbnZlcnNlLAorICAgICAgICBmaXJzdEludmVyc2UgPSBpbnZl
cnNlLAorICAgICAgICBsYXN0SW52ZXJzZSA9IGludmVyc2U7CisKKyAgICBpZiAoaW52ZXJzZSAm
JiBpbnZlcnNlLmNoYWluZWQpIHsKKyAgICAgIGZpcnN0SW52ZXJzZSA9IGludmVyc2UuYm9keVsw
XS5wcm9ncmFtOworCisgICAgICAvLyBXYWxrIHRoZSBpbnZlcnNlIGNoYWluIHRvIGZpbmQgdGhl
IGxhc3QgaW52ZXJzZSB0aGF0IGlzIGFjdHVhbGx5IGluIHRoZSBjaGFpbi4KKyAgICAgIHdoaWxl
IChsYXN0SW52ZXJzZS5jaGFpbmVkKSB7CisgICAgICAgIGxhc3RJbnZlcnNlID0gbGFzdEludmVy
c2UuYm9keVtsYXN0SW52ZXJzZS5ib2R5Lmxlbmd0aCAtIDFdLnByb2dyYW07CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIHN0cmlwID0geworICAgICAgb3BlbjogYmxvY2sub3BlblN0cmlwLm9w
ZW4sCisgICAgICBjbG9zZTogYmxvY2suY2xvc2VTdHJpcC5jbG9zZSwKKworICAgICAgLy8gRGV0
ZXJtaW5lIHRoZSBzdGFuZGFsb25lIGNhbmRpYWN5LiBCYXNpY2FsbHkgZmxhZyBvdXIgY29udGVu
dCBhcyBiZWluZyBwb3NzaWJseSBzdGFuZGFsb25lCisgICAgICAvLyBzbyBvdXIgcGFyZW50IGNh
biBkZXRlcm1pbmUgaWYgd2UgYWN0dWFsbHkgYXJlIHN0YW5kYWxvbmUKKyAgICAgIG9wZW5TdGFu
ZGFsb25lOiBpc05leHRXaGl0ZXNwYWNlKHByb2dyYW0uYm9keSksCisgICAgICBjbG9zZVN0YW5k
YWxvbmU6IGlzUHJldldoaXRlc3BhY2UoKGZpcnN0SW52ZXJzZSB8fCBwcm9ncmFtKS5ib2R5KQor
ICAgIH07CisKKyAgICBpZiAoYmxvY2sub3BlblN0cmlwLmNsb3NlKSB7CisgICAgICBvbWl0Umln
aHQocHJvZ3JhbS5ib2R5LCBudWxsLCB0cnVlKTsKKyAgICB9CisKKyAgICBpZiAoaW52ZXJzZSkg
eworICAgICAgdmFyIGludmVyc2VTdHJpcCA9IGJsb2NrLmludmVyc2VTdHJpcDsKKworICAgICAg
aWYgKGludmVyc2VTdHJpcC5vcGVuKSB7CisgICAgICAgIG9taXRMZWZ0KHByb2dyYW0uYm9keSwg
bnVsbCwgdHJ1ZSk7CisgICAgICB9CisKKyAgICAgIGlmIChpbnZlcnNlU3RyaXAuY2xvc2UpIHsK
KyAgICAgICAgb21pdFJpZ2h0KGZpcnN0SW52ZXJzZS5ib2R5LCBudWxsLCB0cnVlKTsKKyAgICAg
IH0KKyAgICAgIGlmIChibG9jay5jbG9zZVN0cmlwLm9wZW4pIHsKKyAgICAgICAgb21pdExlZnQo
bGFzdEludmVyc2UuYm9keSwgbnVsbCwgdHJ1ZSk7CisgICAgICB9CisKKyAgICAgIC8vIEZpbmQg
c3RhbmRhbG9uZSBlbHNlIHN0YXRtZW50cworICAgICAgaWYgKCF0aGlzLm9wdGlvbnMuaWdub3Jl
U3RhbmRhbG9uZSAmJiBpc1ByZXZXaGl0ZXNwYWNlKHByb2dyYW0uYm9keSkgJiYgaXNOZXh0V2hp
dGVzcGFjZShmaXJzdEludmVyc2UuYm9keSkpIHsKKyAgICAgICAgb21pdExlZnQocHJvZ3JhbS5i
b2R5KTsKKyAgICAgICAgb21pdFJpZ2h0KGZpcnN0SW52ZXJzZS5ib2R5KTsKKyAgICAgIH0KKyAg
ICB9IGVsc2UgaWYgKGJsb2NrLmNsb3NlU3RyaXAub3BlbikgeworICAgICAgb21pdExlZnQocHJv
Z3JhbS5ib2R5LCBudWxsLCB0cnVlKTsKKyAgICB9CisKKyAgICByZXR1cm4gc3RyaXA7CisgIH07
CisKKyAgV2hpdGVzcGFjZUNvbnRyb2wucHJvdG90eXBlLkRlY29yYXRvciA9IFdoaXRlc3BhY2VD
b250cm9sLnByb3RvdHlwZS5NdXN0YWNoZVN0YXRlbWVudCA9IGZ1bmN0aW9uIChtdXN0YWNoZSkg
eworICAgIHJldHVybiBtdXN0YWNoZS5zdHJpcDsKKyAgfTsKKworICBXaGl0ZXNwYWNlQ29udHJv
bC5wcm90b3R5cGUuUGFydGlhbFN0YXRlbWVudCA9IFdoaXRlc3BhY2VDb250cm9sLnByb3RvdHlw
ZS5Db21tZW50U3RhdGVtZW50ID0gZnVuY3Rpb24gKG5vZGUpIHsKKyAgICAvKiBpc3RhbmJ1bCBp
Z25vcmUgbmV4dCAqLworICAgIHZhciBzdHJpcCA9IG5vZGUuc3RyaXAgfHwge307CisgICAgcmV0
dXJuIHsKKyAgICAgIGlubGluZVN0YW5kYWxvbmU6IHRydWUsCisgICAgICBvcGVuOiBzdHJpcC5v
cGVuLAorICAgICAgY2xvc2U6IHN0cmlwLmNsb3NlCisgICAgfTsKKyAgfTsKKworICBmdW5jdGlv
biBpc1ByZXZXaGl0ZXNwYWNlKGJvZHksIGksIGlzUm9vdCkgeworICAgIGlmIChpID09PSB1bmRl
ZmluZWQpIHsKKyAgICAgIGkgPSBib2R5Lmxlbmd0aDsKKyAgICB9CisKKyAgICAvLyBOb2RlcyB0
aGF0IGVuZCB3aXRoIG5ld2xpbmVzIGFyZSBjb25zaWRlcmVkIHdoaXRlc3BhY2UgKGJ1dCBhcmUg
c3BlY2lhbAorICAgIC8vIGNhc2VkIGZvciBzdHJpcCBvcGVyYXRpb25zKQorICAgIHZhciBwcmV2
ID0gYm9keVtpIC0gMV0sCisgICAgICAgIHNpYmxpbmcgPSBib2R5W2kgLSAyXTsKKyAgICBpZiAo
IXByZXYpIHsKKyAgICAgIHJldHVybiBpc1Jvb3Q7CisgICAgfQorCisgICAgaWYgKHByZXYudHlw
ZSA9PT0gJ0NvbnRlbnRTdGF0ZW1lbnQnKSB7CisgICAgICByZXR1cm4gKHNpYmxpbmcgfHwgIWlz
Um9vdCA/IC9ccj9cblxzKj8kLyA6IC8oXnxccj9cbilccyo/JC8pLnRlc3QocHJldi5vcmlnaW5h
bCk7CisgICAgfQorICB9CisgIGZ1bmN0aW9uIGlzTmV4dFdoaXRlc3BhY2UoYm9keSwgaSwgaXNS
b290KSB7CisgICAgaWYgKGkgPT09IHVuZGVmaW5lZCkgeworICAgICAgaSA9IC0xOworICAgIH0K
KworICAgIHZhciBuZXh0ID0gYm9keVtpICsgMV0sCisgICAgICAgIHNpYmxpbmcgPSBib2R5W2kg
KyAyXTsKKyAgICBpZiAoIW5leHQpIHsKKyAgICAgIHJldHVybiBpc1Jvb3Q7CisgICAgfQorCisg
ICAgaWYgKG5leHQudHlwZSA9PT0gJ0NvbnRlbnRTdGF0ZW1lbnQnKSB7CisgICAgICByZXR1cm4g
KHNpYmxpbmcgfHwgIWlzUm9vdCA/IC9eXHMqP1xyP1xuLyA6IC9eXHMqPyhccj9cbnwkKS8pLnRl
c3QobmV4dC5vcmlnaW5hbCk7CisgICAgfQorICB9CisKKyAgLy8gTWFya3MgdGhlIG5vZGUgdG8g
dGhlIHJpZ2h0IG9mIHRoZSBwb3NpdGlvbiBhcyBvbWl0dGVkLgorICAvLyBJLmUuIHt7Zm9vfX0n
ICcgd2lsbCBtYXJrIHRoZSAnICcgbm9kZSBhcyBvbWl0dGVkLgorICAvLworICAvLyBJZiBpIGlz
IHVuZGVmaW5lZCwgdGhlbiB0aGUgZmlyc3QgY2hpbGQgd2lsbCBiZSBtYXJrZWQgYXMgc3VjaC4K
KyAgLy8KKyAgLy8gSWYgbXVsaXRwbGUgaXMgdHJ1dGh5IHRoZW4gYWxsIHdoaXRlc3BhY2Ugd2ls
bCBiZSBzdHJpcHBlZCBvdXQgdW50aWwgbm9uLXdoaXRlc3BhY2UKKyAgLy8gY29udGVudCBpcyBt
ZXQuCisgIGZ1bmN0aW9uIG9taXRSaWdodChib2R5LCBpLCBtdWx0aXBsZSkgeworICAgIHZhciBj
dXJyZW50ID0gYm9keVtpID09IG51bGwgPyAwIDogaSArIDFdOworICAgIGlmICghY3VycmVudCB8
fCBjdXJyZW50LnR5cGUgIT09ICdDb250ZW50U3RhdGVtZW50JyB8fCAhbXVsdGlwbGUgJiYgY3Vy
cmVudC5yaWdodFN0cmlwcGVkKSB7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgdmFyIG9y
aWdpbmFsID0gY3VycmVudC52YWx1ZTsKKyAgICBjdXJyZW50LnZhbHVlID0gY3VycmVudC52YWx1
ZS5yZXBsYWNlKG11bHRpcGxlID8gL15ccysvIDogL15bIFx0XSpccj9cbj8vLCAnJyk7CisgICAg
Y3VycmVudC5yaWdodFN0cmlwcGVkID0gY3VycmVudC52YWx1ZSAhPT0gb3JpZ2luYWw7CisgIH0K
KworICAvLyBNYXJrcyB0aGUgbm9kZSB0byB0aGUgbGVmdCBvZiB0aGUgcG9zaXRpb24gYXMgb21p
dHRlZC4KKyAgLy8gSS5lLiAnICd7e2Zvb319IHdpbGwgbWFyayB0aGUgJyAnIG5vZGUgYXMgb21p
dHRlZC4KKyAgLy8KKyAgLy8gSWYgaSBpcyB1bmRlZmluZWQgdGhlbiB0aGUgbGFzdCBjaGlsZCB3
aWxsIGJlIG1hcmtlZCBhcyBzdWNoLgorICAvLworICAvLyBJZiBtdWxpdHBsZSBpcyB0cnV0aHkg
dGhlbiBhbGwgd2hpdGVzcGFjZSB3aWxsIGJlIHN0cmlwcGVkIG91dCB1bnRpbCBub24td2hpdGVz
cGFjZQorICAvLyBjb250ZW50IGlzIG1ldC4KKyAgZnVuY3Rpb24gb21pdExlZnQoYm9keSwgaSwg
bXVsdGlwbGUpIHsKKyAgICB2YXIgY3VycmVudCA9IGJvZHlbaSA9PSBudWxsID8gYm9keS5sZW5n
dGggLSAxIDogaSAtIDFdOworICAgIGlmICghY3VycmVudCB8fCBjdXJyZW50LnR5cGUgIT09ICdD
b250ZW50U3RhdGVtZW50JyB8fCAhbXVsdGlwbGUgJiYgY3VycmVudC5sZWZ0U3RyaXBwZWQpIHsK
KyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBXZSBvbWl0IHRoZSBsYXN0IG5vZGUgaWYg
aXQncyB3aGl0ZXNwYWNlIG9ubHkgYW5kIG5vdCBwcmVjZWVkZWQgYnkgYSBub24tY29udGVudCBu
b2RlLgorICAgIHZhciBvcmlnaW5hbCA9IGN1cnJlbnQudmFsdWU7CisgICAgY3VycmVudC52YWx1
ZSA9IGN1cnJlbnQudmFsdWUucmVwbGFjZShtdWx0aXBsZSA/IC9ccyskLyA6IC9bIFx0XSskLywg
JycpOworICAgIGN1cnJlbnQubGVmdFN0cmlwcGVkID0gY3VycmVudC52YWx1ZSAhPT0gb3JpZ2lu
YWw7CisgICAgcmV0dXJuIGN1cnJlbnQubGVmdFN0cmlwcGVkOworICB9CisKKyAgbW9kdWxlLmV4
cG9ydHMgPSBXaGl0ZXNwYWNlQ29udHJvbDsKK30pOworLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0
YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpw
YklpNHVMeTR1THk0dUx5NHVMMnhwWWk5b1lXNWtiR1ZpWVhKekwyTnZiWEJwYkdWeUwzZG9hWFJs
YzNCaFkyVXRZMjl1ZEhKdmJDNXFjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lP
enM3T3pzN096czdRVUZGUVN4WFFVRlRMR2xDUVVGcFFpeEhRVUZsTzFGQlFXUXNUMEZCVHl4NVJF
RkJSeXhGUVVGRk96dEJRVU55UXl4UlFVRkpMRU5CUVVNc1QwRkJUeXhIUVVGSExFOUJRVThzUTBG
QlF6dEhRVU40UWp0QlFVTkVMRzFDUVVGcFFpeERRVUZETEZOQlFWTXNSMEZCUnl4NVFrRkJZU3hE
UVVGRE96dEJRVVUxUXl4dFFrRkJhVUlzUTBGQlF5eFRRVUZUTEVOQlFVTXNUMEZCVHl4SFFVRkhM
RlZCUVZNc1QwRkJUeXhGUVVGRk8wRkJRM1JFTEZGQlFVMHNXVUZCV1N4SFFVRkhMRU5CUVVNc1NV
RkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eG5Ra0ZCWjBJc1EwRkJRenM3UVVGRmNFUXNVVUZCU1N4
TlFVRk5MRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETzBGQlF6bENMRkZC
UVVrc1EwRkJReXhWUVVGVkxFZEJRVWNzU1VGQlNTeERRVUZET3p0QlFVVjJRaXhSUVVGSkxFbEJR
VWtzUjBGQlJ5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRPMEZCUTNoQ0xGTkJRVXNzU1VGQlNT
eERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVG
QlRTeEZRVUZGTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3
UVVGRE0wTXNWVUZCU1N4UFFVRlBMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF6dFZR
VU5xUWl4TFFVRkxMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFBRVUZQTEVOQlFV
TXNRMEZCUXpzN1FVRkZha01zVlVGQlNTeERRVUZETEV0QlFVc3NSVUZCUlR0QlFVTldMR2xDUVVG
VE8wOUJRMVk3TzBGQlJVUXNWVUZCU1N4cFFrRkJhVUlzUjBGQlJ5eG5Ra0ZCWjBJc1EwRkJReXhK
UVVGSkxFVkJRVVVzUTBGQlF5eEZRVUZGTEUxQlFVMHNRMEZCUXp0VlFVTnlSQ3hwUWtGQmFVSXNS
MEZCUnl4blFrRkJaMElzUTBGQlF5eEpRVUZKTEVWQlFVVXNRMEZCUXl4RlFVRkZMRTFCUVUwc1Ew
RkJRenRWUVVWeVJDeGpRVUZqTEVkQlFVY3NTMEZCU3l4RFFVRkRMR05CUVdNc1NVRkJTU3hwUWtG
QmFVSTdWVUZETVVRc1pVRkJaU3hIUVVGSExFdEJRVXNzUTBGQlF5eGxRVUZsTEVsQlFVa3NhVUpC
UVdsQ08xVkJRelZFTEdkQ1FVRm5RaXhIUVVGSExFdEJRVXNzUTBGQlF5eG5Ra0ZCWjBJc1NVRkJT
U3hwUWtGQmFVSXNTVUZCU1N4cFFrRkJhVUlzUTBGQlF6czdRVUZGZUVZc1ZVRkJTU3hMUVVGTExF
TkJRVU1zUzBGQlN5eEZRVUZGTzBGQlEyWXNhVUpCUVZNc1EwRkJReXhKUVVGSkxFVkJRVVVzUTBG
QlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPMDlCUXpGQ08wRkJRMFFzVlVGQlNTeExRVUZM
TEVOQlFVTXNTVUZCU1N4RlFVRkZPMEZCUTJRc1owSkJRVkVzUTBGQlF5eEpRVUZKTEVWQlFVVXNR
MEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRE8wOUJRM3BDT3p0QlFVVkVMRlZCUVVrc1dV
RkJXU3hKUVVGSkxHZENRVUZuUWl4RlFVRkZPMEZCUTNCRExHbENRVUZUTEVOQlFVTXNTVUZCU1N4
RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE96dEJRVVZ1UWl4WlFVRkpMRkZCUVZFc1EwRkJReXhK
UVVGSkxFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVTdPMEZCUlhKQ0xHTkJRVWtzVDBGQlR5eERR
VUZETEVsQlFVa3NTMEZCU3l4clFrRkJhMElzUlVGQlJUczdRVUZGZGtNc2JVSkJRVThzUTBGQlF5
eE5RVUZOTEVkQlFVY3NRVUZCUXl4WFFVRlhMRU5CUVVVc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBG
QlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU1z
UTBGQlF5eERRVUZETEVOQlFVTTdWMEZET1VRN1UwRkRSanRQUVVOR08wRkJRMFFzVlVGQlNTeFpR
VUZaTEVsQlFVa3NZMEZCWXl4RlFVRkZPMEZCUTJ4RExHbENRVUZUTEVOQlFVTXNRMEZCUXl4UFFV
RlBMRU5CUVVNc1QwRkJUeXhKUVVGSkxFOUJRVThzUTBGQlF5eFBRVUZQTEVOQlFVRXNRMEZCUlN4
SlFVRkpMRU5CUVVNc1EwRkJRenM3TzBGQlIzSkVMR2RDUVVGUkxFTkJRVU1zU1VGQlNTeEZRVUZG
TEVOQlFVTXNRMEZCUXl4RFFVRkRPMDlCUTI1Q08wRkJRMFFzVlVGQlNTeFpRVUZaTEVsQlFVa3Na
VUZCWlN4RlFVRkZPenRCUVVWdVF5eHBRa0ZCVXl4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGRExF
TkJRVU1zUTBGQlF6czdRVUZGYmtJc1owSkJRVkVzUTBGQlF5eERRVUZETEU5QlFVOHNRMEZCUXl4
UFFVRlBMRWxCUVVrc1QwRkJUeXhEUVVGRExFOUJRVThzUTBGQlFTeERRVUZGTEVsQlFVa3NRMEZC
UXl4RFFVRkRPMDlCUTNKRU8wdEJRMFk3TzBGQlJVUXNWMEZCVHl4UFFVRlBMRU5CUVVNN1IwRkRh
RUlzUTBGQlF6czdRVUZGUml4dFFrRkJhVUlzUTBGQlF5eFRRVUZUTEVOQlFVTXNZMEZCWXl4SFFV
TXhReXhwUWtGQmFVSXNRMEZCUXl4VFFVRlRMRU5CUVVNc1kwRkJZeXhIUVVNeFF5eHBRa0ZCYVVJ
c1EwRkJReXhUUVVGVExFTkJRVU1zY1VKQlFYRkNMRWRCUVVjc1ZVRkJVeXhMUVVGTExFVkJRVVU3
UVVGRGJFVXNVVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhMUVVGTExFTkJRVU1zVDBGQlR5eERR
VUZETEVOQlFVTTdRVUZETTBJc1VVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eExRVUZMTEVOQlFV
TXNUMEZCVHl4RFFVRkRMRU5CUVVNN096dEJRVWN6UWl4UlFVRkpMRTlCUVU4c1IwRkJSeXhMUVVG
TExFTkJRVU1zVDBGQlR5eEpRVUZKTEV0QlFVc3NRMEZCUXl4UFFVRlBPMUZCUTNoRExFOUJRVThz
UjBGQlJ5eExRVUZMTEVOQlFVTXNUMEZCVHl4SlFVRkpMRXRCUVVzc1EwRkJReXhQUVVGUE8xRkJR
M2hETEZsQlFWa3NSMEZCUnl4UFFVRlBPMUZCUTNSQ0xGZEJRVmNzUjBGQlJ5eFBRVUZQTEVOQlFV
TTdPMEZCUlRGQ0xGRkJRVWtzVDBGQlR5eEpRVUZKTEU5QlFVOHNRMEZCUXl4UFFVRlBMRVZCUVVV
N1FVRkRPVUlzYTBKQlFWa3NSMEZCUnl4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1z
UTBGQlF5eERRVUZETEU5QlFVOHNRMEZCUXpzN08wRkJSM1pETEdGQlFVOHNWMEZCVnl4RFFVRkRM
RTlCUVU4c1JVRkJSVHRCUVVNeFFpeHRRa0ZCVnl4SFFVRkhMRmRCUVZjc1EwRkJReXhKUVVGSkxF
TkJRVU1zVjBGQlZ5eERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhEUVVG
RExFTkJRVU1zVDBGQlR5eERRVUZETzA5QlEzSkZPMHRCUTBZN08wRkJSVVFzVVVGQlNTeExRVUZM
TEVkQlFVYzdRVUZEVml4VlFVRkpMRVZCUVVVc1MwRkJTeXhEUVVGRExGTkJRVk1zUTBGQlF5eEpR
VUZKTzBGQlF6RkNMRmRCUVVzc1JVRkJSU3hMUVVGTExFTkJRVU1zVlVGQlZTeERRVUZETEV0QlFV
czdPenM3UVVGSk4wSXNiMEpCUVdNc1JVRkJSU3huUWtGQlowSXNRMEZCUXl4UFFVRlBMRU5CUVVN
c1NVRkJTU3hEUVVGRE8wRkJRemxETEhGQ1FVRmxMRVZCUVVVc1owSkJRV2RDTEVOQlFVTXNRMEZC
UXl4WlFVRlpMRWxCUVVrc1QwRkJUeXhEUVVGQkxFTkJRVVVzU1VGQlNTeERRVUZETzB0QlEyeEZM
RU5CUVVNN08wRkJSVVlzVVVGQlNTeExRVUZMTEVOQlFVTXNVMEZCVXl4RFFVRkRMRXRCUVVzc1JV
RkJSVHRCUVVONlFpeGxRVUZUTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1JVRkJSU3hKUVVG
SkxFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTTdTMEZEY2tNN08wRkJSVVFzVVVGQlNTeFBRVUZQ
TEVWQlFVVTdRVUZEV0N4VlFVRkpMRmxCUVZrc1IwRkJSeXhMUVVGTExFTkJRVU1zV1VGQldTeERR
VUZET3p0QlFVVjBReXhWUVVGSkxGbEJRVmtzUTBGQlF5eEpRVUZKTEVWQlFVVTdRVUZEY2tJc1ow
SkJRVkVzUTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RlFVRkZMRWxCUVVrc1JVRkJSU3hKUVVG
SkxFTkJRVU1zUTBGQlF6dFBRVU53UXpzN1FVRkZSQ3hWUVVGSkxGbEJRVmtzUTBGQlF5eExRVUZM
TEVWQlFVVTdRVUZEZEVJc2FVSkJRVk1zUTBGQlF5eFpRVUZaTEVOQlFVTXNTVUZCU1N4RlFVRkZM
RWxCUVVrc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6dFBRVU14UXp0QlFVTkVMRlZCUVVrc1Mw
RkJTeXhEUVVGRExGVkJRVlVzUTBGQlF5eEpRVUZKTEVWQlFVVTdRVUZEZWtJc1owSkJRVkVzUTBG
QlF5eFhRVUZYTEVOQlFVTXNTVUZCU1N4RlFVRkZMRWxCUVVrc1JVRkJSU3hKUVVGSkxFTkJRVU1z
UTBGQlF6dFBRVU40UXpzN08wRkJSMFFzVlVGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4UFFVRlBM
RU5CUVVNc1owSkJRV2RDTEVsQlF6TkNMR2RDUVVGblFpeERRVUZETEU5QlFVOHNRMEZCUXl4SlFV
RkpMRU5CUVVNc1NVRkRPVUlzWjBKQlFXZENMRU5CUVVNc1dVRkJXU3hEUVVGRExFbEJRVWtzUTBG
QlF5eEZRVUZGTzBGQlF6RkRMR2RDUVVGUkxFTkJRVU1zVDBGQlR5eERRVUZETEVsQlFVa3NRMEZC
UXl4RFFVRkRPMEZCUTNaQ0xHbENRVUZUTEVOQlFVTXNXVUZCV1N4RFFVRkRMRWxCUVVrc1EwRkJR
eXhEUVVGRE8wOUJRemxDTzB0QlEwWXNUVUZCVFN4SlFVRkpMRXRCUVVzc1EwRkJReXhWUVVGVkxF
TkJRVU1zU1VGQlNTeEZRVUZGTzBGQlEyaERMR05CUVZFc1EwRkJReXhQUVVGUExFTkJRVU1zU1VG
QlNTeEZRVUZGTEVsQlFVa3NSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJRenRMUVVOd1F6czdRVUZG
UkN4WFFVRlBMRXRCUVVzc1EwRkJRenRIUVVOa0xFTkJRVU03TzBGQlJVWXNiVUpCUVdsQ0xFTkJR
VU1zVTBGQlV5eERRVUZETEZOQlFWTXNSMEZEY2tNc2FVSkJRV2xDTEVOQlFVTXNVMEZCVXl4RFFV
RkRMR2xDUVVGcFFpeEhRVUZITEZWQlFWTXNVVUZCVVN4RlFVRkZPMEZCUTJwRkxGZEJRVThzVVVG
QlVTeERRVUZETEV0QlFVc3NRMEZCUXp0SFFVTjJRaXhEUVVGRE96dEJRVVZHTEcxQ1FVRnBRaXhE
UVVGRExGTkJRVk1zUTBGQlF5eG5Ra0ZCWjBJc1IwRkRlRU1zYVVKQlFXbENMRU5CUVVNc1UwRkJV
eXhEUVVGRExHZENRVUZuUWl4SFFVRkhMRlZCUVZNc1NVRkJTU3hGUVVGRk96dEJRVVZvUlN4UlFV
RkpMRXRCUVVzc1IwRkJSeXhKUVVGSkxFTkJRVU1zUzBGQlN5eEpRVUZKTEVWQlFVVXNRMEZCUXp0
QlFVTTNRaXhYUVVGUE8wRkJRMHdzYzBKQlFXZENMRVZCUVVVc1NVRkJTVHRCUVVOMFFpeFZRVUZK
TEVWQlFVVXNTMEZCU3l4RFFVRkRMRWxCUVVrN1FVRkRhRUlzVjBGQlN5eEZRVUZGTEV0QlFVc3NR
MEZCUXl4TFFVRkxPMHRCUTI1Q0xFTkJRVU03UjBGRFNDeERRVUZET3p0QlFVZEdMRmRCUVZNc1ow
SkJRV2RDTEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNc1JVRkJSU3hOUVVGTkxFVkJRVVU3UVVG
RGVrTXNVVUZCU1N4RFFVRkRMRXRCUVVzc1UwRkJVeXhGUVVGRk8wRkJRMjVDTEU5QlFVTXNSMEZC
Unl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRE8wdEJRMnBDT3pzN08wRkJTVVFzVVVGQlNTeEpR
VUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03VVVGRGJF
SXNUMEZCVHl4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVO
QlFVTTdRVUZETVVJc1VVRkJTU3hEUVVGRExFbEJRVWtzUlVGQlJUdEJRVU5VTEdGQlFVOHNUVUZC
VFN4RFFVRkRPMHRCUTJZN08wRkJSVVFzVVVGQlNTeEpRVUZKTEVOQlFVTXNTVUZCU1N4TFFVRkxM
R3RDUVVGclFpeEZRVUZGTzBGQlEzQkRMR0ZCUVU4c1EwRkJReXhQUVVGUExFbEJRVWtzUTBGQlF5
eE5RVUZOTEVkQlFVa3NXVUZCV1N4SFFVRkxMR2RDUVVGblFpeERRVUZETEVOQlFVVXNTVUZCU1N4
RFFVRkRMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF6dExRVU4yUmp0SFFVTkdPMEZC
UTBRc1YwRkJVeXhuUWtGQlowSXNRMEZCUXl4SlFVRkpMRVZCUVVVc1EwRkJReXhGUVVGRkxFMUJR
VTBzUlVGQlJUdEJRVU42UXl4UlFVRkpMRU5CUVVNc1MwRkJTeXhUUVVGVExFVkJRVVU3UVVGRGJr
SXNUMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRE8wdEJRMUk3TzBGQlJVUXNVVUZCU1N4
SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZE
YkVJc1QwRkJUeXhIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRM
RU5CUVVNN1FVRkRNVUlzVVVGQlNTeERRVUZETEVsQlFVa3NSVUZCUlR0QlFVTlVMR0ZCUVU4c1RV
RkJUU3hEUVVGRE8wdEJRMlk3TzBGQlJVUXNVVUZCU1N4SlFVRkpMRU5CUVVNc1NVRkJTU3hMUVVG
TExHdENRVUZyUWl4RlFVRkZPMEZCUTNCRExHRkJRVThzUTBGQlF5eFBRVUZQTEVsQlFVa3NRMEZC
UXl4TlFVRk5MRWRCUVVrc1dVRkJXU3hIUVVGTExHZENRVUZuUWl4RFFVRkRMRU5CUVVVc1NVRkJT
U3hEUVVGRExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXp0TFFVTjJSanRIUVVOR096
czdPenM3T3pzN1FVRlRSQ3hYUVVGVExGTkJRVk1zUTBGQlF5eEpRVUZKTEVWQlFVVXNRMEZCUXl4
RlFVRkZMRkZCUVZFc1JVRkJSVHRCUVVOd1F5eFJRVUZKTEU5QlFVOHNSMEZCUnl4SlFVRkpMRU5C
UVVNc1EwRkJReXhKUVVGSkxFbEJRVWtzUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhM
RU5CUVVNc1EwRkJReXhEUVVGRE8wRkJRekZETEZGQlFVa3NRMEZCUXl4UFFVRlBMRWxCUVVrc1Qw
RkJUeXhEUVVGRExFbEJRVWtzUzBGQlN5eHJRa0ZCYTBJc1NVRkJTeXhEUVVGRExGRkJRVkVzU1VG
QlNTeFBRVUZQTEVOQlFVTXNZVUZCWVN4QlFVRkRMRVZCUVVVN1FVRkRNMFlzWVVGQlR6dExRVU5T
T3p0QlFVVkVMRkZCUVVrc1VVRkJVU3hIUVVGSExFOUJRVThzUTBGQlF5eExRVUZMTEVOQlFVTTdR
VUZETjBJc1YwRkJUeXhEUVVGRExFdEJRVXNzUjBGQlJ5eFBRVUZQTEVOQlFVTXNTMEZCU3l4RFFV
RkRMRTlCUVU4c1EwRkJReXhSUVVGUkxFZEJRVWtzVFVGQlRTeEhRVUZMTEdWQlFXVXNRVUZCUXl4
RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRE8wRkJRMjVHTEZkQlFVOHNRMEZCUXl4aFFVRmhMRWRC
UVVjc1QwRkJUeXhEUVVGRExFdEJRVXNzUzBGQlN5eFJRVUZSTEVOQlFVTTdSMEZEY0VRN096czdP
enM3T3p0QlFWTkVMRmRCUVZNc1VVRkJVU3hEUVVGRExFbEJRVWtzUlVGQlJTeERRVUZETEVWQlFV
VXNVVUZCVVN4RlFVRkZPMEZCUTI1RExGRkJRVWtzVDBGQlR5eEhRVUZITEVsQlFVa3NRMEZCUXl4
RFFVRkRMRWxCUVVrc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZC
UXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU40UkN4UlFVRkpM
RU5CUVVNc1QwRkJUeXhKUVVGSkxFOUJRVThzUTBGQlF5eEpRVUZKTEV0QlFVc3NhMEpCUVd0Q0xF
bEJRVXNzUTBGQlF5eFJRVUZSTEVsQlFVa3NUMEZCVHl4RFFVRkRMRmxCUVZrc1FVRkJReXhGUVVG
Rk8wRkJRekZHTEdGQlFVODdTMEZEVWpzN08wRkJSMFFzVVVGQlNTeFJRVUZSTEVkQlFVY3NUMEZC
VHl4RFFVRkRMRXRCUVVzc1EwRkJRenRCUVVNM1FpeFhRVUZQTEVOQlFVTXNTMEZCU3l4SFFVRkhM
RTlCUVU4c1EwRkJReXhMUVVGTExFTkJRVU1zVDBGQlR5eERRVUZETEZGQlFWRXNSMEZCU1N4TlFV
Rk5MRWRCUVVzc1UwRkJVeXhCUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTTdRVUZETjBV
c1YwRkJUeXhEUVVGRExGbEJRVmtzUjBGQlJ5eFBRVUZQTEVOQlFVTXNTMEZCU3l4TFFVRkxMRkZC
UVZFc1EwRkJRenRCUVVOc1JDeFhRVUZQTEU5QlFVOHNRMEZCUXl4WlFVRlpMRU5CUVVNN1IwRkRO
MEk3TzIxQ1FVVmpMR2xDUVVGcFFpSXNJbVpwYkdVaU9pSjNhR2wwWlhOd1lXTmxMV052Ym5SeWIy
d3Vhbk1pTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKcGJYQnZjblFnVm1semFYUnZjaUJtY205
dElDY3VMM1pwYzJsMGIzSW5PMXh1WEc1bWRXNWpkR2x2YmlCWGFHbDBaWE53WVdObFEyOXVkSEp2
YkNodmNIUnBiMjV6SUQwZ2UzMHBJSHRjYmlBZ2RHaHBjeTV2Y0hScGIyNXpJRDBnYjNCMGFXOXVj
enRjYm4xY2JsZG9hWFJsYzNCaFkyVkRiMjUwY205c0xuQnliM1J2ZEhsd1pTQTlJRzVsZHlCV2FY
TnBkRzl5S0NrN1hHNWNibGRvYVhSbGMzQmhZMlZEYjI1MGNtOXNMbkJ5YjNSdmRIbHdaUzVRY205
bmNtRnRJRDBnWm5WdVkzUnBiMjRvY0hKdlozSmhiU2tnZTF4dUlDQmpiMjV6ZENCa2IxTjBZVzVr
WVd4dmJtVWdQU0FoZEdocGN5NXZjSFJwYjI1ekxtbG5ibTl5WlZOMFlXNWtZV3h2Ym1VN1hHNWNi
aUFnYkdWMElHbHpVbTl2ZENBOUlDRjBhR2x6TG1selVtOXZkRk5sWlc0N1hHNGdJSFJvYVhNdWFY
TlNiMjkwVTJWbGJpQTlJSFJ5ZFdVN1hHNWNiaUFnYkdWMElHSnZaSGtnUFNCd2NtOW5jbUZ0TG1K
dlpIazdYRzRnSUdadmNpQW9iR1YwSUdrZ1BTQXdMQ0JzSUQwZ1ltOWtlUzVzWlc1bmRHZzdJR2tn
UENCc095QnBLeXNwSUh0Y2JpQWdJQ0JzWlhRZ1kzVnljbVZ1ZENBOUlHSnZaSGxiYVYwc1hHNGdJ
Q0FnSUNBZ0lITjBjbWx3SUQwZ2RHaHBjeTVoWTJObGNIUW9ZM1Z5Y21WdWRDazdYRzVjYmlBZ0lD
QnBaaUFvSVhOMGNtbHdLU0I3WEc0Z0lDQWdJQ0JqYjI1MGFXNTFaVHRjYmlBZ0lDQjlYRzVjYmlB
Z0lDQnNaWFFnWDJselVISmxkbGRvYVhSbGMzQmhZMlVnUFNCcGMxQnlaWFpYYUdsMFpYTndZV05s
S0dKdlpIa3NJR2tzSUdselVtOXZkQ2tzWEc0Z0lDQWdJQ0FnSUY5cGMwNWxlSFJYYUdsMFpYTndZ
V05sSUQwZ2FYTk9aWGgwVjJocGRHVnpjR0ZqWlNoaWIyUjVMQ0JwTENCcGMxSnZiM1FwTEZ4dVhH
NGdJQ0FnSUNBZ0lHOXdaVzVUZEdGdVpHRnNiMjVsSUQwZ2MzUnlhWEF1YjNCbGJsTjBZVzVrWVd4
dmJtVWdKaVlnWDJselVISmxkbGRvYVhSbGMzQmhZMlVzWEc0Z0lDQWdJQ0FnSUdOc2IzTmxVM1Jo
Ym1SaGJHOXVaU0E5SUhOMGNtbHdMbU5zYjNObFUzUmhibVJoYkc5dVpTQW1KaUJmYVhOT1pYaDBW
MmhwZEdWemNHRmpaU3hjYmlBZ0lDQWdJQ0FnYVc1c2FXNWxVM1JoYm1SaGJHOXVaU0E5SUhOMGNt
bHdMbWx1YkdsdVpWTjBZVzVrWVd4dmJtVWdKaVlnWDJselVISmxkbGRvYVhSbGMzQmhZMlVnSmlZ
Z1gybHpUbVY0ZEZkb2FYUmxjM0JoWTJVN1hHNWNiaUFnSUNCcFppQW9jM1J5YVhBdVkyeHZjMlVw
SUh0Y2JpQWdJQ0FnSUc5dGFYUlNhV2RvZENoaWIyUjVMQ0JwTENCMGNuVmxLVHRjYmlBZ0lDQjlY
RzRnSUNBZ2FXWWdLSE4wY21sd0xtOXdaVzRwSUh0Y2JpQWdJQ0FnSUc5dGFYUk1aV1owS0dKdlpI
a3NJR2tzSUhSeWRXVXBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHbG1JQ2hrYjFOMFlXNWtZV3h2Ym1V
Z0ppWWdhVzVzYVc1bFUzUmhibVJoYkc5dVpTa2dlMXh1SUNBZ0lDQWdiMjFwZEZKcFoyaDBLR0p2
Wkhrc0lHa3BPMXh1WEc0Z0lDQWdJQ0JwWmlBb2IyMXBkRXhsWm5Rb1ltOWtlU3dnYVNrcElIdGNi
aUFnSUNBZ0lDQWdMeThnU1dZZ2QyVWdZWEpsSUc5dUlHRWdjM1JoYm1SaGJHOXVaU0J1YjJSbExD
QnpZWFpsSUhSb1pTQnBibVJsYm5RZ2FXNW1ieUJtYjNJZ2NHRnlkR2xoYkhOY2JpQWdJQ0FnSUNB
Z2FXWWdLR04xY25KbGJuUXVkSGx3WlNBOVBUMGdKMUJoY25ScFlXeFRkR0YwWlcxbGJuUW5LU0I3
WEc0Z0lDQWdJQ0FnSUNBZ0x5OGdVSFZzYkNCdmRYUWdkR2hsSUhkb2FYUmxjM0JoWTJVZ1puSnZi
U0IwYUdVZ1ptbHVZV3dnYkdsdVpWeHVJQ0FnSUNBZ0lDQWdJR04xY25KbGJuUXVhVzVrWlc1MElE
MGdLQzhvV3lCY1hIUmRLeVFwTHlrdVpYaGxZeWhpYjJSNVcya2dMU0F4WFM1dmNtbG5hVzVoYkNs
Yk1WMDdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUNBZ2FXWWdLR1J2
VTNSaGJtUmhiRzl1WlNBbUppQnZjR1Z1VTNSaGJtUmhiRzl1WlNrZ2UxeHVJQ0FnSUNBZ2IyMXBk
RkpwWjJoMEtDaGpkWEp5Wlc1MExuQnliMmR5WVcwZ2ZId2dZM1Z5Y21WdWRDNXBiblpsY25ObEtT
NWliMlI1S1R0Y2JseHVJQ0FnSUNBZ0x5OGdVM1J5YVhBZ2IzVjBJSFJvWlNCd2NtVjJhVzkxY3lC
amIyNTBaVzUwSUc1dlpHVWdhV1lnYVhRbmN5QjNhR2wwWlhOd1lXTmxJRzl1YkhsY2JpQWdJQ0Fn
SUc5dGFYUk1aV1owS0dKdlpIa3NJR2twTzF4dUlDQWdJSDFjYmlBZ0lDQnBaaUFvWkc5VGRHRnVa
R0ZzYjI1bElDWW1JR05zYjNObFUzUmhibVJoYkc5dVpTa2dlMXh1SUNBZ0lDQWdMeThnUVd4M1lY
bHpJSE4wY21sd0lIUm9aU0J1WlhoMElHNXZaR1ZjYmlBZ0lDQWdJRzl0YVhSU2FXZG9kQ2hpYjJS
NUxDQnBLVHRjYmx4dUlDQWdJQ0FnYjIxcGRFeGxablFvS0dOMWNuSmxiblF1YVc1MlpYSnpaU0I4
ZkNCamRYSnlaVzUwTG5CeWIyZHlZVzBwTG1KdlpIa3BPMXh1SUNBZ0lIMWNiaUFnZlZ4dVhHNGdJ
SEpsZEhWeWJpQndjbTluY21GdE8xeHVmVHRjYmx4dVYyaHBkR1Z6Y0dGalpVTnZiblJ5YjJ3dWNI
SnZkRzkwZVhCbExrSnNiMk5yVTNSaGRHVnRaVzUwSUQxY2JsZG9hWFJsYzNCaFkyVkRiMjUwY205
c0xuQnliM1J2ZEhsd1pTNUVaV052Y21GMGIzSkNiRzlqYXlBOVhHNVhhR2wwWlhOd1lXTmxRMjl1
ZEhKdmJDNXdjbTkwYjNSNWNHVXVVR0Z5ZEdsaGJFSnNiMk5yVTNSaGRHVnRaVzUwSUQwZ1puVnVZ
M1JwYjI0b1lteHZZMnNwSUh0Y2JpQWdkR2hwY3k1aFkyTmxjSFFvWW14dlkyc3VjSEp2WjNKaGJT
azdYRzRnSUhSb2FYTXVZV05qWlhCMEtHSnNiMk5yTG1sdWRtVnljMlVwTzF4dVhHNGdJQzh2SUVa
cGJtUWdkR2hsSUdsdWRtVnljMlVnY0hKdlozSmhiU0IwYUdGMElHbHpJR2x1ZG05c1pXUWdkMmww
YUNCM2FHbDBaWE53WVdObElITjBjbWx3Y0dsdVp5NWNiaUFnYkdWMElIQnliMmR5WVcwZ1BTQmli
RzlqYXk1d2NtOW5jbUZ0SUh4OElHSnNiMk5yTG1sdWRtVnljMlVzWEc0Z0lDQWdJQ0JwYm5abGNu
TmxJRDBnWW14dlkyc3VjSEp2WjNKaGJTQW1KaUJpYkc5amF5NXBiblpsY25ObExGeHVJQ0FnSUNB
Z1ptbHljM1JKYm5abGNuTmxJRDBnYVc1MlpYSnpaU3hjYmlBZ0lDQWdJR3hoYzNSSmJuWmxjbk5s
SUQwZ2FXNTJaWEp6WlR0Y2JseHVJQ0JwWmlBb2FXNTJaWEp6WlNBbUppQnBiblpsY25ObExtTm9Z
V2x1WldRcElIdGNiaUFnSUNCbWFYSnpkRWx1ZG1WeWMyVWdQU0JwYm5abGNuTmxMbUp2WkhsYk1G
MHVjSEp2WjNKaGJUdGNibHh1SUNBZ0lDOHZJRmRoYkdzZ2RHaGxJR2x1ZG1WeWMyVWdZMmhoYVc0
Z2RHOGdabWx1WkNCMGFHVWdiR0Z6ZENCcGJuWmxjbk5sSUhSb1lYUWdhWE1nWVdOMGRXRnNiSGtn
YVc0Z2RHaGxJR05vWVdsdUxseHVJQ0FnSUhkb2FXeGxJQ2hzWVhOMFNXNTJaWEp6WlM1amFHRnBi
bVZrS1NCN1hHNGdJQ0FnSUNCc1lYTjBTVzUyWlhKelpTQTlJR3hoYzNSSmJuWmxjbk5sTG1KdlpI
bGJiR0Z6ZEVsdWRtVnljMlV1WW05a2VTNXNaVzVuZEdnZ0xTQXhYUzV3Y205bmNtRnRPMXh1SUNB
Z0lIMWNiaUFnZlZ4dVhHNGdJR3hsZENCemRISnBjQ0E5SUh0Y2JpQWdJQ0J2Y0dWdU9pQmliRzlq
YXk1dmNHVnVVM1J5YVhBdWIzQmxiaXhjYmlBZ0lDQmpiRzl6WlRvZ1lteHZZMnN1WTJ4dmMyVlRk
SEpwY0M1amJHOXpaU3hjYmx4dUlDQWdJQzh2SUVSbGRHVnliV2x1WlNCMGFHVWdjM1JoYm1SaGJH
OXVaU0JqWVc1a2FXRmplUzRnUW1GemFXTmhiR3g1SUdac1lXY2diM1Z5SUdOdmJuUmxiblFnWVhN
Z1ltVnBibWNnY0c5emMybGliSGtnYzNSaGJtUmhiRzl1WlZ4dUlDQWdJQzh2SUhOdklHOTFjaUJ3
WVhKbGJuUWdZMkZ1SUdSbGRHVnliV2x1WlNCcFppQjNaU0JoWTNSMVlXeHNlU0JoY21VZ2MzUmhi
bVJoYkc5dVpWeHVJQ0FnSUc5d1pXNVRkR0Z1WkdGc2IyNWxPaUJwYzA1bGVIUlhhR2wwWlhOd1lX
TmxLSEJ5YjJkeVlXMHVZbTlrZVNrc1hHNGdJQ0FnWTJ4dmMyVlRkR0Z1WkdGc2IyNWxPaUJwYzFC
eVpYWlhhR2wwWlhOd1lXTmxLQ2htYVhKemRFbHVkbVZ5YzJVZ2ZId2djSEp2WjNKaGJTa3VZbTlr
ZVNsY2JpQWdmVHRjYmx4dUlDQnBaaUFvWW14dlkyc3ViM0JsYmxOMGNtbHdMbU5zYjNObEtTQjdY
RzRnSUNBZ2IyMXBkRkpwWjJoMEtIQnliMmR5WVcwdVltOWtlU3dnYm5Wc2JDd2dkSEoxWlNrN1hH
NGdJSDFjYmx4dUlDQnBaaUFvYVc1MlpYSnpaU2tnZTF4dUlDQWdJR3hsZENCcGJuWmxjbk5sVTNS
eWFYQWdQU0JpYkc5amF5NXBiblpsY25ObFUzUnlhWEE3WEc1Y2JpQWdJQ0JwWmlBb2FXNTJaWEp6
WlZOMGNtbHdMbTl3Wlc0cElIdGNiaUFnSUNBZ0lHOXRhWFJNWldaMEtIQnliMmR5WVcwdVltOWtl
U3dnYm5Wc2JDd2dkSEoxWlNrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tHbHVkbVZ5YzJWVGRI
SnBjQzVqYkc5elpTa2dlMXh1SUNBZ0lDQWdiMjFwZEZKcFoyaDBLR1pwY25OMFNXNTJaWEp6WlM1
aWIyUjVMQ0J1ZFd4c0xDQjBjblZsS1R0Y2JpQWdJQ0I5WEc0Z0lDQWdhV1lnS0dKc2IyTnJMbU5z
YjNObFUzUnlhWEF1YjNCbGJpa2dlMXh1SUNBZ0lDQWdiMjFwZEV4bFpuUW9iR0Z6ZEVsdWRtVnlj
MlV1WW05a2VTd2diblZzYkN3Z2RISjFaU2s3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdMeThnUm1sdVpD
QnpkR0Z1WkdGc2IyNWxJR1ZzYzJVZ2MzUmhkRzFsYm5SelhHNGdJQ0FnYVdZZ0tDRjBhR2x6TG05
d2RHbHZibk11YVdkdWIzSmxVM1JoYm1SaGJHOXVaVnh1SUNBZ0lDQWdJQ0FtSmlCcGMxQnlaWFpY
YUdsMFpYTndZV05sS0hCeWIyZHlZVzB1WW05a2VTbGNiaUFnSUNBZ0lDQWdKaVlnYVhOT1pYaDBW
MmhwZEdWemNHRmpaU2htYVhKemRFbHVkbVZ5YzJVdVltOWtlU2twSUh0Y2JpQWdJQ0FnSUc5dGFY
Uk1aV1owS0hCeWIyZHlZVzB1WW05a2VTazdYRzRnSUNBZ0lDQnZiV2wwVW1sbmFIUW9abWx5YzNS
SmJuWmxjbk5sTG1KdlpIa3BPMXh1SUNBZ0lIMWNiaUFnZlNCbGJITmxJR2xtSUNoaWJHOWpheTVq
Ykc5elpWTjBjbWx3TG05d1pXNHBJSHRjYmlBZ0lDQnZiV2wwVEdWbWRDaHdjbTluY21GdExtSnZa
SGtzSUc1MWJHd3NJSFJ5ZFdVcE8xeHVJQ0I5WEc1Y2JpQWdjbVYwZFhKdUlITjBjbWx3TzF4dWZU
dGNibHh1VjJocGRHVnpjR0ZqWlVOdmJuUnliMnd1Y0hKdmRHOTBlWEJsTGtSbFkyOXlZWFJ2Y2lB
OVhHNVhhR2wwWlhOd1lXTmxRMjl1ZEhKdmJDNXdjbTkwYjNSNWNHVXVUWFZ6ZEdGamFHVlRkR0Yw
WlcxbGJuUWdQU0JtZFc1amRHbHZiaWh0ZFhOMFlXTm9aU2tnZTF4dUlDQnlaWFIxY200Z2JYVnpk
R0ZqYUdVdWMzUnlhWEE3WEc1OU8xeHVYRzVYYUdsMFpYTndZV05sUTI5dWRISnZiQzV3Y205MGIz
UjVjR1V1VUdGeWRHbGhiRk4wWVhSbGJXVnVkQ0E5WEc0Z0lDQWdWMmhwZEdWemNHRmpaVU52Ym5S
eWIyd3VjSEp2ZEc5MGVYQmxMa052YlcxbGJuUlRkR0YwWlcxbGJuUWdQU0JtZFc1amRHbHZiaWh1
YjJSbEtTQjdYRzRnSUM4cUlHbHpkR0Z1WW5Wc0lHbG5ibTl5WlNCdVpYaDBJQ292WEc0Z0lHeGxk
Q0J6ZEhKcGNDQTlJRzV2WkdVdWMzUnlhWEFnZkh3Z2UzMDdYRzRnSUhKbGRIVnliaUI3WEc0Z0lD
QWdhVzVzYVc1bFUzUmhibVJoYkc5dVpUb2dkSEoxWlN4Y2JpQWdJQ0J2Y0dWdU9pQnpkSEpwY0M1
dmNHVnVMRnh1SUNBZ0lHTnNiM05sT2lCemRISnBjQzVqYkc5elpWeHVJQ0I5TzF4dWZUdGNibHh1
WEc1bWRXNWpkR2x2YmlCcGMxQnlaWFpYYUdsMFpYTndZV05sS0dKdlpIa3NJR2tzSUdselVtOXZk
Q2tnZTF4dUlDQnBaaUFvYVNBOVBUMGdkVzVrWldacGJtVmtLU0I3WEc0Z0lDQWdhU0E5SUdKdlpI
a3ViR1Z1WjNSb08xeHVJQ0I5WEc1Y2JpQWdMeThnVG05a1pYTWdkR2hoZENCbGJtUWdkMmwwYUNC
dVpYZHNhVzVsY3lCaGNtVWdZMjl1YzJsa1pYSmxaQ0IzYUdsMFpYTndZV05sSUNoaWRYUWdZWEps
SUhOd1pXTnBZV3hjYmlBZ0x5OGdZMkZ6WldRZ1ptOXlJSE4wY21sd0lHOXdaWEpoZEdsdmJuTXBY
RzRnSUd4bGRDQndjbVYySUQwZ1ltOWtlVnRwSUMwZ01WMHNYRzRnSUNBZ0lDQnphV0pzYVc1bklE
MGdZbTlrZVZ0cElDMGdNbDA3WEc0Z0lHbG1JQ2doY0hKbGRpa2dlMXh1SUNBZ0lISmxkSFZ5YmlC
cGMxSnZiM1E3WEc0Z0lIMWNibHh1SUNCcFppQW9jSEpsZGk1MGVYQmxJRDA5UFNBblEyOXVkR1Z1
ZEZOMFlYUmxiV1Z1ZENjcElIdGNiaUFnSUNCeVpYUjFjbTRnS0hOcFlteHBibWNnZkh3Z0lXbHpV
bTl2ZENBL0lDZ3ZYRnh5UDF4Y2JseGNjeW8vSkM4cElEb2dLQzhvWG54Y1hISS9YRnh1S1Z4Y2N5
by9KQzhwS1M1MFpYTjBLSEJ5WlhZdWIzSnBaMmx1WVd3cE8xeHVJQ0I5WEc1OVhHNW1kVzVqZEds
dmJpQnBjMDVsZUhSWGFHbDBaWE53WVdObEtHSnZaSGtzSUdrc0lHbHpVbTl2ZENrZ2UxeHVJQ0Jw
WmlBb2FTQTlQVDBnZFc1a1pXWnBibVZrS1NCN1hHNGdJQ0FnYVNBOUlDMHhPMXh1SUNCOVhHNWNi
aUFnYkdWMElHNWxlSFFnUFNCaWIyUjVXMmtnS3lBeFhTeGNiaUFnSUNBZ0lITnBZbXhwYm1jZ1BT
QmliMlI1VzJrZ0t5QXlYVHRjYmlBZ2FXWWdLQ0Z1WlhoMEtTQjdYRzRnSUNBZ2NtVjBkWEp1SUds
elVtOXZkRHRjYmlBZ2ZWeHVYRzRnSUdsbUlDaHVaWGgwTG5SNWNHVWdQVDA5SUNkRGIyNTBaVzUw
VTNSaGRHVnRaVzUwSnlrZ2UxeHVJQ0FnSUhKbGRIVnliaUFvYzJsaWJHbHVaeUI4ZkNBaGFYTlNi
MjkwSUQ4Z0tDOWVYRnh6S2o5Y1hISS9YRnh1THlrZ09pQW9MMTVjWEhNcVB5aGNYSEkvWEZ4dWZD
UXBMeWtwTG5SbGMzUW9ibVY0ZEM1dmNtbG5hVzVoYkNrN1hHNGdJSDFjYm4xY2JseHVMeThnVFdG
eWEzTWdkR2hsSUc1dlpHVWdkRzhnZEdobElISnBaMmgwSUc5bUlIUm9aU0J3YjNOcGRHbHZiaUJo
Y3lCdmJXbDBkR1ZrTGx4dUx5OGdTUzVsTGlCN2UyWnZiMzE5SnlBbklIZHBiR3dnYldGeWF5QjBh
R1VnSnlBbklHNXZaR1VnWVhNZ2IyMXBkSFJsWkM1Y2JpOHZYRzR2THlCSlppQnBJR2x6SUhWdVpH
Vm1hVzVsWkN3Z2RHaGxiaUIwYUdVZ1ptbHljM1FnWTJocGJHUWdkMmxzYkNCaVpTQnRZWEpyWldR
Z1lYTWdjM1ZqYUM1Y2JpOHZYRzR2THlCSlppQnRkV3hwZEhCc1pTQnBjeUIwY25WMGFIa2dkR2hs
YmlCaGJHd2dkMmhwZEdWemNHRmpaU0IzYVd4c0lHSmxJSE4wY21sd2NHVmtJRzkxZENCMWJuUnBi
Q0J1YjI0dGQyaHBkR1Z6Y0dGalpWeHVMeThnWTI5dWRHVnVkQ0JwY3lCdFpYUXVYRzVtZFc1amRH
bHZiaUJ2YldsMFVtbG5hSFFvWW05a2VTd2dhU3dnYlhWc2RHbHdiR1VwSUh0Y2JpQWdiR1YwSUdO
MWNuSmxiblFnUFNCaWIyUjVXMmtnUFQwZ2JuVnNiQ0EvSURBZ09pQnBJQ3NnTVYwN1hHNGdJR2xt
SUNnaFkzVnljbVZ1ZENCOGZDQmpkWEp5Wlc1MExuUjVjR1VnSVQwOUlDZERiMjUwWlc1MFUzUmhk
R1Z0Wlc1MEp5QjhmQ0FvSVcxMWJIUnBjR3hsSUNZbUlHTjFjbkpsYm5RdWNtbG5hSFJUZEhKcGNI
QmxaQ2twSUh0Y2JpQWdJQ0J5WlhSMWNtNDdYRzRnSUgxY2JseHVJQ0JzWlhRZ2IzSnBaMmx1WVd3
Z1BTQmpkWEp5Wlc1MExuWmhiSFZsTzF4dUlDQmpkWEp5Wlc1MExuWmhiSFZsSUQwZ1kzVnljbVZ1
ZEM1MllXeDFaUzV5WlhCc1lXTmxLRzExYkhScGNHeGxJRDhnS0M5ZVhGeHpLeThwSURvZ0tDOWVX
eUJjWEhSZEtseGNjajljWEc0L0x5a3NJQ2NuS1R0Y2JpQWdZM1Z5Y21WdWRDNXlhV2RvZEZOMGNt
bHdjR1ZrSUQwZ1kzVnljbVZ1ZEM1MllXeDFaU0FoUFQwZ2IzSnBaMmx1WVd3N1hHNTlYRzVjYmk4
dklFMWhjbXR6SUhSb1pTQnViMlJsSUhSdklIUm9aU0JzWldaMElHOW1JSFJvWlNCd2IzTnBkR2x2
YmlCaGN5QnZiV2wwZEdWa0xseHVMeThnU1M1bExpQW5JQ2Q3ZTJadmIzMTlJSGRwYkd3Z2JXRnlh
eUIwYUdVZ0p5QW5JRzV2WkdVZ1lYTWdiMjFwZEhSbFpDNWNiaTh2WEc0dkx5QkpaaUJwSUdseklI
VnVaR1ZtYVc1bFpDQjBhR1Z1SUhSb1pTQnNZWE4wSUdOb2FXeGtJSGRwYkd3Z1ltVWdiV0Z5YTJW
a0lHRnpJSE4xWTJndVhHNHZMMXh1THk4Z1NXWWdiWFZzYVhSd2JHVWdhWE1nZEhKMWRHaDVJSFJv
Wlc0Z1lXeHNJSGRvYVhSbGMzQmhZMlVnZDJsc2JDQmlaU0J6ZEhKcGNIQmxaQ0J2ZFhRZ2RXNTBh
V3dnYm05dUxYZG9hWFJsYzNCaFkyVmNiaTh2SUdOdmJuUmxiblFnYVhNZ2JXVjBMbHh1Wm5WdVkz
UnBiMjRnYjIxcGRFeGxablFvWW05a2VTd2dhU3dnYlhWc2RHbHdiR1VwSUh0Y2JpQWdiR1YwSUdO
MWNuSmxiblFnUFNCaWIyUjVXMmtnUFQwZ2JuVnNiQ0EvSUdKdlpIa3ViR1Z1WjNSb0lDMGdNU0E2
SUdrZ0xTQXhYVHRjYmlBZ2FXWWdLQ0ZqZFhKeVpXNTBJSHg4SUdOMWNuSmxiblF1ZEhsd1pTQWhQ
VDBnSjBOdmJuUmxiblJUZEdGMFpXMWxiblFuSUh4OElDZ2hiWFZzZEdsd2JHVWdKaVlnWTNWeWNt
VnVkQzVzWldaMFUzUnlhWEJ3WldRcEtTQjdYRzRnSUNBZ2NtVjBkWEp1TzF4dUlDQjlYRzVjYmlB
Z0x5OGdWMlVnYjIxcGRDQjBhR1VnYkdGemRDQnViMlJsSUdsbUlHbDBKM01nZDJocGRHVnpjR0Zq
WlNCdmJteDVJR0Z1WkNCdWIzUWdjSEpsWTJWbFpHVmtJR0o1SUdFZ2JtOXVMV052Ym5SbGJuUWdi
bTlrWlM1Y2JpQWdiR1YwSUc5eWFXZHBibUZzSUQwZ1kzVnljbVZ1ZEM1MllXeDFaVHRjYmlBZ1kz
VnljbVZ1ZEM1MllXeDFaU0E5SUdOMWNuSmxiblF1ZG1Gc2RXVXVjbVZ3YkdGalpTaHRkV3gwYVhC
c1pTQS9JQ2d2WEZ4ekt5UXZLU0E2SUNndld5QmNYSFJkS3lRdktTd2dKeWNwTzF4dUlDQmpkWEp5
Wlc1MExteGxablJUZEhKcGNIQmxaQ0E5SUdOMWNuSmxiblF1ZG1Gc2RXVWdJVDA5SUc5eWFXZHBi
bUZzTzF4dUlDQnlaWFIxY200Z1kzVnljbVZ1ZEM1c1pXWjBVM1J5YVhCd1pXUTdYRzU5WEc1Y2Jt
VjRjRzl5ZENCa1pXWmhkV3gwSUZkb2FYUmxjM0JoWTJWRGIyNTBjbTlzTzF4dUlsMTkKZGlmZiAt
LWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2Ft
ZC9oYW5kbGViYXJzL2RlY29yYXRvcnMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1
bGVzL2hhbmRsZWJhcnMvZGlzdC9hbWQvaGFuZGxlYmFycy9kZWNvcmF0b3JzLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjdjMjNjYWI5MmNhOGFmOTM3ZTIwN2VlMmEyMmFiNDAwZTNhZGE2YzMKLS0tIC9kZXYvbnVs
bAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9h
bWQvaGFuZGxlYmFycy9kZWNvcmF0b3JzLmpzCkBAIC0wLDAgKzEsMTYgQEAKK2RlZmluZShbJ2V4
cG9ydHMnLCAnLi9kZWNvcmF0b3JzL2lubGluZSddLCBmdW5jdGlvbiAoZXhwb3J0cywgX2RlY29y
YXRvcnNJbmxpbmUpIHsKKyAgJ3VzZSBzdHJpY3QnOworCisgIGV4cG9ydHMuX19lc01vZHVsZSA9
IHRydWU7CisgIGV4cG9ydHMucmVnaXN0ZXJEZWZhdWx0RGVjb3JhdG9ycyA9IHJlZ2lzdGVyRGVm
YXVsdERlY29yYXRvcnM7CisgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0CisKKyAgZnVuY3Rpb24g
X2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVs
ZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfQorCisgIHZhciBfcmVnaXN0ZXJJbmxpbmUg
PSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9kZWNvcmF0b3JzSW5saW5lKTsKKworICBmdW5jdGlv
biByZWdpc3RlckRlZmF1bHREZWNvcmF0b3JzKGluc3RhbmNlKSB7CisgICAgX3JlZ2lzdGVySW5s
aW5lWydkZWZhdWx0J10oaW5zdGFuY2UpOworICB9Cit9KTsKKy8vIyBzb3VyY2VNYXBwaW5nVVJM
PWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJW
eklqcGJJaTR1THk0dUx5NHVMMnhwWWk5b1lXNWtiR1ZpWVhKekwyUmxZMjl5WVhSdmNuTXVhbk1p
WFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanM3T3pzN096czdPenM3UVVGRlR5eFhR
VUZUTEhsQ1FVRjVRaXhEUVVGRExGRkJRVkVzUlVGQlJUdEJRVU5zUkN3clFrRkJaU3hSUVVGUkxF
TkJRVU1zUTBGQlF6dEhRVU14UWlJc0ltWnBiR1VpT2lKa1pXTnZjbUYwYjNKekxtcHpJaXdpYzI5
MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJSEpsWjJsemRHVnlTVzVzYVc1bElHWnliMjBn
Snk0dlpHVmpiM0poZEc5eWN5OXBibXhwYm1Vbk8xeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdj
bVZuYVhOMFpYSkVaV1poZFd4MFJHVmpiM0poZEc5eWN5aHBibk4wWVc1alpTa2dlMXh1SUNCeVpX
ZHBjM1JsY2tsdWJHbHVaU2hwYm5OMFlXNWpaU2s3WEc1OVhHNWNiaUpkZlE9PQpkaWZmIC0tZ2l0
IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvYW1kL2hh
bmRsZWJhcnMvZGVjb3JhdG9ycy9pbmxpbmUuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9t
b2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9hbWQvaGFuZGxlYmFycy9kZWNvcmF0b3JzL2lubGluZS5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xMjVlMzk2NDJmMGJjZmUxN2M3MjYyZDI3ZTZlYmQwYjQ2ZmQxZjY5Ci0t
LSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGVi
YXJzL2Rpc3QvYW1kL2hhbmRsZWJhcnMvZGVjb3JhdG9ycy9pbmxpbmUuanMKQEAgLTAsMCArMSwy
NSBAQAorZGVmaW5lKFsnZXhwb3J0cycsICdtb2R1bGUnLCAnLi4vdXRpbHMnXSwgZnVuY3Rpb24g
KGV4cG9ydHMsIG1vZHVsZSwgX3V0aWxzKSB7CisgICd1c2Ugc3RyaWN0JzsKKworICBtb2R1bGUu
ZXhwb3J0cyA9IGZ1bmN0aW9uIChpbnN0YW5jZSkgeworICAgIGluc3RhbmNlLnJlZ2lzdGVyRGVj
b3JhdG9yKCdpbmxpbmUnLCBmdW5jdGlvbiAoZm4sIHByb3BzLCBjb250YWluZXIsIG9wdGlvbnMp
IHsKKyAgICAgIHZhciByZXQgPSBmbjsKKyAgICAgIGlmICghcHJvcHMucGFydGlhbHMpIHsKKyAg
ICAgICAgcHJvcHMucGFydGlhbHMgPSB7fTsKKyAgICAgICAgcmV0ID0gZnVuY3Rpb24gKGNvbnRl
eHQsIG9wdGlvbnMpIHsKKyAgICAgICAgICAvLyBDcmVhdGUgYSBuZXcgcGFydGlhbHMgc3RhY2sg
ZnJhbWUgcHJpb3IgdG8gZXhlYy4KKyAgICAgICAgICB2YXIgb3JpZ2luYWwgPSBjb250YWluZXIu
cGFydGlhbHM7CisgICAgICAgICAgY29udGFpbmVyLnBhcnRpYWxzID0gX3V0aWxzLmV4dGVuZCh7
fSwgb3JpZ2luYWwsIHByb3BzLnBhcnRpYWxzKTsKKyAgICAgICAgICB2YXIgcmV0ID0gZm4oY29u
dGV4dCwgb3B0aW9ucyk7CisgICAgICAgICAgY29udGFpbmVyLnBhcnRpYWxzID0gb3JpZ2luYWw7
CisgICAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgICAgfTsKKyAgICAgIH0KKworICAgICAgcHJv
cHMucGFydGlhbHNbb3B0aW9ucy5hcmdzWzBdXSA9IG9wdGlvbnMuZm47CisKKyAgICAgIHJldHVy
biByZXQ7CisgICAgfSk7CisgIH07Cit9KTsKKy8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBw
bGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJaTR1
THk0dUx5NHVMeTR1TDJ4cFlpOW9ZVzVrYkdWaVlYSnpMMlJsWTI5eVlYUnZjbk12YVc1c2FXNWxM
bXB6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3T3p0dFFrRkZaU3hWUVVGVExG
RkJRVkVzUlVGQlJUdEJRVU5vUXl4WlFVRlJMRU5CUVVNc2FVSkJRV2xDTEVOQlFVTXNVVUZCVVN4
RlFVRkZMRlZCUVZNc1JVRkJSU3hGUVVGRkxFdEJRVXNzUlVGQlJTeFRRVUZUTEVWQlFVVXNUMEZC
VHl4RlFVRkZPMEZCUXpORkxGVkJRVWtzUjBGQlJ5eEhRVUZITEVWQlFVVXNRMEZCUXp0QlFVTmlM
RlZCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVVVGQlVTeEZRVUZGTzBGQlEyNUNMR0ZCUVVzc1Ew
RkJReXhSUVVGUkxFZEJRVWNzUlVGQlJTeERRVUZETzBGQlEzQkNMRmRCUVVjc1IwRkJSeXhWUVVG
VExFOUJRVThzUlVGQlJTeFBRVUZQTEVWQlFVVTdPMEZCUlM5Q0xHTkJRVWtzVVVGQlVTeEhRVUZI
TEZOQlFWTXNRMEZCUXl4UlFVRlJMRU5CUVVNN1FVRkRiRU1zYlVKQlFWTXNRMEZCUXl4UlFVRlJM
RWRCUVVjc1QwRldja0lzVFVGQlRTeERRVlZ6UWl4RlFVRkZMRVZCUVVVc1VVRkJVU3hGUVVGRkxF
dEJRVXNzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXp0QlFVTXhSQ3hqUVVGSkxFZEJRVWNzUjBG
QlJ5eEZRVUZGTEVOQlFVTXNUMEZCVHl4RlFVRkZMRTlCUVU4c1EwRkJReXhEUVVGRE8wRkJReTlD
TEcxQ1FVRlRMRU5CUVVNc1VVRkJVU3hIUVVGSExGRkJRVkVzUTBGQlF6dEJRVU01UWl4cFFrRkJU
eXhIUVVGSExFTkJRVU03VTBGRFdpeERRVUZETzA5QlEwZzdPMEZCUlVRc1YwRkJTeXhEUVVGRExG
RkJRVkVzUTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVG
RExFZEJRVWNzVDBGQlR5eERRVUZETEVWQlFVVXNRMEZCUXpzN1FVRkZOME1zWVVGQlR5eEhRVUZI
TEVOQlFVTTdTMEZEV2l4RFFVRkRMRU5CUVVNN1IwRkRTaUlzSW1acGJHVWlPaUpwYm14cGJtVXVh
bk1pTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKcGJYQnZjblFnZTJWNGRHVnVaSDBnWm5KdmJT
QW5MaTR2ZFhScGJITW5PMXh1WEc1bGVIQnZjblFnWkdWbVlYVnNkQ0JtZFc1amRHbHZiaWhwYm5O
MFlXNWpaU2tnZTF4dUlDQnBibk4wWVc1alpTNXlaV2RwYzNSbGNrUmxZMjl5WVhSdmNpZ25hVzVz
YVc1bEp5d2dablZ1WTNScGIyNG9abTRzSUhCeWIzQnpMQ0JqYjI1MFlXbHVaWElzSUc5d2RHbHZi
bk1wSUh0Y2JpQWdJQ0JzWlhRZ2NtVjBJRDBnWm00N1hHNGdJQ0FnYVdZZ0tDRndjbTl3Y3k1d1lY
SjBhV0ZzY3lrZ2UxeHVJQ0FnSUNBZ2NISnZjSE11Y0dGeWRHbGhiSE1nUFNCN2ZUdGNiaUFnSUNB
Z0lISmxkQ0E5SUdaMWJtTjBhVzl1S0dOdmJuUmxlSFFzSUc5d2RHbHZibk1wSUh0Y2JpQWdJQ0Fn
SUNBZ0x5OGdRM0psWVhSbElHRWdibVYzSUhCaGNuUnBZV3h6SUhOMFlXTnJJR1p5WVcxbElIQnlh
Vzl5SUhSdklHVjRaV011WEc0Z0lDQWdJQ0FnSUd4bGRDQnZjbWxuYVc1aGJDQTlJR052Ym5SaGFX
NWxjaTV3WVhKMGFXRnNjenRjYmlBZ0lDQWdJQ0FnWTI5dWRHRnBibVZ5TG5CaGNuUnBZV3h6SUQw
Z1pYaDBaVzVrS0h0OUxDQnZjbWxuYVc1aGJDd2djSEp2Y0hNdWNHRnlkR2xoYkhNcE8xeHVJQ0Fn
SUNBZ0lDQnNaWFFnY21WMElEMGdabTRvWTI5dWRHVjRkQ3dnYjNCMGFXOXVjeWs3WEc0Z0lDQWdJ
Q0FnSUdOdmJuUmhhVzVsY2k1d1lYSjBhV0ZzY3lBOUlHOXlhV2RwYm1Gc08xeHVJQ0FnSUNBZ0lD
QnlaWFIxY200Z2NtVjBPMXh1SUNBZ0lDQWdmVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQndjbTl3Y3k1
d1lYSjBhV0ZzYzF0dmNIUnBiMjV6TG1GeVozTmJNRjFkSUQwZ2IzQjBhVzl1Y3k1bWJqdGNibHh1
SUNBZ0lISmxkSFZ5YmlCeVpYUTdYRzRnSUgwcE8xeHVmVnh1SWwxOQpkaWZmIC0tZ2l0IGEvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvYW1kL2hhbmRsZWJh
cnMvZXhjZXB0aW9uLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGVi
YXJzL2Rpc3QvYW1kL2hhbmRsZWJhcnMvZXhjZXB0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUyY2Y0Yjg3
NTJlYWVjNGRhNWQ3M2Y2M2FlYzE0ZWIwMGExODQ0MWQKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9hbWQvaGFuZGxlYmFy
cy9leGNlcHRpb24uanMKQEAgLTAsMCArMSw1MCBAQAorZGVmaW5lKFsnZXhwb3J0cycsICdtb2R1
bGUnXSwgZnVuY3Rpb24gKGV4cG9ydHMsIG1vZHVsZSkgeworICAndXNlIHN0cmljdCc7CisKKyAg
dmFyIGVycm9yUHJvcHMgPSBbJ2Rlc2NyaXB0aW9uJywgJ2ZpbGVOYW1lJywgJ2xpbmVOdW1iZXIn
LCAnbWVzc2FnZScsICduYW1lJywgJ251bWJlcicsICdzdGFjayddOworCisgIGZ1bmN0aW9uIEV4
Y2VwdGlvbihtZXNzYWdlLCBub2RlKSB7CisgICAgdmFyIGxvYyA9IG5vZGUgJiYgbm9kZS5sb2Ms
CisgICAgICAgIGxpbmUgPSB1bmRlZmluZWQsCisgICAgICAgIGNvbHVtbiA9IHVuZGVmaW5lZDsK
KyAgICBpZiAobG9jKSB7CisgICAgICBsaW5lID0gbG9jLnN0YXJ0LmxpbmU7CisgICAgICBjb2x1
bW4gPSBsb2Muc3RhcnQuY29sdW1uOworCisgICAgICBtZXNzYWdlICs9ICcgLSAnICsgbGluZSAr
ICc6JyArIGNvbHVtbjsKKyAgICB9CisKKyAgICB2YXIgdG1wID0gRXJyb3IucHJvdG90eXBlLmNv
bnN0cnVjdG9yLmNhbGwodGhpcywgbWVzc2FnZSk7CisKKyAgICAvLyBVbmZvcnR1bmF0ZWx5IGVy
cm9ycyBhcmUgbm90IGVudW1lcmFibGUgaW4gQ2hyb21lIChhdCBsZWFzdCksIHNvIGBmb3IgcHJv
cCBpbiB0bXBgIGRvZXNuJ3Qgd29yay4KKyAgICBmb3IgKHZhciBpZHggPSAwOyBpZHggPCBlcnJv
clByb3BzLmxlbmd0aDsgaWR4KyspIHsKKyAgICAgIHRoaXNbZXJyb3JQcm9wc1tpZHhdXSA9IHRt
cFtlcnJvclByb3BzW2lkeF1dOworICAgIH0KKworICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNl
ICovCisgICAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKSB7CisgICAgICBFcnJvci5jYXB0
dXJlU3RhY2tUcmFjZSh0aGlzLCBFeGNlcHRpb24pOworICAgIH0KKworICAgIHRyeSB7CisgICAg
ICBpZiAobG9jKSB7CisgICAgICAgIHRoaXMubGluZU51bWJlciA9IGxpbmU7CisKKyAgICAgICAg
Ly8gV29yayBhcm91bmQgaXNzdWUgdW5kZXIgc2FmYXJpIHdoZXJlIHdlIGNhbid0IGRpcmVjdGx5
IHNldCB0aGUgY29sdW1uIHZhbHVlCisgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICov
CisgICAgICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHsKKyAgICAgICAgICBPYmplY3Qu
ZGVmaW5lUHJvcGVydHkodGhpcywgJ2NvbHVtbicsIHsgdmFsdWU6IGNvbHVtbiB9KTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICB0aGlzLmNvbHVtbiA9IGNvbHVtbjsKKyAgICAgICAgfQor
ICAgICAgfQorICAgIH0gY2F0Y2ggKG5vcCkgeworICAgICAgLyogSWdub3JlIGlmIHRoZSBicm93
c2VyIGlzIHZlcnkgcGFydGljdWxhciAqLworICAgIH0KKyAgfQorCisgIEV4Y2VwdGlvbi5wcm90
b3R5cGUgPSBuZXcgRXJyb3IoKTsKKworICBtb2R1bGUuZXhwb3J0cyA9IEV4Y2VwdGlvbjsKK30p
OworLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoy
WlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYklpNHVMeTR1THk0dUwyeHBZaTlvWVc1a2JHVmlZ
WEp6TDJWNFkyVndkR2x2Ymk1cWN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU96
czdRVUZEUVN4TlFVRk5MRlZCUVZVc1IwRkJSeXhEUVVGRExHRkJRV0VzUlVGQlJTeFZRVUZWTEVW
QlFVVXNXVUZCV1N4RlFVRkZMRk5CUVZNc1JVRkJSU3hOUVVGTkxFVkJRVVVzVVVGQlVTeEZRVUZG
TEU5QlFVOHNRMEZCUXl4RFFVRkRPenRCUVVWdVJ5eFhRVUZUTEZOQlFWTXNRMEZCUXl4UFFVRlBM
RVZCUVVVc1NVRkJTU3hGUVVGRk8wRkJRMmhETEZGQlFVa3NSMEZCUnl4SFFVRkhMRWxCUVVrc1NV
RkJTU3hKUVVGSkxFTkJRVU1zUjBGQlJ6dFJRVU4wUWl4SlFVRkpMRmxCUVVFN1VVRkRTaXhOUVVG
TkxGbEJRVUVzUTBGQlF6dEJRVU5ZTEZGQlFVa3NSMEZCUnl4RlFVRkZPMEZCUTFBc1ZVRkJTU3hI
UVVGSExFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRPMEZCUTNSQ0xGbEJR
VTBzUjBGQlJ5eEhRVUZITEVOQlFVTXNTMEZCU3l4RFFVRkRMRTFCUVUwc1EwRkJRenM3UVVGRk1V
SXNZVUZCVHl4SlFVRkpMRXRCUVVzc1IwRkJSeXhKUVVGSkxFZEJRVWNzUjBGQlJ5eEhRVUZITEUx
QlFVMHNRMEZCUXp0TFFVTjRRenM3UVVGRlJDeFJRVUZKTEVkQlFVY3NSMEZCUnl4TFFVRkxMRU5C
UVVNc1UwRkJVeXhEUVVGRExGZEJRVmNzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RlFVRkZM
RTlCUVU4c1EwRkJReXhEUVVGRE96czdRVUZITVVRc1UwRkJTeXhKUVVGSkxFZEJRVWNzUjBGQlJ5
eERRVUZETEVWQlFVVXNSMEZCUnl4SFFVRkhMRlZCUVZVc1EwRkJReXhOUVVGTkxFVkJRVVVzUjBG
QlJ5eEZRVUZGTEVWQlFVVTdRVUZEYUVRc1ZVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eEhRVUZI
TEVOQlFVTXNRMEZCUXl4SFFVRkhMRWRCUVVjc1EwRkJReXhWUVVGVkxFTkJRVU1zUjBGQlJ5eERR
VUZETEVOQlFVTXNRMEZCUXp0TFFVTTVRenM3TzBGQlIwUXNVVUZCU1N4TFFVRkxMRU5CUVVNc2FV
SkJRV2xDTEVWQlFVVTdRVUZETTBJc1YwRkJTeXhEUVVGRExHbENRVUZwUWl4RFFVRkRMRWxCUVVr
c1JVRkJSU3hUUVVGVExFTkJRVU1zUTBGQlF6dExRVU14UXpzN1FVRkZSQ3hSUVVGSk8wRkJRMFlz
VlVGQlNTeEhRVUZITEVWQlFVVTdRVUZEVUN4WlFVRkpMRU5CUVVNc1ZVRkJWU3hIUVVGSExFbEJR
VWtzUTBGQlF6czdPenRCUVVsMlFpeFpRVUZKTEUxQlFVMHNRMEZCUXl4alFVRmpMRVZCUVVVN1FV
RkRla0lzWjBKQlFVMHNRMEZCUXl4alFVRmpMRU5CUVVNc1NVRkJTU3hGUVVGRkxGRkJRVkVzUlVG
QlJTeEZRVUZETEV0QlFVc3NSVUZCUlN4TlFVRk5MRVZCUVVNc1EwRkJReXhEUVVGRE8xTkJRM2hF
TEUxQlFVMDdRVUZEVEN4alFVRkpMRU5CUVVNc1RVRkJUU3hIUVVGSExFMUJRVTBzUTBGQlF6dFRR
VU4wUWp0UFFVTkdPMHRCUTBZc1EwRkJReXhQUVVGUExFZEJRVWNzUlVGQlJUczdTMEZGWWp0SFFV
TkdPenRCUVVWRUxGZEJRVk1zUTBGQlF5eFRRVUZUTEVkQlFVY3NTVUZCU1N4TFFVRkxMRVZCUVVV
c1EwRkJRenM3YlVKQlJXNUNMRk5CUVZNaUxDSm1hV3hsSWpvaVpYaGpaWEIwYVc5dUxtcHpJaXdp
YzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpWEc1amIyNXpkQ0JsY25KdmNsQnliM0J6SUQwZ1d5ZGta
WE5qY21sd2RHbHZiaWNzSUNkbWFXeGxUbUZ0WlNjc0lDZHNhVzVsVG5WdFltVnlKeXdnSjIxbGMz
TmhaMlVuTENBbmJtRnRaU2NzSUNkdWRXMWlaWEluTENBbmMzUmhZMnNuWFR0Y2JseHVablZ1WTNS
cGIyNGdSWGhqWlhCMGFXOXVLRzFsYzNOaFoyVXNJRzV2WkdVcElIdGNiaUFnYkdWMElHeHZZeUE5
SUc1dlpHVWdKaVlnYm05a1pTNXNiMk1zWEc0Z0lDQWdJQ0JzYVc1bExGeHVJQ0FnSUNBZ1kyOXNk
VzF1TzF4dUlDQnBaaUFvYkc5aktTQjdYRzRnSUNBZ2JHbHVaU0E5SUd4dll5NXpkR0Z5ZEM1c2FX
NWxPMXh1SUNBZ0lHTnZiSFZ0YmlBOUlHeHZZeTV6ZEdGeWRDNWpiMngxYlc0N1hHNWNiaUFnSUNC
dFpYTnpZV2RsSUNzOUlDY2dMU0FuSUNzZ2JHbHVaU0FySUNjNkp5QXJJR052YkhWdGJqdGNiaUFn
ZlZ4dVhHNGdJR3hsZENCMGJYQWdQU0JGY25KdmNpNXdjbTkwYjNSNWNHVXVZMjl1YzNSeWRXTjBi
M0l1WTJGc2JDaDBhR2x6TENCdFpYTnpZV2RsS1R0Y2JseHVJQ0F2THlCVmJtWnZjblIxYm1GMFpX
eDVJR1Z5Y205eWN5QmhjbVVnYm05MElHVnVkVzFsY21GaWJHVWdhVzRnUTJoeWIyMWxJQ2hoZENC
c1pXRnpkQ2tzSUhOdklHQm1iM0lnY0hKdmNDQnBiaUIwYlhCZ0lHUnZaWE51SjNRZ2QyOXlheTVj
YmlBZ1ptOXlJQ2hzWlhRZ2FXUjRJRDBnTURzZ2FXUjRJRHdnWlhKeWIzSlFjbTl3Y3k1c1pXNW5k
R2c3SUdsa2VDc3JLU0I3WEc0Z0lDQWdkR2hwYzF0bGNuSnZjbEJ5YjNCelcybGtlRjFkSUQwZ2RH
MXdXMlZ5Y205eVVISnZjSE5iYVdSNFhWMDdYRzRnSUgxY2JseHVJQ0F2S2lCcGMzUmhibUoxYkNC
cFoyNXZjbVVnWld4elpTQXFMMXh1SUNCcFppQW9SWEp5YjNJdVkyRndkSFZ5WlZOMFlXTnJWSEpo
WTJVcElIdGNiaUFnSUNCRmNuSnZjaTVqWVhCMGRYSmxVM1JoWTJ0VWNtRmpaU2gwYUdsekxDQkZl
R05sY0hScGIyNHBPMXh1SUNCOVhHNWNiaUFnZEhKNUlIdGNiaUFnSUNCcFppQW9iRzlqS1NCN1hH
NGdJQ0FnSUNCMGFHbHpMbXhwYm1WT2RXMWlaWElnUFNCc2FXNWxPMXh1WEc0Z0lDQWdJQ0F2THlC
WGIzSnJJR0Z5YjNWdVpDQnBjM04xWlNCMWJtUmxjaUJ6WVdaaGNta2dkMmhsY21VZ2QyVWdZMkZ1
SjNRZ1pHbHlaV04wYkhrZ2MyVjBJSFJvWlNCamIyeDFiVzRnZG1Gc2RXVmNiaUFnSUNBZ0lDOHFJ
R2x6ZEdGdVluVnNJR2xuYm05eVpTQnVaWGgwSUNvdlhHNGdJQ0FnSUNCcFppQW9UMkpxWldOMExt
UmxabWx1WlZCeWIzQmxjblI1S1NCN1hHNGdJQ0FnSUNBZ0lFOWlhbVZqZEM1a1pXWnBibVZRY205
d1pYSjBlU2gwYUdsekxDQW5ZMjlzZFcxdUp5d2dlM1poYkhWbE9pQmpiMngxYlc1OUtUdGNiaUFn
SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lIUm9hWE11WTI5c2RXMXVJRDBnWTI5c2RXMXVP
MXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNiaUFnZlNCallYUmphQ0FvYm05d0tTQjdYRzRnSUNBZ0x5
b2dTV2R1YjNKbElHbG1JSFJvWlNCaWNtOTNjMlZ5SUdseklIWmxjbmtnY0dGeWRHbGpkV3hoY2lB
cUwxeHVJQ0I5WEc1OVhHNWNia1Y0WTJWd2RHbHZiaTV3Y205MGIzUjVjR1VnUFNCdVpYY2dSWEp5
YjNJb0tUdGNibHh1Wlhod2IzSjBJR1JsWm1GMWJIUWdSWGhqWlhCMGFXOXVPMXh1SWwxOQpkaWZm
IC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3Qv
YW1kL2hhbmRsZWJhcnMvaGVscGVycy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVs
ZXMvaGFuZGxlYmFycy9kaXN0L2FtZC9oYW5kbGViYXJzL2hlbHBlcnMuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MzhjYjUwNjViNDYwNDAzZmEwNTI4NmRhZjJlZGYyNGNmZTM5MzI1ZAotLS0gL2Rldi9udWxsCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2FtZC9o
YW5kbGViYXJzL2hlbHBlcnMuanMKQEAgLTAsMCArMSwzNCBAQAorZGVmaW5lKFsnZXhwb3J0cycs
ICcuL2hlbHBlcnMvYmxvY2staGVscGVyLW1pc3NpbmcnLCAnLi9oZWxwZXJzL2VhY2gnLCAnLi9o
ZWxwZXJzL2hlbHBlci1taXNzaW5nJywgJy4vaGVscGVycy9pZicsICcuL2hlbHBlcnMvbG9nJywg
Jy4vaGVscGVycy9sb29rdXAnLCAnLi9oZWxwZXJzL3dpdGgnXSwgZnVuY3Rpb24gKGV4cG9ydHMs
IF9oZWxwZXJzQmxvY2tIZWxwZXJNaXNzaW5nLCBfaGVscGVyc0VhY2gsIF9oZWxwZXJzSGVscGVy
TWlzc2luZywgX2hlbHBlcnNJZiwgX2hlbHBlcnNMb2csIF9oZWxwZXJzTG9va3VwLCBfaGVscGVy
c1dpdGgpIHsKKyAgJ3VzZSBzdHJpY3QnOworCisgIGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7
CisgIGV4cG9ydHMucmVnaXN0ZXJEZWZhdWx0SGVscGVycyA9IHJlZ2lzdGVyRGVmYXVsdEhlbHBl
cnM7CisgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0CisKKyAgZnVuY3Rpb24gX2ludGVyb3BSZXF1
aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsg
J2RlZmF1bHQnOiBvYmogfTsgfQorCisgIHZhciBfcmVnaXN0ZXJCbG9ja0hlbHBlck1pc3Npbmcg
PSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9oZWxwZXJzQmxvY2tIZWxwZXJNaXNzaW5nKTsKKwor
ICB2YXIgX3JlZ2lzdGVyRWFjaCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2hlbHBlcnNFYWNo
KTsKKworICB2YXIgX3JlZ2lzdGVySGVscGVyTWlzc2luZyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1
bHQoX2hlbHBlcnNIZWxwZXJNaXNzaW5nKTsKKworICB2YXIgX3JlZ2lzdGVySWYgPSBfaW50ZXJv
cFJlcXVpcmVEZWZhdWx0KF9oZWxwZXJzSWYpOworCisgIHZhciBfcmVnaXN0ZXJMb2cgPSBfaW50
ZXJvcFJlcXVpcmVEZWZhdWx0KF9oZWxwZXJzTG9nKTsKKworICB2YXIgX3JlZ2lzdGVyTG9va3Vw
ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaGVscGVyc0xvb2t1cCk7CisKKyAgdmFyIF9yZWdp
c3RlcldpdGggPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9oZWxwZXJzV2l0aCk7CisKKyAgZnVu
Y3Rpb24gcmVnaXN0ZXJEZWZhdWx0SGVscGVycyhpbnN0YW5jZSkgeworICAgIF9yZWdpc3RlckJs
b2NrSGVscGVyTWlzc2luZ1snZGVmYXVsdCddKGluc3RhbmNlKTsKKyAgICBfcmVnaXN0ZXJFYWNo
WydkZWZhdWx0J10oaW5zdGFuY2UpOworICAgIF9yZWdpc3RlckhlbHBlck1pc3NpbmdbJ2RlZmF1
bHQnXShpbnN0YW5jZSk7CisgICAgX3JlZ2lzdGVySWZbJ2RlZmF1bHQnXShpbnN0YW5jZSk7Cisg
ICAgX3JlZ2lzdGVyTG9nWydkZWZhdWx0J10oaW5zdGFuY2UpOworICAgIF9yZWdpc3Rlckxvb2t1
cFsnZGVmYXVsdCddKGluc3RhbmNlKTsKKyAgICBfcmVnaXN0ZXJXaXRoWydkZWZhdWx0J10oaW5z
dGFuY2UpOworICB9Cit9KTsKKy8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24v
anNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUx5NHVM
MnhwWWk5b1lXNWtiR1ZpWVhKekwyaGxiSEJsY25NdWFuTWlYU3dpYm1GdFpYTWlPbHRkTENKdFlY
QndhVzVuY3lJNklqczdPenM3T3pzN096czdPenM3T3pzN096czdPenM3UVVGUlR5eFhRVUZUTEhO
Q1FVRnpRaXhEUVVGRExGRkJRVkVzUlVGQlJUdEJRVU12UXl3eVEwRkJNa0lzVVVGQlVTeERRVUZE
TEVOQlFVTTdRVUZEY2tNc05rSkJRV0VzVVVGQlVTeERRVUZETEVOQlFVTTdRVUZEZGtJc2MwTkJR
WE5DTEZGQlFWRXNRMEZCUXl4RFFVRkRPMEZCUTJoRExESkNRVUZYTEZGQlFWRXNRMEZCUXl4RFFV
RkRPMEZCUTNKQ0xEUkNRVUZaTEZGQlFWRXNRMEZCUXl4RFFVRkRPMEZCUTNSQ0xDdENRVUZsTEZG
QlFWRXNRMEZCUXl4RFFVRkRPMEZCUTNwQ0xEWkNRVUZoTEZGQlFWRXNRMEZCUXl4RFFVRkRPMGRC
UTNoQ0lpd2labWxzWlNJNkltaGxiSEJsY25NdWFuTWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZX
eUpwYlhCdmNuUWdjbVZuYVhOMFpYSkNiRzlqYTBobGJIQmxjazFwYzNOcGJtY2dabkp2YlNBbkxp
OW9aV3h3WlhKekwySnNiMk5yTFdobGJIQmxjaTF0YVhOemFXNW5KenRjYm1sdGNHOXlkQ0J5Wldk
cGMzUmxja1ZoWTJnZ1puSnZiU0FuTGk5b1pXeHdaWEp6TDJWaFkyZ25PMXh1YVcxd2IzSjBJSEps
WjJsemRHVnlTR1ZzY0dWeVRXbHpjMmx1WnlCbWNtOXRJQ2N1TDJobGJIQmxjbk12YUdWc2NHVnlM
VzFwYzNOcGJtY25PMXh1YVcxd2IzSjBJSEpsWjJsemRHVnlTV1lnWm5KdmJTQW5MaTlvWld4d1pY
SnpMMmxtSnp0Y2JtbHRjRzl5ZENCeVpXZHBjM1JsY2t4dlp5Qm1jbTl0SUNjdUwyaGxiSEJsY25N
dmJHOW5KenRjYm1sdGNHOXlkQ0J5WldkcGMzUmxja3h2YjJ0MWNDQm1jbTl0SUNjdUwyaGxiSEJs
Y25NdmJHOXZhM1Z3Snp0Y2JtbHRjRzl5ZENCeVpXZHBjM1JsY2xkcGRHZ2dabkp2YlNBbkxpOW9a
V3h3WlhKekwzZHBkR2duTzF4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2NtVm5hWE4wWlhKRVpX
WmhkV3gwU0dWc2NHVnljeWhwYm5OMFlXNWpaU2tnZTF4dUlDQnlaV2RwYzNSbGNrSnNiMk5yU0dW
c2NHVnlUV2x6YzJsdVp5aHBibk4wWVc1alpTazdYRzRnSUhKbFoybHpkR1Z5UldGamFDaHBibk4w
WVc1alpTazdYRzRnSUhKbFoybHpkR1Z5U0dWc2NHVnlUV2x6YzJsdVp5aHBibk4wWVc1alpTazdY
RzRnSUhKbFoybHpkR1Z5U1dZb2FXNXpkR0Z1WTJVcE8xeHVJQ0J5WldkcGMzUmxja3h2WnlocGJu
TjBZVzVqWlNrN1hHNGdJSEpsWjJsemRHVnlURzl2YTNWd0tHbHVjM1JoYm1ObEtUdGNiaUFnY21W
bmFYTjBaWEpYYVhSb0tHbHVjM1JoYm1ObEtUdGNibjFjYmlKZGZRPT0KZGlmZiAtLWdpdCBhL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2FtZC9oYW5kbGVi
YXJzL2hlbHBlcnMvYmxvY2staGVscGVyLW1pc3NpbmcuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkv
bm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9hbWQvaGFuZGxlYmFycy9oZWxwZXJzL2Jsb2Nr
LWhlbHBlci1taXNzaW5nLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE0Njk4OTc1MjFmOTZkMzRiZGRmYjFhM2Iw
N2I0MGNjNWUxYWQ0YWYKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9k
ZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9hbWQvaGFuZGxlYmFycy9oZWxwZXJzL2Jsb2NrLWhl
bHBlci1taXNzaW5nLmpzCkBAIC0wLDAgKzEsMzUgQEAKK2RlZmluZShbJ2V4cG9ydHMnLCAnbW9k
dWxlJywgJy4uL3V0aWxzJ10sIGZ1bmN0aW9uIChleHBvcnRzLCBtb2R1bGUsIF91dGlscykgewor
ICAndXNlIHN0cmljdCc7CisKKyAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaW5zdGFuY2Up
IHsKKyAgICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcignYmxvY2tIZWxwZXJNaXNzaW5nJywgZnVu
Y3Rpb24gKGNvbnRleHQsIG9wdGlvbnMpIHsKKyAgICAgIHZhciBpbnZlcnNlID0gb3B0aW9ucy5p
bnZlcnNlLAorICAgICAgICAgIGZuID0gb3B0aW9ucy5mbjsKKworICAgICAgaWYgKGNvbnRleHQg
PT09IHRydWUpIHsKKyAgICAgICAgcmV0dXJuIGZuKHRoaXMpOworICAgICAgfSBlbHNlIGlmIChj
b250ZXh0ID09PSBmYWxzZSB8fCBjb250ZXh0ID09IG51bGwpIHsKKyAgICAgICAgcmV0dXJuIGlu
dmVyc2UodGhpcyk7CisgICAgICB9IGVsc2UgaWYgKF91dGlscy5pc0FycmF5KGNvbnRleHQpKSB7
CisgICAgICAgIGlmIChjb250ZXh0Lmxlbmd0aCA+IDApIHsKKyAgICAgICAgICBpZiAob3B0aW9u
cy5pZHMpIHsKKyAgICAgICAgICAgIG9wdGlvbnMuaWRzID0gW29wdGlvbnMubmFtZV07CisgICAg
ICAgICAgfQorCisgICAgICAgICAgcmV0dXJuIGluc3RhbmNlLmhlbHBlcnMuZWFjaChjb250ZXh0
LCBvcHRpb25zKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICByZXR1cm4gaW52ZXJzZSh0
aGlzKTsKKyAgICAgICAgfQorICAgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKG9wdGlvbnMuZGF0
YSAmJiBvcHRpb25zLmlkcykgeworICAgICAgICAgIHZhciBkYXRhID0gX3V0aWxzLmNyZWF0ZUZy
YW1lKG9wdGlvbnMuZGF0YSk7CisgICAgICAgICAgZGF0YS5jb250ZXh0UGF0aCA9IF91dGlscy5h
cHBlbmRDb250ZXh0UGF0aChvcHRpb25zLmRhdGEuY29udGV4dFBhdGgsIG9wdGlvbnMubmFtZSk7
CisgICAgICAgICAgb3B0aW9ucyA9IHsgZGF0YTogZGF0YSB9OworICAgICAgICB9CisKKyAgICAg
ICAgcmV0dXJuIGZuKGNvbnRleHQsIG9wdGlvbnMpOworICAgICAgfQorICAgIH0pOworICB9Owor
fSk7CisvLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5
SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMeTR1THk0dUwyeHBZaTlvWVc1
a2JHVmlZWEp6TDJobGJIQmxjbk12WW14dlkyc3RhR1ZzY0dWeUxXMXBjM05wYm1jdWFuTWlYU3dp
Ym1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqczdPMjFDUVVWbExGVkJRVk1zVVVGQlVTeEZR
VUZGTzBGQlEyaERMRmxCUVZFc1EwRkJReXhqUVVGakxFTkJRVU1zYjBKQlFXOUNMRVZCUVVVc1ZV
RkJVeXhQUVVGUExFVkJRVVVzVDBGQlR5eEZRVUZGTzBGQlEzWkZMRlZCUVVrc1QwRkJUeXhIUVVG
SExFOUJRVThzUTBGQlF5eFBRVUZQTzFWQlEzcENMRVZCUVVVc1IwRkJSeXhQUVVGUExFTkJRVU1z
UlVGQlJTeERRVUZET3p0QlFVVndRaXhWUVVGSkxFOUJRVThzUzBGQlN5eEpRVUZKTEVWQlFVVTdR
VUZEY0VJc1pVRkJUeXhGUVVGRkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdUMEZEYWtJc1RV
RkJUU3hKUVVGSkxFOUJRVThzUzBGQlN5eExRVUZMTEVsQlFVa3NUMEZCVHl4SlFVRkpMRWxCUVVr
c1JVRkJSVHRCUVVNdlF5eGxRVUZQTEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRQ
UVVOMFFpeE5RVUZOTEVsQlFVa3NUMEZZZVVJc1QwRkJUeXhEUVZkNFFpeFBRVUZQTEVOQlFVTXNS
VUZCUlR0QlFVTXpRaXhaUVVGSkxFOUJRVThzUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RlFV
RkZPMEZCUTNSQ0xHTkJRVWtzVDBGQlR5eERRVUZETEVkQlFVY3NSVUZCUlR0QlFVTm1MRzFDUVVG
UExFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhE
UVVGRE8xZEJRemxDT3p0QlFVVkVMR2xDUVVGUExGRkJRVkVzUTBGQlF5eFBRVUZQTEVOQlFVTXNT
VUZCU1N4RFFVRkRMRTlCUVU4c1JVRkJSU3hQUVVGUExFTkJRVU1zUTBGQlF6dFRRVU5vUkN4TlFV
Rk5PMEZCUTB3c2FVSkJRVThzVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMU5CUTNS
Q08wOUJRMFlzVFVGQlRUdEJRVU5NTEZsQlFVa3NUMEZCVHl4RFFVRkRMRWxCUVVrc1NVRkJTU3hQ
UVVGUExFTkJRVU1zUjBGQlJ5eEZRVUZGTzBGQlF5OUNMR05CUVVrc1NVRkJTU3hIUVVGSExFOUJk
a0pSTEZkQlFWY3NRMEYxUWxBc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzBGQlEz
SkRMR05CUVVrc1EwRkJReXhYUVVGWExFZEJRVWNzVDBGNFFtNUNMR2xDUVVGcFFpeERRWGRDYjBJ
c1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eFhRVUZYTEVWQlFVVXNUMEZCVHl4RFFVRkRMRWxC
UVVrc1EwRkJReXhEUVVGRE8wRkJRemRGTEdsQ1FVRlBMRWRCUVVjc1JVRkJReXhKUVVGSkxFVkJR
VVVzU1VGQlNTeEZRVUZETEVOQlFVTTdVMEZEZUVJN08wRkJSVVFzWlVGQlR5eEZRVUZGTEVOQlFV
TXNUMEZCVHl4RlFVRkZMRTlCUVU4c1EwRkJReXhEUVVGRE8wOUJRemRDTzB0QlEwWXNRMEZCUXl4
RFFVRkRPMGRCUTBvaUxDSm1hV3hsSWpvaVlteHZZMnN0YUdWc2NHVnlMVzFwYzNOcGJtY3Vhbk1p
TENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKcGJYQnZjblFnZTJGd2NHVnVaRU52Ym5SbGVIUlFZ
WFJvTENCamNtVmhkR1ZHY21GdFpTd2dhWE5CY25KaGVYMGdabkp2YlNBbkxpNHZkWFJwYkhNbk8x
eHVYRzVsZUhCdmNuUWdaR1ZtWVhWc2RDQm1kVzVqZEdsdmJpaHBibk4wWVc1alpTa2dlMXh1SUNC
cGJuTjBZVzVqWlM1eVpXZHBjM1JsY2tobGJIQmxjaWduWW14dlkydElaV3h3WlhKTmFYTnphVzVu
Snl3Z1puVnVZM1JwYjI0b1kyOXVkR1Y0ZEN3Z2IzQjBhVzl1Y3lrZ2UxeHVJQ0FnSUd4bGRDQnBi
blpsY25ObElEMGdiM0IwYVc5dWN5NXBiblpsY25ObExGeHVJQ0FnSUNBZ0lDQm1iaUE5SUc5d2RH
bHZibk11Wm00N1hHNWNiaUFnSUNCcFppQW9ZMjl1ZEdWNGRDQTlQVDBnZEhKMVpTa2dlMXh1SUNB
Z0lDQWdjbVYwZFhKdUlHWnVLSFJvYVhNcE8xeHVJQ0FnSUgwZ1pXeHpaU0JwWmlBb1kyOXVkR1Y0
ZENBOVBUMGdabUZzYzJVZ2ZId2dZMjl1ZEdWNGRDQTlQU0J1ZFd4c0tTQjdYRzRnSUNBZ0lDQnla
WFIxY200Z2FXNTJaWEp6WlNoMGFHbHpLVHRjYmlBZ0lDQjlJR1ZzYzJVZ2FXWWdLR2x6UVhKeVlY
a29ZMjl1ZEdWNGRDa3BJSHRjYmlBZ0lDQWdJR2xtSUNoamIyNTBaWGgwTG14bGJtZDBhQ0ErSURB
cElIdGNiaUFnSUNBZ0lDQWdhV1lnS0c5d2RHbHZibk11YVdSektTQjdYRzRnSUNBZ0lDQWdJQ0Fn
YjNCMGFXOXVjeTVwWkhNZ1BTQmJiM0IwYVc5dWN5NXVZVzFsWFR0Y2JpQWdJQ0FnSUNBZ2ZWeHVY
RzRnSUNBZ0lDQWdJSEpsZEhWeWJpQnBibk4wWVc1alpTNW9aV3h3WlhKekxtVmhZMmdvWTI5dWRH
VjRkQ3dnYjNCMGFXOXVjeWs3WEc0Z0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0J5WlhS
MWNtNGdhVzUyWlhKelpTaDBhR2x6S1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5SUdWc2MyVWdlMXh1
SUNBZ0lDQWdhV1lnS0c5d2RHbHZibk11WkdGMFlTQW1KaUJ2Y0hScGIyNXpMbWxrY3lrZ2UxeHVJ
Q0FnSUNBZ0lDQnNaWFFnWkdGMFlTQTlJR055WldGMFpVWnlZVzFsS0c5d2RHbHZibk11WkdGMFlT
azdYRzRnSUNBZ0lDQWdJR1JoZEdFdVkyOXVkR1Y0ZEZCaGRHZ2dQU0JoY0hCbGJtUkRiMjUwWlho
MFVHRjBhQ2h2Y0hScGIyNXpMbVJoZEdFdVkyOXVkR1Y0ZEZCaGRHZ3NJRzl3ZEdsdmJuTXVibUZ0
WlNrN1hHNGdJQ0FnSUNBZ0lHOXdkR2x2Ym5NZ1BTQjdaR0YwWVRvZ1pHRjBZWDA3WEc0Z0lDQWdJ
Q0I5WEc1Y2JpQWdJQ0FnSUhKbGRIVnliaUJtYmloamIyNTBaWGgwTENCdmNIUnBiMjV6S1R0Y2Jp
QWdJQ0I5WEc0Z0lIMHBPMXh1ZlZ4dUlsMTkKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVy
eS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2FtZC9oYW5kbGViYXJzL2hlbHBlcnMvZWFj
aC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2Ft
ZC9oYW5kbGViYXJzL2hlbHBlcnMvZWFjaC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40OGVjZjJhZTRjODA1NDVj
YzllODUwMGI2OTZmYzhlMWQxODgzZTNmCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
anF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvYW1kL2hhbmRsZWJhcnMvaGVscGVy
cy9lYWNoLmpzCkBAIC0wLDAgKzEsODkgQEAKK2RlZmluZShbJ2V4cG9ydHMnLCAnbW9kdWxlJywg
Jy4uL3V0aWxzJywgJy4uL2V4Y2VwdGlvbiddLCBmdW5jdGlvbiAoZXhwb3J0cywgbW9kdWxlLCBf
dXRpbHMsIF9leGNlcHRpb24pIHsKKyAgJ3VzZSBzdHJpY3QnOworCisgIC8vIGlzdGFuYnVsIGln
bm9yZSBuZXh0CisKKyAgZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0
dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfQor
CisgIHZhciBfRXhjZXB0aW9uID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZXhjZXB0aW9uKTsK
KworICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbnN0YW5jZSkgeworICAgIGluc3RhbmNl
LnJlZ2lzdGVySGVscGVyKCdlYWNoJywgZnVuY3Rpb24gKGNvbnRleHQsIG9wdGlvbnMpIHsKKyAg
ICAgIGlmICghb3B0aW9ucykgeworICAgICAgICB0aHJvdyBuZXcgX0V4Y2VwdGlvblsnZGVmYXVs
dCddKCdNdXN0IHBhc3MgaXRlcmF0b3IgdG8gI2VhY2gnKTsKKyAgICAgIH0KKworICAgICAgdmFy
IGZuID0gb3B0aW9ucy5mbiwKKyAgICAgICAgICBpbnZlcnNlID0gb3B0aW9ucy5pbnZlcnNlLAor
ICAgICAgICAgIGkgPSAwLAorICAgICAgICAgIHJldCA9ICcnLAorICAgICAgICAgIGRhdGEgPSB1
bmRlZmluZWQsCisgICAgICAgICAgY29udGV4dFBhdGggPSB1bmRlZmluZWQ7CisKKyAgICAgIGlm
IChvcHRpb25zLmRhdGEgJiYgb3B0aW9ucy5pZHMpIHsKKyAgICAgICAgY29udGV4dFBhdGggPSBf
dXRpbHMuYXBwZW5kQ29udGV4dFBhdGgob3B0aW9ucy5kYXRhLmNvbnRleHRQYXRoLCBvcHRpb25z
Lmlkc1swXSkgKyAnLic7CisgICAgICB9CisKKyAgICAgIGlmIChfdXRpbHMuaXNGdW5jdGlvbihj
b250ZXh0KSkgeworICAgICAgICBjb250ZXh0ID0gY29udGV4dC5jYWxsKHRoaXMpOworICAgICAg
fQorCisgICAgICBpZiAob3B0aW9ucy5kYXRhKSB7CisgICAgICAgIGRhdGEgPSBfdXRpbHMuY3Jl
YXRlRnJhbWUob3B0aW9ucy5kYXRhKTsKKyAgICAgIH0KKworICAgICAgZnVuY3Rpb24gZXhlY0l0
ZXJhdGlvbihmaWVsZCwgaW5kZXgsIGxhc3QpIHsKKyAgICAgICAgaWYgKGRhdGEpIHsKKyAgICAg
ICAgICBkYXRhLmtleSA9IGZpZWxkOworICAgICAgICAgIGRhdGEuaW5kZXggPSBpbmRleDsKKyAg
ICAgICAgICBkYXRhLmZpcnN0ID0gaW5kZXggPT09IDA7CisgICAgICAgICAgZGF0YS5sYXN0ID0g
ISFsYXN0OworCisgICAgICAgICAgaWYgKGNvbnRleHRQYXRoKSB7CisgICAgICAgICAgICBkYXRh
LmNvbnRleHRQYXRoID0gY29udGV4dFBhdGggKyBmaWVsZDsKKyAgICAgICAgICB9CisgICAgICAg
IH0KKworICAgICAgICByZXQgPSByZXQgKyBmbihjb250ZXh0W2ZpZWxkXSwgeworICAgICAgICAg
IGRhdGE6IGRhdGEsCisgICAgICAgICAgYmxvY2tQYXJhbXM6IF91dGlscy5ibG9ja1BhcmFtcyhb
Y29udGV4dFtmaWVsZF0sIGZpZWxkXSwgW2NvbnRleHRQYXRoICsgZmllbGQsIG51bGxdKQorICAg
ICAgICB9KTsKKyAgICAgIH0KKworICAgICAgaWYgKGNvbnRleHQgJiYgdHlwZW9mIGNvbnRleHQg
PT09ICdvYmplY3QnKSB7CisgICAgICAgIGlmIChfdXRpbHMuaXNBcnJheShjb250ZXh0KSkgewor
ICAgICAgICAgIGZvciAodmFyIGogPSBjb250ZXh0Lmxlbmd0aDsgaSA8IGo7IGkrKykgeworICAg
ICAgICAgICAgaWYgKGkgaW4gY29udGV4dCkgeworICAgICAgICAgICAgICBleGVjSXRlcmF0aW9u
KGksIGksIGkgPT09IGNvbnRleHQubGVuZ3RoIC0gMSk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgIHZhciBwcmlvcktleSA9IHVuZGVmaW5l
ZDsKKworICAgICAgICAgIGZvciAodmFyIGtleSBpbiBjb250ZXh0KSB7CisgICAgICAgICAgICBp
ZiAoY29udGV4dC5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7CisgICAgICAgICAgICAgIC8vIFdlJ3Jl
IHJ1bm5pbmcgdGhlIGl0ZXJhdGlvbnMgb25lIHN0ZXAgb3V0IG9mIHN5bmMgc28gd2UgY2FuIGRl
dGVjdAorICAgICAgICAgICAgICAvLyB0aGUgbGFzdCBpdGVyYXRpb24gd2l0aG91dCBoYXZlIHRv
IHNjYW4gdGhlIG9iamVjdCB0d2ljZSBhbmQgY3JlYXRlCisgICAgICAgICAgICAgIC8vIGFuIGl0
ZXJtZWRpYXRlIGtleXMgYXJyYXkuCisgICAgICAgICAgICAgIGlmIChwcmlvcktleSAhPT0gdW5k
ZWZpbmVkKSB7CisgICAgICAgICAgICAgICAgZXhlY0l0ZXJhdGlvbihwcmlvcktleSwgaSAtIDEp
OworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIHByaW9yS2V5ID0ga2V5OworICAgICAg
ICAgICAgICBpKys7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGlmIChw
cmlvcktleSAhPT0gdW5kZWZpbmVkKSB7CisgICAgICAgICAgICBleGVjSXRlcmF0aW9uKHByaW9y
S2V5LCBpIC0gMSwgdHJ1ZSk7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisKKyAg
ICAgIGlmIChpID09PSAwKSB7CisgICAgICAgIHJldCA9IGludmVyc2UodGhpcyk7CisgICAgICB9
CisKKyAgICAgIHJldHVybiByZXQ7CisgICAgfSk7CisgIH07Cit9KTsKKy8vIyBzb3VyY2VNYXBw
aW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpi
M1Z5WTJWeklqcGJJaTR1THk0dUx5NHVMeTR1TDJ4cFlpOW9ZVzVrYkdWaVlYSnpMMmhsYkhCbGNu
TXZaV0ZqYUM1cWN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU96czdPenM3T3pz
N2JVSkJSMlVzVlVGQlV5eFJRVUZSTEVWQlFVVTdRVUZEYUVNc1dVRkJVU3hEUVVGRExHTkJRV01z
UTBGQlF5eE5RVUZOTEVWQlFVVXNWVUZCVXl4UFFVRlBMRVZCUVVVc1QwRkJUeXhGUVVGRk8wRkJR
M3BFTEZWQlFVa3NRMEZCUXl4UFFVRlBMRVZCUVVVN1FVRkRXaXhqUVVGTkxEQkNRVUZqTERaQ1FV
RTJRaXhEUVVGRExFTkJRVU03VDBGRGNFUTdPMEZCUlVRc1ZVRkJTU3hGUVVGRkxFZEJRVWNzVDBG
QlR5eERRVUZETEVWQlFVVTdWVUZEWml4UFFVRlBMRWRCUVVjc1QwRkJUeXhEUVVGRExFOUJRVTg3
VlVGRGVrSXNRMEZCUXl4SFFVRkhMRU5CUVVNN1ZVRkRUQ3hIUVVGSExFZEJRVWNzUlVGQlJUdFZR
VU5TTEVsQlFVa3NXVUZCUVR0VlFVTktMRmRCUVZjc1dVRkJRU3hEUVVGRE96dEJRVVZvUWl4VlFV
RkpMRTlCUVU4c1EwRkJReXhKUVVGSkxFbEJRVWtzVDBGQlR5eERRVUZETEVkQlFVY3NSVUZCUlR0
QlFVTXZRaXh0UWtGQlZ5eEhRVUZITEU5QmFrSmFMR2xDUVVGcFFpeERRV2xDWVN4UFFVRlBMRU5C
UVVNc1NVRkJTU3hEUVVGRExGZEJRVmNzUlVGQlJTeFBRVUZQTEVOQlFVTXNSMEZCUnl4RFFVRkRM
RU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUjBGQlJ5eERRVUZETzA5QlEycEdPenRCUVVWRUxG
VkJRVWtzVDBGd1FuTkVMRlZCUVZVc1EwRnZRbkpFTEU5QlFVOHNRMEZCUXl4RlFVRkZPMEZCUVVV
c1pVRkJUeXhIUVVGSExFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5C
UVVNN1QwRkJSVHM3UVVGRk1VUXNWVUZCU1N4UFFVRlBMRU5CUVVNc1NVRkJTU3hGUVVGRk8wRkJR
MmhDTEZsQlFVa3NSMEZCUnl4UFFYWkNNa0lzVjBGQlZ5eERRWFZDTVVJc1QwRkJUeXhEUVVGRExF
bEJRVWtzUTBGQlF5eERRVUZETzA5QlEyeERPenRCUVVWRUxHVkJRVk1zWVVGQllTeERRVUZETEV0
QlFVc3NSVUZCUlN4TFFVRkxMRVZCUVVVc1NVRkJTU3hGUVVGRk8wRkJRM3BETEZsQlFVa3NTVUZC
U1N4RlFVRkZPMEZCUTFJc1kwRkJTU3hEUVVGRExFZEJRVWNzUjBGQlJ5eExRVUZMTEVOQlFVTTdR
VUZEYWtJc1kwRkJTU3hEUVVGRExFdEJRVXNzUjBGQlJ5eExRVUZMTEVOQlFVTTdRVUZEYmtJc1kw
RkJTU3hEUVVGRExFdEJRVXNzUjBGQlJ5eExRVUZMTEV0QlFVc3NRMEZCUXl4RFFVRkRPMEZCUTNw
Q0xHTkJRVWtzUTBGQlF5eEpRVUZKTEVkQlFVY3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJRenM3
UVVGRmJrSXNZMEZCU1N4WFFVRlhMRVZCUVVVN1FVRkRaaXhuUWtGQlNTeERRVUZETEZkQlFWY3NS
MEZCUnl4WFFVRlhMRWRCUVVjc1MwRkJTeXhEUVVGRE8xZEJRM2hETzFOQlEwWTdPMEZCUlVRc1Yw
RkJSeXhIUVVGSExFZEJRVWNzUjBGQlJ5eEZRVUZGTEVOQlFVTXNUMEZCVHl4RFFVRkRMRXRCUVVz
c1EwRkJReXhGUVVGRk8wRkJRemRDTEdOQlFVa3NSVUZCUlN4SlFVRkpPMEZCUTFZc2NVSkJRVmNz
UlVGQlJTeFBRWGhEVFN4WFFVRlhMRU5CZDBOTUxFTkJRVU1zVDBGQlR5eERRVUZETEV0QlFVc3NR
MEZCUXl4RlFVRkZMRXRCUVVzc1EwRkJReXhGUVVGRkxFTkJRVU1zVjBGQlZ5eEhRVUZITEV0QlFV
c3NSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJRenRUUVVNdlJTeERRVUZETEVOQlFVTTdUMEZEU2pz
N1FVRkZSQ3hWUVVGSkxFOUJRVThzU1VGQlNTeFBRVUZQTEU5QlFVOHNTMEZCU3l4UlFVRlJMRVZC
UVVVN1FVRkRNVU1zV1VGQlNTeFBRVGRETWtNc1QwRkJUeXhEUVRaRE1VTXNUMEZCVHl4RFFVRkRM
RVZCUVVVN1FVRkRjRUlzWlVGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4UFFVRlBMRU5CUVVNc1RV
RkJUU3hGUVVGRkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVV
N1FVRkRka01zWjBKQlFVa3NRMEZCUXl4SlFVRkpMRTlCUVU4c1JVRkJSVHRCUVVOb1Fpd3lRa0ZC
WVN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eExRVUZMTEU5QlFVOHNR
MEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU03WVVGREwwTTdWMEZEUmp0VFFV
TkdMRTFCUVUwN1FVRkRUQ3hqUVVGSkxGRkJRVkVzV1VGQlFTeERRVUZET3p0QlFVVmlMR1ZCUVVz
c1NVRkJTU3hIUVVGSExFbEJRVWtzVDBGQlR5eEZRVUZGTzBGQlEzWkNMR2RDUVVGSkxFOUJRVThz
UTBGQlF5eGpRVUZqTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVN096czdRVUZKTDBJc2EwSkJR
VWtzVVVGQlVTeExRVUZMTEZOQlFWTXNSVUZCUlR0QlFVTXhRaXcyUWtGQllTeERRVUZETEZGQlFW
RXNSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU03WlVGRGFFTTdRVUZEUkN4
elFrRkJVU3hIUVVGSExFZEJRVWNzUTBGQlF6dEJRVU5tTEdWQlFVTXNSVUZCUlN4RFFVRkRPMkZC
UTB3N1YwRkRSanRCUVVORUxHTkJRVWtzVVVGQlVTeExRVUZMTEZOQlFWTXNSVUZCUlR0QlFVTXhR
aXg1UWtGQllTeERRVUZETEZGQlFWRXNSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxF
bEJRVWtzUTBGQlF5eERRVUZETzFkQlEzUkRPMU5CUTBZN1QwRkRSanM3UVVGRlJDeFZRVUZKTEVO
QlFVTXNTMEZCU3l4RFFVRkRMRVZCUVVVN1FVRkRXQ3hYUVVGSExFZEJRVWNzVDBGQlR5eERRVUZE
TEVsQlFVa3NRMEZCUXl4RFFVRkRPMDlCUTNKQ096dEJRVVZFTEdGQlFVOHNSMEZCUnl4RFFVRkRP
MHRCUTFvc1EwRkJReXhEUVVGRE8wZEJRMG9pTENKbWFXeGxJam9pWldGamFDNXFjeUlzSW5OdmRY
SmpaWE5EYjI1MFpXNTBJanBiSW1sdGNHOXlkQ0I3WVhCd1pXNWtRMjl1ZEdWNGRGQmhkR2dzSUdK
c2IyTnJVR0Z5WVcxekxDQmpjbVZoZEdWR2NtRnRaU3dnYVhOQmNuSmhlU3dnYVhOR2RXNWpkR2x2
Ym4wZ1puSnZiU0FuTGk0dmRYUnBiSE1uTzF4dWFXMXdiM0owSUVWNFkyVndkR2x2YmlCbWNtOXRJ
Q2N1TGk5bGVHTmxjSFJwYjI0bk8xeHVYRzVsZUhCdmNuUWdaR1ZtWVhWc2RDQm1kVzVqZEdsdmJp
aHBibk4wWVc1alpTa2dlMXh1SUNCcGJuTjBZVzVqWlM1eVpXZHBjM1JsY2tobGJIQmxjaWduWldG
amFDY3NJR1oxYm1OMGFXOXVLR052Ym5SbGVIUXNJRzl3ZEdsdmJuTXBJSHRjYmlBZ0lDQnBaaUFv
SVc5d2RHbHZibk1wSUh0Y2JpQWdJQ0FnSUhSb2NtOTNJRzVsZHlCRmVHTmxjSFJwYjI0b0owMTFj
M1FnY0dGemN5QnBkR1Z5WVhSdmNpQjBieUFqWldGamFDY3BPMXh1SUNBZ0lIMWNibHh1SUNBZ0lH
eGxkQ0JtYmlBOUlHOXdkR2x2Ym5NdVptNHNYRzRnSUNBZ0lDQWdJR2x1ZG1WeWMyVWdQU0J2Y0hS
cGIyNXpMbWx1ZG1WeWMyVXNYRzRnSUNBZ0lDQWdJR2tnUFNBd0xGeHVJQ0FnSUNBZ0lDQnlaWFFn
UFNBbkp5eGNiaUFnSUNBZ0lDQWdaR0YwWVN4Y2JpQWdJQ0FnSUNBZ1kyOXVkR1Y0ZEZCaGRHZzdY
RzVjYmlBZ0lDQnBaaUFvYjNCMGFXOXVjeTVrWVhSaElDWW1JRzl3ZEdsdmJuTXVhV1J6S1NCN1hH
NGdJQ0FnSUNCamIyNTBaWGgwVUdGMGFDQTlJR0Z3Y0dWdVpFTnZiblJsZUhSUVlYUm9LRzl3ZEds
dmJuTXVaR0YwWVM1amIyNTBaWGgwVUdGMGFDd2diM0IwYVc5dWN5NXBaSE5iTUYwcElDc2dKeTRu
TzF4dUlDQWdJSDFjYmx4dUlDQWdJR2xtSUNocGMwWjFibU4wYVc5dUtHTnZiblJsZUhRcEtTQjdJ
R052Ym5SbGVIUWdQU0JqYjI1MFpYaDBMbU5oYkd3b2RHaHBjeWs3SUgxY2JseHVJQ0FnSUdsbUlD
aHZjSFJwYjI1ekxtUmhkR0VwSUh0Y2JpQWdJQ0FnSUdSaGRHRWdQU0JqY21WaGRHVkdjbUZ0WlNo
dmNIUnBiMjV6TG1SaGRHRXBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHWjFibU4wYVc5dUlHVjRaV05K
ZEdWeVlYUnBiMjRvWm1sbGJHUXNJR2x1WkdWNExDQnNZWE4wS1NCN1hHNGdJQ0FnSUNCcFppQW9a
R0YwWVNrZ2UxeHVJQ0FnSUNBZ0lDQmtZWFJoTG10bGVTQTlJR1pwWld4a08xeHVJQ0FnSUNBZ0lD
QmtZWFJoTG1sdVpHVjRJRDBnYVc1a1pYZzdYRzRnSUNBZ0lDQWdJR1JoZEdFdVptbHljM1FnUFNC
cGJtUmxlQ0E5UFQwZ01EdGNiaUFnSUNBZ0lDQWdaR0YwWVM1c1lYTjBJRDBnSVNGc1lYTjBPMXh1
WEc0Z0lDQWdJQ0FnSUdsbUlDaGpiMjUwWlhoMFVHRjBhQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lHUmhk
R0V1WTI5dWRHVjRkRkJoZEdnZ1BTQmpiMjUwWlhoMFVHRjBhQ0FySUdacFpXeGtPMXh1SUNBZ0lD
QWdJQ0I5WEc0Z0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUhKbGRDQTlJSEpsZENBcklHWnVLR052Ym5S
bGVIUmJabWxsYkdSZExDQjdYRzRnSUNBZ0lDQWdJR1JoZEdFNklHUmhkR0VzWEc0Z0lDQWdJQ0Fn
SUdKc2IyTnJVR0Z5WVcxek9pQmliRzlqYTFCaGNtRnRjeWhiWTI5dWRHVjRkRnRtYVdWc1pGMHNJ
R1pwWld4a1hTd2dXMk52Ym5SbGVIUlFZWFJvSUNzZ1ptbGxiR1FzSUc1MWJHeGRLVnh1SUNBZ0lD
QWdmU2s3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdhV1lnS0dOdmJuUmxlSFFnSmlZZ2RIbHdaVzltSUdO
dmJuUmxlSFFnUFQwOUlDZHZZbXBsWTNRbktTQjdYRzRnSUNBZ0lDQnBaaUFvYVhOQmNuSmhlU2hq
YjI1MFpYaDBLU2tnZTF4dUlDQWdJQ0FnSUNCbWIzSWdLR3hsZENCcUlEMGdZMjl1ZEdWNGRDNXNa
VzVuZEdnN0lHa2dQQ0JxT3lCcEt5c3BJSHRjYmlBZ0lDQWdJQ0FnSUNCcFppQW9hU0JwYmlCamIy
NTBaWGgwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JsZUdWalNYUmxjbUYwYVc5dUtHa3NJR2tzSUdr
Z1BUMDlJR052Ym5SbGVIUXViR1Z1WjNSb0lDMGdNU2s3WEc0Z0lDQWdJQ0FnSUNBZ2ZWeHVJQ0Fn
SUNBZ0lDQjlYRzRnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQnNaWFFnY0hKcGIzSkxa
WGs3WEc1Y2JpQWdJQ0FnSUNBZ1ptOXlJQ2hzWlhRZ2EyVjVJR2x1SUdOdmJuUmxlSFFwSUh0Y2Jp
QWdJQ0FnSUNBZ0lDQnBaaUFvWTI5dWRHVjRkQzVvWVhOUGQyNVFjbTl3WlhKMGVTaHJaWGtwS1NC
N1hHNGdJQ0FnSUNBZ0lDQWdJQ0F2THlCWFpTZHlaU0J5ZFc1dWFXNW5JSFJvWlNCcGRHVnlZWFJw
YjI1eklHOXVaU0J6ZEdWd0lHOTFkQ0J2WmlCemVXNWpJSE52SUhkbElHTmhiaUJrWlhSbFkzUmNi
aUFnSUNBZ0lDQWdJQ0FnSUM4dklIUm9aU0JzWVhOMElHbDBaWEpoZEdsdmJpQjNhWFJvYjNWMElH
aGhkbVVnZEc4Z2MyTmhiaUIwYUdVZ2IySnFaV04wSUhSM2FXTmxJR0Z1WkNCamNtVmhkR1ZjYmlB
Z0lDQWdJQ0FnSUNBZ0lDOHZJR0Z1SUdsMFpYSnRaV1JwWVhSbElHdGxlWE1nWVhKeVlYa3VYRzRn
SUNBZ0lDQWdJQ0FnSUNCcFppQW9jSEpwYjNKTFpYa2dJVDA5SUhWdVpHVm1hVzVsWkNrZ2UxeHVJ
Q0FnSUNBZ0lDQWdJQ0FnSUNCbGVHVmpTWFJsY21GMGFXOXVLSEJ5YVc5eVMyVjVMQ0JwSUMwZ01T
azdYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdJQ0J3Y21sdmNrdGxlU0E5SUd0
bGVUdGNiaUFnSUNBZ0lDQWdJQ0FnSUdrckt6dGNiaUFnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0Fn
SUgxY2JpQWdJQ0FnSUNBZ2FXWWdLSEJ5YVc5eVMyVjVJQ0U5UFNCMWJtUmxabWx1WldRcElIdGNi
aUFnSUNBZ0lDQWdJQ0JsZUdWalNYUmxjbUYwYVc5dUtIQnlhVzl5UzJWNUxDQnBJQzBnTVN3Z2RI
SjFaU2s3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc1Y2JpQWdJQ0JwWmlB
b2FTQTlQVDBnTUNrZ2UxeHVJQ0FnSUNBZ2NtVjBJRDBnYVc1MlpYSnpaU2gwYUdsektUdGNiaUFn
SUNCOVhHNWNiaUFnSUNCeVpYUjFjbTRnY21WME8xeHVJQ0I5S1R0Y2JuMWNiaUpkZlE9PQpkaWZm
IC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3Qv
YW1kL2hhbmRsZWJhcnMvaGVscGVycy9oZWxwZXItbWlzc2luZy5qcyBiL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2px
dWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2FtZC9oYW5kbGViYXJzL2hlbHBlcnMv
aGVscGVyLW1pc3NpbmcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzVkNDNmNjNhODNlMzc5YWEwNzVmNzJmNjIw
MThkZTJkNWM1MmEzZQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2Rl
X21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2FtZC9oYW5kbGViYXJzL2hlbHBlcnMvaGVscGVyLW1p
c3NpbmcuanMKQEAgLTAsMCArMSwyMiBAQAorZGVmaW5lKFsnZXhwb3J0cycsICdtb2R1bGUnLCAn
Li4vZXhjZXB0aW9uJ10sIGZ1bmN0aW9uIChleHBvcnRzLCBtb2R1bGUsIF9leGNlcHRpb24pIHsK
KyAgJ3VzZSBzdHJpY3QnOworCisgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0CisKKyAgZnVuY3Rp
b24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01v
ZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfQorCisgIHZhciBfRXhjZXB0aW9uID0g
X2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZXhjZXB0aW9uKTsKKworICBtb2R1bGUuZXhwb3J0cyA9
IGZ1bmN0aW9uIChpbnN0YW5jZSkgeworICAgIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCdoZWxw
ZXJNaXNzaW5nJywgZnVuY3Rpb24gKCkgLyogW2FyZ3MsIF1vcHRpb25zICoveworICAgICAgaWYg
KGFyZ3VtZW50cy5sZW5ndGggPT09IDEpIHsKKyAgICAgICAgLy8gQSBtaXNzaW5nIGZpZWxkIGlu
IGEge3tmb299fSBjb25zdHJ1Y3QuCisgICAgICAgIHJldHVybiB1bmRlZmluZWQ7CisgICAgICB9
IGVsc2UgeworICAgICAgICAvLyBTb21lb25lIGlzIGFjdHVhbGx5IHRyeWluZyB0byBjYWxsIHNv
bWV0aGluZywgYmxvdyB1cC4KKyAgICAgICAgdGhyb3cgbmV3IF9FeGNlcHRpb25bJ2RlZmF1bHQn
XSgnTWlzc2luZyBoZWxwZXI6ICInICsgYXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGggLSAxXS5u
YW1lICsgJyInKTsKKyAgICAgIH0KKyAgICB9KTsKKyAgfTsKK30pOworLy8jIHNvdXJjZU1hcHBp
bmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIz
VnlZMlZ6SWpwYklpNHVMeTR1THk0dUx5NHVMMnhwWWk5b1lXNWtiR1ZpWVhKekwyaGxiSEJsY25N
dmFHVnNjR1Z5TFcxcGMzTnBibWN1YW5NaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2
SWpzN096czdPenM3TzIxQ1FVVmxMRlZCUVZNc1VVRkJVU3hGUVVGRk8wRkJRMmhETEZsQlFWRXNR
MEZCUXl4alFVRmpMRU5CUVVNc1pVRkJaU3hGUVVGRkxHbERRVUZuUXp0QlFVTjJSU3hWUVVGSkxG
TkJRVk1zUTBGQlF5eE5RVUZOTEV0QlFVc3NRMEZCUXl4RlFVRkZPenRCUVVVeFFpeGxRVUZQTEZO
QlFWTXNRMEZCUXp0UFFVTnNRaXhOUVVGTk96dEJRVVZNTEdOQlFVMHNNRUpCUVdNc2JVSkJRVzFD
TEVkQlFVY3NVMEZCVXl4RFFVRkRMRk5CUVZNc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eERR
VUZETEVOQlFVTXNTVUZCU1N4SFFVRkhMRWRCUVVjc1EwRkJReXhEUVVGRE8wOUJRM1pHTzB0QlEw
WXNRMEZCUXl4RFFVRkRPMGRCUTBvaUxDSm1hV3hsSWpvaWFHVnNjR1Z5TFcxcGMzTnBibWN1YW5N
aUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SnBiWEJ2Y25RZ1JYaGpaWEIwYVc5dUlHWnliMjBn
Snk0dUwyVjRZMlZ3ZEdsdmJpYzdYRzVjYm1WNGNHOXlkQ0JrWldaaGRXeDBJR1oxYm1OMGFXOXVL
R2x1YzNSaGJtTmxLU0I3WEc0Z0lHbHVjM1JoYm1ObExuSmxaMmx6ZEdWeVNHVnNjR1Z5S0Nkb1pX
eHdaWEpOYVhOemFXNW5KeXdnWm5WdVkzUnBiMjRvTHlvZ1cyRnlaM01zSUYxdmNIUnBiMjV6SUNv
dktTQjdYRzRnSUNBZ2FXWWdLR0Z5WjNWdFpXNTBjeTVzWlc1bmRHZ2dQVDA5SURFcElIdGNiaUFn
SUNBZ0lDOHZJRUVnYldsemMybHVaeUJtYVdWc1pDQnBiaUJoSUh0N1ptOXZmWDBnWTI5dWMzUnlk
V04wTGx4dUlDQWdJQ0FnY21WMGRYSnVJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQjlJR1ZzYzJVZ2Ux
eHVJQ0FnSUNBZ0x5OGdVMjl0Wlc5dVpTQnBjeUJoWTNSMVlXeHNlU0IwY25scGJtY2dkRzhnWTJG
c2JDQnpiMjFsZEdocGJtY3NJR0pzYjNjZ2RYQXVYRzRnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dSWGhq
WlhCMGFXOXVLQ2ROYVhOemFXNW5JR2hsYkhCbGNqb2dYQ0luSUNzZ1lYSm5kVzFsYm5SelcyRnla
M1Z0Wlc1MGN5NXNaVzVuZEdnZ0xTQXhYUzV1WVcxbElDc2dKMXdpSnlrN1hHNGdJQ0FnZlZ4dUlD
QjlLVHRjYm4xY2JpSmRmUT09CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9t
b2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9hbWQvaGFuZGxlYmFycy9oZWxwZXJzL2lmLmpzIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvYW1kL2hhbmRsZWJh
cnMvaGVscGVycy9pZi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMWFhMDIxNjY2ODllN2VkMDAzNTg3N2I2ZTAz
NzY3Y2M5ZDAzNjFiCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVf
bW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvYW1kL2hhbmRsZWJhcnMvaGVscGVycy9pZi5qcwpAQCAt
MCwwICsxLDI1IEBACitkZWZpbmUoWydleHBvcnRzJywgJ21vZHVsZScsICcuLi91dGlscyddLCBm
dW5jdGlvbiAoZXhwb3J0cywgbW9kdWxlLCBfdXRpbHMpIHsKKyAgJ3VzZSBzdHJpY3QnOworCisg
IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGluc3RhbmNlKSB7CisgICAgaW5zdGFuY2UucmVn
aXN0ZXJIZWxwZXIoJ2lmJywgZnVuY3Rpb24gKGNvbmRpdGlvbmFsLCBvcHRpb25zKSB7CisgICAg
ICBpZiAoX3V0aWxzLmlzRnVuY3Rpb24oY29uZGl0aW9uYWwpKSB7CisgICAgICAgIGNvbmRpdGlv
bmFsID0gY29uZGl0aW9uYWwuY2FsbCh0aGlzKTsKKyAgICAgIH0KKworICAgICAgLy8gRGVmYXVs
dCBiZWhhdmlvciBpcyB0byByZW5kZXIgdGhlIHBvc2l0aXZlIHBhdGggaWYgdGhlIHZhbHVlIGlz
IHRydXRoeSBhbmQgbm90IGVtcHR5LgorICAgICAgLy8gVGhlIGBpbmNsdWRlWmVyb2Agb3B0aW9u
IG1heSBiZSBzZXQgdG8gdHJlYXQgdGhlIGNvbmR0aW9uYWwgYXMgcHVyZWx5IG5vdCBlbXB0eSBi
YXNlZCBvbiB0aGUKKyAgICAgIC8vIGJlaGF2aW9yIG9mIGlzRW1wdHkuIEVmZmVjdGl2ZWx5IHRo
aXMgZGV0ZXJtaW5lcyBpZiAwIGlzIGhhbmRsZWQgYnkgdGhlIHBvc2l0aXZlIHBhdGggb3IgbmVn
YXRpdmUuCisgICAgICBpZiAoIW9wdGlvbnMuaGFzaC5pbmNsdWRlWmVybyAmJiAhY29uZGl0aW9u
YWwgfHwgX3V0aWxzLmlzRW1wdHkoY29uZGl0aW9uYWwpKSB7CisgICAgICAgIHJldHVybiBvcHRp
b25zLmludmVyc2UodGhpcyk7CisgICAgICB9IGVsc2UgeworICAgICAgICByZXR1cm4gb3B0aW9u
cy5mbih0aGlzKTsKKyAgICAgIH0KKyAgICB9KTsKKworICAgIGluc3RhbmNlLnJlZ2lzdGVySGVs
cGVyKCd1bmxlc3MnLCBmdW5jdGlvbiAoY29uZGl0aW9uYWwsIG9wdGlvbnMpIHsKKyAgICAgIHJl
dHVybiBpbnN0YW5jZS5oZWxwZXJzWydpZiddLmNhbGwodGhpcywgY29uZGl0aW9uYWwsIHsgZm46
IG9wdGlvbnMuaW52ZXJzZSwgaW52ZXJzZTogb3B0aW9ucy5mbiwgaGFzaDogb3B0aW9ucy5oYXNo
IH0pOworICAgIH0pOworICB9OworfSk7CisvLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxp
Y2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSWk0dUx5
NHVMeTR1THk0dUwyeHBZaTlvWVc1a2JHVmlZWEp6TDJobGJIQmxjbk12YVdZdWFuTWlYU3dpYm1G
dFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqczdPMjFDUVVWbExGVkJRVk1zVVVGQlVTeEZRVUZG
TzBGQlEyaERMRmxCUVZFc1EwRkJReXhqUVVGakxFTkJRVU1zU1VGQlNTeEZRVUZGTEZWQlFWTXNW
MEZCVnl4RlFVRkZMRTlCUVU4c1JVRkJSVHRCUVVNelJDeFZRVUZKTEU5QlNsTXNWVUZCVlN4RFFV
bFNMRmRCUVZjc1EwRkJReXhGUVVGRk8wRkJRVVVzYlVKQlFWY3NSMEZCUnl4WFFVRlhMRU5CUVVN
c1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzA5QlFVVTdPenM3TzBGQlMzUkZMRlZC
UVVrc1FVRkJReXhEUVVGRExFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNWMEZCVnl4SlFVRkpM
RU5CUVVNc1YwRkJWeXhKUVVGTExFOUJWQzlETEU5QlFVOHNRMEZUWjBRc1YwRkJWeXhEUVVGRExF
VkJRVVU3UVVGRGRrVXNaVUZCVHl4UFFVRlBMRU5CUVVNc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBG
QlF5eERRVUZETzA5QlF6bENMRTFCUVUwN1FVRkRUQ3hsUVVGUExFOUJRVThzUTBGQlF5eEZRVUZG
TEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1QwRkRla0k3UzBGRFJpeERRVUZETEVOQlFVTTdP
MEZCUlVnc1dVRkJVU3hEUVVGRExHTkJRV01zUTBGQlF5eFJRVUZSTEVWQlFVVXNWVUZCVXl4WFFV
RlhMRVZCUVVVc1QwRkJUeXhGUVVGRk8wRkJReTlFTEdGQlFVOHNVVUZCVVN4RFFVRkRMRTlCUVU4
c1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RlFVRkZMRmRC
UVZjc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlJTeFBRVUZQTEVOQlFVTXNUMEZCVHl4RlFVRkZM
RTlCUVU4c1JVRkJSU3hQUVVGUExFTkJRVU1zUlVGQlJTeEZRVUZGTEVsQlFVa3NSVUZCUlN4UFFV
RlBMRU5CUVVNc1NVRkJTU3hGUVVGRExFTkJRVU1zUTBGQlF6dExRVU4yU0N4RFFVRkRMRU5CUVVN
N1IwRkRTaUlzSW1acGJHVWlPaUpwWmk1cWN5SXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0
Y0c5eWRDQjdhWE5GYlhCMGVTd2dhWE5HZFc1amRHbHZibjBnWm5KdmJTQW5MaTR2ZFhScGJITW5P
MXh1WEc1bGVIQnZjblFnWkdWbVlYVnNkQ0JtZFc1amRHbHZiaWhwYm5OMFlXNWpaU2tnZTF4dUlD
QnBibk4wWVc1alpTNXlaV2RwYzNSbGNraGxiSEJsY2lnbmFXWW5MQ0JtZFc1amRHbHZiaWhqYjI1
a2FYUnBiMjVoYkN3Z2IzQjBhVzl1Y3lrZ2UxeHVJQ0FnSUdsbUlDaHBjMFoxYm1OMGFXOXVLR052
Ym1ScGRHbHZibUZzS1NrZ2V5QmpiMjVrYVhScGIyNWhiQ0E5SUdOdmJtUnBkR2x2Ym1Gc0xtTmhi
R3dvZEdocGN5azdJSDFjYmx4dUlDQWdJQzh2SUVSbFptRjFiSFFnWW1Wb1lYWnBiM0lnYVhNZ2RH
OGdjbVZ1WkdWeUlIUm9aU0J3YjNOcGRHbDJaU0J3WVhSb0lHbG1JSFJvWlNCMllXeDFaU0JwY3lC
MGNuVjBhSGtnWVc1a0lHNXZkQ0JsYlhCMGVTNWNiaUFnSUNBdkx5QlVhR1VnWUdsdVkyeDFaR1Zh
WlhKdllDQnZjSFJwYjI0Z2JXRjVJR0psSUhObGRDQjBieUIwY21WaGRDQjBhR1VnWTI5dVpIUnBi
MjVoYkNCaGN5QndkWEpsYkhrZ2JtOTBJR1Z0Y0hSNUlHSmhjMlZrSUc5dUlIUm9aVnh1SUNBZ0lD
OHZJR0psYUdGMmFXOXlJRzltSUdselJXMXdkSGt1SUVWbVptVmpkR2wyWld4NUlIUm9hWE1nWkdW
MFpYSnRhVzVsY3lCcFppQXdJR2x6SUdoaGJtUnNaV1FnWW5rZ2RHaGxJSEJ2YzJsMGFYWmxJSEJo
ZEdnZ2IzSWdibVZuWVhScGRtVXVYRzRnSUNBZ2FXWWdLQ2doYjNCMGFXOXVjeTVvWVhOb0xtbHVZ
MngxWkdWYVpYSnZJQ1ltSUNGamIyNWthWFJwYjI1aGJDa2dmSHdnYVhORmJYQjBlU2hqYjI1a2FY
UnBiMjVoYkNrcElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlCdmNIUnBiMjV6TG1sdWRtVnljMlVvZEdo
cGN5azdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJ2Y0hScGIyNXpMbVp1
S0hSb2FYTXBPMXh1SUNBZ0lIMWNiaUFnZlNrN1hHNWNiaUFnYVc1emRHRnVZMlV1Y21WbmFYTjBa
WEpJWld4d1pYSW9KM1Z1YkdWemN5Y3NJR1oxYm1OMGFXOXVLR052Ym1ScGRHbHZibUZzTENCdmNI
UnBiMjV6S1NCN1hHNGdJQ0FnY21WMGRYSnVJR2x1YzNSaGJtTmxMbWhsYkhCbGNuTmJKMmxtSjEw
dVkyRnNiQ2gwYUdsekxDQmpiMjVrYVhScGIyNWhiQ3dnZTJadU9pQnZjSFJwYjI1ekxtbHVkbVZ5
YzJVc0lHbHVkbVZ5YzJVNklHOXdkR2x2Ym5NdVptNHNJR2hoYzJnNklHOXdkR2x2Ym5NdWFHRnph
SDBwTzF4dUlDQjlLVHRjYm4xY2JpSmRmUT09CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVl
cnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9hbWQvaGFuZGxlYmFycy9oZWxwZXJzL2xv
Zy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2Ft
ZC9oYW5kbGViYXJzL2hlbHBlcnMvbG9nLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdlYTkwODAzZDExZTU4YTRh
ZWY0ZGRhMGExZDFhMjQxMzZmY2JmM2YKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9q
cXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9hbWQvaGFuZGxlYmFycy9oZWxwZXJz
L2xvZy5qcwpAQCAtMCwwICsxLDI0IEBACitkZWZpbmUoWydleHBvcnRzJywgJ21vZHVsZSddLCBm
dW5jdGlvbiAoZXhwb3J0cywgbW9kdWxlKSB7CisgICd1c2Ugc3RyaWN0JzsKKworICBtb2R1bGUu
ZXhwb3J0cyA9IGZ1bmN0aW9uIChpbnN0YW5jZSkgeworICAgIGluc3RhbmNlLnJlZ2lzdGVySGVs
cGVyKCdsb2cnLCBmdW5jdGlvbiAoKSAvKiBtZXNzYWdlLCBvcHRpb25zICoveworICAgICAgdmFy
IGFyZ3MgPSBbdW5kZWZpbmVkXSwKKyAgICAgICAgICBvcHRpb25zID0gYXJndW1lbnRzW2FyZ3Vt
ZW50cy5sZW5ndGggLSAxXTsKKyAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxl
bmd0aCAtIDE7IGkrKykgeworICAgICAgICBhcmdzLnB1c2goYXJndW1lbnRzW2ldKTsKKyAgICAg
IH0KKworICAgICAgdmFyIGxldmVsID0gMTsKKyAgICAgIGlmIChvcHRpb25zLmhhc2gubGV2ZWwg
IT0gbnVsbCkgeworICAgICAgICBsZXZlbCA9IG9wdGlvbnMuaGFzaC5sZXZlbDsKKyAgICAgIH0g
ZWxzZSBpZiAob3B0aW9ucy5kYXRhICYmIG9wdGlvbnMuZGF0YS5sZXZlbCAhPSBudWxsKSB7Cisg
ICAgICAgIGxldmVsID0gb3B0aW9ucy5kYXRhLmxldmVsOworICAgICAgfQorICAgICAgYXJnc1sw
XSA9IGxldmVsOworCisgICAgICBpbnN0YW5jZS5sb2cuYXBwbHkoaW5zdGFuY2UsIGFyZ3MpOwor
ICAgIH0pOworICB9OworfSk7CisvLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9u
L2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMeTR1
THk0dUwyeHBZaTlvWVc1a2JHVmlZWEp6TDJobGJIQmxjbk12Ykc5bkxtcHpJbDBzSW01aGJXVnpJ
anBiWFN3aWJXRndjR2x1WjNNaU9pSTdPenR0UWtGQlpTeFZRVUZUTEZGQlFWRXNSVUZCUlR0QlFV
Tm9ReXhaUVVGUkxFTkJRVU1zWTBGQll5eERRVUZETEV0QlFVc3NSVUZCUlN4clEwRkJhVU03UVVG
RE9VUXNWVUZCU1N4SlFVRkpMRWRCUVVjc1EwRkJReXhUUVVGVExFTkJRVU03VlVGRGJFSXNUMEZC
VHl4SFFVRkhMRk5CUVZNc1EwRkJReXhUUVVGVExFTkJRVU1zVFVGQlRTeEhRVUZITEVOQlFVTXNR
MEZCUXl4RFFVRkRPMEZCUXpsRExGZEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFV
RkZMRU5CUVVNc1IwRkJSeXhUUVVGVExFTkJRVU1zVFVGQlRTeEhRVUZITEVOQlFVTXNSVUZCUlN4
RFFVRkRMRVZCUVVVc1JVRkJSVHRCUVVNM1F5eFpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRk5C
UVZNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzA5QlEzcENPenRCUVVWRUxGVkJR
VWtzUzBGQlN5eEhRVUZITEVOQlFVTXNRMEZCUXp0QlFVTmtMRlZCUVVrc1QwRkJUeXhEUVVGRExF
bEJRVWtzUTBGQlF5eExRVUZMTEVsQlFVa3NTVUZCU1N4RlFVRkZPMEZCUXpsQ0xHRkJRVXNzUjBG
QlJ5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJRenRQUVVNMVFpeE5RVUZO
TEVsQlFVa3NUMEZCVHl4RFFVRkRMRWxCUVVrc1NVRkJTU3hQUVVGUExFTkJRVU1zU1VGQlNTeERR
VUZETEV0QlFVc3NTVUZCU1N4SlFVRkpMRVZCUVVVN1FVRkRja1FzWVVGQlN5eEhRVUZITEU5QlFV
OHNRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRE8wOUJRelZDTzBGQlEwUXNWVUZCU1N4
RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFdEJRVXNzUTBGQlF6czdRVUZGYUVJc1kwRkJVU3hE
UVVGRExFZEJRVWNzVFVGQlFTeERRVUZhTEZGQlFWRXNSVUZCVXl4SlFVRkpMRU5CUVVNc1EwRkJR
enRMUVVONFFpeERRVUZETEVOQlFVTTdSMEZEU2lJc0ltWnBiR1VpT2lKc2IyY3Vhbk1pTENKemIz
VnlZMlZ6UTI5dWRHVnVkQ0k2V3lKbGVIQnZjblFnWkdWbVlYVnNkQ0JtZFc1amRHbHZiaWhwYm5O
MFlXNWpaU2tnZTF4dUlDQnBibk4wWVc1alpTNXlaV2RwYzNSbGNraGxiSEJsY2lnbmJHOW5KeXdn
Wm5WdVkzUnBiMjRvTHlvZ2JXVnpjMkZuWlN3Z2IzQjBhVzl1Y3lBcUx5a2dlMXh1SUNBZ0lHeGxk
Q0JoY21keklEMGdXM1Z1WkdWbWFXNWxaRjBzWEc0Z0lDQWdJQ0FnSUc5d2RHbHZibk1nUFNCaGNt
ZDFiV1Z1ZEhOYllYSm5kVzFsYm5SekxteGxibWQwYUNBdElERmRPMXh1SUNBZ0lHWnZjaUFvYkdW
MElHa2dQU0F3T3lCcElEd2dZWEpuZFcxbGJuUnpMbXhsYm1kMGFDQXRJREU3SUdrckt5a2dlMXh1
SUNBZ0lDQWdZWEpuY3k1d2RYTm9LR0Z5WjNWdFpXNTBjMXRwWFNrN1hHNGdJQ0FnZlZ4dVhHNGdJ
Q0FnYkdWMElHeGxkbVZzSUQwZ01UdGNiaUFnSUNCcFppQW9iM0IwYVc5dWN5NW9ZWE5vTG14bGRt
VnNJQ0U5SUc1MWJHd3BJSHRjYmlBZ0lDQWdJR3hsZG1Wc0lEMGdiM0IwYVc5dWN5NW9ZWE5vTG14
bGRtVnNPMXh1SUNBZ0lIMGdaV3h6WlNCcFppQW9iM0IwYVc5dWN5NWtZWFJoSUNZbUlHOXdkR2x2
Ym5NdVpHRjBZUzVzWlhabGJDQWhQU0J1ZFd4c0tTQjdYRzRnSUNBZ0lDQnNaWFpsYkNBOUlHOXdk
R2x2Ym5NdVpHRjBZUzVzWlhabGJEdGNiaUFnSUNCOVhHNGdJQ0FnWVhKbmMxc3dYU0E5SUd4bGRt
VnNPMXh1WEc0Z0lDQWdhVzV6ZEdGdVkyVXViRzluS0M0dUxpQmhjbWR6S1R0Y2JpQWdmU2s3WEc1
OVhHNGlYWDA9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hh
bmRsZWJhcnMvZGlzdC9hbWQvaGFuZGxlYmFycy9oZWxwZXJzL2xvb2t1cC5qcyBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2FtZC9oYW5kbGViYXJzL2hl
bHBlcnMvbG9va3VwLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhlZDc5YzZlNzZkOGQzYzFmZThjODVlM2Q0MTAy
MWIxYzExMWNiOGEKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9t
b2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9hbWQvaGFuZGxlYmFycy9oZWxwZXJzL2xvb2t1cC5qcwpA
QCAtMCwwICsxLDEwIEBACitkZWZpbmUoWydleHBvcnRzJywgJ21vZHVsZSddLCBmdW5jdGlvbiAo
ZXhwb3J0cywgbW9kdWxlKSB7CisgICd1c2Ugc3RyaWN0JzsKKworICBtb2R1bGUuZXhwb3J0cyA9
IGZ1bmN0aW9uIChpbnN0YW5jZSkgeworICAgIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCdsb29r
dXAnLCBmdW5jdGlvbiAob2JqLCBmaWVsZCkgeworICAgICAgcmV0dXJuIG9iaiAmJiBvYmpbZmll
bGRdOworICAgIH0pOworICB9OworfSk7CisvLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxp
Y2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSWk0dUx5
NHVMeTR1THk0dUwyeHBZaTlvWVc1a2JHVmlZWEp6TDJobGJIQmxjbk12Ykc5dmEzVndMbXB6SWww
c0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3T3p0dFFrRkJaU3hWUVVGVExGRkJRVkVz
UlVGQlJUdEJRVU5vUXl4WlFVRlJMRU5CUVVNc1kwRkJZeXhEUVVGRExGRkJRVkVzUlVGQlJTeFZR
VUZUTEVkQlFVY3NSVUZCUlN4TFFVRkxMRVZCUVVVN1FVRkRja1FzWVVGQlR5eEhRVUZITEVsQlFV
a3NSMEZCUnl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE8wdEJRekZDTEVOQlFVTXNRMEZCUXp0
SFFVTktJaXdpWm1sc1pTSTZJbXh2YjJ0MWNDNXFjeUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBi
SW1WNGNHOXlkQ0JrWldaaGRXeDBJR1oxYm1OMGFXOXVLR2x1YzNSaGJtTmxLU0I3WEc0Z0lHbHVj
M1JoYm1ObExuSmxaMmx6ZEdWeVNHVnNjR1Z5S0Nkc2IyOXJkWEFuTENCbWRXNWpkR2x2Ymlodllt
b3NJR1pwWld4a0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUc5aWFpQW1KaUJ2WW1wYlptbGxiR1JkTzF4
dUlDQjlLVHRjYm4xY2JpSmRmUT09CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9k
ZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9hbWQvaGFuZGxlYmFycy9oZWxwZXJzL3dpdGguanMg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9hbWQvaGFu
ZGxlYmFycy9oZWxwZXJzL3dpdGguanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTQyOGJhYzZiMjQ5ZTY4MWQ5ZWM4
Njg5MDMzMGI3NGM3ZTZmYjI5OQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVy
eS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2FtZC9oYW5kbGViYXJzL2hlbHBlcnMvd2l0
aC5qcwpAQCAtMCwwICsxLDI5IEBACitkZWZpbmUoWydleHBvcnRzJywgJ21vZHVsZScsICcuLi91
dGlscyddLCBmdW5jdGlvbiAoZXhwb3J0cywgbW9kdWxlLCBfdXRpbHMpIHsKKyAgJ3VzZSBzdHJp
Y3QnOworCisgIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGluc3RhbmNlKSB7CisgICAgaW5z
dGFuY2UucmVnaXN0ZXJIZWxwZXIoJ3dpdGgnLCBmdW5jdGlvbiAoY29udGV4dCwgb3B0aW9ucykg
eworICAgICAgaWYgKF91dGlscy5pc0Z1bmN0aW9uKGNvbnRleHQpKSB7CisgICAgICAgIGNvbnRl
eHQgPSBjb250ZXh0LmNhbGwodGhpcyk7CisgICAgICB9CisKKyAgICAgIHZhciBmbiA9IG9wdGlv
bnMuZm47CisKKyAgICAgIGlmICghX3V0aWxzLmlzRW1wdHkoY29udGV4dCkpIHsKKyAgICAgICAg
dmFyIGRhdGEgPSBvcHRpb25zLmRhdGE7CisgICAgICAgIGlmIChvcHRpb25zLmRhdGEgJiYgb3B0
aW9ucy5pZHMpIHsKKyAgICAgICAgICBkYXRhID0gX3V0aWxzLmNyZWF0ZUZyYW1lKG9wdGlvbnMu
ZGF0YSk7CisgICAgICAgICAgZGF0YS5jb250ZXh0UGF0aCA9IF91dGlscy5hcHBlbmRDb250ZXh0
UGF0aChvcHRpb25zLmRhdGEuY29udGV4dFBhdGgsIG9wdGlvbnMuaWRzWzBdKTsKKyAgICAgICAg
fQorCisgICAgICAgIHJldHVybiBmbihjb250ZXh0LCB7CisgICAgICAgICAgZGF0YTogZGF0YSwK
KyAgICAgICAgICBibG9ja1BhcmFtczogX3V0aWxzLmJsb2NrUGFyYW1zKFtjb250ZXh0XSwgW2Rh
dGEgJiYgZGF0YS5jb250ZXh0UGF0aF0pCisgICAgICAgIH0pOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgcmV0dXJuIG9wdGlvbnMuaW52ZXJzZSh0aGlzKTsKKyAgICAgIH0KKyAgICB9KTsKKyAg
fTsKK30pOworLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2
NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYklpNHVMeTR1THk0dUx5NHVMMnhwWWk5
b1lXNWtiR1ZpWVhKekwyaGxiSEJsY25NdmQybDBhQzVxY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFo
Y0hCcGJtZHpJam9pT3pzN2JVSkJSV1VzVlVGQlV5eFJRVUZSTEVWQlFVVTdRVUZEYUVNc1dVRkJV
U3hEUVVGRExHTkJRV01zUTBGQlF5eE5RVUZOTEVWQlFVVXNWVUZCVXl4UFFVRlBMRVZCUVVVc1Qw
RkJUeXhGUVVGRk8wRkJRM3BFTEZWQlFVa3NUMEZLYzBRc1ZVRkJWU3hEUVVseVJDeFBRVUZQTEVO
QlFVTXNSVUZCUlR0QlFVRkZMR1ZCUVU4c1IwRkJSeXhQUVVGUExFTkJRVU1zU1VGQlNTeERRVUZE
TEVsQlFVa3NRMEZCUXl4RFFVRkRPMDlCUVVVN08wRkJSVEZFTEZWQlFVa3NSVUZCUlN4SFFVRkhM
RTlCUVU4c1EwRkJReXhGUVVGRkxFTkJRVU03TzBGQlJYQkNMRlZCUVVrc1EwRkJReXhQUVZJMFF5
eFBRVUZQTEVOQlVUTkRMRTlCUVU4c1EwRkJReXhGUVVGRk8wRkJRM0pDTEZsQlFVa3NTVUZCU1N4
SFFVRkhMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU03UVVGRGVFSXNXVUZCU1N4UFFVRlBMRU5C
UVVNc1NVRkJTU3hKUVVGSkxFOUJRVThzUTBGQlF5eEhRVUZITEVWQlFVVTdRVUZETDBJc1kwRkJT
U3hIUVVGSExFOUJXSGxDTEZkQlFWY3NRMEZYZUVJc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5
eERRVUZETzBGQlEycERMR05CUVVrc1EwRkJReXhYUVVGWExFZEJRVWNzVDBGYWJrSXNhVUpCUVds
Q0xFTkJXVzlDTEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1YwRkJWeXhGUVVGRkxFOUJRVThz
UTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRUUVVOb1JqczdR
VUZGUkN4bFFVRlBMRVZCUVVVc1EwRkJReXhQUVVGUExFVkJRVVU3UVVGRGFrSXNZMEZCU1N4RlFV
RkZMRWxCUVVrN1FVRkRWaXh4UWtGQlZ5eEZRVUZGTEU5QmFrSk5MRmRCUVZjc1EwRnBRa3dzUTBG
QlF5eFBRVUZQTEVOQlFVTXNSVUZCUlN4RFFVRkRMRWxCUVVrc1NVRkJTU3hKUVVGSkxFTkJRVU1z
VjBGQlZ5eERRVUZETEVOQlFVTTdVMEZEYUVVc1EwRkJReXhEUVVGRE8wOUJRMG9zVFVGQlRUdEJR
VU5NTEdWQlFVOHNUMEZCVHl4RFFVRkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6
dFBRVU01UWp0TFFVTkdMRU5CUVVNc1EwRkJRenRIUVVOS0lpd2labWxzWlNJNkluZHBkR2d1YW5N
aUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SnBiWEJ2Y25RZ2UyRndjR1Z1WkVOdmJuUmxlSFJR
WVhSb0xDQmliRzlqYTFCaGNtRnRjeXdnWTNKbFlYUmxSbkpoYldVc0lHbHpSVzF3ZEhrc0lHbHpS
blZ1WTNScGIyNTlJR1p5YjIwZ0p5NHVMM1YwYVd4ekp6dGNibHh1Wlhod2IzSjBJR1JsWm1GMWJI
UWdablZ1WTNScGIyNG9hVzV6ZEdGdVkyVXBJSHRjYmlBZ2FXNXpkR0Z1WTJVdWNtVm5hWE4wWlhK
SVpXeHdaWElvSjNkcGRHZ25MQ0JtZFc1amRHbHZiaWhqYjI1MFpYaDBMQ0J2Y0hScGIyNXpLU0I3
WEc0Z0lDQWdhV1lnS0dselJuVnVZM1JwYjI0b1kyOXVkR1Y0ZENrcElIc2dZMjl1ZEdWNGRDQTlJ
R052Ym5SbGVIUXVZMkZzYkNoMGFHbHpLVHNnZlZ4dVhHNGdJQ0FnYkdWMElHWnVJRDBnYjNCMGFX
OXVjeTVtYmp0Y2JseHVJQ0FnSUdsbUlDZ2hhWE5GYlhCMGVTaGpiMjUwWlhoMEtTa2dlMXh1SUNB
Z0lDQWdiR1YwSUdSaGRHRWdQU0J2Y0hScGIyNXpMbVJoZEdFN1hHNGdJQ0FnSUNCcFppQW9iM0Iw
YVc5dWN5NWtZWFJoSUNZbUlHOXdkR2x2Ym5NdWFXUnpLU0I3WEc0Z0lDQWdJQ0FnSUdSaGRHRWdQ
U0JqY21WaGRHVkdjbUZ0WlNodmNIUnBiMjV6TG1SaGRHRXBPMXh1SUNBZ0lDQWdJQ0JrWVhSaExt
TnZiblJsZUhSUVlYUm9JRDBnWVhCd1pXNWtRMjl1ZEdWNGRGQmhkR2dvYjNCMGFXOXVjeTVrWVhS
aExtTnZiblJsZUhSUVlYUm9MQ0J2Y0hScGIyNXpMbWxrYzFzd1hTazdYRzRnSUNBZ0lDQjlYRzVj
YmlBZ0lDQWdJSEpsZEhWeWJpQm1iaWhqYjI1MFpYaDBMQ0I3WEc0Z0lDQWdJQ0FnSUdSaGRHRTZJ
R1JoZEdFc1hHNGdJQ0FnSUNBZ0lHSnNiMk5yVUdGeVlXMXpPaUJpYkc5amExQmhjbUZ0Y3loYlky
OXVkR1Y0ZEYwc0lGdGtZWFJoSUNZbUlHUmhkR0V1WTI5dWRHVjRkRkJoZEdoZEtWeHVJQ0FnSUNB
Z2ZTazdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJ2Y0hScGIyNXpMbWx1
ZG1WeWMyVW9kR2hwY3lrN1hHNGdJQ0FnZlZ4dUlDQjlLVHRjYm4xY2JpSmRmUT09CmRpZmYgLS1n
aXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9hbWQv
aGFuZGxlYmFycy9sb2dnZXIuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hh
bmRsZWJhcnMvZGlzdC9hbWQvaGFuZGxlYmFycy9sb2dnZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzc4NmVk
YWE0MDEyNGJiMDYzODE1NmU0OTA4ZmI5NWQ1OTEzOWMwYQotLS0gL2Rldi9udWxsCisrKyBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2FtZC9oYW5kbGVi
YXJzL2xvZ2dlci5qcwpAQCAtMCwwICsxLDQ0IEBACitkZWZpbmUoWydleHBvcnRzJywgJ21vZHVs
ZScsICcuL3V0aWxzJ10sIGZ1bmN0aW9uIChleHBvcnRzLCBtb2R1bGUsIF91dGlscykgeworICAn
dXNlIHN0cmljdCc7CisKKyAgdmFyIGxvZ2dlciA9IHsKKyAgICBtZXRob2RNYXA6IFsnZGVidWcn
LCAnaW5mbycsICd3YXJuJywgJ2Vycm9yJ10sCisgICAgbGV2ZWw6ICdpbmZvJywKKworICAgIC8v
IE1hcHMgYSBnaXZlbiBsZXZlbCB2YWx1ZSB0byB0aGUgYG1ldGhvZE1hcGAgaW5kZXhlcyBhYm92
ZS4KKyAgICBsb29rdXBMZXZlbDogZnVuY3Rpb24gbG9va3VwTGV2ZWwobGV2ZWwpIHsKKyAgICAg
IGlmICh0eXBlb2YgbGV2ZWwgPT09ICdzdHJpbmcnKSB7CisgICAgICAgIHZhciBsZXZlbE1hcCA9
IF91dGlscy5pbmRleE9mKGxvZ2dlci5tZXRob2RNYXAsIGxldmVsLnRvTG93ZXJDYXNlKCkpOwor
ICAgICAgICBpZiAobGV2ZWxNYXAgPj0gMCkgeworICAgICAgICAgIGxldmVsID0gbGV2ZWxNYXA7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgbGV2ZWwgPSBwYXJzZUludChsZXZlbCwgMTAp
OworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIHJldHVybiBsZXZlbDsKKyAgICB9LAorCisg
ICAgLy8gQ2FuIGJlIG92ZXJyaWRkZW4gaW4gdGhlIGhvc3QgZW52aXJvbm1lbnQKKyAgICBsb2c6
IGZ1bmN0aW9uIGxvZyhsZXZlbCkgeworICAgICAgbGV2ZWwgPSBsb2dnZXIubG9va3VwTGV2ZWwo
bGV2ZWwpOworCisgICAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnICYmIGxv
Z2dlci5sb29rdXBMZXZlbChsb2dnZXIubGV2ZWwpIDw9IGxldmVsKSB7CisgICAgICAgIHZhciBt
ZXRob2QgPSBsb2dnZXIubWV0aG9kTWFwW2xldmVsXTsKKyAgICAgICAgaWYgKCFjb25zb2xlW21l
dGhvZF0pIHsKKyAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnNvbGUKKyAg
ICAgICAgICBtZXRob2QgPSAnbG9nJzsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAodmFyIF9s
ZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBtZXNzYWdlID0gQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0g
MSA6IDApLCBfa2V5ID0gMTsgX2tleSA8IF9sZW47IF9rZXkrKykgeworICAgICAgICAgIG1lc3Nh
Z2VbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldOworICAgICAgICB9CisKKyAgICAgICAgY29u
c29sZVttZXRob2RdLmFwcGx5KGNvbnNvbGUsIG1lc3NhZ2UpOyAvLyBlc2xpbnQtZGlzYWJsZS1s
aW5lIG5vLWNvbnNvbGUKKyAgICAgIH0KKyAgICB9CisgIH07CisKKyAgbW9kdWxlLmV4cG9ydHMg
PSBsb2dnZXI7Cit9KTsKKy8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNv
bjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUx5NHVMMnhw
WWk5b1lXNWtiR1ZpWVhKekwyeHZaMmRsY2k1cWN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBi
bWR6SWpvaU96czdRVUZGUVN4TlFVRkpMRTFCUVUwc1IwRkJSenRCUVVOWUxHRkJRVk1zUlVGQlJT
eERRVUZETEU5QlFVOHNSVUZCUlN4TlFVRk5MRVZCUVVVc1RVRkJUU3hGUVVGRkxFOUJRVThzUTBG
QlF6dEJRVU0zUXl4VFFVRkxMRVZCUVVVc1RVRkJUVHM3TzBGQlIySXNaVUZCVnl4RlFVRkZMSEZD
UVVGVExFdEJRVXNzUlVGQlJUdEJRVU16UWl4VlFVRkpMRTlCUVU4c1MwRkJTeXhMUVVGTExGRkJR
VkVzUlVGQlJUdEJRVU0zUWl4WlFVRkpMRkZCUVZFc1IwRkJSeXhQUVZSaUxFOUJRVThzUTBGVFl5
eE5RVUZOTEVOQlFVTXNVMEZCVXl4RlFVRkZMRXRCUVVzc1EwRkJReXhYUVVGWExFVkJRVVVzUTBG
QlF5eERRVUZETzBGQlF6bEVMRmxCUVVrc1VVRkJVU3hKUVVGSkxFTkJRVU1zUlVGQlJUdEJRVU5x
UWl4bFFVRkxMRWRCUVVjc1VVRkJVU3hEUVVGRE8xTkJRMnhDTEUxQlFVMDdRVUZEVEN4bFFVRkxM
RWRCUVVjc1VVRkJVU3hEUVVGRExFdEJRVXNzUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXp0VFFV
TTNRanRQUVVOR096dEJRVVZFTEdGQlFVOHNTMEZCU3l4RFFVRkRPMHRCUTJRN096dEJRVWRFTEU5
QlFVY3NSVUZCUlN4aFFVRlRMRXRCUVVzc1JVRkJZenRCUVVNdlFpeFhRVUZMTEVkQlFVY3NUVUZC
VFN4RFFVRkRMRmRCUVZjc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6czdRVUZGYkVNc1ZVRkJT
U3hQUVVGUExFOUJRVThzUzBGQlN5eFhRVUZYTEVsQlFVa3NUVUZCVFN4RFFVRkRMRmRCUVZjc1Ew
RkJReXhOUVVGTkxFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NTMEZCU3l4RlFVRkZPMEZCUXk5
RkxGbEJRVWtzVFVGQlRTeEhRVUZITEUxQlFVMHNRMEZCUXl4VFFVRlRMRU5CUVVNc1MwRkJTeXhE
UVVGRExFTkJRVU03UVVGRGNrTXNXVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhOUVVGTkxFTkJR
VU1zUlVGQlJUczdRVUZEY0VJc1owSkJRVTBzUjBGQlJ5eExRVUZMTEVOQlFVTTdVMEZEYUVJN096
QkRRVkJ0UWl4UFFVRlBPMEZCUVZBc2FVSkJRVTg3T3p0QlFWRXpRaXhsUVVGUExFTkJRVU1zVFVG
QlRTeFBRVUZETEVOQlFXWXNUMEZCVHl4RlFVRlpMRTlCUVU4c1EwRkJReXhEUVVGRE8wOUJRemRD
TzB0QlEwWTdSMEZEUml4RFFVRkRPenR0UWtGRllTeE5RVUZOSWl3aVptbHNaU0k2SW14dloyZGxj
aTVxY3lJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENCN2FXNWtaWGhQWm4wZ1pu
SnZiU0FuTGk5MWRHbHNjeWM3WEc1Y2JteGxkQ0JzYjJkblpYSWdQU0I3WEc0Z0lHMWxkR2h2WkUx
aGNEb2dXeWRrWldKMVp5Y3NJQ2RwYm1adkp5d2dKM2RoY200bkxDQW5aWEp5YjNJblhTeGNiaUFn
YkdWMlpXdzZJQ2RwYm1adkp5eGNibHh1SUNBdkx5Qk5ZWEJ6SUdFZ1oybDJaVzRnYkdWMlpXd2dk
bUZzZFdVZ2RHOGdkR2hsSUdCdFpYUm9iMlJOWVhCZ0lHbHVaR1Y0WlhNZ1lXSnZkbVV1WEc0Z0lH
eHZiMnQxY0V4bGRtVnNPaUJtZFc1amRHbHZiaWhzWlhabGJDa2dlMXh1SUNBZ0lHbG1JQ2gwZVhC
bGIyWWdiR1YyWld3Z1BUMDlJQ2R6ZEhKcGJtY25LU0I3WEc0Z0lDQWdJQ0JzWlhRZ2JHVjJaV3hO
WVhBZ1BTQnBibVJsZUU5bUtHeHZaMmRsY2k1dFpYUm9iMlJOWVhBc0lHeGxkbVZzTG5SdlRHOTNa
WEpEWVhObEtDa3BPMXh1SUNBZ0lDQWdhV1lnS0d4bGRtVnNUV0Z3SUQ0OUlEQXBJSHRjYmlBZ0lD
QWdJQ0FnYkdWMlpXd2dQU0JzWlhabGJFMWhjRHRjYmlBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNB
Z0lDQWdJR3hsZG1Wc0lEMGdjR0Z5YzJWSmJuUW9iR1YyWld3c0lERXdLVHRjYmlBZ0lDQWdJSDFj
YmlBZ0lDQjlYRzVjYmlBZ0lDQnlaWFIxY200Z2JHVjJaV3c3WEc0Z0lIMHNYRzVjYmlBZ0x5OGdR
MkZ1SUdKbElHOTJaWEp5YVdSa1pXNGdhVzRnZEdobElHaHZjM1FnWlc1MmFYSnZibTFsYm5SY2Jp
QWdiRzluT2lCbWRXNWpkR2x2Ymloc1pYWmxiQ3dnTGk0dWJXVnpjMkZuWlNrZ2UxeHVJQ0FnSUd4
bGRtVnNJRDBnYkc5bloyVnlMbXh2YjJ0MWNFeGxkbVZzS0d4bGRtVnNLVHRjYmx4dUlDQWdJR2xt
SUNoMGVYQmxiMllnWTI5dWMyOXNaU0FoUFQwZ0ozVnVaR1ZtYVc1bFpDY2dKaVlnYkc5bloyVnlM
bXh2YjJ0MWNFeGxkbVZzS0d4dloyZGxjaTVzWlhabGJDa2dQRDBnYkdWMlpXd3BJSHRjYmlBZ0lD
QWdJR3hsZENCdFpYUm9iMlFnUFNCc2IyZG5aWEl1YldWMGFHOWtUV0Z3VzJ4bGRtVnNYVHRjYmlB
Z0lDQWdJR2xtSUNnaFkyOXVjMjlzWlZ0dFpYUm9iMlJkS1NCN0lDQWdMeThnWlhOc2FXNTBMV1Jw
YzJGaWJHVXRiR2x1WlNCdWJ5MWpiMjV6YjJ4bFhHNGdJQ0FnSUNBZ0lHMWxkR2h2WkNBOUlDZHNi
MmNuTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnWTI5dWMyOXNaVnR0WlhSb2IyUmRLQzR1TG0xbGMz
TmhaMlVwT3lBZ0lDQXZMeUJsYzJ4cGJuUXRaR2x6WVdKc1pTMXNhVzVsSUc1dkxXTnZibk52YkdW
Y2JpQWdJQ0I5WEc0Z0lIMWNibjA3WEc1Y2JtVjRjRzl5ZENCa1pXWmhkV3gwSUd4dloyZGxjanRj
YmlKZGZRPT0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFu
ZGxlYmFycy9kaXN0L2FtZC9oYW5kbGViYXJzL25vLWNvbmZsaWN0LmpzIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
anF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvYW1kL2hhbmRsZWJhcnMvbm8tY29u
ZmxpY3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNTY3ZmYyYjgxZDg1NDMxODFiZDRkMTQwNzVlMTY1NWQ3OWRk
NjQ4ZAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMv
aGFuZGxlYmFycy9kaXN0L2FtZC9oYW5kbGViYXJzL25vLWNvbmZsaWN0LmpzCkBAIC0wLDAgKzEs
MTggQEAKK2RlZmluZShbJ2V4cG9ydHMnLCAnbW9kdWxlJ10sIGZ1bmN0aW9uIChleHBvcnRzLCBt
b2R1bGUpIHsKKyAgLyogZ2xvYmFsIHdpbmRvdyAqLworICAndXNlIHN0cmljdCc7CisKKyAgbW9k
dWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoSGFuZGxlYmFycykgeworICAgIC8qIGlzdGFuYnVsIGln
bm9yZSBuZXh0ICovCisgICAgdmFyIHJvb3QgPSB0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVk
JyA/IGdsb2JhbCA6IHdpbmRvdywKKyAgICAgICAgJEhhbmRsZWJhcnMgPSByb290LkhhbmRsZWJh
cnM7CisgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8KKyAgICBIYW5kbGViYXJzLm5vQ29u
ZmxpY3QgPSBmdW5jdGlvbiAoKSB7CisgICAgICBpZiAocm9vdC5IYW5kbGViYXJzID09PSBIYW5k
bGViYXJzKSB7CisgICAgICAgIHJvb3QuSGFuZGxlYmFycyA9ICRIYW5kbGViYXJzOworICAgICAg
fQorICAgICAgcmV0dXJuIEhhbmRsZWJhcnM7CisgICAgfTsKKyAgfTsKK30pOworLy8jIHNvdXJj
ZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96
TENKemIzVnlZMlZ6SWpwYklpNHVMeTR1THk0dUwyeHBZaTlvWVc1a2JHVmlZWEp6TDI1dkxXTnZi
bVpzYVdOMExtcHpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSTdPenM3YlVKQlEy
VXNWVUZCVXl4VlFVRlZMRVZCUVVVN08wRkJSV3hETEZGQlFVa3NTVUZCU1N4SFFVRkhMRTlCUVU4
c1RVRkJUU3hMUVVGTExGZEJRVmNzUjBGQlJ5eE5RVUZOTEVkQlFVY3NUVUZCVFR0UlFVTjBSQ3hY
UVVGWExFZEJRVWNzU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXpzN1FVRkZiRU1zWTBGQlZTeERR
VUZETEZWQlFWVXNSMEZCUnl4WlFVRlhPMEZCUTJwRExGVkJRVWtzU1VGQlNTeERRVUZETEZWQlFW
VXNTMEZCU3l4VlFVRlZMRVZCUVVVN1FVRkRiRU1zV1VGQlNTeERRVUZETEZWQlFWVXNSMEZCUnl4
WFFVRlhMRU5CUVVNN1QwRkRMMEk3UVVGRFJDeGhRVUZQTEZWQlFWVXNRMEZCUXp0TFFVTnVRaXhE
UVVGRE8wZEJRMGdpTENKbWFXeGxJam9pYm04dFkyOXVabXhwWTNRdWFuTWlMQ0p6YjNWeVkyVnpR
Mjl1ZEdWdWRDSTZXeUl2S2lCbmJHOWlZV3dnZDJsdVpHOTNJQ292WEc1bGVIQnZjblFnWkdWbVlY
VnNkQ0JtZFc1amRHbHZiaWhJWVc1a2JHVmlZWEp6S1NCN1hHNGdJQzhxSUdsemRHRnVZblZzSUds
bmJtOXlaU0J1WlhoMElDb3ZYRzRnSUd4bGRDQnliMjkwSUQwZ2RIbHdaVzltSUdkc2IySmhiQ0Fo
UFQwZ0ozVnVaR1ZtYVc1bFpDY2dQeUJuYkc5aVlXd2dPaUIzYVc1a2IzY3NYRzRnSUNBZ0lDQWtT
R0Z1Wkd4bFltRnljeUE5SUhKdmIzUXVTR0Z1Wkd4bFltRnljenRjYmlBZ0x5b2dhWE4wWVc1aWRX
d2dhV2R1YjNKbElHNWxlSFFnS2k5Y2JpQWdTR0Z1Wkd4bFltRnljeTV1YjBOdmJtWnNhV04wSUQw
Z1puVnVZM1JwYjI0b0tTQjdYRzRnSUNBZ2FXWWdLSEp2YjNRdVNHRnVaR3hsWW1GeWN5QTlQVDBn
U0dGdVpHeGxZbUZ5Y3lrZ2UxeHVJQ0FnSUNBZ2NtOXZkQzVJWVc1a2JHVmlZWEp6SUQwZ0pFaGhi
bVJzWldKaGNuTTdYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUJJWVc1a2JHVmlZWEp6TzF4dUlD
QjlPMXh1ZlZ4dUlsMTkKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVs
ZXMvaGFuZGxlYmFycy9kaXN0L2FtZC9oYW5kbGViYXJzL3J1bnRpbWUuanMgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9hbWQvaGFuZGxlYmFycy9ydW50
aW1lLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjFkNWQ2Njc3YTdjY2YxY2ZkNTViNDAzYWZhOTIyMmYwZTdhOTdj
ZjEKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hh
bmRsZWJhcnMvZGlzdC9hbWQvaGFuZGxlYmFycy9ydW50aW1lLmpzCkBAIC0wLDAgKzEsMjg3IEBA
CitkZWZpbmUoWydleHBvcnRzJywgJy4vdXRpbHMnLCAnLi9leGNlcHRpb24nLCAnLi9iYXNlJ10s
IGZ1bmN0aW9uIChleHBvcnRzLCBfdXRpbHMsIF9leGNlcHRpb24sIF9iYXNlKSB7CisgICd1c2Ug
c3RyaWN0JzsKKworICBleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOworICBleHBvcnRzLmNoZWNr
UmV2aXNpb24gPSBjaGVja1JldmlzaW9uOworICBleHBvcnRzLnRlbXBsYXRlID0gdGVtcGxhdGU7
CisgIGV4cG9ydHMud3JhcFByb2dyYW0gPSB3cmFwUHJvZ3JhbTsKKyAgZXhwb3J0cy5yZXNvbHZl
UGFydGlhbCA9IHJlc29sdmVQYXJ0aWFsOworICBleHBvcnRzLmludm9rZVBhcnRpYWwgPSBpbnZv
a2VQYXJ0aWFsOworICBleHBvcnRzLm5vb3AgPSBub29wOworICAvLyBpc3RhbmJ1bCBpZ25vcmUg
bmV4dAorCisgIGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBv
YmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH0KKworICB2
YXIgX0V4Y2VwdGlvbiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2V4Y2VwdGlvbik7CisKKyAg
ZnVuY3Rpb24gY2hlY2tSZXZpc2lvbihjb21waWxlckluZm8pIHsKKyAgICB2YXIgY29tcGlsZXJS
ZXZpc2lvbiA9IGNvbXBpbGVySW5mbyAmJiBjb21waWxlckluZm9bMF0gfHwgMSwKKyAgICAgICAg
Y3VycmVudFJldmlzaW9uID0gX2Jhc2UuQ09NUElMRVJfUkVWSVNJT047CisKKyAgICBpZiAoY29t
cGlsZXJSZXZpc2lvbiAhPT0gY3VycmVudFJldmlzaW9uKSB7CisgICAgICBpZiAoY29tcGlsZXJS
ZXZpc2lvbiA8IGN1cnJlbnRSZXZpc2lvbikgeworICAgICAgICB2YXIgcnVudGltZVZlcnNpb25z
ID0gX2Jhc2UuUkVWSVNJT05fQ0hBTkdFU1tjdXJyZW50UmV2aXNpb25dLAorICAgICAgICAgICAg
Y29tcGlsZXJWZXJzaW9ucyA9IF9iYXNlLlJFVklTSU9OX0NIQU5HRVNbY29tcGlsZXJSZXZpc2lv
bl07CisgICAgICAgIHRocm93IG5ldyBfRXhjZXB0aW9uWydkZWZhdWx0J10oJ1RlbXBsYXRlIHdh
cyBwcmVjb21waWxlZCB3aXRoIGFuIG9sZGVyIHZlcnNpb24gb2YgSGFuZGxlYmFycyB0aGFuIHRo
ZSBjdXJyZW50IHJ1bnRpbWUuICcgKyAnUGxlYXNlIHVwZGF0ZSB5b3VyIHByZWNvbXBpbGVyIHRv
IGEgbmV3ZXIgdmVyc2lvbiAoJyArIHJ1bnRpbWVWZXJzaW9ucyArICcpIG9yIGRvd25ncmFkZSB5
b3VyIHJ1bnRpbWUgdG8gYW4gb2xkZXIgdmVyc2lvbiAoJyArIGNvbXBpbGVyVmVyc2lvbnMgKyAn
KS4nKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFVzZSB0aGUgZW1iZWRkZWQgdmVyc2lv
biBpbmZvIHNpbmNlIHRoZSBydW50aW1lIGRvZXNuJ3Qga25vdyBhYm91dCB0aGlzIHJldmlzaW9u
IHlldAorICAgICAgICB0aHJvdyBuZXcgX0V4Y2VwdGlvblsnZGVmYXVsdCddKCdUZW1wbGF0ZSB3
YXMgcHJlY29tcGlsZWQgd2l0aCBhIG5ld2VyIHZlcnNpb24gb2YgSGFuZGxlYmFycyB0aGFuIHRo
ZSBjdXJyZW50IHJ1bnRpbWUuICcgKyAnUGxlYXNlIHVwZGF0ZSB5b3VyIHJ1bnRpbWUgdG8gYSBu
ZXdlciB2ZXJzaW9uICgnICsgY29tcGlsZXJJbmZvWzFdICsgJykuJyk7CisgICAgICB9CisgICAg
fQorICB9CisKKyAgZnVuY3Rpb24gdGVtcGxhdGUodGVtcGxhdGVTcGVjLCBlbnYpIHsKKyAgICAv
KiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLworICAgIGlmICghZW52KSB7CisgICAgICB0aHJvdyBu
ZXcgX0V4Y2VwdGlvblsnZGVmYXVsdCddKCdObyBlbnZpcm9ubWVudCBwYXNzZWQgdG8gdGVtcGxh
dGUnKTsKKyAgICB9CisgICAgaWYgKCF0ZW1wbGF0ZVNwZWMgfHwgIXRlbXBsYXRlU3BlYy5tYWlu
KSB7CisgICAgICB0aHJvdyBuZXcgX0V4Y2VwdGlvblsnZGVmYXVsdCddKCdVbmtub3duIHRlbXBs
YXRlIG9iamVjdDogJyArIHR5cGVvZiB0ZW1wbGF0ZVNwZWMpOworICAgIH0KKworICAgIHRlbXBs
YXRlU3BlYy5tYWluLmRlY29yYXRvciA9IHRlbXBsYXRlU3BlYy5tYWluX2Q7CisKKyAgICAvLyBO
b3RlOiBVc2luZyBlbnYuVk0gcmVmZXJlbmNlcyByYXRoZXIgdGhhbiBsb2NhbCB2YXIgcmVmZXJl
bmNlcyB0aHJvdWdob3V0IHRoaXMgc2VjdGlvbiB0byBhbGxvdworICAgIC8vIGZvciBleHRlcm5h
bCB1c2VycyB0byBvdmVycmlkZSB0aGVzZSBhcyBwc3VlZG8tc3VwcG9ydGVkIEFQSXMuCisgICAg
ZW52LlZNLmNoZWNrUmV2aXNpb24odGVtcGxhdGVTcGVjLmNvbXBpbGVyKTsKKworICAgIGZ1bmN0
aW9uIGludm9rZVBhcnRpYWxXcmFwcGVyKHBhcnRpYWwsIGNvbnRleHQsIG9wdGlvbnMpIHsKKyAg
ICAgIGlmIChvcHRpb25zLmhhc2gpIHsKKyAgICAgICAgY29udGV4dCA9IF91dGlscy5leHRlbmQo
e30sIGNvbnRleHQsIG9wdGlvbnMuaGFzaCk7CisgICAgICAgIGlmIChvcHRpb25zLmlkcykgewor
ICAgICAgICAgIG9wdGlvbnMuaWRzWzBdID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgfQorCisg
ICAgICBwYXJ0aWFsID0gZW52LlZNLnJlc29sdmVQYXJ0aWFsLmNhbGwodGhpcywgcGFydGlhbCwg
Y29udGV4dCwgb3B0aW9ucyk7CisgICAgICB2YXIgcmVzdWx0ID0gZW52LlZNLmludm9rZVBhcnRp
YWwuY2FsbCh0aGlzLCBwYXJ0aWFsLCBjb250ZXh0LCBvcHRpb25zKTsKKworICAgICAgaWYgKHJl
c3VsdCA9PSBudWxsICYmIGVudi5jb21waWxlKSB7CisgICAgICAgIG9wdGlvbnMucGFydGlhbHNb
b3B0aW9ucy5uYW1lXSA9IGVudi5jb21waWxlKHBhcnRpYWwsIHRlbXBsYXRlU3BlYy5jb21waWxl
ck9wdGlvbnMsIGVudik7CisgICAgICAgIHJlc3VsdCA9IG9wdGlvbnMucGFydGlhbHNbb3B0aW9u
cy5uYW1lXShjb250ZXh0LCBvcHRpb25zKTsKKyAgICAgIH0KKyAgICAgIGlmIChyZXN1bHQgIT0g
bnVsbCkgeworICAgICAgICBpZiAob3B0aW9ucy5pbmRlbnQpIHsKKyAgICAgICAgICB2YXIgbGlu
ZXMgPSByZXN1bHQuc3BsaXQoJ1xuJyk7CisgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBs
aW5lcy5sZW5ndGg7IGkgPCBsOyBpKyspIHsKKyAgICAgICAgICAgIGlmICghbGluZXNbaV0gJiYg
aSArIDEgPT09IGwpIHsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGxpbmVzW2ldID0gb3B0aW9ucy5pbmRlbnQgKyBsaW5lc1tpXTsKKyAgICAgICAg
ICB9CisgICAgICAgICAgcmVzdWx0ID0gbGluZXMuam9pbignXG4nKTsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm4gcmVzdWx0OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgdGhyb3cgbmV3IF9F
eGNlcHRpb25bJ2RlZmF1bHQnXSgnVGhlIHBhcnRpYWwgJyArIG9wdGlvbnMubmFtZSArICcgY291
bGQgbm90IGJlIGNvbXBpbGVkIHdoZW4gcnVubmluZyBpbiBydW50aW1lLW9ubHkgbW9kZScpOwor
ICAgICAgfQorICAgIH0KKworICAgIC8vIEp1c3QgYWRkIHdhdGVyCisgICAgdmFyIGNvbnRhaW5l
ciA9IHsKKyAgICAgIHN0cmljdDogZnVuY3Rpb24gc3RyaWN0KG9iaiwgbmFtZSkgeworICAgICAg
ICBpZiAoIShuYW1lIGluIG9iaikpIHsKKyAgICAgICAgICB0aHJvdyBuZXcgX0V4Y2VwdGlvblsn
ZGVmYXVsdCddKCciJyArIG5hbWUgKyAnIiBub3QgZGVmaW5lZCBpbiAnICsgb2JqKTsKKyAgICAg
ICAgfQorICAgICAgICByZXR1cm4gb2JqW25hbWVdOworICAgICAgfSwKKyAgICAgIGxvb2t1cDog
ZnVuY3Rpb24gbG9va3VwKGRlcHRocywgbmFtZSkgeworICAgICAgICB2YXIgbGVuID0gZGVwdGhz
Lmxlbmd0aDsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAg
ICAgIGlmIChkZXB0aHNbaV0gJiYgZGVwdGhzW2ldW25hbWVdICE9IG51bGwpIHsKKyAgICAgICAg
ICAgIHJldHVybiBkZXB0aHNbaV1bbmFtZV07CisgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICB9LAorICAgICAgbGFtYmRhOiBmdW5jdGlvbiBsYW1iZGEoY3VycmVudCwgY29udGV4dCkgewor
ICAgICAgICByZXR1cm4gdHlwZW9mIGN1cnJlbnQgPT09ICdmdW5jdGlvbicgPyBjdXJyZW50LmNh
bGwoY29udGV4dCkgOiBjdXJyZW50OworICAgICAgfSwKKworICAgICAgZXNjYXBlRXhwcmVzc2lv
bjogX3V0aWxzLmVzY2FwZUV4cHJlc3Npb24sCisgICAgICBpbnZva2VQYXJ0aWFsOiBpbnZva2VQ
YXJ0aWFsV3JhcHBlciwKKworICAgICAgZm46IGZ1bmN0aW9uIGZuKGkpIHsKKyAgICAgICAgdmFy
IHJldCA9IHRlbXBsYXRlU3BlY1tpXTsKKyAgICAgICAgcmV0LmRlY29yYXRvciA9IHRlbXBsYXRl
U3BlY1tpICsgJ19kJ107CisgICAgICAgIHJldHVybiByZXQ7CisgICAgICB9LAorCisgICAgICBw
cm9ncmFtczogW10sCisgICAgICBwcm9ncmFtOiBmdW5jdGlvbiBwcm9ncmFtKGksIGRhdGEsIGRl
Y2xhcmVkQmxvY2tQYXJhbXMsIGJsb2NrUGFyYW1zLCBkZXB0aHMpIHsKKyAgICAgICAgdmFyIHBy
b2dyYW1XcmFwcGVyID0gdGhpcy5wcm9ncmFtc1tpXSwKKyAgICAgICAgICAgIGZuID0gdGhpcy5m
bihpKTsKKyAgICAgICAgaWYgKGRhdGEgfHwgZGVwdGhzIHx8IGJsb2NrUGFyYW1zIHx8IGRlY2xh
cmVkQmxvY2tQYXJhbXMpIHsKKyAgICAgICAgICBwcm9ncmFtV3JhcHBlciA9IHdyYXBQcm9ncmFt
KHRoaXMsIGksIGZuLCBkYXRhLCBkZWNsYXJlZEJsb2NrUGFyYW1zLCBibG9ja1BhcmFtcywgZGVw
dGhzKTsKKyAgICAgICAgfSBlbHNlIGlmICghcHJvZ3JhbVdyYXBwZXIpIHsKKyAgICAgICAgICBw
cm9ncmFtV3JhcHBlciA9IHRoaXMucHJvZ3JhbXNbaV0gPSB3cmFwUHJvZ3JhbSh0aGlzLCBpLCBm
bik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHByb2dyYW1XcmFwcGVyOworICAgICAgfSwK
KworICAgICAgZGF0YTogZnVuY3Rpb24gZGF0YSh2YWx1ZSwgZGVwdGgpIHsKKyAgICAgICAgd2hp
bGUgKHZhbHVlICYmIGRlcHRoLS0pIHsKKyAgICAgICAgICB2YWx1ZSA9IHZhbHVlLl9wYXJlbnQ7
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgICAgfSwKKyAgICAgIG1lcmdl
OiBmdW5jdGlvbiBtZXJnZShwYXJhbSwgY29tbW9uKSB7CisgICAgICAgIHZhciBvYmogPSBwYXJh
bSB8fCBjb21tb247CisKKyAgICAgICAgaWYgKHBhcmFtICYmIGNvbW1vbiAmJiBwYXJhbSAhPT0g
Y29tbW9uKSB7CisgICAgICAgICAgb2JqID0gX3V0aWxzLmV4dGVuZCh7fSwgY29tbW9uLCBwYXJh
bSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gb2JqOworICAgICAgfSwKKworICAgICAg
bm9vcDogZW52LlZNLm5vb3AsCisgICAgICBjb21waWxlckluZm86IHRlbXBsYXRlU3BlYy5jb21w
aWxlcgorICAgIH07CisKKyAgICBmdW5jdGlvbiByZXQoY29udGV4dCkgeworICAgICAgdmFyIG9w
dGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDEgfHwgYXJndW1lbnRzWzFdID09PSB1bmRlZmlu
ZWQgPyB7fSA6IGFyZ3VtZW50c1sxXTsKKworICAgICAgdmFyIGRhdGEgPSBvcHRpb25zLmRhdGE7
CisKKyAgICAgIHJldC5fc2V0dXAob3B0aW9ucyk7CisgICAgICBpZiAoIW9wdGlvbnMucGFydGlh
bCAmJiB0ZW1wbGF0ZVNwZWMudXNlRGF0YSkgeworICAgICAgICBkYXRhID0gaW5pdERhdGEoY29u
dGV4dCwgZGF0YSk7CisgICAgICB9CisgICAgICB2YXIgZGVwdGhzID0gdW5kZWZpbmVkLAorICAg
ICAgICAgIGJsb2NrUGFyYW1zID0gdGVtcGxhdGVTcGVjLnVzZUJsb2NrUGFyYW1zID8gW10gOiB1
bmRlZmluZWQ7CisgICAgICBpZiAodGVtcGxhdGVTcGVjLnVzZURlcHRocykgeworICAgICAgICBp
ZiAob3B0aW9ucy5kZXB0aHMpIHsKKyAgICAgICAgICBkZXB0aHMgPSBjb250ZXh0ICE9IG9wdGlv
bnMuZGVwdGhzWzBdID8gW2NvbnRleHRdLmNvbmNhdChvcHRpb25zLmRlcHRocykgOiBvcHRpb25z
LmRlcHRoczsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBkZXB0aHMgPSBbY29udGV4dF07
CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgZnVuY3Rpb24gbWFpbihjb250ZXh0IC8qLCBv
cHRpb25zKi8pIHsKKyAgICAgICAgcmV0dXJuICcnICsgdGVtcGxhdGVTcGVjLm1haW4oY29udGFp
bmVyLCBjb250ZXh0LCBjb250YWluZXIuaGVscGVycywgY29udGFpbmVyLnBhcnRpYWxzLCBkYXRh
LCBibG9ja1BhcmFtcywgZGVwdGhzKTsKKyAgICAgIH0KKyAgICAgIG1haW4gPSBleGVjdXRlRGVj
b3JhdG9ycyh0ZW1wbGF0ZVNwZWMubWFpbiwgbWFpbiwgY29udGFpbmVyLCBvcHRpb25zLmRlcHRo
cyB8fCBbXSwgZGF0YSwgYmxvY2tQYXJhbXMpOworICAgICAgcmV0dXJuIG1haW4oY29udGV4dCwg
b3B0aW9ucyk7CisgICAgfQorICAgIHJldC5pc1RvcCA9IHRydWU7CisKKyAgICByZXQuX3NldHVw
ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHsKKyAgICAgIGlmICghb3B0aW9ucy5wYXJ0aWFsKSB7Cisg
ICAgICAgIGNvbnRhaW5lci5oZWxwZXJzID0gY29udGFpbmVyLm1lcmdlKG9wdGlvbnMuaGVscGVy
cywgZW52LmhlbHBlcnMpOworCisgICAgICAgIGlmICh0ZW1wbGF0ZVNwZWMudXNlUGFydGlhbCkg
eworICAgICAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyA9IGNvbnRhaW5lci5tZXJnZShvcHRpb25z
LnBhcnRpYWxzLCBlbnYucGFydGlhbHMpOworICAgICAgICB9CisgICAgICAgIGlmICh0ZW1wbGF0
ZVNwZWMudXNlUGFydGlhbCB8fCB0ZW1wbGF0ZVNwZWMudXNlRGVjb3JhdG9ycykgeworICAgICAg
ICAgIGNvbnRhaW5lci5kZWNvcmF0b3JzID0gY29udGFpbmVyLm1lcmdlKG9wdGlvbnMuZGVjb3Jh
dG9ycywgZW52LmRlY29yYXRvcnMpOworICAgICAgICB9CisgICAgICB9IGVsc2UgeworICAgICAg
ICBjb250YWluZXIuaGVscGVycyA9IG9wdGlvbnMuaGVscGVyczsKKyAgICAgICAgY29udGFpbmVy
LnBhcnRpYWxzID0gb3B0aW9ucy5wYXJ0aWFsczsKKyAgICAgICAgY29udGFpbmVyLmRlY29yYXRv
cnMgPSBvcHRpb25zLmRlY29yYXRvcnM7CisgICAgICB9CisgICAgfTsKKworICAgIHJldC5fY2hp
bGQgPSBmdW5jdGlvbiAoaSwgZGF0YSwgYmxvY2tQYXJhbXMsIGRlcHRocykgeworICAgICAgaWYg
KHRlbXBsYXRlU3BlYy51c2VCbG9ja1BhcmFtcyAmJiAhYmxvY2tQYXJhbXMpIHsKKyAgICAgICAg
dGhyb3cgbmV3IF9FeGNlcHRpb25bJ2RlZmF1bHQnXSgnbXVzdCBwYXNzIGJsb2NrIHBhcmFtcycp
OworICAgICAgfQorICAgICAgaWYgKHRlbXBsYXRlU3BlYy51c2VEZXB0aHMgJiYgIWRlcHRocykg
eworICAgICAgICB0aHJvdyBuZXcgX0V4Y2VwdGlvblsnZGVmYXVsdCddKCdtdXN0IHBhc3MgcGFy
ZW50IGRlcHRocycpOworICAgICAgfQorCisgICAgICByZXR1cm4gd3JhcFByb2dyYW0oY29udGFp
bmVyLCBpLCB0ZW1wbGF0ZVNwZWNbaV0sIGRhdGEsIDAsIGJsb2NrUGFyYW1zLCBkZXB0aHMpOwor
ICAgIH07CisgICAgcmV0dXJuIHJldDsKKyAgfQorCisgIGZ1bmN0aW9uIHdyYXBQcm9ncmFtKGNv
bnRhaW5lciwgaSwgZm4sIGRhdGEsIGRlY2xhcmVkQmxvY2tQYXJhbXMsIGJsb2NrUGFyYW1zLCBk
ZXB0aHMpIHsKKyAgICBmdW5jdGlvbiBwcm9nKGNvbnRleHQpIHsKKyAgICAgIHZhciBvcHRpb25z
ID0gYXJndW1lbnRzLmxlbmd0aCA8PSAxIHx8IGFyZ3VtZW50c1sxXSA9PT0gdW5kZWZpbmVkID8g
e30gOiBhcmd1bWVudHNbMV07CisKKyAgICAgIHZhciBjdXJyZW50RGVwdGhzID0gZGVwdGhzOwor
ICAgICAgaWYgKGRlcHRocyAmJiBjb250ZXh0ICE9IGRlcHRoc1swXSkgeworICAgICAgICBjdXJy
ZW50RGVwdGhzID0gW2NvbnRleHRdLmNvbmNhdChkZXB0aHMpOworICAgICAgfQorCisgICAgICBy
ZXR1cm4gZm4oY29udGFpbmVyLCBjb250ZXh0LCBjb250YWluZXIuaGVscGVycywgY29udGFpbmVy
LnBhcnRpYWxzLCBvcHRpb25zLmRhdGEgfHwgZGF0YSwgYmxvY2tQYXJhbXMgJiYgW29wdGlvbnMu
YmxvY2tQYXJhbXNdLmNvbmNhdChibG9ja1BhcmFtcyksIGN1cnJlbnREZXB0aHMpOworICAgIH0K
KworICAgIHByb2cgPSBleGVjdXRlRGVjb3JhdG9ycyhmbiwgcHJvZywgY29udGFpbmVyLCBkZXB0
aHMsIGRhdGEsIGJsb2NrUGFyYW1zKTsKKworICAgIHByb2cucHJvZ3JhbSA9IGk7CisgICAgcHJv
Zy5kZXB0aCA9IGRlcHRocyA/IGRlcHRocy5sZW5ndGggOiAwOworICAgIHByb2cuYmxvY2tQYXJh
bXMgPSBkZWNsYXJlZEJsb2NrUGFyYW1zIHx8IDA7CisgICAgcmV0dXJuIHByb2c7CisgIH0KKwor
ICBmdW5jdGlvbiByZXNvbHZlUGFydGlhbChwYXJ0aWFsLCBjb250ZXh0LCBvcHRpb25zKSB7Cisg
ICAgaWYgKCFwYXJ0aWFsKSB7CisgICAgICBpZiAob3B0aW9ucy5uYW1lID09PSAnQHBhcnRpYWwt
YmxvY2snKSB7CisgICAgICAgIHZhciBkYXRhID0gb3B0aW9ucy5kYXRhOworICAgICAgICB3aGls
ZSAoZGF0YVsncGFydGlhbC1ibG9jayddID09PSBub29wKSB7CisgICAgICAgICAgZGF0YSA9IGRh
dGEuX3BhcmVudDsKKyAgICAgICAgfQorICAgICAgICBwYXJ0aWFsID0gZGF0YVsncGFydGlhbC1i
bG9jayddOworICAgICAgICBkYXRhWydwYXJ0aWFsLWJsb2NrJ10gPSBub29wOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcGFydGlhbCA9IG9wdGlvbnMucGFydGlhbHNbb3B0aW9ucy5uYW1lXTsK
KyAgICAgIH0KKyAgICB9IGVsc2UgaWYgKCFwYXJ0aWFsLmNhbGwgJiYgIW9wdGlvbnMubmFtZSkg
eworICAgICAgLy8gVGhpcyBpcyBhIGR5bmFtaWMgcGFydGlhbCB0aGF0IHJldHVybmVkIGEgc3Ry
aW5nCisgICAgICBvcHRpb25zLm5hbWUgPSBwYXJ0aWFsOworICAgICAgcGFydGlhbCA9IG9wdGlv
bnMucGFydGlhbHNbcGFydGlhbF07CisgICAgfQorICAgIHJldHVybiBwYXJ0aWFsOworICB9CisK
KyAgZnVuY3Rpb24gaW52b2tlUGFydGlhbChwYXJ0aWFsLCBjb250ZXh0LCBvcHRpb25zKSB7Cisg
ICAgb3B0aW9ucy5wYXJ0aWFsID0gdHJ1ZTsKKyAgICBpZiAob3B0aW9ucy5pZHMpIHsKKyAgICAg
IG9wdGlvbnMuZGF0YS5jb250ZXh0UGF0aCA9IG9wdGlvbnMuaWRzWzBdIHx8IG9wdGlvbnMuZGF0
YS5jb250ZXh0UGF0aDsKKyAgICB9CisKKyAgICB2YXIgcGFydGlhbEJsb2NrID0gdW5kZWZpbmVk
OworICAgIGlmIChvcHRpb25zLmZuICYmIG9wdGlvbnMuZm4gIT09IG5vb3ApIHsKKyAgICAgIG9w
dGlvbnMuZGF0YSA9IF9iYXNlLmNyZWF0ZUZyYW1lKG9wdGlvbnMuZGF0YSk7CisgICAgICBwYXJ0
aWFsQmxvY2sgPSBvcHRpb25zLmRhdGFbJ3BhcnRpYWwtYmxvY2snXSA9IG9wdGlvbnMuZm47CisK
KyAgICAgIGlmIChwYXJ0aWFsQmxvY2sucGFydGlhbHMpIHsKKyAgICAgICAgb3B0aW9ucy5wYXJ0
aWFscyA9IF91dGlscy5leHRlbmQoe30sIG9wdGlvbnMucGFydGlhbHMsIHBhcnRpYWxCbG9jay5w
YXJ0aWFscyk7CisgICAgICB9CisgICAgfQorCisgICAgaWYgKHBhcnRpYWwgPT09IHVuZGVmaW5l
ZCAmJiBwYXJ0aWFsQmxvY2spIHsKKyAgICAgIHBhcnRpYWwgPSBwYXJ0aWFsQmxvY2s7CisgICAg
fQorCisgICAgaWYgKHBhcnRpYWwgPT09IHVuZGVmaW5lZCkgeworICAgICAgdGhyb3cgbmV3IF9F
eGNlcHRpb25bJ2RlZmF1bHQnXSgnVGhlIHBhcnRpYWwgJyArIG9wdGlvbnMubmFtZSArICcgY291
bGQgbm90IGJlIGZvdW5kJyk7CisgICAgfSBlbHNlIGlmIChwYXJ0aWFsIGluc3RhbmNlb2YgRnVu
Y3Rpb24pIHsKKyAgICAgIHJldHVybiBwYXJ0aWFsKGNvbnRleHQsIG9wdGlvbnMpOworICAgIH0K
KyAgfQorCisgIGZ1bmN0aW9uIG5vb3AoKSB7CisgICAgcmV0dXJuICcnOworICB9CisKKyAgZnVu
Y3Rpb24gaW5pdERhdGEoY29udGV4dCwgZGF0YSkgeworICAgIGlmICghZGF0YSB8fCAhKCdyb290
JyBpbiBkYXRhKSkgeworICAgICAgZGF0YSA9IGRhdGEgPyBfYmFzZS5jcmVhdGVGcmFtZShkYXRh
KSA6IHt9OworICAgICAgZGF0YS5yb290ID0gY29udGV4dDsKKyAgICB9CisgICAgcmV0dXJuIGRh
dGE7CisgIH0KKworICBmdW5jdGlvbiBleGVjdXRlRGVjb3JhdG9ycyhmbiwgcHJvZywgY29udGFp
bmVyLCBkZXB0aHMsIGRhdGEsIGJsb2NrUGFyYW1zKSB7CisgICAgaWYgKGZuLmRlY29yYXRvcikg
eworICAgICAgdmFyIHByb3BzID0ge307CisgICAgICBwcm9nID0gZm4uZGVjb3JhdG9yKHByb2cs
IHByb3BzLCBjb250YWluZXIsIGRlcHRocyAmJiBkZXB0aHNbMF0sIGRhdGEsIGJsb2NrUGFyYW1z
LCBkZXB0aHMpOworICAgICAgX3V0aWxzLmV4dGVuZChwcm9nLCBwcm9wcyk7CisgICAgfQorICAg
IHJldHVybiBwcm9nOworICB9Cit9KTsKKy8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGlj
YXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJaTR1THk0
dUx5NHVMMnhwWWk5b1lXNWtiR1ZpWVhKekwzSjFiblJwYldVdWFuTWlYU3dpYm1GdFpYTWlPbHRk
TENKdFlYQndhVzVuY3lJNklqczdPenM3T3pzN096czdPenM3T3p0QlFVbFBMRmRCUVZNc1lVRkJZ
U3hEUVVGRExGbEJRVmtzUlVGQlJUdEJRVU14UXl4UlFVRk5MR2RDUVVGblFpeEhRVUZITEZsQlFW
a3NTVUZCU1N4WlFVRlpMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF6dFJRVU4yUkN4
bFFVRmxMRk5CU21Rc2FVSkJRV2xDTEVGQlNXbENMRU5CUVVNN08wRkJSVEZETEZGQlFVa3NaMEpC
UVdkQ0xFdEJRVXNzWlVGQlpTeEZRVUZGTzBGQlEzaERMRlZCUVVrc1owSkJRV2RDTEVkQlFVY3Na
VUZCWlN4RlFVRkZPMEZCUTNSRExGbEJRVTBzWlVGQlpTeEhRVUZITEUxQlVrWXNaMEpCUVdkQ0xF
TkJVVWNzWlVGQlpTeERRVUZETzFsQlEyNUVMR2RDUVVGblFpeEhRVUZITEUxQlZFZ3NaMEpCUVdk
Q0xFTkJVMGtzWjBKQlFXZENMRU5CUVVNc1EwRkJRenRCUVVNMVJDeGpRVUZOTERCQ1FVRmpMSGxH
UVVGNVJpeEhRVU4yUnl4eFJFRkJjVVFzUjBGQlJ5eGxRVUZsTEVkQlFVY3NiVVJCUVcxRUxFZEJR
VWNzWjBKQlFXZENMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU03VDBGRGFFc3NUVUZCVFRzN1FV
RkZUQ3hqUVVGTkxEQkNRVUZqTEhkR1FVRjNSaXhIUVVOMFJ5eHBSRUZCYVVRc1IwRkJSeXhaUVVG
WkxFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNN1QwRkRia1k3
UzBGRFJqdEhRVU5HT3p0QlFVVk5MRmRCUVZNc1VVRkJVU3hEUVVGRExGbEJRVmtzUlVGQlJTeEhR
VUZITEVWQlFVVTdPMEZCUlRGRExGRkJRVWtzUTBGQlF5eEhRVUZITEVWQlFVVTdRVUZEVWl4WlFV
Rk5MREJDUVVGakxHMURRVUZ0UXl4RFFVRkRMRU5CUVVNN1MwRkRNVVE3UVVGRFJDeFJRVUZKTEVO
QlFVTXNXVUZCV1N4SlFVRkpMRU5CUVVNc1dVRkJXU3hEUVVGRExFbEJRVWtzUlVGQlJUdEJRVU4y
UXl4WlFVRk5MREJDUVVGakxESkNRVUV5UWl4SFFVRkhMRTlCUVU4c1dVRkJXU3hEUVVGRExFTkJR
VU03UzBGRGVFVTdPMEZCUlVRc1owSkJRVmtzUTBGQlF5eEpRVUZKTEVOQlFVTXNVMEZCVXl4SFFV
RkhMRmxCUVZrc1EwRkJReXhOUVVGTkxFTkJRVU03T3pzN1FVRkpiRVFzVDBGQlJ5eERRVUZETEVW
QlFVVXNRMEZCUXl4aFFVRmhMRU5CUVVNc1dVRkJXU3hEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZE
T3p0QlFVVTFReXhoUVVGVExHOUNRVUZ2UWl4RFFVRkRMRTlCUVU4c1JVRkJSU3hQUVVGUExFVkJR
VVVzVDBGQlR5eEZRVUZGTzBGQlEzWkVMRlZCUVVrc1QwRkJUeXhEUVVGRExFbEJRVWtzUlVGQlJU
dEJRVU5vUWl4bFFVRlBMRWRCUVVjc1QwRkJUU3hOUVVGTkxFTkJRVU1zUlVGQlJTeEZRVUZGTEU5
QlFVOHNSVUZCUlN4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03UVVGRGJFUXNXVUZC
U1N4UFFVRlBMRU5CUVVNc1IwRkJSeXhGUVVGRk8wRkJRMllzYVVKQlFVOHNRMEZCUXl4SFFVRkhM
RU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETzFOQlEzWkNPMDlCUTBZN08w
RkJSVVFzWVVGQlR5eEhRVUZITEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1kwRkJZeXhEUVVG
RExFbEJRVWtzUTBGQlF5eEpRVUZKTEVWQlFVVXNUMEZCVHl4RlFVRkZMRTlCUVU4c1JVRkJSU3hQ
UVVGUExFTkJRVU1zUTBGQlF6dEJRVU4wUlN4VlFVRkpMRTFCUVUwc1IwRkJSeXhIUVVGSExFTkJR
VU1zUlVGQlJTeERRVUZETEdGQlFXRXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hGUVVGRkxF
OUJRVThzUlVGQlJTeFBRVUZQTEVWQlFVVXNUMEZCVHl4RFFVRkRMRU5CUVVNN08wRkJSWGhGTEZW
QlFVa3NUVUZCVFN4SlFVRkpMRWxCUVVrc1NVRkJTU3hIUVVGSExFTkJRVU1zVDBGQlR5eEZRVUZG
TzBGQlEycERMR1ZCUVU4c1EwRkJReXhSUVVGUkxFTkJRVU1zVDBGQlR5eERRVUZETEVsQlFVa3NR
MEZCUXl4SFFVRkhMRWRCUVVjc1EwRkJReXhQUVVGUExFTkJRVU1zVDBGQlR5eEZRVUZGTEZsQlFW
a3NRMEZCUXl4bFFVRmxMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU03UVVGRGVrWXNZMEZCVFN4
SFFVRkhMRTlCUVU4c1EwRkJReXhSUVVGUkxFTkJRVU1zVDBGQlR5eERRVUZETEVsQlFVa3NRMEZC
UXl4RFFVRkRMRTlCUVU4c1JVRkJSU3hQUVVGUExFTkJRVU1zUTBGQlF6dFBRVU16UkR0QlFVTkVM
RlZCUVVrc1RVRkJUU3hKUVVGSkxFbEJRVWtzUlVGQlJUdEJRVU5zUWl4WlFVRkpMRTlCUVU4c1Ew
RkJReXhOUVVGTkxFVkJRVVU3UVVGRGJFSXNZMEZCU1N4TFFVRkxMRWRCUVVjc1RVRkJUU3hEUVVG
RExFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0QlFVTXZRaXhsUVVGTExFbEJRVWtz
UTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1MwRkJTeXhEUVVGRExFMUJR
VTBzUlVGQlJTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRk8w
RkJRelZETEdkQ1FVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVO
QlFVTXNSMEZCUnl4RFFVRkRMRXRCUVVzc1EwRkJReXhGUVVGRk8wRkJRelZDTEc5Q1FVRk5PMkZC
UTFBN08wRkJSVVFzYVVKQlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhQUVVGUExFTkJR
VU1zVFVGQlRTeEhRVUZITEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRYUVVOMFF6
dEJRVU5FTEdkQ1FVRk5MRWRCUVVjc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVO
QlFVTXNRMEZCUXp0VFFVTXpRanRCUVVORUxHVkJRVThzVFVGQlRTeERRVUZETzA5QlEyWXNUVUZC
VFR0QlFVTk1MR05CUVUwc01FSkJRV01zWTBGQll5eEhRVUZITEU5QlFVOHNRMEZCUXl4SlFVRkpM
RWRCUVVjc01FUkJRVEJFTEVOQlFVTXNRMEZCUXp0UFFVTnFTRHRMUVVOR096czdRVUZIUkN4UlFV
RkpMRk5CUVZNc1IwRkJSenRCUVVOa0xGbEJRVTBzUlVGQlJTeG5Ra0ZCVXl4SFFVRkhMRVZCUVVV
c1NVRkJTU3hGUVVGRk8wRkJRekZDTEZsQlFVa3NSVUZCUlN4SlFVRkpMRWxCUVVrc1IwRkJSeXhE
UVVGQkxFRkJRVU1zUlVGQlJUdEJRVU5zUWl4blFrRkJUU3d3UWtGQll5eEhRVUZITEVkQlFVY3NT
VUZCU1N4SFFVRkhMRzFDUVVGdFFpeEhRVUZITEVkQlFVY3NRMEZCUXl4RFFVRkRPMU5CUXpkRU8w
RkJRMFFzWlVGQlR5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1QwRkRiRUk3UVVG
RFJDeFpRVUZOTEVWQlFVVXNaMEpCUVZNc1RVRkJUU3hGUVVGRkxFbEJRVWtzUlVGQlJUdEJRVU0z
UWl4WlFVRk5MRWRCUVVjc1IwRkJSeXhOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETzBGQlF6RkNM
R0ZCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4SFFV
RkhMRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3UVVGRE5VSXNZMEZCU1N4TlFVRk5MRU5CUVVN
c1EwRkJReXhEUVVGRExFbEJRVWtzVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxC
UVVrc1EwRkJReXhKUVVGSkxFbEJRVWtzUlVGQlJUdEJRVU40UXl4dFFrRkJUeXhOUVVGTkxFTkJR
VU1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1YwRkRlRUk3VTBGRFJq
dFBRVU5HTzBGQlEwUXNXVUZCVFN4RlFVRkZMR2RDUVVGVExFOUJRVThzUlVGQlJTeFBRVUZQTEVW
QlFVVTdRVUZEYWtNc1pVRkJUeXhQUVVGUExFOUJRVThzUzBGQlN5eFZRVUZWTEVkQlFVY3NUMEZC
VHl4RFFVRkRMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zUjBGQlJ5eFBRVUZQTEVOQlFVTTdU
MEZEZUVVN08wRkJSVVFzYzBKQlFXZENMRVZCUVVVc1QwRkJUU3huUWtGQlowSTdRVUZEZUVNc2JV
SkJRV0VzUlVGQlJTeHZRa0ZCYjBJN08wRkJSVzVETEZGQlFVVXNSVUZCUlN4WlFVRlRMRU5CUVVN
c1JVRkJSVHRCUVVOa0xGbEJRVWtzUjBGQlJ5eEhRVUZITEZsQlFWa3NRMEZCUXl4RFFVRkRMRU5C
UVVNc1EwRkJRenRCUVVNeFFpeFhRVUZITEVOQlFVTXNVMEZCVXl4SFFVRkhMRmxCUVZrc1EwRkJR
eXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTTdRVUZEZGtNc1pVRkJUeXhIUVVGSExF
TkJRVU03VDBGRFdqczdRVUZGUkN4alFVRlJMRVZCUVVVc1JVRkJSVHRCUVVOYUxHRkJRVThzUlVG
QlJTeHBRa0ZCVXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hGUVVGRkxHMUNRVUZ0UWl4RlFVRkZMRmRC
UVZjc1JVRkJSU3hOUVVGTkxFVkJRVVU3UVVGRGJrVXNXVUZCU1N4alFVRmpMRWRCUVVjc1NVRkJT
U3hEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETEVOQlFVTTdXVUZEYWtNc1JVRkJSU3hIUVVGSExF
bEJRVWtzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRjRUlzV1VG
QlNTeEpRVUZKTEVsQlFVa3NUVUZCVFN4SlFVRkpMRmRCUVZjc1NVRkJTU3h0UWtGQmJVSXNSVUZC
UlR0QlFVTjRSQ3gzUWtGQll5eEhRVUZITEZkQlFWY3NRMEZCUXl4SlFVRkpMRVZCUVVVc1EwRkJR
eXhGUVVGRkxFVkJRVVVzUlVGQlJTeEpRVUZKTEVWQlFVVXNiVUpCUVcxQ0xFVkJRVVVzVjBGQlZ5
eEZRVUZGTEUxQlFVMHNRMEZCUXl4RFFVRkRPMU5CUXpOR0xFMUJRVTBzU1VGQlNTeERRVUZETEdO
QlFXTXNSVUZCUlR0QlFVTXhRaXgzUWtGQll5eEhRVUZITEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5C
UVVNc1EwRkJReXhEUVVGRExFZEJRVWNzVjBGQlZ5eERRVUZETEVsQlFVa3NSVUZCUlN4RFFVRkRM
RVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU03VTBGRE9VUTdRVUZEUkN4bFFVRlBMR05CUVdNc1Ew
RkJRenRQUVVOMlFqczdRVUZGUkN4VlFVRkpMRVZCUVVVc1kwRkJVeXhMUVVGTExFVkJRVVVzUzBG
QlN5eEZRVUZGTzBGQlF6TkNMR1ZCUVU4c1MwRkJTeXhKUVVGSkxFdEJRVXNzUlVGQlJTeEZRVUZG
TzBGQlEzWkNMR1ZCUVVzc1IwRkJSeXhMUVVGTExFTkJRVU1zVDBGQlR5eERRVUZETzFOQlEzWkNP
MEZCUTBRc1pVRkJUeXhMUVVGTExFTkJRVU03VDBGRFpEdEJRVU5FTEZkQlFVc3NSVUZCUlN4bFFV
RlRMRXRCUVVzc1JVRkJSU3hOUVVGTkxFVkJRVVU3UVVGRE4wSXNXVUZCU1N4SFFVRkhMRWRCUVVj
c1MwRkJTeXhKUVVGSkxFMUJRVTBzUTBGQlF6czdRVUZGTVVJc1dVRkJTU3hMUVVGTExFbEJRVWtz
VFVGQlRTeEpRVUZMTEV0QlFVc3NTMEZCU3l4TlFVRk5MRUZCUVVNc1JVRkJSVHRCUVVONlF5eGhR
VUZITEVkQlFVY3NUMEZCVFN4TlFVRk5MRU5CUVVNc1JVRkJSU3hGUVVGRkxFMUJRVTBzUlVGQlJT
eExRVUZMTEVOQlFVTXNRMEZCUXp0VFFVTjJRenM3UVVGRlJDeGxRVUZQTEVkQlFVY3NRMEZCUXp0
UFFVTmFPenRCUVVWRUxGVkJRVWtzUlVGQlJTeEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWxC
UVVrN1FVRkRha0lzYTBKQlFWa3NSVUZCUlN4WlFVRlpMRU5CUVVNc1VVRkJVVHRMUVVOd1F5eERR
VUZET3p0QlFVVkdMR0ZCUVZNc1IwRkJSeXhEUVVGRExFOUJRVThzUlVGQlowSTdWVUZCWkN4UFFV
RlBMSGxFUVVGSExFVkJRVVU3TzBGQlEyaERMRlZCUVVrc1NVRkJTU3hIUVVGSExFOUJRVThzUTBG
QlF5eEpRVUZKTEVOQlFVTTdPMEZCUlhoQ0xGTkJRVWNzUTBGQlF5eE5RVUZOTEVOQlFVTXNUMEZC
VHl4RFFVRkRMRU5CUVVNN1FVRkRjRUlzVlVGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4UFFVRlBM
RWxCUVVrc1dVRkJXU3hEUVVGRExFOUJRVThzUlVGQlJUdEJRVU0xUXl4WlFVRkpMRWRCUVVjc1VV
RkJVU3hEUVVGRExFOUJRVThzUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0UFFVTm9RenRCUVVO
RUxGVkJRVWtzVFVGQlRTeFpRVUZCTzFWQlEwNHNWMEZCVnl4SFFVRkhMRmxCUVZrc1EwRkJReXhq
UVVGakxFZEJRVWNzUlVGQlJTeEhRVUZITEZOQlFWTXNRMEZCUXp0QlFVTXZSQ3hWUVVGSkxGbEJR
VmtzUTBGQlF5eFRRVUZUTEVWQlFVVTdRVUZETVVJc1dVRkJTU3hQUVVGUExFTkJRVU1zVFVGQlRT
eEZRVUZGTzBGQlEyeENMR2RDUVVGTkxFZEJRVWNzVDBGQlR5eEpRVUZKTEU5QlFVOHNRMEZCUXl4
TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZC
UXl4TlFVRk5MRU5CUVVNc1QwRkJUeXhEUVVGRExFMUJRVTBzUTBGQlF5eEhRVUZITEU5QlFVOHNR
MEZCUXl4TlFVRk5MRU5CUVVNN1UwRkRNMFlzVFVGQlRUdEJRVU5NTEdkQ1FVRk5MRWRCUVVjc1Ew
RkJReXhQUVVGUExFTkJRVU1zUTBGQlF6dFRRVU53UWp0UFFVTkdPenRCUVVWRUxHVkJRVk1zU1VG
QlNTeERRVUZETEU5QlFVOHNaMEpCUVdVN1FVRkRiRU1zWlVGQlR5eEZRVUZGTEVkQlFVY3NXVUZC
V1N4RFFVRkRMRWxCUVVrc1EwRkJReXhUUVVGVExFVkJRVVVzVDBGQlR5eEZRVUZGTEZOQlFWTXNR
MEZCUXl4UFFVRlBMRVZCUVVVc1UwRkJVeXhEUVVGRExGRkJRVkVzUlVGQlJTeEpRVUZKTEVWQlFV
VXNWMEZCVnl4RlFVRkZMRTFCUVUwc1EwRkJReXhEUVVGRE8wOUJRM0pJTzBGQlEwUXNWVUZCU1N4
SFFVRkhMR2xDUVVGcFFpeERRVUZETEZsQlFWa3NRMEZCUXl4SlFVRkpMRVZCUVVVc1NVRkJTU3hG
UVVGRkxGTkJRVk1zUlVGQlJTeFBRVUZQTEVOQlFVTXNUVUZCVFN4SlFVRkpMRVZCUVVVc1JVRkJS
U3hKUVVGSkxFVkJRVVVzVjBGQlZ5eERRVUZETEVOQlFVTTdRVUZEZEVjc1lVRkJUeXhKUVVGSkxF
TkJRVU1zVDBGQlR5eEZRVUZGTEU5QlFVOHNRMEZCUXl4RFFVRkRPMHRCUXk5Q08wRkJRMFFzVDBG
QlJ5eERRVUZETEV0QlFVc3NSMEZCUnl4SlFVRkpMRU5CUVVNN08wRkJSV3BDTEU5QlFVY3NRMEZC
UXl4TlFVRk5MRWRCUVVjc1ZVRkJVeXhQUVVGUExFVkJRVVU3UVVGRE4wSXNWVUZCU1N4RFFVRkRM
RTlCUVU4c1EwRkJReXhQUVVGUExFVkJRVVU3UVVGRGNFSXNhVUpCUVZNc1EwRkJReXhQUVVGUExF
ZEJRVWNzVTBGQlV5eERRVUZETEV0QlFVc3NRMEZCUXl4UFFVRlBMRU5CUVVNc1QwRkJUeXhGUVVG
RkxFZEJRVWNzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXpzN1FVRkZiRVVzV1VGQlNTeFpRVUZa
TEVOQlFVTXNWVUZCVlN4RlFVRkZPMEZCUXpOQ0xHMUNRVUZUTEVOQlFVTXNVVUZCVVN4SFFVRkhM
Rk5CUVZNc1EwRkJReXhMUVVGTExFTkJRVU1zVDBGQlR5eERRVUZETEZGQlFWRXNSVUZCUlN4SFFV
RkhMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU03VTBGRGRFVTdRVUZEUkN4WlFVRkpMRmxCUVZr
c1EwRkJReXhWUVVGVkxFbEJRVWtzV1VGQldTeERRVUZETEdGQlFXRXNSVUZCUlR0QlFVTjZSQ3h0
UWtGQlV5eERRVUZETEZWQlFWVXNSMEZCUnl4VFFVRlRMRU5CUVVNc1MwRkJTeXhEUVVGRExFOUJR
VThzUTBGQlF5eFZRVUZWTEVWQlFVVXNSMEZCUnl4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRE8x
TkJRelZGTzA5QlEwWXNUVUZCVFR0QlFVTk1MR2xDUVVGVExFTkJRVU1zVDBGQlR5eEhRVUZITEU5
QlFVOHNRMEZCUXl4UFFVRlBMRU5CUVVNN1FVRkRjRU1zYVVKQlFWTXNRMEZCUXl4UlFVRlJMRWRC
UVVjc1QwRkJUeXhEUVVGRExGRkJRVkVzUTBGQlF6dEJRVU4wUXl4cFFrRkJVeXhEUVVGRExGVkJR
VlVzUjBGQlJ5eFBRVUZQTEVOQlFVTXNWVUZCVlN4RFFVRkRPMDlCUXpORE8wdEJRMFlzUTBGQlF6
czdRVUZGUml4UFFVRkhMRU5CUVVNc1RVRkJUU3hIUVVGSExGVkJRVk1zUTBGQlF5eEZRVUZGTEVs
QlFVa3NSVUZCUlN4WFFVRlhMRVZCUVVVc1RVRkJUU3hGUVVGRk8wRkJRMnhFTEZWQlFVa3NXVUZC
V1N4RFFVRkRMR05CUVdNc1NVRkJTU3hEUVVGRExGZEJRVmNzUlVGQlJUdEJRVU12UXl4alFVRk5M
REJDUVVGakxIZENRVUYzUWl4RFFVRkRMRU5CUVVNN1QwRkRMME03UVVGRFJDeFZRVUZKTEZsQlFW
a3NRMEZCUXl4VFFVRlRMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVU3UVVGRGNrTXNZMEZCVFN3
d1FrRkJZeXg1UWtGQmVVSXNRMEZCUXl4RFFVRkRPMDlCUTJoRU96dEJRVVZFTEdGQlFVOHNWMEZC
Vnl4RFFVRkRMRk5CUVZNc1JVRkJSU3hEUVVGRExFVkJRVVVzV1VGQldTeERRVUZETEVOQlFVTXNR
MEZCUXl4RlFVRkZMRWxCUVVrc1JVRkJSU3hEUVVGRExFVkJRVVVzVjBGQlZ5eEZRVUZGTEUxQlFV
MHNRMEZCUXl4RFFVRkRPMHRCUTJwR0xFTkJRVU03UVVGRFJpeFhRVUZQTEVkQlFVY3NRMEZCUXp0
SFFVTmFPenRCUVVWTkxGZEJRVk1zVjBGQlZ5eERRVUZETEZOQlFWTXNSVUZCUlN4RFFVRkRMRVZC
UVVVc1JVRkJSU3hGUVVGRkxFbEJRVWtzUlVGQlJTeHRRa0ZCYlVJc1JVRkJSU3hYUVVGWExFVkJR
VVVzVFVGQlRTeEZRVUZGTzBGQlF6VkdMR0ZCUVZNc1NVRkJTU3hEUVVGRExFOUJRVThzUlVGQlow
STdWVUZCWkN4UFFVRlBMSGxFUVVGSExFVkJRVVU3TzBGQlEycERMRlZCUVVrc1lVRkJZU3hIUVVG
SExFMUJRVTBzUTBGQlF6dEJRVU16UWl4VlFVRkpMRTFCUVUwc1NVRkJTU3hQUVVGUExFbEJRVWtz
VFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZPMEZCUTJ4RExIRkNRVUZoTEVkQlFVY3NR
MEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFV
TTdUMEZETVVNN08wRkJSVVFzWVVGQlR5eEZRVUZGTEVOQlFVTXNVMEZCVXl4RlFVTm1MRTlCUVU4
c1JVRkRVQ3hUUVVGVExFTkJRVU1zVDBGQlR5eEZRVUZGTEZOQlFWTXNRMEZCUXl4UlFVRlJMRVZC
UTNKRExFOUJRVThzUTBGQlF5eEpRVUZKTEVsQlFVa3NTVUZCU1N4RlFVTndRaXhYUVVGWExFbEJR
VWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNWMEZCVnl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExG
ZEJRVmNzUTBGQlF5eEZRVU40UkN4aFFVRmhMRU5CUVVNc1EwRkJRenRMUVVOd1FqczdRVUZGUkN4
UlFVRkpMRWRCUVVjc2FVSkJRV2xDTEVOQlFVTXNSVUZCUlN4RlFVRkZMRWxCUVVrc1JVRkJSU3hU
UVVGVExFVkJRVVVzVFVGQlRTeEZRVUZGTEVsQlFVa3NSVUZCUlN4WFFVRlhMRU5CUVVNc1EwRkJR
enM3UVVGRmVrVXNVVUZCU1N4RFFVRkRMRTlCUVU4c1IwRkJSeXhEUVVGRExFTkJRVU03UVVGRGFr
SXNVVUZCU1N4RFFVRkRMRXRCUVVzc1IwRkJSeXhOUVVGTkxFZEJRVWNzVFVGQlRTeERRVUZETEUx
QlFVMHNSMEZCUnl4RFFVRkRMRU5CUVVNN1FVRkRlRU1zVVVGQlNTeERRVUZETEZkQlFWY3NSMEZC
Unl4dFFrRkJiVUlzU1VGQlNTeERRVUZETEVOQlFVTTdRVUZETlVNc1YwRkJUeXhKUVVGSkxFTkJR
VU03UjBGRFlqczdRVUZGVFN4WFFVRlRMR05CUVdNc1EwRkJReXhQUVVGUExFVkJRVVVzVDBGQlR5
eEZRVUZGTEU5QlFVOHNSVUZCUlR0QlFVTjRSQ3hSUVVGSkxFTkJRVU1zVDBGQlR5eEZRVUZGTzBG
QlExb3NWVUZCU1N4UFFVRlBMRU5CUVVNc1NVRkJTU3hMUVVGTExHZENRVUZuUWl4RlFVRkZPMEZC
UTNKRExGbEJRVWtzU1VGQlNTeEhRVUZITEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNN1FVRkRl
RUlzWlVGQlR5eEpRVUZKTEVOQlFVTXNaVUZCWlN4RFFVRkRMRXRCUVVzc1NVRkJTU3hGUVVGRk8w
RkJRM0pETEdOQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRE8xTkJRM0pDTzBG
QlEwUXNaVUZCVHl4SFFVRkhMRWxCUVVrc1EwRkJReXhsUVVGbExFTkJRVU1zUTBGQlF6dEJRVU5v
UXl4WlFVRkpMRU5CUVVNc1pVRkJaU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETzA5QlF6bENM
RTFCUVUwN1FVRkRUQ3hsUVVGUExFZEJRVWNzVDBGQlR5eERRVUZETEZGQlFWRXNRMEZCUXl4UFFV
RlBMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03VDBGRE1VTTdTMEZEUml4TlFVRk5MRWxCUVVr
c1EwRkJReXhQUVVGUExFTkJRVU1zU1VGQlNTeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWxC
UVVrc1JVRkJSVHM3UVVGRmVrTXNZVUZCVHl4RFFVRkRMRWxCUVVrc1IwRkJSeXhQUVVGUExFTkJR
VU03UVVGRGRrSXNZVUZCVHl4SFFVRkhMRTlCUVU4c1EwRkJReXhSUVVGUkxFTkJRVU1zVDBGQlR5
eERRVUZETEVOQlFVTTdTMEZEY2tNN1FVRkRSQ3hYUVVGUExFOUJRVThzUTBGQlF6dEhRVU5vUWpz
N1FVRkZUU3hYUVVGVExHRkJRV0VzUTBGQlF5eFBRVUZQTEVWQlFVVXNUMEZCVHl4RlFVRkZMRTlC
UVU4c1JVRkJSVHRCUVVOMlJDeFhRVUZQTEVOQlFVTXNUMEZCVHl4SFFVRkhMRWxCUVVrc1EwRkJR
enRCUVVOMlFpeFJRVUZKTEU5QlFVOHNRMEZCUXl4SFFVRkhMRVZCUVVVN1FVRkRaaXhoUVVGUExF
TkJRVU1zU1VGQlNTeERRVUZETEZkQlFWY3NSMEZCUnl4UFFVRlBMRU5CUVVNc1IwRkJSeXhEUVVG
RExFTkJRVU1zUTBGQlF5eEpRVUZKTEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1YwRkJWeXhE
UVVGRE8wdEJRM1pGT3p0QlFVVkVMRkZCUVVrc1dVRkJXU3haUVVGQkxFTkJRVU03UVVGRGFrSXNV
VUZCU1N4UFFVRlBMRU5CUVVNc1JVRkJSU3hKUVVGSkxFOUJRVThzUTBGQlF5eEZRVUZGTEV0QlFV
c3NTVUZCU1N4RlFVRkZPMEZCUTNKRExHRkJRVThzUTBGQlF5eEpRVUZKTEVkQlFVY3NUVUV6VHpK
Q0xGZEJRVmNzUTBFeVR6RkNMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dEJRVU42
UXl4clFrRkJXU3hIUVVGSExFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNaVUZCWlN4RFFVRkRM
RWRCUVVjc1QwRkJUeXhEUVVGRExFVkJRVVVzUTBGQlF6czdRVUZGTVVRc1ZVRkJTU3haUVVGWkxF
TkJRVU1zVVVGQlVTeEZRVUZGTzBGQlEzcENMR1ZCUVU4c1EwRkJReXhSUVVGUkxFZEJRVWNzVDBG
QlRTeE5RVUZOTEVOQlFVTXNSVUZCUlN4RlFVRkZMRTlCUVU4c1EwRkJReXhSUVVGUkxFVkJRVVVz
V1VGQldTeERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRPMDlCUXpsRk8wdEJRMFk3TzBGQlJVUXNV
VUZCU1N4UFFVRlBMRXRCUVVzc1UwRkJVeXhKUVVGSkxGbEJRVmtzUlVGQlJUdEJRVU42UXl4aFFV
RlBMRWRCUVVjc1dVRkJXU3hEUVVGRE8wdEJRM2hDT3p0QlFVVkVMRkZCUVVrc1QwRkJUeXhMUVVG
TExGTkJRVk1zUlVGQlJUdEJRVU42UWl4WlFVRk5MREJDUVVGakxHTkJRV01zUjBGQlJ5eFBRVUZQ
TEVOQlFVTXNTVUZCU1N4SFFVRkhMSEZDUVVGeFFpeERRVUZETEVOQlFVTTdTMEZETlVVc1RVRkJU
U3hKUVVGSkxFOUJRVThzV1VGQldTeFJRVUZSTEVWQlFVVTdRVUZEZEVNc1lVRkJUeXhQUVVGUExF
TkJRVU1zVDBGQlR5eEZRVUZGTEU5QlFVOHNRMEZCUXl4RFFVRkRPMHRCUTJ4RE8wZEJRMFk3TzBG
QlJVMHNWMEZCVXl4SlFVRkpMRWRCUVVjN1FVRkJSU3hYUVVGUExFVkJRVVVzUTBGQlF6dEhRVUZG
T3p0QlFVVnlReXhYUVVGVExGRkJRVkVzUTBGQlF5eFBRVUZQTEVWQlFVVXNTVUZCU1N4RlFVRkZP
MEZCUXk5Q0xGRkJRVWtzUTBGQlF5eEpRVUZKTEVsQlFVa3NSVUZCUlN4TlFVRk5MRWxCUVVrc1NV
RkJTU3hEUVVGQkxFRkJRVU1zUlVGQlJUdEJRVU01UWl4VlFVRkpMRWRCUVVjc1NVRkJTU3hIUVVG
SExFMUJiRkUwUWl4WFFVRlhMRU5CYTFFelFpeEpRVUZKTEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5C
UVVNN1FVRkRja01zVlVGQlNTeERRVUZETEVsQlFVa3NSMEZCUnl4UFFVRlBMRU5CUVVNN1MwRkRj
a0k3UVVGRFJDeFhRVUZQTEVsQlFVa3NRMEZCUXp0SFFVTmlPenRCUVVWRUxGZEJRVk1zYVVKQlFX
bENMRU5CUVVNc1JVRkJSU3hGUVVGRkxFbEJRVWtzUlVGQlJTeFRRVUZUTEVWQlFVVXNUVUZCVFN4
RlFVRkZMRWxCUVVrc1JVRkJSU3hYUVVGWExFVkJRVVU3UVVGRGVrVXNVVUZCU1N4RlFVRkZMRU5C
UVVNc1UwRkJVeXhGUVVGRk8wRkJRMmhDTEZWQlFVa3NTMEZCU3l4SFFVRkhMRVZCUVVVc1EwRkJR
enRCUVVObUxGVkJRVWtzUjBGQlJ5eEZRVUZGTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1JV
RkJSU3hMUVVGTExFVkJRVVVzVTBGQlV5eEZRVUZGTEUxQlFVMHNTVUZCU1N4TlFVRk5MRU5CUVVN
c1EwRkJReXhEUVVGRExFVkJRVVVzU1VGQlNTeEZRVUZGTEZkQlFWY3NSVUZCUlN4TlFVRk5MRU5C
UVVNc1EwRkJRenRCUVVNMVJpeGhRVUZOTEUxQlFVMHNRMEZCUXl4SlFVRkpMRVZCUVVVc1MwRkJT
eXhEUVVGRExFTkJRVU03UzBGRE0wSTdRVUZEUkN4WFFVRlBMRWxCUVVrc1EwRkJRenRIUVVOaUlp
d2labWxzWlNJNkluSjFiblJwYldVdWFuTWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUpwYlhC
dmNuUWdLaUJoY3lCVmRHbHNjeUJtY205dElDY3VMM1YwYVd4ekp6dGNibWx0Y0c5eWRDQkZlR05s
Y0hScGIyNGdabkp2YlNBbkxpOWxlR05sY0hScGIyNG5PMXh1YVcxd2IzSjBJSHNnUTA5TlVFbE1S
VkpmVWtWV1NWTkpUMDRzSUZKRlZrbFRTVTlPWDBOSVFVNUhSVk1zSUdOeVpXRjBaVVp5WVcxbElI
MGdabkp2YlNBbkxpOWlZWE5sSnp0Y2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlHTm9aV05yVW1W
MmFYTnBiMjRvWTI5dGNHbHNaWEpKYm1adktTQjdYRzRnSUdOdmJuTjBJR052YlhCcGJHVnlVbVYy
YVhOcGIyNGdQU0JqYjIxd2FXeGxja2x1Wm04Z0ppWWdZMjl0Y0dsc1pYSkpibVp2V3pCZElIeDhJ
REVzWEc0Z0lDQWdJQ0FnSUdOMWNuSmxiblJTWlhacGMybHZiaUE5SUVOUFRWQkpURVZTWDFKRlZr
bFRTVTlPTzF4dVhHNGdJR2xtSUNoamIyMXdhV3hsY2xKbGRtbHphVzl1SUNFOVBTQmpkWEp5Wlc1
MFVtVjJhWE5wYjI0cElIdGNiaUFnSUNCcFppQW9ZMjl0Y0dsc1pYSlNaWFpwYzJsdmJpQThJR04x
Y25KbGJuUlNaWFpwYzJsdmJpa2dlMXh1SUNBZ0lDQWdZMjl1YzNRZ2NuVnVkR2x0WlZabGNuTnBi
MjV6SUQwZ1VrVldTVk5KVDA1ZlEwaEJUa2RGVTF0amRYSnlaVzUwVW1WMmFYTnBiMjVkTEZ4dUlD
QWdJQ0FnSUNBZ0lDQWdZMjl0Y0dsc1pYSldaWEp6YVc5dWN5QTlJRkpGVmtsVFNVOU9YME5JUVU1
SFJWTmJZMjl0Y0dsc1pYSlNaWFpwYzJsdmJsMDdYRzRnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dSWGhq
WlhCMGFXOXVLQ2RVWlcxd2JHRjBaU0IzWVhNZ2NISmxZMjl0Y0dsc1pXUWdkMmwwYUNCaGJpQnZi
R1JsY2lCMlpYSnphVzl1SUc5bUlFaGhibVJzWldKaGNuTWdkR2hoYmlCMGFHVWdZM1Z5Y21WdWRD
QnlkVzUwYVcxbExpQW5JQ3RjYmlBZ0lDQWdJQ0FnSUNBZ0lDZFFiR1ZoYzJVZ2RYQmtZWFJsSUhs
dmRYSWdjSEpsWTI5dGNHbHNaWElnZEc4Z1lTQnVaWGRsY2lCMlpYSnphVzl1SUNnbklDc2djblZ1
ZEdsdFpWWmxjbk5wYjI1eklDc2dKeWtnYjNJZ1pHOTNibWR5WVdSbElIbHZkWElnY25WdWRHbHRa
U0IwYnlCaGJpQnZiR1JsY2lCMlpYSnphVzl1SUNnbklDc2dZMjl0Y0dsc1pYSldaWEp6YVc5dWN5
QXJJQ2NwTGljcE8xeHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0F2THlCVmMyVWdkR2hsSUdW
dFltVmtaR1ZrSUhabGNuTnBiMjRnYVc1bWJ5QnphVzVqWlNCMGFHVWdjblZ1ZEdsdFpTQmtiMlZ6
YmlkMElHdHViM2NnWVdKdmRYUWdkR2hwY3lCeVpYWnBjMmx2YmlCNVpYUmNiaUFnSUNBZ0lIUm9j
bTkzSUc1bGR5QkZlR05sY0hScGIyNG9KMVJsYlhCc1lYUmxJSGRoY3lCd2NtVmpiMjF3YVd4bFpD
QjNhWFJvSUdFZ2JtVjNaWElnZG1WeWMybHZiaUJ2WmlCSVlXNWtiR1ZpWVhKeklIUm9ZVzRnZEdo
bElHTjFjbkpsYm5RZ2NuVnVkR2x0WlM0Z0p5QXJYRzRnSUNBZ0lDQWdJQ0FnSUNBblVHeGxZWE5s
SUhWd1pHRjBaU0I1YjNWeUlISjFiblJwYldVZ2RHOGdZU0J1WlhkbGNpQjJaWEp6YVc5dUlDZ25J
Q3NnWTI5dGNHbHNaWEpKYm1adld6RmRJQ3NnSnlrdUp5azdYRzRnSUNBZ2ZWeHVJQ0I5WEc1OVhH
NWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQjBaVzF3YkdGMFpTaDBaVzF3YkdGMFpWTndaV01zSUdW
dWRpa2dlMXh1SUNBdktpQnBjM1JoYm1KMWJDQnBaMjV2Y21VZ2JtVjRkQ0FxTDF4dUlDQnBaaUFv
SVdWdWRpa2dlMXh1SUNBZ0lIUm9jbTkzSUc1bGR5QkZlR05sY0hScGIyNG9KMDV2SUdWdWRtbHli
MjV0Wlc1MElIQmhjM05sWkNCMGJ5QjBaVzF3YkdGMFpTY3BPMXh1SUNCOVhHNGdJR2xtSUNnaGRH
VnRjR3hoZEdWVGNHVmpJSHg4SUNGMFpXMXdiR0YwWlZOd1pXTXViV0ZwYmlrZ2UxeHVJQ0FnSUhS
b2NtOTNJRzVsZHlCRmVHTmxjSFJwYjI0b0oxVnVhMjV2ZDI0Z2RHVnRjR3hoZEdVZ2IySnFaV04w
T2lBbklDc2dkSGx3Wlc5bUlIUmxiWEJzWVhSbFUzQmxZeWs3WEc0Z0lIMWNibHh1SUNCMFpXMXdi
R0YwWlZOd1pXTXViV0ZwYmk1a1pXTnZjbUYwYjNJZ1BTQjBaVzF3YkdGMFpWTndaV011YldGcGJs
OWtPMXh1WEc0Z0lDOHZJRTV2ZEdVNklGVnphVzVuSUdWdWRpNVdUU0J5WldabGNtVnVZMlZ6SUhK
aGRHaGxjaUIwYUdGdUlHeHZZMkZzSUhaaGNpQnlaV1psY21WdVkyVnpJSFJvY205MVoyaHZkWFFn
ZEdocGN5QnpaV04wYVc5dUlIUnZJR0ZzYkc5M1hHNGdJQzh2SUdadmNpQmxlSFJsY201aGJDQjFj
MlZ5Y3lCMGJ5QnZkbVZ5Y21sa1pTQjBhR1Z6WlNCaGN5QndjM1ZsWkc4dGMzVndjRzl5ZEdWa0lF
RlFTWE11WEc0Z0lHVnVkaTVXVFM1amFHVmphMUpsZG1semFXOXVLSFJsYlhCc1lYUmxVM0JsWXk1
amIyMXdhV3hsY2lrN1hHNWNiaUFnWm5WdVkzUnBiMjRnYVc1MmIydGxVR0Z5ZEdsaGJGZHlZWEJ3
WlhJb2NHRnlkR2xoYkN3Z1kyOXVkR1Y0ZEN3Z2IzQjBhVzl1Y3lrZ2UxeHVJQ0FnSUdsbUlDaHZj
SFJwYjI1ekxtaGhjMmdwSUh0Y2JpQWdJQ0FnSUdOdmJuUmxlSFFnUFNCVmRHbHNjeTVsZUhSbGJt
UW9lMzBzSUdOdmJuUmxlSFFzSUc5d2RHbHZibk11YUdGemFDazdYRzRnSUNBZ0lDQnBaaUFvYjNC
MGFXOXVjeTVwWkhNcElIdGNiaUFnSUNBZ0lDQWdiM0IwYVc5dWN5NXBaSE5iTUYwZ1BTQjBjblZs
TzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmx4dUlDQWdJSEJoY25ScFlXd2dQU0JsYm5ZdVZrMHVj
bVZ6YjJ4MlpWQmhjblJwWVd3dVkyRnNiQ2gwYUdsekxDQndZWEowYVdGc0xDQmpiMjUwWlhoMExD
QnZjSFJwYjI1ektUdGNiaUFnSUNCc1pYUWdjbVZ6ZFd4MElEMGdaVzUyTGxaTkxtbHVkbTlyWlZC
aGNuUnBZV3d1WTJGc2JDaDBhR2x6TENCd1lYSjBhV0ZzTENCamIyNTBaWGgwTENCdmNIUnBiMjV6
S1R0Y2JseHVJQ0FnSUdsbUlDaHlaWE4xYkhRZ1BUMGdiblZzYkNBbUppQmxibll1WTI5dGNHbHNa
U2tnZTF4dUlDQWdJQ0FnYjNCMGFXOXVjeTV3WVhKMGFXRnNjMXR2Y0hScGIyNXpMbTVoYldWZElE
MGdaVzUyTG1OdmJYQnBiR1VvY0dGeWRHbGhiQ3dnZEdWdGNHeGhkR1ZUY0dWakxtTnZiWEJwYkdW
eVQzQjBhVzl1Y3l3Z1pXNTJLVHRjYmlBZ0lDQWdJSEpsYzNWc2RDQTlJRzl3ZEdsdmJuTXVjR0Z5
ZEdsaGJITmJiM0IwYVc5dWN5NXVZVzFsWFNoamIyNTBaWGgwTENCdmNIUnBiMjV6S1R0Y2JpQWdJ
Q0I5WEc0Z0lDQWdhV1lnS0hKbGMzVnNkQ0FoUFNCdWRXeHNLU0I3WEc0Z0lDQWdJQ0JwWmlBb2Iz
QjBhVzl1Y3k1cGJtUmxiblFwSUh0Y2JpQWdJQ0FnSUNBZ2JHVjBJR3hwYm1WeklEMGdjbVZ6ZFd4
MExuTndiR2wwS0NkY1hHNG5LVHRjYmlBZ0lDQWdJQ0FnWm05eUlDaHNaWFFnYVNBOUlEQXNJR3dn
UFNCc2FXNWxjeTVzWlc1bmRHZzdJR2tnUENCc095QnBLeXNwSUh0Y2JpQWdJQ0FnSUNBZ0lDQnBa
aUFvSVd4cGJtVnpXMmxkSUNZbUlHa2dLeUF4SUQwOVBTQnNLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lD
QmljbVZoYXp0Y2JpQWdJQ0FnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJQ0FnSUNCc2FXNWxjMXRwWFNB
OUlHOXdkR2x2Ym5NdWFXNWtaVzUwSUNzZ2JHbHVaWE5iYVYwN1hHNGdJQ0FnSUNBZ0lIMWNiaUFn
SUNBZ0lDQWdjbVZ6ZFd4MElEMGdiR2x1WlhNdWFtOXBiaWduWEZ4dUp5azdYRzRnSUNBZ0lDQjlY
RzRnSUNBZ0lDQnlaWFIxY200Z2NtVnpkV3gwTzF4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lD
QjBhSEp2ZHlCdVpYY2dSWGhqWlhCMGFXOXVLQ2RVYUdVZ2NHRnlkR2xoYkNBbklDc2diM0IwYVc5
dWN5NXVZVzFsSUNzZ0p5QmpiM1ZzWkNCdWIzUWdZbVVnWTI5dGNHbHNaV1FnZDJobGJpQnlkVzV1
YVc1bklHbHVJSEoxYm5ScGJXVXRiMjVzZVNCdGIyUmxKeWs3WEc0Z0lDQWdmVnh1SUNCOVhHNWNi
aUFnTHk4Z1NuVnpkQ0JoWkdRZ2QyRjBaWEpjYmlBZ2JHVjBJR052Ym5SaGFXNWxjaUE5SUh0Y2Jp
QWdJQ0J6ZEhKcFkzUTZJR1oxYm1OMGFXOXVLRzlpYWl3Z2JtRnRaU2tnZTF4dUlDQWdJQ0FnYVdZ
Z0tDRW9ibUZ0WlNCcGJpQnZZbW9wS1NCN1hHNGdJQ0FnSUNBZ0lIUm9jbTkzSUc1bGR5QkZlR05s
Y0hScGIyNG9KMXdpSnlBcklHNWhiV1VnS3lBblhDSWdibTkwSUdSbFptbHVaV1FnYVc0Z0p5QXJJ
RzlpYWlrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNCeVpYUjFjbTRnYjJKcVcyNWhiV1ZkTzF4dUlD
QWdJSDBzWEc0Z0lDQWdiRzl2YTNWd09pQm1kVzVqZEdsdmJpaGtaWEIwYUhNc0lHNWhiV1VwSUh0
Y2JpQWdJQ0FnSUdOdmJuTjBJR3hsYmlBOUlHUmxjSFJvY3k1c1pXNW5kR2c3WEc0Z0lDQWdJQ0Jt
YjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUd4bGJqc2dhU3NyS1NCN1hHNGdJQ0FnSUNBZ0lHbG1J
Q2hrWlhCMGFITmJhVjBnSmlZZ1pHVndkR2h6VzJsZFcyNWhiV1ZkSUNFOUlHNTFiR3dwSUh0Y2Jp
QWdJQ0FnSUNBZ0lDQnlaWFIxY200Z1pHVndkR2h6VzJsZFcyNWhiV1ZkTzF4dUlDQWdJQ0FnSUNC
OVhHNGdJQ0FnSUNCOVhHNGdJQ0FnZlN4Y2JpQWdJQ0JzWVcxaVpHRTZJR1oxYm1OMGFXOXVLR04x
Y25KbGJuUXNJR052Ym5SbGVIUXBJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQjBlWEJsYjJZZ1kzVnlj
bVZ1ZENBOVBUMGdKMloxYm1OMGFXOXVKeUEvSUdOMWNuSmxiblF1WTJGc2JDaGpiMjUwWlhoMEtT
QTZJR04xY25KbGJuUTdYRzRnSUNBZ2ZTeGNibHh1SUNBZ0lHVnpZMkZ3WlVWNGNISmxjM05wYjI0
NklGVjBhV3h6TG1WelkyRndaVVY0Y0hKbGMzTnBiMjRzWEc0Z0lDQWdhVzUyYjJ0bFVHRnlkR2xo
YkRvZ2FXNTJiMnRsVUdGeWRHbGhiRmR5WVhCd1pYSXNYRzVjYmlBZ0lDQm1iam9nWm5WdVkzUnBi
MjRvYVNrZ2UxeHVJQ0FnSUNBZ2JHVjBJSEpsZENBOUlIUmxiWEJzWVhSbFUzQmxZMXRwWFR0Y2Jp
QWdJQ0FnSUhKbGRDNWtaV052Y21GMGIzSWdQU0IwWlcxd2JHRjBaVk53WldOYmFTQXJJQ2RmWkNk
ZE8xeHVJQ0FnSUNBZ2NtVjBkWEp1SUhKbGREdGNiaUFnSUNCOUxGeHVYRzRnSUNBZ2NISnZaM0po
YlhNNklGdGRMRnh1SUNBZ0lIQnliMmR5WVcwNklHWjFibU4wYVc5dUtHa3NJR1JoZEdFc0lHUmxZ
MnhoY21Wa1FteHZZMnRRWVhKaGJYTXNJR0pzYjJOclVHRnlZVzF6TENCa1pYQjBhSE1wSUh0Y2Jp
QWdJQ0FnSUd4bGRDQndjbTluY21GdFYzSmhjSEJsY2lBOUlIUm9hWE11Y0hKdlozSmhiWE5iYVYw
c1hHNGdJQ0FnSUNBZ0lDQWdabTRnUFNCMGFHbHpMbVp1S0drcE8xeHVJQ0FnSUNBZ2FXWWdLR1Jo
ZEdFZ2ZId2daR1Z3ZEdoeklIeDhJR0pzYjJOclVHRnlZVzF6SUh4OElHUmxZMnhoY21Wa1FteHZZ
MnRRWVhKaGJYTXBJSHRjYmlBZ0lDQWdJQ0FnY0hKdlozSmhiVmR5WVhCd1pYSWdQU0IzY21Gd1VI
SnZaM0poYlNoMGFHbHpMQ0JwTENCbWJpd2daR0YwWVN3Z1pHVmpiR0Z5WldSQ2JHOWphMUJoY21G
dGN5d2dZbXh2WTJ0UVlYSmhiWE1zSUdSbGNIUm9jeWs3WEc0Z0lDQWdJQ0I5SUdWc2MyVWdhV1ln
S0NGd2NtOW5jbUZ0VjNKaGNIQmxjaWtnZTF4dUlDQWdJQ0FnSUNCd2NtOW5jbUZ0VjNKaGNIQmxj
aUE5SUhSb2FYTXVjSEp2WjNKaGJYTmJhVjBnUFNCM2NtRndVSEp2WjNKaGJTaDBhR2x6TENCcExD
Qm1iaWs3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdJQ0J5WlhSMWNtNGdjSEp2WjNKaGJWZHlZWEJ3WlhJ
N1hHNGdJQ0FnZlN4Y2JseHVJQ0FnSUdSaGRHRTZJR1oxYm1OMGFXOXVLSFpoYkhWbExDQmtaWEIw
YUNrZ2UxeHVJQ0FnSUNBZ2QyaHBiR1VnS0haaGJIVmxJQ1ltSUdSbGNIUm9MUzBwSUh0Y2JpQWdJ
Q0FnSUNBZ2RtRnNkV1VnUFNCMllXeDFaUzVmY0dGeVpXNTBPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lD
QWdjbVYwZFhKdUlIWmhiSFZsTzF4dUlDQWdJSDBzWEc0Z0lDQWdiV1Z5WjJVNklHWjFibU4wYVc5
dUtIQmhjbUZ0TENCamIyMXRiMjRwSUh0Y2JpQWdJQ0FnSUd4bGRDQnZZbW9nUFNCd1lYSmhiU0I4
ZkNCamIyMXRiMjQ3WEc1Y2JpQWdJQ0FnSUdsbUlDaHdZWEpoYlNBbUppQmpiMjF0YjI0Z0ppWWdL
SEJoY21GdElDRTlQU0JqYjIxdGIyNHBLU0I3WEc0Z0lDQWdJQ0FnSUc5aWFpQTlJRlYwYVd4ekxt
VjRkR1Z1WkNoN2ZTd2dZMjl0Ylc5dUxDQndZWEpoYlNrN1hHNGdJQ0FnSUNCOVhHNWNiaUFnSUNB
Z0lISmxkSFZ5YmlCdlltbzdYRzRnSUNBZ2ZTeGNibHh1SUNBZ0lHNXZiM0E2SUdWdWRpNVdUUzV1
YjI5d0xGeHVJQ0FnSUdOdmJYQnBiR1Z5U1c1bWJ6b2dkR1Z0Y0d4aGRHVlRjR1ZqTG1OdmJYQnBi
R1Z5WEc0Z0lIMDdYRzVjYmlBZ1puVnVZM1JwYjI0Z2NtVjBLR052Ym5SbGVIUXNJRzl3ZEdsdmJu
TWdQU0I3ZlNrZ2UxeHVJQ0FnSUd4bGRDQmtZWFJoSUQwZ2IzQjBhVzl1Y3k1a1lYUmhPMXh1WEc0
Z0lDQWdjbVYwTGw5elpYUjFjQ2h2Y0hScGIyNXpLVHRjYmlBZ0lDQnBaaUFvSVc5d2RHbHZibk11
Y0dGeWRHbGhiQ0FtSmlCMFpXMXdiR0YwWlZOd1pXTXVkWE5sUkdGMFlTa2dlMXh1SUNBZ0lDQWda
R0YwWVNBOUlHbHVhWFJFWVhSaEtHTnZiblJsZUhRc0lHUmhkR0VwTzF4dUlDQWdJSDFjYmlBZ0lD
QnNaWFFnWkdWd2RHaHpMRnh1SUNBZ0lDQWdJQ0JpYkc5amExQmhjbUZ0Y3lBOUlIUmxiWEJzWVhS
bFUzQmxZeTUxYzJWQ2JHOWphMUJoY21GdGN5QS9JRnRkSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0Fn
SUdsbUlDaDBaVzF3YkdGMFpWTndaV011ZFhObFJHVndkR2h6S1NCN1hHNGdJQ0FnSUNCcFppQW9i
M0IwYVc5dWN5NWtaWEIwYUhNcElIdGNiaUFnSUNBZ0lDQWdaR1Z3ZEdoeklEMGdZMjl1ZEdWNGRD
QWhQU0J2Y0hScGIyNXpMbVJsY0hSb2Mxc3dYU0EvSUZ0amIyNTBaWGgwWFM1amIyNWpZWFFvYjNC
MGFXOXVjeTVrWlhCMGFITXBJRG9nYjNCMGFXOXVjeTVrWlhCMGFITTdYRzRnSUNBZ0lDQjlJR1Zz
YzJVZ2UxeHVJQ0FnSUNBZ0lDQmtaWEIwYUhNZ1BTQmJZMjl1ZEdWNGRGMDdYRzRnSUNBZ0lDQjlY
RzRnSUNBZ2ZWeHVYRzRnSUNBZ1puVnVZM1JwYjI0Z2JXRnBiaWhqYjI1MFpYaDBMeW9zSUc5d2RH
bHZibk1xTHlrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUNjbklDc2dkR1Z0Y0d4aGRHVlRjR1ZqTG0x
aGFXNG9ZMjl1ZEdGcGJtVnlMQ0JqYjI1MFpYaDBMQ0JqYjI1MFlXbHVaWEl1YUdWc2NHVnljeXdn
WTI5dWRHRnBibVZ5TG5CaGNuUnBZV3h6TENCa1lYUmhMQ0JpYkc5amExQmhjbUZ0Y3l3Z1pHVndk
R2h6S1R0Y2JpQWdJQ0I5WEc0Z0lDQWdiV0ZwYmlBOUlHVjRaV04xZEdWRVpXTnZjbUYwYjNKektI
UmxiWEJzWVhSbFUzQmxZeTV0WVdsdUxDQnRZV2x1TENCamIyNTBZV2x1WlhJc0lHOXdkR2x2Ym5N
dVpHVndkR2h6SUh4OElGdGRMQ0JrWVhSaExDQmliRzlqYTFCaGNtRnRjeWs3WEc0Z0lDQWdjbVYw
ZFhKdUlHMWhhVzRvWTI5dWRHVjRkQ3dnYjNCMGFXOXVjeWs3WEc0Z0lIMWNiaUFnY21WMExtbHpW
Rzl3SUQwZ2RISjFaVHRjYmx4dUlDQnlaWFF1WDNObGRIVndJRDBnWm5WdVkzUnBiMjRvYjNCMGFX
OXVjeWtnZTF4dUlDQWdJR2xtSUNnaGIzQjBhVzl1Y3k1d1lYSjBhV0ZzS1NCN1hHNGdJQ0FnSUNC
amIyNTBZV2x1WlhJdWFHVnNjR1Z5Y3lBOUlHTnZiblJoYVc1bGNpNXRaWEpuWlNodmNIUnBiMjV6
TG1obGJIQmxjbk1zSUdWdWRpNW9aV3h3WlhKektUdGNibHh1SUNBZ0lDQWdhV1lnS0hSbGJYQnNZ
WFJsVTNCbFl5NTFjMlZRWVhKMGFXRnNLU0I3WEc0Z0lDQWdJQ0FnSUdOdmJuUmhhVzVsY2k1d1lY
SjBhV0ZzY3lBOUlHTnZiblJoYVc1bGNpNXRaWEpuWlNodmNIUnBiMjV6TG5CaGNuUnBZV3h6TENC
bGJuWXVjR0Z5ZEdsaGJITXBPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdhV1lnS0hSbGJYQnNZWFJs
VTNCbFl5NTFjMlZRWVhKMGFXRnNJSHg4SUhSbGJYQnNZWFJsVTNCbFl5NTFjMlZFWldOdmNtRjBi
M0p6S1NCN1hHNGdJQ0FnSUNBZ0lHTnZiblJoYVc1bGNpNWtaV052Y21GMGIzSnpJRDBnWTI5dWRH
RnBibVZ5TG0xbGNtZGxLRzl3ZEdsdmJuTXVaR1ZqYjNKaGRHOXljeXdnWlc1MkxtUmxZMjl5WVhS
dmNuTXBPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNCamIyNTBZV2x1
WlhJdWFHVnNjR1Z5Y3lBOUlHOXdkR2x2Ym5NdWFHVnNjR1Z5Y3p0Y2JpQWdJQ0FnSUdOdmJuUmhh
VzVsY2k1d1lYSjBhV0ZzY3lBOUlHOXdkR2x2Ym5NdWNHRnlkR2xoYkhNN1hHNGdJQ0FnSUNCamIy
NTBZV2x1WlhJdVpHVmpiM0poZEc5eWN5QTlJRzl3ZEdsdmJuTXVaR1ZqYjNKaGRHOXljenRjYmlB
Z0lDQjlYRzRnSUgwN1hHNWNiaUFnY21WMExsOWphR2xzWkNBOUlHWjFibU4wYVc5dUtHa3NJR1Jo
ZEdFc0lHSnNiMk5yVUdGeVlXMXpMQ0JrWlhCMGFITXBJSHRjYmlBZ0lDQnBaaUFvZEdWdGNHeGhk
R1ZUY0dWakxuVnpaVUpzYjJOclVHRnlZVzF6SUNZbUlDRmliRzlqYTFCaGNtRnRjeWtnZTF4dUlD
QWdJQ0FnZEdoeWIzY2dibVYzSUVWNFkyVndkR2x2YmlnbmJYVnpkQ0J3WVhOeklHSnNiMk5ySUhC
aGNtRnRjeWNwTzF4dUlDQWdJSDFjYmlBZ0lDQnBaaUFvZEdWdGNHeGhkR1ZUY0dWakxuVnpaVVJs
Y0hSb2N5QW1KaUFoWkdWd2RHaHpLU0I3WEc0Z0lDQWdJQ0IwYUhKdmR5QnVaWGNnUlhoalpYQjBh
Vzl1S0NkdGRYTjBJSEJoYzNNZ2NHRnlaVzUwSUdSbGNIUm9jeWNwTzF4dUlDQWdJSDFjYmx4dUlD
QWdJSEpsZEhWeWJpQjNjbUZ3VUhKdlozSmhiU2hqYjI1MFlXbHVaWElzSUdrc0lIUmxiWEJzWVhS
bFUzQmxZMXRwWFN3Z1pHRjBZU3dnTUN3Z1lteHZZMnRRWVhKaGJYTXNJR1JsY0hSb2N5azdYRzRn
SUgwN1hHNGdJSEpsZEhWeWJpQnlaWFE3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQjNj
bUZ3VUhKdlozSmhiU2hqYjI1MFlXbHVaWElzSUdrc0lHWnVMQ0JrWVhSaExDQmtaV05zWVhKbFpF
SnNiMk5yVUdGeVlXMXpMQ0JpYkc5amExQmhjbUZ0Y3l3Z1pHVndkR2h6S1NCN1hHNGdJR1oxYm1O
MGFXOXVJSEJ5YjJjb1kyOXVkR1Y0ZEN3Z2IzQjBhVzl1Y3lBOUlIdDlLU0I3WEc0Z0lDQWdiR1Yw
SUdOMWNuSmxiblJFWlhCMGFITWdQU0JrWlhCMGFITTdYRzRnSUNBZ2FXWWdLR1JsY0hSb2N5QW1K
aUJqYjI1MFpYaDBJQ0U5SUdSbGNIUm9jMXN3WFNrZ2UxeHVJQ0FnSUNBZ1kzVnljbVZ1ZEVSbGNI
Um9jeUE5SUZ0amIyNTBaWGgwWFM1amIyNWpZWFFvWkdWd2RHaHpLVHRjYmlBZ0lDQjlYRzVjYmlB
Z0lDQnlaWFIxY200Z1ptNG9ZMjl1ZEdGcGJtVnlMRnh1SUNBZ0lDQWdJQ0JqYjI1MFpYaDBMRnh1
SUNBZ0lDQWdJQ0JqYjI1MFlXbHVaWEl1YUdWc2NHVnljeXdnWTI5dWRHRnBibVZ5TG5CaGNuUnBZ
V3h6TEZ4dUlDQWdJQ0FnSUNCdmNIUnBiMjV6TG1SaGRHRWdmSHdnWkdGMFlTeGNiaUFnSUNBZ0lD
QWdZbXh2WTJ0UVlYSmhiWE1nSmlZZ1cyOXdkR2x2Ym5NdVlteHZZMnRRWVhKaGJYTmRMbU52Ym1O
aGRDaGliRzlqYTFCaGNtRnRjeWtzWEc0Z0lDQWdJQ0FnSUdOMWNuSmxiblJFWlhCMGFITXBPMXh1
SUNCOVhHNWNiaUFnY0hKdlp5QTlJR1Y0WldOMWRHVkVaV052Y21GMGIzSnpLR1p1TENCd2NtOW5M
Q0JqYjI1MFlXbHVaWElzSUdSbGNIUm9jeXdnWkdGMFlTd2dZbXh2WTJ0UVlYSmhiWE1wTzF4dVhH
NGdJSEJ5YjJjdWNISnZaM0poYlNBOUlHazdYRzRnSUhCeWIyY3VaR1Z3ZEdnZ1BTQmtaWEIwYUhN
Z1B5QmtaWEIwYUhNdWJHVnVaM1JvSURvZ01EdGNiaUFnY0hKdlp5NWliRzlqYTFCaGNtRnRjeUE5
SUdSbFkyeGhjbVZrUW14dlkydFFZWEpoYlhNZ2ZId2dNRHRjYmlBZ2NtVjBkWEp1SUhCeWIyYzdY
RzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCeVpYTnZiSFpsVUdGeWRHbGhiQ2h3WVhKMGFX
RnNMQ0JqYjI1MFpYaDBMQ0J2Y0hScGIyNXpLU0I3WEc0Z0lHbG1JQ2doY0dGeWRHbGhiQ2tnZTF4
dUlDQWdJR2xtSUNodmNIUnBiMjV6TG01aGJXVWdQVDA5SUNkQWNHRnlkR2xoYkMxaWJHOWpheWNw
SUh0Y2JpQWdJQ0FnSUd4bGRDQmtZWFJoSUQwZ2IzQjBhVzl1Y3k1a1lYUmhPMXh1SUNBZ0lDQWdk
MmhwYkdVZ0tHUmhkR0ZiSjNCaGNuUnBZV3d0WW14dlkyc25YU0E5UFQwZ2JtOXZjQ2tnZTF4dUlD
QWdJQ0FnSUNCa1lYUmhJRDBnWkdGMFlTNWZjR0Z5Wlc1ME8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNB
Z2NHRnlkR2xoYkNBOUlHUmhkR0ZiSjNCaGNuUnBZV3d0WW14dlkyc25YVHRjYmlBZ0lDQWdJR1Jo
ZEdGYkozQmhjblJwWVd3dFlteHZZMnNuWFNBOUlHNXZiM0E3WEc0Z0lDQWdmU0JsYkhObElIdGNi
aUFnSUNBZ0lIQmhjblJwWVd3Z1BTQnZjSFJwYjI1ekxuQmhjblJwWVd4elcyOXdkR2x2Ym5NdWJt
RnRaVjA3WEc0Z0lDQWdmVnh1SUNCOUlHVnNjMlVnYVdZZ0tDRndZWEowYVdGc0xtTmhiR3dnSmlZ
Z0lXOXdkR2x2Ym5NdWJtRnRaU2tnZTF4dUlDQWdJQzh2SUZSb2FYTWdhWE1nWVNCa2VXNWhiV2xq
SUhCaGNuUnBZV3dnZEdoaGRDQnlaWFIxY201bFpDQmhJSE4wY21sdVoxeHVJQ0FnSUc5d2RHbHZi
bk11Ym1GdFpTQTlJSEJoY25ScFlXdzdYRzRnSUNBZ2NHRnlkR2xoYkNBOUlHOXdkR2x2Ym5NdWNH
RnlkR2xoYkhOYmNHRnlkR2xoYkYwN1hHNGdJSDFjYmlBZ2NtVjBkWEp1SUhCaGNuUnBZV3c3WEc1
OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQnBiblp2YTJWUVlYSjBhV0ZzS0hCaGNuUnBZV3dz
SUdOdmJuUmxlSFFzSUc5d2RHbHZibk1wSUh0Y2JpQWdiM0IwYVc5dWN5NXdZWEowYVdGc0lEMGdk
SEoxWlR0Y2JpQWdhV1lnS0c5d2RHbHZibk11YVdSektTQjdYRzRnSUNBZ2IzQjBhVzl1Y3k1a1lY
UmhMbU52Ym5SbGVIUlFZWFJvSUQwZ2IzQjBhVzl1Y3k1cFpITmJNRjBnZkh3Z2IzQjBhVzl1Y3k1
a1lYUmhMbU52Ym5SbGVIUlFZWFJvTzF4dUlDQjlYRzVjYmlBZ2JHVjBJSEJoY25ScFlXeENiRzlq
YXp0Y2JpQWdhV1lnS0c5d2RHbHZibk11Wm00Z0ppWWdiM0IwYVc5dWN5NW1iaUFoUFQwZ2JtOXZj
Q2tnZTF4dUlDQWdJRzl3ZEdsdmJuTXVaR0YwWVNBOUlHTnlaV0YwWlVaeVlXMWxLRzl3ZEdsdmJu
TXVaR0YwWVNrN1hHNGdJQ0FnY0dGeWRHbGhiRUpzYjJOcklEMGdiM0IwYVc5dWN5NWtZWFJoV3lk
d1lYSjBhV0ZzTFdKc2IyTnJKMTBnUFNCdmNIUnBiMjV6TG1adU8xeHVYRzRnSUNBZ2FXWWdLSEJo
Y25ScFlXeENiRzlqYXk1d1lYSjBhV0ZzY3lrZ2UxeHVJQ0FnSUNBZ2IzQjBhVzl1Y3k1d1lYSjBh
V0ZzY3lBOUlGVjBhV3h6TG1WNGRHVnVaQ2g3ZlN3Z2IzQjBhVzl1Y3k1d1lYSjBhV0ZzY3l3Z2NH
RnlkR2xoYkVKc2IyTnJMbkJoY25ScFlXeHpLVHRjYmlBZ0lDQjlYRzRnSUgxY2JseHVJQ0JwWmlB
b2NHRnlkR2xoYkNBOVBUMGdkVzVrWldacGJtVmtJQ1ltSUhCaGNuUnBZV3hDYkc5amF5a2dlMXh1
SUNBZ0lIQmhjblJwWVd3Z1BTQndZWEowYVdGc1FteHZZMnM3WEc0Z0lIMWNibHh1SUNCcFppQW9j
R0Z5ZEdsaGJDQTlQVDBnZFc1a1pXWnBibVZrS1NCN1hHNGdJQ0FnZEdoeWIzY2dibVYzSUVWNFky
VndkR2x2YmlnblZHaGxJSEJoY25ScFlXd2dKeUFySUc5d2RHbHZibk11Ym1GdFpTQXJJQ2NnWTI5
MWJHUWdibTkwSUdKbElHWnZkVzVrSnlrN1hHNGdJSDBnWld4elpTQnBaaUFvY0dGeWRHbGhiQ0Jw
Ym5OMFlXNWpaVzltSUVaMWJtTjBhVzl1S1NCN1hHNGdJQ0FnY21WMGRYSnVJSEJoY25ScFlXd29Z
Mjl1ZEdWNGRDd2diM0IwYVc5dWN5azdYRzRnSUgxY2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFX
OXVJRzV2YjNBb0tTQjdJSEpsZEhWeWJpQW5KenNnZlZ4dVhHNW1kVzVqZEdsdmJpQnBibWwwUkdG
MFlTaGpiMjUwWlhoMExDQmtZWFJoS1NCN1hHNGdJR2xtSUNnaFpHRjBZU0I4ZkNBaEtDZHliMjkw
SnlCcGJpQmtZWFJoS1NrZ2UxeHVJQ0FnSUdSaGRHRWdQU0JrWVhSaElEOGdZM0psWVhSbFJuSmhi
V1VvWkdGMFlTa2dPaUI3ZlR0Y2JpQWdJQ0JrWVhSaExuSnZiM1FnUFNCamIyNTBaWGgwTzF4dUlD
QjlYRzRnSUhKbGRIVnliaUJrWVhSaE8xeHVmVnh1WEc1bWRXNWpkR2x2YmlCbGVHVmpkWFJsUkdW
amIzSmhkRzl5Y3lobWJpd2djSEp2Wnl3Z1kyOXVkR0ZwYm1WeUxDQmtaWEIwYUhNc0lHUmhkR0Vz
SUdKc2IyTnJVR0Z5WVcxektTQjdYRzRnSUdsbUlDaG1iaTVrWldOdmNtRjBiM0lwSUh0Y2JpQWdJ
Q0JzWlhRZ2NISnZjSE1nUFNCN2ZUdGNiaUFnSUNCd2NtOW5JRDBnWm00dVpHVmpiM0poZEc5eUtI
QnliMmNzSUhCeWIzQnpMQ0JqYjI1MFlXbHVaWElzSUdSbGNIUm9jeUFtSmlCa1pYQjBhSE5iTUYw
c0lHUmhkR0VzSUdKc2IyTnJVR0Z5WVcxekxDQmtaWEIwYUhNcE8xeHVJQ0FnSUZWMGFXeHpMbVY0
ZEdWdVpDaHdjbTluTENCd2NtOXdjeWs3WEc0Z0lIMWNiaUFnY21WMGRYSnVJSEJ5YjJjN1hHNTlY
RzRpWFgwPQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5k
bGViYXJzL2Rpc3QvYW1kL2hhbmRsZWJhcnMvc2FmZS1zdHJpbmcuanMgYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9q
cXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9hbWQvaGFuZGxlYmFycy9zYWZlLXN0
cmluZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xMTE4YzEyZGVhYzU3MDFkYjJiYjUyNDU0MTAzMGJhNjkyY2Y1
ZWI5Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9o
YW5kbGViYXJzL2Rpc3QvYW1kL2hhbmRsZWJhcnMvc2FmZS1zdHJpbmcuanMKQEAgLTAsMCArMSwx
NSBAQAorZGVmaW5lKFsnZXhwb3J0cycsICdtb2R1bGUnXSwgZnVuY3Rpb24gKGV4cG9ydHMsIG1v
ZHVsZSkgeworICAvLyBCdWlsZCBvdXQgb3VyIGJhc2ljIFNhZmVTdHJpbmcgdHlwZQorICAndXNl
IHN0cmljdCc7CisKKyAgZnVuY3Rpb24gU2FmZVN0cmluZyhzdHJpbmcpIHsKKyAgICB0aGlzLnN0
cmluZyA9IHN0cmluZzsKKyAgfQorCisgIFNhZmVTdHJpbmcucHJvdG90eXBlLnRvU3RyaW5nID0g
U2FmZVN0cmluZy5wcm90b3R5cGUudG9IVE1MID0gZnVuY3Rpb24gKCkgeworICAgIHJldHVybiAn
JyArIHRoaXMuc3RyaW5nOworICB9OworCisgIG1vZHVsZS5leHBvcnRzID0gU2FmZVN0cmluZzsK
K30pOworLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxl
eUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYklpNHVMeTR1THk0dUwyeHBZaTlvWVc1a2JH
VmlZWEp6TDNOaFptVXRjM1J5YVc1bkxtcHpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNN
aU9pSTdPenM3UVVGRFFTeFhRVUZUTEZWQlFWVXNRMEZCUXl4TlFVRk5MRVZCUVVVN1FVRkRNVUlz
VVVGQlNTeERRVUZETEUxQlFVMHNSMEZCUnl4TlFVRk5MRU5CUVVNN1IwRkRkRUk3TzBGQlJVUXNX
VUZCVlN4RFFVRkRMRk5CUVZNc1EwRkJReXhSUVVGUkxFZEJRVWNzVlVGQlZTeERRVUZETEZOQlFW
TXNRMEZCUXl4TlFVRk5MRWRCUVVjc1dVRkJWenRCUVVOMlJTeFhRVUZQTEVWQlFVVXNSMEZCUnl4
SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRE8wZEJRM3BDTEVOQlFVTTdPMjFDUVVWaExGVkJRVlVp
TENKbWFXeGxJam9pYzJGbVpTMXpkSEpwYm1jdWFuTWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZX
eUl2THlCQ2RXbHNaQ0J2ZFhRZ2IzVnlJR0poYzJsaklGTmhabVZUZEhKcGJtY2dkSGx3WlZ4dVpu
VnVZM1JwYjI0Z1UyRm1aVk4wY21sdVp5aHpkSEpwYm1jcElIdGNiaUFnZEdocGN5NXpkSEpwYm1j
Z1BTQnpkSEpwYm1jN1hHNTlYRzVjYmxOaFptVlRkSEpwYm1jdWNISnZkRzkwZVhCbExuUnZVM1J5
YVc1bklEMGdVMkZtWlZOMGNtbHVaeTV3Y205MGIzUjVjR1V1ZEc5SVZFMU1JRDBnWm5WdVkzUnBi
MjRvS1NCN1hHNGdJSEpsZEhWeWJpQW5KeUFySUhSb2FYTXVjM1J5YVc1bk8xeHVmVHRjYmx4dVpY
aHdiM0owSUdSbFptRjFiSFFnVTJGbVpWTjBjbWx1Wnp0Y2JpSmRmUT09CmRpZmYgLS1naXQgYS9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9hbWQvaGFuZGxl
YmFycy91dGlscy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFy
cy9kaXN0L2FtZC9oYW5kbGViYXJzL3V0aWxzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2ZDU2OTJkYmVmMjdl
YjIwODM5YjlkNzE1OTEzODY0NjliYjlhNjMKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9hbWQvaGFuZGxlYmFycy91dGls
cy5qcwpAQCAtMCwwICsxLDEyNiBAQAorZGVmaW5lKFsnZXhwb3J0cyddLCBmdW5jdGlvbiAoZXhw
b3J0cykgeworICAndXNlIHN0cmljdCc7CisKKyAgZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsK
KyAgZXhwb3J0cy5leHRlbmQgPSBleHRlbmQ7CisgIGV4cG9ydHMuaW5kZXhPZiA9IGluZGV4T2Y7
CisgIGV4cG9ydHMuZXNjYXBlRXhwcmVzc2lvbiA9IGVzY2FwZUV4cHJlc3Npb247CisgIGV4cG9y
dHMuaXNFbXB0eSA9IGlzRW1wdHk7CisgIGV4cG9ydHMuY3JlYXRlRnJhbWUgPSBjcmVhdGVGcmFt
ZTsKKyAgZXhwb3J0cy5ibG9ja1BhcmFtcyA9IGJsb2NrUGFyYW1zOworICBleHBvcnRzLmFwcGVu
ZENvbnRleHRQYXRoID0gYXBwZW5kQ29udGV4dFBhdGg7CisgIHZhciBlc2NhcGUgPSB7CisgICAg
JyYnOiAnJmFtcDsnLAorICAgICc8JzogJyZsdDsnLAorICAgICc+JzogJyZndDsnLAorICAgICci
JzogJyZxdW90OycsCisgICAgIiciOiAnJiN4Mjc7JywKKyAgICAnYCc6ICcmI3g2MDsnLAorICAg
ICc9JzogJyYjeDNEOycKKyAgfTsKKworICB2YXIgYmFkQ2hhcnMgPSAvWyY8PiInYD1dL2csCisg
ICAgICBwb3NzaWJsZSA9IC9bJjw+IidgPV0vOworCisgIGZ1bmN0aW9uIGVzY2FwZUNoYXIoY2hy
KSB7CisgICAgcmV0dXJuIGVzY2FwZVtjaHJdOworICB9CisKKyAgZnVuY3Rpb24gZXh0ZW5kKG9i
aiAvKiAsIC4uLnNvdXJjZSAqLykgeworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICBmb3IgKHZhciBrZXkgaW4gYXJndW1lbnRzW2ldKSB7Cisg
ICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYXJndW1lbnRz
W2ldLCBrZXkpKSB7CisgICAgICAgICAgb2JqW2tleV0gPSBhcmd1bWVudHNbaV1ba2V5XTsKKyAg
ICAgICAgfQorICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBvYmo7CisgIH0KKworICB2YXIg
dG9TdHJpbmcgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nOworCisgIGV4cG9ydHMudG9TdHJp
bmcgPSB0b1N0cmluZzsKKyAgLy8gU291cmNlZCBmcm9tIGxvZGFzaAorICAvLyBodHRwczovL2dp
dGh1Yi5jb20vYmVzdGllanMvbG9kYXNoL2Jsb2IvbWFzdGVyL0xJQ0VOU0UudHh0CisgIC8qIGVz
bGludC1kaXNhYmxlIGZ1bmMtc3R5bGUgKi8KKyAgdmFyIGlzRnVuY3Rpb24gPSBmdW5jdGlvbiBp
c0Z1bmN0aW9uKHZhbHVlKSB7CisgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9u
JzsKKyAgfTsKKyAgLy8gZmFsbGJhY2sgZm9yIG9sZGVyIHZlcnNpb25zIG9mIENocm9tZSBhbmQg
U2FmYXJpCisgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovCisgIGlmIChpc0Z1bmN0aW9uKC94
LykpIHsKKyAgICBleHBvcnRzLmlzRnVuY3Rpb24gPSBpc0Z1bmN0aW9uID0gZnVuY3Rpb24gKHZh
bHVlKSB7CisgICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHRvU3Ry
aW5nLmNhbGwodmFsdWUpID09PSAnW29iamVjdCBGdW5jdGlvbl0nOworICAgIH07CisgIH0KKyAg
ZXhwb3J0cy5pc0Z1bmN0aW9uID0gaXNGdW5jdGlvbjsKKworICAvKiBlc2xpbnQtZW5hYmxlIGZ1
bmMtc3R5bGUgKi8KKworICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLworICB2YXIgaXNBcnJh
eSA9IEFycmF5LmlzQXJyYXkgfHwgZnVuY3Rpb24gKHZhbHVlKSB7CisgICAgcmV0dXJuIHZhbHVl
ICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgPyB0b1N0cmluZy5jYWxsKHZhbHVlKSA9PT0g
J1tvYmplY3QgQXJyYXldJyA6IGZhbHNlOworICB9OworCisgIGV4cG9ydHMuaXNBcnJheSA9IGlz
QXJyYXk7CisgIC8vIE9sZGVyIElFIHZlcnNpb25zIGRvIG5vdCBkaXJlY3RseSBzdXBwb3J0IGlu
ZGV4T2Ygc28gd2UgbXVzdCBpbXBsZW1lbnQgb3VyIG93biwgc2FkbHkuCisKKyAgZnVuY3Rpb24g
aW5kZXhPZihhcnJheSwgdmFsdWUpIHsKKyAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gYXJyYXku
bGVuZ3RoOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgIGlmIChhcnJheVtpXSA9PT0gdmFsdWUpIHsK
KyAgICAgICAgcmV0dXJuIGk7CisgICAgICB9CisgICAgfQorICAgIHJldHVybiAtMTsKKyAgfQor
CisgIGZ1bmN0aW9uIGVzY2FwZUV4cHJlc3Npb24oc3RyaW5nKSB7CisgICAgaWYgKHR5cGVvZiBz
dHJpbmcgIT09ICdzdHJpbmcnKSB7CisgICAgICAvLyBkb24ndCBlc2NhcGUgU2FmZVN0cmluZ3Ms
IHNpbmNlIHRoZXkncmUgYWxyZWFkeSBzYWZlCisgICAgICBpZiAoc3RyaW5nICYmIHN0cmluZy50
b0hUTUwpIHsKKyAgICAgICAgcmV0dXJuIHN0cmluZy50b0hUTUwoKTsKKyAgICAgIH0gZWxzZSBp
ZiAoc3RyaW5nID09IG51bGwpIHsKKyAgICAgICAgcmV0dXJuICcnOworICAgICAgfSBlbHNlIGlm
ICghc3RyaW5nKSB7CisgICAgICAgIHJldHVybiBzdHJpbmcgKyAnJzsKKyAgICAgIH0KKworICAg
ICAgLy8gRm9yY2UgYSBzdHJpbmcgY29udmVyc2lvbiBhcyB0aGlzIHdpbGwgYmUgZG9uZSBieSB0
aGUgYXBwZW5kIHJlZ2FyZGxlc3MgYW5kCisgICAgICAvLyB0aGUgcmVnZXggdGVzdCB3aWxsIGRv
IHRoaXMgdHJhbnNwYXJlbnRseSBiZWhpbmQgdGhlIHNjZW5lcywgY2F1c2luZyBpc3N1ZXMgaWYK
KyAgICAgIC8vIGFuIG9iamVjdCdzIHRvIHN0cmluZyBoYXMgZXNjYXBlZCBjaGFyYWN0ZXJzIGlu
IGl0LgorICAgICAgc3RyaW5nID0gJycgKyBzdHJpbmc7CisgICAgfQorCisgICAgaWYgKCFwb3Nz
aWJsZS50ZXN0KHN0cmluZykpIHsKKyAgICAgIHJldHVybiBzdHJpbmc7CisgICAgfQorICAgIHJl
dHVybiBzdHJpbmcucmVwbGFjZShiYWRDaGFycywgZXNjYXBlQ2hhcik7CisgIH0KKworICBmdW5j
dGlvbiBpc0VtcHR5KHZhbHVlKSB7CisgICAgaWYgKCF2YWx1ZSAmJiB2YWx1ZSAhPT0gMCkgewor
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfSBlbHNlIGlmIChpc0FycmF5KHZhbHVlKSAmJiB2YWx1
ZS5sZW5ndGggPT09IDApIHsKKyAgICAgIHJldHVybiB0cnVlOworICAgIH0gZWxzZSB7CisgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorICB9CisKKyAgZnVuY3Rpb24gY3JlYXRlRnJhbWUob2Jq
ZWN0KSB7CisgICAgdmFyIGZyYW1lID0gZXh0ZW5kKHt9LCBvYmplY3QpOworICAgIGZyYW1lLl9w
YXJlbnQgPSBvYmplY3Q7CisgICAgcmV0dXJuIGZyYW1lOworICB9CisKKyAgZnVuY3Rpb24gYmxv
Y2tQYXJhbXMocGFyYW1zLCBpZHMpIHsKKyAgICBwYXJhbXMucGF0aCA9IGlkczsKKyAgICByZXR1
cm4gcGFyYW1zOworICB9CisKKyAgZnVuY3Rpb24gYXBwZW5kQ29udGV4dFBhdGgoY29udGV4dFBh
dGgsIGlkKSB7CisgICAgcmV0dXJuIChjb250ZXh0UGF0aCA/IGNvbnRleHRQYXRoICsgJy4nIDog
JycpICsgaWQ7CisgIH0KK30pOworLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlv
bi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYklpNHVMeTR1THk0
dUwyeHBZaTlvWVc1a2JHVmlZWEp6TDNWMGFXeHpMbXB6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3
Y0dsdVozTWlPaUk3T3pzN096czdPenM3TzBGQlFVRXNUVUZCVFN4TlFVRk5MRWRCUVVjN1FVRkRZ
aXhQUVVGSExFVkJRVVVzVDBGQlR6dEJRVU5hTEU5QlFVY3NSVUZCUlN4TlFVRk5PMEZCUTFnc1Qw
RkJSeXhGUVVGRkxFMUJRVTA3UVVGRFdDeFBRVUZITEVWQlFVVXNVVUZCVVR0QlFVTmlMRTlCUVVj
c1JVRkJSU3hSUVVGUk8wRkJRMklzVDBGQlJ5eEZRVUZGTEZGQlFWRTdRVUZEWWl4UFFVRkhMRVZC
UVVVc1VVRkJVVHRIUVVOa0xFTkJRVU03TzBGQlJVWXNUVUZCVFN4UlFVRlJMRWRCUVVjc1dVRkJX
VHROUVVOMlFpeFJRVUZSTEVkQlFVY3NWMEZCVnl4RFFVRkRPenRCUVVVM1FpeFhRVUZUTEZWQlFW
VXNRMEZCUXl4SFFVRkhMRVZCUVVVN1FVRkRka0lzVjBGQlR5eE5RVUZOTEVOQlFVTXNSMEZCUnl4
RFFVRkRMRU5CUVVNN1IwRkRjRUk3TzBGQlJVMHNWMEZCVXl4TlFVRk5MRU5CUVVNc1IwRkJSeXh2
UWtGQmJVSTdRVUZETTBNc1UwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNR
MEZCUXl4SFFVRkhMRk5CUVZNc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFV
VTdRVUZEZWtNc1YwRkJTeXhKUVVGSkxFZEJRVWNzU1VGQlNTeFRRVUZUTEVOQlFVTXNRMEZCUXl4
RFFVRkRMRVZCUVVVN1FVRkROVUlzV1VGQlNTeE5RVUZOTEVOQlFVTXNVMEZCVXl4RFFVRkRMR05C
UVdNc1EwRkJReXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZM
RWRCUVVjc1EwRkJReXhGUVVGRk8wRkJRek5FTEdGQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1Iw
RkJSeXhUUVVGVExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVN
N1UwRkRPVUk3VDBGRFJqdExRVU5HT3p0QlFVVkVMRmRCUVU4c1IwRkJSeXhEUVVGRE8wZEJRMW83
TzBGQlJVMHNUVUZCU1N4UlFVRlJMRWRCUVVjc1RVRkJUU3hEUVVGRExGTkJRVk1zUTBGQlF5eFJR
VUZSTEVOQlFVTTdPenM3T3p0QlFVdG9SQ3hOUVVGSkxGVkJRVlVzUjBGQlJ5eHZRa0ZCVXl4TFFV
RkxMRVZCUVVVN1FVRkRMMElzVjBGQlR5eFBRVUZQTEV0QlFVc3NTMEZCU3l4VlFVRlZMRU5CUVVN
N1IwRkRjRU1zUTBGQlF6czdPMEZCUjBZc1RVRkJTU3hWUVVGVkxFTkJRVU1zUjBGQlJ5eERRVUZE
TEVWQlFVVTdRVUZEYmtJc1dVRkpUU3hWUVVGVkxFZEJTbWhDTEZWQlFWVXNSMEZCUnl4VlFVRlRM
RXRCUVVzc1JVRkJSVHRCUVVNelFpeGhRVUZQTEU5QlFVOHNTMEZCU3l4TFFVRkxMRlZCUVZVc1NV
RkJTU3hSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4TFFVRkxMRzFDUVVG
dFFpeERRVUZETzB0QlEzQkdMRU5CUVVNN1IwRkRTRHRWUVVOUExGVkJRVlVzUjBGQlZpeFZRVUZW
T3pzN096dEJRVWxZTEUxQlFVMHNUMEZCVHl4SFFVRkhMRXRCUVVzc1EwRkJReXhQUVVGUExFbEJR
VWtzVlVGQlV5eExRVUZMTEVWQlFVVTdRVUZEZEVRc1YwRkJUeXhCUVVGRExFdEJRVXNzU1VGQlNT
eFBRVUZQTEV0QlFVc3NTMEZCU3l4UlFVRlJMRWRCUVVrc1VVRkJVU3hEUVVGRExFbEJRVWtzUTBG
QlF5eExRVUZMTEVOQlFVTXNTMEZCU3l4blFrRkJaMElzUjBGQlJ5eExRVUZMTEVOQlFVTTdSMEZE
YWtjc1EwRkJRenM3T3pzN1FVRkhTeXhYUVVGVExFOUJRVThzUTBGQlF5eExRVUZMTEVWQlFVVXNT
MEZCU3l4RlFVRkZPMEZCUTNCRExGTkJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFV
RkZMRWRCUVVjc1IwRkJSeXhMUVVGTExFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTXNSMEZCUnl4
SFFVRkhMRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3UVVGRGFFUXNWVUZCU1N4TFFVRkxMRU5C
UVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUzBGQlN5eEZRVUZGTzBGQlEzUkNMR1ZCUVU4c1EwRkJR
eXhEUVVGRE8wOUJRMVk3UzBGRFJqdEJRVU5FTEZkQlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNN1Iw
RkRXRHM3UVVGSFRTeFhRVUZUTEdkQ1FVRm5RaXhEUVVGRExFMUJRVTBzUlVGQlJUdEJRVU4yUXl4
UlFVRkpMRTlCUVU4c1RVRkJUU3hMUVVGTExGRkJRVkVzUlVGQlJUczdRVUZGT1VJc1ZVRkJTU3hO
UVVGTkxFbEJRVWtzVFVGQlRTeERRVUZETEUxQlFVMHNSVUZCUlR0QlFVTXpRaXhsUVVGUExFMUJR
VTBzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXp0UFFVTjRRaXhOUVVGTkxFbEJRVWtzVFVGQlRT
eEpRVUZKTEVsQlFVa3NSVUZCUlR0QlFVTjZRaXhsUVVGUExFVkJRVVVzUTBGQlF6dFBRVU5ZTEUx
QlFVMHNTVUZCU1N4RFFVRkRMRTFCUVUwc1JVRkJSVHRCUVVOc1FpeGxRVUZQTEUxQlFVMHNSMEZC
Unl4RlFVRkZMRU5CUVVNN1QwRkRjRUk3T3pzN08wRkJTMFFzV1VGQlRTeEhRVUZITEVWQlFVVXNS
MEZCUnl4TlFVRk5MRU5CUVVNN1MwRkRkRUk3TzBGQlJVUXNVVUZCU1N4RFFVRkRMRkZCUVZFc1Ew
RkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVWQlFVVTdRVUZCUlN4aFFVRlBMRTFCUVUw
c1EwRkJRenRMUVVGRk8wRkJRemxETEZkQlFVOHNUVUZCVFN4RFFVRkRMRTlCUVU4c1EwRkJReXhS
UVVGUkxFVkJRVVVzVlVGQlZTeERRVUZETEVOQlFVTTdSMEZETjBNN08wRkJSVTBzVjBGQlV5eFBR
VUZQTEVOQlFVTXNTMEZCU3l4RlFVRkZPMEZCUXpkQ0xGRkJRVWtzUTBGQlF5eExRVUZMTEVsQlFV
a3NTMEZCU3l4TFFVRkxMRU5CUVVNc1JVRkJSVHRCUVVONlFpeGhRVUZQTEVsQlFVa3NRMEZCUXp0
TFFVTmlMRTFCUVUwc1NVRkJTU3hQUVVGUExFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NTMEZC
U3l4RFFVRkRMRTFCUVUwc1MwRkJTeXhEUVVGRExFVkJRVVU3UVVGREwwTXNZVUZCVHl4SlFVRkpM
RU5CUVVNN1MwRkRZaXhOUVVGTk8wRkJRMHdzWVVGQlR5eExRVUZMTEVOQlFVTTdTMEZEWkR0SFFV
TkdPenRCUVVWTkxGZEJRVk1zVjBGQlZ5eERRVUZETEUxQlFVMHNSVUZCUlR0QlFVTnNReXhSUVVG
SkxFdEJRVXNzUjBGQlJ5eE5RVUZOTEVOQlFVTXNSVUZCUlN4RlFVRkZMRTFCUVUwc1EwRkJReXhE
UVVGRE8wRkJReTlDTEZOQlFVc3NRMEZCUXl4UFFVRlBMRWRCUVVjc1RVRkJUU3hEUVVGRE8wRkJR
M1pDTEZkQlFVOHNTMEZCU3l4RFFVRkRPMGRCUTJRN08wRkJSVTBzVjBGQlV5eFhRVUZYTEVOQlFV
TXNUVUZCVFN4RlFVRkZMRWRCUVVjc1JVRkJSVHRCUVVOMlF5eFZRVUZOTEVOQlFVTXNTVUZCU1N4
SFFVRkhMRWRCUVVjc1EwRkJRenRCUVVOc1FpeFhRVUZQTEUxQlFVMHNRMEZCUXp0SFFVTm1PenRC
UVVWTkxGZEJRVk1zYVVKQlFXbENMRU5CUVVNc1YwRkJWeXhGUVVGRkxFVkJRVVVzUlVGQlJUdEJR
VU5xUkN4WFFVRlBMRU5CUVVNc1YwRkJWeXhIUVVGSExGZEJRVmNzUjBGQlJ5eEhRVUZITEVkQlFV
Y3NSVUZCUlN4RFFVRkJMRWRCUVVrc1JVRkJSU3hEUVVGRE8wZEJRM0JFSWl3aVptbHNaU0k2SW5W
MGFXeHpMbXB6SWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaVkyOXVjM1FnWlhOallYQmxJRDBn
ZTF4dUlDQW5KaWM2SUNjbVlXMXdPeWNzWEc0Z0lDYzhKem9nSnlac2REc25MRnh1SUNBblBpYzZJ
Q2NtWjNRN0p5eGNiaUFnSjF3aUp6b2dKeVp4ZFc5ME95Y3NYRzRnSUZ3aUoxd2lPaUFuSmlONE1q
YzdKeXhjYmlBZ0oyQW5PaUFuSmlONE5qQTdKeXhjYmlBZ0p6MG5PaUFuSmlONE0wUTdKMXh1ZlR0
Y2JseHVZMjl1YzNRZ1ltRmtRMmhoY25NZ1BTQXZXeVk4UGx3aUoyQTlYUzluTEZ4dUlDQWdJQ0Fn
Y0c5emMybGliR1VnUFNBdld5WThQbHdpSjJBOVhTODdYRzVjYm1aMWJtTjBhVzl1SUdWelkyRnda
VU5vWVhJb1kyaHlLU0I3WEc0Z0lISmxkSFZ5YmlCbGMyTmhjR1ZiWTJoeVhUdGNibjFjYmx4dVpY
aHdiM0owSUdaMWJtTjBhVzl1SUdWNGRHVnVaQ2h2WW1vdktpQXNJQzR1TG5OdmRYSmpaU0FxTHlr
Z2UxeHVJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Uc2dhU0E4SUdGeVozVnRaVzUwY3k1c1pXNW5kR2c3
SUdrckt5a2dlMXh1SUNBZ0lHWnZjaUFvYkdWMElHdGxlU0JwYmlCaGNtZDFiV1Z1ZEhOYmFWMHBJ
SHRjYmlBZ0lDQWdJR2xtSUNoUFltcGxZM1F1Y0hKdmRHOTBlWEJsTG1oaGMwOTNibEJ5YjNCbGNu
UjVMbU5oYkd3b1lYSm5kVzFsYm5SelcybGRMQ0JyWlhrcEtTQjdYRzRnSUNBZ0lDQWdJRzlpYWx0
clpYbGRJRDBnWVhKbmRXMWxiblJ6VzJsZFcydGxlVjA3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1
SUNCOVhHNWNiaUFnY21WMGRYSnVJRzlpYWp0Y2JuMWNibHh1Wlhod2IzSjBJR3hsZENCMGIxTjBj
bWx1WnlBOUlFOWlhbVZqZEM1d2NtOTBiM1I1Y0dVdWRHOVRkSEpwYm1jN1hHNWNiaTh2SUZOdmRY
SmpaV1FnWm5KdmJTQnNiMlJoYzJoY2JpOHZJR2gwZEhCek9pOHZaMmwwYUhWaUxtTnZiUzlpWlhO
MGFXVnFjeTlzYjJSaGMyZ3ZZbXh2WWk5dFlYTjBaWEl2VEVsRFJVNVRSUzUwZUhSY2JpOHFJR1Z6
YkdsdWRDMWthWE5oWW14bElHWjFibU10YzNSNWJHVWdLaTljYm14bGRDQnBjMFoxYm1OMGFXOXVJ
RDBnWm5WdVkzUnBiMjRvZG1Gc2RXVXBJSHRjYmlBZ2NtVjBkWEp1SUhSNWNHVnZaaUIyWVd4MVpT
QTlQVDBnSjJaMWJtTjBhVzl1Snp0Y2JuMDdYRzR2THlCbVlXeHNZbUZqYXlCbWIzSWdiMnhrWlhJ
Z2RtVnljMmx2Ym5NZ2IyWWdRMmh5YjIxbElHRnVaQ0JUWVdaaGNtbGNiaThxSUdsemRHRnVZblZz
SUdsbmJtOXlaU0J1WlhoMElDb3ZYRzVwWmlBb2FYTkdkVzVqZEdsdmJpZ3ZlQzhwS1NCN1hHNGdJ
R2x6Um5WdVkzUnBiMjRnUFNCbWRXNWpkR2x2YmloMllXeDFaU2tnZTF4dUlDQWdJSEpsZEhWeWJp
QjBlWEJsYjJZZ2RtRnNkV1VnUFQwOUlDZG1kVzVqZEdsdmJpY2dKaVlnZEc5VGRISnBibWN1WTJG
c2JDaDJZV3gxWlNrZ1BUMDlJQ2RiYjJKcVpXTjBJRVoxYm1OMGFXOXVYU2M3WEc0Z0lIMDdYRzU5
WEc1bGVIQnZjblFnZTJselJuVnVZM1JwYjI1OU8xeHVMeW9nWlhOc2FXNTBMV1Z1WVdKc1pTQm1k
VzVqTFhOMGVXeGxJQ292WEc1Y2JpOHFJR2x6ZEdGdVluVnNJR2xuYm05eVpTQnVaWGgwSUNvdlhH
NWxlSEJ2Y25RZ1kyOXVjM1FnYVhOQmNuSmhlU0E5SUVGeWNtRjVMbWx6UVhKeVlYa2dmSHdnWm5W
dVkzUnBiMjRvZG1Gc2RXVXBJSHRjYmlBZ2NtVjBkWEp1SUNoMllXeDFaU0FtSmlCMGVYQmxiMlln
ZG1Gc2RXVWdQVDA5SUNkdlltcGxZM1FuS1NBL0lIUnZVM1J5YVc1bkxtTmhiR3dvZG1Gc2RXVXBJ
RDA5UFNBblcyOWlhbVZqZENCQmNuSmhlVjBuSURvZ1ptRnNjMlU3WEc1OU8xeHVYRzR2THlCUGJH
UmxjaUJKUlNCMlpYSnphVzl1Y3lCa2J5QnViM1FnWkdseVpXTjBiSGtnYzNWd2NHOXlkQ0JwYm1S
bGVFOW1JSE52SUhkbElHMTFjM1FnYVcxd2JHVnRaVzUwSUc5MWNpQnZkMjRzSUhOaFpHeDVMbHh1
Wlhod2IzSjBJR1oxYm1OMGFXOXVJR2x1WkdWNFQyWW9ZWEp5WVhrc0lIWmhiSFZsS1NCN1hHNGdJ
R1p2Y2lBb2JHVjBJR2tnUFNBd0xDQnNaVzRnUFNCaGNuSmhlUzVzWlc1bmRHZzdJR2tnUENCc1pX
NDdJR2tyS3lrZ2UxeHVJQ0FnSUdsbUlDaGhjbkpoZVZ0cFhTQTlQVDBnZG1Gc2RXVXBJSHRjYmlB
Z0lDQWdJSEpsZEhWeWJpQnBPMXh1SUNBZ0lIMWNiaUFnZlZ4dUlDQnlaWFIxY200Z0xURTdYRzU5
WEc1Y2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlHVnpZMkZ3WlVWNGNISmxjM05wYjI0b2MzUnlh
VzVuS1NCN1hHNGdJR2xtSUNoMGVYQmxiMllnYzNSeWFXNW5JQ0U5UFNBbmMzUnlhVzVuSnlrZ2Ux
eHVJQ0FnSUM4dklHUnZiaWQwSUdWelkyRndaU0JUWVdabFUzUnlhVzVuY3l3Z2MybHVZMlVnZEdo
bGVTZHlaU0JoYkhKbFlXUjVJSE5oWm1WY2JpQWdJQ0JwWmlBb2MzUnlhVzVuSUNZbUlITjBjbWx1
Wnk1MGIwaFVUVXdwSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJ6ZEhKcGJtY3VkRzlJVkUxTUtDazdY
RzRnSUNBZ2ZTQmxiSE5sSUdsbUlDaHpkSEpwYm1jZ1BUMGdiblZzYkNrZ2UxeHVJQ0FnSUNBZ2Nt
VjBkWEp1SUNjbk8xeHVJQ0FnSUgwZ1pXeHpaU0JwWmlBb0lYTjBjbWx1WnlrZ2UxeHVJQ0FnSUNB
Z2NtVjBkWEp1SUhOMGNtbHVaeUFySUNjbk8xeHVJQ0FnSUgxY2JseHVJQ0FnSUM4dklFWnZjbU5s
SUdFZ2MzUnlhVzVuSUdOdmJuWmxjbk5wYjI0Z1lYTWdkR2hwY3lCM2FXeHNJR0psSUdSdmJtVWdZ
bmtnZEdobElHRndjR1Z1WkNCeVpXZGhjbVJzWlhOeklHRnVaRnh1SUNBZ0lDOHZJSFJvWlNCeVpX
ZGxlQ0IwWlhOMElIZHBiR3dnWkc4Z2RHaHBjeUIwY21GdWMzQmhjbVZ1ZEd4NUlHSmxhR2x1WkNC
MGFHVWdjMk5sYm1WekxDQmpZWFZ6YVc1bklHbHpjM1ZsY3lCcFpseHVJQ0FnSUM4dklHRnVJRzlp
YW1WamRDZHpJSFJ2SUhOMGNtbHVaeUJvWVhNZ1pYTmpZWEJsWkNCamFHRnlZV04wWlhKeklHbHVJ
R2wwTGx4dUlDQWdJSE4wY21sdVp5QTlJQ2NuSUNzZ2MzUnlhVzVuTzF4dUlDQjlYRzVjYmlBZ2FX
WWdLQ0Z3YjNOemFXSnNaUzUwWlhOMEtITjBjbWx1WnlrcElIc2djbVYwZFhKdUlITjBjbWx1Wnpz
Z2ZWeHVJQ0J5WlhSMWNtNGdjM1J5YVc1bkxuSmxjR3hoWTJVb1ltRmtRMmhoY25Nc0lHVnpZMkZ3
WlVOb1lYSXBPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2FYTkZiWEIwZVNoMllXeDFa
U2tnZTF4dUlDQnBaaUFvSVhaaGJIVmxJQ1ltSUhaaGJIVmxJQ0U5UFNBd0tTQjdYRzRnSUNBZ2Nt
VjBkWEp1SUhSeWRXVTdYRzRnSUgwZ1pXeHpaU0JwWmlBb2FYTkJjbkpoZVNoMllXeDFaU2tnSmlZ
Z2RtRnNkV1V1YkdWdVozUm9JRDA5UFNBd0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUhSeWRXVTdYRzRn
SUgwZ1pXeHpaU0I3WEc0Z0lDQWdjbVYwZFhKdUlHWmhiSE5sTzF4dUlDQjlYRzU5WEc1Y2JtVjRj
Rzl5ZENCbWRXNWpkR2x2YmlCamNtVmhkR1ZHY21GdFpTaHZZbXBsWTNRcElIdGNiaUFnYkdWMElH
WnlZVzFsSUQwZ1pYaDBaVzVrS0h0OUxDQnZZbXBsWTNRcE8xeHVJQ0JtY21GdFpTNWZjR0Z5Wlc1
MElEMGdiMkpxWldOME8xeHVJQ0J5WlhSMWNtNGdabkpoYldVN1hHNTlYRzVjYm1WNGNHOXlkQ0Jt
ZFc1amRHbHZiaUJpYkc5amExQmhjbUZ0Y3lod1lYSmhiWE1zSUdsa2N5a2dlMXh1SUNCd1lYSmhi
WE11Y0dGMGFDQTlJR2xrY3p0Y2JpQWdjbVYwZFhKdUlIQmhjbUZ0Y3p0Y2JuMWNibHh1Wlhod2Iz
SjBJR1oxYm1OMGFXOXVJR0Z3Y0dWdVpFTnZiblJsZUhSUVlYUm9LR052Ym5SbGVIUlFZWFJvTENC
cFpDa2dlMXh1SUNCeVpYUjFjbTRnS0dOdmJuUmxlSFJRWVhSb0lEOGdZMjl1ZEdWNGRGQmhkR2dn
S3lBbkxpY2dPaUFuSnlrZ0t5QnBaRHRjYm4xY2JpSmRmUT09CmRpZmYgLS1naXQgYS9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9hbWQvcHJlY29tcGlsZXIu
anMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9hbWQv
cHJlY29tcGlsZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzBhODBmOTZiMDE2NjUzODZlZmRmOWMyZjVmZTFi
ZjgwMGVjZmZhMgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21v
ZHVsZXMvaGFuZGxlYmFycy9kaXN0L2FtZC9wcmVjb21waWxlci5qcwpAQCAtMCwwICsxLDI5MiBA
QAorZGVmaW5lKFsnZXhwb3J0cycsICdhc3luYycsICdmcycsICcuL2hhbmRsZWJhcnMnLCAncGF0
aCcsICdzb3VyY2UtbWFwJywgJ3VnbGlmeS1qcyddLCBmdW5jdGlvbiAoZXhwb3J0cywgX2FzeW5j
LCBfZnMsIF9oYW5kbGViYXJzLCBfcGF0aCwgX3NvdXJjZU1hcCwgX3VnbGlmeUpzKSB7CisgIC8q
IGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi8KKyAgJ3VzZSBzdHJpY3QnOworCisgIC8vIGlz
dGFuYnVsIGlnbm9yZSBuZXh0CisKKyAgZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChv
YmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBv
YmogfTsgfQorCisgIHZhciBfQXN5bmMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hc3luYyk7
CisKKyAgdmFyIF9mczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9mcyk7CisKKyAgdmFyIF91
Z2xpZnkgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF91Z2xpZnlKcyk7CisKKyAgbW9kdWxlLmV4
cG9ydHMubG9hZFRlbXBsYXRlcyA9IGZ1bmN0aW9uIChvcHRzLCBjYWxsYmFjaykgeworICAgIGxv
YWRTdHJpbmdzKG9wdHMsIGZ1bmN0aW9uIChlcnIsIHN0cmluZ3MpIHsKKyAgICAgIGlmIChlcnIp
IHsKKyAgICAgICAgY2FsbGJhY2soZXJyKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGxvYWRG
aWxlcyhvcHRzLCBmdW5jdGlvbiAoZXJyLCBmaWxlcykgeworICAgICAgICAgIGlmIChlcnIpIHsK
KyAgICAgICAgICAgIGNhbGxiYWNrKGVycik7CisgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIG9wdHMudGVtcGxhdGVzID0gc3RyaW5ncy5jb25jYXQoZmlsZXMpOworICAgICAgICAgICAg
Y2FsbGJhY2sodW5kZWZpbmVkLCBvcHRzKTsKKyAgICAgICAgICB9CisgICAgICAgIH0pOworICAg
ICAgfQorICAgIH0pOworICB9OworCisgIGZ1bmN0aW9uIGxvYWRTdHJpbmdzKG9wdHMsIGNhbGxi
YWNrKSB7CisgICAgdmFyIHN0cmluZ3MgPSBhcnJheUNhc3Qob3B0cy5zdHJpbmcpLAorICAgICAg
ICBuYW1lcyA9IGFycmF5Q2FzdChvcHRzLm5hbWUpOworCisgICAgaWYgKG5hbWVzLmxlbmd0aCAh
PT0gc3RyaW5ncy5sZW5ndGggJiYgc3RyaW5ncy5sZW5ndGggPiAxKSB7CisgICAgICByZXR1cm4g
Y2FsbGJhY2sobmV3IF9oYW5kbGViYXJzLkV4Y2VwdGlvbignTnVtYmVyIG9mIG5hbWVzIGRpZCBu
b3QgbWF0Y2ggdGhlIG51bWJlciBvZiBzdHJpbmcgaW5wdXRzJykpOworICAgIH0KKworICAgIF9B
c3luY1snZGVmYXVsdCddLm1hcChzdHJpbmdzLCBmdW5jdGlvbiAoc3RyaW5nLCBjYWxsYmFjaykg
eworICAgICAgaWYgKHN0cmluZyAhPT0gJy0nKSB7CisgICAgICAgIGNhbGxiYWNrKHVuZGVmaW5l
ZCwgc3RyaW5nKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIChmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgLy8gTG9hZCBmcm9tIHN0ZGluCisgICAgICAgICAgdmFyIGJ1ZmZlciA9ICcnOworICAg
ICAgICAgIHByb2Nlc3Muc3RkaW4uc2V0RW5jb2RpbmcoJ3V0ZjgnKTsKKworICAgICAgICAgIHBy
b2Nlc3Muc3RkaW4ub24oJ2RhdGEnLCBmdW5jdGlvbiAoY2h1bmspIHsKKyAgICAgICAgICAgIGJ1
ZmZlciArPSBjaHVuazsKKyAgICAgICAgICB9KTsKKyAgICAgICAgICBwcm9jZXNzLnN0ZGluLm9u
KCdlbmQnLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBjYWxsYmFjayh1bmRlZmluZWQsIGJ1
ZmZlcik7CisgICAgICAgICAgfSk7CisgICAgICAgIH0pKCk7CisgICAgICB9CisgICAgfSwgZnVu
Y3Rpb24gKGVyciwgc3RyaW5ncykgeworICAgICAgc3RyaW5ncyA9IHN0cmluZ3MubWFwKGZ1bmN0
aW9uIChzdHJpbmcsIGluZGV4KSB7CisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgbmFtZTog
bmFtZXNbaW5kZXhdLAorICAgICAgICAgIHBhdGg6IG5hbWVzW2luZGV4XSwKKyAgICAgICAgICBz
b3VyY2U6IHN0cmluZworICAgICAgICB9OworICAgICAgfSk7CisgICAgICBjYWxsYmFjayhlcnIs
IHN0cmluZ3MpOworICAgIH0pOworICB9CisKKyAgZnVuY3Rpb24gbG9hZEZpbGVzKG9wdHMsIGNh
bGxiYWNrKSB7CisgICAgLy8gQnVpbGQgZmlsZSBleHRlbnNpb24gcGF0dGVybgorICAgIHZhciBl
eHRlbnNpb24gPSAob3B0cy5leHRlbnNpb24gfHwgJ2hhbmRsZWJhcnMnKS5yZXBsYWNlKC9bXFxe
JCorPy4oKTo9IXx7fVwtXFtcXV0vZywgZnVuY3Rpb24gKGFyZykgeworICAgICAgcmV0dXJuICdc
XCcgKyBhcmc7CisgICAgfSk7CisgICAgZXh0ZW5zaW9uID0gbmV3IFJlZ0V4cCgnXFwuJyArIGV4
dGVuc2lvbiArICckJyk7CisKKyAgICB2YXIgcmV0ID0gW10sCisgICAgICAgIHF1ZXVlID0gKG9w
dHMuZmlsZXMgfHwgW10pLm1hcChmdW5jdGlvbiAodGVtcGxhdGUpIHsKKyAgICAgIHJldHVybiB7
IHRlbXBsYXRlOiB0ZW1wbGF0ZSwgcm9vdDogb3B0cy5yb290IH07CisgICAgfSk7CisgICAgX0Fz
eW5jWydkZWZhdWx0J10ud2hpbHN0KGZ1bmN0aW9uICgpIHsKKyAgICAgIHJldHVybiBxdWV1ZS5s
ZW5ndGg7CisgICAgfSwgZnVuY3Rpb24gKGNhbGxiYWNrKSB7CisgICAgICB2YXIgX3F1ZXVlJHNo
aWZ0ID0gcXVldWUuc2hpZnQoKTsKKworICAgICAgdmFyIHBhdGggPSBfcXVldWUkc2hpZnQudGVt
cGxhdGU7CisgICAgICB2YXIgcm9vdCA9IF9xdWV1ZSRzaGlmdC5yb290OworCisgICAgICBfZnMy
WydkZWZhdWx0J10uc3RhdChwYXRoLCBmdW5jdGlvbiAoZXJyLCBzdGF0KSB7CisgICAgICAgIGlm
IChlcnIpIHsKKyAgICAgICAgICByZXR1cm4gY2FsbGJhY2sobmV3IF9oYW5kbGViYXJzLkV4Y2Vw
dGlvbignVW5hYmxlIHRvIG9wZW4gdGVtcGxhdGUgZmlsZSAiJyArIHBhdGggKyAnIicpKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmIChzdGF0LmlzRGlyZWN0b3J5KCkpIHsKKyAgICAgICAgICBv
cHRzLmhhc0RpcmVjdG9yeSA9IHRydWU7CisKKyAgICAgICAgICBfZnMyWydkZWZhdWx0J10ucmVh
ZGRpcihwYXRoLCBmdW5jdGlvbiAoZXJyLCBjaGlsZHJlbikgeworICAgICAgICAgICAgLyogaXN0
YW5idWwgaWdub3JlIG5leHQgOiBSYWNlIGNvbmRpdGlvbiB0aGF0IGJlaW5nIHRvbyBsYXp5IHRv
IHRlc3QgKi8KKyAgICAgICAgICAgIGlmIChlcnIpIHsKKyAgICAgICAgICAgICAgcmV0dXJuIGNh
bGxiYWNrKGVycik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjaGlsZHJlbi5mb3JFYWNo
KGZ1bmN0aW9uIChmaWxlKSB7CisgICAgICAgICAgICAgIHZhciBjaGlsZFBhdGggPSBwYXRoICsg
Jy8nICsgZmlsZTsKKworICAgICAgICAgICAgICBpZiAoZXh0ZW5zaW9uLnRlc3QoY2hpbGRQYXRo
KSB8fCBfZnMyWydkZWZhdWx0J10uc3RhdFN5bmMoY2hpbGRQYXRoKS5pc0RpcmVjdG9yeSgpKSB7
CisgICAgICAgICAgICAgICAgcXVldWUucHVzaCh7IHRlbXBsYXRlOiBjaGlsZFBhdGgsIHJvb3Q6
IHJvb3QgfHwgcGF0aCB9KTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSk7CisKKyAg
ICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgICAgfSk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgX2ZzMlsnZGVmYXVsdCddLnJlYWRGaWxlKHBhdGgsICd1dGY4JywgZnVuY3Rpb24g
KGVyciwgZGF0YSkgeworICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgOiBSYWNl
IGNvbmRpdGlvbiB0aGF0IGJlaW5nIHRvbyBsYXp5IHRvIHRlc3QgKi8KKyAgICAgICAgICAgIGlm
IChlcnIpIHsKKyAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGVycik7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGlmIChvcHRzLmJvbSAmJiBkYXRhLmluZGV4T2YoJ++7vycpID09
PSAwKSB7CisgICAgICAgICAgICAgIGRhdGEgPSBkYXRhLnN1YnN0cmluZygxKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgLy8gQ2xlYW4gdGhlIHRlbXBsYXRlIG5hbWUKKyAgICAgICAg
ICAgIHZhciBuYW1lID0gcGF0aDsKKyAgICAgICAgICAgIGlmICghcm9vdCkgeworICAgICAgICAg
ICAgICBuYW1lID0gX3BhdGguYmFzZW5hbWUobmFtZSk7CisgICAgICAgICAgICB9IGVsc2UgaWYg
KG5hbWUuaW5kZXhPZihyb290KSA9PT0gMCkgeworICAgICAgICAgICAgICBuYW1lID0gbmFtZS5z
dWJzdHJpbmcocm9vdC5sZW5ndGggKyAxKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG5h
bWUgPSBuYW1lLnJlcGxhY2UoZXh0ZW5zaW9uLCAnJyk7CisKKyAgICAgICAgICAgIHJldC5wdXNo
KHsKKyAgICAgICAgICAgICAgcGF0aDogcGF0aCwKKyAgICAgICAgICAgICAgbmFtZTogbmFtZSwK
KyAgICAgICAgICAgICAgc291cmNlOiBkYXRhCisgICAgICAgICAgICB9KTsKKworICAgICAgICAg
ICAgY2FsbGJhY2soKTsKKyAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgICAgfSk7CisgICAg
fSwgZnVuY3Rpb24gKGVycikgeworICAgICAgaWYgKGVycikgeworICAgICAgICBjYWxsYmFjayhl
cnIpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgY2FsbGJhY2sodW5kZWZpbmVkLCByZXQpOwor
ICAgICAgfQorICAgIH0pOworICB9CisKKyAgbW9kdWxlLmV4cG9ydHMuY2xpID0gZnVuY3Rpb24g
KG9wdHMpIHsKKyAgICBpZiAob3B0cy52ZXJzaW9uKSB7CisgICAgICBjb25zb2xlLmxvZyhfaGFu
ZGxlYmFycy5WRVJTSU9OKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIW9wdHMu
dGVtcGxhdGVzLmxlbmd0aCAmJiAhb3B0cy5oYXNEaXJlY3RvcnkpIHsKKyAgICAgIHRocm93IG5l
dyBfaGFuZGxlYmFycy5FeGNlcHRpb24oJ011c3QgZGVmaW5lIGF0IGxlYXN0IG9uZSB0ZW1wbGF0
ZSBvciBkaXJlY3RvcnkuJyk7CisgICAgfQorCisgICAgaWYgKG9wdHMuc2ltcGxlICYmIG9wdHMu
bWluKSB7CisgICAgICB0aHJvdyBuZXcgX2hhbmRsZWJhcnMuRXhjZXB0aW9uKCdVbmFibGUgdG8g
bWluaW1pemUgc2ltcGxlIG91dHB1dCcpOworICAgIH0KKworICAgIHZhciBtdWx0aXBsZSA9IG9w
dHMudGVtcGxhdGVzLmxlbmd0aCAhPT0gMSB8fCBvcHRzLmhhc0RpcmVjdG9yeTsKKyAgICBpZiAo
b3B0cy5zaW1wbGUgJiYgbXVsdGlwbGUpIHsKKyAgICAgIHRocm93IG5ldyBfaGFuZGxlYmFycy5F
eGNlcHRpb24oJ1VuYWJsZSB0byBvdXRwdXQgbXVsdGlwbGUgdGVtcGxhdGVzIGluIHNpbXBsZSBt
b2RlJyk7CisgICAgfQorCisgICAgLy8gRm9yY2Ugc2ltcGxlIG1vZGUgaWYgd2UgaGF2ZSBvbmx5
IG9uZSB0ZW1wbGF0ZSBhbmQgaXQncyB1bm5hbWVkLgorICAgIGlmICghb3B0cy5hbWQgJiYgIW9w
dHMuY29tbW9uanMgJiYgb3B0cy50ZW1wbGF0ZXMubGVuZ3RoID09PSAxICYmICFvcHRzLnRlbXBs
YXRlc1swXS5uYW1lKSB7CisgICAgICBvcHRzLnNpbXBsZSA9IHRydWU7CisgICAgfQorCisgICAg
Ly8gQ29udmVydCB0aGUga25vd24gbGlzdCBpbnRvIGEgaGFzaAorICAgIHZhciBrbm93biA9IHt9
OworICAgIGlmIChvcHRzLmtub3duICYmICFBcnJheS5pc0FycmF5KG9wdHMua25vd24pKSB7Cisg
ICAgICBvcHRzLmtub3duID0gW29wdHMua25vd25dOworICAgIH0KKyAgICBpZiAob3B0cy5rbm93
bikgeworICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IG9wdHMua25vd24ubGVuZ3RoOyBpIDwg
bGVuOyBpKyspIHsKKyAgICAgICAga25vd25bb3B0cy5rbm93bltpXV0gPSB0cnVlOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBvYmplY3ROYW1lID0gb3B0cy5wYXJ0aWFsID8gJ0hhbmRsZWJh
cnMucGFydGlhbHMnIDogJ3RlbXBsYXRlcyc7CisKKyAgICB2YXIgb3V0cHV0ID0gbmV3IF9zb3Vy
Y2VNYXAuU291cmNlTm9kZSgpOworICAgIGlmICghb3B0cy5zaW1wbGUpIHsKKyAgICAgIGlmIChv
cHRzLmFtZCkgeworICAgICAgICBvdXRwdXQuYWRkKCdkZWZpbmUoW1wnJyArIG9wdHMuaGFuZGxl
YmFyUGF0aCArICdoYW5kbGViYXJzLnJ1bnRpbWVcJ10sIGZ1bmN0aW9uKEhhbmRsZWJhcnMpIHtc
biAgSGFuZGxlYmFycyA9IEhhbmRsZWJhcnNbImRlZmF1bHQiXTsnKTsKKyAgICAgIH0gZWxzZSBp
ZiAob3B0cy5jb21tb25qcykgeworICAgICAgICBvdXRwdXQuYWRkKCd2YXIgSGFuZGxlYmFycyA9
IHJlcXVpcmUoIicgKyBvcHRzLmNvbW1vbmpzICsgJyIpOycpOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgb3V0cHV0LmFkZCgnKGZ1bmN0aW9uKCkge1xuJyk7CisgICAgICB9CisgICAgICBvdXRw
dXQuYWRkKCcgIHZhciB0ZW1wbGF0ZSA9IEhhbmRsZWJhcnMudGVtcGxhdGUsIHRlbXBsYXRlcyA9
ICcpOworICAgICAgaWYgKG9wdHMubmFtZXNwYWNlKSB7CisgICAgICAgIG91dHB1dC5hZGQob3B0
cy5uYW1lc3BhY2UpOworICAgICAgICBvdXRwdXQuYWRkKCcgPSAnKTsKKyAgICAgICAgb3V0cHV0
LmFkZChvcHRzLm5hbWVzcGFjZSk7CisgICAgICAgIG91dHB1dC5hZGQoJyB8fCAnKTsKKyAgICAg
IH0KKyAgICAgIG91dHB1dC5hZGQoJ3t9O1xuJyk7CisgICAgfQorCisgICAgb3B0cy50ZW1wbGF0
ZXMuZm9yRWFjaChmdW5jdGlvbiAodGVtcGxhdGUpIHsKKyAgICAgIHZhciBvcHRpb25zID0gewor
ICAgICAgICBrbm93bkhlbHBlcnM6IGtub3duLAorICAgICAgICBrbm93bkhlbHBlcnNPbmx5OiBv
cHRzLm8KKyAgICAgIH07CisKKyAgICAgIGlmIChvcHRzLm1hcCkgeworICAgICAgICBvcHRpb25z
LnNyY05hbWUgPSB0ZW1wbGF0ZS5wYXRoOworICAgICAgfQorICAgICAgaWYgKG9wdHMuZGF0YSkg
eworICAgICAgICBvcHRpb25zLmRhdGEgPSB0cnVlOworICAgICAgfQorCisgICAgICB2YXIgcHJl
Y29tcGlsZWQgPSBfaGFuZGxlYmFycy5wcmVjb21waWxlKHRlbXBsYXRlLnNvdXJjZSwgb3B0aW9u
cyk7CisKKyAgICAgIC8vIElmIHdlIGFyZSBnZW5lcmF0aW5nIGEgc291cmNlIG1hcCwgd2UgaGF2
ZSB0byByZWNvbnN0cnVjdCB0aGUgU291cmNlTm9kZSBvYmplY3QKKyAgICAgIGlmIChvcHRzLm1h
cCkgeworICAgICAgICB2YXIgY29uc3VtZXIgPSBuZXcgX3NvdXJjZU1hcC5Tb3VyY2VNYXBDb25z
dW1lcihwcmVjb21waWxlZC5tYXApOworICAgICAgICBwcmVjb21waWxlZCA9IF9zb3VyY2VNYXAu
U291cmNlTm9kZS5mcm9tU3RyaW5nV2l0aFNvdXJjZU1hcChwcmVjb21waWxlZC5jb2RlLCBjb25z
dW1lcik7CisgICAgICB9CisKKyAgICAgIGlmIChvcHRzLnNpbXBsZSkgeworICAgICAgICBvdXRw
dXQuYWRkKFtwcmVjb21waWxlZCwgJ1xuJ10pOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgaWYg
KCF0ZW1wbGF0ZS5uYW1lKSB7CisgICAgICAgICAgdGhyb3cgbmV3IF9oYW5kbGViYXJzLkV4Y2Vw
dGlvbignTmFtZSBtaXNzaW5nIGZvciB0ZW1wbGF0ZScpOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKG9wdHMuYW1kICYmICFtdWx0aXBsZSkgeworICAgICAgICAgIG91dHB1dC5hZGQoJ3JldHVy
biAnKTsKKyAgICAgICAgfQorICAgICAgICBvdXRwdXQuYWRkKFtvYmplY3ROYW1lLCAnW1wnJywg
dGVtcGxhdGUubmFtZSwgJ1wnXSA9IHRlbXBsYXRlKCcsIHByZWNvbXBpbGVkLCAnKTtcbiddKTsK
KyAgICAgIH0KKyAgICB9KTsKKworICAgIC8vIE91dHB1dCB0aGUgY29udGVudAorICAgIGlmICgh
b3B0cy5zaW1wbGUpIHsKKyAgICAgIGlmIChvcHRzLmFtZCkgeworICAgICAgICBpZiAobXVsdGlw
bGUpIHsKKyAgICAgICAgICBvdXRwdXQuYWRkKFsncmV0dXJuICcsIG9iamVjdE5hbWUsICc7XG4n
XSk7CisgICAgICAgIH0KKyAgICAgICAgb3V0cHV0LmFkZCgnfSk7Jyk7CisgICAgICB9IGVsc2Ug
aWYgKCFvcHRzLmNvbW1vbmpzKSB7CisgICAgICAgIG91dHB1dC5hZGQoJ30pKCk7Jyk7CisgICAg
ICB9CisgICAgfQorCisgICAgaWYgKG9wdHMubWFwKSB7CisgICAgICBvdXRwdXQuYWRkKCdcbi8v
IyBzb3VyY2VNYXBwaW5nVVJMPScgKyBvcHRzLm1hcCArICdcbicpOworICAgIH0KKworICAgIG91
dHB1dCA9IG91dHB1dC50b1N0cmluZ1dpdGhTb3VyY2VNYXAoKTsKKyAgICBvdXRwdXQubWFwID0g
b3V0cHV0Lm1hcCArICcnOworCisgICAgaWYgKG9wdHMubWluKSB7CisgICAgICBvdXRwdXQgPSBf
dWdsaWZ5WydkZWZhdWx0J10ubWluaWZ5KG91dHB1dC5jb2RlLCB7CisgICAgICAgIGZyb21TdHJp
bmc6IHRydWUsCisKKyAgICAgICAgb3V0U291cmNlTWFwOiBvcHRzLm1hcCwKKyAgICAgICAgaW5T
b3VyY2VNYXA6IEpTT04ucGFyc2Uob3V0cHV0Lm1hcCkKKyAgICAgIH0pOworICAgICAgaWYgKG9w
dHMubWFwKSB7CisgICAgICAgIG91dHB1dC5jb2RlICs9ICdcbi8vIyBzb3VyY2VNYXBwaW5nVVJM
PScgKyBvcHRzLm1hcCArICdcbic7CisgICAgICB9CisgICAgfQorCisgICAgaWYgKG9wdHMubWFw
KSB7CisgICAgICBfZnMyWydkZWZhdWx0J10ud3JpdGVGaWxlU3luYyhvcHRzLm1hcCwgb3V0cHV0
Lm1hcCwgJ3V0ZjgnKTsKKyAgICB9CisgICAgb3V0cHV0ID0gb3V0cHV0LmNvZGU7CisKKyAgICBp
ZiAob3B0cy5vdXRwdXQpIHsKKyAgICAgIF9mczJbJ2RlZmF1bHQnXS53cml0ZUZpbGVTeW5jKG9w
dHMub3V0cHV0LCBvdXRwdXQsICd1dGY4Jyk7CisgICAgfSBlbHNlIHsKKyAgICAgIGNvbnNvbGUu
bG9nKG91dHB1dCk7CisgICAgfQorICB9OworCisgIGZ1bmN0aW9uIGFycmF5Q2FzdCh2YWx1ZSkg
eworICAgIHZhbHVlID0gdmFsdWUgIT0gbnVsbCA/IHZhbHVlIDogW107CisgICAgaWYgKCFBcnJh
eS5pc0FycmF5KHZhbHVlKSkgeworICAgICAgdmFsdWUgPSBbdmFsdWVdOworICAgIH0KKyAgICBy
ZXR1cm4gdmFsdWU7CisgIH0KK30pOworLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNh
dGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYklpNHVMeTR1
TDJ4cFlpOXdjbVZqYjIxd2FXeGxjaTVxY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJ
am9pT3pzN096czdPenM3T3pzN096dEJRVkZCTEZGQlFVMHNRMEZCUXl4UFFVRlBMRU5CUVVNc1lV
RkJZU3hIUVVGSExGVkJRVk1zU1VGQlNTeEZRVUZGTEZGQlFWRXNSVUZCUlR0QlFVTjBSQ3hsUVVG
WExFTkJRVU1zU1VGQlNTeEZRVUZGTEZWQlFWTXNSMEZCUnl4RlFVRkZMRTlCUVU4c1JVRkJSVHRC
UVVOMlF5eFZRVUZKTEVkQlFVY3NSVUZCUlR0QlFVTlFMR2RDUVVGUkxFTkJRVU1zUjBGQlJ5eERR
VUZETEVOQlFVTTdUMEZEWml4TlFVRk5PMEZCUTB3c2FVSkJRVk1zUTBGQlF5eEpRVUZKTEVWQlFV
VXNWVUZCVXl4SFFVRkhMRVZCUVVVc1MwRkJTeXhGUVVGRk8wRkJRMjVETEdOQlFVa3NSMEZCUnl4
RlFVRkZPMEZCUTFBc2IwSkJRVkVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0WFFVTm1MRTFC
UVUwN1FVRkRUQ3huUWtGQlNTeERRVUZETEZOQlFWTXNSMEZCUnl4UFFVRlBMRU5CUVVNc1RVRkJU
U3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzBGQlEzWkRMRzlDUVVGUkxFTkJRVU1zVTBGQlV5
eEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPMWRCUXpOQ08xTkJRMFlzUTBGQlF5eERRVUZETzA5
QlEwbzdTMEZEUml4RFFVRkRMRU5CUVVNN1IwRkRTaXhEUVVGRE96dEJRVVZHTEZkQlFWTXNWMEZC
Vnl4RFFVRkRMRWxCUVVrc1JVRkJSU3hSUVVGUkxFVkJRVVU3UVVGRGJrTXNVVUZCU1N4UFFVRlBM
RWRCUVVjc1UwRkJVeXhEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTTdVVUZEYUVNc1Mw
RkJTeXhIUVVGSExGTkJRVk1zUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVN
N08wRkJSV3BETEZGQlFVa3NTMEZCU3l4RFFVRkRMRTFCUVUwc1MwRkJTeXhQUVVGUExFTkJRVU1z
VFVGQlRTeEpRVU0xUWl4UFFVRlBMRU5CUVVNc1RVRkJUU3hIUVVGSExFTkJRVU1zUlVGQlJUdEJR
VU42UWl4aFFVRlBMRkZCUVZFc1EwRkJReXhKUVVGSkxGbEJRVmNzVTBGQlV5eERRVUZETERKRVFV
RXlSQ3hEUVVGRExFTkJRVU1zUTBGQlF6dExRVU40UnpzN1FVRkZSQ3h6UWtGQlRTeEhRVUZITEVO
QlFVTXNUMEZCVHl4RlFVRkZMRlZCUVZNc1RVRkJUU3hGUVVGRkxGRkJRVkVzUlVGQlJUdEJRVU14
UXl4VlFVRkpMRTFCUVUwc1MwRkJTeXhIUVVGSExFVkJRVVU3UVVGRGJFSXNaMEpCUVZFc1EwRkJR
eXhUUVVGVExFVkJRVVVzVFVGQlRTeERRVUZETEVOQlFVTTdUMEZETjBJc1RVRkJUVHM3TzBGQlJV
d3NZMEZCU1N4TlFVRk5MRWRCUVVjc1JVRkJSU3hEUVVGRE8wRkJRMmhDTEdsQ1FVRlBMRU5CUVVN
c1MwRkJTeXhEUVVGRExGZEJRVmNzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXpzN1FVRkZiRU1z
YVVKQlFVOHNRMEZCUXl4TFFVRkxMRU5CUVVNc1JVRkJSU3hEUVVGRExFMUJRVTBzUlVGQlJTeFZR
VUZUTEV0QlFVc3NSVUZCUlR0QlFVTjJReXhyUWtGQlRTeEpRVUZKTEV0QlFVc3NRMEZCUXp0WFFV
TnFRaXhEUVVGRExFTkJRVU03UVVGRFNDeHBRa0ZCVHl4RFFVRkRMRXRCUVVzc1EwRkJReXhGUVVG
RkxFTkJRVU1zUzBGQlN5eEZRVUZGTEZsQlFWYzdRVUZEYWtNc2IwSkJRVkVzUTBGQlF5eFRRVUZU
TEVWQlFVVXNUVUZCVFN4RFFVRkRMRU5CUVVNN1YwRkROMElzUTBGQlF5eERRVUZET3p0UFFVTktP
MHRCUTBZc1JVRkRSQ3hWUVVGVExFZEJRVWNzUlVGQlJTeFBRVUZQTEVWQlFVVTdRVUZEY2tJc1lV
RkJUeXhIUVVGSExFOUJRVThzUTBGQlF5eEhRVUZITEVOQlFVTXNWVUZCUXl4TlFVRk5MRVZCUVVV
c1MwRkJTenRsUVVGTk8wRkJRM2hETEdOQlFVa3NSVUZCUlN4TFFVRkxMRU5CUVVNc1MwRkJTeXhE
UVVGRE8wRkJRMnhDTEdOQlFVa3NSVUZCUlN4TFFVRkxMRU5CUVVNc1MwRkJTeXhEUVVGRE8wRkJR
MnhDTEdkQ1FVRk5MRVZCUVVVc1RVRkJUVHRUUVVObU8wOUJRVU1zUTBGQlF5eERRVUZETzBGQlEw
b3NZMEZCVVN4RFFVRkRMRWRCUVVjc1JVRkJSU3hQUVVGUExFTkJRVU1zUTBGQlF6dExRVU40UWl4
RFFVRkRMRU5CUVVNN1IwRkRUanM3UVVGRlJDeFhRVUZUTEZOQlFWTXNRMEZCUXl4SlFVRkpMRVZC
UVVVc1VVRkJVU3hGUVVGRk96dEJRVVZxUXl4UlFVRkpMRk5CUVZNc1IwRkJSeXhEUVVGRExFbEJR
VWtzUTBGQlF5eFRRVUZUTEVsQlFVa3NXVUZCV1N4RFFVRkJMRU5CUVVVc1QwRkJUeXhEUVVGRExE
SkNRVUV5UWl4RlFVRkZMRlZCUVZNc1IwRkJSeXhGUVVGRk8wRkJRVVVzWVVGQlR5eEpRVUZKTEVk
QlFVY3NSMEZCUnl4RFFVRkRPMHRCUVVVc1EwRkJReXhEUVVGRE8wRkJRelZJTEdGQlFWTXNSMEZC
Unl4SlFVRkpMRTFCUVUwc1EwRkJReXhMUVVGTExFZEJRVWNzVTBGQlV5eEhRVUZITEVkQlFVY3NR
MEZCUXl4RFFVRkRPenRCUVVWb1JDeFJRVUZKTEVkQlFVY3NSMEZCUnl4RlFVRkZPMUZCUTFJc1Mw
RkJTeXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NTVUZCU1N4RlFVRkZMRU5CUVVF
c1EwRkJSU3hIUVVGSExFTkJRVU1zVlVGQlF5eFJRVUZSTzJGQlFVMHNSVUZCUXl4UlFVRlJMRVZC
UVZJc1VVRkJVU3hGUVVGRkxFbEJRVWtzUlVGQlJTeEpRVUZKTEVOQlFVTXNTVUZCU1N4RlFVRkRP
MHRCUVVNc1EwRkJReXhEUVVGRE8wRkJRMmhHTEhOQ1FVRk5MRTFCUVUwc1EwRkJRenRoUVVGTkxF
dEJRVXNzUTBGQlF5eE5RVUZOTzB0QlFVRXNSVUZCUlN4VlFVRlRMRkZCUVZFc1JVRkJSVHQ1UWtG
RGNrSXNTMEZCU3l4RFFVRkRMRXRCUVVzc1JVRkJSVHM3VlVGQk0wSXNTVUZCU1N4blFrRkJaQ3hS
UVVGUk8xVkJRVkVzU1VGQlNTeG5Ra0ZCU2l4SlFVRkpPenRCUVVWNlFpeHpRa0ZCUnl4SlFVRkpM
RU5CUVVNc1NVRkJTU3hGUVVGRkxGVkJRVk1zUjBGQlJ5eEZRVUZGTEVsQlFVa3NSVUZCUlR0QlFV
Tm9ReXhaUVVGSkxFZEJRVWNzUlVGQlJUdEJRVU5RTEdsQ1FVRlBMRkZCUVZFc1EwRkJReXhKUVVG
SkxGbEJRVmNzVTBGQlV5eHZRMEZCYTBNc1NVRkJTU3hQUVVGSkxFTkJRVU1zUTBGQlF6dFRRVU55
UmpzN1FVRkZSQ3haUVVGSkxFbEJRVWtzUTBGQlF5eFhRVUZYTEVWQlFVVXNSVUZCUlR0QlFVTjBR
aXhqUVVGSkxFTkJRVU1zV1VGQldTeEhRVUZITEVsQlFVa3NRMEZCUXpzN1FVRkZla0lzTUVKQlFV
Y3NUMEZCVHl4RFFVRkRMRWxCUVVrc1JVRkJSU3hWUVVGVExFZEJRVWNzUlVGQlJTeFJRVUZSTEVW
QlFVVTdPMEZCUlhaRExHZENRVUZKTEVkQlFVY3NSVUZCUlR0QlFVTlFMSEZDUVVGUExGRkJRVkVz
UTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0aFFVTjBRanRCUVVORUxHOUNRVUZSTEVOQlFVTXNU
MEZCVHl4RFFVRkRMRlZCUVZNc1NVRkJTU3hGUVVGRk8wRkJRemxDTEd0Q1FVRkpMRk5CUVZNc1Iw
RkJSeXhKUVVGSkxFZEJRVWNzUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXpzN1FVRkZiRU1zYTBK
QlFVa3NVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zU1VGQlNTeG5Ra0ZC
Unl4UlFVRlJMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zVjBGQlZ5eEZRVUZGTEVWQlFVVTdR
VUZEY2tVc2NVSkJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUXl4UlFVRlJMRVZCUVVVc1Uw
RkJVeXhGUVVGRkxFbEJRVWtzUlVGQlJTeEpRVUZKTEVsQlFVa3NTVUZCU1N4RlFVRkRMRU5CUVVN
c1EwRkJRenRsUVVOMlJEdGhRVU5HTEVOQlFVTXNRMEZCUXpzN1FVRkZTQ3h2UWtGQlVTeEZRVUZG
TEVOQlFVTTdWMEZEV2l4RFFVRkRMRU5CUVVNN1UwRkRTaXhOUVVGTk8wRkJRMHdzTUVKQlFVY3NV
VUZCVVN4RFFVRkRMRWxCUVVrc1JVRkJSU3hOUVVGTkxFVkJRVVVzVlVGQlV5eEhRVUZITEVWQlFV
VXNTVUZCU1N4RlFVRkZPenRCUVVVMVF5eG5Ra0ZCU1N4SFFVRkhMRVZCUVVVN1FVRkRVQ3h4UWtG
QlR5eFJRVUZSTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1lVRkRkRUk3TzBGQlJVUXNaMEpC
UVVrc1NVRkJTU3hEUVVGRExFZEJRVWNzU1VGQlNTeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRM
RWRCUVZFc1EwRkJReXhMUVVGTExFTkJRVU1zUlVGQlJUdEJRVU0xUXl4clFrRkJTU3hIUVVGSExF
bEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1lVRkRNVUk3T3p0
QlFVZEVMR2RDUVVGSkxFbEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTTdRVUZEYUVJc1owSkJRVWtz
UTBGQlF5eEpRVUZKTEVWQlFVVTdRVUZEVkN4clFrRkJTU3hIUVVGSExFMUJka2RZTEZGQlFWRXNR
MEYxUjFrc1NVRkJTU3hEUVVGRExFTkJRVU03WVVGRGRrSXNUVUZCVFN4SlFVRkpMRWxCUVVrc1Ew
RkJReXhQUVVGUExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RlFVRkZPMEZCUTI1
RExHdENRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhKUVVGSkxFTkJRVU1z
VFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPMkZCUTNoRE8wRkJRMFFzWjBKQlFVa3NS
MEZCUnl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExGTkJRVk1zUlVGQlJTeEZRVUZGTEVOQlFV
TXNRMEZCUXpzN1FVRkZia01zWlVGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXp0QlFVTlFMR3RDUVVG
SkxFVkJRVVVzU1VGQlNUdEJRVU5XTEd0Q1FVRkpMRVZCUVVVc1NVRkJTVHRCUVVOV0xHOUNRVUZO
TEVWQlFVVXNTVUZCU1R0aFFVTmlMRU5CUVVNc1EwRkJRenM3UVVGRlNDeHZRa0ZCVVN4RlFVRkZM
RU5CUVVNN1YwRkRXaXhEUVVGRExFTkJRVU03VTBGRFNqdFBRVU5HTEVOQlFVTXNRMEZCUXp0TFFV
TktMRVZCUTBRc1ZVRkJVeXhIUVVGSExFVkJRVVU3UVVGRFdpeFZRVUZKTEVkQlFVY3NSVUZCUlR0
QlFVTlFMR2RDUVVGUkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdUMEZEWml4TlFVRk5PMEZC
UTB3c1owSkJRVkVzUTBGQlF5eFRRVUZUTEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNN1QwRkRN
VUk3UzBGRFJpeERRVUZETEVOQlFVTTdSMEZEU2pzN1FVRkZSQ3hSUVVGTkxFTkJRVU1zVDBGQlR5
eERRVUZETEVkQlFVY3NSMEZCUnl4VlFVRlRMRWxCUVVrc1JVRkJSVHRCUVVOc1F5eFJRVUZKTEVs
QlFVa3NRMEZCUXl4UFFVRlBMRVZCUVVVN1FVRkRhRUlzWVVGQlR5eERRVUZETEVkQlFVY3NRMEZC
UXl4WlFVRlhMRTlCUVU4c1EwRkJReXhEUVVGRE8wRkJRMmhETEdGQlFVODdTMEZEVWpzN1FVRkZS
Q3hSUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4TlFVRk5MRWxCUVVrc1Ew
RkJReXhKUVVGSkxFTkJRVU1zV1VGQldTeEZRVUZGTzBGQlEyaEVMRmxCUVUwc1NVRkJTU3haUVVG
WExGTkJRVk1zUTBGQlF5eHBSRUZCYVVRc1EwRkJReXhEUVVGRE8wdEJRMjVHT3p0QlFVVkVMRkZC
UVVrc1NVRkJTU3hEUVVGRExFMUJRVTBzU1VGQlNTeEpRVUZKTEVOQlFVTXNSMEZCUnl4RlFVRkZP
MEZCUXpOQ0xGbEJRVTBzU1VGQlNTeFpRVUZYTEZOQlFWTXNRMEZCUXl4clEwRkJhME1zUTBGQlF5
eERRVUZETzB0QlEzQkZPenRCUVVWRUxGRkJRVTBzVVVGQlVTeEhRVUZITEVsQlFVa3NRMEZCUXl4
VFFVRlRMRU5CUVVNc1RVRkJUU3hMUVVGTExFTkJRVU1zU1VGQlNTeEpRVUZKTEVOQlFVTXNXVUZC
V1N4RFFVRkRPMEZCUTJ4RkxGRkJRVWtzU1VGQlNTeERRVUZETEUxQlFVMHNTVUZCU1N4UlFVRlJM
RVZCUVVVN1FVRkRNMElzV1VGQlRTeEpRVUZKTEZsQlFWY3NVMEZCVXl4RFFVRkRMRzlFUVVGdlJD
eERRVUZETEVOQlFVTTdTMEZEZEVZN096dEJRVWRFTEZGQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVN
c1IwRkJSeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEZGQlFWRXNTVUZCU1N4SlFVRkpMRU5C
UVVNc1UwRkJVeXhEUVVGRExFMUJRVTBzUzBGQlN5eERRVUZETEVsQlEzWkVMRU5CUVVNc1NVRkJT
U3hEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRVZCUVVVN1FV
RkRPVUlzVlVGQlNTeERRVUZETEUxQlFVMHNSMEZCUnl4SlFVRkpMRU5CUVVNN1MwRkRjRUk3T3p0
QlFVZEVMRkZCUVVrc1MwRkJTeXhIUVVGSExFVkJRVVVzUTBGQlF6dEJRVU5tTEZGQlFVa3NTVUZC
U1N4RFFVRkRMRXRCUVVzc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eFBRVUZQTEVOQlFVTXNT
VUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhGUVVGRk8wRkJRelZETEZWQlFVa3NRMEZCUXl4TFFV
RkxMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdTMEZETTBJ
N1FVRkRSQ3hSUVVGSkxFbEJRVWtzUTBGQlF5eExRVUZMTEVWQlFVVTdRVUZEWkN4WFFVRkxMRWxC
UVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeEhRVUZITEVkQlFVY3NTVUZCU1N4RFFVRkRM
RXRCUVVzc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEhRVUZITEVkQlFVY3NSVUZCUlN4RFFV
RkRMRVZCUVVVc1JVRkJSVHRCUVVOeVJDeGhRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVz
c1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXp0UFFVTTNRanRM
UVVOR096dEJRVVZFTEZGQlFVMHNWVUZCVlN4SFFVRkhMRWxCUVVrc1EwRkJReXhQUVVGUExFZEJR
VWNzY1VKQlFYRkNMRWRCUVVjc1YwRkJWeXhEUVVGRE96dEJRVVYwUlN4UlFVRkpMRTFCUVUwc1Iw
RkJSeXhsUVhSTFdTeFZRVUZWTEVWQmMwdE9MRU5CUVVNN1FVRkRPVUlzVVVGQlNTeERRVUZETEVs
QlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVN1FVRkRhRUlzVlVGQlNTeEpRVUZKTEVOQlFVTXNSMEZC
Unl4RlFVRkZPMEZCUTFvc1kwRkJUU3hEUVVGRExFZEJRVWNzUTBGQlF5eFpRVUZaTEVkQlFVY3NT
VUZCU1N4RFFVRkRMR0ZCUVdFc1IwRkJSeXh6UmtGQmMwWXNRMEZCUXl4RFFVRkRPMDlCUTNoSkxF
MUJRVTBzU1VGQlNTeEpRVUZKTEVOQlFVTXNVVUZCVVN4RlFVRkZPMEZCUTNoQ0xHTkJRVTBzUTBG
QlF5eEhRVUZITEVOQlFVTXNORUpCUVRSQ0xFZEJRVWNzU1VGQlNTeERRVUZETEZGQlFWRXNSMEZC
Unl4TFFVRkxMRU5CUVVNc1EwRkJRenRQUVVOc1JTeE5RVUZOTzBGQlEwd3NZMEZCVFN4RFFVRkRM
RWRCUVVjc1EwRkJReXhwUWtGQmFVSXNRMEZCUXl4RFFVRkRPMDlCUXk5Q08wRkJRMFFzV1VGQlRT
eERRVUZETEVkQlFVY3NRMEZCUXl4dlJFRkJiMFFzUTBGQlF5eERRVUZETzBGQlEycEZMRlZCUVVr
c1NVRkJTU3hEUVVGRExGTkJRVk1zUlVGQlJUdEJRVU5zUWl4alFVRk5MRU5CUVVNc1IwRkJSeXhE
UVVGRExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXp0QlFVTXpRaXhqUVVGTkxFTkJR
VU1zUjBGQlJ5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMEZCUTJ4Q0xHTkJRVTBzUTBGQlF5
eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRE8wRkJRek5DTEdO
QlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03VDBGRGNFSTdRVUZE
UkN4WlFVRk5MRU5CUVVNc1IwRkJSeXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzB0QlEzSkNP
enRCUVVWRUxGRkJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNUMEZCVHl4RFFVRkRMRlZCUVZNc1VV
RkJVU3hGUVVGRk8wRkJRM2hETEZWQlFVa3NUMEZCVHl4SFFVRkhPMEZCUTFvc2IwSkJRVmtzUlVG
QlJTeExRVUZMTzBGQlEyNUNMSGRDUVVGblFpeEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPMDlC
UTNwQ0xFTkJRVU03TzBGQlJVWXNWVUZCU1N4SlFVRkpMRU5CUVVNc1IwRkJSeXhGUVVGRk8wRkJR
MW9zWlVGQlR5eERRVUZETEU5QlFVOHNSMEZCUnl4UlFVRlJMRU5CUVVNc1NVRkJTU3hEUVVGRE8w
OUJRMnBETzBGQlEwUXNWVUZCU1N4SlFVRkpMRU5CUVVNc1NVRkJTU3hGUVVGRk8wRkJRMklzWlVG
QlR5eERRVUZETEVsQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNN1QwRkRja0k3TzBGQlJVUXNWVUZC
U1N4WFFVRlhMRWRCUVVjc1dVRkJWeXhWUVVGVkxFTkJRVU1zVVVGQlVTeERRVUZETEUxQlFVMHNS
VUZCUlN4UFFVRlBMRU5CUVVNc1EwRkJRenM3TzBGQlIyeEZMRlZCUVVrc1NVRkJTU3hEUVVGRExF
ZEJRVWNzUlVGQlJUdEJRVU5hTEZsQlFVa3NVVUZCVVN4SFFVRkhMR1ZCTVUxaUxHbENRVUZwUWl4
RFFUQk5hMElzVjBGQlZ5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMEZCUTNSRUxHMUNRVUZY
TEVkQlFVY3NWMEV6VFU4c1ZVRkJWU3hEUVRKTlRpeDFRa0ZCZFVJc1EwRkJReXhYUVVGWExFTkJR
VU1zU1VGQlNTeEZRVUZGTEZGQlFWRXNRMEZCUXl4RFFVRkRPMDlCUXpsRk96dEJRVVZFTEZWQlFV
a3NTVUZCU1N4RFFVRkRMRTFCUVUwc1JVRkJSVHRCUVVObUxHTkJRVTBzUTBGQlF5eEhRVUZITEVO
QlFVTXNRMEZCUXl4WFFVRlhMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF6dFBRVU5x
UXl4TlFVRk5PMEZCUTB3c1dVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eEpRVUZKTEVWQlFVVTdR
VUZEYkVJc1owSkJRVTBzU1VGQlNTeFpRVUZYTEZOQlFWTXNRMEZCUXl3eVFrRkJNa0lzUTBGQlF5
eERRVUZETzFOQlF6ZEVPenRCUVVWRUxGbEJRVWtzU1VGQlNTeERRVUZETEVkQlFVY3NTVUZCU1N4
RFFVRkRMRkZCUVZFc1JVRkJSVHRCUVVONlFpeG5Ra0ZCVFN4RFFVRkRMRWRCUVVjc1EwRkJReXhU
UVVGVExFTkJRVU1zUTBGQlF6dFRRVU4yUWp0QlFVTkVMR05CUVUwc1EwRkJReXhIUVVGSExFTkJR
VU1zUTBGQlF5eFZRVUZWTEVWQlFVVXNTMEZCU3l4RlFVRkZMRkZCUVZFc1EwRkJReXhKUVVGSkxF
VkJRVVVzYVVKQlFXbENMRVZCUVVVc1YwRkJWeXhGUVVGRkxFMUJRVTBzUTBGQlF5eERRVUZETEVO
QlFVTTdUMEZEZUVZN1MwRkRSaXhEUVVGRExFTkJRVU03T3p0QlFVZElMRkZCUVVrc1EwRkJReXhK
UVVGSkxFTkJRVU1zVFVGQlRTeEZRVUZGTzBGQlEyaENMRlZCUVVrc1NVRkJTU3hEUVVGRExFZEJR
VWNzUlVGQlJUdEJRVU5hTEZsQlFVa3NVVUZCVVN4RlFVRkZPMEZCUTFvc1owSkJRVTBzUTBGQlF5
eEhRVUZITEVOQlFVTXNRMEZCUXl4VFFVRlRMRVZCUVVVc1ZVRkJWU3hGUVVGRkxFdEJRVXNzUTBG
QlF5eERRVUZETEVOQlFVTTdVMEZETlVNN1FVRkRSQ3hqUVVGTkxFTkJRVU1zUjBGQlJ5eERRVUZE
TEV0QlFVc3NRMEZCUXl4RFFVRkRPMDlCUTI1Q0xFMUJRVTBzU1VGQlNTeERRVUZETEVsQlFVa3NR
MEZCUXl4UlFVRlJMRVZCUVVVN1FVRkRla0lzWTBGQlRTeERRVUZETEVkQlFVY3NRMEZCUXl4UFFV
RlBMRU5CUVVNc1EwRkJRenRQUVVOeVFqdExRVU5HT3p0QlFVZEVMRkZCUVVrc1NVRkJTU3hEUVVG
RExFZEJRVWNzUlVGQlJUdEJRVU5hTEZsQlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc2VVSkJRWGxD
TEVkQlFVY3NTVUZCU1N4RFFVRkRMRWRCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlF6dExR
VU42UkRzN1FVRkZSQ3hWUVVGTkxFZEJRVWNzVFVGQlRTeERRVUZETEhGQ1FVRnhRaXhGUVVGRkxF
TkJRVU03UVVGRGVFTXNWVUZCVFN4RFFVRkRMRWRCUVVjc1IwRkJSeXhOUVVGTkxFTkJRVU1zUjBG
QlJ5eEhRVUZITEVWQlFVVXNRMEZCUXpzN1FVRkZOMElzVVVGQlNTeEpRVUZKTEVOQlFVTXNSMEZC
Unl4RlFVRkZPMEZCUTFvc1dVRkJUU3hIUVVGSExHMUNRVUZQTEUxQlFVMHNRMEZCUXl4TlFVRk5M
RU5CUVVNc1NVRkJTU3hGUVVGRk8wRkJRMnhETEd0Q1FVRlZMRVZCUVVVc1NVRkJTVHM3UVVGRmFF
SXNiMEpCUVZrc1JVRkJSU3hKUVVGSkxFTkJRVU1zUjBGQlJ6dEJRVU4wUWl4dFFrRkJWeXhGUVVG
RkxFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWRCUVVjc1EwRkJRenRQ
UVVOd1F5eERRVUZETEVOQlFVTTdRVUZEU0N4VlFVRkpMRWxCUVVrc1EwRkJReXhIUVVGSExFVkJR
VVU3UVVGRFdpeGpRVUZOTEVOQlFVTXNTVUZCU1N4SlFVRkpMSGxDUVVGNVFpeEhRVUZITEVsQlFV
a3NRMEZCUXl4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRE8wOUJRelZFTzB0QlEwWTdPMEZCUlVR
c1VVRkJTU3hKUVVGSkxFTkJRVU1zUjBGQlJ5eEZRVUZGTzBGQlExb3NjMEpCUVVjc1lVRkJZU3hE
UVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVWQlFVVXNUVUZCVFN4RFFVRkRMRWRCUVVjc1JVRkJS
U3hOUVVGTkxFTkJRVU1zUTBGQlF6dExRVU5vUkR0QlFVTkVMRlZCUVUwc1IwRkJSeXhOUVVGTkxF
TkJRVU1zU1VGQlNTeERRVUZET3p0QlFVVnlRaXhSUVVGSkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVW
QlFVVTdRVUZEWml4elFrRkJSeXhoUVVGaExFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNSVUZC
UlN4TlFVRk5MRVZCUVVVc1RVRkJUU3hEUVVGRExFTkJRVU03UzBGREwwTXNUVUZCVFR0QlFVTk1M
R0ZCUVU4c1EwRkJReXhIUVVGSExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdTMEZEY2tJN1Iw
RkRSaXhEUVVGRE96dEJRVVZHTEZkQlFWTXNVMEZCVXl4RFFVRkRMRXRCUVVzc1JVRkJSVHRCUVVO
NFFpeFRRVUZMTEVkQlFVY3NTMEZCU3l4SlFVRkpMRWxCUVVrc1IwRkJSeXhMUVVGTExFZEJRVWNz
UlVGQlJTeERRVUZETzBGQlEyNURMRkZCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVDBGQlR5eERR
VUZETEV0QlFVc3NRMEZCUXl4RlFVRkZPMEZCUTNwQ0xGZEJRVXNzUjBGQlJ5eERRVUZETEV0QlFV
c3NRMEZCUXl4RFFVRkRPMHRCUTJwQ08wRkJRMFFzVjBGQlR5eExRVUZMTEVOQlFVTTdSMEZEWkNJ
c0ltWnBiR1VpT2lKd2NtVmpiMjF3YVd4bGNpNXFjeUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBi
SWk4cUlHVnpiR2x1ZEMxa2FYTmhZbXhsSUc1dkxXTnZibk52YkdVZ0tpOWNibWx0Y0c5eWRDQkJj
M2x1WXlCbWNtOXRJQ2RoYzNsdVl5YzdYRzVwYlhCdmNuUWdabk1nWm5KdmJTQW5abk1uTzF4dWFX
MXdiM0owSUNvZ1lYTWdTR0Z1Wkd4bFltRnljeUJtY205dElDY3VMMmhoYm1Sc1pXSmhjbk1uTzF4
dWFXMXdiM0owSUh0aVlYTmxibUZ0WlgwZ1puSnZiU0FuY0dGMGFDYzdYRzVwYlhCdmNuUWdlMU52
ZFhKalpVMWhjRU52Ym5OMWJXVnlMQ0JUYjNWeVkyVk9iMlJsZlNCbWNtOXRJQ2R6YjNWeVkyVXRi
V0Z3Snp0Y2JtbHRjRzl5ZENCMVoyeHBabmtnWm5KdmJTQW5kV2RzYVdaNUxXcHpKenRjYmx4dWJX
OWtkV3hsTG1WNGNHOXlkSE11Ykc5aFpGUmxiWEJzWVhSbGN5QTlJR1oxYm1OMGFXOXVLRzl3ZEhN
c0lHTmhiR3hpWVdOcktTQjdYRzRnSUd4dllXUlRkSEpwYm1kektHOXdkSE1zSUdaMWJtTjBhVzl1
S0dWeWNpd2djM1J5YVc1bmN5a2dlMXh1SUNBZ0lHbG1JQ2hsY25JcElIdGNiaUFnSUNBZ0lHTmhi
R3hpWVdOcktHVnljaWs3WEc0Z0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lHeHZZV1JHYVd4bGN5
aHZjSFJ6TENCbWRXNWpkR2x2YmlobGNuSXNJR1pwYkdWektTQjdYRzRnSUNBZ0lDQWdJR2xtSUNo
bGNuSXBJSHRjYmlBZ0lDQWdJQ0FnSUNCallXeHNZbUZqYXlobGNuSXBPMXh1SUNBZ0lDQWdJQ0I5
SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUc5d2RITXVkR1Z0Y0d4aGRHVnpJRDBnYzNSeWFXNW5j
eTVqYjI1allYUW9abWxzWlhNcE8xeHVJQ0FnSUNBZ0lDQWdJR05oYkd4aVlXTnJLSFZ1WkdWbWFX
NWxaQ3dnYjNCMGN5azdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJSDBwTzF4dUlDQWdJSDFjYmlB
Z2ZTazdYRzU5TzF4dVhHNW1kVzVqZEdsdmJpQnNiMkZrVTNSeWFXNW5jeWh2Y0hSekxDQmpZV3hz
WW1GamF5a2dlMXh1SUNCc1pYUWdjM1J5YVc1bmN5QTlJR0Z5Y21GNVEyRnpkQ2h2Y0hSekxuTjBj
bWx1Wnlrc1hHNGdJQ0FnSUNCdVlXMWxjeUE5SUdGeWNtRjVRMkZ6ZENodmNIUnpMbTVoYldVcE8x
eHVYRzRnSUdsbUlDaHVZVzFsY3k1c1pXNW5kR2dnSVQwOUlITjBjbWx1WjNNdWJHVnVaM1JvWEc0
Z0lDQWdJQ0FtSmlCemRISnBibWR6TG14bGJtZDBhQ0ErSURFcElIdGNiaUFnSUNCeVpYUjFjbTRn
WTJGc2JHSmhZMnNvYm1WM0lFaGhibVJzWldKaGNuTXVSWGhqWlhCMGFXOXVLQ2RPZFcxaVpYSWdi
MllnYm1GdFpYTWdaR2xrSUc1dmRDQnRZWFJqYUNCMGFHVWdiblZ0WW1WeUlHOW1JSE4wY21sdVp5
QnBibkIxZEhNbktTazdYRzRnSUgxY2JseHVJQ0JCYzNsdVl5NXRZWEFvYzNSeWFXNW5jeXdnWm5W
dVkzUnBiMjRvYzNSeWFXNW5MQ0JqWVd4c1ltRmpheWtnZTF4dUlDQWdJQ0FnYVdZZ0tITjBjbWx1
WnlBaFBUMGdKeTBuS1NCN1hHNGdJQ0FnSUNBZ0lHTmhiR3hpWVdOcktIVnVaR1ZtYVc1bFpDd2dj
M1J5YVc1bktUdGNiaUFnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lDOHZJRXh2WVdRZ1pu
SnZiU0J6ZEdScGJseHVJQ0FnSUNBZ0lDQnNaWFFnWW5WbVptVnlJRDBnSnljN1hHNGdJQ0FnSUNB
Z0lIQnliMk5sYzNNdWMzUmthVzR1YzJWMFJXNWpiMlJwYm1jb0ozVjBaamduS1R0Y2JseHVJQ0Fn
SUNBZ0lDQndjbTlqWlhOekxuTjBaR2x1TG05dUtDZGtZWFJoSnl3Z1puVnVZM1JwYjI0b1kyaDFi
bXNwSUh0Y2JpQWdJQ0FnSUNBZ0lDQmlkV1ptWlhJZ0t6MGdZMmgxYm1zN1hHNGdJQ0FnSUNBZ0lI
MHBPMXh1SUNBZ0lDQWdJQ0J3Y205alpYTnpMbk4wWkdsdUxtOXVLQ2RsYm1RbkxDQm1kVzVqZEds
dmJpZ3BJSHRjYmlBZ0lDQWdJQ0FnSUNCallXeHNZbUZqYXloMWJtUmxabWx1WldRc0lHSjFabVps
Y2lrN1hHNGdJQ0FnSUNBZ0lIMHBPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMHNYRzRnSUNBZ1puVnVZ
M1JwYjI0b1pYSnlMQ0J6ZEhKcGJtZHpLU0I3WEc0Z0lDQWdJQ0J6ZEhKcGJtZHpJRDBnYzNSeWFX
NW5jeTV0WVhBb0tITjBjbWx1Wnl3Z2FXNWtaWGdwSUQwK0lDaDdYRzRnSUNBZ0lDQWdJRzVoYldV
NklHNWhiV1Z6VzJsdVpHVjRYU3hjYmlBZ0lDQWdJQ0FnY0dGMGFEb2dibUZ0WlhOYmFXNWtaWGhk
TEZ4dUlDQWdJQ0FnSUNCemIzVnlZMlU2SUhOMGNtbHVaMXh1SUNBZ0lDQWdmU2twTzF4dUlDQWdJ
Q0FnWTJGc2JHSmhZMnNvWlhKeUxDQnpkSEpwYm1kektUdGNiaUFnSUNCOUtUdGNibjFjYmx4dVpu
VnVZM1JwYjI0Z2JHOWhaRVpwYkdWektHOXdkSE1zSUdOaGJHeGlZV05yS1NCN1hHNGdJQzh2SUVK
MWFXeGtJR1pwYkdVZ1pYaDBaVzV6YVc5dUlIQmhkSFJsY201Y2JpQWdiR1YwSUdWNGRHVnVjMmx2
YmlBOUlDaHZjSFJ6TG1WNGRHVnVjMmx2YmlCOGZDQW5hR0Z1Wkd4bFltRnljeWNwTG5KbGNHeGhZ
MlVvTDF0Y1hGeGNYaVFxS3o4dUtDazZQU0Y4ZTMxY1hDMWNYRnRjWEYxZEwyY3NJR1oxYm1OMGFX
OXVLR0Z5WnlrZ2V5QnlaWFIxY200Z0oxeGNYRnduSUNzZ1lYSm5PeUI5S1R0Y2JpQWdaWGgwWlc1
emFXOXVJRDBnYm1WM0lGSmxaMFY0Y0NnblhGeGNYQzRuSUNzZ1pYaDBaVzV6YVc5dUlDc2dKeVFu
S1R0Y2JseHVJQ0JzWlhRZ2NtVjBJRDBnVzEwc1hHNGdJQ0FnSUNCeGRXVjFaU0E5SUNodmNIUnpM
bVpwYkdWeklIeDhJRnRkS1M1dFlYQW9LSFJsYlhCc1lYUmxLU0E5UGlBb2UzUmxiWEJzWVhSbExD
QnliMjkwT2lCdmNIUnpMbkp2YjNSOUtTazdYRzRnSUVGemVXNWpMbmRvYVd4emRDZ29LU0E5UGlC
eGRXVjFaUzVzWlc1bmRHZ3NJR1oxYm1OMGFXOXVLR05oYkd4aVlXTnJLU0I3WEc0Z0lDQWdiR1Yw
SUh0MFpXMXdiR0YwWlRvZ2NHRjBhQ3dnY205dmRIMGdQU0J4ZFdWMVpTNXphR2xtZENncE8xeHVY
RzRnSUNBZ1puTXVjM1JoZENod1lYUm9MQ0JtZFc1amRHbHZiaWhsY25Jc0lITjBZWFFwSUh0Y2Jp
QWdJQ0FnSUdsbUlDaGxjbklwSUh0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUdOaGJHeGlZV05yS0c1
bGR5QklZVzVrYkdWaVlYSnpMa1Y0WTJWd2RHbHZiaWhnVlc1aFlteGxJSFJ2SUc5d1pXNGdkR1Z0
Y0d4aGRHVWdabWxzWlNCY0lpUjdjR0YwYUgxY0ltQXBLVHRjYmlBZ0lDQWdJSDFjYmx4dUlDQWdJ
Q0FnYVdZZ0tITjBZWFF1YVhORWFYSmxZM1J2Y25rb0tTa2dlMXh1SUNBZ0lDQWdJQ0J2Y0hSekxt
aGhjMFJwY21WamRHOXllU0E5SUhSeWRXVTdYRzVjYmlBZ0lDQWdJQ0FnWm5NdWNtVmhaR1JwY2lo
d1lYUm9MQ0JtZFc1amRHbHZiaWhsY25Jc0lHTm9hV3hrY21WdUtTQjdYRzRnSUNBZ0lDQWdJQ0Fn
THlvZ2FYTjBZVzVpZFd3Z2FXZHViM0psSUc1bGVIUWdPaUJTWVdObElHTnZibVJwZEdsdmJpQjBh
R0YwSUdKbGFXNW5JSFJ2YnlCc1lYcDVJSFJ2SUhSbGMzUWdLaTljYmlBZ0lDQWdJQ0FnSUNCcFpp
QW9aWEp5S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdZMkZzYkdKaFkyc29aWEp5S1R0
Y2JpQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnWTJocGJHUnlaVzR1Wm05eVJXRmphQ2ht
ZFc1amRHbHZiaWhtYVd4bEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCc1pYUWdZMmhwYkdSUVlYUm9J
RDBnY0dGMGFDQXJJQ2N2SnlBcklHWnBiR1U3WEc1Y2JpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNobGVI
Umxibk5wYjI0dWRHVnpkQ2hqYUdsc1pGQmhkR2dwSUh4OElHWnpMbk4wWVhSVGVXNWpLR05vYVd4
a1VHRjBhQ2t1YVhORWFYSmxZM1J2Y25rb0tTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQnhkV1Yx
WlM1d2RYTm9LSHQwWlcxd2JHRjBaVG9nWTJocGJHUlFZWFJvTENCeWIyOTBPaUJ5YjI5MElIeDhJ
SEJoZEdoOUtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQjlLVHRjYmx4dUlD
QWdJQ0FnSUNBZ0lHTmhiR3hpWVdOcktDazdYRzRnSUNBZ0lDQWdJSDBwTzF4dUlDQWdJQ0FnZlNC
bGJITmxJSHRjYmlBZ0lDQWdJQ0FnWm5NdWNtVmhaRVpwYkdVb2NHRjBhQ3dnSjNWMFpqZ25MQ0Jt
ZFc1amRHbHZiaWhsY25Jc0lHUmhkR0VwSUh0Y2JpQWdJQ0FnSUNBZ0lDQXZLaUJwYzNSaGJtSjFi
Q0JwWjI1dmNtVWdibVY0ZENBNklGSmhZMlVnWTI5dVpHbDBhVzl1SUhSb1lYUWdZbVZwYm1jZ2RH
OXZJR3hoZW5rZ2RHOGdkR1Z6ZENBcUwxeHVJQ0FnSUNBZ0lDQWdJR2xtSUNobGNuSXBJSHRjYmlB
Z0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCallXeHNZbUZqYXlobGNuSXBPMXh1SUNBZ0lDQWdJQ0Fn
SUgxY2JseHVJQ0FnSUNBZ0lDQWdJR2xtSUNodmNIUnpMbUp2YlNBbUppQmtZWFJoTG1sdVpHVjRU
MllvSjF4Y2RVWkZSa1luS1NBOVBUMGdNQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdaR0YwWVNBOUlH
UmhkR0V1YzNWaWMzUnlhVzVuS0RFcE8xeHVJQ0FnSUNBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnSUNB
Z0lDOHZJRU5zWldGdUlIUm9aU0IwWlcxd2JHRjBaU0J1WVcxbFhHNGdJQ0FnSUNBZ0lDQWdiR1Yw
SUc1aGJXVWdQU0J3WVhSb08xeHVJQ0FnSUNBZ0lDQWdJR2xtSUNnaGNtOXZkQ2tnZTF4dUlDQWdJ
Q0FnSUNBZ0lDQWdibUZ0WlNBOUlHSmhjMlZ1WVcxbEtHNWhiV1VwTzF4dUlDQWdJQ0FnSUNBZ0lI
MGdaV3h6WlNCcFppQW9ibUZ0WlM1cGJtUmxlRTltS0hKdmIzUXBJRDA5UFNBd0tTQjdYRzRnSUNB
Z0lDQWdJQ0FnSUNCdVlXMWxJRDBnYm1GdFpTNXpkV0p6ZEhKcGJtY29jbTl2ZEM1c1pXNW5kR2dn
S3lBeEtUdGNiaUFnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ2JtRnRaU0E5SUc1aGJXVXVj
bVZ3YkdGalpTaGxlSFJsYm5OcGIyNHNJQ2NuS1R0Y2JseHVJQ0FnSUNBZ0lDQWdJSEpsZEM1d2RY
Tm9LSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIQmhkR2c2SUhCaGRHZ3NYRzRnSUNBZ0lDQWdJQ0FnSUNC
dVlXMWxPaUJ1WVcxbExGeHVJQ0FnSUNBZ0lDQWdJQ0FnYzI5MWNtTmxPaUJrWVhSaFhHNGdJQ0Fn
SUNBZ0lDQWdmU2s3WEc1Y2JpQWdJQ0FnSUNBZ0lDQmpZV3hzWW1GamF5Z3BPMXh1SUNBZ0lDQWdJ
Q0I5S1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5S1R0Y2JpQWdmU3hjYmlBZ1puVnVZM1JwYjI0b1pY
SnlLU0I3WEc0Z0lDQWdhV1lnS0dWeWNpa2dlMXh1SUNBZ0lDQWdZMkZzYkdKaFkyc29aWEp5S1R0
Y2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdZMkZzYkdKaFkyc29kVzVrWldacGJtVmtMQ0J5
WlhRcE8xeHVJQ0FnSUgxY2JpQWdmU2s3WEc1OVhHNWNibTF2WkhWc1pTNWxlSEJ2Y25SekxtTnNh
U0E5SUdaMWJtTjBhVzl1S0c5d2RITXBJSHRjYmlBZ2FXWWdLRzl3ZEhNdWRtVnljMmx2YmlrZ2Ux
eHVJQ0FnSUdOdmJuTnZiR1V1Ykc5bktFaGhibVJzWldKaGNuTXVWa1ZTVTBsUFRpazdYRzRnSUNB
Z2NtVjBkWEp1TzF4dUlDQjlYRzVjYmlBZ2FXWWdLQ0Z2Y0hSekxuUmxiWEJzWVhSbGN5NXNaVzVu
ZEdnZ0ppWWdJVzl3ZEhNdWFHRnpSR2x5WldOMGIzSjVLU0I3WEc0Z0lDQWdkR2h5YjNjZ2JtVjNJ
RWhoYm1Sc1pXSmhjbk11UlhoalpYQjBhVzl1S0NkTmRYTjBJR1JsWm1sdVpTQmhkQ0JzWldGemRD
QnZibVVnZEdWdGNHeGhkR1VnYjNJZ1pHbHlaV04wYjNKNUxpY3BPMXh1SUNCOVhHNWNiaUFnYVdZ
Z0tHOXdkSE11YzJsdGNHeGxJQ1ltSUc5d2RITXViV2x1S1NCN1hHNGdJQ0FnZEdoeWIzY2dibVYz
SUVoaGJtUnNaV0poY25NdVJYaGpaWEIwYVc5dUtDZFZibUZpYkdVZ2RHOGdiV2x1YVcxcGVtVWdj
Mmx0Y0d4bElHOTFkSEIxZENjcE8xeHVJQ0I5WEc1Y2JpQWdZMjl1YzNRZ2JYVnNkR2x3YkdVZ1BT
QnZjSFJ6TG5SbGJYQnNZWFJsY3k1c1pXNW5kR2dnSVQwOUlERWdmSHdnYjNCMGN5NW9ZWE5FYVhK
bFkzUnZjbms3WEc0Z0lHbG1JQ2h2Y0hSekxuTnBiWEJzWlNBbUppQnRkV3gwYVhCc1pTa2dlMXh1
SUNBZ0lIUm9jbTkzSUc1bGR5QklZVzVrYkdWaVlYSnpMa1Y0WTJWd2RHbHZiaWduVlc1aFlteGxJ
SFJ2SUc5MWRIQjFkQ0J0ZFd4MGFYQnNaU0IwWlcxd2JHRjBaWE1nYVc0Z2MybHRjR3hsSUcxdlpH
VW5LVHRjYmlBZ2ZWeHVYRzRnSUM4dklFWnZjbU5sSUhOcGJYQnNaU0J0YjJSbElHbG1JSGRsSUdo
aGRtVWdiMjVzZVNCdmJtVWdkR1Z0Y0d4aGRHVWdZVzVrSUdsMEozTWdkVzV1WVcxbFpDNWNiaUFn
YVdZZ0tDRnZjSFJ6TG1GdFpDQW1KaUFoYjNCMGN5NWpiMjF0YjI1cWN5QW1KaUJ2Y0hSekxuUmxi
WEJzWVhSbGN5NXNaVzVuZEdnZ1BUMDlJREZjYmlBZ0lDQWdJQ1ltSUNGdmNIUnpMblJsYlhCc1lY
UmxjMXN3WFM1dVlXMWxLU0I3WEc0Z0lDQWdiM0IwY3k1emFXMXdiR1VnUFNCMGNuVmxPMXh1SUNC
OVhHNWNiaUFnTHk4Z1EyOXVkbVZ5ZENCMGFHVWdhMjV2ZDI0Z2JHbHpkQ0JwYm5SdklHRWdhR0Z6
YUZ4dUlDQnNaWFFnYTI1dmQyNGdQU0I3ZlR0Y2JpQWdhV1lnS0c5d2RITXVhMjV2ZDI0Z0ppWWdJ
VUZ5Y21GNUxtbHpRWEp5WVhrb2IzQjBjeTVyYm05M2Jpa3BJSHRjYmlBZ0lDQnZjSFJ6TG10dWIz
ZHVJRDBnVzI5d2RITXVhMjV2ZDI1ZE8xeHVJQ0I5WEc0Z0lHbG1JQ2h2Y0hSekxtdHViM2R1S1NC
N1hHNGdJQ0FnWm05eUlDaHNaWFFnYVNBOUlEQXNJR3hsYmlBOUlHOXdkSE11YTI1dmQyNHViR1Z1
WjNSb095QnBJRHdnYkdWdU95QnBLeXNwSUh0Y2JpQWdJQ0FnSUd0dWIzZHVXMjl3ZEhNdWEyNXZk
MjViYVYxZElEMGdkSEoxWlR0Y2JpQWdJQ0I5WEc0Z0lIMWNibHh1SUNCamIyNXpkQ0J2WW1wbFkz
Uk9ZVzFsSUQwZ2IzQjBjeTV3WVhKMGFXRnNJRDhnSjBoaGJtUnNaV0poY25NdWNHRnlkR2xoYkhN
bklEb2dKM1JsYlhCc1lYUmxjeWM3WEc1Y2JpQWdiR1YwSUc5MWRIQjFkQ0E5SUc1bGR5QlRiM1Z5
WTJWT2IyUmxLQ2s3WEc0Z0lHbG1JQ2doYjNCMGN5NXphVzF3YkdVcElIdGNiaUFnSUNCcFppQW9i
M0IwY3k1aGJXUXBJSHRjYmlBZ0lDQWdJRzkxZEhCMWRDNWhaR1FvSjJSbFptbHVaU2hiWEZ3bkp5
QXJJRzl3ZEhNdWFHRnVaR3hsWW1GeVVHRjBhQ0FySUNkb1lXNWtiR1ZpWVhKekxuSjFiblJwYldW
Y1hDZGRMQ0JtZFc1amRHbHZiaWhJWVc1a2JHVmlZWEp6S1NCN1hGeHVJQ0JJWVc1a2JHVmlZWEp6
SUQwZ1NHRnVaR3hsWW1GeWMxdGNJbVJsWm1GMWJIUmNJbDA3SnlrN1hHNGdJQ0FnZlNCbGJITmxJ
R2xtSUNodmNIUnpMbU52YlcxdmJtcHpLU0I3WEc0Z0lDQWdJQ0J2ZFhSd2RYUXVZV1JrS0NkMllY
SWdTR0Z1Wkd4bFltRnljeUE5SUhKbGNYVnBjbVVvWENJbklDc2diM0IwY3k1amIyMXRiMjVxY3lB
cklDZGNJaWs3SnlrN1hHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJRzkxZEhCMWRDNWhaR1Fv
SnlobWRXNWpkR2x2YmlncElIdGNYRzRuS1R0Y2JpQWdJQ0I5WEc0Z0lDQWdiM1YwY0hWMExtRmta
Q2duSUNCMllYSWdkR1Z0Y0d4aGRHVWdQU0JJWVc1a2JHVmlZWEp6TG5SbGJYQnNZWFJsTENCMFpX
MXdiR0YwWlhNZ1BTQW5LVHRjYmlBZ0lDQnBaaUFvYjNCMGN5NXVZVzFsYzNCaFkyVXBJSHRjYmlB
Z0lDQWdJRzkxZEhCMWRDNWhaR1FvYjNCMGN5NXVZVzFsYzNCaFkyVXBPMXh1SUNBZ0lDQWdiM1Yw
Y0hWMExtRmtaQ2duSUQwZ0p5azdYRzRnSUNBZ0lDQnZkWFJ3ZFhRdVlXUmtLRzl3ZEhNdWJtRnRa
WE53WVdObEtUdGNiaUFnSUNBZ0lHOTFkSEIxZEM1aFpHUW9KeUI4ZkNBbktUdGNiaUFnSUNCOVhH
NGdJQ0FnYjNWMGNIVjBMbUZrWkNnbmUzMDdYRnh1SnlrN1hHNGdJSDFjYmx4dUlDQnZjSFJ6TG5S
bGJYQnNZWFJsY3k1bWIzSkZZV05vS0daMWJtTjBhVzl1S0hSbGJYQnNZWFJsS1NCN1hHNGdJQ0Fn
YkdWMElHOXdkR2x2Ym5NZ1BTQjdYRzRnSUNBZ0lDQnJibTkzYmtobGJIQmxjbk02SUd0dWIzZHVM
Rnh1SUNBZ0lDQWdhMjV2ZDI1SVpXeHdaWEp6VDI1c2VUb2diM0IwY3k1dlhHNGdJQ0FnZlR0Y2Js
eHVJQ0FnSUdsbUlDaHZjSFJ6TG0xaGNDa2dlMXh1SUNBZ0lDQWdiM0IwYVc5dWN5NXpjbU5PWVcx
bElEMGdkR1Z0Y0d4aGRHVXVjR0YwYUR0Y2JpQWdJQ0I5WEc0Z0lDQWdhV1lnS0c5d2RITXVaR0Yw
WVNrZ2UxeHVJQ0FnSUNBZ2IzQjBhVzl1Y3k1a1lYUmhJRDBnZEhKMVpUdGNiaUFnSUNCOVhHNWNi
aUFnSUNCc1pYUWdjSEpsWTI5dGNHbHNaV1FnUFNCSVlXNWtiR1ZpWVhKekxuQnlaV052YlhCcGJH
VW9kR1Z0Y0d4aGRHVXVjMjkxY21ObExDQnZjSFJwYjI1ektUdGNibHh1SUNBZ0lDOHZJRWxtSUhk
bElHRnlaU0JuWlc1bGNtRjBhVzVuSUdFZ2MyOTFjbU5sSUcxaGNDd2dkMlVnYUdGMlpTQjBieUJ5
WldOdmJuTjBjblZqZENCMGFHVWdVMjkxY21ObFRtOWtaU0J2WW1wbFkzUmNiaUFnSUNCcFppQW9i
M0IwY3k1dFlYQXBJSHRjYmlBZ0lDQWdJR3hsZENCamIyNXpkVzFsY2lBOUlHNWxkeUJUYjNWeVky
Vk5ZWEJEYjI1emRXMWxjaWh3Y21WamIyMXdhV3hsWkM1dFlYQXBPMXh1SUNBZ0lDQWdjSEpsWTI5
dGNHbHNaV1FnUFNCVGIzVnlZMlZPYjJSbExtWnliMjFUZEhKcGJtZFhhWFJvVTI5MWNtTmxUV0Z3
S0hCeVpXTnZiWEJwYkdWa0xtTnZaR1VzSUdOdmJuTjFiV1Z5S1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJ
Q0JwWmlBb2IzQjBjeTV6YVcxd2JHVXBJSHRjYmlBZ0lDQWdJRzkxZEhCMWRDNWhaR1FvVzNCeVpX
TnZiWEJwYkdWa0xDQW5YRnh1SjEwcE8xeHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0JwWmlB
b0lYUmxiWEJzWVhSbExtNWhiV1VwSUh0Y2JpQWdJQ0FnSUNBZ2RHaHliM2NnYm1WM0lFaGhibVJz
WldKaGNuTXVSWGhqWlhCMGFXOXVLQ2RPWVcxbElHMXBjM05wYm1jZ1ptOXlJSFJsYlhCc1lYUmxK
eWs3WEc0Z0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUdsbUlDaHZjSFJ6TG1GdFpDQW1KaUFoYlhWc2RH
bHdiR1VwSUh0Y2JpQWdJQ0FnSUNBZ2IzVjBjSFYwTG1Ga1pDZ25jbVYwZFhKdUlDY3BPMXh1SUNB
Z0lDQWdmVnh1SUNBZ0lDQWdiM1YwY0hWMExtRmtaQ2hiYjJKcVpXTjBUbUZ0WlN3Z0oxdGNYQ2Nu
TENCMFpXMXdiR0YwWlM1dVlXMWxMQ0FuWEZ3blhTQTlJSFJsYlhCc1lYUmxLQ2NzSUhCeVpXTnZi
WEJwYkdWa0xDQW5LVHRjWEc0blhTazdYRzRnSUNBZ2ZWeHVJQ0I5S1R0Y2JseHVJQ0F2THlCUGRY
UndkWFFnZEdobElHTnZiblJsYm5SY2JpQWdhV1lnS0NGdmNIUnpMbk5wYlhCc1pTa2dlMXh1SUNB
Z0lHbG1JQ2h2Y0hSekxtRnRaQ2tnZTF4dUlDQWdJQ0FnYVdZZ0tHMTFiSFJwY0d4bEtTQjdYRzRn
SUNBZ0lDQWdJRzkxZEhCMWRDNWhaR1FvV3lkeVpYUjFjbTRnSnl3Z2IySnFaV04wVG1GdFpTd2dK
enRjWEc0blhTazdYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQnZkWFJ3ZFhRdVlXUmtLQ2Q5S1RzbktU
dGNiaUFnSUNCOUlHVnNjMlVnYVdZZ0tDRnZjSFJ6TG1OdmJXMXZibXB6S1NCN1hHNGdJQ0FnSUNC
dmRYUndkWFF1WVdSa0tDZDlLU2dwT3ljcE8xeHVJQ0FnSUgxY2JpQWdmVnh1WEc1Y2JpQWdhV1ln
S0c5d2RITXViV0Z3S1NCN1hHNGdJQ0FnYjNWMGNIVjBMbUZrWkNnblhGeHVMeThqSUhOdmRYSmpa
VTFoY0hCcGJtZFZVa3c5SnlBcklHOXdkSE11YldGd0lDc2dKMXhjYmljcE8xeHVJQ0I5WEc1Y2Jp
QWdiM1YwY0hWMElEMGdiM1YwY0hWMExuUnZVM1J5YVc1blYybDBhRk52ZFhKalpVMWhjQ2dwTzF4
dUlDQnZkWFJ3ZFhRdWJXRndJRDBnYjNWMGNIVjBMbTFoY0NBcklDY25PMXh1WEc0Z0lHbG1JQ2h2
Y0hSekxtMXBiaWtnZTF4dUlDQWdJRzkxZEhCMWRDQTlJSFZuYkdsbWVTNXRhVzVwWm5rb2IzVjBj
SFYwTG1OdlpHVXNJSHRjYmlBZ0lDQWdJR1p5YjIxVGRISnBibWM2SUhSeWRXVXNYRzVjYmlBZ0lD
QWdJRzkxZEZOdmRYSmpaVTFoY0RvZ2IzQjBjeTV0WVhBc1hHNGdJQ0FnSUNCcGJsTnZkWEpqWlUx
aGNEb2dTbE5QVGk1d1lYSnpaU2h2ZFhSd2RYUXViV0Z3S1Z4dUlDQWdJSDBwTzF4dUlDQWdJR2xt
SUNodmNIUnpMbTFoY0NrZ2UxeHVJQ0FnSUNBZ2IzVjBjSFYwTG1OdlpHVWdLejBnSjF4Y2JpOHZJ
eUJ6YjNWeVkyVk5ZWEJ3YVc1blZWSk1QU2NnS3lCdmNIUnpMbTFoY0NBcklDZGNYRzRuTzF4dUlD
QWdJSDFjYmlBZ2ZWeHVYRzRnSUdsbUlDaHZjSFJ6TG0xaGNDa2dlMXh1SUNBZ0lHWnpMbmR5YVhS
bFJtbHNaVk41Ym1Nb2IzQjBjeTV0WVhBc0lHOTFkSEIxZEM1dFlYQXNJQ2QxZEdZNEp5azdYRzRn
SUgxY2JpQWdiM1YwY0hWMElEMGdiM1YwY0hWMExtTnZaR1U3WEc1Y2JpQWdhV1lnS0c5d2RITXVi
M1YwY0hWMEtTQjdYRzRnSUNBZ1puTXVkM0pwZEdWR2FXeGxVM2x1WXlodmNIUnpMbTkxZEhCMWRD
d2diM1YwY0hWMExDQW5kWFJtT0NjcE8xeHVJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lHTnZibk52YkdV
dWJHOW5LRzkxZEhCMWRDazdYRzRnSUgxY2JuMDdYRzVjYm1aMWJtTjBhVzl1SUdGeWNtRjVRMkZ6
ZENoMllXeDFaU2tnZTF4dUlDQjJZV3gxWlNBOUlIWmhiSFZsSUNFOUlHNTFiR3dnUHlCMllXeDFa
U0E2SUZ0ZE8xeHVJQ0JwWmlBb0lVRnljbUY1TG1selFYSnlZWGtvZG1Gc2RXVXBLU0I3WEc0Z0lD
QWdkbUZzZFdVZ1BTQmJkbUZzZFdWZE8xeHVJQ0I5WEc0Z0lISmxkSFZ5YmlCMllXeDFaVHRjYm4x
Y2JpSmRmUT09CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hh
bmRsZWJhcnMvZGlzdC9janMvaGFuZGxlYmFycy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2Rl
X21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2Nqcy9oYW5kbGViYXJzLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZi
YjU0MTU3NjBkYzczNmFhZmFjYTVhNjliNmE0MGZiZjNlMzdlMTcKLS0tIC9kZXYvbnVsbAorKysg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9janMvaGFu
ZGxlYmFycy5qcwpAQCAtMCwwICsxLDY1IEBACisndXNlIHN0cmljdCc7CisKK2V4cG9ydHMuX19l
c01vZHVsZSA9IHRydWU7CisvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dAorCitmdW5jdGlvbiBfaW50
ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8g
b2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9CisKK3ZhciBfaGFuZGxlYmFyc1J1bnRpbWUgPSBy
ZXF1aXJlKCcuL2hhbmRsZWJhcnMucnVudGltZScpOworCit2YXIgX2hhbmRsZWJhcnNSdW50aW1l
MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2hhbmRsZWJhcnNSdW50aW1lKTsKKworLy8gQ29t
cGlsZXIgaW1wb3J0cworCit2YXIgX2hhbmRsZWJhcnNDb21waWxlckFzdCA9IHJlcXVpcmUoJy4v
aGFuZGxlYmFycy9jb21waWxlci9hc3QnKTsKKwordmFyIF9oYW5kbGViYXJzQ29tcGlsZXJBc3Qy
ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaGFuZGxlYmFyc0NvbXBpbGVyQXN0KTsKKwordmFy
IF9oYW5kbGViYXJzQ29tcGlsZXJCYXNlID0gcmVxdWlyZSgnLi9oYW5kbGViYXJzL2NvbXBpbGVy
L2Jhc2UnKTsKKwordmFyIF9oYW5kbGViYXJzQ29tcGlsZXJDb21waWxlciA9IHJlcXVpcmUoJy4v
aGFuZGxlYmFycy9jb21waWxlci9jb21waWxlcicpOworCit2YXIgX2hhbmRsZWJhcnNDb21waWxl
ckphdmFzY3JpcHRDb21waWxlciA9IHJlcXVpcmUoJy4vaGFuZGxlYmFycy9jb21waWxlci9qYXZh
c2NyaXB0LWNvbXBpbGVyJyk7CisKK3ZhciBfaGFuZGxlYmFyc0NvbXBpbGVySmF2YXNjcmlwdENv
bXBpbGVyMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2hhbmRsZWJhcnNDb21waWxlckphdmFz
Y3JpcHRDb21waWxlcik7CisKK3ZhciBfaGFuZGxlYmFyc0NvbXBpbGVyVmlzaXRvciA9IHJlcXVp
cmUoJy4vaGFuZGxlYmFycy9jb21waWxlci92aXNpdG9yJyk7CisKK3ZhciBfaGFuZGxlYmFyc0Nv
bXBpbGVyVmlzaXRvcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9oYW5kbGViYXJzQ29tcGls
ZXJWaXNpdG9yKTsKKwordmFyIF9oYW5kbGViYXJzTm9Db25mbGljdCA9IHJlcXVpcmUoJy4vaGFu
ZGxlYmFycy9uby1jb25mbGljdCcpOworCit2YXIgX2hhbmRsZWJhcnNOb0NvbmZsaWN0MiA9IF9p
bnRlcm9wUmVxdWlyZURlZmF1bHQoX2hhbmRsZWJhcnNOb0NvbmZsaWN0KTsKKwordmFyIF9jcmVh
dGUgPSBfaGFuZGxlYmFyc1J1bnRpbWUyWydkZWZhdWx0J10uY3JlYXRlOworZnVuY3Rpb24gY3Jl
YXRlKCkgeworICB2YXIgaGIgPSBfY3JlYXRlKCk7CisKKyAgaGIuY29tcGlsZSA9IGZ1bmN0aW9u
IChpbnB1dCwgb3B0aW9ucykgeworICAgIHJldHVybiBfaGFuZGxlYmFyc0NvbXBpbGVyQ29tcGls
ZXIuY29tcGlsZShpbnB1dCwgb3B0aW9ucywgaGIpOworICB9OworICBoYi5wcmVjb21waWxlID0g
ZnVuY3Rpb24gKGlucHV0LCBvcHRpb25zKSB7CisgICAgcmV0dXJuIF9oYW5kbGViYXJzQ29tcGls
ZXJDb21waWxlci5wcmVjb21waWxlKGlucHV0LCBvcHRpb25zLCBoYik7CisgIH07CisKKyAgaGIu
QVNUID0gX2hhbmRsZWJhcnNDb21waWxlckFzdDJbJ2RlZmF1bHQnXTsKKyAgaGIuQ29tcGlsZXIg
PSBfaGFuZGxlYmFyc0NvbXBpbGVyQ29tcGlsZXIuQ29tcGlsZXI7CisgIGhiLkphdmFTY3JpcHRD
b21waWxlciA9IF9oYW5kbGViYXJzQ29tcGlsZXJKYXZhc2NyaXB0Q29tcGlsZXIyWydkZWZhdWx0
J107CisgIGhiLlBhcnNlciA9IF9oYW5kbGViYXJzQ29tcGlsZXJCYXNlLnBhcnNlcjsKKyAgaGIu
cGFyc2UgPSBfaGFuZGxlYmFyc0NvbXBpbGVyQmFzZS5wYXJzZTsKKworICByZXR1cm4gaGI7Cit9
CisKK3ZhciBpbnN0ID0gY3JlYXRlKCk7CitpbnN0LmNyZWF0ZSA9IGNyZWF0ZTsKKworX2hhbmRs
ZWJhcnNOb0NvbmZsaWN0MlsnZGVmYXVsdCddKGluc3QpOworCitpbnN0LlZpc2l0b3IgPSBfaGFu
ZGxlYmFyc0NvbXBpbGVyVmlzaXRvcjJbJ2RlZmF1bHQnXTsKKworaW5zdFsnZGVmYXVsdCddID0g
aW5zdDsKKworZXhwb3J0c1snZGVmYXVsdCddID0gaW5zdDsKK21vZHVsZS5leHBvcnRzID0gZXhw
b3J0c1snZGVmYXVsdCddOworLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9q
c29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYklpNHVMeTR1TDJ4cFlp
OW9ZVzVrYkdWaVlYSnpMbXB6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3T3pz
N096czdhVU5CUVc5Q0xITkNRVUZ6UWpzN096czdPM0ZEUVVjeFFpd3lRa0ZCTWtJN096czdjME5C
UTBnc05FSkJRVFJDT3pzd1EwRkRkRUlzWjBOQlFXZERPenR2UkVGREwwTXNNa05CUVRKRE96czdP
M2xEUVVOMFJDd3JRa0ZCSzBJN096czdiME5CUlRWQ0xEQkNRVUV3UWpzN096dEJRVVZxUkN4SlFV
RkpMRTlCUVU4c1IwRkJSeXdyUWtGQlVTeE5RVUZOTEVOQlFVTTdRVUZETjBJc1UwRkJVeXhOUVVG
TkxFZEJRVWM3UVVGRGFFSXNUVUZCU1N4RlFVRkZMRWRCUVVjc1QwRkJUeXhGUVVGRkxFTkJRVU03
TzBGQlJXNUNMRWxCUVVVc1EwRkJReXhQUVVGUExFZEJRVWNzVlVGQlV5eExRVUZMTEVWQlFVVXNU
MEZCVHl4RlFVRkZPMEZCUTNCRExGZEJRVThzYjBOQlFWRXNTMEZCU3l4RlFVRkZMRTlCUVU4c1JV
RkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF6dEhRVU53UXl4RFFVRkRPMEZCUTBZc1NVRkJSU3hEUVVG
RExGVkJRVlVzUjBGQlJ5eFZRVUZUTEV0QlFVc3NSVUZCUlN4UFFVRlBMRVZCUVVVN1FVRkRka01z
VjBGQlR5eDFRMEZCVnl4TFFVRkxMRVZCUVVVc1QwRkJUeXhGUVVGRkxFVkJRVVVzUTBGQlF5eERR
VUZETzBkQlEzWkRMRU5CUVVNN08wRkJSVVlzU1VGQlJTeERRVUZETEVkQlFVY3NjVU5CUVUwc1Ew
RkJRenRCUVVOaUxFbEJRVVVzUTBGQlF5eFJRVUZSTEhWRFFVRlhMRU5CUVVNN1FVRkRka0lzU1VG
QlJTeERRVUZETEd0Q1FVRnJRaXh2UkVGQmNVSXNRMEZCUXp0QlFVTXpReXhKUVVGRkxFTkJRVU1z
VFVGQlRTeHBRMEZCVXl4RFFVRkRPMEZCUTI1Q0xFbEJRVVVzUTBGQlF5eExRVUZMTEdkRFFVRlJM
RU5CUVVNN08wRkJSV3BDTEZOQlFVOHNSVUZCUlN4RFFVRkRPME5CUTFnN08wRkJSVVFzU1VGQlNT
eEpRVUZKTEVkQlFVY3NUVUZCVFN4RlFVRkZMRU5CUVVNN1FVRkRjRUlzU1VGQlNTeERRVUZETEUx
QlFVMHNSMEZCUnl4TlFVRk5MRU5CUVVNN08wRkJSWEpDTEd0RFFVRlhMRWxCUVVrc1EwRkJReXhE
UVVGRE96dEJRVVZxUWl4SlFVRkpMRU5CUVVNc1QwRkJUeXg1UTBGQlZTeERRVUZET3p0QlFVVjJR
aXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRPenR4UWtGRlVp
eEpRVUZKSWl3aVptbHNaU0k2SW1oaGJtUnNaV0poY25NdWFuTWlMQ0p6YjNWeVkyVnpRMjl1ZEdW
dWRDSTZXeUpwYlhCdmNuUWdjblZ1ZEdsdFpTQm1jbTl0SUNjdUwyaGhibVJzWldKaGNuTXVjblZ1
ZEdsdFpTYzdYRzVjYmk4dklFTnZiWEJwYkdWeUlHbHRjRzl5ZEhOY2JtbHRjRzl5ZENCQlUxUWda
bkp2YlNBbkxpOW9ZVzVrYkdWaVlYSnpMMk52YlhCcGJHVnlMMkZ6ZENjN1hHNXBiWEJ2Y25RZ2V5
QndZWEp6WlhJZ1lYTWdVR0Z5YzJWeUxDQndZWEp6WlNCOUlHWnliMjBnSnk0dmFHRnVaR3hsWW1G
eWN5OWpiMjF3YVd4bGNpOWlZWE5sSnp0Y2JtbHRjRzl5ZENCN0lFTnZiWEJwYkdWeUxDQmpiMjF3
YVd4bExDQndjbVZqYjIxd2FXeGxJSDBnWm5KdmJTQW5MaTlvWVc1a2JHVmlZWEp6TDJOdmJYQnBi
R1Z5TDJOdmJYQnBiR1Z5Snp0Y2JtbHRjRzl5ZENCS1lYWmhVMk55YVhCMFEyOXRjR2xzWlhJZ1pu
SnZiU0FuTGk5b1lXNWtiR1ZpWVhKekwyTnZiWEJwYkdWeUwycGhkbUZ6WTNKcGNIUXRZMjl0Y0ds
c1pYSW5PMXh1YVcxd2IzSjBJRlpwYzJsMGIzSWdabkp2YlNBbkxpOW9ZVzVrYkdWaVlYSnpMMk52
YlhCcGJHVnlMM1pwYzJsMGIzSW5PMXh1WEc1cGJYQnZjblFnYm05RGIyNW1iR2xqZENCbWNtOXRJ
Q2N1TDJoaGJtUnNaV0poY25NdmJtOHRZMjl1Wm14cFkzUW5PMXh1WEc1c1pYUWdYMk55WldGMFpT
QTlJSEoxYm5ScGJXVXVZM0psWVhSbE8xeHVablZ1WTNScGIyNGdZM0psWVhSbEtDa2dlMXh1SUNC
c1pYUWdhR0lnUFNCZlkzSmxZWFJsS0NrN1hHNWNiaUFnYUdJdVkyOXRjR2xzWlNBOUlHWjFibU4w
YVc5dUtHbHVjSFYwTENCdmNIUnBiMjV6S1NCN1hHNGdJQ0FnY21WMGRYSnVJR052YlhCcGJHVW9h
VzV3ZFhRc0lHOXdkR2x2Ym5Nc0lHaGlLVHRjYmlBZ2ZUdGNiaUFnYUdJdWNISmxZMjl0Y0dsc1pT
QTlJR1oxYm1OMGFXOXVLR2x1Y0hWMExDQnZjSFJwYjI1ektTQjdYRzRnSUNBZ2NtVjBkWEp1SUhC
eVpXTnZiWEJwYkdVb2FXNXdkWFFzSUc5d2RHbHZibk1zSUdoaUtUdGNiaUFnZlR0Y2JseHVJQ0Jv
WWk1QlUxUWdQU0JCVTFRN1hHNGdJR2hpTGtOdmJYQnBiR1Z5SUQwZ1EyOXRjR2xzWlhJN1hHNGdJ
R2hpTGtwaGRtRlRZM0pwY0hSRGIyMXdhV3hsY2lBOUlFcGhkbUZUWTNKcGNIUkRiMjF3YVd4bGNq
dGNiaUFnYUdJdVVHRnljMlZ5SUQwZ1VHRnljMlZ5TzF4dUlDQm9ZaTV3WVhKelpTQTlJSEJoY25O
bE8xeHVYRzRnSUhKbGRIVnliaUJvWWp0Y2JuMWNibHh1YkdWMElHbHVjM1FnUFNCamNtVmhkR1Vv
S1R0Y2JtbHVjM1F1WTNKbFlYUmxJRDBnWTNKbFlYUmxPMXh1WEc1dWIwTnZibVpzYVdOMEtHbHVj
M1FwTzF4dVhHNXBibk4wTGxacGMybDBiM0lnUFNCV2FYTnBkRzl5TzF4dVhHNXBibk4wV3lka1pX
WmhkV3gwSjEwZ1BTQnBibk4wTzF4dVhHNWxlSEJ2Y25RZ1pHVm1ZWFZzZENCcGJuTjBPMXh1SWwx
OQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJz
L2Rpc3QvY2pzL2hhbmRsZWJhcnMucnVudGltZS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2Rl
X21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2Nqcy9oYW5kbGViYXJzLnJ1bnRpbWUuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMzc1NTBiY2JmODkwOTRhYzNhMTJjMjA4NmRmMjhhOGVlNzEyYmY2ZQotLS0gL2Rldi9u
dWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0
L2Nqcy9oYW5kbGViYXJzLnJ1bnRpbWUuanMKQEAgLTAsMCArMSw2NiBAQAorJ3VzZSBzdHJpY3Qn
OworCitleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOworLy8gaXN0YW5idWwgaWdub3JlIG5leHQK
KworZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBv
YmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfQorCisvLyBpc3RhbmJ1
bCBpZ25vcmUgbmV4dAorCitmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmopIHsg
aWYgKG9iaiAmJiBvYmouX19lc01vZHVsZSkgeyByZXR1cm4gb2JqOyB9IGVsc2UgeyB2YXIgbmV3
T2JqID0ge307IGlmIChvYmogIT0gbnVsbCkgeyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChP
YmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSBuZXdPYmpba2V5
XSA9IG9ialtrZXldOyB9IH0gbmV3T2JqWydkZWZhdWx0J10gPSBvYmo7IHJldHVybiBuZXdPYmo7
IH0gfQorCit2YXIgX2hhbmRsZWJhcnNCYXNlID0gcmVxdWlyZSgnLi9oYW5kbGViYXJzL2Jhc2Un
KTsKKwordmFyIGJhc2UgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChfaGFuZGxlYmFyc0Jhc2Up
OworCisvLyBFYWNoIG9mIHRoZXNlIGF1Z21lbnQgdGhlIEhhbmRsZWJhcnMgb2JqZWN0LiBObyBu
ZWVkIHRvIHNldHVwIGhlcmUuCisvLyAoVGhpcyBpcyBkb25lIHRvIGVhc2lseSBzaGFyZSBjb2Rl
IGJldHdlZW4gY29tbW9uanMgYW5kIGJyb3dzZSBlbnZzKQorCit2YXIgX2hhbmRsZWJhcnNTYWZl
U3RyaW5nID0gcmVxdWlyZSgnLi9oYW5kbGViYXJzL3NhZmUtc3RyaW5nJyk7CisKK3ZhciBfaGFu
ZGxlYmFyc1NhZmVTdHJpbmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaGFuZGxlYmFyc1Nh
ZmVTdHJpbmcpOworCit2YXIgX2hhbmRsZWJhcnNFeGNlcHRpb24gPSByZXF1aXJlKCcuL2hhbmRs
ZWJhcnMvZXhjZXB0aW9uJyk7CisKK3ZhciBfaGFuZGxlYmFyc0V4Y2VwdGlvbjIgPSBfaW50ZXJv
cFJlcXVpcmVEZWZhdWx0KF9oYW5kbGViYXJzRXhjZXB0aW9uKTsKKwordmFyIF9oYW5kbGViYXJz
VXRpbHMgPSByZXF1aXJlKCcuL2hhbmRsZWJhcnMvdXRpbHMnKTsKKwordmFyIFV0aWxzID0gX2lu
dGVyb3BSZXF1aXJlV2lsZGNhcmQoX2hhbmRsZWJhcnNVdGlscyk7CisKK3ZhciBfaGFuZGxlYmFy
c1J1bnRpbWUgPSByZXF1aXJlKCcuL2hhbmRsZWJhcnMvcnVudGltZScpOworCit2YXIgcnVudGlt
ZSA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKF9oYW5kbGViYXJzUnVudGltZSk7CisKK3ZhciBf
aGFuZGxlYmFyc05vQ29uZmxpY3QgPSByZXF1aXJlKCcuL2hhbmRsZWJhcnMvbm8tY29uZmxpY3Qn
KTsKKwordmFyIF9oYW5kbGViYXJzTm9Db25mbGljdDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0
KF9oYW5kbGViYXJzTm9Db25mbGljdCk7CisKKy8vIEZvciBjb21wYXRpYmlsaXR5IGFuZCB1c2Fn
ZSBvdXRzaWRlIG9mIG1vZHVsZSBzeXN0ZW1zLCBtYWtlIHRoZSBIYW5kbGViYXJzIG9iamVjdCBh
IG5hbWVzcGFjZQorZnVuY3Rpb24gY3JlYXRlKCkgeworICB2YXIgaGIgPSBuZXcgYmFzZS5IYW5k
bGViYXJzRW52aXJvbm1lbnQoKTsKKworICBVdGlscy5leHRlbmQoaGIsIGJhc2UpOworICBoYi5T
YWZlU3RyaW5nID0gX2hhbmRsZWJhcnNTYWZlU3RyaW5nMlsnZGVmYXVsdCddOworICBoYi5FeGNl
cHRpb24gPSBfaGFuZGxlYmFyc0V4Y2VwdGlvbjJbJ2RlZmF1bHQnXTsKKyAgaGIuVXRpbHMgPSBV
dGlsczsKKyAgaGIuZXNjYXBlRXhwcmVzc2lvbiA9IFV0aWxzLmVzY2FwZUV4cHJlc3Npb247CisK
KyAgaGIuVk0gPSBydW50aW1lOworICBoYi50ZW1wbGF0ZSA9IGZ1bmN0aW9uIChzcGVjKSB7Cisg
ICAgcmV0dXJuIHJ1bnRpbWUudGVtcGxhdGUoc3BlYywgaGIpOworICB9OworCisgIHJldHVybiBo
YjsKK30KKwordmFyIGluc3QgPSBjcmVhdGUoKTsKK2luc3QuY3JlYXRlID0gY3JlYXRlOworCitf
aGFuZGxlYmFyc05vQ29uZmxpY3QyWydkZWZhdWx0J10oaW5zdCk7CisKK2luc3RbJ2RlZmF1bHQn
XSA9IGluc3Q7CisKK2V4cG9ydHNbJ2RlZmF1bHQnXSA9IGluc3Q7Cittb2R1bGUuZXhwb3J0cyA9
IGV4cG9ydHNbJ2RlZmF1bHQnXTsKKy8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRp
b24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUwy
eHBZaTlvWVc1a2JHVmlZWEp6TG5KMWJuUnBiV1V1YW5NaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhC
d2FXNW5jeUk2SWpzN096czdPenM3T3pzN09FSkJRWE5DTEcxQ1FVRnRRanM3U1VGQk4wSXNTVUZC
U1RzN096czdiME5CU1U4c01FSkJRVEJDT3pzN08yMURRVU16UWl4M1FrRkJkMEk3T3pzN0swSkJR
M1pDTEc5Q1FVRnZRanM3U1VGQkwwSXNTMEZCU3pzN2FVTkJRMUVzYzBKQlFYTkNPenRKUVVGdVF5
eFBRVUZQT3p0dlEwRkZTU3d3UWtGQk1FSTdPenM3TzBGQlIycEVMRk5CUVZNc1RVRkJUU3hIUVVG
SE8wRkJRMmhDTEUxQlFVa3NSVUZCUlN4SFFVRkhMRWxCUVVrc1NVRkJTU3hEUVVGRExIRkNRVUZ4
UWl4RlFVRkZMRU5CUVVNN08wRkJSVEZETEU5QlFVc3NRMEZCUXl4TlFVRk5MRU5CUVVNc1JVRkJS
U3hGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETzBGQlEzWkNMRWxCUVVVc1EwRkJReXhWUVVGVkxH
OURRVUZoTEVOQlFVTTdRVUZETTBJc1NVRkJSU3hEUVVGRExGTkJRVk1zYlVOQlFWa3NRMEZCUXp0
QlFVTjZRaXhKUVVGRkxFTkJRVU1zUzBGQlN5eEhRVUZITEV0QlFVc3NRMEZCUXp0QlFVTnFRaXhK
UVVGRkxFTkJRVU1zWjBKQlFXZENMRWRCUVVjc1MwRkJTeXhEUVVGRExHZENRVUZuUWl4RFFVRkRP
enRCUVVVM1F5eEpRVUZGTEVOQlFVTXNSVUZCUlN4SFFVRkhMRTlCUVU4c1EwRkJRenRCUVVOb1Fp
eEpRVUZGTEVOQlFVTXNVVUZCVVN4SFFVRkhMRlZCUVZNc1NVRkJTU3hGUVVGRk8wRkJRek5DTEZk
QlFVOHNUMEZCVHl4RFFVRkRMRkZCUVZFc1EwRkJReXhKUVVGSkxFVkJRVVVzUlVGQlJTeERRVUZE
TEVOQlFVTTdSMEZEYmtNc1EwRkJRenM3UVVGRlJpeFRRVUZQTEVWQlFVVXNRMEZCUXp0RFFVTllP
enRCUVVWRUxFbEJRVWtzU1VGQlNTeEhRVUZITEUxQlFVMHNSVUZCUlN4RFFVRkRPMEZCUTNCQ0xF
bEJRVWtzUTBGQlF5eE5RVUZOTEVkQlFVY3NUVUZCVFN4RFFVRkRPenRCUVVWeVFpeHJRMEZCVnl4
SlFVRkpMRU5CUVVNc1EwRkJRenM3UVVGRmFrSXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhI
UVVGSExFbEJRVWtzUTBGQlF6czdjVUpCUlZJc1NVRkJTU0lzSW1acGJHVWlPaUpvWVc1a2JHVmlZ
WEp6TG5KMWJuUnBiV1V1YW5NaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SnBiWEJ2Y25RZ0tp
QmhjeUJpWVhObElHWnliMjBnSnk0dmFHRnVaR3hsWW1GeWN5OWlZWE5sSnp0Y2JseHVMeThnUldG
amFDQnZaaUIwYUdWelpTQmhkV2R0Wlc1MElIUm9aU0JJWVc1a2JHVmlZWEp6SUc5aWFtVmpkQzRn
VG04Z2JtVmxaQ0IwYnlCelpYUjFjQ0JvWlhKbExseHVMeThnS0ZSb2FYTWdhWE1nWkc5dVpTQjBi
eUJsWVhOcGJIa2djMmhoY21VZ1kyOWtaU0JpWlhSM1pXVnVJR052YlcxdmJtcHpJR0Z1WkNCaWNt
OTNjMlVnWlc1MmN5bGNibWx0Y0c5eWRDQlRZV1psVTNSeWFXNW5JR1p5YjIwZ0p5NHZhR0Z1Wkd4
bFltRnljeTl6WVdabExYTjBjbWx1WnljN1hHNXBiWEJ2Y25RZ1JYaGpaWEIwYVc5dUlHWnliMjBn
Snk0dmFHRnVaR3hsWW1GeWN5OWxlR05sY0hScGIyNG5PMXh1YVcxd2IzSjBJQ29nWVhNZ1ZYUnBi
SE1nWm5KdmJTQW5MaTlvWVc1a2JHVmlZWEp6TDNWMGFXeHpKenRjYm1sdGNHOXlkQ0FxSUdGeklI
SjFiblJwYldVZ1puSnZiU0FuTGk5b1lXNWtiR1ZpWVhKekwzSjFiblJwYldVbk8xeHVYRzVwYlhC
dmNuUWdibTlEYjI1bWJHbGpkQ0JtY205dElDY3VMMmhoYm1Sc1pXSmhjbk12Ym04dFkyOXVabXhw
WTNRbk8xeHVYRzR2THlCR2IzSWdZMjl0Y0dGMGFXSnBiR2wwZVNCaGJtUWdkWE5oWjJVZ2IzVjBj
MmxrWlNCdlppQnRiMlIxYkdVZ2MzbHpkR1Z0Y3l3Z2JXRnJaU0IwYUdVZ1NHRnVaR3hsWW1GeWN5
QnZZbXBsWTNRZ1lTQnVZVzFsYzNCaFkyVmNibVoxYm1OMGFXOXVJR055WldGMFpTZ3BJSHRjYmlB
Z2JHVjBJR2hpSUQwZ2JtVjNJR0poYzJVdVNHRnVaR3hsWW1GeWMwVnVkbWx5YjI1dFpXNTBLQ2s3
WEc1Y2JpQWdWWFJwYkhNdVpYaDBaVzVrS0doaUxDQmlZWE5sS1R0Y2JpQWdhR0l1VTJGbVpWTjBj
bWx1WnlBOUlGTmhabVZUZEhKcGJtYzdYRzRnSUdoaUxrVjRZMlZ3ZEdsdmJpQTlJRVY0WTJWd2RH
bHZianRjYmlBZ2FHSXVWWFJwYkhNZ1BTQlZkR2xzY3p0Y2JpQWdhR0l1WlhOallYQmxSWGh3Y21W
emMybHZiaUE5SUZWMGFXeHpMbVZ6WTJGd1pVVjRjSEpsYzNOcGIyNDdYRzVjYmlBZ2FHSXVWazBn
UFNCeWRXNTBhVzFsTzF4dUlDQm9ZaTUwWlcxd2JHRjBaU0E5SUdaMWJtTjBhVzl1S0hOd1pXTXBJ
SHRjYmlBZ0lDQnlaWFIxY200Z2NuVnVkR2x0WlM1MFpXMXdiR0YwWlNoemNHVmpMQ0JvWWlrN1hH
NGdJSDA3WEc1Y2JpQWdjbVYwZFhKdUlHaGlPMXh1ZlZ4dVhHNXNaWFFnYVc1emRDQTlJR055WldG
MFpTZ3BPMXh1YVc1emRDNWpjbVZoZEdVZ1BTQmpjbVZoZEdVN1hHNWNibTV2UTI5dVpteHBZM1Fv
YVc1emRDazdYRzVjYm1sdWMzUmJKMlJsWm1GMWJIUW5YU0E5SUdsdWMzUTdYRzVjYm1WNGNHOXlk
Q0JrWldaaGRXeDBJR2x1YzNRN1hHNGlYWDA9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVl
cnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9janMvaGFuZGxlYmFycy9iYXNlLmpzIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvY2pzL2hhbmRs
ZWJhcnMvYmFzZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMWNmYzU2MWQ5YzQ3YWQzZjU2ZGMxN2VhZDc5YzU2
NTM3MjBjYzIzCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9k
dWxlcy9oYW5kbGViYXJzL2Rpc3QvY2pzL2hhbmRsZWJhcnMvYmFzZS5qcwpAQCAtMCwwICsxLDEw
NCBAQAorJ3VzZSBzdHJpY3QnOworCitleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOworZXhwb3J0
cy5IYW5kbGViYXJzRW52aXJvbm1lbnQgPSBIYW5kbGViYXJzRW52aXJvbm1lbnQ7CisvLyBpc3Rh
bmJ1bCBpZ25vcmUgbmV4dAorCitmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikg
eyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9
OyB9CisKK3ZhciBfdXRpbHMgPSByZXF1aXJlKCcuL3V0aWxzJyk7CisKK3ZhciBfZXhjZXB0aW9u
ID0gcmVxdWlyZSgnLi9leGNlcHRpb24nKTsKKwordmFyIF9leGNlcHRpb24yID0gX2ludGVyb3BS
ZXF1aXJlRGVmYXVsdChfZXhjZXB0aW9uKTsKKwordmFyIF9oZWxwZXJzID0gcmVxdWlyZSgnLi9o
ZWxwZXJzJyk7CisKK3ZhciBfZGVjb3JhdG9ycyA9IHJlcXVpcmUoJy4vZGVjb3JhdG9ycycpOwor
Cit2YXIgX2xvZ2dlciA9IHJlcXVpcmUoJy4vbG9nZ2VyJyk7CisKK3ZhciBfbG9nZ2VyMiA9IF9p
bnRlcm9wUmVxdWlyZURlZmF1bHQoX2xvZ2dlcik7CisKK3ZhciBWRVJTSU9OID0gJzQuMC41JzsK
K2V4cG9ydHMuVkVSU0lPTiA9IFZFUlNJT047Cit2YXIgQ09NUElMRVJfUkVWSVNJT04gPSA3Owor
CitleHBvcnRzLkNPTVBJTEVSX1JFVklTSU9OID0gQ09NUElMRVJfUkVWSVNJT047Cit2YXIgUkVW
SVNJT05fQ0hBTkdFUyA9IHsKKyAgMTogJzw9IDEuMC5yYy4yJywgLy8gMS4wLnJjLjIgaXMgYWN0
dWFsbHkgcmV2MiBidXQgZG9lc24ndCByZXBvcnQgaXQKKyAgMjogJz09IDEuMC4wLXJjLjMnLAor
ICAzOiAnPT0gMS4wLjAtcmMuNCcsCisgIDQ6ICc9PSAxLngueCcsCisgIDU6ICc9PSAyLjAuMC1h
bHBoYS54JywKKyAgNjogJz49IDIuMC4wLWJldGEuMScsCisgIDc6ICc+PSA0LjAuMCcKK307CisK
K2V4cG9ydHMuUkVWSVNJT05fQ0hBTkdFUyA9IFJFVklTSU9OX0NIQU5HRVM7Cit2YXIgb2JqZWN0
VHlwZSA9ICdbb2JqZWN0IE9iamVjdF0nOworCitmdW5jdGlvbiBIYW5kbGViYXJzRW52aXJvbm1l
bnQoaGVscGVycywgcGFydGlhbHMsIGRlY29yYXRvcnMpIHsKKyAgdGhpcy5oZWxwZXJzID0gaGVs
cGVycyB8fCB7fTsKKyAgdGhpcy5wYXJ0aWFscyA9IHBhcnRpYWxzIHx8IHt9OworICB0aGlzLmRl
Y29yYXRvcnMgPSBkZWNvcmF0b3JzIHx8IHt9OworCisgIF9oZWxwZXJzLnJlZ2lzdGVyRGVmYXVs
dEhlbHBlcnModGhpcyk7CisgIF9kZWNvcmF0b3JzLnJlZ2lzdGVyRGVmYXVsdERlY29yYXRvcnMo
dGhpcyk7Cit9CisKK0hhbmRsZWJhcnNFbnZpcm9ubWVudC5wcm90b3R5cGUgPSB7CisgIGNvbnN0
cnVjdG9yOiBIYW5kbGViYXJzRW52aXJvbm1lbnQsCisKKyAgbG9nZ2VyOiBfbG9nZ2VyMlsnZGVm
YXVsdCddLAorICBsb2c6IF9sb2dnZXIyWydkZWZhdWx0J10ubG9nLAorCisgIHJlZ2lzdGVySGVs
cGVyOiBmdW5jdGlvbiByZWdpc3RlckhlbHBlcihuYW1lLCBmbikgeworICAgIGlmIChfdXRpbHMu
dG9TdHJpbmcuY2FsbChuYW1lKSA9PT0gb2JqZWN0VHlwZSkgeworICAgICAgaWYgKGZuKSB7Cisg
ICAgICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCdBcmcgbm90IHN1cHBvcnRl
ZCB3aXRoIG11bHRpcGxlIGhlbHBlcnMnKTsKKyAgICAgIH0KKyAgICAgIF91dGlscy5leHRlbmQo
dGhpcy5oZWxwZXJzLCBuYW1lKTsKKyAgICB9IGVsc2UgeworICAgICAgdGhpcy5oZWxwZXJzW25h
bWVdID0gZm47CisgICAgfQorICB9LAorICB1bnJlZ2lzdGVySGVscGVyOiBmdW5jdGlvbiB1bnJl
Z2lzdGVySGVscGVyKG5hbWUpIHsKKyAgICBkZWxldGUgdGhpcy5oZWxwZXJzW25hbWVdOworICB9
LAorCisgIHJlZ2lzdGVyUGFydGlhbDogZnVuY3Rpb24gcmVnaXN0ZXJQYXJ0aWFsKG5hbWUsIHBh
cnRpYWwpIHsKKyAgICBpZiAoX3V0aWxzLnRvU3RyaW5nLmNhbGwobmFtZSkgPT09IG9iamVjdFR5
cGUpIHsKKyAgICAgIF91dGlscy5leHRlbmQodGhpcy5wYXJ0aWFscywgbmFtZSk7CisgICAgfSBl
bHNlIHsKKyAgICAgIGlmICh0eXBlb2YgcGFydGlhbCA9PT0gJ3VuZGVmaW5lZCcpIHsKKyAgICAg
ICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ0F0dGVtcHRpbmcgdG8gcmVnaXN0
ZXIgYSBwYXJ0aWFsIGNhbGxlZCAiJyArIG5hbWUgKyAnIiBhcyB1bmRlZmluZWQnKTsKKyAgICAg
IH0KKyAgICAgIHRoaXMucGFydGlhbHNbbmFtZV0gPSBwYXJ0aWFsOworICAgIH0KKyAgfSwKKyAg
dW5yZWdpc3RlclBhcnRpYWw6IGZ1bmN0aW9uIHVucmVnaXN0ZXJQYXJ0aWFsKG5hbWUpIHsKKyAg
ICBkZWxldGUgdGhpcy5wYXJ0aWFsc1tuYW1lXTsKKyAgfSwKKworICByZWdpc3RlckRlY29yYXRv
cjogZnVuY3Rpb24gcmVnaXN0ZXJEZWNvcmF0b3IobmFtZSwgZm4pIHsKKyAgICBpZiAoX3V0aWxz
LnRvU3RyaW5nLmNhbGwobmFtZSkgPT09IG9iamVjdFR5cGUpIHsKKyAgICAgIGlmIChmbikgewor
ICAgICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnQXJnIG5vdCBzdXBwb3J0
ZWQgd2l0aCBtdWx0aXBsZSBkZWNvcmF0b3JzJyk7CisgICAgICB9CisgICAgICBfdXRpbHMuZXh0
ZW5kKHRoaXMuZGVjb3JhdG9ycywgbmFtZSk7CisgICAgfSBlbHNlIHsKKyAgICAgIHRoaXMuZGVj
b3JhdG9yc1tuYW1lXSA9IGZuOworICAgIH0KKyAgfSwKKyAgdW5yZWdpc3RlckRlY29yYXRvcjog
ZnVuY3Rpb24gdW5yZWdpc3RlckRlY29yYXRvcihuYW1lKSB7CisgICAgZGVsZXRlIHRoaXMuZGVj
b3JhdG9yc1tuYW1lXTsKKyAgfQorfTsKKwordmFyIGxvZyA9IF9sb2dnZXIyWydkZWZhdWx0J10u
bG9nOworCitleHBvcnRzLmxvZyA9IGxvZzsKK2V4cG9ydHMuY3JlYXRlRnJhbWUgPSBfdXRpbHMu
Y3JlYXRlRnJhbWU7CitleHBvcnRzLmxvZ2dlciA9IF9sb2dnZXIyWydkZWZhdWx0J107CisvLyMg
c291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5
dUlqb3pMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMeTR1TDJ4cFlpOW9ZVzVrYkdWaVlYSnpMMkpo
YzJVdWFuTWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqczdPenM3T3pzN2NVSkJR
VFJETEZOQlFWTTdPM2xDUVVNdlFpeGhRVUZoT3pzN08zVkNRVU5GTEZkQlFWYzdPekJDUVVOU0xH
TkJRV003TzNOQ1FVTnVReXhWUVVGVk96czdPMEZCUlhSQ0xFbEJRVTBzVDBGQlR5eEhRVUZITEU5
QlFVOHNRMEZCUXpzN1FVRkRlRUlzU1VGQlRTeHBRa0ZCYVVJc1IwRkJSeXhEUVVGRExFTkJRVU03
T3p0QlFVVTFRaXhKUVVGTkxHZENRVUZuUWl4SFFVRkhPMEZCUXpsQ0xFZEJRVU1zUlVGQlJTeGhR
VUZoTzBGQlEyaENMRWRCUVVNc1JVRkJSU3hsUVVGbE8wRkJRMnhDTEVkQlFVTXNSVUZCUlN4bFFV
RmxPMEZCUTJ4Q0xFZEJRVU1zUlVGQlJTeFZRVUZWTzBGQlEySXNSMEZCUXl4RlFVRkZMR3RDUVVG
clFqdEJRVU55UWl4SFFVRkRMRVZCUVVVc2FVSkJRV2xDTzBGQlEzQkNMRWRCUVVNc1JVRkJSU3hW
UVVGVk8wTkJRMlFzUTBGQlF6czdPMEZCUlVZc1NVRkJUU3hWUVVGVkxFZEJRVWNzYVVKQlFXbENM
RU5CUVVNN08wRkJSVGxDTEZOQlFWTXNjVUpCUVhGQ0xFTkJRVU1zVDBGQlR5eEZRVUZGTEZGQlFW
RXNSVUZCUlN4VlFVRlZMRVZCUVVVN1FVRkRia1VzVFVGQlNTeERRVUZETEU5QlFVOHNSMEZCUnl4
UFFVRlBMRWxCUVVrc1JVRkJSU3hEUVVGRE8wRkJRemRDTEUxQlFVa3NRMEZCUXl4UlFVRlJMRWRC
UVVjc1VVRkJVU3hKUVVGSkxFVkJRVVVzUTBGQlF6dEJRVU12UWl4TlFVRkpMRU5CUVVNc1ZVRkJW
U3hIUVVGSExGVkJRVlVzU1VGQlNTeEZRVUZGTEVOQlFVTTdPMEZCUlc1RExHdERRVUYxUWl4SlFV
RkpMRU5CUVVNc1EwRkJRenRCUVVNM1FpeDNRMEZCTUVJc1NVRkJTU3hEUVVGRExFTkJRVU03UTBG
RGFrTTdPMEZCUlVRc2NVSkJRWEZDTEVOQlFVTXNVMEZCVXl4SFFVRkhPMEZCUTJoRExHRkJRVmNz
UlVGQlJTeHhRa0ZCY1VJN08wRkJSV3hETEZGQlFVMHNjVUpCUVZFN1FVRkRaQ3hMUVVGSExFVkJR
VVVzYjBKQlFVOHNSMEZCUnpzN1FVRkZaaXhuUWtGQll5eEZRVUZGTEhkQ1FVRlRMRWxCUVVrc1JV
RkJSU3hGUVVGRkxFVkJRVVU3UVVGRGFrTXNVVUZCU1N4blFrRkJVeXhKUVVGSkxFTkJRVU1zU1VG
QlNTeERRVUZETEV0QlFVc3NWVUZCVlN4RlFVRkZPMEZCUTNSRExGVkJRVWtzUlVGQlJTeEZRVUZG
TzBGQlFVVXNZMEZCVFN3eVFrRkJZeXg1UTBGQmVVTXNRMEZCUXl4RFFVRkRPMDlCUVVVN1FVRkRN
MFVzYjBKQlFVOHNTVUZCU1N4RFFVRkRMRTlCUVU4c1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6
dExRVU0xUWl4TlFVRk5PMEZCUTB3c1ZVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eEpRVUZKTEVO
QlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNN1MwRkRla0k3UjBGRFJqdEJRVU5FTEd0Q1FVRm5RaXhG
UVVGRkxEQkNRVUZUTEVsQlFVa3NSVUZCUlR0QlFVTXZRaXhYUVVGUExFbEJRVWtzUTBGQlF5eFBR
VUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1IwRkRNMEk3TzBGQlJVUXNhVUpCUVdVc1JV
RkJSU3g1UWtGQlV5eEpRVUZKTEVWQlFVVXNUMEZCVHl4RlFVRkZPMEZCUTNaRExGRkJRVWtzWjBK
QlFWTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExGVkJRVlVzUlVGQlJUdEJRVU4w
UXl4dlFrRkJUeXhKUVVGSkxFTkJRVU1zVVVGQlVTeEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRP
MHRCUXpkQ0xFMUJRVTA3UVVGRFRDeFZRVUZKTEU5QlFVOHNUMEZCVHl4TFFVRkxMRmRCUVZjc1JV
RkJSVHRCUVVOc1F5eGpRVUZOTEhsRlFVRXdSQ3hKUVVGSkxHOUNRVUZwUWl4RFFVRkRPMDlCUTNa
R08wRkJRMFFzVlVGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhQ
UVVGUExFTkJRVU03UzBGREwwSTdSMEZEUmp0QlFVTkVMRzFDUVVGcFFpeEZRVUZGTERKQ1FVRlRM
RWxCUVVrc1JVRkJSVHRCUVVOb1F5eFhRVUZQTEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1NV
RkJTU3hEUVVGRExFTkJRVU03UjBGRE5VSTdPMEZCUlVRc2JVSkJRV2xDTEVWQlFVVXNNa0pCUVZN
c1NVRkJTU3hGUVVGRkxFVkJRVVVzUlVGQlJUdEJRVU53UXl4UlFVRkpMR2RDUVVGVExFbEJRVWtz
UTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4VlFVRlZMRVZCUVVVN1FVRkRkRU1zVlVGQlNTeEZR
VUZGTEVWQlFVVTdRVUZCUlN4alFVRk5MREpDUVVGakxEUkRRVUUwUXl4RFFVRkRMRU5CUVVNN1Qw
RkJSVHRCUVVNNVJTeHZRa0ZCVHl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hGUVVGRkxFbEJRVWtzUTBG
QlF5eERRVUZETzB0QlF5OUNMRTFCUVUwN1FVRkRUQ3hWUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZE
TEVsQlFVa3NRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJRenRMUVVNMVFqdEhRVU5HTzBGQlEwUXNj
VUpCUVcxQ0xFVkJRVVVzTmtKQlFWTXNTVUZCU1N4RlFVRkZPMEZCUTJ4RExGZEJRVThzU1VGQlNT
eERRVUZETEZWQlFWVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRIUVVNNVFqdERRVU5HTEVO
QlFVTTdPMEZCUlVzc1NVRkJTU3hIUVVGSExFZEJRVWNzYjBKQlFVOHNSMEZCUnl4RFFVRkRPenM3
VVVGRmNFSXNWMEZCVnp0UlFVRkZMRTFCUVUwaUxDSm1hV3hsSWpvaVltRnpaUzVxY3lJc0luTnZk
WEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENCN1kzSmxZWFJsUm5KaGJXVXNJR1Y0ZEdWdVpD
d2dkRzlUZEhKcGJtZDlJR1p5YjIwZ0p5NHZkWFJwYkhNbk8xeHVhVzF3YjNKMElFVjRZMlZ3ZEds
dmJpQm1jbTl0SUNjdUwyVjRZMlZ3ZEdsdmJpYzdYRzVwYlhCdmNuUWdlM0psWjJsemRHVnlSR1Zt
WVhWc2RFaGxiSEJsY25OOUlHWnliMjBnSnk0dmFHVnNjR1Z5Y3ljN1hHNXBiWEJ2Y25RZ2UzSmxa
Mmx6ZEdWeVJHVm1ZWFZzZEVSbFkyOXlZWFJ2Y25OOUlHWnliMjBnSnk0dlpHVmpiM0poZEc5eWN5
YzdYRzVwYlhCdmNuUWdiRzluWjJWeUlHWnliMjBnSnk0dmJHOW5aMlZ5Snp0Y2JseHVaWGh3YjNK
MElHTnZibk4wSUZaRlVsTkpUMDRnUFNBbk5DNHdMalVuTzF4dVpYaHdiM0owSUdOdmJuTjBJRU5Q
VFZCSlRFVlNYMUpGVmtsVFNVOU9JRDBnTnp0Y2JseHVaWGh3YjNKMElHTnZibk4wSUZKRlZrbFRT
VTlPWDBOSVFVNUhSVk1nUFNCN1hHNGdJREU2SUNjOFBTQXhMakF1Y21NdU1pY3NJQzh2SURFdU1D
NXlZeTR5SUdseklHRmpkSFZoYkd4NUlISmxkaklnWW5WMElHUnZaWE51SjNRZ2NtVndiM0owSUds
MFhHNGdJREk2SUNjOVBTQXhMakF1TUMxeVl5NHpKeXhjYmlBZ016b2dKejA5SURFdU1DNHdMWEpq
TGpRbkxGeHVJQ0EwT2lBblBUMGdNUzU0TG5nbkxGeHVJQ0ExT2lBblBUMGdNaTR3TGpBdFlXeHdh
R0V1ZUNjc1hHNGdJRFk2SUNjK1BTQXlMakF1TUMxaVpYUmhMakVuTEZ4dUlDQTNPaUFuUGowZ05D
NHdMakFuWEc1OU8xeHVYRzVqYjI1emRDQnZZbXBsWTNSVWVYQmxJRDBnSjF0dlltcGxZM1FnVDJK
cVpXTjBYU2M3WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCSVlXNWtiR1ZpWVhKelJXNTJhWEp2
Ym0xbGJuUW9hR1ZzY0dWeWN5d2djR0Z5ZEdsaGJITXNJR1JsWTI5eVlYUnZjbk1wSUh0Y2JpQWdk
R2hwY3k1b1pXeHdaWEp6SUQwZ2FHVnNjR1Z5Y3lCOGZDQjdmVHRjYmlBZ2RHaHBjeTV3WVhKMGFX
RnNjeUE5SUhCaGNuUnBZV3h6SUh4OElIdDlPMXh1SUNCMGFHbHpMbVJsWTI5eVlYUnZjbk1nUFNC
a1pXTnZjbUYwYjNKeklIeDhJSHQ5TzF4dVhHNGdJSEpsWjJsemRHVnlSR1ZtWVhWc2RFaGxiSEJs
Y25Nb2RHaHBjeWs3WEc0Z0lISmxaMmx6ZEdWeVJHVm1ZWFZzZEVSbFkyOXlZWFJ2Y25Nb2RHaHBj
eWs3WEc1OVhHNWNia2hoYm1Sc1pXSmhjbk5GYm5acGNtOXViV1Z1ZEM1d2NtOTBiM1I1Y0dVZ1BT
QjdYRzRnSUdOdmJuTjBjblZqZEc5eU9pQklZVzVrYkdWaVlYSnpSVzUyYVhKdmJtMWxiblFzWEc1
Y2JpQWdiRzluWjJWeU9pQnNiMmRuWlhJc1hHNGdJR3h2WnpvZ2JHOW5aMlZ5TG14dlp5eGNibHh1
SUNCeVpXZHBjM1JsY2tobGJIQmxjam9nWm5WdVkzUnBiMjRvYm1GdFpTd2dabTRwSUh0Y2JpQWdJ
Q0JwWmlBb2RHOVRkSEpwYm1jdVkyRnNiQ2h1WVcxbEtTQTlQVDBnYjJKcVpXTjBWSGx3WlNrZ2Ux
eHVJQ0FnSUNBZ2FXWWdLR1p1S1NCN0lIUm9jbTkzSUc1bGR5QkZlR05sY0hScGIyNG9KMEZ5WnlC
dWIzUWdjM1Z3Y0c5eWRHVmtJSGRwZEdnZ2JYVnNkR2x3YkdVZ2FHVnNjR1Z5Y3ljcE95QjlYRzRn
SUNBZ0lDQmxlSFJsYm1Rb2RHaHBjeTVvWld4d1pYSnpMQ0J1WVcxbEtUdGNiaUFnSUNCOUlHVnNj
MlVnZTF4dUlDQWdJQ0FnZEdocGN5NW9aV3h3WlhKelcyNWhiV1ZkSUQwZ1ptNDdYRzRnSUNBZ2ZW
eHVJQ0I5TEZ4dUlDQjFibkpsWjJsemRHVnlTR1ZzY0dWeU9pQm1kVzVqZEdsdmJpaHVZVzFsS1NC
N1hHNGdJQ0FnWkdWc1pYUmxJSFJvYVhNdWFHVnNjR1Z5YzF0dVlXMWxYVHRjYmlBZ2ZTeGNibHh1
SUNCeVpXZHBjM1JsY2xCaGNuUnBZV3c2SUdaMWJtTjBhVzl1S0c1aGJXVXNJSEJoY25ScFlXd3BJ
SHRjYmlBZ0lDQnBaaUFvZEc5VGRISnBibWN1WTJGc2JDaHVZVzFsS1NBOVBUMGdiMkpxWldOMFZI
bHdaU2tnZTF4dUlDQWdJQ0FnWlhoMFpXNWtLSFJvYVhNdWNHRnlkR2xoYkhNc0lHNWhiV1VwTzF4
dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQnBaaUFvZEhsd1pXOW1JSEJoY25ScFlXd2dQVDA5
SUNkMWJtUmxabWx1WldRbktTQjdYRzRnSUNBZ0lDQWdJSFJvY205M0lHNWxkeUJGZUdObGNIUnBi
MjRvWUVGMGRHVnRjSFJwYm1jZ2RHOGdjbVZuYVhOMFpYSWdZU0J3WVhKMGFXRnNJR05oYkd4bFpD
QmNJaVI3Ym1GdFpYMWNJaUJoY3lCMWJtUmxabWx1WldSZ0tUdGNiaUFnSUNBZ0lIMWNiaUFnSUNB
Z0lIUm9hWE11Y0dGeWRHbGhiSE5iYm1GdFpWMGdQU0J3WVhKMGFXRnNPMXh1SUNBZ0lIMWNiaUFn
ZlN4Y2JpQWdkVzV5WldkcGMzUmxjbEJoY25ScFlXdzZJR1oxYm1OMGFXOXVLRzVoYldVcElIdGNi
aUFnSUNCa1pXeGxkR1VnZEdocGN5NXdZWEowYVdGc2MxdHVZVzFsWFR0Y2JpQWdmU3hjYmx4dUlD
QnlaV2RwYzNSbGNrUmxZMjl5WVhSdmNqb2dablZ1WTNScGIyNG9ibUZ0WlN3Z1ptNHBJSHRjYmlB
Z0lDQnBaaUFvZEc5VGRISnBibWN1WTJGc2JDaHVZVzFsS1NBOVBUMGdiMkpxWldOMFZIbHdaU2tn
ZTF4dUlDQWdJQ0FnYVdZZ0tHWnVLU0I3SUhSb2NtOTNJRzVsZHlCRmVHTmxjSFJwYjI0b0owRnla
eUJ1YjNRZ2MzVndjRzl5ZEdWa0lIZHBkR2dnYlhWc2RHbHdiR1VnWkdWamIzSmhkRzl5Y3ljcE95
QjlYRzRnSUNBZ0lDQmxlSFJsYm1Rb2RHaHBjeTVrWldOdmNtRjBiM0p6TENCdVlXMWxLVHRjYmlB
Z0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2RHaHBjeTVrWldOdmNtRjBiM0p6VzI1aGJXVmRJRDBn
Wm00N1hHNGdJQ0FnZlZ4dUlDQjlMRnh1SUNCMWJuSmxaMmx6ZEdWeVJHVmpiM0poZEc5eU9pQm1k
VzVqZEdsdmJpaHVZVzFsS1NCN1hHNGdJQ0FnWkdWc1pYUmxJSFJvYVhNdVpHVmpiM0poZEc5eWMx
dHVZVzFsWFR0Y2JpQWdmVnh1ZlR0Y2JseHVaWGh3YjNKMElHeGxkQ0JzYjJjZ1BTQnNiMmRuWlhJ
dWJHOW5PMXh1WEc1bGVIQnZjblFnZTJOeVpXRjBaVVp5WVcxbExDQnNiMmRuWlhKOU8xeHVJbDE5
CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMv
ZGlzdC9janMvaGFuZGxlYmFycy9jb21waWxlci9hc3QuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkv
bm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9janMvaGFuZGxlYmFycy9jb21waWxlci9hc3Qu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMzNjNjVmZThkOWYwMTYyYTQ0ZmE1ODE5OGFhNTA5OTE3MjgyNjFjMgot
LS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxl
YmFycy9kaXN0L2Nqcy9oYW5kbGViYXJzL2NvbXBpbGVyL2FzdC5qcwpAQCAtMCwwICsxLDMxIEBA
CisndXNlIHN0cmljdCc7CisKK2V4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7Cit2YXIgQVNUID0g
eworICAvLyBQdWJsaWMgQVBJIHVzZWQgdG8gZXZhbHVhdGUgZGVyaXZlZCBhdHRyaWJ1dGVzIHJl
Z2FyZGluZyBBU1Qgbm9kZXMKKyAgaGVscGVyczogeworICAgIC8vIGEgbXVzdGFjaGUgaXMgZGVm
aW5pdGVseSBhIGhlbHBlciBpZjoKKyAgICAvLyAqIGl0IGlzIGFuIGVsaWdpYmxlIGhlbHBlciwg
YW5kCisgICAgLy8gKiBpdCBoYXMgYXQgbGVhc3Qgb25lIHBhcmFtZXRlciBvciBoYXNoIHNlZ21l
bnQKKyAgICBoZWxwZXJFeHByZXNzaW9uOiBmdW5jdGlvbiBoZWxwZXJFeHByZXNzaW9uKG5vZGUp
IHsKKyAgICAgIHJldHVybiBub2RlLnR5cGUgPT09ICdTdWJFeHByZXNzaW9uJyB8fCAobm9kZS50
eXBlID09PSAnTXVzdGFjaGVTdGF0ZW1lbnQnIHx8IG5vZGUudHlwZSA9PT0gJ0Jsb2NrU3RhdGVt
ZW50JykgJiYgISEobm9kZS5wYXJhbXMgJiYgbm9kZS5wYXJhbXMubGVuZ3RoIHx8IG5vZGUuaGFz
aCk7CisgICAgfSwKKworICAgIHNjb3BlZElkOiBmdW5jdGlvbiBzY29wZWRJZChwYXRoKSB7Cisg
ICAgICByZXR1cm4gKC9eXC58dGhpc1xiLy50ZXN0KHBhdGgub3JpZ2luYWwpCisgICAgICApOwor
ICAgIH0sCisKKyAgICAvLyBhbiBJRCBpcyBzaW1wbGUgaWYgaXQgb25seSBoYXMgb25lIHBhcnQs
IGFuZCB0aGF0IHBhcnQgaXMgbm90CisgICAgLy8gYC4uYCBvciBgdGhpc2AuCisgICAgc2ltcGxl
SWQ6IGZ1bmN0aW9uIHNpbXBsZUlkKHBhdGgpIHsKKyAgICAgIHJldHVybiBwYXRoLnBhcnRzLmxl
bmd0aCA9PT0gMSAmJiAhQVNULmhlbHBlcnMuc2NvcGVkSWQocGF0aCkgJiYgIXBhdGguZGVwdGg7
CisgICAgfQorICB9Cit9OworCisvLyBNdXN0IGJlIGV4cG9ydGVkIGFzIGFuIG9iamVjdCByYXRo
ZXIgdGhhbiB0aGUgcm9vdCBvZiB0aGUgbW9kdWxlIGFzIHRoZSBqaXNvbiBsZXhlcgorLy8gbXVz
dCBtb2RpZnkgdGhlIG9iamVjdCB0byBvcGVyYXRlIHByb3Blcmx5LgorZXhwb3J0c1snZGVmYXVs
dCddID0gQVNUOworbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107CisvLyMgc291
cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlq
b3pMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMeTR1THk0dUwyeHBZaTlvWVc1a2JHVmlZWEp6TDJO
dmJYQnBiR1Z5TDJGemRDNXFjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPenM3
UVVGQlFTeEpRVUZKTEVkQlFVY3NSMEZCUnpzN1FVRkZVaXhUUVVGUExFVkJRVVU3T3pzN1FVRkpV
Q3h2UWtGQlowSXNSVUZCUlN3d1FrRkJVeXhKUVVGSkxFVkJRVVU3UVVGREwwSXNZVUZCVHl4QlFV
RkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFdEJRVXNzWlVGQlpTeEpRVU0zUWl4RFFVRkRMRWxCUVVr
c1EwRkJReXhKUVVGSkxFdEJRVXNzYlVKQlFXMUNMRWxCUVVrc1NVRkJTU3hEUVVGRExFbEJRVWtz
UzBGQlN5eG5Ra0ZCWjBJc1EwRkJRU3hKUVVOdVJTeERRVUZETEVWQlFVVXNRVUZCUXl4SlFVRkpM
RU5CUVVNc1RVRkJUU3hKUVVGSkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNUVUZCVFN4SlFV
RkxMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVUVzUVVGQlF5eEJRVUZETEVOQlFVTTdTMEZEYUVV
N08wRkJSVVFzV1VGQlVTeEZRVUZGTEd0Q1FVRlRMRWxCUVVrc1JVRkJSVHRCUVVOMlFpeGhRVUZQ
TEVGQlFVTXNZVUZCV1N4RFFVRkZMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVVVGQlVTeERR
VUZETzFGQlFVTTdTMEZETTBNN096czdRVUZKUkN4WlFVRlJMRVZCUVVVc2EwSkJRVk1zU1VGQlNT
eEZRVUZGTzBGQlEzWkNMR0ZCUVU4c1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eE5RVUZOTEV0
QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFOUJRVThzUTBGQlF5eFJRVUZS
TEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERR
VUZETzB0QlF6bEZPMGRCUTBZN1EwRkRSaXhEUVVGRE96czdPM0ZDUVV0aExFZEJRVWNpTENKbWFX
eGxJam9pWVhOMExtcHpJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYkdWMElFRlRWQ0E5SUh0
Y2JpQWdMeThnVUhWaWJHbGpJRUZRU1NCMWMyVmtJSFJ2SUdWMllXeDFZWFJsSUdSbGNtbDJaV1Fn
WVhSMGNtbGlkWFJsY3lCeVpXZGhjbVJwYm1jZ1FWTlVJRzV2WkdWelhHNGdJR2hsYkhCbGNuTTZJ
SHRjYmlBZ0lDQXZMeUJoSUcxMWMzUmhZMmhsSUdseklHUmxabWx1YVhSbGJIa2dZU0JvWld4d1pY
SWdhV1k2WEc0Z0lDQWdMeThnS2lCcGRDQnBjeUJoYmlCbGJHbG5hV0pzWlNCb1pXeHdaWElzSUdG
dVpGeHVJQ0FnSUM4dklDb2dhWFFnYUdGeklHRjBJR3hsWVhOMElHOXVaU0J3WVhKaGJXVjBaWEln
YjNJZ2FHRnphQ0J6WldkdFpXNTBYRzRnSUNBZ2FHVnNjR1Z5Ulhod2NtVnpjMmx2YmpvZ1puVnVZ
M1JwYjI0b2JtOWtaU2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVJQ2h1YjJSbExuUjVjR1VnUFQwOUlD
ZFRkV0pGZUhCeVpYTnphVzl1SnlsY2JpQWdJQ0FnSUNBZ0lDQjhmQ0FvS0c1dlpHVXVkSGx3WlNB
OVBUMGdKMDExYzNSaFkyaGxVM1JoZEdWdFpXNTBKeUI4ZkNCdWIyUmxMblI1Y0dVZ1BUMDlJQ2RD
Ykc5amExTjBZWFJsYldWdWRDY3BYRzRnSUNBZ0lDQWdJQ0FnSUNBbUppQWhJU2dvYm05a1pTNXdZ
WEpoYlhNZ0ppWWdibTlrWlM1d1lYSmhiWE11YkdWdVozUm9LU0I4ZkNCdWIyUmxMbWhoYzJncEtU
dGNiaUFnSUNCOUxGeHVYRzRnSUNBZ2MyTnZjR1ZrU1dRNklHWjFibU4wYVc5dUtIQmhkR2dwSUh0
Y2JpQWdJQ0FnSUhKbGRIVnliaUFvTDE1Y1hDNThkR2hwYzF4Y1lpOHBMblJsYzNRb2NHRjBhQzV2
Y21sbmFXNWhiQ2s3WEc0Z0lDQWdmU3hjYmx4dUlDQWdJQzh2SUdGdUlFbEVJR2x6SUhOcGJYQnNa
U0JwWmlCcGRDQnZibXg1SUdoaGN5QnZibVVnY0dGeWRDd2dZVzVrSUhSb1lYUWdjR0Z5ZENCcGN5
QnViM1JjYmlBZ0lDQXZMeUJnTGk1Z0lHOXlJR0IwYUdsellDNWNiaUFnSUNCemFXMXdiR1ZKWkRv
Z1puVnVZM1JwYjI0b2NHRjBhQ2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVJSEJoZEdndWNHRnlkSE11
YkdWdVozUm9JRDA5UFNBeElDWW1JQ0ZCVTFRdWFHVnNjR1Z5Y3k1elkyOXdaV1JKWkNod1lYUm9L
U0FtSmlBaGNHRjBhQzVrWlhCMGFEdGNiaUFnSUNCOVhHNGdJSDFjYm4wN1hHNWNibHh1THk4Z1RY
VnpkQ0JpWlNCbGVIQnZjblJsWkNCaGN5QmhiaUJ2WW1wbFkzUWdjbUYwYUdWeUlIUm9ZVzRnZEdo
bElISnZiM1FnYjJZZ2RHaGxJRzF2WkhWc1pTQmhjeUIwYUdVZ2FtbHpiMjRnYkdWNFpYSmNiaTh2
SUcxMWMzUWdiVzlrYVdaNUlIUm9aU0J2WW1wbFkzUWdkRzhnYjNCbGNtRjBaU0J3Y205d1pYSnNl
UzVjYm1WNGNHOXlkQ0JrWldaaGRXeDBJRUZUVkR0Y2JpSmRmUT09CmRpZmYgLS1naXQgYS9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9janMvaGFuZGxlYmFy
cy9jb21waWxlci9iYXNlLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5k
bGViYXJzL2Rpc3QvY2pzL2hhbmRsZWJhcnMvY29tcGlsZXIvYmFzZS5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
YWVmNjNjM2JjNTlhNDIzNTFkY2Y4N2VjNTE3YmFjZGJjZGM3NzVmCi0tLSAvZGV2L251bGwKKysr
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvY2pzL2hh
bmRsZWJhcnMvY29tcGlsZXIvYmFzZS5qcwpAQCAtMCwwICsxLDQ4IEBACisndXNlIHN0cmljdCc7
CisKK2V4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7CitleHBvcnRzLnBhcnNlID0gcGFyc2U7Cisv
LyBpc3RhbmJ1bCBpZ25vcmUgbmV4dAorCitmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2Fy
ZChvYmopIHsgaWYgKG9iaiAmJiBvYmouX19lc01vZHVsZSkgeyByZXR1cm4gb2JqOyB9IGVsc2Ug
eyB2YXIgbmV3T2JqID0ge307IGlmIChvYmogIT0gbnVsbCkgeyBmb3IgKHZhciBrZXkgaW4gb2Jq
KSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSBu
ZXdPYmpba2V5XSA9IG9ialtrZXldOyB9IH0gbmV3T2JqWydkZWZhdWx0J10gPSBvYmo7IHJldHVy
biBuZXdPYmo7IH0gfQorCisvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dAorCitmdW5jdGlvbiBfaW50
ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8g
b2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9CisKK3ZhciBfcGFyc2VyID0gcmVxdWlyZSgnLi9w
YXJzZXInKTsKKwordmFyIF9wYXJzZXIyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcGFyc2Vy
KTsKKwordmFyIF93aGl0ZXNwYWNlQ29udHJvbCA9IHJlcXVpcmUoJy4vd2hpdGVzcGFjZS1jb250
cm9sJyk7CisKK3ZhciBfd2hpdGVzcGFjZUNvbnRyb2wyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVs
dChfd2hpdGVzcGFjZUNvbnRyb2wpOworCit2YXIgX2hlbHBlcnMgPSByZXF1aXJlKCcuL2hlbHBl
cnMnKTsKKwordmFyIEhlbHBlcnMgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChfaGVscGVycyk7
CisKK3ZhciBfdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpOworCitleHBvcnRzLnBhcnNlciA9
IF9wYXJzZXIyWydkZWZhdWx0J107CisKK3ZhciB5eSA9IHt9OworX3V0aWxzLmV4dGVuZCh5eSwg
SGVscGVycyk7CisKK2Z1bmN0aW9uIHBhcnNlKGlucHV0LCBvcHRpb25zKSB7CisgIC8vIEp1c3Qg
cmV0dXJuIGlmIGFuIGFscmVhZHktY29tcGlsZWQgQVNUIHdhcyBwYXNzZWQgaW4uCisgIGlmIChp
bnB1dC50eXBlID09PSAnUHJvZ3JhbScpIHsKKyAgICByZXR1cm4gaW5wdXQ7CisgIH0KKworICBf
cGFyc2VyMlsnZGVmYXVsdCddLnl5ID0geXk7CisKKyAgLy8gQWx0ZXJpbmcgdGhlIHNoYXJlZCBv
YmplY3QgaGVyZSwgYnV0IHRoaXMgaXMgb2sgYXMgcGFyc2VyIGlzIGEgc3luYyBvcGVyYXRpb24K
KyAgeXkubG9jSW5mbyA9IGZ1bmN0aW9uIChsb2NJbmZvKSB7CisgICAgcmV0dXJuIG5ldyB5eS5T
b3VyY2VMb2NhdGlvbihvcHRpb25zICYmIG9wdGlvbnMuc3JjTmFtZSwgbG9jSW5mbyk7CisgIH07
CisKKyAgdmFyIHN0cmlwID0gbmV3IF93aGl0ZXNwYWNlQ29udHJvbDJbJ2RlZmF1bHQnXShvcHRp
b25zKTsKKyAgcmV0dXJuIHN0cmlwLmFjY2VwdChfcGFyc2VyMlsnZGVmYXVsdCddLnBhcnNlKGlu
cHV0KSk7Cit9CisvLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFz
ZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMeTR1THk0dUwyeHBZ
aTlvWVc1a2JHVmlZWEp6TDJOdmJYQnBiR1Z5TDJKaGMyVXVhbk1pWFN3aWJtRnRaWE1pT2x0ZExD
SnRZWEJ3YVc1bmN5STZJanM3T3pzN096czdPenM3TzNOQ1FVRnRRaXhWUVVGVk96czdPMmxEUVVO
RExITkNRVUZ6UWpzN096dDFRa0ZETTBJc1YwRkJWenM3U1VGQmVFSXNUMEZCVHpzN2NVSkJRMGtz
VlVGQlZUczdVVUZGZUVJc1RVRkJUVHM3UVVGRlppeEpRVUZKTEVWQlFVVXNSMEZCUnl4RlFVRkZM
RU5CUVVNN1FVRkRXaXhqUVVGUExFVkJRVVVzUlVGQlJTeFBRVUZQTEVOQlFVTXNRMEZCUXpzN1FV
RkZZaXhUUVVGVExFdEJRVXNzUTBGQlF5eExRVUZMTEVWQlFVVXNUMEZCVHl4RlFVRkZPenRCUVVW
d1F5eE5RVUZKTEV0QlFVc3NRMEZCUXl4SlFVRkpMRXRCUVVzc1UwRkJVeXhGUVVGRk8wRkJRVVVz
VjBGQlR5eExRVUZMTEVOQlFVTTdSMEZCUlRzN1FVRkZMME1zYzBKQlFVOHNSVUZCUlN4SFFVRkhM
RVZCUVVVc1EwRkJRenM3TzBGQlIyWXNTVUZCUlN4RFFVRkRMRTlCUVU4c1IwRkJSeXhWUVVGVExF
OUJRVThzUlVGQlJUdEJRVU0zUWl4WFFVRlBMRWxCUVVrc1JVRkJSU3hEUVVGRExHTkJRV01zUTBG
QlF5eFBRVUZQTEVsQlFVa3NUMEZCVHl4RFFVRkRMRTlCUVU4c1JVRkJSU3hQUVVGUExFTkJRVU1z
UTBGQlF6dEhRVU51UlN4RFFVRkRPenRCUVVWR0xFMUJRVWtzUzBGQlN5eEhRVUZITEcxRFFVRnpR
aXhQUVVGUExFTkJRVU1zUTBGQlF6dEJRVU16UXl4VFFVRlBMRXRCUVVzc1EwRkJReXhOUVVGTkxF
TkJRVU1zYjBKQlFVOHNTMEZCU3l4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU03UTBG
RE1VTWlMQ0ptYVd4bElqb2lZbUZ6WlM1cWN5SXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0
Y0c5eWRDQndZWEp6WlhJZ1puSnZiU0FuTGk5d1lYSnpaWEluTzF4dWFXMXdiM0owSUZkb2FYUmxj
M0JoWTJWRGIyNTBjbTlzSUdaeWIyMGdKeTR2ZDJocGRHVnpjR0ZqWlMxamIyNTBjbTlzSnp0Y2Jt
bHRjRzl5ZENBcUlHRnpJRWhsYkhCbGNuTWdabkp2YlNBbkxpOW9aV3h3WlhKekp6dGNibWx0Y0c5
eWRDQjdJR1Y0ZEdWdVpDQjlJR1p5YjIwZ0p5NHVMM1YwYVd4ekp6dGNibHh1Wlhod2IzSjBJSHNn
Y0dGeWMyVnlJSDA3WEc1Y2JteGxkQ0I1ZVNBOUlIdDlPMXh1WlhoMFpXNWtLSGw1TENCSVpXeHda
WEp6S1R0Y2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlIQmhjbk5sS0dsdWNIVjBMQ0J2Y0hScGIy
NXpLU0I3WEc0Z0lDOHZJRXAxYzNRZ2NtVjBkWEp1SUdsbUlHRnVJR0ZzY21WaFpIa3RZMjl0Y0ds
c1pXUWdRVk5VSUhkaGN5QndZWE56WldRZ2FXNHVYRzRnSUdsbUlDaHBibkIxZEM1MGVYQmxJRDA5
UFNBblVISnZaM0poYlNjcElIc2djbVYwZFhKdUlHbHVjSFYwT3lCOVhHNWNiaUFnY0dGeWMyVnlM
bmw1SUQwZ2VYazdYRzVjYmlBZ0x5OGdRV3gwWlhKcGJtY2dkR2hsSUhOb1lYSmxaQ0J2WW1wbFkz
UWdhR1Z5WlN3Z1luVjBJSFJvYVhNZ2FYTWdiMnNnWVhNZ2NHRnljMlZ5SUdseklHRWdjM2x1WXlC
dmNHVnlZWFJwYjI1Y2JpQWdlWGt1Ykc5alNXNW1ieUE5SUdaMWJtTjBhVzl1S0d4dlkwbHVabThw
SUh0Y2JpQWdJQ0J5WlhSMWNtNGdibVYzSUhsNUxsTnZkWEpqWlV4dlkyRjBhVzl1S0c5d2RHbHZi
bk1nSmlZZ2IzQjBhVzl1Y3k1emNtTk9ZVzFsTENCc2IyTkpibVp2S1R0Y2JpQWdmVHRjYmx4dUlD
QnNaWFFnYzNSeWFYQWdQU0J1WlhjZ1YyaHBkR1Z6Y0dGalpVTnZiblJ5YjJ3b2IzQjBhVzl1Y3lr
N1hHNGdJSEpsZEhWeWJpQnpkSEpwY0M1aFkyTmxjSFFvY0dGeWMyVnlMbkJoY25ObEtHbHVjSFYw
S1NrN1hHNTlYRzRpWFgwPQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9k
dWxlcy9oYW5kbGViYXJzL2Rpc3QvY2pzL2hhbmRsZWJhcnMvY29tcGlsZXIvY29kZS1nZW4uanMg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9janMvaGFu
ZGxlYmFycy9jb21waWxlci9jb2RlLWdlbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNWIzNjE1ZjkzZmZkZmUw
OWQ5ZGMyNjI4Y2I1OGM4NTA4NTM3NGE0Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
anF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvY2pzL2hhbmRsZWJhcnMvY29tcGls
ZXIvY29kZS1nZW4uanMKQEAgLTAsMCArMSwxNjYgQEAKKy8qIGdsb2JhbCBkZWZpbmUgKi8KKyd1
c2Ugc3RyaWN0JzsKKworZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKKwordmFyIF91dGlscyA9
IHJlcXVpcmUoJy4uL3V0aWxzJyk7CisKK3ZhciBTb3VyY2VOb2RlID0gdW5kZWZpbmVkOworCit0
cnkgeworICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLworICBpZiAodHlwZW9mIGRlZmluZSAh
PT0gJ2Z1bmN0aW9uJyB8fCAhZGVmaW5lLmFtZCkgeworICAgIC8vIFdlIGRvbid0IHN1cHBvcnQg
dGhpcyBpbiBBTUQgZW52aXJvbm1lbnRzLiBGb3IgdGhlc2UgZW52aXJvbm1lbnRzLCB3ZSBhc3Vz
bWUgdGhhdAorICAgIC8vIHRoZXkgYXJlIHJ1bm5pbmcgb24gdGhlIGJyb3dzZXIgYW5kIHRodXMg
aGF2ZSBubyBuZWVkIGZvciB0aGUgc291cmNlLW1hcCBsaWJyYXJ5LgorICAgIHZhciBTb3VyY2VN
YXAgPSByZXF1aXJlKCdzb3VyY2UtbWFwJyk7CisgICAgU291cmNlTm9kZSA9IFNvdXJjZU1hcC5T
b3VyY2VOb2RlOworICB9Cit9IGNhdGNoIChlcnIpIHt9CisvKiBOT1AgKi8KKworLyogaXN0YW5i
dWwgaWdub3JlIGlmOiB0ZXN0ZWQgYnV0IG5vdCBjb3ZlcmVkIGluIGlzdGFuYnVsIGR1ZSB0byBk
aXN0IGJ1aWxkICAqLworaWYgKCFTb3VyY2VOb2RlKSB7CisgIFNvdXJjZU5vZGUgPSBmdW5jdGlv
biAobGluZSwgY29sdW1uLCBzcmNGaWxlLCBjaHVua3MpIHsKKyAgICB0aGlzLnNyYyA9ICcnOwor
ICAgIGlmIChjaHVua3MpIHsKKyAgICAgIHRoaXMuYWRkKGNodW5rcyk7CisgICAgfQorICB9Owor
ICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLworICBTb3VyY2VOb2RlLnByb3RvdHlwZSA9IHsK
KyAgICBhZGQ6IGZ1bmN0aW9uIGFkZChjaHVua3MpIHsKKyAgICAgIGlmIChfdXRpbHMuaXNBcnJh
eShjaHVua3MpKSB7CisgICAgICAgIGNodW5rcyA9IGNodW5rcy5qb2luKCcnKTsKKyAgICAgIH0K
KyAgICAgIHRoaXMuc3JjICs9IGNodW5rczsKKyAgICB9LAorICAgIHByZXBlbmQ6IGZ1bmN0aW9u
IHByZXBlbmQoY2h1bmtzKSB7CisgICAgICBpZiAoX3V0aWxzLmlzQXJyYXkoY2h1bmtzKSkgewor
ICAgICAgICBjaHVua3MgPSBjaHVua3Muam9pbignJyk7CisgICAgICB9CisgICAgICB0aGlzLnNy
YyA9IGNodW5rcyArIHRoaXMuc3JjOworICAgIH0sCisgICAgdG9TdHJpbmdXaXRoU291cmNlTWFw
OiBmdW5jdGlvbiB0b1N0cmluZ1dpdGhTb3VyY2VNYXAoKSB7CisgICAgICByZXR1cm4geyBjb2Rl
OiB0aGlzLnRvU3RyaW5nKCkgfTsKKyAgICB9LAorICAgIHRvU3RyaW5nOiBmdW5jdGlvbiB0b1N0
cmluZygpIHsKKyAgICAgIHJldHVybiB0aGlzLnNyYzsKKyAgICB9CisgIH07Cit9CisKK2Z1bmN0
aW9uIGNhc3RDaHVuayhjaHVuaywgY29kZUdlbiwgbG9jKSB7CisgIGlmIChfdXRpbHMuaXNBcnJh
eShjaHVuaykpIHsKKyAgICB2YXIgcmV0ID0gW107CisKKyAgICBmb3IgKHZhciBpID0gMCwgbGVu
ID0gY2h1bmsubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgIHJldC5wdXNoKGNvZGVHZW4u
d3JhcChjaHVua1tpXSwgbG9jKSk7CisgICAgfQorICAgIHJldHVybiByZXQ7CisgIH0gZWxzZSBp
ZiAodHlwZW9mIGNodW5rID09PSAnYm9vbGVhbicgfHwgdHlwZW9mIGNodW5rID09PSAnbnVtYmVy
JykgeworICAgIC8vIEhhbmRsZSBwcmltaXRpdmVzIHRoYXQgdGhlIFNvdXJjZU5vZGUgd2lsbCB0
aHJvdyB1cCBvbgorICAgIHJldHVybiBjaHVuayArICcnOworICB9CisgIHJldHVybiBjaHVuazsK
K30KKworZnVuY3Rpb24gQ29kZUdlbihzcmNGaWxlKSB7CisgIHRoaXMuc3JjRmlsZSA9IHNyY0Zp
bGU7CisgIHRoaXMuc291cmNlID0gW107Cit9CisKK0NvZGVHZW4ucHJvdG90eXBlID0geworICBp
c0VtcHR5OiBmdW5jdGlvbiBpc0VtcHR5KCkgeworICAgIHJldHVybiAhdGhpcy5zb3VyY2UubGVu
Z3RoOworICB9LAorICBwcmVwZW5kOiBmdW5jdGlvbiBwcmVwZW5kKHNvdXJjZSwgbG9jKSB7Cisg
ICAgdGhpcy5zb3VyY2UudW5zaGlmdCh0aGlzLndyYXAoc291cmNlLCBsb2MpKTsKKyAgfSwKKyAg
cHVzaDogZnVuY3Rpb24gcHVzaChzb3VyY2UsIGxvYykgeworICAgIHRoaXMuc291cmNlLnB1c2go
dGhpcy53cmFwKHNvdXJjZSwgbG9jKSk7CisgIH0sCisKKyAgbWVyZ2U6IGZ1bmN0aW9uIG1lcmdl
KCkgeworICAgIHZhciBzb3VyY2UgPSB0aGlzLmVtcHR5KCk7CisgICAgdGhpcy5lYWNoKGZ1bmN0
aW9uIChsaW5lKSB7CisgICAgICBzb3VyY2UuYWRkKFsnICAnLCBsaW5lLCAnXG4nXSk7CisgICAg
fSk7CisgICAgcmV0dXJuIHNvdXJjZTsKKyAgfSwKKworICBlYWNoOiBmdW5jdGlvbiBlYWNoKGl0
ZXIpIHsKKyAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gdGhpcy5zb3VyY2UubGVuZ3RoOyBpIDwg
bGVuOyBpKyspIHsKKyAgICAgIGl0ZXIodGhpcy5zb3VyY2VbaV0pOworICAgIH0KKyAgfSwKKwor
ICBlbXB0eTogZnVuY3Rpb24gZW1wdHkoKSB7CisgICAgdmFyIGxvYyA9IHRoaXMuY3VycmVudExv
Y2F0aW9uIHx8IHsgc3RhcnQ6IHt9IH07CisgICAgcmV0dXJuIG5ldyBTb3VyY2VOb2RlKGxvYy5z
dGFydC5saW5lLCBsb2Muc3RhcnQuY29sdW1uLCB0aGlzLnNyY0ZpbGUpOworICB9LAorICB3cmFw
OiBmdW5jdGlvbiB3cmFwKGNodW5rKSB7CisgICAgdmFyIGxvYyA9IGFyZ3VtZW50cy5sZW5ndGgg
PD0gMSB8fCBhcmd1bWVudHNbMV0gPT09IHVuZGVmaW5lZCA/IHRoaXMuY3VycmVudExvY2F0aW9u
IHx8IHsgc3RhcnQ6IHt9IH0gOiBhcmd1bWVudHNbMV07CisKKyAgICBpZiAoY2h1bmsgaW5zdGFu
Y2VvZiBTb3VyY2VOb2RlKSB7CisgICAgICByZXR1cm4gY2h1bms7CisgICAgfQorCisgICAgY2h1
bmsgPSBjYXN0Q2h1bmsoY2h1bmssIHRoaXMsIGxvYyk7CisKKyAgICByZXR1cm4gbmV3IFNvdXJj
ZU5vZGUobG9jLnN0YXJ0LmxpbmUsIGxvYy5zdGFydC5jb2x1bW4sIHRoaXMuc3JjRmlsZSwgY2h1
bmspOworICB9LAorCisgIGZ1bmN0aW9uQ2FsbDogZnVuY3Rpb24gZnVuY3Rpb25DYWxsKGZuLCB0
eXBlLCBwYXJhbXMpIHsKKyAgICBwYXJhbXMgPSB0aGlzLmdlbmVyYXRlTGlzdChwYXJhbXMpOwor
ICAgIHJldHVybiB0aGlzLndyYXAoW2ZuLCB0eXBlID8gJy4nICsgdHlwZSArICcoJyA6ICcoJywg
cGFyYW1zLCAnKSddKTsKKyAgfSwKKworICBxdW90ZWRTdHJpbmc6IGZ1bmN0aW9uIHF1b3RlZFN0
cmluZyhzdHIpIHsKKyAgICByZXR1cm4gJyInICsgKHN0ciArICcnKS5yZXBsYWNlKC9cXC9nLCAn
XFxcXCcpLnJlcGxhY2UoLyIvZywgJ1xcIicpLnJlcGxhY2UoL1xuL2csICdcXG4nKS5yZXBsYWNl
KC9cci9nLCAnXFxyJykucmVwbGFjZSgvXHUyMDI4L2csICdcXHUyMDI4JykgLy8gUGVyIEVjbWEt
MjYyIDcuMyArIDcuOC40CisgICAgLnJlcGxhY2UoL1x1MjAyOS9nLCAnXFx1MjAyOScpICsgJyIn
OworICB9LAorCisgIG9iamVjdExpdGVyYWw6IGZ1bmN0aW9uIG9iamVjdExpdGVyYWwob2JqKSB7
CisgICAgdmFyIHBhaXJzID0gW107CisKKyAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSB7CisgICAg
ICBpZiAob2JqLmhhc093blByb3BlcnR5KGtleSkpIHsKKyAgICAgICAgdmFyIHZhbHVlID0gY2Fz
dENodW5rKG9ialtrZXldLCB0aGlzKTsKKyAgICAgICAgaWYgKHZhbHVlICE9PSAndW5kZWZpbmVk
JykgeworICAgICAgICAgIHBhaXJzLnB1c2goW3RoaXMucXVvdGVkU3RyaW5nKGtleSksICc6Jywg
dmFsdWVdKTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKworICAgIHZhciByZXQgPSB0aGlz
LmdlbmVyYXRlTGlzdChwYWlycyk7CisgICAgcmV0LnByZXBlbmQoJ3snKTsKKyAgICByZXQuYWRk
KCd9Jyk7CisgICAgcmV0dXJuIHJldDsKKyAgfSwKKworICBnZW5lcmF0ZUxpc3Q6IGZ1bmN0aW9u
IGdlbmVyYXRlTGlzdChlbnRyaWVzKSB7CisgICAgdmFyIHJldCA9IHRoaXMuZW1wdHkoKTsKKwor
ICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBlbnRyaWVzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7
CisgICAgICBpZiAoaSkgeworICAgICAgICByZXQuYWRkKCcsJyk7CisgICAgICB9CisKKyAgICAg
IHJldC5hZGQoY2FzdENodW5rKGVudHJpZXNbaV0sIHRoaXMpKTsKKyAgICB9CisKKyAgICByZXR1
cm4gcmV0OworICB9LAorCisgIGdlbmVyYXRlQXJyYXk6IGZ1bmN0aW9uIGdlbmVyYXRlQXJyYXko
ZW50cmllcykgeworICAgIHZhciByZXQgPSB0aGlzLmdlbmVyYXRlTGlzdChlbnRyaWVzKTsKKyAg
ICByZXQucHJlcGVuZCgnWycpOworICAgIHJldC5hZGQoJ10nKTsKKworICAgIHJldHVybiByZXQ7
CisgIH0KK307CisKK2V4cG9ydHNbJ2RlZmF1bHQnXSA9IENvZGVHZW47Cittb2R1bGUuZXhwb3J0
cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsKKy8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGlj
YXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJaTR1THk0
dUx5NHVMeTR1TDJ4cFlpOW9ZVzVrYkdWaVlYSnpMMk52YlhCcGJHVnlMMk52WkdVdFoyVnVMbXB6
SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3T3pzN08zRkNRVU56UWl4VlFVRlZP
enRCUVVWb1F5eEpRVUZKTEZWQlFWVXNXVUZCUVN4RFFVRkRPenRCUVVWbUxFbEJRVWs3TzBGQlJV
WXNUVUZCU1N4UFFVRlBMRTFCUVUwc1MwRkJTeXhWUVVGVkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVO
QlFVTXNSMEZCUnl4RlFVRkZPenM3UVVGSEwwTXNVVUZCU1N4VFFVRlRMRWRCUVVjc1QwRkJUeXhE
UVVGRExGbEJRVmtzUTBGQlF5eERRVUZETzBGQlEzUkRMR05CUVZVc1IwRkJSeXhUUVVGVExFTkJR
VU1zVlVGQlZTeERRVUZETzBkQlEyNURPME5CUTBZc1EwRkJReXhQUVVGUExFZEJRVWNzUlVGQlJT
eEZRVVZpT3pzN08wRkJRVUVzUVVGSFJDeEpRVUZKTEVOQlFVTXNWVUZCVlN4RlFVRkZPMEZCUTJZ
c1dVRkJWU3hIUVVGSExGVkJRVk1zU1VGQlNTeEZRVUZGTEUxQlFVMHNSVUZCUlN4UFFVRlBMRVZC
UVVVc1RVRkJUU3hGUVVGRk8wRkJRMjVFTEZGQlFVa3NRMEZCUXl4SFFVRkhMRWRCUVVjc1JVRkJS
U3hEUVVGRE8wRkJRMlFzVVVGQlNTeE5RVUZOTEVWQlFVVTdRVUZEVml4VlFVRkpMRU5CUVVNc1Iw
RkJSeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzB0QlEyeENPMGRCUTBZc1EwRkJRenM3UVVG
RlJpeFpRVUZWTEVOQlFVTXNVMEZCVXl4SFFVRkhPMEZCUTNKQ0xFOUJRVWNzUlVGQlJTeGhRVUZU
TEUxQlFVMHNSVUZCUlR0QlFVTndRaXhWUVVGSkxHVkJRVkVzVFVGQlRTeERRVUZETEVWQlFVVTdR
VUZEYmtJc1kwRkJUU3hIUVVGSExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFV
RkRMRU5CUVVNN1QwRkRNVUk3UVVGRFJDeFZRVUZKTEVOQlFVTXNSMEZCUnl4SlFVRkpMRTFCUVUw
c1EwRkJRenRMUVVOd1FqdEJRVU5FTEZkQlFVOHNSVUZCUlN4cFFrRkJVeXhOUVVGTkxFVkJRVVU3
UVVGRGVFSXNWVUZCU1N4bFFVRlJMRTFCUVUwc1EwRkJReXhGUVVGRk8wRkJRMjVDTEdOQlFVMHNS
MEZCUnl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETzA5QlF6
RkNPMEZCUTBRc1ZVRkJTU3hEUVVGRExFZEJRVWNzUjBGQlJ5eE5RVUZOTEVkQlFVY3NTVUZCU1N4
RFFVRkRMRWRCUVVjc1EwRkJRenRMUVVNNVFqdEJRVU5FTEhsQ1FVRnhRaXhGUVVGRkxHbERRVUZY
TzBGQlEyaERMR0ZCUVU4c1JVRkJReXhKUVVGSkxFVkJRVVVzU1VGQlNTeERRVUZETEZGQlFWRXNS
VUZCUlN4RlFVRkRMRU5CUVVNN1MwRkRhRU03UVVGRFJDeFpRVUZSTEVWQlFVVXNiMEpCUVZjN1FV
RkRia0lzWVVGQlR5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRPMHRCUTJwQ08wZEJRMFlzUTBG
QlF6dERRVU5JT3p0QlFVZEVMRk5CUVZNc1UwRkJVeXhEUVVGRExFdEJRVXNzUlVGQlJTeFBRVUZQ
TEVWQlFVVXNSMEZCUnl4RlFVRkZPMEZCUTNSRExFMUJRVWtzWlVGQlVTeExRVUZMTEVOQlFVTXNS
VUZCUlR0QlFVTnNRaXhSUVVGSkxFZEJRVWNzUjBGQlJ5eEZRVUZGTEVOQlFVTTdPMEZCUldJc1Uw
RkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNSMEZCUnl4SFFVRkhMRXRCUVVz
c1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEhRVUZITEVkQlFVY3NSVUZCUlN4RFFVRkRMRVZC
UVVVc1JVRkJSVHRCUVVOb1JDeFRRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJR
eXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRWRCUVVjc1Ew
RkJReXhEUVVGRExFTkJRVU03UzBGRGRrTTdRVUZEUkN4WFFVRlBMRWRCUVVjc1EwRkJRenRIUVVO
YUxFMUJRVTBzU1VGQlNTeFBRVUZQTEV0QlFVc3NTMEZCU3l4VFFVRlRMRWxCUVVrc1QwRkJUeXhM
UVVGTExFdEJRVXNzVVVGQlVTeEZRVUZGT3p0QlFVVnNSU3hYUVVGUExFdEJRVXNzUjBGQlJ5eEZR
VUZGTEVOQlFVTTdSMEZEYmtJN1FVRkRSQ3hUUVVGUExFdEJRVXNzUTBGQlF6dERRVU5rT3p0QlFV
ZEVMRk5CUVZNc1QwRkJUeXhEUVVGRExFOUJRVThzUlVGQlJUdEJRVU40UWl4TlFVRkpMRU5CUVVN
c1QwRkJUeXhIUVVGSExFOUJRVThzUTBGQlF6dEJRVU4yUWl4TlFVRkpMRU5CUVVNc1RVRkJUU3hI
UVVGSExFVkJRVVVzUTBGQlF6dERRVU5zUWpzN1FVRkZSQ3hQUVVGUExFTkJRVU1zVTBGQlV5eEhR
VUZITzBGQlEyeENMRk5CUVU4c1JVRkJRU3h0UWtGQlJ6dEJRVU5TTEZkQlFVOHNRMEZCUXl4SlFV
RkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF6dEhRVU0xUWp0QlFVTkVMRk5CUVU4
c1JVRkJSU3hwUWtGQlV5eE5RVUZOTEVWQlFVVXNSMEZCUnl4RlFVRkZPMEZCUXpkQ0xGRkJRVWtz
UTBGQlF5eE5RVUZOTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJR
VU1zVFVGQlRTeEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNN1IwRkROME03UVVGRFJD
eE5RVUZKTEVWQlFVVXNZMEZCVXl4TlFVRk5MRVZCUVVVc1IwRkJSeXhGUVVGRk8wRkJRekZDTEZG
QlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZK
TEVOQlFVTXNUVUZCVFN4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU03UjBGRE1VTTdP
MEZCUlVRc1QwRkJTeXhGUVVGRkxHbENRVUZYTzBGQlEyaENMRkZCUVVrc1RVRkJUU3hIUVVGSExF
bEJRVWtzUTBGQlF5eExRVUZMTEVWQlFVVXNRMEZCUXp0QlFVTXhRaXhSUVVGSkxFTkJRVU1zU1VG
QlNTeERRVUZETEZWQlFWTXNTVUZCU1N4RlFVRkZPMEZCUTNaQ0xGbEJRVTBzUTBGQlF5eEhRVUZI
TEVOQlFVTXNRMEZCUXl4SlFVRkpMRVZCUVVVc1NVRkJTU3hGUVVGRkxFbEJRVWtzUTBGQlF5eERR
VUZETEVOQlFVTTdTMEZEYUVNc1EwRkJReXhEUVVGRE8wRkJRMGdzVjBGQlR5eE5RVUZOTEVOQlFV
TTdSMEZEWmpzN1FVRkZSQ3hOUVVGSkxFVkJRVVVzWTBGQlV5eEpRVUZKTEVWQlFVVTdRVUZEYmtJ
c1UwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNSMEZCUnl4SFFVRkhMRWxC
UVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTXNSMEZCUnl4SFFVRkhM
RVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3UVVGRGRFUXNWVUZCU1N4RFFVRkRMRWxCUVVrc1Ew
RkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0TFFVTjBRanRIUVVO
R096dEJRVVZFTEU5QlFVc3NSVUZCUlN4cFFrRkJWenRCUVVOb1FpeFJRVUZKTEVkQlFVY3NSMEZC
Unl4SlFVRkpMRU5CUVVNc1pVRkJaU3hKUVVGSkxFVkJRVU1zUzBGQlN5eEZRVUZGTEVWQlFVVXNS
VUZCUXl4RFFVRkRPMEZCUXpsRExGZEJRVThzU1VGQlNTeFZRVUZWTEVOQlFVTXNSMEZCUnl4RFFV
RkRMRXRCUVVzc1EwRkJReXhKUVVGSkxFVkJRVVVzUjBGQlJ5eERRVUZETEV0QlFVc3NRMEZCUXl4
TlFVRk5MRVZCUVVVc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzBkQlEzWkZPMEZC
UTBRc1RVRkJTU3hGUVVGRkxHTkJRVk1zUzBGQlN5eEZRVUUyUXp0UlFVRXpReXhIUVVGSExIbEVR
VUZITEVsQlFVa3NRMEZCUXl4bFFVRmxMRWxCUVVrc1JVRkJReXhMUVVGTExFVkJRVVVzUlVGQlJT
eEZRVUZET3p0QlFVTTNSQ3hSUVVGSkxFdEJRVXNzV1VGQldTeFZRVUZWTEVWQlFVVTdRVUZETDBJ
c1lVRkJUeXhMUVVGTExFTkJRVU03UzBGRFpEczdRVUZGUkN4VFFVRkxMRWRCUVVjc1UwRkJVeXhE
UVVGRExFdEJRVXNzUlVGQlJTeEpRVUZKTEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNN08wRkJS
WEJETEZkQlFVOHNTVUZCU1N4VlFVRlZMRU5CUVVNc1IwRkJSeXhEUVVGRExFdEJRVXNzUTBGQlF5
eEpRVUZKTEVWQlFVVXNSMEZCUnl4RFFVRkRMRXRCUVVzc1EwRkJReXhOUVVGTkxFVkJRVVVzU1VG
QlNTeERRVUZETEU5QlFVOHNSVUZCUlN4TFFVRkxMRU5CUVVNc1EwRkJRenRIUVVNNVJUczdRVUZG
UkN4alFVRlpMRVZCUVVVc2MwSkJRVk1zUlVGQlJTeEZRVUZGTEVsQlFVa3NSVUZCUlN4TlFVRk5M
RVZCUVVVN1FVRkRka01zVlVGQlRTeEhRVUZITEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNc1RV
RkJUU3hEUVVGRExFTkJRVU03UVVGRGJrTXNWMEZCVHl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVG
RExFTkJRVU1zUlVGQlJTeEZRVUZGTEVsQlFVa3NSMEZCUnl4SFFVRkhMRWRCUVVjc1NVRkJTU3hI
UVVGSExFZEJRVWNzUjBGQlJ5eEhRVUZITEVWQlFVVXNUVUZCVFN4RlFVRkZMRWRCUVVjc1EwRkJR
eXhEUVVGRExFTkJRVU03UjBGRGNFVTdPMEZCUlVRc1kwRkJXU3hGUVVGRkxITkNRVUZUTEVkQlFV
Y3NSVUZCUlR0QlFVTXhRaXhYUVVGUExFZEJRVWNzUjBGQlJ5eERRVUZETEVkQlFVY3NSMEZCUnl4
RlFVRkZMRU5CUVVFc1EwRkRia0lzVDBGQlR5eERRVUZETEV0QlFVc3NSVUZCUlN4TlFVRk5MRU5C
UVVNc1EwRkRkRUlzVDBGQlR5eERRVUZETEVsQlFVa3NSVUZCUlN4TFFVRkxMRU5CUVVNc1EwRkRj
RUlzVDBGQlR5eERRVUZETEV0QlFVc3NSVUZCUlN4TFFVRkxMRU5CUVVNc1EwRkRja0lzVDBGQlR5
eERRVUZETEV0QlFVc3NSVUZCUlN4TFFVRkxMRU5CUVVNc1EwRkRja0lzVDBGQlR5eERRVUZETEZO
QlFWTXNSVUZCUlN4VFFVRlRMRU5CUVVNN1MwRkROMElzVDBGQlR5eERRVUZETEZOQlFWTXNSVUZC
UlN4VFFVRlRMRU5CUVVNc1IwRkJSeXhIUVVGSExFTkJRVU03UjBGRGVFTTdPMEZCUlVRc1pVRkJZ
U3hGUVVGRkxIVkNRVUZUTEVkQlFVY3NSVUZCUlR0QlFVTXpRaXhSUVVGSkxFdEJRVXNzUjBGQlJ5
eEZRVUZGTEVOQlFVTTdPMEZCUldZc1UwRkJTeXhKUVVGSkxFZEJRVWNzU1VGQlNTeEhRVUZITEVW
QlFVVTdRVUZEYmtJc1ZVRkJTU3hIUVVGSExFTkJRVU1zWTBGQll5eERRVUZETEVkQlFVY3NRMEZC
UXl4RlFVRkZPMEZCUXpOQ0xGbEJRVWtzUzBGQlN5eEhRVUZITEZOQlFWTXNRMEZCUXl4SFFVRkhM
RU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTTdRVUZEZEVNc1dV
RkJTU3hMUVVGTExFdEJRVXNzVjBGQlZ5eEZRVUZGTzBGQlEzcENMR1ZCUVVzc1EwRkJReXhKUVVG
SkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNXVUZCV1N4RFFVRkRMRWRCUVVjc1EwRkJReXhG
UVVGRkxFZEJRVWNzUlVGQlJTeExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRPMU5CUTJ4RU8wOUJR
MFk3UzBGRFJqczdRVUZGUkN4UlFVRkpMRWRCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zV1VGQldT
eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMEZCUTI1RExFOUJRVWNzUTBGQlF5eFBRVUZQTEVO
QlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1FVRkRha0lzVDBGQlJ5eERRVUZETEVkQlFVY3NRMEZC
UXl4SFFVRkhMRU5CUVVNc1EwRkJRenRCUVVOaUxGZEJRVThzUjBGQlJ5eERRVUZETzBkQlExbzdP
MEZCUjBRc1kwRkJXU3hGUVVGRkxITkNRVUZUTEU5QlFVOHNSVUZCUlR0QlFVTTVRaXhSUVVGSkxF
ZEJRVWNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RlFVRkZMRU5CUVVNN08wRkJSWFpDTEZO
QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFZEJRVWNzUjBGQlJ5eFBRVUZQ
TEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNc1IwRkJSeXhIUVVGSExFVkJRVVVzUTBGQlF5eEZR
VUZGTEVWQlFVVTdRVUZEYkVRc1ZVRkJTU3hEUVVGRExFVkJRVVU3UVVGRFRDeFhRVUZITEVOQlFV
TXNSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8wOUJRMlE3TzBGQlJVUXNVMEZCUnl4
RFFVRkRMRWRCUVVjc1EwRkJReXhUUVVGVExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNRMEZC
UXl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU03UzBGRGRFTTdPMEZCUlVRc1YwRkJU
eXhIUVVGSExFTkJRVU03UjBGRFdqczdRVUZGUkN4bFFVRmhMRVZCUVVVc2RVSkJRVk1zVDBGQlR5
eEZRVUZGTzBGQlF5OUNMRkZCUVVrc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF5eFpRVUZaTEVO
QlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1FVRkRja01zVDBGQlJ5eERRVUZETEU5QlFVOHNRMEZC
UXl4SFFVRkhMRU5CUVVNc1EwRkJRenRCUVVOcVFpeFBRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRM
RWRCUVVjc1EwRkJReXhEUVVGRE96dEJRVVZpTEZkQlFVOHNSMEZCUnl4RFFVRkRPMGRCUTFvN1Ew
RkRSaXhEUVVGRE96dHhRa0ZGWVN4UFFVRlBJaXdpWm1sc1pTSTZJbU52WkdVdFoyVnVMbXB6SWl3
aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaUx5b2daMnh2WW1Gc0lHUmxabWx1WlNBcUwxeHVhVzF3
YjNKMElIdHBjMEZ5Y21GNWZTQm1jbTl0SUNjdUxpOTFkR2xzY3ljN1hHNWNibXhsZENCVGIzVnlZ
MlZPYjJSbE8xeHVYRzUwY25rZ2UxeHVJQ0F2S2lCcGMzUmhibUoxYkNCcFoyNXZjbVVnYm1WNGRD
QXFMMXh1SUNCcFppQW9kSGx3Wlc5bUlHUmxabWx1WlNBaFBUMGdKMloxYm1OMGFXOXVKeUI4ZkNB
aFpHVm1hVzVsTG1GdFpDa2dlMXh1SUNBZ0lDOHZJRmRsSUdSdmJpZDBJSE4xY0hCdmNuUWdkR2hw
Y3lCcGJpQkJUVVFnWlc1MmFYSnZibTFsYm5SekxpQkdiM0lnZEdobGMyVWdaVzUyYVhKdmJtMWxi
blJ6TENCM1pTQmhjM1Z6YldVZ2RHaGhkRnh1SUNBZ0lDOHZJSFJvWlhrZ1lYSmxJSEoxYm01cGJt
Y2diMjRnZEdobElHSnliM2R6WlhJZ1lXNWtJSFJvZFhNZ2FHRjJaU0J1YnlCdVpXVmtJR1p2Y2lC
MGFHVWdjMjkxY21ObExXMWhjQ0JzYVdKeVlYSjVMbHh1SUNBZ0lHeGxkQ0JUYjNWeVkyVk5ZWEFn
UFNCeVpYRjFhWEpsS0NkemIzVnlZMlV0YldGd0p5azdYRzRnSUNBZ1UyOTFjbU5sVG05a1pTQTlJ
Rk52ZFhKalpVMWhjQzVUYjNWeVkyVk9iMlJsTzF4dUlDQjlYRzU5SUdOaGRHTm9JQ2hsY25JcElI
dGNiaUFnTHlvZ1RrOVFJQ292WEc1OVhHNWNiaThxSUdsemRHRnVZblZzSUdsbmJtOXlaU0JwWmpv
Z2RHVnpkR1ZrSUdKMWRDQnViM1FnWTI5MlpYSmxaQ0JwYmlCcGMzUmhibUoxYkNCa2RXVWdkRzhn
WkdsemRDQmlkV2xzWkNBZ0tpOWNibWxtSUNnaFUyOTFjbU5sVG05a1pTa2dlMXh1SUNCVGIzVnlZ
MlZPYjJSbElEMGdablZ1WTNScGIyNG9iR2x1WlN3Z1kyOXNkVzF1TENCemNtTkdhV3hsTENCamFI
VnVhM01wSUh0Y2JpQWdJQ0IwYUdsekxuTnlZeUE5SUNjbk8xeHVJQ0FnSUdsbUlDaGphSFZ1YTNN
cElIdGNiaUFnSUNBZ0lIUm9hWE11WVdSa0tHTm9kVzVyY3lrN1hHNGdJQ0FnZlZ4dUlDQjlPMXh1
SUNBdktpQnBjM1JoYm1KMWJDQnBaMjV2Y21VZ2JtVjRkQ0FxTDF4dUlDQlRiM1Z5WTJWT2IyUmxM
bkJ5YjNSdmRIbHdaU0E5SUh0Y2JpQWdJQ0JoWkdRNklHWjFibU4wYVc5dUtHTm9kVzVyY3lrZ2Ux
eHVJQ0FnSUNBZ2FXWWdLR2x6UVhKeVlYa29ZMmgxYm10ektTa2dlMXh1SUNBZ0lDQWdJQ0JqYUhW
dWEzTWdQU0JqYUhWdWEzTXVhbTlwYmlnbkp5azdYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQjBhR2x6
TG5OeVl5QXJQU0JqYUhWdWEzTTdYRzRnSUNBZ2ZTeGNiaUFnSUNCd2NtVndaVzVrT2lCbWRXNWpk
R2x2YmloamFIVnVhM01wSUh0Y2JpQWdJQ0FnSUdsbUlDaHBjMEZ5Y21GNUtHTm9kVzVyY3lrcElI
dGNiaUFnSUNBZ0lDQWdZMmgxYm10eklEMGdZMmgxYm10ekxtcHZhVzRvSnljcE8xeHVJQ0FnSUNB
Z2ZWeHVJQ0FnSUNBZ2RHaHBjeTV6Y21NZ1BTQmphSFZ1YTNNZ0t5QjBhR2x6TG5OeVl6dGNiaUFn
SUNCOUxGeHVJQ0FnSUhSdlUzUnlhVzVuVjJsMGFGTnZkWEpqWlUxaGNEb2dablZ1WTNScGIyNG9L
U0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdlMk52WkdVNklIUm9hWE11ZEc5VGRISnBibWNvS1gwN1hH
NGdJQ0FnZlN4Y2JpQWdJQ0IwYjFOMGNtbHVaem9nWm5WdVkzUnBiMjRvS1NCN1hHNGdJQ0FnSUNC
eVpYUjFjbTRnZEdocGN5NXpjbU03WEc0Z0lDQWdmVnh1SUNCOU8xeHVmVnh1WEc1Y2JtWjFibU4w
YVc5dUlHTmhjM1JEYUhWdWF5aGphSFZ1YXl3Z1kyOWtaVWRsYml3Z2JHOWpLU0I3WEc0Z0lHbG1J
Q2hwYzBGeWNtRjVLR05vZFc1cktTa2dlMXh1SUNBZ0lHeGxkQ0J5WlhRZ1BTQmJYVHRjYmx4dUlD
QWdJR1p2Y2lBb2JHVjBJR2tnUFNBd0xDQnNaVzRnUFNCamFIVnVheTVzWlc1bmRHZzdJR2tnUENC
c1pXNDdJR2tyS3lrZ2UxeHVJQ0FnSUNBZ2NtVjBMbkIxYzJnb1kyOWtaVWRsYmk1M2NtRndLR05v
ZFc1clcybGRMQ0JzYjJNcEtUdGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJSEpsZER0Y2JpQWdm
U0JsYkhObElHbG1JQ2gwZVhCbGIyWWdZMmgxYm1zZ1BUMDlJQ2RpYjI5c1pXRnVKeUI4ZkNCMGVY
QmxiMllnWTJoMWJtc2dQVDA5SUNkdWRXMWlaWEluS1NCN1hHNGdJQ0FnTHk4Z1NHRnVaR3hsSUhC
eWFXMXBkR2wyWlhNZ2RHaGhkQ0IwYUdVZ1UyOTFjbU5sVG05a1pTQjNhV3hzSUhSb2NtOTNJSFZ3
SUc5dVhHNGdJQ0FnY21WMGRYSnVJR05vZFc1cklDc2dKeWM3WEc0Z0lIMWNiaUFnY21WMGRYSnVJ
R05vZFc1ck8xeHVmVnh1WEc1Y2JtWjFibU4wYVc5dUlFTnZaR1ZIWlc0b2MzSmpSbWxzWlNrZ2Ux
eHVJQ0IwYUdsekxuTnlZMFpwYkdVZ1BTQnpjbU5HYVd4bE8xeHVJQ0IwYUdsekxuTnZkWEpqWlNB
OUlGdGRPMXh1ZlZ4dVhHNURiMlJsUjJWdUxuQnliM1J2ZEhsd1pTQTlJSHRjYmlBZ2FYTkZiWEIw
ZVNncElIdGNiaUFnSUNCeVpYUjFjbTRnSVhSb2FYTXVjMjkxY21ObExteGxibWQwYUR0Y2JpQWdm
U3hjYmlBZ2NISmxjR1Z1WkRvZ1puVnVZM1JwYjI0b2MyOTFjbU5sTENCc2IyTXBJSHRjYmlBZ0lD
QjBhR2x6TG5OdmRYSmpaUzUxYm5Ob2FXWjBLSFJvYVhNdWQzSmhjQ2h6YjNWeVkyVXNJR3h2WXlr
cE8xeHVJQ0I5TEZ4dUlDQndkWE5vT2lCbWRXNWpkR2x2YmloemIzVnlZMlVzSUd4dll5a2dlMXh1
SUNBZ0lIUm9hWE11YzI5MWNtTmxMbkIxYzJnb2RHaHBjeTUzY21Gd0tITnZkWEpqWlN3Z2JHOWpL
U2s3WEc0Z0lIMHNYRzVjYmlBZ2JXVnlaMlU2SUdaMWJtTjBhVzl1S0NrZ2UxeHVJQ0FnSUd4bGRD
QnpiM1Z5WTJVZ1BTQjBhR2x6TG1WdGNIUjVLQ2s3WEc0Z0lDQWdkR2hwY3k1bFlXTm9LR1oxYm1O
MGFXOXVLR3hwYm1VcElIdGNiaUFnSUNBZ0lITnZkWEpqWlM1aFpHUW9XeWNnSUNjc0lHeHBibVVz
SUNkY1hHNG5YU2s3WEc0Z0lDQWdmU2s3WEc0Z0lDQWdjbVYwZFhKdUlITnZkWEpqWlR0Y2JpQWdm
U3hjYmx4dUlDQmxZV05vT2lCbWRXNWpkR2x2YmlocGRHVnlLU0I3WEc0Z0lDQWdabTl5SUNoc1pY
UWdhU0E5SURBc0lHeGxiaUE5SUhSb2FYTXVjMjkxY21ObExteGxibWQwYURzZ2FTQThJR3hsYmpz
Z2FTc3JLU0I3WEc0Z0lDQWdJQ0JwZEdWeUtIUm9hWE11YzI5MWNtTmxXMmxkS1R0Y2JpQWdJQ0I5
WEc0Z0lIMHNYRzVjYmlBZ1pXMXdkSGs2SUdaMWJtTjBhVzl1S0NrZ2UxeHVJQ0FnSUd4bGRDQnNi
Mk1nUFNCMGFHbHpMbU4xY25KbGJuUk1iMk5oZEdsdmJpQjhmQ0I3YzNSaGNuUTZJSHQ5ZlR0Y2Jp
QWdJQ0J5WlhSMWNtNGdibVYzSUZOdmRYSmpaVTV2WkdVb2JHOWpMbk4wWVhKMExteHBibVVzSUd4
dll5NXpkR0Z5ZEM1amIyeDFiVzRzSUhSb2FYTXVjM0pqUm1sc1pTazdYRzRnSUgwc1hHNGdJSGR5
WVhBNklHWjFibU4wYVc5dUtHTm9kVzVyTENCc2IyTWdQU0IwYUdsekxtTjFjbkpsYm5STWIyTmhk
R2x2YmlCOGZDQjdjM1JoY25RNklIdDlmU2tnZTF4dUlDQWdJR2xtSUNoamFIVnVheUJwYm5OMFlX
NWpaVzltSUZOdmRYSmpaVTV2WkdVcElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlCamFIVnVhenRjYmlB
Z0lDQjlYRzVjYmlBZ0lDQmphSFZ1YXlBOUlHTmhjM1JEYUhWdWF5aGphSFZ1YXl3Z2RHaHBjeXdn
Ykc5aktUdGNibHh1SUNBZ0lISmxkSFZ5YmlCdVpYY2dVMjkxY21ObFRtOWtaU2hzYjJNdWMzUmhj
blF1YkdsdVpTd2diRzlqTG5OMFlYSjBMbU52YkhWdGJpd2dkR2hwY3k1emNtTkdhV3hsTENCamFI
VnVheWs3WEc0Z0lIMHNYRzVjYmlBZ1puVnVZM1JwYjI1RFlXeHNPaUJtZFc1amRHbHZiaWhtYml3
Z2RIbHdaU3dnY0dGeVlXMXpLU0I3WEc0Z0lDQWdjR0Z5WVcxeklEMGdkR2hwY3k1blpXNWxjbUYw
WlV4cGMzUW9jR0Z5WVcxektUdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NTNjbUZ3S0Z0bWJpd2dk
SGx3WlNBL0lDY3VKeUFySUhSNWNHVWdLeUFuS0NjZ09pQW5LQ2NzSUhCaGNtRnRjeXdnSnlrblhT
azdYRzRnSUgwc1hHNWNiaUFnY1hWdmRHVmtVM1J5YVc1bk9pQm1kVzVqZEdsdmJpaHpkSElwSUh0
Y2JpQWdJQ0J5WlhSMWNtNGdKMXdpSnlBcklDaHpkSElnS3lBbkp5bGNiaUFnSUNBZ0lDNXlaWEJz
WVdObEtDOWNYRnhjTDJjc0lDZGNYRnhjWEZ4Y1hDY3BYRzRnSUNBZ0lDQXVjbVZ3YkdGalpTZ3ZY
Q0l2Wnl3Z0oxeGNYRnhjSWljcFhHNGdJQ0FnSUNBdWNtVndiR0ZqWlNndlhGeHVMMmNzSUNkY1hG
eGNiaWNwWEc0Z0lDQWdJQ0F1Y21Wd2JHRmpaU2d2WEZ4eUwyY3NJQ2RjWEZ4Y2NpY3BYRzRnSUNB
Z0lDQXVjbVZ3YkdGalpTZ3ZYRngxTWpBeU9DOW5MQ0FuWEZ4Y1hIVXlNREk0SnlrZ0lDQXZMeUJR
WlhJZ1JXTnRZUzB5TmpJZ055NHpJQ3NnTnk0NExqUmNiaUFnSUNBZ0lDNXlaWEJzWVdObEtDOWNY
SFV5TURJNUwyY3NJQ2RjWEZ4Y2RUSXdNamtuS1NBcklDZGNJaWM3WEc0Z0lIMHNYRzVjYmlBZ2Iy
SnFaV04wVEdsMFpYSmhiRG9nWm5WdVkzUnBiMjRvYjJKcUtTQjdYRzRnSUNBZ2JHVjBJSEJoYVhK
eklEMGdXMTA3WEc1Y2JpQWdJQ0JtYjNJZ0tHeGxkQ0JyWlhrZ2FXNGdiMkpxS1NCN1hHNGdJQ0Fn
SUNCcFppQW9iMkpxTG1oaGMwOTNibEJ5YjNCbGNuUjVLR3RsZVNrcElIdGNiaUFnSUNBZ0lDQWdi
R1YwSUhaaGJIVmxJRDBnWTJGemRFTm9kVzVyS0c5aWFsdHJaWGxkTENCMGFHbHpLVHRjYmlBZ0lD
QWdJQ0FnYVdZZ0tIWmhiSFZsSUNFOVBTQW5kVzVrWldacGJtVmtKeWtnZTF4dUlDQWdJQ0FnSUNB
Z0lIQmhhWEp6TG5CMWMyZ29XM1JvYVhNdWNYVnZkR1ZrVTNSeWFXNW5LR3RsZVNrc0lDYzZKeXdn
ZG1Gc2RXVmRLVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmx4dUlDQWdJ
R3hsZENCeVpYUWdQU0IwYUdsekxtZGxibVZ5WVhSbFRHbHpkQ2h3WVdseWN5azdYRzRnSUNBZ2Nt
VjBMbkJ5WlhCbGJtUW9KM3NuS1R0Y2JpQWdJQ0J5WlhRdVlXUmtLQ2Q5SnlrN1hHNGdJQ0FnY21W
MGRYSnVJSEpsZER0Y2JpQWdmU3hjYmx4dVhHNGdJR2RsYm1WeVlYUmxUR2x6ZERvZ1puVnVZM1Jw
YjI0b1pXNTBjbWxsY3lrZ2UxeHVJQ0FnSUd4bGRDQnlaWFFnUFNCMGFHbHpMbVZ0Y0hSNUtDazdY
RzVjYmlBZ0lDQm1iM0lnS0d4bGRDQnBJRDBnTUN3Z2JHVnVJRDBnWlc1MGNtbGxjeTVzWlc1bmRH
ZzdJR2tnUENCc1pXNDdJR2tyS3lrZ2UxeHVJQ0FnSUNBZ2FXWWdLR2twSUh0Y2JpQWdJQ0FnSUNB
Z2NtVjBMbUZrWkNnbkxDY3BPMXh1SUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0J5WlhRdVlXUmtLR05o
YzNSRGFIVnVheWhsYm5SeWFXVnpXMmxkTENCMGFHbHpLU2s3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdj
bVYwZFhKdUlISmxkRHRjYmlBZ2ZTeGNibHh1SUNCblpXNWxjbUYwWlVGeWNtRjVPaUJtZFc1amRH
bHZiaWhsYm5SeWFXVnpLU0I3WEc0Z0lDQWdiR1YwSUhKbGRDQTlJSFJvYVhNdVoyVnVaWEpoZEdW
TWFYTjBLR1Z1ZEhKcFpYTXBPMXh1SUNBZ0lISmxkQzV3Y21Wd1pXNWtLQ2RiSnlrN1hHNGdJQ0Fn
Y21WMExtRmtaQ2duWFNjcE8xeHVYRzRnSUNBZ2NtVjBkWEp1SUhKbGREdGNiaUFnZlZ4dWZUdGNi
bHh1Wlhod2IzSjBJR1JsWm1GMWJIUWdRMjlrWlVkbGJqdGNibHh1SWwxOQpkaWZmIC0tZ2l0IGEv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvY2pzL2hhbmRs
ZWJhcnMvY29tcGlsZXIvY29tcGlsZXIuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1
bGVzL2hhbmRsZWJhcnMvZGlzdC9janMvaGFuZGxlYmFycy9jb21waWxlci9jb21waWxlci5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42NWI0NTg1NWE2YjE3ZGJmODZiNDNlNWNhNjE0MmE2YzE2NDE5NzljCi0tLSAv
ZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJz
L2Rpc3QvY2pzL2hhbmRsZWJhcnMvY29tcGlsZXIvY29tcGlsZXIuanMKQEAgLTAsMCArMSw1NzIg
QEAKKy8qIGVzbGludC1kaXNhYmxlIG5ldy1jYXAgKi8KKworJ3VzZSBzdHJpY3QnOworCitleHBv
cnRzLl9fZXNNb2R1bGUgPSB0cnVlOworZXhwb3J0cy5Db21waWxlciA9IENvbXBpbGVyOworZXhw
b3J0cy5wcmVjb21waWxlID0gcHJlY29tcGlsZTsKK2V4cG9ydHMuY29tcGlsZSA9IGNvbXBpbGU7
CisvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dAorCitmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZh
dWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVs
dCc6IG9iaiB9OyB9CisKK3ZhciBfZXhjZXB0aW9uID0gcmVxdWlyZSgnLi4vZXhjZXB0aW9uJyk7
CisKK3ZhciBfZXhjZXB0aW9uMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2V4Y2VwdGlvbik7
CisKK3ZhciBfdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpOworCit2YXIgX2FzdCA9IHJlcXVp
cmUoJy4vYXN0Jyk7CisKK3ZhciBfYXN0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2FzdCk7
CisKK3ZhciBzbGljZSA9IFtdLnNsaWNlOworCitmdW5jdGlvbiBDb21waWxlcigpIHt9CisKKy8v
IHRoZSBmb3VuZEhlbHBlciByZWdpc3RlciB3aWxsIGRpc2FtYmlndWF0ZSBoZWxwZXIgbG9va3Vw
IGZyb20gZmluZGluZyBhCisvLyBmdW5jdGlvbiBpbiBhIGNvbnRleHQuIFRoaXMgaXMgbmVjZXNz
YXJ5IGZvciBtdXN0YWNoZSBjb21wYXRpYmlsaXR5LCB3aGljaAorLy8gcmVxdWlyZXMgdGhhdCBj
b250ZXh0IGZ1bmN0aW9ucyBpbiBibG9ja3MgYXJlIGV2YWx1YXRlZCBieSBibG9ja0hlbHBlck1p
c3NpbmcsCisvLyBhbmQgdGhlbiBwcm9jZWVkIGFzIGlmIHRoZSByZXN1bHRpbmcgdmFsdWUgd2Fz
IHByb3ZpZGVkIHRvIGJsb2NrSGVscGVyTWlzc2luZy4KKworQ29tcGlsZXIucHJvdG90eXBlID0g
eworICBjb21waWxlcjogQ29tcGlsZXIsCisKKyAgZXF1YWxzOiBmdW5jdGlvbiBlcXVhbHMob3Ro
ZXIpIHsKKyAgICB2YXIgbGVuID0gdGhpcy5vcGNvZGVzLmxlbmd0aDsKKyAgICBpZiAob3RoZXIu
b3Bjb2Rlcy5sZW5ndGggIT09IGxlbikgeworICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwor
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgIHZhciBvcGNvZGUgPSB0
aGlzLm9wY29kZXNbaV0sCisgICAgICAgICAgb3RoZXJPcGNvZGUgPSBvdGhlci5vcGNvZGVzW2ld
OworICAgICAgaWYgKG9wY29kZS5vcGNvZGUgIT09IG90aGVyT3Bjb2RlLm9wY29kZSB8fCAhYXJn
RXF1YWxzKG9wY29kZS5hcmdzLCBvdGhlck9wY29kZS5hcmdzKSkgeworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICB9CisgICAgfQorCisgICAgLy8gV2Uga25vdyB0aGF0IGxlbmd0aCBpcyB0
aGUgc2FtZSBiZXR3ZWVuIHRoZSB0d28gYXJyYXlzIGJlY2F1c2UgdGhleSBhcmUgZGlyZWN0bHkg
dGllZAorICAgIC8vIHRvIHRoZSBvcGNvZGUgYmVoYXZpb3IgYWJvdmUuCisgICAgbGVuID0gdGhp
cy5jaGlsZHJlbi5sZW5ndGg7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgewor
ICAgICAgaWYgKCF0aGlzLmNoaWxkcmVuW2ldLmVxdWFscyhvdGhlci5jaGlsZHJlbltpXSkpIHsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgfQorICAgIH0KKworICAgIHJldHVybiB0cnVl
OworICB9LAorCisgIGd1aWQ6IDAsCisKKyAgY29tcGlsZTogZnVuY3Rpb24gY29tcGlsZShwcm9n
cmFtLCBvcHRpb25zKSB7CisgICAgdGhpcy5zb3VyY2VOb2RlID0gW107CisgICAgdGhpcy5vcGNv
ZGVzID0gW107CisgICAgdGhpcy5jaGlsZHJlbiA9IFtdOworICAgIHRoaXMub3B0aW9ucyA9IG9w
dGlvbnM7CisgICAgdGhpcy5zdHJpbmdQYXJhbXMgPSBvcHRpb25zLnN0cmluZ1BhcmFtczsKKyAg
ICB0aGlzLnRyYWNrSWRzID0gb3B0aW9ucy50cmFja0lkczsKKworICAgIG9wdGlvbnMuYmxvY2tQ
YXJhbXMgPSBvcHRpb25zLmJsb2NrUGFyYW1zIHx8IFtdOworCisgICAgLy8gVGhlc2UgY2hhbmdl
cyB3aWxsIHByb3BhZ2F0ZSB0byB0aGUgb3RoZXIgY29tcGlsZXIgY29tcG9uZW50cworICAgIHZh
ciBrbm93bkhlbHBlcnMgPSBvcHRpb25zLmtub3duSGVscGVyczsKKyAgICBvcHRpb25zLmtub3du
SGVscGVycyA9IHsKKyAgICAgICdoZWxwZXJNaXNzaW5nJzogdHJ1ZSwKKyAgICAgICdibG9ja0hl
bHBlck1pc3NpbmcnOiB0cnVlLAorICAgICAgJ2VhY2gnOiB0cnVlLAorICAgICAgJ2lmJzogdHJ1
ZSwKKyAgICAgICd1bmxlc3MnOiB0cnVlLAorICAgICAgJ3dpdGgnOiB0cnVlLAorICAgICAgJ2xv
Zyc6IHRydWUsCisgICAgICAnbG9va3VwJzogdHJ1ZQorICAgIH07CisgICAgaWYgKGtub3duSGVs
cGVycykgeworICAgICAgZm9yICh2YXIgX25hbWUgaW4ga25vd25IZWxwZXJzKSB7CisgICAgICAg
IC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovCisgICAgICAgIGlmIChfbmFtZSBpbiBrbm93bkhl
bHBlcnMpIHsKKyAgICAgICAgICBvcHRpb25zLmtub3duSGVscGVyc1tfbmFtZV0gPSBrbm93bkhl
bHBlcnNbX25hbWVdOworICAgICAgICB9CisgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHRo
aXMuYWNjZXB0KHByb2dyYW0pOworICB9LAorCisgIGNvbXBpbGVQcm9ncmFtOiBmdW5jdGlvbiBj
b21waWxlUHJvZ3JhbShwcm9ncmFtKSB7CisgICAgdmFyIGNoaWxkQ29tcGlsZXIgPSBuZXcgdGhp
cy5jb21waWxlcigpLAorICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5ldy1jYXAKKyAg
ICByZXN1bHQgPSBjaGlsZENvbXBpbGVyLmNvbXBpbGUocHJvZ3JhbSwgdGhpcy5vcHRpb25zKSwK
KyAgICAgICAgZ3VpZCA9IHRoaXMuZ3VpZCsrOworCisgICAgdGhpcy51c2VQYXJ0aWFsID0gdGhp
cy51c2VQYXJ0aWFsIHx8IHJlc3VsdC51c2VQYXJ0aWFsOworCisgICAgdGhpcy5jaGlsZHJlbltn
dWlkXSA9IHJlc3VsdDsKKyAgICB0aGlzLnVzZURlcHRocyA9IHRoaXMudXNlRGVwdGhzIHx8IHJl
c3VsdC51c2VEZXB0aHM7CisKKyAgICByZXR1cm4gZ3VpZDsKKyAgfSwKKworICBhY2NlcHQ6IGZ1
bmN0aW9uIGFjY2VwdChub2RlKSB7CisgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IFNhbml0
eSBjb2RlICovCisgICAgaWYgKCF0aGlzW25vZGUudHlwZV0pIHsKKyAgICAgIHRocm93IG5ldyBf
ZXhjZXB0aW9uMlsnZGVmYXVsdCddKCdVbmtub3duIHR5cGU6ICcgKyBub2RlLnR5cGUsIG5vZGUp
OworICAgIH0KKworICAgIHRoaXMuc291cmNlTm9kZS51bnNoaWZ0KG5vZGUpOworICAgIHZhciBy
ZXQgPSB0aGlzW25vZGUudHlwZV0obm9kZSk7CisgICAgdGhpcy5zb3VyY2VOb2RlLnNoaWZ0KCk7
CisgICAgcmV0dXJuIHJldDsKKyAgfSwKKworICBQcm9ncmFtOiBmdW5jdGlvbiBQcm9ncmFtKHBy
b2dyYW0pIHsKKyAgICB0aGlzLm9wdGlvbnMuYmxvY2tQYXJhbXMudW5zaGlmdChwcm9ncmFtLmJs
b2NrUGFyYW1zKTsKKworICAgIHZhciBib2R5ID0gcHJvZ3JhbS5ib2R5LAorICAgICAgICBib2R5
TGVuZ3RoID0gYm9keS5sZW5ndGg7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBib2R5TGVuZ3Ro
OyBpKyspIHsKKyAgICAgIHRoaXMuYWNjZXB0KGJvZHlbaV0pOworICAgIH0KKworICAgIHRoaXMu
b3B0aW9ucy5ibG9ja1BhcmFtcy5zaGlmdCgpOworCisgICAgdGhpcy5pc1NpbXBsZSA9IGJvZHlM
ZW5ndGggPT09IDE7CisgICAgdGhpcy5ibG9ja1BhcmFtcyA9IHByb2dyYW0uYmxvY2tQYXJhbXMg
PyBwcm9ncmFtLmJsb2NrUGFyYW1zLmxlbmd0aCA6IDA7CisKKyAgICByZXR1cm4gdGhpczsKKyAg
fSwKKworICBCbG9ja1N0YXRlbWVudDogZnVuY3Rpb24gQmxvY2tTdGF0ZW1lbnQoYmxvY2spIHsK
KyAgICB0cmFuc2Zvcm1MaXRlcmFsVG9QYXRoKGJsb2NrKTsKKworICAgIHZhciBwcm9ncmFtID0g
YmxvY2sucHJvZ3JhbSwKKyAgICAgICAgaW52ZXJzZSA9IGJsb2NrLmludmVyc2U7CisKKyAgICBw
cm9ncmFtID0gcHJvZ3JhbSAmJiB0aGlzLmNvbXBpbGVQcm9ncmFtKHByb2dyYW0pOworICAgIGlu
dmVyc2UgPSBpbnZlcnNlICYmIHRoaXMuY29tcGlsZVByb2dyYW0oaW52ZXJzZSk7CisKKyAgICB2
YXIgdHlwZSA9IHRoaXMuY2xhc3NpZnlTZXhwcihibG9jayk7CisKKyAgICBpZiAodHlwZSA9PT0g
J2hlbHBlcicpIHsKKyAgICAgIHRoaXMuaGVscGVyU2V4cHIoYmxvY2ssIHByb2dyYW0sIGludmVy
c2UpOworICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3NpbXBsZScpIHsKKyAgICAgIHRoaXMuc2lt
cGxlU2V4cHIoYmxvY2spOworCisgICAgICAvLyBub3cgdGhhdCB0aGUgc2ltcGxlIG11c3RhY2hl
IGlzIHJlc29sdmVkLCB3ZSBuZWVkIHRvCisgICAgICAvLyBldmFsdWF0ZSBpdCBieSBleGVjdXRp
bmcgYGJsb2NrSGVscGVyTWlzc2luZ2AKKyAgICAgIHRoaXMub3Bjb2RlKCdwdXNoUHJvZ3JhbScs
IHByb2dyYW0pOworICAgICAgdGhpcy5vcGNvZGUoJ3B1c2hQcm9ncmFtJywgaW52ZXJzZSk7Cisg
ICAgICB0aGlzLm9wY29kZSgnZW1wdHlIYXNoJyk7CisgICAgICB0aGlzLm9wY29kZSgnYmxvY2tW
YWx1ZScsIGJsb2NrLnBhdGgub3JpZ2luYWwpOworICAgIH0gZWxzZSB7CisgICAgICB0aGlzLmFt
YmlndW91c1NleHByKGJsb2NrLCBwcm9ncmFtLCBpbnZlcnNlKTsKKworICAgICAgLy8gbm93IHRo
YXQgdGhlIHNpbXBsZSBtdXN0YWNoZSBpcyByZXNvbHZlZCwgd2UgbmVlZCB0bworICAgICAgLy8g
ZXZhbHVhdGUgaXQgYnkgZXhlY3V0aW5nIGBibG9ja0hlbHBlck1pc3NpbmdgCisgICAgICB0aGlz
Lm9wY29kZSgncHVzaFByb2dyYW0nLCBwcm9ncmFtKTsKKyAgICAgIHRoaXMub3Bjb2RlKCdwdXNo
UHJvZ3JhbScsIGludmVyc2UpOworICAgICAgdGhpcy5vcGNvZGUoJ2VtcHR5SGFzaCcpOworICAg
ICAgdGhpcy5vcGNvZGUoJ2FtYmlndW91c0Jsb2NrVmFsdWUnKTsKKyAgICB9CisKKyAgICB0aGlz
Lm9wY29kZSgnYXBwZW5kJyk7CisgIH0sCisKKyAgRGVjb3JhdG9yQmxvY2s6IGZ1bmN0aW9uIERl
Y29yYXRvckJsb2NrKGRlY29yYXRvcikgeworICAgIHZhciBwcm9ncmFtID0gZGVjb3JhdG9yLnBy
b2dyYW0gJiYgdGhpcy5jb21waWxlUHJvZ3JhbShkZWNvcmF0b3IucHJvZ3JhbSk7CisgICAgdmFy
IHBhcmFtcyA9IHRoaXMuc2V0dXBGdWxsTXVzdGFjaGVQYXJhbXMoZGVjb3JhdG9yLCBwcm9ncmFt
LCB1bmRlZmluZWQpLAorICAgICAgICBwYXRoID0gZGVjb3JhdG9yLnBhdGg7CisKKyAgICB0aGlz
LnVzZURlY29yYXRvcnMgPSB0cnVlOworICAgIHRoaXMub3Bjb2RlKCdyZWdpc3RlckRlY29yYXRv
cicsIHBhcmFtcy5sZW5ndGgsIHBhdGgub3JpZ2luYWwpOworICB9LAorCisgIFBhcnRpYWxTdGF0
ZW1lbnQ6IGZ1bmN0aW9uIFBhcnRpYWxTdGF0ZW1lbnQocGFydGlhbCkgeworICAgIHRoaXMudXNl
UGFydGlhbCA9IHRydWU7CisKKyAgICB2YXIgcHJvZ3JhbSA9IHBhcnRpYWwucHJvZ3JhbTsKKyAg
ICBpZiAocHJvZ3JhbSkgeworICAgICAgcHJvZ3JhbSA9IHRoaXMuY29tcGlsZVByb2dyYW0ocGFy
dGlhbC5wcm9ncmFtKTsKKyAgICB9CisKKyAgICB2YXIgcGFyYW1zID0gcGFydGlhbC5wYXJhbXM7
CisgICAgaWYgKHBhcmFtcy5sZW5ndGggPiAxKSB7CisgICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlv
bjJbJ2RlZmF1bHQnXSgnVW5zdXBwb3J0ZWQgbnVtYmVyIG9mIHBhcnRpYWwgYXJndW1lbnRzOiAn
ICsgcGFyYW1zLmxlbmd0aCwgcGFydGlhbCk7CisgICAgfSBlbHNlIGlmICghcGFyYW1zLmxlbmd0
aCkgeworICAgICAgaWYgKHRoaXMub3B0aW9ucy5leHBsaWNpdFBhcnRpYWxDb250ZXh0KSB7Cisg
ICAgICAgIHRoaXMub3Bjb2RlKCdwdXNoTGl0ZXJhbCcsICd1bmRlZmluZWQnKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHBhcmFtcy5wdXNoKHsgdHlwZTogJ1BhdGhFeHByZXNzaW9uJywgcGFy
dHM6IFtdLCBkZXB0aDogMCB9KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgcGFydGlhbE5h
bWUgPSBwYXJ0aWFsLm5hbWUub3JpZ2luYWwsCisgICAgICAgIGlzRHluYW1pYyA9IHBhcnRpYWwu
bmFtZS50eXBlID09PSAnU3ViRXhwcmVzc2lvbic7CisgICAgaWYgKGlzRHluYW1pYykgeworICAg
ICAgdGhpcy5hY2NlcHQocGFydGlhbC5uYW1lKTsKKyAgICB9CisKKyAgICB0aGlzLnNldHVwRnVs
bE11c3RhY2hlUGFyYW1zKHBhcnRpYWwsIHByb2dyYW0sIHVuZGVmaW5lZCwgdHJ1ZSk7CisKKyAg
ICB2YXIgaW5kZW50ID0gcGFydGlhbC5pbmRlbnQgfHwgJyc7CisgICAgaWYgKHRoaXMub3B0aW9u
cy5wcmV2ZW50SW5kZW50ICYmIGluZGVudCkgeworICAgICAgdGhpcy5vcGNvZGUoJ2FwcGVuZENv
bnRlbnQnLCBpbmRlbnQpOworICAgICAgaW5kZW50ID0gJyc7CisgICAgfQorCisgICAgdGhpcy5v
cGNvZGUoJ2ludm9rZVBhcnRpYWwnLCBpc0R5bmFtaWMsIHBhcnRpYWxOYW1lLCBpbmRlbnQpOwor
ICAgIHRoaXMub3Bjb2RlKCdhcHBlbmQnKTsKKyAgfSwKKyAgUGFydGlhbEJsb2NrU3RhdGVtZW50
OiBmdW5jdGlvbiBQYXJ0aWFsQmxvY2tTdGF0ZW1lbnQocGFydGlhbEJsb2NrKSB7CisgICAgdGhp
cy5QYXJ0aWFsU3RhdGVtZW50KHBhcnRpYWxCbG9jayk7CisgIH0sCisKKyAgTXVzdGFjaGVTdGF0
ZW1lbnQ6IGZ1bmN0aW9uIE11c3RhY2hlU3RhdGVtZW50KG11c3RhY2hlKSB7CisgICAgdGhpcy5T
dWJFeHByZXNzaW9uKG11c3RhY2hlKTsKKworICAgIGlmIChtdXN0YWNoZS5lc2NhcGVkICYmICF0
aGlzLm9wdGlvbnMubm9Fc2NhcGUpIHsKKyAgICAgIHRoaXMub3Bjb2RlKCdhcHBlbmRFc2NhcGVk
Jyk7CisgICAgfSBlbHNlIHsKKyAgICAgIHRoaXMub3Bjb2RlKCdhcHBlbmQnKTsKKyAgICB9Cisg
IH0sCisgIERlY29yYXRvcjogZnVuY3Rpb24gRGVjb3JhdG9yKGRlY29yYXRvcikgeworICAgIHRo
aXMuRGVjb3JhdG9yQmxvY2soZGVjb3JhdG9yKTsKKyAgfSwKKworICBDb250ZW50U3RhdGVtZW50
OiBmdW5jdGlvbiBDb250ZW50U3RhdGVtZW50KGNvbnRlbnQpIHsKKyAgICBpZiAoY29udGVudC52
YWx1ZSkgeworICAgICAgdGhpcy5vcGNvZGUoJ2FwcGVuZENvbnRlbnQnLCBjb250ZW50LnZhbHVl
KTsKKyAgICB9CisgIH0sCisKKyAgQ29tbWVudFN0YXRlbWVudDogZnVuY3Rpb24gQ29tbWVudFN0
YXRlbWVudCgpIHt9LAorCisgIFN1YkV4cHJlc3Npb246IGZ1bmN0aW9uIFN1YkV4cHJlc3Npb24o
c2V4cHIpIHsKKyAgICB0cmFuc2Zvcm1MaXRlcmFsVG9QYXRoKHNleHByKTsKKyAgICB2YXIgdHlw
ZSA9IHRoaXMuY2xhc3NpZnlTZXhwcihzZXhwcik7CisKKyAgICBpZiAodHlwZSA9PT0gJ3NpbXBs
ZScpIHsKKyAgICAgIHRoaXMuc2ltcGxlU2V4cHIoc2V4cHIpOworICAgIH0gZWxzZSBpZiAodHlw
ZSA9PT0gJ2hlbHBlcicpIHsKKyAgICAgIHRoaXMuaGVscGVyU2V4cHIoc2V4cHIpOworICAgIH0g
ZWxzZSB7CisgICAgICB0aGlzLmFtYmlndW91c1NleHByKHNleHByKTsKKyAgICB9CisgIH0sCisg
IGFtYmlndW91c1NleHByOiBmdW5jdGlvbiBhbWJpZ3VvdXNTZXhwcihzZXhwciwgcHJvZ3JhbSwg
aW52ZXJzZSkgeworICAgIHZhciBwYXRoID0gc2V4cHIucGF0aCwKKyAgICAgICAgbmFtZSA9IHBh
dGgucGFydHNbMF0sCisgICAgICAgIGlzQmxvY2sgPSBwcm9ncmFtICE9IG51bGwgfHwgaW52ZXJz
ZSAhPSBudWxsOworCisgICAgdGhpcy5vcGNvZGUoJ2dldENvbnRleHQnLCBwYXRoLmRlcHRoKTsK
KworICAgIHRoaXMub3Bjb2RlKCdwdXNoUHJvZ3JhbScsIHByb2dyYW0pOworICAgIHRoaXMub3Bj
b2RlKCdwdXNoUHJvZ3JhbScsIGludmVyc2UpOworCisgICAgcGF0aC5zdHJpY3QgPSB0cnVlOwor
ICAgIHRoaXMuYWNjZXB0KHBhdGgpOworCisgICAgdGhpcy5vcGNvZGUoJ2ludm9rZUFtYmlndW91
cycsIG5hbWUsIGlzQmxvY2spOworICB9LAorCisgIHNpbXBsZVNleHByOiBmdW5jdGlvbiBzaW1w
bGVTZXhwcihzZXhwcikgeworICAgIHZhciBwYXRoID0gc2V4cHIucGF0aDsKKyAgICBwYXRoLnN0
cmljdCA9IHRydWU7CisgICAgdGhpcy5hY2NlcHQocGF0aCk7CisgICAgdGhpcy5vcGNvZGUoJ3Jl
c29sdmVQb3NzaWJsZUxhbWJkYScpOworICB9LAorCisgIGhlbHBlclNleHByOiBmdW5jdGlvbiBo
ZWxwZXJTZXhwcihzZXhwciwgcHJvZ3JhbSwgaW52ZXJzZSkgeworICAgIHZhciBwYXJhbXMgPSB0
aGlzLnNldHVwRnVsbE11c3RhY2hlUGFyYW1zKHNleHByLCBwcm9ncmFtLCBpbnZlcnNlKSwKKyAg
ICAgICAgcGF0aCA9IHNleHByLnBhdGgsCisgICAgICAgIG5hbWUgPSBwYXRoLnBhcnRzWzBdOwor
CisgICAgaWYgKHRoaXMub3B0aW9ucy5rbm93bkhlbHBlcnNbbmFtZV0pIHsKKyAgICAgIHRoaXMu
b3Bjb2RlKCdpbnZva2VLbm93bkhlbHBlcicsIHBhcmFtcy5sZW5ndGgsIG5hbWUpOworICAgIH0g
ZWxzZSBpZiAodGhpcy5vcHRpb25zLmtub3duSGVscGVyc09ubHkpIHsKKyAgICAgIHRocm93IG5l
dyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCdZb3Ugc3BlY2lmaWVkIGtub3duSGVscGVyc09ubHks
IGJ1dCB1c2VkIHRoZSB1bmtub3duIGhlbHBlciAnICsgbmFtZSwgc2V4cHIpOworICAgIH0gZWxz
ZSB7CisgICAgICBwYXRoLnN0cmljdCA9IHRydWU7CisgICAgICBwYXRoLmZhbHN5ID0gdHJ1ZTsK
KworICAgICAgdGhpcy5hY2NlcHQocGF0aCk7CisgICAgICB0aGlzLm9wY29kZSgnaW52b2tlSGVs
cGVyJywgcGFyYW1zLmxlbmd0aCwgcGF0aC5vcmlnaW5hbCwgX2FzdDJbJ2RlZmF1bHQnXS5oZWxw
ZXJzLnNpbXBsZUlkKHBhdGgpKTsKKyAgICB9CisgIH0sCisKKyAgUGF0aEV4cHJlc3Npb246IGZ1
bmN0aW9uIFBhdGhFeHByZXNzaW9uKHBhdGgpIHsKKyAgICB0aGlzLmFkZERlcHRoKHBhdGguZGVw
dGgpOworICAgIHRoaXMub3Bjb2RlKCdnZXRDb250ZXh0JywgcGF0aC5kZXB0aCk7CisKKyAgICB2
YXIgbmFtZSA9IHBhdGgucGFydHNbMF0sCisgICAgICAgIHNjb3BlZCA9IF9hc3QyWydkZWZhdWx0
J10uaGVscGVycy5zY29wZWRJZChwYXRoKSwKKyAgICAgICAgYmxvY2tQYXJhbUlkID0gIXBhdGgu
ZGVwdGggJiYgIXNjb3BlZCAmJiB0aGlzLmJsb2NrUGFyYW1JbmRleChuYW1lKTsKKworICAgIGlm
IChibG9ja1BhcmFtSWQpIHsKKyAgICAgIHRoaXMub3Bjb2RlKCdsb29rdXBCbG9ja1BhcmFtJywg
YmxvY2tQYXJhbUlkLCBwYXRoLnBhcnRzKTsKKyAgICB9IGVsc2UgaWYgKCFuYW1lKSB7CisgICAg
ICAvLyBDb250ZXh0IHJlZmVyZW5jZSwgaS5lLiBge3tmb28gLn19YCBvciBge3tmb28gLi59fWAK
KyAgICAgIHRoaXMub3Bjb2RlKCdwdXNoQ29udGV4dCcpOworICAgIH0gZWxzZSBpZiAocGF0aC5k
YXRhKSB7CisgICAgICB0aGlzLm9wdGlvbnMuZGF0YSA9IHRydWU7CisgICAgICB0aGlzLm9wY29k
ZSgnbG9va3VwRGF0YScsIHBhdGguZGVwdGgsIHBhdGgucGFydHMsIHBhdGguc3RyaWN0KTsKKyAg
ICB9IGVsc2UgeworICAgICAgdGhpcy5vcGNvZGUoJ2xvb2t1cE9uQ29udGV4dCcsIHBhdGgucGFy
dHMsIHBhdGguZmFsc3ksIHBhdGguc3RyaWN0LCBzY29wZWQpOworICAgIH0KKyAgfSwKKworICBT
dHJpbmdMaXRlcmFsOiBmdW5jdGlvbiBTdHJpbmdMaXRlcmFsKHN0cmluZykgeworICAgIHRoaXMu
b3Bjb2RlKCdwdXNoU3RyaW5nJywgc3RyaW5nLnZhbHVlKTsKKyAgfSwKKworICBOdW1iZXJMaXRl
cmFsOiBmdW5jdGlvbiBOdW1iZXJMaXRlcmFsKG51bWJlcikgeworICAgIHRoaXMub3Bjb2RlKCdw
dXNoTGl0ZXJhbCcsIG51bWJlci52YWx1ZSk7CisgIH0sCisKKyAgQm9vbGVhbkxpdGVyYWw6IGZ1
bmN0aW9uIEJvb2xlYW5MaXRlcmFsKGJvb2wpIHsKKyAgICB0aGlzLm9wY29kZSgncHVzaExpdGVy
YWwnLCBib29sLnZhbHVlKTsKKyAgfSwKKworICBVbmRlZmluZWRMaXRlcmFsOiBmdW5jdGlvbiBV
bmRlZmluZWRMaXRlcmFsKCkgeworICAgIHRoaXMub3Bjb2RlKCdwdXNoTGl0ZXJhbCcsICd1bmRl
ZmluZWQnKTsKKyAgfSwKKworICBOdWxsTGl0ZXJhbDogZnVuY3Rpb24gTnVsbExpdGVyYWwoKSB7
CisgICAgdGhpcy5vcGNvZGUoJ3B1c2hMaXRlcmFsJywgJ251bGwnKTsKKyAgfSwKKworICBIYXNo
OiBmdW5jdGlvbiBIYXNoKGhhc2gpIHsKKyAgICB2YXIgcGFpcnMgPSBoYXNoLnBhaXJzLAorICAg
ICAgICBpID0gMCwKKyAgICAgICAgbCA9IHBhaXJzLmxlbmd0aDsKKworICAgIHRoaXMub3Bjb2Rl
KCdwdXNoSGFzaCcpOworCisgICAgZm9yICg7IGkgPCBsOyBpKyspIHsKKyAgICAgIHRoaXMucHVz
aFBhcmFtKHBhaXJzW2ldLnZhbHVlKTsKKyAgICB9CisgICAgd2hpbGUgKGktLSkgeworICAgICAg
dGhpcy5vcGNvZGUoJ2Fzc2lnblRvSGFzaCcsIHBhaXJzW2ldLmtleSk7CisgICAgfQorICAgIHRo
aXMub3Bjb2RlKCdwb3BIYXNoJyk7CisgIH0sCisKKyAgLy8gSEVMUEVSUworICBvcGNvZGU6IGZ1
bmN0aW9uIG9wY29kZShuYW1lKSB7CisgICAgdGhpcy5vcGNvZGVzLnB1c2goeyBvcGNvZGU6IG5h
bWUsIGFyZ3M6IHNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKSwgbG9jOiB0aGlzLnNvdXJjZU5vZGVb
MF0ubG9jIH0pOworICB9LAorCisgIGFkZERlcHRoOiBmdW5jdGlvbiBhZGREZXB0aChkZXB0aCkg
eworICAgIGlmICghZGVwdGgpIHsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB0aGlzLnVz
ZURlcHRocyA9IHRydWU7CisgIH0sCisKKyAgY2xhc3NpZnlTZXhwcjogZnVuY3Rpb24gY2xhc3Np
ZnlTZXhwcihzZXhwcikgeworICAgIHZhciBpc1NpbXBsZSA9IF9hc3QyWydkZWZhdWx0J10uaGVs
cGVycy5zaW1wbGVJZChzZXhwci5wYXRoKTsKKworICAgIHZhciBpc0Jsb2NrUGFyYW0gPSBpc1Np
bXBsZSAmJiAhIXRoaXMuYmxvY2tQYXJhbUluZGV4KHNleHByLnBhdGgucGFydHNbMF0pOworCisg
ICAgLy8gYSBtdXN0YWNoZSBpcyBhbiBlbGlnaWJsZSBoZWxwZXIgaWY6CisgICAgLy8gKiBpdHMg
aWQgaXMgc2ltcGxlIChhIHNpbmdsZSBwYXJ0LCBub3QgYHRoaXNgIG9yIGAuLmApCisgICAgdmFy
IGlzSGVscGVyID0gIWlzQmxvY2tQYXJhbSAmJiBfYXN0MlsnZGVmYXVsdCddLmhlbHBlcnMuaGVs
cGVyRXhwcmVzc2lvbihzZXhwcik7CisKKyAgICAvLyBpZiBhIG11c3RhY2hlIGlzIGFuIGVsaWdp
YmxlIGhlbHBlciBidXQgbm90IGEgZGVmaW5pdGUKKyAgICAvLyBoZWxwZXIsIGl0IGlzIGFtYmln
dW91cywgYW5kIHdpbGwgYmUgcmVzb2x2ZWQgaW4gYSBsYXRlcgorICAgIC8vIHBhc3Mgb3IgYXQg
cnVudGltZS4KKyAgICB2YXIgaXNFbGlnaWJsZSA9ICFpc0Jsb2NrUGFyYW0gJiYgKGlzSGVscGVy
IHx8IGlzU2ltcGxlKTsKKworICAgIC8vIGlmIGFtYmlndW91cywgd2UgY2FuIHBvc3NpYmx5IHJl
c29sdmUgdGhlIGFtYmlndWl0eSBub3cKKyAgICAvLyBBbiBlbGlnaWJsZSBoZWxwZXIgaXMgb25l
IHRoYXQgZG9lcyBub3QgaGF2ZSBhIGNvbXBsZXggcGF0aCwgaS5lLiBgdGhpcy5mb29gLCBgLi4v
Zm9vYCBldGMuCisgICAgaWYgKGlzRWxpZ2libGUgJiYgIWlzSGVscGVyKSB7CisgICAgICB2YXIg
X25hbWUyID0gc2V4cHIucGF0aC5wYXJ0c1swXSwKKyAgICAgICAgICBvcHRpb25zID0gdGhpcy5v
cHRpb25zOworCisgICAgICBpZiAob3B0aW9ucy5rbm93bkhlbHBlcnNbX25hbWUyXSkgeworICAg
ICAgICBpc0hlbHBlciA9IHRydWU7CisgICAgICB9IGVsc2UgaWYgKG9wdGlvbnMua25vd25IZWxw
ZXJzT25seSkgeworICAgICAgICBpc0VsaWdpYmxlID0gZmFsc2U7CisgICAgICB9CisgICAgfQor
CisgICAgaWYgKGlzSGVscGVyKSB7CisgICAgICByZXR1cm4gJ2hlbHBlcic7CisgICAgfSBlbHNl
IGlmIChpc0VsaWdpYmxlKSB7CisgICAgICByZXR1cm4gJ2FtYmlndW91cyc7CisgICAgfSBlbHNl
IHsKKyAgICAgIHJldHVybiAnc2ltcGxlJzsKKyAgICB9CisgIH0sCisKKyAgcHVzaFBhcmFtczog
ZnVuY3Rpb24gcHVzaFBhcmFtcyhwYXJhbXMpIHsKKyAgICBmb3IgKHZhciBpID0gMCwgbCA9IHBh
cmFtcy5sZW5ndGg7IGkgPCBsOyBpKyspIHsKKyAgICAgIHRoaXMucHVzaFBhcmFtKHBhcmFtc1tp
XSk7CisgICAgfQorICB9LAorCisgIHB1c2hQYXJhbTogZnVuY3Rpb24gcHVzaFBhcmFtKHZhbCkg
eworICAgIHZhciB2YWx1ZSA9IHZhbC52YWx1ZSAhPSBudWxsID8gdmFsLnZhbHVlIDogdmFsLm9y
aWdpbmFsIHx8ICcnOworCisgICAgaWYgKHRoaXMuc3RyaW5nUGFyYW1zKSB7CisgICAgICBpZiAo
dmFsdWUucmVwbGFjZSkgeworICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL14oXC4/XC5c
LykqL2csICcnKS5yZXBsYWNlKC9cLy9nLCAnLicpOworICAgICAgfQorCisgICAgICBpZiAodmFs
LmRlcHRoKSB7CisgICAgICAgIHRoaXMuYWRkRGVwdGgodmFsLmRlcHRoKTsKKyAgICAgIH0KKyAg
ICAgIHRoaXMub3Bjb2RlKCdnZXRDb250ZXh0JywgdmFsLmRlcHRoIHx8IDApOworICAgICAgdGhp
cy5vcGNvZGUoJ3B1c2hTdHJpbmdQYXJhbScsIHZhbHVlLCB2YWwudHlwZSk7CisKKyAgICAgIGlm
ICh2YWwudHlwZSA9PT0gJ1N1YkV4cHJlc3Npb24nKSB7CisgICAgICAgIC8vIFN1YkV4cHJlc3Np
b25zIGdldCBldmFsdWF0ZWQgYW5kIHBhc3NlZCBpbgorICAgICAgICAvLyBpbiBzdHJpbmcgcGFy
YW1zIG1vZGUuCisgICAgICAgIHRoaXMuYWNjZXB0KHZhbCk7CisgICAgICB9CisgICAgfSBlbHNl
IHsKKyAgICAgIGlmICh0aGlzLnRyYWNrSWRzKSB7CisgICAgICAgIHZhciBibG9ja1BhcmFtSW5k
ZXggPSB1bmRlZmluZWQ7CisgICAgICAgIGlmICh2YWwucGFydHMgJiYgIV9hc3QyWydkZWZhdWx0
J10uaGVscGVycy5zY29wZWRJZCh2YWwpICYmICF2YWwuZGVwdGgpIHsKKyAgICAgICAgICBibG9j
a1BhcmFtSW5kZXggPSB0aGlzLmJsb2NrUGFyYW1JbmRleCh2YWwucGFydHNbMF0pOworICAgICAg
ICB9CisgICAgICAgIGlmIChibG9ja1BhcmFtSW5kZXgpIHsKKyAgICAgICAgICB2YXIgYmxvY2tQ
YXJhbUNoaWxkID0gdmFsLnBhcnRzLnNsaWNlKDEpLmpvaW4oJy4nKTsKKyAgICAgICAgICB0aGlz
Lm9wY29kZSgncHVzaElkJywgJ0Jsb2NrUGFyYW0nLCBibG9ja1BhcmFtSW5kZXgsIGJsb2NrUGFy
YW1DaGlsZCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgdmFsdWUgPSB2YWwub3JpZ2lu
YWwgfHwgdmFsdWU7CisgICAgICAgICAgaWYgKHZhbHVlLnJlcGxhY2UpIHsKKyAgICAgICAgICAg
IHZhbHVlID0gdmFsdWUucmVwbGFjZSgvXnRoaXMoPzpcLnwkKS8sICcnKS5yZXBsYWNlKC9eXC5c
Ly8sICcnKS5yZXBsYWNlKC9eXC4kLywgJycpOworICAgICAgICAgIH0KKworICAgICAgICAgIHRo
aXMub3Bjb2RlKCdwdXNoSWQnLCB2YWwudHlwZSwgdmFsdWUpOworICAgICAgICB9CisgICAgICB9
CisgICAgICB0aGlzLmFjY2VwdCh2YWwpOworICAgIH0KKyAgfSwKKworICBzZXR1cEZ1bGxNdXN0
YWNoZVBhcmFtczogZnVuY3Rpb24gc2V0dXBGdWxsTXVzdGFjaGVQYXJhbXMoc2V4cHIsIHByb2dy
YW0sIGludmVyc2UsIG9taXRFbXB0eSkgeworICAgIHZhciBwYXJhbXMgPSBzZXhwci5wYXJhbXM7
CisgICAgdGhpcy5wdXNoUGFyYW1zKHBhcmFtcyk7CisKKyAgICB0aGlzLm9wY29kZSgncHVzaFBy
b2dyYW0nLCBwcm9ncmFtKTsKKyAgICB0aGlzLm9wY29kZSgncHVzaFByb2dyYW0nLCBpbnZlcnNl
KTsKKworICAgIGlmIChzZXhwci5oYXNoKSB7CisgICAgICB0aGlzLmFjY2VwdChzZXhwci5oYXNo
KTsKKyAgICB9IGVsc2UgeworICAgICAgdGhpcy5vcGNvZGUoJ2VtcHR5SGFzaCcsIG9taXRFbXB0
eSk7CisgICAgfQorCisgICAgcmV0dXJuIHBhcmFtczsKKyAgfSwKKworICBibG9ja1BhcmFtSW5k
ZXg6IGZ1bmN0aW9uIGJsb2NrUGFyYW1JbmRleChuYW1lKSB7CisgICAgZm9yICh2YXIgZGVwdGgg
PSAwLCBsZW4gPSB0aGlzLm9wdGlvbnMuYmxvY2tQYXJhbXMubGVuZ3RoOyBkZXB0aCA8IGxlbjsg
ZGVwdGgrKykgeworICAgICAgdmFyIGJsb2NrUGFyYW1zID0gdGhpcy5vcHRpb25zLmJsb2NrUGFy
YW1zW2RlcHRoXSwKKyAgICAgICAgICBwYXJhbSA9IGJsb2NrUGFyYW1zICYmIF91dGlscy5pbmRl
eE9mKGJsb2NrUGFyYW1zLCBuYW1lKTsKKyAgICAgIGlmIChibG9ja1BhcmFtcyAmJiBwYXJhbSA+
PSAwKSB7CisgICAgICAgIHJldHVybiBbZGVwdGgsIHBhcmFtXTsKKyAgICAgIH0KKyAgICB9Cisg
IH0KK307CisKK2Z1bmN0aW9uIHByZWNvbXBpbGUoaW5wdXQsIG9wdGlvbnMsIGVudikgeworICBp
ZiAoaW5wdXQgPT0gbnVsbCB8fCB0eXBlb2YgaW5wdXQgIT09ICdzdHJpbmcnICYmIGlucHV0LnR5
cGUgIT09ICdQcm9ncmFtJykgeworICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCdd
KCdZb3UgbXVzdCBwYXNzIGEgc3RyaW5nIG9yIEhhbmRsZWJhcnMgQVNUIHRvIEhhbmRsZWJhcnMu
cHJlY29tcGlsZS4gWW91IHBhc3NlZCAnICsgaW5wdXQpOworICB9CisKKyAgb3B0aW9ucyA9IG9w
dGlvbnMgfHwge307CisgIGlmICghKCdkYXRhJyBpbiBvcHRpb25zKSkgeworICAgIG9wdGlvbnMu
ZGF0YSA9IHRydWU7CisgIH0KKyAgaWYgKG9wdGlvbnMuY29tcGF0KSB7CisgICAgb3B0aW9ucy51
c2VEZXB0aHMgPSB0cnVlOworICB9CisKKyAgdmFyIGFzdCA9IGVudi5wYXJzZShpbnB1dCwgb3B0
aW9ucyksCisgICAgICBlbnZpcm9ubWVudCA9IG5ldyBlbnYuQ29tcGlsZXIoKS5jb21waWxlKGFz
dCwgb3B0aW9ucyk7CisgIHJldHVybiBuZXcgZW52LkphdmFTY3JpcHRDb21waWxlcigpLmNvbXBp
bGUoZW52aXJvbm1lbnQsIG9wdGlvbnMpOworfQorCitmdW5jdGlvbiBjb21waWxlKGlucHV0LCBv
cHRpb25zLCBlbnYpIHsKKyAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgb3B0aW9ucyA9IHt9
OworCisgIGlmIChpbnB1dCA9PSBudWxsIHx8IHR5cGVvZiBpbnB1dCAhPT0gJ3N0cmluZycgJiYg
aW5wdXQudHlwZSAhPT0gJ1Byb2dyYW0nKSB7CisgICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydk
ZWZhdWx0J10oJ1lvdSBtdXN0IHBhc3MgYSBzdHJpbmcgb3IgSGFuZGxlYmFycyBBU1QgdG8gSGFu
ZGxlYmFycy5jb21waWxlLiBZb3UgcGFzc2VkICcgKyBpbnB1dCk7CisgIH0KKworICBpZiAoISgn
ZGF0YScgaW4gb3B0aW9ucykpIHsKKyAgICBvcHRpb25zLmRhdGEgPSB0cnVlOworICB9CisgIGlm
IChvcHRpb25zLmNvbXBhdCkgeworICAgIG9wdGlvbnMudXNlRGVwdGhzID0gdHJ1ZTsKKyAgfQor
CisgIHZhciBjb21waWxlZCA9IHVuZGVmaW5lZDsKKworICBmdW5jdGlvbiBjb21waWxlSW5wdXQo
KSB7CisgICAgdmFyIGFzdCA9IGVudi5wYXJzZShpbnB1dCwgb3B0aW9ucyksCisgICAgICAgIGVu
dmlyb25tZW50ID0gbmV3IGVudi5Db21waWxlcigpLmNvbXBpbGUoYXN0LCBvcHRpb25zKSwKKyAg
ICAgICAgdGVtcGxhdGVTcGVjID0gbmV3IGVudi5KYXZhU2NyaXB0Q29tcGlsZXIoKS5jb21waWxl
KGVudmlyb25tZW50LCBvcHRpb25zLCB1bmRlZmluZWQsIHRydWUpOworICAgIHJldHVybiBlbnYu
dGVtcGxhdGUodGVtcGxhdGVTcGVjKTsKKyAgfQorCisgIC8vIFRlbXBsYXRlIGlzIG9ubHkgY29t
cGlsZWQgb24gZmlyc3QgdXNlIGFuZCBjYWNoZWQgYWZ0ZXIgdGhhdCBwb2ludC4KKyAgZnVuY3Rp
b24gcmV0KGNvbnRleHQsIGV4ZWNPcHRpb25zKSB7CisgICAgaWYgKCFjb21waWxlZCkgeworICAg
ICAgY29tcGlsZWQgPSBjb21waWxlSW5wdXQoKTsKKyAgICB9CisgICAgcmV0dXJuIGNvbXBpbGVk
LmNhbGwodGhpcywgY29udGV4dCwgZXhlY09wdGlvbnMpOworICB9CisgIHJldC5fc2V0dXAgPSBm
dW5jdGlvbiAoc2V0dXBPcHRpb25zKSB7CisgICAgaWYgKCFjb21waWxlZCkgeworICAgICAgY29t
cGlsZWQgPSBjb21waWxlSW5wdXQoKTsKKyAgICB9CisgICAgcmV0dXJuIGNvbXBpbGVkLl9zZXR1
cChzZXR1cE9wdGlvbnMpOworICB9OworICByZXQuX2NoaWxkID0gZnVuY3Rpb24gKGksIGRhdGEs
IGJsb2NrUGFyYW1zLCBkZXB0aHMpIHsKKyAgICBpZiAoIWNvbXBpbGVkKSB7CisgICAgICBjb21w
aWxlZCA9IGNvbXBpbGVJbnB1dCgpOworICAgIH0KKyAgICByZXR1cm4gY29tcGlsZWQuX2NoaWxk
KGksIGRhdGEsIGJsb2NrUGFyYW1zLCBkZXB0aHMpOworICB9OworICByZXR1cm4gcmV0OworfQor
CitmdW5jdGlvbiBhcmdFcXVhbHMoYSwgYikgeworICBpZiAoYSA9PT0gYikgeworICAgIHJldHVy
biB0cnVlOworICB9CisKKyAgaWYgKF91dGlscy5pc0FycmF5KGEpICYmIF91dGlscy5pc0FycmF5
KGIpICYmIGEubGVuZ3RoID09PSBiLmxlbmd0aCkgeworICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
YS5sZW5ndGg7IGkrKykgeworICAgICAgaWYgKCFhcmdFcXVhbHMoYVtpXSwgYltpXSkpIHsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKKyAg
fQorfQorCitmdW5jdGlvbiB0cmFuc2Zvcm1MaXRlcmFsVG9QYXRoKHNleHByKSB7CisgIGlmICgh
c2V4cHIucGF0aC5wYXJ0cykgeworICAgIHZhciBsaXRlcmFsID0gc2V4cHIucGF0aDsKKyAgICAv
LyBDYXN0aW5nIHRvIHN0cmluZyBoZXJlIHRvIG1ha2UgZmFsc2UgYW5kIDAgbGl0ZXJhbCB2YWx1
ZXMgcGxheSBuaWNlbHkgd2l0aCB0aGUgcmVzdAorICAgIC8vIG9mIHRoZSBzeXN0ZW0uCisgICAg
c2V4cHIucGF0aCA9IHsKKyAgICAgIHR5cGU6ICdQYXRoRXhwcmVzc2lvbicsCisgICAgICBkYXRh
OiBmYWxzZSwKKyAgICAgIGRlcHRoOiAwLAorICAgICAgcGFydHM6IFtsaXRlcmFsLm9yaWdpbmFs
ICsgJyddLAorICAgICAgb3JpZ2luYWw6IGxpdGVyYWwub3JpZ2luYWwgKyAnJywKKyAgICAgIGxv
YzogbGl0ZXJhbC5sb2MKKyAgICB9OworICB9Cit9CisvLyMgc291cmNlTWFwcGluZ1VSTD1kYXRh
OmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBi
SWk0dUx5NHVMeTR1THk0dUwyeHBZaTlvWVc1a2JHVmlZWEp6TDJOdmJYQnBiR1Z5TDJOdmJYQnBi
R1Z5TG1weklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN096czdPenM3T3pzN096
dDVRa0ZGYzBJc1kwRkJZenM3T3p0eFFrRkRUQ3hWUVVGVk96dHRRa0ZEZWtJc1QwRkJUenM3T3p0
QlFVVjJRaXhKUVVGTkxFdEJRVXNzUjBGQlJ5eEZRVUZGTEVOQlFVTXNTMEZCU3l4RFFVRkRPenRC
UVVWb1FpeFRRVUZUTEZGQlFWRXNSMEZCUnl4RlFVRkZPenM3T3pzN08wRkJUemRDTEZGQlFWRXNR
MEZCUXl4VFFVRlRMRWRCUVVjN1FVRkRia0lzVlVGQlVTeEZRVUZGTEZGQlFWRTdPMEZCUld4Q0xG
RkJRVTBzUlVGQlJTeG5Ra0ZCVXl4TFFVRkxMRVZCUVVVN1FVRkRkRUlzVVVGQlNTeEhRVUZITEVk
QlFVY3NTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhOUVVGTkxFTkJRVU03UVVGRE9VSXNVVUZC
U1N4TFFVRkxMRU5CUVVNc1QwRkJUeXhEUVVGRExFMUJRVTBzUzBGQlN5eEhRVUZITEVWQlFVVTdR
VUZEYUVNc1lVRkJUeXhMUVVGTExFTkJRVU03UzBGRFpEczdRVUZGUkN4VFFVRkxMRWxCUVVrc1Ew
RkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NSMEZCUnl4RlFVRkZMRU5CUVVN
c1JVRkJSU3hGUVVGRk8wRkJRelZDTEZWQlFVa3NUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhQ
UVVGUExFTkJRVU1zUTBGQlF5eERRVUZETzFWQlEzaENMRmRCUVZjc1IwRkJSeXhMUVVGTExFTkJR
VU1zVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUTI1RExGVkJRVWtzVFVGQlRT
eERRVUZETEUxQlFVMHNTMEZCU3l4WFFVRlhMRU5CUVVNc1RVRkJUU3hKUVVGSkxFTkJRVU1zVTBG
QlV5eERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRkpMRVZCUVVVc1YwRkJWeXhEUVVGRExFbEJRVWtz
UTBGQlF5eEZRVUZGTzBGQlEzSkdMR1ZCUVU4c1MwRkJTeXhEUVVGRE8wOUJRMlE3UzBGRFJqczdP
enRCUVVsRUxFOUJRVWNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRTFCUVUwc1Ew
RkJRenRCUVVNelFpeFRRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVG
RExFZEJRVWNzUjBGQlJ5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RlFVRkZPMEZCUXpWQ0xGVkJRVWtz
UTBGQlF5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJR
VTBzUTBGQlF5eExRVUZMTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExF
VkJRVVU3UVVGREwwTXNaVUZCVHl4TFFVRkxMRU5CUVVNN1QwRkRaRHRMUVVOR096dEJRVVZFTEZk
QlFVOHNTVUZCU1N4RFFVRkRPMGRCUTJJN08wRkJSVVFzVFVGQlNTeEZRVUZGTEVOQlFVTTdPMEZC
UlZBc1UwRkJUeXhGUVVGRkxHbENRVUZUTEU5QlFVOHNSVUZCUlN4UFFVRlBMRVZCUVVVN1FVRkRi
RU1zVVVGQlNTeERRVUZETEZWQlFWVXNSMEZCUnl4RlFVRkZMRU5CUVVNN1FVRkRja0lzVVVGQlNT
eERRVUZETEU5QlFVOHNSMEZCUnl4RlFVRkZMRU5CUVVNN1FVRkRiRUlzVVVGQlNTeERRVUZETEZG
QlFWRXNSMEZCUnl4RlFVRkZMRU5CUVVNN1FVRkRia0lzVVVGQlNTeERRVUZETEU5QlFVOHNSMEZC
Unl4UFFVRlBMRU5CUVVNN1FVRkRka0lzVVVGQlNTeERRVUZETEZsQlFWa3NSMEZCUnl4UFFVRlBM
RU5CUVVNc1dVRkJXU3hEUVVGRE8wRkJRM3BETEZGQlFVa3NRMEZCUXl4UlFVRlJMRWRCUVVjc1Qw
RkJUeXhEUVVGRExGRkJRVkVzUTBGQlF6czdRVUZGYWtNc1YwRkJUeXhEUVVGRExGZEJRVmNzUjBG
QlJ5eFBRVUZQTEVOQlFVTXNWMEZCVnl4SlFVRkpMRVZCUVVVc1EwRkJRenM3TzBGQlIyaEVMRkZC
UVVrc1dVRkJXU3hIUVVGSExFOUJRVThzUTBGQlF5eFpRVUZaTEVOQlFVTTdRVUZEZUVNc1YwRkJU
eXhEUVVGRExGbEJRVmtzUjBGQlJ6dEJRVU55UWl4eFFrRkJaU3hGUVVGRkxFbEJRVWs3UVVGRGNr
SXNNRUpCUVc5Q0xFVkJRVVVzU1VGQlNUdEJRVU14UWl4WlFVRk5MRVZCUVVVc1NVRkJTVHRCUVVO
YUxGVkJRVWtzUlVGQlJTeEpRVUZKTzBGQlExWXNZMEZCVVN4RlFVRkZMRWxCUVVrN1FVRkRaQ3ha
UVVGTkxFVkJRVVVzU1VGQlNUdEJRVU5hTEZkQlFVc3NSVUZCUlN4SlFVRkpPMEZCUTFnc1kwRkJV
U3hGUVVGRkxFbEJRVWs3UzBGRFppeERRVUZETzBGQlEwWXNVVUZCU1N4WlFVRlpMRVZCUVVVN1FV
RkRhRUlzVjBGQlN5eEpRVUZKTEV0QlFVa3NTVUZCU1N4WlFVRlpMRVZCUVVVN08wRkJSVGRDTEZs
QlFVa3NTMEZCU1N4SlFVRkpMRmxCUVZrc1JVRkJSVHRCUVVONFFpeHBRa0ZCVHl4RFFVRkRMRmxC
UVZrc1EwRkJReXhMUVVGSkxFTkJRVU1zUjBGQlJ5eFpRVUZaTEVOQlFVTXNTMEZCU1N4RFFVRkRM
RU5CUVVNN1UwRkRha1E3VDBGRFJqdExRVU5HT3p0QlFVVkVMRmRCUVU4c1NVRkJTU3hEUVVGRExF
MUJRVTBzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0SFFVTTNRanM3UVVGRlJDeG5Ra0ZCWXl4
RlFVRkZMSGRDUVVGVExFOUJRVThzUlVGQlJUdEJRVU5vUXl4UlFVRkpMR0ZCUVdFc1IwRkJSeXhK
UVVGSkxFbEJRVWtzUTBGQlF5eFJRVUZSTEVWQlFVVTdPMEZCUTI1RExGVkJRVTBzUjBGQlJ5eGhR
VUZoTEVOQlFVTXNUMEZCVHl4RFFVRkRMRTlCUVU4c1JVRkJSU3hKUVVGSkxFTkJRVU1zVDBGQlR5
eERRVUZETzFGQlEzSkVMRWxCUVVrc1IwRkJSeXhKUVVGSkxFTkJRVU1zU1VGQlNTeEZRVUZGTEVO
QlFVTTdPMEZCUlhaQ0xGRkJRVWtzUTBGQlF5eFZRVUZWTEVkQlFVY3NTVUZCU1N4RFFVRkRMRlZC
UVZVc1NVRkJTU3hOUVVGTkxFTkJRVU1zVlVGQlZTeERRVUZET3p0QlFVVjJSQ3hSUVVGSkxFTkJR
VU1zVVVGQlVTeERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRTFCUVUwc1EwRkJRenRCUVVNM1Fp
eFJRVUZKTEVOQlFVTXNVMEZCVXl4SFFVRkhMRWxCUVVrc1EwRkJReXhUUVVGVExFbEJRVWtzVFVG
QlRTeERRVUZETEZOQlFWTXNRMEZCUXpzN1FVRkZjRVFzVjBGQlR5eEpRVUZKTEVOQlFVTTdSMEZE
WWpzN1FVRkZSQ3hSUVVGTkxFVkJRVVVzWjBKQlFWTXNTVUZCU1N4RlFVRkZPenRCUVVWeVFpeFJR
VUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJU
dEJRVU53UWl4WlFVRk5MREpDUVVGakxHZENRVUZuUWl4SFFVRkhMRWxCUVVrc1EwRkJReXhKUVVG
SkxFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTTdTMEZEZWtRN08wRkJSVVFzVVVGQlNTeERRVUZE
TEZWQlFWVXNRMEZCUXl4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03UVVGRE9VSXNV
VUZCU1N4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFV
TXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRCUVVOb1F5eFJRVUZKTEVOQlFVTXNWVUZCVlN4
RFFVRkRMRXRCUVVzc1JVRkJSU3hEUVVGRE8wRkJRM2hDTEZkQlFVOHNSMEZCUnl4RFFVRkRPMGRC
UTFvN08wRkJSVVFzVTBGQlR5eEZRVUZGTEdsQ1FVRlRMRTlCUVU4c1JVRkJSVHRCUVVONlFpeFJR
VUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRmRCUVZjc1EwRkJReXhQUVVGUExFTkJRVU1zVDBGQlR5
eERRVUZETEZkQlFWY3NRMEZCUXl4RFFVRkRPenRCUVVWMFJDeFJRVUZKTEVsQlFVa3NSMEZCUnl4
UFFVRlBMRU5CUVVNc1NVRkJTVHRSUVVOdVFpeFZRVUZWTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFC
UVUwc1EwRkJRenRCUVVNM1FpeFRRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJS
U3hEUVVGRExFZEJRVWNzVlVGQlZTeEZRVUZGTEVOQlFVTXNSVUZCUlN4RlFVRkZPMEZCUTI1RExG
VkJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVG
RExFTkJRVU03UzBGRGRFSTdPMEZCUlVRc1VVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eFhRVUZY
TEVOQlFVTXNTMEZCU3l4RlFVRkZMRU5CUVVNN08wRkJSV3BETEZGQlFVa3NRMEZCUXl4UlFVRlJM
RWRCUVVjc1ZVRkJWU3hMUVVGTExFTkJRVU1zUTBGQlF6dEJRVU5xUXl4UlFVRkpMRU5CUVVNc1Yw
RkJWeXhIUVVGSExFOUJRVThzUTBGQlF5eFhRVUZYTEVkQlFVY3NUMEZCVHl4RFFVRkRMRmRCUVZj
c1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZET3p0QlFVVjRSU3hYUVVGUExFbEJRVWtz
UTBGQlF6dEhRVU5pT3p0QlFVVkVMR2RDUVVGakxFVkJRVVVzZDBKQlFWTXNTMEZCU3l4RlFVRkZP
MEZCUXpsQ0xEQkNRVUZ6UWl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE96dEJRVVU1UWl4UlFV
RkpMRTlCUVU4c1IwRkJSeXhMUVVGTExFTkJRVU1zVDBGQlR6dFJRVU4yUWl4UFFVRlBMRWRCUVVj
c1MwRkJTeXhEUVVGRExFOUJRVThzUTBGQlF6czdRVUZGTlVJc1YwRkJUeXhIUVVGSExFOUJRVThz
U1VGQlNTeEpRVUZKTEVOQlFVTXNZMEZCWXl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8wRkJR
MnhFTEZkQlFVOHNSMEZCUnl4UFFVRlBMRWxCUVVrc1NVRkJTU3hEUVVGRExHTkJRV01zUTBGQlF5
eFBRVUZQTEVOQlFVTXNRMEZCUXpzN1FVRkZiRVFzVVVGQlNTeEpRVUZKTEVkQlFVY3NTVUZCU1N4
RFFVRkRMR0ZCUVdFc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6czdRVUZGY2tNc1VVRkJTU3hK
UVVGSkxFdEJRVXNzVVVGQlVTeEZRVUZGTzBGQlEzSkNMRlZCUVVrc1EwRkJReXhYUVVGWExFTkJR
VU1zUzBGQlN5eEZRVUZGTEU5QlFVOHNSVUZCUlN4UFFVRlBMRU5CUVVNc1EwRkJRenRMUVVNelF5
eE5RVUZOTEVsQlFVa3NTVUZCU1N4TFFVRkxMRkZCUVZFc1JVRkJSVHRCUVVNMVFpeFZRVUZKTEVO
QlFVTXNWMEZCVnl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE96czdPMEZCU1hoQ0xGVkJRVWtz
UTBGQlF5eE5RVUZOTEVOQlFVTXNZVUZCWVN4RlFVRkZMRTlCUVU4c1EwRkJReXhEUVVGRE8wRkJR
M0JETEZWQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1lVRkJZU3hGUVVGRkxFOUJRVThzUTBGQlF5
eERRVUZETzBGQlEzQkRMRlZCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zVjBGQlZ5eERRVUZETEVO
QlFVTTdRVUZEZWtJc1ZVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFpRVUZaTEVWQlFVVXNTMEZC
U3l4RFFVRkRMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF6dExRVU5vUkN4TlFVRk5P
MEZCUTB3c1ZVRkJTU3hEUVVGRExHTkJRV01zUTBGQlF5eExRVUZMTEVWQlFVVXNUMEZCVHl4RlFV
RkZMRTlCUVU4c1EwRkJReXhEUVVGRE96czdPMEZCU1RkRExGVkJRVWtzUTBGQlF5eE5RVUZOTEVO
QlFVTXNZVUZCWVN4RlFVRkZMRTlCUVU4c1EwRkJReXhEUVVGRE8wRkJRM0JETEZWQlFVa3NRMEZC
UXl4TlFVRk5MRU5CUVVNc1lVRkJZU3hGUVVGRkxFOUJRVThzUTBGQlF5eERRVUZETzBGQlEzQkRM
RlZCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zVjBGQlZ5eERRVUZETEVOQlFVTTdRVUZEZWtJc1ZV
RkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eHhRa0ZCY1VJc1EwRkJReXhEUVVGRE8wdEJRM0JET3p0
QlFVVkVMRkZCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTTdSMEZE
ZGtJN08wRkJSVVFzWjBKQlFXTXNSVUZCUVN4M1FrRkJReXhUUVVGVExFVkJRVVU3UVVGRGVFSXNV
VUZCU1N4UFFVRlBMRWRCUVVjc1UwRkJVeXhEUVVGRExFOUJRVThzU1VGQlNTeEpRVUZKTEVOQlFV
TXNZMEZCWXl4RFFVRkRMRk5CUVZNc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF6dEJRVU14UlN4
UlFVRkpMRTFCUVUwc1IwRkJSeXhKUVVGSkxFTkJRVU1zZFVKQlFYVkNMRU5CUVVNc1UwRkJVeXhG
UVVGRkxFOUJRVThzUlVGQlJTeFRRVUZUTEVOQlFVTTdVVUZEY0VVc1NVRkJTU3hIUVVGSExGTkJR
Vk1zUTBGQlF5eEpRVUZKTEVOQlFVTTdPMEZCUlRGQ0xGRkJRVWtzUTBGQlF5eGhRVUZoTEVkQlFV
Y3NTVUZCU1N4RFFVRkRPMEZCUXpGQ0xGRkJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNiVUpCUVcx
Q0xFVkJRVVVzVFVGQlRTeERRVUZETEUxQlFVMHNSVUZCUlN4SlFVRkpMRU5CUVVNc1VVRkJVU3hE
UVVGRExFTkJRVU03UjBGRGFFVTdPMEZCUlVRc2EwSkJRV2RDTEVWQlFVVXNNRUpCUVZNc1QwRkJU
eXhGUVVGRk8wRkJRMnhETEZGQlFVa3NRMEZCUXl4VlFVRlZMRWRCUVVjc1NVRkJTU3hEUVVGRE96
dEJRVVYyUWl4UlFVRkpMRTlCUVU4c1IwRkJSeXhQUVVGUExFTkJRVU1zVDBGQlR5eERRVUZETzBG
QlF6bENMRkZCUVVrc1QwRkJUeXhGUVVGRk8wRkJRMWdzWVVGQlR5eEhRVUZITEVsQlFVa3NRMEZC
UXl4alFVRmpMRU5CUVVNc1QwRkJUeXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzB0QlEyaEVP
enRCUVVWRUxGRkJRVWtzVFVGQlRTeEhRVUZITEU5QlFVOHNRMEZCUXl4TlFVRk5MRU5CUVVNN1FV
RkROVUlzVVVGQlNTeE5RVUZOTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1JVRkJSVHRCUVVO
eVFpeFpRVUZOTERKQ1FVRmpMREpEUVVFeVF5eEhRVUZITEUxQlFVMHNRMEZCUXl4TlFVRk5MRVZC
UVVVc1QwRkJUeXhEUVVGRExFTkJRVU03UzBGRE0wWXNUVUZCVFN4SlFVRkpMRU5CUVVNc1RVRkJU
U3hEUVVGRExFMUJRVTBzUlVGQlJUdEJRVU42UWl4VlFVRkpMRWxCUVVrc1EwRkJReXhQUVVGUExF
TkJRVU1zYzBKQlFYTkNMRVZCUVVVN1FVRkRka01zV1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4
aFFVRmhMRVZCUVVVc1YwRkJWeXhEUVVGRExFTkJRVU03VDBGRGVrTXNUVUZCVFR0QlFVTk1MR05C
UVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlF5eEpRVUZKTEVWQlFVVXNaMEpCUVdkQ0xFVkJR
VVVzUzBGQlN5eEZRVUZGTEVWQlFVVXNSVUZCUlN4TFFVRkxMRVZCUVVVc1EwRkJReXhGUVVGRExF
TkJRVU1zUTBGQlF6dFBRVU0xUkR0TFFVTkdPenRCUVVWRUxGRkJRVWtzVjBGQlZ5eEhRVUZITEU5
QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1VVRkJVVHRSUVVOdVF5eFRRVUZUTEVkQlFVY3NUMEZC
VHl4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFdEJRVXNzWlVGQlpTeERRVUZETzBGQlEzUkVM
RkZCUVVrc1UwRkJVeXhGUVVGRk8wRkJRMklzVlVGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4UFFV
RlBMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03UzBGRE0wSTdPMEZCUlVRc1VVRkJTU3hEUVVG
RExIVkNRVUYxUWl4RFFVRkRMRTlCUVU4c1JVRkJSU3hQUVVGUExFVkJRVVVzVTBGQlV5eEZRVUZG
TEVsQlFVa3NRMEZCUXl4RFFVRkRPenRCUVVWb1JTeFJRVUZKTEUxQlFVMHNSMEZCUnl4UFFVRlBM
RU5CUVVNc1RVRkJUU3hKUVVGSkxFVkJRVVVzUTBGQlF6dEJRVU5zUXl4UlFVRkpMRWxCUVVrc1Ew
RkJReXhQUVVGUExFTkJRVU1zWVVGQllTeEpRVUZKTEUxQlFVMHNSVUZCUlR0QlFVTjRReXhWUVVG
SkxFTkJRVU1zVFVGQlRTeERRVUZETEdWQlFXVXNSVUZCUlN4TlFVRk5MRU5CUVVNc1EwRkJRenRC
UVVOeVF5eFpRVUZOTEVkQlFVY3NSVUZCUlN4RFFVRkRPMHRCUTJJN08wRkJSVVFzVVVGQlNTeERR
VUZETEUxQlFVMHNRMEZCUXl4bFFVRmxMRVZCUVVVc1UwRkJVeXhGUVVGRkxGZEJRVmNzUlVGQlJT
eE5RVUZOTEVOQlFVTXNRMEZCUXp0QlFVTTNSQ3hSUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEZG
QlFWRXNRMEZCUXl4RFFVRkRPMGRCUTNaQ08wRkJRMFFzZFVKQlFYRkNMRVZCUVVVc0swSkJRVk1z
V1VGQldTeEZRVUZGTzBGQlF6VkRMRkZCUVVrc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4WlFVRlpM
RU5CUVVNc1EwRkJRenRIUVVOeVF6czdRVUZGUkN4dFFrRkJhVUlzUlVGQlJTd3lRa0ZCVXl4UlFV
RlJMRVZCUVVVN1FVRkRjRU1zVVVGQlNTeERRVUZETEdGQlFXRXNRMEZCUXl4UlFVRlJMRU5CUVVN
c1EwRkJRenM3UVVGRk4wSXNVVUZCU1N4UlFVRlJMRU5CUVVNc1QwRkJUeXhKUVVGSkxFTkJRVU1z
U1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4UlFVRlJMRVZCUVVVN1FVRkRPVU1zVlVGQlNTeERR
VUZETEUxQlFVMHNRMEZCUXl4bFFVRmxMRU5CUVVNc1EwRkJRenRMUVVNNVFpeE5RVUZOTzBGQlEw
d3NWVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF6dExRVU4yUWp0
SFFVTkdPMEZCUTBRc1YwRkJVeXhGUVVGQkxHMUNRVUZETEZOQlFWTXNSVUZCUlR0QlFVTnVRaXhS
UVVGSkxFTkJRVU1zWTBGQll5eERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRPMGRCUTJoRE96dEJR
VWRFTEd0Q1FVRm5RaXhGUVVGRkxEQkNRVUZUTEU5QlFVOHNSVUZCUlR0QlFVTnNReXhSUVVGSkxF
OUJRVThzUTBGQlF5eExRVUZMTEVWQlFVVTdRVUZEYWtJc1ZVRkJTU3hEUVVGRExFMUJRVTBzUTBG
QlF5eGxRVUZsTEVWQlFVVXNUMEZCVHl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE8wdEJRemRE
TzBkQlEwWTdPMEZCUlVRc2EwSkJRV2RDTEVWQlFVVXNORUpCUVZjc1JVRkJSVHM3UVVGRkwwSXNa
VUZCWVN4RlFVRkZMSFZDUVVGVExFdEJRVXNzUlVGQlJUdEJRVU0zUWl3d1FrRkJjMElzUTBGQlF5
eExRVUZMTEVOQlFVTXNRMEZCUXp0QlFVTTVRaXhSUVVGSkxFbEJRVWtzUjBGQlJ5eEpRVUZKTEVO
QlFVTXNZVUZCWVN4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE96dEJRVVZ5UXl4UlFVRkpMRWxC
UVVrc1MwRkJTeXhSUVVGUkxFVkJRVVU3UVVGRGNrSXNWVUZCU1N4RFFVRkRMRmRCUVZjc1EwRkJR
eXhMUVVGTExFTkJRVU1zUTBGQlF6dExRVU42UWl4TlFVRk5MRWxCUVVrc1NVRkJTU3hMUVVGTExG
RkJRVkVzUlVGQlJUdEJRVU0xUWl4VlFVRkpMRU5CUVVNc1YwRkJWeXhEUVVGRExFdEJRVXNzUTBG
QlF5eERRVUZETzB0QlEzcENMRTFCUVUwN1FVRkRUQ3hWUVVGSkxFTkJRVU1zWTBGQll5eERRVUZE
TEV0QlFVc3NRMEZCUXl4RFFVRkRPMHRCUXpWQ08wZEJRMFk3UVVGRFJDeG5Ra0ZCWXl4RlFVRkZM
SGRDUVVGVExFdEJRVXNzUlVGQlJTeFBRVUZQTEVWQlFVVXNUMEZCVHl4RlFVRkZPMEZCUTJoRUxG
RkJRVWtzU1VGQlNTeEhRVUZITEV0QlFVc3NRMEZCUXl4SlFVRkpPMUZCUTJwQ0xFbEJRVWtzUjBG
QlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOd1FpeFBRVUZQ
TEVkQlFVY3NUMEZCVHl4SlFVRkpMRWxCUVVrc1NVRkJTU3hQUVVGUExFbEJRVWtzU1VGQlNTeERR
VUZET3p0QlFVVnFSQ3hSUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEZsQlFWa3NSVUZCUlN4SlFV
RkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03TzBGQlJYUkRMRkZCUVVrc1EwRkJReXhOUVVG
TkxFTkJRVU1zWVVGQllTeEZRVUZGTEU5QlFVOHNRMEZCUXl4RFFVRkRPMEZCUTNCRExGRkJRVWtz
UTBGQlF5eE5RVUZOTEVOQlFVTXNZVUZCWVN4RlFVRkZMRTlCUVU4c1EwRkJReXhEUVVGRE96dEJR
VVZ3UXl4UlFVRkpMRU5CUVVNc1RVRkJUU3hIUVVGSExFbEJRVWtzUTBGQlF6dEJRVU51UWl4UlFV
RkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZET3p0QlFVVnNRaXhSUVVG
SkxFTkJRVU1zVFVGQlRTeERRVUZETEdsQ1FVRnBRaXhGUVVGRkxFbEJRVWtzUlVGQlJTeFBRVUZQ
TEVOQlFVTXNRMEZCUXp0SFFVTXZRenM3UVVGRlJDeGhRVUZYTEVWQlFVVXNjVUpCUVZNc1MwRkJT
eXhGUVVGRk8wRkJRek5DTEZGQlFVa3NTVUZCU1N4SFFVRkhMRXRCUVVzc1EwRkJReXhKUVVGSkxF
TkJRVU03UVVGRGRFSXNVVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhKUVVGSkxFTkJRVU03UVVG
RGJrSXNVVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dEJRVU5z
UWl4UlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExIVkNRVUYxUWl4RFFVRkRMRU5CUVVNN1IwRkRk
RU03TzBGQlJVUXNZVUZCVnl4RlFVRkZMSEZDUVVGVExFdEJRVXNzUlVGQlJTeFBRVUZQTEVWQlFV
VXNUMEZCVHl4RlFVRkZPMEZCUXpkRExGRkJRVWtzVFVGQlRTeEhRVUZITEVsQlFVa3NRMEZCUXl4
MVFrRkJkVUlzUTBGQlF5eExRVUZMTEVWQlFVVXNUMEZCVHl4RlFVRkZMRTlCUVU4c1EwRkJRenRS
UVVNNVJDeEpRVUZKTEVkQlFVY3NTMEZCU3l4RFFVRkRMRWxCUVVrN1VVRkRha0lzU1VGQlNTeEhR
VUZITEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03TzBGQlJY
cENMRkZCUVVrc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eFpRVUZaTEVOQlFVTXNTVUZCU1N4
RFFVRkRMRVZCUVVVN1FVRkRia01zVlVGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4dFFrRkJiVUlz
UlVGQlJTeE5RVUZOTEVOQlFVTXNUVUZCVFN4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRE8wdEJR
M1pFTEUxQlFVMHNTVUZCU1N4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExHZENRVUZuUWl4RlFV
RkZPMEZCUTNoRExGbEJRVTBzTWtKQlFXTXNPRVJCUVRoRUxFZEJRVWNzU1VGQlNTeEZRVUZGTEV0
QlFVc3NRMEZCUXl4RFFVRkRPMHRCUTI1SExFMUJRVTA3UVVGRFRDeFZRVUZKTEVOQlFVTXNUVUZC
VFN4SFFVRkhMRWxCUVVrc1EwRkJRenRCUVVOdVFpeFZRVUZKTEVOQlFVTXNTMEZCU3l4SFFVRkhM
RWxCUVVrc1EwRkJRenM3UVVGRmJFSXNWVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxF
TkJRVU1zUTBGQlF6dEJRVU5zUWl4VlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExHTkJRV01zUlVG
QlJTeE5RVUZOTEVOQlFVTXNUVUZCVFN4RlFVRkZMRWxCUVVrc1EwRkJReXhSUVVGUkxFVkJRVVVz
YVVKQlFVa3NUMEZCVHl4RFFVRkRMRkZCUVZFc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERR
VUZETzB0QlEzWkdPMGRCUTBZN08wRkJSVVFzWjBKQlFXTXNSVUZCUlN4M1FrRkJVeXhKUVVGSkxF
VkJRVVU3UVVGRE4wSXNVVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBG
QlN5eERRVUZETEVOQlFVTTdRVUZETVVJc1VVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFpRVUZa
TEVWQlFVVXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE96dEJRVVYwUXl4UlFVRkpM
RWxCUVVrc1IwRkJSeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFV
TndRaXhOUVVGTkxFZEJRVWNzYVVKQlFVa3NUMEZCVHl4RFFVRkRMRkZCUVZFc1EwRkJReXhKUVVG
SkxFTkJRVU03VVVGRGJrTXNXVUZCV1N4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNz
U1VGQlNTeERRVUZETEUxQlFVMHNTVUZCU1N4SlFVRkpMRU5CUVVNc1pVRkJaU3hEUVVGRExFbEJR
VWtzUTBGQlF5eERRVUZET3p0QlFVVjRSU3hSUVVGSkxGbEJRVmtzUlVGQlJUdEJRVU5vUWl4VlFV
RkpMRU5CUVVNc1RVRkJUU3hEUVVGRExHdENRVUZyUWl4RlFVRkZMRmxCUVZrc1JVRkJSU3hKUVVG
SkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdTMEZETTBRc1RVRkJUU3hKUVVGSkxFTkJRVU1z
U1VGQlNTeEZRVUZGT3p0QlFVVm9RaXhWUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEdGQlFXRXNR
MEZCUXl4RFFVRkRPMHRCUXpWQ0xFMUJRVTBzU1VGQlNTeEpRVUZKTEVOQlFVTXNTVUZCU1N4RlFV
RkZPMEZCUTNCQ0xGVkJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4SFFVRkhMRWxCUVVr
c1EwRkJRenRCUVVONlFpeFZRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRmxCUVZrc1JVRkJSU3hK
UVVGSkxFTkJRVU1zUzBGQlN5eEZRVUZGTEVsQlFVa3NRMEZCUXl4TFFVRkxMRVZCUVVVc1NVRkJT
U3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzB0QlEyaEZMRTFCUVUwN1FVRkRUQ3hWUVVGSkxF
TkJRVU1zVFVGQlRTeERRVUZETEdsQ1FVRnBRaXhGUVVGRkxFbEJRVWtzUTBGQlF5eExRVUZMTEVW
QlFVVXNTVUZCU1N4RFFVRkRMRXRCUVVzc1JVRkJSU3hKUVVGSkxFTkJRVU1zVFVGQlRTeEZRVUZG
TEUxQlFVMHNRMEZCUXl4RFFVRkRPMHRCUXpkRk8wZEJRMFk3TzBGQlJVUXNaVUZCWVN4RlFVRkZM
SFZDUVVGVExFMUJRVTBzUlVGQlJUdEJRVU01UWl4UlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExG
bEJRVmtzUlVGQlJTeE5RVUZOTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1IwRkRla003TzBG
QlJVUXNaVUZCWVN4RlFVRkZMSFZDUVVGVExFMUJRVTBzUlVGQlJUdEJRVU01UWl4UlFVRkpMRU5C
UVVNc1RVRkJUU3hEUVVGRExHRkJRV0VzUlVGQlJTeE5RVUZOTEVOQlFVTXNTMEZCU3l4RFFVRkRM
RU5CUVVNN1IwRkRNVU03TzBGQlJVUXNaMEpCUVdNc1JVRkJSU3gzUWtGQlV5eEpRVUZKTEVWQlFV
VTdRVUZETjBJc1VVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eGhRVUZoTEVWQlFVVXNTVUZCU1N4
RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE8wZEJRM2hET3p0QlFVVkVMR3RDUVVGblFpeEZRVUZG
TERSQ1FVRlhPMEZCUXpOQ0xGRkJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNZVUZCWVN4RlFVRkZM
RmRCUVZjc1EwRkJReXhEUVVGRE8wZEJRM3BET3p0QlFVVkVMR0ZCUVZjc1JVRkJSU3gxUWtGQlZ6
dEJRVU4wUWl4UlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExHRkJRV0VzUlVGQlJTeE5RVUZOTEVO
QlFVTXNRMEZCUXp0SFFVTndRenM3UVVGRlJDeE5RVUZKTEVWQlFVVXNZMEZCVXl4SlFVRkpMRVZC
UVVVN1FVRkRia0lzVVVGQlNTeExRVUZMTEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzN1VVRkRi
RUlzUTBGQlF5eEhRVUZITEVOQlFVTTdVVUZEVEN4RFFVRkRMRWRCUVVjc1MwRkJTeXhEUVVGRExF
MUJRVTBzUTBGQlF6czdRVUZGY2tJc1VVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFZRVUZWTEVO
QlFVTXNRMEZCUXpzN1FVRkZlRUlzVjBGQlR5eERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5C
UVVNc1JVRkJSU3hGUVVGRk8wRkJRMnBDTEZWQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1MwRkJT
eXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMHRCUTJoRE8w
RkJRMFFzVjBGQlR5eERRVUZETEVWQlFVVXNSVUZCUlR0QlFVTldMRlZCUVVrc1EwRkJReXhOUVVG
TkxFTkJRVU1zWTBGQll5eEZRVUZGTEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhI
UVVGSExFTkJRVU1zUTBGQlF6dExRVU16UXp0QlFVTkVMRkZCUVVrc1EwRkJReXhOUVVGTkxFTkJR
VU1zVTBGQlV5eERRVUZETEVOQlFVTTdSMEZEZUVJN096dEJRVWRFTEZGQlFVMHNSVUZCUlN4blFr
RkJVeXhKUVVGSkxFVkJRVVU3UVVGRGNrSXNVVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhKUVVG
SkxFTkJRVU1zUlVGQlJTeE5RVUZOTEVWQlFVVXNTVUZCU1N4RlFVRkZMRWxCUVVrc1JVRkJSU3hM
UVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEZOQlFWTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJS
U3hIUVVGSExFVkJRVVVzU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1Ew
RkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eERRVUZETzBkQlEyeEhPenRCUVVWRUxGVkJRVkVzUlVG
QlJTeHJRa0ZCVXl4TFFVRkxMRVZCUVVVN1FVRkRlRUlzVVVGQlNTeERRVUZETEV0QlFVc3NSVUZC
UlR0QlFVTldMR0ZCUVU4N1MwRkRVanM3UVVGRlJDeFJRVUZKTEVOQlFVTXNVMEZCVXl4SFFVRkhM
RWxCUVVrc1EwRkJRenRIUVVOMlFqczdRVUZGUkN4bFFVRmhMRVZCUVVVc2RVSkJRVk1zUzBGQlN5
eEZRVUZGTzBGQlF6ZENMRkZCUVVrc1VVRkJVU3hIUVVGSExHbENRVUZKTEU5QlFVOHNRMEZCUXl4
UlFVRlJMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZET3p0QlFVVm9SQ3hS
UVVGSkxGbEJRVmtzUjBGQlJ5eFJRVUZSTEVsQlFVa3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJR
eXhsUVVGbExFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1Ew
RkJReXhEUVVGRExFTkJRVU1zUTBGQlF6czdPenRCUVVrelJTeFJRVUZKTEZGQlFWRXNSMEZCUnl4
RFFVRkRMRmxCUVZrc1NVRkJTU3hwUWtGQlNTeFBRVUZQTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1z
UzBGQlN5eERRVUZETEVOQlFVTTdPenM3TzBGQlMzQkZMRkZCUVVrc1ZVRkJWU3hIUVVGSExFTkJR
VU1zV1VGQldTeExRVUZMTEZGQlFWRXNTVUZCU1N4UlFVRlJMRU5CUVVFc1FVRkJReXhEUVVGRE96
czdPMEZCU1hwRUxGRkJRVWtzVlVGQlZTeEpRVUZKTEVOQlFVTXNVVUZCVVN4RlFVRkZPMEZCUXpO
Q0xGVkJRVWtzVFVGQlNTeEhRVUZITEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhE
UVVGRExFTkJRVU1zUTBGQlF6dFZRVU14UWl4UFFVRlBMRWRCUVVjc1NVRkJTU3hEUVVGRExFOUJR
VThzUTBGQlF6czdRVUZGTTBJc1ZVRkJTU3hQUVVGUExFTkJRVU1zV1VGQldTeERRVUZETEUxQlFV
a3NRMEZCUXl4RlFVRkZPMEZCUXpsQ0xHZENRVUZSTEVkQlFVY3NTVUZCU1N4RFFVRkRPMDlCUTJw
Q0xFMUJRVTBzU1VGQlNTeFBRVUZQTEVOQlFVTXNaMEpCUVdkQ0xFVkJRVVU3UVVGRGJrTXNhMEpC
UVZVc1IwRkJSeXhMUVVGTExFTkJRVU03VDBGRGNFSTdTMEZEUmpzN1FVRkZSQ3hSUVVGSkxGRkJR
VkVzUlVGQlJUdEJRVU5hTEdGQlFVOHNVVUZCVVN4RFFVRkRPMHRCUTJwQ0xFMUJRVTBzU1VGQlNT
eFZRVUZWTEVWQlFVVTdRVUZEY2tJc1lVRkJUeXhYUVVGWExFTkJRVU03UzBGRGNFSXNUVUZCVFR0
QlFVTk1MR0ZCUVU4c1VVRkJVU3hEUVVGRE8wdEJRMnBDTzBkQlEwWTdPMEZCUlVRc1dVRkJWU3hG
UVVGRkxHOUNRVUZUTEUxQlFVMHNSVUZCUlR0QlFVTXpRaXhUUVVGTExFbEJRVWtzUTBGQlF5eEhR
VUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1RVRkJUU3hEUVVGRExFMUJRVTBzUlVGQlJT
eERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRk8wRkJRemRETEZW
QlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZE
TEVOQlFVTTdTMEZETTBJN1IwRkRSanM3UVVGRlJDeFhRVUZUTEVWQlFVVXNiVUpCUVZNc1IwRkJS
eXhGUVVGRk8wRkJRM1pDTEZGQlFVa3NTMEZCU3l4SFFVRkhMRWRCUVVjc1EwRkJReXhMUVVGTExF
bEJRVWtzU1VGQlNTeEhRVUZITEVkQlFVY3NRMEZCUXl4TFFVRkxMRWRCUVVjc1IwRkJSeXhEUVVG
RExGRkJRVkVzU1VGQlNTeEZRVUZGTEVOQlFVTTdPMEZCUlM5RUxGRkJRVWtzU1VGQlNTeERRVUZE
TEZsQlFWa3NSVUZCUlR0QlFVTnlRaXhWUVVGSkxFdEJRVXNzUTBGQlF5eFBRVUZQTEVWQlFVVTdR
VUZEYWtJc1lVRkJTeXhIUVVGSExFdEJRVXNzUTBGRFVpeFBRVUZQTEVOQlFVTXNZMEZCWXl4RlFV
RkZMRVZCUVVVc1EwRkJReXhEUVVNelFpeFBRVUZQTEVOQlFVTXNTMEZCU3l4RlFVRkZMRWRCUVVj
c1EwRkJReXhEUVVGRE8wOUJRekZDT3p0QlFVVkVMRlZCUVVrc1IwRkJSeXhEUVVGRExFdEJRVXNz
UlVGQlJUdEJRVU5pTEZsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1IwRkJSeXhEUVVGRExFdEJR
VXNzUTBGQlF5eERRVUZETzA5QlF6RkNPMEZCUTBRc1ZVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5
eFpRVUZaTEVWQlFVVXNSMEZCUnl4RFFVRkRMRXRCUVVzc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBG
QlF6dEJRVU14UXl4VlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExHbENRVUZwUWl4RlFVRkZMRXRC
UVVzc1JVRkJSU3hIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdPMEZCUldoRUxGVkJR
VWtzUjBGQlJ5eERRVUZETEVsQlFVa3NTMEZCU3l4bFFVRmxMRVZCUVVVN096dEJRVWRvUXl4WlFV
RkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzA5QlEyeENPMHRCUTBZ
c1RVRkJUVHRCUVVOTUxGVkJRVWtzU1VGQlNTeERRVUZETEZGQlFWRXNSVUZCUlR0QlFVTnFRaXha
UVVGSkxHVkJRV1VzV1VGQlFTeERRVUZETzBGQlEzQkNMRmxCUVVrc1IwRkJSeXhEUVVGRExFdEJR
VXNzU1VGQlNTeERRVUZETEdsQ1FVRkpMRTlCUVU4c1EwRkJReXhSUVVGUkxFTkJRVU1zUjBGQlJ5
eERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1MwRkJTeXhGUVVGRk8wRkJRM2hFTEhs
Q1FVRmxMRWRCUVVjc1NVRkJTU3hEUVVGRExHVkJRV1VzUTBGQlF5eEhRVUZITEVOQlFVTXNTMEZC
U3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VTBGRGRrUTdRVUZEUkN4WlFVRkpM
R1ZCUVdVc1JVRkJSVHRCUVVOdVFpeGpRVUZKTEdWQlFXVXNSMEZCUnl4SFFVRkhMRU5CUVVNc1Mw
RkJTeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVN
c1IwRkJSeXhEUVVGRExFTkJRVU03UVVGRGJrUXNZMEZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhS
UVVGUkxFVkJRVVVzV1VGQldTeEZRVUZGTEdWQlFXVXNSVUZCUlN4bFFVRmxMRU5CUVVNc1EwRkJR
enRUUVVOMlJTeE5RVUZOTzBGQlEwd3NaVUZCU3l4SFFVRkhMRWRCUVVjc1EwRkJReXhSUVVGUkxF
bEJRVWtzUzBGQlN5eERRVUZETzBGQlF6bENMR05CUVVrc1MwRkJTeXhEUVVGRExFOUJRVThzUlVG
QlJUdEJRVU5xUWl4cFFrRkJTeXhIUVVGSExFdEJRVXNzUTBGRFVpeFBRVUZQTEVOQlFVTXNaVUZC
WlN4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVNMVFpeFBRVUZQTEVOQlFVTXNUMEZCVHl4RlFVRkZM
RVZCUVVVc1EwRkJReXhEUVVOd1FpeFBRVUZQTEVOQlFVTXNUVUZCVFN4RlFVRkZMRVZCUVVVc1Ew
RkJReXhEUVVGRE8xZEJRekZDT3p0QlFVVkVMR05CUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zVVVG
QlVTeEZRVUZGTEVkQlFVY3NRMEZCUXl4SlFVRkpMRVZCUVVVc1MwRkJTeXhEUVVGRExFTkJRVU03
VTBGRGVFTTdUMEZEUmp0QlFVTkVMRlZCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUjBGQlJ5eERR
VUZETEVOQlFVTTdTMEZEYkVJN1IwRkRSanM3UVVGRlJDeDVRa0ZCZFVJc1JVRkJSU3hwUTBGQlV5
eExRVUZMTEVWQlFVVXNUMEZCVHl4RlFVRkZMRTlCUVU4c1JVRkJSU3hUUVVGVExFVkJRVVU3UVVG
RGNFVXNVVUZCU1N4TlFVRk5MRWRCUVVjc1MwRkJTeXhEUVVGRExFMUJRVTBzUTBGQlF6dEJRVU14
UWl4UlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZET3p0QlFVVjRR
aXhSUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEdGQlFXRXNSVUZCUlN4UFFVRlBMRU5CUVVNc1Ew
RkJRenRCUVVOd1F5eFJRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMR0ZCUVdFc1JVRkJSU3hQUVVG
UExFTkJRVU1zUTBGQlF6czdRVUZGY0VNc1VVRkJTU3hMUVVGTExFTkJRVU1zU1VGQlNTeEZRVUZG
TzBGQlEyUXNWVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeERR
VUZETEVOQlFVTTdTMEZEZWtJc1RVRkJUVHRCUVVOTUxGVkJRVWtzUTBGQlF5eE5RVUZOTEVOQlFV
TXNWMEZCVnl4RlFVRkZMRk5CUVZNc1EwRkJReXhEUVVGRE8wdEJRM0pET3p0QlFVVkVMRmRCUVU4
c1RVRkJUU3hEUVVGRE8wZEJRMlk3TzBGQlJVUXNhVUpCUVdVc1JVRkJSU3g1UWtGQlV5eEpRVUZK
TEVWQlFVVTdRVUZET1VJc1UwRkJTeXhKUVVGSkxFdEJRVXNzUjBGQlJ5eERRVUZETEVWQlFVVXNS
MEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zVjBGQlZ5eERRVUZETEUxQlFV
MHNSVUZCUlN4TFFVRkxMRWRCUVVjc1IwRkJSeXhGUVVGRkxFdEJRVXNzUlVGQlJTeEZRVUZGTzBG
QlF5OUZMRlZCUVVrc1YwRkJWeXhIUVVGSExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNWMEZC
Vnl4RFFVRkRMRXRCUVVzc1EwRkJRenRWUVVNM1F5eExRVUZMTEVkQlFVY3NWMEZCVnl4SlFVRkpM
R1ZCUVZFc1YwRkJWeXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETzBGQlEzUkVMRlZCUVVrc1Yw
RkJWeXhKUVVGSkxFdEJRVXNzU1VGQlNTeERRVUZETEVWQlFVVTdRVUZETjBJc1pVRkJUeXhEUVVG
RExFdEJRVXNzUlVGQlJTeExRVUZMTEVOQlFVTXNRMEZCUXp0UFFVTjJRanRMUVVOR08wZEJRMFk3
UTBGRFJpeERRVUZET3p0QlFVVkxMRk5CUVZNc1ZVRkJWU3hEUVVGRExFdEJRVXNzUlVGQlJTeFBR
VUZQTEVWQlFVVXNSMEZCUnl4RlFVRkZPMEZCUXpsRExFMUJRVWtzUzBGQlN5eEpRVUZKTEVsQlFV
a3NTVUZCU3l4UFFVRlBMRXRCUVVzc1MwRkJTeXhSUVVGUkxFbEJRVWtzUzBGQlN5eERRVUZETEVs
QlFVa3NTMEZCU3l4VFFVRlRMRUZCUVVNc1JVRkJSVHRCUVVNMVJTeFZRVUZOTERKQ1FVRmpMR2RH
UVVGblJpeEhRVUZITEV0QlFVc3NRMEZCUXl4RFFVRkRPMGRCUXk5SE96dEJRVVZFTEZOQlFVOHNS
MEZCUnl4UFFVRlBMRWxCUVVrc1JVRkJSU3hEUVVGRE8wRkJRM2hDTEUxQlFVa3NSVUZCUlN4TlFV
Rk5MRWxCUVVrc1QwRkJUeXhEUVVGQkxFRkJRVU1zUlVGQlJUdEJRVU40UWl4WFFVRlBMRU5CUVVN
c1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF6dEhRVU55UWp0QlFVTkVMRTFCUVVrc1QwRkJUeXhE
UVVGRExFMUJRVTBzUlVGQlJUdEJRVU5zUWl4WFFVRlBMRU5CUVVNc1UwRkJVeXhIUVVGSExFbEJR
VWtzUTBGQlF6dEhRVU14UWpzN1FVRkZSQ3hOUVVGSkxFZEJRVWNzUjBGQlJ5eEhRVUZITEVOQlFV
TXNTMEZCU3l4RFFVRkRMRXRCUVVzc1JVRkJSU3hQUVVGUExFTkJRVU03VFVGREwwSXNWMEZCVnl4
SFFVRkhMRWxCUVVrc1IwRkJSeXhEUVVGRExGRkJRVkVzUlVGQlJTeERRVUZETEU5QlFVOHNRMEZC
UXl4SFFVRkhMRVZCUVVVc1QwRkJUeXhEUVVGRExFTkJRVU03UVVGRE0wUXNVMEZCVHl4SlFVRkpM
RWRCUVVjc1EwRkJReXhyUWtGQmEwSXNSVUZCUlN4RFFVRkRMRTlCUVU4c1EwRkJReXhYUVVGWExF
VkJRVVVzVDBGQlR5eERRVUZETEVOQlFVTTdRMEZEYmtVN08wRkJSVTBzVTBGQlV5eFBRVUZQTEVO
QlFVTXNTMEZCU3l4RlFVRkZMRTlCUVU4c1JVRkJUeXhIUVVGSExFVkJRVVU3VFVGQmJrSXNUMEZC
VHl4blFrRkJVQ3hQUVVGUExFZEJRVWNzUlVGQlJUczdRVUZEZWtNc1RVRkJTU3hMUVVGTExFbEJR
VWtzU1VGQlNTeEpRVUZMTEU5QlFVOHNTMEZCU3l4TFFVRkxMRkZCUVZFc1NVRkJTU3hMUVVGTExF
TkJRVU1zU1VGQlNTeExRVUZMTEZOQlFWTXNRVUZCUXl4RlFVRkZPMEZCUXpWRkxGVkJRVTBzTWtK
QlFXTXNOa1ZCUVRaRkxFZEJRVWNzUzBGQlN5eERRVUZETEVOQlFVTTdSMEZETlVjN08wRkJSVVFz
VFVGQlNTeEZRVUZGTEUxQlFVMHNTVUZCU1N4UFFVRlBMRU5CUVVFc1FVRkJReXhGUVVGRk8wRkJR
M2hDTEZkQlFVOHNRMEZCUXl4SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGRE8wZEJRM0pDTzBGQlEw
UXNUVUZCU1N4UFFVRlBMRU5CUVVNc1RVRkJUU3hGUVVGRk8wRkJRMnhDTEZkQlFVOHNRMEZCUXl4
VFFVRlRMRWRCUVVjc1NVRkJTU3hEUVVGRE8wZEJRekZDT3p0QlFVVkVMRTFCUVVrc1VVRkJVU3ha
UVVGQkxFTkJRVU03TzBGQlJXSXNWMEZCVXl4WlFVRlpMRWRCUVVjN1FVRkRkRUlzVVVGQlNTeEhR
VUZITEVkQlFVY3NSMEZCUnl4RFFVRkRMRXRCUVVzc1EwRkJReXhMUVVGTExFVkJRVVVzVDBGQlR5
eERRVUZETzFGQlF5OUNMRmRCUVZjc1IwRkJSeXhKUVVGSkxFZEJRVWNzUTBGQlF5eFJRVUZSTEVW
QlFVVXNRMEZCUXl4UFFVRlBMRU5CUVVNc1IwRkJSeXhGUVVGRkxFOUJRVThzUTBGQlF6dFJRVU4w
UkN4WlFVRlpMRWRCUVVjc1NVRkJTU3hIUVVGSExFTkJRVU1zYTBKQlFXdENMRVZCUVVVc1EwRkJR
eXhQUVVGUExFTkJRVU1zVjBGQlZ5eEZRVUZGTEU5QlFVOHNSVUZCUlN4VFFVRlRMRVZCUVVVc1NV
RkJTU3hEUVVGRExFTkJRVU03UVVGREwwWXNWMEZCVHl4SFFVRkhMRU5CUVVNc1VVRkJVU3hEUVVG
RExGbEJRVmtzUTBGQlF5eERRVUZETzBkQlEyNURPenM3UVVGSFJDeFhRVUZUTEVkQlFVY3NRMEZC
UXl4UFFVRlBMRVZCUVVVc1YwRkJWeXhGUVVGRk8wRkJRMnBETEZGQlFVa3NRMEZCUXl4UlFVRlJM
RVZCUVVVN1FVRkRZaXhqUVVGUkxFZEJRVWNzV1VGQldTeEZRVUZGTEVOQlFVTTdTMEZETTBJN1FV
RkRSQ3hYUVVGUExGRkJRVkVzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RlFVRkZMRTlCUVU4
c1JVRkJSU3hYUVVGWExFTkJRVU1zUTBGQlF6dEhRVU5zUkR0QlFVTkVMRXRCUVVjc1EwRkJReXhO
UVVGTkxFZEJRVWNzVlVGQlV5eFpRVUZaTEVWQlFVVTdRVUZEYkVNc1VVRkJTU3hEUVVGRExGRkJR
VkVzUlVGQlJUdEJRVU5pTEdOQlFWRXNSMEZCUnl4WlFVRlpMRVZCUVVVc1EwRkJRenRMUVVNelFq
dEJRVU5FTEZkQlFVOHNVVUZCVVN4RFFVRkRMRTFCUVUwc1EwRkJReXhaUVVGWkxFTkJRVU1zUTBG
QlF6dEhRVU4wUXl4RFFVRkRPMEZCUTBZc1MwRkJSeXhEUVVGRExFMUJRVTBzUjBGQlJ5eFZRVUZU
TEVOQlFVTXNSVUZCUlN4SlFVRkpMRVZCUVVVc1YwRkJWeXhGUVVGRkxFMUJRVTBzUlVGQlJUdEJR
VU5zUkN4UlFVRkpMRU5CUVVNc1VVRkJVU3hGUVVGRk8wRkJRMklzWTBGQlVTeEhRVUZITEZsQlFW
a3NSVUZCUlN4RFFVRkRPMHRCUXpOQ08wRkJRMFFzVjBGQlR5eFJRVUZSTEVOQlFVTXNUVUZCVFN4
RFFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFVkJRVVVzVjBGQlZ5eEZRVUZGTEUxQlFVMHNRMEZC
UXl4RFFVRkRPMGRCUTNSRUxFTkJRVU03UVVGRFJpeFRRVUZQTEVkQlFVY3NRMEZCUXp0RFFVTmFP
enRCUVVWRUxGTkJRVk1zVTBGQlV5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVN1FV
RkRka0lzVFVGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RlFVRkZPMEZCUTFnc1YwRkJUeXhKUVVG
SkxFTkJRVU03UjBGRFlqczdRVUZGUkN4TlFVRkpMR1ZCUVZFc1EwRkJReXhEUVVGRExFbEJRVWtz
WlVGQlVTeERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1RVRkJUU3hMUVVGTExFTkJR
VU1zUTBGQlF5eE5RVUZOTEVWQlFVVTdRVUZEY2tRc1UwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5
eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBG
QlF5eEZRVUZGTEVWQlFVVTdRVUZEYWtNc1ZVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZE
TEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERR
VUZETEVWQlFVVTdRVUZETVVJc1pVRkJUeXhMUVVGTExFTkJRVU03VDBGRFpEdExRVU5HTzBGQlEw
UXNWMEZCVHl4SlFVRkpMRU5CUVVNN1IwRkRZanREUVVOR096dEJRVVZFTEZOQlFWTXNjMEpCUVhO
Q0xFTkJRVU1zUzBGQlN5eEZRVUZGTzBGQlEzSkRMRTFCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1z
U1VGQlNTeERRVUZETEV0QlFVc3NSVUZCUlR0QlFVTnlRaXhSUVVGSkxFOUJRVThzUjBGQlJ5eExR
VUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRPenM3UVVGSGVrSXNVMEZCU3l4RFFVRkRMRWxCUVVrc1Iw
RkJSenRCUVVOWUxGVkJRVWtzUlVGQlJTeG5Ra0ZCWjBJN1FVRkRkRUlzVlVGQlNTeEZRVUZGTEV0
QlFVczdRVUZEV0N4WFFVRkxMRVZCUVVVc1EwRkJRenRCUVVOU0xGZEJRVXNzUlVGQlJTeERRVUZE
TEU5QlFVOHNRMEZCUXl4UlFVRlJMRWRCUVVjc1JVRkJSU3hEUVVGRE8wRkJRemxDTEdOQlFWRXNS
VUZCUlN4UFFVRlBMRU5CUVVNc1VVRkJVU3hIUVVGSExFVkJRVVU3UVVGREwwSXNVMEZCUnl4RlFV
RkZMRTlCUVU4c1EwRkJReXhIUVVGSE8wdEJRMnBDTEVOQlFVTTdSMEZEU0R0RFFVTkdJaXdpWm1s
c1pTSTZJbU52YlhCcGJHVnlMbXB6SWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaUx5b2daWE5z
YVc1MExXUnBjMkZpYkdVZ2JtVjNMV05oY0NBcUwxeHVYRzVwYlhCdmNuUWdSWGhqWlhCMGFXOXVJ
R1p5YjIwZ0p5NHVMMlY0WTJWd2RHbHZiaWM3WEc1cGJYQnZjblFnZTJselFYSnlZWGtzSUdsdVpH
VjRUMlo5SUdaeWIyMGdKeTR1TDNWMGFXeHpKenRjYm1sdGNHOXlkQ0JCVTFRZ1puSnZiU0FuTGk5
aGMzUW5PMXh1WEc1amIyNXpkQ0J6YkdsalpTQTlJRnRkTG5Oc2FXTmxPMXh1WEc1bGVIQnZjblFn
Wm5WdVkzUnBiMjRnUTI5dGNHbHNaWElvS1NCN2ZWeHVYRzR2THlCMGFHVWdabTkxYm1SSVpXeHda
WElnY21WbmFYTjBaWElnZDJsc2JDQmthWE5oYldKcFozVmhkR1VnYUdWc2NHVnlJR3h2YjJ0MWND
Qm1jbTl0SUdacGJtUnBibWNnWVZ4dUx5OGdablZ1WTNScGIyNGdhVzRnWVNCamIyNTBaWGgwTGlC
VWFHbHpJR2x6SUc1bFkyVnpjMkZ5ZVNCbWIzSWdiWFZ6ZEdGamFHVWdZMjl0Y0dGMGFXSnBiR2ww
ZVN3Z2QyaHBZMmhjYmk4dklISmxjWFZwY21WeklIUm9ZWFFnWTI5dWRHVjRkQ0JtZFc1amRHbHZi
bk1nYVc0Z1lteHZZMnR6SUdGeVpTQmxkbUZzZFdGMFpXUWdZbmtnWW14dlkydElaV3h3WlhKTmFY
TnphVzVuTEZ4dUx5OGdZVzVrSUhSb1pXNGdjSEp2WTJWbFpDQmhjeUJwWmlCMGFHVWdjbVZ6ZFd4
MGFXNW5JSFpoYkhWbElIZGhjeUJ3Y205MmFXUmxaQ0IwYnlCaWJHOWphMGhsYkhCbGNrMXBjM05w
Ym1jdVhHNWNia052YlhCcGJHVnlMbkJ5YjNSdmRIbHdaU0E5SUh0Y2JpQWdZMjl0Y0dsc1pYSTZJ
RU52YlhCcGJHVnlMRnh1WEc0Z0lHVnhkV0ZzY3pvZ1puVnVZM1JwYjI0b2IzUm9aWElwSUh0Y2Jp
QWdJQ0JzWlhRZ2JHVnVJRDBnZEdocGN5NXZjR052WkdWekxteGxibWQwYUR0Y2JpQWdJQ0JwWmlB
b2IzUm9aWEl1YjNCamIyUmxjeTVzWlc1bmRHZ2dJVDA5SUd4bGJpa2dlMXh1SUNBZ0lDQWdjbVYw
ZFhKdUlHWmhiSE5sTzF4dUlDQWdJSDFjYmx4dUlDQWdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJ
RHdnYkdWdU95QnBLeXNwSUh0Y2JpQWdJQ0FnSUd4bGRDQnZjR052WkdVZ1BTQjBhR2x6TG05d1ky
OWtaWE5iYVYwc1hHNGdJQ0FnSUNBZ0lDQWdiM1JvWlhKUGNHTnZaR1VnUFNCdmRHaGxjaTV2Y0dO
dlpHVnpXMmxkTzF4dUlDQWdJQ0FnYVdZZ0tHOXdZMjlrWlM1dmNHTnZaR1VnSVQwOUlHOTBhR1Z5
VDNCamIyUmxMbTl3WTI5a1pTQjhmQ0FoWVhKblJYRjFZV3h6S0c5d1kyOWtaUzVoY21kekxDQnZk
R2hsY2s5d1kyOWtaUzVoY21kektTa2dlMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdabUZzYzJVN1hH
NGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dVhHNGdJQ0FnTHk4Z1YyVWdhMjV2ZHlCMGFHRjBJR3hsYm1k
MGFDQnBjeUIwYUdVZ2MyRnRaU0JpWlhSM1pXVnVJSFJvWlNCMGQyOGdZWEp5WVhseklHSmxZMkYx
YzJVZ2RHaGxlU0JoY21VZ1pHbHlaV04wYkhrZ2RHbGxaRnh1SUNBZ0lDOHZJSFJ2SUhSb1pTQnZj
R052WkdVZ1ltVm9ZWFpwYjNJZ1lXSnZkbVV1WEc0Z0lDQWdiR1Z1SUQwZ2RHaHBjeTVqYUdsc1pI
SmxiaTVzWlc1bmRHZzdYRzRnSUNBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQnNaVzQ3SUdr
ckt5a2dlMXh1SUNBZ0lDQWdhV1lnS0NGMGFHbHpMbU5vYVd4a2NtVnVXMmxkTG1WeGRXRnNjeWh2
ZEdobGNpNWphR2xzWkhKbGJsdHBYU2twSUh0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUdaaGJITmxP
MXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNibHh1SUNBZ0lISmxkSFZ5YmlCMGNuVmxPMXh1SUNCOUxG
eHVYRzRnSUdkMWFXUTZJREFzWEc1Y2JpQWdZMjl0Y0dsc1pUb2dablZ1WTNScGIyNG9jSEp2WjNK
aGJTd2diM0IwYVc5dWN5a2dlMXh1SUNBZ0lIUm9hWE11YzI5MWNtTmxUbTlrWlNBOUlGdGRPMXh1
SUNBZ0lIUm9hWE11YjNCamIyUmxjeUE5SUZ0ZE8xeHVJQ0FnSUhSb2FYTXVZMmhwYkdSeVpXNGdQ
U0JiWFR0Y2JpQWdJQ0IwYUdsekxtOXdkR2x2Ym5NZ1BTQnZjSFJwYjI1ek8xeHVJQ0FnSUhSb2FY
TXVjM1J5YVc1blVHRnlZVzF6SUQwZ2IzQjBhVzl1Y3k1emRISnBibWRRWVhKaGJYTTdYRzRnSUNB
Z2RHaHBjeTUwY21GamEwbGtjeUE5SUc5d2RHbHZibk11ZEhKaFkydEpaSE03WEc1Y2JpQWdJQ0J2
Y0hScGIyNXpMbUpzYjJOclVHRnlZVzF6SUQwZ2IzQjBhVzl1Y3k1aWJHOWphMUJoY21GdGN5Qjhm
Q0JiWFR0Y2JseHVJQ0FnSUM4dklGUm9aWE5sSUdOb1lXNW5aWE1nZDJsc2JDQndjbTl3WVdkaGRH
VWdkRzhnZEdobElHOTBhR1Z5SUdOdmJYQnBiR1Z5SUdOdmJYQnZibVZ1ZEhOY2JpQWdJQ0JzWlhR
Z2EyNXZkMjVJWld4d1pYSnpJRDBnYjNCMGFXOXVjeTVyYm05M2JraGxiSEJsY25NN1hHNGdJQ0Fn
YjNCMGFXOXVjeTVyYm05M2JraGxiSEJsY25NZ1BTQjdYRzRnSUNBZ0lDQW5hR1ZzY0dWeVRXbHpj
Mmx1WnljNklIUnlkV1VzWEc0Z0lDQWdJQ0FuWW14dlkydElaV3h3WlhKTmFYTnphVzVuSnpvZ2RI
SjFaU3hjYmlBZ0lDQWdJQ2RsWVdOb0p6b2dkSEoxWlN4Y2JpQWdJQ0FnSUNkcFppYzZJSFJ5ZFdV
c1hHNGdJQ0FnSUNBbmRXNXNaWE56SnpvZ2RISjFaU3hjYmlBZ0lDQWdJQ2QzYVhSb0p6b2dkSEox
WlN4Y2JpQWdJQ0FnSUNkc2IyY25PaUIwY25WbExGeHVJQ0FnSUNBZ0oyeHZiMnQxY0NjNklIUnlk
V1ZjYmlBZ0lDQjlPMXh1SUNBZ0lHbG1JQ2hyYm05M2JraGxiSEJsY25NcElIdGNiaUFnSUNBZ0lH
WnZjaUFvYkdWMElHNWhiV1VnYVc0Z2EyNXZkMjVJWld4d1pYSnpLU0I3WEc0Z0lDQWdJQ0FnSUM4
cUlHbHpkR0Z1WW5Wc0lHbG5ibTl5WlNCbGJITmxJQ292WEc0Z0lDQWdJQ0FnSUdsbUlDaHVZVzFs
SUdsdUlHdHViM2R1U0dWc2NHVnljeWtnZTF4dUlDQWdJQ0FnSUNBZ0lHOXdkR2x2Ym5NdWEyNXZk
MjVJWld4d1pYSnpXMjVoYldWZElEMGdhMjV2ZDI1SVpXeHdaWEp6VzI1aGJXVmRPMXh1SUNBZ0lD
QWdJQ0I5WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11WVdO
alpYQjBLSEJ5YjJkeVlXMHBPMXh1SUNCOUxGeHVYRzRnSUdOdmJYQnBiR1ZRY205bmNtRnRPaUJt
ZFc1amRHbHZiaWh3Y205bmNtRnRLU0I3WEc0Z0lDQWdiR1YwSUdOb2FXeGtRMjl0Y0dsc1pYSWdQ
U0J1WlhjZ2RHaHBjeTVqYjIxd2FXeGxjaWdwTENBdkx5QmxjMnhwYm5RdFpHbHpZV0pzWlMxc2FX
NWxJRzVsZHkxallYQmNiaUFnSUNBZ0lDQWdjbVZ6ZFd4MElEMGdZMmhwYkdSRGIyMXdhV3hsY2k1
amIyMXdhV3hsS0hCeWIyZHlZVzBzSUhSb2FYTXViM0IwYVc5dWN5a3NYRzRnSUNBZ0lDQWdJR2Qx
YVdRZ1BTQjBhR2x6TG1kMWFXUXJLenRjYmx4dUlDQWdJSFJvYVhNdWRYTmxVR0Z5ZEdsaGJDQTlJ
SFJvYVhNdWRYTmxVR0Z5ZEdsaGJDQjhmQ0J5WlhOMWJIUXVkWE5sVUdGeWRHbGhiRHRjYmx4dUlD
QWdJSFJvYVhNdVkyaHBiR1J5Wlc1YlozVnBaRjBnUFNCeVpYTjFiSFE3WEc0Z0lDQWdkR2hwY3k1
MWMyVkVaWEIwYUhNZ1BTQjBhR2x6TG5WelpVUmxjSFJvY3lCOGZDQnlaWE4xYkhRdWRYTmxSR1Z3
ZEdoek8xeHVYRzRnSUNBZ2NtVjBkWEp1SUdkMWFXUTdYRzRnSUgwc1hHNWNiaUFnWVdOalpYQjBP
aUJtZFc1amRHbHZiaWh1YjJSbEtTQjdYRzRnSUNBZ0x5b2dhWE4wWVc1aWRXd2dhV2R1YjNKbElH
NWxlSFE2SUZOaGJtbDBlU0JqYjJSbElDb3ZYRzRnSUNBZ2FXWWdLQ0YwYUdselcyNXZaR1V1ZEhs
d1pWMHBJSHRjYmlBZ0lDQWdJSFJvY205M0lHNWxkeUJGZUdObGNIUnBiMjRvSjFWdWEyNXZkMjRn
ZEhsd1pUb2dKeUFySUc1dlpHVXVkSGx3WlN3Z2JtOWtaU2s3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdk
R2hwY3k1emIzVnlZMlZPYjJSbExuVnVjMmhwWm5Rb2JtOWtaU2s3WEc0Z0lDQWdiR1YwSUhKbGRD
QTlJSFJvYVhOYmJtOWtaUzUwZVhCbFhTaHViMlJsS1R0Y2JpQWdJQ0IwYUdsekxuTnZkWEpqWlU1
dlpHVXVjMmhwWm5Rb0tUdGNiaUFnSUNCeVpYUjFjbTRnY21WME8xeHVJQ0I5TEZ4dVhHNGdJRkJ5
YjJkeVlXMDZJR1oxYm1OMGFXOXVLSEJ5YjJkeVlXMHBJSHRjYmlBZ0lDQjBhR2x6TG05d2RHbHZi
bk11WW14dlkydFFZWEpoYlhNdWRXNXphR2xtZENod2NtOW5jbUZ0TG1Kc2IyTnJVR0Z5WVcxektU
dGNibHh1SUNBZ0lHeGxkQ0JpYjJSNUlEMGdjSEp2WjNKaGJTNWliMlI1TEZ4dUlDQWdJQ0FnSUNC
aWIyUjVUR1Z1WjNSb0lEMGdZbTlrZVM1c1pXNW5kR2c3WEc0Z0lDQWdabTl5SUNoc1pYUWdhU0E5
SURBN0lHa2dQQ0JpYjJSNVRHVnVaM1JvT3lCcEt5c3BJSHRjYmlBZ0lDQWdJSFJvYVhNdVlXTmpa
WEIwS0dKdlpIbGJhVjBwTzF4dUlDQWdJSDFjYmx4dUlDQWdJSFJvYVhNdWIzQjBhVzl1Y3k1aWJH
OWphMUJoY21GdGN5NXphR2xtZENncE8xeHVYRzRnSUNBZ2RHaHBjeTVwYzFOcGJYQnNaU0E5SUdK
dlpIbE1aVzVuZEdnZ1BUMDlJREU3WEc0Z0lDQWdkR2hwY3k1aWJHOWphMUJoY21GdGN5QTlJSEJ5
YjJkeVlXMHVZbXh2WTJ0UVlYSmhiWE1nUHlCd2NtOW5jbUZ0TG1Kc2IyTnJVR0Z5WVcxekxteGxi
bWQwYUNBNklEQTdYRzVjYmlBZ0lDQnlaWFIxY200Z2RHaHBjenRjYmlBZ2ZTeGNibHh1SUNCQ2JH
OWphMU4wWVhSbGJXVnVkRG9nWm5WdVkzUnBiMjRvWW14dlkyc3BJSHRjYmlBZ0lDQjBjbUZ1YzJa
dmNtMU1hWFJsY21Gc1ZHOVFZWFJvS0dKc2IyTnJLVHRjYmx4dUlDQWdJR3hsZENCd2NtOW5jbUZ0
SUQwZ1lteHZZMnN1Y0hKdlozSmhiU3hjYmlBZ0lDQWdJQ0FnYVc1MlpYSnpaU0E5SUdKc2IyTnJM
bWx1ZG1WeWMyVTdYRzVjYmlBZ0lDQndjbTluY21GdElEMGdjSEp2WjNKaGJTQW1KaUIwYUdsekxt
TnZiWEJwYkdWUWNtOW5jbUZ0S0hCeWIyZHlZVzBwTzF4dUlDQWdJR2x1ZG1WeWMyVWdQU0JwYm5a
bGNuTmxJQ1ltSUhSb2FYTXVZMjl0Y0dsc1pWQnliMmR5WVcwb2FXNTJaWEp6WlNrN1hHNWNiaUFn
SUNCc1pYUWdkSGx3WlNBOUlIUm9hWE11WTJ4aGMzTnBabmxUWlhod2NpaGliRzlqYXlrN1hHNWNi
aUFnSUNCcFppQW9kSGx3WlNBOVBUMGdKMmhsYkhCbGNpY3BJSHRjYmlBZ0lDQWdJSFJvYVhNdWFH
VnNjR1Z5VTJWNGNISW9ZbXh2WTJzc0lIQnliMmR5WVcwc0lHbHVkbVZ5YzJVcE8xeHVJQ0FnSUgw
Z1pXeHpaU0JwWmlBb2RIbHdaU0E5UFQwZ0ozTnBiWEJzWlNjcElIdGNiaUFnSUNBZ0lIUm9hWE11
YzJsdGNHeGxVMlY0Y0hJb1lteHZZMnNwTzF4dVhHNGdJQ0FnSUNBdkx5QnViM2NnZEdoaGRDQjBh
R1VnYzJsdGNHeGxJRzExYzNSaFkyaGxJR2x6SUhKbGMyOXNkbVZrTENCM1pTQnVaV1ZrSUhSdlhH
NGdJQ0FnSUNBdkx5QmxkbUZzZFdGMFpTQnBkQ0JpZVNCbGVHVmpkWFJwYm1jZ1lHSnNiMk5yU0dW
c2NHVnlUV2x6YzJsdVoyQmNiaUFnSUNBZ0lIUm9hWE11YjNCamIyUmxLQ2R3ZFhOb1VISnZaM0po
YlNjc0lIQnliMmR5WVcwcE8xeHVJQ0FnSUNBZ2RHaHBjeTV2Y0dOdlpHVW9KM0IxYzJoUWNtOW5j
bUZ0Snl3Z2FXNTJaWEp6WlNrN1hHNGdJQ0FnSUNCMGFHbHpMbTl3WTI5a1pTZ25aVzF3ZEhsSVlY
Tm9KeWs3WEc0Z0lDQWdJQ0IwYUdsekxtOXdZMjlrWlNnbllteHZZMnRXWVd4MVpTY3NJR0pzYjJO
ckxuQmhkR2d1YjNKcFoybHVZV3dwTzF4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQjBhR2x6
TG1GdFltbG5kVzkxYzFObGVIQnlLR0pzYjJOckxDQndjbTluY21GdExDQnBiblpsY25ObEtUdGNi
bHh1SUNBZ0lDQWdMeThnYm05M0lIUm9ZWFFnZEdobElITnBiWEJzWlNCdGRYTjBZV05vWlNCcGN5
QnlaWE52YkhabFpDd2dkMlVnYm1WbFpDQjBiMXh1SUNBZ0lDQWdMeThnWlhaaGJIVmhkR1VnYVhR
Z1lua2daWGhsWTNWMGFXNW5JR0JpYkc5amEwaGxiSEJsY2sxcGMzTnBibWRnWEc0Z0lDQWdJQ0Iw
YUdsekxtOXdZMjlrWlNnbmNIVnphRkJ5YjJkeVlXMG5MQ0J3Y205bmNtRnRLVHRjYmlBZ0lDQWdJ
SFJvYVhNdWIzQmpiMlJsS0Nkd2RYTm9VSEp2WjNKaGJTY3NJR2x1ZG1WeWMyVXBPMXh1SUNBZ0lD
QWdkR2hwY3k1dmNHTnZaR1VvSjJWdGNIUjVTR0Z6YUNjcE8xeHVJQ0FnSUNBZ2RHaHBjeTV2Y0dO
dlpHVW9KMkZ0WW1sbmRXOTFjMEpzYjJOclZtRnNkV1VuS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0Iw
YUdsekxtOXdZMjlrWlNnbllYQndaVzVrSnlrN1hHNGdJSDBzWEc1Y2JpQWdSR1ZqYjNKaGRHOXlR
bXh2WTJzb1pHVmpiM0poZEc5eUtTQjdYRzRnSUNBZ2JHVjBJSEJ5YjJkeVlXMGdQU0JrWldOdmNt
RjBiM0l1Y0hKdlozSmhiU0FtSmlCMGFHbHpMbU52YlhCcGJHVlFjbTluY21GdEtHUmxZMjl5WVhS
dmNpNXdjbTluY21GdEtUdGNiaUFnSUNCc1pYUWdjR0Z5WVcxeklEMGdkR2hwY3k1elpYUjFjRVox
Ykd4TmRYTjBZV05vWlZCaGNtRnRjeWhrWldOdmNtRjBiM0lzSUhCeWIyZHlZVzBzSUhWdVpHVm1h
VzVsWkNrc1hHNGdJQ0FnSUNBZ0lIQmhkR2dnUFNCa1pXTnZjbUYwYjNJdWNHRjBhRHRjYmx4dUlD
QWdJSFJvYVhNdWRYTmxSR1ZqYjNKaGRHOXljeUE5SUhSeWRXVTdYRzRnSUNBZ2RHaHBjeTV2Y0dO
dlpHVW9KM0psWjJsemRHVnlSR1ZqYjNKaGRHOXlKeXdnY0dGeVlXMXpMbXhsYm1kMGFDd2djR0Yw
YUM1dmNtbG5hVzVoYkNrN1hHNGdJSDBzWEc1Y2JpQWdVR0Z5ZEdsaGJGTjBZWFJsYldWdWREb2da
blZ1WTNScGIyNG9jR0Z5ZEdsaGJDa2dlMXh1SUNBZ0lIUm9hWE11ZFhObFVHRnlkR2xoYkNBOUlI
UnlkV1U3WEc1Y2JpQWdJQ0JzWlhRZ2NISnZaM0poYlNBOUlIQmhjblJwWVd3dWNISnZaM0poYlR0
Y2JpQWdJQ0JwWmlBb2NISnZaM0poYlNrZ2UxeHVJQ0FnSUNBZ2NISnZaM0poYlNBOUlIUm9hWE11
WTI5dGNHbHNaVkJ5YjJkeVlXMG9jR0Z5ZEdsaGJDNXdjbTluY21GdEtUdGNiaUFnSUNCOVhHNWNi
aUFnSUNCc1pYUWdjR0Z5WVcxeklEMGdjR0Z5ZEdsaGJDNXdZWEpoYlhNN1hHNGdJQ0FnYVdZZ0tI
QmhjbUZ0Y3k1c1pXNW5kR2dnUGlBeEtTQjdYRzRnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dSWGhqWlhC
MGFXOXVLQ2RWYm5OMWNIQnZjblJsWkNCdWRXMWlaWElnYjJZZ2NHRnlkR2xoYkNCaGNtZDFiV1Z1
ZEhNNklDY2dLeUJ3WVhKaGJYTXViR1Z1WjNSb0xDQndZWEowYVdGc0tUdGNiaUFnSUNCOUlHVnNj
MlVnYVdZZ0tDRndZWEpoYlhNdWJHVnVaM1JvS1NCN1hHNGdJQ0FnSUNCcFppQW9kR2hwY3k1dmNI
UnBiMjV6TG1WNGNHeHBZMmwwVUdGeWRHbGhiRU52Ym5SbGVIUXBJSHRjYmlBZ0lDQWdJQ0FnZEdo
cGN5NXZjR052WkdVb0ozQjFjMmhNYVhSbGNtRnNKeXdnSjNWdVpHVm1hVzVsWkNjcE8xeHVJQ0Fn
SUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ2NHRnlZVzF6TG5CMWMyZ29lM1I1Y0dVNklDZFFZ
WFJvUlhod2NtVnpjMmx2Ymljc0lIQmhjblJ6T2lCYlhTd2daR1Z3ZEdnNklEQjlLVHRjYmlBZ0lD
QWdJSDFjYmlBZ0lDQjlYRzVjYmlBZ0lDQnNaWFFnY0dGeWRHbGhiRTVoYldVZ1BTQndZWEowYVdG
c0xtNWhiV1V1YjNKcFoybHVZV3dzWEc0Z0lDQWdJQ0FnSUdselJIbHVZVzFwWXlBOUlIQmhjblJw
WVd3dWJtRnRaUzUwZVhCbElEMDlQU0FuVTNWaVJYaHdjbVZ6YzJsdmJpYzdYRzRnSUNBZ2FXWWdL
R2x6UkhsdVlXMXBZeWtnZTF4dUlDQWdJQ0FnZEdocGN5NWhZMk5sY0hRb2NHRnlkR2xoYkM1dVlX
MWxLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQjBhR2x6TG5ObGRIVndSblZzYkUxMWMzUmhZMmhsVUdG
eVlXMXpLSEJoY25ScFlXd3NJSEJ5YjJkeVlXMHNJSFZ1WkdWbWFXNWxaQ3dnZEhKMVpTazdYRzVj
YmlBZ0lDQnNaWFFnYVc1a1pXNTBJRDBnY0dGeWRHbGhiQzVwYm1SbGJuUWdmSHdnSnljN1hHNGdJ
Q0FnYVdZZ0tIUm9hWE11YjNCMGFXOXVjeTV3Y21WMlpXNTBTVzVrWlc1MElDWW1JR2x1WkdWdWRD
a2dlMXh1SUNBZ0lDQWdkR2hwY3k1dmNHTnZaR1VvSjJGd2NHVnVaRU52Ym5SbGJuUW5MQ0JwYm1S
bGJuUXBPMXh1SUNBZ0lDQWdhVzVrWlc1MElEMGdKeWM3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdkR2hw
Y3k1dmNHTnZaR1VvSjJsdWRtOXJaVkJoY25ScFlXd25MQ0JwYzBSNWJtRnRhV01zSUhCaGNuUnBZ
V3hPWVcxbExDQnBibVJsYm5RcE8xeHVJQ0FnSUhSb2FYTXViM0JqYjJSbEtDZGhjSEJsYm1RbktU
dGNiaUFnZlN4Y2JpQWdVR0Z5ZEdsaGJFSnNiMk5yVTNSaGRHVnRaVzUwT2lCbWRXNWpkR2x2Ymlo
d1lYSjBhV0ZzUW14dlkyc3BJSHRjYmlBZ0lDQjBhR2x6TGxCaGNuUnBZV3hUZEdGMFpXMWxiblFv
Y0dGeWRHbGhiRUpzYjJOcktUdGNiaUFnZlN4Y2JseHVJQ0JOZFhOMFlXTm9aVk4wWVhSbGJXVnVk
RG9nWm5WdVkzUnBiMjRvYlhWemRHRmphR1VwSUh0Y2JpQWdJQ0IwYUdsekxsTjFZa1Y0Y0hKbGMz
TnBiMjRvYlhWemRHRmphR1VwTzF4dVhHNGdJQ0FnYVdZZ0tHMTFjM1JoWTJobExtVnpZMkZ3WldR
Z0ppWWdJWFJvYVhNdWIzQjBhVzl1Y3k1dWIwVnpZMkZ3WlNrZ2UxeHVJQ0FnSUNBZ2RHaHBjeTV2
Y0dOdlpHVW9KMkZ3Y0dWdVpFVnpZMkZ3WldRbktUdGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJ
Q0FnZEdocGN5NXZjR052WkdVb0oyRndjR1Z1WkNjcE8xeHVJQ0FnSUgxY2JpQWdmU3hjYmlBZ1JH
VmpiM0poZEc5eUtHUmxZMjl5WVhSdmNpa2dlMXh1SUNBZ0lIUm9hWE11UkdWamIzSmhkRzl5UW14
dlkyc29aR1ZqYjNKaGRHOXlLVHRjYmlBZ2ZTeGNibHh1WEc0Z0lFTnZiblJsYm5SVGRHRjBaVzFs
Ym5RNklHWjFibU4wYVc5dUtHTnZiblJsYm5RcElIdGNiaUFnSUNCcFppQW9ZMjl1ZEdWdWRDNTJZ
V3gxWlNrZ2UxeHVJQ0FnSUNBZ2RHaHBjeTV2Y0dOdlpHVW9KMkZ3Y0dWdVpFTnZiblJsYm5RbkxD
QmpiMjUwWlc1MExuWmhiSFZsS1R0Y2JpQWdJQ0I5WEc0Z0lIMHNYRzVjYmlBZ1EyOXRiV1Z1ZEZO
MFlYUmxiV1Z1ZERvZ1puVnVZM1JwYjI0b0tTQjdmU3hjYmx4dUlDQlRkV0pGZUhCeVpYTnphVzl1
T2lCbWRXNWpkR2x2YmloelpYaHdjaWtnZTF4dUlDQWdJSFJ5WVc1elptOXliVXhwZEdWeVlXeFVi
MUJoZEdnb2MyVjRjSElwTzF4dUlDQWdJR3hsZENCMGVYQmxJRDBnZEdocGN5NWpiR0Z6YzJsbWVW
TmxlSEJ5S0hObGVIQnlLVHRjYmx4dUlDQWdJR2xtSUNoMGVYQmxJRDA5UFNBbmMybHRjR3hsSnlr
Z2UxeHVJQ0FnSUNBZ2RHaHBjeTV6YVcxd2JHVlRaWGh3Y2loelpYaHdjaWs3WEc0Z0lDQWdmU0Js
YkhObElHbG1JQ2gwZVhCbElEMDlQU0FuYUdWc2NHVnlKeWtnZTF4dUlDQWdJQ0FnZEdocGN5NW9a
V3h3WlhKVFpYaHdjaWh6Wlhod2NpazdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUhSb2FY
TXVZVzFpYVdkMWIzVnpVMlY0Y0hJb2MyVjRjSElwTzF4dUlDQWdJSDFjYmlBZ2ZTeGNiaUFnWVcx
aWFXZDFiM1Z6VTJWNGNISTZJR1oxYm1OMGFXOXVLSE5sZUhCeUxDQndjbTluY21GdExDQnBiblps
Y25ObEtTQjdYRzRnSUNBZ2JHVjBJSEJoZEdnZ1BTQnpaWGh3Y2k1d1lYUm9MRnh1SUNBZ0lDQWdJ
Q0J1WVcxbElEMGdjR0YwYUM1d1lYSjBjMXN3WFN4Y2JpQWdJQ0FnSUNBZ2FYTkNiRzlqYXlBOUlI
QnliMmR5WVcwZ0lUMGdiblZzYkNCOGZDQnBiblpsY25ObElDRTlJRzUxYkd3N1hHNWNiaUFnSUNC
MGFHbHpMbTl3WTI5a1pTZ25aMlYwUTI5dWRHVjRkQ2NzSUhCaGRHZ3VaR1Z3ZEdncE8xeHVYRzRn
SUNBZ2RHaHBjeTV2Y0dOdlpHVW9KM0IxYzJoUWNtOW5jbUZ0Snl3Z2NISnZaM0poYlNrN1hHNGdJ
Q0FnZEdocGN5NXZjR052WkdVb0ozQjFjMmhRY205bmNtRnRKeXdnYVc1MlpYSnpaU2s3WEc1Y2Jp
QWdJQ0J3WVhSb0xuTjBjbWxqZENBOUlIUnlkV1U3WEc0Z0lDQWdkR2hwY3k1aFkyTmxjSFFvY0dG
MGFDazdYRzVjYmlBZ0lDQjBhR2x6TG05d1kyOWtaU2duYVc1MmIydGxRVzFpYVdkMWIzVnpKeXdn
Ym1GdFpTd2dhWE5DYkc5amF5azdYRzRnSUgwc1hHNWNiaUFnYzJsdGNHeGxVMlY0Y0hJNklHWjFi
bU4wYVc5dUtITmxlSEJ5S1NCN1hHNGdJQ0FnYkdWMElIQmhkR2dnUFNCelpYaHdjaTV3WVhSb08x
eHVJQ0FnSUhCaGRHZ3VjM1J5YVdOMElEMGdkSEoxWlR0Y2JpQWdJQ0IwYUdsekxtRmpZMlZ3ZENo
d1lYUm9LVHRjYmlBZ0lDQjBhR2x6TG05d1kyOWtaU2duY21WemIyeDJaVkJ2YzNOcFlteGxUR0Z0
WW1SaEp5azdYRzRnSUgwc1hHNWNiaUFnYUdWc2NHVnlVMlY0Y0hJNklHWjFibU4wYVc5dUtITmxl
SEJ5TENCd2NtOW5jbUZ0TENCcGJuWmxjbk5sS1NCN1hHNGdJQ0FnYkdWMElIQmhjbUZ0Y3lBOUlI
Um9hWE11YzJWMGRYQkdkV3hzVFhWemRHRmphR1ZRWVhKaGJYTW9jMlY0Y0hJc0lIQnliMmR5WVcw
c0lHbHVkbVZ5YzJVcExGeHVJQ0FnSUNBZ0lDQndZWFJvSUQwZ2MyVjRjSEl1Y0dGMGFDeGNiaUFn
SUNBZ0lDQWdibUZ0WlNBOUlIQmhkR2d1Y0dGeWRITmJNRjA3WEc1Y2JpQWdJQ0JwWmlBb2RHaHBj
eTV2Y0hScGIyNXpMbXR1YjNkdVNHVnNjR1Z5YzF0dVlXMWxYU2tnZTF4dUlDQWdJQ0FnZEdocGN5
NXZjR052WkdVb0oybHVkbTlyWlV0dWIzZHVTR1ZzY0dWeUp5d2djR0Z5WVcxekxteGxibWQwYUN3
Z2JtRnRaU2s3WEc0Z0lDQWdmU0JsYkhObElHbG1JQ2gwYUdsekxtOXdkR2x2Ym5NdWEyNXZkMjVJ
Wld4d1pYSnpUMjVzZVNrZ2UxeHVJQ0FnSUNBZ2RHaHliM2NnYm1WM0lFVjRZMlZ3ZEdsdmJpZ25X
VzkxSUhOd1pXTnBabWxsWkNCcmJtOTNia2hsYkhCbGNuTlBibXg1TENCaWRYUWdkWE5sWkNCMGFH
VWdkVzVyYm05M2JpQm9aV3h3WlhJZ0p5QXJJRzVoYldVc0lITmxlSEJ5S1R0Y2JpQWdJQ0I5SUdW
c2MyVWdlMXh1SUNBZ0lDQWdjR0YwYUM1emRISnBZM1FnUFNCMGNuVmxPMXh1SUNBZ0lDQWdjR0Yw
YUM1bVlXeHplU0E5SUhSeWRXVTdYRzVjYmlBZ0lDQWdJSFJvYVhNdVlXTmpaWEIwS0hCaGRHZ3BP
MXh1SUNBZ0lDQWdkR2hwY3k1dmNHTnZaR1VvSjJsdWRtOXJaVWhsYkhCbGNpY3NJSEJoY21GdGN5
NXNaVzVuZEdnc0lIQmhkR2d1YjNKcFoybHVZV3dzSUVGVFZDNW9aV3h3WlhKekxuTnBiWEJzWlVs
a0tIQmhkR2dwS1R0Y2JpQWdJQ0I5WEc0Z0lIMHNYRzVjYmlBZ1VHRjBhRVY0Y0hKbGMzTnBiMjQ2
SUdaMWJtTjBhVzl1S0hCaGRHZ3BJSHRjYmlBZ0lDQjBhR2x6TG1Ga1pFUmxjSFJvS0hCaGRHZ3Va
R1Z3ZEdncE8xeHVJQ0FnSUhSb2FYTXViM0JqYjJSbEtDZG5aWFJEYjI1MFpYaDBKeXdnY0dGMGFD
NWtaWEIwYUNrN1hHNWNiaUFnSUNCc1pYUWdibUZ0WlNBOUlIQmhkR2d1Y0dGeWRITmJNRjBzWEc0
Z0lDQWdJQ0FnSUhOamIzQmxaQ0E5SUVGVFZDNW9aV3h3WlhKekxuTmpiM0JsWkVsa0tIQmhkR2dw
TEZ4dUlDQWdJQ0FnSUNCaWJHOWphMUJoY21GdFNXUWdQU0FoY0dGMGFDNWtaWEIwYUNBbUppQWhj
Mk52Y0dWa0lDWW1JSFJvYVhNdVlteHZZMnRRWVhKaGJVbHVaR1Y0S0c1aGJXVXBPMXh1WEc0Z0lD
QWdhV1lnS0dKc2IyTnJVR0Z5WVcxSlpDa2dlMXh1SUNBZ0lDQWdkR2hwY3k1dmNHTnZaR1VvSjJ4
dmIydDFjRUpzYjJOclVHRnlZVzBuTENCaWJHOWphMUJoY21GdFNXUXNJSEJoZEdndWNHRnlkSE1w
TzF4dUlDQWdJSDBnWld4elpTQnBaaUFvSVc1aGJXVXBJSHRjYmlBZ0lDQWdJQzh2SUVOdmJuUmxl
SFFnY21WbVpYSmxibU5sTENCcExtVXVJR0I3ZTJadmJ5QXVmWDFnSUc5eUlHQjdlMlp2YnlBdUxu
MTlZRnh1SUNBZ0lDQWdkR2hwY3k1dmNHTnZaR1VvSjNCMWMyaERiMjUwWlhoMEp5azdYRzRnSUNB
Z2ZTQmxiSE5sSUdsbUlDaHdZWFJvTG1SaGRHRXBJSHRjYmlBZ0lDQWdJSFJvYVhNdWIzQjBhVzl1
Y3k1a1lYUmhJRDBnZEhKMVpUdGNiaUFnSUNBZ0lIUm9hWE11YjNCamIyUmxLQ2RzYjI5cmRYQkVZ
WFJoSnl3Z2NHRjBhQzVrWlhCMGFDd2djR0YwYUM1d1lYSjBjeXdnY0dGMGFDNXpkSEpwWTNRcE8x
eHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0IwYUdsekxtOXdZMjlrWlNnbmJHOXZhM1Z3VDI1
RGIyNTBaWGgwSnl3Z2NHRjBhQzV3WVhKMGN5d2djR0YwYUM1bVlXeHplU3dnY0dGMGFDNXpkSEpw
WTNRc0lITmpiM0JsWkNrN1hHNGdJQ0FnZlZ4dUlDQjlMRnh1WEc0Z0lGTjBjbWx1WjB4cGRHVnlZ
V3c2SUdaMWJtTjBhVzl1S0hOMGNtbHVaeWtnZTF4dUlDQWdJSFJvYVhNdWIzQmpiMlJsS0Nkd2RY
Tm9VM1J5YVc1bkp5d2djM1J5YVc1bkxuWmhiSFZsS1R0Y2JpQWdmU3hjYmx4dUlDQk9kVzFpWlhK
TWFYUmxjbUZzT2lCbWRXNWpkR2x2YmlodWRXMWlaWElwSUh0Y2JpQWdJQ0IwYUdsekxtOXdZMjlr
WlNnbmNIVnphRXhwZEdWeVlXd25MQ0J1ZFcxaVpYSXVkbUZzZFdVcE8xeHVJQ0I5TEZ4dVhHNGdJ
RUp2YjJ4bFlXNU1hWFJsY21Gc09pQm1kVzVqZEdsdmJpaGliMjlzS1NCN1hHNGdJQ0FnZEdocGN5
NXZjR052WkdVb0ozQjFjMmhNYVhSbGNtRnNKeXdnWW05dmJDNTJZV3gxWlNrN1hHNGdJSDBzWEc1
Y2JpQWdWVzVrWldacGJtVmtUR2wwWlhKaGJEb2dablZ1WTNScGIyNG9LU0I3WEc0Z0lDQWdkR2hw
Y3k1dmNHTnZaR1VvSjNCMWMyaE1hWFJsY21Gc0p5d2dKM1Z1WkdWbWFXNWxaQ2NwTzF4dUlDQjlM
Rnh1WEc0Z0lFNTFiR3hNYVhSbGNtRnNPaUJtZFc1amRHbHZiaWdwSUh0Y2JpQWdJQ0IwYUdsekxt
OXdZMjlrWlNnbmNIVnphRXhwZEdWeVlXd25MQ0FuYm5Wc2JDY3BPMXh1SUNCOUxGeHVYRzRnSUVo
aGMyZzZJR1oxYm1OMGFXOXVLR2hoYzJncElIdGNiaUFnSUNCc1pYUWdjR0ZwY25NZ1BTQm9ZWE5v
TG5CaGFYSnpMRnh1SUNBZ0lDQWdJQ0JwSUQwZ01DeGNiaUFnSUNBZ0lDQWdiQ0E5SUhCaGFYSnpM
bXhsYm1kMGFEdGNibHh1SUNBZ0lIUm9hWE11YjNCamIyUmxLQ2R3ZFhOb1NHRnphQ2NwTzF4dVhH
NGdJQ0FnWm05eUlDZzdJR2tnUENCc095QnBLeXNwSUh0Y2JpQWdJQ0FnSUhSb2FYTXVjSFZ6YUZC
aGNtRnRLSEJoYVhKelcybGRMblpoYkhWbEtUdGNiaUFnSUNCOVhHNGdJQ0FnZDJocGJHVWdLR2t0
TFNrZ2UxeHVJQ0FnSUNBZ2RHaHBjeTV2Y0dOdlpHVW9KMkZ6YzJsbmJsUnZTR0Z6YUNjc0lIQmhh
WEp6VzJsZExtdGxlU2s3WEc0Z0lDQWdmVnh1SUNBZ0lIUm9hWE11YjNCamIyUmxLQ2R3YjNCSVlY
Tm9KeWs3WEc0Z0lIMHNYRzVjYmlBZ0x5OGdTRVZNVUVWU1UxeHVJQ0J2Y0dOdlpHVTZJR1oxYm1O
MGFXOXVLRzVoYldVcElIdGNiaUFnSUNCMGFHbHpMbTl3WTI5a1pYTXVjSFZ6YUNoN0lHOXdZMjlr
WlRvZ2JtRnRaU3dnWVhKbmN6b2djMnhwWTJVdVkyRnNiQ2hoY21kMWJXVnVkSE1zSURFcExDQnNi
Mk02SUhSb2FYTXVjMjkxY21ObFRtOWtaVnN3WFM1c2IyTWdmU2s3WEc0Z0lIMHNYRzVjYmlBZ1lX
UmtSR1Z3ZEdnNklHWjFibU4wYVc5dUtHUmxjSFJvS1NCN1hHNGdJQ0FnYVdZZ0tDRmtaWEIwYUNr
Z2UxeHVJQ0FnSUNBZ2NtVjBkWEp1TzF4dUlDQWdJSDFjYmx4dUlDQWdJSFJvYVhNdWRYTmxSR1Z3
ZEdoeklEMGdkSEoxWlR0Y2JpQWdmU3hjYmx4dUlDQmpiR0Z6YzJsbWVWTmxlSEJ5T2lCbWRXNWpk
R2x2YmloelpYaHdjaWtnZTF4dUlDQWdJR3hsZENCcGMxTnBiWEJzWlNBOUlFRlRWQzVvWld4d1pY
SnpMbk5wYlhCc1pVbGtLSE5sZUhCeUxuQmhkR2dwTzF4dVhHNGdJQ0FnYkdWMElHbHpRbXh2WTJ0
UVlYSmhiU0E5SUdselUybHRjR3hsSUNZbUlDRWhkR2hwY3k1aWJHOWphMUJoY21GdFNXNWtaWGdv
YzJWNGNISXVjR0YwYUM1d1lYSjBjMXN3WFNrN1hHNWNiaUFnSUNBdkx5QmhJRzExYzNSaFkyaGxJ
R2x6SUdGdUlHVnNhV2RwWW14bElHaGxiSEJsY2lCcFpqcGNiaUFnSUNBdkx5QXFJR2wwY3lCcFpD
QnBjeUJ6YVcxd2JHVWdLR0VnYzJsdVoyeGxJSEJoY25Rc0lHNXZkQ0JnZEdocGMyQWdiM0lnWUM0
dVlDbGNiaUFnSUNCc1pYUWdhWE5JWld4d1pYSWdQU0FoYVhOQ2JHOWphMUJoY21GdElDWW1JRUZU
VkM1b1pXeHdaWEp6TG1obGJIQmxja1Y0Y0hKbGMzTnBiMjRvYzJWNGNISXBPMXh1WEc0Z0lDQWdM
eThnYVdZZ1lTQnRkWE4wWVdOb1pTQnBjeUJoYmlCbGJHbG5hV0pzWlNCb1pXeHdaWElnWW5WMElH
NXZkQ0JoSUdSbFptbHVhWFJsWEc0Z0lDQWdMeThnYUdWc2NHVnlMQ0JwZENCcGN5QmhiV0pwWjNW
dmRYTXNJR0Z1WkNCM2FXeHNJR0psSUhKbGMyOXNkbVZrSUdsdUlHRWdiR0YwWlhKY2JpQWdJQ0F2
THlCd1lYTnpJRzl5SUdGMElISjFiblJwYldVdVhHNGdJQ0FnYkdWMElHbHpSV3hwWjJsaWJHVWdQ
U0FoYVhOQ2JHOWphMUJoY21GdElDWW1JQ2hwYzBobGJIQmxjaUI4ZkNCcGMxTnBiWEJzWlNrN1hH
NWNiaUFnSUNBdkx5QnBaaUJoYldKcFozVnZkWE1zSUhkbElHTmhiaUJ3YjNOemFXSnNlU0J5WlhO
dmJIWmxJSFJvWlNCaGJXSnBaM1ZwZEhrZ2JtOTNYRzRnSUNBZ0x5OGdRVzRnWld4cFoybGliR1Vn
YUdWc2NHVnlJR2x6SUc5dVpTQjBhR0YwSUdSdlpYTWdibTkwSUdoaGRtVWdZU0JqYjIxd2JHVjRJ
SEJoZEdnc0lHa3VaUzRnWUhSb2FYTXVabTl2WUN3Z1lDNHVMMlp2YjJBZ1pYUmpMbHh1SUNBZ0lH
bG1JQ2hwYzBWc2FXZHBZbXhsSUNZbUlDRnBjMGhsYkhCbGNpa2dlMXh1SUNBZ0lDQWdiR1YwSUc1
aGJXVWdQU0J6Wlhod2NpNXdZWFJvTG5CaGNuUnpXekJkTEZ4dUlDQWdJQ0FnSUNBZ0lHOXdkR2x2
Ym5NZ1BTQjBhR2x6TG05d2RHbHZibk03WEc1Y2JpQWdJQ0FnSUdsbUlDaHZjSFJwYjI1ekxtdHVi
M2R1U0dWc2NHVnljMXR1WVcxbFhTa2dlMXh1SUNBZ0lDQWdJQ0JwYzBobGJIQmxjaUE5SUhSeWRX
VTdYRzRnSUNBZ0lDQjlJR1ZzYzJVZ2FXWWdLRzl3ZEdsdmJuTXVhMjV2ZDI1SVpXeHdaWEp6VDI1
c2VTa2dlMXh1SUNBZ0lDQWdJQ0JwYzBWc2FXZHBZbXhsSUQwZ1ptRnNjMlU3WEc0Z0lDQWdJQ0I5
WEc0Z0lDQWdmVnh1WEc0Z0lDQWdhV1lnS0dselNHVnNjR1Z5S1NCN1hHNGdJQ0FnSUNCeVpYUjFj
bTRnSjJobGJIQmxjaWM3WEc0Z0lDQWdmU0JsYkhObElHbG1JQ2hwYzBWc2FXZHBZbXhsS1NCN1hH
NGdJQ0FnSUNCeVpYUjFjbTRnSjJGdFltbG5kVzkxY3ljN1hHNGdJQ0FnZlNCbGJITmxJSHRjYmlB
Z0lDQWdJSEpsZEhWeWJpQW5jMmx0Y0d4bEp6dGNiaUFnSUNCOVhHNGdJSDBzWEc1Y2JpQWdjSFZ6
YUZCaGNtRnRjem9nWm5WdVkzUnBiMjRvY0dGeVlXMXpLU0I3WEc0Z0lDQWdabTl5SUNoc1pYUWdh
U0E5SURBc0lHd2dQU0J3WVhKaGJYTXViR1Z1WjNSb095QnBJRHdnYkRzZ2FTc3JLU0I3WEc0Z0lD
QWdJQ0IwYUdsekxuQjFjMmhRWVhKaGJTaHdZWEpoYlhOYmFWMHBPMXh1SUNBZ0lIMWNiaUFnZlN4
Y2JseHVJQ0J3ZFhOb1VHRnlZVzA2SUdaMWJtTjBhVzl1S0haaGJDa2dlMXh1SUNBZ0lHeGxkQ0Iy
WVd4MVpTQTlJSFpoYkM1MllXeDFaU0FoUFNCdWRXeHNJRDhnZG1Gc0xuWmhiSFZsSURvZ2RtRnNM
bTl5YVdkcGJtRnNJSHg4SUNjbk8xeHVYRzRnSUNBZ2FXWWdLSFJvYVhNdWMzUnlhVzVuVUdGeVlX
MXpLU0I3WEc0Z0lDQWdJQ0JwWmlBb2RtRnNkV1V1Y21Wd2JHRmpaU2tnZTF4dUlDQWdJQ0FnSUNC
MllXeDFaU0E5SUhaaGJIVmxYRzRnSUNBZ0lDQWdJQ0FnSUNBdWNtVndiR0ZqWlNndlhpaGNYQzQv
WEZ3dVhGd3ZLU292Wnl3Z0p5Y3BYRzRnSUNBZ0lDQWdJQ0FnSUNBdWNtVndiR0ZqWlNndlhGd3ZM
MmNzSUNjdUp5azdYRzRnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJR2xtSUNoMllXd3VaR1Z3ZEdncElI
dGNiaUFnSUNBZ0lDQWdkR2hwY3k1aFpHUkVaWEIwYUNoMllXd3VaR1Z3ZEdncE8xeHVJQ0FnSUNB
Z2ZWeHVJQ0FnSUNBZ2RHaHBjeTV2Y0dOdlpHVW9KMmRsZEVOdmJuUmxlSFFuTENCMllXd3VaR1Z3
ZEdnZ2ZId2dNQ2s3WEc0Z0lDQWdJQ0IwYUdsekxtOXdZMjlrWlNnbmNIVnphRk4wY21sdVoxQmhj
bUZ0Snl3Z2RtRnNkV1VzSUhaaGJDNTBlWEJsS1R0Y2JseHVJQ0FnSUNBZ2FXWWdLSFpoYkM1MGVY
QmxJRDA5UFNBblUzVmlSWGh3Y21WemMybHZiaWNwSUh0Y2JpQWdJQ0FnSUNBZ0x5OGdVM1ZpUlho
d2NtVnpjMmx2Ym5NZ1oyVjBJR1YyWVd4MVlYUmxaQ0JoYm1RZ2NHRnpjMlZrSUdsdVhHNGdJQ0Fn
SUNBZ0lDOHZJR2x1SUhOMGNtbHVaeUJ3WVhKaGJYTWdiVzlrWlM1Y2JpQWdJQ0FnSUNBZ2RHaHBj
eTVoWTJObGNIUW9kbUZzS1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lD
QWdhV1lnS0hSb2FYTXVkSEpoWTJ0SlpITXBJSHRjYmlBZ0lDQWdJQ0FnYkdWMElHSnNiMk5yVUdG
eVlXMUpibVJsZUR0Y2JpQWdJQ0FnSUNBZ2FXWWdLSFpoYkM1d1lYSjBjeUFtSmlBaFFWTlVMbWhs
YkhCbGNuTXVjMk52Y0dWa1NXUW9kbUZzS1NBbUppQWhkbUZzTG1SbGNIUm9LU0I3WEc0Z0lDQWdJ
Q0FnSUNBZ0lHSnNiMk5yVUdGeVlXMUpibVJsZUNBOUlIUm9hWE11WW14dlkydFFZWEpoYlVsdVpH
VjRLSFpoYkM1d1lYSjBjMXN3WFNrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdhV1lnS0dK
c2IyTnJVR0Z5WVcxSmJtUmxlQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lHeGxkQ0JpYkc5amExQmhjbUZ0
UTJocGJHUWdQU0IyWVd3dWNHRnlkSE11YzJ4cFkyVW9NU2t1YW05cGJpZ25MaWNwTzF4dUlDQWdJ
Q0FnSUNBZ0lIUm9hWE11YjNCamIyUmxLQ2R3ZFhOb1NXUW5MQ0FuUW14dlkydFFZWEpoYlNjc0lH
SnNiMk5yVUdGeVlXMUpibVJsZUN3Z1lteHZZMnRRWVhKaGJVTm9hV3hrS1R0Y2JpQWdJQ0FnSUNB
Z2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ0lDQjJZV3gxWlNBOUlIWmhiQzV2Y21sbmFXNWhiQ0I4
ZkNCMllXeDFaVHRjYmlBZ0lDQWdJQ0FnSUNCcFppQW9kbUZzZFdVdWNtVndiR0ZqWlNrZ2UxeHVJ
Q0FnSUNBZ0lDQWdJQ0FnZG1Gc2RXVWdQU0IyWVd4MVpWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lD
NXlaWEJzWVdObEtDOWVkR2hwY3lnL09seGNMbndrS1M4c0lDY25LVnh1SUNBZ0lDQWdJQ0FnSUNB
Z0lDQWdJQzV5WlhCc1lXTmxLQzllWEZ3dVhGd3ZMeXdnSnljcFhHNGdJQ0FnSUNBZ0lDQWdJQ0Fn
SUNBZ0xuSmxjR3hoWTJVb0wxNWNYQzRrTHl3Z0p5Y3BPMXh1SUNBZ0lDQWdJQ0FnSUgxY2JseHVJ
Q0FnSUNBZ0lDQWdJSFJvYVhNdWIzQmpiMlJsS0Nkd2RYTm9TV1FuTENCMllXd3VkSGx3WlN3Z2Rt
RnNkV1VwTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNCMGFHbHpMbUZqWTJW
d2RDaDJZV3dwTzF4dUlDQWdJSDFjYmlBZ2ZTeGNibHh1SUNCelpYUjFjRVoxYkd4TmRYTjBZV05v
WlZCaGNtRnRjem9nWm5WdVkzUnBiMjRvYzJWNGNISXNJSEJ5YjJkeVlXMHNJR2x1ZG1WeWMyVXNJ
Rzl0YVhSRmJYQjBlU2tnZTF4dUlDQWdJR3hsZENCd1lYSmhiWE1nUFNCelpYaHdjaTV3WVhKaGJY
TTdYRzRnSUNBZ2RHaHBjeTV3ZFhOb1VHRnlZVzF6S0hCaGNtRnRjeWs3WEc1Y2JpQWdJQ0IwYUds
ekxtOXdZMjlrWlNnbmNIVnphRkJ5YjJkeVlXMG5MQ0J3Y205bmNtRnRLVHRjYmlBZ0lDQjBhR2x6
TG05d1kyOWtaU2duY0hWemFGQnliMmR5WVcwbkxDQnBiblpsY25ObEtUdGNibHh1SUNBZ0lHbG1J
Q2h6Wlhod2NpNW9ZWE5vS1NCN1hHNGdJQ0FnSUNCMGFHbHpMbUZqWTJWd2RDaHpaWGh3Y2k1b1lY
Tm9LVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2RHaHBjeTV2Y0dOdlpHVW9KMlZ0Y0hS
NVNHRnphQ2NzSUc5dGFYUkZiWEIwZVNrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnY21WMGRYSnVJSEJo
Y21GdGN6dGNiaUFnZlN4Y2JseHVJQ0JpYkc5amExQmhjbUZ0U1c1a1pYZzZJR1oxYm1OMGFXOXVL
RzVoYldVcElIdGNiaUFnSUNCbWIzSWdLR3hsZENCa1pYQjBhQ0E5SURBc0lHeGxiaUE5SUhSb2FY
TXViM0IwYVc5dWN5NWliRzlqYTFCaGNtRnRjeTVzWlc1bmRHZzdJR1JsY0hSb0lEd2diR1Z1T3lC
a1pYQjBhQ3NyS1NCN1hHNGdJQ0FnSUNCc1pYUWdZbXh2WTJ0UVlYSmhiWE1nUFNCMGFHbHpMbTl3
ZEdsdmJuTXVZbXh2WTJ0UVlYSmhiWE5iWkdWd2RHaGRMRnh1SUNBZ0lDQWdJQ0FnSUhCaGNtRnRJ
RDBnWW14dlkydFFZWEpoYlhNZ0ppWWdhVzVrWlhoUFppaGliRzlqYTFCaGNtRnRjeXdnYm1GdFpT
azdYRzRnSUNBZ0lDQnBaaUFvWW14dlkydFFZWEpoYlhNZ0ppWWdjR0Z5WVcwZ1BqMGdNQ2tnZTF4
dUlDQWdJQ0FnSUNCeVpYUjFjbTRnVzJSbGNIUm9MQ0J3WVhKaGJWMDdYRzRnSUNBZ0lDQjlYRzRn
SUNBZ2ZWeHVJQ0I5WEc1OU8xeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdjSEpsWTI5dGNHbHNa
U2hwYm5CMWRDd2diM0IwYVc5dWN5d2daVzUyS1NCN1hHNGdJR2xtSUNocGJuQjFkQ0E5UFNCdWRX
eHNJSHg4SUNoMGVYQmxiMllnYVc1d2RYUWdJVDA5SUNkemRISnBibWNuSUNZbUlHbHVjSFYwTG5S
NWNHVWdJVDA5SUNkUWNtOW5jbUZ0SnlrcElIdGNiaUFnSUNCMGFISnZkeUJ1WlhjZ1JYaGpaWEIw
YVc5dUtDZFpiM1VnYlhWemRDQndZWE56SUdFZ2MzUnlhVzVuSUc5eUlFaGhibVJzWldKaGNuTWdR
Vk5VSUhSdklFaGhibVJzWldKaGNuTXVjSEpsWTI5dGNHbHNaUzRnV1c5MUlIQmhjM05sWkNBbklD
c2dhVzV3ZFhRcE8xeHVJQ0I5WEc1Y2JpQWdiM0IwYVc5dWN5QTlJRzl3ZEdsdmJuTWdmSHdnZTMw
N1hHNGdJR2xtSUNnaEtDZGtZWFJoSnlCcGJpQnZjSFJwYjI1ektTa2dlMXh1SUNBZ0lHOXdkR2x2
Ym5NdVpHRjBZU0E5SUhSeWRXVTdYRzRnSUgxY2JpQWdhV1lnS0c5d2RHbHZibk11WTI5dGNHRjBL
U0I3WEc0Z0lDQWdiM0IwYVc5dWN5NTFjMlZFWlhCMGFITWdQU0IwY25WbE8xeHVJQ0I5WEc1Y2Jp
QWdiR1YwSUdGemRDQTlJR1Z1ZGk1d1lYSnpaU2hwYm5CMWRDd2diM0IwYVc5dWN5a3NYRzRnSUNB
Z0lDQmxiblpwY205dWJXVnVkQ0E5SUc1bGR5Qmxibll1UTI5dGNHbHNaWElvS1M1amIyMXdhV3hs
S0dGemRDd2diM0IwYVc5dWN5azdYRzRnSUhKbGRIVnliaUJ1WlhjZ1pXNTJMa3BoZG1GVFkzSnBj
SFJEYjIxd2FXeGxjaWdwTG1OdmJYQnBiR1VvWlc1MmFYSnZibTFsYm5Rc0lHOXdkR2x2Ym5NcE8x
eHVmVnh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWTI5dGNHbHNaU2hwYm5CMWRDd2diM0IwYVc5
dWN5QTlJSHQ5TENCbGJuWXBJSHRjYmlBZ2FXWWdLR2x1Y0hWMElEMDlJRzUxYkd3Z2ZId2dLSFI1
Y0dWdlppQnBibkIxZENBaFBUMGdKM04wY21sdVp5Y2dKaVlnYVc1d2RYUXVkSGx3WlNBaFBUMGdK
MUJ5YjJkeVlXMG5LU2tnZTF4dUlDQWdJSFJvY205M0lHNWxkeUJGZUdObGNIUnBiMjRvSjFsdmRT
QnRkWE4wSUhCaGMzTWdZU0J6ZEhKcGJtY2diM0lnU0dGdVpHeGxZbUZ5Y3lCQlUxUWdkRzhnU0dG
dVpHeGxZbUZ5Y3k1amIyMXdhV3hsTGlCWmIzVWdjR0Z6YzJWa0lDY2dLeUJwYm5CMWRDazdYRzRn
SUgxY2JseHVJQ0JwWmlBb0lTZ25aR0YwWVNjZ2FXNGdiM0IwYVc5dWN5a3BJSHRjYmlBZ0lDQnZj
SFJwYjI1ekxtUmhkR0VnUFNCMGNuVmxPMXh1SUNCOVhHNGdJR2xtSUNodmNIUnBiMjV6TG1OdmJY
QmhkQ2tnZTF4dUlDQWdJRzl3ZEdsdmJuTXVkWE5sUkdWd2RHaHpJRDBnZEhKMVpUdGNiaUFnZlZ4
dVhHNGdJR3hsZENCamIyMXdhV3hsWkR0Y2JseHVJQ0JtZFc1amRHbHZiaUJqYjIxd2FXeGxTVzV3
ZFhRb0tTQjdYRzRnSUNBZ2JHVjBJR0Z6ZENBOUlHVnVkaTV3WVhKelpTaHBibkIxZEN3Z2IzQjBh
Vzl1Y3lrc1hHNGdJQ0FnSUNBZ0lHVnVkbWx5YjI1dFpXNTBJRDBnYm1WM0lHVnVkaTVEYjIxd2FX
eGxjaWdwTG1OdmJYQnBiR1VvWVhOMExDQnZjSFJwYjI1ektTeGNiaUFnSUNBZ0lDQWdkR1Z0Y0d4
aGRHVlRjR1ZqSUQwZ2JtVjNJR1Z1ZGk1S1lYWmhVMk55YVhCMFEyOXRjR2xzWlhJb0tTNWpiMjF3
YVd4bEtHVnVkbWx5YjI1dFpXNTBMQ0J2Y0hScGIyNXpMQ0IxYm1SbFptbHVaV1FzSUhSeWRXVXBP
MXh1SUNBZ0lISmxkSFZ5YmlCbGJuWXVkR1Z0Y0d4aGRHVW9kR1Z0Y0d4aGRHVlRjR1ZqS1R0Y2Jp
QWdmVnh1WEc0Z0lDOHZJRlJsYlhCc1lYUmxJR2x6SUc5dWJIa2dZMjl0Y0dsc1pXUWdiMjRnWm1s
eWMzUWdkWE5sSUdGdVpDQmpZV05vWldRZ1lXWjBaWElnZEdoaGRDQndiMmx1ZEM1Y2JpQWdablZ1
WTNScGIyNGdjbVYwS0dOdmJuUmxlSFFzSUdWNFpXTlBjSFJwYjI1ektTQjdYRzRnSUNBZ2FXWWdL
Q0ZqYjIxd2FXeGxaQ2tnZTF4dUlDQWdJQ0FnWTI5dGNHbHNaV1FnUFNCamIyMXdhV3hsU1c1d2RY
UW9LVHRjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUdOdmJYQnBiR1ZrTG1OaGJHd29kR2hwY3l3
Z1kyOXVkR1Y0ZEN3Z1pYaGxZMDl3ZEdsdmJuTXBPMXh1SUNCOVhHNGdJSEpsZEM1ZmMyVjBkWEFn
UFNCbWRXNWpkR2x2YmloelpYUjFjRTl3ZEdsdmJuTXBJSHRjYmlBZ0lDQnBaaUFvSVdOdmJYQnBi
R1ZrS1NCN1hHNGdJQ0FnSUNCamIyMXdhV3hsWkNBOUlHTnZiWEJwYkdWSmJuQjFkQ2dwTzF4dUlD
QWdJSDFjYmlBZ0lDQnlaWFIxY200Z1kyOXRjR2xzWldRdVgzTmxkSFZ3S0hObGRIVndUM0IwYVc5
dWN5azdYRzRnSUgwN1hHNGdJSEpsZEM1ZlkyaHBiR1FnUFNCbWRXNWpkR2x2YmlocExDQmtZWFJo
TENCaWJHOWphMUJoY21GdGN5d2daR1Z3ZEdoektTQjdYRzRnSUNBZ2FXWWdLQ0ZqYjIxd2FXeGxa
Q2tnZTF4dUlDQWdJQ0FnWTI5dGNHbHNaV1FnUFNCamIyMXdhV3hsU1c1d2RYUW9LVHRjYmlBZ0lD
QjlYRzRnSUNBZ2NtVjBkWEp1SUdOdmJYQnBiR1ZrTGw5amFHbHNaQ2hwTENCa1lYUmhMQ0JpYkc5
amExQmhjbUZ0Y3l3Z1pHVndkR2h6S1R0Y2JpQWdmVHRjYmlBZ2NtVjBkWEp1SUhKbGREdGNibjFj
Ymx4dVpuVnVZM1JwYjI0Z1lYSm5SWEYxWVd4ektHRXNJR0lwSUh0Y2JpQWdhV1lnS0dFZ1BUMDlJ
R0lwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkSEoxWlR0Y2JpQWdmVnh1WEc0Z0lHbG1JQ2hwYzBGeWNt
RjVLR0VwSUNZbUlHbHpRWEp5WVhrb1lpa2dKaVlnWVM1c1pXNW5kR2dnUFQwOUlHSXViR1Z1WjNS
b0tTQjdYRzRnSUNBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQmhMbXhsYm1kMGFEc2dhU3Ny
S1NCN1hHNGdJQ0FnSUNCcFppQW9JV0Z5WjBWeGRXRnNjeWhoVzJsZExDQmlXMmxkS1NrZ2UxeHVJ
Q0FnSUNBZ0lDQnlaWFIxY200Z1ptRnNjMlU3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNBZ0lI
SmxkSFZ5YmlCMGNuVmxPMXh1SUNCOVhHNTlYRzVjYm1aMWJtTjBhVzl1SUhSeVlXNXpabTl5YlV4
cGRHVnlZV3hVYjFCaGRHZ29jMlY0Y0hJcElIdGNiaUFnYVdZZ0tDRnpaWGh3Y2k1d1lYUm9MbkJo
Y25SektTQjdYRzRnSUNBZ2JHVjBJR3hwZEdWeVlXd2dQU0J6Wlhod2NpNXdZWFJvTzF4dUlDQWdJ
Qzh2SUVOaGMzUnBibWNnZEc4Z2MzUnlhVzVuSUdobGNtVWdkRzhnYldGclpTQm1ZV3h6WlNCaGJt
UWdNQ0JzYVhSbGNtRnNJSFpoYkhWbGN5QndiR0Y1SUc1cFkyVnNlU0IzYVhSb0lIUm9aU0J5WlhO
MFhHNGdJQ0FnTHk4Z2IyWWdkR2hsSUhONWMzUmxiUzVjYmlBZ0lDQnpaWGh3Y2k1d1lYUm9JRDBn
ZTF4dUlDQWdJQ0FnZEhsd1pUb2dKMUJoZEdoRmVIQnlaWE56YVc5dUp5eGNiaUFnSUNBZ0lHUmhk
R0U2SUdaaGJITmxMRnh1SUNBZ0lDQWdaR1Z3ZEdnNklEQXNYRzRnSUNBZ0lDQndZWEowY3pvZ1cy
eHBkR1Z5WVd3dWIzSnBaMmx1WVd3Z0t5QW5KMTBzWEc0Z0lDQWdJQ0J2Y21sbmFXNWhiRG9nYkds
MFpYSmhiQzV2Y21sbmFXNWhiQ0FySUNjbkxGeHVJQ0FnSUNBZ2JHOWpPaUJzYVhSbGNtRnNMbXh2
WTF4dUlDQWdJSDA3WEc0Z0lIMWNibjFjYmlKZGZRPT0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2Nqcy9oYW5kbGViYXJzL2NvbXBp
bGVyL2hlbHBlcnMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJh
cnMvZGlzdC9janMvaGFuZGxlYmFycy9jb21waWxlci9oZWxwZXJzLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBm
NWNiZjI1OGJmNDNhZjg4NzZmOGJlYThiZDAwOWM3MWU4NzQ2NDEKLS0tIC9kZXYvbnVsbAorKysg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9janMvaGFu
ZGxlYmFycy9jb21waWxlci9oZWxwZXJzLmpzCkBAIC0wLDAgKzEsMjMwIEBACisndXNlIHN0cmlj
dCc7CisKK2V4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7CitleHBvcnRzLlNvdXJjZUxvY2F0aW9u
ID0gU291cmNlTG9jYXRpb247CitleHBvcnRzLmlkID0gaWQ7CitleHBvcnRzLnN0cmlwRmxhZ3Mg
PSBzdHJpcEZsYWdzOworZXhwb3J0cy5zdHJpcENvbW1lbnQgPSBzdHJpcENvbW1lbnQ7CitleHBv
cnRzLnByZXBhcmVQYXRoID0gcHJlcGFyZVBhdGg7CitleHBvcnRzLnByZXBhcmVNdXN0YWNoZSA9
IHByZXBhcmVNdXN0YWNoZTsKK2V4cG9ydHMucHJlcGFyZVJhd0Jsb2NrID0gcHJlcGFyZVJhd0Js
b2NrOworZXhwb3J0cy5wcmVwYXJlQmxvY2sgPSBwcmVwYXJlQmxvY2s7CitleHBvcnRzLnByZXBh
cmVQcm9ncmFtID0gcHJlcGFyZVByb2dyYW07CitleHBvcnRzLnByZXBhcmVQYXJ0aWFsQmxvY2sg
PSBwcmVwYXJlUGFydGlhbEJsb2NrOworLy8gaXN0YW5idWwgaWdub3JlIG5leHQKKworZnVuY3Rp
b24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01v
ZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfQorCit2YXIgX2V4Y2VwdGlvbiA9IHJl
cXVpcmUoJy4uL2V4Y2VwdGlvbicpOworCit2YXIgX2V4Y2VwdGlvbjIgPSBfaW50ZXJvcFJlcXVp
cmVEZWZhdWx0KF9leGNlcHRpb24pOworCitmdW5jdGlvbiB2YWxpZGF0ZUNsb3NlKG9wZW4sIGNs
b3NlKSB7CisgIGNsb3NlID0gY2xvc2UucGF0aCA/IGNsb3NlLnBhdGgub3JpZ2luYWwgOiBjbG9z
ZTsKKworICBpZiAob3Blbi5wYXRoLm9yaWdpbmFsICE9PSBjbG9zZSkgeworICAgIHZhciBlcnJv
ck5vZGUgPSB7IGxvYzogb3Blbi5wYXRoLmxvYyB9OworCisgICAgdGhyb3cgbmV3IF9leGNlcHRp
b24yWydkZWZhdWx0J10ob3Blbi5wYXRoLm9yaWdpbmFsICsgIiBkb2Vzbid0IG1hdGNoICIgKyBj
bG9zZSwgZXJyb3JOb2RlKTsKKyAgfQorfQorCitmdW5jdGlvbiBTb3VyY2VMb2NhdGlvbihzb3Vy
Y2UsIGxvY0luZm8pIHsKKyAgdGhpcy5zb3VyY2UgPSBzb3VyY2U7CisgIHRoaXMuc3RhcnQgPSB7
CisgICAgbGluZTogbG9jSW5mby5maXJzdF9saW5lLAorICAgIGNvbHVtbjogbG9jSW5mby5maXJz
dF9jb2x1bW4KKyAgfTsKKyAgdGhpcy5lbmQgPSB7CisgICAgbGluZTogbG9jSW5mby5sYXN0X2xp
bmUsCisgICAgY29sdW1uOiBsb2NJbmZvLmxhc3RfY29sdW1uCisgIH07Cit9CisKK2Z1bmN0aW9u
IGlkKHRva2VuKSB7CisgIGlmICgvXlxbLipcXSQvLnRlc3QodG9rZW4pKSB7CisgICAgcmV0dXJu
IHRva2VuLnN1YnN0cigxLCB0b2tlbi5sZW5ndGggLSAyKTsKKyAgfSBlbHNlIHsKKyAgICByZXR1
cm4gdG9rZW47CisgIH0KK30KKworZnVuY3Rpb24gc3RyaXBGbGFncyhvcGVuLCBjbG9zZSkgewor
ICByZXR1cm4geworICAgIG9wZW46IG9wZW4uY2hhckF0KDIpID09PSAnficsCisgICAgY2xvc2U6
IGNsb3NlLmNoYXJBdChjbG9zZS5sZW5ndGggLSAzKSA9PT0gJ34nCisgIH07Cit9CisKK2Z1bmN0
aW9uIHN0cmlwQ29tbWVudChjb21tZW50KSB7CisgIHJldHVybiBjb21tZW50LnJlcGxhY2UoL15c
e1x7fj9cIS0/LT8vLCAnJykucmVwbGFjZSgvLT8tP34/XH1cfSQvLCAnJyk7Cit9CisKK2Z1bmN0
aW9uIHByZXBhcmVQYXRoKGRhdGEsIHBhcnRzLCBsb2MpIHsKKyAgbG9jID0gdGhpcy5sb2NJbmZv
KGxvYyk7CisKKyAgdmFyIG9yaWdpbmFsID0gZGF0YSA/ICdAJyA6ICcnLAorICAgICAgZGlnID0g
W10sCisgICAgICBkZXB0aCA9IDAsCisgICAgICBkZXB0aFN0cmluZyA9ICcnOworCisgIGZvciAo
dmFyIGkgPSAwLCBsID0gcGFydHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CisgICAgdmFyIHBhcnQg
PSBwYXJ0c1tpXS5wYXJ0LAorCisgICAgLy8gSWYgd2UgaGF2ZSBbXSBzeW50YXggdGhlbiB3ZSBk
byBub3QgdHJlYXQgcGF0aCByZWZlcmVuY2VzIGFzIG9wZXJhdG9ycywKKyAgICAvLyBpLmUuIGZv
by5bdGhpc10gcmVzb2x2ZXMgdG8gYXBwcm94aW1hdGVseSBjb250ZXh0LmZvb1sndGhpcyddCisg
ICAgaXNMaXRlcmFsID0gcGFydHNbaV0ub3JpZ2luYWwgIT09IHBhcnQ7CisgICAgb3JpZ2luYWwg
Kz0gKHBhcnRzW2ldLnNlcGFyYXRvciB8fCAnJykgKyBwYXJ0OworCisgICAgaWYgKCFpc0xpdGVy
YWwgJiYgKHBhcnQgPT09ICcuLicgfHwgcGFydCA9PT0gJy4nIHx8IHBhcnQgPT09ICd0aGlzJykp
IHsKKyAgICAgIGlmIChkaWcubGVuZ3RoID4gMCkgeworICAgICAgICB0aHJvdyBuZXcgX2V4Y2Vw
dGlvbjJbJ2RlZmF1bHQnXSgnSW52YWxpZCBwYXRoOiAnICsgb3JpZ2luYWwsIHsgbG9jOiBsb2Mg
fSk7CisgICAgICB9IGVsc2UgaWYgKHBhcnQgPT09ICcuLicpIHsKKyAgICAgICAgZGVwdGgrKzsK
KyAgICAgICAgZGVwdGhTdHJpbmcgKz0gJy4uLyc7CisgICAgICB9CisgICAgfSBlbHNlIHsKKyAg
ICAgIGRpZy5wdXNoKHBhcnQpOworICAgIH0KKyAgfQorCisgIHJldHVybiB7CisgICAgdHlwZTog
J1BhdGhFeHByZXNzaW9uJywKKyAgICBkYXRhOiBkYXRhLAorICAgIGRlcHRoOiBkZXB0aCwKKyAg
ICBwYXJ0czogZGlnLAorICAgIG9yaWdpbmFsOiBvcmlnaW5hbCwKKyAgICBsb2M6IGxvYworICB9
OworfQorCitmdW5jdGlvbiBwcmVwYXJlTXVzdGFjaGUocGF0aCwgcGFyYW1zLCBoYXNoLCBvcGVu
LCBzdHJpcCwgbG9jSW5mbykgeworICAvLyBNdXN0IHVzZSBjaGFyQXQgdG8gc3VwcG9ydCBJRSBw
cmUtMTAKKyAgdmFyIGVzY2FwZUZsYWcgPSBvcGVuLmNoYXJBdCgzKSB8fCBvcGVuLmNoYXJBdCgy
KSwKKyAgICAgIGVzY2FwZWQgPSBlc2NhcGVGbGFnICE9PSAneycgJiYgZXNjYXBlRmxhZyAhPT0g
JyYnOworCisgIHZhciBkZWNvcmF0b3IgPSAvXCovLnRlc3Qob3Blbik7CisgIHJldHVybiB7Cisg
ICAgdHlwZTogZGVjb3JhdG9yID8gJ0RlY29yYXRvcicgOiAnTXVzdGFjaGVTdGF0ZW1lbnQnLAor
ICAgIHBhdGg6IHBhdGgsCisgICAgcGFyYW1zOiBwYXJhbXMsCisgICAgaGFzaDogaGFzaCwKKyAg
ICBlc2NhcGVkOiBlc2NhcGVkLAorICAgIHN0cmlwOiBzdHJpcCwKKyAgICBsb2M6IHRoaXMubG9j
SW5mbyhsb2NJbmZvKQorICB9OworfQorCitmdW5jdGlvbiBwcmVwYXJlUmF3QmxvY2sob3BlblJh
d0Jsb2NrLCBjb250ZW50cywgY2xvc2UsIGxvY0luZm8pIHsKKyAgdmFsaWRhdGVDbG9zZShvcGVu
UmF3QmxvY2ssIGNsb3NlKTsKKworICBsb2NJbmZvID0gdGhpcy5sb2NJbmZvKGxvY0luZm8pOwor
ICB2YXIgcHJvZ3JhbSA9IHsKKyAgICB0eXBlOiAnUHJvZ3JhbScsCisgICAgYm9keTogY29udGVu
dHMsCisgICAgc3RyaXA6IHt9LAorICAgIGxvYzogbG9jSW5mbworICB9OworCisgIHJldHVybiB7
CisgICAgdHlwZTogJ0Jsb2NrU3RhdGVtZW50JywKKyAgICBwYXRoOiBvcGVuUmF3QmxvY2sucGF0
aCwKKyAgICBwYXJhbXM6IG9wZW5SYXdCbG9jay5wYXJhbXMsCisgICAgaGFzaDogb3BlblJhd0Js
b2NrLmhhc2gsCisgICAgcHJvZ3JhbTogcHJvZ3JhbSwKKyAgICBvcGVuU3RyaXA6IHt9LAorICAg
IGludmVyc2VTdHJpcDoge30sCisgICAgY2xvc2VTdHJpcDoge30sCisgICAgbG9jOiBsb2NJbmZv
CisgIH07Cit9CisKK2Z1bmN0aW9uIHByZXBhcmVCbG9jayhvcGVuQmxvY2ssIHByb2dyYW0sIGlu
dmVyc2VBbmRQcm9ncmFtLCBjbG9zZSwgaW52ZXJ0ZWQsIGxvY0luZm8pIHsKKyAgaWYgKGNsb3Nl
ICYmIGNsb3NlLnBhdGgpIHsKKyAgICB2YWxpZGF0ZUNsb3NlKG9wZW5CbG9jaywgY2xvc2UpOwor
ICB9CisKKyAgdmFyIGRlY29yYXRvciA9IC9cKi8udGVzdChvcGVuQmxvY2sub3Blbik7CisKKyAg
cHJvZ3JhbS5ibG9ja1BhcmFtcyA9IG9wZW5CbG9jay5ibG9ja1BhcmFtczsKKworICB2YXIgaW52
ZXJzZSA9IHVuZGVmaW5lZCwKKyAgICAgIGludmVyc2VTdHJpcCA9IHVuZGVmaW5lZDsKKworICBp
ZiAoaW52ZXJzZUFuZFByb2dyYW0pIHsKKyAgICBpZiAoZGVjb3JhdG9yKSB7CisgICAgICB0aHJv
dyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnVW5leHBlY3RlZCBpbnZlcnNlIGJsb2NrIG9u
IGRlY29yYXRvcicsIGludmVyc2VBbmRQcm9ncmFtKTsKKyAgICB9CisKKyAgICBpZiAoaW52ZXJz
ZUFuZFByb2dyYW0uY2hhaW4pIHsKKyAgICAgIGludmVyc2VBbmRQcm9ncmFtLnByb2dyYW0uYm9k
eVswXS5jbG9zZVN0cmlwID0gY2xvc2Uuc3RyaXA7CisgICAgfQorCisgICAgaW52ZXJzZVN0cmlw
ID0gaW52ZXJzZUFuZFByb2dyYW0uc3RyaXA7CisgICAgaW52ZXJzZSA9IGludmVyc2VBbmRQcm9n
cmFtLnByb2dyYW07CisgIH0KKworICBpZiAoaW52ZXJ0ZWQpIHsKKyAgICBpbnZlcnRlZCA9IGlu
dmVyc2U7CisgICAgaW52ZXJzZSA9IHByb2dyYW07CisgICAgcHJvZ3JhbSA9IGludmVydGVkOwor
ICB9CisKKyAgcmV0dXJuIHsKKyAgICB0eXBlOiBkZWNvcmF0b3IgPyAnRGVjb3JhdG9yQmxvY2sn
IDogJ0Jsb2NrU3RhdGVtZW50JywKKyAgICBwYXRoOiBvcGVuQmxvY2sucGF0aCwKKyAgICBwYXJh
bXM6IG9wZW5CbG9jay5wYXJhbXMsCisgICAgaGFzaDogb3BlbkJsb2NrLmhhc2gsCisgICAgcHJv
Z3JhbTogcHJvZ3JhbSwKKyAgICBpbnZlcnNlOiBpbnZlcnNlLAorICAgIG9wZW5TdHJpcDogb3Bl
bkJsb2NrLnN0cmlwLAorICAgIGludmVyc2VTdHJpcDogaW52ZXJzZVN0cmlwLAorICAgIGNsb3Nl
U3RyaXA6IGNsb3NlICYmIGNsb3NlLnN0cmlwLAorICAgIGxvYzogdGhpcy5sb2NJbmZvKGxvY0lu
Zm8pCisgIH07Cit9CisKK2Z1bmN0aW9uIHByZXBhcmVQcm9ncmFtKHN0YXRlbWVudHMsIGxvYykg
eworICBpZiAoIWxvYyAmJiBzdGF0ZW1lbnRzLmxlbmd0aCkgeworICAgIHZhciBmaXJzdExvYyA9
IHN0YXRlbWVudHNbMF0ubG9jLAorICAgICAgICBsYXN0TG9jID0gc3RhdGVtZW50c1tzdGF0ZW1l
bnRzLmxlbmd0aCAtIDFdLmxvYzsKKworICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovCisg
ICAgaWYgKGZpcnN0TG9jICYmIGxhc3RMb2MpIHsKKyAgICAgIGxvYyA9IHsKKyAgICAgICAgc291
cmNlOiBmaXJzdExvYy5zb3VyY2UsCisgICAgICAgIHN0YXJ0OiB7CisgICAgICAgICAgbGluZTog
Zmlyc3RMb2Muc3RhcnQubGluZSwKKyAgICAgICAgICBjb2x1bW46IGZpcnN0TG9jLnN0YXJ0LmNv
bHVtbgorICAgICAgICB9LAorICAgICAgICBlbmQ6IHsKKyAgICAgICAgICBsaW5lOiBsYXN0TG9j
LmVuZC5saW5lLAorICAgICAgICAgIGNvbHVtbjogbGFzdExvYy5lbmQuY29sdW1uCisgICAgICAg
IH0KKyAgICAgIH07CisgICAgfQorICB9CisKKyAgcmV0dXJuIHsKKyAgICB0eXBlOiAnUHJvZ3Jh
bScsCisgICAgYm9keTogc3RhdGVtZW50cywKKyAgICBzdHJpcDoge30sCisgICAgbG9jOiBsb2MK
KyAgfTsKK30KKworZnVuY3Rpb24gcHJlcGFyZVBhcnRpYWxCbG9jayhvcGVuLCBwcm9ncmFtLCBj
bG9zZSwgbG9jSW5mbykgeworICB2YWxpZGF0ZUNsb3NlKG9wZW4sIGNsb3NlKTsKKworICByZXR1
cm4geworICAgIHR5cGU6ICdQYXJ0aWFsQmxvY2tTdGF0ZW1lbnQnLAorICAgIG5hbWU6IG9wZW4u
cGF0aCwKKyAgICBwYXJhbXM6IG9wZW4ucGFyYW1zLAorICAgIGhhc2g6IG9wZW4uaGFzaCwKKyAg
ICBwcm9ncmFtOiBwcm9ncmFtLAorICAgIG9wZW5TdHJpcDogb3Blbi5zdHJpcCwKKyAgICBjbG9z
ZVN0cmlwOiBjbG9zZSAmJiBjbG9zZS5zdHJpcCwKKyAgICBsb2M6IHRoaXMubG9jSW5mbyhsb2NJ
bmZvKQorICB9OworfQorLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29u
O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYklpNHVMeTR1THk0dUx5NHVM
MnhwWWk5b1lXNWtiR1ZpWVhKekwyTnZiWEJwYkdWeUwyaGxiSEJsY25NdWFuTWlYU3dpYm1GdFpY
TWlPbHRkTENKdFlYQndhVzVuY3lJNklqczdPenM3T3pzN096czdPenM3T3pzN2VVSkJRWE5DTEdO
QlFXTTdPenM3UVVGRmNFTXNVMEZCVXl4aFFVRmhMRU5CUVVNc1NVRkJTU3hGUVVGRkxFdEJRVXNz
UlVGQlJUdEJRVU5zUXl4UFFVRkxMRWRCUVVjc1MwRkJTeXhEUVVGRExFbEJRVWtzUjBGQlJ5eExR
VUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRkZCUVZFc1IwRkJSeXhMUVVGTExFTkJRVU03TzBGQlJX
cEVMRTFCUVVrc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFJRVUZSTEV0QlFVc3NTMEZCU3l4
RlFVRkZPMEZCUTJoRExGRkJRVWtzVTBGQlV5eEhRVUZITEVWQlFVTXNSMEZCUnl4RlFVRkZMRWxC
UVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eEZRVUZETEVOQlFVTTdPMEZCUlhKRExGVkJR
VTBzTWtKQlFXTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhSUVVGUkxFZEJRVWNzYVVKQlFX
bENMRWRCUVVjc1MwRkJTeXhGUVVGRkxGTkJRVk1zUTBGQlF5eERRVUZETzBkQlEyaEdPME5CUTBZ
N08wRkJSVTBzVTBGQlV5eGpRVUZqTEVOQlFVTXNUVUZCVFN4RlFVRkZMRTlCUVU4c1JVRkJSVHRC
UVVNNVF5eE5RVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRTFCUVUwc1EwRkJRenRCUVVOeVFpeE5R
VUZKTEVOQlFVTXNTMEZCU3l4SFFVRkhPMEZCUTFnc1VVRkJTU3hGUVVGRkxFOUJRVThzUTBGQlF5
eFZRVUZWTzBGQlEzaENMRlZCUVUwc1JVRkJSU3hQUVVGUExFTkJRVU1zV1VGQldUdEhRVU0zUWl4
RFFVRkRPMEZCUTBZc1RVRkJTU3hEUVVGRExFZEJRVWNzUjBGQlJ6dEJRVU5VTEZGQlFVa3NSVUZC
UlN4UFFVRlBMRU5CUVVNc1UwRkJVenRCUVVOMlFpeFZRVUZOTEVWQlFVVXNUMEZCVHl4RFFVRkRM
RmRCUVZjN1IwRkROVUlzUTBGQlF6dERRVU5JT3p0QlFVVk5MRk5CUVZNc1JVRkJSU3hEUVVGRExF
dEJRVXNzUlVGQlJUdEJRVU40UWl4TlFVRkpMRlZCUVZVc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBG
QlN5eERRVUZETEVWQlFVVTdRVUZETVVJc1YwRkJUeXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZE
TEVOQlFVTXNSVUZCUlN4TFFVRkxMRU5CUVVNc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF5eERR
VUZETzBkQlF6RkRMRTFCUVUwN1FVRkRUQ3hYUVVGUExFdEJRVXNzUTBGQlF6dEhRVU5rTzBOQlEw
WTdPMEZCUlUwc1UwRkJVeXhWUVVGVkxFTkJRVU1zU1VGQlNTeEZRVUZGTEV0QlFVc3NSVUZCUlR0
QlFVTjBReXhUUVVGUE8wRkJRMHdzVVVGQlNTeEZRVUZGTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5C
UVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUjBGQlJ6dEJRVU0xUWl4VFFVRkxMRVZCUVVVc1MwRkJT
eXhEUVVGRExFMUJRVTBzUTBGQlF5eExRVUZMTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1Ew
RkJReXhMUVVGTExFZEJRVWM3UjBGRE9VTXNRMEZCUXp0RFFVTklPenRCUVVWTkxGTkJRVk1zV1VG
QldTeERRVUZETEU5QlFVOHNSVUZCUlR0QlFVTndReXhUUVVGUExFOUJRVThzUTBGQlF5eFBRVUZQ
TEVOQlFVTXNaVUZCWlN4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVNMVFpeFBRVUZQTEVOQlFVTXNZ
VUZCWVN4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRE8wTkJRek5ET3p0QlFVVk5MRk5CUVZNc1Yw
RkJWeXhEUVVGRExFbEJRVWtzUlVGQlJTeExRVUZMTEVWQlFVVXNSMEZCUnl4RlFVRkZPMEZCUXpW
RExFdEJRVWNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWRCUVVjc1EwRkJReXhE
UVVGRE96dEJRVVY0UWl4TlFVRkpMRkZCUVZFc1IwRkJSeXhKUVVGSkxFZEJRVWNzUjBGQlJ5eEhR
VUZITEVWQlFVVTdUVUZETVVJc1IwRkJSeXhIUVVGSExFVkJRVVU3VFVGRFVpeExRVUZMTEVkQlFV
Y3NRMEZCUXp0TlFVTlVMRmRCUVZjc1IwRkJSeXhGUVVGRkxFTkJRVU03TzBGQlJYSkNMRTlCUVVz
c1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4TFFVRkxMRU5C
UVVNc1RVRkJUU3hGUVVGRkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZM
RVZCUVVVN1FVRkROVU1zVVVGQlNTeEpRVUZKTEVkQlFVY3NTMEZCU3l4RFFVRkRMRU5CUVVNc1Ew
RkJReXhEUVVGRExFbEJRVWs3T3pzN1FVRkhjRUlzWVVGQlV5eEhRVUZITEV0QlFVc3NRMEZCUXl4
RFFVRkRMRU5CUVVNc1EwRkJReXhSUVVGUkxFdEJRVXNzU1VGQlNTeERRVUZETzBGQlF6TkRMRmxC
UVZFc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4VFFVRlRM
RWxCUVVrc1JVRkJSU3hEUVVGQkxFZEJRVWtzU1VGQlNTeERRVUZET3p0QlFVVTVReXhSUVVGSkxF
TkJRVU1zVTBGQlV5eExRVUZMTEVsQlFVa3NTMEZCU3l4SlFVRkpMRWxCUVVrc1NVRkJTU3hMUVVG
TExFZEJRVWNzU1VGQlNTeEpRVUZKTEV0QlFVc3NUVUZCVFN4RFFVRkJMRUZCUVVNc1JVRkJSVHRC
UVVOd1JTeFZRVUZKTEVkQlFVY3NRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhGUVVGRk8wRkJR
MnhDTEdOQlFVMHNNa0pCUVdNc1owSkJRV2RDTEVkQlFVY3NVVUZCVVN4RlFVRkZMRVZCUVVNc1Iw
RkJSeXhGUVVGSUxFZEJRVWNzUlVGQlF5eERRVUZETEVOQlFVTTdUMEZEZWtRc1RVRkJUU3hKUVVG
SkxFbEJRVWtzUzBGQlN5eEpRVUZKTEVWQlFVVTdRVUZEZUVJc1lVRkJTeXhGUVVGRkxFTkJRVU03
UVVGRFVpeHRRa0ZCVnl4SlFVRkpMRXRCUVVzc1EwRkJRenRQUVVOMFFqdExRVU5HTEUxQlFVMDdR
VUZEVEN4VFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzB0QlEy
aENPMGRCUTBZN08wRkJSVVFzVTBGQlR6dEJRVU5NTEZGQlFVa3NSVUZCUlN4blFrRkJaMEk3UVVG
RGRFSXNVVUZCU1N4RlFVRktMRWxCUVVrN1FVRkRTaXhUUVVGTExFVkJRVXdzUzBGQlN6dEJRVU5N
TEZOQlFVc3NSVUZCUlN4SFFVRkhPMEZCUTFZc1dVRkJVU3hGUVVGU0xGRkJRVkU3UVVGRFVpeFBR
VUZITEVWQlFVZ3NSMEZCUnp0SFFVTktMRU5CUVVNN1EwRkRTRHM3UVVGRlRTeFRRVUZUTEdWQlFX
VXNRMEZCUXl4SlFVRkpMRVZCUVVVc1RVRkJUU3hGUVVGRkxFbEJRVWtzUlVGQlJTeEpRVUZKTEVW
QlFVVXNTMEZCU3l4RlFVRkZMRTlCUVU4c1JVRkJSVHM3UVVGRmVFVXNUVUZCU1N4VlFVRlZMRWRC
UVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4SlFVRkpM
RU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF6dE5RVU0zUXl4UFFVRlBMRWRCUVVjc1ZV
RkJWU3hMUVVGTExFZEJRVWNzU1VGQlNTeFZRVUZWTEV0QlFVc3NSMEZCUnl4RFFVRkRPenRCUVVW
MlJDeE5RVUZKTEZOQlFWTXNSMEZCU1N4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtz
UTBGQlF5eEJRVUZETEVOQlFVTTdRVUZEYkVNc1UwRkJUenRCUVVOTUxGRkJRVWtzUlVGQlJTeFRR
VUZUTEVkQlFVY3NWMEZCVnl4SFFVRkhMRzFDUVVGdFFqdEJRVU51UkN4UlFVRkpMRVZCUVVvc1NV
RkJTVHRCUVVOS0xGVkJRVTBzUlVGQlRpeE5RVUZOTzBGQlEwNHNVVUZCU1N4RlFVRktMRWxCUVVr
N1FVRkRTaXhYUVVGUExFVkJRVkFzVDBGQlR6dEJRVU5RTEZOQlFVc3NSVUZCVEN4TFFVRkxPMEZC
UTB3c1QwRkJSeXhGUVVGRkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNUMEZCVHl4RFFVRkRP
MGRCUXpOQ0xFTkJRVU03UTBGRFNEczdRVUZGVFN4VFFVRlRMR1ZCUVdVc1EwRkJReXhaUVVGWkxF
VkJRVVVzVVVGQlVTeEZRVUZGTEV0QlFVc3NSVUZCUlN4UFFVRlBMRVZCUVVVN1FVRkRkRVVzWlVG
QllTeERRVUZETEZsQlFWa3NSVUZCUlN4TFFVRkxMRU5CUVVNc1EwRkJRenM3UVVGRmJrTXNVMEZC
VHl4SFFVRkhMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdR
VUZEYUVNc1RVRkJTU3hQUVVGUExFZEJRVWM3UVVGRFdpeFJRVUZKTEVWQlFVVXNVMEZCVXp0QlFV
Tm1MRkZCUVVrc1JVRkJSU3hSUVVGUk8wRkJRMlFzVTBGQlN5eEZRVUZGTEVWQlFVVTdRVUZEVkN4
UFFVRkhMRVZCUVVVc1QwRkJUenRIUVVOaUxFTkJRVU03TzBGQlJVWXNVMEZCVHp0QlFVTk1MRkZC
UVVrc1JVRkJSU3huUWtGQlowSTdRVUZEZEVJc1VVRkJTU3hGUVVGRkxGbEJRVmtzUTBGQlF5eEpR
VUZKTzBGQlEzWkNMRlZCUVUwc1JVRkJSU3haUVVGWkxFTkJRVU1zVFVGQlRUdEJRVU16UWl4UlFV
RkpMRVZCUVVVc1dVRkJXU3hEUVVGRExFbEJRVWs3UVVGRGRrSXNWMEZCVHl4RlFVRlFMRTlCUVU4
N1FVRkRVQ3hoUVVGVExFVkJRVVVzUlVGQlJUdEJRVU5pTEdkQ1FVRlpMRVZCUVVVc1JVRkJSVHRC
UVVOb1FpeGpRVUZWTEVWQlFVVXNSVUZCUlR0QlFVTmtMRTlCUVVjc1JVRkJSU3hQUVVGUE8wZEJR
MklzUTBGQlF6dERRVU5JT3p0QlFVVk5MRk5CUVZNc1dVRkJXU3hEUVVGRExGTkJRVk1zUlVGQlJT
eFBRVUZQTEVWQlFVVXNhVUpCUVdsQ0xFVkJRVVVzUzBGQlN5eEZRVUZGTEZGQlFWRXNSVUZCUlN4
UFFVRlBMRVZCUVVVN1FVRkROVVlzVFVGQlNTeExRVUZMTEVsQlFVa3NTMEZCU3l4RFFVRkRMRWxC
UVVrc1JVRkJSVHRCUVVOMlFpeHBRa0ZCWVN4RFFVRkRMRk5CUVZNc1JVRkJSU3hMUVVGTExFTkJR
VU1zUTBGQlF6dEhRVU5xUXpzN1FVRkZSQ3hOUVVGSkxGTkJRVk1zUjBGQlNTeEpRVUZKTEVOQlFV
TXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhKUVVGSkxFTkJRVU1zUVVGQlF5eERRVUZET3p0
QlFVVTFReXhUUVVGUExFTkJRVU1zVjBGQlZ5eEhRVUZITEZOQlFWTXNRMEZCUXl4WFFVRlhMRU5C
UVVNN08wRkJSVFZETEUxQlFVa3NUMEZCVHl4WlFVRkJPMDFCUTFBc1dVRkJXU3haUVVGQkxFTkJR
VU03TzBGQlJXcENMRTFCUVVrc2FVSkJRV2xDTEVWQlFVVTdRVUZEY2tJc1VVRkJTU3hUUVVGVExF
VkJRVVU3UVVGRFlpeFpRVUZOTERKQ1FVRmpMSFZEUVVGMVF5eEZRVUZGTEdsQ1FVRnBRaXhEUVVG
RExFTkJRVU03UzBGRGFrWTdPMEZCUlVRc1VVRkJTU3hwUWtGQmFVSXNRMEZCUXl4TFFVRkxMRVZC
UVVVN1FVRkRNMElzZFVKQlFXbENMRU5CUVVNc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eERR
VUZETEVOQlFVTXNRMEZCUXl4VlFVRlZMRWRCUVVjc1MwRkJTeXhEUVVGRExFdEJRVXNzUTBGQlF6
dExRVU0xUkRzN1FVRkZSQ3huUWtGQldTeEhRVUZITEdsQ1FVRnBRaXhEUVVGRExFdEJRVXNzUTBG
QlF6dEJRVU4yUXl4WFFVRlBMRWRCUVVjc2FVSkJRV2xDTEVOQlFVTXNUMEZCVHl4RFFVRkRPMGRC
UTNKRE96dEJRVVZFTEUxQlFVa3NVVUZCVVN4RlFVRkZPMEZCUTFvc1dVRkJVU3hIUVVGSExFOUJR
VThzUTBGQlF6dEJRVU51UWl4WFFVRlBMRWRCUVVjc1QwRkJUeXhEUVVGRE8wRkJRMnhDTEZkQlFV
OHNSMEZCUnl4UlFVRlJMRU5CUVVNN1IwRkRjRUk3TzBGQlJVUXNVMEZCVHp0QlFVTk1MRkZCUVVr
c1JVRkJSU3hUUVVGVExFZEJRVWNzWjBKQlFXZENMRWRCUVVjc1owSkJRV2RDTzBGQlEzSkVMRkZC
UVVrc1JVRkJSU3hUUVVGVExFTkJRVU1zU1VGQlNUdEJRVU53UWl4VlFVRk5MRVZCUVVVc1UwRkJV
eXhEUVVGRExFMUJRVTA3UVVGRGVFSXNVVUZCU1N4RlFVRkZMRk5CUVZNc1EwRkJReXhKUVVGSk8w
RkJRM0JDTEZkQlFVOHNSVUZCVUN4UFFVRlBPMEZCUTFBc1YwRkJUeXhGUVVGUUxFOUJRVTg3UVVG
RFVDeGhRVUZUTEVWQlFVVXNVMEZCVXl4RFFVRkRMRXRCUVVzN1FVRkRNVUlzWjBKQlFWa3NSVUZC
V2l4WlFVRlpPMEZCUTFvc1kwRkJWU3hGUVVGRkxFdEJRVXNzU1VGQlNTeExRVUZMTEVOQlFVTXNT
MEZCU3p0QlFVTm9ReXhQUVVGSExFVkJRVVVzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4UFFV
RlBMRU5CUVVNN1IwRkRNMElzUTBGQlF6dERRVU5JT3p0QlFVVk5MRk5CUVZNc1kwRkJZeXhEUVVG
RExGVkJRVlVzUlVGQlJTeEhRVUZITEVWQlFVVTdRVUZET1VNc1RVRkJTU3hEUVVGRExFZEJRVWNz
U1VGQlNTeFZRVUZWTEVOQlFVTXNUVUZCVFN4RlFVRkZPMEZCUXpkQ0xGRkJRVTBzVVVGQlVTeEhR
VUZITEZWQlFWVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSE8xRkJRelZDTEU5QlFV
OHNSMEZCUnl4VlFVRlZMRU5CUVVNc1ZVRkJWU3hEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVO
QlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNN096dEJRVWQwUkN4UlFVRkpMRkZCUVZFc1NVRkJTU3hQ
UVVGUExFVkJRVVU3UVVGRGRrSXNVMEZCUnl4SFFVRkhPMEZCUTBvc1kwRkJUU3hGUVVGRkxGRkJR
VkVzUTBGQlF5eE5RVUZOTzBGQlEzWkNMR0ZCUVVzc1JVRkJSVHRCUVVOTUxHTkJRVWtzUlVGQlJT
eFJRVUZSTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrN1FVRkRla0lzWjBKQlFVMHNSVUZCUlN4
UlFVRlJMRU5CUVVNc1MwRkJTeXhEUVVGRExFMUJRVTA3VTBGRE9VSTdRVUZEUkN4WFFVRkhMRVZC
UVVVN1FVRkRTQ3hqUVVGSkxFVkJRVVVzVDBGQlR5eERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpP
MEZCUTNSQ0xHZENRVUZOTEVWQlFVVXNUMEZCVHl4RFFVRkRMRWRCUVVjc1EwRkJReXhOUVVGTk8x
TkJRek5DTzA5QlEwWXNRMEZCUXp0TFFVTklPMGRCUTBZN08wRkJSVVFzVTBGQlR6dEJRVU5NTEZG
QlFVa3NSVUZCUlN4VFFVRlRPMEZCUTJZc1VVRkJTU3hGUVVGRkxGVkJRVlU3UVVGRGFFSXNVMEZC
U3l4RlFVRkZMRVZCUVVVN1FVRkRWQ3hQUVVGSExFVkJRVVVzUjBGQlJ6dEhRVU5VTEVOQlFVTTdR
MEZEU0RzN1FVRkhUU3hUUVVGVExHMUNRVUZ0UWl4RFFVRkRMRWxCUVVrc1JVRkJSU3hQUVVGUExF
VkJRVVVzUzBGQlN5eEZRVUZGTEU5QlFVOHNSVUZCUlR0QlFVTnFSU3hsUVVGaExFTkJRVU1zU1VG
QlNTeEZRVUZGTEV0QlFVc3NRMEZCUXl4RFFVRkRPenRCUVVVelFpeFRRVUZQTzBGQlEwd3NVVUZC
U1N4RlFVRkZMSFZDUVVGMVFqdEJRVU0zUWl4UlFVRkpMRVZCUVVVc1NVRkJTU3hEUVVGRExFbEJR
VWs3UVVGRFppeFZRVUZOTEVWQlFVVXNTVUZCU1N4RFFVRkRMRTFCUVUwN1FVRkRia0lzVVVGQlNT
eEZRVUZGTEVsQlFVa3NRMEZCUXl4SlFVRkpPMEZCUTJZc1YwRkJUeXhGUVVGUUxFOUJRVTg3UVVG
RFVDeGhRVUZUTEVWQlFVVXNTVUZCU1N4RFFVRkRMRXRCUVVzN1FVRkRja0lzWTBGQlZTeEZRVUZG
TEV0QlFVc3NTVUZCU1N4TFFVRkxMRU5CUVVNc1MwRkJTenRCUVVOb1F5eFBRVUZITEVWQlFVVXNT
VUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhQUVVGUExFTkJRVU03UjBGRE0wSXNRMEZCUXp0RFFV
TklJaXdpWm1sc1pTSTZJbWhsYkhCbGNuTXVhbk1pTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lK
cGJYQnZjblFnUlhoalpYQjBhVzl1SUdaeWIyMGdKeTR1TDJWNFkyVndkR2x2YmljN1hHNWNibVox
Ym1OMGFXOXVJSFpoYkdsa1lYUmxRMnh2YzJVb2IzQmxiaXdnWTJ4dmMyVXBJSHRjYmlBZ1kyeHZj
MlVnUFNCamJHOXpaUzV3WVhSb0lEOGdZMnh2YzJVdWNHRjBhQzV2Y21sbmFXNWhiQ0E2SUdOc2Iz
TmxPMXh1WEc0Z0lHbG1JQ2h2Y0dWdUxuQmhkR2d1YjNKcFoybHVZV3dnSVQwOUlHTnNiM05sS1NC
N1hHNGdJQ0FnYkdWMElHVnljbTl5VG05a1pTQTlJSHRzYjJNNklHOXdaVzR1Y0dGMGFDNXNiMk45
TzF4dVhHNGdJQ0FnZEdoeWIzY2dibVYzSUVWNFkyVndkR2x2YmlodmNHVnVMbkJoZEdndWIzSnBa
Mmx1WVd3Z0t5QmNJaUJrYjJWemJpZDBJRzFoZEdOb0lGd2lJQ3NnWTJ4dmMyVXNJR1Z5Y205eVRt
OWtaU2s3WEc0Z0lIMWNibjFjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUZOdmRYSmpaVXh2WTJG
MGFXOXVLSE52ZFhKalpTd2diRzlqU1c1bWJ5a2dlMXh1SUNCMGFHbHpMbk52ZFhKalpTQTlJSE52
ZFhKalpUdGNiaUFnZEdocGN5NXpkR0Z5ZENBOUlIdGNiaUFnSUNCc2FXNWxPaUJzYjJOSmJtWnZM
bVpwY25OMFgyeHBibVVzWEc0Z0lDQWdZMjlzZFcxdU9pQnNiMk5KYm1adkxtWnBjbk4wWDJOdmJI
VnRibHh1SUNCOU8xeHVJQ0IwYUdsekxtVnVaQ0E5SUh0Y2JpQWdJQ0JzYVc1bE9pQnNiMk5KYm1a
dkxteGhjM1JmYkdsdVpTeGNiaUFnSUNCamIyeDFiVzQ2SUd4dlkwbHVabTh1YkdGemRGOWpiMngx
Ylc1Y2JpQWdmVHRjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlHbGtLSFJ2YTJWdUtTQjdY
RzRnSUdsbUlDZ3ZYbHhjV3k0cVhGeGRKQzh1ZEdWemRDaDBiMnRsYmlrcElIdGNiaUFnSUNCeVpY
UjFjbTRnZEc5clpXNHVjM1ZpYzNSeUtERXNJSFJ2YTJWdUxteGxibWQwYUNBdElESXBPMXh1SUNC
OUlHVnNjMlVnZTF4dUlDQWdJSEpsZEhWeWJpQjBiMnRsYmp0Y2JpQWdmVnh1ZlZ4dVhHNWxlSEJ2
Y25RZ1puVnVZM1JwYjI0Z2MzUnlhWEJHYkdGbmN5aHZjR1Z1TENCamJHOXpaU2tnZTF4dUlDQnla
WFIxY200Z2UxeHVJQ0FnSUc5d1pXNDZJRzl3Wlc0dVkyaGhja0YwS0RJcElEMDlQU0FuZmljc1hH
NGdJQ0FnWTJ4dmMyVTZJR05zYjNObExtTm9ZWEpCZENoamJHOXpaUzVzWlc1bmRHZ2dMU0F6S1NB
OVBUMGdKMzRuWEc0Z0lIMDdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCemRISnBjRU52
YlcxbGJuUW9ZMjl0YldWdWRDa2dlMXh1SUNCeVpYUjFjbTRnWTI5dGJXVnVkQzV5WlhCc1lXTmxL
QzllWEZ4N1hGeDdmajljWENFdFB5MC9MeXdnSnljcFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0xu
SmxjR3hoWTJVb0x5MC9MVDkrUDF4Y2ZWeGNmU1F2TENBbkp5azdYRzU5WEc1Y2JtVjRjRzl5ZENC
bWRXNWpkR2x2YmlCd2NtVndZWEpsVUdGMGFDaGtZWFJoTENCd1lYSjBjeXdnYkc5aktTQjdYRzRn
SUd4dll5QTlJSFJvYVhNdWJHOWpTVzVtYnloc2IyTXBPMXh1WEc0Z0lHeGxkQ0J2Y21sbmFXNWhi
Q0E5SUdSaGRHRWdQeUFuUUNjZ09pQW5KeXhjYmlBZ0lDQWdJR1JwWnlBOUlGdGRMRnh1SUNBZ0lD
QWdaR1Z3ZEdnZ1BTQXdMRnh1SUNBZ0lDQWdaR1Z3ZEdoVGRISnBibWNnUFNBbkp6dGNibHh1SUNC
bWIzSWdLR3hsZENCcElEMGdNQ3dnYkNBOUlIQmhjblJ6TG14bGJtZDBhRHNnYVNBOElHdzdJR2ty
S3lrZ2UxeHVJQ0FnSUd4bGRDQndZWEowSUQwZ2NHRnlkSE5iYVYwdWNHRnlkQ3hjYmlBZ0lDQWdJ
Q0FnTHk4Z1NXWWdkMlVnYUdGMlpTQmJYU0J6ZVc1MFlYZ2dkR2hsYmlCM1pTQmtieUJ1YjNRZ2RI
SmxZWFFnY0dGMGFDQnlaV1psY21WdVkyVnpJR0Z6SUc5d1pYSmhkRzl5Y3l4Y2JpQWdJQ0FnSUNB
Z0x5OGdhUzVsTGlCbWIyOHVXM1JvYVhOZElISmxjMjlzZG1WeklIUnZJR0Z3Y0hKdmVHbHRZWFJs
YkhrZ1kyOXVkR1Y0ZEM1bWIyOWJKM1JvYVhNblhWeHVJQ0FnSUNBZ0lDQnBjMHhwZEdWeVlXd2dQ
U0J3WVhKMGMxdHBYUzV2Y21sbmFXNWhiQ0FoUFQwZ2NHRnlkRHRjYmlBZ0lDQnZjbWxuYVc1aGJD
QXJQU0FvY0dGeWRITmJhVjB1YzJWd1lYSmhkRzl5SUh4OElDY25LU0FySUhCaGNuUTdYRzVjYmlB
Z0lDQnBaaUFvSVdselRHbDBaWEpoYkNBbUppQW9jR0Z5ZENBOVBUMGdKeTR1SnlCOGZDQndZWEow
SUQwOVBTQW5MaWNnZkh3Z2NHRnlkQ0E5UFQwZ0ozUm9hWE1uS1NrZ2UxeHVJQ0FnSUNBZ2FXWWdL
R1JwWnk1c1pXNW5kR2dnUGlBd0tTQjdYRzRnSUNBZ0lDQWdJSFJvY205M0lHNWxkeUJGZUdObGNI
UnBiMjRvSjBsdWRtRnNhV1FnY0dGMGFEb2dKeUFySUc5eWFXZHBibUZzTENCN2JHOWpmU2s3WEc0
Z0lDQWdJQ0I5SUdWc2MyVWdhV1lnS0hCaGNuUWdQVDA5SUNjdUxpY3BJSHRjYmlBZ0lDQWdJQ0Fn
WkdWd2RHZ3JLenRjYmlBZ0lDQWdJQ0FnWkdWd2RHaFRkSEpwYm1jZ0t6MGdKeTR1THljN1hHNGdJ
Q0FnSUNCOVhHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJR1JwWnk1d2RYTm9LSEJoY25RcE8x
eHVJQ0FnSUgxY2JpQWdmVnh1WEc0Z0lISmxkSFZ5YmlCN1hHNGdJQ0FnZEhsd1pUb2dKMUJoZEdo
RmVIQnlaWE56YVc5dUp5eGNiaUFnSUNCa1lYUmhMRnh1SUNBZ0lHUmxjSFJvTEZ4dUlDQWdJSEJo
Y25Sek9pQmthV2NzWEc0Z0lDQWdiM0pwWjJsdVlXd3NYRzRnSUNBZ2JHOWpYRzRnSUgwN1hHNTlY
RzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJ3Y21Wd1lYSmxUWFZ6ZEdGamFHVW9jR0YwYUN3Z2NH
RnlZVzF6TENCb1lYTm9MQ0J2Y0dWdUxDQnpkSEpwY0N3Z2JHOWpTVzVtYnlrZ2UxeHVJQ0F2THlC
TmRYTjBJSFZ6WlNCamFHRnlRWFFnZEc4Z2MzVndjRzl5ZENCSlJTQndjbVV0TVRCY2JpQWdiR1Yw
SUdWelkyRndaVVpzWVdjZ1BTQnZjR1Z1TG1Ob1lYSkJkQ2d6S1NCOGZDQnZjR1Z1TG1Ob1lYSkJk
Q2d5S1N4Y2JpQWdJQ0FnSUdWelkyRndaV1FnUFNCbGMyTmhjR1ZHYkdGbklDRTlQU0FuZXljZ0pp
WWdaWE5qWVhCbFJteGhaeUFoUFQwZ0p5WW5PMXh1WEc0Z0lHeGxkQ0JrWldOdmNtRjBiM0lnUFNB
b0wxeGNLaTh1ZEdWemRDaHZjR1Z1S1NrN1hHNGdJSEpsZEhWeWJpQjdYRzRnSUNBZ2RIbHdaVG9n
WkdWamIzSmhkRzl5SUQ4Z0owUmxZMjl5WVhSdmNpY2dPaUFuVFhWemRHRmphR1ZUZEdGMFpXMWxi
blFuTEZ4dUlDQWdJSEJoZEdnc1hHNGdJQ0FnY0dGeVlXMXpMRnh1SUNBZ0lHaGhjMmdzWEc0Z0lD
QWdaWE5qWVhCbFpDeGNiaUFnSUNCemRISnBjQ3hjYmlBZ0lDQnNiMk02SUhSb2FYTXViRzlqU1c1
bWJ5aHNiMk5KYm1adktWeHVJQ0I5TzF4dWZWeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdjSEps
Y0dGeVpWSmhkMEpzYjJOcktHOXdaVzVTWVhkQ2JHOWpheXdnWTI5dWRHVnVkSE1zSUdOc2IzTmxM
Q0JzYjJOSmJtWnZLU0I3WEc0Z0lIWmhiR2xrWVhSbFEyeHZjMlVvYjNCbGJsSmhkMEpzYjJOckxD
QmpiRzl6WlNrN1hHNWNiaUFnYkc5alNXNW1ieUE5SUhSb2FYTXViRzlqU1c1bWJ5aHNiMk5KYm1a
dktUdGNiaUFnYkdWMElIQnliMmR5WVcwZ1BTQjdYRzRnSUNBZ2RIbHdaVG9nSjFCeWIyZHlZVzBu
TEZ4dUlDQWdJR0p2WkhrNklHTnZiblJsYm5SekxGeHVJQ0FnSUhOMGNtbHdPaUI3ZlN4Y2JpQWdJ
Q0JzYjJNNklHeHZZMGx1Wm05Y2JpQWdmVHRjYmx4dUlDQnlaWFIxY200Z2UxeHVJQ0FnSUhSNWNH
VTZJQ2RDYkc5amExTjBZWFJsYldWdWRDY3NYRzRnSUNBZ2NHRjBhRG9nYjNCbGJsSmhkMEpzYjJO
ckxuQmhkR2dzWEc0Z0lDQWdjR0Z5WVcxek9pQnZjR1Z1VW1GM1FteHZZMnN1Y0dGeVlXMXpMRnh1
SUNBZ0lHaGhjMmc2SUc5d1pXNVNZWGRDYkc5amF5NW9ZWE5vTEZ4dUlDQWdJSEJ5YjJkeVlXMHNY
RzRnSUNBZ2IzQmxibE4wY21sd09pQjdmU3hjYmlBZ0lDQnBiblpsY25ObFUzUnlhWEE2SUh0OUxG
eHVJQ0FnSUdOc2IzTmxVM1J5YVhBNklIdDlMRnh1SUNBZ0lHeHZZem9nYkc5alNXNW1iMXh1SUNC
OU8xeHVmVnh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnY0hKbGNHRnlaVUpzYjJOcktHOXdaVzVD
Ykc5amF5d2djSEp2WjNKaGJTd2dhVzUyWlhKelpVRnVaRkJ5YjJkeVlXMHNJR05zYjNObExDQnBi
blpsY25SbFpDd2diRzlqU1c1bWJ5a2dlMXh1SUNCcFppQW9ZMnh2YzJVZ0ppWWdZMnh2YzJVdWNH
RjBhQ2tnZTF4dUlDQWdJSFpoYkdsa1lYUmxRMnh2YzJVb2IzQmxia0pzYjJOckxDQmpiRzl6WlNr
N1hHNGdJSDFjYmx4dUlDQnNaWFFnWkdWamIzSmhkRzl5SUQwZ0tDOWNYQ292TG5SbGMzUW9iM0Js
YmtKc2IyTnJMbTl3Wlc0cEtUdGNibHh1SUNCd2NtOW5jbUZ0TG1Kc2IyTnJVR0Z5WVcxeklEMGdi
M0JsYmtKc2IyTnJMbUpzYjJOclVHRnlZVzF6TzF4dVhHNGdJR3hsZENCcGJuWmxjbk5sTEZ4dUlD
QWdJQ0FnYVc1MlpYSnpaVk4wY21sd08xeHVYRzRnSUdsbUlDaHBiblpsY25ObFFXNWtVSEp2WjNK
aGJTa2dlMXh1SUNBZ0lHbG1JQ2hrWldOdmNtRjBiM0lwSUh0Y2JpQWdJQ0FnSUhSb2NtOTNJRzVs
ZHlCRmVHTmxjSFJwYjI0b0oxVnVaWGh3WldOMFpXUWdhVzUyWlhKelpTQmliRzlqYXlCdmJpQmta
V052Y21GMGIzSW5MQ0JwYm5abGNuTmxRVzVrVUhKdlozSmhiU2s3WEc0Z0lDQWdmVnh1WEc0Z0lD
QWdhV1lnS0dsdWRtVnljMlZCYm1SUWNtOW5jbUZ0TG1Ob1lXbHVLU0I3WEc0Z0lDQWdJQ0JwYm5a
bGNuTmxRVzVrVUhKdlozSmhiUzV3Y205bmNtRnRMbUp2WkhsYk1GMHVZMnh2YzJWVGRISnBjQ0E5
SUdOc2IzTmxMbk4wY21sd08xeHVJQ0FnSUgxY2JseHVJQ0FnSUdsdWRtVnljMlZUZEhKcGNDQTlJ
R2x1ZG1WeWMyVkJibVJRY205bmNtRnRMbk4wY21sd08xeHVJQ0FnSUdsdWRtVnljMlVnUFNCcGJu
Wmxjbk5sUVc1a1VISnZaM0poYlM1d2NtOW5jbUZ0TzF4dUlDQjlYRzVjYmlBZ2FXWWdLR2x1ZG1W
eWRHVmtLU0I3WEc0Z0lDQWdhVzUyWlhKMFpXUWdQU0JwYm5abGNuTmxPMXh1SUNBZ0lHbHVkbVZ5
YzJVZ1BTQndjbTluY21GdE8xeHVJQ0FnSUhCeWIyZHlZVzBnUFNCcGJuWmxjblJsWkR0Y2JpQWdm
Vnh1WEc0Z0lISmxkSFZ5YmlCN1hHNGdJQ0FnZEhsd1pUb2daR1ZqYjNKaGRHOXlJRDhnSjBSbFky
OXlZWFJ2Y2tKc2IyTnJKeUE2SUNkQ2JHOWphMU4wWVhSbGJXVnVkQ2NzWEc0Z0lDQWdjR0YwYURv
Z2IzQmxia0pzYjJOckxuQmhkR2dzWEc0Z0lDQWdjR0Z5WVcxek9pQnZjR1Z1UW14dlkyc3VjR0Z5
WVcxekxGeHVJQ0FnSUdoaGMyZzZJRzl3Wlc1Q2JHOWpheTVvWVhOb0xGeHVJQ0FnSUhCeWIyZHlZ
VzBzWEc0Z0lDQWdhVzUyWlhKelpTeGNiaUFnSUNCdmNHVnVVM1J5YVhBNklHOXdaVzVDYkc5amF5
NXpkSEpwY0N4Y2JpQWdJQ0JwYm5abGNuTmxVM1J5YVhBc1hHNGdJQ0FnWTJ4dmMyVlRkSEpwY0Rv
Z1kyeHZjMlVnSmlZZ1kyeHZjMlV1YzNSeWFYQXNYRzRnSUNBZ2JHOWpPaUIwYUdsekxteHZZMGx1
Wm04b2JHOWpTVzVtYnlsY2JpQWdmVHRjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlIQnla
WEJoY21WUWNtOW5jbUZ0S0hOMFlYUmxiV1Z1ZEhNc0lHeHZZeWtnZTF4dUlDQnBaaUFvSVd4dll5
QW1KaUJ6ZEdGMFpXMWxiblJ6TG14bGJtZDBhQ2tnZTF4dUlDQWdJR052Ym5OMElHWnBjbk4wVEc5
aklEMGdjM1JoZEdWdFpXNTBjMXN3WFM1c2IyTXNYRzRnSUNBZ0lDQWdJQ0FnYkdGemRFeHZZeUE5
SUhOMFlYUmxiV1Z1ZEhOYmMzUmhkR1Z0Wlc1MGN5NXNaVzVuZEdnZ0xTQXhYUzVzYjJNN1hHNWNi
aUFnSUNBdktpQnBjM1JoYm1KMWJDQnBaMjV2Y21VZ1pXeHpaU0FxTDF4dUlDQWdJR2xtSUNobWFY
SnpkRXh2WXlBbUppQnNZWE4wVEc5aktTQjdYRzRnSUNBZ0lDQnNiMk1nUFNCN1hHNGdJQ0FnSUNB
Z0lITnZkWEpqWlRvZ1ptbHljM1JNYjJNdWMyOTFjbU5sTEZ4dUlDQWdJQ0FnSUNCemRHRnlkRG9n
ZTF4dUlDQWdJQ0FnSUNBZ0lHeHBibVU2SUdacGNuTjBURzlqTG5OMFlYSjBMbXhwYm1Vc1hHNGdJ
Q0FnSUNBZ0lDQWdZMjlzZFcxdU9pQm1hWEp6ZEV4dll5NXpkR0Z5ZEM1amIyeDFiVzVjYmlBZ0lD
QWdJQ0FnZlN4Y2JpQWdJQ0FnSUNBZ1pXNWtPaUI3WEc0Z0lDQWdJQ0FnSUNBZ2JHbHVaVG9nYkdG
emRFeHZZeTVsYm1RdWJHbHVaU3hjYmlBZ0lDQWdJQ0FnSUNCamIyeDFiVzQ2SUd4aGMzUk1iMk11
Wlc1a0xtTnZiSFZ0Ymx4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOU8xeHVJQ0FnSUgxY2JpQWdm
Vnh1WEc0Z0lISmxkSFZ5YmlCN1hHNGdJQ0FnZEhsd1pUb2dKMUJ5YjJkeVlXMG5MRnh1SUNBZ0lH
SnZaSGs2SUhOMFlYUmxiV1Z1ZEhNc1hHNGdJQ0FnYzNSeWFYQTZJSHQ5TEZ4dUlDQWdJR3h2WXpv
Z2JHOWpYRzRnSUgwN1hHNTlYRzVjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUhCeVpYQmhjbVZR
WVhKMGFXRnNRbXh2WTJzb2IzQmxiaXdnY0hKdlozSmhiU3dnWTJ4dmMyVXNJR3h2WTBsdVptOHBJ
SHRjYmlBZ2RtRnNhV1JoZEdWRGJHOXpaU2h2Y0dWdUxDQmpiRzl6WlNrN1hHNWNiaUFnY21WMGRY
SnVJSHRjYmlBZ0lDQjBlWEJsT2lBblVHRnlkR2xoYkVKc2IyTnJVM1JoZEdWdFpXNTBKeXhjYmlB
Z0lDQnVZVzFsT2lCdmNHVnVMbkJoZEdnc1hHNGdJQ0FnY0dGeVlXMXpPaUJ2Y0dWdUxuQmhjbUZ0
Y3l4Y2JpQWdJQ0JvWVhOb09pQnZjR1Z1TG1oaGMyZ3NYRzRnSUNBZ2NISnZaM0poYlN4Y2JpQWdJ
Q0J2Y0dWdVUzUnlhWEE2SUc5d1pXNHVjM1J5YVhBc1hHNGdJQ0FnWTJ4dmMyVlRkSEpwY0RvZ1ky
eHZjMlVnSmlZZ1kyeHZjMlV1YzNSeWFYQXNYRzRnSUNBZ2JHOWpPaUIwYUdsekxteHZZMGx1Wm04
b2JHOWpTVzVtYnlsY2JpQWdmVHRjYm4xY2JseHVJbDE5CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9janMvaGFuZGxlYmFycy9jb21w
aWxlci9qYXZhc2NyaXB0LWNvbXBpbGVyLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9k
dWxlcy9oYW5kbGViYXJzL2Rpc3QvY2pzL2hhbmRsZWJhcnMvY29tcGlsZXIvamF2YXNjcmlwdC1j
b21waWxlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZGQ1YzkwNzQxYTFjNTY2Y2MwZTIzN2QzMTk0MmMwNzVj
YjMzMTZlCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxl
cy9oYW5kbGViYXJzL2Rpc3QvY2pzL2hhbmRsZWJhcnMvY29tcGlsZXIvamF2YXNjcmlwdC1jb21w
aWxlci5qcwpAQCAtMCwwICsxLDExMjggQEAKKyd1c2Ugc3RyaWN0JzsKKworZXhwb3J0cy5fX2Vz
TW9kdWxlID0gdHJ1ZTsKKy8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0CisKK2Z1bmN0aW9uIF9pbnRl
cm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBv
YmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH0KKwordmFyIF9iYXNlID0gcmVxdWlyZSgnLi4vYmFz
ZScpOworCit2YXIgX2V4Y2VwdGlvbiA9IHJlcXVpcmUoJy4uL2V4Y2VwdGlvbicpOworCit2YXIg
X2V4Y2VwdGlvbjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9leGNlcHRpb24pOworCit2YXIg
X3V0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMnKTsKKwordmFyIF9jb2RlR2VuID0gcmVxdWlyZSgn
Li9jb2RlLWdlbicpOworCit2YXIgX2NvZGVHZW4yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChf
Y29kZUdlbik7CisKK2Z1bmN0aW9uIExpdGVyYWwodmFsdWUpIHsKKyAgdGhpcy52YWx1ZSA9IHZh
bHVlOworfQorCitmdW5jdGlvbiBKYXZhU2NyaXB0Q29tcGlsZXIoKSB7fQorCitKYXZhU2NyaXB0
Q29tcGlsZXIucHJvdG90eXBlID0geworICAvLyBQVUJMSUMgQVBJOiBZb3UgY2FuIG92ZXJyaWRl
IHRoZXNlIG1ldGhvZHMgaW4gYSBzdWJjbGFzcyB0byBwcm92aWRlCisgIC8vIGFsdGVybmF0aXZl
IGNvbXBpbGVkIGZvcm1zIGZvciBuYW1lIGxvb2t1cCBhbmQgYnVmZmVyaW5nIHNlbWFudGljcwor
ICBuYW1lTG9va3VwOiBmdW5jdGlvbiBuYW1lTG9va3VwKHBhcmVudCwgbmFtZSAvKiAsIHR5cGUq
LykgeworICAgIGlmIChKYXZhU2NyaXB0Q29tcGlsZXIuaXNWYWxpZEphdmFTY3JpcHRWYXJpYWJs
ZU5hbWUobmFtZSkpIHsKKyAgICAgIHJldHVybiBbcGFyZW50LCAnLicsIG5hbWVdOworICAgIH0g
ZWxzZSB7CisgICAgICByZXR1cm4gW3BhcmVudCwgJ1snLCBKU09OLnN0cmluZ2lmeShuYW1lKSwg
J10nXTsKKyAgICB9CisgIH0sCisgIGRlcHRoZWRMb29rdXA6IGZ1bmN0aW9uIGRlcHRoZWRMb29r
dXAobmFtZSkgeworICAgIHJldHVybiBbdGhpcy5hbGlhc2FibGUoJ2NvbnRhaW5lci5sb29rdXAn
KSwgJyhkZXB0aHMsICInLCBuYW1lLCAnIiknXTsKKyAgfSwKKworICBjb21waWxlckluZm86IGZ1
bmN0aW9uIGNvbXBpbGVySW5mbygpIHsKKyAgICB2YXIgcmV2aXNpb24gPSBfYmFzZS5DT01QSUxF
Ul9SRVZJU0lPTiwKKyAgICAgICAgdmVyc2lvbnMgPSBfYmFzZS5SRVZJU0lPTl9DSEFOR0VTW3Jl
dmlzaW9uXTsKKyAgICByZXR1cm4gW3JldmlzaW9uLCB2ZXJzaW9uc107CisgIH0sCisKKyAgYXBw
ZW5kVG9CdWZmZXI6IGZ1bmN0aW9uIGFwcGVuZFRvQnVmZmVyKHNvdXJjZSwgbG9jYXRpb24sIGV4
cGxpY2l0KSB7CisgICAgLy8gRm9yY2UgYSBzb3VyY2UgYXMgdGhpcyBzaW1wbGlmaWVzIHRoZSBt
ZXJnZSBsb2dpYy4KKyAgICBpZiAoIV91dGlscy5pc0FycmF5KHNvdXJjZSkpIHsKKyAgICAgIHNv
dXJjZSA9IFtzb3VyY2VdOworICAgIH0KKyAgICBzb3VyY2UgPSB0aGlzLnNvdXJjZS53cmFwKHNv
dXJjZSwgbG9jYXRpb24pOworCisgICAgaWYgKHRoaXMuZW52aXJvbm1lbnQuaXNTaW1wbGUpIHsK
KyAgICAgIHJldHVybiBbJ3JldHVybiAnLCBzb3VyY2UsICc7J107CisgICAgfSBlbHNlIGlmIChl
eHBsaWNpdCkgeworICAgICAgLy8gVGhpcyBpcyBhIGNhc2Ugd2hlcmUgdGhlIGJ1ZmZlciBvcGVy
YXRpb24gb2NjdXJzIGFzIGEgY2hpbGQgb2YgYW5vdGhlcgorICAgICAgLy8gY29uc3RydWN0LCBn
ZW5lcmFsbHkgYnJhY2VzLiBXZSBoYXZlIHRvIGV4cGxpY2l0bHkgb3V0cHV0IHRoZXNlIGJ1ZmZl
cgorICAgICAgLy8gb3BlcmF0aW9ucyB0byBlbnN1cmUgdGhhdCB0aGUgZW1pdHRlZCBjb2RlIGdv
ZXMgaW4gdGhlIGNvcnJlY3QgbG9jYXRpb24uCisgICAgICByZXR1cm4gWydidWZmZXIgKz0gJywg
c291cmNlLCAnOyddOworICAgIH0gZWxzZSB7CisgICAgICBzb3VyY2UuYXBwZW5kVG9CdWZmZXIg
PSB0cnVlOworICAgICAgcmV0dXJuIHNvdXJjZTsKKyAgICB9CisgIH0sCisKKyAgaW5pdGlhbGl6
ZUJ1ZmZlcjogZnVuY3Rpb24gaW5pdGlhbGl6ZUJ1ZmZlcigpIHsKKyAgICByZXR1cm4gdGhpcy5x
dW90ZWRTdHJpbmcoJycpOworICB9LAorICAvLyBFTkQgUFVCTElDIEFQSQorCisgIGNvbXBpbGU6
IGZ1bmN0aW9uIGNvbXBpbGUoZW52aXJvbm1lbnQsIG9wdGlvbnMsIGNvbnRleHQsIGFzT2JqZWN0
KSB7CisgICAgdGhpcy5lbnZpcm9ubWVudCA9IGVudmlyb25tZW50OworICAgIHRoaXMub3B0aW9u
cyA9IG9wdGlvbnM7CisgICAgdGhpcy5zdHJpbmdQYXJhbXMgPSB0aGlzLm9wdGlvbnMuc3RyaW5n
UGFyYW1zOworICAgIHRoaXMudHJhY2tJZHMgPSB0aGlzLm9wdGlvbnMudHJhY2tJZHM7CisgICAg
dGhpcy5wcmVjb21waWxlID0gIWFzT2JqZWN0OworCisgICAgdGhpcy5uYW1lID0gdGhpcy5lbnZp
cm9ubWVudC5uYW1lOworICAgIHRoaXMuaXNDaGlsZCA9ICEhY29udGV4dDsKKyAgICB0aGlzLmNv
bnRleHQgPSBjb250ZXh0IHx8IHsKKyAgICAgIGRlY29yYXRvcnM6IFtdLAorICAgICAgcHJvZ3Jh
bXM6IFtdLAorICAgICAgZW52aXJvbm1lbnRzOiBbXQorICAgIH07CisKKyAgICB0aGlzLnByZWFt
YmxlKCk7CisKKyAgICB0aGlzLnN0YWNrU2xvdCA9IDA7CisgICAgdGhpcy5zdGFja1ZhcnMgPSBb
XTsKKyAgICB0aGlzLmFsaWFzZXMgPSB7fTsKKyAgICB0aGlzLnJlZ2lzdGVycyA9IHsgbGlzdDog
W10gfTsKKyAgICB0aGlzLmhhc2hlcyA9IFtdOworICAgIHRoaXMuY29tcGlsZVN0YWNrID0gW107
CisgICAgdGhpcy5pbmxpbmVTdGFjayA9IFtdOworICAgIHRoaXMuYmxvY2tQYXJhbXMgPSBbXTsK
KworICAgIHRoaXMuY29tcGlsZUNoaWxkcmVuKGVudmlyb25tZW50LCBvcHRpb25zKTsKKworICAg
IHRoaXMudXNlRGVwdGhzID0gdGhpcy51c2VEZXB0aHMgfHwgZW52aXJvbm1lbnQudXNlRGVwdGhz
IHx8IGVudmlyb25tZW50LnVzZURlY29yYXRvcnMgfHwgdGhpcy5vcHRpb25zLmNvbXBhdDsKKyAg
ICB0aGlzLnVzZUJsb2NrUGFyYW1zID0gdGhpcy51c2VCbG9ja1BhcmFtcyB8fCBlbnZpcm9ubWVu
dC51c2VCbG9ja1BhcmFtczsKKworICAgIHZhciBvcGNvZGVzID0gZW52aXJvbm1lbnQub3Bjb2Rl
cywKKyAgICAgICAgb3Bjb2RlID0gdW5kZWZpbmVkLAorICAgICAgICBmaXJzdExvYyA9IHVuZGVm
aW5lZCwKKyAgICAgICAgaSA9IHVuZGVmaW5lZCwKKyAgICAgICAgbCA9IHVuZGVmaW5lZDsKKwor
ICAgIGZvciAoaSA9IDAsIGwgPSBvcGNvZGVzLmxlbmd0aDsgaSA8IGw7IGkrKykgeworICAgICAg
b3Bjb2RlID0gb3Bjb2Rlc1tpXTsKKworICAgICAgdGhpcy5zb3VyY2UuY3VycmVudExvY2F0aW9u
ID0gb3Bjb2RlLmxvYzsKKyAgICAgIGZpcnN0TG9jID0gZmlyc3RMb2MgfHwgb3Bjb2RlLmxvYzsK
KyAgICAgIHRoaXNbb3Bjb2RlLm9wY29kZV0uYXBwbHkodGhpcywgb3Bjb2RlLmFyZ3MpOworICAg
IH0KKworICAgIC8vIEZsdXNoIGFueSB0cmFpbGluZyBjb250ZW50IHRoYXQgbWlnaHQgYmUgcGVu
ZGluZy4KKyAgICB0aGlzLnNvdXJjZS5jdXJyZW50TG9jYXRpb24gPSBmaXJzdExvYzsKKyAgICB0
aGlzLnB1c2hTb3VyY2UoJycpOworCisgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8KKyAg
ICBpZiAodGhpcy5zdGFja1Nsb3QgfHwgdGhpcy5pbmxpbmVTdGFjay5sZW5ndGggfHwgdGhpcy5j
b21waWxlU3RhY2subGVuZ3RoKSB7CisgICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1
bHQnXSgnQ29tcGlsZSBjb21wbGV0ZWQgd2l0aCBjb250ZW50IGxlZnQgb24gc3RhY2snKTsKKyAg
ICB9CisKKyAgICBpZiAoIXRoaXMuZGVjb3JhdG9ycy5pc0VtcHR5KCkpIHsKKyAgICAgIHRoaXMu
dXNlRGVjb3JhdG9ycyA9IHRydWU7CisKKyAgICAgIHRoaXMuZGVjb3JhdG9ycy5wcmVwZW5kKCd2
YXIgZGVjb3JhdG9ycyA9IGNvbnRhaW5lci5kZWNvcmF0b3JzO1xuJyk7CisgICAgICB0aGlzLmRl
Y29yYXRvcnMucHVzaCgncmV0dXJuIGZuOycpOworCisgICAgICBpZiAoYXNPYmplY3QpIHsKKyAg
ICAgICAgdGhpcy5kZWNvcmF0b3JzID0gRnVuY3Rpb24uYXBwbHkodGhpcywgWydmbicsICdwcm9w
cycsICdjb250YWluZXInLCAnZGVwdGgwJywgJ2RhdGEnLCAnYmxvY2tQYXJhbXMnLCAnZGVwdGhz
JywgdGhpcy5kZWNvcmF0b3JzLm1lcmdlKCldKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHRo
aXMuZGVjb3JhdG9ycy5wcmVwZW5kKCdmdW5jdGlvbihmbiwgcHJvcHMsIGNvbnRhaW5lciwgZGVw
dGgwLCBkYXRhLCBibG9ja1BhcmFtcywgZGVwdGhzKSB7XG4nKTsKKyAgICAgICAgdGhpcy5kZWNv
cmF0b3JzLnB1c2goJ31cbicpOworICAgICAgICB0aGlzLmRlY29yYXRvcnMgPSB0aGlzLmRlY29y
YXRvcnMubWVyZ2UoKTsKKyAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgdGhpcy5kZWNvcmF0
b3JzID0gdW5kZWZpbmVkOworICAgIH0KKworICAgIHZhciBmbiA9IHRoaXMuY3JlYXRlRnVuY3Rp
b25Db250ZXh0KGFzT2JqZWN0KTsKKyAgICBpZiAoIXRoaXMuaXNDaGlsZCkgeworICAgICAgdmFy
IHJldCA9IHsKKyAgICAgICAgY29tcGlsZXI6IHRoaXMuY29tcGlsZXJJbmZvKCksCisgICAgICAg
IG1haW46IGZuCisgICAgICB9OworCisgICAgICBpZiAodGhpcy5kZWNvcmF0b3JzKSB7CisgICAg
ICAgIHJldC5tYWluX2QgPSB0aGlzLmRlY29yYXRvcnM7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUg
Y2FtZWxjYXNlCisgICAgICAgIHJldC51c2VEZWNvcmF0b3JzID0gdHJ1ZTsKKyAgICAgIH0KKwor
ICAgICAgdmFyIF9jb250ZXh0ID0gdGhpcy5jb250ZXh0OworICAgICAgdmFyIHByb2dyYW1zID0g
X2NvbnRleHQucHJvZ3JhbXM7CisgICAgICB2YXIgZGVjb3JhdG9ycyA9IF9jb250ZXh0LmRlY29y
YXRvcnM7CisKKyAgICAgIGZvciAoaSA9IDAsIGwgPSBwcm9ncmFtcy5sZW5ndGg7IGkgPCBsOyBp
KyspIHsKKyAgICAgICAgaWYgKHByb2dyYW1zW2ldKSB7CisgICAgICAgICAgcmV0W2ldID0gcHJv
Z3JhbXNbaV07CisgICAgICAgICAgaWYgKGRlY29yYXRvcnNbaV0pIHsKKyAgICAgICAgICAgIHJl
dFtpICsgJ19kJ10gPSBkZWNvcmF0b3JzW2ldOworICAgICAgICAgICAgcmV0LnVzZURlY29yYXRv
cnMgPSB0cnVlOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorCisgICAgICBpZiAo
dGhpcy5lbnZpcm9ubWVudC51c2VQYXJ0aWFsKSB7CisgICAgICAgIHJldC51c2VQYXJ0aWFsID0g
dHJ1ZTsKKyAgICAgIH0KKyAgICAgIGlmICh0aGlzLm9wdGlvbnMuZGF0YSkgeworICAgICAgICBy
ZXQudXNlRGF0YSA9IHRydWU7CisgICAgICB9CisgICAgICBpZiAodGhpcy51c2VEZXB0aHMpIHsK
KyAgICAgICAgcmV0LnVzZURlcHRocyA9IHRydWU7CisgICAgICB9CisgICAgICBpZiAodGhpcy51
c2VCbG9ja1BhcmFtcykgeworICAgICAgICByZXQudXNlQmxvY2tQYXJhbXMgPSB0cnVlOworICAg
ICAgfQorICAgICAgaWYgKHRoaXMub3B0aW9ucy5jb21wYXQpIHsKKyAgICAgICAgcmV0LmNvbXBh
dCA9IHRydWU7CisgICAgICB9CisKKyAgICAgIGlmICghYXNPYmplY3QpIHsKKyAgICAgICAgcmV0
LmNvbXBpbGVyID0gSlNPTi5zdHJpbmdpZnkocmV0LmNvbXBpbGVyKTsKKworICAgICAgICB0aGlz
LnNvdXJjZS5jdXJyZW50TG9jYXRpb24gPSB7IHN0YXJ0OiB7IGxpbmU6IDEsIGNvbHVtbjogMCB9
IH07CisgICAgICAgIHJldCA9IHRoaXMub2JqZWN0TGl0ZXJhbChyZXQpOworCisgICAgICAgIGlm
IChvcHRpb25zLnNyY05hbWUpIHsKKyAgICAgICAgICByZXQgPSByZXQudG9TdHJpbmdXaXRoU291
cmNlTWFwKHsgZmlsZTogb3B0aW9ucy5kZXN0TmFtZSB9KTsKKyAgICAgICAgICByZXQubWFwID0g
cmV0Lm1hcCAmJiByZXQubWFwLnRvU3RyaW5nKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgcmV0ID0gcmV0LnRvU3RyaW5nKCk7CisgICAgICAgIH0KKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHJldC5jb21waWxlck9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7CisgICAgICB9CisKKyAgICAg
IHJldHVybiByZXQ7CisgICAgfSBlbHNlIHsKKyAgICAgIHJldHVybiBmbjsKKyAgICB9CisgIH0s
CisKKyAgcHJlYW1ibGU6IGZ1bmN0aW9uIHByZWFtYmxlKCkgeworICAgIC8vIHRyYWNrIHRoZSBs
YXN0IGNvbnRleHQgcHVzaGVkIGludG8gcGxhY2UgdG8gYWxsb3cgc2tpcHBpbmcgdGhlCisgICAg
Ly8gZ2V0Q29udGV4dCBvcGNvZGUgd2hlbiBpdCB3b3VsZCBiZSBhIG5vb3AKKyAgICB0aGlzLmxh
c3RDb250ZXh0ID0gMDsKKyAgICB0aGlzLnNvdXJjZSA9IG5ldyBfY29kZUdlbjJbJ2RlZmF1bHQn
XSh0aGlzLm9wdGlvbnMuc3JjTmFtZSk7CisgICAgdGhpcy5kZWNvcmF0b3JzID0gbmV3IF9jb2Rl
R2VuMlsnZGVmYXVsdCddKHRoaXMub3B0aW9ucy5zcmNOYW1lKTsKKyAgfSwKKworICBjcmVhdGVG
dW5jdGlvbkNvbnRleHQ6IGZ1bmN0aW9uIGNyZWF0ZUZ1bmN0aW9uQ29udGV4dChhc09iamVjdCkg
eworICAgIHZhciB2YXJEZWNsYXJhdGlvbnMgPSAnJzsKKworICAgIHZhciBsb2NhbHMgPSB0aGlz
LnN0YWNrVmFycy5jb25jYXQodGhpcy5yZWdpc3RlcnMubGlzdCk7CisgICAgaWYgKGxvY2Fscy5s
ZW5ndGggPiAwKSB7CisgICAgICB2YXJEZWNsYXJhdGlvbnMgKz0gJywgJyArIGxvY2Fscy5qb2lu
KCcsICcpOworICAgIH0KKworICAgIC8vIEdlbmVyYXRlIG1pbmltaXplciBhbGlhcyBtYXBwaW5n
cworICAgIC8vCisgICAgLy8gV2hlbiB1c2luZyB0cnVlIFNvdXJjZU5vZGVzLCB0aGlzIHdpbGwg
dXBkYXRlIGFsbCByZWZlcmVuY2VzIHRvIHRoZSBnaXZlbiBhbGlhcworICAgIC8vIGFzIHRoZSBz
b3VyY2Ugbm9kZXMgYXJlIHJldXNlZCBpbiBzaXR1LiBGb3IgdGhlIG5vbi1zb3VyY2Ugbm9kZSBj
b21waWxhdGlvbiBtb2RlLAorICAgIC8vIGFsaWFzZXMgd2lsbCBub3QgYmUgdXNlZCwgYnV0IHRo
aXMgY2FzZSBpcyBhbHJlYWR5IGJlaW5nIHJ1biBvbiB0aGUgY2xpZW50IGFuZAorICAgIC8vIHdl
IGFyZW4ndCBjb25jZXJuIGFib3V0IG1pbmltaXppbmcgdGhlIHRlbXBsYXRlIHNpemUuCisgICAg
dmFyIGFsaWFzQ291bnQgPSAwOworICAgIGZvciAodmFyIGFsaWFzIGluIHRoaXMuYWxpYXNlcykg
eworICAgICAgLy8gZXNsaW50LWRpc2FibGUtbGluZSBndWFyZC1mb3ItaW4KKyAgICAgIHZhciBu
b2RlID0gdGhpcy5hbGlhc2VzW2FsaWFzXTsKKworICAgICAgaWYgKHRoaXMuYWxpYXNlcy5oYXNP
d25Qcm9wZXJ0eShhbGlhcykgJiYgbm9kZS5jaGlsZHJlbiAmJiBub2RlLnJlZmVyZW5jZUNvdW50
ID4gMSkgeworICAgICAgICB2YXJEZWNsYXJhdGlvbnMgKz0gJywgYWxpYXMnICsgKythbGlhc0Nv
dW50ICsgJz0nICsgYWxpYXM7CisgICAgICAgIG5vZGUuY2hpbGRyZW5bMF0gPSAnYWxpYXMnICsg
YWxpYXNDb3VudDsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgcGFyYW1zID0gWydjb250YWlu
ZXInLCAnZGVwdGgwJywgJ2hlbHBlcnMnLCAncGFydGlhbHMnLCAnZGF0YSddOworCisgICAgaWYg
KHRoaXMudXNlQmxvY2tQYXJhbXMgfHwgdGhpcy51c2VEZXB0aHMpIHsKKyAgICAgIHBhcmFtcy5w
dXNoKCdibG9ja1BhcmFtcycpOworICAgIH0KKyAgICBpZiAodGhpcy51c2VEZXB0aHMpIHsKKyAg
ICAgIHBhcmFtcy5wdXNoKCdkZXB0aHMnKTsKKyAgICB9CisKKyAgICAvLyBQZXJmb3JtIGEgc2Vj
b25kIHBhc3Mgb3ZlciB0aGUgb3V0cHV0IHRvIG1lcmdlIGNvbnRlbnQgd2hlbiBwb3NzaWJsZQor
ICAgIHZhciBzb3VyY2UgPSB0aGlzLm1lcmdlU291cmNlKHZhckRlY2xhcmF0aW9ucyk7CisKKyAg
ICBpZiAoYXNPYmplY3QpIHsKKyAgICAgIHBhcmFtcy5wdXNoKHNvdXJjZSk7CisKKyAgICAgIHJl
dHVybiBGdW5jdGlvbi5hcHBseSh0aGlzLCBwYXJhbXMpOworICAgIH0gZWxzZSB7CisgICAgICBy
ZXR1cm4gdGhpcy5zb3VyY2Uud3JhcChbJ2Z1bmN0aW9uKCcsIHBhcmFtcy5qb2luKCcsJyksICcp
IHtcbiAgJywgc291cmNlLCAnfSddKTsKKyAgICB9CisgIH0sCisgIG1lcmdlU291cmNlOiBmdW5j
dGlvbiBtZXJnZVNvdXJjZSh2YXJEZWNsYXJhdGlvbnMpIHsKKyAgICB2YXIgaXNTaW1wbGUgPSB0
aGlzLmVudmlyb25tZW50LmlzU2ltcGxlLAorICAgICAgICBhcHBlbmRPbmx5ID0gIXRoaXMuZm9y
Y2VCdWZmZXIsCisgICAgICAgIGFwcGVuZEZpcnN0ID0gdW5kZWZpbmVkLAorICAgICAgICBzb3Vy
Y2VTZWVuID0gdW5kZWZpbmVkLAorICAgICAgICBidWZmZXJTdGFydCA9IHVuZGVmaW5lZCwKKyAg
ICAgICAgYnVmZmVyRW5kID0gdW5kZWZpbmVkOworICAgIHRoaXMuc291cmNlLmVhY2goZnVuY3Rp
b24gKGxpbmUpIHsKKyAgICAgIGlmIChsaW5lLmFwcGVuZFRvQnVmZmVyKSB7CisgICAgICAgIGlm
IChidWZmZXJTdGFydCkgeworICAgICAgICAgIGxpbmUucHJlcGVuZCgnICArICcpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgIGJ1ZmZlclN0YXJ0ID0gbGluZTsKKyAgICAgICAgfQorICAg
ICAgICBidWZmZXJFbmQgPSBsaW5lOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGJ1ZmZl
clN0YXJ0KSB7CisgICAgICAgICAgaWYgKCFzb3VyY2VTZWVuKSB7CisgICAgICAgICAgICBhcHBl
bmRGaXJzdCA9IHRydWU7CisgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGJ1ZmZlclN0
YXJ0LnByZXBlbmQoJ2J1ZmZlciArPSAnKTsKKyAgICAgICAgICB9CisgICAgICAgICAgYnVmZmVy
RW5kLmFkZCgnOycpOworICAgICAgICAgIGJ1ZmZlclN0YXJ0ID0gYnVmZmVyRW5kID0gdW5kZWZp
bmVkOworICAgICAgICB9CisKKyAgICAgICAgc291cmNlU2VlbiA9IHRydWU7CisgICAgICAgIGlm
ICghaXNTaW1wbGUpIHsKKyAgICAgICAgICBhcHBlbmRPbmx5ID0gZmFsc2U7CisgICAgICAgIH0K
KyAgICAgIH0KKyAgICB9KTsKKworICAgIGlmIChhcHBlbmRPbmx5KSB7CisgICAgICBpZiAoYnVm
ZmVyU3RhcnQpIHsKKyAgICAgICAgYnVmZmVyU3RhcnQucHJlcGVuZCgncmV0dXJuICcpOworICAg
ICAgICBidWZmZXJFbmQuYWRkKCc7Jyk7CisgICAgICB9IGVsc2UgaWYgKCFzb3VyY2VTZWVuKSB7
CisgICAgICAgIHRoaXMuc291cmNlLnB1c2goJ3JldHVybiAiIjsnKTsKKyAgICAgIH0KKyAgICB9
IGVsc2UgeworICAgICAgdmFyRGVjbGFyYXRpb25zICs9ICcsIGJ1ZmZlciA9ICcgKyAoYXBwZW5k
Rmlyc3QgPyAnJyA6IHRoaXMuaW5pdGlhbGl6ZUJ1ZmZlcigpKTsKKworICAgICAgaWYgKGJ1ZmZl
clN0YXJ0KSB7CisgICAgICAgIGJ1ZmZlclN0YXJ0LnByZXBlbmQoJ3JldHVybiBidWZmZXIgKyAn
KTsKKyAgICAgICAgYnVmZmVyRW5kLmFkZCgnOycpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
dGhpcy5zb3VyY2UucHVzaCgncmV0dXJuIGJ1ZmZlcjsnKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICBpZiAodmFyRGVjbGFyYXRpb25zKSB7CisgICAgICB0aGlzLnNvdXJjZS5wcmVwZW5kKCd2YXIg
JyArIHZhckRlY2xhcmF0aW9ucy5zdWJzdHJpbmcoMikgKyAoYXBwZW5kRmlyc3QgPyAnJyA6ICc7
XG4nKSk7CisgICAgfQorCisgICAgcmV0dXJuIHRoaXMuc291cmNlLm1lcmdlKCk7CisgIH0sCisK
KyAgLy8gW2Jsb2NrVmFsdWVdCisgIC8vCisgIC8vIE9uIHN0YWNrLCBiZWZvcmU6IGhhc2gsIGlu
dmVyc2UsIHByb2dyYW0sIHZhbHVlCisgIC8vIE9uIHN0YWNrLCBhZnRlcjogcmV0dXJuIHZhbHVl
IG9mIGJsb2NrSGVscGVyTWlzc2luZworICAvLworICAvLyBUaGUgcHVycG9zZSBvZiB0aGlzIG9w
Y29kZSBpcyB0byB0YWtlIGEgYmxvY2sgb2YgdGhlIGZvcm0KKyAgLy8gYHt7I3RoaXMuZm9vfX0u
Li57ey90aGlzLmZvb319YCwgcmVzb2x2ZSB0aGUgdmFsdWUgb2YgYGZvb2AsIGFuZAorICAvLyBy
ZXBsYWNlIGl0IG9uIHRoZSBzdGFjayB3aXRoIHRoZSByZXN1bHQgb2YgcHJvcGVybHkKKyAgLy8g
aW52b2tpbmcgYmxvY2tIZWxwZXJNaXNzaW5nLgorICBibG9ja1ZhbHVlOiBmdW5jdGlvbiBibG9j
a1ZhbHVlKG5hbWUpIHsKKyAgICB2YXIgYmxvY2tIZWxwZXJNaXNzaW5nID0gdGhpcy5hbGlhc2Fi
bGUoJ2hlbHBlcnMuYmxvY2tIZWxwZXJNaXNzaW5nJyksCisgICAgICAgIHBhcmFtcyA9IFt0aGlz
LmNvbnRleHROYW1lKDApXTsKKyAgICB0aGlzLnNldHVwSGVscGVyQXJncyhuYW1lLCAwLCBwYXJh
bXMpOworCisgICAgdmFyIGJsb2NrTmFtZSA9IHRoaXMucG9wU3RhY2soKTsKKyAgICBwYXJhbXMu
c3BsaWNlKDEsIDAsIGJsb2NrTmFtZSk7CisKKyAgICB0aGlzLnB1c2godGhpcy5zb3VyY2UuZnVu
Y3Rpb25DYWxsKGJsb2NrSGVscGVyTWlzc2luZywgJ2NhbGwnLCBwYXJhbXMpKTsKKyAgfSwKKwor
ICAvLyBbYW1iaWd1b3VzQmxvY2tWYWx1ZV0KKyAgLy8KKyAgLy8gT24gc3RhY2ssIGJlZm9yZTog
aGFzaCwgaW52ZXJzZSwgcHJvZ3JhbSwgdmFsdWUKKyAgLy8gQ29tcGlsZXIgdmFsdWUsIGJlZm9y
ZTogbGFzdEhlbHBlcj12YWx1ZSBvZiBsYXN0IGZvdW5kIGhlbHBlciwgaWYgYW55CisgIC8vIE9u
IHN0YWNrLCBhZnRlciwgaWYgbm8gbGFzdEhlbHBlcjogc2FtZSBhcyBbYmxvY2tWYWx1ZV0KKyAg
Ly8gT24gc3RhY2ssIGFmdGVyLCBpZiBsYXN0SGVscGVyOiB2YWx1ZQorICBhbWJpZ3VvdXNCbG9j
a1ZhbHVlOiBmdW5jdGlvbiBhbWJpZ3VvdXNCbG9ja1ZhbHVlKCkgeworICAgIC8vIFdlJ3JlIGJl
aW5nIGEgYml0IGNoZWVreSBhbmQgcmV1c2luZyB0aGUgb3B0aW9ucyB2YWx1ZSBmcm9tIHRoZSBw
cmlvciBleGVjCisgICAgdmFyIGJsb2NrSGVscGVyTWlzc2luZyA9IHRoaXMuYWxpYXNhYmxlKCdo
ZWxwZXJzLmJsb2NrSGVscGVyTWlzc2luZycpLAorICAgICAgICBwYXJhbXMgPSBbdGhpcy5jb250
ZXh0TmFtZSgwKV07CisgICAgdGhpcy5zZXR1cEhlbHBlckFyZ3MoJycsIDAsIHBhcmFtcywgdHJ1
ZSk7CisKKyAgICB0aGlzLmZsdXNoSW5saW5lKCk7CisKKyAgICB2YXIgY3VycmVudCA9IHRoaXMu
dG9wU3RhY2soKTsKKyAgICBwYXJhbXMuc3BsaWNlKDEsIDAsIGN1cnJlbnQpOworCisgICAgdGhp
cy5wdXNoU291cmNlKFsnaWYgKCEnLCB0aGlzLmxhc3RIZWxwZXIsICcpIHsgJywgY3VycmVudCwg
JyA9ICcsIHRoaXMuc291cmNlLmZ1bmN0aW9uQ2FsbChibG9ja0hlbHBlck1pc3NpbmcsICdjYWxs
JywgcGFyYW1zKSwgJ30nXSk7CisgIH0sCisKKyAgLy8gW2FwcGVuZENvbnRlbnRdCisgIC8vCisg
IC8vIE9uIHN0YWNrLCBiZWZvcmU6IC4uLgorICAvLyBPbiBzdGFjaywgYWZ0ZXI6IC4uLgorICAv
LworICAvLyBBcHBlbmRzIHRoZSBzdHJpbmcgdmFsdWUgb2YgYGNvbnRlbnRgIHRvIHRoZSBjdXJy
ZW50IGJ1ZmZlcgorICBhcHBlbmRDb250ZW50OiBmdW5jdGlvbiBhcHBlbmRDb250ZW50KGNvbnRl
bnQpIHsKKyAgICBpZiAodGhpcy5wZW5kaW5nQ29udGVudCkgeworICAgICAgY29udGVudCA9IHRo
aXMucGVuZGluZ0NvbnRlbnQgKyBjb250ZW50OworICAgIH0gZWxzZSB7CisgICAgICB0aGlzLnBl
bmRpbmdMb2NhdGlvbiA9IHRoaXMuc291cmNlLmN1cnJlbnRMb2NhdGlvbjsKKyAgICB9CisKKyAg
ICB0aGlzLnBlbmRpbmdDb250ZW50ID0gY29udGVudDsKKyAgfSwKKworICAvLyBbYXBwZW5kXQor
ICAvLworICAvLyBPbiBzdGFjaywgYmVmb3JlOiB2YWx1ZSwgLi4uCisgIC8vIE9uIHN0YWNrLCBh
ZnRlcjogLi4uCisgIC8vCisgIC8vIENvZXJjZXMgYHZhbHVlYCB0byBhIFN0cmluZyBhbmQgYXBw
ZW5kcyBpdCB0byB0aGUgY3VycmVudCBidWZmZXIuCisgIC8vCisgIC8vIElmIGB2YWx1ZWAgaXMg
dHJ1dGh5LCBvciAwLCBpdCBpcyBjb2VyY2VkIGludG8gYSBzdHJpbmcgYW5kIGFwcGVuZGVkCisg
IC8vIE90aGVyd2lzZSwgdGhlIGVtcHR5IHN0cmluZyBpcyBhcHBlbmRlZAorICBhcHBlbmQ6IGZ1
bmN0aW9uIGFwcGVuZCgpIHsKKyAgICBpZiAodGhpcy5pc0lubGluZSgpKSB7CisgICAgICB0aGlz
LnJlcGxhY2VTdGFjayhmdW5jdGlvbiAoY3VycmVudCkgeworICAgICAgICByZXR1cm4gWycgIT0g
bnVsbCA/ICcsIGN1cnJlbnQsICcgOiAiIiddOworICAgICAgfSk7CisKKyAgICAgIHRoaXMucHVz
aFNvdXJjZSh0aGlzLmFwcGVuZFRvQnVmZmVyKHRoaXMucG9wU3RhY2soKSkpOworICAgIH0gZWxz
ZSB7CisgICAgICB2YXIgbG9jYWwgPSB0aGlzLnBvcFN0YWNrKCk7CisgICAgICB0aGlzLnB1c2hT
b3VyY2UoWydpZiAoJywgbG9jYWwsICcgIT0gbnVsbCkgeyAnLCB0aGlzLmFwcGVuZFRvQnVmZmVy
KGxvY2FsLCB1bmRlZmluZWQsIHRydWUpLCAnIH0nXSk7CisgICAgICBpZiAodGhpcy5lbnZpcm9u
bWVudC5pc1NpbXBsZSkgeworICAgICAgICB0aGlzLnB1c2hTb3VyY2UoWydlbHNlIHsgJywgdGhp
cy5hcHBlbmRUb0J1ZmZlcigiJyciLCB1bmRlZmluZWQsIHRydWUpLCAnIH0nXSk7CisgICAgICB9
CisgICAgfQorICB9LAorCisgIC8vIFthcHBlbmRFc2NhcGVkXQorICAvLworICAvLyBPbiBzdGFj
aywgYmVmb3JlOiB2YWx1ZSwgLi4uCisgIC8vIE9uIHN0YWNrLCBhZnRlcjogLi4uCisgIC8vCisg
IC8vIEVzY2FwZSBgdmFsdWVgIGFuZCBhcHBlbmQgaXQgdG8gdGhlIGJ1ZmZlcgorICBhcHBlbmRF
c2NhcGVkOiBmdW5jdGlvbiBhcHBlbmRFc2NhcGVkKCkgeworICAgIHRoaXMucHVzaFNvdXJjZSh0
aGlzLmFwcGVuZFRvQnVmZmVyKFt0aGlzLmFsaWFzYWJsZSgnY29udGFpbmVyLmVzY2FwZUV4cHJl
c3Npb24nKSwgJygnLCB0aGlzLnBvcFN0YWNrKCksICcpJ10pKTsKKyAgfSwKKworICAvLyBbZ2V0
Q29udGV4dF0KKyAgLy8KKyAgLy8gT24gc3RhY2ssIGJlZm9yZTogLi4uCisgIC8vIE9uIHN0YWNr
LCBhZnRlcjogLi4uCisgIC8vIENvbXBpbGVyIHZhbHVlLCBhZnRlcjogbGFzdENvbnRleHQ9ZGVw
dGgKKyAgLy8KKyAgLy8gU2V0IHRoZSB2YWx1ZSBvZiB0aGUgYGxhc3RDb250ZXh0YCBjb21waWxl
ciB2YWx1ZSB0byB0aGUgZGVwdGgKKyAgZ2V0Q29udGV4dDogZnVuY3Rpb24gZ2V0Q29udGV4dChk
ZXB0aCkgeworICAgIHRoaXMubGFzdENvbnRleHQgPSBkZXB0aDsKKyAgfSwKKworICAvLyBbcHVz
aENvbnRleHRdCisgIC8vCisgIC8vIE9uIHN0YWNrLCBiZWZvcmU6IC4uLgorICAvLyBPbiBzdGFj
aywgYWZ0ZXI6IGN1cnJlbnRDb250ZXh0LCAuLi4KKyAgLy8KKyAgLy8gUHVzaGVzIHRoZSB2YWx1
ZSBvZiB0aGUgY3VycmVudCBjb250ZXh0IG9udG8gdGhlIHN0YWNrLgorICBwdXNoQ29udGV4dDog
ZnVuY3Rpb24gcHVzaENvbnRleHQoKSB7CisgICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFsKHRoaXMu
Y29udGV4dE5hbWUodGhpcy5sYXN0Q29udGV4dCkpOworICB9LAorCisgIC8vIFtsb29rdXBPbkNv
bnRleHRdCisgIC8vCisgIC8vIE9uIHN0YWNrLCBiZWZvcmU6IC4uLgorICAvLyBPbiBzdGFjaywg
YWZ0ZXI6IGN1cnJlbnRDb250ZXh0W25hbWVdLCAuLi4KKyAgLy8KKyAgLy8gTG9va3MgdXAgdGhl
IHZhbHVlIG9mIGBuYW1lYCBvbiB0aGUgY3VycmVudCBjb250ZXh0IGFuZCBwdXNoZXMKKyAgLy8g
aXQgb250byB0aGUgc3RhY2suCisgIGxvb2t1cE9uQ29udGV4dDogZnVuY3Rpb24gbG9va3VwT25D
b250ZXh0KHBhcnRzLCBmYWxzeSwgc3RyaWN0LCBzY29wZWQpIHsKKyAgICB2YXIgaSA9IDA7CisK
KyAgICBpZiAoIXNjb3BlZCAmJiB0aGlzLm9wdGlvbnMuY29tcGF0ICYmICF0aGlzLmxhc3RDb250
ZXh0KSB7CisgICAgICAvLyBUaGUgZGVwdGhlZCBxdWVyeSBpcyBleHBlY3RlZCB0byBoYW5kbGUg
dGhlIHVuZGVmaW5lZCBsb2dpYyBmb3IgdGhlIHJvb3QgbGV2ZWwgdGhhdAorICAgICAgLy8gaXMg
aW1wbGVtZW50ZWQgYmVsb3csIHNvIHdlIGV2YWx1YXRlIHRoYXQgZGlyZWN0bHkgaW4gY29tcGF0
IG1vZGUKKyAgICAgIHRoaXMucHVzaCh0aGlzLmRlcHRoZWRMb29rdXAocGFydHNbaSsrXSkpOwor
ICAgIH0gZWxzZSB7CisgICAgICB0aGlzLnB1c2hDb250ZXh0KCk7CisgICAgfQorCisgICAgdGhp
cy5yZXNvbHZlUGF0aCgnY29udGV4dCcsIHBhcnRzLCBpLCBmYWxzeSwgc3RyaWN0KTsKKyAgfSwK
KworICAvLyBbbG9va3VwQmxvY2tQYXJhbV0KKyAgLy8KKyAgLy8gT24gc3RhY2ssIGJlZm9yZTog
Li4uCisgIC8vIE9uIHN0YWNrLCBhZnRlcjogYmxvY2tQYXJhbVtuYW1lXSwgLi4uCisgIC8vCisg
IC8vIExvb2tzIHVwIHRoZSB2YWx1ZSBvZiBgcGFydHNgIG9uIHRoZSBnaXZlbiBibG9jayBwYXJh
bSBhbmQgcHVzaGVzCisgIC8vIGl0IG9udG8gdGhlIHN0YWNrLgorICBsb29rdXBCbG9ja1BhcmFt
OiBmdW5jdGlvbiBsb29rdXBCbG9ja1BhcmFtKGJsb2NrUGFyYW1JZCwgcGFydHMpIHsKKyAgICB0
aGlzLnVzZUJsb2NrUGFyYW1zID0gdHJ1ZTsKKworICAgIHRoaXMucHVzaChbJ2Jsb2NrUGFyYW1z
WycsIGJsb2NrUGFyYW1JZFswXSwgJ11bJywgYmxvY2tQYXJhbUlkWzFdLCAnXSddKTsKKyAgICB0
aGlzLnJlc29sdmVQYXRoKCdjb250ZXh0JywgcGFydHMsIDEpOworICB9LAorCisgIC8vIFtsb29r
dXBEYXRhXQorICAvLworICAvLyBPbiBzdGFjaywgYmVmb3JlOiAuLi4KKyAgLy8gT24gc3RhY2ss
IGFmdGVyOiBkYXRhLCAuLi4KKyAgLy8KKyAgLy8gUHVzaCB0aGUgZGF0YSBsb29rdXAgb3BlcmF0
b3IKKyAgbG9va3VwRGF0YTogZnVuY3Rpb24gbG9va3VwRGF0YShkZXB0aCwgcGFydHMsIHN0cmlj
dCkgeworICAgIGlmICghZGVwdGgpIHsKKyAgICAgIHRoaXMucHVzaFN0YWNrTGl0ZXJhbCgnZGF0
YScpOworICAgIH0gZWxzZSB7CisgICAgICB0aGlzLnB1c2hTdGFja0xpdGVyYWwoJ2NvbnRhaW5l
ci5kYXRhKGRhdGEsICcgKyBkZXB0aCArICcpJyk7CisgICAgfQorCisgICAgdGhpcy5yZXNvbHZl
UGF0aCgnZGF0YScsIHBhcnRzLCAwLCB0cnVlLCBzdHJpY3QpOworICB9LAorCisgIHJlc29sdmVQ
YXRoOiBmdW5jdGlvbiByZXNvbHZlUGF0aCh0eXBlLCBwYXJ0cywgaSwgZmFsc3ksIHN0cmljdCkg
eworICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0CisKKyAgICB2YXIgX3RoaXMgPSB0aGlzOwor
CisgICAgaWYgKHRoaXMub3B0aW9ucy5zdHJpY3QgfHwgdGhpcy5vcHRpb25zLmFzc3VtZU9iamVj
dHMpIHsKKyAgICAgIHRoaXMucHVzaChzdHJpY3RMb29rdXAodGhpcy5vcHRpb25zLnN0cmljdCAm
JiBzdHJpY3QsIHRoaXMsIHBhcnRzLCB0eXBlKSk7CisgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgdmFyIGxlbiA9IHBhcnRzLmxlbmd0aDsKKyAgICBmb3IgKDsgaSA8IGxlbjsgaSsrKSB7Cisg
ICAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby1sb29wLWZ1bmMgKi8KKyAgICAgIHRoaXMucmVwbGFj
ZVN0YWNrKGZ1bmN0aW9uIChjdXJyZW50KSB7CisgICAgICAgIHZhciBsb29rdXAgPSBfdGhpcy5u
YW1lTG9va3VwKGN1cnJlbnQsIHBhcnRzW2ldLCB0eXBlKTsKKyAgICAgICAgLy8gV2Ugd2FudCB0
byBlbnN1cmUgdGhhdCB6ZXJvIGFuZCBmYWxzZSBhcmUgaGFuZGxlZCBwcm9wZXJseSBpZiB0aGUg
Y29udGV4dCAoZmFsc3kgZmxhZykKKyAgICAgICAgLy8gbmVlZHMgdG8gaGF2ZSB0aGUgc3BlY2lh
bCBoYW5kbGluZyBmb3IgdGhlc2UgdmFsdWVzLgorICAgICAgICBpZiAoIWZhbHN5KSB7CisgICAg
ICAgICAgcmV0dXJuIFsnICE9IG51bGwgPyAnLCBsb29rdXAsICcgOiAnLCBjdXJyZW50XTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAvLyBPdGhlcndpc2Ugd2UgY2FuIHVzZSBnZW5lcmlj
IGZhbHN5IGhhbmRsaW5nCisgICAgICAgICAgcmV0dXJuIFsnICYmICcsIGxvb2t1cF07CisgICAg
ICAgIH0KKyAgICAgIH0pOworICAgICAgLyogZXNsaW50LWVuYWJsZSBuby1sb29wLWZ1bmMgKi8K
KyAgICB9CisgIH0sCisKKyAgLy8gW3Jlc29sdmVQb3NzaWJsZUxhbWJkYV0KKyAgLy8KKyAgLy8g
T24gc3RhY2ssIGJlZm9yZTogdmFsdWUsIC4uLgorICAvLyBPbiBzdGFjaywgYWZ0ZXI6IHJlc29s
dmVkIHZhbHVlLCAuLi4KKyAgLy8KKyAgLy8gSWYgdGhlIGB2YWx1ZWAgaXMgYSBsYW1iZGEsIHJl
cGxhY2UgaXQgb24gdGhlIHN0YWNrIGJ5CisgIC8vIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGxh
bWJkYQorICByZXNvbHZlUG9zc2libGVMYW1iZGE6IGZ1bmN0aW9uIHJlc29sdmVQb3NzaWJsZUxh
bWJkYSgpIHsKKyAgICB0aGlzLnB1c2goW3RoaXMuYWxpYXNhYmxlKCdjb250YWluZXIubGFtYmRh
JyksICcoJywgdGhpcy5wb3BTdGFjaygpLCAnLCAnLCB0aGlzLmNvbnRleHROYW1lKDApLCAnKSdd
KTsKKyAgfSwKKworICAvLyBbcHVzaFN0cmluZ1BhcmFtXQorICAvLworICAvLyBPbiBzdGFjaywg
YmVmb3JlOiAuLi4KKyAgLy8gT24gc3RhY2ssIGFmdGVyOiBzdHJpbmcsIGN1cnJlbnRDb250ZXh0
LCAuLi4KKyAgLy8KKyAgLy8gVGhpcyBvcGNvZGUgaXMgZGVzaWduZWQgZm9yIHVzZSBpbiBzdHJp
bmcgbW9kZSwgd2hpY2gKKyAgLy8gcHJvdmlkZXMgdGhlIHN0cmluZyB2YWx1ZSBvZiBhIHBhcmFt
ZXRlciBhbG9uZyB3aXRoIGl0cworICAvLyBkZXB0aCByYXRoZXIgdGhhbiByZXNvbHZpbmcgaXQg
aW1tZWRpYXRlbHkuCisgIHB1c2hTdHJpbmdQYXJhbTogZnVuY3Rpb24gcHVzaFN0cmluZ1BhcmFt
KHN0cmluZywgdHlwZSkgeworICAgIHRoaXMucHVzaENvbnRleHQoKTsKKyAgICB0aGlzLnB1c2hT
dHJpbmcodHlwZSk7CisKKyAgICAvLyBJZiBpdCdzIGEgc3ViZXhwcmVzc2lvbiwgdGhlIHN0cmlu
ZyByZXN1bHQKKyAgICAvLyB3aWxsIGJlIHB1c2hlZCBhZnRlciB0aGlzIG9wY29kZS4KKyAgICBp
ZiAodHlwZSAhPT0gJ1N1YkV4cHJlc3Npb24nKSB7CisgICAgICBpZiAodHlwZW9mIHN0cmluZyA9
PT0gJ3N0cmluZycpIHsKKyAgICAgICAgdGhpcy5wdXNoU3RyaW5nKHN0cmluZyk7CisgICAgICB9
IGVsc2UgeworICAgICAgICB0aGlzLnB1c2hTdGFja0xpdGVyYWwoc3RyaW5nKTsKKyAgICAgIH0K
KyAgICB9CisgIH0sCisKKyAgZW1wdHlIYXNoOiBmdW5jdGlvbiBlbXB0eUhhc2gob21pdEVtcHR5
KSB7CisgICAgaWYgKHRoaXMudHJhY2tJZHMpIHsKKyAgICAgIHRoaXMucHVzaCgne30nKTsgLy8g
aGFzaElkcworICAgIH0KKyAgICBpZiAodGhpcy5zdHJpbmdQYXJhbXMpIHsKKyAgICAgIHRoaXMu
cHVzaCgne30nKTsgLy8gaGFzaENvbnRleHRzCisgICAgICB0aGlzLnB1c2goJ3t9Jyk7IC8vIGhh
c2hUeXBlcworICAgIH0KKyAgICB0aGlzLnB1c2hTdGFja0xpdGVyYWwob21pdEVtcHR5ID8gJ3Vu
ZGVmaW5lZCcgOiAne30nKTsKKyAgfSwKKyAgcHVzaEhhc2g6IGZ1bmN0aW9uIHB1c2hIYXNoKCkg
eworICAgIGlmICh0aGlzLmhhc2gpIHsKKyAgICAgIHRoaXMuaGFzaGVzLnB1c2godGhpcy5oYXNo
KTsKKyAgICB9CisgICAgdGhpcy5oYXNoID0geyB2YWx1ZXM6IFtdLCB0eXBlczogW10sIGNvbnRl
eHRzOiBbXSwgaWRzOiBbXSB9OworICB9LAorICBwb3BIYXNoOiBmdW5jdGlvbiBwb3BIYXNoKCkg
eworICAgIHZhciBoYXNoID0gdGhpcy5oYXNoOworICAgIHRoaXMuaGFzaCA9IHRoaXMuaGFzaGVz
LnBvcCgpOworCisgICAgaWYgKHRoaXMudHJhY2tJZHMpIHsKKyAgICAgIHRoaXMucHVzaCh0aGlz
Lm9iamVjdExpdGVyYWwoaGFzaC5pZHMpKTsKKyAgICB9CisgICAgaWYgKHRoaXMuc3RyaW5nUGFy
YW1zKSB7CisgICAgICB0aGlzLnB1c2godGhpcy5vYmplY3RMaXRlcmFsKGhhc2guY29udGV4dHMp
KTsKKyAgICAgIHRoaXMucHVzaCh0aGlzLm9iamVjdExpdGVyYWwoaGFzaC50eXBlcykpOworICAg
IH0KKworICAgIHRoaXMucHVzaCh0aGlzLm9iamVjdExpdGVyYWwoaGFzaC52YWx1ZXMpKTsKKyAg
fSwKKworICAvLyBbcHVzaFN0cmluZ10KKyAgLy8KKyAgLy8gT24gc3RhY2ssIGJlZm9yZTogLi4u
CisgIC8vIE9uIHN0YWNrLCBhZnRlcjogcXVvdGVkU3RyaW5nKHN0cmluZyksIC4uLgorICAvLwor
ICAvLyBQdXNoIGEgcXVvdGVkIHZlcnNpb24gb2YgYHN0cmluZ2Agb250byB0aGUgc3RhY2sKKyAg
cHVzaFN0cmluZzogZnVuY3Rpb24gcHVzaFN0cmluZyhzdHJpbmcpIHsKKyAgICB0aGlzLnB1c2hT
dGFja0xpdGVyYWwodGhpcy5xdW90ZWRTdHJpbmcoc3RyaW5nKSk7CisgIH0sCisKKyAgLy8gW3B1
c2hMaXRlcmFsXQorICAvLworICAvLyBPbiBzdGFjaywgYmVmb3JlOiAuLi4KKyAgLy8gT24gc3Rh
Y2ssIGFmdGVyOiB2YWx1ZSwgLi4uCisgIC8vCisgIC8vIFB1c2hlcyBhIHZhbHVlIG9udG8gdGhl
IHN0YWNrLiBUaGlzIG9wZXJhdGlvbiBwcmV2ZW50cworICAvLyB0aGUgY29tcGlsZXIgZnJvbSBj
cmVhdGluZyBhIHRlbXBvcmFyeSB2YXJpYWJsZSB0byBob2xkCisgIC8vIGl0LgorICBwdXNoTGl0
ZXJhbDogZnVuY3Rpb24gcHVzaExpdGVyYWwodmFsdWUpIHsKKyAgICB0aGlzLnB1c2hTdGFja0xp
dGVyYWwodmFsdWUpOworICB9LAorCisgIC8vIFtwdXNoUHJvZ3JhbV0KKyAgLy8KKyAgLy8gT24g
c3RhY2ssIGJlZm9yZTogLi4uCisgIC8vIE9uIHN0YWNrLCBhZnRlcjogcHJvZ3JhbShndWlkKSwg
Li4uCisgIC8vCisgIC8vIFB1c2ggYSBwcm9ncmFtIGV4cHJlc3Npb24gb250byB0aGUgc3RhY2su
IFRoaXMgdGFrZXMKKyAgLy8gYSBjb21waWxlLXRpbWUgZ3VpZCBhbmQgY29udmVydHMgaXQgaW50
byBhIHJ1bnRpbWUtYWNjZXNzaWJsZQorICAvLyBleHByZXNzaW9uLgorICBwdXNoUHJvZ3JhbTog
ZnVuY3Rpb24gcHVzaFByb2dyYW0oZ3VpZCkgeworICAgIGlmIChndWlkICE9IG51bGwpIHsKKyAg
ICAgIHRoaXMucHVzaFN0YWNrTGl0ZXJhbCh0aGlzLnByb2dyYW1FeHByZXNzaW9uKGd1aWQpKTsK
KyAgICB9IGVsc2UgeworICAgICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFsKG51bGwpOworICAgIH0K
KyAgfSwKKworICAvLyBbcmVnaXN0ZXJEZWNvcmF0b3JdCisgIC8vCisgIC8vIE9uIHN0YWNrLCBi
ZWZvcmU6IGhhc2gsIHByb2dyYW0sIHBhcmFtcy4uLiwgLi4uCisgIC8vIE9uIHN0YWNrLCBhZnRl
cjogLi4uCisgIC8vCisgIC8vIFBvcHMgb2ZmIHRoZSBkZWNvcmF0b3IncyBwYXJhbWV0ZXJzLCBp
bnZva2VzIHRoZSBkZWNvcmF0b3IsCisgIC8vIGFuZCBpbnNlcnRzIHRoZSBkZWNvcmF0b3IgaW50
byB0aGUgZGVjb3JhdG9ycyBsaXN0LgorICByZWdpc3RlckRlY29yYXRvcjogZnVuY3Rpb24gcmVn
aXN0ZXJEZWNvcmF0b3IocGFyYW1TaXplLCBuYW1lKSB7CisgICAgdmFyIGZvdW5kRGVjb3JhdG9y
ID0gdGhpcy5uYW1lTG9va3VwKCdkZWNvcmF0b3JzJywgbmFtZSwgJ2RlY29yYXRvcicpLAorICAg
ICAgICBvcHRpb25zID0gdGhpcy5zZXR1cEhlbHBlckFyZ3MobmFtZSwgcGFyYW1TaXplKTsKKwor
ICAgIHRoaXMuZGVjb3JhdG9ycy5wdXNoKFsnZm4gPSAnLCB0aGlzLmRlY29yYXRvcnMuZnVuY3Rp
b25DYWxsKGZvdW5kRGVjb3JhdG9yLCAnJywgWydmbicsICdwcm9wcycsICdjb250YWluZXInLCBv
cHRpb25zXSksICcgfHwgZm47J10pOworICB9LAorCisgIC8vIFtpbnZva2VIZWxwZXJdCisgIC8v
CisgIC8vIE9uIHN0YWNrLCBiZWZvcmU6IGhhc2gsIGludmVyc2UsIHByb2dyYW0sIHBhcmFtcy4u
LiwgLi4uCisgIC8vIE9uIHN0YWNrLCBhZnRlcjogcmVzdWx0IG9mIGhlbHBlciBpbnZvY2F0aW9u
CisgIC8vCisgIC8vIFBvcHMgb2ZmIHRoZSBoZWxwZXIncyBwYXJhbWV0ZXJzLCBpbnZva2VzIHRo
ZSBoZWxwZXIsCisgIC8vIGFuZCBwdXNoZXMgdGhlIGhlbHBlcidzIHJldHVybiB2YWx1ZSBvbnRv
IHRoZSBzdGFjay4KKyAgLy8KKyAgLy8gSWYgdGhlIGhlbHBlciBpcyBub3QgZm91bmQsIGBoZWxw
ZXJNaXNzaW5nYCBpcyBjYWxsZWQuCisgIGludm9rZUhlbHBlcjogZnVuY3Rpb24gaW52b2tlSGVs
cGVyKHBhcmFtU2l6ZSwgbmFtZSwgaXNTaW1wbGUpIHsKKyAgICB2YXIgbm9uSGVscGVyID0gdGhp
cy5wb3BTdGFjaygpLAorICAgICAgICBoZWxwZXIgPSB0aGlzLnNldHVwSGVscGVyKHBhcmFtU2l6
ZSwgbmFtZSksCisgICAgICAgIHNpbXBsZSA9IGlzU2ltcGxlID8gW2hlbHBlci5uYW1lLCAnIHx8
ICddIDogJyc7CisKKyAgICB2YXIgbG9va3VwID0gWycoJ10uY29uY2F0KHNpbXBsZSwgbm9uSGVs
cGVyKTsKKyAgICBpZiAoIXRoaXMub3B0aW9ucy5zdHJpY3QpIHsKKyAgICAgIGxvb2t1cC5wdXNo
KCcgfHwgJywgdGhpcy5hbGlhc2FibGUoJ2hlbHBlcnMuaGVscGVyTWlzc2luZycpKTsKKyAgICB9
CisgICAgbG9va3VwLnB1c2goJyknKTsKKworICAgIHRoaXMucHVzaCh0aGlzLnNvdXJjZS5mdW5j
dGlvbkNhbGwobG9va3VwLCAnY2FsbCcsIGhlbHBlci5jYWxsUGFyYW1zKSk7CisgIH0sCisKKyAg
Ly8gW2ludm9rZUtub3duSGVscGVyXQorICAvLworICAvLyBPbiBzdGFjaywgYmVmb3JlOiBoYXNo
LCBpbnZlcnNlLCBwcm9ncmFtLCBwYXJhbXMuLi4sIC4uLgorICAvLyBPbiBzdGFjaywgYWZ0ZXI6
IHJlc3VsdCBvZiBoZWxwZXIgaW52b2NhdGlvbgorICAvLworICAvLyBUaGlzIG9wZXJhdGlvbiBp
cyB1c2VkIHdoZW4gdGhlIGhlbHBlciBpcyBrbm93biB0byBleGlzdCwKKyAgLy8gc28gYSBgaGVs
cGVyTWlzc2luZ2AgZmFsbGJhY2sgaXMgbm90IHJlcXVpcmVkLgorICBpbnZva2VLbm93bkhlbHBl
cjogZnVuY3Rpb24gaW52b2tlS25vd25IZWxwZXIocGFyYW1TaXplLCBuYW1lKSB7CisgICAgdmFy
IGhlbHBlciA9IHRoaXMuc2V0dXBIZWxwZXIocGFyYW1TaXplLCBuYW1lKTsKKyAgICB0aGlzLnB1
c2godGhpcy5zb3VyY2UuZnVuY3Rpb25DYWxsKGhlbHBlci5uYW1lLCAnY2FsbCcsIGhlbHBlci5j
YWxsUGFyYW1zKSk7CisgIH0sCisKKyAgLy8gW2ludm9rZUFtYmlndW91c10KKyAgLy8KKyAgLy8g
T24gc3RhY2ssIGJlZm9yZTogaGFzaCwgaW52ZXJzZSwgcHJvZ3JhbSwgcGFyYW1zLi4uLCAuLi4K
KyAgLy8gT24gc3RhY2ssIGFmdGVyOiByZXN1bHQgb2YgZGlzYW1iaWd1YXRpb24KKyAgLy8KKyAg
Ly8gVGhpcyBvcGVyYXRpb24gaXMgdXNlZCB3aGVuIGFuIGV4cHJlc3Npb24gbGlrZSBge3tmb299
fWAKKyAgLy8gaXMgcHJvdmlkZWQsIGJ1dCB3ZSBkb24ndCBrbm93IGF0IGNvbXBpbGUtdGltZSB3
aGV0aGVyIGl0CisgIC8vIGlzIGEgaGVscGVyIG9yIGEgcGF0aC4KKyAgLy8KKyAgLy8gVGhpcyBv
cGVyYXRpb24gZW1pdHMgbW9yZSBjb2RlIHRoYW4gdGhlIG90aGVyIG9wdGlvbnMsCisgIC8vIGFu
ZCBjYW4gYmUgYXZvaWRlZCBieSBwYXNzaW5nIHRoZSBga25vd25IZWxwZXJzYCBhbmQKKyAgLy8g
YGtub3duSGVscGVyc09ubHlgIGZsYWdzIGF0IGNvbXBpbGUtdGltZS4KKyAgaW52b2tlQW1iaWd1
b3VzOiBmdW5jdGlvbiBpbnZva2VBbWJpZ3VvdXMobmFtZSwgaGVscGVyQ2FsbCkgeworICAgIHRo
aXMudXNlUmVnaXN0ZXIoJ2hlbHBlcicpOworCisgICAgdmFyIG5vbkhlbHBlciA9IHRoaXMucG9w
U3RhY2soKTsKKworICAgIHRoaXMuZW1wdHlIYXNoKCk7CisgICAgdmFyIGhlbHBlciA9IHRoaXMu
c2V0dXBIZWxwZXIoMCwgbmFtZSwgaGVscGVyQ2FsbCk7CisKKyAgICB2YXIgaGVscGVyTmFtZSA9
IHRoaXMubGFzdEhlbHBlciA9IHRoaXMubmFtZUxvb2t1cCgnaGVscGVycycsIG5hbWUsICdoZWxw
ZXInKTsKKworICAgIHZhciBsb29rdXAgPSBbJygnLCAnKGhlbHBlciA9ICcsIGhlbHBlck5hbWUs
ICcgfHwgJywgbm9uSGVscGVyLCAnKSddOworICAgIGlmICghdGhpcy5vcHRpb25zLnN0cmljdCkg
eworICAgICAgbG9va3VwWzBdID0gJyhoZWxwZXIgPSAnOworICAgICAgbG9va3VwLnB1c2goJyAh
PSBudWxsID8gaGVscGVyIDogJywgdGhpcy5hbGlhc2FibGUoJ2hlbHBlcnMuaGVscGVyTWlzc2lu
ZycpKTsKKyAgICB9CisKKyAgICB0aGlzLnB1c2goWycoJywgbG9va3VwLCBoZWxwZXIucGFyYW1z
SW5pdCA/IFsnKSwoJywgaGVscGVyLnBhcmFtc0luaXRdIDogW10sICcpLCcsICcodHlwZW9mIGhl
bHBlciA9PT0gJywgdGhpcy5hbGlhc2FibGUoJyJmdW5jdGlvbiInKSwgJyA/ICcsIHRoaXMuc291
cmNlLmZ1bmN0aW9uQ2FsbCgnaGVscGVyJywgJ2NhbGwnLCBoZWxwZXIuY2FsbFBhcmFtcyksICcg
OiBoZWxwZXIpKSddKTsKKyAgfSwKKworICAvLyBbaW52b2tlUGFydGlhbF0KKyAgLy8KKyAgLy8g
T24gc3RhY2ssIGJlZm9yZTogY29udGV4dCwgLi4uCisgIC8vIE9uIHN0YWNrIGFmdGVyOiByZXN1
bHQgb2YgcGFydGlhbCBpbnZvY2F0aW9uCisgIC8vCisgIC8vIFRoaXMgb3BlcmF0aW9uIHBvcHMg
b2ZmIGEgY29udGV4dCwgaW52b2tlcyBhIHBhcnRpYWwgd2l0aCB0aGF0IGNvbnRleHQsCisgIC8v
IGFuZCBwdXNoZXMgdGhlIHJlc3VsdCBvZiB0aGUgaW52b2NhdGlvbiBiYWNrLgorICBpbnZva2VQ
YXJ0aWFsOiBmdW5jdGlvbiBpbnZva2VQYXJ0aWFsKGlzRHluYW1pYywgbmFtZSwgaW5kZW50KSB7
CisgICAgdmFyIHBhcmFtcyA9IFtdLAorICAgICAgICBvcHRpb25zID0gdGhpcy5zZXR1cFBhcmFt
cyhuYW1lLCAxLCBwYXJhbXMpOworCisgICAgaWYgKGlzRHluYW1pYykgeworICAgICAgbmFtZSA9
IHRoaXMucG9wU3RhY2soKTsKKyAgICAgIGRlbGV0ZSBvcHRpb25zLm5hbWU7CisgICAgfQorCisg
ICAgaWYgKGluZGVudCkgeworICAgICAgb3B0aW9ucy5pbmRlbnQgPSBKU09OLnN0cmluZ2lmeShp
bmRlbnQpOworICAgIH0KKyAgICBvcHRpb25zLmhlbHBlcnMgPSAnaGVscGVycyc7CisgICAgb3B0
aW9ucy5wYXJ0aWFscyA9ICdwYXJ0aWFscyc7CisgICAgb3B0aW9ucy5kZWNvcmF0b3JzID0gJ2Nv
bnRhaW5lci5kZWNvcmF0b3JzJzsKKworICAgIGlmICghaXNEeW5hbWljKSB7CisgICAgICBwYXJh
bXMudW5zaGlmdCh0aGlzLm5hbWVMb29rdXAoJ3BhcnRpYWxzJywgbmFtZSwgJ3BhcnRpYWwnKSk7
CisgICAgfSBlbHNlIHsKKyAgICAgIHBhcmFtcy51bnNoaWZ0KG5hbWUpOworICAgIH0KKworICAg
IGlmICh0aGlzLm9wdGlvbnMuY29tcGF0KSB7CisgICAgICBvcHRpb25zLmRlcHRocyA9ICdkZXB0
aHMnOworICAgIH0KKyAgICBvcHRpb25zID0gdGhpcy5vYmplY3RMaXRlcmFsKG9wdGlvbnMpOwor
ICAgIHBhcmFtcy5wdXNoKG9wdGlvbnMpOworCisgICAgdGhpcy5wdXNoKHRoaXMuc291cmNlLmZ1
bmN0aW9uQ2FsbCgnY29udGFpbmVyLmludm9rZVBhcnRpYWwnLCAnJywgcGFyYW1zKSk7CisgIH0s
CisKKyAgLy8gW2Fzc2lnblRvSGFzaF0KKyAgLy8KKyAgLy8gT24gc3RhY2ssIGJlZm9yZTogdmFs
dWUsIC4uLiwgaGFzaCwgLi4uCisgIC8vIE9uIHN0YWNrLCBhZnRlcjogLi4uLCBoYXNoLCAuLi4K
KyAgLy8KKyAgLy8gUG9wcyBhIHZhbHVlIG9mZiB0aGUgc3RhY2sgYW5kIGFzc2lnbnMgaXQgdG8g
dGhlIGN1cnJlbnQgaGFzaAorICBhc3NpZ25Ub0hhc2g6IGZ1bmN0aW9uIGFzc2lnblRvSGFzaChr
ZXkpIHsKKyAgICB2YXIgdmFsdWUgPSB0aGlzLnBvcFN0YWNrKCksCisgICAgICAgIGNvbnRleHQg
PSB1bmRlZmluZWQsCisgICAgICAgIHR5cGUgPSB1bmRlZmluZWQsCisgICAgICAgIGlkID0gdW5k
ZWZpbmVkOworCisgICAgaWYgKHRoaXMudHJhY2tJZHMpIHsKKyAgICAgIGlkID0gdGhpcy5wb3BT
dGFjaygpOworICAgIH0KKyAgICBpZiAodGhpcy5zdHJpbmdQYXJhbXMpIHsKKyAgICAgIHR5cGUg
PSB0aGlzLnBvcFN0YWNrKCk7CisgICAgICBjb250ZXh0ID0gdGhpcy5wb3BTdGFjaygpOworICAg
IH0KKworICAgIHZhciBoYXNoID0gdGhpcy5oYXNoOworICAgIGlmIChjb250ZXh0KSB7CisgICAg
ICBoYXNoLmNvbnRleHRzW2tleV0gPSBjb250ZXh0OworICAgIH0KKyAgICBpZiAodHlwZSkgewor
ICAgICAgaGFzaC50eXBlc1trZXldID0gdHlwZTsKKyAgICB9CisgICAgaWYgKGlkKSB7CisgICAg
ICBoYXNoLmlkc1trZXldID0gaWQ7CisgICAgfQorICAgIGhhc2gudmFsdWVzW2tleV0gPSB2YWx1
ZTsKKyAgfSwKKworICBwdXNoSWQ6IGZ1bmN0aW9uIHB1c2hJZCh0eXBlLCBuYW1lLCBjaGlsZCkg
eworICAgIGlmICh0eXBlID09PSAnQmxvY2tQYXJhbScpIHsKKyAgICAgIHRoaXMucHVzaFN0YWNr
TGl0ZXJhbCgnYmxvY2tQYXJhbXNbJyArIG5hbWVbMF0gKyAnXS5wYXRoWycgKyBuYW1lWzFdICsg
J10nICsgKGNoaWxkID8gJyArICcgKyBKU09OLnN0cmluZ2lmeSgnLicgKyBjaGlsZCkgOiAnJykp
OworICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ1BhdGhFeHByZXNzaW9uJykgeworICAgICAgdGhp
cy5wdXNoU3RyaW5nKG5hbWUpOworICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ1N1YkV4cHJlc3Np
b24nKSB7CisgICAgICB0aGlzLnB1c2hTdGFja0xpdGVyYWwoJ3RydWUnKTsKKyAgICB9IGVsc2Ug
eworICAgICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFsKCdudWxsJyk7CisgICAgfQorICB9LAorCisg
IC8vIEhFTFBFUlMKKworICBjb21waWxlcjogSmF2YVNjcmlwdENvbXBpbGVyLAorCisgIGNvbXBp
bGVDaGlsZHJlbjogZnVuY3Rpb24gY29tcGlsZUNoaWxkcmVuKGVudmlyb25tZW50LCBvcHRpb25z
KSB7CisgICAgdmFyIGNoaWxkcmVuID0gZW52aXJvbm1lbnQuY2hpbGRyZW4sCisgICAgICAgIGNo
aWxkID0gdW5kZWZpbmVkLAorICAgICAgICBjb21waWxlciA9IHVuZGVmaW5lZDsKKworICAgIGZv
ciAodmFyIGkgPSAwLCBsID0gY2hpbGRyZW4ubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CisgICAgICBj
aGlsZCA9IGNoaWxkcmVuW2ldOworICAgICAgY29tcGlsZXIgPSBuZXcgdGhpcy5jb21waWxlcigp
OyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5ldy1jYXAKKworICAgICAgdmFyIGV4aXN0aW5nID0g
dGhpcy5tYXRjaEV4aXN0aW5nUHJvZ3JhbShjaGlsZCk7CisKKyAgICAgIGlmIChleGlzdGluZyA9
PSBudWxsKSB7CisgICAgICAgIHRoaXMuY29udGV4dC5wcm9ncmFtcy5wdXNoKCcnKTsgLy8gUGxh
Y2Vob2xkZXIgdG8gcHJldmVudCBuYW1lIGNvbmZsaWN0cyBmb3IgbmVzdGVkIGNoaWxkcmVuCisg
ICAgICAgIHZhciBpbmRleCA9IHRoaXMuY29udGV4dC5wcm9ncmFtcy5sZW5ndGg7CisgICAgICAg
IGNoaWxkLmluZGV4ID0gaW5kZXg7CisgICAgICAgIGNoaWxkLm5hbWUgPSAncHJvZ3JhbScgKyBp
bmRleDsKKyAgICAgICAgdGhpcy5jb250ZXh0LnByb2dyYW1zW2luZGV4XSA9IGNvbXBpbGVyLmNv
bXBpbGUoY2hpbGQsIG9wdGlvbnMsIHRoaXMuY29udGV4dCwgIXRoaXMucHJlY29tcGlsZSk7Cisg
ICAgICAgIHRoaXMuY29udGV4dC5kZWNvcmF0b3JzW2luZGV4XSA9IGNvbXBpbGVyLmRlY29yYXRv
cnM7CisgICAgICAgIHRoaXMuY29udGV4dC5lbnZpcm9ubWVudHNbaW5kZXhdID0gY2hpbGQ7CisK
KyAgICAgICAgdGhpcy51c2VEZXB0aHMgPSB0aGlzLnVzZURlcHRocyB8fCBjb21waWxlci51c2VE
ZXB0aHM7CisgICAgICAgIHRoaXMudXNlQmxvY2tQYXJhbXMgPSB0aGlzLnVzZUJsb2NrUGFyYW1z
IHx8IGNvbXBpbGVyLnVzZUJsb2NrUGFyYW1zOworICAgICAgICBjaGlsZC51c2VEZXB0aHMgPSB0
aGlzLnVzZURlcHRoczsKKyAgICAgICAgY2hpbGQudXNlQmxvY2tQYXJhbXMgPSB0aGlzLnVzZUJs
b2NrUGFyYW1zOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgY2hpbGQuaW5kZXggPSBleGlzdGlu
Zy5pbmRleDsKKyAgICAgICAgY2hpbGQubmFtZSA9ICdwcm9ncmFtJyArIGV4aXN0aW5nLmluZGV4
OworCisgICAgICAgIHRoaXMudXNlRGVwdGhzID0gdGhpcy51c2VEZXB0aHMgfHwgZXhpc3Rpbmcu
dXNlRGVwdGhzOworICAgICAgICB0aGlzLnVzZUJsb2NrUGFyYW1zID0gdGhpcy51c2VCbG9ja1Bh
cmFtcyB8fCBleGlzdGluZy51c2VCbG9ja1BhcmFtczsKKyAgICAgIH0KKyAgICB9CisgIH0sCisg
IG1hdGNoRXhpc3RpbmdQcm9ncmFtOiBmdW5jdGlvbiBtYXRjaEV4aXN0aW5nUHJvZ3JhbShjaGls
ZCkgeworICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSB0aGlzLmNvbnRleHQuZW52aXJvbm1lbnRz
Lmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICB2YXIgZW52aXJvbm1lbnQgPSB0aGlzLmNv
bnRleHQuZW52aXJvbm1lbnRzW2ldOworICAgICAgaWYgKGVudmlyb25tZW50ICYmIGVudmlyb25t
ZW50LmVxdWFscyhjaGlsZCkpIHsKKyAgICAgICAgcmV0dXJuIGVudmlyb25tZW50OworICAgICAg
fQorICAgIH0KKyAgfSwKKworICBwcm9ncmFtRXhwcmVzc2lvbjogZnVuY3Rpb24gcHJvZ3JhbUV4
cHJlc3Npb24oZ3VpZCkgeworICAgIHZhciBjaGlsZCA9IHRoaXMuZW52aXJvbm1lbnQuY2hpbGRy
ZW5bZ3VpZF0sCisgICAgICAgIHByb2dyYW1QYXJhbXMgPSBbY2hpbGQuaW5kZXgsICdkYXRhJywg
Y2hpbGQuYmxvY2tQYXJhbXNdOworCisgICAgaWYgKHRoaXMudXNlQmxvY2tQYXJhbXMgfHwgdGhp
cy51c2VEZXB0aHMpIHsKKyAgICAgIHByb2dyYW1QYXJhbXMucHVzaCgnYmxvY2tQYXJhbXMnKTsK
KyAgICB9CisgICAgaWYgKHRoaXMudXNlRGVwdGhzKSB7CisgICAgICBwcm9ncmFtUGFyYW1zLnB1
c2goJ2RlcHRocycpOworICAgIH0KKworICAgIHJldHVybiAnY29udGFpbmVyLnByb2dyYW0oJyAr
IHByb2dyYW1QYXJhbXMuam9pbignLCAnKSArICcpJzsKKyAgfSwKKworICB1c2VSZWdpc3Rlcjog
ZnVuY3Rpb24gdXNlUmVnaXN0ZXIobmFtZSkgeworICAgIGlmICghdGhpcy5yZWdpc3RlcnNbbmFt
ZV0pIHsKKyAgICAgIHRoaXMucmVnaXN0ZXJzW25hbWVdID0gdHJ1ZTsKKyAgICAgIHRoaXMucmVn
aXN0ZXJzLmxpc3QucHVzaChuYW1lKTsKKyAgICB9CisgIH0sCisKKyAgcHVzaDogZnVuY3Rpb24g
cHVzaChleHByKSB7CisgICAgaWYgKCEoZXhwciBpbnN0YW5jZW9mIExpdGVyYWwpKSB7CisgICAg
ICBleHByID0gdGhpcy5zb3VyY2Uud3JhcChleHByKTsKKyAgICB9CisKKyAgICB0aGlzLmlubGlu
ZVN0YWNrLnB1c2goZXhwcik7CisgICAgcmV0dXJuIGV4cHI7CisgIH0sCisKKyAgcHVzaFN0YWNr
TGl0ZXJhbDogZnVuY3Rpb24gcHVzaFN0YWNrTGl0ZXJhbChpdGVtKSB7CisgICAgdGhpcy5wdXNo
KG5ldyBMaXRlcmFsKGl0ZW0pKTsKKyAgfSwKKworICBwdXNoU291cmNlOiBmdW5jdGlvbiBwdXNo
U291cmNlKHNvdXJjZSkgeworICAgIGlmICh0aGlzLnBlbmRpbmdDb250ZW50KSB7CisgICAgICB0
aGlzLnNvdXJjZS5wdXNoKHRoaXMuYXBwZW5kVG9CdWZmZXIodGhpcy5zb3VyY2UucXVvdGVkU3Ry
aW5nKHRoaXMucGVuZGluZ0NvbnRlbnQpLCB0aGlzLnBlbmRpbmdMb2NhdGlvbikpOworICAgICAg
dGhpcy5wZW5kaW5nQ29udGVudCA9IHVuZGVmaW5lZDsKKyAgICB9CisKKyAgICBpZiAoc291cmNl
KSB7CisgICAgICB0aGlzLnNvdXJjZS5wdXNoKHNvdXJjZSk7CisgICAgfQorICB9LAorCisgIHJl
cGxhY2VTdGFjazogZnVuY3Rpb24gcmVwbGFjZVN0YWNrKGNhbGxiYWNrKSB7CisgICAgdmFyIHBy
ZWZpeCA9IFsnKCddLAorICAgICAgICBzdGFjayA9IHVuZGVmaW5lZCwKKyAgICAgICAgY3JlYXRl
ZFN0YWNrID0gdW5kZWZpbmVkLAorICAgICAgICB1c2VkTGl0ZXJhbCA9IHVuZGVmaW5lZDsKKwor
ICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovCisgICAgaWYgKCF0aGlzLmlzSW5saW5lKCkp
IHsKKyAgICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCdyZXBsYWNlU3RhY2sg
b24gbm9uLWlubGluZScpOworICAgIH0KKworICAgIC8vIFdlIHdhbnQgdG8gbWVyZ2UgdGhlIGlu
bGluZSBzdGF0ZW1lbnQgaW50byB0aGUgcmVwbGFjZW1lbnQgc3RhdGVtZW50IHZpYSAnLCcKKyAg
ICB2YXIgdG9wID0gdGhpcy5wb3BTdGFjayh0cnVlKTsKKworICAgIGlmICh0b3AgaW5zdGFuY2Vv
ZiBMaXRlcmFsKSB7CisgICAgICAvLyBMaXRlcmFscyBkbyBub3QgbmVlZCB0byBiZSBpbmxpbmVk
CisgICAgICBzdGFjayA9IFt0b3AudmFsdWVdOworICAgICAgcHJlZml4ID0gWycoJywgc3RhY2td
OworICAgICAgdXNlZExpdGVyYWwgPSB0cnVlOworICAgIH0gZWxzZSB7CisgICAgICAvLyBHZXQg
b3IgY3JlYXRlIHRoZSBjdXJyZW50IHN0YWNrIG5hbWUgZm9yIHVzZSBieSB0aGUgaW5saW5lCisg
ICAgICBjcmVhdGVkU3RhY2sgPSB0cnVlOworICAgICAgdmFyIF9uYW1lID0gdGhpcy5pbmNyU3Rh
Y2soKTsKKworICAgICAgcHJlZml4ID0gWycoKCcsIHRoaXMucHVzaChfbmFtZSksICcgPSAnLCB0
b3AsICcpJ107CisgICAgICBzdGFjayA9IHRoaXMudG9wU3RhY2soKTsKKyAgICB9CisKKyAgICB2
YXIgaXRlbSA9IGNhbGxiYWNrLmNhbGwodGhpcywgc3RhY2spOworCisgICAgaWYgKCF1c2VkTGl0
ZXJhbCkgeworICAgICAgdGhpcy5wb3BTdGFjaygpOworICAgIH0KKyAgICBpZiAoY3JlYXRlZFN0
YWNrKSB7CisgICAgICB0aGlzLnN0YWNrU2xvdC0tOworICAgIH0KKyAgICB0aGlzLnB1c2gocHJl
Zml4LmNvbmNhdChpdGVtLCAnKScpKTsKKyAgfSwKKworICBpbmNyU3RhY2s6IGZ1bmN0aW9uIGlu
Y3JTdGFjaygpIHsKKyAgICB0aGlzLnN0YWNrU2xvdCsrOworICAgIGlmICh0aGlzLnN0YWNrU2xv
dCA+IHRoaXMuc3RhY2tWYXJzLmxlbmd0aCkgeworICAgICAgdGhpcy5zdGFja1ZhcnMucHVzaCgn
c3RhY2snICsgdGhpcy5zdGFja1Nsb3QpOworICAgIH0KKyAgICByZXR1cm4gdGhpcy50b3BTdGFj
a05hbWUoKTsKKyAgfSwKKyAgdG9wU3RhY2tOYW1lOiBmdW5jdGlvbiB0b3BTdGFja05hbWUoKSB7
CisgICAgcmV0dXJuICdzdGFjaycgKyB0aGlzLnN0YWNrU2xvdDsKKyAgfSwKKyAgZmx1c2hJbmxp
bmU6IGZ1bmN0aW9uIGZsdXNoSW5saW5lKCkgeworICAgIHZhciBpbmxpbmVTdGFjayA9IHRoaXMu
aW5saW5lU3RhY2s7CisgICAgdGhpcy5pbmxpbmVTdGFjayA9IFtdOworICAgIGZvciAodmFyIGkg
PSAwLCBsZW4gPSBpbmxpbmVTdGFjay5sZW5ndGg7IGkgPCBsZW47IGkrKykgeworICAgICAgdmFy
IGVudHJ5ID0gaW5saW5lU3RhY2tbaV07CisgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi8K
KyAgICAgIGlmIChlbnRyeSBpbnN0YW5jZW9mIExpdGVyYWwpIHsKKyAgICAgICAgdGhpcy5jb21w
aWxlU3RhY2sucHVzaChlbnRyeSk7CisgICAgICB9IGVsc2UgeworICAgICAgICB2YXIgc3RhY2sg
PSB0aGlzLmluY3JTdGFjaygpOworICAgICAgICB0aGlzLnB1c2hTb3VyY2UoW3N0YWNrLCAnID0g
JywgZW50cnksICc7J10pOworICAgICAgICB0aGlzLmNvbXBpbGVTdGFjay5wdXNoKHN0YWNrKTsK
KyAgICAgIH0KKyAgICB9CisgIH0sCisgIGlzSW5saW5lOiBmdW5jdGlvbiBpc0lubGluZSgpIHsK
KyAgICByZXR1cm4gdGhpcy5pbmxpbmVTdGFjay5sZW5ndGg7CisgIH0sCisKKyAgcG9wU3RhY2s6
IGZ1bmN0aW9uIHBvcFN0YWNrKHdyYXBwZWQpIHsKKyAgICB2YXIgaW5saW5lID0gdGhpcy5pc0lu
bGluZSgpLAorICAgICAgICBpdGVtID0gKGlubGluZSA/IHRoaXMuaW5saW5lU3RhY2sgOiB0aGlz
LmNvbXBpbGVTdGFjaykucG9wKCk7CisKKyAgICBpZiAoIXdyYXBwZWQgJiYgaXRlbSBpbnN0YW5j
ZW9mIExpdGVyYWwpIHsKKyAgICAgIHJldHVybiBpdGVtLnZhbHVlOworICAgIH0gZWxzZSB7Cisg
ICAgICBpZiAoIWlubGluZSkgeworICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLwor
ICAgICAgICBpZiAoIXRoaXMuc3RhY2tTbG90KSB7CisgICAgICAgICAgdGhyb3cgbmV3IF9leGNl
cHRpb24yWydkZWZhdWx0J10oJ0ludmFsaWQgc3RhY2sgcG9wJyk7CisgICAgICAgIH0KKyAgICAg
ICAgdGhpcy5zdGFja1Nsb3QtLTsKKyAgICAgIH0KKyAgICAgIHJldHVybiBpdGVtOworICAgIH0K
KyAgfSwKKworICB0b3BTdGFjazogZnVuY3Rpb24gdG9wU3RhY2soKSB7CisgICAgdmFyIHN0YWNr
ID0gdGhpcy5pc0lubGluZSgpID8gdGhpcy5pbmxpbmVTdGFjayA6IHRoaXMuY29tcGlsZVN0YWNr
LAorICAgICAgICBpdGVtID0gc3RhY2tbc3RhY2subGVuZ3RoIC0gMV07CisKKyAgICAvKiBpc3Rh
bmJ1bCBpZ25vcmUgaWYgKi8KKyAgICBpZiAoaXRlbSBpbnN0YW5jZW9mIExpdGVyYWwpIHsKKyAg
ICAgIHJldHVybiBpdGVtLnZhbHVlOworICAgIH0gZWxzZSB7CisgICAgICByZXR1cm4gaXRlbTsK
KyAgICB9CisgIH0sCisKKyAgY29udGV4dE5hbWU6IGZ1bmN0aW9uIGNvbnRleHROYW1lKGNvbnRl
eHQpIHsKKyAgICBpZiAodGhpcy51c2VEZXB0aHMgJiYgY29udGV4dCkgeworICAgICAgcmV0dXJu
ICdkZXB0aHNbJyArIGNvbnRleHQgKyAnXSc7CisgICAgfSBlbHNlIHsKKyAgICAgIHJldHVybiAn
ZGVwdGgnICsgY29udGV4dDsKKyAgICB9CisgIH0sCisKKyAgcXVvdGVkU3RyaW5nOiBmdW5jdGlv
biBxdW90ZWRTdHJpbmcoc3RyKSB7CisgICAgcmV0dXJuIHRoaXMuc291cmNlLnF1b3RlZFN0cmlu
ZyhzdHIpOworICB9LAorCisgIG9iamVjdExpdGVyYWw6IGZ1bmN0aW9uIG9iamVjdExpdGVyYWwo
b2JqKSB7CisgICAgcmV0dXJuIHRoaXMuc291cmNlLm9iamVjdExpdGVyYWwob2JqKTsKKyAgfSwK
KworICBhbGlhc2FibGU6IGZ1bmN0aW9uIGFsaWFzYWJsZShuYW1lKSB7CisgICAgdmFyIHJldCA9
IHRoaXMuYWxpYXNlc1tuYW1lXTsKKyAgICBpZiAocmV0KSB7CisgICAgICByZXQucmVmZXJlbmNl
Q291bnQrKzsKKyAgICAgIHJldHVybiByZXQ7CisgICAgfQorCisgICAgcmV0ID0gdGhpcy5hbGlh
c2VzW25hbWVdID0gdGhpcy5zb3VyY2Uud3JhcChuYW1lKTsKKyAgICByZXQuYWxpYXNhYmxlID0g
dHJ1ZTsKKyAgICByZXQucmVmZXJlbmNlQ291bnQgPSAxOworCisgICAgcmV0dXJuIHJldDsKKyAg
fSwKKworICBzZXR1cEhlbHBlcjogZnVuY3Rpb24gc2V0dXBIZWxwZXIocGFyYW1TaXplLCBuYW1l
LCBibG9ja0hlbHBlcikgeworICAgIHZhciBwYXJhbXMgPSBbXSwKKyAgICAgICAgcGFyYW1zSW5p
dCA9IHRoaXMuc2V0dXBIZWxwZXJBcmdzKG5hbWUsIHBhcmFtU2l6ZSwgcGFyYW1zLCBibG9ja0hl
bHBlcik7CisgICAgdmFyIGZvdW5kSGVscGVyID0gdGhpcy5uYW1lTG9va3VwKCdoZWxwZXJzJywg
bmFtZSwgJ2hlbHBlcicpLAorICAgICAgICBjYWxsQ29udGV4dCA9IHRoaXMuYWxpYXNhYmxlKHRo
aXMuY29udGV4dE5hbWUoMCkgKyAnICE9IG51bGwgPyAnICsgdGhpcy5jb250ZXh0TmFtZSgwKSAr
ICcgOiB7fScpOworCisgICAgcmV0dXJuIHsKKyAgICAgIHBhcmFtczogcGFyYW1zLAorICAgICAg
cGFyYW1zSW5pdDogcGFyYW1zSW5pdCwKKyAgICAgIG5hbWU6IGZvdW5kSGVscGVyLAorICAgICAg
Y2FsbFBhcmFtczogW2NhbGxDb250ZXh0XS5jb25jYXQocGFyYW1zKQorICAgIH07CisgIH0sCisK
KyAgc2V0dXBQYXJhbXM6IGZ1bmN0aW9uIHNldHVwUGFyYW1zKGhlbHBlciwgcGFyYW1TaXplLCBw
YXJhbXMpIHsKKyAgICB2YXIgb3B0aW9ucyA9IHt9LAorICAgICAgICBjb250ZXh0cyA9IFtdLAor
ICAgICAgICB0eXBlcyA9IFtdLAorICAgICAgICBpZHMgPSBbXSwKKyAgICAgICAgb2JqZWN0QXJn
cyA9ICFwYXJhbXMsCisgICAgICAgIHBhcmFtID0gdW5kZWZpbmVkOworCisgICAgaWYgKG9iamVj
dEFyZ3MpIHsKKyAgICAgIHBhcmFtcyA9IFtdOworICAgIH0KKworICAgIG9wdGlvbnMubmFtZSA9
IHRoaXMucXVvdGVkU3RyaW5nKGhlbHBlcik7CisgICAgb3B0aW9ucy5oYXNoID0gdGhpcy5wb3BT
dGFjaygpOworCisgICAgaWYgKHRoaXMudHJhY2tJZHMpIHsKKyAgICAgIG9wdGlvbnMuaGFzaElk
cyA9IHRoaXMucG9wU3RhY2soKTsKKyAgICB9CisgICAgaWYgKHRoaXMuc3RyaW5nUGFyYW1zKSB7
CisgICAgICBvcHRpb25zLmhhc2hUeXBlcyA9IHRoaXMucG9wU3RhY2soKTsKKyAgICAgIG9wdGlv
bnMuaGFzaENvbnRleHRzID0gdGhpcy5wb3BTdGFjaygpOworICAgIH0KKworICAgIHZhciBpbnZl
cnNlID0gdGhpcy5wb3BTdGFjaygpLAorICAgICAgICBwcm9ncmFtID0gdGhpcy5wb3BTdGFjaygp
OworCisgICAgLy8gQXZvaWQgc2V0dGluZyBmbiBhbmQgaW52ZXJzZSBpZiBuZWl0aGVyIGFyZSBz
ZXQuIFRoaXMgYWxsb3dzCisgICAgLy8gaGVscGVycyB0byBkbyBhIGNoZWNrIGZvciBgaWYgKG9w
dGlvbnMuZm4pYAorICAgIGlmIChwcm9ncmFtIHx8IGludmVyc2UpIHsKKyAgICAgIG9wdGlvbnMu
Zm4gPSBwcm9ncmFtIHx8ICdjb250YWluZXIubm9vcCc7CisgICAgICBvcHRpb25zLmludmVyc2Ug
PSBpbnZlcnNlIHx8ICdjb250YWluZXIubm9vcCc7CisgICAgfQorCisgICAgLy8gVGhlIHBhcmFt
ZXRlcnMgZ28gb24gdG8gdGhlIHN0YWNrIGluIG9yZGVyIChtYWtpbmcgc3VyZSB0aGF0IHRoZXkg
YXJlIGV2YWx1YXRlZCBpbiBvcmRlcikKKyAgICAvLyBzbyB3ZSBuZWVkIHRvIHBvcCB0aGVtIG9m
ZiB0aGUgc3RhY2sgaW4gcmV2ZXJzZSBvcmRlcgorICAgIHZhciBpID0gcGFyYW1TaXplOworICAg
IHdoaWxlIChpLS0pIHsKKyAgICAgIHBhcmFtID0gdGhpcy5wb3BTdGFjaygpOworICAgICAgcGFy
YW1zW2ldID0gcGFyYW07CisKKyAgICAgIGlmICh0aGlzLnRyYWNrSWRzKSB7CisgICAgICAgIGlk
c1tpXSA9IHRoaXMucG9wU3RhY2soKTsKKyAgICAgIH0KKyAgICAgIGlmICh0aGlzLnN0cmluZ1Bh
cmFtcykgeworICAgICAgICB0eXBlc1tpXSA9IHRoaXMucG9wU3RhY2soKTsKKyAgICAgICAgY29u
dGV4dHNbaV0gPSB0aGlzLnBvcFN0YWNrKCk7CisgICAgICB9CisgICAgfQorCisgICAgaWYgKG9i
amVjdEFyZ3MpIHsKKyAgICAgIG9wdGlvbnMuYXJncyA9IHRoaXMuc291cmNlLmdlbmVyYXRlQXJy
YXkocGFyYW1zKTsKKyAgICB9CisKKyAgICBpZiAodGhpcy50cmFja0lkcykgeworICAgICAgb3B0
aW9ucy5pZHMgPSB0aGlzLnNvdXJjZS5nZW5lcmF0ZUFycmF5KGlkcyk7CisgICAgfQorICAgIGlm
ICh0aGlzLnN0cmluZ1BhcmFtcykgeworICAgICAgb3B0aW9ucy50eXBlcyA9IHRoaXMuc291cmNl
LmdlbmVyYXRlQXJyYXkodHlwZXMpOworICAgICAgb3B0aW9ucy5jb250ZXh0cyA9IHRoaXMuc291
cmNlLmdlbmVyYXRlQXJyYXkoY29udGV4dHMpOworICAgIH0KKworICAgIGlmICh0aGlzLm9wdGlv
bnMuZGF0YSkgeworICAgICAgb3B0aW9ucy5kYXRhID0gJ2RhdGEnOworICAgIH0KKyAgICBpZiAo
dGhpcy51c2VCbG9ja1BhcmFtcykgeworICAgICAgb3B0aW9ucy5ibG9ja1BhcmFtcyA9ICdibG9j
a1BhcmFtcyc7CisgICAgfQorICAgIHJldHVybiBvcHRpb25zOworICB9LAorCisgIHNldHVwSGVs
cGVyQXJnczogZnVuY3Rpb24gc2V0dXBIZWxwZXJBcmdzKGhlbHBlciwgcGFyYW1TaXplLCBwYXJh
bXMsIHVzZVJlZ2lzdGVyKSB7CisgICAgdmFyIG9wdGlvbnMgPSB0aGlzLnNldHVwUGFyYW1zKGhl
bHBlciwgcGFyYW1TaXplLCBwYXJhbXMpOworICAgIG9wdGlvbnMgPSB0aGlzLm9iamVjdExpdGVy
YWwob3B0aW9ucyk7CisgICAgaWYgKHVzZVJlZ2lzdGVyKSB7CisgICAgICB0aGlzLnVzZVJlZ2lz
dGVyKCdvcHRpb25zJyk7CisgICAgICBwYXJhbXMucHVzaCgnb3B0aW9ucycpOworICAgICAgcmV0
dXJuIFsnb3B0aW9ucz0nLCBvcHRpb25zXTsKKyAgICB9IGVsc2UgaWYgKHBhcmFtcykgeworICAg
ICAgcGFyYW1zLnB1c2gob3B0aW9ucyk7CisgICAgICByZXR1cm4gJyc7CisgICAgfSBlbHNlIHsK
KyAgICAgIHJldHVybiBvcHRpb25zOworICAgIH0KKyAgfQorfTsKKworKGZ1bmN0aW9uICgpIHsK
KyAgdmFyIHJlc2VydmVkV29yZHMgPSAoJ2JyZWFrIGVsc2UgbmV3IHZhcicgKyAnIGNhc2UgZmlu
YWxseSByZXR1cm4gdm9pZCcgKyAnIGNhdGNoIGZvciBzd2l0Y2ggd2hpbGUnICsgJyBjb250aW51
ZSBmdW5jdGlvbiB0aGlzIHdpdGgnICsgJyBkZWZhdWx0IGlmIHRocm93JyArICcgZGVsZXRlIGlu
IHRyeScgKyAnIGRvIGluc3RhbmNlb2YgdHlwZW9mJyArICcgYWJzdHJhY3QgZW51bSBpbnQgc2hv
cnQnICsgJyBib29sZWFuIGV4cG9ydCBpbnRlcmZhY2Ugc3RhdGljJyArICcgYnl0ZSBleHRlbmRz
IGxvbmcgc3VwZXInICsgJyBjaGFyIGZpbmFsIG5hdGl2ZSBzeW5jaHJvbml6ZWQnICsgJyBjbGFz
cyBmbG9hdCBwYWNrYWdlIHRocm93cycgKyAnIGNvbnN0IGdvdG8gcHJpdmF0ZSB0cmFuc2llbnQn
ICsgJyBkZWJ1Z2dlciBpbXBsZW1lbnRzIHByb3RlY3RlZCB2b2xhdGlsZScgKyAnIGRvdWJsZSBp
bXBvcnQgcHVibGljIGxldCB5aWVsZCBhd2FpdCcgKyAnIG51bGwgdHJ1ZSBmYWxzZScpLnNwbGl0
KCcgJyk7CisKKyAgdmFyIGNvbXBpbGVyV29yZHMgPSBKYXZhU2NyaXB0Q29tcGlsZXIuUkVTRVJW
RURfV09SRFMgPSB7fTsKKworICBmb3IgKHZhciBpID0gMCwgbCA9IHJlc2VydmVkV29yZHMubGVu
Z3RoOyBpIDwgbDsgaSsrKSB7CisgICAgY29tcGlsZXJXb3Jkc1tyZXNlcnZlZFdvcmRzW2ldXSA9
IHRydWU7CisgIH0KK30pKCk7CisKK0phdmFTY3JpcHRDb21waWxlci5pc1ZhbGlkSmF2YVNjcmlw
dFZhcmlhYmxlTmFtZSA9IGZ1bmN0aW9uIChuYW1lKSB7CisgIHJldHVybiAhSmF2YVNjcmlwdENv
bXBpbGVyLlJFU0VSVkVEX1dPUkRTW25hbWVdICYmIC9eW2EtekEtWl8kXVswLTlhLXpBLVpfJF0q
JC8udGVzdChuYW1lKTsKK307CisKK2Z1bmN0aW9uIHN0cmljdExvb2t1cChyZXF1aXJlVGVybWlu
YWwsIGNvbXBpbGVyLCBwYXJ0cywgdHlwZSkgeworICB2YXIgc3RhY2sgPSBjb21waWxlci5wb3BT
dGFjaygpLAorICAgICAgaSA9IDAsCisgICAgICBsZW4gPSBwYXJ0cy5sZW5ndGg7CisgIGlmIChy
ZXF1aXJlVGVybWluYWwpIHsKKyAgICBsZW4tLTsKKyAgfQorCisgIGZvciAoOyBpIDwgbGVuOyBp
KyspIHsKKyAgICBzdGFjayA9IGNvbXBpbGVyLm5hbWVMb29rdXAoc3RhY2ssIHBhcnRzW2ldLCB0
eXBlKTsKKyAgfQorCisgIGlmIChyZXF1aXJlVGVybWluYWwpIHsKKyAgICByZXR1cm4gW2NvbXBp
bGVyLmFsaWFzYWJsZSgnY29udGFpbmVyLnN0cmljdCcpLCAnKCcsIHN0YWNrLCAnLCAnLCBjb21w
aWxlci5xdW90ZWRTdHJpbmcocGFydHNbaV0pLCAnKSddOworICB9IGVsc2UgeworICAgIHJldHVy
biBzdGFjazsKKyAgfQorfQorCitleHBvcnRzWydkZWZhdWx0J10gPSBKYXZhU2NyaXB0Q29tcGls
ZXI7Cittb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsKKy8vIyBzb3VyY2VNYXBw
aW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpi
M1Z5WTJWeklqcGJJaTR1THk0dUx5NHVMeTR1TDJ4cFlpOW9ZVzVrYkdWaVlYSnpMMk52YlhCcGJH
VnlMMnBoZG1GelkzSnBjSFF0WTI5dGNHbHNaWEl1YW5NaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhC
d2FXNW5jeUk2SWpzN096czdPenR2UWtGQmIwUXNVMEZCVXpzN2VVSkJRM1pETEdOQlFXTTdPenM3
Y1VKQlEyUXNWVUZCVlRzN2RVSkJRMW9zV1VGQldUczdPenRCUVVWb1F5eFRRVUZUTEU5QlFVOHNR
MEZCUXl4TFFVRkxMRVZCUVVVN1FVRkRkRUlzVFVGQlNTeERRVUZETEV0QlFVc3NSMEZCUnl4TFFV
RkxMRU5CUVVNN1EwRkRjRUk3TzBGQlJVUXNVMEZCVXl4clFrRkJhMElzUjBGQlJ5eEZRVUZGT3p0
QlFVVm9ReXhyUWtGQmEwSXNRMEZCUXl4VFFVRlRMRWRCUVVjN096dEJRVWMzUWl4WlFVRlZMRVZC
UVVVc2IwSkJRVk1zVFVGQlRTeEZRVUZGTEVsQlFVa3NZMEZCWVR0QlFVTTFReXhSUVVGSkxHdENR
VUZyUWl4RFFVRkRMRFpDUVVFMlFpeERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZPMEZCUXpGRUxH
RkJRVThzUTBGQlF5eE5RVUZOTEVWQlFVVXNSMEZCUnl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVG
RE8wdEJRelZDTEUxQlFVMDdRVUZEVEN4aFFVRlBMRU5CUVVNc1RVRkJUU3hGUVVGRkxFZEJRVWNz
UlVGQlJTeEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFZEJR
VWNzUTBGQlF5eERRVUZETzB0QlEycEVPMGRCUTBZN1FVRkRSQ3hsUVVGaExFVkJRVVVzZFVKQlFW
TXNTVUZCU1N4RlFVRkZPMEZCUXpWQ0xGZEJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNVMEZCVXl4
RFFVRkRMR3RDUVVGclFpeERRVUZETEVWQlFVVXNXVUZCV1N4RlFVRkZMRWxCUVVrc1JVRkJSU3hK
UVVGSkxFTkJRVU1zUTBGQlF6dEhRVU4yUlRzN1FVRkZSQ3hqUVVGWkxFVkJRVVVzZDBKQlFWYzdR
VUZEZGtJc1VVRkJUU3hSUVVGUkxEQkNRVUZ2UWp0UlFVTTFRaXhSUVVGUkxFZEJRVWNzZFVKQlFX
bENMRkZCUVZFc1EwRkJReXhEUVVGRE8wRkJRelZETEZkQlFVOHNRMEZCUXl4UlFVRlJMRVZCUVVV
c1VVRkJVU3hEUVVGRExFTkJRVU03UjBGRE4wSTdPMEZCUlVRc1owSkJRV01zUlVGQlJTeDNRa0ZC
VXl4TlFVRk5MRVZCUVVVc1VVRkJVU3hGUVVGRkxGRkJRVkVzUlVGQlJUczdRVUZGYmtRc1VVRkJT
U3hEUVVGRExHVkJRVkVzVFVGQlRTeERRVUZETEVWQlFVVTdRVUZEY0VJc1dVRkJUU3hIUVVGSExF
TkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdTMEZEYmtJN1FVRkRSQ3hWUVVGTkxFZEJRVWNzU1VG
QlNTeERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRkxGRkJRVkVz
UTBGQlF5eERRVUZET3p0QlFVVTFReXhSUVVGSkxFbEJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTXNV
VUZCVVN4RlFVRkZPMEZCUXpkQ0xHRkJRVThzUTBGQlF5eFRRVUZUTEVWQlFVVXNUVUZCVFN4RlFV
RkZMRWRCUVVjc1EwRkJReXhEUVVGRE8wdEJRMnBETEUxQlFVMHNTVUZCU1N4UlFVRlJMRVZCUVVV
N096czdRVUZKYmtJc1lVRkJUeXhEUVVGRExGbEJRVmtzUlVGQlJTeE5RVUZOTEVWQlFVVXNSMEZC
Unl4RFFVRkRMRU5CUVVNN1MwRkRjRU1zVFVGQlRUdEJRVU5NTEZsQlFVMHNRMEZCUXl4alFVRmpM
RWRCUVVjc1NVRkJTU3hEUVVGRE8wRkJRemRDTEdGQlFVOHNUVUZCVFN4RFFVRkRPMHRCUTJZN1Iw
RkRSanM3UVVGRlJDeHJRa0ZCWjBJc1JVRkJSU3cwUWtGQlZ6dEJRVU16UWl4WFFVRlBMRWxCUVVr
c1EwRkJReXhaUVVGWkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTTdSMEZET1VJN096dEJRVWRF
TEZOQlFVOHNSVUZCUlN4cFFrRkJVeXhYUVVGWExFVkJRVVVzVDBGQlR5eEZRVUZGTEU5QlFVOHNS
VUZCUlN4UlFVRlJMRVZCUVVVN1FVRkRla1FzVVVGQlNTeERRVUZETEZkQlFWY3NSMEZCUnl4WFFV
RlhMRU5CUVVNN1FVRkRMMElzVVVGQlNTeERRVUZETEU5QlFVOHNSMEZCUnl4UFFVRlBMRU5CUVVN
N1FVRkRka0lzVVVGQlNTeERRVUZETEZsQlFWa3NSMEZCUnl4SlFVRkpMRU5CUVVNc1QwRkJUeXhE
UVVGRExGbEJRVmtzUTBGQlF6dEJRVU01UXl4UlFVRkpMRU5CUVVNc1VVRkJVU3hIUVVGSExFbEJR
VWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNVVUZCVVN4RFFVRkRPMEZCUTNSRExGRkJRVWtzUTBGQlF5
eFZRVUZWTEVkQlFVY3NRMEZCUXl4UlFVRlJMRU5CUVVNN08wRkJSVFZDTEZGQlFVa3NRMEZCUXl4
SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF5eEpRVUZKTEVOQlFVTTdRVUZE
YkVNc1VVRkJTU3hEUVVGRExFOUJRVThzUjBGQlJ5eERRVUZETEVOQlFVTXNUMEZCVHl4RFFVRkRP
MEZCUTNwQ0xGRkJRVWtzUTBGQlF5eFBRVUZQTEVkQlFVY3NUMEZCVHl4SlFVRkpPMEZCUTNoQ0xH
ZENRVUZWTEVWQlFVVXNSVUZCUlR0QlFVTmtMR05CUVZFc1JVRkJSU3hGUVVGRk8wRkJRMW9zYTBK
QlFWa3NSVUZCUlN4RlFVRkZPMHRCUTJwQ0xFTkJRVU03TzBGQlJVWXNVVUZCU1N4RFFVRkRMRkZC
UVZFc1JVRkJSU3hEUVVGRE96dEJRVVZvUWl4UlFVRkpMRU5CUVVNc1UwRkJVeXhIUVVGSExFTkJR
VU1zUTBGQlF6dEJRVU51UWl4UlFVRkpMRU5CUVVNc1UwRkJVeXhIUVVGSExFVkJRVVVzUTBGQlF6
dEJRVU53UWl4UlFVRkpMRU5CUVVNc1QwRkJUeXhIUVVGSExFVkJRVVVzUTBGQlF6dEJRVU5zUWl4
UlFVRkpMRU5CUVVNc1UwRkJVeXhIUVVGSExFVkJRVVVzU1VGQlNTeEZRVUZGTEVWQlFVVXNSVUZC
UlN4RFFVRkRPMEZCUXpsQ0xGRkJRVWtzUTBGQlF5eE5RVUZOTEVkQlFVY3NSVUZCUlN4RFFVRkRP
MEZCUTJwQ0xGRkJRVWtzUTBGQlF5eFpRVUZaTEVkQlFVY3NSVUZCUlN4RFFVRkRPMEZCUTNaQ0xG
RkJRVWtzUTBGQlF5eFhRVUZYTEVkQlFVY3NSVUZCUlN4RFFVRkRPMEZCUTNSQ0xGRkJRVWtzUTBG
QlF5eFhRVUZYTEVkQlFVY3NSVUZCUlN4RFFVRkRPenRCUVVWMFFpeFJRVUZKTEVOQlFVTXNaVUZC
WlN4RFFVRkRMRmRCUVZjc1JVRkJSU3hQUVVGUExFTkJRVU1zUTBGQlF6czdRVUZGTTBNc1VVRkJT
U3hEUVVGRExGTkJRVk1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNVMEZCVXl4SlFVRkpMRmRCUVZjc1Ew
RkJReXhUUVVGVExFbEJRVWtzVjBGQlZ5eERRVUZETEdGQlFXRXNTVUZCU1N4SlFVRkpMRU5CUVVN
c1QwRkJUeXhEUVVGRExFMUJRVTBzUTBGQlF6dEJRVU0zUnl4UlFVRkpMRU5CUVVNc1kwRkJZeXhI
UVVGSExFbEJRVWtzUTBGQlF5eGpRVUZqTEVsQlFVa3NWMEZCVnl4RFFVRkRMR05CUVdNc1EwRkJR
enM3UVVGRmVFVXNVVUZCU1N4UFFVRlBMRWRCUVVjc1YwRkJWeXhEUVVGRExFOUJRVTg3VVVGRE4w
SXNUVUZCVFN4WlFVRkJPMUZCUTA0c1VVRkJVU3haUVVGQk8xRkJRMUlzUTBGQlF5eFpRVUZCTzFG
QlEwUXNRMEZCUXl4WlFVRkJMRU5CUVVNN08wRkJSVTRzVTBGQlN5eERRVUZETEVkQlFVY3NRMEZC
UXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhQUVVGUExFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTXNS
MEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3UVVGRE1VTXNXVUZCVFN4SFFV
RkhMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6czdRVUZGY0VJc1ZVRkJTU3hEUVVG
RExFMUJRVTBzUTBGQlF5eGxRVUZsTEVkQlFVY3NUVUZCVFN4RFFVRkRMRWRCUVVjc1EwRkJRenRC
UVVONlF5eGpRVUZSTEVkQlFVY3NVVUZCVVN4SlFVRkpMRTFCUVUwc1EwRkJReXhIUVVGSExFTkJR
VU03UVVGRGJFTXNWVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5
eExRVUZMTEVOQlFVTXNTVUZCU1N4RlFVRkZMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBG
QlF6dExRVU01UXpzN08wRkJSMFFzVVVGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4bFFVRmxMRWRC
UVVjc1VVRkJVU3hEUVVGRE8wRkJRM1pETEZGQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1JVRkJS
U3hEUVVGRExFTkJRVU03T3p0QlFVZHdRaXhSUVVGSkxFbEJRVWtzUTBGQlF5eFRRVUZUTEVsQlFV
a3NTVUZCU1N4RFFVRkRMRmRCUVZjc1EwRkJReXhOUVVGTkxFbEJRVWtzU1VGQlNTeERRVUZETEZs
QlFWa3NRMEZCUXl4TlFVRk5MRVZCUVVVN1FVRkRla1VzV1VGQlRTd3lRa0ZCWXl3NFEwRkJPRU1z
UTBGQlF5eERRVUZETzB0QlEzSkZPenRCUVVWRUxGRkJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNW
VUZCVlN4RFFVRkRMRTlCUVU4c1JVRkJSU3hGUVVGRk8wRkJRemxDTEZWQlFVa3NRMEZCUXl4aFFV
RmhMRWRCUVVjc1NVRkJTU3hEUVVGRE96dEJRVVV4UWl4VlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVG
RExFOUJRVThzUTBGQlF5d3dRMEZCTUVNc1EwRkJReXhEUVVGRE8wRkJRM0JGTEZWQlFVa3NRMEZC
UXl4VlFVRlZMRU5CUVVNc1NVRkJTU3hEUVVGRExGbEJRVmtzUTBGQlF5eERRVUZET3p0QlFVVnVR
eXhWUVVGSkxGRkJRVkVzUlVGQlJUdEJRVU5hTEZsQlFVa3NRMEZCUXl4VlFVRlZMRWRCUVVjc1VV
RkJVU3hEUVVGRExFdEJRVXNzUTBGQlF5eEpRVUZKTEVWQlFVVXNRMEZCUXl4SlFVRkpMRVZCUVVV
c1QwRkJUeXhGUVVGRkxGZEJRVmNzUlVGQlJTeFJRVUZSTEVWQlFVVXNUVUZCVFN4RlFVRkZMR0ZC
UVdFc1JVRkJSU3hSUVVGUkxFVkJRVVVzU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4TFFVRkxM
RVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03VDBGRE1Va3NUVUZCVFR0QlFVTk1MRmxCUVVrc1Ew
RkJReXhWUVVGVkxFTkJRVU1zVDBGQlR5eERRVUZETEhWRlFVRjFSU3hEUVVGRExFTkJRVU03UVVG
RGFrY3NXVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZE
TEVOQlFVTTdRVUZETlVJc1dVRkJTU3hEUVVGRExGVkJRVlVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNW
VUZCVlN4RFFVRkRMRXRCUVVzc1JVRkJSU3hEUVVGRE8wOUJRek5ETzB0QlEwWXNUVUZCVFR0QlFV
Tk1MRlZCUVVrc1EwRkJReXhWUVVGVkxFZEJRVWNzVTBGQlV5eERRVUZETzB0QlF6ZENPenRCUVVW
RUxGRkJRVWtzUlVGQlJTeEhRVUZITEVsQlFVa3NRMEZCUXl4eFFrRkJjVUlzUTBGQlF5eFJRVUZS
TEVOQlFVTXNRMEZCUXp0QlFVTTVReXhSUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEU5QlFVOHNS
VUZCUlR0QlFVTnFRaXhWUVVGSkxFZEJRVWNzUjBGQlJ6dEJRVU5TTEdkQ1FVRlJMRVZCUVVVc1NV
RkJTU3hEUVVGRExGbEJRVmtzUlVGQlJUdEJRVU0zUWl4WlFVRkpMRVZCUVVVc1JVRkJSVHRQUVVO
VUxFTkJRVU03TzBGQlJVWXNWVUZCU1N4SlFVRkpMRU5CUVVNc1ZVRkJWU3hGUVVGRk8wRkJRMjVD
TEZkQlFVY3NRMEZCUXl4TlFVRk5MRWRCUVVjc1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF6dEJR
VU0zUWl4WFFVRkhMRU5CUVVNc1lVRkJZU3hIUVVGSExFbEJRVWtzUTBGQlF6dFBRVU14UWpzN2NV
SkJSVFJDTEVsQlFVa3NRMEZCUXl4UFFVRlBPMVZCUVhCRExGRkJRVkVzV1VGQlVpeFJRVUZSTzFW
QlFVVXNWVUZCVlN4WlFVRldMRlZCUVZVN08wRkJRM3BDTEZkQlFVc3NRMEZCUXl4SFFVRkhMRU5C
UVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzVVVGQlVTeERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRM
RWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTzBGQlF6TkRMRmxCUVVrc1VV
RkJVU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTzBGQlEyWXNZVUZCUnl4RFFVRkRMRU5CUVVN
c1EwRkJReXhIUVVGSExGRkJRVkVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTnlRaXhq
UVVGSkxGVkJRVlVzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlR0QlFVTnFRaXhsUVVGSExFTkJR
VU1zUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMRlZCUVZVc1EwRkJReXhEUVVGRExF
TkJRVU1zUTBGQlF6dEJRVU01UWl4bFFVRkhMRU5CUVVNc1lVRkJZU3hIUVVGSExFbEJRVWtzUTBG
QlF6dFhRVU14UWp0VFFVTkdPMDlCUTBZN08wRkJSVVFzVlVGQlNTeEpRVUZKTEVOQlFVTXNWMEZC
Vnl4RFFVRkRMRlZCUVZVc1JVRkJSVHRCUVVNdlFpeFhRVUZITEVOQlFVTXNWVUZCVlN4SFFVRkhM
RWxCUVVrc1EwRkJRenRQUVVOMlFqdEJRVU5FTEZWQlFVa3NTVUZCU1N4RFFVRkRMRTlCUVU4c1Ew
RkJReXhKUVVGSkxFVkJRVVU3UVVGRGNrSXNWMEZCUnl4RFFVRkRMRTlCUVU4c1IwRkJSeXhKUVVG
SkxFTkJRVU03VDBGRGNFSTdRVUZEUkN4VlFVRkpMRWxCUVVrc1EwRkJReXhUUVVGVExFVkJRVVU3
UVVGRGJFSXNWMEZCUnl4RFFVRkRMRk5CUVZNc1IwRkJSeXhKUVVGSkxFTkJRVU03VDBGRGRFSTdR
VUZEUkN4VlFVRkpMRWxCUVVrc1EwRkJReXhqUVVGakxFVkJRVVU3UVVGRGRrSXNWMEZCUnl4RFFV
RkRMR05CUVdNc1IwRkJSeXhKUVVGSkxFTkJRVU03VDBGRE0wSTdRVUZEUkN4VlFVRkpMRWxCUVVr
c1EwRkJReXhQUVVGUExFTkJRVU1zVFVGQlRTeEZRVUZGTzBGQlEzWkNMRmRCUVVjc1EwRkJReXhO
UVVGTkxFZEJRVWNzU1VGQlNTeERRVUZETzA5QlEyNUNPenRCUVVWRUxGVkJRVWtzUTBGQlF5eFJR
VUZSTEVWQlFVVTdRVUZEWWl4WFFVRkhMRU5CUVVNc1VVRkJVU3hIUVVGSExFbEJRVWtzUTBGQlF5
eFRRVUZUTEVOQlFVTXNSMEZCUnl4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRE96dEJRVVUxUXl4
WlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExHVkJRV1VzUjBGQlJ5eEZRVUZETEV0QlFVc3NSVUZC
UlN4RlFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGRExFVkJRVVVzVFVGQlRTeEZRVUZGTEVOQlFVTXNS
VUZCUXl4RlFVRkRMRU5CUVVNN1FVRkROVVFzVjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4aFFV
RmhMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03TzBGQlJUbENMRmxCUVVrc1QwRkJUeXhEUVVG
RExFOUJRVThzUlVGQlJUdEJRVU51UWl4aFFVRkhMRWRCUVVjc1IwRkJSeXhEUVVGRExIRkNRVUZ4
UWl4RFFVRkRMRVZCUVVNc1NVRkJTU3hGUVVGRkxFOUJRVThzUTBGQlF5eFJRVUZSTEVWQlFVTXNR
MEZCUXl4RFFVRkRPMEZCUXpGRUxHRkJRVWNzUTBGQlF5eEhRVUZITEVkQlFVY3NSMEZCUnl4RFFV
RkRMRWRCUVVjc1NVRkJTU3hIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEZGQlFWRXNSVUZCUlN4
RFFVRkRPMU5CUTNwRExFMUJRVTA3UVVGRFRDeGhRVUZITEVkQlFVY3NSMEZCUnl4RFFVRkRMRkZC
UVZFc1JVRkJSU3hEUVVGRE8xTkJRM1JDTzA5QlEwWXNUVUZCVFR0QlFVTk1MRmRCUVVjc1EwRkJR
eXhsUVVGbExFZEJRVWNzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXp0UFFVTndRenM3UVVGRlJD
eGhRVUZQTEVkQlFVY3NRMEZCUXp0TFFVTmFMRTFCUVUwN1FVRkRUQ3hoUVVGUExFVkJRVVVzUTBG
QlF6dExRVU5ZTzBkQlEwWTdPMEZCUlVRc1ZVRkJVU3hGUVVGRkxHOUNRVUZYT3pzN1FVRkhia0lz
VVVGQlNTeERRVUZETEZkQlFWY3NSMEZCUnl4RFFVRkRMRU5CUVVNN1FVRkRja0lzVVVGQlNTeERR
VUZETEUxQlFVMHNSMEZCUnl4NVFrRkJXU3hKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEU5QlFV
OHNRMEZCUXl4RFFVRkRPMEZCUTJoRUxGRkJRVWtzUTBGQlF5eFZRVUZWTEVkQlFVY3NlVUpCUVZr
c1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0SFFVTnlSRHM3
UVVGRlJDeDFRa0ZCY1VJc1JVRkJSU3dyUWtGQlV5eFJRVUZSTEVWQlFVVTdRVUZEZUVNc1VVRkJT
U3hsUVVGbExFZEJRVWNzUlVGQlJTeERRVUZET3p0QlFVVjZRaXhSUVVGSkxFMUJRVTBzUjBGQlJ5
eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zVTBG
QlV5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMEZCUTNoRUxGRkJRVWtzVFVGQlRTeERRVUZE
TEUxQlFVMHNSMEZCUnl4RFFVRkRMRVZCUVVVN1FVRkRja0lzY1VKQlFXVXNTVUZCU1N4SlFVRkpM
RWRCUVVjc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0TFFV
TTNRenM3T3pzN096czdRVUZSUkN4UlFVRkpMRlZCUVZVc1IwRkJSeXhEUVVGRExFTkJRVU03UVVG
RGJrSXNVMEZCU3l4SlFVRkpMRXRCUVVzc1NVRkJTU3hKUVVGSkxFTkJRVU1zVDBGQlR5eEZRVUZG
T3p0QlFVTTVRaXhWUVVGSkxFbEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRM
RXRCUVVzc1EwRkJReXhEUVVGRE96dEJRVVV2UWl4VlFVRkpMRWxCUVVrc1EwRkJReXhQUVVGUExF
TkJRVU1zWTBGQll5eERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRWxCUVVrc1EwRkJReXhSUVVG
UkxFbEJRVWtzU1VGQlNTeERRVUZETEdOQlFXTXNSMEZCUnl4RFFVRkRMRVZCUVVVN1FVRkRiRVlz
ZFVKQlFXVXNTVUZCU1N4VFFVRlRMRWRCUVVrc1JVRkJSU3hWUVVGVkxFRkJRVU1zUjBGQlJ5eEhR
VUZITEVkQlFVY3NTMEZCU3l4RFFVRkRPMEZCUXpWRUxGbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFV
TXNRMEZCUXl4RFFVRkRMRWRCUVVjc1QwRkJUeXhIUVVGSExGVkJRVlVzUTBGQlF6dFBRVU42UXp0
TFFVTkdPenRCUVVWRUxGRkJRVWtzVFVGQlRTeEhRVUZITEVOQlFVTXNWMEZCVnl4RlFVRkZMRkZC
UVZFc1JVRkJSU3hUUVVGVExFVkJRVVVzVlVGQlZTeEZRVUZGTEUxQlFVMHNRMEZCUXl4RFFVRkRP
enRCUVVWd1JTeFJRVUZKTEVsQlFVa3NRMEZCUXl4alFVRmpMRWxCUVVrc1NVRkJTU3hEUVVGRExG
TkJRVk1zUlVGQlJUdEJRVU42UXl4WlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExHRkJRV0VzUTBG
QlF5eERRVUZETzB0QlF6VkNPMEZCUTBRc1VVRkJTU3hKUVVGSkxFTkJRVU1zVTBGQlV5eEZRVUZG
TzBGQlEyeENMRmxCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTTdT
MEZEZGtJN096dEJRVWRFTEZGQlFVa3NUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhYUVVGWExF
TkJRVU1zWlVGQlpTeERRVUZETEVOQlFVTTdPMEZCUlM5RExGRkJRVWtzVVVGQlVTeEZRVUZGTzBG
QlExb3NXVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6czdRVUZG
Y0VJc1lVRkJUeXhSUVVGUkxFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NSVUZCUlN4TlFVRk5M
RU5CUVVNc1EwRkJRenRMUVVOeVF5eE5RVUZOTzBGQlEwd3NZVUZCVHl4SlFVRkpMRU5CUVVNc1RV
RkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEZkQlFWY3NSVUZCUlN4TlFVRk5MRU5CUVVN
c1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEZOQlFWTXNSVUZCUlN4TlFVRk5MRVZC
UVVVc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF6dExRVU5zUmp0SFFVTkdPMEZCUTBRc1lVRkJW
eXhGUVVGRkxIRkNRVUZUTEdWQlFXVXNSVUZCUlR0QlFVTnlReXhSUVVGSkxGRkJRVkVzUjBGQlJ5
eEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRkZCUVZFN1VVRkRjRU1zVlVGQlZTeEhRVUZITEVO
QlFVTXNTVUZCU1N4RFFVRkRMRmRCUVZjN1VVRkRPVUlzVjBGQlZ5eFpRVUZCTzFGQlJWZ3NWVUZC
VlN4WlFVRkJPMUZCUTFZc1YwRkJWeXhaUVVGQk8xRkJRMWdzVTBGQlV5eFpRVUZCTEVOQlFVTTdR
VUZEWkN4UlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eFZRVUZETEVsQlFV
a3NSVUZCU3p0QlFVTjZRaXhWUVVGSkxFbEJRVWtzUTBGQlF5eGpRVUZqTEVWQlFVVTdRVUZEZGtJ
c1dVRkJTU3hYUVVGWExFVkJRVVU3UVVGRFppeGpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRTFC
UVUwc1EwRkJReXhEUVVGRE8xTkJRM1JDTEUxQlFVMDdRVUZEVEN4eFFrRkJWeXhIUVVGSExFbEJR
VWtzUTBGQlF6dFRRVU53UWp0QlFVTkVMR2xDUVVGVExFZEJRVWNzU1VGQlNTeERRVUZETzA5QlEy
eENMRTFCUVUwN1FVRkRUQ3haUVVGSkxGZEJRVmNzUlVGQlJUdEJRVU5tTEdOQlFVa3NRMEZCUXl4
VlFVRlZMRVZCUVVVN1FVRkRaaXgxUWtGQlZ5eEhRVUZITEVsQlFVa3NRMEZCUXp0WFFVTndRaXhO
UVVGTk8wRkJRMHdzZFVKQlFWY3NRMEZCUXl4UFFVRlBMRU5CUVVNc1dVRkJXU3hEUVVGRExFTkJR
VU03VjBGRGJrTTdRVUZEUkN4dFFrRkJVeXhEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFV
TXNRMEZCUXp0QlFVTnVRaXh4UWtGQlZ5eEhRVUZITEZOQlFWTXNSMEZCUnl4VFFVRlRMRU5CUVVN
N1UwRkRja003TzBGQlJVUXNhMEpCUVZVc1IwRkJSeXhKUVVGSkxFTkJRVU03UVVGRGJFSXNXVUZC
U1N4RFFVRkRMRkZCUVZFc1JVRkJSVHRCUVVOaUxHOUNRVUZWTEVkQlFVY3NTMEZCU3l4RFFVRkRP
MU5CUTNCQ08wOUJRMFk3UzBGRFJpeERRVUZETEVOQlFVTTdPMEZCUjBnc1VVRkJTU3hWUVVGVkxF
VkJRVVU3UVVGRFpDeFZRVUZKTEZkQlFWY3NSVUZCUlR0QlFVTm1MRzFDUVVGWExFTkJRVU1zVDBG
QlR5eERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRPMEZCUXk5Q0xHbENRVUZUTEVOQlFVTXNSMEZC
Unl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8wOUJRM0JDTEUxQlFVMHNTVUZCU1N4RFFVRkRM
RlZCUVZVc1JVRkJSVHRCUVVOMFFpeFpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1Ew
RkJReXhaUVVGWkxFTkJRVU1zUTBGQlF6dFBRVU5vUXp0TFFVTkdMRTFCUVUwN1FVRkRUQ3h4UWtG
QlpTeEpRVUZKTEdGQlFXRXNTVUZCU1N4WFFVRlhMRWRCUVVjc1JVRkJSU3hIUVVGSExFbEJRVWtz
UTBGQlF5eG5Ra0ZCWjBJc1JVRkJSU3hEUVVGQkxFRkJRVU1zUTBGQlF6czdRVUZGYUVZc1ZVRkJT
U3hYUVVGWExFVkJRVVU3UVVGRFppeHRRa0ZCVnl4RFFVRkRMRTlCUVU4c1EwRkJReXhyUWtGQmEw
SXNRMEZCUXl4RFFVRkRPMEZCUTNoRExHbENRVUZUTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVj
c1EwRkJReXhEUVVGRE8wOUJRM0JDTEUxQlFVMDdRVUZEVEN4WlFVRkpMRU5CUVVNc1RVRkJUU3hE
UVVGRExFbEJRVWtzUTBGQlF5eG5Ra0ZCWjBJc1EwRkJReXhEUVVGRE8wOUJRM0JETzB0QlEwWTdP
MEZCUlVRc1VVRkJTU3hsUVVGbExFVkJRVVU3UVVGRGJrSXNWVUZCU1N4RFFVRkRMRTFCUVUwc1Ew
RkJReXhQUVVGUExFTkJRVU1zVFVGQlRTeEhRVUZITEdWQlFXVXNRMEZCUXl4VFFVRlRMRU5CUVVN
c1EwRkJReXhEUVVGRExFbEJRVWtzVjBGQlZ5eEhRVUZITEVWQlFVVXNSMEZCUnl4TFFVRkxMRU5C
UVVFc1FVRkJReXhEUVVGRExFTkJRVU03UzBGRGVrWTdPMEZCUlVRc1YwRkJUeXhKUVVGSkxFTkJR
VU1zVFVGQlRTeERRVUZETEV0QlFVc3NSVUZCUlN4RFFVRkRPMGRCUXpWQ096czdPenM3T3pzN096
dEJRVmRFTEZsQlFWVXNSVUZCUlN4dlFrRkJVeXhKUVVGSkxFVkJRVVU3UVVGRGVrSXNVVUZCU1N4
clFrRkJhMElzUjBGQlJ5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRFJDUVVFMFFpeERRVUZE
TzFGQlEycEZMRTFCUVUwc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTXNR
MEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVOdVF5eFJRVUZKTEVOQlFVTXNaVUZCWlN4RFFV
RkRMRWxCUVVrc1JVRkJSU3hEUVVGRExFVkJRVVVzVFVGQlRTeERRVUZETEVOQlFVTTdPMEZCUlhS
RExGRkJRVWtzVTBGQlV5eEhRVUZITEVsQlFVa3NRMEZCUXl4UlFVRlJMRVZCUVVVc1EwRkJRenRC
UVVOb1F5eFZRVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJR
VVVzVTBGQlV5eERRVUZETEVOQlFVTTdPMEZCUlM5Q0xGRkJRVWtzUTBGQlF5eEpRVUZKTEVOQlFV
TXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhaUVVGWkxFTkJRVU1zYTBKQlFXdENMRVZCUVVV
c1RVRkJUU3hGUVVGRkxFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTTdSMEZEZWtVN096czdPenM3
TzBGQlVVUXNjVUpCUVcxQ0xFVkJRVVVzSzBKQlFWYzdPMEZCUlRsQ0xGRkJRVWtzYTBKQlFXdENM
RWRCUVVjc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5dzBRa0ZCTkVJc1EwRkJRenRSUVVOcVJT
eE5RVUZOTEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1YwRkJWeXhEUVVGRExFTkJRVU1zUTBG
QlF5eERRVUZETEVOQlFVTTdRVUZEYmtNc1VVRkJTU3hEUVVGRExHVkJRV1VzUTBGQlF5eEZRVUZG
TEVWQlFVVXNRMEZCUXl4RlFVRkZMRTFCUVUwc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6czdR
VUZGTVVNc1VVRkJTU3hEUVVGRExGZEJRVmNzUlVGQlJTeERRVUZET3p0QlFVVnVRaXhSUVVGSkxF
OUJRVThzUjBGQlJ5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RlFVRkZMRU5CUVVNN1FVRkRPVUlzVlVG
QlRTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFOUJRVThz
UTBGQlF5eERRVUZET3p0QlFVVTNRaXhSUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEVOQlExb3NU
MEZCVHl4RlFVRkZMRWxCUVVrc1EwRkJReXhWUVVGVkxFVkJRVVVzVFVGQlRTeEZRVU01UWl4UFFV
RlBMRVZCUVVVc1MwRkJTeXhGUVVGRkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNXVUZCV1N4
RFFVRkRMR3RDUVVGclFpeEZRVUZGTEUxQlFVMHNSVUZCUlN4TlFVRk5MRU5CUVVNc1JVRkRPVVVz
UjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXp0SFFVTllPenM3T3pzN096dEJRVkZFTEdWQlFXRXNS
VUZCUlN4MVFrRkJVeXhQUVVGUExFVkJRVVU3UVVGREwwSXNVVUZCU1N4SlFVRkpMRU5CUVVNc1kw
RkJZeXhGUVVGRk8wRkJRM1pDTEdGQlFVOHNSMEZCUnl4SlFVRkpMRU5CUVVNc1kwRkJZeXhIUVVG
SExFOUJRVThzUTBGQlF6dExRVU42UXl4TlFVRk5PMEZCUTB3c1ZVRkJTU3hEUVVGRExHVkJRV1Vz
UjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMR1ZCUVdVc1EwRkJRenRMUVVOd1JEczdR
VUZGUkN4UlFVRkpMRU5CUVVNc1kwRkJZeXhIUVVGSExFOUJRVThzUTBGQlF6dEhRVU12UWpzN096
czdPenM3T3pzN1FVRlhSQ3hSUVVGTkxFVkJRVVVzYTBKQlFWYzdRVUZEYWtJc1VVRkJTU3hKUVVG
SkxFTkJRVU1zVVVGQlVTeEZRVUZGTEVWQlFVVTdRVUZEYmtJc1ZVRkJTU3hEUVVGRExGbEJRVmtz
UTBGQlF5eFZRVUZETEU5QlFVODdaVUZCU3l4RFFVRkRMR0ZCUVdFc1JVRkJSU3hQUVVGUExFVkJR
VVVzVDBGQlR5eERRVUZETzA5QlFVRXNRMEZCUXl4RFFVRkRPenRCUVVWc1JTeFZRVUZKTEVOQlFV
TXNWVUZCVlN4RFFVRkRMRWxCUVVrc1EwRkJReXhqUVVGakxFTkJRVU1zU1VGQlNTeERRVUZETEZG
QlFWRXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJRenRMUVVOMlJDeE5RVUZOTzBGQlEwd3NWVUZC
U1N4TFFVRkxMRWRCUVVjc1NVRkJTU3hEUVVGRExGRkJRVkVzUlVGQlJTeERRVUZETzBGQlF6VkNM
RlZCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF5eE5RVUZOTEVWQlFVVXNTMEZCU3l4RlFV
RkZMR05CUVdNc1JVRkJSU3hKUVVGSkxFTkJRVU1zWTBGQll5eERRVUZETEV0QlFVc3NSVUZCUlN4
VFFVRlRMRVZCUVVVc1NVRkJTU3hEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZC
UXp0QlFVTndSeXhWUVVGSkxFbEJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTXNVVUZCVVN4RlFVRkZP
MEZCUXpkQ0xGbEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCUXl4VFFVRlRMRVZCUVVVc1NV
RkJTU3hEUVVGRExHTkJRV01zUTBGQlF5eEpRVUZKTEVWQlFVVXNVMEZCVXl4RlFVRkZMRWxCUVVr
c1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTTdUMEZEYUVZN1MwRkRSanRI
UVVOR096czdPenM3T3p0QlFWRkVMR1ZCUVdFc1JVRkJSU3g1UWtGQlZ6dEJRVU40UWl4UlFVRkpM
RU5CUVVNc1ZVRkJWU3hEUVVGRExFbEJRVWtzUTBGQlF5eGpRVUZqTEVOQlF5OUNMRU5CUVVNc1NV
RkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5dzBRa0ZCTkVJc1EwRkJReXhGUVVGRkxFZEJRVWNzUlVG
QlJTeEpRVUZKTEVOQlFVTXNVVUZCVVN4RlFVRkZMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU1z
UTBGQlF5eERRVUZETzBkQlEycEdPenM3T3pzN096czdRVUZUUkN4WlFVRlZMRVZCUVVVc2IwSkJR
Vk1zUzBGQlN5eEZRVUZGTzBGQlF6RkNMRkZCUVVrc1EwRkJReXhYUVVGWExFZEJRVWNzUzBGQlN5
eERRVUZETzBkQlF6RkNPenM3T3pzN096dEJRVkZFTEdGQlFWY3NSVUZCUlN4MVFrRkJWenRCUVVO
MFFpeFJRVUZKTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zU1VGQlNTeERRVUZETEZkQlFWY3NRMEZC
UXl4SlFVRkpMRU5CUVVNc1YwRkJWeXhEUVVGRExFTkJRVU1zUTBGQlF6dEhRVU16UkRzN096czdP
enM3TzBGQlUwUXNhVUpCUVdVc1JVRkJSU3g1UWtGQlV5eExRVUZMTEVWQlFVVXNTMEZCU3l4RlFV
RkZMRTFCUVUwc1JVRkJSU3hOUVVGTkxFVkJRVVU3UVVGRGRFUXNVVUZCU1N4RFFVRkRMRWRCUVVj
c1EwRkJReXhEUVVGRE96dEJRVVZXTEZGQlFVa3NRMEZCUXl4TlFVRk5MRWxCUVVrc1NVRkJTU3hE
UVVGRExFOUJRVThzUTBGQlF5eE5RVUZOTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1YwRkJW
eXhGUVVGRk96czdRVUZIZGtRc1ZVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFV
TXNZVUZCWVN4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVO
QlFVTXNRMEZCUXp0TFFVTXpReXhOUVVGTk8wRkJRMHdzVlVGQlNTeERRVUZETEZkQlFWY3NSVUZC
UlN4RFFVRkRPMHRCUTNCQ096dEJRVVZFTEZGQlFVa3NRMEZCUXl4WFFVRlhMRU5CUVVNc1UwRkJV
eXhGUVVGRkxFdEJRVXNzUlVGQlJTeERRVUZETEVWQlFVVXNTMEZCU3l4RlFVRkZMRTFCUVUwc1Ew
RkJReXhEUVVGRE8wZEJRM1JFT3pzN096czdPenM3UVVGVFJDeHJRa0ZCWjBJc1JVRkJSU3d3UWtG
QlV5eFpRVUZaTEVWQlFVVXNTMEZCU3l4RlFVRkZPMEZCUXpsRExGRkJRVWtzUTBGQlF5eGpRVUZq
TEVkQlFVY3NTVUZCU1N4RFFVRkRPenRCUVVVelFpeFJRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRM
RU5CUVVNc1kwRkJZeXhGUVVGRkxGbEJRVmtzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4SlFV
RkpMRVZCUVVVc1dVRkJXU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVkQlFVY3NRMEZCUXl4
RFFVRkRMRU5CUVVNN1FVRkRla1VzVVVGQlNTeERRVUZETEZkQlFWY3NRMEZCUXl4VFFVRlRMRVZC
UVVVc1MwRkJTeXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzBkQlEzWkRPenM3T3pzN096dEJR
VkZFTEZsQlFWVXNSVUZCUlN4dlFrRkJVeXhMUVVGTExFVkJRVVVzUzBGQlN5eEZRVUZGTEUxQlFV
MHNSVUZCUlR0QlFVTjZReXhSUVVGSkxFTkJRVU1zUzBGQlN5eEZRVUZGTzBGQlExWXNWVUZCU1N4
RFFVRkRMR2RDUVVGblFpeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMHRCUXk5Q0xFMUJRVTA3
UVVGRFRDeFZRVUZKTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zZFVKQlFYVkNMRWRCUVVjc1MwRkJT
eXhIUVVGSExFZEJRVWNzUTBGQlF5eERRVUZETzB0QlF6bEVPenRCUVVWRUxGRkJRVWtzUTBGQlF5
eFhRVUZYTEVOQlFVTXNUVUZCVFN4RlFVRkZMRXRCUVVzc1JVRkJSU3hEUVVGRExFVkJRVVVzU1VG
QlNTeEZRVUZGTEUxQlFVMHNRMEZCUXl4RFFVRkRPMGRCUTJ4RU96dEJRVVZFTEdGQlFWY3NSVUZC
UlN4eFFrRkJVeXhKUVVGSkxFVkJRVVVzUzBGQlN5eEZRVUZGTEVOQlFVTXNSVUZCUlN4TFFVRkxM
RVZCUVVVc1RVRkJUU3hGUVVGRk96czdPenRCUVVOdVJDeFJRVUZKTEVsQlFVa3NRMEZCUXl4UFFV
RlBMRU5CUVVNc1RVRkJUU3hKUVVGSkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNZVUZCWVN4
RlFVRkZPMEZCUTNKRUxGVkJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNXVUZCV1N4RFFVRkRMRWxC
UVVrc1EwRkJReXhQUVVGUExFTkJRVU1zVFVGQlRTeEpRVUZKTEUxQlFVMHNSVUZCUlN4SlFVRkpM
RVZCUVVVc1MwRkJTeXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTTdRVUZETVVVc1lV
RkJUenRMUVVOU096dEJRVVZFTEZGQlFVa3NSMEZCUnl4SFFVRkhMRXRCUVVzc1EwRkJReXhOUVVG
TkxFTkJRVU03UVVGRGRrSXNWMEZCVHl4RFFVRkRMRWRCUVVjc1IwRkJSeXhGUVVGRkxFTkJRVU1z
UlVGQlJTeEZRVUZGT3p0QlFVVnVRaXhWUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETEZWQlFVTXNU
MEZCVHl4RlFVRkxPMEZCUXpkQ0xGbEJRVWtzVFVGQlRTeEhRVUZITEUxQlFVc3NWVUZCVlN4RFFV
RkRMRTlCUVU4c1JVRkJSU3hMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNTVUZCU1N4
RFFVRkRMRU5CUVVNN096dEJRVWQwUkN4WlFVRkpMRU5CUVVNc1MwRkJTeXhGUVVGRk8wRkJRMVlz
YVVKQlFVOHNRMEZCUXl4aFFVRmhMRVZCUVVVc1RVRkJUU3hGUVVGRkxFdEJRVXNzUlVGQlJTeFBR
VUZQTEVOQlFVTXNRMEZCUXp0VFFVTm9SQ3hOUVVGTk96dEJRVVZNTEdsQ1FVRlBMRU5CUVVNc1RV
RkJUU3hGUVVGRkxFMUJRVTBzUTBGQlF5eERRVUZETzFOQlEzcENPMDlCUTBZc1EwRkJReXhEUVVG
RE96dExRVVZLTzBkQlEwWTdPenM3T3pzN096dEJRVk5FTEhWQ1FVRnhRaXhGUVVGRkxHbERRVUZY
TzBGQlEyaERMRkZCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNV
MEZCVXl4RFFVRkRMR3RDUVVGclFpeERRVUZETEVWQlFVVXNSMEZCUnl4RlFVRkZMRWxCUVVrc1Ew
RkJReXhSUVVGUkxFVkJRVVVzUlVGQlJTeEpRVUZKTEVWQlFVVXNTVUZCU1N4RFFVRkRMRmRCUVZj
c1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPMGRC
UTNaSE96czdPenM3T3pzN08wRkJWVVFzYVVKQlFXVXNSVUZCUlN4NVFrRkJVeXhOUVVGTkxFVkJR
VVVzU1VGQlNTeEZRVUZGTzBGQlEzUkRMRkZCUVVrc1EwRkJReXhYUVVGWExFVkJRVVVzUTBGQlF6
dEJRVU51UWl4UlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZET3pz
N08wRkJTWFJDTEZGQlFVa3NTVUZCU1N4TFFVRkxMR1ZCUVdVc1JVRkJSVHRCUVVNMVFpeFZRVUZK
TEU5QlFVOHNUVUZCVFN4TFFVRkxMRkZCUVZFc1JVRkJSVHRCUVVNNVFpeFpRVUZKTEVOQlFVTXNW
VUZCVlN4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8wOUJRM3BDTEUxQlFVMDdRVUZEVEN4WlFV
RkpMRU5CUVVNc1owSkJRV2RDTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1QwRkRMMEk3UzBG
RFJqdEhRVU5HT3p0QlFVVkVMRmRCUVZNc1JVRkJSU3h0UWtGQlV5eFRRVUZUTEVWQlFVVTdRVUZE
TjBJc1VVRkJTU3hKUVVGSkxFTkJRVU1zVVVGQlVTeEZRVUZGTzBGQlEycENMRlZCUVVrc1EwRkJR
eXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdTMEZEYWtJN1FVRkRSQ3hSUVVGSkxF
bEJRVWtzUTBGQlF5eFpRVUZaTEVWQlFVVTdRVUZEY2tJc1ZVRkJTU3hEUVVGRExFbEJRVWtzUTBG
QlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0QlFVTm9RaXhWUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZE
TEVsQlFVa3NRMEZCUXl4RFFVRkRPMHRCUTJwQ08wRkJRMFFzVVVGQlNTeERRVUZETEdkQ1FVRm5R
aXhEUVVGRExGTkJRVk1zUjBGQlJ5eFhRVUZYTEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNN1Iw
RkRka1E3UVVGRFJDeFZRVUZSTEVWQlFVVXNiMEpCUVZjN1FVRkRia0lzVVVGQlNTeEpRVUZKTEVO
QlFVTXNTVUZCU1N4RlFVRkZPMEZCUTJJc1ZVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZK
TEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8wdEJRemRDTzBGQlEwUXNV
VUZCU1N4RFFVRkRMRWxCUVVrc1IwRkJSeXhGUVVGRExFMUJRVTBzUlVGQlJTeEZRVUZGTEVWQlFV
VXNTMEZCU3l4RlFVRkZMRVZCUVVVc1JVRkJSU3hSUVVGUkxFVkJRVVVzUlVGQlJTeEZRVUZGTEVk
QlFVY3NSVUZCUlN4RlFVRkZMRVZCUVVNc1EwRkJRenRIUVVNMVJEdEJRVU5FTEZOQlFVOHNSVUZC
UlN4dFFrRkJWenRCUVVOc1FpeFJRVUZKTEVsQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNc1NVRkJT
U3hEUVVGRE8wRkJRM0pDTEZGQlFVa3NRMEZCUXl4SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGRExF
MUJRVTBzUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXpzN1FVRkZPVUlzVVVGQlNTeEpRVUZKTEVO
QlFVTXNVVUZCVVN4RlFVRkZPMEZCUTJwQ0xGVkJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZC
U1N4RFFVRkRMR0ZCUVdFc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNR
MEZCUXp0TFFVTjZRenRCUVVORUxGRkJRVWtzU1VGQlNTeERRVUZETEZsQlFWa3NSVUZCUlR0QlFV
TnlRaXhWUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4aFFVRmhMRU5CUVVN
c1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETEVOQlFVTTdRVUZETjBNc1ZVRkJTU3hE
UVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNZVUZCWVN4RFFVRkRMRWxCUVVrc1EwRkJR
eXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETzB0QlF6TkRPenRCUVVWRUxGRkJRVWtzUTBGQlF5
eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMR0ZCUVdFc1EwRkJReXhKUVVGSkxFTkJRVU1zVFVG
QlRTeERRVUZETEVOQlFVTXNRMEZCUXp0SFFVTTFRenM3T3pzN096czdRVUZSUkN4WlFVRlZMRVZC
UVVVc2IwSkJRVk1zVFVGQlRTeEZRVUZGTzBGQlF6TkNMRkZCUVVrc1EwRkJReXhuUWtGQlowSXNR
MEZCUXl4SlFVRkpMRU5CUVVNc1dVRkJXU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFV
TTdSMEZEYkVRN096czdPenM3T3pzN1FVRlZSQ3hoUVVGWExFVkJRVVVzY1VKQlFWTXNTMEZCU3l4
RlFVRkZPMEZCUXpOQ0xGRkJRVWtzUTBGQlF5eG5Ra0ZCWjBJc1EwRkJReXhMUVVGTExFTkJRVU1z
UTBGQlF6dEhRVU01UWpzN096czdPenM3T3p0QlFWVkVMR0ZCUVZjc1JVRkJSU3h4UWtGQlV5eEpR
VUZKTEVWQlFVVTdRVUZETVVJc1VVRkJTU3hKUVVGSkxFbEJRVWtzU1VGQlNTeEZRVUZGTzBGQlEy
aENMRlZCUVVrc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4SlFVRkpMRU5CUVVNc2FVSkJRV2xDTEVO
QlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJRenRMUVVOeVJDeE5RVUZOTzBGQlEwd3NWVUZC
U1N4RFFVRkRMR2RDUVVGblFpeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMHRCUXpkQ08wZEJR
MFk3T3pzN096czdPenRCUVZORUxHMUNRVUZwUWl4RlFVRkJMREpDUVVGRExGTkJRVk1zUlVGQlJT
eEpRVUZKTEVWQlFVVTdRVUZEYWtNc1VVRkJTU3hqUVVGakxFZEJRVWNzU1VGQlNTeERRVUZETEZW
QlFWVXNRMEZCUXl4WlFVRlpMRVZCUVVVc1NVRkJTU3hGUVVGRkxGZEJRVmNzUTBGQlF6dFJRVU5x
UlN4UFFVRlBMRWRCUVVjc1NVRkJTU3hEUVVGRExHVkJRV1VzUTBGQlF5eEpRVUZKTEVWQlFVVXNV
MEZCVXl4RFFVRkRMRU5CUVVNN08wRkJSWEJFTEZGQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1NV
RkJTU3hEUVVGRExFTkJRMjVDTEU5QlFVOHNSVUZEVUN4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVG
RExGbEJRVmtzUTBGQlF5eGpRVUZqTEVWQlFVVXNSVUZCUlN4RlFVRkZMRU5CUVVNc1NVRkJTU3hG
UVVGRkxFOUJRVThzUlVGQlJTeFhRVUZYTEVWQlFVVXNUMEZCVHl4RFFVRkRMRU5CUVVNc1JVRkRk
a1lzVTBGQlV5eERRVU5XTEVOQlFVTXNRMEZCUXp0SFFVTktPenM3T3pzN096czdPenRCUVZkRUxH
TkJRVmtzUlVGQlJTeHpRa0ZCVXl4VFFVRlRMRVZCUVVVc1NVRkJTU3hGUVVGRkxGRkJRVkVzUlVG
QlJUdEJRVU5vUkN4UlFVRkpMRk5CUVZNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVVVGQlVTeEZRVUZG
TzFGQlF6TkNMRTFCUVUwc1IwRkJSeXhKUVVGSkxFTkJRVU1zVjBGQlZ5eERRVUZETEZOQlFWTXNS
VUZCUlN4SlFVRkpMRU5CUVVNN1VVRkRNVU1zVFVGQlRTeEhRVUZITEZGQlFWRXNSMEZCUnl4RFFV
RkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFVkJRVVVzVFVGQlRTeERRVUZETEVkQlFVY3NSVUZCUlN4
RFFVRkRPenRCUVVWdVJDeFJRVUZKTEUxQlFVMHNSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhE
UVVGRExFMUJRVTBzUTBGQlF5eE5RVUZOTEVWQlFVVXNVMEZCVXl4RFFVRkRMRU5CUVVNN1FVRkRO
ME1zVVVGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1RVRkJUU3hGUVVGRk8w
RkJRM2hDTEZsQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRkxFbEJRVWtzUTBG
QlF5eFRRVUZUTEVOQlFVTXNkVUpCUVhWQ0xFTkJRVU1zUTBGQlF5eERRVUZETzB0QlF6bEVPMEZC
UTBRc1ZVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXpzN1FVRkZh
a0lzVVVGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExG
bEJRVmtzUTBGQlF5eE5RVUZOTEVWQlFVVXNUVUZCVFN4RlFVRkZMRTFCUVUwc1EwRkJReXhWUVVG
VkxFTkJRVU1zUTBGQlF5eERRVUZETzBkQlEzaEZPenM3T3pzN096czdRVUZUUkN4dFFrRkJhVUlz
UlVGQlJTd3lRa0ZCVXl4VFFVRlRMRVZCUVVVc1NVRkJTU3hGUVVGRk8wRkJRek5ETEZGQlFVa3NU
VUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhYUVVGWExFTkJRVU1zVTBGQlV5eEZRVUZGTEVsQlFV
a3NRMEZCUXl4RFFVRkRPMEZCUXk5RExGRkJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4
RFFVRkRMRTFCUVUwc1EwRkJReXhaUVVGWkxFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NSVUZC
UlN4TlFVRk5MRVZCUVVVc1RVRkJUU3hEUVVGRExGVkJRVlVzUTBGQlF5eERRVUZETEVOQlFVTTdS
MEZETjBVN096czdPenM3T3pzN096czdPMEZCWTBRc2FVSkJRV1VzUlVGQlJTeDVRa0ZCVXl4SlFV
RkpMRVZCUVVVc1ZVRkJWU3hGUVVGRk8wRkJRekZETEZGQlFVa3NRMEZCUXl4WFFVRlhMRU5CUVVN
c1VVRkJVU3hEUVVGRExFTkJRVU03TzBGQlJUTkNMRkZCUVVrc1UwRkJVeXhIUVVGSExFbEJRVWtz
UTBGQlF5eFJRVUZSTEVWQlFVVXNRMEZCUXpzN1FVRkZhRU1zVVVGQlNTeERRVUZETEZOQlFWTXNS
VUZCUlN4RFFVRkRPMEZCUTJwQ0xGRkJRVWtzVFVGQlRTeEhRVUZITEVsQlFVa3NRMEZCUXl4WFFV
RlhMRU5CUVVNc1EwRkJReXhGUVVGRkxFbEJRVWtzUlVGQlJTeFZRVUZWTEVOQlFVTXNRMEZCUXpz
N1FVRkZia1FzVVVGQlNTeFZRVUZWTEVkQlFVY3NTVUZCU1N4RFFVRkRMRlZCUVZVc1IwRkJSeXhK
UVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEZOQlFWTXNSVUZCUlN4SlFVRkpMRVZCUVVVc1VVRkJV
U3hEUVVGRExFTkJRVU03TzBGQlJUbEZMRkZCUVVrc1RVRkJUU3hIUVVGSExFTkJRVU1zUjBGQlJ5
eEZRVUZGTEZsQlFWa3NSVUZCUlN4VlFVRlZMRVZCUVVVc1RVRkJUU3hGUVVGRkxGTkJRVk1zUlVG
QlJTeEhRVUZITEVOQlFVTXNRMEZCUXp0QlFVTnlSU3hSUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZE
TEU5QlFVOHNRMEZCUXl4TlFVRk5MRVZCUVVVN1FVRkRlRUlzV1VGQlRTeERRVUZETEVOQlFVTXNR
MEZCUXl4SFFVRkhMRmxCUVZrc1EwRkJRenRCUVVONlFpeFpRVUZOTEVOQlFVTXNTVUZCU1N4RFFV
TlVMSE5DUVVGelFpeEZRVU4wUWl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExIVkNRVUYxUWl4
RFFVRkRMRU5CUTNoRExFTkJRVU03UzBGRFNEczdRVUZGUkN4UlFVRkpMRU5CUVVNc1NVRkJTU3hE
UVVGRExFTkJRMDRzUjBGQlJ5eEZRVUZGTEUxQlFVMHNSVUZEVml4TlFVRk5MRU5CUVVNc1ZVRkJW
U3hIUVVGSExFTkJRVU1zUzBGQlN5eEZRVUZGTEUxQlFVMHNRMEZCUXl4VlFVRlZMRU5CUVVNc1Iw
RkJSeXhGUVVGRkxFVkJRVWNzU1VGQlNTeEZRVU16UkN4eFFrRkJjVUlzUlVGQlJTeEpRVUZKTEVO
QlFVTXNVMEZCVXl4RFFVRkRMRmxCUVZrc1EwRkJReXhGUVVGRkxFdEJRVXNzUlVGRE1VUXNTVUZC
U1N4RFFVRkRMRTFCUVUwc1EwRkJReXhaUVVGWkxFTkJRVU1zVVVGQlVTeEZRVUZGTEUxQlFVMHNS
VUZCUlN4TlFVRk5MRU5CUVVNc1ZVRkJWU3hEUVVGRExFVkJRVVVzWVVGQllTeERRVU12UlN4RFFV
RkRMRU5CUVVNN1IwRkRTanM3T3pzN096czdPMEZCVTBRc1pVRkJZU3hGUVVGRkxIVkNRVUZUTEZO
QlFWTXNSVUZCUlN4SlFVRkpMRVZCUVVVc1RVRkJUU3hGUVVGRk8wRkJReTlETEZGQlFVa3NUVUZC
VFN4SFFVRkhMRVZCUVVVN1VVRkRXQ3hQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETEZkQlFWY3NR
MEZCUXl4SlFVRkpMRVZCUVVVc1EwRkJReXhGUVVGRkxFMUJRVTBzUTBGQlF5eERRVUZET3p0QlFV
Vm9SQ3hSUVVGSkxGTkJRVk1zUlVGQlJUdEJRVU5pTEZWQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVN
c1VVRkJVU3hGUVVGRkxFTkJRVU03UVVGRGRrSXNZVUZCVHl4UFFVRlBMRU5CUVVNc1NVRkJTU3hE
UVVGRE8wdEJRM0pDT3p0QlFVVkVMRkZCUVVrc1RVRkJUU3hGUVVGRk8wRkJRMVlzWVVGQlR5eERR
VUZETEUxQlFVMHNSMEZCUnl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFMUJRVTBzUTBGQlF5
eERRVUZETzB0QlEzcERPMEZCUTBRc1YwRkJUeXhEUVVGRExFOUJRVThzUjBGQlJ5eFRRVUZUTEVO
QlFVTTdRVUZETlVJc1YwRkJUeXhEUVVGRExGRkJRVkVzUjBGQlJ5eFZRVUZWTEVOQlFVTTdRVUZE
T1VJc1YwRkJUeXhEUVVGRExGVkJRVlVzUjBGQlJ5eHpRa0ZCYzBJc1EwRkJRenM3UVVGRk5VTXNV
VUZCU1N4RFFVRkRMRk5CUVZNc1JVRkJSVHRCUVVOa0xGbEJRVTBzUTBGQlF5eFBRVUZQTEVOQlFV
TXNTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhWUVVGVkxFVkJRVVVzU1VGQlNTeEZRVUZGTEZO
QlFWTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1MwRkRPVVFzVFVGQlRUdEJRVU5NTEZsQlFVMHNRMEZC
UXl4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03UzBGRGRFSTdPMEZCUlVRc1VVRkJT
U3hKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEUxQlFVMHNSVUZCUlR0QlFVTjJRaXhoUVVGUExF
TkJRVU1zVFVGQlRTeEhRVUZITEZGQlFWRXNRMEZCUXp0TFFVTXpRanRCUVVORUxGZEJRVThzUjBG
QlJ5eEpRVUZKTEVOQlFVTXNZVUZCWVN4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8wRkJRM1JE
TEZWQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03TzBGQlJYSkNM
RkZCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4WlFV
RlpMRU5CUVVNc2VVSkJRWGxDTEVWQlFVVXNSVUZCUlN4RlFVRkZMRTFCUVUwc1EwRkJReXhEUVVG
RExFTkJRVU03UjBGRE5VVTdPenM3T3pzN08wRkJVVVFzWTBGQldTeEZRVUZGTEhOQ1FVRlRMRWRC
UVVjc1JVRkJSVHRCUVVNeFFpeFJRVUZKTEV0QlFVc3NSMEZCUnl4SlFVRkpMRU5CUVVNc1VVRkJV
U3hGUVVGRk8xRkJRM1pDTEU5QlFVOHNXVUZCUVR0UlFVTlFMRWxCUVVrc1dVRkJRVHRSUVVOS0xF
VkJRVVVzV1VGQlFTeERRVUZET3p0QlFVVlFMRkZCUVVrc1NVRkJTU3hEUVVGRExGRkJRVkVzUlVG
QlJUdEJRVU5xUWl4UlFVRkZMRWRCUVVjc1NVRkJTU3hEUVVGRExGRkJRVkVzUlVGQlJTeERRVUZE
TzB0QlEzUkNPMEZCUTBRc1VVRkJTU3hKUVVGSkxFTkJRVU1zV1VGQldTeEZRVUZGTzBGQlEzSkNM
RlZCUVVrc1IwRkJSeXhKUVVGSkxFTkJRVU1zVVVGQlVTeEZRVUZGTEVOQlFVTTdRVUZEZGtJc1lV
RkJUeXhIUVVGSExFbEJRVWtzUTBGQlF5eFJRVUZSTEVWQlFVVXNRMEZCUXp0TFFVTXpRanM3UVVG
RlJDeFJRVUZKTEVsQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRE8wRkJRM0pD
TEZGQlFVa3NUMEZCVHl4RlFVRkZPMEZCUTFnc1ZVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eEhR
VUZITEVOQlFVTXNSMEZCUnl4UFFVRlBMRU5CUVVNN1MwRkRPVUk3UVVGRFJDeFJRVUZKTEVsQlFV
a3NSVUZCUlR0QlFVTlNMRlZCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUjBGQlJ5eERRVUZETEVk
QlFVY3NTVUZCU1N4RFFVRkRPMHRCUTNoQ08wRkJRMFFzVVVGQlNTeEZRVUZGTEVWQlFVVTdRVUZE
VGl4VlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVWQlFVVXNR
MEZCUXp0TFFVTndRanRCUVVORUxGRkJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNSMEZCUnl4RFFV
RkRMRWRCUVVjc1MwRkJTeXhEUVVGRE8wZEJRekZDT3p0QlFVVkVMRkZCUVUwc1JVRkJSU3huUWtG
QlV5eEpRVUZKTEVWQlFVVXNTVUZCU1N4RlFVRkZMRXRCUVVzc1JVRkJSVHRCUVVOc1F5eFJRVUZK
TEVsQlFVa3NTMEZCU3l4WlFVRlpMRVZCUVVVN1FVRkRla0lzVlVGQlNTeERRVUZETEdkQ1FVRm5R
aXhEUVVOcVFpeGpRVUZqTEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExG
TkJRVk1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1IwRkJSeXhKUVVO
cVJDeExRVUZMTEVkQlFVY3NTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1z
UjBGQlJ5eEhRVUZITEV0QlFVc3NRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJRU3hCUVVGRExFTkJR
VU1zUTBGQlF6dExRVU16UkN4TlFVRk5MRWxCUVVrc1NVRkJTU3hMUVVGTExHZENRVUZuUWl4RlFV
RkZPMEZCUTNCRExGVkJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVN
N1MwRkRka0lzVFVGQlRTeEpRVUZKTEVsQlFVa3NTMEZCU3l4bFFVRmxMRVZCUVVVN1FVRkRia01z
VlVGQlNTeERRVUZETEdkQ1FVRm5RaXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzB0QlF5OUNM
RTFCUVUwN1FVRkRUQ3hWUVVGSkxFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1RVRkJUU3hEUVVGRExF
TkJRVU03UzBGREwwSTdSMEZEUmpzN096dEJRVWxFTEZWQlFWRXNSVUZCUlN4clFrRkJhMEk3TzBG
QlJUVkNMR2xDUVVGbExFVkJRVVVzZVVKQlFWTXNWMEZCVnl4RlFVRkZMRTlCUVU4c1JVRkJSVHRC
UVVNNVF5eFJRVUZKTEZGQlFWRXNSMEZCUnl4WFFVRlhMRU5CUVVNc1VVRkJVVHRSUVVGRkxFdEJR
VXNzV1VGQlFUdFJRVUZGTEZGQlFWRXNXVUZCUVN4RFFVRkRPenRCUVVWeVJDeFRRVUZMTEVsQlFV
a3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzVVVGQlVTeERRVUZETEUx
QlFVMHNSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZG
TzBGQlF5OURMRmRCUVVzc1IwRkJSeXhSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdR
VUZEY0VJc1kwRkJVU3hIUVVGSExFbEJRVWtzU1VGQlNTeERRVUZETEZGQlFWRXNSVUZCUlN4RFFV
RkRPenRCUVVVdlFpeFZRVUZKTEZGQlFWRXNSMEZCUnl4SlFVRkpMRU5CUVVNc2IwSkJRVzlDTEVO
QlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN08wRkJSV2hFTEZWQlFVa3NVVUZCVVN4SlFVRkpMRWxC
UVVrc1JVRkJSVHRCUVVOd1FpeFpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRkZCUVZFc1EwRkJR
eXhKUVVGSkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTTdRVUZETDBJc1dVRkJTU3hMUVVGTExF
ZEJRVWNzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4UlFVRlJMRU5CUVVNc1RVRkJUU3hEUVVG
RE8wRkJRM3BETEdGQlFVc3NRMEZCUXl4TFFVRkxMRWRCUVVjc1MwRkJTeXhEUVVGRE8wRkJRM0JD
TEdGQlFVc3NRMEZCUXl4SlFVRkpMRWRCUVVjc1UwRkJVeXhIUVVGSExFdEJRVXNzUTBGQlF6dEJR
VU12UWl4WlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExGRkJRVkVzUTBGQlF5eExRVUZMTEVOQlFV
TXNSMEZCUnl4UlFVRlJMRU5CUVVNc1QwRkJUeXhEUVVGRExFdEJRVXNzUlVGQlJTeFBRVUZQTEVW
QlFVVXNTVUZCU1N4RFFVRkRMRTlCUVU4c1JVRkJSU3hEUVVGRExFbEJRVWtzUTBGQlF5eFZRVUZW
TEVOQlFVTXNRMEZCUXp0QlFVTm9SeXhaUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEZWQlFWVXNR
MEZCUXl4TFFVRkxMRU5CUVVNc1IwRkJSeXhSUVVGUkxFTkJRVU1zVlVGQlZTeERRVUZETzBGQlEz
SkVMRmxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zV1VGQldTeERRVUZETEV0QlFVc3NRMEZCUXl4
SFFVRkhMRXRCUVVzc1EwRkJRenM3UVVGRmVrTXNXVUZCU1N4RFFVRkRMRk5CUVZNc1IwRkJSeXhK
UVVGSkxFTkJRVU1zVTBGQlV5eEpRVUZKTEZGQlFWRXNRMEZCUXl4VFFVRlRMRU5CUVVNN1FVRkRk
RVFzV1VGQlNTeERRVUZETEdOQlFXTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1kwRkJZeXhKUVVGSkxG
RkJRVkVzUTBGQlF5eGpRVUZqTEVOQlFVTTdRVUZEY2tVc1lVRkJTeXhEUVVGRExGTkJRVk1zUjBG
QlJ5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRPMEZCUTJwRExHRkJRVXNzUTBGQlF5eGpRVUZq
TEVkQlFVY3NTVUZCU1N4RFFVRkRMR05CUVdNc1EwRkJRenRQUVVNMVF5eE5RVUZOTzBGQlEwd3NZ
VUZCU3l4RFFVRkRMRXRCUVVzc1IwRkJSeXhSUVVGUkxFTkJRVU1zUzBGQlN5eERRVUZETzBGQlF6
ZENMR0ZCUVVzc1EwRkJReXhKUVVGSkxFZEJRVWNzVTBGQlV5eEhRVUZITEZGQlFWRXNRMEZCUXl4
TFFVRkxMRU5CUVVNN08wRkJSWGhETEZsQlFVa3NRMEZCUXl4VFFVRlRMRWRCUVVjc1NVRkJTU3hE
UVVGRExGTkJRVk1zU1VGQlNTeFJRVUZSTEVOQlFVTXNVMEZCVXl4RFFVRkRPMEZCUTNSRUxGbEJR
VWtzUTBGQlF5eGpRVUZqTEVkQlFVY3NTVUZCU1N4RFFVRkRMR05CUVdNc1NVRkJTU3hSUVVGUkxF
TkJRVU1zWTBGQll5eERRVUZETzA5QlEzUkZPMHRCUTBZN1IwRkRSanRCUVVORUxITkNRVUZ2UWl4
RlFVRkZMRGhDUVVGVExFdEJRVXNzUlVGQlJUdEJRVU53UXl4VFFVRkxMRWxCUVVrc1EwRkJReXhI
UVVGSExFTkJRVU1zUlVGQlJTeEhRVUZITEVkQlFVY3NTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJR
eXhaUVVGWkxFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTXNSMEZCUnl4SFFVRkhMRVZCUVVVc1Ew
RkJReXhGUVVGRkxFVkJRVVU3UVVGRGNFVXNWVUZCU1N4WFFVRlhMRWRCUVVjc1NVRkJTU3hEUVVG
RExFOUJRVThzUTBGQlF5eFpRVUZaTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRMME1z
VlVGQlNTeFhRVUZYTEVsQlFVa3NWMEZCVnl4RFFVRkRMRTFCUVUwc1EwRkJReXhMUVVGTExFTkJR
VU1zUlVGQlJUdEJRVU0xUXl4bFFVRlBMRmRCUVZjc1EwRkJRenRQUVVOd1FqdExRVU5HTzBkQlEw
WTdPMEZCUlVRc2JVSkJRV2xDTEVWQlFVVXNNa0pCUVZNc1NVRkJTU3hGUVVGRk8wRkJRMmhETEZG
QlFVa3NTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJReXhYUVVGWExFTkJRVU1zVVVGQlVTeERRVUZE
TEVsQlFVa3NRMEZCUXp0UlFVTjJReXhoUVVGaExFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNT
MEZCU3l4RlFVRkZMRTFCUVUwc1JVRkJSU3hMUVVGTExFTkJRVU1zVjBGQlZ5eERRVUZETEVOQlFV
TTdPMEZCUlRkRUxGRkJRVWtzU1VGQlNTeERRVUZETEdOQlFXTXNTVUZCU1N4SlFVRkpMRU5CUVVN
c1UwRkJVeXhGUVVGRk8wRkJRM3BETEcxQ1FVRmhMRU5CUVVNc1NVRkJTU3hEUVVGRExHRkJRV0Vz
UTBGQlF5eERRVUZETzB0QlEyNURPMEZCUTBRc1VVRkJTU3hKUVVGSkxFTkJRVU1zVTBGQlV5eEZR
VUZGTzBGQlEyeENMRzFDUVVGaExFTkJRVU1zU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4RFFV
RkRPMHRCUXpsQ096dEJRVVZFTEZkQlFVOHNiMEpCUVc5Q0xFZEJRVWNzWVVGQllTeERRVUZETEVs
QlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhIUVVGSExFTkJRVU03UjBGRE9VUTdPMEZC
UlVRc1lVRkJWeXhGUVVGRkxIRkNRVUZUTEVsQlFVa3NSVUZCUlR0QlFVTXhRaXhSUVVGSkxFTkJR
VU1zU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSVHRCUVVONlFp
eFZRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFbEJRVWtzUTBG
QlF6dEJRVU0xUWl4VlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZK
TEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1MwRkRhRU03UjBGRFJqczdRVUZGUkN4TlFVRkpM
RVZCUVVVc1kwRkJVeXhKUVVGSkxFVkJRVVU3UVVGRGJrSXNVVUZCU1N4RlFVRkZMRWxCUVVrc1dV
RkJXU3hQUVVGUExFTkJRVUVzUVVGQlF5eEZRVUZGTzBGQlF6bENMRlZCUVVrc1IwRkJSeXhKUVVG
SkxFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRM
UVVNdlFqczdRVUZGUkN4UlFVRkpMRU5CUVVNc1YwRkJWeXhEUVVGRExFbEJRVWtzUTBGQlF5eEpR
VUZKTEVOQlFVTXNRMEZCUXp0QlFVTTFRaXhYUVVGUExFbEJRVWtzUTBGQlF6dEhRVU5pT3p0QlFV
VkVMR3RDUVVGblFpeEZRVUZGTERCQ1FVRlRMRWxCUVVrc1JVRkJSVHRCUVVNdlFpeFJRVUZKTEVO
QlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZE
TEVOQlFVTTdSMEZET1VJN08wRkJSVVFzV1VGQlZTeEZRVUZGTEc5Q1FVRlRMRTFCUVUwc1JVRkJS
VHRCUVVNelFpeFJRVUZKTEVsQlFVa3NRMEZCUXl4alFVRmpMRVZCUVVVN1FVRkRka0lzVlVGQlNT
eERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUTFvc1NVRkJTU3hEUVVGRExHTkJRV01zUTBG
QlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRmxCUVZrc1EwRkJReXhKUVVGSkxFTkJRVU1z
WTBGQll5eERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMR1ZCUVdVc1EwRkJReXhEUVVGRExFTkJR
VU03UVVGRE9VWXNWVUZCU1N4RFFVRkRMR05CUVdNc1IwRkJSeXhUUVVGVExFTkJRVU03UzBGRGFr
TTdPMEZCUlVRc1VVRkJTU3hOUVVGTkxFVkJRVVU3UVVGRFZpeFZRVUZKTEVOQlFVTXNUVUZCVFN4
RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dExRVU14UWp0SFFVTkdPenRC
UVVWRUxHTkJRVmtzUlVGQlJTeHpRa0ZCVXl4UlFVRlJMRVZCUVVVN1FVRkRMMElzVVVGQlNTeE5R
VUZOTEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNN1VVRkRaQ3hMUVVGTExGbEJRVUU3VVVGRFRD
eFpRVUZaTEZsQlFVRTdVVUZEV2l4WFFVRlhMRmxCUVVFc1EwRkJRenM3TzBGQlIyaENMRkZCUVVr
c1EwRkJReXhKUVVGSkxFTkJRVU1zVVVGQlVTeEZRVUZGTEVWQlFVVTdRVUZEY0VJc1dVRkJUU3d5
UWtGQll5dzBRa0ZCTkVJc1EwRkJReXhEUVVGRE8wdEJRMjVFT3pzN1FVRkhSQ3hSUVVGSkxFZEJR
VWNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE96
dEJRVVU1UWl4UlFVRkpMRWRCUVVjc1dVRkJXU3hQUVVGUExFVkJRVVU3TzBGQlJURkNMRmRCUVVz
c1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXp0QlFVTndRaXha
UVVGTkxFZEJRVWNzUTBGQlF5eEhRVUZITEVWQlFVVXNTMEZCU3l4RFFVRkRMRU5CUVVNN1FVRkRk
RUlzYVVKQlFWY3NSMEZCUnl4SlFVRkpMRU5CUVVNN1MwRkRjRUlzVFVGQlRUczdRVUZGVEN4clFr
RkJXU3hIUVVGSExFbEJRVWtzUTBGQlF6dEJRVU53UWl4VlFVRkpMRXRCUVVrc1IwRkJSeXhKUVVG
SkxFTkJRVU1zVTBGQlV5eEZRVUZGTEVOQlFVTTdPMEZCUlRWQ0xGbEJRVTBzUjBGQlJ5eERRVUZE
TEVsQlFVa3NSVUZCUlN4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVWtzUTBGQlF5eEZR
VUZGTEV0QlFVc3NSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU03UVVGRGJF
UXNWMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJReXhSUVVGUkxFVkJRVVVzUTBGQlF6dExRVU42UWpz
N1FVRkZSQ3hSUVVGSkxFbEJRVWtzUjBGQlJ5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxC
UVVrc1JVRkJSU3hMUVVGTExFTkJRVU1zUTBGQlF6czdRVUZGZEVNc1VVRkJTU3hEUVVGRExGZEJR
VmNzUlVGQlJUdEJRVU5vUWl4VlFVRkpMRU5CUVVNc1VVRkJVU3hGUVVGRkxFTkJRVU03UzBGRGFr
STdRVUZEUkN4UlFVRkpMRmxCUVZrc1JVRkJSVHRCUVVOb1FpeFZRVUZKTEVOQlFVTXNVMEZCVXl4
RlFVRkZMRU5CUVVNN1MwRkRiRUk3UVVGRFJDeFJRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFC
UVUwc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRM
RU5CUVVNN1IwRkRja003TzBGQlJVUXNWMEZCVXl4RlFVRkZMSEZDUVVGWE8wRkJRM0JDTEZGQlFV
a3NRMEZCUXl4VFFVRlRMRVZCUVVVc1EwRkJRenRCUVVOcVFpeFJRVUZKTEVsQlFVa3NRMEZCUXl4
VFFVRlRMRWRCUVVjc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eE5RVUZOTEVWQlFVVTdRVUZC
UlN4VlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFbEJRVWtzUTBGQlF5eFBRVUZQTEVkQlFVY3NT
VUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRE8wdEJRVVU3UVVGRE9VWXNWMEZCVHl4SlFV
RkpMRU5CUVVNc1dVRkJXU3hGUVVGRkxFTkJRVU03UjBGRE5VSTdRVUZEUkN4alFVRlpMRVZCUVVV
c2QwSkJRVmM3UVVGRGRrSXNWMEZCVHl4UFFVRlBMRWRCUVVjc1NVRkJTU3hEUVVGRExGTkJRVk1z
UTBGQlF6dEhRVU5xUXp0QlFVTkVMR0ZCUVZjc1JVRkJSU3gxUWtGQlZ6dEJRVU4wUWl4UlFVRkpM
RmRCUVZjc1IwRkJSeXhKUVVGSkxFTkJRVU1zVjBGQlZ5eERRVUZETzBGQlEyNURMRkZCUVVrc1Ew
RkJReXhYUVVGWExFZEJRVWNzUlVGQlJTeERRVUZETzBGQlEzUkNMRk5CUVVzc1NVRkJTU3hEUVVG
RExFZEJRVWNzUTBGQlF5eEZRVUZGTEVkQlFVY3NSMEZCUnl4WFFVRlhMRU5CUVVNc1RVRkJUU3hG
UVVGRkxFTkJRVU1zUjBGQlJ5eEhRVUZITEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVN1FVRkRk
RVFzVlVGQlNTeExRVUZMTEVkQlFVY3NWMEZCVnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE96
dEJRVVV6UWl4VlFVRkpMRXRCUVVzc1dVRkJXU3hQUVVGUExFVkJRVVU3UVVGRE5VSXNXVUZCU1N4
RFFVRkRMRmxCUVZrc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdUMEZE
TDBJc1RVRkJUVHRCUVVOTUxGbEJRVWtzUzBGQlN5eEhRVUZITEVsQlFVa3NRMEZCUXl4VFFVRlRM
RVZCUVVVc1EwRkJRenRCUVVNM1FpeFpRVUZKTEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNc1Mw
RkJTeXhGUVVGRkxFdEJRVXNzUlVGQlJTeExRVUZMTEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVN
c1EwRkJRenRCUVVNMVF5eFpRVUZKTEVOQlFVTXNXVUZCV1N4RFFVRkRMRWxCUVVrc1EwRkJReXhM
UVVGTExFTkJRVU1zUTBGQlF6dFBRVU12UWp0TFFVTkdPMGRCUTBZN1FVRkRSQ3hWUVVGUkxFVkJR
VVVzYjBKQlFWYzdRVUZEYmtJc1YwRkJUeXhKUVVGSkxFTkJRVU1zVjBGQlZ5eERRVUZETEUxQlFV
MHNRMEZCUXp0SFFVTm9RenM3UVVGRlJDeFZRVUZSTEVWQlFVVXNhMEpCUVZNc1QwRkJUeXhGUVVG
Rk8wRkJRekZDTEZGQlFVa3NUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhSUVVGUkxFVkJRVVU3
VVVGRGVFSXNTVUZCU1N4SFFVRkhMRU5CUVVNc1RVRkJUU3hIUVVGSExFbEJRVWtzUTBGQlF5eFhR
VUZYTEVkQlFVY3NTVUZCU1N4RFFVRkRMRmxCUVZrc1EwRkJRU3hEUVVGRkxFZEJRVWNzUlVGQlJT
eERRVUZET3p0QlFVVnFSU3hSUVVGSkxFTkJRVU1zVDBGQlR5eEpRVUZMTEVsQlFVa3NXVUZCV1N4
UFFVRlBMRUZCUVVNc1JVRkJSVHRCUVVONlF5eGhRVUZQTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5C
UVVNN1MwRkRia0lzVFVGQlRUdEJRVU5NTEZWQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVN08wRkJS
VmdzV1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4VFFVRlRMRVZCUVVVN1FVRkRia0lzWjBKQlFV
MHNNa0pCUVdNc2JVSkJRVzFDTEVOQlFVTXNRMEZCUXp0VFFVTXhRenRCUVVORUxGbEJRVWtzUTBG
QlF5eFRRVUZUTEVWQlFVVXNRMEZCUXp0UFFVTnNRanRCUVVORUxHRkJRVThzU1VGQlNTeERRVUZE
TzB0QlEySTdSMEZEUmpzN1FVRkZSQ3hWUVVGUkxFVkJRVVVzYjBKQlFWYzdRVUZEYmtJc1VVRkJT
U3hMUVVGTExFZEJRVWtzU1VGQlNTeERRVUZETEZGQlFWRXNSVUZCUlN4SFFVRkhMRWxCUVVrc1Ew
RkJReXhYUVVGWExFZEJRVWNzU1VGQlNTeERRVUZETEZsQlFWa3NRVUZCUXp0UlFVTm9SU3hKUVVG
SkxFZEJRVWNzUzBGQlN5eERRVUZETEV0QlFVc3NRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhE
UVVGRExFTkJRVU03T3p0QlFVZHVReXhSUVVGSkxFbEJRVWtzV1VGQldTeFBRVUZQTEVWQlFVVTdR
VUZETTBJc1lVRkJUeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETzB0QlEyNUNMRTFCUVUwN1FV
RkRUQ3hoUVVGUExFbEJRVWtzUTBGQlF6dExRVU5pTzBkQlEwWTdPMEZCUlVRc1lVRkJWeXhGUVVG
RkxIRkNRVUZUTEU5QlFVOHNSVUZCUlR0QlFVTTNRaXhSUVVGSkxFbEJRVWtzUTBGQlF5eFRRVUZU
TEVsQlFVa3NUMEZCVHl4RlFVRkZPMEZCUXpkQ0xHRkJRVThzVTBGQlV5eEhRVUZITEU5QlFVOHNS
MEZCUnl4SFFVRkhMRU5CUVVNN1MwRkRiRU1zVFVGQlRUdEJRVU5NTEdGQlFVOHNUMEZCVHl4SFFV
RkhMRTlCUVU4c1EwRkJRenRMUVVNeFFqdEhRVU5HT3p0QlFVVkVMR05CUVZrc1JVRkJSU3h6UWtG
QlV5eEhRVUZITEVWQlFVVTdRVUZETVVJc1YwRkJUeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZE
TEZsQlFWa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRIUVVOMFF6czdRVUZGUkN4bFFVRmhM
RVZCUVVVc2RVSkJRVk1zUjBGQlJ5eEZRVUZGTzBGQlF6TkNMRmRCUVU4c1NVRkJTU3hEUVVGRExF
MUJRVTBzUTBGQlF5eGhRVUZoTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1IwRkRka003TzBG
QlJVUXNWMEZCVXl4RlFVRkZMRzFDUVVGVExFbEJRVWtzUlVGQlJUdEJRVU40UWl4UlFVRkpMRWRC
UVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRP
MEZCUXpkQ0xGRkJRVWtzUjBGQlJ5eEZRVUZGTzBGQlExQXNVMEZCUnl4RFFVRkRMR05CUVdNc1JV
RkJSU3hEUVVGRE8wRkJRM0pDTEdGQlFVOHNSMEZCUnl4RFFVRkRPMHRCUTFvN08wRkJSVVFzVDBG
QlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNz
U1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJR
VU03UVVGRGJFUXNUMEZCUnl4RFFVRkRMRk5CUVZNc1IwRkJSeXhKUVVGSkxFTkJRVU03UVVGRGNr
SXNUMEZCUnl4RFFVRkRMR05CUVdNc1IwRkJSeXhEUVVGRExFTkJRVU03TzBGQlJYWkNMRmRCUVU4
c1IwRkJSeXhEUVVGRE8wZEJRMW83TzBGQlJVUXNZVUZCVnl4RlFVRkZMSEZDUVVGVExGTkJRVk1z
UlVGQlJTeEpRVUZKTEVWQlFVVXNWMEZCVnl4RlFVRkZPMEZCUTJ4RUxGRkJRVWtzVFVGQlRTeEhR
VUZITEVWQlFVVTdVVUZEV0N4VlFVRlZMRWRCUVVjc1NVRkJTU3hEUVVGRExHVkJRV1VzUTBGQlF5
eEpRVUZKTEVWQlFVVXNVMEZCVXl4RlFVRkZMRTFCUVUwc1JVRkJSU3hYUVVGWExFTkJRVU1zUTBG
QlF6dEJRVU0xUlN4UlFVRkpMRmRCUVZjc1IwRkJSeXhKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZE
TEZOQlFWTXNSVUZCUlN4SlFVRkpMRVZCUVVVc1VVRkJVU3hEUVVGRE8xRkJRM2hFTEZkQlFWY3NS
MEZCUnl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGSkxFbEJRVWtzUTBGQlF5eFhRVUZYTEVOQlFV
TXNRMEZCUXl4RFFVRkRMRzFDUVVGakxFbEJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTXNRMEZCUXl4
RFFVRkRMRmRCUVZFc1EwRkJRenM3UVVGRmFrY3NWMEZCVHp0QlFVTk1MRmxCUVUwc1JVRkJSU3hO
UVVGTk8wRkJRMlFzWjBKQlFWVXNSVUZCUlN4VlFVRlZPMEZCUTNSQ0xGVkJRVWtzUlVGQlJTeFhR
VUZYTzBGQlEycENMR2RDUVVGVkxFVkJRVVVzUTBGQlF5eFhRVUZYTEVOQlFVTXNRMEZCUXl4TlFV
Rk5MRU5CUVVNc1RVRkJUU3hEUVVGRE8wdEJRM3BETEVOQlFVTTdSMEZEU0RzN1FVRkZSQ3hoUVVG
WExFVkJRVVVzY1VKQlFWTXNUVUZCVFN4RlFVRkZMRk5CUVZNc1JVRkJSU3hOUVVGTkxFVkJRVVU3
UVVGREwwTXNVVUZCU1N4UFFVRlBMRWRCUVVjc1JVRkJSVHRSUVVOYUxGRkJRVkVzUjBGQlJ5eEZR
VUZGTzFGQlEySXNTMEZCU3l4SFFVRkhMRVZCUVVVN1VVRkRWaXhIUVVGSExFZEJRVWNzUlVGQlJU
dFJRVU5TTEZWQlFWVXNSMEZCUnl4RFFVRkRMRTFCUVUwN1VVRkRjRUlzUzBGQlN5eFpRVUZCTEVO
QlFVTTdPMEZCUlZZc1VVRkJTU3hWUVVGVkxFVkJRVVU3UVVGRFpDeFpRVUZOTEVkQlFVY3NSVUZC
UlN4RFFVRkRPMHRCUTJJN08wRkJSVVFzVjBGQlR5eERRVUZETEVsQlFVa3NSMEZCUnl4SlFVRkpM
RU5CUVVNc1dVRkJXU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzBGQlEzcERMRmRCUVU4c1Ew
RkJReXhKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETEZGQlFWRXNSVUZCUlN4RFFVRkRPenRCUVVV
dlFpeFJRVUZKTEVsQlFVa3NRMEZCUXl4UlFVRlJMRVZCUVVVN1FVRkRha0lzWVVGQlR5eERRVUZE
TEU5QlFVOHNSMEZCUnl4SlFVRkpMRU5CUVVNc1VVRkJVU3hGUVVGRkxFTkJRVU03UzBGRGJrTTdR
VUZEUkN4UlFVRkpMRWxCUVVrc1EwRkJReXhaUVVGWkxFVkJRVVU3UVVGRGNrSXNZVUZCVHl4RFFV
RkRMRk5CUVZNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVVVGQlVTeEZRVUZGTEVOQlFVTTdRVUZEY0VN
c1lVRkJUeXhEUVVGRExGbEJRVmtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RlFVRkZMRU5C
UVVNN1MwRkRlRU03TzBGQlJVUXNVVUZCU1N4UFFVRlBMRWRCUVVjc1NVRkJTU3hEUVVGRExGRkJR
VkVzUlVGQlJUdFJRVU42UWl4UFFVRlBMRWRCUVVjc1NVRkJTU3hEUVVGRExGRkJRVkVzUlVGQlJT
eERRVUZET3pzN08wRkJTVGxDTEZGQlFVa3NUMEZCVHl4SlFVRkpMRTlCUVU4c1JVRkJSVHRCUVVO
MFFpeGhRVUZQTEVOQlFVTXNSVUZCUlN4SFFVRkhMRTlCUVU4c1NVRkJTU3huUWtGQlowSXNRMEZC
UXp0QlFVTjZReXhoUVVGUExFTkJRVU1zVDBGQlR5eEhRVUZITEU5QlFVOHNTVUZCU1N4blFrRkJa
MElzUTBGQlF6dExRVU12UXpzN096dEJRVWxFTEZGQlFVa3NRMEZCUXl4SFFVRkhMRk5CUVZNc1Ew
RkJRenRCUVVOc1FpeFhRVUZQTEVOQlFVTXNSVUZCUlN4RlFVRkZPMEZCUTFZc1YwRkJTeXhIUVVG
SExFbEJRVWtzUTBGQlF5eFJRVUZSTEVWQlFVVXNRMEZCUXp0QlFVTjRRaXhaUVVGTkxFTkJRVU1z
UTBGQlF5eERRVUZETEVkQlFVY3NTMEZCU3l4RFFVRkRPenRCUVVWc1FpeFZRVUZKTEVsQlFVa3NR
MEZCUXl4UlFVRlJMRVZCUVVVN1FVRkRha0lzVjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFV
RkhMRWxCUVVrc1EwRkJReXhSUVVGUkxFVkJRVVVzUTBGQlF6dFBRVU14UWp0QlFVTkVMRlZCUVVr
c1NVRkJTU3hEUVVGRExGbEJRVmtzUlVGQlJUdEJRVU55UWl4aFFVRkxMRU5CUVVNc1EwRkJReXhE
UVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEZGQlFWRXNSVUZCUlN4RFFVRkRPMEZCUXpOQ0xHZENR
VUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExGRkJRVkVzUlVGQlJT
eERRVUZETzA5QlF5OUNPMHRCUTBZN08wRkJSVVFzVVVGQlNTeFZRVUZWTEVWQlFVVTdRVUZEWkN4
aFFVRlBMRU5CUVVNc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNZVUZC
WVN4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8wdEJRMnhFT3p0QlFVVkVMRkZCUVVrc1NVRkJT
U3hEUVVGRExGRkJRVkVzUlVGQlJUdEJRVU5xUWl4aFFVRlBMRU5CUVVNc1IwRkJSeXhIUVVGSExF
bEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNZVUZCWVN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVG
RE8wdEJRemxETzBGQlEwUXNVVUZCU1N4SlFVRkpMRU5CUVVNc1dVRkJXU3hGUVVGRk8wRkJRM0pD
TEdGQlFVOHNRMEZCUXl4TFFVRkxMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eGhR
VUZoTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1FVRkRha1FzWVVGQlR5eERRVUZETEZGQlFW
RXNSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExHRkJRV0VzUTBGQlF5eFJRVUZSTEVO
QlFVTXNRMEZCUXp0TFFVTjRSRHM3UVVGRlJDeFJRVUZKTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5C
UVVNc1NVRkJTU3hGUVVGRk8wRkJRM0pDTEdGQlFVOHNRMEZCUXl4SlFVRkpMRWRCUVVjc1RVRkJU
U3hEUVVGRE8wdEJRM1pDTzBGQlEwUXNVVUZCU1N4SlFVRkpMRU5CUVVNc1kwRkJZeXhGUVVGRk8w
RkJRM1pDTEdGQlFVOHNRMEZCUXl4WFFVRlhMRWRCUVVjc1lVRkJZU3hEUVVGRE8wdEJRM0pETzBG
QlEwUXNWMEZCVHl4UFFVRlBMRU5CUVVNN1IwRkRhRUk3TzBGQlJVUXNhVUpCUVdVc1JVRkJSU3g1
UWtGQlV5eE5RVUZOTEVWQlFVVXNVMEZCVXl4RlFVRkZMRTFCUVUwc1JVRkJSU3hYUVVGWExFVkJR
VVU3UVVGRGFFVXNVVUZCU1N4UFFVRlBMRWRCUVVjc1NVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF5
eE5RVUZOTEVWQlFVVXNVMEZCVXl4RlFVRkZMRTFCUVUwc1EwRkJReXhEUVVGRE8wRkJRekZFTEZk
QlFVOHNSMEZCUnl4SlFVRkpMRU5CUVVNc1lVRkJZU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZE
TzBGQlEzUkRMRkZCUVVrc1YwRkJWeXhGUVVGRk8wRkJRMllzVlVGQlNTeERRVUZETEZkQlFWY3NR
MEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJRenRCUVVNMVFpeFpRVUZOTEVOQlFVTXNTVUZCU1N4RFFV
RkRMRk5CUVZNc1EwRkJReXhEUVVGRE8wRkJRM1pDTEdGQlFVOHNRMEZCUXl4VlFVRlZMRVZCUVVV
c1QwRkJUeXhEUVVGRExFTkJRVU03UzBGRE9VSXNUVUZCVFN4SlFVRkpMRTFCUVUwc1JVRkJSVHRC
UVVOcVFpeFpRVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8wRkJR
M0pDTEdGQlFVOHNSVUZCUlN4RFFVRkRPMHRCUTFnc1RVRkJUVHRCUVVOTUxHRkJRVThzVDBGQlR5
eERRVUZETzB0QlEyaENPMGRCUTBZN1EwRkRSaXhEUVVGRE96dEJRVWRHTEVGQlFVTXNRMEZCUVN4
WlFVRlhPMEZCUTFZc1RVRkJUU3hoUVVGaExFZEJRVWNzUTBGRGNFSXNiMEpCUVc5Q0xFZEJRM0JD
TERKQ1FVRXlRaXhIUVVNelFpeDVRa0ZCZVVJc1IwRkRla0lzT0VKQlFUaENMRWRCUXpsQ0xHMUNR
VUZ0UWl4SFFVTnVRaXhuUWtGQlowSXNSMEZEYUVJc2RVSkJRWFZDTEVkQlEzWkNMREJDUVVFd1Fp
eEhRVU14UWl4clEwRkJhME1zUjBGRGJFTXNNRUpCUVRCQ0xFZEJRekZDTEdsRFFVRnBReXhIUVVO
cVF5dzJRa0ZCTmtJc1IwRkROMElzSzBKQlFTdENMRWRCUXk5Q0xIbERRVUY1UXl4SFFVTjZReXgx
UTBGQmRVTXNSMEZEZGtNc2EwSkJRV3RDTEVOQlFVRXNRMEZEYkVJc1MwRkJTeXhEUVVGRExFZEJR
VWNzUTBGQlF5eERRVUZET3p0QlFVVmlMRTFCUVUwc1lVRkJZU3hIUVVGSExHdENRVUZyUWl4RFFV
RkRMR05CUVdNc1IwRkJSeXhGUVVGRkxFTkJRVU03TzBGQlJUZEVMRTlCUVVzc1NVRkJTU3hEUVVG
RExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4aFFVRmhMRU5CUVVNc1RVRkJUU3hG
UVVGRkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVN1FVRkRj
RVFzYVVKQlFXRXNRMEZCUXl4aFFVRmhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5
eEpRVUZKTEVOQlFVTTdSMEZEZUVNN1EwRkRSaXhEUVVGQkxFVkJRVVVzUTBGQlJUczdRVUZGVEN4
clFrRkJhMElzUTBGQlF5dzJRa0ZCTmtJc1IwRkJSeXhWUVVGVExFbEJRVWtzUlVGQlJUdEJRVU5v
UlN4VFFVRlBMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTXNZMEZCWXl4RFFVRkRMRWxCUVVrc1EwRkJR
eXhKUVVGSkxFRkJRVU1zTkVKQlFUUkNMRU5CUVVVc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5
eERRVUZETzBOQlF6bEdMRU5CUVVNN08wRkJSVVlzVTBGQlV5eFpRVUZaTEVOQlFVTXNaVUZCWlN4
RlFVRkZMRkZCUVZFc1JVRkJSU3hMUVVGTExFVkJRVVVzU1VGQlNTeEZRVUZGTzBGQlF6VkVMRTFC
UVVrc1MwRkJTeXhIUVVGSExGRkJRVkVzUTBGQlF5eFJRVUZSTEVWQlFVVTdUVUZETTBJc1EwRkJR
eXhIUVVGSExFTkJRVU03VFVGRFRDeEhRVUZITEVkQlFVY3NTMEZCU3l4RFFVRkRMRTFCUVUwc1Ew
RkJRenRCUVVOMlFpeE5RVUZKTEdWQlFXVXNSVUZCUlR0QlFVTnVRaXhQUVVGSExFVkJRVVVzUTBG
QlF6dEhRVU5RT3p0QlFVVkVMRk5CUVU4c1EwRkJReXhIUVVGSExFZEJRVWNzUlVGQlJTeERRVUZE
TEVWQlFVVXNSVUZCUlR0QlFVTnVRaXhUUVVGTExFZEJRVWNzVVVGQlVTeERRVUZETEZWQlFWVXNR
MEZCUXl4TFFVRkxMRVZCUVVVc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVsQlFV
a3NRMEZCUXl4RFFVRkRPMGRCUTNCRU96dEJRVVZFTEUxQlFVa3NaVUZCWlN4RlFVRkZPMEZCUTI1
Q0xGZEJRVThzUTBGQlF5eFJRVUZSTEVOQlFVTXNVMEZCVXl4RFFVRkRMR3RDUVVGclFpeERRVUZE
TEVWQlFVVXNSMEZCUnl4RlFVRkZMRXRCUVVzc1JVRkJSU3hKUVVGSkxFVkJRVVVzVVVGQlVTeERR
VUZETEZsQlFWa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJT
eEhRVUZITEVOQlFVTXNRMEZCUXp0SFFVTjZSeXhOUVVGTk8wRkJRMHdzVjBGQlR5eExRVUZMTEVO
QlFVTTdSMEZEWkR0RFFVTkdPenR4UWtGRll5eHJRa0ZCYTBJaUxDSm1hV3hsSWpvaWFtRjJZWE5q
Y21sd2RDMWpiMjF3YVd4bGNpNXFjeUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSW1sdGNHOXlk
Q0I3SUVOUFRWQkpURVZTWDFKRlZrbFRTVTlPTENCU1JWWkpVMGxQVGw5RFNFRk9SMFZUSUgwZ1pu
SnZiU0FuTGk0dlltRnpaU2M3WEc1cGJYQnZjblFnUlhoalpYQjBhVzl1SUdaeWIyMGdKeTR1TDJW
NFkyVndkR2x2YmljN1hHNXBiWEJ2Y25RZ2UybHpRWEp5WVhsOUlHWnliMjBnSnk0dUwzVjBhV3h6
Snp0Y2JtbHRjRzl5ZENCRGIyUmxSMlZ1SUdaeWIyMGdKeTR2WTI5a1pTMW5aVzRuTzF4dVhHNW1k
VzVqZEdsdmJpQk1hWFJsY21Gc0tIWmhiSFZsS1NCN1hHNGdJSFJvYVhNdWRtRnNkV1VnUFNCMllX
eDFaVHRjYm4xY2JseHVablZ1WTNScGIyNGdTbUYyWVZOamNtbHdkRU52YlhCcGJHVnlLQ2tnZTMx
Y2JseHVTbUYyWVZOamNtbHdkRU52YlhCcGJHVnlMbkJ5YjNSdmRIbHdaU0E5SUh0Y2JpQWdMeThn
VUZWQ1RFbERJRUZRU1RvZ1dXOTFJR05oYmlCdmRtVnljbWxrWlNCMGFHVnpaU0J0WlhSb2IyUnpJ
R2x1SUdFZ2MzVmlZMnhoYzNNZ2RHOGdjSEp2ZG1sa1pWeHVJQ0F2THlCaGJIUmxjbTVoZEdsMlpT
QmpiMjF3YVd4bFpDQm1iM0p0Y3lCbWIzSWdibUZ0WlNCc2IyOXJkWEFnWVc1a0lHSjFabVpsY21s
dVp5QnpaVzFoYm5ScFkzTmNiaUFnYm1GdFpVeHZiMnQxY0RvZ1puVnVZM1JwYjI0b2NHRnlaVzUw
TENCdVlXMWxMeW9nTENCMGVYQmxLaThwSUh0Y2JpQWdJQ0JwWmlBb1NtRjJZVk5qY21sd2RFTnZi
WEJwYkdWeUxtbHpWbUZzYVdSS1lYWmhVMk55YVhCMFZtRnlhV0ZpYkdWT1lXMWxLRzVoYldVcEtT
QjdYRzRnSUNBZ0lDQnlaWFIxY200Z1czQmhjbVZ1ZEN3Z0p5NG5MQ0J1WVcxbFhUdGNiaUFnSUNC
OUlHVnNjMlVnZTF4dUlDQWdJQ0FnY21WMGRYSnVJRnR3WVhKbGJuUXNJQ2RiSnl3Z1NsTlBUaTV6
ZEhKcGJtZHBabmtvYm1GdFpTa3NJQ2RkSjEwN1hHNGdJQ0FnZlZ4dUlDQjlMRnh1SUNCa1pYQjBh
R1ZrVEc5dmEzVndPaUJtZFc1amRHbHZiaWh1WVcxbEtTQjdYRzRnSUNBZ2NtVjBkWEp1SUZ0MGFH
bHpMbUZzYVdGellXSnNaU2duWTI5dWRHRnBibVZ5TG14dmIydDFjQ2NwTENBbktHUmxjSFJvY3l3
Z1hDSW5MQ0J1WVcxbExDQW5YQ0lwSjEwN1hHNGdJSDBzWEc1Y2JpQWdZMjl0Y0dsc1pYSkpibVp2
T2lCbWRXNWpkR2x2YmlncElIdGNiaUFnSUNCamIyNXpkQ0J5WlhacGMybHZiaUE5SUVOUFRWQkpU
RVZTWDFKRlZrbFRTVTlPTEZ4dUlDQWdJQ0FnSUNBZ0lIWmxjbk5wYjI1eklEMGdVa1ZXU1ZOSlQw
NWZRMGhCVGtkRlUxdHlaWFpwYzJsdmJsMDdYRzRnSUNBZ2NtVjBkWEp1SUZ0eVpYWnBjMmx2Yml3
Z2RtVnljMmx2Ym5OZE8xeHVJQ0I5TEZ4dVhHNGdJR0Z3Y0dWdVpGUnZRblZtWm1WeU9pQm1kVzVq
ZEdsdmJpaHpiM1Z5WTJVc0lHeHZZMkYwYVc5dUxDQmxlSEJzYVdOcGRDa2dlMXh1SUNBZ0lDOHZJ
RVp2Y21ObElHRWdjMjkxY21ObElHRnpJSFJvYVhNZ2MybHRjR3hwWm1sbGN5QjBhR1VnYldWeVoy
VWdiRzluYVdNdVhHNGdJQ0FnYVdZZ0tDRnBjMEZ5Y21GNUtITnZkWEpqWlNrcElIdGNiaUFnSUNB
Z0lITnZkWEpqWlNBOUlGdHpiM1Z5WTJWZE8xeHVJQ0FnSUgxY2JpQWdJQ0J6YjNWeVkyVWdQU0Iw
YUdsekxuTnZkWEpqWlM1M2NtRndLSE52ZFhKalpTd2diRzlqWVhScGIyNHBPMXh1WEc0Z0lDQWdh
V1lnS0hSb2FYTXVaVzUyYVhKdmJtMWxiblF1YVhOVGFXMXdiR1VwSUh0Y2JpQWdJQ0FnSUhKbGRI
VnliaUJiSjNKbGRIVnliaUFuTENCemIzVnlZMlVzSUNjN0oxMDdYRzRnSUNBZ2ZTQmxiSE5sSUds
bUlDaGxlSEJzYVdOcGRDa2dlMXh1SUNBZ0lDQWdMeThnVkdocGN5QnBjeUJoSUdOaGMyVWdkMmhs
Y21VZ2RHaGxJR0oxWm1abGNpQnZjR1Z5WVhScGIyNGdiMk5qZFhKeklHRnpJR0VnWTJocGJHUWdi
MllnWVc1dmRHaGxjbHh1SUNBZ0lDQWdMeThnWTI5dWMzUnlkV04wTENCblpXNWxjbUZzYkhrZ1lu
SmhZMlZ6TGlCWFpTQm9ZWFpsSUhSdklHVjRjR3hwWTJsMGJIa2diM1YwY0hWMElIUm9aWE5sSUdK
MVptWmxjbHh1SUNBZ0lDQWdMeThnYjNCbGNtRjBhVzl1Y3lCMGJ5Qmxibk4xY21VZ2RHaGhkQ0Iw
YUdVZ1pXMXBkSFJsWkNCamIyUmxJR2R2WlhNZ2FXNGdkR2hsSUdOdmNuSmxZM1FnYkc5allYUnBi
MjR1WEc0Z0lDQWdJQ0J5WlhSMWNtNGdXeWRpZFdabVpYSWdLejBnSnl3Z2MyOTFjbU5sTENBbk95
ZGRPMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNCemIzVnlZMlV1WVhCd1pXNWtWRzlDZFda
bVpYSWdQU0IwY25WbE8xeHVJQ0FnSUNBZ2NtVjBkWEp1SUhOdmRYSmpaVHRjYmlBZ0lDQjlYRzRn
SUgwc1hHNWNiaUFnYVc1cGRHbGhiR2w2WlVKMVptWmxjam9nWm5WdVkzUnBiMjRvS1NCN1hHNGdJ
Q0FnY21WMGRYSnVJSFJvYVhNdWNYVnZkR1ZrVTNSeWFXNW5LQ2NuS1R0Y2JpQWdmU3hjYmlBZ0x5
OGdSVTVFSUZCVlFreEpReUJCVUVsY2JseHVJQ0JqYjIxd2FXeGxPaUJtZFc1amRHbHZiaWhsYm5a
cGNtOXViV1Z1ZEN3Z2IzQjBhVzl1Y3l3Z1kyOXVkR1Y0ZEN3Z1lYTlBZbXBsWTNRcElIdGNiaUFn
SUNCMGFHbHpMbVZ1ZG1seWIyNXRaVzUwSUQwZ1pXNTJhWEp2Ym0xbGJuUTdYRzRnSUNBZ2RHaHBj
eTV2Y0hScGIyNXpJRDBnYjNCMGFXOXVjenRjYmlBZ0lDQjBhR2x6TG5OMGNtbHVaMUJoY21GdGN5
QTlJSFJvYVhNdWIzQjBhVzl1Y3k1emRISnBibWRRWVhKaGJYTTdYRzRnSUNBZ2RHaHBjeTUwY21G
amEwbGtjeUE5SUhSb2FYTXViM0IwYVc5dWN5NTBjbUZqYTBsa2N6dGNiaUFnSUNCMGFHbHpMbkJ5
WldOdmJYQnBiR1VnUFNBaFlYTlBZbXBsWTNRN1hHNWNiaUFnSUNCMGFHbHpMbTVoYldVZ1BTQjBh
R2x6TG1WdWRtbHliMjV0Wlc1MExtNWhiV1U3WEc0Z0lDQWdkR2hwY3k1cGMwTm9hV3hrSUQwZ0lT
RmpiMjUwWlhoME8xeHVJQ0FnSUhSb2FYTXVZMjl1ZEdWNGRDQTlJR052Ym5SbGVIUWdmSHdnZTF4
dUlDQWdJQ0FnWkdWamIzSmhkRzl5Y3pvZ1cxMHNYRzRnSUNBZ0lDQndjbTluY21GdGN6b2dXMTBz
WEc0Z0lDQWdJQ0JsYm5acGNtOXViV1Z1ZEhNNklGdGRYRzRnSUNBZ2ZUdGNibHh1SUNBZ0lIUm9h
WE11Y0hKbFlXMWliR1VvS1R0Y2JseHVJQ0FnSUhSb2FYTXVjM1JoWTJ0VGJHOTBJRDBnTUR0Y2Jp
QWdJQ0IwYUdsekxuTjBZV05yVm1GeWN5QTlJRnRkTzF4dUlDQWdJSFJvYVhNdVlXeHBZWE5sY3lB
OUlIdDlPMXh1SUNBZ0lIUm9hWE11Y21WbmFYTjBaWEp6SUQwZ2V5QnNhWE4wT2lCYlhTQjlPMXh1
SUNBZ0lIUm9hWE11YUdGemFHVnpJRDBnVzEwN1hHNGdJQ0FnZEdocGN5NWpiMjF3YVd4bFUzUmhZ
MnNnUFNCYlhUdGNiaUFnSUNCMGFHbHpMbWx1YkdsdVpWTjBZV05ySUQwZ1cxMDdYRzRnSUNBZ2RH
aHBjeTVpYkc5amExQmhjbUZ0Y3lBOUlGdGRPMXh1WEc0Z0lDQWdkR2hwY3k1amIyMXdhV3hsUTJo
cGJHUnlaVzRvWlc1MmFYSnZibTFsYm5Rc0lHOXdkR2x2Ym5NcE8xeHVYRzRnSUNBZ2RHaHBjeTUx
YzJWRVpYQjBhSE1nUFNCMGFHbHpMblZ6WlVSbGNIUm9jeUI4ZkNCbGJuWnBjbTl1YldWdWRDNTFj
MlZFWlhCMGFITWdmSHdnWlc1MmFYSnZibTFsYm5RdWRYTmxSR1ZqYjNKaGRHOXljeUI4ZkNCMGFH
bHpMbTl3ZEdsdmJuTXVZMjl0Y0dGME8xeHVJQ0FnSUhSb2FYTXVkWE5sUW14dlkydFFZWEpoYlhN
Z1BTQjBhR2x6TG5WelpVSnNiMk5yVUdGeVlXMXpJSHg4SUdWdWRtbHliMjV0Wlc1MExuVnpaVUpz
YjJOclVHRnlZVzF6TzF4dVhHNGdJQ0FnYkdWMElHOXdZMjlrWlhNZ1BTQmxiblpwY205dWJXVnVk
QzV2Y0dOdlpHVnpMRnh1SUNBZ0lDQWdJQ0J2Y0dOdlpHVXNYRzRnSUNBZ0lDQWdJR1pwY25OMFRH
OWpMRnh1SUNBZ0lDQWdJQ0JwTEZ4dUlDQWdJQ0FnSUNCc08xeHVYRzRnSUNBZ1ptOXlJQ2hwSUQw
Z01Dd2diQ0E5SUc5d1kyOWtaWE11YkdWdVozUm9PeUJwSUR3Z2JEc2dhU3NyS1NCN1hHNGdJQ0Fn
SUNCdmNHTnZaR1VnUFNCdmNHTnZaR1Z6VzJsZE8xeHVYRzRnSUNBZ0lDQjBhR2x6TG5OdmRYSmpa
UzVqZFhKeVpXNTBURzlqWVhScGIyNGdQU0J2Y0dOdlpHVXViRzlqTzF4dUlDQWdJQ0FnWm1seWMz
Uk1iMk1nUFNCbWFYSnpkRXh2WXlCOGZDQnZjR052WkdVdWJHOWpPMXh1SUNBZ0lDQWdkR2hwYzF0
dmNHTnZaR1V1YjNCamIyUmxYUzVoY0hCc2VTaDBhR2x6TENCdmNHTnZaR1V1WVhKbmN5azdYRzRn
SUNBZ2ZWeHVYRzRnSUNBZ0x5OGdSbXgxYzJnZ1lXNTVJSFJ5WVdsc2FXNW5JR052Ym5SbGJuUWdk
R2hoZENCdGFXZG9kQ0JpWlNCd1pXNWthVzVuTGx4dUlDQWdJSFJvYVhNdWMyOTFjbU5sTG1OMWNu
SmxiblJNYjJOaGRHbHZiaUE5SUdacGNuTjBURzlqTzF4dUlDQWdJSFJvYVhNdWNIVnphRk52ZFhK
alpTZ25KeWs3WEc1Y2JpQWdJQ0F2S2lCcGMzUmhibUoxYkNCcFoyNXZjbVVnYm1WNGRDQXFMMXh1
SUNBZ0lHbG1JQ2gwYUdsekxuTjBZV05yVTJ4dmRDQjhmQ0IwYUdsekxtbHViR2x1WlZOMFlXTnJM
bXhsYm1kMGFDQjhmQ0IwYUdsekxtTnZiWEJwYkdWVGRHRmpheTVzWlc1bmRHZ3BJSHRjYmlBZ0lD
QWdJSFJvY205M0lHNWxkeUJGZUdObGNIUnBiMjRvSjBOdmJYQnBiR1VnWTI5dGNHeGxkR1ZrSUhk
cGRHZ2dZMjl1ZEdWdWRDQnNaV1owSUc5dUlITjBZV05ySnlrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0Fn
YVdZZ0tDRjBhR2x6TG1SbFkyOXlZWFJ2Y25NdWFYTkZiWEIwZVNncEtTQjdYRzRnSUNBZ0lDQjBh
R2x6TG5WelpVUmxZMjl5WVhSdmNuTWdQU0IwY25WbE8xeHVYRzRnSUNBZ0lDQjBhR2x6TG1SbFky
OXlZWFJ2Y25NdWNISmxjR1Z1WkNnbmRtRnlJR1JsWTI5eVlYUnZjbk1nUFNCamIyNTBZV2x1WlhJ
dVpHVmpiM0poZEc5eWN6dGNYRzRuS1R0Y2JpQWdJQ0FnSUhSb2FYTXVaR1ZqYjNKaGRHOXljeTV3
ZFhOb0tDZHlaWFIxY200Z1ptNDdKeWs3WEc1Y2JpQWdJQ0FnSUdsbUlDaGhjMDlpYW1WamRDa2dl
MXh1SUNBZ0lDQWdJQ0IwYUdsekxtUmxZMjl5WVhSdmNuTWdQU0JHZFc1amRHbHZiaTVoY0hCc2VT
aDBhR2x6TENCYkoyWnVKeXdnSjNCeWIzQnpKeXdnSjJOdmJuUmhhVzVsY2ljc0lDZGtaWEIwYURB
bkxDQW5aR0YwWVNjc0lDZGliRzlqYTFCaGNtRnRjeWNzSUNka1pYQjBhSE1uTENCMGFHbHpMbVJs
WTI5eVlYUnZjbk11YldWeVoyVW9LVjBwTzF4dUlDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJ
Q0FnZEdocGN5NWtaV052Y21GMGIzSnpMbkJ5WlhCbGJtUW9KMloxYm1OMGFXOXVLR1p1TENCd2Nt
OXdjeXdnWTI5dWRHRnBibVZ5TENCa1pYQjBhREFzSUdSaGRHRXNJR0pzYjJOclVHRnlZVzF6TENC
a1pYQjBhSE1wSUh0Y1hHNG5LVHRjYmlBZ0lDQWdJQ0FnZEdocGN5NWtaV052Y21GMGIzSnpMbkIx
YzJnb0ozMWNYRzRuS1R0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTVrWldOdmNtRjBiM0p6SUQwZ2RHaHBj
eTVrWldOdmNtRjBiM0p6TG0xbGNtZGxLQ2s3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmU0JsYkhObElI
dGNiaUFnSUNBZ0lIUm9hWE11WkdWamIzSmhkRzl5Y3lBOUlIVnVaR1ZtYVc1bFpEdGNiaUFnSUNC
OVhHNWNiaUFnSUNCc1pYUWdabTRnUFNCMGFHbHpMbU55WldGMFpVWjFibU4wYVc5dVEyOXVkR1Y0
ZENoaGMwOWlhbVZqZENrN1hHNGdJQ0FnYVdZZ0tDRjBhR2x6TG1selEyaHBiR1FwSUh0Y2JpQWdJ
Q0FnSUd4bGRDQnlaWFFnUFNCN1hHNGdJQ0FnSUNBZ0lHTnZiWEJwYkdWeU9pQjBhR2x6TG1OdmJY
QnBiR1Z5U1c1bWJ5Z3BMRnh1SUNBZ0lDQWdJQ0J0WVdsdU9pQm1ibHh1SUNBZ0lDQWdmVHRjYmx4
dUlDQWdJQ0FnYVdZZ0tIUm9hWE11WkdWamIzSmhkRzl5Y3lrZ2UxeHVJQ0FnSUNBZ0lDQnlaWFF1
YldGcGJsOWtJRDBnZEdocGN5NWtaV052Y21GMGIzSnpPeUFnSUM4dklHVnpiR2x1ZEMxa2FYTmhZ
bXhsTFd4cGJtVWdZMkZ0Wld4allYTmxYRzRnSUNBZ0lDQWdJSEpsZEM1MWMyVkVaV052Y21GMGIz
SnpJRDBnZEhKMVpUdGNiaUFnSUNBZ0lIMWNibHh1SUNBZ0lDQWdiR1YwSUh0d2NtOW5jbUZ0Y3l3
Z1pHVmpiM0poZEc5eWMzMGdQU0IwYUdsekxtTnZiblJsZUhRN1hHNGdJQ0FnSUNCbWIzSWdLR2tn
UFNBd0xDQnNJRDBnY0hKdlozSmhiWE11YkdWdVozUm9PeUJwSUR3Z2JEc2dhU3NyS1NCN1hHNGdJ
Q0FnSUNBZ0lHbG1JQ2h3Y205bmNtRnRjMXRwWFNrZ2UxeHVJQ0FnSUNBZ0lDQWdJSEpsZEZ0cFhT
QTlJSEJ5YjJkeVlXMXpXMmxkTzF4dUlDQWdJQ0FnSUNBZ0lHbG1JQ2hrWldOdmNtRjBiM0p6VzJs
ZEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUmJhU0FySUNkZlpDZGRJRDBnWkdWamIzSmhkRzl5
YzF0cFhUdGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRDNTFjMlZFWldOdmNtRjBiM0p6SUQwZ2RISjFa
VHRjYmlBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMWNibHh1SUNBZ0lD
QWdhV1lnS0hSb2FYTXVaVzUyYVhKdmJtMWxiblF1ZFhObFVHRnlkR2xoYkNrZ2UxeHVJQ0FnSUNB
Z0lDQnlaWFF1ZFhObFVHRnlkR2xoYkNBOUlIUnlkV1U3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdJQ0Jw
WmlBb2RHaHBjeTV2Y0hScGIyNXpMbVJoZEdFcElIdGNiaUFnSUNBZ0lDQWdjbVYwTG5WelpVUmhk
R0VnUFNCMGNuVmxPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdhV1lnS0hSb2FYTXVkWE5sUkdWd2RH
aHpLU0I3WEc0Z0lDQWdJQ0FnSUhKbGRDNTFjMlZFWlhCMGFITWdQU0IwY25WbE8xeHVJQ0FnSUNB
Z2ZWeHVJQ0FnSUNBZ2FXWWdLSFJvYVhNdWRYTmxRbXh2WTJ0UVlYSmhiWE1wSUh0Y2JpQWdJQ0Fn
SUNBZ2NtVjBMblZ6WlVKc2IyTnJVR0Z5WVcxeklEMGdkSEoxWlR0Y2JpQWdJQ0FnSUgxY2JpQWdJ
Q0FnSUdsbUlDaDBhR2x6TG05d2RHbHZibk11WTI5dGNHRjBLU0I3WEc0Z0lDQWdJQ0FnSUhKbGRD
NWpiMjF3WVhRZ1BTQjBjblZsTzF4dUlDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNCcFppQW9JV0Z6VDJK
cVpXTjBLU0I3WEc0Z0lDQWdJQ0FnSUhKbGRDNWpiMjF3YVd4bGNpQTlJRXBUVDA0dWMzUnlhVzVu
YVdaNUtISmxkQzVqYjIxd2FXeGxjaWs3WEc1Y2JpQWdJQ0FnSUNBZ2RHaHBjeTV6YjNWeVkyVXVZ
M1Z5Y21WdWRFeHZZMkYwYVc5dUlEMGdlM04wWVhKME9pQjdiR2x1WlRvZ01Td2dZMjlzZFcxdU9p
QXdmWDA3WEc0Z0lDQWdJQ0FnSUhKbGRDQTlJSFJvYVhNdWIySnFaV04wVEdsMFpYSmhiQ2h5WlhR
cE8xeHVYRzRnSUNBZ0lDQWdJR2xtSUNodmNIUnBiMjV6TG5OeVkwNWhiV1VwSUh0Y2JpQWdJQ0Fn
SUNBZ0lDQnlaWFFnUFNCeVpYUXVkRzlUZEhKcGJtZFhhWFJvVTI5MWNtTmxUV0Z3S0h0bWFXeGxP
aUJ2Y0hScGIyNXpMbVJsYzNST1lXMWxmU2s3WEc0Z0lDQWdJQ0FnSUNBZ2NtVjBMbTFoY0NBOUlI
SmxkQzV0WVhBZ0ppWWdjbVYwTG0xaGNDNTBiMU4wY21sdVp5Z3BPMXh1SUNBZ0lDQWdJQ0I5SUdW
c2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUhKbGRDQTlJSEpsZEM1MGIxTjBjbWx1WnlncE8xeHVJQ0Fn
SUNBZ0lDQjlYRzRnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQnlaWFF1WTI5dGNHbHNa
WEpQY0hScGIyNXpJRDBnZEdocGN5NXZjSFJwYjI1ek8xeHVJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lD
QnlaWFIxY200Z2NtVjBPMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnWm00
N1hHNGdJQ0FnZlZ4dUlDQjlMRnh1WEc0Z0lIQnlaV0Z0WW14bE9pQm1kVzVqZEdsdmJpZ3BJSHRj
YmlBZ0lDQXZMeUIwY21GamF5QjBhR1VnYkdGemRDQmpiMjUwWlhoMElIQjFjMmhsWkNCcGJuUnZJ
SEJzWVdObElIUnZJR0ZzYkc5M0lITnJhWEJ3YVc1bklIUm9aVnh1SUNBZ0lDOHZJR2RsZEVOdmJu
UmxlSFFnYjNCamIyUmxJSGRvWlc0Z2FYUWdkMjkxYkdRZ1ltVWdZU0J1YjI5d1hHNGdJQ0FnZEdo
cGN5NXNZWE4wUTI5dWRHVjRkQ0E5SURBN1hHNGdJQ0FnZEdocGN5NXpiM1Z5WTJVZ1BTQnVaWGNn
UTI5a1pVZGxiaWgwYUdsekxtOXdkR2x2Ym5NdWMzSmpUbUZ0WlNrN1hHNGdJQ0FnZEdocGN5NWta
V052Y21GMGIzSnpJRDBnYm1WM0lFTnZaR1ZIWlc0b2RHaHBjeTV2Y0hScGIyNXpMbk55WTA1aGJX
VXBPMXh1SUNCOUxGeHVYRzRnSUdOeVpXRjBaVVoxYm1OMGFXOXVRMjl1ZEdWNGREb2dablZ1WTNS
cGIyNG9ZWE5QWW1wbFkzUXBJSHRjYmlBZ0lDQnNaWFFnZG1GeVJHVmpiR0Z5WVhScGIyNXpJRDBn
SnljN1hHNWNiaUFnSUNCc1pYUWdiRzlqWVd4eklEMGdkR2hwY3k1emRHRmphMVpoY25NdVkyOXVZ
MkYwS0hSb2FYTXVjbVZuYVhOMFpYSnpMbXhwYzNRcE8xeHVJQ0FnSUdsbUlDaHNiMk5oYkhNdWJH
VnVaM1JvSUQ0Z01Da2dlMXh1SUNBZ0lDQWdkbUZ5UkdWamJHRnlZWFJwYjI1eklDczlJQ2NzSUNj
Z0t5QnNiMk5oYkhNdWFtOXBiaWduTENBbktUdGNiaUFnSUNCOVhHNWNiaUFnSUNBdkx5QkhaVzVs
Y21GMFpTQnRhVzVwYldsNlpYSWdZV3hwWVhNZ2JXRndjR2x1WjNOY2JpQWdJQ0F2TDF4dUlDQWdJ
Qzh2SUZkb1pXNGdkWE5wYm1jZ2RISjFaU0JUYjNWeVkyVk9iMlJsY3l3Z2RHaHBjeUIzYVd4c0lI
VndaR0YwWlNCaGJHd2djbVZtWlhKbGJtTmxjeUIwYnlCMGFHVWdaMmwyWlc0Z1lXeHBZWE5jYmlB
Z0lDQXZMeUJoY3lCMGFHVWdjMjkxY21ObElHNXZaR1Z6SUdGeVpTQnlaWFZ6WldRZ2FXNGdjMmww
ZFM0Z1JtOXlJSFJvWlNCdWIyNHRjMjkxY21ObElHNXZaR1VnWTI5dGNHbHNZWFJwYjI0Z2JXOWta
U3hjYmlBZ0lDQXZMeUJoYkdsaGMyVnpJSGRwYkd3Z2JtOTBJR0psSUhWelpXUXNJR0oxZENCMGFH
bHpJR05oYzJVZ2FYTWdZV3h5WldGa2VTQmlaV2x1WnlCeWRXNGdiMjRnZEdobElHTnNhV1Z1ZENC
aGJtUmNiaUFnSUNBdkx5QjNaU0JoY21WdUozUWdZMjl1WTJWeWJpQmhZbTkxZENCdGFXNXBiV2w2
YVc1bklIUm9aU0IwWlcxd2JHRjBaU0J6YVhwbExseHVJQ0FnSUd4bGRDQmhiR2xoYzBOdmRXNTBJ
RDBnTUR0Y2JpQWdJQ0JtYjNJZ0tHeGxkQ0JoYkdsaGN5QnBiaUIwYUdsekxtRnNhV0Z6WlhNcElI
c2dJQ0FnTHk4Z1pYTnNhVzUwTFdScGMyRmliR1V0YkdsdVpTQm5kV0Z5WkMxbWIzSXRhVzVjYmlB
Z0lDQWdJR3hsZENCdWIyUmxJRDBnZEdocGN5NWhiR2xoYzJWelcyRnNhV0Z6WFR0Y2JseHVJQ0Fn
SUNBZ2FXWWdLSFJvYVhNdVlXeHBZWE5sY3k1b1lYTlBkMjVRY205d1pYSjBlU2hoYkdsaGN5a2dK
aVlnYm05a1pTNWphR2xzWkhKbGJpQW1KaUJ1YjJSbExuSmxabVZ5Wlc1alpVTnZkVzUwSUQ0Z01T
a2dlMXh1SUNBZ0lDQWdJQ0IyWVhKRVpXTnNZWEpoZEdsdmJuTWdLejBnSnl3Z1lXeHBZWE1uSUNz
Z0tDc3JZV3hwWVhORGIzVnVkQ2tnS3lBblBTY2dLeUJoYkdsaGN6dGNiaUFnSUNBZ0lDQWdibTlr
WlM1amFHbHNaSEpsYmxzd1hTQTlJQ2RoYkdsaGN5Y2dLeUJoYkdsaGMwTnZkVzUwTzF4dUlDQWdJ
Q0FnZlZ4dUlDQWdJSDFjYmx4dUlDQWdJR3hsZENCd1lYSmhiWE1nUFNCYkoyTnZiblJoYVc1bGNp
Y3NJQ2RrWlhCMGFEQW5MQ0FuYUdWc2NHVnljeWNzSUNkd1lYSjBhV0ZzY3ljc0lDZGtZWFJoSjEw
N1hHNWNiaUFnSUNCcFppQW9kR2hwY3k1MWMyVkNiRzlqYTFCaGNtRnRjeUI4ZkNCMGFHbHpMblZ6
WlVSbGNIUm9jeWtnZTF4dUlDQWdJQ0FnY0dGeVlXMXpMbkIxYzJnb0oySnNiMk5yVUdGeVlXMXpK
eWs3WEc0Z0lDQWdmVnh1SUNBZ0lHbG1JQ2gwYUdsekxuVnpaVVJsY0hSb2N5a2dlMXh1SUNBZ0lD
QWdjR0Z5WVcxekxuQjFjMmdvSjJSbGNIUm9jeWNwTzF4dUlDQWdJSDFjYmx4dUlDQWdJQzh2SUZC
bGNtWnZjbTBnWVNCelpXTnZibVFnY0dGemN5QnZkbVZ5SUhSb1pTQnZkWFJ3ZFhRZ2RHOGdiV1Z5
WjJVZ1kyOXVkR1Z1ZENCM2FHVnVJSEJ2YzNOcFlteGxYRzRnSUNBZ2JHVjBJSE52ZFhKalpTQTlJ
SFJvYVhNdWJXVnlaMlZUYjNWeVkyVW9kbUZ5UkdWamJHRnlZWFJwYjI1ektUdGNibHh1SUNBZ0lH
bG1JQ2hoYzA5aWFtVmpkQ2tnZTF4dUlDQWdJQ0FnY0dGeVlXMXpMbkIxYzJnb2MyOTFjbU5sS1R0
Y2JseHVJQ0FnSUNBZ2NtVjBkWEp1SUVaMWJtTjBhVzl1TG1Gd2NHeDVLSFJvYVhNc0lIQmhjbUZ0
Y3lrN1hHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQjBhR2x6TG5OdmRYSmpa
UzUzY21Gd0tGc25ablZ1WTNScGIyNG9KeXdnY0dGeVlXMXpMbXB2YVc0b0p5d25LU3dnSnlrZ2Ux
eGNiaUFnSnl3Z2MyOTFjbU5sTENBbmZTZGRLVHRjYmlBZ0lDQjlYRzRnSUgwc1hHNGdJRzFsY21k
bFUyOTFjbU5sT2lCbWRXNWpkR2x2YmloMllYSkVaV05zWVhKaGRHbHZibk1wSUh0Y2JpQWdJQ0Jz
WlhRZ2FYTlRhVzF3YkdVZ1BTQjBhR2x6TG1WdWRtbHliMjV0Wlc1MExtbHpVMmx0Y0d4bExGeHVJ
Q0FnSUNBZ0lDQmhjSEJsYm1SUGJteDVJRDBnSVhSb2FYTXVabTl5WTJWQ2RXWm1aWElzWEc0Z0lD
QWdJQ0FnSUdGd2NHVnVaRVpwY25OMExGeHVYRzRnSUNBZ0lDQWdJSE52ZFhKalpWTmxaVzRzWEc0
Z0lDQWdJQ0FnSUdKMVptWmxjbE4wWVhKMExGeHVJQ0FnSUNBZ0lDQmlkV1ptWlhKRmJtUTdYRzRn
SUNBZ2RHaHBjeTV6YjNWeVkyVXVaV0ZqYUNnb2JHbHVaU2tnUFQ0Z2UxeHVJQ0FnSUNBZ2FXWWdL
R3hwYm1VdVlYQndaVzVrVkc5Q2RXWm1aWElwSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLR0oxWm1abGNs
TjBZWEowS1NCN1hHNGdJQ0FnSUNBZ0lDQWdiR2x1WlM1d2NtVndaVzVrS0NjZ0lDc2dKeWs3WEc0
Z0lDQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUNBZ1luVm1abVZ5VTNSaGNuUWdQU0Jz
YVc1bE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJR0oxWm1abGNrVnVaQ0E5SUd4cGJtVTdY
RzRnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQnBaaUFvWW5WbVptVnlVM1JoY25RcElI
dGNiaUFnSUNBZ0lDQWdJQ0JwWmlBb0lYTnZkWEpqWlZObFpXNHBJSHRjYmlBZ0lDQWdJQ0FnSUNB
Z0lHRndjR1Z1WkVacGNuTjBJRDBnZEhKMVpUdGNiaUFnSUNBZ0lDQWdJQ0I5SUdWc2MyVWdlMXh1
SUNBZ0lDQWdJQ0FnSUNBZ1luVm1abVZ5VTNSaGNuUXVjSEpsY0dWdVpDZ25ZblZtWm1WeUlDczlJ
Q2NwTzF4dUlDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0JpZFdabVpYSkZibVF1WVdSa0tD
YzdKeWs3WEc0Z0lDQWdJQ0FnSUNBZ1luVm1abVZ5VTNSaGNuUWdQU0JpZFdabVpYSkZibVFnUFNC
MWJtUmxabWx1WldRN1hHNGdJQ0FnSUNBZ0lIMWNibHh1SUNBZ0lDQWdJQ0J6YjNWeVkyVlRaV1Z1
SUQwZ2RISjFaVHRjYmlBZ0lDQWdJQ0FnYVdZZ0tDRnBjMU5wYlhCc1pTa2dlMXh1SUNBZ0lDQWdJ
Q0FnSUdGd2NHVnVaRTl1YkhrZ1BTQm1ZV3h6WlR0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZW
eHVJQ0FnSUgwcE8xeHVYRzVjYmlBZ0lDQnBaaUFvWVhCd1pXNWtUMjVzZVNrZ2UxeHVJQ0FnSUNB
Z2FXWWdLR0oxWm1abGNsTjBZWEowS1NCN1hHNGdJQ0FnSUNBZ0lHSjFabVpsY2xOMFlYSjBMbkJ5
WlhCbGJtUW9KM0psZEhWeWJpQW5LVHRjYmlBZ0lDQWdJQ0FnWW5WbVptVnlSVzVrTG1Ga1pDZ25P
eWNwTzF4dUlDQWdJQ0FnZlNCbGJITmxJR2xtSUNnaGMyOTFjbU5sVTJWbGJpa2dlMXh1SUNBZ0lD
QWdJQ0IwYUdsekxuTnZkWEpqWlM1d2RYTm9LQ2R5WlhSMWNtNGdYQ0pjSWpzbktUdGNiaUFnSUNB
Z0lIMWNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnZG1GeVJHVmpiR0Z5WVhScGIyNXpJQ3M5
SUNjc0lHSjFabVpsY2lBOUlDY2dLeUFvWVhCd1pXNWtSbWx5YzNRZ1B5QW5KeUE2SUhSb2FYTXVh
VzVwZEdsaGJHbDZaVUoxWm1abGNpZ3BLVHRjYmx4dUlDQWdJQ0FnYVdZZ0tHSjFabVpsY2xOMFlY
SjBLU0I3WEc0Z0lDQWdJQ0FnSUdKMVptWmxjbE4wWVhKMExuQnlaWEJsYm1Rb0ozSmxkSFZ5YmlC
aWRXWm1aWElnS3lBbktUdGNiaUFnSUNBZ0lDQWdZblZtWm1WeVJXNWtMbUZrWkNnbk95Y3BPMXh1
SUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdkR2hwY3k1emIzVnlZMlV1Y0hWemFDZ25j
bVYwZFhKdUlHSjFabVpsY2pzbktUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNWNiaUFnSUNCcFpp
QW9kbUZ5UkdWamJHRnlZWFJwYjI1ektTQjdYRzRnSUNBZ0lDQjBhR2x6TG5OdmRYSmpaUzV3Y21W
d1pXNWtLQ2QyWVhJZ0p5QXJJSFpoY2tSbFkyeGhjbUYwYVc5dWN5NXpkV0p6ZEhKcGJtY29NaWtn
S3lBb1lYQndaVzVrUm1seWMzUWdQeUFuSnlBNklDYzdYRnh1SnlrcE8xeHVJQ0FnSUgxY2JseHVJ
Q0FnSUhKbGRIVnliaUIwYUdsekxuTnZkWEpqWlM1dFpYSm5aU2dwTzF4dUlDQjlMRnh1WEc0Z0lD
OHZJRnRpYkc5amExWmhiSFZsWFZ4dUlDQXZMMXh1SUNBdkx5QlBiaUJ6ZEdGamF5d2dZbVZtYjNK
bE9pQm9ZWE5vTENCcGJuWmxjbk5sTENCd2NtOW5jbUZ0TENCMllXeDFaVnh1SUNBdkx5QlBiaUJ6
ZEdGamF5d2dZV1owWlhJNklISmxkSFZ5YmlCMllXeDFaU0J2WmlCaWJHOWphMGhsYkhCbGNrMXBj
M05wYm1kY2JpQWdMeTljYmlBZ0x5OGdWR2hsSUhCMWNuQnZjMlVnYjJZZ2RHaHBjeUJ2Y0dOdlpH
VWdhWE1nZEc4Z2RHRnJaU0JoSUdKc2IyTnJJRzltSUhSb1pTQm1iM0p0WEc0Z0lDOHZJR0I3ZXlO
MGFHbHpMbVp2YjMxOUxpNHVlM3N2ZEdocGN5NW1iMjk5ZldBc0lISmxjMjlzZG1VZ2RHaGxJSFpo
YkhWbElHOW1JR0JtYjI5Z0xDQmhibVJjYmlBZ0x5OGdjbVZ3YkdGalpTQnBkQ0J2YmlCMGFHVWdj
M1JoWTJzZ2QybDBhQ0IwYUdVZ2NtVnpkV3gwSUc5bUlIQnliM0JsY214NVhHNGdJQzh2SUdsdWRt
OXJhVzVuSUdKc2IyTnJTR1ZzY0dWeVRXbHpjMmx1Wnk1Y2JpQWdZbXh2WTJ0V1lXeDFaVG9nWm5W
dVkzUnBiMjRvYm1GdFpTa2dlMXh1SUNBZ0lHeGxkQ0JpYkc5amEwaGxiSEJsY2sxcGMzTnBibWNn
UFNCMGFHbHpMbUZzYVdGellXSnNaU2duYUdWc2NHVnljeTVpYkc5amEwaGxiSEJsY2sxcGMzTnBi
bWNuS1N4Y2JpQWdJQ0FnSUNBZ2NHRnlZVzF6SUQwZ1czUm9hWE11WTI5dWRHVjRkRTVoYldVb01D
bGRPMXh1SUNBZ0lIUm9hWE11YzJWMGRYQklaV3h3WlhKQmNtZHpLRzVoYldVc0lEQXNJSEJoY21G
dGN5azdYRzVjYmlBZ0lDQnNaWFFnWW14dlkydE9ZVzFsSUQwZ2RHaHBjeTV3YjNCVGRHRmpheWdw
TzF4dUlDQWdJSEJoY21GdGN5NXpjR3hwWTJVb01Td2dNQ3dnWW14dlkydE9ZVzFsS1R0Y2JseHVJ
Q0FnSUhSb2FYTXVjSFZ6YUNoMGFHbHpMbk52ZFhKalpTNW1kVzVqZEdsdmJrTmhiR3dvWW14dlky
dElaV3h3WlhKTmFYTnphVzVuTENBblkyRnNiQ2NzSUhCaGNtRnRjeWtwTzF4dUlDQjlMRnh1WEc0
Z0lDOHZJRnRoYldKcFozVnZkWE5DYkc5amExWmhiSFZsWFZ4dUlDQXZMMXh1SUNBdkx5QlBiaUJ6
ZEdGamF5d2dZbVZtYjNKbE9pQm9ZWE5vTENCcGJuWmxjbk5sTENCd2NtOW5jbUZ0TENCMllXeDFa
Vnh1SUNBdkx5QkRiMjF3YVd4bGNpQjJZV3gxWlN3Z1ltVm1iM0psT2lCc1lYTjBTR1ZzY0dWeVBY
WmhiSFZsSUc5bUlHeGhjM1FnWm05MWJtUWdhR1ZzY0dWeUxDQnBaaUJoYm5sY2JpQWdMeThnVDI0
Z2MzUmhZMnNzSUdGbWRHVnlMQ0JwWmlCdWJ5QnNZWE4wU0dWc2NHVnlPaUJ6WVcxbElHRnpJRnRp
Ykc5amExWmhiSFZsWFZ4dUlDQXZMeUJQYmlCemRHRmpheXdnWVdaMFpYSXNJR2xtSUd4aGMzUkla
V3h3WlhJNklIWmhiSFZsWEc0Z0lHRnRZbWxuZFc5MWMwSnNiMk5yVm1Gc2RXVTZJR1oxYm1OMGFX
OXVLQ2tnZTF4dUlDQWdJQzh2SUZkbEozSmxJR0psYVc1bklHRWdZbWwwSUdOb1pXVnJlU0JoYm1R
Z2NtVjFjMmx1WnlCMGFHVWdiM0IwYVc5dWN5QjJZV3gxWlNCbWNtOXRJSFJvWlNCd2NtbHZjaUJs
ZUdWalhHNGdJQ0FnYkdWMElHSnNiMk5yU0dWc2NHVnlUV2x6YzJsdVp5QTlJSFJvYVhNdVlXeHBZ
WE5oWW14bEtDZG9aV3h3WlhKekxtSnNiMk5yU0dWc2NHVnlUV2x6YzJsdVp5Y3BMRnh1SUNBZ0lD
QWdJQ0J3WVhKaGJYTWdQU0JiZEdocGN5NWpiMjUwWlhoMFRtRnRaU2d3S1YwN1hHNGdJQ0FnZEdo
cGN5NXpaWFIxY0VobGJIQmxja0Z5WjNNb0p5Y3NJREFzSUhCaGNtRnRjeXdnZEhKMVpTazdYRzVj
YmlBZ0lDQjBhR2x6TG1ac2RYTm9TVzVzYVc1bEtDazdYRzVjYmlBZ0lDQnNaWFFnWTNWeWNtVnVk
Q0E5SUhSb2FYTXVkRzl3VTNSaFkyc29LVHRjYmlBZ0lDQndZWEpoYlhNdWMzQnNhV05sS0RFc0lE
QXNJR04xY25KbGJuUXBPMXh1WEc0Z0lDQWdkR2hwY3k1d2RYTm9VMjkxY21ObEtGdGNiaUFnSUNB
Z0lDQWdKMmxtSUNnaEp5d2dkR2hwY3k1c1lYTjBTR1ZzY0dWeUxDQW5LU0I3SUNjc1hHNGdJQ0Fn
SUNBZ0lDQWdZM1Z5Y21WdWRDd2dKeUE5SUNjc0lIUm9hWE11YzI5MWNtTmxMbVoxYm1OMGFXOXVR
MkZzYkNoaWJHOWphMGhsYkhCbGNrMXBjM05wYm1jc0lDZGpZV3hzSnl3Z2NHRnlZVzF6S1N4Y2Jp
QWdJQ0FnSUNBZ0ozMG5YU2s3WEc0Z0lIMHNYRzVjYmlBZ0x5OGdXMkZ3Y0dWdVpFTnZiblJsYm5S
ZFhHNGdJQzh2WEc0Z0lDOHZJRTl1SUhOMFlXTnJMQ0JpWldadmNtVTZJQzR1TGx4dUlDQXZMeUJQ
YmlCemRHRmpheXdnWVdaMFpYSTZJQzR1TGx4dUlDQXZMMXh1SUNBdkx5QkJjSEJsYm1SeklIUm9a
U0J6ZEhKcGJtY2dkbUZzZFdVZ2IyWWdZR052Ym5SbGJuUmdJSFJ2SUhSb1pTQmpkWEp5Wlc1MElH
SjFabVpsY2x4dUlDQmhjSEJsYm1SRGIyNTBaVzUwT2lCbWRXNWpkR2x2YmloamIyNTBaVzUwS1NC
N1hHNGdJQ0FnYVdZZ0tIUm9hWE11Y0dWdVpHbHVaME52Ym5SbGJuUXBJSHRjYmlBZ0lDQWdJR052
Ym5SbGJuUWdQU0IwYUdsekxuQmxibVJwYm1kRGIyNTBaVzUwSUNzZ1kyOXVkR1Z1ZER0Y2JpQWdJ
Q0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdkR2hwY3k1d1pXNWthVzVuVEc5allYUnBiMjRnUFNCMGFH
bHpMbk52ZFhKalpTNWpkWEp5Wlc1MFRHOWpZWFJwYjI0N1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnZEdo
cGN5NXdaVzVrYVc1blEyOXVkR1Z1ZENBOUlHTnZiblJsYm5RN1hHNGdJSDBzWEc1Y2JpQWdMeThn
VzJGd2NHVnVaRjFjYmlBZ0x5OWNiaUFnTHk4Z1QyNGdjM1JoWTJzc0lHSmxabTl5WlRvZ2RtRnNk
V1VzSUM0dUxseHVJQ0F2THlCUGJpQnpkR0ZqYXl3Z1lXWjBaWEk2SUM0dUxseHVJQ0F2TDF4dUlD
QXZMeUJEYjJWeVkyVnpJR0IyWVd4MVpXQWdkRzhnWVNCVGRISnBibWNnWVc1a0lHRndjR1Z1WkhN
Z2FYUWdkRzhnZEdobElHTjFjbkpsYm5RZ1luVm1abVZ5TGx4dUlDQXZMMXh1SUNBdkx5QkpaaUJn
ZG1Gc2RXVmdJR2x6SUhSeWRYUm9lU3dnYjNJZ01Dd2dhWFFnYVhNZ1kyOWxjbU5sWkNCcGJuUnZJ
R0VnYzNSeWFXNW5JR0Z1WkNCaGNIQmxibVJsWkZ4dUlDQXZMeUJQZEdobGNuZHBjMlVzSUhSb1pT
QmxiWEIwZVNCemRISnBibWNnYVhNZ1lYQndaVzVrWldSY2JpQWdZWEJ3Wlc1a09pQm1kVzVqZEds
dmJpZ3BJSHRjYmlBZ0lDQnBaaUFvZEdocGN5NXBjMGx1YkdsdVpTZ3BLU0I3WEc0Z0lDQWdJQ0Iw
YUdsekxuSmxjR3hoWTJWVGRHRmpheWdvWTNWeWNtVnVkQ2tnUFQ0Z1d5Y2dJVDBnYm5Wc2JDQS9J
Q2NzSUdOMWNuSmxiblFzSUNjZ09pQmNJbHdpSjEwcE8xeHVYRzRnSUNBZ0lDQjBhR2x6TG5CMWMy
aFRiM1Z5WTJVb2RHaHBjeTVoY0hCbGJtUlViMEoxWm1abGNpaDBhR2x6TG5CdmNGTjBZV05yS0Nr
cEtUdGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnYkdWMElHeHZZMkZzSUQwZ2RHaHBjeTV3
YjNCVGRHRmpheWdwTzF4dUlDQWdJQ0FnZEdocGN5NXdkWE5vVTI5MWNtTmxLRnNuYVdZZ0tDY3NJ
R3h2WTJGc0xDQW5JQ0U5SUc1MWJHd3BJSHNnSnl3Z2RHaHBjeTVoY0hCbGJtUlViMEoxWm1abGNp
aHNiMk5oYkN3Z2RXNWtaV1pwYm1Wa0xDQjBjblZsS1N3Z0p5QjlKMTBwTzF4dUlDQWdJQ0FnYVdZ
Z0tIUm9hWE11Wlc1MmFYSnZibTFsYm5RdWFYTlRhVzF3YkdVcElIdGNiaUFnSUNBZ0lDQWdkR2hw
Y3k1d2RYTm9VMjkxY21ObEtGc25aV3h6WlNCN0lDY3NJSFJvYVhNdVlYQndaVzVrVkc5Q2RXWm1a
WElvWENJbkoxd2lMQ0IxYm1SbFptbHVaV1FzSUhSeWRXVXBMQ0FuSUgwblhTazdYRzRnSUNBZ0lD
QjlYRzRnSUNBZ2ZWeHVJQ0I5TEZ4dVhHNGdJQzh2SUZ0aGNIQmxibVJGYzJOaGNHVmtYVnh1SUNB
dkwxeHVJQ0F2THlCUGJpQnpkR0ZqYXl3Z1ltVm1iM0psT2lCMllXeDFaU3dnTGk0dVhHNGdJQzh2
SUU5dUlITjBZV05yTENCaFpuUmxjam9nTGk0dVhHNGdJQzh2WEc0Z0lDOHZJRVZ6WTJGd1pTQmdk
bUZzZFdWZ0lHRnVaQ0JoY0hCbGJtUWdhWFFnZEc4Z2RHaGxJR0oxWm1abGNseHVJQ0JoY0hCbGJt
UkZjMk5oY0dWa09pQm1kVzVqZEdsdmJpZ3BJSHRjYmlBZ0lDQjBhR2x6TG5CMWMyaFRiM1Z5WTJV
b2RHaHBjeTVoY0hCbGJtUlViMEoxWm1abGNpaGNiaUFnSUNBZ0lDQWdXM1JvYVhNdVlXeHBZWE5o
WW14bEtDZGpiMjUwWVdsdVpYSXVaWE5qWVhCbFJYaHdjbVZ6YzJsdmJpY3BMQ0FuS0Njc0lIUm9h
WE11Y0c5d1UzUmhZMnNvS1N3Z0p5a25YU2twTzF4dUlDQjlMRnh1WEc0Z0lDOHZJRnRuWlhSRGIy
NTBaWGgwWFZ4dUlDQXZMMXh1SUNBdkx5QlBiaUJ6ZEdGamF5d2dZbVZtYjNKbE9pQXVMaTVjYmlB
Z0x5OGdUMjRnYzNSaFkyc3NJR0ZtZEdWeU9pQXVMaTVjYmlBZ0x5OGdRMjl0Y0dsc1pYSWdkbUZz
ZFdVc0lHRm1kR1Z5T2lCc1lYTjBRMjl1ZEdWNGREMWtaWEIwYUZ4dUlDQXZMMXh1SUNBdkx5QlRa
WFFnZEdobElIWmhiSFZsSUc5bUlIUm9aU0JnYkdGemRFTnZiblJsZUhSZ0lHTnZiWEJwYkdWeUlI
WmhiSFZsSUhSdklIUm9aU0JrWlhCMGFGeHVJQ0JuWlhSRGIyNTBaWGgwT2lCbWRXNWpkR2x2Ymlo
a1pYQjBhQ2tnZTF4dUlDQWdJSFJvYVhNdWJHRnpkRU52Ym5SbGVIUWdQU0JrWlhCMGFEdGNiaUFn
ZlN4Y2JseHVJQ0F2THlCYmNIVnphRU52Ym5SbGVIUmRYRzRnSUM4dlhHNGdJQzh2SUU5dUlITjBZ
V05yTENCaVpXWnZjbVU2SUM0dUxseHVJQ0F2THlCUGJpQnpkR0ZqYXl3Z1lXWjBaWEk2SUdOMWNu
SmxiblJEYjI1MFpYaDBMQ0F1TGk1Y2JpQWdMeTljYmlBZ0x5OGdVSFZ6YUdWeklIUm9aU0IyWVd4
MVpTQnZaaUIwYUdVZ1kzVnljbVZ1ZENCamIyNTBaWGgwSUc5dWRHOGdkR2hsSUhOMFlXTnJMbHh1
SUNCd2RYTm9RMjl1ZEdWNGREb2dablZ1WTNScGIyNG9LU0I3WEc0Z0lDQWdkR2hwY3k1d2RYTm9V
M1JoWTJ0TWFYUmxjbUZzS0hSb2FYTXVZMjl1ZEdWNGRFNWhiV1VvZEdocGN5NXNZWE4wUTI5dWRH
VjRkQ2twTzF4dUlDQjlMRnh1WEc0Z0lDOHZJRnRzYjI5cmRYQlBia052Ym5SbGVIUmRYRzRnSUM4
dlhHNGdJQzh2SUU5dUlITjBZV05yTENCaVpXWnZjbVU2SUM0dUxseHVJQ0F2THlCUGJpQnpkR0Zq
YXl3Z1lXWjBaWEk2SUdOMWNuSmxiblJEYjI1MFpYaDBXMjVoYldWZExDQXVMaTVjYmlBZ0x5OWNi
aUFnTHk4Z1RHOXZhM01nZFhBZ2RHaGxJSFpoYkhWbElHOW1JR0J1WVcxbFlDQnZiaUIwYUdVZ1kz
VnljbVZ1ZENCamIyNTBaWGgwSUdGdVpDQndkWE5vWlhOY2JpQWdMeThnYVhRZ2IyNTBieUIwYUdV
Z2MzUmhZMnN1WEc0Z0lHeHZiMnQxY0U5dVEyOXVkR1Y0ZERvZ1puVnVZM1JwYjI0b2NHRnlkSE1z
SUdaaGJITjVMQ0J6ZEhKcFkzUXNJSE5qYjNCbFpDa2dlMXh1SUNBZ0lHeGxkQ0JwSUQwZ01EdGNi
bHh1SUNBZ0lHbG1JQ2doYzJOdmNHVmtJQ1ltSUhSb2FYTXViM0IwYVc5dWN5NWpiMjF3WVhRZ0pp
WWdJWFJvYVhNdWJHRnpkRU52Ym5SbGVIUXBJSHRjYmlBZ0lDQWdJQzh2SUZSb1pTQmtaWEIwYUdW
a0lIRjFaWEo1SUdseklHVjRjR1ZqZEdWa0lIUnZJR2hoYm1Sc1pTQjBhR1VnZFc1a1pXWnBibVZr
SUd4dloybGpJR1p2Y2lCMGFHVWdjbTl2ZENCc1pYWmxiQ0IwYUdGMFhHNGdJQ0FnSUNBdkx5QnBj
eUJwYlhCc1pXMWxiblJsWkNCaVpXeHZkeXdnYzI4Z2QyVWdaWFpoYkhWaGRHVWdkR2hoZENCa2FY
SmxZM1JzZVNCcGJpQmpiMjF3WVhRZ2JXOWtaVnh1SUNBZ0lDQWdkR2hwY3k1d2RYTm9LSFJvYVhN
dVpHVndkR2hsWkV4dmIydDFjQ2h3WVhKMGMxdHBLeXRkS1NrN1hHNGdJQ0FnZlNCbGJITmxJSHRj
YmlBZ0lDQWdJSFJvYVhNdWNIVnphRU52Ym5SbGVIUW9LVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQjBh
R2x6TG5KbGMyOXNkbVZRWVhSb0tDZGpiMjUwWlhoMEp5d2djR0Z5ZEhNc0lHa3NJR1poYkhONUxD
QnpkSEpwWTNRcE8xeHVJQ0I5TEZ4dVhHNGdJQzh2SUZ0c2IyOXJkWEJDYkc5amExQmhjbUZ0WFZ4
dUlDQXZMMXh1SUNBdkx5QlBiaUJ6ZEdGamF5d2dZbVZtYjNKbE9pQXVMaTVjYmlBZ0x5OGdUMjRn
YzNSaFkyc3NJR0ZtZEdWeU9pQmliRzlqYTFCaGNtRnRXMjVoYldWZExDQXVMaTVjYmlBZ0x5OWNi
aUFnTHk4Z1RHOXZhM01nZFhBZ2RHaGxJSFpoYkhWbElHOW1JR0J3WVhKMGMyQWdiMjRnZEdobElH
ZHBkbVZ1SUdKc2IyTnJJSEJoY21GdElHRnVaQ0J3ZFhOb1pYTmNiaUFnTHk4Z2FYUWdiMjUwYnlC
MGFHVWdjM1JoWTJzdVhHNGdJR3h2YjJ0MWNFSnNiMk5yVUdGeVlXMDZJR1oxYm1OMGFXOXVLR0pz
YjJOclVHRnlZVzFKWkN3Z2NHRnlkSE1wSUh0Y2JpQWdJQ0IwYUdsekxuVnpaVUpzYjJOclVHRnlZ
VzF6SUQwZ2RISjFaVHRjYmx4dUlDQWdJSFJvYVhNdWNIVnphQ2hiSjJKc2IyTnJVR0Z5WVcxeld5
Y3NJR0pzYjJOclVHRnlZVzFKWkZzd1hTd2dKMTFiSnl3Z1lteHZZMnRRWVhKaGJVbGtXekZkTENB
blhTZGRLVHRjYmlBZ0lDQjBhR2x6TG5KbGMyOXNkbVZRWVhSb0tDZGpiMjUwWlhoMEp5d2djR0Z5
ZEhNc0lERXBPMXh1SUNCOUxGeHVYRzRnSUM4dklGdHNiMjlyZFhCRVlYUmhYVnh1SUNBdkwxeHVJ
Q0F2THlCUGJpQnpkR0ZqYXl3Z1ltVm1iM0psT2lBdUxpNWNiaUFnTHk4Z1QyNGdjM1JoWTJzc0lH
Rm1kR1Z5T2lCa1lYUmhMQ0F1TGk1Y2JpQWdMeTljYmlBZ0x5OGdVSFZ6YUNCMGFHVWdaR0YwWVNC
c2IyOXJkWEFnYjNCbGNtRjBiM0pjYmlBZ2JHOXZhM1Z3UkdGMFlUb2dablZ1WTNScGIyNG9aR1Z3
ZEdnc0lIQmhjblJ6TENCemRISnBZM1FwSUh0Y2JpQWdJQ0JwWmlBb0lXUmxjSFJvS1NCN1hHNGdJ
Q0FnSUNCMGFHbHpMbkIxYzJoVGRHRmphMHhwZEdWeVlXd29KMlJoZEdFbktUdGNiaUFnSUNCOUlH
VnNjMlVnZTF4dUlDQWdJQ0FnZEdocGN5NXdkWE5vVTNSaFkydE1hWFJsY21Gc0tDZGpiMjUwWVds
dVpYSXVaR0YwWVNoa1lYUmhMQ0FuSUNzZ1pHVndkR2dnS3lBbktTY3BPMXh1SUNBZ0lIMWNibHh1
SUNBZ0lIUm9hWE11Y21WemIyeDJaVkJoZEdnb0oyUmhkR0VuTENCd1lYSjBjeXdnTUN3Z2RISjFa
U3dnYzNSeWFXTjBLVHRjYmlBZ2ZTeGNibHh1SUNCeVpYTnZiSFpsVUdGMGFEb2dablZ1WTNScGIy
NG9kSGx3WlN3Z2NHRnlkSE1zSUdrc0lHWmhiSE41TENCemRISnBZM1FwSUh0Y2JpQWdJQ0JwWmlB
b2RHaHBjeTV2Y0hScGIyNXpMbk4wY21samRDQjhmQ0IwYUdsekxtOXdkR2x2Ym5NdVlYTnpkVzFs
VDJKcVpXTjBjeWtnZTF4dUlDQWdJQ0FnZEdocGN5NXdkWE5vS0hOMGNtbGpkRXh2YjJ0MWNDaDBh
R2x6TG05d2RHbHZibk11YzNSeWFXTjBJQ1ltSUhOMGNtbGpkQ3dnZEdocGN5d2djR0Z5ZEhNc0lI
UjVjR1VwS1R0Y2JpQWdJQ0FnSUhKbGRIVnlianRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnNaWFFnYkdW
dUlEMGdjR0Z5ZEhNdWJHVnVaM1JvTzF4dUlDQWdJR1p2Y2lBb095QnBJRHdnYkdWdU95QnBLeXNw
SUh0Y2JpQWdJQ0FnSUM4cUlHVnpiR2x1ZEMxa2FYTmhZbXhsSUc1dkxXeHZiM0F0Wm5WdVl5QXFM
MXh1SUNBZ0lDQWdkR2hwY3k1eVpYQnNZV05sVTNSaFkyc29LR04xY25KbGJuUXBJRDArSUh0Y2Jp
QWdJQ0FnSUNBZ2JHVjBJR3h2YjJ0MWNDQTlJSFJvYVhNdWJtRnRaVXh2YjJ0MWNDaGpkWEp5Wlc1
MExDQndZWEowYzF0cFhTd2dkSGx3WlNrN1hHNGdJQ0FnSUNBZ0lDOHZJRmRsSUhkaGJuUWdkRzhn
Wlc1emRYSmxJSFJvWVhRZ2VtVnlieUJoYm1RZ1ptRnNjMlVnWVhKbElHaGhibVJzWldRZ2NISnZj
R1Z5YkhrZ2FXWWdkR2hsSUdOdmJuUmxlSFFnS0daaGJITjVJR1pzWVdjcFhHNGdJQ0FnSUNBZ0lD
OHZJRzVsWldSeklIUnZJR2hoZG1VZ2RHaGxJSE53WldOcFlXd2dhR0Z1Wkd4cGJtY2dabTl5SUhS
b1pYTmxJSFpoYkhWbGN5NWNiaUFnSUNBZ0lDQWdhV1lnS0NGbVlXeHplU2tnZTF4dUlDQWdJQ0Fn
SUNBZ0lISmxkSFZ5YmlCYkp5QWhQU0J1ZFd4c0lEOGdKeXdnYkc5dmEzVndMQ0FuSURvZ0p5d2dZ
M1Z5Y21WdWRGMDdYRzRnSUNBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJQ0FnTHk4Z1Qz
Um9aWEozYVhObElIZGxJR05oYmlCMWMyVWdaMlZ1WlhKcFl5Qm1ZV3h6ZVNCb1lXNWtiR2x1WjF4
dUlDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCYkp5QW1KaUFuTENCc2IyOXJkWEJkTzF4dUlDQWdJQ0Fn
SUNCOVhHNGdJQ0FnSUNCOUtUdGNiaUFnSUNBZ0lDOHFJR1Z6YkdsdWRDMWxibUZpYkdVZ2JtOHRi
Rzl2Y0MxbWRXNWpJQ292WEc0Z0lDQWdmVnh1SUNCOUxGeHVYRzRnSUM4dklGdHlaWE52YkhabFVH
OXpjMmxpYkdWTVlXMWlaR0ZkWEc0Z0lDOHZYRzRnSUM4dklFOXVJSE4wWVdOckxDQmlaV1p2Y21V
NklIWmhiSFZsTENBdUxpNWNiaUFnTHk4Z1QyNGdjM1JoWTJzc0lHRm1kR1Z5T2lCeVpYTnZiSFps
WkNCMllXeDFaU3dnTGk0dVhHNGdJQzh2WEc0Z0lDOHZJRWxtSUhSb1pTQmdkbUZzZFdWZ0lHbHpJ
R0VnYkdGdFltUmhMQ0J5WlhCc1lXTmxJR2wwSUc5dUlIUm9aU0J6ZEdGamF5QmllVnh1SUNBdkx5
QjBhR1VnY21WMGRYSnVJSFpoYkhWbElHOW1JSFJvWlNCc1lXMWlaR0ZjYmlBZ2NtVnpiMngyWlZC
dmMzTnBZbXhsVEdGdFltUmhPaUJtZFc1amRHbHZiaWdwSUh0Y2JpQWdJQ0IwYUdsekxuQjFjMmdv
VzNSb2FYTXVZV3hwWVhOaFlteGxLQ2RqYjI1MFlXbHVaWEl1YkdGdFltUmhKeWtzSUNjb0p5d2dk
R2hwY3k1d2IzQlRkR0ZqYXlncExDQW5MQ0FuTENCMGFHbHpMbU52Ym5SbGVIUk9ZVzFsS0RBcExD
QW5LU2RkS1R0Y2JpQWdmU3hjYmx4dUlDQXZMeUJiY0hWemFGTjBjbWx1WjFCaGNtRnRYVnh1SUNB
dkwxeHVJQ0F2THlCUGJpQnpkR0ZqYXl3Z1ltVm1iM0psT2lBdUxpNWNiaUFnTHk4Z1QyNGdjM1Jo
WTJzc0lHRm1kR1Z5T2lCemRISnBibWNzSUdOMWNuSmxiblJEYjI1MFpYaDBMQ0F1TGk1Y2JpQWdM
eTljYmlBZ0x5OGdWR2hwY3lCdmNHTnZaR1VnYVhNZ1pHVnphV2R1WldRZ1ptOXlJSFZ6WlNCcGJp
QnpkSEpwYm1jZ2JXOWtaU3dnZDJocFkyaGNiaUFnTHk4Z2NISnZkbWxrWlhNZ2RHaGxJSE4wY21s
dVp5QjJZV3gxWlNCdlppQmhJSEJoY21GdFpYUmxjaUJoYkc5dVp5QjNhWFJvSUdsMGMxeHVJQ0F2
THlCa1pYQjBhQ0J5WVhSb1pYSWdkR2hoYmlCeVpYTnZiSFpwYm1jZ2FYUWdhVzF0WldScFlYUmxi
SGt1WEc0Z0lIQjFjMmhUZEhKcGJtZFFZWEpoYlRvZ1puVnVZM1JwYjI0b2MzUnlhVzVuTENCMGVY
QmxLU0I3WEc0Z0lDQWdkR2hwY3k1d2RYTm9RMjl1ZEdWNGRDZ3BPMXh1SUNBZ0lIUm9hWE11Y0hW
emFGTjBjbWx1WnloMGVYQmxLVHRjYmx4dUlDQWdJQzh2SUVsbUlHbDBKM01nWVNCemRXSmxlSEJ5
WlhOemFXOXVMQ0IwYUdVZ2MzUnlhVzVuSUhKbGMzVnNkRnh1SUNBZ0lDOHZJSGRwYkd3Z1ltVWdj
SFZ6YUdWa0lHRm1kR1Z5SUhSb2FYTWdiM0JqYjJSbExseHVJQ0FnSUdsbUlDaDBlWEJsSUNFOVBT
QW5VM1ZpUlhod2NtVnpjMmx2YmljcElIdGNiaUFnSUNBZ0lHbG1JQ2gwZVhCbGIyWWdjM1J5YVc1
bklEMDlQU0FuYzNSeWFXNW5KeWtnZTF4dUlDQWdJQ0FnSUNCMGFHbHpMbkIxYzJoVGRISnBibWNv
YzNSeWFXNW5LVHRjYmlBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJSFJvYVhNdWNIVnph
Rk4wWVdOclRHbDBaWEpoYkNoemRISnBibWNwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ2ZT
eGNibHh1SUNCbGJYQjBlVWhoYzJnNklHWjFibU4wYVc5dUtHOXRhWFJGYlhCMGVTa2dlMXh1SUNB
Z0lHbG1JQ2gwYUdsekxuUnlZV05yU1dSektTQjdYRzRnSUNBZ0lDQjBhR2x6TG5CMWMyZ29KM3Q5
SnlrN0lDOHZJR2hoYzJoSlpITmNiaUFnSUNCOVhHNGdJQ0FnYVdZZ0tIUm9hWE11YzNSeWFXNW5V
R0Z5WVcxektTQjdYRzRnSUNBZ0lDQjBhR2x6TG5CMWMyZ29KM3Q5SnlrN0lDOHZJR2hoYzJoRGIy
NTBaWGgwYzF4dUlDQWdJQ0FnZEdocGN5NXdkWE5vS0NkN2ZTY3BPeUF2THlCb1lYTm9WSGx3WlhO
Y2JpQWdJQ0I5WEc0Z0lDQWdkR2hwY3k1d2RYTm9VM1JoWTJ0TWFYUmxjbUZzS0c5dGFYUkZiWEIw
ZVNBL0lDZDFibVJsWm1sdVpXUW5JRG9nSjN0OUp5azdYRzRnSUgwc1hHNGdJSEIxYzJoSVlYTm9P
aUJtZFc1amRHbHZiaWdwSUh0Y2JpQWdJQ0JwWmlBb2RHaHBjeTVvWVhOb0tTQjdYRzRnSUNBZ0lD
QjBhR2x6TG1oaGMyaGxjeTV3ZFhOb0tIUm9hWE11YUdGemFDazdYRzRnSUNBZ2ZWeHVJQ0FnSUhS
b2FYTXVhR0Z6YUNBOUlIdDJZV3gxWlhNNklGdGRMQ0IwZVhCbGN6b2dXMTBzSUdOdmJuUmxlSFJ6
T2lCYlhTd2dhV1J6T2lCYlhYMDdYRzRnSUgwc1hHNGdJSEJ2Y0VoaGMyZzZJR1oxYm1OMGFXOXVL
Q2tnZTF4dUlDQWdJR3hsZENCb1lYTm9JRDBnZEdocGN5NW9ZWE5vTzF4dUlDQWdJSFJvYVhNdWFH
RnphQ0E5SUhSb2FYTXVhR0Z6YUdWekxuQnZjQ2dwTzF4dVhHNGdJQ0FnYVdZZ0tIUm9hWE11ZEhK
aFkydEpaSE1wSUh0Y2JpQWdJQ0FnSUhSb2FYTXVjSFZ6YUNoMGFHbHpMbTlpYW1WamRFeHBkR1Z5
WVd3b2FHRnphQzVwWkhNcEtUdGNiaUFnSUNCOVhHNGdJQ0FnYVdZZ0tIUm9hWE11YzNSeWFXNW5V
R0Z5WVcxektTQjdYRzRnSUNBZ0lDQjBhR2x6TG5CMWMyZ29kR2hwY3k1dlltcGxZM1JNYVhSbGNt
RnNLR2hoYzJndVkyOXVkR1Y0ZEhNcEtUdGNiaUFnSUNBZ0lIUm9hWE11Y0hWemFDaDBhR2x6TG05
aWFtVmpkRXhwZEdWeVlXd29hR0Z6YUM1MGVYQmxjeWtwTzF4dUlDQWdJSDFjYmx4dUlDQWdJSFJv
YVhNdWNIVnphQ2gwYUdsekxtOWlhbVZqZEV4cGRHVnlZV3dvYUdGemFDNTJZV3gxWlhNcEtUdGNi
aUFnZlN4Y2JseHVJQ0F2THlCYmNIVnphRk4wY21sdVoxMWNiaUFnTHk5Y2JpQWdMeThnVDI0Z2Mz
UmhZMnNzSUdKbFptOXlaVG9nTGk0dVhHNGdJQzh2SUU5dUlITjBZV05yTENCaFpuUmxjam9nY1hW
dmRHVmtVM1J5YVc1bktITjBjbWx1Wnlrc0lDNHVMbHh1SUNBdkwxeHVJQ0F2THlCUWRYTm9JR0Vn
Y1hWdmRHVmtJSFpsY25OcGIyNGdiMllnWUhOMGNtbHVaMkFnYjI1MGJ5QjBhR1VnYzNSaFkydGNi
aUFnY0hWemFGTjBjbWx1WnpvZ1puVnVZM1JwYjI0b2MzUnlhVzVuS1NCN1hHNGdJQ0FnZEdocGN5
NXdkWE5vVTNSaFkydE1hWFJsY21Gc0tIUm9hWE11Y1hWdmRHVmtVM1J5YVc1bktITjBjbWx1Wnlr
cE8xeHVJQ0I5TEZ4dVhHNGdJQzh2SUZ0d2RYTm9UR2wwWlhKaGJGMWNiaUFnTHk5Y2JpQWdMeThn
VDI0Z2MzUmhZMnNzSUdKbFptOXlaVG9nTGk0dVhHNGdJQzh2SUU5dUlITjBZV05yTENCaFpuUmxj
am9nZG1Gc2RXVXNJQzR1TGx4dUlDQXZMMXh1SUNBdkx5QlFkWE5vWlhNZ1lTQjJZV3gxWlNCdmJu
UnZJSFJvWlNCemRHRmpheTRnVkdocGN5QnZjR1Z5WVhScGIyNGdjSEpsZG1WdWRITmNiaUFnTHk4
Z2RHaGxJR052YlhCcGJHVnlJR1p5YjIwZ1kzSmxZWFJwYm1jZ1lTQjBaVzF3YjNKaGNua2dkbUZ5
YVdGaWJHVWdkRzhnYUc5c1pGeHVJQ0F2THlCcGRDNWNiaUFnY0hWemFFeHBkR1Z5WVd3NklHWjFi
bU4wYVc5dUtIWmhiSFZsS1NCN1hHNGdJQ0FnZEdocGN5NXdkWE5vVTNSaFkydE1hWFJsY21Gc0tI
WmhiSFZsS1R0Y2JpQWdmU3hjYmx4dUlDQXZMeUJiY0hWemFGQnliMmR5WVcxZFhHNGdJQzh2WEc0
Z0lDOHZJRTl1SUhOMFlXTnJMQ0JpWldadmNtVTZJQzR1TGx4dUlDQXZMeUJQYmlCemRHRmpheXdn
WVdaMFpYSTZJSEJ5YjJkeVlXMG9aM1ZwWkNrc0lDNHVMbHh1SUNBdkwxeHVJQ0F2THlCUWRYTm9J
R0VnY0hKdlozSmhiU0JsZUhCeVpYTnphVzl1SUc5dWRHOGdkR2hsSUhOMFlXTnJMaUJVYUdseklI
UmhhMlZ6WEc0Z0lDOHZJR0VnWTI5dGNHbHNaUzEwYVcxbElHZDFhV1FnWVc1a0lHTnZiblpsY25S
eklHbDBJR2x1ZEc4Z1lTQnlkVzUwYVcxbExXRmpZMlZ6YzJsaWJHVmNiaUFnTHk4Z1pYaHdjbVZ6
YzJsdmJpNWNiaUFnY0hWemFGQnliMmR5WVcwNklHWjFibU4wYVc5dUtHZDFhV1FwSUh0Y2JpQWdJ
Q0JwWmlBb1ozVnBaQ0FoUFNCdWRXeHNLU0I3WEc0Z0lDQWdJQ0IwYUdsekxuQjFjMmhUZEdGamEw
eHBkR1Z5WVd3b2RHaHBjeTV3Y205bmNtRnRSWGh3Y21WemMybHZiaWhuZFdsa0tTazdYRzRnSUNB
Z2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUhSb2FYTXVjSFZ6YUZOMFlXTnJUR2wwWlhKaGJDaHVkV3hz
S1R0Y2JpQWdJQ0I5WEc0Z0lIMHNYRzVjYmlBZ0x5OGdXM0psWjJsemRHVnlSR1ZqYjNKaGRHOXlY
Vnh1SUNBdkwxeHVJQ0F2THlCUGJpQnpkR0ZqYXl3Z1ltVm1iM0psT2lCb1lYTm9MQ0J3Y205bmNt
RnRMQ0J3WVhKaGJYTXVMaTRzSUM0dUxseHVJQ0F2THlCUGJpQnpkR0ZqYXl3Z1lXWjBaWEk2SUM0
dUxseHVJQ0F2TDF4dUlDQXZMeUJRYjNCeklHOW1aaUIwYUdVZ1pHVmpiM0poZEc5eUozTWdjR0Z5
WVcxbGRHVnljeXdnYVc1MmIydGxjeUIwYUdVZ1pHVmpiM0poZEc5eUxGeHVJQ0F2THlCaGJtUWdh
VzV6WlhKMGN5QjBhR1VnWkdWamIzSmhkRzl5SUdsdWRHOGdkR2hsSUdSbFkyOXlZWFJ2Y25NZ2JH
bHpkQzVjYmlBZ2NtVm5hWE4wWlhKRVpXTnZjbUYwYjNJb2NHRnlZVzFUYVhwbExDQnVZVzFsS1NC
N1hHNGdJQ0FnYkdWMElHWnZkVzVrUkdWamIzSmhkRzl5SUQwZ2RHaHBjeTV1WVcxbFRHOXZhM1Z3
S0Nka1pXTnZjbUYwYjNKekp5d2dibUZ0WlN3Z0oyUmxZMjl5WVhSdmNpY3BMRnh1SUNBZ0lDQWdJ
Q0J2Y0hScGIyNXpJRDBnZEdocGN5NXpaWFIxY0VobGJIQmxja0Z5WjNNb2JtRnRaU3dnY0dGeVlX
MVRhWHBsS1R0Y2JseHVJQ0FnSUhSb2FYTXVaR1ZqYjNKaGRHOXljeTV3ZFhOb0tGdGNiaUFnSUNB
Z0lDZG1iaUE5SUNjc1hHNGdJQ0FnSUNCMGFHbHpMbVJsWTI5eVlYUnZjbk11Wm5WdVkzUnBiMjVE
WVd4c0tHWnZkVzVrUkdWamIzSmhkRzl5TENBbkp5d2dXeWRtYmljc0lDZHdjbTl3Y3ljc0lDZGpi
MjUwWVdsdVpYSW5MQ0J2Y0hScGIyNXpYU2tzWEc0Z0lDQWdJQ0FuSUh4OElHWnVPeWRjYmlBZ0lD
QmRLVHRjYmlBZ2ZTeGNibHh1SUNBdkx5QmJhVzUyYjJ0bFNHVnNjR1Z5WFZ4dUlDQXZMMXh1SUNB
dkx5QlBiaUJ6ZEdGamF5d2dZbVZtYjNKbE9pQm9ZWE5vTENCcGJuWmxjbk5sTENCd2NtOW5jbUZ0
TENCd1lYSmhiWE11TGk0c0lDNHVMbHh1SUNBdkx5QlBiaUJ6ZEdGamF5d2dZV1owWlhJNklISmxj
M1ZzZENCdlppQm9aV3h3WlhJZ2FXNTJiMk5oZEdsdmJseHVJQ0F2TDF4dUlDQXZMeUJRYjNCeklH
OW1aaUIwYUdVZ2FHVnNjR1Z5SjNNZ2NHRnlZVzFsZEdWeWN5d2dhVzUyYjJ0bGN5QjBhR1VnYUdW
c2NHVnlMRnh1SUNBdkx5QmhibVFnY0hWemFHVnpJSFJvWlNCb1pXeHdaWEluY3lCeVpYUjFjbTRn
ZG1Gc2RXVWdiMjUwYnlCMGFHVWdjM1JoWTJzdVhHNGdJQzh2WEc0Z0lDOHZJRWxtSUhSb1pTQm9a
V3h3WlhJZ2FYTWdibTkwSUdadmRXNWtMQ0JnYUdWc2NHVnlUV2x6YzJsdVoyQWdhWE1nWTJGc2JH
VmtMbHh1SUNCcGJuWnZhMlZJWld4d1pYSTZJR1oxYm1OMGFXOXVLSEJoY21GdFUybDZaU3dnYm1G
dFpTd2dhWE5UYVcxd2JHVXBJSHRjYmlBZ0lDQnNaWFFnYm05dVNHVnNjR1Z5SUQwZ2RHaHBjeTV3
YjNCVGRHRmpheWdwTEZ4dUlDQWdJQ0FnSUNCb1pXeHdaWElnUFNCMGFHbHpMbk5sZEhWd1NHVnNj
R1Z5S0hCaGNtRnRVMmw2WlN3Z2JtRnRaU2tzWEc0Z0lDQWdJQ0FnSUhOcGJYQnNaU0E5SUdselUy
bHRjR3hsSUQ4Z1cyaGxiSEJsY2k1dVlXMWxMQ0FuSUh4OElDZGRJRG9nSnljN1hHNWNiaUFnSUNC
c1pYUWdiRzl2YTNWd0lEMGdXeWNvSjEwdVkyOXVZMkYwS0hOcGJYQnNaU3dnYm05dVNHVnNjR1Z5
S1R0Y2JpQWdJQ0JwWmlBb0lYUm9hWE11YjNCMGFXOXVjeTV6ZEhKcFkzUXBJSHRjYmlBZ0lDQWdJ
R3h2YjJ0MWNDNXdkWE5vS0NjZ2ZId2dKeXdnZEdocGN5NWhiR2xoYzJGaWJHVW9KMmhsYkhCbGNu
TXVhR1ZzY0dWeVRXbHpjMmx1WnljcEtUdGNiaUFnSUNCOVhHNGdJQ0FnYkc5dmEzVndMbkIxYzJn
b0p5a25LVHRjYmx4dUlDQWdJSFJvYVhNdWNIVnphQ2gwYUdsekxuTnZkWEpqWlM1bWRXNWpkR2x2
YmtOaGJHd29iRzl2YTNWd0xDQW5ZMkZzYkNjc0lHaGxiSEJsY2k1allXeHNVR0Z5WVcxektTazdY
RzRnSUgwc1hHNWNiaUFnTHk4Z1cybHVkbTlyWlV0dWIzZHVTR1ZzY0dWeVhWeHVJQ0F2TDF4dUlD
QXZMeUJQYmlCemRHRmpheXdnWW1WbWIzSmxPaUJvWVhOb0xDQnBiblpsY25ObExDQndjbTluY21G
dExDQndZWEpoYlhNdUxpNHNJQzR1TGx4dUlDQXZMeUJQYmlCemRHRmpheXdnWVdaMFpYSTZJSEps
YzNWc2RDQnZaaUJvWld4d1pYSWdhVzUyYjJOaGRHbHZibHh1SUNBdkwxeHVJQ0F2THlCVWFHbHpJ
Rzl3WlhKaGRHbHZiaUJwY3lCMWMyVmtJSGRvWlc0Z2RHaGxJR2hsYkhCbGNpQnBjeUJyYm05M2Jp
QjBieUJsZUdsemRDeGNiaUFnTHk4Z2MyOGdZU0JnYUdWc2NHVnlUV2x6YzJsdVoyQWdabUZzYkdK
aFkyc2dhWE1nYm05MElISmxjWFZwY21Wa0xseHVJQ0JwYm5admEyVkxibTkzYmtobGJIQmxjam9n
Wm5WdVkzUnBiMjRvY0dGeVlXMVRhWHBsTENCdVlXMWxLU0I3WEc0Z0lDQWdiR1YwSUdobGJIQmxj
aUE5SUhSb2FYTXVjMlYwZFhCSVpXeHdaWElvY0dGeVlXMVRhWHBsTENCdVlXMWxLVHRjYmlBZ0lD
QjBhR2x6TG5CMWMyZ29kR2hwY3k1emIzVnlZMlV1Wm5WdVkzUnBiMjVEWVd4c0tHaGxiSEJsY2k1
dVlXMWxMQ0FuWTJGc2JDY3NJR2hsYkhCbGNpNWpZV3hzVUdGeVlXMXpLU2s3WEc0Z0lIMHNYRzVj
YmlBZ0x5OGdXMmx1ZG05clpVRnRZbWxuZFc5MWMxMWNiaUFnTHk5Y2JpQWdMeThnVDI0Z2MzUmhZ
MnNzSUdKbFptOXlaVG9nYUdGemFDd2dhVzUyWlhKelpTd2djSEp2WjNKaGJTd2djR0Z5WVcxekxp
NHVMQ0F1TGk1Y2JpQWdMeThnVDI0Z2MzUmhZMnNzSUdGbWRHVnlPaUJ5WlhOMWJIUWdiMllnWkds
ellXMWlhV2QxWVhScGIyNWNiaUFnTHk5Y2JpQWdMeThnVkdocGN5QnZjR1Z5WVhScGIyNGdhWE1n
ZFhObFpDQjNhR1Z1SUdGdUlHVjRjSEpsYzNOcGIyNGdiR2xyWlNCZ2UzdG1iMjk5ZldCY2JpQWdM
eThnYVhNZ2NISnZkbWxrWldRc0lHSjFkQ0IzWlNCa2IyNG5kQ0JyYm05M0lHRjBJR052YlhCcGJH
VXRkR2x0WlNCM2FHVjBhR1Z5SUdsMFhHNGdJQzh2SUdseklHRWdhR1ZzY0dWeUlHOXlJR0VnY0dG
MGFDNWNiaUFnTHk5Y2JpQWdMeThnVkdocGN5QnZjR1Z5WVhScGIyNGdaVzFwZEhNZ2JXOXlaU0Jq
YjJSbElIUm9ZVzRnZEdobElHOTBhR1Z5SUc5d2RHbHZibk1zWEc0Z0lDOHZJR0Z1WkNCallXNGdZ
bVVnWVhadmFXUmxaQ0JpZVNCd1lYTnphVzVuSUhSb1pTQmdhMjV2ZDI1SVpXeHdaWEp6WUNCaGJt
UmNiaUFnTHk4Z1lHdHViM2R1U0dWc2NHVnljMDl1YkhsZ0lHWnNZV2R6SUdGMElHTnZiWEJwYkdV
dGRHbHRaUzVjYmlBZ2FXNTJiMnRsUVcxaWFXZDFiM1Z6T2lCbWRXNWpkR2x2YmlodVlXMWxMQ0Jv
Wld4d1pYSkRZV3hzS1NCN1hHNGdJQ0FnZEdocGN5NTFjMlZTWldkcGMzUmxjaWduYUdWc2NHVnlK
eWs3WEc1Y2JpQWdJQ0JzWlhRZ2JtOXVTR1ZzY0dWeUlEMGdkR2hwY3k1d2IzQlRkR0ZqYXlncE8x
eHVYRzRnSUNBZ2RHaHBjeTVsYlhCMGVVaGhjMmdvS1R0Y2JpQWdJQ0JzWlhRZ2FHVnNjR1Z5SUQw
Z2RHaHBjeTV6WlhSMWNFaGxiSEJsY2lnd0xDQnVZVzFsTENCb1pXeHdaWEpEWVd4c0tUdGNibHh1
SUNBZ0lHeGxkQ0JvWld4d1pYSk9ZVzFsSUQwZ2RHaHBjeTVzWVhOMFNHVnNjR1Z5SUQwZ2RHaHBj
eTV1WVcxbFRHOXZhM1Z3S0Nkb1pXeHdaWEp6Snl3Z2JtRnRaU3dnSjJobGJIQmxjaWNwTzF4dVhH
NGdJQ0FnYkdWMElHeHZiMnQxY0NBOUlGc25LQ2NzSUNjb2FHVnNjR1Z5SUQwZ0p5d2dhR1ZzY0dW
eVRtRnRaU3dnSnlCOGZDQW5MQ0J1YjI1SVpXeHdaWElzSUNjcEoxMDdYRzRnSUNBZ2FXWWdLQ0Yw
YUdsekxtOXdkR2x2Ym5NdWMzUnlhV04wS1NCN1hHNGdJQ0FnSUNCc2IyOXJkWEJiTUYwZ1BTQW5L
R2hsYkhCbGNpQTlJQ2M3WEc0Z0lDQWdJQ0JzYjI5cmRYQXVjSFZ6YUNoY2JpQWdJQ0FnSUNBZ0p5
QWhQU0J1ZFd4c0lEOGdhR1ZzY0dWeUlEb2dKeXhjYmlBZ0lDQWdJQ0FnZEdocGN5NWhiR2xoYzJG
aWJHVW9KMmhsYkhCbGNuTXVhR1ZzY0dWeVRXbHpjMmx1WnljcFhHNGdJQ0FnSUNBcE8xeHVJQ0Fn
SUgxY2JseHVJQ0FnSUhSb2FYTXVjSFZ6YUNoYlhHNGdJQ0FnSUNBZ0lDY29KeXdnYkc5dmEzVndM
Rnh1SUNBZ0lDQWdJQ0FvYUdWc2NHVnlMbkJoY21GdGMwbHVhWFFnUHlCYkp5a3NLQ2NzSUdobGJI
QmxjaTV3WVhKaGJYTkpibWwwWFNBNklGdGRLU3dnSnlrc0p5eGNiaUFnSUNBZ0lDQWdKeWgwZVhC
bGIyWWdhR1ZzY0dWeUlEMDlQU0FuTENCMGFHbHpMbUZzYVdGellXSnNaU2duWENKbWRXNWpkR2x2
Ymx3aUp5a3NJQ2NnUHlBbkxGeHVJQ0FnSUNBZ0lDQjBhR2x6TG5OdmRYSmpaUzVtZFc1amRHbHZi
a05oYkd3b0oyaGxiSEJsY2ljc0lDZGpZV3hzSnl3Z2FHVnNjR1Z5TG1OaGJHeFFZWEpoYlhNcExD
QW5JRG9nYUdWc2NHVnlLU2tuWEc0Z0lDQWdYU2s3WEc0Z0lIMHNYRzVjYmlBZ0x5OGdXMmx1ZG05
clpWQmhjblJwWVd4ZFhHNGdJQzh2WEc0Z0lDOHZJRTl1SUhOMFlXTnJMQ0JpWldadmNtVTZJR052
Ym5SbGVIUXNJQzR1TGx4dUlDQXZMeUJQYmlCemRHRmpheUJoWm5SbGNqb2djbVZ6ZFd4MElHOW1J
SEJoY25ScFlXd2dhVzUyYjJOaGRHbHZibHh1SUNBdkwxeHVJQ0F2THlCVWFHbHpJRzl3WlhKaGRH
bHZiaUJ3YjNCeklHOW1aaUJoSUdOdmJuUmxlSFFzSUdsdWRtOXJaWE1nWVNCd1lYSjBhV0ZzSUhk
cGRHZ2dkR2hoZENCamIyNTBaWGgwTEZ4dUlDQXZMeUJoYm1RZ2NIVnphR1Z6SUhSb1pTQnlaWE4x
YkhRZ2IyWWdkR2hsSUdsdWRtOWpZWFJwYjI0Z1ltRmpheTVjYmlBZ2FXNTJiMnRsVUdGeWRHbGhi
RG9nWm5WdVkzUnBiMjRvYVhORWVXNWhiV2xqTENCdVlXMWxMQ0JwYm1SbGJuUXBJSHRjYmlBZ0lD
QnNaWFFnY0dGeVlXMXpJRDBnVzEwc1hHNGdJQ0FnSUNBZ0lHOXdkR2x2Ym5NZ1BTQjBhR2x6TG5O
bGRIVndVR0Z5WVcxektHNWhiV1VzSURFc0lIQmhjbUZ0Y3lrN1hHNWNiaUFnSUNCcFppQW9hWE5F
ZVc1aGJXbGpLU0I3WEc0Z0lDQWdJQ0J1WVcxbElEMGdkR2hwY3k1d2IzQlRkR0ZqYXlncE8xeHVJ
Q0FnSUNBZ1pHVnNaWFJsSUc5d2RHbHZibk11Ym1GdFpUdGNiaUFnSUNCOVhHNWNiaUFnSUNCcFpp
QW9hVzVrWlc1MEtTQjdYRzRnSUNBZ0lDQnZjSFJwYjI1ekxtbHVaR1Z1ZENBOUlFcFRUMDR1YzNS
eWFXNW5hV1o1S0dsdVpHVnVkQ2s3WEc0Z0lDQWdmVnh1SUNBZ0lHOXdkR2x2Ym5NdWFHVnNjR1Z5
Y3lBOUlDZG9aV3h3WlhKekp6dGNiaUFnSUNCdmNIUnBiMjV6TG5CaGNuUnBZV3h6SUQwZ0ozQmhj
blJwWVd4ekp6dGNiaUFnSUNCdmNIUnBiMjV6TG1SbFkyOXlZWFJ2Y25NZ1BTQW5ZMjl1ZEdGcGJt
VnlMbVJsWTI5eVlYUnZjbk1uTzF4dVhHNGdJQ0FnYVdZZ0tDRnBjMFI1Ym1GdGFXTXBJSHRjYmlB
Z0lDQWdJSEJoY21GdGN5NTFibk5vYVdaMEtIUm9hWE11Ym1GdFpVeHZiMnQxY0NnbmNHRnlkR2xo
YkhNbkxDQnVZVzFsTENBbmNHRnlkR2xoYkNjcEtUdGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJ
Q0FnY0dGeVlXMXpMblZ1YzJocFpuUW9ibUZ0WlNrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tI
Um9hWE11YjNCMGFXOXVjeTVqYjIxd1lYUXBJSHRjYmlBZ0lDQWdJRzl3ZEdsdmJuTXVaR1Z3ZEdo
eklEMGdKMlJsY0hSb2N5YzdYRzRnSUNBZ2ZWeHVJQ0FnSUc5d2RHbHZibk1nUFNCMGFHbHpMbTlp
YW1WamRFeHBkR1Z5WVd3b2IzQjBhVzl1Y3lrN1hHNGdJQ0FnY0dGeVlXMXpMbkIxYzJnb2IzQjBh
Vzl1Y3lrN1hHNWNiaUFnSUNCMGFHbHpMbkIxYzJnb2RHaHBjeTV6YjNWeVkyVXVablZ1WTNScGIy
NURZV3hzS0NkamIyNTBZV2x1WlhJdWFXNTJiMnRsVUdGeWRHbGhiQ2NzSUNjbkxDQndZWEpoYlhN
cEtUdGNiaUFnZlN4Y2JseHVJQ0F2THlCYllYTnphV2R1Vkc5SVlYTm9YVnh1SUNBdkwxeHVJQ0F2
THlCUGJpQnpkR0ZqYXl3Z1ltVm1iM0psT2lCMllXeDFaU3dnTGk0dUxDQm9ZWE5vTENBdUxpNWNi
aUFnTHk4Z1QyNGdjM1JoWTJzc0lHRm1kR1Z5T2lBdUxpNHNJR2hoYzJnc0lDNHVMbHh1SUNBdkwx
eHVJQ0F2THlCUWIzQnpJR0VnZG1Gc2RXVWdiMlptSUhSb1pTQnpkR0ZqYXlCaGJtUWdZWE56YVdk
dWN5QnBkQ0IwYnlCMGFHVWdZM1Z5Y21WdWRDQm9ZWE5vWEc0Z0lHRnpjMmxuYmxSdlNHRnphRG9n
Wm5WdVkzUnBiMjRvYTJWNUtTQjdYRzRnSUNBZ2JHVjBJSFpoYkhWbElEMGdkR2hwY3k1d2IzQlRk
R0ZqYXlncExGeHVJQ0FnSUNBZ0lDQmpiMjUwWlhoMExGeHVJQ0FnSUNBZ0lDQjBlWEJsTEZ4dUlD
QWdJQ0FnSUNCcFpEdGNibHh1SUNBZ0lHbG1JQ2gwYUdsekxuUnlZV05yU1dSektTQjdYRzRnSUNB
Z0lDQnBaQ0E5SUhSb2FYTXVjRzl3VTNSaFkyc29LVHRjYmlBZ0lDQjlYRzRnSUNBZ2FXWWdLSFJv
YVhNdWMzUnlhVzVuVUdGeVlXMXpLU0I3WEc0Z0lDQWdJQ0IwZVhCbElEMGdkR2hwY3k1d2IzQlRk
R0ZqYXlncE8xeHVJQ0FnSUNBZ1kyOXVkR1Y0ZENBOUlIUm9hWE11Y0c5d1UzUmhZMnNvS1R0Y2Jp
QWdJQ0I5WEc1Y2JpQWdJQ0JzWlhRZ2FHRnphQ0E5SUhSb2FYTXVhR0Z6YUR0Y2JpQWdJQ0JwWmlB
b1kyOXVkR1Y0ZENrZ2UxeHVJQ0FnSUNBZ2FHRnphQzVqYjI1MFpYaDBjMXRyWlhsZElEMGdZMjl1
ZEdWNGREdGNiaUFnSUNCOVhHNGdJQ0FnYVdZZ0tIUjVjR1VwSUh0Y2JpQWdJQ0FnSUdoaGMyZ3Vk
SGx3WlhOYmEyVjVYU0E5SUhSNWNHVTdYRzRnSUNBZ2ZWeHVJQ0FnSUdsbUlDaHBaQ2tnZTF4dUlD
QWdJQ0FnYUdGemFDNXBaSE5iYTJWNVhTQTlJR2xrTzF4dUlDQWdJSDFjYmlBZ0lDQm9ZWE5vTG5a
aGJIVmxjMXRyWlhsZElEMGdkbUZzZFdVN1hHNGdJSDBzWEc1Y2JpQWdjSFZ6YUVsa09pQm1kVzVq
ZEdsdmJpaDBlWEJsTENCdVlXMWxMQ0JqYUdsc1pDa2dlMXh1SUNBZ0lHbG1JQ2gwZVhCbElEMDlQ
U0FuUW14dlkydFFZWEpoYlNjcElIdGNiaUFnSUNBZ0lIUm9hWE11Y0hWemFGTjBZV05yVEdsMFpY
SmhiQ2hjYmlBZ0lDQWdJQ0FnSUNBbllteHZZMnRRWVhKaGJYTmJKeUFySUc1aGJXVmJNRjBnS3lB
blhTNXdZWFJvV3ljZ0t5QnVZVzFsV3pGZElDc2dKMTBuWEc0Z0lDQWdJQ0FnSUNBZ0t5QW9ZMmhw
YkdRZ1B5QW5JQ3NnSnlBcklFcFRUMDR1YzNSeWFXNW5hV1o1S0NjdUp5QXJJR05vYVd4a0tTQTZJ
Q2NuS1NrN1hHNGdJQ0FnZlNCbGJITmxJR2xtSUNoMGVYQmxJRDA5UFNBblVHRjBhRVY0Y0hKbGMz
TnBiMjRuS1NCN1hHNGdJQ0FnSUNCMGFHbHpMbkIxYzJoVGRISnBibWNvYm1GdFpTazdYRzRnSUNB
Z2ZTQmxiSE5sSUdsbUlDaDBlWEJsSUQwOVBTQW5VM1ZpUlhod2NtVnpjMmx2YmljcElIdGNiaUFn
SUNBZ0lIUm9hWE11Y0hWemFGTjBZV05yVEdsMFpYSmhiQ2duZEhKMVpTY3BPMXh1SUNBZ0lIMGda
V3h6WlNCN1hHNGdJQ0FnSUNCMGFHbHpMbkIxYzJoVGRHRmphMHhwZEdWeVlXd29KMjUxYkd3bktU
dGNiaUFnSUNCOVhHNGdJSDBzWEc1Y2JpQWdMeThnU0VWTVVFVlNVMXh1WEc0Z0lHTnZiWEJwYkdW
eU9pQktZWFpoVTJOeWFYQjBRMjl0Y0dsc1pYSXNYRzVjYmlBZ1kyOXRjR2xzWlVOb2FXeGtjbVZ1
T2lCbWRXNWpkR2x2YmlobGJuWnBjbTl1YldWdWRDd2diM0IwYVc5dWN5a2dlMXh1SUNBZ0lHeGxk
Q0JqYUdsc1pISmxiaUE5SUdWdWRtbHliMjV0Wlc1MExtTm9hV3hrY21WdUxDQmphR2xzWkN3Z1ky
OXRjR2xzWlhJN1hHNWNiaUFnSUNCbWIzSWdLR3hsZENCcElEMGdNQ3dnYkNBOUlHTm9hV3hrY21W
dUxteGxibWQwYURzZ2FTQThJR3c3SUdrckt5a2dlMXh1SUNBZ0lDQWdZMmhwYkdRZ1BTQmphR2xz
WkhKbGJsdHBYVHRjYmlBZ0lDQWdJR052YlhCcGJHVnlJRDBnYm1WM0lIUm9hWE11WTI5dGNHbHNa
WElvS1RzZ0lDQWdMeThnWlhOc2FXNTBMV1JwYzJGaWJHVXRiR2x1WlNCdVpYY3RZMkZ3WEc1Y2Jp
QWdJQ0FnSUd4bGRDQmxlR2x6ZEdsdVp5QTlJSFJvYVhNdWJXRjBZMmhGZUdsemRHbHVaMUJ5YjJk
eVlXMG9ZMmhwYkdRcE8xeHVYRzRnSUNBZ0lDQnBaaUFvWlhocGMzUnBibWNnUFQwZ2JuVnNiQ2tn
ZTF4dUlDQWdJQ0FnSUNCMGFHbHpMbU52Ym5SbGVIUXVjSEp2WjNKaGJYTXVjSFZ6YUNnbkp5azdJ
Q0FnSUNBdkx5QlFiR0ZqWldodmJHUmxjaUIwYnlCd2NtVjJaVzUwSUc1aGJXVWdZMjl1Wm14cFkz
UnpJR1p2Y2lCdVpYTjBaV1FnWTJocGJHUnlaVzVjYmlBZ0lDQWdJQ0FnYkdWMElHbHVaR1Y0SUQw
Z2RHaHBjeTVqYjI1MFpYaDBMbkJ5YjJkeVlXMXpMbXhsYm1kMGFEdGNiaUFnSUNBZ0lDQWdZMmhw
YkdRdWFXNWtaWGdnUFNCcGJtUmxlRHRjYmlBZ0lDQWdJQ0FnWTJocGJHUXVibUZ0WlNBOUlDZHdj
bTluY21GdEp5QXJJR2x1WkdWNE8xeHVJQ0FnSUNBZ0lDQjBhR2x6TG1OdmJuUmxlSFF1Y0hKdloz
SmhiWE5iYVc1a1pYaGRJRDBnWTI5dGNHbHNaWEl1WTI5dGNHbHNaU2hqYUdsc1pDd2diM0IwYVc5
dWN5d2dkR2hwY3k1amIyNTBaWGgwTENBaGRHaHBjeTV3Y21WamIyMXdhV3hsS1R0Y2JpQWdJQ0Fn
SUNBZ2RHaHBjeTVqYjI1MFpYaDBMbVJsWTI5eVlYUnZjbk5iYVc1a1pYaGRJRDBnWTI5dGNHbHNa
WEl1WkdWamIzSmhkRzl5Y3p0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTVqYjI1MFpYaDBMbVZ1ZG1seWIy
NXRaVzUwYzF0cGJtUmxlRjBnUFNCamFHbHNaRHRjYmx4dUlDQWdJQ0FnSUNCMGFHbHpMblZ6WlVS
bGNIUm9jeUE5SUhSb2FYTXVkWE5sUkdWd2RHaHpJSHg4SUdOdmJYQnBiR1Z5TG5WelpVUmxjSFJv
Y3p0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTUxYzJWQ2JHOWphMUJoY21GdGN5QTlJSFJvYVhNdWRYTmxR
bXh2WTJ0UVlYSmhiWE1nZkh3Z1kyOXRjR2xzWlhJdWRYTmxRbXh2WTJ0UVlYSmhiWE03WEc0Z0lD
QWdJQ0FnSUdOb2FXeGtMblZ6WlVSbGNIUm9jeUE5SUhSb2FYTXVkWE5sUkdWd2RHaHpPMXh1SUNB
Z0lDQWdJQ0JqYUdsc1pDNTFjMlZDYkc5amExQmhjbUZ0Y3lBOUlIUm9hWE11ZFhObFFteHZZMnRR
WVhKaGJYTTdYRzRnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQmphR2xzWkM1cGJtUmxl
Q0E5SUdWNGFYTjBhVzVuTG1sdVpHVjRPMXh1SUNBZ0lDQWdJQ0JqYUdsc1pDNXVZVzFsSUQwZ0oz
QnliMmR5WVcwbklDc2daWGhwYzNScGJtY3VhVzVrWlhnN1hHNWNiaUFnSUNBZ0lDQWdkR2hwY3k1
MWMyVkVaWEIwYUhNZ1BTQjBhR2x6TG5WelpVUmxjSFJvY3lCOGZDQmxlR2x6ZEdsdVp5NTFjMlZF
WlhCMGFITTdYRzRnSUNBZ0lDQWdJSFJvYVhNdWRYTmxRbXh2WTJ0UVlYSmhiWE1nUFNCMGFHbHpM
blZ6WlVKc2IyTnJVR0Z5WVcxeklIeDhJR1Y0YVhOMGFXNW5MblZ6WlVKc2IyTnJVR0Z5WVcxek8x
eHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdmU3hjYmlBZ2JXRjBZMmhGZUdsemRHbHVaMUJ5YjJk
eVlXMDZJR1oxYm1OMGFXOXVLR05vYVd4a0tTQjdYRzRnSUNBZ1ptOXlJQ2hzWlhRZ2FTQTlJREFz
SUd4bGJpQTlJSFJvYVhNdVkyOXVkR1Y0ZEM1bGJuWnBjbTl1YldWdWRITXViR1Z1WjNSb095QnBJ
RHdnYkdWdU95QnBLeXNwSUh0Y2JpQWdJQ0FnSUd4bGRDQmxiblpwY205dWJXVnVkQ0E5SUhSb2FY
TXVZMjl1ZEdWNGRDNWxiblpwY205dWJXVnVkSE5iYVYwN1hHNGdJQ0FnSUNCcFppQW9aVzUyYVhK
dmJtMWxiblFnSmlZZ1pXNTJhWEp2Ym0xbGJuUXVaWEYxWVd4ektHTm9hV3hrS1NrZ2UxeHVJQ0Fn
SUNBZ0lDQnlaWFIxY200Z1pXNTJhWEp2Ym0xbGJuUTdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJ
Q0I5TEZ4dVhHNGdJSEJ5YjJkeVlXMUZlSEJ5WlhOemFXOXVPaUJtZFc1amRHbHZiaWhuZFdsa0tT
QjdYRzRnSUNBZ2JHVjBJR05vYVd4a0lEMGdkR2hwY3k1bGJuWnBjbTl1YldWdWRDNWphR2xzWkhK
bGJsdG5kV2xrWFN4Y2JpQWdJQ0FnSUNBZ2NISnZaM0poYlZCaGNtRnRjeUE5SUZ0amFHbHNaQzVw
Ym1SbGVDd2dKMlJoZEdFbkxDQmphR2xzWkM1aWJHOWphMUJoY21GdGMxMDdYRzVjYmlBZ0lDQnBa
aUFvZEdocGN5NTFjMlZDYkc5amExQmhjbUZ0Y3lCOGZDQjBhR2x6TG5WelpVUmxjSFJvY3lrZ2Ux
eHVJQ0FnSUNBZ2NISnZaM0poYlZCaGNtRnRjeTV3ZFhOb0tDZGliRzlqYTFCaGNtRnRjeWNwTzF4
dUlDQWdJSDFjYmlBZ0lDQnBaaUFvZEdocGN5NTFjMlZFWlhCMGFITXBJSHRjYmlBZ0lDQWdJSEJ5
YjJkeVlXMVFZWEpoYlhNdWNIVnphQ2duWkdWd2RHaHpKeWs3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdj
bVYwZFhKdUlDZGpiMjUwWVdsdVpYSXVjSEp2WjNKaGJTZ25JQ3NnY0hKdlozSmhiVkJoY21GdGN5
NXFiMmx1S0Njc0lDY3BJQ3NnSnlrbk8xeHVJQ0I5TEZ4dVhHNGdJSFZ6WlZKbFoybHpkR1Z5T2lC
bWRXNWpkR2x2YmlodVlXMWxLU0I3WEc0Z0lDQWdhV1lnS0NGMGFHbHpMbkpsWjJsemRHVnljMXR1
WVcxbFhTa2dlMXh1SUNBZ0lDQWdkR2hwY3k1eVpXZHBjM1JsY25OYmJtRnRaVjBnUFNCMGNuVmxP
MXh1SUNBZ0lDQWdkR2hwY3k1eVpXZHBjM1JsY25NdWJHbHpkQzV3ZFhOb0tHNWhiV1VwTzF4dUlD
QWdJSDFjYmlBZ2ZTeGNibHh1SUNCd2RYTm9PaUJtZFc1amRHbHZiaWhsZUhCeUtTQjdYRzRnSUNB
Z2FXWWdLQ0VvWlhod2NpQnBibk4wWVc1alpXOW1JRXhwZEdWeVlXd3BLU0I3WEc0Z0lDQWdJQ0Js
ZUhCeUlEMGdkR2hwY3k1emIzVnlZMlV1ZDNKaGNDaGxlSEJ5S1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJ
Q0IwYUdsekxtbHViR2x1WlZOMFlXTnJMbkIxYzJnb1pYaHdjaWs3WEc0Z0lDQWdjbVYwZFhKdUlH
VjRjSEk3WEc0Z0lIMHNYRzVjYmlBZ2NIVnphRk4wWVdOclRHbDBaWEpoYkRvZ1puVnVZM1JwYjI0
b2FYUmxiU2tnZTF4dUlDQWdJSFJvYVhNdWNIVnphQ2h1WlhjZ1RHbDBaWEpoYkNocGRHVnRLU2s3
WEc0Z0lIMHNYRzVjYmlBZ2NIVnphRk52ZFhKalpUb2dablZ1WTNScGIyNG9jMjkxY21ObEtTQjdY
RzRnSUNBZ2FXWWdLSFJvYVhNdWNHVnVaR2x1WjBOdmJuUmxiblFwSUh0Y2JpQWdJQ0FnSUhSb2FY
TXVjMjkxY21ObExuQjFjMmdvWEc0Z0lDQWdJQ0FnSUNBZ2RHaHBjeTVoY0hCbGJtUlViMEoxWm1a
bGNpaDBhR2x6TG5OdmRYSmpaUzV4ZFc5MFpXUlRkSEpwYm1jb2RHaHBjeTV3Wlc1a2FXNW5RMjl1
ZEdWdWRDa3NJSFJvYVhNdWNHVnVaR2x1WjB4dlkyRjBhVzl1S1NrN1hHNGdJQ0FnSUNCMGFHbHpM
bkJsYm1ScGJtZERiMjUwWlc1MElEMGdkVzVrWldacGJtVmtPMXh1SUNBZ0lIMWNibHh1SUNBZ0lH
bG1JQ2h6YjNWeVkyVXBJSHRjYmlBZ0lDQWdJSFJvYVhNdWMyOTFjbU5sTG5CMWMyZ29jMjkxY21O
bEtUdGNiaUFnSUNCOVhHNGdJSDBzWEc1Y2JpQWdjbVZ3YkdGalpWTjBZV05yT2lCbWRXNWpkR2x2
YmloallXeHNZbUZqYXlrZ2UxeHVJQ0FnSUd4bGRDQndjbVZtYVhnZ1BTQmJKeWduWFN4Y2JpQWdJ
Q0FnSUNBZ2MzUmhZMnNzWEc0Z0lDQWdJQ0FnSUdOeVpXRjBaV1JUZEdGamF5eGNiaUFnSUNBZ0lD
QWdkWE5sWkV4cGRHVnlZV3c3WEc1Y2JpQWdJQ0F2S2lCcGMzUmhibUoxYkNCcFoyNXZjbVVnYm1W
NGRDQXFMMXh1SUNBZ0lHbG1JQ2doZEdocGN5NXBjMGx1YkdsdVpTZ3BLU0I3WEc0Z0lDQWdJQ0Iw
YUhKdmR5QnVaWGNnUlhoalpYQjBhVzl1S0NkeVpYQnNZV05sVTNSaFkyc2diMjRnYm05dUxXbHVi
R2x1WlNjcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUM4dklGZGxJSGRoYm5RZ2RHOGdiV1Z5WjJVZ2RH
aGxJR2x1YkdsdVpTQnpkR0YwWlcxbGJuUWdhVzUwYnlCMGFHVWdjbVZ3YkdGalpXMWxiblFnYzNS
aGRHVnRaVzUwSUhacFlTQW5MQ2RjYmlBZ0lDQnNaWFFnZEc5d0lEMGdkR2hwY3k1d2IzQlRkR0Zq
YXloMGNuVmxLVHRjYmx4dUlDQWdJR2xtSUNoMGIzQWdhVzV6ZEdGdVkyVnZaaUJNYVhSbGNtRnNL
U0I3WEc0Z0lDQWdJQ0F2THlCTWFYUmxjbUZzY3lCa2J5QnViM1FnYm1WbFpDQjBieUJpWlNCcGJt
eHBibVZrWEc0Z0lDQWdJQ0J6ZEdGamF5QTlJRnQwYjNBdWRtRnNkV1ZkTzF4dUlDQWdJQ0FnY0hK
bFptbDRJRDBnV3ljb0p5d2djM1JoWTJ0ZE8xeHVJQ0FnSUNBZ2RYTmxaRXhwZEdWeVlXd2dQU0Iw
Y25WbE8xeHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0F2THlCSFpYUWdiM0lnWTNKbFlYUmxJ
SFJvWlNCamRYSnlaVzUwSUhOMFlXTnJJRzVoYldVZ1ptOXlJSFZ6WlNCaWVTQjBhR1VnYVc1c2FX
NWxYRzRnSUNBZ0lDQmpjbVZoZEdWa1UzUmhZMnNnUFNCMGNuVmxPMXh1SUNBZ0lDQWdiR1YwSUc1
aGJXVWdQU0IwYUdsekxtbHVZM0pUZEdGamF5Z3BPMXh1WEc0Z0lDQWdJQ0J3Y21WbWFYZ2dQU0Ji
Snlnb0p5d2dkR2hwY3k1d2RYTm9LRzVoYldVcExDQW5JRDBnSnl3Z2RHOXdMQ0FuS1NkZE8xeHVJ
Q0FnSUNBZ2MzUmhZMnNnUFNCMGFHbHpMblJ2Y0ZOMFlXTnJLQ2s3WEc0Z0lDQWdmVnh1WEc0Z0lD
QWdiR1YwSUdsMFpXMGdQU0JqWVd4c1ltRmpheTVqWVd4c0tIUm9hWE1zSUhOMFlXTnJLVHRjYmx4
dUlDQWdJR2xtSUNnaGRYTmxaRXhwZEdWeVlXd3BJSHRjYmlBZ0lDQWdJSFJvYVhNdWNHOXdVM1Jo
WTJzb0tUdGNiaUFnSUNCOVhHNGdJQ0FnYVdZZ0tHTnlaV0YwWldSVGRHRmpheWtnZTF4dUlDQWdJ
Q0FnZEdocGN5NXpkR0ZqYTFOc2IzUXRMVHRjYmlBZ0lDQjlYRzRnSUNBZ2RHaHBjeTV3ZFhOb0tI
QnlaV1pwZUM1amIyNWpZWFFvYVhSbGJTd2dKeWtuS1NrN1hHNGdJSDBzWEc1Y2JpQWdhVzVqY2xO
MFlXTnJPaUJtZFc1amRHbHZiaWdwSUh0Y2JpQWdJQ0IwYUdsekxuTjBZV05yVTJ4dmRDc3JPMXh1
SUNBZ0lHbG1JQ2gwYUdsekxuTjBZV05yVTJ4dmRDQStJSFJvYVhNdWMzUmhZMnRXWVhKekxteGxi
bWQwYUNrZ2V5QjBhR2x6TG5OMFlXTnJWbUZ5Y3k1d2RYTm9LQ2R6ZEdGamF5Y2dLeUIwYUdsekxu
TjBZV05yVTJ4dmRDazdJSDFjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTUwYjNCVGRHRmphMDVoYldV
b0tUdGNiaUFnZlN4Y2JpQWdkRzl3VTNSaFkydE9ZVzFsT2lCbWRXNWpkR2x2YmlncElIdGNiaUFn
SUNCeVpYUjFjbTRnSjNOMFlXTnJKeUFySUhSb2FYTXVjM1JoWTJ0VGJHOTBPMXh1SUNCOUxGeHVJ
Q0JtYkhWemFFbHViR2x1WlRvZ1puVnVZM1JwYjI0b0tTQjdYRzRnSUNBZ2JHVjBJR2x1YkdsdVpW
TjBZV05ySUQwZ2RHaHBjeTVwYm14cGJtVlRkR0ZqYXp0Y2JpQWdJQ0IwYUdsekxtbHViR2x1WlZO
MFlXTnJJRDBnVzEwN1hHNGdJQ0FnWm05eUlDaHNaWFFnYVNBOUlEQXNJR3hsYmlBOUlHbHViR2x1
WlZOMFlXTnJMbXhsYm1kMGFEc2dhU0E4SUd4bGJqc2dhU3NyS1NCN1hHNGdJQ0FnSUNCc1pYUWda
VzUwY25rZ1BTQnBibXhwYm1WVGRHRmphMXRwWFR0Y2JpQWdJQ0FnSUM4cUlHbHpkR0Z1WW5Wc0lH
bG5ibTl5WlNCcFppQXFMMXh1SUNBZ0lDQWdhV1lnS0dWdWRISjVJR2x1YzNSaGJtTmxiMllnVEds
MFpYSmhiQ2tnZTF4dUlDQWdJQ0FnSUNCMGFHbHpMbU52YlhCcGJHVlRkR0ZqYXk1d2RYTm9LR1Z1
ZEhKNUtUdGNiaUFnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lHeGxkQ0J6ZEdGamF5QTlJ
SFJvYVhNdWFXNWpjbE4wWVdOcktDazdYRzRnSUNBZ0lDQWdJSFJvYVhNdWNIVnphRk52ZFhKalpT
aGJjM1JoWTJzc0lDY2dQU0FuTENCbGJuUnllU3dnSnpzblhTazdYRzRnSUNBZ0lDQWdJSFJvYVhN
dVkyOXRjR2xzWlZOMFlXTnJMbkIxYzJnb2MzUmhZMnNwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFj
YmlBZ2ZTeGNiaUFnYVhOSmJteHBibVU2SUdaMWJtTjBhVzl1S0NrZ2UxeHVJQ0FnSUhKbGRIVnli
aUIwYUdsekxtbHViR2x1WlZOMFlXTnJMbXhsYm1kMGFEdGNiaUFnZlN4Y2JseHVJQ0J3YjNCVGRH
Rmphem9nWm5WdVkzUnBiMjRvZDNKaGNIQmxaQ2tnZTF4dUlDQWdJR3hsZENCcGJteHBibVVnUFNC
MGFHbHpMbWx6U1c1c2FXNWxLQ2tzWEc0Z0lDQWdJQ0FnSUdsMFpXMGdQU0FvYVc1c2FXNWxJRDhn
ZEdocGN5NXBibXhwYm1WVGRHRmpheUE2SUhSb2FYTXVZMjl0Y0dsc1pWTjBZV05yS1M1d2IzQW9L
VHRjYmx4dUlDQWdJR2xtSUNnaGQzSmhjSEJsWkNBbUppQW9hWFJsYlNCcGJuTjBZVzVqWlc5bUlF
eHBkR1Z5WVd3cEtTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z2FYUmxiUzUyWVd4MVpUdGNiaUFnSUNC
OUlHVnNjMlVnZTF4dUlDQWdJQ0FnYVdZZ0tDRnBibXhwYm1VcElIdGNiaUFnSUNBZ0lDQWdMeW9n
YVhOMFlXNWlkV3dnYVdkdWIzSmxJRzVsZUhRZ0tpOWNiaUFnSUNBZ0lDQWdhV1lnS0NGMGFHbHpM
bk4wWVdOclUyeHZkQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lIUm9jbTkzSUc1bGR5QkZlR05sY0hScGIy
NG9KMGx1ZG1Gc2FXUWdjM1JoWTJzZ2NHOXdKeWs3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNB
Z2RHaHBjeTV6ZEdGamExTnNiM1F0TFR0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0FnSUhKbGRIVnliaUJw
ZEdWdE8xeHVJQ0FnSUgxY2JpQWdmU3hjYmx4dUlDQjBiM0JUZEdGamF6b2dablZ1WTNScGIyNG9L
U0I3WEc0Z0lDQWdiR1YwSUhOMFlXTnJJRDBnS0hSb2FYTXVhWE5KYm14cGJtVW9LU0EvSUhSb2FY
TXVhVzVzYVc1bFUzUmhZMnNnT2lCMGFHbHpMbU52YlhCcGJHVlRkR0ZqYXlrc1hHNGdJQ0FnSUNB
Z0lHbDBaVzBnUFNCemRHRmphMXR6ZEdGamF5NXNaVzVuZEdnZ0xTQXhYVHRjYmx4dUlDQWdJQzhx
SUdsemRHRnVZblZzSUdsbmJtOXlaU0JwWmlBcUwxeHVJQ0FnSUdsbUlDaHBkR1Z0SUdsdWMzUmhi
bU5sYjJZZ1RHbDBaWEpoYkNrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUdsMFpXMHVkbUZzZFdVN1hH
NGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQnBkR1Z0TzF4dUlDQWdJSDFjYmlB
Z2ZTeGNibHh1SUNCamIyNTBaWGgwVG1GdFpUb2dablZ1WTNScGIyNG9ZMjl1ZEdWNGRDa2dlMXh1
SUNBZ0lHbG1JQ2gwYUdsekxuVnpaVVJsY0hSb2N5QW1KaUJqYjI1MFpYaDBLU0I3WEc0Z0lDQWdJ
Q0J5WlhSMWNtNGdKMlJsY0hSb2Mxc25JQ3NnWTI5dWRHVjRkQ0FySUNkZEp6dGNiaUFnSUNCOUlH
VnNjMlVnZTF4dUlDQWdJQ0FnY21WMGRYSnVJQ2RrWlhCMGFDY2dLeUJqYjI1MFpYaDBPMXh1SUNB
Z0lIMWNiaUFnZlN4Y2JseHVJQ0J4ZFc5MFpXUlRkSEpwYm1jNklHWjFibU4wYVc5dUtITjBjaWtn
ZTF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG5OdmRYSmpaUzV4ZFc5MFpXUlRkSEpwYm1jb2MzUnlL
VHRjYmlBZ2ZTeGNibHh1SUNCdlltcGxZM1JNYVhSbGNtRnNPaUJtZFc1amRHbHZiaWh2WW1vcElI
dGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NXpiM1Z5WTJVdWIySnFaV04wVEdsMFpYSmhiQ2h2WW1v
cE8xeHVJQ0I5TEZ4dVhHNGdJR0ZzYVdGellXSnNaVG9nWm5WdVkzUnBiMjRvYm1GdFpTa2dlMXh1
SUNBZ0lHeGxkQ0J5WlhRZ1BTQjBhR2x6TG1Gc2FXRnpaWE5iYm1GdFpWMDdYRzRnSUNBZ2FXWWdL
SEpsZENrZ2UxeHVJQ0FnSUNBZ2NtVjBMbkpsWm1WeVpXNWpaVU52ZFc1MEt5czdYRzRnSUNBZ0lD
QnlaWFIxY200Z2NtVjBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lISmxkQ0E5SUhSb2FYTXVZV3hwWVhO
bGMxdHVZVzFsWFNBOUlIUm9hWE11YzI5MWNtTmxMbmR5WVhBb2JtRnRaU2s3WEc0Z0lDQWdjbVYw
TG1Gc2FXRnpZV0pzWlNBOUlIUnlkV1U3WEc0Z0lDQWdjbVYwTG5KbFptVnlaVzVqWlVOdmRXNTBJ
RDBnTVR0Y2JseHVJQ0FnSUhKbGRIVnliaUJ5WlhRN1hHNGdJSDBzWEc1Y2JpQWdjMlYwZFhCSVpX
eHdaWEk2SUdaMWJtTjBhVzl1S0hCaGNtRnRVMmw2WlN3Z2JtRnRaU3dnWW14dlkydElaV3h3WlhJ
cElIdGNiaUFnSUNCc1pYUWdjR0Z5WVcxeklEMGdXMTBzWEc0Z0lDQWdJQ0FnSUhCaGNtRnRjMGx1
YVhRZ1BTQjBhR2x6TG5ObGRIVndTR1ZzY0dWeVFYSm5jeWh1WVcxbExDQndZWEpoYlZOcGVtVXNJ
SEJoY21GdGN5d2dZbXh2WTJ0SVpXeHdaWElwTzF4dUlDQWdJR3hsZENCbWIzVnVaRWhsYkhCbGNp
QTlJSFJvYVhNdWJtRnRaVXh2YjJ0MWNDZ25hR1ZzY0dWeWN5Y3NJRzVoYldVc0lDZG9aV3h3WlhJ
bktTeGNiaUFnSUNBZ0lDQWdZMkZzYkVOdmJuUmxlSFFnUFNCMGFHbHpMbUZzYVdGellXSnNaU2hn
Skh0MGFHbHpMbU52Ym5SbGVIUk9ZVzFsS0RBcGZTQWhQU0J1ZFd4c0lEOGdKSHQwYUdsekxtTnZi
blJsZUhST1lXMWxLREFwZlNBNklIdDlZQ2s3WEc1Y2JpQWdJQ0J5WlhSMWNtNGdlMXh1SUNBZ0lD
QWdjR0Z5WVcxek9pQndZWEpoYlhNc1hHNGdJQ0FnSUNCd1lYSmhiWE5KYm1sME9pQndZWEpoYlhO
SmJtbDBMRnh1SUNBZ0lDQWdibUZ0WlRvZ1ptOTFibVJJWld4d1pYSXNYRzRnSUNBZ0lDQmpZV3hz
VUdGeVlXMXpPaUJiWTJGc2JFTnZiblJsZUhSZExtTnZibU5oZENod1lYSmhiWE1wWEc0Z0lDQWdm
VHRjYmlBZ2ZTeGNibHh1SUNCelpYUjFjRkJoY21GdGN6b2dablZ1WTNScGIyNG9hR1ZzY0dWeUxD
QndZWEpoYlZOcGVtVXNJSEJoY21GdGN5a2dlMXh1SUNBZ0lHeGxkQ0J2Y0hScGIyNXpJRDBnZTMw
c1hHNGdJQ0FnSUNBZ0lHTnZiblJsZUhSeklEMGdXMTBzWEc0Z0lDQWdJQ0FnSUhSNWNHVnpJRDBn
VzEwc1hHNGdJQ0FnSUNBZ0lHbGtjeUE5SUZ0ZExGeHVJQ0FnSUNBZ0lDQnZZbXBsWTNSQmNtZHpJ
RDBnSVhCaGNtRnRjeXhjYmlBZ0lDQWdJQ0FnY0dGeVlXMDdYRzVjYmlBZ0lDQnBaaUFvYjJKcVpX
TjBRWEpuY3lrZ2UxeHVJQ0FnSUNBZ2NHRnlZVzF6SUQwZ1cxMDdYRzRnSUNBZ2ZWeHVYRzRnSUNB
Z2IzQjBhVzl1Y3k1dVlXMWxJRDBnZEdocGN5NXhkVzkwWldSVGRISnBibWNvYUdWc2NHVnlLVHRj
YmlBZ0lDQnZjSFJwYjI1ekxtaGhjMmdnUFNCMGFHbHpMbkJ2Y0ZOMFlXTnJLQ2s3WEc1Y2JpQWdJ
Q0JwWmlBb2RHaHBjeTUwY21GamEwbGtjeWtnZTF4dUlDQWdJQ0FnYjNCMGFXOXVjeTVvWVhOb1NX
UnpJRDBnZEdocGN5NXdiM0JUZEdGamF5Z3BPMXh1SUNBZ0lIMWNiaUFnSUNCcFppQW9kR2hwY3k1
emRISnBibWRRWVhKaGJYTXBJSHRjYmlBZ0lDQWdJRzl3ZEdsdmJuTXVhR0Z6YUZSNWNHVnpJRDBn
ZEdocGN5NXdiM0JUZEdGamF5Z3BPMXh1SUNBZ0lDQWdiM0IwYVc5dWN5NW9ZWE5vUTI5dWRHVjRk
SE1nUFNCMGFHbHpMbkJ2Y0ZOMFlXTnJLQ2s3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdiR1YwSUdsdWRt
VnljMlVnUFNCMGFHbHpMbkJ2Y0ZOMFlXTnJLQ2tzWEc0Z0lDQWdJQ0FnSUhCeWIyZHlZVzBnUFNC
MGFHbHpMbkJ2Y0ZOMFlXTnJLQ2s3WEc1Y2JpQWdJQ0F2THlCQmRtOXBaQ0J6WlhSMGFXNW5JR1p1
SUdGdVpDQnBiblpsY25ObElHbG1JRzVsYVhSb1pYSWdZWEpsSUhObGRDNGdWR2hwY3lCaGJHeHZk
M05jYmlBZ0lDQXZMeUJvWld4d1pYSnpJSFJ2SUdSdklHRWdZMmhsWTJzZ1ptOXlJR0JwWmlBb2Iz
QjBhVzl1Y3k1bWJpbGdYRzRnSUNBZ2FXWWdLSEJ5YjJkeVlXMGdmSHdnYVc1MlpYSnpaU2tnZTF4
dUlDQWdJQ0FnYjNCMGFXOXVjeTVtYmlBOUlIQnliMmR5WVcwZ2ZId2dKMk52Ym5SaGFXNWxjaTV1
YjI5d0p6dGNiaUFnSUNBZ0lHOXdkR2x2Ym5NdWFXNTJaWEp6WlNBOUlHbHVkbVZ5YzJVZ2ZId2dK
Mk52Ym5SaGFXNWxjaTV1YjI5d0p6dGNiaUFnSUNCOVhHNWNiaUFnSUNBdkx5QlVhR1VnY0dGeVlX
MWxkR1Z5Y3lCbmJ5QnZiaUIwYnlCMGFHVWdjM1JoWTJzZ2FXNGdiM0prWlhJZ0tHMWhhMmx1WnlC
emRYSmxJSFJvWVhRZ2RHaGxlU0JoY21VZ1pYWmhiSFZoZEdWa0lHbHVJRzl5WkdWeUtWeHVJQ0Fn
SUM4dklITnZJSGRsSUc1bFpXUWdkRzhnY0c5d0lIUm9aVzBnYjJabUlIUm9aU0J6ZEdGamF5QnBi
aUJ5WlhabGNuTmxJRzl5WkdWeVhHNGdJQ0FnYkdWMElHa2dQU0J3WVhKaGJWTnBlbVU3WEc0Z0lD
QWdkMmhwYkdVZ0tHa3RMU2tnZTF4dUlDQWdJQ0FnY0dGeVlXMGdQU0IwYUdsekxuQnZjRk4wWVdO
cktDazdYRzRnSUNBZ0lDQndZWEpoYlhOYmFWMGdQU0J3WVhKaGJUdGNibHh1SUNBZ0lDQWdhV1ln
S0hSb2FYTXVkSEpoWTJ0SlpITXBJSHRjYmlBZ0lDQWdJQ0FnYVdSelcybGRJRDBnZEdocGN5NXdi
M0JUZEdGamF5Z3BPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdhV1lnS0hSb2FYTXVjM1J5YVc1blVH
RnlZVzF6S1NCN1hHNGdJQ0FnSUNBZ0lIUjVjR1Z6VzJsZElEMGdkR2hwY3k1d2IzQlRkR0ZqYXln
cE8xeHVJQ0FnSUNBZ0lDQmpiMjUwWlhoMGMxdHBYU0E5SUhSb2FYTXVjRzl3VTNSaFkyc29LVHRj
YmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzVjYmlBZ0lDQnBaaUFvYjJKcVpXTjBRWEpuY3lrZ2UxeHVJ
Q0FnSUNBZ2IzQjBhVzl1Y3k1aGNtZHpJRDBnZEdocGN5NXpiM1Z5WTJVdVoyVnVaWEpoZEdWQmNu
SmhlU2h3WVhKaGJYTXBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHbG1JQ2gwYUdsekxuUnlZV05yU1dS
ektTQjdYRzRnSUNBZ0lDQnZjSFJwYjI1ekxtbGtjeUE5SUhSb2FYTXVjMjkxY21ObExtZGxibVZ5
WVhSbFFYSnlZWGtvYVdSektUdGNiaUFnSUNCOVhHNGdJQ0FnYVdZZ0tIUm9hWE11YzNSeWFXNW5V
R0Z5WVcxektTQjdYRzRnSUNBZ0lDQnZjSFJwYjI1ekxuUjVjR1Z6SUQwZ2RHaHBjeTV6YjNWeVky
VXVaMlZ1WlhKaGRHVkJjbkpoZVNoMGVYQmxjeWs3WEc0Z0lDQWdJQ0J2Y0hScGIyNXpMbU52Ym5S
bGVIUnpJRDBnZEdocGN5NXpiM1Z5WTJVdVoyVnVaWEpoZEdWQmNuSmhlU2hqYjI1MFpYaDBjeWs3
WEc0Z0lDQWdmVnh1WEc0Z0lDQWdhV1lnS0hSb2FYTXViM0IwYVc5dWN5NWtZWFJoS1NCN1hHNGdJ
Q0FnSUNCdmNIUnBiMjV6TG1SaGRHRWdQU0FuWkdGMFlTYzdYRzRnSUNBZ2ZWeHVJQ0FnSUdsbUlD
aDBhR2x6TG5WelpVSnNiMk5yVUdGeVlXMXpLU0I3WEc0Z0lDQWdJQ0J2Y0hScGIyNXpMbUpzYjJO
clVHRnlZVzF6SUQwZ0oySnNiMk5yVUdGeVlXMXpKenRjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1
SUc5d2RHbHZibk03WEc0Z0lIMHNYRzVjYmlBZ2MyVjBkWEJJWld4d1pYSkJjbWR6T2lCbWRXNWpk
R2x2Ymlob1pXeHdaWElzSUhCaGNtRnRVMmw2WlN3Z2NHRnlZVzF6TENCMWMyVlNaV2RwYzNSbGNp
a2dlMXh1SUNBZ0lHeGxkQ0J2Y0hScGIyNXpJRDBnZEdocGN5NXpaWFIxY0ZCaGNtRnRjeWhvWld4
d1pYSXNJSEJoY21GdFUybDZaU3dnY0dGeVlXMXpLVHRjYmlBZ0lDQnZjSFJwYjI1eklEMGdkR2hw
Y3k1dlltcGxZM1JNYVhSbGNtRnNLRzl3ZEdsdmJuTXBPMXh1SUNBZ0lHbG1JQ2gxYzJWU1pXZHBj
M1JsY2lrZ2UxeHVJQ0FnSUNBZ2RHaHBjeTUxYzJWU1pXZHBjM1JsY2lnbmIzQjBhVzl1Y3ljcE8x
eHVJQ0FnSUNBZ2NHRnlZVzF6TG5CMWMyZ29KMjl3ZEdsdmJuTW5LVHRjYmlBZ0lDQWdJSEpsZEhW
eWJpQmJKMjl3ZEdsdmJuTTlKeXdnYjNCMGFXOXVjMTA3WEc0Z0lDQWdmU0JsYkhObElHbG1JQ2h3
WVhKaGJYTXBJSHRjYmlBZ0lDQWdJSEJoY21GdGN5NXdkWE5vS0c5d2RHbHZibk1wTzF4dUlDQWdJ
Q0FnY21WMGRYSnVJQ2NuTzF4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z2Iz
QjBhVzl1Y3p0Y2JpQWdJQ0I5WEc0Z0lIMWNibjA3WEc1Y2JseHVLR1oxYm1OMGFXOXVLQ2tnZTF4
dUlDQmpiMjV6ZENCeVpYTmxjblpsWkZkdmNtUnpJRDBnS0Z4dUlDQWdJQ2RpY21WaGF5QmxiSE5s
SUc1bGR5QjJZWEluSUN0Y2JpQWdJQ0FuSUdOaGMyVWdabWx1WVd4c2VTQnlaWFIxY200Z2RtOXBa
Q2NnSzF4dUlDQWdJQ2NnWTJGMFkyZ2dabTl5SUhOM2FYUmphQ0IzYUdsc1pTY2dLMXh1SUNBZ0lD
Y2dZMjl1ZEdsdWRXVWdablZ1WTNScGIyNGdkR2hwY3lCM2FYUm9KeUFyWEc0Z0lDQWdKeUJrWlda
aGRXeDBJR2xtSUhSb2NtOTNKeUFyWEc0Z0lDQWdKeUJrWld4bGRHVWdhVzRnZEhKNUp5QXJYRzRn
SUNBZ0p5QmtieUJwYm5OMFlXNWpaVzltSUhSNWNHVnZaaWNnSzF4dUlDQWdJQ2NnWVdKemRISmhZ
M1FnWlc1MWJTQnBiblFnYzJodmNuUW5JQ3RjYmlBZ0lDQW5JR0p2YjJ4bFlXNGdaWGh3YjNKMElH
bHVkR1Z5Wm1GalpTQnpkR0YwYVdNbklDdGNiaUFnSUNBbklHSjVkR1VnWlhoMFpXNWtjeUJzYjI1
bklITjFjR1Z5SnlBclhHNGdJQ0FnSnlCamFHRnlJR1pwYm1Gc0lHNWhkR2wyWlNCemVXNWphSEp2
Ym1sNlpXUW5JQ3RjYmlBZ0lDQW5JR05zWVhOeklHWnNiMkYwSUhCaFkydGhaMlVnZEdoeWIzZHpK
eUFyWEc0Z0lDQWdKeUJqYjI1emRDQm5iM1J2SUhCeWFYWmhkR1VnZEhKaGJuTnBaVzUwSnlBclhH
NGdJQ0FnSnlCa1pXSjFaMmRsY2lCcGJYQnNaVzFsYm5SeklIQnliM1JsWTNSbFpDQjJiMnhoZEds
c1pTY2dLMXh1SUNBZ0lDY2daRzkxWW14bElHbHRjRzl5ZENCd2RXSnNhV01nYkdWMElIbHBaV3hr
SUdGM1lXbDBKeUFyWEc0Z0lDQWdKeUJ1ZFd4c0lIUnlkV1VnWm1Gc2MyVW5YRzRnSUNrdWMzQnNh
WFFvSnlBbktUdGNibHh1SUNCamIyNXpkQ0JqYjIxd2FXeGxjbGR2Y21SeklEMGdTbUYyWVZOamNt
bHdkRU52YlhCcGJHVnlMbEpGVTBWU1ZrVkVYMWRQVWtSVElEMGdlMzA3WEc1Y2JpQWdabTl5SUNo
c1pYUWdhU0E5SURBc0lHd2dQU0J5WlhObGNuWmxaRmR2Y21SekxteGxibWQwYURzZ2FTQThJR3c3
SUdrckt5a2dlMXh1SUNBZ0lHTnZiWEJwYkdWeVYyOXlaSE5iY21WelpYSjJaV1JYYjNKa2MxdHBY
VjBnUFNCMGNuVmxPMXh1SUNCOVhHNTlLQ2twTzF4dVhHNUtZWFpoVTJOeWFYQjBRMjl0Y0dsc1pY
SXVhWE5XWVd4cFpFcGhkbUZUWTNKcGNIUldZWEpwWVdKc1pVNWhiV1VnUFNCbWRXNWpkR2x2Ymlo
dVlXMWxLU0I3WEc0Z0lISmxkSFZ5YmlBaFNtRjJZVk5qY21sd2RFTnZiWEJwYkdWeUxsSkZVMFZT
VmtWRVgxZFBVa1JUVzI1aGJXVmRJQ1ltSUNndlhsdGhMWHBCTFZwZkpGMWJNQzA1WVMxNlFTMWFY
eVJkS2lRdktTNTBaWE4wS0c1aGJXVXBPMXh1ZlR0Y2JseHVablZ1WTNScGIyNGdjM1J5YVdOMFRH
OXZhM1Z3S0hKbGNYVnBjbVZVWlhKdGFXNWhiQ3dnWTI5dGNHbHNaWElzSUhCaGNuUnpMQ0IwZVhC
bEtTQjdYRzRnSUd4bGRDQnpkR0ZqYXlBOUlHTnZiWEJwYkdWeUxuQnZjRk4wWVdOcktDa3NYRzRn
SUNBZ0lDQnBJRDBnTUN4Y2JpQWdJQ0FnSUd4bGJpQTlJSEJoY25SekxteGxibWQwYUR0Y2JpQWdh
V1lnS0hKbGNYVnBjbVZVWlhKdGFXNWhiQ2tnZTF4dUlDQWdJR3hsYmkwdE8xeHVJQ0I5WEc1Y2Jp
QWdabTl5SUNnN0lHa2dQQ0JzWlc0N0lHa3JLeWtnZTF4dUlDQWdJSE4wWVdOcklEMGdZMjl0Y0ds
c1pYSXVibUZ0WlV4dmIydDFjQ2h6ZEdGamF5d2djR0Z5ZEhOYmFWMHNJSFI1Y0dVcE8xeHVJQ0I5
WEc1Y2JpQWdhV1lnS0hKbGNYVnBjbVZVWlhKdGFXNWhiQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQmJZ
Mjl0Y0dsc1pYSXVZV3hwWVhOaFlteGxLQ2RqYjI1MFlXbHVaWEl1YzNSeWFXTjBKeWtzSUNjb0p5
d2djM1JoWTJzc0lDY3NJQ2NzSUdOdmJYQnBiR1Z5TG5GMWIzUmxaRk4wY21sdVp5aHdZWEowYzF0
cFhTa3NJQ2NwSjEwN1hHNGdJSDBnWld4elpTQjdYRzRnSUNBZ2NtVjBkWEp1SUhOMFlXTnJPMXh1
SUNCOVhHNTlYRzVjYm1WNGNHOXlkQ0JrWldaaGRXeDBJRXBoZG1GVFkzSnBjSFJEYjIxd2FXeGxj
anRjYmlKZGZRPT0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMv
aGFuZGxlYmFycy9kaXN0L2Nqcy9oYW5kbGViYXJzL2NvbXBpbGVyL3BhcnNlci5qcyBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2Nqcy9oYW5kbGViYXJz
L2NvbXBpbGVyL3BhcnNlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZWY4NTRjM2VmNDk0ZGE1OTM2MDRiMmE1
ZjQ2ZWRmMTNjZDczODA3Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25v
ZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvY2pzL2hhbmRsZWJhcnMvY29tcGlsZXIvcGFyc2Vy
LmpzCkBAIC0wLDAgKzEsNzM4IEBACisvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLworLyogSmlz
b24gZ2VuZXJhdGVkIHBhcnNlciAqLworInVzZSBzdHJpY3QiOworCit2YXIgaGFuZGxlYmFycyA9
IChmdW5jdGlvbiAoKSB7CisgICAgdmFyIHBhcnNlciA9IHsgdHJhY2U6IGZ1bmN0aW9uIHRyYWNl
KCkge30sCisgICAgICAgIHl5OiB7fSwKKyAgICAgICAgc3ltYm9sc186IHsgImVycm9yIjogMiwg
InJvb3QiOiAzLCAicHJvZ3JhbSI6IDQsICJFT0YiOiA1LCAicHJvZ3JhbV9yZXBldGl0aW9uMCI6
IDYsICJzdGF0ZW1lbnQiOiA3LCAibXVzdGFjaGUiOiA4LCAiYmxvY2siOiA5LCAicmF3QmxvY2si
OiAxMCwgInBhcnRpYWwiOiAxMSwgInBhcnRpYWxCbG9jayI6IDEyLCAiY29udGVudCI6IDEzLCAi
Q09NTUVOVCI6IDE0LCAiQ09OVEVOVCI6IDE1LCAib3BlblJhd0Jsb2NrIjogMTYsICJyYXdCbG9j
a19yZXBldGl0aW9uX3BsdXMwIjogMTcsICJFTkRfUkFXX0JMT0NLIjogMTgsICJPUEVOX1JBV19C
TE9DSyI6IDE5LCAiaGVscGVyTmFtZSI6IDIwLCAib3BlblJhd0Jsb2NrX3JlcGV0aXRpb24wIjog
MjEsICJvcGVuUmF3QmxvY2tfb3B0aW9uMCI6IDIyLCAiQ0xPU0VfUkFXX0JMT0NLIjogMjMsICJv
cGVuQmxvY2siOiAyNCwgImJsb2NrX29wdGlvbjAiOiAyNSwgImNsb3NlQmxvY2siOiAyNiwgIm9w
ZW5JbnZlcnNlIjogMjcsICJibG9ja19vcHRpb24xIjogMjgsICJPUEVOX0JMT0NLIjogMjksICJv
cGVuQmxvY2tfcmVwZXRpdGlvbjAiOiAzMCwgIm9wZW5CbG9ja19vcHRpb24wIjogMzEsICJvcGVu
QmxvY2tfb3B0aW9uMSI6IDMyLCAiQ0xPU0UiOiAzMywgIk9QRU5fSU5WRVJTRSI6IDM0LCAib3Bl
bkludmVyc2VfcmVwZXRpdGlvbjAiOiAzNSwgIm9wZW5JbnZlcnNlX29wdGlvbjAiOiAzNiwgIm9w
ZW5JbnZlcnNlX29wdGlvbjEiOiAzNywgIm9wZW5JbnZlcnNlQ2hhaW4iOiAzOCwgIk9QRU5fSU5W
RVJTRV9DSEFJTiI6IDM5LCAib3BlbkludmVyc2VDaGFpbl9yZXBldGl0aW9uMCI6IDQwLCAib3Bl
bkludmVyc2VDaGFpbl9vcHRpb24wIjogNDEsICJvcGVuSW52ZXJzZUNoYWluX29wdGlvbjEiOiA0
MiwgImludmVyc2VBbmRQcm9ncmFtIjogNDMsICJJTlZFUlNFIjogNDQsICJpbnZlcnNlQ2hhaW4i
OiA0NSwgImludmVyc2VDaGFpbl9vcHRpb24wIjogNDYsICJPUEVOX0VOREJMT0NLIjogNDcsICJP
UEVOIjogNDgsICJtdXN0YWNoZV9yZXBldGl0aW9uMCI6IDQ5LCAibXVzdGFjaGVfb3B0aW9uMCI6
IDUwLCAiT1BFTl9VTkVTQ0FQRUQiOiA1MSwgIm11c3RhY2hlX3JlcGV0aXRpb24xIjogNTIsICJt
dXN0YWNoZV9vcHRpb24xIjogNTMsICJDTE9TRV9VTkVTQ0FQRUQiOiA1NCwgIk9QRU5fUEFSVElB
TCI6IDU1LCAicGFydGlhbE5hbWUiOiA1NiwgInBhcnRpYWxfcmVwZXRpdGlvbjAiOiA1NywgInBh
cnRpYWxfb3B0aW9uMCI6IDU4LCAib3BlblBhcnRpYWxCbG9jayI6IDU5LCAiT1BFTl9QQVJUSUFM
X0JMT0NLIjogNjAsICJvcGVuUGFydGlhbEJsb2NrX3JlcGV0aXRpb24wIjogNjEsICJvcGVuUGFy
dGlhbEJsb2NrX29wdGlvbjAiOiA2MiwgInBhcmFtIjogNjMsICJzZXhwciI6IDY0LCAiT1BFTl9T
RVhQUiI6IDY1LCAic2V4cHJfcmVwZXRpdGlvbjAiOiA2NiwgInNleHByX29wdGlvbjAiOiA2Nywg
IkNMT1NFX1NFWFBSIjogNjgsICJoYXNoIjogNjksICJoYXNoX3JlcGV0aXRpb25fcGx1czAiOiA3
MCwgImhhc2hTZWdtZW50IjogNzEsICJJRCI6IDcyLCAiRVFVQUxTIjogNzMsICJibG9ja1BhcmFt
cyI6IDc0LCAiT1BFTl9CTE9DS19QQVJBTVMiOiA3NSwgImJsb2NrUGFyYW1zX3JlcGV0aXRpb25f
cGx1czAiOiA3NiwgIkNMT1NFX0JMT0NLX1BBUkFNUyI6IDc3LCAicGF0aCI6IDc4LCAiZGF0YU5h
bWUiOiA3OSwgIlNUUklORyI6IDgwLCAiTlVNQkVSIjogODEsICJCT09MRUFOIjogODIsICJVTkRF
RklORUQiOiA4MywgIk5VTEwiOiA4NCwgIkRBVEEiOiA4NSwgInBhdGhTZWdtZW50cyI6IDg2LCAi
U0VQIjogODcsICIkYWNjZXB0IjogMCwgIiRlbmQiOiAxIH0sCisgICAgICAgIHRlcm1pbmFsc186
IHsgMjogImVycm9yIiwgNTogIkVPRiIsIDE0OiAiQ09NTUVOVCIsIDE1OiAiQ09OVEVOVCIsIDE4
OiAiRU5EX1JBV19CTE9DSyIsIDE5OiAiT1BFTl9SQVdfQkxPQ0siLCAyMzogIkNMT1NFX1JBV19C
TE9DSyIsIDI5OiAiT1BFTl9CTE9DSyIsIDMzOiAiQ0xPU0UiLCAzNDogIk9QRU5fSU5WRVJTRSIs
IDM5OiAiT1BFTl9JTlZFUlNFX0NIQUlOIiwgNDQ6ICJJTlZFUlNFIiwgNDc6ICJPUEVOX0VOREJM
T0NLIiwgNDg6ICJPUEVOIiwgNTE6ICJPUEVOX1VORVNDQVBFRCIsIDU0OiAiQ0xPU0VfVU5FU0NB
UEVEIiwgNTU6ICJPUEVOX1BBUlRJQUwiLCA2MDogIk9QRU5fUEFSVElBTF9CTE9DSyIsIDY1OiAi
T1BFTl9TRVhQUiIsIDY4OiAiQ0xPU0VfU0VYUFIiLCA3MjogIklEIiwgNzM6ICJFUVVBTFMiLCA3
NTogIk9QRU5fQkxPQ0tfUEFSQU1TIiwgNzc6ICJDTE9TRV9CTE9DS19QQVJBTVMiLCA4MDogIlNU
UklORyIsIDgxOiAiTlVNQkVSIiwgODI6ICJCT09MRUFOIiwgODM6ICJVTkRFRklORUQiLCA4NDog
Ik5VTEwiLCA4NTogIkRBVEEiLCA4NzogIlNFUCIgfSwKKyAgICAgICAgcHJvZHVjdGlvbnNfOiBb
MCwgWzMsIDJdLCBbNCwgMV0sIFs3LCAxXSwgWzcsIDFdLCBbNywgMV0sIFs3LCAxXSwgWzcsIDFd
LCBbNywgMV0sIFs3LCAxXSwgWzEzLCAxXSwgWzEwLCAzXSwgWzE2LCA1XSwgWzksIDRdLCBbOSwg
NF0sIFsyNCwgNl0sIFsyNywgNl0sIFszOCwgNl0sIFs0MywgMl0sIFs0NSwgM10sIFs0NSwgMV0s
IFsyNiwgM10sIFs4LCA1XSwgWzgsIDVdLCBbMTEsIDVdLCBbMTIsIDNdLCBbNTksIDVdLCBbNjMs
IDFdLCBbNjMsIDFdLCBbNjQsIDVdLCBbNjksIDFdLCBbNzEsIDNdLCBbNzQsIDNdLCBbMjAsIDFd
LCBbMjAsIDFdLCBbMjAsIDFdLCBbMjAsIDFdLCBbMjAsIDFdLCBbMjAsIDFdLCBbMjAsIDFdLCBb
NTYsIDFdLCBbNTYsIDFdLCBbNzksIDJdLCBbNzgsIDFdLCBbODYsIDNdLCBbODYsIDFdLCBbNiwg
MF0sIFs2LCAyXSwgWzE3LCAxXSwgWzE3LCAyXSwgWzIxLCAwXSwgWzIxLCAyXSwgWzIyLCAwXSwg
WzIyLCAxXSwgWzI1LCAwXSwgWzI1LCAxXSwgWzI4LCAwXSwgWzI4LCAxXSwgWzMwLCAwXSwgWzMw
LCAyXSwgWzMxLCAwXSwgWzMxLCAxXSwgWzMyLCAwXSwgWzMyLCAxXSwgWzM1LCAwXSwgWzM1LCAy
XSwgWzM2LCAwXSwgWzM2LCAxXSwgWzM3LCAwXSwgWzM3LCAxXSwgWzQwLCAwXSwgWzQwLCAyXSwg
WzQxLCAwXSwgWzQxLCAxXSwgWzQyLCAwXSwgWzQyLCAxXSwgWzQ2LCAwXSwgWzQ2LCAxXSwgWzQ5
LCAwXSwgWzQ5LCAyXSwgWzUwLCAwXSwgWzUwLCAxXSwgWzUyLCAwXSwgWzUyLCAyXSwgWzUzLCAw
XSwgWzUzLCAxXSwgWzU3LCAwXSwgWzU3LCAyXSwgWzU4LCAwXSwgWzU4LCAxXSwgWzYxLCAwXSwg
WzYxLCAyXSwgWzYyLCAwXSwgWzYyLCAxXSwgWzY2LCAwXSwgWzY2LCAyXSwgWzY3LCAwXSwgWzY3
LCAxXSwgWzcwLCAxXSwgWzcwLCAyXSwgWzc2LCAxXSwgWzc2LCAyXV0sCisgICAgICAgIHBlcmZv
cm1BY3Rpb246IGZ1bmN0aW9uIGFub255bW91cyh5eXRleHQsIHl5bGVuZywgeXlsaW5lbm8sIHl5
LCB5eXN0YXRlLCAkJCwgXyQKKyAgICAgICAgLyoqLykgeworCisgICAgICAgICAgICB2YXIgJDAg
PSAkJC5sZW5ndGggLSAxOworICAgICAgICAgICAgc3dpdGNoICh5eXN0YXRlKSB7CisgICAgICAg
ICAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gJCRbJDAgLSAxXTsK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAyOgorICAg
ICAgICAgICAgICAgICAgICB0aGlzLiQgPSB5eS5wcmVwYXJlUHJvZ3JhbSgkJFskMF0pOworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDM6CisgICAgICAg
ICAgICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgY2FzZSA0OgorICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSAk
JFskMF07CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2Ug
NToKKyAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gJCRbJDBdOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDY6CisgICAgICAgICAgICAgICAgICAg
IHRoaXMuJCA9ICQkWyQwXTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgY2FzZSA3OgorICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSAkJFskMF07CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgODoKKyAgICAgICAg
ICAgICAgICAgICAgdGhpcy4kID0gJCRbJDBdOworICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICBjYXNlIDk6CisgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdDb21tZW50U3RhdGVtZW50JywKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHZhbHVlOiB5eS5zdHJpcENvbW1lbnQoJCRbJDBdKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHN0cmlwOiB5eS5zdHJpcEZsYWdzKCQkWyQwXSwgJCRbJDBdKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIGxvYzogeXkubG9jSW5mbyh0aGlzLl8kKQorICAgICAg
ICAgICAgICAgICAgICB9OworCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIGNhc2UgMTA6CisgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHR5cGU6ICdDb250ZW50U3RhdGVtZW50JywKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG9yaWdpbmFsOiAkJFskMF0sCisgICAgICAgICAgICAgICAgICAgICAgICB2YWx1
ZTogJCRbJDBdLAorICAgICAgICAgICAgICAgICAgICAgICAgbG9jOiB5eS5sb2NJbmZvKHRoaXMu
XyQpCisgICAgICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgY2FzZSAxMToKKyAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0g
eXkucHJlcGFyZVJhd0Jsb2NrKCQkWyQwIC0gMl0sICQkWyQwIC0gMV0sICQkWyQwXSwgdGhpcy5f
JCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMTI6
CisgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHsgcGF0aDogJCRbJDAgLSAzXSwgcGFyYW1z
OiAkJFskMCAtIDJdLCBoYXNoOiAkJFskMCAtIDFdIH07CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMTM6CisgICAgICAgICAgICAgICAgICAgIHRoaXMu
JCA9IHl5LnByZXBhcmVCbG9jaygkJFskMCAtIDNdLCAkJFskMCAtIDJdLCAkJFskMCAtIDFdLCAk
JFskMF0sIGZhbHNlLCB0aGlzLl8kKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgY2FzZSAxNDoKKyAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0geXkucHJl
cGFyZUJsb2NrKCQkWyQwIC0gM10sICQkWyQwIC0gMl0sICQkWyQwIC0gMV0sICQkWyQwXSwgdHJ1
ZSwgdGhpcy5fJCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IGNhc2UgMTU6CisgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHsgb3BlbjogJCRbJDAgLSA1
XSwgcGF0aDogJCRbJDAgLSA0XSwgcGFyYW1zOiAkJFskMCAtIDNdLCBoYXNoOiAkJFskMCAtIDJd
LCBibG9ja1BhcmFtczogJCRbJDAgLSAxXSwgc3RyaXA6IHl5LnN0cmlwRmxhZ3MoJCRbJDAgLSA1
XSwgJCRbJDBdKSB9OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICBjYXNlIDE2OgorICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB7IHBhdGg6ICQkWyQwIC0g
NF0sIHBhcmFtczogJCRbJDAgLSAzXSwgaGFzaDogJCRbJDAgLSAyXSwgYmxvY2tQYXJhbXM6ICQk
WyQwIC0gMV0sIHN0cmlwOiB5eS5zdHJpcEZsYWdzKCQkWyQwIC0gNV0sICQkWyQwXSkgfTsKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAxNzoKKyAgICAg
ICAgICAgICAgICAgICAgdGhpcy4kID0geyBwYXRoOiAkJFskMCAtIDRdLCBwYXJhbXM6ICQkWyQw
IC0gM10sIGhhc2g6ICQkWyQwIC0gMl0sIGJsb2NrUGFyYW1zOiAkJFskMCAtIDFdLCBzdHJpcDog
eXkuc3RyaXBGbGFncygkJFskMCAtIDVdLCAkJFskMF0pIH07CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMTg6CisgICAgICAgICAgICAgICAgICAgIHRo
aXMuJCA9IHsgc3RyaXA6IHl5LnN0cmlwRmxhZ3MoJCRbJDAgLSAxXSwgJCRbJDAgLSAxXSksIHBy
b2dyYW06ICQkWyQwXSB9OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICBjYXNlIDE5OgorICAgICAgICAgICAgICAgICAgICB2YXIgaW52ZXJzZSA9IHl5LnByZXBh
cmVCbG9jaygkJFskMCAtIDJdLCAkJFskMCAtIDFdLCAkJFskMF0sICQkWyQwXSwgZmFsc2UsIHRo
aXMuXyQpLAorICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbSA9IHl5LnByZXBhcmVQcm9n
cmFtKFtpbnZlcnNlXSwgJCRbJDAgLSAxXS5sb2MpOworICAgICAgICAgICAgICAgICAgICBwcm9n
cmFtLmNoYWluZWQgPSB0cnVlOworCisgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHsgc3Ry
aXA6ICQkWyQwIC0gMl0uc3RyaXAsIHByb2dyYW06IHByb2dyYW0sIGNoYWluOiB0cnVlIH07CisK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAyMDoKKyAg
ICAgICAgICAgICAgICAgICAgdGhpcy4kID0gJCRbJDBdOworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDIxOgorICAgICAgICAgICAgICAgICAgICB0aGlz
LiQgPSB7IHBhdGg6ICQkWyQwIC0gMV0sIHN0cmlwOiB5eS5zdHJpcEZsYWdzKCQkWyQwIC0gMl0s
ICQkWyQwXSkgfTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
Y2FzZSAyMjoKKyAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0geXkucHJlcGFyZU11c3RhY2hl
KCQkWyQwIC0gM10sICQkWyQwIC0gMl0sICQkWyQwIC0gMV0sICQkWyQwIC0gNF0sIHl5LnN0cmlw
RmxhZ3MoJCRbJDAgLSA0XSwgJCRbJDBdKSwgdGhpcy5fJCk7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMjM6CisgICAgICAgICAgICAgICAgICAgIHRo
aXMuJCA9IHl5LnByZXBhcmVNdXN0YWNoZSgkJFskMCAtIDNdLCAkJFskMCAtIDJdLCAkJFskMCAt
IDFdLCAkJFskMCAtIDRdLCB5eS5zdHJpcEZsYWdzKCQkWyQwIC0gNF0sICQkWyQwXSksIHRoaXMu
XyQpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDI0
OgorICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICB0eXBlOiAnUGFydGlhbFN0YXRlbWVudCcsCisgICAgICAgICAgICAgICAgICAgICAgICBuYW1l
OiAkJFskMCAtIDNdLAorICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiAkJFskMCAtIDJd
LAorICAgICAgICAgICAgICAgICAgICAgICAgaGFzaDogJCRbJDAgLSAxXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGluZGVudDogJycsCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJpcDog
eXkuc3RyaXBGbGFncygkJFskMCAtIDRdLCAkJFskMF0pLAorICAgICAgICAgICAgICAgICAgICAg
ICAgbG9jOiB5eS5sb2NJbmZvKHRoaXMuXyQpCisgICAgICAgICAgICAgICAgICAgIH07CisKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAyNToKKyAgICAg
ICAgICAgICAgICAgICAgdGhpcy4kID0geXkucHJlcGFyZVBhcnRpYWxCbG9jaygkJFskMCAtIDJd
LCAkJFskMCAtIDFdLCAkJFskMF0sIHRoaXMuXyQpOworICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICBjYXNlIDI2OgorICAgICAgICAgICAgICAgICAgICB0aGlzLiQg
PSB7IHBhdGg6ICQkWyQwIC0gM10sIHBhcmFtczogJCRbJDAgLSAyXSwgaGFzaDogJCRbJDAgLSAx
XSwgc3RyaXA6IHl5LnN0cmlwRmxhZ3MoJCRbJDAgLSA0XSwgJCRbJDBdKSB9OworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDI3OgorICAgICAgICAgICAg
ICAgICAgICB0aGlzLiQgPSAkJFskMF07CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIGNhc2UgMjg6CisgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9ICQkWyQw
XTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAyOToK
KyAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0geworICAgICAgICAgICAgICAgICAgICAgICAg
dHlwZTogJ1N1YkV4cHJlc3Npb24nLAorICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogJCRb
JDAgLSAzXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtczogJCRbJDAgLSAyXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGhhc2g6ICQkWyQwIC0gMV0sCisgICAgICAgICAgICAgICAg
ICAgICAgICBsb2M6IHl5LmxvY0luZm8odGhpcy5fJCkKKyAgICAgICAgICAgICAgICAgICAgfTsK
KworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDMwOgor
ICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB7IHR5cGU6ICdIYXNoJywgcGFpcnM6ICQkWyQw
XSwgbG9jOiB5eS5sb2NJbmZvKHRoaXMuXyQpIH07CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIGNhc2UgMzE6CisgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9
IHsgdHlwZTogJ0hhc2hQYWlyJywga2V5OiB5eS5pZCgkJFskMCAtIDJdKSwgdmFsdWU6ICQkWyQw
XSwgbG9jOiB5eS5sb2NJbmZvKHRoaXMuXyQpIH07CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIGNhc2UgMzI6CisgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9
IHl5LmlkKCQkWyQwIC0gMV0pOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICBjYXNlIDMzOgorICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSAkJFskMF07Cisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMzQ6CisgICAg
ICAgICAgICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTsKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgY2FzZSAzNToKKyAgICAgICAgICAgICAgICAgICAgdGhpcy4k
ID0geyB0eXBlOiAnU3RyaW5nTGl0ZXJhbCcsIHZhbHVlOiAkJFskMF0sIG9yaWdpbmFsOiAkJFsk
MF0sIGxvYzogeXkubG9jSW5mbyh0aGlzLl8kKSB9OworICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICBjYXNlIDM2OgorICAgICAgICAgICAgICAgICAgICB0aGlzLiQg
PSB7IHR5cGU6ICdOdW1iZXJMaXRlcmFsJywgdmFsdWU6IE51bWJlcigkJFskMF0pLCBvcmlnaW5h
bDogTnVtYmVyKCQkWyQwXSksIGxvYzogeXkubG9jSW5mbyh0aGlzLl8kKSB9OworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDM3OgorICAgICAgICAgICAg
ICAgICAgICB0aGlzLiQgPSB7IHR5cGU6ICdCb29sZWFuTGl0ZXJhbCcsIHZhbHVlOiAkJFskMF0g
PT09ICd0cnVlJywgb3JpZ2luYWw6ICQkWyQwXSA9PT0gJ3RydWUnLCBsb2M6IHl5LmxvY0luZm8o
dGhpcy5fJCkgfTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
Y2FzZSAzODoKKyAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0geyB0eXBlOiAnVW5kZWZpbmVk
TGl0ZXJhbCcsIG9yaWdpbmFsOiB1bmRlZmluZWQsIHZhbHVlOiB1bmRlZmluZWQsIGxvYzogeXku
bG9jSW5mbyh0aGlzLl8kKSB9OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICBjYXNlIDM5OgorICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB7IHR5cGU6ICdO
dWxsTGl0ZXJhbCcsIG9yaWdpbmFsOiBudWxsLCB2YWx1ZTogbnVsbCwgbG9jOiB5eS5sb2NJbmZv
KHRoaXMuXyQpIH07CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IGNhc2UgNDA6CisgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSA0MToKKyAgICAgICAgICAg
ICAgICAgICAgdGhpcy4kID0gJCRbJDBdOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICBjYXNlIDQyOgorICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB5eS5w
cmVwYXJlUGF0aCh0cnVlLCAkJFskMF0sIHRoaXMuXyQpOworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDQzOgorICAgICAgICAgICAgICAgICAgICB0aGlz
LiQgPSB5eS5wcmVwYXJlUGF0aChmYWxzZSwgJCRbJDBdLCB0aGlzLl8kKTsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSA0NDoKKyAgICAgICAgICAgICAg
ICAgICAgJCRbJDAgLSAyXS5wdXNoKHsgcGFydDogeXkuaWQoJCRbJDBdKSwgb3JpZ2luYWw6ICQk
WyQwXSwgc2VwYXJhdG9yOiAkJFskMCAtIDFdIH0pO3RoaXMuJCA9ICQkWyQwIC0gMl07CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgNDU6CisgICAgICAg
ICAgICAgICAgICAgIHRoaXMuJCA9IFt7IHBhcnQ6IHl5LmlkKCQkWyQwXSksIG9yaWdpbmFsOiAk
JFskMF0gfV07CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNh
c2UgNDY6CisgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IFtdOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDQ3OgorICAgICAgICAgICAgICAgICAg
ICAkJFskMCAtIDFdLnB1c2goJCRbJDBdKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgY2FzZSA0ODoKKyAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gWyQk
WyQwXV07CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2Ug
NDk6CisgICAgICAgICAgICAgICAgICAgICQkWyQwIC0gMV0ucHVzaCgkJFskMF0pOworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDUwOgorICAgICAgICAg
ICAgICAgICAgICB0aGlzLiQgPSBbXTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgY2FzZSA1MToKKyAgICAgICAgICAgICAgICAgICAgJCRbJDAgLSAxXS5wdXNo
KCQkWyQwXSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNh
c2UgNTg6CisgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IFtdOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDU5OgorICAgICAgICAgICAgICAgICAg
ICAkJFskMCAtIDFdLnB1c2goJCRbJDBdKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgY2FzZSA2NDoKKyAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gW107
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgNjU6Cisg
ICAgICAgICAgICAgICAgICAgICQkWyQwIC0gMV0ucHVzaCgkJFskMF0pOworICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDcwOgorICAgICAgICAgICAgICAg
ICAgICB0aGlzLiQgPSBbXTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgY2FzZSA3MToKKyAgICAgICAgICAgICAgICAgICAgJCRbJDAgLSAxXS5wdXNoKCQkWyQw
XSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgNzg6
CisgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IFtdOworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDc5OgorICAgICAgICAgICAgICAgICAgICAkJFsk
MCAtIDFdLnB1c2goJCRbJDBdKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgY2FzZSA4MjoKKyAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gW107CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgODM6CisgICAgICAg
ICAgICAgICAgICAgICQkWyQwIC0gMV0ucHVzaCgkJFskMF0pOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDg2OgorICAgICAgICAgICAgICAgICAgICB0
aGlzLiQgPSBbXTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
Y2FzZSA4NzoKKyAgICAgICAgICAgICAgICAgICAgJCRbJDAgLSAxXS5wdXNoKCQkWyQwXSk7Cisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgOTA6CisgICAg
ICAgICAgICAgICAgICAgIHRoaXMuJCA9IFtdOworICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICBjYXNlIDkxOgorICAgICAgICAgICAgICAgICAgICAkJFskMCAtIDFd
LnB1c2goJCRbJDBdKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgY2FzZSA5NDoKKyAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gW107CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgOTU6CisgICAgICAgICAgICAg
ICAgICAgICQkWyQwIC0gMV0ucHVzaCgkJFskMF0pOworICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICBjYXNlIDk4OgorICAgICAgICAgICAgICAgICAgICB0aGlzLiQg
PSBbJCRbJDBdXTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
Y2FzZSA5OToKKyAgICAgICAgICAgICAgICAgICAgJCRbJDAgLSAxXS5wdXNoKCQkWyQwXSk7Cisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMTAwOgorICAg
ICAgICAgICAgICAgICAgICB0aGlzLiQgPSBbJCRbJDBdXTsKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAxMDE6CisgICAgICAgICAgICAgICAgICAgICQk
WyQwIC0gMV0ucHVzaCgkJFskMF0pOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgdGFibGU6IFt7IDM6IDEsIDQ6IDIsIDU6IFsy
LCA0Nl0sIDY6IDMsIDE0OiBbMiwgNDZdLCAxNTogWzIsIDQ2XSwgMTk6IFsyLCA0Nl0sIDI5OiBb
MiwgNDZdLCAzNDogWzIsIDQ2XSwgNDg6IFsyLCA0Nl0sIDUxOiBbMiwgNDZdLCA1NTogWzIsIDQ2
XSwgNjA6IFsyLCA0Nl0gfSwgeyAxOiBbM10gfSwgeyA1OiBbMSwgNF0gfSwgeyA1OiBbMiwgMl0s
IDc6IDUsIDg6IDYsIDk6IDcsIDEwOiA4LCAxMTogOSwgMTI6IDEwLCAxMzogMTEsIDE0OiBbMSwg
MTJdLCAxNTogWzEsIDIwXSwgMTY6IDE3LCAxOTogWzEsIDIzXSwgMjQ6IDE1LCAyNzogMTYsIDI5
OiBbMSwgMjFdLCAzNDogWzEsIDIyXSwgMzk6IFsyLCAyXSwgNDQ6IFsyLCAyXSwgNDc6IFsyLCAy
XSwgNDg6IFsxLCAxM10sIDUxOiBbMSwgMTRdLCA1NTogWzEsIDE4XSwgNTk6IDE5LCA2MDogWzEs
IDI0XSB9LCB7IDE6IFsyLCAxXSB9LCB7IDU6IFsyLCA0N10sIDE0OiBbMiwgNDddLCAxNTogWzIs
IDQ3XSwgMTk6IFsyLCA0N10sIDI5OiBbMiwgNDddLCAzNDogWzIsIDQ3XSwgMzk6IFsyLCA0N10s
IDQ0OiBbMiwgNDddLCA0NzogWzIsIDQ3XSwgNDg6IFsyLCA0N10sIDUxOiBbMiwgNDddLCA1NTog
WzIsIDQ3XSwgNjA6IFsyLCA0N10gfSwgeyA1OiBbMiwgM10sIDE0OiBbMiwgM10sIDE1OiBbMiwg
M10sIDE5OiBbMiwgM10sIDI5OiBbMiwgM10sIDM0OiBbMiwgM10sIDM5OiBbMiwgM10sIDQ0OiBb
MiwgM10sIDQ3OiBbMiwgM10sIDQ4OiBbMiwgM10sIDUxOiBbMiwgM10sIDU1OiBbMiwgM10sIDYw
OiBbMiwgM10gfSwgeyA1OiBbMiwgNF0sIDE0OiBbMiwgNF0sIDE1OiBbMiwgNF0sIDE5OiBbMiwg
NF0sIDI5OiBbMiwgNF0sIDM0OiBbMiwgNF0sIDM5OiBbMiwgNF0sIDQ0OiBbMiwgNF0sIDQ3OiBb
MiwgNF0sIDQ4OiBbMiwgNF0sIDUxOiBbMiwgNF0sIDU1OiBbMiwgNF0sIDYwOiBbMiwgNF0gfSwg
eyA1OiBbMiwgNV0sIDE0OiBbMiwgNV0sIDE1OiBbMiwgNV0sIDE5OiBbMiwgNV0sIDI5OiBbMiwg
NV0sIDM0OiBbMiwgNV0sIDM5OiBbMiwgNV0sIDQ0OiBbMiwgNV0sIDQ3OiBbMiwgNV0sIDQ4OiBb
MiwgNV0sIDUxOiBbMiwgNV0sIDU1OiBbMiwgNV0sIDYwOiBbMiwgNV0gfSwgeyA1OiBbMiwgNl0s
IDE0OiBbMiwgNl0sIDE1OiBbMiwgNl0sIDE5OiBbMiwgNl0sIDI5OiBbMiwgNl0sIDM0OiBbMiwg
Nl0sIDM5OiBbMiwgNl0sIDQ0OiBbMiwgNl0sIDQ3OiBbMiwgNl0sIDQ4OiBbMiwgNl0sIDUxOiBb
MiwgNl0sIDU1OiBbMiwgNl0sIDYwOiBbMiwgNl0gfSwgeyA1OiBbMiwgN10sIDE0OiBbMiwgN10s
IDE1OiBbMiwgN10sIDE5OiBbMiwgN10sIDI5OiBbMiwgN10sIDM0OiBbMiwgN10sIDM5OiBbMiwg
N10sIDQ0OiBbMiwgN10sIDQ3OiBbMiwgN10sIDQ4OiBbMiwgN10sIDUxOiBbMiwgN10sIDU1OiBb
MiwgN10sIDYwOiBbMiwgN10gfSwgeyA1OiBbMiwgOF0sIDE0OiBbMiwgOF0sIDE1OiBbMiwgOF0s
IDE5OiBbMiwgOF0sIDI5OiBbMiwgOF0sIDM0OiBbMiwgOF0sIDM5OiBbMiwgOF0sIDQ0OiBbMiwg
OF0sIDQ3OiBbMiwgOF0sIDQ4OiBbMiwgOF0sIDUxOiBbMiwgOF0sIDU1OiBbMiwgOF0sIDYwOiBb
MiwgOF0gfSwgeyA1OiBbMiwgOV0sIDE0OiBbMiwgOV0sIDE1OiBbMiwgOV0sIDE5OiBbMiwgOV0s
IDI5OiBbMiwgOV0sIDM0OiBbMiwgOV0sIDM5OiBbMiwgOV0sIDQ0OiBbMiwgOV0sIDQ3OiBbMiwg
OV0sIDQ4OiBbMiwgOV0sIDUxOiBbMiwgOV0sIDU1OiBbMiwgOV0sIDYwOiBbMiwgOV0gfSwgeyAy
MDogMjUsIDcyOiBbMSwgMzVdLCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0sIDgxOiBbMSwg
MjldLCA4MjogWzEsIDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwg
ODY6IDMzIH0sIHsgMjA6IDM2LCA3MjogWzEsIDM1XSwgNzg6IDI2LCA3OTogMjcsIDgwOiBbMSwg
MjhdLCA4MTogWzEsIDI5XSwgODI6IFsxLCAzMF0sIDgzOiBbMSwgMzFdLCA4NDogWzEsIDMyXSwg
ODU6IFsxLCAzNF0sIDg2OiAzMyB9LCB7IDQ6IDM3LCA2OiAzLCAxNDogWzIsIDQ2XSwgMTU6IFsy
LCA0Nl0sIDE5OiBbMiwgNDZdLCAyOTogWzIsIDQ2XSwgMzQ6IFsyLCA0Nl0sIDM5OiBbMiwgNDZd
LCA0NDogWzIsIDQ2XSwgNDc6IFsyLCA0Nl0sIDQ4OiBbMiwgNDZdLCA1MTogWzIsIDQ2XSwgNTU6
IFsyLCA0Nl0sIDYwOiBbMiwgNDZdIH0sIHsgNDogMzgsIDY6IDMsIDE0OiBbMiwgNDZdLCAxNTog
WzIsIDQ2XSwgMTk6IFsyLCA0Nl0sIDI5OiBbMiwgNDZdLCAzNDogWzIsIDQ2XSwgNDQ6IFsyLCA0
Nl0sIDQ3OiBbMiwgNDZdLCA0ODogWzIsIDQ2XSwgNTE6IFsyLCA0Nl0sIDU1OiBbMiwgNDZdLCA2
MDogWzIsIDQ2XSB9LCB7IDEzOiA0MCwgMTU6IFsxLCAyMF0sIDE3OiAzOSB9LCB7IDIwOiA0Miwg
NTY6IDQxLCA2NDogNDMsIDY1OiBbMSwgNDRdLCA3MjogWzEsIDM1XSwgNzg6IDI2LCA3OTogMjcs
IDgwOiBbMSwgMjhdLCA4MTogWzEsIDI5XSwgODI6IFsxLCAzMF0sIDgzOiBbMSwgMzFdLCA4NDog
WzEsIDMyXSwgODU6IFsxLCAzNF0sIDg2OiAzMyB9LCB7IDQ6IDQ1LCA2OiAzLCAxNDogWzIsIDQ2
XSwgMTU6IFsyLCA0Nl0sIDE5OiBbMiwgNDZdLCAyOTogWzIsIDQ2XSwgMzQ6IFsyLCA0Nl0sIDQ3
OiBbMiwgNDZdLCA0ODogWzIsIDQ2XSwgNTE6IFsyLCA0Nl0sIDU1OiBbMiwgNDZdLCA2MDogWzIs
IDQ2XSB9LCB7IDU6IFsyLCAxMF0sIDE0OiBbMiwgMTBdLCAxNTogWzIsIDEwXSwgMTg6IFsyLCAx
MF0sIDE5OiBbMiwgMTBdLCAyOTogWzIsIDEwXSwgMzQ6IFsyLCAxMF0sIDM5OiBbMiwgMTBdLCA0
NDogWzIsIDEwXSwgNDc6IFsyLCAxMF0sIDQ4OiBbMiwgMTBdLCA1MTogWzIsIDEwXSwgNTU6IFsy
LCAxMF0sIDYwOiBbMiwgMTBdIH0sIHsgMjA6IDQ2LCA3MjogWzEsIDM1XSwgNzg6IDI2LCA3OTog
MjcsIDgwOiBbMSwgMjhdLCA4MTogWzEsIDI5XSwgODI6IFsxLCAzMF0sIDgzOiBbMSwgMzFdLCA4
NDogWzEsIDMyXSwgODU6IFsxLCAzNF0sIDg2OiAzMyB9LCB7IDIwOiA0NywgNzI6IFsxLCAzNV0s
IDc4OiAyNiwgNzk6IDI3LCA4MDogWzEsIDI4XSwgODE6IFsxLCAyOV0sIDgyOiBbMSwgMzBdLCA4
MzogWzEsIDMxXSwgODQ6IFsxLCAzMl0sIDg1OiBbMSwgMzRdLCA4NjogMzMgfSwgeyAyMDogNDgs
IDcyOiBbMSwgMzVdLCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0sIDgxOiBbMSwgMjldLCA4
MjogWzEsIDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwgODY6IDMz
IH0sIHsgMjA6IDQyLCA1NjogNDksIDY0OiA0MywgNjU6IFsxLCA0NF0sIDcyOiBbMSwgMzVdLCA3
ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0sIDgxOiBbMSwgMjldLCA4MjogWzEsIDMwXSwgODM6
IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwgODY6IDMzIH0sIHsgMzM6IFsyLCA3
OF0sIDQ5OiA1MCwgNjU6IFsyLCA3OF0sIDcyOiBbMiwgNzhdLCA4MDogWzIsIDc4XSwgODE6IFsy
LCA3OF0sIDgyOiBbMiwgNzhdLCA4MzogWzIsIDc4XSwgODQ6IFsyLCA3OF0sIDg1OiBbMiwgNzhd
IH0sIHsgMjM6IFsyLCAzM10sIDMzOiBbMiwgMzNdLCA1NDogWzIsIDMzXSwgNjU6IFsyLCAzM10s
IDY4OiBbMiwgMzNdLCA3MjogWzIsIDMzXSwgNzU6IFsyLCAzM10sIDgwOiBbMiwgMzNdLCA4MTog
WzIsIDMzXSwgODI6IFsyLCAzM10sIDgzOiBbMiwgMzNdLCA4NDogWzIsIDMzXSwgODU6IFsyLCAz
M10gfSwgeyAyMzogWzIsIDM0XSwgMzM6IFsyLCAzNF0sIDU0OiBbMiwgMzRdLCA2NTogWzIsIDM0
XSwgNjg6IFsyLCAzNF0sIDcyOiBbMiwgMzRdLCA3NTogWzIsIDM0XSwgODA6IFsyLCAzNF0sIDgx
OiBbMiwgMzRdLCA4MjogWzIsIDM0XSwgODM6IFsyLCAzNF0sIDg0OiBbMiwgMzRdLCA4NTogWzIs
IDM0XSB9LCB7IDIzOiBbMiwgMzVdLCAzMzogWzIsIDM1XSwgNTQ6IFsyLCAzNV0sIDY1OiBbMiwg
MzVdLCA2ODogWzIsIDM1XSwgNzI6IFsyLCAzNV0sIDc1OiBbMiwgMzVdLCA4MDogWzIsIDM1XSwg
ODE6IFsyLCAzNV0sIDgyOiBbMiwgMzVdLCA4MzogWzIsIDM1XSwgODQ6IFsyLCAzNV0sIDg1OiBb
MiwgMzVdIH0sIHsgMjM6IFsyLCAzNl0sIDMzOiBbMiwgMzZdLCA1NDogWzIsIDM2XSwgNjU6IFsy
LCAzNl0sIDY4OiBbMiwgMzZdLCA3MjogWzIsIDM2XSwgNzU6IFsyLCAzNl0sIDgwOiBbMiwgMzZd
LCA4MTogWzIsIDM2XSwgODI6IFsyLCAzNl0sIDgzOiBbMiwgMzZdLCA4NDogWzIsIDM2XSwgODU6
IFsyLCAzNl0gfSwgeyAyMzogWzIsIDM3XSwgMzM6IFsyLCAzN10sIDU0OiBbMiwgMzddLCA2NTog
WzIsIDM3XSwgNjg6IFsyLCAzN10sIDcyOiBbMiwgMzddLCA3NTogWzIsIDM3XSwgODA6IFsyLCAz
N10sIDgxOiBbMiwgMzddLCA4MjogWzIsIDM3XSwgODM6IFsyLCAzN10sIDg0OiBbMiwgMzddLCA4
NTogWzIsIDM3XSB9LCB7IDIzOiBbMiwgMzhdLCAzMzogWzIsIDM4XSwgNTQ6IFsyLCAzOF0sIDY1
OiBbMiwgMzhdLCA2ODogWzIsIDM4XSwgNzI6IFsyLCAzOF0sIDc1OiBbMiwgMzhdLCA4MDogWzIs
IDM4XSwgODE6IFsyLCAzOF0sIDgyOiBbMiwgMzhdLCA4MzogWzIsIDM4XSwgODQ6IFsyLCAzOF0s
IDg1OiBbMiwgMzhdIH0sIHsgMjM6IFsyLCAzOV0sIDMzOiBbMiwgMzldLCA1NDogWzIsIDM5XSwg
NjU6IFsyLCAzOV0sIDY4OiBbMiwgMzldLCA3MjogWzIsIDM5XSwgNzU6IFsyLCAzOV0sIDgwOiBb
MiwgMzldLCA4MTogWzIsIDM5XSwgODI6IFsyLCAzOV0sIDgzOiBbMiwgMzldLCA4NDogWzIsIDM5
XSwgODU6IFsyLCAzOV0gfSwgeyAyMzogWzIsIDQzXSwgMzM6IFsyLCA0M10sIDU0OiBbMiwgNDNd
LCA2NTogWzIsIDQzXSwgNjg6IFsyLCA0M10sIDcyOiBbMiwgNDNdLCA3NTogWzIsIDQzXSwgODA6
IFsyLCA0M10sIDgxOiBbMiwgNDNdLCA4MjogWzIsIDQzXSwgODM6IFsyLCA0M10sIDg0OiBbMiwg
NDNdLCA4NTogWzIsIDQzXSwgODc6IFsxLCA1MV0gfSwgeyA3MjogWzEsIDM1XSwgODY6IDUyIH0s
IHsgMjM6IFsyLCA0NV0sIDMzOiBbMiwgNDVdLCA1NDogWzIsIDQ1XSwgNjU6IFsyLCA0NV0sIDY4
OiBbMiwgNDVdLCA3MjogWzIsIDQ1XSwgNzU6IFsyLCA0NV0sIDgwOiBbMiwgNDVdLCA4MTogWzIs
IDQ1XSwgODI6IFsyLCA0NV0sIDgzOiBbMiwgNDVdLCA4NDogWzIsIDQ1XSwgODU6IFsyLCA0NV0s
IDg3OiBbMiwgNDVdIH0sIHsgNTI6IDUzLCA1NDogWzIsIDgyXSwgNjU6IFsyLCA4Ml0sIDcyOiBb
MiwgODJdLCA4MDogWzIsIDgyXSwgODE6IFsyLCA4Ml0sIDgyOiBbMiwgODJdLCA4MzogWzIsIDgy
XSwgODQ6IFsyLCA4Ml0sIDg1OiBbMiwgODJdIH0sIHsgMjU6IDU0LCAzODogNTYsIDM5OiBbMSwg
NThdLCA0MzogNTcsIDQ0OiBbMSwgNTldLCA0NTogNTUsIDQ3OiBbMiwgNTRdIH0sIHsgMjg6IDYw
LCA0MzogNjEsIDQ0OiBbMSwgNTldLCA0NzogWzIsIDU2XSB9LCB7IDEzOiA2MywgMTU6IFsxLCAy
MF0sIDE4OiBbMSwgNjJdIH0sIHsgMTU6IFsyLCA0OF0sIDE4OiBbMiwgNDhdIH0sIHsgMzM6IFsy
LCA4Nl0sIDU3OiA2NCwgNjU6IFsyLCA4Nl0sIDcyOiBbMiwgODZdLCA4MDogWzIsIDg2XSwgODE6
IFsyLCA4Nl0sIDgyOiBbMiwgODZdLCA4MzogWzIsIDg2XSwgODQ6IFsyLCA4Nl0sIDg1OiBbMiwg
ODZdIH0sIHsgMzM6IFsyLCA0MF0sIDY1OiBbMiwgNDBdLCA3MjogWzIsIDQwXSwgODA6IFsyLCA0
MF0sIDgxOiBbMiwgNDBdLCA4MjogWzIsIDQwXSwgODM6IFsyLCA0MF0sIDg0OiBbMiwgNDBdLCA4
NTogWzIsIDQwXSB9LCB7IDMzOiBbMiwgNDFdLCA2NTogWzIsIDQxXSwgNzI6IFsyLCA0MV0sIDgw
OiBbMiwgNDFdLCA4MTogWzIsIDQxXSwgODI6IFsyLCA0MV0sIDgzOiBbMiwgNDFdLCA4NDogWzIs
IDQxXSwgODU6IFsyLCA0MV0gfSwgeyAyMDogNjUsIDcyOiBbMSwgMzVdLCA3ODogMjYsIDc5OiAy
NywgODA6IFsxLCAyOF0sIDgxOiBbMSwgMjldLCA4MjogWzEsIDMwXSwgODM6IFsxLCAzMV0sIDg0
OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwgODY6IDMzIH0sIHsgMjY6IDY2LCA0NzogWzEsIDY3XSB9
LCB7IDMwOiA2OCwgMzM6IFsyLCA1OF0sIDY1OiBbMiwgNThdLCA3MjogWzIsIDU4XSwgNzU6IFsy
LCA1OF0sIDgwOiBbMiwgNThdLCA4MTogWzIsIDU4XSwgODI6IFsyLCA1OF0sIDgzOiBbMiwgNThd
LCA4NDogWzIsIDU4XSwgODU6IFsyLCA1OF0gfSwgeyAzMzogWzIsIDY0XSwgMzU6IDY5LCA2NTog
WzIsIDY0XSwgNzI6IFsyLCA2NF0sIDc1OiBbMiwgNjRdLCA4MDogWzIsIDY0XSwgODE6IFsyLCA2
NF0sIDgyOiBbMiwgNjRdLCA4MzogWzIsIDY0XSwgODQ6IFsyLCA2NF0sIDg1OiBbMiwgNjRdIH0s
IHsgMjE6IDcwLCAyMzogWzIsIDUwXSwgNjU6IFsyLCA1MF0sIDcyOiBbMiwgNTBdLCA4MDogWzIs
IDUwXSwgODE6IFsyLCA1MF0sIDgyOiBbMiwgNTBdLCA4MzogWzIsIDUwXSwgODQ6IFsyLCA1MF0s
IDg1OiBbMiwgNTBdIH0sIHsgMzM6IFsyLCA5MF0sIDYxOiA3MSwgNjU6IFsyLCA5MF0sIDcyOiBb
MiwgOTBdLCA4MDogWzIsIDkwXSwgODE6IFsyLCA5MF0sIDgyOiBbMiwgOTBdLCA4MzogWzIsIDkw
XSwgODQ6IFsyLCA5MF0sIDg1OiBbMiwgOTBdIH0sIHsgMjA6IDc1LCAzMzogWzIsIDgwXSwgNTA6
IDcyLCA2MzogNzMsIDY0OiA3NiwgNjU6IFsxLCA0NF0sIDY5OiA3NCwgNzA6IDc3LCA3MTogNzgs
IDcyOiBbMSwgNzldLCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0sIDgxOiBbMSwgMjldLCA4
MjogWzEsIDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwgODY6IDMz
IH0sIHsgNzI6IFsxLCA4MF0gfSwgeyAyMzogWzIsIDQyXSwgMzM6IFsyLCA0Ml0sIDU0OiBbMiwg
NDJdLCA2NTogWzIsIDQyXSwgNjg6IFsyLCA0Ml0sIDcyOiBbMiwgNDJdLCA3NTogWzIsIDQyXSwg
ODA6IFsyLCA0Ml0sIDgxOiBbMiwgNDJdLCA4MjogWzIsIDQyXSwgODM6IFsyLCA0Ml0sIDg0OiBb
MiwgNDJdLCA4NTogWzIsIDQyXSwgODc6IFsxLCA1MV0gfSwgeyAyMDogNzUsIDUzOiA4MSwgNTQ6
IFsyLCA4NF0sIDYzOiA4MiwgNjQ6IDc2LCA2NTogWzEsIDQ0XSwgNjk6IDgzLCA3MDogNzcsIDcx
OiA3OCwgNzI6IFsxLCA3OV0sIDc4OiAyNiwgNzk6IDI3LCA4MDogWzEsIDI4XSwgODE6IFsxLCAy
OV0sIDgyOiBbMSwgMzBdLCA4MzogWzEsIDMxXSwgODQ6IFsxLCAzMl0sIDg1OiBbMSwgMzRdLCA4
NjogMzMgfSwgeyAyNjogODQsIDQ3OiBbMSwgNjddIH0sIHsgNDc6IFsyLCA1NV0gfSwgeyA0OiA4
NSwgNjogMywgMTQ6IFsyLCA0Nl0sIDE1OiBbMiwgNDZdLCAxOTogWzIsIDQ2XSwgMjk6IFsyLCA0
Nl0sIDM0OiBbMiwgNDZdLCAzOTogWzIsIDQ2XSwgNDQ6IFsyLCA0Nl0sIDQ3OiBbMiwgNDZdLCA0
ODogWzIsIDQ2XSwgNTE6IFsyLCA0Nl0sIDU1OiBbMiwgNDZdLCA2MDogWzIsIDQ2XSB9LCB7IDQ3
OiBbMiwgMjBdIH0sIHsgMjA6IDg2LCA3MjogWzEsIDM1XSwgNzg6IDI2LCA3OTogMjcsIDgwOiBb
MSwgMjhdLCA4MTogWzEsIDI5XSwgODI6IFsxLCAzMF0sIDgzOiBbMSwgMzFdLCA4NDogWzEsIDMy
XSwgODU6IFsxLCAzNF0sIDg2OiAzMyB9LCB7IDQ6IDg3LCA2OiAzLCAxNDogWzIsIDQ2XSwgMTU6
IFsyLCA0Nl0sIDE5OiBbMiwgNDZdLCAyOTogWzIsIDQ2XSwgMzQ6IFsyLCA0Nl0sIDQ3OiBbMiwg
NDZdLCA0ODogWzIsIDQ2XSwgNTE6IFsyLCA0Nl0sIDU1OiBbMiwgNDZdLCA2MDogWzIsIDQ2XSB9
LCB7IDI2OiA4OCwgNDc6IFsxLCA2N10gfSwgeyA0NzogWzIsIDU3XSB9LCB7IDU6IFsyLCAxMV0s
IDE0OiBbMiwgMTFdLCAxNTogWzIsIDExXSwgMTk6IFsyLCAxMV0sIDI5OiBbMiwgMTFdLCAzNDog
WzIsIDExXSwgMzk6IFsyLCAxMV0sIDQ0OiBbMiwgMTFdLCA0NzogWzIsIDExXSwgNDg6IFsyLCAx
MV0sIDUxOiBbMiwgMTFdLCA1NTogWzIsIDExXSwgNjA6IFsyLCAxMV0gfSwgeyAxNTogWzIsIDQ5
XSwgMTg6IFsyLCA0OV0gfSwgeyAyMDogNzUsIDMzOiBbMiwgODhdLCA1ODogODksIDYzOiA5MCwg
NjQ6IDc2LCA2NTogWzEsIDQ0XSwgNjk6IDkxLCA3MDogNzcsIDcxOiA3OCwgNzI6IFsxLCA3OV0s
IDc4OiAyNiwgNzk6IDI3LCA4MDogWzEsIDI4XSwgODE6IFsxLCAyOV0sIDgyOiBbMSwgMzBdLCA4
MzogWzEsIDMxXSwgODQ6IFsxLCAzMl0sIDg1OiBbMSwgMzRdLCA4NjogMzMgfSwgeyA2NTogWzIs
IDk0XSwgNjY6IDkyLCA2ODogWzIsIDk0XSwgNzI6IFsyLCA5NF0sIDgwOiBbMiwgOTRdLCA4MTog
WzIsIDk0XSwgODI6IFsyLCA5NF0sIDgzOiBbMiwgOTRdLCA4NDogWzIsIDk0XSwgODU6IFsyLCA5
NF0gfSwgeyA1OiBbMiwgMjVdLCAxNDogWzIsIDI1XSwgMTU6IFsyLCAyNV0sIDE5OiBbMiwgMjVd
LCAyOTogWzIsIDI1XSwgMzQ6IFsyLCAyNV0sIDM5OiBbMiwgMjVdLCA0NDogWzIsIDI1XSwgNDc6
IFsyLCAyNV0sIDQ4OiBbMiwgMjVdLCA1MTogWzIsIDI1XSwgNTU6IFsyLCAyNV0sIDYwOiBbMiwg
MjVdIH0sIHsgMjA6IDkzLCA3MjogWzEsIDM1XSwgNzg6IDI2LCA3OTogMjcsIDgwOiBbMSwgMjhd
LCA4MTogWzEsIDI5XSwgODI6IFsxLCAzMF0sIDgzOiBbMSwgMzFdLCA4NDogWzEsIDMyXSwgODU6
IFsxLCAzNF0sIDg2OiAzMyB9LCB7IDIwOiA3NSwgMzE6IDk0LCAzMzogWzIsIDYwXSwgNjM6IDk1
LCA2NDogNzYsIDY1OiBbMSwgNDRdLCA2OTogOTYsIDcwOiA3NywgNzE6IDc4LCA3MjogWzEsIDc5
XSwgNzU6IFsyLCA2MF0sIDc4OiAyNiwgNzk6IDI3LCA4MDogWzEsIDI4XSwgODE6IFsxLCAyOV0s
IDgyOiBbMSwgMzBdLCA4MzogWzEsIDMxXSwgODQ6IFsxLCAzMl0sIDg1OiBbMSwgMzRdLCA4Njog
MzMgfSwgeyAyMDogNzUsIDMzOiBbMiwgNjZdLCAzNjogOTcsIDYzOiA5OCwgNjQ6IDc2LCA2NTog
WzEsIDQ0XSwgNjk6IDk5LCA3MDogNzcsIDcxOiA3OCwgNzI6IFsxLCA3OV0sIDc1OiBbMiwgNjZd
LCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0sIDgxOiBbMSwgMjldLCA4MjogWzEsIDMwXSwg
ODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwgODY6IDMzIH0sIHsgMjA6IDc1
LCAyMjogMTAwLCAyMzogWzIsIDUyXSwgNjM6IDEwMSwgNjQ6IDc2LCA2NTogWzEsIDQ0XSwgNjk6
IDEwMiwgNzA6IDc3LCA3MTogNzgsIDcyOiBbMSwgNzldLCA3ODogMjYsIDc5OiAyNywgODA6IFsx
LCAyOF0sIDgxOiBbMSwgMjldLCA4MjogWzEsIDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJd
LCA4NTogWzEsIDM0XSwgODY6IDMzIH0sIHsgMjA6IDc1LCAzMzogWzIsIDkyXSwgNjI6IDEwMywg
NjM6IDEwNCwgNjQ6IDc2LCA2NTogWzEsIDQ0XSwgNjk6IDEwNSwgNzA6IDc3LCA3MTogNzgsIDcy
OiBbMSwgNzldLCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0sIDgxOiBbMSwgMjldLCA4Mjog
WzEsIDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwgODY6IDMzIH0s
IHsgMzM6IFsxLCAxMDZdIH0sIHsgMzM6IFsyLCA3OV0sIDY1OiBbMiwgNzldLCA3MjogWzIsIDc5
XSwgODA6IFsyLCA3OV0sIDgxOiBbMiwgNzldLCA4MjogWzIsIDc5XSwgODM6IFsyLCA3OV0sIDg0
OiBbMiwgNzldLCA4NTogWzIsIDc5XSB9LCB7IDMzOiBbMiwgODFdIH0sIHsgMjM6IFsyLCAyN10s
IDMzOiBbMiwgMjddLCA1NDogWzIsIDI3XSwgNjU6IFsyLCAyN10sIDY4OiBbMiwgMjddLCA3Mjog
WzIsIDI3XSwgNzU6IFsyLCAyN10sIDgwOiBbMiwgMjddLCA4MTogWzIsIDI3XSwgODI6IFsyLCAy
N10sIDgzOiBbMiwgMjddLCA4NDogWzIsIDI3XSwgODU6IFsyLCAyN10gfSwgeyAyMzogWzIsIDI4
XSwgMzM6IFsyLCAyOF0sIDU0OiBbMiwgMjhdLCA2NTogWzIsIDI4XSwgNjg6IFsyLCAyOF0sIDcy
OiBbMiwgMjhdLCA3NTogWzIsIDI4XSwgODA6IFsyLCAyOF0sIDgxOiBbMiwgMjhdLCA4MjogWzIs
IDI4XSwgODM6IFsyLCAyOF0sIDg0OiBbMiwgMjhdLCA4NTogWzIsIDI4XSB9LCB7IDIzOiBbMiwg
MzBdLCAzMzogWzIsIDMwXSwgNTQ6IFsyLCAzMF0sIDY4OiBbMiwgMzBdLCA3MTogMTA3LCA3Mjog
WzEsIDEwOF0sIDc1OiBbMiwgMzBdIH0sIHsgMjM6IFsyLCA5OF0sIDMzOiBbMiwgOThdLCA1NDog
WzIsIDk4XSwgNjg6IFsyLCA5OF0sIDcyOiBbMiwgOThdLCA3NTogWzIsIDk4XSB9LCB7IDIzOiBb
MiwgNDVdLCAzMzogWzIsIDQ1XSwgNTQ6IFsyLCA0NV0sIDY1OiBbMiwgNDVdLCA2ODogWzIsIDQ1
XSwgNzI6IFsyLCA0NV0sIDczOiBbMSwgMTA5XSwgNzU6IFsyLCA0NV0sIDgwOiBbMiwgNDVdLCA4
MTogWzIsIDQ1XSwgODI6IFsyLCA0NV0sIDgzOiBbMiwgNDVdLCA4NDogWzIsIDQ1XSwgODU6IFsy
LCA0NV0sIDg3OiBbMiwgNDVdIH0sIHsgMjM6IFsyLCA0NF0sIDMzOiBbMiwgNDRdLCA1NDogWzIs
IDQ0XSwgNjU6IFsyLCA0NF0sIDY4OiBbMiwgNDRdLCA3MjogWzIsIDQ0XSwgNzU6IFsyLCA0NF0s
IDgwOiBbMiwgNDRdLCA4MTogWzIsIDQ0XSwgODI6IFsyLCA0NF0sIDgzOiBbMiwgNDRdLCA4NDog
WzIsIDQ0XSwgODU6IFsyLCA0NF0sIDg3OiBbMiwgNDRdIH0sIHsgNTQ6IFsxLCAxMTBdIH0sIHsg
NTQ6IFsyLCA4M10sIDY1OiBbMiwgODNdLCA3MjogWzIsIDgzXSwgODA6IFsyLCA4M10sIDgxOiBb
MiwgODNdLCA4MjogWzIsIDgzXSwgODM6IFsyLCA4M10sIDg0OiBbMiwgODNdLCA4NTogWzIsIDgz
XSB9LCB7IDU0OiBbMiwgODVdIH0sIHsgNTogWzIsIDEzXSwgMTQ6IFsyLCAxM10sIDE1OiBbMiwg
MTNdLCAxOTogWzIsIDEzXSwgMjk6IFsyLCAxM10sIDM0OiBbMiwgMTNdLCAzOTogWzIsIDEzXSwg
NDQ6IFsyLCAxM10sIDQ3OiBbMiwgMTNdLCA0ODogWzIsIDEzXSwgNTE6IFsyLCAxM10sIDU1OiBb
MiwgMTNdLCA2MDogWzIsIDEzXSB9LCB7IDM4OiA1NiwgMzk6IFsxLCA1OF0sIDQzOiA1NywgNDQ6
IFsxLCA1OV0sIDQ1OiAxMTIsIDQ2OiAxMTEsIDQ3OiBbMiwgNzZdIH0sIHsgMzM6IFsyLCA3MF0s
IDQwOiAxMTMsIDY1OiBbMiwgNzBdLCA3MjogWzIsIDcwXSwgNzU6IFsyLCA3MF0sIDgwOiBbMiwg
NzBdLCA4MTogWzIsIDcwXSwgODI6IFsyLCA3MF0sIDgzOiBbMiwgNzBdLCA4NDogWzIsIDcwXSwg
ODU6IFsyLCA3MF0gfSwgeyA0NzogWzIsIDE4XSB9LCB7IDU6IFsyLCAxNF0sIDE0OiBbMiwgMTRd
LCAxNTogWzIsIDE0XSwgMTk6IFsyLCAxNF0sIDI5OiBbMiwgMTRdLCAzNDogWzIsIDE0XSwgMzk6
IFsyLCAxNF0sIDQ0OiBbMiwgMTRdLCA0NzogWzIsIDE0XSwgNDg6IFsyLCAxNF0sIDUxOiBbMiwg
MTRdLCA1NTogWzIsIDE0XSwgNjA6IFsyLCAxNF0gfSwgeyAzMzogWzEsIDExNF0gfSwgeyAzMzog
WzIsIDg3XSwgNjU6IFsyLCA4N10sIDcyOiBbMiwgODddLCA4MDogWzIsIDg3XSwgODE6IFsyLCA4
N10sIDgyOiBbMiwgODddLCA4MzogWzIsIDg3XSwgODQ6IFsyLCA4N10sIDg1OiBbMiwgODddIH0s
IHsgMzM6IFsyLCA4OV0gfSwgeyAyMDogNzUsIDYzOiAxMTYsIDY0OiA3NiwgNjU6IFsxLCA0NF0s
IDY3OiAxMTUsIDY4OiBbMiwgOTZdLCA2OTogMTE3LCA3MDogNzcsIDcxOiA3OCwgNzI6IFsxLCA3
OV0sIDc4OiAyNiwgNzk6IDI3LCA4MDogWzEsIDI4XSwgODE6IFsxLCAyOV0sIDgyOiBbMSwgMzBd
LCA4MzogWzEsIDMxXSwgODQ6IFsxLCAzMl0sIDg1OiBbMSwgMzRdLCA4NjogMzMgfSwgeyAzMzog
WzEsIDExOF0gfSwgeyAzMjogMTE5LCAzMzogWzIsIDYyXSwgNzQ6IDEyMCwgNzU6IFsxLCAxMjFd
IH0sIHsgMzM6IFsyLCA1OV0sIDY1OiBbMiwgNTldLCA3MjogWzIsIDU5XSwgNzU6IFsyLCA1OV0s
IDgwOiBbMiwgNTldLCA4MTogWzIsIDU5XSwgODI6IFsyLCA1OV0sIDgzOiBbMiwgNTldLCA4NDog
WzIsIDU5XSwgODU6IFsyLCA1OV0gfSwgeyAzMzogWzIsIDYxXSwgNzU6IFsyLCA2MV0gfSwgeyAz
MzogWzIsIDY4XSwgMzc6IDEyMiwgNzQ6IDEyMywgNzU6IFsxLCAxMjFdIH0sIHsgMzM6IFsyLCA2
NV0sIDY1OiBbMiwgNjVdLCA3MjogWzIsIDY1XSwgNzU6IFsyLCA2NV0sIDgwOiBbMiwgNjVdLCA4
MTogWzIsIDY1XSwgODI6IFsyLCA2NV0sIDgzOiBbMiwgNjVdLCA4NDogWzIsIDY1XSwgODU6IFsy
LCA2NV0gfSwgeyAzMzogWzIsIDY3XSwgNzU6IFsyLCA2N10gfSwgeyAyMzogWzEsIDEyNF0gfSwg
eyAyMzogWzIsIDUxXSwgNjU6IFsyLCA1MV0sIDcyOiBbMiwgNTFdLCA4MDogWzIsIDUxXSwgODE6
IFsyLCA1MV0sIDgyOiBbMiwgNTFdLCA4MzogWzIsIDUxXSwgODQ6IFsyLCA1MV0sIDg1OiBbMiwg
NTFdIH0sIHsgMjM6IFsyLCA1M10gfSwgeyAzMzogWzEsIDEyNV0gfSwgeyAzMzogWzIsIDkxXSwg
NjU6IFsyLCA5MV0sIDcyOiBbMiwgOTFdLCA4MDogWzIsIDkxXSwgODE6IFsyLCA5MV0sIDgyOiBb
MiwgOTFdLCA4MzogWzIsIDkxXSwgODQ6IFsyLCA5MV0sIDg1OiBbMiwgOTFdIH0sIHsgMzM6IFsy
LCA5M10gfSwgeyA1OiBbMiwgMjJdLCAxNDogWzIsIDIyXSwgMTU6IFsyLCAyMl0sIDE5OiBbMiwg
MjJdLCAyOTogWzIsIDIyXSwgMzQ6IFsyLCAyMl0sIDM5OiBbMiwgMjJdLCA0NDogWzIsIDIyXSwg
NDc6IFsyLCAyMl0sIDQ4OiBbMiwgMjJdLCA1MTogWzIsIDIyXSwgNTU6IFsyLCAyMl0sIDYwOiBb
MiwgMjJdIH0sIHsgMjM6IFsyLCA5OV0sIDMzOiBbMiwgOTldLCA1NDogWzIsIDk5XSwgNjg6IFsy
LCA5OV0sIDcyOiBbMiwgOTldLCA3NTogWzIsIDk5XSB9LCB7IDczOiBbMSwgMTA5XSB9LCB7IDIw
OiA3NSwgNjM6IDEyNiwgNjQ6IDc2LCA2NTogWzEsIDQ0XSwgNzI6IFsxLCAzNV0sIDc4OiAyNiwg
Nzk6IDI3LCA4MDogWzEsIDI4XSwgODE6IFsxLCAyOV0sIDgyOiBbMSwgMzBdLCA4MzogWzEsIDMx
XSwgODQ6IFsxLCAzMl0sIDg1OiBbMSwgMzRdLCA4NjogMzMgfSwgeyA1OiBbMiwgMjNdLCAxNDog
WzIsIDIzXSwgMTU6IFsyLCAyM10sIDE5OiBbMiwgMjNdLCAyOTogWzIsIDIzXSwgMzQ6IFsyLCAy
M10sIDM5OiBbMiwgMjNdLCA0NDogWzIsIDIzXSwgNDc6IFsyLCAyM10sIDQ4OiBbMiwgMjNdLCA1
MTogWzIsIDIzXSwgNTU6IFsyLCAyM10sIDYwOiBbMiwgMjNdIH0sIHsgNDc6IFsyLCAxOV0gfSwg
eyA0NzogWzIsIDc3XSB9LCB7IDIwOiA3NSwgMzM6IFsyLCA3Ml0sIDQxOiAxMjcsIDYzOiAxMjgs
IDY0OiA3NiwgNjU6IFsxLCA0NF0sIDY5OiAxMjksIDcwOiA3NywgNzE6IDc4LCA3MjogWzEsIDc5
XSwgNzU6IFsyLCA3Ml0sIDc4OiAyNiwgNzk6IDI3LCA4MDogWzEsIDI4XSwgODE6IFsxLCAyOV0s
IDgyOiBbMSwgMzBdLCA4MzogWzEsIDMxXSwgODQ6IFsxLCAzMl0sIDg1OiBbMSwgMzRdLCA4Njog
MzMgfSwgeyA1OiBbMiwgMjRdLCAxNDogWzIsIDI0XSwgMTU6IFsyLCAyNF0sIDE5OiBbMiwgMjRd
LCAyOTogWzIsIDI0XSwgMzQ6IFsyLCAyNF0sIDM5OiBbMiwgMjRdLCA0NDogWzIsIDI0XSwgNDc6
IFsyLCAyNF0sIDQ4OiBbMiwgMjRdLCA1MTogWzIsIDI0XSwgNTU6IFsyLCAyNF0sIDYwOiBbMiwg
MjRdIH0sIHsgNjg6IFsxLCAxMzBdIH0sIHsgNjU6IFsyLCA5NV0sIDY4OiBbMiwgOTVdLCA3Mjog
WzIsIDk1XSwgODA6IFsyLCA5NV0sIDgxOiBbMiwgOTVdLCA4MjogWzIsIDk1XSwgODM6IFsyLCA5
NV0sIDg0OiBbMiwgOTVdLCA4NTogWzIsIDk1XSB9LCB7IDY4OiBbMiwgOTddIH0sIHsgNTogWzIs
IDIxXSwgMTQ6IFsyLCAyMV0sIDE1OiBbMiwgMjFdLCAxOTogWzIsIDIxXSwgMjk6IFsyLCAyMV0s
IDM0OiBbMiwgMjFdLCAzOTogWzIsIDIxXSwgNDQ6IFsyLCAyMV0sIDQ3OiBbMiwgMjFdLCA0ODog
WzIsIDIxXSwgNTE6IFsyLCAyMV0sIDU1OiBbMiwgMjFdLCA2MDogWzIsIDIxXSB9LCB7IDMzOiBb
MSwgMTMxXSB9LCB7IDMzOiBbMiwgNjNdIH0sIHsgNzI6IFsxLCAxMzNdLCA3NjogMTMyIH0sIHsg
MzM6IFsxLCAxMzRdIH0sIHsgMzM6IFsyLCA2OV0gfSwgeyAxNTogWzIsIDEyXSB9LCB7IDE0OiBb
MiwgMjZdLCAxNTogWzIsIDI2XSwgMTk6IFsyLCAyNl0sIDI5OiBbMiwgMjZdLCAzNDogWzIsIDI2
XSwgNDc6IFsyLCAyNl0sIDQ4OiBbMiwgMjZdLCA1MTogWzIsIDI2XSwgNTU6IFsyLCAyNl0sIDYw
OiBbMiwgMjZdIH0sIHsgMjM6IFsyLCAzMV0sIDMzOiBbMiwgMzFdLCA1NDogWzIsIDMxXSwgNjg6
IFsyLCAzMV0sIDcyOiBbMiwgMzFdLCA3NTogWzIsIDMxXSB9LCB7IDMzOiBbMiwgNzRdLCA0Mjog
MTM1LCA3NDogMTM2LCA3NTogWzEsIDEyMV0gfSwgeyAzMzogWzIsIDcxXSwgNjU6IFsyLCA3MV0s
IDcyOiBbMiwgNzFdLCA3NTogWzIsIDcxXSwgODA6IFsyLCA3MV0sIDgxOiBbMiwgNzFdLCA4Mjog
WzIsIDcxXSwgODM6IFsyLCA3MV0sIDg0OiBbMiwgNzFdLCA4NTogWzIsIDcxXSB9LCB7IDMzOiBb
MiwgNzNdLCA3NTogWzIsIDczXSB9LCB7IDIzOiBbMiwgMjldLCAzMzogWzIsIDI5XSwgNTQ6IFsy
LCAyOV0sIDY1OiBbMiwgMjldLCA2ODogWzIsIDI5XSwgNzI6IFsyLCAyOV0sIDc1OiBbMiwgMjld
LCA4MDogWzIsIDI5XSwgODE6IFsyLCAyOV0sIDgyOiBbMiwgMjldLCA4MzogWzIsIDI5XSwgODQ6
IFsyLCAyOV0sIDg1OiBbMiwgMjldIH0sIHsgMTQ6IFsyLCAxNV0sIDE1OiBbMiwgMTVdLCAxOTog
WzIsIDE1XSwgMjk6IFsyLCAxNV0sIDM0OiBbMiwgMTVdLCAzOTogWzIsIDE1XSwgNDQ6IFsyLCAx
NV0sIDQ3OiBbMiwgMTVdLCA0ODogWzIsIDE1XSwgNTE6IFsyLCAxNV0sIDU1OiBbMiwgMTVdLCA2
MDogWzIsIDE1XSB9LCB7IDcyOiBbMSwgMTM4XSwgNzc6IFsxLCAxMzddIH0sIHsgNzI6IFsyLCAx
MDBdLCA3NzogWzIsIDEwMF0gfSwgeyAxNDogWzIsIDE2XSwgMTU6IFsyLCAxNl0sIDE5OiBbMiwg
MTZdLCAyOTogWzIsIDE2XSwgMzQ6IFsyLCAxNl0sIDQ0OiBbMiwgMTZdLCA0NzogWzIsIDE2XSwg
NDg6IFsyLCAxNl0sIDUxOiBbMiwgMTZdLCA1NTogWzIsIDE2XSwgNjA6IFsyLCAxNl0gfSwgeyAz
MzogWzEsIDEzOV0gfSwgeyAzMzogWzIsIDc1XSB9LCB7IDMzOiBbMiwgMzJdIH0sIHsgNzI6IFsy
LCAxMDFdLCA3NzogWzIsIDEwMV0gfSwgeyAxNDogWzIsIDE3XSwgMTU6IFsyLCAxN10sIDE5OiBb
MiwgMTddLCAyOTogWzIsIDE3XSwgMzQ6IFsyLCAxN10sIDM5OiBbMiwgMTddLCA0NDogWzIsIDE3
XSwgNDc6IFsyLCAxN10sIDQ4OiBbMiwgMTddLCA1MTogWzIsIDE3XSwgNTU6IFsyLCAxN10sIDYw
OiBbMiwgMTddIH1dLAorICAgICAgICBkZWZhdWx0QWN0aW9uczogeyA0OiBbMiwgMV0sIDU1OiBb
MiwgNTVdLCA1NzogWzIsIDIwXSwgNjE6IFsyLCA1N10sIDc0OiBbMiwgODFdLCA4MzogWzIsIDg1
XSwgODc6IFsyLCAxOF0sIDkxOiBbMiwgODldLCAxMDI6IFsyLCA1M10sIDEwNTogWzIsIDkzXSwg
MTExOiBbMiwgMTldLCAxMTI6IFsyLCA3N10sIDExNzogWzIsIDk3XSwgMTIwOiBbMiwgNjNdLCAx
MjM6IFsyLCA2OV0sIDEyNDogWzIsIDEyXSwgMTM2OiBbMiwgNzVdLCAxMzc6IFsyLCAzMl0gfSwK
KyAgICAgICAgcGFyc2VFcnJvcjogZnVuY3Rpb24gcGFyc2VFcnJvcihzdHIsIGhhc2gpIHsKKyAg
ICAgICAgICAgIHRocm93IG5ldyBFcnJvcihzdHIpOworICAgICAgICB9LAorICAgICAgICBwYXJz
ZTogZnVuY3Rpb24gcGFyc2UoaW5wdXQpIHsKKyAgICAgICAgICAgIHZhciBzZWxmID0gdGhpcywK
KyAgICAgICAgICAgICAgICBzdGFjayA9IFswXSwKKyAgICAgICAgICAgICAgICB2c3RhY2sgPSBb
bnVsbF0sCisgICAgICAgICAgICAgICAgbHN0YWNrID0gW10sCisgICAgICAgICAgICAgICAgdGFi
bGUgPSB0aGlzLnRhYmxlLAorICAgICAgICAgICAgICAgIHl5dGV4dCA9ICIiLAorICAgICAgICAg
ICAgICAgIHl5bGluZW5vID0gMCwKKyAgICAgICAgICAgICAgICB5eWxlbmcgPSAwLAorICAgICAg
ICAgICAgICAgIHJlY292ZXJpbmcgPSAwLAorICAgICAgICAgICAgICAgIFRFUlJPUiA9IDIsCisg
ICAgICAgICAgICAgICAgRU9GID0gMTsKKyAgICAgICAgICAgIHRoaXMubGV4ZXIuc2V0SW5wdXQo
aW5wdXQpOworICAgICAgICAgICAgdGhpcy5sZXhlci55eSA9IHRoaXMueXk7CisgICAgICAgICAg
ICB0aGlzLnl5LmxleGVyID0gdGhpcy5sZXhlcjsKKyAgICAgICAgICAgIHRoaXMueXkucGFyc2Vy
ID0gdGhpczsKKyAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5sZXhlci55eWxsb2MgPT0gInVu
ZGVmaW5lZCIpIHRoaXMubGV4ZXIueXlsbG9jID0ge307CisgICAgICAgICAgICB2YXIgeXlsb2Mg
PSB0aGlzLmxleGVyLnl5bGxvYzsKKyAgICAgICAgICAgIGxzdGFjay5wdXNoKHl5bG9jKTsKKyAg
ICAgICAgICAgIHZhciByYW5nZXMgPSB0aGlzLmxleGVyLm9wdGlvbnMgJiYgdGhpcy5sZXhlci5v
cHRpb25zLnJhbmdlczsKKyAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy55eS5wYXJzZUVycm9y
ID09PSAiZnVuY3Rpb24iKSB0aGlzLnBhcnNlRXJyb3IgPSB0aGlzLnl5LnBhcnNlRXJyb3I7Cisg
ICAgICAgICAgICBmdW5jdGlvbiBwb3BTdGFjayhuKSB7CisgICAgICAgICAgICAgICAgc3RhY2su
bGVuZ3RoID0gc3RhY2subGVuZ3RoIC0gMiAqIG47CisgICAgICAgICAgICAgICAgdnN0YWNrLmxl
bmd0aCA9IHZzdGFjay5sZW5ndGggLSBuOworICAgICAgICAgICAgICAgIGxzdGFjay5sZW5ndGgg
PSBsc3RhY2subGVuZ3RoIC0gbjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZ1bmN0aW9u
IGxleCgpIHsKKyAgICAgICAgICAgICAgICB2YXIgdG9rZW47CisgICAgICAgICAgICAgICAgdG9r
ZW4gPSBzZWxmLmxleGVyLmxleCgpIHx8IDE7CisgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB0
b2tlbiAhPT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSBzZWxmLnN5
bWJvbHNfW3Rva2VuXSB8fCB0b2tlbjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHRva2VuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdmFyIHN5bWJvbCwK
KyAgICAgICAgICAgICAgICBwcmVFcnJvclN5bWJvbCwKKyAgICAgICAgICAgICAgICBzdGF0ZSwK
KyAgICAgICAgICAgICAgICBhY3Rpb24sCisgICAgICAgICAgICAgICAgYSwKKyAgICAgICAgICAg
ICAgICByLAorICAgICAgICAgICAgICAgIHl5dmFsID0ge30sCisgICAgICAgICAgICAgICAgcCwK
KyAgICAgICAgICAgICAgICBsZW4sCisgICAgICAgICAgICAgICAgbmV3U3RhdGUsCisgICAgICAg
ICAgICAgICAgZXhwZWN0ZWQ7CisgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAg
ICAgICAgIHN0YXRlID0gc3RhY2tbc3RhY2subGVuZ3RoIC0gMV07CisgICAgICAgICAgICAgICAg
aWYgKHRoaXMuZGVmYXVsdEFjdGlvbnNbc3RhdGVdKSB7CisgICAgICAgICAgICAgICAgICAgIGFj
dGlvbiA9IHRoaXMuZGVmYXVsdEFjdGlvbnNbc3RhdGVdOworICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChzeW1ib2wgPT09IG51bGwgfHwgdHlwZW9mIHN5
bWJvbCA9PSAidW5kZWZpbmVkIikgeworICAgICAgICAgICAgICAgICAgICAgICAgc3ltYm9sID0g
bGV4KCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYWN0aW9u
ID0gdGFibGVbc3RhdGVdICYmIHRhYmxlW3N0YXRlXVtzeW1ib2xdOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGFjdGlvbiA9PT0gInVuZGVmaW5lZCIgfHwg
IWFjdGlvbi5sZW5ndGggfHwgIWFjdGlvblswXSkgeworICAgICAgICAgICAgICAgICAgICB2YXIg
ZXJyU3RyID0gIiI7CisgICAgICAgICAgICAgICAgICAgIGlmICghcmVjb3ZlcmluZykgeworICAg
ICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSBbXTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGZvciAocCBpbiB0YWJsZVtzdGF0ZV0pIGlmICh0aGlzLnRlcm1pbmFsc19bcF0gJiYgcCA+
IDIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZC5wdXNoKCInIiArIHRo
aXMudGVybWluYWxzX1twXSArICInIik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5sZXhlci5zaG93UG9zaXRpb24pIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBlcnJTdHIgPSAiUGFyc2UgZXJyb3Igb24gbGluZSAiICsg
KHl5bGluZW5vICsgMSkgKyAiOlxuIiArIHRoaXMubGV4ZXIuc2hvd1Bvc2l0aW9uKCkgKyAiXG5F
eHBlY3RpbmcgIiArIGV4cGVjdGVkLmpvaW4oIiwgIikgKyAiLCBnb3QgJyIgKyAodGhpcy50ZXJt
aW5hbHNfW3N5bWJvbF0gfHwgc3ltYm9sKSArICInIjsKKyAgICAgICAgICAgICAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyU3RyID0gIlBhcnNlIGVy
cm9yIG9uIGxpbmUgIiArICh5eWxpbmVubyArIDEpICsgIjogVW5leHBlY3RlZCAiICsgKHN5bWJv
bCA9PSAxID8gImVuZCBvZiBpbnB1dCIgOiAiJyIgKyAodGhpcy50ZXJtaW5hbHNfW3N5bWJvbF0g
fHwgc3ltYm9sKSArICInIik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgICAgICB0aGlzLnBhcnNlRXJyb3IoZXJyU3RyLCB7IHRleHQ6IHRoaXMubGV4ZXIu
bWF0Y2gsIHRva2VuOiB0aGlzLnRlcm1pbmFsc19bc3ltYm9sXSB8fCBzeW1ib2wsIGxpbmU6IHRo
aXMubGV4ZXIueXlsaW5lbm8sIGxvYzogeXlsb2MsIGV4cGVjdGVkOiBleHBlY3RlZCB9KTsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBp
ZiAoYWN0aW9uWzBdIGluc3RhbmNlb2YgQXJyYXkgJiYgYWN0aW9uLmxlbmd0aCA+IDEpIHsKKyAg
ICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJQYXJzZSBFcnJvcjogbXVsdGlwbGUg
YWN0aW9ucyBwb3NzaWJsZSBhdCBzdGF0ZTogIiArIHN0YXRlICsgIiwgdG9rZW46ICIgKyBzeW1i
b2wpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBzd2l0Y2ggKGFjdGlvblsw
XSkgeworICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICAgICAgICAgICAg
ICBzdGFjay5wdXNoKHN5bWJvbCk7CisgICAgICAgICAgICAgICAgICAgICAgICB2c3RhY2sucHVz
aCh0aGlzLmxleGVyLnl5dGV4dCk7CisgICAgICAgICAgICAgICAgICAgICAgICBsc3RhY2sucHVz
aCh0aGlzLmxleGVyLnl5bGxvYyk7CisgICAgICAgICAgICAgICAgICAgICAgICBzdGFjay5wdXNo
KGFjdGlvblsxXSk7CisgICAgICAgICAgICAgICAgICAgICAgICBzeW1ib2wgPSBudWxsOworICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcmVFcnJvclN5bWJvbCkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHl5bGVuZyA9IHRoaXMubGV4ZXIueXlsZW5nOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHl5dGV4dCA9IHRoaXMubGV4ZXIueXl0ZXh0OworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHl5bGluZW5vID0gdGhpcy5sZXhlci55eWxpbmVubzsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB5eWxvYyA9IHRoaXMubGV4ZXIueXlsbG9jOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChyZWNvdmVyaW5nID4gMCkgcmVjb3ZlcmluZy0tOworICAg
ICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzeW1ib2wgPSBwcmVFcnJvclN5bWJvbDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
cmVFcnJvclN5bWJvbCA9IG51bGw7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAyOgorICAg
ICAgICAgICAgICAgICAgICAgICAgbGVuID0gdGhpcy5wcm9kdWN0aW9uc19bYWN0aW9uWzFdXVsx
XTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHl5dmFsLiQgPSB2c3RhY2tbdnN0YWNrLmxlbmd0
aCAtIGxlbl07CisgICAgICAgICAgICAgICAgICAgICAgICB5eXZhbC5fJCA9IHsgZmlyc3RfbGlu
ZTogbHN0YWNrW2xzdGFjay5sZW5ndGggLSAobGVuIHx8IDEpXS5maXJzdF9saW5lLCBsYXN0X2xp
bmU6IGxzdGFja1tsc3RhY2subGVuZ3RoIC0gMV0ubGFzdF9saW5lLCBmaXJzdF9jb2x1bW46IGxz
dGFja1tsc3RhY2subGVuZ3RoIC0gKGxlbiB8fCAxKV0uZmlyc3RfY29sdW1uLCBsYXN0X2NvbHVt
bjogbHN0YWNrW2xzdGFjay5sZW5ndGggLSAxXS5sYXN0X2NvbHVtbiB9OworICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKHJhbmdlcykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHl5
dmFsLl8kLnJhbmdlID0gW2xzdGFja1tsc3RhY2subGVuZ3RoIC0gKGxlbiB8fCAxKV0ucmFuZ2Vb
MF0sIGxzdGFja1tsc3RhY2subGVuZ3RoIC0gMV0ucmFuZ2VbMV1dOworICAgICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgciA9IHRoaXMucGVyZm9ybUFjdGlv
bi5jYWxsKHl5dmFsLCB5eXRleHQsIHl5bGVuZywgeXlsaW5lbm8sIHRoaXMueXksIGFjdGlvblsx
XSwgdnN0YWNrLCBsc3RhY2spOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBy
ICE9PSAidW5kZWZpbmVkIikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBy
OworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KGxlbikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrID0gc3RhY2suc2xpY2Uo
MCwgLTEgKiBsZW4gKiAyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2c3RhY2sgPSB2
c3RhY2suc2xpY2UoMCwgLTEgKiBsZW4pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxz
dGFjayA9IGxzdGFjay5zbGljZSgwLCAtMSAqIGxlbik7CisgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgICAgICBzdGFjay5wdXNoKHRoaXMucHJvZHVjdGlvbnNf
W2FjdGlvblsxXV1bMF0pOworICAgICAgICAgICAgICAgICAgICAgICAgdnN0YWNrLnB1c2goeXl2
YWwuJCk7CisgICAgICAgICAgICAgICAgICAgICAgICBsc3RhY2sucHVzaCh5eXZhbC5fJCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBuZXdTdGF0ZSA9IHRhYmxlW3N0YWNrW3N0YWNrLmxlbmd0
aCAtIDJdXVtzdGFja1tzdGFjay5sZW5ndGggLSAxXV07CisgICAgICAgICAgICAgICAgICAgICAg
ICBzdGFjay5wdXNoKG5ld1N0YXRlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH07CisgICAgLyogSmlzb24gZ2VuZXJhdGVkIGxl
eGVyICovCisgICAgdmFyIGxleGVyID0gKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdmFyIGxleGVy
ID0geyBFT0Y6IDEsCisgICAgICAgICAgICBwYXJzZUVycm9yOiBmdW5jdGlvbiBwYXJzZUVycm9y
KHN0ciwgaGFzaCkgeworICAgICAgICAgICAgICAgIGlmICh0aGlzLnl5LnBhcnNlcikgeworICAg
ICAgICAgICAgICAgICAgICB0aGlzLnl5LnBhcnNlci5wYXJzZUVycm9yKHN0ciwgaGFzaCk7Cisg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKHN0cik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
IHNldElucHV0OiBmdW5jdGlvbiBzZXRJbnB1dChpbnB1dCkgeworICAgICAgICAgICAgICAgIHRo
aXMuX2lucHV0ID0gaW5wdXQ7CisgICAgICAgICAgICAgICAgdGhpcy5fbW9yZSA9IHRoaXMuX2xl
c3MgPSB0aGlzLmRvbmUgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICB0aGlzLnl5bGluZW5vID0g
dGhpcy55eWxlbmcgPSAwOworICAgICAgICAgICAgICAgIHRoaXMueXl0ZXh0ID0gdGhpcy5tYXRj
aGVkID0gdGhpcy5tYXRjaCA9ICcnOworICAgICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uU3Rh
Y2sgPSBbJ0lOSVRJQUwnXTsKKyAgICAgICAgICAgICAgICB0aGlzLnl5bGxvYyA9IHsgZmlyc3Rf
bGluZTogMSwgZmlyc3RfY29sdW1uOiAwLCBsYXN0X2xpbmU6IDEsIGxhc3RfY29sdW1uOiAwIH07
CisgICAgICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5yYW5nZXMpIHRoaXMueXlsbG9jLnJh
bmdlID0gWzAsIDBdOworICAgICAgICAgICAgICAgIHRoaXMub2Zmc2V0ID0gMDsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBpbnB1dDog
ZnVuY3Rpb24gaW5wdXQoKSB7CisgICAgICAgICAgICAgICAgdmFyIGNoID0gdGhpcy5faW5wdXRb
MF07CisgICAgICAgICAgICAgICAgdGhpcy55eXRleHQgKz0gY2g7CisgICAgICAgICAgICAgICAg
dGhpcy55eWxlbmcrKzsKKyAgICAgICAgICAgICAgICB0aGlzLm9mZnNldCsrOworICAgICAgICAg
ICAgICAgIHRoaXMubWF0Y2ggKz0gY2g7CisgICAgICAgICAgICAgICAgdGhpcy5tYXRjaGVkICs9
IGNoOworICAgICAgICAgICAgICAgIHZhciBsaW5lcyA9IGNoLm1hdGNoKC8oPzpcclxuP3xcbiku
Ki9nKTsKKyAgICAgICAgICAgICAgICBpZiAobGluZXMpIHsKKyAgICAgICAgICAgICAgICAgICAg
dGhpcy55eWxpbmVubysrOworICAgICAgICAgICAgICAgICAgICB0aGlzLnl5bGxvYy5sYXN0X2xp
bmUrKzsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICB0aGlz
Lnl5bGxvYy5sYXN0X2NvbHVtbisrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICBpZiAodGhpcy5vcHRpb25zLnJhbmdlcykgdGhpcy55eWxsb2MucmFuZ2VbMV0rKzsKKworICAg
ICAgICAgICAgICAgIHRoaXMuX2lucHV0ID0gdGhpcy5faW5wdXQuc2xpY2UoMSk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGNoOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHVucHV0OiBm
dW5jdGlvbiB1bnB1dChjaCkgeworICAgICAgICAgICAgICAgIHZhciBsZW4gPSBjaC5sZW5ndGg7
CisgICAgICAgICAgICAgICAgdmFyIGxpbmVzID0gY2guc3BsaXQoLyg/OlxyXG4/fFxuKS9nKTsK
KworICAgICAgICAgICAgICAgIHRoaXMuX2lucHV0ID0gY2ggKyB0aGlzLl9pbnB1dDsKKyAgICAg
ICAgICAgICAgICB0aGlzLnl5dGV4dCA9IHRoaXMueXl0ZXh0LnN1YnN0cigwLCB0aGlzLnl5dGV4
dC5sZW5ndGggLSBsZW4gLSAxKTsKKyAgICAgICAgICAgICAgICAvL3RoaXMueXlsZW5nIC09IGxl
bjsKKyAgICAgICAgICAgICAgICB0aGlzLm9mZnNldCAtPSBsZW47CisgICAgICAgICAgICAgICAg
dmFyIG9sZExpbmVzID0gdGhpcy5tYXRjaC5zcGxpdCgvKD86XHJcbj98XG4pL2cpOworICAgICAg
ICAgICAgICAgIHRoaXMubWF0Y2ggPSB0aGlzLm1hdGNoLnN1YnN0cigwLCB0aGlzLm1hdGNoLmxl
bmd0aCAtIDEpOworICAgICAgICAgICAgICAgIHRoaXMubWF0Y2hlZCA9IHRoaXMubWF0Y2hlZC5z
dWJzdHIoMCwgdGhpcy5tYXRjaGVkLmxlbmd0aCAtIDEpOworCisgICAgICAgICAgICAgICAgaWYg
KGxpbmVzLmxlbmd0aCAtIDEpIHRoaXMueXlsaW5lbm8gLT0gbGluZXMubGVuZ3RoIC0gMTsKKyAg
ICAgICAgICAgICAgICB2YXIgciA9IHRoaXMueXlsbG9jLnJhbmdlOworCisgICAgICAgICAgICAg
ICAgdGhpcy55eWxsb2MgPSB7IGZpcnN0X2xpbmU6IHRoaXMueXlsbG9jLmZpcnN0X2xpbmUsCisg
ICAgICAgICAgICAgICAgICAgIGxhc3RfbGluZTogdGhpcy55eWxpbmVubyArIDEsCisgICAgICAg
ICAgICAgICAgICAgIGZpcnN0X2NvbHVtbjogdGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLAorICAg
ICAgICAgICAgICAgICAgICBsYXN0X2NvbHVtbjogbGluZXMgPyAobGluZXMubGVuZ3RoID09PSBv
bGRMaW5lcy5sZW5ndGggPyB0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4gOiAwKSArIG9sZExpbmVz
W29sZExpbmVzLmxlbmd0aCAtIGxpbmVzLmxlbmd0aF0ubGVuZ3RoIC0gbGluZXNbMF0ubGVuZ3Ro
IDogdGhpcy55eWxsb2MuZmlyc3RfY29sdW1uIC0gbGVuCisgICAgICAgICAgICAgICAgfTsKKwor
ICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMucmFuZ2VzKSB7CisgICAgICAgICAgICAg
ICAgICAgIHRoaXMueXlsbG9jLnJhbmdlID0gW3JbMF0sIHJbMF0gKyB0aGlzLnl5bGVuZyAtIGxl
bl07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOworICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgIG1vcmU6IGZ1bmN0aW9uIG1vcmUoKSB7CisgICAgICAg
ICAgICAgICAgdGhpcy5fbW9yZSA9IHRydWU7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7
CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgbGVzczogZnVuY3Rpb24gbGVzcyhuKSB7Cisg
ICAgICAgICAgICAgICAgdGhpcy51bnB1dCh0aGlzLm1hdGNoLnNsaWNlKG4pKTsKKyAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICBwYXN0SW5wdXQ6IGZ1bmN0aW9uIHBhc3RJbnB1dCgpIHsKKyAg
ICAgICAgICAgICAgICB2YXIgcGFzdCA9IHRoaXMubWF0Y2hlZC5zdWJzdHIoMCwgdGhpcy5tYXRj
aGVkLmxlbmd0aCAtIHRoaXMubWF0Y2gubGVuZ3RoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
KHBhc3QubGVuZ3RoID4gMjAgPyAnLi4uJyA6ICcnKSArIHBhc3Quc3Vic3RyKC0yMCkucmVwbGFj
ZSgvXG4vZywgIiIpOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHVwY29taW5nSW5wdXQ6
IGZ1bmN0aW9uIHVwY29taW5nSW5wdXQoKSB7CisgICAgICAgICAgICAgICAgdmFyIG5leHQgPSB0
aGlzLm1hdGNoOworICAgICAgICAgICAgICAgIGlmIChuZXh0Lmxlbmd0aCA8IDIwKSB7CisgICAg
ICAgICAgICAgICAgICAgIG5leHQgKz0gdGhpcy5faW5wdXQuc3Vic3RyKDAsIDIwIC0gbmV4dC5s
ZW5ndGgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gKG5leHQu
c3Vic3RyKDAsIDIwKSArIChuZXh0Lmxlbmd0aCA+IDIwID8gJy4uLicgOiAnJykpLnJlcGxhY2Uo
L1xuL2csICIiKTsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBzaG93UG9zaXRpb246IGZ1
bmN0aW9uIHNob3dQb3NpdGlvbigpIHsKKyAgICAgICAgICAgICAgICB2YXIgcHJlID0gdGhpcy5w
YXN0SW5wdXQoKTsKKyAgICAgICAgICAgICAgICB2YXIgYyA9IG5ldyBBcnJheShwcmUubGVuZ3Ro
ICsgMSkuam9pbigiLSIpOworICAgICAgICAgICAgICAgIHJldHVybiBwcmUgKyB0aGlzLnVwY29t
aW5nSW5wdXQoKSArICJcbiIgKyBjICsgIl4iOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
IG5leHQ6IGZ1bmN0aW9uIG5leHQoKSB7CisgICAgICAgICAgICAgICAgaWYgKHRoaXMuZG9uZSkg
eworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5FT0Y7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGlmICghdGhpcy5faW5wdXQpIHRoaXMuZG9uZSA9IHRydWU7CisK
KyAgICAgICAgICAgICAgICB2YXIgdG9rZW4sIG1hdGNoLCB0ZW1wTWF0Y2gsIGluZGV4LCBjb2ws
IGxpbmVzOworICAgICAgICAgICAgICAgIGlmICghdGhpcy5fbW9yZSkgeworICAgICAgICAgICAg
ICAgICAgICB0aGlzLnl5dGV4dCA9ICcnOworICAgICAgICAgICAgICAgICAgICB0aGlzLm1hdGNo
ID0gJyc7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHZhciBydWxlcyA9IHRo
aXMuX2N1cnJlbnRSdWxlcygpOworICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
cnVsZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgdGVtcE1hdGNoID0gdGhp
cy5faW5wdXQubWF0Y2godGhpcy5ydWxlc1tydWxlc1tpXV0pOworICAgICAgICAgICAgICAgICAg
ICBpZiAodGVtcE1hdGNoICYmICghbWF0Y2ggfHwgdGVtcE1hdGNoWzBdLmxlbmd0aCA+IG1hdGNo
WzBdLmxlbmd0aCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoID0gdGVtcE1hdGNo
OworICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBpOworICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCF0aGlzLm9wdGlvbnMuZmxleCkgYnJlYWs7CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKG1hdGNoKSB7CisgICAg
ICAgICAgICAgICAgICAgIGxpbmVzID0gbWF0Y2hbMF0ubWF0Y2goLyg/OlxyXG4/fFxuKS4qL2cp
OworICAgICAgICAgICAgICAgICAgICBpZiAobGluZXMpIHRoaXMueXlsaW5lbm8gKz0gbGluZXMu
bGVuZ3RoOworICAgICAgICAgICAgICAgICAgICB0aGlzLnl5bGxvYyA9IHsgZmlyc3RfbGluZTog
dGhpcy55eWxsb2MubGFzdF9saW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgbGFzdF9saW5l
OiB0aGlzLnl5bGluZW5vICsgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0X2NvbHVt
bjogdGhpcy55eWxsb2MubGFzdF9jb2x1bW4sCisgICAgICAgICAgICAgICAgICAgICAgICBsYXN0
X2NvbHVtbjogbGluZXMgPyBsaW5lc1tsaW5lcy5sZW5ndGggLSAxXS5sZW5ndGggLSBsaW5lc1ts
aW5lcy5sZW5ndGggLSAxXS5tYXRjaCgvXHI/XG4/LylbMF0ubGVuZ3RoIDogdGhpcy55eWxsb2Mu
bGFzdF9jb2x1bW4gKyBtYXRjaFswXS5sZW5ndGggfTsKKyAgICAgICAgICAgICAgICAgICAgdGhp
cy55eXRleHQgKz0gbWF0Y2hbMF07CisgICAgICAgICAgICAgICAgICAgIHRoaXMubWF0Y2ggKz0g
bWF0Y2hbMF07CisgICAgICAgICAgICAgICAgICAgIHRoaXMubWF0Y2hlcyA9IG1hdGNoOworICAg
ICAgICAgICAgICAgICAgICB0aGlzLnl5bGVuZyA9IHRoaXMueXl0ZXh0Lmxlbmd0aDsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5yYW5nZXMpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHRoaXMueXlsbG9jLnJhbmdlID0gW3RoaXMub2Zmc2V0LCB0aGlzLm9mZnNldCAr
PSB0aGlzLnl5bGVuZ107CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgdGhpcy5fbW9yZSA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbnB1dCA9
IHRoaXMuX2lucHV0LnNsaWNlKG1hdGNoWzBdLmxlbmd0aCk7CisgICAgICAgICAgICAgICAgICAg
IHRoaXMubWF0Y2hlZCArPSBtYXRjaFswXTsKKyAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSB0
aGlzLnBlcmZvcm1BY3Rpb24uY2FsbCh0aGlzLCB0aGlzLnl5LCB0aGlzLCBydWxlc1tpbmRleF0s
IHRoaXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGggLSAxXSk7Cisg
ICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmRvbmUgJiYgdGhpcy5faW5wdXQpIHRoaXMuZG9u
ZSA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBpZiAodG9rZW4pIHJldHVybiB0b2tlbjtl
bHNlIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHRoaXMu
X2lucHV0ID09PSAiIikgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5FT0Y7Cisg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMu
cGFyc2VFcnJvcignTGV4aWNhbCBlcnJvciBvbiBsaW5lICcgKyAodGhpcy55eWxpbmVubyArIDEp
ICsgJy4gVW5yZWNvZ25pemVkIHRleHQuXG4nICsgdGhpcy5zaG93UG9zaXRpb24oKSwgeyB0ZXh0
OiAiIiwgdG9rZW46IG51bGwsIGxpbmU6IHRoaXMueXlsaW5lbm8gfSk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGxleDogZnVuY3Rpb24gbGV4KCkgewor
ICAgICAgICAgICAgICAgIHZhciByID0gdGhpcy5uZXh0KCk7CisgICAgICAgICAgICAgICAgaWYg
KHR5cGVvZiByICE9PSAndW5kZWZpbmVkJykgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
cjsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dGhpcy5sZXgoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgYmVnaW46IGZ1bmN0aW9uIGJlZ2luKGNvbmRpdGlvbikgeworICAgICAgICAgICAgICAgIHRo
aXMuY29uZGl0aW9uU3RhY2sucHVzaChjb25kaXRpb24pOworICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgIHBvcFN0YXRlOiBmdW5jdGlvbiBwb3BTdGF0ZSgpIHsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gdGhpcy5jb25kaXRpb25TdGFjay5wb3AoKTsKKyAgICAgICAgICAgIH0sCisgICAgICAg
ICAgICBfY3VycmVudFJ1bGVzOiBmdW5jdGlvbiBfY3VycmVudFJ1bGVzKCkgeworICAgICAgICAg
ICAgICAgIHJldHVybiB0aGlzLmNvbmRpdGlvbnNbdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNv
bmRpdGlvblN0YWNrLmxlbmd0aCAtIDFdXS5ydWxlczsKKyAgICAgICAgICAgIH0sCisgICAgICAg
ICAgICB0b3BTdGF0ZTogZnVuY3Rpb24gdG9wU3RhdGUoKSB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIHRoaXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGggLSAyXTsK
KyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBwdXNoU3RhdGU6IGZ1bmN0aW9uIGJlZ2luKGNv
bmRpdGlvbikgeworICAgICAgICAgICAgICAgIHRoaXMuYmVnaW4oY29uZGl0aW9uKTsKKyAgICAg
ICAgICAgIH0gfTsKKyAgICAgICAgbGV4ZXIub3B0aW9ucyA9IHt9OworICAgICAgICBsZXhlci5w
ZXJmb3JtQWN0aW9uID0gZnVuY3Rpb24gYW5vbnltb3VzKHl5LCB5eV8sICRhdm9pZGluZ19uYW1l
X2NvbGxpc2lvbnMsIFlZX1NUQVJUCisgICAgICAgIC8qKi8pIHsKKworICAgICAgICAgICAgZnVu
Y3Rpb24gc3RyaXAoc3RhcnQsIGVuZCkgeworICAgICAgICAgICAgICAgIHJldHVybiB5eV8ueXl0
ZXh0ID0geXlfLnl5dGV4dC5zdWJzdHIoc3RhcnQsIHl5Xy55eWxlbmcgLSBlbmQpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB2YXIgWVlTVEFURSA9IFlZX1NUQVJUOworICAgICAgICAg
ICAgc3dpdGNoICgkYXZvaWRpbmdfbmFtZV9jb2xsaXNpb25zKSB7CisgICAgICAgICAgICAgICAg
Y2FzZSAwOgorICAgICAgICAgICAgICAgICAgICBpZiAoeXlfLnl5dGV4dC5zbGljZSgtMikgPT09
ICJcXFxcIikgeworICAgICAgICAgICAgICAgICAgICAgICAgc3RyaXAoMCwgMSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICB0aGlzLmJlZ2luKCJtdSIpOworICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgaWYgKHl5Xy55eXRleHQuc2xpY2UoLTEpID09PSAiXFwiKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBzdHJpcCgwLCAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmVn
aW4oImVtdSIpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
ICAgICAgICAgdGhpcy5iZWdpbigibXUiKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICBpZiAoeXlfLnl5dGV4dCkgcmV0dXJuIDE1OworCisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIDE1OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICBjYXNlIDI6CisgICAgICAgICAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIDE1OworCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5iZWdpbigncmF3
Jyk7cmV0dXJuIDE1OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICBjYXNlIDQ6CisgICAgICAgICAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTsKKyAgICAgICAg
ICAgICAgICAgICAgLy8gU2hvdWxkIGJlIHVzaW5nIGB0aGlzLnRvcFN0YXRlKClgIGJlbG93LCBi
dXQgaXQgY3VycmVudGx5CisgICAgICAgICAgICAgICAgICAgIC8vIHJldHVybnMgdGhlIHNlY29u
ZCB0b3AgaW5zdGVhZCBvZiB0aGUgZmlyc3QgdG9wLiBPcGVuZWQgYW4KKyAgICAgICAgICAgICAg
ICAgICAgLy8gaXNzdWUgYWJvdXQgaXQgYXQgaHR0cHM6Ly9naXRodWIuY29tL3phYWNoL2ppc29u
L2lzc3Vlcy8yOTEKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uU3RhY2tb
dGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGggLSAxXSA9PT0gJ3JhdycpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiAxNTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHl5Xy55eXRleHQgPSB5eV8ueXl0ZXh0LnN1YnN0cig1LCB5
eV8ueXlsZW5nIC0gOSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ0VORF9SQVdf
QkxPQ0snOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgY2FzZSA1OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
MTU7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgNjoK
KyAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpOworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gMTQ7CisKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgY2FzZSA3OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gNjU7CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgODoKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIDY4OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICBjYXNlIDk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOTsKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAxMDoKKyAgICAgICAgICAgICAgICAg
ICAgdGhpcy5wb3BTdGF0ZSgpOworICAgICAgICAgICAgICAgICAgICB0aGlzLmJlZ2luKCdyYXcn
KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDIzOworCisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMTE6CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiA1NTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2Fz
ZSAxMjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDYwOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDEzOgorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gMjk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNh
c2UgMTQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiA0NzsKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAxNToKKyAgICAgICAgICAgICAgICAgICAg
dGhpcy5wb3BTdGF0ZSgpO3JldHVybiA0NDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgY2FzZSAxNjoKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3BTdGF0
ZSgpO3JldHVybiA0NDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgY2FzZSAxNzoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDM0OworICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDE4OgorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gMzk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIGNhc2UgMTk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiA1MTsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAyMDoKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIDQ4OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICBjYXNlIDIxOgorICAgICAgICAgICAgICAgICAgICB0aGlzLnVucHV0KHl5Xy55eXRleHQp
OworICAgICAgICAgICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7CisgICAgICAgICAgICAgICAg
ICAgIHRoaXMuYmVnaW4oJ2NvbScpOworCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIGNhc2UgMjI6CisgICAgICAgICAgICAgICAgICAgIHRoaXMucG9wU3RhdGUo
KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE0OworCisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMjM6CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiA0ODsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2Fz
ZSAyNDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDczOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDI1OgorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gNzI7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNh
c2UgMjY6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiA3MjsKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAyNzoKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIDg3OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBj
YXNlIDI4OgorICAgICAgICAgICAgICAgICAgICAvLyBpZ25vcmUgd2hpdGVzcGFjZQorICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDI5OgorICAgICAgICAg
ICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7cmV0dXJuIDU0OworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDMwOgorICAgICAgICAgICAgICAgICAgICB0
aGlzLnBvcFN0YXRlKCk7cmV0dXJuIDMzOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICBjYXNlIDMxOgorICAgICAgICAgICAgICAgICAgICB5eV8ueXl0ZXh0ID0g
c3RyaXAoMSwgMikucmVwbGFjZSgvXFwiL2csICciJyk7cmV0dXJuIDgwOworICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDMyOgorICAgICAgICAgICAgICAg
ICAgICB5eV8ueXl0ZXh0ID0gc3RyaXAoMSwgMikucmVwbGFjZSgvXFwnL2csICInIik7cmV0dXJu
IDgwOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDMz
OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gODU7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMzQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biA4MjsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAz
NToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDgyOworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDM2OgorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gODM7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2Ug
Mzc6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiA4NDsKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAzODoKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIDgxOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNl
IDM5OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gNzU7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgNDA6CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiA3NzsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2Fz
ZSA0MToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDcyOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDQyOgorICAgICAgICAgICAgICAgICAgICB5
eV8ueXl0ZXh0ID0geXlfLnl5dGV4dC5yZXBsYWNlKC9cXChbXFxcXV0pL2csICckMScpO3JldHVy
biA3MjsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSA0
MzoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdJTlZBTElEJzsKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSA0NDoKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIDU7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor
ICAgICAgICB9OworICAgICAgICBsZXhlci5ydWxlcyA9IFsvXig/OlteXHgwMF0qPyg/PShce1x7
KSkpLywgL14oPzpbXlx4MDBdKykvLCAvXig/OlteXHgwMF17Mix9Pyg/PShce1x7fFxcXHtce3xc
XFxcXHtce3wkKSkpLywgL14oPzpce1x7XHtceyg/PVteXC9dKSkvLCAvXig/Olx7XHtce1x7XC9b
XlxzISIjJS0sXC5cLzstPkBcWy1cXmBcey1+XSsoPz1bPX1cc1wvLl0pXH1cfVx9XH0pLywgL14o
PzpbXlx4MDBdKj8oPz0oXHtce1x7XHspKSkvLCAvXig/Oltcc1xTXSo/LS0ofik/XH1cfSkvLCAv
Xig/OlwoKS8sIC9eKD86XCkpLywgL14oPzpce1x7XHtceykvLCAvXig/Olx9XH1cfVx9KS8sIC9e
KD86XHtceyh+KT8+KS8sIC9eKD86XHtceyh+KT8jPikvLCAvXig/Olx7XHsofik/I1wqPykvLCAv
Xig/Olx7XHsofik/XC8pLywgL14oPzpce1x7KH4pP1xeXHMqKH4pP1x9XH0pLywgL14oPzpce1x7
KH4pP1xzKmVsc2Vccyoofik/XH1cfSkvLCAvXig/Olx7XHsofik/XF4pLywgL14oPzpce1x7KH4p
P1xzKmVsc2VcYikvLCAvXig/Olx7XHsofik/XHspLywgL14oPzpce1x7KH4pPyYpLywgL14oPzpc
e1x7KH4pPyEtLSkvLCAvXig/Olx7XHsofik/IVtcc1xTXSo/XH1cfSkvLCAvXig/Olx7XHsofik/
XCo/KS8sIC9eKD86PSkvLCAvXig/OlwuXC4pLywgL14oPzpcLig/PShbPX59XHNcLy4pfF0pKSkv
LCAvXig/OltcLy5dKS8sIC9eKD86XHMrKS8sIC9eKD86XH0ofik/XH1cfSkvLCAvXig/Oih+KT9c
fVx9KS8sIC9eKD86IihcXFsiXXxbXiJdKSoiKS8sIC9eKD86JyhcXFsnXXxbXiddKSonKS8sIC9e
KD86QCkvLCAvXig/OnRydWUoPz0oW359XHMpXSkpKS8sIC9eKD86ZmFsc2UoPz0oW359XHMpXSkp
KS8sIC9eKD86dW5kZWZpbmVkKD89KFt+fVxzKV0pKSkvLCAvXig/Om51bGwoPz0oW359XHMpXSkp
KS8sIC9eKD86LT9bMC05XSsoPzpcLlswLTldKyk/KD89KFt+fVxzKV0pKSkvLCAvXig/OmFzXHMr
XHwpLywgL14oPzpcfCkvLCAvXig/OihbXlxzISIjJS0sXC5cLzstPkBcWy1cXmBcey1+XSsoPz0o
Wz1+fVxzXC8uKXxdKSkpKS8sIC9eKD86XFsoXFxcXXxbXlxdXSkqXF0pLywgL14oPzouKS8sIC9e
KD86JCkvXTsKKyAgICAgICAgbGV4ZXIuY29uZGl0aW9ucyA9IHsgIm11IjogeyAicnVsZXMiOiBb
NywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDE3LCAxOCwgMTksIDIwLCAyMSwg
MjIsIDIzLCAyNCwgMjUsIDI2LCAyNywgMjgsIDI5LCAzMCwgMzEsIDMyLCAzMywgMzQsIDM1LCAz
NiwgMzcsIDM4LCAzOSwgNDAsIDQxLCA0MiwgNDMsIDQ0XSwgImluY2x1c2l2ZSI6IGZhbHNlIH0s
ICJlbXUiOiB7ICJydWxlcyI6IFsyXSwgImluY2x1c2l2ZSI6IGZhbHNlIH0sICJjb20iOiB7ICJy
dWxlcyI6IFs2XSwgImluY2x1c2l2ZSI6IGZhbHNlIH0sICJyYXciOiB7ICJydWxlcyI6IFszLCA0
LCA1XSwgImluY2x1c2l2ZSI6IGZhbHNlIH0sICJJTklUSUFMIjogeyAicnVsZXMiOiBbMCwgMSwg
NDRdLCAiaW5jbHVzaXZlIjogdHJ1ZSB9IH07CisgICAgICAgIHJldHVybiBsZXhlcjsKKyAgICB9
KSgpOworICAgIHBhcnNlci5sZXhlciA9IGxleGVyOworICAgIGZ1bmN0aW9uIFBhcnNlcigpIHsK
KyAgICAgICAgdGhpcy55eSA9IHt9OworICAgIH1QYXJzZXIucHJvdG90eXBlID0gcGFyc2VyO3Bh
cnNlci5QYXJzZXIgPSBQYXJzZXI7CisgICAgcmV0dXJuIG5ldyBQYXJzZXIoKTsKK30pKCk7ZXhw
b3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKK2V4cG9ydHNbJ2RlZmF1bHQnXSA9IGhhbmRsZWJhcnM7
CisvLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJa
WEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMeTR1THk0dUwyeHBZaTlvWVc1a2JH
VmlZWEp6TDJOdmJYQnBiR1Z5TDNCaGNuTmxjaTVxY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hC
cGJtZHpJam9pT3pzN08wRkJSVUVzU1VGQlNTeFZRVUZWTEVkQlFVY3NRMEZCUXl4WlFVRlZPMEZC
UXpWQ0xGRkJRVWtzVFVGQlRTeEhRVUZITEVWQlFVTXNTMEZCU3l4RlFVRkZMRk5CUVZNc1MwRkJT
eXhIUVVGSExFVkJRVWM3UVVGRGVrTXNWVUZCUlN4RlFVRkZMRVZCUVVVN1FVRkRUaXhuUWtGQlVT
eEZRVUZGTEVWQlFVTXNUMEZCVHl4RlFVRkRMRU5CUVVNc1JVRkJReXhOUVVGTkxFVkJRVU1zUTBG
QlF5eEZRVUZETEZOQlFWTXNSVUZCUXl4RFFVRkRMRVZCUVVNc1MwRkJTeXhGUVVGRExFTkJRVU1z
UlVGQlF5eHhRa0ZCY1VJc1JVRkJReXhEUVVGRExFVkJRVU1zVjBGQlZ5eEZRVUZETEVOQlFVTXNS
VUZCUXl4VlFVRlZMRVZCUVVNc1EwRkJReXhGUVVGRExFOUJRVThzUlVGQlF5eERRVUZETEVWQlFV
TXNWVUZCVlN4RlFVRkRMRVZCUVVVc1JVRkJReXhUUVVGVExFVkJRVU1zUlVGQlJTeEZRVUZETEdO
QlFXTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1UwRkJVeXhGUVVGRExFVkJRVVVzUlVGQlF5eFRRVUZU
TEVWQlFVTXNSVUZCUlN4RlFVRkRMRk5CUVZNc1JVRkJReXhGUVVGRkxFVkJRVU1zWTBGQll5eEZR
VUZETEVWQlFVVXNSVUZCUXl3eVFrRkJNa0lzUlVGQlF5eEZRVUZGTEVWQlFVTXNaVUZCWlN4RlFV
RkRMRVZCUVVVc1JVRkJReXhuUWtGQlowSXNSVUZCUXl4RlFVRkZMRVZCUVVNc1dVRkJXU3hGUVVG
RExFVkJRVVVzUlVGQlF5d3dRa0ZCTUVJc1JVRkJReXhGUVVGRkxFVkJRVU1zYzBKQlFYTkNMRVZC
UVVNc1JVRkJSU3hGUVVGRExHbENRVUZwUWl4RlFVRkRMRVZCUVVVc1JVRkJReXhYUVVGWExFVkJR
VU1zUlVGQlJTeEZRVUZETEdWQlFXVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1dVRkJXU3hGUVVGRExF
VkJRVVVzUlVGQlF5eGhRVUZoTEVWQlFVTXNSVUZCUlN4RlFVRkRMR1ZCUVdVc1JVRkJReXhGUVVG
RkxFVkJRVU1zV1VGQldTeEZRVUZETEVWQlFVVXNSVUZCUXl4MVFrRkJkVUlzUlVGQlF5eEZRVUZG
TEVWQlFVTXNiVUpCUVcxQ0xFVkJRVU1zUlVGQlJTeEZRVUZETEcxQ1FVRnRRaXhGUVVGRExFVkJR
VVVzUlVGQlF5eFBRVUZQTEVWQlFVTXNSVUZCUlN4RlFVRkRMR05CUVdNc1JVRkJReXhGUVVGRkxF
VkJRVU1zZVVKQlFYbENMRVZCUVVNc1JVRkJSU3hGUVVGRExIRkNRVUZ4UWl4RlFVRkRMRVZCUVVV
c1JVRkJReXh4UWtGQmNVSXNSVUZCUXl4RlFVRkZMRVZCUVVNc2EwSkJRV3RDTEVWQlFVTXNSVUZC
UlN4RlFVRkRMRzlDUVVGdlFpeEZRVUZETEVWQlFVVXNSVUZCUXl3NFFrRkJPRUlzUlVGQlF5eEZR
VUZGTEVWQlFVTXNNRUpCUVRCQ0xFVkJRVU1zUlVGQlJTeEZRVUZETERCQ1FVRXdRaXhGUVVGRExF
VkJRVVVzUlVGQlF5eHRRa0ZCYlVJc1JVRkJReXhGUVVGRkxFVkJRVU1zVTBGQlV5eEZRVUZETEVW
QlFVVXNSVUZCUXl4alFVRmpMRVZCUVVNc1JVRkJSU3hGUVVGRExITkNRVUZ6UWl4RlFVRkRMRVZC
UVVVc1JVRkJReXhsUVVGbExFVkJRVU1zUlVGQlJTeEZRVUZETEUxQlFVMHNSVUZCUXl4RlFVRkZM
RVZCUVVNc2MwSkJRWE5DTEVWQlFVTXNSVUZCUlN4RlFVRkRMR3RDUVVGclFpeEZRVUZETEVWQlFV
VXNSVUZCUXl4blFrRkJaMElzUlVGQlF5eEZRVUZGTEVWQlFVTXNjMEpCUVhOQ0xFVkJRVU1zUlVG
QlJTeEZRVUZETEd0Q1FVRnJRaXhGUVVGRExFVkJRVVVzUlVGQlF5eHBRa0ZCYVVJc1JVRkJReXhG
UVVGRkxFVkJRVU1zWTBGQll5eEZRVUZETEVWQlFVVXNSVUZCUXl4aFFVRmhMRVZCUVVNc1JVRkJS
U3hGUVVGRExIRkNRVUZ4UWl4RlFVRkRMRVZCUVVVc1JVRkJReXhwUWtGQmFVSXNSVUZCUXl4RlFV
RkZMRVZCUVVNc2EwSkJRV3RDTEVWQlFVTXNSVUZCUlN4RlFVRkRMRzlDUVVGdlFpeEZRVUZETEVW
QlFVVXNSVUZCUXl3NFFrRkJPRUlzUlVGQlF5eEZRVUZGTEVWQlFVTXNNRUpCUVRCQ0xFVkJRVU1z
UlVGQlJTeEZRVUZETEU5QlFVOHNSVUZCUXl4RlFVRkZMRVZCUVVNc1QwRkJUeXhGUVVGRExFVkJR
VVVzUlVGQlF5eFpRVUZaTEVWQlFVTXNSVUZCUlN4RlFVRkRMRzFDUVVGdFFpeEZRVUZETEVWQlFV
VXNSVUZCUXl4bFFVRmxMRVZCUVVNc1JVRkJSU3hGUVVGRExHRkJRV0VzUlVGQlF5eEZRVUZGTEVW
QlFVTXNUVUZCVFN4RlFVRkRMRVZCUVVVc1JVRkJReXgxUWtGQmRVSXNSVUZCUXl4RlFVRkZMRVZC
UVVNc1lVRkJZU3hGUVVGRExFVkJRVVVzUlVGQlF5eEpRVUZKTEVWQlFVTXNSVUZCUlN4RlFVRkRM
RkZCUVZFc1JVRkJReXhGUVVGRkxFVkJRVU1zWVVGQllTeEZRVUZETEVWQlFVVXNSVUZCUXl4dFFr
RkJiVUlzUlVGQlF5eEZRVUZGTEVWQlFVTXNPRUpCUVRoQ0xFVkJRVU1zUlVGQlJTeEZRVUZETEc5
Q1FVRnZRaXhGUVVGRExFVkJRVVVzUlVGQlF5eE5RVUZOTEVWQlFVTXNSVUZCUlN4RlFVRkRMRlZC
UVZVc1JVRkJReXhGUVVGRkxFVkJRVU1zVVVGQlVTeEZRVUZETEVWQlFVVXNSVUZCUXl4UlFVRlJM
RVZCUVVNc1JVRkJSU3hGUVVGRExGTkJRVk1zUlVGQlF5eEZRVUZGTEVWQlFVTXNWMEZCVnl4RlFV
RkRMRVZCUVVVc1JVRkJReXhOUVVGTkxFVkJRVU1zUlVGQlJTeEZRVUZETEUxQlFVMHNSVUZCUXl4
RlFVRkZMRVZCUVVNc1kwRkJZeXhGUVVGRExFVkJRVVVzUlVGQlF5eExRVUZMTEVWQlFVTXNSVUZC
UlN4RlFVRkRMRk5CUVZNc1JVRkJReXhEUVVGRExFVkJRVU1zVFVGQlRTeEZRVUZETEVOQlFVTXNS
VUZCUXp0QlFVTnFia1FzYTBKQlFWVXNSVUZCUlN4RlFVRkRMRU5CUVVNc1JVRkJReXhQUVVGUExF
VkJRVU1zUTBGQlF5eEZRVUZETEV0QlFVc3NSVUZCUXl4RlFVRkZMRVZCUVVNc1UwRkJVeXhGUVVG
RExFVkJRVVVzUlVGQlF5eFRRVUZUTEVWQlFVTXNSVUZCUlN4RlFVRkRMR1ZCUVdVc1JVRkJReXhG
UVVGRkxFVkJRVU1zWjBKQlFXZENMRVZCUVVNc1JVRkJSU3hGUVVGRExHbENRVUZwUWl4RlFVRkRM
RVZCUVVVc1JVRkJReXhaUVVGWkxFVkJRVU1zUlVGQlJTeEZRVUZETEU5QlFVOHNSVUZCUXl4RlFV
RkZMRVZCUVVNc1kwRkJZeXhGUVVGRExFVkJRVVVzUlVGQlF5eHZRa0ZCYjBJc1JVRkJReXhGUVVG
RkxFVkJRVU1zVTBGQlV5eEZRVUZETEVWQlFVVXNSVUZCUXl4bFFVRmxMRVZCUVVNc1JVRkJSU3hG
UVVGRExFMUJRVTBzUlVGQlF5eEZRVUZGTEVWQlFVTXNaMEpCUVdkQ0xFVkJRVU1zUlVGQlJTeEZR
VUZETEdsQ1FVRnBRaXhGUVVGRExFVkJRVVVzUlVGQlF5eGpRVUZqTEVWQlFVTXNSVUZCUlN4RlFV
RkRMRzlDUVVGdlFpeEZRVUZETEVWQlFVVXNSVUZCUXl4WlFVRlpMRVZCUVVNc1JVRkJSU3hGUVVG
RExHRkJRV0VzUlVGQlF5eEZRVUZGTEVWQlFVTXNTVUZCU1N4RlFVRkRMRVZCUVVVc1JVRkJReXhS
UVVGUkxFVkJRVU1zUlVGQlJTeEZRVUZETEcxQ1FVRnRRaXhGUVVGRExFVkJRVVVzUlVGQlF5eHZR
a0ZCYjBJc1JVRkJReXhGUVVGRkxFVkJRVU1zVVVGQlVTeEZRVUZETEVWQlFVVXNSVUZCUXl4UlFV
RlJMRVZCUVVNc1JVRkJSU3hGUVVGRExGTkJRVk1zUlVGQlF5eEZRVUZGTEVWQlFVTXNWMEZCVnl4
RlFVRkRMRVZCUVVVc1JVRkJReXhOUVVGTkxFVkJRVU1zUlVGQlJTeEZRVUZETEUxQlFVMHNSVUZC
UXl4RlFVRkZMRVZCUVVNc1MwRkJTeXhGUVVGRE8wRkJRelZsTEc5Q1FVRlpMRVZCUVVVc1EwRkJR
eXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1Ew
RkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVN
c1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZC
UVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRM
RVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFV
RkRMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4
RFFVRkRMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVTXNRMEZC
UXl4RFFVRkRMRVZCUVVNc1EwRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNR
MEZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFV
TXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVW
QlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eEZRVUZG
TEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERR
VUZETEVWQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5
eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhGUVVGRkxFVkJRVU1zUTBG
QlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1z
UTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJR
VU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExF
VkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhGUVVG
RkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhE
UVVGRExFVkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJR
eXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVNc1Ew
RkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVN
c1EwRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RlFVRkZMRVZC
UVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRM
RVZCUVVNc1EwRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RlFV
RkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4
RFFVRkRMRVZCUVVNc1EwRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZC
UXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVTXNR
MEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFV
TXNRMEZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eEZRVUZGTEVW
QlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZE
TEVWQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERR
VUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5
eERRVUZETEVWQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBG
QlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhGUVVGRkxFVkJRVU1z
UTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJR
VU1zUTBGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhGUVVGRkxF
VkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVG
RExFVkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhG
UVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVNc1EwRkJR
eXhEUVVGRExFVkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1Ew
RkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVN
c1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZC
UVVNc1EwRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RlFVRkZM
RVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFV
RkRMRVZCUVVNc1EwRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4
RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVTXNRMEZC
UXl4RFFVRkRMRVZCUVVNc1EwRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNR
MEZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFV
TXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVW
QlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eEZRVUZG
TEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERR
VUZETEVWQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5
eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhGUVVGRkxFVkJRVU1zUTBG
QlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1z
UTBGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhGUVVGRkxFVkJR
VU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExF
VkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhGUVVG
RkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhE
UVVGRExFVkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJR
eXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVNc1Ew
RkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVN
c1EwRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RlFVRkZMRVZC
UVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRM
RVZCUVVNc1EwRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RlFV
RkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4
RFFVRkRMRVZCUVVNc1EwRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZC
UXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVTXNR
MEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFV
TXNRMEZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eEZRVUZGTEVW
QlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZE
TEVOQlFVTTdRVUZEY25OQ0xIRkNRVUZoTEVWQlFVVXNVMEZCVXl4VFFVRlRMRU5CUVVNc1RVRkJU
U3hGUVVGRExFMUJRVTBzUlVGQlF5eFJRVUZSTEVWQlFVTXNSVUZCUlN4RlFVRkRMRTlCUVU4c1JV
RkJReXhGUVVGRkxFVkJRVU1zUlVGQlJUdGpRVU51UlRzN1FVRkZUaXhuUWtGQlNTeEZRVUZGTEVk
QlFVY3NSVUZCUlN4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU03UVVGRGRrSXNiMEpC
UVZFc1QwRkJUenRCUVVObUxIRkNRVUZMTEVOQlFVTTdRVUZCUlN3eVFrRkJUeXhGUVVGRkxFTkJR
VU1zUlVGQlJTeEhRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUTNoQ0xEQkNRVUZOTzBGQlFV
RXNRVUZEVGl4eFFrRkJTeXhEUVVGRE8wRkJRVU1zZDBKQlFVa3NRMEZCUXl4RFFVRkRMRWRCUVVj
c1JVRkJSU3hEUVVGRExHTkJRV01zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5C
UVVNc1EwRkJRenRCUVVNeFF5d3dRa0ZCVFR0QlFVRkJMRUZCUTA0c2NVSkJRVXNzUTBGQlF6dEJR
VUZETEhkQ1FVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFV
TXNRMEZCUXp0QlFVTjJRaXd3UWtGQlRUdEJRVUZCTEVGQlEwNHNjVUpCUVVzc1EwRkJRenRCUVVG
RExIZENRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1z
UTBGQlF6dEJRVU4yUWl3d1FrRkJUVHRCUVVGQkxFRkJRMDRzY1VKQlFVc3NRMEZCUXp0QlFVRkRM
SGRDUVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1Ew
RkJRenRCUVVOMlFpd3dRa0ZCVFR0QlFVRkJMRUZCUTA0c2NVSkJRVXNzUTBGQlF6dEJRVUZETEhk
Q1FVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZC
UXp0QlFVTjJRaXd3UWtGQlRUdEJRVUZCTEVGQlEwNHNjVUpCUVVzc1EwRkJRenRCUVVGRExIZENR
VUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF6
dEJRVU4yUWl3d1FrRkJUVHRCUVVGQkxFRkJRMDRzY1VKQlFVc3NRMEZCUXp0QlFVRkRMSGRDUVVG
SkxFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJRenRC
UVVOMlFpd3dRa0ZCVFR0QlFVRkJMRUZCUTA0c2NVSkJRVXNzUTBGQlF6dEJRVU5HTEhkQ1FVRkpM
RU5CUVVNc1EwRkJReXhIUVVGSE8wRkJRMUFzTkVKQlFVa3NSVUZCUlN4clFrRkJhMEk3UVVGRGVF
SXNOa0pCUVVzc1JVRkJSU3hGUVVGRkxFTkJRVU1zV1VGQldTeERRVUZETEVWQlFVVXNRMEZCUXl4
RlFVRkZMRU5CUVVNc1EwRkJRenRCUVVNNVFpdzJRa0ZCU3l4RlFVRkZMRVZCUVVVc1EwRkJReXhW
UVVGVkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJR
eXhGUVVGRkxFTkJRVU1zUTBGQlF6dEJRVU53UXl3eVFrRkJSeXhGUVVGRkxFVkJRVVVzUTBGQlF5
eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJRenR4UWtGRGVrSXNRMEZCUXpz
N1FVRkZUaXd3UWtGQlRUdEJRVUZCTEVGQlEwNHNjVUpCUVVzc1JVRkJSVHRCUVVOSUxIZENRVUZK
TEVOQlFVTXNRMEZCUXl4SFFVRkhPMEZCUTFBc05FSkJRVWtzUlVGQlJTeHJRa0ZCYTBJN1FVRkRl
RUlzWjBOQlFWRXNSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRE8wRkJRMmhDTERaQ1FV
RkxMRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF6dEJRVU5pTERKQ1FVRkhMRVZCUVVV
c1JVRkJSU3hEUVVGRExFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRPM0ZD
UVVONlFpeERRVUZET3p0QlFVVk9MREJDUVVGTk8wRkJRVUVzUVVGRFRpeHhRa0ZCU3l4RlFVRkZP
MEZCUVVNc2QwSkJRVWtzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRMR1ZCUVdVc1Ew
RkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeEhRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVV
c1EwRkJReXhGUVVGRkxFZEJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZC
UVVVc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXp0QlFVTjZS
U3d3UWtGQlRUdEJRVUZCTEVGQlEwNHNjVUpCUVVzc1JVRkJSVHRCUVVGRExIZENRVUZKTEVOQlFV
TXNRMEZCUXl4SFFVRkhMRVZCUVVVc1NVRkJTU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVk
QlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1RVRkJUU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZG
TEVkQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEZR
VUZGTEVkQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJRenRCUVVOMFJTd3dRa0ZCVFR0QlFV
RkJMRUZCUTA0c2NVSkJRVXNzUlVGQlJUdEJRVUZETEhkQ1FVRkpMRU5CUVVNc1EwRkJReXhIUVVG
SExFVkJRVVVzUTBGQlF5eFpRVUZaTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1IwRkJReXhE
UVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlN4SFFVRkRMRU5CUVVNc1EwRkJR
eXhGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVkQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1JV
RkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEV0QlFVc3NSVUZCUlN4SlFVRkpMRU5CUVVN
c1JVRkJSU3hEUVVGRExFTkJRVU03UVVGRGRrWXNNRUpCUVUwN1FVRkJRU3hCUVVOT0xIRkNRVUZM
TEVWQlFVVTdRVUZCUXl4M1FrRkJTU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTXNX
VUZCV1N4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFZEJRVU1zUTBGQlF5eERRVUZETEVWQlFV
VXNSVUZCUlN4RFFVRkRMRVZCUVVVc1IwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVO
QlFVTXNSVUZCUlN4SFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZG
TEVOQlFVTXNSVUZCUlN4SlFVRkpMRVZCUVVVc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF5eERR
VUZETzBGQlEzUkdMREJDUVVGTk8wRkJRVUVzUVVGRFRpeHhRa0ZCU3l4RlFVRkZPMEZCUVVNc2Qw
SkJRVWtzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4SlFVRkpMRVZCUVVVc1JVRkJSU3hEUVVG
RExFVkJRVVVzUjBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRVZCUVVVc1JVRkJSU3hE
UVVGRExFVkJRVVVzUjBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4TlFVRk5MRVZCUVVVc1JVRkJS
U3hEUVVGRExFVkJRVVVzUjBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRVZCUVVVc1JV
RkJSU3hEUVVGRExFVkJRVVVzUjBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4WFFVRlhMRVZCUVVV
c1JVRkJSU3hEUVVGRExFVkJRVVVzUjBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4TFFVRkxMRVZC
UVVVc1JVRkJSU3hEUVVGRExGVkJRVlVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4SFFVRkRM
RU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RlFV
RkZMRU5CUVVNN1FVRkRja29zTUVKQlFVMDdRVUZCUVN4QlFVTk9MSEZDUVVGTExFVkJRVVU3UVVG
QlF5eDNRa0ZCU1N4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFbEJRVWtzUlVGQlJTeEZRVUZG
TEVOQlFVTXNSVUZCUlN4SFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFMUJRVTBzUlVGQlJTeEZR
VUZGTEVOQlFVTXNSVUZCUlN4SFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFbEJRVWtzUlVGQlJT
eEZRVUZGTEVOQlFVTXNSVUZCUlN4SFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxGZEJRVmNzUlVG
QlJTeEZRVUZGTEVOQlFVTXNSVUZCUlN4SFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFdEJRVXNz
UlVGQlJTeEZRVUZGTEVOQlFVTXNWVUZCVlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFZEJR
VU1zUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExF
VkJRVVVzUTBGQlF6dEJRVU55U1N3d1FrRkJUVHRCUVVGQkxFRkJRMDRzY1VKQlFVc3NSVUZCUlR0
QlFVRkRMSGRDUVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNTVUZCU1N4RlFVRkZMRVZC
UVVVc1EwRkJReXhGUVVGRkxFZEJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNUVUZCVFN4RlFVRkZM
RVZCUVVVc1EwRkJReXhGUVVGRkxFZEJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNTVUZCU1N4RlFV
RkZMRVZCUVVVc1EwRkJReXhGUVVGRkxFZEJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNWMEZCVnl4
RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRkxFZEJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNTMEZC
U3l4RlFVRkZMRVZCUVVVc1EwRkJReXhWUVVGVkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNS
MEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFV
TXNSVUZCUlN4RFFVRkRPMEZCUTNKSkxEQkNRVUZOTzBGQlFVRXNRVUZEVGl4eFFrRkJTeXhGUVVG
Rk8wRkJRVU1zZDBKQlFVa3NRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hMUVVGTExFVkJRVVVz
UlVGQlJTeERRVUZETEZWQlFWVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hIUVVGRExFTkJR
VU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZMRWRCUVVNc1EwRkJReXhEUVVGRExF
TkJRVU1zUlVGQlJTeFBRVUZQTEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVG
RkxFTkJRVU03UVVGREwwVXNNRUpCUVUwN1FVRkJRU3hCUVVOT0xIRkNRVUZMTEVWQlFVVTdRVUZE
U0N4M1FrRkJTU3hQUVVGUExFZEJRVWNzUlVGQlJTeERRVUZETEZsQlFWa3NRMEZCUXl4RlFVRkZM
RU5CUVVNc1JVRkJSU3hIUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFV
RkZMRWRCUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4
RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeExRVUZMTEVWQlFVVXNTVUZC
U1N4RFFVRkRMRVZCUVVVc1EwRkJRenQzUWtGRE4wVXNUMEZCVHl4SFFVRkhMRVZCUVVVc1EwRkJR
eXhqUVVGakxFTkJRVU1zUTBGQlF5eFBRVUZQTEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1JV
RkJSU3hIUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMEZCUTNw
RUxESkNRVUZQTEVOQlFVTXNUMEZCVHl4SFFVRkhMRWxCUVVrc1EwRkJRenM3UVVGRmRrSXNkMEpC
UVVrc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeExRVUZMTEVWQlFVVXNSVUZCUlN4RFFVRkRM
RVZCUVVVc1IwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eExRVUZMTEVWQlFVVXNUMEZCVHl4RlFV
RkZMRTlCUVU4c1JVRkJSU3hMUVVGTExFVkJRVVVzU1VGQlNTeEZRVUZGTEVOQlFVTTdPMEZCUlhS
RkxEQkNRVUZOTzBGQlFVRXNRVUZEVGl4eFFrRkJTeXhGUVVGRk8wRkJRVU1zZDBKQlFVa3NRMEZC
UXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETzBGQlEzaENM
REJDUVVGTk8wRkJRVUVzUVVGRFRpeHhRa0ZCU3l4RlFVRkZPMEZCUVVNc2QwSkJRVWtzUTBGQlF5
eERRVUZETEVkQlFVY3NSVUZCUXl4SlFVRkpMRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVVzUjBG
QlF5eERRVUZETEVOQlFVTXNSVUZCUlN4TFFVRkxMRVZCUVVVc1JVRkJSU3hEUVVGRExGVkJRVlVz
UTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4SFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJR
VVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNN1FVRkRNVVVzTUVKQlFV
MDdRVUZCUVN4QlFVTk9MSEZDUVVGTExFVkJRVVU3UVVGQlF5eDNRa0ZCU1N4RFFVRkRMRU5CUVVN
c1IwRkJSeXhGUVVGRkxFTkJRVU1zWlVGQlpTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRWRC
UVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVXNSMEZCUXl4RFFVRkRM
RU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJTeEhRVUZETEVOQlFVTXNRMEZCUXl4RlFV
RkZMRVZCUVVVc1EwRkJReXhGUVVGRkxFZEJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlN4
RFFVRkRMRlZCUVZVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeEhRVUZETEVOQlFVTXNRMEZC
UXl4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVsQlFVa3NR
MEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJRenRCUVVOMFNDd3dRa0ZCVFR0QlFVRkJMRUZCUTA0c2NV
SkJRVXNzUlVGQlJUdEJRVUZETEhkQ1FVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUTBG
QlF5eGxRVUZsTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1IwRkJReXhEUVVGRExFTkJRVU1z
UlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlN4SFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJR
VVVzUTBGQlF5eEZRVUZGTEVkQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExF
VkJRVVVzUjBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1ZVRkJWU3hEUVVG
RExFVkJRVVVzUTBGQlF5eEZRVUZGTEVkQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSU3hE
UVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJR
eXhEUVVGRE8wRkJRM1JJTERCQ1FVRk5PMEZCUVVFc1FVRkRUaXh4UWtGQlN5eEZRVUZGTzBGQlEw
Z3NkMEpCUVVrc1EwRkJReXhEUVVGRExFZEJRVWM3UVVGRFVDdzBRa0ZCU1N4RlFVRkZMR3RDUVVG
clFqdEJRVU40UWl3MFFrRkJTU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVkQlFVTXNRMEZC
UXl4RFFVRkRPMEZCUTJRc09FSkJRVTBzUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlN4SFFVRkRM
RU5CUVVNc1EwRkJRenRCUVVOb1FpdzBRa0ZCU1N4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRkxF
ZEJRVU1zUTBGQlF5eERRVUZETzBGQlEyUXNPRUpCUVUwc1JVRkJSU3hGUVVGRk8wRkJRMVlzTmtK
QlFVc3NSVUZCUlN4RlFVRkZMRU5CUVVNc1ZVRkJWU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZG
TEVkQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eERR
VUZETzBGQlEzUkRMREpDUVVGSExFVkJRVVVzUlVGQlJTeERRVUZETEU5QlFVOHNRMEZCUXl4SlFV
RkpMRU5CUVVNc1JVRkJSU3hEUVVGRE8zRkNRVU42UWl4RFFVRkRPenRCUVVWT0xEQkNRVUZOTzBG
QlFVRXNRVUZEVGl4eFFrRkJTeXhGUVVGRk8wRkJRVU1zZDBKQlFVa3NRMEZCUXl4RFFVRkRMRWRC
UVVjc1JVRkJSU3hEUVVGRExHMUNRVUZ0UWl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFZEJR
VU1zUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVc1IwRkJReXhEUVVGRExF
TkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVG
RExFVkJRVVVzUTBGQlF5eERRVUZETzBGQlF6ZEZMREJDUVVGTk8wRkJRVUVzUVVGRFRpeHhRa0ZC
U3l4RlFVRkZPMEZCUVVNc2QwSkJRVWtzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4SlFVRkpM
RVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVVzUjBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4TlFV
Rk5MRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVVzUjBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4
SlFVRkpMRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVVzUjBGQlF5eERRVUZETEVOQlFVTXNSVUZC
UlN4TFFVRkxMRVZCUVVVc1JVRkJSU3hEUVVGRExGVkJRVlVzUTBGQlF5eEZRVUZGTEVOQlFVTXNS
VUZCUlN4SFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFV
TXNRMEZCUXl4RlFVRkZMRU5CUVVNN1FVRkRPVWNzTUVKQlFVMDdRVUZCUVN4QlFVTk9MSEZDUVVG
TExFVkJRVVU3UVVGQlF5eDNRa0ZCU1N4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1z
UlVGQlJTeERRVUZETEVOQlFVTTdRVUZEZUVJc01FSkJRVTA3UVVGQlFTeEJRVU5PTEhGQ1FVRkxM
RVZCUVVVN1FVRkJReXgzUWtGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1JV
RkJSU3hEUVVGRExFTkJRVU03UVVGRGVFSXNNRUpCUVUwN1FVRkJRU3hCUVVOT0xIRkNRVUZMTEVW
QlFVVTdRVUZEU0N4M1FrRkJTU3hEUVVGRExFTkJRVU1zUjBGQlJ6dEJRVU5RTERSQ1FVRkpMRVZC
UVVVc1pVRkJaVHRCUVVOeVFpdzBRa0ZCU1N4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRkxFZEJR
VU1zUTBGQlF5eERRVUZETzBGQlEyUXNPRUpCUVUwc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJT
eEhRVUZETEVOQlFVTXNRMEZCUXp0QlFVTm9RaXcwUWtGQlNTeEZRVUZGTEVWQlFVVXNRMEZCUXl4
RlFVRkZMRWRCUVVNc1EwRkJReXhEUVVGRE8wRkJRMlFzTWtKQlFVY3NSVUZCUlN4RlFVRkZMRU5C
UVVNc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTEVOQlFVTTdjVUpCUTNwQ0xFTkJR
VU03TzBGQlJVNHNNRUpCUVUwN1FVRkJRU3hCUVVOT0xIRkNRVUZMTEVWQlFVVTdRVUZCUXl4M1Fr
RkJTU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZETEVsQlFVa3NSVUZCUlN4TlFVRk5MRVZCUVVV
c1MwRkJTeXhGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4SFFVRkhMRVZC
UVVVc1JVRkJSU3hEUVVGRExFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRM
RVZCUVVNc1EwRkJRenRCUVVONlJTd3dRa0ZCVFR0QlFVRkJMRUZCUTA0c2NVSkJRVXNzUlVGQlJU
dEJRVUZETEhkQ1FVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVU1zU1VGQlNTeEZRVUZGTEZW
QlFWVXNSVUZCUlN4SFFVRkhMRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZG
TEVOQlFVTXNSVUZCUlN4SFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUzBGQlN5eEZR
VUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hIUVVGSExFVkJRVVVzUlVGQlJT
eERRVUZETEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUTBG
QlF6dEJRVU51Unl3d1FrRkJUVHRCUVVGQkxFRkJRMDRzY1VKQlFVc3NSVUZCUlR0QlFVRkRMSGRD
UVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJS
U3hEUVVGRExFVkJRVVVzUjBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUTJwRExE
QkNRVUZOTzBGQlFVRXNRVUZEVGl4eFFrRkJTeXhGUVVGRk8wRkJRVU1zZDBKQlFVa3NRMEZCUXl4
RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETzBGQlEzaENMREJD
UVVGTk8wRkJRVUVzUVVGRFRpeHhRa0ZCU3l4RlFVRkZPMEZCUVVNc2QwSkJRVWtzUTBGQlF5eERR
VUZETEVkQlFVY3NSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRE8wRkJRM2hDTERCQ1FV
Rk5PMEZCUVVFc1FVRkRUaXh4UWtGQlN5eEZRVUZGTzBGQlFVTXNkMEpCUVVrc1EwRkJReXhEUVVG
RExFZEJRVWNzUlVGQlF5eEpRVUZKTEVWQlFVVXNaVUZCWlN4RlFVRkZMRXRCUVVzc1JVRkJSU3hG
UVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNVVUZCVVN4RlFVRkZMRVZCUVVVc1EwRkJR
eXhGUVVGRkxFTkJRVU1zUlVGQlJTeEhRVUZITEVWQlFVVXNSVUZCUlN4RFFVRkRMRTlCUVU4c1Ew
RkJReXhKUVVGSkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNRMEZCUXp0QlFVTndSeXd3UWtG
QlRUdEJRVUZCTEVGQlEwNHNjVUpCUVVzc1JVRkJSVHRCUVVGRExIZENRVUZKTEVOQlFVTXNRMEZC
UXl4SFFVRkhMRVZCUVVNc1NVRkJTU3hGUVVGRkxHVkJRV1VzUlVGQlJTeExRVUZMTEVWQlFVVXNU
VUZCVFN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEZGQlFW
RXNSVUZCUlN4TlFVRk5MRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVW
QlFVVXNSMEZCUnl4RlFVRkZMRVZCUVVVc1EwRkJReXhQUVVGUExFTkJRVU1zU1VGQlNTeERRVUZE
TEVWQlFVVXNRMEZCUXl4RlFVRkRMRU5CUVVNN1FVRkRjRWdzTUVKQlFVMDdRVUZCUVN4QlFVTk9M
SEZDUVVGTExFVkJRVVU3UVVGQlF5eDNRa0ZCU1N4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRExF
bEJRVWtzUlVGQlJTeG5Ra0ZCWjBJc1JVRkJSU3hMUVVGTExFVkJRVVVzUlVGQlJTeERRVUZETEVW
QlFVVXNRMEZCUXl4TFFVRkxMRTFCUVUwc1JVRkJSU3hSUVVGUkxFVkJRVVVzUlVGQlJTeERRVUZE
TEVWQlFVVXNRMEZCUXl4TFFVRkxMRTFCUVUwc1JVRkJSU3hIUVVGSExFVkJRVVVzUlVGQlJTeERR
VUZETEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUTBGQlF6
dEJRVU16U0N3d1FrRkJUVHRCUVVGQkxFRkJRMDRzY1VKQlFVc3NSVUZCUlR0QlFVRkRMSGRDUVVG
SkxFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVTXNTVUZCU1N4RlFVRkZMR3RDUVVGclFpeEZRVUZG
TEZGQlFWRXNSVUZCUlN4VFFVRlRMRVZCUVVVc1MwRkJTeXhGUVVGRkxGTkJRVk1zUlVGQlJTeEhR
VUZITEVWQlFVVXNSVUZCUlN4RFFVRkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJT
eERRVUZETEVWQlFVTXNRMEZCUXp0QlFVTTNSeXd3UWtGQlRUdEJRVUZCTEVGQlEwNHNjVUpCUVVz
c1JVRkJSVHRCUVVGRExIZENRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVNc1NVRkJTU3hG
UVVGRkxHRkJRV0VzUlVGQlJTeFJRVUZSTEVWQlFVVXNTVUZCU1N4RlFVRkZMRXRCUVVzc1JVRkJS
U3hKUVVGSkxFVkJRVVVzUjBGQlJ5eEZRVUZGTEVWQlFVVXNRMEZCUXl4UFFVRlBMRU5CUVVNc1NV
RkJTU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVOQlFVTTdRVUZET1VZc01FSkJRVTA3UVVG
QlFTeEJRVU5PTEhGQ1FVRkxMRVZCUVVVN1FVRkJReXgzUWtGQlNTeERRVUZETEVOQlFVTXNSMEZC
Unl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU03UVVGRGVFSXNNRUpCUVUwN1FVRkJR
U3hCUVVOT0xIRkNRVUZMTEVWQlFVVTdRVUZCUXl4M1FrRkJTU3hEUVVGRExFTkJRVU1zUjBGQlJ5
eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNN1FVRkRlRUlzTUVKQlFVMDdRVUZCUVN4
QlFVTk9MSEZDUVVGTExFVkJRVVU3UVVGQlF5eDNRa0ZCU1N4RFFVRkRMRU5CUVVNc1IwRkJSeXhG
UVVGRkxFTkJRVU1zVjBGQlZ5eERRVUZETEVsQlFVa3NSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJS
U3hEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRPMEZCUTNaRUxE
QkNRVUZOTzBGQlFVRXNRVUZEVGl4eFFrRkJTeXhGUVVGRk8wRkJRVU1zZDBKQlFVa3NRMEZCUXl4
RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRExGZEJRVmNzUTBGQlF5eExRVUZMTEVWQlFVVXNSVUZC
UlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eEZRVUZGTEVOQlFVTXNR
MEZCUXp0QlFVTjRSQ3d3UWtGQlRUdEJRVUZCTEVGQlEwNHNjVUpCUVVzc1JVRkJSVHRCUVVGRkxI
TkNRVUZGTEVOQlFVTXNSVUZCUlN4SFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBG
QlF5eEZRVUZETEVsQlFVa3NSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVz
UTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RlFVRkZMRkZCUVZFc1JVRkJSU3hGUVVGRkxFTkJR
VU1zUlVGQlJTeERRVUZETEVWQlFVVXNVMEZCVXl4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRkxF
ZEJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRUZCUVVNc1NVRkJTU3hEUVVG
RExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTXNSVUZCUlN4SFFVRkRMRU5CUVVNc1EwRkJReXhE
UVVGRE8wRkJRM2hITERCQ1FVRk5PMEZCUVVFc1FVRkRUaXh4UWtGQlN5eEZRVUZGTzBGQlFVTXNk
MEpCUVVrc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZETEVsQlFVa3NSVUZCUlN4RlFV
RkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4
RlFVRkZMRkZCUVZFc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNRMEZC
UXl4RFFVRkRPMEZCUXpORUxEQkNRVUZOTzBGQlFVRXNRVUZEVGl4eFFrRkJTeXhGUVVGRk8wRkJR
VU1zZDBKQlFVa3NRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRE8wRkJRM0JDTERCQ1FV
Rk5PMEZCUVVFc1FVRkRUaXh4UWtGQlN5eEZRVUZGTzBGQlFVTXNjMEpCUVVVc1EwRkJReXhGUVVG
RkxFZEJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhG
UVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzBGQlF6bENMREJDUVVGTk8wRkJRVUVzUVVGRFRpeHhR
a0ZCU3l4RlFVRkZPMEZCUVVNc2QwSkJRVWtzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RlFV
RkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU14UWl3d1FrRkJUVHRCUVVG
QkxFRkJRMDRzY1VKQlFVc3NSVUZCUlR0QlFVRkRMSE5DUVVGRkxFTkJRVU1zUlVGQlJTeEhRVUZE
TEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERR
VUZETEVOQlFVTXNRMEZCUXp0QlFVTTVRaXd3UWtGQlRUdEJRVUZCTEVGQlEwNHNjVUpCUVVzc1JV
RkJSVHRCUVVGRExIZENRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJRenRCUVVO
d1Fpd3dRa0ZCVFR0QlFVRkJMRUZCUTA0c2NVSkJRVXNzUlVGQlJUdEJRVUZETEhOQ1FVRkZMRU5C
UVVNc1JVRkJSU3hIUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZM
RU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU01UWl3d1FrRkJUVHRCUVVGQkxF
RkJRMDRzY1VKQlFVc3NSVUZCUlR0QlFVRkRMSGRDUVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZITEVW
QlFVVXNRMEZCUXp0QlFVTndRaXd3UWtGQlRUdEJRVUZCTEVGQlEwNHNjVUpCUVVzc1JVRkJSVHRC
UVVGRExITkNRVUZGTEVOQlFVTXNSVUZCUlN4SFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJR
VWtzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVNNVFp
d3dRa0ZCVFR0QlFVRkJMRUZCUTA0c2NVSkJRVXNzUlVGQlJUdEJRVUZETEhkQ1FVRkpMRU5CUVVN
c1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF6dEJRVU53UWl3d1FrRkJUVHRCUVVGQkxFRkJRMDRz
Y1VKQlFVc3NSVUZCUlR0QlFVRkRMSE5DUVVGRkxFTkJRVU1zUlVGQlJTeEhRVUZETEVOQlFVTXNR
MEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFV
TXNRMEZCUXp0QlFVTTVRaXd3UWtGQlRUdEJRVUZCTEVGQlEwNHNjVUpCUVVzc1JVRkJSVHRCUVVG
RExIZENRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJRenRCUVVOd1Fpd3dRa0ZC
VFR0QlFVRkJMRUZCUTA0c2NVSkJRVXNzUlVGQlJUdEJRVUZETEhOQ1FVRkZMRU5CUVVNc1JVRkJS
U3hIUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1JV
RkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU01UWl3d1FrRkJUVHRCUVVGQkxFRkJRMDRzY1VK
QlFVc3NSVUZCUlR0QlFVRkRMSGRDUVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZC
UXp0QlFVTndRaXd3UWtGQlRUdEJRVUZCTEVGQlEwNHNjVUpCUVVzc1JVRkJSVHRCUVVGRExITkNR
VUZGTEVOQlFVTXNSVUZCUlN4SFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5
eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVNNVFpd3dRa0ZCVFR0
QlFVRkJMRUZCUTA0c2NVSkJRVXNzUlVGQlJUdEJRVUZETEhkQ1FVRkpMRU5CUVVNc1EwRkJReXhI
UVVGSExFVkJRVVVzUTBGQlF6dEJRVU53UWl3d1FrRkJUVHRCUVVGQkxFRkJRMDRzY1VKQlFVc3NS
VUZCUlR0QlFVRkRMSE5DUVVGRkxFTkJRVU1zUlVGQlJTeEhRVUZETEVOQlFVTXNRMEZCUXl4RFFV
RkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXp0
QlFVTTVRaXd3UWtGQlRUdEJRVUZCTEVGQlEwNHNjVUpCUVVzc1JVRkJSVHRCUVVGRExIZENRVUZK
TEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJRenRCUVVOd1Fpd3dRa0ZCVFR0QlFVRkJM
RUZCUTA0c2NVSkJRVXNzUlVGQlJUdEJRVUZETEhOQ1FVRkZMRU5CUVVNc1JVRkJSU3hIUVVGRExF
TkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVG
RExFTkJRVU1zUTBGQlF6dEJRVU01UWl3d1FrRkJUVHRCUVVGQkxFRkJRMDRzY1VKQlFVc3NSVUZC
UlR0QlFVRkRMSGRDUVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXp0QlFVTndR
aXd3UWtGQlRUdEJRVUZCTEVGQlEwNHNjVUpCUVVzc1JVRkJSVHRCUVVGRExITkNRVUZGTEVOQlFV
TXNSVUZCUlN4SFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTEVO
QlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVNNVFpd3dRa0ZCVFR0QlFVRkJMRUZC
UTA0c2NVSkJRVXNzUlVGQlJUdEJRVUZETEhkQ1FVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJR
VVVzUTBGQlF6dEJRVU53UWl3d1FrRkJUVHRCUVVGQkxFRkJRMDRzY1VKQlFVc3NSVUZCUlR0QlFV
RkRMSE5DUVVGRkxFTkJRVU1zUlVGQlJTeEhRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVr
c1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTTVRaXd3
UWtGQlRUdEJRVUZCTEVGQlEwNHNjVUpCUVVzc1JVRkJSVHRCUVVGRExIZENRVUZKTEVOQlFVTXNR
MEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFV
TTdRVUZETVVJc01FSkJRVTA3UVVGQlFTeEJRVU5PTEhGQ1FVRkxMRVZCUVVVN1FVRkJReXh6UWtG
QlJTeERRVUZETEVWQlFVVXNSMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1z
UlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRPVUlzTUVKQlFVMDdR
VUZCUVN4QlFVTk9MSEZDUVVGTExFZEJRVWM3UVVGQlF5eDNRa0ZCU1N4RFFVRkRMRU5CUVVNc1Iw
RkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUXpO
Q0xEQkNRVUZOTzBGQlFVRXNRVUZEVGl4eFFrRkJTeXhIUVVGSE8wRkJRVU1zYzBKQlFVVXNRMEZC
UXl4RlFVRkZMRWRCUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVXNR
MEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJReTlDTERCQ1FVRk5PMEZCUVVFc1lV
RkRURHRUUVVOQk8wRkJRMFFzWVVGQlN5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RFFVRkRMRVZCUVVN
c1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RlFVRkRMRU5C
UVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRM
RVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFV
RkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4
RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZC
UlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNS
VUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFV
TXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVO
QlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZE
TEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERR
VUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRExFTkJRVU1zUlVGQlF5
eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVNc1JVRkJReXhEUVVGRExFVkJRVU1zUTBG
QlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRExFTkJRVU1z
UlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRExFVkJR
VU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhGUVVGRExF
TkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVG
RExFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hG
UVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJR
eXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JV
RkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVN
c1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZC
UVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZM
RU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFV
RkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4
RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVOQlFVTXNSVUZC
UXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNS
VUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFV
VXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVW
QlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZE
TEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERR
VUZETEVWQlFVTXNSVUZCUXl4RlFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5
eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBG
QlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1z
UlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJR
VU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExF
VkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVG
RkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hE
UVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJR
eXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JV
RkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVN
c1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZC
UVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZM
RVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFV
RkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVTXNSVUZCUXl4
RFFVRkRMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZC
UlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNS
VUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFV
TXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVO
QlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZE
TEVOQlFVTXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERR
VUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5
eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVG
QlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1z
UTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJR
VU1zUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRExF
TkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhEUVVG
RExFVkJRVU1zUlVGQlF5eEZRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhE
UVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJR
eXhEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1Ew
RkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRU5CUVVN
c1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZC
UVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRM
RVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFV
RkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4
RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZC
UXl4RFFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNR
MEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFV
TXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVO
QlFVTXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRExFVkJRVU1zUTBGQlF5eEZRVUZE
TEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERR
VUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5
eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBG
QlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1z
UlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJR
VU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExF
TkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhEUVVG
RExFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhE
UVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJR
eXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JV
RkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVN
c1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZC
UVVNc1JVRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRM
RVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFV
RkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4
RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZC
UlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNS
VUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFV
TXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVO
QlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZE
TEVOQlFVTXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERR
VUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5
eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVG
QlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1z
UTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRExFTkJR
VU1zUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExF
VkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVG
RExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhE
UVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJR
eXhEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1Ew
RkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRU5CUVVN
c1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZC
UVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRM
RVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFV
RkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4
RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZC
UXl4RFFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVTXNR
MEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFV
VXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVW
QlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZE
TEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERR
VUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5
eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBG
QlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1z
UlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJR
VU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExF
TkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhEUVVG
RExFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhE
UVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJR
eXhGUVVGRExFVkJRVU1zUlVGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1Ew
RkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVN
c1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRU5C
UVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRM
RVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFV
RkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4
RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZC
UlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNS
VUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFV
TXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVO
QlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZE
TEVOQlFVTXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERR
VUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5
eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBG
QlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVz
UlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJR
VU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExF
VkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVG
RkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hG
UVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJR
eXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JV
RkJSU3hGUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVV
c1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZC
UVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRM
RU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFV
RkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4
RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZC
UXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNS
VUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFV
TXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZETEVW
QlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eEZRVUZE
TEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZR
VUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJT
eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVG
QlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1z
UTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJR
VU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExF
TkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVG
RExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhG
UVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJR
eXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JV
RkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVV
c1EwRkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5C
UVVNc1JVRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRM
RVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFV
RkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4
RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZC
UXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNS
VUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFV
TXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVW
QlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZG
TEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZR
VUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5
eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRExFVkJRVU1zUlVG
QlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1z
UlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRExFVkJR
VU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExF
VkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVG
RExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhG
UVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJR
eXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1Ew
RkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVN
c1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZC
UVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRM
RVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFV
RkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4
RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRExFVkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZC
UXl4RFFVRkRMRVZCUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNS
VUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFV
TXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVW
QlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZG
TEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERR
VUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5
eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVG
QlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1z
UlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJR
VVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRExF
VkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVG
RExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhG
UVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJS
U3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JV
RkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVN
c1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5C
UVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRM
RU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFV
RkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4
RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZC
UXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNS
VUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFV
VXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVO
QlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZG
TEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZR
VUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5
eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBG
QlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1z
UTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJR
VU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExF
VkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVG
RExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJReXhG
UVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJR
eXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JV
RkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVN
c1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZC
UVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZM
RU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFV
RkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4
RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZC
UXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNS
VUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFV
TXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVW
QlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZE
TEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZR
VUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJT
eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVG
QlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1z
UTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJR
VVVzUlVGQlF5eEZRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxF
VkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVG
RExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhE
UVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJS
U3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1Ew
RkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVN
c1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZC
UVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRM
RVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFV
RkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4
RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZETEVWQlFVTXNSVUZC
UlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNS
VUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFV
VXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVO
QlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZE
TEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZR
VUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5
eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVG
QlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVz
UlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRExFVkJR
VU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExF
VkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVG
RkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hG
UVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJR
eXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1Ew
RkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVN
c1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5C
UVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRM
RVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFV
RkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4
RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZC
UlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNR
MEZCUXl4RlFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFV
TXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVW
QlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZG
TEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERR
VUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5
eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVG
QlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1z
UlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJR
VVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxF
VkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVG
RExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhE
UVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJR
eXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVVc1JV
RkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVN
c1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5C
UVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRM
RU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFV
RkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4
RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZC
UXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNS
VUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFV
VXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVO
QlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZE
TEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZR
VUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5
eEZRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBG
QlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1z
UlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJR
VU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExF
VkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVG
RkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hG
UVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJR
eXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1Ew
RkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVN
c1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5C
UVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRM
RVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFV
RkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4
RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZC
UXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNS
VUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFV
TXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVW
QlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZG
TEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERR
VUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5
eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVG
QlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1z
UlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJR
VVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxF
VkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJReXhGUVVG
RExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhG
UVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJS
U3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JV
RkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVN
c1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5C
UVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRM
RU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFV
RkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4
RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZC
UXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNS
VUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFV
VXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVO
QlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZE
TEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZR
VUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJT
eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBG
QlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1z
UlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJR
VU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExF
VkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVG
RkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hG
UVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJR
eXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1Ew
RkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVN
c1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkZMRVZC
UVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRM
RU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFV
RkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4
RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZC
UXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNS
VUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFV
TXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVW
QlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZG
TEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERR
VUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5
eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVG
QlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1z
UlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJR
VU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExF
VkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkRMRVZCUVVNc1JVRkJSU3hGUVVG
RExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhE
UVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJR
eXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1Ew
RkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVN
c1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZC
UVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRM
RVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFV
RkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4
RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZC
UXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNS
VUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFV
TXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVW
QlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZE
TEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERR
VUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5
eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVG
QlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1z
UlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJR
VVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxF
TkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVG
RExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhG
UVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJR
eXhGUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JV
RkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVN
c1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5C
UVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRM
RVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFV
RkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4
RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZC
UXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNS
VUZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFV
TXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVO
QlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZE
TEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERR
VUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRExFVkJRVU1zUlVGQlJT
eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVG
QlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVz
UTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJR
VU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExF
VkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVG
RExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhG
UVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJS
U3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JV
RkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVN
c1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZC
UVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZM
RVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFV
RkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4
RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZC
UXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNR
MEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFV
TXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVW
QlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZE
TEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERR
VUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5
eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVG
QlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1z
UlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJR
VVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxF
TkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVG
RExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhG
UVVGRExFVkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJR
eXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JV
RkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVN
c1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5C
UVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRM
RVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFV
RkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4
RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZC
UlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZETEVWQlFVTXNS
VUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFV
TXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVW
QlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZE
TEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZR
VUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJT
eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVG
QlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1z
UTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJR
VU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExF
TkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVG
RExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhG
UVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJR
eXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JV
RkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVN
c1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZC
UVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZM
RVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFV
RkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4
RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZC
UXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNR
MEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFV
TXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVW
QlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZE
TEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZR
VUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5
eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVG
QlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVz
UlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJR
VU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExF
TkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVG
RExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVNc1JVRkJSU3hG
UVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJR
eXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1Ew
RkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVN
c1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZC
UVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRM
RVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFV
RkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4
RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZC
UXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVTXNS
VUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFV
TXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVW
QlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZE
TEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eEZR
VUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJT
eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVG
QlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1z
UlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJR
VVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxF
VkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVG
RExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhE
UVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJR
eXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JV
RkJReXhGUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVV
c1EwRkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZC
UVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRM
RVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFV
RkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4
RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZC
UXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNS
VUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFV
TXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVW
QlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZG
TEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZR
VUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5
eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBG
QlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1z
UTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRkxFVkJR
VU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExF
TkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVG
RkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhE
UVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJR
eXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JV
RkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVV
c1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZC
UVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRM
RU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFV
RkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4
RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZC
UXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNS
VUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFV
TXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVO
QlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZE
TEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eERR
VUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRExFVkJRVU1zUlVGQlJT
eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVG
QlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1z
UTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJR
VU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExF
TkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVG
RExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhG
UVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJR
eXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JV
RkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVV
c1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5C
UVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRM
RVZCUVVNc1JVRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFV
RkZMRU5CUVVNc1JVRkJReXhGUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4
RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZC
UlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNS
VUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFV
TXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVO
QlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZE
TEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERR
VUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5
eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVG
QlF5eEZRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhGUVVGRExFTkJRVU1z
UlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJR
VU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExF
VkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVG
RkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hG
UVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJR
eXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1Ew
RkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVN
c1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5C
UVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRM
RVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RlFV
RkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4
RlFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZC
UlN4RFFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVOQlFVTXNS
VUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFV
TXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVW
QlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZG
TEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERR
VUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5
eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVG
QlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1z
UlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJR
VVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxF
VkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVG
RExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhE
UVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVNc1JVRkJS
U3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JV
RkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVN
c1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZC
UVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZM
RVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFV
RkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4
RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZC
UlN4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNS
VUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFV
TXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVW
QlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZG
TEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZR
VUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5
eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBG
QlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVz
UlVGQlF5eEZRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJR
VVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExF
TkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVG
RExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhE
UVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJR
eXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JV
RkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVN
c1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZC
UVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZM
RU5CUVVNc1JVRkJReXhGUVVGRExFVkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFV
RkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4
RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZC
UlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNR
MEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFV
TXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVW
QlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZE
TEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZR
VUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJT
eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVG
QlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1z
UTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJR
VU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRkxF
VkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVG
RkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhG
UVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJR
eXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JV
RkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVN
c1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZC
UVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZM
RVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFV
RkRMRVZCUVVVc1JVRkJReXhGUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4
RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZC
UXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNS
VUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFV
VXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVW
QlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZE
TEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERR
VUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5
eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVG
QlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1z
UlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJR
VVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxF
TkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVG
RExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhG
UVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVVc1JVRkJR
eXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1Ew
RkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVV
c1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5C
UVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRM
RVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFV
RkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4
RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZC
UXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNR
MEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFV
TXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVO
QlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZE
TEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZR
VUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5
eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVU1zUlVG
QlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhIUVVGSExFVkJRVU1z
UlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJR
VVVzUlVGQlF5eEhRVUZITEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxF
VkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVG
RExFZEJRVWNzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhG
UVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJR
eXhGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JV
RkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVN
c1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZC
UVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZM
RVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFV
RkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4
RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZC
UlN4RlFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNS
VUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFV
TXNSMEZCUnl4RlFVRkRMRVZCUVVVc1JVRkJReXhIUVVGSExFVkJRVU1zUlVGQlJTeEZRVUZETEVW
QlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZE
TEVWQlFVTXNSVUZCUlN4RlFVRkRMRWRCUVVjc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZR
VUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5
eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVG
QlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1z
UlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJR
VVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxF
TkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVG
RExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhG
UVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJR
eXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1Ew
RkJReXhEUVVGRExFVkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVV
c1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZC
UVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRM
RU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFV
RkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4
RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZC
UXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNS
VUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFV
TXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVW
QlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZE
TEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERR
VUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5
eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBG
QlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1z
UlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJR
VU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExF
VkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVG
RkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hE
UVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJR
eXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JV
RkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVN
c1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZC
UVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkRM
RVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFV
RkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4
RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZC
UlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNS
VUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFV
TXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVO
QlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZE
TEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERR
VUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5
eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVG
QlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1z
UlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJR
VVVzUTBGQlF5eEZRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExF
VkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVG
RExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhG
UVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJS
U3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVkQlFVY3NSVUZCUXl4RlFVRkZMRVZCUVVNc1Ew
RkJReXhEUVVGRExFVkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVN
c1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkZMRVZC
UVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRM
RU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFV
RkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4
RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZC
UXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNS
VUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFV
TXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVO
QlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZE
TEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZR
VUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5
eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVG
QlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFZEJRVWNz
UTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJR
VU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExF
VkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVG
RExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhG
UVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJS
U3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JV
RkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVN
c1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkRMRVZC
UVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZM
RVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFV
RkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4
RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZC
UXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNR
MEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFV
TXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVW
QlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZE
TEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZR
VUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJT
eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBG
QlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1z
UlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJR
VU1zUlVGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhIUVVGSExF
TkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVG
RExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhG
UVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJS
U3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1Ew
RkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVN
c1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZC
UVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRM
RVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFV
RkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUXl4
RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZC
UXl4RlFVRkRMRVZCUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNR
MEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFV
TXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVW
QlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZE
TEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZR
VUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJT
eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVG
QlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1z
UTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJR
VU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExF
TkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVG
RExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhG
UVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJS
U3hGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JV
RkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVN
c1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNSMEZCUnl4RlFVRkRMRVZC
UVVVc1JVRkJReXhIUVVGSExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRM
RVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFV
RkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVkQlFVY3NSVUZCUXl4
RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZC
UlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNS
VUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFV
TXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVO
QlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZE
TEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERR
VUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5
eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVG
QlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1z
UTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVNc1JVRkJReXhEUVVGRExFVkJR
VU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExF
TkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVG
RExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhE
UVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJR
eXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JV
RkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVN
c1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZC
UVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZM
RU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFV
RkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4
RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZC
UXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNS
VUZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEhRVUZITEVOQlFV
TXNSVUZCUXl4RlFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVW
QlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZG
TEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERR
VUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5
eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVG
QlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1z
UlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJR
VVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxF
VkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJReXhGUVVG
RExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhG
UVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1IwRkJS
eXhGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1Ew
RkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4SFFVRkhMRVZCUVVN
c1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZC
UVVVc1JVRkJReXhIUVVGSExFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZM
RVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFV
RkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4
RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZC
UXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNS
VUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFV
TXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVW
QlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZG
TEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZR
VUZETEVWQlFVVXNSVUZCUXl4RlFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5
eEZRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUjBG
QlJ5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1z
UlVGQlF5eEZRVUZGTEVWQlFVTXNSMEZCUnl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJR
VU1zUlVGQlF5eEhRVUZITEVOQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExF
TkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVG
RExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhE
UVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJR
eXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JV
RkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVN
c1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZC
UVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZM
RU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFV
RkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4
RlFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZC
UlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNR
MEZCUXl4RlFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFV
TXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFZEJRVWNzUlVGQlF5eEZRVUZGTEVW
QlFVTXNSMEZCUnl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEhRVUZI
TEVOQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZR
VUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5
eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVG
QlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVz
UTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJR
VU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExF
VkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVG
RExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhG
UVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJS
U3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVNc1JV
RkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVN
c1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZC
UVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSMEZCUnl4RFFVRkRM
RVZCUVVNc1JVRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFV
RkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4
RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZC
UXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNS
VUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFV
TXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVW
QlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZG
TEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZR
VUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVU1zUlVGQlF5
eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVG
QlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhIUVVGSExFTkJRVU1z
UlVGQlF5eEZRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJR
VVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxF
TkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVG
RExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhG
UVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJR
eXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JV
RkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVV
c1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZC
UVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkRM
RVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFV
RkRMRVZCUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4
RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZC
UXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNS
VUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFV
VXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVW
QlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZE
TEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERR
VUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5
eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBG
QlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1z
UlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJR
VU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExF
VkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVG
RExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhG
UVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJR
eXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JV
RkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVV
c1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5C
UVVNc1JVRkJReXhGUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRM
RWRCUVVjc1EwRkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFV
RkRMRVZCUVVVc1JVRkJReXhIUVVGSExFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4
RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZC
UlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNS
VUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFV
TXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVO
QlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZE
TEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERR
VUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5
eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVG
QlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVU1z
UlVGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJR
VU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExF
VkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVG
RkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hG
UVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJR
eXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1Ew
RkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVN
c1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5C
UVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRM
RVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFV
RkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4
RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZC
UlN4RFFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNS
VUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFV
TXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZGTEVW
QlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZG
TEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1IwRkJSeXhGUVVGRExFVkJRVVVzUlVGQlF5eEhR
VUZITEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5
eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFZEJRVWNzUlVG
QlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1z
UlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJR
VVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxF
VkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVG
RExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhE
UVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJR
eXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1Ew
RkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVN
c1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZC
UVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkRM
RVZCUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFV
RkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4
RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZC
UlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNS
VUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFV
TXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVO
QlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZE
TEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERR
VUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5
eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVG
QlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1z
UlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJR
VVVzUTBGQlF5eEZRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExF
VkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVG
RExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhE
UVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJR
eXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JV
RkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVN
c1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZC
UVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZM
RU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFV
RkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4
RlFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZC
UlN4RFFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVOQlFVTXNS
VUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFV
TXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVW
QlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZG
TEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERR
VUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5
eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVG
QlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1z
UlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJR
VVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxF
VkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVG
RExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhE
UVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVNc1JVRkJS
U3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkRMRVZCUVVNc1JV
RkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVN
c1JVRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4SFFVRkhMRU5C
UVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUjBGQlJ5eEZRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkZM
RVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVTXNSVUZCUXl4RlFV
RkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4
RlFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZC
UXl4RlFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNS
VUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFV
VXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVO
QlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZE
TEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZR
VUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5
eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVG
QlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVz
UlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJR
VU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRExF
VkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVG
RkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hG
UVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJR
eXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1Ew
RkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVN
c1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkZMRVZC
UVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRM
RWRCUVVjc1JVRkJReXhGUVVGRkxFVkJRVU1zUjBGQlJ5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFV
RkRMRU5CUVVNc1JVRkJReXhIUVVGSExFTkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVTXNSVUZCUlN4
RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZC
UXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNR
MEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFV
TXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVO
QlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZE
TEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZR
VUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5
eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVG
QlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVz
UTBGQlF5eEZRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJR
VU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExF
VkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVG
RExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhG
UVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJR
eXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JV
RkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVV
c1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5C
UVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRM
RVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFV
RkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4
RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZC
UlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNS
VUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFV
TXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZETEVW
QlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZG
TEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZR
VUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5
eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBG
QlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1z
UTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJR
VU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExF
VkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVG
RExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhG
UVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJS
U3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1Ew
RkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVN
c1IwRkJSeXhEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRWRC
UVVjc1EwRkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRM
RVZCUVVNc1IwRkJSeXhEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFV
RkRMRWRCUVVjc1EwRkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4
RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZC
UXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNS
VUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFV
TXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVW
QlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZG
TEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERR
VUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5
eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVG
QlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1z
UlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJR
VU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1IwRkJSeXhEUVVGRExF
VkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVG
RkxFTkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhG
UVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJR
eXhEUVVGRExFVkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1Ew
RkJReXhGUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVN
c1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5C
UVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRM
RU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFV
RkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4
RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZC
UXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNS
VUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFV
VXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVO
QlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZE
TEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZR
VUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5
eERRVUZETzBGQlEzaG5WeXh6UWtGQll5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVN
c1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5C
UVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRM
RVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFV
RkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4
RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZC
UlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNR
MEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFV
TXNSVUZCUXl4SFFVRkhMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVW
QlFVTXNSMEZCUnl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZE
TEVkQlFVY3NSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEhR
VUZITEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUjBGQlJ5
eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFZEJRVWNzUlVG
QlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhIUVVGSExFVkJRVU1z
UTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1IwRkJSeXhGUVVGRExFTkJR
VU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRWRCUVVjc1JVRkJReXhEUVVGRExF
TkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4SFFVRkhMRVZCUVVNc1EwRkJReXhEUVVG
RExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTTdRVUZETjAwc2EwSkJRVlVzUlVGQlJTeFRRVUZU
TEZWQlFWVXNRMEZCUXl4SFFVRkhMRVZCUVVVc1NVRkJTU3hGUVVGRk8wRkJRM1pETEd0Q1FVRk5M
RWxCUVVrc1MwRkJTeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFOQlEzaENPMEZCUTBRc1lV
RkJTeXhGUVVGRkxGTkJRVk1zUzBGQlN5eERRVUZETEV0QlFVc3NSVUZCUlR0QlFVTjZRaXhuUWtG
QlNTeEpRVUZKTEVkQlFVY3NTVUZCU1R0blFrRkJSU3hMUVVGTExFZEJRVWNzUTBGQlF5eERRVUZE
TEVOQlFVTTdaMEpCUVVVc1RVRkJUU3hIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETzJkQ1FVRkZM
RTFCUVUwc1IwRkJSeXhGUVVGRk8yZENRVUZGTEV0QlFVc3NSMEZCUnl4SlFVRkpMRU5CUVVNc1Mw
RkJTenRuUWtGQlJTeE5RVUZOTEVkQlFVY3NSVUZCUlR0blFrRkJSU3hSUVVGUkxFZEJRVWNzUTBG
QlF6dG5Ra0ZCUlN4TlFVRk5MRWRCUVVjc1EwRkJRenRuUWtGQlJTeFZRVUZWTEVkQlFVY3NRMEZC
UXp0blFrRkJSU3hOUVVGTkxFZEJRVWNzUTBGQlF6dG5Ra0ZCUlN4SFFVRkhMRWRCUVVjc1EwRkJR
eXhEUVVGRE8wRkJRek5LTEdkQ1FVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExGRkJRVkVzUTBGQlF5
eExRVUZMTEVOQlFVTXNRMEZCUXp0QlFVTXpRaXhuUWtGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4
RlFVRkZMRWRCUVVjc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF6dEJRVU40UWl4blFrRkJTU3hE
UVVGRExFVkJRVVVzUTBGQlF5eExRVUZMTEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJR
enRCUVVNelFpeG5Ra0ZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhOUVVGTkxFZEJRVWNzU1VGQlNT
eERRVUZETzBGQlEzUkNMR2RDUVVGSkxFOUJRVThzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4
TlFVRk5MRWxCUVVrc1YwRkJWeXhGUVVOMlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRTFC
UVUwc1IwRkJSeXhGUVVGRkxFTkJRVU03UVVGRE0wSXNaMEpCUVVrc1MwRkJTeXhIUVVGSExFbEJR
VWtzUTBGQlF5eExRVUZMTEVOQlFVTXNUVUZCVFN4RFFVRkRPMEZCUXpsQ0xHdENRVUZOTEVOQlFV
TXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE8wRkJRMjVDTEdkQ1FVRkpMRTFCUVUw
c1IwRkJSeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEU5QlFVOHNTVUZCU1N4SlFVRkpMRU5C
UVVNc1MwRkJTeXhEUVVGRExFOUJRVThzUTBGQlF5eE5RVUZOTEVOQlFVTTdRVUZETjBRc1owSkJR
VWtzVDBGQlR5eEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRMRlZCUVZVc1MwRkJTeXhWUVVGVkxF
VkJRM2hETEVsQlFVa3NRMEZCUXl4VlFVRlZMRWRCUVVjc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBG
QlF5eFZRVUZWTEVOQlFVTTdRVUZEZWtNc2NVSkJRVk1zVVVGQlVTeERRVUZETEVOQlFVTXNSVUZC
UlR0QlFVTnFRaXh4UWtGQlN5eERRVUZETEUxQlFVMHNSMEZCUnl4TFFVRkxMRU5CUVVNc1RVRkJU
U3hIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdRVUZEY0VNc2MwSkJRVTBzUTBGQlF5
eE5RVUZOTEVkQlFVY3NUVUZCVFN4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU03UVVG
RGJFTXNjMEpCUVUwc1EwRkJReXhOUVVGTkxFZEJRVWNzVFVGQlRTeERRVUZETEUxQlFVMHNSMEZC
Unl4RFFVRkRMRU5CUVVNN1lVRkRja003UVVGRFJDeHhRa0ZCVXl4SFFVRkhMRWRCUVVjN1FVRkRX
Q3h2UWtGQlNTeExRVUZMTEVOQlFVTTdRVUZEVml4eFFrRkJTeXhIUVVGSExFbEJRVWtzUTBGQlF5
eExRVUZMTEVOQlFVTXNSMEZCUnl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRE8wRkJRemxDTEc5
Q1FVRkpMRTlCUVU4c1MwRkJTeXhMUVVGTExGRkJRVkVzUlVGQlJUdEJRVU16UWl4NVFrRkJTeXhI
UVVGSExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1MwRkJT
eXhEUVVGRE8ybENRVU42UXp0QlFVTkVMSFZDUVVGUExFdEJRVXNzUTBGQlF6dGhRVU5vUWp0QlFV
TkVMR2RDUVVGSkxFMUJRVTA3WjBKQlFVVXNZMEZCWXp0blFrRkJSU3hMUVVGTE8yZENRVUZGTEUx
QlFVMDdaMEpCUVVVc1EwRkJRenRuUWtGQlJTeERRVUZETzJkQ1FVRkZMRXRCUVVzc1IwRkJSeXhG
UVVGRk8yZENRVUZGTEVOQlFVTTdaMEpCUVVVc1IwRkJSenRuUWtGQlJTeFJRVUZSTzJkQ1FVRkZM
RkZCUVZFc1EwRkJRenRCUVVONFJpeHRRa0ZCVHl4SlFVRkpMRVZCUVVVN1FVRkRWQ3h4UWtGQlN5
eEhRVUZITEV0QlFVc3NRMEZCUXl4TFFVRkxMRU5CUVVNc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBG
QlF5eERRVUZETzBGQlEyaERMRzlDUVVGSkxFbEJRVWtzUTBGQlF5eGpRVUZqTEVOQlFVTXNTMEZC
U3l4RFFVRkRMRVZCUVVVN1FVRkROVUlzTUVKQlFVMHNSMEZCUnl4SlFVRkpMRU5CUVVNc1kwRkJZ
eXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzJsQ1FVTjJReXhOUVVGTk8wRkJRMGdzZDBKQlFV
a3NUVUZCVFN4TFFVRkxMRWxCUVVrc1NVRkJTU3hQUVVGUExFMUJRVTBzU1VGQlNTeFhRVUZYTEVW
QlFVVTdRVUZEYWtRc09FSkJRVTBzUjBGQlJ5eEhRVUZITEVWQlFVVXNRMEZCUXp0eFFrRkRiRUk3
UVVGRFJDd3dRa0ZCVFN4SFFVRkhMRXRCUVVzc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeExR
VUZMTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03YVVKQlEy
cEVPMEZCUTBRc2IwSkJRVWtzVDBGQlR5eE5RVUZOTEV0QlFVc3NWMEZCVnl4SlFVRkpMRU5CUVVN
c1RVRkJUU3hEUVVGRExFMUJRVTBzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5C
UVVNc1JVRkJSVHRCUVVNdlJDeDNRa0ZCU1N4TlFVRk5MRWRCUVVjc1JVRkJSU3hEUVVGRE8wRkJR
MmhDTEhkQ1FVRkpMRU5CUVVNc1ZVRkJWU3hGUVVGRk8wRkJRMklzWjBOQlFWRXNSMEZCUnl4RlFV
RkZMRU5CUVVNN1FVRkRaQ3cyUWtGQlN5eERRVUZETEVsQlFVa3NTMEZCU3l4RFFVRkRMRXRCUVVz
c1EwRkJReXhGUVVOc1FpeEpRVUZKTEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJReXhE
UVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlR0QlFVTTNRaXh2UTBGQlVTeERR
VUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5
eERRVUZETEVOQlFVTXNSMEZCUnl4SFFVRkhMRU5CUVVNc1EwRkJRenQ1UWtGRGFrUTdRVUZEVEN3
MFFrRkJTU3hKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEZsQlFWa3NSVUZCUlR0QlFVTjZRaXhy
UTBGQlRTeEhRVUZITEhOQ1FVRnpRaXhKUVVGSkxGRkJRVkVzUjBGQlJ5eERRVUZETEVOQlFVRXNR
VUZCUXl4SFFVRkhMRXRCUVVzc1IwRkJSeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEZsQlFW
a3NSVUZCUlN4SFFVRkhMR05CUVdNc1IwRkJSeXhSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEVs
QlFVa3NRMEZCUXl4SFFVRkhMRk5CUVZNc1NVRkJTU3hKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZE
TEUxQlFVMHNRMEZCUXl4SlFVRkpMRTFCUVUwc1EwRkJRU3hCUVVGRExFZEJRVWNzUjBGQlJ5eERR
VUZETzNsQ1FVTjJUQ3hOUVVGTk8wRkJRMGdzYTBOQlFVMHNSMEZCUnl4elFrRkJjMElzU1VGQlNT
eFJRVUZSTEVkQlFVY3NRMEZCUXl4RFFVRkJMRUZCUVVNc1IwRkJSeXhsUVVGbExFbEJRVWtzVFVG
QlRTeEpRVUZKTEVOQlFVTXNSMEZCUXl4alFVRmpMRWRCUVVNc1IwRkJSeXhKUVVGSkxFbEJRVWtz
UTBGQlF5eFZRVUZWTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1RVRkJUU3hEUVVGQkxFRkJR
VU1zUjBGQlJ5eEhRVUZITEVOQlFVRXNRVUZCUXl4RFFVRkRPM2xDUVVOeVNqdEJRVU5FTERSQ1FV
RkpMRU5CUVVNc1ZVRkJWU3hEUVVGRExFMUJRVTBzUlVGQlJTeEZRVUZETEVsQlFVa3NSVUZCUlN4
SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFdEJRVXNzUlVGQlJTeExRVUZMTEVWQlFVVXNTVUZC
U1N4RFFVRkRMRlZCUVZVc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeE5RVUZOTEVWQlFVVXNT
VUZCU1N4RlFVRkZMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVVVGQlVTeEZRVUZGTEVkQlFV
Y3NSVUZCUlN4TFFVRkxMRVZCUVVVc1VVRkJVU3hGUVVGRkxGRkJRVkVzUlVGQlF5eERRVUZETEVO
QlFVTTdjVUpCUXpGS08ybENRVU5LTzBGQlEwUXNiMEpCUVVrc1RVRkJUU3hEUVVGRExFTkJRVU1z
UTBGQlF5eFpRVUZaTEV0QlFVc3NTVUZCU1N4TlFVRk5MRU5CUVVNc1RVRkJUU3hIUVVGSExFTkJR
VU1zUlVGQlJUdEJRVU5xUkN3d1FrRkJUU3hKUVVGSkxFdEJRVXNzUTBGQlF5eHRSRUZCYlVRc1Iw
RkJSeXhMUVVGTExFZEJRVWNzVjBGQlZ5eEhRVUZITEUxQlFVMHNRMEZCUXl4RFFVRkRPMmxDUVVO
MlJ6dEJRVU5FTEhkQ1FVRlJMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU03UVVGRGFrSXNlVUpC
UVVzc1EwRkJRenRCUVVOR0xEWkNRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJR
eXhEUVVGRE8wRkJRMjVDTERoQ1FVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5
eExRVUZMTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1FVRkRMMElzT0VKQlFVMHNRMEZCUXl4
SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZC
UXp0QlFVTXZRaXcyUWtGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJR
eXhEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU4wUWl3NFFrRkJUU3hIUVVGSExFbEJRVWtzUTBGQlF6
dEJRVU5rTERSQ1FVRkpMRU5CUVVNc1kwRkJZeXhGUVVGRk8wRkJRMnBDTEd0RFFVRk5MRWRCUVVj
c1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eE5RVUZOTEVOQlFVTTdRVUZETTBJc2EwTkJRVTBz
UjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRTFCUVUwc1EwRkJRenRCUVVNelFpeHZR
MEZCVVN4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVVVGQlVTeERRVUZETzBGQlF5
OUNMR2xEUVVGTExFZEJRVWNzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4TlFVRk5MRU5CUVVN
N1FVRkRNVUlzWjBOQlFVa3NWVUZCVlN4SFFVRkhMRU5CUVVNc1JVRkRaQ3hWUVVGVkxFVkJRVVVz
UTBGQlF6dDVRa0ZEY0VJc1RVRkJUVHRCUVVOSUxHdERRVUZOTEVkQlFVY3NZMEZCWXl4RFFVRkRP
MEZCUTNoQ0xEQkRRVUZqTEVkQlFVY3NTVUZCU1N4RFFVRkRPM2xDUVVONlFqdEJRVU5FTERoQ1FV
Rk5PMEZCUVVFc1FVRkRWaXg1UWtGQlN5eERRVUZETzBGQlEwWXNNa0pCUVVjc1IwRkJSeXhKUVVG
SkxFTkJRVU1zV1VGQldTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhE
UVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBGQlEzUkRMRFpDUVVGTExFTkJRVU1zUTBGQlF5eEhR
VUZITEUxQlFVMHNRMEZCUXl4TlFVRk5MRU5CUVVNc1RVRkJUU3hIUVVGSExFZEJRVWNzUTBGQlF5
eERRVUZETzBGQlEzUkRMRFpDUVVGTExFTkJRVU1zUlVGQlJTeEhRVUZITEVWQlFVTXNWVUZCVlN4
RlFVRkZMRTFCUVUwc1EwRkJReXhOUVVGTkxFTkJRVU1zVFVGQlRTeEpRVUZKTEVkQlFVY3NTVUZC
U1N4RFFVRkRMRU5CUVVFc1FVRkJReXhEUVVGRExFTkJRVU1zVlVGQlZTeEZRVUZGTEZOQlFWTXNS
VUZCUlN4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVOQlFV
TXNRMEZCUXl4VFFVRlRMRVZCUVVVc1dVRkJXU3hGUVVGRkxFMUJRVTBzUTBGQlF5eE5RVUZOTEVO
QlFVTXNUVUZCVFN4SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVUVzUVVGQlF5eERRVUZE
TEVOQlFVTXNXVUZCV1N4RlFVRkZMRmRCUVZjc1JVRkJSU3hOUVVGTkxFTkJRVU1zVFVGQlRTeERR
VUZETEUxQlFVMHNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhYUVVGWExFVkJRVU1zUTBGQlF6
dEJRVU14VHl3MFFrRkJTU3hOUVVGTkxFVkJRVVU3UVVGRFVpeHBRMEZCU3l4RFFVRkRMRVZCUVVV
c1EwRkJReXhMUVVGTExFZEJRVWNzUTBGQlF5eE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRMRTFC
UVUwc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZCTEVGQlFVTXNRMEZCUXl4RFFVRkRM
RXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFV
RkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4
RFFVRkRMRU5CUVVNc1EwRkJRenQ1UWtGRGRFYzdRVUZEUkN4NVFrRkJReXhIUVVGSExFbEJRVWtz
UTBGQlF5eGhRVUZoTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1JVRkJSU3hOUVVGTkxFVkJR
VVVzVFVGQlRTeEZRVUZGTEZGQlFWRXNSVUZCUlN4SlFVRkpMRU5CUVVNc1JVRkJSU3hGUVVGRkxF
MUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4TlFVRk5MRVZCUVVVc1RVRkJUU3hEUVVG
RExFTkJRVU03UVVGRGFrY3NORUpCUVVrc1QwRkJUeXhEUVVGRExFdEJRVXNzVjBGQlZ5eEZRVUZG
TzBGQlF6RkNMRzFEUVVGUExFTkJRVU1zUTBGQlF6dDVRa0ZEV2p0QlFVTkVMRFJDUVVGSkxFZEJR
VWNzUlVGQlJUdEJRVU5NTEdsRFFVRkxMRWRCUVVjc1MwRkJTeXhEUVVGRExFdEJRVXNzUTBGQlF5
eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRWRCUVVjc1IwRkJSeXhIUVVGSExFTkJRVU1zUTBG
QlF5eERRVUZETzBGQlEzSkRMR3REUVVGTkxFZEJRVWNzVFVGQlRTeERRVUZETEV0QlFVc3NRMEZC
UXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFZEJRVWNzUjBGQlJ5eERRVUZETEVOQlFVTTdR
VUZEYmtNc2EwTkJRVTBzUjBGQlJ5eE5RVUZOTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1JV
RkJSU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTXNRMEZCUXp0NVFrRkRkRU03UVVG
RFJDdzJRa0ZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZE
TEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERR
VUZETEVOQlFVTTdRVUZETlVNc09FSkJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFV
RkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJRM0pDTERoQ1FVRk5MRU5CUVVNc1NVRkJTU3hEUVVG
RExFdEJRVXNzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXp0QlFVTjBRaXhuUTBGQlVTeEhRVUZI
TEV0QlFVc3NRMEZCUXl4TFFVRkxMRU5CUVVNc1MwRkJTeXhEUVVGRExFMUJRVTBzUjBGQlJ5eERR
VUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRXRCUVVzc1EwRkJReXhMUVVGTExFTkJRVU1zVFVGQlRT
eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRia1VzTmtKQlFVc3NRMEZCUXl4
SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU03UVVGRGNrSXNPRUpCUVUwN1FVRkJRU3hC
UVVOV0xIbENRVUZMTEVOQlFVTTdRVUZEUml3clFrRkJUeXhKUVVGSkxFTkJRVU03UVVGQlFTeHBR
a0ZEWmp0aFFVTktPMEZCUTBRc2JVSkJRVThzU1VGQlNTeERRVUZETzFOQlEyWTdTMEZEUVN4RFFV
RkRPenRCUVVWR0xGRkJRVWtzUzBGQlN5eEhRVUZITEVOQlFVTXNXVUZCVlR0QlFVTjJRaXhaUVVG
SkxFdEJRVXNzUjBGQlNTeEZRVUZETEVkQlFVY3NSVUZCUXl4RFFVRkRPMEZCUTI1Q0xITkNRVUZW
TEVWQlFVTXNVMEZCVXl4VlFVRlZMRU5CUVVNc1IwRkJSeXhGUVVGRkxFbEJRVWtzUlVGQlJUdEJR
VU5zUXl4dlFrRkJTU3hKUVVGSkxFTkJRVU1zUlVGQlJTeERRVUZETEUxQlFVMHNSVUZCUlR0QlFV
Tm9RaXgzUWtGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1ZVRkJWU3hEUVVG
RExFZEJRVWNzUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0cFFrRkRlRU1zVFVGQlRUdEJRVU5J
TERCQ1FVRk5MRWxCUVVrc1MwRkJTeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzJsQ1FVTjRR
anRoUVVOS08wRkJRMHdzYjBKQlFWRXNSVUZCUXl4clFrRkJWU3hMUVVGTExFVkJRVVU3UVVGRGJF
SXNiMEpCUVVrc1EwRkJReXhOUVVGTkxFZEJRVWNzUzBGQlN5eERRVUZETzBGQlEzQkNMRzlDUVVG
SkxFTkJRVU1zUzBGQlN5eEhRVUZITEVsQlFVa3NRMEZCUXl4TFFVRkxMRWRCUVVjc1NVRkJTU3hE
UVVGRExFbEJRVWtzUjBGQlJ5eExRVUZMTEVOQlFVTTdRVUZETlVNc2IwSkJRVWtzUTBGQlF5eFJR
VUZSTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU03UVVGRGFF
TXNiMEpCUVVrc1EwRkJReXhOUVVGTkxFZEJRVWNzU1VGQlNTeERRVUZETEU5QlFVOHNSMEZCUnl4
SlFVRkpMRU5CUVVNc1MwRkJTeXhIUVVGSExFVkJRVVVzUTBGQlF6dEJRVU0zUXl4dlFrRkJTU3hE
UVVGRExHTkJRV01zUjBGQlJ5eERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRPMEZCUTJ4RExHOUNR
VUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRVZCUVVNc1ZVRkJWU3hGUVVGRExFTkJRVU1zUlVGQlF5
eFpRVUZaTEVWQlFVTXNRMEZCUXl4RlFVRkRMRk5CUVZNc1JVRkJReXhEUVVGRExFVkJRVU1zVjBG
QlZ5eEZRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRPMEZCUTNSRkxHOUNRVUZKTEVsQlFVa3NRMEZC
UXl4UFFVRlBMRU5CUVVNc1RVRkJUU3hGUVVGRkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNT
MEZCU3l4SFFVRkhMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBGQlEy
NUVMRzlDUVVGSkxFTkJRVU1zVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXp0QlFVTm9RaXgxUWtG
QlR5eEpRVUZKTEVOQlFVTTdZVUZEWmp0QlFVTk1MR2xDUVVGTExFVkJRVU1zYVVKQlFWazdRVUZE
Vml4dlFrRkJTU3hGUVVGRkxFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRM
RU5CUVVNc1EwRkJRenRCUVVONFFpeHZRa0ZCU1N4RFFVRkRMRTFCUVUwc1NVRkJTU3hGUVVGRkxF
TkJRVU03UVVGRGJFSXNiMEpCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF6dEJRVU5rTEc5
Q1FVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU03UVVGRFpDeHZRa0ZCU1N4RFFVRkRMRXRC
UVVzc1NVRkJTU3hGUVVGRkxFTkJRVU03UVVGRGFrSXNiMEpCUVVrc1EwRkJReXhQUVVGUExFbEJR
VWtzUlVGQlJTeERRVUZETzBGQlEyNUNMRzlDUVVGSkxFdEJRVXNzUjBGQlJ5eEZRVUZGTEVOQlFV
TXNTMEZCU3l4RFFVRkRMR2xDUVVGcFFpeERRVUZETEVOQlFVTTdRVUZEZUVNc2IwSkJRVWtzUzBG
QlN5eEZRVUZGTzBGQlExQXNkMEpCUVVrc1EwRkJReXhSUVVGUkxFVkJRVVVzUTBGQlF6dEJRVU5v
UWl4M1FrRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFRRVUZUTEVWQlFVVXNRMEZCUXp0cFFrRkRN
MElzVFVGQlRUdEJRVU5JTEhkQ1FVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExGZEJRVmNzUlVGQlJT
eERRVUZETzJsQ1FVTTNRanRCUVVORUxHOUNRVUZKTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVN
c1RVRkJUU3hGUVVGRkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5C
UVVNc1EwRkJReXhGUVVGRkxFTkJRVU03TzBGQlJXaEVMRzlDUVVGSkxFTkJRVU1zVFVGQlRTeEhR
VUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5
eERRVUZETzBGQlEyNURMSFZDUVVGUExFVkJRVVVzUTBGQlF6dGhRVU5pTzBGQlEwd3NhVUpCUVVz
c1JVRkJReXhsUVVGVkxFVkJRVVVzUlVGQlJUdEJRVU5hTEc5Q1FVRkpMRWRCUVVjc1IwRkJSeXhG
UVVGRkxFTkJRVU1zVFVGQlRTeERRVUZETzBGQlEzQkNMRzlDUVVGSkxFdEJRVXNzUjBGQlJ5eEZR
VUZGTEVOQlFVTXNTMEZCU3l4RFFVRkRMR1ZCUVdVc1EwRkJReXhEUVVGRE96dEJRVVYwUXl4dlFr
RkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eEZRVUZGTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUw
c1EwRkJRenRCUVVNdlFpeHZRa0ZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhKUVVGSkxFTkJRVU1z
VFVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFMUJR
VTBzUTBGQlF5eE5RVUZOTEVkQlFVTXNSMEZCUnl4SFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE96
dEJRVVU1UkN4dlFrRkJTU3hEUVVGRExFMUJRVTBzU1VGQlNTeEhRVUZITEVOQlFVTTdRVUZEYmtJ
c2IwSkJRVWtzVVVGQlVTeEhRVUZITEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1MwRkJTeXhE
UVVGRExHVkJRV1VzUTBGQlF5eERRVUZETzBGQlEycEVMRzlDUVVGSkxFTkJRVU1zUzBGQlN5eEhR
VUZITEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUlVGQlJT
eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRTFCUVUwc1IwRkJReXhEUVVGRExFTkJRVU1zUTBG
QlF6dEJRVU4yUkN4dlFrRkJTU3hEUVVGRExFOUJRVThzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUMEZC
VHl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEU5QlFVOHNR
MEZCUXl4TlFVRk5MRWRCUVVNc1EwRkJReXhEUVVGRExFTkJRVU03TzBGQlJUZEVMRzlDUVVGSkxF
dEJRVXNzUTBGQlF5eE5RVUZOTEVkQlFVTXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhSUVVG
UkxFbEJRVWtzUzBGQlN5eERRVUZETEUxQlFVMHNSMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRjRVFz
YjBKQlFVa3NRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUzBGQlN5eERR
VUZET3p0QlFVVXhRaXh2UWtGQlNTeERRVUZETEUxQlFVMHNSMEZCUnl4RlFVRkRMRlZCUVZVc1JV
RkJSU3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEZWQlFWVTdRVUZETDBNc05rSkJRVk1zUlVG
QlJTeEpRVUZKTEVOQlFVTXNVVUZCVVN4SFFVRkRMRU5CUVVNN1FVRkRNVUlzWjBOQlFWa3NSVUZC
UlN4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExGbEJRVms3UVVGRGRFTXNLMEpCUVZjc1JVRkJS
U3hMUVVGTExFZEJRMlFzUTBGQlF5eExRVUZMTEVOQlFVTXNUVUZCVFN4TFFVRkxMRkZCUVZFc1Ew
RkJReXhOUVVGTkxFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4WlFVRlpMRWRCUVVj
c1EwRkJReXhEUVVGQkxFZEJRVWtzVVVGQlVTeERRVUZETEZGQlFWRXNRMEZCUXl4TlFVRk5MRWRC
UVVjc1MwRkJTeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEUxQlFVMHNSMEZCUnl4TFFVRkxM
RU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeEhRVU55U1N4SlFVRkpMRU5CUVVNc1RV
RkJUU3hEUVVGRExGbEJRVmtzUjBGQlJ5eEhRVUZITzJsQ1FVTnFReXhEUVVGRE96dEJRVVZLTEc5
Q1FVRkpMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zVFVGQlRTeEZRVUZGTzBGQlEzSkNMSGRD
UVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEV0QlFVc3NSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJR
eXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1NV
RkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eEhRVUZITEVOQlFVTXNRMEZCUXp0cFFrRkRlRVE3UVVG
RFJDeDFRa0ZCVHl4SlFVRkpMRU5CUVVNN1lVRkRaanRCUVVOTUxHZENRVUZKTEVWQlFVTXNaMEpC
UVZrN1FVRkRWQ3h2UWtGQlNTeERRVUZETEV0QlFVc3NSMEZCUnl4SlFVRkpMRU5CUVVNN1FVRkRi
RUlzZFVKQlFVOHNTVUZCU1N4RFFVRkRPMkZCUTJZN1FVRkRUQ3huUWtGQlNTeEZRVUZETEdOQlFW
VXNRMEZCUXl4RlFVRkZPMEZCUTFZc2IwSkJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4
RFFVRkRMRXRCUVVzc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZC
UXp0aFFVTnVRenRCUVVOTUxIRkNRVUZUTEVWQlFVTXNjVUpCUVZrN1FVRkRaQ3h2UWtGQlNTeEpR
VUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5
eEZRVUZGTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1RVRkJUU3hIUVVGSExFbEJRVWtzUTBG
QlF5eExRVUZMTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1FVRkRNMFVzZFVKQlFVOHNRMEZC
UXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hIUVVGSExFVkJRVVVzUjBGQlJ5eExRVUZMTEVkQlFVTXNS
VUZCUlN4RFFVRkJMRWRCUVVrc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVWQlFV
VXNRMEZCUXl4RFFVRkRMRTlCUVU4c1EwRkJReXhMUVVGTExFVkJRVVVzUlVGQlJTeERRVUZETEVO
QlFVTTdZVUZET1VVN1FVRkRUQ3g1UWtGQllTeEZRVUZETEhsQ1FVRlpPMEZCUTJ4Q0xHOUNRVUZK
TEVsQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRE8wRkJRM1JDTEc5Q1FVRkpM
RWxCUVVrc1EwRkJReXhOUVVGTkxFZEJRVWNzUlVGQlJTeEZRVUZGTzBGQlEyeENMSGRDUVVGSkxF
bEJRVWtzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhGUVVG
RkxFVkJRVVVzUjBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN2FVSkJRMnBF
TzBGQlEwUXNkVUpCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNS
VUZCUXl4RlFVRkZMRU5CUVVNc1NVRkJSU3hKUVVGSkxFTkJRVU1zVFVGQlRTeEhRVUZITEVWQlFV
VXNSMEZCUnl4TFFVRkxMRWRCUVVNc1JVRkJSU3hEUVVGQkxFTkJRVU1zUTBGQlJTeFBRVUZQTEVO
QlFVTXNTMEZCU3l4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRE8yRkJReTlGTzBGQlEwd3NkMEpC
UVZrc1JVRkJReXgzUWtGQldUdEJRVU5xUWl4dlFrRkJTU3hIUVVGSExFZEJRVWNzU1VGQlNTeERR
VUZETEZOQlFWTXNSVUZCUlN4RFFVRkRPMEZCUXpOQ0xHOUNRVUZKTEVOQlFVTXNSMEZCUnl4SlFV
RkpMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4
RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dEJRVU0xUXl4MVFrRkJUeXhI
UVVGSExFZEJRVWNzU1VGQlNTeERRVUZETEdGQlFXRXNSVUZCUlN4SFFVRkhMRWxCUVVrc1IwRkJS
eXhEUVVGRExFZEJRVU1zUjBGQlJ5eERRVUZETzJGQlEzQkVPMEZCUTB3c1owSkJRVWtzUlVGQlF5
eG5Ra0ZCV1R0QlFVTlVMRzlDUVVGSkxFbEJRVWtzUTBGQlF5eEpRVUZKTEVWQlFVVTdRVUZEV0N3
eVFrRkJUeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETzJsQ1FVTnVRanRCUVVORUxHOUNRVUZK
TEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1JVRkJSU3hKUVVGSkxFTkJRVU1zU1VGQlNTeEhR
VUZITEVsQlFVa3NRMEZCUXpzN1FVRkZia01zYjBKQlFVa3NTMEZCU3l4RlFVTk1MRXRCUVVzc1JV
RkRUQ3hUUVVGVExFVkJRMVFzUzBGQlN5eEZRVU5NTEVkQlFVY3NSVUZEU0N4TFFVRkxMRU5CUVVN
N1FVRkRWaXh2UWtGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRVZCUVVVN1FVRkRZaXgz
UWtGQlNTeERRVUZETEUxQlFVMHNSMEZCUnl4RlFVRkZMRU5CUVVNN1FVRkRha0lzZDBKQlFVa3NR
MEZCUXl4TFFVRkxMRWRCUVVjc1JVRkJSU3hEUVVGRE8ybENRVU51UWp0QlFVTkVMRzlDUVVGSkxF
dEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNZVUZCWVN4RlFVRkZMRU5CUVVNN1FVRkRha01zY1VK
QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUjBGQlJ5eExRVUZM
TEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRk8wRkJRMmhETERaQ1FVRlRM
RWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4RFFV
RkRMRXRCUVVzc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4
RFFVRkRPMEZCUTNCRUxIZENRVUZKTEZOQlFWTXNTMEZCU3l4RFFVRkRMRXRCUVVzc1NVRkJTU3hU
UVVGVExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNUVUZCVFN4SFFVRkhMRXRCUVVzc1EwRkJR
eXhEUVVGRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVRXNRVUZCUXl4RlFVRkZPMEZCUTJoRkxE
WkNRVUZMTEVkQlFVY3NVMEZCVXl4RFFVRkRPMEZCUTJ4Q0xEWkNRVUZMTEVkQlFVY3NRMEZCUXl4
RFFVRkRPMEZCUTFZc05FSkJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWxC
UVVrc1JVRkJSU3hOUVVGTk8zRkNRVU5xUXp0cFFrRkRTanRCUVVORUxHOUNRVUZKTEV0QlFVc3NS
VUZCUlR0QlFVTlFMSGxDUVVGTExFZEJRVWNzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFV
RkRMRXRCUVVzc1EwRkJReXhwUWtGQmFVSXNRMEZCUXl4RFFVRkRPMEZCUXpGRExIZENRVUZKTEV0
QlFVc3NSVUZCUlN4SlFVRkpMRU5CUVVNc1VVRkJVU3hKUVVGSkxFdEJRVXNzUTBGQlF5eE5RVUZO
TEVOQlFVTTdRVUZEZWtNc2QwSkJRVWtzUTBGQlF5eE5RVUZOTEVkQlFVY3NSVUZCUXl4VlFVRlZM
RVZCUVVVc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFRRVUZUTzBGQlEycERMR2xEUVVGVExF
VkJRVVVzU1VGQlNTeERRVUZETEZGQlFWRXNSMEZCUXl4RFFVRkRPMEZCUXpGQ0xHOURRVUZaTEVW
QlFVVXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhYUVVGWE8wRkJRM0pETEcxRFFVRlhMRVZC
UVVVc1MwRkJTeXhIUVVGSExFdEJRVXNzUTBGQlF5eExRVUZMTEVOQlFVTXNUVUZCVFN4SFFVRkRM
RU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUjBGQlF5eExRVUZMTEVOQlFVTXNTMEZCU3l4RFFV
RkRMRTFCUVUwc1IwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eExRVUZMTEVOQlFVTXNVVUZCVVN4
RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeEhRVUZITEVsQlFVa3NRMEZC
UXl4TlFVRk5MRU5CUVVNc1YwRkJWeXhIUVVGSExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNR
MEZCUXl4TlFVRk5MRVZCUVVNc1EwRkJRenRCUVVNNVNpeDNRa0ZCU1N4RFFVRkRMRTFCUVUwc1NV
RkJTU3hMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdRVUZEZUVJc2QwSkJRVWtzUTBG
QlF5eExRVUZMTEVsQlFVa3NTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJRM1pD
TEhkQ1FVRkpMRU5CUVVNc1QwRkJUeXhIUVVGSExFdEJRVXNzUTBGQlF6dEJRVU55UWl4M1FrRkJT
U3hEUVVGRExFMUJRVTBzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRTFCUVUwc1Ew
RkJRenRCUVVOcVF5eDNRa0ZCU1N4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFMUJRVTBzUlVG
QlJUdEJRVU55UWl3MFFrRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eExRVUZMTEVkQlFVY3NRMEZC
UXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVsQlFVa3NT
VUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8zRkNRVU5xUlR0QlFVTkVMSGRDUVVGSkxF
TkJRVU1zUzBGQlN5eEhRVUZITEV0QlFVc3NRMEZCUXp0QlFVTnVRaXgzUWtGQlNTeERRVUZETEUx
QlFVMHNSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFdEJRVXNzUTBGQlF5eExRVUZM
TEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03UVVGRGFrUXNk
MEpCUVVrc1EwRkJReXhQUVVGUExFbEJRVWtzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFV
RkRPMEZCUTNwQ0xIbENRVUZMTEVkQlFVY3NTVUZCU1N4RFFVRkRMR0ZCUVdFc1EwRkJReXhKUVVG
SkxFTkJRVU1zU1VGQlNTeEZRVUZGTEVsQlFVa3NRMEZCUXl4RlFVRkZMRVZCUVVVc1NVRkJTU3hG
UVVGRkxFdEJRVXNzUTBGQlF5eExRVUZMTEVOQlFVTXNSVUZCUXl4SlFVRkpMRU5CUVVNc1kwRkJZ
eXhEUVVGRExFbEJRVWtzUTBGQlF5eGpRVUZqTEVOQlFVTXNUVUZCVFN4SFFVRkRMRU5CUVVNc1Ew
RkJReXhEUVVGRExFTkJRVU03UVVGRGNrZ3NkMEpCUVVrc1NVRkJTU3hEUVVGRExFbEJRVWtzU1VG
QlNTeEpRVUZKTEVOQlFVTXNUVUZCVFN4RlFVRkZMRWxCUVVrc1EwRkJReXhKUVVGSkxFZEJRVWNz
UzBGQlN5eERRVUZETzBGQlEyaEVMSGRDUVVGSkxFdEJRVXNzUlVGQlJTeFBRVUZQTEV0QlFVc3NR
MEZCUXl4TFFVTnVRaXhQUVVGUE8ybENRVU5tTzBGQlEwUXNiMEpCUVVrc1NVRkJTU3hEUVVGRExF
MUJRVTBzUzBGQlN5eEZRVUZGTEVWQlFVVTdRVUZEY0VJc01rSkJRVThzU1VGQlNTeERRVUZETEVk
QlFVY3NRMEZCUXp0cFFrRkRia0lzVFVGQlRUdEJRVU5JTERKQ1FVRlBMRWxCUVVrc1EwRkJReXhW
UVVGVkxFTkJRVU1zZDBKQlFYZENMRWxCUVVVc1NVRkJTU3hEUVVGRExGRkJRVkVzUjBGQlF5eERR
VUZETEVOQlFVRXNRVUZCUXl4SFFVRkRMSGRDUVVGM1FpeEhRVUZETEVsQlFVa3NRMEZCUXl4WlFV
RlpMRVZCUVVVc1JVRkRkRWNzUlVGQlF5eEpRVUZKTEVWQlFVVXNSVUZCUlN4RlFVRkZMRXRCUVVz
c1JVRkJSU3hKUVVGSkxFVkJRVVVzU1VGQlNTeEZRVUZGTEVsQlFVa3NRMEZCUXl4UlFVRlJMRVZC
UVVNc1EwRkJReXhEUVVGRE8ybENRVU42UkR0aFFVTktPMEZCUTB3c1pVRkJSeXhGUVVGRExGTkJR
Vk1zUjBGQlJ5eEhRVUZITzBGQlExZ3NiMEpCUVVrc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5
eEpRVUZKTEVWQlFVVXNRMEZCUXp0QlFVTndRaXh2UWtGQlNTeFBRVUZQTEVOQlFVTXNTMEZCU3l4
WFFVRlhMRVZCUVVVN1FVRkRNVUlzTWtKQlFVOHNRMEZCUXl4RFFVRkRPMmxDUVVOYUxFMUJRVTA3
UVVGRFNDd3lRa0ZCVHl4SlFVRkpMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU03YVVKQlEzSkNP
MkZCUTBvN1FVRkRUQ3hwUWtGQlN5eEZRVUZETEZOQlFWTXNTMEZCU3l4RFFVRkRMRk5CUVZNc1JV
RkJSVHRCUVVONFFpeHZRa0ZCU1N4RFFVRkRMR05CUVdNc1EwRkJReXhKUVVGSkxFTkJRVU1zVTBG
QlV5eERRVUZETEVOQlFVTTdZVUZEZGtNN1FVRkRUQ3h2UWtGQlVTeEZRVUZETEZOQlFWTXNVVUZC
VVN4SFFVRkhPMEZCUTNKQ0xIVkNRVUZQTEVsQlFVa3NRMEZCUXl4alFVRmpMRU5CUVVNc1IwRkJS
eXhGUVVGRkxFTkJRVU03WVVGRGNFTTdRVUZEVEN4NVFrRkJZU3hGUVVGRExGTkJRVk1zWVVGQllT
eEhRVUZITzBGQlF5OUNMSFZDUVVGUExFbEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNTVUZCU1N4
RFFVRkRMR05CUVdNc1EwRkJReXhKUVVGSkxFTkJRVU1zWTBGQll5eERRVUZETEUxQlFVMHNSMEZC
UXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF6dGhRVU51Ump0QlFVTk1M
RzlDUVVGUkxFVkJRVU1zYjBKQlFWazdRVUZEWWl4MVFrRkJUeXhKUVVGSkxFTkJRVU1zWTBGQll5
eERRVUZETEVsQlFVa3NRMEZCUXl4alFVRmpMRU5CUVVNc1RVRkJUU3hIUVVGRExFTkJRVU1zUTBG
QlF5eERRVUZETzJGQlF6VkVPMEZCUTB3c2NVSkJRVk1zUlVGQlF5eFRRVUZUTEV0QlFVc3NRMEZC
UXl4VFFVRlRMRVZCUVVVN1FVRkROVUlzYjBKQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1UwRkJV
eXhEUVVGRExFTkJRVU03WVVGRGVrSXNSVUZCUXl4QlFVRkRMRU5CUVVNN1FVRkRVaXhoUVVGTExF
TkJRVU1zVDBGQlR5eEhRVUZITEVWQlFVVXNRMEZCUXp0QlFVTnVRaXhoUVVGTExFTkJRVU1zWVVG
QllTeEhRVUZITEZOQlFWTXNVMEZCVXl4RFFVRkRMRVZCUVVVc1JVRkJReXhIUVVGSExFVkJRVU1z
ZVVKQlFYbENMRVZCUVVNc1VVRkJVVHRqUVVNMVJUczdRVUZIVGl4eFFrRkJVeXhMUVVGTExFTkJR
VU1zUzBGQlN5eEZRVUZGTEVkQlFVY3NSVUZCUlR0QlFVTjZRaXgxUWtGQlR5eEhRVUZITEVOQlFV
TXNUVUZCVFN4SFFVRkhMRWRCUVVjc1EwRkJReXhOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEV0
QlFVc3NSVUZCUlN4SFFVRkhMRU5CUVVNc1RVRkJUU3hIUVVGRExFZEJRVWNzUTBGQlF5eERRVUZE
TzJGQlF6bEVPenRCUVVkRUxHZENRVUZKTEU5QlFVOHNSMEZCUXl4UlFVRlJMRU5CUVVFN1FVRkRj
RUlzYjBKQlFVOHNlVUpCUVhsQ08wRkJRMmhETEhGQ1FVRkxMRU5CUVVNN1FVRkROa0lzZDBKQlFV
Y3NSMEZCUnl4RFFVRkRMRTFCUVUwc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVO
QlFVTXNTMEZCU3l4TlFVRk5MRVZCUVVVN1FVRkRiRU1zTmtKQlFVc3NRMEZCUXl4RFFVRkRMRVZC
UVVNc1EwRkJReXhEUVVGRExFTkJRVU03UVVGRFdDdzBRa0ZCU1N4RFFVRkRMRXRCUVVzc1EwRkJR
eXhKUVVGSkxFTkJRVU1zUTBGQlF6dHhRa0ZEYkVJc1RVRkJUU3hKUVVGSExFZEJRVWNzUTBGQlF5
eE5RVUZOTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzU1VG
QlNTeEZRVUZGTzBGQlEzWkRMRFpDUVVGTExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZC
UXl4RFFVRkRPMEZCUTFnc05FSkJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNTMEZCU3l4RFFVRkRM
RU5CUVVNN2NVSkJRMjVDTEUxQlFVMDdRVUZEVEN3MFFrRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5
eEpRVUZKTEVOQlFVTXNRMEZCUXp0eFFrRkRiRUk3UVVGRFJDeDNRa0ZCUnl4SFFVRkhMRU5CUVVN
c1RVRkJUU3hGUVVGRkxFOUJRVThzUlVGQlJTeERRVUZET3p0QlFVVTFSQ3d3UWtGQlRUdEJRVUZC
TEVGQlEwNHNjVUpCUVVzc1EwRkJRenRCUVVGRExESkNRVUZQTEVWQlFVVXNRMEZCUXp0QlFVTnFR
aXd3UWtGQlRUdEJRVUZCTEVGQlEwNHNjVUpCUVVzc1EwRkJRenRCUVVNMlFpeDNRa0ZCU1N4RFFV
RkRMRkZCUVZFc1JVRkJSU3hEUVVGRE8wRkJRMmhDTERKQ1FVRlBMRVZCUVVVc1EwRkJRenM3UVVG
Rk4wTXNNRUpCUVUwN1FVRkJRU3hCUVVOT0xIRkNRVUZMTEVOQlFVTTdRVUZCUXl4M1FrRkJTU3hE
UVVGRExFdEJRVXNzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4QlFVRkRMRTlCUVU4c1JVRkJS
U3hEUVVGRE8wRkJRM0JETERCQ1FVRk5PMEZCUVVFc1FVRkRUaXh4UWtGQlN5eERRVUZETzBGQlF6
UkNMSGRDUVVGSkxFTkJRVU1zVVVGQlVTeEZRVUZGTEVOQlFVTTdPenM3UVVGSmFFSXNkMEpCUVVr
c1NVRkJTU3hEUVVGRExHTkJRV01zUTBGQlF5eEpRVUZKTEVOQlFVTXNZMEZCWXl4RFFVRkRMRTFC
UVUwc1IwRkJReXhEUVVGRExFTkJRVU1zUzBGQlN5eExRVUZMTEVWQlFVVTdRVUZETDBRc0swSkJR
VThzUlVGQlJTeERRVUZETzNGQ1FVTllMRTFCUVUwN1FVRkRUQ3d5UWtGQlJ5eERRVUZETEUxQlFV
MHNSMEZCUnl4SFFVRkhMRU5CUVVNc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVW
QlFVVXNSMEZCUnl4RFFVRkRMRTFCUVUwc1IwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU5v
UkN3clFrRkJUeXhsUVVGbExFTkJRVU03Y1VKQlEzaENPenRCUVVWdVF5d3dRa0ZCVFR0QlFVRkJM
RUZCUTA0c2NVSkJRVXNzUTBGQlF6dEJRVUZGTERKQ1FVRlBMRVZCUVVVc1EwRkJRenRCUVVOc1Fp
d3dRa0ZCVFR0QlFVRkJMRUZCUTA0c2NVSkJRVXNzUTBGQlF6dEJRVU5LTEhkQ1FVRkpMRU5CUVVN
c1VVRkJVU3hGUVVGRkxFTkJRVU03UVVGRGFFSXNNa0pCUVU4c1JVRkJSU3hEUVVGRE96dEJRVVZh
TERCQ1FVRk5PMEZCUVVFc1FVRkRUaXh4UWtGQlN5eERRVUZETzBGQlFVTXNNa0pCUVU4c1JVRkJS
U3hEUVVGRE8wRkJRMnBDTERCQ1FVRk5PMEZCUVVFc1FVRkRUaXh4UWtGQlN5eERRVUZETzBGQlFV
TXNNa0pCUVU4c1JVRkJSU3hEUVVGRE8wRkJRMnBDTERCQ1FVRk5PMEZCUVVFc1FVRkRUaXh4UWtG
QlN5eERRVUZETzBGQlFVVXNNa0pCUVU4c1JVRkJSU3hEUVVGRE8wRkJRMnhDTERCQ1FVRk5PMEZC
UVVFc1FVRkRUaXh4UWtGQlN5eEZRVUZGTzBGQlF6SkNMSGRDUVVGSkxFTkJRVU1zVVVGQlVTeEZR
VUZGTEVOQlFVTTdRVUZEYUVJc2QwSkJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNTMEZCU3l4RFFV
RkRMRU5CUVVNN1FVRkRiRUlzTWtKQlFVOHNSVUZCUlN4RFFVRkRPenRCUVVVMVF5d3dRa0ZCVFR0
QlFVRkJMRUZCUTA0c2NVSkJRVXNzUlVGQlJUdEJRVUZETERKQ1FVRlBMRVZCUVVVc1EwRkJRenRC
UVVOc1Fpd3dRa0ZCVFR0QlFVRkJMRUZCUTA0c2NVSkJRVXNzUlVGQlJUdEJRVUZETERKQ1FVRlBM
RVZCUVVVc1EwRkJRenRCUVVOc1Fpd3dRa0ZCVFR0QlFVRkJMRUZCUTA0c2NVSkJRVXNzUlVGQlJU
dEJRVUZETERKQ1FVRlBMRVZCUVVVc1EwRkJRenRCUVVOc1Fpd3dRa0ZCVFR0QlFVRkJMRUZCUTA0
c2NVSkJRVXNzUlVGQlJUdEJRVUZETERKQ1FVRlBMRVZCUVVVc1EwRkJRenRCUVVOc1Fpd3dRa0ZC
VFR0QlFVRkJMRUZCUTA0c2NVSkJRVXNzUlVGQlJUdEJRVUZETEhkQ1FVRkpMRU5CUVVNc1VVRkJV
U3hGUVVGRkxFTkJRVU1zUVVGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXp0QlFVTnVReXd3UWtGQlRU
dEJRVUZCTEVGQlEwNHNjVUpCUVVzc1JVRkJSVHRCUVVGRExIZENRVUZKTEVOQlFVTXNVVUZCVVN4
RlFVRkZMRU5CUVVNc1FVRkJReXhQUVVGUExFVkJRVVVzUTBGQlF6dEJRVU51UXl3d1FrRkJUVHRC
UVVGQkxFRkJRMDRzY1VKQlFVc3NSVUZCUlR0QlFVRkRMREpDUVVGUExFVkJRVVVzUTBGQlF6dEJR
VU5zUWl3d1FrRkJUVHRCUVVGQkxFRkJRMDRzY1VKQlFVc3NSVUZCUlR0QlFVRkRMREpDUVVGUExF
VkJRVVVzUTBGQlF6dEJRVU5zUWl3d1FrRkJUVHRCUVVGQkxFRkJRMDRzY1VKQlFVc3NSVUZCUlR0
QlFVRkRMREpDUVVGUExFVkJRVVVzUTBGQlF6dEJRVU5zUWl3d1FrRkJUVHRCUVVGQkxFRkJRMDRz
Y1VKQlFVc3NSVUZCUlR0QlFVRkRMREpDUVVGUExFVkJRVVVzUTBGQlF6dEJRVU5zUWl3d1FrRkJU
VHRCUVVGQkxFRkJRMDRzY1VKQlFVc3NSVUZCUlR0QlFVTk1MSGRDUVVGSkxFTkJRVU1zUzBGQlN5
eERRVUZETEVkQlFVY3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRCUVVOMlFpeDNRa0ZCU1N4
RFFVRkRMRkZCUVZFc1JVRkJSU3hEUVVGRE8wRkJRMmhDTEhkQ1FVRkpMRU5CUVVNc1MwRkJTeXhE
UVVGRExFdEJRVXNzUTBGQlF5eERRVUZET3p0QlFVVndRaXd3UWtGQlRUdEJRVUZCTEVGQlEwNHNj
VUpCUVVzc1JVRkJSVHRCUVVOTUxIZENRVUZKTEVOQlFVTXNVVUZCVVN4RlFVRkZMRU5CUVVNN1FV
RkRhRUlzTWtKQlFVOHNSVUZCUlN4RFFVRkRPenRCUVVWYUxEQkNRVUZOTzBGQlFVRXNRVUZEVGl4
eFFrRkJTeXhGUVVGRk8wRkJRVU1zTWtKQlFVOHNSVUZCUlN4RFFVRkRPMEZCUTJ4Q0xEQkNRVUZO
TzBGQlFVRXNRVUZEVGl4eFFrRkJTeXhGUVVGRk8wRkJRVU1zTWtKQlFVOHNSVUZCUlN4RFFVRkRP
MEZCUTJ4Q0xEQkNRVUZOTzBGQlFVRXNRVUZEVGl4eFFrRkJTeXhGUVVGRk8wRkJRVU1zTWtKQlFV
OHNSVUZCUlN4RFFVRkRPMEZCUTJ4Q0xEQkNRVUZOTzBGQlFVRXNRVUZEVGl4eFFrRkJTeXhGUVVG
Rk8wRkJRVU1zTWtKQlFVOHNSVUZCUlN4RFFVRkRPMEZCUTJ4Q0xEQkNRVUZOTzBGQlFVRXNRVUZE
VGl4eFFrRkJTeXhGUVVGRk8wRkJRVU1zTWtKQlFVOHNSVUZCUlN4RFFVRkRPMEZCUTJ4Q0xEQkNR
VUZOTzBGQlFVRXNRVUZEVGl4eFFrRkJTeXhGUVVGRk96dEJRVU5RTERCQ1FVRk5PMEZCUVVFc1FV
RkRUaXh4UWtGQlN5eEZRVUZGTzBGQlFVTXNkMEpCUVVrc1EwRkJReXhSUVVGUkxFVkJRVVVzUTBG
QlF5eEJRVUZETEU5QlFVOHNSVUZCUlN4RFFVRkRPMEZCUTI1RExEQkNRVUZOTzBGQlFVRXNRVUZE
VGl4eFFrRkJTeXhGUVVGRk8wRkJRVU1zZDBKQlFVa3NRMEZCUXl4UlFVRlJMRVZCUVVVc1EwRkJR
eXhCUVVGRExFOUJRVThzUlVGQlJTeERRVUZETzBGQlEyNURMREJDUVVGTk8wRkJRVUVzUVVGRFRp
eHhRa0ZCU3l4RlFVRkZPMEZCUVVNc2RVSkJRVWNzUTBGQlF5eE5RVUZOTEVkQlFVY3NTMEZCU3l4
RFFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eFBRVUZQTEVOQlFVTXNUVUZC
VFN4RlFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFRkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTTdR
VUZETDBRc01FSkJRVTA3UVVGQlFTeEJRVU5PTEhGQ1FVRkxMRVZCUVVVN1FVRkJReXgxUWtGQlJ5
eERRVUZETEUxQlFVMHNSMEZCUnl4TFFVRkxMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBG
QlF5eERRVUZETEU5QlFVOHNRMEZCUXl4TlFVRk5MRVZCUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1z
UVVGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXp0QlFVTXZSQ3d3UWtGQlRUdEJRVUZCTEVGQlEwNHNj
VUpCUVVzc1JVRkJSVHRCUVVGRExESkNRVUZQTEVWQlFVVXNRMEZCUXp0QlFVTnNRaXd3UWtGQlRU
dEJRVUZCTEVGQlEwNHNjVUpCUVVzc1JVRkJSVHRCUVVGRExESkNRVUZQTEVWQlFVVXNRMEZCUXp0
QlFVTnNRaXd3UWtGQlRUdEJRVUZCTEVGQlEwNHNjVUpCUVVzc1JVRkJSVHRCUVVGRExESkNRVUZQ
TEVWQlFVVXNRMEZCUXp0QlFVTnNRaXd3UWtGQlRUdEJRVUZCTEVGQlEwNHNjVUpCUVVzc1JVRkJS
VHRCUVVGRExESkNRVUZQTEVWQlFVVXNRMEZCUXp0QlFVTnNRaXd3UWtGQlRUdEJRVUZCTEVGQlEw
NHNjVUpCUVVzc1JVRkJSVHRCUVVGRExESkNRVUZQTEVWQlFVVXNRMEZCUXp0QlFVTnNRaXd3UWtG
QlRUdEJRVUZCTEVGQlEwNHNjVUpCUVVzc1JVRkJSVHRCUVVGRExESkNRVUZQTEVWQlFVVXNRMEZC
UXp0QlFVTnNRaXd3UWtGQlRUdEJRVUZCTEVGQlEwNHNjVUpCUVVzc1JVRkJSVHRCUVVGRExESkNR
VUZQTEVWQlFVVXNRMEZCUXp0QlFVTnNRaXd3UWtGQlRUdEJRVUZCTEVGQlEwNHNjVUpCUVVzc1JV
RkJSVHRCUVVGRExESkNRVUZQTEVWQlFVVXNRMEZCUXp0QlFVTnNRaXd3UWtGQlRUdEJRVUZCTEVG
QlEwNHNjVUpCUVVzc1JVRkJSVHRCUVVGRExESkNRVUZQTEVWQlFVVXNRMEZCUXp0QlFVTnNRaXd3
UWtGQlRUdEJRVUZCTEVGQlEwNHNjVUpCUVVzc1JVRkJSVHRCUVVGRExIVkNRVUZITEVOQlFVTXNU
VUZCVFN4SFFVRkhMRWRCUVVjc1EwRkJReXhOUVVGTkxFTkJRVU1zVDBGQlR5eERRVUZETEdGQlFX
RXNSVUZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhCUVVGRExFOUJRVThzUlVGQlJTeERRVUZETzBG
QlEzWkZMREJDUVVGTk8wRkJRVUVzUVVGRFRpeHhRa0ZCU3l4RlFVRkZPMEZCUVVNc01rSkJRVThz
VTBGQlV5eERRVUZETzBGQlEzcENMREJDUVVGTk8wRkJRVUVzUVVGRFRpeHhRa0ZCU3l4RlFVRkZP
MEZCUVVNc01rSkJRVThzUTBGQlF5eERRVUZETzBGQlEycENMREJDUVVGTk8wRkJRVUVzWVVGRFRE
dFRRVU5CTEVOQlFVTTdRVUZEUml4aFFVRkxMRU5CUVVNc1MwRkJTeXhIUVVGSExFTkJRVU1zTUVK
QlFUQkNMRVZCUVVNc1pVRkJaU3hGUVVGRExDdERRVUVyUXl4RlFVRkRMSGRDUVVGM1FpeEZRVUZE
TEc5RlFVRnZSU3hGUVVGRExEaENRVUU0UWl4RlFVRkRMSGxDUVVGNVFpeEZRVUZETEZOQlFWTXNS
VUZCUXl4VFFVRlRMRVZCUVVNc1pVRkJaU3hGUVVGRExHVkJRV1VzUlVGQlF5eG5Ra0ZCWjBJc1JV
RkJReXhwUWtGQmFVSXNSVUZCUXl4dFFrRkJiVUlzUlVGQlF5eHBRa0ZCYVVJc1JVRkJReXcwUWtG
Qk5FSXNSVUZCUXl4cFEwRkJhVU1zUlVGQlF5eHBRa0ZCYVVJc1JVRkJReXgzUWtGQmQwSXNSVUZC
UXl4cFFrRkJhVUlzUlVGQlF5eG5Ra0ZCWjBJc1JVRkJReXhyUWtGQmEwSXNSVUZCUXl3MFFrRkJO
RUlzUlVGQlF5eHJRa0ZCYTBJc1JVRkJReXhSUVVGUkxFVkJRVU1zVjBGQlZ5eEZRVUZETERKQ1FV
RXlRaXhGUVVGRExGbEJRVmtzUlVGQlF5eFZRVUZWTEVWQlFVTXNhVUpCUVdsQ0xFVkJRVU1zWlVG
QlpTeEZRVUZETEhOQ1FVRnpRaXhGUVVGRExITkNRVUZ6UWl4RlFVRkRMRkZCUVZFc1JVRkJReXgz
UWtGQmQwSXNSVUZCUXl4NVFrRkJlVUlzUlVGQlF5dzJRa0ZCTmtJc1JVRkJReXgzUWtGQmQwSXNS
VUZCUXl4NVEwRkJlVU1zUlVGQlF5eGpRVUZqTEVWQlFVTXNVMEZCVXl4RlFVRkRMSGxFUVVGNVJD
eEZRVUZETEhkQ1FVRjNRaXhGUVVGRExGRkJRVkVzUlVGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXp0
QlFVTnVaME1zWVVGQlN5eERRVUZETEZWQlFWVXNSMEZCUnl4RlFVRkRMRWxCUVVrc1JVRkJReXhG
UVVGRExFOUJRVThzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRVZCUVVNc1EwRkJR
eXhGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JV
RkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVN
c1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZC
UVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZM
RVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFV
RkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4
RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZC
UlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNS
VUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhYUVVGWExFVkJRVU1zUzBGQlN5eEZRVUZETEVWQlFV
TXNTMEZCU3l4RlFVRkRMRVZCUVVNc1QwRkJUeXhGUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVW
QlFVTXNWMEZCVnl4RlFVRkRMRXRCUVVzc1JVRkJReXhGUVVGRExFdEJRVXNzUlVGQlF5eEZRVUZE
TEU5QlFVOHNSVUZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExGZEJRVmNzUlVGQlF5eExR
VUZMTEVWQlFVTXNSVUZCUXl4TFFVRkxMRVZCUVVNc1JVRkJReXhQUVVGUExFVkJRVU1zUTBGQlF5
eERRVUZETEVWQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExGZEJRVmNzUlVG
QlF5eExRVUZMTEVWQlFVTXNSVUZCUXl4VFFVRlRMRVZCUVVNc1JVRkJReXhQUVVGUExFVkJRVU1z
UTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExGZEJR
VmNzUlVGQlF5eEpRVUZKTEVWQlFVTXNSVUZCUXl4RFFVRkRPMEZCUXpOVkxHVkJRVThzUzBGQlN5
eERRVUZETzB0QlFVTXNRMEZCUVN4RlFVRkhMRU5CUVVFN1FVRkRha0lzVlVGQlRTeERRVUZETEV0
QlFVc3NSMEZCUnl4TFFVRkxMRU5CUVVNN1FVRkRja0lzWVVGQlV5eE5RVUZOTEVkQlFVazdRVUZC
UlN4WlFVRkpMRU5CUVVNc1JVRkJSU3hIUVVGSExFVkJRVVVzUTBGQlF6dExRVUZGTEUxQlFVMHNR
MEZCUXl4VFFVRlRMRWRCUVVjc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF5eE5RVUZOTEVkQlFV
Y3NUVUZCVFN4RFFVRkRPMEZCUTNKR0xGZEJRVThzU1VGQlNTeE5RVUZOTEVWQlFVRXNRMEZCUXp0
RFFVTnFRaXhEUVVGQkxFVkJRVWNzUTBGQlF5eFBRVUZQTEVOQlFVTXNWVUZCVlN4SFFVRkhMRWxC
UVVrc1EwRkJRenRCUVVNdlFpeFBRVUZQTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWRCUVVjc1ZVRkJW
U3hEUVVGRElpd2labWxzWlNJNkluQmhjbk5sY2k1cWN5SXNJbk52ZFhKalpYTkRiMjUwWlc1MElq
cGJJaThxSUdsemRHRnVZblZzSUdsbmJtOXlaU0J1WlhoMElDb3ZYRzR2S2lCS2FYTnZiaUJuWlc1
bGNtRjBaV1FnY0dGeWMyVnlJQ292WEc1MllYSWdhR0Z1Wkd4bFltRnljeUE5SUNobWRXNWpkR2x2
YmlncGUxeHVkbUZ5SUhCaGNuTmxjaUE5SUh0MGNtRmpaVG9nWm5WdVkzUnBiMjRnZEhKaFkyVW9L
U0I3SUgwc1hHNTVlVG9nZTMwc1hHNXplVzFpYjJ4elh6b2dlMXdpWlhKeWIzSmNJam95TEZ3aWNt
OXZkRndpT2pNc1hDSndjbTluY21GdFhDSTZOQ3hjSWtWUFJsd2lPalVzWENKd2NtOW5jbUZ0WDNK
bGNHVjBhWFJwYjI0d1hDSTZOaXhjSW5OMFlYUmxiV1Z1ZEZ3aU9qY3NYQ0p0ZFhOMFlXTm9aVndp
T2pnc1hDSmliRzlqYTF3aU9qa3NYQ0p5WVhkQ2JHOWphMXdpT2pFd0xGd2ljR0Z5ZEdsaGJGd2lP
akV4TEZ3aWNHRnlkR2xoYkVKc2IyTnJYQ0k2TVRJc1hDSmpiMjUwWlc1MFhDSTZNVE1zWENKRFQw
MU5SVTVVWENJNk1UUXNYQ0pEVDA1VVJVNVVYQ0k2TVRVc1hDSnZjR1Z1VW1GM1FteHZZMnRjSWpv
eE5peGNJbkpoZDBKc2IyTnJYM0psY0dWMGFYUnBiMjVmY0d4MWN6QmNJam94Tnl4Y0lrVk9SRjlT
UVZkZlFreFBRMHRjSWpveE9DeGNJazlRUlU1ZlVrRlhYMEpNVDBOTFhDSTZNVGtzWENKb1pXeHda
WEpPWVcxbFhDSTZNakFzWENKdmNHVnVVbUYzUW14dlkydGZjbVZ3WlhScGRHbHZiakJjSWpveU1T
eGNJbTl3Wlc1U1lYZENiRzlqYTE5dmNIUnBiMjR3WENJNk1qSXNYQ0pEVEU5VFJWOVNRVmRmUWt4
UFEwdGNJam95TXl4Y0ltOXdaVzVDYkc5amExd2lPakkwTEZ3aVlteHZZMnRmYjNCMGFXOXVNRndp
T2pJMUxGd2lZMnh2YzJWQ2JHOWphMXdpT2pJMkxGd2liM0JsYmtsdWRtVnljMlZjSWpveU55eGNJ
bUpzYjJOclgyOXdkR2x2YmpGY0lqb3lPQ3hjSWs5UVJVNWZRa3hQUTB0Y0lqb3lPU3hjSW05d1pX
NUNiRzlqYTE5eVpYQmxkR2wwYVc5dU1Gd2lPak13TEZ3aWIzQmxia0pzYjJOclgyOXdkR2x2YmpC
Y0lqb3pNU3hjSW05d1pXNUNiRzlqYTE5dmNIUnBiMjR4WENJNk16SXNYQ0pEVEU5VFJWd2lPak16
TEZ3aVQxQkZUbDlKVGxaRlVsTkZYQ0k2TXpRc1hDSnZjR1Z1U1c1MlpYSnpaVjl5WlhCbGRHbDBh
Vzl1TUZ3aU9qTTFMRndpYjNCbGJrbHVkbVZ5YzJWZmIzQjBhVzl1TUZ3aU9qTTJMRndpYjNCbGJr
bHVkbVZ5YzJWZmIzQjBhVzl1TVZ3aU9qTTNMRndpYjNCbGJrbHVkbVZ5YzJWRGFHRnBibHdpT2pN
NExGd2lUMUJGVGw5SlRsWkZVbE5GWDBOSVFVbE9YQ0k2TXprc1hDSnZjR1Z1U1c1MlpYSnpaVU5v
WVdsdVgzSmxjR1YwYVhScGIyNHdYQ0k2TkRBc1hDSnZjR1Z1U1c1MlpYSnpaVU5vWVdsdVgyOXdk
R2x2YmpCY0lqbzBNU3hjSW05d1pXNUpiblpsY25ObFEyaGhhVzVmYjNCMGFXOXVNVndpT2pReUxG
d2lhVzUyWlhKelpVRnVaRkJ5YjJkeVlXMWNJam8wTXl4Y0lrbE9Wa1ZTVTBWY0lqbzBOQ3hjSW1s
dWRtVnljMlZEYUdGcGJsd2lPalExTEZ3aWFXNTJaWEp6WlVOb1lXbHVYMjl3ZEdsdmJqQmNJam8w
Tml4Y0lrOVFSVTVmUlU1RVFreFBRMHRjSWpvME55eGNJazlRUlU1Y0lqbzBPQ3hjSW0xMWMzUmhZ
MmhsWDNKbGNHVjBhWFJwYjI0d1hDSTZORGtzWENKdGRYTjBZV05vWlY5dmNIUnBiMjR3WENJNk5U
QXNYQ0pQVUVWT1gxVk9SVk5EUVZCRlJGd2lPalV4TEZ3aWJYVnpkR0ZqYUdWZmNtVndaWFJwZEds
dmJqRmNJam8xTWl4Y0ltMTFjM1JoWTJobFgyOXdkR2x2YmpGY0lqbzFNeXhjSWtOTVQxTkZYMVZP
UlZORFFWQkZSRndpT2pVMExGd2lUMUJGVGw5UVFWSlVTVUZNWENJNk5UVXNYQ0p3WVhKMGFXRnNU
bUZ0WlZ3aU9qVTJMRndpY0dGeWRHbGhiRjl5WlhCbGRHbDBhVzl1TUZ3aU9qVTNMRndpY0dGeWRH
bGhiRjl2Y0hScGIyNHdYQ0k2TlRnc1hDSnZjR1Z1VUdGeWRHbGhiRUpzYjJOclhDSTZOVGtzWENK
UFVFVk9YMUJCVWxSSlFVeGZRa3hQUTB0Y0lqbzJNQ3hjSW05d1pXNVFZWEowYVdGc1FteHZZMnRm
Y21Wd1pYUnBkR2x2YmpCY0lqbzJNU3hjSW05d1pXNVFZWEowYVdGc1FteHZZMnRmYjNCMGFXOXVN
RndpT2pZeUxGd2ljR0Z5WVcxY0lqbzJNeXhjSW5ObGVIQnlYQ0k2TmpRc1hDSlBVRVZPWDFORldG
QlNYQ0k2TmpVc1hDSnpaWGh3Y2w5eVpYQmxkR2wwYVc5dU1Gd2lPalkyTEZ3aWMyVjRjSEpmYjNC
MGFXOXVNRndpT2pZM0xGd2lRMHhQVTBWZlUwVllVRkpjSWpvMk9DeGNJbWhoYzJoY0lqbzJPU3hj
SW1oaGMyaGZjbVZ3WlhScGRHbHZibDl3YkhWek1Gd2lPamN3TEZ3aWFHRnphRk5sWjIxbGJuUmNJ
am8zTVN4Y0lrbEVYQ0k2TnpJc1hDSkZVVlZCVEZOY0lqbzNNeXhjSW1Kc2IyTnJVR0Z5WVcxelhD
STZOelFzWENKUFVFVk9YMEpNVDBOTFgxQkJVa0ZOVTF3aU9qYzFMRndpWW14dlkydFFZWEpoYlhO
ZmNtVndaWFJwZEdsdmJsOXdiSFZ6TUZ3aU9qYzJMRndpUTB4UFUwVmZRa3hQUTB0ZlVFRlNRVTFU
WENJNk56Y3NYQ0p3WVhSb1hDSTZOemdzWENKa1lYUmhUbUZ0WlZ3aU9qYzVMRndpVTFSU1NVNUhY
Q0k2T0RBc1hDSk9WVTFDUlZKY0lqbzRNU3hjSWtKUFQweEZRVTVjSWpvNE1peGNJbFZPUkVWR1NV
NUZSRndpT2pnekxGd2lUbFZNVEZ3aU9qZzBMRndpUkVGVVFWd2lPamcxTEZ3aWNHRjBhRk5sWjIx
bGJuUnpYQ0k2T0RZc1hDSlRSVkJjSWpvNE55eGNJaVJoWTJObGNIUmNJam93TEZ3aUpHVnVaRndp
T2pGOUxGeHVkR1Z5YldsdVlXeHpYem9nZXpJNlhDSmxjbkp2Y2x3aUxEVTZYQ0pGVDBaY0lpd3hO
RHBjSWtOUFRVMUZUbFJjSWl3eE5UcGNJa05QVGxSRlRsUmNJaXd4T0RwY0lrVk9SRjlTUVZkZlFr
eFBRMHRjSWl3eE9UcGNJazlRUlU1ZlVrRlhYMEpNVDBOTFhDSXNNak02WENKRFRFOVRSVjlTUVZk
ZlFreFBRMHRjSWl3eU9UcGNJazlRUlU1ZlFreFBRMHRjSWl3ek16cGNJa05NVDFORlhDSXNNelE2
WENKUFVFVk9YMGxPVmtWU1UwVmNJaXd6T1RwY0lrOVFSVTVmU1U1V1JWSlRSVjlEU0VGSlRsd2lM
RFEwT2x3aVNVNVdSVkpUUlZ3aUxEUTNPbHdpVDFCRlRsOUZUa1JDVEU5RFMxd2lMRFE0T2x3aVQx
QkZUbHdpTERVeE9sd2lUMUJGVGw5VlRrVlRRMEZRUlVSY0lpdzFORHBjSWtOTVQxTkZYMVZPUlZO
RFFWQkZSRndpTERVMU9sd2lUMUJGVGw5UVFWSlVTVUZNWENJc05qQTZYQ0pQVUVWT1gxQkJVbFJK
UVV4ZlFreFBRMHRjSWl3Mk5UcGNJazlRUlU1ZlUwVllVRkpjSWl3Mk9EcGNJa05NVDFORlgxTkZX
RkJTWENJc056STZYQ0pKUkZ3aUxEY3pPbHdpUlZGVlFVeFRYQ0lzTnpVNlhDSlBVRVZPWDBKTVQw
TkxYMUJCVWtGTlUxd2lMRGMzT2x3aVEweFBVMFZmUWt4UFEwdGZVRUZTUVUxVFhDSXNPREE2WENK
VFZGSkpUa2RjSWl3NE1UcGNJazVWVFVKRlVsd2lMRGd5T2x3aVFrOVBURVZCVGx3aUxEZ3pPbHdp
VlU1RVJVWkpUa1ZFWENJc09EUTZYQ0pPVlV4TVhDSXNPRFU2WENKRVFWUkJYQ0lzT0RjNlhDSlRS
VkJjSW4wc1hHNXdjbTlrZFdOMGFXOXVjMTg2SUZzd0xGc3pMREpkTEZzMExERmRMRnMzTERGZExG
czNMREZkTEZzM0xERmRMRnMzTERGZExGczNMREZkTEZzM0xERmRMRnMzTERGZExGc3hNeXd4WFN4
Yk1UQXNNMTBzV3pFMkxEVmRMRnM1TERSZExGczVMRFJkTEZzeU5DdzJYU3hiTWpjc05sMHNXek00
TERaZExGczBNeXd5WFN4Yk5EVXNNMTBzV3pRMUxERmRMRnN5Tml3elhTeGJPQ3cxWFN4Yk9DdzFY
U3hiTVRFc05WMHNXekV5TEROZExGczFPU3cxWFN4Yk5qTXNNVjBzV3pZekxERmRMRnMyTkN3MVhT
eGJOamtzTVYwc1d6Y3hMRE5kTEZzM05Dd3pYU3hiTWpBc01WMHNXekl3TERGZExGc3lNQ3d4WFN4
Yk1qQXNNVjBzV3pJd0xERmRMRnN5TUN3eFhTeGJNakFzTVYwc1d6VTJMREZkTEZzMU5pd3hYU3hi
Tnprc01sMHNXemM0TERGZExGczROaXd6WFN4Yk9EWXNNVjBzV3pZc01GMHNXellzTWwwc1d6RTNM
REZkTEZzeE55d3lYU3hiTWpFc01GMHNXekl4TERKZExGc3lNaXd3WFN4Yk1qSXNNVjBzV3pJMUxE
QmRMRnN5TlN3eFhTeGJNamdzTUYwc1d6STRMREZkTEZzek1Dd3dYU3hiTXpBc01sMHNXek14TERC
ZExGc3pNU3d4WFN4Yk16SXNNRjBzV3pNeUxERmRMRnN6TlN3d1hTeGJNelVzTWwwc1d6TTJMREJk
TEZzek5pd3hYU3hiTXpjc01GMHNXek0zTERGZExGczBNQ3d3WFN4Yk5EQXNNbDBzV3pReExEQmRM
RnMwTVN3eFhTeGJORElzTUYwc1d6UXlMREZkTEZzME5pd3dYU3hiTkRZc01WMHNXelE1TERCZExG
czBPU3d5WFN4Yk5UQXNNRjBzV3pVd0xERmRMRnMxTWl3d1hTeGJOVElzTWwwc1d6VXpMREJkTEZz
MU15d3hYU3hiTlRjc01GMHNXelUzTERKZExGczFPQ3d3WFN4Yk5UZ3NNVjBzV3pZeExEQmRMRnMy
TVN3eVhTeGJOaklzTUYwc1d6WXlMREZkTEZzMk5pd3dYU3hiTmpZc01sMHNXelkzTERCZExGczJO
eXd4WFN4Yk56QXNNVjBzV3pjd0xESmRMRnMzTml3eFhTeGJOellzTWwxZExGeHVjR1Z5Wm05eWJV
RmpkR2x2YmpvZ1puVnVZM1JwYjI0Z1lXNXZibmx0YjNWektIbDVkR1Y0ZEN4NWVXeGxibWNzZVhs
c2FXNWxibThzZVhrc2VYbHpkR0YwWlN3a0pDeGZKRnh1THlvcUx5a2dlMXh1WEc1MllYSWdKREFn
UFNBa0pDNXNaVzVuZEdnZ0xTQXhPMXh1YzNkcGRHTm9JQ2g1ZVhOMFlYUmxLU0I3WEc1allYTmxJ
REU2SUhKbGRIVnliaUFrSkZza01DMHhYVHNnWEc1aWNtVmhhenRjYm1OaGMyVWdNanAwYUdsekxp
UWdQU0I1ZVM1d2NtVndZWEpsVUhKdlozSmhiU2drSkZza01GMHBPMXh1WW5KbFlXczdYRzVqWVhO
bElETTZkR2hwY3k0a0lEMGdKQ1JiSkRCZE8xeHVZbkpsWVdzN1hHNWpZWE5sSURRNmRHaHBjeTRr
SUQwZ0pDUmJKREJkTzF4dVluSmxZV3M3WEc1allYTmxJRFU2ZEdocGN5NGtJRDBnSkNSYkpEQmRP
MXh1WW5KbFlXczdYRzVqWVhObElEWTZkR2hwY3k0a0lEMGdKQ1JiSkRCZE8xeHVZbkpsWVdzN1hH
NWpZWE5sSURjNmRHaHBjeTRrSUQwZ0pDUmJKREJkTzF4dVluSmxZV3M3WEc1allYTmxJRGc2ZEdo
cGN5NGtJRDBnSkNSYkpEQmRPMXh1WW5KbFlXczdYRzVqWVhObElEazZYRzRnSUNBZ2RHaHBjeTRr
SUQwZ2UxeHVJQ0FnSUNBZ2RIbHdaVG9nSjBOdmJXMWxiblJUZEdGMFpXMWxiblFuTEZ4dUlDQWdJ
Q0FnZG1Gc2RXVTZJSGw1TG5OMGNtbHdRMjl0YldWdWRDZ2tKRnNrTUYwcExGeHVJQ0FnSUNBZ2Mz
UnlhWEE2SUhsNUxuTjBjbWx3Um14aFozTW9KQ1JiSkRCZExDQWtKRnNrTUYwcExGeHVJQ0FnSUNB
Z2JHOWpPaUI1ZVM1c2IyTkpibVp2S0hSb2FYTXVYeVFwWEc0Z0lDQWdmVHRjYmlBZ1hHNWljbVZo
YXp0Y2JtTmhjMlVnTVRBNlhHNGdJQ0FnZEdocGN5NGtJRDBnZTF4dUlDQWdJQ0FnZEhsd1pUb2dK
ME52Ym5SbGJuUlRkR0YwWlcxbGJuUW5MRnh1SUNBZ0lDQWdiM0pwWjJsdVlXdzZJQ1FrV3lRd1hT
eGNiaUFnSUNBZ0lIWmhiSFZsT2lBa0pGc2tNRjBzWEc0Z0lDQWdJQ0JzYjJNNklIbDVMbXh2WTBs
dVptOG9kR2hwY3k1ZkpDbGNiaUFnSUNCOU8xeHVJQ0JjYm1KeVpXRnJPMXh1WTJGelpTQXhNVHAw
YUdsekxpUWdQU0I1ZVM1d2NtVndZWEpsVW1GM1FteHZZMnNvSkNSYkpEQXRNbDBzSUNRa1d5UXdM
VEZkTENBa0pGc2tNRjBzSUhSb2FYTXVYeVFwTzF4dVluSmxZV3M3WEc1allYTmxJREV5T25Sb2FY
TXVKQ0E5SUhzZ2NHRjBhRG9nSkNSYkpEQXRNMTBzSUhCaGNtRnRjem9nSkNSYkpEQXRNbDBzSUdo
aGMyZzZJQ1FrV3lRd0xURmRJSDA3WEc1aWNtVmhhenRjYm1OaGMyVWdNVE02ZEdocGN5NGtJRDBn
ZVhrdWNISmxjR0Z5WlVKc2IyTnJLQ1FrV3lRd0xUTmRMQ0FrSkZza01DMHlYU3dnSkNSYkpEQXRN
VjBzSUNRa1d5UXdYU3dnWm1Gc2MyVXNJSFJvYVhNdVh5UXBPMXh1WW5KbFlXczdYRzVqWVhObElE
RTBPblJvYVhNdUpDQTlJSGw1TG5CeVpYQmhjbVZDYkc5amF5Z2tKRnNrTUMwelhTd2dKQ1JiSkRB
dE1sMHNJQ1FrV3lRd0xURmRMQ0FrSkZza01GMHNJSFJ5ZFdVc0lIUm9hWE11WHlRcE8xeHVZbkps
WVdzN1hHNWpZWE5sSURFMU9uUm9hWE11SkNBOUlIc2diM0JsYmpvZ0pDUmJKREF0TlYwc0lIQmhk
R2c2SUNRa1d5UXdMVFJkTENCd1lYSmhiWE02SUNRa1d5UXdMVE5kTENCb1lYTm9PaUFrSkZza01D
MHlYU3dnWW14dlkydFFZWEpoYlhNNklDUWtXeVF3TFRGZExDQnpkSEpwY0RvZ2VYa3VjM1J5YVhC
R2JHRm5jeWdrSkZza01DMDFYU3dnSkNSYkpEQmRLU0I5TzF4dVluSmxZV3M3WEc1allYTmxJREUy
T25Sb2FYTXVKQ0E5SUhzZ2NHRjBhRG9nSkNSYkpEQXRORjBzSUhCaGNtRnRjem9nSkNSYkpEQXRN
MTBzSUdoaGMyZzZJQ1FrV3lRd0xUSmRMQ0JpYkc5amExQmhjbUZ0Y3pvZ0pDUmJKREF0TVYwc0lI
TjBjbWx3T2lCNWVTNXpkSEpwY0Vac1lXZHpLQ1FrV3lRd0xUVmRMQ0FrSkZza01GMHBJSDA3WEc1
aWNtVmhhenRjYm1OaGMyVWdNVGM2ZEdocGN5NGtJRDBnZXlCd1lYUm9PaUFrSkZza01DMDBYU3dn
Y0dGeVlXMXpPaUFrSkZza01DMHpYU3dnYUdGemFEb2dKQ1JiSkRBdE1sMHNJR0pzYjJOclVHRnlZ
VzF6T2lBa0pGc2tNQzB4WFN3Z2MzUnlhWEE2SUhsNUxuTjBjbWx3Um14aFozTW9KQ1JiSkRBdE5W
MHNJQ1FrV3lRd1hTa2dmVHRjYm1KeVpXRnJPMXh1WTJGelpTQXhPRHAwYUdsekxpUWdQU0I3SUhO
MGNtbHdPaUI1ZVM1emRISnBjRVpzWVdkektDUWtXeVF3TFRGZExDQWtKRnNrTUMweFhTa3NJSEJ5
YjJkeVlXMDZJQ1FrV3lRd1hTQjlPMXh1WW5KbFlXczdYRzVqWVhObElERTVPbHh1SUNBZ0lIWmhj
aUJwYm5abGNuTmxJRDBnZVhrdWNISmxjR0Z5WlVKc2IyTnJLQ1FrV3lRd0xUSmRMQ0FrSkZza01D
MHhYU3dnSkNSYkpEQmRMQ0FrSkZza01GMHNJR1poYkhObExDQjBhR2x6TGw4a0tTeGNiaUFnSUNB
Z0lDQWdjSEp2WjNKaGJTQTlJSGw1TG5CeVpYQmhjbVZRY205bmNtRnRLRnRwYm5abGNuTmxYU3dn
SkNSYkpEQXRNVjB1Ykc5aktUdGNiaUFnSUNCd2NtOW5jbUZ0TG1Ob1lXbHVaV1FnUFNCMGNuVmxP
MXh1WEc0Z0lDQWdkR2hwY3k0a0lEMGdleUJ6ZEhKcGNEb2dKQ1JiSkRBdE1sMHVjM1J5YVhBc0lI
QnliMmR5WVcwNklIQnliMmR5WVcwc0lHTm9ZV2x1T2lCMGNuVmxJSDA3WEc0Z0lGeHVZbkpsWVdz
N1hHNWpZWE5sSURJd09uUm9hWE11SkNBOUlDUWtXeVF3WFR0Y2JtSnlaV0ZyTzF4dVkyRnpaU0F5
TVRwMGFHbHpMaVFnUFNCN2NHRjBhRG9nSkNSYkpEQXRNVjBzSUhOMGNtbHdPaUI1ZVM1emRISnBj
RVpzWVdkektDUWtXeVF3TFRKZExDQWtKRnNrTUYwcGZUdGNibUp5WldGck8xeHVZMkZ6WlNBeU1q
cDBhR2x6TGlRZ1BTQjVlUzV3Y21Wd1lYSmxUWFZ6ZEdGamFHVW9KQ1JiSkRBdE0xMHNJQ1FrV3lR
d0xUSmRMQ0FrSkZza01DMHhYU3dnSkNSYkpEQXRORjBzSUhsNUxuTjBjbWx3Um14aFozTW9KQ1Ji
SkRBdE5GMHNJQ1FrV3lRd1hTa3NJSFJvYVhNdVh5UXBPMXh1WW5KbFlXczdYRzVqWVhObElESXpP
blJvYVhNdUpDQTlJSGw1TG5CeVpYQmhjbVZOZFhOMFlXTm9aU2drSkZza01DMHpYU3dnSkNSYkpE
QXRNbDBzSUNRa1d5UXdMVEZkTENBa0pGc2tNQzAwWFN3Z2VYa3VjM1J5YVhCR2JHRm5jeWdrSkZz
a01DMDBYU3dnSkNSYkpEQmRLU3dnZEdocGN5NWZKQ2s3WEc1aWNtVmhhenRjYm1OaGMyVWdNalE2
WEc0Z0lDQWdkR2hwY3k0a0lEMGdlMXh1SUNBZ0lDQWdkSGx3WlRvZ0oxQmhjblJwWVd4VGRHRjBa
VzFsYm5RbkxGeHVJQ0FnSUNBZ2JtRnRaVG9nSkNSYkpEQXRNMTBzWEc0Z0lDQWdJQ0J3WVhKaGJY
TTZJQ1FrV3lRd0xUSmRMRnh1SUNBZ0lDQWdhR0Z6YURvZ0pDUmJKREF0TVYwc1hHNGdJQ0FnSUNC
cGJtUmxiblE2SUNjbkxGeHVJQ0FnSUNBZ2MzUnlhWEE2SUhsNUxuTjBjbWx3Um14aFozTW9KQ1Ji
SkRBdE5GMHNJQ1FrV3lRd1hTa3NYRzRnSUNBZ0lDQnNiMk02SUhsNUxteHZZMGx1Wm04b2RHaHBj
eTVmSkNsY2JpQWdJQ0I5TzF4dUlDQmNibUp5WldGck8xeHVZMkZ6WlNBeU5UcDBhR2x6TGlRZ1BT
QjVlUzV3Y21Wd1lYSmxVR0Z5ZEdsaGJFSnNiMk5yS0NRa1d5UXdMVEpkTENBa0pGc2tNQzB4WFN3
Z0pDUmJKREJkTENCMGFHbHpMbDhrS1R0Y2JtSnlaV0ZyTzF4dVkyRnpaU0F5TmpwMGFHbHpMaVFn
UFNCN0lIQmhkR2c2SUNRa1d5UXdMVE5kTENCd1lYSmhiWE02SUNRa1d5UXdMVEpkTENCb1lYTm9P
aUFrSkZza01DMHhYU3dnYzNSeWFYQTZJSGw1TG5OMGNtbHdSbXhoWjNNb0pDUmJKREF0TkYwc0lD
UWtXeVF3WFNrZ2ZUdGNibUp5WldGck8xeHVZMkZ6WlNBeU56cDBhR2x6TGlRZ1BTQWtKRnNrTUYw
N1hHNWljbVZoYXp0Y2JtTmhjMlVnTWpnNmRHaHBjeTRrSUQwZ0pDUmJKREJkTzF4dVluSmxZV3M3
WEc1allYTmxJREk1T2x4dUlDQWdJSFJvYVhNdUpDQTlJSHRjYmlBZ0lDQWdJSFI1Y0dVNklDZFRk
V0pGZUhCeVpYTnphVzl1Snl4Y2JpQWdJQ0FnSUhCaGRHZzZJQ1FrV3lRd0xUTmRMRnh1SUNBZ0lD
QWdjR0Z5WVcxek9pQWtKRnNrTUMweVhTeGNiaUFnSUNBZ0lHaGhjMmc2SUNRa1d5UXdMVEZkTEZ4
dUlDQWdJQ0FnYkc5ak9pQjVlUzVzYjJOSmJtWnZLSFJvYVhNdVh5UXBYRzRnSUNBZ2ZUdGNiaUFn
WEc1aWNtVmhhenRjYm1OaGMyVWdNekE2ZEdocGN5NGtJRDBnZTNSNWNHVTZJQ2RJWVhOb0p5d2dj
R0ZwY25NNklDUWtXeVF3WFN3Z2JHOWpPaUI1ZVM1c2IyTkpibVp2S0hSb2FYTXVYeVFwZlR0Y2Jt
SnlaV0ZyTzF4dVkyRnpaU0F6TVRwMGFHbHpMaVFnUFNCN2RIbHdaVG9nSjBoaGMyaFFZV2x5Snl3
Z2EyVjVPaUI1ZVM1cFpDZ2tKRnNrTUMweVhTa3NJSFpoYkhWbE9pQWtKRnNrTUYwc0lHeHZZem9n
ZVhrdWJHOWpTVzVtYnloMGFHbHpMbDhrS1gwN1hHNWljbVZoYXp0Y2JtTmhjMlVnTXpJNmRHaHBj
eTRrSUQwZ2VYa3VhV1FvSkNSYkpEQXRNVjBwTzF4dVluSmxZV3M3WEc1allYTmxJRE16T25Sb2FY
TXVKQ0E5SUNRa1d5UXdYVHRjYm1KeVpXRnJPMXh1WTJGelpTQXpORHAwYUdsekxpUWdQU0FrSkZz
a01GMDdYRzVpY21WaGF6dGNibU5oYzJVZ016VTZkR2hwY3k0a0lEMGdlM1I1Y0dVNklDZFRkSEpw
Ym1kTWFYUmxjbUZzSnl3Z2RtRnNkV1U2SUNRa1d5UXdYU3dnYjNKcFoybHVZV3c2SUNRa1d5UXdY
U3dnYkc5ak9pQjVlUzVzYjJOSmJtWnZLSFJvYVhNdVh5UXBmVHRjYm1KeVpXRnJPMXh1WTJGelpT
QXpOanAwYUdsekxpUWdQU0I3ZEhsd1pUb2dKMDUxYldKbGNreHBkR1Z5WVd3bkxDQjJZV3gxWlRv
Z1RuVnRZbVZ5S0NRa1d5UXdYU2tzSUc5eWFXZHBibUZzT2lCT2RXMWlaWElvSkNSYkpEQmRLU3dn
Ykc5ak9pQjVlUzVzYjJOSmJtWnZLSFJvYVhNdVh5UXBmVHRjYm1KeVpXRnJPMXh1WTJGelpTQXpO
enAwYUdsekxpUWdQU0I3ZEhsd1pUb2dKMEp2YjJ4bFlXNU1hWFJsY21Gc0p5d2dkbUZzZFdVNklD
UWtXeVF3WFNBOVBUMGdKM1J5ZFdVbkxDQnZjbWxuYVc1aGJEb2dKQ1JiSkRCZElEMDlQU0FuZEhK
MVpTY3NJR3h2WXpvZ2VYa3ViRzlqU1c1bWJ5aDBhR2x6TGw4a0tYMDdYRzVpY21WaGF6dGNibU5o
YzJVZ016ZzZkR2hwY3k0a0lEMGdlM1I1Y0dVNklDZFZibVJsWm1sdVpXUk1hWFJsY21Gc0p5d2di
M0pwWjJsdVlXdzZJSFZ1WkdWbWFXNWxaQ3dnZG1Gc2RXVTZJSFZ1WkdWbWFXNWxaQ3dnYkc5ak9p
QjVlUzVzYjJOSmJtWnZLSFJvYVhNdVh5UXBmVHRjYm1KeVpXRnJPMXh1WTJGelpTQXpPVHAwYUds
ekxpUWdQU0I3ZEhsd1pUb2dKMDUxYkd4TWFYUmxjbUZzSnl3Z2IzSnBaMmx1WVd3NklHNTFiR3dz
SUhaaGJIVmxPaUJ1ZFd4c0xDQnNiMk02SUhsNUxteHZZMGx1Wm04b2RHaHBjeTVmSkNsOU8xeHVZ
bkpsWVdzN1hHNWpZWE5sSURRd09uUm9hWE11SkNBOUlDUWtXeVF3WFR0Y2JtSnlaV0ZyTzF4dVky
RnpaU0EwTVRwMGFHbHpMaVFnUFNBa0pGc2tNRjA3WEc1aWNtVmhhenRjYm1OaGMyVWdOREk2ZEdo
cGN5NGtJRDBnZVhrdWNISmxjR0Z5WlZCaGRHZ29kSEoxWlN3Z0pDUmJKREJkTENCMGFHbHpMbDhr
S1R0Y2JtSnlaV0ZyTzF4dVkyRnpaU0EwTXpwMGFHbHpMaVFnUFNCNWVTNXdjbVZ3WVhKbFVHRjBh
Q2htWVd4elpTd2dKQ1JiSkRCZExDQjBhR2x6TGw4a0tUdGNibUp5WldGck8xeHVZMkZ6WlNBME5E
b2dKQ1JiSkRBdE1sMHVjSFZ6YUNoN2NHRnlkRG9nZVhrdWFXUW9KQ1JiSkRCZEtTd2diM0pwWjJs
dVlXdzZJQ1FrV3lRd1hTd2djMlZ3WVhKaGRHOXlPaUFrSkZza01DMHhYWDBwT3lCMGFHbHpMaVFn
UFNBa0pGc2tNQzB5WFRzZ1hHNWljbVZoYXp0Y2JtTmhjMlVnTkRVNmRHaHBjeTRrSUQwZ1czdHdZ
WEowT2lCNWVTNXBaQ2drSkZza01GMHBMQ0J2Y21sbmFXNWhiRG9nSkNSYkpEQmRmVjA3WEc1aWNt
VmhhenRjYm1OaGMyVWdORFk2ZEdocGN5NGtJRDBnVzEwN1hHNWljbVZoYXp0Y2JtTmhjMlVnTkRj
NkpDUmJKREF0TVYwdWNIVnphQ2drSkZza01GMHBPMXh1WW5KbFlXczdYRzVqWVhObElEUTRPblJv
YVhNdUpDQTlJRnNrSkZza01GMWRPMXh1WW5KbFlXczdYRzVqWVhObElEUTVPaVFrV3lRd0xURmRM
bkIxYzJnb0pDUmJKREJkS1R0Y2JtSnlaV0ZyTzF4dVkyRnpaU0ExTURwMGFHbHpMaVFnUFNCYlhU
dGNibUp5WldGck8xeHVZMkZ6WlNBMU1Ub2tKRnNrTUMweFhTNXdkWE5vS0NRa1d5UXdYU2s3WEc1
aWNtVmhhenRjYm1OaGMyVWdOVGc2ZEdocGN5NGtJRDBnVzEwN1hHNWljbVZoYXp0Y2JtTmhjMlVn
TlRrNkpDUmJKREF0TVYwdWNIVnphQ2drSkZza01GMHBPMXh1WW5KbFlXczdYRzVqWVhObElEWTBP
blJvYVhNdUpDQTlJRnRkTzF4dVluSmxZV3M3WEc1allYTmxJRFkxT2lRa1d5UXdMVEZkTG5CMWMy
Z29KQ1JiSkRCZEtUdGNibUp5WldGck8xeHVZMkZ6WlNBM01EcDBhR2x6TGlRZ1BTQmJYVHRjYm1K
eVpXRnJPMXh1WTJGelpTQTNNVG9rSkZza01DMHhYUzV3ZFhOb0tDUWtXeVF3WFNrN1hHNWljbVZo
YXp0Y2JtTmhjMlVnTnpnNmRHaHBjeTRrSUQwZ1cxMDdYRzVpY21WaGF6dGNibU5oYzJVZ056azZK
Q1JiSkRBdE1WMHVjSFZ6YUNna0pGc2tNRjBwTzF4dVluSmxZV3M3WEc1allYTmxJRGd5T25Sb2FY
TXVKQ0E5SUZ0ZE8xeHVZbkpsWVdzN1hHNWpZWE5sSURnek9pUWtXeVF3TFRGZExuQjFjMmdvSkNS
YkpEQmRLVHRjYm1KeVpXRnJPMXh1WTJGelpTQTROanAwYUdsekxpUWdQU0JiWFR0Y2JtSnlaV0Zy
TzF4dVkyRnpaU0E0Tnpva0pGc2tNQzB4WFM1d2RYTm9LQ1FrV3lRd1hTazdYRzVpY21WaGF6dGNi
bU5oYzJVZ09UQTZkR2hwY3k0a0lEMGdXMTA3WEc1aWNtVmhhenRjYm1OaGMyVWdPVEU2SkNSYkpE
QXRNVjB1Y0hWemFDZ2tKRnNrTUYwcE8xeHVZbkpsWVdzN1hHNWpZWE5sSURrME9uUm9hWE11SkNB
OUlGdGRPMXh1WW5KbFlXczdYRzVqWVhObElEazFPaVFrV3lRd0xURmRMbkIxYzJnb0pDUmJKREJk
S1R0Y2JtSnlaV0ZyTzF4dVkyRnpaU0E1T0RwMGFHbHpMaVFnUFNCYkpDUmJKREJkWFR0Y2JtSnla
V0ZyTzF4dVkyRnpaU0E1T1Rva0pGc2tNQzB4WFM1d2RYTm9LQ1FrV3lRd1hTazdYRzVpY21WaGF6
dGNibU5oYzJVZ01UQXdPblJvYVhNdUpDQTlJRnNrSkZza01GMWRPMXh1WW5KbFlXczdYRzVqWVhO
bElERXdNVG9rSkZza01DMHhYUzV3ZFhOb0tDUWtXeVF3WFNrN1hHNWljbVZoYXp0Y2JuMWNibjBz
WEc1MFlXSnNaVG9nVzNzek9qRXNORG95TERVNld6SXNORFpkTERZNk15d3hORHBiTWl3ME5sMHNN
VFU2V3pJc05EWmRMREU1T2xzeUxEUTJYU3d5T1RwYk1pdzBObDBzTXpRNld6SXNORFpkTERRNE9s
c3lMRFEyWFN3MU1UcGJNaXcwTmwwc05UVTZXeklzTkRaZExEWXdPbHN5TERRMlhYMHNlekU2V3pO
ZGZTeDdOVHBiTVN3MFhYMHNlelU2V3pJc01sMHNOem8xTERnNk5pdzVPamNzTVRBNk9Dd3hNVG81
TERFeU9qRXdMREV6T2pFeExERTBPbHN4TERFeVhTd3hOVHBiTVN3eU1GMHNNVFk2TVRjc01UazZX
ekVzTWpOZExESTBPakUxTERJM09qRTJMREk1T2xzeExESXhYU3d6TkRwYk1Td3lNbDBzTXprNld6
SXNNbDBzTkRRNld6SXNNbDBzTkRjNld6SXNNbDBzTkRnNld6RXNNVE5kTERVeE9sc3hMREUwWFN3
MU5UcGJNU3d4T0Ywc05UazZNVGtzTmpBNld6RXNNalJkZlN4N01UcGJNaXd4WFgwc2V6VTZXeklz
TkRkZExERTBPbHN5TERRM1hTd3hOVHBiTWl3ME4xMHNNVGs2V3pJc05EZGRMREk1T2xzeUxEUTNY
U3d6TkRwYk1pdzBOMTBzTXprNld6SXNORGRkTERRME9sc3lMRFEzWFN3ME56cGJNaXcwTjEwc05E
ZzZXeklzTkRkZExEVXhPbHN5TERRM1hTdzFOVHBiTWl3ME4xMHNOakE2V3pJc05EZGRmU3g3TlRw
Yk1pd3pYU3d4TkRwYk1pd3pYU3d4TlRwYk1pd3pYU3d4T1RwYk1pd3pYU3d5T1RwYk1pd3pYU3d6
TkRwYk1pd3pYU3d6T1RwYk1pd3pYU3cwTkRwYk1pd3pYU3cwTnpwYk1pd3pYU3cwT0RwYk1pd3pY
U3cxTVRwYk1pd3pYU3cxTlRwYk1pd3pYU3cyTURwYk1pd3pYWDBzZXpVNld6SXNORjBzTVRRNld6
SXNORjBzTVRVNld6SXNORjBzTVRrNld6SXNORjBzTWprNld6SXNORjBzTXpRNld6SXNORjBzTXpr
Nld6SXNORjBzTkRRNld6SXNORjBzTkRjNld6SXNORjBzTkRnNld6SXNORjBzTlRFNld6SXNORjBz
TlRVNld6SXNORjBzTmpBNld6SXNORjE5TEhzMU9sc3lMRFZkTERFME9sc3lMRFZkTERFMU9sc3lM
RFZkTERFNU9sc3lMRFZkTERJNU9sc3lMRFZkTERNME9sc3lMRFZkTERNNU9sc3lMRFZkTERRME9s
c3lMRFZkTERRM09sc3lMRFZkTERRNE9sc3lMRFZkTERVeE9sc3lMRFZkTERVMU9sc3lMRFZkTERZ
d09sc3lMRFZkZlN4N05UcGJNaXcyWFN3eE5EcGJNaXcyWFN3eE5UcGJNaXcyWFN3eE9UcGJNaXcy
WFN3eU9UcGJNaXcyWFN3ek5EcGJNaXcyWFN3ek9UcGJNaXcyWFN3ME5EcGJNaXcyWFN3ME56cGJN
aXcyWFN3ME9EcGJNaXcyWFN3MU1UcGJNaXcyWFN3MU5UcGJNaXcyWFN3Mk1EcGJNaXcyWFgwc2V6
VTZXeklzTjEwc01UUTZXeklzTjEwc01UVTZXeklzTjEwc01UazZXeklzTjEwc01qazZXeklzTjEw
c016UTZXeklzTjEwc016azZXeklzTjEwc05EUTZXeklzTjEwc05EYzZXeklzTjEwc05EZzZXeklz
TjEwc05URTZXeklzTjEwc05UVTZXeklzTjEwc05qQTZXeklzTjExOUxIczFPbHN5TERoZExERTBP
bHN5TERoZExERTFPbHN5TERoZExERTVPbHN5TERoZExESTVPbHN5TERoZExETTBPbHN5TERoZExE
TTVPbHN5TERoZExEUTBPbHN5TERoZExEUTNPbHN5TERoZExEUTRPbHN5TERoZExEVXhPbHN5TERo
ZExEVTFPbHN5TERoZExEWXdPbHN5TERoZGZTeDdOVHBiTWl3NVhTd3hORHBiTWl3NVhTd3hOVHBi
TWl3NVhTd3hPVHBiTWl3NVhTd3lPVHBiTWl3NVhTd3pORHBiTWl3NVhTd3pPVHBiTWl3NVhTdzBO
RHBiTWl3NVhTdzBOenBiTWl3NVhTdzBPRHBiTWl3NVhTdzFNVHBiTWl3NVhTdzFOVHBiTWl3NVhT
dzJNRHBiTWl3NVhYMHNlekl3T2pJMUxEY3lPbHN4TERNMVhTdzNPRG95Tml3M09Ub3lOeXc0TURw
Yk1Td3lPRjBzT0RFNld6RXNNamxkTERneU9sc3hMRE13WFN3NE16cGJNU3d6TVYwc09EUTZXekVz
TXpKZExEZzFPbHN4TERNMFhTdzROam96TTMwc2V6SXdPak0yTERjeU9sc3hMRE0xWFN3M09Eb3lO
aXczT1RveU55dzRNRHBiTVN3eU9GMHNPREU2V3pFc01qbGRMRGd5T2xzeExETXdYU3c0TXpwYk1T
d3pNVjBzT0RRNld6RXNNekpkTERnMU9sc3hMRE0wWFN3NE5qb3pNMzBzZXpRNk16Y3NOam96TERF
ME9sc3lMRFEyWFN3eE5UcGJNaXcwTmwwc01UazZXeklzTkRaZExESTVPbHN5TERRMlhTd3pORHBi
TWl3ME5sMHNNems2V3pJc05EWmRMRFEwT2xzeUxEUTJYU3cwTnpwYk1pdzBObDBzTkRnNld6SXNO
RFpkTERVeE9sc3lMRFEyWFN3MU5UcGJNaXcwTmwwc05qQTZXeklzTkRaZGZTeDdORG96T0N3Mk9q
TXNNVFE2V3pJc05EWmRMREUxT2xzeUxEUTJYU3d4T1RwYk1pdzBObDBzTWprNld6SXNORFpkTERN
ME9sc3lMRFEyWFN3ME5EcGJNaXcwTmwwc05EYzZXeklzTkRaZExEUTRPbHN5TERRMlhTdzFNVHBi
TWl3ME5sMHNOVFU2V3pJc05EWmRMRFl3T2xzeUxEUTJYWDBzZXpFek9qUXdMREUxT2xzeExESXdY
U3d4Tnpvek9YMHNlekl3T2pReUxEVTJPalF4TERZME9qUXpMRFkxT2xzeExEUTBYU3czTWpwYk1T
d3pOVjBzTnpnNk1qWXNOems2TWpjc09EQTZXekVzTWpoZExEZ3hPbHN4TERJNVhTdzRNanBiTVN3
ek1GMHNPRE02V3pFc016RmRMRGcwT2xzeExETXlYU3c0TlRwYk1Td3pORjBzT0RZNk16TjlMSHMw
T2pRMUxEWTZNeXd4TkRwYk1pdzBObDBzTVRVNld6SXNORFpkTERFNU9sc3lMRFEyWFN3eU9UcGJN
aXcwTmwwc016UTZXeklzTkRaZExEUTNPbHN5TERRMlhTdzBPRHBiTWl3ME5sMHNOVEU2V3pJc05E
WmRMRFUxT2xzeUxEUTJYU3cyTURwYk1pdzBObDE5TEhzMU9sc3lMREV3WFN3eE5EcGJNaXd4TUYw
c01UVTZXeklzTVRCZExERTRPbHN5TERFd1hTd3hPVHBiTWl3eE1GMHNNams2V3pJc01UQmRMRE0w
T2xzeUxERXdYU3d6T1RwYk1pd3hNRjBzTkRRNld6SXNNVEJkTERRM09sc3lMREV3WFN3ME9EcGJN
aXd4TUYwc05URTZXeklzTVRCZExEVTFPbHN5TERFd1hTdzJNRHBiTWl3eE1GMTlMSHN5TURvME5p
dzNNanBiTVN3ek5WMHNOemc2TWpZc056azZNamNzT0RBNld6RXNNamhkTERneE9sc3hMREk1WFN3
NE1qcGJNU3d6TUYwc09ETTZXekVzTXpGZExEZzBPbHN4TERNeVhTdzROVHBiTVN3ek5GMHNPRFk2
TXpOOUxIc3lNRG8wTnl3M01qcGJNU3d6TlYwc056ZzZNallzTnprNk1qY3NPREE2V3pFc01qaGRM
RGd4T2xzeExESTVYU3c0TWpwYk1Td3pNRjBzT0RNNld6RXNNekZkTERnME9sc3hMRE15WFN3NE5U
cGJNU3d6TkYwc09EWTZNek45TEhzeU1EbzBPQ3czTWpwYk1Td3pOVjBzTnpnNk1qWXNOems2TWpj
c09EQTZXekVzTWpoZExEZ3hPbHN4TERJNVhTdzRNanBiTVN3ek1GMHNPRE02V3pFc016RmRMRGcw
T2xzeExETXlYU3c0TlRwYk1Td3pORjBzT0RZNk16TjlMSHN5TURvME1pdzFOam8wT1N3Mk5EbzBN
eXcyTlRwYk1TdzBORjBzTnpJNld6RXNNelZkTERjNE9qSTJMRGM1T2pJM0xEZ3dPbHN4TERJNFhT
dzRNVHBiTVN3eU9WMHNPREk2V3pFc016QmRMRGd6T2xzeExETXhYU3c0TkRwYk1Td3pNbDBzT0RV
Nld6RXNNelJkTERnMk9qTXpmU3g3TXpNNld6SXNOemhkTERRNU9qVXdMRFkxT2xzeUxEYzRYU3cz
TWpwYk1pdzNPRjBzT0RBNld6SXNOemhkTERneE9sc3lMRGM0WFN3NE1qcGJNaXczT0Ywc09ETTZX
eklzTnpoZExEZzBPbHN5TERjNFhTdzROVHBiTWl3M09GMTlMSHN5TXpwYk1pd3pNMTBzTXpNNld6
SXNNek5kTERVME9sc3lMRE16WFN3Mk5UcGJNaXd6TTEwc05qZzZXeklzTXpOZExEY3lPbHN5TERN
elhTdzNOVHBiTWl3ek0xMHNPREE2V3pJc016TmRMRGd4T2xzeUxETXpYU3c0TWpwYk1pd3pNMTBz
T0RNNld6SXNNek5kTERnME9sc3lMRE16WFN3NE5UcGJNaXd6TTExOUxIc3lNenBiTWl3ek5GMHNN
ek02V3pJc016UmRMRFUwT2xzeUxETTBYU3cyTlRwYk1pd3pORjBzTmpnNld6SXNNelJkTERjeU9s
c3lMRE0wWFN3M05UcGJNaXd6TkYwc09EQTZXeklzTXpSZExEZ3hPbHN5TERNMFhTdzRNanBiTWl3
ek5GMHNPRE02V3pJc016UmRMRGcwT2xzeUxETTBYU3c0TlRwYk1pd3pORjE5TEhzeU16cGJNaXd6
TlYwc016TTZXeklzTXpWZExEVTBPbHN5TERNMVhTdzJOVHBiTWl3ek5WMHNOamc2V3pJc016VmRM
RGN5T2xzeUxETTFYU3czTlRwYk1pd3pOVjBzT0RBNld6SXNNelZkTERneE9sc3lMRE0xWFN3NE1q
cGJNaXd6TlYwc09ETTZXeklzTXpWZExEZzBPbHN5TERNMVhTdzROVHBiTWl3ek5WMTlMSHN5TXpw
Yk1pd3pObDBzTXpNNld6SXNNelpkTERVME9sc3lMRE0yWFN3Mk5UcGJNaXd6Tmwwc05qZzZXeklz
TXpaZExEY3lPbHN5TERNMlhTdzNOVHBiTWl3ek5sMHNPREE2V3pJc016WmRMRGd4T2xzeUxETTJY
U3c0TWpwYk1pd3pObDBzT0RNNld6SXNNelpkTERnME9sc3lMRE0yWFN3NE5UcGJNaXd6TmwxOUxI
c3lNenBiTWl3ek4xMHNNek02V3pJc016ZGRMRFUwT2xzeUxETTNYU3cyTlRwYk1pd3pOMTBzTmpn
Nld6SXNNemRkTERjeU9sc3lMRE0zWFN3M05UcGJNaXd6TjEwc09EQTZXeklzTXpkZExEZ3hPbHN5
TERNM1hTdzRNanBiTWl3ek4xMHNPRE02V3pJc016ZGRMRGcwT2xzeUxETTNYU3c0TlRwYk1pd3pO
MTE5TEhzeU16cGJNaXd6T0Ywc016TTZXeklzTXpoZExEVTBPbHN5TERNNFhTdzJOVHBiTWl3ek9G
MHNOamc2V3pJc016aGRMRGN5T2xzeUxETTRYU3czTlRwYk1pd3pPRjBzT0RBNld6SXNNemhkTERn
eE9sc3lMRE00WFN3NE1qcGJNaXd6T0Ywc09ETTZXeklzTXpoZExEZzBPbHN5TERNNFhTdzROVHBi
TWl3ek9GMTlMSHN5TXpwYk1pd3pPVjBzTXpNNld6SXNNemxkTERVME9sc3lMRE01WFN3Mk5UcGJN
aXd6T1Ywc05qZzZXeklzTXpsZExEY3lPbHN5TERNNVhTdzNOVHBiTWl3ek9WMHNPREE2V3pJc016
bGRMRGd4T2xzeUxETTVYU3c0TWpwYk1pd3pPVjBzT0RNNld6SXNNemxkTERnME9sc3lMRE01WFN3
NE5UcGJNaXd6T1YxOUxIc3lNenBiTWl3ME0xMHNNek02V3pJc05ETmRMRFUwT2xzeUxEUXpYU3cy
TlRwYk1pdzBNMTBzTmpnNld6SXNORE5kTERjeU9sc3lMRFF6WFN3M05UcGJNaXcwTTEwc09EQTZX
eklzTkROZExEZ3hPbHN5TERRelhTdzRNanBiTWl3ME0xMHNPRE02V3pJc05ETmRMRGcwT2xzeUxE
UXpYU3c0TlRwYk1pdzBNMTBzT0RjNld6RXNOVEZkZlN4N056STZXekVzTXpWZExEZzJPalV5ZlN4
N01qTTZXeklzTkRWZExETXpPbHN5TERRMVhTdzFORHBiTWl3ME5WMHNOalU2V3pJc05EVmRMRFk0
T2xzeUxEUTFYU3czTWpwYk1pdzBOVjBzTnpVNld6SXNORFZkTERnd09sc3lMRFExWFN3NE1UcGJN
aXcwTlYwc09ESTZXeklzTkRWZExEZ3pPbHN5TERRMVhTdzRORHBiTWl3ME5WMHNPRFU2V3pJc05E
VmRMRGczT2xzeUxEUTFYWDBzZXpVeU9qVXpMRFUwT2xzeUxEZ3lYU3cyTlRwYk1pdzRNbDBzTnpJ
Nld6SXNPREpkTERnd09sc3lMRGd5WFN3NE1UcGJNaXc0TWwwc09ESTZXeklzT0RKZExEZ3pPbHN5
TERneVhTdzRORHBiTWl3NE1sMHNPRFU2V3pJc09ESmRmU3g3TWpVNk5UUXNNemc2TlRZc016azZX
ekVzTlRoZExEUXpPalUzTERRME9sc3hMRFU1WFN3ME5UbzFOU3cwTnpwYk1pdzFORjE5TEhzeU9E
bzJNQ3cwTXpvMk1TdzBORHBiTVN3MU9WMHNORGM2V3pJc05UWmRmU3g3TVRNNk5qTXNNVFU2V3pF
c01qQmRMREU0T2xzeExEWXlYWDBzZXpFMU9sc3lMRFE0WFN3eE9EcGJNaXcwT0YxOUxIc3pNenBi
TWl3NE5sMHNOVGM2TmpRc05qVTZXeklzT0RaZExEY3lPbHN5TERnMlhTdzRNRHBiTWl3NE5sMHNP
REU2V3pJc09EWmRMRGd5T2xzeUxEZzJYU3c0TXpwYk1pdzRObDBzT0RRNld6SXNPRFpkTERnMU9s
c3lMRGcyWFgwc2V6TXpPbHN5TERRd1hTdzJOVHBiTWl3ME1GMHNOekk2V3pJc05EQmRMRGd3T2xz
eUxEUXdYU3c0TVRwYk1pdzBNRjBzT0RJNld6SXNOREJkTERnek9sc3lMRFF3WFN3NE5EcGJNaXcw
TUYwc09EVTZXeklzTkRCZGZTeDdNek02V3pJc05ERmRMRFkxT2xzeUxEUXhYU3czTWpwYk1pdzBN
VjBzT0RBNld6SXNOREZkTERneE9sc3lMRFF4WFN3NE1qcGJNaXcwTVYwc09ETTZXeklzTkRGZExE
ZzBPbHN5TERReFhTdzROVHBiTWl3ME1WMTlMSHN5TURvMk5TdzNNanBiTVN3ek5WMHNOemc2TWpZ
c056azZNamNzT0RBNld6RXNNamhkTERneE9sc3hMREk1WFN3NE1qcGJNU3d6TUYwc09ETTZXekVz
TXpGZExEZzBPbHN4TERNeVhTdzROVHBiTVN3ek5GMHNPRFk2TXpOOUxIc3lOam8yTml3ME56cGJN
U3cyTjExOUxIc3pNRG8yT0N3ek16cGJNaXcxT0Ywc05qVTZXeklzTlRoZExEY3lPbHN5TERVNFhT
dzNOVHBiTWl3MU9GMHNPREE2V3pJc05UaGRMRGd4T2xzeUxEVTRYU3c0TWpwYk1pdzFPRjBzT0RN
Nld6SXNOVGhkTERnME9sc3lMRFU0WFN3NE5UcGJNaXcxT0YxOUxIc3pNenBiTWl3Mk5GMHNNelU2
Tmprc05qVTZXeklzTmpSZExEY3lPbHN5TERZMFhTdzNOVHBiTWl3Mk5GMHNPREE2V3pJc05qUmRM
RGd4T2xzeUxEWTBYU3c0TWpwYk1pdzJORjBzT0RNNld6SXNOalJkTERnME9sc3lMRFkwWFN3NE5U
cGJNaXcyTkYxOUxIc3lNVG8zTUN3eU16cGJNaXcxTUYwc05qVTZXeklzTlRCZExEY3lPbHN5TERV
d1hTdzRNRHBiTWl3MU1GMHNPREU2V3pJc05UQmRMRGd5T2xzeUxEVXdYU3c0TXpwYk1pdzFNRjBz
T0RRNld6SXNOVEJkTERnMU9sc3lMRFV3WFgwc2V6TXpPbHN5TERrd1hTdzJNVG8zTVN3Mk5UcGJN
aXc1TUYwc056STZXeklzT1RCZExEZ3dPbHN5TERrd1hTdzRNVHBiTWl3NU1GMHNPREk2V3pJc09U
QmRMRGd6T2xzeUxEa3dYU3c0TkRwYk1pdzVNRjBzT0RVNld6SXNPVEJkZlN4N01qQTZOelVzTXpN
Nld6SXNPREJkTERVd09qY3lMRFl6T2pjekxEWTBPamMyTERZMU9sc3hMRFEwWFN3Mk9UbzNOQ3cz
TURvM055dzNNVG8zT0N3M01qcGJNU3czT1Ywc056ZzZNallzTnprNk1qY3NPREE2V3pFc01qaGRM
RGd4T2xzeExESTVYU3c0TWpwYk1Td3pNRjBzT0RNNld6RXNNekZkTERnME9sc3hMRE15WFN3NE5U
cGJNU3d6TkYwc09EWTZNek45TEhzM01qcGJNU3c0TUYxOUxIc3lNenBiTWl3ME1sMHNNek02V3pJ
c05ESmRMRFUwT2xzeUxEUXlYU3cyTlRwYk1pdzBNbDBzTmpnNld6SXNOREpkTERjeU9sc3lMRFF5
WFN3M05UcGJNaXcwTWwwc09EQTZXeklzTkRKZExEZ3hPbHN5TERReVhTdzRNanBiTWl3ME1sMHNP
RE02V3pJc05ESmRMRGcwT2xzeUxEUXlYU3c0TlRwYk1pdzBNbDBzT0RjNld6RXNOVEZkZlN4N01q
QTZOelVzTlRNNk9ERXNOVFE2V3pJc09EUmRMRFl6T2pneUxEWTBPamMyTERZMU9sc3hMRFEwWFN3
Mk9UbzRNeXczTURvM055dzNNVG8zT0N3M01qcGJNU3czT1Ywc056ZzZNallzTnprNk1qY3NPREE2
V3pFc01qaGRMRGd4T2xzeExESTVYU3c0TWpwYk1Td3pNRjBzT0RNNld6RXNNekZkTERnME9sc3hM
RE15WFN3NE5UcGJNU3d6TkYwc09EWTZNek45TEhzeU5qbzROQ3cwTnpwYk1TdzJOMTE5TEhzME56
cGJNaXcxTlYxOUxIczBPamcxTERZNk15d3hORHBiTWl3ME5sMHNNVFU2V3pJc05EWmRMREU1T2xz
eUxEUTJYU3d5T1RwYk1pdzBObDBzTXpRNld6SXNORFpkTERNNU9sc3lMRFEyWFN3ME5EcGJNaXcw
Tmwwc05EYzZXeklzTkRaZExEUTRPbHN5TERRMlhTdzFNVHBiTWl3ME5sMHNOVFU2V3pJc05EWmRM
RFl3T2xzeUxEUTJYWDBzZXpRM09sc3lMREl3WFgwc2V6SXdPamcyTERjeU9sc3hMRE0xWFN3M09E
b3lOaXczT1RveU55dzRNRHBiTVN3eU9GMHNPREU2V3pFc01qbGRMRGd5T2xzeExETXdYU3c0TXpw
Yk1Td3pNVjBzT0RRNld6RXNNekpkTERnMU9sc3hMRE0wWFN3NE5qb3pNMzBzZXpRNk9EY3NOam96
TERFME9sc3lMRFEyWFN3eE5UcGJNaXcwTmwwc01UazZXeklzTkRaZExESTVPbHN5TERRMlhTd3pO
RHBiTWl3ME5sMHNORGM2V3pJc05EWmRMRFE0T2xzeUxEUTJYU3cxTVRwYk1pdzBObDBzTlRVNld6
SXNORFpkTERZd09sc3lMRFEyWFgwc2V6STJPamc0TERRM09sc3hMRFkzWFgwc2V6UTNPbHN5TERV
M1hYMHNlelU2V3pJc01URmRMREUwT2xzeUxERXhYU3d4TlRwYk1pd3hNVjBzTVRrNld6SXNNVEZk
TERJNU9sc3lMREV4WFN3ek5EcGJNaXd4TVYwc016azZXeklzTVRGZExEUTBPbHN5TERFeFhTdzBO
enBiTWl3eE1WMHNORGc2V3pJc01URmRMRFV4T2xzeUxERXhYU3cxTlRwYk1pd3hNVjBzTmpBNld6
SXNNVEZkZlN4N01UVTZXeklzTkRsZExERTRPbHN5TERRNVhYMHNlekl3T2pjMUxETXpPbHN5TERn
NFhTdzFPRG80T1N3Mk16bzVNQ3cyTkRvM05pdzJOVHBiTVN3ME5GMHNOams2T1RFc056QTZOemNz
TnpFNk56Z3NOekk2V3pFc056bGRMRGM0T2pJMkxEYzVPakkzTERnd09sc3hMREk0WFN3NE1UcGJN
U3d5T1Ywc09ESTZXekVzTXpCZExEZ3pPbHN4TERNeFhTdzRORHBiTVN3ek1sMHNPRFU2V3pFc016
UmRMRGcyT2pNemZTeDdOalU2V3pJc09UUmRMRFkyT2preUxEWTRPbHN5TERrMFhTdzNNanBiTWl3
NU5GMHNPREE2V3pJc09UUmRMRGd4T2xzeUxEazBYU3c0TWpwYk1pdzVORjBzT0RNNld6SXNPVFJk
TERnME9sc3lMRGswWFN3NE5UcGJNaXc1TkYxOUxIczFPbHN5TERJMVhTd3hORHBiTWl3eU5WMHNN
VFU2V3pJc01qVmRMREU1T2xzeUxESTFYU3d5T1RwYk1pd3lOVjBzTXpRNld6SXNNalZkTERNNU9s
c3lMREkxWFN3ME5EcGJNaXd5TlYwc05EYzZXeklzTWpWZExEUTRPbHN5TERJMVhTdzFNVHBiTWl3
eU5WMHNOVFU2V3pJc01qVmRMRFl3T2xzeUxESTFYWDBzZXpJd09qa3pMRGN5T2xzeExETTFYU3cz
T0RveU5pdzNPVG95Tnl3NE1EcGJNU3d5T0Ywc09ERTZXekVzTWpsZExEZ3lPbHN4TERNd1hTdzRN
enBiTVN3ek1WMHNPRFE2V3pFc016SmRMRGcxT2xzeExETTBYU3c0Tmpvek0zMHNlekl3T2pjMUxE
TXhPamswTERNek9sc3lMRFl3WFN3Mk16bzVOU3cyTkRvM05pdzJOVHBiTVN3ME5GMHNOams2T1RZ
c056QTZOemNzTnpFNk56Z3NOekk2V3pFc056bGRMRGMxT2xzeUxEWXdYU3czT0RveU5pdzNPVG95
Tnl3NE1EcGJNU3d5T0Ywc09ERTZXekVzTWpsZExEZ3lPbHN4TERNd1hTdzRNenBiTVN3ek1WMHNP
RFE2V3pFc016SmRMRGcxT2xzeExETTBYU3c0Tmpvek0zMHNlekl3T2pjMUxETXpPbHN5TERZMlhT
d3pOam81Tnl3Mk16bzVPQ3cyTkRvM05pdzJOVHBiTVN3ME5GMHNOams2T1Rrc056QTZOemNzTnpF
Nk56Z3NOekk2V3pFc056bGRMRGMxT2xzeUxEWTJYU3czT0RveU5pdzNPVG95Tnl3NE1EcGJNU3d5
T0Ywc09ERTZXekVzTWpsZExEZ3lPbHN4TERNd1hTdzRNenBiTVN3ek1WMHNPRFE2V3pFc016SmRM
RGcxT2xzeExETTBYU3c0Tmpvek0zMHNlekl3T2pjMUxESXlPakV3TUN3eU16cGJNaXcxTWwwc05q
TTZNVEF4TERZME9qYzJMRFkxT2xzeExEUTBYU3cyT1RveE1ESXNOekE2Tnpjc056RTZOemdzTnpJ
Nld6RXNOemxkTERjNE9qSTJMRGM1T2pJM0xEZ3dPbHN4TERJNFhTdzRNVHBiTVN3eU9WMHNPREk2
V3pFc016QmRMRGd6T2xzeExETXhYU3c0TkRwYk1Td3pNbDBzT0RVNld6RXNNelJkTERnMk9qTXpm
U3g3TWpBNk56VXNNek02V3pJc09USmRMRFl5T2pFd015dzJNem94TURRc05qUTZOellzTmpVNld6
RXNORFJkTERZNU9qRXdOU3czTURvM055dzNNVG8zT0N3M01qcGJNU3czT1Ywc056ZzZNallzTnpr
Nk1qY3NPREE2V3pFc01qaGRMRGd4T2xzeExESTVYU3c0TWpwYk1Td3pNRjBzT0RNNld6RXNNekZk
TERnME9sc3hMRE15WFN3NE5UcGJNU3d6TkYwc09EWTZNek45TEhzek16cGJNU3d4TURaZGZTeDdN
ek02V3pJc056bGRMRFkxT2xzeUxEYzVYU3czTWpwYk1pdzNPVjBzT0RBNld6SXNOemxkTERneE9s
c3lMRGM1WFN3NE1qcGJNaXczT1Ywc09ETTZXeklzTnpsZExEZzBPbHN5TERjNVhTdzROVHBiTWl3
M09WMTlMSHN6TXpwYk1pdzRNVjE5TEhzeU16cGJNaXd5TjEwc016TTZXeklzTWpkZExEVTBPbHN5
TERJM1hTdzJOVHBiTWl3eU4xMHNOamc2V3pJc01qZGRMRGN5T2xzeUxESTNYU3czTlRwYk1pd3lO
MTBzT0RBNld6SXNNamRkTERneE9sc3lMREkzWFN3NE1qcGJNaXd5TjEwc09ETTZXeklzTWpkZExE
ZzBPbHN5TERJM1hTdzROVHBiTWl3eU4xMTlMSHN5TXpwYk1pd3lPRjBzTXpNNld6SXNNamhkTERV
ME9sc3lMREk0WFN3Mk5UcGJNaXd5T0Ywc05qZzZXeklzTWpoZExEY3lPbHN5TERJNFhTdzNOVHBi
TWl3eU9GMHNPREE2V3pJc01qaGRMRGd4T2xzeUxESTRYU3c0TWpwYk1pd3lPRjBzT0RNNld6SXNN
amhkTERnME9sc3lMREk0WFN3NE5UcGJNaXd5T0YxOUxIc3lNenBiTWl3ek1GMHNNek02V3pJc016
QmRMRFUwT2xzeUxETXdYU3cyT0RwYk1pd3pNRjBzTnpFNk1UQTNMRGN5T2xzeExERXdPRjBzTnpV
Nld6SXNNekJkZlN4N01qTTZXeklzT1RoZExETXpPbHN5TERrNFhTdzFORHBiTWl3NU9GMHNOamc2
V3pJc09UaGRMRGN5T2xzeUxEazRYU3czTlRwYk1pdzVPRjE5TEhzeU16cGJNaXcwTlYwc016TTZX
eklzTkRWZExEVTBPbHN5TERRMVhTdzJOVHBiTWl3ME5WMHNOamc2V3pJc05EVmRMRGN5T2xzeUxE
UTFYU3czTXpwYk1Td3hNRGxkTERjMU9sc3lMRFExWFN3NE1EcGJNaXcwTlYwc09ERTZXeklzTkRW
ZExEZ3lPbHN5TERRMVhTdzRNenBiTWl3ME5WMHNPRFE2V3pJc05EVmRMRGcxT2xzeUxEUTFYU3c0
TnpwYk1pdzBOVjE5TEhzeU16cGJNaXcwTkYwc016TTZXeklzTkRSZExEVTBPbHN5TERRMFhTdzJO
VHBiTWl3ME5GMHNOamc2V3pJc05EUmRMRGN5T2xzeUxEUTBYU3czTlRwYk1pdzBORjBzT0RBNld6
SXNORFJkTERneE9sc3lMRFEwWFN3NE1qcGJNaXcwTkYwc09ETTZXeklzTkRSZExEZzBPbHN5TERR
MFhTdzROVHBiTWl3ME5GMHNPRGM2V3pJc05EUmRmU3g3TlRRNld6RXNNVEV3WFgwc2V6VTBPbHN5
TERnelhTdzJOVHBiTWl3NE0xMHNOekk2V3pJc09ETmRMRGd3T2xzeUxEZ3pYU3c0TVRwYk1pdzRN
MTBzT0RJNld6SXNPRE5kTERnek9sc3lMRGd6WFN3NE5EcGJNaXc0TTEwc09EVTZXeklzT0ROZGZT
eDdOVFE2V3pJc09EVmRmU3g3TlRwYk1pd3hNMTBzTVRRNld6SXNNVE5kTERFMU9sc3lMREV6WFN3
eE9UcGJNaXd4TTEwc01qazZXeklzTVROZExETTBPbHN5TERFelhTd3pPVHBiTWl3eE0xMHNORFE2
V3pJc01UTmRMRFEzT2xzeUxERXpYU3cwT0RwYk1pd3hNMTBzTlRFNld6SXNNVE5kTERVMU9sc3lM
REV6WFN3Mk1EcGJNaXd4TTExOUxIc3pPRG8xTml3ek9UcGJNU3cxT0Ywc05ETTZOVGNzTkRRNld6
RXNOVGxkTERRMU9qRXhNaXcwTmpveE1URXNORGM2V3pJc056WmRmU3g3TXpNNld6SXNOekJkTERR
d09qRXhNeXcyTlRwYk1pdzNNRjBzTnpJNld6SXNOekJkTERjMU9sc3lMRGN3WFN3NE1EcGJNaXcz
TUYwc09ERTZXeklzTnpCZExEZ3lPbHN5TERjd1hTdzRNenBiTWl3M01GMHNPRFE2V3pJc056QmRM
RGcxT2xzeUxEY3dYWDBzZXpRM09sc3lMREU0WFgwc2V6VTZXeklzTVRSZExERTBPbHN5TERFMFhT
d3hOVHBiTWl3eE5GMHNNVGs2V3pJc01UUmRMREk1T2xzeUxERTBYU3d6TkRwYk1pd3hORjBzTXpr
Nld6SXNNVFJkTERRME9sc3lMREUwWFN3ME56cGJNaXd4TkYwc05EZzZXeklzTVRSZExEVXhPbHN5
TERFMFhTdzFOVHBiTWl3eE5GMHNOakE2V3pJc01UUmRmU3g3TXpNNld6RXNNVEUwWFgwc2V6TXpP
bHN5TERnM1hTdzJOVHBiTWl3NE4xMHNOekk2V3pJc09EZGRMRGd3T2xzeUxEZzNYU3c0TVRwYk1p
dzROMTBzT0RJNld6SXNPRGRkTERnek9sc3lMRGczWFN3NE5EcGJNaXc0TjEwc09EVTZXeklzT0Rk
ZGZTeDdNek02V3pJc09EbGRmU3g3TWpBNk56VXNOak02TVRFMkxEWTBPamMyTERZMU9sc3hMRFEw
WFN3Mk56b3hNVFVzTmpnNld6SXNPVFpkTERZNU9qRXhOeXczTURvM055dzNNVG8zT0N3M01qcGJN
U3czT1Ywc056ZzZNallzTnprNk1qY3NPREE2V3pFc01qaGRMRGd4T2xzeExESTVYU3c0TWpwYk1T
d3pNRjBzT0RNNld6RXNNekZkTERnME9sc3hMRE15WFN3NE5UcGJNU3d6TkYwc09EWTZNek45TEhz
ek16cGJNU3d4TVRoZGZTeDdNekk2TVRFNUxETXpPbHN5TERZeVhTdzNORG94TWpBc056VTZXekVz
TVRJeFhYMHNlek16T2xzeUxEVTVYU3cyTlRwYk1pdzFPVjBzTnpJNld6SXNOVGxkTERjMU9sc3lM
RFU1WFN3NE1EcGJNaXcxT1Ywc09ERTZXeklzTlRsZExEZ3lPbHN5TERVNVhTdzRNenBiTWl3MU9W
MHNPRFE2V3pJc05UbGRMRGcxT2xzeUxEVTVYWDBzZXpNek9sc3lMRFl4WFN3M05UcGJNaXcyTVYx
OUxIc3pNenBiTWl3Mk9GMHNNemM2TVRJeUxEYzBPakV5TXl3M05UcGJNU3d4TWpGZGZTeDdNek02
V3pJc05qVmRMRFkxT2xzeUxEWTFYU3czTWpwYk1pdzJOVjBzTnpVNld6SXNOalZkTERnd09sc3lM
RFkxWFN3NE1UcGJNaXcyTlYwc09ESTZXeklzTmpWZExEZ3pPbHN5TERZMVhTdzRORHBiTWl3Mk5W
MHNPRFU2V3pJc05qVmRmU3g3TXpNNld6SXNOamRkTERjMU9sc3lMRFkzWFgwc2V6SXpPbHN4TERF
eU5GMTlMSHN5TXpwYk1pdzFNVjBzTmpVNld6SXNOVEZkTERjeU9sc3lMRFV4WFN3NE1EcGJNaXcx
TVYwc09ERTZXeklzTlRGZExEZ3lPbHN5TERVeFhTdzRNenBiTWl3MU1WMHNPRFE2V3pJc05URmRM
RGcxT2xzeUxEVXhYWDBzZXpJek9sc3lMRFV6WFgwc2V6TXpPbHN4TERFeU5WMTlMSHN6TXpwYk1p
dzVNVjBzTmpVNld6SXNPVEZkTERjeU9sc3lMRGt4WFN3NE1EcGJNaXc1TVYwc09ERTZXeklzT1RG
ZExEZ3lPbHN5TERreFhTdzRNenBiTWl3NU1WMHNPRFE2V3pJc09URmRMRGcxT2xzeUxEa3hYWDBz
ZXpNek9sc3lMRGt6WFgwc2V6VTZXeklzTWpKZExERTBPbHN5TERJeVhTd3hOVHBiTWl3eU1sMHNN
VGs2V3pJc01qSmRMREk1T2xzeUxESXlYU3d6TkRwYk1pd3lNbDBzTXprNld6SXNNakpkTERRME9s
c3lMREl5WFN3ME56cGJNaXd5TWwwc05EZzZXeklzTWpKZExEVXhPbHN5TERJeVhTdzFOVHBiTWl3
eU1sMHNOakE2V3pJc01qSmRmU3g3TWpNNld6SXNPVGxkTERNek9sc3lMRGs1WFN3MU5EcGJNaXc1
T1Ywc05qZzZXeklzT1RsZExEY3lPbHN5TERrNVhTdzNOVHBiTWl3NU9WMTlMSHMzTXpwYk1Td3hN
RGxkZlN4N01qQTZOelVzTmpNNk1USTJMRFkwT2pjMkxEWTFPbHN4TERRMFhTdzNNanBiTVN3ek5W
MHNOemc2TWpZc056azZNamNzT0RBNld6RXNNamhkTERneE9sc3hMREk1WFN3NE1qcGJNU3d6TUYw
c09ETTZXekVzTXpGZExEZzBPbHN4TERNeVhTdzROVHBiTVN3ek5GMHNPRFk2TXpOOUxIczFPbHN5
TERJelhTd3hORHBiTWl3eU0xMHNNVFU2V3pJc01qTmRMREU1T2xzeUxESXpYU3d5T1RwYk1pd3lN
MTBzTXpRNld6SXNNak5kTERNNU9sc3lMREl6WFN3ME5EcGJNaXd5TTEwc05EYzZXeklzTWpOZExE
UTRPbHN5TERJelhTdzFNVHBiTWl3eU0xMHNOVFU2V3pJc01qTmRMRFl3T2xzeUxESXpYWDBzZXpR
M09sc3lMREU1WFgwc2V6UTNPbHN5TERjM1hYMHNlekl3T2pjMUxETXpPbHN5TERjeVhTdzBNVG94
TWpjc05qTTZNVEk0TERZME9qYzJMRFkxT2xzeExEUTBYU3cyT1RveE1qa3NOekE2Tnpjc056RTZO
emdzTnpJNld6RXNOemxkTERjMU9sc3lMRGN5WFN3M09Eb3lOaXczT1RveU55dzRNRHBiTVN3eU9G
MHNPREU2V3pFc01qbGRMRGd5T2xzeExETXdYU3c0TXpwYk1Td3pNVjBzT0RRNld6RXNNekpkTERn
MU9sc3hMRE0wWFN3NE5qb3pNMzBzZXpVNld6SXNNalJkTERFME9sc3lMREkwWFN3eE5UcGJNaXd5
TkYwc01UazZXeklzTWpSZExESTVPbHN5TERJMFhTd3pORHBiTWl3eU5GMHNNems2V3pJc01qUmRM
RFEwT2xzeUxESTBYU3cwTnpwYk1pd3lORjBzTkRnNld6SXNNalJkTERVeE9sc3lMREkwWFN3MU5U
cGJNaXd5TkYwc05qQTZXeklzTWpSZGZTeDdOamc2V3pFc01UTXdYWDBzZXpZMU9sc3lMRGsxWFN3
Mk9EcGJNaXc1TlYwc056STZXeklzT1RWZExEZ3dPbHN5TERrMVhTdzRNVHBiTWl3NU5WMHNPREk2
V3pJc09UVmRMRGd6T2xzeUxEazFYU3c0TkRwYk1pdzVOVjBzT0RVNld6SXNPVFZkZlN4N05qZzZX
eklzT1RkZGZTeDdOVHBiTWl3eU1WMHNNVFE2V3pJc01qRmRMREUxT2xzeUxESXhYU3d4T1RwYk1p
d3lNVjBzTWprNld6SXNNakZkTERNME9sc3lMREl4WFN3ek9UcGJNaXd5TVYwc05EUTZXeklzTWpG
ZExEUTNPbHN5TERJeFhTdzBPRHBiTWl3eU1WMHNOVEU2V3pJc01qRmRMRFUxT2xzeUxESXhYU3cy
TURwYk1pd3lNVjE5TEhzek16cGJNU3d4TXpGZGZTeDdNek02V3pJc05qTmRmU3g3TnpJNld6RXNN
VE16WFN3M05qb3hNeko5TEhzek16cGJNU3d4TXpSZGZTeDdNek02V3pJc05qbGRmU3g3TVRVNld6
SXNNVEpkZlN4N01UUTZXeklzTWpaZExERTFPbHN5TERJMlhTd3hPVHBiTWl3eU5sMHNNams2V3pJ
c01qWmRMRE0wT2xzeUxESTJYU3cwTnpwYk1pd3lObDBzTkRnNld6SXNNalpkTERVeE9sc3lMREky
WFN3MU5UcGJNaXd5Tmwwc05qQTZXeklzTWpaZGZTeDdNak02V3pJc016RmRMRE16T2xzeUxETXhY
U3cxTkRwYk1pd3pNVjBzTmpnNld6SXNNekZkTERjeU9sc3lMRE14WFN3M05UcGJNaXd6TVYxOUxI
c3pNenBiTWl3M05GMHNOREk2TVRNMUxEYzBPakV6Tml3M05UcGJNU3d4TWpGZGZTeDdNek02V3pJ
c056RmRMRFkxT2xzeUxEY3hYU3czTWpwYk1pdzNNVjBzTnpVNld6SXNOekZkTERnd09sc3lMRGN4
WFN3NE1UcGJNaXczTVYwc09ESTZXeklzTnpGZExEZ3pPbHN5TERjeFhTdzRORHBiTWl3M01WMHNP
RFU2V3pJc056RmRmU3g3TXpNNld6SXNOek5kTERjMU9sc3lMRGN6WFgwc2V6SXpPbHN5TERJNVhT
d3pNenBiTWl3eU9WMHNOVFE2V3pJc01qbGRMRFkxT2xzeUxESTVYU3cyT0RwYk1pd3lPVjBzTnpJ
Nld6SXNNamxkTERjMU9sc3lMREk1WFN3NE1EcGJNaXd5T1Ywc09ERTZXeklzTWpsZExEZ3lPbHN5
TERJNVhTdzRNenBiTWl3eU9WMHNPRFE2V3pJc01qbGRMRGcxT2xzeUxESTVYWDBzZXpFME9sc3lM
REUxWFN3eE5UcGJNaXd4TlYwc01UazZXeklzTVRWZExESTVPbHN5TERFMVhTd3pORHBiTWl3eE5W
MHNNems2V3pJc01UVmRMRFEwT2xzeUxERTFYU3cwTnpwYk1pd3hOVjBzTkRnNld6SXNNVFZkTERV
eE9sc3lMREUxWFN3MU5UcGJNaXd4TlYwc05qQTZXeklzTVRWZGZTeDdOekk2V3pFc01UTTRYU3cz
TnpwYk1Td3hNemRkZlN4N056STZXeklzTVRBd1hTdzNOenBiTWl3eE1EQmRmU3g3TVRRNld6SXNN
VFpkTERFMU9sc3lMREUyWFN3eE9UcGJNaXd4Tmwwc01qazZXeklzTVRaZExETTBPbHN5TERFMlhT
dzBORHBiTWl3eE5sMHNORGM2V3pJc01UWmRMRFE0T2xzeUxERTJYU3cxTVRwYk1pd3hObDBzTlRV
Nld6SXNNVFpkTERZd09sc3lMREUyWFgwc2V6TXpPbHN4TERFek9WMTlMSHN6TXpwYk1pdzNOVjE5
TEhzek16cGJNaXd6TWwxOUxIczNNanBiTWl3eE1ERmRMRGMzT2xzeUxERXdNVjE5TEhzeE5EcGJN
aXd4TjEwc01UVTZXeklzTVRkZExERTVPbHN5TERFM1hTd3lPVHBiTWl3eE4xMHNNelE2V3pJc01U
ZGRMRE01T2xzeUxERTNYU3cwTkRwYk1pd3hOMTBzTkRjNld6SXNNVGRkTERRNE9sc3lMREUzWFN3
MU1UcGJNaXd4TjEwc05UVTZXeklzTVRkZExEWXdPbHN5TERFM1hYMWRMRnh1WkdWbVlYVnNkRUZq
ZEdsdmJuTTZJSHMwT2xzeUxERmRMRFUxT2xzeUxEVTFYU3cxTnpwYk1pd3lNRjBzTmpFNld6SXNO
VGRkTERjME9sc3lMRGd4WFN3NE16cGJNaXc0TlYwc09EYzZXeklzTVRoZExEa3hPbHN5TERnNVhT
d3hNREk2V3pJc05UTmRMREV3TlRwYk1pdzVNMTBzTVRFeE9sc3lMREU1WFN3eE1USTZXeklzTnpk
ZExERXhOenBiTWl3NU4xMHNNVEl3T2xzeUxEWXpYU3d4TWpNNld6SXNOamxkTERFeU5EcGJNaXd4
TWwwc01UTTJPbHN5TERjMVhTd3hNemM2V3pJc016SmRmU3hjYm5CaGNuTmxSWEp5YjNJNklHWjFi
bU4wYVc5dUlIQmhjbk5sUlhKeWIzSW9jM1J5TENCb1lYTm9LU0I3WEc0Z0lDQWdkR2h5YjNjZ2Jt
VjNJRVZ5Y205eUtITjBjaWs3WEc1OUxGeHVjR0Z5YzJVNklHWjFibU4wYVc5dUlIQmhjbk5sS0ds
dWNIVjBLU0I3WEc0Z0lDQWdkbUZ5SUhObGJHWWdQU0IwYUdsekxDQnpkR0ZqYXlBOUlGc3dYU3dn
ZG5OMFlXTnJJRDBnVzI1MWJHeGRMQ0JzYzNSaFkyc2dQU0JiWFN3Z2RHRmliR1VnUFNCMGFHbHpM
blJoWW14bExDQjVlWFJsZUhRZ1BTQmNJbHdpTENCNWVXeHBibVZ1YnlBOUlEQXNJSGw1YkdWdVp5
QTlJREFzSUhKbFkyOTJaWEpwYm1jZ1BTQXdMQ0JVUlZKU1QxSWdQU0F5TENCRlQwWWdQU0F4TzF4
dUlDQWdJSFJvYVhNdWJHVjRaWEl1YzJWMFNXNXdkWFFvYVc1d2RYUXBPMXh1SUNBZ0lIUm9hWE11
YkdWNFpYSXVlWGtnUFNCMGFHbHpMbmw1TzF4dUlDQWdJSFJvYVhNdWVYa3ViR1Y0WlhJZ1BTQjBh
R2x6TG14bGVHVnlPMXh1SUNBZ0lIUm9hWE11ZVhrdWNHRnljMlZ5SUQwZ2RHaHBjenRjYmlBZ0lD
QnBaaUFvZEhsd1pXOW1JSFJvYVhNdWJHVjRaWEl1ZVhsc2JHOWpJRDA5SUZ3aWRXNWtaV1pwYm1W
a1hDSXBYRzRnSUNBZ0lDQWdJSFJvYVhNdWJHVjRaWEl1ZVhsc2JHOWpJRDBnZTMwN1hHNGdJQ0Fn
ZG1GeUlIbDViRzlqSUQwZ2RHaHBjeTVzWlhobGNpNTVlV3hzYjJNN1hHNGdJQ0FnYkhOMFlXTnJM
bkIxYzJnb2VYbHNiMk1wTzF4dUlDQWdJSFpoY2lCeVlXNW5aWE1nUFNCMGFHbHpMbXhsZUdWeUxt
OXdkR2x2Ym5NZ0ppWWdkR2hwY3k1c1pYaGxjaTV2Y0hScGIyNXpMbkpoYm1kbGN6dGNiaUFnSUNC
cFppQW9kSGx3Wlc5bUlIUm9hWE11ZVhrdWNHRnljMlZGY25KdmNpQTlQVDBnWENKbWRXNWpkR2x2
Ymx3aUtWeHVJQ0FnSUNBZ0lDQjBhR2x6TG5CaGNuTmxSWEp5YjNJZ1BTQjBhR2x6TG5sNUxuQmhj
bk5sUlhKeWIzSTdYRzRnSUNBZ1puVnVZM1JwYjI0Z2NHOXdVM1JoWTJzb2Jpa2dlMXh1SUNBZ0lD
QWdJQ0J6ZEdGamF5NXNaVzVuZEdnZ1BTQnpkR0ZqYXk1c1pXNW5kR2dnTFNBeUlDb2dianRjYmlB
Z0lDQWdJQ0FnZG5OMFlXTnJMbXhsYm1kMGFDQTlJSFp6ZEdGamF5NXNaVzVuZEdnZ0xTQnVPMXh1
SUNBZ0lDQWdJQ0JzYzNSaFkyc3ViR1Z1WjNSb0lEMGdiSE4wWVdOckxteGxibWQwYUNBdElHNDdY
RzRnSUNBZ2ZWeHVJQ0FnSUdaMWJtTjBhVzl1SUd4bGVDZ3BJSHRjYmlBZ0lDQWdJQ0FnZG1GeUlI
UnZhMlZ1TzF4dUlDQWdJQ0FnSUNCMGIydGxiaUE5SUhObGJHWXViR1Y0WlhJdWJHVjRLQ2tnZkh3
Z01UdGNiaUFnSUNBZ0lDQWdhV1lnS0hSNWNHVnZaaUIwYjJ0bGJpQWhQVDBnWENKdWRXMWlaWEpj
SWlrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnZEc5clpXNGdQU0J6Wld4bUxuTjViV0p2YkhOZlczUnZh
MlZ1WFNCOGZDQjBiMnRsYmp0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2RH
OXJaVzQ3WEc0Z0lDQWdmVnh1SUNBZ0lIWmhjaUJ6ZVcxaWIyd3NJSEJ5WlVWeWNtOXlVM2x0WW05
c0xDQnpkR0YwWlN3Z1lXTjBhVzl1TENCaExDQnlMQ0I1ZVhaaGJDQTlJSHQ5TENCd0xDQnNaVzRz
SUc1bGQxTjBZWFJsTENCbGVIQmxZM1JsWkR0Y2JpQWdJQ0IzYUdsc1pTQW9kSEoxWlNrZ2UxeHVJ
Q0FnSUNBZ0lDQnpkR0YwWlNBOUlITjBZV05yVzNOMFlXTnJMbXhsYm1kMGFDQXRJREZkTzF4dUlD
QWdJQ0FnSUNCcFppQW9kR2hwY3k1a1pXWmhkV3gwUVdOMGFXOXVjMXR6ZEdGMFpWMHBJSHRjYmlB
Z0lDQWdJQ0FnSUNBZ0lHRmpkR2x2YmlBOUlIUm9hWE11WkdWbVlYVnNkRUZqZEdsdmJuTmJjM1Jo
ZEdWZE8xeHVJQ0FnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tITjVi
V0p2YkNBOVBUMGdiblZzYkNCOGZDQjBlWEJsYjJZZ2MzbHRZbTlzSUQwOUlGd2lkVzVrWldacGJt
VmtYQ0lwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCemVXMWliMndnUFNCc1pYZ29LVHRjYmlB
Z0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0FnSUdGamRHbHZiaUE5SUhSaFlteGxXM04w
WVhSbFhTQW1KaUIwWVdKc1pWdHpkR0YwWlYxYmMzbHRZbTlzWFR0Y2JpQWdJQ0FnSUNBZ2ZWeHVJ
Q0FnSUNBZ0lDQnBaaUFvZEhsd1pXOW1JR0ZqZEdsdmJpQTlQVDBnWENKMWJtUmxabWx1WldSY0lp
QjhmQ0FoWVdOMGFXOXVMbXhsYm1kMGFDQjhmQ0FoWVdOMGFXOXVXekJkS1NCN1hHNGdJQ0FnSUNB
Z0lDQWdJQ0IyWVhJZ1pYSnlVM1J5SUQwZ1hDSmNJanRjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2do
Y21WamIzWmxjbWx1WnlrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHVjRjR1ZqZEdWa0lEMGdX
MTA3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWm05eUlDaHdJR2x1SUhSaFlteGxXM04wWVhSbFhT
bGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tIUm9hWE11ZEdWeWJXbHVZV3h6WDF0
d1hTQW1KaUJ3SUQ0Z01pa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdaWGh3
WldOMFpXUXVjSFZ6YUNoY0lpZGNJaUFySUhSb2FYTXVkR1Z5YldsdVlXeHpYMXR3WFNBcklGd2lK
MXdpS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lD
QWdJR2xtSUNoMGFHbHpMbXhsZUdWeUxuTm9iM2RRYjNOcGRHbHZiaWtnZTF4dUlDQWdJQ0FnSUNB
Z0lDQWdJQ0FnSUNBZ0lDQmxjbkpUZEhJZ1BTQmNJbEJoY25ObElHVnljbTl5SUc5dUlHeHBibVVn
WENJZ0t5QW9lWGxzYVc1bGJtOGdLeUF4S1NBcklGd2lPbHhjYmx3aUlDc2dkR2hwY3k1c1pYaGxj
aTV6YUc5M1VHOXphWFJwYjI0b0tTQXJJRndpWEZ4dVJYaHdaV04wYVc1bklGd2lJQ3NnWlhod1pX
TjBaV1F1YW05cGJpaGNJaXdnWENJcElDc2dYQ0lzSUdkdmRDQW5YQ0lnS3lBb2RHaHBjeTUwWlhK
dGFXNWhiSE5mVzNONWJXSnZiRjBnZkh3Z2MzbHRZbTlzS1NBcklGd2lKMXdpTzF4dUlDQWdJQ0Fn
SUNBZ0lDQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHVnlj
bE4wY2lBOUlGd2lVR0Z5YzJVZ1pYSnliM0lnYjI0Z2JHbHVaU0JjSWlBcklDaDVlV3hwYm1WdWJ5
QXJJREVwSUNzZ1hDSTZJRlZ1Wlhod1pXTjBaV1FnWENJZ0t5QW9jM2x0WW05c0lEMDlJREUvWENK
bGJtUWdiMllnYVc1d2RYUmNJanBjSWlkY0lpQXJJQ2gwYUdsekxuUmxjbTFwYm1Gc2MxOWJjM2x0
WW05c1hTQjhmQ0J6ZVcxaWIyd3BJQ3NnWENJblhDSXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJ
SDFjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IwYUdsekxuQmhjbk5sUlhKeWIzSW9aWEp5VTNSeUxD
QjdkR1Y0ZERvZ2RHaHBjeTVzWlhobGNpNXRZWFJqYUN3Z2RHOXJaVzQ2SUhSb2FYTXVkR1Z5Ylds
dVlXeHpYMXR6ZVcxaWIyeGRJSHg4SUhONWJXSnZiQ3dnYkdsdVpUb2dkR2hwY3k1c1pYaGxjaTU1
ZVd4cGJtVnVieXdnYkc5ak9pQjVlV3h2WXl3Z1pYaHdaV04wWldRNklHVjRjR1ZqZEdWa2ZTazdY
RzRnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdhV1lnS0dGamRH
bHZibHN3WFNCcGJuTjBZVzVqWlc5bUlFRnljbUY1SUNZbUlHRmpkR2x2Ymk1c1pXNW5kR2dnUGlB
eEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvWENKUVlYSnpaU0JG
Y25KdmNqb2diWFZzZEdsd2JHVWdZV04wYVc5dWN5QndiM056YVdKc1pTQmhkQ0J6ZEdGMFpUb2dY
Q0lnS3lCemRHRjBaU0FySUZ3aUxDQjBiMnRsYmpvZ1hDSWdLeUJ6ZVcxaWIyd3BPMXh1SUNBZ0lD
QWdJQ0I5WEc0Z0lDQWdJQ0FnSUhOM2FYUmphQ0FvWVdOMGFXOXVXekJkS1NCN1hHNGdJQ0FnSUNB
Z0lHTmhjMlVnTVRwY2JpQWdJQ0FnSUNBZ0lDQWdJSE4wWVdOckxuQjFjMmdvYzNsdFltOXNLVHRj
YmlBZ0lDQWdJQ0FnSUNBZ0lIWnpkR0ZqYXk1d2RYTm9LSFJvYVhNdWJHVjRaWEl1ZVhsMFpYaDBL
VHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHeHpkR0ZqYXk1d2RYTm9LSFJvYVhNdWJHVjRaWEl1ZVhsc2JH
OWpLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lITjBZV05yTG5CMWMyZ29ZV04wYVc5dVd6RmRLVHRjYmlB
Z0lDQWdJQ0FnSUNBZ0lITjViV0p2YkNBOUlHNTFiR3c3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFv
SVhCeVpVVnljbTl5VTNsdFltOXNLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZVhsc1pXNW5J
RDBnZEdocGN5NXNaWGhsY2k1NWVXeGxibWM3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZVhsMFpY
aDBJRDBnZEdocGN5NXNaWGhsY2k1NWVYUmxlSFE3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZVhs
c2FXNWxibThnUFNCMGFHbHpMbXhsZUdWeUxubDViR2x1Wlc1dk8xeHVJQ0FnSUNBZ0lDQWdJQ0Fn
SUNBZ0lIbDViRzlqSUQwZ2RHaHBjeTVzWlhobGNpNTVlV3hzYjJNN1hHNGdJQ0FnSUNBZ0lDQWdJ
Q0FnSUNBZ2FXWWdLSEpsWTI5MlpYSnBibWNnUGlBd0tWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lD
QWdJQ0J5WldOdmRtVnlhVzVuTFMwN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNB
Z0lDQWdJQ0FnSUNBZ0lDQWdJSE41YldKdmJDQTlJSEJ5WlVWeWNtOXlVM2x0WW05c08xeHVJQ0Fn
SUNBZ0lDQWdJQ0FnSUNBZ0lIQnlaVVZ5Y205eVUzbHRZbTlzSUQwZ2JuVnNiRHRjYmlBZ0lDQWdJ
Q0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0FnSUdKeVpXRnJPMXh1SUNBZ0lDQWdJQ0JqWVhObElE
STZYRzRnSUNBZ0lDQWdJQ0FnSUNCc1pXNGdQU0IwYUdsekxuQnliMlIxWTNScGIyNXpYMXRoWTNS
cGIyNWJNVjFkV3pGZE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZVhsMllXd3VKQ0E5SUhaemRHRmphMXQy
YzNSaFkyc3ViR1Z1WjNSb0lDMGdiR1Z1WFR0Y2JpQWdJQ0FnSUNBZ0lDQWdJSGw1ZG1Gc0xsOGtJ
RDBnZTJacGNuTjBYMnhwYm1VNklHeHpkR0ZqYTF0c2MzUmhZMnN1YkdWdVozUm9JQzBnS0d4bGJp
QjhmQ0F4S1YwdVptbHljM1JmYkdsdVpTd2diR0Z6ZEY5c2FXNWxPaUJzYzNSaFkydGJiSE4wWVdO
ckxteGxibWQwYUNBdElERmRMbXhoYzNSZmJHbHVaU3dnWm1seWMzUmZZMjlzZFcxdU9pQnNjM1Jo
WTJ0YmJITjBZV05yTG14bGJtZDBhQ0F0SUNoc1pXNGdmSHdnTVNsZExtWnBjbk4wWDJOdmJIVnRi
aXdnYkdGemRGOWpiMngxYlc0NklHeHpkR0ZqYTF0c2MzUmhZMnN1YkdWdVozUm9JQzBnTVYwdWJH
RnpkRjlqYjJ4MWJXNTlPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLSEpoYm1kbGN5a2dlMXh1SUNB
Z0lDQWdJQ0FnSUNBZ0lDQWdJSGw1ZG1Gc0xsOGtMbkpoYm1kbElEMGdXMnh6ZEdGamExdHNjM1Jo
WTJzdWJHVnVaM1JvSUMwZ0tHeGxiaUI4ZkNBeEtWMHVjbUZ1WjJWYk1GMHNJR3h6ZEdGamExdHNj
M1JoWTJzdWJHVnVaM1JvSUMwZ01WMHVjbUZ1WjJWYk1WMWRPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZW
eHVJQ0FnSUNBZ0lDQWdJQ0FnY2lBOUlIUm9hWE11Y0dWeVptOXliVUZqZEdsdmJpNWpZV3hzS0hs
NWRtRnNMQ0I1ZVhSbGVIUXNJSGw1YkdWdVp5d2dlWGxzYVc1bGJtOHNJSFJvYVhNdWVYa3NJR0Zq
ZEdsdmJsc3hYU3dnZG5OMFlXTnJMQ0JzYzNSaFkyc3BPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdL
SFI1Y0dWdlppQnlJQ0U5UFNCY0luVnVaR1ZtYVc1bFpGd2lLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lD
QWdJQ0FnY21WMGRYSnVJSEk3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNC
cFppQW9iR1Z1S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2MzUmhZMnNnUFNCemRHRmpheTV6
YkdsalpTZ3dMQ0F0TVNBcUlHeGxiaUFxSURJcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIWnpk
R0ZqYXlBOUlIWnpkR0ZqYXk1emJHbGpaU2d3TENBdE1TQXFJR3hsYmlrN1hHNGdJQ0FnSUNBZ0lD
QWdJQ0FnSUNBZ2JITjBZV05ySUQwZ2JITjBZV05yTG5Oc2FXTmxLREFzSUMweElDb2diR1Z1S1R0
Y2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lITjBZV05yTG5CMWMyZ29kR2hw
Y3k1d2NtOWtkV04wYVc5dWMxOWJZV04wYVc5dVd6RmRYVnN3WFNrN1hHNGdJQ0FnSUNBZ0lDQWdJ
Q0IyYzNSaFkyc3VjSFZ6YUNoNWVYWmhiQzRrS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJR3h6ZEdGamF5
NXdkWE5vS0hsNWRtRnNMbDhrS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJRzVsZDFOMFlYUmxJRDBnZEdG
aWJHVmJjM1JoWTJ0YmMzUmhZMnN1YkdWdVozUm9JQzBnTWwxZFczTjBZV05yVzNOMFlXTnJMbXhs
Ym1kMGFDQXRJREZkWFR0Y2JpQWdJQ0FnSUNBZ0lDQWdJSE4wWVdOckxuQjFjMmdvYm1WM1UzUmhk
R1VwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdZbkpsWVdzN1hHNGdJQ0FnSUNBZ0lHTmhjMlVnTXpwY2Jp
QWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQjBjblZsTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnZlZ4
dUlDQWdJSEpsZEhWeWJpQjBjblZsTzF4dWZWeHVmVHRjYmk4cUlFcHBjMjl1SUdkbGJtVnlZWFJs
WkNCc1pYaGxjaUFxTDF4dWRtRnlJR3hsZUdWeUlEMGdLR1oxYm1OMGFXOXVLQ2w3WEc1MllYSWdi
R1Y0WlhJZ1BTQW9lMFZQUmpveExGeHVjR0Z5YzJWRmNuSnZjanBtZFc1amRHbHZiaUJ3WVhKelpV
VnljbTl5S0hOMGNpd2dhR0Z6YUNrZ2UxeHVJQ0FnSUNBZ0lDQnBaaUFvZEdocGN5NTVlUzV3WVhK
elpYSXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIUm9hWE11ZVhrdWNHRnljMlZ5TG5CaGNuTmxSWEp5
YjNJb2MzUnlMQ0JvWVhOb0tUdGNiaUFnSUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdJ
Q0FnSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWh6ZEhJcE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ2ZT
eGNibk5sZEVsdWNIVjBPbVoxYm1OMGFXOXVJQ2hwYm5CMWRDa2dlMXh1SUNBZ0lDQWdJQ0IwYUds
ekxsOXBibkIxZENBOUlHbHVjSFYwTzF4dUlDQWdJQ0FnSUNCMGFHbHpMbDl0YjNKbElEMGdkR2hw
Y3k1ZmJHVnpjeUE5SUhSb2FYTXVaRzl1WlNBOUlHWmhiSE5sTzF4dUlDQWdJQ0FnSUNCMGFHbHpM
bmw1YkdsdVpXNXZJRDBnZEdocGN5NTVlV3hsYm1jZ1BTQXdPMXh1SUNBZ0lDQWdJQ0IwYUdsekxu
bDVkR1Y0ZENBOUlIUm9hWE11YldGMFkyaGxaQ0E5SUhSb2FYTXViV0YwWTJnZ1BTQW5KenRjYmlB
Z0lDQWdJQ0FnZEdocGN5NWpiMjVrYVhScGIyNVRkR0ZqYXlBOUlGc25TVTVKVkVsQlRDZGRPMXh1
SUNBZ0lDQWdJQ0IwYUdsekxubDViR3h2WXlBOUlIdG1hWEp6ZEY5c2FXNWxPakVzWm1seWMzUmZZ
MjlzZFcxdU9qQXNiR0Z6ZEY5c2FXNWxPakVzYkdGemRGOWpiMngxYlc0Nk1IMDdYRzRnSUNBZ0lD
QWdJR2xtSUNoMGFHbHpMbTl3ZEdsdmJuTXVjbUZ1WjJWektTQjBhR2x6TG5sNWJHeHZZeTV5WVc1
blpTQTlJRnN3TERCZE8xeHVJQ0FnSUNBZ0lDQjBhR2x6TG05bVpuTmxkQ0E5SURBN1hHNGdJQ0Fn
SUNBZ0lISmxkSFZ5YmlCMGFHbHpPMXh1SUNBZ0lIMHNYRzVwYm5CMWREcG1kVzVqZEdsdmJpQW9L
U0I3WEc0Z0lDQWdJQ0FnSUhaaGNpQmphQ0E5SUhSb2FYTXVYMmx1Y0hWMFd6QmRPMXh1SUNBZ0lD
QWdJQ0IwYUdsekxubDVkR1Y0ZENBclBTQmphRHRjYmlBZ0lDQWdJQ0FnZEdocGN5NTVlV3hsYm1j
ckt6dGNiaUFnSUNBZ0lDQWdkR2hwY3k1dlptWnpaWFFyS3p0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTV0
WVhSamFDQXJQU0JqYUR0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTV0WVhSamFHVmtJQ3M5SUdOb08xeHVJ
Q0FnSUNBZ0lDQjJZWElnYkdsdVpYTWdQU0JqYUM1dFlYUmphQ2d2S0Q4NlhGeHlYRnh1UDN4Y1hH
NHBMaW92WnlrN1hHNGdJQ0FnSUNBZ0lHbG1JQ2hzYVc1bGN5a2dlMXh1SUNBZ0lDQWdJQ0FnSUNB
Z2RHaHBjeTU1ZVd4cGJtVnVieXNyTzF4dUlDQWdJQ0FnSUNBZ0lDQWdkR2hwY3k1NWVXeHNiMk11
YkdGemRGOXNhVzVsS3lzN1hHNGdJQ0FnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lDQWdJ
Q0IwYUdsekxubDViR3h2WXk1c1lYTjBYMk52YkhWdGJpc3JPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lD
QWdJQ0FnSUdsbUlDaDBhR2x6TG05d2RHbHZibk11Y21GdVoyVnpLU0IwYUdsekxubDViR3h2WXk1
eVlXNW5aVnN4WFNzck8xeHVYRzRnSUNBZ0lDQWdJSFJvYVhNdVgybHVjSFYwSUQwZ2RHaHBjeTVm
YVc1d2RYUXVjMnhwWTJVb01TazdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQmphRHRjYmlBZ0lDQjlM
Rnh1ZFc1d2RYUTZablZ1WTNScGIyNGdLR05vS1NCN1hHNGdJQ0FnSUNBZ0lIWmhjaUJzWlc0Z1BT
QmphQzVzWlc1bmRHZzdYRzRnSUNBZ0lDQWdJSFpoY2lCc2FXNWxjeUE5SUdOb0xuTndiR2wwS0M4
b1B6cGNYSEpjWEc0L2ZGeGNiaWt2WnlrN1hHNWNiaUFnSUNBZ0lDQWdkR2hwY3k1ZmFXNXdkWFFn
UFNCamFDQXJJSFJvYVhNdVgybHVjSFYwTzF4dUlDQWdJQ0FnSUNCMGFHbHpMbmw1ZEdWNGRDQTlJ
SFJvYVhNdWVYbDBaWGgwTG5OMVluTjBjaWd3TENCMGFHbHpMbmw1ZEdWNGRDNXNaVzVuZEdndGJH
VnVMVEVwTzF4dUlDQWdJQ0FnSUNBdkwzUm9hWE11ZVhsc1pXNW5JQzA5SUd4bGJqdGNiaUFnSUNB
Z0lDQWdkR2hwY3k1dlptWnpaWFFnTFQwZ2JHVnVPMXh1SUNBZ0lDQWdJQ0IyWVhJZ2IyeGtUR2x1
WlhNZ1BTQjBhR2x6TG0xaGRHTm9Mbk53YkdsMEtDOG9QenBjWEhKY1hHNC9mRnhjYmlrdlp5azdY
RzRnSUNBZ0lDQWdJSFJvYVhNdWJXRjBZMmdnUFNCMGFHbHpMbTFoZEdOb0xuTjFZbk4wY2lnd0xD
QjBhR2x6TG0xaGRHTm9MbXhsYm1kMGFDMHhLVHRjYmlBZ0lDQWdJQ0FnZEdocGN5NXRZWFJqYUdW
a0lEMGdkR2hwY3k1dFlYUmphR1ZrTG5OMVluTjBjaWd3TENCMGFHbHpMbTFoZEdOb1pXUXViR1Z1
WjNSb0xURXBPMXh1WEc0Z0lDQWdJQ0FnSUdsbUlDaHNhVzVsY3k1c1pXNW5kR2d0TVNrZ2RHaHBj
eTU1ZVd4cGJtVnVieUF0UFNCc2FXNWxjeTVzWlc1bmRHZ3RNVHRjYmlBZ0lDQWdJQ0FnZG1GeUlI
SWdQU0IwYUdsekxubDViR3h2WXk1eVlXNW5aVHRjYmx4dUlDQWdJQ0FnSUNCMGFHbHpMbmw1Ykd4
dll5QTlJSHRtYVhKemRGOXNhVzVsT2lCMGFHbHpMbmw1Ykd4dll5NW1hWEp6ZEY5c2FXNWxMRnh1
SUNBZ0lDQWdJQ0FnSUd4aGMzUmZiR2x1WlRvZ2RHaHBjeTU1ZVd4cGJtVnVieXN4TEZ4dUlDQWdJ
Q0FnSUNBZ0lHWnBjbk4wWDJOdmJIVnRiam9nZEdocGN5NTVlV3hzYjJNdVptbHljM1JmWTI5c2RX
MXVMRnh1SUNBZ0lDQWdJQ0FnSUd4aGMzUmZZMjlzZFcxdU9pQnNhVzVsY3lBL1hHNGdJQ0FnSUNB
Z0lDQWdJQ0FnSUNoc2FXNWxjeTVzWlc1bmRHZ2dQVDA5SUc5c1pFeHBibVZ6TG14bGJtZDBhQ0Ev
SUhSb2FYTXVlWGxzYkc5akxtWnBjbk4wWDJOdmJIVnRiaUE2SURBcElDc2diMnhrVEdsdVpYTmJi
MnhrVEdsdVpYTXViR1Z1WjNSb0lDMGdiR2x1WlhNdWJHVnVaM1JvWFM1c1pXNW5kR2dnTFNCc2FX
NWxjMXN3WFM1c1pXNW5kR2c2WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJSFJvYVhNdWVYbHNiRzlqTG1a
cGNuTjBYMk52YkhWdGJpQXRJR3hsYmx4dUlDQWdJQ0FnSUNBZ0lIMDdYRzVjYmlBZ0lDQWdJQ0Fn
YVdZZ0tIUm9hWE11YjNCMGFXOXVjeTV5WVc1blpYTXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIUm9h
WE11ZVhsc2JHOWpMbkpoYm1kbElEMGdXM0piTUYwc0lISmJNRjBnS3lCMGFHbHpMbmw1YkdWdVp5
QXRJR3hsYmwwN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlIUm9hWE03WEc0
Z0lDQWdmU3hjYm0xdmNtVTZablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJQ0FnSUNCMGFHbHpMbDl0
YjNKbElEMGdkSEoxWlR0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUhSb2FYTTdYRzRnSUNBZ2ZTeGNi
bXhsYzNNNlpuVnVZM1JwYjI0Z0tHNHBJSHRjYmlBZ0lDQWdJQ0FnZEdocGN5NTFibkIxZENoMGFH
bHpMbTFoZEdOb0xuTnNhV05sS0c0cEtUdGNiaUFnSUNCOUxGeHVjR0Z6ZEVsdWNIVjBPbVoxYm1O
MGFXOXVJQ2dwSUh0Y2JpQWdJQ0FnSUNBZ2RtRnlJSEJoYzNRZ1BTQjBhR2x6TG0xaGRHTm9aV1F1
YzNWaWMzUnlLREFzSUhSb2FYTXViV0YwWTJobFpDNXNaVzVuZEdnZ0xTQjBhR2x6TG0xaGRHTm9M
bXhsYm1kMGFDazdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQW9jR0Z6ZEM1c1pXNW5kR2dnUGlBeU1D
QS9JQ2N1TGk0bk9pY25LU0FySUhCaGMzUXVjM1ZpYzNSeUtDMHlNQ2t1Y21Wd2JHRmpaU2d2WEZ4
dUwyY3NJRndpWENJcE8xeHVJQ0FnSUgwc1hHNTFjR052YldsdVowbHVjSFYwT21aMWJtTjBhVzl1
SUNncElIdGNiaUFnSUNBZ0lDQWdkbUZ5SUc1bGVIUWdQU0IwYUdsekxtMWhkR05vTzF4dUlDQWdJ
Q0FnSUNCcFppQW9ibVY0ZEM1c1pXNW5kR2dnUENBeU1Da2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2Jt
VjRkQ0FyUFNCMGFHbHpMbDlwYm5CMWRDNXpkV0p6ZEhJb01Dd2dNakF0Ym1WNGRDNXNaVzVuZEdn
cE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQW9ibVY0ZEM1emRXSnpkSElv
TUN3eU1Da3JLRzVsZUhRdWJHVnVaM1JvSUQ0Z01qQWdQeUFuTGk0dUp6b25KeWtwTG5KbGNHeGhZ
MlVvTDF4Y2JpOW5MQ0JjSWx3aUtUdGNiaUFnSUNCOUxGeHVjMmh2ZDFCdmMybDBhVzl1T21aMWJt
TjBhVzl1SUNncElIdGNiaUFnSUNBZ0lDQWdkbUZ5SUhCeVpTQTlJSFJvYVhNdWNHRnpkRWx1Y0hW
MEtDazdYRzRnSUNBZ0lDQWdJSFpoY2lCaklEMGdibVYzSUVGeWNtRjVLSEJ5WlM1c1pXNW5kR2dn
S3lBeEtTNXFiMmx1S0Z3aUxWd2lLVHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSEJ5WlNBcklIUm9h
WE11ZFhCamIyMXBibWRKYm5CMWRDZ3BJQ3NnWENKY1hHNWNJaUFySUdNclhDSmVYQ0k3WEc0Z0lD
QWdmU3hjYm01bGVIUTZablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJQ0FnSUNCcFppQW9kR2hwY3k1
a2IyNWxLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2RHaHBjeTVGVDBZN1hHNGdJQ0Fn
SUNBZ0lIMWNiaUFnSUNBZ0lDQWdhV1lnS0NGMGFHbHpMbDlwYm5CMWRDa2dkR2hwY3k1a2IyNWxJ
RDBnZEhKMVpUdGNibHh1SUNBZ0lDQWdJQ0IyWVhJZ2RHOXJaVzRzWEc0Z0lDQWdJQ0FnSUNBZ0lD
QnRZWFJqYUN4Y2JpQWdJQ0FnSUNBZ0lDQWdJSFJsYlhCTllYUmphQ3hjYmlBZ0lDQWdJQ0FnSUNB
Z0lHbHVaR1Y0TEZ4dUlDQWdJQ0FnSUNBZ0lDQWdZMjlzTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdiR2x1
WlhNN1hHNGdJQ0FnSUNBZ0lHbG1JQ2doZEdocGN5NWZiVzl5WlNrZ2UxeHVJQ0FnSUNBZ0lDQWdJ
Q0FnZEdocGN5NTVlWFJsZUhRZ1BTQW5KenRjYmlBZ0lDQWdJQ0FnSUNBZ0lIUm9hWE11YldGMFky
Z2dQU0FuSnp0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQjJZWElnY25Wc1pYTWdQU0IwYUds
ekxsOWpkWEp5Wlc1MFVuVnNaWE1vS1R0Y2JpQWdJQ0FnSUNBZ1ptOXlJQ2gyWVhJZ2FUMHdPMmtn
UENCeWRXeGxjeTVzWlc1bmRHZzdJR2tyS3lrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnZEdWdGNFMWhk
R05vSUQwZ2RHaHBjeTVmYVc1d2RYUXViV0YwWTJnb2RHaHBjeTV5ZFd4bGMxdHlkV3hsYzF0cFhW
MHBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLSFJsYlhCTllYUmphQ0FtSmlBb0lXMWhkR05vSUh4
OElIUmxiWEJOWVhSamFGc3dYUzVzWlc1bmRHZ2dQaUJ0WVhSamFGc3dYUzVzWlc1bmRHZ3BLU0I3
WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYldGMFkyZ2dQU0IwWlcxd1RXRjBZMmc3WEc0Z0lDQWdJ
Q0FnSUNBZ0lDQWdJQ0FnYVc1a1pYZ2dQU0JwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlD
Z2hkR2hwY3k1dmNIUnBiMjV6TG1ac1pYZ3BJR0p5WldGck8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZlZ4
dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lHbG1JQ2h0WVhSamFDa2dlMXh1SUNBZ0lDQWdJQ0Fn
SUNBZ2JHbHVaWE1nUFNCdFlYUmphRnN3WFM1dFlYUmphQ2d2S0Q4NlhGeHlYRnh1UDN4Y1hHNHBM
aW92WnlrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2JHbHVaWE1wSUhSb2FYTXVlWGxzYVc1bGJt
OGdLejBnYkdsdVpYTXViR1Z1WjNSb08xeHVJQ0FnSUNBZ0lDQWdJQ0FnZEdocGN5NTVlV3hzYjJN
Z1BTQjdabWx5YzNSZmJHbHVaVG9nZEdocGN5NTVlV3hzYjJNdWJHRnpkRjlzYVc1bExGeHVJQ0Fn
SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdiR0Z6ZEY5c2FXNWxPaUIwYUdsekxubDVi
R2x1Wlc1dkt6RXNYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JtYVhKemRG
OWpiMngxYlc0NklIUm9hWE11ZVhsc2JHOWpMbXhoYzNSZlkyOXNkVzF1TEZ4dUlDQWdJQ0FnSUNB
Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2JHRnpkRjlqYjJ4MWJXNDZJR3hwYm1WeklEOGdiR2x1
WlhOYmJHbHVaWE11YkdWdVozUm9MVEZkTG14bGJtZDBhQzFzYVc1bGMxdHNhVzVsY3k1c1pXNW5k
R2d0TVYwdWJXRjBZMmdvTDF4Y2NqOWNYRzQvTHlsYk1GMHViR1Z1WjNSb0lEb2dkR2hwY3k1NWVX
eHNiMk11YkdGemRGOWpiMngxYlc0Z0t5QnRZWFJqYUZzd1hTNXNaVzVuZEdoOU8xeHVJQ0FnSUNB
Z0lDQWdJQ0FnZEdocGN5NTVlWFJsZUhRZ0t6MGdiV0YwWTJoYk1GMDdYRzRnSUNBZ0lDQWdJQ0Fn
SUNCMGFHbHpMbTFoZEdOb0lDczlJRzFoZEdOb1d6QmRPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2RHaHBj
eTV0WVhSamFHVnpJRDBnYldGMFkyZzdYRzRnSUNBZ0lDQWdJQ0FnSUNCMGFHbHpMbmw1YkdWdVp5
QTlJSFJvYVhNdWVYbDBaWGgwTG14bGJtZDBhRHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2gwYUds
ekxtOXdkR2x2Ym5NdWNtRnVaMlZ6S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RHaHBjeTU1
ZVd4c2IyTXVjbUZ1WjJVZ1BTQmJkR2hwY3k1dlptWnpaWFFzSUhSb2FYTXViMlptYzJWMElDczlJ
SFJvYVhNdWVYbHNaVzVuWFR0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lI
Um9hWE11WDIxdmNtVWdQU0JtWVd4elpUdGNiaUFnSUNBZ0lDQWdJQ0FnSUhSb2FYTXVYMmx1Y0hW
MElEMGdkR2hwY3k1ZmFXNXdkWFF1YzJ4cFkyVW9iV0YwWTJoYk1GMHViR1Z1WjNSb0tUdGNiaUFn
SUNBZ0lDQWdJQ0FnSUhSb2FYTXViV0YwWTJobFpDQXJQU0J0WVhSamFGc3dYVHRjYmlBZ0lDQWdJ
Q0FnSUNBZ0lIUnZhMlZ1SUQwZ2RHaHBjeTV3WlhKbWIzSnRRV04wYVc5dUxtTmhiR3dvZEdocGN5
d2dkR2hwY3k1NWVTd2dkR2hwY3l3Z2NuVnNaWE5iYVc1a1pYaGRMSFJvYVhNdVkyOXVaR2wwYVc5
dVUzUmhZMnRiZEdocGN5NWpiMjVrYVhScGIyNVRkR0ZqYXk1c1pXNW5kR2d0TVYwcE8xeHVJQ0Fn
SUNBZ0lDQWdJQ0FnYVdZZ0tIUm9hWE11Wkc5dVpTQW1KaUIwYUdsekxsOXBibkIxZENrZ2RHaHBj
eTVrYjI1bElEMGdabUZzYzJVN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2RHOXJaVzRwSUhKbGRI
VnliaUIwYjJ0bGJqdGNiaUFnSUNBZ0lDQWdJQ0FnSUdWc2MyVWdjbVYwZFhKdU8xeHVJQ0FnSUNB
Z0lDQjlYRzRnSUNBZ0lDQWdJR2xtSUNoMGFHbHpMbDlwYm5CMWRDQTlQVDBnWENKY0lpa2dlMXh1
SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhSb2FYTXVSVTlHTzF4dUlDQWdJQ0FnSUNCOUlHVnNj
MlVnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlIUm9hWE11Y0dGeWMyVkZjbkp2Y2lnblRH
VjRhV05oYkNCbGNuSnZjaUJ2YmlCc2FXNWxJQ2NyS0hSb2FYTXVlWGxzYVc1bGJtOHJNU2tySnk0
Z1ZXNXlaV052WjI1cGVtVmtJSFJsZUhRdVhGeHVKeXQwYUdsekxuTm9iM2RRYjNOcGRHbHZiaWdw
TEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjdkR1Y0ZERvZ1hDSmNJaXdnZEc5clpXNDZJ
RzUxYkd3c0lHeHBibVU2SUhSb2FYTXVlWGxzYVc1bGJtOTlLVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlD
QWdJSDBzWEc1c1pYZzZablZ1WTNScGIyNGdiR1Y0S0NrZ2UxeHVJQ0FnSUNBZ0lDQjJZWElnY2lB
OUlIUm9hWE11Ym1WNGRDZ3BPMXh1SUNBZ0lDQWdJQ0JwWmlBb2RIbHdaVzltSUhJZ0lUMDlJQ2Qx
Ym1SbFptbHVaV1FuS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdjanRjYmlBZ0lDQWdJ
Q0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCMGFHbHpMbXhsZUNncE8x
eHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ2ZTeGNibUpsWjJsdU9tWjFibU4wYVc5dUlHSmxaMmx1S0dO
dmJtUnBkR2x2YmlrZ2UxeHVJQ0FnSUNBZ0lDQjBhR2x6TG1OdmJtUnBkR2x2YmxOMFlXTnJMbkIx
YzJnb1kyOXVaR2wwYVc5dUtUdGNiaUFnSUNCOUxGeHVjRzl3VTNSaGRHVTZablZ1WTNScGIyNGdj
Rzl3VTNSaGRHVW9LU0I3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUIwYUdsekxtTnZibVJwZEdsdmJs
TjBZV05yTG5CdmNDZ3BPMXh1SUNBZ0lIMHNYRzVmWTNWeWNtVnVkRkoxYkdWek9tWjFibU4wYVc5
dUlGOWpkWEp5Wlc1MFVuVnNaWE1vS1NCN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCMGFHbHpMbU52
Ym1ScGRHbHZibk5iZEdocGN5NWpiMjVrYVhScGIyNVRkR0ZqYTF0MGFHbHpMbU52Ym1ScGRHbHZi
bE4wWVdOckxteGxibWQwYUMweFhWMHVjblZzWlhNN1hHNGdJQ0FnZlN4Y2JuUnZjRk4wWVhSbE9t
WjFibU4wYVc5dUlDZ3BJSHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSFJvYVhNdVkyOXVaR2wwYVc5
dVUzUmhZMnRiZEdocGN5NWpiMjVrYVhScGIyNVRkR0ZqYXk1c1pXNW5kR2d0TWwwN1hHNGdJQ0Fn
ZlN4Y2JuQjFjMmhUZEdGMFpUcG1kVzVqZEdsdmJpQmlaV2RwYmloamIyNWthWFJwYjI0cElIdGNi
aUFnSUNBZ0lDQWdkR2hwY3k1aVpXZHBiaWhqYjI1a2FYUnBiMjRwTzF4dUlDQWdJSDE5S1R0Y2Jt
eGxlR1Z5TG05d2RHbHZibk1nUFNCN2ZUdGNibXhsZUdWeUxuQmxjbVp2Y20xQlkzUnBiMjRnUFNC
bWRXNWpkR2x2YmlCaGJtOXVlVzF2ZFhNb2VYa3NlWGxmTENSaGRtOXBaR2x1WjE5dVlXMWxYMk52
Ykd4cGMybHZibk1zV1ZsZlUxUkJVbFJjYmk4cUtpOHBJSHRjYmx4dVhHNW1kVzVqZEdsdmJpQnpk
SEpwY0NoemRHRnlkQ3dnWlc1a0tTQjdYRzRnSUhKbGRIVnliaUI1ZVY4dWVYbDBaWGgwSUQwZ2VY
bGZMbmw1ZEdWNGRDNXpkV0p6ZEhJb2MzUmhjblFzSUhsNVh5NTVlV3hsYm1jdFpXNWtLVHRjYm4x
Y2JseHVYRzUyWVhJZ1dWbFRWRUZVUlQxWldWOVRWRUZTVkZ4dWMzZHBkR05vS0NSaGRtOXBaR2x1
WjE5dVlXMWxYMk52Ykd4cGMybHZibk1wSUh0Y2JtTmhjMlVnTURwY2JpQWdJQ0FnSUNBZ0lDQWdJ
Q0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWW9lWGxmTG5sNWRHVjRkQzV6YkdsalpT
Z3RNaWtnUFQwOUlGd2lYRnhjWEZ4Y1hGeGNJaWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNB
Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lITjBjbWx3S0RBc01TazdYRzRnSUNBZ0lDQWdJQ0Fn
SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZEdocGN5NWlaV2RwYmloY0ltMTFY
Q0lwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOUlH
VnNjMlVnYVdZb2VYbGZMbmw1ZEdWNGRDNXpiR2xqWlNndE1Ta2dQVDA5SUZ3aVhGeGNYRndpS1NC
N1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjM1J5
YVhBb01Dd3hLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJ
Q0FnSUNCMGFHbHpMbUpsWjJsdUtGd2laVzExWENJcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lD
QWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNB
Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSFJvYVhNdVltVm5hVzRvWENKdGRWd2lLVHRj
YmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJ
Q0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppaDVlVjh1ZVhsMFpY
aDBLU0J5WlhSMWNtNGdNVFU3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNB
Z0lDQWdJQ0JjYm1KeVpXRnJPMXh1WTJGelpTQXhPbkpsZEhWeWJpQXhOVHRjYm1KeVpXRnJPMXh1
WTJGelpTQXlPbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJ
Q0IwYUdsekxuQnZjRk4wWVhSbEtDazdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lD
QWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQXhOVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNB
Z0lDQWdJQ0FnSUNBZ0lDQWdJRnh1WW5KbFlXczdYRzVqWVhObElETTZkR2hwY3k1aVpXZHBiaWdu
Y21GM0p5azdJSEpsZEhWeWJpQXhOVHRjYm1KeVpXRnJPMXh1WTJGelpTQTBPbHh1SUNBZ0lDQWdJ
Q0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSFJvYVhNdWNHOXdVM1JoZEdVb0tU
dGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQXZMeUJUYUc5
MWJHUWdZbVVnZFhOcGJtY2dZSFJvYVhNdWRHOXdVM1JoZEdVb0tXQWdZbVZzYjNjc0lHSjFkQ0Jw
ZENCamRYSnlaVzUwYkhsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJ
Q0FnSUNBdkx5QnlaWFIxY201eklIUm9aU0J6WldOdmJtUWdkRzl3SUdsdWMzUmxZV1FnYjJZZ2RH
aGxJR1pwY25OMElIUnZjQzRnVDNCbGJtVmtJR0Z1WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNB
Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnTHk4Z2FYTnpkV1VnWVdKdmRYUWdhWFFnWVhRZ2FIUjBjSE02
THk5bmFYUm9kV0l1WTI5dEwzcGhZV05vTDJwcGMyOXVMMmx6YzNWbGN5OHlPVEZjYmlBZ0lDQWdJ
Q0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2RHaHBjeTVqYjI1a2FY
UnBiMjVUZEdGamExdDBhR2x6TG1OdmJtUnBkR2x2YmxOMFlXTnJMbXhsYm1kMGFDMHhYU0E5UFQw
Z0ozSmhkeWNwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0Fn
SUNBZ0lISmxkSFZ5YmlBeE5UdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJ
Q0FnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lD
QWdJQ0FnSUNBZ0lDQWdlWGxmTG5sNWRHVjRkQ0E5SUhsNVh5NTVlWFJsZUhRdWMzVmljM1J5S0RV
c0lIbDVYeTU1ZVd4bGJtY3RPU2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0Fn
SUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnSjBWT1JGOVNRVmRmUWt4UFEwc25PMXh1SUNBZ0lDQWdJ
Q0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lD
QWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRnh1WW5KbFlXczdYRzVqWVhObElEVTZJSEpsZEhW
eWJpQXhOVHNnWEc1aWNtVmhhenRjYm1OaGMyVWdOanBjYmlBZ2RHaHBjeTV3YjNCVGRHRjBaU2dw
TzF4dUlDQnlaWFIxY200Z01UUTdYRzVjYm1KeVpXRnJPMXh1WTJGelpTQTNPbkpsZEhWeWJpQTJO
VHRjYm1KeVpXRnJPMXh1WTJGelpTQTRPbkpsZEhWeWJpQTJPRHRjYm1KeVpXRnJPMXh1WTJGelpT
QTVPaUJ5WlhSMWNtNGdNVGs3SUZ4dVluSmxZV3M3WEc1allYTmxJREV3T2x4dUlDQWdJQ0FnSUNB
Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhSb2FYTXVjRzl3VTNSaGRHVW9LVHRj
YmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IwYUdsekxtSmxa
Mmx1S0NkeVlYY25LVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lD
QWdJQ0J5WlhSMWNtNGdNak03WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNB
Z0lDQWdJQ0JjYm1KeVpXRnJPMXh1WTJGelpTQXhNVHB5WlhSMWNtNGdOVFU3WEc1aWNtVmhhenRj
Ym1OaGMyVWdNVEk2Y21WMGRYSnVJRFl3TzF4dVluSmxZV3M3WEc1allYTmxJREV6T25KbGRIVnli
aUF5T1R0Y2JtSnlaV0ZyTzF4dVkyRnpaU0F4TkRweVpYUjFjbTRnTkRjN1hHNWljbVZoYXp0Y2Jt
TmhjMlVnTVRVNmRHaHBjeTV3YjNCVGRHRjBaU2dwT3lCeVpYUjFjbTRnTkRRN1hHNWljbVZoYXp0
Y2JtTmhjMlVnTVRZNmRHaHBjeTV3YjNCVGRHRjBaU2dwT3lCeVpYUjFjbTRnTkRRN1hHNWljbVZo
YXp0Y2JtTmhjMlVnTVRjNmNtVjBkWEp1SURNME8xeHVZbkpsWVdzN1hHNWpZWE5sSURFNE9uSmxk
SFZ5YmlBek9UdGNibUp5WldGck8xeHVZMkZ6WlNBeE9UcHlaWFIxY200Z05URTdYRzVpY21WaGF6
dGNibU5oYzJVZ01qQTZjbVYwZFhKdUlEUTRPMXh1WW5KbFlXczdYRzVqWVhObElESXhPbHh1SUNC
MGFHbHpMblZ1Y0hWMEtIbDVYeTU1ZVhSbGVIUXBPMXh1SUNCMGFHbHpMbkJ2Y0ZOMFlYUmxLQ2s3
WEc0Z0lIUm9hWE11WW1WbmFXNG9KMk52YlNjcE8xeHVYRzVpY21WaGF6dGNibU5oYzJVZ01qSTZY
RzRnSUhSb2FYTXVjRzl3VTNSaGRHVW9LVHRjYmlBZ2NtVjBkWEp1SURFME8xeHVYRzVpY21WaGF6
dGNibU5oYzJVZ01qTTZjbVYwZFhKdUlEUTRPMXh1WW5KbFlXczdYRzVqWVhObElESTBPbkpsZEhW
eWJpQTNNenRjYm1KeVpXRnJPMXh1WTJGelpTQXlOVHB5WlhSMWNtNGdOekk3WEc1aWNtVmhhenRj
Ym1OaGMyVWdNalk2Y21WMGRYSnVJRGN5TzF4dVluSmxZV3M3WEc1allYTmxJREkzT25KbGRIVnli
aUE0Tnp0Y2JtSnlaV0ZyTzF4dVkyRnpaU0F5T0Rvdkx5QnBaMjV2Y21VZ2QyaHBkR1Z6Y0dGalpW
eHVZbkpsWVdzN1hHNWpZWE5sSURJNU9uUm9hWE11Y0c5d1UzUmhkR1VvS1RzZ2NtVjBkWEp1SURV
ME8xeHVZbkpsWVdzN1hHNWpZWE5sSURNd09uUm9hWE11Y0c5d1UzUmhkR1VvS1RzZ2NtVjBkWEp1
SURNek8xeHVZbkpsWVdzN1hHNWpZWE5sSURNeE9ubDVYeTU1ZVhSbGVIUWdQU0J6ZEhKcGNDZ3hM
RElwTG5KbGNHeGhZMlVvTDF4Y1hGeGNJaTluTENkY0lpY3BPeUJ5WlhSMWNtNGdPREE3WEc1aWNt
VmhhenRjYm1OaGMyVWdNekk2ZVhsZkxubDVkR1Y0ZENBOUlITjBjbWx3S0RFc01pa3VjbVZ3YkdG
alpTZ3ZYRnhjWENjdlp5eGNJaWRjSWlrN0lISmxkSFZ5YmlBNE1EdGNibUp5WldGck8xeHVZMkZ6
WlNBek16cHlaWFIxY200Z09EVTdYRzVpY21WaGF6dGNibU5oYzJVZ016UTZjbVYwZFhKdUlEZ3lP
MXh1WW5KbFlXczdYRzVqWVhObElETTFPbkpsZEhWeWJpQTRNanRjYm1KeVpXRnJPMXh1WTJGelpT
QXpOanB5WlhSMWNtNGdPRE03WEc1aWNtVmhhenRjYm1OaGMyVWdNemM2Y21WMGRYSnVJRGcwTzF4
dVluSmxZV3M3WEc1allYTmxJRE00T25KbGRIVnliaUE0TVR0Y2JtSnlaV0ZyTzF4dVkyRnpaU0F6
T1RweVpYUjFjbTRnTnpVN1hHNWljbVZoYXp0Y2JtTmhjMlVnTkRBNmNtVjBkWEp1SURjM08xeHVZ
bkpsWVdzN1hHNWpZWE5sSURReE9uSmxkSFZ5YmlBM01qdGNibUp5WldGck8xeHVZMkZ6WlNBME1q
cDVlVjh1ZVhsMFpYaDBJRDBnZVhsZkxubDVkR1Y0ZEM1eVpYQnNZV05sS0M5Y1hGeGNLRnRjWEZ4
Y1hGeGRYU2t2Wnl3bkpERW5LVHNnY21WMGRYSnVJRGN5TzF4dVluSmxZV3M3WEc1allYTmxJRFF6
T25KbGRIVnliaUFuU1U1V1FVeEpSQ2M3WEc1aWNtVmhhenRjYm1OaGMyVWdORFE2Y21WMGRYSnVJ
RFU3WEc1aWNtVmhhenRjYm4xY2JuMDdYRzVzWlhobGNpNXlkV3hsY3lBOUlGc3ZYaWcvT2x0ZVhG
eDRNREJkS2o4b1B6MG9YRng3WEZ4N0tTa3BMeXd2WGlnL09sdGVYRng0TURCZEt5a3ZMQzllS0Q4
NlcxNWNYSGd3TUYxN01peDlQeWcvUFNoY1hIdGNYSHQ4WEZ4Y1hGeGNlMXhjZTN4Y1hGeGNYRnhj
WEZ4Y2UxeGNlM3drS1NrcEx5d3ZYaWcvT2x4Y2UxeGNlMXhjZTF4Y2V5Zy9QVnRlWEZ3dlhTa3BM
eXd2WGlnL09seGNlMXhjZTF4Y2UxeGNlMXhjTDF0ZVhGeHpJVndpSXlVdExGeGNMbHhjTHpzdFBr
QmNYRnN0WEZ4ZVlGeGNleTErWFNzb1B6MWJQWDFjWEhOY1hDOHVYU2xjWEgxY1hIMWNYSDFjWEgw
cEx5d3ZYaWcvT2x0ZVhGeDRNREJkS2o4b1B6MG9YRng3WEZ4N1hGeDdYRng3S1NrcEx5d3ZYaWcv
T2x0Y1hITmNYRk5kS2o4dExTaCtLVDljWEgxY1hIMHBMeXd2WGlnL09seGNLQ2t2TEM5ZUtEODZY
RndwS1M4c0wxNG9QenBjWEh0Y1hIdGNYSHRjWEhzcEx5d3ZYaWcvT2x4Y2ZWeGNmVnhjZlZ4Y2ZT
a3ZMQzllS0Q4NlhGeDdYRng3S0g0cFB6NHBMeXd2WGlnL09seGNlMXhjZXloK0tUOGpQaWt2TEM5
ZUtEODZYRng3WEZ4N0tINHBQeU5jWENvL0tTOHNMMTRvUHpwY1hIdGNYSHNvZmlrL1hGd3ZLUzhz
TDE0b1B6cGNYSHRjWEhzb2Zpay9YRnhlWEZ4ektpaCtLVDljWEgxY1hIMHBMeXd2WGlnL09seGNl
MXhjZXloK0tUOWNYSE1xWld4elpWeGNjeW9vZmlrL1hGeDlYRng5S1M4c0wxNG9QenBjWEh0Y1hI
c29maWsvWEZ4ZUtTOHNMMTRvUHpwY1hIdGNYSHNvZmlrL1hGeHpLbVZzYzJWY1hHSXBMeXd2WGln
L09seGNlMXhjZXloK0tUOWNYSHNwTHl3dlhpZy9PbHhjZTF4Y2V5aCtLVDhtS1M4c0wxNG9QenBj
WEh0Y1hIc29maWsvSVMwdEtTOHNMMTRvUHpwY1hIdGNYSHNvZmlrL0lWdGNYSE5jWEZOZEtqOWNY
SDFjWEgwcEx5d3ZYaWcvT2x4Y2UxeGNleWgrS1Q5Y1hDby9LUzhzTDE0b1B6bzlLUzhzTDE0b1B6
cGNYQzVjWEM0cEx5d3ZYaWcvT2x4Y0xpZy9QU2hiUFg1OVhGeHpYRnd2TGlsOFhTa3BLUzhzTDE0
b1B6cGJYRnd2TGwwcEx5d3ZYaWcvT2x4Y2N5c3BMeXd2WGlnL09seGNmU2grS1Q5Y1hIMWNYSDBw
THl3dlhpZy9PaWgrS1Q5Y1hIMWNYSDBwTHl3dlhpZy9PbHdpS0Z4Y1hGeGJYQ0pkZkZ0ZVhDSmRL
U3BjSWlrdkxDOWVLRDg2SnloY1hGeGNXeWRkZkZ0ZUoxMHBLaWNwTHl3dlhpZy9Pa0FwTHl3dlhp
Zy9PblJ5ZFdVb1B6MG9XMzU5WEZ4ektWMHBLU2t2TEM5ZUtEODZabUZzYzJVb1B6MG9XMzU5WEZ4
ektWMHBLU2t2TEM5ZUtEODZkVzVrWldacGJtVmtLRDg5S0Z0K2ZWeGNjeWxkS1NrcEx5d3ZYaWcv
T201MWJHd29QejBvVzM1OVhGeHpLVjBwS1NrdkxDOWVLRDg2TFQ5Yk1DMDVYU3NvUHpwY1hDNWJN
QzA1WFNzcFB5Zy9QU2hiZm4xY1hITXBYU2twS1M4c0wxNG9QenBoYzF4Y2N5dGNYSHdwTHl3dlhp
Zy9PbHhjZkNrdkxDOWVLRDg2S0Z0ZVhGeHpJVndpSXlVdExGeGNMbHhjTHpzdFBrQmNYRnN0WEZ4
ZVlGeGNleTErWFNzb1B6MG9XejErZlZ4Y2MxeGNMeTRwZkYwcEtTa3BMeXd2WGlnL09seGNXeWhj
WEZ4Y1hGeGRmRnRlWEZ4ZFhTa3FYRnhkS1M4c0wxNG9Qem91S1M4c0wxNG9Qem9rS1M5ZE8xeHVi
R1Y0WlhJdVkyOXVaR2wwYVc5dWN5QTlJSHRjSW0xMVhDSTZlMXdpY25Wc1pYTmNJanBiTnl3NExE
a3NNVEFzTVRFc01USXNNVE1zTVRRc01UVXNNVFlzTVRjc01UZ3NNVGtzTWpBc01qRXNNaklzTWpN
c01qUXNNalVzTWpZc01qY3NNamdzTWprc016QXNNekVzTXpJc016TXNNelFzTXpVc016WXNNemNz
TXpnc016a3NOREFzTkRFc05ESXNORE1zTkRSZExGd2lhVzVqYkhWemFYWmxYQ0k2Wm1Gc2MyVjlM
RndpWlcxMVhDSTZlMXdpY25Wc1pYTmNJanBiTWwwc1hDSnBibU5zZFhOcGRtVmNJanBtWVd4elpY
MHNYQ0pqYjIxY0lqcDdYQ0p5ZFd4bGMxd2lPbHMyWFN4Y0ltbHVZMngxYzJsMlpWd2lPbVpoYkhO
bGZTeGNJbkpoZDF3aU9udGNJbkoxYkdWelhDSTZXek1zTkN3MVhTeGNJbWx1WTJ4MWMybDJaVndp
T21aaGJITmxmU3hjSWtsT1NWUkpRVXhjSWpwN1hDSnlkV3hsYzF3aU9sc3dMREVzTkRSZExGd2lh
VzVqYkhWemFYWmxYQ0k2ZEhKMVpYMTlPMXh1Y21WMGRYSnVJR3hsZUdWeU8zMHBLQ2xjYm5CaGNu
TmxjaTVzWlhobGNpQTlJR3hsZUdWeU8xeHVablZ1WTNScGIyNGdVR0Z5YzJWeUlDZ3BJSHNnZEdo
cGN5NTVlU0E5SUh0OU95QjlVR0Z5YzJWeUxuQnliM1J2ZEhsd1pTQTlJSEJoY25ObGNqdHdZWEp6
WlhJdVVHRnljMlZ5SUQwZ1VHRnljMlZ5TzF4dWNtVjBkWEp1SUc1bGR5QlFZWEp6WlhJN1hHNTlL
U2dwTzJWNGNHOXlkSE11WDE5bGMwMXZaSFZzWlNBOUlIUnlkV1U3WEc1bGVIQnZjblJ6V3lka1pX
WmhkV3gwSjEwZ1BTQm9ZVzVrYkdWaVlYSnpPMXh1SWwxOQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvY2pzL2hhbmRsZWJhcnMvY29t
cGlsZXIvcHJpbnRlci5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxl
YmFycy9kaXN0L2Nqcy9oYW5kbGViYXJzL2NvbXBpbGVyL3ByaW50ZXIuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDY5NjQ1ZGEyZjRmZTdiZTM3MmEyN2I1MzljNzgzZGNjN2YxNDg1NQotLS0gL2Rldi9udWxsCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2Nqcy9o
YW5kbGViYXJzL2NvbXBpbGVyL3ByaW50ZXIuanMKQEAgLTAsMCArMSwxODYgQEAKKy8qIGVzbGlu
dC1kaXNhYmxlIG5ldy1jYXAgKi8KKyd1c2Ugc3RyaWN0JzsKKworZXhwb3J0cy5fX2VzTW9kdWxl
ID0gdHJ1ZTsKK2V4cG9ydHMucHJpbnQgPSBwcmludDsKK2V4cG9ydHMuUHJpbnRWaXNpdG9yID0g
UHJpbnRWaXNpdG9yOworLy8gaXN0YW5idWwgaWdub3JlIG5leHQKKworZnVuY3Rpb24gX2ludGVy
b3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9i
aiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfQorCit2YXIgX3Zpc2l0b3IgPSByZXF1aXJlKCcuL3Zp
c2l0b3InKTsKKwordmFyIF92aXNpdG9yMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3Zpc2l0
b3IpOworCitmdW5jdGlvbiBwcmludChhc3QpIHsKKyAgcmV0dXJuIG5ldyBQcmludFZpc2l0b3Io
KS5hY2NlcHQoYXN0KTsKK30KKworZnVuY3Rpb24gUHJpbnRWaXNpdG9yKCkgeworICB0aGlzLnBh
ZGRpbmcgPSAwOworfQorCitQcmludFZpc2l0b3IucHJvdG90eXBlID0gbmV3IF92aXNpdG9yMlsn
ZGVmYXVsdCddKCk7CisKK1ByaW50VmlzaXRvci5wcm90b3R5cGUucGFkID0gZnVuY3Rpb24gKHN0
cmluZykgeworICB2YXIgb3V0ID0gJyc7CisKKyAgZm9yICh2YXIgaSA9IDAsIGwgPSB0aGlzLnBh
ZGRpbmc7IGkgPCBsOyBpKyspIHsKKyAgICBvdXQgKz0gJyAgJzsKKyAgfQorCisgIG91dCArPSBz
dHJpbmcgKyAnXG4nOworICByZXR1cm4gb3V0OworfTsKKworUHJpbnRWaXNpdG9yLnByb3RvdHlw
ZS5Qcm9ncmFtID0gZnVuY3Rpb24gKHByb2dyYW0pIHsKKyAgdmFyIG91dCA9ICcnLAorICAgICAg
Ym9keSA9IHByb2dyYW0uYm9keSwKKyAgICAgIGkgPSB1bmRlZmluZWQsCisgICAgICBsID0gdW5k
ZWZpbmVkOworCisgIGlmIChwcm9ncmFtLmJsb2NrUGFyYW1zKSB7CisgICAgdmFyIGJsb2NrUGFy
YW1zID0gJ0JMT0NLIFBBUkFNUzogWyc7CisgICAgZm9yIChpID0gMCwgbCA9IHByb2dyYW0uYmxv
Y2tQYXJhbXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CisgICAgICBibG9ja1BhcmFtcyArPSAnICcg
KyBwcm9ncmFtLmJsb2NrUGFyYW1zW2ldOworICAgIH0KKyAgICBibG9ja1BhcmFtcyArPSAnIF0n
OworICAgIG91dCArPSB0aGlzLnBhZChibG9ja1BhcmFtcyk7CisgIH0KKworICBmb3IgKGkgPSAw
LCBsID0gYm9keS5sZW5ndGg7IGkgPCBsOyBpKyspIHsKKyAgICBvdXQgKz0gdGhpcy5hY2NlcHQo
Ym9keVtpXSk7CisgIH0KKworICB0aGlzLnBhZGRpbmctLTsKKworICByZXR1cm4gb3V0OworfTsK
KworUHJpbnRWaXNpdG9yLnByb3RvdHlwZS5NdXN0YWNoZVN0YXRlbWVudCA9IGZ1bmN0aW9uICht
dXN0YWNoZSkgeworICByZXR1cm4gdGhpcy5wYWQoJ3t7ICcgKyB0aGlzLlN1YkV4cHJlc3Npb24o
bXVzdGFjaGUpICsgJyB9fScpOworfTsKK1ByaW50VmlzaXRvci5wcm90b3R5cGUuRGVjb3JhdG9y
ID0gZnVuY3Rpb24gKG11c3RhY2hlKSB7CisgIHJldHVybiB0aGlzLnBhZCgne3sgRElSRUNUSVZF
ICcgKyB0aGlzLlN1YkV4cHJlc3Npb24obXVzdGFjaGUpICsgJyB9fScpOworfTsKKworUHJpbnRW
aXNpdG9yLnByb3RvdHlwZS5CbG9ja1N0YXRlbWVudCA9IFByaW50VmlzaXRvci5wcm90b3R5cGUu
RGVjb3JhdG9yQmxvY2sgPSBmdW5jdGlvbiAoYmxvY2spIHsKKyAgdmFyIG91dCA9ICcnOworCisg
IG91dCArPSB0aGlzLnBhZCgoYmxvY2sudHlwZSA9PT0gJ0RlY29yYXRvckJsb2NrJyA/ICdESVJF
Q1RJVkUgJyA6ICcnKSArICdCTE9DSzonKTsKKyAgdGhpcy5wYWRkaW5nKys7CisgIG91dCArPSB0
aGlzLnBhZCh0aGlzLlN1YkV4cHJlc3Npb24oYmxvY2spKTsKKyAgaWYgKGJsb2NrLnByb2dyYW0p
IHsKKyAgICBvdXQgKz0gdGhpcy5wYWQoJ1BST0dSQU06Jyk7CisgICAgdGhpcy5wYWRkaW5nKys7
CisgICAgb3V0ICs9IHRoaXMuYWNjZXB0KGJsb2NrLnByb2dyYW0pOworICAgIHRoaXMucGFkZGlu
Zy0tOworICB9CisgIGlmIChibG9jay5pbnZlcnNlKSB7CisgICAgaWYgKGJsb2NrLnByb2dyYW0p
IHsKKyAgICAgIHRoaXMucGFkZGluZysrOworICAgIH0KKyAgICBvdXQgKz0gdGhpcy5wYWQoJ3t7
Xn19Jyk7CisgICAgdGhpcy5wYWRkaW5nKys7CisgICAgb3V0ICs9IHRoaXMuYWNjZXB0KGJsb2Nr
LmludmVyc2UpOworICAgIHRoaXMucGFkZGluZy0tOworICAgIGlmIChibG9jay5wcm9ncmFtKSB7
CisgICAgICB0aGlzLnBhZGRpbmctLTsKKyAgICB9CisgIH0KKyAgdGhpcy5wYWRkaW5nLS07CisK
KyAgcmV0dXJuIG91dDsKK307CisKK1ByaW50VmlzaXRvci5wcm90b3R5cGUuUGFydGlhbFN0YXRl
bWVudCA9IGZ1bmN0aW9uIChwYXJ0aWFsKSB7CisgIHZhciBjb250ZW50ID0gJ1BBUlRJQUw6JyAr
IHBhcnRpYWwubmFtZS5vcmlnaW5hbDsKKyAgaWYgKHBhcnRpYWwucGFyYW1zWzBdKSB7CisgICAg
Y29udGVudCArPSAnICcgKyB0aGlzLmFjY2VwdChwYXJ0aWFsLnBhcmFtc1swXSk7CisgIH0KKyAg
aWYgKHBhcnRpYWwuaGFzaCkgeworICAgIGNvbnRlbnQgKz0gJyAnICsgdGhpcy5hY2NlcHQocGFy
dGlhbC5oYXNoKTsKKyAgfQorICByZXR1cm4gdGhpcy5wYWQoJ3t7PiAnICsgY29udGVudCArICcg
fX0nKTsKK307CitQcmludFZpc2l0b3IucHJvdG90eXBlLlBhcnRpYWxCbG9ja1N0YXRlbWVudCA9
IGZ1bmN0aW9uIChwYXJ0aWFsKSB7CisgIHZhciBjb250ZW50ID0gJ1BBUlRJQUwgQkxPQ0s6JyAr
IHBhcnRpYWwubmFtZS5vcmlnaW5hbDsKKyAgaWYgKHBhcnRpYWwucGFyYW1zWzBdKSB7CisgICAg
Y29udGVudCArPSAnICcgKyB0aGlzLmFjY2VwdChwYXJ0aWFsLnBhcmFtc1swXSk7CisgIH0KKyAg
aWYgKHBhcnRpYWwuaGFzaCkgeworICAgIGNvbnRlbnQgKz0gJyAnICsgdGhpcy5hY2NlcHQocGFy
dGlhbC5oYXNoKTsKKyAgfQorCisgIGNvbnRlbnQgKz0gJyAnICsgdGhpcy5wYWQoJ1BST0dSQU06
Jyk7CisgIHRoaXMucGFkZGluZysrOworICBjb250ZW50ICs9IHRoaXMuYWNjZXB0KHBhcnRpYWwu
cHJvZ3JhbSk7CisgIHRoaXMucGFkZGluZy0tOworCisgIHJldHVybiB0aGlzLnBhZCgne3s+ICcg
KyBjb250ZW50ICsgJyB9fScpOworfTsKKworUHJpbnRWaXNpdG9yLnByb3RvdHlwZS5Db250ZW50
U3RhdGVtZW50ID0gZnVuY3Rpb24gKGNvbnRlbnQpIHsKKyAgcmV0dXJuIHRoaXMucGFkKCJDT05U
RU5UWyAnIiArIGNvbnRlbnQudmFsdWUgKyAiJyBdIik7Cit9OworCitQcmludFZpc2l0b3IucHJv
dG90eXBlLkNvbW1lbnRTdGF0ZW1lbnQgPSBmdW5jdGlvbiAoY29tbWVudCkgeworICByZXR1cm4g
dGhpcy5wYWQoInt7ISAnIiArIGNvbW1lbnQudmFsdWUgKyAiJyB9fSIpOworfTsKKworUHJpbnRW
aXNpdG9yLnByb3RvdHlwZS5TdWJFeHByZXNzaW9uID0gZnVuY3Rpb24gKHNleHByKSB7CisgIHZh
ciBwYXJhbXMgPSBzZXhwci5wYXJhbXMsCisgICAgICBwYXJhbVN0cmluZ3MgPSBbXSwKKyAgICAg
IGhhc2ggPSB1bmRlZmluZWQ7CisKKyAgZm9yICh2YXIgaSA9IDAsIGwgPSBwYXJhbXMubGVuZ3Ro
OyBpIDwgbDsgaSsrKSB7CisgICAgcGFyYW1TdHJpbmdzLnB1c2godGhpcy5hY2NlcHQocGFyYW1z
W2ldKSk7CisgIH0KKworICBwYXJhbXMgPSAnWycgKyBwYXJhbVN0cmluZ3Muam9pbignLCAnKSAr
ICddJzsKKworICBoYXNoID0gc2V4cHIuaGFzaCA/ICcgJyArIHRoaXMuYWNjZXB0KHNleHByLmhh
c2gpIDogJyc7CisKKyAgcmV0dXJuIHRoaXMuYWNjZXB0KHNleHByLnBhdGgpICsgJyAnICsgcGFy
YW1zICsgaGFzaDsKK307CisKK1ByaW50VmlzaXRvci5wcm90b3R5cGUuUGF0aEV4cHJlc3Npb24g
PSBmdW5jdGlvbiAoaWQpIHsKKyAgdmFyIHBhdGggPSBpZC5wYXJ0cy5qb2luKCcvJyk7CisgIHJl
dHVybiAoaWQuZGF0YSA/ICdAJyA6ICcnKSArICdQQVRIOicgKyBwYXRoOworfTsKKworUHJpbnRW
aXNpdG9yLnByb3RvdHlwZS5TdHJpbmdMaXRlcmFsID0gZnVuY3Rpb24gKHN0cmluZykgeworICBy
ZXR1cm4gJyInICsgc3RyaW5nLnZhbHVlICsgJyInOworfTsKKworUHJpbnRWaXNpdG9yLnByb3Rv
dHlwZS5OdW1iZXJMaXRlcmFsID0gZnVuY3Rpb24gKG51bWJlcikgeworICByZXR1cm4gJ05VTUJF
UnsnICsgbnVtYmVyLnZhbHVlICsgJ30nOworfTsKKworUHJpbnRWaXNpdG9yLnByb3RvdHlwZS5C
b29sZWFuTGl0ZXJhbCA9IGZ1bmN0aW9uIChib29sKSB7CisgIHJldHVybiAnQk9PTEVBTnsnICsg
Ym9vbC52YWx1ZSArICd9JzsKK307CisKK1ByaW50VmlzaXRvci5wcm90b3R5cGUuVW5kZWZpbmVk
TGl0ZXJhbCA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuICdVTkRFRklORUQnOworfTsKKworUHJp
bnRWaXNpdG9yLnByb3RvdHlwZS5OdWxsTGl0ZXJhbCA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJu
ICdOVUxMJzsKK307CisKK1ByaW50VmlzaXRvci5wcm90b3R5cGUuSGFzaCA9IGZ1bmN0aW9uICho
YXNoKSB7CisgIHZhciBwYWlycyA9IGhhc2gucGFpcnMsCisgICAgICBqb2luZWRQYWlycyA9IFtd
OworCisgIGZvciAodmFyIGkgPSAwLCBsID0gcGFpcnMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7Cisg
ICAgam9pbmVkUGFpcnMucHVzaCh0aGlzLmFjY2VwdChwYWlyc1tpXSkpOworICB9CisKKyAgcmV0
dXJuICdIQVNIeycgKyBqb2luZWRQYWlycy5qb2luKCcsICcpICsgJ30nOworfTsKK1ByaW50Vmlz
aXRvci5wcm90b3R5cGUuSGFzaFBhaXIgPSBmdW5jdGlvbiAocGFpcikgeworICByZXR1cm4gcGFp
ci5rZXkgKyAnPScgKyB0aGlzLmFjY2VwdChwYWlyLnZhbHVlKTsKK307CisvKiBlc2xpbnQtZW5h
YmxlIG5ldy1jYXAgKi8KKy8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNv
bjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUx5NHVMeTR1
TDJ4cFlpOW9ZVzVrYkdWaVlYSnpMMk52YlhCcGJHVnlMM0J5YVc1MFpYSXVhbk1pWFN3aWJtRnRa
WE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanM3T3pzN096czdPenQxUWtGRGIwSXNWMEZCVnpzN096
dEJRVVY0UWl4VFFVRlRMRXRCUVVzc1EwRkJReXhIUVVGSExFVkJRVVU3UVVGRGVrSXNVMEZCVHl4
SlFVRkpMRmxCUVZrc1JVRkJSU3hEUVVGRExFMUJRVTBzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZC
UXp0RFFVTjJRenM3UVVGRlRTeFRRVUZUTEZsQlFWa3NSMEZCUnp0QlFVTTNRaXhOUVVGSkxFTkJR
VU1zVDBGQlR5eEhRVUZITEVOQlFVTXNRMEZCUXp0RFFVTnNRanM3UVVGRlJDeFpRVUZaTEVOQlFV
TXNVMEZCVXl4SFFVRkhMREJDUVVGaExFTkJRVU03TzBGQlJYWkRMRmxCUVZrc1EwRkJReXhUUVVG
VExFTkJRVU1zUjBGQlJ5eEhRVUZITEZWQlFWTXNUVUZCVFN4RlFVRkZPMEZCUXpWRExFMUJRVWtz
UjBGQlJ5eEhRVUZITEVWQlFVVXNRMEZCUXpzN1FVRkZZaXhQUVVGTExFbEJRVWtzUTBGQlF5eEhR
VUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFOUJRVThzUlVGQlJT
eERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRk8wRkJRelZETEU5
QlFVY3NTVUZCU1N4SlFVRkpMRU5CUVVNN1IwRkRZanM3UVVGRlJDeExRVUZITEVsQlFVa3NUVUZC
VFN4SFFVRkhMRWxCUVVrc1EwRkJRenRCUVVOeVFpeFRRVUZQTEVkQlFVY3NRMEZCUXp0RFFVTmFM
RU5CUVVNN08wRkJSVVlzV1VGQldTeERRVUZETEZOQlFWTXNRMEZCUXl4UFFVRlBMRWRCUVVjc1ZV
RkJVeXhQUVVGUExFVkJRVVU3UVVGRGFrUXNUVUZCU1N4SFFVRkhMRWRCUVVjc1JVRkJSVHROUVVO
U0xFbEJRVWtzUjBGQlJ5eFBRVUZQTEVOQlFVTXNTVUZCU1R0TlFVTnVRaXhEUVVGRExGbEJRVUU3
VFVGQlJTeERRVUZETEZsQlFVRXNRMEZCUXpzN1FVRkZWQ3hOUVVGSkxFOUJRVThzUTBGQlF5eFhR
VUZYTEVWQlFVVTdRVUZEZGtJc1VVRkJTU3hYUVVGWExFZEJRVWNzYVVKQlFXbENMRU5CUVVNN1FV
RkRjRU1zVTBGQlN5eERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhQUVVG
UExFTkJRVU1zVjBGQlZ5eERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhG
UVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTzBGQlEzSkVMR2xDUVVGWExFbEJRVWtzUjBGQlJ5eEhR
VUZITEU5QlFVOHNRMEZCUXl4WFFVRlhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03UzBGRE9V
TTdRVUZEUkN4bFFVRlhMRWxCUVVrc1NVRkJTU3hEUVVGRE8wRkJRM0JDTEU5QlFVY3NTVUZCU1N4
SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExGZEJRVmNzUTBGQlF5eERRVUZETzBkQlF6bENPenRC
UVVWRUxFOUJRVXNzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1NVRkJT
U3hEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1JV
RkJSU3hGUVVGRk8wRkJRM1pETEU5QlFVY3NTVUZCU1N4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVG
RExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMGRCUXpkQ096dEJRVVZF
TEUxQlFVa3NRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJRenM3UVVGRlppeFRRVUZQTEVkQlFVY3NR
MEZCUXp0RFFVTmFMRU5CUVVNN08wRkJSVVlzV1VGQldTeERRVUZETEZOQlFWTXNRMEZCUXl4cFFr
RkJhVUlzUjBGQlJ5eFZRVUZUTEZGQlFWRXNSVUZCUlR0QlFVTTFSQ3hUUVVGUExFbEJRVWtzUTBG
QlF5eEhRVUZITEVOQlFVTXNTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJReXhoUVVGaExFTkJRVU1z
VVVGQlVTeERRVUZETEVkQlFVY3NTMEZCU3l4RFFVRkRMRU5CUVVNN1EwRkRMMFFzUTBGQlF6dEJR
VU5HTEZsQlFWa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1UwRkJVeXhIUVVGSExGVkJRVk1zVVVGQlVT
eEZRVUZGTzBGQlEzQkVMRk5CUVU4c1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eGxRVUZsTEVk
QlFVY3NTVUZCU1N4RFFVRkRMR0ZCUVdFc1EwRkJReXhSUVVGUkxFTkJRVU1zUjBGQlJ5eExRVUZM
TEVOQlFVTXNRMEZCUXp0RFFVTjZSU3hEUVVGRE96dEJRVVZHTEZsQlFWa3NRMEZCUXl4VFFVRlRM
RU5CUVVNc1kwRkJZeXhIUVVOeVF5eFpRVUZaTEVOQlFVTXNVMEZCVXl4RFFVRkRMR05CUVdNc1Iw
RkJSeXhWUVVGVExFdEJRVXNzUlVGQlJUdEJRVU4wUkN4TlFVRkpMRWRCUVVjc1IwRkJSeXhGUVVG
RkxFTkJRVU03TzBGQlJXSXNTMEZCUnl4SlFVRkpMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1z
UTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4TFFVRkxMR2RDUVVGblFpeEhRVUZITEZsQlFWa3NS
MEZCUnl4RlFVRkZMRU5CUVVFc1IwRkJTU3hSUVVGUkxFTkJRVU1zUTBGQlF6dEJRVU5zUml4TlFV
RkpMRU5CUVVNc1QwRkJUeXhGUVVGRkxFTkJRVU03UVVGRFppeExRVUZITEVsQlFVa3NTVUZCU1N4
RFFVRkRMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zWVVGQllTeERRVUZETEV0QlFVc3NRMEZC
UXl4RFFVRkRMRU5CUVVNN1FVRkRNME1zVFVGQlNTeExRVUZMTEVOQlFVTXNUMEZCVHl4RlFVRkZP
MEZCUTJwQ0xFOUJRVWNzU1VGQlNTeEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRlZCUVZVc1Ew
RkJReXhEUVVGRE8wRkJRelZDTEZGQlFVa3NRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJRenRCUVVO
bUxFOUJRVWNzU1VGQlNTeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRXRCUVVzc1EwRkJReXhQ
UVVGUExFTkJRVU1zUTBGQlF6dEJRVU5zUXl4UlFVRkpMRU5CUVVNc1QwRkJUeXhGUVVGRkxFTkJR
VU03UjBGRGFFSTdRVUZEUkN4TlFVRkpMRXRCUVVzc1EwRkJReXhQUVVGUExFVkJRVVU3UVVGRGFr
SXNVVUZCU1N4TFFVRkxMRU5CUVVNc1QwRkJUeXhGUVVGRk8wRkJRVVVzVlVGQlNTeERRVUZETEU5
QlFVOHNSVUZCUlN4RFFVRkRPMHRCUVVVN1FVRkRkRU1zVDBGQlJ5eEpRVUZKTEVsQlFVa3NRMEZC
UXl4SFFVRkhMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03UVVGRGVrSXNVVUZCU1N4RFFVRkRM
RTlCUVU4c1JVRkJSU3hEUVVGRE8wRkJRMllzVDBGQlJ5eEpRVUZKTEVsQlFVa3NRMEZCUXl4TlFV
Rk5MRU5CUVVNc1MwRkJTeXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzBGQlEyeERMRkZCUVVr
c1EwRkJReXhQUVVGUExFVkJRVVVzUTBGQlF6dEJRVU5tTEZGQlFVa3NTMEZCU3l4RFFVRkRMRTlC
UVU4c1JVRkJSVHRCUVVGRkxGVkJRVWtzUTBGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXp0TFFVRkZP
MGRCUTNaRE8wRkJRMFFzVFVGQlNTeERRVUZETEU5QlFVOHNSVUZCUlN4RFFVRkRPenRCUVVWbUxG
TkJRVThzUjBGQlJ5eERRVUZETzBOQlExb3NRMEZCUXpzN1FVRkZSaXhaUVVGWkxFTkJRVU1zVTBG
QlV5eERRVUZETEdkQ1FVRm5RaXhIUVVGSExGVkJRVk1zVDBGQlR5eEZRVUZGTzBGQlF6RkVMRTFC
UVVrc1QwRkJUeXhIUVVGSExGVkJRVlVzUjBGQlJ5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRM
RkZCUVZFc1EwRkJRenRCUVVOcVJDeE5RVUZKTEU5QlFVOHNRMEZCUXl4TlFVRk5MRU5CUVVNc1Ew
RkJReXhEUVVGRExFVkJRVVU3UVVGRGNrSXNWMEZCVHl4SlFVRkpMRWRCUVVjc1IwRkJSeXhKUVVG
SkxFTkJRVU1zVFVGQlRTeERRVUZETEU5QlFVOHNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhE
UVVGRExFTkJRVU1zUTBGQlF6dEhRVU5xUkR0QlFVTkVMRTFCUVVrc1QwRkJUeXhEUVVGRExFbEJR
VWtzUlVGQlJUdEJRVU5vUWl4WFFVRlBMRWxCUVVrc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF5
eE5RVUZOTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8wZEJRelZETzBG
QlEwUXNVMEZCVHl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFMUJRVTBzUjBGQlJ5eFBRVUZQ
TEVkQlFVY3NTMEZCU3l4RFFVRkRMRU5CUVVNN1EwRkRNME1zUTBGQlF6dEJRVU5HTEZsQlFWa3NR
MEZCUXl4VFFVRlRMRU5CUVVNc2NVSkJRWEZDTEVkQlFVY3NWVUZCVXl4UFFVRlBMRVZCUVVVN1FV
RkRMMFFzVFVGQlNTeFBRVUZQTEVkQlFVY3NaMEpCUVdkQ0xFZEJRVWNzVDBGQlR5eERRVUZETEVs
QlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNN1FVRkRka1FzVFVGQlNTeFBRVUZQTEVOQlFVTXNUVUZC
VFN4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRk8wRkJRM0pDTEZkQlFVOHNTVUZCU1N4SFFVRkhM
RWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFBRVUZQTEVOQlFVTXNUVUZCVFN4RFFV
RkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03UjBGRGFrUTdRVUZEUkN4TlFVRkpMRTlCUVU4
c1EwRkJReXhKUVVGSkxFVkJRVVU3UVVGRGFFSXNWMEZCVHl4SlFVRkpMRWRCUVVjc1IwRkJSeXhK
UVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJR
enRIUVVNMVF6czdRVUZGUkN4VFFVRlBMRWxCUVVrc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF5
eEhRVUZITEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNN1FVRkRkRU1zVFVGQlNTeERRVUZETEU5
QlFVOHNSVUZCUlN4RFFVRkRPMEZCUTJZc1UwRkJUeXhKUVVGSkxFbEJRVWtzUTBGQlF5eE5RVUZO
TEVOQlFVTXNUMEZCVHl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8wRkJRM2hETEUxQlFVa3NR
MEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJRenM3UVVGRlppeFRRVUZQTEVsQlFVa3NRMEZCUXl4SFFV
RkhMRU5CUVVNc1RVRkJUU3hIUVVGSExFOUJRVThzUjBGQlJ5eExRVUZMTEVOQlFVTXNRMEZCUXp0
RFFVTXpReXhEUVVGRE96dEJRVVZHTEZsQlFWa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1owSkJRV2RD
TEVkQlFVY3NWVUZCVXl4UFFVRlBMRVZCUVVVN1FVRkRNVVFzVTBGQlR5eEpRVUZKTEVOQlFVTXNS
MEZCUnl4RFFVRkRMRmxCUVZrc1IwRkJSeXhQUVVGUExFTkJRVU1zUzBGQlN5eEhRVUZITEV0QlFV
c3NRMEZCUXl4RFFVRkRPME5CUTNaRUxFTkJRVU03TzBGQlJVWXNXVUZCV1N4RFFVRkRMRk5CUVZN
c1EwRkJReXhuUWtGQlowSXNSMEZCUnl4VlFVRlRMRTlCUVU4c1JVRkJSVHRCUVVNeFJDeFRRVUZQ
TEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1QwRkJUeXhIUVVGSExFOUJRVThzUTBGQlF5eExR
VUZMTEVkQlFVY3NUVUZCVFN4RFFVRkRMRU5CUVVNN1EwRkRia1FzUTBGQlF6czdRVUZGUml4WlFV
RlpMRU5CUVVNc1UwRkJVeXhEUVVGRExHRkJRV0VzUjBGQlJ5eFZRVUZUTEV0QlFVc3NSVUZCUlR0
QlFVTnlSQ3hOUVVGSkxFMUJRVTBzUjBGQlJ5eExRVUZMTEVOQlFVTXNUVUZCVFR0TlFVTnlRaXha
UVVGWkxFZEJRVWNzUlVGQlJUdE5RVU5xUWl4SlFVRkpMRmxCUVVFc1EwRkJRenM3UVVGRlZDeFBR
VUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzVFVGQlRT
eERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVG
QlJTeEZRVUZGTzBGQlF6ZERMR2RDUVVGWkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZC
UXl4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNR
MEZCUXp0SFFVTXpRenM3UVVGRlJDeFJRVUZOTEVkQlFVY3NSMEZCUnl4SFFVRkhMRmxCUVZrc1Ew
RkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NSMEZCUnl4RFFVRkRPenRCUVVV
M1F5eE5RVUZKTEVkQlFVY3NTMEZCU3l4RFFVRkRMRWxCUVVrc1IwRkJSeXhIUVVGSExFZEJRVWNz
U1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJR
VWNzUlVGQlJTeERRVUZET3p0QlFVVjJSQ3hUUVVGUExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFV
TXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFZEJRVWNzUjBGQlJ5eE5RVUZOTEVk
QlFVY3NTVUZCU1N4RFFVRkRPME5CUTNSRUxFTkJRVU03TzBGQlJVWXNXVUZCV1N4RFFVRkRMRk5C
UVZNc1EwRkJReXhqUVVGakxFZEJRVWNzVlVGQlV5eEZRVUZGTEVWQlFVVTdRVUZEYmtRc1RVRkJT
U3hKUVVGSkxFZEJRVWNzUlVGQlJTeERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1Iw
RkJSeXhEUVVGRExFTkJRVU03UVVGRE9VSXNVMEZCVHl4RFFVRkRMRVZCUVVVc1EwRkJReXhKUVVG
SkxFZEJRVWNzUjBGQlJ5eEhRVUZITEVWQlFVVXNRMEZCUVN4SFFVRkpMRTlCUVU4c1IwRkJSeXhK
UVVGSkxFTkJRVU03UTBGRE9VTXNRMEZCUXpzN1FVRkhSaXhaUVVGWkxFTkJRVU1zVTBGQlV5eERR
VUZETEdGQlFXRXNSMEZCUnl4VlFVRlRMRTFCUVUwc1JVRkJSVHRCUVVOMFJDeFRRVUZQTEVkQlFV
Y3NSMEZCUnl4TlFVRk5MRU5CUVVNc1MwRkJTeXhIUVVGSExFZEJRVWNzUTBGQlF6dERRVU5xUXl4
RFFVRkRPenRCUVVWR0xGbEJRVmtzUTBGQlF5eFRRVUZUTEVOQlFVTXNZVUZCWVN4SFFVRkhMRlZC
UVZNc1RVRkJUU3hGUVVGRk8wRkJRM1JFTEZOQlFVOHNVMEZCVXl4SFFVRkhMRTFCUVUwc1EwRkJR
eXhMUVVGTExFZEJRVWNzUjBGQlJ5eERRVUZETzBOQlEzWkRMRU5CUVVNN08wRkJSVVlzV1VGQldT
eERRVUZETEZOQlFWTXNRMEZCUXl4alFVRmpMRWRCUVVjc1ZVRkJVeXhKUVVGSkxFVkJRVVU3UVVG
RGNrUXNVMEZCVHl4VlFVRlZMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUjBGQlJ5eEhRVUZI
TEVOQlFVTTdRMEZEZEVNc1EwRkJRenM3UVVGRlJpeFpRVUZaTEVOQlFVTXNVMEZCVXl4RFFVRkRM
R2RDUVVGblFpeEhRVUZITEZsQlFWYzdRVUZEYmtRc1UwRkJUeXhYUVVGWExFTkJRVU03UTBGRGNF
SXNRMEZCUXpzN1FVRkZSaXhaUVVGWkxFTkJRVU1zVTBGQlV5eERRVUZETEZkQlFWY3NSMEZCUnl4
WlFVRlhPMEZCUXpsRExGTkJRVThzVFVGQlRTeERRVUZETzBOQlEyWXNRMEZCUXpzN1FVRkZSaXha
UVVGWkxFTkJRVU1zVTBGQlV5eERRVUZETEVsQlFVa3NSMEZCUnl4VlFVRlRMRWxCUVVrc1JVRkJS
VHRCUVVNelF5eE5RVUZKTEV0QlFVc3NSMEZCUnl4SlFVRkpMRU5CUVVNc1MwRkJTenROUVVOc1Fp
eFhRVUZYTEVkQlFVY3NSVUZCUlN4RFFVRkRPenRCUVVWeVFpeFBRVUZMTEVsQlFVa3NRMEZCUXl4
SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzUzBGQlN5eERRVUZETEUxQlFVMHNSVUZC
UlN4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTzBGQlF6VkRM
R1ZCUVZjc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4TFFV
RkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBkQlEzcERPenRCUVVW
RUxGTkJRVThzVDBGQlR5eEhRVUZITEZkQlFWY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hE
UVVGRExFZEJRVWNzUjBGQlJ5eERRVUZETzBOQlF5OURMRU5CUVVNN1FVRkRSaXhaUVVGWkxFTkJR
VU1zVTBGQlV5eERRVUZETEZGQlFWRXNSMEZCUnl4VlFVRlRMRWxCUVVrc1JVRkJSVHRCUVVNdlF5
eFRRVUZQTEVsQlFVa3NRMEZCUXl4SFFVRkhMRWRCUVVjc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBG
QlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE8wTkJRMnBF
TEVOQlFVTWlMQ0ptYVd4bElqb2ljSEpwYm5SbGNpNXFjeUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJ
anBiSWk4cUlHVnpiR2x1ZEMxa2FYTmhZbXhsSUc1bGR5MWpZWEFnS2k5Y2JtbHRjRzl5ZENCV2FY
TnBkRzl5SUdaeWIyMGdKeTR2ZG1semFYUnZjaWM3WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlC
d2NtbHVkQ2hoYzNRcElIdGNiaUFnY21WMGRYSnVJRzVsZHlCUWNtbHVkRlpwYzJsMGIzSW9LUzVo
WTJObGNIUW9ZWE4wS1R0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJRkJ5YVc1MFZtbHph
WFJ2Y2lncElIdGNiaUFnZEdocGN5NXdZV1JrYVc1bklEMGdNRHRjYm4xY2JseHVVSEpwYm5SV2FY
TnBkRzl5TG5CeWIzUnZkSGx3WlNBOUlHNWxkeUJXYVhOcGRHOXlLQ2s3WEc1Y2JsQnlhVzUwVm1s
emFYUnZjaTV3Y205MGIzUjVjR1V1Y0dGa0lEMGdablZ1WTNScGIyNG9jM1J5YVc1bktTQjdYRzRn
SUd4bGRDQnZkWFFnUFNBbkp6dGNibHh1SUNCbWIzSWdLR3hsZENCcElEMGdNQ3dnYkNBOUlIUm9h
WE11Y0dGa1pHbHVaenNnYVNBOElHdzdJR2tyS3lrZ2UxeHVJQ0FnSUc5MWRDQXJQU0FuSUNBbk8x
eHVJQ0I5WEc1Y2JpQWdiM1YwSUNzOUlITjBjbWx1WnlBcklDZGNYRzRuTzF4dUlDQnlaWFIxY200
Z2IzVjBPMXh1ZlR0Y2JseHVVSEpwYm5SV2FYTnBkRzl5TG5CeWIzUnZkSGx3WlM1UWNtOW5jbUZ0
SUQwZ1puVnVZM1JwYjI0b2NISnZaM0poYlNrZ2UxeHVJQ0JzWlhRZ2IzVjBJRDBnSnljc1hHNGdJ
Q0FnSUNCaWIyUjVJRDBnY0hKdlozSmhiUzVpYjJSNUxGeHVJQ0FnSUNBZ2FTd2diRHRjYmx4dUlD
QnBaaUFvY0hKdlozSmhiUzVpYkc5amExQmhjbUZ0Y3lrZ2UxeHVJQ0FnSUd4bGRDQmliRzlqYTFC
aGNtRnRjeUE5SUNkQ1RFOURTeUJRUVZKQlRWTTZJRnNuTzF4dUlDQWdJR1p2Y2lBb2FTQTlJREFz
SUd3Z1BTQndjbTluY21GdExtSnNiMk5yVUdGeVlXMXpMbXhsYm1kMGFEc2dhU0E4SUd3N0lHa3JL
eWtnZTF4dUlDQWdJQ0FnSUdKc2IyTnJVR0Z5WVcxeklDczlJQ2NnSnlBcklIQnliMmR5WVcwdVlt
eHZZMnRRWVhKaGJYTmJhVjA3WEc0Z0lDQWdmVnh1SUNBZ0lHSnNiMk5yVUdGeVlXMXpJQ3M5SUNj
Z1hTYzdYRzRnSUNBZ2IzVjBJQ3M5SUhSb2FYTXVjR0ZrS0dKc2IyTnJVR0Z5WVcxektUdGNiaUFn
ZlZ4dVhHNGdJR1p2Y2lBb2FTQTlJREFzSUd3Z1BTQmliMlI1TG14bGJtZDBhRHNnYVNBOElHdzdJ
R2tyS3lrZ2UxeHVJQ0FnSUc5MWRDQXJQU0IwYUdsekxtRmpZMlZ3ZENoaWIyUjVXMmxkS1R0Y2Jp
QWdmVnh1WEc0Z0lIUm9hWE11Y0dGa1pHbHVaeTB0TzF4dVhHNGdJSEpsZEhWeWJpQnZkWFE3WEc1
OU8xeHVYRzVRY21sdWRGWnBjMmwwYjNJdWNISnZkRzkwZVhCbExrMTFjM1JoWTJobFUzUmhkR1Z0
Wlc1MElEMGdablZ1WTNScGIyNG9iWFZ6ZEdGamFHVXBJSHRjYmlBZ2NtVjBkWEp1SUhSb2FYTXVj
R0ZrS0NkN2V5QW5JQ3NnZEdocGN5NVRkV0pGZUhCeVpYTnphVzl1S0cxMWMzUmhZMmhsS1NBcklD
Y2dmWDBuS1R0Y2JuMDdYRzVRY21sdWRGWnBjMmwwYjNJdWNISnZkRzkwZVhCbExrUmxZMjl5WVhS
dmNpQTlJR1oxYm1OMGFXOXVLRzExYzNSaFkyaGxLU0I3WEc0Z0lISmxkSFZ5YmlCMGFHbHpMbkJo
WkNnbmUzc2dSRWxTUlVOVVNWWkZJQ2NnS3lCMGFHbHpMbE4xWWtWNGNISmxjM05wYjI0b2JYVnpk
R0ZqYUdVcElDc2dKeUI5ZlNjcE8xeHVmVHRjYmx4dVVISnBiblJXYVhOcGRHOXlMbkJ5YjNSdmRI
bHdaUzVDYkc5amExTjBZWFJsYldWdWRDQTlYRzVRY21sdWRGWnBjMmwwYjNJdWNISnZkRzkwZVhC
bExrUmxZMjl5WVhSdmNrSnNiMk5ySUQwZ1puVnVZM1JwYjI0b1lteHZZMnNwSUh0Y2JpQWdiR1Yw
SUc5MWRDQTlJQ2NuTzF4dVhHNGdJRzkxZENBclBTQjBhR2x6TG5CaFpDZ29ZbXh2WTJzdWRIbHda
U0E5UFQwZ0owUmxZMjl5WVhSdmNrSnNiMk5ySnlBL0lDZEVTVkpGUTFSSlZrVWdKeUE2SUNjbktT
QXJJQ2RDVEU5RFN6b25LVHRjYmlBZ2RHaHBjeTV3WVdSa2FXNW5LeXM3WEc0Z0lHOTFkQ0FyUFNC
MGFHbHpMbkJoWkNoMGFHbHpMbE4xWWtWNGNISmxjM05wYjI0b1lteHZZMnNwS1R0Y2JpQWdhV1ln
S0dKc2IyTnJMbkJ5YjJkeVlXMHBJSHRjYmlBZ0lDQnZkWFFnS3owZ2RHaHBjeTV3WVdRb0oxQlNU
MGRTUVUwNkp5azdYRzRnSUNBZ2RHaHBjeTV3WVdSa2FXNW5LeXM3WEc0Z0lDQWdiM1YwSUNzOUlI
Um9hWE11WVdOalpYQjBLR0pzYjJOckxuQnliMmR5WVcwcE8xeHVJQ0FnSUhSb2FYTXVjR0ZrWkds
dVp5MHRPMXh1SUNCOVhHNGdJR2xtSUNoaWJHOWpheTVwYm5abGNuTmxLU0I3WEc0Z0lDQWdhV1ln
S0dKc2IyTnJMbkJ5YjJkeVlXMHBJSHNnZEdocGN5NXdZV1JrYVc1bkt5czdJSDFjYmlBZ0lDQnZk
WFFnS3owZ2RHaHBjeTV3WVdRb0ozdDdYbjE5SnlrN1hHNGdJQ0FnZEdocGN5NXdZV1JrYVc1bkt5
czdYRzRnSUNBZ2IzVjBJQ3M5SUhSb2FYTXVZV05qWlhCMEtHSnNiMk5yTG1sdWRtVnljMlVwTzF4
dUlDQWdJSFJvYVhNdWNHRmtaR2x1WnkwdE8xeHVJQ0FnSUdsbUlDaGliRzlqYXk1d2NtOW5jbUZ0
S1NCN0lIUm9hWE11Y0dGa1pHbHVaeTB0T3lCOVhHNGdJSDFjYmlBZ2RHaHBjeTV3WVdSa2FXNW5M
UzA3WEc1Y2JpQWdjbVYwZFhKdUlHOTFkRHRjYm4wN1hHNWNibEJ5YVc1MFZtbHphWFJ2Y2k1d2Nt
OTBiM1I1Y0dVdVVHRnlkR2xoYkZOMFlYUmxiV1Z1ZENBOUlHWjFibU4wYVc5dUtIQmhjblJwWVd3
cElIdGNiaUFnYkdWMElHTnZiblJsYm5RZ1BTQW5VRUZTVkVsQlREb25JQ3NnY0dGeWRHbGhiQzV1
WVcxbExtOXlhV2RwYm1Gc08xeHVJQ0JwWmlBb2NHRnlkR2xoYkM1d1lYSmhiWE5iTUYwcElIdGNi
aUFnSUNCamIyNTBaVzUwSUNzOUlDY2dKeUFySUhSb2FYTXVZV05qWlhCMEtIQmhjblJwWVd3dWNH
RnlZVzF6V3pCZEtUdGNiaUFnZlZ4dUlDQnBaaUFvY0dGeWRHbGhiQzVvWVhOb0tTQjdYRzRnSUNB
Z1kyOXVkR1Z1ZENBclBTQW5JQ2NnS3lCMGFHbHpMbUZqWTJWd2RDaHdZWEowYVdGc0xtaGhjMmdw
TzF4dUlDQjlYRzRnSUhKbGRIVnliaUIwYUdsekxuQmhaQ2duZTNzK0lDY2dLeUJqYjI1MFpXNTBJ
Q3NnSnlCOWZTY3BPMXh1ZlR0Y2JsQnlhVzUwVm1semFYUnZjaTV3Y205MGIzUjVjR1V1VUdGeWRH
bGhiRUpzYjJOclUzUmhkR1Z0Wlc1MElEMGdablZ1WTNScGIyNG9jR0Z5ZEdsaGJDa2dlMXh1SUNC
c1pYUWdZMjl1ZEdWdWRDQTlJQ2RRUVZKVVNVRk1JRUpNVDBOTE9pY2dLeUJ3WVhKMGFXRnNMbTVo
YldVdWIzSnBaMmx1WVd3N1hHNGdJR2xtSUNod1lYSjBhV0ZzTG5CaGNtRnRjMXN3WFNrZ2UxeHVJ
Q0FnSUdOdmJuUmxiblFnS3owZ0p5QW5JQ3NnZEdocGN5NWhZMk5sY0hRb2NHRnlkR2xoYkM1d1lY
SmhiWE5iTUYwcE8xeHVJQ0I5WEc0Z0lHbG1JQ2h3WVhKMGFXRnNMbWhoYzJncElIdGNiaUFnSUNC
amIyNTBaVzUwSUNzOUlDY2dKeUFySUhSb2FYTXVZV05qWlhCMEtIQmhjblJwWVd3dWFHRnphQ2s3
WEc0Z0lIMWNibHh1SUNCamIyNTBaVzUwSUNzOUlDY2dKeUFySUhSb2FYTXVjR0ZrS0NkUVVrOUhV
a0ZOT2ljcE8xeHVJQ0IwYUdsekxuQmhaR1JwYm1jckt6dGNiaUFnWTI5dWRHVnVkQ0FyUFNCMGFH
bHpMbUZqWTJWd2RDaHdZWEowYVdGc0xuQnliMmR5WVcwcE8xeHVJQ0IwYUdsekxuQmhaR1JwYm1j
dExUdGNibHh1SUNCeVpYUjFjbTRnZEdocGN5NXdZV1FvSjN0N1BpQW5JQ3NnWTI5dWRHVnVkQ0Fy
SUNjZ2ZYMG5LVHRjYm4wN1hHNWNibEJ5YVc1MFZtbHphWFJ2Y2k1d2NtOTBiM1I1Y0dVdVEyOXVk
R1Z1ZEZOMFlYUmxiV1Z1ZENBOUlHWjFibU4wYVc5dUtHTnZiblJsYm5RcElIdGNiaUFnY21WMGRY
SnVJSFJvYVhNdWNHRmtLRndpUTA5T1ZFVk9WRnNnSjF3aUlDc2dZMjl1ZEdWdWRDNTJZV3gxWlNB
cklGd2lKeUJkWENJcE8xeHVmVHRjYmx4dVVISnBiblJXYVhOcGRHOXlMbkJ5YjNSdmRIbHdaUzVE
YjIxdFpXNTBVM1JoZEdWdFpXNTBJRDBnWm5WdVkzUnBiMjRvWTI5dGJXVnVkQ2tnZTF4dUlDQnla
WFIxY200Z2RHaHBjeTV3WVdRb1hDSjdleUVnSjF3aUlDc2dZMjl0YldWdWRDNTJZV3gxWlNBcklG
d2lKeUI5ZlZ3aUtUdGNibjA3WEc1Y2JsQnlhVzUwVm1semFYUnZjaTV3Y205MGIzUjVjR1V1VTNW
aVJYaHdjbVZ6YzJsdmJpQTlJR1oxYm1OMGFXOXVLSE5sZUhCeUtTQjdYRzRnSUd4bGRDQndZWEpo
YlhNZ1BTQnpaWGh3Y2k1d1lYSmhiWE1zWEc0Z0lDQWdJQ0J3WVhKaGJWTjBjbWx1WjNNZ1BTQmJY
U3hjYmlBZ0lDQWdJR2hoYzJnN1hHNWNiaUFnWm05eUlDaHNaWFFnYVNBOUlEQXNJR3dnUFNCd1lY
SmhiWE11YkdWdVozUm9PeUJwSUR3Z2JEc2dhU3NyS1NCN1hHNGdJQ0FnY0dGeVlXMVRkSEpwYm1k
ekxuQjFjMmdvZEdocGN5NWhZMk5sY0hRb2NHRnlZVzF6VzJsZEtTazdYRzRnSUgxY2JseHVJQ0J3
WVhKaGJYTWdQU0FuV3ljZ0t5QndZWEpoYlZOMGNtbHVaM011YW05cGJpZ25MQ0FuS1NBcklDZGRK
enRjYmx4dUlDQm9ZWE5vSUQwZ2MyVjRjSEl1YUdGemFDQS9JQ2NnSnlBcklIUm9hWE11WVdOalpY
QjBLSE5sZUhCeUxtaGhjMmdwSURvZ0p5YzdYRzVjYmlBZ2NtVjBkWEp1SUhSb2FYTXVZV05qWlhC
MEtITmxlSEJ5TG5CaGRHZ3BJQ3NnSnlBbklDc2djR0Z5WVcxeklDc2dhR0Z6YUR0Y2JuMDdYRzVj
YmxCeWFXNTBWbWx6YVhSdmNpNXdjbTkwYjNSNWNHVXVVR0YwYUVWNGNISmxjM05wYjI0Z1BTQm1k
VzVqZEdsdmJpaHBaQ2tnZTF4dUlDQnNaWFFnY0dGMGFDQTlJR2xrTG5CaGNuUnpMbXB2YVc0b0p5
OG5LVHRjYmlBZ2NtVjBkWEp1SUNocFpDNWtZWFJoSUQ4Z0owQW5JRG9nSnljcElDc2dKMUJCVkVn
Nkp5QXJJSEJoZEdnN1hHNTlPMXh1WEc1Y2JsQnlhVzUwVm1semFYUnZjaTV3Y205MGIzUjVjR1V1
VTNSeWFXNW5UR2wwWlhKaGJDQTlJR1oxYm1OMGFXOXVLSE4wY21sdVp5a2dlMXh1SUNCeVpYUjFj
bTRnSjF3aUp5QXJJSE4wY21sdVp5NTJZV3gxWlNBcklDZGNJaWM3WEc1OU8xeHVYRzVRY21sdWRG
WnBjMmwwYjNJdWNISnZkRzkwZVhCbExrNTFiV0psY2t4cGRHVnlZV3dnUFNCbWRXNWpkR2x2Ymlo
dWRXMWlaWElwSUh0Y2JpQWdjbVYwZFhKdUlDZE9WVTFDUlZKN0p5QXJJRzUxYldKbGNpNTJZV3gx
WlNBcklDZDlKenRjYm4wN1hHNWNibEJ5YVc1MFZtbHphWFJ2Y2k1d2NtOTBiM1I1Y0dVdVFtOXZi
R1ZoYmt4cGRHVnlZV3dnUFNCbWRXNWpkR2x2YmloaWIyOXNLU0I3WEc0Z0lISmxkSFZ5YmlBblFr
OVBURVZCVG5zbklDc2dZbTl2YkM1MllXeDFaU0FySUNkOUp6dGNibjA3WEc1Y2JsQnlhVzUwVm1s
emFYUnZjaTV3Y205MGIzUjVjR1V1Vlc1a1pXWnBibVZrVEdsMFpYSmhiQ0E5SUdaMWJtTjBhVzl1
S0NrZ2UxeHVJQ0J5WlhSMWNtNGdKMVZPUkVWR1NVNUZSQ2M3WEc1OU8xeHVYRzVRY21sdWRGWnBj
MmwwYjNJdWNISnZkRzkwZVhCbExrNTFiR3hNYVhSbGNtRnNJRDBnWm5WdVkzUnBiMjRvS1NCN1hH
NGdJSEpsZEhWeWJpQW5UbFZNVENjN1hHNTlPMXh1WEc1UWNtbHVkRlpwYzJsMGIzSXVjSEp2ZEc5
MGVYQmxMa2hoYzJnZ1BTQm1kVzVqZEdsdmJpaG9ZWE5vS1NCN1hHNGdJR3hsZENCd1lXbHljeUE5
SUdoaGMyZ3VjR0ZwY25Nc1hHNGdJQ0FnSUNCcWIybHVaV1JRWVdseWN5QTlJRnRkTzF4dVhHNGdJ
R1p2Y2lBb2JHVjBJR2tnUFNBd0xDQnNJRDBnY0dGcGNuTXViR1Z1WjNSb095QnBJRHdnYkRzZ2FT
c3JLU0I3WEc0Z0lDQWdhbTlwYm1Wa1VHRnBjbk11Y0hWemFDaDBhR2x6TG1GalkyVndkQ2h3WVds
eWMxdHBYU2twTzF4dUlDQjlYRzVjYmlBZ2NtVjBkWEp1SUNkSVFWTklleWNnS3lCcWIybHVaV1JR
WVdseWN5NXFiMmx1S0Njc0lDY3BJQ3NnSjMwbk8xeHVmVHRjYmxCeWFXNTBWbWx6YVhSdmNpNXdj
bTkwYjNSNWNHVXVTR0Z6YUZCaGFYSWdQU0JtZFc1amRHbHZiaWh3WVdseUtTQjdYRzRnSUhKbGRI
VnliaUJ3WVdseUxtdGxlU0FySUNjOUp5QXJJSFJvYVhNdVlXTmpaWEIwS0hCaGFYSXVkbUZzZFdV
cE8xeHVmVHRjYmk4cUlHVnpiR2x1ZEMxbGJtRmliR1VnYm1WM0xXTmhjQ0FxTDF4dUlsMTkKZGlm
ZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0
L2Nqcy9oYW5kbGViYXJzL2NvbXBpbGVyL3Zpc2l0b3IuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkv
bm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9janMvaGFuZGxlYmFycy9jb21waWxlci92aXNp
dG9yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjc4MTRkMWU4MTcwODViNWViMzkwZTZmZjA4MmYwMjNjMzE3MDhi
YTEKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hh
bmRsZWJhcnMvZGlzdC9janMvaGFuZGxlYmFycy9jb21waWxlci92aXNpdG9yLmpzCkBAIC0wLDAg
KzEsMTQwIEBACisndXNlIHN0cmljdCc7CisKK2V4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7Cisv
LyBpc3RhbmJ1bCBpZ25vcmUgbmV4dAorCitmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0
KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6
IG9iaiB9OyB9CisKK3ZhciBfZXhjZXB0aW9uID0gcmVxdWlyZSgnLi4vZXhjZXB0aW9uJyk7CisK
K3ZhciBfZXhjZXB0aW9uMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2V4Y2VwdGlvbik7CisK
K2Z1bmN0aW9uIFZpc2l0b3IoKSB7CisgIHRoaXMucGFyZW50cyA9IFtdOworfQorCitWaXNpdG9y
LnByb3RvdHlwZSA9IHsKKyAgY29uc3RydWN0b3I6IFZpc2l0b3IsCisgIG11dGF0aW5nOiBmYWxz
ZSwKKworICAvLyBWaXNpdHMgYSBnaXZlbiB2YWx1ZS4gSWYgbXV0YXRpbmcsIHdpbGwgcmVwbGFj
ZSB0aGUgdmFsdWUgaWYgbmVjZXNzYXJ5LgorICBhY2NlcHRLZXk6IGZ1bmN0aW9uIGFjY2VwdEtl
eShub2RlLCBuYW1lKSB7CisgICAgdmFyIHZhbHVlID0gdGhpcy5hY2NlcHQobm9kZVtuYW1lXSk7
CisgICAgaWYgKHRoaXMubXV0YXRpbmcpIHsKKyAgICAgIC8vIEhhY2t5IHNhbml0eSBjaGVjazog
VGhpcyBtYXkgaGF2ZSBhIGZldyBmYWxzZSBwb3NpdGl2ZXMgZm9yIHR5cGUgZm9yIHRoZSBoZWxw
ZXIKKyAgICAgIC8vIG1ldGhvZHMgYnV0IHdpbGwgZ2VuZXJhbGx5IGRvIHRoZSByaWdodCB0aGlu
ZyB3aXRob3V0IGEgbG90IG9mIG92ZXJoZWFkLgorICAgICAgaWYgKHZhbHVlICYmICFWaXNpdG9y
LnByb3RvdHlwZVt2YWx1ZS50eXBlXSkgeworICAgICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJb
J2RlZmF1bHQnXSgnVW5leHBlY3RlZCBub2RlIHR5cGUgIicgKyB2YWx1ZS50eXBlICsgJyIgZm91
bmQgd2hlbiBhY2NlcHRpbmcgJyArIG5hbWUgKyAnIG9uICcgKyBub2RlLnR5cGUpOworICAgICAg
fQorICAgICAgbm9kZVtuYW1lXSA9IHZhbHVlOworICAgIH0KKyAgfSwKKworICAvLyBQZXJmb3Jt
cyBhbiBhY2NlcHQgb3BlcmF0aW9uIHdpdGggYWRkZWQgc2FuaXR5IGNoZWNrIHRvIGVuc3VyZQor
ICAvLyByZXF1aXJlZCBrZXlzIGFyZSBub3QgcmVtb3ZlZC4KKyAgYWNjZXB0UmVxdWlyZWQ6IGZ1
bmN0aW9uIGFjY2VwdFJlcXVpcmVkKG5vZGUsIG5hbWUpIHsKKyAgICB0aGlzLmFjY2VwdEtleShu
b2RlLCBuYW1lKTsKKworICAgIGlmICghbm9kZVtuYW1lXSkgeworICAgICAgdGhyb3cgbmV3IF9l
eGNlcHRpb24yWydkZWZhdWx0J10obm9kZS50eXBlICsgJyByZXF1aXJlcyAnICsgbmFtZSk7Cisg
ICAgfQorICB9LAorCisgIC8vIFRyYXZlcnNlcyBhIGdpdmVuIGFycmF5LiBJZiBtdXRhdGluZywg
ZW1wdHkgcmVzcG5zZXMgd2lsbCBiZSByZW1vdmVkCisgIC8vIGZvciBjaGlsZCBlbGVtZW50cy4K
KyAgYWNjZXB0QXJyYXk6IGZ1bmN0aW9uIGFjY2VwdEFycmF5KGFycmF5KSB7CisgICAgZm9yICh2
YXIgaSA9IDAsIGwgPSBhcnJheS5sZW5ndGg7IGkgPCBsOyBpKyspIHsKKyAgICAgIHRoaXMuYWNj
ZXB0S2V5KGFycmF5LCBpKTsKKworICAgICAgaWYgKCFhcnJheVtpXSkgeworICAgICAgICBhcnJh
eS5zcGxpY2UoaSwgMSk7CisgICAgICAgIGktLTsKKyAgICAgICAgbC0tOworICAgICAgfQorICAg
IH0KKyAgfSwKKworICBhY2NlcHQ6IGZ1bmN0aW9uIGFjY2VwdChvYmplY3QpIHsKKyAgICBpZiAo
IW9iamVjdCkgeworICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8qIGlzdGFuYnVsIGlnbm9y
ZSBuZXh0OiBTYW5pdHkgY29kZSAqLworICAgIGlmICghdGhpc1tvYmplY3QudHlwZV0pIHsKKyAg
ICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCdVbmtub3duIHR5cGU6ICcgKyBv
YmplY3QudHlwZSwgb2JqZWN0KTsKKyAgICB9CisKKyAgICBpZiAodGhpcy5jdXJyZW50KSB7Cisg
ICAgICB0aGlzLnBhcmVudHMudW5zaGlmdCh0aGlzLmN1cnJlbnQpOworICAgIH0KKyAgICB0aGlz
LmN1cnJlbnQgPSBvYmplY3Q7CisKKyAgICB2YXIgcmV0ID0gdGhpc1tvYmplY3QudHlwZV0ob2Jq
ZWN0KTsKKworICAgIHRoaXMuY3VycmVudCA9IHRoaXMucGFyZW50cy5zaGlmdCgpOworCisgICAg
aWYgKCF0aGlzLm11dGF0aW5nIHx8IHJldCkgeworICAgICAgcmV0dXJuIHJldDsKKyAgICB9IGVs
c2UgaWYgKHJldCAhPT0gZmFsc2UpIHsKKyAgICAgIHJldHVybiBvYmplY3Q7CisgICAgfQorICB9
LAorCisgIFByb2dyYW06IGZ1bmN0aW9uIFByb2dyYW0ocHJvZ3JhbSkgeworICAgIHRoaXMuYWNj
ZXB0QXJyYXkocHJvZ3JhbS5ib2R5KTsKKyAgfSwKKworICBNdXN0YWNoZVN0YXRlbWVudDogdmlz
aXRTdWJFeHByZXNzaW9uLAorICBEZWNvcmF0b3I6IHZpc2l0U3ViRXhwcmVzc2lvbiwKKworICBC
bG9ja1N0YXRlbWVudDogdmlzaXRCbG9jaywKKyAgRGVjb3JhdG9yQmxvY2s6IHZpc2l0QmxvY2ss
CisKKyAgUGFydGlhbFN0YXRlbWVudDogdmlzaXRQYXJ0aWFsLAorICBQYXJ0aWFsQmxvY2tTdGF0
ZW1lbnQ6IGZ1bmN0aW9uIFBhcnRpYWxCbG9ja1N0YXRlbWVudChwYXJ0aWFsKSB7CisgICAgdmlz
aXRQYXJ0aWFsLmNhbGwodGhpcywgcGFydGlhbCk7CisKKyAgICB0aGlzLmFjY2VwdEtleShwYXJ0
aWFsLCAncHJvZ3JhbScpOworICB9LAorCisgIENvbnRlbnRTdGF0ZW1lbnQ6IGZ1bmN0aW9uIENv
bnRlbnRTdGF0ZW1lbnQoKSAvKiBjb250ZW50ICove30sCisgIENvbW1lbnRTdGF0ZW1lbnQ6IGZ1
bmN0aW9uIENvbW1lbnRTdGF0ZW1lbnQoKSAvKiBjb21tZW50ICove30sCisKKyAgU3ViRXhwcmVz
c2lvbjogdmlzaXRTdWJFeHByZXNzaW9uLAorCisgIFBhdGhFeHByZXNzaW9uOiBmdW5jdGlvbiBQ
YXRoRXhwcmVzc2lvbigpIC8qIHBhdGggKi97fSwKKworICBTdHJpbmdMaXRlcmFsOiBmdW5jdGlv
biBTdHJpbmdMaXRlcmFsKCkgLyogc3RyaW5nICove30sCisgIE51bWJlckxpdGVyYWw6IGZ1bmN0
aW9uIE51bWJlckxpdGVyYWwoKSAvKiBudW1iZXIgKi97fSwKKyAgQm9vbGVhbkxpdGVyYWw6IGZ1
bmN0aW9uIEJvb2xlYW5MaXRlcmFsKCkgLyogYm9vbCAqL3t9LAorICBVbmRlZmluZWRMaXRlcmFs
OiBmdW5jdGlvbiBVbmRlZmluZWRMaXRlcmFsKCkgLyogbGl0ZXJhbCAqL3t9LAorICBOdWxsTGl0
ZXJhbDogZnVuY3Rpb24gTnVsbExpdGVyYWwoKSAvKiBsaXRlcmFsICove30sCisKKyAgSGFzaDog
ZnVuY3Rpb24gSGFzaChoYXNoKSB7CisgICAgdGhpcy5hY2NlcHRBcnJheShoYXNoLnBhaXJzKTsK
KyAgfSwKKyAgSGFzaFBhaXI6IGZ1bmN0aW9uIEhhc2hQYWlyKHBhaXIpIHsKKyAgICB0aGlzLmFj
Y2VwdFJlcXVpcmVkKHBhaXIsICd2YWx1ZScpOworICB9Cit9OworCitmdW5jdGlvbiB2aXNpdFN1
YkV4cHJlc3Npb24obXVzdGFjaGUpIHsKKyAgdGhpcy5hY2NlcHRSZXF1aXJlZChtdXN0YWNoZSwg
J3BhdGgnKTsKKyAgdGhpcy5hY2NlcHRBcnJheShtdXN0YWNoZS5wYXJhbXMpOworICB0aGlzLmFj
Y2VwdEtleShtdXN0YWNoZSwgJ2hhc2gnKTsKK30KK2Z1bmN0aW9uIHZpc2l0QmxvY2soYmxvY2sp
IHsKKyAgdmlzaXRTdWJFeHByZXNzaW9uLmNhbGwodGhpcywgYmxvY2spOworCisgIHRoaXMuYWNj
ZXB0S2V5KGJsb2NrLCAncHJvZ3JhbScpOworICB0aGlzLmFjY2VwdEtleShibG9jaywgJ2ludmVy
c2UnKTsKK30KK2Z1bmN0aW9uIHZpc2l0UGFydGlhbChwYXJ0aWFsKSB7CisgIHRoaXMuYWNjZXB0
UmVxdWlyZWQocGFydGlhbCwgJ25hbWUnKTsKKyAgdGhpcy5hY2NlcHRBcnJheShwYXJ0aWFsLnBh
cmFtcyk7CisgIHRoaXMuYWNjZXB0S2V5KHBhcnRpYWwsICdoYXNoJyk7Cit9CisKK2V4cG9ydHNb
J2RlZmF1bHQnXSA9IFZpc2l0b3I7Cittb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQn
XTsKKy8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlK
MlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUx5NHVMeTR1TDJ4cFlpOW9ZVzVr
YkdWaVlYSnpMMk52YlhCcGJHVnlMM1pwYzJsMGIzSXVhbk1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZ
WEJ3YVc1bmN5STZJanM3T3pzN096dDVRa0ZCYzBJc1kwRkJZenM3T3p0QlFVVndReXhUUVVGVExF
OUJRVThzUjBGQlJ6dEJRVU5xUWl4TlFVRkpMRU5CUVVNc1QwRkJUeXhIUVVGSExFVkJRVVVzUTBG
QlF6dERRVU51UWpzN1FVRkZSQ3hQUVVGUExFTkJRVU1zVTBGQlV5eEhRVUZITzBGQlEyeENMR0ZC
UVZjc1JVRkJSU3hQUVVGUE8wRkJRM0JDTEZWQlFWRXNSVUZCUlN4TFFVRkxPenM3UVVGSFppeFhR
VUZUTEVWQlFVVXNiVUpCUVZNc1NVRkJTU3hGUVVGRkxFbEJRVWtzUlVGQlJUdEJRVU01UWl4UlFV
RkpMRXRCUVVzc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4
SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJRM0JETEZGQlFVa3NTVUZCU1N4RFFVRkRMRkZC
UVZFc1JVRkJSVHM3TzBGQlIycENMRlZCUVVrc1MwRkJTeXhKUVVGSkxFTkJRVU1zVDBGQlR5eERR
VUZETEZOQlFWTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVU3UVVGRE0w
TXNZMEZCVFN3eVFrRkJZeXgzUWtGQmQwSXNSMEZCUnl4TFFVRkxMRU5CUVVNc1NVRkJTU3hIUVVG
SExIbENRVUY1UWl4SFFVRkhMRWxCUVVrc1IwRkJSeXhOUVVGTkxFZEJRVWNzU1VGQlNTeERRVUZE
TEVsQlFVa3NRMEZCUXl4RFFVRkRPMDlCUTNCSU8wRkJRMFFzVlVGQlNTeERRVUZETEVsQlFVa3NR
MEZCUXl4SFFVRkhMRXRCUVVzc1EwRkJRenRMUVVOd1FqdEhRVU5HT3pzN08wRkJTVVFzWjBKQlFX
TXNSVUZCUlN4M1FrRkJVeXhKUVVGSkxFVkJRVVVzU1VGQlNTeEZRVUZGTzBGQlEyNURMRkZCUVVr
c1EwRkJReXhUUVVGVExFTkJRVU1zU1VGQlNTeEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPenRC
UVVVelFpeFJRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRk8wRkJR
MllzV1VGQlRTd3lRa0ZCWXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hIUVVGSExGbEJRVmtzUjBGQlJ5
eEpRVUZKTEVOQlFVTXNRMEZCUXp0TFFVTjBSRHRIUVVOR096czdPMEZCU1VRc1lVRkJWeXhGUVVG
RkxIRkNRVUZUTEV0QlFVc3NSVUZCUlR0QlFVTXpRaXhUUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZI
TEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1MwRkJTeXhEUVVGRExFMUJRVTBzUlVGQlJTeERR
VUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRk8wRkJRelZETEZWQlFV
a3NRMEZCUXl4VFFVRlRMRU5CUVVNc1MwRkJTeXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZET3p0
QlFVVjZRaXhWUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZPMEZC
UTJJc1lVRkJTeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRM
RU5CUVVNN1FVRkRia0lzVTBGQlF5eEZRVUZGTEVOQlFVTTdRVUZEU2l4VFFVRkRMRVZCUVVVc1Ew
RkJRenRQUVVOTU8wdEJRMFk3UjBGRFJqczdRVUZGUkN4UlFVRk5MRVZCUVVVc1owSkJRVk1zVFVG
QlRTeEZRVUZGTzBGQlEzWkNMRkZCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVU3UVVGRFdDeGhRVUZQ
TzB0QlExSTdPenRCUVVkRUxGRkJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRM
RWxCUVVrc1EwRkJReXhGUVVGRk8wRkJRM1JDTEZsQlFVMHNNa0pCUVdNc1owSkJRV2RDTEVkQlFV
Y3NUVUZCVFN4RFFVRkRMRWxCUVVrc1JVRkJSU3hOUVVGTkxFTkJRVU1zUTBGQlF6dExRVU0zUkRz
N1FVRkZSQ3hSUVVGSkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVWQlFVVTdRVUZEYUVJc1ZVRkJTU3hE
UVVGRExFOUJRVThzUTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJR
eXhEUVVGRE8wdEJRM0JETzBGQlEwUXNVVUZCU1N4RFFVRkRMRTlCUVU4c1IwRkJSeXhOUVVGTkxF
TkJRVU03TzBGQlJYUkNMRkZCUVVrc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVO
QlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03TzBGQlJYQkRMRkZC
UVVrc1EwRkJReXhQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4TFFVRkxM
RVZCUVVVc1EwRkJRenM3UVVGRmNFTXNVVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhSUVVGUkxF
bEJRVWtzUjBGQlJ5eEZRVUZGTzBGQlEzcENMR0ZCUVU4c1IwRkJSeXhEUVVGRE8wdEJRMW9zVFVG
QlRTeEpRVUZKTEVkQlFVY3NTMEZCU3l4TFFVRkxMRVZCUVVVN1FVRkRlRUlzWVVGQlR5eE5RVUZO
TEVOQlFVTTdTMEZEWmp0SFFVTkdPenRCUVVWRUxGTkJRVThzUlVGQlJTeHBRa0ZCVXl4UFFVRlBM
RVZCUVVVN1FVRkRla0lzVVVGQlNTeERRVUZETEZkQlFWY3NRMEZCUXl4UFFVRlBMRU5CUVVNc1NV
RkJTU3hEUVVGRExFTkJRVU03UjBGRGFFTTdPMEZCUlVRc2JVSkJRV2xDTEVWQlFVVXNhMEpCUVd0
Q08wRkJRM0pETEZkQlFWTXNSVUZCUlN4clFrRkJhMEk3TzBGQlJUZENMR2RDUVVGakxFVkJRVVVz
VlVGQlZUdEJRVU14UWl4blFrRkJZeXhGUVVGRkxGVkJRVlU3TzBGQlJURkNMR3RDUVVGblFpeEZR
VUZGTEZsQlFWazdRVUZET1VJc2RVSkJRWEZDTEVWQlFVVXNLMEpCUVZNc1QwRkJUeXhGUVVGRk8w
RkJRM1pETEdkQ1FVRlpMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUlVGQlJTeFBRVUZQTEVO
QlFVTXNRMEZCUXpzN1FVRkZha01zVVVGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4UFFVRlBMRVZC
UVVVc1UwRkJVeXhEUVVGRExFTkJRVU03UjBGRGNFTTdPMEZCUlVRc2EwSkJRV2RDTEVWQlFVVXNl
VU5CUVhkQ0xFVkJRVVU3UVVGRE5VTXNhMEpCUVdkQ0xFVkJRVVVzZVVOQlFYZENMRVZCUVVVN08w
RkJSVFZETEdWQlFXRXNSVUZCUlN4clFrRkJhMEk3TzBGQlJXcERMR2RDUVVGakxFVkJRVVVzYjBO
QlFYRkNMRVZCUVVVN08wRkJSWFpETEdWQlFXRXNSVUZCUlN4eFEwRkJkVUlzUlVGQlJUdEJRVU40
UXl4bFFVRmhMRVZCUVVVc2NVTkJRWFZDTEVWQlFVVTdRVUZEZUVNc1owSkJRV01zUlVGQlJTeHZR
MEZCY1VJc1JVRkJSVHRCUVVOMlF5eHJRa0ZCWjBJc1JVRkJSU3g1UTBGQmQwSXNSVUZCUlR0QlFV
TTFReXhoUVVGWExFVkJRVVVzYjBOQlFYZENMRVZCUVVVN08wRkJSWFpETEUxQlFVa3NSVUZCUlN4
alFVRlRMRWxCUVVrc1JVRkJSVHRCUVVOdVFpeFJRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRWxC
UVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dEhRVU01UWp0QlFVTkVMRlZCUVZFc1JVRkJS
U3hyUWtGQlV5eEpRVUZKTEVWQlFVVTdRVUZEZGtJc1VVRkJTU3hEUVVGRExHTkJRV01zUTBGQlF5
eEpRVUZKTEVWQlFVVXNUMEZCVHl4RFFVRkRMRU5CUVVNN1IwRkRjRU03UTBGRFJpeERRVUZET3p0
QlFVVkdMRk5CUVZNc2EwSkJRV3RDTEVOQlFVTXNVVUZCVVN4RlFVRkZPMEZCUTNCRExFMUJRVWtz
UTBGQlF5eGpRVUZqTEVOQlFVTXNVVUZCVVN4RlFVRkZMRTFCUVUwc1EwRkJReXhEUVVGRE8wRkJR
M1JETEUxQlFVa3NRMEZCUXl4WFFVRlhMRU5CUVVNc1VVRkJVU3hEUVVGRExFMUJRVTBzUTBGQlF5
eERRVUZETzBGQlEyeERMRTFCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zVVVGQlVTeEZRVUZGTEUx
QlFVMHNRMEZCUXl4RFFVRkRPME5CUTJ4RE8wRkJRMFFzVTBGQlV5eFZRVUZWTEVOQlFVTXNTMEZC
U3l4RlFVRkZPMEZCUTNwQ0xHOUNRVUZyUWl4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFVkJR
VVVzUzBGQlN5eERRVUZETEVOQlFVTTdPMEZCUlhKRExFMUJRVWtzUTBGQlF5eFRRVUZUTEVOQlFV
TXNTMEZCU3l4RlFVRkZMRk5CUVZNc1EwRkJReXhEUVVGRE8wRkJRMnBETEUxQlFVa3NRMEZCUXl4
VFFVRlRMRU5CUVVNc1MwRkJTeXhGUVVGRkxGTkJRVk1zUTBGQlF5eERRVUZETzBOQlEyeERPMEZC
UTBRc1UwRkJVeXhaUVVGWkxFTkJRVU1zVDBGQlR5eEZRVUZGTzBGQlF6ZENMRTFCUVVrc1EwRkJR
eXhqUVVGakxFTkJRVU1zVDBGQlR5eEZRVUZGTEUxQlFVMHNRMEZCUXl4RFFVRkRPMEZCUTNKRExF
MUJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTXNUMEZCVHl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVG
RE8wRkJRMnBETEUxQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1QwRkJUeXhGUVVGRkxFMUJRVTBz
UTBGQlF5eERRVUZETzBOQlEycERPenR4UWtGRll5eFBRVUZQSWl3aVptbHNaU0k2SW5acGMybDBi
M0l1YW5NaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SnBiWEJ2Y25RZ1JYaGpaWEIwYVc5dUlH
WnliMjBnSnk0dUwyVjRZMlZ3ZEdsdmJpYzdYRzVjYm1aMWJtTjBhVzl1SUZacGMybDBiM0lvS1NC
N1hHNGdJSFJvYVhNdWNHRnlaVzUwY3lBOUlGdGRPMXh1ZlZ4dVhHNVdhWE5wZEc5eUxuQnliM1J2
ZEhsd1pTQTlJSHRjYmlBZ1kyOXVjM1J5ZFdOMGIzSTZJRlpwYzJsMGIzSXNYRzRnSUcxMWRHRjBh
VzVuT2lCbVlXeHpaU3hjYmx4dUlDQXZMeUJXYVhOcGRITWdZU0JuYVhabGJpQjJZV3gxWlM0Z1NX
WWdiWFYwWVhScGJtY3NJSGRwYkd3Z2NtVndiR0ZqWlNCMGFHVWdkbUZzZFdVZ2FXWWdibVZqWlhO
ellYSjVMbHh1SUNCaFkyTmxjSFJMWlhrNklHWjFibU4wYVc5dUtHNXZaR1VzSUc1aGJXVXBJSHRj
YmlBZ0lDQnNaWFFnZG1Gc2RXVWdQU0IwYUdsekxtRmpZMlZ3ZENodWIyUmxXMjVoYldWZEtUdGNi
aUFnSUNCcFppQW9kR2hwY3k1dGRYUmhkR2x1WnlrZ2UxeHVJQ0FnSUNBZ0x5OGdTR0ZqYTNrZ2My
RnVhWFI1SUdOb1pXTnJPaUJVYUdseklHMWhlU0JvWVhabElHRWdabVYzSUdaaGJITmxJSEJ2YzJs
MGFYWmxjeUJtYjNJZ2RIbHdaU0JtYjNJZ2RHaGxJR2hsYkhCbGNseHVJQ0FnSUNBZ0x5OGdiV1Yw
YUc5a2N5QmlkWFFnZDJsc2JDQm5aVzVsY21Gc2JIa2daRzhnZEdobElISnBaMmgwSUhSb2FXNW5J
SGRwZEdodmRYUWdZU0JzYjNRZ2IyWWdiM1psY21obFlXUXVYRzRnSUNBZ0lDQnBaaUFvZG1Gc2RX
VWdKaVlnSVZacGMybDBiM0l1Y0hKdmRHOTBlWEJsVzNaaGJIVmxMblI1Y0dWZEtTQjdYRzRnSUNB
Z0lDQWdJSFJvY205M0lHNWxkeUJGZUdObGNIUnBiMjRvSjFWdVpYaHdaV04wWldRZ2JtOWtaU0Iw
ZVhCbElGd2lKeUFySUhaaGJIVmxMblI1Y0dVZ0t5QW5YQ0lnWm05MWJtUWdkMmhsYmlCaFkyTmxj
SFJwYm1jZ0p5QXJJRzVoYldVZ0t5QW5JRzl1SUNjZ0t5QnViMlJsTG5SNWNHVXBPMXh1SUNBZ0lD
QWdmVnh1SUNBZ0lDQWdibTlrWlZ0dVlXMWxYU0E5SUhaaGJIVmxPMXh1SUNBZ0lIMWNiaUFnZlN4
Y2JseHVJQ0F2THlCUVpYSm1iM0p0Y3lCaGJpQmhZMk5sY0hRZ2IzQmxjbUYwYVc5dUlIZHBkR2dn
WVdSa1pXUWdjMkZ1YVhSNUlHTm9aV05ySUhSdklHVnVjM1Z5WlZ4dUlDQXZMeUJ5WlhGMWFYSmxa
Q0JyWlhseklHRnlaU0J1YjNRZ2NtVnRiM1psWkM1Y2JpQWdZV05qWlhCMFVtVnhkV2x5WldRNklH
WjFibU4wYVc5dUtHNXZaR1VzSUc1aGJXVXBJSHRjYmlBZ0lDQjBhR2x6TG1GalkyVndkRXRsZVNo
dWIyUmxMQ0J1WVcxbEtUdGNibHh1SUNBZ0lHbG1JQ2doYm05a1pWdHVZVzFsWFNrZ2UxeHVJQ0Fn
SUNBZ2RHaHliM2NnYm1WM0lFVjRZMlZ3ZEdsdmJpaHViMlJsTG5SNWNHVWdLeUFuSUhKbGNYVnBj
bVZ6SUNjZ0t5QnVZVzFsS1R0Y2JpQWdJQ0I5WEc0Z0lIMHNYRzVjYmlBZ0x5OGdWSEpoZG1WeWMy
VnpJR0VnWjJsMlpXNGdZWEp5WVhrdUlFbG1JRzExZEdGMGFXNW5MQ0JsYlhCMGVTQnlaWE53Ym5O
bGN5QjNhV3hzSUdKbElISmxiVzkyWldSY2JpQWdMeThnWm05eUlHTm9hV3hrSUdWc1pXMWxiblJ6
TGx4dUlDQmhZMk5sY0hSQmNuSmhlVG9nWm5WdVkzUnBiMjRvWVhKeVlYa3BJSHRjYmlBZ0lDQm1i
M0lnS0d4bGRDQnBJRDBnTUN3Z2JDQTlJR0Z5Y21GNUxteGxibWQwYURzZ2FTQThJR3c3SUdrckt5
a2dlMXh1SUNBZ0lDQWdkR2hwY3k1aFkyTmxjSFJMWlhrb1lYSnlZWGtzSUdrcE8xeHVYRzRnSUNB
Z0lDQnBaaUFvSVdGeWNtRjVXMmxkS1NCN1hHNGdJQ0FnSUNBZ0lHRnljbUY1TG5Od2JHbGpaU2hw
TENBeEtUdGNiaUFnSUNBZ0lDQWdhUzB0TzF4dUlDQWdJQ0FnSUNCc0xTMDdYRzRnSUNBZ0lDQjlY
RzRnSUNBZ2ZWeHVJQ0I5TEZ4dVhHNGdJR0ZqWTJWd2REb2dablZ1WTNScGIyNG9iMkpxWldOMEtT
QjdYRzRnSUNBZ2FXWWdLQ0Z2WW1wbFkzUXBJSHRjYmlBZ0lDQWdJSEpsZEhWeWJqdGNiaUFnSUNC
OVhHNWNiaUFnSUNBdktpQnBjM1JoYm1KMWJDQnBaMjV2Y21VZ2JtVjRkRG9nVTJGdWFYUjVJR052
WkdVZ0tpOWNiaUFnSUNCcFppQW9JWFJvYVhOYmIySnFaV04wTG5SNWNHVmRLU0I3WEc0Z0lDQWdJ
Q0IwYUhKdmR5QnVaWGNnUlhoalpYQjBhVzl1S0NkVmJtdHViM2R1SUhSNWNHVTZJQ2NnS3lCdllt
cGxZM1F1ZEhsd1pTd2diMkpxWldOMEtUdGNiaUFnSUNCOVhHNWNiaUFnSUNCcFppQW9kR2hwY3k1
amRYSnlaVzUwS1NCN1hHNGdJQ0FnSUNCMGFHbHpMbkJoY21WdWRITXVkVzV6YUdsbWRDaDBhR2x6
TG1OMWNuSmxiblFwTzF4dUlDQWdJSDFjYmlBZ0lDQjBhR2x6TG1OMWNuSmxiblFnUFNCdlltcGxZ
M1E3WEc1Y2JpQWdJQ0JzWlhRZ2NtVjBJRDBnZEdocGMxdHZZbXBsWTNRdWRIbHdaVjBvYjJKcVpX
TjBLVHRjYmx4dUlDQWdJSFJvYVhNdVkzVnljbVZ1ZENBOUlIUm9hWE11Y0dGeVpXNTBjeTV6YUds
bWRDZ3BPMXh1WEc0Z0lDQWdhV1lnS0NGMGFHbHpMbTExZEdGMGFXNW5JSHg4SUhKbGRDa2dlMXh1
SUNBZ0lDQWdjbVYwZFhKdUlISmxkRHRjYmlBZ0lDQjlJR1ZzYzJVZ2FXWWdLSEpsZENBaFBUMGda
bUZzYzJVcElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlCdlltcGxZM1E3WEc0Z0lDQWdmVnh1SUNCOUxG
eHVYRzRnSUZCeWIyZHlZVzA2SUdaMWJtTjBhVzl1S0hCeWIyZHlZVzBwSUh0Y2JpQWdJQ0IwYUds
ekxtRmpZMlZ3ZEVGeWNtRjVLSEJ5YjJkeVlXMHVZbTlrZVNrN1hHNGdJSDBzWEc1Y2JpQWdUWFZ6
ZEdGamFHVlRkR0YwWlcxbGJuUTZJSFpwYzJsMFUzVmlSWGh3Y21WemMybHZiaXhjYmlBZ1JHVmpi
M0poZEc5eU9pQjJhWE5wZEZOMVlrVjRjSEpsYzNOcGIyNHNYRzVjYmlBZ1FteHZZMnRUZEdGMFpX
MWxiblE2SUhacGMybDBRbXh2WTJzc1hHNGdJRVJsWTI5eVlYUnZja0pzYjJOck9pQjJhWE5wZEVK
c2IyTnJMRnh1WEc0Z0lGQmhjblJwWVd4VGRHRjBaVzFsYm5RNklIWnBjMmwwVUdGeWRHbGhiQ3hj
YmlBZ1VHRnlkR2xoYkVKc2IyTnJVM1JoZEdWdFpXNTBPaUJtZFc1amRHbHZiaWh3WVhKMGFXRnNL
U0I3WEc0Z0lDQWdkbWx6YVhSUVlYSjBhV0ZzTG1OaGJHd29kR2hwY3l3Z2NHRnlkR2xoYkNrN1hH
NWNiaUFnSUNCMGFHbHpMbUZqWTJWd2RFdGxlU2h3WVhKMGFXRnNMQ0FuY0hKdlozSmhiU2NwTzF4
dUlDQjlMRnh1WEc0Z0lFTnZiblJsYm5SVGRHRjBaVzFsYm5RNklHWjFibU4wYVc5dUtDOHFJR052
Ym5SbGJuUWdLaThwSUh0OUxGeHVJQ0JEYjIxdFpXNTBVM1JoZEdWdFpXNTBPaUJtZFc1amRHbHZi
aWd2S2lCamIyMXRaVzUwSUNvdktTQjdmU3hjYmx4dUlDQlRkV0pGZUhCeVpYTnphVzl1T2lCMmFY
TnBkRk4xWWtWNGNISmxjM05wYjI0c1hHNWNiaUFnVUdGMGFFVjRjSEpsYzNOcGIyNDZJR1oxYm1O
MGFXOXVLQzhxSUhCaGRHZ2dLaThwSUh0OUxGeHVYRzRnSUZOMGNtbHVaMHhwZEdWeVlXdzZJR1ox
Ym1OMGFXOXVLQzhxSUhOMGNtbHVaeUFxTHlrZ2UzMHNYRzRnSUU1MWJXSmxja3hwZEdWeVlXdzZJ
R1oxYm1OMGFXOXVLQzhxSUc1MWJXSmxjaUFxTHlrZ2UzMHNYRzRnSUVKdmIyeGxZVzVNYVhSbGNt
RnNPaUJtZFc1amRHbHZiaWd2S2lCaWIyOXNJQ292S1NCN2ZTeGNiaUFnVlc1a1pXWnBibVZrVEds
MFpYSmhiRG9nWm5WdVkzUnBiMjRvTHlvZ2JHbDBaWEpoYkNBcUx5a2dlMzBzWEc0Z0lFNTFiR3hN
YVhSbGNtRnNPaUJtZFc1amRHbHZiaWd2S2lCc2FYUmxjbUZzSUNvdktTQjdmU3hjYmx4dUlDQklZ
WE5vT2lCbWRXNWpkR2x2Ymlob1lYTm9LU0I3WEc0Z0lDQWdkR2hwY3k1aFkyTmxjSFJCY25KaGVT
aG9ZWE5vTG5CaGFYSnpLVHRjYmlBZ2ZTeGNiaUFnU0dGemFGQmhhWEk2SUdaMWJtTjBhVzl1S0hC
aGFYSXBJSHRjYmlBZ0lDQjBhR2x6TG1GalkyVndkRkpsY1hWcGNtVmtLSEJoYVhJc0lDZDJZV3gx
WlNjcE8xeHVJQ0I5WEc1OU8xeHVYRzVtZFc1amRHbHZiaUIyYVhOcGRGTjFZa1Y0Y0hKbGMzTnBi
MjRvYlhWemRHRmphR1VwSUh0Y2JpQWdkR2hwY3k1aFkyTmxjSFJTWlhGMWFYSmxaQ2h0ZFhOMFlX
Tm9aU3dnSjNCaGRHZ25LVHRjYmlBZ2RHaHBjeTVoWTJObGNIUkJjbkpoZVNodGRYTjBZV05vWlM1
d1lYSmhiWE1wTzF4dUlDQjBhR2x6TG1GalkyVndkRXRsZVNodGRYTjBZV05vWlN3Z0oyaGhjMmdu
S1R0Y2JuMWNibVoxYm1OMGFXOXVJSFpwYzJsMFFteHZZMnNvWW14dlkyc3BJSHRjYmlBZ2RtbHph
WFJUZFdKRmVIQnlaWE56YVc5dUxtTmhiR3dvZEdocGN5d2dZbXh2WTJzcE8xeHVYRzRnSUhSb2FY
TXVZV05qWlhCMFMyVjVLR0pzYjJOckxDQW5jSEp2WjNKaGJTY3BPMXh1SUNCMGFHbHpMbUZqWTJW
d2RFdGxlU2hpYkc5amF5d2dKMmx1ZG1WeWMyVW5LVHRjYm4xY2JtWjFibU4wYVc5dUlIWnBjMmww
VUdGeWRHbGhiQ2h3WVhKMGFXRnNLU0I3WEc0Z0lIUm9hWE11WVdOalpYQjBVbVZ4ZFdseVpXUW9j
R0Z5ZEdsaGJDd2dKMjVoYldVbktUdGNiaUFnZEdocGN5NWhZMk5sY0hSQmNuSmhlU2h3WVhKMGFX
RnNMbkJoY21GdGN5azdYRzRnSUhSb2FYTXVZV05qWlhCMFMyVjVLSEJoY25ScFlXd3NJQ2RvWVhO
b0p5azdYRzU5WEc1Y2JtVjRjRzl5ZENCa1pXWmhkV3gwSUZacGMybDBiM0k3WEc0aVhYMD0KZGlm
ZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0
L2Nqcy9oYW5kbGViYXJzL2NvbXBpbGVyL3doaXRlc3BhY2UtY29udHJvbC5qcyBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2Nqcy9oYW5kbGViYXJzL2Nv
bXBpbGVyL3doaXRlc3BhY2UtY29udHJvbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNDUzYjUzYmQzNTc1Mjli
NzhkNTUyZTM2MWQ0N2I0ZGFiZWEzMWZhCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
anF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvY2pzL2hhbmRsZWJhcnMvY29tcGls
ZXIvd2hpdGVzcGFjZS1jb250cm9sLmpzCkBAIC0wLDAgKzEsMjIxIEBACisndXNlIHN0cmljdCc7
CisKK2V4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7CisvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dAor
CitmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9i
ai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9CisKK3ZhciBfdmlzaXRv
ciA9IHJlcXVpcmUoJy4vdmlzaXRvcicpOworCit2YXIgX3Zpc2l0b3IyID0gX2ludGVyb3BSZXF1
aXJlRGVmYXVsdChfdmlzaXRvcik7CisKK2Z1bmN0aW9uIFdoaXRlc3BhY2VDb250cm9sKCkgewor
ICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNbMF0gPT09
IHVuZGVmaW5lZCA/IHt9IDogYXJndW1lbnRzWzBdOworCisgIHRoaXMub3B0aW9ucyA9IG9wdGlv
bnM7Cit9CitXaGl0ZXNwYWNlQ29udHJvbC5wcm90b3R5cGUgPSBuZXcgX3Zpc2l0b3IyWydkZWZh
dWx0J10oKTsKKworV2hpdGVzcGFjZUNvbnRyb2wucHJvdG90eXBlLlByb2dyYW0gPSBmdW5jdGlv
biAocHJvZ3JhbSkgeworICB2YXIgZG9TdGFuZGFsb25lID0gIXRoaXMub3B0aW9ucy5pZ25vcmVT
dGFuZGFsb25lOworCisgIHZhciBpc1Jvb3QgPSAhdGhpcy5pc1Jvb3RTZWVuOworICB0aGlzLmlz
Um9vdFNlZW4gPSB0cnVlOworCisgIHZhciBib2R5ID0gcHJvZ3JhbS5ib2R5OworICBmb3IgKHZh
ciBpID0gMCwgbCA9IGJvZHkubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CisgICAgdmFyIGN1cnJlbnQg
PSBib2R5W2ldLAorICAgICAgICBzdHJpcCA9IHRoaXMuYWNjZXB0KGN1cnJlbnQpOworCisgICAg
aWYgKCFzdHJpcCkgeworICAgICAgY29udGludWU7CisgICAgfQorCisgICAgdmFyIF9pc1ByZXZX
aGl0ZXNwYWNlID0gaXNQcmV2V2hpdGVzcGFjZShib2R5LCBpLCBpc1Jvb3QpLAorICAgICAgICBf
aXNOZXh0V2hpdGVzcGFjZSA9IGlzTmV4dFdoaXRlc3BhY2UoYm9keSwgaSwgaXNSb290KSwKKyAg
ICAgICAgb3BlblN0YW5kYWxvbmUgPSBzdHJpcC5vcGVuU3RhbmRhbG9uZSAmJiBfaXNQcmV2V2hp
dGVzcGFjZSwKKyAgICAgICAgY2xvc2VTdGFuZGFsb25lID0gc3RyaXAuY2xvc2VTdGFuZGFsb25l
ICYmIF9pc05leHRXaGl0ZXNwYWNlLAorICAgICAgICBpbmxpbmVTdGFuZGFsb25lID0gc3RyaXAu
aW5saW5lU3RhbmRhbG9uZSAmJiBfaXNQcmV2V2hpdGVzcGFjZSAmJiBfaXNOZXh0V2hpdGVzcGFj
ZTsKKworICAgIGlmIChzdHJpcC5jbG9zZSkgeworICAgICAgb21pdFJpZ2h0KGJvZHksIGksIHRy
dWUpOworICAgIH0KKyAgICBpZiAoc3RyaXAub3BlbikgeworICAgICAgb21pdExlZnQoYm9keSwg
aSwgdHJ1ZSk7CisgICAgfQorCisgICAgaWYgKGRvU3RhbmRhbG9uZSAmJiBpbmxpbmVTdGFuZGFs
b25lKSB7CisgICAgICBvbWl0UmlnaHQoYm9keSwgaSk7CisKKyAgICAgIGlmIChvbWl0TGVmdChi
b2R5LCBpKSkgeworICAgICAgICAvLyBJZiB3ZSBhcmUgb24gYSBzdGFuZGFsb25lIG5vZGUsIHNh
dmUgdGhlIGluZGVudCBpbmZvIGZvciBwYXJ0aWFscworICAgICAgICBpZiAoY3VycmVudC50eXBl
ID09PSAnUGFydGlhbFN0YXRlbWVudCcpIHsKKyAgICAgICAgICAvLyBQdWxsIG91dCB0aGUgd2hp
dGVzcGFjZSBmcm9tIHRoZSBmaW5hbCBsaW5lCisgICAgICAgICAgY3VycmVudC5pbmRlbnQgPSAv
KFsgXHRdKyQpLy5leGVjKGJvZHlbaSAtIDFdLm9yaWdpbmFsKVsxXTsKKyAgICAgICAgfQorICAg
ICAgfQorICAgIH0KKyAgICBpZiAoZG9TdGFuZGFsb25lICYmIG9wZW5TdGFuZGFsb25lKSB7Cisg
ICAgICBvbWl0UmlnaHQoKGN1cnJlbnQucHJvZ3JhbSB8fCBjdXJyZW50LmludmVyc2UpLmJvZHkp
OworCisgICAgICAvLyBTdHJpcCBvdXQgdGhlIHByZXZpb3VzIGNvbnRlbnQgbm9kZSBpZiBpdCdz
IHdoaXRlc3BhY2Ugb25seQorICAgICAgb21pdExlZnQoYm9keSwgaSk7CisgICAgfQorICAgIGlm
IChkb1N0YW5kYWxvbmUgJiYgY2xvc2VTdGFuZGFsb25lKSB7CisgICAgICAvLyBBbHdheXMgc3Ry
aXAgdGhlIG5leHQgbm9kZQorICAgICAgb21pdFJpZ2h0KGJvZHksIGkpOworCisgICAgICBvbWl0
TGVmdCgoY3VycmVudC5pbnZlcnNlIHx8IGN1cnJlbnQucHJvZ3JhbSkuYm9keSk7CisgICAgfQor
ICB9CisKKyAgcmV0dXJuIHByb2dyYW07Cit9OworCitXaGl0ZXNwYWNlQ29udHJvbC5wcm90b3R5
cGUuQmxvY2tTdGF0ZW1lbnQgPSBXaGl0ZXNwYWNlQ29udHJvbC5wcm90b3R5cGUuRGVjb3JhdG9y
QmxvY2sgPSBXaGl0ZXNwYWNlQ29udHJvbC5wcm90b3R5cGUuUGFydGlhbEJsb2NrU3RhdGVtZW50
ID0gZnVuY3Rpb24gKGJsb2NrKSB7CisgIHRoaXMuYWNjZXB0KGJsb2NrLnByb2dyYW0pOworICB0
aGlzLmFjY2VwdChibG9jay5pbnZlcnNlKTsKKworICAvLyBGaW5kIHRoZSBpbnZlcnNlIHByb2dy
YW0gdGhhdCBpcyBpbnZvbGVkIHdpdGggd2hpdGVzcGFjZSBzdHJpcHBpbmcuCisgIHZhciBwcm9n
cmFtID0gYmxvY2sucHJvZ3JhbSB8fCBibG9jay5pbnZlcnNlLAorICAgICAgaW52ZXJzZSA9IGJs
b2NrLnByb2dyYW0gJiYgYmxvY2suaW52ZXJzZSwKKyAgICAgIGZpcnN0SW52ZXJzZSA9IGludmVy
c2UsCisgICAgICBsYXN0SW52ZXJzZSA9IGludmVyc2U7CisKKyAgaWYgKGludmVyc2UgJiYgaW52
ZXJzZS5jaGFpbmVkKSB7CisgICAgZmlyc3RJbnZlcnNlID0gaW52ZXJzZS5ib2R5WzBdLnByb2dy
YW07CisKKyAgICAvLyBXYWxrIHRoZSBpbnZlcnNlIGNoYWluIHRvIGZpbmQgdGhlIGxhc3QgaW52
ZXJzZSB0aGF0IGlzIGFjdHVhbGx5IGluIHRoZSBjaGFpbi4KKyAgICB3aGlsZSAobGFzdEludmVy
c2UuY2hhaW5lZCkgeworICAgICAgbGFzdEludmVyc2UgPSBsYXN0SW52ZXJzZS5ib2R5W2xhc3RJ
bnZlcnNlLmJvZHkubGVuZ3RoIC0gMV0ucHJvZ3JhbTsKKyAgICB9CisgIH0KKworICB2YXIgc3Ry
aXAgPSB7CisgICAgb3BlbjogYmxvY2sub3BlblN0cmlwLm9wZW4sCisgICAgY2xvc2U6IGJsb2Nr
LmNsb3NlU3RyaXAuY2xvc2UsCisKKyAgICAvLyBEZXRlcm1pbmUgdGhlIHN0YW5kYWxvbmUgY2Fu
ZGlhY3kuIEJhc2ljYWxseSBmbGFnIG91ciBjb250ZW50IGFzIGJlaW5nIHBvc3NpYmx5IHN0YW5k
YWxvbmUKKyAgICAvLyBzbyBvdXIgcGFyZW50IGNhbiBkZXRlcm1pbmUgaWYgd2UgYWN0dWFsbHkg
YXJlIHN0YW5kYWxvbmUKKyAgICBvcGVuU3RhbmRhbG9uZTogaXNOZXh0V2hpdGVzcGFjZShwcm9n
cmFtLmJvZHkpLAorICAgIGNsb3NlU3RhbmRhbG9uZTogaXNQcmV2V2hpdGVzcGFjZSgoZmlyc3RJ
bnZlcnNlIHx8IHByb2dyYW0pLmJvZHkpCisgIH07CisKKyAgaWYgKGJsb2NrLm9wZW5TdHJpcC5j
bG9zZSkgeworICAgIG9taXRSaWdodChwcm9ncmFtLmJvZHksIG51bGwsIHRydWUpOworICB9CisK
KyAgaWYgKGludmVyc2UpIHsKKyAgICB2YXIgaW52ZXJzZVN0cmlwID0gYmxvY2suaW52ZXJzZVN0
cmlwOworCisgICAgaWYgKGludmVyc2VTdHJpcC5vcGVuKSB7CisgICAgICBvbWl0TGVmdChwcm9n
cmFtLmJvZHksIG51bGwsIHRydWUpOworICAgIH0KKworICAgIGlmIChpbnZlcnNlU3RyaXAuY2xv
c2UpIHsKKyAgICAgIG9taXRSaWdodChmaXJzdEludmVyc2UuYm9keSwgbnVsbCwgdHJ1ZSk7Cisg
ICAgfQorICAgIGlmIChibG9jay5jbG9zZVN0cmlwLm9wZW4pIHsKKyAgICAgIG9taXRMZWZ0KGxh
c3RJbnZlcnNlLmJvZHksIG51bGwsIHRydWUpOworICAgIH0KKworICAgIC8vIEZpbmQgc3RhbmRh
bG9uZSBlbHNlIHN0YXRtZW50cworICAgIGlmICghdGhpcy5vcHRpb25zLmlnbm9yZVN0YW5kYWxv
bmUgJiYgaXNQcmV2V2hpdGVzcGFjZShwcm9ncmFtLmJvZHkpICYmIGlzTmV4dFdoaXRlc3BhY2Uo
Zmlyc3RJbnZlcnNlLmJvZHkpKSB7CisgICAgICBvbWl0TGVmdChwcm9ncmFtLmJvZHkpOworICAg
ICAgb21pdFJpZ2h0KGZpcnN0SW52ZXJzZS5ib2R5KTsKKyAgICB9CisgIH0gZWxzZSBpZiAoYmxv
Y2suY2xvc2VTdHJpcC5vcGVuKSB7CisgICAgb21pdExlZnQocHJvZ3JhbS5ib2R5LCBudWxsLCB0
cnVlKTsKKyAgfQorCisgIHJldHVybiBzdHJpcDsKK307CisKK1doaXRlc3BhY2VDb250cm9sLnBy
b3RvdHlwZS5EZWNvcmF0b3IgPSBXaGl0ZXNwYWNlQ29udHJvbC5wcm90b3R5cGUuTXVzdGFjaGVT
dGF0ZW1lbnQgPSBmdW5jdGlvbiAobXVzdGFjaGUpIHsKKyAgcmV0dXJuIG11c3RhY2hlLnN0cmlw
OworfTsKKworV2hpdGVzcGFjZUNvbnRyb2wucHJvdG90eXBlLlBhcnRpYWxTdGF0ZW1lbnQgPSBX
aGl0ZXNwYWNlQ29udHJvbC5wcm90b3R5cGUuQ29tbWVudFN0YXRlbWVudCA9IGZ1bmN0aW9uIChu
b2RlKSB7CisgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovCisgIHZhciBzdHJpcCA9IG5vZGUu
c3RyaXAgfHwge307CisgIHJldHVybiB7CisgICAgaW5saW5lU3RhbmRhbG9uZTogdHJ1ZSwKKyAg
ICBvcGVuOiBzdHJpcC5vcGVuLAorICAgIGNsb3NlOiBzdHJpcC5jbG9zZQorICB9OworfTsKKwor
ZnVuY3Rpb24gaXNQcmV2V2hpdGVzcGFjZShib2R5LCBpLCBpc1Jvb3QpIHsKKyAgaWYgKGkgPT09
IHVuZGVmaW5lZCkgeworICAgIGkgPSBib2R5Lmxlbmd0aDsKKyAgfQorCisgIC8vIE5vZGVzIHRo
YXQgZW5kIHdpdGggbmV3bGluZXMgYXJlIGNvbnNpZGVyZWQgd2hpdGVzcGFjZSAoYnV0IGFyZSBz
cGVjaWFsCisgIC8vIGNhc2VkIGZvciBzdHJpcCBvcGVyYXRpb25zKQorICB2YXIgcHJldiA9IGJv
ZHlbaSAtIDFdLAorICAgICAgc2libGluZyA9IGJvZHlbaSAtIDJdOworICBpZiAoIXByZXYpIHsK
KyAgICByZXR1cm4gaXNSb290OworICB9CisKKyAgaWYgKHByZXYudHlwZSA9PT0gJ0NvbnRlbnRT
dGF0ZW1lbnQnKSB7CisgICAgcmV0dXJuIChzaWJsaW5nIHx8ICFpc1Jvb3QgPyAvXHI/XG5ccyo/
JC8gOiAvKF58XHI/XG4pXHMqPyQvKS50ZXN0KHByZXYub3JpZ2luYWwpOworICB9Cit9CitmdW5j
dGlvbiBpc05leHRXaGl0ZXNwYWNlKGJvZHksIGksIGlzUm9vdCkgeworICBpZiAoaSA9PT0gdW5k
ZWZpbmVkKSB7CisgICAgaSA9IC0xOworICB9CisKKyAgdmFyIG5leHQgPSBib2R5W2kgKyAxXSwK
KyAgICAgIHNpYmxpbmcgPSBib2R5W2kgKyAyXTsKKyAgaWYgKCFuZXh0KSB7CisgICAgcmV0dXJu
IGlzUm9vdDsKKyAgfQorCisgIGlmIChuZXh0LnR5cGUgPT09ICdDb250ZW50U3RhdGVtZW50Jykg
eworICAgIHJldHVybiAoc2libGluZyB8fCAhaXNSb290ID8gL15ccyo/XHI/XG4vIDogL15ccyo/
KFxyP1xufCQpLykudGVzdChuZXh0Lm9yaWdpbmFsKTsKKyAgfQorfQorCisvLyBNYXJrcyB0aGUg
bm9kZSB0byB0aGUgcmlnaHQgb2YgdGhlIHBvc2l0aW9uIGFzIG9taXR0ZWQuCisvLyBJLmUuIHt7
Zm9vfX0nICcgd2lsbCBtYXJrIHRoZSAnICcgbm9kZSBhcyBvbWl0dGVkLgorLy8KKy8vIElmIGkg
aXMgdW5kZWZpbmVkLCB0aGVuIHRoZSBmaXJzdCBjaGlsZCB3aWxsIGJlIG1hcmtlZCBhcyBzdWNo
LgorLy8KKy8vIElmIG11bGl0cGxlIGlzIHRydXRoeSB0aGVuIGFsbCB3aGl0ZXNwYWNlIHdpbGwg
YmUgc3RyaXBwZWQgb3V0IHVudGlsIG5vbi13aGl0ZXNwYWNlCisvLyBjb250ZW50IGlzIG1ldC4K
K2Z1bmN0aW9uIG9taXRSaWdodChib2R5LCBpLCBtdWx0aXBsZSkgeworICB2YXIgY3VycmVudCA9
IGJvZHlbaSA9PSBudWxsID8gMCA6IGkgKyAxXTsKKyAgaWYgKCFjdXJyZW50IHx8IGN1cnJlbnQu
dHlwZSAhPT0gJ0NvbnRlbnRTdGF0ZW1lbnQnIHx8ICFtdWx0aXBsZSAmJiBjdXJyZW50LnJpZ2h0
U3RyaXBwZWQpIHsKKyAgICByZXR1cm47CisgIH0KKworICB2YXIgb3JpZ2luYWwgPSBjdXJyZW50
LnZhbHVlOworICBjdXJyZW50LnZhbHVlID0gY3VycmVudC52YWx1ZS5yZXBsYWNlKG11bHRpcGxl
ID8gL15ccysvIDogL15bIFx0XSpccj9cbj8vLCAnJyk7CisgIGN1cnJlbnQucmlnaHRTdHJpcHBl
ZCA9IGN1cnJlbnQudmFsdWUgIT09IG9yaWdpbmFsOworfQorCisvLyBNYXJrcyB0aGUgbm9kZSB0
byB0aGUgbGVmdCBvZiB0aGUgcG9zaXRpb24gYXMgb21pdHRlZC4KKy8vIEkuZS4gJyAne3tmb299
fSB3aWxsIG1hcmsgdGhlICcgJyBub2RlIGFzIG9taXR0ZWQuCisvLworLy8gSWYgaSBpcyB1bmRl
ZmluZWQgdGhlbiB0aGUgbGFzdCBjaGlsZCB3aWxsIGJlIG1hcmtlZCBhcyBzdWNoLgorLy8KKy8v
IElmIG11bGl0cGxlIGlzIHRydXRoeSB0aGVuIGFsbCB3aGl0ZXNwYWNlIHdpbGwgYmUgc3RyaXBw
ZWQgb3V0IHVudGlsIG5vbi13aGl0ZXNwYWNlCisvLyBjb250ZW50IGlzIG1ldC4KK2Z1bmN0aW9u
IG9taXRMZWZ0KGJvZHksIGksIG11bHRpcGxlKSB7CisgIHZhciBjdXJyZW50ID0gYm9keVtpID09
IG51bGwgPyBib2R5Lmxlbmd0aCAtIDEgOiBpIC0gMV07CisgIGlmICghY3VycmVudCB8fCBjdXJy
ZW50LnR5cGUgIT09ICdDb250ZW50U3RhdGVtZW50JyB8fCAhbXVsdGlwbGUgJiYgY3VycmVudC5s
ZWZ0U3RyaXBwZWQpIHsKKyAgICByZXR1cm47CisgIH0KKworICAvLyBXZSBvbWl0IHRoZSBsYXN0
IG5vZGUgaWYgaXQncyB3aGl0ZXNwYWNlIG9ubHkgYW5kIG5vdCBwcmVjZWVkZWQgYnkgYSBub24t
Y29udGVudCBub2RlLgorICB2YXIgb3JpZ2luYWwgPSBjdXJyZW50LnZhbHVlOworICBjdXJyZW50
LnZhbHVlID0gY3VycmVudC52YWx1ZS5yZXBsYWNlKG11bHRpcGxlID8gL1xzKyQvIDogL1sgXHRd
KyQvLCAnJyk7CisgIGN1cnJlbnQubGVmdFN0cmlwcGVkID0gY3VycmVudC52YWx1ZSAhPT0gb3Jp
Z2luYWw7CisgIHJldHVybiBjdXJyZW50LmxlZnRTdHJpcHBlZDsKK30KKworZXhwb3J0c1snZGVm
YXVsdCddID0gV2hpdGVzcGFjZUNvbnRyb2w7Cittb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2Rl
ZmF1bHQnXTsKKy8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNl
NjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUx5NHVMeTR1TDJ4cFlp
OW9ZVzVrYkdWaVlYSnpMMk52YlhCcGJHVnlMM2RvYVhSbGMzQmhZMlV0WTI5dWRISnZiQzVxY3lK
ZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pT3pzN096czdPM1ZDUVVGdlFpeFhRVUZY
T3pzN08wRkJSUzlDTEZOQlFWTXNhVUpCUVdsQ0xFZEJRV1U3VFVGQlpDeFBRVUZQTEhsRVFVRkhM
RVZCUVVVN08wRkJRM0pETEUxQlFVa3NRMEZCUXl4UFFVRlBMRWRCUVVjc1QwRkJUeXhEUVVGRE8w
TkJRM2hDTzBGQlEwUXNhVUpCUVdsQ0xFTkJRVU1zVTBGQlV5eEhRVUZITERCQ1FVRmhMRU5CUVVN
N08wRkJSVFZETEdsQ1FVRnBRaXhEUVVGRExGTkJRVk1zUTBGQlF5eFBRVUZQTEVkQlFVY3NWVUZC
VXl4UFFVRlBMRVZCUVVVN1FVRkRkRVFzVFVGQlRTeFpRVUZaTEVkQlFVY3NRMEZCUXl4SlFVRkpM
RU5CUVVNc1QwRkJUeXhEUVVGRExHZENRVUZuUWl4RFFVRkRPenRCUVVWd1JDeE5RVUZKTEUxQlFV
MHNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU03UVVGRE9VSXNUVUZCU1N4
RFFVRkRMRlZCUVZVc1IwRkJSeXhKUVVGSkxFTkJRVU03TzBGQlJYWkNMRTFCUVVrc1NVRkJTU3hI
UVVGSExFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTTdRVUZEZUVJc1QwRkJTeXhKUVVGSkxFTkJR
VU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxF
VkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRCUVVN
elF5eFJRVUZKTEU5QlFVOHNSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRMnBD
TEV0QlFVc3NSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFOUJRVThzUTBGQlF5eERR
VUZET3p0QlFVVnFReXhSUVVGSkxFTkJRVU1zUzBGQlN5eEZRVUZGTzBGQlExWXNaVUZCVXp0TFFV
TldPenRCUVVWRUxGRkJRVWtzYVVKQlFXbENMRWRCUVVjc1owSkJRV2RDTEVOQlFVTXNTVUZCU1N4
RlFVRkZMRU5CUVVNc1JVRkJSU3hOUVVGTkxFTkJRVU03VVVGRGNrUXNhVUpCUVdsQ0xFZEJRVWNz
WjBKQlFXZENMRU5CUVVNc1NVRkJTU3hGUVVGRkxFTkJRVU1zUlVGQlJTeE5RVUZOTEVOQlFVTTdV
VUZGY2tRc1kwRkJZeXhIUVVGSExFdEJRVXNzUTBGQlF5eGpRVUZqTEVsQlFVa3NhVUpCUVdsQ08x
RkJRekZFTEdWQlFXVXNSMEZCUnl4TFFVRkxMRU5CUVVNc1pVRkJaU3hKUVVGSkxHbENRVUZwUWp0
UlFVTTFSQ3huUWtGQlowSXNSMEZCUnl4TFFVRkxMRU5CUVVNc1owSkJRV2RDTEVsQlFVa3NhVUpC
UVdsQ0xFbEJRVWtzYVVKQlFXbENMRU5CUVVNN08wRkJSWGhHTEZGQlFVa3NTMEZCU3l4RFFVRkRM
RXRCUVVzc1JVRkJSVHRCUVVObUxHVkJRVk1zUTBGQlF5eEpRVUZKTEVWQlFVVXNRMEZCUXl4RlFV
RkZMRWxCUVVrc1EwRkJReXhEUVVGRE8wdEJRekZDTzBGQlEwUXNVVUZCU1N4TFFVRkxMRU5CUVVN
c1NVRkJTU3hGUVVGRk8wRkJRMlFzWTBGQlVTeERRVUZETEVsQlFVa3NSVUZCUlN4RFFVRkRMRVZC
UVVVc1NVRkJTU3hEUVVGRExFTkJRVU03UzBGRGVrSTdPMEZCUlVRc1VVRkJTU3haUVVGWkxFbEJR
VWtzWjBKQlFXZENMRVZCUVVVN1FVRkRjRU1zWlVGQlV5eERRVUZETEVsQlFVa3NSVUZCUlN4RFFV
RkRMRU5CUVVNc1EwRkJRenM3UVVGRmJrSXNWVUZCU1N4UlFVRlJMRU5CUVVNc1NVRkJTU3hGUVVG
RkxFTkJRVU1zUTBGQlF5eEZRVUZGT3p0QlFVVnlRaXhaUVVGSkxFOUJRVThzUTBGQlF5eEpRVUZK
TEV0QlFVc3NhMEpCUVd0Q0xFVkJRVVU3TzBGQlJYWkRMR2xDUVVGUExFTkJRVU1zVFVGQlRTeEhR
VUZITEVGQlFVTXNWMEZCVnl4RFFVRkZMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5
eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zUTBG
QlF5eERRVUZETzFOQlF6bEVPMDlCUTBZN1MwRkRSanRCUVVORUxGRkJRVWtzV1VGQldTeEpRVUZK
TEdOQlFXTXNSVUZCUlR0QlFVTnNReXhsUVVGVExFTkJRVU1zUTBGQlF5eFBRVUZQTEVOQlFVTXNU
MEZCVHl4SlFVRkpMRTlCUVU4c1EwRkJReXhQUVVGUExFTkJRVUVzUTBGQlJTeEpRVUZKTEVOQlFV
TXNRMEZCUXpzN08wRkJSM0pFTEdOQlFWRXNRMEZCUXl4SlFVRkpMRVZCUVVVc1EwRkJReXhEUVVG
RExFTkJRVU03UzBGRGJrSTdRVUZEUkN4UlFVRkpMRmxCUVZrc1NVRkJTU3hsUVVGbExFVkJRVVU3
TzBGQlJXNURMR1ZCUVZNc1EwRkJReXhKUVVGSkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdP
MEZCUlc1Q0xHTkJRVkVzUTBGQlF5eERRVUZETEU5QlFVOHNRMEZCUXl4UFFVRlBMRWxCUVVrc1Qw
RkJUeXhEUVVGRExFOUJRVThzUTBGQlFTeERRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPMHRCUTNK
RU8wZEJRMFk3TzBGQlJVUXNVMEZCVHl4UFFVRlBMRU5CUVVNN1EwRkRhRUlzUTBGQlF6czdRVUZG
Uml4cFFrRkJhVUlzUTBGQlF5eFRRVUZUTEVOQlFVTXNZMEZCWXl4SFFVTXhReXhwUWtGQmFVSXNR
MEZCUXl4VFFVRlRMRU5CUVVNc1kwRkJZeXhIUVVNeFF5eHBRa0ZCYVVJc1EwRkJReXhUUVVGVExF
TkJRVU1zY1VKQlFYRkNMRWRCUVVjc1ZVRkJVeXhMUVVGTExFVkJRVVU3UVVGRGJFVXNUVUZCU1N4
RFFVRkRMRTFCUVUwc1EwRkJReXhMUVVGTExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdRVUZE
TTBJc1RVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eExRVUZMTEVOQlFVTXNUMEZCVHl4RFFVRkRM
RU5CUVVNN096dEJRVWN6UWl4TlFVRkpMRTlCUVU4c1IwRkJSeXhMUVVGTExFTkJRVU1zVDBGQlR5
eEpRVUZKTEV0QlFVc3NRMEZCUXl4UFFVRlBPMDFCUTNoRExFOUJRVThzUjBGQlJ5eExRVUZMTEVO
QlFVTXNUMEZCVHl4SlFVRkpMRXRCUVVzc1EwRkJReXhQUVVGUE8wMUJRM2hETEZsQlFWa3NSMEZC
Unl4UFFVRlBPMDFCUTNSQ0xGZEJRVmNzUjBGQlJ5eFBRVUZQTEVOQlFVTTdPMEZCUlRGQ0xFMUJR
VWtzVDBGQlR5eEpRVUZKTEU5QlFVOHNRMEZCUXl4UFFVRlBMRVZCUVVVN1FVRkRPVUlzWjBKQlFW
a3NSMEZCUnl4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEU5
QlFVOHNRMEZCUXpzN08wRkJSM1pETEZkQlFVOHNWMEZCVnl4RFFVRkRMRTlCUVU4c1JVRkJSVHRC
UVVNeFFpeHBRa0ZCVnl4SFFVRkhMRmRCUVZjc1EwRkJReXhKUVVGSkxFTkJRVU1zVjBGQlZ5eERR
VUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zVDBGQlR5
eERRVUZETzB0QlEzSkZPMGRCUTBZN08wRkJSVVFzVFVGQlNTeExRVUZMTEVkQlFVYzdRVUZEVml4
UlFVRkpMRVZCUVVVc1MwRkJTeXhEUVVGRExGTkJRVk1zUTBGQlF5eEpRVUZKTzBGQlF6RkNMRk5C
UVVzc1JVRkJSU3hMUVVGTExFTkJRVU1zVlVGQlZTeERRVUZETEV0QlFVczdPenM3UVVGSk4wSXNh
MEpCUVdNc1JVRkJSU3huUWtGQlowSXNRMEZCUXl4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRE8w
RkJRemxETEcxQ1FVRmxMRVZCUVVVc1owSkJRV2RDTEVOQlFVTXNRMEZCUXl4WlFVRlpMRWxCUVVr
c1QwRkJUeXhEUVVGQkxFTkJRVVVzU1VGQlNTeERRVUZETzBkQlEyeEZMRU5CUVVNN08wRkJSVVlz
VFVGQlNTeExRVUZMTEVOQlFVTXNVMEZCVXl4RFFVRkRMRXRCUVVzc1JVRkJSVHRCUVVONlFpeGhR
VUZUTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1JVRkJSU3hKUVVGSkxFVkJRVVVzU1VGQlNT
eERRVUZETEVOQlFVTTdSMEZEY2tNN08wRkJSVVFzVFVGQlNTeFBRVUZQTEVWQlFVVTdRVUZEV0N4
UlFVRkpMRmxCUVZrc1IwRkJSeXhMUVVGTExFTkJRVU1zV1VGQldTeERRVUZET3p0QlFVVjBReXhS
UVVGSkxGbEJRVmtzUTBGQlF5eEpRVUZKTEVWQlFVVTdRVUZEY2tJc1kwRkJVU3hEUVVGRExFOUJR
VThzUTBGQlF5eEpRVUZKTEVWQlFVVXNTVUZCU1N4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRE8w
dEJRM0JET3p0QlFVVkVMRkZCUVVrc1dVRkJXU3hEUVVGRExFdEJRVXNzUlVGQlJUdEJRVU4wUWl4
bFFVRlRMRU5CUVVNc1dVRkJXU3hEUVVGRExFbEJRVWtzUlVGQlJTeEpRVUZKTEVWQlFVVXNTVUZC
U1N4RFFVRkRMRU5CUVVNN1MwRkRNVU03UVVGRFJDeFJRVUZKTEV0QlFVc3NRMEZCUXl4VlFVRlZM
RU5CUVVNc1NVRkJTU3hGUVVGRk8wRkJRM3BDTEdOQlFWRXNRMEZCUXl4WFFVRlhMRU5CUVVNc1NV
RkJTU3hGUVVGRkxFbEJRVWtzUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0TFFVTjRRenM3TzBG
QlIwUXNVVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zWjBKQlFXZENMRWxC
UXpOQ0xHZENRVUZuUWl4RFFVRkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGRE9VSXNa
MEpCUVdkQ0xFTkJRVU1zV1VGQldTeERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZPMEZCUXpGRExH
TkJRVkVzUTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1FVRkRka0lzWlVG
QlV5eERRVUZETEZsQlFWa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRMUVVNNVFqdEhRVU5H
TEUxQlFVMHNTVUZCU1N4TFFVRkxMRU5CUVVNc1ZVRkJWU3hEUVVGRExFbEJRVWtzUlVGQlJUdEJR
VU5vUXl4WlFVRlJMRU5CUVVNc1QwRkJUeXhEUVVGRExFbEJRVWtzUlVGQlJTeEpRVUZKTEVWQlFV
VXNTVUZCU1N4RFFVRkRMRU5CUVVNN1IwRkRjRU03TzBGQlJVUXNVMEZCVHl4TFFVRkxMRU5CUVVN
N1EwRkRaQ3hEUVVGRE96dEJRVVZHTEdsQ1FVRnBRaXhEUVVGRExGTkJRVk1zUTBGQlF5eFRRVUZU
TEVkQlEzSkRMR2xDUVVGcFFpeERRVUZETEZOQlFWTXNRMEZCUXl4cFFrRkJhVUlzUjBGQlJ5eFZR
VUZUTEZGQlFWRXNSVUZCUlR0QlFVTnFSU3hUUVVGUExGRkJRVkVzUTBGQlF5eExRVUZMTEVOQlFV
TTdRMEZEZGtJc1EwRkJRenM3UVVGRlJpeHBRa0ZCYVVJc1EwRkJReXhUUVVGVExFTkJRVU1zWjBK
QlFXZENMRWRCUTNoRExHbENRVUZwUWl4RFFVRkRMRk5CUVZNc1EwRkJReXhuUWtGQlowSXNSMEZC
Unl4VlFVRlRMRWxCUVVrc1JVRkJSVHM3UVVGRmFFVXNUVUZCU1N4TFFVRkxMRWRCUVVjc1NVRkJT
U3hEUVVGRExFdEJRVXNzU1VGQlNTeEZRVUZGTEVOQlFVTTdRVUZETjBJc1UwRkJUenRCUVVOTUxH
OUNRVUZuUWl4RlFVRkZMRWxCUVVrN1FVRkRkRUlzVVVGQlNTeEZRVUZGTEV0QlFVc3NRMEZCUXl4
SlFVRkpPMEZCUTJoQ0xGTkJRVXNzUlVGQlJTeExRVUZMTEVOQlFVTXNTMEZCU3p0SFFVTnVRaXhE
UVVGRE8wTkJRMGdzUTBGQlF6czdRVUZIUml4VFFVRlRMR2RDUVVGblFpeERRVUZETEVsQlFVa3NS
VUZCUlN4RFFVRkRMRVZCUVVVc1RVRkJUU3hGUVVGRk8wRkJRM3BETEUxQlFVa3NRMEZCUXl4TFFV
RkxMRk5CUVZNc1JVRkJSVHRCUVVOdVFpeExRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUw
c1EwRkJRenRIUVVOcVFqczdPenRCUVVsRUxFMUJRVWtzU1VGQlNTeEhRVUZITEVsQlFVa3NRMEZC
UXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8wMUJRMnhDTEU5QlFVOHNSMEZCUnl4SlFVRkpM
RU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETzBGQlF6RkNMRTFCUVVrc1Ew
RkJReXhKUVVGSkxFVkJRVVU3UVVGRFZDeFhRVUZQTEUxQlFVMHNRMEZCUXp0SFFVTm1PenRCUVVW
RUxFMUJRVWtzU1VGQlNTeERRVUZETEVsQlFVa3NTMEZCU3l4clFrRkJhMElzUlVGQlJUdEJRVU53
UXl4WFFVRlBMRU5CUVVNc1QwRkJUeXhKUVVGSkxFTkJRVU1zVFVGQlRTeEhRVUZKTEZsQlFWa3NS
MEZCU3l4blFrRkJaMElzUTBGQlF5eERRVUZGTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1VV
RkJVU3hEUVVGRExFTkJRVU03UjBGRGRrWTdRMEZEUmp0QlFVTkVMRk5CUVZNc1owSkJRV2RDTEVO
QlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNc1JVRkJSU3hOUVVGTkxFVkJRVVU3UVVGRGVrTXNUVUZC
U1N4RFFVRkRMRXRCUVVzc1UwRkJVeXhGUVVGRk8wRkJRMjVDTEV0QlFVTXNSMEZCUnl4RFFVRkRM
RU5CUVVNc1EwRkJRenRIUVVOU096dEJRVVZFTEUxQlFVa3NTVUZCU1N4SFFVRkhMRWxCUVVrc1Ew
RkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzAxQlEyeENMRTlCUVU4c1IwRkJSeXhKUVVG
SkxFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUXpGQ0xFMUJRVWtz
UTBGQlF5eEpRVUZKTEVWQlFVVTdRVUZEVkN4WFFVRlBMRTFCUVUwc1EwRkJRenRIUVVObU96dEJR
VVZFTEUxQlFVa3NTVUZCU1N4RFFVRkRMRWxCUVVrc1MwRkJTeXhyUWtGQmEwSXNSVUZCUlR0QlFV
TndReXhYUVVGUExFTkJRVU1zVDBGQlR5eEpRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkpMRmxCUVZr
c1IwRkJTeXhuUWtGQlowSXNRMEZCUXl4RFFVRkZMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1z
VVVGQlVTeERRVUZETEVOQlFVTTdSMEZEZGtZN1EwRkRSanM3T3pzN096czdPMEZCVTBRc1UwRkJV
eXhUUVVGVExFTkJRVU1zU1VGQlNTeEZRVUZGTEVOQlFVTXNSVUZCUlN4UlFVRlJMRVZCUVVVN1FV
RkRjRU1zVFVGQlNTeFBRVUZQTEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNc1NVRkJTU3hKUVVG
SkxFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJRenRC
UVVNeFF5eE5RVUZKTEVOQlFVTXNUMEZCVHl4SlFVRkpMRTlCUVU4c1EwRkJReXhKUVVGSkxFdEJR
VXNzYTBKQlFXdENMRWxCUVVzc1EwRkJReXhSUVVGUkxFbEJRVWtzVDBGQlR5eERRVUZETEdGQlFX
RXNRVUZCUXl4RlFVRkZPMEZCUXpOR0xGZEJRVTg3UjBGRFVqczdRVUZGUkN4TlFVRkpMRkZCUVZF
c1IwRkJSeXhQUVVGUExFTkJRVU1zUzBGQlN5eERRVUZETzBGQlF6ZENMRk5CUVU4c1EwRkJReXhM
UVVGTExFZEJRVWNzVDBGQlR5eERRVUZETEV0QlFVc3NRMEZCUXl4UFFVRlBMRU5CUVVNc1VVRkJV
U3hIUVVGSkxFMUJRVTBzUjBGQlN5eGxRVUZsTEVGQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1Ew
RkJRenRCUVVOdVJpeFRRVUZQTEVOQlFVTXNZVUZCWVN4SFFVRkhMRTlCUVU4c1EwRkJReXhMUVVG
TExFdEJRVXNzVVVGQlVTeERRVUZETzBOQlEzQkVPenM3T3pzN096czdRVUZUUkN4VFFVRlRMRkZC
UVZFc1EwRkJReXhKUVVGSkxFVkJRVVVzUTBGQlF5eEZRVUZGTEZGQlFWRXNSVUZCUlR0QlFVTnVR
eXhOUVVGSkxFOUJRVThzUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4SlFVRkpMRWxCUVVrc1Iw
RkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVj
c1EwRkJReXhEUVVGRExFTkJRVU03UVVGRGVFUXNUVUZCU1N4RFFVRkRMRTlCUVU4c1NVRkJTU3hQ
UVVGUExFTkJRVU1zU1VGQlNTeExRVUZMTEd0Q1FVRnJRaXhKUVVGTExFTkJRVU1zVVVGQlVTeEpR
VUZKTEU5QlFVOHNRMEZCUXl4WlFVRlpMRUZCUVVNc1JVRkJSVHRCUVVNeFJpeFhRVUZQTzBkQlEx
STdPenRCUVVkRUxFMUJRVWtzVVVGQlVTeEhRVUZITEU5QlFVOHNRMEZCUXl4TFFVRkxMRU5CUVVN
N1FVRkROMElzVTBGQlR5eERRVUZETEV0QlFVc3NSMEZCUnl4UFFVRlBMRU5CUVVNc1MwRkJTeXhE
UVVGRExFOUJRVThzUTBGQlF5eFJRVUZSTEVkQlFVa3NUVUZCVFN4SFFVRkxMRk5CUVZNc1FVRkJR
eXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETzBGQlF6ZEZMRk5CUVU4c1EwRkJReXhaUVVGWkxF
ZEJRVWNzVDBGQlR5eERRVUZETEV0QlFVc3NTMEZCU3l4UlFVRlJMRU5CUVVNN1FVRkRiRVFzVTBG
QlR5eFBRVUZQTEVOQlFVTXNXVUZCV1N4RFFVRkRPME5CUXpkQ096dHhRa0ZGWXl4cFFrRkJhVUlp
TENKbWFXeGxJam9pZDJocGRHVnpjR0ZqWlMxamIyNTBjbTlzTG1weklpd2ljMjkxY21ObGMwTnZi
blJsYm5RaU9sc2lhVzF3YjNKMElGWnBjMmwwYjNJZ1puSnZiU0FuTGk5MmFYTnBkRzl5Snp0Y2Js
eHVablZ1WTNScGIyNGdWMmhwZEdWemNHRmpaVU52Ym5SeWIyd29iM0IwYVc5dWN5QTlJSHQ5S1NC
N1hHNGdJSFJvYVhNdWIzQjBhVzl1Y3lBOUlHOXdkR2x2Ym5NN1hHNTlYRzVYYUdsMFpYTndZV05s
UTI5dWRISnZiQzV3Y205MGIzUjVjR1VnUFNCdVpYY2dWbWx6YVhSdmNpZ3BPMXh1WEc1WGFHbDBa
WE53WVdObFEyOXVkSEp2YkM1d2NtOTBiM1I1Y0dVdVVISnZaM0poYlNBOUlHWjFibU4wYVc5dUtI
QnliMmR5WVcwcElIdGNiaUFnWTI5dWMzUWdaRzlUZEdGdVpHRnNiMjVsSUQwZ0lYUm9hWE11YjNC
MGFXOXVjeTVwWjI1dmNtVlRkR0Z1WkdGc2IyNWxPMXh1WEc0Z0lHeGxkQ0JwYzFKdmIzUWdQU0Fo
ZEdocGN5NXBjMUp2YjNSVFpXVnVPMXh1SUNCMGFHbHpMbWx6VW05dmRGTmxaVzRnUFNCMGNuVmxP
MXh1WEc0Z0lHeGxkQ0JpYjJSNUlEMGdjSEp2WjNKaGJTNWliMlI1TzF4dUlDQm1iM0lnS0d4bGRD
QnBJRDBnTUN3Z2JDQTlJR0p2WkhrdWJHVnVaM1JvT3lCcElEd2diRHNnYVNzcktTQjdYRzRnSUNB
Z2JHVjBJR04xY25KbGJuUWdQU0JpYjJSNVcybGRMRnh1SUNBZ0lDQWdJQ0J6ZEhKcGNDQTlJSFJv
YVhNdVlXTmpaWEIwS0dOMWNuSmxiblFwTzF4dVhHNGdJQ0FnYVdZZ0tDRnpkSEpwY0NrZ2UxeHVJ
Q0FnSUNBZ1kyOXVkR2x1ZFdVN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYkdWMElGOXBjMUJ5WlhaWGFH
bDBaWE53WVdObElEMGdhWE5RY21WMlYyaHBkR1Z6Y0dGalpTaGliMlI1TENCcExDQnBjMUp2YjNR
cExGeHVJQ0FnSUNBZ0lDQmZhWE5PWlhoMFYyaHBkR1Z6Y0dGalpTQTlJR2x6VG1WNGRGZG9hWFJs
YzNCaFkyVW9ZbTlrZVN3Z2FTd2dhWE5TYjI5MEtTeGNibHh1SUNBZ0lDQWdJQ0J2Y0dWdVUzUmhi
bVJoYkc5dVpTQTlJSE4wY21sd0xtOXdaVzVUZEdGdVpHRnNiMjVsSUNZbUlGOXBjMUJ5WlhaWGFH
bDBaWE53WVdObExGeHVJQ0FnSUNBZ0lDQmpiRzl6WlZOMFlXNWtZV3h2Ym1VZ1BTQnpkSEpwY0M1
amJHOXpaVk4wWVc1a1lXeHZibVVnSmlZZ1gybHpUbVY0ZEZkb2FYUmxjM0JoWTJVc1hHNGdJQ0Fn
SUNBZ0lHbHViR2x1WlZOMFlXNWtZV3h2Ym1VZ1BTQnpkSEpwY0M1cGJteHBibVZUZEdGdVpHRnNi
MjVsSUNZbUlGOXBjMUJ5WlhaWGFHbDBaWE53WVdObElDWW1JRjlwYzA1bGVIUlhhR2wwWlhOd1lX
TmxPMXh1WEc0Z0lDQWdhV1lnS0hOMGNtbHdMbU5zYjNObEtTQjdYRzRnSUNBZ0lDQnZiV2wwVW1s
bmFIUW9ZbTlrZVN3Z2FTd2dkSEoxWlNrN1hHNGdJQ0FnZlZ4dUlDQWdJR2xtSUNoemRISnBjQzV2
Y0dWdUtTQjdYRzRnSUNBZ0lDQnZiV2wwVEdWbWRDaGliMlI1TENCcExDQjBjblZsS1R0Y2JpQWdJ
Q0I5WEc1Y2JpQWdJQ0JwWmlBb1pHOVRkR0Z1WkdGc2IyNWxJQ1ltSUdsdWJHbHVaVk4wWVc1a1lX
eHZibVVwSUh0Y2JpQWdJQ0FnSUc5dGFYUlNhV2RvZENoaWIyUjVMQ0JwS1R0Y2JseHVJQ0FnSUNB
Z2FXWWdLRzl0YVhSTVpXWjBLR0p2Wkhrc0lHa3BLU0I3WEc0Z0lDQWdJQ0FnSUM4dklFbG1JSGRs
SUdGeVpTQnZiaUJoSUhOMFlXNWtZV3h2Ym1VZ2JtOWtaU3dnYzJGMlpTQjBhR1VnYVc1a1pXNTBJ
R2x1Wm04Z1ptOXlJSEJoY25ScFlXeHpYRzRnSUNBZ0lDQWdJR2xtSUNoamRYSnlaVzUwTG5SNWNH
VWdQVDA5SUNkUVlYSjBhV0ZzVTNSaGRHVnRaVzUwSnlrZ2UxeHVJQ0FnSUNBZ0lDQWdJQzh2SUZC
MWJHd2diM1YwSUhSb1pTQjNhR2wwWlhOd1lXTmxJR1p5YjIwZ2RHaGxJR1pwYm1Gc0lHeHBibVZj
YmlBZ0lDQWdJQ0FnSUNCamRYSnlaVzUwTG1sdVpHVnVkQ0E5SUNndktGc2dYRngwWFNza0tTOHBM
bVY0WldNb1ltOWtlVnRwSUMwZ01WMHViM0pwWjJsdVlXd3BXekZkTzF4dUlDQWdJQ0FnSUNCOVhH
NGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQWdJR2xtSUNoa2IxTjBZVzVrWVd4dmJtVWdKaVlnYjNC
bGJsTjBZVzVrWVd4dmJtVXBJSHRjYmlBZ0lDQWdJRzl0YVhSU2FXZG9kQ2dvWTNWeWNtVnVkQzV3
Y205bmNtRnRJSHg4SUdOMWNuSmxiblF1YVc1MlpYSnpaU2t1WW05a2VTazdYRzVjYmlBZ0lDQWdJ
Qzh2SUZOMGNtbHdJRzkxZENCMGFHVWdjSEpsZG1sdmRYTWdZMjl1ZEdWdWRDQnViMlJsSUdsbUlH
bDBKM01nZDJocGRHVnpjR0ZqWlNCdmJteDVYRzRnSUNBZ0lDQnZiV2wwVEdWbWRDaGliMlI1TENC
cEtUdGNiaUFnSUNCOVhHNGdJQ0FnYVdZZ0tHUnZVM1JoYm1SaGJHOXVaU0FtSmlCamJHOXpaVk4w
WVc1a1lXeHZibVVwSUh0Y2JpQWdJQ0FnSUM4dklFRnNkMkY1Y3lCemRISnBjQ0IwYUdVZ2JtVjRk
Q0J1YjJSbFhHNGdJQ0FnSUNCdmJXbDBVbWxuYUhRb1ltOWtlU3dnYVNrN1hHNWNiaUFnSUNBZ0lH
OXRhWFJNWldaMEtDaGpkWEp5Wlc1MExtbHVkbVZ5YzJVZ2ZId2dZM1Z5Y21WdWRDNXdjbTluY21G
dEtTNWliMlI1S1R0Y2JpQWdJQ0I5WEc0Z0lIMWNibHh1SUNCeVpYUjFjbTRnY0hKdlozSmhiVHRj
Ym4wN1hHNWNibGRvYVhSbGMzQmhZMlZEYjI1MGNtOXNMbkJ5YjNSdmRIbHdaUzVDYkc5amExTjBZ
WFJsYldWdWRDQTlYRzVYYUdsMFpYTndZV05sUTI5dWRISnZiQzV3Y205MGIzUjVjR1V1UkdWamIz
SmhkRzl5UW14dlkyc2dQVnh1VjJocGRHVnpjR0ZqWlVOdmJuUnliMnd1Y0hKdmRHOTBlWEJsTGxC
aGNuUnBZV3hDYkc5amExTjBZWFJsYldWdWRDQTlJR1oxYm1OMGFXOXVLR0pzYjJOcktTQjdYRzRn
SUhSb2FYTXVZV05qWlhCMEtHSnNiMk5yTG5CeWIyZHlZVzBwTzF4dUlDQjBhR2x6TG1GalkyVndk
Q2hpYkc5amF5NXBiblpsY25ObEtUdGNibHh1SUNBdkx5QkdhVzVrSUhSb1pTQnBiblpsY25ObElI
QnliMmR5WVcwZ2RHaGhkQ0JwY3lCcGJuWnZiR1ZrSUhkcGRHZ2dkMmhwZEdWemNHRmpaU0J6ZEhK
cGNIQnBibWN1WEc0Z0lHeGxkQ0J3Y205bmNtRnRJRDBnWW14dlkyc3VjSEp2WjNKaGJTQjhmQ0Jp
Ykc5amF5NXBiblpsY25ObExGeHVJQ0FnSUNBZ2FXNTJaWEp6WlNBOUlHSnNiMk5yTG5CeWIyZHlZ
VzBnSmlZZ1lteHZZMnN1YVc1MlpYSnpaU3hjYmlBZ0lDQWdJR1pwY25OMFNXNTJaWEp6WlNBOUlH
bHVkbVZ5YzJVc1hHNGdJQ0FnSUNCc1lYTjBTVzUyWlhKelpTQTlJR2x1ZG1WeWMyVTdYRzVjYmlB
Z2FXWWdLR2x1ZG1WeWMyVWdKaVlnYVc1MlpYSnpaUzVqYUdGcGJtVmtLU0I3WEc0Z0lDQWdabWx5
YzNSSmJuWmxjbk5sSUQwZ2FXNTJaWEp6WlM1aWIyUjVXekJkTG5CeWIyZHlZVzA3WEc1Y2JpQWdJ
Q0F2THlCWFlXeHJJSFJvWlNCcGJuWmxjbk5sSUdOb1lXbHVJSFJ2SUdacGJtUWdkR2hsSUd4aGMz
UWdhVzUyWlhKelpTQjBhR0YwSUdseklHRmpkSFZoYkd4NUlHbHVJSFJvWlNCamFHRnBiaTVjYmlB
Z0lDQjNhR2xzWlNBb2JHRnpkRWx1ZG1WeWMyVXVZMmhoYVc1bFpDa2dlMXh1SUNBZ0lDQWdiR0Z6
ZEVsdWRtVnljMlVnUFNCc1lYTjBTVzUyWlhKelpTNWliMlI1VzJ4aGMzUkpiblpsY25ObExtSnZa
SGt1YkdWdVozUm9JQzBnTVYwdWNISnZaM0poYlR0Y2JpQWdJQ0I5WEc0Z0lIMWNibHh1SUNCc1pY
UWdjM1J5YVhBZ1BTQjdYRzRnSUNBZ2IzQmxiam9nWW14dlkyc3ViM0JsYmxOMGNtbHdMbTl3Wlc0
c1hHNGdJQ0FnWTJ4dmMyVTZJR0pzYjJOckxtTnNiM05sVTNSeWFYQXVZMnh2YzJVc1hHNWNiaUFn
SUNBdkx5QkVaWFJsY20xcGJtVWdkR2hsSUhOMFlXNWtZV3h2Ym1VZ1kyRnVaR2xoWTNrdUlFSmhj
MmxqWVd4c2VTQm1iR0ZuSUc5MWNpQmpiMjUwWlc1MElHRnpJR0psYVc1bklIQnZjM05wWW14NUlI
TjBZVzVrWVd4dmJtVmNiaUFnSUNBdkx5QnpieUJ2ZFhJZ2NHRnlaVzUwSUdOaGJpQmtaWFJsY20x
cGJtVWdhV1lnZDJVZ1lXTjBkV0ZzYkhrZ1lYSmxJSE4wWVc1a1lXeHZibVZjYmlBZ0lDQnZjR1Z1
VTNSaGJtUmhiRzl1WlRvZ2FYTk9aWGgwVjJocGRHVnpjR0ZqWlNod2NtOW5jbUZ0TG1KdlpIa3BM
Rnh1SUNBZ0lHTnNiM05sVTNSaGJtUmhiRzl1WlRvZ2FYTlFjbVYyVjJocGRHVnpjR0ZqWlNnb1pt
bHljM1JKYm5abGNuTmxJSHg4SUhCeWIyZHlZVzBwTG1KdlpIa3BYRzRnSUgwN1hHNWNiaUFnYVdZ
Z0tHSnNiMk5yTG05d1pXNVRkSEpwY0M1amJHOXpaU2tnZTF4dUlDQWdJRzl0YVhSU2FXZG9kQ2h3
Y205bmNtRnRMbUp2Wkhrc0lHNTFiR3dzSUhSeWRXVXBPMXh1SUNCOVhHNWNiaUFnYVdZZ0tHbHVk
bVZ5YzJVcElIdGNiaUFnSUNCc1pYUWdhVzUyWlhKelpWTjBjbWx3SUQwZ1lteHZZMnN1YVc1MlpY
SnpaVk4wY21sd08xeHVYRzRnSUNBZ2FXWWdLR2x1ZG1WeWMyVlRkSEpwY0M1dmNHVnVLU0I3WEc0
Z0lDQWdJQ0J2YldsMFRHVm1kQ2h3Y205bmNtRnRMbUp2Wkhrc0lHNTFiR3dzSUhSeWRXVXBPMXh1
SUNBZ0lIMWNibHh1SUNBZ0lHbG1JQ2hwYm5abGNuTmxVM1J5YVhBdVkyeHZjMlVwSUh0Y2JpQWdJ
Q0FnSUc5dGFYUlNhV2RvZENobWFYSnpkRWx1ZG1WeWMyVXVZbTlrZVN3Z2JuVnNiQ3dnZEhKMVpT
azdYRzRnSUNBZ2ZWeHVJQ0FnSUdsbUlDaGliRzlqYXk1amJHOXpaVk4wY21sd0xtOXdaVzRwSUh0
Y2JpQWdJQ0FnSUc5dGFYUk1aV1owS0d4aGMzUkpiblpsY25ObExtSnZaSGtzSUc1MWJHd3NJSFJ5
ZFdVcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUM4dklFWnBibVFnYzNSaGJtUmhiRzl1WlNCbGJITmxJ
SE4wWVhSdFpXNTBjMXh1SUNBZ0lHbG1JQ2doZEdocGN5NXZjSFJwYjI1ekxtbG5ibTl5WlZOMFlX
NWtZV3h2Ym1WY2JpQWdJQ0FnSUNBZ0ppWWdhWE5RY21WMlYyaHBkR1Z6Y0dGalpTaHdjbTluY21G
dExtSnZaSGtwWEc0Z0lDQWdJQ0FnSUNZbUlHbHpUbVY0ZEZkb2FYUmxjM0JoWTJVb1ptbHljM1JK
Ym5abGNuTmxMbUp2WkhrcEtTQjdYRzRnSUNBZ0lDQnZiV2wwVEdWbWRDaHdjbTluY21GdExtSnZa
SGtwTzF4dUlDQWdJQ0FnYjIxcGRGSnBaMmgwS0dacGNuTjBTVzUyWlhKelpTNWliMlI1S1R0Y2Jp
QWdJQ0I5WEc0Z0lIMGdaV3h6WlNCcFppQW9ZbXh2WTJzdVkyeHZjMlZUZEhKcGNDNXZjR1Z1S1NC
N1hHNGdJQ0FnYjIxcGRFeGxablFvY0hKdlozSmhiUzVpYjJSNUxDQnVkV3hzTENCMGNuVmxLVHRj
YmlBZ2ZWeHVYRzRnSUhKbGRIVnliaUJ6ZEhKcGNEdGNibjA3WEc1Y2JsZG9hWFJsYzNCaFkyVkRi
MjUwY205c0xuQnliM1J2ZEhsd1pTNUVaV052Y21GMGIzSWdQVnh1VjJocGRHVnpjR0ZqWlVOdmJu
UnliMnd1Y0hKdmRHOTBlWEJsTGsxMWMzUmhZMmhsVTNSaGRHVnRaVzUwSUQwZ1puVnVZM1JwYjI0
b2JYVnpkR0ZqYUdVcElIdGNiaUFnY21WMGRYSnVJRzExYzNSaFkyaGxMbk4wY21sd08xeHVmVHRj
Ymx4dVYyaHBkR1Z6Y0dGalpVTnZiblJ5YjJ3dWNISnZkRzkwZVhCbExsQmhjblJwWVd4VGRHRjBa
VzFsYm5RZ1BWeHVJQ0FnSUZkb2FYUmxjM0JoWTJWRGIyNTBjbTlzTG5CeWIzUnZkSGx3WlM1RGIy
MXRaVzUwVTNSaGRHVnRaVzUwSUQwZ1puVnVZM1JwYjI0b2JtOWtaU2tnZTF4dUlDQXZLaUJwYzNS
aGJtSjFiQ0JwWjI1dmNtVWdibVY0ZENBcUwxeHVJQ0JzWlhRZ2MzUnlhWEFnUFNCdWIyUmxMbk4w
Y21sd0lIeDhJSHQ5TzF4dUlDQnlaWFIxY200Z2UxeHVJQ0FnSUdsdWJHbHVaVk4wWVc1a1lXeHZi
bVU2SUhSeWRXVXNYRzRnSUNBZ2IzQmxiam9nYzNSeWFYQXViM0JsYml4Y2JpQWdJQ0JqYkc5elpU
b2djM1J5YVhBdVkyeHZjMlZjYmlBZ2ZUdGNibjA3WEc1Y2JseHVablZ1WTNScGIyNGdhWE5RY21W
MlYyaHBkR1Z6Y0dGalpTaGliMlI1TENCcExDQnBjMUp2YjNRcElIdGNiaUFnYVdZZ0tHa2dQVDA5
SUhWdVpHVm1hVzVsWkNrZ2UxeHVJQ0FnSUdrZ1BTQmliMlI1TG14bGJtZDBhRHRjYmlBZ2ZWeHVY
RzRnSUM4dklFNXZaR1Z6SUhSb1lYUWdaVzVrSUhkcGRHZ2dibVYzYkdsdVpYTWdZWEpsSUdOdmJu
TnBaR1Z5WldRZ2QyaHBkR1Z6Y0dGalpTQW9ZblYwSUdGeVpTQnpjR1ZqYVdGc1hHNGdJQzh2SUdO
aGMyVmtJR1p2Y2lCemRISnBjQ0J2Y0dWeVlYUnBiMjV6S1Z4dUlDQnNaWFFnY0hKbGRpQTlJR0p2
WkhsYmFTQXRJREZkTEZ4dUlDQWdJQ0FnYzJsaWJHbHVaeUE5SUdKdlpIbGJhU0F0SURKZE8xeHVJ
Q0JwWmlBb0lYQnlaWFlwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdhWE5TYjI5ME8xeHVJQ0I5WEc1Y2Jp
QWdhV1lnS0hCeVpYWXVkSGx3WlNBOVBUMGdKME52Ym5SbGJuUlRkR0YwWlcxbGJuUW5LU0I3WEc0
Z0lDQWdjbVYwZFhKdUlDaHphV0pzYVc1bklIeDhJQ0ZwYzFKdmIzUWdQeUFvTDF4Y2NqOWNYRzVj
WEhNcVB5UXZLU0E2SUNndktGNThYRnh5UDF4Y2JpbGNYSE1xUHlRdktTa3VkR1Z6ZENod2NtVjJM
bTl5YVdkcGJtRnNLVHRjYmlBZ2ZWeHVmVnh1Wm5WdVkzUnBiMjRnYVhOT1pYaDBWMmhwZEdWemNH
RmpaU2hpYjJSNUxDQnBMQ0JwYzFKdmIzUXBJSHRjYmlBZ2FXWWdLR2tnUFQwOUlIVnVaR1ZtYVc1
bFpDa2dlMXh1SUNBZ0lHa2dQU0F0TVR0Y2JpQWdmVnh1WEc0Z0lHeGxkQ0J1WlhoMElEMGdZbTlr
ZVZ0cElDc2dNVjBzWEc0Z0lDQWdJQ0J6YVdKc2FXNW5JRDBnWW05a2VWdHBJQ3NnTWwwN1hHNGdJ
R2xtSUNnaGJtVjRkQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQnBjMUp2YjNRN1hHNGdJSDFjYmx4dUlD
QnBaaUFvYm1WNGRDNTBlWEJsSUQwOVBTQW5RMjl1ZEdWdWRGTjBZWFJsYldWdWRDY3BJSHRjYmlB
Z0lDQnlaWFIxY200Z0tITnBZbXhwYm1jZ2ZId2dJV2x6VW05dmRDQS9JQ2d2WGx4Y2N5by9YRnh5
UDF4Y2JpOHBJRG9nS0M5ZVhGeHpLajhvWEZ4eVAxeGNibndrS1M4cEtTNTBaWE4wS0c1bGVIUXVi
M0pwWjJsdVlXd3BPMXh1SUNCOVhHNTlYRzVjYmk4dklFMWhjbXR6SUhSb1pTQnViMlJsSUhSdklI
Um9aU0J5YVdkb2RDQnZaaUIwYUdVZ2NHOXphWFJwYjI0Z1lYTWdiMjFwZEhSbFpDNWNiaTh2SUVr
dVpTNGdlM3RtYjI5OWZTY2dKeUIzYVd4c0lHMWhjbXNnZEdobElDY2dKeUJ1YjJSbElHRnpJRzl0
YVhSMFpXUXVYRzR2TDF4dUx5OGdTV1lnYVNCcGN5QjFibVJsWm1sdVpXUXNJSFJvWlc0Z2RHaGxJ
R1pwY25OMElHTm9hV3hrSUhkcGJHd2dZbVVnYldGeWEyVmtJR0Z6SUhOMVkyZ3VYRzR2TDF4dUx5
OGdTV1lnYlhWc2FYUndiR1VnYVhNZ2RISjFkR2g1SUhSb1pXNGdZV3hzSUhkb2FYUmxjM0JoWTJV
Z2QybHNiQ0JpWlNCemRISnBjSEJsWkNCdmRYUWdkVzUwYVd3Z2JtOXVMWGRvYVhSbGMzQmhZMlZj
Ymk4dklHTnZiblJsYm5RZ2FYTWdiV1YwTGx4dVpuVnVZM1JwYjI0Z2IyMXBkRkpwWjJoMEtHSnZa
SGtzSUdrc0lHMTFiSFJwY0d4bEtTQjdYRzRnSUd4bGRDQmpkWEp5Wlc1MElEMGdZbTlrZVZ0cElE
MDlJRzUxYkd3Z1B5QXdJRG9nYVNBcklERmRPMXh1SUNCcFppQW9JV04xY25KbGJuUWdmSHdnWTNW
eWNtVnVkQzUwZVhCbElDRTlQU0FuUTI5dWRHVnVkRk4wWVhSbGJXVnVkQ2NnZkh3Z0tDRnRkV3gw
YVhCc1pTQW1KaUJqZFhKeVpXNTBMbkpwWjJoMFUzUnlhWEJ3WldRcEtTQjdYRzRnSUNBZ2NtVjBk
WEp1TzF4dUlDQjlYRzVjYmlBZ2JHVjBJRzl5YVdkcGJtRnNJRDBnWTNWeWNtVnVkQzUyWVd4MVpU
dGNiaUFnWTNWeWNtVnVkQzUyWVd4MVpTQTlJR04xY25KbGJuUXVkbUZzZFdVdWNtVndiR0ZqWlNo
dGRXeDBhWEJzWlNBL0lDZ3ZYbHhjY3lzdktTQTZJQ2d2WGxzZ1hGeDBYU3BjWEhJL1hGeHVQeThw
TENBbkp5azdYRzRnSUdOMWNuSmxiblF1Y21sbmFIUlRkSEpwY0hCbFpDQTlJR04xY25KbGJuUXVk
bUZzZFdVZ0lUMDlJRzl5YVdkcGJtRnNPMXh1ZlZ4dVhHNHZMeUJOWVhKcmN5QjBhR1VnYm05a1pT
QjBieUIwYUdVZ2JHVm1kQ0J2WmlCMGFHVWdjRzl6YVhScGIyNGdZWE1nYjIxcGRIUmxaQzVjYmk4
dklFa3VaUzRnSnlBbmUzdG1iMjk5ZlNCM2FXeHNJRzFoY21zZ2RHaGxJQ2NnSnlCdWIyUmxJR0Z6
SUc5dGFYUjBaV1F1WEc0dkwxeHVMeThnU1dZZ2FTQnBjeUIxYm1SbFptbHVaV1FnZEdobGJpQjBh
R1VnYkdGemRDQmphR2xzWkNCM2FXeHNJR0psSUcxaGNtdGxaQ0JoY3lCemRXTm9MbHh1THk5Y2Jp
OHZJRWxtSUcxMWJHbDBjR3hsSUdseklIUnlkWFJvZVNCMGFHVnVJR0ZzYkNCM2FHbDBaWE53WVdO
bElIZHBiR3dnWW1VZ2MzUnlhWEJ3WldRZ2IzVjBJSFZ1ZEdsc0lHNXZiaTEzYUdsMFpYTndZV05s
WEc0dkx5QmpiMjUwWlc1MElHbHpJRzFsZEM1Y2JtWjFibU4wYVc5dUlHOXRhWFJNWldaMEtHSnZa
SGtzSUdrc0lHMTFiSFJwY0d4bEtTQjdYRzRnSUd4bGRDQmpkWEp5Wlc1MElEMGdZbTlrZVZ0cElE
MDlJRzUxYkd3Z1B5QmliMlI1TG14bGJtZDBhQ0F0SURFZ09pQnBJQzBnTVYwN1hHNGdJR2xtSUNn
aFkzVnljbVZ1ZENCOGZDQmpkWEp5Wlc1MExuUjVjR1VnSVQwOUlDZERiMjUwWlc1MFUzUmhkR1Z0
Wlc1MEp5QjhmQ0FvSVcxMWJIUnBjR3hsSUNZbUlHTjFjbkpsYm5RdWJHVm1kRk4wY21sd2NHVmtL
U2tnZTF4dUlDQWdJSEpsZEhWeWJqdGNiaUFnZlZ4dVhHNGdJQzh2SUZkbElHOXRhWFFnZEdobElH
eGhjM1FnYm05a1pTQnBaaUJwZENkeklIZG9hWFJsYzNCaFkyVWdiMjVzZVNCaGJtUWdibTkwSUhC
eVpXTmxaV1JsWkNCaWVTQmhJRzV2YmkxamIyNTBaVzUwSUc1dlpHVXVYRzRnSUd4bGRDQnZjbWxu
YVc1aGJDQTlJR04xY25KbGJuUXVkbUZzZFdVN1hHNGdJR04xY25KbGJuUXVkbUZzZFdVZ1BTQmpk
WEp5Wlc1MExuWmhiSFZsTG5KbGNHeGhZMlVvYlhWc2RHbHdiR1VnUHlBb0wxeGNjeXNrTHlrZ09p
QW9MMXNnWEZ4MFhTc2tMeWtzSUNjbktUdGNiaUFnWTNWeWNtVnVkQzVzWldaMFUzUnlhWEJ3WldR
Z1BTQmpkWEp5Wlc1MExuWmhiSFZsSUNFOVBTQnZjbWxuYVc1aGJEdGNiaUFnY21WMGRYSnVJR04x
Y25KbGJuUXViR1ZtZEZOMGNtbHdjR1ZrTzF4dWZWeHVYRzVsZUhCdmNuUWdaR1ZtWVhWc2RDQlhh
R2wwWlhOd1lXTmxRMjl1ZEhKdmJEdGNiaUpkZlE9PQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
anF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvY2pzL2hhbmRsZWJhcnMvZGVjb3Jh
dG9ycy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0
L2Nqcy9oYW5kbGViYXJzL2RlY29yYXRvcnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTgyZTBlZmI2N2NlMmQy
MDdlYTg1MDQyZmUyM2E0ODZlOWZhYmMyZQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2Nqcy9oYW5kbGViYXJzL2RlY29y
YXRvcnMuanMKQEAgLTAsMCArMSwxNiBAQAorJ3VzZSBzdHJpY3QnOworCitleHBvcnRzLl9fZXNN
b2R1bGUgPSB0cnVlOworZXhwb3J0cy5yZWdpc3RlckRlZmF1bHREZWNvcmF0b3JzID0gcmVnaXN0
ZXJEZWZhdWx0RGVjb3JhdG9yczsKKy8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0CisKK2Z1bmN0aW9u
IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1
bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH0KKwordmFyIF9kZWNvcmF0b3JzSW5saW5l
ID0gcmVxdWlyZSgnLi9kZWNvcmF0b3JzL2lubGluZScpOworCit2YXIgX2RlY29yYXRvcnNJbmxp
bmUyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZGVjb3JhdG9yc0lubGluZSk7CisKK2Z1bmN0
aW9uIHJlZ2lzdGVyRGVmYXVsdERlY29yYXRvcnMoaW5zdGFuY2UpIHsKKyAgX2RlY29yYXRvcnNJ
bmxpbmUyWydkZWZhdWx0J10oaW5zdGFuY2UpOworfQorLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0
YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpw
YklpNHVMeTR1THk0dUwyeHBZaTlvWVc1a2JHVmlZWEp6TDJSbFkyOXlZWFJ2Y25NdWFuTWlYU3dp
Ym1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqczdPenM3T3pzN1owTkJRVEpDTEhGQ1FVRnhR
anM3T3p0QlFVVjZReXhUUVVGVExIbENRVUY1UWl4RFFVRkRMRkZCUVZFc1JVRkJSVHRCUVVOc1JD
eG5RMEZCWlN4UlFVRlJMRU5CUVVNc1EwRkJRenREUVVNeFFpSXNJbVpwYkdVaU9pSmtaV052Y21G
MGIzSnpMbXB6SWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaWFXMXdiM0owSUhKbFoybHpkR1Z5
U1c1c2FXNWxJR1p5YjIwZ0p5NHZaR1ZqYjNKaGRHOXljeTlwYm14cGJtVW5PMXh1WEc1bGVIQnZj
blFnWm5WdVkzUnBiMjRnY21WbmFYTjBaWEpFWldaaGRXeDBSR1ZqYjNKaGRHOXljeWhwYm5OMFlX
NWpaU2tnZTF4dUlDQnlaV2RwYzNSbGNrbHViR2x1WlNocGJuTjBZVzVqWlNrN1hHNTlYRzVjYmlK
ZGZRPT0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxl
YmFycy9kaXN0L2Nqcy9oYW5kbGViYXJzL2RlY29yYXRvcnMvaW5saW5lLmpzIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvY2pzL2hhbmRsZWJhcnMvZGVj
b3JhdG9ycy9pbmxpbmUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjJmMWM3Y2MyZmM2MmU2MDA1OGUzMWNmMzkz
NTBhYTgxNzcyNTc0MwotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2Rl
X21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2Nqcy9oYW5kbGViYXJzL2RlY29yYXRvcnMvaW5saW5l
LmpzCkBAIC0wLDAgKzEsMjkgQEAKKyd1c2Ugc3RyaWN0JzsKKworZXhwb3J0cy5fX2VzTW9kdWxl
ID0gdHJ1ZTsKKwordmFyIF91dGlscyA9IHJlcXVpcmUoJy4uL3V0aWxzJyk7CisKK2V4cG9ydHNb
J2RlZmF1bHQnXSA9IGZ1bmN0aW9uIChpbnN0YW5jZSkgeworICBpbnN0YW5jZS5yZWdpc3RlckRl
Y29yYXRvcignaW5saW5lJywgZnVuY3Rpb24gKGZuLCBwcm9wcywgY29udGFpbmVyLCBvcHRpb25z
KSB7CisgICAgdmFyIHJldCA9IGZuOworICAgIGlmICghcHJvcHMucGFydGlhbHMpIHsKKyAgICAg
IHByb3BzLnBhcnRpYWxzID0ge307CisgICAgICByZXQgPSBmdW5jdGlvbiAoY29udGV4dCwgb3B0
aW9ucykgeworICAgICAgICAvLyBDcmVhdGUgYSBuZXcgcGFydGlhbHMgc3RhY2sgZnJhbWUgcHJp
b3IgdG8gZXhlYy4KKyAgICAgICAgdmFyIG9yaWdpbmFsID0gY29udGFpbmVyLnBhcnRpYWxzOwor
ICAgICAgICBjb250YWluZXIucGFydGlhbHMgPSBfdXRpbHMuZXh0ZW5kKHt9LCBvcmlnaW5hbCwg
cHJvcHMucGFydGlhbHMpOworICAgICAgICB2YXIgcmV0ID0gZm4oY29udGV4dCwgb3B0aW9ucyk7
CisgICAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyA9IG9yaWdpbmFsOworICAgICAgICByZXR1cm4g
cmV0OworICAgICAgfTsKKyAgICB9CisKKyAgICBwcm9wcy5wYXJ0aWFsc1tvcHRpb25zLmFyZ3Nb
MF1dID0gb3B0aW9ucy5mbjsKKworICAgIHJldHVybiByZXQ7CisgIH0pOworfTsKKworbW9kdWxl
LmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107CisvLyMgc291cmNlTWFwcGluZ1VSTD1kYXRh
OmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBi
SWk0dUx5NHVMeTR1THk0dUwyeHBZaTlvWVc1a2JHVmlZWEp6TDJSbFkyOXlZWFJ2Y25NdmFXNXNh
VzVsTG1weklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN096czdjVUpCUVhGQ0xG
VkJRVlU3TzNGQ1FVVm9RaXhWUVVGVExGRkJRVkVzUlVGQlJUdEJRVU5vUXl4VlFVRlJMRU5CUVVN
c2FVSkJRV2xDTEVOQlFVTXNVVUZCVVN4RlFVRkZMRlZCUVZNc1JVRkJSU3hGUVVGRkxFdEJRVXNz
UlVGQlJTeFRRVUZUTEVWQlFVVXNUMEZCVHl4RlFVRkZPMEZCUXpORkxGRkJRVWtzUjBGQlJ5eEhR
VUZITEVWQlFVVXNRMEZCUXp0QlFVTmlMRkZCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVVVGQlVT
eEZRVUZGTzBGQlEyNUNMRmRCUVVzc1EwRkJReXhSUVVGUkxFZEJRVWNzUlVGQlJTeERRVUZETzBG
QlEzQkNMRk5CUVVjc1IwRkJSeXhWUVVGVExFOUJRVThzUlVGQlJTeFBRVUZQTEVWQlFVVTdPMEZC
UlM5Q0xGbEJRVWtzVVVGQlVTeEhRVUZITEZOQlFWTXNRMEZCUXl4UlFVRlJMRU5CUVVNN1FVRkRi
RU1zYVVKQlFWTXNRMEZCUXl4UlFVRlJMRWRCUVVjc1kwRkJUeXhGUVVGRkxFVkJRVVVzVVVGQlVT
eEZRVUZGTEV0QlFVc3NRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJRenRCUVVNeFJDeFpRVUZKTEVk
QlFVY3NSMEZCUnl4RlFVRkZMRU5CUVVNc1QwRkJUeXhGUVVGRkxFOUJRVThzUTBGQlF5eERRVUZE
TzBGQlF5OUNMR2xDUVVGVExFTkJRVU1zVVVGQlVTeEhRVUZITEZGQlFWRXNRMEZCUXp0QlFVTTVR
aXhsUVVGUExFZEJRVWNzUTBGQlF6dFBRVU5hTEVOQlFVTTdTMEZEU0RzN1FVRkZSQ3hUUVVGTExF
TkJRVU1zVVVGQlVTeERRVUZETEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVG
RExFTkJRVU1zUjBGQlJ5eFBRVUZQTEVOQlFVTXNSVUZCUlN4RFFVRkRPenRCUVVVM1F5eFhRVUZQ
TEVkQlFVY3NRMEZCUXp0SFFVTmFMRU5CUVVNc1EwRkJRenREUVVOS0lpd2labWxzWlNJNkltbHVi
R2x1WlM1cWN5SXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQjdaWGgwWlc1a2ZT
Qm1jbTl0SUNjdUxpOTFkR2xzY3ljN1hHNWNibVY0Y0c5eWRDQmtaV1poZFd4MElHWjFibU4wYVc5
dUtHbHVjM1JoYm1ObEtTQjdYRzRnSUdsdWMzUmhibU5sTG5KbFoybHpkR1Z5UkdWamIzSmhkRzl5
S0NkcGJteHBibVVuTENCbWRXNWpkR2x2YmlobWJpd2djSEp2Y0hNc0lHTnZiblJoYVc1bGNpd2di
M0IwYVc5dWN5a2dlMXh1SUNBZ0lHeGxkQ0J5WlhRZ1BTQm1ianRjYmlBZ0lDQnBaaUFvSVhCeWIz
QnpMbkJoY25ScFlXeHpLU0I3WEc0Z0lDQWdJQ0J3Y205d2N5NXdZWEowYVdGc2N5QTlJSHQ5TzF4
dUlDQWdJQ0FnY21WMElEMGdablZ1WTNScGIyNG9ZMjl1ZEdWNGRDd2diM0IwYVc5dWN5a2dlMXh1
SUNBZ0lDQWdJQ0F2THlCRGNtVmhkR1VnWVNCdVpYY2djR0Z5ZEdsaGJITWdjM1JoWTJzZ1puSmhi
V1VnY0hKcGIzSWdkRzhnWlhobFl5NWNiaUFnSUNBZ0lDQWdiR1YwSUc5eWFXZHBibUZzSUQwZ1ky
OXVkR0ZwYm1WeUxuQmhjblJwWVd4ek8xeHVJQ0FnSUNBZ0lDQmpiMjUwWVdsdVpYSXVjR0Z5ZEds
aGJITWdQU0JsZUhSbGJtUW9lMzBzSUc5eWFXZHBibUZzTENCd2NtOXdjeTV3WVhKMGFXRnNjeWs3
WEc0Z0lDQWdJQ0FnSUd4bGRDQnlaWFFnUFNCbWJpaGpiMjUwWlhoMExDQnZjSFJwYjI1ektUdGNi
aUFnSUNBZ0lDQWdZMjl1ZEdGcGJtVnlMbkJoY25ScFlXeHpJRDBnYjNKcFoybHVZV3c3WEc0Z0lD
QWdJQ0FnSUhKbGRIVnliaUJ5WlhRN1hHNGdJQ0FnSUNCOU8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhC
eWIzQnpMbkJoY25ScFlXeHpXMjl3ZEdsdmJuTXVZWEpuYzFzd1hWMGdQU0J2Y0hScGIyNXpMbVp1
TzF4dVhHNGdJQ0FnY21WMGRYSnVJSEpsZER0Y2JpQWdmU2s3WEc1OVhHNGlYWDA9CmRpZmYgLS1n
aXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9janMv
aGFuZGxlYmFycy9leGNlcHRpb24uanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVz
L2hhbmRsZWJhcnMvZGlzdC9janMvaGFuZGxlYmFycy9leGNlcHRpb24uanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDc2ZDQwNzc0NzFhNDY1ZmQwNmEzYWUxYTVlYzc2ZTU3MzA2OGMyZQotLS0gL2Rldi9udWxsCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2Nqcy9o
YW5kbGViYXJzL2V4Y2VwdGlvbi5qcwpAQCAtMCwwICsxLDUxIEBACisndXNlIHN0cmljdCc7CisK
K2V4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7CisKK3ZhciBlcnJvclByb3BzID0gWydkZXNjcmlw
dGlvbicsICdmaWxlTmFtZScsICdsaW5lTnVtYmVyJywgJ21lc3NhZ2UnLCAnbmFtZScsICdudW1i
ZXInLCAnc3RhY2snXTsKKworZnVuY3Rpb24gRXhjZXB0aW9uKG1lc3NhZ2UsIG5vZGUpIHsKKyAg
dmFyIGxvYyA9IG5vZGUgJiYgbm9kZS5sb2MsCisgICAgICBsaW5lID0gdW5kZWZpbmVkLAorICAg
ICAgY29sdW1uID0gdW5kZWZpbmVkOworICBpZiAobG9jKSB7CisgICAgbGluZSA9IGxvYy5zdGFy
dC5saW5lOworICAgIGNvbHVtbiA9IGxvYy5zdGFydC5jb2x1bW47CisKKyAgICBtZXNzYWdlICs9
ICcgLSAnICsgbGluZSArICc6JyArIGNvbHVtbjsKKyAgfQorCisgIHZhciB0bXAgPSBFcnJvci5w
cm90b3R5cGUuY29uc3RydWN0b3IuY2FsbCh0aGlzLCBtZXNzYWdlKTsKKworICAvLyBVbmZvcnR1
bmF0ZWx5IGVycm9ycyBhcmUgbm90IGVudW1lcmFibGUgaW4gQ2hyb21lIChhdCBsZWFzdCksIHNv
IGBmb3IgcHJvcCBpbiB0bXBgIGRvZXNuJ3Qgd29yay4KKyAgZm9yICh2YXIgaWR4ID0gMDsgaWR4
IDwgZXJyb3JQcm9wcy5sZW5ndGg7IGlkeCsrKSB7CisgICAgdGhpc1tlcnJvclByb3BzW2lkeF1d
ID0gdG1wW2Vycm9yUHJvcHNbaWR4XV07CisgIH0KKworICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxz
ZSAqLworICBpZiAoRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UpIHsKKyAgICBFcnJvci5jYXB0dXJl
U3RhY2tUcmFjZSh0aGlzLCBFeGNlcHRpb24pOworICB9CisKKyAgdHJ5IHsKKyAgICBpZiAobG9j
KSB7CisgICAgICB0aGlzLmxpbmVOdW1iZXIgPSBsaW5lOworCisgICAgICAvLyBXb3JrIGFyb3Vu
ZCBpc3N1ZSB1bmRlciBzYWZhcmkgd2hlcmUgd2UgY2FuJ3QgZGlyZWN0bHkgc2V0IHRoZSBjb2x1
bW4gdmFsdWUKKyAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovCisgICAgICBpZiAoT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KSB7CisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlz
LCAnY29sdW1uJywgeyB2YWx1ZTogY29sdW1uIH0pOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
dGhpcy5jb2x1bW4gPSBjb2x1bW47CisgICAgICB9CisgICAgfQorICB9IGNhdGNoIChub3ApIHsK
KyAgICAvKiBJZ25vcmUgaWYgdGhlIGJyb3dzZXIgaXMgdmVyeSBwYXJ0aWN1bGFyICovCisgIH0K
K30KKworRXhjZXB0aW9uLnByb3RvdHlwZSA9IG5ldyBFcnJvcigpOworCitleHBvcnRzWydkZWZh
dWx0J10gPSBFeGNlcHRpb247Cittb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsK
Ky8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpY
SnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUx5NHVMMnhwWWk5b1lXNWtiR1ZpWVhK
ekwyVjRZMlZ3ZEdsdmJpNXFjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPenM3
TzBGQlEwRXNTVUZCVFN4VlFVRlZMRWRCUVVjc1EwRkJReXhoUVVGaExFVkJRVVVzVlVGQlZTeEZR
VUZGTEZsQlFWa3NSVUZCUlN4VFFVRlRMRVZCUVVVc1RVRkJUU3hGUVVGRkxGRkJRVkVzUlVGQlJT
eFBRVUZQTEVOQlFVTXNRMEZCUXpzN1FVRkZia2NzVTBGQlV5eFRRVUZUTEVOQlFVTXNUMEZCVHl4
RlFVRkZMRWxCUVVrc1JVRkJSVHRCUVVOb1F5eE5RVUZKTEVkQlFVY3NSMEZCUnl4SlFVRkpMRWxC
UVVrc1NVRkJTU3hEUVVGRExFZEJRVWM3VFVGRGRFSXNTVUZCU1N4WlFVRkJPMDFCUTBvc1RVRkJU
U3haUVVGQkxFTkJRVU03UVVGRFdDeE5RVUZKTEVkQlFVY3NSVUZCUlR0QlFVTlFMRkZCUVVrc1Iw
RkJSeXhIUVVGSExFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXp0QlFVTjBRaXhWUVVG
TkxFZEJRVWNzUjBGQlJ5eERRVUZETEV0QlFVc3NRMEZCUXl4TlFVRk5MRU5CUVVNN08wRkJSVEZD
TEZkQlFVOHNTVUZCU1N4TFFVRkxMRWRCUVVjc1NVRkJTU3hIUVVGSExFZEJRVWNzUjBGQlJ5eE5R
VUZOTEVOQlFVTTdSMEZEZUVNN08wRkJSVVFzVFVGQlNTeEhRVUZITEVkQlFVY3NTMEZCU3l4RFFV
RkRMRk5CUVZNc1EwRkJReXhYUVVGWExFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NSVUZCUlN4
UFFVRlBMRU5CUVVNc1EwRkJRenM3TzBGQlJ6RkVMRTlCUVVzc1NVRkJTU3hIUVVGSExFZEJRVWNz
UTBGQlF5eEZRVUZGTEVkQlFVY3NSMEZCUnl4VlFVRlZMRU5CUVVNc1RVRkJUU3hGUVVGRkxFZEJR
VWNzUlVGQlJTeEZRVUZGTzBGQlEyaEVMRkZCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zUjBGQlJ5
eERRVUZETEVOQlFVTXNSMEZCUnl4SFFVRkhMRU5CUVVNc1ZVRkJWU3hEUVVGRExFZEJRVWNzUTBG
QlF5eERRVUZETEVOQlFVTTdSMEZET1VNN096dEJRVWRFTEUxQlFVa3NTMEZCU3l4RFFVRkRMR2xD
UVVGcFFpeEZRVUZGTzBGQlF6TkNMRk5CUVVzc1EwRkJReXhwUWtGQmFVSXNRMEZCUXl4SlFVRkpM
RVZCUVVVc1UwRkJVeXhEUVVGRExFTkJRVU03UjBGRE1VTTdPMEZCUlVRc1RVRkJTVHRCUVVOR0xG
RkJRVWtzUjBGQlJ5eEZRVUZGTzBGQlExQXNWVUZCU1N4RFFVRkRMRlZCUVZVc1IwRkJSeXhKUVVG
SkxFTkJRVU03T3pzN1FVRkpka0lzVlVGQlNTeE5RVUZOTEVOQlFVTXNZMEZCWXl4RlFVRkZPMEZC
UTNwQ0xHTkJRVTBzUTBGQlF5eGpRVUZqTEVOQlFVTXNTVUZCU1N4RlFVRkZMRkZCUVZFc1JVRkJS
U3hGUVVGRExFdEJRVXNzUlVGQlJTeE5RVUZOTEVWQlFVTXNRMEZCUXl4RFFVRkRPMDlCUTNoRUxF
MUJRVTA3UVVGRFRDeFpRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRTFCUVUwc1EwRkJRenRQUVVO
MFFqdExRVU5HTzBkQlEwWXNRMEZCUXl4UFFVRlBMRWRCUVVjc1JVRkJSVHM3UjBGRllqdERRVU5H
T3p0QlFVVkVMRk5CUVZNc1EwRkJReXhUUVVGVExFZEJRVWNzU1VGQlNTeExRVUZMTEVWQlFVVXNR
MEZCUXpzN2NVSkJSVzVDTEZOQlFWTWlMQ0ptYVd4bElqb2laWGhqWlhCMGFXOXVMbXB6SWl3aWMy
OTFjbU5sYzBOdmJuUmxiblFpT2xzaVhHNWpiMjV6ZENCbGNuSnZjbEJ5YjNCeklEMGdXeWRrWlhO
amNtbHdkR2x2Ymljc0lDZG1hV3hsVG1GdFpTY3NJQ2RzYVc1bFRuVnRZbVZ5Snl3Z0oyMWxjM05o
WjJVbkxDQW5ibUZ0WlNjc0lDZHVkVzFpWlhJbkxDQW5jM1JoWTJzblhUdGNibHh1Wm5WdVkzUnBi
MjRnUlhoalpYQjBhVzl1S0cxbGMzTmhaMlVzSUc1dlpHVXBJSHRjYmlBZ2JHVjBJR3h2WXlBOUlH
NXZaR1VnSmlZZ2JtOWtaUzVzYjJNc1hHNGdJQ0FnSUNCc2FXNWxMRnh1SUNBZ0lDQWdZMjlzZFcx
dU8xeHVJQ0JwWmlBb2JHOWpLU0I3WEc0Z0lDQWdiR2x1WlNBOUlHeHZZeTV6ZEdGeWRDNXNhVzVs
TzF4dUlDQWdJR052YkhWdGJpQTlJR3h2WXk1emRHRnlkQzVqYjJ4MWJXNDdYRzVjYmlBZ0lDQnRa
WE56WVdkbElDczlJQ2NnTFNBbklDc2diR2x1WlNBcklDYzZKeUFySUdOdmJIVnRianRjYmlBZ2ZW
eHVYRzRnSUd4bGRDQjBiWEFnUFNCRmNuSnZjaTV3Y205MGIzUjVjR1V1WTI5dWMzUnlkV04wYjNJ
dVkyRnNiQ2gwYUdsekxDQnRaWE56WVdkbEtUdGNibHh1SUNBdkx5QlZibVp2Y25SMWJtRjBaV3g1
SUdWeWNtOXljeUJoY21VZ2JtOTBJR1Z1ZFcxbGNtRmliR1VnYVc0Z1EyaHliMjFsSUNoaGRDQnNa
V0Z6ZENrc0lITnZJR0JtYjNJZ2NISnZjQ0JwYmlCMGJYQmdJR1J2WlhOdUozUWdkMjl5YXk1Y2Jp
QWdabTl5SUNoc1pYUWdhV1I0SUQwZ01Ec2dhV1I0SUR3Z1pYSnliM0pRY205d2N5NXNaVzVuZEdn
N0lHbGtlQ3NyS1NCN1hHNGdJQ0FnZEdocGMxdGxjbkp2Y2xCeWIzQnpXMmxrZUYxZElEMGdkRzF3
VzJWeWNtOXlVSEp2Y0hOYmFXUjRYVjA3WEc0Z0lIMWNibHh1SUNBdktpQnBjM1JoYm1KMWJDQnBa
MjV2Y21VZ1pXeHpaU0FxTDF4dUlDQnBaaUFvUlhKeWIzSXVZMkZ3ZEhWeVpWTjBZV05yVkhKaFky
VXBJSHRjYmlBZ0lDQkZjbkp2Y2k1allYQjBkWEpsVTNSaFkydFVjbUZqWlNoMGFHbHpMQ0JGZUdO
bGNIUnBiMjRwTzF4dUlDQjlYRzVjYmlBZ2RISjVJSHRjYmlBZ0lDQnBaaUFvYkc5aktTQjdYRzRn
SUNBZ0lDQjBhR2x6TG14cGJtVk9kVzFpWlhJZ1BTQnNhVzVsTzF4dVhHNGdJQ0FnSUNBdkx5Qlhi
M0pySUdGeWIzVnVaQ0JwYzNOMVpTQjFibVJsY2lCellXWmhjbWtnZDJobGNtVWdkMlVnWTJGdUoz
UWdaR2x5WldOMGJIa2djMlYwSUhSb1pTQmpiMngxYlc0Z2RtRnNkV1ZjYmlBZ0lDQWdJQzhxSUds
emRHRnVZblZzSUdsbmJtOXlaU0J1WlhoMElDb3ZYRzRnSUNBZ0lDQnBaaUFvVDJKcVpXTjBMbVJs
Wm1sdVpWQnliM0JsY25SNUtTQjdYRzRnSUNBZ0lDQWdJRTlpYW1WamRDNWtaV1pwYm1WUWNtOXda
WEowZVNoMGFHbHpMQ0FuWTI5c2RXMXVKeXdnZTNaaGJIVmxPaUJqYjJ4MWJXNTlLVHRjYmlBZ0lD
QWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJSFJvYVhNdVkyOXNkVzF1SUQwZ1kyOXNkVzF1TzF4
dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ2ZTQmpZWFJqYUNBb2JtOXdLU0I3WEc0Z0lDQWdMeW9n
U1dkdWIzSmxJR2xtSUhSb1pTQmljbTkzYzJWeUlHbHpJSFpsY25rZ2NHRnlkR2xqZFd4aGNpQXFM
MXh1SUNCOVhHNTlYRzVjYmtWNFkyVndkR2x2Ymk1d2NtOTBiM1I1Y0dVZ1BTQnVaWGNnUlhKeWIz
SW9LVHRjYmx4dVpYaHdiM0owSUdSbFptRjFiSFFnUlhoalpYQjBhVzl1TzF4dUlsMTkKZGlmZiAt
LWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2Nq
cy9oYW5kbGViYXJzL2hlbHBlcnMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVz
L2hhbmRsZWJhcnMvZGlzdC9janMvaGFuZGxlYmFycy9oZWxwZXJzLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFh
Yjg0YTQ4MDQyYmRmNWQ2MTlmYWVhZmJiYmE1Y2E0NDUyZWYxZDQKLS0tIC9kZXYvbnVsbAorKysg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9janMvaGFu
ZGxlYmFycy9oZWxwZXJzLmpzCkBAIC0wLDAgKzEsNDYgQEAKKyd1c2Ugc3RyaWN0JzsKKworZXhw
b3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKK2V4cG9ydHMucmVnaXN0ZXJEZWZhdWx0SGVscGVycyA9
IHJlZ2lzdGVyRGVmYXVsdEhlbHBlcnM7CisvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dAorCitmdW5j
dGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2Vz
TW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9CisKK3ZhciBfaGVscGVyc0Jsb2Nr
SGVscGVyTWlzc2luZyA9IHJlcXVpcmUoJy4vaGVscGVycy9ibG9jay1oZWxwZXItbWlzc2luZycp
OworCit2YXIgX2hlbHBlcnNCbG9ja0hlbHBlck1pc3NpbmcyID0gX2ludGVyb3BSZXF1aXJlRGVm
YXVsdChfaGVscGVyc0Jsb2NrSGVscGVyTWlzc2luZyk7CisKK3ZhciBfaGVscGVyc0VhY2ggPSBy
ZXF1aXJlKCcuL2hlbHBlcnMvZWFjaCcpOworCit2YXIgX2hlbHBlcnNFYWNoMiA9IF9pbnRlcm9w
UmVxdWlyZURlZmF1bHQoX2hlbHBlcnNFYWNoKTsKKwordmFyIF9oZWxwZXJzSGVscGVyTWlzc2lu
ZyA9IHJlcXVpcmUoJy4vaGVscGVycy9oZWxwZXItbWlzc2luZycpOworCit2YXIgX2hlbHBlcnNI
ZWxwZXJNaXNzaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2hlbHBlcnNIZWxwZXJNaXNz
aW5nKTsKKwordmFyIF9oZWxwZXJzSWYgPSByZXF1aXJlKCcuL2hlbHBlcnMvaWYnKTsKKwordmFy
IF9oZWxwZXJzSWYyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaGVscGVyc0lmKTsKKwordmFy
IF9oZWxwZXJzTG9nID0gcmVxdWlyZSgnLi9oZWxwZXJzL2xvZycpOworCit2YXIgX2hlbHBlcnNM
b2cyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaGVscGVyc0xvZyk7CisKK3ZhciBfaGVscGVy
c0xvb2t1cCA9IHJlcXVpcmUoJy4vaGVscGVycy9sb29rdXAnKTsKKwordmFyIF9oZWxwZXJzTG9v
a3VwMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2hlbHBlcnNMb29rdXApOworCit2YXIgX2hl
bHBlcnNXaXRoID0gcmVxdWlyZSgnLi9oZWxwZXJzL3dpdGgnKTsKKwordmFyIF9oZWxwZXJzV2l0
aDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9oZWxwZXJzV2l0aCk7CisKK2Z1bmN0aW9uIHJl
Z2lzdGVyRGVmYXVsdEhlbHBlcnMoaW5zdGFuY2UpIHsKKyAgX2hlbHBlcnNCbG9ja0hlbHBlck1p
c3NpbmcyWydkZWZhdWx0J10oaW5zdGFuY2UpOworICBfaGVscGVyc0VhY2gyWydkZWZhdWx0J10o
aW5zdGFuY2UpOworICBfaGVscGVyc0hlbHBlck1pc3NpbmcyWydkZWZhdWx0J10oaW5zdGFuY2Up
OworICBfaGVscGVyc0lmMlsnZGVmYXVsdCddKGluc3RhbmNlKTsKKyAgX2hlbHBlcnNMb2cyWydk
ZWZhdWx0J10oaW5zdGFuY2UpOworICBfaGVscGVyc0xvb2t1cDJbJ2RlZmF1bHQnXShpbnN0YW5j
ZSk7CisgIF9oZWxwZXJzV2l0aDJbJ2RlZmF1bHQnXShpbnN0YW5jZSk7Cit9CisvLyMgc291cmNl
TWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pM
Q0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMeTR1TDJ4cFlpOW9ZVzVrYkdWaVlYSnpMMmhsYkhCbGNu
TXVhbk1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanM3T3pzN096czdlVU5CUVhW
RExHZERRVUZuUXpzN096c3lRa0ZET1VNc1owSkJRV2RDT3pzN08yOURRVU5RTERCQ1FVRXdRanM3
T3p0NVFrRkRja01zWTBGQll6czdPenN3UWtGRFlpeGxRVUZsT3pzN096WkNRVU5hTEd0Q1FVRnJR
anM3T3pzeVFrRkRjRUlzWjBKQlFXZENPenM3TzBGQlJXeERMRk5CUVZNc2MwSkJRWE5DTEVOQlFV
TXNVVUZCVVN4RlFVRkZPMEZCUXk5RExIbERRVUV5UWl4UlFVRlJMRU5CUVVNc1EwRkJRenRCUVVO
eVF5d3lRa0ZCWVN4UlFVRlJMRU5CUVVNc1EwRkJRenRCUVVOMlFpeHZRMEZCYzBJc1VVRkJVU3hE
UVVGRExFTkJRVU03UVVGRGFFTXNlVUpCUVZjc1VVRkJVU3hEUVVGRExFTkJRVU03UVVGRGNrSXNN
RUpCUVZrc1VVRkJVU3hEUVVGRExFTkJRVU03UVVGRGRFSXNOa0pCUVdVc1VVRkJVU3hEUVVGRExF
TkJRVU03UVVGRGVrSXNNa0pCUVdFc1VVRkJVU3hEUVVGRExFTkJRVU03UTBGRGVFSWlMQ0ptYVd4
bElqb2lhR1ZzY0dWeWN5NXFjeUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSW1sdGNHOXlkQ0J5
WldkcGMzUmxja0pzYjJOclNHVnNjR1Z5VFdsemMybHVaeUJtY205dElDY3VMMmhsYkhCbGNuTXZZ
bXh2WTJzdGFHVnNjR1Z5TFcxcGMzTnBibWNuTzF4dWFXMXdiM0owSUhKbFoybHpkR1Z5UldGamFD
Qm1jbTl0SUNjdUwyaGxiSEJsY25NdlpXRmphQ2M3WEc1cGJYQnZjblFnY21WbmFYTjBaWEpJWld4
d1pYSk5hWE56YVc1bklHWnliMjBnSnk0dmFHVnNjR1Z5Y3k5b1pXeHdaWEl0YldsemMybHVaeWM3
WEc1cGJYQnZjblFnY21WbmFYTjBaWEpKWmlCbWNtOXRJQ2N1TDJobGJIQmxjbk12YVdZbk8xeHVh
VzF3YjNKMElISmxaMmx6ZEdWeVRHOW5JR1p5YjIwZ0p5NHZhR1ZzY0dWeWN5OXNiMmNuTzF4dWFX
MXdiM0owSUhKbFoybHpkR1Z5VEc5dmEzVndJR1p5YjIwZ0p5NHZhR1ZzY0dWeWN5OXNiMjlyZFhB
bk8xeHVhVzF3YjNKMElISmxaMmx6ZEdWeVYybDBhQ0JtY205dElDY3VMMmhsYkhCbGNuTXZkMmww
YUNjN1hHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQnlaV2RwYzNSbGNrUmxabUYxYkhSSVpXeHda
WEp6S0dsdWMzUmhibU5sS1NCN1hHNGdJSEpsWjJsemRHVnlRbXh2WTJ0SVpXeHdaWEpOYVhOemFX
NW5LR2x1YzNSaGJtTmxLVHRjYmlBZ2NtVm5hWE4wWlhKRllXTm9LR2x1YzNSaGJtTmxLVHRjYmlB
Z2NtVm5hWE4wWlhKSVpXeHdaWEpOYVhOemFXNW5LR2x1YzNSaGJtTmxLVHRjYmlBZ2NtVm5hWE4w
WlhKSlppaHBibk4wWVc1alpTazdYRzRnSUhKbFoybHpkR1Z5VEc5bktHbHVjM1JoYm1ObEtUdGNi
aUFnY21WbmFYTjBaWEpNYjI5cmRYQW9hVzV6ZEdGdVkyVXBPMXh1SUNCeVpXZHBjM1JsY2xkcGRH
Z29hVzV6ZEdGdVkyVXBPMXh1ZlZ4dUlsMTkKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVy
eS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2Nqcy9oYW5kbGViYXJzL2hlbHBlcnMvYmxv
Y2staGVscGVyLW1pc3NpbmcuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hh
bmRsZWJhcnMvZGlzdC9janMvaGFuZGxlYmFycy9oZWxwZXJzL2Jsb2NrLWhlbHBlci1taXNzaW5n
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmY4MmQyYWNhNmNkYmY2N2I4ZTAyOGJmYzY1NmMxNTUwMDkzYmVmNjAK
LS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRs
ZWJhcnMvZGlzdC9janMvaGFuZGxlYmFycy9oZWxwZXJzL2Jsb2NrLWhlbHBlci1taXNzaW5nLmpz
CkBAIC0wLDAgKzEsMzkgQEAKKyd1c2Ugc3RyaWN0JzsKKworZXhwb3J0cy5fX2VzTW9kdWxlID0g
dHJ1ZTsKKwordmFyIF91dGlscyA9IHJlcXVpcmUoJy4uL3V0aWxzJyk7CisKK2V4cG9ydHNbJ2Rl
ZmF1bHQnXSA9IGZ1bmN0aW9uIChpbnN0YW5jZSkgeworICBpbnN0YW5jZS5yZWdpc3RlckhlbHBl
cignYmxvY2tIZWxwZXJNaXNzaW5nJywgZnVuY3Rpb24gKGNvbnRleHQsIG9wdGlvbnMpIHsKKyAg
ICB2YXIgaW52ZXJzZSA9IG9wdGlvbnMuaW52ZXJzZSwKKyAgICAgICAgZm4gPSBvcHRpb25zLmZu
OworCisgICAgaWYgKGNvbnRleHQgPT09IHRydWUpIHsKKyAgICAgIHJldHVybiBmbih0aGlzKTsK
KyAgICB9IGVsc2UgaWYgKGNvbnRleHQgPT09IGZhbHNlIHx8IGNvbnRleHQgPT0gbnVsbCkgewor
ICAgICAgcmV0dXJuIGludmVyc2UodGhpcyk7CisgICAgfSBlbHNlIGlmIChfdXRpbHMuaXNBcnJh
eShjb250ZXh0KSkgeworICAgICAgaWYgKGNvbnRleHQubGVuZ3RoID4gMCkgeworICAgICAgICBp
ZiAob3B0aW9ucy5pZHMpIHsKKyAgICAgICAgICBvcHRpb25zLmlkcyA9IFtvcHRpb25zLm5hbWVd
OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGluc3RhbmNlLmhlbHBlcnMuZWFjaChjb250
ZXh0LCBvcHRpb25zKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiBpbnZlcnNlKHRo
aXMpOworICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICBpZiAob3B0aW9ucy5kYXRhICYmIG9w
dGlvbnMuaWRzKSB7CisgICAgICAgIHZhciBkYXRhID0gX3V0aWxzLmNyZWF0ZUZyYW1lKG9wdGlv
bnMuZGF0YSk7CisgICAgICAgIGRhdGEuY29udGV4dFBhdGggPSBfdXRpbHMuYXBwZW5kQ29udGV4
dFBhdGgob3B0aW9ucy5kYXRhLmNvbnRleHRQYXRoLCBvcHRpb25zLm5hbWUpOworICAgICAgICBv
cHRpb25zID0geyBkYXRhOiBkYXRhIH07CisgICAgICB9CisKKyAgICAgIHJldHVybiBmbihjb250
ZXh0LCBvcHRpb25zKTsKKyAgICB9CisgIH0pOworfTsKKworbW9kdWxlLmV4cG9ydHMgPSBleHBv
cnRzWydkZWZhdWx0J107CisvLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pz
b247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMeTR1THk0
dUwyeHBZaTlvWVc1a2JHVmlZWEp6TDJobGJIQmxjbk12WW14dlkyc3RhR1ZzY0dWeUxXMXBjM05w
Ym1jdWFuTWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqczdPenR4UWtGQmMwUXNW
VUZCVlRzN2NVSkJSV3BFTEZWQlFWTXNVVUZCVVN4RlFVRkZPMEZCUTJoRExGVkJRVkVzUTBGQlF5
eGpRVUZqTEVOQlFVTXNiMEpCUVc5Q0xFVkJRVVVzVlVGQlV5eFBRVUZQTEVWQlFVVXNUMEZCVHl4
RlFVRkZPMEZCUTNaRkxGRkJRVWtzVDBGQlR5eEhRVUZITEU5QlFVOHNRMEZCUXl4UFFVRlBPMUZC
UTNwQ0xFVkJRVVVzUjBGQlJ5eFBRVUZQTEVOQlFVTXNSVUZCUlN4RFFVRkRPenRCUVVWd1FpeFJR
VUZKTEU5QlFVOHNTMEZCU3l4SlFVRkpMRVZCUVVVN1FVRkRjRUlzWVVGQlR5eEZRVUZGTEVOQlFV
TXNTVUZCU1N4RFFVRkRMRU5CUVVNN1MwRkRha0lzVFVGQlRTeEpRVUZKTEU5QlFVOHNTMEZCU3l4
TFFVRkxMRWxCUVVrc1QwRkJUeXhKUVVGSkxFbEJRVWtzUlVGQlJUdEJRVU12UXl4aFFVRlBMRTlC
UVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dExRVU4wUWl4TlFVRk5MRWxCUVVrc1pVRkJV
U3hQUVVGUExFTkJRVU1zUlVGQlJUdEJRVU16UWl4VlFVRkpMRTlCUVU4c1EwRkJReXhOUVVGTkxF
ZEJRVWNzUTBGQlF5eEZRVUZGTzBGQlEzUkNMRmxCUVVrc1QwRkJUeXhEUVVGRExFZEJRVWNzUlVG
QlJUdEJRVU5tTEdsQ1FVRlBMRU5CUVVNc1IwRkJSeXhIUVVGSExFTkJRVU1zVDBGQlR5eERRVUZE
TEVsQlFVa3NRMEZCUXl4RFFVRkRPMU5CUXpsQ096dEJRVVZFTEdWQlFVOHNVVUZCVVN4RFFVRkRM
RTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zVDBGQlR5eEZRVUZGTEU5QlFVOHNRMEZCUXl4RFFV
RkRPMDlCUTJoRUxFMUJRVTA3UVVGRFRDeGxRVUZQTEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVN
c1EwRkJRenRQUVVOMFFqdExRVU5HTEUxQlFVMDdRVUZEVEN4VlFVRkpMRTlCUVU4c1EwRkJReXhK
UVVGSkxFbEJRVWtzVDBGQlR5eERRVUZETEVkQlFVY3NSVUZCUlR0QlFVTXZRaXhaUVVGSkxFbEJR
VWtzUjBGQlJ5eHRRa0ZCV1N4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03UVVGRGNr
TXNXVUZCU1N4RFFVRkRMRmRCUVZjc1IwRkJSeXg1UWtGQmEwSXNUMEZCVHl4RFFVRkRMRWxCUVVr
c1EwRkJReXhYUVVGWExFVkJRVVVzVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMEZC
UXpkRkxHVkJRVThzUjBGQlJ5eEZRVUZETEVsQlFVa3NSVUZCUlN4SlFVRkpMRVZCUVVNc1EwRkJR
enRQUVVONFFqczdRVUZGUkN4aFFVRlBMRVZCUVVVc1EwRkJReXhQUVVGUExFVkJRVVVzVDBGQlR5
eERRVUZETEVOQlFVTTdTMEZETjBJN1IwRkRSaXhEUVVGRExFTkJRVU03UTBGRFNpSXNJbVpwYkdV
aU9pSmliRzlqYXkxb1pXeHdaWEl0YldsemMybHVaeTVxY3lJc0luTnZkWEpqWlhORGIyNTBaVzUw
SWpwYkltbHRjRzl5ZENCN1lYQndaVzVrUTI5dWRHVjRkRkJoZEdnc0lHTnlaV0YwWlVaeVlXMWxM
Q0JwYzBGeWNtRjVmU0JtY205dElDY3VMaTkxZEdsc2N5YzdYRzVjYm1WNGNHOXlkQ0JrWldaaGRX
eDBJR1oxYm1OMGFXOXVLR2x1YzNSaGJtTmxLU0I3WEc0Z0lHbHVjM1JoYm1ObExuSmxaMmx6ZEdW
eVNHVnNjR1Z5S0NkaWJHOWphMGhsYkhCbGNrMXBjM05wYm1jbkxDQm1kVzVqZEdsdmJpaGpiMjUw
WlhoMExDQnZjSFJwYjI1ektTQjdYRzRnSUNBZ2JHVjBJR2x1ZG1WeWMyVWdQU0J2Y0hScGIyNXpM
bWx1ZG1WeWMyVXNYRzRnSUNBZ0lDQWdJR1p1SUQwZ2IzQjBhVzl1Y3k1bWJqdGNibHh1SUNBZ0lH
bG1JQ2hqYjI1MFpYaDBJRDA5UFNCMGNuVmxLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdabTRvZEdo
cGN5azdYRzRnSUNBZ2ZTQmxiSE5sSUdsbUlDaGpiMjUwWlhoMElEMDlQU0JtWVd4elpTQjhmQ0Jq
YjI1MFpYaDBJRDA5SUc1MWJHd3BJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQnBiblpsY25ObEtIUm9h
WE1wTzF4dUlDQWdJSDBnWld4elpTQnBaaUFvYVhOQmNuSmhlU2hqYjI1MFpYaDBLU2tnZTF4dUlD
QWdJQ0FnYVdZZ0tHTnZiblJsZUhRdWJHVnVaM1JvSUQ0Z01Da2dlMXh1SUNBZ0lDQWdJQ0JwWmlB
b2IzQjBhVzl1Y3k1cFpITXBJSHRjYmlBZ0lDQWdJQ0FnSUNCdmNIUnBiMjV6TG1sa2N5QTlJRnR2
Y0hScGIyNXpMbTVoYldWZE8xeHVJQ0FnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJ
R2x1YzNSaGJtTmxMbWhsYkhCbGNuTXVaV0ZqYUNoamIyNTBaWGgwTENCdmNIUnBiMjV6S1R0Y2Jp
QWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJwYm5abGNuTmxLSFJvYVhN
cE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0JwWmlBb2IzQjBhVzl1
Y3k1a1lYUmhJQ1ltSUc5d2RHbHZibk11YVdSektTQjdYRzRnSUNBZ0lDQWdJR3hsZENCa1lYUmhJ
RDBnWTNKbFlYUmxSbkpoYldVb2IzQjBhVzl1Y3k1a1lYUmhLVHRjYmlBZ0lDQWdJQ0FnWkdGMFlT
NWpiMjUwWlhoMFVHRjBhQ0E5SUdGd2NHVnVaRU52Ym5SbGVIUlFZWFJvS0c5d2RHbHZibk11WkdG
MFlTNWpiMjUwWlhoMFVHRjBhQ3dnYjNCMGFXOXVjeTV1WVcxbEtUdGNiaUFnSUNBZ0lDQWdiM0Iw
YVc5dWN5QTlJSHRrWVhSaE9pQmtZWFJoZlR0Y2JpQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ2NtVjBk
WEp1SUdadUtHTnZiblJsZUhRc0lHOXdkR2x2Ym5NcE8xeHVJQ0FnSUgxY2JpQWdmU2s3WEc1OVhH
NGlYWDA9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRs
ZWJhcnMvZGlzdC9janMvaGFuZGxlYmFycy9oZWxwZXJzL2VhY2guanMgYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9q
cXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9janMvaGFuZGxlYmFycy9oZWxwZXJz
L2VhY2guanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDAzMjc0YjBlOTZkMTNhNzEzMWQ2N2Q4ODk2ODJlM2JlNGZl
OWU0ZQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMv
aGFuZGxlYmFycy9kaXN0L2Nqcy9oYW5kbGViYXJzL2hlbHBlcnMvZWFjaC5qcwpAQCAtMCwwICsx
LDk0IEBACisndXNlIHN0cmljdCc7CisKK2V4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7CisvLyBp
c3RhbmJ1bCBpZ25vcmUgbmV4dAorCitmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9i
aikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9i
aiB9OyB9CisKK3ZhciBfdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpOworCit2YXIgX2V4Y2Vw
dGlvbiA9IHJlcXVpcmUoJy4uL2V4Y2VwdGlvbicpOworCit2YXIgX2V4Y2VwdGlvbjIgPSBfaW50
ZXJvcFJlcXVpcmVEZWZhdWx0KF9leGNlcHRpb24pOworCitleHBvcnRzWydkZWZhdWx0J10gPSBm
dW5jdGlvbiAoaW5zdGFuY2UpIHsKKyAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2VhY2gnLCBm
dW5jdGlvbiAoY29udGV4dCwgb3B0aW9ucykgeworICAgIGlmICghb3B0aW9ucykgeworICAgICAg
dGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ011c3QgcGFzcyBpdGVyYXRvciB0byAj
ZWFjaCcpOworICAgIH0KKworICAgIHZhciBmbiA9IG9wdGlvbnMuZm4sCisgICAgICAgIGludmVy
c2UgPSBvcHRpb25zLmludmVyc2UsCisgICAgICAgIGkgPSAwLAorICAgICAgICByZXQgPSAnJywK
KyAgICAgICAgZGF0YSA9IHVuZGVmaW5lZCwKKyAgICAgICAgY29udGV4dFBhdGggPSB1bmRlZmlu
ZWQ7CisKKyAgICBpZiAob3B0aW9ucy5kYXRhICYmIG9wdGlvbnMuaWRzKSB7CisgICAgICBjb250
ZXh0UGF0aCA9IF91dGlscy5hcHBlbmRDb250ZXh0UGF0aChvcHRpb25zLmRhdGEuY29udGV4dFBh
dGgsIG9wdGlvbnMuaWRzWzBdKSArICcuJzsKKyAgICB9CisKKyAgICBpZiAoX3V0aWxzLmlzRnVu
Y3Rpb24oY29udGV4dCkpIHsKKyAgICAgIGNvbnRleHQgPSBjb250ZXh0LmNhbGwodGhpcyk7Cisg
ICAgfQorCisgICAgaWYgKG9wdGlvbnMuZGF0YSkgeworICAgICAgZGF0YSA9IF91dGlscy5jcmVh
dGVGcmFtZShvcHRpb25zLmRhdGEpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGV4ZWNJdGVyYXRp
b24oZmllbGQsIGluZGV4LCBsYXN0KSB7CisgICAgICBpZiAoZGF0YSkgeworICAgICAgICBkYXRh
LmtleSA9IGZpZWxkOworICAgICAgICBkYXRhLmluZGV4ID0gaW5kZXg7CisgICAgICAgIGRhdGEu
Zmlyc3QgPSBpbmRleCA9PT0gMDsKKyAgICAgICAgZGF0YS5sYXN0ID0gISFsYXN0OworCisgICAg
ICAgIGlmIChjb250ZXh0UGF0aCkgeworICAgICAgICAgIGRhdGEuY29udGV4dFBhdGggPSBjb250
ZXh0UGF0aCArIGZpZWxkOworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIHJldCA9IHJldCAr
IGZuKGNvbnRleHRbZmllbGRdLCB7CisgICAgICAgIGRhdGE6IGRhdGEsCisgICAgICAgIGJsb2Nr
UGFyYW1zOiBfdXRpbHMuYmxvY2tQYXJhbXMoW2NvbnRleHRbZmllbGRdLCBmaWVsZF0sIFtjb250
ZXh0UGF0aCArIGZpZWxkLCBudWxsXSkKKyAgICAgIH0pOworICAgIH0KKworICAgIGlmIChjb250
ZXh0ICYmIHR5cGVvZiBjb250ZXh0ID09PSAnb2JqZWN0JykgeworICAgICAgaWYgKF91dGlscy5p
c0FycmF5KGNvbnRleHQpKSB7CisgICAgICAgIGZvciAodmFyIGogPSBjb250ZXh0Lmxlbmd0aDsg
aSA8IGo7IGkrKykgeworICAgICAgICAgIGlmIChpIGluIGNvbnRleHQpIHsKKyAgICAgICAgICAg
IGV4ZWNJdGVyYXRpb24oaSwgaSwgaSA9PT0gY29udGV4dC5sZW5ndGggLSAxKTsKKyAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHZhciBwcmlvcktleSA9IHVu
ZGVmaW5lZDsKKworICAgICAgICBmb3IgKHZhciBrZXkgaW4gY29udGV4dCkgeworICAgICAgICAg
IGlmIChjb250ZXh0Lmhhc093blByb3BlcnR5KGtleSkpIHsKKyAgICAgICAgICAgIC8vIFdlJ3Jl
IHJ1bm5pbmcgdGhlIGl0ZXJhdGlvbnMgb25lIHN0ZXAgb3V0IG9mIHN5bmMgc28gd2UgY2FuIGRl
dGVjdAorICAgICAgICAgICAgLy8gdGhlIGxhc3QgaXRlcmF0aW9uIHdpdGhvdXQgaGF2ZSB0byBz
Y2FuIHRoZSBvYmplY3QgdHdpY2UgYW5kIGNyZWF0ZQorICAgICAgICAgICAgLy8gYW4gaXRlcm1l
ZGlhdGUga2V5cyBhcnJheS4KKyAgICAgICAgICAgIGlmIChwcmlvcktleSAhPT0gdW5kZWZpbmVk
KSB7CisgICAgICAgICAgICAgIGV4ZWNJdGVyYXRpb24ocHJpb3JLZXksIGkgLSAxKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIHByaW9yS2V5ID0ga2V5OworICAgICAgICAgICAgaSsrOwor
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAocHJpb3JLZXkgIT09IHVuZGVmaW5l
ZCkgeworICAgICAgICAgIGV4ZWNJdGVyYXRpb24ocHJpb3JLZXksIGkgLSAxLCB0cnVlKTsKKyAg
ICAgICAgfQorICAgICAgfQorICAgIH0KKworICAgIGlmIChpID09PSAwKSB7CisgICAgICByZXQg
PSBpbnZlcnNlKHRoaXMpOworICAgIH0KKworICAgIHJldHVybiByZXQ7CisgIH0pOworfTsKKwor
bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107CisvLyMgc291cmNlTWFwcGluZ1VS
TD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVky
VnpJanBiSWk0dUx5NHVMeTR1THk0dUwyeHBZaTlvWVc1a2JHVmlZWEp6TDJobGJIQmxjbk12WldG
amFDNXFjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPenM3T3pzN08zRkNRVUVy
UlN4VlFVRlZPenQ1UWtGRGJrVXNZMEZCWXpzN096dHhRa0ZGY2tJc1ZVRkJVeXhSUVVGUkxFVkJR
VVU3UVVGRGFFTXNWVUZCVVN4RFFVRkRMR05CUVdNc1EwRkJReXhOUVVGTkxFVkJRVVVzVlVGQlV5
eFBRVUZQTEVWQlFVVXNUMEZCVHl4RlFVRkZPMEZCUTNwRUxGRkJRVWtzUTBGQlF5eFBRVUZQTEVW
QlFVVTdRVUZEV2l4WlFVRk5MREpDUVVGakxEWkNRVUUyUWl4RFFVRkRMRU5CUVVNN1MwRkRjRVE3
TzBGQlJVUXNVVUZCU1N4RlFVRkZMRWRCUVVjc1QwRkJUeXhEUVVGRExFVkJRVVU3VVVGRFppeFBR
VUZQTEVkQlFVY3NUMEZCVHl4RFFVRkRMRTlCUVU4N1VVRkRla0lzUTBGQlF5eEhRVUZITEVOQlFV
TTdVVUZEVEN4SFFVRkhMRWRCUVVjc1JVRkJSVHRSUVVOU0xFbEJRVWtzV1VGQlFUdFJRVU5LTEZk
QlFWY3NXVUZCUVN4RFFVRkRPenRCUVVWb1FpeFJRVUZKTEU5QlFVOHNRMEZCUXl4SlFVRkpMRWxC
UVVrc1QwRkJUeXhEUVVGRExFZEJRVWNzUlVGQlJUdEJRVU12UWl4cFFrRkJWeXhIUVVGSExIbENR
VUZyUWl4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExGZEJRVmNzUlVGQlJTeFBRVUZQTEVOQlFV
TXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUjBGQlJ5eERRVUZETzB0
QlEycEdPenRCUVVWRUxGRkJRVWtzYTBKQlFWY3NUMEZCVHl4RFFVRkRMRVZCUVVVN1FVRkJSU3ho
UVVGUExFZEJRVWNzVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJR
enRMUVVGRk96dEJRVVV4UkN4UlFVRkpMRTlCUVU4c1EwRkJReXhKUVVGSkxFVkJRVVU3UVVGRGFF
SXNWVUZCU1N4SFFVRkhMRzFDUVVGWkxFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0
TFFVTnNRenM3UVVGRlJDeGhRVUZUTEdGQlFXRXNRMEZCUXl4TFFVRkxMRVZCUVVVc1MwRkJTeXhG
UVVGRkxFbEJRVWtzUlVGQlJUdEJRVU42UXl4VlFVRkpMRWxCUVVrc1JVRkJSVHRCUVVOU0xGbEJR
VWtzUTBGQlF5eEhRVUZITEVkQlFVY3NTMEZCU3l4RFFVRkRPMEZCUTJwQ0xGbEJRVWtzUTBGQlF5
eExRVUZMTEVkQlFVY3NTMEZCU3l4RFFVRkRPMEZCUTI1Q0xGbEJRVWtzUTBGQlF5eExRVUZMTEVk
QlFVY3NTMEZCU3l4TFFVRkxMRU5CUVVNc1EwRkJRenRCUVVONlFpeFpRVUZKTEVOQlFVTXNTVUZC
U1N4SFFVRkhMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU03TzBGQlJXNUNMRmxCUVVrc1YwRkJW
eXhGUVVGRk8wRkJRMllzWTBGQlNTeERRVUZETEZkQlFWY3NSMEZCUnl4WFFVRlhMRWRCUVVjc1Mw
RkJTeXhEUVVGRE8xTkJRM2hETzA5QlEwWTdPMEZCUlVRc1UwRkJSeXhIUVVGSExFZEJRVWNzUjBG
QlJ5eEZRVUZGTEVOQlFVTXNUMEZCVHl4RFFVRkRMRXRCUVVzc1EwRkJReXhGUVVGRk8wRkJRemRD
TEZsQlFVa3NSVUZCUlN4SlFVRkpPMEZCUTFZc2JVSkJRVmNzUlVGQlJTeHRRa0ZCV1N4RFFVRkRM
RTlCUVU4c1EwRkJReXhMUVVGTExFTkJRVU1zUlVGQlJTeExRVUZMTEVOQlFVTXNSVUZCUlN4RFFV
RkRMRmRCUVZjc1IwRkJSeXhMUVVGTExFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTTdUMEZETDBV
c1EwRkJReXhEUVVGRE8wdEJRMG83TzBGQlJVUXNVVUZCU1N4UFFVRlBMRWxCUVVrc1QwRkJUeXhQ
UVVGUExFdEJRVXNzVVVGQlVTeEZRVUZGTzBGQlF6RkRMRlZCUVVrc1pVRkJVU3hQUVVGUExFTkJR
VU1zUlVGQlJUdEJRVU53UWl4aFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFOUJRVThzUTBGQlF5
eE5RVUZOTEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVG
QlJUdEJRVU4yUXl4alFVRkpMRU5CUVVNc1NVRkJTU3hQUVVGUExFVkJRVVU3UVVGRGFFSXNlVUpC
UVdFc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNTMEZCU3l4UFFVRlBM
RU5CUVVNc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETzFkQlF5OURPMU5CUTBZN1Qw
RkRSaXhOUVVGTk8wRkJRMHdzV1VGQlNTeFJRVUZSTEZsQlFVRXNRMEZCUXpzN1FVRkZZaXhoUVVG
TExFbEJRVWtzUjBGQlJ5eEpRVUZKTEU5QlFVOHNSVUZCUlR0QlFVTjJRaXhqUVVGSkxFOUJRVThz
UTBGQlF5eGpRVUZqTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVN096czdRVUZKTDBJc1owSkJR
VWtzVVVGQlVTeExRVUZMTEZOQlFWTXNSVUZCUlR0QlFVTXhRaXd5UWtGQllTeERRVUZETEZGQlFW
RXNSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU03WVVGRGFFTTdRVUZEUkN4
dlFrRkJVU3hIUVVGSExFZEJRVWNzUTBGQlF6dEJRVU5tTEdGQlFVTXNSVUZCUlN4RFFVRkRPMWRC
UTB3N1UwRkRSanRCUVVORUxGbEJRVWtzVVVGQlVTeExRVUZMTEZOQlFWTXNSVUZCUlR0QlFVTXhR
aXgxUWtGQllTeERRVUZETEZGQlFWRXNSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxF
bEJRVWtzUTBGQlF5eERRVUZETzFOQlEzUkRPMDlCUTBZN1MwRkRSanM3UVVGRlJDeFJRVUZKTEVO
QlFVTXNTMEZCU3l4RFFVRkRMRVZCUVVVN1FVRkRXQ3hUUVVGSExFZEJRVWNzVDBGQlR5eERRVUZE
TEVsQlFVa3NRMEZCUXl4RFFVRkRPMHRCUTNKQ096dEJRVVZFTEZkQlFVOHNSMEZCUnl4RFFVRkRP
MGRCUTFvc1EwRkJReXhEUVVGRE8wTkJRMG9pTENKbWFXeGxJam9pWldGamFDNXFjeUlzSW5OdmRY
SmpaWE5EYjI1MFpXNTBJanBiSW1sdGNHOXlkQ0I3WVhCd1pXNWtRMjl1ZEdWNGRGQmhkR2dzSUdK
c2IyTnJVR0Z5WVcxekxDQmpjbVZoZEdWR2NtRnRaU3dnYVhOQmNuSmhlU3dnYVhOR2RXNWpkR2x2
Ym4wZ1puSnZiU0FuTGk0dmRYUnBiSE1uTzF4dWFXMXdiM0owSUVWNFkyVndkR2x2YmlCbWNtOXRJ
Q2N1TGk5bGVHTmxjSFJwYjI0bk8xeHVYRzVsZUhCdmNuUWdaR1ZtWVhWc2RDQm1kVzVqZEdsdmJp
aHBibk4wWVc1alpTa2dlMXh1SUNCcGJuTjBZVzVqWlM1eVpXZHBjM1JsY2tobGJIQmxjaWduWldG
amFDY3NJR1oxYm1OMGFXOXVLR052Ym5SbGVIUXNJRzl3ZEdsdmJuTXBJSHRjYmlBZ0lDQnBaaUFv
SVc5d2RHbHZibk1wSUh0Y2JpQWdJQ0FnSUhSb2NtOTNJRzVsZHlCRmVHTmxjSFJwYjI0b0owMTFj
M1FnY0dGemN5QnBkR1Z5WVhSdmNpQjBieUFqWldGamFDY3BPMXh1SUNBZ0lIMWNibHh1SUNBZ0lH
eGxkQ0JtYmlBOUlHOXdkR2x2Ym5NdVptNHNYRzRnSUNBZ0lDQWdJR2x1ZG1WeWMyVWdQU0J2Y0hS
cGIyNXpMbWx1ZG1WeWMyVXNYRzRnSUNBZ0lDQWdJR2tnUFNBd0xGeHVJQ0FnSUNBZ0lDQnlaWFFn
UFNBbkp5eGNiaUFnSUNBZ0lDQWdaR0YwWVN4Y2JpQWdJQ0FnSUNBZ1kyOXVkR1Y0ZEZCaGRHZzdY
RzVjYmlBZ0lDQnBaaUFvYjNCMGFXOXVjeTVrWVhSaElDWW1JRzl3ZEdsdmJuTXVhV1J6S1NCN1hH
NGdJQ0FnSUNCamIyNTBaWGgwVUdGMGFDQTlJR0Z3Y0dWdVpFTnZiblJsZUhSUVlYUm9LRzl3ZEds
dmJuTXVaR0YwWVM1amIyNTBaWGgwVUdGMGFDd2diM0IwYVc5dWN5NXBaSE5iTUYwcElDc2dKeTRu
TzF4dUlDQWdJSDFjYmx4dUlDQWdJR2xtSUNocGMwWjFibU4wYVc5dUtHTnZiblJsZUhRcEtTQjdJ
R052Ym5SbGVIUWdQU0JqYjI1MFpYaDBMbU5oYkd3b2RHaHBjeWs3SUgxY2JseHVJQ0FnSUdsbUlD
aHZjSFJwYjI1ekxtUmhkR0VwSUh0Y2JpQWdJQ0FnSUdSaGRHRWdQU0JqY21WaGRHVkdjbUZ0WlNo
dmNIUnBiMjV6TG1SaGRHRXBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHWjFibU4wYVc5dUlHVjRaV05K
ZEdWeVlYUnBiMjRvWm1sbGJHUXNJR2x1WkdWNExDQnNZWE4wS1NCN1hHNGdJQ0FnSUNCcFppQW9a
R0YwWVNrZ2UxeHVJQ0FnSUNBZ0lDQmtZWFJoTG10bGVTQTlJR1pwWld4a08xeHVJQ0FnSUNBZ0lD
QmtZWFJoTG1sdVpHVjRJRDBnYVc1a1pYZzdYRzRnSUNBZ0lDQWdJR1JoZEdFdVptbHljM1FnUFNC
cGJtUmxlQ0E5UFQwZ01EdGNiaUFnSUNBZ0lDQWdaR0YwWVM1c1lYTjBJRDBnSVNGc1lYTjBPMXh1
WEc0Z0lDQWdJQ0FnSUdsbUlDaGpiMjUwWlhoMFVHRjBhQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lHUmhk
R0V1WTI5dWRHVjRkRkJoZEdnZ1BTQmpiMjUwWlhoMFVHRjBhQ0FySUdacFpXeGtPMXh1SUNBZ0lD
QWdJQ0I5WEc0Z0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUhKbGRDQTlJSEpsZENBcklHWnVLR052Ym5S
bGVIUmJabWxsYkdSZExDQjdYRzRnSUNBZ0lDQWdJR1JoZEdFNklHUmhkR0VzWEc0Z0lDQWdJQ0Fn
SUdKc2IyTnJVR0Z5WVcxek9pQmliRzlqYTFCaGNtRnRjeWhiWTI5dWRHVjRkRnRtYVdWc1pGMHNJ
R1pwWld4a1hTd2dXMk52Ym5SbGVIUlFZWFJvSUNzZ1ptbGxiR1FzSUc1MWJHeGRLVnh1SUNBZ0lD
QWdmU2s3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdhV1lnS0dOdmJuUmxlSFFnSmlZZ2RIbHdaVzltSUdO
dmJuUmxlSFFnUFQwOUlDZHZZbXBsWTNRbktTQjdYRzRnSUNBZ0lDQnBaaUFvYVhOQmNuSmhlU2hq
YjI1MFpYaDBLU2tnZTF4dUlDQWdJQ0FnSUNCbWIzSWdLR3hsZENCcUlEMGdZMjl1ZEdWNGRDNXNa
VzVuZEdnN0lHa2dQQ0JxT3lCcEt5c3BJSHRjYmlBZ0lDQWdJQ0FnSUNCcFppQW9hU0JwYmlCamIy
NTBaWGgwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JsZUdWalNYUmxjbUYwYVc5dUtHa3NJR2tzSUdr
Z1BUMDlJR052Ym5SbGVIUXViR1Z1WjNSb0lDMGdNU2s3WEc0Z0lDQWdJQ0FnSUNBZ2ZWeHVJQ0Fn
SUNBZ0lDQjlYRzRnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQnNaWFFnY0hKcGIzSkxa
WGs3WEc1Y2JpQWdJQ0FnSUNBZ1ptOXlJQ2hzWlhRZ2EyVjVJR2x1SUdOdmJuUmxlSFFwSUh0Y2Jp
QWdJQ0FnSUNBZ0lDQnBaaUFvWTI5dWRHVjRkQzVvWVhOUGQyNVFjbTl3WlhKMGVTaHJaWGtwS1NC
N1hHNGdJQ0FnSUNBZ0lDQWdJQ0F2THlCWFpTZHlaU0J5ZFc1dWFXNW5JSFJvWlNCcGRHVnlZWFJw
YjI1eklHOXVaU0J6ZEdWd0lHOTFkQ0J2WmlCemVXNWpJSE52SUhkbElHTmhiaUJrWlhSbFkzUmNi
aUFnSUNBZ0lDQWdJQ0FnSUM4dklIUm9aU0JzWVhOMElHbDBaWEpoZEdsdmJpQjNhWFJvYjNWMElH
aGhkbVVnZEc4Z2MyTmhiaUIwYUdVZ2IySnFaV04wSUhSM2FXTmxJR0Z1WkNCamNtVmhkR1ZjYmlB
Z0lDQWdJQ0FnSUNBZ0lDOHZJR0Z1SUdsMFpYSnRaV1JwWVhSbElHdGxlWE1nWVhKeVlYa3VYRzRn
SUNBZ0lDQWdJQ0FnSUNCcFppQW9jSEpwYjNKTFpYa2dJVDA5SUhWdVpHVm1hVzVsWkNrZ2UxeHVJ
Q0FnSUNBZ0lDQWdJQ0FnSUNCbGVHVmpTWFJsY21GMGFXOXVLSEJ5YVc5eVMyVjVMQ0JwSUMwZ01T
azdYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdJQ0J3Y21sdmNrdGxlU0E5SUd0
bGVUdGNiaUFnSUNBZ0lDQWdJQ0FnSUdrckt6dGNiaUFnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0Fn
SUgxY2JpQWdJQ0FnSUNBZ2FXWWdLSEJ5YVc5eVMyVjVJQ0U5UFNCMWJtUmxabWx1WldRcElIdGNi
aUFnSUNBZ0lDQWdJQ0JsZUdWalNYUmxjbUYwYVc5dUtIQnlhVzl5UzJWNUxDQnBJQzBnTVN3Z2RI
SjFaU2s3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc1Y2JpQWdJQ0JwWmlB
b2FTQTlQVDBnTUNrZ2UxeHVJQ0FnSUNBZ2NtVjBJRDBnYVc1MlpYSnpaU2gwYUdsektUdGNiaUFn
SUNCOVhHNWNiaUFnSUNCeVpYUjFjbTRnY21WME8xeHVJQ0I5S1R0Y2JuMWNiaUpkZlE9PQpkaWZm
IC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3Qv
Y2pzL2hhbmRsZWJhcnMvaGVscGVycy9oZWxwZXItbWlzc2luZy5qcyBiL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2px
dWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2Nqcy9oYW5kbGViYXJzL2hlbHBlcnMv
aGVscGVyLW1pc3NpbmcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWZmMzY3YTg5MTM5ZDRiMDQ2NTdhM2Y0MjM1
YTA3OWVlYmNmYmI5ZAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2Rl
X21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2Nqcy9oYW5kbGViYXJzL2hlbHBlcnMvaGVscGVyLW1p
c3NpbmcuanMKQEAgLTAsMCArMSwyNSBAQAorJ3VzZSBzdHJpY3QnOworCitleHBvcnRzLl9fZXNN
b2R1bGUgPSB0cnVlOworLy8gaXN0YW5idWwgaWdub3JlIG5leHQKKworZnVuY3Rpb24gX2ludGVy
b3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9i
aiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfQorCit2YXIgX2V4Y2VwdGlvbiA9IHJlcXVpcmUoJy4u
L2V4Y2VwdGlvbicpOworCit2YXIgX2V4Y2VwdGlvbjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0
KF9leGNlcHRpb24pOworCitleHBvcnRzWydkZWZhdWx0J10gPSBmdW5jdGlvbiAoaW5zdGFuY2Up
IHsKKyAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2hlbHBlck1pc3NpbmcnLCBmdW5jdGlvbiAo
KSAvKiBbYXJncywgXW9wdGlvbnMgKi97CisgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEp
IHsKKyAgICAgIC8vIEEgbWlzc2luZyBmaWVsZCBpbiBhIHt7Zm9vfX0gY29uc3RydWN0LgorICAg
ICAgcmV0dXJuIHVuZGVmaW5lZDsKKyAgICB9IGVsc2UgeworICAgICAgLy8gU29tZW9uZSBpcyBh
Y3R1YWxseSB0cnlpbmcgdG8gY2FsbCBzb21ldGhpbmcsIGJsb3cgdXAuCisgICAgICB0aHJvdyBu
ZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnTWlzc2luZyBoZWxwZXI6ICInICsgYXJndW1lbnRz
W2FyZ3VtZW50cy5sZW5ndGggLSAxXS5uYW1lICsgJyInKTsKKyAgICB9CisgIH0pOworfTsKKwor
bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107CisvLyMgc291cmNlTWFwcGluZ1VS
TD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVky
VnpJanBiSWk0dUx5NHVMeTR1THk0dUwyeHBZaTlvWVc1a2JHVmlZWEp6TDJobGJIQmxjbk12YUdW
c2NHVnlMVzFwYzNOcGJtY3Vhbk1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanM3
T3pzN096dDVRa0ZCYzBJc1kwRkJZenM3T3p0eFFrRkZja0lzVlVGQlV5eFJRVUZSTEVWQlFVVTdR
VUZEYUVNc1ZVRkJVU3hEUVVGRExHTkJRV01zUTBGQlF5eGxRVUZsTEVWQlFVVXNhVU5CUVdkRE8w
RkJRM1pGTEZGQlFVa3NVMEZCVXl4RFFVRkRMRTFCUVUwc1MwRkJTeXhEUVVGRExFVkJRVVU3TzBG
QlJURkNMR0ZCUVU4c1UwRkJVeXhEUVVGRE8wdEJRMnhDTEUxQlFVMDdPMEZCUlV3c1dVRkJUU3d5
UWtGQll5eHRRa0ZCYlVJc1IwRkJSeXhUUVVGVExFTkJRVU1zVTBGQlV5eERRVUZETEUxQlFVMHNS
MEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFZEJRVWNzUjBGQlJ5eERRVUZETEVOQlFV
TTdTMEZEZGtZN1IwRkRSaXhEUVVGRExFTkJRVU03UTBGRFNpSXNJbVpwYkdVaU9pSm9aV3h3WlhJ
dGJXbHpjMmx1Wnk1cWN5SXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQkZlR05s
Y0hScGIyNGdabkp2YlNBbkxpNHZaWGhqWlhCMGFXOXVKenRjYmx4dVpYaHdiM0owSUdSbFptRjFi
SFFnWm5WdVkzUnBiMjRvYVc1emRHRnVZMlVwSUh0Y2JpQWdhVzV6ZEdGdVkyVXVjbVZuYVhOMFpY
SklaV3h3WlhJb0oyaGxiSEJsY2sxcGMzTnBibWNuTENCbWRXNWpkR2x2YmlndktpQmJZWEpuY3l3
Z1hXOXdkR2x2Ym5NZ0tpOHBJSHRjYmlBZ0lDQnBaaUFvWVhKbmRXMWxiblJ6TG14bGJtZDBhQ0E5
UFQwZ01Ta2dlMXh1SUNBZ0lDQWdMeThnUVNCdGFYTnphVzVuSUdacFpXeGtJR2x1SUdFZ2UzdG1i
Mjk5ZlNCamIyNXpkSEoxWTNRdVhHNGdJQ0FnSUNCeVpYUjFjbTRnZFc1a1pXWnBibVZrTzF4dUlD
QWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQXZMeUJUYjIxbGIyNWxJR2x6SUdGamRIVmhiR3g1SUhS
eWVXbHVaeUIwYnlCallXeHNJSE52YldWMGFHbHVaeXdnWW14dmR5QjFjQzVjYmlBZ0lDQWdJSFJv
Y205M0lHNWxkeUJGZUdObGNIUnBiMjRvSjAxcGMzTnBibWNnYUdWc2NHVnlPaUJjSWljZ0t5Qmhj
bWQxYldWdWRITmJZWEpuZFcxbGJuUnpMbXhsYm1kMGFDQXRJREZkTG01aGJXVWdLeUFuWENJbktU
dGNiaUFnSUNCOVhHNGdJSDBwTzF4dWZWeHVJbDE5CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9q
cXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9janMvaGFuZGxlYmFycy9oZWxwZXJz
L2lmLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3Qv
Y2pzL2hhbmRsZWJhcnMvaGVscGVycy9pZi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYWJmYTRiN2IzMzczMTM5
NGIzNTI1MjhjMTYwMTAyZDU2ZTdmYmE0Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
anF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvY2pzL2hhbmRsZWJhcnMvaGVscGVy
cy9pZi5qcwpAQCAtMCwwICsxLDI5IEBACisndXNlIHN0cmljdCc7CisKK2V4cG9ydHMuX19lc01v
ZHVsZSA9IHRydWU7CisKK3ZhciBfdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpOworCitleHBv
cnRzWydkZWZhdWx0J10gPSBmdW5jdGlvbiAoaW5zdGFuY2UpIHsKKyAgaW5zdGFuY2UucmVnaXN0
ZXJIZWxwZXIoJ2lmJywgZnVuY3Rpb24gKGNvbmRpdGlvbmFsLCBvcHRpb25zKSB7CisgICAgaWYg
KF91dGlscy5pc0Z1bmN0aW9uKGNvbmRpdGlvbmFsKSkgeworICAgICAgY29uZGl0aW9uYWwgPSBj
b25kaXRpb25hbC5jYWxsKHRoaXMpOworICAgIH0KKworICAgIC8vIERlZmF1bHQgYmVoYXZpb3Ig
aXMgdG8gcmVuZGVyIHRoZSBwb3NpdGl2ZSBwYXRoIGlmIHRoZSB2YWx1ZSBpcyB0cnV0aHkgYW5k
IG5vdCBlbXB0eS4KKyAgICAvLyBUaGUgYGluY2x1ZGVaZXJvYCBvcHRpb24gbWF5IGJlIHNldCB0
byB0cmVhdCB0aGUgY29uZHRpb25hbCBhcyBwdXJlbHkgbm90IGVtcHR5IGJhc2VkIG9uIHRoZQor
ICAgIC8vIGJlaGF2aW9yIG9mIGlzRW1wdHkuIEVmZmVjdGl2ZWx5IHRoaXMgZGV0ZXJtaW5lcyBp
ZiAwIGlzIGhhbmRsZWQgYnkgdGhlIHBvc2l0aXZlIHBhdGggb3IgbmVnYXRpdmUuCisgICAgaWYg
KCFvcHRpb25zLmhhc2guaW5jbHVkZVplcm8gJiYgIWNvbmRpdGlvbmFsIHx8IF91dGlscy5pc0Vt
cHR5KGNvbmRpdGlvbmFsKSkgeworICAgICAgcmV0dXJuIG9wdGlvbnMuaW52ZXJzZSh0aGlzKTsK
KyAgICB9IGVsc2UgeworICAgICAgcmV0dXJuIG9wdGlvbnMuZm4odGhpcyk7CisgICAgfQorICB9
KTsKKworICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcigndW5sZXNzJywgZnVuY3Rpb24gKGNvbmRp
dGlvbmFsLCBvcHRpb25zKSB7CisgICAgcmV0dXJuIGluc3RhbmNlLmhlbHBlcnNbJ2lmJ10uY2Fs
bCh0aGlzLCBjb25kaXRpb25hbCwgeyBmbjogb3B0aW9ucy5pbnZlcnNlLCBpbnZlcnNlOiBvcHRp
b25zLmZuLCBoYXNoOiBvcHRpb25zLmhhc2ggfSk7CisgIH0pOworfTsKKworbW9kdWxlLmV4cG9y
dHMgPSBleHBvcnRzWydkZWZhdWx0J107CisvLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxp
Y2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSWk0dUx5
NHVMeTR1THk0dUwyeHBZaTlvWVc1a2JHVmlZWEp6TDJobGJIQmxjbk12YVdZdWFuTWlYU3dpYm1G
dFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqczdPenR4UWtGQmEwTXNWVUZCVlRzN2NVSkJSVGRD
TEZWQlFWTXNVVUZCVVN4RlFVRkZPMEZCUTJoRExGVkJRVkVzUTBGQlF5eGpRVUZqTEVOQlFVTXNT
VUZCU1N4RlFVRkZMRlZCUVZNc1YwRkJWeXhGUVVGRkxFOUJRVThzUlVGQlJUdEJRVU16UkN4UlFV
RkpMR3RDUVVGWExGZEJRVmNzUTBGQlF5eEZRVUZGTzBGQlFVVXNhVUpCUVZjc1IwRkJSeXhYUVVG
WExFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMHRCUVVVN096czdPMEZC
UzNSRkxGRkJRVWtzUVVGQlF5eERRVUZETEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1YwRkJW
eXhKUVVGSkxFTkJRVU1zVjBGQlZ5eEpRVUZMTEdWQlFWRXNWMEZCVnl4RFFVRkRMRVZCUVVVN1FV
RkRka1VzWVVGQlR5eFBRVUZQTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVG
RE8wdEJRemxDTEUxQlFVMDdRVUZEVEN4aFFVRlBMRTlCUVU4c1EwRkJReXhGUVVGRkxFTkJRVU1z
U1VGQlNTeERRVUZETEVOQlFVTTdTMEZEZWtJN1IwRkRSaXhEUVVGRExFTkJRVU03TzBGQlJVZ3NW
VUZCVVN4RFFVRkRMR05CUVdNc1EwRkJReXhSUVVGUkxFVkJRVVVzVlVGQlV5eFhRVUZYTEVWQlFV
VXNUMEZCVHl4RlFVRkZPMEZCUXk5RUxGZEJRVThzVVVGQlVTeERRVUZETEU5QlFVOHNRMEZCUXl4
SlFVRkpMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeEZRVUZGTEZkQlFWY3NSVUZC
UlN4RlFVRkRMRVZCUVVVc1JVRkJSU3hQUVVGUExFTkJRVU1zVDBGQlR5eEZRVUZGTEU5QlFVOHNS
VUZCUlN4UFFVRlBMRU5CUVVNc1JVRkJSU3hGUVVGRkxFbEJRVWtzUlVGQlJTeFBRVUZQTEVOQlFV
TXNTVUZCU1N4RlFVRkRMRU5CUVVNc1EwRkJRenRIUVVOMlNDeERRVUZETEVOQlFVTTdRMEZEU2lJ
c0ltWnBiR1VpT2lKcFppNXFjeUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSW1sdGNHOXlkQ0I3
YVhORmJYQjBlU3dnYVhOR2RXNWpkR2x2Ym4wZ1puSnZiU0FuTGk0dmRYUnBiSE1uTzF4dVhHNWxl
SEJ2Y25RZ1pHVm1ZWFZzZENCbWRXNWpkR2x2YmlocGJuTjBZVzVqWlNrZ2UxeHVJQ0JwYm5OMFlX
NWpaUzV5WldkcGMzUmxja2hsYkhCbGNpZ25hV1luTENCbWRXNWpkR2x2YmloamIyNWthWFJwYjI1
aGJDd2diM0IwYVc5dWN5a2dlMXh1SUNBZ0lHbG1JQ2hwYzBaMWJtTjBhVzl1S0dOdmJtUnBkR2x2
Ym1Gc0tTa2dleUJqYjI1a2FYUnBiMjVoYkNBOUlHTnZibVJwZEdsdmJtRnNMbU5oYkd3b2RHaHBj
eWs3SUgxY2JseHVJQ0FnSUM4dklFUmxabUYxYkhRZ1ltVm9ZWFpwYjNJZ2FYTWdkRzhnY21WdVpH
VnlJSFJvWlNCd2IzTnBkR2wyWlNCd1lYUm9JR2xtSUhSb1pTQjJZV3gxWlNCcGN5QjBjblYwYUhr
Z1lXNWtJRzV2ZENCbGJYQjBlUzVjYmlBZ0lDQXZMeUJVYUdVZ1lHbHVZMngxWkdWYVpYSnZZQ0J2
Y0hScGIyNGdiV0Y1SUdKbElITmxkQ0IwYnlCMGNtVmhkQ0IwYUdVZ1kyOXVaSFJwYjI1aGJDQmhj
eUJ3ZFhKbGJIa2dibTkwSUdWdGNIUjVJR0poYzJWa0lHOXVJSFJvWlZ4dUlDQWdJQzh2SUdKbGFH
RjJhVzl5SUc5bUlHbHpSVzF3ZEhrdUlFVm1abVZqZEdsMlpXeDVJSFJvYVhNZ1pHVjBaWEp0YVc1
bGN5QnBaaUF3SUdseklHaGhibVJzWldRZ1lua2dkR2hsSUhCdmMybDBhWFpsSUhCaGRHZ2diM0ln
Ym1WbllYUnBkbVV1WEc0Z0lDQWdhV1lnS0NnaGIzQjBhVzl1Y3k1b1lYTm9MbWx1WTJ4MVpHVmFa
WEp2SUNZbUlDRmpiMjVrYVhScGIyNWhiQ2tnZkh3Z2FYTkZiWEIwZVNoamIyNWthWFJwYjI1aGJD
a3BJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQnZjSFJwYjI1ekxtbHVkbVZ5YzJVb2RHaHBjeWs3WEc0
Z0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlCdmNIUnBiMjV6TG1adUtIUm9hWE1w
TzF4dUlDQWdJSDFjYmlBZ2ZTazdYRzVjYmlBZ2FXNXpkR0Z1WTJVdWNtVm5hWE4wWlhKSVpXeHda
WElvSjNWdWJHVnpjeWNzSUdaMWJtTjBhVzl1S0dOdmJtUnBkR2x2Ym1Gc0xDQnZjSFJwYjI1ektT
QjdYRzRnSUNBZ2NtVjBkWEp1SUdsdWMzUmhibU5sTG1obGJIQmxjbk5iSjJsbUoxMHVZMkZzYkNo
MGFHbHpMQ0JqYjI1a2FYUnBiMjVoYkN3Z2UyWnVPaUJ2Y0hScGIyNXpMbWx1ZG1WeWMyVXNJR2x1
ZG1WeWMyVTZJRzl3ZEdsdmJuTXVabTRzSUdoaGMyZzZJRzl3ZEdsdmJuTXVhR0Z6YUgwcE8xeHVJ
Q0I5S1R0Y2JuMWNiaUpkZlE9PQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVf
bW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvY2pzL2hhbmRsZWJhcnMvaGVscGVycy9sb2cuanMgYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9janMvaGFuZGxl
YmFycy9oZWxwZXJzL2xvZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNDJiNmZjYmUzNzU5MGIyY2MxMWUyZWRk
NzIxMWJhNzQwYTJlYWRmCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25v
ZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvY2pzL2hhbmRsZWJhcnMvaGVscGVycy9sb2cuanMK
QEAgLTAsMCArMSwyNiBAQAorJ3VzZSBzdHJpY3QnOworCitleHBvcnRzLl9fZXNNb2R1bGUgPSB0
cnVlOworCitleHBvcnRzWydkZWZhdWx0J10gPSBmdW5jdGlvbiAoaW5zdGFuY2UpIHsKKyAgaW5z
dGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2xvZycsIGZ1bmN0aW9uICgpIC8qIG1lc3NhZ2UsIG9wdGlv
bnMgKi97CisgICAgdmFyIGFyZ3MgPSBbdW5kZWZpbmVkXSwKKyAgICAgICAgb3B0aW9ucyA9IGFy
Z3VtZW50c1thcmd1bWVudHMubGVuZ3RoIC0gMV07CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBh
cmd1bWVudHMubGVuZ3RoIC0gMTsgaSsrKSB7CisgICAgICBhcmdzLnB1c2goYXJndW1lbnRzW2ld
KTsKKyAgICB9CisKKyAgICB2YXIgbGV2ZWwgPSAxOworICAgIGlmIChvcHRpb25zLmhhc2gubGV2
ZWwgIT0gbnVsbCkgeworICAgICAgbGV2ZWwgPSBvcHRpb25zLmhhc2gubGV2ZWw7CisgICAgfSBl
bHNlIGlmIChvcHRpb25zLmRhdGEgJiYgb3B0aW9ucy5kYXRhLmxldmVsICE9IG51bGwpIHsKKyAg
ICAgIGxldmVsID0gb3B0aW9ucy5kYXRhLmxldmVsOworICAgIH0KKyAgICBhcmdzWzBdID0gbGV2
ZWw7CisKKyAgICBpbnN0YW5jZS5sb2cuYXBwbHkoaW5zdGFuY2UsIGFyZ3MpOworICB9KTsKK307
CisKK21vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOworLy8jIHNvdXJjZU1hcHBp
bmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIz
VnlZMlZ6SWpwYklpNHVMeTR1THk0dUx5NHVMMnhwWWk5b1lXNWtiR1ZpWVhKekwyaGxiSEJsY25N
dmJHOW5MbXB6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3T3pzN2NVSkJRV1Vz
VlVGQlV5eFJRVUZSTEVWQlFVVTdRVUZEYUVNc1ZVRkJVU3hEUVVGRExHTkJRV01zUTBGQlF5eExR
VUZMTEVWQlFVVXNhME5CUVdsRE8wRkJRemxFTEZGQlFVa3NTVUZCU1N4SFFVRkhMRU5CUVVNc1Uw
RkJVeXhEUVVGRE8xRkJRMnhDTEU5QlFVOHNSMEZCUnl4VFFVRlRMRU5CUVVNc1UwRkJVeXhEUVVG
RExFMUJRVTBzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTTVReXhUUVVGTExFbEJRVWtz
UTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1UwRkJVeXhEUVVGRExFMUJR
VTBzUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVN1FVRkROME1zVlVGQlNT
eERRVUZETEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBG
QlF6dExRVU42UWpzN1FVRkZSQ3hSUVVGSkxFdEJRVXNzUjBGQlJ5eERRVUZETEVOQlFVTTdRVUZE
WkN4UlFVRkpMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eEpRVUZKTEVsQlFVa3NS
VUZCUlR0QlFVTTVRaXhYUVVGTExFZEJRVWNzVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFV
RkxMRU5CUVVNN1MwRkROVUlzVFVGQlRTeEpRVUZKTEU5QlFVOHNRMEZCUXl4SlFVRkpMRWxCUVVr
c1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVsQlFVa3NTVUZCU1N4RlFVRkZPMEZC
UTNKRUxGZEJRVXNzUjBGQlJ5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJR
enRMUVVNMVFqdEJRVU5FTEZGQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhMUVVGTExF
TkJRVU03TzBGQlJXaENMRmxCUVZFc1EwRkJReXhIUVVGSExFMUJRVUVzUTBGQldpeFJRVUZSTEVW
QlFWTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1IwRkRlRUlzUTBGQlF5eERRVUZETzBOQlEwb2lMQ0pt
YVd4bElqb2liRzluTG1weklpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2laWGh3YjNKMElHUmxa
bUYxYkhRZ1puVnVZM1JwYjI0b2FXNXpkR0Z1WTJVcElIdGNiaUFnYVc1emRHRnVZMlV1Y21WbmFY
TjBaWEpJWld4d1pYSW9KMnh2Wnljc0lHWjFibU4wYVc5dUtDOHFJRzFsYzNOaFoyVXNJRzl3ZEds
dmJuTWdLaThwSUh0Y2JpQWdJQ0JzWlhRZ1lYSm5jeUE5SUZ0MWJtUmxabWx1WldSZExGeHVJQ0Fn
SUNBZ0lDQnZjSFJwYjI1eklEMGdZWEpuZFcxbGJuUnpXMkZ5WjNWdFpXNTBjeTVzWlc1bmRHZ2dM
U0F4WFR0Y2JpQWdJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUdGeVozVnRaVzUwY3k1c1pX
NW5kR2dnTFNBeE95QnBLeXNwSUh0Y2JpQWdJQ0FnSUdGeVozTXVjSFZ6YUNoaGNtZDFiV1Z1ZEhO
YmFWMHBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHeGxkQ0JzWlhabGJDQTlJREU3WEc0Z0lDQWdhV1ln
S0c5d2RHbHZibk11YUdGemFDNXNaWFpsYkNBaFBTQnVkV3hzS1NCN1hHNGdJQ0FnSUNCc1pYWmxi
Q0E5SUc5d2RHbHZibk11YUdGemFDNXNaWFpsYkR0Y2JpQWdJQ0I5SUdWc2MyVWdhV1lnS0c5d2RH
bHZibk11WkdGMFlTQW1KaUJ2Y0hScGIyNXpMbVJoZEdFdWJHVjJaV3dnSVQwZ2JuVnNiQ2tnZTF4
dUlDQWdJQ0FnYkdWMlpXd2dQU0J2Y0hScGIyNXpMbVJoZEdFdWJHVjJaV3c3WEc0Z0lDQWdmVnh1
SUNBZ0lHRnlaM05iTUYwZ1BTQnNaWFpsYkR0Y2JseHVJQ0FnSUdsdWMzUmhibU5sTG14dlp5Z3VM
aTRnWVhKbmN5azdYRzRnSUgwcE8xeHVmVnh1SWwxOQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
anF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvY2pzL2hhbmRsZWJhcnMvaGVscGVy
cy9sb29rdXAuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMv
ZGlzdC9janMvaGFuZGxlYmFycy9oZWxwZXJzL2xvb2t1cC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNWVmZGNl
YTIzZDFiNjJkZmZlMjJjMmJkYjMwZjhlOTIzNjI2M2E4Ci0tLSAvZGV2L251bGwKKysrIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvY2pzL2hhbmRsZWJh
cnMvaGVscGVycy9sb29rdXAuanMKQEAgLTAsMCArMSwxMiBAQAorJ3VzZSBzdHJpY3QnOworCitl
eHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOworCitleHBvcnRzWydkZWZhdWx0J10gPSBmdW5jdGlv
biAoaW5zdGFuY2UpIHsKKyAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2xvb2t1cCcsIGZ1bmN0
aW9uIChvYmosIGZpZWxkKSB7CisgICAgcmV0dXJuIG9iaiAmJiBvYmpbZmllbGRdOworICB9KTsK
K307CisKK21vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOworLy8jIHNvdXJjZU1h
cHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENK
emIzVnlZMlZ6SWpwYklpNHVMeTR1THk0dUx5NHVMMnhwWWk5b1lXNWtiR1ZpWVhKekwyaGxiSEJs
Y25NdmJHOXZhM1Z3TG1weklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN096czdj
VUpCUVdVc1ZVRkJVeXhSUVVGUkxFVkJRVVU3UVVGRGFFTXNWVUZCVVN4RFFVRkRMR05CUVdNc1Ew
RkJReXhSUVVGUkxFVkJRVVVzVlVGQlV5eEhRVUZITEVWQlFVVXNTMEZCU3l4RlFVRkZPMEZCUTNK
RUxGZEJRVThzUjBGQlJ5eEpRVUZKTEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRI
UVVNeFFpeERRVUZETEVOQlFVTTdRMEZEU2lJc0ltWnBiR1VpT2lKc2IyOXJkWEF1YW5NaUxDSnpi
M1Z5WTJWelEyOXVkR1Z1ZENJNld5SmxlSEJ2Y25RZ1pHVm1ZWFZzZENCbWRXNWpkR2x2YmlocGJu
TjBZVzVqWlNrZ2UxeHVJQ0JwYm5OMFlXNWpaUzV5WldkcGMzUmxja2hsYkhCbGNpZ25iRzl2YTNW
d0p5d2dablZ1WTNScGIyNG9iMkpxTENCbWFXVnNaQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQnZZbW9n
SmlZZ2IySnFXMlpwWld4a1hUdGNiaUFnZlNrN1hHNTlYRzRpWFgwPQpkaWZmIC0tZ2l0IGEvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvY2pzL2hhbmRsZWJh
cnMvaGVscGVycy93aXRoLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5k
bGViYXJzL2Rpc3QvY2pzL2hhbmRsZWJhcnMvaGVscGVycy93aXRoLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMy
M2NkZGVjMWU1ZTAyYWY5NzRlYTQ1ZTA5OTMzNGE3ZmIwYzkyOWUKLS0tIC9kZXYvbnVsbAorKysg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9janMvaGFu
ZGxlYmFycy9oZWxwZXJzL3dpdGguanMKQEAgLTAsMCArMSwzMyBAQAorJ3VzZSBzdHJpY3QnOwor
CitleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOworCit2YXIgX3V0aWxzID0gcmVxdWlyZSgnLi4v
dXRpbHMnKTsKKworZXhwb3J0c1snZGVmYXVsdCddID0gZnVuY3Rpb24gKGluc3RhbmNlKSB7Cisg
IGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCd3aXRoJywgZnVuY3Rpb24gKGNvbnRleHQsIG9wdGlv
bnMpIHsKKyAgICBpZiAoX3V0aWxzLmlzRnVuY3Rpb24oY29udGV4dCkpIHsKKyAgICAgIGNvbnRl
eHQgPSBjb250ZXh0LmNhbGwodGhpcyk7CisgICAgfQorCisgICAgdmFyIGZuID0gb3B0aW9ucy5m
bjsKKworICAgIGlmICghX3V0aWxzLmlzRW1wdHkoY29udGV4dCkpIHsKKyAgICAgIHZhciBkYXRh
ID0gb3B0aW9ucy5kYXRhOworICAgICAgaWYgKG9wdGlvbnMuZGF0YSAmJiBvcHRpb25zLmlkcykg
eworICAgICAgICBkYXRhID0gX3V0aWxzLmNyZWF0ZUZyYW1lKG9wdGlvbnMuZGF0YSk7CisgICAg
ICAgIGRhdGEuY29udGV4dFBhdGggPSBfdXRpbHMuYXBwZW5kQ29udGV4dFBhdGgob3B0aW9ucy5k
YXRhLmNvbnRleHRQYXRoLCBvcHRpb25zLmlkc1swXSk7CisgICAgICB9CisKKyAgICAgIHJldHVy
biBmbihjb250ZXh0LCB7CisgICAgICAgIGRhdGE6IGRhdGEsCisgICAgICAgIGJsb2NrUGFyYW1z
OiBfdXRpbHMuYmxvY2tQYXJhbXMoW2NvbnRleHRdLCBbZGF0YSAmJiBkYXRhLmNvbnRleHRQYXRo
XSkKKyAgICAgIH0pOworICAgIH0gZWxzZSB7CisgICAgICByZXR1cm4gb3B0aW9ucy5pbnZlcnNl
KHRoaXMpOworICAgIH0KKyAgfSk7Cit9OworCittb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2Rl
ZmF1bHQnXTsKKy8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNl
NjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUx5NHVMeTR1TDJ4cFlp
OW9ZVzVrYkdWaVlYSnpMMmhsYkhCbGNuTXZkMmwwYUM1cWN5SmRMQ0p1WVcxbGN5STZXMTBzSW0x
aGNIQnBibWR6SWpvaU96czdPM0ZDUVVFclJTeFZRVUZWT3p0eFFrRkZNVVVzVlVGQlV5eFJRVUZS
TEVWQlFVVTdRVUZEYUVNc1ZVRkJVU3hEUVVGRExHTkJRV01zUTBGQlF5eE5RVUZOTEVWQlFVVXNW
VUZCVXl4UFFVRlBMRVZCUVVVc1QwRkJUeXhGUVVGRk8wRkJRM3BFTEZGQlFVa3NhMEpCUVZjc1Qw
RkJUeXhEUVVGRExFVkJRVVU3UVVGQlJTeGhRVUZQTEVkQlFVY3NUMEZCVHl4RFFVRkRMRWxCUVVr
c1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dExRVUZGT3p0QlFVVXhSQ3hSUVVGSkxFVkJRVVVz
UjBGQlJ5eFBRVUZQTEVOQlFVTXNSVUZCUlN4RFFVRkRPenRCUVVWd1FpeFJRVUZKTEVOQlFVTXNa
VUZCVVN4UFFVRlBMRU5CUVVNc1JVRkJSVHRCUVVOeVFpeFZRVUZKTEVsQlFVa3NSMEZCUnl4UFFV
RlBMRU5CUVVNc1NVRkJTU3hEUVVGRE8wRkJRM2hDTEZWQlFVa3NUMEZCVHl4RFFVRkRMRWxCUVVr
c1NVRkJTU3hQUVVGUExFTkJRVU1zUjBGQlJ5eEZRVUZGTzBGQlF5OUNMRmxCUVVrc1IwRkJSeXh0
UWtGQldTeFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1FVRkRha01zV1VGQlNTeERR
VUZETEZkQlFWY3NSMEZCUnl4NVFrRkJhMElzVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4WFFV
RlhMRVZCUVVVc1QwRkJUeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4
RFFVRkRPMDlCUTJoR096dEJRVVZFTEdGQlFVOHNSVUZCUlN4RFFVRkRMRTlCUVU4c1JVRkJSVHRC
UVVOcVFpeFpRVUZKTEVWQlFVVXNTVUZCU1R0QlFVTldMRzFDUVVGWExFVkJRVVVzYlVKQlFWa3NR
MEZCUXl4UFFVRlBMRU5CUVVNc1JVRkJSU3hEUVVGRExFbEJRVWtzU1VGQlNTeEpRVUZKTEVOQlFV
TXNWMEZCVnl4RFFVRkRMRU5CUVVNN1QwRkRhRVVzUTBGQlF5eERRVUZETzB0QlEwb3NUVUZCVFR0
QlFVTk1MR0ZCUVU4c1QwRkJUeXhEUVVGRExFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZC
UXp0TFFVTTVRanRIUVVOR0xFTkJRVU1zUTBGQlF6dERRVU5LSWl3aVptbHNaU0k2SW5kcGRHZ3Vh
bk1pTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKcGJYQnZjblFnZTJGd2NHVnVaRU52Ym5SbGVI
UlFZWFJvTENCaWJHOWphMUJoY21GdGN5d2dZM0psWVhSbFJuSmhiV1VzSUdselJXMXdkSGtzSUds
elJuVnVZM1JwYjI1OUlHWnliMjBnSnk0dUwzVjBhV3h6Snp0Y2JseHVaWGh3YjNKMElHUmxabUYx
YkhRZ1puVnVZM1JwYjI0b2FXNXpkR0Z1WTJVcElIdGNiaUFnYVc1emRHRnVZMlV1Y21WbmFYTjBa
WEpJWld4d1pYSW9KM2RwZEdnbkxDQm1kVzVqZEdsdmJpaGpiMjUwWlhoMExDQnZjSFJwYjI1ektT
QjdYRzRnSUNBZ2FXWWdLR2x6Um5WdVkzUnBiMjRvWTI5dWRHVjRkQ2twSUhzZ1kyOXVkR1Y0ZENB
OUlHTnZiblJsZUhRdVkyRnNiQ2gwYUdsektUc2dmVnh1WEc0Z0lDQWdiR1YwSUdadUlEMGdiM0Iw
YVc5dWN5NW1ianRjYmx4dUlDQWdJR2xtSUNnaGFYTkZiWEIwZVNoamIyNTBaWGgwS1NrZ2UxeHVJ
Q0FnSUNBZ2JHVjBJR1JoZEdFZ1BTQnZjSFJwYjI1ekxtUmhkR0U3WEc0Z0lDQWdJQ0JwWmlBb2Iz
QjBhVzl1Y3k1a1lYUmhJQ1ltSUc5d2RHbHZibk11YVdSektTQjdYRzRnSUNBZ0lDQWdJR1JoZEdF
Z1BTQmpjbVZoZEdWR2NtRnRaU2h2Y0hScGIyNXpMbVJoZEdFcE8xeHVJQ0FnSUNBZ0lDQmtZWFJo
TG1OdmJuUmxlSFJRWVhSb0lEMGdZWEJ3Wlc1a1EyOXVkR1Y0ZEZCaGRHZ29iM0IwYVc5dWN5NWtZ
WFJoTG1OdmJuUmxlSFJRWVhSb0xDQnZjSFJwYjI1ekxtbGtjMXN3WFNrN1hHNGdJQ0FnSUNCOVhH
NWNiaUFnSUNBZ0lISmxkSFZ5YmlCbWJpaGpiMjUwWlhoMExDQjdYRzRnSUNBZ0lDQWdJR1JoZEdF
NklHUmhkR0VzWEc0Z0lDQWdJQ0FnSUdKc2IyTnJVR0Z5WVcxek9pQmliRzlqYTFCaGNtRnRjeWhi
WTI5dWRHVjRkRjBzSUZ0a1lYUmhJQ1ltSUdSaGRHRXVZMjl1ZEdWNGRGQmhkR2hkS1Z4dUlDQWdJ
Q0FnZlNrN1hHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQnZjSFJwYjI1ekxt
bHVkbVZ5YzJVb2RHaHBjeWs3WEc0Z0lDQWdmVnh1SUNCOUtUdGNibjFjYmlKZGZRPT0KZGlmZiAt
LWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2Nq
cy9oYW5kbGViYXJzL2xvZ2dlci5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMv
aGFuZGxlYmFycy9kaXN0L2Nqcy9oYW5kbGViYXJzL2xvZ2dlci5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43Njc4
MjQ0NWQwMTkxOGE4MjJkNTcwNWM2N2VlZWZiZWM4ZTVjZDg4Ci0tLSAvZGV2L251bGwKKysrIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvY2pzL2hhbmRs
ZWJhcnMvbG9nZ2VyLmpzCkBAIC0wLDAgKzEsNDcgQEAKKyd1c2Ugc3RyaWN0JzsKKworZXhwb3J0
cy5fX2VzTW9kdWxlID0gdHJ1ZTsKKwordmFyIF91dGlscyA9IHJlcXVpcmUoJy4vdXRpbHMnKTsK
KwordmFyIGxvZ2dlciA9IHsKKyAgbWV0aG9kTWFwOiBbJ2RlYnVnJywgJ2luZm8nLCAnd2Fybics
ICdlcnJvciddLAorICBsZXZlbDogJ2luZm8nLAorCisgIC8vIE1hcHMgYSBnaXZlbiBsZXZlbCB2
YWx1ZSB0byB0aGUgYG1ldGhvZE1hcGAgaW5kZXhlcyBhYm92ZS4KKyAgbG9va3VwTGV2ZWw6IGZ1
bmN0aW9uIGxvb2t1cExldmVsKGxldmVsKSB7CisgICAgaWYgKHR5cGVvZiBsZXZlbCA9PT0gJ3N0
cmluZycpIHsKKyAgICAgIHZhciBsZXZlbE1hcCA9IF91dGlscy5pbmRleE9mKGxvZ2dlci5tZXRo
b2RNYXAsIGxldmVsLnRvTG93ZXJDYXNlKCkpOworICAgICAgaWYgKGxldmVsTWFwID49IDApIHsK
KyAgICAgICAgbGV2ZWwgPSBsZXZlbE1hcDsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGxldmVs
ID0gcGFyc2VJbnQobGV2ZWwsIDEwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gbGV2
ZWw7CisgIH0sCisKKyAgLy8gQ2FuIGJlIG92ZXJyaWRkZW4gaW4gdGhlIGhvc3QgZW52aXJvbm1l
bnQKKyAgbG9nOiBmdW5jdGlvbiBsb2cobGV2ZWwpIHsKKyAgICBsZXZlbCA9IGxvZ2dlci5sb29r
dXBMZXZlbChsZXZlbCk7CisKKyAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQn
ICYmIGxvZ2dlci5sb29rdXBMZXZlbChsb2dnZXIubGV2ZWwpIDw9IGxldmVsKSB7CisgICAgICB2
YXIgbWV0aG9kID0gbG9nZ2VyLm1ldGhvZE1hcFtsZXZlbF07CisgICAgICBpZiAoIWNvbnNvbGVb
bWV0aG9kXSkgeworICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnNvbGUKKyAg
ICAgICAgbWV0aG9kID0gJ2xvZyc7CisgICAgICB9CisKKyAgICAgIGZvciAodmFyIF9sZW4gPSBh
cmd1bWVudHMubGVuZ3RoLCBtZXNzYWdlID0gQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDAp
LCBfa2V5ID0gMTsgX2tleSA8IF9sZW47IF9rZXkrKykgeworICAgICAgICBtZXNzYWdlW19rZXkg
LSAxXSA9IGFyZ3VtZW50c1tfa2V5XTsKKyAgICAgIH0KKworICAgICAgY29uc29sZVttZXRob2Rd
LmFwcGx5KGNvbnNvbGUsIG1lc3NhZ2UpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnNv
bGUKKyAgICB9CisgIH0KK307CisKK2V4cG9ydHNbJ2RlZmF1bHQnXSA9IGxvZ2dlcjsKK21vZHVs
ZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOworLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0
YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpw
YklpNHVMeTR1THk0dUwyeHBZaTlvWVc1a2JHVmlZWEp6TDJ4dloyZGxjaTVxY3lKZExDSnVZVzFs
Y3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pT3pzN08zRkNRVUZ6UWl4VFFVRlRPenRCUVVVdlFpeEpR
VUZKTEUxQlFVMHNSMEZCUnp0QlFVTllMRmRCUVZNc1JVRkJSU3hEUVVGRExFOUJRVThzUlVGQlJT
eE5RVUZOTEVWQlFVVXNUVUZCVFN4RlFVRkZMRTlCUVU4c1EwRkJRenRCUVVNM1F5eFBRVUZMTEVW
QlFVVXNUVUZCVFRzN08wRkJSMklzWVVGQlZ5eEZRVUZGTEhGQ1FVRlRMRXRCUVVzc1JVRkJSVHRC
UVVNelFpeFJRVUZKTEU5QlFVOHNTMEZCU3l4TFFVRkxMRkZCUVZFc1JVRkJSVHRCUVVNM1FpeFZR
VUZKTEZGQlFWRXNSMEZCUnl4bFFVRlJMRTFCUVUwc1EwRkJReXhUUVVGVExFVkJRVVVzUzBGQlN5
eERRVUZETEZkQlFWY3NSVUZCUlN4RFFVRkRMRU5CUVVNN1FVRkRPVVFzVlVGQlNTeFJRVUZSTEVs
QlFVa3NRMEZCUXl4RlFVRkZPMEZCUTJwQ0xHRkJRVXNzUjBGQlJ5eFJRVUZSTEVOQlFVTTdUMEZE
YkVJc1RVRkJUVHRCUVVOTUxHRkJRVXNzUjBGQlJ5eFJRVUZSTEVOQlFVTXNTMEZCU3l4RlFVRkZM
RVZCUVVVc1EwRkJReXhEUVVGRE8wOUJRemRDTzB0QlEwWTdPMEZCUlVRc1YwRkJUeXhMUVVGTExF
TkJRVU03UjBGRFpEczdPMEZCUjBRc1MwRkJSeXhGUVVGRkxHRkJRVk1zUzBGQlN5eEZRVUZqTzBG
QlF5OUNMRk5CUVVzc1IwRkJSeXhOUVVGTkxFTkJRVU1zVjBGQlZ5eERRVUZETEV0QlFVc3NRMEZC
UXl4RFFVRkRPenRCUVVWc1F5eFJRVUZKTEU5QlFVOHNUMEZCVHl4TFFVRkxMRmRCUVZjc1NVRkJT
U3hOUVVGTkxFTkJRVU1zVjBGQlZ5eERRVUZETEUxQlFVMHNRMEZCUXl4TFFVRkxMRU5CUVVNc1NV
RkJTU3hMUVVGTExFVkJRVVU3UVVGREwwVXNWVUZCU1N4TlFVRk5MRWRCUVVjc1RVRkJUU3hEUVVG
RExGTkJRVk1zUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXp0QlFVTnlReXhWUVVGSkxFTkJRVU1z
VDBGQlR5eERRVUZETEUxQlFVMHNRMEZCUXl4RlFVRkZPenRCUVVOd1FpeGpRVUZOTEVkQlFVY3NT
MEZCU3l4RFFVRkRPMDlCUTJoQ096dDNRMEZRYlVJc1QwRkJUenRCUVVGUUxHVkJRVTg3T3p0QlFW
RXpRaXhoUVVGUExFTkJRVU1zVFVGQlRTeFBRVUZETEVOQlFXWXNUMEZCVHl4RlFVRlpMRTlCUVU4
c1EwRkJReXhEUVVGRE8wdEJRemRDTzBkQlEwWTdRMEZEUml4RFFVRkRPenR4UWtGRllTeE5RVUZO
SWl3aVptbHNaU0k2SW14dloyZGxjaTVxY3lJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRj
Rzl5ZENCN2FXNWtaWGhQWm4wZ1puSnZiU0FuTGk5MWRHbHNjeWM3WEc1Y2JteGxkQ0JzYjJkblpY
SWdQU0I3WEc0Z0lHMWxkR2h2WkUxaGNEb2dXeWRrWldKMVp5Y3NJQ2RwYm1adkp5d2dKM2RoY200
bkxDQW5aWEp5YjNJblhTeGNiaUFnYkdWMlpXdzZJQ2RwYm1adkp5eGNibHh1SUNBdkx5Qk5ZWEJ6
SUdFZ1oybDJaVzRnYkdWMlpXd2dkbUZzZFdVZ2RHOGdkR2hsSUdCdFpYUm9iMlJOWVhCZ0lHbHVa
R1Y0WlhNZ1lXSnZkbVV1WEc0Z0lHeHZiMnQxY0V4bGRtVnNPaUJtZFc1amRHbHZiaWhzWlhabGJD
a2dlMXh1SUNBZ0lHbG1JQ2gwZVhCbGIyWWdiR1YyWld3Z1BUMDlJQ2R6ZEhKcGJtY25LU0I3WEc0
Z0lDQWdJQ0JzWlhRZ2JHVjJaV3hOWVhBZ1BTQnBibVJsZUU5bUtHeHZaMmRsY2k1dFpYUm9iMlJO
WVhBc0lHeGxkbVZzTG5SdlRHOTNaWEpEWVhObEtDa3BPMXh1SUNBZ0lDQWdhV1lnS0d4bGRtVnNU
V0Z3SUQ0OUlEQXBJSHRjYmlBZ0lDQWdJQ0FnYkdWMlpXd2dQU0JzWlhabGJFMWhjRHRjYmlBZ0lD
QWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJR3hsZG1Wc0lEMGdjR0Z5YzJWSmJuUW9iR1YyWld3
c0lERXdLVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzVjYmlBZ0lDQnlaWFIxY200Z2JHVjJaV3c3
WEc0Z0lIMHNYRzVjYmlBZ0x5OGdRMkZ1SUdKbElHOTJaWEp5YVdSa1pXNGdhVzRnZEdobElHaHZj
M1FnWlc1MmFYSnZibTFsYm5SY2JpQWdiRzluT2lCbWRXNWpkR2x2Ymloc1pYWmxiQ3dnTGk0dWJX
VnpjMkZuWlNrZ2UxeHVJQ0FnSUd4bGRtVnNJRDBnYkc5bloyVnlMbXh2YjJ0MWNFeGxkbVZzS0d4
bGRtVnNLVHRjYmx4dUlDQWdJR2xtSUNoMGVYQmxiMllnWTI5dWMyOXNaU0FoUFQwZ0ozVnVaR1Zt
YVc1bFpDY2dKaVlnYkc5bloyVnlMbXh2YjJ0MWNFeGxkbVZzS0d4dloyZGxjaTVzWlhabGJDa2dQ
RDBnYkdWMlpXd3BJSHRjYmlBZ0lDQWdJR3hsZENCdFpYUm9iMlFnUFNCc2IyZG5aWEl1YldWMGFH
OWtUV0Z3VzJ4bGRtVnNYVHRjYmlBZ0lDQWdJR2xtSUNnaFkyOXVjMjlzWlZ0dFpYUm9iMlJkS1NC
N0lDQWdMeThnWlhOc2FXNTBMV1JwYzJGaWJHVXRiR2x1WlNCdWJ5MWpiMjV6YjJ4bFhHNGdJQ0Fn
SUNBZ0lHMWxkR2h2WkNBOUlDZHNiMmNuTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnWTI5dWMyOXNa
VnR0WlhSb2IyUmRLQzR1TG0xbGMzTmhaMlVwT3lBZ0lDQXZMeUJsYzJ4cGJuUXRaR2x6WVdKc1pT
MXNhVzVsSUc1dkxXTnZibk52YkdWY2JpQWdJQ0I5WEc0Z0lIMWNibjA3WEc1Y2JtVjRjRzl5ZENC
a1pXWmhkV3gwSUd4dloyZGxjanRjYmlKZGZRPT0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2px
dWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2Nqcy9oYW5kbGViYXJzL25vLWNvbmZs
aWN0LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3Qv
Y2pzL2hhbmRsZWJhcnMvbm8tY29uZmxpY3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODgyZmYwMDEwOTQ0YTJi
YzcyMzQyYWVmOTNmMWM0NjFlYTU2YjhlMgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2Nqcy9oYW5kbGViYXJzL25vLWNv
bmZsaWN0LmpzCkBAIC0wLDAgKzEsMjAgQEAKKy8qIGdsb2JhbCB3aW5kb3cgKi8KKyd1c2Ugc3Ry
aWN0JzsKKworZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKKworZXhwb3J0c1snZGVmYXVsdCdd
ID0gZnVuY3Rpb24gKEhhbmRsZWJhcnMpIHsKKyAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8K
KyAgdmFyIHJvb3QgPSB0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJyA/IGdsb2JhbCA6IHdp
bmRvdywKKyAgICAgICRIYW5kbGViYXJzID0gcm9vdC5IYW5kbGViYXJzOworICAvKiBpc3RhbmJ1
bCBpZ25vcmUgbmV4dCAqLworICBIYW5kbGViYXJzLm5vQ29uZmxpY3QgPSBmdW5jdGlvbiAoKSB7
CisgICAgaWYgKHJvb3QuSGFuZGxlYmFycyA9PT0gSGFuZGxlYmFycykgeworICAgICAgcm9vdC5I
YW5kbGViYXJzID0gJEhhbmRsZWJhcnM7CisgICAgfQorICAgIHJldHVybiBIYW5kbGViYXJzOwor
ICB9OworfTsKKworbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107CisvLyMgc291
cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlq
b3pMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMeTR1TDJ4cFlpOW9ZVzVrYkdWaVlYSnpMMjV2TFdO
dmJtWnNhV04wTG1weklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN096czdPM0ZD
UVVObExGVkJRVk1zVlVGQlZTeEZRVUZGT3p0QlFVVnNReXhOUVVGSkxFbEJRVWtzUjBGQlJ5eFBR
VUZQTEUxQlFVMHNTMEZCU3l4WFFVRlhMRWRCUVVjc1RVRkJUU3hIUVVGSExFMUJRVTA3VFVGRGRF
UXNWMEZCVnl4SFFVRkhMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU03TzBGQlJXeERMRmxCUVZV
c1EwRkJReXhWUVVGVkxFZEJRVWNzV1VGQlZ6dEJRVU5xUXl4UlFVRkpMRWxCUVVrc1EwRkJReXhW
UVVGVkxFdEJRVXNzVlVGQlZTeEZRVUZGTzBGQlEyeERMRlZCUVVrc1EwRkJReXhWUVVGVkxFZEJR
VWNzVjBGQlZ5eERRVUZETzB0QlF5OUNPMEZCUTBRc1YwRkJUeXhWUVVGVkxFTkJRVU03UjBGRGJr
SXNRMEZCUXp0RFFVTklJaXdpWm1sc1pTSTZJbTV2TFdOdmJtWnNhV04wTG1weklpd2ljMjkxY21O
bGMwTnZiblJsYm5RaU9sc2lMeW9nWjJ4dlltRnNJSGRwYm1SdmR5QXFMMXh1Wlhod2IzSjBJR1Js
Wm1GMWJIUWdablZ1WTNScGIyNG9TR0Z1Wkd4bFltRnljeWtnZTF4dUlDQXZLaUJwYzNSaGJtSjFi
Q0JwWjI1dmNtVWdibVY0ZENBcUwxeHVJQ0JzWlhRZ2NtOXZkQ0E5SUhSNWNHVnZaaUJuYkc5aVlX
d2dJVDA5SUNkMWJtUmxabWx1WldRbklEOGdaMnh2WW1Gc0lEb2dkMmx1Wkc5M0xGeHVJQ0FnSUNB
Z0pFaGhibVJzWldKaGNuTWdQU0J5YjI5MExraGhibVJzWldKaGNuTTdYRzRnSUM4cUlHbHpkR0Z1
WW5Wc0lHbG5ibTl5WlNCdVpYaDBJQ292WEc0Z0lFaGhibVJzWldKaGNuTXVibTlEYjI1bWJHbGpk
Q0E5SUdaMWJtTjBhVzl1S0NrZ2UxeHVJQ0FnSUdsbUlDaHliMjkwTGtoaGJtUnNaV0poY25NZ1BU
MDlJRWhoYm1Sc1pXSmhjbk1wSUh0Y2JpQWdJQ0FnSUhKdmIzUXVTR0Z1Wkd4bFltRnljeUE5SUNS
SVlXNWtiR1ZpWVhKek8xeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdTR0Z1Wkd4bFltRnljenRj
YmlBZ2ZUdGNibjFjYmlKZGZRPT0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2Rl
X21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2Nqcy9oYW5kbGViYXJzL3J1bnRpbWUuanMgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9janMvaGFuZGxlYmFy
cy9ydW50aW1lLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUyNjUzODBhNmY5YTIzNjEwNGI4Y2Y5ODRlYzA1NjIz
NGM4NDEyNGEKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1
bGVzL2hhbmRsZWJhcnMvZGlzdC9janMvaGFuZGxlYmFycy9ydW50aW1lLmpzCkBAIC0wLDAgKzEs
Mjk3IEBACisndXNlIHN0cmljdCc7CisKK2V4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7CitleHBv
cnRzLmNoZWNrUmV2aXNpb24gPSBjaGVja1JldmlzaW9uOworZXhwb3J0cy50ZW1wbGF0ZSA9IHRl
bXBsYXRlOworZXhwb3J0cy53cmFwUHJvZ3JhbSA9IHdyYXBQcm9ncmFtOworZXhwb3J0cy5yZXNv
bHZlUGFydGlhbCA9IHJlc29sdmVQYXJ0aWFsOworZXhwb3J0cy5pbnZva2VQYXJ0aWFsID0gaW52
b2tlUGFydGlhbDsKK2V4cG9ydHMubm9vcCA9IG5vb3A7CisvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4
dAorCitmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYm
IG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9CisKKy8vIGlzdGFu
YnVsIGlnbm9yZSBuZXh0CisKK2Z1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKG9iaikg
eyBpZiAob2JqICYmIG9iai5fX2VzTW9kdWxlKSB7IHJldHVybiBvYmo7IH0gZWxzZSB7IHZhciBu
ZXdPYmogPSB7fTsgaWYgKG9iaiAhPSBudWxsKSB7IGZvciAodmFyIGtleSBpbiBvYmopIHsgaWYg
KE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIG5ld09ialtr
ZXldID0gb2JqW2tleV07IH0gfSBuZXdPYmpbJ2RlZmF1bHQnXSA9IG9iajsgcmV0dXJuIG5ld09i
ajsgfSB9CisKK3ZhciBfdXRpbHMgPSByZXF1aXJlKCcuL3V0aWxzJyk7CisKK3ZhciBVdGlscyA9
IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKF91dGlscyk7CisKK3ZhciBfZXhjZXB0aW9uID0gcmVx
dWlyZSgnLi9leGNlcHRpb24nKTsKKwordmFyIF9leGNlcHRpb24yID0gX2ludGVyb3BSZXF1aXJl
RGVmYXVsdChfZXhjZXB0aW9uKTsKKwordmFyIF9iYXNlID0gcmVxdWlyZSgnLi9iYXNlJyk7CisK
K2Z1bmN0aW9uIGNoZWNrUmV2aXNpb24oY29tcGlsZXJJbmZvKSB7CisgIHZhciBjb21waWxlclJl
dmlzaW9uID0gY29tcGlsZXJJbmZvICYmIGNvbXBpbGVySW5mb1swXSB8fCAxLAorICAgICAgY3Vy
cmVudFJldmlzaW9uID0gX2Jhc2UuQ09NUElMRVJfUkVWSVNJT047CisKKyAgaWYgKGNvbXBpbGVy
UmV2aXNpb24gIT09IGN1cnJlbnRSZXZpc2lvbikgeworICAgIGlmIChjb21waWxlclJldmlzaW9u
IDwgY3VycmVudFJldmlzaW9uKSB7CisgICAgICB2YXIgcnVudGltZVZlcnNpb25zID0gX2Jhc2Uu
UkVWSVNJT05fQ0hBTkdFU1tjdXJyZW50UmV2aXNpb25dLAorICAgICAgICAgIGNvbXBpbGVyVmVy
c2lvbnMgPSBfYmFzZS5SRVZJU0lPTl9DSEFOR0VTW2NvbXBpbGVyUmV2aXNpb25dOworICAgICAg
dGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ1RlbXBsYXRlIHdhcyBwcmVjb21waWxl
ZCB3aXRoIGFuIG9sZGVyIHZlcnNpb24gb2YgSGFuZGxlYmFycyB0aGFuIHRoZSBjdXJyZW50IHJ1
bnRpbWUuICcgKyAnUGxlYXNlIHVwZGF0ZSB5b3VyIHByZWNvbXBpbGVyIHRvIGEgbmV3ZXIgdmVy
c2lvbiAoJyArIHJ1bnRpbWVWZXJzaW9ucyArICcpIG9yIGRvd25ncmFkZSB5b3VyIHJ1bnRpbWUg
dG8gYW4gb2xkZXIgdmVyc2lvbiAoJyArIGNvbXBpbGVyVmVyc2lvbnMgKyAnKS4nKTsKKyAgICB9
IGVsc2UgeworICAgICAgLy8gVXNlIHRoZSBlbWJlZGRlZCB2ZXJzaW9uIGluZm8gc2luY2UgdGhl
IHJ1bnRpbWUgZG9lc24ndCBrbm93IGFib3V0IHRoaXMgcmV2aXNpb24geWV0CisgICAgICB0aHJv
dyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnVGVtcGxhdGUgd2FzIHByZWNvbXBpbGVkIHdp
dGggYSBuZXdlciB2ZXJzaW9uIG9mIEhhbmRsZWJhcnMgdGhhbiB0aGUgY3VycmVudCBydW50aW1l
LiAnICsgJ1BsZWFzZSB1cGRhdGUgeW91ciBydW50aW1lIHRvIGEgbmV3ZXIgdmVyc2lvbiAoJyAr
IGNvbXBpbGVySW5mb1sxXSArICcpLicpOworICAgIH0KKyAgfQorfQorCitmdW5jdGlvbiB0ZW1w
bGF0ZSh0ZW1wbGF0ZVNwZWMsIGVudikgeworICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLwor
ICBpZiAoIWVudikgeworICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCdObyBl
bnZpcm9ubWVudCBwYXNzZWQgdG8gdGVtcGxhdGUnKTsKKyAgfQorICBpZiAoIXRlbXBsYXRlU3Bl
YyB8fCAhdGVtcGxhdGVTcGVjLm1haW4pIHsKKyAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2Rl
ZmF1bHQnXSgnVW5rbm93biB0ZW1wbGF0ZSBvYmplY3Q6ICcgKyB0eXBlb2YgdGVtcGxhdGVTcGVj
KTsKKyAgfQorCisgIHRlbXBsYXRlU3BlYy5tYWluLmRlY29yYXRvciA9IHRlbXBsYXRlU3BlYy5t
YWluX2Q7CisKKyAgLy8gTm90ZTogVXNpbmcgZW52LlZNIHJlZmVyZW5jZXMgcmF0aGVyIHRoYW4g
bG9jYWwgdmFyIHJlZmVyZW5jZXMgdGhyb3VnaG91dCB0aGlzIHNlY3Rpb24gdG8gYWxsb3cKKyAg
Ly8gZm9yIGV4dGVybmFsIHVzZXJzIHRvIG92ZXJyaWRlIHRoZXNlIGFzIHBzdWVkby1zdXBwb3J0
ZWQgQVBJcy4KKyAgZW52LlZNLmNoZWNrUmV2aXNpb24odGVtcGxhdGVTcGVjLmNvbXBpbGVyKTsK
KworICBmdW5jdGlvbiBpbnZva2VQYXJ0aWFsV3JhcHBlcihwYXJ0aWFsLCBjb250ZXh0LCBvcHRp
b25zKSB7CisgICAgaWYgKG9wdGlvbnMuaGFzaCkgeworICAgICAgY29udGV4dCA9IFV0aWxzLmV4
dGVuZCh7fSwgY29udGV4dCwgb3B0aW9ucy5oYXNoKTsKKyAgICAgIGlmIChvcHRpb25zLmlkcykg
eworICAgICAgICBvcHRpb25zLmlkc1swXSA9IHRydWU7CisgICAgICB9CisgICAgfQorCisgICAg
cGFydGlhbCA9IGVudi5WTS5yZXNvbHZlUGFydGlhbC5jYWxsKHRoaXMsIHBhcnRpYWwsIGNvbnRl
eHQsIG9wdGlvbnMpOworICAgIHZhciByZXN1bHQgPSBlbnYuVk0uaW52b2tlUGFydGlhbC5jYWxs
KHRoaXMsIHBhcnRpYWwsIGNvbnRleHQsIG9wdGlvbnMpOworCisgICAgaWYgKHJlc3VsdCA9PSBu
dWxsICYmIGVudi5jb21waWxlKSB7CisgICAgICBvcHRpb25zLnBhcnRpYWxzW29wdGlvbnMubmFt
ZV0gPSBlbnYuY29tcGlsZShwYXJ0aWFsLCB0ZW1wbGF0ZVNwZWMuY29tcGlsZXJPcHRpb25zLCBl
bnYpOworICAgICAgcmVzdWx0ID0gb3B0aW9ucy5wYXJ0aWFsc1tvcHRpb25zLm5hbWVdKGNvbnRl
eHQsIG9wdGlvbnMpOworICAgIH0KKyAgICBpZiAocmVzdWx0ICE9IG51bGwpIHsKKyAgICAgIGlm
IChvcHRpb25zLmluZGVudCkgeworICAgICAgICB2YXIgbGluZXMgPSByZXN1bHQuc3BsaXQoJ1xu
Jyk7CisgICAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gbGluZXMubGVuZ3RoOyBpIDwgbDsgaSsr
KSB7CisgICAgICAgICAgaWYgKCFsaW5lc1tpXSAmJiBpICsgMSA9PT0gbCkgeworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgfQorCisgICAgICAgICAgbGluZXNbaV0gPSBvcHRpb25zLmlu
ZGVudCArIGxpbmVzW2ldOworICAgICAgICB9CisgICAgICAgIHJlc3VsdCA9IGxpbmVzLmpvaW4o
J1xuJyk7CisgICAgICB9CisgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0gZWxzZSB7CisgICAg
ICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnVGhlIHBhcnRpYWwgJyArIG9wdGlv
bnMubmFtZSArICcgY291bGQgbm90IGJlIGNvbXBpbGVkIHdoZW4gcnVubmluZyBpbiBydW50aW1l
LW9ubHkgbW9kZScpOworICAgIH0KKyAgfQorCisgIC8vIEp1c3QgYWRkIHdhdGVyCisgIHZhciBj
b250YWluZXIgPSB7CisgICAgc3RyaWN0OiBmdW5jdGlvbiBzdHJpY3Qob2JqLCBuYW1lKSB7Cisg
ICAgICBpZiAoIShuYW1lIGluIG9iaikpIHsKKyAgICAgICAgdGhyb3cgbmV3IF9leGNlcHRpb24y
WydkZWZhdWx0J10oJyInICsgbmFtZSArICciIG5vdCBkZWZpbmVkIGluICcgKyBvYmopOworICAg
ICAgfQorICAgICAgcmV0dXJuIG9ialtuYW1lXTsKKyAgICB9LAorICAgIGxvb2t1cDogZnVuY3Rp
b24gbG9va3VwKGRlcHRocywgbmFtZSkgeworICAgICAgdmFyIGxlbiA9IGRlcHRocy5sZW5ndGg7
CisgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgIGlmIChkZXB0
aHNbaV0gJiYgZGVwdGhzW2ldW25hbWVdICE9IG51bGwpIHsKKyAgICAgICAgICByZXR1cm4gZGVw
dGhzW2ldW25hbWVdOworICAgICAgICB9CisgICAgICB9CisgICAgfSwKKyAgICBsYW1iZGE6IGZ1
bmN0aW9uIGxhbWJkYShjdXJyZW50LCBjb250ZXh0KSB7CisgICAgICByZXR1cm4gdHlwZW9mIGN1
cnJlbnQgPT09ICdmdW5jdGlvbicgPyBjdXJyZW50LmNhbGwoY29udGV4dCkgOiBjdXJyZW50Owor
ICAgIH0sCisKKyAgICBlc2NhcGVFeHByZXNzaW9uOiBVdGlscy5lc2NhcGVFeHByZXNzaW9uLAor
ICAgIGludm9rZVBhcnRpYWw6IGludm9rZVBhcnRpYWxXcmFwcGVyLAorCisgICAgZm46IGZ1bmN0
aW9uIGZuKGkpIHsKKyAgICAgIHZhciByZXQgPSB0ZW1wbGF0ZVNwZWNbaV07CisgICAgICByZXQu
ZGVjb3JhdG9yID0gdGVtcGxhdGVTcGVjW2kgKyAnX2QnXTsKKyAgICAgIHJldHVybiByZXQ7Cisg
ICAgfSwKKworICAgIHByb2dyYW1zOiBbXSwKKyAgICBwcm9ncmFtOiBmdW5jdGlvbiBwcm9ncmFt
KGksIGRhdGEsIGRlY2xhcmVkQmxvY2tQYXJhbXMsIGJsb2NrUGFyYW1zLCBkZXB0aHMpIHsKKyAg
ICAgIHZhciBwcm9ncmFtV3JhcHBlciA9IHRoaXMucHJvZ3JhbXNbaV0sCisgICAgICAgICAgZm4g
PSB0aGlzLmZuKGkpOworICAgICAgaWYgKGRhdGEgfHwgZGVwdGhzIHx8IGJsb2NrUGFyYW1zIHx8
IGRlY2xhcmVkQmxvY2tQYXJhbXMpIHsKKyAgICAgICAgcHJvZ3JhbVdyYXBwZXIgPSB3cmFwUHJv
Z3JhbSh0aGlzLCBpLCBmbiwgZGF0YSwgZGVjbGFyZWRCbG9ja1BhcmFtcywgYmxvY2tQYXJhbXMs
IGRlcHRocyk7CisgICAgICB9IGVsc2UgaWYgKCFwcm9ncmFtV3JhcHBlcikgeworICAgICAgICBw
cm9ncmFtV3JhcHBlciA9IHRoaXMucHJvZ3JhbXNbaV0gPSB3cmFwUHJvZ3JhbSh0aGlzLCBpLCBm
bik7CisgICAgICB9CisgICAgICByZXR1cm4gcHJvZ3JhbVdyYXBwZXI7CisgICAgfSwKKworICAg
IGRhdGE6IGZ1bmN0aW9uIGRhdGEodmFsdWUsIGRlcHRoKSB7CisgICAgICB3aGlsZSAodmFsdWUg
JiYgZGVwdGgtLSkgeworICAgICAgICB2YWx1ZSA9IHZhbHVlLl9wYXJlbnQ7CisgICAgICB9Cisg
ICAgICByZXR1cm4gdmFsdWU7CisgICAgfSwKKyAgICBtZXJnZTogZnVuY3Rpb24gbWVyZ2UocGFy
YW0sIGNvbW1vbikgeworICAgICAgdmFyIG9iaiA9IHBhcmFtIHx8IGNvbW1vbjsKKworICAgICAg
aWYgKHBhcmFtICYmIGNvbW1vbiAmJiBwYXJhbSAhPT0gY29tbW9uKSB7CisgICAgICAgIG9iaiA9
IFV0aWxzLmV4dGVuZCh7fSwgY29tbW9uLCBwYXJhbSk7CisgICAgICB9CisKKyAgICAgIHJldHVy
biBvYmo7CisgICAgfSwKKworICAgIG5vb3A6IGVudi5WTS5ub29wLAorICAgIGNvbXBpbGVySW5m
bzogdGVtcGxhdGVTcGVjLmNvbXBpbGVyCisgIH07CisKKyAgZnVuY3Rpb24gcmV0KGNvbnRleHQp
IHsKKyAgICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMSB8fCBhcmd1bWVudHNb
MV0gPT09IHVuZGVmaW5lZCA/IHt9IDogYXJndW1lbnRzWzFdOworCisgICAgdmFyIGRhdGEgPSBv
cHRpb25zLmRhdGE7CisKKyAgICByZXQuX3NldHVwKG9wdGlvbnMpOworICAgIGlmICghb3B0aW9u
cy5wYXJ0aWFsICYmIHRlbXBsYXRlU3BlYy51c2VEYXRhKSB7CisgICAgICBkYXRhID0gaW5pdERh
dGEoY29udGV4dCwgZGF0YSk7CisgICAgfQorICAgIHZhciBkZXB0aHMgPSB1bmRlZmluZWQsCisg
ICAgICAgIGJsb2NrUGFyYW1zID0gdGVtcGxhdGVTcGVjLnVzZUJsb2NrUGFyYW1zID8gW10gOiB1
bmRlZmluZWQ7CisgICAgaWYgKHRlbXBsYXRlU3BlYy51c2VEZXB0aHMpIHsKKyAgICAgIGlmIChv
cHRpb25zLmRlcHRocykgeworICAgICAgICBkZXB0aHMgPSBjb250ZXh0ICE9IG9wdGlvbnMuZGVw
dGhzWzBdID8gW2NvbnRleHRdLmNvbmNhdChvcHRpb25zLmRlcHRocykgOiBvcHRpb25zLmRlcHRo
czsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGRlcHRocyA9IFtjb250ZXh0XTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICBmdW5jdGlvbiBtYWluKGNvbnRleHQgLyosIG9wdGlvbnMqLykgeworICAg
ICAgcmV0dXJuICcnICsgdGVtcGxhdGVTcGVjLm1haW4oY29udGFpbmVyLCBjb250ZXh0LCBjb250
YWluZXIuaGVscGVycywgY29udGFpbmVyLnBhcnRpYWxzLCBkYXRhLCBibG9ja1BhcmFtcywgZGVw
dGhzKTsKKyAgICB9CisgICAgbWFpbiA9IGV4ZWN1dGVEZWNvcmF0b3JzKHRlbXBsYXRlU3BlYy5t
YWluLCBtYWluLCBjb250YWluZXIsIG9wdGlvbnMuZGVwdGhzIHx8IFtdLCBkYXRhLCBibG9ja1Bh
cmFtcyk7CisgICAgcmV0dXJuIG1haW4oY29udGV4dCwgb3B0aW9ucyk7CisgIH0KKyAgcmV0Lmlz
VG9wID0gdHJ1ZTsKKworICByZXQuX3NldHVwID0gZnVuY3Rpb24gKG9wdGlvbnMpIHsKKyAgICBp
ZiAoIW9wdGlvbnMucGFydGlhbCkgeworICAgICAgY29udGFpbmVyLmhlbHBlcnMgPSBjb250YWlu
ZXIubWVyZ2Uob3B0aW9ucy5oZWxwZXJzLCBlbnYuaGVscGVycyk7CisKKyAgICAgIGlmICh0ZW1w
bGF0ZVNwZWMudXNlUGFydGlhbCkgeworICAgICAgICBjb250YWluZXIucGFydGlhbHMgPSBjb250
YWluZXIubWVyZ2Uob3B0aW9ucy5wYXJ0aWFscywgZW52LnBhcnRpYWxzKTsKKyAgICAgIH0KKyAg
ICAgIGlmICh0ZW1wbGF0ZVNwZWMudXNlUGFydGlhbCB8fCB0ZW1wbGF0ZVNwZWMudXNlRGVjb3Jh
dG9ycykgeworICAgICAgICBjb250YWluZXIuZGVjb3JhdG9ycyA9IGNvbnRhaW5lci5tZXJnZShv
cHRpb25zLmRlY29yYXRvcnMsIGVudi5kZWNvcmF0b3JzKTsKKyAgICAgIH0KKyAgICB9IGVsc2Ug
eworICAgICAgY29udGFpbmVyLmhlbHBlcnMgPSBvcHRpb25zLmhlbHBlcnM7CisgICAgICBjb250
YWluZXIucGFydGlhbHMgPSBvcHRpb25zLnBhcnRpYWxzOworICAgICAgY29udGFpbmVyLmRlY29y
YXRvcnMgPSBvcHRpb25zLmRlY29yYXRvcnM7CisgICAgfQorICB9OworCisgIHJldC5fY2hpbGQg
PSBmdW5jdGlvbiAoaSwgZGF0YSwgYmxvY2tQYXJhbXMsIGRlcHRocykgeworICAgIGlmICh0ZW1w
bGF0ZVNwZWMudXNlQmxvY2tQYXJhbXMgJiYgIWJsb2NrUGFyYW1zKSB7CisgICAgICB0aHJvdyBu
ZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnbXVzdCBwYXNzIGJsb2NrIHBhcmFtcycpOworICAg
IH0KKyAgICBpZiAodGVtcGxhdGVTcGVjLnVzZURlcHRocyAmJiAhZGVwdGhzKSB7CisgICAgICB0
aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnbXVzdCBwYXNzIHBhcmVudCBkZXB0aHMn
KTsKKyAgICB9CisKKyAgICByZXR1cm4gd3JhcFByb2dyYW0oY29udGFpbmVyLCBpLCB0ZW1wbGF0
ZVNwZWNbaV0sIGRhdGEsIDAsIGJsb2NrUGFyYW1zLCBkZXB0aHMpOworICB9OworICByZXR1cm4g
cmV0OworfQorCitmdW5jdGlvbiB3cmFwUHJvZ3JhbShjb250YWluZXIsIGksIGZuLCBkYXRhLCBk
ZWNsYXJlZEJsb2NrUGFyYW1zLCBibG9ja1BhcmFtcywgZGVwdGhzKSB7CisgIGZ1bmN0aW9uIHBy
b2coY29udGV4dCkgeworICAgIHZhciBvcHRpb25zID0gYXJndW1lbnRzLmxlbmd0aCA8PSAxIHx8
IGFyZ3VtZW50c1sxXSA9PT0gdW5kZWZpbmVkID8ge30gOiBhcmd1bWVudHNbMV07CisKKyAgICB2
YXIgY3VycmVudERlcHRocyA9IGRlcHRoczsKKyAgICBpZiAoZGVwdGhzICYmIGNvbnRleHQgIT0g
ZGVwdGhzWzBdKSB7CisgICAgICBjdXJyZW50RGVwdGhzID0gW2NvbnRleHRdLmNvbmNhdChkZXB0
aHMpOworICAgIH0KKworICAgIHJldHVybiBmbihjb250YWluZXIsIGNvbnRleHQsIGNvbnRhaW5l
ci5oZWxwZXJzLCBjb250YWluZXIucGFydGlhbHMsIG9wdGlvbnMuZGF0YSB8fCBkYXRhLCBibG9j
a1BhcmFtcyAmJiBbb3B0aW9ucy5ibG9ja1BhcmFtc10uY29uY2F0KGJsb2NrUGFyYW1zKSwgY3Vy
cmVudERlcHRocyk7CisgIH0KKworICBwcm9nID0gZXhlY3V0ZURlY29yYXRvcnMoZm4sIHByb2cs
IGNvbnRhaW5lciwgZGVwdGhzLCBkYXRhLCBibG9ja1BhcmFtcyk7CisKKyAgcHJvZy5wcm9ncmFt
ID0gaTsKKyAgcHJvZy5kZXB0aCA9IGRlcHRocyA/IGRlcHRocy5sZW5ndGggOiAwOworICBwcm9n
LmJsb2NrUGFyYW1zID0gZGVjbGFyZWRCbG9ja1BhcmFtcyB8fCAwOworICByZXR1cm4gcHJvZzsK
K30KKworZnVuY3Rpb24gcmVzb2x2ZVBhcnRpYWwocGFydGlhbCwgY29udGV4dCwgb3B0aW9ucykg
eworICBpZiAoIXBhcnRpYWwpIHsKKyAgICBpZiAob3B0aW9ucy5uYW1lID09PSAnQHBhcnRpYWwt
YmxvY2snKSB7CisgICAgICB2YXIgZGF0YSA9IG9wdGlvbnMuZGF0YTsKKyAgICAgIHdoaWxlIChk
YXRhWydwYXJ0aWFsLWJsb2NrJ10gPT09IG5vb3ApIHsKKyAgICAgICAgZGF0YSA9IGRhdGEuX3Bh
cmVudDsKKyAgICAgIH0KKyAgICAgIHBhcnRpYWwgPSBkYXRhWydwYXJ0aWFsLWJsb2NrJ107Cisg
ICAgICBkYXRhWydwYXJ0aWFsLWJsb2NrJ10gPSBub29wOworICAgIH0gZWxzZSB7CisgICAgICBw
YXJ0aWFsID0gb3B0aW9ucy5wYXJ0aWFsc1tvcHRpb25zLm5hbWVdOworICAgIH0KKyAgfSBlbHNl
IGlmICghcGFydGlhbC5jYWxsICYmICFvcHRpb25zLm5hbWUpIHsKKyAgICAvLyBUaGlzIGlzIGEg
ZHluYW1pYyBwYXJ0aWFsIHRoYXQgcmV0dXJuZWQgYSBzdHJpbmcKKyAgICBvcHRpb25zLm5hbWUg
PSBwYXJ0aWFsOworICAgIHBhcnRpYWwgPSBvcHRpb25zLnBhcnRpYWxzW3BhcnRpYWxdOworICB9
CisgIHJldHVybiBwYXJ0aWFsOworfQorCitmdW5jdGlvbiBpbnZva2VQYXJ0aWFsKHBhcnRpYWws
IGNvbnRleHQsIG9wdGlvbnMpIHsKKyAgb3B0aW9ucy5wYXJ0aWFsID0gdHJ1ZTsKKyAgaWYgKG9w
dGlvbnMuaWRzKSB7CisgICAgb3B0aW9ucy5kYXRhLmNvbnRleHRQYXRoID0gb3B0aW9ucy5pZHNb
MF0gfHwgb3B0aW9ucy5kYXRhLmNvbnRleHRQYXRoOworICB9CisKKyAgdmFyIHBhcnRpYWxCbG9j
ayA9IHVuZGVmaW5lZDsKKyAgaWYgKG9wdGlvbnMuZm4gJiYgb3B0aW9ucy5mbiAhPT0gbm9vcCkg
eworICAgIG9wdGlvbnMuZGF0YSA9IF9iYXNlLmNyZWF0ZUZyYW1lKG9wdGlvbnMuZGF0YSk7Cisg
ICAgcGFydGlhbEJsb2NrID0gb3B0aW9ucy5kYXRhWydwYXJ0aWFsLWJsb2NrJ10gPSBvcHRpb25z
LmZuOworCisgICAgaWYgKHBhcnRpYWxCbG9jay5wYXJ0aWFscykgeworICAgICAgb3B0aW9ucy5w
YXJ0aWFscyA9IFV0aWxzLmV4dGVuZCh7fSwgb3B0aW9ucy5wYXJ0aWFscywgcGFydGlhbEJsb2Nr
LnBhcnRpYWxzKTsKKyAgICB9CisgIH0KKworICBpZiAocGFydGlhbCA9PT0gdW5kZWZpbmVkICYm
IHBhcnRpYWxCbG9jaykgeworICAgIHBhcnRpYWwgPSBwYXJ0aWFsQmxvY2s7CisgIH0KKworICBp
ZiAocGFydGlhbCA9PT0gdW5kZWZpbmVkKSB7CisgICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydk
ZWZhdWx0J10oJ1RoZSBwYXJ0aWFsICcgKyBvcHRpb25zLm5hbWUgKyAnIGNvdWxkIG5vdCBiZSBm
b3VuZCcpOworICB9IGVsc2UgaWYgKHBhcnRpYWwgaW5zdGFuY2VvZiBGdW5jdGlvbikgeworICAg
IHJldHVybiBwYXJ0aWFsKGNvbnRleHQsIG9wdGlvbnMpOworICB9Cit9CisKK2Z1bmN0aW9uIG5v
b3AoKSB7CisgIHJldHVybiAnJzsKK30KKworZnVuY3Rpb24gaW5pdERhdGEoY29udGV4dCwgZGF0
YSkgeworICBpZiAoIWRhdGEgfHwgISgncm9vdCcgaW4gZGF0YSkpIHsKKyAgICBkYXRhID0gZGF0
YSA/IF9iYXNlLmNyZWF0ZUZyYW1lKGRhdGEpIDoge307CisgICAgZGF0YS5yb290ID0gY29udGV4
dDsKKyAgfQorICByZXR1cm4gZGF0YTsKK30KKworZnVuY3Rpb24gZXhlY3V0ZURlY29yYXRvcnMo
Zm4sIHByb2csIGNvbnRhaW5lciwgZGVwdGhzLCBkYXRhLCBibG9ja1BhcmFtcykgeworICBpZiAo
Zm4uZGVjb3JhdG9yKSB7CisgICAgdmFyIHByb3BzID0ge307CisgICAgcHJvZyA9IGZuLmRlY29y
YXRvcihwcm9nLCBwcm9wcywgY29udGFpbmVyLCBkZXB0aHMgJiYgZGVwdGhzWzBdLCBkYXRhLCBi
bG9ja1BhcmFtcywgZGVwdGhzKTsKKyAgICBVdGlscy5leHRlbmQocHJvZywgcHJvcHMpOworICB9
CisgIHJldHVybiBwcm9nOworfQorLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlv
bi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYklpNHVMeTR1THk0
dUwyeHBZaTlvWVc1a2JHVmlZWEp6TDNKMWJuUnBiV1V1YW5NaVhTd2libUZ0WlhNaU9sdGRMQ0p0
WVhCd2FXNW5jeUk2SWpzN096czdPenM3T3pzN096czdPenM3Y1VKQlFYVkNMRk5CUVZNN08wbEJR
WEJDTEV0QlFVczdPM2xDUVVOTExHRkJRV0U3T3pzN2IwSkJRemhDTEZGQlFWRTdPMEZCUld4RkxG
TkJRVk1zWVVGQllTeERRVUZETEZsQlFWa3NSVUZCUlR0QlFVTXhReXhOUVVGTkxHZENRVUZuUWl4
SFFVRkhMRmxCUVZrc1NVRkJTU3haUVVGWkxFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZC
UXp0TlFVTjJSQ3hsUVVGbExEQkNRVUZ2UWl4RFFVRkRPenRCUVVVeFF5eE5RVUZKTEdkQ1FVRm5R
aXhMUVVGTExHVkJRV1VzUlVGQlJUdEJRVU40UXl4UlFVRkpMR2RDUVVGblFpeEhRVUZITEdWQlFX
VXNSVUZCUlR0QlFVTjBReXhWUVVGTkxHVkJRV1VzUjBGQlJ5eDFRa0ZCYVVJc1pVRkJaU3hEUVVG
RE8xVkJRMjVFTEdkQ1FVRm5RaXhIUVVGSExIVkNRVUZwUWl4blFrRkJaMElzUTBGQlF5eERRVUZE
TzBGQlF6VkVMRmxCUVUwc01rSkJRV01zZVVaQlFYbEdMRWRCUTNaSExIRkVRVUZ4UkN4SFFVRkhM
R1ZCUVdVc1IwRkJSeXh0UkVGQmJVUXNSMEZCUnl4blFrRkJaMElzUjBGQlJ5eEpRVUZKTEVOQlFV
TXNRMEZCUXp0TFFVTm9TeXhOUVVGTk96dEJRVVZNTEZsQlFVMHNNa0pCUVdNc2QwWkJRWGRHTEVk
QlEzUkhMR2xFUVVGcFJDeEhRVUZITEZsQlFWa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhK
UVVGSkxFTkJRVU1zUTBGQlF6dExRVU51Ump0SFFVTkdPME5CUTBZN08wRkJSVTBzVTBGQlV5eFJR
VUZSTEVOQlFVTXNXVUZCV1N4RlFVRkZMRWRCUVVjc1JVRkJSVHM3UVVGRk1VTXNUVUZCU1N4RFFV
RkRMRWRCUVVjc1JVRkJSVHRCUVVOU0xGVkJRVTBzTWtKQlFXTXNiVU5CUVcxRExFTkJRVU1zUTBG
QlF6dEhRVU14UkR0QlFVTkVMRTFCUVVrc1EwRkJReXhaUVVGWkxFbEJRVWtzUTBGQlF5eFpRVUZa
TEVOQlFVTXNTVUZCU1N4RlFVRkZPMEZCUTNaRExGVkJRVTBzTWtKQlFXTXNNa0pCUVRKQ0xFZEJR
VWNzVDBGQlR5eFpRVUZaTEVOQlFVTXNRMEZCUXp0SFFVTjRSVHM3UVVGRlJDeGpRVUZaTEVOQlFV
TXNTVUZCU1N4RFFVRkRMRk5CUVZNc1IwRkJSeXhaUVVGWkxFTkJRVU1zVFVGQlRTeERRVUZET3pz
N08wRkJTV3hFTEV0QlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1lVRkJZU3hEUVVGRExGbEJRVmtz
UTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXpzN1FVRkZOVU1zVjBGQlV5eHZRa0ZCYjBJc1EwRkJR
eXhQUVVGUExFVkJRVVVzVDBGQlR5eEZRVUZGTEU5QlFVOHNSVUZCUlR0QlFVTjJSQ3hSUVVGSkxF
OUJRVThzUTBGQlF5eEpRVUZKTEVWQlFVVTdRVUZEYUVJc1lVRkJUeXhIUVVGSExFdEJRVXNzUTBG
QlF5eE5RVUZOTEVOQlFVTXNSVUZCUlN4RlFVRkZMRTlCUVU4c1JVRkJSU3hQUVVGUExFTkJRVU1z
U1VGQlNTeERRVUZETEVOQlFVTTdRVUZEYkVRc1ZVRkJTU3hQUVVGUExFTkJRVU1zUjBGQlJ5eEZR
VUZGTzBGQlEyWXNaVUZCVHl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5
eEpRVUZKTEVOQlFVTTdUMEZEZGtJN1MwRkRSanM3UVVGRlJDeFhRVUZQTEVkQlFVY3NSMEZCUnl4
RFFVRkRMRVZCUVVVc1EwRkJReXhqUVVGakxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NSVUZC
UlN4UFFVRlBMRVZCUVVVc1QwRkJUeXhGUVVGRkxFOUJRVThzUTBGQlF5eERRVUZETzBGQlEzUkZM
RkZCUVVrc1RVRkJUU3hIUVVGSExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNZVUZCWVN4RFFV
RkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFVkJRVVVzVDBGQlR5eEZRVUZGTEU5QlFVOHNSVUZCUlN4
UFFVRlBMRU5CUVVNc1EwRkJRenM3UVVGRmVFVXNVVUZCU1N4TlFVRk5MRWxCUVVrc1NVRkJTU3hK
UVVGSkxFZEJRVWNzUTBGQlF5eFBRVUZQTEVWQlFVVTdRVUZEYWtNc1lVRkJUeXhEUVVGRExGRkJR
VkVzUTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1IwRkJSeXhEUVVGRExF
OUJRVThzUTBGQlF5eFBRVUZQTEVWQlFVVXNXVUZCV1N4RFFVRkRMR1ZCUVdVc1JVRkJSU3hIUVVG
SExFTkJRVU1zUTBGQlF6dEJRVU42Uml4WlFVRk5MRWRCUVVjc1QwRkJUeXhEUVVGRExGRkJRVkVz
UTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1QwRkJUeXhGUVVGRkxFOUJR
VThzUTBGQlF5eERRVUZETzB0QlF6TkVPMEZCUTBRc1VVRkJTU3hOUVVGTkxFbEJRVWtzU1VGQlNT
eEZRVUZGTzBGQlEyeENMRlZCUVVrc1QwRkJUeXhEUVVGRExFMUJRVTBzUlVGQlJUdEJRVU5zUWl4
WlFVRkpMRXRCUVVzc1IwRkJSeXhOUVVGTkxFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NRMEZC
UXl4RFFVRkRPMEZCUXk5Q0xHRkJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZM
RU5CUVVNc1IwRkJSeXhMUVVGTExFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTXNSMEZCUnl4RFFV
RkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3UVVGRE5VTXNZMEZCU1N4RFFVRkRMRXRCUVVz
c1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5C
UVVNc1JVRkJSVHRCUVVNMVFpeHJRa0ZCVFR0WFFVTlFPenRCUVVWRUxHVkJRVXNzUTBGQlF5eERR
VUZETEVOQlFVTXNSMEZCUnl4UFFVRlBMRU5CUVVNc1RVRkJUU3hIUVVGSExFdEJRVXNzUTBGQlF5
eERRVUZETEVOQlFVTXNRMEZCUXp0VFFVTjBRenRCUVVORUxHTkJRVTBzUjBGQlJ5eExRVUZMTEVO
QlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8wOUJRek5DTzBGQlEwUXNZVUZC
VHl4TlFVRk5MRU5CUVVNN1MwRkRaaXhOUVVGTk8wRkJRMHdzV1VGQlRTd3lRa0ZCWXl4alFVRmpM
RWRCUVVjc1QwRkJUeXhEUVVGRExFbEJRVWtzUjBGQlJ5d3dSRUZCTUVRc1EwRkJReXhEUVVGRE8w
dEJRMnBJTzBkQlEwWTdPenRCUVVkRUxFMUJRVWtzVTBGQlV5eEhRVUZITzBGQlEyUXNWVUZCVFN4
RlFVRkZMR2RDUVVGVExFZEJRVWNzUlVGQlJTeEpRVUZKTEVWQlFVVTdRVUZETVVJc1ZVRkJTU3hG
UVVGRkxFbEJRVWtzU1VGQlNTeEhRVUZITEVOQlFVRXNRVUZCUXl4RlFVRkZPMEZCUTJ4Q0xHTkJR
VTBzTWtKQlFXTXNSMEZCUnl4SFFVRkhMRWxCUVVrc1IwRkJSeXh0UWtGQmJVSXNSMEZCUnl4SFFV
RkhMRU5CUVVNc1EwRkJRenRQUVVNM1JEdEJRVU5FTEdGQlFVOHNSMEZCUnl4RFFVRkRMRWxCUVVr
c1EwRkJReXhEUVVGRE8wdEJRMnhDTzBGQlEwUXNWVUZCVFN4RlFVRkZMR2RDUVVGVExFMUJRVTBz
UlVGQlJTeEpRVUZKTEVWQlFVVTdRVUZETjBJc1ZVRkJUU3hIUVVGSExFZEJRVWNzVFVGQlRTeERR
VUZETEUxQlFVMHNRMEZCUXp0QlFVTXhRaXhYUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFV
TXNSVUZCUlN4RFFVRkRMRWRCUVVjc1IwRkJSeXhGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTzBG
QlF6VkNMRmxCUVVrc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEUxQlFVMHNRMEZC
UXl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeEpRVUZKTEVWQlFVVTdR
VUZEZUVNc2FVSkJRVThzVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1Ew
RkJReXhEUVVGRE8xTkJRM2hDTzA5QlEwWTdTMEZEUmp0QlFVTkVMRlZCUVUwc1JVRkJSU3huUWtG
QlV5eFBRVUZQTEVWQlFVVXNUMEZCVHl4RlFVRkZPMEZCUTJwRExHRkJRVThzVDBGQlR5eFBRVUZQ
TEV0QlFVc3NWVUZCVlN4SFFVRkhMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zVDBGQlR5eERR
VUZETEVkQlFVY3NUMEZCVHl4RFFVRkRPMHRCUTNoRk96dEJRVVZFTEc5Q1FVRm5RaXhGUVVGRkxF
dEJRVXNzUTBGQlF5eG5Ra0ZCWjBJN1FVRkRlRU1zYVVKQlFXRXNSVUZCUlN4dlFrRkJiMEk3TzBG
QlJXNURMRTFCUVVVc1JVRkJSU3haUVVGVExFTkJRVU1zUlVGQlJUdEJRVU5rTEZWQlFVa3NSMEZC
Unl4SFFVRkhMRmxCUVZrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU14UWl4VFFVRkhM
RU5CUVVNc1UwRkJVeXhIUVVGSExGbEJRVmtzUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFV
RkRMRU5CUVVNN1FVRkRka01zWVVGQlR5eEhRVUZITEVOQlFVTTdTMEZEV2pzN1FVRkZSQ3haUVVG
UkxFVkJRVVVzUlVGQlJUdEJRVU5hTEZkQlFVOHNSVUZCUlN4cFFrRkJVeXhEUVVGRExFVkJRVVVz
U1VGQlNTeEZRVUZGTEcxQ1FVRnRRaXhGUVVGRkxGZEJRVmNzUlVGQlJTeE5RVUZOTEVWQlFVVTdR
VUZEYmtVc1ZVRkJTU3hqUVVGakxFZEJRVWNzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4RFFV
RkRMRU5CUVVNN1ZVRkRha01zUlVGQlJTeEhRVUZITEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVN
c1EwRkJReXhEUVVGRExFTkJRVU03UVVGRGNFSXNWVUZCU1N4SlFVRkpMRWxCUVVrc1RVRkJUU3hK
UVVGSkxGZEJRVmNzU1VGQlNTeHRRa0ZCYlVJc1JVRkJSVHRCUVVONFJDeHpRa0ZCWXl4SFFVRkhM
RmRCUVZjc1EwRkJReXhKUVVGSkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVXNSVUZCUlN4SlFV
RkpMRVZCUVVVc2JVSkJRVzFDTEVWQlFVVXNWMEZCVnl4RlFVRkZMRTFCUVUwc1EwRkJReXhEUVVG
RE8wOUJRek5HTEUxQlFVMHNTVUZCU1N4RFFVRkRMR05CUVdNc1JVRkJSVHRCUVVNeFFpeHpRa0ZC
WXl4SFFVRkhMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NW
MEZCVnl4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFV
TTdUMEZET1VRN1FVRkRSQ3hoUVVGUExHTkJRV01zUTBGQlF6dExRVU4yUWpzN1FVRkZSQ3hSUVVG
SkxFVkJRVVVzWTBGQlV5eExRVUZMTEVWQlFVVXNTMEZCU3l4RlFVRkZPMEZCUXpOQ0xHRkJRVThz
UzBGQlN5eEpRVUZKTEV0QlFVc3NSVUZCUlN4RlFVRkZPMEZCUTNaQ0xHRkJRVXNzUjBGQlJ5eExR
VUZMTEVOQlFVTXNUMEZCVHl4RFFVRkRPMDlCUTNaQ08wRkJRMFFzWVVGQlR5eExRVUZMTEVOQlFV
TTdTMEZEWkR0QlFVTkVMRk5CUVVzc1JVRkJSU3hsUVVGVExFdEJRVXNzUlVGQlJTeE5RVUZOTEVW
QlFVVTdRVUZETjBJc1ZVRkJTU3hIUVVGSExFZEJRVWNzUzBGQlN5eEpRVUZKTEUxQlFVMHNRMEZC
UXpzN1FVRkZNVUlzVlVGQlNTeExRVUZMTEVsQlFVa3NUVUZCVFN4SlFVRkxMRXRCUVVzc1MwRkJT
eXhOUVVGTkxFRkJRVU1zUlVGQlJUdEJRVU42UXl4WFFVRkhMRWRCUVVjc1MwRkJTeXhEUVVGRExF
MUJRVTBzUTBGQlF5eEZRVUZGTEVWQlFVVXNUVUZCVFN4RlFVRkZMRXRCUVVzc1EwRkJReXhEUVVG
RE8wOUJRM1pET3p0QlFVVkVMR0ZCUVU4c1IwRkJSeXhEUVVGRE8wdEJRMW83TzBGQlJVUXNVVUZC
U1N4RlFVRkZMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zU1VGQlNUdEJRVU5xUWl4blFrRkJX
U3hGUVVGRkxGbEJRVmtzUTBGQlF5eFJRVUZSTzBkQlEzQkRMRU5CUVVNN08wRkJSVVlzVjBGQlV5
eEhRVUZITEVOQlFVTXNUMEZCVHl4RlFVRm5RanRSUVVGa0xFOUJRVThzZVVSQlFVY3NSVUZCUlRz
N1FVRkRhRU1zVVVGQlNTeEpRVUZKTEVkQlFVY3NUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJRenM3
UVVGRmVFSXNUMEZCUnl4RFFVRkRMRTFCUVUwc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF6dEJR
VU53UWl4UlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFOUJRVThzU1VGQlNTeFpRVUZaTEVOQlFV
TXNUMEZCVHl4RlFVRkZPMEZCUXpWRExGVkJRVWtzUjBGQlJ5eFJRVUZSTEVOQlFVTXNUMEZCVHl4
RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRE8wdEJRMmhETzBGQlEwUXNVVUZCU1N4TlFVRk5MRmxC
UVVFN1VVRkRUaXhYUVVGWExFZEJRVWNzV1VGQldTeERRVUZETEdOQlFXTXNSMEZCUnl4RlFVRkZM
RWRCUVVjc1UwRkJVeXhEUVVGRE8wRkJReTlFTEZGQlFVa3NXVUZCV1N4RFFVRkRMRk5CUVZNc1JV
RkJSVHRCUVVNeFFpeFZRVUZKTEU5QlFVOHNRMEZCUXl4TlFVRk5MRVZCUVVVN1FVRkRiRUlzWTBG
QlRTeEhRVUZITEU5QlFVOHNTVUZCU1N4UFFVRlBMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1z
UTBGQlF5eEhRVUZITEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExFOUJR
VThzUTBGQlF5eE5RVUZOTEVOQlFVTXNSMEZCUnl4UFFVRlBMRU5CUVVNc1RVRkJUU3hEUVVGRE8w
OUJRek5HTEUxQlFVMDdRVUZEVEN4alFVRk5MRWRCUVVjc1EwRkJReXhQUVVGUExFTkJRVU1zUTBG
QlF6dFBRVU53UWp0TFFVTkdPenRCUVVWRUxHRkJRVk1zU1VGQlNTeERRVUZETEU5QlFVOHNaMEpC
UVdVN1FVRkRiRU1zWVVGQlR5eEZRVUZGTEVkQlFVY3NXVUZCV1N4RFFVRkRMRWxCUVVrc1EwRkJR
eXhUUVVGVExFVkJRVVVzVDBGQlR5eEZRVUZGTEZOQlFWTXNRMEZCUXl4UFFVRlBMRVZCUVVVc1Uw
RkJVeXhEUVVGRExGRkJRVkVzUlVGQlJTeEpRVUZKTEVWQlFVVXNWMEZCVnl4RlFVRkZMRTFCUVUw
c1EwRkJReXhEUVVGRE8wdEJRM0pJTzBGQlEwUXNVVUZCU1N4SFFVRkhMR2xDUVVGcFFpeERRVUZE
TEZsQlFWa3NRMEZCUXl4SlFVRkpMRVZCUVVVc1NVRkJTU3hGUVVGRkxGTkJRVk1zUlVGQlJTeFBR
VUZQTEVOQlFVTXNUVUZCVFN4SlFVRkpMRVZCUVVVc1JVRkJSU3hKUVVGSkxFVkJRVVVzVjBGQlZ5
eERRVUZETEVOQlFVTTdRVUZEZEVjc1YwRkJUeXhKUVVGSkxFTkJRVU1zVDBGQlR5eEZRVUZGTEU5
QlFVOHNRMEZCUXl4RFFVRkRPMGRCUXk5Q08wRkJRMFFzUzBGQlJ5eERRVUZETEV0QlFVc3NSMEZC
Unl4SlFVRkpMRU5CUVVNN08wRkJSV3BDTEV0QlFVY3NRMEZCUXl4TlFVRk5MRWRCUVVjc1ZVRkJV
eXhQUVVGUExFVkJRVVU3UVVGRE4wSXNVVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhQUVVGUExF
VkJRVVU3UVVGRGNFSXNaVUZCVXl4RFFVRkRMRTlCUVU4c1IwRkJSeXhUUVVGVExFTkJRVU1zUzBG
QlN5eERRVUZETEU5QlFVOHNRMEZCUXl4UFFVRlBMRVZCUVVVc1IwRkJSeXhEUVVGRExFOUJRVThz
UTBGQlF5eERRVUZET3p0QlFVVnNSU3hWUVVGSkxGbEJRVmtzUTBGQlF5eFZRVUZWTEVWQlFVVTdR
VUZETTBJc2FVSkJRVk1zUTBGQlF5eFJRVUZSTEVkQlFVY3NVMEZCVXl4RFFVRkRMRXRCUVVzc1Ew
RkJReXhQUVVGUExFTkJRVU1zVVVGQlVTeEZRVUZGTEVkQlFVY3NRMEZCUXl4UlFVRlJMRU5CUVVN
c1EwRkJRenRQUVVOMFJUdEJRVU5FTEZWQlFVa3NXVUZCV1N4RFFVRkRMRlZCUVZVc1NVRkJTU3ha
UVVGWkxFTkJRVU1zWVVGQllTeEZRVUZGTzBGQlEzcEVMR2xDUVVGVExFTkJRVU1zVlVGQlZTeEhR
VUZITEZOQlFWTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1QwRkJUeXhEUVVGRExGVkJRVlVzUlVGQlJT
eEhRVUZITEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNN1QwRkROVVU3UzBGRFJpeE5RVUZOTzBG
QlEwd3NaVUZCVXl4RFFVRkRMRTlCUVU4c1IwRkJSeXhQUVVGUExFTkJRVU1zVDBGQlR5eERRVUZE
TzBGQlEzQkRMR1ZCUVZNc1EwRkJReXhSUVVGUkxFZEJRVWNzVDBGQlR5eERRVUZETEZGQlFWRXNR
MEZCUXp0QlFVTjBReXhsUVVGVExFTkJRVU1zVlVGQlZTeEhRVUZITEU5QlFVOHNRMEZCUXl4VlFV
RlZMRU5CUVVNN1MwRkRNME03UjBGRFJpeERRVUZET3p0QlFVVkdMRXRCUVVjc1EwRkJReXhOUVVG
TkxFZEJRVWNzVlVGQlV5eERRVUZETEVWQlFVVXNTVUZCU1N4RlFVRkZMRmRCUVZjc1JVRkJSU3hO
UVVGTkxFVkJRVVU3UVVGRGJFUXNVVUZCU1N4WlFVRlpMRU5CUVVNc1kwRkJZeXhKUVVGSkxFTkJR
VU1zVjBGQlZ5eEZRVUZGTzBGQlF5OURMRmxCUVUwc01rSkJRV01zZDBKQlFYZENMRU5CUVVNc1Ew
RkJRenRMUVVNdlF6dEJRVU5FTEZGQlFVa3NXVUZCV1N4RFFVRkRMRk5CUVZNc1NVRkJTU3hEUVVG
RExFMUJRVTBzUlVGQlJUdEJRVU55UXl4WlFVRk5MREpDUVVGakxIbENRVUY1UWl4RFFVRkRMRU5C
UVVNN1MwRkRhRVE3TzBGQlJVUXNWMEZCVHl4WFFVRlhMRU5CUVVNc1UwRkJVeXhGUVVGRkxFTkJR
VU1zUlVGQlJTeFpRVUZaTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hGUVVGRkxF
TkJRVU1zUlVGQlJTeFhRVUZYTEVWQlFVVXNUVUZCVFN4RFFVRkRMRU5CUVVNN1IwRkRha1lzUTBG
QlF6dEJRVU5HTEZOQlFVOHNSMEZCUnl4RFFVRkRPME5CUTFvN08wRkJSVTBzVTBGQlV5eFhRVUZY
TEVOQlFVTXNVMEZCVXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRkxFVkJRVVVzU1VGQlNTeEZR
VUZGTEcxQ1FVRnRRaXhGUVVGRkxGZEJRVmNzUlVGQlJTeE5RVUZOTEVWQlFVVTdRVUZETlVZc1Yw
RkJVeXhKUVVGSkxFTkJRVU1zVDBGQlR5eEZRVUZuUWp0UlFVRmtMRTlCUVU4c2VVUkJRVWNzUlVG
QlJUczdRVUZEYWtNc1VVRkJTU3hoUVVGaExFZEJRVWNzVFVGQlRTeERRVUZETzBGQlF6TkNMRkZC
UVVrc1RVRkJUU3hKUVVGSkxFOUJRVThzU1VGQlNTeE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRM
RVZCUVVVN1FVRkRiRU1zYlVKQlFXRXNSMEZCUnl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExF
MUJRVTBzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0TFFVTXhRenM3UVVGRlJDeFhRVUZQTEVW
QlFVVXNRMEZCUXl4VFFVRlRMRVZCUTJZc1QwRkJUeXhGUVVOUUxGTkJRVk1zUTBGQlF5eFBRVUZQ
TEVWQlFVVXNVMEZCVXl4RFFVRkRMRkZCUVZFc1JVRkRja01zVDBGQlR5eERRVUZETEVsQlFVa3NT
VUZCU1N4SlFVRkpMRVZCUTNCQ0xGZEJRVmNzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4WFFV
RlhMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zVjBGQlZ5eERRVUZETEVWQlEzaEVMR0ZCUVdF
c1EwRkJReXhEUVVGRE8wZEJRM0JDT3p0QlFVVkVMRTFCUVVrc1IwRkJSeXhwUWtGQmFVSXNRMEZC
UXl4RlFVRkZMRVZCUVVVc1NVRkJTU3hGUVVGRkxGTkJRVk1zUlVGQlJTeE5RVUZOTEVWQlFVVXNT
VUZCU1N4RlFVRkZMRmRCUVZjc1EwRkJReXhEUVVGRE96dEJRVVY2UlN4TlFVRkpMRU5CUVVNc1Qw
RkJUeXhIUVVGSExFTkJRVU1zUTBGQlF6dEJRVU5xUWl4TlFVRkpMRU5CUVVNc1MwRkJTeXhIUVVG
SExFMUJRVTBzUjBGQlJ5eE5RVUZOTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJRenRC
UVVONFF5eE5RVUZKTEVOQlFVTXNWMEZCVnl4SFFVRkhMRzFDUVVGdFFpeEpRVUZKTEVOQlFVTXNR
MEZCUXp0QlFVTTFReXhUUVVGUExFbEJRVWtzUTBGQlF6dERRVU5pT3p0QlFVVk5MRk5CUVZNc1kw
RkJZeXhEUVVGRExFOUJRVThzUlVGQlJTeFBRVUZQTEVWQlFVVXNUMEZCVHl4RlFVRkZPMEZCUTNo
RUxFMUJRVWtzUTBGQlF5eFBRVUZQTEVWQlFVVTdRVUZEV2l4UlFVRkpMRTlCUVU4c1EwRkJReXhK
UVVGSkxFdEJRVXNzWjBKQlFXZENMRVZCUVVVN1FVRkRja01zVlVGQlNTeEpRVUZKTEVkQlFVY3NU
MEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJRenRCUVVONFFpeGhRVUZQTEVsQlFVa3NRMEZCUXl4bFFV
RmxMRU5CUVVNc1MwRkJTeXhKUVVGSkxFVkJRVVU3UVVGRGNrTXNXVUZCU1N4SFFVRkhMRWxCUVVr
c1EwRkJReXhQUVVGUExFTkJRVU03VDBGRGNrSTdRVUZEUkN4aFFVRlBMRWRCUVVjc1NVRkJTU3hE
UVVGRExHVkJRV1VzUTBGQlF5eERRVUZETzBGQlEyaERMRlZCUVVrc1EwRkJReXhsUVVGbExFTkJR
VU1zUjBGQlJ5eEpRVUZKTEVOQlFVTTdTMEZET1VJc1RVRkJUVHRCUVVOTUxHRkJRVThzUjBGQlJ5
eFBRVUZQTEVOQlFVTXNVVUZCVVN4RFFVRkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zUTBG
QlF6dExRVU14UXp0SFFVTkdMRTFCUVUwc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eEpRVUZK
TEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1NVRkJTU3hGUVVGRk96dEJRVVY2UXl4WFFVRlBM
RU5CUVVNc1NVRkJTU3hIUVVGSExFOUJRVThzUTBGQlF6dEJRVU4yUWl4WFFVRlBMRWRCUVVjc1Qw
RkJUeXhEUVVGRExGRkJRVkVzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0SFFVTnlRenRCUVVO
RUxGTkJRVThzVDBGQlR5eERRVUZETzBOQlEyaENPenRCUVVWTkxGTkJRVk1zWVVGQllTeERRVUZE
TEU5QlFVOHNSVUZCUlN4UFFVRlBMRVZCUVVVc1QwRkJUeXhGUVVGRk8wRkJRM1pFTEZOQlFVOHNR
MEZCUXl4UFFVRlBMRWRCUVVjc1NVRkJTU3hEUVVGRE8wRkJRM1pDTEUxQlFVa3NUMEZCVHl4RFFV
RkRMRWRCUVVjc1JVRkJSVHRCUVVObUxGZEJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNWMEZCVnl4
SFFVRkhMRTlCUVU4c1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NUMEZC
VHl4RFFVRkRMRWxCUVVrc1EwRkJReXhYUVVGWExFTkJRVU03UjBGRGRrVTdPMEZCUlVRc1RVRkJT
U3haUVVGWkxGbEJRVUVzUTBGQlF6dEJRVU5xUWl4TlFVRkpMRTlCUVU4c1EwRkJReXhGUVVGRkxF
bEJRVWtzVDBGQlR5eERRVUZETEVWQlFVVXNTMEZCU3l4SlFVRkpMRVZCUVVVN1FVRkRja01zVjBG
QlR5eERRVUZETEVsQlFVa3NSMEZCUnl4clFrRkJXU3hQUVVGUExFTkJRVU1zU1VGQlNTeERRVUZE
TEVOQlFVTTdRVUZEZWtNc1owSkJRVmtzUjBGQlJ5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRM
R1ZCUVdVc1EwRkJReXhIUVVGSExFOUJRVThzUTBGQlF5eEZRVUZGTEVOQlFVTTdPMEZCUlRGRUxG
RkJRVWtzV1VGQldTeERRVUZETEZGQlFWRXNSVUZCUlR0QlFVTjZRaXhoUVVGUExFTkJRVU1zVVVG
QlVTeEhRVUZITEV0QlFVc3NRMEZCUXl4TlFVRk5MRU5CUVVNc1JVRkJSU3hGUVVGRkxFOUJRVThz
UTBGQlF5eFJRVUZSTEVWQlFVVXNXVUZCV1N4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRE8wdEJR
emxGTzBkQlEwWTdPMEZCUlVRc1RVRkJTU3hQUVVGUExFdEJRVXNzVTBGQlV5eEpRVUZKTEZsQlFW
a3NSVUZCUlR0QlFVTjZReXhYUVVGUExFZEJRVWNzV1VGQldTeERRVUZETzBkQlEzaENPenRCUVVW
RUxFMUJRVWtzVDBGQlR5eExRVUZMTEZOQlFWTXNSVUZCUlR0QlFVTjZRaXhWUVVGTkxESkNRVUZq
TEdOQlFXTXNSMEZCUnl4UFFVRlBMRU5CUVVNc1NVRkJTU3hIUVVGSExIRkNRVUZ4UWl4RFFVRkRM
RU5CUVVNN1IwRkROVVVzVFVGQlRTeEpRVUZKTEU5QlFVOHNXVUZCV1N4UlFVRlJMRVZCUVVVN1FV
RkRkRU1zVjBGQlR5eFBRVUZQTEVOQlFVTXNUMEZCVHl4RlFVRkZMRTlCUVU4c1EwRkJReXhEUVVG
RE8wZEJRMnhETzBOQlEwWTdPMEZCUlUwc1UwRkJVeXhKUVVGSkxFZEJRVWM3UVVGQlJTeFRRVUZQ
TEVWQlFVVXNRMEZCUXp0RFFVRkZPenRCUVVWeVF5eFRRVUZUTEZGQlFWRXNRMEZCUXl4UFFVRlBM
RVZCUVVVc1NVRkJTU3hGUVVGRk8wRkJReTlDTEUxQlFVa3NRMEZCUXl4SlFVRkpMRWxCUVVrc1JV
RkJSU3hOUVVGTkxFbEJRVWtzU1VGQlNTeERRVUZCTEVGQlFVTXNSVUZCUlR0QlFVTTVRaXhSUVVG
SkxFZEJRVWNzU1VGQlNTeEhRVUZITEd0Q1FVRlpMRWxCUVVrc1EwRkJReXhIUVVGSExFVkJRVVVz
UTBGQlF6dEJRVU55UXl4UlFVRkpMRU5CUVVNc1NVRkJTU3hIUVVGSExFOUJRVThzUTBGQlF6dEhR
VU55UWp0QlFVTkVMRk5CUVU4c1NVRkJTU3hEUVVGRE8wTkJRMkk3TzBGQlJVUXNVMEZCVXl4cFFr
RkJhVUlzUTBGQlF5eEZRVUZGTEVWQlFVVXNTVUZCU1N4RlFVRkZMRk5CUVZNc1JVRkJSU3hOUVVG
TkxFVkJRVVVzU1VGQlNTeEZRVUZGTEZkQlFWY3NSVUZCUlR0QlFVTjZSU3hOUVVGSkxFVkJRVVVz
UTBGQlF5eFRRVUZUTEVWQlFVVTdRVUZEYUVJc1VVRkJTU3hMUVVGTExFZEJRVWNzUlVGQlJTeERR
VUZETzBGQlEyWXNVVUZCU1N4SFFVRkhMRVZCUVVVc1EwRkJReXhUUVVGVExFTkJRVU1zU1VGQlNT
eEZRVUZGTEV0QlFVc3NSVUZCUlN4VFFVRlRMRVZCUVVVc1RVRkJUU3hKUVVGSkxFMUJRVTBzUTBG
QlF5eERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRVZCUVVVc1YwRkJWeXhGUVVGRkxFMUJRVTBz
UTBGQlF5eERRVUZETzBGQlF6VkdMRk5CUVVzc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeEZR
VUZGTEV0QlFVc3NRMEZCUXl4RFFVRkRPMGRCUXpOQ08wRkJRMFFzVTBGQlR5eEpRVUZKTEVOQlFV
TTdRMEZEWWlJc0ltWnBiR1VpT2lKeWRXNTBhVzFsTG1weklpd2ljMjkxY21ObGMwTnZiblJsYm5R
aU9sc2lhVzF3YjNKMElDb2dZWE1nVlhScGJITWdabkp2YlNBbkxpOTFkR2xzY3ljN1hHNXBiWEJ2
Y25RZ1JYaGpaWEIwYVc5dUlHWnliMjBnSnk0dlpYaGpaWEIwYVc5dUp6dGNibWx0Y0c5eWRDQjdJ
RU5QVFZCSlRFVlNYMUpGVmtsVFNVOU9MQ0JTUlZaSlUwbFBUbDlEU0VGT1IwVlRMQ0JqY21WaGRH
VkdjbUZ0WlNCOUlHWnliMjBnSnk0dlltRnpaU2M3WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlC
amFHVmphMUpsZG1semFXOXVLR052YlhCcGJHVnlTVzVtYnlrZ2UxeHVJQ0JqYjI1emRDQmpiMjF3
YVd4bGNsSmxkbWx6YVc5dUlEMGdZMjl0Y0dsc1pYSkpibVp2SUNZbUlHTnZiWEJwYkdWeVNXNW1i
MXN3WFNCOGZDQXhMRnh1SUNBZ0lDQWdJQ0JqZFhKeVpXNTBVbVYyYVhOcGIyNGdQU0JEVDAxUVNV
eEZVbDlTUlZaSlUwbFBUanRjYmx4dUlDQnBaaUFvWTI5dGNHbHNaWEpTWlhacGMybHZiaUFoUFQw
Z1kzVnljbVZ1ZEZKbGRtbHphVzl1S1NCN1hHNGdJQ0FnYVdZZ0tHTnZiWEJwYkdWeVVtVjJhWE5w
YjI0Z1BDQmpkWEp5Wlc1MFVtVjJhWE5wYjI0cElIdGNiaUFnSUNBZ0lHTnZibk4wSUhKMWJuUnBi
V1ZXWlhKemFXOXVjeUE5SUZKRlZrbFRTVTlPWDBOSVFVNUhSVk5iWTNWeWNtVnVkRkpsZG1semFX
OXVYU3hjYmlBZ0lDQWdJQ0FnSUNBZ0lHTnZiWEJwYkdWeVZtVnljMmx2Ym5NZ1BTQlNSVlpKVTBs
UFRsOURTRUZPUjBWVFcyTnZiWEJwYkdWeVVtVjJhWE5wYjI1ZE8xeHVJQ0FnSUNBZ2RHaHliM2Nn
Ym1WM0lFVjRZMlZ3ZEdsdmJpZ25WR1Z0Y0d4aGRHVWdkMkZ6SUhCeVpXTnZiWEJwYkdWa0lIZHBk
R2dnWVc0Z2IyeGtaWElnZG1WeWMybHZiaUJ2WmlCSVlXNWtiR1ZpWVhKeklIUm9ZVzRnZEdobElH
TjFjbkpsYm5RZ2NuVnVkR2x0WlM0Z0p5QXJYRzRnSUNBZ0lDQWdJQ0FnSUNBblVHeGxZWE5sSUhW
d1pHRjBaU0I1YjNWeUlIQnlaV052YlhCcGJHVnlJSFJ2SUdFZ2JtVjNaWElnZG1WeWMybHZiaUFv
SnlBcklISjFiblJwYldWV1pYSnphVzl1Y3lBcklDY3BJRzl5SUdSdmQyNW5jbUZrWlNCNWIzVnlJ
SEoxYm5ScGJXVWdkRzhnWVc0Z2IyeGtaWElnZG1WeWMybHZiaUFvSnlBcklHTnZiWEJwYkdWeVZt
VnljMmx2Ym5NZ0t5QW5LUzRuS1R0Y2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdMeThnVlhO
bElIUm9aU0JsYldKbFpHUmxaQ0IyWlhKemFXOXVJR2x1Wm04Z2MybHVZMlVnZEdobElISjFiblJw
YldVZ1pHOWxjMjRuZENCcmJtOTNJR0ZpYjNWMElIUm9hWE1nY21WMmFYTnBiMjRnZVdWMFhHNGdJ
Q0FnSUNCMGFISnZkeUJ1WlhjZ1JYaGpaWEIwYVc5dUtDZFVaVzF3YkdGMFpTQjNZWE1nY0hKbFky
OXRjR2xzWldRZ2QybDBhQ0JoSUc1bGQyVnlJSFpsY25OcGIyNGdiMllnU0dGdVpHeGxZbUZ5Y3lC
MGFHRnVJSFJvWlNCamRYSnlaVzUwSUhKMWJuUnBiV1V1SUNjZ0sxeHVJQ0FnSUNBZ0lDQWdJQ0Fn
SjFCc1pXRnpaU0IxY0dSaGRHVWdlVzkxY2lCeWRXNTBhVzFsSUhSdklHRWdibVYzWlhJZ2RtVnlj
Mmx2YmlBb0p5QXJJR052YlhCcGJHVnlTVzVtYjFzeFhTQXJJQ2NwTGljcE8xeHVJQ0FnSUgxY2Jp
QWdmVnh1ZlZ4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2RHVnRjR3hoZEdVb2RHVnRjR3hoZEdW
VGNHVmpMQ0JsYm5ZcElIdGNiaUFnTHlvZ2FYTjBZVzVpZFd3Z2FXZHViM0psSUc1bGVIUWdLaTlj
YmlBZ2FXWWdLQ0ZsYm5ZcElIdGNiaUFnSUNCMGFISnZkeUJ1WlhjZ1JYaGpaWEIwYVc5dUtDZE9i
eUJsYm5acGNtOXViV1Z1ZENCd1lYTnpaV1FnZEc4Z2RHVnRjR3hoZEdVbktUdGNiaUFnZlZ4dUlD
QnBaaUFvSVhSbGJYQnNZWFJsVTNCbFl5QjhmQ0FoZEdWdGNHeGhkR1ZUY0dWakxtMWhhVzRwSUh0
Y2JpQWdJQ0IwYUhKdmR5QnVaWGNnUlhoalpYQjBhVzl1S0NkVmJtdHViM2R1SUhSbGJYQnNZWFJs
SUc5aWFtVmpkRG9nSnlBcklIUjVjR1Z2WmlCMFpXMXdiR0YwWlZOd1pXTXBPMXh1SUNCOVhHNWNi
aUFnZEdWdGNHeGhkR1ZUY0dWakxtMWhhVzR1WkdWamIzSmhkRzl5SUQwZ2RHVnRjR3hoZEdWVGNH
VmpMbTFoYVc1ZlpEdGNibHh1SUNBdkx5Qk9iM1JsT2lCVmMybHVaeUJsYm5ZdVZrMGdjbVZtWlhK
bGJtTmxjeUJ5WVhSb1pYSWdkR2hoYmlCc2IyTmhiQ0IyWVhJZ2NtVm1aWEpsYm1ObGN5QjBhSEp2
ZFdkb2IzVjBJSFJvYVhNZ2MyVmpkR2x2YmlCMGJ5QmhiR3h2ZDF4dUlDQXZMeUJtYjNJZ1pYaDBa
WEp1WVd3Z2RYTmxjbk1nZEc4Z2IzWmxjbkpwWkdVZ2RHaGxjMlVnWVhNZ2NITjFaV1J2TFhOMWNI
QnZjblJsWkNCQlVFbHpMbHh1SUNCbGJuWXVWazB1WTJobFkydFNaWFpwYzJsdmJpaDBaVzF3YkdG
MFpWTndaV011WTI5dGNHbHNaWElwTzF4dVhHNGdJR1oxYm1OMGFXOXVJR2x1ZG05clpWQmhjblJw
WVd4WGNtRndjR1Z5S0hCaGNuUnBZV3dzSUdOdmJuUmxlSFFzSUc5d2RHbHZibk1wSUh0Y2JpQWdJ
Q0JwWmlBb2IzQjBhVzl1Y3k1b1lYTm9LU0I3WEc0Z0lDQWdJQ0JqYjI1MFpYaDBJRDBnVlhScGJI
TXVaWGgwWlc1a0tIdDlMQ0JqYjI1MFpYaDBMQ0J2Y0hScGIyNXpMbWhoYzJncE8xeHVJQ0FnSUNB
Z2FXWWdLRzl3ZEdsdmJuTXVhV1J6S1NCN1hHNGdJQ0FnSUNBZ0lHOXdkR2x2Ym5NdWFXUnpXekJk
SUQwZ2RISjFaVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzVjYmlBZ0lDQndZWEowYVdGc0lEMGda
VzUyTGxaTkxuSmxjMjlzZG1WUVlYSjBhV0ZzTG1OaGJHd29kR2hwY3l3Z2NHRnlkR2xoYkN3Z1ky
OXVkR1Y0ZEN3Z2IzQjBhVzl1Y3lrN1hHNGdJQ0FnYkdWMElISmxjM1ZzZENBOUlHVnVkaTVXVFM1
cGJuWnZhMlZRWVhKMGFXRnNMbU5oYkd3b2RHaHBjeXdnY0dGeWRHbGhiQ3dnWTI5dWRHVjRkQ3dn
YjNCMGFXOXVjeWs3WEc1Y2JpQWdJQ0JwWmlBb2NtVnpkV3gwSUQwOUlHNTFiR3dnSmlZZ1pXNTJM
bU52YlhCcGJHVXBJSHRjYmlBZ0lDQWdJRzl3ZEdsdmJuTXVjR0Z5ZEdsaGJITmJiM0IwYVc5dWN5
NXVZVzFsWFNBOUlHVnVkaTVqYjIxd2FXeGxLSEJoY25ScFlXd3NJSFJsYlhCc1lYUmxVM0JsWXk1
amIyMXdhV3hsY2s5d2RHbHZibk1zSUdWdWRpazdYRzRnSUNBZ0lDQnlaWE4xYkhRZ1BTQnZjSFJw
YjI1ekxuQmhjblJwWVd4elcyOXdkR2x2Ym5NdWJtRnRaVjBvWTI5dWRHVjRkQ3dnYjNCMGFXOXVj
eWs3WEc0Z0lDQWdmVnh1SUNBZ0lHbG1JQ2h5WlhOMWJIUWdJVDBnYm5Wc2JDa2dlMXh1SUNBZ0lD
QWdhV1lnS0c5d2RHbHZibk11YVc1a1pXNTBLU0I3WEc0Z0lDQWdJQ0FnSUd4bGRDQnNhVzVsY3lB
OUlISmxjM1ZzZEM1emNHeHBkQ2duWEZ4dUp5azdYRzRnSUNBZ0lDQWdJR1p2Y2lBb2JHVjBJR2tn
UFNBd0xDQnNJRDBnYkdsdVpYTXViR1Z1WjNSb095QnBJRHdnYkRzZ2FTc3JLU0I3WEc0Z0lDQWdJ
Q0FnSUNBZ2FXWWdLQ0ZzYVc1bGMxdHBYU0FtSmlCcElDc2dNU0E5UFQwZ2JDa2dlMXh1SUNBZ0lD
QWdJQ0FnSUNBZ1luSmxZV3M3WEc0Z0lDQWdJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQWdJQ0FnYkds
dVpYTmJhVjBnUFNCdmNIUnBiMjV6TG1sdVpHVnVkQ0FySUd4cGJtVnpXMmxkTzF4dUlDQWdJQ0Fn
SUNCOVhHNGdJQ0FnSUNBZ0lISmxjM1ZzZENBOUlHeHBibVZ6TG1wdmFXNG9KMXhjYmljcE8xeHVJ
Q0FnSUNBZ2ZWeHVJQ0FnSUNBZ2NtVjBkWEp1SUhKbGMzVnNkRHRjYmlBZ0lDQjlJR1ZzYzJVZ2Ux
eHVJQ0FnSUNBZ2RHaHliM2NnYm1WM0lFVjRZMlZ3ZEdsdmJpZ25WR2hsSUhCaGNuUnBZV3dnSnlB
cklHOXdkR2x2Ym5NdWJtRnRaU0FySUNjZ1kyOTFiR1FnYm05MElHSmxJR052YlhCcGJHVmtJSGRv
Wlc0Z2NuVnVibWx1WnlCcGJpQnlkVzUwYVcxbExXOXViSGtnYlc5a1pTY3BPMXh1SUNBZ0lIMWNi
aUFnZlZ4dVhHNGdJQzh2SUVwMWMzUWdZV1JrSUhkaGRHVnlYRzRnSUd4bGRDQmpiMjUwWVdsdVpY
SWdQU0I3WEc0Z0lDQWdjM1J5YVdOME9pQm1kVzVqZEdsdmJpaHZZbW9zSUc1aGJXVXBJSHRjYmlB
Z0lDQWdJR2xtSUNnaEtHNWhiV1VnYVc0Z2IySnFLU2tnZTF4dUlDQWdJQ0FnSUNCMGFISnZkeUJ1
WlhjZ1JYaGpaWEIwYVc5dUtDZGNJaWNnS3lCdVlXMWxJQ3NnSjF3aUlHNXZkQ0JrWldacGJtVmtJ
R2x1SUNjZ0t5QnZZbW9wTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnY21WMGRYSnVJRzlpYWx0dVlX
MWxYVHRjYmlBZ0lDQjlMRnh1SUNBZ0lHeHZiMnQxY0RvZ1puVnVZM1JwYjI0b1pHVndkR2h6TENC
dVlXMWxLU0I3WEc0Z0lDQWdJQ0JqYjI1emRDQnNaVzRnUFNCa1pYQjBhSE11YkdWdVozUm9PMXh1
SUNBZ0lDQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0JzWlc0N0lHa3JLeWtnZTF4dUlDQWdJ
Q0FnSUNCcFppQW9aR1Z3ZEdoelcybGRJQ1ltSUdSbGNIUm9jMXRwWFZ0dVlXMWxYU0FoUFNCdWRX
eHNLU0I3WEc0Z0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUdSbGNIUm9jMXRwWFZ0dVlXMWxYVHRjYmlB
Z0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnZlZ4dUlDQWdJSDBzWEc0Z0lDQWdiR0Z0WW1SaE9pQm1kVzVq
ZEdsdmJpaGpkWEp5Wlc1MExDQmpiMjUwWlhoMEtTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z2RIbHda
VzltSUdOMWNuSmxiblFnUFQwOUlDZG1kVzVqZEdsdmJpY2dQeUJqZFhKeVpXNTBMbU5oYkd3b1ky
OXVkR1Y0ZENrZ09pQmpkWEp5Wlc1ME8xeHVJQ0FnSUgwc1hHNWNiaUFnSUNCbGMyTmhjR1ZGZUhC
eVpYTnphVzl1T2lCVmRHbHNjeTVsYzJOaGNHVkZlSEJ5WlhOemFXOXVMRnh1SUNBZ0lHbHVkbTly
WlZCaGNuUnBZV3c2SUdsdWRtOXJaVkJoY25ScFlXeFhjbUZ3Y0dWeUxGeHVYRzRnSUNBZ1ptNDZJ
R1oxYm1OMGFXOXVLR2twSUh0Y2JpQWdJQ0FnSUd4bGRDQnlaWFFnUFNCMFpXMXdiR0YwWlZOd1pX
TmJhVjA3WEc0Z0lDQWdJQ0J5WlhRdVpHVmpiM0poZEc5eUlEMGdkR1Z0Y0d4aGRHVlRjR1ZqVzJr
Z0t5QW5YMlFuWFR0Y2JpQWdJQ0FnSUhKbGRIVnliaUJ5WlhRN1hHNGdJQ0FnZlN4Y2JseHVJQ0Fn
SUhCeWIyZHlZVzF6T2lCYlhTeGNiaUFnSUNCd2NtOW5jbUZ0T2lCbWRXNWpkR2x2YmlocExDQmtZ
WFJoTENCa1pXTnNZWEpsWkVKc2IyTnJVR0Z5WVcxekxDQmliRzlqYTFCaGNtRnRjeXdnWkdWd2RH
aHpLU0I3WEc0Z0lDQWdJQ0JzWlhRZ2NISnZaM0poYlZkeVlYQndaWElnUFNCMGFHbHpMbkJ5YjJk
eVlXMXpXMmxkTEZ4dUlDQWdJQ0FnSUNBZ0lHWnVJRDBnZEdocGN5NW1iaWhwS1R0Y2JpQWdJQ0Fn
SUdsbUlDaGtZWFJoSUh4OElHUmxjSFJvY3lCOGZDQmliRzlqYTFCaGNtRnRjeUI4ZkNCa1pXTnNZ
WEpsWkVKc2IyTnJVR0Z5WVcxektTQjdYRzRnSUNBZ0lDQWdJSEJ5YjJkeVlXMVhjbUZ3Y0dWeUlE
MGdkM0poY0ZCeWIyZHlZVzBvZEdocGN5d2dhU3dnWm00c0lHUmhkR0VzSUdSbFkyeGhjbVZrUW14
dlkydFFZWEpoYlhNc0lHSnNiMk5yVUdGeVlXMXpMQ0JrWlhCMGFITXBPMXh1SUNBZ0lDQWdmU0Js
YkhObElHbG1JQ2doY0hKdlozSmhiVmR5WVhCd1pYSXBJSHRjYmlBZ0lDQWdJQ0FnY0hKdlozSmhi
VmR5WVhCd1pYSWdQU0IwYUdsekxuQnliMmR5WVcxelcybGRJRDBnZDNKaGNGQnliMmR5WVcwb2RH
aHBjeXdnYVN3Z1ptNHBPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdjbVYwZFhKdUlIQnliMmR5WVcx
WGNtRndjR1Z5TzF4dUlDQWdJSDBzWEc1Y2JpQWdJQ0JrWVhSaE9pQm1kVzVqZEdsdmJpaDJZV3gx
WlN3Z1pHVndkR2dwSUh0Y2JpQWdJQ0FnSUhkb2FXeGxJQ2gyWVd4MVpTQW1KaUJrWlhCMGFDMHRL
U0I3WEc0Z0lDQWdJQ0FnSUhaaGJIVmxJRDBnZG1Gc2RXVXVYM0JoY21WdWREdGNiaUFnSUNBZ0lI
MWNiaUFnSUNBZ0lISmxkSFZ5YmlCMllXeDFaVHRjYmlBZ0lDQjlMRnh1SUNBZ0lHMWxjbWRsT2lC
bWRXNWpkR2x2Ymlod1lYSmhiU3dnWTI5dGJXOXVLU0I3WEc0Z0lDQWdJQ0JzWlhRZ2IySnFJRDBn
Y0dGeVlXMGdmSHdnWTI5dGJXOXVPMXh1WEc0Z0lDQWdJQ0JwWmlBb2NHRnlZVzBnSmlZZ1kyOXRi
Vzl1SUNZbUlDaHdZWEpoYlNBaFBUMGdZMjl0Ylc5dUtTa2dlMXh1SUNBZ0lDQWdJQ0J2WW1vZ1BT
QlZkR2xzY3k1bGVIUmxibVFvZTMwc0lHTnZiVzF2Yml3Z2NHRnlZVzBwTzF4dUlDQWdJQ0FnZlZ4
dVhHNGdJQ0FnSUNCeVpYUjFjbTRnYjJKcU8xeHVJQ0FnSUgwc1hHNWNiaUFnSUNCdWIyOXdPaUJs
Ym5ZdVZrMHVibTl2Y0N4Y2JpQWdJQ0JqYjIxd2FXeGxja2x1Wm04NklIUmxiWEJzWVhSbFUzQmxZ
eTVqYjIxd2FXeGxjbHh1SUNCOU8xeHVYRzRnSUdaMWJtTjBhVzl1SUhKbGRDaGpiMjUwWlhoMExD
QnZjSFJwYjI1eklEMGdlMzBwSUh0Y2JpQWdJQ0JzWlhRZ1pHRjBZU0E5SUc5d2RHbHZibk11WkdG
MFlUdGNibHh1SUNBZ0lISmxkQzVmYzJWMGRYQW9iM0IwYVc5dWN5azdYRzRnSUNBZ2FXWWdLQ0Z2
Y0hScGIyNXpMbkJoY25ScFlXd2dKaVlnZEdWdGNHeGhkR1ZUY0dWakxuVnpaVVJoZEdFcElIdGNi
aUFnSUNBZ0lHUmhkR0VnUFNCcGJtbDBSR0YwWVNoamIyNTBaWGgwTENCa1lYUmhLVHRjYmlBZ0lD
QjlYRzRnSUNBZ2JHVjBJR1JsY0hSb2N5eGNiaUFnSUNBZ0lDQWdZbXh2WTJ0UVlYSmhiWE1nUFNC
MFpXMXdiR0YwWlZOd1pXTXVkWE5sUW14dlkydFFZWEpoYlhNZ1B5QmJYU0E2SUhWdVpHVm1hVzVs
WkR0Y2JpQWdJQ0JwWmlBb2RHVnRjR3hoZEdWVGNHVmpMblZ6WlVSbGNIUm9jeWtnZTF4dUlDQWdJ
Q0FnYVdZZ0tHOXdkR2x2Ym5NdVpHVndkR2h6S1NCN1hHNGdJQ0FnSUNBZ0lHUmxjSFJvY3lBOUlH
TnZiblJsZUhRZ0lUMGdiM0IwYVc5dWN5NWtaWEIwYUhOYk1GMGdQeUJiWTI5dWRHVjRkRjB1WTI5
dVkyRjBLRzl3ZEdsdmJuTXVaR1Z3ZEdoektTQTZJRzl3ZEdsdmJuTXVaR1Z3ZEdoek8xeHVJQ0Fn
SUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ1pHVndkR2h6SUQwZ1cyTnZiblJsZUhSZE8xeHVJ
Q0FnSUNBZ2ZWeHVJQ0FnSUgxY2JseHVJQ0FnSUdaMWJtTjBhVzl1SUcxaGFXNG9ZMjl1ZEdWNGRD
OHFMQ0J2Y0hScGIyNXpLaThwSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUFuSnlBcklIUmxiWEJzWVhS
bFUzQmxZeTV0WVdsdUtHTnZiblJoYVc1bGNpd2dZMjl1ZEdWNGRDd2dZMjl1ZEdGcGJtVnlMbWhs
YkhCbGNuTXNJR052Ym5SaGFXNWxjaTV3WVhKMGFXRnNjeXdnWkdGMFlTd2dZbXh2WTJ0UVlYSmhi
WE1zSUdSbGNIUm9jeWs3WEc0Z0lDQWdmVnh1SUNBZ0lHMWhhVzRnUFNCbGVHVmpkWFJsUkdWamIz
SmhkRzl5Y3loMFpXMXdiR0YwWlZOd1pXTXViV0ZwYml3Z2JXRnBiaXdnWTI5dWRHRnBibVZ5TENC
dmNIUnBiMjV6TG1SbGNIUm9jeUI4ZkNCYlhTd2daR0YwWVN3Z1lteHZZMnRRWVhKaGJYTXBPMXh1
SUNBZ0lISmxkSFZ5YmlCdFlXbHVLR052Ym5SbGVIUXNJRzl3ZEdsdmJuTXBPMXh1SUNCOVhHNGdJ
SEpsZEM1cGMxUnZjQ0E5SUhSeWRXVTdYRzVjYmlBZ2NtVjBMbDl6WlhSMWNDQTlJR1oxYm1OMGFX
OXVLRzl3ZEdsdmJuTXBJSHRjYmlBZ0lDQnBaaUFvSVc5d2RHbHZibk11Y0dGeWRHbGhiQ2tnZTF4
dUlDQWdJQ0FnWTI5dWRHRnBibVZ5TG1obGJIQmxjbk1nUFNCamIyNTBZV2x1WlhJdWJXVnlaMlVv
YjNCMGFXOXVjeTVvWld4d1pYSnpMQ0JsYm5ZdWFHVnNjR1Z5Y3lrN1hHNWNiaUFnSUNBZ0lHbG1J
Q2gwWlcxd2JHRjBaVk53WldNdWRYTmxVR0Z5ZEdsaGJDa2dlMXh1SUNBZ0lDQWdJQ0JqYjI1MFlX
bHVaWEl1Y0dGeWRHbGhiSE1nUFNCamIyNTBZV2x1WlhJdWJXVnlaMlVvYjNCMGFXOXVjeTV3WVhK
MGFXRnNjeXdnWlc1MkxuQmhjblJwWVd4ektUdGNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lHbG1JQ2gw
Wlcxd2JHRjBaVk53WldNdWRYTmxVR0Z5ZEdsaGJDQjhmQ0IwWlcxd2JHRjBaVk53WldNdWRYTmxS
R1ZqYjNKaGRHOXljeWtnZTF4dUlDQWdJQ0FnSUNCamIyNTBZV2x1WlhJdVpHVmpiM0poZEc5eWN5
QTlJR052Ym5SaGFXNWxjaTV0WlhKblpTaHZjSFJwYjI1ekxtUmxZMjl5WVhSdmNuTXNJR1Z1ZGk1
a1pXTnZjbUYwYjNKektUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0Fn
WTI5dWRHRnBibVZ5TG1obGJIQmxjbk1nUFNCdmNIUnBiMjV6TG1obGJIQmxjbk03WEc0Z0lDQWdJ
Q0JqYjI1MFlXbHVaWEl1Y0dGeWRHbGhiSE1nUFNCdmNIUnBiMjV6TG5CaGNuUnBZV3h6TzF4dUlD
QWdJQ0FnWTI5dWRHRnBibVZ5TG1SbFkyOXlZWFJ2Y25NZ1BTQnZjSFJwYjI1ekxtUmxZMjl5WVhS
dmNuTTdYRzRnSUNBZ2ZWeHVJQ0I5TzF4dVhHNGdJSEpsZEM1ZlkyaHBiR1FnUFNCbWRXNWpkR2x2
YmlocExDQmtZWFJoTENCaWJHOWphMUJoY21GdGN5d2daR1Z3ZEdoektTQjdYRzRnSUNBZ2FXWWdL
SFJsYlhCc1lYUmxVM0JsWXk1MWMyVkNiRzlqYTFCaGNtRnRjeUFtSmlBaFlteHZZMnRRWVhKaGJY
TXBJSHRjYmlBZ0lDQWdJSFJvY205M0lHNWxkeUJGZUdObGNIUnBiMjRvSjIxMWMzUWdjR0Z6Y3lC
aWJHOWpheUJ3WVhKaGJYTW5LVHRjYmlBZ0lDQjlYRzRnSUNBZ2FXWWdLSFJsYlhCc1lYUmxVM0Js
WXk1MWMyVkVaWEIwYUhNZ0ppWWdJV1JsY0hSb2N5a2dlMXh1SUNBZ0lDQWdkR2h5YjNjZ2JtVjNJ
RVY0WTJWd2RHbHZiaWduYlhWemRDQndZWE56SUhCaGNtVnVkQ0JrWlhCMGFITW5LVHRjYmlBZ0lD
QjlYRzVjYmlBZ0lDQnlaWFIxY200Z2QzSmhjRkJ5YjJkeVlXMG9ZMjl1ZEdGcGJtVnlMQ0JwTENC
MFpXMXdiR0YwWlZOd1pXTmJhVjBzSUdSaGRHRXNJREFzSUdKc2IyTnJVR0Z5WVcxekxDQmtaWEIw
YUhNcE8xeHVJQ0I5TzF4dUlDQnlaWFIxY200Z2NtVjBPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1puVnVZ
M1JwYjI0Z2QzSmhjRkJ5YjJkeVlXMG9ZMjl1ZEdGcGJtVnlMQ0JwTENCbWJpd2daR0YwWVN3Z1pH
VmpiR0Z5WldSQ2JHOWphMUJoY21GdGN5d2dZbXh2WTJ0UVlYSmhiWE1zSUdSbGNIUm9jeWtnZTF4
dUlDQm1kVzVqZEdsdmJpQndjbTluS0dOdmJuUmxlSFFzSUc5d2RHbHZibk1nUFNCN2ZTa2dlMXh1
SUNBZ0lHeGxkQ0JqZFhKeVpXNTBSR1Z3ZEdoeklEMGdaR1Z3ZEdoek8xeHVJQ0FnSUdsbUlDaGta
WEIwYUhNZ0ppWWdZMjl1ZEdWNGRDQWhQU0JrWlhCMGFITmJNRjBwSUh0Y2JpQWdJQ0FnSUdOMWNu
SmxiblJFWlhCMGFITWdQU0JiWTI5dWRHVjRkRjB1WTI5dVkyRjBLR1JsY0hSb2N5azdYRzRnSUNB
Z2ZWeHVYRzRnSUNBZ2NtVjBkWEp1SUdadUtHTnZiblJoYVc1bGNpeGNiaUFnSUNBZ0lDQWdZMjl1
ZEdWNGRDeGNiaUFnSUNBZ0lDQWdZMjl1ZEdGcGJtVnlMbWhsYkhCbGNuTXNJR052Ym5SaGFXNWxj
aTV3WVhKMGFXRnNjeXhjYmlBZ0lDQWdJQ0FnYjNCMGFXOXVjeTVrWVhSaElIeDhJR1JoZEdFc1hH
NGdJQ0FnSUNBZ0lHSnNiMk5yVUdGeVlXMXpJQ1ltSUZ0dmNIUnBiMjV6TG1Kc2IyTnJVR0Z5WVcx
elhTNWpiMjVqWVhRb1lteHZZMnRRWVhKaGJYTXBMRnh1SUNBZ0lDQWdJQ0JqZFhKeVpXNTBSR1Z3
ZEdoektUdGNiaUFnZlZ4dVhHNGdJSEJ5YjJjZ1BTQmxlR1ZqZFhSbFJHVmpiM0poZEc5eWN5aG1i
aXdnY0hKdlp5d2dZMjl1ZEdGcGJtVnlMQ0JrWlhCMGFITXNJR1JoZEdFc0lHSnNiMk5yVUdGeVlX
MXpLVHRjYmx4dUlDQndjbTluTG5CeWIyZHlZVzBnUFNCcE8xeHVJQ0J3Y205bkxtUmxjSFJvSUQw
Z1pHVndkR2h6SUQ4Z1pHVndkR2h6TG14bGJtZDBhQ0E2SURBN1hHNGdJSEJ5YjJjdVlteHZZMnRR
WVhKaGJYTWdQU0JrWldOc1lYSmxaRUpzYjJOclVHRnlZVzF6SUh4OElEQTdYRzRnSUhKbGRIVnli
aUJ3Y205bk8xeHVmVnh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnY21WemIyeDJaVkJoY25ScFlX
d29jR0Z5ZEdsaGJDd2dZMjl1ZEdWNGRDd2diM0IwYVc5dWN5a2dlMXh1SUNCcFppQW9JWEJoY25S
cFlXd3BJSHRjYmlBZ0lDQnBaaUFvYjNCMGFXOXVjeTV1WVcxbElEMDlQU0FuUUhCaGNuUnBZV3d0
WW14dlkyc25LU0I3WEc0Z0lDQWdJQ0JzWlhRZ1pHRjBZU0E5SUc5d2RHbHZibk11WkdGMFlUdGNi
aUFnSUNBZ0lIZG9hV3hsSUNoa1lYUmhXeWR3WVhKMGFXRnNMV0pzYjJOckoxMGdQVDA5SUc1dmIz
QXBJSHRjYmlBZ0lDQWdJQ0FnWkdGMFlTQTlJR1JoZEdFdVgzQmhjbVZ1ZER0Y2JpQWdJQ0FnSUgx
Y2JpQWdJQ0FnSUhCaGNuUnBZV3dnUFNCa1lYUmhXeWR3WVhKMGFXRnNMV0pzYjJOckoxMDdYRzRn
SUNBZ0lDQmtZWFJoV3lkd1lYSjBhV0ZzTFdKc2IyTnJKMTBnUFNCdWIyOXdPMXh1SUNBZ0lIMGda
V3h6WlNCN1hHNGdJQ0FnSUNCd1lYSjBhV0ZzSUQwZ2IzQjBhVzl1Y3k1d1lYSjBhV0ZzYzF0dmNI
UnBiMjV6TG01aGJXVmRPMXh1SUNBZ0lIMWNiaUFnZlNCbGJITmxJR2xtSUNnaGNHRnlkR2xoYkM1
allXeHNJQ1ltSUNGdmNIUnBiMjV6TG01aGJXVXBJSHRjYmlBZ0lDQXZMeUJVYUdseklHbHpJR0Vn
WkhsdVlXMXBZeUJ3WVhKMGFXRnNJSFJvWVhRZ2NtVjBkWEp1WldRZ1lTQnpkSEpwYm1kY2JpQWdJ
Q0J2Y0hScGIyNXpMbTVoYldVZ1BTQndZWEowYVdGc08xeHVJQ0FnSUhCaGNuUnBZV3dnUFNCdmNI
UnBiMjV6TG5CaGNuUnBZV3h6VzNCaGNuUnBZV3hkTzF4dUlDQjlYRzRnSUhKbGRIVnliaUJ3WVhK
MGFXRnNPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2FXNTJiMnRsVUdGeWRHbGhiQ2h3
WVhKMGFXRnNMQ0JqYjI1MFpYaDBMQ0J2Y0hScGIyNXpLU0I3WEc0Z0lHOXdkR2x2Ym5NdWNHRnlk
R2xoYkNBOUlIUnlkV1U3WEc0Z0lHbG1JQ2h2Y0hScGIyNXpMbWxrY3lrZ2UxeHVJQ0FnSUc5d2RH
bHZibk11WkdGMFlTNWpiMjUwWlhoMFVHRjBhQ0E5SUc5d2RHbHZibk11YVdSeld6QmRJSHg4SUc5
d2RHbHZibk11WkdGMFlTNWpiMjUwWlhoMFVHRjBhRHRjYmlBZ2ZWeHVYRzRnSUd4bGRDQndZWEow
YVdGc1FteHZZMnM3WEc0Z0lHbG1JQ2h2Y0hScGIyNXpMbVp1SUNZbUlHOXdkR2x2Ym5NdVptNGdJ
VDA5SUc1dmIzQXBJSHRjYmlBZ0lDQnZjSFJwYjI1ekxtUmhkR0VnUFNCamNtVmhkR1ZHY21GdFpT
aHZjSFJwYjI1ekxtUmhkR0VwTzF4dUlDQWdJSEJoY25ScFlXeENiRzlqYXlBOUlHOXdkR2x2Ym5N
dVpHRjBZVnNuY0dGeWRHbGhiQzFpYkc5amF5ZGRJRDBnYjNCMGFXOXVjeTVtYmp0Y2JseHVJQ0Fn
SUdsbUlDaHdZWEowYVdGc1FteHZZMnN1Y0dGeWRHbGhiSE1wSUh0Y2JpQWdJQ0FnSUc5d2RHbHZi
bk11Y0dGeWRHbGhiSE1nUFNCVmRHbHNjeTVsZUhSbGJtUW9lMzBzSUc5d2RHbHZibk11Y0dGeWRH
bGhiSE1zSUhCaGNuUnBZV3hDYkc5amF5NXdZWEowYVdGc2N5azdYRzRnSUNBZ2ZWeHVJQ0I5WEc1
Y2JpQWdhV1lnS0hCaGNuUnBZV3dnUFQwOUlIVnVaR1ZtYVc1bFpDQW1KaUJ3WVhKMGFXRnNRbXh2
WTJzcElIdGNiaUFnSUNCd1lYSjBhV0ZzSUQwZ2NHRnlkR2xoYkVKc2IyTnJPMXh1SUNCOVhHNWNi
aUFnYVdZZ0tIQmhjblJwWVd3Z1BUMDlJSFZ1WkdWbWFXNWxaQ2tnZTF4dUlDQWdJSFJvY205M0lH
NWxkeUJGZUdObGNIUnBiMjRvSjFSb1pTQndZWEowYVdGc0lDY2dLeUJ2Y0hScGIyNXpMbTVoYldV
Z0t5QW5JR052ZFd4a0lHNXZkQ0JpWlNCbWIzVnVaQ2NwTzF4dUlDQjlJR1ZzYzJVZ2FXWWdLSEJo
Y25ScFlXd2dhVzV6ZEdGdVkyVnZaaUJHZFc1amRHbHZiaWtnZTF4dUlDQWdJSEpsZEhWeWJpQndZ
WEowYVdGc0tHTnZiblJsZUhRc0lHOXdkR2x2Ym5NcE8xeHVJQ0I5WEc1OVhHNWNibVY0Y0c5eWRD
Qm1kVzVqZEdsdmJpQnViMjl3S0NrZ2V5QnlaWFIxY200Z0p5YzdJSDFjYmx4dVpuVnVZM1JwYjI0
Z2FXNXBkRVJoZEdFb1kyOXVkR1Y0ZEN3Z1pHRjBZU2tnZTF4dUlDQnBaaUFvSVdSaGRHRWdmSHdn
SVNnbmNtOXZkQ2NnYVc0Z1pHRjBZU2twSUh0Y2JpQWdJQ0JrWVhSaElEMGdaR0YwWVNBL0lHTnla
V0YwWlVaeVlXMWxLR1JoZEdFcElEb2dlMzA3WEc0Z0lDQWdaR0YwWVM1eWIyOTBJRDBnWTI5dWRH
VjRkRHRjYmlBZ2ZWeHVJQ0J5WlhSMWNtNGdaR0YwWVR0Y2JuMWNibHh1Wm5WdVkzUnBiMjRnWlho
bFkzVjBaVVJsWTI5eVlYUnZjbk1vWm00c0lIQnliMmNzSUdOdmJuUmhhVzVsY2l3Z1pHVndkR2h6
TENCa1lYUmhMQ0JpYkc5amExQmhjbUZ0Y3lrZ2UxeHVJQ0JwWmlBb1ptNHVaR1ZqYjNKaGRHOXlL
U0I3WEc0Z0lDQWdiR1YwSUhCeWIzQnpJRDBnZTMwN1hHNGdJQ0FnY0hKdlp5QTlJR1p1TG1SbFky
OXlZWFJ2Y2lod2NtOW5MQ0J3Y205d2N5d2dZMjl1ZEdGcGJtVnlMQ0JrWlhCMGFITWdKaVlnWkdW
d2RHaHpXekJkTENCa1lYUmhMQ0JpYkc5amExQmhjbUZ0Y3l3Z1pHVndkR2h6S1R0Y2JpQWdJQ0JW
ZEdsc2N5NWxlSFJsYm1Rb2NISnZaeXdnY0hKdmNITXBPMXh1SUNCOVhHNGdJSEpsZEhWeWJpQndj
bTluTzF4dWZWeHVJbDE5CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1
bGVzL2hhbmRsZWJhcnMvZGlzdC9janMvaGFuZGxlYmFycy9zYWZlLXN0cmluZy5qcyBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2Nqcy9oYW5kbGViYXJz
L3NhZmUtc3RyaW5nLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyOGIzYTFkY2Q3NDBmOWY5M2JhZGI0Njc0MzAy
MjI5YzYzZjA3NWIKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9t
b2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9janMvaGFuZGxlYmFycy9zYWZlLXN0cmluZy5qcwpAQCAt
MCwwICsxLDE1IEBACisvLyBCdWlsZCBvdXQgb3VyIGJhc2ljIFNhZmVTdHJpbmcgdHlwZQorJ3Vz
ZSBzdHJpY3QnOworCitleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOworZnVuY3Rpb24gU2FmZVN0
cmluZyhzdHJpbmcpIHsKKyAgdGhpcy5zdHJpbmcgPSBzdHJpbmc7Cit9CisKK1NhZmVTdHJpbmcu
cHJvdG90eXBlLnRvU3RyaW5nID0gU2FmZVN0cmluZy5wcm90b3R5cGUudG9IVE1MID0gZnVuY3Rp
b24gKCkgeworICByZXR1cm4gJycgKyB0aGlzLnN0cmluZzsKK307CisKK2V4cG9ydHNbJ2RlZmF1
bHQnXSA9IFNhZmVTdHJpbmc7Cittb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsK
Ky8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpY
SnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUx5NHVMMnhwWWk5b1lXNWtiR1ZpWVhK
ekwzTmhabVV0YzNSeWFXNW5MbXB6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3
T3pzN1FVRkRRU3hUUVVGVExGVkJRVlVzUTBGQlF5eE5RVUZOTEVWQlFVVTdRVUZETVVJc1RVRkJT
U3hEUVVGRExFMUJRVTBzUjBGQlJ5eE5RVUZOTEVOQlFVTTdRMEZEZEVJN08wRkJSVVFzVlVGQlZT
eERRVUZETEZOQlFWTXNRMEZCUXl4UlFVRlJMRWRCUVVjc1ZVRkJWU3hEUVVGRExGTkJRVk1zUTBG
QlF5eE5RVUZOTEVkQlFVY3NXVUZCVnp0QlFVTjJSU3hUUVVGUExFVkJRVVVzUjBGQlJ5eEpRVUZK
TEVOQlFVTXNUVUZCVFN4RFFVRkRPME5CUTNwQ0xFTkJRVU03TzNGQ1FVVmhMRlZCUVZVaUxDSm1h
V3hsSWpvaWMyRm1aUzF6ZEhKcGJtY3Vhbk1pTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lJdkx5
QkNkV2xzWkNCdmRYUWdiM1Z5SUdKaGMybGpJRk5oWm1WVGRISnBibWNnZEhsd1pWeHVablZ1WTNS
cGIyNGdVMkZtWlZOMGNtbHVaeWh6ZEhKcGJtY3BJSHRjYmlBZ2RHaHBjeTV6ZEhKcGJtY2dQU0J6
ZEhKcGJtYzdYRzU5WEc1Y2JsTmhabVZUZEhKcGJtY3VjSEp2ZEc5MGVYQmxMblJ2VTNSeWFXNW5J
RDBnVTJGbVpWTjBjbWx1Wnk1d2NtOTBiM1I1Y0dVdWRHOUlWRTFNSUQwZ1puVnVZM1JwYjI0b0tT
QjdYRzRnSUhKbGRIVnliaUFuSnlBcklIUm9hWE11YzNSeWFXNW5PMXh1ZlR0Y2JseHVaWGh3YjNK
MElHUmxabUYxYkhRZ1UyRm1aVk4wY21sdVp6dGNiaUpkZlE9PQpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvY2pzL2hhbmRsZWJhcnMv
dXRpbHMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlz
dC9janMvaGFuZGxlYmFycy91dGlscy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZDE1MjE0NjkwMjVmMWVhMTI1
MmIwNTFiODMyN2NkM2UyODVlNmE1Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1
ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvY2pzL2hhbmRsZWJhcnMvdXRpbHMuanMK
QEAgLTAsMCArMSwxMjQgQEAKKyd1c2Ugc3RyaWN0JzsKKworZXhwb3J0cy5fX2VzTW9kdWxlID0g
dHJ1ZTsKK2V4cG9ydHMuZXh0ZW5kID0gZXh0ZW5kOworZXhwb3J0cy5pbmRleE9mID0gaW5kZXhP
ZjsKK2V4cG9ydHMuZXNjYXBlRXhwcmVzc2lvbiA9IGVzY2FwZUV4cHJlc3Npb247CitleHBvcnRz
LmlzRW1wdHkgPSBpc0VtcHR5OworZXhwb3J0cy5jcmVhdGVGcmFtZSA9IGNyZWF0ZUZyYW1lOwor
ZXhwb3J0cy5ibG9ja1BhcmFtcyA9IGJsb2NrUGFyYW1zOworZXhwb3J0cy5hcHBlbmRDb250ZXh0
UGF0aCA9IGFwcGVuZENvbnRleHRQYXRoOwordmFyIGVzY2FwZSA9IHsKKyAgJyYnOiAnJmFtcDsn
LAorICAnPCc6ICcmbHQ7JywKKyAgJz4nOiAnJmd0OycsCisgICciJzogJyZxdW90OycsCisgICIn
IjogJyYjeDI3OycsCisgICdgJzogJyYjeDYwOycsCisgICc9JzogJyYjeDNEOycKK307CisKK3Zh
ciBiYWRDaGFycyA9IC9bJjw+IidgPV0vZywKKyAgICBwb3NzaWJsZSA9IC9bJjw+IidgPV0vOwor
CitmdW5jdGlvbiBlc2NhcGVDaGFyKGNocikgeworICByZXR1cm4gZXNjYXBlW2Nocl07Cit9CisK
K2Z1bmN0aW9uIGV4dGVuZChvYmogLyogLCAuLi5zb3VyY2UgKi8pIHsKKyAgZm9yICh2YXIgaSA9
IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsKKyAgICBmb3IgKHZhciBrZXkgaW4gYXJn
dW1lbnRzW2ldKSB7CisgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5j
YWxsKGFyZ3VtZW50c1tpXSwga2V5KSkgeworICAgICAgICBvYmpba2V5XSA9IGFyZ3VtZW50c1tp
XVtrZXldOworICAgICAgfQorICAgIH0KKyAgfQorCisgIHJldHVybiBvYmo7Cit9CisKK3ZhciB0
b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7CisKK2V4cG9ydHMudG9TdHJpbmcg
PSB0b1N0cmluZzsKKy8vIFNvdXJjZWQgZnJvbSBsb2Rhc2gKKy8vIGh0dHBzOi8vZ2l0aHViLmNv
bS9iZXN0aWVqcy9sb2Rhc2gvYmxvYi9tYXN0ZXIvTElDRU5TRS50eHQKKy8qIGVzbGludC1kaXNh
YmxlIGZ1bmMtc3R5bGUgKi8KK3ZhciBpc0Z1bmN0aW9uID0gZnVuY3Rpb24gaXNGdW5jdGlvbih2
YWx1ZSkgeworICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nOworfTsKKy8vIGZh
bGxiYWNrIGZvciBvbGRlciB2ZXJzaW9ucyBvZiBDaHJvbWUgYW5kIFNhZmFyaQorLyogaXN0YW5i
dWwgaWdub3JlIG5leHQgKi8KK2lmIChpc0Z1bmN0aW9uKC94LykpIHsKKyAgZXhwb3J0cy5pc0Z1
bmN0aW9uID0gaXNGdW5jdGlvbiA9IGZ1bmN0aW9uICh2YWx1ZSkgeworICAgIHJldHVybiB0eXBl
b2YgdmFsdWUgPT09ICdmdW5jdGlvbicgJiYgdG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT09ICdbb2Jq
ZWN0IEZ1bmN0aW9uXSc7CisgIH07Cit9CitleHBvcnRzLmlzRnVuY3Rpb24gPSBpc0Z1bmN0aW9u
OworCisvKiBlc2xpbnQtZW5hYmxlIGZ1bmMtc3R5bGUgKi8KKworLyogaXN0YW5idWwgaWdub3Jl
IG5leHQgKi8KK3ZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheSB8fCBmdW5jdGlvbiAodmFsdWUp
IHsKKyAgcmV0dXJuIHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgPyB0b1N0cmlu
Zy5jYWxsKHZhbHVlKSA9PT0gJ1tvYmplY3QgQXJyYXldJyA6IGZhbHNlOworfTsKKworZXhwb3J0
cy5pc0FycmF5ID0gaXNBcnJheTsKKy8vIE9sZGVyIElFIHZlcnNpb25zIGRvIG5vdCBkaXJlY3Rs
eSBzdXBwb3J0IGluZGV4T2Ygc28gd2UgbXVzdCBpbXBsZW1lbnQgb3VyIG93biwgc2FkbHkuCisK
K2Z1bmN0aW9uIGluZGV4T2YoYXJyYXksIHZhbHVlKSB7CisgIGZvciAodmFyIGkgPSAwLCBsZW4g
PSBhcnJheS5sZW5ndGg7IGkgPCBsZW47IGkrKykgeworICAgIGlmIChhcnJheVtpXSA9PT0gdmFs
dWUpIHsKKyAgICAgIHJldHVybiBpOworICAgIH0KKyAgfQorICByZXR1cm4gLTE7Cit9CisKK2Z1
bmN0aW9uIGVzY2FwZUV4cHJlc3Npb24oc3RyaW5nKSB7CisgIGlmICh0eXBlb2Ygc3RyaW5nICE9
PSAnc3RyaW5nJykgeworICAgIC8vIGRvbid0IGVzY2FwZSBTYWZlU3RyaW5ncywgc2luY2UgdGhl
eSdyZSBhbHJlYWR5IHNhZmUKKyAgICBpZiAoc3RyaW5nICYmIHN0cmluZy50b0hUTUwpIHsKKyAg
ICAgIHJldHVybiBzdHJpbmcudG9IVE1MKCk7CisgICAgfSBlbHNlIGlmIChzdHJpbmcgPT0gbnVs
bCkgeworICAgICAgcmV0dXJuICcnOworICAgIH0gZWxzZSBpZiAoIXN0cmluZykgeworICAgICAg
cmV0dXJuIHN0cmluZyArICcnOworICAgIH0KKworICAgIC8vIEZvcmNlIGEgc3RyaW5nIGNvbnZl
cnNpb24gYXMgdGhpcyB3aWxsIGJlIGRvbmUgYnkgdGhlIGFwcGVuZCByZWdhcmRsZXNzIGFuZAor
ICAgIC8vIHRoZSByZWdleCB0ZXN0IHdpbGwgZG8gdGhpcyB0cmFuc3BhcmVudGx5IGJlaGluZCB0
aGUgc2NlbmVzLCBjYXVzaW5nIGlzc3VlcyBpZgorICAgIC8vIGFuIG9iamVjdCdzIHRvIHN0cmlu
ZyBoYXMgZXNjYXBlZCBjaGFyYWN0ZXJzIGluIGl0LgorICAgIHN0cmluZyA9ICcnICsgc3RyaW5n
OworICB9CisKKyAgaWYgKCFwb3NzaWJsZS50ZXN0KHN0cmluZykpIHsKKyAgICByZXR1cm4gc3Ry
aW5nOworICB9CisgIHJldHVybiBzdHJpbmcucmVwbGFjZShiYWRDaGFycywgZXNjYXBlQ2hhcik7
Cit9CisKK2Z1bmN0aW9uIGlzRW1wdHkodmFsdWUpIHsKKyAgaWYgKCF2YWx1ZSAmJiB2YWx1ZSAh
PT0gMCkgeworICAgIHJldHVybiB0cnVlOworICB9IGVsc2UgaWYgKGlzQXJyYXkodmFsdWUpICYm
IHZhbHVlLmxlbmd0aCA9PT0gMCkgeworICAgIHJldHVybiB0cnVlOworICB9IGVsc2UgeworICAg
IHJldHVybiBmYWxzZTsKKyAgfQorfQorCitmdW5jdGlvbiBjcmVhdGVGcmFtZShvYmplY3QpIHsK
KyAgdmFyIGZyYW1lID0gZXh0ZW5kKHt9LCBvYmplY3QpOworICBmcmFtZS5fcGFyZW50ID0gb2Jq
ZWN0OworICByZXR1cm4gZnJhbWU7Cit9CisKK2Z1bmN0aW9uIGJsb2NrUGFyYW1zKHBhcmFtcywg
aWRzKSB7CisgIHBhcmFtcy5wYXRoID0gaWRzOworICByZXR1cm4gcGFyYW1zOworfQorCitmdW5j
dGlvbiBhcHBlbmRDb250ZXh0UGF0aChjb250ZXh0UGF0aCwgaWQpIHsKKyAgcmV0dXJuIChjb250
ZXh0UGF0aCA/IGNvbnRleHRQYXRoICsgJy4nIDogJycpICsgaWQ7Cit9CisvLyMgc291cmNlTWFw
cGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6
YjNWeVkyVnpJanBiSWk0dUx5NHVMeTR1TDJ4cFlpOW9ZVzVrYkdWaVlYSnpMM1YwYVd4ekxtcHpJ
bDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSTdPenM3T3pzN096czdRVUZCUVN4SlFV
Rk5MRTFCUVUwc1IwRkJSenRCUVVOaUxFdEJRVWNzUlVGQlJTeFBRVUZQTzBGQlExb3NTMEZCUnl4
RlFVRkZMRTFCUVUwN1FVRkRXQ3hMUVVGSExFVkJRVVVzVFVGQlRUdEJRVU5ZTEV0QlFVY3NSVUZC
UlN4UlFVRlJPMEZCUTJJc1MwRkJSeXhGUVVGRkxGRkJRVkU3UVVGRFlpeExRVUZITEVWQlFVVXNV
VUZCVVR0QlFVTmlMRXRCUVVjc1JVRkJSU3hSUVVGUk8wTkJRMlFzUTBGQlF6czdRVUZGUml4SlFV
Rk5MRkZCUVZFc1IwRkJSeXhaUVVGWk8wbEJRM1pDTEZGQlFWRXNSMEZCUnl4WFFVRlhMRU5CUVVN
N08wRkJSVGRDTEZOQlFWTXNWVUZCVlN4RFFVRkRMRWRCUVVjc1JVRkJSVHRCUVVOMlFpeFRRVUZQ
TEUxQlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenREUVVOd1FqczdRVUZGVFN4VFFVRlRM
RTFCUVUwc1EwRkJReXhIUVVGSExHOUNRVUZ0UWp0QlFVTXpReXhQUVVGTExFbEJRVWtzUTBGQlF5
eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1UwRkJVeXhEUVVGRExFMUJRVTBzUlVG
QlJTeERRVUZETEVWQlFVVXNSVUZCUlR0QlFVTjZReXhUUVVGTExFbEJRVWtzUjBGQlJ5eEpRVUZK
TEZOQlFWTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSVHRCUVVNMVFpeFZRVUZKTEUxQlFVMHNR
MEZCUXl4VFFVRlRMRU5CUVVNc1kwRkJZeXhEUVVGRExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFV
TXNRMEZCUXl4RFFVRkRMRVZCUVVVc1IwRkJSeXhEUVVGRExFVkJRVVU3UVVGRE0wUXNWMEZCUnl4
RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExGTkJRVk1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZC
UXl4SFFVRkhMRU5CUVVNc1EwRkJRenRQUVVNNVFqdExRVU5HTzBkQlEwWTdPMEZCUlVRc1UwRkJU
eXhIUVVGSExFTkJRVU03UTBGRFdqczdRVUZGVFN4SlFVRkpMRkZCUVZFc1IwRkJSeXhOUVVGTkxF
TkJRVU1zVTBGQlV5eERRVUZETEZGQlFWRXNRMEZCUXpzN096czdPMEZCUzJoRUxFbEJRVWtzVlVG
QlZTeEhRVUZITEc5Q1FVRlRMRXRCUVVzc1JVRkJSVHRCUVVNdlFpeFRRVUZQTEU5QlFVOHNTMEZC
U3l4TFFVRkxMRlZCUVZVc1EwRkJRenREUVVOd1F5eERRVUZET3pzN1FVRkhSaXhKUVVGSkxGVkJR
VlVzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlR0QlFVTnVRaXhWUVVsTkxGVkJRVlVzUjBGS2FF
SXNWVUZCVlN4SFFVRkhMRlZCUVZNc1MwRkJTeXhGUVVGRk8wRkJRek5DTEZkQlFVOHNUMEZCVHl4
TFFVRkxMRXRCUVVzc1ZVRkJWU3hKUVVGSkxGRkJRVkVzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZC
U3l4RFFVRkRMRXRCUVVzc2JVSkJRVzFDTEVOQlFVTTdSMEZEY0VZc1EwRkJRenREUVVOSU8xRkJR
MDhzVlVGQlZTeEhRVUZXTEZWQlFWVTdPenM3TzBGQlNWZ3NTVUZCVFN4UFFVRlBMRWRCUVVjc1Mw
RkJTeXhEUVVGRExFOUJRVThzU1VGQlNTeFZRVUZUTEV0QlFVc3NSVUZCUlR0QlFVTjBSQ3hUUVVG
UExFRkJRVU1zUzBGQlN5eEpRVUZKTEU5QlFVOHNTMEZCU3l4TFFVRkxMRkZCUVZFc1IwRkJTU3hS
UVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4TFFVRkxMR2RDUVVGblFpeEhR
VUZITEV0QlFVc3NRMEZCUXp0RFFVTnFSeXhEUVVGRE96czdPenRCUVVkTExGTkJRVk1zVDBGQlR5
eERRVUZETEV0QlFVc3NSVUZCUlN4TFFVRkxMRVZCUVVVN1FVRkRjRU1zVDBGQlN5eEpRVUZKTEVO
QlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1IwRkJSeXhIUVVGSExFdEJRVXNzUTBGQlF5eE5RVUZO
TEVWQlFVVXNRMEZCUXl4SFFVRkhMRWRCUVVjc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdEJR
VU5vUkN4UlFVRkpMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUzBGQlN5eExRVUZMTEVWQlFV
VTdRVUZEZEVJc1lVRkJUeXhEUVVGRExFTkJRVU03UzBGRFZqdEhRVU5HTzBGQlEwUXNVMEZCVHl4
RFFVRkRMRU5CUVVNc1EwRkJRenREUVVOWU96dEJRVWROTEZOQlFWTXNaMEpCUVdkQ0xFTkJRVU1z
VFVGQlRTeEZRVUZGTzBGQlEzWkRMRTFCUVVrc1QwRkJUeXhOUVVGTkxFdEJRVXNzVVVGQlVTeEZR
VUZGT3p0QlFVVTVRaXhSUVVGSkxFMUJRVTBzU1VGQlNTeE5RVUZOTEVOQlFVTXNUVUZCVFN4RlFV
RkZPMEZCUXpOQ0xHRkJRVThzVFVGQlRTeERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRPMHRCUTNo
Q0xFMUJRVTBzU1VGQlNTeE5RVUZOTEVsQlFVa3NTVUZCU1N4RlFVRkZPMEZCUTNwQ0xHRkJRVThz
UlVGQlJTeERRVUZETzB0QlExZ3NUVUZCVFN4SlFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRk8wRkJR
MnhDTEdGQlFVOHNUVUZCVFN4SFFVRkhMRVZCUVVVc1EwRkJRenRMUVVOd1FqczdPenM3UVVGTFJD
eFZRVUZOTEVkQlFVY3NSVUZCUlN4SFFVRkhMRTFCUVUwc1EwRkJRenRIUVVOMFFqczdRVUZGUkN4
TlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNSVUZC
UlR0QlFVRkZMRmRCUVU4c1RVRkJUU3hEUVVGRE8wZEJRVVU3UVVGRE9VTXNVMEZCVHl4TlFVRk5M
RU5CUVVNc1QwRkJUeXhEUVVGRExGRkJRVkVzUlVGQlJTeFZRVUZWTEVOQlFVTXNRMEZCUXp0RFFV
TTNRenM3UVVGRlRTeFRRVUZUTEU5QlFVOHNRMEZCUXl4TFFVRkxMRVZCUVVVN1FVRkROMElzVFVG
QlNTeERRVUZETEV0QlFVc3NTVUZCU1N4TFFVRkxMRXRCUVVzc1EwRkJReXhGUVVGRk8wRkJRM3BD
TEZkQlFVOHNTVUZCU1N4RFFVRkRPMGRCUTJJc1RVRkJUU3hKUVVGSkxFOUJRVThzUTBGQlF5eExR
VUZMTEVOQlFVTXNTVUZCU1N4TFFVRkxMRU5CUVVNc1RVRkJUU3hMUVVGTExFTkJRVU1zUlVGQlJU
dEJRVU12UXl4WFFVRlBMRWxCUVVrc1EwRkJRenRIUVVOaUxFMUJRVTA3UVVGRFRDeFhRVUZQTEV0
QlFVc3NRMEZCUXp0SFFVTmtPME5CUTBZN08wRkJSVTBzVTBGQlV5eFhRVUZYTEVOQlFVTXNUVUZC
VFN4RlFVRkZPMEZCUTJ4RExFMUJRVWtzUzBGQlN5eEhRVUZITEUxQlFVMHNRMEZCUXl4RlFVRkZM
RVZCUVVVc1RVRkJUU3hEUVVGRExFTkJRVU03UVVGREwwSXNUMEZCU3l4RFFVRkRMRTlCUVU4c1Iw
RkJSeXhOUVVGTkxFTkJRVU03UVVGRGRrSXNVMEZCVHl4TFFVRkxMRU5CUVVNN1EwRkRaRHM3UVVG
RlRTeFRRVUZUTEZkQlFWY3NRMEZCUXl4TlFVRk5MRVZCUVVVc1IwRkJSeXhGUVVGRk8wRkJRM1pE
TEZGQlFVMHNRMEZCUXl4SlFVRkpMRWRCUVVjc1IwRkJSeXhEUVVGRE8wRkJRMnhDTEZOQlFVOHNU
VUZCVFN4RFFVRkRPME5CUTJZN08wRkJSVTBzVTBGQlV5eHBRa0ZCYVVJc1EwRkJReXhYUVVGWExF
VkJRVVVzUlVGQlJTeEZRVUZGTzBGQlEycEVMRk5CUVU4c1EwRkJReXhYUVVGWExFZEJRVWNzVjBG
QlZ5eEhRVUZITEVkQlFVY3NSMEZCUnl4RlFVRkZMRU5CUVVFc1IwRkJTU3hGUVVGRkxFTkJRVU03
UTBGRGNFUWlMQ0ptYVd4bElqb2lkWFJwYkhNdWFuTWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZX
eUpqYjI1emRDQmxjMk5oY0dVZ1BTQjdYRzRnSUNjbUp6b2dKeVpoYlhBN0p5eGNiaUFnSnp3bk9p
QW5KbXgwT3ljc1hHNGdJQ2MrSnpvZ0p5Wm5kRHNuTEZ4dUlDQW5YQ0luT2lBbkpuRjFiM1E3Snl4
Y2JpQWdYQ0luWENJNklDY21JM2d5TnpzbkxGeHVJQ0FuWUNjNklDY21JM2cyTURzbkxGeHVJQ0Fu
UFNjNklDY21JM2d6UkRzblhHNTlPMXh1WEc1amIyNXpkQ0JpWVdSRGFHRnljeUE5SUM5YkpqdytY
Q0luWUQxZEwyY3NYRzRnSUNBZ0lDQndiM056YVdKc1pTQTlJQzliSmp3K1hDSW5ZRDFkTHp0Y2Js
eHVablZ1WTNScGIyNGdaWE5qWVhCbFEyaGhjaWhqYUhJcElIdGNiaUFnY21WMGRYSnVJR1Z6WTJG
d1pWdGphSEpkTzF4dWZWeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdaWGgwWlc1a0tHOWlhaThx
SUN3Z0xpNHVjMjkxY21ObElDb3ZLU0I3WEc0Z0lHWnZjaUFvYkdWMElHa2dQU0F4T3lCcElEd2dZ
WEpuZFcxbGJuUnpMbXhsYm1kMGFEc2dhU3NyS1NCN1hHNGdJQ0FnWm05eUlDaHNaWFFnYTJWNUlH
bHVJR0Z5WjNWdFpXNTBjMXRwWFNrZ2UxeHVJQ0FnSUNBZ2FXWWdLRTlpYW1WamRDNXdjbTkwYjNS
NWNHVXVhR0Z6VDNkdVVISnZjR1Z5ZEhrdVkyRnNiQ2hoY21kMWJXVnVkSE5iYVYwc0lHdGxlU2tw
SUh0Y2JpQWdJQ0FnSUNBZ2IySnFXMnRsZVYwZ1BTQmhjbWQxYldWdWRITmJhVjFiYTJWNVhUdGNi
aUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJSDFjYmx4dUlDQnlaWFIxY200Z2IySnFPMXh1ZlZ4dVhH
NWxlSEJ2Y25RZ2JHVjBJSFJ2VTNSeWFXNW5JRDBnVDJKcVpXTjBMbkJ5YjNSdmRIbHdaUzUwYjFO
MGNtbHVaenRjYmx4dUx5OGdVMjkxY21ObFpDQm1jbTl0SUd4dlpHRnphRnh1THk4Z2FIUjBjSE02
THk5bmFYUm9kV0l1WTI5dEwySmxjM1JwWldwekwyeHZaR0Z6YUM5aWJHOWlMMjFoYzNSbGNpOU1T
VU5GVGxORkxuUjRkRnh1THlvZ1pYTnNhVzUwTFdScGMyRmliR1VnWm5WdVl5MXpkSGxzWlNBcUwx
eHViR1YwSUdselJuVnVZM1JwYjI0Z1BTQm1kVzVqZEdsdmJpaDJZV3gxWlNrZ2UxeHVJQ0J5WlhS
MWNtNGdkSGx3Wlc5bUlIWmhiSFZsSUQwOVBTQW5ablZ1WTNScGIyNG5PMXh1ZlR0Y2JpOHZJR1po
Ykd4aVlXTnJJR1p2Y2lCdmJHUmxjaUIyWlhKemFXOXVjeUJ2WmlCRGFISnZiV1VnWVc1a0lGTmha
bUZ5YVZ4dUx5b2dhWE4wWVc1aWRXd2dhV2R1YjNKbElHNWxlSFFnS2k5Y2JtbG1JQ2hwYzBaMWJt
TjBhVzl1S0M5NEx5a3BJSHRjYmlBZ2FYTkdkVzVqZEdsdmJpQTlJR1oxYm1OMGFXOXVLSFpoYkhW
bEtTQjdYRzRnSUNBZ2NtVjBkWEp1SUhSNWNHVnZaaUIyWVd4MVpTQTlQVDBnSjJaMWJtTjBhVzl1
SnlBbUppQjBiMU4wY21sdVp5NWpZV3hzS0haaGJIVmxLU0E5UFQwZ0oxdHZZbXBsWTNRZ1JuVnVZ
M1JwYjI1ZEp6dGNiaUFnZlR0Y2JuMWNibVY0Y0c5eWRDQjdhWE5HZFc1amRHbHZibjA3WEc0dktp
QmxjMnhwYm5RdFpXNWhZbXhsSUdaMWJtTXRjM1I1YkdVZ0tpOWNibHh1THlvZ2FYTjBZVzVpZFd3
Z2FXZHViM0psSUc1bGVIUWdLaTljYm1WNGNHOXlkQ0JqYjI1emRDQnBjMEZ5Y21GNUlEMGdRWEp5
WVhrdWFYTkJjbkpoZVNCOGZDQm1kVzVqZEdsdmJpaDJZV3gxWlNrZ2UxeHVJQ0J5WlhSMWNtNGdL
SFpoYkhWbElDWW1JSFI1Y0dWdlppQjJZV3gxWlNBOVBUMGdKMjlpYW1WamRDY3BJRDhnZEc5VGRI
SnBibWN1WTJGc2JDaDJZV3gxWlNrZ1BUMDlJQ2RiYjJKcVpXTjBJRUZ5Y21GNVhTY2dPaUJtWVd4
elpUdGNibjA3WEc1Y2JpOHZJRTlzWkdWeUlFbEZJSFpsY25OcGIyNXpJR1J2SUc1dmRDQmthWEps
WTNSc2VTQnpkWEJ3YjNKMElHbHVaR1Y0VDJZZ2MyOGdkMlVnYlhWemRDQnBiWEJzWlcxbGJuUWdi
M1Z5SUc5M2Jpd2djMkZrYkhrdVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2FXNWtaWGhQWmloaGNu
SmhlU3dnZG1Gc2RXVXBJSHRjYmlBZ1ptOXlJQ2hzWlhRZ2FTQTlJREFzSUd4bGJpQTlJR0Z5Y21G
NUxteGxibWQwYURzZ2FTQThJR3hsYmpzZ2FTc3JLU0I3WEc0Z0lDQWdhV1lnS0dGeWNtRjVXMmxk
SUQwOVBTQjJZV3gxWlNrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUdrN1hHNGdJQ0FnZlZ4dUlDQjlY
RzRnSUhKbGRIVnliaUF0TVR0Y2JuMWNibHh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWlhOallY
QmxSWGh3Y21WemMybHZiaWh6ZEhKcGJtY3BJSHRjYmlBZ2FXWWdLSFI1Y0dWdlppQnpkSEpwYm1j
Z0lUMDlJQ2R6ZEhKcGJtY25LU0I3WEc0Z0lDQWdMeThnWkc5dUozUWdaWE5qWVhCbElGTmhabVZU
ZEhKcGJtZHpMQ0J6YVc1alpTQjBhR1Y1SjNKbElHRnNjbVZoWkhrZ2MyRm1aVnh1SUNBZ0lHbG1J
Q2h6ZEhKcGJtY2dKaVlnYzNSeWFXNW5MblJ2U0ZSTlRDa2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlI
TjBjbWx1Wnk1MGIwaFVUVXdvS1R0Y2JpQWdJQ0I5SUdWc2MyVWdhV1lnS0hOMGNtbHVaeUE5UFNC
dWRXeHNLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdKeWM3WEc0Z0lDQWdmU0JsYkhObElHbG1JQ2do
YzNSeWFXNW5LU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdjM1J5YVc1bklDc2dKeWM3WEc0Z0lDQWdm
Vnh1WEc0Z0lDQWdMeThnUm05eVkyVWdZU0J6ZEhKcGJtY2dZMjl1ZG1WeWMybHZiaUJoY3lCMGFH
bHpJSGRwYkd3Z1ltVWdaRzl1WlNCaWVTQjBhR1VnWVhCd1pXNWtJSEpsWjJGeVpHeGxjM01nWVc1
a1hHNGdJQ0FnTHk4Z2RHaGxJSEpsWjJWNElIUmxjM1FnZDJsc2JDQmtieUIwYUdseklIUnlZVzV6
Y0dGeVpXNTBiSGtnWW1Wb2FXNWtJSFJvWlNCelkyVnVaWE1zSUdOaGRYTnBibWNnYVhOemRXVnpJ
R2xtWEc0Z0lDQWdMeThnWVc0Z2IySnFaV04wSjNNZ2RHOGdjM1J5YVc1bklHaGhjeUJsYzJOaGNH
VmtJR05vWVhKaFkzUmxjbk1nYVc0Z2FYUXVYRzRnSUNBZ2MzUnlhVzVuSUQwZ0p5Y2dLeUJ6ZEhK
cGJtYzdYRzRnSUgxY2JseHVJQ0JwWmlBb0lYQnZjM05wWW14bExuUmxjM1FvYzNSeWFXNW5LU2tn
ZXlCeVpYUjFjbTRnYzNSeWFXNW5PeUI5WEc0Z0lISmxkSFZ5YmlCemRISnBibWN1Y21Wd2JHRmpa
U2hpWVdSRGFHRnljeXdnWlhOallYQmxRMmhoY2lrN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRH
bHZiaUJwYzBWdGNIUjVLSFpoYkhWbEtTQjdYRzRnSUdsbUlDZ2hkbUZzZFdVZ0ppWWdkbUZzZFdV
Z0lUMDlJREFwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkSEoxWlR0Y2JpQWdmU0JsYkhObElHbG1JQ2hw
YzBGeWNtRjVLSFpoYkhWbEtTQW1KaUIyWVd4MVpTNXNaVzVuZEdnZ1BUMDlJREFwSUh0Y2JpQWdJ
Q0J5WlhSMWNtNGdkSEoxWlR0Y2JpQWdmU0JsYkhObElIdGNiaUFnSUNCeVpYUjFjbTRnWm1Gc2My
VTdYRzRnSUgxY2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR055WldGMFpVWnlZVzFsS0c5
aWFtVmpkQ2tnZTF4dUlDQnNaWFFnWm5KaGJXVWdQU0JsZUhSbGJtUW9lMzBzSUc5aWFtVmpkQ2s3
WEc0Z0lHWnlZVzFsTGw5d1lYSmxiblFnUFNCdlltcGxZM1E3WEc0Z0lISmxkSFZ5YmlCbWNtRnRa
VHRjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlHSnNiMk5yVUdGeVlXMXpLSEJoY21GdGN5
d2dhV1J6S1NCN1hHNGdJSEJoY21GdGN5NXdZWFJvSUQwZ2FXUnpPMXh1SUNCeVpYUjFjbTRnY0dG
eVlXMXpPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1lYQndaVzVrUTI5dWRHVjRkRkJo
ZEdnb1kyOXVkR1Y0ZEZCaGRHZ3NJR2xrS1NCN1hHNGdJSEpsZEhWeWJpQW9ZMjl1ZEdWNGRGQmhk
R2dnUHlCamIyNTBaWGgwVUdGMGFDQXJJQ2N1SnlBNklDY25LU0FySUdsa08xeHVmVnh1SWwxOQpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rp
c3QvY2pzL3ByZWNvbXBpbGVyLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9o
YW5kbGViYXJzL2Rpc3QvY2pzL3ByZWNvbXBpbGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJkZGNhOGUxZWU0
ODEwNmM3M2E2MzBiMWRkYWNiYjQwMjY5YWM3ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9janMvcHJlY29tcGlsZXIu
anMKQEAgLTAsMCArMSwzMDggQEAKKy8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi8KKyd1
c2Ugc3RyaWN0JzsKKworLy8gaXN0YW5idWwgaWdub3JlIG5leHQKKworZnVuY3Rpb24gX2ludGVy
b3BSZXF1aXJlV2lsZGNhcmQob2JqKSB7IGlmIChvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHsgcmV0
dXJuIG9iajsgfSBlbHNlIHsgdmFyIG5ld09iaiA9IHt9OyBpZiAob2JqICE9IG51bGwpIHsgZm9y
ICh2YXIga2V5IGluIG9iaikgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5j
YWxsKG9iaiwga2V5KSkgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IG5ld09ialsnZGVmYXVs
dCddID0gb2JqOyByZXR1cm4gbmV3T2JqOyB9IH0KKworLy8gaXN0YW5idWwgaWdub3JlIG5leHQK
KworZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBv
YmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfQorCit2YXIgX2FzeW5j
ID0gcmVxdWlyZSgnYXN5bmMnKTsKKwordmFyIF9hc3luYzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZh
dWx0KF9hc3luYyk7CisKK3ZhciBfZnMgPSByZXF1aXJlKCdmcycpOworCit2YXIgX2ZzMiA9IF9p
bnRlcm9wUmVxdWlyZURlZmF1bHQoX2ZzKTsKKwordmFyIF9oYW5kbGViYXJzID0gcmVxdWlyZSgn
Li9oYW5kbGViYXJzJyk7CisKK3ZhciBIYW5kbGViYXJzID0gX2ludGVyb3BSZXF1aXJlV2lsZGNh
cmQoX2hhbmRsZWJhcnMpOworCit2YXIgX3BhdGggPSByZXF1aXJlKCdwYXRoJyk7CisKK3ZhciBf
c291cmNlTWFwID0gcmVxdWlyZSgnc291cmNlLW1hcCcpOworCit2YXIgX3VnbGlmeUpzID0gcmVx
dWlyZSgndWdsaWZ5LWpzJyk7CisKK3ZhciBfdWdsaWZ5SnMyID0gX2ludGVyb3BSZXF1aXJlRGVm
YXVsdChfdWdsaWZ5SnMpOworCittb2R1bGUuZXhwb3J0cy5sb2FkVGVtcGxhdGVzID0gZnVuY3Rp
b24gKG9wdHMsIGNhbGxiYWNrKSB7CisgIGxvYWRTdHJpbmdzKG9wdHMsIGZ1bmN0aW9uIChlcnIs
IHN0cmluZ3MpIHsKKyAgICBpZiAoZXJyKSB7CisgICAgICBjYWxsYmFjayhlcnIpOworICAgIH0g
ZWxzZSB7CisgICAgICBsb2FkRmlsZXMob3B0cywgZnVuY3Rpb24gKGVyciwgZmlsZXMpIHsKKyAg
ICAgICAgaWYgKGVycikgeworICAgICAgICAgIGNhbGxiYWNrKGVycik7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgb3B0cy50ZW1wbGF0ZXMgPSBzdHJpbmdzLmNvbmNhdChmaWxlcyk7Cisg
ICAgICAgICAgY2FsbGJhY2sodW5kZWZpbmVkLCBvcHRzKTsKKyAgICAgICAgfQorICAgICAgfSk7
CisgICAgfQorICB9KTsKK307CisKK2Z1bmN0aW9uIGxvYWRTdHJpbmdzKG9wdHMsIGNhbGxiYWNr
KSB7CisgIHZhciBzdHJpbmdzID0gYXJyYXlDYXN0KG9wdHMuc3RyaW5nKSwKKyAgICAgIG5hbWVz
ID0gYXJyYXlDYXN0KG9wdHMubmFtZSk7CisKKyAgaWYgKG5hbWVzLmxlbmd0aCAhPT0gc3RyaW5n
cy5sZW5ndGggJiYgc3RyaW5ncy5sZW5ndGggPiAxKSB7CisgICAgcmV0dXJuIGNhbGxiYWNrKG5l
dyBIYW5kbGViYXJzLkV4Y2VwdGlvbignTnVtYmVyIG9mIG5hbWVzIGRpZCBub3QgbWF0Y2ggdGhl
IG51bWJlciBvZiBzdHJpbmcgaW5wdXRzJykpOworICB9CisKKyAgX2FzeW5jMlsnZGVmYXVsdCdd
Lm1hcChzdHJpbmdzLCBmdW5jdGlvbiAoc3RyaW5nLCBjYWxsYmFjaykgeworICAgIGlmIChzdHJp
bmcgIT09ICctJykgeworICAgICAgY2FsbGJhY2sodW5kZWZpbmVkLCBzdHJpbmcpOworICAgIH0g
ZWxzZSB7CisgICAgICAoZnVuY3Rpb24gKCkgeworICAgICAgICAvLyBMb2FkIGZyb20gc3RkaW4K
KyAgICAgICAgdmFyIGJ1ZmZlciA9ICcnOworICAgICAgICBwcm9jZXNzLnN0ZGluLnNldEVuY29k
aW5nKCd1dGY4Jyk7CisKKyAgICAgICAgcHJvY2Vzcy5zdGRpbi5vbignZGF0YScsIGZ1bmN0aW9u
IChjaHVuaykgeworICAgICAgICAgIGJ1ZmZlciArPSBjaHVuazsKKyAgICAgICAgfSk7CisgICAg
ICAgIHByb2Nlc3Muc3RkaW4ub24oJ2VuZCcsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICBjYWxs
YmFjayh1bmRlZmluZWQsIGJ1ZmZlcik7CisgICAgICAgIH0pOworICAgICAgfSkoKTsKKyAgICB9
CisgIH0sIGZ1bmN0aW9uIChlcnIsIHN0cmluZ3MpIHsKKyAgICBzdHJpbmdzID0gc3RyaW5ncy5t
YXAoZnVuY3Rpb24gKHN0cmluZywgaW5kZXgpIHsKKyAgICAgIHJldHVybiB7CisgICAgICAgIG5h
bWU6IG5hbWVzW2luZGV4XSwKKyAgICAgICAgcGF0aDogbmFtZXNbaW5kZXhdLAorICAgICAgICBz
b3VyY2U6IHN0cmluZworICAgICAgfTsKKyAgICB9KTsKKyAgICBjYWxsYmFjayhlcnIsIHN0cmlu
Z3MpOworICB9KTsKK30KKworZnVuY3Rpb24gbG9hZEZpbGVzKG9wdHMsIGNhbGxiYWNrKSB7Cisg
IC8vIEJ1aWxkIGZpbGUgZXh0ZW5zaW9uIHBhdHRlcm4KKyAgdmFyIGV4dGVuc2lvbiA9IChvcHRz
LmV4dGVuc2lvbiB8fCAnaGFuZGxlYmFycycpLnJlcGxhY2UoL1tcXF4kKis/LigpOj0hfHt9XC1c
W1xdXS9nLCBmdW5jdGlvbiAoYXJnKSB7CisgICAgcmV0dXJuICdcXCcgKyBhcmc7CisgIH0pOwor
ICBleHRlbnNpb24gPSBuZXcgUmVnRXhwKCdcXC4nICsgZXh0ZW5zaW9uICsgJyQnKTsKKworICB2
YXIgcmV0ID0gW10sCisgICAgICBxdWV1ZSA9IChvcHRzLmZpbGVzIHx8IFtdKS5tYXAoZnVuY3Rp
b24gKHRlbXBsYXRlKSB7CisgICAgcmV0dXJuIHsgdGVtcGxhdGU6IHRlbXBsYXRlLCByb290OiBv
cHRzLnJvb3QgfTsKKyAgfSk7CisgIF9hc3luYzJbJ2RlZmF1bHQnXS53aGlsc3QoZnVuY3Rpb24g
KCkgeworICAgIHJldHVybiBxdWV1ZS5sZW5ndGg7CisgIH0sIGZ1bmN0aW9uIChjYWxsYmFjaykg
eworICAgIHZhciBfcXVldWUkc2hpZnQgPSBxdWV1ZS5zaGlmdCgpOworCisgICAgdmFyIHBhdGgg
PSBfcXVldWUkc2hpZnQudGVtcGxhdGU7CisgICAgdmFyIHJvb3QgPSBfcXVldWUkc2hpZnQucm9v
dDsKKworICAgIF9mczJbJ2RlZmF1bHQnXS5zdGF0KHBhdGgsIGZ1bmN0aW9uIChlcnIsIHN0YXQp
IHsKKyAgICAgIGlmIChlcnIpIHsKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG5ldyBIYW5kbGVi
YXJzLkV4Y2VwdGlvbignVW5hYmxlIHRvIG9wZW4gdGVtcGxhdGUgZmlsZSAiJyArIHBhdGggKyAn
IicpKTsKKyAgICAgIH0KKworICAgICAgaWYgKHN0YXQuaXNEaXJlY3RvcnkoKSkgeworICAgICAg
ICBvcHRzLmhhc0RpcmVjdG9yeSA9IHRydWU7CisKKyAgICAgICAgX2ZzMlsnZGVmYXVsdCddLnJl
YWRkaXIocGF0aCwgZnVuY3Rpb24gKGVyciwgY2hpbGRyZW4pIHsKKyAgICAgICAgICAvKiBpc3Rh
bmJ1bCBpZ25vcmUgbmV4dCA6IFJhY2UgY29uZGl0aW9uIHRoYXQgYmVpbmcgdG9vIGxhenkgdG8g
dGVzdCAqLworICAgICAgICAgIGlmIChlcnIpIHsKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFj
ayhlcnIpOworICAgICAgICAgIH0KKyAgICAgICAgICBjaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9u
IChmaWxlKSB7CisgICAgICAgICAgICB2YXIgY2hpbGRQYXRoID0gcGF0aCArICcvJyArIGZpbGU7
CisKKyAgICAgICAgICAgIGlmIChleHRlbnNpb24udGVzdChjaGlsZFBhdGgpIHx8IF9mczJbJ2Rl
ZmF1bHQnXS5zdGF0U3luYyhjaGlsZFBhdGgpLmlzRGlyZWN0b3J5KCkpIHsKKyAgICAgICAgICAg
ICAgcXVldWUucHVzaCh7IHRlbXBsYXRlOiBjaGlsZFBhdGgsIHJvb3Q6IHJvb3QgfHwgcGF0aCB9
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9KTsKKworICAgICAgICAgIGNhbGxiYWNrKCk7
CisgICAgICAgIH0pOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgX2ZzMlsnZGVmYXVsdCddLnJl
YWRGaWxlKHBhdGgsICd1dGY4JywgZnVuY3Rpb24gKGVyciwgZGF0YSkgeworICAgICAgICAgIC8q
IGlzdGFuYnVsIGlnbm9yZSBuZXh0IDogUmFjZSBjb25kaXRpb24gdGhhdCBiZWluZyB0b28gbGF6
eSB0byB0ZXN0ICovCisgICAgICAgICAgaWYgKGVycikgeworICAgICAgICAgICAgcmV0dXJuIGNh
bGxiYWNrKGVycik7CisgICAgICAgICAgfQorCisgICAgICAgICAgaWYgKG9wdHMuYm9tICYmIGRh
dGEuaW5kZXhPZign77u/JykgPT09IDApIHsKKyAgICAgICAgICAgIGRhdGEgPSBkYXRhLnN1YnN0
cmluZygxKTsKKyAgICAgICAgICB9CisKKyAgICAgICAgICAvLyBDbGVhbiB0aGUgdGVtcGxhdGUg
bmFtZQorICAgICAgICAgIHZhciBuYW1lID0gcGF0aDsKKyAgICAgICAgICBpZiAoIXJvb3QpIHsK
KyAgICAgICAgICAgIG5hbWUgPSBfcGF0aC5iYXNlbmFtZShuYW1lKTsKKyAgICAgICAgICB9IGVs
c2UgaWYgKG5hbWUuaW5kZXhPZihyb290KSA9PT0gMCkgeworICAgICAgICAgICAgbmFtZSA9IG5h
bWUuc3Vic3RyaW5nKHJvb3QubGVuZ3RoICsgMSk7CisgICAgICAgICAgfQorICAgICAgICAgIG5h
bWUgPSBuYW1lLnJlcGxhY2UoZXh0ZW5zaW9uLCAnJyk7CisKKyAgICAgICAgICByZXQucHVzaCh7
CisgICAgICAgICAgICBwYXRoOiBwYXRoLAorICAgICAgICAgICAgbmFtZTogbmFtZSwKKyAgICAg
ICAgICAgIHNvdXJjZTogZGF0YQorICAgICAgICAgIH0pOworCisgICAgICAgICAgY2FsbGJhY2so
KTsKKyAgICAgICAgfSk7CisgICAgICB9CisgICAgfSk7CisgIH0sIGZ1bmN0aW9uIChlcnIpIHsK
KyAgICBpZiAoZXJyKSB7CisgICAgICBjYWxsYmFjayhlcnIpOworICAgIH0gZWxzZSB7CisgICAg
ICBjYWxsYmFjayh1bmRlZmluZWQsIHJldCk7CisgICAgfQorICB9KTsKK30KKworbW9kdWxlLmV4
cG9ydHMuY2xpID0gZnVuY3Rpb24gKG9wdHMpIHsKKyAgaWYgKG9wdHMudmVyc2lvbikgeworICAg
IGNvbnNvbGUubG9nKEhhbmRsZWJhcnMuVkVSU0lPTik7CisgICAgcmV0dXJuOworICB9CisKKyAg
aWYgKCFvcHRzLnRlbXBsYXRlcy5sZW5ndGggJiYgIW9wdHMuaGFzRGlyZWN0b3J5KSB7CisgICAg
dGhyb3cgbmV3IEhhbmRsZWJhcnMuRXhjZXB0aW9uKCdNdXN0IGRlZmluZSBhdCBsZWFzdCBvbmUg
dGVtcGxhdGUgb3IgZGlyZWN0b3J5LicpOworICB9CisKKyAgaWYgKG9wdHMuc2ltcGxlICYmIG9w
dHMubWluKSB7CisgICAgdGhyb3cgbmV3IEhhbmRsZWJhcnMuRXhjZXB0aW9uKCdVbmFibGUgdG8g
bWluaW1pemUgc2ltcGxlIG91dHB1dCcpOworICB9CisKKyAgdmFyIG11bHRpcGxlID0gb3B0cy50
ZW1wbGF0ZXMubGVuZ3RoICE9PSAxIHx8IG9wdHMuaGFzRGlyZWN0b3J5OworICBpZiAob3B0cy5z
aW1wbGUgJiYgbXVsdGlwbGUpIHsKKyAgICB0aHJvdyBuZXcgSGFuZGxlYmFycy5FeGNlcHRpb24o
J1VuYWJsZSB0byBvdXRwdXQgbXVsdGlwbGUgdGVtcGxhdGVzIGluIHNpbXBsZSBtb2RlJyk7Cisg
IH0KKworICAvLyBGb3JjZSBzaW1wbGUgbW9kZSBpZiB3ZSBoYXZlIG9ubHkgb25lIHRlbXBsYXRl
IGFuZCBpdCdzIHVubmFtZWQuCisgIGlmICghb3B0cy5hbWQgJiYgIW9wdHMuY29tbW9uanMgJiYg
b3B0cy50ZW1wbGF0ZXMubGVuZ3RoID09PSAxICYmICFvcHRzLnRlbXBsYXRlc1swXS5uYW1lKSB7
CisgICAgb3B0cy5zaW1wbGUgPSB0cnVlOworICB9CisKKyAgLy8gQ29udmVydCB0aGUga25vd24g
bGlzdCBpbnRvIGEgaGFzaAorICB2YXIga25vd24gPSB7fTsKKyAgaWYgKG9wdHMua25vd24gJiYg
IUFycmF5LmlzQXJyYXkob3B0cy5rbm93bikpIHsKKyAgICBvcHRzLmtub3duID0gW29wdHMua25v
d25dOworICB9CisgIGlmIChvcHRzLmtub3duKSB7CisgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9
IG9wdHMua25vd24ubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgIGtub3duW29wdHMua25v
d25baV1dID0gdHJ1ZTsKKyAgICB9CisgIH0KKworICB2YXIgb2JqZWN0TmFtZSA9IG9wdHMucGFy
dGlhbCA/ICdIYW5kbGViYXJzLnBhcnRpYWxzJyA6ICd0ZW1wbGF0ZXMnOworCisgIHZhciBvdXRw
dXQgPSBuZXcgX3NvdXJjZU1hcC5Tb3VyY2VOb2RlKCk7CisgIGlmICghb3B0cy5zaW1wbGUpIHsK
KyAgICBpZiAob3B0cy5hbWQpIHsKKyAgICAgIG91dHB1dC5hZGQoJ2RlZmluZShbXCcnICsgb3B0
cy5oYW5kbGViYXJQYXRoICsgJ2hhbmRsZWJhcnMucnVudGltZVwnXSwgZnVuY3Rpb24oSGFuZGxl
YmFycykge1xuICBIYW5kbGViYXJzID0gSGFuZGxlYmFyc1siZGVmYXVsdCJdOycpOworICAgIH0g
ZWxzZSBpZiAob3B0cy5jb21tb25qcykgeworICAgICAgb3V0cHV0LmFkZCgndmFyIEhhbmRsZWJh
cnMgPSByZXF1aXJlKCInICsgb3B0cy5jb21tb25qcyArICciKTsnKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgb3V0cHV0LmFkZCgnKGZ1bmN0aW9uKCkge1xuJyk7CisgICAgfQorICAgIG91dHB1dC5h
ZGQoJyAgdmFyIHRlbXBsYXRlID0gSGFuZGxlYmFycy50ZW1wbGF0ZSwgdGVtcGxhdGVzID0gJyk7
CisgICAgaWYgKG9wdHMubmFtZXNwYWNlKSB7CisgICAgICBvdXRwdXQuYWRkKG9wdHMubmFtZXNw
YWNlKTsKKyAgICAgIG91dHB1dC5hZGQoJyA9ICcpOworICAgICAgb3V0cHV0LmFkZChvcHRzLm5h
bWVzcGFjZSk7CisgICAgICBvdXRwdXQuYWRkKCcgfHwgJyk7CisgICAgfQorICAgIG91dHB1dC5h
ZGQoJ3t9O1xuJyk7CisgIH0KKworICBvcHRzLnRlbXBsYXRlcy5mb3JFYWNoKGZ1bmN0aW9uICh0
ZW1wbGF0ZSkgeworICAgIHZhciBvcHRpb25zID0geworICAgICAga25vd25IZWxwZXJzOiBrbm93
biwKKyAgICAgIGtub3duSGVscGVyc09ubHk6IG9wdHMubworICAgIH07CisKKyAgICBpZiAob3B0
cy5tYXApIHsKKyAgICAgIG9wdGlvbnMuc3JjTmFtZSA9IHRlbXBsYXRlLnBhdGg7CisgICAgfQor
ICAgIGlmIChvcHRzLmRhdGEpIHsKKyAgICAgIG9wdGlvbnMuZGF0YSA9IHRydWU7CisgICAgfQor
CisgICAgdmFyIHByZWNvbXBpbGVkID0gSGFuZGxlYmFycy5wcmVjb21waWxlKHRlbXBsYXRlLnNv
dXJjZSwgb3B0aW9ucyk7CisKKyAgICAvLyBJZiB3ZSBhcmUgZ2VuZXJhdGluZyBhIHNvdXJjZSBt
YXAsIHdlIGhhdmUgdG8gcmVjb25zdHJ1Y3QgdGhlIFNvdXJjZU5vZGUgb2JqZWN0CisgICAgaWYg
KG9wdHMubWFwKSB7CisgICAgICB2YXIgY29uc3VtZXIgPSBuZXcgX3NvdXJjZU1hcC5Tb3VyY2VN
YXBDb25zdW1lcihwcmVjb21waWxlZC5tYXApOworICAgICAgcHJlY29tcGlsZWQgPSBfc291cmNl
TWFwLlNvdXJjZU5vZGUuZnJvbVN0cmluZ1dpdGhTb3VyY2VNYXAocHJlY29tcGlsZWQuY29kZSwg
Y29uc3VtZXIpOworICAgIH0KKworICAgIGlmIChvcHRzLnNpbXBsZSkgeworICAgICAgb3V0cHV0
LmFkZChbcHJlY29tcGlsZWQsICdcbiddKTsKKyAgICB9IGVsc2UgeworICAgICAgaWYgKCF0ZW1w
bGF0ZS5uYW1lKSB7CisgICAgICAgIHRocm93IG5ldyBIYW5kbGViYXJzLkV4Y2VwdGlvbignTmFt
ZSBtaXNzaW5nIGZvciB0ZW1wbGF0ZScpOworICAgICAgfQorCisgICAgICBpZiAob3B0cy5hbWQg
JiYgIW11bHRpcGxlKSB7CisgICAgICAgIG91dHB1dC5hZGQoJ3JldHVybiAnKTsKKyAgICAgIH0K
KyAgICAgIG91dHB1dC5hZGQoW29iamVjdE5hbWUsICdbXCcnLCB0ZW1wbGF0ZS5uYW1lLCAnXCdd
ID0gdGVtcGxhdGUoJywgcHJlY29tcGlsZWQsICcpO1xuJ10pOworICAgIH0KKyAgfSk7CisKKyAg
Ly8gT3V0cHV0IHRoZSBjb250ZW50CisgIGlmICghb3B0cy5zaW1wbGUpIHsKKyAgICBpZiAob3B0
cy5hbWQpIHsKKyAgICAgIGlmIChtdWx0aXBsZSkgeworICAgICAgICBvdXRwdXQuYWRkKFsncmV0
dXJuICcsIG9iamVjdE5hbWUsICc7XG4nXSk7CisgICAgICB9CisgICAgICBvdXRwdXQuYWRkKCd9
KTsnKTsKKyAgICB9IGVsc2UgaWYgKCFvcHRzLmNvbW1vbmpzKSB7CisgICAgICBvdXRwdXQuYWRk
KCd9KSgpOycpOworICAgIH0KKyAgfQorCisgIGlmIChvcHRzLm1hcCkgeworICAgIG91dHB1dC5h
ZGQoJ1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9JyArIG9wdHMubWFwICsgJ1xuJyk7CisgIH0KKwor
ICBvdXRwdXQgPSBvdXRwdXQudG9TdHJpbmdXaXRoU291cmNlTWFwKCk7CisgIG91dHB1dC5tYXAg
PSBvdXRwdXQubWFwICsgJyc7CisKKyAgaWYgKG9wdHMubWluKSB7CisgICAgb3V0cHV0ID0gX3Vn
bGlmeUpzMlsnZGVmYXVsdCddLm1pbmlmeShvdXRwdXQuY29kZSwgeworICAgICAgZnJvbVN0cmlu
ZzogdHJ1ZSwKKworICAgICAgb3V0U291cmNlTWFwOiBvcHRzLm1hcCwKKyAgICAgIGluU291cmNl
TWFwOiBKU09OLnBhcnNlKG91dHB1dC5tYXApCisgICAgfSk7CisgICAgaWYgKG9wdHMubWFwKSB7
CisgICAgICBvdXRwdXQuY29kZSArPSAnXG4vLyMgc291cmNlTWFwcGluZ1VSTD0nICsgb3B0cy5t
YXAgKyAnXG4nOworICAgIH0KKyAgfQorCisgIGlmIChvcHRzLm1hcCkgeworICAgIF9mczJbJ2Rl
ZmF1bHQnXS53cml0ZUZpbGVTeW5jKG9wdHMubWFwLCBvdXRwdXQubWFwLCAndXRmOCcpOworICB9
CisgIG91dHB1dCA9IG91dHB1dC5jb2RlOworCisgIGlmIChvcHRzLm91dHB1dCkgeworICAgIF9m
czJbJ2RlZmF1bHQnXS53cml0ZUZpbGVTeW5jKG9wdHMub3V0cHV0LCBvdXRwdXQsICd1dGY4Jyk7
CisgIH0gZWxzZSB7CisgICAgY29uc29sZS5sb2cob3V0cHV0KTsKKyAgfQorfTsKKworZnVuY3Rp
b24gYXJyYXlDYXN0KHZhbHVlKSB7CisgIHZhbHVlID0gdmFsdWUgIT0gbnVsbCA/IHZhbHVlIDog
W107CisgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHsKKyAgICB2YWx1ZSA9IFt2YWx1ZV07
CisgIH0KKyAgcmV0dXJuIHZhbHVlOworfQorLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBs
aWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYklpNHVM
eTR1TDJ4cFlpOXdjbVZqYjIxd2FXeGxjaTVxY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJt
ZHpJam9pT3pzN096czdPenM3T3p0eFFrRkRhMElzVDBGQlR6czdPenRyUWtGRFZpeEpRVUZKT3pz
N096QkNRVU5UTEdOQlFXTTdPMGxCUVRsQ0xGVkJRVlU3TzI5Q1FVTkRMRTFCUVUwN08zbENRVU5s
TEZsQlFWazdPM2RDUVVOeVF5eFhRVUZYT3pzN08wRkJSVGxDTEUxQlFVMHNRMEZCUXl4UFFVRlBM
RU5CUVVNc1lVRkJZU3hIUVVGSExGVkJRVk1zU1VGQlNTeEZRVUZGTEZGQlFWRXNSVUZCUlR0QlFV
TjBSQ3hoUVVGWExFTkJRVU1zU1VGQlNTeEZRVUZGTEZWQlFWTXNSMEZCUnl4RlFVRkZMRTlCUVU4
c1JVRkJSVHRCUVVOMlF5eFJRVUZKTEVkQlFVY3NSVUZCUlR0QlFVTlFMR05CUVZFc1EwRkJReXhI
UVVGSExFTkJRVU1zUTBGQlF6dExRVU5tTEUxQlFVMDdRVUZEVEN4bFFVRlRMRU5CUVVNc1NVRkJT
U3hGUVVGRkxGVkJRVk1zUjBGQlJ5eEZRVUZGTEV0QlFVc3NSVUZCUlR0QlFVTnVReXhaUVVGSkxF
ZEJRVWNzUlVGQlJUdEJRVU5RTEd0Q1FVRlJMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03VTBG
RFppeE5RVUZOTzBGQlEwd3NZMEZCU1N4RFFVRkRMRk5CUVZNc1IwRkJSeXhQUVVGUExFTkJRVU1z
VFVGQlRTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMEZCUTNaRExHdENRVUZSTEVOQlFVTXNV
MEZCVXl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRE8xTkJRek5DTzA5QlEwWXNRMEZCUXl4RFFV
RkRPMHRCUTBvN1IwRkRSaXhEUVVGRExFTkJRVU03UTBGRFNpeERRVUZET3p0QlFVVkdMRk5CUVZN
c1YwRkJWeXhEUVVGRExFbEJRVWtzUlVGQlJTeFJRVUZSTEVWQlFVVTdRVUZEYmtNc1RVRkJTU3hQ
UVVGUExFZEJRVWNzVTBGQlV5eERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNN1RVRkRh
RU1zUzBGQlN5eEhRVUZITEZOQlFWTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExF
TkJRVU03TzBGQlJXcERMRTFCUVVrc1MwRkJTeXhEUVVGRExFMUJRVTBzUzBGQlN5eFBRVUZQTEVO
QlFVTXNUVUZCVFN4SlFVTTFRaXhQUVVGUExFTkJRVU1zVFVGQlRTeEhRVUZITEVOQlFVTXNSVUZC
UlR0QlFVTjZRaXhYUVVGUExGRkJRVkVzUTBGQlF5eEpRVUZKTEZWQlFWVXNRMEZCUXl4VFFVRlRM
RU5CUVVNc01rUkJRVEpFTEVOQlFVTXNRMEZCUXl4RFFVRkRPMGRCUTNoSE96dEJRVVZFTEhGQ1FV
Rk5MRWRCUVVjc1EwRkJReXhQUVVGUExFVkJRVVVzVlVGQlV5eE5RVUZOTEVWQlFVVXNVVUZCVVN4
RlFVRkZPMEZCUXpGRExGRkJRVWtzVFVGQlRTeExRVUZMTEVkQlFVY3NSVUZCUlR0QlFVTnNRaXhq
UVVGUkxFTkJRVU1zVTBGQlV5eEZRVUZGTEUxQlFVMHNRMEZCUXl4RFFVRkRPMHRCUXpkQ0xFMUJR
VTA3T3p0QlFVVk1MRmxCUVVrc1RVRkJUU3hIUVVGSExFVkJRVVVzUTBGQlF6dEJRVU5vUWl4bFFV
RlBMRU5CUVVNc1MwRkJTeXhEUVVGRExGZEJRVmNzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXpz
N1FVRkZiRU1zWlVGQlR5eERRVUZETEV0QlFVc3NRMEZCUXl4RlFVRkZMRU5CUVVNc1RVRkJUU3hG
UVVGRkxGVkJRVk1zUzBGQlN5eEZRVUZGTzBGQlEzWkRMR2RDUVVGTkxFbEJRVWtzUzBGQlN5eERR
VUZETzFOQlEycENMRU5CUVVNc1EwRkJRenRCUVVOSUxHVkJRVThzUTBGQlF5eExRVUZMTEVOQlFV
TXNSVUZCUlN4RFFVRkRMRXRCUVVzc1JVRkJSU3haUVVGWE8wRkJRMnBETEd0Q1FVRlJMRU5CUVVN
c1UwRkJVeXhGUVVGRkxFMUJRVTBzUTBGQlF5eERRVUZETzFOQlF6ZENMRU5CUVVNc1EwRkJRenM3
UzBGRFNqdEhRVU5HTEVWQlEwUXNWVUZCVXl4SFFVRkhMRVZCUVVVc1QwRkJUeXhGUVVGRk8wRkJR
M0pDTEZkQlFVOHNSMEZCUnl4UFFVRlBMRU5CUVVNc1IwRkJSeXhEUVVGRExGVkJRVU1zVFVGQlRT
eEZRVUZGTEV0QlFVczdZVUZCVFR0QlFVTjRReXhaUVVGSkxFVkJRVVVzUzBGQlN5eERRVUZETEV0
QlFVc3NRMEZCUXp0QlFVTnNRaXhaUVVGSkxFVkJRVVVzUzBGQlN5eERRVUZETEV0QlFVc3NRMEZC
UXp0QlFVTnNRaXhqUVVGTkxFVkJRVVVzVFVGQlRUdFBRVU5tTzB0QlFVTXNRMEZCUXl4RFFVRkRP
MEZCUTBvc1dVRkJVU3hEUVVGRExFZEJRVWNzUlVGQlJTeFBRVUZQTEVOQlFVTXNRMEZCUXp0SFFV
TjRRaXhEUVVGRExFTkJRVU03UTBGRFRqczdRVUZGUkN4VFFVRlRMRk5CUVZNc1EwRkJReXhKUVVG
SkxFVkJRVVVzVVVGQlVTeEZRVUZGT3p0QlFVVnFReXhOUVVGSkxGTkJRVk1zUjBGQlJ5eERRVUZE
TEVsQlFVa3NRMEZCUXl4VFFVRlRMRWxCUVVrc1dVRkJXU3hEUVVGQkxFTkJRVVVzVDBGQlR5eERR
VUZETERKQ1FVRXlRaXhGUVVGRkxGVkJRVk1zUjBGQlJ5eEZRVUZGTzBGQlFVVXNWMEZCVHl4SlFV
RkpMRWRCUVVjc1IwRkJSeXhEUVVGRE8wZEJRVVVzUTBGQlF5eERRVUZETzBGQlF6VklMRmRCUVZN
c1IwRkJSeXhKUVVGSkxFMUJRVTBzUTBGQlF5eExRVUZMTEVkQlFVY3NVMEZCVXl4SFFVRkhMRWRC
UVVjc1EwRkJReXhEUVVGRE96dEJRVVZvUkN4TlFVRkpMRWRCUVVjc1IwRkJSeXhGUVVGRk8wMUJR
MUlzUzBGQlN5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1NVRkJTU3hGUVVGRkxF
TkJRVUVzUTBGQlJTeEhRVUZITEVOQlFVTXNWVUZCUXl4UlFVRlJPMWRCUVUwc1JVRkJReXhSUVVG
UkxFVkJRVklzVVVGQlVTeEZRVUZGTEVsQlFVa3NSVUZCUlN4SlFVRkpMRU5CUVVNc1NVRkJTU3hG
UVVGRE8wZEJRVU1zUTBGQlF5eERRVUZETzBGQlEyaEdMSEZDUVVGTkxFMUJRVTBzUTBGQlF6dFhR
VUZOTEV0QlFVc3NRMEZCUXl4TlFVRk5PMGRCUVVFc1JVRkJSU3hWUVVGVExGRkJRVkVzUlVGQlJU
dDFRa0ZEY2tJc1MwRkJTeXhEUVVGRExFdEJRVXNzUlVGQlJUczdVVUZCTTBJc1NVRkJTU3huUWtG
QlpDeFJRVUZSTzFGQlFWRXNTVUZCU1N4blFrRkJTaXhKUVVGSk96dEJRVVY2UWl4dlFrRkJSeXhK
UVVGSkxFTkJRVU1zU1VGQlNTeEZRVUZGTEZWQlFWTXNSMEZCUnl4RlFVRkZMRWxCUVVrc1JVRkJS
VHRCUVVOb1F5eFZRVUZKTEVkQlFVY3NSVUZCUlR0QlFVTlFMR1ZCUVU4c1VVRkJVU3hEUVVGRExF
bEJRVWtzVlVGQlZTeERRVUZETEZOQlFWTXNiME5CUVd0RExFbEJRVWtzVDBGQlNTeERRVUZETEVO
QlFVTTdUMEZEY2tZN08wRkJSVVFzVlVGQlNTeEpRVUZKTEVOQlFVTXNWMEZCVnl4RlFVRkZMRVZC
UVVVN1FVRkRkRUlzV1VGQlNTeERRVUZETEZsQlFWa3NSMEZCUnl4SlFVRkpMRU5CUVVNN08wRkJS
WHBDTEhkQ1FVRkhMRTlCUVU4c1EwRkJReXhKUVVGSkxFVkJRVVVzVlVGQlV5eEhRVUZITEVWQlFV
VXNVVUZCVVN4RlFVRkZPenRCUVVWMlF5eGpRVUZKTEVkQlFVY3NSVUZCUlR0QlFVTlFMRzFDUVVG
UExGRkJRVkVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0WFFVTjBRanRCUVVORUxHdENRVUZS
TEVOQlFVTXNUMEZCVHl4RFFVRkRMRlZCUVZNc1NVRkJTU3hGUVVGRk8wRkJRemxDTEdkQ1FVRkpM
Rk5CUVZNc1IwRkJSeXhKUVVGSkxFZEJRVWNzUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXpzN1FV
RkZiRU1zWjBKQlFVa3NVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zU1VG
QlNTeG5Ra0ZCUnl4UlFVRlJMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zVjBGQlZ5eEZRVUZG
TEVWQlFVVTdRVUZEY2tVc2JVSkJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUXl4UlFVRlJM
RVZCUVVVc1UwRkJVeXhGUVVGRkxFbEJRVWtzUlVGQlJTeEpRVUZKTEVsQlFVa3NTVUZCU1N4RlFV
RkRMRU5CUVVNc1EwRkJRenRoUVVOMlJEdFhRVU5HTEVOQlFVTXNRMEZCUXpzN1FVRkZTQ3hyUWtG
QlVTeEZRVUZGTEVOQlFVTTdVMEZEV2l4RFFVRkRMRU5CUVVNN1QwRkRTaXhOUVVGTk8wRkJRMHdz
ZDBKQlFVY3NVVUZCVVN4RFFVRkRMRWxCUVVrc1JVRkJSU3hOUVVGTkxFVkJRVVVzVlVGQlV5eEhR
VUZITEVWQlFVVXNTVUZCU1N4RlFVRkZPenRCUVVVMVF5eGpRVUZKTEVkQlFVY3NSVUZCUlR0QlFV
TlFMRzFDUVVGUExGRkJRVkVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0WFFVTjBRanM3UVVG
RlJDeGpRVUZKTEVsQlFVa3NRMEZCUXl4SFFVRkhMRWxCUVVrc1NVRkJTU3hEUVVGRExFOUJRVThz
UTBGQlF5eEhRVUZSTEVOQlFVTXNTMEZCU3l4RFFVRkRMRVZCUVVVN1FVRkROVU1zWjBKQlFVa3NS
MEZCUnl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFkQlF6
RkNPenM3UVVGSFJDeGpRVUZKTEVsQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNN1FVRkRhRUlzWTBG
QlNTeERRVUZETEVsQlFVa3NSVUZCUlR0QlFVTlVMR2RDUVVGSkxFZEJRVWNzWlVGQlV5eEpRVUZK
TEVOQlFVTXNRMEZCUXp0WFFVTjJRaXhOUVVGTkxFbEJRVWtzU1VGQlNTeERRVUZETEU5QlFVOHNR
MEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFVkJRVVU3UVVGRGJrTXNaMEpCUVVrc1Iw
RkJSeXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRWRCUVVj
c1EwRkJReXhEUVVGRExFTkJRVU03VjBGRGVFTTdRVUZEUkN4alFVRkpMRWRCUVVjc1NVRkJTU3hE
UVVGRExFOUJRVThzUTBGQlF5eFRRVUZUTEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNN08wRkJS
VzVETEdGQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNN1FVRkRVQ3huUWtGQlNTeEZRVUZGTEVsQlFV
azdRVUZEVml4blFrRkJTU3hGUVVGRkxFbEJRVWs3UVVGRFZpeHJRa0ZCVFN4RlFVRkZMRWxCUVVr
N1YwRkRZaXhEUVVGRExFTkJRVU03TzBGQlJVZ3NhMEpCUVZFc1JVRkJSU3hEUVVGRE8xTkJRMW9z
UTBGQlF5eERRVUZETzA5QlEwbzdTMEZEUml4RFFVRkRMRU5CUVVNN1IwRkRTaXhGUVVORUxGVkJR
Vk1zUjBGQlJ5eEZRVUZGTzBGQlExb3NVVUZCU1N4SFFVRkhMRVZCUVVVN1FVRkRVQ3hqUVVGUkxF
TkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdTMEZEWml4TlFVRk5PMEZCUTB3c1kwRkJVU3hEUVVG
RExGTkJRVk1zUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXp0TFFVTXhRanRIUVVOR0xFTkJRVU1z
UTBGQlF6dERRVU5LT3p0QlFVVkVMRTFCUVUwc1EwRkJReXhQUVVGUExFTkJRVU1zUjBGQlJ5eEhR
VUZITEZWQlFWTXNTVUZCU1N4RlFVRkZPMEZCUTJ4RExFMUJRVWtzU1VGQlNTeERRVUZETEU5QlFV
OHNSVUZCUlR0QlFVTm9RaXhYUVVGUExFTkJRVU1zUjBGQlJ5eERRVUZETEZWQlFWVXNRMEZCUXl4
UFFVRlBMRU5CUVVNc1EwRkJRenRCUVVOb1F5eFhRVUZQTzBkQlExSTdPMEZCUlVRc1RVRkJTU3hE
UVVGRExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNUVUZCVFN4SlFVRkpMRU5CUVVNc1NVRkJT
U3hEUVVGRExGbEJRVmtzUlVGQlJUdEJRVU5vUkN4VlFVRk5MRWxCUVVrc1ZVRkJWU3hEUVVGRExG
TkJRVk1zUTBGQlF5eHBSRUZCYVVRc1EwRkJReXhEUVVGRE8wZEJRMjVHT3p0QlFVVkVMRTFCUVVr
c1NVRkJTU3hEUVVGRExFMUJRVTBzU1VGQlNTeEpRVUZKTEVOQlFVTXNSMEZCUnl4RlFVRkZPMEZC
UXpOQ0xGVkJRVTBzU1VGQlNTeFZRVUZWTEVOQlFVTXNVMEZCVXl4RFFVRkRMR3REUVVGclF5eERR
VUZETEVOQlFVTTdSMEZEY0VVN08wRkJSVVFzVFVGQlRTeFJRVUZSTEVkQlFVY3NTVUZCU1N4RFFV
RkRMRk5CUVZNc1EwRkJReXhOUVVGTkxFdEJRVXNzUTBGQlF5eEpRVUZKTEVsQlFVa3NRMEZCUXl4
WlFVRlpMRU5CUVVNN1FVRkRiRVVzVFVGQlNTeEpRVUZKTEVOQlFVTXNUVUZCVFN4SlFVRkpMRkZC
UVZFc1JVRkJSVHRCUVVNelFpeFZRVUZOTEVsQlFVa3NWVUZCVlN4RFFVRkRMRk5CUVZNc1EwRkJR
eXh2UkVGQmIwUXNRMEZCUXl4RFFVRkRPMGRCUTNSR096czdRVUZIUkN4TlFVRkpMRU5CUVVNc1NV
RkJTU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4UlFVRlJMRWxCUVVr
c1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eE5RVUZOTEV0QlFVc3NRMEZCUXl4SlFVTjJSQ3hE
UVVGRExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJT
U3hGUVVGRk8wRkJRemxDTEZGQlFVa3NRMEZCUXl4TlFVRk5MRWRCUVVjc1NVRkJTU3hEUVVGRE8w
ZEJRM0JDT3pzN1FVRkhSQ3hOUVVGSkxFdEJRVXNzUjBGQlJ5eEZRVUZGTEVOQlFVTTdRVUZEWml4
TlFVRkpMRWxCUVVrc1EwRkJReXhMUVVGTExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNUMEZC
VHl4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUlVGQlJUdEJRVU0xUXl4UlFVRkpM
RU5CUVVNc1MwRkJTeXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFV
RkRPMGRCUXpOQ08wRkJRMFFzVFVGQlNTeEpRVUZKTEVOQlFVTXNTMEZCU3l4RlFVRkZPMEZCUTJR
c1UwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNSMEZCUnl4SFFVRkhMRWxC
UVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTXNSMEZCUnl4SFFVRkhM
RVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3UVVGRGNrUXNWMEZCU3l4RFFVRkRMRWxCUVVrc1Ew
RkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVN
N1MwRkROMEk3UjBGRFJqczdRVUZGUkN4TlFVRk5MRlZCUVZVc1IwRkJSeXhKUVVGSkxFTkJRVU1z
VDBGQlR5eEhRVUZITEhGQ1FVRnhRaXhIUVVGSExGZEJRVmNzUTBGQlF6czdRVUZGZEVVc1RVRkJT
U3hOUVVGTkxFZEJRVWNzTWtKQlFXZENMRU5CUVVNN1FVRkRPVUlzVFVGQlNTeERRVUZETEVsQlFV
a3NRMEZCUXl4TlFVRk5MRVZCUVVVN1FVRkRhRUlzVVVGQlNTeEpRVUZKTEVOQlFVTXNSMEZCUnl4
RlFVRkZPMEZCUTFvc1dVRkJUU3hEUVVGRExFZEJRVWNzUTBGQlF5eFpRVUZaTEVkQlFVY3NTVUZC
U1N4RFFVRkRMR0ZCUVdFc1IwRkJSeXh6UmtGQmMwWXNRMEZCUXl4RFFVRkRPMHRCUTNoSkxFMUJR
VTBzU1VGQlNTeEpRVUZKTEVOQlFVTXNVVUZCVVN4RlFVRkZPMEZCUTNoQ0xGbEJRVTBzUTBGQlF5
eEhRVUZITEVOQlFVTXNORUpCUVRSQ0xFZEJRVWNzU1VGQlNTeERRVUZETEZGQlFWRXNSMEZCUnl4
TFFVRkxMRU5CUVVNc1EwRkJRenRMUVVOc1JTeE5RVUZOTzBGQlEwd3NXVUZCVFN4RFFVRkRMRWRC
UVVjc1EwRkJReXhwUWtGQmFVSXNRMEZCUXl4RFFVRkRPMHRCUXk5Q08wRkJRMFFzVlVGQlRTeERR
VUZETEVkQlFVY3NRMEZCUXl4dlJFRkJiMFFzUTBGQlF5eERRVUZETzBGQlEycEZMRkZCUVVrc1NV
RkJTU3hEUVVGRExGTkJRVk1zUlVGQlJUdEJRVU5zUWl4WlFVRk5MRU5CUVVNc1IwRkJSeXhEUVVG
RExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXp0QlFVTXpRaXhaUVVGTkxFTkJRVU1z
UjBGQlJ5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMEZCUTJ4Q0xGbEJRVTBzUTBGQlF5eEhR
VUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRE8wRkJRek5DTEZsQlFV
MHNRMEZCUXl4SFFVRkhMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03UzBGRGNFSTdRVUZEUkN4
VlFVRk5MRU5CUVVNc1IwRkJSeXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzBkQlEzSkNPenRC
UVVWRUxFMUJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNUMEZCVHl4RFFVRkRMRlZCUVZNc1VVRkJV
U3hGUVVGRk8wRkJRM2hETEZGQlFVa3NUMEZCVHl4SFFVRkhPMEZCUTFvc2EwSkJRVmtzUlVGQlJT
eExRVUZMTzBGQlEyNUNMSE5DUVVGblFpeEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPMHRCUTNw
Q0xFTkJRVU03TzBGQlJVWXNVVUZCU1N4SlFVRkpMRU5CUVVNc1IwRkJSeXhGUVVGRk8wRkJRMW9z
WVVGQlR5eERRVUZETEU5QlFVOHNSMEZCUnl4UlFVRlJMRU5CUVVNc1NVRkJTU3hEUVVGRE8wdEJR
MnBETzBGQlEwUXNVVUZCU1N4SlFVRkpMRU5CUVVNc1NVRkJTU3hGUVVGRk8wRkJRMklzWVVGQlR5
eERRVUZETEVsQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNN1MwRkRja0k3TzBGQlJVUXNVVUZCU1N4
WFFVRlhMRWRCUVVjc1ZVRkJWU3hEUVVGRExGVkJRVlVzUTBGQlF5eFJRVUZSTEVOQlFVTXNUVUZC
VFN4RlFVRkZMRTlCUVU4c1EwRkJReXhEUVVGRE96czdRVUZIYkVVc1VVRkJTU3hKUVVGSkxFTkJR
VU1zUjBGQlJ5eEZRVUZGTzBGQlExb3NWVUZCU1N4UlFVRlJMRWRCUVVjc2FVTkJRWE5DTEZkQlFW
Y3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRCUVVOMFJDeHBRa0ZCVnl4SFFVRkhMSE5DUVVG
WExIVkNRVUYxUWl4RFFVRkRMRmRCUVZjc1EwRkJReXhKUVVGSkxFVkJRVVVzVVVGQlVTeERRVUZE
TEVOQlFVTTdTMEZET1VVN08wRkJSVVFzVVVGQlNTeEpRVUZKTEVOQlFVTXNUVUZCVFN4RlFVRkZP
MEZCUTJZc1dVRkJUU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEZkQlFWY3NSVUZCUlN4SlFV
RkpMRU5CUVVNc1EwRkJReXhEUVVGRE8wdEJRMnBETEUxQlFVMDdRVUZEVEN4VlFVRkpMRU5CUVVN
c1VVRkJVU3hEUVVGRExFbEJRVWtzUlVGQlJUdEJRVU5zUWl4alFVRk5MRWxCUVVrc1ZVRkJWU3hE
UVVGRExGTkJRVk1zUTBGQlF5d3lRa0ZCTWtJc1EwRkJReXhEUVVGRE8wOUJRemRFT3p0QlFVVkVM
RlZCUVVrc1NVRkJTU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEZGQlFWRXNSVUZCUlR0QlFV
TjZRaXhqUVVGTkxFTkJRVU1zUjBGQlJ5eERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRPMDlCUTNa
Q08wRkJRMFFzV1VGQlRTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRlZCUVZVc1JVRkJSU3hM
UVVGTExFVkJRVVVzVVVGQlVTeERRVUZETEVsQlFVa3NSVUZCUlN4cFFrRkJhVUlzUlVGQlJTeFhR
VUZYTEVWQlFVVXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJRenRMUVVONFJqdEhRVU5HTEVOQlFV
TXNRMEZCUXpzN08wRkJSMGdzVFVGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVV
N1FVRkRhRUlzVVVGQlNTeEpRVUZKTEVOQlFVTXNSMEZCUnl4RlFVRkZPMEZCUTFvc1ZVRkJTU3hS
UVVGUkxFVkJRVVU3UVVGRFdpeGpRVUZOTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1UwRkJV
eXhGUVVGRkxGVkJRVlVzUlVGQlJTeExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRPMDlCUXpWRE8w
RkJRMFFzV1VGQlRTeERRVUZETEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRMUVVO
dVFpeE5RVUZOTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1VVRkJVU3hGUVVGRk8wRkJRM3BD
TEZsQlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03UzBGRGNrSTdS
MEZEUmpzN1FVRkhSQ3hOUVVGSkxFbEJRVWtzUTBGQlF5eEhRVUZITEVWQlFVVTdRVUZEV2l4VlFV
Rk5MRU5CUVVNc1IwRkJSeXhEUVVGRExIbENRVUY1UWl4SFFVRkhMRWxCUVVrc1EwRkJReXhIUVVG
SExFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTTdSMEZEZWtRN08wRkJSVVFzVVVGQlRTeEhRVUZI
TEUxQlFVMHNRMEZCUXl4eFFrRkJjVUlzUlVGQlJTeERRVUZETzBGQlEzaERMRkZCUVUwc1EwRkJR
eXhIUVVGSExFZEJRVWNzVFVGQlRTeERRVUZETEVkQlFVY3NSMEZCUnl4RlFVRkZMRU5CUVVNN08w
RkJSVGRDTEUxQlFVa3NTVUZCU1N4RFFVRkRMRWRCUVVjc1JVRkJSVHRCUVVOYUxGVkJRVTBzUjBG
QlJ5eHpRa0ZCVHl4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUlVGQlJUdEJRVU5z
UXl4blFrRkJWU3hGUVVGRkxFbEJRVWs3TzBGQlJXaENMR3RDUVVGWkxFVkJRVVVzU1VGQlNTeERR
VUZETEVkQlFVYzdRVUZEZEVJc2FVSkJRVmNzUlVGQlJTeEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFV
RkRMRTFCUVUwc1EwRkJReXhIUVVGSExFTkJRVU03UzBGRGNFTXNRMEZCUXl4RFFVRkRPMEZCUTBn
c1VVRkJTU3hKUVVGSkxFTkJRVU1zUjBGQlJ5eEZRVUZGTzBGQlExb3NXVUZCVFN4RFFVRkRMRWxC
UVVrc1NVRkJTU3g1UWtGQmVVSXNSMEZCUnl4SlFVRkpMRU5CUVVNc1IwRkJSeXhIUVVGSExFbEJR
VWtzUTBGQlF6dExRVU0xUkR0SFFVTkdPenRCUVVWRUxFMUJRVWtzU1VGQlNTeERRVUZETEVkQlFV
Y3NSVUZCUlR0QlFVTmFMRzlDUVVGSExHRkJRV0VzUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4
RlFVRkZMRTFCUVUwc1EwRkJReXhIUVVGSExFVkJRVVVzVFVGQlRTeERRVUZETEVOQlFVTTdSMEZE
YUVRN1FVRkRSQ3hSUVVGTkxFZEJRVWNzVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXpzN1FVRkZj
a0lzVFVGQlNTeEpRVUZKTEVOQlFVTXNUVUZCVFN4RlFVRkZPMEZCUTJZc2IwSkJRVWNzWVVGQllT
eERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1RVRkJUU3hGUVVGRkxFMUJRVTBzUTBG
QlF5eERRVUZETzBkQlF5OURMRTFCUVUwN1FVRkRUQ3hYUVVGUExFTkJRVU1zUjBGQlJ5eERRVUZE
TEUxQlFVMHNRMEZCUXl4RFFVRkRPMGRCUTNKQ08wTkJRMFlzUTBGQlF6czdRVUZGUml4VFFVRlRM
Rk5CUVZNc1EwRkJReXhMUVVGTExFVkJRVVU3UVVGRGVFSXNUMEZCU3l4SFFVRkhMRXRCUVVzc1NV
RkJTU3hKUVVGSkxFZEJRVWNzUzBGQlN5eEhRVUZITEVWQlFVVXNRMEZCUXp0QlFVTnVReXhOUVVG
SkxFTkJRVU1zUzBGQlN5eERRVUZETEU5QlFVOHNRMEZCUXl4TFFVRkxMRU5CUVVNc1JVRkJSVHRC
UVVONlFpeFRRVUZMTEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRIUVVOcVFqdEJR
VU5FTEZOQlFVOHNTMEZCU3l4RFFVRkRPME5CUTJRaUxDSm1hV3hsSWpvaWNISmxZMjl0Y0dsc1pY
SXVhbk1pTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lJdktpQmxjMnhwYm5RdFpHbHpZV0pzWlNC
dWJ5MWpiMjV6YjJ4bElDb3ZYRzVwYlhCdmNuUWdRWE41Ym1NZ1puSnZiU0FuWVhONWJtTW5PMXh1
YVcxd2IzSjBJR1p6SUdaeWIyMGdKMlp6Snp0Y2JtbHRjRzl5ZENBcUlHRnpJRWhoYm1Sc1pXSmhj
bk1nWm5KdmJTQW5MaTlvWVc1a2JHVmlZWEp6Snp0Y2JtbHRjRzl5ZENCN1ltRnpaVzVoYldWOUlH
WnliMjBnSjNCaGRHZ25PMXh1YVcxd2IzSjBJSHRUYjNWeVkyVk5ZWEJEYjI1emRXMWxjaXdnVTI5
MWNtTmxUbTlrWlgwZ1puSnZiU0FuYzI5MWNtTmxMVzFoY0NjN1hHNXBiWEJ2Y25RZ2RXZHNhV1o1
SUdaeWIyMGdKM1ZuYkdsbWVTMXFjeWM3WEc1Y2JtMXZaSFZzWlM1bGVIQnZjblJ6TG14dllXUlVa
VzF3YkdGMFpYTWdQU0JtZFc1amRHbHZiaWh2Y0hSekxDQmpZV3hzWW1GamF5a2dlMXh1SUNCc2Iy
RmtVM1J5YVc1bmN5aHZjSFJ6TENCbWRXNWpkR2x2YmlobGNuSXNJSE4wY21sdVozTXBJSHRjYmlB
Z0lDQnBaaUFvWlhKeUtTQjdYRzRnSUNBZ0lDQmpZV3hzWW1GamF5aGxjbklwTzF4dUlDQWdJSDBn
Wld4elpTQjdYRzRnSUNBZ0lDQnNiMkZrUm1sc1pYTW9iM0IwY3l3Z1puVnVZM1JwYjI0b1pYSnlM
Q0JtYVd4bGN5a2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb1pYSnlLU0I3WEc0Z0lDQWdJQ0FnSUNBZ1ky
RnNiR0poWTJzb1pYSnlLVHRjYmlBZ0lDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnSUNC
dmNIUnpMblJsYlhCc1lYUmxjeUE5SUhOMGNtbHVaM011WTI5dVkyRjBLR1pwYkdWektUdGNiaUFn
SUNBZ0lDQWdJQ0JqWVd4c1ltRmpheWgxYm1SbFptbHVaV1FzSUc5d2RITXBPMXh1SUNBZ0lDQWdJ
Q0I5WEc0Z0lDQWdJQ0I5S1R0Y2JpQWdJQ0I5WEc0Z0lIMHBPMXh1ZlR0Y2JseHVablZ1WTNScGIy
NGdiRzloWkZOMGNtbHVaM01vYjNCMGN5d2dZMkZzYkdKaFkyc3BJSHRjYmlBZ2JHVjBJSE4wY21s
dVozTWdQU0JoY25KaGVVTmhjM1FvYjNCMGN5NXpkSEpwYm1jcExGeHVJQ0FnSUNBZ2JtRnRaWE1n
UFNCaGNuSmhlVU5oYzNRb2IzQjBjeTV1WVcxbEtUdGNibHh1SUNCcFppQW9ibUZ0WlhNdWJHVnVa
M1JvSUNFOVBTQnpkSEpwYm1kekxteGxibWQwYUZ4dUlDQWdJQ0FnSmlZZ2MzUnlhVzVuY3k1c1pX
NW5kR2dnUGlBeEtTQjdYRzRnSUNBZ2NtVjBkWEp1SUdOaGJHeGlZV05yS0c1bGR5QklZVzVrYkdW
aVlYSnpMa1Y0WTJWd2RHbHZiaWduVG5WdFltVnlJRzltSUc1aGJXVnpJR1JwWkNCdWIzUWdiV0Yw
WTJnZ2RHaGxJRzUxYldKbGNpQnZaaUJ6ZEhKcGJtY2dhVzV3ZFhSekp5a3BPMXh1SUNCOVhHNWNi
aUFnUVhONWJtTXViV0Z3S0hOMGNtbHVaM01zSUdaMWJtTjBhVzl1S0hOMGNtbHVaeXdnWTJGc2JH
SmhZMnNwSUh0Y2JpQWdJQ0FnSUdsbUlDaHpkSEpwYm1jZ0lUMDlJQ2N0SnlrZ2UxeHVJQ0FnSUNB
Z0lDQmpZV3hzWW1GamF5aDFibVJsWm1sdVpXUXNJSE4wY21sdVp5azdYRzRnSUNBZ0lDQjlJR1Zz
YzJVZ2UxeHVJQ0FnSUNBZ0lDQXZMeUJNYjJGa0lHWnliMjBnYzNSa2FXNWNiaUFnSUNBZ0lDQWdi
R1YwSUdKMVptWmxjaUE5SUNjbk8xeHVJQ0FnSUNBZ0lDQndjbTlqWlhOekxuTjBaR2x1TG5ObGRF
VnVZMjlrYVc1bktDZDFkR1k0SnlrN1hHNWNiaUFnSUNBZ0lDQWdjSEp2WTJWemN5NXpkR1JwYmk1
dmJpZ25aR0YwWVNjc0lHWjFibU4wYVc5dUtHTm9kVzVyS1NCN1hHNGdJQ0FnSUNBZ0lDQWdZblZt
Wm1WeUlDczlJR05vZFc1ck8xeHVJQ0FnSUNBZ0lDQjlLVHRjYmlBZ0lDQWdJQ0FnY0hKdlkyVnpj
eTV6ZEdScGJpNXZiaWduWlc1a0p5d2dablZ1WTNScGIyNG9LU0I3WEc0Z0lDQWdJQ0FnSUNBZ1ky
RnNiR0poWTJzb2RXNWtaV1pwYm1Wa0xDQmlkV1ptWlhJcE8xeHVJQ0FnSUNBZ0lDQjlLVHRjYmlB
Z0lDQWdJSDFjYmlBZ0lDQjlMRnh1SUNBZ0lHWjFibU4wYVc5dUtHVnljaXdnYzNSeWFXNW5jeWtn
ZTF4dUlDQWdJQ0FnYzNSeWFXNW5jeUE5SUhOMGNtbHVaM011YldGd0tDaHpkSEpwYm1jc0lHbHVa
R1Y0S1NBOVBpQW9lMXh1SUNBZ0lDQWdJQ0J1WVcxbE9pQnVZVzFsYzF0cGJtUmxlRjBzWEc0Z0lD
QWdJQ0FnSUhCaGRHZzZJRzVoYldWelcybHVaR1Y0WFN4Y2JpQWdJQ0FnSUNBZ2MyOTFjbU5sT2lC
emRISnBibWRjYmlBZ0lDQWdJSDBwS1R0Y2JpQWdJQ0FnSUdOaGJHeGlZV05yS0dWeWNpd2djM1J5
YVc1bmN5azdYRzRnSUNBZ2ZTazdYRzU5WEc1Y2JtWjFibU4wYVc5dUlHeHZZV1JHYVd4bGN5aHZj
SFJ6TENCallXeHNZbUZqYXlrZ2UxeHVJQ0F2THlCQ2RXbHNaQ0JtYVd4bElHVjRkR1Z1YzJsdmJp
QndZWFIwWlhKdVhHNGdJR3hsZENCbGVIUmxibk5wYjI0Z1BTQW9iM0IwY3k1bGVIUmxibk5wYjI0
Z2ZId2dKMmhoYm1Sc1pXSmhjbk1uS1M1eVpYQnNZV05sS0M5YlhGeGNYRjRrS2lzL0xpZ3BPajBo
Zkh0OVhGd3RYRnhiWEZ4ZFhTOW5MQ0JtZFc1amRHbHZiaWhoY21jcElIc2djbVYwZFhKdUlDZGNY
RnhjSnlBcklHRnlaenNnZlNrN1hHNGdJR1Y0ZEdWdWMybHZiaUE5SUc1bGR5QlNaV2RGZUhBb0ox
eGNYRnd1SnlBcklHVjRkR1Z1YzJsdmJpQXJJQ2NrSnlrN1hHNWNiaUFnYkdWMElISmxkQ0E5SUZ0
ZExGeHVJQ0FnSUNBZ2NYVmxkV1VnUFNBb2IzQjBjeTVtYVd4bGN5QjhmQ0JiWFNrdWJXRndLQ2gw
Wlcxd2JHRjBaU2tnUFQ0Z0tIdDBaVzF3YkdGMFpTd2djbTl2ZERvZ2IzQjBjeTV5YjI5MGZTa3BP
MXh1SUNCQmMzbHVZeTUzYUdsc2MzUW9LQ2tnUFQ0Z2NYVmxkV1V1YkdWdVozUm9MQ0JtZFc1amRH
bHZiaWhqWVd4c1ltRmpheWtnZTF4dUlDQWdJR3hsZENCN2RHVnRjR3hoZEdVNklIQmhkR2dzSUhK
dmIzUjlJRDBnY1hWbGRXVXVjMmhwWm5Rb0tUdGNibHh1SUNBZ0lHWnpMbk4wWVhRb2NHRjBhQ3dn
Wm5WdVkzUnBiMjRvWlhKeUxDQnpkR0YwS1NCN1hHNGdJQ0FnSUNCcFppQW9aWEp5S1NCN1hHNGdJ
Q0FnSUNBZ0lISmxkSFZ5YmlCallXeHNZbUZqYXlodVpYY2dTR0Z1Wkd4bFltRnljeTVGZUdObGNI
UnBiMjRvWUZWdVlXSnNaU0IwYnlCdmNHVnVJSFJsYlhCc1lYUmxJR1pwYkdVZ1hDSWtlM0JoZEdo
OVhDSmdLU2s3WEc0Z0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUdsbUlDaHpkR0YwTG1selJHbHlaV04w
YjNKNUtDa3BJSHRjYmlBZ0lDQWdJQ0FnYjNCMGN5NW9ZWE5FYVhKbFkzUnZjbmtnUFNCMGNuVmxP
MXh1WEc0Z0lDQWdJQ0FnSUdaekxuSmxZV1JrYVhJb2NHRjBhQ3dnWm5WdVkzUnBiMjRvWlhKeUxD
QmphR2xzWkhKbGJpa2dlMXh1SUNBZ0lDQWdJQ0FnSUM4cUlHbHpkR0Z1WW5Wc0lHbG5ibTl5WlNC
dVpYaDBJRG9nVW1GalpTQmpiMjVrYVhScGIyNGdkR2hoZENCaVpXbHVaeUIwYjI4Z2JHRjZlU0Iw
YnlCMFpYTjBJQ292WEc0Z0lDQWdJQ0FnSUNBZ2FXWWdLR1Z5Y2lrZ2UxeHVJQ0FnSUNBZ0lDQWdJ
Q0FnY21WMGRYSnVJR05oYkd4aVlXTnJLR1Z5Y2lrN1hHNGdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lD
QWdJQ0FnSUdOb2FXeGtjbVZ1TG1admNrVmhZMmdvWm5WdVkzUnBiMjRvWm1sc1pTa2dlMXh1SUNB
Z0lDQWdJQ0FnSUNBZ2JHVjBJR05vYVd4a1VHRjBhQ0E5SUhCaGRHZ2dLeUFuTHljZ0t5Qm1hV3hs
TzF4dVhHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb1pYaDBaVzV6YVc5dUxuUmxjM1FvWTJocGJHUlFZ
WFJvS1NCOGZDQm1jeTV6ZEdGMFUzbHVZeWhqYUdsc1pGQmhkR2dwTG1selJHbHlaV04wYjNKNUtD
a3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdjWFZsZFdVdWNIVnphQ2g3ZEdWdGNHeGhkR1U2SUdO
b2FXeGtVR0YwYUN3Z2NtOXZkRG9nY205dmRDQjhmQ0J3WVhSb2ZTazdYRzRnSUNBZ0lDQWdJQ0Fn
SUNCOVhHNGdJQ0FnSUNBZ0lDQWdmU2s3WEc1Y2JpQWdJQ0FnSUNBZ0lDQmpZV3hzWW1GamF5Z3BP
MXh1SUNBZ0lDQWdJQ0I5S1R0Y2JpQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUdaekxu
SmxZV1JHYVd4bEtIQmhkR2dzSUNkMWRHWTRKeXdnWm5WdVkzUnBiMjRvWlhKeUxDQmtZWFJoS1NC
N1hHNGdJQ0FnSUNBZ0lDQWdMeW9nYVhOMFlXNWlkV3dnYVdkdWIzSmxJRzVsZUhRZ09pQlNZV05s
SUdOdmJtUnBkR2x2YmlCMGFHRjBJR0psYVc1bklIUnZieUJzWVhwNUlIUnZJSFJsYzNRZ0tpOWNi
aUFnSUNBZ0lDQWdJQ0JwWmlBb1pYSnlLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z1ky
RnNiR0poWTJzb1pYSnlLVHRjYmlBZ0lDQWdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lDQWdJQ0JwWmlB
b2IzQjBjeTVpYjIwZ0ppWWdaR0YwWVM1cGJtUmxlRTltS0NkY1hIVkdSVVpHSnlrZ1BUMDlJREFw
SUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR1JoZEdFZ1BTQmtZWFJoTG5OMVluTjBjbWx1WnlneEtUdGNi
aUFnSUNBZ0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUNBZ0lDQXZMeUJEYkdWaGJpQjBhR1VnZEdWdGNH
eGhkR1VnYm1GdFpWeHVJQ0FnSUNBZ0lDQWdJR3hsZENCdVlXMWxJRDBnY0dGMGFEdGNiaUFnSUNB
Z0lDQWdJQ0JwWmlBb0lYSnZiM1FwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJRzVoYldVZ1BTQmlZWE5s
Ym1GdFpTaHVZVzFsS1R0Y2JpQWdJQ0FnSUNBZ0lDQjlJR1ZzYzJVZ2FXWWdLRzVoYldVdWFXNWta
WGhQWmloeWIyOTBLU0E5UFQwZ01Da2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2JtRnRaU0E5SUc1aGJX
VXVjM1ZpYzNSeWFXNW5LSEp2YjNRdWJHVnVaM1JvSUNzZ01TazdYRzRnSUNBZ0lDQWdJQ0FnZlZ4
dUlDQWdJQ0FnSUNBZ0lHNWhiV1VnUFNCdVlXMWxMbkpsY0d4aFkyVW9aWGgwWlc1emFXOXVMQ0Fu
SnlrN1hHNWNiaUFnSUNBZ0lDQWdJQ0J5WlhRdWNIVnphQ2g3WEc0Z0lDQWdJQ0FnSUNBZ0lDQndZ
WFJvT2lCd1lYUm9MRnh1SUNBZ0lDQWdJQ0FnSUNBZ2JtRnRaVG9nYm1GdFpTeGNiaUFnSUNBZ0lD
QWdJQ0FnSUhOdmRYSmpaVG9nWkdGMFlWeHVJQ0FnSUNBZ0lDQWdJSDBwTzF4dVhHNGdJQ0FnSUNB
Z0lDQWdZMkZzYkdKaFkyc29LVHRjYmlBZ0lDQWdJQ0FnZlNrN1hHNGdJQ0FnSUNCOVhHNGdJQ0Fn
ZlNrN1hHNGdJSDBzWEc0Z0lHWjFibU4wYVc5dUtHVnljaWtnZTF4dUlDQWdJR2xtSUNobGNuSXBJ
SHRjYmlBZ0lDQWdJR05oYkd4aVlXTnJLR1Z5Y2lrN1hHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lD
QWdJR05oYkd4aVlXTnJLSFZ1WkdWbWFXNWxaQ3dnY21WMEtUdGNiaUFnSUNCOVhHNGdJSDBwTzF4
dWZWeHVYRzV0YjJSMWJHVXVaWGh3YjNKMGN5NWpiR2tnUFNCbWRXNWpkR2x2YmlodmNIUnpLU0I3
WEc0Z0lHbG1JQ2h2Y0hSekxuWmxjbk5wYjI0cElIdGNiaUFnSUNCamIyNXpiMnhsTG14dlp5aElZ
VzVrYkdWaVlYSnpMbFpGVWxOSlQwNHBPMXh1SUNBZ0lISmxkSFZ5Ymp0Y2JpQWdmVnh1WEc0Z0lH
bG1JQ2doYjNCMGN5NTBaVzF3YkdGMFpYTXViR1Z1WjNSb0lDWW1JQ0Z2Y0hSekxtaGhjMFJwY21W
amRHOXllU2tnZTF4dUlDQWdJSFJvY205M0lHNWxkeUJJWVc1a2JHVmlZWEp6TGtWNFkyVndkR2x2
YmlnblRYVnpkQ0JrWldacGJtVWdZWFFnYkdWaGMzUWdiMjVsSUhSbGJYQnNZWFJsSUc5eUlHUnBj
bVZqZEc5eWVTNG5LVHRjYmlBZ2ZWeHVYRzRnSUdsbUlDaHZjSFJ6TG5OcGJYQnNaU0FtSmlCdmNI
UnpMbTFwYmlrZ2UxeHVJQ0FnSUhSb2NtOTNJRzVsZHlCSVlXNWtiR1ZpWVhKekxrVjRZMlZ3ZEds
dmJpZ25WVzVoWW14bElIUnZJRzFwYm1sdGFYcGxJSE5wYlhCc1pTQnZkWFJ3ZFhRbktUdGNiaUFn
ZlZ4dVhHNGdJR052Ym5OMElHMTFiSFJwY0d4bElEMGdiM0IwY3k1MFpXMXdiR0YwWlhNdWJHVnVa
M1JvSUNFOVBTQXhJSHg4SUc5d2RITXVhR0Z6UkdseVpXTjBiM0o1TzF4dUlDQnBaaUFvYjNCMGN5
NXphVzF3YkdVZ0ppWWdiWFZzZEdsd2JHVXBJSHRjYmlBZ0lDQjBhSEp2ZHlCdVpYY2dTR0Z1Wkd4
bFltRnljeTVGZUdObGNIUnBiMjRvSjFWdVlXSnNaU0IwYnlCdmRYUndkWFFnYlhWc2RHbHdiR1Vn
ZEdWdGNHeGhkR1Z6SUdsdUlITnBiWEJzWlNCdGIyUmxKeWs3WEc0Z0lIMWNibHh1SUNBdkx5Qkdi
M0pqWlNCemFXMXdiR1VnYlc5a1pTQnBaaUIzWlNCb1lYWmxJRzl1YkhrZ2IyNWxJSFJsYlhCc1lY
UmxJR0Z1WkNCcGRDZHpJSFZ1Ym1GdFpXUXVYRzRnSUdsbUlDZ2hiM0IwY3k1aGJXUWdKaVlnSVc5
d2RITXVZMjl0Ylc5dWFuTWdKaVlnYjNCMGN5NTBaVzF3YkdGMFpYTXViR1Z1WjNSb0lEMDlQU0F4
WEc0Z0lDQWdJQ0FtSmlBaGIzQjBjeTUwWlcxd2JHRjBaWE5iTUYwdWJtRnRaU2tnZTF4dUlDQWdJ
Rzl3ZEhNdWMybHRjR3hsSUQwZ2RISjFaVHRjYmlBZ2ZWeHVYRzRnSUM4dklFTnZiblpsY25RZ2RH
aGxJR3R1YjNkdUlHeHBjM1FnYVc1MGJ5QmhJR2hoYzJoY2JpQWdiR1YwSUd0dWIzZHVJRDBnZTMw
N1hHNGdJR2xtSUNodmNIUnpMbXR1YjNkdUlDWW1JQ0ZCY25KaGVTNXBjMEZ5Y21GNUtHOXdkSE11
YTI1dmQyNHBLU0I3WEc0Z0lDQWdiM0IwY3k1cmJtOTNiaUE5SUZ0dmNIUnpMbXR1YjNkdVhUdGNi
aUFnZlZ4dUlDQnBaaUFvYjNCMGN5NXJibTkzYmlrZ2UxeHVJQ0FnSUdadmNpQW9iR1YwSUdrZ1BT
QXdMQ0JzWlc0Z1BTQnZjSFJ6TG10dWIzZHVMbXhsYm1kMGFEc2dhU0E4SUd4bGJqc2dhU3NyS1NC
N1hHNGdJQ0FnSUNCcmJtOTNibHR2Y0hSekxtdHViM2R1VzJsZFhTQTlJSFJ5ZFdVN1hHNGdJQ0Fn
ZlZ4dUlDQjlYRzVjYmlBZ1kyOXVjM1FnYjJKcVpXTjBUbUZ0WlNBOUlHOXdkSE11Y0dGeWRHbGhi
Q0EvSUNkSVlXNWtiR1ZpWVhKekxuQmhjblJwWVd4ekp5QTZJQ2QwWlcxd2JHRjBaWE1uTzF4dVhH
NGdJR3hsZENCdmRYUndkWFFnUFNCdVpYY2dVMjkxY21ObFRtOWtaU2dwTzF4dUlDQnBaaUFvSVc5
d2RITXVjMmx0Y0d4bEtTQjdYRzRnSUNBZ2FXWWdLRzl3ZEhNdVlXMWtLU0I3WEc0Z0lDQWdJQ0J2
ZFhSd2RYUXVZV1JrS0Nka1pXWnBibVVvVzF4Y0p5Y2dLeUJ2Y0hSekxtaGhibVJzWldKaGNsQmhk
R2dnS3lBbmFHRnVaR3hsWW1GeWN5NXlkVzUwYVcxbFhGd25YU3dnWm5WdVkzUnBiMjRvU0dGdVpH
eGxZbUZ5Y3lrZ2UxeGNiaUFnU0dGdVpHeGxZbUZ5Y3lBOUlFaGhibVJzWldKaGNuTmJYQ0prWlda
aGRXeDBYQ0pkT3ljcE8xeHVJQ0FnSUgwZ1pXeHpaU0JwWmlBb2IzQjBjeTVqYjIxdGIyNXFjeWtn
ZTF4dUlDQWdJQ0FnYjNWMGNIVjBMbUZrWkNnbmRtRnlJRWhoYm1Sc1pXSmhjbk1nUFNCeVpYRjFh
WEpsS0Z3aUp5QXJJRzl3ZEhNdVkyOXRiVzl1YW5NZ0t5QW5YQ0lwT3ljcE8xeHVJQ0FnSUgwZ1pX
eHpaU0I3WEc0Z0lDQWdJQ0J2ZFhSd2RYUXVZV1JrS0Njb1puVnVZM1JwYjI0b0tTQjdYRnh1Snlr
N1hHNGdJQ0FnZlZ4dUlDQWdJRzkxZEhCMWRDNWhaR1FvSnlBZ2RtRnlJSFJsYlhCc1lYUmxJRDBn
U0dGdVpHeGxZbUZ5Y3k1MFpXMXdiR0YwWlN3Z2RHVnRjR3hoZEdWeklEMGdKeWs3WEc0Z0lDQWdh
V1lnS0c5d2RITXVibUZ0WlhOd1lXTmxLU0I3WEc0Z0lDQWdJQ0J2ZFhSd2RYUXVZV1JrS0c5d2RI
TXVibUZ0WlhOd1lXTmxLVHRjYmlBZ0lDQWdJRzkxZEhCMWRDNWhaR1FvSnlBOUlDY3BPMXh1SUNB
Z0lDQWdiM1YwY0hWMExtRmtaQ2h2Y0hSekxtNWhiV1Z6Y0dGalpTazdYRzRnSUNBZ0lDQnZkWFJ3
ZFhRdVlXUmtLQ2NnZkh3Z0p5azdYRzRnSUNBZ2ZWeHVJQ0FnSUc5MWRIQjFkQzVoWkdRb0ozdDlP
MXhjYmljcE8xeHVJQ0I5WEc1Y2JpQWdiM0IwY3k1MFpXMXdiR0YwWlhNdVptOXlSV0ZqYUNobWRX
NWpkR2x2YmloMFpXMXdiR0YwWlNrZ2UxeHVJQ0FnSUd4bGRDQnZjSFJwYjI1eklEMGdlMXh1SUNB
Z0lDQWdhMjV2ZDI1SVpXeHdaWEp6T2lCcmJtOTNiaXhjYmlBZ0lDQWdJR3R1YjNkdVNHVnNjR1Z5
YzA5dWJIazZJRzl3ZEhNdWIxeHVJQ0FnSUgwN1hHNWNiaUFnSUNCcFppQW9iM0IwY3k1dFlYQXBJ
SHRjYmlBZ0lDQWdJRzl3ZEdsdmJuTXVjM0pqVG1GdFpTQTlJSFJsYlhCc1lYUmxMbkJoZEdnN1hH
NGdJQ0FnZlZ4dUlDQWdJR2xtSUNodmNIUnpMbVJoZEdFcElIdGNiaUFnSUNBZ0lHOXdkR2x2Ym5N
dVpHRjBZU0E5SUhSeWRXVTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2JHVjBJSEJ5WldOdmJYQnBiR1Zr
SUQwZ1NHRnVaR3hsWW1GeWN5NXdjbVZqYjIxd2FXeGxLSFJsYlhCc1lYUmxMbk52ZFhKalpTd2di
M0IwYVc5dWN5azdYRzVjYmlBZ0lDQXZMeUJKWmlCM1pTQmhjbVVnWjJWdVpYSmhkR2x1WnlCaElI
TnZkWEpqWlNCdFlYQXNJSGRsSUdoaGRtVWdkRzhnY21WamIyNXpkSEoxWTNRZ2RHaGxJRk52ZFhK
alpVNXZaR1VnYjJKcVpXTjBYRzRnSUNBZ2FXWWdLRzl3ZEhNdWJXRndLU0I3WEc0Z0lDQWdJQ0Jz
WlhRZ1kyOXVjM1Z0WlhJZ1BTQnVaWGNnVTI5MWNtTmxUV0Z3UTI5dWMzVnRaWElvY0hKbFkyOXRj
R2xzWldRdWJXRndLVHRjYmlBZ0lDQWdJSEJ5WldOdmJYQnBiR1ZrSUQwZ1UyOTFjbU5sVG05a1pT
NW1jbTl0VTNSeWFXNW5WMmwwYUZOdmRYSmpaVTFoY0Nod2NtVmpiMjF3YVd4bFpDNWpiMlJsTENC
amIyNXpkVzFsY2lrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tHOXdkSE11YzJsdGNHeGxLU0I3
WEc0Z0lDQWdJQ0J2ZFhSd2RYUXVZV1JrS0Z0d2NtVmpiMjF3YVd4bFpDd2dKMXhjYmlkZEtUdGNi
aUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnYVdZZ0tDRjBaVzF3YkdGMFpTNXVZVzFsS1NCN1hH
NGdJQ0FnSUNBZ0lIUm9jbTkzSUc1bGR5QklZVzVrYkdWaVlYSnpMa1Y0WTJWd2RHbHZiaWduVG1G
dFpTQnRhWE56YVc1bklHWnZjaUIwWlcxd2JHRjBaU2NwTzF4dUlDQWdJQ0FnZlZ4dVhHNGdJQ0Fn
SUNCcFppQW9iM0IwY3k1aGJXUWdKaVlnSVcxMWJIUnBjR3hsS1NCN1hHNGdJQ0FnSUNBZ0lHOTFk
SEIxZEM1aFpHUW9KM0psZEhWeWJpQW5LVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQWdJRzkxZEhCMWRD
NWhaR1FvVzI5aWFtVmpkRTVoYldVc0lDZGJYRnduSnl3Z2RHVnRjR3hoZEdVdWJtRnRaU3dnSjF4
Y0oxMGdQU0IwWlcxd2JHRjBaU2duTENCd2NtVmpiMjF3YVd4bFpDd2dKeWs3WEZ4dUoxMHBPMXh1
SUNBZ0lIMWNiaUFnZlNrN1hHNWNiaUFnTHk4Z1QzVjBjSFYwSUhSb1pTQmpiMjUwWlc1MFhHNGdJ
R2xtSUNnaGIzQjBjeTV6YVcxd2JHVXBJSHRjYmlBZ0lDQnBaaUFvYjNCMGN5NWhiV1FwSUh0Y2Jp
QWdJQ0FnSUdsbUlDaHRkV3gwYVhCc1pTa2dlMXh1SUNBZ0lDQWdJQ0J2ZFhSd2RYUXVZV1JrS0Zz
bmNtVjBkWEp1SUNjc0lHOWlhbVZqZEU1aGJXVXNJQ2M3WEZ4dUoxMHBPMXh1SUNBZ0lDQWdmVnh1
SUNBZ0lDQWdiM1YwY0hWMExtRmtaQ2duZlNrN0p5azdYRzRnSUNBZ2ZTQmxiSE5sSUdsbUlDZ2hi
M0IwY3k1amIyMXRiMjVxY3lrZ2UxeHVJQ0FnSUNBZ2IzVjBjSFYwTG1Ga1pDZ25mU2tvS1RzbktU
dGNiaUFnSUNCOVhHNGdJSDFjYmx4dVhHNGdJR2xtSUNodmNIUnpMbTFoY0NrZ2UxeHVJQ0FnSUc5
MWRIQjFkQzVoWkdRb0oxeGNiaTh2SXlCemIzVnlZMlZOWVhCd2FXNW5WVkpNUFNjZ0t5QnZjSFJ6
TG0xaGNDQXJJQ2RjWEc0bktUdGNiaUFnZlZ4dVhHNGdJRzkxZEhCMWRDQTlJRzkxZEhCMWRDNTBi
MU4wY21sdVoxZHBkR2hUYjNWeVkyVk5ZWEFvS1R0Y2JpQWdiM1YwY0hWMExtMWhjQ0E5SUc5MWRI
QjFkQzV0WVhBZ0t5QW5KenRjYmx4dUlDQnBaaUFvYjNCMGN5NXRhVzRwSUh0Y2JpQWdJQ0J2ZFhS
d2RYUWdQU0IxWjJ4cFpua3ViV2x1YVdaNUtHOTFkSEIxZEM1amIyUmxMQ0I3WEc0Z0lDQWdJQ0Jt
Y205dFUzUnlhVzVuT2lCMGNuVmxMRnh1WEc0Z0lDQWdJQ0J2ZFhSVGIzVnlZMlZOWVhBNklHOXdk
SE11YldGd0xGeHVJQ0FnSUNBZ2FXNVRiM1Z5WTJWTllYQTZJRXBUVDA0dWNHRnljMlVvYjNWMGNI
VjBMbTFoY0NsY2JpQWdJQ0I5S1R0Y2JpQWdJQ0JwWmlBb2IzQjBjeTV0WVhBcElIdGNiaUFnSUNB
Z0lHOTFkSEIxZEM1amIyUmxJQ3M5SUNkY1hHNHZMeU1nYzI5MWNtTmxUV0Z3Y0dsdVoxVlNURDBu
SUNzZ2IzQjBjeTV0WVhBZ0t5QW5YRnh1Snp0Y2JpQWdJQ0I5WEc0Z0lIMWNibHh1SUNCcFppQW9i
M0IwY3k1dFlYQXBJSHRjYmlBZ0lDQm1jeTUzY21sMFpVWnBiR1ZUZVc1aktHOXdkSE11YldGd0xD
QnZkWFJ3ZFhRdWJXRndMQ0FuZFhSbU9DY3BPMXh1SUNCOVhHNGdJRzkxZEhCMWRDQTlJRzkxZEhC
MWRDNWpiMlJsTzF4dVhHNGdJR2xtSUNodmNIUnpMbTkxZEhCMWRDa2dlMXh1SUNBZ0lHWnpMbmR5
YVhSbFJtbHNaVk41Ym1Nb2IzQjBjeTV2ZFhSd2RYUXNJRzkxZEhCMWRDd2dKM1YwWmpnbktUdGNi
aUFnZlNCbGJITmxJSHRjYmlBZ0lDQmpiMjV6YjJ4bExteHZaeWh2ZFhSd2RYUXBPMXh1SUNCOVhH
NTlPMXh1WEc1bWRXNWpkR2x2YmlCaGNuSmhlVU5oYzNRb2RtRnNkV1VwSUh0Y2JpQWdkbUZzZFdV
Z1BTQjJZV3gxWlNBaFBTQnVkV3hzSUQ4Z2RtRnNkV1VnT2lCYlhUdGNiaUFnYVdZZ0tDRkJjbkpo
ZVM1cGMwRnljbUY1S0haaGJIVmxLU2tnZTF4dUlDQWdJSFpoYkhWbElEMGdXM1poYkhWbFhUdGNi
aUFnZlZ4dUlDQnlaWFIxY200Z2RtRnNkV1U3WEc1OVhHNGlYWDA9CmRpZmYgLS1naXQgYS9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9oYW5kbGViYXJzLmFt
ZC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2hh
bmRsZWJhcnMuYW1kLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZjZjdiZGRjYmFmNjJjNzM1ODdhMjFiMDVmOTJl
NDgzMDI2NTJiZDMKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9t
b2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9oYW5kbGViYXJzLmFtZC5qcwpAQCAtMCwwICsxLDQzMzkg
QEAKKy8qKiEKKworIEBsaWNlbnNlCisgaGFuZGxlYmFycyB2NC4wLjYKKworQ29weXJpZ2h0IChD
KSAyMDExLTIwMTYgYnkgWWVodWRhIEthdHoKKworUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRl
ZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQorb2YgdGhp
cyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3
YXJlIiksIHRvIGRlYWwKK2luIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNs
dWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKK3RvIHVzZSwgY29weSwgbW9kaWZ5
LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKK2Nv
cGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBT
b2Z0d2FyZSBpcworZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9uczoKKworVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlz
c2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KK2FsbCBjb3BpZXMgb3Igc3Vic3RhbnRp
YWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorCitUSEUgU09GVFdBUkUgSVMgUFJPVklERUQg
IkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorSU1QTElF
RCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFksCitGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklO
R0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKK0FVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERF
UlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKK0xJQUJJTElUWSwg
V0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklT
SU5HIEZST00sCitPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBU
SEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOCitUSEUgU09GVFdBUkUuCisKKyovCitkZWZpbmUo
J2hhbmRsZWJhcnMvdXRpbHMnLFsnZXhwb3J0cyddLCBmdW5jdGlvbiAoZXhwb3J0cykgeworICAn
dXNlIHN0cmljdCc7CisKKyAgZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKKyAgZXhwb3J0cy5l
eHRlbmQgPSBleHRlbmQ7CisgIGV4cG9ydHMuaW5kZXhPZiA9IGluZGV4T2Y7CisgIGV4cG9ydHMu
ZXNjYXBlRXhwcmVzc2lvbiA9IGVzY2FwZUV4cHJlc3Npb247CisgIGV4cG9ydHMuaXNFbXB0eSA9
IGlzRW1wdHk7CisgIGV4cG9ydHMuY3JlYXRlRnJhbWUgPSBjcmVhdGVGcmFtZTsKKyAgZXhwb3J0
cy5ibG9ja1BhcmFtcyA9IGJsb2NrUGFyYW1zOworICBleHBvcnRzLmFwcGVuZENvbnRleHRQYXRo
ID0gYXBwZW5kQ29udGV4dFBhdGg7CisgIHZhciBlc2NhcGUgPSB7CisgICAgJyYnOiAnJmFtcDsn
LAorICAgICc8JzogJyZsdDsnLAorICAgICc+JzogJyZndDsnLAorICAgICciJzogJyZxdW90Oycs
CisgICAgIiciOiAnJiN4Mjc7JywKKyAgICAnYCc6ICcmI3g2MDsnLAorICAgICc9JzogJyYjeDNE
OycKKyAgfTsKKworICB2YXIgYmFkQ2hhcnMgPSAvWyY8PiInYD1dL2csCisgICAgICBwb3NzaWJs
ZSA9IC9bJjw+IidgPV0vOworCisgIGZ1bmN0aW9uIGVzY2FwZUNoYXIoY2hyKSB7CisgICAgcmV0
dXJuIGVzY2FwZVtjaHJdOworICB9CisKKyAgZnVuY3Rpb24gZXh0ZW5kKG9iaiAvKiAsIC4uLnNv
dXJjZSAqLykgeworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsr
KSB7CisgICAgICBmb3IgKHZhciBrZXkgaW4gYXJndW1lbnRzW2ldKSB7CisgICAgICAgIGlmIChP
YmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYXJndW1lbnRzW2ldLCBrZXkpKSB7
CisgICAgICAgICAgb2JqW2tleV0gPSBhcmd1bWVudHNbaV1ba2V5XTsKKyAgICAgICAgfQorICAg
ICAgfQorICAgIH0KKworICAgIHJldHVybiBvYmo7CisgIH0KKworICB2YXIgdG9TdHJpbmcgPSBP
YmplY3QucHJvdG90eXBlLnRvU3RyaW5nOworCisgIGV4cG9ydHMudG9TdHJpbmcgPSB0b1N0cmlu
ZzsKKyAgLy8gU291cmNlZCBmcm9tIGxvZGFzaAorICAvLyBodHRwczovL2dpdGh1Yi5jb20vYmVz
dGllanMvbG9kYXNoL2Jsb2IvbWFzdGVyL0xJQ0VOU0UudHh0CisgIC8qIGVzbGludC1kaXNhYmxl
IGZ1bmMtc3R5bGUgKi8KKyAgdmFyIGlzRnVuY3Rpb24gPSBmdW5jdGlvbiBpc0Z1bmN0aW9uKHZh
bHVlKSB7CisgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJzsKKyAgfTsKKyAg
Ly8gZmFsbGJhY2sgZm9yIG9sZGVyIHZlcnNpb25zIG9mIENocm9tZSBhbmQgU2FmYXJpCisgIC8q
IGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovCisgIGlmIChpc0Z1bmN0aW9uKC94LykpIHsKKyAgICBl
eHBvcnRzLmlzRnVuY3Rpb24gPSBpc0Z1bmN0aW9uID0gZnVuY3Rpb24gKHZhbHVlKSB7CisgICAg
ICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHRvU3RyaW5nLmNhbGwodmFs
dWUpID09PSAnW29iamVjdCBGdW5jdGlvbl0nOworICAgIH07CisgIH0KKyAgZXhwb3J0cy5pc0Z1
bmN0aW9uID0gaXNGdW5jdGlvbjsKKworICAvKiBlc2xpbnQtZW5hYmxlIGZ1bmMtc3R5bGUgKi8K
KworICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLworICB2YXIgaXNBcnJheSA9IEFycmF5Lmlz
QXJyYXkgfHwgZnVuY3Rpb24gKHZhbHVlKSB7CisgICAgcmV0dXJuIHZhbHVlICYmIHR5cGVvZiB2
YWx1ZSA9PT0gJ29iamVjdCcgPyB0b1N0cmluZy5jYWxsKHZhbHVlKSA9PT0gJ1tvYmplY3QgQXJy
YXldJyA6IGZhbHNlOworICB9OworCisgIGV4cG9ydHMuaXNBcnJheSA9IGlzQXJyYXk7CisgIC8v
IE9sZGVyIElFIHZlcnNpb25zIGRvIG5vdCBkaXJlY3RseSBzdXBwb3J0IGluZGV4T2Ygc28gd2Ug
bXVzdCBpbXBsZW1lbnQgb3VyIG93biwgc2FkbHkuCisKKyAgZnVuY3Rpb24gaW5kZXhPZihhcnJh
eSwgdmFsdWUpIHsKKyAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gYXJyYXkubGVuZ3RoOyBpIDwg
bGVuOyBpKyspIHsKKyAgICAgIGlmIChhcnJheVtpXSA9PT0gdmFsdWUpIHsKKyAgICAgICAgcmV0
dXJuIGk7CisgICAgICB9CisgICAgfQorICAgIHJldHVybiAtMTsKKyAgfQorCisgIGZ1bmN0aW9u
IGVzY2FwZUV4cHJlc3Npb24oc3RyaW5nKSB7CisgICAgaWYgKHR5cGVvZiBzdHJpbmcgIT09ICdz
dHJpbmcnKSB7CisgICAgICAvLyBkb24ndCBlc2NhcGUgU2FmZVN0cmluZ3MsIHNpbmNlIHRoZXkn
cmUgYWxyZWFkeSBzYWZlCisgICAgICBpZiAoc3RyaW5nICYmIHN0cmluZy50b0hUTUwpIHsKKyAg
ICAgICAgcmV0dXJuIHN0cmluZy50b0hUTUwoKTsKKyAgICAgIH0gZWxzZSBpZiAoc3RyaW5nID09
IG51bGwpIHsKKyAgICAgICAgcmV0dXJuICcnOworICAgICAgfSBlbHNlIGlmICghc3RyaW5nKSB7
CisgICAgICAgIHJldHVybiBzdHJpbmcgKyAnJzsKKyAgICAgIH0KKworICAgICAgLy8gRm9yY2Ug
YSBzdHJpbmcgY29udmVyc2lvbiBhcyB0aGlzIHdpbGwgYmUgZG9uZSBieSB0aGUgYXBwZW5kIHJl
Z2FyZGxlc3MgYW5kCisgICAgICAvLyB0aGUgcmVnZXggdGVzdCB3aWxsIGRvIHRoaXMgdHJhbnNw
YXJlbnRseSBiZWhpbmQgdGhlIHNjZW5lcywgY2F1c2luZyBpc3N1ZXMgaWYKKyAgICAgIC8vIGFu
IG9iamVjdCdzIHRvIHN0cmluZyBoYXMgZXNjYXBlZCBjaGFyYWN0ZXJzIGluIGl0LgorICAgICAg
c3RyaW5nID0gJycgKyBzdHJpbmc7CisgICAgfQorCisgICAgaWYgKCFwb3NzaWJsZS50ZXN0KHN0
cmluZykpIHsKKyAgICAgIHJldHVybiBzdHJpbmc7CisgICAgfQorICAgIHJldHVybiBzdHJpbmcu
cmVwbGFjZShiYWRDaGFycywgZXNjYXBlQ2hhcik7CisgIH0KKworICBmdW5jdGlvbiBpc0VtcHR5
KHZhbHVlKSB7CisgICAgaWYgKCF2YWx1ZSAmJiB2YWx1ZSAhPT0gMCkgeworICAgICAgcmV0dXJu
IHRydWU7CisgICAgfSBlbHNlIGlmIChpc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPT09
IDApIHsKKyAgICAgIHJldHVybiB0cnVlOworICAgIH0gZWxzZSB7CisgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorICB9CisKKyAgZnVuY3Rpb24gY3JlYXRlRnJhbWUob2JqZWN0KSB7CisgICAg
dmFyIGZyYW1lID0gZXh0ZW5kKHt9LCBvYmplY3QpOworICAgIGZyYW1lLl9wYXJlbnQgPSBvYmpl
Y3Q7CisgICAgcmV0dXJuIGZyYW1lOworICB9CisKKyAgZnVuY3Rpb24gYmxvY2tQYXJhbXMocGFy
YW1zLCBpZHMpIHsKKyAgICBwYXJhbXMucGF0aCA9IGlkczsKKyAgICByZXR1cm4gcGFyYW1zOwor
ICB9CisKKyAgZnVuY3Rpb24gYXBwZW5kQ29udGV4dFBhdGgoY29udGV4dFBhdGgsIGlkKSB7Cisg
ICAgcmV0dXJuIChjb250ZXh0UGF0aCA/IGNvbnRleHRQYXRoICsgJy4nIDogJycpICsgaWQ7Cisg
IH0KK30pOworLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2
NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYklpNHVMeTR1THk0dUwyeHBZaTlvWVc1
a2JHVmlZWEp6TDNWMGFXeHpMbXB6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3
T3pzN096czdPenM3TzBGQlFVRXNUVUZCVFN4TlFVRk5MRWRCUVVjN1FVRkRZaXhQUVVGSExFVkJR
VVVzVDBGQlR6dEJRVU5hTEU5QlFVY3NSVUZCUlN4TlFVRk5PMEZCUTFnc1QwRkJSeXhGUVVGRkxF
MUJRVTA3UVVGRFdDeFBRVUZITEVWQlFVVXNVVUZCVVR0QlFVTmlMRTlCUVVjc1JVRkJSU3hSUVVG
Uk8wRkJRMklzVDBGQlJ5eEZRVUZGTEZGQlFWRTdRVUZEWWl4UFFVRkhMRVZCUVVVc1VVRkJVVHRI
UVVOa0xFTkJRVU03TzBGQlJVWXNUVUZCVFN4UlFVRlJMRWRCUVVjc1dVRkJXVHROUVVOMlFpeFJR
VUZSTEVkQlFVY3NWMEZCVnl4RFFVRkRPenRCUVVVM1FpeFhRVUZUTEZWQlFWVXNRMEZCUXl4SFFV
RkhMRVZCUVVVN1FVRkRka0lzVjBGQlR5eE5RVUZOTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVN
N1IwRkRjRUk3TzBGQlJVMHNWMEZCVXl4TlFVRk5MRU5CUVVNc1IwRkJSeXh2UWtGQmJVSTdRVUZE
TTBNc1UwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhM
Rk5CUVZNc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdRVUZEZWtNc1Yw
RkJTeXhKUVVGSkxFZEJRVWNzU1VGQlNTeFRRVUZUTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVV
N1FVRkROVUlzV1VGQlNTeE5RVUZOTEVOQlFVTXNVMEZCVXl4RFFVRkRMR05CUVdNc1EwRkJReXhK
UVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRWRCUVVjc1EwRkJR
eXhGUVVGRk8wRkJRek5FTEdGQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhUUVVGVExF
TkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1UwRkRPVUk3VDBG
RFJqdExRVU5HT3p0QlFVVkVMRmRCUVU4c1IwRkJSeXhEUVVGRE8wZEJRMW83TzBGQlJVMHNUVUZC
U1N4UlFVRlJMRWRCUVVjc1RVRkJUU3hEUVVGRExGTkJRVk1zUTBGQlF5eFJRVUZSTEVOQlFVTTdP
enM3T3p0QlFVdG9SQ3hOUVVGSkxGVkJRVlVzUjBGQlJ5eHZRa0ZCVXl4TFFVRkxMRVZCUVVVN1FV
RkRMMElzVjBGQlR5eFBRVUZQTEV0QlFVc3NTMEZCU3l4VlFVRlZMRU5CUVVNN1IwRkRjRU1zUTBG
QlF6czdPMEZCUjBZc1RVRkJTU3hWUVVGVkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVTdRVUZE
YmtJc1dVRkpUU3hWUVVGVkxFZEJTbWhDTEZWQlFWVXNSMEZCUnl4VlFVRlRMRXRCUVVzc1JVRkJS
VHRCUVVNelFpeGhRVUZQTEU5QlFVOHNTMEZCU3l4TFFVRkxMRlZCUVZVc1NVRkJTU3hSUVVGUkxF
TkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4TFFVRkxMRzFDUVVGdFFpeERRVUZETzB0
QlEzQkdMRU5CUVVNN1IwRkRTRHRWUVVOUExGVkJRVlVzUjBGQlZpeFZRVUZWT3pzN096dEJRVWxZ
TEUxQlFVMHNUMEZCVHl4SFFVRkhMRXRCUVVzc1EwRkJReXhQUVVGUExFbEJRVWtzVlVGQlV5eExR
VUZMTEVWQlFVVTdRVUZEZEVRc1YwRkJUeXhCUVVGRExFdEJRVXNzU1VGQlNTeFBRVUZQTEV0QlFV
c3NTMEZCU3l4UlFVRlJMRWRCUVVrc1VVRkJVU3hEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVO
QlFVTXNTMEZCU3l4blFrRkJaMElzUjBGQlJ5eExRVUZMTEVOQlFVTTdSMEZEYWtjc1EwRkJRenM3
T3pzN1FVRkhTeXhYUVVGVExFOUJRVThzUTBGQlF5eExRVUZMTEVWQlFVVXNTMEZCU3l4RlFVRkZP
MEZCUTNCRExGTkJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRWRCUVVjc1Iw
RkJSeXhMUVVGTExFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTXNSMEZCUnl4SFFVRkhMRVZCUVVV
c1EwRkJReXhGUVVGRkxFVkJRVVU3UVVGRGFFUXNWVUZCU1N4TFFVRkxMRU5CUVVNc1EwRkJReXhE
UVVGRExFdEJRVXNzUzBGQlN5eEZRVUZGTzBGQlEzUkNMR1ZCUVU4c1EwRkJReXhEUVVGRE8wOUJR
MVk3UzBGRFJqdEJRVU5FTEZkQlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNN1IwRkRXRHM3UVVGSFRT
eFhRVUZUTEdkQ1FVRm5RaXhEUVVGRExFMUJRVTBzUlVGQlJUdEJRVU4yUXl4UlFVRkpMRTlCUVU4
c1RVRkJUU3hMUVVGTExGRkJRVkVzUlVGQlJUczdRVUZGT1VJc1ZVRkJTU3hOUVVGTkxFbEJRVWtz
VFVGQlRTeERRVUZETEUxQlFVMHNSVUZCUlR0QlFVTXpRaXhsUVVGUExFMUJRVTBzUTBGQlF5eE5R
VUZOTEVWQlFVVXNRMEZCUXp0UFFVTjRRaXhOUVVGTkxFbEJRVWtzVFVGQlRTeEpRVUZKTEVsQlFV
a3NSVUZCUlR0QlFVTjZRaXhsUVVGUExFVkJRVVVzUTBGQlF6dFBRVU5ZTEUxQlFVMHNTVUZCU1N4
RFFVRkRMRTFCUVUwc1JVRkJSVHRCUVVOc1FpeGxRVUZQTEUxQlFVMHNSMEZCUnl4RlFVRkZMRU5C
UVVNN1QwRkRjRUk3T3pzN08wRkJTMFFzV1VGQlRTeEhRVUZITEVWQlFVVXNSMEZCUnl4TlFVRk5M
RU5CUVVNN1MwRkRkRUk3TzBGQlJVUXNVVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhKUVVGSkxF
TkJRVU1zVFVGQlRTeERRVUZETEVWQlFVVTdRVUZCUlN4aFFVRlBMRTFCUVUwc1EwRkJRenRMUVVG
Rk8wRkJRemxETEZkQlFVOHNUVUZCVFN4RFFVRkRMRTlCUVU4c1EwRkJReXhSUVVGUkxFVkJRVVVz
VlVGQlZTeERRVUZETEVOQlFVTTdSMEZETjBNN08wRkJSVTBzVjBGQlV5eFBRVUZQTEVOQlFVTXNT
MEZCU3l4RlFVRkZPMEZCUXpkQ0xGRkJRVWtzUTBGQlF5eExRVUZMTEVsQlFVa3NTMEZCU3l4TFFV
RkxMRU5CUVVNc1JVRkJSVHRCUVVONlFpeGhRVUZQTEVsQlFVa3NRMEZCUXp0TFFVTmlMRTFCUVUw
c1NVRkJTU3hQUVVGUExFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NTMEZCU3l4RFFVRkRMRTFC
UVUwc1MwRkJTeXhEUVVGRExFVkJRVVU3UVVGREwwTXNZVUZCVHl4SlFVRkpMRU5CUVVNN1MwRkRZ
aXhOUVVGTk8wRkJRMHdzWVVGQlR5eExRVUZMTEVOQlFVTTdTMEZEWkR0SFFVTkdPenRCUVVWTkxG
ZEJRVk1zVjBGQlZ5eERRVUZETEUxQlFVMHNSVUZCUlR0QlFVTnNReXhSUVVGSkxFdEJRVXNzUjBG
QlJ5eE5RVUZOTEVOQlFVTXNSVUZCUlN4RlFVRkZMRTFCUVUwc1EwRkJReXhEUVVGRE8wRkJReTlD
TEZOQlFVc3NRMEZCUXl4UFFVRlBMRWRCUVVjc1RVRkJUU3hEUVVGRE8wRkJRM1pDTEZkQlFVOHNT
MEZCU3l4RFFVRkRPMGRCUTJRN08wRkJSVTBzVjBGQlV5eFhRVUZYTEVOQlFVTXNUVUZCVFN4RlFV
RkZMRWRCUVVjc1JVRkJSVHRCUVVOMlF5eFZRVUZOTEVOQlFVTXNTVUZCU1N4SFFVRkhMRWRCUVVj
c1EwRkJRenRCUVVOc1FpeFhRVUZQTEUxQlFVMHNRMEZCUXp0SFFVTm1PenRCUVVWTkxGZEJRVk1z
YVVKQlFXbENMRU5CUVVNc1YwRkJWeXhGUVVGRkxFVkJRVVVzUlVGQlJUdEJRVU5xUkN4WFFVRlBM
RU5CUVVNc1YwRkJWeXhIUVVGSExGZEJRVmNzUjBGQlJ5eEhRVUZITEVkQlFVY3NSVUZCUlN4RFFV
RkJMRWRCUVVrc1JVRkJSU3hEUVVGRE8wZEJRM0JFSWl3aVptbHNaU0k2SW5WMGFXeHpMbXB6SWl3
aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaVkyOXVjM1FnWlhOallYQmxJRDBnZTF4dUlDQW5KaWM2
SUNjbVlXMXdPeWNzWEc0Z0lDYzhKem9nSnlac2REc25MRnh1SUNBblBpYzZJQ2NtWjNRN0p5eGNi
aUFnSjF3aUp6b2dKeVp4ZFc5ME95Y3NYRzRnSUZ3aUoxd2lPaUFuSmlONE1qYzdKeXhjYmlBZ0oy
QW5PaUFuSmlONE5qQTdKeXhjYmlBZ0p6MG5PaUFuSmlONE0wUTdKMXh1ZlR0Y2JseHVZMjl1YzNR
Z1ltRmtRMmhoY25NZ1BTQXZXeVk4UGx3aUoyQTlYUzluTEZ4dUlDQWdJQ0FnY0c5emMybGliR1Vn
UFNBdld5WThQbHdpSjJBOVhTODdYRzVjYm1aMWJtTjBhVzl1SUdWelkyRndaVU5vWVhJb1kyaHlL
U0I3WEc0Z0lISmxkSFZ5YmlCbGMyTmhjR1ZiWTJoeVhUdGNibjFjYmx4dVpYaHdiM0owSUdaMWJt
TjBhVzl1SUdWNGRHVnVaQ2h2WW1vdktpQXNJQzR1TG5OdmRYSmpaU0FxTHlrZ2UxeHVJQ0JtYjNJ
Z0tHeGxkQ0JwSUQwZ01Uc2dhU0E4SUdGeVozVnRaVzUwY3k1c1pXNW5kR2c3SUdrckt5a2dlMXh1
SUNBZ0lHWnZjaUFvYkdWMElHdGxlU0JwYmlCaGNtZDFiV1Z1ZEhOYmFWMHBJSHRjYmlBZ0lDQWdJ
R2xtSUNoUFltcGxZM1F1Y0hKdmRHOTBlWEJsTG1oaGMwOTNibEJ5YjNCbGNuUjVMbU5oYkd3b1lY
Sm5kVzFsYm5SelcybGRMQ0JyWlhrcEtTQjdYRzRnSUNBZ0lDQWdJRzlpYWx0clpYbGRJRDBnWVhK
bmRXMWxiblJ6VzJsZFcydGxlVjA3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNCOVhHNWNiaUFn
Y21WMGRYSnVJRzlpYWp0Y2JuMWNibHh1Wlhod2IzSjBJR3hsZENCMGIxTjBjbWx1WnlBOUlFOWlh
bVZqZEM1d2NtOTBiM1I1Y0dVdWRHOVRkSEpwYm1jN1hHNWNiaTh2SUZOdmRYSmpaV1FnWm5KdmJT
QnNiMlJoYzJoY2JpOHZJR2gwZEhCek9pOHZaMmwwYUhWaUxtTnZiUzlpWlhOMGFXVnFjeTlzYjJS
aGMyZ3ZZbXh2WWk5dFlYTjBaWEl2VEVsRFJVNVRSUzUwZUhSY2JpOHFJR1Z6YkdsdWRDMWthWE5o
WW14bElHWjFibU10YzNSNWJHVWdLaTljYm14bGRDQnBjMFoxYm1OMGFXOXVJRDBnWm5WdVkzUnBi
MjRvZG1Gc2RXVXBJSHRjYmlBZ2NtVjBkWEp1SUhSNWNHVnZaaUIyWVd4MVpTQTlQVDBnSjJaMWJt
TjBhVzl1Snp0Y2JuMDdYRzR2THlCbVlXeHNZbUZqYXlCbWIzSWdiMnhrWlhJZ2RtVnljMmx2Ym5N
Z2IyWWdRMmh5YjIxbElHRnVaQ0JUWVdaaGNtbGNiaThxSUdsemRHRnVZblZzSUdsbmJtOXlaU0J1
WlhoMElDb3ZYRzVwWmlBb2FYTkdkVzVqZEdsdmJpZ3ZlQzhwS1NCN1hHNGdJR2x6Um5WdVkzUnBi
MjRnUFNCbWRXNWpkR2x2YmloMllXeDFaU2tnZTF4dUlDQWdJSEpsZEhWeWJpQjBlWEJsYjJZZ2Rt
RnNkV1VnUFQwOUlDZG1kVzVqZEdsdmJpY2dKaVlnZEc5VGRISnBibWN1WTJGc2JDaDJZV3gxWlNr
Z1BUMDlJQ2RiYjJKcVpXTjBJRVoxYm1OMGFXOXVYU2M3WEc0Z0lIMDdYRzU5WEc1bGVIQnZjblFn
ZTJselJuVnVZM1JwYjI1OU8xeHVMeW9nWlhOc2FXNTBMV1Z1WVdKc1pTQm1kVzVqTFhOMGVXeGxJ
Q292WEc1Y2JpOHFJR2x6ZEdGdVluVnNJR2xuYm05eVpTQnVaWGgwSUNvdlhHNWxlSEJ2Y25RZ1ky
OXVjM1FnYVhOQmNuSmhlU0E5SUVGeWNtRjVMbWx6UVhKeVlYa2dmSHdnWm5WdVkzUnBiMjRvZG1G
c2RXVXBJSHRjYmlBZ2NtVjBkWEp1SUNoMllXeDFaU0FtSmlCMGVYQmxiMllnZG1Gc2RXVWdQVDA5
SUNkdlltcGxZM1FuS1NBL0lIUnZVM1J5YVc1bkxtTmhiR3dvZG1Gc2RXVXBJRDA5UFNBblcyOWlh
bVZqZENCQmNuSmhlVjBuSURvZ1ptRnNjMlU3WEc1OU8xeHVYRzR2THlCUGJHUmxjaUJKUlNCMlpY
SnphVzl1Y3lCa2J5QnViM1FnWkdseVpXTjBiSGtnYzNWd2NHOXlkQ0JwYm1SbGVFOW1JSE52SUhk
bElHMTFjM1FnYVcxd2JHVnRaVzUwSUc5MWNpQnZkMjRzSUhOaFpHeDVMbHh1Wlhod2IzSjBJR1ox
Ym1OMGFXOXVJR2x1WkdWNFQyWW9ZWEp5WVhrc0lIWmhiSFZsS1NCN1hHNGdJR1p2Y2lBb2JHVjBJ
R2tnUFNBd0xDQnNaVzRnUFNCaGNuSmhlUzVzWlc1bmRHZzdJR2tnUENCc1pXNDdJR2tyS3lrZ2Ux
eHVJQ0FnSUdsbUlDaGhjbkpoZVZ0cFhTQTlQVDBnZG1Gc2RXVXBJSHRjYmlBZ0lDQWdJSEpsZEhW
eWJpQnBPMXh1SUNBZ0lIMWNiaUFnZlZ4dUlDQnlaWFIxY200Z0xURTdYRzU5WEc1Y2JseHVaWGh3
YjNKMElHWjFibU4wYVc5dUlHVnpZMkZ3WlVWNGNISmxjM05wYjI0b2MzUnlhVzVuS1NCN1hHNGdJ
R2xtSUNoMGVYQmxiMllnYzNSeWFXNW5JQ0U5UFNBbmMzUnlhVzVuSnlrZ2UxeHVJQ0FnSUM4dklH
UnZiaWQwSUdWelkyRndaU0JUWVdabFUzUnlhVzVuY3l3Z2MybHVZMlVnZEdobGVTZHlaU0JoYkhK
bFlXUjVJSE5oWm1WY2JpQWdJQ0JwWmlBb2MzUnlhVzVuSUNZbUlITjBjbWx1Wnk1MGIwaFVUVXdw
SUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJ6ZEhKcGJtY3VkRzlJVkUxTUtDazdYRzRnSUNBZ2ZTQmxi
SE5sSUdsbUlDaHpkSEpwYm1jZ1BUMGdiblZzYkNrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUNjbk8x
eHVJQ0FnSUgwZ1pXeHpaU0JwWmlBb0lYTjBjbWx1WnlrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUhO
MGNtbHVaeUFySUNjbk8xeHVJQ0FnSUgxY2JseHVJQ0FnSUM4dklFWnZjbU5sSUdFZ2MzUnlhVzVu
SUdOdmJuWmxjbk5wYjI0Z1lYTWdkR2hwY3lCM2FXeHNJR0psSUdSdmJtVWdZbmtnZEdobElHRndj
R1Z1WkNCeVpXZGhjbVJzWlhOeklHRnVaRnh1SUNBZ0lDOHZJSFJvWlNCeVpXZGxlQ0IwWlhOMElI
ZHBiR3dnWkc4Z2RHaHBjeUIwY21GdWMzQmhjbVZ1ZEd4NUlHSmxhR2x1WkNCMGFHVWdjMk5sYm1W
ekxDQmpZWFZ6YVc1bklHbHpjM1ZsY3lCcFpseHVJQ0FnSUM4dklHRnVJRzlpYW1WamRDZHpJSFJ2
SUhOMGNtbHVaeUJvWVhNZ1pYTmpZWEJsWkNCamFHRnlZV04wWlhKeklHbHVJR2wwTGx4dUlDQWdJ
SE4wY21sdVp5QTlJQ2NuSUNzZ2MzUnlhVzVuTzF4dUlDQjlYRzVjYmlBZ2FXWWdLQ0Z3YjNOemFX
SnNaUzUwWlhOMEtITjBjbWx1WnlrcElIc2djbVYwZFhKdUlITjBjbWx1WnpzZ2ZWeHVJQ0J5WlhS
MWNtNGdjM1J5YVc1bkxuSmxjR3hoWTJVb1ltRmtRMmhoY25Nc0lHVnpZMkZ3WlVOb1lYSXBPMXh1
ZlZ4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2FYTkZiWEIwZVNoMllXeDFaU2tnZTF4dUlDQnBa
aUFvSVhaaGJIVmxJQ1ltSUhaaGJIVmxJQ0U5UFNBd0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUhSeWRX
VTdYRzRnSUgwZ1pXeHpaU0JwWmlBb2FYTkJjbkpoZVNoMllXeDFaU2tnSmlZZ2RtRnNkV1V1YkdW
dVozUm9JRDA5UFNBd0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUhSeWRXVTdYRzRnSUgwZ1pXeHpaU0I3
WEc0Z0lDQWdjbVYwZFhKdUlHWmhiSE5sTzF4dUlDQjlYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpk
R2x2YmlCamNtVmhkR1ZHY21GdFpTaHZZbXBsWTNRcElIdGNiaUFnYkdWMElHWnlZVzFsSUQwZ1pY
aDBaVzVrS0h0OUxDQnZZbXBsWTNRcE8xeHVJQ0JtY21GdFpTNWZjR0Z5Wlc1MElEMGdiMkpxWldO
ME8xeHVJQ0J5WlhSMWNtNGdabkpoYldVN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJp
Ykc5amExQmhjbUZ0Y3lod1lYSmhiWE1zSUdsa2N5a2dlMXh1SUNCd1lYSmhiWE11Y0dGMGFDQTlJ
R2xrY3p0Y2JpQWdjbVYwZFhKdUlIQmhjbUZ0Y3p0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFX
OXVJR0Z3Y0dWdVpFTnZiblJsZUhSUVlYUm9LR052Ym5SbGVIUlFZWFJvTENCcFpDa2dlMXh1SUNC
eVpYUjFjbTRnS0dOdmJuUmxlSFJRWVhSb0lEOGdZMjl1ZEdWNGRGQmhkR2dnS3lBbkxpY2dPaUFu
SnlrZ0t5QnBaRHRjYm4xY2JpSmRmUT09Cis7CitkZWZpbmUoJ2hhbmRsZWJhcnMvZXhjZXB0aW9u
JyxbJ2V4cG9ydHMnLCAnbW9kdWxlJ10sIGZ1bmN0aW9uIChleHBvcnRzLCBtb2R1bGUpIHsKKyAg
J3VzZSBzdHJpY3QnOworCisgIHZhciBlcnJvclByb3BzID0gWydkZXNjcmlwdGlvbicsICdmaWxl
TmFtZScsICdsaW5lTnVtYmVyJywgJ21lc3NhZ2UnLCAnbmFtZScsICdudW1iZXInLCAnc3RhY2sn
XTsKKworICBmdW5jdGlvbiBFeGNlcHRpb24obWVzc2FnZSwgbm9kZSkgeworICAgIHZhciBsb2Mg
PSBub2RlICYmIG5vZGUubG9jLAorICAgICAgICBsaW5lID0gdW5kZWZpbmVkLAorICAgICAgICBj
b2x1bW4gPSB1bmRlZmluZWQ7CisgICAgaWYgKGxvYykgeworICAgICAgbGluZSA9IGxvYy5zdGFy
dC5saW5lOworICAgICAgY29sdW1uID0gbG9jLnN0YXJ0LmNvbHVtbjsKKworICAgICAgbWVzc2Fn
ZSArPSAnIC0gJyArIGxpbmUgKyAnOicgKyBjb2x1bW47CisgICAgfQorCisgICAgdmFyIHRtcCA9
IEVycm9yLnByb3RvdHlwZS5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsIG1lc3NhZ2UpOworCisgICAg
Ly8gVW5mb3J0dW5hdGVseSBlcnJvcnMgYXJlIG5vdCBlbnVtZXJhYmxlIGluIENocm9tZSAoYXQg
bGVhc3QpLCBzbyBgZm9yIHByb3AgaW4gdG1wYCBkb2Vzbid0IHdvcmsuCisgICAgZm9yICh2YXIg
aWR4ID0gMDsgaWR4IDwgZXJyb3JQcm9wcy5sZW5ndGg7IGlkeCsrKSB7CisgICAgICB0aGlzW2Vy
cm9yUHJvcHNbaWR4XV0gPSB0bXBbZXJyb3JQcm9wc1tpZHhdXTsKKyAgICB9CisKKyAgICAvKiBp
c3RhbmJ1bCBpZ25vcmUgZWxzZSAqLworICAgIGlmIChFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSkg
eworICAgICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgRXhjZXB0aW9uKTsKKyAgICB9
CisKKyAgICB0cnkgeworICAgICAgaWYgKGxvYykgeworICAgICAgICB0aGlzLmxpbmVOdW1iZXIg
PSBsaW5lOworCisgICAgICAgIC8vIFdvcmsgYXJvdW5kIGlzc3VlIHVuZGVyIHNhZmFyaSB3aGVy
ZSB3ZSBjYW4ndCBkaXJlY3RseSBzZXQgdGhlIGNvbHVtbiB2YWx1ZQorICAgICAgICAvKiBpc3Rh
bmJ1bCBpZ25vcmUgbmV4dCAqLworICAgICAgICBpZiAoT2JqZWN0LmRlZmluZVByb3BlcnR5KSB7
CisgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICdjb2x1bW4nLCB7IHZhbHVl
OiBjb2x1bW4gfSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgdGhpcy5jb2x1bW4gPSBj
b2x1bW47CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9IGNhdGNoIChub3ApIHsKKyAgICAgIC8q
IElnbm9yZSBpZiB0aGUgYnJvd3NlciBpcyB2ZXJ5IHBhcnRpY3VsYXIgKi8KKyAgICB9CisgIH0K
KworICBFeGNlcHRpb24ucHJvdG90eXBlID0gbmV3IEVycm9yKCk7CisKKyAgbW9kdWxlLmV4cG9y
dHMgPSBFeGNlcHRpb247Cit9KTsKKy8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRp
b24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUx5
NHVMMnhwWWk5b1lXNWtiR1ZpWVhKekwyVjRZMlZ3ZEdsdmJpNXFjeUpkTENKdVlXMWxjeUk2VzEw
c0ltMWhjSEJwYm1keklqb2lPenM3UVVGRFFTeE5RVUZOTEZWQlFWVXNSMEZCUnl4RFFVRkRMR0ZC
UVdFc1JVRkJSU3hWUVVGVkxFVkJRVVVzV1VGQldTeEZRVUZGTEZOQlFWTXNSVUZCUlN4TlFVRk5M
RVZCUVVVc1VVRkJVU3hGUVVGRkxFOUJRVThzUTBGQlF5eERRVUZET3p0QlFVVnVSeXhYUVVGVExG
TkJRVk1zUTBGQlF5eFBRVUZQTEVWQlFVVXNTVUZCU1N4RlFVRkZPMEZCUTJoRExGRkJRVWtzUjBG
QlJ5eEhRVUZITEVsQlFVa3NTVUZCU1N4SlFVRkpMRU5CUVVNc1IwRkJSenRSUVVOMFFpeEpRVUZK
TEZsQlFVRTdVVUZEU2l4TlFVRk5MRmxCUVVFc1EwRkJRenRCUVVOWUxGRkJRVWtzUjBGQlJ5eEZR
VUZGTzBGQlExQXNWVUZCU1N4SFFVRkhMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNT
eERRVUZETzBGQlEzUkNMRmxCUVUwc1IwRkJSeXhIUVVGSExFTkJRVU1zUzBGQlN5eERRVUZETEUx
QlFVMHNRMEZCUXpzN1FVRkZNVUlzWVVGQlR5eEpRVUZKTEV0QlFVc3NSMEZCUnl4SlFVRkpMRWRC
UVVjc1IwRkJSeXhIUVVGSExFMUJRVTBzUTBGQlF6dExRVU40UXpzN1FVRkZSQ3hSUVVGSkxFZEJR
VWNzUjBGQlJ5eExRVUZMTEVOQlFVTXNVMEZCVXl4RFFVRkRMRmRCUVZjc1EwRkJReXhKUVVGSkxF
TkJRVU1zU1VGQlNTeEZRVUZGTEU5QlFVOHNRMEZCUXl4RFFVRkRPenM3UVVGSE1VUXNVMEZCU3l4
SlFVRkpMRWRCUVVjc1IwRkJSeXhEUVVGRExFVkJRVVVzUjBGQlJ5eEhRVUZITEZWQlFWVXNRMEZC
UXl4TlFVRk5MRVZCUVVVc1IwRkJSeXhGUVVGRkxFVkJRVVU3UVVGRGFFUXNWVUZCU1N4RFFVRkRM
RlZCUVZVc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEhRVUZITEVkQlFVY3NRMEZCUXl4VlFV
RlZMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF6dExRVU01UXpzN08wRkJSMFFzVVVG
QlNTeExRVUZMTEVOQlFVTXNhVUpCUVdsQ0xFVkJRVVU3UVVGRE0wSXNWMEZCU3l4RFFVRkRMR2xD
UVVGcFFpeERRVUZETEVsQlFVa3NSVUZCUlN4VFFVRlRMRU5CUVVNc1EwRkJRenRMUVVNeFF6czdR
VUZGUkN4UlFVRkpPMEZCUTBZc1ZVRkJTU3hIUVVGSExFVkJRVVU3UVVGRFVDeFpRVUZKTEVOQlFV
TXNWVUZCVlN4SFFVRkhMRWxCUVVrc1EwRkJRenM3T3p0QlFVbDJRaXhaUVVGSkxFMUJRVTBzUTBG
QlF5eGpRVUZqTEVWQlFVVTdRVUZEZWtJc1owSkJRVTBzUTBGQlF5eGpRVUZqTEVOQlFVTXNTVUZC
U1N4RlFVRkZMRkZCUVZFc1JVRkJSU3hGUVVGRExFdEJRVXNzUlVGQlJTeE5RVUZOTEVWQlFVTXNR
MEZCUXl4RFFVRkRPMU5CUTNoRUxFMUJRVTA3UVVGRFRDeGpRVUZKTEVOQlFVTXNUVUZCVFN4SFFV
RkhMRTFCUVUwc1EwRkJRenRUUVVOMFFqdFBRVU5HTzB0QlEwWXNRMEZCUXl4UFFVRlBMRWRCUVVj
c1JVRkJSVHM3UzBGRllqdEhRVU5HT3p0QlFVVkVMRmRCUVZNc1EwRkJReXhUUVVGVExFZEJRVWNz
U1VGQlNTeExRVUZMTEVWQlFVVXNRMEZCUXpzN2JVSkJSVzVDTEZOQlFWTWlMQ0ptYVd4bElqb2la
WGhqWlhCMGFXOXVMbXB6SWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaVhHNWpiMjV6ZENCbGNu
SnZjbEJ5YjNCeklEMGdXeWRrWlhOamNtbHdkR2x2Ymljc0lDZG1hV3hsVG1GdFpTY3NJQ2RzYVc1
bFRuVnRZbVZ5Snl3Z0oyMWxjM05oWjJVbkxDQW5ibUZ0WlNjc0lDZHVkVzFpWlhJbkxDQW5jM1Jo
WTJzblhUdGNibHh1Wm5WdVkzUnBiMjRnUlhoalpYQjBhVzl1S0cxbGMzTmhaMlVzSUc1dlpHVXBJ
SHRjYmlBZ2JHVjBJR3h2WXlBOUlHNXZaR1VnSmlZZ2JtOWtaUzVzYjJNc1hHNGdJQ0FnSUNCc2FX
NWxMRnh1SUNBZ0lDQWdZMjlzZFcxdU8xeHVJQ0JwWmlBb2JHOWpLU0I3WEc0Z0lDQWdiR2x1WlNB
OUlHeHZZeTV6ZEdGeWRDNXNhVzVsTzF4dUlDQWdJR052YkhWdGJpQTlJR3h2WXk1emRHRnlkQzVq
YjJ4MWJXNDdYRzVjYmlBZ0lDQnRaWE56WVdkbElDczlJQ2NnTFNBbklDc2diR2x1WlNBcklDYzZK
eUFySUdOdmJIVnRianRjYmlBZ2ZWeHVYRzRnSUd4bGRDQjBiWEFnUFNCRmNuSnZjaTV3Y205MGIz
UjVjR1V1WTI5dWMzUnlkV04wYjNJdVkyRnNiQ2gwYUdsekxDQnRaWE56WVdkbEtUdGNibHh1SUNB
dkx5QlZibVp2Y25SMWJtRjBaV3g1SUdWeWNtOXljeUJoY21VZ2JtOTBJR1Z1ZFcxbGNtRmliR1Vn
YVc0Z1EyaHliMjFsSUNoaGRDQnNaV0Z6ZENrc0lITnZJR0JtYjNJZ2NISnZjQ0JwYmlCMGJYQmdJ
R1J2WlhOdUozUWdkMjl5YXk1Y2JpQWdabTl5SUNoc1pYUWdhV1I0SUQwZ01Ec2dhV1I0SUR3Z1pY
SnliM0pRY205d2N5NXNaVzVuZEdnN0lHbGtlQ3NyS1NCN1hHNGdJQ0FnZEdocGMxdGxjbkp2Y2xC
eWIzQnpXMmxrZUYxZElEMGdkRzF3VzJWeWNtOXlVSEp2Y0hOYmFXUjRYVjA3WEc0Z0lIMWNibHh1
SUNBdktpQnBjM1JoYm1KMWJDQnBaMjV2Y21VZ1pXeHpaU0FxTDF4dUlDQnBaaUFvUlhKeWIzSXVZ
MkZ3ZEhWeVpWTjBZV05yVkhKaFkyVXBJSHRjYmlBZ0lDQkZjbkp2Y2k1allYQjBkWEpsVTNSaFky
dFVjbUZqWlNoMGFHbHpMQ0JGZUdObGNIUnBiMjRwTzF4dUlDQjlYRzVjYmlBZ2RISjVJSHRjYmlB
Z0lDQnBaaUFvYkc5aktTQjdYRzRnSUNBZ0lDQjBhR2x6TG14cGJtVk9kVzFpWlhJZ1BTQnNhVzVs
TzF4dVhHNGdJQ0FnSUNBdkx5QlhiM0pySUdGeWIzVnVaQ0JwYzNOMVpTQjFibVJsY2lCellXWmhj
bWtnZDJobGNtVWdkMlVnWTJGdUozUWdaR2x5WldOMGJIa2djMlYwSUhSb1pTQmpiMngxYlc0Z2Rt
RnNkV1ZjYmlBZ0lDQWdJQzhxSUdsemRHRnVZblZzSUdsbmJtOXlaU0J1WlhoMElDb3ZYRzRnSUNB
Z0lDQnBaaUFvVDJKcVpXTjBMbVJsWm1sdVpWQnliM0JsY25SNUtTQjdYRzRnSUNBZ0lDQWdJRTlp
YW1WamRDNWtaV1pwYm1WUWNtOXdaWEowZVNoMGFHbHpMQ0FuWTI5c2RXMXVKeXdnZTNaaGJIVmxP
aUJqYjJ4MWJXNTlLVHRjYmlBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJSFJvYVhNdVky
OXNkVzF1SUQwZ1kyOXNkVzF1TzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ2ZTQmpZWFJqYUNB
b2JtOXdLU0I3WEc0Z0lDQWdMeW9nU1dkdWIzSmxJR2xtSUhSb1pTQmljbTkzYzJWeUlHbHpJSFps
Y25rZ2NHRnlkR2xqZFd4aGNpQXFMMXh1SUNCOVhHNTlYRzVjYmtWNFkyVndkR2x2Ymk1d2NtOTBi
M1I1Y0dVZ1BTQnVaWGNnUlhKeWIzSW9LVHRjYmx4dVpYaHdiM0owSUdSbFptRjFiSFFnUlhoalpY
QjBhVzl1TzF4dUlsMTkKKzsKK2RlZmluZSgnaGFuZGxlYmFycy9oZWxwZXJzL2Jsb2NrLWhlbHBl
ci1taXNzaW5nJyxbJ2V4cG9ydHMnLCAnbW9kdWxlJywgJy4uL3V0aWxzJ10sIGZ1bmN0aW9uIChl
eHBvcnRzLCBtb2R1bGUsIF91dGlscykgeworICAndXNlIHN0cmljdCc7CisKKyAgbW9kdWxlLmV4
cG9ydHMgPSBmdW5jdGlvbiAoaW5zdGFuY2UpIHsKKyAgICBpbnN0YW5jZS5yZWdpc3RlckhlbHBl
cignYmxvY2tIZWxwZXJNaXNzaW5nJywgZnVuY3Rpb24gKGNvbnRleHQsIG9wdGlvbnMpIHsKKyAg
ICAgIHZhciBpbnZlcnNlID0gb3B0aW9ucy5pbnZlcnNlLAorICAgICAgICAgIGZuID0gb3B0aW9u
cy5mbjsKKworICAgICAgaWYgKGNvbnRleHQgPT09IHRydWUpIHsKKyAgICAgICAgcmV0dXJuIGZu
KHRoaXMpOworICAgICAgfSBlbHNlIGlmIChjb250ZXh0ID09PSBmYWxzZSB8fCBjb250ZXh0ID09
IG51bGwpIHsKKyAgICAgICAgcmV0dXJuIGludmVyc2UodGhpcyk7CisgICAgICB9IGVsc2UgaWYg
KF91dGlscy5pc0FycmF5KGNvbnRleHQpKSB7CisgICAgICAgIGlmIChjb250ZXh0Lmxlbmd0aCA+
IDApIHsKKyAgICAgICAgICBpZiAob3B0aW9ucy5pZHMpIHsKKyAgICAgICAgICAgIG9wdGlvbnMu
aWRzID0gW29wdGlvbnMubmFtZV07CisgICAgICAgICAgfQorCisgICAgICAgICAgcmV0dXJuIGlu
c3RhbmNlLmhlbHBlcnMuZWFjaChjb250ZXh0LCBvcHRpb25zKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICByZXR1cm4gaW52ZXJzZSh0aGlzKTsKKyAgICAgICAgfQorICAgICAgfSBlbHNl
IHsKKyAgICAgICAgaWYgKG9wdGlvbnMuZGF0YSAmJiBvcHRpb25zLmlkcykgeworICAgICAgICAg
IHZhciBkYXRhID0gX3V0aWxzLmNyZWF0ZUZyYW1lKG9wdGlvbnMuZGF0YSk7CisgICAgICAgICAg
ZGF0YS5jb250ZXh0UGF0aCA9IF91dGlscy5hcHBlbmRDb250ZXh0UGF0aChvcHRpb25zLmRhdGEu
Y29udGV4dFBhdGgsIG9wdGlvbnMubmFtZSk7CisgICAgICAgICAgb3B0aW9ucyA9IHsgZGF0YTog
ZGF0YSB9OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGZuKGNvbnRleHQsIG9wdGlvbnMp
OworICAgICAgfQorICAgIH0pOworICB9OworfSk7CisvLyMgc291cmNlTWFwcGluZ1VSTD1kYXRh
OmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBi
SWk0dUx5NHVMeTR1THk0dUwyeHBZaTlvWVc1a2JHVmlZWEp6TDJobGJIQmxjbk12WW14dlkyc3Rh
R1ZzY0dWeUxXMXBjM05wYm1jdWFuTWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklq
czdPMjFDUVVWbExGVkJRVk1zVVVGQlVTeEZRVUZGTzBGQlEyaERMRmxCUVZFc1EwRkJReXhqUVVG
akxFTkJRVU1zYjBKQlFXOUNMRVZCUVVVc1ZVRkJVeXhQUVVGUExFVkJRVVVzVDBGQlR5eEZRVUZG
TzBGQlEzWkZMRlZCUVVrc1QwRkJUeXhIUVVGSExFOUJRVThzUTBGQlF5eFBRVUZQTzFWQlEzcENM
RVZCUVVVc1IwRkJSeXhQUVVGUExFTkJRVU1zUlVGQlJTeERRVUZET3p0QlFVVndRaXhWUVVGSkxF
OUJRVThzUzBGQlN5eEpRVUZKTEVWQlFVVTdRVUZEY0VJc1pVRkJUeXhGUVVGRkxFTkJRVU1zU1VG
QlNTeERRVUZETEVOQlFVTTdUMEZEYWtJc1RVRkJUU3hKUVVGSkxFOUJRVThzUzBGQlN5eExRVUZM
TEVsQlFVa3NUMEZCVHl4SlFVRkpMRWxCUVVrc1JVRkJSVHRCUVVNdlF5eGxRVUZQTEU5QlFVOHNR
MEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRQUVVOMFFpeE5RVUZOTEVsQlFVa3NUMEZZZVVJc1Qw
RkJUeXhEUVZkNFFpeFBRVUZQTEVOQlFVTXNSVUZCUlR0QlFVTXpRaXhaUVVGSkxFOUJRVThzUTBG
QlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RlFVRkZPMEZCUTNSQ0xHTkJRVWtzVDBGQlR5eERRVUZE
TEVkQlFVY3NSVUZCUlR0QlFVTm1MRzFDUVVGUExFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTXNU
MEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xZEJRemxDT3p0QlFVVkVMR2xDUVVGUExG
RkJRVkVzUTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTlCUVU4c1JVRkJSU3hQUVVG
UExFTkJRVU1zUTBGQlF6dFRRVU5vUkN4TlFVRk5PMEZCUTB3c2FVSkJRVThzVDBGQlR5eERRVUZE
TEVsQlFVa3NRMEZCUXl4RFFVRkRPMU5CUTNSQ08wOUJRMFlzVFVGQlRUdEJRVU5NTEZsQlFVa3NU
MEZCVHl4RFFVRkRMRWxCUVVrc1NVRkJTU3hQUVVGUExFTkJRVU1zUjBGQlJ5eEZRVUZGTzBGQlF5
OUNMR05CUVVrc1NVRkJTU3hIUVVGSExFOUJka0pSTEZkQlFWY3NRMEYxUWxBc1QwRkJUeXhEUVVG
RExFbEJRVWtzUTBGQlF5eERRVUZETzBGQlEzSkRMR05CUVVrc1EwRkJReXhYUVVGWExFZEJRVWNz
VDBGNFFtNUNMR2xDUVVGcFFpeERRWGRDYjBJc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eFhR
VUZYTEVWQlFVVXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8wRkJRemRGTEdsQ1FV
RlBMRWRCUVVjc1JVRkJReXhKUVVGSkxFVkJRVVVzU1VGQlNTeEZRVUZETEVOQlFVTTdVMEZEZUVJ
N08wRkJSVVFzWlVGQlR5eEZRVUZGTEVOQlFVTXNUMEZCVHl4RlFVRkZMRTlCUVU4c1EwRkJReXhE
UVVGRE8wOUJRemRDTzB0QlEwWXNRMEZCUXl4RFFVRkRPMGRCUTBvaUxDSm1hV3hsSWpvaVlteHZZ
MnN0YUdWc2NHVnlMVzFwYzNOcGJtY3Vhbk1pTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKcGJY
QnZjblFnZTJGd2NHVnVaRU52Ym5SbGVIUlFZWFJvTENCamNtVmhkR1ZHY21GdFpTd2dhWE5CY25K
aGVYMGdabkp2YlNBbkxpNHZkWFJwYkhNbk8xeHVYRzVsZUhCdmNuUWdaR1ZtWVhWc2RDQm1kVzVq
ZEdsdmJpaHBibk4wWVc1alpTa2dlMXh1SUNCcGJuTjBZVzVqWlM1eVpXZHBjM1JsY2tobGJIQmxj
aWduWW14dlkydElaV3h3WlhKTmFYTnphVzVuSnl3Z1puVnVZM1JwYjI0b1kyOXVkR1Y0ZEN3Z2Iz
QjBhVzl1Y3lrZ2UxeHVJQ0FnSUd4bGRDQnBiblpsY25ObElEMGdiM0IwYVc5dWN5NXBiblpsY25O
bExGeHVJQ0FnSUNBZ0lDQm1iaUE5SUc5d2RHbHZibk11Wm00N1hHNWNiaUFnSUNCcFppQW9ZMjl1
ZEdWNGRDQTlQVDBnZEhKMVpTa2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlHWnVLSFJvYVhNcE8xeHVJ
Q0FnSUgwZ1pXeHpaU0JwWmlBb1kyOXVkR1Y0ZENBOVBUMGdabUZzYzJVZ2ZId2dZMjl1ZEdWNGRD
QTlQU0J1ZFd4c0tTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z2FXNTJaWEp6WlNoMGFHbHpLVHRjYmlB
Z0lDQjlJR1ZzYzJVZ2FXWWdLR2x6UVhKeVlYa29ZMjl1ZEdWNGRDa3BJSHRjYmlBZ0lDQWdJR2xt
SUNoamIyNTBaWGgwTG14bGJtZDBhQ0ErSURBcElIdGNiaUFnSUNBZ0lDQWdhV1lnS0c5d2RHbHZi
bk11YVdSektTQjdYRzRnSUNBZ0lDQWdJQ0FnYjNCMGFXOXVjeTVwWkhNZ1BTQmJiM0IwYVc5dWN5
NXVZVzFsWFR0Y2JpQWdJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQnBibk4wWVc1
alpTNW9aV3h3WlhKekxtVmhZMmdvWTI5dWRHVjRkQ3dnYjNCMGFXOXVjeWs3WEc0Z0lDQWdJQ0I5
SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdhVzUyWlhKelpTaDBhR2x6S1R0Y2JpQWdJ
Q0FnSUgxY2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdhV1lnS0c5d2RHbHZibk11WkdGMFlT
QW1KaUJ2Y0hScGIyNXpMbWxrY3lrZ2UxeHVJQ0FnSUNBZ0lDQnNaWFFnWkdGMFlTQTlJR055WldG
MFpVWnlZVzFsS0c5d2RHbHZibk11WkdGMFlTazdYRzRnSUNBZ0lDQWdJR1JoZEdFdVkyOXVkR1Y0
ZEZCaGRHZ2dQU0JoY0hCbGJtUkRiMjUwWlhoMFVHRjBhQ2h2Y0hScGIyNXpMbVJoZEdFdVkyOXVk
R1Y0ZEZCaGRHZ3NJRzl3ZEdsdmJuTXVibUZ0WlNrN1hHNGdJQ0FnSUNBZ0lHOXdkR2x2Ym5NZ1BT
QjdaR0YwWVRvZ1pHRjBZWDA3WEc0Z0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUhKbGRIVnliaUJtYmlo
amIyNTBaWGgwTENCdmNIUnBiMjV6S1R0Y2JpQWdJQ0I5WEc0Z0lIMHBPMXh1ZlZ4dUlsMTkKKzsK
K2RlZmluZSgnaGFuZGxlYmFycy9oZWxwZXJzL2VhY2gnLFsnZXhwb3J0cycsICdtb2R1bGUnLCAn
Li4vdXRpbHMnLCAnLi4vZXhjZXB0aW9uJ10sIGZ1bmN0aW9uIChleHBvcnRzLCBtb2R1bGUsIF91
dGlscywgX2V4Y2VwdGlvbikgeworICAndXNlIHN0cmljdCc7CisKKyAgLy8gaXN0YW5idWwgaWdu
b3JlIG5leHQKKworICBmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1
cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9CisK
KyAgdmFyIF9FeGNlcHRpb24gPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9leGNlcHRpb24pOwor
CisgIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGluc3RhbmNlKSB7CisgICAgaW5zdGFuY2Uu
cmVnaXN0ZXJIZWxwZXIoJ2VhY2gnLCBmdW5jdGlvbiAoY29udGV4dCwgb3B0aW9ucykgeworICAg
ICAgaWYgKCFvcHRpb25zKSB7CisgICAgICAgIHRocm93IG5ldyBfRXhjZXB0aW9uWydkZWZhdWx0
J10oJ011c3QgcGFzcyBpdGVyYXRvciB0byAjZWFjaCcpOworICAgICAgfQorCisgICAgICB2YXIg
Zm4gPSBvcHRpb25zLmZuLAorICAgICAgICAgIGludmVyc2UgPSBvcHRpb25zLmludmVyc2UsCisg
ICAgICAgICAgaSA9IDAsCisgICAgICAgICAgcmV0ID0gJycsCisgICAgICAgICAgZGF0YSA9IHVu
ZGVmaW5lZCwKKyAgICAgICAgICBjb250ZXh0UGF0aCA9IHVuZGVmaW5lZDsKKworICAgICAgaWYg
KG9wdGlvbnMuZGF0YSAmJiBvcHRpb25zLmlkcykgeworICAgICAgICBjb250ZXh0UGF0aCA9IF91
dGlscy5hcHBlbmRDb250ZXh0UGF0aChvcHRpb25zLmRhdGEuY29udGV4dFBhdGgsIG9wdGlvbnMu
aWRzWzBdKSArICcuJzsKKyAgICAgIH0KKworICAgICAgaWYgKF91dGlscy5pc0Z1bmN0aW9uKGNv
bnRleHQpKSB7CisgICAgICAgIGNvbnRleHQgPSBjb250ZXh0LmNhbGwodGhpcyk7CisgICAgICB9
CisKKyAgICAgIGlmIChvcHRpb25zLmRhdGEpIHsKKyAgICAgICAgZGF0YSA9IF91dGlscy5jcmVh
dGVGcmFtZShvcHRpb25zLmRhdGEpOworICAgICAgfQorCisgICAgICBmdW5jdGlvbiBleGVjSXRl
cmF0aW9uKGZpZWxkLCBpbmRleCwgbGFzdCkgeworICAgICAgICBpZiAoZGF0YSkgeworICAgICAg
ICAgIGRhdGEua2V5ID0gZmllbGQ7CisgICAgICAgICAgZGF0YS5pbmRleCA9IGluZGV4OworICAg
ICAgICAgIGRhdGEuZmlyc3QgPSBpbmRleCA9PT0gMDsKKyAgICAgICAgICBkYXRhLmxhc3QgPSAh
IWxhc3Q7CisKKyAgICAgICAgICBpZiAoY29udGV4dFBhdGgpIHsKKyAgICAgICAgICAgIGRhdGEu
Y29udGV4dFBhdGggPSBjb250ZXh0UGF0aCArIGZpZWxkOworICAgICAgICAgIH0KKyAgICAgICAg
fQorCisgICAgICAgIHJldCA9IHJldCArIGZuKGNvbnRleHRbZmllbGRdLCB7CisgICAgICAgICAg
ZGF0YTogZGF0YSwKKyAgICAgICAgICBibG9ja1BhcmFtczogX3V0aWxzLmJsb2NrUGFyYW1zKFtj
b250ZXh0W2ZpZWxkXSwgZmllbGRdLCBbY29udGV4dFBhdGggKyBmaWVsZCwgbnVsbF0pCisgICAg
ICAgIH0pOworICAgICAgfQorCisgICAgICBpZiAoY29udGV4dCAmJiB0eXBlb2YgY29udGV4dCA9
PT0gJ29iamVjdCcpIHsKKyAgICAgICAgaWYgKF91dGlscy5pc0FycmF5KGNvbnRleHQpKSB7Cisg
ICAgICAgICAgZm9yICh2YXIgaiA9IGNvbnRleHQubGVuZ3RoOyBpIDwgajsgaSsrKSB7CisgICAg
ICAgICAgICBpZiAoaSBpbiBjb250ZXh0KSB7CisgICAgICAgICAgICAgIGV4ZWNJdGVyYXRpb24o
aSwgaSwgaSA9PT0gY29udGV4dC5sZW5ndGggLSAxKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgdmFyIHByaW9yS2V5ID0gdW5kZWZpbmVk
OworCisgICAgICAgICAgZm9yICh2YXIga2V5IGluIGNvbnRleHQpIHsKKyAgICAgICAgICAgIGlm
IChjb250ZXh0Lmhhc093blByb3BlcnR5KGtleSkpIHsKKyAgICAgICAgICAgICAgLy8gV2UncmUg
cnVubmluZyB0aGUgaXRlcmF0aW9ucyBvbmUgc3RlcCBvdXQgb2Ygc3luYyBzbyB3ZSBjYW4gZGV0
ZWN0CisgICAgICAgICAgICAgIC8vIHRoZSBsYXN0IGl0ZXJhdGlvbiB3aXRob3V0IGhhdmUgdG8g
c2NhbiB0aGUgb2JqZWN0IHR3aWNlIGFuZCBjcmVhdGUKKyAgICAgICAgICAgICAgLy8gYW4gaXRl
cm1lZGlhdGUga2V5cyBhcnJheS4KKyAgICAgICAgICAgICAgaWYgKHByaW9yS2V5ICE9PSB1bmRl
ZmluZWQpIHsKKyAgICAgICAgICAgICAgICBleGVjSXRlcmF0aW9uKHByaW9yS2V5LCBpIC0gMSk7
CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgcHJpb3JLZXkgPSBrZXk7CisgICAgICAg
ICAgICAgIGkrKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgaWYgKHBy
aW9yS2V5ICE9PSB1bmRlZmluZWQpIHsKKyAgICAgICAgICAgIGV4ZWNJdGVyYXRpb24ocHJpb3JL
ZXksIGkgLSAxLCB0cnVlKTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKworICAg
ICAgaWYgKGkgPT09IDApIHsKKyAgICAgICAgcmV0ID0gaW52ZXJzZSh0aGlzKTsKKyAgICAgIH0K
KworICAgICAgcmV0dXJuIHJldDsKKyAgICB9KTsKKyAgfTsKK30pOworLy8jIHNvdXJjZU1hcHBp
bmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIz
VnlZMlZ6SWpwYklpNHVMeTR1THk0dUx5NHVMMnhwWWk5b1lXNWtiR1ZpWVhKekwyaGxiSEJsY25N
dlpXRmphQzVxY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pT3pzN096czdPenM3
YlVKQlIyVXNWVUZCVXl4UlFVRlJMRVZCUVVVN1FVRkRhRU1zV1VGQlVTeERRVUZETEdOQlFXTXNR
MEZCUXl4TlFVRk5MRVZCUVVVc1ZVRkJVeXhQUVVGUExFVkJRVVVzVDBGQlR5eEZRVUZGTzBGQlEz
cEVMRlZCUVVrc1EwRkJReXhQUVVGUExFVkJRVVU3UVVGRFdpeGpRVUZOTERCQ1FVRmpMRFpDUVVF
MlFpeERRVUZETEVOQlFVTTdUMEZEY0VRN08wRkJSVVFzVlVGQlNTeEZRVUZGTEVkQlFVY3NUMEZC
VHl4RFFVRkRMRVZCUVVVN1ZVRkRaaXhQUVVGUExFZEJRVWNzVDBGQlR5eERRVUZETEU5QlFVODdW
VUZEZWtJc1EwRkJReXhIUVVGSExFTkJRVU03VlVGRFRDeEhRVUZITEVkQlFVY3NSVUZCUlR0VlFV
TlNMRWxCUVVrc1dVRkJRVHRWUVVOS0xGZEJRVmNzV1VGQlFTeERRVUZET3p0QlFVVm9RaXhWUVVG
SkxFOUJRVThzUTBGQlF5eEpRVUZKTEVsQlFVa3NUMEZCVHl4RFFVRkRMRWRCUVVjc1JVRkJSVHRC
UVVNdlFpeHRRa0ZCVnl4SFFVRkhMRTlCYWtKYUxHbENRVUZwUWl4RFFXbENZU3hQUVVGUExFTkJR
VU1zU1VGQlNTeERRVUZETEZkQlFWY3NSVUZCUlN4UFFVRlBMRU5CUVVNc1IwRkJSeXhEUVVGRExF
TkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NSMEZCUnl4RFFVRkRPMDlCUTJwR096dEJRVVZFTEZW
QlFVa3NUMEZ3UW5ORUxGVkJRVlVzUTBGdlFuSkVMRTlCUVU4c1EwRkJReXhGUVVGRk8wRkJRVVVz
WlVGQlR5eEhRVUZITEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJR
VU03VDBGQlJUczdRVUZGTVVRc1ZVRkJTU3hQUVVGUExFTkJRVU1zU1VGQlNTeEZRVUZGTzBGQlEy
aENMRmxCUVVrc1IwRkJSeXhQUVhaQ01rSXNWMEZCVnl4RFFYVkNNVUlzVDBGQlR5eERRVUZETEVs
QlFVa3NRMEZCUXl4RFFVRkRPMDlCUTJ4RE96dEJRVVZFTEdWQlFWTXNZVUZCWVN4RFFVRkRMRXRC
UVVzc1JVRkJSU3hMUVVGTExFVkJRVVVzU1VGQlNTeEZRVUZGTzBGQlEzcERMRmxCUVVrc1NVRkJT
U3hGUVVGRk8wRkJRMUlzWTBGQlNTeERRVUZETEVkQlFVY3NSMEZCUnl4TFFVRkxMRU5CUVVNN1FV
RkRha0lzWTBGQlNTeERRVUZETEV0QlFVc3NSMEZCUnl4TFFVRkxMRU5CUVVNN1FVRkRia0lzWTBG
QlNTeERRVUZETEV0QlFVc3NSMEZCUnl4TFFVRkxMRXRCUVVzc1EwRkJReXhEUVVGRE8wRkJRM3BD
TEdOQlFVa3NRMEZCUXl4SlFVRkpMRWRCUVVjc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF6czdR
VUZGYmtJc1kwRkJTU3hYUVVGWExFVkJRVVU3UVVGRFppeG5Ra0ZCU1N4RFFVRkRMRmRCUVZjc1Iw
RkJSeXhYUVVGWExFZEJRVWNzUzBGQlN5eERRVUZETzFkQlEzaERPMU5CUTBZN08wRkJSVVFzVjBG
QlJ5eEhRVUZITEVkQlFVY3NSMEZCUnl4RlFVRkZMRU5CUVVNc1QwRkJUeXhEUVVGRExFdEJRVXNz
UTBGQlF5eEZRVUZGTzBGQlF6ZENMR05CUVVrc1JVRkJSU3hKUVVGSk8wRkJRMVlzY1VKQlFWY3NS
VUZCUlN4UFFYaERUU3hYUVVGWExFTkJkME5NTEVOQlFVTXNUMEZCVHl4RFFVRkRMRXRCUVVzc1Ew
RkJReXhGUVVGRkxFdEJRVXNzUTBGQlF5eEZRVUZGTEVOQlFVTXNWMEZCVnl4SFFVRkhMRXRCUVVz
c1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6dFRRVU12UlN4RFFVRkRMRU5CUVVNN1QwRkRTanM3
UVVGRlJDeFZRVUZKTEU5QlFVOHNTVUZCU1N4UFFVRlBMRTlCUVU4c1MwRkJTeXhSUVVGUkxFVkJR
VVU3UVVGRE1VTXNXVUZCU1N4UFFUZERNa01zVDBGQlR5eERRVFpETVVNc1QwRkJUeXhEUVVGRExF
VkJRVVU3UVVGRGNFSXNaVUZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhQUVVGUExFTkJRVU1zVFVG
QlRTeEZRVUZGTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3
UVVGRGRrTXNaMEpCUVVrc1EwRkJReXhKUVVGSkxFOUJRVThzUlVGQlJUdEJRVU5vUWl3eVFrRkJZ
U3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4TFFVRkxMRTlCUVU4c1Ew
RkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTTdZVUZETDBNN1YwRkRSanRUUVVO
R0xFMUJRVTA3UVVGRFRDeGpRVUZKTEZGQlFWRXNXVUZCUVN4RFFVRkRPenRCUVVWaUxHVkJRVXNz
U1VGQlNTeEhRVUZITEVsQlFVa3NUMEZCVHl4RlFVRkZPMEZCUTNaQ0xHZENRVUZKTEU5QlFVOHNR
MEZCUXl4alFVRmpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVU3T3pzN1FVRkpMMElzYTBKQlFV
a3NVVUZCVVN4TFFVRkxMRk5CUVZNc1JVRkJSVHRCUVVNeFFpdzJRa0ZCWVN4RFFVRkRMRkZCUVZF
c1JVRkJSU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTTdaVUZEYUVNN1FVRkRSQ3h6
UWtGQlVTeEhRVUZITEVkQlFVY3NRMEZCUXp0QlFVTm1MR1ZCUVVNc1JVRkJSU3hEUVVGRE8yRkJR
MHc3VjBGRFJqdEJRVU5FTEdOQlFVa3NVVUZCVVN4TFFVRkxMRk5CUVZNc1JVRkJSVHRCUVVNeFFp
eDVRa0ZCWVN4RFFVRkRMRkZCUVZFc1JVRkJSU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVs
QlFVa3NRMEZCUXl4RFFVRkRPMWRCUTNSRE8xTkJRMFk3VDBGRFJqczdRVUZGUkN4VlFVRkpMRU5C
UVVNc1MwRkJTeXhEUVVGRExFVkJRVVU3UVVGRFdDeFhRVUZITEVkQlFVY3NUMEZCVHl4RFFVRkRM
RWxCUVVrc1EwRkJReXhEUVVGRE8wOUJRM0pDT3p0QlFVVkVMR0ZCUVU4c1IwRkJSeXhEUVVGRE8w
dEJRMW9zUTBGQlF5eERRVUZETzBkQlEwb2lMQ0ptYVd4bElqb2laV0ZqYUM1cWN5SXNJbk52ZFhK
alpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQjdZWEJ3Wlc1a1EyOXVkR1Y0ZEZCaGRHZ3NJR0pz
YjJOclVHRnlZVzF6TENCamNtVmhkR1ZHY21GdFpTd2dhWE5CY25KaGVTd2dhWE5HZFc1amRHbHZi
bjBnWm5KdmJTQW5MaTR2ZFhScGJITW5PMXh1YVcxd2IzSjBJRVY0WTJWd2RHbHZiaUJtY205dElD
Y3VMaTlsZUdObGNIUnBiMjRuTzF4dVhHNWxlSEJ2Y25RZ1pHVm1ZWFZzZENCbWRXNWpkR2x2Ymlo
cGJuTjBZVzVqWlNrZ2UxeHVJQ0JwYm5OMFlXNWpaUzV5WldkcGMzUmxja2hsYkhCbGNpZ25aV0Zq
YUNjc0lHWjFibU4wYVc5dUtHTnZiblJsZUhRc0lHOXdkR2x2Ym5NcElIdGNiaUFnSUNCcFppQW9J
Vzl3ZEdsdmJuTXBJSHRjYmlBZ0lDQWdJSFJvY205M0lHNWxkeUJGZUdObGNIUnBiMjRvSjAxMWMz
UWdjR0Z6Y3lCcGRHVnlZWFJ2Y2lCMGJ5QWpaV0ZqYUNjcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUd4
bGRDQm1iaUE5SUc5d2RHbHZibk11Wm00c1hHNGdJQ0FnSUNBZ0lHbHVkbVZ5YzJVZ1BTQnZjSFJw
YjI1ekxtbHVkbVZ5YzJVc1hHNGdJQ0FnSUNBZ0lHa2dQU0F3TEZ4dUlDQWdJQ0FnSUNCeVpYUWdQ
U0FuSnl4Y2JpQWdJQ0FnSUNBZ1pHRjBZU3hjYmlBZ0lDQWdJQ0FnWTI5dWRHVjRkRkJoZEdnN1hH
NWNiaUFnSUNCcFppQW9iM0IwYVc5dWN5NWtZWFJoSUNZbUlHOXdkR2x2Ym5NdWFXUnpLU0I3WEc0
Z0lDQWdJQ0JqYjI1MFpYaDBVR0YwYUNBOUlHRndjR1Z1WkVOdmJuUmxlSFJRWVhSb0tHOXdkR2x2
Ym5NdVpHRjBZUzVqYjI1MFpYaDBVR0YwYUN3Z2IzQjBhVzl1Y3k1cFpITmJNRjBwSUNzZ0p5NG5P
MXh1SUNBZ0lIMWNibHh1SUNBZ0lHbG1JQ2hwYzBaMWJtTjBhVzl1S0dOdmJuUmxlSFFwS1NCN0lH
TnZiblJsZUhRZ1BTQmpiMjUwWlhoMExtTmhiR3dvZEdocGN5azdJSDFjYmx4dUlDQWdJR2xtSUNo
dmNIUnBiMjV6TG1SaGRHRXBJSHRjYmlBZ0lDQWdJR1JoZEdFZ1BTQmpjbVZoZEdWR2NtRnRaU2h2
Y0hScGIyNXpMbVJoZEdFcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdaMWJtTjBhVzl1SUdWNFpXTkpk
R1Z5WVhScGIyNG9abWxsYkdRc0lHbHVaR1Y0TENCc1lYTjBLU0I3WEc0Z0lDQWdJQ0JwWmlBb1pH
RjBZU2tnZTF4dUlDQWdJQ0FnSUNCa1lYUmhMbXRsZVNBOUlHWnBaV3hrTzF4dUlDQWdJQ0FnSUNC
a1lYUmhMbWx1WkdWNElEMGdhVzVrWlhnN1hHNGdJQ0FnSUNBZ0lHUmhkR0V1Wm1seWMzUWdQU0Jw
Ym1SbGVDQTlQVDBnTUR0Y2JpQWdJQ0FnSUNBZ1pHRjBZUzVzWVhOMElEMGdJU0ZzWVhOME8xeHVY
RzRnSUNBZ0lDQWdJR2xtSUNoamIyNTBaWGgwVUdGMGFDa2dlMXh1SUNBZ0lDQWdJQ0FnSUdSaGRH
RXVZMjl1ZEdWNGRGQmhkR2dnUFNCamIyNTBaWGgwVUdGMGFDQXJJR1pwWld4a08xeHVJQ0FnSUNB
Z0lDQjlYRzRnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJSEpsZENBOUlISmxkQ0FySUdadUtHTnZiblJs
ZUhSYlptbGxiR1JkTENCN1hHNGdJQ0FnSUNBZ0lHUmhkR0U2SUdSaGRHRXNYRzRnSUNBZ0lDQWdJ
R0pzYjJOclVHRnlZVzF6T2lCaWJHOWphMUJoY21GdGN5aGJZMjl1ZEdWNGRGdG1hV1ZzWkYwc0lH
WnBaV3hrWFN3Z1cyTnZiblJsZUhSUVlYUm9JQ3NnWm1sbGJHUXNJRzUxYkd4ZEtWeHVJQ0FnSUNB
Z2ZTazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2FXWWdLR052Ym5SbGVIUWdKaVlnZEhsd1pXOW1JR052
Ym5SbGVIUWdQVDA5SUNkdlltcGxZM1FuS1NCN1hHNGdJQ0FnSUNCcFppQW9hWE5CY25KaGVTaGpi
MjUwWlhoMEtTa2dlMXh1SUNBZ0lDQWdJQ0JtYjNJZ0tHeGxkQ0JxSUQwZ1kyOXVkR1Y0ZEM1c1pX
NW5kR2c3SUdrZ1BDQnFPeUJwS3lzcElIdGNiaUFnSUNBZ0lDQWdJQ0JwWmlBb2FTQnBiaUJqYjI1
MFpYaDBLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmxlR1ZqU1hSbGNtRjBhVzl1S0drc0lHa3NJR2tn
UFQwOUlHTnZiblJsZUhRdWJHVnVaM1JvSUMwZ01TazdYRzRnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJ
Q0FnSUNCOVhHNGdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNCc1pYUWdjSEpwYjNKTFpY
azdYRzVjYmlBZ0lDQWdJQ0FnWm05eUlDaHNaWFFnYTJWNUlHbHVJR052Ym5SbGVIUXBJSHRjYmlB
Z0lDQWdJQ0FnSUNCcFppQW9ZMjl1ZEdWNGRDNW9ZWE5QZDI1UWNtOXdaWEowZVNoclpYa3BLU0I3
WEc0Z0lDQWdJQ0FnSUNBZ0lDQXZMeUJYWlNkeVpTQnlkVzV1YVc1bklIUm9aU0JwZEdWeVlYUnBi
MjV6SUc5dVpTQnpkR1Z3SUc5MWRDQnZaaUJ6ZVc1aklITnZJSGRsSUdOaGJpQmtaWFJsWTNSY2Jp
QWdJQ0FnSUNBZ0lDQWdJQzh2SUhSb1pTQnNZWE4wSUdsMFpYSmhkR2x2YmlCM2FYUm9iM1YwSUdo
aGRtVWdkRzhnYzJOaGJpQjBhR1VnYjJKcVpXTjBJSFIzYVdObElHRnVaQ0JqY21WaGRHVmNiaUFn
SUNBZ0lDQWdJQ0FnSUM4dklHRnVJR2wwWlhKdFpXUnBZWFJsSUd0bGVYTWdZWEp5WVhrdVhHNGdJ
Q0FnSUNBZ0lDQWdJQ0JwWmlBb2NISnBiM0pMWlhrZ0lUMDlJSFZ1WkdWbWFXNWxaQ2tnZTF4dUlD
QWdJQ0FnSUNBZ0lDQWdJQ0JsZUdWalNYUmxjbUYwYVc5dUtIQnlhVzl5UzJWNUxDQnBJQzBnTVNr
N1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQndjbWx2Y2t0bGVTQTlJR3Rs
ZVR0Y2JpQWdJQ0FnSUNBZ0lDQWdJR2tyS3p0Y2JpQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJ
SDFjYmlBZ0lDQWdJQ0FnYVdZZ0tIQnlhVzl5UzJWNUlDRTlQU0IxYm1SbFptbHVaV1FwSUh0Y2Jp
QWdJQ0FnSUNBZ0lDQmxlR1ZqU1hSbGNtRjBhVzl1S0hCeWFXOXlTMlY1TENCcElDMGdNU3dnZEhK
MVpTazdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzVjYmlBZ0lDQnBaaUFv
YVNBOVBUMGdNQ2tnZTF4dUlDQWdJQ0FnY21WMElEMGdhVzUyWlhKelpTaDBhR2x6S1R0Y2JpQWdJ
Q0I5WEc1Y2JpQWdJQ0J5WlhSMWNtNGdjbVYwTzF4dUlDQjlLVHRjYm4xY2JpSmRmUT09Cis7Citk
ZWZpbmUoJ2hhbmRsZWJhcnMvaGVscGVycy9oZWxwZXItbWlzc2luZycsWydleHBvcnRzJywgJ21v
ZHVsZScsICcuLi9leGNlcHRpb24nXSwgZnVuY3Rpb24gKGV4cG9ydHMsIG1vZHVsZSwgX2V4Y2Vw
dGlvbikgeworICAndXNlIHN0cmljdCc7CisKKyAgLy8gaXN0YW5idWwgaWdub3JlIG5leHQKKwor
ICBmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9i
ai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9CisKKyAgdmFyIF9FeGNl
cHRpb24gPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9leGNlcHRpb24pOworCisgIG1vZHVsZS5l
eHBvcnRzID0gZnVuY3Rpb24gKGluc3RhbmNlKSB7CisgICAgaW5zdGFuY2UucmVnaXN0ZXJIZWxw
ZXIoJ2hlbHBlck1pc3NpbmcnLCBmdW5jdGlvbiAoKSAvKiBbYXJncywgXW9wdGlvbnMgKi97Cisg
ICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkgeworICAgICAgICAvLyBBIG1pc3Npbmcg
ZmllbGQgaW4gYSB7e2Zvb319IGNvbnN0cnVjdC4KKyAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFNvbWVvbmUgaXMgYWN0dWFsbHkgdHJ5aW5nIHRv
IGNhbGwgc29tZXRoaW5nLCBibG93IHVwLgorICAgICAgICB0aHJvdyBuZXcgX0V4Y2VwdGlvblsn
ZGVmYXVsdCddKCdNaXNzaW5nIGhlbHBlcjogIicgKyBhcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0
aCAtIDFdLm5hbWUgKyAnIicpOworICAgICAgfQorICAgIH0pOworICB9OworfSk7CisvLyMgc291
cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlq
b3pMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMeTR1THk0dUwyeHBZaTlvWVc1a2JHVmlZWEp6TDJo
bGJIQmxjbk12YUdWc2NHVnlMVzFwYzNOcGJtY3Vhbk1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3
YVc1bmN5STZJanM3T3pzN096czdPMjFDUVVWbExGVkJRVk1zVVVGQlVTeEZRVUZGTzBGQlEyaERM
RmxCUVZFc1EwRkJReXhqUVVGakxFTkJRVU1zWlVGQlpTeEZRVUZGTEdsRFFVRm5RenRCUVVOMlJT
eFZRVUZKTEZOQlFWTXNRMEZCUXl4TlFVRk5MRXRCUVVzc1EwRkJReXhGUVVGRk96dEJRVVV4UWl4
bFFVRlBMRk5CUVZNc1EwRkJRenRQUVVOc1FpeE5RVUZOT3p0QlFVVk1MR05CUVUwc01FSkJRV01z
YlVKQlFXMUNMRWRCUVVjc1UwRkJVeXhEUVVGRExGTkJRVk1zUTBGQlF5eE5RVUZOTEVkQlFVY3NR
MEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hIUVVGSExFZEJRVWNzUTBGQlF5eERRVUZETzA5QlEz
WkdPMHRCUTBZc1EwRkJReXhEUVVGRE8wZEJRMG9pTENKbWFXeGxJam9pYUdWc2NHVnlMVzFwYzNO
cGJtY3Vhbk1pTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKcGJYQnZjblFnUlhoalpYQjBhVzl1
SUdaeWIyMGdKeTR1TDJWNFkyVndkR2x2YmljN1hHNWNibVY0Y0c5eWRDQmtaV1poZFd4MElHWjFi
bU4wYVc5dUtHbHVjM1JoYm1ObEtTQjdYRzRnSUdsdWMzUmhibU5sTG5KbFoybHpkR1Z5U0dWc2NH
VnlLQ2RvWld4d1pYSk5hWE56YVc1bkp5d2dablZ1WTNScGIyNG9MeW9nVzJGeVozTXNJRjF2Y0hS
cGIyNXpJQ292S1NCN1hHNGdJQ0FnYVdZZ0tHRnlaM1Z0Wlc1MGN5NXNaVzVuZEdnZ1BUMDlJREVw
SUh0Y2JpQWdJQ0FnSUM4dklFRWdiV2x6YzJsdVp5Qm1hV1ZzWkNCcGJpQmhJSHQ3Wm05dmZYMGdZ
Mjl1YzNSeWRXTjBMbHh1SUNBZ0lDQWdjbVYwZFhKdUlIVnVaR1ZtYVc1bFpEdGNiaUFnSUNCOUlH
VnNjMlVnZTF4dUlDQWdJQ0FnTHk4Z1UyOXRaVzl1WlNCcGN5QmhZM1IxWVd4c2VTQjBjbmxwYm1j
Z2RHOGdZMkZzYkNCemIyMWxkR2hwYm1jc0lHSnNiM2NnZFhBdVhHNGdJQ0FnSUNCMGFISnZkeUJ1
WlhjZ1JYaGpaWEIwYVc5dUtDZE5hWE56YVc1bklHaGxiSEJsY2pvZ1hDSW5JQ3NnWVhKbmRXMWxi
blJ6VzJGeVozVnRaVzUwY3k1c1pXNW5kR2dnTFNBeFhTNXVZVzFsSUNzZ0oxd2lKeWs3WEc0Z0lD
QWdmVnh1SUNCOUtUdGNibjFjYmlKZGZRPT0KKzsKK2RlZmluZSgnaGFuZGxlYmFycy9oZWxwZXJz
L2lmJyxbJ2V4cG9ydHMnLCAnbW9kdWxlJywgJy4uL3V0aWxzJ10sIGZ1bmN0aW9uIChleHBvcnRz
LCBtb2R1bGUsIF91dGlscykgeworICAndXNlIHN0cmljdCc7CisKKyAgbW9kdWxlLmV4cG9ydHMg
PSBmdW5jdGlvbiAoaW5zdGFuY2UpIHsKKyAgICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcignaWYn
LCBmdW5jdGlvbiAoY29uZGl0aW9uYWwsIG9wdGlvbnMpIHsKKyAgICAgIGlmIChfdXRpbHMuaXNG
dW5jdGlvbihjb25kaXRpb25hbCkpIHsKKyAgICAgICAgY29uZGl0aW9uYWwgPSBjb25kaXRpb25h
bC5jYWxsKHRoaXMpOworICAgICAgfQorCisgICAgICAvLyBEZWZhdWx0IGJlaGF2aW9yIGlzIHRv
IHJlbmRlciB0aGUgcG9zaXRpdmUgcGF0aCBpZiB0aGUgdmFsdWUgaXMgdHJ1dGh5IGFuZCBub3Qg
ZW1wdHkuCisgICAgICAvLyBUaGUgYGluY2x1ZGVaZXJvYCBvcHRpb24gbWF5IGJlIHNldCB0byB0
cmVhdCB0aGUgY29uZHRpb25hbCBhcyBwdXJlbHkgbm90IGVtcHR5IGJhc2VkIG9uIHRoZQorICAg
ICAgLy8gYmVoYXZpb3Igb2YgaXNFbXB0eS4gRWZmZWN0aXZlbHkgdGhpcyBkZXRlcm1pbmVzIGlm
IDAgaXMgaGFuZGxlZCBieSB0aGUgcG9zaXRpdmUgcGF0aCBvciBuZWdhdGl2ZS4KKyAgICAgIGlm
ICghb3B0aW9ucy5oYXNoLmluY2x1ZGVaZXJvICYmICFjb25kaXRpb25hbCB8fCBfdXRpbHMuaXNF
bXB0eShjb25kaXRpb25hbCkpIHsKKyAgICAgICAgcmV0dXJuIG9wdGlvbnMuaW52ZXJzZSh0aGlz
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiBvcHRpb25zLmZuKHRoaXMpOworICAg
ICAgfQorICAgIH0pOworCisgICAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ3VubGVzcycsIGZ1
bmN0aW9uIChjb25kaXRpb25hbCwgb3B0aW9ucykgeworICAgICAgcmV0dXJuIGluc3RhbmNlLmhl
bHBlcnNbJ2lmJ10uY2FsbCh0aGlzLCBjb25kaXRpb25hbCwgeyBmbjogb3B0aW9ucy5pbnZlcnNl
LCBpbnZlcnNlOiBvcHRpb25zLmZuLCBoYXNoOiBvcHRpb25zLmhhc2ggfSk7CisgICAgfSk7Cisg
IH07Cit9KTsKKy8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNl
NjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUx5NHVMeTR1TDJ4cFlp
OW9ZVzVrYkdWaVlYSnpMMmhsYkhCbGNuTXZhV1l1YW5NaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhC
d2FXNW5jeUk2SWpzN08yMUNRVVZsTEZWQlFWTXNVVUZCVVN4RlFVRkZPMEZCUTJoRExGbEJRVkVz
UTBGQlF5eGpRVUZqTEVOQlFVTXNTVUZCU1N4RlFVRkZMRlZCUVZNc1YwRkJWeXhGUVVGRkxFOUJR
VThzUlVGQlJUdEJRVU16UkN4VlFVRkpMRTlCU2xNc1ZVRkJWU3hEUVVsU0xGZEJRVmNzUTBGQlF5
eEZRVUZGTzBGQlFVVXNiVUpCUVZjc1IwRkJSeXhYUVVGWExFTkJRVU1zU1VGQlNTeERRVUZETEVs
QlFVa3NRMEZCUXl4RFFVRkRPMDlCUVVVN096czdPMEZCUzNSRkxGVkJRVWtzUVVGQlF5eERRVUZE
TEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1YwRkJWeXhKUVVGSkxFTkJRVU1zVjBGQlZ5eEpR
VUZMTEU5QlZDOURMRTlCUVU4c1EwRlRaMFFzVjBGQlZ5eERRVUZETEVWQlFVVTdRVUZEZGtVc1pV
RkJUeXhQUVVGUExFTkJRVU1zVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMDlCUXps
Q0xFMUJRVTA3UVVGRFRDeGxRVUZQTEU5QlFVOHNRMEZCUXl4RlFVRkZMRU5CUVVNc1NVRkJTU3hE
UVVGRExFTkJRVU03VDBGRGVrSTdTMEZEUml4RFFVRkRMRU5CUVVNN08wRkJSVWdzV1VGQlVTeERR
VUZETEdOQlFXTXNRMEZCUXl4UlFVRlJMRVZCUVVVc1ZVRkJVeXhYUVVGWExFVkJRVVVzVDBGQlR5
eEZRVUZGTzBGQlF5OUVMR0ZCUVU4c1VVRkJVU3hEUVVGRExFOUJRVThzUTBGQlF5eEpRVUZKTEVO
QlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hGUVVGRkxGZEJRVmNzUlVGQlJTeEZRVUZE
TEVWQlFVVXNSVUZCUlN4UFFVRlBMRU5CUVVNc1QwRkJUeXhGUVVGRkxFOUJRVThzUlVGQlJTeFBR
VUZQTEVOQlFVTXNSVUZCUlN4RlFVRkZMRWxCUVVrc1JVRkJSU3hQUVVGUExFTkJRVU1zU1VGQlNT
eEZRVUZETEVOQlFVTXNRMEZCUXp0TFFVTjJTQ3hEUVVGRExFTkJRVU03UjBGRFNpSXNJbVpwYkdV
aU9pSnBaaTVxY3lJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENCN2FYTkZiWEIw
ZVN3Z2FYTkdkVzVqZEdsdmJuMGdabkp2YlNBbkxpNHZkWFJwYkhNbk8xeHVYRzVsZUhCdmNuUWda
R1ZtWVhWc2RDQm1kVzVqZEdsdmJpaHBibk4wWVc1alpTa2dlMXh1SUNCcGJuTjBZVzVqWlM1eVpX
ZHBjM1JsY2tobGJIQmxjaWduYVdZbkxDQm1kVzVqZEdsdmJpaGpiMjVrYVhScGIyNWhiQ3dnYjNC
MGFXOXVjeWtnZTF4dUlDQWdJR2xtSUNocGMwWjFibU4wYVc5dUtHTnZibVJwZEdsdmJtRnNLU2tn
ZXlCamIyNWthWFJwYjI1aGJDQTlJR052Ym1ScGRHbHZibUZzTG1OaGJHd29kR2hwY3lrN0lIMWNi
bHh1SUNBZ0lDOHZJRVJsWm1GMWJIUWdZbVZvWVhacGIzSWdhWE1nZEc4Z2NtVnVaR1Z5SUhSb1pT
QndiM05wZEdsMlpTQndZWFJvSUdsbUlIUm9aU0IyWVd4MVpTQnBjeUIwY25WMGFIa2dZVzVrSUc1
dmRDQmxiWEIwZVM1Y2JpQWdJQ0F2THlCVWFHVWdZR2x1WTJ4MVpHVmFaWEp2WUNCdmNIUnBiMjRn
YldGNUlHSmxJSE5sZENCMGJ5QjBjbVZoZENCMGFHVWdZMjl1WkhScGIyNWhiQ0JoY3lCd2RYSmxi
SGtnYm05MElHVnRjSFI1SUdKaGMyVmtJRzl1SUhSb1pWeHVJQ0FnSUM4dklHSmxhR0YyYVc5eUlH
OW1JR2x6Ulcxd2RIa3VJRVZtWm1WamRHbDJaV3g1SUhSb2FYTWdaR1YwWlhKdGFXNWxjeUJwWmlB
d0lHbHpJR2hoYm1Sc1pXUWdZbmtnZEdobElIQnZjMmwwYVhabElIQmhkR2dnYjNJZ2JtVm5ZWFJw
ZG1VdVhHNGdJQ0FnYVdZZ0tDZ2hiM0IwYVc5dWN5NW9ZWE5vTG1sdVkyeDFaR1ZhWlhKdklDWW1J
Q0ZqYjI1a2FYUnBiMjVoYkNrZ2ZId2dhWE5GYlhCMGVTaGpiMjVrYVhScGIyNWhiQ2twSUh0Y2Jp
QWdJQ0FnSUhKbGRIVnliaUJ2Y0hScGIyNXpMbWx1ZG1WeWMyVW9kR2hwY3lrN1hHNGdJQ0FnZlNC
bGJITmxJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQnZjSFJwYjI1ekxtWnVLSFJvYVhNcE8xeHVJQ0Fn
SUgxY2JpQWdmU2s3WEc1Y2JpQWdhVzV6ZEdGdVkyVXVjbVZuYVhOMFpYSklaV3h3WlhJb0ozVnVi
R1Z6Y3ljc0lHWjFibU4wYVc5dUtHTnZibVJwZEdsdmJtRnNMQ0J2Y0hScGIyNXpLU0I3WEc0Z0lD
QWdjbVYwZFhKdUlHbHVjM1JoYm1ObExtaGxiSEJsY25OYkoybG1KMTB1WTJGc2JDaDBhR2x6TENC
amIyNWthWFJwYjI1aGJDd2dlMlp1T2lCdmNIUnBiMjV6TG1sdWRtVnljMlVzSUdsdWRtVnljMlU2
SUc5d2RHbHZibk11Wm00c0lHaGhjMmc2SUc5d2RHbHZibk11YUdGemFIMHBPMXh1SUNCOUtUdGNi
bjFjYmlKZGZRPT0KKzsKK2RlZmluZSgnaGFuZGxlYmFycy9oZWxwZXJzL2xvZycsWydleHBvcnRz
JywgJ21vZHVsZSddLCBmdW5jdGlvbiAoZXhwb3J0cywgbW9kdWxlKSB7CisgICd1c2Ugc3RyaWN0
JzsKKworICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbnN0YW5jZSkgeworICAgIGluc3Rh
bmNlLnJlZ2lzdGVySGVscGVyKCdsb2cnLCBmdW5jdGlvbiAoKSAvKiBtZXNzYWdlLCBvcHRpb25z
ICoveworICAgICAgdmFyIGFyZ3MgPSBbdW5kZWZpbmVkXSwKKyAgICAgICAgICBvcHRpb25zID0g
YXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGggLSAxXTsKKyAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgYXJndW1lbnRzLmxlbmd0aCAtIDE7IGkrKykgeworICAgICAgICBhcmdzLnB1c2goYXJndW1l
bnRzW2ldKTsKKyAgICAgIH0KKworICAgICAgdmFyIGxldmVsID0gMTsKKyAgICAgIGlmIChvcHRp
b25zLmhhc2gubGV2ZWwgIT0gbnVsbCkgeworICAgICAgICBsZXZlbCA9IG9wdGlvbnMuaGFzaC5s
ZXZlbDsKKyAgICAgIH0gZWxzZSBpZiAob3B0aW9ucy5kYXRhICYmIG9wdGlvbnMuZGF0YS5sZXZl
bCAhPSBudWxsKSB7CisgICAgICAgIGxldmVsID0gb3B0aW9ucy5kYXRhLmxldmVsOworICAgICAg
fQorICAgICAgYXJnc1swXSA9IGxldmVsOworCisgICAgICBpbnN0YW5jZS5sb2cuYXBwbHkoaW5z
dGFuY2UsIGFyZ3MpOworICAgIH0pOworICB9OworfSk7CisvLyMgc291cmNlTWFwcGluZ1VSTD1k
YXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJ
anBiSWk0dUx5NHVMeTR1THk0dUwyeHBZaTlvWVc1a2JHVmlZWEp6TDJobGJIQmxjbk12Ykc5bkxt
cHpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSTdPenR0UWtGQlpTeFZRVUZUTEZG
QlFWRXNSVUZCUlR0QlFVTm9ReXhaUVVGUkxFTkJRVU1zWTBGQll5eERRVUZETEV0QlFVc3NSVUZC
UlN4clEwRkJhVU03UVVGRE9VUXNWVUZCU1N4SlFVRkpMRWRCUVVjc1EwRkJReXhUUVVGVExFTkJR
VU03VlVGRGJFSXNUMEZCVHl4SFFVRkhMRk5CUVZNc1EwRkJReXhUUVVGVExFTkJRVU1zVFVGQlRT
eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUXpsRExGZEJRVXNzU1VGQlNTeERRVUZETEVk
QlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhUUVVGVExFTkJRVU1zVFVGQlRTeEhRVUZI
TEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRCUVVNM1F5eFpRVUZKTEVOQlFVTXNT
VUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzA5QlEz
cENPenRCUVVWRUxGVkJRVWtzUzBGQlN5eEhRVUZITEVOQlFVTXNRMEZCUXp0QlFVTmtMRlZCUVVr
c1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVsQlFVa3NTVUZCU1N4RlFVRkZPMEZC
UXpsQ0xHRkJRVXNzUjBGQlJ5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJR
enRQUVVNMVFpeE5RVUZOTEVsQlFVa3NUMEZCVHl4RFFVRkRMRWxCUVVrc1NVRkJTU3hQUVVGUExF
TkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NTVUZCU1N4SlFVRkpMRVZCUVVVN1FVRkRja1FzWVVG
QlN5eEhRVUZITEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRE8wOUJRelZD
TzBGQlEwUXNWVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFdEJRVXNzUTBGQlF6czdR
VUZGYUVJc1kwRkJVU3hEUVVGRExFZEJRVWNzVFVGQlFTeERRVUZhTEZGQlFWRXNSVUZCVXl4SlFV
RkpMRU5CUVVNc1EwRkJRenRMUVVONFFpeERRVUZETEVOQlFVTTdSMEZEU2lJc0ltWnBiR1VpT2lK
c2IyY3Vhbk1pTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKbGVIQnZjblFnWkdWbVlYVnNkQ0Jt
ZFc1amRHbHZiaWhwYm5OMFlXNWpaU2tnZTF4dUlDQnBibk4wWVc1alpTNXlaV2RwYzNSbGNraGxi
SEJsY2lnbmJHOW5KeXdnWm5WdVkzUnBiMjRvTHlvZ2JXVnpjMkZuWlN3Z2IzQjBhVzl1Y3lBcUx5
a2dlMXh1SUNBZ0lHeGxkQ0JoY21keklEMGdXM1Z1WkdWbWFXNWxaRjBzWEc0Z0lDQWdJQ0FnSUc5
d2RHbHZibk1nUFNCaGNtZDFiV1Z1ZEhOYllYSm5kVzFsYm5SekxteGxibWQwYUNBdElERmRPMXh1
SUNBZ0lHWnZjaUFvYkdWMElHa2dQU0F3T3lCcElEd2dZWEpuZFcxbGJuUnpMbXhsYm1kMGFDQXRJ
REU3SUdrckt5a2dlMXh1SUNBZ0lDQWdZWEpuY3k1d2RYTm9LR0Z5WjNWdFpXNTBjMXRwWFNrN1hH
NGdJQ0FnZlZ4dVhHNGdJQ0FnYkdWMElHeGxkbVZzSUQwZ01UdGNiaUFnSUNCcFppQW9iM0IwYVc5
dWN5NW9ZWE5vTG14bGRtVnNJQ0U5SUc1MWJHd3BJSHRjYmlBZ0lDQWdJR3hsZG1Wc0lEMGdiM0Iw
YVc5dWN5NW9ZWE5vTG14bGRtVnNPMXh1SUNBZ0lIMGdaV3h6WlNCcFppQW9iM0IwYVc5dWN5NWtZ
WFJoSUNZbUlHOXdkR2x2Ym5NdVpHRjBZUzVzWlhabGJDQWhQU0J1ZFd4c0tTQjdYRzRnSUNBZ0lD
QnNaWFpsYkNBOUlHOXdkR2x2Ym5NdVpHRjBZUzVzWlhabGJEdGNiaUFnSUNCOVhHNGdJQ0FnWVhK
bmMxc3dYU0E5SUd4bGRtVnNPMXh1WEc0Z0lDQWdhVzV6ZEdGdVkyVXViRzluS0M0dUxpQmhjbWR6
S1R0Y2JpQWdmU2s3WEc1OVhHNGlYWDA9Cis7CitkZWZpbmUoJ2hhbmRsZWJhcnMvaGVscGVycy9s
b29rdXAnLFsnZXhwb3J0cycsICdtb2R1bGUnXSwgZnVuY3Rpb24gKGV4cG9ydHMsIG1vZHVsZSkg
eworICAndXNlIHN0cmljdCc7CisKKyAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaW5zdGFu
Y2UpIHsKKyAgICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcignbG9va3VwJywgZnVuY3Rpb24gKG9i
aiwgZmllbGQpIHsKKyAgICAgIHJldHVybiBvYmogJiYgb2JqW2ZpZWxkXTsKKyAgICB9KTsKKyAg
fTsKK30pOworLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2
NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYklpNHVMeTR1THk0dUx5NHVMMnhwWWk5
b1lXNWtiR1ZpWVhKekwyaGxiSEJsY25NdmJHOXZhM1Z3TG1weklsMHNJbTVoYldWeklqcGJYU3dp
YldGd2NHbHVaM01pT2lJN096dHRRa0ZCWlN4VlFVRlRMRkZCUVZFc1JVRkJSVHRCUVVOb1F5eFpR
VUZSTEVOQlFVTXNZMEZCWXl4RFFVRkRMRkZCUVZFc1JVRkJSU3hWUVVGVExFZEJRVWNzUlVGQlJT
eExRVUZMTEVWQlFVVTdRVUZEY2tRc1lVRkJUeXhIUVVGSExFbEJRVWtzUjBGQlJ5eERRVUZETEV0
QlFVc3NRMEZCUXl4RFFVRkRPMHRCUXpGQ0xFTkJRVU1zUTBGQlF6dEhRVU5LSWl3aVptbHNaU0k2
SW14dmIydDFjQzVxY3lJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltVjRjRzl5ZENCa1pXWmhk
V3gwSUdaMWJtTjBhVzl1S0dsdWMzUmhibU5sS1NCN1hHNGdJR2x1YzNSaGJtTmxMbkpsWjJsemRH
VnlTR1ZzY0dWeUtDZHNiMjlyZFhBbkxDQm1kVzVqZEdsdmJpaHZZbW9zSUdacFpXeGtLU0I3WEc0
Z0lDQWdjbVYwZFhKdUlHOWlhaUFtSmlCdlltcGJabWxsYkdSZE8xeHVJQ0I5S1R0Y2JuMWNiaUpk
ZlE9PQorOworZGVmaW5lKCdoYW5kbGViYXJzL2hlbHBlcnMvd2l0aCcsWydleHBvcnRzJywgJ21v
ZHVsZScsICcuLi91dGlscyddLCBmdW5jdGlvbiAoZXhwb3J0cywgbW9kdWxlLCBfdXRpbHMpIHsK
KyAgJ3VzZSBzdHJpY3QnOworCisgIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGluc3RhbmNl
KSB7CisgICAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ3dpdGgnLCBmdW5jdGlvbiAoY29udGV4
dCwgb3B0aW9ucykgeworICAgICAgaWYgKF91dGlscy5pc0Z1bmN0aW9uKGNvbnRleHQpKSB7Cisg
ICAgICAgIGNvbnRleHQgPSBjb250ZXh0LmNhbGwodGhpcyk7CisgICAgICB9CisKKyAgICAgIHZh
ciBmbiA9IG9wdGlvbnMuZm47CisKKyAgICAgIGlmICghX3V0aWxzLmlzRW1wdHkoY29udGV4dCkp
IHsKKyAgICAgICAgdmFyIGRhdGEgPSBvcHRpb25zLmRhdGE7CisgICAgICAgIGlmIChvcHRpb25z
LmRhdGEgJiYgb3B0aW9ucy5pZHMpIHsKKyAgICAgICAgICBkYXRhID0gX3V0aWxzLmNyZWF0ZUZy
YW1lKG9wdGlvbnMuZGF0YSk7CisgICAgICAgICAgZGF0YS5jb250ZXh0UGF0aCA9IF91dGlscy5h
cHBlbmRDb250ZXh0UGF0aChvcHRpb25zLmRhdGEuY29udGV4dFBhdGgsIG9wdGlvbnMuaWRzWzBd
KTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBmbihjb250ZXh0LCB7CisgICAgICAgICAg
ZGF0YTogZGF0YSwKKyAgICAgICAgICBibG9ja1BhcmFtczogX3V0aWxzLmJsb2NrUGFyYW1zKFtj
b250ZXh0XSwgW2RhdGEgJiYgZGF0YS5jb250ZXh0UGF0aF0pCisgICAgICAgIH0pOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIG9wdGlvbnMuaW52ZXJzZSh0aGlzKTsKKyAgICAgIH0K
KyAgICB9KTsKKyAgfTsKK30pOworLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlv
bi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYklpNHVMeTR1THk0
dUx5NHVMMnhwWWk5b1lXNWtiR1ZpWVhKekwyaGxiSEJsY25NdmQybDBhQzVxY3lKZExDSnVZVzFs
Y3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pT3pzN2JVSkJSV1VzVlVGQlV5eFJRVUZSTEVWQlFVVTdR
VUZEYUVNc1dVRkJVU3hEUVVGRExHTkJRV01zUTBGQlF5eE5RVUZOTEVWQlFVVXNWVUZCVXl4UFFV
RlBMRVZCUVVVc1QwRkJUeXhGUVVGRk8wRkJRM3BFTEZWQlFVa3NUMEZLYzBRc1ZVRkJWU3hEUVVs
eVJDeFBRVUZQTEVOQlFVTXNSVUZCUlR0QlFVRkZMR1ZCUVU4c1IwRkJSeXhQUVVGUExFTkJRVU1z
U1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMDlCUVVVN08wRkJSVEZFTEZWQlFVa3NS
VUZCUlN4SFFVRkhMRTlCUVU4c1EwRkJReXhGUVVGRkxFTkJRVU03TzBGQlJYQkNMRlZCUVVrc1Ew
RkJReXhQUVZJMFF5eFBRVUZQTEVOQlVUTkRMRTlCUVU4c1EwRkJReXhGUVVGRk8wRkJRM0pDTEZs
QlFVa3NTVUZCU1N4SFFVRkhMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU03UVVGRGVFSXNXVUZC
U1N4UFFVRlBMRU5CUVVNc1NVRkJTU3hKUVVGSkxFOUJRVThzUTBGQlF5eEhRVUZITEVWQlFVVTdR
VUZETDBJc1kwRkJTU3hIUVVGSExFOUJXSGxDTEZkQlFWY3NRMEZYZUVJc1QwRkJUeXhEUVVGRExF
bEJRVWtzUTBGQlF5eERRVUZETzBGQlEycERMR05CUVVrc1EwRkJReXhYUVVGWExFZEJRVWNzVDBG
YWJrSXNhVUpCUVdsQ0xFTkJXVzlDTEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1YwRkJWeXhG
UVVGRkxFOUJRVThzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJR
enRUUVVOb1JqczdRVUZGUkN4bFFVRlBMRVZCUVVVc1EwRkJReXhQUVVGUExFVkJRVVU3UVVGRGFr
SXNZMEZCU1N4RlFVRkZMRWxCUVVrN1FVRkRWaXh4UWtGQlZ5eEZRVUZGTEU5QmFrSk5MRmRCUVZj
c1EwRnBRa3dzUTBGQlF5eFBRVUZQTEVOQlFVTXNSVUZCUlN4RFFVRkRMRWxCUVVrc1NVRkJTU3hK
UVVGSkxFTkJRVU1zVjBGQlZ5eERRVUZETEVOQlFVTTdVMEZEYUVVc1EwRkJReXhEUVVGRE8wOUJR
MG9zVFVGQlRUdEJRVU5NTEdWQlFVOHNUMEZCVHl4RFFVRkRMRTlCUVU4c1EwRkJReXhKUVVGSkxF
TkJRVU1zUTBGQlF6dFBRVU01UWp0TFFVTkdMRU5CUVVNc1EwRkJRenRIUVVOS0lpd2labWxzWlNJ
NkluZHBkR2d1YW5NaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SnBiWEJ2Y25RZ2UyRndjR1Z1
WkVOdmJuUmxlSFJRWVhSb0xDQmliRzlqYTFCaGNtRnRjeXdnWTNKbFlYUmxSbkpoYldVc0lHbHpS
VzF3ZEhrc0lHbHpSblZ1WTNScGIyNTlJR1p5YjIwZ0p5NHVMM1YwYVd4ekp6dGNibHh1Wlhod2Iz
SjBJR1JsWm1GMWJIUWdablZ1WTNScGIyNG9hVzV6ZEdGdVkyVXBJSHRjYmlBZ2FXNXpkR0Z1WTJV
dWNtVm5hWE4wWlhKSVpXeHdaWElvSjNkcGRHZ25MQ0JtZFc1amRHbHZiaWhqYjI1MFpYaDBMQ0J2
Y0hScGIyNXpLU0I3WEc0Z0lDQWdhV1lnS0dselJuVnVZM1JwYjI0b1kyOXVkR1Y0ZENrcElIc2dZ
Mjl1ZEdWNGRDQTlJR052Ym5SbGVIUXVZMkZzYkNoMGFHbHpLVHNnZlZ4dVhHNGdJQ0FnYkdWMElH
WnVJRDBnYjNCMGFXOXVjeTVtYmp0Y2JseHVJQ0FnSUdsbUlDZ2hhWE5GYlhCMGVTaGpiMjUwWlho
MEtTa2dlMXh1SUNBZ0lDQWdiR1YwSUdSaGRHRWdQU0J2Y0hScGIyNXpMbVJoZEdFN1hHNGdJQ0Fn
SUNCcFppQW9iM0IwYVc5dWN5NWtZWFJoSUNZbUlHOXdkR2x2Ym5NdWFXUnpLU0I3WEc0Z0lDQWdJ
Q0FnSUdSaGRHRWdQU0JqY21WaGRHVkdjbUZ0WlNodmNIUnBiMjV6TG1SaGRHRXBPMXh1SUNBZ0lD
QWdJQ0JrWVhSaExtTnZiblJsZUhSUVlYUm9JRDBnWVhCd1pXNWtRMjl1ZEdWNGRGQmhkR2dvYjNC
MGFXOXVjeTVrWVhSaExtTnZiblJsZUhSUVlYUm9MQ0J2Y0hScGIyNXpMbWxrYzFzd1hTazdYRzRn
SUNBZ0lDQjlYRzVjYmlBZ0lDQWdJSEpsZEhWeWJpQm1iaWhqYjI1MFpYaDBMQ0I3WEc0Z0lDQWdJ
Q0FnSUdSaGRHRTZJR1JoZEdFc1hHNGdJQ0FnSUNBZ0lHSnNiMk5yVUdGeVlXMXpPaUJpYkc5amEx
QmhjbUZ0Y3loYlkyOXVkR1Y0ZEYwc0lGdGtZWFJoSUNZbUlHUmhkR0V1WTI5dWRHVjRkRkJoZEdo
ZEtWeHVJQ0FnSUNBZ2ZTazdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJ2
Y0hScGIyNXpMbWx1ZG1WeWMyVW9kR2hwY3lrN1hHNGdJQ0FnZlZ4dUlDQjlLVHRjYm4xY2JpSmRm
UT09Cis7CitkZWZpbmUoJ2hhbmRsZWJhcnMvaGVscGVycycsWydleHBvcnRzJywgJy4vaGVscGVy
cy9ibG9jay1oZWxwZXItbWlzc2luZycsICcuL2hlbHBlcnMvZWFjaCcsICcuL2hlbHBlcnMvaGVs
cGVyLW1pc3NpbmcnLCAnLi9oZWxwZXJzL2lmJywgJy4vaGVscGVycy9sb2cnLCAnLi9oZWxwZXJz
L2xvb2t1cCcsICcuL2hlbHBlcnMvd2l0aCddLCBmdW5jdGlvbiAoZXhwb3J0cywgX2hlbHBlcnNC
bG9ja0hlbHBlck1pc3NpbmcsIF9oZWxwZXJzRWFjaCwgX2hlbHBlcnNIZWxwZXJNaXNzaW5nLCBf
aGVscGVyc0lmLCBfaGVscGVyc0xvZywgX2hlbHBlcnNMb29rdXAsIF9oZWxwZXJzV2l0aCkgewor
ICAndXNlIHN0cmljdCc7CisKKyAgZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKKyAgZXhwb3J0
cy5yZWdpc3RlckRlZmF1bHRIZWxwZXJzID0gcmVnaXN0ZXJEZWZhdWx0SGVscGVyczsKKyAgLy8g
aXN0YW5idWwgaWdub3JlIG5leHQKKworICBmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0
KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6
IG9iaiB9OyB9CisKKyAgdmFyIF9yZWdpc3RlckJsb2NrSGVscGVyTWlzc2luZyA9IF9pbnRlcm9w
UmVxdWlyZURlZmF1bHQoX2hlbHBlcnNCbG9ja0hlbHBlck1pc3NpbmcpOworCisgIHZhciBfcmVn
aXN0ZXJFYWNoID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaGVscGVyc0VhY2gpOworCisgIHZh
ciBfcmVnaXN0ZXJIZWxwZXJNaXNzaW5nID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaGVscGVy
c0hlbHBlck1pc3NpbmcpOworCisgIHZhciBfcmVnaXN0ZXJJZiA9IF9pbnRlcm9wUmVxdWlyZURl
ZmF1bHQoX2hlbHBlcnNJZik7CisKKyAgdmFyIF9yZWdpc3RlckxvZyA9IF9pbnRlcm9wUmVxdWly
ZURlZmF1bHQoX2hlbHBlcnNMb2cpOworCisgIHZhciBfcmVnaXN0ZXJMb29rdXAgPSBfaW50ZXJv
cFJlcXVpcmVEZWZhdWx0KF9oZWxwZXJzTG9va3VwKTsKKworICB2YXIgX3JlZ2lzdGVyV2l0aCA9
IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2hlbHBlcnNXaXRoKTsKKworICBmdW5jdGlvbiByZWdp
c3RlckRlZmF1bHRIZWxwZXJzKGluc3RhbmNlKSB7CisgICAgX3JlZ2lzdGVyQmxvY2tIZWxwZXJN
aXNzaW5nWydkZWZhdWx0J10oaW5zdGFuY2UpOworICAgIF9yZWdpc3RlckVhY2hbJ2RlZmF1bHQn
XShpbnN0YW5jZSk7CisgICAgX3JlZ2lzdGVySGVscGVyTWlzc2luZ1snZGVmYXVsdCddKGluc3Rh
bmNlKTsKKyAgICBfcmVnaXN0ZXJJZlsnZGVmYXVsdCddKGluc3RhbmNlKTsKKyAgICBfcmVnaXN0
ZXJMb2dbJ2RlZmF1bHQnXShpbnN0YW5jZSk7CisgICAgX3JlZ2lzdGVyTG9va3VwWydkZWZhdWx0
J10oaW5zdGFuY2UpOworICAgIF9yZWdpc3RlcldpdGhbJ2RlZmF1bHQnXShpbnN0YW5jZSk7Cisg
IH0KK30pOworLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2
NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYklpNHVMeTR1THk0dUwyeHBZaTlvWVc1
a2JHVmlZWEp6TDJobGJIQmxjbk11YW5NaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2
SWpzN096czdPenM3T3pzN096czdPenM3T3pzN096czdRVUZSVHl4WFFVRlRMSE5DUVVGelFpeERR
VUZETEZGQlFWRXNSVUZCUlR0QlFVTXZReXd5UTBGQk1rSXNVVUZCVVN4RFFVRkRMRU5CUVVNN1FV
RkRja01zTmtKQlFXRXNVVUZCVVN4RFFVRkRMRU5CUVVNN1FVRkRka0lzYzBOQlFYTkNMRkZCUVZF
c1EwRkJReXhEUVVGRE8wRkJRMmhETERKQ1FVRlhMRkZCUVZFc1EwRkJReXhEUVVGRE8wRkJRM0pD
TERSQ1FVRlpMRkZCUVZFc1EwRkJReXhEUVVGRE8wRkJRM1JDTEN0Q1FVRmxMRkZCUVZFc1EwRkJR
eXhEUVVGRE8wRkJRM3BDTERaQ1FVRmhMRkZCUVZFc1EwRkJReXhEUVVGRE8wZEJRM2hDSWl3aVpt
bHNaU0k2SW1obGJIQmxjbk11YW5NaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SnBiWEJ2Y25R
Z2NtVm5hWE4wWlhKQ2JHOWphMGhsYkhCbGNrMXBjM05wYm1jZ1puSnZiU0FuTGk5b1pXeHdaWEp6
TDJKc2IyTnJMV2hsYkhCbGNpMXRhWE56YVc1bkp6dGNibWx0Y0c5eWRDQnlaV2RwYzNSbGNrVmhZ
MmdnWm5KdmJTQW5MaTlvWld4d1pYSnpMMlZoWTJnbk8xeHVhVzF3YjNKMElISmxaMmx6ZEdWeVNH
VnNjR1Z5VFdsemMybHVaeUJtY205dElDY3VMMmhsYkhCbGNuTXZhR1ZzY0dWeUxXMXBjM05wYm1j
bk8xeHVhVzF3YjNKMElISmxaMmx6ZEdWeVNXWWdabkp2YlNBbkxpOW9aV3h3WlhKekwybG1KenRj
Ym1sdGNHOXlkQ0J5WldkcGMzUmxja3h2WnlCbWNtOXRJQ2N1TDJobGJIQmxjbk12Ykc5bkp6dGNi
bWx0Y0c5eWRDQnlaV2RwYzNSbGNreHZiMnQxY0NCbWNtOXRJQ2N1TDJobGJIQmxjbk12Ykc5dmEz
VndKenRjYm1sdGNHOXlkQ0J5WldkcGMzUmxjbGRwZEdnZ1puSnZiU0FuTGk5b1pXeHdaWEp6TDNk
cGRHZ25PMXh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnY21WbmFYTjBaWEpFWldaaGRXeDBTR1Zz
Y0dWeWN5aHBibk4wWVc1alpTa2dlMXh1SUNCeVpXZHBjM1JsY2tKc2IyTnJTR1ZzY0dWeVRXbHpj
Mmx1WnlocGJuTjBZVzVqWlNrN1hHNGdJSEpsWjJsemRHVnlSV0ZqYUNocGJuTjBZVzVqWlNrN1hH
NGdJSEpsWjJsemRHVnlTR1ZzY0dWeVRXbHpjMmx1WnlocGJuTjBZVzVqWlNrN1hHNGdJSEpsWjJs
emRHVnlTV1lvYVc1emRHRnVZMlVwTzF4dUlDQnlaV2RwYzNSbGNreHZaeWhwYm5OMFlXNWpaU2s3
WEc0Z0lISmxaMmx6ZEdWeVRHOXZhM1Z3S0dsdWMzUmhibU5sS1R0Y2JpQWdjbVZuYVhOMFpYSlhh
WFJvS0dsdWMzUmhibU5sS1R0Y2JuMWNiaUpkZlE9PQorOworZGVmaW5lKCdoYW5kbGViYXJzL2Rl
Y29yYXRvcnMvaW5saW5lJyxbJ2V4cG9ydHMnLCAnbW9kdWxlJywgJy4uL3V0aWxzJ10sIGZ1bmN0
aW9uIChleHBvcnRzLCBtb2R1bGUsIF91dGlscykgeworICAndXNlIHN0cmljdCc7CisKKyAgbW9k
dWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaW5zdGFuY2UpIHsKKyAgICBpbnN0YW5jZS5yZWdpc3Rl
ckRlY29yYXRvcignaW5saW5lJywgZnVuY3Rpb24gKGZuLCBwcm9wcywgY29udGFpbmVyLCBvcHRp
b25zKSB7CisgICAgICB2YXIgcmV0ID0gZm47CisgICAgICBpZiAoIXByb3BzLnBhcnRpYWxzKSB7
CisgICAgICAgIHByb3BzLnBhcnRpYWxzID0ge307CisgICAgICAgIHJldCA9IGZ1bmN0aW9uIChj
b250ZXh0LCBvcHRpb25zKSB7CisgICAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IHBhcnRpYWxzIHN0
YWNrIGZyYW1lIHByaW9yIHRvIGV4ZWMuCisgICAgICAgICAgdmFyIG9yaWdpbmFsID0gY29udGFp
bmVyLnBhcnRpYWxzOworICAgICAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyA9IF91dGlscy5leHRl
bmQoe30sIG9yaWdpbmFsLCBwcm9wcy5wYXJ0aWFscyk7CisgICAgICAgICAgdmFyIHJldCA9IGZu
KGNvbnRleHQsIG9wdGlvbnMpOworICAgICAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyA9IG9yaWdp
bmFsOworICAgICAgICAgIHJldHVybiByZXQ7CisgICAgICAgIH07CisgICAgICB9CisKKyAgICAg
IHByb3BzLnBhcnRpYWxzW29wdGlvbnMuYXJnc1swXV0gPSBvcHRpb25zLmZuOworCisgICAgICBy
ZXR1cm4gcmV0OworICAgIH0pOworICB9OworfSk7CisvLyMgc291cmNlTWFwcGluZ1VSTD1kYXRh
OmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBi
SWk0dUx5NHVMeTR1THk0dUwyeHBZaTlvWVc1a2JHVmlZWEp6TDJSbFkyOXlZWFJ2Y25NdmFXNXNh
VzVsTG1weklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN096dHRRa0ZGWlN4VlFV
RlRMRkZCUVZFc1JVRkJSVHRCUVVOb1F5eFpRVUZSTEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU1zVVVG
QlVTeEZRVUZGTEZWQlFWTXNSVUZCUlN4RlFVRkZMRXRCUVVzc1JVRkJSU3hUUVVGVExFVkJRVVVz
VDBGQlR5eEZRVUZGTzBGQlF6TkZMRlZCUVVrc1IwRkJSeXhIUVVGSExFVkJRVVVzUTBGQlF6dEJR
VU5pTEZWQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1VVRkJVU3hGUVVGRk8wRkJRMjVDTEdGQlFV
c3NRMEZCUXl4UlFVRlJMRWRCUVVjc1JVRkJSU3hEUVVGRE8wRkJRM0JDTEZkQlFVY3NSMEZCUnl4
VlFVRlRMRTlCUVU4c1JVRkJSU3hQUVVGUExFVkJRVVU3TzBGQlJTOUNMR05CUVVrc1VVRkJVU3hI
UVVGSExGTkJRVk1zUTBGQlF5eFJRVUZSTEVOQlFVTTdRVUZEYkVNc2JVSkJRVk1zUTBGQlF5eFJR
VUZSTEVkQlFVY3NUMEZXY2tJc1RVRkJUU3hEUVZWelFpeEZRVUZGTEVWQlFVVXNVVUZCVVN4RlFV
RkZMRXRCUVVzc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF6dEJRVU14UkN4alFVRkpMRWRCUVVj
c1IwRkJSeXhGUVVGRkxFTkJRVU1zVDBGQlR5eEZRVUZGTEU5QlFVOHNRMEZCUXl4RFFVRkRPMEZC
UXk5Q0xHMUNRVUZUTEVOQlFVTXNVVUZCVVN4SFFVRkhMRkZCUVZFc1EwRkJRenRCUVVNNVFpeHBR
a0ZCVHl4SFFVRkhMRU5CUVVNN1UwRkRXaXhEUVVGRE8wOUJRMGc3TzBGQlJVUXNWMEZCU3l4RFFV
RkRMRkZCUVZFc1EwRkJReXhQUVVGUExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4
RFFVRkRMRWRCUVVjc1QwRkJUeXhEUVVGRExFVkJRVVVzUTBGQlF6czdRVUZGTjBNc1lVRkJUeXhI
UVVGSExFTkJRVU03UzBGRFdpeERRVUZETEVOQlFVTTdSMEZEU2lJc0ltWnBiR1VpT2lKcGJteHBi
bVV1YW5NaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SnBiWEJ2Y25RZ2UyVjRkR1Z1WkgwZ1pu
SnZiU0FuTGk0dmRYUnBiSE1uTzF4dVhHNWxlSEJ2Y25RZ1pHVm1ZWFZzZENCbWRXNWpkR2x2Ymlo
cGJuTjBZVzVqWlNrZ2UxeHVJQ0JwYm5OMFlXNWpaUzV5WldkcGMzUmxja1JsWTI5eVlYUnZjaWdu
YVc1c2FXNWxKeXdnWm5WdVkzUnBiMjRvWm00c0lIQnliM0J6TENCamIyNTBZV2x1WlhJc0lHOXdk
R2x2Ym5NcElIdGNiaUFnSUNCc1pYUWdjbVYwSUQwZ1ptNDdYRzRnSUNBZ2FXWWdLQ0Z3Y205d2N5
NXdZWEowYVdGc2N5a2dlMXh1SUNBZ0lDQWdjSEp2Y0hNdWNHRnlkR2xoYkhNZ1BTQjdmVHRjYmlB
Z0lDQWdJSEpsZENBOUlHWjFibU4wYVc5dUtHTnZiblJsZUhRc0lHOXdkR2x2Ym5NcElIdGNiaUFn
SUNBZ0lDQWdMeThnUTNKbFlYUmxJR0VnYm1WM0lIQmhjblJwWVd4eklITjBZV05ySUdaeVlXMWxJ
SEJ5YVc5eUlIUnZJR1Y0WldNdVhHNGdJQ0FnSUNBZ0lHeGxkQ0J2Y21sbmFXNWhiQ0E5SUdOdmJu
UmhhVzVsY2k1d1lYSjBhV0ZzY3p0Y2JpQWdJQ0FnSUNBZ1kyOXVkR0ZwYm1WeUxuQmhjblJwWVd4
eklEMGdaWGgwWlc1a0tIdDlMQ0J2Y21sbmFXNWhiQ3dnY0hKdmNITXVjR0Z5ZEdsaGJITXBPMXh1
SUNBZ0lDQWdJQ0JzWlhRZ2NtVjBJRDBnWm00b1kyOXVkR1Y0ZEN3Z2IzQjBhVzl1Y3lrN1hHNGdJ
Q0FnSUNBZ0lHTnZiblJoYVc1bGNpNXdZWEowYVdGc2N5QTlJRzl5YVdkcGJtRnNPMXh1SUNBZ0lD
QWdJQ0J5WlhSMWNtNGdjbVYwTzF4dUlDQWdJQ0FnZlR0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0J3Y205
d2N5NXdZWEowYVdGc2MxdHZjSFJwYjI1ekxtRnlaM05iTUYxZElEMGdiM0IwYVc5dWN5NW1ianRj
Ymx4dUlDQWdJSEpsZEhWeWJpQnlaWFE3WEc0Z0lIMHBPMXh1ZlZ4dUlsMTkKKzsKK2RlZmluZSgn
aGFuZGxlYmFycy9kZWNvcmF0b3JzJyxbJ2V4cG9ydHMnLCAnLi9kZWNvcmF0b3JzL2lubGluZSdd
LCBmdW5jdGlvbiAoZXhwb3J0cywgX2RlY29yYXRvcnNJbmxpbmUpIHsKKyAgJ3VzZSBzdHJpY3Qn
OworCisgIGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7CisgIGV4cG9ydHMucmVnaXN0ZXJEZWZh
dWx0RGVjb3JhdG9ycyA9IHJlZ2lzdGVyRGVmYXVsdERlY29yYXRvcnM7CisgIC8vIGlzdGFuYnVs
IGlnbm9yZSBuZXh0CisKKyAgZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsg
cmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsg
fQorCisgIHZhciBfcmVnaXN0ZXJJbmxpbmUgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9kZWNv
cmF0b3JzSW5saW5lKTsKKworICBmdW5jdGlvbiByZWdpc3RlckRlZmF1bHREZWNvcmF0b3JzKGlu
c3RhbmNlKSB7CisgICAgX3JlZ2lzdGVySW5saW5lWydkZWZhdWx0J10oaW5zdGFuY2UpOworICB9
Cit9KTsKKy8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQs
ZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUx5NHVMMnhwWWk5b1lXNWti
R1ZpWVhKekwyUmxZMjl5WVhSdmNuTXVhbk1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5
STZJanM3T3pzN096czdPenM3UVVGRlR5eFhRVUZUTEhsQ1FVRjVRaXhEUVVGRExGRkJRVkVzUlVG
QlJUdEJRVU5zUkN3clFrRkJaU3hSUVVGUkxFTkJRVU1zUTBGQlF6dEhRVU14UWlJc0ltWnBiR1Vp
T2lKa1pXTnZjbUYwYjNKekxtcHpJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJ
SEpsWjJsemRHVnlTVzVzYVc1bElHWnliMjBnSnk0dlpHVmpiM0poZEc5eWN5OXBibXhwYm1Vbk8x
eHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdjbVZuYVhOMFpYSkVaV1poZFd4MFJHVmpiM0poZEc5
eWN5aHBibk4wWVc1alpTa2dlMXh1SUNCeVpXZHBjM1JsY2tsdWJHbHVaU2hwYm5OMFlXNWpaU2s3
WEc1OVhHNWNiaUpkZlE9PQorOworZGVmaW5lKCdoYW5kbGViYXJzL2xvZ2dlcicsWydleHBvcnRz
JywgJ21vZHVsZScsICcuL3V0aWxzJ10sIGZ1bmN0aW9uIChleHBvcnRzLCBtb2R1bGUsIF91dGls
cykgeworICAndXNlIHN0cmljdCc7CisKKyAgdmFyIGxvZ2dlciA9IHsKKyAgICBtZXRob2RNYXA6
IFsnZGVidWcnLCAnaW5mbycsICd3YXJuJywgJ2Vycm9yJ10sCisgICAgbGV2ZWw6ICdpbmZvJywK
KworICAgIC8vIE1hcHMgYSBnaXZlbiBsZXZlbCB2YWx1ZSB0byB0aGUgYG1ldGhvZE1hcGAgaW5k
ZXhlcyBhYm92ZS4KKyAgICBsb29rdXBMZXZlbDogZnVuY3Rpb24gbG9va3VwTGV2ZWwobGV2ZWwp
IHsKKyAgICAgIGlmICh0eXBlb2YgbGV2ZWwgPT09ICdzdHJpbmcnKSB7CisgICAgICAgIHZhciBs
ZXZlbE1hcCA9IF91dGlscy5pbmRleE9mKGxvZ2dlci5tZXRob2RNYXAsIGxldmVsLnRvTG93ZXJD
YXNlKCkpOworICAgICAgICBpZiAobGV2ZWxNYXAgPj0gMCkgeworICAgICAgICAgIGxldmVsID0g
bGV2ZWxNYXA7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgbGV2ZWwgPSBwYXJzZUludChs
ZXZlbCwgMTApOworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIHJldHVybiBsZXZlbDsKKyAg
ICB9LAorCisgICAgLy8gQ2FuIGJlIG92ZXJyaWRkZW4gaW4gdGhlIGhvc3QgZW52aXJvbm1lbnQK
KyAgICBsb2c6IGZ1bmN0aW9uIGxvZyhsZXZlbCkgeworICAgICAgbGV2ZWwgPSBsb2dnZXIubG9v
a3VwTGV2ZWwobGV2ZWwpOworCisgICAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmlu
ZWQnICYmIGxvZ2dlci5sb29rdXBMZXZlbChsb2dnZXIubGV2ZWwpIDw9IGxldmVsKSB7CisgICAg
ICAgIHZhciBtZXRob2QgPSBsb2dnZXIubWV0aG9kTWFwW2xldmVsXTsKKyAgICAgICAgaWYgKCFj
b25zb2xlW21ldGhvZF0pIHsKKyAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNv
bnNvbGUKKyAgICAgICAgICBtZXRob2QgPSAnbG9nJzsKKyAgICAgICAgfQorCisgICAgICAgIGZv
ciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBtZXNzYWdlID0gQXJyYXkoX2xlbiA+IDEg
PyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tleSA8IF9sZW47IF9rZXkrKykgeworICAgICAg
ICAgIG1lc3NhZ2VbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldOworICAgICAgICB9CisKKyAg
ICAgICAgY29uc29sZVttZXRob2RdLmFwcGx5KGNvbnNvbGUsIG1lc3NhZ2UpOyAvLyBlc2xpbnQt
ZGlzYWJsZS1saW5lIG5vLWNvbnNvbGUKKyAgICAgIH0KKyAgICB9CisgIH07CisKKyAgbW9kdWxl
LmV4cG9ydHMgPSBsb2dnZXI7Cit9KTsKKy8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGlj
YXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJaTR1THk0
dUx5NHVMMnhwWWk5b1lXNWtiR1ZpWVhKekwyeHZaMmRsY2k1cWN5SmRMQ0p1WVcxbGN5STZXMTBz
SW0xaGNIQnBibWR6SWpvaU96czdRVUZGUVN4TlFVRkpMRTFCUVUwc1IwRkJSenRCUVVOWUxHRkJR
Vk1zUlVGQlJTeERRVUZETEU5QlFVOHNSVUZCUlN4TlFVRk5MRVZCUVVVc1RVRkJUU3hGUVVGRkxF
OUJRVThzUTBGQlF6dEJRVU0zUXl4VFFVRkxMRVZCUVVVc1RVRkJUVHM3TzBGQlIySXNaVUZCVnl4
RlFVRkZMSEZDUVVGVExFdEJRVXNzUlVGQlJUdEJRVU16UWl4VlFVRkpMRTlCUVU4c1MwRkJTeXhM
UVVGTExGRkJRVkVzUlVGQlJUdEJRVU0zUWl4WlFVRkpMRkZCUVZFc1IwRkJSeXhQUVZSaUxFOUJR
VThzUTBGVFl5eE5RVUZOTEVOQlFVTXNVMEZCVXl4RlFVRkZMRXRCUVVzc1EwRkJReXhYUVVGWExF
VkJRVVVzUTBGQlF5eERRVUZETzBGQlF6bEVMRmxCUVVrc1VVRkJVU3hKUVVGSkxFTkJRVU1zUlVG
QlJUdEJRVU5xUWl4bFFVRkxMRWRCUVVjc1VVRkJVU3hEUVVGRE8xTkJRMnhDTEUxQlFVMDdRVUZE
VEN4bFFVRkxMRWRCUVVjc1VVRkJVU3hEUVVGRExFdEJRVXNzUlVGQlJTeEZRVUZGTEVOQlFVTXNR
MEZCUXp0VFFVTTNRanRQUVVOR096dEJRVVZFTEdGQlFVOHNTMEZCU3l4RFFVRkRPMHRCUTJRN096
dEJRVWRFTEU5QlFVY3NSVUZCUlN4aFFVRlRMRXRCUVVzc1JVRkJZenRCUVVNdlFpeFhRVUZMTEVk
QlFVY3NUVUZCVFN4RFFVRkRMRmRCUVZjc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6czdRVUZG
YkVNc1ZVRkJTU3hQUVVGUExFOUJRVThzUzBGQlN5eFhRVUZYTEVsQlFVa3NUVUZCVFN4RFFVRkRM
RmRCUVZjc1EwRkJReXhOUVVGTkxFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NTMEZCU3l4RlFV
RkZPMEZCUXk5RkxGbEJRVWtzVFVGQlRTeEhRVUZITEUxQlFVMHNRMEZCUXl4VFFVRlRMRU5CUVVN
c1MwRkJTeXhEUVVGRExFTkJRVU03UVVGRGNrTXNXVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhO
UVVGTkxFTkJRVU1zUlVGQlJUczdRVUZEY0VJc1owSkJRVTBzUjBGQlJ5eExRVUZMTEVOQlFVTTdV
MEZEYUVJN096QkRRVkJ0UWl4UFFVRlBPMEZCUVZBc2FVSkJRVTg3T3p0QlFWRXpRaXhsUVVGUExF
TkJRVU1zVFVGQlRTeFBRVUZETEVOQlFXWXNUMEZCVHl4RlFVRlpMRTlCUVU4c1EwRkJReXhEUVVG
RE8wOUJRemRDTzB0QlEwWTdSMEZEUml4RFFVRkRPenR0UWtGRllTeE5RVUZOSWl3aVptbHNaU0k2
SW14dloyZGxjaTVxY3lJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENCN2FXNWta
WGhQWm4wZ1puSnZiU0FuTGk5MWRHbHNjeWM3WEc1Y2JteGxkQ0JzYjJkblpYSWdQU0I3WEc0Z0lH
MWxkR2h2WkUxaGNEb2dXeWRrWldKMVp5Y3NJQ2RwYm1adkp5d2dKM2RoY200bkxDQW5aWEp5YjNJ
blhTeGNiaUFnYkdWMlpXdzZJQ2RwYm1adkp5eGNibHh1SUNBdkx5Qk5ZWEJ6SUdFZ1oybDJaVzRn
YkdWMlpXd2dkbUZzZFdVZ2RHOGdkR2hsSUdCdFpYUm9iMlJOWVhCZ0lHbHVaR1Y0WlhNZ1lXSnZk
bVV1WEc0Z0lHeHZiMnQxY0V4bGRtVnNPaUJtZFc1amRHbHZiaWhzWlhabGJDa2dlMXh1SUNBZ0lH
bG1JQ2gwZVhCbGIyWWdiR1YyWld3Z1BUMDlJQ2R6ZEhKcGJtY25LU0I3WEc0Z0lDQWdJQ0JzWlhR
Z2JHVjJaV3hOWVhBZ1BTQnBibVJsZUU5bUtHeHZaMmRsY2k1dFpYUm9iMlJOWVhBc0lHeGxkbVZz
TG5SdlRHOTNaWEpEWVhObEtDa3BPMXh1SUNBZ0lDQWdhV1lnS0d4bGRtVnNUV0Z3SUQ0OUlEQXBJ
SHRjYmlBZ0lDQWdJQ0FnYkdWMlpXd2dQU0JzWlhabGJFMWhjRHRjYmlBZ0lDQWdJSDBnWld4elpT
QjdYRzRnSUNBZ0lDQWdJR3hsZG1Wc0lEMGdjR0Z5YzJWSmJuUW9iR1YyWld3c0lERXdLVHRjYmlB
Z0lDQWdJSDFjYmlBZ0lDQjlYRzVjYmlBZ0lDQnlaWFIxY200Z2JHVjJaV3c3WEc0Z0lIMHNYRzVj
YmlBZ0x5OGdRMkZ1SUdKbElHOTJaWEp5YVdSa1pXNGdhVzRnZEdobElHaHZjM1FnWlc1MmFYSnZi
bTFsYm5SY2JpQWdiRzluT2lCbWRXNWpkR2x2Ymloc1pYWmxiQ3dnTGk0dWJXVnpjMkZuWlNrZ2Ux
eHVJQ0FnSUd4bGRtVnNJRDBnYkc5bloyVnlMbXh2YjJ0MWNFeGxkbVZzS0d4bGRtVnNLVHRjYmx4
dUlDQWdJR2xtSUNoMGVYQmxiMllnWTI5dWMyOXNaU0FoUFQwZ0ozVnVaR1ZtYVc1bFpDY2dKaVln
Ykc5bloyVnlMbXh2YjJ0MWNFeGxkbVZzS0d4dloyZGxjaTVzWlhabGJDa2dQRDBnYkdWMlpXd3BJ
SHRjYmlBZ0lDQWdJR3hsZENCdFpYUm9iMlFnUFNCc2IyZG5aWEl1YldWMGFHOWtUV0Z3VzJ4bGRt
VnNYVHRjYmlBZ0lDQWdJR2xtSUNnaFkyOXVjMjlzWlZ0dFpYUm9iMlJkS1NCN0lDQWdMeThnWlhO
c2FXNTBMV1JwYzJGaWJHVXRiR2x1WlNCdWJ5MWpiMjV6YjJ4bFhHNGdJQ0FnSUNBZ0lHMWxkR2h2
WkNBOUlDZHNiMmNuTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnWTI5dWMyOXNaVnR0WlhSb2IyUmRL
QzR1TG0xbGMzTmhaMlVwT3lBZ0lDQXZMeUJsYzJ4cGJuUXRaR2x6WVdKc1pTMXNhVzVsSUc1dkxX
TnZibk52YkdWY2JpQWdJQ0I5WEc0Z0lIMWNibjA3WEc1Y2JtVjRjRzl5ZENCa1pXWmhkV3gwSUd4
dloyZGxjanRjYmlKZGZRPT0KKzsKK2RlZmluZSgnaGFuZGxlYmFycy9iYXNlJyxbJ2V4cG9ydHMn
LCAnLi91dGlscycsICcuL2V4Y2VwdGlvbicsICcuL2hlbHBlcnMnLCAnLi9kZWNvcmF0b3JzJywg
Jy4vbG9nZ2VyJ10sIGZ1bmN0aW9uIChleHBvcnRzLCBfdXRpbHMsIF9leGNlcHRpb24sIF9oZWxw
ZXJzLCBfZGVjb3JhdG9ycywgX2xvZ2dlcikgeworICAndXNlIHN0cmljdCc7CisKKyAgZXhwb3J0
cy5fX2VzTW9kdWxlID0gdHJ1ZTsKKyAgZXhwb3J0cy5IYW5kbGViYXJzRW52aXJvbm1lbnQgPSBI
YW5kbGViYXJzRW52aXJvbm1lbnQ7CisgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0CisKKyAgZnVu
Y3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19l
c01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfQorCisgIHZhciBfRXhjZXB0aW9u
ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZXhjZXB0aW9uKTsKKworICB2YXIgX2xvZ2dlcjIg
PSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9sb2dnZXIpOworCisgIHZhciBWRVJTSU9OID0gJzQu
MC42JzsKKyAgZXhwb3J0cy5WRVJTSU9OID0gVkVSU0lPTjsKKyAgdmFyIENPTVBJTEVSX1JFVklT
SU9OID0gNzsKKworICBleHBvcnRzLkNPTVBJTEVSX1JFVklTSU9OID0gQ09NUElMRVJfUkVWSVNJ
T047CisgIHZhciBSRVZJU0lPTl9DSEFOR0VTID0geworICAgIDE6ICc8PSAxLjAucmMuMicsIC8v
IDEuMC5yYy4yIGlzIGFjdHVhbGx5IHJldjIgYnV0IGRvZXNuJ3QgcmVwb3J0IGl0CisgICAgMjog
Jz09IDEuMC4wLXJjLjMnLAorICAgIDM6ICc9PSAxLjAuMC1yYy40JywKKyAgICA0OiAnPT0gMS54
LngnLAorICAgIDU6ICc9PSAyLjAuMC1hbHBoYS54JywKKyAgICA2OiAnPj0gMi4wLjAtYmV0YS4x
JywKKyAgICA3OiAnPj0gNC4wLjAnCisgIH07CisKKyAgZXhwb3J0cy5SRVZJU0lPTl9DSEFOR0VT
ID0gUkVWSVNJT05fQ0hBTkdFUzsKKyAgdmFyIG9iamVjdFR5cGUgPSAnW29iamVjdCBPYmplY3Rd
JzsKKworICBmdW5jdGlvbiBIYW5kbGViYXJzRW52aXJvbm1lbnQoaGVscGVycywgcGFydGlhbHMs
IGRlY29yYXRvcnMpIHsKKyAgICB0aGlzLmhlbHBlcnMgPSBoZWxwZXJzIHx8IHt9OworICAgIHRo
aXMucGFydGlhbHMgPSBwYXJ0aWFscyB8fCB7fTsKKyAgICB0aGlzLmRlY29yYXRvcnMgPSBkZWNv
cmF0b3JzIHx8IHt9OworCisgICAgX2hlbHBlcnMucmVnaXN0ZXJEZWZhdWx0SGVscGVycyh0aGlz
KTsKKyAgICBfZGVjb3JhdG9ycy5yZWdpc3RlckRlZmF1bHREZWNvcmF0b3JzKHRoaXMpOworICB9
CisKKyAgSGFuZGxlYmFyc0Vudmlyb25tZW50LnByb3RvdHlwZSA9IHsKKyAgICBjb25zdHJ1Y3Rv
cjogSGFuZGxlYmFyc0Vudmlyb25tZW50LAorCisgICAgbG9nZ2VyOiBfbG9nZ2VyMlsnZGVmYXVs
dCddLAorICAgIGxvZzogX2xvZ2dlcjJbJ2RlZmF1bHQnXS5sb2csCisKKyAgICByZWdpc3Rlckhl
bHBlcjogZnVuY3Rpb24gcmVnaXN0ZXJIZWxwZXIobmFtZSwgZm4pIHsKKyAgICAgIGlmIChfdXRp
bHMudG9TdHJpbmcuY2FsbChuYW1lKSA9PT0gb2JqZWN0VHlwZSkgeworICAgICAgICBpZiAoZm4p
IHsKKyAgICAgICAgICB0aHJvdyBuZXcgX0V4Y2VwdGlvblsnZGVmYXVsdCddKCdBcmcgbm90IHN1
cHBvcnRlZCB3aXRoIG11bHRpcGxlIGhlbHBlcnMnKTsKKyAgICAgICAgfQorICAgICAgICBfdXRp
bHMuZXh0ZW5kKHRoaXMuaGVscGVycywgbmFtZSk7CisgICAgICB9IGVsc2UgeworICAgICAgICB0
aGlzLmhlbHBlcnNbbmFtZV0gPSBmbjsKKyAgICAgIH0KKyAgICB9LAorICAgIHVucmVnaXN0ZXJI
ZWxwZXI6IGZ1bmN0aW9uIHVucmVnaXN0ZXJIZWxwZXIobmFtZSkgeworICAgICAgZGVsZXRlIHRo
aXMuaGVscGVyc1tuYW1lXTsKKyAgICB9LAorCisgICAgcmVnaXN0ZXJQYXJ0aWFsOiBmdW5jdGlv
biByZWdpc3RlclBhcnRpYWwobmFtZSwgcGFydGlhbCkgeworICAgICAgaWYgKF91dGlscy50b1N0
cmluZy5jYWxsKG5hbWUpID09PSBvYmplY3RUeXBlKSB7CisgICAgICAgIF91dGlscy5leHRlbmQo
dGhpcy5wYXJ0aWFscywgbmFtZSk7CisgICAgICB9IGVsc2UgeworICAgICAgICBpZiAodHlwZW9m
IHBhcnRpYWwgPT09ICd1bmRlZmluZWQnKSB7CisgICAgICAgICAgdGhyb3cgbmV3IF9FeGNlcHRp
b25bJ2RlZmF1bHQnXSgnQXR0ZW1wdGluZyB0byByZWdpc3RlciBhIHBhcnRpYWwgY2FsbGVkICIn
ICsgbmFtZSArICciIGFzIHVuZGVmaW5lZCcpOworICAgICAgICB9CisgICAgICAgIHRoaXMucGFy
dGlhbHNbbmFtZV0gPSBwYXJ0aWFsOworICAgICAgfQorICAgIH0sCisgICAgdW5yZWdpc3RlclBh
cnRpYWw6IGZ1bmN0aW9uIHVucmVnaXN0ZXJQYXJ0aWFsKG5hbWUpIHsKKyAgICAgIGRlbGV0ZSB0
aGlzLnBhcnRpYWxzW25hbWVdOworICAgIH0sCisKKyAgICByZWdpc3RlckRlY29yYXRvcjogZnVu
Y3Rpb24gcmVnaXN0ZXJEZWNvcmF0b3IobmFtZSwgZm4pIHsKKyAgICAgIGlmIChfdXRpbHMudG9T
dHJpbmcuY2FsbChuYW1lKSA9PT0gb2JqZWN0VHlwZSkgeworICAgICAgICBpZiAoZm4pIHsKKyAg
ICAgICAgICB0aHJvdyBuZXcgX0V4Y2VwdGlvblsnZGVmYXVsdCddKCdBcmcgbm90IHN1cHBvcnRl
ZCB3aXRoIG11bHRpcGxlIGRlY29yYXRvcnMnKTsKKyAgICAgICAgfQorICAgICAgICBfdXRpbHMu
ZXh0ZW5kKHRoaXMuZGVjb3JhdG9ycywgbmFtZSk7CisgICAgICB9IGVsc2UgeworICAgICAgICB0
aGlzLmRlY29yYXRvcnNbbmFtZV0gPSBmbjsKKyAgICAgIH0KKyAgICB9LAorICAgIHVucmVnaXN0
ZXJEZWNvcmF0b3I6IGZ1bmN0aW9uIHVucmVnaXN0ZXJEZWNvcmF0b3IobmFtZSkgeworICAgICAg
ZGVsZXRlIHRoaXMuZGVjb3JhdG9yc1tuYW1lXTsKKyAgICB9CisgIH07CisKKyAgdmFyIGxvZyA9
IF9sb2dnZXIyWydkZWZhdWx0J10ubG9nOworCisgIGV4cG9ydHMubG9nID0gbG9nOworICBleHBv
cnRzLmNyZWF0ZUZyYW1lID0gX3V0aWxzLmNyZWF0ZUZyYW1lOworICBleHBvcnRzLmxvZ2dlciA9
IF9sb2dnZXIyWydkZWZhdWx0J107Cit9KTsKKy8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBw
bGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJaTR1
THk0dUx5NHVMMnhwWWk5b1lXNWtiR1ZpWVhKekwySmhjMlV1YW5NaVhTd2libUZ0WlhNaU9sdGRM
Q0p0WVhCd2FXNW5jeUk2SWpzN096czdPenM3T3pzN096dEJRVTFQTEUxQlFVMHNUMEZCVHl4SFFV
RkhMRTlCUVU4c1EwRkJRenM3UVVGRGVFSXNUVUZCVFN4cFFrRkJhVUlzUjBGQlJ5eERRVUZETEVO
QlFVTTdPenRCUVVVMVFpeE5RVUZOTEdkQ1FVRm5RaXhIUVVGSE8wRkJRemxDTEV0QlFVTXNSVUZC
UlN4aFFVRmhPMEZCUTJoQ0xFdEJRVU1zUlVGQlJTeGxRVUZsTzBGQlEyeENMRXRCUVVNc1JVRkJS
U3hsUVVGbE8wRkJRMnhDTEV0QlFVTXNSVUZCUlN4VlFVRlZPMEZCUTJJc1MwRkJReXhGUVVGRkxH
dENRVUZyUWp0QlFVTnlRaXhMUVVGRExFVkJRVVVzYVVKQlFXbENPMEZCUTNCQ0xFdEJRVU1zUlVG
QlJTeFZRVUZWTzBkQlEyUXNRMEZCUXpzN08wRkJSVVlzVFVGQlRTeFZRVUZWTEVkQlFVY3NhVUpC
UVdsQ0xFTkJRVU03TzBGQlJUbENMRmRCUVZNc2NVSkJRWEZDTEVOQlFVTXNUMEZCVHl4RlFVRkZM
RkZCUVZFc1JVRkJSU3hWUVVGVkxFVkJRVVU3UVVGRGJrVXNVVUZCU1N4RFFVRkRMRTlCUVU4c1Iw
RkJSeXhQUVVGUExFbEJRVWtzUlVGQlJTeERRVUZETzBGQlF6ZENMRkZCUVVrc1EwRkJReXhSUVVG
UkxFZEJRVWNzVVVGQlVTeEpRVUZKTEVWQlFVVXNRMEZCUXp0QlFVTXZRaXhSUVVGSkxFTkJRVU1z
VlVGQlZTeEhRVUZITEZWQlFWVXNTVUZCU1N4RlFVRkZMRU5CUVVNN08wRkJSVzVETEdGQmVFSk5M
SE5DUVVGelFpeERRWGRDVEN4SlFVRkpMRU5CUVVNc1EwRkJRenRCUVVNM1FpeG5Ra0Y0UWswc2VV
SkJRWGxDTEVOQmQwSk1MRWxCUVVrc1EwRkJReXhEUVVGRE8wZEJRMnBET3p0QlFVVkVMSFZDUVVG
eFFpeERRVUZETEZOQlFWTXNSMEZCUnp0QlFVTm9ReXhsUVVGWExFVkJRVVVzY1VKQlFYRkNPenRC
UVVWc1F5eFZRVUZOTEhGQ1FVRlJPMEZCUTJRc1QwRkJSeXhGUVVGRkxHOUNRVUZQTEVkQlFVYzdP
MEZCUldZc2EwSkJRV01zUlVGQlJTeDNRa0ZCVXl4SlFVRkpMRVZCUVVVc1JVRkJSU3hGUVVGRk8w
RkJRMnBETEZWQlFVa3NUMEZ5UTNGQ0xGRkJRVkVzUTBGeFEzQkNMRWxCUVVrc1EwRkJReXhKUVVG
SkxFTkJRVU1zUzBGQlN5eFZRVUZWTEVWQlFVVTdRVUZEZEVNc1dVRkJTU3hGUVVGRkxFVkJRVVU3
UVVGQlJTeG5Ra0ZCVFN3d1FrRkJZeXg1UTBGQmVVTXNRMEZCUXl4RFFVRkRPMU5CUVVVN1FVRkRN
MFVzWlVGMlEyVXNUVUZCVFN4RFFYVkRaQ3hKUVVGSkxFTkJRVU1zVDBGQlR5eEZRVUZGTEVsQlFV
a3NRMEZCUXl4RFFVRkRPMDlCUXpWQ0xFMUJRVTA3UVVGRFRDeFpRVUZKTEVOQlFVTXNUMEZCVHl4
RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF6dFBRVU42UWp0TFFVTkdPMEZC
UTBRc2IwSkJRV2RDTEVWQlFVVXNNRUpCUVZNc1NVRkJTU3hGUVVGRk8wRkJReTlDTEdGQlFVOHNT
VUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dExRVU16UWpzN1FV
RkZSQ3h0UWtGQlpTeEZRVUZGTEhsQ1FVRlRMRWxCUVVrc1JVRkJSU3hQUVVGUExFVkJRVVU3UVVG
RGRrTXNWVUZCU1N4UFFXcEVjVUlzVVVGQlVTeERRV2xFY0VJc1NVRkJTU3hEUVVGRExFbEJRVWtz
UTBGQlF5eExRVUZMTEZWQlFWVXNSVUZCUlR0QlFVTjBReXhsUVd4RVpTeE5RVUZOTEVOQmEwUmtM
RWxCUVVrc1EwRkJReXhSUVVGUkxFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTTdUMEZETjBJc1RV
RkJUVHRCUVVOTUxGbEJRVWtzVDBGQlR5eFBRVUZQTEV0QlFVc3NWMEZCVnl4RlFVRkZPMEZCUTJ4
RExHZENRVUZOTEhkRlFVRXdSQ3hKUVVGSkxHOUNRVUZwUWl4RFFVRkRPMU5CUTNaR08wRkJRMFFz
V1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhQUVVGUExFTkJR
VU03VDBGREwwSTdTMEZEUmp0QlFVTkVMSEZDUVVGcFFpeEZRVUZGTERKQ1FVRlRMRWxCUVVrc1JV
RkJSVHRCUVVOb1F5eGhRVUZQTEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1NVRkJTU3hEUVVG
RExFTkJRVU03UzBGRE5VSTdPMEZCUlVRc2NVSkJRV2xDTEVWQlFVVXNNa0pCUVZNc1NVRkJTU3hG
UVVGRkxFVkJRVVVzUlVGQlJUdEJRVU53UXl4VlFVRkpMRTlCTDBSeFFpeFJRVUZSTEVOQkswUndR
aXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NWVUZCVlN4RlFVRkZPMEZCUTNSRExG
bEJRVWtzUlVGQlJTeEZRVUZGTzBGQlFVVXNaMEpCUVUwc01FSkJRV01zTkVOQlFUUkRMRU5CUVVN
c1EwRkJRenRUUVVGRk8wRkJRemxGTEdWQmFrVmxMRTFCUVUwc1EwRnBSV1FzU1VGQlNTeERRVUZE
TEZWQlFWVXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJRenRQUVVNdlFpeE5RVUZOTzBGQlEwd3NX
VUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFV
TTdUMEZETlVJN1MwRkRSanRCUVVORUxIVkNRVUZ0UWl4RlFVRkZMRFpDUVVGVExFbEJRVWtzUlVG
QlJUdEJRVU5zUXl4aFFVRlBMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zU1VGQlNTeERRVUZE
TEVOQlFVTTdTMEZET1VJN1IwRkRSaXhEUVVGRE96dEJRVVZMTEUxQlFVa3NSMEZCUnl4SFFVRkhM
RzlDUVVGUExFZEJRVWNzUTBGQlF6czdPMVZCUlhCQ0xGZEJRVmNzVlVFM1JWZ3NWMEZCVnp0VlFU
WkZSU3hOUVVGTklpd2labWxzWlNJNkltSmhjMlV1YW5NaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJ
Nld5SnBiWEJ2Y25RZ2UyTnlaV0YwWlVaeVlXMWxMQ0JsZUhSbGJtUXNJSFJ2VTNSeWFXNW5mU0Jt
Y205dElDY3VMM1YwYVd4ekp6dGNibWx0Y0c5eWRDQkZlR05sY0hScGIyNGdabkp2YlNBbkxpOWxl
R05sY0hScGIyNG5PMXh1YVcxd2IzSjBJSHR5WldkcGMzUmxja1JsWm1GMWJIUklaV3h3WlhKemZT
Qm1jbTl0SUNjdUwyaGxiSEJsY25Nbk8xeHVhVzF3YjNKMElIdHlaV2RwYzNSbGNrUmxabUYxYkhS
RVpXTnZjbUYwYjNKemZTQm1jbTl0SUNjdUwyUmxZMjl5WVhSdmNuTW5PMXh1YVcxd2IzSjBJR3h2
WjJkbGNpQm1jbTl0SUNjdUwyeHZaMmRsY2ljN1hHNWNibVY0Y0c5eWRDQmpiMjV6ZENCV1JWSlRT
VTlPSUQwZ0p6UXVNQzQySnp0Y2JtVjRjRzl5ZENCamIyNXpkQ0JEVDAxUVNVeEZVbDlTUlZaSlUw
bFBUaUE5SURjN1hHNWNibVY0Y0c5eWRDQmpiMjV6ZENCU1JWWkpVMGxQVGw5RFNFRk9SMFZUSUQw
Z2UxeHVJQ0F4T2lBblBEMGdNUzR3TG5KakxqSW5MQ0F2THlBeExqQXVjbU11TWlCcGN5QmhZM1Ix
WVd4c2VTQnlaWFl5SUdKMWRDQmtiMlZ6YmlkMElISmxjRzl5ZENCcGRGeHVJQ0F5T2lBblBUMGdN
UzR3TGpBdGNtTXVNeWNzWEc0Z0lETTZJQ2M5UFNBeExqQXVNQzF5WXk0MEp5eGNiaUFnTkRvZ0p6
MDlJREV1ZUM1NEp5eGNiaUFnTlRvZ0p6MDlJREl1TUM0d0xXRnNjR2hoTG5nbkxGeHVJQ0EyT2lB
blBqMGdNaTR3TGpBdFltVjBZUzR4Snl4Y2JpQWdOem9nSno0OUlEUXVNQzR3SjF4dWZUdGNibHh1
WTI5dWMzUWdiMkpxWldOMFZIbHdaU0E5SUNkYmIySnFaV04wSUU5aWFtVmpkRjBuTzF4dVhHNWxl
SEJ2Y25RZ1puVnVZM1JwYjI0Z1NHRnVaR3hsWW1GeWMwVnVkbWx5YjI1dFpXNTBLR2hsYkhCbGNu
TXNJSEJoY25ScFlXeHpMQ0JrWldOdmNtRjBiM0p6S1NCN1hHNGdJSFJvYVhNdWFHVnNjR1Z5Y3lB
OUlHaGxiSEJsY25NZ2ZId2dlMzA3WEc0Z0lIUm9hWE11Y0dGeWRHbGhiSE1nUFNCd1lYSjBhV0Zz
Y3lCOGZDQjdmVHRjYmlBZ2RHaHBjeTVrWldOdmNtRjBiM0p6SUQwZ1pHVmpiM0poZEc5eWN5Qjhm
Q0I3ZlR0Y2JseHVJQ0J5WldkcGMzUmxja1JsWm1GMWJIUklaV3h3WlhKektIUm9hWE1wTzF4dUlD
QnlaV2RwYzNSbGNrUmxabUYxYkhSRVpXTnZjbUYwYjNKektIUm9hWE1wTzF4dWZWeHVYRzVJWVc1
a2JHVmlZWEp6Ulc1MmFYSnZibTFsYm5RdWNISnZkRzkwZVhCbElEMGdlMXh1SUNCamIyNXpkSEox
WTNSdmNqb2dTR0Z1Wkd4bFltRnljMFZ1ZG1seWIyNXRaVzUwTEZ4dVhHNGdJR3h2WjJkbGNqb2di
RzluWjJWeUxGeHVJQ0JzYjJjNklHeHZaMmRsY2k1c2IyY3NYRzVjYmlBZ2NtVm5hWE4wWlhKSVpX
eHdaWEk2SUdaMWJtTjBhVzl1S0c1aGJXVXNJR1p1S1NCN1hHNGdJQ0FnYVdZZ0tIUnZVM1J5YVc1
bkxtTmhiR3dvYm1GdFpTa2dQVDA5SUc5aWFtVmpkRlI1Y0dVcElIdGNiaUFnSUNBZ0lHbG1JQ2ht
YmlrZ2V5QjBhSEp2ZHlCdVpYY2dSWGhqWlhCMGFXOXVLQ2RCY21jZ2JtOTBJSE4xY0hCdmNuUmxa
Q0IzYVhSb0lHMTFiSFJwY0d4bElHaGxiSEJsY25NbktUc2dmVnh1SUNBZ0lDQWdaWGgwWlc1a0tI
Um9hWE11YUdWc2NHVnljeXdnYm1GdFpTazdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUhS
b2FYTXVhR1ZzY0dWeWMxdHVZVzFsWFNBOUlHWnVPMXh1SUNBZ0lIMWNiaUFnZlN4Y2JpQWdkVzV5
WldkcGMzUmxja2hsYkhCbGNqb2dablZ1WTNScGIyNG9ibUZ0WlNrZ2UxeHVJQ0FnSUdSbGJHVjBa
U0IwYUdsekxtaGxiSEJsY25OYmJtRnRaVjA3WEc0Z0lIMHNYRzVjYmlBZ2NtVm5hWE4wWlhKUVlY
SjBhV0ZzT2lCbWRXNWpkR2x2YmlodVlXMWxMQ0J3WVhKMGFXRnNLU0I3WEc0Z0lDQWdhV1lnS0hS
dlUzUnlhVzVuTG1OaGJHd29ibUZ0WlNrZ1BUMDlJRzlpYW1WamRGUjVjR1VwSUh0Y2JpQWdJQ0Fn
SUdWNGRHVnVaQ2gwYUdsekxuQmhjblJwWVd4ekxDQnVZVzFsS1R0Y2JpQWdJQ0I5SUdWc2MyVWdl
MXh1SUNBZ0lDQWdhV1lnS0hSNWNHVnZaaUJ3WVhKMGFXRnNJRDA5UFNBbmRXNWtaV1pwYm1Wa0p5
a2dlMXh1SUNBZ0lDQWdJQ0IwYUhKdmR5QnVaWGNnUlhoalpYQjBhVzl1S0dCQmRIUmxiWEIwYVc1
bklIUnZJSEpsWjJsemRHVnlJR0VnY0dGeWRHbGhiQ0JqWVd4c1pXUWdYQ0lrZTI1aGJXVjlYQ0ln
WVhNZ2RXNWtaV1pwYm1Wa1lDazdYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQjBhR2x6TG5CaGNuUnBZ
V3h6VzI1aGJXVmRJRDBnY0dGeWRHbGhiRHRjYmlBZ0lDQjlYRzRnSUgwc1hHNGdJSFZ1Y21WbmFY
TjBaWEpRWVhKMGFXRnNPaUJtZFc1amRHbHZiaWh1WVcxbEtTQjdYRzRnSUNBZ1pHVnNaWFJsSUhS
b2FYTXVjR0Z5ZEdsaGJITmJibUZ0WlYwN1hHNGdJSDBzWEc1Y2JpQWdjbVZuYVhOMFpYSkVaV052
Y21GMGIzSTZJR1oxYm1OMGFXOXVLRzVoYldVc0lHWnVLU0I3WEc0Z0lDQWdhV1lnS0hSdlUzUnlh
VzVuTG1OaGJHd29ibUZ0WlNrZ1BUMDlJRzlpYW1WamRGUjVjR1VwSUh0Y2JpQWdJQ0FnSUdsbUlD
aG1iaWtnZXlCMGFISnZkeUJ1WlhjZ1JYaGpaWEIwYVc5dUtDZEJjbWNnYm05MElITjFjSEJ2Y25S
bFpDQjNhWFJvSUcxMWJIUnBjR3hsSUdSbFkyOXlZWFJ2Y25NbktUc2dmVnh1SUNBZ0lDQWdaWGgw
Wlc1a0tIUm9hWE11WkdWamIzSmhkRzl5Y3l3Z2JtRnRaU2s3WEc0Z0lDQWdmU0JsYkhObElIdGNi
aUFnSUNBZ0lIUm9hWE11WkdWamIzSmhkRzl5YzF0dVlXMWxYU0E5SUdadU8xeHVJQ0FnSUgxY2Jp
QWdmU3hjYmlBZ2RXNXlaV2RwYzNSbGNrUmxZMjl5WVhSdmNqb2dablZ1WTNScGIyNG9ibUZ0WlNr
Z2UxeHVJQ0FnSUdSbGJHVjBaU0IwYUdsekxtUmxZMjl5WVhSdmNuTmJibUZ0WlYwN1hHNGdJSDFj
Ym4wN1hHNWNibVY0Y0c5eWRDQnNaWFFnYkc5bklEMGdiRzluWjJWeUxteHZaenRjYmx4dVpYaHdi
M0owSUh0amNtVmhkR1ZHY21GdFpTd2diRzluWjJWeWZUdGNiaUpkZlE9PQorOworZGVmaW5lKCdo
YW5kbGViYXJzL3NhZmUtc3RyaW5nJyxbJ2V4cG9ydHMnLCAnbW9kdWxlJ10sIGZ1bmN0aW9uIChl
eHBvcnRzLCBtb2R1bGUpIHsKKyAgLy8gQnVpbGQgb3V0IG91ciBiYXNpYyBTYWZlU3RyaW5nIHR5
cGUKKyAgJ3VzZSBzdHJpY3QnOworCisgIGZ1bmN0aW9uIFNhZmVTdHJpbmcoc3RyaW5nKSB7Cisg
ICAgdGhpcy5zdHJpbmcgPSBzdHJpbmc7CisgIH0KKworICBTYWZlU3RyaW5nLnByb3RvdHlwZS50
b1N0cmluZyA9IFNhZmVTdHJpbmcucHJvdG90eXBlLnRvSFRNTCA9IGZ1bmN0aW9uICgpIHsKKyAg
ICByZXR1cm4gJycgKyB0aGlzLnN0cmluZzsKKyAgfTsKKworICBtb2R1bGUuZXhwb3J0cyA9IFNh
ZmVTdHJpbmc7Cit9KTsKKy8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNv
bjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUx5NHVMMnhw
WWk5b1lXNWtiR1ZpWVhKekwzTmhabVV0YzNSeWFXNW5MbXB6SWwwc0ltNWhiV1Z6SWpwYlhTd2li
V0Z3Y0dsdVozTWlPaUk3T3pzN1FVRkRRU3hYUVVGVExGVkJRVlVzUTBGQlF5eE5RVUZOTEVWQlFV
VTdRVUZETVVJc1VVRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eE5RVUZOTEVOQlFVTTdSMEZEZEVJ
N08wRkJSVVFzV1VGQlZTeERRVUZETEZOQlFWTXNRMEZCUXl4UlFVRlJMRWRCUVVjc1ZVRkJWU3hE
UVVGRExGTkJRVk1zUTBGQlF5eE5RVUZOTEVkQlFVY3NXVUZCVnp0QlFVTjJSU3hYUVVGUExFVkJR
VVVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRPMGRCUTNwQ0xFTkJRVU03TzIxQ1FV
VmhMRlZCUVZVaUxDSm1hV3hsSWpvaWMyRm1aUzF6ZEhKcGJtY3Vhbk1pTENKemIzVnlZMlZ6UTI5
dWRHVnVkQ0k2V3lJdkx5QkNkV2xzWkNCdmRYUWdiM1Z5SUdKaGMybGpJRk5oWm1WVGRISnBibWNn
ZEhsd1pWeHVablZ1WTNScGIyNGdVMkZtWlZOMGNtbHVaeWh6ZEhKcGJtY3BJSHRjYmlBZ2RHaHBj
eTV6ZEhKcGJtY2dQU0J6ZEhKcGJtYzdYRzU5WEc1Y2JsTmhabVZUZEhKcGJtY3VjSEp2ZEc5MGVY
QmxMblJ2VTNSeWFXNW5JRDBnVTJGbVpWTjBjbWx1Wnk1d2NtOTBiM1I1Y0dVdWRHOUlWRTFNSUQw
Z1puVnVZM1JwYjI0b0tTQjdYRzRnSUhKbGRIVnliaUFuSnlBcklIUm9hWE11YzNSeWFXNW5PMXh1
ZlR0Y2JseHVaWGh3YjNKMElHUmxabUYxYkhRZ1UyRm1aVk4wY21sdVp6dGNiaUpkZlE9PQorOwor
ZGVmaW5lKCdoYW5kbGViYXJzL3J1bnRpbWUnLFsnZXhwb3J0cycsICcuL3V0aWxzJywgJy4vZXhj
ZXB0aW9uJywgJy4vYmFzZSddLCBmdW5jdGlvbiAoZXhwb3J0cywgX3V0aWxzLCBfZXhjZXB0aW9u
LCBfYmFzZSkgeworICAndXNlIHN0cmljdCc7CisKKyAgZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1
ZTsKKyAgZXhwb3J0cy5jaGVja1JldmlzaW9uID0gY2hlY2tSZXZpc2lvbjsKKyAgZXhwb3J0cy50
ZW1wbGF0ZSA9IHRlbXBsYXRlOworICBleHBvcnRzLndyYXBQcm9ncmFtID0gd3JhcFByb2dyYW07
CisgIGV4cG9ydHMucmVzb2x2ZVBhcnRpYWwgPSByZXNvbHZlUGFydGlhbDsKKyAgZXhwb3J0cy5p
bnZva2VQYXJ0aWFsID0gaW52b2tlUGFydGlhbDsKKyAgZXhwb3J0cy5ub29wID0gbm9vcDsKKyAg
Ly8gaXN0YW5idWwgaWdub3JlIG5leHQKKworICBmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZh
dWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVs
dCc6IG9iaiB9OyB9CisKKyAgdmFyIF9FeGNlcHRpb24gPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0
KF9leGNlcHRpb24pOworCisgIGZ1bmN0aW9uIGNoZWNrUmV2aXNpb24oY29tcGlsZXJJbmZvKSB7
CisgICAgdmFyIGNvbXBpbGVyUmV2aXNpb24gPSBjb21waWxlckluZm8gJiYgY29tcGlsZXJJbmZv
WzBdIHx8IDEsCisgICAgICAgIGN1cnJlbnRSZXZpc2lvbiA9IF9iYXNlLkNPTVBJTEVSX1JFVklT
SU9OOworCisgICAgaWYgKGNvbXBpbGVyUmV2aXNpb24gIT09IGN1cnJlbnRSZXZpc2lvbikgewor
ICAgICAgaWYgKGNvbXBpbGVyUmV2aXNpb24gPCBjdXJyZW50UmV2aXNpb24pIHsKKyAgICAgICAg
dmFyIHJ1bnRpbWVWZXJzaW9ucyA9IF9iYXNlLlJFVklTSU9OX0NIQU5HRVNbY3VycmVudFJldmlz
aW9uXSwKKyAgICAgICAgICAgIGNvbXBpbGVyVmVyc2lvbnMgPSBfYmFzZS5SRVZJU0lPTl9DSEFO
R0VTW2NvbXBpbGVyUmV2aXNpb25dOworICAgICAgICB0aHJvdyBuZXcgX0V4Y2VwdGlvblsnZGVm
YXVsdCddKCdUZW1wbGF0ZSB3YXMgcHJlY29tcGlsZWQgd2l0aCBhbiBvbGRlciB2ZXJzaW9uIG9m
IEhhbmRsZWJhcnMgdGhhbiB0aGUgY3VycmVudCBydW50aW1lLiAnICsgJ1BsZWFzZSB1cGRhdGUg
eW91ciBwcmVjb21waWxlciB0byBhIG5ld2VyIHZlcnNpb24gKCcgKyBydW50aW1lVmVyc2lvbnMg
KyAnKSBvciBkb3duZ3JhZGUgeW91ciBydW50aW1lIHRvIGFuIG9sZGVyIHZlcnNpb24gKCcgKyBj
b21waWxlclZlcnNpb25zICsgJykuJyk7CisgICAgICB9IGVsc2UgeworICAgICAgICAvLyBVc2Ug
dGhlIGVtYmVkZGVkIHZlcnNpb24gaW5mbyBzaW5jZSB0aGUgcnVudGltZSBkb2Vzbid0IGtub3cg
YWJvdXQgdGhpcyByZXZpc2lvbiB5ZXQKKyAgICAgICAgdGhyb3cgbmV3IF9FeGNlcHRpb25bJ2Rl
ZmF1bHQnXSgnVGVtcGxhdGUgd2FzIHByZWNvbXBpbGVkIHdpdGggYSBuZXdlciB2ZXJzaW9uIG9m
IEhhbmRsZWJhcnMgdGhhbiB0aGUgY3VycmVudCBydW50aW1lLiAnICsgJ1BsZWFzZSB1cGRhdGUg
eW91ciBydW50aW1lIHRvIGEgbmV3ZXIgdmVyc2lvbiAoJyArIGNvbXBpbGVySW5mb1sxXSArICcp
LicpOworICAgICAgfQorICAgIH0KKyAgfQorCisgIGZ1bmN0aW9uIHRlbXBsYXRlKHRlbXBsYXRl
U3BlYywgZW52KSB7CisgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8KKyAgICBpZiAoIWVu
dikgeworICAgICAgdGhyb3cgbmV3IF9FeGNlcHRpb25bJ2RlZmF1bHQnXSgnTm8gZW52aXJvbm1l
bnQgcGFzc2VkIHRvIHRlbXBsYXRlJyk7CisgICAgfQorICAgIGlmICghdGVtcGxhdGVTcGVjIHx8
ICF0ZW1wbGF0ZVNwZWMubWFpbikgeworICAgICAgdGhyb3cgbmV3IF9FeGNlcHRpb25bJ2RlZmF1
bHQnXSgnVW5rbm93biB0ZW1wbGF0ZSBvYmplY3Q6ICcgKyB0eXBlb2YgdGVtcGxhdGVTcGVjKTsK
KyAgICB9CisKKyAgICB0ZW1wbGF0ZVNwZWMubWFpbi5kZWNvcmF0b3IgPSB0ZW1wbGF0ZVNwZWMu
bWFpbl9kOworCisgICAgLy8gTm90ZTogVXNpbmcgZW52LlZNIHJlZmVyZW5jZXMgcmF0aGVyIHRo
YW4gbG9jYWwgdmFyIHJlZmVyZW5jZXMgdGhyb3VnaG91dCB0aGlzIHNlY3Rpb24gdG8gYWxsb3cK
KyAgICAvLyBmb3IgZXh0ZXJuYWwgdXNlcnMgdG8gb3ZlcnJpZGUgdGhlc2UgYXMgcHN1ZWRvLXN1
cHBvcnRlZCBBUElzLgorICAgIGVudi5WTS5jaGVja1JldmlzaW9uKHRlbXBsYXRlU3BlYy5jb21w
aWxlcik7CisKKyAgICBmdW5jdGlvbiBpbnZva2VQYXJ0aWFsV3JhcHBlcihwYXJ0aWFsLCBjb250
ZXh0LCBvcHRpb25zKSB7CisgICAgICBpZiAob3B0aW9ucy5oYXNoKSB7CisgICAgICAgIGNvbnRl
eHQgPSBfdXRpbHMuZXh0ZW5kKHt9LCBjb250ZXh0LCBvcHRpb25zLmhhc2gpOworICAgICAgICBp
ZiAob3B0aW9ucy5pZHMpIHsKKyAgICAgICAgICBvcHRpb25zLmlkc1swXSA9IHRydWU7CisgICAg
ICAgIH0KKyAgICAgIH0KKworICAgICAgcGFydGlhbCA9IGVudi5WTS5yZXNvbHZlUGFydGlhbC5j
YWxsKHRoaXMsIHBhcnRpYWwsIGNvbnRleHQsIG9wdGlvbnMpOworICAgICAgdmFyIHJlc3VsdCA9
IGVudi5WTS5pbnZva2VQYXJ0aWFsLmNhbGwodGhpcywgcGFydGlhbCwgY29udGV4dCwgb3B0aW9u
cyk7CisKKyAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCAmJiBlbnYuY29tcGlsZSkgeworICAgICAg
ICBvcHRpb25zLnBhcnRpYWxzW29wdGlvbnMubmFtZV0gPSBlbnYuY29tcGlsZShwYXJ0aWFsLCB0
ZW1wbGF0ZVNwZWMuY29tcGlsZXJPcHRpb25zLCBlbnYpOworICAgICAgICByZXN1bHQgPSBvcHRp
b25zLnBhcnRpYWxzW29wdGlvbnMubmFtZV0oY29udGV4dCwgb3B0aW9ucyk7CisgICAgICB9Cisg
ICAgICBpZiAocmVzdWx0ICE9IG51bGwpIHsKKyAgICAgICAgaWYgKG9wdGlvbnMuaW5kZW50KSB7
CisgICAgICAgICAgdmFyIGxpbmVzID0gcmVzdWx0LnNwbGl0KCdcbicpOworICAgICAgICAgIGZv
ciAodmFyIGkgPSAwLCBsID0gbGluZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CisgICAgICAgICAg
ICBpZiAoIWxpbmVzW2ldICYmIGkgKyAxID09PSBsKSB7CisgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBsaW5lc1tpXSA9IG9wdGlvbnMuaW5kZW50ICsg
bGluZXNbaV07CisgICAgICAgICAgfQorICAgICAgICAgIHJlc3VsdCA9IGxpbmVzLmpvaW4oJ1xu
Jyk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHRocm93IG5ldyBfRXhjZXB0aW9uWydkZWZhdWx0J10oJ1RoZSBwYXJ0aWFsICcgKyBv
cHRpb25zLm5hbWUgKyAnIGNvdWxkIG5vdCBiZSBjb21waWxlZCB3aGVuIHJ1bm5pbmcgaW4gcnVu
dGltZS1vbmx5IG1vZGUnKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICAvLyBKdXN0IGFkZCB3YXRl
cgorICAgIHZhciBjb250YWluZXIgPSB7CisgICAgICBzdHJpY3Q6IGZ1bmN0aW9uIHN0cmljdChv
YmosIG5hbWUpIHsKKyAgICAgICAgaWYgKCEobmFtZSBpbiBvYmopKSB7CisgICAgICAgICAgdGhy
b3cgbmV3IF9FeGNlcHRpb25bJ2RlZmF1bHQnXSgnIicgKyBuYW1lICsgJyIgbm90IGRlZmluZWQg
aW4gJyArIG9iaik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG9ialtuYW1lXTsKKyAgICAg
IH0sCisgICAgICBsb29rdXA6IGZ1bmN0aW9uIGxvb2t1cChkZXB0aHMsIG5hbWUpIHsKKyAgICAg
ICAgdmFyIGxlbiA9IGRlcHRocy5sZW5ndGg7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
bGVuOyBpKyspIHsKKyAgICAgICAgICBpZiAoZGVwdGhzW2ldICYmIGRlcHRoc1tpXVtuYW1lXSAh
PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gZGVwdGhzW2ldW25hbWVdOworICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgfSwKKyAgICAgIGxhbWJkYTogZnVuY3Rpb24gbGFtYmRhKGN1
cnJlbnQsIGNvbnRleHQpIHsKKyAgICAgICAgcmV0dXJuIHR5cGVvZiBjdXJyZW50ID09PSAnZnVu
Y3Rpb24nID8gY3VycmVudC5jYWxsKGNvbnRleHQpIDogY3VycmVudDsKKyAgICAgIH0sCisKKyAg
ICAgIGVzY2FwZUV4cHJlc3Npb246IF91dGlscy5lc2NhcGVFeHByZXNzaW9uLAorICAgICAgaW52
b2tlUGFydGlhbDogaW52b2tlUGFydGlhbFdyYXBwZXIsCisKKyAgICAgIGZuOiBmdW5jdGlvbiBm
bihpKSB7CisgICAgICAgIHZhciByZXQgPSB0ZW1wbGF0ZVNwZWNbaV07CisgICAgICAgIHJldC5k
ZWNvcmF0b3IgPSB0ZW1wbGF0ZVNwZWNbaSArICdfZCddOworICAgICAgICByZXR1cm4gcmV0Owor
ICAgICAgfSwKKworICAgICAgcHJvZ3JhbXM6IFtdLAorICAgICAgcHJvZ3JhbTogZnVuY3Rpb24g
cHJvZ3JhbShpLCBkYXRhLCBkZWNsYXJlZEJsb2NrUGFyYW1zLCBibG9ja1BhcmFtcywgZGVwdGhz
KSB7CisgICAgICAgIHZhciBwcm9ncmFtV3JhcHBlciA9IHRoaXMucHJvZ3JhbXNbaV0sCisgICAg
ICAgICAgICBmbiA9IHRoaXMuZm4oaSk7CisgICAgICAgIGlmIChkYXRhIHx8IGRlcHRocyB8fCBi
bG9ja1BhcmFtcyB8fCBkZWNsYXJlZEJsb2NrUGFyYW1zKSB7CisgICAgICAgICAgcHJvZ3JhbVdy
YXBwZXIgPSB3cmFwUHJvZ3JhbSh0aGlzLCBpLCBmbiwgZGF0YSwgZGVjbGFyZWRCbG9ja1BhcmFt
cywgYmxvY2tQYXJhbXMsIGRlcHRocyk7CisgICAgICAgIH0gZWxzZSBpZiAoIXByb2dyYW1XcmFw
cGVyKSB7CisgICAgICAgICAgcHJvZ3JhbVdyYXBwZXIgPSB0aGlzLnByb2dyYW1zW2ldID0gd3Jh
cFByb2dyYW0odGhpcywgaSwgZm4pOworICAgICAgICB9CisgICAgICAgIHJldHVybiBwcm9ncmFt
V3JhcHBlcjsKKyAgICAgIH0sCisKKyAgICAgIGRhdGE6IGZ1bmN0aW9uIGRhdGEodmFsdWUsIGRl
cHRoKSB7CisgICAgICAgIHdoaWxlICh2YWx1ZSAmJiBkZXB0aC0tKSB7CisgICAgICAgICAgdmFs
dWUgPSB2YWx1ZS5fcGFyZW50OworICAgICAgICB9CisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAg
ICAgIH0sCisgICAgICBtZXJnZTogZnVuY3Rpb24gbWVyZ2UocGFyYW0sIGNvbW1vbikgeworICAg
ICAgICB2YXIgb2JqID0gcGFyYW0gfHwgY29tbW9uOworCisgICAgICAgIGlmIChwYXJhbSAmJiBj
b21tb24gJiYgcGFyYW0gIT09IGNvbW1vbikgeworICAgICAgICAgIG9iaiA9IF91dGlscy5leHRl
bmQoe30sIGNvbW1vbiwgcGFyYW0pOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG9iajsK
KyAgICAgIH0sCisKKyAgICAgIG5vb3A6IGVudi5WTS5ub29wLAorICAgICAgY29tcGlsZXJJbmZv
OiB0ZW1wbGF0ZVNwZWMuY29tcGlsZXIKKyAgICB9OworCisgICAgZnVuY3Rpb24gcmV0KGNvbnRl
eHQpIHsKKyAgICAgIHZhciBvcHRpb25zID0gYXJndW1lbnRzLmxlbmd0aCA8PSAxIHx8IGFyZ3Vt
ZW50c1sxXSA9PT0gdW5kZWZpbmVkID8ge30gOiBhcmd1bWVudHNbMV07CisKKyAgICAgIHZhciBk
YXRhID0gb3B0aW9ucy5kYXRhOworCisgICAgICByZXQuX3NldHVwKG9wdGlvbnMpOworICAgICAg
aWYgKCFvcHRpb25zLnBhcnRpYWwgJiYgdGVtcGxhdGVTcGVjLnVzZURhdGEpIHsKKyAgICAgICAg
ZGF0YSA9IGluaXREYXRhKGNvbnRleHQsIGRhdGEpOworICAgICAgfQorICAgICAgdmFyIGRlcHRo
cyA9IHVuZGVmaW5lZCwKKyAgICAgICAgICBibG9ja1BhcmFtcyA9IHRlbXBsYXRlU3BlYy51c2VC
bG9ja1BhcmFtcyA/IFtdIDogdW5kZWZpbmVkOworICAgICAgaWYgKHRlbXBsYXRlU3BlYy51c2VE
ZXB0aHMpIHsKKyAgICAgICAgaWYgKG9wdGlvbnMuZGVwdGhzKSB7CisgICAgICAgICAgZGVwdGhz
ID0gY29udGV4dCAhPSBvcHRpb25zLmRlcHRoc1swXSA/IFtjb250ZXh0XS5jb25jYXQob3B0aW9u
cy5kZXB0aHMpIDogb3B0aW9ucy5kZXB0aHM7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ZGVwdGhzID0gW2NvbnRleHRdOworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIGZ1bmN0aW9u
IG1haW4oY29udGV4dCAvKiwgb3B0aW9ucyovKSB7CisgICAgICAgIHJldHVybiAnJyArIHRlbXBs
YXRlU3BlYy5tYWluKGNvbnRhaW5lciwgY29udGV4dCwgY29udGFpbmVyLmhlbHBlcnMsIGNvbnRh
aW5lci5wYXJ0aWFscywgZGF0YSwgYmxvY2tQYXJhbXMsIGRlcHRocyk7CisgICAgICB9CisgICAg
ICBtYWluID0gZXhlY3V0ZURlY29yYXRvcnModGVtcGxhdGVTcGVjLm1haW4sIG1haW4sIGNvbnRh
aW5lciwgb3B0aW9ucy5kZXB0aHMgfHwgW10sIGRhdGEsIGJsb2NrUGFyYW1zKTsKKyAgICAgIHJl
dHVybiBtYWluKGNvbnRleHQsIG9wdGlvbnMpOworICAgIH0KKyAgICByZXQuaXNUb3AgPSB0cnVl
OworCisgICAgcmV0Ll9zZXR1cCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7CisgICAgICBpZiAoIW9w
dGlvbnMucGFydGlhbCkgeworICAgICAgICBjb250YWluZXIuaGVscGVycyA9IGNvbnRhaW5lci5t
ZXJnZShvcHRpb25zLmhlbHBlcnMsIGVudi5oZWxwZXJzKTsKKworICAgICAgICBpZiAodGVtcGxh
dGVTcGVjLnVzZVBhcnRpYWwpIHsKKyAgICAgICAgICBjb250YWluZXIucGFydGlhbHMgPSBjb250
YWluZXIubWVyZ2Uob3B0aW9ucy5wYXJ0aWFscywgZW52LnBhcnRpYWxzKTsKKyAgICAgICAgfQor
ICAgICAgICBpZiAodGVtcGxhdGVTcGVjLnVzZVBhcnRpYWwgfHwgdGVtcGxhdGVTcGVjLnVzZURl
Y29yYXRvcnMpIHsKKyAgICAgICAgICBjb250YWluZXIuZGVjb3JhdG9ycyA9IGNvbnRhaW5lci5t
ZXJnZShvcHRpb25zLmRlY29yYXRvcnMsIGVudi5kZWNvcmF0b3JzKTsKKyAgICAgICAgfQorICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgY29udGFpbmVyLmhlbHBlcnMgPSBvcHRpb25zLmhlbHBlcnM7
CisgICAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyA9IG9wdGlvbnMucGFydGlhbHM7CisgICAgICAg
IGNvbnRhaW5lci5kZWNvcmF0b3JzID0gb3B0aW9ucy5kZWNvcmF0b3JzOworICAgICAgfQorICAg
IH07CisKKyAgICByZXQuX2NoaWxkID0gZnVuY3Rpb24gKGksIGRhdGEsIGJsb2NrUGFyYW1zLCBk
ZXB0aHMpIHsKKyAgICAgIGlmICh0ZW1wbGF0ZVNwZWMudXNlQmxvY2tQYXJhbXMgJiYgIWJsb2Nr
UGFyYW1zKSB7CisgICAgICAgIHRocm93IG5ldyBfRXhjZXB0aW9uWydkZWZhdWx0J10oJ211c3Qg
cGFzcyBibG9jayBwYXJhbXMnKTsKKyAgICAgIH0KKyAgICAgIGlmICh0ZW1wbGF0ZVNwZWMudXNl
RGVwdGhzICYmICFkZXB0aHMpIHsKKyAgICAgICAgdGhyb3cgbmV3IF9FeGNlcHRpb25bJ2RlZmF1
bHQnXSgnbXVzdCBwYXNzIHBhcmVudCBkZXB0aHMnKTsKKyAgICAgIH0KKworICAgICAgcmV0dXJu
IHdyYXBQcm9ncmFtKGNvbnRhaW5lciwgaSwgdGVtcGxhdGVTcGVjW2ldLCBkYXRhLCAwLCBibG9j
a1BhcmFtcywgZGVwdGhzKTsKKyAgICB9OworICAgIHJldHVybiByZXQ7CisgIH0KKworICBmdW5j
dGlvbiB3cmFwUHJvZ3JhbShjb250YWluZXIsIGksIGZuLCBkYXRhLCBkZWNsYXJlZEJsb2NrUGFy
YW1zLCBibG9ja1BhcmFtcywgZGVwdGhzKSB7CisgICAgZnVuY3Rpb24gcHJvZyhjb250ZXh0KSB7
CisgICAgICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMSB8fCBhcmd1bWVudHNb
MV0gPT09IHVuZGVmaW5lZCA/IHt9IDogYXJndW1lbnRzWzFdOworCisgICAgICB2YXIgY3VycmVu
dERlcHRocyA9IGRlcHRoczsKKyAgICAgIGlmIChkZXB0aHMgJiYgY29udGV4dCAhPSBkZXB0aHNb
MF0pIHsKKyAgICAgICAgY3VycmVudERlcHRocyA9IFtjb250ZXh0XS5jb25jYXQoZGVwdGhzKTsK
KyAgICAgIH0KKworICAgICAgcmV0dXJuIGZuKGNvbnRhaW5lciwgY29udGV4dCwgY29udGFpbmVy
LmhlbHBlcnMsIGNvbnRhaW5lci5wYXJ0aWFscywgb3B0aW9ucy5kYXRhIHx8IGRhdGEsIGJsb2Nr
UGFyYW1zICYmIFtvcHRpb25zLmJsb2NrUGFyYW1zXS5jb25jYXQoYmxvY2tQYXJhbXMpLCBjdXJy
ZW50RGVwdGhzKTsKKyAgICB9CisKKyAgICBwcm9nID0gZXhlY3V0ZURlY29yYXRvcnMoZm4sIHBy
b2csIGNvbnRhaW5lciwgZGVwdGhzLCBkYXRhLCBibG9ja1BhcmFtcyk7CisKKyAgICBwcm9nLnBy
b2dyYW0gPSBpOworICAgIHByb2cuZGVwdGggPSBkZXB0aHMgPyBkZXB0aHMubGVuZ3RoIDogMDsK
KyAgICBwcm9nLmJsb2NrUGFyYW1zID0gZGVjbGFyZWRCbG9ja1BhcmFtcyB8fCAwOworICAgIHJl
dHVybiBwcm9nOworICB9CisKKyAgZnVuY3Rpb24gcmVzb2x2ZVBhcnRpYWwocGFydGlhbCwgY29u
dGV4dCwgb3B0aW9ucykgeworICAgIGlmICghcGFydGlhbCkgeworICAgICAgaWYgKG9wdGlvbnMu
bmFtZSA9PT0gJ0BwYXJ0aWFsLWJsb2NrJykgeworICAgICAgICB2YXIgZGF0YSA9IG9wdGlvbnMu
ZGF0YTsKKyAgICAgICAgd2hpbGUgKGRhdGFbJ3BhcnRpYWwtYmxvY2snXSA9PT0gbm9vcCkgewor
ICAgICAgICAgIGRhdGEgPSBkYXRhLl9wYXJlbnQ7CisgICAgICAgIH0KKyAgICAgICAgcGFydGlh
bCA9IGRhdGFbJ3BhcnRpYWwtYmxvY2snXTsKKyAgICAgICAgZGF0YVsncGFydGlhbC1ibG9jaydd
ID0gbm9vcDsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHBhcnRpYWwgPSBvcHRpb25zLnBhcnRp
YWxzW29wdGlvbnMubmFtZV07CisgICAgICB9CisgICAgfSBlbHNlIGlmICghcGFydGlhbC5jYWxs
ICYmICFvcHRpb25zLm5hbWUpIHsKKyAgICAgIC8vIFRoaXMgaXMgYSBkeW5hbWljIHBhcnRpYWwg
dGhhdCByZXR1cm5lZCBhIHN0cmluZworICAgICAgb3B0aW9ucy5uYW1lID0gcGFydGlhbDsKKyAg
ICAgIHBhcnRpYWwgPSBvcHRpb25zLnBhcnRpYWxzW3BhcnRpYWxdOworICAgIH0KKyAgICByZXR1
cm4gcGFydGlhbDsKKyAgfQorCisgIGZ1bmN0aW9uIGludm9rZVBhcnRpYWwocGFydGlhbCwgY29u
dGV4dCwgb3B0aW9ucykgeworICAgIG9wdGlvbnMucGFydGlhbCA9IHRydWU7CisgICAgaWYgKG9w
dGlvbnMuaWRzKSB7CisgICAgICBvcHRpb25zLmRhdGEuY29udGV4dFBhdGggPSBvcHRpb25zLmlk
c1swXSB8fCBvcHRpb25zLmRhdGEuY29udGV4dFBhdGg7CisgICAgfQorCisgICAgdmFyIHBhcnRp
YWxCbG9jayA9IHVuZGVmaW5lZDsKKyAgICBpZiAob3B0aW9ucy5mbiAmJiBvcHRpb25zLmZuICE9
PSBub29wKSB7CisgICAgICBvcHRpb25zLmRhdGEgPSBfYmFzZS5jcmVhdGVGcmFtZShvcHRpb25z
LmRhdGEpOworICAgICAgcGFydGlhbEJsb2NrID0gb3B0aW9ucy5kYXRhWydwYXJ0aWFsLWJsb2Nr
J10gPSBvcHRpb25zLmZuOworCisgICAgICBpZiAocGFydGlhbEJsb2NrLnBhcnRpYWxzKSB7Cisg
ICAgICAgIG9wdGlvbnMucGFydGlhbHMgPSBfdXRpbHMuZXh0ZW5kKHt9LCBvcHRpb25zLnBhcnRp
YWxzLCBwYXJ0aWFsQmxvY2sucGFydGlhbHMpOworICAgICAgfQorICAgIH0KKworICAgIGlmIChw
YXJ0aWFsID09PSB1bmRlZmluZWQgJiYgcGFydGlhbEJsb2NrKSB7CisgICAgICBwYXJ0aWFsID0g
cGFydGlhbEJsb2NrOworICAgIH0KKworICAgIGlmIChwYXJ0aWFsID09PSB1bmRlZmluZWQpIHsK
KyAgICAgIHRocm93IG5ldyBfRXhjZXB0aW9uWydkZWZhdWx0J10oJ1RoZSBwYXJ0aWFsICcgKyBv
cHRpb25zLm5hbWUgKyAnIGNvdWxkIG5vdCBiZSBmb3VuZCcpOworICAgIH0gZWxzZSBpZiAocGFy
dGlhbCBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7CisgICAgICByZXR1cm4gcGFydGlhbChjb250ZXh0
LCBvcHRpb25zKTsKKyAgICB9CisgIH0KKworICBmdW5jdGlvbiBub29wKCkgeworICAgIHJldHVy
biAnJzsKKyAgfQorCisgIGZ1bmN0aW9uIGluaXREYXRhKGNvbnRleHQsIGRhdGEpIHsKKyAgICBp
ZiAoIWRhdGEgfHwgISgncm9vdCcgaW4gZGF0YSkpIHsKKyAgICAgIGRhdGEgPSBkYXRhID8gX2Jh
c2UuY3JlYXRlRnJhbWUoZGF0YSkgOiB7fTsKKyAgICAgIGRhdGEucm9vdCA9IGNvbnRleHQ7Cisg
ICAgfQorICAgIHJldHVybiBkYXRhOworICB9CisKKyAgZnVuY3Rpb24gZXhlY3V0ZURlY29yYXRv
cnMoZm4sIHByb2csIGNvbnRhaW5lciwgZGVwdGhzLCBkYXRhLCBibG9ja1BhcmFtcykgeworICAg
IGlmIChmbi5kZWNvcmF0b3IpIHsKKyAgICAgIHZhciBwcm9wcyA9IHt9OworICAgICAgcHJvZyA9
IGZuLmRlY29yYXRvcihwcm9nLCBwcm9wcywgY29udGFpbmVyLCBkZXB0aHMgJiYgZGVwdGhzWzBd
LCBkYXRhLCBibG9ja1BhcmFtcywgZGVwdGhzKTsKKyAgICAgIF91dGlscy5leHRlbmQocHJvZywg
cHJvcHMpOworICAgIH0KKyAgICByZXR1cm4gcHJvZzsKKyAgfQorfSk7CisvLyMgc291cmNlTWFw
cGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6
YjNWeVkyVnpJanBiSWk0dUx5NHVMeTR1TDJ4cFlpOW9ZVzVrYkdWaVlYSnpMM0oxYm5ScGJXVXVh
bk1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanM3T3pzN096czdPenM3T3pzN096
dEJRVWxQTEZkQlFWTXNZVUZCWVN4RFFVRkRMRmxCUVZrc1JVRkJSVHRCUVVNeFF5eFJRVUZOTEdk
Q1FVRm5RaXhIUVVGSExGbEJRVmtzU1VGQlNTeFpRVUZaTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxC
UVVrc1EwRkJRenRSUVVOMlJDeGxRVUZsTEZOQlNtUXNhVUpCUVdsQ0xFRkJTV2xDTEVOQlFVTTdP
MEZCUlRGRExGRkJRVWtzWjBKQlFXZENMRXRCUVVzc1pVRkJaU3hGUVVGRk8wRkJRM2hETEZWQlFV
a3NaMEpCUVdkQ0xFZEJRVWNzWlVGQlpTeEZRVUZGTzBGQlEzUkRMRmxCUVUwc1pVRkJaU3hIUVVG
SExFMUJVa1lzWjBKQlFXZENMRU5CVVVjc1pVRkJaU3hEUVVGRE8xbEJRMjVFTEdkQ1FVRm5RaXhI
UVVGSExFMUJWRWdzWjBKQlFXZENMRU5CVTBrc1owSkJRV2RDTEVOQlFVTXNRMEZCUXp0QlFVTTFS
Q3hqUVVGTkxEQkNRVUZqTEhsR1FVRjVSaXhIUVVOMlJ5eHhSRUZCY1VRc1IwRkJSeXhsUVVGbExF
ZEJRVWNzYlVSQlFXMUVMRWRCUVVjc1owSkJRV2RDTEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVN
N1QwRkRhRXNzVFVGQlRUczdRVUZGVEN4alFVRk5MREJDUVVGakxIZEdRVUYzUml4SFFVTjBSeXhw
UkVGQmFVUXNSMEZCUnl4WlFVRlpMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeERR
VUZETEVOQlFVTTdUMEZEYmtZN1MwRkRSanRIUVVOR096dEJRVVZOTEZkQlFWTXNVVUZCVVN4RFFV
RkRMRmxCUVZrc1JVRkJSU3hIUVVGSExFVkJRVVU3TzBGQlJURkRMRkZCUVVrc1EwRkJReXhIUVVG
SExFVkJRVVU3UVVGRFVpeFpRVUZOTERCQ1FVRmpMRzFEUVVGdFF5eERRVUZETEVOQlFVTTdTMEZE
TVVRN1FVRkRSQ3hSUVVGSkxFTkJRVU1zV1VGQldTeEpRVUZKTEVOQlFVTXNXVUZCV1N4RFFVRkRM
RWxCUVVrc1JVRkJSVHRCUVVOMlF5eFpRVUZOTERCQ1FVRmpMREpDUVVFeVFpeEhRVUZITEU5QlFV
OHNXVUZCV1N4RFFVRkRMRU5CUVVNN1MwRkRlRVU3TzBGQlJVUXNaMEpCUVZrc1EwRkJReXhKUVVG
SkxFTkJRVU1zVTBGQlV5eEhRVUZITEZsQlFWa3NRMEZCUXl4TlFVRk5MRU5CUVVNN096czdRVUZK
YkVRc1QwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eGhRVUZoTEVOQlFVTXNXVUZCV1N4RFFVRkRM
RkZCUVZFc1EwRkJReXhEUVVGRE96dEJRVVUxUXl4aFFVRlRMRzlDUVVGdlFpeERRVUZETEU5QlFV
OHNSVUZCUlN4UFFVRlBMRVZCUVVVc1QwRkJUeXhGUVVGRk8wRkJRM1pFTEZWQlFVa3NUMEZCVHl4
RFFVRkRMRWxCUVVrc1JVRkJSVHRCUVVOb1FpeGxRVUZQTEVkQlFVY3NUMEZCVFN4TlFVRk5MRU5C
UVVNc1JVRkJSU3hGUVVGRkxFOUJRVThzUlVGQlJTeFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRM
RU5CUVVNN1FVRkRiRVFzV1VGQlNTeFBRVUZQTEVOQlFVTXNSMEZCUnl4RlFVRkZPMEZCUTJZc2FV
SkJRVThzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVG
RE8xTkJRM1pDTzA5QlEwWTdPMEZCUlVRc1lVRkJUeXhIUVVGSExFZEJRVWNzUTBGQlF5eEZRVUZG
TEVOQlFVTXNZMEZCWXl4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFVkJRVVVzVDBGQlR5eEZR
VUZGTEU5QlFVOHNSVUZCUlN4UFFVRlBMRU5CUVVNc1EwRkJRenRCUVVOMFJTeFZRVUZKTEUxQlFV
MHNSMEZCUnl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExHRkJRV0VzUTBGQlF5eEpRVUZKTEVO
QlFVTXNTVUZCU1N4RlFVRkZMRTlCUVU4c1JVRkJSU3hQUVVGUExFVkJRVVVzVDBGQlR5eERRVUZE
TEVOQlFVTTdPMEZCUlhoRkxGVkJRVWtzVFVGQlRTeEpRVUZKTEVsQlFVa3NTVUZCU1N4SFFVRkhM
RU5CUVVNc1QwRkJUeXhGUVVGRk8wRkJRMnBETEdWQlFVOHNRMEZCUXl4UlFVRlJMRU5CUVVNc1Qw
RkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVkQlFVY3NRMEZCUXl4UFFVRlBMRU5CUVVN
c1QwRkJUeXhGUVVGRkxGbEJRVmtzUTBGQlF5eGxRVUZsTEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5C
UVVNN1FVRkRla1lzWTBGQlRTeEhRVUZITEU5QlFVOHNRMEZCUXl4UlFVRlJMRU5CUVVNc1QwRkJU
eXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEU5QlFVOHNSVUZCUlN4UFFVRlBMRU5CUVVNc1Ew
RkJRenRQUVVNelJEdEJRVU5FTEZWQlFVa3NUVUZCVFN4SlFVRkpMRWxCUVVrc1JVRkJSVHRCUVVO
c1FpeFpRVUZKTEU5QlFVOHNRMEZCUXl4TlFVRk5MRVZCUVVVN1FVRkRiRUlzWTBGQlNTeExRVUZM
TEVkQlFVY3NUVUZCVFN4RFFVRkRMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dEJR
VU12UWl4bFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFV
Y3NTMEZCU3l4RFFVRkRMRTFCUVUwc1JVRkJSU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVO
QlFVTXNSVUZCUlN4RlFVRkZPMEZCUXpWRExHZENRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5C
UVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEV0QlFVc3NRMEZCUXl4RlFVRkZP
MEZCUXpWQ0xHOUNRVUZOTzJGQlExQTdPMEZCUlVRc2FVSkJRVXNzUTBGQlF5eERRVUZETEVOQlFV
TXNSMEZCUnl4UFFVRlBMRU5CUVVNc1RVRkJUU3hIUVVGSExFdEJRVXNzUTBGQlF5eERRVUZETEVO
QlFVTXNRMEZCUXp0WFFVTjBRenRCUVVORUxHZENRVUZOTEVkQlFVY3NTMEZCU3l4RFFVRkRMRWxC
UVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dFRRVU16UWp0QlFVTkVMR1ZCUVU4c1RVRkJU
U3hEUVVGRE8wOUJRMllzVFVGQlRUdEJRVU5NTEdOQlFVMHNNRUpCUVdNc1kwRkJZeXhIUVVGSExF
OUJRVThzUTBGQlF5eEpRVUZKTEVkQlFVY3NNRVJCUVRCRUxFTkJRVU1zUTBGQlF6dFBRVU5xU0R0
TFFVTkdPenM3UVVGSFJDeFJRVUZKTEZOQlFWTXNSMEZCUnp0QlFVTmtMRmxCUVUwc1JVRkJSU3hu
UWtGQlV5eEhRVUZITEVWQlFVVXNTVUZCU1N4RlFVRkZPMEZCUXpGQ0xGbEJRVWtzUlVGQlJTeEpR
VUZKTEVsQlFVa3NSMEZCUnl4RFFVRkJMRUZCUVVNc1JVRkJSVHRCUVVOc1FpeG5Ra0ZCVFN3d1Fr
RkJZeXhIUVVGSExFZEJRVWNzU1VGQlNTeEhRVUZITEcxQ1FVRnRRaXhIUVVGSExFZEJRVWNzUTBG
QlF5eERRVUZETzFOQlF6ZEVPMEZCUTBRc1pVRkJUeXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZE
TEVOQlFVTTdUMEZEYkVJN1FVRkRSQ3haUVVGTkxFVkJRVVVzWjBKQlFWTXNUVUZCVFN4RlFVRkZM
RWxCUVVrc1JVRkJSVHRCUVVNM1FpeFpRVUZOTEVkQlFVY3NSMEZCUnl4TlFVRk5MRU5CUVVNc1RV
RkJUU3hEUVVGRE8wRkJRekZDTEdGQlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVG
RkxFTkJRVU1zUjBGQlJ5eEhRVUZITEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVN1FVRkROVUlz
WTBGQlNTeE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1RVRkJUU3hEUVVGRExFTkJR
VU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRWxCUVVrc1JVRkJSVHRCUVVONFF5
eHRRa0ZCVHl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVO
QlFVTTdWMEZEZUVJN1UwRkRSanRQUVVOR08wRkJRMFFzV1VGQlRTeEZRVUZGTEdkQ1FVRlRMRTlC
UVU4c1JVRkJSU3hQUVVGUExFVkJRVVU3UVVGRGFrTXNaVUZCVHl4UFFVRlBMRTlCUVU4c1MwRkJT
eXhWUVVGVkxFZEJRVWNzVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1Iw
RkJSeXhQUVVGUExFTkJRVU03VDBGRGVFVTdPMEZCUlVRc2MwSkJRV2RDTEVWQlFVVXNUMEZCVFN4
blFrRkJaMEk3UVVGRGVFTXNiVUpCUVdFc1JVRkJSU3h2UWtGQmIwSTdPMEZCUlc1RExGRkJRVVVz
UlVGQlJTeFpRVUZUTEVOQlFVTXNSVUZCUlR0QlFVTmtMRmxCUVVrc1IwRkJSeXhIUVVGSExGbEJR
VmtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTXhRaXhYUVVGSExFTkJRVU1zVTBGQlV5
eEhRVUZITEZsQlFWa3NRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU03UVVG
RGRrTXNaVUZCVHl4SFFVRkhMRU5CUVVNN1QwRkRXanM3UVVGRlJDeGpRVUZSTEVWQlFVVXNSVUZC
UlR0QlFVTmFMR0ZCUVU4c1JVRkJSU3hwUWtGQlV5eERRVUZETEVWQlFVVXNTVUZCU1N4RlFVRkZM
RzFDUVVGdFFpeEZRVUZGTEZkQlFWY3NSVUZCUlN4TlFVRk5MRVZCUVVVN1FVRkRia1VzV1VGQlNT
eGpRVUZqTEVkQlFVY3NTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU03V1VG
RGFrTXNSVUZCUlN4SFFVRkhMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZE
TEVOQlFVTTdRVUZEY0VJc1dVRkJTU3hKUVVGSkxFbEJRVWtzVFVGQlRTeEpRVUZKTEZkQlFWY3NT
VUZCU1N4dFFrRkJiVUlzUlVGQlJUdEJRVU40UkN4M1FrRkJZeXhIUVVGSExGZEJRVmNzUTBGQlF5
eEpRVUZKTEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVc1JVRkJSU3hKUVVGSkxFVkJRVVVzYlVK
QlFXMUNMRVZCUVVVc1YwRkJWeXhGUVVGRkxFMUJRVTBzUTBGQlF5eERRVUZETzFOQlF6TkdMRTFC
UVUwc1NVRkJTU3hEUVVGRExHTkJRV01zUlVGQlJUdEJRVU14UWl4M1FrRkJZeXhIUVVGSExFbEJR
VWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1YwRkJWeXhEUVVGRExF
bEJRVWtzUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNN1UwRkRPVVE3UVVG
RFJDeGxRVUZQTEdOQlFXTXNRMEZCUXp0UFFVTjJRanM3UVVGRlJDeFZRVUZKTEVWQlFVVXNZMEZC
VXl4TFFVRkxMRVZCUVVVc1MwRkJTeXhGUVVGRk8wRkJRek5DTEdWQlFVOHNTMEZCU3l4SlFVRkpM
RXRCUVVzc1JVRkJSU3hGUVVGRk8wRkJRM1pDTEdWQlFVc3NSMEZCUnl4TFFVRkxMRU5CUVVNc1Qw
RkJUeXhEUVVGRE8xTkJRM1pDTzBGQlEwUXNaVUZCVHl4TFFVRkxMRU5CUVVNN1QwRkRaRHRCUVVO
RUxGZEJRVXNzUlVGQlJTeGxRVUZUTEV0QlFVc3NSVUZCUlN4TlFVRk5MRVZCUVVVN1FVRkROMElz
V1VGQlNTeEhRVUZITEVkQlFVY3NTMEZCU3l4SlFVRkpMRTFCUVUwc1EwRkJRenM3UVVGRk1VSXNX
VUZCU1N4TFFVRkxMRWxCUVVrc1RVRkJUU3hKUVVGTExFdEJRVXNzUzBGQlN5eE5RVUZOTEVGQlFV
TXNSVUZCUlR0QlFVTjZReXhoUVVGSExFZEJRVWNzVDBGQlRTeE5RVUZOTEVOQlFVTXNSVUZCUlN4
RlFVRkZMRTFCUVUwc1JVRkJSU3hMUVVGTExFTkJRVU1zUTBGQlF6dFRRVU4yUXpzN1FVRkZSQ3hs
UVVGUExFZEJRVWNzUTBGQlF6dFBRVU5hT3p0QlFVVkVMRlZCUVVrc1JVRkJSU3hIUVVGSExFTkJR
VU1zUlVGQlJTeERRVUZETEVsQlFVazdRVUZEYWtJc2EwSkJRVmtzUlVGQlJTeFpRVUZaTEVOQlFV
TXNVVUZCVVR0TFFVTndReXhEUVVGRE96dEJRVVZHTEdGQlFWTXNSMEZCUnl4RFFVRkRMRTlCUVU4
c1JVRkJaMEk3VlVGQlpDeFBRVUZQTEhsRVFVRkhMRVZCUVVVN08wRkJRMmhETEZWQlFVa3NTVUZC
U1N4SFFVRkhMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU03TzBGQlJYaENMRk5CUVVjc1EwRkJR
eXhOUVVGTkxFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdRVUZEY0VJc1ZVRkJTU3hEUVVGRExF
OUJRVThzUTBGQlF5eFBRVUZQTEVsQlFVa3NXVUZCV1N4RFFVRkRMRTlCUVU4c1JVRkJSVHRCUVVN
MVF5eFpRVUZKTEVkQlFVY3NVVUZCVVN4RFFVRkRMRTlCUVU4c1JVRkJSU3hKUVVGSkxFTkJRVU1z
UTBGQlF6dFBRVU5vUXp0QlFVTkVMRlZCUVVrc1RVRkJUU3haUVVGQk8xVkJRMDRzVjBGQlZ5eEhR
VUZITEZsQlFWa3NRMEZCUXl4alFVRmpMRWRCUVVjc1JVRkJSU3hIUVVGSExGTkJRVk1zUTBGQlF6
dEJRVU12UkN4VlFVRkpMRmxCUVZrc1EwRkJReXhUUVVGVExFVkJRVVU3UVVGRE1VSXNXVUZCU1N4
UFFVRlBMRU5CUVVNc1RVRkJUU3hGUVVGRk8wRkJRMnhDTEdkQ1FVRk5MRWRCUVVjc1QwRkJUeXhK
UVVGSkxFOUJRVThzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJR
eXhQUVVGUExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNUMEZCVHl4RFFVRkRMRTFCUVUwc1Ew
RkJReXhIUVVGSExFOUJRVThzUTBGQlF5eE5RVUZOTEVOQlFVTTdVMEZETTBZc1RVRkJUVHRCUVVO
TUxHZENRVUZOTEVkQlFVY3NRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenRUUVVOd1FqdFBRVU5H
T3p0QlFVVkVMR1ZCUVZNc1NVRkJTU3hEUVVGRExFOUJRVThzWjBKQlFXVTdRVUZEYkVNc1pVRkJU
eXhGUVVGRkxFZEJRVWNzV1VGQldTeERRVUZETEVsQlFVa3NRMEZCUXl4VFFVRlRMRVZCUVVVc1Qw
RkJUeXhGUVVGRkxGTkJRVk1zUTBGQlF5eFBRVUZQTEVWQlFVVXNVMEZCVXl4RFFVRkRMRkZCUVZF
c1JVRkJSU3hKUVVGSkxFVkJRVVVzVjBGQlZ5eEZRVUZGTEUxQlFVMHNRMEZCUXl4RFFVRkRPMDlC
UTNKSU8wRkJRMFFzVlVGQlNTeEhRVUZITEdsQ1FVRnBRaXhEUVVGRExGbEJRVmtzUTBGQlF5eEpR
VUZKTEVWQlFVVXNTVUZCU1N4RlFVRkZMRk5CUVZNc1JVRkJSU3hQUVVGUExFTkJRVU1zVFVGQlRT
eEpRVUZKTEVWQlFVVXNSVUZCUlN4SlFVRkpMRVZCUVVVc1YwRkJWeXhEUVVGRExFTkJRVU03UVVG
RGRFY3NZVUZCVHl4SlFVRkpMRU5CUVVNc1QwRkJUeXhGUVVGRkxFOUJRVThzUTBGQlF5eERRVUZE
TzB0QlF5OUNPMEZCUTBRc1QwRkJSeXhEUVVGRExFdEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTTdP
MEZCUldwQ0xFOUJRVWNzUTBGQlF5eE5RVUZOTEVkQlFVY3NWVUZCVXl4UFFVRlBMRVZCUVVVN1FV
RkROMElzVlVGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4UFFVRlBMRVZCUVVVN1FVRkRjRUlzYVVK
QlFWTXNRMEZCUXl4UFFVRlBMRWRCUVVjc1UwRkJVeXhEUVVGRExFdEJRVXNzUTBGQlF5eFBRVUZQ
TEVOQlFVTXNUMEZCVHl4RlFVRkZMRWRCUVVjc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF6czdR
VUZGYkVVc1dVRkJTU3haUVVGWkxFTkJRVU1zVlVGQlZTeEZRVUZGTzBGQlF6TkNMRzFDUVVGVExF
TkJRVU1zVVVGQlVTeEhRVUZITEZOQlFWTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1QwRkJUeXhEUVVG
RExGRkJRVkVzUlVGQlJTeEhRVUZITEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNN1UwRkRkRVU3
UVVGRFJDeFpRVUZKTEZsQlFWa3NRMEZCUXl4VlFVRlZMRWxCUVVrc1dVRkJXU3hEUVVGRExHRkJR
V0VzUlVGQlJUdEJRVU42UkN4dFFrRkJVeXhEUVVGRExGVkJRVlVzUjBGQlJ5eFRRVUZUTEVOQlFV
TXNTMEZCU3l4RFFVRkRMRTlCUVU4c1EwRkJReXhWUVVGVkxFVkJRVVVzUjBGQlJ5eERRVUZETEZW
QlFWVXNRMEZCUXl4RFFVRkRPMU5CUXpWRk8wOUJRMFlzVFVGQlRUdEJRVU5NTEdsQ1FVRlRMRU5C
UVVNc1QwRkJUeXhIUVVGSExFOUJRVThzUTBGQlF5eFBRVUZQTEVOQlFVTTdRVUZEY0VNc2FVSkJR
Vk1zUTBGQlF5eFJRVUZSTEVkQlFVY3NUMEZCVHl4RFFVRkRMRkZCUVZFc1EwRkJRenRCUVVOMFF5
eHBRa0ZCVXl4RFFVRkRMRlZCUVZVc1IwRkJSeXhQUVVGUExFTkJRVU1zVlVGQlZTeERRVUZETzA5
QlF6TkRPMHRCUTBZc1EwRkJRenM3UVVGRlJpeFBRVUZITEVOQlFVTXNUVUZCVFN4SFFVRkhMRlZC
UVZNc1EwRkJReXhGUVVGRkxFbEJRVWtzUlVGQlJTeFhRVUZYTEVWQlFVVXNUVUZCVFN4RlFVRkZP
MEZCUTJ4RUxGVkJRVWtzV1VGQldTeERRVUZETEdOQlFXTXNTVUZCU1N4RFFVRkRMRmRCUVZjc1JV
RkJSVHRCUVVNdlF5eGpRVUZOTERCQ1FVRmpMSGRDUVVGM1FpeERRVUZETEVOQlFVTTdUMEZETDBN
N1FVRkRSQ3hWUVVGSkxGbEJRVmtzUTBGQlF5eFRRVUZUTEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZC
UVVVN1FVRkRja01zWTBGQlRTd3dRa0ZCWXl4NVFrRkJlVUlzUTBGQlF5eERRVUZETzA5QlEyaEVP
enRCUVVWRUxHRkJRVThzVjBGQlZ5eERRVUZETEZOQlFWTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1dV
RkJXU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVsQlFVa3NSVUZCUlN4RFFVRkRMRVZCUVVV
c1YwRkJWeXhGUVVGRkxFMUJRVTBzUTBGQlF5eERRVUZETzB0QlEycEdMRU5CUVVNN1FVRkRSaXhY
UVVGUExFZEJRVWNzUTBGQlF6dEhRVU5hT3p0QlFVVk5MRmRCUVZNc1YwRkJWeXhEUVVGRExGTkJR
Vk1zUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlN4RlFVRkZMRWxCUVVrc1JVRkJSU3h0UWtGQmJV
SXNSVUZCUlN4WFFVRlhMRVZCUVVVc1RVRkJUU3hGUVVGRk8wRkJRelZHTEdGQlFWTXNTVUZCU1N4
RFFVRkRMRTlCUVU4c1JVRkJaMEk3VlVGQlpDeFBRVUZQTEhsRVFVRkhMRVZCUVVVN08wRkJRMnBE
TEZWQlFVa3NZVUZCWVN4SFFVRkhMRTFCUVUwc1EwRkJRenRCUVVNelFpeFZRVUZKTEUxQlFVMHNT
VUZCU1N4UFFVRlBMRWxCUVVrc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTzBGQlEy
eERMSEZDUVVGaExFZEJRVWNzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVN
c1RVRkJUU3hEUVVGRExFTkJRVU03VDBGRE1VTTdPMEZCUlVRc1lVRkJUeXhGUVVGRkxFTkJRVU1z
VTBGQlV5eEZRVU5tTEU5QlFVOHNSVUZEVUN4VFFVRlRMRU5CUVVNc1QwRkJUeXhGUVVGRkxGTkJR
Vk1zUTBGQlF5eFJRVUZSTEVWQlEzSkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFbEJRVWtzU1VGQlNT
eEZRVU53UWl4WFFVRlhMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zVjBGQlZ5eERRVUZETEVO
QlFVTXNUVUZCVFN4RFFVRkRMRmRCUVZjc1EwRkJReXhGUVVONFJDeGhRVUZoTEVOQlFVTXNRMEZC
UXp0TFFVTndRanM3UVVGRlJDeFJRVUZKTEVkQlFVY3NhVUpCUVdsQ0xFTkJRVU1zUlVGQlJTeEZR
VUZGTEVsQlFVa3NSVUZCUlN4VFFVRlRMRVZCUVVVc1RVRkJUU3hGUVVGRkxFbEJRVWtzUlVGQlJT
eFhRVUZYTEVOQlFVTXNRMEZCUXpzN1FVRkZla1VzVVVGQlNTeERRVUZETEU5QlFVOHNSMEZCUnl4
RFFVRkRMRU5CUVVNN1FVRkRha0lzVVVGQlNTeERRVUZETEV0QlFVc3NSMEZCUnl4TlFVRk5MRWRC
UVVjc1RVRkJUU3hEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVOQlFVTTdRVUZEZUVNc1VVRkJT
U3hEUVVGRExGZEJRVmNzUjBGQlJ5eHRRa0ZCYlVJc1NVRkJTU3hEUVVGRExFTkJRVU03UVVGRE5V
TXNWMEZCVHl4SlFVRkpMRU5CUVVNN1IwRkRZanM3UVVGRlRTeFhRVUZUTEdOQlFXTXNRMEZCUXl4
UFFVRlBMRVZCUVVVc1QwRkJUeXhGUVVGRkxFOUJRVThzUlVGQlJUdEJRVU40UkN4UlFVRkpMRU5C
UVVNc1QwRkJUeXhGUVVGRk8wRkJRMW9zVlVGQlNTeFBRVUZQTEVOQlFVTXNTVUZCU1N4TFFVRkxM
R2RDUVVGblFpeEZRVUZGTzBGQlEzSkRMRmxCUVVrc1NVRkJTU3hIUVVGSExFOUJRVThzUTBGQlF5
eEpRVUZKTEVOQlFVTTdRVUZEZUVJc1pVRkJUeXhKUVVGSkxFTkJRVU1zWlVGQlpTeERRVUZETEV0
QlFVc3NTVUZCU1N4RlFVRkZPMEZCUTNKRExHTkJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUMEZC
VHl4RFFVRkRPMU5CUTNKQ08wRkJRMFFzWlVGQlR5eEhRVUZITEVsQlFVa3NRMEZCUXl4bFFVRmxM
RU5CUVVNc1EwRkJRenRCUVVOb1F5eFpRVUZKTEVOQlFVTXNaVUZCWlN4RFFVRkRMRWRCUVVjc1NV
RkJTU3hEUVVGRE8wOUJRemxDTEUxQlFVMDdRVUZEVEN4bFFVRlBMRWRCUVVjc1QwRkJUeXhEUVVG
RExGRkJRVkVzUTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1QwRkRNVU03
UzBGRFJpeE5RVUZOTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1NVRkJTU3hKUVVGSkxFTkJR
VU1zVDBGQlR5eERRVUZETEVsQlFVa3NSVUZCUlRzN1FVRkZla01zWVVGQlR5eERRVUZETEVsQlFV
a3NSMEZCUnl4UFFVRlBMRU5CUVVNN1FVRkRka0lzWVVGQlR5eEhRVUZITEU5QlFVOHNRMEZCUXl4
UlFVRlJMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03UzBGRGNrTTdRVUZEUkN4WFFVRlBMRTlC
UVU4c1EwRkJRenRIUVVOb1FqczdRVUZGVFN4WFFVRlRMR0ZCUVdFc1EwRkJReXhQUVVGUExFVkJR
VVVzVDBGQlR5eEZRVUZGTEU5QlFVOHNSVUZCUlR0QlFVTjJSQ3hYUVVGUExFTkJRVU1zVDBGQlR5
eEhRVUZITEVsQlFVa3NRMEZCUXp0QlFVTjJRaXhSUVVGSkxFOUJRVThzUTBGQlF5eEhRVUZITEVW
QlFVVTdRVUZEWml4aFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExGZEJRVmNzUjBGQlJ5eFBRVUZQ
TEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFOUJRVThzUTBGQlF5eEpR
VUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRPMHRCUTNaRk96dEJRVVZFTEZGQlFVa3NXVUZCV1N4WlFV
RkJMRU5CUVVNN1FVRkRha0lzVVVGQlNTeFBRVUZQTEVOQlFVTXNSVUZCUlN4SlFVRkpMRTlCUVU4
c1EwRkJReXhGUVVGRkxFdEJRVXNzU1VGQlNTeEZRVUZGTzBGQlEzSkRMR0ZCUVU4c1EwRkJReXhK
UVVGSkxFZEJRVWNzVFVFelR6SkNMRmRCUVZjc1EwRXlUekZDTEU5QlFVOHNRMEZCUXl4SlFVRkpM
RU5CUVVNc1EwRkJRenRCUVVONlF5eHJRa0ZCV1N4SFFVRkhMRTlCUVU4c1EwRkJReXhKUVVGSkxF
TkJRVU1zWlVGQlpTeERRVUZETEVkQlFVY3NUMEZCVHl4RFFVRkRMRVZCUVVVc1EwRkJRenM3UVVG
Rk1VUXNWVUZCU1N4WlFVRlpMRU5CUVVNc1VVRkJVU3hGUVVGRk8wRkJRM3BDTEdWQlFVOHNRMEZC
UXl4UlFVRlJMRWRCUVVjc1QwRkJUU3hOUVVGTkxFTkJRVU1zUlVGQlJTeEZRVUZGTEU5QlFVOHNR
MEZCUXl4UlFVRlJMRVZCUVVVc1dVRkJXU3hEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETzA5QlF6
bEZPMHRCUTBZN08wRkJSVVFzVVVGQlNTeFBRVUZQTEV0QlFVc3NVMEZCVXl4SlFVRkpMRmxCUVZr
c1JVRkJSVHRCUVVONlF5eGhRVUZQTEVkQlFVY3NXVUZCV1N4RFFVRkRPMHRCUTNoQ096dEJRVVZF
TEZGQlFVa3NUMEZCVHl4TFFVRkxMRk5CUVZNc1JVRkJSVHRCUVVONlFpeFpRVUZOTERCQ1FVRmpM
R05CUVdNc1IwRkJSeXhQUVVGUExFTkJRVU1zU1VGQlNTeEhRVUZITEhGQ1FVRnhRaXhEUVVGRExF
TkJRVU03UzBGRE5VVXNUVUZCVFN4SlFVRkpMRTlCUVU4c1dVRkJXU3hSUVVGUkxFVkJRVVU3UVVG
RGRFTXNZVUZCVHl4UFFVRlBMRU5CUVVNc1QwRkJUeXhGUVVGRkxFOUJRVThzUTBGQlF5eERRVUZE
TzB0QlEyeERPMGRCUTBZN08wRkJSVTBzVjBGQlV5eEpRVUZKTEVkQlFVYzdRVUZCUlN4WFFVRlBM
RVZCUVVVc1EwRkJRenRIUVVGRk96dEJRVVZ5UXl4WFFVRlRMRkZCUVZFc1EwRkJReXhQUVVGUExF
VkJRVVVzU1VGQlNTeEZRVUZGTzBGQlF5OUNMRkZCUVVrc1EwRkJReXhKUVVGSkxFbEJRVWtzUlVG
QlJTeE5RVUZOTEVsQlFVa3NTVUZCU1N4RFFVRkJMRUZCUVVNc1JVRkJSVHRCUVVNNVFpeFZRVUZK
TEVkQlFVY3NTVUZCU1N4SFFVRkhMRTFCYkZFMFFpeFhRVUZYTEVOQmExRXpRaXhKUVVGSkxFTkJR
VU1zUjBGQlJ5eEZRVUZGTEVOQlFVTTdRVUZEY2tNc1ZVRkJTU3hEUVVGRExFbEJRVWtzUjBGQlJ5
eFBRVUZQTEVOQlFVTTdTMEZEY2tJN1FVRkRSQ3hYUVVGUExFbEJRVWtzUTBGQlF6dEhRVU5pT3p0
QlFVVkVMRmRCUVZNc2FVSkJRV2xDTEVOQlFVTXNSVUZCUlN4RlFVRkZMRWxCUVVrc1JVRkJSU3hU
UVVGVExFVkJRVVVzVFVGQlRTeEZRVUZGTEVsQlFVa3NSVUZCUlN4WFFVRlhMRVZCUVVVN1FVRkRl
a1VzVVVGQlNTeEZRVUZGTEVOQlFVTXNVMEZCVXl4RlFVRkZPMEZCUTJoQ0xGVkJRVWtzUzBGQlN5
eEhRVUZITEVWQlFVVXNRMEZCUXp0QlFVTm1MRlZCUVVrc1IwRkJSeXhGUVVGRkxFTkJRVU1zVTBG
QlV5eERRVUZETEVsQlFVa3NSVUZCUlN4TFFVRkxMRVZCUVVVc1UwRkJVeXhGUVVGRkxFMUJRVTBz
U1VGQlNTeE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hGUVVGRkxGZEJR
VmNzUlVGQlJTeE5RVUZOTEVOQlFVTXNRMEZCUXp0QlFVTTFSaXhoUVVGTkxFMUJRVTBzUTBGQlF5
eEpRVUZKTEVWQlFVVXNTMEZCU3l4RFFVRkRMRU5CUVVNN1MwRkRNMEk3UVVGRFJDeFhRVUZQTEVs
QlFVa3NRMEZCUXp0SFFVTmlJaXdpWm1sc1pTSTZJbkoxYm5ScGJXVXVhbk1pTENKemIzVnlZMlZ6
UTI5dWRHVnVkQ0k2V3lKcGJYQnZjblFnS2lCaGN5QlZkR2xzY3lCbWNtOXRJQ2N1TDNWMGFXeHpK
enRjYm1sdGNHOXlkQ0JGZUdObGNIUnBiMjRnWm5KdmJTQW5MaTlsZUdObGNIUnBiMjRuTzF4dWFX
MXdiM0owSUhzZ1EwOU5VRWxNUlZKZlVrVldTVk5KVDA0c0lGSkZWa2xUU1U5T1gwTklRVTVIUlZN
c0lHTnlaV0YwWlVaeVlXMWxJSDBnWm5KdmJTQW5MaTlpWVhObEp6dGNibHh1Wlhod2IzSjBJR1ox
Ym1OMGFXOXVJR05vWldOclVtVjJhWE5wYjI0b1kyOXRjR2xzWlhKSmJtWnZLU0I3WEc0Z0lHTnZi
bk4wSUdOdmJYQnBiR1Z5VW1WMmFYTnBiMjRnUFNCamIyMXdhV3hsY2tsdVptOGdKaVlnWTI5dGNH
bHNaWEpKYm1adld6QmRJSHg4SURFc1hHNGdJQ0FnSUNBZ0lHTjFjbkpsYm5SU1pYWnBjMmx2YmlB
OUlFTlBUVkJKVEVWU1gxSkZWa2xUU1U5T08xeHVYRzRnSUdsbUlDaGpiMjF3YVd4bGNsSmxkbWx6
YVc5dUlDRTlQU0JqZFhKeVpXNTBVbVYyYVhOcGIyNHBJSHRjYmlBZ0lDQnBaaUFvWTI5dGNHbHNa
WEpTWlhacGMybHZiaUE4SUdOMWNuSmxiblJTWlhacGMybHZiaWtnZTF4dUlDQWdJQ0FnWTI5dWMz
UWdjblZ1ZEdsdFpWWmxjbk5wYjI1eklEMGdVa1ZXU1ZOSlQwNWZRMGhCVGtkRlUxdGpkWEp5Wlc1
MFVtVjJhWE5wYjI1ZExGeHVJQ0FnSUNBZ0lDQWdJQ0FnWTI5dGNHbHNaWEpXWlhKemFXOXVjeUE5
SUZKRlZrbFRTVTlPWDBOSVFVNUhSVk5iWTI5dGNHbHNaWEpTWlhacGMybHZibDA3WEc0Z0lDQWdJ
Q0IwYUhKdmR5QnVaWGNnUlhoalpYQjBhVzl1S0NkVVpXMXdiR0YwWlNCM1lYTWdjSEpsWTI5dGNH
bHNaV1FnZDJsMGFDQmhiaUJ2YkdSbGNpQjJaWEp6YVc5dUlHOW1JRWhoYm1Sc1pXSmhjbk1nZEdo
aGJpQjBhR1VnWTNWeWNtVnVkQ0J5ZFc1MGFXMWxMaUFuSUN0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ2RR
YkdWaGMyVWdkWEJrWVhSbElIbHZkWElnY0hKbFkyOXRjR2xzWlhJZ2RHOGdZU0J1WlhkbGNpQjJa
WEp6YVc5dUlDZ25JQ3NnY25WdWRHbHRaVlpsY25OcGIyNXpJQ3NnSnlrZ2IzSWdaRzkzYm1keVlX
UmxJSGx2ZFhJZ2NuVnVkR2x0WlNCMGJ5QmhiaUJ2YkdSbGNpQjJaWEp6YVc5dUlDZ25JQ3NnWTI5
dGNHbHNaWEpXWlhKemFXOXVjeUFySUNjcExpY3BPMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0Fn
SUNBdkx5QlZjMlVnZEdobElHVnRZbVZrWkdWa0lIWmxjbk5wYjI0Z2FXNW1ieUJ6YVc1alpTQjBh
R1VnY25WdWRHbHRaU0JrYjJWemJpZDBJR3R1YjNjZ1lXSnZkWFFnZEdocGN5QnlaWFpwYzJsdmJp
QjVaWFJjYmlBZ0lDQWdJSFJvY205M0lHNWxkeUJGZUdObGNIUnBiMjRvSjFSbGJYQnNZWFJsSUhk
aGN5QndjbVZqYjIxd2FXeGxaQ0IzYVhSb0lHRWdibVYzWlhJZ2RtVnljMmx2YmlCdlppQklZVzVr
YkdWaVlYSnpJSFJvWVc0Z2RHaGxJR04xY25KbGJuUWdjblZ1ZEdsdFpTNGdKeUFyWEc0Z0lDQWdJ
Q0FnSUNBZ0lDQW5VR3hsWVhObElIVndaR0YwWlNCNWIzVnlJSEoxYm5ScGJXVWdkRzhnWVNCdVpY
ZGxjaUIyWlhKemFXOXVJQ2duSUNzZ1kyOXRjR2xzWlhKSmJtWnZXekZkSUNzZ0p5a3VKeWs3WEc0
Z0lDQWdmVnh1SUNCOVhHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUIwWlcxd2JHRjBaU2gw
Wlcxd2JHRjBaVk53WldNc0lHVnVkaWtnZTF4dUlDQXZLaUJwYzNSaGJtSjFiQ0JwWjI1dmNtVWdi
bVY0ZENBcUwxeHVJQ0JwWmlBb0lXVnVkaWtnZTF4dUlDQWdJSFJvY205M0lHNWxkeUJGZUdObGNI
UnBiMjRvSjA1dklHVnVkbWx5YjI1dFpXNTBJSEJoYzNObFpDQjBieUIwWlcxd2JHRjBaU2NwTzF4
dUlDQjlYRzRnSUdsbUlDZ2hkR1Z0Y0d4aGRHVlRjR1ZqSUh4OElDRjBaVzF3YkdGMFpWTndaV011
YldGcGJpa2dlMXh1SUNBZ0lIUm9jbTkzSUc1bGR5QkZlR05sY0hScGIyNG9KMVZ1YTI1dmQyNGdk
R1Z0Y0d4aGRHVWdiMkpxWldOME9pQW5JQ3NnZEhsd1pXOW1JSFJsYlhCc1lYUmxVM0JsWXlrN1hH
NGdJSDFjYmx4dUlDQjBaVzF3YkdGMFpWTndaV011YldGcGJpNWtaV052Y21GMGIzSWdQU0IwWlcx
d2JHRjBaVk53WldNdWJXRnBibDlrTzF4dVhHNGdJQzh2SUU1dmRHVTZJRlZ6YVc1bklHVnVkaTVX
VFNCeVpXWmxjbVZ1WTJWeklISmhkR2hsY2lCMGFHRnVJR3h2WTJGc0lIWmhjaUJ5WldabGNtVnVZ
MlZ6SUhSb2NtOTFaMmh2ZFhRZ2RHaHBjeUJ6WldOMGFXOXVJSFJ2SUdGc2JHOTNYRzRnSUM4dklH
WnZjaUJsZUhSbGNtNWhiQ0IxYzJWeWN5QjBieUJ2ZG1WeWNtbGtaU0IwYUdWelpTQmhjeUJ3YzNW
bFpHOHRjM1Z3Y0c5eWRHVmtJRUZRU1hNdVhHNGdJR1Z1ZGk1V1RTNWphR1ZqYTFKbGRtbHphVzl1
S0hSbGJYQnNZWFJsVTNCbFl5NWpiMjF3YVd4bGNpazdYRzVjYmlBZ1puVnVZM1JwYjI0Z2FXNTJi
MnRsVUdGeWRHbGhiRmR5WVhCd1pYSW9jR0Z5ZEdsaGJDd2dZMjl1ZEdWNGRDd2diM0IwYVc5dWN5
a2dlMXh1SUNBZ0lHbG1JQ2h2Y0hScGIyNXpMbWhoYzJncElIdGNiaUFnSUNBZ0lHTnZiblJsZUhR
Z1BTQlZkR2xzY3k1bGVIUmxibVFvZTMwc0lHTnZiblJsZUhRc0lHOXdkR2x2Ym5NdWFHRnphQ2s3
WEc0Z0lDQWdJQ0JwWmlBb2IzQjBhVzl1Y3k1cFpITXBJSHRjYmlBZ0lDQWdJQ0FnYjNCMGFXOXVj
eTVwWkhOYk1GMGdQU0IwY25WbE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JseHVJQ0FnSUhCaGNu
UnBZV3dnUFNCbGJuWXVWazB1Y21WemIyeDJaVkJoY25ScFlXd3VZMkZzYkNoMGFHbHpMQ0J3WVhK
MGFXRnNMQ0JqYjI1MFpYaDBMQ0J2Y0hScGIyNXpLVHRjYmlBZ0lDQnNaWFFnY21WemRXeDBJRDBn
Wlc1MkxsWk5MbWx1ZG05clpWQmhjblJwWVd3dVkyRnNiQ2gwYUdsekxDQndZWEowYVdGc0xDQmpi
MjUwWlhoMExDQnZjSFJwYjI1ektUdGNibHh1SUNBZ0lHbG1JQ2h5WlhOMWJIUWdQVDBnYm5Wc2JD
QW1KaUJsYm5ZdVkyOXRjR2xzWlNrZ2UxeHVJQ0FnSUNBZ2IzQjBhVzl1Y3k1d1lYSjBhV0ZzYzF0
dmNIUnBiMjV6TG01aGJXVmRJRDBnWlc1MkxtTnZiWEJwYkdVb2NHRnlkR2xoYkN3Z2RHVnRjR3ho
ZEdWVGNHVmpMbU52YlhCcGJHVnlUM0IwYVc5dWN5d2daVzUyS1R0Y2JpQWdJQ0FnSUhKbGMzVnNk
Q0E5SUc5d2RHbHZibk11Y0dGeWRHbGhiSE5iYjNCMGFXOXVjeTV1WVcxbFhTaGpiMjUwWlhoMExD
QnZjSFJwYjI1ektUdGNiaUFnSUNCOVhHNGdJQ0FnYVdZZ0tISmxjM1ZzZENBaFBTQnVkV3hzS1NC
N1hHNGdJQ0FnSUNCcFppQW9iM0IwYVc5dWN5NXBibVJsYm5RcElIdGNiaUFnSUNBZ0lDQWdiR1Yw
SUd4cGJtVnpJRDBnY21WemRXeDBMbk53YkdsMEtDZGNYRzRuS1R0Y2JpQWdJQ0FnSUNBZ1ptOXlJ
Q2hzWlhRZ2FTQTlJREFzSUd3Z1BTQnNhVzVsY3k1c1pXNW5kR2c3SUdrZ1BDQnNPeUJwS3lzcElI
dGNiaUFnSUNBZ0lDQWdJQ0JwWmlBb0lXeHBibVZ6VzJsZElDWW1JR2tnS3lBeElEMDlQU0JzS1NC
N1hHNGdJQ0FnSUNBZ0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNBZ0lDQWdJQ0I5WEc1Y2JpQWdJQ0Fn
SUNBZ0lDQnNhVzVsYzF0cFhTQTlJRzl3ZEdsdmJuTXVhVzVrWlc1MElDc2diR2x1WlhOYmFWMDdY
RzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnY21WemRXeDBJRDBnYkdsdVpYTXVhbTlwYmlnblhG
eHVKeWs3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdJQ0J5WlhSMWNtNGdjbVZ6ZFd4ME8xeHVJQ0FnSUgw
Z1pXeHpaU0I3WEc0Z0lDQWdJQ0IwYUhKdmR5QnVaWGNnUlhoalpYQjBhVzl1S0NkVWFHVWdjR0Z5
ZEdsaGJDQW5JQ3NnYjNCMGFXOXVjeTV1WVcxbElDc2dKeUJqYjNWc1pDQnViM1FnWW1VZ1kyOXRj
R2xzWldRZ2QyaGxiaUJ5ZFc1dWFXNW5JR2x1SUhKMWJuUnBiV1V0YjI1c2VTQnRiMlJsSnlrN1hH
NGdJQ0FnZlZ4dUlDQjlYRzVjYmlBZ0x5OGdTblZ6ZENCaFpHUWdkMkYwWlhKY2JpQWdiR1YwSUdO
dmJuUmhhVzVsY2lBOUlIdGNiaUFnSUNCemRISnBZM1E2SUdaMWJtTjBhVzl1S0c5aWFpd2dibUZ0
WlNrZ2UxeHVJQ0FnSUNBZ2FXWWdLQ0VvYm1GdFpTQnBiaUJ2WW1vcEtTQjdYRzRnSUNBZ0lDQWdJ
SFJvY205M0lHNWxkeUJGZUdObGNIUnBiMjRvSjF3aUp5QXJJRzVoYldVZ0t5QW5YQ0lnYm05MElH
UmxabWx1WldRZ2FXNGdKeUFySUc5aWFpazdYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQnlaWFIxY200
Z2IySnFXMjVoYldWZE8xeHVJQ0FnSUgwc1hHNGdJQ0FnYkc5dmEzVndPaUJtZFc1amRHbHZiaWhr
WlhCMGFITXNJRzVoYldVcElIdGNiaUFnSUNBZ0lHTnZibk4wSUd4bGJpQTlJR1JsY0hSb2N5NXNa
VzVuZEdnN1hHNGdJQ0FnSUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElHeGxianNnYVNzcktT
QjdYRzRnSUNBZ0lDQWdJR2xtSUNoa1pYQjBhSE5iYVYwZ0ppWWdaR1Z3ZEdoelcybGRXMjVoYldW
ZElDRTlJRzUxYkd3cElIdGNiaUFnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdaR1Z3ZEdoelcybGRXMjVo
YldWZE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZTeGNiaUFnSUNCc1lXMWla
R0U2SUdaMWJtTjBhVzl1S0dOMWNuSmxiblFzSUdOdmJuUmxlSFFwSUh0Y2JpQWdJQ0FnSUhKbGRI
VnliaUIwZVhCbGIyWWdZM1Z5Y21WdWRDQTlQVDBnSjJaMWJtTjBhVzl1SnlBL0lHTjFjbkpsYm5R
dVkyRnNiQ2hqYjI1MFpYaDBLU0E2SUdOMWNuSmxiblE3WEc0Z0lDQWdmU3hjYmx4dUlDQWdJR1Z6
WTJGd1pVVjRjSEpsYzNOcGIyNDZJRlYwYVd4ekxtVnpZMkZ3WlVWNGNISmxjM05wYjI0c1hHNGdJ
Q0FnYVc1MmIydGxVR0Z5ZEdsaGJEb2dhVzUyYjJ0bFVHRnlkR2xoYkZkeVlYQndaWElzWEc1Y2Jp
QWdJQ0JtYmpvZ1puVnVZM1JwYjI0b2FTa2dlMXh1SUNBZ0lDQWdiR1YwSUhKbGRDQTlJSFJsYlhC
c1lYUmxVM0JsWTF0cFhUdGNiaUFnSUNBZ0lISmxkQzVrWldOdmNtRjBiM0lnUFNCMFpXMXdiR0Yw
WlZOd1pXTmJhU0FySUNkZlpDZGRPMXh1SUNBZ0lDQWdjbVYwZFhKdUlISmxkRHRjYmlBZ0lDQjlM
Rnh1WEc0Z0lDQWdjSEp2WjNKaGJYTTZJRnRkTEZ4dUlDQWdJSEJ5YjJkeVlXMDZJR1oxYm1OMGFX
OXVLR2tzSUdSaGRHRXNJR1JsWTJ4aGNtVmtRbXh2WTJ0UVlYSmhiWE1zSUdKc2IyTnJVR0Z5WVcx
ekxDQmtaWEIwYUhNcElIdGNiaUFnSUNBZ0lHeGxkQ0J3Y205bmNtRnRWM0poY0hCbGNpQTlJSFJv
YVhNdWNISnZaM0poYlhOYmFWMHNYRzRnSUNBZ0lDQWdJQ0FnWm00Z1BTQjBhR2x6TG1adUtHa3BP
MXh1SUNBZ0lDQWdhV1lnS0dSaGRHRWdmSHdnWkdWd2RHaHpJSHg4SUdKc2IyTnJVR0Z5WVcxeklI
eDhJR1JsWTJ4aGNtVmtRbXh2WTJ0UVlYSmhiWE1wSUh0Y2JpQWdJQ0FnSUNBZ2NISnZaM0poYlZk
eVlYQndaWElnUFNCM2NtRndVSEp2WjNKaGJTaDBhR2x6TENCcExDQm1iaXdnWkdGMFlTd2daR1Zq
YkdGeVpXUkNiRzlqYTFCaGNtRnRjeXdnWW14dlkydFFZWEpoYlhNc0lHUmxjSFJvY3lrN1hHNGdJ
Q0FnSUNCOUlHVnNjMlVnYVdZZ0tDRndjbTluY21GdFYzSmhjSEJsY2lrZ2UxeHVJQ0FnSUNBZ0lD
QndjbTluY21GdFYzSmhjSEJsY2lBOUlIUm9hWE11Y0hKdlozSmhiWE5iYVYwZ1BTQjNjbUZ3VUhK
dlozSmhiU2gwYUdsekxDQnBMQ0JtYmlrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNCeVpYUjFjbTRn
Y0hKdlozSmhiVmR5WVhCd1pYSTdYRzRnSUNBZ2ZTeGNibHh1SUNBZ0lHUmhkR0U2SUdaMWJtTjBh
Vzl1S0haaGJIVmxMQ0JrWlhCMGFDa2dlMXh1SUNBZ0lDQWdkMmhwYkdVZ0tIWmhiSFZsSUNZbUlH
UmxjSFJvTFMwcElIdGNiaUFnSUNBZ0lDQWdkbUZzZFdVZ1BTQjJZV3gxWlM1ZmNHRnlaVzUwTzF4
dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnY21WMGRYSnVJSFpoYkhWbE8xeHVJQ0FnSUgwc1hHNGdJQ0Fn
YldWeVoyVTZJR1oxYm1OMGFXOXVLSEJoY21GdExDQmpiMjF0YjI0cElIdGNiaUFnSUNBZ0lHeGxk
Q0J2WW1vZ1BTQndZWEpoYlNCOGZDQmpiMjF0YjI0N1hHNWNiaUFnSUNBZ0lHbG1JQ2h3WVhKaGJT
QW1KaUJqYjIxdGIyNGdKaVlnS0hCaGNtRnRJQ0U5UFNCamIyMXRiMjRwS1NCN1hHNGdJQ0FnSUNB
Z0lHOWlhaUE5SUZWMGFXeHpMbVY0ZEdWdVpDaDdmU3dnWTI5dGJXOXVMQ0J3WVhKaGJTazdYRzRn
SUNBZ0lDQjlYRzVjYmlBZ0lDQWdJSEpsZEhWeWJpQnZZbW83WEc0Z0lDQWdmU3hjYmx4dUlDQWdJ
RzV2YjNBNklHVnVkaTVXVFM1dWIyOXdMRnh1SUNBZ0lHTnZiWEJwYkdWeVNXNW1iem9nZEdWdGNH
eGhkR1ZUY0dWakxtTnZiWEJwYkdWeVhHNGdJSDA3WEc1Y2JpQWdablZ1WTNScGIyNGdjbVYwS0dO
dmJuUmxlSFFzSUc5d2RHbHZibk1nUFNCN2ZTa2dlMXh1SUNBZ0lHeGxkQ0JrWVhSaElEMGdiM0Iw
YVc5dWN5NWtZWFJoTzF4dVhHNGdJQ0FnY21WMExsOXpaWFIxY0NodmNIUnBiMjV6S1R0Y2JpQWdJ
Q0JwWmlBb0lXOXdkR2x2Ym5NdWNHRnlkR2xoYkNBbUppQjBaVzF3YkdGMFpWTndaV011ZFhObFJH
RjBZU2tnZTF4dUlDQWdJQ0FnWkdGMFlTQTlJR2x1YVhSRVlYUmhLR052Ym5SbGVIUXNJR1JoZEdF
cE8xeHVJQ0FnSUgxY2JpQWdJQ0JzWlhRZ1pHVndkR2h6TEZ4dUlDQWdJQ0FnSUNCaWJHOWphMUJo
Y21GdGN5QTlJSFJsYlhCc1lYUmxVM0JsWXk1MWMyVkNiRzlqYTFCaGNtRnRjeUEvSUZ0ZElEb2dk
VzVrWldacGJtVmtPMXh1SUNBZ0lHbG1JQ2gwWlcxd2JHRjBaVk53WldNdWRYTmxSR1Z3ZEdoektT
QjdYRzRnSUNBZ0lDQnBaaUFvYjNCMGFXOXVjeTVrWlhCMGFITXBJSHRjYmlBZ0lDQWdJQ0FnWkdW
d2RHaHpJRDBnWTI5dWRHVjRkQ0FoUFNCdmNIUnBiMjV6TG1SbGNIUm9jMXN3WFNBL0lGdGpiMjUw
WlhoMFhTNWpiMjVqWVhRb2IzQjBhVzl1Y3k1a1pYQjBhSE1wSURvZ2IzQjBhVzl1Y3k1a1pYQjBh
SE03WEc0Z0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0JrWlhCMGFITWdQU0JiWTI5dWRH
VjRkRjA3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1WEc0Z0lDQWdablZ1WTNScGIyNGdiV0ZwYmlo
amIyNTBaWGgwTHlvc0lHOXdkR2x2Ym5NcUx5a2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlDY25JQ3Nn
ZEdWdGNHeGhkR1ZUY0dWakxtMWhhVzRvWTI5dWRHRnBibVZ5TENCamIyNTBaWGgwTENCamIyNTBZ
V2x1WlhJdWFHVnNjR1Z5Y3l3Z1kyOXVkR0ZwYm1WeUxuQmhjblJwWVd4ekxDQmtZWFJoTENCaWJH
OWphMUJoY21GdGN5d2daR1Z3ZEdoektUdGNiaUFnSUNCOVhHNGdJQ0FnYldGcGJpQTlJR1Y0WldO
MWRHVkVaV052Y21GMGIzSnpLSFJsYlhCc1lYUmxVM0JsWXk1dFlXbHVMQ0J0WVdsdUxDQmpiMjUw
WVdsdVpYSXNJRzl3ZEdsdmJuTXVaR1Z3ZEdoeklIeDhJRnRkTENCa1lYUmhMQ0JpYkc5amExQmhj
bUZ0Y3lrN1hHNGdJQ0FnY21WMGRYSnVJRzFoYVc0b1kyOXVkR1Y0ZEN3Z2IzQjBhVzl1Y3lrN1hH
NGdJSDFjYmlBZ2NtVjBMbWx6Vkc5d0lEMGdkSEoxWlR0Y2JseHVJQ0J5WlhRdVgzTmxkSFZ3SUQw
Z1puVnVZM1JwYjI0b2IzQjBhVzl1Y3lrZ2UxeHVJQ0FnSUdsbUlDZ2hiM0IwYVc5dWN5NXdZWEow
YVdGc0tTQjdYRzRnSUNBZ0lDQmpiMjUwWVdsdVpYSXVhR1ZzY0dWeWN5QTlJR052Ym5SaGFXNWxj
aTV0WlhKblpTaHZjSFJwYjI1ekxtaGxiSEJsY25Nc0lHVnVkaTVvWld4d1pYSnpLVHRjYmx4dUlD
QWdJQ0FnYVdZZ0tIUmxiWEJzWVhSbFUzQmxZeTUxYzJWUVlYSjBhV0ZzS1NCN1hHNGdJQ0FnSUNB
Z0lHTnZiblJoYVc1bGNpNXdZWEowYVdGc2N5QTlJR052Ym5SaGFXNWxjaTV0WlhKblpTaHZjSFJw
YjI1ekxuQmhjblJwWVd4ekxDQmxibll1Y0dGeWRHbGhiSE1wTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJ
Q0FnYVdZZ0tIUmxiWEJzWVhSbFUzQmxZeTUxYzJWUVlYSjBhV0ZzSUh4OElIUmxiWEJzWVhSbFUz
QmxZeTUxYzJWRVpXTnZjbUYwYjNKektTQjdYRzRnSUNBZ0lDQWdJR052Ym5SaGFXNWxjaTVrWldO
dmNtRjBiM0p6SUQwZ1kyOXVkR0ZwYm1WeUxtMWxjbWRsS0c5d2RHbHZibk11WkdWamIzSmhkRzl5
Y3l3Z1pXNTJMbVJsWTI5eVlYUnZjbk1wTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDBnWld4elpTQjdY
RzRnSUNBZ0lDQmpiMjUwWVdsdVpYSXVhR1ZzY0dWeWN5QTlJRzl3ZEdsdmJuTXVhR1ZzY0dWeWN6
dGNiaUFnSUNBZ0lHTnZiblJoYVc1bGNpNXdZWEowYVdGc2N5QTlJRzl3ZEdsdmJuTXVjR0Z5ZEds
aGJITTdYRzRnSUNBZ0lDQmpiMjUwWVdsdVpYSXVaR1ZqYjNKaGRHOXljeUE5SUc5d2RHbHZibk11
WkdWamIzSmhkRzl5Y3p0Y2JpQWdJQ0I5WEc0Z0lIMDdYRzVjYmlBZ2NtVjBMbDlqYUdsc1pDQTlJ
R1oxYm1OMGFXOXVLR2tzSUdSaGRHRXNJR0pzYjJOclVHRnlZVzF6TENCa1pYQjBhSE1wSUh0Y2Jp
QWdJQ0JwWmlBb2RHVnRjR3hoZEdWVGNHVmpMblZ6WlVKc2IyTnJVR0Z5WVcxeklDWW1JQ0ZpYkc5
amExQmhjbUZ0Y3lrZ2UxeHVJQ0FnSUNBZ2RHaHliM2NnYm1WM0lFVjRZMlZ3ZEdsdmJpZ25iWFZ6
ZENCd1lYTnpJR0pzYjJOcklIQmhjbUZ0Y3ljcE8xeHVJQ0FnSUgxY2JpQWdJQ0JwWmlBb2RHVnRj
R3hoZEdWVGNHVmpMblZ6WlVSbGNIUm9jeUFtSmlBaFpHVndkR2h6S1NCN1hHNGdJQ0FnSUNCMGFI
SnZkeUJ1WlhjZ1JYaGpaWEIwYVc5dUtDZHRkWE4wSUhCaGMzTWdjR0Z5Wlc1MElHUmxjSFJvY3lj
cE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhKbGRIVnliaUIzY21Gd1VISnZaM0poYlNoamIyNTBZV2x1
WlhJc0lHa3NJSFJsYlhCc1lYUmxVM0JsWTF0cFhTd2daR0YwWVN3Z01Dd2dZbXh2WTJ0UVlYSmhi
WE1zSUdSbGNIUm9jeWs3WEc0Z0lIMDdYRzRnSUhKbGRIVnliaUJ5WlhRN1hHNTlYRzVjYm1WNGNH
OXlkQ0JtZFc1amRHbHZiaUIzY21Gd1VISnZaM0poYlNoamIyNTBZV2x1WlhJc0lHa3NJR1p1TENC
a1lYUmhMQ0JrWldOc1lYSmxaRUpzYjJOclVHRnlZVzF6TENCaWJHOWphMUJoY21GdGN5d2daR1Z3
ZEdoektTQjdYRzRnSUdaMWJtTjBhVzl1SUhCeWIyY29ZMjl1ZEdWNGRDd2diM0IwYVc5dWN5QTlJ
SHQ5S1NCN1hHNGdJQ0FnYkdWMElHTjFjbkpsYm5SRVpYQjBhSE1nUFNCa1pYQjBhSE03WEc0Z0lD
QWdhV1lnS0dSbGNIUm9jeUFtSmlCamIyNTBaWGgwSUNFOUlHUmxjSFJvYzFzd1hTa2dlMXh1SUNB
Z0lDQWdZM1Z5Y21WdWRFUmxjSFJvY3lBOUlGdGpiMjUwWlhoMFhTNWpiMjVqWVhRb1pHVndkR2h6
S1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0J5WlhSMWNtNGdabTRvWTI5dWRHRnBibVZ5TEZ4dUlDQWdJ
Q0FnSUNCamIyNTBaWGgwTEZ4dUlDQWdJQ0FnSUNCamIyNTBZV2x1WlhJdWFHVnNjR1Z5Y3l3Z1ky
OXVkR0ZwYm1WeUxuQmhjblJwWVd4ekxGeHVJQ0FnSUNBZ0lDQnZjSFJwYjI1ekxtUmhkR0VnZkh3
Z1pHRjBZU3hjYmlBZ0lDQWdJQ0FnWW14dlkydFFZWEpoYlhNZ0ppWWdXMjl3ZEdsdmJuTXVZbXh2
WTJ0UVlYSmhiWE5kTG1OdmJtTmhkQ2hpYkc5amExQmhjbUZ0Y3lrc1hHNGdJQ0FnSUNBZ0lHTjFj
bkpsYm5SRVpYQjBhSE1wTzF4dUlDQjlYRzVjYmlBZ2NISnZaeUE5SUdWNFpXTjFkR1ZFWldOdmNt
RjBiM0p6S0dadUxDQndjbTluTENCamIyNTBZV2x1WlhJc0lHUmxjSFJvY3l3Z1pHRjBZU3dnWW14
dlkydFFZWEpoYlhNcE8xeHVYRzRnSUhCeWIyY3VjSEp2WjNKaGJTQTlJR2s3WEc0Z0lIQnliMmN1
WkdWd2RHZ2dQU0JrWlhCMGFITWdQeUJrWlhCMGFITXViR1Z1WjNSb0lEb2dNRHRjYmlBZ2NISnZa
eTVpYkc5amExQmhjbUZ0Y3lBOUlHUmxZMnhoY21Wa1FteHZZMnRRWVhKaGJYTWdmSHdnTUR0Y2Jp
QWdjbVYwZFhKdUlIQnliMmM3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQnlaWE52Ykha
bFVHRnlkR2xoYkNod1lYSjBhV0ZzTENCamIyNTBaWGgwTENCdmNIUnBiMjV6S1NCN1hHNGdJR2xt
SUNnaGNHRnlkR2xoYkNrZ2UxeHVJQ0FnSUdsbUlDaHZjSFJwYjI1ekxtNWhiV1VnUFQwOUlDZEFj
R0Z5ZEdsaGJDMWliRzlqYXljcElIdGNiaUFnSUNBZ0lHeGxkQ0JrWVhSaElEMGdiM0IwYVc5dWN5
NWtZWFJoTzF4dUlDQWdJQ0FnZDJocGJHVWdLR1JoZEdGYkozQmhjblJwWVd3dFlteHZZMnNuWFNB
OVBUMGdibTl2Y0NrZ2UxeHVJQ0FnSUNBZ0lDQmtZWFJoSUQwZ1pHRjBZUzVmY0dGeVpXNTBPMXh1
SUNBZ0lDQWdmVnh1SUNBZ0lDQWdjR0Z5ZEdsaGJDQTlJR1JoZEdGYkozQmhjblJwWVd3dFlteHZZ
MnNuWFR0Y2JpQWdJQ0FnSUdSaGRHRmJKM0JoY25ScFlXd3RZbXh2WTJzblhTQTlJRzV2YjNBN1hH
NGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJSEJoY25ScFlXd2dQU0J2Y0hScGIyNXpMbkJoY25S
cFlXeHpXMjl3ZEdsdmJuTXVibUZ0WlYwN1hHNGdJQ0FnZlZ4dUlDQjlJR1ZzYzJVZ2FXWWdLQ0Z3
WVhKMGFXRnNMbU5oYkd3Z0ppWWdJVzl3ZEdsdmJuTXVibUZ0WlNrZ2UxeHVJQ0FnSUM4dklGUm9h
WE1nYVhNZ1lTQmtlVzVoYldsaklIQmhjblJwWVd3Z2RHaGhkQ0J5WlhSMWNtNWxaQ0JoSUhOMGNt
bHVaMXh1SUNBZ0lHOXdkR2x2Ym5NdWJtRnRaU0E5SUhCaGNuUnBZV3c3WEc0Z0lDQWdjR0Z5ZEds
aGJDQTlJRzl3ZEdsdmJuTXVjR0Z5ZEdsaGJITmJjR0Z5ZEdsaGJGMDdYRzRnSUgxY2JpQWdjbVYw
ZFhKdUlIQmhjblJwWVd3N1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJwYm5admEyVlFZ
WEowYVdGc0tIQmhjblJwWVd3c0lHTnZiblJsZUhRc0lHOXdkR2x2Ym5NcElIdGNiaUFnYjNCMGFX
OXVjeTV3WVhKMGFXRnNJRDBnZEhKMVpUdGNiaUFnYVdZZ0tHOXdkR2x2Ym5NdWFXUnpLU0I3WEc0
Z0lDQWdiM0IwYVc5dWN5NWtZWFJoTG1OdmJuUmxlSFJRWVhSb0lEMGdiM0IwYVc5dWN5NXBaSE5i
TUYwZ2ZId2diM0IwYVc5dWN5NWtZWFJoTG1OdmJuUmxlSFJRWVhSb08xeHVJQ0I5WEc1Y2JpQWdi
R1YwSUhCaGNuUnBZV3hDYkc5amF6dGNiaUFnYVdZZ0tHOXdkR2x2Ym5NdVptNGdKaVlnYjNCMGFX
OXVjeTVtYmlBaFBUMGdibTl2Y0NrZ2UxeHVJQ0FnSUc5d2RHbHZibk11WkdGMFlTQTlJR055WldG
MFpVWnlZVzFsS0c5d2RHbHZibk11WkdGMFlTazdYRzRnSUNBZ2NHRnlkR2xoYkVKc2IyTnJJRDBn
YjNCMGFXOXVjeTVrWVhSaFd5ZHdZWEowYVdGc0xXSnNiMk5ySjEwZ1BTQnZjSFJwYjI1ekxtWnVP
MXh1WEc0Z0lDQWdhV1lnS0hCaGNuUnBZV3hDYkc5amF5NXdZWEowYVdGc2N5a2dlMXh1SUNBZ0lD
QWdiM0IwYVc5dWN5NXdZWEowYVdGc2N5QTlJRlYwYVd4ekxtVjRkR1Z1WkNoN2ZTd2diM0IwYVc5
dWN5NXdZWEowYVdGc2N5d2djR0Z5ZEdsaGJFSnNiMk5yTG5CaGNuUnBZV3h6S1R0Y2JpQWdJQ0I5
WEc0Z0lIMWNibHh1SUNCcFppQW9jR0Z5ZEdsaGJDQTlQVDBnZFc1a1pXWnBibVZrSUNZbUlIQmhj
blJwWVd4Q2JHOWpheWtnZTF4dUlDQWdJSEJoY25ScFlXd2dQU0J3WVhKMGFXRnNRbXh2WTJzN1hH
NGdJSDFjYmx4dUlDQnBaaUFvY0dGeWRHbGhiQ0E5UFQwZ2RXNWtaV1pwYm1Wa0tTQjdYRzRnSUNB
Z2RHaHliM2NnYm1WM0lFVjRZMlZ3ZEdsdmJpZ25WR2hsSUhCaGNuUnBZV3dnSnlBcklHOXdkR2x2
Ym5NdWJtRnRaU0FySUNjZ1kyOTFiR1FnYm05MElHSmxJR1p2ZFc1a0p5azdYRzRnSUgwZ1pXeHpa
U0JwWmlBb2NHRnlkR2xoYkNCcGJuTjBZVzVqWlc5bUlFWjFibU4wYVc5dUtTQjdYRzRnSUNBZ2Nt
VjBkWEp1SUhCaGNuUnBZV3dvWTI5dWRHVjRkQ3dnYjNCMGFXOXVjeWs3WEc0Z0lIMWNibjFjYmx4
dVpYaHdiM0owSUdaMWJtTjBhVzl1SUc1dmIzQW9LU0I3SUhKbGRIVnliaUFuSnpzZ2ZWeHVYRzVt
ZFc1amRHbHZiaUJwYm1sMFJHRjBZU2hqYjI1MFpYaDBMQ0JrWVhSaEtTQjdYRzRnSUdsbUlDZ2ha
R0YwWVNCOGZDQWhLQ2R5YjI5MEp5QnBiaUJrWVhSaEtTa2dlMXh1SUNBZ0lHUmhkR0VnUFNCa1lY
UmhJRDhnWTNKbFlYUmxSbkpoYldVb1pHRjBZU2tnT2lCN2ZUdGNiaUFnSUNCa1lYUmhMbkp2YjNR
Z1BTQmpiMjUwWlhoME8xeHVJQ0I5WEc0Z0lISmxkSFZ5YmlCa1lYUmhPMXh1ZlZ4dVhHNW1kVzVq
ZEdsdmJpQmxlR1ZqZFhSbFJHVmpiM0poZEc5eWN5aG1iaXdnY0hKdlp5d2dZMjl1ZEdGcGJtVnlM
Q0JrWlhCMGFITXNJR1JoZEdFc0lHSnNiMk5yVUdGeVlXMXpLU0I3WEc0Z0lHbG1JQ2htYmk1a1pX
TnZjbUYwYjNJcElIdGNiaUFnSUNCc1pYUWdjSEp2Y0hNZ1BTQjdmVHRjYmlBZ0lDQndjbTluSUQw
Z1ptNHVaR1ZqYjNKaGRHOXlLSEJ5YjJjc0lIQnliM0J6TENCamIyNTBZV2x1WlhJc0lHUmxjSFJv
Y3lBbUppQmtaWEIwYUhOYk1GMHNJR1JoZEdFc0lHSnNiMk5yVUdGeVlXMXpMQ0JrWlhCMGFITXBP
MXh1SUNBZ0lGVjBhV3h6TG1WNGRHVnVaQ2h3Y205bkxDQndjbTl3Y3lrN1hHNGdJSDFjYmlBZ2Nt
VjBkWEp1SUhCeWIyYzdYRzU5WEc0aVhYMD0KKzsKK2RlZmluZSgnaGFuZGxlYmFycy9uby1jb25m
bGljdCcsWydleHBvcnRzJywgJ21vZHVsZSddLCBmdW5jdGlvbiAoZXhwb3J0cywgbW9kdWxlKSB7
CisgIC8qIGdsb2JhbCB3aW5kb3cgKi8KKyAgJ3VzZSBzdHJpY3QnOworCisgIG1vZHVsZS5leHBv
cnRzID0gZnVuY3Rpb24gKEhhbmRsZWJhcnMpIHsKKyAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4
dCAqLworICAgIHZhciByb290ID0gdHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcgPyBnbG9i
YWwgOiB3aW5kb3csCisgICAgICAgICRIYW5kbGViYXJzID0gcm9vdC5IYW5kbGViYXJzOworICAg
IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovCisgICAgSGFuZGxlYmFycy5ub0NvbmZsaWN0ID0g
ZnVuY3Rpb24gKCkgeworICAgICAgaWYgKHJvb3QuSGFuZGxlYmFycyA9PT0gSGFuZGxlYmFycykg
eworICAgICAgICByb290LkhhbmRsZWJhcnMgPSAkSGFuZGxlYmFyczsKKyAgICAgIH0KKyAgICAg
IHJldHVybiBIYW5kbGViYXJzOworICAgIH07CisgIH07Cit9KTsKKy8vIyBzb3VyY2VNYXBwaW5n
VVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5
WTJWeklqcGJJaTR1THk0dUx5NHVMMnhwWWk5b1lXNWtiR1ZpWVhKekwyNXZMV052Ym1ac2FXTjBM
bXB6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3T3pzN2JVSkJRMlVzVlVGQlV5
eFZRVUZWTEVWQlFVVTdPMEZCUld4RExGRkJRVWtzU1VGQlNTeEhRVUZITEU5QlFVOHNUVUZCVFN4
TFFVRkxMRmRCUVZjc1IwRkJSeXhOUVVGTkxFZEJRVWNzVFVGQlRUdFJRVU4wUkN4WFFVRlhMRWRC
UVVjc1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF6czdRVUZGYkVNc1kwRkJWU3hEUVVGRExGVkJR
VlVzUjBGQlJ5eFpRVUZYTzBGQlEycERMRlZCUVVrc1NVRkJTU3hEUVVGRExGVkJRVlVzUzBGQlN5
eFZRVUZWTEVWQlFVVTdRVUZEYkVNc1dVRkJTU3hEUVVGRExGVkJRVlVzUjBGQlJ5eFhRVUZYTEVO
QlFVTTdUMEZETDBJN1FVRkRSQ3hoUVVGUExGVkJRVlVzUTBGQlF6dExRVU51UWl4RFFVRkRPMGRC
UTBnaUxDSm1hV3hsSWpvaWJtOHRZMjl1Wm14cFkzUXVhbk1pTENKemIzVnlZMlZ6UTI5dWRHVnVk
Q0k2V3lJdktpQm5iRzlpWVd3Z2QybHVaRzkzSUNvdlhHNWxlSEJ2Y25RZ1pHVm1ZWFZzZENCbWRX
NWpkR2x2YmloSVlXNWtiR1ZpWVhKektTQjdYRzRnSUM4cUlHbHpkR0Z1WW5Wc0lHbG5ibTl5WlNC
dVpYaDBJQ292WEc0Z0lHeGxkQ0J5YjI5MElEMGdkSGx3Wlc5bUlHZHNiMkpoYkNBaFBUMGdKM1Z1
WkdWbWFXNWxaQ2NnUHlCbmJHOWlZV3dnT2lCM2FXNWtiM2NzWEc0Z0lDQWdJQ0FrU0dGdVpHeGxZ
bUZ5Y3lBOUlISnZiM1F1U0dGdVpHeGxZbUZ5Y3p0Y2JpQWdMeW9nYVhOMFlXNWlkV3dnYVdkdWIz
SmxJRzVsZUhRZ0tpOWNiaUFnU0dGdVpHeGxZbUZ5Y3k1dWIwTnZibVpzYVdOMElEMGdablZ1WTNS
cGIyNG9LU0I3WEc0Z0lDQWdhV1lnS0hKdmIzUXVTR0Z1Wkd4bFltRnljeUE5UFQwZ1NHRnVaR3hs
WW1GeWN5a2dlMXh1SUNBZ0lDQWdjbTl2ZEM1SVlXNWtiR1ZpWVhKeklEMGdKRWhoYm1Sc1pXSmhj
bk03WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCSVlXNWtiR1ZpWVhKek8xeHVJQ0I5TzF4dWZW
eHVJbDE5Cis7CitkZWZpbmUoJ2hhbmRsZWJhcnMucnVudGltZScsWydleHBvcnRzJywgJ21vZHVs
ZScsICcuL2hhbmRsZWJhcnMvYmFzZScsICcuL2hhbmRsZWJhcnMvc2FmZS1zdHJpbmcnLCAnLi9o
YW5kbGViYXJzL2V4Y2VwdGlvbicsICcuL2hhbmRsZWJhcnMvdXRpbHMnLCAnLi9oYW5kbGViYXJz
L3J1bnRpbWUnLCAnLi9oYW5kbGViYXJzL25vLWNvbmZsaWN0J10sIGZ1bmN0aW9uIChleHBvcnRz
LCBtb2R1bGUsIF9oYW5kbGViYXJzQmFzZSwgX2hhbmRsZWJhcnNTYWZlU3RyaW5nLCBfaGFuZGxl
YmFyc0V4Y2VwdGlvbiwgX2hhbmRsZWJhcnNVdGlscywgX2hhbmRsZWJhcnNSdW50aW1lLCBfaGFu
ZGxlYmFyc05vQ29uZmxpY3QpIHsKKyAgJ3VzZSBzdHJpY3QnOworCisgIC8vIGlzdGFuYnVsIGln
bm9yZSBuZXh0CisKKyAgZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0
dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfQor
CisgIC8vIEVhY2ggb2YgdGhlc2UgYXVnbWVudCB0aGUgSGFuZGxlYmFycyBvYmplY3QuIE5vIG5l
ZWQgdG8gc2V0dXAgaGVyZS4KKyAgLy8gKFRoaXMgaXMgZG9uZSB0byBlYXNpbHkgc2hhcmUgY29k
ZSBiZXR3ZWVuIGNvbW1vbmpzIGFuZCBicm93c2UgZW52cykKKworICB2YXIgX1NhZmVTdHJpbmcg
PSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9oYW5kbGViYXJzU2FmZVN0cmluZyk7CisKKyAgdmFy
IF9FeGNlcHRpb24gPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9oYW5kbGViYXJzRXhjZXB0aW9u
KTsKKworICB2YXIgX25vQ29uZmxpY3QgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9oYW5kbGVi
YXJzTm9Db25mbGljdCk7CisKKyAgLy8gRm9yIGNvbXBhdGliaWxpdHkgYW5kIHVzYWdlIG91dHNp
ZGUgb2YgbW9kdWxlIHN5c3RlbXMsIG1ha2UgdGhlIEhhbmRsZWJhcnMgb2JqZWN0IGEgbmFtZXNw
YWNlCisgIGZ1bmN0aW9uIGNyZWF0ZSgpIHsKKyAgICB2YXIgaGIgPSBuZXcgX2hhbmRsZWJhcnNC
YXNlLkhhbmRsZWJhcnNFbnZpcm9ubWVudCgpOworCisgICAgX2hhbmRsZWJhcnNVdGlscy5leHRl
bmQoaGIsIF9oYW5kbGViYXJzQmFzZSk7CisgICAgaGIuU2FmZVN0cmluZyA9IF9TYWZlU3RyaW5n
WydkZWZhdWx0J107CisgICAgaGIuRXhjZXB0aW9uID0gX0V4Y2VwdGlvblsnZGVmYXVsdCddOwor
ICAgIGhiLlV0aWxzID0gX2hhbmRsZWJhcnNVdGlsczsKKyAgICBoYi5lc2NhcGVFeHByZXNzaW9u
ID0gX2hhbmRsZWJhcnNVdGlscy5lc2NhcGVFeHByZXNzaW9uOworCisgICAgaGIuVk0gPSBfaGFu
ZGxlYmFyc1J1bnRpbWU7CisgICAgaGIudGVtcGxhdGUgPSBmdW5jdGlvbiAoc3BlYykgeworICAg
ICAgcmV0dXJuIF9oYW5kbGViYXJzUnVudGltZS50ZW1wbGF0ZShzcGVjLCBoYik7CisgICAgfTsK
KworICAgIHJldHVybiBoYjsKKyAgfQorCisgIHZhciBpbnN0ID0gY3JlYXRlKCk7CisgIGluc3Qu
Y3JlYXRlID0gY3JlYXRlOworCisgIF9ub0NvbmZsaWN0WydkZWZhdWx0J10oaW5zdCk7CisKKyAg
aW5zdFsnZGVmYXVsdCddID0gaW5zdDsKKworICBtb2R1bGUuZXhwb3J0cyA9IGluc3Q7Cit9KTsK
Ky8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpY
SnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUwyeHBZaTlvWVc1a2JHVmlZWEp6TG5K
MWJuUnBiV1V1YW5NaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWpzN096czdPenM3
T3pzN096czdPenM3UVVGWlFTeFhRVUZUTEUxQlFVMHNSMEZCUnp0QlFVTm9RaXhSUVVGSkxFVkJR
VVVzUjBGQlJ5eEpRVUZKTEdkQ1FVRkxMSEZDUVVGeFFpeEZRVUZGTEVOQlFVTTdPMEZCUlRGRExI
RkNRVUZOTEUxQlFVMHNRMEZCUXl4RlFVRkZMR3RDUVVGUExFTkJRVU03UVVGRGRrSXNUVUZCUlN4
RFFVRkRMRlZCUVZVc2VVSkJRV0VzUTBGQlF6dEJRVU16UWl4TlFVRkZMRU5CUVVNc1UwRkJVeXgz
UWtGQldTeERRVUZETzBGQlEzcENMRTFCUVVVc1EwRkJReXhMUVVGTExHMUNRVUZSTEVOQlFVTTdR
VUZEYWtJc1RVRkJSU3hEUVVGRExHZENRVUZuUWl4SFFVRkhMR2xDUVVGTkxHZENRVUZuUWl4RFFV
RkRPenRCUVVVM1F5eE5RVUZGTEVOQlFVTXNSVUZCUlN4eFFrRkJWU3hEUVVGRE8wRkJRMmhDTEUx
QlFVVXNRMEZCUXl4UlFVRlJMRWRCUVVjc1ZVRkJVeXhKUVVGSkxFVkJRVVU3UVVGRE0wSXNZVUZC
VHl4dFFrRkJVU3hSUVVGUkxFTkJRVU1zU1VGQlNTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRP
MHRCUTI1RExFTkJRVU03TzBGQlJVWXNWMEZCVHl4RlFVRkZMRU5CUVVNN1IwRkRXRHM3UVVGRlJD
eE5RVUZKTEVsQlFVa3NSMEZCUnl4TlFVRk5MRVZCUVVVc1EwRkJRenRCUVVOd1FpeE5RVUZKTEVO
QlFVTXNUVUZCVFN4SFFVRkhMRTFCUVUwc1EwRkJRenM3UVVGRmNrSXNlVUpCUVZjc1NVRkJTU3hE
UVVGRExFTkJRVU03TzBGQlJXcENMRTFCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zUjBGQlJ5eEpR
VUZKTEVOQlFVTTdPMjFDUVVWU0xFbEJRVWtpTENKbWFXeGxJam9pYUdGdVpHeGxZbUZ5Y3k1eWRX
NTBhVzFsTG1weklpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElDb2dZWE1nWW1G
elpTQm1jbTl0SUNjdUwyaGhibVJzWldKaGNuTXZZbUZ6WlNjN1hHNWNiaTh2SUVWaFkyZ2diMlln
ZEdobGMyVWdZWFZuYldWdWRDQjBhR1VnU0dGdVpHeGxZbUZ5Y3lCdlltcGxZM1F1SUU1dklHNWxa
V1FnZEc4Z2MyVjBkWEFnYUdWeVpTNWNiaTh2SUNoVWFHbHpJR2x6SUdSdmJtVWdkRzhnWldGemFX
eDVJSE5vWVhKbElHTnZaR1VnWW1WMGQyVmxiaUJqYjIxdGIyNXFjeUJoYm1RZ1luSnZkM05sSUdW
dWRuTXBYRzVwYlhCdmNuUWdVMkZtWlZOMGNtbHVaeUJtY205dElDY3VMMmhoYm1Sc1pXSmhjbk12
YzJGbVpTMXpkSEpwYm1jbk8xeHVhVzF3YjNKMElFVjRZMlZ3ZEdsdmJpQm1jbTl0SUNjdUwyaGhi
bVJzWldKaGNuTXZaWGhqWlhCMGFXOXVKenRjYm1sdGNHOXlkQ0FxSUdGeklGVjBhV3h6SUdaeWIy
MGdKeTR2YUdGdVpHeGxZbUZ5Y3k5MWRHbHNjeWM3WEc1cGJYQnZjblFnS2lCaGN5QnlkVzUwYVcx
bElHWnliMjBnSnk0dmFHRnVaR3hsWW1GeWN5OXlkVzUwYVcxbEp6dGNibHh1YVcxd2IzSjBJRzV2
UTI5dVpteHBZM1FnWm5KdmJTQW5MaTlvWVc1a2JHVmlZWEp6TDI1dkxXTnZibVpzYVdOMEp6dGNi
bHh1THk4Z1JtOXlJR052YlhCaGRHbGlhV3hwZEhrZ1lXNWtJSFZ6WVdkbElHOTFkSE5wWkdVZ2Iy
WWdiVzlrZFd4bElITjVjM1JsYlhNc0lHMWhhMlVnZEdobElFaGhibVJzWldKaGNuTWdiMkpxWldO
MElHRWdibUZ0WlhOd1lXTmxYRzVtZFc1amRHbHZiaUJqY21WaGRHVW9LU0I3WEc0Z0lHeGxkQ0Jv
WWlBOUlHNWxkeUJpWVhObExraGhibVJzWldKaGNuTkZiblpwY205dWJXVnVkQ2dwTzF4dVhHNGdJ
RlYwYVd4ekxtVjRkR1Z1WkNob1lpd2dZbUZ6WlNrN1hHNGdJR2hpTGxOaFptVlRkSEpwYm1jZ1BT
QlRZV1psVTNSeWFXNW5PMXh1SUNCb1lpNUZlR05sY0hScGIyNGdQU0JGZUdObGNIUnBiMjQ3WEc0
Z0lHaGlMbFYwYVd4eklEMGdWWFJwYkhNN1hHNGdJR2hpTG1WelkyRndaVVY0Y0hKbGMzTnBiMjRn
UFNCVmRHbHNjeTVsYzJOaGNHVkZlSEJ5WlhOemFXOXVPMXh1WEc0Z0lHaGlMbFpOSUQwZ2NuVnVk
R2x0WlR0Y2JpQWdhR0l1ZEdWdGNHeGhkR1VnUFNCbWRXNWpkR2x2YmloemNHVmpLU0I3WEc0Z0lD
QWdjbVYwZFhKdUlISjFiblJwYldVdWRHVnRjR3hoZEdVb2MzQmxZeXdnYUdJcE8xeHVJQ0I5TzF4
dVhHNGdJSEpsZEhWeWJpQm9ZanRjYm4xY2JseHViR1YwSUdsdWMzUWdQU0JqY21WaGRHVW9LVHRj
Ym1sdWMzUXVZM0psWVhSbElEMGdZM0psWVhSbE8xeHVYRzV1YjBOdmJtWnNhV04wS0dsdWMzUXBP
MXh1WEc1cGJuTjBXeWRrWldaaGRXeDBKMTBnUFNCcGJuTjBPMXh1WEc1bGVIQnZjblFnWkdWbVlY
VnNkQ0JwYm5OME8xeHVJbDE5Cis7CitkZWZpbmUoJ2hhbmRsZWJhcnMvY29tcGlsZXIvYXN0Jyxb
J2V4cG9ydHMnLCAnbW9kdWxlJ10sIGZ1bmN0aW9uIChleHBvcnRzLCBtb2R1bGUpIHsKKyAgJ3Vz
ZSBzdHJpY3QnOworCisgIHZhciBBU1QgPSB7CisgICAgLy8gUHVibGljIEFQSSB1c2VkIHRvIGV2
YWx1YXRlIGRlcml2ZWQgYXR0cmlidXRlcyByZWdhcmRpbmcgQVNUIG5vZGVzCisgICAgaGVscGVy
czogeworICAgICAgLy8gYSBtdXN0YWNoZSBpcyBkZWZpbml0ZWx5IGEgaGVscGVyIGlmOgorICAg
ICAgLy8gKiBpdCBpcyBhbiBlbGlnaWJsZSBoZWxwZXIsIGFuZAorICAgICAgLy8gKiBpdCBoYXMg
YXQgbGVhc3Qgb25lIHBhcmFtZXRlciBvciBoYXNoIHNlZ21lbnQKKyAgICAgIGhlbHBlckV4cHJl
c3Npb246IGZ1bmN0aW9uIGhlbHBlckV4cHJlc3Npb24obm9kZSkgeworICAgICAgICByZXR1cm4g
bm9kZS50eXBlID09PSAnU3ViRXhwcmVzc2lvbicgfHwgKG5vZGUudHlwZSA9PT0gJ011c3RhY2hl
U3RhdGVtZW50JyB8fCBub2RlLnR5cGUgPT09ICdCbG9ja1N0YXRlbWVudCcpICYmICEhKG5vZGUu
cGFyYW1zICYmIG5vZGUucGFyYW1zLmxlbmd0aCB8fCBub2RlLmhhc2gpOworICAgICAgfSwKKwor
ICAgICAgc2NvcGVkSWQ6IGZ1bmN0aW9uIHNjb3BlZElkKHBhdGgpIHsKKyAgICAgICAgcmV0dXJu
ICgvXlwufHRoaXNcYi8udGVzdChwYXRoLm9yaWdpbmFsKQorICAgICAgICApOworICAgICAgfSwK
KworICAgICAgLy8gYW4gSUQgaXMgc2ltcGxlIGlmIGl0IG9ubHkgaGFzIG9uZSBwYXJ0LCBhbmQg
dGhhdCBwYXJ0IGlzIG5vdAorICAgICAgLy8gYC4uYCBvciBgdGhpc2AuCisgICAgICBzaW1wbGVJ
ZDogZnVuY3Rpb24gc2ltcGxlSWQocGF0aCkgeworICAgICAgICByZXR1cm4gcGF0aC5wYXJ0cy5s
ZW5ndGggPT09IDEgJiYgIUFTVC5oZWxwZXJzLnNjb3BlZElkKHBhdGgpICYmICFwYXRoLmRlcHRo
OworICAgICAgfQorICAgIH0KKyAgfTsKKworICAvLyBNdXN0IGJlIGV4cG9ydGVkIGFzIGFuIG9i
amVjdCByYXRoZXIgdGhhbiB0aGUgcm9vdCBvZiB0aGUgbW9kdWxlIGFzIHRoZSBqaXNvbiBsZXhl
cgorICAvLyBtdXN0IG1vZGlmeSB0aGUgb2JqZWN0IHRvIG9wZXJhdGUgcHJvcGVybHkuCisgIG1v
ZHVsZS5leHBvcnRzID0gQVNUOworfSk7CisvLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxp
Y2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSWk0dUx5
NHVMeTR1THk0dUwyeHBZaTlvWVc1a2JHVmlZWEp6TDJOdmJYQnBiR1Z5TDJGemRDNXFjeUpkTENK
dVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPenM3UVVGQlFTeE5RVUZKTEVkQlFVY3NSMEZC
UnpzN1FVRkZVaXhYUVVGUExFVkJRVVU3T3pzN1FVRkpVQ3h6UWtGQlowSXNSVUZCUlN3d1FrRkJV
eXhKUVVGSkxFVkJRVVU3UVVGREwwSXNaVUZCVHl4QlFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxF
dEJRVXNzWlVGQlpTeEpRVU0zUWl4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFdEJRVXNzYlVK
QlFXMUNMRWxCUVVrc1NVRkJTU3hEUVVGRExFbEJRVWtzUzBGQlN5eG5Ra0ZCWjBJc1EwRkJRU3hK
UVVOdVJTeERRVUZETEVWQlFVVXNRVUZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hKUVVGSkxFbEJR
VWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNUVUZCVFN4SlFVRkxMRWxCUVVrc1EwRkJReXhKUVVGSkxF
TkJRVUVzUVVGQlF5eEJRVUZETEVOQlFVTTdUMEZEYUVVN08wRkJSVVFzWTBGQlVTeEZRVUZGTEd0
Q1FVRlRMRWxCUVVrc1JVRkJSVHRCUVVOMlFpeGxRVUZQTEVGQlFVTXNZVUZCV1N4RFFVRkZMRWxC
UVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETzFWQlFVTTdUMEZETTBNN096czdR
VUZKUkN4alFVRlJMRVZCUVVVc2EwSkJRVk1zU1VGQlNTeEZRVUZGTzBGQlEzWkNMR1ZCUVU4c1NV
RkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eE5RVUZOTEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVN
c1IwRkJSeXhEUVVGRExFOUJRVThzUTBGQlF5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxC
UVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETzA5QlF6bEZPMHRCUTBZN1IwRkRS
aXhEUVVGRE96czdPMjFDUVV0aExFZEJRVWNpTENKbWFXeGxJam9pWVhOMExtcHpJaXdpYzI5MWNt
TmxjME52Ym5SbGJuUWlPbHNpYkdWMElFRlRWQ0E5SUh0Y2JpQWdMeThnVUhWaWJHbGpJRUZRU1NC
MWMyVmtJSFJ2SUdWMllXeDFZWFJsSUdSbGNtbDJaV1FnWVhSMGNtbGlkWFJsY3lCeVpXZGhjbVJw
Ym1jZ1FWTlVJRzV2WkdWelhHNGdJR2hsYkhCbGNuTTZJSHRjYmlBZ0lDQXZMeUJoSUcxMWMzUmhZ
MmhsSUdseklHUmxabWx1YVhSbGJIa2dZU0JvWld4d1pYSWdhV1k2WEc0Z0lDQWdMeThnS2lCcGRD
QnBjeUJoYmlCbGJHbG5hV0pzWlNCb1pXeHdaWElzSUdGdVpGeHVJQ0FnSUM4dklDb2dhWFFnYUdG
eklHRjBJR3hsWVhOMElHOXVaU0J3WVhKaGJXVjBaWElnYjNJZ2FHRnphQ0J6WldkdFpXNTBYRzRn
SUNBZ2FHVnNjR1Z5Ulhod2NtVnpjMmx2YmpvZ1puVnVZM1JwYjI0b2JtOWtaU2tnZTF4dUlDQWdJ
Q0FnY21WMGRYSnVJQ2h1YjJSbExuUjVjR1VnUFQwOUlDZFRkV0pGZUhCeVpYTnphVzl1SnlsY2Jp
QWdJQ0FnSUNBZ0lDQjhmQ0FvS0c1dlpHVXVkSGx3WlNBOVBUMGdKMDExYzNSaFkyaGxVM1JoZEdW
dFpXNTBKeUI4ZkNCdWIyUmxMblI1Y0dVZ1BUMDlJQ2RDYkc5amExTjBZWFJsYldWdWRDY3BYRzRn
SUNBZ0lDQWdJQ0FnSUNBbUppQWhJU2dvYm05a1pTNXdZWEpoYlhNZ0ppWWdibTlrWlM1d1lYSmhi
WE11YkdWdVozUm9LU0I4ZkNCdWIyUmxMbWhoYzJncEtUdGNiaUFnSUNCOUxGeHVYRzRnSUNBZ2My
TnZjR1ZrU1dRNklHWjFibU4wYVc5dUtIQmhkR2dwSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUFvTDE1
Y1hDNThkR2hwYzF4Y1lpOHBMblJsYzNRb2NHRjBhQzV2Y21sbmFXNWhiQ2s3WEc0Z0lDQWdmU3hj
Ymx4dUlDQWdJQzh2SUdGdUlFbEVJR2x6SUhOcGJYQnNaU0JwWmlCcGRDQnZibXg1SUdoaGN5QnZi
bVVnY0dGeWRDd2dZVzVrSUhSb1lYUWdjR0Z5ZENCcGN5QnViM1JjYmlBZ0lDQXZMeUJnTGk1Z0lH
OXlJR0IwYUdsellDNWNiaUFnSUNCemFXMXdiR1ZKWkRvZ1puVnVZM1JwYjI0b2NHRjBhQ2tnZTF4
dUlDQWdJQ0FnY21WMGRYSnVJSEJoZEdndWNHRnlkSE11YkdWdVozUm9JRDA5UFNBeElDWW1JQ0ZC
VTFRdWFHVnNjR1Z5Y3k1elkyOXdaV1JKWkNod1lYUm9LU0FtSmlBaGNHRjBhQzVrWlhCMGFEdGNi
aUFnSUNCOVhHNGdJSDFjYm4wN1hHNWNibHh1THk4Z1RYVnpkQ0JpWlNCbGVIQnZjblJsWkNCaGN5
QmhiaUJ2WW1wbFkzUWdjbUYwYUdWeUlIUm9ZVzRnZEdobElISnZiM1FnYjJZZ2RHaGxJRzF2WkhW
c1pTQmhjeUIwYUdVZ2FtbHpiMjRnYkdWNFpYSmNiaTh2SUcxMWMzUWdiVzlrYVdaNUlIUm9aU0J2
WW1wbFkzUWdkRzhnYjNCbGNtRjBaU0J3Y205d1pYSnNlUzVjYm1WNGNHOXlkQ0JrWldaaGRXeDBJ
RUZUVkR0Y2JpSmRmUT09Cis7CitkZWZpbmUoJ2hhbmRsZWJhcnMvY29tcGlsZXIvcGFyc2VyJyxb
ImV4cG9ydHMiXSwgZnVuY3Rpb24gKGV4cG9ydHMpIHsKKyAgICAvKiBpc3RhbmJ1bCBpZ25vcmUg
bmV4dCAqLworICAgIC8qIEppc29uIGdlbmVyYXRlZCBwYXJzZXIgKi8KKyAgICAidXNlIHN0cmlj
dCI7CisKKyAgICB2YXIgaGFuZGxlYmFycyA9IChmdW5jdGlvbiAoKSB7CisgICAgICAgIHZhciBw
YXJzZXIgPSB7IHRyYWNlOiBmdW5jdGlvbiB0cmFjZSgpIHt9LAorICAgICAgICAgICAgeXk6IHt9
LAorICAgICAgICAgICAgc3ltYm9sc186IHsgImVycm9yIjogMiwgInJvb3QiOiAzLCAicHJvZ3Jh
bSI6IDQsICJFT0YiOiA1LCAicHJvZ3JhbV9yZXBldGl0aW9uMCI6IDYsICJzdGF0ZW1lbnQiOiA3
LCAibXVzdGFjaGUiOiA4LCAiYmxvY2siOiA5LCAicmF3QmxvY2siOiAxMCwgInBhcnRpYWwiOiAx
MSwgInBhcnRpYWxCbG9jayI6IDEyLCAiY29udGVudCI6IDEzLCAiQ09NTUVOVCI6IDE0LCAiQ09O
VEVOVCI6IDE1LCAib3BlblJhd0Jsb2NrIjogMTYsICJyYXdCbG9ja19yZXBldGl0aW9uX3BsdXMw
IjogMTcsICJFTkRfUkFXX0JMT0NLIjogMTgsICJPUEVOX1JBV19CTE9DSyI6IDE5LCAiaGVscGVy
TmFtZSI6IDIwLCAib3BlblJhd0Jsb2NrX3JlcGV0aXRpb24wIjogMjEsICJvcGVuUmF3QmxvY2tf
b3B0aW9uMCI6IDIyLCAiQ0xPU0VfUkFXX0JMT0NLIjogMjMsICJvcGVuQmxvY2siOiAyNCwgImJs
b2NrX29wdGlvbjAiOiAyNSwgImNsb3NlQmxvY2siOiAyNiwgIm9wZW5JbnZlcnNlIjogMjcsICJi
bG9ja19vcHRpb24xIjogMjgsICJPUEVOX0JMT0NLIjogMjksICJvcGVuQmxvY2tfcmVwZXRpdGlv
bjAiOiAzMCwgIm9wZW5CbG9ja19vcHRpb24wIjogMzEsICJvcGVuQmxvY2tfb3B0aW9uMSI6IDMy
LCAiQ0xPU0UiOiAzMywgIk9QRU5fSU5WRVJTRSI6IDM0LCAib3BlbkludmVyc2VfcmVwZXRpdGlv
bjAiOiAzNSwgIm9wZW5JbnZlcnNlX29wdGlvbjAiOiAzNiwgIm9wZW5JbnZlcnNlX29wdGlvbjEi
OiAzNywgIm9wZW5JbnZlcnNlQ2hhaW4iOiAzOCwgIk9QRU5fSU5WRVJTRV9DSEFJTiI6IDM5LCAi
b3BlbkludmVyc2VDaGFpbl9yZXBldGl0aW9uMCI6IDQwLCAib3BlbkludmVyc2VDaGFpbl9vcHRp
b24wIjogNDEsICJvcGVuSW52ZXJzZUNoYWluX29wdGlvbjEiOiA0MiwgImludmVyc2VBbmRQcm9n
cmFtIjogNDMsICJJTlZFUlNFIjogNDQsICJpbnZlcnNlQ2hhaW4iOiA0NSwgImludmVyc2VDaGFp
bl9vcHRpb24wIjogNDYsICJPUEVOX0VOREJMT0NLIjogNDcsICJPUEVOIjogNDgsICJtdXN0YWNo
ZV9yZXBldGl0aW9uMCI6IDQ5LCAibXVzdGFjaGVfb3B0aW9uMCI6IDUwLCAiT1BFTl9VTkVTQ0FQ
RUQiOiA1MSwgIm11c3RhY2hlX3JlcGV0aXRpb24xIjogNTIsICJtdXN0YWNoZV9vcHRpb24xIjog
NTMsICJDTE9TRV9VTkVTQ0FQRUQiOiA1NCwgIk9QRU5fUEFSVElBTCI6IDU1LCAicGFydGlhbE5h
bWUiOiA1NiwgInBhcnRpYWxfcmVwZXRpdGlvbjAiOiA1NywgInBhcnRpYWxfb3B0aW9uMCI6IDU4
LCAib3BlblBhcnRpYWxCbG9jayI6IDU5LCAiT1BFTl9QQVJUSUFMX0JMT0NLIjogNjAsICJvcGVu
UGFydGlhbEJsb2NrX3JlcGV0aXRpb24wIjogNjEsICJvcGVuUGFydGlhbEJsb2NrX29wdGlvbjAi
OiA2MiwgInBhcmFtIjogNjMsICJzZXhwciI6IDY0LCAiT1BFTl9TRVhQUiI6IDY1LCAic2V4cHJf
cmVwZXRpdGlvbjAiOiA2NiwgInNleHByX29wdGlvbjAiOiA2NywgIkNMT1NFX1NFWFBSIjogNjgs
ICJoYXNoIjogNjksICJoYXNoX3JlcGV0aXRpb25fcGx1czAiOiA3MCwgImhhc2hTZWdtZW50Ijog
NzEsICJJRCI6IDcyLCAiRVFVQUxTIjogNzMsICJibG9ja1BhcmFtcyI6IDc0LCAiT1BFTl9CTE9D
S19QQVJBTVMiOiA3NSwgImJsb2NrUGFyYW1zX3JlcGV0aXRpb25fcGx1czAiOiA3NiwgIkNMT1NF
X0JMT0NLX1BBUkFNUyI6IDc3LCAicGF0aCI6IDc4LCAiZGF0YU5hbWUiOiA3OSwgIlNUUklORyI6
IDgwLCAiTlVNQkVSIjogODEsICJCT09MRUFOIjogODIsICJVTkRFRklORUQiOiA4MywgIk5VTEwi
OiA4NCwgIkRBVEEiOiA4NSwgInBhdGhTZWdtZW50cyI6IDg2LCAiU0VQIjogODcsICIkYWNjZXB0
IjogMCwgIiRlbmQiOiAxIH0sCisgICAgICAgICAgICB0ZXJtaW5hbHNfOiB7IDI6ICJlcnJvciIs
IDU6ICJFT0YiLCAxNDogIkNPTU1FTlQiLCAxNTogIkNPTlRFTlQiLCAxODogIkVORF9SQVdfQkxP
Q0siLCAxOTogIk9QRU5fUkFXX0JMT0NLIiwgMjM6ICJDTE9TRV9SQVdfQkxPQ0siLCAyOTogIk9Q
RU5fQkxPQ0siLCAzMzogIkNMT1NFIiwgMzQ6ICJPUEVOX0lOVkVSU0UiLCAzOTogIk9QRU5fSU5W
RVJTRV9DSEFJTiIsIDQ0OiAiSU5WRVJTRSIsIDQ3OiAiT1BFTl9FTkRCTE9DSyIsIDQ4OiAiT1BF
TiIsIDUxOiAiT1BFTl9VTkVTQ0FQRUQiLCA1NDogIkNMT1NFX1VORVNDQVBFRCIsIDU1OiAiT1BF
Tl9QQVJUSUFMIiwgNjA6ICJPUEVOX1BBUlRJQUxfQkxPQ0siLCA2NTogIk9QRU5fU0VYUFIiLCA2
ODogIkNMT1NFX1NFWFBSIiwgNzI6ICJJRCIsIDczOiAiRVFVQUxTIiwgNzU6ICJPUEVOX0JMT0NL
X1BBUkFNUyIsIDc3OiAiQ0xPU0VfQkxPQ0tfUEFSQU1TIiwgODA6ICJTVFJJTkciLCA4MTogIk5V
TUJFUiIsIDgyOiAiQk9PTEVBTiIsIDgzOiAiVU5ERUZJTkVEIiwgODQ6ICJOVUxMIiwgODU6ICJE
QVRBIiwgODc6ICJTRVAiIH0sCisgICAgICAgICAgICBwcm9kdWN0aW9uc186IFswLCBbMywgMl0s
IFs0LCAxXSwgWzcsIDFdLCBbNywgMV0sIFs3LCAxXSwgWzcsIDFdLCBbNywgMV0sIFs3LCAxXSwg
WzcsIDFdLCBbMTMsIDFdLCBbMTAsIDNdLCBbMTYsIDVdLCBbOSwgNF0sIFs5LCA0XSwgWzI0LCA2
XSwgWzI3LCA2XSwgWzM4LCA2XSwgWzQzLCAyXSwgWzQ1LCAzXSwgWzQ1LCAxXSwgWzI2LCAzXSwg
WzgsIDVdLCBbOCwgNV0sIFsxMSwgNV0sIFsxMiwgM10sIFs1OSwgNV0sIFs2MywgMV0sIFs2Mywg
MV0sIFs2NCwgNV0sIFs2OSwgMV0sIFs3MSwgM10sIFs3NCwgM10sIFsyMCwgMV0sIFsyMCwgMV0s
IFsyMCwgMV0sIFsyMCwgMV0sIFsyMCwgMV0sIFsyMCwgMV0sIFsyMCwgMV0sIFs1NiwgMV0sIFs1
NiwgMV0sIFs3OSwgMl0sIFs3OCwgMV0sIFs4NiwgM10sIFs4NiwgMV0sIFs2LCAwXSwgWzYsIDJd
LCBbMTcsIDFdLCBbMTcsIDJdLCBbMjEsIDBdLCBbMjEsIDJdLCBbMjIsIDBdLCBbMjIsIDFdLCBb
MjUsIDBdLCBbMjUsIDFdLCBbMjgsIDBdLCBbMjgsIDFdLCBbMzAsIDBdLCBbMzAsIDJdLCBbMzEs
IDBdLCBbMzEsIDFdLCBbMzIsIDBdLCBbMzIsIDFdLCBbMzUsIDBdLCBbMzUsIDJdLCBbMzYsIDBd
LCBbMzYsIDFdLCBbMzcsIDBdLCBbMzcsIDFdLCBbNDAsIDBdLCBbNDAsIDJdLCBbNDEsIDBdLCBb
NDEsIDFdLCBbNDIsIDBdLCBbNDIsIDFdLCBbNDYsIDBdLCBbNDYsIDFdLCBbNDksIDBdLCBbNDks
IDJdLCBbNTAsIDBdLCBbNTAsIDFdLCBbNTIsIDBdLCBbNTIsIDJdLCBbNTMsIDBdLCBbNTMsIDFd
LCBbNTcsIDBdLCBbNTcsIDJdLCBbNTgsIDBdLCBbNTgsIDFdLCBbNjEsIDBdLCBbNjEsIDJdLCBb
NjIsIDBdLCBbNjIsIDFdLCBbNjYsIDBdLCBbNjYsIDJdLCBbNjcsIDBdLCBbNjcsIDFdLCBbNzAs
IDFdLCBbNzAsIDJdLCBbNzYsIDFdLCBbNzYsIDJdXSwKKyAgICAgICAgICAgIHBlcmZvcm1BY3Rp
b246IGZ1bmN0aW9uIGFub255bW91cyh5eXRleHQsIHl5bGVuZywgeXlsaW5lbm8sIHl5LCB5eXN0
YXRlLCAkJCwgXyQKKyAgICAgICAgICAgIC8qKi8pIHsKKworICAgICAgICAgICAgICAgIHZhciAk
MCA9ICQkLmxlbmd0aCAtIDE7CisgICAgICAgICAgICAgICAgc3dpdGNoICh5eXN0YXRlKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biAkJFskMCAtIDFdOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHl5LnBy
ZXBhcmVQcm9ncmFtKCQkWyQwXSk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4k
ID0gJCRbJDBdOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNl
IDU6CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSAkJFskMF07CisgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA2OgorICAgICAg
ICAgICAgICAgICAgICAgICAgdGhpcy4kID0gJCRbJDBdOworICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNzoKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHRoaXMuJCA9ICQkWyQwXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgICAgICBjYXNlIDg6CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlz
LiQgPSAkJFskMF07CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICAgICAgY2FzZSA5OgorICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0geworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdDb21tZW50U3RhdGVtZW50JywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogeXkuc3RyaXBDb21tZW50KCQkWyQwXSksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaXA6IHl5LnN0cmlwRmxhZ3MoJCRbJDBdLCAk
JFskMF0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYzogeXkubG9jSW5mbyh0aGlz
Ll8kKQorICAgICAgICAgICAgICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMTA6CisgICAgICAgICAgICAgICAg
ICAgICAgICB0aGlzLiQgPSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ0Nv
bnRlbnRTdGF0ZW1lbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsOiAk
JFskMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICQkWyQwXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsb2M6IHl5LmxvY0luZm8odGhpcy5fJCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgICAgICBjYXNlIDExOgorICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4k
ID0geXkucHJlcGFyZVJhd0Jsb2NrKCQkWyQwIC0gMl0sICQkWyQwIC0gMV0sICQkWyQwXSwgdGhp
cy5fJCk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAg
ICAgY2FzZSAxMjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHsgcGF0aDogJCRb
JDAgLSAzXSwgcGFyYW1zOiAkJFskMCAtIDJdLCBoYXNoOiAkJFskMCAtIDFdIH07CisgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAxMzoKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHl5LnByZXBhcmVCbG9jaygkJFskMCAtIDNd
LCAkJFskMCAtIDJdLCAkJFskMCAtIDFdLCAkJFskMF0sIGZhbHNlLCB0aGlzLl8kKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDE0Ogor
ICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0geXkucHJlcGFyZUJsb2NrKCQkWyQwIC0g
M10sICQkWyQwIC0gMl0sICQkWyQwIC0gMV0sICQkWyQwXSwgdHJ1ZSwgdGhpcy5fJCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAxNToK
KyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHsgb3BlbjogJCRbJDAgLSA1XSwgcGF0
aDogJCRbJDAgLSA0XSwgcGFyYW1zOiAkJFskMCAtIDNdLCBoYXNoOiAkJFskMCAtIDJdLCBibG9j
a1BhcmFtczogJCRbJDAgLSAxXSwgc3RyaXA6IHl5LnN0cmlwRmxhZ3MoJCRbJDAgLSA1XSwgJCRb
JDBdKSB9OworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
ICAgIGNhc2UgMTY6CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB7IHBhdGg6ICQk
WyQwIC0gNF0sIHBhcmFtczogJCRbJDAgLSAzXSwgaGFzaDogJCRbJDAgLSAyXSwgYmxvY2tQYXJh
bXM6ICQkWyQwIC0gMV0sIHN0cmlwOiB5eS5zdHJpcEZsYWdzKCQkWyQwIC0gNV0sICQkWyQwXSkg
fTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBj
YXNlIDE3OgorICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0geyBwYXRoOiAkJFskMCAt
IDRdLCBwYXJhbXM6ICQkWyQwIC0gM10sIGhhc2g6ICQkWyQwIC0gMl0sIGJsb2NrUGFyYW1zOiAk
JFskMCAtIDFdLCBzdHJpcDogeXkuc3RyaXBGbGFncygkJFskMCAtIDVdLCAkJFskMF0pIH07Cisg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAx
ODoKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHsgc3RyaXA6IHl5LnN0cmlwRmxh
Z3MoJCRbJDAgLSAxXSwgJCRbJDAgLSAxXSksIHByb2dyYW06ICQkWyQwXSB9OworICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMTk6CisgICAg
ICAgICAgICAgICAgICAgICAgICB2YXIgaW52ZXJzZSA9IHl5LnByZXBhcmVCbG9jaygkJFskMCAt
IDJdLCAkJFskMCAtIDFdLCAkJFskMF0sICQkWyQwXSwgZmFsc2UsIHRoaXMuXyQpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0gPSB5eS5wcmVwYXJlUHJvZ3JhbShbaW52ZXJz
ZV0sICQkWyQwIC0gMV0ubG9jKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0uY2hh
aW5lZCA9IHRydWU7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHsgc3RyaXA6
ICQkWyQwIC0gMl0uc3RyaXAsIHByb2dyYW06IHByb2dyYW0sIGNoYWluOiB0cnVlIH07CisKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDIw
OgorICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gJCRbJDBdOworICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMjE6CisgICAgICAg
ICAgICAgICAgICAgICAgICB0aGlzLiQgPSB7IHBhdGg6ICQkWyQwIC0gMV0sIHN0cmlwOiB5eS5z
dHJpcEZsYWdzKCQkWyQwIC0gMl0sICQkWyQwXSkgfTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDIyOgorICAgICAgICAgICAgICAgICAg
ICAgICAgdGhpcy4kID0geXkucHJlcGFyZU11c3RhY2hlKCQkWyQwIC0gM10sICQkWyQwIC0gMl0s
ICQkWyQwIC0gMV0sICQkWyQwIC0gNF0sIHl5LnN0cmlwRmxhZ3MoJCRbJDAgLSA0XSwgJCRbJDBd
KSwgdGhpcy5fJCk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICAgICAgY2FzZSAyMzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHl5LnBy
ZXBhcmVNdXN0YWNoZSgkJFskMCAtIDNdLCAkJFskMCAtIDJdLCAkJFskMCAtIDFdLCAkJFskMCAt
IDRdLCB5eS5zdHJpcEZsYWdzKCQkWyQwIC0gNF0sICQkWyQwXSksIHRoaXMuXyQpOworICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMjQ6Cisg
ICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdHlwZTogJ1BhcnRpYWxTdGF0ZW1lbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5hbWU6ICQkWyQwIC0gM10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1z
OiAkJFskMCAtIDJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2g6ICQkWyQwIC0g
MV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZW50OiAnJywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdHJpcDogeXkuc3RyaXBGbGFncygkJFskMCAtIDRdLCAkJFskMF0p
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYzogeXkubG9jSW5mbyh0aGlzLl8kKQor
ICAgICAgICAgICAgICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMjU6CisgICAgICAgICAgICAgICAgICAgICAg
ICB0aGlzLiQgPSB5eS5wcmVwYXJlUGFydGlhbEJsb2NrKCQkWyQwIC0gMl0sICQkWyQwIC0gMV0s
ICQkWyQwXSwgdGhpcy5fJCk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICAgICAgY2FzZSAyNjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9
IHsgcGF0aDogJCRbJDAgLSAzXSwgcGFyYW1zOiAkJFskMCAtIDJdLCBoYXNoOiAkJFskMCAtIDFd
LCBzdHJpcDogeXkuc3RyaXBGbGFncygkJFskMCAtIDRdLCAkJFskMF0pIH07CisgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAyNzoKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDI4OgorICAgICAgICAgICAgICAg
ICAgICAgICAgdGhpcy4kID0gJCRbJDBdOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMjk6CisgICAgICAgICAgICAgICAgICAgICAgICB0
aGlzLiQgPSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ1N1YkV4cHJlc3Np
b24nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6ICQkWyQwIC0gM10sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiAkJFskMCAtIDJdLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGhhc2g6ICQkWyQwIC0gMV0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbG9jOiB5eS5sb2NJbmZvKHRoaXMuXyQpCisgICAgICAgICAgICAgICAgICAgICAgICB9
OworCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAg
Y2FzZSAzMDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHsgdHlwZTogJ0hhc2gn
LCBwYWlyczogJCRbJDBdLCBsb2M6IHl5LmxvY0luZm8odGhpcy5fJCkgfTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDMxOgorICAgICAg
ICAgICAgICAgICAgICAgICAgdGhpcy4kID0geyB0eXBlOiAnSGFzaFBhaXInLCBrZXk6IHl5Lmlk
KCQkWyQwIC0gMl0pLCB2YWx1ZTogJCRbJDBdLCBsb2M6IHl5LmxvY0luZm8odGhpcy5fJCkgfTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNl
IDMyOgorICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0geXkuaWQoJCRbJDAgLSAxXSk7
CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2Fz
ZSAzMzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDM0OgorICAg
ICAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gJCRbJDBdOworICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMzU6CisgICAgICAgICAgICAg
ICAgICAgICAgICB0aGlzLiQgPSB7IHR5cGU6ICdTdHJpbmdMaXRlcmFsJywgdmFsdWU6ICQkWyQw
XSwgb3JpZ2luYWw6ICQkWyQwXSwgbG9jOiB5eS5sb2NJbmZvKHRoaXMuXyQpIH07CisgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAzNjoKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHsgdHlwZTogJ051bWJlckxpdGVyYWwnLCB2
YWx1ZTogTnVtYmVyKCQkWyQwXSksIG9yaWdpbmFsOiBOdW1iZXIoJCRbJDBdKSwgbG9jOiB5eS5s
b2NJbmZvKHRoaXMuXyQpIH07CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICAgICAgY2FzZSAzNzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9
IHsgdHlwZTogJ0Jvb2xlYW5MaXRlcmFsJywgdmFsdWU6ICQkWyQwXSA9PT0gJ3RydWUnLCBvcmln
aW5hbDogJCRbJDBdID09PSAndHJ1ZScsIGxvYzogeXkubG9jSW5mbyh0aGlzLl8kKSB9OworICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMzg6
CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB7IHR5cGU6ICdVbmRlZmluZWRMaXRl
cmFsJywgb3JpZ2luYWw6IHVuZGVmaW5lZCwgdmFsdWU6IHVuZGVmaW5lZCwgbG9jOiB5eS5sb2NJ
bmZvKHRoaXMuXyQpIH07CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICAgICAgY2FzZSAzOToKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHsg
dHlwZTogJ051bGxMaXRlcmFsJywgb3JpZ2luYWw6IG51bGwsIHZhbHVlOiBudWxsLCBsb2M6IHl5
LmxvY0luZm8odGhpcy5fJCkgfTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgICAgICBjYXNlIDQwOgorICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4k
ID0gJCRbJDBdOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICAgIGNhc2UgNDE6CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSAkJFskMF07
CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2Fz
ZSA0MjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHl5LnByZXBhcmVQYXRoKHRy
dWUsICQkWyQwXSwgdGhpcy5fJCk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICAgICAgY2FzZSA0MzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMu
JCA9IHl5LnByZXBhcmVQYXRoKGZhbHNlLCAkJFskMF0sIHRoaXMuXyQpOworICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNDQ6CisgICAgICAg
ICAgICAgICAgICAgICAgICAkJFskMCAtIDJdLnB1c2goeyBwYXJ0OiB5eS5pZCgkJFskMF0pLCBv
cmlnaW5hbDogJCRbJDBdLCBzZXBhcmF0b3I6ICQkWyQwIC0gMV0gfSk7dGhpcy4kID0gJCRbJDAg
LSAyXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAg
ICBjYXNlIDQ1OgorICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gW3sgcGFydDogeXku
aWQoJCRbJDBdKSwgb3JpZ2luYWw6ICQkWyQwXSB9XTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDQ2OgorICAgICAgICAgICAgICAgICAg
ICAgICAgdGhpcy4kID0gW107CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICAgICAgY2FzZSA0NzoKKyAgICAgICAgICAgICAgICAgICAgICAgICQkWyQwIC0g
MV0ucHVzaCgkJFskMF0pOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgICAgIGNhc2UgNDg6CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSBb
JCRbJDBdXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgICBjYXNlIDQ5OgorICAgICAgICAgICAgICAgICAgICAgICAgJCRbJDAgLSAxXS5wdXNoKCQk
WyQwXSk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAg
ICAgY2FzZSA1MDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IFtdOworICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNTE6Cisg
ICAgICAgICAgICAgICAgICAgICAgICAkJFskMCAtIDFdLnB1c2goJCRbJDBdKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDU4OgorICAg
ICAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gW107CisgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA1OToKKyAgICAgICAgICAgICAgICAg
ICAgICAgICQkWyQwIC0gMV0ucHVzaCgkJFskMF0pOworICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNjQ6CisgICAgICAgICAgICAgICAgICAg
ICAgICB0aGlzLiQgPSBbXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgICAgICBjYXNlIDY1OgorICAgICAgICAgICAgICAgICAgICAgICAgJCRbJDAgLSAx
XS5wdXNoKCQkWyQwXSk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICAgICAgY2FzZSA3MDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IFtd
OworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNh
c2UgNzE6CisgICAgICAgICAgICAgICAgICAgICAgICAkJFskMCAtIDFdLnB1c2goJCRbJDBdKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNl
IDc4OgorICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gW107CisgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA3OToKKyAgICAgICAg
ICAgICAgICAgICAgICAgICQkWyQwIC0gMV0ucHVzaCgkJFskMF0pOworICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgODI6CisgICAgICAgICAg
ICAgICAgICAgICAgICB0aGlzLiQgPSBbXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgICAgICBjYXNlIDgzOgorICAgICAgICAgICAgICAgICAgICAgICAg
JCRbJDAgLSAxXS5wdXNoKCQkWyQwXSk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICAgICAgY2FzZSA4NjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHRo
aXMuJCA9IFtdOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICAgIGNhc2UgODc6CisgICAgICAgICAgICAgICAgICAgICAgICAkJFskMCAtIDFdLnB1c2go
JCRbJDBdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgICBjYXNlIDkwOgorICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gW107CisgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA5MToK
KyAgICAgICAgICAgICAgICAgICAgICAgICQkWyQwIC0gMV0ucHVzaCgkJFskMF0pOworICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgOTQ6Cisg
ICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSBbXTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDk1OgorICAgICAgICAgICAgICAg
ICAgICAgICAgJCRbJDAgLSAxXS5wdXNoKCQkWyQwXSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA5ODoKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHRoaXMuJCA9IFskJFskMF1dOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgICAgIGNhc2UgOTk6CisgICAgICAgICAgICAgICAgICAgICAgICAk
JFskMCAtIDFdLnB1c2goJCRbJDBdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgICAgICBjYXNlIDEwMDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHRo
aXMuJCA9IFskJFskMF1dOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgICAgIGNhc2UgMTAxOgorICAgICAgICAgICAgICAgICAgICAgICAgJCRbJDAgLSAx
XS5wdXNoKCQkWyQwXSk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgdGFibGU6IFt7IDM6IDEsIDQ6
IDIsIDU6IFsyLCA0Nl0sIDY6IDMsIDE0OiBbMiwgNDZdLCAxNTogWzIsIDQ2XSwgMTk6IFsyLCA0
Nl0sIDI5OiBbMiwgNDZdLCAzNDogWzIsIDQ2XSwgNDg6IFsyLCA0Nl0sIDUxOiBbMiwgNDZdLCA1
NTogWzIsIDQ2XSwgNjA6IFsyLCA0Nl0gfSwgeyAxOiBbM10gfSwgeyA1OiBbMSwgNF0gfSwgeyA1
OiBbMiwgMl0sIDc6IDUsIDg6IDYsIDk6IDcsIDEwOiA4LCAxMTogOSwgMTI6IDEwLCAxMzogMTEs
IDE0OiBbMSwgMTJdLCAxNTogWzEsIDIwXSwgMTY6IDE3LCAxOTogWzEsIDIzXSwgMjQ6IDE1LCAy
NzogMTYsIDI5OiBbMSwgMjFdLCAzNDogWzEsIDIyXSwgMzk6IFsyLCAyXSwgNDQ6IFsyLCAyXSwg
NDc6IFsyLCAyXSwgNDg6IFsxLCAxM10sIDUxOiBbMSwgMTRdLCA1NTogWzEsIDE4XSwgNTk6IDE5
LCA2MDogWzEsIDI0XSB9LCB7IDE6IFsyLCAxXSB9LCB7IDU6IFsyLCA0N10sIDE0OiBbMiwgNDdd
LCAxNTogWzIsIDQ3XSwgMTk6IFsyLCA0N10sIDI5OiBbMiwgNDddLCAzNDogWzIsIDQ3XSwgMzk6
IFsyLCA0N10sIDQ0OiBbMiwgNDddLCA0NzogWzIsIDQ3XSwgNDg6IFsyLCA0N10sIDUxOiBbMiwg
NDddLCA1NTogWzIsIDQ3XSwgNjA6IFsyLCA0N10gfSwgeyA1OiBbMiwgM10sIDE0OiBbMiwgM10s
IDE1OiBbMiwgM10sIDE5OiBbMiwgM10sIDI5OiBbMiwgM10sIDM0OiBbMiwgM10sIDM5OiBbMiwg
M10sIDQ0OiBbMiwgM10sIDQ3OiBbMiwgM10sIDQ4OiBbMiwgM10sIDUxOiBbMiwgM10sIDU1OiBb
MiwgM10sIDYwOiBbMiwgM10gfSwgeyA1OiBbMiwgNF0sIDE0OiBbMiwgNF0sIDE1OiBbMiwgNF0s
IDE5OiBbMiwgNF0sIDI5OiBbMiwgNF0sIDM0OiBbMiwgNF0sIDM5OiBbMiwgNF0sIDQ0OiBbMiwg
NF0sIDQ3OiBbMiwgNF0sIDQ4OiBbMiwgNF0sIDUxOiBbMiwgNF0sIDU1OiBbMiwgNF0sIDYwOiBb
MiwgNF0gfSwgeyA1OiBbMiwgNV0sIDE0OiBbMiwgNV0sIDE1OiBbMiwgNV0sIDE5OiBbMiwgNV0s
IDI5OiBbMiwgNV0sIDM0OiBbMiwgNV0sIDM5OiBbMiwgNV0sIDQ0OiBbMiwgNV0sIDQ3OiBbMiwg
NV0sIDQ4OiBbMiwgNV0sIDUxOiBbMiwgNV0sIDU1OiBbMiwgNV0sIDYwOiBbMiwgNV0gfSwgeyA1
OiBbMiwgNl0sIDE0OiBbMiwgNl0sIDE1OiBbMiwgNl0sIDE5OiBbMiwgNl0sIDI5OiBbMiwgNl0s
IDM0OiBbMiwgNl0sIDM5OiBbMiwgNl0sIDQ0OiBbMiwgNl0sIDQ3OiBbMiwgNl0sIDQ4OiBbMiwg
Nl0sIDUxOiBbMiwgNl0sIDU1OiBbMiwgNl0sIDYwOiBbMiwgNl0gfSwgeyA1OiBbMiwgN10sIDE0
OiBbMiwgN10sIDE1OiBbMiwgN10sIDE5OiBbMiwgN10sIDI5OiBbMiwgN10sIDM0OiBbMiwgN10s
IDM5OiBbMiwgN10sIDQ0OiBbMiwgN10sIDQ3OiBbMiwgN10sIDQ4OiBbMiwgN10sIDUxOiBbMiwg
N10sIDU1OiBbMiwgN10sIDYwOiBbMiwgN10gfSwgeyA1OiBbMiwgOF0sIDE0OiBbMiwgOF0sIDE1
OiBbMiwgOF0sIDE5OiBbMiwgOF0sIDI5OiBbMiwgOF0sIDM0OiBbMiwgOF0sIDM5OiBbMiwgOF0s
IDQ0OiBbMiwgOF0sIDQ3OiBbMiwgOF0sIDQ4OiBbMiwgOF0sIDUxOiBbMiwgOF0sIDU1OiBbMiwg
OF0sIDYwOiBbMiwgOF0gfSwgeyA1OiBbMiwgOV0sIDE0OiBbMiwgOV0sIDE1OiBbMiwgOV0sIDE5
OiBbMiwgOV0sIDI5OiBbMiwgOV0sIDM0OiBbMiwgOV0sIDM5OiBbMiwgOV0sIDQ0OiBbMiwgOV0s
IDQ3OiBbMiwgOV0sIDQ4OiBbMiwgOV0sIDUxOiBbMiwgOV0sIDU1OiBbMiwgOV0sIDYwOiBbMiwg
OV0gfSwgeyAyMDogMjUsIDcyOiBbMSwgMzVdLCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0s
IDgxOiBbMSwgMjldLCA4MjogWzEsIDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTog
WzEsIDM0XSwgODY6IDMzIH0sIHsgMjA6IDM2LCA3MjogWzEsIDM1XSwgNzg6IDI2LCA3OTogMjcs
IDgwOiBbMSwgMjhdLCA4MTogWzEsIDI5XSwgODI6IFsxLCAzMF0sIDgzOiBbMSwgMzFdLCA4NDog
WzEsIDMyXSwgODU6IFsxLCAzNF0sIDg2OiAzMyB9LCB7IDQ6IDM3LCA2OiAzLCAxNDogWzIsIDQ2
XSwgMTU6IFsyLCA0Nl0sIDE5OiBbMiwgNDZdLCAyOTogWzIsIDQ2XSwgMzQ6IFsyLCA0Nl0sIDM5
OiBbMiwgNDZdLCA0NDogWzIsIDQ2XSwgNDc6IFsyLCA0Nl0sIDQ4OiBbMiwgNDZdLCA1MTogWzIs
IDQ2XSwgNTU6IFsyLCA0Nl0sIDYwOiBbMiwgNDZdIH0sIHsgNDogMzgsIDY6IDMsIDE0OiBbMiwg
NDZdLCAxNTogWzIsIDQ2XSwgMTk6IFsyLCA0Nl0sIDI5OiBbMiwgNDZdLCAzNDogWzIsIDQ2XSwg
NDQ6IFsyLCA0Nl0sIDQ3OiBbMiwgNDZdLCA0ODogWzIsIDQ2XSwgNTE6IFsyLCA0Nl0sIDU1OiBb
MiwgNDZdLCA2MDogWzIsIDQ2XSB9LCB7IDEzOiA0MCwgMTU6IFsxLCAyMF0sIDE3OiAzOSB9LCB7
IDIwOiA0MiwgNTY6IDQxLCA2NDogNDMsIDY1OiBbMSwgNDRdLCA3MjogWzEsIDM1XSwgNzg6IDI2
LCA3OTogMjcsIDgwOiBbMSwgMjhdLCA4MTogWzEsIDI5XSwgODI6IFsxLCAzMF0sIDgzOiBbMSwg
MzFdLCA4NDogWzEsIDMyXSwgODU6IFsxLCAzNF0sIDg2OiAzMyB9LCB7IDQ6IDQ1LCA2OiAzLCAx
NDogWzIsIDQ2XSwgMTU6IFsyLCA0Nl0sIDE5OiBbMiwgNDZdLCAyOTogWzIsIDQ2XSwgMzQ6IFsy
LCA0Nl0sIDQ3OiBbMiwgNDZdLCA0ODogWzIsIDQ2XSwgNTE6IFsyLCA0Nl0sIDU1OiBbMiwgNDZd
LCA2MDogWzIsIDQ2XSB9LCB7IDU6IFsyLCAxMF0sIDE0OiBbMiwgMTBdLCAxNTogWzIsIDEwXSwg
MTg6IFsyLCAxMF0sIDE5OiBbMiwgMTBdLCAyOTogWzIsIDEwXSwgMzQ6IFsyLCAxMF0sIDM5OiBb
MiwgMTBdLCA0NDogWzIsIDEwXSwgNDc6IFsyLCAxMF0sIDQ4OiBbMiwgMTBdLCA1MTogWzIsIDEw
XSwgNTU6IFsyLCAxMF0sIDYwOiBbMiwgMTBdIH0sIHsgMjA6IDQ2LCA3MjogWzEsIDM1XSwgNzg6
IDI2LCA3OTogMjcsIDgwOiBbMSwgMjhdLCA4MTogWzEsIDI5XSwgODI6IFsxLCAzMF0sIDgzOiBb
MSwgMzFdLCA4NDogWzEsIDMyXSwgODU6IFsxLCAzNF0sIDg2OiAzMyB9LCB7IDIwOiA0NywgNzI6
IFsxLCAzNV0sIDc4OiAyNiwgNzk6IDI3LCA4MDogWzEsIDI4XSwgODE6IFsxLCAyOV0sIDgyOiBb
MSwgMzBdLCA4MzogWzEsIDMxXSwgODQ6IFsxLCAzMl0sIDg1OiBbMSwgMzRdLCA4NjogMzMgfSwg
eyAyMDogNDgsIDcyOiBbMSwgMzVdLCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0sIDgxOiBb
MSwgMjldLCA4MjogWzEsIDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0
XSwgODY6IDMzIH0sIHsgMjA6IDQyLCA1NjogNDksIDY0OiA0MywgNjU6IFsxLCA0NF0sIDcyOiBb
MSwgMzVdLCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0sIDgxOiBbMSwgMjldLCA4MjogWzEs
IDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwgODY6IDMzIH0sIHsg
MzM6IFsyLCA3OF0sIDQ5OiA1MCwgNjU6IFsyLCA3OF0sIDcyOiBbMiwgNzhdLCA4MDogWzIsIDc4
XSwgODE6IFsyLCA3OF0sIDgyOiBbMiwgNzhdLCA4MzogWzIsIDc4XSwgODQ6IFsyLCA3OF0sIDg1
OiBbMiwgNzhdIH0sIHsgMjM6IFsyLCAzM10sIDMzOiBbMiwgMzNdLCA1NDogWzIsIDMzXSwgNjU6
IFsyLCAzM10sIDY4OiBbMiwgMzNdLCA3MjogWzIsIDMzXSwgNzU6IFsyLCAzM10sIDgwOiBbMiwg
MzNdLCA4MTogWzIsIDMzXSwgODI6IFsyLCAzM10sIDgzOiBbMiwgMzNdLCA4NDogWzIsIDMzXSwg
ODU6IFsyLCAzM10gfSwgeyAyMzogWzIsIDM0XSwgMzM6IFsyLCAzNF0sIDU0OiBbMiwgMzRdLCA2
NTogWzIsIDM0XSwgNjg6IFsyLCAzNF0sIDcyOiBbMiwgMzRdLCA3NTogWzIsIDM0XSwgODA6IFsy
LCAzNF0sIDgxOiBbMiwgMzRdLCA4MjogWzIsIDM0XSwgODM6IFsyLCAzNF0sIDg0OiBbMiwgMzRd
LCA4NTogWzIsIDM0XSB9LCB7IDIzOiBbMiwgMzVdLCAzMzogWzIsIDM1XSwgNTQ6IFsyLCAzNV0s
IDY1OiBbMiwgMzVdLCA2ODogWzIsIDM1XSwgNzI6IFsyLCAzNV0sIDc1OiBbMiwgMzVdLCA4MDog
WzIsIDM1XSwgODE6IFsyLCAzNV0sIDgyOiBbMiwgMzVdLCA4MzogWzIsIDM1XSwgODQ6IFsyLCAz
NV0sIDg1OiBbMiwgMzVdIH0sIHsgMjM6IFsyLCAzNl0sIDMzOiBbMiwgMzZdLCA1NDogWzIsIDM2
XSwgNjU6IFsyLCAzNl0sIDY4OiBbMiwgMzZdLCA3MjogWzIsIDM2XSwgNzU6IFsyLCAzNl0sIDgw
OiBbMiwgMzZdLCA4MTogWzIsIDM2XSwgODI6IFsyLCAzNl0sIDgzOiBbMiwgMzZdLCA4NDogWzIs
IDM2XSwgODU6IFsyLCAzNl0gfSwgeyAyMzogWzIsIDM3XSwgMzM6IFsyLCAzN10sIDU0OiBbMiwg
MzddLCA2NTogWzIsIDM3XSwgNjg6IFsyLCAzN10sIDcyOiBbMiwgMzddLCA3NTogWzIsIDM3XSwg
ODA6IFsyLCAzN10sIDgxOiBbMiwgMzddLCA4MjogWzIsIDM3XSwgODM6IFsyLCAzN10sIDg0OiBb
MiwgMzddLCA4NTogWzIsIDM3XSB9LCB7IDIzOiBbMiwgMzhdLCAzMzogWzIsIDM4XSwgNTQ6IFsy
LCAzOF0sIDY1OiBbMiwgMzhdLCA2ODogWzIsIDM4XSwgNzI6IFsyLCAzOF0sIDc1OiBbMiwgMzhd
LCA4MDogWzIsIDM4XSwgODE6IFsyLCAzOF0sIDgyOiBbMiwgMzhdLCA4MzogWzIsIDM4XSwgODQ6
IFsyLCAzOF0sIDg1OiBbMiwgMzhdIH0sIHsgMjM6IFsyLCAzOV0sIDMzOiBbMiwgMzldLCA1NDog
WzIsIDM5XSwgNjU6IFsyLCAzOV0sIDY4OiBbMiwgMzldLCA3MjogWzIsIDM5XSwgNzU6IFsyLCAz
OV0sIDgwOiBbMiwgMzldLCA4MTogWzIsIDM5XSwgODI6IFsyLCAzOV0sIDgzOiBbMiwgMzldLCA4
NDogWzIsIDM5XSwgODU6IFsyLCAzOV0gfSwgeyAyMzogWzIsIDQzXSwgMzM6IFsyLCA0M10sIDU0
OiBbMiwgNDNdLCA2NTogWzIsIDQzXSwgNjg6IFsyLCA0M10sIDcyOiBbMiwgNDNdLCA3NTogWzIs
IDQzXSwgODA6IFsyLCA0M10sIDgxOiBbMiwgNDNdLCA4MjogWzIsIDQzXSwgODM6IFsyLCA0M10s
IDg0OiBbMiwgNDNdLCA4NTogWzIsIDQzXSwgODc6IFsxLCA1MV0gfSwgeyA3MjogWzEsIDM1XSwg
ODY6IDUyIH0sIHsgMjM6IFsyLCA0NV0sIDMzOiBbMiwgNDVdLCA1NDogWzIsIDQ1XSwgNjU6IFsy
LCA0NV0sIDY4OiBbMiwgNDVdLCA3MjogWzIsIDQ1XSwgNzU6IFsyLCA0NV0sIDgwOiBbMiwgNDVd
LCA4MTogWzIsIDQ1XSwgODI6IFsyLCA0NV0sIDgzOiBbMiwgNDVdLCA4NDogWzIsIDQ1XSwgODU6
IFsyLCA0NV0sIDg3OiBbMiwgNDVdIH0sIHsgNTI6IDUzLCA1NDogWzIsIDgyXSwgNjU6IFsyLCA4
Ml0sIDcyOiBbMiwgODJdLCA4MDogWzIsIDgyXSwgODE6IFsyLCA4Ml0sIDgyOiBbMiwgODJdLCA4
MzogWzIsIDgyXSwgODQ6IFsyLCA4Ml0sIDg1OiBbMiwgODJdIH0sIHsgMjU6IDU0LCAzODogNTYs
IDM5OiBbMSwgNThdLCA0MzogNTcsIDQ0OiBbMSwgNTldLCA0NTogNTUsIDQ3OiBbMiwgNTRdIH0s
IHsgMjg6IDYwLCA0MzogNjEsIDQ0OiBbMSwgNTldLCA0NzogWzIsIDU2XSB9LCB7IDEzOiA2Mywg
MTU6IFsxLCAyMF0sIDE4OiBbMSwgNjJdIH0sIHsgMTU6IFsyLCA0OF0sIDE4OiBbMiwgNDhdIH0s
IHsgMzM6IFsyLCA4Nl0sIDU3OiA2NCwgNjU6IFsyLCA4Nl0sIDcyOiBbMiwgODZdLCA4MDogWzIs
IDg2XSwgODE6IFsyLCA4Nl0sIDgyOiBbMiwgODZdLCA4MzogWzIsIDg2XSwgODQ6IFsyLCA4Nl0s
IDg1OiBbMiwgODZdIH0sIHsgMzM6IFsyLCA0MF0sIDY1OiBbMiwgNDBdLCA3MjogWzIsIDQwXSwg
ODA6IFsyLCA0MF0sIDgxOiBbMiwgNDBdLCA4MjogWzIsIDQwXSwgODM6IFsyLCA0MF0sIDg0OiBb
MiwgNDBdLCA4NTogWzIsIDQwXSB9LCB7IDMzOiBbMiwgNDFdLCA2NTogWzIsIDQxXSwgNzI6IFsy
LCA0MV0sIDgwOiBbMiwgNDFdLCA4MTogWzIsIDQxXSwgODI6IFsyLCA0MV0sIDgzOiBbMiwgNDFd
LCA4NDogWzIsIDQxXSwgODU6IFsyLCA0MV0gfSwgeyAyMDogNjUsIDcyOiBbMSwgMzVdLCA3ODog
MjYsIDc5OiAyNywgODA6IFsxLCAyOF0sIDgxOiBbMSwgMjldLCA4MjogWzEsIDMwXSwgODM6IFsx
LCAzMV0sIDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwgODY6IDMzIH0sIHsgMjY6IDY2LCA0Nzog
WzEsIDY3XSB9LCB7IDMwOiA2OCwgMzM6IFsyLCA1OF0sIDY1OiBbMiwgNThdLCA3MjogWzIsIDU4
XSwgNzU6IFsyLCA1OF0sIDgwOiBbMiwgNThdLCA4MTogWzIsIDU4XSwgODI6IFsyLCA1OF0sIDgz
OiBbMiwgNThdLCA4NDogWzIsIDU4XSwgODU6IFsyLCA1OF0gfSwgeyAzMzogWzIsIDY0XSwgMzU6
IDY5LCA2NTogWzIsIDY0XSwgNzI6IFsyLCA2NF0sIDc1OiBbMiwgNjRdLCA4MDogWzIsIDY0XSwg
ODE6IFsyLCA2NF0sIDgyOiBbMiwgNjRdLCA4MzogWzIsIDY0XSwgODQ6IFsyLCA2NF0sIDg1OiBb
MiwgNjRdIH0sIHsgMjE6IDcwLCAyMzogWzIsIDUwXSwgNjU6IFsyLCA1MF0sIDcyOiBbMiwgNTBd
LCA4MDogWzIsIDUwXSwgODE6IFsyLCA1MF0sIDgyOiBbMiwgNTBdLCA4MzogWzIsIDUwXSwgODQ6
IFsyLCA1MF0sIDg1OiBbMiwgNTBdIH0sIHsgMzM6IFsyLCA5MF0sIDYxOiA3MSwgNjU6IFsyLCA5
MF0sIDcyOiBbMiwgOTBdLCA4MDogWzIsIDkwXSwgODE6IFsyLCA5MF0sIDgyOiBbMiwgOTBdLCA4
MzogWzIsIDkwXSwgODQ6IFsyLCA5MF0sIDg1OiBbMiwgOTBdIH0sIHsgMjA6IDc1LCAzMzogWzIs
IDgwXSwgNTA6IDcyLCA2MzogNzMsIDY0OiA3NiwgNjU6IFsxLCA0NF0sIDY5OiA3NCwgNzA6IDc3
LCA3MTogNzgsIDcyOiBbMSwgNzldLCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0sIDgxOiBb
MSwgMjldLCA4MjogWzEsIDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0
XSwgODY6IDMzIH0sIHsgNzI6IFsxLCA4MF0gfSwgeyAyMzogWzIsIDQyXSwgMzM6IFsyLCA0Ml0s
IDU0OiBbMiwgNDJdLCA2NTogWzIsIDQyXSwgNjg6IFsyLCA0Ml0sIDcyOiBbMiwgNDJdLCA3NTog
WzIsIDQyXSwgODA6IFsyLCA0Ml0sIDgxOiBbMiwgNDJdLCA4MjogWzIsIDQyXSwgODM6IFsyLCA0
Ml0sIDg0OiBbMiwgNDJdLCA4NTogWzIsIDQyXSwgODc6IFsxLCA1MV0gfSwgeyAyMDogNzUsIDUz
OiA4MSwgNTQ6IFsyLCA4NF0sIDYzOiA4MiwgNjQ6IDc2LCA2NTogWzEsIDQ0XSwgNjk6IDgzLCA3
MDogNzcsIDcxOiA3OCwgNzI6IFsxLCA3OV0sIDc4OiAyNiwgNzk6IDI3LCA4MDogWzEsIDI4XSwg
ODE6IFsxLCAyOV0sIDgyOiBbMSwgMzBdLCA4MzogWzEsIDMxXSwgODQ6IFsxLCAzMl0sIDg1OiBb
MSwgMzRdLCA4NjogMzMgfSwgeyAyNjogODQsIDQ3OiBbMSwgNjddIH0sIHsgNDc6IFsyLCA1NV0g
fSwgeyA0OiA4NSwgNjogMywgMTQ6IFsyLCA0Nl0sIDE1OiBbMiwgNDZdLCAxOTogWzIsIDQ2XSwg
Mjk6IFsyLCA0Nl0sIDM0OiBbMiwgNDZdLCAzOTogWzIsIDQ2XSwgNDQ6IFsyLCA0Nl0sIDQ3OiBb
MiwgNDZdLCA0ODogWzIsIDQ2XSwgNTE6IFsyLCA0Nl0sIDU1OiBbMiwgNDZdLCA2MDogWzIsIDQ2
XSB9LCB7IDQ3OiBbMiwgMjBdIH0sIHsgMjA6IDg2LCA3MjogWzEsIDM1XSwgNzg6IDI2LCA3OTog
MjcsIDgwOiBbMSwgMjhdLCA4MTogWzEsIDI5XSwgODI6IFsxLCAzMF0sIDgzOiBbMSwgMzFdLCA4
NDogWzEsIDMyXSwgODU6IFsxLCAzNF0sIDg2OiAzMyB9LCB7IDQ6IDg3LCA2OiAzLCAxNDogWzIs
IDQ2XSwgMTU6IFsyLCA0Nl0sIDE5OiBbMiwgNDZdLCAyOTogWzIsIDQ2XSwgMzQ6IFsyLCA0Nl0s
IDQ3OiBbMiwgNDZdLCA0ODogWzIsIDQ2XSwgNTE6IFsyLCA0Nl0sIDU1OiBbMiwgNDZdLCA2MDog
WzIsIDQ2XSB9LCB7IDI2OiA4OCwgNDc6IFsxLCA2N10gfSwgeyA0NzogWzIsIDU3XSB9LCB7IDU6
IFsyLCAxMV0sIDE0OiBbMiwgMTFdLCAxNTogWzIsIDExXSwgMTk6IFsyLCAxMV0sIDI5OiBbMiwg
MTFdLCAzNDogWzIsIDExXSwgMzk6IFsyLCAxMV0sIDQ0OiBbMiwgMTFdLCA0NzogWzIsIDExXSwg
NDg6IFsyLCAxMV0sIDUxOiBbMiwgMTFdLCA1NTogWzIsIDExXSwgNjA6IFsyLCAxMV0gfSwgeyAx
NTogWzIsIDQ5XSwgMTg6IFsyLCA0OV0gfSwgeyAyMDogNzUsIDMzOiBbMiwgODhdLCA1ODogODks
IDYzOiA5MCwgNjQ6IDc2LCA2NTogWzEsIDQ0XSwgNjk6IDkxLCA3MDogNzcsIDcxOiA3OCwgNzI6
IFsxLCA3OV0sIDc4OiAyNiwgNzk6IDI3LCA4MDogWzEsIDI4XSwgODE6IFsxLCAyOV0sIDgyOiBb
MSwgMzBdLCA4MzogWzEsIDMxXSwgODQ6IFsxLCAzMl0sIDg1OiBbMSwgMzRdLCA4NjogMzMgfSwg
eyA2NTogWzIsIDk0XSwgNjY6IDkyLCA2ODogWzIsIDk0XSwgNzI6IFsyLCA5NF0sIDgwOiBbMiwg
OTRdLCA4MTogWzIsIDk0XSwgODI6IFsyLCA5NF0sIDgzOiBbMiwgOTRdLCA4NDogWzIsIDk0XSwg
ODU6IFsyLCA5NF0gfSwgeyA1OiBbMiwgMjVdLCAxNDogWzIsIDI1XSwgMTU6IFsyLCAyNV0sIDE5
OiBbMiwgMjVdLCAyOTogWzIsIDI1XSwgMzQ6IFsyLCAyNV0sIDM5OiBbMiwgMjVdLCA0NDogWzIs
IDI1XSwgNDc6IFsyLCAyNV0sIDQ4OiBbMiwgMjVdLCA1MTogWzIsIDI1XSwgNTU6IFsyLCAyNV0s
IDYwOiBbMiwgMjVdIH0sIHsgMjA6IDkzLCA3MjogWzEsIDM1XSwgNzg6IDI2LCA3OTogMjcsIDgw
OiBbMSwgMjhdLCA4MTogWzEsIDI5XSwgODI6IFsxLCAzMF0sIDgzOiBbMSwgMzFdLCA4NDogWzEs
IDMyXSwgODU6IFsxLCAzNF0sIDg2OiAzMyB9LCB7IDIwOiA3NSwgMzE6IDk0LCAzMzogWzIsIDYw
XSwgNjM6IDk1LCA2NDogNzYsIDY1OiBbMSwgNDRdLCA2OTogOTYsIDcwOiA3NywgNzE6IDc4LCA3
MjogWzEsIDc5XSwgNzU6IFsyLCA2MF0sIDc4OiAyNiwgNzk6IDI3LCA4MDogWzEsIDI4XSwgODE6
IFsxLCAyOV0sIDgyOiBbMSwgMzBdLCA4MzogWzEsIDMxXSwgODQ6IFsxLCAzMl0sIDg1OiBbMSwg
MzRdLCA4NjogMzMgfSwgeyAyMDogNzUsIDMzOiBbMiwgNjZdLCAzNjogOTcsIDYzOiA5OCwgNjQ6
IDc2LCA2NTogWzEsIDQ0XSwgNjk6IDk5LCA3MDogNzcsIDcxOiA3OCwgNzI6IFsxLCA3OV0sIDc1
OiBbMiwgNjZdLCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0sIDgxOiBbMSwgMjldLCA4Mjog
WzEsIDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwgODY6IDMzIH0s
IHsgMjA6IDc1LCAyMjogMTAwLCAyMzogWzIsIDUyXSwgNjM6IDEwMSwgNjQ6IDc2LCA2NTogWzEs
IDQ0XSwgNjk6IDEwMiwgNzA6IDc3LCA3MTogNzgsIDcyOiBbMSwgNzldLCA3ODogMjYsIDc5OiAy
NywgODA6IFsxLCAyOF0sIDgxOiBbMSwgMjldLCA4MjogWzEsIDMwXSwgODM6IFsxLCAzMV0sIDg0
OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwgODY6IDMzIH0sIHsgMjA6IDc1LCAzMzogWzIsIDkyXSwg
NjI6IDEwMywgNjM6IDEwNCwgNjQ6IDc2LCA2NTogWzEsIDQ0XSwgNjk6IDEwNSwgNzA6IDc3LCA3
MTogNzgsIDcyOiBbMSwgNzldLCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0sIDgxOiBbMSwg
MjldLCA4MjogWzEsIDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwg
ODY6IDMzIH0sIHsgMzM6IFsxLCAxMDZdIH0sIHsgMzM6IFsyLCA3OV0sIDY1OiBbMiwgNzldLCA3
MjogWzIsIDc5XSwgODA6IFsyLCA3OV0sIDgxOiBbMiwgNzldLCA4MjogWzIsIDc5XSwgODM6IFsy
LCA3OV0sIDg0OiBbMiwgNzldLCA4NTogWzIsIDc5XSB9LCB7IDMzOiBbMiwgODFdIH0sIHsgMjM6
IFsyLCAyN10sIDMzOiBbMiwgMjddLCA1NDogWzIsIDI3XSwgNjU6IFsyLCAyN10sIDY4OiBbMiwg
MjddLCA3MjogWzIsIDI3XSwgNzU6IFsyLCAyN10sIDgwOiBbMiwgMjddLCA4MTogWzIsIDI3XSwg
ODI6IFsyLCAyN10sIDgzOiBbMiwgMjddLCA4NDogWzIsIDI3XSwgODU6IFsyLCAyN10gfSwgeyAy
MzogWzIsIDI4XSwgMzM6IFsyLCAyOF0sIDU0OiBbMiwgMjhdLCA2NTogWzIsIDI4XSwgNjg6IFsy
LCAyOF0sIDcyOiBbMiwgMjhdLCA3NTogWzIsIDI4XSwgODA6IFsyLCAyOF0sIDgxOiBbMiwgMjhd
LCA4MjogWzIsIDI4XSwgODM6IFsyLCAyOF0sIDg0OiBbMiwgMjhdLCA4NTogWzIsIDI4XSB9LCB7
IDIzOiBbMiwgMzBdLCAzMzogWzIsIDMwXSwgNTQ6IFsyLCAzMF0sIDY4OiBbMiwgMzBdLCA3MTog
MTA3LCA3MjogWzEsIDEwOF0sIDc1OiBbMiwgMzBdIH0sIHsgMjM6IFsyLCA5OF0sIDMzOiBbMiwg
OThdLCA1NDogWzIsIDk4XSwgNjg6IFsyLCA5OF0sIDcyOiBbMiwgOThdLCA3NTogWzIsIDk4XSB9
LCB7IDIzOiBbMiwgNDVdLCAzMzogWzIsIDQ1XSwgNTQ6IFsyLCA0NV0sIDY1OiBbMiwgNDVdLCA2
ODogWzIsIDQ1XSwgNzI6IFsyLCA0NV0sIDczOiBbMSwgMTA5XSwgNzU6IFsyLCA0NV0sIDgwOiBb
MiwgNDVdLCA4MTogWzIsIDQ1XSwgODI6IFsyLCA0NV0sIDgzOiBbMiwgNDVdLCA4NDogWzIsIDQ1
XSwgODU6IFsyLCA0NV0sIDg3OiBbMiwgNDVdIH0sIHsgMjM6IFsyLCA0NF0sIDMzOiBbMiwgNDRd
LCA1NDogWzIsIDQ0XSwgNjU6IFsyLCA0NF0sIDY4OiBbMiwgNDRdLCA3MjogWzIsIDQ0XSwgNzU6
IFsyLCA0NF0sIDgwOiBbMiwgNDRdLCA4MTogWzIsIDQ0XSwgODI6IFsyLCA0NF0sIDgzOiBbMiwg
NDRdLCA4NDogWzIsIDQ0XSwgODU6IFsyLCA0NF0sIDg3OiBbMiwgNDRdIH0sIHsgNTQ6IFsxLCAx
MTBdIH0sIHsgNTQ6IFsyLCA4M10sIDY1OiBbMiwgODNdLCA3MjogWzIsIDgzXSwgODA6IFsyLCA4
M10sIDgxOiBbMiwgODNdLCA4MjogWzIsIDgzXSwgODM6IFsyLCA4M10sIDg0OiBbMiwgODNdLCA4
NTogWzIsIDgzXSB9LCB7IDU0OiBbMiwgODVdIH0sIHsgNTogWzIsIDEzXSwgMTQ6IFsyLCAxM10s
IDE1OiBbMiwgMTNdLCAxOTogWzIsIDEzXSwgMjk6IFsyLCAxM10sIDM0OiBbMiwgMTNdLCAzOTog
WzIsIDEzXSwgNDQ6IFsyLCAxM10sIDQ3OiBbMiwgMTNdLCA0ODogWzIsIDEzXSwgNTE6IFsyLCAx
M10sIDU1OiBbMiwgMTNdLCA2MDogWzIsIDEzXSB9LCB7IDM4OiA1NiwgMzk6IFsxLCA1OF0sIDQz
OiA1NywgNDQ6IFsxLCA1OV0sIDQ1OiAxMTIsIDQ2OiAxMTEsIDQ3OiBbMiwgNzZdIH0sIHsgMzM6
IFsyLCA3MF0sIDQwOiAxMTMsIDY1OiBbMiwgNzBdLCA3MjogWzIsIDcwXSwgNzU6IFsyLCA3MF0s
IDgwOiBbMiwgNzBdLCA4MTogWzIsIDcwXSwgODI6IFsyLCA3MF0sIDgzOiBbMiwgNzBdLCA4NDog
WzIsIDcwXSwgODU6IFsyLCA3MF0gfSwgeyA0NzogWzIsIDE4XSB9LCB7IDU6IFsyLCAxNF0sIDE0
OiBbMiwgMTRdLCAxNTogWzIsIDE0XSwgMTk6IFsyLCAxNF0sIDI5OiBbMiwgMTRdLCAzNDogWzIs
IDE0XSwgMzk6IFsyLCAxNF0sIDQ0OiBbMiwgMTRdLCA0NzogWzIsIDE0XSwgNDg6IFsyLCAxNF0s
IDUxOiBbMiwgMTRdLCA1NTogWzIsIDE0XSwgNjA6IFsyLCAxNF0gfSwgeyAzMzogWzEsIDExNF0g
fSwgeyAzMzogWzIsIDg3XSwgNjU6IFsyLCA4N10sIDcyOiBbMiwgODddLCA4MDogWzIsIDg3XSwg
ODE6IFsyLCA4N10sIDgyOiBbMiwgODddLCA4MzogWzIsIDg3XSwgODQ6IFsyLCA4N10sIDg1OiBb
MiwgODddIH0sIHsgMzM6IFsyLCA4OV0gfSwgeyAyMDogNzUsIDYzOiAxMTYsIDY0OiA3NiwgNjU6
IFsxLCA0NF0sIDY3OiAxMTUsIDY4OiBbMiwgOTZdLCA2OTogMTE3LCA3MDogNzcsIDcxOiA3OCwg
NzI6IFsxLCA3OV0sIDc4OiAyNiwgNzk6IDI3LCA4MDogWzEsIDI4XSwgODE6IFsxLCAyOV0sIDgy
OiBbMSwgMzBdLCA4MzogWzEsIDMxXSwgODQ6IFsxLCAzMl0sIDg1OiBbMSwgMzRdLCA4NjogMzMg
fSwgeyAzMzogWzEsIDExOF0gfSwgeyAzMjogMTE5LCAzMzogWzIsIDYyXSwgNzQ6IDEyMCwgNzU6
IFsxLCAxMjFdIH0sIHsgMzM6IFsyLCA1OV0sIDY1OiBbMiwgNTldLCA3MjogWzIsIDU5XSwgNzU6
IFsyLCA1OV0sIDgwOiBbMiwgNTldLCA4MTogWzIsIDU5XSwgODI6IFsyLCA1OV0sIDgzOiBbMiwg
NTldLCA4NDogWzIsIDU5XSwgODU6IFsyLCA1OV0gfSwgeyAzMzogWzIsIDYxXSwgNzU6IFsyLCA2
MV0gfSwgeyAzMzogWzIsIDY4XSwgMzc6IDEyMiwgNzQ6IDEyMywgNzU6IFsxLCAxMjFdIH0sIHsg
MzM6IFsyLCA2NV0sIDY1OiBbMiwgNjVdLCA3MjogWzIsIDY1XSwgNzU6IFsyLCA2NV0sIDgwOiBb
MiwgNjVdLCA4MTogWzIsIDY1XSwgODI6IFsyLCA2NV0sIDgzOiBbMiwgNjVdLCA4NDogWzIsIDY1
XSwgODU6IFsyLCA2NV0gfSwgeyAzMzogWzIsIDY3XSwgNzU6IFsyLCA2N10gfSwgeyAyMzogWzEs
IDEyNF0gfSwgeyAyMzogWzIsIDUxXSwgNjU6IFsyLCA1MV0sIDcyOiBbMiwgNTFdLCA4MDogWzIs
IDUxXSwgODE6IFsyLCA1MV0sIDgyOiBbMiwgNTFdLCA4MzogWzIsIDUxXSwgODQ6IFsyLCA1MV0s
IDg1OiBbMiwgNTFdIH0sIHsgMjM6IFsyLCA1M10gfSwgeyAzMzogWzEsIDEyNV0gfSwgeyAzMzog
WzIsIDkxXSwgNjU6IFsyLCA5MV0sIDcyOiBbMiwgOTFdLCA4MDogWzIsIDkxXSwgODE6IFsyLCA5
MV0sIDgyOiBbMiwgOTFdLCA4MzogWzIsIDkxXSwgODQ6IFsyLCA5MV0sIDg1OiBbMiwgOTFdIH0s
IHsgMzM6IFsyLCA5M10gfSwgeyA1OiBbMiwgMjJdLCAxNDogWzIsIDIyXSwgMTU6IFsyLCAyMl0s
IDE5OiBbMiwgMjJdLCAyOTogWzIsIDIyXSwgMzQ6IFsyLCAyMl0sIDM5OiBbMiwgMjJdLCA0NDog
WzIsIDIyXSwgNDc6IFsyLCAyMl0sIDQ4OiBbMiwgMjJdLCA1MTogWzIsIDIyXSwgNTU6IFsyLCAy
Ml0sIDYwOiBbMiwgMjJdIH0sIHsgMjM6IFsyLCA5OV0sIDMzOiBbMiwgOTldLCA1NDogWzIsIDk5
XSwgNjg6IFsyLCA5OV0sIDcyOiBbMiwgOTldLCA3NTogWzIsIDk5XSB9LCB7IDczOiBbMSwgMTA5
XSB9LCB7IDIwOiA3NSwgNjM6IDEyNiwgNjQ6IDc2LCA2NTogWzEsIDQ0XSwgNzI6IFsxLCAzNV0s
IDc4OiAyNiwgNzk6IDI3LCA4MDogWzEsIDI4XSwgODE6IFsxLCAyOV0sIDgyOiBbMSwgMzBdLCA4
MzogWzEsIDMxXSwgODQ6IFsxLCAzMl0sIDg1OiBbMSwgMzRdLCA4NjogMzMgfSwgeyA1OiBbMiwg
MjNdLCAxNDogWzIsIDIzXSwgMTU6IFsyLCAyM10sIDE5OiBbMiwgMjNdLCAyOTogWzIsIDIzXSwg
MzQ6IFsyLCAyM10sIDM5OiBbMiwgMjNdLCA0NDogWzIsIDIzXSwgNDc6IFsyLCAyM10sIDQ4OiBb
MiwgMjNdLCA1MTogWzIsIDIzXSwgNTU6IFsyLCAyM10sIDYwOiBbMiwgMjNdIH0sIHsgNDc6IFsy
LCAxOV0gfSwgeyA0NzogWzIsIDc3XSB9LCB7IDIwOiA3NSwgMzM6IFsyLCA3Ml0sIDQxOiAxMjcs
IDYzOiAxMjgsIDY0OiA3NiwgNjU6IFsxLCA0NF0sIDY5OiAxMjksIDcwOiA3NywgNzE6IDc4LCA3
MjogWzEsIDc5XSwgNzU6IFsyLCA3Ml0sIDc4OiAyNiwgNzk6IDI3LCA4MDogWzEsIDI4XSwgODE6
IFsxLCAyOV0sIDgyOiBbMSwgMzBdLCA4MzogWzEsIDMxXSwgODQ6IFsxLCAzMl0sIDg1OiBbMSwg
MzRdLCA4NjogMzMgfSwgeyA1OiBbMiwgMjRdLCAxNDogWzIsIDI0XSwgMTU6IFsyLCAyNF0sIDE5
OiBbMiwgMjRdLCAyOTogWzIsIDI0XSwgMzQ6IFsyLCAyNF0sIDM5OiBbMiwgMjRdLCA0NDogWzIs
IDI0XSwgNDc6IFsyLCAyNF0sIDQ4OiBbMiwgMjRdLCA1MTogWzIsIDI0XSwgNTU6IFsyLCAyNF0s
IDYwOiBbMiwgMjRdIH0sIHsgNjg6IFsxLCAxMzBdIH0sIHsgNjU6IFsyLCA5NV0sIDY4OiBbMiwg
OTVdLCA3MjogWzIsIDk1XSwgODA6IFsyLCA5NV0sIDgxOiBbMiwgOTVdLCA4MjogWzIsIDk1XSwg
ODM6IFsyLCA5NV0sIDg0OiBbMiwgOTVdLCA4NTogWzIsIDk1XSB9LCB7IDY4OiBbMiwgOTddIH0s
IHsgNTogWzIsIDIxXSwgMTQ6IFsyLCAyMV0sIDE1OiBbMiwgMjFdLCAxOTogWzIsIDIxXSwgMjk6
IFsyLCAyMV0sIDM0OiBbMiwgMjFdLCAzOTogWzIsIDIxXSwgNDQ6IFsyLCAyMV0sIDQ3OiBbMiwg
MjFdLCA0ODogWzIsIDIxXSwgNTE6IFsyLCAyMV0sIDU1OiBbMiwgMjFdLCA2MDogWzIsIDIxXSB9
LCB7IDMzOiBbMSwgMTMxXSB9LCB7IDMzOiBbMiwgNjNdIH0sIHsgNzI6IFsxLCAxMzNdLCA3Njog
MTMyIH0sIHsgMzM6IFsxLCAxMzRdIH0sIHsgMzM6IFsyLCA2OV0gfSwgeyAxNTogWzIsIDEyXSB9
LCB7IDE0OiBbMiwgMjZdLCAxNTogWzIsIDI2XSwgMTk6IFsyLCAyNl0sIDI5OiBbMiwgMjZdLCAz
NDogWzIsIDI2XSwgNDc6IFsyLCAyNl0sIDQ4OiBbMiwgMjZdLCA1MTogWzIsIDI2XSwgNTU6IFsy
LCAyNl0sIDYwOiBbMiwgMjZdIH0sIHsgMjM6IFsyLCAzMV0sIDMzOiBbMiwgMzFdLCA1NDogWzIs
IDMxXSwgNjg6IFsyLCAzMV0sIDcyOiBbMiwgMzFdLCA3NTogWzIsIDMxXSB9LCB7IDMzOiBbMiwg
NzRdLCA0MjogMTM1LCA3NDogMTM2LCA3NTogWzEsIDEyMV0gfSwgeyAzMzogWzIsIDcxXSwgNjU6
IFsyLCA3MV0sIDcyOiBbMiwgNzFdLCA3NTogWzIsIDcxXSwgODA6IFsyLCA3MV0sIDgxOiBbMiwg
NzFdLCA4MjogWzIsIDcxXSwgODM6IFsyLCA3MV0sIDg0OiBbMiwgNzFdLCA4NTogWzIsIDcxXSB9
LCB7IDMzOiBbMiwgNzNdLCA3NTogWzIsIDczXSB9LCB7IDIzOiBbMiwgMjldLCAzMzogWzIsIDI5
XSwgNTQ6IFsyLCAyOV0sIDY1OiBbMiwgMjldLCA2ODogWzIsIDI5XSwgNzI6IFsyLCAyOV0sIDc1
OiBbMiwgMjldLCA4MDogWzIsIDI5XSwgODE6IFsyLCAyOV0sIDgyOiBbMiwgMjldLCA4MzogWzIs
IDI5XSwgODQ6IFsyLCAyOV0sIDg1OiBbMiwgMjldIH0sIHsgMTQ6IFsyLCAxNV0sIDE1OiBbMiwg
MTVdLCAxOTogWzIsIDE1XSwgMjk6IFsyLCAxNV0sIDM0OiBbMiwgMTVdLCAzOTogWzIsIDE1XSwg
NDQ6IFsyLCAxNV0sIDQ3OiBbMiwgMTVdLCA0ODogWzIsIDE1XSwgNTE6IFsyLCAxNV0sIDU1OiBb
MiwgMTVdLCA2MDogWzIsIDE1XSB9LCB7IDcyOiBbMSwgMTM4XSwgNzc6IFsxLCAxMzddIH0sIHsg
NzI6IFsyLCAxMDBdLCA3NzogWzIsIDEwMF0gfSwgeyAxNDogWzIsIDE2XSwgMTU6IFsyLCAxNl0s
IDE5OiBbMiwgMTZdLCAyOTogWzIsIDE2XSwgMzQ6IFsyLCAxNl0sIDQ0OiBbMiwgMTZdLCA0Nzog
WzIsIDE2XSwgNDg6IFsyLCAxNl0sIDUxOiBbMiwgMTZdLCA1NTogWzIsIDE2XSwgNjA6IFsyLCAx
Nl0gfSwgeyAzMzogWzEsIDEzOV0gfSwgeyAzMzogWzIsIDc1XSB9LCB7IDMzOiBbMiwgMzJdIH0s
IHsgNzI6IFsyLCAxMDFdLCA3NzogWzIsIDEwMV0gfSwgeyAxNDogWzIsIDE3XSwgMTU6IFsyLCAx
N10sIDE5OiBbMiwgMTddLCAyOTogWzIsIDE3XSwgMzQ6IFsyLCAxN10sIDM5OiBbMiwgMTddLCA0
NDogWzIsIDE3XSwgNDc6IFsyLCAxN10sIDQ4OiBbMiwgMTddLCA1MTogWzIsIDE3XSwgNTU6IFsy
LCAxN10sIDYwOiBbMiwgMTddIH1dLAorICAgICAgICAgICAgZGVmYXVsdEFjdGlvbnM6IHsgNDog
WzIsIDFdLCA1NTogWzIsIDU1XSwgNTc6IFsyLCAyMF0sIDYxOiBbMiwgNTddLCA3NDogWzIsIDgx
XSwgODM6IFsyLCA4NV0sIDg3OiBbMiwgMThdLCA5MTogWzIsIDg5XSwgMTAyOiBbMiwgNTNdLCAx
MDU6IFsyLCA5M10sIDExMTogWzIsIDE5XSwgMTEyOiBbMiwgNzddLCAxMTc6IFsyLCA5N10sIDEy
MDogWzIsIDYzXSwgMTIzOiBbMiwgNjldLCAxMjQ6IFsyLCAxMl0sIDEzNjogWzIsIDc1XSwgMTM3
OiBbMiwgMzJdIH0sCisgICAgICAgICAgICBwYXJzZUVycm9yOiBmdW5jdGlvbiBwYXJzZUVycm9y
KHN0ciwgaGFzaCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihzdHIpOworICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgIHBhcnNlOiBmdW5jdGlvbiBwYXJzZShpbnB1dCkgewor
ICAgICAgICAgICAgICAgIHZhciBzZWxmID0gdGhpcywKKyAgICAgICAgICAgICAgICAgICAgc3Rh
Y2sgPSBbMF0sCisgICAgICAgICAgICAgICAgICAgIHZzdGFjayA9IFtudWxsXSwKKyAgICAgICAg
ICAgICAgICAgICAgbHN0YWNrID0gW10sCisgICAgICAgICAgICAgICAgICAgIHRhYmxlID0gdGhp
cy50YWJsZSwKKyAgICAgICAgICAgICAgICAgICAgeXl0ZXh0ID0gIiIsCisgICAgICAgICAgICAg
ICAgICAgIHl5bGluZW5vID0gMCwKKyAgICAgICAgICAgICAgICAgICAgeXlsZW5nID0gMCwKKyAg
ICAgICAgICAgICAgICAgICAgcmVjb3ZlcmluZyA9IDAsCisgICAgICAgICAgICAgICAgICAgIFRF
UlJPUiA9IDIsCisgICAgICAgICAgICAgICAgICAgIEVPRiA9IDE7CisgICAgICAgICAgICAgICAg
dGhpcy5sZXhlci5zZXRJbnB1dChpbnB1dCk7CisgICAgICAgICAgICAgICAgdGhpcy5sZXhlci55
eSA9IHRoaXMueXk7CisgICAgICAgICAgICAgICAgdGhpcy55eS5sZXhlciA9IHRoaXMubGV4ZXI7
CisgICAgICAgICAgICAgICAgdGhpcy55eS5wYXJzZXIgPSB0aGlzOworICAgICAgICAgICAgICAg
IGlmICh0eXBlb2YgdGhpcy5sZXhlci55eWxsb2MgPT0gInVuZGVmaW5lZCIpIHRoaXMubGV4ZXIu
eXlsbG9jID0ge307CisgICAgICAgICAgICAgICAgdmFyIHl5bG9jID0gdGhpcy5sZXhlci55eWxs
b2M7CisgICAgICAgICAgICAgICAgbHN0YWNrLnB1c2goeXlsb2MpOworICAgICAgICAgICAgICAg
IHZhciByYW5nZXMgPSB0aGlzLmxleGVyLm9wdGlvbnMgJiYgdGhpcy5sZXhlci5vcHRpb25zLnJh
bmdlczsKKyAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMueXkucGFyc2VFcnJvciA9PT0g
ImZ1bmN0aW9uIikgdGhpcy5wYXJzZUVycm9yID0gdGhpcy55eS5wYXJzZUVycm9yOworICAgICAg
ICAgICAgICAgIGZ1bmN0aW9uIHBvcFN0YWNrKG4pIHsKKyAgICAgICAgICAgICAgICAgICAgc3Rh
Y2subGVuZ3RoID0gc3RhY2subGVuZ3RoIC0gMiAqIG47CisgICAgICAgICAgICAgICAgICAgIHZz
dGFjay5sZW5ndGggPSB2c3RhY2subGVuZ3RoIC0gbjsKKyAgICAgICAgICAgICAgICAgICAgbHN0
YWNrLmxlbmd0aCA9IGxzdGFjay5sZW5ndGggLSBuOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBmdW5jdGlvbiBsZXgoKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciB0b2tl
bjsKKyAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSBzZWxmLmxleGVyLmxleCgpIHx8IDE7Cisg
ICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdG9rZW4gIT09ICJudW1iZXIiKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IHNlbGYuc3ltYm9sc19bdG9rZW5dIHx8IHRva2Vu
OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0b2tl
bjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdmFyIHN5bWJvbCwKKyAgICAg
ICAgICAgICAgICAgICAgcHJlRXJyb3JTeW1ib2wsCisgICAgICAgICAgICAgICAgICAgIHN0YXRl
LAorICAgICAgICAgICAgICAgICAgICBhY3Rpb24sCisgICAgICAgICAgICAgICAgICAgIGEsCisg
ICAgICAgICAgICAgICAgICAgIHIsCisgICAgICAgICAgICAgICAgICAgIHl5dmFsID0ge30sCisg
ICAgICAgICAgICAgICAgICAgIHAsCisgICAgICAgICAgICAgICAgICAgIGxlbiwKKyAgICAgICAg
ICAgICAgICAgICAgbmV3U3RhdGUsCisgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkOworICAg
ICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICAgICAgICAgIHN0YXRlID0g
c3RhY2tbc3RhY2subGVuZ3RoIC0gMV07CisgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmRl
ZmF1bHRBY3Rpb25zW3N0YXRlXSkgeworICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uID0g
dGhpcy5kZWZhdWx0QWN0aW9uc1tzdGF0ZV07CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3ltYm9sID09PSBudWxsIHx8IHR5cGVvZiBz
eW1ib2wgPT0gInVuZGVmaW5lZCIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW1i
b2wgPSBsZXgoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgICAgIGFjdGlvbiA9IHRhYmxlW3N0YXRlXSAmJiB0YWJsZVtzdGF0ZV1bc3ltYm9sXTsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGFjdGlv
biA9PT0gInVuZGVmaW5lZCIgfHwgIWFjdGlvbi5sZW5ndGggfHwgIWFjdGlvblswXSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgdmFyIGVyclN0ciA9ICIiOworICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCFyZWNvdmVyaW5nKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhw
ZWN0ZWQgPSBbXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHAgaW4gdGFibGVb
c3RhdGVdKSBpZiAodGhpcy50ZXJtaW5hbHNfW3BdICYmIHAgPiAyKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkLnB1c2goIiciICsgdGhpcy50ZXJtaW5hbHNfW3Bd
ICsgIiciKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKHRoaXMubGV4ZXIuc2hvd1Bvc2l0aW9uKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGVyclN0ciA9ICJQYXJzZSBlcnJvciBvbiBsaW5lICIgKyAoeXls
aW5lbm8gKyAxKSArICI6XG4iICsgdGhpcy5sZXhlci5zaG93UG9zaXRpb24oKSArICJcbkV4cGVj
dGluZyAiICsgZXhwZWN0ZWQuam9pbigiLCAiKSArICIsIGdvdCAnIiArICh0aGlzLnRlcm1pbmFs
c19bc3ltYm9sXSB8fCBzeW1ib2wpICsgIiciOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVyclN0ciA9ICJQYXJz
ZSBlcnJvciBvbiBsaW5lICIgKyAoeXlsaW5lbm8gKyAxKSArICI6IFVuZXhwZWN0ZWQgIiArIChz
eW1ib2wgPT0gMSA/ICJlbmQgb2YgaW5wdXQiIDogIiciICsgKHRoaXMudGVybWluYWxzX1tzeW1i
b2xdIHx8IHN5bWJvbCkgKyAiJyIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcnNlRXJyb3IoZXJyU3RyLCB7IHRleHQ6
IHRoaXMubGV4ZXIubWF0Y2gsIHRva2VuOiB0aGlzLnRlcm1pbmFsc19bc3ltYm9sXSB8fCBzeW1i
b2wsIGxpbmU6IHRoaXMubGV4ZXIueXlsaW5lbm8sIGxvYzogeXlsb2MsIGV4cGVjdGVkOiBleHBl
Y3RlZCB9KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICBpZiAoYWN0aW9uWzBdIGluc3RhbmNlb2YgQXJyYXkgJiYg
YWN0aW9uLmxlbmd0aCA+IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBF
cnJvcigiUGFyc2UgRXJyb3I6IG11bHRpcGxlIGFjdGlvbnMgcG9zc2libGUgYXQgc3RhdGU6ICIg
KyBzdGF0ZSArICIsIHRva2VuOiAiICsgc3ltYm9sKTsKKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGFjdGlvblswXSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrLnB1c2go
c3ltYm9sKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2c3RhY2sucHVzaCh0aGlzLmxl
eGVyLnl5dGV4dCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHN0YWNrLnB1c2godGhp
cy5sZXhlci55eWxsb2MpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrLnB1c2go
YWN0aW9uWzFdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW1ib2wgPSBudWxsOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJlRXJyb3JTeW1ib2wpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgeXlsZW5nID0gdGhpcy5sZXhlci55eWxlbmc7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHl5dGV4dCA9IHRoaXMubGV4ZXIueXl0ZXh0
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5eWxpbmVubyA9IHRoaXMubGV4ZXIu
eXlsaW5lbm87CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHl5bG9jID0gdGhpcy5s
ZXhlci55eWxsb2M7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWNvdmVy
aW5nID4gMCkgcmVjb3ZlcmluZy0tOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bWJvbCA9IHByZUVycm9yU3lt
Ym9sOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVFcnJvclN5bWJvbCA9IG51
bGw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyOgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxlbiA9IHRoaXMucHJvZHVjdGlvbnNfW2FjdGlvblsxXV1bMV07
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeXl2YWwuJCA9IHZzdGFja1t2c3RhY2subGVu
Z3RoIC0gbGVuXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB5eXZhbC5fJCA9IHsgZmly
c3RfbGluZTogbHN0YWNrW2xzdGFjay5sZW5ndGggLSAobGVuIHx8IDEpXS5maXJzdF9saW5lLCBs
YXN0X2xpbmU6IGxzdGFja1tsc3RhY2subGVuZ3RoIC0gMV0ubGFzdF9saW5lLCBmaXJzdF9jb2x1
bW46IGxzdGFja1tsc3RhY2subGVuZ3RoIC0gKGxlbiB8fCAxKV0uZmlyc3RfY29sdW1uLCBsYXN0
X2NvbHVtbjogbHN0YWNrW2xzdGFjay5sZW5ndGggLSAxXS5sYXN0X2NvbHVtbiB9OworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChyYW5nZXMpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgeXl2YWwuXyQucmFuZ2UgPSBbbHN0YWNrW2xzdGFjay5sZW5ndGggLSAobGVu
IHx8IDEpXS5yYW5nZVswXSwgbHN0YWNrW2xzdGFjay5sZW5ndGggLSAxXS5yYW5nZVsxXV07Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHIgPSB0aGlzLnBlcmZvcm1BY3Rpb24uY2FsbCh5eXZhbCwgeXl0ZXh0LCB5eWxlbmcsIHl5bGlu
ZW5vLCB0aGlzLnl5LCBhY3Rpb25bMV0sIHZzdGFjaywgbHN0YWNrKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAodHlwZW9mIHIgIT09ICJ1bmRlZmluZWQiKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGVuKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0YWNrID0gc3RhY2suc2xpY2UoMCwgLTEgKiBsZW4gKiAy
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnN0YWNrID0gdnN0YWNrLnNsaWNl
KDAsIC0xICogbGVuKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHN0YWNrID0g
bHN0YWNrLnNsaWNlKDAsIC0xICogbGVuKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2sucHVzaCh0aGlzLnByb2R1Y3Rpb25z
X1thY3Rpb25bMV1dWzBdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2c3RhY2sucHVz
aCh5eXZhbC4kKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsc3RhY2sucHVzaCh5eXZh
bC5fJCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3U3RhdGUgPSB0YWJsZVtzdGFj
a1tzdGFjay5sZW5ndGggLSAyXV1bc3RhY2tbc3RhY2subGVuZ3RoIC0gMV1dOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0YWNrLnB1c2gobmV3U3RhdGUpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICAgICAgfQorICAgICAgICB9OworICAgICAgICAvKiBKaXNvbiBnZW5lcmF0ZWQgbGV4ZXIg
Ki8KKyAgICAgICAgdmFyIGxleGVyID0gKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHZhciBs
ZXhlciA9IHsgRU9GOiAxLAorICAgICAgICAgICAgICAgIHBhcnNlRXJyb3I6IGZ1bmN0aW9uIHBh
cnNlRXJyb3Ioc3RyLCBoYXNoKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnl5LnBh
cnNlcikgeworICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy55eS5wYXJzZXIucGFyc2VFcnJv
cihzdHIsIGhhc2gpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHN0cik7CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHNldElucHV0OiBmdW5jdGlvbiBz
ZXRJbnB1dChpbnB1dCkgeworICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbnB1dCA9IGlucHV0
OworICAgICAgICAgICAgICAgICAgICB0aGlzLl9tb3JlID0gdGhpcy5fbGVzcyA9IHRoaXMuZG9u
ZSA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICB0aGlzLnl5bGluZW5vID0gdGhpcy55eWxl
bmcgPSAwOworICAgICAgICAgICAgICAgICAgICB0aGlzLnl5dGV4dCA9IHRoaXMubWF0Y2hlZCA9
IHRoaXMubWF0Y2ggPSAnJzsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25kaXRpb25TdGFj
ayA9IFsnSU5JVElBTCddOworICAgICAgICAgICAgICAgICAgICB0aGlzLnl5bGxvYyA9IHsgZmly
c3RfbGluZTogMSwgZmlyc3RfY29sdW1uOiAwLCBsYXN0X2xpbmU6IDEsIGxhc3RfY29sdW1uOiAw
IH07CisgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMucmFuZ2VzKSB0aGlzLnl5
bGxvYy5yYW5nZSA9IFswLCAwXTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5vZmZzZXQgPSAw
OworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgICAgIGlucHV0OiBmdW5jdGlvbiBpbnB1dCgpIHsKKyAgICAgICAgICAgICAg
ICAgICAgdmFyIGNoID0gdGhpcy5faW5wdXRbMF07CisgICAgICAgICAgICAgICAgICAgIHRoaXMu
eXl0ZXh0ICs9IGNoOworICAgICAgICAgICAgICAgICAgICB0aGlzLnl5bGVuZysrOworICAgICAg
ICAgICAgICAgICAgICB0aGlzLm9mZnNldCsrOworICAgICAgICAgICAgICAgICAgICB0aGlzLm1h
dGNoICs9IGNoOworICAgICAgICAgICAgICAgICAgICB0aGlzLm1hdGNoZWQgKz0gY2g7CisgICAg
ICAgICAgICAgICAgICAgIHZhciBsaW5lcyA9IGNoLm1hdGNoKC8oPzpcclxuP3xcbikuKi9nKTsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmVzKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICB0aGlzLnl5bGluZW5vKys7CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnl5bGxvYy5s
YXN0X2xpbmUrKzsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHRoaXMueXlsbG9jLmxhc3RfY29sdW1uKys7CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5yYW5nZXMpIHRoaXMueXls
bG9jLnJhbmdlWzFdKys7CisKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5wdXQgPSB0aGlz
Ll9pbnB1dC5zbGljZSgxKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNoOworICAgICAg
ICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgdW5wdXQ6IGZ1bmN0aW9uIHVucHV0KGNoKSB7
CisgICAgICAgICAgICAgICAgICAgIHZhciBsZW4gPSBjaC5sZW5ndGg7CisgICAgICAgICAgICAg
ICAgICAgIHZhciBsaW5lcyA9IGNoLnNwbGl0KC8oPzpcclxuP3xcbikvZyk7CisKKyAgICAgICAg
ICAgICAgICAgICAgdGhpcy5faW5wdXQgPSBjaCArIHRoaXMuX2lucHV0OworICAgICAgICAgICAg
ICAgICAgICB0aGlzLnl5dGV4dCA9IHRoaXMueXl0ZXh0LnN1YnN0cigwLCB0aGlzLnl5dGV4dC5s
ZW5ndGggLSBsZW4gLSAxKTsKKyAgICAgICAgICAgICAgICAgICAgLy90aGlzLnl5bGVuZyAtPSBs
ZW47CisgICAgICAgICAgICAgICAgICAgIHRoaXMub2Zmc2V0IC09IGxlbjsKKyAgICAgICAgICAg
ICAgICAgICAgdmFyIG9sZExpbmVzID0gdGhpcy5tYXRjaC5zcGxpdCgvKD86XHJcbj98XG4pL2cp
OworICAgICAgICAgICAgICAgICAgICB0aGlzLm1hdGNoID0gdGhpcy5tYXRjaC5zdWJzdHIoMCwg
dGhpcy5tYXRjaC5sZW5ndGggLSAxKTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXRjaGVk
ID0gdGhpcy5tYXRjaGVkLnN1YnN0cigwLCB0aGlzLm1hdGNoZWQubGVuZ3RoIC0gMSk7CisKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGxpbmVzLmxlbmd0aCAtIDEpIHRoaXMueXlsaW5lbm8gLT0g
bGluZXMubGVuZ3RoIC0gMTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0aGlzLnl5bGxv
Yy5yYW5nZTsKKworICAgICAgICAgICAgICAgICAgICB0aGlzLnl5bGxvYyA9IHsgZmlyc3RfbGlu
ZTogdGhpcy55eWxsb2MuZmlyc3RfbGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxhc3Rf
bGluZTogdGhpcy55eWxpbmVubyArIDEsCisgICAgICAgICAgICAgICAgICAgICAgICBmaXJzdF9j
b2x1bW46IHRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
IGxhc3RfY29sdW1uOiBsaW5lcyA/IChsaW5lcy5sZW5ndGggPT09IG9sZExpbmVzLmxlbmd0aCA/
IHRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbiA6IDApICsgb2xkTGluZXNbb2xkTGluZXMubGVuZ3Ro
IC0gbGluZXMubGVuZ3RoXS5sZW5ndGggLSBsaW5lc1swXS5sZW5ndGggOiB0aGlzLnl5bGxvYy5m
aXJzdF9jb2x1bW4gLSBsZW4KKyAgICAgICAgICAgICAgICAgICAgfTsKKworICAgICAgICAgICAg
ICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJhbmdlcykgeworICAgICAgICAgICAgICAgICAgICAg
ICAgdGhpcy55eWxsb2MucmFuZ2UgPSBbclswXSwgclswXSArIHRoaXMueXlsZW5nIC0gbGVuXTsK
KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsK
KyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIG1vcmU6IGZ1bmN0aW9uIG1vcmUo
KSB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuX21vcmUgPSB0cnVlOworICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAg
IGxlc3M6IGZ1bmN0aW9uIGxlc3MobikgeworICAgICAgICAgICAgICAgICAgICB0aGlzLnVucHV0
KHRoaXMubWF0Y2guc2xpY2UobikpOworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAg
ICAgcGFzdElucHV0OiBmdW5jdGlvbiBwYXN0SW5wdXQoKSB7CisgICAgICAgICAgICAgICAgICAg
IHZhciBwYXN0ID0gdGhpcy5tYXRjaGVkLnN1YnN0cigwLCB0aGlzLm1hdGNoZWQubGVuZ3RoIC0g
dGhpcy5tYXRjaC5sZW5ndGgpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHBhc3QubGVu
Z3RoID4gMjAgPyAnLi4uJyA6ICcnKSArIHBhc3Quc3Vic3RyKC0yMCkucmVwbGFjZSgvXG4vZywg
IiIpOworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgdXBjb21pbmdJbnB1dDog
ZnVuY3Rpb24gdXBjb21pbmdJbnB1dCgpIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIG5leHQg
PSB0aGlzLm1hdGNoOworICAgICAgICAgICAgICAgICAgICBpZiAobmV4dC5sZW5ndGggPCAyMCkg
eworICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCArPSB0aGlzLl9pbnB1dC5zdWJzdHIoMCwg
MjAgLSBuZXh0Lmxlbmd0aCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIChuZXh0LnN1YnN0cigwLCAyMCkgKyAobmV4dC5sZW5ndGggPiAyMCA/ICcu
Li4nIDogJycpKS5yZXBsYWNlKC9cbi9nLCAiIik7CisgICAgICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgICAgICBzaG93UG9zaXRpb246IGZ1bmN0aW9uIHNob3dQb3NpdGlvbigpIHsKKyAgICAg
ICAgICAgICAgICAgICAgdmFyIHByZSA9IHRoaXMucGFzdElucHV0KCk7CisgICAgICAgICAgICAg
ICAgICAgIHZhciBjID0gbmV3IEFycmF5KHByZS5sZW5ndGggKyAxKS5qb2luKCItIik7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBwcmUgKyB0aGlzLnVwY29taW5nSW5wdXQoKSArICJcbiIg
KyBjICsgIl4iOworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgbmV4dDogZnVu
Y3Rpb24gbmV4dCgpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZG9uZSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuRU9GOworICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5faW5wdXQpIHRoaXMuZG9uZSA9IHRy
dWU7CisKKyAgICAgICAgICAgICAgICAgICAgdmFyIHRva2VuLCBtYXRjaCwgdGVtcE1hdGNoLCBp
bmRleCwgY29sLCBsaW5lczsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9tb3JlKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnl5dGV4dCA9ICcnOworICAgICAgICAgICAg
ICAgICAgICAgICAgdGhpcy5tYXRjaCA9ICcnOworICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgIHZhciBydWxlcyA9IHRoaXMuX2N1cnJlbnRSdWxlcygpOworICAgICAg
ICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJ1bGVzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB0ZW1wTWF0Y2ggPSB0aGlzLl9pbnB1dC5tYXRjaCh0aGlz
LnJ1bGVzW3J1bGVzW2ldXSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGVtcE1hdGNo
ICYmICghbWF0Y2ggfHwgdGVtcE1hdGNoWzBdLmxlbmd0aCA+IG1hdGNoWzBdLmxlbmd0aCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCA9IHRlbXBNYXRjaDsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbmRleCA9IGk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCF0aGlzLm9wdGlvbnMuZmxleCkgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNo
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBsaW5lcyA9IG1hdGNoWzBdLm1hdGNoKC8oPzpc
clxuP3xcbikuKi9nKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaW5lcykgdGhpcy55
eWxpbmVubyArPSBsaW5lcy5sZW5ndGg7CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnl5
bGxvYyA9IHsgZmlyc3RfbGluZTogdGhpcy55eWxsb2MubGFzdF9saW5lLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGxhc3RfbGluZTogdGhpcy55eWxpbmVubyArIDEsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZmlyc3RfY29sdW1uOiB0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0X2NvbHVtbjogbGluZXMgPyBsaW5lc1ts
aW5lcy5sZW5ndGggLSAxXS5sZW5ndGggLSBsaW5lc1tsaW5lcy5sZW5ndGggLSAxXS5tYXRjaCgv
XHI/XG4/LylbMF0ubGVuZ3RoIDogdGhpcy55eWxsb2MubGFzdF9jb2x1bW4gKyBtYXRjaFswXS5s
ZW5ndGggfTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMueXl0ZXh0ICs9IG1hdGNoWzBd
OworICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXRjaCArPSBtYXRjaFswXTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHRoaXMubWF0Y2hlcyA9IG1hdGNoOworICAgICAgICAgICAgICAg
ICAgICAgICAgdGhpcy55eWxlbmcgPSB0aGlzLnl5dGV4dC5sZW5ndGg7CisgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJhbmdlcykgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRoaXMueXlsbG9jLnJhbmdlID0gW3RoaXMub2Zmc2V0LCB0aGlzLm9mZnNldCAr
PSB0aGlzLnl5bGVuZ107CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgICAgICB0aGlzLl9tb3JlID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICB0
aGlzLl9pbnB1dCA9IHRoaXMuX2lucHV0LnNsaWNlKG1hdGNoWzBdLmxlbmd0aCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICB0aGlzLm1hdGNoZWQgKz0gbWF0Y2hbMF07CisgICAgICAgICAgICAg
ICAgICAgICAgICB0b2tlbiA9IHRoaXMucGVyZm9ybUFjdGlvbi5jYWxsKHRoaXMsIHRoaXMueXks
IHRoaXMsIHJ1bGVzW2luZGV4XSwgdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0
YWNrLmxlbmd0aCAtIDFdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmRvbmUg
JiYgdGhpcy5faW5wdXQpIHRoaXMuZG9uZSA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKHRva2VuKSByZXR1cm4gdG9rZW47ZWxzZSByZXR1cm47CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2lucHV0ID09PSAiIikgeworICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuRU9GOworICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VFcnJv
cignTGV4aWNhbCBlcnJvciBvbiBsaW5lICcgKyAodGhpcy55eWxpbmVubyArIDEpICsgJy4gVW5y
ZWNvZ25pemVkIHRleHQuXG4nICsgdGhpcy5zaG93UG9zaXRpb24oKSwgeyB0ZXh0OiAiIiwgdG9r
ZW46IG51bGwsIGxpbmU6IHRoaXMueXlsaW5lbm8gfSk7CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGxleDogZnVuY3Rpb24gbGV4KCkg
eworICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHRoaXMubmV4dCgpOworICAgICAgICAgICAg
ICAgICAgICBpZiAodHlwZW9mIHIgIT09ICd1bmRlZmluZWQnKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gcjsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmxleCgpOworICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBiZWdpbjogZnVuY3Rpb24gYmVn
aW4oY29uZGl0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uU3RhY2su
cHVzaChjb25kaXRpb24pOworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgcG9w
U3RhdGU6IGZ1bmN0aW9uIHBvcFN0YXRlKCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dGhpcy5jb25kaXRpb25TdGFjay5wb3AoKTsKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgICAgIF9jdXJyZW50UnVsZXM6IGZ1bmN0aW9uIF9jdXJyZW50UnVsZXMoKSB7CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbmRpdGlvbnNbdGhpcy5jb25kaXRpb25TdGFja1t0
aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCAtIDFdXS5ydWxlczsKKyAgICAgICAgICAgICAgICB9
LAorICAgICAgICAgICAgICAgIHRvcFN0YXRlOiBmdW5jdGlvbiB0b3BTdGF0ZSgpIHsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25T
dGFjay5sZW5ndGggLSAyXTsKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHB1
c2hTdGF0ZTogZnVuY3Rpb24gYmVnaW4oY29uZGl0aW9uKSB7CisgICAgICAgICAgICAgICAgICAg
IHRoaXMuYmVnaW4oY29uZGl0aW9uKTsKKyAgICAgICAgICAgICAgICB9IH07CisgICAgICAgICAg
ICBsZXhlci5vcHRpb25zID0ge307CisgICAgICAgICAgICBsZXhlci5wZXJmb3JtQWN0aW9uID0g
ZnVuY3Rpb24gYW5vbnltb3VzKHl5LCB5eV8sICRhdm9pZGluZ19uYW1lX2NvbGxpc2lvbnMsIFlZ
X1NUQVJUCisgICAgICAgICAgICAvKiovKSB7CisKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiBz
dHJpcChzdGFydCwgZW5kKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB5eV8ueXl0ZXh0
ID0geXlfLnl5dGV4dC5zdWJzdHIoc3RhcnQsIHl5Xy55eWxlbmcgLSBlbmQpOworICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgIHZhciBZWVNUQVRFID0gWVlfU1RBUlQ7CisgICAg
ICAgICAgICAgICAgc3dpdGNoICgkYXZvaWRpbmdfbmFtZV9jb2xsaXNpb25zKSB7CisgICAgICAg
ICAgICAgICAgICAgIGNhc2UgMDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh5eV8ueXl0
ZXh0LnNsaWNlKC0yKSA9PT0gIlxcXFwiKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RyaXAoMCwgMSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iZWdpbigibXUi
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoeXlfLnl5dGV4dC5zbGljZSgt
MSkgPT09ICJcXCIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpcCgwLCAxKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJlZ2luKCJlbXUiKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhp
cy5iZWdpbigibXUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICh5eV8ueXl0ZXh0KSByZXR1cm4gMTU7CisKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gMTU7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5w
b3BTdGF0ZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE1OworCisgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAzOgorICAg
ICAgICAgICAgICAgICAgICAgICAgdGhpcy5iZWdpbigncmF3Jyk7cmV0dXJuIDE1OworICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNDoKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIFNob3VsZCBiZSB1c2luZyBgdGhpcy50b3BTdGF0ZSgpYCBiZWxvdywgYnV0IGl0
IGN1cnJlbnRseQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmV0dXJucyB0aGUgc2Vjb25k
IHRvcCBpbnN0ZWFkIG9mIHRoZSBmaXJzdCB0b3AuIE9wZW5lZCBhbgorICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gaXNzdWUgYWJvdXQgaXQgYXQgaHR0cHM6Ly9naXRodWIuY29tL3phYWNoL2pp
c29uL2lzc3Vlcy8yOTEKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbmRpdGlv
blN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoIC0gMV0gPT09ICdyYXcnKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE1OworICAgICAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB5eV8ueXl0ZXh0ID0geXlf
Lnl5dGV4dC5zdWJzdHIoNSwgeXlfLnl5bGVuZyAtIDkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiAnRU5EX1JBV19CTE9DSyc7CisgICAgICAgICAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBj
YXNlIDU6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTU7CisgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA2OgorICAgICAgICAg
ICAgICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpOworICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIDE0OworCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICAgICAgY2FzZSA3OgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDY1OworICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgODoK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA2ODsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDk6CisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gMTk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICAgICAgY2FzZSAxMDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucG9w
U3RhdGUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmVnaW4oJ3JhdycpOworICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDIzOworCisgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAxMToKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiA1NTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgICAgICBjYXNlIDEyOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDYw
OworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNh
c2UgMTM6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMjk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAxNDoKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiA0NzsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgICAgICBjYXNlIDE1OgorICAgICAgICAgICAgICAgICAgICAgICAg
dGhpcy5wb3BTdGF0ZSgpO3JldHVybiA0NDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgICAgICBjYXNlIDE2OgorICAgICAgICAgICAgICAgICAgICAgICAg
dGhpcy5wb3BTdGF0ZSgpO3JldHVybiA0NDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgICAgICBjYXNlIDE3OgorICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIDM0OworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICAgIGNhc2UgMTg6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMzk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAxOToK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA1MTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDIwOgorICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIDQ4OworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgICAgIGNhc2UgMjE6CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVu
cHV0KHl5Xy55eXRleHQpOworICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgp
OworICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iZWdpbignY29tJyk7CisKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDIyOgorICAg
ICAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpOworICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIDE0OworCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICAgICAgY2FzZSAyMzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA0
ODsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBj
YXNlIDI0OgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDczOworICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMjU6CisgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gNzI7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAyNjoKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiA3MjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgICAgICBjYXNlIDI3OgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDg3OworICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMjg6
CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZ25vcmUgd2hpdGVzcGFjZQorICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMjk6CisgICAg
ICAgICAgICAgICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7cmV0dXJuIDU0OworICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMzA6CisgICAg
ICAgICAgICAgICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7cmV0dXJuIDMzOworICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMzE6CisgICAg
ICAgICAgICAgICAgICAgICAgICB5eV8ueXl0ZXh0ID0gc3RyaXAoMSwgMikucmVwbGFjZSgvXFwi
L2csICciJyk7cmV0dXJuIDgwOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgICAgIGNhc2UgMzI6CisgICAgICAgICAgICAgICAgICAgICAgICB5eV8ueXl0
ZXh0ID0gc3RyaXAoMSwgMikucmVwbGFjZSgvXFwnL2csICInIik7cmV0dXJuIDgwOworICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMzM6Cisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gODU7CisgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAzNDoKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiA4MjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgICAgICBjYXNlIDM1OgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDgy
OworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNh
c2UgMzY6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gODM7CisgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAzNzoKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiA4NDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgICAgICBjYXNlIDM4OgorICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIDgxOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICAgIGNhc2UgMzk6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gNzU7CisgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA0MDoK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA3NzsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDQxOgorICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIDcyOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgICAgIGNhc2UgNDI6CisgICAgICAgICAgICAgICAgICAgICAgICB5eV8ueXl0
ZXh0ID0geXlfLnl5dGV4dC5yZXBsYWNlKC9cXChbXFxcXV0pL2csICckMScpO3JldHVybiA3MjsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNl
IDQzOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdJTlZBTElEJzsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDQ0OgorICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDU7CisgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9OworICAgICAgICAgICAgbGV4
ZXIucnVsZXMgPSBbL14oPzpbXlx4MDBdKj8oPz0oXHtceykpKS8sIC9eKD86W15ceDAwXSspLywg
L14oPzpbXlx4MDBdezIsfT8oPz0oXHtce3xcXFx7XHt8XFxcXFx7XHt8JCkpKS8sIC9eKD86XHtc
e1x7XHsoPz1bXlwvXSkpLywgL14oPzpce1x7XHtce1wvW15ccyEiIyUtLFwuXC87LT5AXFstXF5g
XHstfl0rKD89Wz19XHNcLy5dKVx9XH1cfVx9KS8sIC9eKD86W15ceDAwXSo/KD89KFx7XHtce1x7
KSkpLywgL14oPzpbXHNcU10qPy0tKH4pP1x9XH0pLywgL14oPzpcKCkvLCAvXig/OlwpKS8sIC9e
KD86XHtce1x7XHspLywgL14oPzpcfVx9XH1cfSkvLCAvXig/Olx7XHsofik/PikvLCAvXig/Olx7
XHsofik/Iz4pLywgL14oPzpce1x7KH4pPyNcKj8pLywgL14oPzpce1x7KH4pP1wvKS8sIC9eKD86
XHtceyh+KT9cXlxzKih+KT9cfVx9KS8sIC9eKD86XHtceyh+KT9ccyplbHNlXHMqKH4pP1x9XH0p
LywgL14oPzpce1x7KH4pP1xeKS8sIC9eKD86XHtceyh+KT9ccyplbHNlXGIpLywgL14oPzpce1x7
KH4pP1x7KS8sIC9eKD86XHtceyh+KT8mKS8sIC9eKD86XHtceyh+KT8hLS0pLywgL14oPzpce1x7
KH4pPyFbXHNcU10qP1x9XH0pLywgL14oPzpce1x7KH4pP1wqPykvLCAvXig/Oj0pLywgL14oPzpc
LlwuKS8sIC9eKD86XC4oPz0oWz1+fVxzXC8uKXxdKSkpLywgL14oPzpbXC8uXSkvLCAvXig/Olxz
KykvLCAvXig/Olx9KH4pP1x9XH0pLywgL14oPzoofik/XH1cfSkvLCAvXig/OiIoXFxbIl18W14i
XSkqIikvLCAvXig/OicoXFxbJ118W14nXSkqJykvLCAvXig/OkApLywgL14oPzp0cnVlKD89KFt+
fVxzKV0pKSkvLCAvXig/OmZhbHNlKD89KFt+fVxzKV0pKSkvLCAvXig/OnVuZGVmaW5lZCg/PShb
fn1ccyldKSkpLywgL14oPzpudWxsKD89KFt+fVxzKV0pKSkvLCAvXig/Oi0/WzAtOV0rKD86XC5b
MC05XSspPyg/PShbfn1ccyldKSkpLywgL14oPzphc1xzK1x8KS8sIC9eKD86XHwpLywgL14oPzoo
W15ccyEiIyUtLFwuXC87LT5AXFstXF5gXHstfl0rKD89KFs9fn1cc1wvLil8XSkpKSkvLCAvXig/
OlxbKFxcXF18W15cXV0pKlxdKS8sIC9eKD86LikvLCAvXig/OiQpL107CisgICAgICAgICAgICBs
ZXhlci5jb25kaXRpb25zID0geyAibXUiOiB7ICJydWxlcyI6IFs3LCA4LCA5LCAxMCwgMTEsIDEy
LCAxMywgMTQsIDE1LCAxNiwgMTcsIDE4LCAxOSwgMjAsIDIxLCAyMiwgMjMsIDI0LCAyNSwgMjYs
IDI3LCAyOCwgMjksIDMwLCAzMSwgMzIsIDMzLCAzNCwgMzUsIDM2LCAzNywgMzgsIDM5LCA0MCwg
NDEsIDQyLCA0MywgNDRdLCAiaW5jbHVzaXZlIjogZmFsc2UgfSwgImVtdSI6IHsgInJ1bGVzIjog
WzJdLCAiaW5jbHVzaXZlIjogZmFsc2UgfSwgImNvbSI6IHsgInJ1bGVzIjogWzZdLCAiaW5jbHVz
aXZlIjogZmFsc2UgfSwgInJhdyI6IHsgInJ1bGVzIjogWzMsIDQsIDVdLCAiaW5jbHVzaXZlIjog
ZmFsc2UgfSwgIklOSVRJQUwiOiB7ICJydWxlcyI6IFswLCAxLCA0NF0sICJpbmNsdXNpdmUiOiB0
cnVlIH0gfTsKKyAgICAgICAgICAgIHJldHVybiBsZXhlcjsKKyAgICAgICAgfSkoKTsKKyAgICAg
ICAgcGFyc2VyLmxleGVyID0gbGV4ZXI7CisgICAgICAgIGZ1bmN0aW9uIFBhcnNlcigpIHsKKyAg
ICAgICAgICAgIHRoaXMueXkgPSB7fTsKKyAgICAgICAgfVBhcnNlci5wcm90b3R5cGUgPSBwYXJz
ZXI7cGFyc2VyLlBhcnNlciA9IFBhcnNlcjsKKyAgICAgICAgcmV0dXJuIG5ldyBQYXJzZXIoKTsK
KyAgICB9KSgpO2V4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7CisgICAgZXhwb3J0c1snZGVmYXVs
dCddID0gaGFuZGxlYmFyczsKK30pOworLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNh
dGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYklpNHVMeTR1
THk0dUx5NHVMMnhwWWk5b1lXNWtiR1ZpWVhKekwyTnZiWEJwYkdWeUwzQmhjbk5sY2k1cWN5SmRM
Q0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU96czdPenRCUVVWQkxGRkJRVWtzVlVGQlZT
eEhRVUZITEVOQlFVTXNXVUZCVlR0QlFVTTFRaXhaUVVGSkxFMUJRVTBzUjBGQlJ5eEZRVUZETEV0
QlFVc3NSVUZCUlN4VFFVRlRMRXRCUVVzc1IwRkJSeXhGUVVGSE8wRkJRM3BETEdOQlFVVXNSVUZC
UlN4RlFVRkZPMEZCUTA0c2IwSkJRVkVzUlVGQlJTeEZRVUZETEU5QlFVOHNSVUZCUXl4RFFVRkRM
RVZCUVVNc1RVRkJUU3hGUVVGRExFTkJRVU1zUlVGQlF5eFRRVUZUTEVWQlFVTXNRMEZCUXl4RlFV
RkRMRXRCUVVzc1JVRkJReXhEUVVGRExFVkJRVU1zY1VKQlFYRkNMRVZCUVVNc1EwRkJReXhGUVVG
RExGZEJRVmNzUlVGQlF5eERRVUZETEVWQlFVTXNWVUZCVlN4RlFVRkRMRU5CUVVNc1JVRkJReXhQ
UVVGUExFVkJRVU1zUTBGQlF5eEZRVUZETEZWQlFWVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1UwRkJV
eXhGUVVGRExFVkJRVVVzUlVGQlF5eGpRVUZqTEVWQlFVTXNSVUZCUlN4RlFVRkRMRk5CUVZNc1JV
RkJReXhGUVVGRkxFVkJRVU1zVTBGQlV5eEZRVUZETEVWQlFVVXNSVUZCUXl4VFFVRlRMRVZCUVVN
c1JVRkJSU3hGUVVGRExHTkJRV01zUlVGQlF5eEZRVUZGTEVWQlFVTXNNa0pCUVRKQ0xFVkJRVU1z
UlVGQlJTeEZRVUZETEdWQlFXVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1owSkJRV2RDTEVWQlFVTXNS
VUZCUlN4RlFVRkRMRmxCUVZrc1JVRkJReXhGUVVGRkxFVkJRVU1zTUVKQlFUQkNMRVZCUVVNc1JV
RkJSU3hGUVVGRExITkNRVUZ6UWl4RlFVRkRMRVZCUVVVc1JVRkJReXhwUWtGQmFVSXNSVUZCUXl4
RlFVRkZMRVZCUVVNc1YwRkJWeXhGUVVGRExFVkJRVVVzUlVGQlF5eGxRVUZsTEVWQlFVTXNSVUZC
UlN4RlFVRkRMRmxCUVZrc1JVRkJReXhGUVVGRkxFVkJRVU1zWVVGQllTeEZRVUZETEVWQlFVVXNS
VUZCUXl4bFFVRmxMRVZCUVVNc1JVRkJSU3hGUVVGRExGbEJRVmtzUlVGQlF5eEZRVUZGTEVWQlFV
TXNkVUpCUVhWQ0xFVkJRVU1zUlVGQlJTeEZRVUZETEcxQ1FVRnRRaXhGUVVGRExFVkJRVVVzUlVG
QlF5eHRRa0ZCYlVJc1JVRkJReXhGUVVGRkxFVkJRVU1zVDBGQlR5eEZRVUZETEVWQlFVVXNSVUZC
UXl4alFVRmpMRVZCUVVNc1JVRkJSU3hGUVVGRExIbENRVUY1UWl4RlFVRkRMRVZCUVVVc1JVRkJR
eXh4UWtGQmNVSXNSVUZCUXl4RlFVRkZMRVZCUVVNc2NVSkJRWEZDTEVWQlFVTXNSVUZCUlN4RlFV
RkRMR3RDUVVGclFpeEZRVUZETEVWQlFVVXNSVUZCUXl4dlFrRkJiMElzUlVGQlF5eEZRVUZGTEVW
QlFVTXNPRUpCUVRoQ0xFVkJRVU1zUlVGQlJTeEZRVUZETERCQ1FVRXdRaXhGUVVGRExFVkJRVVVz
UlVGQlF5d3dRa0ZCTUVJc1JVRkJReXhGUVVGRkxFVkJRVU1zYlVKQlFXMUNMRVZCUVVNc1JVRkJS
U3hGUVVGRExGTkJRVk1zUlVGQlF5eEZRVUZGTEVWQlFVTXNZMEZCWXl4RlFVRkRMRVZCUVVVc1JV
RkJReXh6UWtGQmMwSXNSVUZCUXl4RlFVRkZMRVZCUVVNc1pVRkJaU3hGUVVGRExFVkJRVVVzUlVG
QlF5eE5RVUZOTEVWQlFVTXNSVUZCUlN4RlFVRkRMSE5DUVVGelFpeEZRVUZETEVWQlFVVXNSVUZC
UXl4clFrRkJhMElzUlVGQlF5eEZRVUZGTEVWQlFVTXNaMEpCUVdkQ0xFVkJRVU1zUlVGQlJTeEZR
VUZETEhOQ1FVRnpRaXhGUVVGRExFVkJRVVVzUlVGQlF5eHJRa0ZCYTBJc1JVRkJReXhGUVVGRkxF
VkJRVU1zYVVKQlFXbENMRVZCUVVNc1JVRkJSU3hGUVVGRExHTkJRV01zUlVGQlF5eEZRVUZGTEVW
QlFVTXNZVUZCWVN4RlFVRkRMRVZCUVVVc1JVRkJReXh4UWtGQmNVSXNSVUZCUXl4RlFVRkZMRVZC
UVVNc2FVSkJRV2xDTEVWQlFVTXNSVUZCUlN4RlFVRkRMR3RDUVVGclFpeEZRVUZETEVWQlFVVXNS
VUZCUXl4dlFrRkJiMElzUlVGQlF5eEZRVUZGTEVWQlFVTXNPRUpCUVRoQ0xFVkJRVU1zUlVGQlJT
eEZRVUZETERCQ1FVRXdRaXhGUVVGRExFVkJRVVVzUlVGQlF5eFBRVUZQTEVWQlFVTXNSVUZCUlN4
RlFVRkRMRTlCUVU4c1JVRkJReXhGUVVGRkxFVkJRVU1zV1VGQldTeEZRVUZETEVWQlFVVXNSVUZC
UXl4dFFrRkJiVUlzUlVGQlF5eEZRVUZGTEVWQlFVTXNaVUZCWlN4RlFVRkRMRVZCUVVVc1JVRkJR
eXhoUVVGaExFVkJRVU1zUlVGQlJTeEZRVUZETEUxQlFVMHNSVUZCUXl4RlFVRkZMRVZCUVVNc2RV
SkJRWFZDTEVWQlFVTXNSVUZCUlN4RlFVRkRMR0ZCUVdFc1JVRkJReXhGUVVGRkxFVkJRVU1zU1VG
QlNTeEZRVUZETEVWQlFVVXNSVUZCUXl4UlFVRlJMRVZCUVVNc1JVRkJSU3hGUVVGRExHRkJRV0Vz
UlVGQlF5eEZRVUZGTEVWQlFVTXNiVUpCUVcxQ0xFVkJRVU1zUlVGQlJTeEZRVUZETERoQ1FVRTRR
aXhGUVVGRExFVkJRVVVzUlVGQlF5eHZRa0ZCYjBJc1JVRkJReXhGUVVGRkxFVkJRVU1zVFVGQlRT
eEZRVUZETEVWQlFVVXNSVUZCUXl4VlFVRlZMRVZCUVVNc1JVRkJSU3hGUVVGRExGRkJRVkVzUlVG
QlF5eEZRVUZGTEVWQlFVTXNVVUZCVVN4RlFVRkRMRVZCUVVVc1JVRkJReXhUUVVGVExFVkJRVU1z
UlVGQlJTeEZRVUZETEZkQlFWY3NSVUZCUXl4RlFVRkZMRVZCUVVNc1RVRkJUU3hGUVVGRExFVkJR
VVVzUlVGQlF5eE5RVUZOTEVWQlFVTXNSVUZCUlN4RlFVRkRMR05CUVdNc1JVRkJReXhGUVVGRkxF
VkJRVU1zUzBGQlN5eEZRVUZETEVWQlFVVXNSVUZCUXl4VFFVRlRMRVZCUVVNc1EwRkJReXhGUVVG
RExFMUJRVTBzUlVGQlF5eERRVUZETEVWQlFVTTdRVUZEYW01RUxITkNRVUZWTEVWQlFVVXNSVUZC
UXl4RFFVRkRMRVZCUVVNc1QwRkJUeXhGUVVGRExFTkJRVU1zUlVGQlF5eExRVUZMTEVWQlFVTXNS
VUZCUlN4RlFVRkRMRk5CUVZNc1JVRkJReXhGUVVGRkxFVkJRVU1zVTBGQlV5eEZRVUZETEVWQlFV
VXNSVUZCUXl4bFFVRmxMRVZCUVVNc1JVRkJSU3hGUVVGRExHZENRVUZuUWl4RlFVRkRMRVZCUVVV
c1JVRkJReXhwUWtGQmFVSXNSVUZCUXl4RlFVRkZMRVZCUVVNc1dVRkJXU3hGUVVGRExFVkJRVVVz
UlVGQlF5eFBRVUZQTEVWQlFVTXNSVUZCUlN4RlFVRkRMR05CUVdNc1JVRkJReXhGUVVGRkxFVkJR
VU1zYjBKQlFXOUNMRVZCUVVNc1JVRkJSU3hGUVVGRExGTkJRVk1zUlVGQlF5eEZRVUZGTEVWQlFV
TXNaVUZCWlN4RlFVRkRMRVZCUVVVc1JVRkJReXhOUVVGTkxFVkJRVU1zUlVGQlJTeEZRVUZETEdk
Q1FVRm5RaXhGUVVGRExFVkJRVVVzUlVGQlF5eHBRa0ZCYVVJc1JVRkJReXhGUVVGRkxFVkJRVU1z
WTBGQll5eEZRVUZETEVWQlFVVXNSVUZCUXl4dlFrRkJiMElzUlVGQlF5eEZRVUZGTEVWQlFVTXNX
VUZCV1N4RlFVRkRMRVZCUVVVc1JVRkJReXhoUVVGaExFVkJRVU1zUlVGQlJTeEZRVUZETEVsQlFV
a3NSVUZCUXl4RlFVRkZMRVZCUVVNc1VVRkJVU3hGUVVGRExFVkJRVVVzUlVGQlF5eHRRa0ZCYlVJ
c1JVRkJReXhGUVVGRkxFVkJRVU1zYjBKQlFXOUNMRVZCUVVNc1JVRkJSU3hGUVVGRExGRkJRVkVz
UlVGQlF5eEZRVUZGTEVWQlFVTXNVVUZCVVN4RlFVRkRMRVZCUVVVc1JVRkJReXhUUVVGVExFVkJR
VU1zUlVGQlJTeEZRVUZETEZkQlFWY3NSVUZCUXl4RlFVRkZMRVZCUVVNc1RVRkJUU3hGUVVGRExF
VkJRVVVzUlVGQlF5eE5RVUZOTEVWQlFVTXNSVUZCUlN4RlFVRkRMRXRCUVVzc1JVRkJRenRCUVVN
MVpTeDNRa0ZCV1N4RlFVRkZMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZE
TEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZR
VUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5
eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBG
QlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1z
UTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJR
VU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExF
TkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVG
RExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhG
UVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJR
eXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1Ew
RkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVN
c1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5C
UVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRM
RU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFV
RkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4
RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZC
UlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNR
MEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFV
TXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVO
QlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZE
TEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZR
VUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5
eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVG
QlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1z
UTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJR
VU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExF
TkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVG
RExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hG
UVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJR
eXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JV
RkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVN
c1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5C
UVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRM
RU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFV
RkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4
RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZC
UXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNS
VUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFV
TXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVO
QlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZE
TEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZR
VUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJT
eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBG
QlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1z
UlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJR
VU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExF
TkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVG
RExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhG
UVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJS
U3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1Ew
RkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVN
c1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5C
UVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRM
RU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFV
RkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4
RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZC
UlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNR
MEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFV
TXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVO
QlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZE
TEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZR
VUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5
eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVG
QlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1z
UTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJR
VU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExF
TkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVG
RExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hG
UVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJR
eXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JV
RkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBGQlEzSnpRaXg1UWtGQllTeEZRVUZGTEZO
QlFWTXNVMEZCVXl4RFFVRkRMRTFCUVUwc1JVRkJReXhOUVVGTkxFVkJRVU1zVVVGQlVTeEZRVUZE
TEVWQlFVVXNSVUZCUXl4UFFVRlBMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVU3YTBKQlEyNUZP
enRCUVVWT0xHOUNRVUZKTEVWQlFVVXNSMEZCUnl4RlFVRkZMRU5CUVVNc1RVRkJUU3hIUVVGSExF
TkJRVU1zUTBGQlF6dEJRVU4yUWl4M1FrRkJVU3hQUVVGUE8wRkJRMllzZVVKQlFVc3NRMEZCUXp0
QlFVRkZMQ3RDUVVGUExFVkJRVVVzUTBGQlF5eEZRVUZGTEVkQlFVTXNRMEZCUXl4RFFVRkRMRU5C
UVVNN1FVRkRlRUlzT0VKQlFVMDdRVUZCUVN4QlFVTk9MSGxDUVVGTExFTkJRVU03UVVGQlF5dzBR
a0ZCU1N4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zWTBGQll5eERRVUZETEVWQlFV
VXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJRekZETERoQ1FVRk5PMEZCUVVF
c1FVRkRUaXg1UWtGQlN5eERRVUZETzBGQlFVTXNORUpCUVVrc1EwRkJReXhEUVVGRExFZEJRVWNz
UlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRPMEZCUTNaQ0xEaENRVUZOTzBGQlFVRXNR
VUZEVGl4NVFrRkJTeXhEUVVGRE8wRkJRVU1zTkVKQlFVa3NRMEZCUXl4RFFVRkRMRWRCUVVjc1JV
RkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETzBGQlEzWkNMRGhDUVVGTk8wRkJRVUVzUVVG
RFRpeDVRa0ZCU3l4RFFVRkRPMEZCUVVNc05FSkJRVWtzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZC
UlN4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRE8wRkJRM1pDTERoQ1FVRk5PMEZCUVVFc1FVRkRU
aXg1UWtGQlN5eERRVUZETzBGQlFVTXNORUpCUVVrc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJT
eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRPMEZCUTNaQ0xEaENRVUZOTzBGQlFVRXNRVUZEVGl4
NVFrRkJTeXhEUVVGRE8wRkJRVU1zTkVKQlFVa3NRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hE
UVVGRExFVkJRVVVzUTBGQlF5eERRVUZETzBGQlEzWkNMRGhDUVVGTk8wRkJRVUVzUVVGRFRpeDVR
a0ZCU3l4RFFVRkRPMEZCUVVNc05FSkJRVWtzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4RFFV
RkRMRVZCUVVVc1EwRkJReXhEUVVGRE8wRkJRM1pDTERoQ1FVRk5PMEZCUVVFc1FVRkRUaXg1UWtG
QlN5eERRVUZETzBGQlEwWXNORUpCUVVrc1EwRkJReXhEUVVGRExFZEJRVWM3UVVGRFVDeG5RMEZC
U1N4RlFVRkZMR3RDUVVGclFqdEJRVU40UWl4cFEwRkJTeXhGUVVGRkxFVkJRVVVzUTBGQlF5eFpR
VUZaTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRE8wRkJRemxDTEdsRFFV
RkxMRVZCUVVVc1JVRkJSU3hEUVVGRExGVkJRVlVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4
RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETzBGQlEzQkRMQ3RD
UVVGSExFVkJRVVVzUlVGQlJTeERRVUZETEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJS
U3hEUVVGRE8zbENRVU42UWl4RFFVRkRPenRCUVVWT0xEaENRVUZOTzBGQlFVRXNRVUZEVGl4NVFr
RkJTeXhGUVVGRk8wRkJRMGdzTkVKQlFVa3NRMEZCUXl4RFFVRkRMRWRCUVVjN1FVRkRVQ3huUTBG
QlNTeEZRVUZGTEd0Q1FVRnJRanRCUVVONFFpeHZRMEZCVVN4RlFVRkZMRVZCUVVVc1EwRkJReXhG
UVVGRkxFTkJRVU03UVVGRGFFSXNhVU5CUVVzc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJTeERR
VUZETzBGQlEySXNLMEpCUVVjc1JVRkJSU3hGUVVGRkxFTkJRVU1zVDBGQlR5eERRVUZETEVsQlFV
a3NRMEZCUXl4RlFVRkZMRU5CUVVNN2VVSkJRM3BDTEVOQlFVTTdPMEZCUlU0c09FSkJRVTA3UVVG
QlFTeEJRVU5PTEhsQ1FVRkxMRVZCUVVVN1FVRkJReXcwUWtGQlNTeERRVUZETEVOQlFVTXNSMEZC
Unl4RlFVRkZMRU5CUVVNc1pVRkJaU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVkQlFVTXNR
MEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVVzUjBGQlF5eERRVUZETEVOQlFV
TXNSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEVW
QlFVVXNRMEZCUXl4RFFVRkRPMEZCUTNwRkxEaENRVUZOTzBGQlFVRXNRVUZEVGl4NVFrRkJTeXhG
UVVGRk8wRkJRVU1zTkVKQlFVa3NRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hKUVVGSkxFVkJR
VVVzUlVGQlJTeERRVUZETEVWQlFVVXNSMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hOUVVGTkxF
VkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVXNSMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hKUVVG
SkxFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVXNSMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hE
UVVGRE8wRkJRM1JGTERoQ1FVRk5PMEZCUVVFc1FVRkRUaXg1UWtGQlN5eEZRVUZGTzBGQlFVTXNO
RUpCUVVrc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETEZsQlFWa3NRMEZCUXl4RlFV
RkZMRU5CUVVNc1JVRkJSU3hIUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4
RlFVRkZMRWRCUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVXNSMEZC
UXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNT
MEZCU3l4RlFVRkZMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF6dEJRVU4yUml3NFFr
RkJUVHRCUVVGQkxFRkJRMDRzZVVKQlFVc3NSVUZCUlR0QlFVRkRMRFJDUVVGSkxFTkJRVU1zUTBG
QlF5eEhRVUZITEVWQlFVVXNRMEZCUXl4WlFVRlpMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVz
UjBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSU3hIUVVGRExFTkJR
VU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZMRWRCUVVNc1EwRkJReXhEUVVGRExF
VkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRWxCUVVrc1JVRkJSU3hKUVVG
SkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTTdRVUZEZEVZc09FSkJRVTA3UVVGQlFTeEJRVU5P
TEhsQ1FVRkxMRVZCUVVVN1FVRkJReXcwUWtGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZM
RWxCUVVrc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJTeEhRVUZETEVOQlFVTXNRMEZCUXl4RlFV
RkZMRWxCUVVrc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJTeEhRVUZETEVOQlFVTXNRMEZCUXl4
RlFVRkZMRTFCUVUwc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJTeEhRVUZETEVOQlFVTXNRMEZC
UXl4RlFVRkZMRWxCUVVrc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJTeEhRVUZETEVOQlFVTXNR
MEZCUXl4RlFVRkZMRmRCUVZjc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJTeEhRVUZETEVOQlFV
TXNRMEZCUXl4RlFVRkZMRXRCUVVzc1JVRkJSU3hGUVVGRkxFTkJRVU1zVlVGQlZTeERRVUZETEVW
QlFVVXNRMEZCUXl4RlFVRkZMRWRCUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZE
TEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJRenRCUVVOeVNpdzRRa0ZCVFR0QlFVRkJM
RUZCUTA0c2VVSkJRVXNzUlVGQlJUdEJRVUZETERSQ1FVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExF
VkJRVVVzU1VGQlNTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZMRWRCUVVNc1EwRkJReXhEUVVG
RExFVkJRVVVzVFVGQlRTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZMRWRCUVVNc1EwRkJReXhE
UVVGRExFVkJRVVVzU1VGQlNTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZMRWRCUVVNc1EwRkJR
eXhEUVVGRExFVkJRVVVzVjBGQlZ5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZMRWRCUVVNc1Ew
RkJReXhEUVVGRExFVkJRVVVzUzBGQlN5eEZRVUZGTEVWQlFVVXNRMEZCUXl4VlFVRlZMRU5CUVVN
c1JVRkJSU3hEUVVGRExFVkJRVVVzUjBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5C
UVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETzBGQlEzSkpMRGhDUVVGTk8wRkJR
VUVzUVVGRFRpeDVRa0ZCU3l4RlFVRkZPMEZCUVVNc05FSkJRVWtzUTBGQlF5eERRVUZETEVkQlFV
Y3NSVUZCUlN4SlFVRkpMRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVVzUjBGQlF5eERRVUZETEVO
QlFVTXNSVUZCUlN4TlFVRk5MRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVVzUjBGQlF5eERRVUZE
TEVOQlFVTXNSVUZCUlN4SlFVRkpMRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVVzUjBGQlF5eERR
VUZETEVOQlFVTXNSVUZCUlN4WFFVRlhMRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVVzUjBGQlF5
eERRVUZETEVOQlFVTXNSVUZCUlN4TFFVRkxMRVZCUVVVc1JVRkJSU3hEUVVGRExGVkJRVlVzUTBG
QlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4SFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVz
UTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNN1FVRkRja2tzT0VKQlFVMDdR
VUZCUVN4QlFVTk9MSGxDUVVGTExFVkJRVVU3UVVGQlF5dzBRa0ZCU1N4RFFVRkRMRU5CUVVNc1Iw
RkJSeXhGUVVGRkxFdEJRVXNzUlVGQlJTeEZRVUZGTEVOQlFVTXNWVUZCVlN4RFFVRkRMRVZCUVVV
c1EwRkJReXhGUVVGRkxFZEJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZC
UVVVc1IwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEU5QlFVOHNSVUZCUlN4RlFVRkZM
RU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF6dEJRVU12UlN3NFFrRkJUVHRCUVVGQkxF
RkJRMDRzZVVKQlFVc3NSVUZCUlR0QlFVTklMRFJDUVVGSkxFOUJRVThzUjBGQlJ5eEZRVUZGTEVO
QlFVTXNXVUZCV1N4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFZEJRVU1zUTBGQlF5eERRVUZE
TEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVc1IwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZR
VUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5
eEZRVUZGTEV0QlFVc3NSVUZCUlN4SlFVRkpMRU5CUVVNc1JVRkJSU3hEUVVGRE96UkNRVU0zUlN4
UFFVRlBMRWRCUVVjc1JVRkJSU3hEUVVGRExHTkJRV01zUTBGQlF5eERRVUZETEU5QlFVOHNRMEZC
UXl4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRkxFZEJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNS
MEZCUnl4RFFVRkRMRU5CUVVNN1FVRkRla1FzSzBKQlFVOHNRMEZCUXl4UFFVRlBMRWRCUVVjc1NV
RkJTU3hEUVVGRE96dEJRVVYyUWl3MFFrRkJTU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEV0
QlFVc3NSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSU3hIUVVGRExFTkJRVU1zUTBGQlF5eERRVUZE
TEV0QlFVc3NSVUZCUlN4UFFVRlBMRVZCUVVVc1QwRkJUeXhGUVVGRkxFdEJRVXNzUlVGQlJTeEpR
VUZKTEVWQlFVVXNRMEZCUXpzN1FVRkZkRVVzT0VKQlFVMDdRVUZCUVN4QlFVTk9MSGxDUVVGTExF
VkJRVVU3UVVGQlF5dzBRa0ZCU1N4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zUlVG
QlJTeERRVUZETEVOQlFVTTdRVUZEZUVJc09FSkJRVTA3UVVGQlFTeEJRVU5PTEhsQ1FVRkxMRVZC
UVVVN1FVRkJReXcwUWtGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkRMRWxCUVVrc1JVRkJS
U3hGUVVGRkxFTkJRVU1zUlVGQlJTeEhRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRXRCUVVzc1JV
RkJSU3hGUVVGRkxFTkJRVU1zVlVGQlZTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRWRCUVVN
c1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZC
UVVNc1EwRkJRenRCUVVNeFJTdzRRa0ZCVFR0QlFVRkJMRUZCUTA0c2VVSkJRVXNzUlVGQlJUdEJR
VUZETERSQ1FVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eGxRVUZsTEVOQlFV
TXNSVUZCUlN4RFFVRkRMRVZCUVVVc1IwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVO
QlFVTXNSVUZCUlN4SFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZG
TEVkQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVVzUjBGQlF5eERR
VUZETEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1ZVRkJWU3hEUVVGRExFVkJRVVVzUTBGQlF5
eEZRVUZGTEVkQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBG
QlF5eERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRE8wRkJRM1JJ
TERoQ1FVRk5PMEZCUVVFc1FVRkRUaXg1UWtGQlN5eEZRVUZGTzBGQlFVTXNORUpCUVVrc1EwRkJR
eXhEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETEdWQlFXVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JV
RkJSU3hIUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZMRWRCUVVN
c1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVXNSMEZCUXl4RFFVRkRMRU5C
UVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJTeEhRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZM
RVZCUVVVc1EwRkJReXhWUVVGVkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNSMEZCUXl4RFFV
RkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4
SlFVRkpMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU03UVVGRGRFZ3NPRUpCUVUwN1FVRkJRU3hC
UVVOT0xIbENRVUZMTEVWQlFVVTdRVUZEU0N3MFFrRkJTU3hEUVVGRExFTkJRVU1zUjBGQlJ6dEJR
VU5RTEdkRFFVRkpMRVZCUVVVc2EwSkJRV3RDTzBGQlEzaENMR2REUVVGSkxFVkJRVVVzUlVGQlJT
eERRVUZETEVWQlFVVXNSMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRaQ3hyUTBGQlRTeEZRVUZGTEVW
QlFVVXNRMEZCUXl4RlFVRkZMRWRCUVVNc1EwRkJReXhEUVVGRE8wRkJRMmhDTEdkRFFVRkpMRVZC
UVVVc1JVRkJSU3hEUVVGRExFVkJRVVVzUjBGQlF5eERRVUZETEVOQlFVTTdRVUZEWkN4clEwRkJU
U3hGUVVGRkxFVkJRVVU3UVVGRFZpeHBRMEZCU3l4RlFVRkZMRVZCUVVVc1EwRkJReXhWUVVGVkxF
TkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNSMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVG
RkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTTdRVUZEZEVNc0swSkJRVWNzUlVGQlJTeEZRVUZG
TEVOQlFVTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU03ZVVKQlEzcENM
RU5CUVVNN08wRkJSVTRzT0VKQlFVMDdRVUZCUVN4QlFVTk9MSGxDUVVGTExFVkJRVVU3UVVGQlF5
dzBRa0ZCU1N4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zYlVKQlFXMUNMRU5CUVVN
c1JVRkJSU3hEUVVGRExFVkJRVVVzUjBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5C
UVVNc1JVRkJSU3hIUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZM
RU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTTdRVUZETjBVc09F
SkJRVTA3UVVGQlFTeEJRVU5PTEhsQ1FVRkxMRVZCUVVVN1FVRkJReXcwUWtGQlNTeERRVUZETEVO
QlFVTXNSMEZCUnl4RlFVRkZMRWxCUVVrc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJTeEhRVUZE
TEVOQlFVTXNRMEZCUXl4RlFVRkZMRTFCUVUwc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJTeEhR
VUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRWxCUVVrc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJT
eEhRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRXRCUVVzc1JVRkJSU3hGUVVGRkxFTkJRVU1zVlVG
QlZTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRWRCUVVNc1EwRkJReXhEUVVGRExFVkJRVVVz
UlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJRenRCUVVNNVJ5dzRR
a0ZCVFR0QlFVRkJMRUZCUTA0c2VVSkJRVXNzUlVGQlJUdEJRVUZETERSQ1FVRkpMRU5CUVVNc1Ew
RkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXp0QlFVTjRRaXc0UWtG
QlRUdEJRVUZCTEVGQlEwNHNlVUpCUVVzc1JVRkJSVHRCUVVGRExEUkNRVUZKTEVOQlFVTXNRMEZC
UXl4SFFVRkhMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF6dEJRVU40UWl3NFFrRkJU
VHRCUVVGQkxFRkJRMDRzZVVKQlFVc3NSVUZCUlR0QlFVTklMRFJDUVVGSkxFTkJRVU1zUTBGQlF5
eEhRVUZITzBGQlExQXNaME5CUVVrc1JVRkJSU3hsUVVGbE8wRkJRM0pDTEdkRFFVRkpMRVZCUVVV
c1JVRkJSU3hEUVVGRExFVkJRVVVzUjBGQlF5eERRVUZETEVOQlFVTTdRVUZEWkN4clEwRkJUU3hG
UVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVkQlFVTXNRMEZCUXl4RFFVRkRPMEZCUTJoQ0xHZERR
VUZKTEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVc1IwRkJReXhEUVVGRExFTkJRVU03UVVGRFpD
d3JRa0ZCUnl4RlFVRkZMRVZCUVVVc1EwRkJReXhQUVVGUExFTkJRVU1zU1VGQlNTeERRVUZETEVW
QlFVVXNRMEZCUXp0NVFrRkRla0lzUTBGQlF6czdRVUZGVGl3NFFrRkJUVHRCUVVGQkxFRkJRMDRz
ZVVKQlFVc3NSVUZCUlR0QlFVRkRMRFJDUVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVTXNT
VUZCU1N4RlFVRkZMRTFCUVUwc1JVRkJSU3hMUVVGTExFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFV
VXNRMEZCUXl4RlFVRkZMRWRCUVVjc1JVRkJSU3hGUVVGRkxFTkJRVU1zVDBGQlR5eERRVUZETEVs
QlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhEUVVGRE8wRkJRM3BGTERoQ1FVRk5PMEZC
UVVFc1FVRkRUaXg1UWtGQlN5eEZRVUZGTzBGQlFVTXNORUpCUVVrc1EwRkJReXhEUVVGRExFZEJR
VWNzUlVGQlF5eEpRVUZKTEVWQlFVVXNWVUZCVlN4RlFVRkZMRWRCUVVjc1JVRkJSU3hGUVVGRkxF
TkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRWRCUVVNc1EwRkJReXhEUVVG
RExFTkJRVU1zUlVGQlJTeExRVUZMTEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhG
UVVGRkxFZEJRVWNzUlVGQlJTeEZRVUZGTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJR
eXhGUVVGRkxFTkJRVU1zUlVGQlF5eERRVUZETzBGQlEyNUhMRGhDUVVGTk8wRkJRVUVzUVVGRFRp
eDVRa0ZCU3l4RlFVRkZPMEZCUVVNc05FSkJRVWtzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4
RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeEhRVUZETEVOQlFVTXNRMEZC
UXl4RFFVRkRMRU5CUVVNN1FVRkRha01zT0VKQlFVMDdRVUZCUVN4QlFVTk9MSGxDUVVGTExFVkJR
VVU3UVVGQlF5dzBRa0ZCU1N4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zUlVGQlJT
eERRVUZETEVOQlFVTTdRVUZEZUVJc09FSkJRVTA3UVVGQlFTeEJRVU5PTEhsQ1FVRkxMRVZCUVVV
N1FVRkJReXcwUWtGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1JVRkJSU3hE
UVVGRExFTkJRVU03UVVGRGVFSXNPRUpCUVUwN1FVRkJRU3hCUVVOT0xIbENRVUZMTEVWQlFVVTdR
VUZCUXl3MFFrRkJTU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZETEVsQlFVa3NSVUZCUlN4bFFV
RmxMRVZCUVVVc1MwRkJTeXhGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4
UlFVRlJMRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVkQlFVY3NSVUZC
UlN4RlFVRkZMRU5CUVVNc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTEVOQlFVTXNS
VUZCUXl4RFFVRkRPMEZCUTNCSExEaENRVUZOTzBGQlFVRXNRVUZEVGl4NVFrRkJTeXhGUVVGRk8w
RkJRVU1zTkVKQlFVa3NRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJReXhKUVVGSkxFVkJRVVVzWlVG
QlpTeEZRVUZGTEV0QlFVc3NSVUZCUlN4TlFVRk5MRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVz
UTBGQlF5eERRVUZETEVWQlFVVXNVVUZCVVN4RlFVRkZMRTFCUVUwc1EwRkJReXhGUVVGRkxFTkJR
VU1zUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4SFFVRkhMRVZCUVVVc1JVRkJSU3hEUVVGRExF
OUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1EwRkJRenRCUVVO
d1NDdzRRa0ZCVFR0QlFVRkJMRUZCUTA0c2VVSkJRVXNzUlVGQlJUdEJRVUZETERSQ1FVRkpMRU5C
UVVNc1EwRkJReXhIUVVGSExFVkJRVU1zU1VGQlNTeEZRVUZGTEdkQ1FVRm5RaXhGUVVGRkxFdEJR
VXNzUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRXRCUVVzc1RVRkJUU3hGUVVGRkxG
RkJRVkVzUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRXRCUVVzc1RVRkJUU3hGUVVG
RkxFZEJRVWNzUlVGQlJTeEZRVUZGTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhG
UVVGRkxFTkJRVU1zUlVGQlF5eERRVUZETzBGQlF6TklMRGhDUVVGTk8wRkJRVUVzUVVGRFRpeDVR
a0ZCU3l4RlFVRkZPMEZCUVVNc05FSkJRVWtzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUXl4SlFV
RkpMRVZCUVVVc2EwSkJRV3RDTEVWQlFVVXNVVUZCVVN4RlFVRkZMRk5CUVZNc1JVRkJSU3hMUVVG
TExFVkJRVVVzVTBGQlV5eEZRVUZGTEVkQlFVY3NSVUZCUlN4RlFVRkZMRU5CUVVNc1QwRkJUeXhE
UVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RFFVRkRPMEZCUXpkSExEaENR
VUZOTzBGQlFVRXNRVUZEVGl4NVFrRkJTeXhGUVVGRk8wRkJRVU1zTkVKQlFVa3NRMEZCUXl4RFFV
RkRMRWRCUVVjc1JVRkJReXhKUVVGSkxFVkJRVVVzWVVGQllTeEZRVUZGTEZGQlFWRXNSVUZCUlN4
SlFVRkpMRVZCUVVVc1MwRkJTeXhGUVVGRkxFbEJRVWtzUlVGQlJTeEhRVUZITEVWQlFVVXNSVUZC
UlN4RFFVRkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNR
MEZCUXp0QlFVTTVSaXc0UWtGQlRUdEJRVUZCTEVGQlEwNHNlVUpCUVVzc1JVRkJSVHRCUVVGRExE
UkNRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBG
QlF6dEJRVU40UWl3NFFrRkJUVHRCUVVGQkxFRkJRMDRzZVVKQlFVc3NSVUZCUlR0QlFVRkRMRFJD
UVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJR
enRCUVVONFFpdzRRa0ZCVFR0QlFVRkJMRUZCUTA0c2VVSkJRVXNzUlVGQlJUdEJRVUZETERSQ1FV
RkpMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eFhRVUZYTEVOQlFVTXNTVUZCU1N4
RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNSVUZC
UlN4RFFVRkRMRU5CUVVNN1FVRkRka1FzT0VKQlFVMDdRVUZCUVN4QlFVTk9MSGxDUVVGTExFVkJR
VVU3UVVGQlF5dzBRa0ZCU1N4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zVjBGQlZ5
eERRVUZETEV0QlFVc3NSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzU1VG
QlNTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRPMEZCUTNoRUxEaENRVUZOTzBGQlFVRXNRVUZE
VGl4NVFrRkJTeXhGUVVGRk8wRkJRVVVzTUVKQlFVVXNRMEZCUXl4RlFVRkZMRWRCUVVNc1EwRkJR
eXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVTXNTVUZCU1N4RlFVRkZMRVZCUVVVc1Ew
RkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVV
c1VVRkJVU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4VFFVRlRMRVZC
UVVVc1JVRkJSU3hEUVVGRExFVkJRVVVzUjBGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRM
RU5CUVVNc1FVRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXl4RlFV
RkZMRWRCUVVNc1EwRkJReXhEUVVGRExFTkJRVU03UVVGRGVFY3NPRUpCUVUwN1FVRkJRU3hCUVVO
T0xIbENRVUZMTEVWQlFVVTdRVUZCUXl3MFFrRkJTU3hEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZE
TEVWQlFVTXNTVUZCU1N4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERR
VUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1VVRkJVU3hGUVVGRkxFVkJRVVVzUTBGQlF5
eEZRVUZGTEVOQlFVTXNSVUZCUXl4RFFVRkRMRU5CUVVNN1FVRkRNMFFzT0VKQlFVMDdRVUZCUVN4
QlFVTk9MSGxDUVVGTExFVkJRVVU3UVVGQlF5dzBRa0ZCU1N4RFFVRkRMRU5CUVVNc1IwRkJSeXhG
UVVGRkxFTkJRVU03UVVGRGNFSXNPRUpCUVUwN1FVRkJRU3hCUVVOT0xIbENRVUZMTEVWQlFVVTdR
VUZCUXl3d1FrRkJSU3hEUVVGRExFVkJRVVVzUjBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFV
RkpMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdRVUZET1VJ
c09FSkJRVTA3UVVGQlFTeEJRVU5PTEhsQ1FVRkxMRVZCUVVVN1FVRkJReXcwUWtGQlNTeERRVUZE
TEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERR
VUZETzBGQlF6RkNMRGhDUVVGTk8wRkJRVUVzUVVGRFRpeDVRa0ZCU3l4RlFVRkZPMEZCUVVNc01F
SkJRVVVzUTBGQlF5eEZRVUZGTEVkQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVG
RExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUXpsQ0xEaENRVUZO
TzBGQlFVRXNRVUZEVGl4NVFrRkJTeXhGUVVGRk8wRkJRVU1zTkVKQlFVa3NRMEZCUXl4RFFVRkRM
RWRCUVVjc1JVRkJSU3hEUVVGRE8wRkJRM0JDTERoQ1FVRk5PMEZCUVVFc1FVRkRUaXg1UWtGQlN5
eEZRVUZGTzBGQlFVTXNNRUpCUVVVc1EwRkJReXhGUVVGRkxFZEJRVU1zUTBGQlF5eERRVUZETEVO
QlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZE
TzBGQlF6bENMRGhDUVVGTk8wRkJRVUVzUVVGRFRpeDVRa0ZCU3l4RlFVRkZPMEZCUVVNc05FSkJR
VWtzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRPMEZCUTNCQ0xEaENRVUZOTzBGQlFV
RXNRVUZEVGl4NVFrRkJTeXhGUVVGRk8wRkJRVU1zTUVKQlFVVXNRMEZCUXl4RlFVRkZMRWRCUVVN
c1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5C
UVVNc1EwRkJReXhEUVVGRE8wRkJRemxDTERoQ1FVRk5PMEZCUVVFc1FVRkRUaXg1UWtGQlN5eEZR
VUZGTzBGQlFVTXNORUpCUVVrc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETzBGQlEz
QkNMRGhDUVVGTk8wRkJRVUVzUVVGRFRpeDVRa0ZCU3l4RlFVRkZPMEZCUVVNc01FSkJRVVVzUTBG
QlF5eEZRVUZGTEVkQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVVz
UTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUXpsQ0xEaENRVUZOTzBGQlFVRXNR
VUZEVGl4NVFrRkJTeXhGUVVGRk8wRkJRVU1zTkVKQlFVa3NRMEZCUXl4RFFVRkRMRWRCUVVjc1JV
RkJSU3hEUVVGRE8wRkJRM0JDTERoQ1FVRk5PMEZCUVVFc1FVRkRUaXg1UWtGQlN5eEZRVUZGTzBG
QlFVTXNNRUpCUVVVc1EwRkJReXhGUVVGRkxFZEJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZC
U1N4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzBGQlF6bENM
RGhDUVVGTk8wRkJRVUVzUVVGRFRpeDVRa0ZCU3l4RlFVRkZPMEZCUVVNc05FSkJRVWtzUTBGQlF5
eERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRPMEZCUTNCQ0xEaENRVUZOTzBGQlFVRXNRVUZEVGl4
NVFrRkJTeXhGUVVGRk8wRkJRVU1zTUVKQlFVVXNRMEZCUXl4RlFVRkZMRWRCUVVNc1EwRkJReXhE
UVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJR
eXhEUVVGRE8wRkJRemxDTERoQ1FVRk5PMEZCUVVFc1FVRkRUaXg1UWtGQlN5eEZRVUZGTzBGQlFV
TXNORUpCUVVrc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETzBGQlEzQkNMRGhDUVVG
Tk8wRkJRVUVzUVVGRFRpeDVRa0ZCU3l4RlFVRkZPMEZCUVVNc01FSkJRVVVzUTBGQlF5eEZRVUZG
TEVkQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZR
VUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUXpsQ0xEaENRVUZOTzBGQlFVRXNRVUZEVGl4NVFr
RkJTeXhGUVVGRk8wRkJRVU1zTkVKQlFVa3NRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVG
RE8wRkJRM0JDTERoQ1FVRk5PMEZCUVVFc1FVRkRUaXg1UWtGQlN5eEZRVUZGTzBGQlFVTXNNRUpC
UVVVc1EwRkJReXhGUVVGRkxFZEJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRM
RVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzBGQlF6bENMRGhDUVVGTk8w
RkJRVUVzUVVGRFRpeDVRa0ZCU3l4RlFVRkZPMEZCUVVNc05FSkJRVWtzUTBGQlF5eERRVUZETEVk
QlFVY3NSVUZCUlN4RFFVRkRPMEZCUTNCQ0xEaENRVUZOTzBGQlFVRXNRVUZEVGl4NVFrRkJTeXhG
UVVGRk8wRkJRVU1zTUVKQlFVVXNRMEZCUXl4RlFVRkZMRWRCUVVNc1EwRkJReXhEUVVGRExFTkJR
VU1zU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8w
RkJRemxDTERoQ1FVRk5PMEZCUVVFc1FVRkRUaXg1UWtGQlN5eEZRVUZGTzBGQlFVTXNORUpCUVVr
c1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETzBGQlEzQkNMRGhDUVVGTk8wRkJRVUVz
UVVGRFRpeDVRa0ZCU3l4RlFVRkZPMEZCUVVNc01FSkJRVVVzUTBGQlF5eEZRVUZGTEVkQlFVTXNR
MEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFV
TXNRMEZCUXl4RFFVRkRPMEZCUXpsQ0xEaENRVUZOTzBGQlFVRXNRVUZEVGl4NVFrRkJTeXhGUVVG
Rk8wRkJRVU1zTkVKQlFVa3NRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1z
UlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTXhRaXc0UWtGQlRUdEJRVUZCTEVGQlEwNHNl
VUpCUVVzc1JVRkJSVHRCUVVGRExEQkNRVUZGTEVOQlFVTXNSVUZCUlN4SFFVRkRMRU5CUVVNc1Ew
RkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVN
c1EwRkJRenRCUVVNNVFpdzRRa0ZCVFR0QlFVRkJMRUZCUTA0c2VVSkJRVXNzUjBGQlJ6dEJRVUZE
TERSQ1FVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNR
MEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRNMElzT0VKQlFVMDdRVUZCUVN4QlFVTk9MSGxDUVVGTExF
ZEJRVWM3UVVGQlF5d3dRa0ZCUlN4RFFVRkRMRVZCUVVVc1IwRkJReXhEUVVGRExFTkJRVU1zUTBG
QlF5eEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03
UVVGREwwSXNPRUpCUVUwN1FVRkJRU3hwUWtGRFREdGhRVU5CTzBGQlEwUXNhVUpCUVVzc1JVRkJS
U3hEUVVGRExFVkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRVZCUVVNc1Ew
RkJReXhGUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVN
c1JVRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5C
UVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRM
RVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFV
RkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4
RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZC
UlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNR
MEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFV
TXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVW
QlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZE
TEVWQlFVTXNSVUZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZR
VUZETEVWQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5
eEZRVUZETEVWQlFVTXNSVUZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBG
QlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRExFVkJRVU1z
UTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJR
VU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxF
VkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVG
RExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhG
UVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJS
U3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JV
RkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVN
c1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5C
UVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRM
RU5CUVVNc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFV
RkRMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4
RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZC
UXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNS
VUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFV
VXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVO
QlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eERRVUZE
TEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlF5eEZR
VUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5
eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVG
QlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVz
UlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJR
VU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExF
TkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVG
RExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhE
UVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJR
eXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JV
RkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVN
c1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZC
UVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZM
RU5CUVVNc1JVRkJReXhGUVVGRExFVkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFV
RkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4
RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZC
UXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNR
MEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVOQlFV
TXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVW
QlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZE
TEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZR
VUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJT
eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUlVG
QlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1z
UTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJR
VU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVNc1JVRkJReXhEUVVGRExF
VkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVG
RExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhE
UVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJR
eXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1Ew
RkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVN
c1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZC
UVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRM
RU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RFFV
RkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4
RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZC
UXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVOQlFVTXNS
VUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFV
TXNSVUZCUXl4RlFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVO
QlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZE
TEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZR
VUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5
eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVG
QlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVz
UlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJR
VU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExF
TkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVG
RExFTkJRVU1zUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhE
UVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJR
eXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JV
RkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVN
c1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5C
UVVNc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRM
RVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFV
RkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4
RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZC
UXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNR
MEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVOQlFV
TXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVW
QlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZE
TEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZR
VUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJT
eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVU1zUlVG
QlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1z
UlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJR
VVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxF
VkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVG
RExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhE
UVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJR
eXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1Ew
RkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVN
c1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZC
UVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRM
RU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RFFV
RkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4
RFFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVOQlFVTXNSVUZC
UXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNR
MEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFV
TXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVO
QlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZE
TEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZR
VUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5
eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVG
QlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVz
UlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJR
VU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExF
TkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVG
RExFTkJRVU1zUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVNc1EwRkJReXhG
UVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJR
eXhEUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1Ew
RkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVN
c1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5C
UVVNc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRM
RVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFV
RkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4
RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZC
UXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNR
MEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVOQlFV
TXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVW
QlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZE
TEVWQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eERR
VUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJT
eEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBG
QlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1z
UlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJR
VU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExF
VkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVG
RkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hE
UVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkRMRVZCUVVNc1JVRkJS
U3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JV
RkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVN
c1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5C
UVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRM
RVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFV
RkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4
RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZC
UlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNS
VUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJReXhGUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFV
TXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVW
QlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZE
TEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZR
VUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJT
eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBG
QlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1z
UlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJR
VU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExF
VkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVG
RkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hG
UVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJR
eXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVNc1Ew
RkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVV
c1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZC
UVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRM
RU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFV
RkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4
RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZC
UXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNS
VUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFV
TXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVW
QlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZG
TEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERR
VUZETEVWQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJT
eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVG
QlF5eEZRVUZGTEVWQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1z
UlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJR
VVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxF
VkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVG
RExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhE
UVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJR
eXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1Ew
RkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVN
c1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZC
UVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRM
RVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUXl4RlFV
RkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUXl4
RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZC
UlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNS
VUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFV
TXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVO
QlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZE
TEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERR
VUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5
eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVG
QlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1z
UlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRExFTkJR
VU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExF
VkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVG
RExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhG
UVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJS
U3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1Ew
RkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVN
c1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZC
UVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRM
RVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFV
RkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4
RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZC
UXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNR
MEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZETEVWQlFV
VXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVW
QlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZE
TEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERR
VUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5
eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVG
QlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1z
UlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJR
VVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxF
VkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVG
RExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhG
UVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJS
U3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JV
RkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVN
c1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5C
UVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRM
RU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFV
RkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4
RlFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZC
UXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNS
VUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFV
TXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVW
QlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZE
TEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZR
VUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJT
eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBG
QlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJReXhGUVVGRExFVkJRVVVz
UlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJR
VU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxF
TkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVG
RExFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hG
UVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJR
eXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JV
RkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVV
c1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZC
UVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRM
RU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RlFV
RkZMRVZCUVVNc1JVRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4
RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZC
UXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNR
MEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFV
TXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVO
QlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZE
TEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZR
VUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5
eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVG
QlJTeERRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1z
UlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJR
VU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExF
VkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVG
RkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hE
UVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJR
eXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JV
RkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVN
c1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZC
UVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZM
RVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFV
RkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4
RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVTXNSVUZC
UlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNS
VUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFV
TXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVO
QlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZE
TEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERR
VUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5
eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVG
QlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1z
UlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJR
VVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxF
TkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVG
RExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhG
UVVGRExFVkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJS
U3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1Ew
RkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVN
c1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZC
UVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRM
RVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFV
RkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4
RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZC
UXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNR
MEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFV
TXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVO
QlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZE
TEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERR
VUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5
eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBG
QlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1z
UlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJR
VU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExF
VkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVG
RkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hE
UVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJR
eXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JV
RkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVN
c1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZC
UVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkRM
RVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFV
RkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4
RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZC
UlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNS
VUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFV
TXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVO
QlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZE
TEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERR
VUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5
eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVG
QlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1z
UlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJR
VVVzUTBGQlF5eEZRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExF
VkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVG
RExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhG
UVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJS
U3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1Ew
RkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVN
c1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZC
UVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRM
RVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFV
RkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4
RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZC
UXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNR
MEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZETEVWQlFV
VXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVW
QlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZE
TEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERR
VUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5
eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBG
QlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1z
UlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJR
VU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExF
VkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVG
RkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hE
UVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJR
eXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JV
RkJReXhGUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVV
c1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5C
UVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRM
RVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFV
RkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4
RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZC
UlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNS
VUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFV
TXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVO
QlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZE
TEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERR
VUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5
eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVG
QlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1z
UTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJR
VU1zUlVGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxF
TkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVG
RExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhG
UVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJR
eXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JV
RkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVV
c1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZC
UVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRM
RU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFV
RkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4
RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZC
UXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNS
VUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFV
TXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVW
QlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZE
TEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZR
VUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJT
eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVG
QlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1z
UTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJR
VU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExF
TkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVG
RExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhG
UVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJR
eXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JV
RkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVN
c1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZC
UVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZM
RVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFV
RkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4
RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZC
UlN4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNS
VUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFV
TXNSVUZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVO
QlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZE
TEVWQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZR
VUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5
eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBG
QlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1z
UTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJR
VU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExF
VkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVG
RExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhG
UVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJS
U3hEUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JV
RkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVN
c1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZC
UVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZM
RU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFV
RkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4
RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZC
UXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNS
VUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFV
TXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVW
QlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZE
TEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZR
VUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJT
eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVG
QlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1z
UTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJR
VU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExF
TkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVNc1JVRkJSU3hGUVVG
RExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hE
UVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJS
U3hGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JV
RkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVN
c1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZC
UVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZM
RVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFV
RkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4
RlFVRkZMRVZCUVVNc1JVRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZC
UlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVTXNS
VUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFV
TXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVW
QlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZE
TEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZR
VUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJT
eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBG
QlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1z
UlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJR
VU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExF
VkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVG
RExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhG
UVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJR
eXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JV
RkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVN
c1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZC
UVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZM
RU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFV
RkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4
RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZC
UXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNS
VUZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFV
TXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVO
QlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZE
TEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZR
VUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5
eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVG
QlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVz
UTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJR
VU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExF
VkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVG
RkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhE
UVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJR
eXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1Ew
RkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVN
c1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZC
UVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRM
RVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFV
RkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4
RFFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZC
UlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNS
VUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFV
TXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVO
QlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZG
TEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERR
VUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5
eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVG
QlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1z
UlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJR
VVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxF
TkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVG
RExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhG
UVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVVc1JVRkJR
eXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVNc1JV
RkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVV
c1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZC
UVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRM
RU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFV
RkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4
RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZC
UXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNS
VUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFV
TXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVW
QlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZG
TEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERR
VUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5
eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVG
QlF5eEZRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1z
UlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJR
VU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxF
VkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVG
RExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhG
UVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJR
eXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JV
RkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVV
c1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5C
UVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRM
RVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFV
RkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4
RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZC
UlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNS
VUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFV
TXNSVUZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVO
QlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZE
TEVWQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZR
VUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJT
eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBG
QlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1z
UlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJR
VU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExF
VkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVG
RkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hG
UVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJR
eXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1Ew
RkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVN
c1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkZMRVZC
UVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkRM
RVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFV
RkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4
RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZC
UlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNR
MEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFV
TXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVW
QlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZE
TEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZR
VUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVNc1JVRkJReXhEUVVGRExFVkJRVU1zUlVGQlJT
eEZRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBG
QlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1z
UlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJR
VU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExF
VkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVG
RkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hE
UVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJR
eXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JV
RkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVN
c1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZC
UVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRM
RU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVTXNSVUZCUlN4RlFV
RkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVTXNSVUZCUXl4
RFFVRkRMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZC
UlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNS
VUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFV
TXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVO
QlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZE
TEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERR
VUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5
eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVG
QlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1z
UlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJR
VVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxF
TkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVG
RExFVkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhG
UVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJS
U3hEUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JV
RkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVV
c1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZC
UVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZM
RU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFV
RkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4
RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZC
UXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNS
VUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFV
TXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVW
QlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZG
TEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERR
VUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5
eEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJReXhGUVVGRExFVkJRVVVzUlVG
QlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1z
UlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJR
VU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExF
VkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVG
RExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhG
UVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJS
U3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JV
RkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVN
c1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkRMRU5C
UVVNc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZM
RVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFV
RkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4
RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZC
UXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNR
MEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFV
TXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVW
QlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZE
TEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZR
VUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJT
eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBG
QlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1z
UlVGQlF5eEZRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJR
VU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExF
VkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVG
RExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhE
UVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJR
eXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JV
RkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVN
c1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZC
UVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUXl4RlFVRkRM
RVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFV
RkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4
RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZC
UXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNS
VUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFV
VXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVW
QlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZE
TEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZR
VUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJT
eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVG
QlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1z
UTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJR
VU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExF
TkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVG
RExFVkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhE
UVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJS
U3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JV
RkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVN
c1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZC
UVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRM
RVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFV
RkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4
RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZC
UXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNS
VUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFV
TXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVW
QlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZG
TEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZR
VUZETEVWQlFVVXNSVUZCUXl4RlFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5
eEZRVUZGTEVWQlFVTXNSMEZCUnl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVG
QlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1IwRkJSeXhGUVVGRExFVkJRVVVz
UlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJR
VVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4SFFVRkhMRVZCUVVNc1JVRkJSU3hGUVVGRExF
VkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVG
RExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hG
UVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJR
eXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JV
RkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVN
c1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZC
UVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZM
RU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFV
RkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZETEVWQlFVTXNSVUZCUlN4
RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZC
UlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFZEJRVWNzUlVGQlF5eEZRVUZGTEVWQlFVTXNS
MEZCUnl4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFV
TXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eEhRVUZITEVW
QlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZE
TEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZR
VUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJT
eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVG
QlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1z
UTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJR
VU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExF
TkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVG
RExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhG
UVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRWRCUVVjc1EwRkJR
eXhGUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JV
RkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVV
c1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5C
UVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRM
RVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFV
RkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4
RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZC
UlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNS
VUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZETEVWQlFV
TXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVW
QlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZE
TEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZR
VUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5
eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVG
QlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVz
UlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJR
VU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExF
TkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVG
RExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhE
UVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJR
eXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JV
RkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVN
c1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5C
UVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRM
RVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFV
RkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4
RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZC
UlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNR
MEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFV
TXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVW
QlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZE
TEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZR
VUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJT
eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVG
QlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRExFVkJRVU1z
UlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJR
VVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxF
VkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVG
RExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhI
UVVGSExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRWRCUVVjc1EwRkJR
eXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JV
RkJReXhGUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVV
c1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5C
UVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRM
RVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFV
RkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4
RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZC
UXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNS
VUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFV
TXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVW
QlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZG
TEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZR
VUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5
eERRVUZETEVOQlFVTXNSVUZCUXl4SFFVRkhMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBG
QlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1z
UTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJR
VU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExF
VkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVG
RExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhG
UVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJS
U3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1Ew
RkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVN
c1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZC
UVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZM
RU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFV
RkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4
RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZC
UXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNS
VUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFV
VXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVW
QlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZE
TEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERR
VUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5
eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBG
QlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1z
UTBGQlF5eERRVUZETEVWQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRExFVkJR
VVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxF
VkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVG
RExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhE
UVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJR
eXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1Ew
RkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVN
c1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZC
UVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRM
RVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFV
RkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZETEVOQlFVTXNSVUZCUXl4
RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZC
UXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNR
MEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFV
TXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVW
QlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZE
TEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZR
VUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJT
eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBG
QlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1z
UlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJR
VU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExF
VkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVG
RExFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhE
UVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJR
eXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JV
RkJSU3hGUVVGRExFZEJRVWNzUlVGQlF5eEZRVUZGTEVWQlFVTXNSMEZCUnl4RlFVRkRMRVZCUVVV
c1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkRMRVZC
UVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRM
RVZCUVVVc1JVRkJReXhIUVVGSExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFV
RkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4
RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZC
UlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNR
MEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFV
TXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVW
QlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZE
TEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZR
VUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlF5
eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVG
QlF5eEZRVUZETEVWQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVz
UTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJR
VU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExF
VkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVG
RExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhG
UVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJS
U3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JV
RkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVN
c1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5C
UVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRM
RU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFV
RkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4
RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZC
UXl4RFFVRkRMRVZCUVVNc1IwRkJSeXhEUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVVXNS
VUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFV
TXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVO
QlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZE
TEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERR
VUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5
eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVG
QlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1z
UlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJR
VVVzUTBGQlF5eEZRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExF
VkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVG
RkxFVkJRVU1zUlVGQlJTeEZRVUZETEVkQlFVY3NSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hG
UVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJR
eXhGUVVGRkxFVkJRVU1zUjBGQlJ5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JV
RkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNSMEZCUnl4RlFVRkRMRVZCUVVV
c1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZC
UVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRM
RVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RFFV
RkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4
RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZC
UXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNS
VUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFV
TXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVW
QlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlF5eEZRVUZE
TEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhIUVVGSExFTkJRVU1zUlVGQlF5eEZR
VUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRWRCUVVjc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5
eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFZEJRVWNzUlVG
QlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1IwRkJSeXhEUVVGRExFVkJRVU1z
UlVGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJR
VU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExF
VkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVG
RExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhG
UVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJS
U3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JV
RkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVN
c1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5C
UVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRM
RU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVTXNSVUZCUlN4RlFV
RkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4
RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVTXNSVUZC
UlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNS
VUZCUXl4SFFVRkhMRVZCUVVNc1JVRkJSU3hGUVVGRExFZEJRVWNzUlVGQlF5eEZRVUZGTEVWQlFV
TXNRMEZCUXl4RFFVRkRMRVZCUVVNc1IwRkJSeXhEUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZETEVW
QlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZG
TEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZR
VUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5
eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBG
QlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1z
UTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJR
VU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExF
VkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVG
RExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhG
UVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJR
eXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JV
RkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVN
c1EwRkJReXhGUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkZMRVZC
UVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRM
RU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFV
RkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4
RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZC
UXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNS
VUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFV
TXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVW
QlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZG
TEVOQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZR
VUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5
eERRVUZETEVWQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRExFVkJRVVVzUlVG
QlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1z
UTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJR
VU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExF
TkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVG
RExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhG
UVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJR
eXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JV
RkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVV
c1EwRkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZC
UVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRM
RU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFV
RkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4
RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZC
UXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNS
VUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFV
VXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVO
QlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZE
TEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZR
VUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5
eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVG
QlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVz
UlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRExFVkJR
VU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExF
VkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVG
RkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hG
UVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJR
eXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1Ew
RkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVV
c1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEhRVUZITEVOQlFVTXNSVUZCUXl4RlFVRkRMRVZC
UVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSMEZCUnl4RlFVRkRM
RVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFV
RkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4
RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZC
UXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNR
MEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFV
TXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVW
QlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZE
TEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZR
VUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJT
eEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkRMRVZCUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBG
QlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1z
UlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJR
VU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExF
VkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVG
RkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hE
UVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJR
eXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JV
RkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVN
c1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZC
UVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZM
RVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFV
RkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVTXNSVUZCUXl4
RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZC
UXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNS
VUZCUXl4RlFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFV
TXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVk
QlFVY3NSVUZCUXl4RlFVRkZMRVZCUVVNc1IwRkJSeXhGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZG
TEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZR
VUZETEVWQlFVVXNSVUZCUXl4SFFVRkhMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5
eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVG
QlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1z
UlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJR
VU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxF
TkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVG
RExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhG
UVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJR
eXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JV
RkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVV
c1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlF5eEZRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRU5C
UVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRM
RVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFV
RkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4
RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZC
UlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNR
MEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFV
TXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVW
QlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZE
TEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZR
VUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJT
eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVG
QlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRExFVkJRVU1z
UlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRExFVkJR
VU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExF
VkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVG
RExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhG
UVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJS
U3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JV
RkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVN
c1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5C
UVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRM
RU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVTXNSVUZCUlN4RlFV
RkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVTXNSVUZCUXl4
RFFVRkRMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZC
UlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNS
VUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFV
TXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVO
QlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZE
TEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERR
VUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5
eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVG
QlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1z
UlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJR
VVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxF
TkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVG
RExFVkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhI
UVVGSExFTkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJR
eXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1Ew
RkJReXhEUVVGRExFVkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRWRCUVVj
c1JVRkJReXhGUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRWRC
UVVjc1EwRkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRM
RVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFV
RkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVTXNSVUZCUlN4
RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZC
UXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNR
MEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFV
TXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVO
QlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZE
TEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZR
VUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5
eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVG
QlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVz
UTBGQlF5eEZRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJR
VU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExF
VkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVG
RkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hE
UVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJR
eXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JV
RkJReXhGUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVV
c1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eEhRVUZITEVWQlFVTXNSVUZCUlN4RlFVRkRMRWRC
UVVjc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSMEZCUnl4RFFVRkRM
RVZCUVVNc1JVRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFV
RkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4
RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZC
UXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNS
VUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFV
TXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVW
QlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZG
TEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZR
VUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5
eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRExFVkJRVU1zUlVG
QlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVz
UlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRExFVkJR
VU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExF
VkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVG
RkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hG
UVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJR
eXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1Ew
RkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVN
c1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5C
UVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRM
RVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFV
RkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4
RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZC
UlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNR
MEZCUXl4RlFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFV
TXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVW
QlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZG
TEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERR
VUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5
eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVG
QlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1z
UlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJR
VVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxF
VkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVG
RExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhE
UVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVNc1JVRkJS
U3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkRMRVZCUVVVc1JV
RkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEhRVUZITEVOQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVN
c1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkRMRVZC
UVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEhRVUZITEVOQlFVTXNSVUZCUXl4RlFVRkRM
RVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFV
RkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4
RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZC
UlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNS
VUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFV
TXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVO
QlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZE
TEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERR
VUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5
eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVG
QlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1z
UTBGQlF5eEZRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRkxFVkJR
VU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRExF
VkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVG
RExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRWRCUVVjc1EwRkJReXhG
UVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4SFFVRkhMRU5CUVVNc1JVRkJR
eXhGUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1Ew
RkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVN
c1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZC
UVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRM
RVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFV
RkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4
RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZC
UXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNR
MEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFV
TXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVO
QlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZE
TEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1EwRkJRenRCUVVONFoxY3NNRUpCUVdNc1JVRkJS
U3hGUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JV
RkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVN
c1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZC
UVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZM
RVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFV
RkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4
RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZC
UXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUjBGQlJ5eEZRVUZETEVOQlFVTXNR
MEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFZEJRVWNzUlVGQlF5eERRVUZETEVOQlFV
TXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhIUVVGSExFVkJRVU1zUTBGQlF5eERRVUZETEVW
QlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1IwRkJSeXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZE
TEVWQlFVVXNRMEZCUXl4RlFVRkRMRWRCUVVjc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZR
VUZGTEVOQlFVTXNSVUZCUXl4SFFVRkhMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJT
eERRVUZETEVWQlFVTXNSMEZCUnl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBG
QlF5eEZRVUZETEVkQlFVY3NSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1z
UlVGQlF5eEhRVUZITEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJR
VU1zUjBGQlJ5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRE8w
RkJRemROTEhOQ1FVRlZMRVZCUVVVc1UwRkJVeXhWUVVGVkxFTkJRVU1zUjBGQlJ5eEZRVUZGTEVs
QlFVa3NSVUZCUlR0QlFVTjJReXh6UWtGQlRTeEpRVUZKTEV0QlFVc3NRMEZCUXl4SFFVRkhMRU5C
UVVNc1EwRkJRenRoUVVONFFqdEJRVU5FTEdsQ1FVRkxMRVZCUVVVc1UwRkJVeXhMUVVGTExFTkJR
VU1zUzBGQlN5eEZRVUZGTzBGQlEzcENMRzlDUVVGSkxFbEJRVWtzUjBGQlJ5eEpRVUZKTzI5Q1FV
RkZMRXRCUVVzc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF6dHZRa0ZCUlN4TlFVRk5MRWRCUVVj
c1EwRkJReXhKUVVGSkxFTkJRVU03YjBKQlFVVXNUVUZCVFN4SFFVRkhMRVZCUVVVN2IwSkJRVVVz
UzBGQlN5eEhRVUZITEVsQlFVa3NRMEZCUXl4TFFVRkxPMjlDUVVGRkxFMUJRVTBzUjBGQlJ5eEZR
VUZGTzI5Q1FVRkZMRkZCUVZFc1IwRkJSeXhEUVVGRE8yOUNRVUZGTEUxQlFVMHNSMEZCUnl4RFFV
RkRPMjlDUVVGRkxGVkJRVlVzUjBGQlJ5eERRVUZETzI5Q1FVRkZMRTFCUVUwc1IwRkJSeXhEUVVG
RE8yOUNRVUZGTEVkQlFVY3NSMEZCUnl4RFFVRkRMRU5CUVVNN1FVRkRNMG9zYjBKQlFVa3NRMEZC
UXl4TFFVRkxMRU5CUVVNc1VVRkJVU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzBGQlF6TkNM
RzlDUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVWQlFVVXNSMEZCUnl4SlFVRkpMRU5CUVVNc1JV
RkJSU3hEUVVGRE8wRkJRM2hDTEc5Q1FVRkpMRU5CUVVNc1JVRkJSU3hEUVVGRExFdEJRVXNzUjBG
QlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRPMEZCUXpOQ0xHOUNRVUZKTEVOQlFVTXNSVUZC
UlN4RFFVRkRMRTFCUVUwc1IwRkJSeXhKUVVGSkxFTkJRVU03UVVGRGRFSXNiMEpCUVVrc1QwRkJU
eXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEUxQlFVMHNTVUZCU1N4WFFVRlhMRVZCUTNaRExF
bEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNUVUZCVFN4SFFVRkhMRVZCUVVVc1EwRkJRenRCUVVN
elFpeHZRa0ZCU1N4TFFVRkxMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eE5RVUZO
TEVOQlFVTTdRVUZET1VJc2MwSkJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRM
RU5CUVVNN1FVRkRia0lzYjBKQlFVa3NUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExF
TkJRVU1zVDBGQlR5eEpRVUZKTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1QwRkJUeXhEUVVG
RExFMUJRVTBzUTBGQlF6dEJRVU0zUkN4dlFrRkJTU3hQUVVGUExFbEJRVWtzUTBGQlF5eEZRVUZG
TEVOQlFVTXNWVUZCVlN4TFFVRkxMRlZCUVZVc1JVRkRlRU1zU1VGQlNTeERRVUZETEZWQlFWVXNS
MEZCUnl4SlFVRkpMRU5CUVVNc1JVRkJSU3hEUVVGRExGVkJRVlVzUTBGQlF6dEJRVU42UXl4NVFr
RkJVeXhSUVVGUkxFTkJRVU1zUTBGQlF5eEZRVUZGTzBGQlEycENMSGxDUVVGTExFTkJRVU1zVFVG
QlRTeEhRVUZITEV0QlFVc3NRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhIUVVGSExFTkJRVU1z
UTBGQlF6dEJRVU53UXl3d1FrRkJUU3hEUVVGRExFMUJRVTBzUjBGQlJ5eE5RVUZOTEVOQlFVTXNU
VUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJRenRCUVVOc1F5d3dRa0ZCVFN4RFFVRkRMRTFCUVUwc1Iw
RkJSeXhOUVVGTkxFTkJRVU1zVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXp0cFFrRkRja003UVVG
RFJDeDVRa0ZCVXl4SFFVRkhMRWRCUVVjN1FVRkRXQ3gzUWtGQlNTeExRVUZMTEVOQlFVTTdRVUZE
Vml4NVFrRkJTeXhIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNSMEZCUnl4RlFVRkZM
RWxCUVVrc1EwRkJReXhEUVVGRE8wRkJRemxDTEhkQ1FVRkpMRTlCUVU4c1MwRkJTeXhMUVVGTExG
RkJRVkVzUlVGQlJUdEJRVU16UWl3MlFrRkJTeXhIUVVGSExFbEJRVWtzUTBGQlF5eFJRVUZSTEVO
QlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1MwRkJTeXhEUVVGRE8zRkNRVU42UXp0QlFVTkVMREpD
UVVGUExFdEJRVXNzUTBGQlF6dHBRa0ZEYUVJN1FVRkRSQ3h2UWtGQlNTeE5RVUZOTzI5Q1FVRkZM
R05CUVdNN2IwSkJRVVVzUzBGQlN6dHZRa0ZCUlN4TlFVRk5PMjlDUVVGRkxFTkJRVU03YjBKQlFV
VXNRMEZCUXp0dlFrRkJSU3hMUVVGTExFZEJRVWNzUlVGQlJUdHZRa0ZCUlN4RFFVRkRPMjlDUVVG
RkxFZEJRVWM3YjBKQlFVVXNVVUZCVVR0dlFrRkJSU3hSUVVGUkxFTkJRVU03UVVGRGVFWXNkVUpC
UVU4c1NVRkJTU3hGUVVGRk8wRkJRMVFzZVVKQlFVc3NSMEZCUnl4TFFVRkxMRU5CUVVNc1MwRkJT
eXhEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTm9ReXgzUWtGQlNT
eEpRVUZKTEVOQlFVTXNZMEZCWXl4RFFVRkRMRXRCUVVzc1EwRkJReXhGUVVGRk8wRkJRelZDTERo
Q1FVRk5MRWRCUVVjc1NVRkJTU3hEUVVGRExHTkJRV01zUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZC
UXp0eFFrRkRka01zVFVGQlRUdEJRVU5JTERSQ1FVRkpMRTFCUVUwc1MwRkJTeXhKUVVGSkxFbEJR
VWtzVDBGQlR5eE5RVUZOTEVsQlFVa3NWMEZCVnl4RlFVRkZPMEZCUTJwRUxHdERRVUZOTEVkQlFV
Y3NSMEZCUnl4RlFVRkZMRU5CUVVNN2VVSkJRMnhDTzBGQlEwUXNPRUpCUVUwc1IwRkJSeXhMUVVG
TExFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NTMEZCU3l4RFFVRkRMRXRCUVVzc1EwRkJReXhE
UVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzNGQ1FVTnFSRHRCUVVORUxIZENRVUZKTEU5QlFVOHNU
VUZCVFN4TFFVRkxMRmRCUVZjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eE5RVUZOTEVsQlFV
a3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVU3UVVGREwwUXNORUpCUVVr
c1RVRkJUU3hIUVVGSExFVkJRVVVzUTBGQlF6dEJRVU5vUWl3MFFrRkJTU3hEUVVGRExGVkJRVlVz
UlVGQlJUdEJRVU5pTEc5RFFVRlJMRWRCUVVjc1JVRkJSU3hEUVVGRE8wRkJRMlFzYVVOQlFVc3NR
MEZCUXl4SlFVRkpMRXRCUVVzc1EwRkJReXhMUVVGTExFTkJRVU1zUlVGRGJFSXNTVUZCU1N4SlFV
RkpMRU5CUVVNc1ZVRkJWU3hEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4
RFFVRkRMRVZCUVVVN1FVRkROMElzZDBOQlFWRXNRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhI
UVVGSExFbEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1IwRkJS
eXhEUVVGRExFTkJRVU03TmtKQlEycEVPMEZCUTB3c1owTkJRVWtzU1VGQlNTeERRVUZETEV0QlFV
c3NRMEZCUXl4WlFVRlpMRVZCUVVVN1FVRkRla0lzYzBOQlFVMHNSMEZCUnl4elFrRkJjMElzU1VG
QlNTeFJRVUZSTEVkQlFVY3NRMEZCUXl4RFFVRkJMRUZCUVVNc1IwRkJSeXhMUVVGTExFZEJRVWNz
U1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4WlFVRlpMRVZCUVVVc1IwRkJSeXhqUVVGakxFZEJR
VWNzVVVGQlVTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhUUVVGVExF
bEJRVWtzU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1NVRkJTU3hOUVVG
TkxFTkJRVUVzUVVGQlF5eEhRVUZITEVkQlFVY3NRMEZCUXpzMlFrRkRka3dzVFVGQlRUdEJRVU5J
TEhORFFVRk5MRWRCUVVjc2MwSkJRWE5DTEVsQlFVa3NVVUZCVVN4SFFVRkhMRU5CUVVNc1EwRkJR
U3hCUVVGRExFZEJRVWNzWlVGQlpTeEpRVUZKTEUxQlFVMHNTVUZCU1N4RFFVRkRMRWRCUVVNc1kw
RkJZeXhIUVVGRExFZEJRVWNzU1VGQlNTeEpRVUZKTEVOQlFVTXNWVUZCVlN4RFFVRkRMRTFCUVUw
c1EwRkJReXhKUVVGSkxFMUJRVTBzUTBGQlFTeEJRVUZETEVkQlFVY3NSMEZCUnl4RFFVRkJMRUZC
UVVNc1EwRkJRenMyUWtGRGNrbzdRVUZEUkN4blEwRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eE5R
VUZOTEVWQlFVVXNSVUZCUXl4SlFVRkpMRVZCUVVVc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5
eExRVUZMTEVWQlFVVXNTMEZCU3l4RlFVRkZMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zVFVG
QlRTeERRVUZETEVsQlFVa3NUVUZCVFN4RlFVRkZMRWxCUVVrc1JVRkJSU3hKUVVGSkxFTkJRVU1z
UzBGQlN5eERRVUZETEZGQlFWRXNSVUZCUlN4SFFVRkhMRVZCUVVVc1MwRkJTeXhGUVVGRkxGRkJR
VkVzUlVGQlJTeFJRVUZSTEVWQlFVTXNRMEZCUXl4RFFVRkRPM2xDUVVNeFNqdHhRa0ZEU2p0QlFV
TkVMSGRDUVVGSkxFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNXVUZCV1N4TFFVRkxMRWxCUVVr
c1RVRkJUU3hEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVWQlFVVTdRVUZEYWtRc09FSkJRVTBz
U1VGQlNTeExRVUZMTEVOQlFVTXNiVVJCUVcxRUxFZEJRVWNzUzBGQlN5eEhRVUZITEZkQlFWY3NS
MEZCUnl4TlFVRk5MRU5CUVVNc1EwRkJRenR4UWtGRGRrYzdRVUZEUkN3MFFrRkJVU3hOUVVGTkxF
TkJRVU1zUTBGQlF5eERRVUZETzBGQlEycENMRFpDUVVGTExFTkJRVU03UVVGRFJpeHBRMEZCU3l4
RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dEJRVU51UWl4clEwRkJUU3hE
UVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRTFCUVUwc1EwRkJR
eXhEUVVGRE8wRkJReTlDTEd0RFFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5
eExRVUZMTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1FVRkRMMElzYVVOQlFVc3NRMEZCUXl4
SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdRVUZE
ZEVJc2EwTkJRVTBzUjBGQlJ5eEpRVUZKTEVOQlFVTTdRVUZEWkN4blEwRkJTU3hEUVVGRExHTkJR
V01zUlVGQlJUdEJRVU5xUWl4elEwRkJUU3hIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFV
TXNUVUZCVFN4RFFVRkRPMEZCUXpOQ0xITkRRVUZOTEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVz
c1EwRkJReXhOUVVGTkxFTkJRVU03UVVGRE0wSXNkME5CUVZFc1IwRkJSeXhKUVVGSkxFTkJRVU1z
UzBGQlN5eERRVUZETEZGQlFWRXNRMEZCUXp0QlFVTXZRaXh4UTBGQlN5eEhRVUZITEVsQlFVa3NR
MEZCUXl4TFFVRkxMRU5CUVVNc1RVRkJUU3hEUVVGRE8wRkJRekZDTEc5RFFVRkpMRlZCUVZVc1Iw
RkJSeXhEUVVGRExFVkJRMlFzVlVGQlZTeEZRVUZGTEVOQlFVTTdOa0pCUTNCQ0xFMUJRVTA3UVVG
RFNDeHpRMEZCVFN4SFFVRkhMR05CUVdNc1EwRkJRenRCUVVONFFpdzRRMEZCWXl4SFFVRkhMRWxC
UVVrc1EwRkJRenMyUWtGRGVrSTdRVUZEUkN4clEwRkJUVHRCUVVGQkxFRkJRMVlzTmtKQlFVc3NR
MEZCUXp0QlFVTkdMQ3RDUVVGSExFZEJRVWNzU1VGQlNTeERRVUZETEZsQlFWa3NRMEZCUXl4TlFV
Rk5MRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0
QlFVTjBReXhwUTBGQlN5eERRVUZETEVOQlFVTXNSMEZCUnl4TlFVRk5MRU5CUVVNc1RVRkJUU3hE
UVVGRExFMUJRVTBzUjBGQlJ5eEhRVUZITEVOQlFVTXNRMEZCUXp0QlFVTjBReXhwUTBGQlN5eERR
VUZETEVWQlFVVXNSMEZCUnl4RlFVRkRMRlZCUVZVc1JVRkJSU3hOUVVGTkxFTkJRVU1zVFVGQlRT
eERRVUZETEUxQlFVMHNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGQkxFRkJRVU1zUTBG
QlF5eERRVUZETEZWQlFWVXNSVUZCUlN4VFFVRlRMRVZCUVVVc1RVRkJUU3hEUVVGRExFMUJRVTBz
UTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1UwRkJVeXhGUVVGRkxGbEJR
VmtzUlVGQlJTeE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRMRTFCUVUwc1NVRkJTU3hIUVVGSExF
bEJRVWtzUTBGQlF5eERRVUZCTEVGQlFVTXNRMEZCUXl4RFFVRkRMRmxCUVZrc1JVRkJSU3hYUVVG
WExFVkJRVVVzVFVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhE
UVVGRExFTkJRVU1zVjBGQlZ5eEZRVUZETEVOQlFVTTdRVUZETVU4c1owTkJRVWtzVFVGQlRTeEZR
VUZGTzBGQlExSXNjVU5CUVVzc1EwRkJReXhGUVVGRkxFTkJRVU1zUzBGQlN5eEhRVUZITEVOQlFV
TXNUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJReXhOUVVGTkxFbEJRVWtzUjBGQlJ5eEpRVUZKTEVO
QlFVTXNRMEZCUVN4QlFVRkRMRU5CUVVNc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZE
TEVWQlFVVXNUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eERR
VUZETEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03TmtKQlEz
UkhPMEZCUTBRc05rSkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNZVUZCWVN4RFFVRkRMRWxCUVVr
c1EwRkJReXhMUVVGTExFVkJRVVVzVFVGQlRTeEZRVUZGTEUxQlFVMHNSVUZCUlN4UlFVRlJMRVZC
UVVVc1NVRkJTU3hEUVVGRExFVkJRVVVzUlVGQlJTeE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRM
RVZCUVVVc1RVRkJUU3hGUVVGRkxFMUJRVTBzUTBGQlF5eERRVUZETzBGQlEycEhMR2REUVVGSkxF
OUJRVThzUTBGQlF5eExRVUZMTEZkQlFWY3NSVUZCUlR0QlFVTXhRaXgxUTBGQlR5eERRVUZETEVO
QlFVTTdOa0pCUTFvN1FVRkRSQ3huUTBGQlNTeEhRVUZITEVWQlFVVTdRVUZEVEN4eFEwRkJTeXhI
UVVGSExFdEJRVXNzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJR
eXhIUVVGSExFZEJRVWNzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTnlReXh6UTBGQlRT
eEhRVUZITEUxQlFVMHNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBG
QlF5eEhRVUZITEVkQlFVY3NRMEZCUXl4RFFVRkRPMEZCUTI1RExITkRRVUZOTEVkQlFVY3NUVUZC
VFN4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVkQlFVY3NS
MEZCUnl4RFFVRkRMRU5CUVVNN05rSkJRM1JETzBGQlEwUXNhVU5CUVVzc1EwRkJReXhKUVVGSkxF
TkJRVU1zU1VGQlNTeERRVUZETEZsQlFWa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVG
RExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUXpWRExHdERRVUZO
TEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEJR
VU55UWl4clEwRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNSVUZCUlN4RFFV
RkRMRU5CUVVNN1FVRkRkRUlzYjBOQlFWRXNSMEZCUnl4TFFVRkxMRU5CUVVNc1MwRkJTeXhEUVVG
RExFdEJRVXNzUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhM
UVVGTExFTkJRVU1zUzBGQlN5eERRVUZETEUxQlFVMHNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJR
eXhEUVVGRE8wRkJRMjVGTEdsRFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5
eERRVUZETzBGQlEzSkNMR3REUVVGTk8wRkJRVUVzUVVGRFZpdzJRa0ZCU3l4RFFVRkRPMEZCUTBZ
c2JVTkJRVThzU1VGQlNTeERRVUZETzBGQlFVRXNjVUpCUTJZN2FVSkJRMG83UVVGRFJDeDFRa0ZC
VHl4SlFVRkpMRU5CUVVNN1lVRkRaanRUUVVOQkxFTkJRVU03TzBGQlJVWXNXVUZCU1N4TFFVRkxM
RWRCUVVjc1EwRkJReXhaUVVGVk8wRkJRM1pDTEdkQ1FVRkpMRXRCUVVzc1IwRkJTU3hGUVVGRExF
ZEJRVWNzUlVGQlF5eERRVUZETzBGQlEyNUNMREJDUVVGVkxFVkJRVU1zVTBGQlV5eFZRVUZWTEVO
QlFVTXNSMEZCUnl4RlFVRkZMRWxCUVVrc1JVRkJSVHRCUVVOc1F5eDNRa0ZCU1N4SlFVRkpMRU5C
UVVNc1JVRkJSU3hEUVVGRExFMUJRVTBzUlVGQlJUdEJRVU5vUWl3MFFrRkJTU3hEUVVGRExFVkJR
VVVzUTBGQlF5eE5RVUZOTEVOQlFVTXNWVUZCVlN4RFFVRkRMRWRCUVVjc1JVRkJSU3hKUVVGSkxF
TkJRVU1zUTBGQlF6dHhRa0ZEZUVNc1RVRkJUVHRCUVVOSUxEaENRVUZOTEVsQlFVa3NTMEZCU3l4
RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8zRkNRVU40UWp0cFFrRkRTanRCUVVOTUxIZENRVUZS
TEVWQlFVTXNhMEpCUVZVc1MwRkJTeXhGUVVGRk8wRkJRMnhDTEhkQ1FVRkpMRU5CUVVNc1RVRkJU
U3hIUVVGSExFdEJRVXNzUTBGQlF6dEJRVU53UWl4M1FrRkJTU3hEUVVGRExFdEJRVXNzUjBGQlJ5
eEpRVUZKTEVOQlFVTXNTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJReXhKUVVGSkxFZEJRVWNzUzBG
QlN5eERRVUZETzBGQlF6VkRMSGRDUVVGSkxFTkJRVU1zVVVGQlVTeEhRVUZITEVsQlFVa3NRMEZC
UXl4TlFVRk5MRWRCUVVjc1EwRkJReXhEUVVGRE8wRkJRMmhETEhkQ1FVRkpMRU5CUVVNc1RVRkJU
U3hIUVVGSExFbEJRVWtzUTBGQlF5eFBRVUZQTEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1Iw
RkJSeXhGUVVGRkxFTkJRVU03UVVGRE4wTXNkMEpCUVVrc1EwRkJReXhqUVVGakxFZEJRVWNzUTBG
QlF5eFRRVUZUTEVOQlFVTXNRMEZCUXp0QlFVTnNReXgzUWtGQlNTeERRVUZETEUxQlFVMHNSMEZC
Unl4RlFVRkRMRlZCUVZVc1JVRkJReXhEUVVGRExFVkJRVU1zV1VGQldTeEZRVUZETEVOQlFVTXNS
VUZCUXl4VFFVRlRMRVZCUVVNc1EwRkJReXhGUVVGRExGZEJRVmNzUlVGQlF5eERRVUZETEVWQlFV
TXNRMEZCUXp0QlFVTjBSU3gzUWtGQlNTeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRTFCUVUw
c1JVRkJSU3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEV0QlFVc3NSMEZCUnl4RFFVRkRMRU5C
UVVNc1JVRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU51UkN4M1FrRkJTU3hEUVVGRExFMUJR
VTBzUjBGQlJ5eERRVUZETEVOQlFVTTdRVUZEYUVJc01rSkJRVThzU1VGQlNTeERRVUZETzJsQ1FV
Tm1PMEZCUTB3c2NVSkJRVXNzUlVGQlF5eHBRa0ZCV1R0QlFVTldMSGRDUVVGSkxFVkJRVVVzUjBG
QlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJRM2hD
TEhkQ1FVRkpMRU5CUVVNc1RVRkJUU3hKUVVGSkxFVkJRVVVzUTBGQlF6dEJRVU5zUWl4M1FrRkJT
U3hEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETzBGQlEyUXNkMEpCUVVrc1EwRkJReXhOUVVGTkxF
VkJRVVVzUTBGQlF6dEJRVU5rTEhkQ1FVRkpMRU5CUVVNc1MwRkJTeXhKUVVGSkxFVkJRVVVzUTBG
QlF6dEJRVU5xUWl4M1FrRkJTU3hEUVVGRExFOUJRVThzU1VGQlNTeEZRVUZGTEVOQlFVTTdRVUZE
YmtJc2QwSkJRVWtzUzBGQlN5eEhRVUZITEVWQlFVVXNRMEZCUXl4TFFVRkxMRU5CUVVNc2FVSkJR
V2xDTEVOQlFVTXNRMEZCUXp0QlFVTjRReXgzUWtGQlNTeExRVUZMTEVWQlFVVTdRVUZEVUN3MFFr
RkJTU3hEUVVGRExGRkJRVkVzUlVGQlJTeERRVUZETzBGQlEyaENMRFJDUVVGSkxFTkJRVU1zVFVG
QlRTeERRVUZETEZOQlFWTXNSVUZCUlN4RFFVRkRPM0ZDUVVNelFpeE5RVUZOTzBGQlEwZ3NORUpC
UVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zVjBGQlZ5eEZRVUZGTEVOQlFVTTdjVUpCUXpkQ08wRkJR
MFFzZDBKQlFVa3NTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhOUVVGTkxFVkJRVVVzU1VGQlNT
eERRVUZETEUxQlFVMHNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBG
QlF6czdRVUZGYUVRc2QwSkJRVWtzUTBGQlF5eE5RVUZOTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFC
UVUwc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdRVUZEYmtNc01rSkJR
VThzUlVGQlJTeERRVUZETzJsQ1FVTmlPMEZCUTB3c2NVSkJRVXNzUlVGQlF5eGxRVUZWTEVWQlFV
VXNSVUZCUlR0QlFVTmFMSGRDUVVGSkxFZEJRVWNzUjBGQlJ5eEZRVUZGTEVOQlFVTXNUVUZCVFN4
RFFVRkRPMEZCUTNCQ0xIZENRVUZKTEV0QlFVc3NSMEZCUnl4RlFVRkZMRU5CUVVNc1MwRkJTeXhE
UVVGRExHVkJRV1VzUTBGQlF5eERRVUZET3p0QlFVVjBReXgzUWtGQlNTeERRVUZETEUxQlFVMHNS
MEZCUnl4RlFVRkZMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF6dEJRVU12UWl4M1Fr
RkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRTFCUVUw
c1EwRkJReXhEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4TlFVRk5MRWRC
UVVNc1IwRkJSeXhIUVVGRExFTkJRVU1zUTBGQlF5eERRVUZET3p0QlFVVTVSQ3gzUWtGQlNTeERR
VUZETEUxQlFVMHNTVUZCU1N4SFFVRkhMRU5CUVVNN1FVRkRia0lzZDBKQlFVa3NVVUZCVVN4SFFV
RkhMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUzBGQlN5eERRVUZETEdWQlFXVXNRMEZCUXl4
RFFVRkRPMEZCUTJwRUxIZENRVUZKTEVOQlFVTXNTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJReXhM
UVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1MwRkJT
eXhEUVVGRExFMUJRVTBzUjBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTjJSQ3gzUWtGQlNT
eERRVUZETEU5QlFVOHNSMEZCUnl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFMUJRVTBzUTBG
QlF5eERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhOUVVGTkxFZEJRVU1z
UTBGQlF5eERRVUZETEVOQlFVTTdPMEZCUlRkRUxIZENRVUZKTEV0QlFVc3NRMEZCUXl4TlFVRk5M
RWRCUVVNc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eFJRVUZSTEVsQlFVa3NTMEZCU3l4RFFV
RkRMRTFCUVUwc1IwRkJReXhEUVVGRExFTkJRVU03UVVGRGNFUXNkMEpCUVVrc1EwRkJReXhIUVVG
SExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTMEZCU3l4RFFVRkRPenRCUVVVeFFpeDNRa0ZC
U1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhGUVVGRExGVkJRVlVzUlVGQlJTeEpRVUZKTEVOQlFVTXNU
VUZCVFN4RFFVRkRMRlZCUVZVN1FVRkRMME1zYVVOQlFWTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1VV
RkJVU3hIUVVGRExFTkJRVU03UVVGRE1VSXNiME5CUVZrc1JVRkJSU3hKUVVGSkxFTkJRVU1zVFVG
QlRTeERRVUZETEZsQlFWazdRVUZEZEVNc2JVTkJRVmNzUlVGQlJTeExRVUZMTEVkQlEyUXNRMEZC
UXl4TFFVRkxMRU5CUVVNc1RVRkJUU3hMUVVGTExGRkJRVkVzUTBGQlF5eE5RVUZOTEVkQlFVY3NT
VUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhaUVVGWkxFZEJRVWNzUTBGQlF5eERRVUZCTEVkQlFV
a3NVVUZCVVN4RFFVRkRMRkZCUVZFc1EwRkJReXhOUVVGTkxFZEJRVWNzUzBGQlN5eERRVUZETEUx
QlFVMHNRMEZCUXl4RFFVRkRMRTFCUVUwc1IwRkJSeXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZE
TEVOQlFVTXNUVUZCVFN4SFFVTnlTU3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEZsQlFWa3NS
MEZCUnl4SFFVRkhPM0ZDUVVOcVF5eERRVUZET3p0QlFVVktMSGRDUVVGSkxFbEJRVWtzUTBGQlF5
eFBRVUZQTEVOQlFVTXNUVUZCVFN4RlFVRkZPMEZCUTNKQ0xEUkNRVUZKTEVOQlFVTXNUVUZCVFN4
RFFVRkRMRXRCUVVzc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZC
UlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNS
MEZCUnl4SFFVRkhMRU5CUVVNc1EwRkJRenR4UWtGRGVFUTdRVUZEUkN3eVFrRkJUeXhKUVVGSkxF
TkJRVU03YVVKQlEyWTdRVUZEVEN4dlFrRkJTU3hGUVVGRExHZENRVUZaTzBGQlExUXNkMEpCUVVr
c1EwRkJReXhMUVVGTExFZEJRVWNzU1VGQlNTeERRVUZETzBGQlEyeENMREpDUVVGUExFbEJRVWtz
UTBGQlF6dHBRa0ZEWmp0QlFVTk1MRzlDUVVGSkxFVkJRVU1zWTBGQlZTeERRVUZETEVWQlFVVTdR
VUZEVml4M1FrRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFV
RkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzJsQ1FVTnVRenRCUVVO
TUxIbENRVUZUTEVWQlFVTXNjVUpCUVZrN1FVRkRaQ3gzUWtGQlNTeEpRVUZKTEVkQlFVY3NTVUZC
U1N4RFFVRkRMRTlCUVU4c1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVsQlFVa3NR
MEZCUXl4UFFVRlBMRU5CUVVNc1RVRkJUU3hIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFV
TXNUVUZCVFN4RFFVRkRMRU5CUVVNN1FVRkRNMFVzTWtKQlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVN
c1RVRkJUU3hIUVVGSExFVkJRVVVzUjBGQlJ5eExRVUZMTEVkQlFVTXNSVUZCUlN4RFFVRkJMRWRC
UVVrc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRM
RTlCUVU4c1EwRkJReXhMUVVGTExFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTTdhVUpCUXpsRk8w
RkJRMHdzTmtKQlFXRXNSVUZCUXl4NVFrRkJXVHRCUVVOc1FpeDNRa0ZCU1N4SlFVRkpMRWRCUVVj
c1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF6dEJRVU4wUWl4M1FrRkJTU3hKUVVGSkxFTkJRVU1z
VFVGQlRTeEhRVUZITEVWQlFVVXNSVUZCUlR0QlFVTnNRaXcwUWtGQlNTeEpRVUZKTEVsQlFVa3NR
MEZCUXl4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVkQlFV
TXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8zRkNRVU5xUkR0QlFVTkVMREpDUVVG
UExFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hE
UVVGRExFbEJRVVVzU1VGQlNTeERRVUZETEUxQlFVMHNSMEZCUnl4RlFVRkZMRWRCUVVjc1MwRkJT
eXhIUVVGRExFVkJRVVVzUTBGQlFTeERRVUZETEVOQlFVVXNUMEZCVHl4RFFVRkRMRXRCUVVzc1JV
RkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF6dHBRa0ZETDBVN1FVRkRUQ3cwUWtGQldTeEZRVUZETEhk
Q1FVRlpPMEZCUTJwQ0xIZENRVUZKTEVkQlFVY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1UwRkJVeXhG
UVVGRkxFTkJRVU03UVVGRE0wSXNkMEpCUVVrc1EwRkJReXhIUVVGSExFbEJRVWtzUzBGQlN5eERR
VUZETEVkQlFVY3NRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNT
eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMEZCUXpWRExESkNRVUZQTEVkQlFVY3NSMEZCUnl4
SlFVRkpMRU5CUVVNc1lVRkJZU3hGUVVGRkxFZEJRVWNzU1VGQlNTeEhRVUZITEVOQlFVTXNSMEZC
UXl4SFFVRkhMRU5CUVVNN2FVSkJRM0JFTzBGQlEwd3NiMEpCUVVrc1JVRkJReXhuUWtGQldUdEJR
VU5VTEhkQ1FVRkpMRWxCUVVrc1EwRkJReXhKUVVGSkxFVkJRVVU3UVVGRFdDd3JRa0ZCVHl4SlFV
RkpMRU5CUVVNc1IwRkJSeXhEUVVGRE8zRkNRVU51UWp0QlFVTkVMSGRDUVVGSkxFTkJRVU1zU1VG
QlNTeERRVUZETEUxQlFVMHNSVUZCUlN4SlFVRkpMRU5CUVVNc1NVRkJTU3hIUVVGSExFbEJRVWtz
UTBGQlF6czdRVUZGYmtNc2QwSkJRVWtzUzBGQlN5eEZRVU5NTEV0QlFVc3NSVUZEVEN4VFFVRlRM
RVZCUTFRc1MwRkJTeXhGUVVOTUxFZEJRVWNzUlVGRFNDeExRVUZMTEVOQlFVTTdRVUZEVml4M1Fr
RkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVWQlFVVTdRVUZEWWl3MFFrRkJTU3hEUVVG
RExFMUJRVTBzUjBGQlJ5eEZRVUZGTEVOQlFVTTdRVUZEYWtJc05FSkJRVWtzUTBGQlF5eExRVUZM
TEVkQlFVY3NSVUZCUlN4RFFVRkRPM0ZDUVVOdVFqdEJRVU5FTEhkQ1FVRkpMRXRCUVVzc1IwRkJS
eXhKUVVGSkxFTkJRVU1zWVVGQllTeEZRVUZGTEVOQlFVTTdRVUZEYWtNc2VVSkJRVXNzU1VGQlNT
eERRVUZETEVkQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1IwRkJSeXhMUVVGTExFTkJRVU1zVFVG
QlRTeEZRVUZGTEVOQlFVTXNSVUZCUlN4RlFVRkZPMEZCUTJoRExHbERRVUZUTEVkQlFVY3NTVUZC
U1N4RFFVRkRMRTFCUVUwc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NR
MEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBGQlEz
QkVMRFJDUVVGSkxGTkJRVk1zUzBGQlN5eERRVUZETEV0QlFVc3NTVUZCU1N4VFFVRlRMRU5CUVVN
c1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeEhRVUZITEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5C
UVVNc1EwRkJReXhOUVVGTkxFTkJRVUVzUVVGQlF5eEZRVUZGTzBGQlEyaEZMR2xEUVVGTExFZEJR
VWNzVTBGQlV5eERRVUZETzBGQlEyeENMR2xEUVVGTExFZEJRVWNzUTBGQlF5eERRVUZETzBGQlEx
WXNaME5CUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEVsQlFVa3NSVUZCUlN4
TlFVRk5PM2xDUVVOcVF6dHhRa0ZEU2p0QlFVTkVMSGRDUVVGSkxFdEJRVXNzUlVGQlJUdEJRVU5R
TERaQ1FVRkxMRWRCUVVjc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEV0QlFVc3NR
MEZCUXl4cFFrRkJhVUlzUTBGQlF5eERRVUZETzBGQlF6RkRMRFJDUVVGSkxFdEJRVXNzUlVGQlJT
eEpRVUZKTEVOQlFVTXNVVUZCVVN4SlFVRkpMRXRCUVVzc1EwRkJReXhOUVVGTkxFTkJRVU03UVVG
RGVrTXNORUpCUVVrc1EwRkJReXhOUVVGTkxFZEJRVWNzUlVGQlF5eFZRVUZWTEVWQlFVVXNTVUZC
U1N4RFFVRkRMRTFCUVUwc1EwRkJReXhUUVVGVE8wRkJRMnBETEhGRFFVRlRMRVZCUVVVc1NVRkJT
U3hEUVVGRExGRkJRVkVzUjBGQlF5eERRVUZETzBGQlF6RkNMSGREUVVGWkxFVkJRVVVzU1VGQlNT
eERRVUZETEUxQlFVMHNRMEZCUXl4WFFVRlhPMEZCUTNKRExIVkRRVUZYTEVWQlFVVXNTMEZCU3l4
SFFVRkhMRXRCUVVzc1EwRkJReXhMUVVGTExFTkJRVU1zVFVGQlRTeEhRVUZETEVOQlFVTXNRMEZC
UXl4RFFVRkRMRTFCUVUwc1IwRkJReXhMUVVGTExFTkJRVU1zUzBGQlN5eERRVUZETEUxQlFVMHNS
MEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhMUVVGTExFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFV
TXNRMEZCUXl4RFFVRkRMRU5CUVVNc1RVRkJUU3hIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVO
QlFVTXNWMEZCVnl4SFFVRkhMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eE5RVUZO
TEVWQlFVTXNRMEZCUXp0QlFVTTVTaXcwUWtGQlNTeERRVUZETEUxQlFVMHNTVUZCU1N4TFFVRkxM
RU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03UVVGRGVFSXNORUpCUVVrc1EwRkJReXhMUVVGTExF
bEJRVWtzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUTNaQ0xEUkNRVUZKTEVO
QlFVTXNUMEZCVHl4SFFVRkhMRXRCUVVzc1EwRkJRenRCUVVOeVFpdzBRa0ZCU1N4RFFVRkRMRTFC
UVUwc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXp0QlFVTnFR
eXcwUWtGQlNTeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRTFCUVUwc1JVRkJSVHRCUVVOeVFp
eG5RMEZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhMUVVGTExFZEJRVWNzUTBGQlF5eEpRVUZKTEVO
QlFVTXNUVUZCVFN4RlFVRkZMRWxCUVVrc1EwRkJReXhOUVVGTkxFbEJRVWtzU1VGQlNTeERRVUZE
TEUxQlFVMHNRMEZCUXl4RFFVRkRPM2xDUVVOcVJUdEJRVU5FTERSQ1FVRkpMRU5CUVVNc1MwRkJT
eXhIUVVGSExFdEJRVXNzUTBGQlF6dEJRVU51UWl3MFFrRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5
eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRXRCUVVzc1EwRkJReXhMUVVGTExFTkJRVU1zUTBG
QlF5eERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1FVRkRha1FzTkVKQlFVa3NRMEZC
UXl4UFFVRlBMRWxCUVVrc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBGQlEzcENM
RFpDUVVGTExFZEJRVWNzU1VGQlNTeERRVUZETEdGQlFXRXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NV
RkJTU3hGUVVGRkxFbEJRVWtzUTBGQlF5eEZRVUZGTEVWQlFVVXNTVUZCU1N4RlFVRkZMRXRCUVVz
c1EwRkJReXhMUVVGTExFTkJRVU1zUlVGQlF5eEpRVUZKTEVOQlFVTXNZMEZCWXl4RFFVRkRMRWxC
UVVrc1EwRkJReXhqUVVGakxFTkJRVU1zVFVGQlRTeEhRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRM
RU5CUVVNN1FVRkRja2dzTkVKQlFVa3NTVUZCU1N4RFFVRkRMRWxCUVVrc1NVRkJTU3hKUVVGSkxF
TkJRVU1zVFVGQlRTeEZRVUZGTEVsQlFVa3NRMEZCUXl4SlFVRkpMRWRCUVVjc1MwRkJTeXhEUVVG
RE8wRkJRMmhFTERSQ1FVRkpMRXRCUVVzc1JVRkJSU3hQUVVGUExFdEJRVXNzUTBGQlF5eExRVU51
UWl4UFFVRlBPM0ZDUVVObU8wRkJRMFFzZDBKQlFVa3NTVUZCU1N4RFFVRkRMRTFCUVUwc1MwRkJT
eXhGUVVGRkxFVkJRVVU3UVVGRGNFSXNLMEpCUVU4c1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF6
dHhRa0ZEYmtJc1RVRkJUVHRCUVVOSUxDdENRVUZQTEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVN
c2QwSkJRWGRDTEVsQlFVVXNTVUZCU1N4RFFVRkRMRkZCUVZFc1IwRkJReXhEUVVGRExFTkJRVUVz
UVVGQlF5eEhRVUZETEhkQ1FVRjNRaXhIUVVGRExFbEJRVWtzUTBGQlF5eFpRVUZaTEVWQlFVVXNS
VUZEZEVjc1JVRkJReXhKUVVGSkxFVkJRVVVzUlVGQlJTeEZRVUZGTEV0QlFVc3NSVUZCUlN4SlFV
RkpMRVZCUVVVc1NVRkJTU3hGUVVGRkxFbEJRVWtzUTBGQlF5eFJRVUZSTEVWQlFVTXNRMEZCUXl4
RFFVRkRPM0ZDUVVONlJEdHBRa0ZEU2p0QlFVTk1MRzFDUVVGSExFVkJRVU1zVTBGQlV5eEhRVUZI
TEVkQlFVYzdRVUZEV0N4M1FrRkJTU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVsQlFVa3NS
VUZCUlN4RFFVRkRPMEZCUTNCQ0xIZENRVUZKTEU5QlFVOHNRMEZCUXl4TFFVRkxMRmRCUVZjc1JV
RkJSVHRCUVVNeFFpd3JRa0ZCVHl4RFFVRkRMRU5CUVVNN2NVSkJRMW9zVFVGQlRUdEJRVU5JTEN0
Q1FVRlBMRWxCUVVrc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF6dHhRa0ZEY2tJN2FVSkJRMG83
UVVGRFRDeHhRa0ZCU3l4RlFVRkRMRk5CUVZNc1MwRkJTeXhEUVVGRExGTkJRVk1zUlVGQlJUdEJR
VU40UWl4M1FrRkJTU3hEUVVGRExHTkJRV01zUTBGQlF5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFV
RkRMRU5CUVVNN2FVSkJRM1pETzBGQlEwd3NkMEpCUVZFc1JVRkJReXhUUVVGVExGRkJRVkVzUjBG
QlJ6dEJRVU55UWl3eVFrRkJUeXhKUVVGSkxFTkJRVU1zWTBGQll5eERRVUZETEVkQlFVY3NSVUZC
UlN4RFFVRkRPMmxDUVVOd1F6dEJRVU5NTERaQ1FVRmhMRVZCUVVNc1UwRkJVeXhoUVVGaExFZEJR
VWM3UVVGREwwSXNNa0pCUVU4c1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eEpRVUZKTEVOQlFV
TXNZMEZCWXl4RFFVRkRMRWxCUVVrc1EwRkJReXhqUVVGakxFTkJRVU1zVFVGQlRTeEhRVUZETEVO
QlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRE8ybENRVU51Ump0QlFVTk1MSGRD
UVVGUkxFVkJRVU1zYjBKQlFWazdRVUZEWWl3eVFrRkJUeXhKUVVGSkxFTkJRVU1zWTBGQll5eERR
VUZETEVsQlFVa3NRMEZCUXl4alFVRmpMRU5CUVVNc1RVRkJUU3hIUVVGRExFTkJRVU1zUTBGQlF5
eERRVUZETzJsQ1FVTTFSRHRCUVVOTUxIbENRVUZUTEVWQlFVTXNVMEZCVXl4TFFVRkxMRU5CUVVN
c1UwRkJVeXhGUVVGRk8wRkJRelZDTEhkQ1FVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExGTkJRVk1z
UTBGQlF5eERRVUZETzJsQ1FVTjZRaXhGUVVGRExFRkJRVU1zUTBGQlF6dEJRVU5TTEdsQ1FVRkxM
RU5CUVVNc1QwRkJUeXhIUVVGSExFVkJRVVVzUTBGQlF6dEJRVU51UWl4cFFrRkJTeXhEUVVGRExH
RkJRV0VzUjBGQlJ5eFRRVUZUTEZOQlFWTXNRMEZCUXl4RlFVRkZMRVZCUVVNc1IwRkJSeXhGUVVG
RExIbENRVUY1UWl4RlFVRkRMRkZCUVZFN2EwSkJRelZGT3p0QlFVZE9MSGxDUVVGVExFdEJRVXNz
UTBGQlF5eExRVUZMTEVWQlFVVXNSMEZCUnl4RlFVRkZPMEZCUTNwQ0xESkNRVUZQTEVkQlFVY3NR
MEZCUXl4TlFVRk5MRWRCUVVjc1IwRkJSeXhEUVVGRExFMUJRVTBzUTBGQlF5eE5RVUZOTEVOQlFV
TXNTMEZCU3l4RlFVRkZMRWRCUVVjc1EwRkJReXhOUVVGTkxFZEJRVU1zUjBGQlJ5eERRVUZETEVO
QlFVTTdhVUpCUXpsRU96dEJRVWRFTEc5Q1FVRkpMRTlCUVU4c1IwRkJReXhSUVVGUkxFTkJRVUU3
UVVGRGNFSXNkMEpCUVU4c2VVSkJRWGxDTzBGQlEyaERMSGxDUVVGTExFTkJRVU03UVVGRE5rSXNO
RUpCUVVjc1IwRkJSeXhEUVVGRExFMUJRVTBzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFV
RkRMRU5CUVVNc1MwRkJTeXhOUVVGTkxFVkJRVVU3UVVGRGJFTXNhVU5CUVVzc1EwRkJReXhEUVVG
RExFVkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdRVUZEV0N4blEwRkJTU3hEUVVGRExFdEJRVXNz
UTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0NVFrRkRiRUlzVFVGQlRTeEpRVUZITEVkQlFVY3NR
MEZCUXl4TlFVRk5MRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEV0QlFV
c3NTVUZCU1N4RlFVRkZPMEZCUTNaRExHbERRVUZMTEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVN
c1EwRkJReXhEUVVGRE8wRkJRMWdzWjBOQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1MwRkJTeXhE
UVVGRExFTkJRVU03ZVVKQlEyNUNMRTFCUVUwN1FVRkRUQ3huUTBGQlNTeERRVUZETEV0QlFVc3NR
MEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenQ1UWtGRGJFSTdRVUZEUkN3MFFrRkJSeXhIUVVGSExF
TkJRVU1zVFVGQlRTeEZRVUZGTEU5QlFVOHNSVUZCUlN4RFFVRkRPenRCUVVVMVJDdzRRa0ZCVFR0
QlFVRkJMRUZCUTA0c2VVSkJRVXNzUTBGQlF6dEJRVUZETEN0Q1FVRlBMRVZCUVVVc1EwRkJRenRC
UVVOcVFpdzRRa0ZCVFR0QlFVRkJMRUZCUTA0c2VVSkJRVXNzUTBGQlF6dEJRVU0yUWl3MFFrRkJT
U3hEUVVGRExGRkJRVkVzUlVGQlJTeERRVUZETzBGQlEyaENMQ3RDUVVGUExFVkJRVVVzUTBGQlF6
czdRVUZGTjBNc09FSkJRVTA3UVVGQlFTeEJRVU5PTEhsQ1FVRkxMRU5CUVVNN1FVRkJReXcwUWtG
QlNTeERRVUZETEV0QlFVc3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhCUVVGRExFOUJRVThz
UlVGQlJTeERRVUZETzBGQlEzQkRMRGhDUVVGTk8wRkJRVUVzUVVGRFRpeDVRa0ZCU3l4RFFVRkRP
MEZCUXpSQ0xEUkNRVUZKTEVOQlFVTXNVVUZCVVN4RlFVRkZMRU5CUVVNN096czdRVUZKYUVJc05F
SkJRVWtzU1VGQlNTeERRVUZETEdOQlFXTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1kwRkJZeXhEUVVG
RExFMUJRVTBzUjBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4TFFVRkxMRVZCUVVVN1FVRkRMMFFz
YlVOQlFVOHNSVUZCUlN4RFFVRkRPM2xDUVVOWUxFMUJRVTA3UVVGRFRDd3JRa0ZCUnl4RFFVRkRM
RTFCUVUwc1IwRkJSeXhIUVVGSExFTkJRVU1zVFVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFV
RkRMRVZCUVVVc1IwRkJSeXhEUVVGRExFMUJRVTBzUjBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0
QlFVTm9SQ3h0UTBGQlR5eGxRVUZsTEVOQlFVTTdlVUpCUTNoQ096dEJRVVZ1UXl3NFFrRkJUVHRC
UVVGQkxFRkJRMDRzZVVKQlFVc3NRMEZCUXp0QlFVRkZMQ3RDUVVGUExFVkJRVVVzUTBGQlF6dEJR
VU5zUWl3NFFrRkJUVHRCUVVGQkxFRkJRMDRzZVVKQlFVc3NRMEZCUXp0QlFVTktMRFJDUVVGSkxF
TkJRVU1zVVVGQlVTeEZRVUZGTEVOQlFVTTdRVUZEYUVJc0swSkJRVThzUlVGQlJTeERRVUZET3p0
QlFVVmFMRGhDUVVGTk8wRkJRVUVzUVVGRFRpeDVRa0ZCU3l4RFFVRkRPMEZCUVVNc0swSkJRVThz
UlVGQlJTeERRVUZETzBGQlEycENMRGhDUVVGTk8wRkJRVUVzUVVGRFRpeDVRa0ZCU3l4RFFVRkRP
MEZCUVVNc0swSkJRVThzUlVGQlJTeERRVUZETzBGQlEycENMRGhDUVVGTk8wRkJRVUVzUVVGRFRp
eDVRa0ZCU3l4RFFVRkRPMEZCUVVVc0swSkJRVThzUlVGQlJTeERRVUZETzBGQlEyeENMRGhDUVVG
Tk8wRkJRVUVzUVVGRFRpeDVRa0ZCU3l4RlFVRkZPMEZCUXpKQ0xEUkNRVUZKTEVOQlFVTXNVVUZC
VVN4RlFVRkZMRU5CUVVNN1FVRkRhRUlzTkVKQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1MwRkJT
eXhEUVVGRExFTkJRVU03UVVGRGJFSXNLMEpCUVU4c1JVRkJSU3hEUVVGRE96dEJRVVUxUXl3NFFr
RkJUVHRCUVVGQkxFRkJRMDRzZVVKQlFVc3NSVUZCUlR0QlFVRkRMQ3RDUVVGUExFVkJRVVVzUTBG
QlF6dEJRVU5zUWl3NFFrRkJUVHRCUVVGQkxFRkJRMDRzZVVKQlFVc3NSVUZCUlR0QlFVRkRMQ3RD
UVVGUExFVkJRVVVzUTBGQlF6dEJRVU5zUWl3NFFrRkJUVHRCUVVGQkxFRkJRMDRzZVVKQlFVc3NS
VUZCUlR0QlFVRkRMQ3RDUVVGUExFVkJRVVVzUTBGQlF6dEJRVU5zUWl3NFFrRkJUVHRCUVVGQkxF
RkJRMDRzZVVKQlFVc3NSVUZCUlR0QlFVRkRMQ3RDUVVGUExFVkJRVVVzUTBGQlF6dEJRVU5zUWl3
NFFrRkJUVHRCUVVGQkxFRkJRMDRzZVVKQlFVc3NSVUZCUlR0QlFVRkRMRFJDUVVGSkxFTkJRVU1z
VVVGQlVTeEZRVUZGTEVOQlFVTXNRVUZCUXl4UFFVRlBMRVZCUVVVc1EwRkJRenRCUVVOdVF5dzRR
a0ZCVFR0QlFVRkJMRUZCUTA0c2VVSkJRVXNzUlVGQlJUdEJRVUZETERSQ1FVRkpMRU5CUVVNc1VV
RkJVU3hGUVVGRkxFTkJRVU1zUVVGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXp0QlFVTnVReXc0UWtG
QlRUdEJRVUZCTEVGQlEwNHNlVUpCUVVzc1JVRkJSVHRCUVVGRExDdENRVUZQTEVWQlFVVXNRMEZC
UXp0QlFVTnNRaXc0UWtGQlRUdEJRVUZCTEVGQlEwNHNlVUpCUVVzc1JVRkJSVHRCUVVGRExDdENR
VUZQTEVWQlFVVXNRMEZCUXp0QlFVTnNRaXc0UWtGQlRUdEJRVUZCTEVGQlEwNHNlVUpCUVVzc1JV
RkJSVHRCUVVGRExDdENRVUZQTEVWQlFVVXNRMEZCUXp0QlFVTnNRaXc0UWtGQlRUdEJRVUZCTEVG
QlEwNHNlVUpCUVVzc1JVRkJSVHRCUVVGRExDdENRVUZQTEVWQlFVVXNRMEZCUXp0QlFVTnNRaXc0
UWtGQlRUdEJRVUZCTEVGQlEwNHNlVUpCUVVzc1JVRkJSVHRCUVVOTUxEUkNRVUZKTEVOQlFVTXNT
MEZCU3l4RFFVRkRMRWRCUVVjc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dEJRVU4yUWl3MFFr
RkJTU3hEUVVGRExGRkJRVkVzUlVGQlJTeERRVUZETzBGQlEyaENMRFJDUVVGSkxFTkJRVU1zUzBG
QlN5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPenRCUVVWd1FpdzRRa0ZCVFR0QlFVRkJMRUZC
UTA0c2VVSkJRVXNzUlVGQlJUdEJRVU5NTERSQ1FVRkpMRU5CUVVNc1VVRkJVU3hGUVVGRkxFTkJR
VU03UVVGRGFFSXNLMEpCUVU4c1JVRkJSU3hEUVVGRE96dEJRVVZhTERoQ1FVRk5PMEZCUVVFc1FV
RkRUaXg1UWtGQlN5eEZRVUZGTzBGQlFVTXNLMEpCUVU4c1JVRkJSU3hEUVVGRE8wRkJRMnhDTERo
Q1FVRk5PMEZCUVVFc1FVRkRUaXg1UWtGQlN5eEZRVUZGTzBGQlFVTXNLMEpCUVU4c1JVRkJSU3hE
UVVGRE8wRkJRMnhDTERoQ1FVRk5PMEZCUVVFc1FVRkRUaXg1UWtGQlN5eEZRVUZGTzBGQlFVTXNL
MEpCUVU4c1JVRkJSU3hEUVVGRE8wRkJRMnhDTERoQ1FVRk5PMEZCUVVFc1FVRkRUaXg1UWtGQlN5
eEZRVUZGTzBGQlFVTXNLMEpCUVU4c1JVRkJSU3hEUVVGRE8wRkJRMnhDTERoQ1FVRk5PMEZCUVVF
c1FVRkRUaXg1UWtGQlN5eEZRVUZGTzBGQlFVTXNLMEpCUVU4c1JVRkJSU3hEUVVGRE8wRkJRMnhD
TERoQ1FVRk5PMEZCUVVFc1FVRkRUaXg1UWtGQlN5eEZRVUZGT3p0QlFVTlFMRGhDUVVGTk8wRkJR
VUVzUVVGRFRpeDVRa0ZCU3l4RlFVRkZPMEZCUVVNc05FSkJRVWtzUTBGQlF5eFJRVUZSTEVWQlFV
VXNRMEZCUXl4QlFVRkRMRTlCUVU4c1JVRkJSU3hEUVVGRE8wRkJRMjVETERoQ1FVRk5PMEZCUVVF
c1FVRkRUaXg1UWtGQlN5eEZRVUZGTzBGQlFVTXNORUpCUVVrc1EwRkJReXhSUVVGUkxFVkJRVVVz
UTBGQlF5eEJRVUZETEU5QlFVOHNSVUZCUlN4RFFVRkRPMEZCUTI1RExEaENRVUZOTzBGQlFVRXNR
VUZEVGl4NVFrRkJTeXhGUVVGRk8wRkJRVU1zTWtKQlFVY3NRMEZCUXl4TlFVRk5MRWRCUVVjc1Mw
RkJTeXhEUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4UFFVRlBMRU5CUVVN
c1RVRkJUU3hGUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVGQlFVTXNUMEZCVHl4RlFVRkZMRU5C
UVVNN1FVRkRMMFFzT0VKQlFVMDdRVUZCUVN4QlFVTk9MSGxDUVVGTExFVkJRVVU3UVVGQlF5d3lR
a0ZCUnl4RFFVRkRMRTFCUVUwc1IwRkJSeXhMUVVGTExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFV
TXNRMEZCUXl4RFFVRkRMRTlCUVU4c1EwRkJReXhOUVVGTkxFVkJRVU1zUjBGQlJ5eERRVUZETEVO
QlFVTXNRVUZCUXl4UFFVRlBMRVZCUVVVc1EwRkJRenRCUVVNdlJDdzRRa0ZCVFR0QlFVRkJMRUZC
UTA0c2VVSkJRVXNzUlVGQlJUdEJRVUZETEN0Q1FVRlBMRVZCUVVVc1EwRkJRenRCUVVOc1FpdzRR
a0ZCVFR0QlFVRkJMRUZCUTA0c2VVSkJRVXNzUlVGQlJUdEJRVUZETEN0Q1FVRlBMRVZCUVVVc1Ew
RkJRenRCUVVOc1FpdzRRa0ZCVFR0QlFVRkJMRUZCUTA0c2VVSkJRVXNzUlVGQlJUdEJRVUZETEN0
Q1FVRlBMRVZCUVVVc1EwRkJRenRCUVVOc1FpdzRRa0ZCVFR0QlFVRkJMRUZCUTA0c2VVSkJRVXNz
UlVGQlJUdEJRVUZETEN0Q1FVRlBMRVZCUVVVc1EwRkJRenRCUVVOc1FpdzRRa0ZCVFR0QlFVRkJM
RUZCUTA0c2VVSkJRVXNzUlVGQlJUdEJRVUZETEN0Q1FVRlBMRVZCUVVVc1EwRkJRenRCUVVOc1Fp
dzRRa0ZCVFR0QlFVRkJMRUZCUTA0c2VVSkJRVXNzUlVGQlJUdEJRVUZETEN0Q1FVRlBMRVZCUVVV
c1EwRkJRenRCUVVOc1FpdzRRa0ZCVFR0QlFVRkJMRUZCUTA0c2VVSkJRVXNzUlVGQlJUdEJRVUZE
TEN0Q1FVRlBMRVZCUVVVc1EwRkJRenRCUVVOc1FpdzRRa0ZCVFR0QlFVRkJMRUZCUTA0c2VVSkJR
VXNzUlVGQlJUdEJRVUZETEN0Q1FVRlBMRVZCUVVVc1EwRkJRenRCUVVOc1FpdzRRa0ZCVFR0QlFV
RkJMRUZCUTA0c2VVSkJRVXNzUlVGQlJUdEJRVUZETEN0Q1FVRlBMRVZCUVVVc1EwRkJRenRCUVVO
c1FpdzRRa0ZCVFR0QlFVRkJMRUZCUTA0c2VVSkJRVXNzUlVGQlJUdEJRVUZETERKQ1FVRkhMRU5C
UVVNc1RVRkJUU3hIUVVGSExFZEJRVWNzUTBGQlF5eE5RVUZOTEVOQlFVTXNUMEZCVHl4RFFVRkRM
R0ZCUVdFc1JVRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eEJRVUZETEU5QlFVOHNSVUZCUlN4RFFV
RkRPMEZCUTNaRkxEaENRVUZOTzBGQlFVRXNRVUZEVGl4NVFrRkJTeXhGUVVGRk8wRkJRVU1zSzBK
QlFVOHNVMEZCVXl4RFFVRkRPMEZCUTNwQ0xEaENRVUZOTzBGQlFVRXNRVUZEVGl4NVFrRkJTeXhG
UVVGRk8wRkJRVU1zSzBKQlFVOHNRMEZCUXl4RFFVRkRPMEZCUTJwQ0xEaENRVUZOTzBGQlFVRXNh
VUpCUTB3N1lVRkRRU3hEUVVGRE8wRkJRMFlzYVVKQlFVc3NRMEZCUXl4TFFVRkxMRWRCUVVjc1Ew
RkJReXd3UWtGQk1FSXNSVUZCUXl4bFFVRmxMRVZCUVVNc0swTkJRU3RETEVWQlFVTXNkMEpCUVhk
Q0xFVkJRVU1zYjBWQlFXOUZMRVZCUVVNc09FSkJRVGhDTEVWQlFVTXNlVUpCUVhsQ0xFVkJRVU1z
VTBGQlV5eEZRVUZETEZOQlFWTXNSVUZCUXl4bFFVRmxMRVZCUVVNc1pVRkJaU3hGUVVGRExHZENR
VUZuUWl4RlFVRkRMR2xDUVVGcFFpeEZRVUZETEcxQ1FVRnRRaXhGUVVGRExHbENRVUZwUWl4RlFV
RkRMRFJDUVVFMFFpeEZRVUZETEdsRFFVRnBReXhGUVVGRExHbENRVUZwUWl4RlFVRkRMSGRDUVVG
M1FpeEZRVUZETEdsQ1FVRnBRaXhGUVVGRExHZENRVUZuUWl4RlFVRkRMR3RDUVVGclFpeEZRVUZE
TERSQ1FVRTBRaXhGUVVGRExHdENRVUZyUWl4RlFVRkRMRkZCUVZFc1JVRkJReXhYUVVGWExFVkJR
VU1zTWtKQlFUSkNMRVZCUVVNc1dVRkJXU3hGUVVGRExGVkJRVlVzUlVGQlF5eHBRa0ZCYVVJc1JV
RkJReXhsUVVGbExFVkJRVU1zYzBKQlFYTkNMRVZCUVVNc2MwSkJRWE5DTEVWQlFVTXNVVUZCVVN4
RlFVRkRMSGRDUVVGM1FpeEZRVUZETEhsQ1FVRjVRaXhGUVVGRExEWkNRVUUyUWl4RlFVRkRMSGRD
UVVGM1FpeEZRVUZETEhsRFFVRjVReXhGUVVGRExHTkJRV01zUlVGQlF5eFRRVUZUTEVWQlFVTXNl
VVJCUVhsRUxFVkJRVU1zZDBKQlFYZENMRVZCUVVNc1VVRkJVU3hGUVVGRExGRkJRVkVzUTBGQlF5
eERRVUZETzBGQlEyNW5ReXhwUWtGQlN5eERRVUZETEZWQlFWVXNSMEZCUnl4RlFVRkRMRWxCUVVr
c1JVRkJReXhGUVVGRExFOUJRVThzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRVZC
UVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRM
RVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFV
RkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4
RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZC
UXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNS
VUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFV
VXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVW
QlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZE
TEVWQlFVVXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhYUVVGWExFVkJRVU1zUzBGQlN5eEZR
VUZETEVWQlFVTXNTMEZCU3l4RlFVRkRMRVZCUVVNc1QwRkJUeXhGUVVGRExFTkJRVU1zUTBGQlF5
eERRVUZETEVWQlFVTXNWMEZCVnl4RlFVRkRMRXRCUVVzc1JVRkJReXhGUVVGRExFdEJRVXNzUlVG
QlF5eEZRVUZETEU5QlFVOHNSVUZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExGZEJRVmNz
UlVGQlF5eExRVUZMTEVWQlFVTXNSVUZCUXl4TFFVRkxMRVZCUVVNc1JVRkJReXhQUVVGUExFVkJR
VU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExG
ZEJRVmNzUlVGQlF5eExRVUZMTEVWQlFVTXNSVUZCUXl4VFFVRlRMRVZCUVVNc1JVRkJReXhQUVVG
UExFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhG
UVVGRExGZEJRVmNzUlVGQlF5eEpRVUZKTEVWQlFVTXNSVUZCUXl4RFFVRkRPMEZCUXpOVkxHMUNR
VUZQTEV0QlFVc3NRMEZCUXp0VFFVRkRMRU5CUVVFc1JVRkJSeXhEUVVGQk8wRkJRMnBDTEdOQlFV
MHNRMEZCUXl4TFFVRkxMRWRCUVVjc1MwRkJTeXhEUVVGRE8wRkJRM0pDTEdsQ1FVRlRMRTFCUVUw
c1IwRkJTVHRCUVVGRkxHZENRVUZKTEVOQlFVTXNSVUZCUlN4SFFVRkhMRVZCUVVVc1EwRkJRenRU
UVVGRkxFMUJRVTBzUTBGQlF5eFRRVUZUTEVkQlFVY3NUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJR
eXhOUVVGTkxFZEJRVWNzVFVGQlRTeERRVUZETzBGQlEzSkdMR1ZCUVU4c1NVRkJTU3hOUVVGTkxF
VkJRVUVzUTBGQlF6dExRVU5xUWl4RFFVRkJMRVZCUVVjc1EwRkJReXhQUVVGUExFTkJRVU1zVlVG
QlZTeEhRVUZITEVsQlFVa3NRMEZCUXp0QlFVTXZRaXhYUVVGUExFTkJRVU1zVTBGQlV5eERRVUZE
TEVkQlFVY3NWVUZCVlN4RFFVRkRJaXdpWm1sc1pTSTZJbkJoY25ObGNpNXFjeUlzSW5OdmRYSmpa
WE5EYjI1MFpXNTBJanBiSWk4cUlHbHpkR0Z1WW5Wc0lHbG5ibTl5WlNCdVpYaDBJQ292WEc0dktp
QkthWE52YmlCblpXNWxjbUYwWldRZ2NHRnljMlZ5SUNvdlhHNTJZWElnYUdGdVpHeGxZbUZ5Y3lB
OUlDaG1kVzVqZEdsdmJpZ3BlMXh1ZG1GeUlIQmhjbk5sY2lBOUlIdDBjbUZqWlRvZ1puVnVZM1Jw
YjI0Z2RISmhZMlVvS1NCN0lIMHNYRzU1ZVRvZ2UzMHNYRzV6ZVcxaWIyeHpYem9nZTF3aVpYSnli
M0pjSWpveUxGd2ljbTl2ZEZ3aU9qTXNYQ0p3Y205bmNtRnRYQ0k2TkN4Y0lrVlBSbHdpT2pVc1hD
SndjbTluY21GdFgzSmxjR1YwYVhScGIyNHdYQ0k2Tml4Y0luTjBZWFJsYldWdWRGd2lPamNzWENK
dGRYTjBZV05vWlZ3aU9qZ3NYQ0ppYkc5amExd2lPamtzWENKeVlYZENiRzlqYTF3aU9qRXdMRndp
Y0dGeWRHbGhiRndpT2pFeExGd2ljR0Z5ZEdsaGJFSnNiMk5yWENJNk1USXNYQ0pqYjI1MFpXNTBY
Q0k2TVRNc1hDSkRUMDFOUlU1VVhDSTZNVFFzWENKRFQwNVVSVTVVWENJNk1UVXNYQ0p2Y0dWdVVt
RjNRbXh2WTJ0Y0lqb3hOaXhjSW5KaGQwSnNiMk5yWDNKbGNHVjBhWFJwYjI1ZmNHeDFjekJjSWpv
eE55eGNJa1ZPUkY5U1FWZGZRa3hQUTB0Y0lqb3hPQ3hjSWs5UVJVNWZVa0ZYWDBKTVQwTkxYQ0k2
TVRrc1hDSm9aV3h3WlhKT1lXMWxYQ0k2TWpBc1hDSnZjR1Z1VW1GM1FteHZZMnRmY21Wd1pYUnBk
R2x2YmpCY0lqb3lNU3hjSW05d1pXNVNZWGRDYkc5amExOXZjSFJwYjI0d1hDSTZNaklzWENKRFRF
OVRSVjlTUVZkZlFreFBRMHRjSWpveU15eGNJbTl3Wlc1Q2JHOWphMXdpT2pJMExGd2lZbXh2WTJ0
ZmIzQjBhVzl1TUZ3aU9qSTFMRndpWTJ4dmMyVkNiRzlqYTF3aU9qSTJMRndpYjNCbGJrbHVkbVZ5
YzJWY0lqb3lOeXhjSW1Kc2IyTnJYMjl3ZEdsdmJqRmNJam95T0N4Y0lrOVFSVTVmUWt4UFEwdGNJ
am95T1N4Y0ltOXdaVzVDYkc5amExOXlaWEJsZEdsMGFXOXVNRndpT2pNd0xGd2liM0JsYmtKc2Iy
TnJYMjl3ZEdsdmJqQmNJam96TVN4Y0ltOXdaVzVDYkc5amExOXZjSFJwYjI0eFhDSTZNeklzWENK
RFRFOVRSVndpT2pNekxGd2lUMUJGVGw5SlRsWkZVbE5GWENJNk16UXNYQ0p2Y0dWdVNXNTJaWEp6
WlY5eVpYQmxkR2wwYVc5dU1Gd2lPak0xTEZ3aWIzQmxia2x1ZG1WeWMyVmZiM0IwYVc5dU1Gd2lP
ak0yTEZ3aWIzQmxia2x1ZG1WeWMyVmZiM0IwYVc5dU1Wd2lPak0zTEZ3aWIzQmxia2x1ZG1WeWMy
VkRhR0ZwYmx3aU9qTTRMRndpVDFCRlRsOUpUbFpGVWxORlgwTklRVWxPWENJNk16a3NYQ0p2Y0dW
dVNXNTJaWEp6WlVOb1lXbHVYM0psY0dWMGFYUnBiMjR3WENJNk5EQXNYQ0p2Y0dWdVNXNTJaWEp6
WlVOb1lXbHVYMjl3ZEdsdmJqQmNJam8wTVN4Y0ltOXdaVzVKYm5abGNuTmxRMmhoYVc1ZmIzQjBh
Vzl1TVZ3aU9qUXlMRndpYVc1MlpYSnpaVUZ1WkZCeWIyZHlZVzFjSWpvME15eGNJa2xPVmtWU1Uw
VmNJam8wTkN4Y0ltbHVkbVZ5YzJWRGFHRnBibHdpT2pRMUxGd2lhVzUyWlhKelpVTm9ZV2x1WDI5
d2RHbHZiakJjSWpvME5peGNJazlRUlU1ZlJVNUVRa3hQUTB0Y0lqbzBOeXhjSWs5UVJVNWNJam8w
T0N4Y0ltMTFjM1JoWTJobFgzSmxjR1YwYVhScGIyNHdYQ0k2TkRrc1hDSnRkWE4wWVdOb1pWOXZj
SFJwYjI0d1hDSTZOVEFzWENKUFVFVk9YMVZPUlZORFFWQkZSRndpT2pVeExGd2liWFZ6ZEdGamFH
VmZjbVZ3WlhScGRHbHZiakZjSWpvMU1peGNJbTExYzNSaFkyaGxYMjl3ZEdsdmJqRmNJam8xTXl4
Y0lrTk1UMU5GWDFWT1JWTkRRVkJGUkZ3aU9qVTBMRndpVDFCRlRsOVFRVkpVU1VGTVhDSTZOVFVz
WENKd1lYSjBhV0ZzVG1GdFpWd2lPalUyTEZ3aWNHRnlkR2xoYkY5eVpYQmxkR2wwYVc5dU1Gd2lP
alUzTEZ3aWNHRnlkR2xoYkY5dmNIUnBiMjR3WENJNk5UZ3NYQ0p2Y0dWdVVHRnlkR2xoYkVKc2Iy
TnJYQ0k2TlRrc1hDSlBVRVZPWDFCQlVsUkpRVXhmUWt4UFEwdGNJam8yTUN4Y0ltOXdaVzVRWVhK
MGFXRnNRbXh2WTJ0ZmNtVndaWFJwZEdsdmJqQmNJam8yTVN4Y0ltOXdaVzVRWVhKMGFXRnNRbXh2
WTJ0ZmIzQjBhVzl1TUZ3aU9qWXlMRndpY0dGeVlXMWNJam8yTXl4Y0luTmxlSEJ5WENJNk5qUXNY
Q0pQVUVWT1gxTkZXRkJTWENJNk5qVXNYQ0p6Wlhod2NsOXlaWEJsZEdsMGFXOXVNRndpT2pZMkxG
d2ljMlY0Y0hKZmIzQjBhVzl1TUZ3aU9qWTNMRndpUTB4UFUwVmZVMFZZVUZKY0lqbzJPQ3hjSW1o
aGMyaGNJam8yT1N4Y0ltaGhjMmhmY21Wd1pYUnBkR2x2Ymw5d2JIVnpNRndpT2pjd0xGd2lhR0Z6
YUZObFoyMWxiblJjSWpvM01TeGNJa2xFWENJNk56SXNYQ0pGVVZWQlRGTmNJam8zTXl4Y0ltSnNi
Mk5yVUdGeVlXMXpYQ0k2TnpRc1hDSlBVRVZPWDBKTVQwTkxYMUJCVWtGTlUxd2lPamMxTEZ3aVlt
eHZZMnRRWVhKaGJYTmZjbVZ3WlhScGRHbHZibDl3YkhWek1Gd2lPamMyTEZ3aVEweFBVMFZmUWt4
UFEwdGZVRUZTUVUxVFhDSTZOemNzWENKd1lYUm9YQ0k2Tnpnc1hDSmtZWFJoVG1GdFpWd2lPamM1
TEZ3aVUxUlNTVTVIWENJNk9EQXNYQ0pPVlUxQ1JWSmNJam80TVN4Y0lrSlBUMHhGUVU1Y0lqbzRN
aXhjSWxWT1JFVkdTVTVGUkZ3aU9qZ3pMRndpVGxWTVRGd2lPamcwTEZ3aVJFRlVRVndpT2pnMUxG
d2ljR0YwYUZObFoyMWxiblJ6WENJNk9EWXNYQ0pUUlZCY0lqbzROeXhjSWlSaFkyTmxjSFJjSWpv
d0xGd2lKR1Z1WkZ3aU9qRjlMRnh1ZEdWeWJXbHVZV3h6WHpvZ2V6STZYQ0psY25KdmNsd2lMRFU2
WENKRlQwWmNJaXd4TkRwY0lrTlBUVTFGVGxSY0lpd3hOVHBjSWtOUFRsUkZUbFJjSWl3eE9EcGNJ
a1ZPUkY5U1FWZGZRa3hQUTB0Y0lpd3hPVHBjSWs5UVJVNWZVa0ZYWDBKTVQwTkxYQ0lzTWpNNlhD
SkRURTlUUlY5U1FWZGZRa3hQUTB0Y0lpd3lPVHBjSWs5UVJVNWZRa3hQUTB0Y0lpd3pNenBjSWtO
TVQxTkZYQ0lzTXpRNlhDSlBVRVZPWDBsT1ZrVlNVMFZjSWl3ek9UcGNJazlRUlU1ZlNVNVdSVkpU
UlY5RFNFRkpUbHdpTERRME9sd2lTVTVXUlZKVFJWd2lMRFEzT2x3aVQxQkZUbDlGVGtSQ1RFOURT
MXdpTERRNE9sd2lUMUJGVGx3aUxEVXhPbHdpVDFCRlRsOVZUa1ZUUTBGUVJVUmNJaXcxTkRwY0lr
Tk1UMU5GWDFWT1JWTkRRVkJGUkZ3aUxEVTFPbHdpVDFCRlRsOVFRVkpVU1VGTVhDSXNOakE2WENK
UFVFVk9YMUJCVWxSSlFVeGZRa3hQUTB0Y0lpdzJOVHBjSWs5UVJVNWZVMFZZVUZKY0lpdzJPRHBj
SWtOTVQxTkZYMU5GV0ZCU1hDSXNOekk2WENKSlJGd2lMRGN6T2x3aVJWRlZRVXhUWENJc056VTZY
Q0pQVUVWT1gwSk1UME5MWDFCQlVrRk5VMXdpTERjM09sd2lRMHhQVTBWZlFreFBRMHRmVUVGU1FV
MVRYQ0lzT0RBNlhDSlRWRkpKVGtkY0lpdzRNVHBjSWs1VlRVSkZVbHdpTERneU9sd2lRazlQVEVW
QlRsd2lMRGd6T2x3aVZVNUVSVVpKVGtWRVhDSXNPRFE2WENKT1ZVeE1YQ0lzT0RVNlhDSkVRVlJC
WENJc09EYzZYQ0pUUlZCY0luMHNYRzV3Y205a2RXTjBhVzl1YzE4NklGc3dMRnN6TERKZExGczBM
REZkTEZzM0xERmRMRnMzTERGZExGczNMREZkTEZzM0xERmRMRnMzTERGZExGczNMREZkTEZzM0xE
RmRMRnN4TXl3eFhTeGJNVEFzTTEwc1d6RTJMRFZkTEZzNUxEUmRMRnM1TERSZExGc3lOQ3cyWFN4
Yk1qY3NObDBzV3pNNExEWmRMRnMwTXl3eVhTeGJORFVzTTEwc1d6UTFMREZkTEZzeU5pd3pYU3hi
T0N3MVhTeGJPQ3cxWFN4Yk1URXNOVjBzV3pFeUxETmRMRnMxT1N3MVhTeGJOak1zTVYwc1d6WXpM
REZkTEZzMk5DdzFYU3hiTmprc01WMHNXemN4TEROZExGczNOQ3d6WFN4Yk1qQXNNVjBzV3pJd0xE
RmRMRnN5TUN3eFhTeGJNakFzTVYwc1d6SXdMREZkTEZzeU1Dd3hYU3hiTWpBc01WMHNXelUyTERG
ZExGczFOaXd4WFN4Yk56a3NNbDBzV3pjNExERmRMRnM0Tml3elhTeGJPRFlzTVYwc1d6WXNNRjBz
V3pZc01sMHNXekUzTERGZExGc3hOeXd5WFN4Yk1qRXNNRjBzV3pJeExESmRMRnN5TWl3d1hTeGJN
aklzTVYwc1d6STFMREJkTEZzeU5Td3hYU3hiTWpnc01GMHNXekk0TERGZExGc3pNQ3d3WFN4Yk16
QXNNbDBzV3pNeExEQmRMRnN6TVN3eFhTeGJNeklzTUYwc1d6TXlMREZkTEZzek5Td3dYU3hiTXpV
c01sMHNXek0yTERCZExGc3pOaXd4WFN4Yk16Y3NNRjBzV3pNM0xERmRMRnMwTUN3d1hTeGJOREFz
TWwwc1d6UXhMREJkTEZzME1Td3hYU3hiTkRJc01GMHNXelF5TERGZExGczBOaXd3WFN4Yk5EWXNN
VjBzV3pRNUxEQmRMRnMwT1N3eVhTeGJOVEFzTUYwc1d6VXdMREZkTEZzMU1pd3dYU3hiTlRJc01s
MHNXelV6TERCZExGczFNeXd4WFN4Yk5UY3NNRjBzV3pVM0xESmRMRnMxT0N3d1hTeGJOVGdzTVYw
c1d6WXhMREJkTEZzMk1Td3lYU3hiTmpJc01GMHNXell5TERGZExGczJOaXd3WFN4Yk5qWXNNbDBz
V3pZM0xEQmRMRnMyTnl3eFhTeGJOekFzTVYwc1d6Y3dMREpkTEZzM05pd3hYU3hiTnpZc01sMWRM
Rnh1Y0dWeVptOXliVUZqZEdsdmJqb2dablZ1WTNScGIyNGdZVzV2Ym5sdGIzVnpLSGw1ZEdWNGRD
eDVlV3hsYm1jc2VYbHNhVzVsYm04c2VYa3NlWGx6ZEdGMFpTd2tKQ3hmSkZ4dUx5b3FMeWtnZTF4
dVhHNTJZWElnSkRBZ1BTQWtKQzVzWlc1bmRHZ2dMU0F4TzF4dWMzZHBkR05vSUNoNWVYTjBZWFJs
S1NCN1hHNWpZWE5sSURFNklISmxkSFZ5YmlBa0pGc2tNQzB4WFRzZ1hHNWljbVZoYXp0Y2JtTmhj
MlVnTWpwMGFHbHpMaVFnUFNCNWVTNXdjbVZ3WVhKbFVISnZaM0poYlNna0pGc2tNRjBwTzF4dVlu
SmxZV3M3WEc1allYTmxJRE02ZEdocGN5NGtJRDBnSkNSYkpEQmRPMXh1WW5KbFlXczdYRzVqWVhO
bElEUTZkR2hwY3k0a0lEMGdKQ1JiSkRCZE8xeHVZbkpsWVdzN1hHNWpZWE5sSURVNmRHaHBjeTRr
SUQwZ0pDUmJKREJkTzF4dVluSmxZV3M3WEc1allYTmxJRFk2ZEdocGN5NGtJRDBnSkNSYkpEQmRP
MXh1WW5KbFlXczdYRzVqWVhObElEYzZkR2hwY3k0a0lEMGdKQ1JiSkRCZE8xeHVZbkpsWVdzN1hH
NWpZWE5sSURnNmRHaHBjeTRrSUQwZ0pDUmJKREJkTzF4dVluSmxZV3M3WEc1allYTmxJRGs2WEc0
Z0lDQWdkR2hwY3k0a0lEMGdlMXh1SUNBZ0lDQWdkSGx3WlRvZ0owTnZiVzFsYm5SVGRHRjBaVzFs
Ym5RbkxGeHVJQ0FnSUNBZ2RtRnNkV1U2SUhsNUxuTjBjbWx3UTI5dGJXVnVkQ2drSkZza01GMHBM
Rnh1SUNBZ0lDQWdjM1J5YVhBNklIbDVMbk4wY21sd1JteGhaM01vSkNSYkpEQmRMQ0FrSkZza01G
MHBMRnh1SUNBZ0lDQWdiRzlqT2lCNWVTNXNiMk5KYm1adktIUm9hWE11WHlRcFhHNGdJQ0FnZlR0
Y2JpQWdYRzVpY21WaGF6dGNibU5oYzJVZ01UQTZYRzRnSUNBZ2RHaHBjeTRrSUQwZ2UxeHVJQ0Fn
SUNBZ2RIbHdaVG9nSjBOdmJuUmxiblJUZEdGMFpXMWxiblFuTEZ4dUlDQWdJQ0FnYjNKcFoybHVZ
V3c2SUNRa1d5UXdYU3hjYmlBZ0lDQWdJSFpoYkhWbE9pQWtKRnNrTUYwc1hHNGdJQ0FnSUNCc2Iy
TTZJSGw1TG14dlkwbHVabThvZEdocGN5NWZKQ2xjYmlBZ0lDQjlPMXh1SUNCY2JtSnlaV0ZyTzF4
dVkyRnpaU0F4TVRwMGFHbHpMaVFnUFNCNWVTNXdjbVZ3WVhKbFVtRjNRbXh2WTJzb0pDUmJKREF0
TWwwc0lDUWtXeVF3TFRGZExDQWtKRnNrTUYwc0lIUm9hWE11WHlRcE8xeHVZbkpsWVdzN1hHNWpZ
WE5sSURFeU9uUm9hWE11SkNBOUlIc2djR0YwYURvZ0pDUmJKREF0TTEwc0lIQmhjbUZ0Y3pvZ0pD
UmJKREF0TWwwc0lHaGhjMmc2SUNRa1d5UXdMVEZkSUgwN1hHNWljbVZoYXp0Y2JtTmhjMlVnTVRN
NmRHaHBjeTRrSUQwZ2VYa3VjSEpsY0dGeVpVSnNiMk5yS0NRa1d5UXdMVE5kTENBa0pGc2tNQzB5
WFN3Z0pDUmJKREF0TVYwc0lDUWtXeVF3WFN3Z1ptRnNjMlVzSUhSb2FYTXVYeVFwTzF4dVluSmxZ
V3M3WEc1allYTmxJREUwT25Sb2FYTXVKQ0E5SUhsNUxuQnlaWEJoY21WQ2JHOWpheWdrSkZza01D
MHpYU3dnSkNSYkpEQXRNbDBzSUNRa1d5UXdMVEZkTENBa0pGc2tNRjBzSUhSeWRXVXNJSFJvYVhN
dVh5UXBPMXh1WW5KbFlXczdYRzVqWVhObElERTFPblJvYVhNdUpDQTlJSHNnYjNCbGJqb2dKQ1Ji
SkRBdE5WMHNJSEJoZEdnNklDUWtXeVF3TFRSZExDQndZWEpoYlhNNklDUWtXeVF3TFROZExDQm9Z
WE5vT2lBa0pGc2tNQzB5WFN3Z1lteHZZMnRRWVhKaGJYTTZJQ1FrV3lRd0xURmRMQ0J6ZEhKcGNE
b2dlWGt1YzNSeWFYQkdiR0ZuY3lna0pGc2tNQzAxWFN3Z0pDUmJKREJkS1NCOU8xeHVZbkpsWVdz
N1hHNWpZWE5sSURFMk9uUm9hWE11SkNBOUlIc2djR0YwYURvZ0pDUmJKREF0TkYwc0lIQmhjbUZ0
Y3pvZ0pDUmJKREF0TTEwc0lHaGhjMmc2SUNRa1d5UXdMVEpkTENCaWJHOWphMUJoY21GdGN6b2dK
Q1JiSkRBdE1WMHNJSE4wY21sd09pQjVlUzV6ZEhKcGNFWnNZV2R6S0NRa1d5UXdMVFZkTENBa0pG
c2tNRjBwSUgwN1hHNWljbVZoYXp0Y2JtTmhjMlVnTVRjNmRHaHBjeTRrSUQwZ2V5QndZWFJvT2lB
a0pGc2tNQzAwWFN3Z2NHRnlZVzF6T2lBa0pGc2tNQzB6WFN3Z2FHRnphRG9nSkNSYkpEQXRNbDBz
SUdKc2IyTnJVR0Z5WVcxek9pQWtKRnNrTUMweFhTd2djM1J5YVhBNklIbDVMbk4wY21sd1JteGha
M01vSkNSYkpEQXROVjBzSUNRa1d5UXdYU2tnZlR0Y2JtSnlaV0ZyTzF4dVkyRnpaU0F4T0RwMGFH
bHpMaVFnUFNCN0lITjBjbWx3T2lCNWVTNXpkSEpwY0Vac1lXZHpLQ1FrV3lRd0xURmRMQ0FrSkZz
a01DMHhYU2tzSUhCeWIyZHlZVzA2SUNRa1d5UXdYU0I5TzF4dVluSmxZV3M3WEc1allYTmxJREU1
T2x4dUlDQWdJSFpoY2lCcGJuWmxjbk5sSUQwZ2VYa3VjSEpsY0dGeVpVSnNiMk5yS0NRa1d5UXdM
VEpkTENBa0pGc2tNQzB4WFN3Z0pDUmJKREJkTENBa0pGc2tNRjBzSUdaaGJITmxMQ0IwYUdsekxs
OGtLU3hjYmlBZ0lDQWdJQ0FnY0hKdlozSmhiU0E5SUhsNUxuQnlaWEJoY21WUWNtOW5jbUZ0S0Z0
cGJuWmxjbk5sWFN3Z0pDUmJKREF0TVYwdWJHOWpLVHRjYmlBZ0lDQndjbTluY21GdExtTm9ZV2x1
WldRZ1BTQjBjblZsTzF4dVhHNGdJQ0FnZEdocGN5NGtJRDBnZXlCemRISnBjRG9nSkNSYkpEQXRN
bDB1YzNSeWFYQXNJSEJ5YjJkeVlXMDZJSEJ5YjJkeVlXMHNJR05vWVdsdU9pQjBjblZsSUgwN1hH
NGdJRnh1WW5KbFlXczdYRzVqWVhObElESXdPblJvYVhNdUpDQTlJQ1FrV3lRd1hUdGNibUp5WldG
ck8xeHVZMkZ6WlNBeU1UcDBhR2x6TGlRZ1BTQjdjR0YwYURvZ0pDUmJKREF0TVYwc0lITjBjbWx3
T2lCNWVTNXpkSEpwY0Vac1lXZHpLQ1FrV3lRd0xUSmRMQ0FrSkZza01GMHBmVHRjYm1KeVpXRnJP
MXh1WTJGelpTQXlNanAwYUdsekxpUWdQU0I1ZVM1d2NtVndZWEpsVFhWemRHRmphR1VvSkNSYkpE
QXRNMTBzSUNRa1d5UXdMVEpkTENBa0pGc2tNQzB4WFN3Z0pDUmJKREF0TkYwc0lIbDVMbk4wY21s
d1JteGhaM01vSkNSYkpEQXRORjBzSUNRa1d5UXdYU2tzSUhSb2FYTXVYeVFwTzF4dVluSmxZV3M3
WEc1allYTmxJREl6T25Sb2FYTXVKQ0E5SUhsNUxuQnlaWEJoY21WTmRYTjBZV05vWlNna0pGc2tN
QzB6WFN3Z0pDUmJKREF0TWwwc0lDUWtXeVF3TFRGZExDQWtKRnNrTUMwMFhTd2dlWGt1YzNSeWFY
QkdiR0ZuY3lna0pGc2tNQzAwWFN3Z0pDUmJKREJkS1N3Z2RHaHBjeTVmSkNrN1hHNWljbVZoYXp0
Y2JtTmhjMlVnTWpRNlhHNGdJQ0FnZEdocGN5NGtJRDBnZTF4dUlDQWdJQ0FnZEhsd1pUb2dKMUJo
Y25ScFlXeFRkR0YwWlcxbGJuUW5MRnh1SUNBZ0lDQWdibUZ0WlRvZ0pDUmJKREF0TTEwc1hHNGdJ
Q0FnSUNCd1lYSmhiWE02SUNRa1d5UXdMVEpkTEZ4dUlDQWdJQ0FnYUdGemFEb2dKQ1JiSkRBdE1W
MHNYRzRnSUNBZ0lDQnBibVJsYm5RNklDY25MRnh1SUNBZ0lDQWdjM1J5YVhBNklIbDVMbk4wY21s
d1JteGhaM01vSkNSYkpEQXRORjBzSUNRa1d5UXdYU2tzWEc0Z0lDQWdJQ0JzYjJNNklIbDVMbXh2
WTBsdVptOG9kR2hwY3k1ZkpDbGNiaUFnSUNCOU8xeHVJQ0JjYm1KeVpXRnJPMXh1WTJGelpTQXlO
VHAwYUdsekxpUWdQU0I1ZVM1d2NtVndZWEpsVUdGeWRHbGhiRUpzYjJOcktDUWtXeVF3TFRKZExD
QWtKRnNrTUMweFhTd2dKQ1JiSkRCZExDQjBhR2x6TGw4a0tUdGNibUp5WldGck8xeHVZMkZ6WlNB
eU5qcDBhR2x6TGlRZ1BTQjdJSEJoZEdnNklDUWtXeVF3TFROZExDQndZWEpoYlhNNklDUWtXeVF3
TFRKZExDQm9ZWE5vT2lBa0pGc2tNQzB4WFN3Z2MzUnlhWEE2SUhsNUxuTjBjbWx3Um14aFozTW9K
Q1JiSkRBdE5GMHNJQ1FrV3lRd1hTa2dmVHRjYm1KeVpXRnJPMXh1WTJGelpTQXlOenAwYUdsekxp
UWdQU0FrSkZza01GMDdYRzVpY21WaGF6dGNibU5oYzJVZ01qZzZkR2hwY3k0a0lEMGdKQ1JiSkRC
ZE8xeHVZbkpsWVdzN1hHNWpZWE5sSURJNU9seHVJQ0FnSUhSb2FYTXVKQ0E5SUh0Y2JpQWdJQ0Fn
SUhSNWNHVTZJQ2RUZFdKRmVIQnlaWE56YVc5dUp5eGNiaUFnSUNBZ0lIQmhkR2c2SUNRa1d5UXdM
VE5kTEZ4dUlDQWdJQ0FnY0dGeVlXMXpPaUFrSkZza01DMHlYU3hjYmlBZ0lDQWdJR2hoYzJnNklD
UWtXeVF3TFRGZExGeHVJQ0FnSUNBZ2JHOWpPaUI1ZVM1c2IyTkpibVp2S0hSb2FYTXVYeVFwWEc0
Z0lDQWdmVHRjYmlBZ1hHNWljbVZoYXp0Y2JtTmhjMlVnTXpBNmRHaHBjeTRrSUQwZ2UzUjVjR1U2
SUNkSVlYTm9KeXdnY0dGcGNuTTZJQ1FrV3lRd1hTd2diRzlqT2lCNWVTNXNiMk5KYm1adktIUm9h
WE11WHlRcGZUdGNibUp5WldGck8xeHVZMkZ6WlNBek1UcDBhR2x6TGlRZ1BTQjdkSGx3WlRvZ0ow
aGhjMmhRWVdseUp5d2dhMlY1T2lCNWVTNXBaQ2drSkZza01DMHlYU2tzSUhaaGJIVmxPaUFrSkZz
a01GMHNJR3h2WXpvZ2VYa3ViRzlqU1c1bWJ5aDBhR2x6TGw4a0tYMDdYRzVpY21WaGF6dGNibU5o
YzJVZ016STZkR2hwY3k0a0lEMGdlWGt1YVdRb0pDUmJKREF0TVYwcE8xeHVZbkpsWVdzN1hHNWpZ
WE5sSURNek9uUm9hWE11SkNBOUlDUWtXeVF3WFR0Y2JtSnlaV0ZyTzF4dVkyRnpaU0F6TkRwMGFH
bHpMaVFnUFNBa0pGc2tNRjA3WEc1aWNtVmhhenRjYm1OaGMyVWdNelU2ZEdocGN5NGtJRDBnZTNS
NWNHVTZJQ2RUZEhKcGJtZE1hWFJsY21Gc0p5d2dkbUZzZFdVNklDUWtXeVF3WFN3Z2IzSnBaMmx1
WVd3NklDUWtXeVF3WFN3Z2JHOWpPaUI1ZVM1c2IyTkpibVp2S0hSb2FYTXVYeVFwZlR0Y2JtSnla
V0ZyTzF4dVkyRnpaU0F6TmpwMGFHbHpMaVFnUFNCN2RIbHdaVG9nSjA1MWJXSmxja3hwZEdWeVlX
d25MQ0IyWVd4MVpUb2dUblZ0WW1WeUtDUWtXeVF3WFNrc0lHOXlhV2RwYm1Gc09pQk9kVzFpWlhJ
b0pDUmJKREJkS1N3Z2JHOWpPaUI1ZVM1c2IyTkpibVp2S0hSb2FYTXVYeVFwZlR0Y2JtSnlaV0Zy
TzF4dVkyRnpaU0F6TnpwMGFHbHpMaVFnUFNCN2RIbHdaVG9nSjBKdmIyeGxZVzVNYVhSbGNtRnNK
eXdnZG1Gc2RXVTZJQ1FrV3lRd1hTQTlQVDBnSjNSeWRXVW5MQ0J2Y21sbmFXNWhiRG9nSkNSYkpE
QmRJRDA5UFNBbmRISjFaU2NzSUd4dll6b2dlWGt1Ykc5alNXNW1ieWgwYUdsekxsOGtLWDA3WEc1
aWNtVmhhenRjYm1OaGMyVWdNemc2ZEdocGN5NGtJRDBnZTNSNWNHVTZJQ2RWYm1SbFptbHVaV1JN
YVhSbGNtRnNKeXdnYjNKcFoybHVZV3c2SUhWdVpHVm1hVzVsWkN3Z2RtRnNkV1U2SUhWdVpHVm1h
VzVsWkN3Z2JHOWpPaUI1ZVM1c2IyTkpibVp2S0hSb2FYTXVYeVFwZlR0Y2JtSnlaV0ZyTzF4dVky
RnpaU0F6T1RwMGFHbHpMaVFnUFNCN2RIbHdaVG9nSjA1MWJHeE1hWFJsY21Gc0p5d2diM0pwWjJs
dVlXdzZJRzUxYkd3c0lIWmhiSFZsT2lCdWRXeHNMQ0JzYjJNNklIbDVMbXh2WTBsdVptOG9kR2hw
Y3k1ZkpDbDlPMXh1WW5KbFlXczdYRzVqWVhObElEUXdPblJvYVhNdUpDQTlJQ1FrV3lRd1hUdGNi
bUp5WldGck8xeHVZMkZ6WlNBME1UcDBhR2x6TGlRZ1BTQWtKRnNrTUYwN1hHNWljbVZoYXp0Y2Jt
TmhjMlVnTkRJNmRHaHBjeTRrSUQwZ2VYa3VjSEpsY0dGeVpWQmhkR2dvZEhKMVpTd2dKQ1JiSkRC
ZExDQjBhR2x6TGw4a0tUdGNibUp5WldGck8xeHVZMkZ6WlNBME16cDBhR2x6TGlRZ1BTQjVlUzV3
Y21Wd1lYSmxVR0YwYUNobVlXeHpaU3dnSkNSYkpEQmRMQ0IwYUdsekxsOGtLVHRjYm1KeVpXRnJP
MXh1WTJGelpTQTBORG9nSkNSYkpEQXRNbDB1Y0hWemFDaDdjR0Z5ZERvZ2VYa3VhV1FvSkNSYkpE
QmRLU3dnYjNKcFoybHVZV3c2SUNRa1d5UXdYU3dnYzJWd1lYSmhkRzl5T2lBa0pGc2tNQzB4WFgw
cE95QjBhR2x6TGlRZ1BTQWtKRnNrTUMweVhUc2dYRzVpY21WaGF6dGNibU5oYzJVZ05EVTZkR2hw
Y3k0a0lEMGdXM3R3WVhKME9pQjVlUzVwWkNna0pGc2tNRjBwTENCdmNtbG5hVzVoYkRvZ0pDUmJK
REJkZlYwN1hHNWljbVZoYXp0Y2JtTmhjMlVnTkRZNmRHaHBjeTRrSUQwZ1cxMDdYRzVpY21WaGF6
dGNibU5oYzJVZ05EYzZKQ1JiSkRBdE1WMHVjSFZ6YUNna0pGc2tNRjBwTzF4dVluSmxZV3M3WEc1
allYTmxJRFE0T25Sb2FYTXVKQ0E5SUZza0pGc2tNRjFkTzF4dVluSmxZV3M3WEc1allYTmxJRFE1
T2lRa1d5UXdMVEZkTG5CMWMyZ29KQ1JiSkRCZEtUdGNibUp5WldGck8xeHVZMkZ6WlNBMU1EcDBh
R2x6TGlRZ1BTQmJYVHRjYm1KeVpXRnJPMXh1WTJGelpTQTFNVG9rSkZza01DMHhYUzV3ZFhOb0tD
UWtXeVF3WFNrN1hHNWljbVZoYXp0Y2JtTmhjMlVnTlRnNmRHaHBjeTRrSUQwZ1cxMDdYRzVpY21W
aGF6dGNibU5oYzJVZ05UazZKQ1JiSkRBdE1WMHVjSFZ6YUNna0pGc2tNRjBwTzF4dVluSmxZV3M3
WEc1allYTmxJRFkwT25Sb2FYTXVKQ0E5SUZ0ZE8xeHVZbkpsWVdzN1hHNWpZWE5sSURZMU9pUWtX
eVF3TFRGZExuQjFjMmdvSkNSYkpEQmRLVHRjYm1KeVpXRnJPMXh1WTJGelpTQTNNRHAwYUdsekxp
UWdQU0JiWFR0Y2JtSnlaV0ZyTzF4dVkyRnpaU0EzTVRva0pGc2tNQzB4WFM1d2RYTm9LQ1FrV3lR
d1hTazdYRzVpY21WaGF6dGNibU5oYzJVZ056ZzZkR2hwY3k0a0lEMGdXMTA3WEc1aWNtVmhhenRj
Ym1OaGMyVWdOems2SkNSYkpEQXRNVjB1Y0hWemFDZ2tKRnNrTUYwcE8xeHVZbkpsWVdzN1hHNWpZ
WE5sSURneU9uUm9hWE11SkNBOUlGdGRPMXh1WW5KbFlXczdYRzVqWVhObElEZ3pPaVFrV3lRd0xU
RmRMbkIxYzJnb0pDUmJKREJkS1R0Y2JtSnlaV0ZyTzF4dVkyRnpaU0E0TmpwMGFHbHpMaVFnUFNC
YlhUdGNibUp5WldGck8xeHVZMkZ6WlNBNE56b2tKRnNrTUMweFhTNXdkWE5vS0NRa1d5UXdYU2s3
WEc1aWNtVmhhenRjYm1OaGMyVWdPVEE2ZEdocGN5NGtJRDBnVzEwN1hHNWljbVZoYXp0Y2JtTmhj
MlVnT1RFNkpDUmJKREF0TVYwdWNIVnphQ2drSkZza01GMHBPMXh1WW5KbFlXczdYRzVqWVhObElE
azBPblJvYVhNdUpDQTlJRnRkTzF4dVluSmxZV3M3WEc1allYTmxJRGsxT2lRa1d5UXdMVEZkTG5C
MWMyZ29KQ1JiSkRCZEtUdGNibUp5WldGck8xeHVZMkZ6WlNBNU9EcDBhR2x6TGlRZ1BTQmJKQ1Ji
SkRCZFhUdGNibUp5WldGck8xeHVZMkZ6WlNBNU9Ub2tKRnNrTUMweFhTNXdkWE5vS0NRa1d5UXdY
U2s3WEc1aWNtVmhhenRjYm1OaGMyVWdNVEF3T25Sb2FYTXVKQ0E5SUZza0pGc2tNRjFkTzF4dVlu
SmxZV3M3WEc1allYTmxJREV3TVRva0pGc2tNQzB4WFM1d2RYTm9LQ1FrV3lRd1hTazdYRzVpY21W
aGF6dGNibjFjYm4wc1hHNTBZV0pzWlRvZ1czc3pPakVzTkRveUxEVTZXeklzTkRaZExEWTZNeXd4
TkRwYk1pdzBObDBzTVRVNld6SXNORFpkTERFNU9sc3lMRFEyWFN3eU9UcGJNaXcwTmwwc016UTZX
eklzTkRaZExEUTRPbHN5TERRMlhTdzFNVHBiTWl3ME5sMHNOVFU2V3pJc05EWmRMRFl3T2xzeUxE
UTJYWDBzZXpFNld6TmRmU3g3TlRwYk1TdzBYWDBzZXpVNld6SXNNbDBzTnpvMUxEZzZOaXc1T2pj
c01UQTZPQ3d4TVRvNUxERXlPakV3TERFek9qRXhMREUwT2xzeExERXlYU3d4TlRwYk1Td3lNRjBz
TVRZNk1UY3NNVGs2V3pFc01qTmRMREkwT2pFMUxESTNPakUyTERJNU9sc3hMREl4WFN3ek5EcGJN
U3d5TWwwc016azZXeklzTWwwc05EUTZXeklzTWwwc05EYzZXeklzTWwwc05EZzZXekVzTVROZExE
VXhPbHN4TERFMFhTdzFOVHBiTVN3eE9GMHNOVGs2TVRrc05qQTZXekVzTWpSZGZTeDdNVHBiTWl3
eFhYMHNlelU2V3pJc05EZGRMREUwT2xzeUxEUTNYU3d4TlRwYk1pdzBOMTBzTVRrNld6SXNORGRk
TERJNU9sc3lMRFEzWFN3ek5EcGJNaXcwTjEwc016azZXeklzTkRkZExEUTBPbHN5TERRM1hTdzBO
enBiTWl3ME4xMHNORGc2V3pJc05EZGRMRFV4T2xzeUxEUTNYU3cxTlRwYk1pdzBOMTBzTmpBNld6
SXNORGRkZlN4N05UcGJNaXd6WFN3eE5EcGJNaXd6WFN3eE5UcGJNaXd6WFN3eE9UcGJNaXd6WFN3
eU9UcGJNaXd6WFN3ek5EcGJNaXd6WFN3ek9UcGJNaXd6WFN3ME5EcGJNaXd6WFN3ME56cGJNaXd6
WFN3ME9EcGJNaXd6WFN3MU1UcGJNaXd6WFN3MU5UcGJNaXd6WFN3Mk1EcGJNaXd6WFgwc2V6VTZX
eklzTkYwc01UUTZXeklzTkYwc01UVTZXeklzTkYwc01UazZXeklzTkYwc01qazZXeklzTkYwc016
UTZXeklzTkYwc016azZXeklzTkYwc05EUTZXeklzTkYwc05EYzZXeklzTkYwc05EZzZXeklzTkYw
c05URTZXeklzTkYwc05UVTZXeklzTkYwc05qQTZXeklzTkYxOUxIczFPbHN5TERWZExERTBPbHN5
TERWZExERTFPbHN5TERWZExERTVPbHN5TERWZExESTVPbHN5TERWZExETTBPbHN5TERWZExETTVP
bHN5TERWZExEUTBPbHN5TERWZExEUTNPbHN5TERWZExEUTRPbHN5TERWZExEVXhPbHN5TERWZExE
VTFPbHN5TERWZExEWXdPbHN5TERWZGZTeDdOVHBiTWl3MlhTd3hORHBiTWl3MlhTd3hOVHBiTWl3
MlhTd3hPVHBiTWl3MlhTd3lPVHBiTWl3MlhTd3pORHBiTWl3MlhTd3pPVHBiTWl3MlhTdzBORHBi
TWl3MlhTdzBOenBiTWl3MlhTdzBPRHBiTWl3MlhTdzFNVHBiTWl3MlhTdzFOVHBiTWl3MlhTdzJN
RHBiTWl3MlhYMHNlelU2V3pJc04xMHNNVFE2V3pJc04xMHNNVFU2V3pJc04xMHNNVGs2V3pJc04x
MHNNams2V3pJc04xMHNNelE2V3pJc04xMHNNems2V3pJc04xMHNORFE2V3pJc04xMHNORGM2V3pJ
c04xMHNORGc2V3pJc04xMHNOVEU2V3pJc04xMHNOVFU2V3pJc04xMHNOakE2V3pJc04xMTlMSHMx
T2xzeUxEaGRMREUwT2xzeUxEaGRMREUxT2xzeUxEaGRMREU1T2xzeUxEaGRMREk1T2xzeUxEaGRM
RE0wT2xzeUxEaGRMRE01T2xzeUxEaGRMRFEwT2xzeUxEaGRMRFEzT2xzeUxEaGRMRFE0T2xzeUxE
aGRMRFV4T2xzeUxEaGRMRFUxT2xzeUxEaGRMRFl3T2xzeUxEaGRmU3g3TlRwYk1pdzVYU3d4TkRw
Yk1pdzVYU3d4TlRwYk1pdzVYU3d4T1RwYk1pdzVYU3d5T1RwYk1pdzVYU3d6TkRwYk1pdzVYU3d6
T1RwYk1pdzVYU3cwTkRwYk1pdzVYU3cwTnpwYk1pdzVYU3cwT0RwYk1pdzVYU3cxTVRwYk1pdzVY
U3cxTlRwYk1pdzVYU3cyTURwYk1pdzVYWDBzZXpJd09qSTFMRGN5T2xzeExETTFYU3czT0RveU5p
dzNPVG95Tnl3NE1EcGJNU3d5T0Ywc09ERTZXekVzTWpsZExEZ3lPbHN4TERNd1hTdzRNenBiTVN3
ek1WMHNPRFE2V3pFc016SmRMRGcxT2xzeExETTBYU3c0Tmpvek0zMHNlekl3T2pNMkxEY3lPbHN4
TERNMVhTdzNPRG95Tml3M09Ub3lOeXc0TURwYk1Td3lPRjBzT0RFNld6RXNNamxkTERneU9sc3hM
RE13WFN3NE16cGJNU3d6TVYwc09EUTZXekVzTXpKZExEZzFPbHN4TERNMFhTdzROam96TTMwc2V6
UTZNemNzTmpvekxERTBPbHN5TERRMlhTd3hOVHBiTWl3ME5sMHNNVGs2V3pJc05EWmRMREk1T2xz
eUxEUTJYU3d6TkRwYk1pdzBObDBzTXprNld6SXNORFpkTERRME9sc3lMRFEyWFN3ME56cGJNaXcw
Tmwwc05EZzZXeklzTkRaZExEVXhPbHN5TERRMlhTdzFOVHBiTWl3ME5sMHNOakE2V3pJc05EWmRm
U3g3TkRvek9DdzJPak1zTVRRNld6SXNORFpkTERFMU9sc3lMRFEyWFN3eE9UcGJNaXcwTmwwc01q
azZXeklzTkRaZExETTBPbHN5TERRMlhTdzBORHBiTWl3ME5sMHNORGM2V3pJc05EWmRMRFE0T2xz
eUxEUTJYU3cxTVRwYk1pdzBObDBzTlRVNld6SXNORFpkTERZd09sc3lMRFEyWFgwc2V6RXpPalF3
TERFMU9sc3hMREl3WFN3eE56b3pPWDBzZXpJd09qUXlMRFUyT2pReExEWTBPalF6TERZMU9sc3hM
RFEwWFN3M01qcGJNU3d6TlYwc056ZzZNallzTnprNk1qY3NPREE2V3pFc01qaGRMRGd4T2xzeExE
STVYU3c0TWpwYk1Td3pNRjBzT0RNNld6RXNNekZkTERnME9sc3hMRE15WFN3NE5UcGJNU3d6TkYw
c09EWTZNek45TEhzME9qUTFMRFk2TXl3eE5EcGJNaXcwTmwwc01UVTZXeklzTkRaZExERTVPbHN5
TERRMlhTd3lPVHBiTWl3ME5sMHNNelE2V3pJc05EWmRMRFEzT2xzeUxEUTJYU3cwT0RwYk1pdzBO
bDBzTlRFNld6SXNORFpkTERVMU9sc3lMRFEyWFN3Mk1EcGJNaXcwTmwxOUxIczFPbHN5TERFd1hT
d3hORHBiTWl3eE1GMHNNVFU2V3pJc01UQmRMREU0T2xzeUxERXdYU3d4T1RwYk1pd3hNRjBzTWpr
Nld6SXNNVEJkTERNME9sc3lMREV3WFN3ek9UcGJNaXd4TUYwc05EUTZXeklzTVRCZExEUTNPbHN5
TERFd1hTdzBPRHBiTWl3eE1GMHNOVEU2V3pJc01UQmRMRFUxT2xzeUxERXdYU3cyTURwYk1pd3hN
RjE5TEhzeU1EbzBOaXczTWpwYk1Td3pOVjBzTnpnNk1qWXNOems2TWpjc09EQTZXekVzTWpoZExE
Z3hPbHN4TERJNVhTdzRNanBiTVN3ek1GMHNPRE02V3pFc016RmRMRGcwT2xzeExETXlYU3c0TlRw
Yk1Td3pORjBzT0RZNk16TjlMSHN5TURvME55dzNNanBiTVN3ek5WMHNOemc2TWpZc056azZNamNz
T0RBNld6RXNNamhkTERneE9sc3hMREk1WFN3NE1qcGJNU3d6TUYwc09ETTZXekVzTXpGZExEZzBP
bHN4TERNeVhTdzROVHBiTVN3ek5GMHNPRFk2TXpOOUxIc3lNRG8wT0N3M01qcGJNU3d6TlYwc056
ZzZNallzTnprNk1qY3NPREE2V3pFc01qaGRMRGd4T2xzeExESTVYU3c0TWpwYk1Td3pNRjBzT0RN
Nld6RXNNekZkTERnME9sc3hMRE15WFN3NE5UcGJNU3d6TkYwc09EWTZNek45TEhzeU1EbzBNaXcx
TmpvME9TdzJORG8wTXl3Mk5UcGJNU3cwTkYwc056STZXekVzTXpWZExEYzRPakkyTERjNU9qSTNM
RGd3T2xzeExESTRYU3c0TVRwYk1Td3lPVjBzT0RJNld6RXNNekJkTERnek9sc3hMRE14WFN3NE5E
cGJNU3d6TWwwc09EVTZXekVzTXpSZExEZzJPak16ZlN4N016TTZXeklzTnpoZExEUTVPalV3TERZ
MU9sc3lMRGM0WFN3M01qcGJNaXczT0Ywc09EQTZXeklzTnpoZExEZ3hPbHN5TERjNFhTdzRNanBi
TWl3M09GMHNPRE02V3pJc056aGRMRGcwT2xzeUxEYzRYU3c0TlRwYk1pdzNPRjE5TEhzeU16cGJN
aXd6TTEwc016TTZXeklzTXpOZExEVTBPbHN5TERNelhTdzJOVHBiTWl3ek0xMHNOamc2V3pJc016
TmRMRGN5T2xzeUxETXpYU3czTlRwYk1pd3pNMTBzT0RBNld6SXNNek5kTERneE9sc3lMRE16WFN3
NE1qcGJNaXd6TTEwc09ETTZXeklzTXpOZExEZzBPbHN5TERNelhTdzROVHBiTWl3ek0xMTlMSHN5
TXpwYk1pd3pORjBzTXpNNld6SXNNelJkTERVME9sc3lMRE0wWFN3Mk5UcGJNaXd6TkYwc05qZzZX
eklzTXpSZExEY3lPbHN5TERNMFhTdzNOVHBiTWl3ek5GMHNPREE2V3pJc016UmRMRGd4T2xzeUxE
TTBYU3c0TWpwYk1pd3pORjBzT0RNNld6SXNNelJkTERnME9sc3lMRE0wWFN3NE5UcGJNaXd6TkYx
OUxIc3lNenBiTWl3ek5WMHNNek02V3pJc016VmRMRFUwT2xzeUxETTFYU3cyTlRwYk1pd3pOVjBz
TmpnNld6SXNNelZkTERjeU9sc3lMRE0xWFN3M05UcGJNaXd6TlYwc09EQTZXeklzTXpWZExEZ3hP
bHN5TERNMVhTdzRNanBiTWl3ek5WMHNPRE02V3pJc016VmRMRGcwT2xzeUxETTFYU3c0TlRwYk1p
d3pOVjE5TEhzeU16cGJNaXd6Tmwwc016TTZXeklzTXpaZExEVTBPbHN5TERNMlhTdzJOVHBiTWl3
ek5sMHNOamc2V3pJc016WmRMRGN5T2xzeUxETTJYU3czTlRwYk1pd3pObDBzT0RBNld6SXNNelpk
TERneE9sc3lMRE0yWFN3NE1qcGJNaXd6Tmwwc09ETTZXeklzTXpaZExEZzBPbHN5TERNMlhTdzRO
VHBiTWl3ek5sMTlMSHN5TXpwYk1pd3pOMTBzTXpNNld6SXNNemRkTERVME9sc3lMRE0zWFN3Mk5U
cGJNaXd6TjEwc05qZzZXeklzTXpkZExEY3lPbHN5TERNM1hTdzNOVHBiTWl3ek4xMHNPREE2V3pJ
c016ZGRMRGd4T2xzeUxETTNYU3c0TWpwYk1pd3pOMTBzT0RNNld6SXNNemRkTERnME9sc3lMRE0z
WFN3NE5UcGJNaXd6TjExOUxIc3lNenBiTWl3ek9GMHNNek02V3pJc016aGRMRFUwT2xzeUxETTRY
U3cyTlRwYk1pd3pPRjBzTmpnNld6SXNNemhkTERjeU9sc3lMRE00WFN3M05UcGJNaXd6T0Ywc09E
QTZXeklzTXpoZExEZ3hPbHN5TERNNFhTdzRNanBiTWl3ek9GMHNPRE02V3pJc016aGRMRGcwT2xz
eUxETTRYU3c0TlRwYk1pd3pPRjE5TEhzeU16cGJNaXd6T1Ywc016TTZXeklzTXpsZExEVTBPbHN5
TERNNVhTdzJOVHBiTWl3ek9WMHNOamc2V3pJc016bGRMRGN5T2xzeUxETTVYU3czTlRwYk1pd3pP
VjBzT0RBNld6SXNNemxkTERneE9sc3lMRE01WFN3NE1qcGJNaXd6T1Ywc09ETTZXeklzTXpsZExE
ZzBPbHN5TERNNVhTdzROVHBiTWl3ek9WMTlMSHN5TXpwYk1pdzBNMTBzTXpNNld6SXNORE5kTERV
ME9sc3lMRFF6WFN3Mk5UcGJNaXcwTTEwc05qZzZXeklzTkROZExEY3lPbHN5TERRelhTdzNOVHBi
TWl3ME0xMHNPREE2V3pJc05ETmRMRGd4T2xzeUxEUXpYU3c0TWpwYk1pdzBNMTBzT0RNNld6SXNO
RE5kTERnME9sc3lMRFF6WFN3NE5UcGJNaXcwTTEwc09EYzZXekVzTlRGZGZTeDdOekk2V3pFc016
VmRMRGcyT2pVeWZTeDdNak02V3pJc05EVmRMRE16T2xzeUxEUTFYU3cxTkRwYk1pdzBOVjBzTmpV
Nld6SXNORFZkTERZNE9sc3lMRFExWFN3M01qcGJNaXcwTlYwc056VTZXeklzTkRWZExEZ3dPbHN5
TERRMVhTdzRNVHBiTWl3ME5WMHNPREk2V3pJc05EVmRMRGd6T2xzeUxEUTFYU3c0TkRwYk1pdzBO
VjBzT0RVNld6SXNORFZkTERnM09sc3lMRFExWFgwc2V6VXlPalV6TERVME9sc3lMRGd5WFN3Mk5U
cGJNaXc0TWwwc056STZXeklzT0RKZExEZ3dPbHN5TERneVhTdzRNVHBiTWl3NE1sMHNPREk2V3pJ
c09ESmRMRGd6T2xzeUxEZ3lYU3c0TkRwYk1pdzRNbDBzT0RVNld6SXNPREpkZlN4N01qVTZOVFFz
TXpnNk5UWXNNems2V3pFc05UaGRMRFF6T2pVM0xEUTBPbHN4TERVNVhTdzBOVG8xTlN3ME56cGJN
aXcxTkYxOUxIc3lPRG8yTUN3ME16bzJNU3cwTkRwYk1TdzFPVjBzTkRjNld6SXNOVFpkZlN4N01U
TTZOak1zTVRVNld6RXNNakJkTERFNE9sc3hMRFl5WFgwc2V6RTFPbHN5TERRNFhTd3hPRHBiTWl3
ME9GMTlMSHN6TXpwYk1pdzRObDBzTlRjNk5qUXNOalU2V3pJc09EWmRMRGN5T2xzeUxEZzJYU3c0
TURwYk1pdzRObDBzT0RFNld6SXNPRFpkTERneU9sc3lMRGcyWFN3NE16cGJNaXc0Tmwwc09EUTZX
eklzT0RaZExEZzFPbHN5TERnMlhYMHNlek16T2xzeUxEUXdYU3cyTlRwYk1pdzBNRjBzTnpJNld6
SXNOREJkTERnd09sc3lMRFF3WFN3NE1UcGJNaXcwTUYwc09ESTZXeklzTkRCZExEZ3pPbHN5TERR
d1hTdzRORHBiTWl3ME1GMHNPRFU2V3pJc05EQmRmU3g3TXpNNld6SXNOREZkTERZMU9sc3lMRFF4
WFN3M01qcGJNaXcwTVYwc09EQTZXeklzTkRGZExEZ3hPbHN5TERReFhTdzRNanBiTWl3ME1WMHNP
RE02V3pJc05ERmRMRGcwT2xzeUxEUXhYU3c0TlRwYk1pdzBNVjE5TEhzeU1EbzJOU3czTWpwYk1T
d3pOVjBzTnpnNk1qWXNOems2TWpjc09EQTZXekVzTWpoZExEZ3hPbHN4TERJNVhTdzRNanBiTVN3
ek1GMHNPRE02V3pFc016RmRMRGcwT2xzeExETXlYU3c0TlRwYk1Td3pORjBzT0RZNk16TjlMSHN5
TmpvMk5pdzBOenBiTVN3Mk4xMTlMSHN6TURvMk9Dd3pNenBiTWl3MU9GMHNOalU2V3pJc05UaGRM
RGN5T2xzeUxEVTRYU3czTlRwYk1pdzFPRjBzT0RBNld6SXNOVGhkTERneE9sc3lMRFU0WFN3NE1q
cGJNaXcxT0Ywc09ETTZXeklzTlRoZExEZzBPbHN5TERVNFhTdzROVHBiTWl3MU9GMTlMSHN6TXpw
Yk1pdzJORjBzTXpVNk5qa3NOalU2V3pJc05qUmRMRGN5T2xzeUxEWTBYU3czTlRwYk1pdzJORjBz
T0RBNld6SXNOalJkTERneE9sc3lMRFkwWFN3NE1qcGJNaXcyTkYwc09ETTZXeklzTmpSZExEZzBP
bHN5TERZMFhTdzROVHBiTWl3Mk5GMTlMSHN5TVRvM01Dd3lNenBiTWl3MU1GMHNOalU2V3pJc05U
QmRMRGN5T2xzeUxEVXdYU3c0TURwYk1pdzFNRjBzT0RFNld6SXNOVEJkTERneU9sc3lMRFV3WFN3
NE16cGJNaXcxTUYwc09EUTZXeklzTlRCZExEZzFPbHN5TERVd1hYMHNlek16T2xzeUxEa3dYU3cy
TVRvM01TdzJOVHBiTWl3NU1GMHNOekk2V3pJc09UQmRMRGd3T2xzeUxEa3dYU3c0TVRwYk1pdzVN
RjBzT0RJNld6SXNPVEJkTERnek9sc3lMRGt3WFN3NE5EcGJNaXc1TUYwc09EVTZXeklzT1RCZGZT
eDdNakE2TnpVc016TTZXeklzT0RCZExEVXdPamN5TERZek9qY3pMRFkwT2pjMkxEWTFPbHN4TERR
MFhTdzJPVG8zTkN3M01EbzNOeXczTVRvM09DdzNNanBiTVN3M09WMHNOemc2TWpZc056azZNamNz
T0RBNld6RXNNamhkTERneE9sc3hMREk1WFN3NE1qcGJNU3d6TUYwc09ETTZXekVzTXpGZExEZzBP
bHN4TERNeVhTdzROVHBiTVN3ek5GMHNPRFk2TXpOOUxIczNNanBiTVN3NE1GMTlMSHN5TXpwYk1p
dzBNbDBzTXpNNld6SXNOREpkTERVME9sc3lMRFF5WFN3Mk5UcGJNaXcwTWwwc05qZzZXeklzTkRK
ZExEY3lPbHN5TERReVhTdzNOVHBiTWl3ME1sMHNPREE2V3pJc05ESmRMRGd4T2xzeUxEUXlYU3c0
TWpwYk1pdzBNbDBzT0RNNld6SXNOREpkTERnME9sc3lMRFF5WFN3NE5UcGJNaXcwTWwwc09EYzZX
ekVzTlRGZGZTeDdNakE2TnpVc05UTTZPREVzTlRRNld6SXNPRFJkTERZek9qZ3lMRFkwT2pjMkxE
WTFPbHN4TERRMFhTdzJPVG80TXl3M01EbzNOeXczTVRvM09DdzNNanBiTVN3M09WMHNOemc2TWpZ
c056azZNamNzT0RBNld6RXNNamhkTERneE9sc3hMREk1WFN3NE1qcGJNU3d6TUYwc09ETTZXekVz
TXpGZExEZzBPbHN4TERNeVhTdzROVHBiTVN3ek5GMHNPRFk2TXpOOUxIc3lOam80TkN3ME56cGJN
U3cyTjExOUxIczBOenBiTWl3MU5WMTlMSHMwT2pnMUxEWTZNeXd4TkRwYk1pdzBObDBzTVRVNld6
SXNORFpkTERFNU9sc3lMRFEyWFN3eU9UcGJNaXcwTmwwc016UTZXeklzTkRaZExETTVPbHN5TERR
MlhTdzBORHBiTWl3ME5sMHNORGM2V3pJc05EWmRMRFE0T2xzeUxEUTJYU3cxTVRwYk1pdzBObDBz
TlRVNld6SXNORFpkTERZd09sc3lMRFEyWFgwc2V6UTNPbHN5TERJd1hYMHNlekl3T2pnMkxEY3lP
bHN4TERNMVhTdzNPRG95Tml3M09Ub3lOeXc0TURwYk1Td3lPRjBzT0RFNld6RXNNamxkTERneU9s
c3hMRE13WFN3NE16cGJNU3d6TVYwc09EUTZXekVzTXpKZExEZzFPbHN4TERNMFhTdzROam96TTMw
c2V6UTZPRGNzTmpvekxERTBPbHN5TERRMlhTd3hOVHBiTWl3ME5sMHNNVGs2V3pJc05EWmRMREk1
T2xzeUxEUTJYU3d6TkRwYk1pdzBObDBzTkRjNld6SXNORFpkTERRNE9sc3lMRFEyWFN3MU1UcGJN
aXcwTmwwc05UVTZXeklzTkRaZExEWXdPbHN5TERRMlhYMHNlekkyT2pnNExEUTNPbHN4TERZM1hY
MHNlelEzT2xzeUxEVTNYWDBzZXpVNld6SXNNVEZkTERFME9sc3lMREV4WFN3eE5UcGJNaXd4TVYw
c01UazZXeklzTVRGZExESTVPbHN5TERFeFhTd3pORHBiTWl3eE1WMHNNems2V3pJc01URmRMRFEw
T2xzeUxERXhYU3cwTnpwYk1pd3hNVjBzTkRnNld6SXNNVEZkTERVeE9sc3lMREV4WFN3MU5UcGJN
aXd4TVYwc05qQTZXeklzTVRGZGZTeDdNVFU2V3pJc05EbGRMREU0T2xzeUxEUTVYWDBzZXpJd09q
YzFMRE16T2xzeUxEZzRYU3cxT0RvNE9TdzJNem81TUN3Mk5EbzNOaXcyTlRwYk1TdzBORjBzTmpr
Nk9URXNOekE2Tnpjc056RTZOemdzTnpJNld6RXNOemxkTERjNE9qSTJMRGM1T2pJM0xEZ3dPbHN4
TERJNFhTdzRNVHBiTVN3eU9WMHNPREk2V3pFc016QmRMRGd6T2xzeExETXhYU3c0TkRwYk1Td3pN
bDBzT0RVNld6RXNNelJkTERnMk9qTXpmU3g3TmpVNld6SXNPVFJkTERZMk9qa3lMRFk0T2xzeUxE
azBYU3czTWpwYk1pdzVORjBzT0RBNld6SXNPVFJkTERneE9sc3lMRGswWFN3NE1qcGJNaXc1TkYw
c09ETTZXeklzT1RSZExEZzBPbHN5TERrMFhTdzROVHBiTWl3NU5GMTlMSHMxT2xzeUxESTFYU3d4
TkRwYk1pd3lOVjBzTVRVNld6SXNNalZkTERFNU9sc3lMREkxWFN3eU9UcGJNaXd5TlYwc016UTZX
eklzTWpWZExETTVPbHN5TERJMVhTdzBORHBiTWl3eU5WMHNORGM2V3pJc01qVmRMRFE0T2xzeUxE
STFYU3cxTVRwYk1pd3lOVjBzTlRVNld6SXNNalZkTERZd09sc3lMREkxWFgwc2V6SXdPamt6TERj
eU9sc3hMRE0xWFN3M09Eb3lOaXczT1RveU55dzRNRHBiTVN3eU9GMHNPREU2V3pFc01qbGRMRGd5
T2xzeExETXdYU3c0TXpwYk1Td3pNVjBzT0RRNld6RXNNekpkTERnMU9sc3hMRE0wWFN3NE5qb3pN
MzBzZXpJd09qYzFMRE14T2prMExETXpPbHN5TERZd1hTdzJNem81TlN3Mk5EbzNOaXcyTlRwYk1T
dzBORjBzTmprNk9UWXNOekE2Tnpjc056RTZOemdzTnpJNld6RXNOemxkTERjMU9sc3lMRFl3WFN3
M09Eb3lOaXczT1RveU55dzRNRHBiTVN3eU9GMHNPREU2V3pFc01qbGRMRGd5T2xzeExETXdYU3c0
TXpwYk1Td3pNVjBzT0RRNld6RXNNekpkTERnMU9sc3hMRE0wWFN3NE5qb3pNMzBzZXpJd09qYzFM
RE16T2xzeUxEWTJYU3d6TmpvNU55dzJNem81T0N3Mk5EbzNOaXcyTlRwYk1TdzBORjBzTmprNk9U
a3NOekE2Tnpjc056RTZOemdzTnpJNld6RXNOemxkTERjMU9sc3lMRFkyWFN3M09Eb3lOaXczT1Rv
eU55dzRNRHBiTVN3eU9GMHNPREU2V3pFc01qbGRMRGd5T2xzeExETXdYU3c0TXpwYk1Td3pNVjBz
T0RRNld6RXNNekpkTERnMU9sc3hMRE0wWFN3NE5qb3pNMzBzZXpJd09qYzFMREl5T2pFd01Dd3lN
enBiTWl3MU1sMHNOak02TVRBeExEWTBPamMyTERZMU9sc3hMRFEwWFN3Mk9Ub3hNRElzTnpBNk56
Y3NOekU2Tnpnc056STZXekVzTnpsZExEYzRPakkyTERjNU9qSTNMRGd3T2xzeExESTRYU3c0TVRw
Yk1Td3lPVjBzT0RJNld6RXNNekJkTERnek9sc3hMRE14WFN3NE5EcGJNU3d6TWwwc09EVTZXekVz
TXpSZExEZzJPak16ZlN4N01qQTZOelVzTXpNNld6SXNPVEpkTERZeU9qRXdNeXcyTXpveE1EUXNO
alE2TnpZc05qVTZXekVzTkRSZExEWTVPakV3TlN3M01EbzNOeXczTVRvM09DdzNNanBiTVN3M09W
MHNOemc2TWpZc056azZNamNzT0RBNld6RXNNamhkTERneE9sc3hMREk1WFN3NE1qcGJNU3d6TUYw
c09ETTZXekVzTXpGZExEZzBPbHN4TERNeVhTdzROVHBiTVN3ek5GMHNPRFk2TXpOOUxIc3pNenBi
TVN3eE1EWmRmU3g3TXpNNld6SXNOemxkTERZMU9sc3lMRGM1WFN3M01qcGJNaXczT1Ywc09EQTZX
eklzTnpsZExEZ3hPbHN5TERjNVhTdzRNanBiTWl3M09WMHNPRE02V3pJc056bGRMRGcwT2xzeUxE
YzVYU3c0TlRwYk1pdzNPVjE5TEhzek16cGJNaXc0TVYxOUxIc3lNenBiTWl3eU4xMHNNek02V3pJ
c01qZGRMRFUwT2xzeUxESTNYU3cyTlRwYk1pd3lOMTBzTmpnNld6SXNNamRkTERjeU9sc3lMREkz
WFN3M05UcGJNaXd5TjEwc09EQTZXeklzTWpkZExEZ3hPbHN5TERJM1hTdzRNanBiTWl3eU4xMHNP
RE02V3pJc01qZGRMRGcwT2xzeUxESTNYU3c0TlRwYk1pd3lOMTE5TEhzeU16cGJNaXd5T0Ywc016
TTZXeklzTWpoZExEVTBPbHN5TERJNFhTdzJOVHBiTWl3eU9GMHNOamc2V3pJc01qaGRMRGN5T2xz
eUxESTRYU3czTlRwYk1pd3lPRjBzT0RBNld6SXNNamhkTERneE9sc3lMREk0WFN3NE1qcGJNaXd5
T0Ywc09ETTZXeklzTWpoZExEZzBPbHN5TERJNFhTdzROVHBiTWl3eU9GMTlMSHN5TXpwYk1pd3pN
RjBzTXpNNld6SXNNekJkTERVME9sc3lMRE13WFN3Mk9EcGJNaXd6TUYwc056RTZNVEEzTERjeU9s
c3hMREV3T0Ywc056VTZXeklzTXpCZGZTeDdNak02V3pJc09UaGRMRE16T2xzeUxEazRYU3cxTkRw
Yk1pdzVPRjBzTmpnNld6SXNPVGhkTERjeU9sc3lMRGs0WFN3M05UcGJNaXc1T0YxOUxIc3lNenBi
TWl3ME5WMHNNek02V3pJc05EVmRMRFUwT2xzeUxEUTFYU3cyTlRwYk1pdzBOVjBzTmpnNld6SXNO
RFZkTERjeU9sc3lMRFExWFN3M016cGJNU3d4TURsZExEYzFPbHN5TERRMVhTdzRNRHBiTWl3ME5W
MHNPREU2V3pJc05EVmRMRGd5T2xzeUxEUTFYU3c0TXpwYk1pdzBOVjBzT0RRNld6SXNORFZkTERn
MU9sc3lMRFExWFN3NE56cGJNaXcwTlYxOUxIc3lNenBiTWl3ME5GMHNNek02V3pJc05EUmRMRFUw
T2xzeUxEUTBYU3cyTlRwYk1pdzBORjBzTmpnNld6SXNORFJkTERjeU9sc3lMRFEwWFN3M05UcGJN
aXcwTkYwc09EQTZXeklzTkRSZExEZ3hPbHN5TERRMFhTdzRNanBiTWl3ME5GMHNPRE02V3pJc05E
UmRMRGcwT2xzeUxEUTBYU3c0TlRwYk1pdzBORjBzT0RjNld6SXNORFJkZlN4N05UUTZXekVzTVRF
d1hYMHNlelUwT2xzeUxEZ3pYU3cyTlRwYk1pdzRNMTBzTnpJNld6SXNPRE5kTERnd09sc3lMRGd6
WFN3NE1UcGJNaXc0TTEwc09ESTZXeklzT0ROZExEZ3pPbHN5TERnelhTdzRORHBiTWl3NE0xMHNP
RFU2V3pJc09ETmRmU3g3TlRRNld6SXNPRFZkZlN4N05UcGJNaXd4TTEwc01UUTZXeklzTVROZExE
RTFPbHN5TERFelhTd3hPVHBiTWl3eE0xMHNNams2V3pJc01UTmRMRE0wT2xzeUxERXpYU3d6T1Rw
Yk1pd3hNMTBzTkRRNld6SXNNVE5kTERRM09sc3lMREV6WFN3ME9EcGJNaXd4TTEwc05URTZXeklz
TVROZExEVTFPbHN5TERFelhTdzJNRHBiTWl3eE0xMTlMSHN6T0RvMU5pd3pPVHBiTVN3MU9GMHNO
RE02TlRjc05EUTZXekVzTlRsZExEUTFPakV4TWl3ME5qb3hNVEVzTkRjNld6SXNOelpkZlN4N016
TTZXeklzTnpCZExEUXdPakV4TXl3Mk5UcGJNaXczTUYwc056STZXeklzTnpCZExEYzFPbHN5TERj
d1hTdzRNRHBiTWl3M01GMHNPREU2V3pJc056QmRMRGd5T2xzeUxEY3dYU3c0TXpwYk1pdzNNRjBz
T0RRNld6SXNOekJkTERnMU9sc3lMRGN3WFgwc2V6UTNPbHN5TERFNFhYMHNlelU2V3pJc01UUmRM
REUwT2xzeUxERTBYU3d4TlRwYk1pd3hORjBzTVRrNld6SXNNVFJkTERJNU9sc3lMREUwWFN3ek5E
cGJNaXd4TkYwc016azZXeklzTVRSZExEUTBPbHN5TERFMFhTdzBOenBiTWl3eE5GMHNORGc2V3pJ
c01UUmRMRFV4T2xzeUxERTBYU3cxTlRwYk1pd3hORjBzTmpBNld6SXNNVFJkZlN4N016TTZXekVz
TVRFMFhYMHNlek16T2xzeUxEZzNYU3cyTlRwYk1pdzROMTBzTnpJNld6SXNPRGRkTERnd09sc3lM
RGczWFN3NE1UcGJNaXc0TjEwc09ESTZXeklzT0RkZExEZ3pPbHN5TERnM1hTdzRORHBiTWl3NE4x
MHNPRFU2V3pJc09EZGRmU3g3TXpNNld6SXNPRGxkZlN4N01qQTZOelVzTmpNNk1URTJMRFkwT2pj
MkxEWTFPbHN4TERRMFhTdzJOem94TVRVc05qZzZXeklzT1RaZExEWTVPakV4Tnl3M01EbzNOeXcz
TVRvM09DdzNNanBiTVN3M09WMHNOemc2TWpZc056azZNamNzT0RBNld6RXNNamhkTERneE9sc3hM
REk1WFN3NE1qcGJNU3d6TUYwc09ETTZXekVzTXpGZExEZzBPbHN4TERNeVhTdzROVHBiTVN3ek5G
MHNPRFk2TXpOOUxIc3pNenBiTVN3eE1UaGRmU3g3TXpJNk1URTVMRE16T2xzeUxEWXlYU3czTkRv
eE1qQXNOelU2V3pFc01USXhYWDBzZXpNek9sc3lMRFU1WFN3Mk5UcGJNaXcxT1Ywc056STZXeklz
TlRsZExEYzFPbHN5TERVNVhTdzRNRHBiTWl3MU9WMHNPREU2V3pJc05UbGRMRGd5T2xzeUxEVTVY
U3c0TXpwYk1pdzFPVjBzT0RRNld6SXNOVGxkTERnMU9sc3lMRFU1WFgwc2V6TXpPbHN5TERZeFhT
dzNOVHBiTWl3Mk1WMTlMSHN6TXpwYk1pdzJPRjBzTXpjNk1USXlMRGMwT2pFeU15dzNOVHBiTVN3
eE1qRmRmU3g3TXpNNld6SXNOalZkTERZMU9sc3lMRFkxWFN3M01qcGJNaXcyTlYwc056VTZXeklz
TmpWZExEZ3dPbHN5TERZMVhTdzRNVHBiTWl3Mk5WMHNPREk2V3pJc05qVmRMRGd6T2xzeUxEWTFY
U3c0TkRwYk1pdzJOVjBzT0RVNld6SXNOalZkZlN4N016TTZXeklzTmpkZExEYzFPbHN5TERZM1hY
MHNlekl6T2xzeExERXlORjE5TEhzeU16cGJNaXcxTVYwc05qVTZXeklzTlRGZExEY3lPbHN5TERV
eFhTdzRNRHBiTWl3MU1WMHNPREU2V3pJc05URmRMRGd5T2xzeUxEVXhYU3c0TXpwYk1pdzFNVjBz
T0RRNld6SXNOVEZkTERnMU9sc3lMRFV4WFgwc2V6SXpPbHN5TERVelhYMHNlek16T2xzeExERXlO
VjE5TEhzek16cGJNaXc1TVYwc05qVTZXeklzT1RGZExEY3lPbHN5TERreFhTdzRNRHBiTWl3NU1W
MHNPREU2V3pJc09URmRMRGd5T2xzeUxEa3hYU3c0TXpwYk1pdzVNVjBzT0RRNld6SXNPVEZkTERn
MU9sc3lMRGt4WFgwc2V6TXpPbHN5TERrelhYMHNlelU2V3pJc01qSmRMREUwT2xzeUxESXlYU3d4
TlRwYk1pd3lNbDBzTVRrNld6SXNNakpkTERJNU9sc3lMREl5WFN3ek5EcGJNaXd5TWwwc016azZX
eklzTWpKZExEUTBPbHN5TERJeVhTdzBOenBiTWl3eU1sMHNORGc2V3pJc01qSmRMRFV4T2xzeUxE
SXlYU3cxTlRwYk1pd3lNbDBzTmpBNld6SXNNakpkZlN4N01qTTZXeklzT1RsZExETXpPbHN5TERr
NVhTdzFORHBiTWl3NU9WMHNOamc2V3pJc09UbGRMRGN5T2xzeUxEazVYU3czTlRwYk1pdzVPVjE5
TEhzM016cGJNU3d4TURsZGZTeDdNakE2TnpVc05qTTZNVEkyTERZME9qYzJMRFkxT2xzeExEUTBY
U3czTWpwYk1Td3pOVjBzTnpnNk1qWXNOems2TWpjc09EQTZXekVzTWpoZExEZ3hPbHN4TERJNVhT
dzRNanBiTVN3ek1GMHNPRE02V3pFc016RmRMRGcwT2xzeExETXlYU3c0TlRwYk1Td3pORjBzT0RZ
Nk16TjlMSHMxT2xzeUxESXpYU3d4TkRwYk1pd3lNMTBzTVRVNld6SXNNak5kTERFNU9sc3lMREl6
WFN3eU9UcGJNaXd5TTEwc016UTZXeklzTWpOZExETTVPbHN5TERJelhTdzBORHBiTWl3eU0xMHNO
RGM2V3pJc01qTmRMRFE0T2xzeUxESXpYU3cxTVRwYk1pd3lNMTBzTlRVNld6SXNNak5kTERZd09s
c3lMREl6WFgwc2V6UTNPbHN5TERFNVhYMHNlelEzT2xzeUxEYzNYWDBzZXpJd09qYzFMRE16T2xz
eUxEY3lYU3cwTVRveE1qY3NOak02TVRJNExEWTBPamMyTERZMU9sc3hMRFEwWFN3Mk9Ub3hNamtz
TnpBNk56Y3NOekU2Tnpnc056STZXekVzTnpsZExEYzFPbHN5TERjeVhTdzNPRG95Tml3M09Ub3lO
eXc0TURwYk1Td3lPRjBzT0RFNld6RXNNamxkTERneU9sc3hMRE13WFN3NE16cGJNU3d6TVYwc09E
UTZXekVzTXpKZExEZzFPbHN4TERNMFhTdzROam96TTMwc2V6VTZXeklzTWpSZExERTBPbHN5TERJ
MFhTd3hOVHBiTWl3eU5GMHNNVGs2V3pJc01qUmRMREk1T2xzeUxESTBYU3d6TkRwYk1pd3lORjBz
TXprNld6SXNNalJkTERRME9sc3lMREkwWFN3ME56cGJNaXd5TkYwc05EZzZXeklzTWpSZExEVXhP
bHN5TERJMFhTdzFOVHBiTWl3eU5GMHNOakE2V3pJc01qUmRmU3g3TmpnNld6RXNNVE13WFgwc2V6
WTFPbHN5TERrMVhTdzJPRHBiTWl3NU5WMHNOekk2V3pJc09UVmRMRGd3T2xzeUxEazFYU3c0TVRw
Yk1pdzVOVjBzT0RJNld6SXNPVFZkTERnek9sc3lMRGsxWFN3NE5EcGJNaXc1TlYwc09EVTZXeklz
T1RWZGZTeDdOamc2V3pJc09UZGRmU3g3TlRwYk1pd3lNVjBzTVRRNld6SXNNakZkTERFMU9sc3lM
REl4WFN3eE9UcGJNaXd5TVYwc01qazZXeklzTWpGZExETTBPbHN5TERJeFhTd3pPVHBiTWl3eU1W
MHNORFE2V3pJc01qRmRMRFEzT2xzeUxESXhYU3cwT0RwYk1pd3lNVjBzTlRFNld6SXNNakZkTERV
MU9sc3lMREl4WFN3Mk1EcGJNaXd5TVYxOUxIc3pNenBiTVN3eE16RmRmU3g3TXpNNld6SXNOak5k
ZlN4N056STZXekVzTVRNelhTdzNOam94TXpKOUxIc3pNenBiTVN3eE16UmRmU3g3TXpNNld6SXNO
amxkZlN4N01UVTZXeklzTVRKZGZTeDdNVFE2V3pJc01qWmRMREUxT2xzeUxESTJYU3d4T1RwYk1p
d3lObDBzTWprNld6SXNNalpkTERNME9sc3lMREkyWFN3ME56cGJNaXd5Tmwwc05EZzZXeklzTWpa
ZExEVXhPbHN5TERJMlhTdzFOVHBiTWl3eU5sMHNOakE2V3pJc01qWmRmU3g3TWpNNld6SXNNekZk
TERNek9sc3lMRE14WFN3MU5EcGJNaXd6TVYwc05qZzZXeklzTXpGZExEY3lPbHN5TERNeFhTdzNO
VHBiTWl3ek1WMTlMSHN6TXpwYk1pdzNORjBzTkRJNk1UTTFMRGMwT2pFek5pdzNOVHBiTVN3eE1q
RmRmU3g3TXpNNld6SXNOekZkTERZMU9sc3lMRGN4WFN3M01qcGJNaXczTVYwc056VTZXeklzTnpG
ZExEZ3dPbHN5TERjeFhTdzRNVHBiTWl3M01WMHNPREk2V3pJc056RmRMRGd6T2xzeUxEY3hYU3c0
TkRwYk1pdzNNVjBzT0RVNld6SXNOekZkZlN4N016TTZXeklzTnpOZExEYzFPbHN5TERjelhYMHNl
ekl6T2xzeUxESTVYU3d6TXpwYk1pd3lPVjBzTlRRNld6SXNNamxkTERZMU9sc3lMREk1WFN3Mk9E
cGJNaXd5T1Ywc056STZXeklzTWpsZExEYzFPbHN5TERJNVhTdzRNRHBiTWl3eU9WMHNPREU2V3pJ
c01qbGRMRGd5T2xzeUxESTVYU3c0TXpwYk1pd3lPVjBzT0RRNld6SXNNamxkTERnMU9sc3lMREk1
WFgwc2V6RTBPbHN5TERFMVhTd3hOVHBiTWl3eE5WMHNNVGs2V3pJc01UVmRMREk1T2xzeUxERTFY
U3d6TkRwYk1pd3hOVjBzTXprNld6SXNNVFZkTERRME9sc3lMREUxWFN3ME56cGJNaXd4TlYwc05E
ZzZXeklzTVRWZExEVXhPbHN5TERFMVhTdzFOVHBiTWl3eE5WMHNOakE2V3pJc01UVmRmU3g3TnpJ
Nld6RXNNVE00WFN3M056cGJNU3d4TXpkZGZTeDdOekk2V3pJc01UQXdYU3czTnpwYk1pd3hNREJk
ZlN4N01UUTZXeklzTVRaZExERTFPbHN5TERFMlhTd3hPVHBiTWl3eE5sMHNNams2V3pJc01UWmRM
RE0wT2xzeUxERTJYU3cwTkRwYk1pd3hObDBzTkRjNld6SXNNVFpkTERRNE9sc3lMREUyWFN3MU1U
cGJNaXd4Tmwwc05UVTZXeklzTVRaZExEWXdPbHN5TERFMlhYMHNlek16T2xzeExERXpPVjE5TEhz
ek16cGJNaXczTlYxOUxIc3pNenBiTWl3ek1sMTlMSHMzTWpwYk1pd3hNREZkTERjM09sc3lMREV3
TVYxOUxIc3hORHBiTWl3eE4xMHNNVFU2V3pJc01UZGRMREU1T2xzeUxERTNYU3d5T1RwYk1pd3hO
MTBzTXpRNld6SXNNVGRkTERNNU9sc3lMREUzWFN3ME5EcGJNaXd4TjEwc05EYzZXeklzTVRkZExE
UTRPbHN5TERFM1hTdzFNVHBiTWl3eE4xMHNOVFU2V3pJc01UZGRMRFl3T2xzeUxERTNYWDFkTEZ4
dVpHVm1ZWFZzZEVGamRHbHZibk02SUhzME9sc3lMREZkTERVMU9sc3lMRFUxWFN3MU56cGJNaXd5
TUYwc05qRTZXeklzTlRkZExEYzBPbHN5TERneFhTdzRNenBiTWl3NE5WMHNPRGM2V3pJc01UaGRM
RGt4T2xzeUxEZzVYU3d4TURJNld6SXNOVE5kTERFd05UcGJNaXc1TTEwc01URXhPbHN5TERFNVhT
d3hNVEk2V3pJc056ZGRMREV4TnpwYk1pdzVOMTBzTVRJd09sc3lMRFl6WFN3eE1qTTZXeklzTmps
ZExERXlORHBiTWl3eE1sMHNNVE0yT2xzeUxEYzFYU3d4TXpjNld6SXNNekpkZlN4Y2JuQmhjbk5s
UlhKeWIzSTZJR1oxYm1OMGFXOXVJSEJoY25ObFJYSnliM0lvYzNSeUxDQm9ZWE5vS1NCN1hHNGdJ
Q0FnZEdoeWIzY2dibVYzSUVWeWNtOXlLSE4wY2lrN1hHNTlMRnh1Y0dGeWMyVTZJR1oxYm1OMGFX
OXVJSEJoY25ObEtHbHVjSFYwS1NCN1hHNGdJQ0FnZG1GeUlITmxiR1lnUFNCMGFHbHpMQ0J6ZEdG
amF5QTlJRnN3WFN3Z2RuTjBZV05ySUQwZ1cyNTFiR3hkTENCc2MzUmhZMnNnUFNCYlhTd2dkR0Zp
YkdVZ1BTQjBhR2x6TG5SaFlteGxMQ0I1ZVhSbGVIUWdQU0JjSWx3aUxDQjVlV3hwYm1WdWJ5QTlJ
REFzSUhsNWJHVnVaeUE5SURBc0lISmxZMjkyWlhKcGJtY2dQU0F3TENCVVJWSlNUMUlnUFNBeUxD
QkZUMFlnUFNBeE8xeHVJQ0FnSUhSb2FYTXViR1Y0WlhJdWMyVjBTVzV3ZFhRb2FXNXdkWFFwTzF4
dUlDQWdJSFJvYVhNdWJHVjRaWEl1ZVhrZ1BTQjBhR2x6TG5sNU8xeHVJQ0FnSUhSb2FYTXVlWGt1
YkdWNFpYSWdQU0IwYUdsekxteGxlR1Z5TzF4dUlDQWdJSFJvYVhNdWVYa3VjR0Z5YzJWeUlEMGdk
R2hwY3p0Y2JpQWdJQ0JwWmlBb2RIbHdaVzltSUhSb2FYTXViR1Y0WlhJdWVYbHNiRzlqSUQwOUlG
d2lkVzVrWldacGJtVmtYQ0lwWEc0Z0lDQWdJQ0FnSUhSb2FYTXViR1Y0WlhJdWVYbHNiRzlqSUQw
Z2UzMDdYRzRnSUNBZ2RtRnlJSGw1Ykc5aklEMGdkR2hwY3k1c1pYaGxjaTU1ZVd4c2IyTTdYRzRn
SUNBZ2JITjBZV05yTG5CMWMyZ29lWGxzYjJNcE8xeHVJQ0FnSUhaaGNpQnlZVzVuWlhNZ1BTQjBh
R2x6TG14bGVHVnlMbTl3ZEdsdmJuTWdKaVlnZEdocGN5NXNaWGhsY2k1dmNIUnBiMjV6TG5KaGJt
ZGxjenRjYmlBZ0lDQnBaaUFvZEhsd1pXOW1JSFJvYVhNdWVYa3VjR0Z5YzJWRmNuSnZjaUE5UFQw
Z1hDSm1kVzVqZEdsdmJsd2lLVnh1SUNBZ0lDQWdJQ0IwYUdsekxuQmhjbk5sUlhKeWIzSWdQU0Iw
YUdsekxubDVMbkJoY25ObFJYSnliM0k3WEc0Z0lDQWdablZ1WTNScGIyNGdjRzl3VTNSaFkyc29i
aWtnZTF4dUlDQWdJQ0FnSUNCemRHRmpheTVzWlc1bmRHZ2dQU0J6ZEdGamF5NXNaVzVuZEdnZ0xT
QXlJQ29nYmp0Y2JpQWdJQ0FnSUNBZ2RuTjBZV05yTG14bGJtZDBhQ0E5SUhaemRHRmpheTVzWlc1
bmRHZ2dMU0J1TzF4dUlDQWdJQ0FnSUNCc2MzUmhZMnN1YkdWdVozUm9JRDBnYkhOMFlXTnJMbXhs
Ym1kMGFDQXRJRzQ3WEc0Z0lDQWdmVnh1SUNBZ0lHWjFibU4wYVc5dUlHeGxlQ2dwSUh0Y2JpQWdJ
Q0FnSUNBZ2RtRnlJSFJ2YTJWdU8xeHVJQ0FnSUNBZ0lDQjBiMnRsYmlBOUlITmxiR1l1YkdWNFpY
SXViR1Y0S0NrZ2ZId2dNVHRjYmlBZ0lDQWdJQ0FnYVdZZ0tIUjVjR1Z2WmlCMGIydGxiaUFoUFQw
Z1hDSnVkVzFpWlhKY0lpa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2RHOXJaVzRnUFNCelpXeG1Mbk41
YldKdmJITmZXM1J2YTJWdVhTQjhmQ0IwYjJ0bGJqdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJ
Q0J5WlhSMWNtNGdkRzlyWlc0N1hHNGdJQ0FnZlZ4dUlDQWdJSFpoY2lCemVXMWliMndzSUhCeVpV
VnljbTl5VTNsdFltOXNMQ0J6ZEdGMFpTd2dZV04wYVc5dUxDQmhMQ0J5TENCNWVYWmhiQ0E5SUh0
OUxDQndMQ0JzWlc0c0lHNWxkMU4wWVhSbExDQmxlSEJsWTNSbFpEdGNiaUFnSUNCM2FHbHNaU0Fv
ZEhKMVpTa2dlMXh1SUNBZ0lDQWdJQ0J6ZEdGMFpTQTlJSE4wWVdOclczTjBZV05yTG14bGJtZDBh
Q0F0SURGZE8xeHVJQ0FnSUNBZ0lDQnBaaUFvZEdocGN5NWtaV1poZFd4MFFXTjBhVzl1YzF0emRH
RjBaVjBwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR0ZqZEdsdmJpQTlJSFJvYVhNdVpHVm1ZWFZzZEVG
amRHbHZibk5iYzNSaGRHVmRPMXh1SUNBZ0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0Fn
SUNBZ2FXWWdLSE41YldKdmJDQTlQVDBnYm5Wc2JDQjhmQ0IwZVhCbGIyWWdjM2x0WW05c0lEMDlJ
RndpZFc1a1pXWnBibVZrWENJcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnplVzFpYjJ3Z1BT
QnNaWGdvS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lHRmpkR2x2YmlB
OUlIUmhZbXhsVzNOMFlYUmxYU0FtSmlCMFlXSnNaVnR6ZEdGMFpWMWJjM2x0WW05c1hUdGNiaUFn
SUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0JwWmlBb2RIbHdaVzltSUdGamRHbHZiaUE5UFQwZ1hDSjFi
bVJsWm1sdVpXUmNJaUI4ZkNBaFlXTjBhVzl1TG14bGJtZDBhQ0I4ZkNBaFlXTjBhVzl1V3pCZEtT
QjdYRzRnSUNBZ0lDQWdJQ0FnSUNCMllYSWdaWEp5VTNSeUlEMGdYQ0pjSWp0Y2JpQWdJQ0FnSUNB
Z0lDQWdJR2xtSUNnaGNtVmpiM1psY21sdVp5a2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR1Y0
Y0dWamRHVmtJRDBnVzEwN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1ptOXlJQ2h3SUdsdUlIUmhZ
bXhsVzNOMFlYUmxYU2xjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLSFJvYVhNdWRH
VnliV2x1WVd4elgxdHdYU0FtSmlCd0lENGdNaWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNB
Z0lDQWdJQ0FnWlhod1pXTjBaV1F1Y0hWemFDaGNJaWRjSWlBcklIUm9hWE11ZEdWeWJXbHVZV3h6
WDF0d1hTQXJJRndpSjF3aUtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJ
Q0FnSUNBZ0lDQWdJQ0FnSUdsbUlDaDBhR2x6TG14bGVHVnlMbk5vYjNkUWIzTnBkR2x2YmlrZ2Ux
eHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JsY25KVGRISWdQU0JjSWxCaGNuTmxJR1Z5Y205
eUlHOXVJR3hwYm1VZ1hDSWdLeUFvZVhsc2FXNWxibThnS3lBeEtTQXJJRndpT2x4Y2Jsd2lJQ3Nn
ZEdocGN5NXNaWGhsY2k1emFHOTNVRzl6YVhScGIyNG9LU0FySUZ3aVhGeHVSWGh3WldOMGFXNW5J
RndpSUNzZ1pYaHdaV04wWldRdWFtOXBiaWhjSWl3Z1hDSXBJQ3NnWENJc0lHZHZkQ0FuWENJZ0t5
QW9kR2hwY3k1MFpYSnRhVzVoYkhOZlczTjViV0p2YkYwZ2ZId2djM2x0WW05c0tTQXJJRndpSjF3
aU8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0Fn
SUNBZ0lDQWdJR1Z5Y2xOMGNpQTlJRndpVUdGeWMyVWdaWEp5YjNJZ2IyNGdiR2x1WlNCY0lpQXJJ
Q2g1ZVd4cGJtVnVieUFySURFcElDc2dYQ0k2SUZWdVpYaHdaV04wWldRZ1hDSWdLeUFvYzNsdFlt
OXNJRDA5SURFL1hDSmxibVFnYjJZZ2FXNXdkWFJjSWpwY0lpZGNJaUFySUNoMGFHbHpMblJsY20x
cGJtRnNjMTliYzNsdFltOXNYU0I4ZkNCemVXMWliMndwSUNzZ1hDSW5YQ0lwTzF4dUlDQWdJQ0Fn
SUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMGFHbHpMbkJoY25ObFJYSnli
M0lvWlhKeVUzUnlMQ0I3ZEdWNGREb2dkR2hwY3k1c1pYaGxjaTV0WVhSamFDd2dkRzlyWlc0NklI
Um9hWE11ZEdWeWJXbHVZV3h6WDF0emVXMWliMnhkSUh4OElITjViV0p2YkN3Z2JHbHVaVG9nZEdo
cGN5NXNaWGhsY2k1NWVXeHBibVZ1Ynl3Z2JHOWpPaUI1ZVd4dll5d2daWGh3WldOMFpXUTZJR1Y0
Y0dWamRHVmtmU2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJ
Q0FnYVdZZ0tHRmpkR2x2Ymxzd1hTQnBibk4wWVc1alpXOW1JRUZ5Y21GNUlDWW1JR0ZqZEdsdmJp
NXNaVzVuZEdnZ1BpQXhLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dSWEp5YjNJ
b1hDSlFZWEp6WlNCRmNuSnZjam9nYlhWc2RHbHdiR1VnWVdOMGFXOXVjeUJ3YjNOemFXSnNaU0Jo
ZENCemRHRjBaVG9nWENJZ0t5QnpkR0YwWlNBcklGd2lMQ0IwYjJ0bGJqb2dYQ0lnS3lCemVXMWli
MndwTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lITjNhWFJqYUNBb1lXTjBhVzl1V3pCZEtT
QjdYRzRnSUNBZ0lDQWdJR05oYzJVZ01UcGNiaUFnSUNBZ0lDQWdJQ0FnSUhOMFlXTnJMbkIxYzJn
b2MzbHRZbTlzS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSFp6ZEdGamF5NXdkWE5vS0hSb2FYTXViR1Y0
WlhJdWVYbDBaWGgwS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJR3h6ZEdGamF5NXdkWE5vS0hSb2FYTXVi
R1Y0WlhJdWVYbHNiRzlqS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSE4wWVdOckxuQjFjMmdvWVdOMGFX
OXVXekZkS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSE41YldKdmJDQTlJRzUxYkd3N1hHNGdJQ0FnSUNB
Z0lDQWdJQ0JwWmlBb0lYQnlaVVZ5Y205eVUzbHRZbTlzS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0Fn
SUNBZ2VYbHNaVzVuSUQwZ2RHaHBjeTVzWlhobGNpNTVlV3hsYm1jN1hHNGdJQ0FnSUNBZ0lDQWdJ
Q0FnSUNBZ2VYbDBaWGgwSUQwZ2RHaHBjeTVzWlhobGNpNTVlWFJsZUhRN1hHNGdJQ0FnSUNBZ0lD
QWdJQ0FnSUNBZ2VYbHNhVzVsYm04Z1BTQjBhR2x6TG14bGVHVnlMbmw1YkdsdVpXNXZPMXh1SUNB
Z0lDQWdJQ0FnSUNBZ0lDQWdJSGw1Ykc5aklEMGdkR2hwY3k1c1pYaGxjaTU1ZVd4c2IyTTdYRzRn
SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0hKbFkyOTJaWEpwYm1jZ1BpQXdLVnh1SUNBZ0lDQWdJ
Q0FnSUNBZ0lDQWdJQ0FnSUNCeVpXTnZkbVZ5YVc1bkxTMDdYRzRnSUNBZ0lDQWdJQ0FnSUNCOUlH
VnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhONWJXSnZiQ0E5SUhCeVpVVnljbTl5VTNs
dFltOXNPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEJ5WlVWeWNtOXlVM2x0WW05c0lEMGdiblZz
YkR0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJ
Q0FnSUNCallYTmxJREk2WEc0Z0lDQWdJQ0FnSUNBZ0lDQnNaVzRnUFNCMGFHbHpMbkJ5YjJSMVkz
UnBiMjV6WDF0aFkzUnBiMjViTVYxZFd6RmRPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2VYbDJZV3d1SkNB
OUlIWnpkR0ZqYTF0MmMzUmhZMnN1YkdWdVozUm9JQzBnYkdWdVhUdGNiaUFnSUNBZ0lDQWdJQ0Fn
SUhsNWRtRnNMbDhrSUQwZ2UyWnBjbk4wWDJ4cGJtVTZJR3h6ZEdGamExdHNjM1JoWTJzdWJHVnVa
M1JvSUMwZ0tHeGxiaUI4ZkNBeEtWMHVabWx5YzNSZmJHbHVaU3dnYkdGemRGOXNhVzVsT2lCc2Mz
UmhZMnRiYkhOMFlXTnJMbXhsYm1kMGFDQXRJREZkTG14aGMzUmZiR2x1WlN3Z1ptbHljM1JmWTI5
c2RXMXVPaUJzYzNSaFkydGJiSE4wWVdOckxteGxibWQwYUNBdElDaHNaVzRnZkh3Z01TbGRMbVpw
Y25OMFgyTnZiSFZ0Yml3Z2JHRnpkRjlqYjJ4MWJXNDZJR3h6ZEdGamExdHNjM1JoWTJzdWJHVnVa
M1JvSUMwZ01WMHViR0Z6ZEY5amIyeDFiVzU5TzF4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0hKaGJt
ZGxjeWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhsNWRtRnNMbDhrTG5KaGJtZGxJRDBnVzJ4
emRHRmphMXRzYzNSaFkyc3ViR1Z1WjNSb0lDMGdLR3hsYmlCOGZDQXhLVjB1Y21GdVoyVmJNRjBz
SUd4emRHRmphMXRzYzNSaFkyc3ViR1Z1WjNSb0lDMGdNVjB1Y21GdVoyVmJNVjFkTzF4dUlDQWdJ
Q0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ2NpQTlJSFJvYVhNdWNHVnlabTl5YlVGamRH
bHZiaTVqWVd4c0tIbDVkbUZzTENCNWVYUmxlSFFzSUhsNWJHVnVaeXdnZVhsc2FXNWxibThzSUhS
b2FYTXVlWGtzSUdGamRHbHZibHN4WFN3Z2RuTjBZV05yTENCc2MzUmhZMnNwTzF4dUlDQWdJQ0Fn
SUNBZ0lDQWdhV1lnS0hSNWNHVnZaaUJ5SUNFOVBTQmNJblZ1WkdWbWFXNWxaRndpS1NCN1hHNGdJ
Q0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhJN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lD
QWdJQ0FnSUNBZ0lDQnBaaUFvYkdWdUtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjM1JoWTJz
Z1BTQnpkR0ZqYXk1emJHbGpaU2d3TENBdE1TQXFJR3hsYmlBcUlESXBPMXh1SUNBZ0lDQWdJQ0Fn
SUNBZ0lDQWdJSFp6ZEdGamF5QTlJSFp6ZEdGamF5NXpiR2xqWlNnd0xDQXRNU0FxSUd4bGJpazdY
RzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdiSE4wWVdOcklEMGdiSE4wWVdOckxuTnNhV05sS0RBc0lD
MHhJQ29nYkdWdUtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJSE4wWVdO
ckxuQjFjMmdvZEdocGN5NXdjbTlrZFdOMGFXOXVjMTliWVdOMGFXOXVXekZkWFZzd1hTazdYRzRn
SUNBZ0lDQWdJQ0FnSUNCMmMzUmhZMnN1Y0hWemFDaDVlWFpoYkM0a0tUdGNiaUFnSUNBZ0lDQWdJ
Q0FnSUd4emRHRmpheTV3ZFhOb0tIbDVkbUZzTGw4a0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUc1bGQx
TjBZWFJsSUQwZ2RHRmliR1ZiYzNSaFkydGJjM1JoWTJzdWJHVnVaM1JvSUMwZ01sMWRXM04wWVdO
clczTjBZV05yTG14bGJtZDBhQ0F0SURGZFhUdGNiaUFnSUNBZ0lDQWdJQ0FnSUhOMFlXTnJMbkIx
YzJnb2JtVjNVM1JoZEdVcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnWW5KbFlXczdYRzRnSUNBZ0lDQWdJ
R05oYzJVZ016cGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUIwY25WbE8xeHVJQ0FnSUNBZ0lD
QjlYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUIwY25WbE8xeHVmVnh1ZlR0Y2JpOHFJRXBwYzI5
dUlHZGxibVZ5WVhSbFpDQnNaWGhsY2lBcUwxeHVkbUZ5SUd4bGVHVnlJRDBnS0daMWJtTjBhVzl1
S0NsN1hHNTJZWElnYkdWNFpYSWdQU0FvZTBWUFJqb3hMRnh1Y0dGeWMyVkZjbkp2Y2pwbWRXNWpk
R2x2YmlCd1lYSnpaVVZ5Y205eUtITjBjaXdnYUdGemFDa2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb2RH
aHBjeTU1ZVM1d1lYSnpaWElwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSFJvYVhNdWVYa3VjR0Z5YzJW
eUxuQmhjbk5sUlhKeWIzSW9jM1J5TENCb1lYTm9LVHRjYmlBZ0lDQWdJQ0FnZlNCbGJITmxJSHRj
YmlBZ0lDQWdJQ0FnSUNBZ0lIUm9jbTkzSUc1bGR5QkZjbkp2Y2loemRISXBPMXh1SUNBZ0lDQWdJ
Q0I5WEc0Z0lDQWdmU3hjYm5ObGRFbHVjSFYwT21aMWJtTjBhVzl1SUNocGJuQjFkQ2tnZTF4dUlD
QWdJQ0FnSUNCMGFHbHpMbDlwYm5CMWRDQTlJR2x1Y0hWME8xeHVJQ0FnSUNBZ0lDQjBhR2x6TGw5
dGIzSmxJRDBnZEdocGN5NWZiR1Z6Y3lBOUlIUm9hWE11Wkc5dVpTQTlJR1poYkhObE8xeHVJQ0Fn
SUNBZ0lDQjBhR2x6TG5sNWJHbHVaVzV2SUQwZ2RHaHBjeTU1ZVd4bGJtY2dQU0F3TzF4dUlDQWdJ
Q0FnSUNCMGFHbHpMbmw1ZEdWNGRDQTlJSFJvYVhNdWJXRjBZMmhsWkNBOUlIUm9hWE11YldGMFky
Z2dQU0FuSnp0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTVqYjI1a2FYUnBiMjVUZEdGamF5QTlJRnNuU1U1
SlZFbEJUQ2RkTzF4dUlDQWdJQ0FnSUNCMGFHbHpMbmw1Ykd4dll5QTlJSHRtYVhKemRGOXNhVzVs
T2pFc1ptbHljM1JmWTI5c2RXMXVPakFzYkdGemRGOXNhVzVsT2pFc2JHRnpkRjlqYjJ4MWJXNDZN
SDA3WEc0Z0lDQWdJQ0FnSUdsbUlDaDBhR2x6TG05d2RHbHZibk11Y21GdVoyVnpLU0IwYUdsekxu
bDViR3h2WXk1eVlXNW5aU0E5SUZzd0xEQmRPMXh1SUNBZ0lDQWdJQ0IwYUdsekxtOW1abk5sZENB
OUlEQTdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQjBhR2x6TzF4dUlDQWdJSDBzWEc1cGJuQjFkRHBt
ZFc1amRHbHZiaUFvS1NCN1hHNGdJQ0FnSUNBZ0lIWmhjaUJqYUNBOUlIUm9hWE11WDJsdWNIVjBX
ekJkTzF4dUlDQWdJQ0FnSUNCMGFHbHpMbmw1ZEdWNGRDQXJQU0JqYUR0Y2JpQWdJQ0FnSUNBZ2RH
aHBjeTU1ZVd4bGJtY3JLenRjYmlBZ0lDQWdJQ0FnZEdocGN5NXZabVp6WlhRckt6dGNiaUFnSUNB
Z0lDQWdkR2hwY3k1dFlYUmphQ0FyUFNCamFEdGNiaUFnSUNBZ0lDQWdkR2hwY3k1dFlYUmphR1Zr
SUNzOUlHTm9PMXh1SUNBZ0lDQWdJQ0IyWVhJZ2JHbHVaWE1nUFNCamFDNXRZWFJqYUNndktEODZY
Rnh5WEZ4dVAzeGNYRzRwTGlvdlp5azdYRzRnSUNBZ0lDQWdJR2xtSUNoc2FXNWxjeWtnZTF4dUlD
QWdJQ0FnSUNBZ0lDQWdkR2hwY3k1NWVXeHBibVZ1Ynlzck8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZEdo
cGN5NTVlV3hzYjJNdWJHRnpkRjlzYVc1bEt5czdYRzRnSUNBZ0lDQWdJSDBnWld4elpTQjdYRzRn
SUNBZ0lDQWdJQ0FnSUNCMGFHbHpMbmw1Ykd4dll5NXNZWE4wWDJOdmJIVnRiaXNyTzF4dUlDQWdJ
Q0FnSUNCOVhHNGdJQ0FnSUNBZ0lHbG1JQ2gwYUdsekxtOXdkR2x2Ym5NdWNtRnVaMlZ6S1NCMGFH
bHpMbmw1Ykd4dll5NXlZVzVuWlZzeFhTc3JPMXh1WEc0Z0lDQWdJQ0FnSUhSb2FYTXVYMmx1Y0hW
MElEMGdkR2hwY3k1ZmFXNXdkWFF1YzJ4cFkyVW9NU2s3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJq
YUR0Y2JpQWdJQ0I5TEZ4dWRXNXdkWFE2Wm5WdVkzUnBiMjRnS0dOb0tTQjdYRzRnSUNBZ0lDQWdJ
SFpoY2lCc1pXNGdQU0JqYUM1c1pXNW5kR2c3WEc0Z0lDQWdJQ0FnSUhaaGNpQnNhVzVsY3lBOUlH
Tm9Mbk53YkdsMEtDOG9QenBjWEhKY1hHNC9mRnhjYmlrdlp5azdYRzVjYmlBZ0lDQWdJQ0FnZEdo
cGN5NWZhVzV3ZFhRZ1BTQmphQ0FySUhSb2FYTXVYMmx1Y0hWME8xeHVJQ0FnSUNBZ0lDQjBhR2x6
TG5sNWRHVjRkQ0E5SUhSb2FYTXVlWGwwWlhoMExuTjFZbk4wY2lnd0xDQjBhR2x6TG5sNWRHVjRk
QzVzWlc1bmRHZ3RiR1Z1TFRFcE8xeHVJQ0FnSUNBZ0lDQXZMM1JvYVhNdWVYbHNaVzVuSUMwOUlH
eGxianRjYmlBZ0lDQWdJQ0FnZEdocGN5NXZabVp6WlhRZ0xUMGdiR1Z1TzF4dUlDQWdJQ0FnSUNC
MllYSWdiMnhrVEdsdVpYTWdQU0IwYUdsekxtMWhkR05vTG5Od2JHbDBLQzhvUHpwY1hISmNYRzQv
ZkZ4Y2Jpa3ZaeWs3WEc0Z0lDQWdJQ0FnSUhSb2FYTXViV0YwWTJnZ1BTQjBhR2x6TG0xaGRHTm9M
bk4xWW5OMGNpZ3dMQ0IwYUdsekxtMWhkR05vTG14bGJtZDBhQzB4S1R0Y2JpQWdJQ0FnSUNBZ2RH
aHBjeTV0WVhSamFHVmtJRDBnZEdocGN5NXRZWFJqYUdWa0xuTjFZbk4wY2lnd0xDQjBhR2x6TG0x
aGRHTm9aV1F1YkdWdVozUm9MVEVwTzF4dVhHNGdJQ0FnSUNBZ0lHbG1JQ2hzYVc1bGN5NXNaVzVu
ZEdndE1Ta2dkR2hwY3k1NWVXeHBibVZ1YnlBdFBTQnNhVzVsY3k1c1pXNW5kR2d0TVR0Y2JpQWdJ
Q0FnSUNBZ2RtRnlJSElnUFNCMGFHbHpMbmw1Ykd4dll5NXlZVzVuWlR0Y2JseHVJQ0FnSUNBZ0lD
QjBhR2x6TG5sNWJHeHZZeUE5SUh0bWFYSnpkRjlzYVc1bE9pQjBhR2x6TG5sNWJHeHZZeTVtYVhK
emRGOXNhVzVsTEZ4dUlDQWdJQ0FnSUNBZ0lHeGhjM1JmYkdsdVpUb2dkR2hwY3k1NWVXeHBibVZ1
YnlzeExGeHVJQ0FnSUNBZ0lDQWdJR1pwY25OMFgyTnZiSFZ0YmpvZ2RHaHBjeTU1ZVd4c2IyTXVa
bWx5YzNSZlkyOXNkVzF1TEZ4dUlDQWdJQ0FnSUNBZ0lHeGhjM1JmWTI5c2RXMXVPaUJzYVc1bGN5
QS9YRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDaHNhVzVsY3k1c1pXNW5kR2dnUFQwOUlHOXNaRXhwYm1W
ekxteGxibWQwYUNBL0lIUm9hWE11ZVhsc2JHOWpMbVpwY25OMFgyTnZiSFZ0YmlBNklEQXBJQ3Nn
YjJ4a1RHbHVaWE5iYjJ4a1RHbHVaWE11YkdWdVozUm9JQzBnYkdsdVpYTXViR1Z1WjNSb1hTNXNa
VzVuZEdnZ0xTQnNhVzVsYzFzd1hTNXNaVzVuZEdnNlhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUhSb2FY
TXVlWGxzYkc5akxtWnBjbk4wWDJOdmJIVnRiaUF0SUd4bGJseHVJQ0FnSUNBZ0lDQWdJSDA3WEc1
Y2JpQWdJQ0FnSUNBZ2FXWWdLSFJvYVhNdWIzQjBhVzl1Y3k1eVlXNW5aWE1wSUh0Y2JpQWdJQ0Fn
SUNBZ0lDQWdJSFJvYVhNdWVYbHNiRzlqTG5KaGJtZGxJRDBnVzNKYk1GMHNJSEpiTUYwZ0t5QjBh
R2x6TG5sNWJHVnVaeUF0SUd4bGJsMDdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnY21WMGRY
SnVJSFJvYVhNN1hHNGdJQ0FnZlN4Y2JtMXZjbVU2Wm5WdVkzUnBiMjRnS0NrZ2UxeHVJQ0FnSUNB
Z0lDQjBhR2x6TGw5dGIzSmxJRDBnZEhKMVpUdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlIUm9hWE03
WEc0Z0lDQWdmU3hjYm14bGMzTTZablZ1WTNScGIyNGdLRzRwSUh0Y2JpQWdJQ0FnSUNBZ2RHaHBj
eTUxYm5CMWRDaDBhR2x6TG0xaGRHTm9Mbk5zYVdObEtHNHBLVHRjYmlBZ0lDQjlMRnh1Y0dGemRF
bHVjSFYwT21aMWJtTjBhVzl1SUNncElIdGNiaUFnSUNBZ0lDQWdkbUZ5SUhCaGMzUWdQU0IwYUds
ekxtMWhkR05vWldRdWMzVmljM1J5S0RBc0lIUm9hWE11YldGMFkyaGxaQzVzWlc1bmRHZ2dMU0Iw
YUdsekxtMWhkR05vTG14bGJtZDBhQ2s3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUFvY0dGemRDNXNa
VzVuZEdnZ1BpQXlNQ0EvSUNjdUxpNG5PaWNuS1NBcklIQmhjM1F1YzNWaWMzUnlLQzB5TUNrdWNt
VndiR0ZqWlNndlhGeHVMMmNzSUZ3aVhDSXBPMXh1SUNBZ0lIMHNYRzUxY0dOdmJXbHVaMGx1Y0hW
ME9tWjFibU4wYVc5dUlDZ3BJSHRjYmlBZ0lDQWdJQ0FnZG1GeUlHNWxlSFFnUFNCMGFHbHpMbTFo
ZEdOb08xeHVJQ0FnSUNBZ0lDQnBaaUFvYm1WNGRDNXNaVzVuZEdnZ1BDQXlNQ2tnZTF4dUlDQWdJ
Q0FnSUNBZ0lDQWdibVY0ZENBclBTQjBhR2x6TGw5cGJuQjFkQzV6ZFdKemRISW9NQ3dnTWpBdGJt
VjRkQzVzWlc1bmRHZ3BPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUFvYm1W
NGRDNXpkV0p6ZEhJb01Dd3lNQ2tyS0c1bGVIUXViR1Z1WjNSb0lENGdNakFnUHlBbkxpNHVKem9u
SnlrcExuSmxjR3hoWTJVb0wxeGNiaTluTENCY0lsd2lLVHRjYmlBZ0lDQjlMRnh1YzJodmQxQnZj
MmwwYVc5dU9tWjFibU4wYVc5dUlDZ3BJSHRjYmlBZ0lDQWdJQ0FnZG1GeUlIQnlaU0E5SUhSb2FY
TXVjR0Z6ZEVsdWNIVjBLQ2s3WEc0Z0lDQWdJQ0FnSUhaaGNpQmpJRDBnYm1WM0lFRnljbUY1S0hC
eVpTNXNaVzVuZEdnZ0t5QXhLUzVxYjJsdUtGd2lMVndpS1R0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1
SUhCeVpTQXJJSFJvYVhNdWRYQmpiMjFwYm1kSmJuQjFkQ2dwSUNzZ1hDSmNYRzVjSWlBcklHTXJY
Q0plWENJN1hHNGdJQ0FnZlN4Y2JtNWxlSFE2Wm5WdVkzUnBiMjRnS0NrZ2UxeHVJQ0FnSUNBZ0lD
QnBaaUFvZEdocGN5NWtiMjVsS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdkR2hwY3k1
RlQwWTdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnYVdZZ0tDRjBhR2x6TGw5cGJuQjFkQ2tn
ZEdocGN5NWtiMjVsSUQwZ2RISjFaVHRjYmx4dUlDQWdJQ0FnSUNCMllYSWdkRzlyWlc0c1hHNGdJ
Q0FnSUNBZ0lDQWdJQ0J0WVhSamFDeGNiaUFnSUNBZ0lDQWdJQ0FnSUhSbGJYQk5ZWFJqYUN4Y2Jp
QWdJQ0FnSUNBZ0lDQWdJR2x1WkdWNExGeHVJQ0FnSUNBZ0lDQWdJQ0FnWTI5c0xGeHVJQ0FnSUNB
Z0lDQWdJQ0FnYkdsdVpYTTdYRzRnSUNBZ0lDQWdJR2xtSUNnaGRHaHBjeTVmYlc5eVpTa2dlMXh1
SUNBZ0lDQWdJQ0FnSUNBZ2RHaHBjeTU1ZVhSbGVIUWdQU0FuSnp0Y2JpQWdJQ0FnSUNBZ0lDQWdJ
SFJvYVhNdWJXRjBZMmdnUFNBbkp6dGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0IyWVhJZ2Nu
VnNaWE1nUFNCMGFHbHpMbDlqZFhKeVpXNTBVblZzWlhNb0tUdGNiaUFnSUNBZ0lDQWdabTl5SUNo
MllYSWdhVDB3TzJrZ1BDQnlkV3hsY3k1c1pXNW5kR2c3SUdrckt5a2dlMXh1SUNBZ0lDQWdJQ0Fn
SUNBZ2RHVnRjRTFoZEdOb0lEMGdkR2hwY3k1ZmFXNXdkWFF1YldGMFkyZ29kR2hwY3k1eWRXeGxj
MXR5ZFd4bGMxdHBYVjBwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0hSbGJYQk5ZWFJqYUNBbUpp
QW9JVzFoZEdOb0lIeDhJSFJsYlhCTllYUmphRnN3WFM1c1pXNW5kR2dnUGlCdFlYUmphRnN3WFM1
c1pXNW5kR2dwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2JXRjBZMmdnUFNCMFpXMXdUV0Yw
WTJnN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXNWtaWGdnUFNCcE8xeHVJQ0FnSUNBZ0lDQWdJ
Q0FnSUNBZ0lHbG1JQ2doZEdocGN5NXZjSFJwYjI1ekxtWnNaWGdwSUdKeVpXRnJPMXh1SUNBZ0lD
QWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJR2xtSUNodFlYUmphQ2tnZTF4
dUlDQWdJQ0FnSUNBZ0lDQWdiR2x1WlhNZ1BTQnRZWFJqYUZzd1hTNXRZWFJqYUNndktEODZYRnh5
WEZ4dVAzeGNYRzRwTGlvdlp5azdYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9iR2x1WlhNcElIUm9h
WE11ZVhsc2FXNWxibThnS3owZ2JHbHVaWE11YkdWdVozUm9PMXh1SUNBZ0lDQWdJQ0FnSUNBZ2RH
aHBjeTU1ZVd4c2IyTWdQU0I3Wm1seWMzUmZiR2x1WlRvZ2RHaHBjeTU1ZVd4c2IyTXViR0Z6ZEY5
c2FXNWxMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYkdGemRGOXNhVzVs
T2lCMGFHbHpMbmw1YkdsdVpXNXZLekVzWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJ
Q0FnSUNCbWFYSnpkRjlqYjJ4MWJXNDZJSFJvYVhNdWVYbHNiRzlqTG14aGMzUmZZMjlzZFcxdUxG
eHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdiR0Z6ZEY5amIyeDFiVzQ2SUd4
cGJtVnpJRDhnYkdsdVpYTmJiR2x1WlhNdWJHVnVaM1JvTFRGZExteGxibWQwYUMxc2FXNWxjMXRz
YVc1bGN5NXNaVzVuZEdndE1WMHViV0YwWTJnb0wxeGNjajljWEc0L0x5bGJNRjB1YkdWdVozUm9J
RG9nZEdocGN5NTVlV3hzYjJNdWJHRnpkRjlqYjJ4MWJXNGdLeUJ0WVhSamFGc3dYUzVzWlc1bmRH
aDlPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2RHaHBjeTU1ZVhSbGVIUWdLejBnYldGMFkyaGJNRjA3WEc0
Z0lDQWdJQ0FnSUNBZ0lDQjBhR2x6TG0xaGRHTm9JQ3M5SUcxaGRHTm9XekJkTzF4dUlDQWdJQ0Fn
SUNBZ0lDQWdkR2hwY3k1dFlYUmphR1Z6SUQwZ2JXRjBZMmc3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjBh
R2x6TG5sNWJHVnVaeUE5SUhSb2FYTXVlWGwwWlhoMExteGxibWQwYUR0Y2JpQWdJQ0FnSUNBZ0lD
QWdJR2xtSUNoMGFHbHpMbTl3ZEdsdmJuTXVjbUZ1WjJWektTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNB
Z0lDQWdkR2hwY3k1NWVXeHNiMk11Y21GdVoyVWdQU0JiZEdocGN5NXZabVp6WlhRc0lIUm9hWE11
YjJabWMyVjBJQ3M5SUhSb2FYTXVlWGxzWlc1blhUdGNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJ
Q0FnSUNBZ0lDQWdJSFJvYVhNdVgyMXZjbVVnUFNCbVlXeHpaVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lI
Um9hWE11WDJsdWNIVjBJRDBnZEdocGN5NWZhVzV3ZFhRdWMyeHBZMlVvYldGMFkyaGJNRjB1YkdW
dVozUm9LVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIUm9hWE11YldGMFkyaGxaQ0FyUFNCdFlYUmphRnN3
WFR0Y2JpQWdJQ0FnSUNBZ0lDQWdJSFJ2YTJWdUlEMGdkR2hwY3k1d1pYSm1iM0p0UVdOMGFXOXVM
bU5oYkd3b2RHaHBjeXdnZEdocGN5NTVlU3dnZEdocGN5d2djblZzWlhOYmFXNWtaWGhkTEhSb2FY
TXVZMjl1WkdsMGFXOXVVM1JoWTJ0YmRHaHBjeTVqYjI1a2FYUnBiMjVUZEdGamF5NXNaVzVuZEdn
dE1WMHBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLSFJvYVhNdVpHOXVaU0FtSmlCMGFHbHpMbDlw
Ym5CMWRDa2dkR2hwY3k1a2IyNWxJRDBnWm1Gc2MyVTdYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9k
RzlyWlc0cElISmxkSFZ5YmlCMGIydGxianRjYmlBZ0lDQWdJQ0FnSUNBZ0lHVnNjMlVnY21WMGRY
SnVPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUdsbUlDaDBhR2x6TGw5cGJuQjFkQ0E5UFQw
Z1hDSmNJaWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlIUm9hWE11UlU5R08xeHVJQ0Fn
SUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJSFJvYVhNdWNHRnlj
MlZGY25KdmNpZ25UR1Y0YVdOaGJDQmxjbkp2Y2lCdmJpQnNhVzVsSUNjcktIUm9hWE11ZVhsc2FX
NWxibThyTVNrckp5NGdWVzV5WldOdloyNXBlbVZrSUhSbGVIUXVYRnh1Snl0MGFHbHpMbk5vYjNk
UWIzTnBkR2x2YmlncExGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I3ZEdWNGREb2dYQ0pj
SWl3Z2RHOXJaVzQ2SUc1MWJHd3NJR3hwYm1VNklIUm9hWE11ZVhsc2FXNWxibTk5S1R0Y2JpQWdJ
Q0FnSUNBZ2ZWeHVJQ0FnSUgwc1hHNXNaWGc2Wm5WdVkzUnBiMjRnYkdWNEtDa2dlMXh1SUNBZ0lD
QWdJQ0IyWVhJZ2NpQTlJSFJvYVhNdWJtVjRkQ2dwTzF4dUlDQWdJQ0FnSUNCcFppQW9kSGx3Wlc5
bUlISWdJVDA5SUNkMWJtUmxabWx1WldRbktTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRn
Y2p0Y2JpQWdJQ0FnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQjBh
R2x6TG14bGVDZ3BPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdmU3hjYm1KbFoybHVPbVoxYm1OMGFX
OXVJR0psWjJsdUtHTnZibVJwZEdsdmJpa2dlMXh1SUNBZ0lDQWdJQ0IwYUdsekxtTnZibVJwZEds
dmJsTjBZV05yTG5CMWMyZ29ZMjl1WkdsMGFXOXVLVHRjYmlBZ0lDQjlMRnh1Y0c5d1UzUmhkR1U2
Wm5WdVkzUnBiMjRnY0c5d1UzUmhkR1VvS1NCN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCMGFHbHpM
bU52Ym1ScGRHbHZibE4wWVdOckxuQnZjQ2dwTzF4dUlDQWdJSDBzWEc1ZlkzVnljbVZ1ZEZKMWJH
VnpPbVoxYm1OMGFXOXVJRjlqZFhKeVpXNTBVblZzWlhNb0tTQjdYRzRnSUNBZ0lDQWdJSEpsZEhW
eWJpQjBhR2x6TG1OdmJtUnBkR2x2Ym5OYmRHaHBjeTVqYjI1a2FYUnBiMjVUZEdGamExdDBhR2x6
TG1OdmJtUnBkR2x2YmxOMFlXTnJMbXhsYm1kMGFDMHhYVjB1Y25Wc1pYTTdYRzRnSUNBZ2ZTeGNi
blJ2Y0ZOMFlYUmxPbVoxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUhSb2FY
TXVZMjl1WkdsMGFXOXVVM1JoWTJ0YmRHaHBjeTVqYjI1a2FYUnBiMjVUZEdGamF5NXNaVzVuZEdn
dE1sMDdYRzRnSUNBZ2ZTeGNibkIxYzJoVGRHRjBaVHBtZFc1amRHbHZiaUJpWldkcGJpaGpiMjVr
YVhScGIyNHBJSHRjYmlBZ0lDQWdJQ0FnZEdocGN5NWlaV2RwYmloamIyNWthWFJwYjI0cE8xeHVJ
Q0FnSUgxOUtUdGNibXhsZUdWeUxtOXdkR2x2Ym5NZ1BTQjdmVHRjYm14bGVHVnlMbkJsY21admNt
MUJZM1JwYjI0Z1BTQm1kVzVqZEdsdmJpQmhibTl1ZVcxdmRYTW9lWGtzZVhsZkxDUmhkbTlwWkds
dVoxOXVZVzFsWDJOdmJHeHBjMmx2Ym5Nc1dWbGZVMVJCVWxSY2JpOHFLaThwSUh0Y2JseHVYRzVt
ZFc1amRHbHZiaUJ6ZEhKcGNDaHpkR0Z5ZEN3Z1pXNWtLU0I3WEc0Z0lISmxkSFZ5YmlCNWVWOHVl
WGwwWlhoMElEMGdlWGxmTG5sNWRHVjRkQzV6ZFdKemRISW9jM1JoY25Rc0lIbDVYeTU1ZVd4bGJt
Y3RaVzVrS1R0Y2JuMWNibHh1WEc1MllYSWdXVmxUVkVGVVJUMVpXVjlUVkVGU1ZGeHVjM2RwZEdO
b0tDUmhkbTlwWkdsdVoxOXVZVzFsWDJOdmJHeHBjMmx2Ym5NcElIdGNibU5oYzJVZ01EcGNiaUFn
SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lvZVhsZkxubDVk
R1Y0ZEM1emJHbGpaU2d0TWlrZ1BUMDlJRndpWEZ4Y1hGeGNYRnhjSWlrZ2UxeHVJQ0FnSUNBZ0lD
QWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSE4wY21sd0tEQXNNU2s3WEc0
Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RHaHBjeTVp
WldkcGJpaGNJbTExWENJcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJ
Q0FnSUNBZ0lDQjlJR1ZzYzJVZ2FXWW9lWGxmTG5sNWRHVjRkQzV6YkdsalpTZ3RNU2tnUFQwOUlG
d2lYRnhjWEZ3aUtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNB
Z0lDQWdJQ0FnYzNSeWFYQW9NQ3d4S1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0Fn
SUNBZ0lDQWdJQ0FnSUNBZ0lDQjBhR2x6TG1KbFoybHVLRndpWlcxMVhDSXBPMXh1SUNBZ0lDQWdJ
Q0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lD
QWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhSb2FYTXVZbVZuYVc0
b1hDSnRkVndpS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0Fn
SUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBa
aWg1ZVY4dWVYbDBaWGgwS1NCeVpYUjFjbTRnTVRVN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lD
QWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCY2JtSnlaV0ZyTzF4dVkyRnpaU0F4T25KbGRIVnliaUF4TlR0
Y2JtSnlaV0ZyTzF4dVkyRnpaU0F5T2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0Fn
SUNBZ0lDQWdJQ0FnSUNCMGFHbHpMbkJ2Y0ZOMFlYUmxLQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJ
Q0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUF4TlR0Y2JpQWdJQ0FnSUNBZ0lD
QWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUZ4dVluSmxZV3M3WEc1allYTmxJRE02ZEdo
cGN5NWlaV2RwYmlnbmNtRjNKeWs3SUhKbGRIVnliaUF4TlR0Y2JtSnlaV0ZyTzF4dVkyRnpaU0Ew
T2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhSb2FYTXVj
Rzl3VTNSaGRHVW9LVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lD
QWdJQ0F2THlCVGFHOTFiR1FnWW1VZ2RYTnBibWNnWUhSb2FYTXVkRzl3VTNSaGRHVW9LV0FnWW1W
c2IzY3NJR0oxZENCcGRDQmpkWEp5Wlc1MGJIbGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0Fn
SUNBZ0lDQWdJQ0FnSUNBZ0lDQXZMeUJ5WlhSMWNtNXpJSFJvWlNCelpXTnZibVFnZEc5d0lHbHVj
M1JsWVdRZ2IyWWdkR2hsSUdacGNuTjBJSFJ2Y0M0Z1QzQmxibVZrSUdGdVhHNGdJQ0FnSUNBZ0lD
QWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0x5OGdhWE56ZFdVZ1lXSnZkWFFnYVhR
Z1lYUWdhSFIwY0hNNkx5OW5hWFJvZFdJdVkyOXRMM3BoWVdOb0wycHBjMjl1TDJsemMzVmxjeTh5
T1RGY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppQW9k
R2hwY3k1amIyNWthWFJwYjI1VGRHRmphMXQwYUdsekxtTnZibVJwZEdsdmJsTjBZV05yTG14bGJt
ZDBhQzB4WFNBOVBUMGdKM0poZHljcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNB
Z0lDQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQXhOVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0Fn
SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJ
Q0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZVhsZkxubDVkR1Y0ZENBOUlIbDVYeTU1ZVhSbGVI
UXVjM1ZpYzNSeUtEVXNJSGw1WHk1NWVXeGxibWN0T1NrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNB
Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z0owVk9SRjlTUVZkZlFreFBRMHNu
TzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJ
Q0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUZ4dVluSmxZV3M3WEc1allY
TmxJRFU2SUhKbGRIVnliaUF4TlRzZ1hHNWljbVZoYXp0Y2JtTmhjMlVnTmpwY2JpQWdkR2hwY3k1
d2IzQlRkR0YwWlNncE8xeHVJQ0J5WlhSMWNtNGdNVFE3WEc1Y2JtSnlaV0ZyTzF4dVkyRnpaU0Ez
T25KbGRIVnliaUEyTlR0Y2JtSnlaV0ZyTzF4dVkyRnpaU0E0T25KbGRIVnliaUEyT0R0Y2JtSnla
V0ZyTzF4dVkyRnpaU0E1T2lCeVpYUjFjbTRnTVRrN0lGeHVZbkpsWVdzN1hHNWpZWE5sSURFd09s
eHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIUm9hWE11Y0c5
d1UzUmhkR1VvS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0Fn
SUNCMGFHbHpMbUpsWjJsdUtDZHlZWGNuS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJ
Q0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnTWpNN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lD
QWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCY2JtSnlaV0ZyTzF4dVkyRnpaU0F4TVRweVpYUjFjbTRnTlRV
N1hHNWljbVZoYXp0Y2JtTmhjMlVnTVRJNmNtVjBkWEp1SURZd08xeHVZbkpsWVdzN1hHNWpZWE5s
SURFek9uSmxkSFZ5YmlBeU9UdGNibUp5WldGck8xeHVZMkZ6WlNBeE5EcHlaWFIxY200Z05EYzdY
RzVpY21WaGF6dGNibU5oYzJVZ01UVTZkR2hwY3k1d2IzQlRkR0YwWlNncE95QnlaWFIxY200Z05E
UTdYRzVpY21WaGF6dGNibU5oYzJVZ01UWTZkR2hwY3k1d2IzQlRkR0YwWlNncE95QnlaWFIxY200
Z05EUTdYRzVpY21WaGF6dGNibU5oYzJVZ01UYzZjbVYwZFhKdUlETTBPMXh1WW5KbFlXczdYRzVq
WVhObElERTRPbkpsZEhWeWJpQXpPVHRjYm1KeVpXRnJPMXh1WTJGelpTQXhPVHB5WlhSMWNtNGdO
VEU3WEc1aWNtVmhhenRjYm1OaGMyVWdNakE2Y21WMGRYSnVJRFE0TzF4dVluSmxZV3M3WEc1allY
TmxJREl4T2x4dUlDQjBhR2x6TG5WdWNIVjBLSGw1WHk1NWVYUmxlSFFwTzF4dUlDQjBhR2x6TG5C
dmNGTjBZWFJsS0NrN1hHNGdJSFJvYVhNdVltVm5hVzRvSjJOdmJTY3BPMXh1WEc1aWNtVmhhenRj
Ym1OaGMyVWdNakk2WEc0Z0lIUm9hWE11Y0c5d1UzUmhkR1VvS1R0Y2JpQWdjbVYwZFhKdUlERTBP
MXh1WEc1aWNtVmhhenRjYm1OaGMyVWdNak02Y21WMGRYSnVJRFE0TzF4dVluSmxZV3M3WEc1allY
TmxJREkwT25KbGRIVnliaUEzTXp0Y2JtSnlaV0ZyTzF4dVkyRnpaU0F5TlRweVpYUjFjbTRnTnpJ
N1hHNWljbVZoYXp0Y2JtTmhjMlVnTWpZNmNtVjBkWEp1SURjeU8xeHVZbkpsWVdzN1hHNWpZWE5s
SURJM09uSmxkSFZ5YmlBNE56dGNibUp5WldGck8xeHVZMkZ6WlNBeU9Eb3ZMeUJwWjI1dmNtVWdk
MmhwZEdWemNHRmpaVnh1WW5KbFlXczdYRzVqWVhObElESTVPblJvYVhNdWNHOXdVM1JoZEdVb0tU
c2djbVYwZFhKdUlEVTBPMXh1WW5KbFlXczdYRzVqWVhObElETXdPblJvYVhNdWNHOXdVM1JoZEdV
b0tUc2djbVYwZFhKdUlETXpPMXh1WW5KbFlXczdYRzVqWVhObElETXhPbmw1WHk1NWVYUmxlSFFn
UFNCemRISnBjQ2d4TERJcExuSmxjR3hoWTJVb0wxeGNYRnhjSWk5bkxDZGNJaWNwT3lCeVpYUjFj
bTRnT0RBN1hHNWljbVZoYXp0Y2JtTmhjMlVnTXpJNmVYbGZMbmw1ZEdWNGRDQTlJSE4wY21sd0tE
RXNNaWt1Y21Wd2JHRmpaU2d2WEZ4Y1hDY3ZaeXhjSWlkY0lpazdJSEpsZEhWeWJpQTRNRHRjYm1K
eVpXRnJPMXh1WTJGelpTQXpNenB5WlhSMWNtNGdPRFU3WEc1aWNtVmhhenRjYm1OaGMyVWdNelE2
Y21WMGRYSnVJRGd5TzF4dVluSmxZV3M3WEc1allYTmxJRE0xT25KbGRIVnliaUE0TWp0Y2JtSnla
V0ZyTzF4dVkyRnpaU0F6TmpweVpYUjFjbTRnT0RNN1hHNWljbVZoYXp0Y2JtTmhjMlVnTXpjNmNt
VjBkWEp1SURnME8xeHVZbkpsWVdzN1hHNWpZWE5sSURNNE9uSmxkSFZ5YmlBNE1UdGNibUp5WldG
ck8xeHVZMkZ6WlNBek9UcHlaWFIxY200Z056VTdYRzVpY21WaGF6dGNibU5oYzJVZ05EQTZjbVYw
ZFhKdUlEYzNPMXh1WW5KbFlXczdYRzVqWVhObElEUXhPbkpsZEhWeWJpQTNNanRjYm1KeVpXRnJP
MXh1WTJGelpTQTBNanA1ZVY4dWVYbDBaWGgwSUQwZ2VYbGZMbmw1ZEdWNGRDNXlaWEJzWVdObEtD
OWNYRnhjS0Z0Y1hGeGNYRnhkWFNrdlp5d25KREVuS1RzZ2NtVjBkWEp1SURjeU8xeHVZbkpsWVdz
N1hHNWpZWE5sSURRek9uSmxkSFZ5YmlBblNVNVdRVXhKUkNjN1hHNWljbVZoYXp0Y2JtTmhjMlVn
TkRRNmNtVjBkWEp1SURVN1hHNWljbVZoYXp0Y2JuMWNibjA3WEc1c1pYaGxjaTV5ZFd4bGN5QTlJ
RnN2WGlnL09sdGVYRng0TURCZEtqOG9QejBvWEZ4N1hGeDdLU2twTHl3dlhpZy9PbHRlWEZ4NE1E
QmRLeWt2TEM5ZUtEODZXMTVjWEhnd01GMTdNaXg5UHlnL1BTaGNYSHRjWEh0OFhGeGNYRnhjZTF4
Y2UzeGNYRnhjWEZ4Y1hGeGNlMXhjZTN3a0tTa3BMeXd2WGlnL09seGNlMXhjZTF4Y2UxeGNleWcv
UFZ0ZVhGd3ZYU2twTHl3dlhpZy9PbHhjZTF4Y2UxeGNlMXhjZTF4Y0wxdGVYRnh6SVZ3aUl5VXRM
RnhjTGx4Y0x6c3RQa0JjWEZzdFhGeGVZRnhjZXkxK1hTc29QejFiUFgxY1hITmNYQzh1WFNsY1hI
MWNYSDFjWEgxY1hIMHBMeXd2WGlnL09sdGVYRng0TURCZEtqOG9QejBvWEZ4N1hGeDdYRng3WEZ4
N0tTa3BMeXd2WGlnL09sdGNYSE5jWEZOZEtqOHRMU2grS1Q5Y1hIMWNYSDBwTHl3dlhpZy9PbHhj
S0NrdkxDOWVLRDg2WEZ3cEtTOHNMMTRvUHpwY1hIdGNYSHRjWEh0Y1hIc3BMeXd2WGlnL09seGNm
VnhjZlZ4Y2ZWeGNmU2t2TEM5ZUtEODZYRng3WEZ4N0tINHBQejRwTHl3dlhpZy9PbHhjZTF4Y2V5
aCtLVDhqUGlrdkxDOWVLRDg2WEZ4N1hGeDdLSDRwUHlOY1hDby9LUzhzTDE0b1B6cGNYSHRjWEhz
b2Zpay9YRnd2S1M4c0wxNG9QenBjWEh0Y1hIc29maWsvWEZ4ZVhGeHpLaWgrS1Q5Y1hIMWNYSDBw
THl3dlhpZy9PbHhjZTF4Y2V5aCtLVDljWEhNcVpXeHpaVnhjY3lvb2Zpay9YRng5WEZ4OUtTOHNM
MTRvUHpwY1hIdGNYSHNvZmlrL1hGeGVLUzhzTDE0b1B6cGNYSHRjWEhzb2Zpay9YRnh6S21Wc2My
VmNYR0lwTHl3dlhpZy9PbHhjZTF4Y2V5aCtLVDljWEhzcEx5d3ZYaWcvT2x4Y2UxeGNleWgrS1Q4
bUtTOHNMMTRvUHpwY1hIdGNYSHNvZmlrL0lTMHRLUzhzTDE0b1B6cGNYSHRjWEhzb2Zpay9JVnRj
WEhOY1hGTmRLajljWEgxY1hIMHBMeXd2WGlnL09seGNlMXhjZXloK0tUOWNYQ28vS1M4c0wxNG9Q
em85S1M4c0wxNG9QenBjWEM1Y1hDNHBMeXd2WGlnL09seGNMaWcvUFNoYlBYNTlYRnh6WEZ3dkxp
bDhYU2twS1M4c0wxNG9QenBiWEZ3dkxsMHBMeXd2WGlnL09seGNjeXNwTHl3dlhpZy9PbHhjZlNo
K0tUOWNYSDFjWEgwcEx5d3ZYaWcvT2loK0tUOWNYSDFjWEgwcEx5d3ZYaWcvT2x3aUtGeGNYRnhi
WENKZGZGdGVYQ0pkS1NwY0lpa3ZMQzllS0Q4Nkp5aGNYRnhjV3lkZGZGdGVKMTBwS2ljcEx5d3ZY
aWcvT2tBcEx5d3ZYaWcvT25SeWRXVW9QejBvVzM1OVhGeHpLVjBwS1NrdkxDOWVLRDg2Wm1Gc2My
VW9QejBvVzM1OVhGeHpLVjBwS1NrdkxDOWVLRDg2ZFc1a1pXWnBibVZrS0Q4OUtGdCtmVnhjY3ls
ZEtTa3BMeXd2WGlnL09tNTFiR3dvUHowb1czNTlYRnh6S1YwcEtTa3ZMQzllS0Q4NkxUOWJNQzA1
WFNzb1B6cGNYQzViTUMwNVhTc3BQeWcvUFNoYmZuMWNYSE1wWFNrcEtTOHNMMTRvUHpwaGMxeGNj
eXRjWEh3cEx5d3ZYaWcvT2x4Y2ZDa3ZMQzllS0Q4NktGdGVYRnh6SVZ3aUl5VXRMRnhjTGx4Y0x6
c3RQa0JjWEZzdFhGeGVZRnhjZXkxK1hTc29QejBvV3oxK2ZWeGNjMXhjTHk0cGZGMHBLU2twTHl3
dlhpZy9PbHhjV3loY1hGeGNYRnhkZkZ0ZVhGeGRYU2txWEZ4ZEtTOHNMMTRvUHpvdUtTOHNMMTRv
UHpva0tTOWRPMXh1YkdWNFpYSXVZMjl1WkdsMGFXOXVjeUE5SUh0Y0ltMTFYQ0k2ZTF3aWNuVnNa
WE5jSWpwYk55dzRMRGtzTVRBc01URXNNVElzTVRNc01UUXNNVFVzTVRZc01UY3NNVGdzTVRrc01q
QXNNakVzTWpJc01qTXNNalFzTWpVc01qWXNNamNzTWpnc01qa3NNekFzTXpFc016SXNNek1zTXpR
c016VXNNellzTXpjc016Z3NNemtzTkRBc05ERXNORElzTkRNc05EUmRMRndpYVc1amJIVnphWFps
WENJNlptRnNjMlY5TEZ3aVpXMTFYQ0k2ZTF3aWNuVnNaWE5jSWpwYk1sMHNYQ0pwYm1Oc2RYTnBk
bVZjSWpwbVlXeHpaWDBzWENKamIyMWNJanA3WENKeWRXeGxjMXdpT2xzMlhTeGNJbWx1WTJ4MWMy
bDJaVndpT21aaGJITmxmU3hjSW5KaGQxd2lPbnRjSW5KMWJHVnpYQ0k2V3pNc05DdzFYU3hjSW1s
dVkyeDFjMmwyWlZ3aU9tWmhiSE5sZlN4Y0lrbE9TVlJKUVV4Y0lqcDdYQ0p5ZFd4bGMxd2lPbHN3
TERFc05EUmRMRndpYVc1amJIVnphWFpsWENJNmRISjFaWDE5TzF4dWNtVjBkWEp1SUd4bGVHVnlP
MzBwS0NsY2JuQmhjbk5sY2k1c1pYaGxjaUE5SUd4bGVHVnlPMXh1Wm5WdVkzUnBiMjRnVUdGeWMy
VnlJQ2dwSUhzZ2RHaHBjeTU1ZVNBOUlIdDlPeUI5VUdGeWMyVnlMbkJ5YjNSdmRIbHdaU0E5SUhC
aGNuTmxjanR3WVhKelpYSXVVR0Z5YzJWeUlEMGdVR0Z5YzJWeU8xeHVjbVYwZFhKdUlHNWxkeUJR
WVhKelpYSTdYRzU5S1NncE8yVjRjRzl5ZEhNdVgxOWxjMDF2WkhWc1pTQTlJSFJ5ZFdVN1hHNWxl
SEJ2Y25Seld5ZGtaV1poZFd4MEoxMGdQU0JvWVc1a2JHVmlZWEp6TzF4dUlsMTkKKzsKK2RlZmlu
ZSgnaGFuZGxlYmFycy9jb21waWxlci92aXNpdG9yJyxbJ2V4cG9ydHMnLCAnbW9kdWxlJywgJy4u
L2V4Y2VwdGlvbiddLCBmdW5jdGlvbiAoZXhwb3J0cywgbW9kdWxlLCBfZXhjZXB0aW9uKSB7Cisg
ICd1c2Ugc3RyaWN0JzsKKworICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dAorCisgIGZ1bmN0aW9u
IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1
bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH0KKworICB2YXIgX0V4Y2VwdGlvbiA9IF9p
bnRlcm9wUmVxdWlyZURlZmF1bHQoX2V4Y2VwdGlvbik7CisKKyAgZnVuY3Rpb24gVmlzaXRvcigp
IHsKKyAgICB0aGlzLnBhcmVudHMgPSBbXTsKKyAgfQorCisgIFZpc2l0b3IucHJvdG90eXBlID0g
eworICAgIGNvbnN0cnVjdG9yOiBWaXNpdG9yLAorICAgIG11dGF0aW5nOiBmYWxzZSwKKworICAg
IC8vIFZpc2l0cyBhIGdpdmVuIHZhbHVlLiBJZiBtdXRhdGluZywgd2lsbCByZXBsYWNlIHRoZSB2
YWx1ZSBpZiBuZWNlc3NhcnkuCisgICAgYWNjZXB0S2V5OiBmdW5jdGlvbiBhY2NlcHRLZXkobm9k
ZSwgbmFtZSkgeworICAgICAgdmFyIHZhbHVlID0gdGhpcy5hY2NlcHQobm9kZVtuYW1lXSk7Cisg
ICAgICBpZiAodGhpcy5tdXRhdGluZykgeworICAgICAgICAvLyBIYWNreSBzYW5pdHkgY2hlY2s6
IFRoaXMgbWF5IGhhdmUgYSBmZXcgZmFsc2UgcG9zaXRpdmVzIGZvciB0eXBlIGZvciB0aGUgaGVs
cGVyCisgICAgICAgIC8vIG1ldGhvZHMgYnV0IHdpbGwgZ2VuZXJhbGx5IGRvIHRoZSByaWdodCB0
aGluZyB3aXRob3V0IGEgbG90IG9mIG92ZXJoZWFkLgorICAgICAgICBpZiAodmFsdWUgJiYgIVZp
c2l0b3IucHJvdG90eXBlW3ZhbHVlLnR5cGVdKSB7CisgICAgICAgICAgdGhyb3cgbmV3IF9FeGNl
cHRpb25bJ2RlZmF1bHQnXSgnVW5leHBlY3RlZCBub2RlIHR5cGUgIicgKyB2YWx1ZS50eXBlICsg
JyIgZm91bmQgd2hlbiBhY2NlcHRpbmcgJyArIG5hbWUgKyAnIG9uICcgKyBub2RlLnR5cGUpOwor
ICAgICAgICB9CisgICAgICAgIG5vZGVbbmFtZV0gPSB2YWx1ZTsKKyAgICAgIH0KKyAgICB9LAor
CisgICAgLy8gUGVyZm9ybXMgYW4gYWNjZXB0IG9wZXJhdGlvbiB3aXRoIGFkZGVkIHNhbml0eSBj
aGVjayB0byBlbnN1cmUKKyAgICAvLyByZXF1aXJlZCBrZXlzIGFyZSBub3QgcmVtb3ZlZC4KKyAg
ICBhY2NlcHRSZXF1aXJlZDogZnVuY3Rpb24gYWNjZXB0UmVxdWlyZWQobm9kZSwgbmFtZSkgewor
ICAgICAgdGhpcy5hY2NlcHRLZXkobm9kZSwgbmFtZSk7CisKKyAgICAgIGlmICghbm9kZVtuYW1l
XSkgeworICAgICAgICB0aHJvdyBuZXcgX0V4Y2VwdGlvblsnZGVmYXVsdCddKG5vZGUudHlwZSAr
ICcgcmVxdWlyZXMgJyArIG5hbWUpOworICAgICAgfQorICAgIH0sCisKKyAgICAvLyBUcmF2ZXJz
ZXMgYSBnaXZlbiBhcnJheS4gSWYgbXV0YXRpbmcsIGVtcHR5IHJlc3Buc2VzIHdpbGwgYmUgcmVt
b3ZlZAorICAgIC8vIGZvciBjaGlsZCBlbGVtZW50cy4KKyAgICBhY2NlcHRBcnJheTogZnVuY3Rp
b24gYWNjZXB0QXJyYXkoYXJyYXkpIHsKKyAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gYXJyYXku
bGVuZ3RoOyBpIDwgbDsgaSsrKSB7CisgICAgICAgIHRoaXMuYWNjZXB0S2V5KGFycmF5LCBpKTsK
KworICAgICAgICBpZiAoIWFycmF5W2ldKSB7CisgICAgICAgICAgYXJyYXkuc3BsaWNlKGksIDEp
OworICAgICAgICAgIGktLTsKKyAgICAgICAgICBsLS07CisgICAgICAgIH0KKyAgICAgIH0KKyAg
ICB9LAorCisgICAgYWNjZXB0OiBmdW5jdGlvbiBhY2NlcHQob2JqZWN0KSB7CisgICAgICBpZiAo
IW9iamVjdCkgeworICAgICAgICByZXR1cm47CisgICAgICB9CisKKyAgICAgIC8qIGlzdGFuYnVs
IGlnbm9yZSBuZXh0OiBTYW5pdHkgY29kZSAqLworICAgICAgaWYgKCF0aGlzW29iamVjdC50eXBl
XSkgeworICAgICAgICB0aHJvdyBuZXcgX0V4Y2VwdGlvblsnZGVmYXVsdCddKCdVbmtub3duIHR5
cGU6ICcgKyBvYmplY3QudHlwZSwgb2JqZWN0KTsKKyAgICAgIH0KKworICAgICAgaWYgKHRoaXMu
Y3VycmVudCkgeworICAgICAgICB0aGlzLnBhcmVudHMudW5zaGlmdCh0aGlzLmN1cnJlbnQpOwor
ICAgICAgfQorICAgICAgdGhpcy5jdXJyZW50ID0gb2JqZWN0OworCisgICAgICB2YXIgcmV0ID0g
dGhpc1tvYmplY3QudHlwZV0ob2JqZWN0KTsKKworICAgICAgdGhpcy5jdXJyZW50ID0gdGhpcy5w
YXJlbnRzLnNoaWZ0KCk7CisKKyAgICAgIGlmICghdGhpcy5tdXRhdGluZyB8fCByZXQpIHsKKyAg
ICAgICAgcmV0dXJuIHJldDsKKyAgICAgIH0gZWxzZSBpZiAocmV0ICE9PSBmYWxzZSkgeworICAg
ICAgICByZXR1cm4gb2JqZWN0OworICAgICAgfQorICAgIH0sCisKKyAgICBQcm9ncmFtOiBmdW5j
dGlvbiBQcm9ncmFtKHByb2dyYW0pIHsKKyAgICAgIHRoaXMuYWNjZXB0QXJyYXkocHJvZ3JhbS5i
b2R5KTsKKyAgICB9LAorCisgICAgTXVzdGFjaGVTdGF0ZW1lbnQ6IHZpc2l0U3ViRXhwcmVzc2lv
biwKKyAgICBEZWNvcmF0b3I6IHZpc2l0U3ViRXhwcmVzc2lvbiwKKworICAgIEJsb2NrU3RhdGVt
ZW50OiB2aXNpdEJsb2NrLAorICAgIERlY29yYXRvckJsb2NrOiB2aXNpdEJsb2NrLAorCisgICAg
UGFydGlhbFN0YXRlbWVudDogdmlzaXRQYXJ0aWFsLAorICAgIFBhcnRpYWxCbG9ja1N0YXRlbWVu
dDogZnVuY3Rpb24gUGFydGlhbEJsb2NrU3RhdGVtZW50KHBhcnRpYWwpIHsKKyAgICAgIHZpc2l0
UGFydGlhbC5jYWxsKHRoaXMsIHBhcnRpYWwpOworCisgICAgICB0aGlzLmFjY2VwdEtleShwYXJ0
aWFsLCAncHJvZ3JhbScpOworICAgIH0sCisKKyAgICBDb250ZW50U3RhdGVtZW50OiBmdW5jdGlv
biBDb250ZW50U3RhdGVtZW50KCkgLyogY29udGVudCAqL3t9LAorICAgIENvbW1lbnRTdGF0ZW1l
bnQ6IGZ1bmN0aW9uIENvbW1lbnRTdGF0ZW1lbnQoKSAvKiBjb21tZW50ICove30sCisKKyAgICBT
dWJFeHByZXNzaW9uOiB2aXNpdFN1YkV4cHJlc3Npb24sCisKKyAgICBQYXRoRXhwcmVzc2lvbjog
ZnVuY3Rpb24gUGF0aEV4cHJlc3Npb24oKSAvKiBwYXRoICove30sCisKKyAgICBTdHJpbmdMaXRl
cmFsOiBmdW5jdGlvbiBTdHJpbmdMaXRlcmFsKCkgLyogc3RyaW5nICove30sCisgICAgTnVtYmVy
TGl0ZXJhbDogZnVuY3Rpb24gTnVtYmVyTGl0ZXJhbCgpIC8qIG51bWJlciAqL3t9LAorICAgIEJv
b2xlYW5MaXRlcmFsOiBmdW5jdGlvbiBCb29sZWFuTGl0ZXJhbCgpIC8qIGJvb2wgKi97fSwKKyAg
ICBVbmRlZmluZWRMaXRlcmFsOiBmdW5jdGlvbiBVbmRlZmluZWRMaXRlcmFsKCkgLyogbGl0ZXJh
bCAqL3t9LAorICAgIE51bGxMaXRlcmFsOiBmdW5jdGlvbiBOdWxsTGl0ZXJhbCgpIC8qIGxpdGVy
YWwgKi97fSwKKworICAgIEhhc2g6IGZ1bmN0aW9uIEhhc2goaGFzaCkgeworICAgICAgdGhpcy5h
Y2NlcHRBcnJheShoYXNoLnBhaXJzKTsKKyAgICB9LAorICAgIEhhc2hQYWlyOiBmdW5jdGlvbiBI
YXNoUGFpcihwYWlyKSB7CisgICAgICB0aGlzLmFjY2VwdFJlcXVpcmVkKHBhaXIsICd2YWx1ZScp
OworICAgIH0KKyAgfTsKKworICBmdW5jdGlvbiB2aXNpdFN1YkV4cHJlc3Npb24obXVzdGFjaGUp
IHsKKyAgICB0aGlzLmFjY2VwdFJlcXVpcmVkKG11c3RhY2hlLCAncGF0aCcpOworICAgIHRoaXMu
YWNjZXB0QXJyYXkobXVzdGFjaGUucGFyYW1zKTsKKyAgICB0aGlzLmFjY2VwdEtleShtdXN0YWNo
ZSwgJ2hhc2gnKTsKKyAgfQorICBmdW5jdGlvbiB2aXNpdEJsb2NrKGJsb2NrKSB7CisgICAgdmlz
aXRTdWJFeHByZXNzaW9uLmNhbGwodGhpcywgYmxvY2spOworCisgICAgdGhpcy5hY2NlcHRLZXko
YmxvY2ssICdwcm9ncmFtJyk7CisgICAgdGhpcy5hY2NlcHRLZXkoYmxvY2ssICdpbnZlcnNlJyk7
CisgIH0KKyAgZnVuY3Rpb24gdmlzaXRQYXJ0aWFsKHBhcnRpYWwpIHsKKyAgICB0aGlzLmFjY2Vw
dFJlcXVpcmVkKHBhcnRpYWwsICduYW1lJyk7CisgICAgdGhpcy5hY2NlcHRBcnJheShwYXJ0aWFs
LnBhcmFtcyk7CisgICAgdGhpcy5hY2NlcHRLZXkocGFydGlhbCwgJ2hhc2gnKTsKKyAgfQorCisg
IG1vZHVsZS5leHBvcnRzID0gVmlzaXRvcjsKK30pOworLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0
YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpw
YklpNHVMeTR1THk0dUx5NHVMMnhwWWk5b1lXNWtiR1ZpWVhKekwyTnZiWEJwYkdWeUwzWnBjMmww
YjNJdWFuTWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqczdPenM3T3pzN08wRkJS
VUVzVjBGQlV5eFBRVUZQTEVkQlFVYzdRVUZEYWtJc1VVRkJTU3hEUVVGRExFOUJRVThzUjBGQlJ5
eEZRVUZGTEVOQlFVTTdSMEZEYmtJN08wRkJSVVFzVTBGQlR5eERRVUZETEZOQlFWTXNSMEZCUnp0
QlFVTnNRaXhsUVVGWExFVkJRVVVzVDBGQlR6dEJRVU53UWl4WlFVRlJMRVZCUVVVc1MwRkJTenM3
TzBGQlIyWXNZVUZCVXl4RlFVRkZMRzFDUVVGVExFbEJRVWtzUlVGQlJTeEpRVUZKTEVWQlFVVTdR
VUZET1VJc1ZVRkJTU3hMUVVGTExFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4SlFV
RkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU53UXl4VlFVRkpMRWxCUVVr
c1EwRkJReXhSUVVGUkxFVkJRVVU3T3p0QlFVZHFRaXhaUVVGSkxFdEJRVXNzU1VGQlNTeERRVUZE
TEU5QlFVOHNRMEZCUXl4VFFVRlRMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eEZR
VUZGTzBGQlF6TkRMR2RDUVVGTkxEQkNRVUZqTEhkQ1FVRjNRaXhIUVVGSExFdEJRVXNzUTBGQlF5
eEpRVUZKTEVkQlFVY3NlVUpCUVhsQ0xFZEJRVWNzU1VGQlNTeEhRVUZITEUxQlFVMHNSMEZCUnl4
SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03VTBGRGNFZzdRVUZEUkN4WlFVRkpMRU5C
UVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzUzBGQlN5eERRVUZETzA5QlEzQkNPMHRCUTBZN096czdR
VUZKUkN4clFrRkJZeXhGUVVGRkxIZENRVUZUTEVsQlFVa3NSVUZCUlN4SlFVRkpMRVZCUVVVN1FV
RkRia01zVlVGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4SlFVRkpMRVZCUVVVc1NVRkJTU3hEUVVG
RExFTkJRVU03TzBGQlJUTkNMRlZCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZE
TEVWQlFVVTdRVUZEWml4alFVRk5MREJDUVVGakxFbEJRVWtzUTBGQlF5eEpRVUZKTEVkQlFVY3NX
VUZCV1N4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRE8wOUJRM1JFTzB0QlEwWTdPenM3UVVGSlJD
eGxRVUZYTEVWQlFVVXNjVUpCUVZNc1MwRkJTeXhGUVVGRk8wRkJRek5DTEZkQlFVc3NTVUZCU1N4
RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eExRVUZMTEVOQlFVTXNUVUZC
VFN4RlFVRkZMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdR
VUZETlVNc1dVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eExRVUZMTEVWQlFVVXNRMEZCUXl4RFFV
RkRMRU5CUVVNN08wRkJSWHBDTEZsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVG
RExFVkJRVVU3UVVGRFlpeGxRVUZMTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1JVRkJSU3hE
UVVGRExFTkJRVU1zUTBGQlF6dEJRVU51UWl4WFFVRkRMRVZCUVVVc1EwRkJRenRCUVVOS0xGZEJR
VU1zUlVGQlJTeERRVUZETzFOQlEwdzdUMEZEUmp0TFFVTkdPenRCUVVWRUxGVkJRVTBzUlVGQlJT
eG5Ra0ZCVXl4TlFVRk5MRVZCUVVVN1FVRkRka0lzVlVGQlNTeERRVUZETEUxQlFVMHNSVUZCUlR0
QlFVTllMR1ZCUVU4N1QwRkRVanM3TzBGQlIwUXNWVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhO
UVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVTdRVUZEZEVJc1kwRkJUU3d3UWtGQll5eG5R
a0ZCWjBJc1IwRkJSeXhOUVVGTkxFTkJRVU1zU1VGQlNTeEZRVUZGTEUxQlFVMHNRMEZCUXl4RFFV
RkRPMDlCUXpkRU96dEJRVVZFTEZWQlFVa3NTVUZCU1N4RFFVRkRMRTlCUVU4c1JVRkJSVHRCUVVO
b1FpeFpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1z
VDBGQlR5eERRVUZETEVOQlFVTTdUMEZEY0VNN1FVRkRSQ3hWUVVGSkxFTkJRVU1zVDBGQlR5eEhR
VUZITEUxQlFVMHNRMEZCUXpzN1FVRkZkRUlzVlVGQlNTeEhRVUZITEVkQlFVY3NTVUZCU1N4RFFV
RkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXpz
N1FVRkZjRU1zVlVGQlNTeERRVUZETEU5QlFVOHNSMEZCUnl4SlFVRkpMRU5CUVVNc1QwRkJUeXhE
UVVGRExFdEJRVXNzUlVGQlJTeERRVUZET3p0QlFVVndReXhWUVVGSkxFTkJRVU1zU1VGQlNTeERR
VUZETEZGQlFWRXNTVUZCU1N4SFFVRkhMRVZCUVVVN1FVRkRla0lzWlVGQlR5eEhRVUZITEVOQlFV
TTdUMEZEV2l4TlFVRk5MRWxCUVVrc1IwRkJSeXhMUVVGTExFdEJRVXNzUlVGQlJUdEJRVU40UWl4
bFFVRlBMRTFCUVUwc1EwRkJRenRQUVVObU8wdEJRMFk3TzBGQlJVUXNWMEZCVHl4RlFVRkZMR2xD
UVVGVExFOUJRVThzUlVGQlJUdEJRVU42UWl4VlFVRkpMRU5CUVVNc1YwRkJWeXhEUVVGRExFOUJR
VThzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0TFFVTm9RenM3UVVGRlJDeHhRa0ZCYVVJc1JV
RkJSU3hyUWtGQmEwSTdRVUZEY2tNc1lVRkJVeXhGUVVGRkxHdENRVUZyUWpzN1FVRkZOMElzYTBK
QlFXTXNSVUZCUlN4VlFVRlZPMEZCUXpGQ0xHdENRVUZqTEVWQlFVVXNWVUZCVlRzN1FVRkZNVUlz
YjBKQlFXZENMRVZCUVVVc1dVRkJXVHRCUVVNNVFpeDVRa0ZCY1VJc1JVRkJSU3dyUWtGQlV5eFBR
VUZQTEVWQlFVVTdRVUZEZGtNc2EwSkJRVmtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RlFV
RkZMRTlCUVU4c1EwRkJReXhEUVVGRE96dEJRVVZxUXl4VlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVG
RExFOUJRVThzUlVGQlJTeFRRVUZUTEVOQlFVTXNRMEZCUXp0TFFVTndRenM3UVVGRlJDeHZRa0ZC
WjBJc1JVRkJSU3g1UTBGQmQwSXNSVUZCUlR0QlFVTTFReXh2UWtGQlowSXNSVUZCUlN4NVEwRkJk
MElzUlVGQlJUczdRVUZGTlVNc2FVSkJRV0VzUlVGQlJTeHJRa0ZCYTBJN08wRkJSV3BETEd0Q1FV
RmpMRVZCUVVVc2IwTkJRWEZDTEVWQlFVVTdPMEZCUlhaRExHbENRVUZoTEVWQlFVVXNjVU5CUVhW
Q0xFVkJRVVU3UVVGRGVFTXNhVUpCUVdFc1JVRkJSU3h4UTBGQmRVSXNSVUZCUlR0QlFVTjRReXhy
UWtGQll5eEZRVUZGTEc5RFFVRnhRaXhGUVVGRk8wRkJRM1pETEc5Q1FVRm5RaXhGUVVGRkxIbERR
VUYzUWl4RlFVRkZPMEZCUXpWRExHVkJRVmNzUlVGQlJTeHZRMEZCZDBJc1JVRkJSVHM3UVVGRmRr
TXNVVUZCU1N4RlFVRkZMR05CUVZNc1NVRkJTU3hGUVVGRk8wRkJRMjVDTEZWQlFVa3NRMEZCUXl4
WFFVRlhMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzB0QlF6bENPMEZC
UTBRc1dVRkJVU3hGUVVGRkxHdENRVUZUTEVsQlFVa3NSVUZCUlR0QlFVTjJRaXhWUVVGSkxFTkJR
VU1zWTBGQll5eERRVUZETEVsQlFVa3NSVUZCUlN4UFFVRlBMRU5CUVVNc1EwRkJRenRMUVVOd1F6
dEhRVU5HTEVOQlFVTTdPMEZCUlVZc1YwRkJVeXhyUWtGQmEwSXNRMEZCUXl4UlFVRlJMRVZCUVVV
N1FVRkRjRU1zVVVGQlNTeERRVUZETEdOQlFXTXNRMEZCUXl4UlFVRlJMRVZCUVVVc1RVRkJUU3hE
UVVGRExFTkJRVU03UVVGRGRFTXNVVUZCU1N4RFFVRkRMRmRCUVZjc1EwRkJReXhSUVVGUkxFTkJR
VU1zVFVGQlRTeERRVUZETEVOQlFVTTdRVUZEYkVNc1VVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5
eFJRVUZSTEVWQlFVVXNUVUZCVFN4RFFVRkRMRU5CUVVNN1IwRkRiRU03UVVGRFJDeFhRVUZUTEZW
QlFWVXNRMEZCUXl4TFFVRkxMRVZCUVVVN1FVRkRla0lzYzBKQlFXdENMRU5CUVVNc1NVRkJTU3hE
UVVGRExFbEJRVWtzUlVGQlJTeExRVUZMTEVOQlFVTXNRMEZCUXpzN1FVRkZja01zVVVGQlNTeERR
VUZETEZOQlFWTXNRMEZCUXl4TFFVRkxMRVZCUVVVc1UwRkJVeXhEUVVGRExFTkJRVU03UVVGRGFr
TXNVVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhMUVVGTExFVkJRVVVzVTBGQlV5eERRVUZETEVO
QlFVTTdSMEZEYkVNN1FVRkRSQ3hYUVVGVExGbEJRVmtzUTBGQlF5eFBRVUZQTEVWQlFVVTdRVUZE
TjBJc1VVRkJTU3hEUVVGRExHTkJRV01zUTBGQlF5eFBRVUZQTEVWQlFVVXNUVUZCVFN4RFFVRkRM
RU5CUVVNN1FVRkRja01zVVVGQlNTeERRVUZETEZkQlFWY3NRMEZCUXl4UFFVRlBMRU5CUVVNc1RV
RkJUU3hEUVVGRExFTkJRVU03UVVGRGFrTXNVVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhQUVVG
UExFVkJRVVVzVFVGQlRTeERRVUZETEVOQlFVTTdSMEZEYWtNN08yMUNRVVZqTEU5QlFVOGlMQ0pt
YVd4bElqb2lkbWx6YVhSdmNpNXFjeUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSW1sdGNHOXlk
Q0JGZUdObGNIUnBiMjRnWm5KdmJTQW5MaTR2WlhoalpYQjBhVzl1Snp0Y2JseHVablZ1WTNScGIy
NGdWbWx6YVhSdmNpZ3BJSHRjYmlBZ2RHaHBjeTV3WVhKbGJuUnpJRDBnVzEwN1hHNTlYRzVjYmxa
cGMybDBiM0l1Y0hKdmRHOTBlWEJsSUQwZ2UxeHVJQ0JqYjI1emRISjFZM1J2Y2pvZ1ZtbHphWFJ2
Y2l4Y2JpQWdiWFYwWVhScGJtYzZJR1poYkhObExGeHVYRzRnSUM4dklGWnBjMmwwY3lCaElHZHBk
bVZ1SUhaaGJIVmxMaUJKWmlCdGRYUmhkR2x1Wnl3Z2QybHNiQ0J5WlhCc1lXTmxJSFJvWlNCMllX
eDFaU0JwWmlCdVpXTmxjM05oY25rdVhHNGdJR0ZqWTJWd2RFdGxlVG9nWm5WdVkzUnBiMjRvYm05
a1pTd2dibUZ0WlNrZ2UxeHVJQ0FnSUd4bGRDQjJZV3gxWlNBOUlIUm9hWE11WVdOalpYQjBLRzV2
WkdWYmJtRnRaVjBwTzF4dUlDQWdJR2xtSUNoMGFHbHpMbTExZEdGMGFXNW5LU0I3WEc0Z0lDQWdJ
Q0F2THlCSVlXTnJlU0J6WVc1cGRIa2dZMmhsWTJzNklGUm9hWE1nYldGNUlHaGhkbVVnWVNCbVpY
Y2dabUZzYzJVZ2NHOXphWFJwZG1WeklHWnZjaUIwZVhCbElHWnZjaUIwYUdVZ2FHVnNjR1Z5WEc0
Z0lDQWdJQ0F2THlCdFpYUm9iMlJ6SUdKMWRDQjNhV3hzSUdkbGJtVnlZV3hzZVNCa2J5QjBhR1Vn
Y21sbmFIUWdkR2hwYm1jZ2QybDBhRzkxZENCaElHeHZkQ0J2WmlCdmRtVnlhR1ZoWkM1Y2JpQWdJ
Q0FnSUdsbUlDaDJZV3gxWlNBbUppQWhWbWx6YVhSdmNpNXdjbTkwYjNSNWNHVmJkbUZzZFdVdWRI
bHdaVjBwSUh0Y2JpQWdJQ0FnSUNBZ2RHaHliM2NnYm1WM0lFVjRZMlZ3ZEdsdmJpZ25WVzVsZUhC
bFkzUmxaQ0J1YjJSbElIUjVjR1VnWENJbklDc2dkbUZzZFdVdWRIbHdaU0FySUNkY0lpQm1iM1Z1
WkNCM2FHVnVJR0ZqWTJWd2RHbHVaeUFuSUNzZ2JtRnRaU0FySUNjZ2IyNGdKeUFySUc1dlpHVXVk
SGx3WlNrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNCdWIyUmxXMjVoYldWZElEMGdkbUZzZFdVN1hH
NGdJQ0FnZlZ4dUlDQjlMRnh1WEc0Z0lDOHZJRkJsY21admNtMXpJR0Z1SUdGalkyVndkQ0J2Y0dW
eVlYUnBiMjRnZDJsMGFDQmhaR1JsWkNCellXNXBkSGtnWTJobFkyc2dkRzhnWlc1emRYSmxYRzRn
SUM4dklISmxjWFZwY21Wa0lHdGxlWE1nWVhKbElHNXZkQ0J5WlcxdmRtVmtMbHh1SUNCaFkyTmxj
SFJTWlhGMWFYSmxaRG9nWm5WdVkzUnBiMjRvYm05a1pTd2dibUZ0WlNrZ2UxeHVJQ0FnSUhSb2FY
TXVZV05qWlhCMFMyVjVLRzV2WkdVc0lHNWhiV1VwTzF4dVhHNGdJQ0FnYVdZZ0tDRnViMlJsVzI1
aGJXVmRLU0I3WEc0Z0lDQWdJQ0IwYUhKdmR5QnVaWGNnUlhoalpYQjBhVzl1S0c1dlpHVXVkSGx3
WlNBcklDY2djbVZ4ZFdseVpYTWdKeUFySUc1aGJXVXBPMXh1SUNBZ0lIMWNiaUFnZlN4Y2JseHVJ
Q0F2THlCVWNtRjJaWEp6WlhNZ1lTQm5hWFpsYmlCaGNuSmhlUzRnU1dZZ2JYVjBZWFJwYm1jc0lH
VnRjSFI1SUhKbGMzQnVjMlZ6SUhkcGJHd2dZbVVnY21WdGIzWmxaRnh1SUNBdkx5Qm1iM0lnWTJo
cGJHUWdaV3hsYldWdWRITXVYRzRnSUdGalkyVndkRUZ5Y21GNU9pQm1kVzVqZEdsdmJpaGhjbkpo
ZVNrZ2UxeHVJQ0FnSUdadmNpQW9iR1YwSUdrZ1BTQXdMQ0JzSUQwZ1lYSnlZWGt1YkdWdVozUm9P
eUJwSUR3Z2JEc2dhU3NyS1NCN1hHNGdJQ0FnSUNCMGFHbHpMbUZqWTJWd2RFdGxlU2hoY25KaGVT
d2dhU2s3WEc1Y2JpQWdJQ0FnSUdsbUlDZ2hZWEp5WVhsYmFWMHBJSHRjYmlBZ0lDQWdJQ0FnWVhK
eVlYa3VjM0JzYVdObEtHa3NJREVwTzF4dUlDQWdJQ0FnSUNCcExTMDdYRzRnSUNBZ0lDQWdJR3d0
TFR0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc0Z0lIMHNYRzVjYmlBZ1lXTmpaWEIwT2lCbWRXNWpk
R2x2YmlodlltcGxZM1FwSUh0Y2JpQWdJQ0JwWmlBb0lXOWlhbVZqZENrZ2UxeHVJQ0FnSUNBZ2Nt
VjBkWEp1TzF4dUlDQWdJSDFjYmx4dUlDQWdJQzhxSUdsemRHRnVZblZzSUdsbmJtOXlaU0J1Wlho
ME9pQlRZVzVwZEhrZ1kyOWtaU0FxTDF4dUlDQWdJR2xtSUNnaGRHaHBjMXR2WW1wbFkzUXVkSGx3
WlYwcElIdGNiaUFnSUNBZ0lIUm9jbTkzSUc1bGR5QkZlR05sY0hScGIyNG9KMVZ1YTI1dmQyNGdk
SGx3WlRvZ0p5QXJJRzlpYW1WamRDNTBlWEJsTENCdlltcGxZM1FwTzF4dUlDQWdJSDFjYmx4dUlD
QWdJR2xtSUNoMGFHbHpMbU4xY25KbGJuUXBJSHRjYmlBZ0lDQWdJSFJvYVhNdWNHRnlaVzUwY3k1
MWJuTm9hV1owS0hSb2FYTXVZM1Z5Y21WdWRDazdYRzRnSUNBZ2ZWeHVJQ0FnSUhSb2FYTXVZM1Z5
Y21WdWRDQTlJRzlpYW1WamREdGNibHh1SUNBZ0lHeGxkQ0J5WlhRZ1BTQjBhR2x6VzI5aWFtVmpk
QzUwZVhCbFhTaHZZbXBsWTNRcE8xeHVYRzRnSUNBZ2RHaHBjeTVqZFhKeVpXNTBJRDBnZEdocGN5
NXdZWEpsYm5SekxuTm9hV1owS0NrN1hHNWNiaUFnSUNCcFppQW9JWFJvYVhNdWJYVjBZWFJwYm1j
Z2ZId2djbVYwS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnY21WME8xeHVJQ0FnSUgwZ1pXeHpaU0Jw
WmlBb2NtVjBJQ0U5UFNCbVlXeHpaU2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVJRzlpYW1WamREdGNi
aUFnSUNCOVhHNGdJSDBzWEc1Y2JpQWdVSEp2WjNKaGJUb2dablZ1WTNScGIyNG9jSEp2WjNKaGJT
a2dlMXh1SUNBZ0lIUm9hWE11WVdOalpYQjBRWEp5WVhrb2NISnZaM0poYlM1aWIyUjVLVHRjYmlB
Z2ZTeGNibHh1SUNCTmRYTjBZV05vWlZOMFlYUmxiV1Z1ZERvZ2RtbHphWFJUZFdKRmVIQnlaWE56
YVc5dUxGeHVJQ0JFWldOdmNtRjBiM0k2SUhacGMybDBVM1ZpUlhod2NtVnpjMmx2Yml4Y2JseHVJ
Q0JDYkc5amExTjBZWFJsYldWdWREb2dkbWx6YVhSQ2JHOWpheXhjYmlBZ1JHVmpiM0poZEc5eVFt
eHZZMnM2SUhacGMybDBRbXh2WTJzc1hHNWNiaUFnVUdGeWRHbGhiRk4wWVhSbGJXVnVkRG9nZG1s
emFYUlFZWEowYVdGc0xGeHVJQ0JRWVhKMGFXRnNRbXh2WTJ0VGRHRjBaVzFsYm5RNklHWjFibU4w
YVc5dUtIQmhjblJwWVd3cElIdGNiaUFnSUNCMmFYTnBkRkJoY25ScFlXd3VZMkZzYkNoMGFHbHpM
Q0J3WVhKMGFXRnNLVHRjYmx4dUlDQWdJSFJvYVhNdVlXTmpaWEIwUzJWNUtIQmhjblJwWVd3c0lD
ZHdjbTluY21GdEp5azdYRzRnSUgwc1hHNWNiaUFnUTI5dWRHVnVkRk4wWVhSbGJXVnVkRG9nWm5W
dVkzUnBiMjRvTHlvZ1kyOXVkR1Z1ZENBcUx5a2dlMzBzWEc0Z0lFTnZiVzFsYm5SVGRHRjBaVzFs
Ym5RNklHWjFibU4wYVc5dUtDOHFJR052YlcxbGJuUWdLaThwSUh0OUxGeHVYRzRnSUZOMVlrVjRj
SEpsYzNOcGIyNDZJSFpwYzJsMFUzVmlSWGh3Y21WemMybHZiaXhjYmx4dUlDQlFZWFJvUlhod2Nt
VnpjMmx2YmpvZ1puVnVZM1JwYjI0b0x5b2djR0YwYUNBcUx5a2dlMzBzWEc1Y2JpQWdVM1J5YVc1
blRHbDBaWEpoYkRvZ1puVnVZM1JwYjI0b0x5b2djM1J5YVc1bklDb3ZLU0I3ZlN4Y2JpQWdUblZ0
WW1WeVRHbDBaWEpoYkRvZ1puVnVZM1JwYjI0b0x5b2diblZ0WW1WeUlDb3ZLU0I3ZlN4Y2JpQWdR
bTl2YkdWaGJreHBkR1Z5WVd3NklHWjFibU4wYVc5dUtDOHFJR0p2YjJ3Z0tpOHBJSHQ5TEZ4dUlD
QlZibVJsWm1sdVpXUk1hWFJsY21Gc09pQm1kVzVqZEdsdmJpZ3ZLaUJzYVhSbGNtRnNJQ292S1NC
N2ZTeGNiaUFnVG5Wc2JFeHBkR1Z5WVd3NklHWjFibU4wYVc5dUtDOHFJR3hwZEdWeVlXd2dLaThw
SUh0OUxGeHVYRzRnSUVoaGMyZzZJR1oxYm1OMGFXOXVLR2hoYzJncElIdGNiaUFnSUNCMGFHbHpM
bUZqWTJWd2RFRnljbUY1S0doaGMyZ3VjR0ZwY25NcE8xeHVJQ0I5TEZ4dUlDQklZWE5vVUdGcGNq
b2dablZ1WTNScGIyNG9jR0ZwY2lrZ2UxeHVJQ0FnSUhSb2FYTXVZV05qWlhCMFVtVnhkV2x5WldR
b2NHRnBjaXdnSjNaaGJIVmxKeWs3WEc0Z0lIMWNibjA3WEc1Y2JtWjFibU4wYVc5dUlIWnBjMmww
VTNWaVJYaHdjbVZ6YzJsdmJpaHRkWE4wWVdOb1pTa2dlMXh1SUNCMGFHbHpMbUZqWTJWd2RGSmxj
WFZwY21Wa0tHMTFjM1JoWTJobExDQW5jR0YwYUNjcE8xeHVJQ0IwYUdsekxtRmpZMlZ3ZEVGeWNt
RjVLRzExYzNSaFkyaGxMbkJoY21GdGN5azdYRzRnSUhSb2FYTXVZV05qWlhCMFMyVjVLRzExYzNS
aFkyaGxMQ0FuYUdGemFDY3BPMXh1ZlZ4dVpuVnVZM1JwYjI0Z2RtbHphWFJDYkc5amF5aGliRzlq
YXlrZ2UxeHVJQ0IyYVhOcGRGTjFZa1Y0Y0hKbGMzTnBiMjR1WTJGc2JDaDBhR2x6TENCaWJHOWph
eWs3WEc1Y2JpQWdkR2hwY3k1aFkyTmxjSFJMWlhrb1lteHZZMnNzSUNkd2NtOW5jbUZ0SnlrN1hH
NGdJSFJvYVhNdVlXTmpaWEIwUzJWNUtHSnNiMk5yTENBbmFXNTJaWEp6WlNjcE8xeHVmVnh1Wm5W
dVkzUnBiMjRnZG1semFYUlFZWEowYVdGc0tIQmhjblJwWVd3cElIdGNiaUFnZEdocGN5NWhZMk5s
Y0hSU1pYRjFhWEpsWkNod1lYSjBhV0ZzTENBbmJtRnRaU2NwTzF4dUlDQjBhR2x6TG1GalkyVndk
RUZ5Y21GNUtIQmhjblJwWVd3dWNHRnlZVzF6S1R0Y2JpQWdkR2hwY3k1aFkyTmxjSFJMWlhrb2NH
RnlkR2xoYkN3Z0oyaGhjMmduS1R0Y2JuMWNibHh1Wlhod2IzSjBJR1JsWm1GMWJIUWdWbWx6YVhS
dmNqdGNiaUpkZlE9PQorOworZGVmaW5lKCdoYW5kbGViYXJzL2NvbXBpbGVyL3doaXRlc3BhY2Ut
Y29udHJvbCcsWydleHBvcnRzJywgJ21vZHVsZScsICcuL3Zpc2l0b3InXSwgZnVuY3Rpb24gKGV4
cG9ydHMsIG1vZHVsZSwgX3Zpc2l0b3IpIHsKKyAgJ3VzZSBzdHJpY3QnOworCisgIC8vIGlzdGFu
YnVsIGlnbm9yZSBuZXh0CisKKyAgZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmop
IHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmog
fTsgfQorCisgIHZhciBfVmlzaXRvciA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3Zpc2l0b3Ip
OworCisgIGZ1bmN0aW9uIFdoaXRlc3BhY2VDb250cm9sKCkgeworICAgIHZhciBvcHRpb25zID0g
YXJndW1lbnRzLmxlbmd0aCA8PSAwIHx8IGFyZ3VtZW50c1swXSA9PT0gdW5kZWZpbmVkID8ge30g
OiBhcmd1bWVudHNbMF07CisKKyAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zOworICB9CisgIFdo
aXRlc3BhY2VDb250cm9sLnByb3RvdHlwZSA9IG5ldyBfVmlzaXRvclsnZGVmYXVsdCddKCk7CisK
KyAgV2hpdGVzcGFjZUNvbnRyb2wucHJvdG90eXBlLlByb2dyYW0gPSBmdW5jdGlvbiAocHJvZ3Jh
bSkgeworICAgIHZhciBkb1N0YW5kYWxvbmUgPSAhdGhpcy5vcHRpb25zLmlnbm9yZVN0YW5kYWxv
bmU7CisKKyAgICB2YXIgaXNSb290ID0gIXRoaXMuaXNSb290U2VlbjsKKyAgICB0aGlzLmlzUm9v
dFNlZW4gPSB0cnVlOworCisgICAgdmFyIGJvZHkgPSBwcm9ncmFtLmJvZHk7CisgICAgZm9yICh2
YXIgaSA9IDAsIGwgPSBib2R5Lmxlbmd0aDsgaSA8IGw7IGkrKykgeworICAgICAgdmFyIGN1cnJl
bnQgPSBib2R5W2ldLAorICAgICAgICAgIHN0cmlwID0gdGhpcy5hY2NlcHQoY3VycmVudCk7CisK
KyAgICAgIGlmICghc3RyaXApIHsKKyAgICAgICAgY29udGludWU7CisgICAgICB9CisKKyAgICAg
IHZhciBfaXNQcmV2V2hpdGVzcGFjZSA9IGlzUHJldldoaXRlc3BhY2UoYm9keSwgaSwgaXNSb290
KSwKKyAgICAgICAgICBfaXNOZXh0V2hpdGVzcGFjZSA9IGlzTmV4dFdoaXRlc3BhY2UoYm9keSwg
aSwgaXNSb290KSwKKyAgICAgICAgICBvcGVuU3RhbmRhbG9uZSA9IHN0cmlwLm9wZW5TdGFuZGFs
b25lICYmIF9pc1ByZXZXaGl0ZXNwYWNlLAorICAgICAgICAgIGNsb3NlU3RhbmRhbG9uZSA9IHN0
cmlwLmNsb3NlU3RhbmRhbG9uZSAmJiBfaXNOZXh0V2hpdGVzcGFjZSwKKyAgICAgICAgICBpbmxp
bmVTdGFuZGFsb25lID0gc3RyaXAuaW5saW5lU3RhbmRhbG9uZSAmJiBfaXNQcmV2V2hpdGVzcGFj
ZSAmJiBfaXNOZXh0V2hpdGVzcGFjZTsKKworICAgICAgaWYgKHN0cmlwLmNsb3NlKSB7CisgICAg
ICAgIG9taXRSaWdodChib2R5LCBpLCB0cnVlKTsKKyAgICAgIH0KKyAgICAgIGlmIChzdHJpcC5v
cGVuKSB7CisgICAgICAgIG9taXRMZWZ0KGJvZHksIGksIHRydWUpOworICAgICAgfQorCisgICAg
ICBpZiAoZG9TdGFuZGFsb25lICYmIGlubGluZVN0YW5kYWxvbmUpIHsKKyAgICAgICAgb21pdFJp
Z2h0KGJvZHksIGkpOworCisgICAgICAgIGlmIChvbWl0TGVmdChib2R5LCBpKSkgeworICAgICAg
ICAgIC8vIElmIHdlIGFyZSBvbiBhIHN0YW5kYWxvbmUgbm9kZSwgc2F2ZSB0aGUgaW5kZW50IGlu
Zm8gZm9yIHBhcnRpYWxzCisgICAgICAgICAgaWYgKGN1cnJlbnQudHlwZSA9PT0gJ1BhcnRpYWxT
dGF0ZW1lbnQnKSB7CisgICAgICAgICAgICAvLyBQdWxsIG91dCB0aGUgd2hpdGVzcGFjZSBmcm9t
IHRoZSBmaW5hbCBsaW5lCisgICAgICAgICAgICBjdXJyZW50LmluZGVudCA9IC8oWyBcdF0rJCkv
LmV4ZWMoYm9keVtpIC0gMV0ub3JpZ2luYWwpWzFdOworICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgfQorICAgICAgaWYgKGRvU3RhbmRhbG9uZSAmJiBvcGVuU3RhbmRhbG9uZSkgeworICAg
ICAgICBvbWl0UmlnaHQoKGN1cnJlbnQucHJvZ3JhbSB8fCBjdXJyZW50LmludmVyc2UpLmJvZHkp
OworCisgICAgICAgIC8vIFN0cmlwIG91dCB0aGUgcHJldmlvdXMgY29udGVudCBub2RlIGlmIGl0
J3Mgd2hpdGVzcGFjZSBvbmx5CisgICAgICAgIG9taXRMZWZ0KGJvZHksIGkpOworICAgICAgfQor
ICAgICAgaWYgKGRvU3RhbmRhbG9uZSAmJiBjbG9zZVN0YW5kYWxvbmUpIHsKKyAgICAgICAgLy8g
QWx3YXlzIHN0cmlwIHRoZSBuZXh0IG5vZGUKKyAgICAgICAgb21pdFJpZ2h0KGJvZHksIGkpOwor
CisgICAgICAgIG9taXRMZWZ0KChjdXJyZW50LmludmVyc2UgfHwgY3VycmVudC5wcm9ncmFtKS5i
b2R5KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gcHJvZ3JhbTsKKyAgfTsKKworICBX
aGl0ZXNwYWNlQ29udHJvbC5wcm90b3R5cGUuQmxvY2tTdGF0ZW1lbnQgPSBXaGl0ZXNwYWNlQ29u
dHJvbC5wcm90b3R5cGUuRGVjb3JhdG9yQmxvY2sgPSBXaGl0ZXNwYWNlQ29udHJvbC5wcm90b3R5
cGUuUGFydGlhbEJsb2NrU3RhdGVtZW50ID0gZnVuY3Rpb24gKGJsb2NrKSB7CisgICAgdGhpcy5h
Y2NlcHQoYmxvY2sucHJvZ3JhbSk7CisgICAgdGhpcy5hY2NlcHQoYmxvY2suaW52ZXJzZSk7CisK
KyAgICAvLyBGaW5kIHRoZSBpbnZlcnNlIHByb2dyYW0gdGhhdCBpcyBpbnZvbGVkIHdpdGggd2hp
dGVzcGFjZSBzdHJpcHBpbmcuCisgICAgdmFyIHByb2dyYW0gPSBibG9jay5wcm9ncmFtIHx8IGJs
b2NrLmludmVyc2UsCisgICAgICAgIGludmVyc2UgPSBibG9jay5wcm9ncmFtICYmIGJsb2NrLmlu
dmVyc2UsCisgICAgICAgIGZpcnN0SW52ZXJzZSA9IGludmVyc2UsCisgICAgICAgIGxhc3RJbnZl
cnNlID0gaW52ZXJzZTsKKworICAgIGlmIChpbnZlcnNlICYmIGludmVyc2UuY2hhaW5lZCkgewor
ICAgICAgZmlyc3RJbnZlcnNlID0gaW52ZXJzZS5ib2R5WzBdLnByb2dyYW07CisKKyAgICAgIC8v
IFdhbGsgdGhlIGludmVyc2UgY2hhaW4gdG8gZmluZCB0aGUgbGFzdCBpbnZlcnNlIHRoYXQgaXMg
YWN0dWFsbHkgaW4gdGhlIGNoYWluLgorICAgICAgd2hpbGUgKGxhc3RJbnZlcnNlLmNoYWluZWQp
IHsKKyAgICAgICAgbGFzdEludmVyc2UgPSBsYXN0SW52ZXJzZS5ib2R5W2xhc3RJbnZlcnNlLmJv
ZHkubGVuZ3RoIC0gMV0ucHJvZ3JhbTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgc3RyaXAg
PSB7CisgICAgICBvcGVuOiBibG9jay5vcGVuU3RyaXAub3BlbiwKKyAgICAgIGNsb3NlOiBibG9j
ay5jbG9zZVN0cmlwLmNsb3NlLAorCisgICAgICAvLyBEZXRlcm1pbmUgdGhlIHN0YW5kYWxvbmUg
Y2FuZGlhY3kuIEJhc2ljYWxseSBmbGFnIG91ciBjb250ZW50IGFzIGJlaW5nIHBvc3NpYmx5IHN0
YW5kYWxvbmUKKyAgICAgIC8vIHNvIG91ciBwYXJlbnQgY2FuIGRldGVybWluZSBpZiB3ZSBhY3R1
YWxseSBhcmUgc3RhbmRhbG9uZQorICAgICAgb3BlblN0YW5kYWxvbmU6IGlzTmV4dFdoaXRlc3Bh
Y2UocHJvZ3JhbS5ib2R5KSwKKyAgICAgIGNsb3NlU3RhbmRhbG9uZTogaXNQcmV2V2hpdGVzcGFj
ZSgoZmlyc3RJbnZlcnNlIHx8IHByb2dyYW0pLmJvZHkpCisgICAgfTsKKworICAgIGlmIChibG9j
ay5vcGVuU3RyaXAuY2xvc2UpIHsKKyAgICAgIG9taXRSaWdodChwcm9ncmFtLmJvZHksIG51bGws
IHRydWUpOworICAgIH0KKworICAgIGlmIChpbnZlcnNlKSB7CisgICAgICB2YXIgaW52ZXJzZVN0
cmlwID0gYmxvY2suaW52ZXJzZVN0cmlwOworCisgICAgICBpZiAoaW52ZXJzZVN0cmlwLm9wZW4p
IHsKKyAgICAgICAgb21pdExlZnQocHJvZ3JhbS5ib2R5LCBudWxsLCB0cnVlKTsKKyAgICAgIH0K
KworICAgICAgaWYgKGludmVyc2VTdHJpcC5jbG9zZSkgeworICAgICAgICBvbWl0UmlnaHQoZmly
c3RJbnZlcnNlLmJvZHksIG51bGwsIHRydWUpOworICAgICAgfQorICAgICAgaWYgKGJsb2NrLmNs
b3NlU3RyaXAub3BlbikgeworICAgICAgICBvbWl0TGVmdChsYXN0SW52ZXJzZS5ib2R5LCBudWxs
LCB0cnVlKTsKKyAgICAgIH0KKworICAgICAgLy8gRmluZCBzdGFuZGFsb25lIGVsc2Ugc3RhdG1l
bnRzCisgICAgICBpZiAoIXRoaXMub3B0aW9ucy5pZ25vcmVTdGFuZGFsb25lICYmIGlzUHJldldo
aXRlc3BhY2UocHJvZ3JhbS5ib2R5KSAmJiBpc05leHRXaGl0ZXNwYWNlKGZpcnN0SW52ZXJzZS5i
b2R5KSkgeworICAgICAgICBvbWl0TGVmdChwcm9ncmFtLmJvZHkpOworICAgICAgICBvbWl0Umln
aHQoZmlyc3RJbnZlcnNlLmJvZHkpOworICAgICAgfQorICAgIH0gZWxzZSBpZiAoYmxvY2suY2xv
c2VTdHJpcC5vcGVuKSB7CisgICAgICBvbWl0TGVmdChwcm9ncmFtLmJvZHksIG51bGwsIHRydWUp
OworICAgIH0KKworICAgIHJldHVybiBzdHJpcDsKKyAgfTsKKworICBXaGl0ZXNwYWNlQ29udHJv
bC5wcm90b3R5cGUuRGVjb3JhdG9yID0gV2hpdGVzcGFjZUNvbnRyb2wucHJvdG90eXBlLk11c3Rh
Y2hlU3RhdGVtZW50ID0gZnVuY3Rpb24gKG11c3RhY2hlKSB7CisgICAgcmV0dXJuIG11c3RhY2hl
LnN0cmlwOworICB9OworCisgIFdoaXRlc3BhY2VDb250cm9sLnByb3RvdHlwZS5QYXJ0aWFsU3Rh
dGVtZW50ID0gV2hpdGVzcGFjZUNvbnRyb2wucHJvdG90eXBlLkNvbW1lbnRTdGF0ZW1lbnQgPSBm
dW5jdGlvbiAobm9kZSkgeworICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovCisgICAgdmFy
IHN0cmlwID0gbm9kZS5zdHJpcCB8fCB7fTsKKyAgICByZXR1cm4geworICAgICAgaW5saW5lU3Rh
bmRhbG9uZTogdHJ1ZSwKKyAgICAgIG9wZW46IHN0cmlwLm9wZW4sCisgICAgICBjbG9zZTogc3Ry
aXAuY2xvc2UKKyAgICB9OworICB9OworCisgIGZ1bmN0aW9uIGlzUHJldldoaXRlc3BhY2UoYm9k
eSwgaSwgaXNSb290KSB7CisgICAgaWYgKGkgPT09IHVuZGVmaW5lZCkgeworICAgICAgaSA9IGJv
ZHkubGVuZ3RoOworICAgIH0KKworICAgIC8vIE5vZGVzIHRoYXQgZW5kIHdpdGggbmV3bGluZXMg
YXJlIGNvbnNpZGVyZWQgd2hpdGVzcGFjZSAoYnV0IGFyZSBzcGVjaWFsCisgICAgLy8gY2FzZWQg
Zm9yIHN0cmlwIG9wZXJhdGlvbnMpCisgICAgdmFyIHByZXYgPSBib2R5W2kgLSAxXSwKKyAgICAg
ICAgc2libGluZyA9IGJvZHlbaSAtIDJdOworICAgIGlmICghcHJldikgeworICAgICAgcmV0dXJu
IGlzUm9vdDsKKyAgICB9CisKKyAgICBpZiAocHJldi50eXBlID09PSAnQ29udGVudFN0YXRlbWVu
dCcpIHsKKyAgICAgIHJldHVybiAoc2libGluZyB8fCAhaXNSb290ID8gL1xyP1xuXHMqPyQvIDog
LyhefFxyP1xuKVxzKj8kLykudGVzdChwcmV2Lm9yaWdpbmFsKTsKKyAgICB9CisgIH0KKyAgZnVu
Y3Rpb24gaXNOZXh0V2hpdGVzcGFjZShib2R5LCBpLCBpc1Jvb3QpIHsKKyAgICBpZiAoaSA9PT0g
dW5kZWZpbmVkKSB7CisgICAgICBpID0gLTE7CisgICAgfQorCisgICAgdmFyIG5leHQgPSBib2R5
W2kgKyAxXSwKKyAgICAgICAgc2libGluZyA9IGJvZHlbaSArIDJdOworICAgIGlmICghbmV4dCkg
eworICAgICAgcmV0dXJuIGlzUm9vdDsKKyAgICB9CisKKyAgICBpZiAobmV4dC50eXBlID09PSAn
Q29udGVudFN0YXRlbWVudCcpIHsKKyAgICAgIHJldHVybiAoc2libGluZyB8fCAhaXNSb290ID8g
L15ccyo/XHI/XG4vIDogL15ccyo/KFxyP1xufCQpLykudGVzdChuZXh0Lm9yaWdpbmFsKTsKKyAg
ICB9CisgIH0KKworICAvLyBNYXJrcyB0aGUgbm9kZSB0byB0aGUgcmlnaHQgb2YgdGhlIHBvc2l0
aW9uIGFzIG9taXR0ZWQuCisgIC8vIEkuZS4ge3tmb299fScgJyB3aWxsIG1hcmsgdGhlICcgJyBu
b2RlIGFzIG9taXR0ZWQuCisgIC8vCisgIC8vIElmIGkgaXMgdW5kZWZpbmVkLCB0aGVuIHRoZSBm
aXJzdCBjaGlsZCB3aWxsIGJlIG1hcmtlZCBhcyBzdWNoLgorICAvLworICAvLyBJZiBtdWxpdHBs
ZSBpcyB0cnV0aHkgdGhlbiBhbGwgd2hpdGVzcGFjZSB3aWxsIGJlIHN0cmlwcGVkIG91dCB1bnRp
bCBub24td2hpdGVzcGFjZQorICAvLyBjb250ZW50IGlzIG1ldC4KKyAgZnVuY3Rpb24gb21pdFJp
Z2h0KGJvZHksIGksIG11bHRpcGxlKSB7CisgICAgdmFyIGN1cnJlbnQgPSBib2R5W2kgPT0gbnVs
bCA/IDAgOiBpICsgMV07CisgICAgaWYgKCFjdXJyZW50IHx8IGN1cnJlbnQudHlwZSAhPT0gJ0Nv
bnRlbnRTdGF0ZW1lbnQnIHx8ICFtdWx0aXBsZSAmJiBjdXJyZW50LnJpZ2h0U3RyaXBwZWQpIHsK
KyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2YXIgb3JpZ2luYWwgPSBjdXJyZW50LnZhbHVl
OworICAgIGN1cnJlbnQudmFsdWUgPSBjdXJyZW50LnZhbHVlLnJlcGxhY2UobXVsdGlwbGUgPyAv
XlxzKy8gOiAvXlsgXHRdKlxyP1xuPy8sICcnKTsKKyAgICBjdXJyZW50LnJpZ2h0U3RyaXBwZWQg
PSBjdXJyZW50LnZhbHVlICE9PSBvcmlnaW5hbDsKKyAgfQorCisgIC8vIE1hcmtzIHRoZSBub2Rl
IHRvIHRoZSBsZWZ0IG9mIHRoZSBwb3NpdGlvbiBhcyBvbWl0dGVkLgorICAvLyBJLmUuICcgJ3t7
Zm9vfX0gd2lsbCBtYXJrIHRoZSAnICcgbm9kZSBhcyBvbWl0dGVkLgorICAvLworICAvLyBJZiBp
IGlzIHVuZGVmaW5lZCB0aGVuIHRoZSBsYXN0IGNoaWxkIHdpbGwgYmUgbWFya2VkIGFzIHN1Y2gu
CisgIC8vCisgIC8vIElmIG11bGl0cGxlIGlzIHRydXRoeSB0aGVuIGFsbCB3aGl0ZXNwYWNlIHdp
bGwgYmUgc3RyaXBwZWQgb3V0IHVudGlsIG5vbi13aGl0ZXNwYWNlCisgIC8vIGNvbnRlbnQgaXMg
bWV0LgorICBmdW5jdGlvbiBvbWl0TGVmdChib2R5LCBpLCBtdWx0aXBsZSkgeworICAgIHZhciBj
dXJyZW50ID0gYm9keVtpID09IG51bGwgPyBib2R5Lmxlbmd0aCAtIDEgOiBpIC0gMV07CisgICAg
aWYgKCFjdXJyZW50IHx8IGN1cnJlbnQudHlwZSAhPT0gJ0NvbnRlbnRTdGF0ZW1lbnQnIHx8ICFt
dWx0aXBsZSAmJiBjdXJyZW50LmxlZnRTdHJpcHBlZCkgeworICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIC8vIFdlIG9taXQgdGhlIGxhc3Qgbm9kZSBpZiBpdCdzIHdoaXRlc3BhY2Ugb25seSBh
bmQgbm90IHByZWNlZWRlZCBieSBhIG5vbi1jb250ZW50IG5vZGUuCisgICAgdmFyIG9yaWdpbmFs
ID0gY3VycmVudC52YWx1ZTsKKyAgICBjdXJyZW50LnZhbHVlID0gY3VycmVudC52YWx1ZS5yZXBs
YWNlKG11bHRpcGxlID8gL1xzKyQvIDogL1sgXHRdKyQvLCAnJyk7CisgICAgY3VycmVudC5sZWZ0
U3RyaXBwZWQgPSBjdXJyZW50LnZhbHVlICE9PSBvcmlnaW5hbDsKKyAgICByZXR1cm4gY3VycmVu
dC5sZWZ0U3RyaXBwZWQ7CisgIH0KKworICBtb2R1bGUuZXhwb3J0cyA9IFdoaXRlc3BhY2VDb250
cm9sOworfSk7CisvLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFz
ZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMeTR1THk0dUwyeHBZ
aTlvWVc1a2JHVmlZWEp6TDJOdmJYQnBiR1Z5TDNkb2FYUmxjM0JoWTJVdFkyOXVkSEp2YkM1cWN5
SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU96czdPenM3T3pzN1FVRkZRU3hYUVVG
VExHbENRVUZwUWl4SFFVRmxPMUZCUVdRc1QwRkJUeXg1UkVGQlJ5eEZRVUZGT3p0QlFVTnlReXhS
UVVGSkxFTkJRVU1zVDBGQlR5eEhRVUZITEU5QlFVOHNRMEZCUXp0SFFVTjRRanRCUVVORUxHMUNR
VUZwUWl4RFFVRkRMRk5CUVZNc1IwRkJSeXg1UWtGQllTeERRVUZET3p0QlFVVTFReXh0UWtGQmFV
SXNRMEZCUXl4VFFVRlRMRU5CUVVNc1QwRkJUeXhIUVVGSExGVkJRVk1zVDBGQlR5eEZRVUZGTzBG
QlEzUkVMRkZCUVUwc1dVRkJXU3hIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEU5QlFVOHNRMEZC
UXl4blFrRkJaMElzUTBGQlF6czdRVUZGY0VRc1VVRkJTU3hOUVVGTkxFZEJRVWNzUTBGQlF5eEpR
VUZKTEVOQlFVTXNWVUZCVlN4RFFVRkRPMEZCUXpsQ0xGRkJRVWtzUTBGQlF5eFZRVUZWTEVkQlFV
Y3NTVUZCU1N4RFFVRkRPenRCUVVWMlFpeFJRVUZKTEVsQlFVa3NSMEZCUnl4UFFVRlBMRU5CUVVN
c1NVRkJTU3hEUVVGRE8wRkJRM2hDTEZOQlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhG
UVVGRkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNc1IwRkJS
eXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdRVUZETTBNc1ZVRkJTU3hQUVVGUExF
ZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXp0VlFVTnFRaXhMUVVGTExFZEJRVWNzU1VG
QlNTeERRVUZETEUxQlFVMHNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenM3UVVGRmFrTXNWVUZC
U1N4RFFVRkRMRXRCUVVzc1JVRkJSVHRCUVVOV0xHbENRVUZUTzA5QlExWTdPMEZCUlVRc1ZVRkJT
U3hwUWtGQmFVSXNSMEZCUnl4blFrRkJaMElzUTBGQlF5eEpRVUZKTEVWQlFVVXNRMEZCUXl4RlFV
RkZMRTFCUVUwc1EwRkJRenRWUVVOeVJDeHBRa0ZCYVVJc1IwRkJSeXhuUWtGQlowSXNRMEZCUXl4
SlFVRkpMRVZCUVVVc1EwRkJReXhGUVVGRkxFMUJRVTBzUTBGQlF6dFZRVVZ5UkN4alFVRmpMRWRC
UVVjc1MwRkJTeXhEUVVGRExHTkJRV01zU1VGQlNTeHBRa0ZCYVVJN1ZVRkRNVVFzWlVGQlpTeEhR
VUZITEV0QlFVc3NRMEZCUXl4bFFVRmxMRWxCUVVrc2FVSkJRV2xDTzFWQlF6VkVMR2RDUVVGblFp
eEhRVUZITEV0QlFVc3NRMEZCUXl4blFrRkJaMElzU1VGQlNTeHBRa0ZCYVVJc1NVRkJTU3hwUWtG
QmFVSXNRMEZCUXpzN1FVRkZlRVlzVlVGQlNTeExRVUZMTEVOQlFVTXNTMEZCU3l4RlFVRkZPMEZC
UTJZc2FVSkJRVk1zUTBGQlF5eEpRVUZKTEVWQlFVVXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJR
eXhEUVVGRE8wOUJRekZDTzBGQlEwUXNWVUZCU1N4TFFVRkxMRU5CUVVNc1NVRkJTU3hGUVVGRk8w
RkJRMlFzWjBKQlFWRXNRMEZCUXl4SlFVRkpMRVZCUVVVc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBG
QlF5eERRVUZETzA5QlEzcENPenRCUVVWRUxGVkJRVWtzV1VGQldTeEpRVUZKTEdkQ1FVRm5RaXhG
UVVGRk8wRkJRM0JETEdsQ1FVRlRMRU5CUVVNc1NVRkJTU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERR
VUZET3p0QlFVVnVRaXhaUVVGSkxGRkJRVkVzUTBGQlF5eEpRVUZKTEVWQlFVVXNRMEZCUXl4RFFV
RkRMRVZCUVVVN08wRkJSWEpDTEdOQlFVa3NUMEZCVHl4RFFVRkRMRWxCUVVrc1MwRkJTeXhyUWtG
QmEwSXNSVUZCUlRzN1FVRkZka01zYlVKQlFVOHNRMEZCUXl4TlFVRk5MRWRCUVVjc1FVRkJReXhY
UVVGWExFTkJRVVVzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJR
eXhEUVVGRExFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1Yw
RkRPVVE3VTBGRFJqdFBRVU5HTzBGQlEwUXNWVUZCU1N4WlFVRlpMRWxCUVVrc1kwRkJZeXhGUVVG
Rk8wRkJRMnhETEdsQ1FVRlRMRU5CUVVNc1EwRkJReXhQUVVGUExFTkJRVU1zVDBGQlR5eEpRVUZK
TEU5QlFVOHNRMEZCUXl4UFFVRlBMRU5CUVVFc1EwRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6czdP
MEZCUjNKRUxHZENRVUZSTEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8w
OUJRMjVDTzBGQlEwUXNWVUZCU1N4WlFVRlpMRWxCUVVrc1pVRkJaU3hGUVVGRk96dEJRVVZ1UXl4
cFFrRkJVeXhEUVVGRExFbEJRVWtzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXpzN1FVRkZia0lz
WjBKQlFWRXNRMEZCUXl4RFFVRkRMRTlCUVU4c1EwRkJReXhQUVVGUExFbEJRVWtzVDBGQlR5eERR
VUZETEU5QlFVOHNRMEZCUVN4RFFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRE8wOUJRM0pFTzB0QlEw
WTdPMEZCUlVRc1YwRkJUeXhQUVVGUExFTkJRVU03UjBGRGFFSXNRMEZCUXpzN1FVRkZSaXh0UWtG
QmFVSXNRMEZCUXl4VFFVRlRMRU5CUVVNc1kwRkJZeXhIUVVNeFF5eHBRa0ZCYVVJc1EwRkJReXhU
UVVGVExFTkJRVU1zWTBGQll5eEhRVU14UXl4cFFrRkJhVUlzUTBGQlF5eFRRVUZUTEVOQlFVTXNj
VUpCUVhGQ0xFZEJRVWNzVlVGQlV5eExRVUZMTEVWQlFVVTdRVUZEYkVVc1VVRkJTU3hEUVVGRExF
MUJRVTBzUTBGQlF5eExRVUZMTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1FVRkRNMElzVVVG
QlNTeERRVUZETEUxQlFVMHNRMEZCUXl4TFFVRkxMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03
T3p0QlFVY3pRaXhSUVVGSkxFOUJRVThzUjBGQlJ5eExRVUZMTEVOQlFVTXNUMEZCVHl4SlFVRkpM
RXRCUVVzc1EwRkJReXhQUVVGUE8xRkJRM2hETEU5QlFVOHNSMEZCUnl4TFFVRkxMRU5CUVVNc1Qw
RkJUeXhKUVVGSkxFdEJRVXNzUTBGQlF5eFBRVUZQTzFGQlEzaERMRmxCUVZrc1IwRkJSeXhQUVVG
UE8xRkJRM1JDTEZkQlFWY3NSMEZCUnl4UFFVRlBMRU5CUVVNN08wRkJSVEZDTEZGQlFVa3NUMEZC
VHl4SlFVRkpMRTlCUVU4c1EwRkJReXhQUVVGUExFVkJRVVU3UVVGRE9VSXNhMEpCUVZrc1IwRkJS
eXhQUVVGUExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRTlCUVU4c1Ew
RkJRenM3TzBGQlIzWkRMR0ZCUVU4c1YwRkJWeXhEUVVGRExFOUJRVThzUlVGQlJUdEJRVU14UWl4
dFFrRkJWeXhIUVVGSExGZEJRVmNzUTBGQlF5eEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRWxC
UVVrc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNUMEZCVHl4RFFVRkRP
MDlCUTNKRk8wdEJRMFk3TzBGQlJVUXNVVUZCU1N4TFFVRkxMRWRCUVVjN1FVRkRWaXhWUVVGSkxF
VkJRVVVzUzBGQlN5eERRVUZETEZOQlFWTXNRMEZCUXl4SlFVRkpPMEZCUXpGQ0xGZEJRVXNzUlVG
QlJTeExRVUZMTEVOQlFVTXNWVUZCVlN4RFFVRkRMRXRCUVVzN096czdRVUZKTjBJc2IwSkJRV01z
UlVGQlJTeG5Ra0ZCWjBJc1EwRkJReXhQUVVGUExFTkJRVU1zU1VGQlNTeERRVUZETzBGQlF6bERM
SEZDUVVGbExFVkJRVVVzWjBKQlFXZENMRU5CUVVNc1EwRkJReXhaUVVGWkxFbEJRVWtzVDBGQlR5
eERRVUZCTEVOQlFVVXNTVUZCU1N4RFFVRkRPMHRCUTJ4RkxFTkJRVU03TzBGQlJVWXNVVUZCU1N4
TFFVRkxMRU5CUVVNc1UwRkJVeXhEUVVGRExFdEJRVXNzUlVGQlJUdEJRVU42UWl4bFFVRlRMRU5C
UVVNc1QwRkJUeXhEUVVGRExFbEJRVWtzUlVGQlJTeEpRVUZKTEVWQlFVVXNTVUZCU1N4RFFVRkRM
RU5CUVVNN1MwRkRja003TzBGQlJVUXNVVUZCU1N4UFFVRlBMRVZCUVVVN1FVRkRXQ3hWUVVGSkxG
bEJRVmtzUjBGQlJ5eExRVUZMTEVOQlFVTXNXVUZCV1N4RFFVRkRPenRCUVVWMFF5eFZRVUZKTEZs
QlFWa3NRMEZCUXl4SlFVRkpMRVZCUVVVN1FVRkRja0lzWjBKQlFWRXNRMEZCUXl4UFFVRlBMRU5C
UVVNc1NVRkJTU3hGUVVGRkxFbEJRVWtzUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0UFFVTndR
enM3UVVGRlJDeFZRVUZKTEZsQlFWa3NRMEZCUXl4TFFVRkxMRVZCUVVVN1FVRkRkRUlzYVVKQlFW
TXNRMEZCUXl4WlFVRlpMRU5CUVVNc1NVRkJTU3hGUVVGRkxFbEJRVWtzUlVGQlJTeEpRVUZKTEVO
QlFVTXNRMEZCUXp0UFFVTXhRenRCUVVORUxGVkJRVWtzUzBGQlN5eERRVUZETEZWQlFWVXNRMEZC
UXl4SlFVRkpMRVZCUVVVN1FVRkRla0lzWjBKQlFWRXNRMEZCUXl4WFFVRlhMRU5CUVVNc1NVRkJT
U3hGUVVGRkxFbEJRVWtzUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0UFFVTjRRenM3TzBGQlIw
UXNWVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zWjBKQlFXZENMRWxCUXpO
Q0xHZENRVUZuUWl4RFFVRkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGRE9VSXNaMEpC
UVdkQ0xFTkJRVU1zV1VGQldTeERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZPMEZCUXpGRExHZENR
VUZSTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8wRkJRM1pDTEdsQ1FV
RlRMRU5CUVVNc1dVRkJXU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzA5QlF6bENPMHRCUTBZ
c1RVRkJUU3hKUVVGSkxFdEJRVXNzUTBGQlF5eFZRVUZWTEVOQlFVTXNTVUZCU1N4RlFVRkZPMEZC
UTJoRExHTkJRVkVzUTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RlFVRkZMRWxCUVVrc1JVRkJS
U3hKUVVGSkxFTkJRVU1zUTBGQlF6dExRVU53UXpzN1FVRkZSQ3hYUVVGUExFdEJRVXNzUTBGQlF6
dEhRVU5rTEVOQlFVTTdPMEZCUlVZc2JVSkJRV2xDTEVOQlFVTXNVMEZCVXl4RFFVRkRMRk5CUVZN
c1IwRkRja01zYVVKQlFXbENMRU5CUVVNc1UwRkJVeXhEUVVGRExHbENRVUZwUWl4SFFVRkhMRlZC
UVZNc1VVRkJVU3hGUVVGRk8wRkJRMnBGTEZkQlFVOHNVVUZCVVN4RFFVRkRMRXRCUVVzc1EwRkJR
enRIUVVOMlFpeERRVUZET3p0QlFVVkdMRzFDUVVGcFFpeERRVUZETEZOQlFWTXNRMEZCUXl4blFr
RkJaMElzUjBGRGVFTXNhVUpCUVdsQ0xFTkJRVU1zVTBGQlV5eERRVUZETEdkQ1FVRm5RaXhIUVVG
SExGVkJRVk1zU1VGQlNTeEZRVUZGT3p0QlFVVm9SU3hSUVVGSkxFdEJRVXNzUjBGQlJ5eEpRVUZK
TEVOQlFVTXNTMEZCU3l4SlFVRkpMRVZCUVVVc1EwRkJRenRCUVVNM1FpeFhRVUZQTzBGQlEwd3Nj
MEpCUVdkQ0xFVkJRVVVzU1VGQlNUdEJRVU4wUWl4VlFVRkpMRVZCUVVVc1MwRkJTeXhEUVVGRExF
bEJRVWs3UVVGRGFFSXNWMEZCU3l4RlFVRkZMRXRCUVVzc1EwRkJReXhMUVVGTE8wdEJRMjVDTEVO
QlFVTTdSMEZEU0N4RFFVRkRPenRCUVVkR0xGZEJRVk1zWjBKQlFXZENMRU5CUVVNc1NVRkJTU3hG
UVVGRkxFTkJRVU1zUlVGQlJTeE5RVUZOTEVWQlFVVTdRVUZEZWtNc1VVRkJTU3hEUVVGRExFdEJR
VXNzVTBGQlV5eEZRVUZGTzBGQlEyNUNMRTlCUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRT
eERRVUZETzB0QlEycENPenM3TzBGQlNVUXNVVUZCU1N4SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVG
RExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZEYkVJc1QwRkJUeXhIUVVGSExFbEJRVWtz
UTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRNVUlzVVVGQlNTeERR
VUZETEVsQlFVa3NSVUZCUlR0QlFVTlVMR0ZCUVU4c1RVRkJUU3hEUVVGRE8wdEJRMlk3TzBGQlJV
UXNVVUZCU1N4SlFVRkpMRU5CUVVNc1NVRkJTU3hMUVVGTExHdENRVUZyUWl4RlFVRkZPMEZCUTNC
RExHRkJRVThzUTBGQlF5eFBRVUZQTEVsQlFVa3NRMEZCUXl4TlFVRk5MRWRCUVVrc1dVRkJXU3hI
UVVGTExHZENRVUZuUWl4RFFVRkRMRU5CUVVVc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFJR
VUZSTEVOQlFVTXNRMEZCUXp0TFFVTjJSanRIUVVOR08wRkJRMFFzVjBGQlV5eG5Ra0ZCWjBJc1Ew
RkJReXhKUVVGSkxFVkJRVVVzUTBGQlF5eEZRVUZGTEUxQlFVMHNSVUZCUlR0QlFVTjZReXhSUVVG
SkxFTkJRVU1zUzBGQlN5eFRRVUZUTEVWQlFVVTdRVUZEYmtJc1QwRkJReXhIUVVGSExFTkJRVU1z
UTBGQlF5eERRVUZETzB0QlExSTdPMEZCUlVRc1VVRkJTU3hKUVVGSkxFZEJRVWNzU1VGQlNTeERR
VUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkRiRUlzVDBGQlR5eEhRVUZITEVsQlFV
a3NRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU03UVVGRE1VSXNVVUZCU1N4
RFFVRkRMRWxCUVVrc1JVRkJSVHRCUVVOVUxHRkJRVThzVFVGQlRTeERRVUZETzB0QlEyWTdPMEZC
UlVRc1VVRkJTU3hKUVVGSkxFTkJRVU1zU1VGQlNTeExRVUZMTEd0Q1FVRnJRaXhGUVVGRk8wRkJR
M0JETEdGQlFVOHNRMEZCUXl4UFFVRlBMRWxCUVVrc1EwRkJReXhOUVVGTkxFZEJRVWtzV1VGQldT
eEhRVUZMTEdkQ1FVRm5RaXhEUVVGRExFTkJRVVVzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4
UlFVRlJMRU5CUVVNc1EwRkJRenRMUVVOMlJqdEhRVU5HT3pzN096czdPenM3UVVGVFJDeFhRVUZU
TEZOQlFWTXNRMEZCUXl4SlFVRkpMRVZCUVVVc1EwRkJReXhGUVVGRkxGRkJRVkVzUlVGQlJUdEJR
VU53UXl4UlFVRkpMRTlCUVU4c1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVsQlFV
a3NSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETzBG
QlF6RkRMRkZCUVVrc1EwRkJReXhQUVVGUExFbEJRVWtzVDBGQlR5eERRVUZETEVsQlFVa3NTMEZC
U3l4clFrRkJhMElzU1VGQlN5eERRVUZETEZGQlFWRXNTVUZCU1N4UFFVRlBMRU5CUVVNc1lVRkJZ
U3hCUVVGRExFVkJRVVU3UVVGRE0wWXNZVUZCVHp0TFFVTlNPenRCUVVWRUxGRkJRVWtzVVVGQlVT
eEhRVUZITEU5QlFVOHNRMEZCUXl4TFFVRkxMRU5CUVVNN1FVRkROMElzVjBGQlR5eERRVUZETEV0
QlFVc3NSMEZCUnl4UFFVRlBMRU5CUVVNc1MwRkJTeXhEUVVGRExFOUJRVThzUTBGQlF5eFJRVUZS
TEVkQlFVa3NUVUZCVFN4SFFVRkxMR1ZCUVdVc1FVRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eERR
VUZETzBGQlEyNUdMRmRCUVU4c1EwRkJReXhoUVVGaExFZEJRVWNzVDBGQlR5eERRVUZETEV0QlFV
c3NTMEZCU3l4UlFVRlJMRU5CUVVNN1IwRkRjRVE3T3pzN096czdPenRCUVZORUxGZEJRVk1zVVVG
QlVTeERRVUZETEVsQlFVa3NSVUZCUlN4RFFVRkRMRVZCUVVVc1VVRkJVU3hGUVVGRk8wRkJRMjVE
TEZGQlFVa3NUMEZCVHl4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRExFbEJRVWtzU1VGQlNTeEhR
VUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5
eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTjRSQ3hSUVVGSkxFTkJRVU1zVDBGQlR5eEpRVUZKTEU5
QlFVOHNRMEZCUXl4SlFVRkpMRXRCUVVzc2EwSkJRV3RDTEVsQlFVc3NRMEZCUXl4UlFVRlJMRWxC
UVVrc1QwRkJUeXhEUVVGRExGbEJRVmtzUVVGQlF5eEZRVUZGTzBGQlF6RkdMR0ZCUVU4N1MwRkRV
anM3TzBGQlIwUXNVVUZCU1N4UlFVRlJMRWRCUVVjc1QwRkJUeXhEUVVGRExFdEJRVXNzUTBGQlF6
dEJRVU0zUWl4WFFVRlBMRU5CUVVNc1MwRkJTeXhIUVVGSExFOUJRVThzUTBGQlF5eExRVUZMTEVO
QlFVTXNUMEZCVHl4RFFVRkRMRkZCUVZFc1IwRkJTU3hOUVVGTkxFZEJRVXNzVTBGQlV5eEJRVUZE
TEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNN1FVRkROMFVzVjBGQlR5eERRVUZETEZsQlFWa3NS
MEZCUnl4UFFVRlBMRU5CUVVNc1MwRkJTeXhMUVVGTExGRkJRVkVzUTBGQlF6dEJRVU5zUkN4WFFV
RlBMRTlCUVU4c1EwRkJReXhaUVVGWkxFTkJRVU03UjBGRE4wSTdPMjFDUVVWakxHbENRVUZwUWlJ
c0ltWnBiR1VpT2lKM2FHbDBaWE53WVdObExXTnZiblJ5YjJ3dWFuTWlMQ0p6YjNWeVkyVnpRMjl1
ZEdWdWRDSTZXeUpwYlhCdmNuUWdWbWx6YVhSdmNpQm1jbTl0SUNjdUwzWnBjMmwwYjNJbk8xeHVY
RzVtZFc1amRHbHZiaUJYYUdsMFpYTndZV05sUTI5dWRISnZiQ2h2Y0hScGIyNXpJRDBnZTMwcElI
dGNiaUFnZEdocGN5NXZjSFJwYjI1eklEMGdiM0IwYVc5dWN6dGNibjFjYmxkb2FYUmxjM0JoWTJW
RGIyNTBjbTlzTG5CeWIzUnZkSGx3WlNBOUlHNWxkeUJXYVhOcGRHOXlLQ2s3WEc1Y2JsZG9hWFJs
YzNCaFkyVkRiMjUwY205c0xuQnliM1J2ZEhsd1pTNVFjbTluY21GdElEMGdablZ1WTNScGIyNG9j
SEp2WjNKaGJTa2dlMXh1SUNCamIyNXpkQ0JrYjFOMFlXNWtZV3h2Ym1VZ1BTQWhkR2hwY3k1dmNI
UnBiMjV6TG1sbmJtOXlaVk4wWVc1a1lXeHZibVU3WEc1Y2JpQWdiR1YwSUdselVtOXZkQ0E5SUNG
MGFHbHpMbWx6VW05dmRGTmxaVzQ3WEc0Z0lIUm9hWE11YVhOU2IyOTBVMlZsYmlBOUlIUnlkV1U3
WEc1Y2JpQWdiR1YwSUdKdlpIa2dQU0J3Y205bmNtRnRMbUp2WkhrN1hHNGdJR1p2Y2lBb2JHVjBJ
R2tnUFNBd0xDQnNJRDBnWW05a2VTNXNaVzVuZEdnN0lHa2dQQ0JzT3lCcEt5c3BJSHRjYmlBZ0lD
QnNaWFFnWTNWeWNtVnVkQ0E5SUdKdlpIbGJhVjBzWEc0Z0lDQWdJQ0FnSUhOMGNtbHdJRDBnZEdo
cGN5NWhZMk5sY0hRb1kzVnljbVZ1ZENrN1hHNWNiaUFnSUNCcFppQW9JWE4wY21sd0tTQjdYRzRn
SUNBZ0lDQmpiMjUwYVc1MVpUdGNiaUFnSUNCOVhHNWNiaUFnSUNCc1pYUWdYMmx6VUhKbGRsZG9h
WFJsYzNCaFkyVWdQU0JwYzFCeVpYWlhhR2wwWlhOd1lXTmxLR0p2Wkhrc0lHa3NJR2x6VW05dmRD
a3NYRzRnSUNBZ0lDQWdJRjlwYzA1bGVIUlhhR2wwWlhOd1lXTmxJRDBnYVhOT1pYaDBWMmhwZEdW
emNHRmpaU2hpYjJSNUxDQnBMQ0JwYzFKdmIzUXBMRnh1WEc0Z0lDQWdJQ0FnSUc5d1pXNVRkR0Z1
WkdGc2IyNWxJRDBnYzNSeWFYQXViM0JsYmxOMFlXNWtZV3h2Ym1VZ0ppWWdYMmx6VUhKbGRsZG9h
WFJsYzNCaFkyVXNYRzRnSUNBZ0lDQWdJR05zYjNObFUzUmhibVJoYkc5dVpTQTlJSE4wY21sd0xt
TnNiM05sVTNSaGJtUmhiRzl1WlNBbUppQmZhWE5PWlhoMFYyaHBkR1Z6Y0dGalpTeGNiaUFnSUNB
Z0lDQWdhVzVzYVc1bFUzUmhibVJoYkc5dVpTQTlJSE4wY21sd0xtbHViR2x1WlZOMFlXNWtZV3h2
Ym1VZ0ppWWdYMmx6VUhKbGRsZG9hWFJsYzNCaFkyVWdKaVlnWDJselRtVjRkRmRvYVhSbGMzQmhZ
MlU3WEc1Y2JpQWdJQ0JwWmlBb2MzUnlhWEF1WTJ4dmMyVXBJSHRjYmlBZ0lDQWdJRzl0YVhSU2FX
ZG9kQ2hpYjJSNUxDQnBMQ0IwY25WbEtUdGNiaUFnSUNCOVhHNGdJQ0FnYVdZZ0tITjBjbWx3TG05
d1pXNHBJSHRjYmlBZ0lDQWdJRzl0YVhSTVpXWjBLR0p2Wkhrc0lHa3NJSFJ5ZFdVcE8xeHVJQ0Fn
SUgxY2JseHVJQ0FnSUdsbUlDaGtiMU4wWVc1a1lXeHZibVVnSmlZZ2FXNXNhVzVsVTNSaGJtUmhi
Rzl1WlNrZ2UxeHVJQ0FnSUNBZ2IyMXBkRkpwWjJoMEtHSnZaSGtzSUdrcE8xeHVYRzRnSUNBZ0lD
QnBaaUFvYjIxcGRFeGxablFvWW05a2VTd2dhU2twSUh0Y2JpQWdJQ0FnSUNBZ0x5OGdTV1lnZDJV
Z1lYSmxJRzl1SUdFZ2MzUmhibVJoYkc5dVpTQnViMlJsTENCellYWmxJSFJvWlNCcGJtUmxiblFn
YVc1bWJ5Qm1iM0lnY0dGeWRHbGhiSE5jYmlBZ0lDQWdJQ0FnYVdZZ0tHTjFjbkpsYm5RdWRIbHda
U0E5UFQwZ0oxQmhjblJwWVd4VGRHRjBaVzFsYm5RbktTQjdYRzRnSUNBZ0lDQWdJQ0FnTHk4Z1VI
VnNiQ0J2ZFhRZ2RHaGxJSGRvYVhSbGMzQmhZMlVnWm5KdmJTQjBhR1VnWm1sdVlXd2diR2x1WlZ4
dUlDQWdJQ0FnSUNBZ0lHTjFjbkpsYm5RdWFXNWtaVzUwSUQwZ0tDOG9XeUJjWEhSZEt5UXBMeWt1
WlhobFl5aGliMlI1VzJrZ0xTQXhYUzV2Y21sbmFXNWhiQ2xiTVYwN1hHNGdJQ0FnSUNBZ0lIMWNi
aUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJQ0FnYVdZZ0tHUnZVM1JoYm1SaGJHOXVaU0FtSmlCdmNH
VnVVM1JoYm1SaGJHOXVaU2tnZTF4dUlDQWdJQ0FnYjIxcGRGSnBaMmgwS0NoamRYSnlaVzUwTG5C
eWIyZHlZVzBnZkh3Z1kzVnljbVZ1ZEM1cGJuWmxjbk5sS1M1aWIyUjVLVHRjYmx4dUlDQWdJQ0Fn
THk4Z1UzUnlhWEFnYjNWMElIUm9aU0J3Y21WMmFXOTFjeUJqYjI1MFpXNTBJRzV2WkdVZ2FXWWdh
WFFuY3lCM2FHbDBaWE53WVdObElHOXViSGxjYmlBZ0lDQWdJRzl0YVhSTVpXWjBLR0p2Wkhrc0lH
a3BPMXh1SUNBZ0lIMWNiaUFnSUNCcFppQW9aRzlUZEdGdVpHRnNiMjVsSUNZbUlHTnNiM05sVTNS
aGJtUmhiRzl1WlNrZ2UxeHVJQ0FnSUNBZ0x5OGdRV3gzWVhseklITjBjbWx3SUhSb1pTQnVaWGgw
SUc1dlpHVmNiaUFnSUNBZ0lHOXRhWFJTYVdkb2RDaGliMlI1TENCcEtUdGNibHh1SUNBZ0lDQWdi
MjFwZEV4bFpuUW9LR04xY25KbGJuUXVhVzUyWlhKelpTQjhmQ0JqZFhKeVpXNTBMbkJ5YjJkeVlX
MHBMbUp2WkhrcE8xeHVJQ0FnSUgxY2JpQWdmVnh1WEc0Z0lISmxkSFZ5YmlCd2NtOW5jbUZ0TzF4
dWZUdGNibHh1VjJocGRHVnpjR0ZqWlVOdmJuUnliMnd1Y0hKdmRHOTBlWEJsTGtKc2IyTnJVM1Jo
ZEdWdFpXNTBJRDFjYmxkb2FYUmxjM0JoWTJWRGIyNTBjbTlzTG5CeWIzUnZkSGx3WlM1RVpXTnZj
bUYwYjNKQ2JHOWpheUE5WEc1WGFHbDBaWE53WVdObFEyOXVkSEp2YkM1d2NtOTBiM1I1Y0dVdVVH
RnlkR2xoYkVKc2IyTnJVM1JoZEdWdFpXNTBJRDBnWm5WdVkzUnBiMjRvWW14dlkyc3BJSHRjYmlB
Z2RHaHBjeTVoWTJObGNIUW9ZbXh2WTJzdWNISnZaM0poYlNrN1hHNGdJSFJvYVhNdVlXTmpaWEIw
S0dKc2IyTnJMbWx1ZG1WeWMyVXBPMXh1WEc0Z0lDOHZJRVpwYm1RZ2RHaGxJR2x1ZG1WeWMyVWdj
SEp2WjNKaGJTQjBhR0YwSUdseklHbHVkbTlzWldRZ2QybDBhQ0IzYUdsMFpYTndZV05sSUhOMGNt
bHdjR2x1Wnk1Y2JpQWdiR1YwSUhCeWIyZHlZVzBnUFNCaWJHOWpheTV3Y205bmNtRnRJSHg4SUdK
c2IyTnJMbWx1ZG1WeWMyVXNYRzRnSUNBZ0lDQnBiblpsY25ObElEMGdZbXh2WTJzdWNISnZaM0po
YlNBbUppQmliRzlqYXk1cGJuWmxjbk5sTEZ4dUlDQWdJQ0FnWm1seWMzUkpiblpsY25ObElEMGdh
VzUyWlhKelpTeGNiaUFnSUNBZ0lHeGhjM1JKYm5abGNuTmxJRDBnYVc1MlpYSnpaVHRjYmx4dUlD
QnBaaUFvYVc1MlpYSnpaU0FtSmlCcGJuWmxjbk5sTG1Ob1lXbHVaV1FwSUh0Y2JpQWdJQ0JtYVhK
emRFbHVkbVZ5YzJVZ1BTQnBiblpsY25ObExtSnZaSGxiTUYwdWNISnZaM0poYlR0Y2JseHVJQ0Fn
SUM4dklGZGhiR3NnZEdobElHbHVkbVZ5YzJVZ1kyaGhhVzRnZEc4Z1ptbHVaQ0IwYUdVZ2JHRnpk
Q0JwYm5abGNuTmxJSFJvWVhRZ2FYTWdZV04wZFdGc2JIa2dhVzRnZEdobElHTm9ZV2x1TGx4dUlD
QWdJSGRvYVd4bElDaHNZWE4wU1c1MlpYSnpaUzVqYUdGcGJtVmtLU0I3WEc0Z0lDQWdJQ0JzWVhO
MFNXNTJaWEp6WlNBOUlHeGhjM1JKYm5abGNuTmxMbUp2WkhsYmJHRnpkRWx1ZG1WeWMyVXVZbTlr
ZVM1c1pXNW5kR2dnTFNBeFhTNXdjbTluY21GdE8xeHVJQ0FnSUgxY2JpQWdmVnh1WEc0Z0lHeGxk
Q0J6ZEhKcGNDQTlJSHRjYmlBZ0lDQnZjR1Z1T2lCaWJHOWpheTV2Y0dWdVUzUnlhWEF1YjNCbGJp
eGNiaUFnSUNCamJHOXpaVG9nWW14dlkyc3VZMnh2YzJWVGRISnBjQzVqYkc5elpTeGNibHh1SUNB
Z0lDOHZJRVJsZEdWeWJXbHVaU0IwYUdVZ2MzUmhibVJoYkc5dVpTQmpZVzVrYVdGamVTNGdRbUZ6
YVdOaGJHeDVJR1pzWVdjZ2IzVnlJR052Ym5SbGJuUWdZWE1nWW1WcGJtY2djRzl6YzJsaWJIa2dj
M1JoYm1SaGJHOXVaVnh1SUNBZ0lDOHZJSE52SUc5MWNpQndZWEpsYm5RZ1kyRnVJR1JsZEdWeWJX
bHVaU0JwWmlCM1pTQmhZM1IxWVd4c2VTQmhjbVVnYzNSaGJtUmhiRzl1WlZ4dUlDQWdJRzl3Wlc1
VGRHRnVaR0ZzYjI1bE9pQnBjMDVsZUhSWGFHbDBaWE53WVdObEtIQnliMmR5WVcwdVltOWtlU2tz
WEc0Z0lDQWdZMnh2YzJWVGRHRnVaR0ZzYjI1bE9pQnBjMUJ5WlhaWGFHbDBaWE53WVdObEtDaG1h
WEp6ZEVsdWRtVnljMlVnZkh3Z2NISnZaM0poYlNrdVltOWtlU2xjYmlBZ2ZUdGNibHh1SUNCcFpp
QW9ZbXh2WTJzdWIzQmxibE4wY21sd0xtTnNiM05sS1NCN1hHNGdJQ0FnYjIxcGRGSnBaMmgwS0hC
eWIyZHlZVzB1WW05a2VTd2diblZzYkN3Z2RISjFaU2s3WEc0Z0lIMWNibHh1SUNCcFppQW9hVzUy
WlhKelpTa2dlMXh1SUNBZ0lHeGxkQ0JwYm5abGNuTmxVM1J5YVhBZ1BTQmliRzlqYXk1cGJuWmxj
bk5sVTNSeWFYQTdYRzVjYmlBZ0lDQnBaaUFvYVc1MlpYSnpaVk4wY21sd0xtOXdaVzRwSUh0Y2Jp
QWdJQ0FnSUc5dGFYUk1aV1owS0hCeWIyZHlZVzB1WW05a2VTd2diblZzYkN3Z2RISjFaU2s3WEc0
Z0lDQWdmVnh1WEc0Z0lDQWdhV1lnS0dsdWRtVnljMlZUZEhKcGNDNWpiRzl6WlNrZ2UxeHVJQ0Fn
SUNBZ2IyMXBkRkpwWjJoMEtHWnBjbk4wU1c1MlpYSnpaUzVpYjJSNUxDQnVkV3hzTENCMGNuVmxL
VHRjYmlBZ0lDQjlYRzRnSUNBZ2FXWWdLR0pzYjJOckxtTnNiM05sVTNSeWFYQXViM0JsYmlrZ2Ux
eHVJQ0FnSUNBZ2IyMXBkRXhsWm5Rb2JHRnpkRWx1ZG1WeWMyVXVZbTlrZVN3Z2JuVnNiQ3dnZEhK
MVpTazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ0x5OGdSbWx1WkNCemRHRnVaR0ZzYjI1bElHVnNjMlVn
YzNSaGRHMWxiblJ6WEc0Z0lDQWdhV1lnS0NGMGFHbHpMbTl3ZEdsdmJuTXVhV2R1YjNKbFUzUmhi
bVJoYkc5dVpWeHVJQ0FnSUNBZ0lDQW1KaUJwYzFCeVpYWlhhR2wwWlhOd1lXTmxLSEJ5YjJkeVlX
MHVZbTlrZVNsY2JpQWdJQ0FnSUNBZ0ppWWdhWE5PWlhoMFYyaHBkR1Z6Y0dGalpTaG1hWEp6ZEVs
dWRtVnljMlV1WW05a2VTa3BJSHRjYmlBZ0lDQWdJRzl0YVhSTVpXWjBLSEJ5YjJkeVlXMHVZbTlr
ZVNrN1hHNGdJQ0FnSUNCdmJXbDBVbWxuYUhRb1ptbHljM1JKYm5abGNuTmxMbUp2WkhrcE8xeHVJ
Q0FnSUgxY2JpQWdmU0JsYkhObElHbG1JQ2hpYkc5amF5NWpiRzl6WlZOMGNtbHdMbTl3Wlc0cElI
dGNiaUFnSUNCdmJXbDBUR1ZtZENod2NtOW5jbUZ0TG1KdlpIa3NJRzUxYkd3c0lIUnlkV1VwTzF4
dUlDQjlYRzVjYmlBZ2NtVjBkWEp1SUhOMGNtbHdPMXh1ZlR0Y2JseHVWMmhwZEdWemNHRmpaVU52
Ym5SeWIyd3VjSEp2ZEc5MGVYQmxMa1JsWTI5eVlYUnZjaUE5WEc1WGFHbDBaWE53WVdObFEyOXVk
SEp2YkM1d2NtOTBiM1I1Y0dVdVRYVnpkR0ZqYUdWVGRHRjBaVzFsYm5RZ1BTQm1kVzVqZEdsdmJp
aHRkWE4wWVdOb1pTa2dlMXh1SUNCeVpYUjFjbTRnYlhWemRHRmphR1V1YzNSeWFYQTdYRzU5TzF4
dVhHNVhhR2wwWlhOd1lXTmxRMjl1ZEhKdmJDNXdjbTkwYjNSNWNHVXVVR0Z5ZEdsaGJGTjBZWFJs
YldWdWRDQTlYRzRnSUNBZ1YyaHBkR1Z6Y0dGalpVTnZiblJ5YjJ3dWNISnZkRzkwZVhCbExrTnZi
VzFsYm5SVGRHRjBaVzFsYm5RZ1BTQm1kVzVqZEdsdmJpaHViMlJsS1NCN1hHNGdJQzhxSUdsemRH
RnVZblZzSUdsbmJtOXlaU0J1WlhoMElDb3ZYRzRnSUd4bGRDQnpkSEpwY0NBOUlHNXZaR1V1YzNS
eWFYQWdmSHdnZTMwN1hHNGdJSEpsZEhWeWJpQjdYRzRnSUNBZ2FXNXNhVzVsVTNSaGJtUmhiRzl1
WlRvZ2RISjFaU3hjYmlBZ0lDQnZjR1Z1T2lCemRISnBjQzV2Y0dWdUxGeHVJQ0FnSUdOc2IzTmxP
aUJ6ZEhKcGNDNWpiRzl6WlZ4dUlDQjlPMXh1ZlR0Y2JseHVYRzVtZFc1amRHbHZiaUJwYzFCeVpY
WlhhR2wwWlhOd1lXTmxLR0p2Wkhrc0lHa3NJR2x6VW05dmRDa2dlMXh1SUNCcFppQW9hU0E5UFQw
Z2RXNWtaV1pwYm1Wa0tTQjdYRzRnSUNBZ2FTQTlJR0p2WkhrdWJHVnVaM1JvTzF4dUlDQjlYRzVj
YmlBZ0x5OGdUbTlrWlhNZ2RHaGhkQ0JsYm1RZ2QybDBhQ0J1Wlhkc2FXNWxjeUJoY21VZ1kyOXVj
MmxrWlhKbFpDQjNhR2wwWlhOd1lXTmxJQ2hpZFhRZ1lYSmxJSE53WldOcFlXeGNiaUFnTHk4Z1ky
RnpaV1FnWm05eUlITjBjbWx3SUc5d1pYSmhkR2x2Ym5NcFhHNGdJR3hsZENCd2NtVjJJRDBnWW05
a2VWdHBJQzBnTVYwc1hHNGdJQ0FnSUNCemFXSnNhVzVuSUQwZ1ltOWtlVnRwSUMwZ01sMDdYRzRn
SUdsbUlDZ2hjSEpsZGlrZ2UxeHVJQ0FnSUhKbGRIVnliaUJwYzFKdmIzUTdYRzRnSUgxY2JseHVJ
Q0JwWmlBb2NISmxkaTUwZVhCbElEMDlQU0FuUTI5dWRHVnVkRk4wWVhSbGJXVnVkQ2NwSUh0Y2Jp
QWdJQ0J5WlhSMWNtNGdLSE5wWW14cGJtY2dmSHdnSVdselVtOXZkQ0EvSUNndlhGeHlQMXhjYmx4
Y2N5by9KQzhwSURvZ0tDOG9YbnhjWEhJL1hGeHVLVnhjY3lvL0pDOHBLUzUwWlhOMEtIQnlaWFl1
YjNKcFoybHVZV3dwTzF4dUlDQjlYRzU5WEc1bWRXNWpkR2x2YmlCcGMwNWxlSFJYYUdsMFpYTndZ
V05sS0dKdlpIa3NJR2tzSUdselVtOXZkQ2tnZTF4dUlDQnBaaUFvYVNBOVBUMGdkVzVrWldacGJt
VmtLU0I3WEc0Z0lDQWdhU0E5SUMweE8xeHVJQ0I5WEc1Y2JpQWdiR1YwSUc1bGVIUWdQU0JpYjJS
NVcya2dLeUF4WFN4Y2JpQWdJQ0FnSUhOcFlteHBibWNnUFNCaWIyUjVXMmtnS3lBeVhUdGNiaUFn
YVdZZ0tDRnVaWGgwS1NCN1hHNGdJQ0FnY21WMGRYSnVJR2x6VW05dmREdGNiaUFnZlZ4dVhHNGdJ
R2xtSUNodVpYaDBMblI1Y0dVZ1BUMDlJQ2REYjI1MFpXNTBVM1JoZEdWdFpXNTBKeWtnZTF4dUlD
QWdJSEpsZEhWeWJpQW9jMmxpYkdsdVp5QjhmQ0FoYVhOU2IyOTBJRDhnS0M5ZVhGeHpLajljWEhJ
L1hGeHVMeWtnT2lBb0wxNWNYSE1xUHloY1hISS9YRnh1ZkNRcEx5a3BMblJsYzNRb2JtVjRkQzV2
Y21sbmFXNWhiQ2s3WEc0Z0lIMWNibjFjYmx4dUx5OGdUV0Z5YTNNZ2RHaGxJRzV2WkdVZ2RHOGdk
R2hsSUhKcFoyaDBJRzltSUhSb1pTQndiM05wZEdsdmJpQmhjeUJ2YldsMGRHVmtMbHh1THk4Z1NT
NWxMaUI3ZTJadmIzMTlKeUFuSUhkcGJHd2diV0Z5YXlCMGFHVWdKeUFuSUc1dlpHVWdZWE1nYjIx
cGRIUmxaQzVjYmk4dlhHNHZMeUJKWmlCcElHbHpJSFZ1WkdWbWFXNWxaQ3dnZEdobGJpQjBhR1Vn
Wm1seWMzUWdZMmhwYkdRZ2QybHNiQ0JpWlNCdFlYSnJaV1FnWVhNZ2MzVmphQzVjYmk4dlhHNHZM
eUJKWmlCdGRXeHBkSEJzWlNCcGN5QjBjblYwYUhrZ2RHaGxiaUJoYkd3Z2QyaHBkR1Z6Y0dGalpT
QjNhV3hzSUdKbElITjBjbWx3Y0dWa0lHOTFkQ0IxYm5ScGJDQnViMjR0ZDJocGRHVnpjR0ZqWlZ4
dUx5OGdZMjl1ZEdWdWRDQnBjeUJ0WlhRdVhHNW1kVzVqZEdsdmJpQnZiV2wwVW1sbmFIUW9ZbTlr
ZVN3Z2FTd2diWFZzZEdsd2JHVXBJSHRjYmlBZ2JHVjBJR04xY25KbGJuUWdQU0JpYjJSNVcya2dQ
VDBnYm5Wc2JDQS9JREFnT2lCcElDc2dNVjA3WEc0Z0lHbG1JQ2doWTNWeWNtVnVkQ0I4ZkNCamRY
SnlaVzUwTG5SNWNHVWdJVDA5SUNkRGIyNTBaVzUwVTNSaGRHVnRaVzUwSnlCOGZDQW9JVzExYkhS
cGNHeGxJQ1ltSUdOMWNuSmxiblF1Y21sbmFIUlRkSEpwY0hCbFpDa3BJSHRjYmlBZ0lDQnlaWFIx
Y200N1hHNGdJSDFjYmx4dUlDQnNaWFFnYjNKcFoybHVZV3dnUFNCamRYSnlaVzUwTG5aaGJIVmxP
MXh1SUNCamRYSnlaVzUwTG5aaGJIVmxJRDBnWTNWeWNtVnVkQzUyWVd4MVpTNXlaWEJzWVdObEtH
MTFiSFJwY0d4bElEOGdLQzllWEZ4ekt5OHBJRG9nS0M5ZVd5QmNYSFJkS2x4Y2NqOWNYRzQvTHlr
c0lDY25LVHRjYmlBZ1kzVnljbVZ1ZEM1eWFXZG9kRk4wY21sd2NHVmtJRDBnWTNWeWNtVnVkQzUy
WVd4MVpTQWhQVDBnYjNKcFoybHVZV3c3WEc1OVhHNWNiaTh2SUUxaGNtdHpJSFJvWlNCdWIyUmxJ
SFJ2SUhSb1pTQnNaV1owSUc5bUlIUm9aU0J3YjNOcGRHbHZiaUJoY3lCdmJXbDBkR1ZrTGx4dUx5
OGdTUzVsTGlBbklDZDdlMlp2YjMxOUlIZHBiR3dnYldGeWF5QjBhR1VnSnlBbklHNXZaR1VnWVhN
Z2IyMXBkSFJsWkM1Y2JpOHZYRzR2THlCSlppQnBJR2x6SUhWdVpHVm1hVzVsWkNCMGFHVnVJSFJv
WlNCc1lYTjBJR05vYVd4a0lIZHBiR3dnWW1VZ2JXRnlhMlZrSUdGeklITjFZMmd1WEc0dkwxeHVM
eThnU1dZZ2JYVnNhWFJ3YkdVZ2FYTWdkSEoxZEdoNUlIUm9aVzRnWVd4c0lIZG9hWFJsYzNCaFky
VWdkMmxzYkNCaVpTQnpkSEpwY0hCbFpDQnZkWFFnZFc1MGFXd2dibTl1TFhkb2FYUmxjM0JoWTJW
Y2JpOHZJR052Ym5SbGJuUWdhWE1nYldWMExseHVablZ1WTNScGIyNGdiMjFwZEV4bFpuUW9ZbTlr
ZVN3Z2FTd2diWFZzZEdsd2JHVXBJSHRjYmlBZ2JHVjBJR04xY25KbGJuUWdQU0JpYjJSNVcya2dQ
VDBnYm5Wc2JDQS9JR0p2WkhrdWJHVnVaM1JvSUMwZ01TQTZJR2tnTFNBeFhUdGNiaUFnYVdZZ0tD
RmpkWEp5Wlc1MElIeDhJR04xY25KbGJuUXVkSGx3WlNBaFBUMGdKME52Ym5SbGJuUlRkR0YwWlcx
bGJuUW5JSHg4SUNnaGJYVnNkR2x3YkdVZ0ppWWdZM1Z5Y21WdWRDNXNaV1owVTNSeWFYQndaV1Fw
S1NCN1hHNGdJQ0FnY21WMGRYSnVPMXh1SUNCOVhHNWNiaUFnTHk4Z1YyVWdiMjFwZENCMGFHVWdi
R0Z6ZENCdWIyUmxJR2xtSUdsMEozTWdkMmhwZEdWemNHRmpaU0J2Ym14NUlHRnVaQ0J1YjNRZ2NI
SmxZMlZsWkdWa0lHSjVJR0VnYm05dUxXTnZiblJsYm5RZ2JtOWtaUzVjYmlBZ2JHVjBJRzl5YVdk
cGJtRnNJRDBnWTNWeWNtVnVkQzUyWVd4MVpUdGNiaUFnWTNWeWNtVnVkQzUyWVd4MVpTQTlJR04x
Y25KbGJuUXVkbUZzZFdVdWNtVndiR0ZqWlNodGRXeDBhWEJzWlNBL0lDZ3ZYRnh6S3lRdktTQTZJ
Q2d2V3lCY1hIUmRLeVF2S1N3Z0p5Y3BPMXh1SUNCamRYSnlaVzUwTG14bFpuUlRkSEpwY0hCbFpD
QTlJR04xY25KbGJuUXVkbUZzZFdVZ0lUMDlJRzl5YVdkcGJtRnNPMXh1SUNCeVpYUjFjbTRnWTNW
eWNtVnVkQzVzWldaMFUzUnlhWEJ3WldRN1hHNTlYRzVjYm1WNGNHOXlkQ0JrWldaaGRXeDBJRmRv
YVhSbGMzQmhZMlZEYjI1MGNtOXNPMXh1SWwxOQorOworZGVmaW5lKCdoYW5kbGViYXJzL2NvbXBp
bGVyL2hlbHBlcnMnLFsnZXhwb3J0cycsICcuLi9leGNlcHRpb24nXSwgZnVuY3Rpb24gKGV4cG9y
dHMsIF9leGNlcHRpb24pIHsKKyAgJ3VzZSBzdHJpY3QnOworCisgIGV4cG9ydHMuX19lc01vZHVs
ZSA9IHRydWU7CisgIGV4cG9ydHMuU291cmNlTG9jYXRpb24gPSBTb3VyY2VMb2NhdGlvbjsKKyAg
ZXhwb3J0cy5pZCA9IGlkOworICBleHBvcnRzLnN0cmlwRmxhZ3MgPSBzdHJpcEZsYWdzOworICBl
eHBvcnRzLnN0cmlwQ29tbWVudCA9IHN0cmlwQ29tbWVudDsKKyAgZXhwb3J0cy5wcmVwYXJlUGF0
aCA9IHByZXBhcmVQYXRoOworICBleHBvcnRzLnByZXBhcmVNdXN0YWNoZSA9IHByZXBhcmVNdXN0
YWNoZTsKKyAgZXhwb3J0cy5wcmVwYXJlUmF3QmxvY2sgPSBwcmVwYXJlUmF3QmxvY2s7CisgIGV4
cG9ydHMucHJlcGFyZUJsb2NrID0gcHJlcGFyZUJsb2NrOworICBleHBvcnRzLnByZXBhcmVQcm9n
cmFtID0gcHJlcGFyZVByb2dyYW07CisgIGV4cG9ydHMucHJlcGFyZVBhcnRpYWxCbG9jayA9IHBy
ZXBhcmVQYXJ0aWFsQmxvY2s7CisgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0CisKKyAgZnVuY3Rp
b24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01v
ZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfQorCisgIHZhciBfRXhjZXB0aW9uID0g
X2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZXhjZXB0aW9uKTsKKworICBmdW5jdGlvbiB2YWxpZGF0
ZUNsb3NlKG9wZW4sIGNsb3NlKSB7CisgICAgY2xvc2UgPSBjbG9zZS5wYXRoID8gY2xvc2UucGF0
aC5vcmlnaW5hbCA6IGNsb3NlOworCisgICAgaWYgKG9wZW4ucGF0aC5vcmlnaW5hbCAhPT0gY2xv
c2UpIHsKKyAgICAgIHZhciBlcnJvck5vZGUgPSB7IGxvYzogb3Blbi5wYXRoLmxvYyB9OworCisg
ICAgICB0aHJvdyBuZXcgX0V4Y2VwdGlvblsnZGVmYXVsdCddKG9wZW4ucGF0aC5vcmlnaW5hbCAr
ICIgZG9lc24ndCBtYXRjaCAiICsgY2xvc2UsIGVycm9yTm9kZSk7CisgICAgfQorICB9CisKKyAg
ZnVuY3Rpb24gU291cmNlTG9jYXRpb24oc291cmNlLCBsb2NJbmZvKSB7CisgICAgdGhpcy5zb3Vy
Y2UgPSBzb3VyY2U7CisgICAgdGhpcy5zdGFydCA9IHsKKyAgICAgIGxpbmU6IGxvY0luZm8uZmly
c3RfbGluZSwKKyAgICAgIGNvbHVtbjogbG9jSW5mby5maXJzdF9jb2x1bW4KKyAgICB9OworICAg
IHRoaXMuZW5kID0geworICAgICAgbGluZTogbG9jSW5mby5sYXN0X2xpbmUsCisgICAgICBjb2x1
bW46IGxvY0luZm8ubGFzdF9jb2x1bW4KKyAgICB9OworICB9CisKKyAgZnVuY3Rpb24gaWQodG9r
ZW4pIHsKKyAgICBpZiAoL15cWy4qXF0kLy50ZXN0KHRva2VuKSkgeworICAgICAgcmV0dXJuIHRv
a2VuLnN1YnN0cigxLCB0b2tlbi5sZW5ndGggLSAyKTsKKyAgICB9IGVsc2UgeworICAgICAgcmV0
dXJuIHRva2VuOworICAgIH0KKyAgfQorCisgIGZ1bmN0aW9uIHN0cmlwRmxhZ3Mob3BlbiwgY2xv
c2UpIHsKKyAgICByZXR1cm4geworICAgICAgb3Blbjogb3Blbi5jaGFyQXQoMikgPT09ICd+JywK
KyAgICAgIGNsb3NlOiBjbG9zZS5jaGFyQXQoY2xvc2UubGVuZ3RoIC0gMykgPT09ICd+JworICAg
IH07CisgIH0KKworICBmdW5jdGlvbiBzdHJpcENvbW1lbnQoY29tbWVudCkgeworICAgIHJldHVy
biBjb21tZW50LnJlcGxhY2UoL15ce1x7fj9cIS0/LT8vLCAnJykucmVwbGFjZSgvLT8tP34/XH1c
fSQvLCAnJyk7CisgIH0KKworICBmdW5jdGlvbiBwcmVwYXJlUGF0aChkYXRhLCBwYXJ0cywgbG9j
KSB7CisgICAgbG9jID0gdGhpcy5sb2NJbmZvKGxvYyk7CisKKyAgICB2YXIgb3JpZ2luYWwgPSBk
YXRhID8gJ0AnIDogJycsCisgICAgICAgIGRpZyA9IFtdLAorICAgICAgICBkZXB0aCA9IDAsCisg
ICAgICAgIGRlcHRoU3RyaW5nID0gJyc7CisKKyAgICBmb3IgKHZhciBpID0gMCwgbCA9IHBhcnRz
Lmxlbmd0aDsgaSA8IGw7IGkrKykgeworICAgICAgdmFyIHBhcnQgPSBwYXJ0c1tpXS5wYXJ0LAor
CisgICAgICAvLyBJZiB3ZSBoYXZlIFtdIHN5bnRheCB0aGVuIHdlIGRvIG5vdCB0cmVhdCBwYXRo
IHJlZmVyZW5jZXMgYXMgb3BlcmF0b3JzLAorICAgICAgLy8gaS5lLiBmb28uW3RoaXNdIHJlc29s
dmVzIHRvIGFwcHJveGltYXRlbHkgY29udGV4dC5mb29bJ3RoaXMnXQorICAgICAgaXNMaXRlcmFs
ID0gcGFydHNbaV0ub3JpZ2luYWwgIT09IHBhcnQ7CisgICAgICBvcmlnaW5hbCArPSAocGFydHNb
aV0uc2VwYXJhdG9yIHx8ICcnKSArIHBhcnQ7CisKKyAgICAgIGlmICghaXNMaXRlcmFsICYmIChw
YXJ0ID09PSAnLi4nIHx8IHBhcnQgPT09ICcuJyB8fCBwYXJ0ID09PSAndGhpcycpKSB7CisgICAg
ICAgIGlmIChkaWcubGVuZ3RoID4gMCkgeworICAgICAgICAgIHRocm93IG5ldyBfRXhjZXB0aW9u
WydkZWZhdWx0J10oJ0ludmFsaWQgcGF0aDogJyArIG9yaWdpbmFsLCB7IGxvYzogbG9jIH0pOwor
ICAgICAgICB9IGVsc2UgaWYgKHBhcnQgPT09ICcuLicpIHsKKyAgICAgICAgICBkZXB0aCsrOwor
ICAgICAgICAgIGRlcHRoU3RyaW5nICs9ICcuLi8nOworICAgICAgICB9CisgICAgICB9IGVsc2Ug
eworICAgICAgICBkaWcucHVzaChwYXJ0KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4g
eworICAgICAgdHlwZTogJ1BhdGhFeHByZXNzaW9uJywKKyAgICAgIGRhdGE6IGRhdGEsCisgICAg
ICBkZXB0aDogZGVwdGgsCisgICAgICBwYXJ0czogZGlnLAorICAgICAgb3JpZ2luYWw6IG9yaWdp
bmFsLAorICAgICAgbG9jOiBsb2MKKyAgICB9OworICB9CisKKyAgZnVuY3Rpb24gcHJlcGFyZU11
c3RhY2hlKHBhdGgsIHBhcmFtcywgaGFzaCwgb3Blbiwgc3RyaXAsIGxvY0luZm8pIHsKKyAgICAv
LyBNdXN0IHVzZSBjaGFyQXQgdG8gc3VwcG9ydCBJRSBwcmUtMTAKKyAgICB2YXIgZXNjYXBlRmxh
ZyA9IG9wZW4uY2hhckF0KDMpIHx8IG9wZW4uY2hhckF0KDIpLAorICAgICAgICBlc2NhcGVkID0g
ZXNjYXBlRmxhZyAhPT0gJ3snICYmIGVzY2FwZUZsYWcgIT09ICcmJzsKKworICAgIHZhciBkZWNv
cmF0b3IgPSAvXCovLnRlc3Qob3Blbik7CisgICAgcmV0dXJuIHsKKyAgICAgIHR5cGU6IGRlY29y
YXRvciA/ICdEZWNvcmF0b3InIDogJ011c3RhY2hlU3RhdGVtZW50JywKKyAgICAgIHBhdGg6IHBh
dGgsCisgICAgICBwYXJhbXM6IHBhcmFtcywKKyAgICAgIGhhc2g6IGhhc2gsCisgICAgICBlc2Nh
cGVkOiBlc2NhcGVkLAorICAgICAgc3RyaXA6IHN0cmlwLAorICAgICAgbG9jOiB0aGlzLmxvY0lu
Zm8obG9jSW5mbykKKyAgICB9OworICB9CisKKyAgZnVuY3Rpb24gcHJlcGFyZVJhd0Jsb2NrKG9w
ZW5SYXdCbG9jaywgY29udGVudHMsIGNsb3NlLCBsb2NJbmZvKSB7CisgICAgdmFsaWRhdGVDbG9z
ZShvcGVuUmF3QmxvY2ssIGNsb3NlKTsKKworICAgIGxvY0luZm8gPSB0aGlzLmxvY0luZm8obG9j
SW5mbyk7CisgICAgdmFyIHByb2dyYW0gPSB7CisgICAgICB0eXBlOiAnUHJvZ3JhbScsCisgICAg
ICBib2R5OiBjb250ZW50cywKKyAgICAgIHN0cmlwOiB7fSwKKyAgICAgIGxvYzogbG9jSW5mbwor
ICAgIH07CisKKyAgICByZXR1cm4geworICAgICAgdHlwZTogJ0Jsb2NrU3RhdGVtZW50JywKKyAg
ICAgIHBhdGg6IG9wZW5SYXdCbG9jay5wYXRoLAorICAgICAgcGFyYW1zOiBvcGVuUmF3QmxvY2su
cGFyYW1zLAorICAgICAgaGFzaDogb3BlblJhd0Jsb2NrLmhhc2gsCisgICAgICBwcm9ncmFtOiBw
cm9ncmFtLAorICAgICAgb3BlblN0cmlwOiB7fSwKKyAgICAgIGludmVyc2VTdHJpcDoge30sCisg
ICAgICBjbG9zZVN0cmlwOiB7fSwKKyAgICAgIGxvYzogbG9jSW5mbworICAgIH07CisgIH0KKwor
ICBmdW5jdGlvbiBwcmVwYXJlQmxvY2sob3BlbkJsb2NrLCBwcm9ncmFtLCBpbnZlcnNlQW5kUHJv
Z3JhbSwgY2xvc2UsIGludmVydGVkLCBsb2NJbmZvKSB7CisgICAgaWYgKGNsb3NlICYmIGNsb3Nl
LnBhdGgpIHsKKyAgICAgIHZhbGlkYXRlQ2xvc2Uob3BlbkJsb2NrLCBjbG9zZSk7CisgICAgfQor
CisgICAgdmFyIGRlY29yYXRvciA9IC9cKi8udGVzdChvcGVuQmxvY2sub3Blbik7CisKKyAgICBw
cm9ncmFtLmJsb2NrUGFyYW1zID0gb3BlbkJsb2NrLmJsb2NrUGFyYW1zOworCisgICAgdmFyIGlu
dmVyc2UgPSB1bmRlZmluZWQsCisgICAgICAgIGludmVyc2VTdHJpcCA9IHVuZGVmaW5lZDsKKwor
ICAgIGlmIChpbnZlcnNlQW5kUHJvZ3JhbSkgeworICAgICAgaWYgKGRlY29yYXRvcikgeworICAg
ICAgICB0aHJvdyBuZXcgX0V4Y2VwdGlvblsnZGVmYXVsdCddKCdVbmV4cGVjdGVkIGludmVyc2Ug
YmxvY2sgb24gZGVjb3JhdG9yJywgaW52ZXJzZUFuZFByb2dyYW0pOworICAgICAgfQorCisgICAg
ICBpZiAoaW52ZXJzZUFuZFByb2dyYW0uY2hhaW4pIHsKKyAgICAgICAgaW52ZXJzZUFuZFByb2dy
YW0ucHJvZ3JhbS5ib2R5WzBdLmNsb3NlU3RyaXAgPSBjbG9zZS5zdHJpcDsKKyAgICAgIH0KKwor
ICAgICAgaW52ZXJzZVN0cmlwID0gaW52ZXJzZUFuZFByb2dyYW0uc3RyaXA7CisgICAgICBpbnZl
cnNlID0gaW52ZXJzZUFuZFByb2dyYW0ucHJvZ3JhbTsKKyAgICB9CisKKyAgICBpZiAoaW52ZXJ0
ZWQpIHsKKyAgICAgIGludmVydGVkID0gaW52ZXJzZTsKKyAgICAgIGludmVyc2UgPSBwcm9ncmFt
OworICAgICAgcHJvZ3JhbSA9IGludmVydGVkOworICAgIH0KKworICAgIHJldHVybiB7CisgICAg
ICB0eXBlOiBkZWNvcmF0b3IgPyAnRGVjb3JhdG9yQmxvY2snIDogJ0Jsb2NrU3RhdGVtZW50JywK
KyAgICAgIHBhdGg6IG9wZW5CbG9jay5wYXRoLAorICAgICAgcGFyYW1zOiBvcGVuQmxvY2sucGFy
YW1zLAorICAgICAgaGFzaDogb3BlbkJsb2NrLmhhc2gsCisgICAgICBwcm9ncmFtOiBwcm9ncmFt
LAorICAgICAgaW52ZXJzZTogaW52ZXJzZSwKKyAgICAgIG9wZW5TdHJpcDogb3BlbkJsb2NrLnN0
cmlwLAorICAgICAgaW52ZXJzZVN0cmlwOiBpbnZlcnNlU3RyaXAsCisgICAgICBjbG9zZVN0cmlw
OiBjbG9zZSAmJiBjbG9zZS5zdHJpcCwKKyAgICAgIGxvYzogdGhpcy5sb2NJbmZvKGxvY0luZm8p
CisgICAgfTsKKyAgfQorCisgIGZ1bmN0aW9uIHByZXBhcmVQcm9ncmFtKHN0YXRlbWVudHMsIGxv
YykgeworICAgIGlmICghbG9jICYmIHN0YXRlbWVudHMubGVuZ3RoKSB7CisgICAgICB2YXIgZmly
c3RMb2MgPSBzdGF0ZW1lbnRzWzBdLmxvYywKKyAgICAgICAgICBsYXN0TG9jID0gc3RhdGVtZW50
c1tzdGF0ZW1lbnRzLmxlbmd0aCAtIDFdLmxvYzsKKworICAgICAgLyogaXN0YW5idWwgaWdub3Jl
IGVsc2UgKi8KKyAgICAgIGlmIChmaXJzdExvYyAmJiBsYXN0TG9jKSB7CisgICAgICAgIGxvYyA9
IHsKKyAgICAgICAgICBzb3VyY2U6IGZpcnN0TG9jLnNvdXJjZSwKKyAgICAgICAgICBzdGFydDog
eworICAgICAgICAgICAgbGluZTogZmlyc3RMb2Muc3RhcnQubGluZSwKKyAgICAgICAgICAgIGNv
bHVtbjogZmlyc3RMb2Muc3RhcnQuY29sdW1uCisgICAgICAgICAgfSwKKyAgICAgICAgICBlbmQ6
IHsKKyAgICAgICAgICAgIGxpbmU6IGxhc3RMb2MuZW5kLmxpbmUsCisgICAgICAgICAgICBjb2x1
bW46IGxhc3RMb2MuZW5kLmNvbHVtbgorICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICByZXR1cm4geworICAgICAgdHlwZTogJ1Byb2dyYW0nLAorICAgICAgYm9k
eTogc3RhdGVtZW50cywKKyAgICAgIHN0cmlwOiB7fSwKKyAgICAgIGxvYzogbG9jCisgICAgfTsK
KyAgfQorCisgIGZ1bmN0aW9uIHByZXBhcmVQYXJ0aWFsQmxvY2sob3BlbiwgcHJvZ3JhbSwgY2xv
c2UsIGxvY0luZm8pIHsKKyAgICB2YWxpZGF0ZUNsb3NlKG9wZW4sIGNsb3NlKTsKKworICAgIHJl
dHVybiB7CisgICAgICB0eXBlOiAnUGFydGlhbEJsb2NrU3RhdGVtZW50JywKKyAgICAgIG5hbWU6
IG9wZW4ucGF0aCwKKyAgICAgIHBhcmFtczogb3Blbi5wYXJhbXMsCisgICAgICBoYXNoOiBvcGVu
Lmhhc2gsCisgICAgICBwcm9ncmFtOiBwcm9ncmFtLAorICAgICAgb3BlblN0cmlwOiBvcGVuLnN0
cmlwLAorICAgICAgY2xvc2VTdHJpcDogY2xvc2UgJiYgY2xvc2Uuc3RyaXAsCisgICAgICBsb2M6
IHRoaXMubG9jSW5mbyhsb2NJbmZvKQorICAgIH07CisgIH0KK30pOworLy8jIHNvdXJjZU1hcHBp
bmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIz
VnlZMlZ6SWpwYklpNHVMeTR1THk0dUx5NHVMMnhwWWk5b1lXNWtiR1ZpWVhKekwyTnZiWEJwYkdW
eUwyaGxiSEJsY25NdWFuTWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqczdPenM3
T3pzN096czdPenM3T3pzN096czdRVUZGUVN4WFFVRlRMR0ZCUVdFc1EwRkJReXhKUVVGSkxFVkJR
VVVzUzBGQlN5eEZRVUZGTzBGQlEyeERMRk5CUVVzc1IwRkJSeXhMUVVGTExFTkJRVU1zU1VGQlNT
eEhRVUZITEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1VVRkJVU3hIUVVGSExFdEJRVXNzUTBG
QlF6czdRVUZGYWtRc1VVRkJTU3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEZGQlFWRXNTMEZC
U3l4TFFVRkxMRVZCUVVVN1FVRkRhRU1zVlVGQlNTeFRRVUZUTEVkQlFVY3NSVUZCUXl4SFFVRkhM
RVZCUVVVc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVWQlFVTXNRMEZCUXpzN1FV
RkZja01zV1VGQlRTd3dRa0ZCWXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExGRkJRVkVzUjBG
QlJ5eHBRa0ZCYVVJc1IwRkJSeXhMUVVGTExFVkJRVVVzVTBGQlV5eERRVUZETEVOQlFVTTdTMEZE
YUVZN1IwRkRSanM3UVVGRlRTeFhRVUZUTEdOQlFXTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1QwRkJU
eXhGUVVGRk8wRkJRemxETEZGQlFVa3NRMEZCUXl4TlFVRk5MRWRCUVVjc1RVRkJUU3hEUVVGRE8w
RkJRM0pDTEZGQlFVa3NRMEZCUXl4TFFVRkxMRWRCUVVjN1FVRkRXQ3hWUVVGSkxFVkJRVVVzVDBG
QlR5eERRVUZETEZWQlFWVTdRVUZEZUVJc1dVRkJUU3hGUVVGRkxFOUJRVThzUTBGQlF5eFpRVUZa
TzB0QlF6ZENMRU5CUVVNN1FVRkRSaXhSUVVGSkxFTkJRVU1zUjBGQlJ5eEhRVUZITzBGQlExUXNW
VUZCU1N4RlFVRkZMRTlCUVU4c1EwRkJReXhUUVVGVE8wRkJRM1pDTEZsQlFVMHNSVUZCUlN4UFFV
RlBMRU5CUVVNc1YwRkJWenRMUVVNMVFpeERRVUZETzBkQlEwZzdPMEZCUlUwc1YwRkJVeXhGUVVG
RkxFTkJRVU1zUzBGQlN5eEZRVUZGTzBGQlEzaENMRkZCUVVrc1ZVRkJWU3hEUVVGRExFbEJRVWtz
UTBGQlF5eExRVUZMTEVOQlFVTXNSVUZCUlR0QlFVTXhRaXhoUVVGUExFdEJRVXNzUTBGQlF5eE5R
VUZOTEVOQlFVTXNRMEZCUXl4RlFVRkZMRXRCUVVzc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5
eERRVUZETEVOQlFVTTdTMEZETVVNc1RVRkJUVHRCUVVOTUxHRkJRVThzUzBGQlN5eERRVUZETzB0
QlEyUTdSMEZEUmpzN1FVRkZUU3hYUVVGVExGVkJRVlVzUTBGQlF5eEpRVUZKTEVWQlFVVXNTMEZC
U3l4RlFVRkZPMEZCUTNSRExGZEJRVTg3UVVGRFRDeFZRVUZKTEVWQlFVVXNTVUZCU1N4RFFVRkRM
RTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUzBGQlN5eEhRVUZITzBGQlF6VkNMRmRCUVVzc1JV
RkJSU3hMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEV0QlFVc3NRMEZCUXl4TlFVRk5MRWRCUVVj
c1EwRkJReXhEUVVGRExFdEJRVXNzUjBGQlJ6dExRVU01UXl4RFFVRkRPMGRCUTBnN08wRkJSVTBz
VjBGQlV5eFpRVUZaTEVOQlFVTXNUMEZCVHl4RlFVRkZPMEZCUTNCRExGZEJRVThzVDBGQlR5eERR
VUZETEU5QlFVOHNRMEZCUXl4bFFVRmxMRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRelZDTEU5QlFV
OHNRMEZCUXl4aFFVRmhMRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU03UjBGRE0wTTdPMEZCUlUw
c1YwRkJVeXhYUVVGWExFTkJRVU1zU1VGQlNTeEZRVUZGTEV0QlFVc3NSVUZCUlN4SFFVRkhMRVZC
UVVVN1FVRkROVU1zVDBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1IwRkJS
eXhEUVVGRExFTkJRVU03TzBGQlJYaENMRkZCUVVrc1VVRkJVU3hIUVVGSExFbEJRVWtzUjBGQlJ5
eEhRVUZITEVkQlFVY3NSVUZCUlR0UlFVTXhRaXhIUVVGSExFZEJRVWNzUlVGQlJUdFJRVU5TTEV0
QlFVc3NSMEZCUnl4RFFVRkRPMUZCUTFRc1YwRkJWeXhIUVVGSExFVkJRVVVzUTBGQlF6czdRVUZG
Y2tJc1UwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhM
RXRCUVVzc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFV
RkRMRVZCUVVVc1JVRkJSVHRCUVVNMVF5eFZRVUZKTEVsQlFVa3NSMEZCUnl4TFFVRkxMRU5CUVVN
c1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNUczdPenRCUVVkd1FpeGxRVUZUTEVkQlFVY3NTMEZC
U3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExGRkJRVkVzUzBGQlN5eEpRVUZKTEVOQlFVTTdR
VUZETTBNc1kwRkJVU3hKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFV
RkRMRk5CUVZNc1NVRkJTU3hGUVVGRkxFTkJRVUVzUjBGQlNTeEpRVUZKTEVOQlFVTTdPMEZCUlRs
RExGVkJRVWtzUTBGQlF5eFRRVUZUTEV0QlFVc3NTVUZCU1N4TFFVRkxMRWxCUVVrc1NVRkJTU3hK
UVVGSkxFdEJRVXNzUjBGQlJ5eEpRVUZKTEVsQlFVa3NTMEZCU3l4TlFVRk5MRU5CUVVFc1FVRkJR
eXhGUVVGRk8wRkJRM0JGTEZsQlFVa3NSMEZCUnl4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExF
VkJRVVU3UVVGRGJFSXNaMEpCUVUwc01FSkJRV01zWjBKQlFXZENMRWRCUVVjc1VVRkJVU3hGUVVG
RkxFVkJRVU1zUjBGQlJ5eEZRVUZJTEVkQlFVY3NSVUZCUXl4RFFVRkRMRU5CUVVNN1UwRkRla1Fz
VFVGQlRTeEpRVUZKTEVsQlFVa3NTMEZCU3l4SlFVRkpMRVZCUVVVN1FVRkRlRUlzWlVGQlN5eEZR
VUZGTEVOQlFVTTdRVUZEVWl4eFFrRkJWeXhKUVVGSkxFdEJRVXNzUTBGQlF6dFRRVU4wUWp0UFFV
TkdMRTFCUVUwN1FVRkRUQ3hYUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4
RFFVRkRPMDlCUTJoQ08wdEJRMFk3TzBGQlJVUXNWMEZCVHp0QlFVTk1MRlZCUVVrc1JVRkJSU3hu
UWtGQlowSTdRVUZEZEVJc1ZVRkJTU3hGUVVGS0xFbEJRVWs3UVVGRFNpeFhRVUZMTEVWQlFVd3NT
MEZCU3p0QlFVTk1MRmRCUVVzc1JVRkJSU3hIUVVGSE8wRkJRMVlzWTBGQlVTeEZRVUZTTEZGQlFW
RTdRVUZEVWl4VFFVRkhMRVZCUVVnc1IwRkJSenRMUVVOS0xFTkJRVU03UjBGRFNEczdRVUZGVFN4
WFFVRlRMR1ZCUVdVc1EwRkJReXhKUVVGSkxFVkJRVVVzVFVGQlRTeEZRVUZGTEVsQlFVa3NSVUZC
UlN4SlFVRkpMRVZCUVVVc1MwRkJTeXhGUVVGRkxFOUJRVThzUlVGQlJUczdRVUZGZUVVc1VVRkJT
U3hWUVVGVkxFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1NV
RkJTU3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTTNReXhQUVVG
UExFZEJRVWNzVlVGQlZTeExRVUZMTEVkQlFVY3NTVUZCU1N4VlFVRlZMRXRCUVVzc1IwRkJSeXhE
UVVGRE96dEJRVVYyUkN4UlFVRkpMRk5CUVZNc1IwRkJTU3hKUVVGSkxFTkJRVU1zU1VGQlNTeERR
VUZETEVsQlFVa3NRMEZCUXl4QlFVRkRMRU5CUVVNN1FVRkRiRU1zVjBGQlR6dEJRVU5NTEZWQlFV
a3NSVUZCUlN4VFFVRlRMRWRCUVVjc1YwRkJWeXhIUVVGSExHMUNRVUZ0UWp0QlFVTnVSQ3hWUVVG
SkxFVkJRVW9zU1VGQlNUdEJRVU5LTEZsQlFVMHNSVUZCVGl4TlFVRk5PMEZCUTA0c1ZVRkJTU3hG
UVVGS0xFbEJRVWs3UVVGRFNpeGhRVUZQTEVWQlFWQXNUMEZCVHp0QlFVTlFMRmRCUVVzc1JVRkJU
Q3hMUVVGTE8wRkJRMHdzVTBGQlJ5eEZRVUZGTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1Qw
RkJUeXhEUVVGRE8wdEJRek5DTEVOQlFVTTdSMEZEU0RzN1FVRkZUU3hYUVVGVExHVkJRV1VzUTBG
QlF5eFpRVUZaTEVWQlFVVXNVVUZCVVN4RlFVRkZMRXRCUVVzc1JVRkJSU3hQUVVGUExFVkJRVVU3
UVVGRGRFVXNhVUpCUVdFc1EwRkJReXhaUVVGWkxFVkJRVVVzUzBGQlN5eERRVUZETEVOQlFVTTdP
MEZCUlc1RExGZEJRVThzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRTlCUVU4c1Ew
RkJReXhEUVVGRE8wRkJRMmhETEZGQlFVa3NUMEZCVHl4SFFVRkhPMEZCUTFvc1ZVRkJTU3hGUVVG
RkxGTkJRVk03UVVGRFppeFZRVUZKTEVWQlFVVXNVVUZCVVR0QlFVTmtMRmRCUVVzc1JVRkJSU3hG
UVVGRk8wRkJRMVFzVTBGQlJ5eEZRVUZGTEU5QlFVODdTMEZEWWl4RFFVRkRPenRCUVVWR0xGZEJR
VTg3UVVGRFRDeFZRVUZKTEVWQlFVVXNaMEpCUVdkQ08wRkJRM1JDTEZWQlFVa3NSVUZCUlN4WlFV
RlpMRU5CUVVNc1NVRkJTVHRCUVVOMlFpeFpRVUZOTEVWQlFVVXNXVUZCV1N4RFFVRkRMRTFCUVUw
N1FVRkRNMElzVlVGQlNTeEZRVUZGTEZsQlFWa3NRMEZCUXl4SlFVRkpPMEZCUTNaQ0xHRkJRVThz
UlVGQlVDeFBRVUZQTzBGQlExQXNaVUZCVXl4RlFVRkZMRVZCUVVVN1FVRkRZaXhyUWtGQldTeEZR
VUZGTEVWQlFVVTdRVUZEYUVJc1owSkJRVlVzUlVGQlJTeEZRVUZGTzBGQlEyUXNVMEZCUnl4RlFV
RkZMRTlCUVU4N1MwRkRZaXhEUVVGRE8wZEJRMGc3TzBGQlJVMHNWMEZCVXl4WlFVRlpMRU5CUVVN
c1UwRkJVeXhGUVVGRkxFOUJRVThzUlVGQlJTeHBRa0ZCYVVJc1JVRkJSU3hMUVVGTExFVkJRVVVz
VVVGQlVTeEZRVUZGTEU5QlFVOHNSVUZCUlR0QlFVTTFSaXhSUVVGSkxFdEJRVXNzU1VGQlNTeExR
VUZMTEVOQlFVTXNTVUZCU1N4RlFVRkZPMEZCUTNaQ0xHMUNRVUZoTEVOQlFVTXNVMEZCVXl4RlFV
RkZMRXRCUVVzc1EwRkJReXhEUVVGRE8wdEJRMnBET3p0QlFVVkVMRkZCUVVrc1UwRkJVeXhIUVVG
SkxFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhC
UVVGRExFTkJRVU03TzBGQlJUVkRMRmRCUVU4c1EwRkJReXhYUVVGWExFZEJRVWNzVTBGQlV5eERR
VUZETEZkQlFWY3NRMEZCUXpzN1FVRkZOVU1zVVVGQlNTeFBRVUZQTEZsQlFVRTdVVUZEVUN4WlFV
RlpMRmxCUVVFc1EwRkJRenM3UVVGRmFrSXNVVUZCU1N4cFFrRkJhVUlzUlVGQlJUdEJRVU55UWl4
VlFVRkpMRk5CUVZNc1JVRkJSVHRCUVVOaUxHTkJRVTBzTUVKQlFXTXNkVU5CUVhWRExFVkJRVVVz
YVVKQlFXbENMRU5CUVVNc1EwRkJRenRQUVVOcVJqczdRVUZGUkN4VlFVRkpMR2xDUVVGcFFpeERR
VUZETEV0QlFVc3NSVUZCUlR0QlFVTXpRaXg1UWtGQmFVSXNRMEZCUXl4UFFVRlBMRU5CUVVNc1NV
RkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEZWQlFWVXNSMEZCUnl4TFFVRkxMRU5CUVVN
c1MwRkJTeXhEUVVGRE8wOUJRelZFT3p0QlFVVkVMR3RDUVVGWkxFZEJRVWNzYVVKQlFXbENMRU5C
UVVNc1MwRkJTeXhEUVVGRE8wRkJRM1pETEdGQlFVOHNSMEZCUnl4cFFrRkJhVUlzUTBGQlF5eFBR
VUZQTEVOQlFVTTdTMEZEY2tNN08wRkJSVVFzVVVGQlNTeFJRVUZSTEVWQlFVVTdRVUZEV2l4alFV
RlJMRWRCUVVjc1QwRkJUeXhEUVVGRE8wRkJRMjVDTEdGQlFVOHNSMEZCUnl4UFFVRlBMRU5CUVVN
N1FVRkRiRUlzWVVGQlR5eEhRVUZITEZGQlFWRXNRMEZCUXp0TFFVTndRanM3UVVGRlJDeFhRVUZQ
TzBGQlEwd3NWVUZCU1N4RlFVRkZMRk5CUVZNc1IwRkJSeXhuUWtGQlowSXNSMEZCUnl4blFrRkJa
MEk3UVVGRGNrUXNWVUZCU1N4RlFVRkZMRk5CUVZNc1EwRkJReXhKUVVGSk8wRkJRM0JDTEZsQlFV
MHNSVUZCUlN4VFFVRlRMRU5CUVVNc1RVRkJUVHRCUVVONFFpeFZRVUZKTEVWQlFVVXNVMEZCVXl4
RFFVRkRMRWxCUVVrN1FVRkRjRUlzWVVGQlR5eEZRVUZRTEU5QlFVODdRVUZEVUN4aFFVRlBMRVZC
UVZBc1QwRkJUenRCUVVOUUxHVkJRVk1zUlVGQlJTeFRRVUZUTEVOQlFVTXNTMEZCU3p0QlFVTXhR
aXhyUWtGQldTeEZRVUZhTEZsQlFWazdRVUZEV2l4blFrRkJWU3hGUVVGRkxFdEJRVXNzU1VGQlNT
eExRVUZMTEVOQlFVTXNTMEZCU3p0QlFVTm9ReXhUUVVGSExFVkJRVVVzU1VGQlNTeERRVUZETEU5
QlFVOHNRMEZCUXl4UFFVRlBMRU5CUVVNN1MwRkRNMElzUTBGQlF6dEhRVU5JT3p0QlFVVk5MRmRC
UVZNc1kwRkJZeXhEUVVGRExGVkJRVlVzUlVGQlJTeEhRVUZITEVWQlFVVTdRVUZET1VNc1VVRkJT
U3hEUVVGRExFZEJRVWNzU1VGQlNTeFZRVUZWTEVOQlFVTXNUVUZCVFN4RlFVRkZPMEZCUXpkQ0xG
VkJRVTBzVVVGQlVTeEhRVUZITEZWQlFWVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVG
SE8xVkJRelZDTEU5QlFVOHNSMEZCUnl4VlFVRlZMRU5CUVVNc1ZVRkJWU3hEUVVGRExFMUJRVTBz
UjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNN096dEJRVWQwUkN4VlFVRkpM
RkZCUVZFc1NVRkJTU3hQUVVGUExFVkJRVVU3UVVGRGRrSXNWMEZCUnl4SFFVRkhPMEZCUTBvc1ow
SkJRVTBzUlVGQlJTeFJRVUZSTEVOQlFVTXNUVUZCVFR0QlFVTjJRaXhsUVVGTExFVkJRVVU3UVVG
RFRDeG5Ra0ZCU1N4RlFVRkZMRkZCUVZFc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNUdEJRVU42
UWl4clFrRkJUU3hGUVVGRkxGRkJRVkVzUTBGQlF5eExRVUZMTEVOQlFVTXNUVUZCVFR0WFFVTTVR
anRCUVVORUxHRkJRVWNzUlVGQlJUdEJRVU5JTEdkQ1FVRkpMRVZCUVVVc1QwRkJUeXhEUVVGRExF
ZEJRVWNzUTBGQlF5eEpRVUZKTzBGQlEzUkNMR3RDUVVGTkxFVkJRVVVzVDBGQlR5eERRVUZETEVk
QlFVY3NRMEZCUXl4TlFVRk5PMWRCUXpOQ08xTkJRMFlzUTBGQlF6dFBRVU5JTzB0QlEwWTdPMEZC
UlVRc1YwRkJUenRCUVVOTUxGVkJRVWtzUlVGQlJTeFRRVUZUTzBGQlEyWXNWVUZCU1N4RlFVRkZM
RlZCUVZVN1FVRkRhRUlzVjBGQlN5eEZRVUZGTEVWQlFVVTdRVUZEVkN4VFFVRkhMRVZCUVVVc1Iw
RkJSenRMUVVOVUxFTkJRVU03UjBGRFNEczdRVUZIVFN4WFFVRlRMRzFDUVVGdFFpeERRVUZETEVs
QlFVa3NSVUZCUlN4UFFVRlBMRVZCUVVVc1MwRkJTeXhGUVVGRkxFOUJRVThzUlVGQlJUdEJRVU5x
UlN4cFFrRkJZU3hEUVVGRExFbEJRVWtzUlVGQlJTeExRVUZMTEVOQlFVTXNRMEZCUXpzN1FVRkZN
MElzVjBGQlR6dEJRVU5NTEZWQlFVa3NSVUZCUlN4MVFrRkJkVUk3UVVGRE4wSXNWVUZCU1N4RlFV
RkZMRWxCUVVrc1EwRkJReXhKUVVGSk8wRkJRMllzV1VGQlRTeEZRVUZGTEVsQlFVa3NRMEZCUXl4
TlFVRk5PMEZCUTI1Q0xGVkJRVWtzUlVGQlJTeEpRVUZKTEVOQlFVTXNTVUZCU1R0QlFVTm1MR0ZC
UVU4c1JVRkJVQ3hQUVVGUE8wRkJRMUFzWlVGQlV5eEZRVUZGTEVsQlFVa3NRMEZCUXl4TFFVRkxP
MEZCUTNKQ0xHZENRVUZWTEVWQlFVVXNTMEZCU3l4SlFVRkpMRXRCUVVzc1EwRkJReXhMUVVGTE8w
RkJRMmhETEZOQlFVY3NSVUZCUlN4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFOUJRVThzUTBG
QlF6dExRVU16UWl4RFFVRkRPMGRCUTBnaUxDSm1hV3hsSWpvaWFHVnNjR1Z5Y3k1cWN5SXNJbk52
ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQkZlR05sY0hScGIyNGdabkp2YlNBbkxpNHZa
WGhqWlhCMGFXOXVKenRjYmx4dVpuVnVZM1JwYjI0Z2RtRnNhV1JoZEdWRGJHOXpaU2h2Y0dWdUxD
QmpiRzl6WlNrZ2UxeHVJQ0JqYkc5elpTQTlJR05zYjNObExuQmhkR2dnUHlCamJHOXpaUzV3WVhS
b0xtOXlhV2RwYm1Gc0lEb2dZMnh2YzJVN1hHNWNiaUFnYVdZZ0tHOXdaVzR1Y0dGMGFDNXZjbWxu
YVc1aGJDQWhQVDBnWTJ4dmMyVXBJSHRjYmlBZ0lDQnNaWFFnWlhKeWIzSk9iMlJsSUQwZ2UyeHZZ
em9nYjNCbGJpNXdZWFJvTG14dlkzMDdYRzVjYmlBZ0lDQjBhSEp2ZHlCdVpYY2dSWGhqWlhCMGFX
OXVLRzl3Wlc0dWNHRjBhQzV2Y21sbmFXNWhiQ0FySUZ3aUlHUnZaWE51SjNRZ2JXRjBZMmdnWENJ
Z0t5QmpiRzl6WlN3Z1pYSnliM0pPYjJSbEtUdGNiaUFnZlZ4dWZWeHVYRzVsZUhCdmNuUWdablZ1
WTNScGIyNGdVMjkxY21ObFRHOWpZWFJwYjI0b2MyOTFjbU5sTENCc2IyTkpibVp2S1NCN1hHNGdJ
SFJvYVhNdWMyOTFjbU5sSUQwZ2MyOTFjbU5sTzF4dUlDQjBhR2x6TG5OMFlYSjBJRDBnZTF4dUlD
QWdJR3hwYm1VNklHeHZZMGx1Wm04dVptbHljM1JmYkdsdVpTeGNiaUFnSUNCamIyeDFiVzQ2SUd4
dlkwbHVabTh1Wm1seWMzUmZZMjlzZFcxdVhHNGdJSDA3WEc0Z0lIUm9hWE11Wlc1a0lEMGdlMXh1
SUNBZ0lHeHBibVU2SUd4dlkwbHVabTh1YkdGemRGOXNhVzVsTEZ4dUlDQWdJR052YkhWdGJqb2di
RzlqU1c1bWJ5NXNZWE4wWDJOdmJIVnRibHh1SUNCOU8xeHVmVnh1WEc1bGVIQnZjblFnWm5WdVkz
UnBiMjRnYVdRb2RHOXJaVzRwSUh0Y2JpQWdhV1lnS0M5ZVhGeGJMaXBjWEYwa0x5NTBaWE4wS0hS
dmEyVnVLU2tnZTF4dUlDQWdJSEpsZEhWeWJpQjBiMnRsYmk1emRXSnpkSElvTVN3Z2RHOXJaVzR1
YkdWdVozUm9JQzBnTWlrN1hHNGdJSDBnWld4elpTQjdYRzRnSUNBZ2NtVjBkWEp1SUhSdmEyVnVP
MXh1SUNCOVhHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJ6ZEhKcGNFWnNZV2R6S0c5d1pX
NHNJR05zYjNObEtTQjdYRzRnSUhKbGRIVnliaUI3WEc0Z0lDQWdiM0JsYmpvZ2IzQmxiaTVqYUdG
eVFYUW9NaWtnUFQwOUlDZCtKeXhjYmlBZ0lDQmpiRzl6WlRvZ1kyeHZjMlV1WTJoaGNrRjBLR05z
YjNObExteGxibWQwYUNBdElETXBJRDA5UFNBbmZpZGNiaUFnZlR0Y2JuMWNibHh1Wlhod2IzSjBJ
R1oxYm1OMGFXOXVJSE4wY21sd1EyOXRiV1Z1ZENoamIyMXRaVzUwS1NCN1hHNGdJSEpsZEhWeWJp
QmpiMjF0Wlc1MExuSmxjR3hoWTJVb0wxNWNYSHRjWEh0K1AxeGNJUzAvTFQ4dkxDQW5KeWxjYmlB
Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0F1Y21Wd2JHRmpaU2d2TFQ4dFAzNC9YRng5WEZ4OUpDOHNJQ2Nu
S1R0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJSEJ5WlhCaGNtVlFZWFJvS0dSaGRHRXNJ
SEJoY25SekxDQnNiMk1wSUh0Y2JpQWdiRzlqSUQwZ2RHaHBjeTVzYjJOSmJtWnZLR3h2WXlrN1hH
NWNiaUFnYkdWMElHOXlhV2RwYm1Gc0lEMGdaR0YwWVNBL0lDZEFKeUE2SUNjbkxGeHVJQ0FnSUNB
Z1pHbG5JRDBnVzEwc1hHNGdJQ0FnSUNCa1pYQjBhQ0E5SURBc1hHNGdJQ0FnSUNCa1pYQjBhRk4w
Y21sdVp5QTlJQ2NuTzF4dVhHNGdJR1p2Y2lBb2JHVjBJR2tnUFNBd0xDQnNJRDBnY0dGeWRITXVi
R1Z1WjNSb095QnBJRHdnYkRzZ2FTc3JLU0I3WEc0Z0lDQWdiR1YwSUhCaGNuUWdQU0J3WVhKMGMx
dHBYUzV3WVhKMExGeHVJQ0FnSUNBZ0lDQXZMeUJKWmlCM1pTQm9ZWFpsSUZ0ZElITjViblJoZUNC
MGFHVnVJSGRsSUdSdklHNXZkQ0IwY21WaGRDQndZWFJvSUhKbFptVnlaVzVqWlhNZ1lYTWdiM0Js
Y21GMGIzSnpMRnh1SUNBZ0lDQWdJQ0F2THlCcExtVXVJR1p2Ynk1YmRHaHBjMTBnY21WemIyeDJa
WE1nZEc4Z1lYQndjbTk0YVcxaGRHVnNlU0JqYjI1MFpYaDBMbVp2YjFzbmRHaHBjeWRkWEc0Z0lD
QWdJQ0FnSUdselRHbDBaWEpoYkNBOUlIQmhjblJ6VzJsZExtOXlhV2RwYm1Gc0lDRTlQU0J3WVhK
ME8xeHVJQ0FnSUc5eWFXZHBibUZzSUNzOUlDaHdZWEowYzF0cFhTNXpaWEJoY21GMGIzSWdmSHdn
SnljcElDc2djR0Z5ZER0Y2JseHVJQ0FnSUdsbUlDZ2hhWE5NYVhSbGNtRnNJQ1ltSUNod1lYSjBJ
RDA5UFNBbkxpNG5JSHg4SUhCaGNuUWdQVDA5SUNjdUp5QjhmQ0J3WVhKMElEMDlQU0FuZEdocGN5
Y3BLU0I3WEc0Z0lDQWdJQ0JwWmlBb1pHbG5MbXhsYm1kMGFDQStJREFwSUh0Y2JpQWdJQ0FnSUNB
Z2RHaHliM2NnYm1WM0lFVjRZMlZ3ZEdsdmJpZ25TVzUyWVd4cFpDQndZWFJvT2lBbklDc2diM0pw
WjJsdVlXd3NJSHRzYjJOOUtUdGNiaUFnSUNBZ0lIMGdaV3h6WlNCcFppQW9jR0Z5ZENBOVBUMGdK
eTR1SnlrZ2UxeHVJQ0FnSUNBZ0lDQmtaWEIwYUNzck8xeHVJQ0FnSUNBZ0lDQmtaWEIwYUZOMGNt
bHVaeUFyUFNBbkxpNHZKenRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNB
Z1pHbG5MbkIxYzJnb2NHRnlkQ2s3WEc0Z0lDQWdmVnh1SUNCOVhHNWNiaUFnY21WMGRYSnVJSHRj
YmlBZ0lDQjBlWEJsT2lBblVHRjBhRVY0Y0hKbGMzTnBiMjRuTEZ4dUlDQWdJR1JoZEdFc1hHNGdJ
Q0FnWkdWd2RHZ3NYRzRnSUNBZ2NHRnlkSE02SUdScFp5eGNiaUFnSUNCdmNtbG5hVzVoYkN4Y2Jp
QWdJQ0JzYjJOY2JpQWdmVHRjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlIQnlaWEJoY21W
TmRYTjBZV05vWlNod1lYUm9MQ0J3WVhKaGJYTXNJR2hoYzJnc0lHOXdaVzRzSUhOMGNtbHdMQ0Jz
YjJOSmJtWnZLU0I3WEc0Z0lDOHZJRTExYzNRZ2RYTmxJR05vWVhKQmRDQjBieUJ6ZFhCd2IzSjBJ
RWxGSUhCeVpTMHhNRnh1SUNCc1pYUWdaWE5qWVhCbFJteGhaeUE5SUc5d1pXNHVZMmhoY2tGMEtE
TXBJSHg4SUc5d1pXNHVZMmhoY2tGMEtESXBMRnh1SUNBZ0lDQWdaWE5qWVhCbFpDQTlJR1Z6WTJG
d1pVWnNZV2NnSVQwOUlDZDdKeUFtSmlCbGMyTmhjR1ZHYkdGbklDRTlQU0FuSmljN1hHNWNiaUFn
YkdWMElHUmxZMjl5WVhSdmNpQTlJQ2d2WEZ3cUx5NTBaWE4wS0c5d1pXNHBLVHRjYmlBZ2NtVjBk
WEp1SUh0Y2JpQWdJQ0IwZVhCbE9pQmtaV052Y21GMGIzSWdQeUFuUkdWamIzSmhkRzl5SnlBNklD
ZE5kWE4wWVdOb1pWTjBZWFJsYldWdWRDY3NYRzRnSUNBZ2NHRjBhQ3hjYmlBZ0lDQndZWEpoYlhN
c1hHNGdJQ0FnYUdGemFDeGNiaUFnSUNCbGMyTmhjR1ZrTEZ4dUlDQWdJSE4wY21sd0xGeHVJQ0Fn
SUd4dll6b2dkR2hwY3k1c2IyTkpibVp2S0d4dlkwbHVabThwWEc0Z0lIMDdYRzU5WEc1Y2JtVjRj
Rzl5ZENCbWRXNWpkR2x2YmlCd2NtVndZWEpsVW1GM1FteHZZMnNvYjNCbGJsSmhkMEpzYjJOckxD
QmpiMjUwWlc1MGN5d2dZMnh2YzJVc0lHeHZZMGx1Wm04cElIdGNiaUFnZG1Gc2FXUmhkR1ZEYkc5
elpTaHZjR1Z1VW1GM1FteHZZMnNzSUdOc2IzTmxLVHRjYmx4dUlDQnNiMk5KYm1adklEMGdkR2hw
Y3k1c2IyTkpibVp2S0d4dlkwbHVabThwTzF4dUlDQnNaWFFnY0hKdlozSmhiU0E5SUh0Y2JpQWdJ
Q0IwZVhCbE9pQW5VSEp2WjNKaGJTY3NYRzRnSUNBZ1ltOWtlVG9nWTI5dWRHVnVkSE1zWEc0Z0lD
QWdjM1J5YVhBNklIdDlMRnh1SUNBZ0lHeHZZem9nYkc5alNXNW1iMXh1SUNCOU8xeHVYRzRnSUhK
bGRIVnliaUI3WEc0Z0lDQWdkSGx3WlRvZ0owSnNiMk5yVTNSaGRHVnRaVzUwSnl4Y2JpQWdJQ0J3
WVhSb09pQnZjR1Z1VW1GM1FteHZZMnN1Y0dGMGFDeGNiaUFnSUNCd1lYSmhiWE02SUc5d1pXNVNZ
WGRDYkc5amF5NXdZWEpoYlhNc1hHNGdJQ0FnYUdGemFEb2diM0JsYmxKaGQwSnNiMk5yTG1oaGMy
Z3NYRzRnSUNBZ2NISnZaM0poYlN4Y2JpQWdJQ0J2Y0dWdVUzUnlhWEE2SUh0OUxGeHVJQ0FnSUds
dWRtVnljMlZUZEhKcGNEb2dlMzBzWEc0Z0lDQWdZMnh2YzJWVGRISnBjRG9nZTMwc1hHNGdJQ0Fn
Ykc5ak9pQnNiMk5KYm1adlhHNGdJSDA3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQndj
bVZ3WVhKbFFteHZZMnNvYjNCbGJrSnNiMk5yTENCd2NtOW5jbUZ0TENCcGJuWmxjbk5sUVc1a1VI
SnZaM0poYlN3Z1kyeHZjMlVzSUdsdWRtVnlkR1ZrTENCc2IyTkpibVp2S1NCN1hHNGdJR2xtSUNo
amJHOXpaU0FtSmlCamJHOXpaUzV3WVhSb0tTQjdYRzRnSUNBZ2RtRnNhV1JoZEdWRGJHOXpaU2h2
Y0dWdVFteHZZMnNzSUdOc2IzTmxLVHRjYmlBZ2ZWeHVYRzRnSUd4bGRDQmtaV052Y21GMGIzSWdQ
U0FvTDF4Y0tpOHVkR1Z6ZENodmNHVnVRbXh2WTJzdWIzQmxiaWtwTzF4dVhHNGdJSEJ5YjJkeVlX
MHVZbXh2WTJ0UVlYSmhiWE1nUFNCdmNHVnVRbXh2WTJzdVlteHZZMnRRWVhKaGJYTTdYRzVjYmlB
Z2JHVjBJR2x1ZG1WeWMyVXNYRzRnSUNBZ0lDQnBiblpsY25ObFUzUnlhWEE3WEc1Y2JpQWdhV1ln
S0dsdWRtVnljMlZCYm1SUWNtOW5jbUZ0S1NCN1hHNGdJQ0FnYVdZZ0tHUmxZMjl5WVhSdmNpa2dl
MXh1SUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRVY0WTJWd2RHbHZiaWduVlc1bGVIQmxZM1JsWkNCcGJu
Wmxjbk5sSUdKc2IyTnJJRzl1SUdSbFkyOXlZWFJ2Y2ljc0lHbHVkbVZ5YzJWQmJtUlFjbTluY21G
dEtUdGNiaUFnSUNCOVhHNWNiaUFnSUNCcFppQW9hVzUyWlhKelpVRnVaRkJ5YjJkeVlXMHVZMmho
YVc0cElIdGNiaUFnSUNBZ0lHbHVkbVZ5YzJWQmJtUlFjbTluY21GdExuQnliMmR5WVcwdVltOWtl
VnN3WFM1amJHOXpaVk4wY21sd0lEMGdZMnh2YzJVdWMzUnlhWEE3WEc0Z0lDQWdmVnh1WEc0Z0lD
QWdhVzUyWlhKelpWTjBjbWx3SUQwZ2FXNTJaWEp6WlVGdVpGQnliMmR5WVcwdWMzUnlhWEE3WEc0
Z0lDQWdhVzUyWlhKelpTQTlJR2x1ZG1WeWMyVkJibVJRY205bmNtRnRMbkJ5YjJkeVlXMDdYRzRn
SUgxY2JseHVJQ0JwWmlBb2FXNTJaWEowWldRcElIdGNiaUFnSUNCcGJuWmxjblJsWkNBOUlHbHVk
bVZ5YzJVN1hHNGdJQ0FnYVc1MlpYSnpaU0E5SUhCeWIyZHlZVzA3WEc0Z0lDQWdjSEp2WjNKaGJT
QTlJR2x1ZG1WeWRHVmtPMXh1SUNCOVhHNWNiaUFnY21WMGRYSnVJSHRjYmlBZ0lDQjBlWEJsT2lC
a1pXTnZjbUYwYjNJZ1B5QW5SR1ZqYjNKaGRHOXlRbXh2WTJzbklEb2dKMEpzYjJOclUzUmhkR1Z0
Wlc1MEp5eGNiaUFnSUNCd1lYUm9PaUJ2Y0dWdVFteHZZMnN1Y0dGMGFDeGNiaUFnSUNCd1lYSmhi
WE02SUc5d1pXNUNiRzlqYXk1d1lYSmhiWE1zWEc0Z0lDQWdhR0Z6YURvZ2IzQmxia0pzYjJOckxt
aGhjMmdzWEc0Z0lDQWdjSEp2WjNKaGJTeGNiaUFnSUNCcGJuWmxjbk5sTEZ4dUlDQWdJRzl3Wlc1
VGRISnBjRG9nYjNCbGJrSnNiMk5yTG5OMGNtbHdMRnh1SUNBZ0lHbHVkbVZ5YzJWVGRISnBjQ3hj
YmlBZ0lDQmpiRzl6WlZOMGNtbHdPaUJqYkc5elpTQW1KaUJqYkc5elpTNXpkSEpwY0N4Y2JpQWdJ
Q0JzYjJNNklIUm9hWE11Ykc5alNXNW1ieWhzYjJOSmJtWnZLVnh1SUNCOU8xeHVmVnh1WEc1bGVI
QnZjblFnWm5WdVkzUnBiMjRnY0hKbGNHRnlaVkJ5YjJkeVlXMG9jM1JoZEdWdFpXNTBjeXdnYkc5
aktTQjdYRzRnSUdsbUlDZ2hiRzlqSUNZbUlITjBZWFJsYldWdWRITXViR1Z1WjNSb0tTQjdYRzRn
SUNBZ1kyOXVjM1FnWm1seWMzUk1iMk1nUFNCemRHRjBaVzFsYm5Seld6QmRMbXh2WXl4Y2JpQWdJ
Q0FnSUNBZ0lDQnNZWE4wVEc5aklEMGdjM1JoZEdWdFpXNTBjMXR6ZEdGMFpXMWxiblJ6TG14bGJt
ZDBhQ0F0SURGZExteHZZenRjYmx4dUlDQWdJQzhxSUdsemRHRnVZblZzSUdsbmJtOXlaU0JsYkhO
bElDb3ZYRzRnSUNBZ2FXWWdLR1pwY25OMFRHOWpJQ1ltSUd4aGMzUk1iMk1wSUh0Y2JpQWdJQ0Fn
SUd4dll5QTlJSHRjYmlBZ0lDQWdJQ0FnYzI5MWNtTmxPaUJtYVhKemRFeHZZeTV6YjNWeVkyVXNY
RzRnSUNBZ0lDQWdJSE4wWVhKME9pQjdYRzRnSUNBZ0lDQWdJQ0FnYkdsdVpUb2dabWx5YzNSTWIy
TXVjM1JoY25RdWJHbHVaU3hjYmlBZ0lDQWdJQ0FnSUNCamIyeDFiVzQ2SUdacGNuTjBURzlqTG5O
MFlYSjBMbU52YkhWdGJseHVJQ0FnSUNBZ0lDQjlMRnh1SUNBZ0lDQWdJQ0JsYm1RNklIdGNiaUFn
SUNBZ0lDQWdJQ0JzYVc1bE9pQnNZWE4wVEc5akxtVnVaQzVzYVc1bExGeHVJQ0FnSUNBZ0lDQWdJ
R052YkhWdGJqb2diR0Z6ZEV4dll5NWxibVF1WTI5c2RXMXVYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lD
QWdJSDA3WEc0Z0lDQWdmVnh1SUNCOVhHNWNiaUFnY21WMGRYSnVJSHRjYmlBZ0lDQjBlWEJsT2lB
blVISnZaM0poYlNjc1hHNGdJQ0FnWW05a2VUb2djM1JoZEdWdFpXNTBjeXhjYmlBZ0lDQnpkSEpw
Y0RvZ2UzMHNYRzRnSUNBZ2JHOWpPaUJzYjJOY2JpQWdmVHRjYm4xY2JseHVYRzVsZUhCdmNuUWda
blZ1WTNScGIyNGdjSEpsY0dGeVpWQmhjblJwWVd4Q2JHOWpheWh2Y0dWdUxDQndjbTluY21GdExD
QmpiRzl6WlN3Z2JHOWpTVzVtYnlrZ2UxeHVJQ0IyWVd4cFpHRjBaVU5zYjNObEtHOXdaVzRzSUdO
c2IzTmxLVHRjYmx4dUlDQnlaWFIxY200Z2UxeHVJQ0FnSUhSNWNHVTZJQ2RRWVhKMGFXRnNRbXh2
WTJ0VGRHRjBaVzFsYm5RbkxGeHVJQ0FnSUc1aGJXVTZJRzl3Wlc0dWNHRjBhQ3hjYmlBZ0lDQndZ
WEpoYlhNNklHOXdaVzR1Y0dGeVlXMXpMRnh1SUNBZ0lHaGhjMmc2SUc5d1pXNHVhR0Z6YUN4Y2Jp
QWdJQ0J3Y205bmNtRnRMRnh1SUNBZ0lHOXdaVzVUZEhKcGNEb2diM0JsYmk1emRISnBjQ3hjYmlB
Z0lDQmpiRzl6WlZOMGNtbHdPaUJqYkc5elpTQW1KaUJqYkc5elpTNXpkSEpwY0N4Y2JpQWdJQ0Jz
YjJNNklIUm9hWE11Ykc5alNXNW1ieWhzYjJOSmJtWnZLVnh1SUNCOU8xeHVmVnh1WEc0aVhYMD0K
KzsKK2RlZmluZSgnaGFuZGxlYmFycy9jb21waWxlci9iYXNlJyxbJ2V4cG9ydHMnLCAnLi9wYXJz
ZXInLCAnLi93aGl0ZXNwYWNlLWNvbnRyb2wnLCAnLi9oZWxwZXJzJywgJy4uL3V0aWxzJ10sIGZ1
bmN0aW9uIChleHBvcnRzLCBfcGFyc2VyLCBfd2hpdGVzcGFjZUNvbnRyb2wsIF9oZWxwZXJzLCBf
dXRpbHMpIHsKKyAgJ3VzZSBzdHJpY3QnOworCisgIGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7
CisgIGV4cG9ydHMucGFyc2UgPSBwYXJzZTsKKyAgLy8gaXN0YW5idWwgaWdub3JlIG5leHQKKwor
ICBmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9i
ai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9CisKKyAgdmFyIF9wYXJz
ZXIyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcGFyc2VyKTsKKworICB2YXIgX1doaXRlc3Bh
Y2VDb250cm9sID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfd2hpdGVzcGFjZUNvbnRyb2wpOwor
CisgIGV4cG9ydHMucGFyc2VyID0gX3BhcnNlcjJbJ2RlZmF1bHQnXTsKKworICB2YXIgeXkgPSB7
fTsKKyAgX3V0aWxzLmV4dGVuZCh5eSwgX2hlbHBlcnMpOworCisgIGZ1bmN0aW9uIHBhcnNlKGlu
cHV0LCBvcHRpb25zKSB7CisgICAgLy8gSnVzdCByZXR1cm4gaWYgYW4gYWxyZWFkeS1jb21waWxl
ZCBBU1Qgd2FzIHBhc3NlZCBpbi4KKyAgICBpZiAoaW5wdXQudHlwZSA9PT0gJ1Byb2dyYW0nKSB7
CisgICAgICByZXR1cm4gaW5wdXQ7CisgICAgfQorCisgICAgX3BhcnNlcjJbJ2RlZmF1bHQnXS55
eSA9IHl5OworCisgICAgLy8gQWx0ZXJpbmcgdGhlIHNoYXJlZCBvYmplY3QgaGVyZSwgYnV0IHRo
aXMgaXMgb2sgYXMgcGFyc2VyIGlzIGEgc3luYyBvcGVyYXRpb24KKyAgICB5eS5sb2NJbmZvID0g
ZnVuY3Rpb24gKGxvY0luZm8pIHsKKyAgICAgIHJldHVybiBuZXcgeXkuU291cmNlTG9jYXRpb24o
b3B0aW9ucyAmJiBvcHRpb25zLnNyY05hbWUsIGxvY0luZm8pOworICAgIH07CisKKyAgICB2YXIg
c3RyaXAgPSBuZXcgX1doaXRlc3BhY2VDb250cm9sWydkZWZhdWx0J10ob3B0aW9ucyk7CisgICAg
cmV0dXJuIHN0cmlwLmFjY2VwdChfcGFyc2VyMlsnZGVmYXVsdCddLnBhcnNlKGlucHV0KSk7Cisg
IH0KK30pOworLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2
NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYklpNHVMeTR1THk0dUx5NHVMMnhwWWk5
b1lXNWtiR1ZpWVhKekwyTnZiWEJwYkdWeUwySmhjMlV1YW5NaVhTd2libUZ0WlhNaU9sdGRMQ0p0
WVhCd2FXNW5jeUk2SWpzN096czdPenM3T3pzN096dFZRVXRUTEUxQlFVMDdPMEZCUldZc1RVRkJT
U3hGUVVGRkxFZEJRVWNzUlVGQlJTeERRVUZETzBGQlExb3NVMEZNVXl4TlFVRk5MRU5CUzFJc1JV
RkJSU3hYUVVGVkxFTkJRVU03TzBGQlJXSXNWMEZCVXl4TFFVRkxMRU5CUVVNc1MwRkJTeXhGUVVG
RkxFOUJRVThzUlVGQlJUczdRVUZGY0VNc1VVRkJTU3hMUVVGTExFTkJRVU1zU1VGQlNTeExRVUZM
TEZOQlFWTXNSVUZCUlR0QlFVRkZMR0ZCUVU4c1MwRkJTeXhEUVVGRE8wdEJRVVU3TzBGQlJTOURM
SGRDUVVGUExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVOQlFVTTdPenRCUVVkbUxFMUJRVVVzUTBGQlF5
eFBRVUZQTEVkQlFVY3NWVUZCVXl4UFFVRlBMRVZCUVVVN1FVRkROMElzWVVGQlR5eEpRVUZKTEVW
QlFVVXNRMEZCUXl4alFVRmpMRU5CUVVNc1QwRkJUeXhKUVVGSkxFOUJRVThzUTBGQlF5eFBRVUZQ
TEVWQlFVVXNUMEZCVHl4RFFVRkRMRU5CUVVNN1MwRkRia1VzUTBGQlF6czdRVUZGUml4UlFVRkpM
RXRCUVVzc1IwRkJSeXhyUTBGQmMwSXNUMEZCVHl4RFFVRkRMRU5CUVVNN1FVRkRNME1zVjBGQlR5
eExRVUZMTEVOQlFVTXNUVUZCVFN4RFFVRkRMRzlDUVVGUExFdEJRVXNzUTBGQlF5eExRVUZMTEVO
QlFVTXNRMEZCUXl4RFFVRkRPMGRCUXpGRElpd2labWxzWlNJNkltSmhjMlV1YW5NaUxDSnpiM1Z5
WTJWelEyOXVkR1Z1ZENJNld5SnBiWEJ2Y25RZ2NHRnljMlZ5SUdaeWIyMGdKeTR2Y0dGeWMyVnlK
enRjYm1sdGNHOXlkQ0JYYUdsMFpYTndZV05sUTI5dWRISnZiQ0JtY205dElDY3VMM2RvYVhSbGMz
QmhZMlV0WTI5dWRISnZiQ2M3WEc1cGJYQnZjblFnS2lCaGN5QklaV3h3WlhKeklHWnliMjBnSnk0
dmFHVnNjR1Z5Y3ljN1hHNXBiWEJ2Y25RZ2V5QmxlSFJsYm1RZ2ZTQm1jbTl0SUNjdUxpOTFkR2xz
Y3ljN1hHNWNibVY0Y0c5eWRDQjdJSEJoY25ObGNpQjlPMXh1WEc1c1pYUWdlWGtnUFNCN2ZUdGNi
bVY0ZEdWdVpDaDVlU3dnU0dWc2NHVnljeWs3WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCd1lY
SnpaU2hwYm5CMWRDd2diM0IwYVc5dWN5a2dlMXh1SUNBdkx5QktkWE4wSUhKbGRIVnliaUJwWmlC
aGJpQmhiSEpsWVdSNUxXTnZiWEJwYkdWa0lFRlRWQ0IzWVhNZ2NHRnpjMlZrSUdsdUxseHVJQ0Jw
WmlBb2FXNXdkWFF1ZEhsd1pTQTlQVDBnSjFCeWIyZHlZVzBuS1NCN0lISmxkSFZ5YmlCcGJuQjFk
RHNnZlZ4dVhHNGdJSEJoY25ObGNpNTVlU0E5SUhsNU8xeHVYRzRnSUM4dklFRnNkR1Z5YVc1bklI
Um9aU0J6YUdGeVpXUWdiMkpxWldOMElHaGxjbVVzSUdKMWRDQjBhR2x6SUdseklHOXJJR0Z6SUhC
aGNuTmxjaUJwY3lCaElITjVibU1nYjNCbGNtRjBhVzl1WEc0Z0lIbDVMbXh2WTBsdVptOGdQU0Jt
ZFc1amRHbHZiaWhzYjJOSmJtWnZLU0I3WEc0Z0lDQWdjbVYwZFhKdUlHNWxkeUI1ZVM1VGIzVnlZ
MlZNYjJOaGRHbHZiaWh2Y0hScGIyNXpJQ1ltSUc5d2RHbHZibk11YzNKalRtRnRaU3dnYkc5alNX
NW1ieWs3WEc0Z0lIMDdYRzVjYmlBZ2JHVjBJSE4wY21sd0lEMGdibVYzSUZkb2FYUmxjM0JoWTJW
RGIyNTBjbTlzS0c5d2RHbHZibk1wTzF4dUlDQnlaWFIxY200Z2MzUnlhWEF1WVdOalpYQjBLSEJo
Y25ObGNpNXdZWEp6WlNocGJuQjFkQ2twTzF4dWZWeHVJbDE5Cis7CitkZWZpbmUoJ2hhbmRsZWJh
cnMvY29tcGlsZXIvY29tcGlsZXInLFsnZXhwb3J0cycsICcuLi9leGNlcHRpb24nLCAnLi4vdXRp
bHMnLCAnLi9hc3QnXSwgZnVuY3Rpb24gKGV4cG9ydHMsIF9leGNlcHRpb24sIF91dGlscywgX2Fz
dCkgeworICAvKiBlc2xpbnQtZGlzYWJsZSBuZXctY2FwICovCisKKyAgJ3VzZSBzdHJpY3QnOwor
CisgIGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7CisgIGV4cG9ydHMuQ29tcGlsZXIgPSBDb21w
aWxlcjsKKyAgZXhwb3J0cy5wcmVjb21waWxlID0gcHJlY29tcGlsZTsKKyAgZXhwb3J0cy5jb21w
aWxlID0gY29tcGlsZTsKKyAgLy8gaXN0YW5idWwgaWdub3JlIG5leHQKKworICBmdW5jdGlvbiBf
aW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxl
ID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9CisKKyAgdmFyIF9FeGNlcHRpb24gPSBfaW50
ZXJvcFJlcXVpcmVEZWZhdWx0KF9leGNlcHRpb24pOworCisgIHZhciBfQVNUID0gX2ludGVyb3BS
ZXF1aXJlRGVmYXVsdChfYXN0KTsKKworICB2YXIgc2xpY2UgPSBbXS5zbGljZTsKKworICBmdW5j
dGlvbiBDb21waWxlcigpIHt9CisKKyAgLy8gdGhlIGZvdW5kSGVscGVyIHJlZ2lzdGVyIHdpbGwg
ZGlzYW1iaWd1YXRlIGhlbHBlciBsb29rdXAgZnJvbSBmaW5kaW5nIGEKKyAgLy8gZnVuY3Rpb24g
aW4gYSBjb250ZXh0LiBUaGlzIGlzIG5lY2Vzc2FyeSBmb3IgbXVzdGFjaGUgY29tcGF0aWJpbGl0
eSwgd2hpY2gKKyAgLy8gcmVxdWlyZXMgdGhhdCBjb250ZXh0IGZ1bmN0aW9ucyBpbiBibG9ja3Mg
YXJlIGV2YWx1YXRlZCBieSBibG9ja0hlbHBlck1pc3NpbmcsCisgIC8vIGFuZCB0aGVuIHByb2Nl
ZWQgYXMgaWYgdGhlIHJlc3VsdGluZyB2YWx1ZSB3YXMgcHJvdmlkZWQgdG8gYmxvY2tIZWxwZXJN
aXNzaW5nLgorCisgIENvbXBpbGVyLnByb3RvdHlwZSA9IHsKKyAgICBjb21waWxlcjogQ29tcGls
ZXIsCisKKyAgICBlcXVhbHM6IGZ1bmN0aW9uIGVxdWFscyhvdGhlcikgeworICAgICAgdmFyIGxl
biA9IHRoaXMub3Bjb2Rlcy5sZW5ndGg7CisgICAgICBpZiAob3RoZXIub3Bjb2Rlcy5sZW5ndGgg
IT09IGxlbikgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICB9CisKKyAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgdmFyIG9wY29kZSA9IHRoaXMub3Bj
b2Rlc1tpXSwKKyAgICAgICAgICAgIG90aGVyT3Bjb2RlID0gb3RoZXIub3Bjb2Rlc1tpXTsKKyAg
ICAgICAgaWYgKG9wY29kZS5vcGNvZGUgIT09IG90aGVyT3Bjb2RlLm9wY29kZSB8fCAhYXJnRXF1
YWxzKG9wY29kZS5hcmdzLCBvdGhlck9wY29kZS5hcmdzKSkgeworICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgfQorICAgICAgfQorCisgICAgICAvLyBXZSBrbm93IHRoYXQgbGVuZ3Ro
IGlzIHRoZSBzYW1lIGJldHdlZW4gdGhlIHR3byBhcnJheXMgYmVjYXVzZSB0aGV5IGFyZSBkaXJl
Y3RseSB0aWVkCisgICAgICAvLyB0byB0aGUgb3Bjb2RlIGJlaGF2aW9yIGFib3ZlLgorICAgICAg
bGVuID0gdGhpcy5jaGlsZHJlbi5sZW5ndGg7CisgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxl
bjsgaSsrKSB7CisgICAgICAgIGlmICghdGhpcy5jaGlsZHJlbltpXS5lcXVhbHMob3RoZXIuY2hp
bGRyZW5baV0pKSB7CisgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICB9
CisKKyAgICAgIHJldHVybiB0cnVlOworICAgIH0sCisKKyAgICBndWlkOiAwLAorCisgICAgY29t
cGlsZTogZnVuY3Rpb24gY29tcGlsZShwcm9ncmFtLCBvcHRpb25zKSB7CisgICAgICB0aGlzLnNv
dXJjZU5vZGUgPSBbXTsKKyAgICAgIHRoaXMub3Bjb2RlcyA9IFtdOworICAgICAgdGhpcy5jaGls
ZHJlbiA9IFtdOworICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9uczsKKyAgICAgIHRoaXMuc3Ry
aW5nUGFyYW1zID0gb3B0aW9ucy5zdHJpbmdQYXJhbXM7CisgICAgICB0aGlzLnRyYWNrSWRzID0g
b3B0aW9ucy50cmFja0lkczsKKworICAgICAgb3B0aW9ucy5ibG9ja1BhcmFtcyA9IG9wdGlvbnMu
YmxvY2tQYXJhbXMgfHwgW107CisKKyAgICAgIC8vIFRoZXNlIGNoYW5nZXMgd2lsbCBwcm9wYWdh
dGUgdG8gdGhlIG90aGVyIGNvbXBpbGVyIGNvbXBvbmVudHMKKyAgICAgIHZhciBrbm93bkhlbHBl
cnMgPSBvcHRpb25zLmtub3duSGVscGVyczsKKyAgICAgIG9wdGlvbnMua25vd25IZWxwZXJzID0g
eworICAgICAgICAnaGVscGVyTWlzc2luZyc6IHRydWUsCisgICAgICAgICdibG9ja0hlbHBlck1p
c3NpbmcnOiB0cnVlLAorICAgICAgICAnZWFjaCc6IHRydWUsCisgICAgICAgICdpZic6IHRydWUs
CisgICAgICAgICd1bmxlc3MnOiB0cnVlLAorICAgICAgICAnd2l0aCc6IHRydWUsCisgICAgICAg
ICdsb2cnOiB0cnVlLAorICAgICAgICAnbG9va3VwJzogdHJ1ZQorICAgICAgfTsKKyAgICAgIGlm
IChrbm93bkhlbHBlcnMpIHsKKyAgICAgICAgZm9yICh2YXIgX25hbWUgaW4ga25vd25IZWxwZXJz
KSB7CisgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi8KKyAgICAgICAgICBpZiAo
X25hbWUgaW4ga25vd25IZWxwZXJzKSB7CisgICAgICAgICAgICBvcHRpb25zLmtub3duSGVscGVy
c1tfbmFtZV0gPSBrbm93bkhlbHBlcnNbX25hbWVdOworICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgfQorCisgICAgICByZXR1cm4gdGhpcy5hY2NlcHQocHJvZ3JhbSk7CisgICAgfSwKKwor
ICAgIGNvbXBpbGVQcm9ncmFtOiBmdW5jdGlvbiBjb21waWxlUHJvZ3JhbShwcm9ncmFtKSB7Cisg
ICAgICB2YXIgY2hpbGRDb21waWxlciA9IG5ldyB0aGlzLmNvbXBpbGVyKCksCisgICAgICAgICAg
Ly8gZXNsaW50LWRpc2FibGUtbGluZSBuZXctY2FwCisgICAgICByZXN1bHQgPSBjaGlsZENvbXBp
bGVyLmNvbXBpbGUocHJvZ3JhbSwgdGhpcy5vcHRpb25zKSwKKyAgICAgICAgICBndWlkID0gdGhp
cy5ndWlkKys7CisKKyAgICAgIHRoaXMudXNlUGFydGlhbCA9IHRoaXMudXNlUGFydGlhbCB8fCBy
ZXN1bHQudXNlUGFydGlhbDsKKworICAgICAgdGhpcy5jaGlsZHJlbltndWlkXSA9IHJlc3VsdDsK
KyAgICAgIHRoaXMudXNlRGVwdGhzID0gdGhpcy51c2VEZXB0aHMgfHwgcmVzdWx0LnVzZURlcHRo
czsKKworICAgICAgcmV0dXJuIGd1aWQ7CisgICAgfSwKKworICAgIGFjY2VwdDogZnVuY3Rpb24g
YWNjZXB0KG5vZGUpIHsKKyAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0OiBTYW5pdHkgY29k
ZSAqLworICAgICAgaWYgKCF0aGlzW25vZGUudHlwZV0pIHsKKyAgICAgICAgdGhyb3cgbmV3IF9F
eGNlcHRpb25bJ2RlZmF1bHQnXSgnVW5rbm93biB0eXBlOiAnICsgbm9kZS50eXBlLCBub2RlKTsK
KyAgICAgIH0KKworICAgICAgdGhpcy5zb3VyY2VOb2RlLnVuc2hpZnQobm9kZSk7CisgICAgICB2
YXIgcmV0ID0gdGhpc1tub2RlLnR5cGVdKG5vZGUpOworICAgICAgdGhpcy5zb3VyY2VOb2RlLnNo
aWZ0KCk7CisgICAgICByZXR1cm4gcmV0OworICAgIH0sCisKKyAgICBQcm9ncmFtOiBmdW5jdGlv
biBQcm9ncmFtKHByb2dyYW0pIHsKKyAgICAgIHRoaXMub3B0aW9ucy5ibG9ja1BhcmFtcy51bnNo
aWZ0KHByb2dyYW0uYmxvY2tQYXJhbXMpOworCisgICAgICB2YXIgYm9keSA9IHByb2dyYW0uYm9k
eSwKKyAgICAgICAgICBib2R5TGVuZ3RoID0gYm9keS5sZW5ndGg7CisgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGJvZHlMZW5ndGg7IGkrKykgeworICAgICAgICB0aGlzLmFjY2VwdChib2R5W2ld
KTsKKyAgICAgIH0KKworICAgICAgdGhpcy5vcHRpb25zLmJsb2NrUGFyYW1zLnNoaWZ0KCk7CisK
KyAgICAgIHRoaXMuaXNTaW1wbGUgPSBib2R5TGVuZ3RoID09PSAxOworICAgICAgdGhpcy5ibG9j
a1BhcmFtcyA9IHByb2dyYW0uYmxvY2tQYXJhbXMgPyBwcm9ncmFtLmJsb2NrUGFyYW1zLmxlbmd0
aCA6IDA7CisKKyAgICAgIHJldHVybiB0aGlzOworICAgIH0sCisKKyAgICBCbG9ja1N0YXRlbWVu
dDogZnVuY3Rpb24gQmxvY2tTdGF0ZW1lbnQoYmxvY2spIHsKKyAgICAgIHRyYW5zZm9ybUxpdGVy
YWxUb1BhdGgoYmxvY2spOworCisgICAgICB2YXIgcHJvZ3JhbSA9IGJsb2NrLnByb2dyYW0sCisg
ICAgICAgICAgaW52ZXJzZSA9IGJsb2NrLmludmVyc2U7CisKKyAgICAgIHByb2dyYW0gPSBwcm9n
cmFtICYmIHRoaXMuY29tcGlsZVByb2dyYW0ocHJvZ3JhbSk7CisgICAgICBpbnZlcnNlID0gaW52
ZXJzZSAmJiB0aGlzLmNvbXBpbGVQcm9ncmFtKGludmVyc2UpOworCisgICAgICB2YXIgdHlwZSA9
IHRoaXMuY2xhc3NpZnlTZXhwcihibG9jayk7CisKKyAgICAgIGlmICh0eXBlID09PSAnaGVscGVy
JykgeworICAgICAgICB0aGlzLmhlbHBlclNleHByKGJsb2NrLCBwcm9ncmFtLCBpbnZlcnNlKTsK
KyAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3NpbXBsZScpIHsKKyAgICAgICAgdGhpcy5zaW1w
bGVTZXhwcihibG9jayk7CisKKyAgICAgICAgLy8gbm93IHRoYXQgdGhlIHNpbXBsZSBtdXN0YWNo
ZSBpcyByZXNvbHZlZCwgd2UgbmVlZCB0bworICAgICAgICAvLyBldmFsdWF0ZSBpdCBieSBleGVj
dXRpbmcgYGJsb2NrSGVscGVyTWlzc2luZ2AKKyAgICAgICAgdGhpcy5vcGNvZGUoJ3B1c2hQcm9n
cmFtJywgcHJvZ3JhbSk7CisgICAgICAgIHRoaXMub3Bjb2RlKCdwdXNoUHJvZ3JhbScsIGludmVy
c2UpOworICAgICAgICB0aGlzLm9wY29kZSgnZW1wdHlIYXNoJyk7CisgICAgICAgIHRoaXMub3Bj
b2RlKCdibG9ja1ZhbHVlJywgYmxvY2sucGF0aC5vcmlnaW5hbCk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICB0aGlzLmFtYmlndW91c1NleHByKGJsb2NrLCBwcm9ncmFtLCBpbnZlcnNlKTsKKwor
ICAgICAgICAvLyBub3cgdGhhdCB0aGUgc2ltcGxlIG11c3RhY2hlIGlzIHJlc29sdmVkLCB3ZSBu
ZWVkIHRvCisgICAgICAgIC8vIGV2YWx1YXRlIGl0IGJ5IGV4ZWN1dGluZyBgYmxvY2tIZWxwZXJN
aXNzaW5nYAorICAgICAgICB0aGlzLm9wY29kZSgncHVzaFByb2dyYW0nLCBwcm9ncmFtKTsKKyAg
ICAgICAgdGhpcy5vcGNvZGUoJ3B1c2hQcm9ncmFtJywgaW52ZXJzZSk7CisgICAgICAgIHRoaXMu
b3Bjb2RlKCdlbXB0eUhhc2gnKTsKKyAgICAgICAgdGhpcy5vcGNvZGUoJ2FtYmlndW91c0Jsb2Nr
VmFsdWUnKTsKKyAgICAgIH0KKworICAgICAgdGhpcy5vcGNvZGUoJ2FwcGVuZCcpOworICAgIH0s
CisKKyAgICBEZWNvcmF0b3JCbG9jazogZnVuY3Rpb24gRGVjb3JhdG9yQmxvY2soZGVjb3JhdG9y
KSB7CisgICAgICB2YXIgcHJvZ3JhbSA9IGRlY29yYXRvci5wcm9ncmFtICYmIHRoaXMuY29tcGls
ZVByb2dyYW0oZGVjb3JhdG9yLnByb2dyYW0pOworICAgICAgdmFyIHBhcmFtcyA9IHRoaXMuc2V0
dXBGdWxsTXVzdGFjaGVQYXJhbXMoZGVjb3JhdG9yLCBwcm9ncmFtLCB1bmRlZmluZWQpLAorICAg
ICAgICAgIHBhdGggPSBkZWNvcmF0b3IucGF0aDsKKworICAgICAgdGhpcy51c2VEZWNvcmF0b3Jz
ID0gdHJ1ZTsKKyAgICAgIHRoaXMub3Bjb2RlKCdyZWdpc3RlckRlY29yYXRvcicsIHBhcmFtcy5s
ZW5ndGgsIHBhdGgub3JpZ2luYWwpOworICAgIH0sCisKKyAgICBQYXJ0aWFsU3RhdGVtZW50OiBm
dW5jdGlvbiBQYXJ0aWFsU3RhdGVtZW50KHBhcnRpYWwpIHsKKyAgICAgIHRoaXMudXNlUGFydGlh
bCA9IHRydWU7CisKKyAgICAgIHZhciBwcm9ncmFtID0gcGFydGlhbC5wcm9ncmFtOworICAgICAg
aWYgKHByb2dyYW0pIHsKKyAgICAgICAgcHJvZ3JhbSA9IHRoaXMuY29tcGlsZVByb2dyYW0ocGFy
dGlhbC5wcm9ncmFtKTsKKyAgICAgIH0KKworICAgICAgdmFyIHBhcmFtcyA9IHBhcnRpYWwucGFy
YW1zOworICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPiAxKSB7CisgICAgICAgIHRocm93IG5ldyBf
RXhjZXB0aW9uWydkZWZhdWx0J10oJ1Vuc3VwcG9ydGVkIG51bWJlciBvZiBwYXJ0aWFsIGFyZ3Vt
ZW50czogJyArIHBhcmFtcy5sZW5ndGgsIHBhcnRpYWwpOworICAgICAgfSBlbHNlIGlmICghcGFy
YW1zLmxlbmd0aCkgeworICAgICAgICBpZiAodGhpcy5vcHRpb25zLmV4cGxpY2l0UGFydGlhbENv
bnRleHQpIHsKKyAgICAgICAgICB0aGlzLm9wY29kZSgncHVzaExpdGVyYWwnLCAndW5kZWZpbmVk
Jyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgcGFyYW1zLnB1c2goeyB0eXBlOiAnUGF0
aEV4cHJlc3Npb24nLCBwYXJ0czogW10sIGRlcHRoOiAwIH0pOworICAgICAgICB9CisgICAgICB9
CisKKyAgICAgIHZhciBwYXJ0aWFsTmFtZSA9IHBhcnRpYWwubmFtZS5vcmlnaW5hbCwKKyAgICAg
ICAgICBpc0R5bmFtaWMgPSBwYXJ0aWFsLm5hbWUudHlwZSA9PT0gJ1N1YkV4cHJlc3Npb24nOwor
ICAgICAgaWYgKGlzRHluYW1pYykgeworICAgICAgICB0aGlzLmFjY2VwdChwYXJ0aWFsLm5hbWUp
OworICAgICAgfQorCisgICAgICB0aGlzLnNldHVwRnVsbE11c3RhY2hlUGFyYW1zKHBhcnRpYWws
IHByb2dyYW0sIHVuZGVmaW5lZCwgdHJ1ZSk7CisKKyAgICAgIHZhciBpbmRlbnQgPSBwYXJ0aWFs
LmluZGVudCB8fCAnJzsKKyAgICAgIGlmICh0aGlzLm9wdGlvbnMucHJldmVudEluZGVudCAmJiBp
bmRlbnQpIHsKKyAgICAgICAgdGhpcy5vcGNvZGUoJ2FwcGVuZENvbnRlbnQnLCBpbmRlbnQpOwor
ICAgICAgICBpbmRlbnQgPSAnJzsKKyAgICAgIH0KKworICAgICAgdGhpcy5vcGNvZGUoJ2ludm9r
ZVBhcnRpYWwnLCBpc0R5bmFtaWMsIHBhcnRpYWxOYW1lLCBpbmRlbnQpOworICAgICAgdGhpcy5v
cGNvZGUoJ2FwcGVuZCcpOworICAgIH0sCisgICAgUGFydGlhbEJsb2NrU3RhdGVtZW50OiBmdW5j
dGlvbiBQYXJ0aWFsQmxvY2tTdGF0ZW1lbnQocGFydGlhbEJsb2NrKSB7CisgICAgICB0aGlzLlBh
cnRpYWxTdGF0ZW1lbnQocGFydGlhbEJsb2NrKTsKKyAgICB9LAorCisgICAgTXVzdGFjaGVTdGF0
ZW1lbnQ6IGZ1bmN0aW9uIE11c3RhY2hlU3RhdGVtZW50KG11c3RhY2hlKSB7CisgICAgICB0aGlz
LlN1YkV4cHJlc3Npb24obXVzdGFjaGUpOworCisgICAgICBpZiAobXVzdGFjaGUuZXNjYXBlZCAm
JiAhdGhpcy5vcHRpb25zLm5vRXNjYXBlKSB7CisgICAgICAgIHRoaXMub3Bjb2RlKCdhcHBlbmRF
c2NhcGVkJyk7CisgICAgICB9IGVsc2UgeworICAgICAgICB0aGlzLm9wY29kZSgnYXBwZW5kJyk7
CisgICAgICB9CisgICAgfSwKKyAgICBEZWNvcmF0b3I6IGZ1bmN0aW9uIERlY29yYXRvcihkZWNv
cmF0b3IpIHsKKyAgICAgIHRoaXMuRGVjb3JhdG9yQmxvY2soZGVjb3JhdG9yKTsKKyAgICB9LAor
CisgICAgQ29udGVudFN0YXRlbWVudDogZnVuY3Rpb24gQ29udGVudFN0YXRlbWVudChjb250ZW50
KSB7CisgICAgICBpZiAoY29udGVudC52YWx1ZSkgeworICAgICAgICB0aGlzLm9wY29kZSgnYXBw
ZW5kQ29udGVudCcsIGNvbnRlbnQudmFsdWUpOworICAgICAgfQorICAgIH0sCisKKyAgICBDb21t
ZW50U3RhdGVtZW50OiBmdW5jdGlvbiBDb21tZW50U3RhdGVtZW50KCkge30sCisKKyAgICBTdWJF
eHByZXNzaW9uOiBmdW5jdGlvbiBTdWJFeHByZXNzaW9uKHNleHByKSB7CisgICAgICB0cmFuc2Zv
cm1MaXRlcmFsVG9QYXRoKHNleHByKTsKKyAgICAgIHZhciB0eXBlID0gdGhpcy5jbGFzc2lmeVNl
eHByKHNleHByKTsKKworICAgICAgaWYgKHR5cGUgPT09ICdzaW1wbGUnKSB7CisgICAgICAgIHRo
aXMuc2ltcGxlU2V4cHIoc2V4cHIpOworICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnaGVscGVy
JykgeworICAgICAgICB0aGlzLmhlbHBlclNleHByKHNleHByKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHRoaXMuYW1iaWd1b3VzU2V4cHIoc2V4cHIpOworICAgICAgfQorICAgIH0sCisgICAg
YW1iaWd1b3VzU2V4cHI6IGZ1bmN0aW9uIGFtYmlndW91c1NleHByKHNleHByLCBwcm9ncmFtLCBp
bnZlcnNlKSB7CisgICAgICB2YXIgcGF0aCA9IHNleHByLnBhdGgsCisgICAgICAgICAgbmFtZSA9
IHBhdGgucGFydHNbMF0sCisgICAgICAgICAgaXNCbG9jayA9IHByb2dyYW0gIT0gbnVsbCB8fCBp
bnZlcnNlICE9IG51bGw7CisKKyAgICAgIHRoaXMub3Bjb2RlKCdnZXRDb250ZXh0JywgcGF0aC5k
ZXB0aCk7CisKKyAgICAgIHRoaXMub3Bjb2RlKCdwdXNoUHJvZ3JhbScsIHByb2dyYW0pOworICAg
ICAgdGhpcy5vcGNvZGUoJ3B1c2hQcm9ncmFtJywgaW52ZXJzZSk7CisKKyAgICAgIHBhdGguc3Ry
aWN0ID0gdHJ1ZTsKKyAgICAgIHRoaXMuYWNjZXB0KHBhdGgpOworCisgICAgICB0aGlzLm9wY29k
ZSgnaW52b2tlQW1iaWd1b3VzJywgbmFtZSwgaXNCbG9jayk7CisgICAgfSwKKworICAgIHNpbXBs
ZVNleHByOiBmdW5jdGlvbiBzaW1wbGVTZXhwcihzZXhwcikgeworICAgICAgdmFyIHBhdGggPSBz
ZXhwci5wYXRoOworICAgICAgcGF0aC5zdHJpY3QgPSB0cnVlOworICAgICAgdGhpcy5hY2NlcHQo
cGF0aCk7CisgICAgICB0aGlzLm9wY29kZSgncmVzb2x2ZVBvc3NpYmxlTGFtYmRhJyk7CisgICAg
fSwKKworICAgIGhlbHBlclNleHByOiBmdW5jdGlvbiBoZWxwZXJTZXhwcihzZXhwciwgcHJvZ3Jh
bSwgaW52ZXJzZSkgeworICAgICAgdmFyIHBhcmFtcyA9IHRoaXMuc2V0dXBGdWxsTXVzdGFjaGVQ
YXJhbXMoc2V4cHIsIHByb2dyYW0sIGludmVyc2UpLAorICAgICAgICAgIHBhdGggPSBzZXhwci5w
YXRoLAorICAgICAgICAgIG5hbWUgPSBwYXRoLnBhcnRzWzBdOworCisgICAgICBpZiAodGhpcy5v
cHRpb25zLmtub3duSGVscGVyc1tuYW1lXSkgeworICAgICAgICB0aGlzLm9wY29kZSgnaW52b2tl
S25vd25IZWxwZXInLCBwYXJhbXMubGVuZ3RoLCBuYW1lKTsKKyAgICAgIH0gZWxzZSBpZiAodGhp
cy5vcHRpb25zLmtub3duSGVscGVyc09ubHkpIHsKKyAgICAgICAgdGhyb3cgbmV3IF9FeGNlcHRp
b25bJ2RlZmF1bHQnXSgnWW91IHNwZWNpZmllZCBrbm93bkhlbHBlcnNPbmx5LCBidXQgdXNlZCB0
aGUgdW5rbm93biBoZWxwZXIgJyArIG5hbWUsIHNleHByKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHBhdGguc3RyaWN0ID0gdHJ1ZTsKKyAgICAgICAgcGF0aC5mYWxzeSA9IHRydWU7CisKKyAg
ICAgICAgdGhpcy5hY2NlcHQocGF0aCk7CisgICAgICAgIHRoaXMub3Bjb2RlKCdpbnZva2VIZWxw
ZXInLCBwYXJhbXMubGVuZ3RoLCBwYXRoLm9yaWdpbmFsLCBfQVNUWydkZWZhdWx0J10uaGVscGVy
cy5zaW1wbGVJZChwYXRoKSk7CisgICAgICB9CisgICAgfSwKKworICAgIFBhdGhFeHByZXNzaW9u
OiBmdW5jdGlvbiBQYXRoRXhwcmVzc2lvbihwYXRoKSB7CisgICAgICB0aGlzLmFkZERlcHRoKHBh
dGguZGVwdGgpOworICAgICAgdGhpcy5vcGNvZGUoJ2dldENvbnRleHQnLCBwYXRoLmRlcHRoKTsK
KworICAgICAgdmFyIG5hbWUgPSBwYXRoLnBhcnRzWzBdLAorICAgICAgICAgIHNjb3BlZCA9IF9B
U1RbJ2RlZmF1bHQnXS5oZWxwZXJzLnNjb3BlZElkKHBhdGgpLAorICAgICAgICAgIGJsb2NrUGFy
YW1JZCA9ICFwYXRoLmRlcHRoICYmICFzY29wZWQgJiYgdGhpcy5ibG9ja1BhcmFtSW5kZXgobmFt
ZSk7CisKKyAgICAgIGlmIChibG9ja1BhcmFtSWQpIHsKKyAgICAgICAgdGhpcy5vcGNvZGUoJ2xv
b2t1cEJsb2NrUGFyYW0nLCBibG9ja1BhcmFtSWQsIHBhdGgucGFydHMpOworICAgICAgfSBlbHNl
IGlmICghbmFtZSkgeworICAgICAgICAvLyBDb250ZXh0IHJlZmVyZW5jZSwgaS5lLiBge3tmb28g
Ln19YCBvciBge3tmb28gLi59fWAKKyAgICAgICAgdGhpcy5vcGNvZGUoJ3B1c2hDb250ZXh0Jyk7
CisgICAgICB9IGVsc2UgaWYgKHBhdGguZGF0YSkgeworICAgICAgICB0aGlzLm9wdGlvbnMuZGF0
YSA9IHRydWU7CisgICAgICAgIHRoaXMub3Bjb2RlKCdsb29rdXBEYXRhJywgcGF0aC5kZXB0aCwg
cGF0aC5wYXJ0cywgcGF0aC5zdHJpY3QpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgdGhpcy5v
cGNvZGUoJ2xvb2t1cE9uQ29udGV4dCcsIHBhdGgucGFydHMsIHBhdGguZmFsc3ksIHBhdGguc3Ry
aWN0LCBzY29wZWQpOworICAgICAgfQorICAgIH0sCisKKyAgICBTdHJpbmdMaXRlcmFsOiBmdW5j
dGlvbiBTdHJpbmdMaXRlcmFsKHN0cmluZykgeworICAgICAgdGhpcy5vcGNvZGUoJ3B1c2hTdHJp
bmcnLCBzdHJpbmcudmFsdWUpOworICAgIH0sCisKKyAgICBOdW1iZXJMaXRlcmFsOiBmdW5jdGlv
biBOdW1iZXJMaXRlcmFsKG51bWJlcikgeworICAgICAgdGhpcy5vcGNvZGUoJ3B1c2hMaXRlcmFs
JywgbnVtYmVyLnZhbHVlKTsKKyAgICB9LAorCisgICAgQm9vbGVhbkxpdGVyYWw6IGZ1bmN0aW9u
IEJvb2xlYW5MaXRlcmFsKGJvb2wpIHsKKyAgICAgIHRoaXMub3Bjb2RlKCdwdXNoTGl0ZXJhbCcs
IGJvb2wudmFsdWUpOworICAgIH0sCisKKyAgICBVbmRlZmluZWRMaXRlcmFsOiBmdW5jdGlvbiBV
bmRlZmluZWRMaXRlcmFsKCkgeworICAgICAgdGhpcy5vcGNvZGUoJ3B1c2hMaXRlcmFsJywgJ3Vu
ZGVmaW5lZCcpOworICAgIH0sCisKKyAgICBOdWxsTGl0ZXJhbDogZnVuY3Rpb24gTnVsbExpdGVy
YWwoKSB7CisgICAgICB0aGlzLm9wY29kZSgncHVzaExpdGVyYWwnLCAnbnVsbCcpOworICAgIH0s
CisKKyAgICBIYXNoOiBmdW5jdGlvbiBIYXNoKGhhc2gpIHsKKyAgICAgIHZhciBwYWlycyA9IGhh
c2gucGFpcnMsCisgICAgICAgICAgaSA9IDAsCisgICAgICAgICAgbCA9IHBhaXJzLmxlbmd0aDsK
KworICAgICAgdGhpcy5vcGNvZGUoJ3B1c2hIYXNoJyk7CisKKyAgICAgIGZvciAoOyBpIDwgbDsg
aSsrKSB7CisgICAgICAgIHRoaXMucHVzaFBhcmFtKHBhaXJzW2ldLnZhbHVlKTsKKyAgICAgIH0K
KyAgICAgIHdoaWxlIChpLS0pIHsKKyAgICAgICAgdGhpcy5vcGNvZGUoJ2Fzc2lnblRvSGFzaCcs
IHBhaXJzW2ldLmtleSk7CisgICAgICB9CisgICAgICB0aGlzLm9wY29kZSgncG9wSGFzaCcpOwor
ICAgIH0sCisKKyAgICAvLyBIRUxQRVJTCisgICAgb3Bjb2RlOiBmdW5jdGlvbiBvcGNvZGUobmFt
ZSkgeworICAgICAgdGhpcy5vcGNvZGVzLnB1c2goeyBvcGNvZGU6IG5hbWUsIGFyZ3M6IHNsaWNl
LmNhbGwoYXJndW1lbnRzLCAxKSwgbG9jOiB0aGlzLnNvdXJjZU5vZGVbMF0ubG9jIH0pOworICAg
IH0sCisKKyAgICBhZGREZXB0aDogZnVuY3Rpb24gYWRkRGVwdGgoZGVwdGgpIHsKKyAgICAgIGlm
ICghZGVwdGgpIHsKKyAgICAgICAgcmV0dXJuOworICAgICAgfQorCisgICAgICB0aGlzLnVzZURl
cHRocyA9IHRydWU7CisgICAgfSwKKworICAgIGNsYXNzaWZ5U2V4cHI6IGZ1bmN0aW9uIGNsYXNz
aWZ5U2V4cHIoc2V4cHIpIHsKKyAgICAgIHZhciBpc1NpbXBsZSA9IF9BU1RbJ2RlZmF1bHQnXS5o
ZWxwZXJzLnNpbXBsZUlkKHNleHByLnBhdGgpOworCisgICAgICB2YXIgaXNCbG9ja1BhcmFtID0g
aXNTaW1wbGUgJiYgISF0aGlzLmJsb2NrUGFyYW1JbmRleChzZXhwci5wYXRoLnBhcnRzWzBdKTsK
KworICAgICAgLy8gYSBtdXN0YWNoZSBpcyBhbiBlbGlnaWJsZSBoZWxwZXIgaWY6CisgICAgICAv
LyAqIGl0cyBpZCBpcyBzaW1wbGUgKGEgc2luZ2xlIHBhcnQsIG5vdCBgdGhpc2Agb3IgYC4uYCkK
KyAgICAgIHZhciBpc0hlbHBlciA9ICFpc0Jsb2NrUGFyYW0gJiYgX0FTVFsnZGVmYXVsdCddLmhl
bHBlcnMuaGVscGVyRXhwcmVzc2lvbihzZXhwcik7CisKKyAgICAgIC8vIGlmIGEgbXVzdGFjaGUg
aXMgYW4gZWxpZ2libGUgaGVscGVyIGJ1dCBub3QgYSBkZWZpbml0ZQorICAgICAgLy8gaGVscGVy
LCBpdCBpcyBhbWJpZ3VvdXMsIGFuZCB3aWxsIGJlIHJlc29sdmVkIGluIGEgbGF0ZXIKKyAgICAg
IC8vIHBhc3Mgb3IgYXQgcnVudGltZS4KKyAgICAgIHZhciBpc0VsaWdpYmxlID0gIWlzQmxvY2tQ
YXJhbSAmJiAoaXNIZWxwZXIgfHwgaXNTaW1wbGUpOworCisgICAgICAvLyBpZiBhbWJpZ3VvdXMs
IHdlIGNhbiBwb3NzaWJseSByZXNvbHZlIHRoZSBhbWJpZ3VpdHkgbm93CisgICAgICAvLyBBbiBl
bGlnaWJsZSBoZWxwZXIgaXMgb25lIHRoYXQgZG9lcyBub3QgaGF2ZSBhIGNvbXBsZXggcGF0aCwg
aS5lLiBgdGhpcy5mb29gLCBgLi4vZm9vYCBldGMuCisgICAgICBpZiAoaXNFbGlnaWJsZSAmJiAh
aXNIZWxwZXIpIHsKKyAgICAgICAgdmFyIF9uYW1lMiA9IHNleHByLnBhdGgucGFydHNbMF0sCisg
ICAgICAgICAgICBvcHRpb25zID0gdGhpcy5vcHRpb25zOworCisgICAgICAgIGlmIChvcHRpb25z
Lmtub3duSGVscGVyc1tfbmFtZTJdKSB7CisgICAgICAgICAgaXNIZWxwZXIgPSB0cnVlOworICAg
ICAgICB9IGVsc2UgaWYgKG9wdGlvbnMua25vd25IZWxwZXJzT25seSkgeworICAgICAgICAgIGlz
RWxpZ2libGUgPSBmYWxzZTsKKyAgICAgICAgfQorICAgICAgfQorCisgICAgICBpZiAoaXNIZWxw
ZXIpIHsKKyAgICAgICAgcmV0dXJuICdoZWxwZXInOworICAgICAgfSBlbHNlIGlmIChpc0VsaWdp
YmxlKSB7CisgICAgICAgIHJldHVybiAnYW1iaWd1b3VzJzsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHJldHVybiAnc2ltcGxlJzsKKyAgICAgIH0KKyAgICB9LAorCisgICAgcHVzaFBhcmFtczog
ZnVuY3Rpb24gcHVzaFBhcmFtcyhwYXJhbXMpIHsKKyAgICAgIGZvciAodmFyIGkgPSAwLCBsID0g
cGFyYW1zLmxlbmd0aDsgaSA8IGw7IGkrKykgeworICAgICAgICB0aGlzLnB1c2hQYXJhbShwYXJh
bXNbaV0pOworICAgICAgfQorICAgIH0sCisKKyAgICBwdXNoUGFyYW06IGZ1bmN0aW9uIHB1c2hQ
YXJhbSh2YWwpIHsKKyAgICAgIHZhciB2YWx1ZSA9IHZhbC52YWx1ZSAhPSBudWxsID8gdmFsLnZh
bHVlIDogdmFsLm9yaWdpbmFsIHx8ICcnOworCisgICAgICBpZiAodGhpcy5zdHJpbmdQYXJhbXMp
IHsKKyAgICAgICAgaWYgKHZhbHVlLnJlcGxhY2UpIHsKKyAgICAgICAgICB2YWx1ZSA9IHZhbHVl
LnJlcGxhY2UoL14oXC4/XC5cLykqL2csICcnKS5yZXBsYWNlKC9cLy9nLCAnLicpOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKHZhbC5kZXB0aCkgeworICAgICAgICAgIHRoaXMuYWRkRGVwdGgo
dmFsLmRlcHRoKTsKKyAgICAgICAgfQorICAgICAgICB0aGlzLm9wY29kZSgnZ2V0Q29udGV4dCcs
IHZhbC5kZXB0aCB8fCAwKTsKKyAgICAgICAgdGhpcy5vcGNvZGUoJ3B1c2hTdHJpbmdQYXJhbScs
IHZhbHVlLCB2YWwudHlwZSk7CisKKyAgICAgICAgaWYgKHZhbC50eXBlID09PSAnU3ViRXhwcmVz
c2lvbicpIHsKKyAgICAgICAgICAvLyBTdWJFeHByZXNzaW9ucyBnZXQgZXZhbHVhdGVkIGFuZCBw
YXNzZWQgaW4KKyAgICAgICAgICAvLyBpbiBzdHJpbmcgcGFyYW1zIG1vZGUuCisgICAgICAgICAg
dGhpcy5hY2NlcHQodmFsKTsKKyAgICAgICAgfQorICAgICAgfSBlbHNlIHsKKyAgICAgICAgaWYg
KHRoaXMudHJhY2tJZHMpIHsKKyAgICAgICAgICB2YXIgYmxvY2tQYXJhbUluZGV4ID0gdW5kZWZp
bmVkOworICAgICAgICAgIGlmICh2YWwucGFydHMgJiYgIV9BU1RbJ2RlZmF1bHQnXS5oZWxwZXJz
LnNjb3BlZElkKHZhbCkgJiYgIXZhbC5kZXB0aCkgeworICAgICAgICAgICAgYmxvY2tQYXJhbUlu
ZGV4ID0gdGhpcy5ibG9ja1BhcmFtSW5kZXgodmFsLnBhcnRzWzBdKTsKKyAgICAgICAgICB9Cisg
ICAgICAgICAgaWYgKGJsb2NrUGFyYW1JbmRleCkgeworICAgICAgICAgICAgdmFyIGJsb2NrUGFy
YW1DaGlsZCA9IHZhbC5wYXJ0cy5zbGljZSgxKS5qb2luKCcuJyk7CisgICAgICAgICAgICB0aGlz
Lm9wY29kZSgncHVzaElkJywgJ0Jsb2NrUGFyYW0nLCBibG9ja1BhcmFtSW5kZXgsIGJsb2NrUGFy
YW1DaGlsZCk7CisgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHZhbHVlID0gdmFsLm9y
aWdpbmFsIHx8IHZhbHVlOworICAgICAgICAgICAgaWYgKHZhbHVlLnJlcGxhY2UpIHsKKyAgICAg
ICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9edGhpcyg/OlwufCQpLywgJycpLnJlcGxh
Y2UoL15cLlwvLywgJycpLnJlcGxhY2UoL15cLiQvLCAnJyk7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHRoaXMub3Bjb2RlKCdwdXNoSWQnLCB2YWwudHlwZSwgdmFsdWUpOworICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICB0aGlzLmFjY2VwdCh2YWwpOworICAgICAgfQorICAg
IH0sCisKKyAgICBzZXR1cEZ1bGxNdXN0YWNoZVBhcmFtczogZnVuY3Rpb24gc2V0dXBGdWxsTXVz
dGFjaGVQYXJhbXMoc2V4cHIsIHByb2dyYW0sIGludmVyc2UsIG9taXRFbXB0eSkgeworICAgICAg
dmFyIHBhcmFtcyA9IHNleHByLnBhcmFtczsKKyAgICAgIHRoaXMucHVzaFBhcmFtcyhwYXJhbXMp
OworCisgICAgICB0aGlzLm9wY29kZSgncHVzaFByb2dyYW0nLCBwcm9ncmFtKTsKKyAgICAgIHRo
aXMub3Bjb2RlKCdwdXNoUHJvZ3JhbScsIGludmVyc2UpOworCisgICAgICBpZiAoc2V4cHIuaGFz
aCkgeworICAgICAgICB0aGlzLmFjY2VwdChzZXhwci5oYXNoKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHRoaXMub3Bjb2RlKCdlbXB0eUhhc2gnLCBvbWl0RW1wdHkpOworICAgICAgfQorCisg
ICAgICByZXR1cm4gcGFyYW1zOworICAgIH0sCisKKyAgICBibG9ja1BhcmFtSW5kZXg6IGZ1bmN0
aW9uIGJsb2NrUGFyYW1JbmRleChuYW1lKSB7CisgICAgICBmb3IgKHZhciBkZXB0aCA9IDAsIGxl
biA9IHRoaXMub3B0aW9ucy5ibG9ja1BhcmFtcy5sZW5ndGg7IGRlcHRoIDwgbGVuOyBkZXB0aCsr
KSB7CisgICAgICAgIHZhciBibG9ja1BhcmFtcyA9IHRoaXMub3B0aW9ucy5ibG9ja1BhcmFtc1tk
ZXB0aF0sCisgICAgICAgICAgICBwYXJhbSA9IGJsb2NrUGFyYW1zICYmIF91dGlscy5pbmRleE9m
KGJsb2NrUGFyYW1zLCBuYW1lKTsKKyAgICAgICAgaWYgKGJsb2NrUGFyYW1zICYmIHBhcmFtID49
IDApIHsKKyAgICAgICAgICByZXR1cm4gW2RlcHRoLCBwYXJhbV07CisgICAgICAgIH0KKyAgICAg
IH0KKyAgICB9CisgIH07CisKKyAgZnVuY3Rpb24gcHJlY29tcGlsZShpbnB1dCwgb3B0aW9ucywg
ZW52KSB7CisgICAgaWYgKGlucHV0ID09IG51bGwgfHwgdHlwZW9mIGlucHV0ICE9PSAnc3RyaW5n
JyAmJiBpbnB1dC50eXBlICE9PSAnUHJvZ3JhbScpIHsKKyAgICAgIHRocm93IG5ldyBfRXhjZXB0
aW9uWydkZWZhdWx0J10oJ1lvdSBtdXN0IHBhc3MgYSBzdHJpbmcgb3IgSGFuZGxlYmFycyBBU1Qg
dG8gSGFuZGxlYmFycy5wcmVjb21waWxlLiBZb3UgcGFzc2VkICcgKyBpbnB1dCk7CisgICAgfQor
CisgICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307CisgICAgaWYgKCEoJ2RhdGEnIGluIG9wdGlv
bnMpKSB7CisgICAgICBvcHRpb25zLmRhdGEgPSB0cnVlOworICAgIH0KKyAgICBpZiAob3B0aW9u
cy5jb21wYXQpIHsKKyAgICAgIG9wdGlvbnMudXNlRGVwdGhzID0gdHJ1ZTsKKyAgICB9CisKKyAg
ICB2YXIgYXN0ID0gZW52LnBhcnNlKGlucHV0LCBvcHRpb25zKSwKKyAgICAgICAgZW52aXJvbm1l
bnQgPSBuZXcgZW52LkNvbXBpbGVyKCkuY29tcGlsZShhc3QsIG9wdGlvbnMpOworICAgIHJldHVy
biBuZXcgZW52LkphdmFTY3JpcHRDb21waWxlcigpLmNvbXBpbGUoZW52aXJvbm1lbnQsIG9wdGlv
bnMpOworICB9CisKKyAgZnVuY3Rpb24gY29tcGlsZShpbnB1dCwgb3B0aW9ucywgZW52KSB7Cisg
ICAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgb3B0aW9ucyA9IHt9OworCisgICAgaWYgKGlu
cHV0ID09IG51bGwgfHwgdHlwZW9mIGlucHV0ICE9PSAnc3RyaW5nJyAmJiBpbnB1dC50eXBlICE9
PSAnUHJvZ3JhbScpIHsKKyAgICAgIHRocm93IG5ldyBfRXhjZXB0aW9uWydkZWZhdWx0J10oJ1lv
dSBtdXN0IHBhc3MgYSBzdHJpbmcgb3IgSGFuZGxlYmFycyBBU1QgdG8gSGFuZGxlYmFycy5jb21w
aWxlLiBZb3UgcGFzc2VkICcgKyBpbnB1dCk7CisgICAgfQorCisgICAgaWYgKCEoJ2RhdGEnIGlu
IG9wdGlvbnMpKSB7CisgICAgICBvcHRpb25zLmRhdGEgPSB0cnVlOworICAgIH0KKyAgICBpZiAo
b3B0aW9ucy5jb21wYXQpIHsKKyAgICAgIG9wdGlvbnMudXNlRGVwdGhzID0gdHJ1ZTsKKyAgICB9
CisKKyAgICB2YXIgY29tcGlsZWQgPSB1bmRlZmluZWQ7CisKKyAgICBmdW5jdGlvbiBjb21waWxl
SW5wdXQoKSB7CisgICAgICB2YXIgYXN0ID0gZW52LnBhcnNlKGlucHV0LCBvcHRpb25zKSwKKyAg
ICAgICAgICBlbnZpcm9ubWVudCA9IG5ldyBlbnYuQ29tcGlsZXIoKS5jb21waWxlKGFzdCwgb3B0
aW9ucyksCisgICAgICAgICAgdGVtcGxhdGVTcGVjID0gbmV3IGVudi5KYXZhU2NyaXB0Q29tcGls
ZXIoKS5jb21waWxlKGVudmlyb25tZW50LCBvcHRpb25zLCB1bmRlZmluZWQsIHRydWUpOworICAg
ICAgcmV0dXJuIGVudi50ZW1wbGF0ZSh0ZW1wbGF0ZVNwZWMpOworICAgIH0KKworICAgIC8vIFRl
bXBsYXRlIGlzIG9ubHkgY29tcGlsZWQgb24gZmlyc3QgdXNlIGFuZCBjYWNoZWQgYWZ0ZXIgdGhh
dCBwb2ludC4KKyAgICBmdW5jdGlvbiByZXQoY29udGV4dCwgZXhlY09wdGlvbnMpIHsKKyAgICAg
IGlmICghY29tcGlsZWQpIHsKKyAgICAgICAgY29tcGlsZWQgPSBjb21waWxlSW5wdXQoKTsKKyAg
ICAgIH0KKyAgICAgIHJldHVybiBjb21waWxlZC5jYWxsKHRoaXMsIGNvbnRleHQsIGV4ZWNPcHRp
b25zKTsKKyAgICB9CisgICAgcmV0Ll9zZXR1cCA9IGZ1bmN0aW9uIChzZXR1cE9wdGlvbnMpIHsK
KyAgICAgIGlmICghY29tcGlsZWQpIHsKKyAgICAgICAgY29tcGlsZWQgPSBjb21waWxlSW5wdXQo
KTsKKyAgICAgIH0KKyAgICAgIHJldHVybiBjb21waWxlZC5fc2V0dXAoc2V0dXBPcHRpb25zKTsK
KyAgICB9OworICAgIHJldC5fY2hpbGQgPSBmdW5jdGlvbiAoaSwgZGF0YSwgYmxvY2tQYXJhbXMs
IGRlcHRocykgeworICAgICAgaWYgKCFjb21waWxlZCkgeworICAgICAgICBjb21waWxlZCA9IGNv
bXBpbGVJbnB1dCgpOworICAgICAgfQorICAgICAgcmV0dXJuIGNvbXBpbGVkLl9jaGlsZChpLCBk
YXRhLCBibG9ja1BhcmFtcywgZGVwdGhzKTsKKyAgICB9OworICAgIHJldHVybiByZXQ7CisgIH0K
KworICBmdW5jdGlvbiBhcmdFcXVhbHMoYSwgYikgeworICAgIGlmIChhID09PSBiKSB7CisgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAoX3V0aWxzLmlzQXJyYXkoYSkgJiYgX3V0
aWxzLmlzQXJyYXkoYikgJiYgYS5sZW5ndGggPT09IGIubGVuZ3RoKSB7CisgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYgKCFhcmdFcXVhbHMoYVtp
XSwgYltpXSkpIHsKKyAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgIH0K
KyAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgfQorCisgIGZ1bmN0aW9uIHRyYW5zZm9ybUxp
dGVyYWxUb1BhdGgoc2V4cHIpIHsKKyAgICBpZiAoIXNleHByLnBhdGgucGFydHMpIHsKKyAgICAg
IHZhciBsaXRlcmFsID0gc2V4cHIucGF0aDsKKyAgICAgIC8vIENhc3RpbmcgdG8gc3RyaW5nIGhl
cmUgdG8gbWFrZSBmYWxzZSBhbmQgMCBsaXRlcmFsIHZhbHVlcyBwbGF5IG5pY2VseSB3aXRoIHRo
ZSByZXN0CisgICAgICAvLyBvZiB0aGUgc3lzdGVtLgorICAgICAgc2V4cHIucGF0aCA9IHsKKyAg
ICAgICAgdHlwZTogJ1BhdGhFeHByZXNzaW9uJywKKyAgICAgICAgZGF0YTogZmFsc2UsCisgICAg
ICAgIGRlcHRoOiAwLAorICAgICAgICBwYXJ0czogW2xpdGVyYWwub3JpZ2luYWwgKyAnJ10sCisg
ICAgICAgIG9yaWdpbmFsOiBsaXRlcmFsLm9yaWdpbmFsICsgJycsCisgICAgICAgIGxvYzogbGl0
ZXJhbC5sb2MKKyAgICAgIH07CisgICAgfQorICB9Cit9KTsKKy8vIyBzb3VyY2VNYXBwaW5nVVJM
PWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJW
eklqcGJJaTR1THk0dUx5NHVMeTR1TDJ4cFlpOW9ZVzVrYkdWaVlYSnpMMk52YlhCcGJHVnlMMk52
YlhCcGJHVnlMbXB6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3T3pzN096czdP
enM3T3pzN096czdPMEZCVFVFc1RVRkJUU3hMUVVGTExFZEJRVWNzUlVGQlJTeERRVUZETEV0QlFV
c3NRMEZCUXpzN1FVRkZhRUlzVjBGQlV5eFJRVUZSTEVkQlFVY3NSVUZCUlRzN096czdPenRCUVU4
M1FpeFZRVUZSTEVOQlFVTXNVMEZCVXl4SFFVRkhPMEZCUTI1Q0xGbEJRVkVzUlVGQlJTeFJRVUZS
T3p0QlFVVnNRaXhWUVVGTkxFVkJRVVVzWjBKQlFWTXNTMEZCU3l4RlFVRkZPMEZCUTNSQ0xGVkJR
VWtzUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1RVRkJUU3hEUVVGRE8w
RkJRemxDTEZWQlFVa3NTMEZCU3l4RFFVRkRMRTlCUVU4c1EwRkJReXhOUVVGTkxFdEJRVXNzUjBG
QlJ5eEZRVUZGTzBGQlEyaERMR1ZCUVU4c1MwRkJTeXhEUVVGRE8wOUJRMlE3TzBGQlJVUXNWMEZC
U3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVkQlFVY3NS
VUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRCUVVNMVFpeFpRVUZKTEUxQlFVMHNSMEZCUnl4SlFV
RkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU40UWl4WFFVRlhMRWRCUVVj
c1MwRkJTeXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTnVReXha
UVVGSkxFMUJRVTBzUTBGQlF5eE5RVUZOTEV0QlFVc3NWMEZCVnl4RFFVRkRMRTFCUVUwc1NVRkJT
U3hEUVVGRExGTkJRVk1zUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RlFVRkZMRmRCUVZjc1Ew
RkJReXhKUVVGSkxFTkJRVU1zUlVGQlJUdEJRVU55Uml4cFFrRkJUeXhMUVVGTExFTkJRVU03VTBG
RFpEdFBRVU5HT3pzN08wRkJTVVFzVTBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5C
UVVNc1RVRkJUU3hEUVVGRE8wRkJRek5DTEZkQlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJR
eXhGUVVGRkxFTkJRVU1zUjBGQlJ5eEhRVUZITEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVN1FV
RkROVUlzV1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJReXhEUVVG
RExFTkJRVU1zVFVGQlRTeERRVUZETEV0QlFVc3NRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJReXhE
UVVGRExFTkJRVU1zUlVGQlJUdEJRVU12UXl4cFFrRkJUeXhMUVVGTExFTkJRVU03VTBGRFpEdFBR
VU5HT3p0QlFVVkVMR0ZCUVU4c1NVRkJTU3hEUVVGRE8wdEJRMkk3TzBGQlJVUXNVVUZCU1N4RlFV
RkZMRU5CUVVNN08wRkJSVkFzVjBGQlR5eEZRVUZGTEdsQ1FVRlRMRTlCUVU4c1JVRkJSU3hQUVVG
UExFVkJRVVU3UVVGRGJFTXNWVUZCU1N4RFFVRkRMRlZCUVZVc1IwRkJSeXhGUVVGRkxFTkJRVU03
UVVGRGNrSXNWVUZCU1N4RFFVRkRMRTlCUVU4c1IwRkJSeXhGUVVGRkxFTkJRVU03UVVGRGJFSXNW
VUZCU1N4RFFVRkRMRkZCUVZFc1IwRkJSeXhGUVVGRkxFTkJRVU03UVVGRGJrSXNWVUZCU1N4RFFV
RkRMRTlCUVU4c1IwRkJSeXhQUVVGUExFTkJRVU03UVVGRGRrSXNWVUZCU1N4RFFVRkRMRmxCUVZr
c1IwRkJSeXhQUVVGUExFTkJRVU1zV1VGQldTeERRVUZETzBGQlEzcERMRlZCUVVrc1EwRkJReXhS
UVVGUkxFZEJRVWNzVDBGQlR5eERRVUZETEZGQlFWRXNRMEZCUXpzN1FVRkZha01zWVVGQlR5eERR
VUZETEZkQlFWY3NSMEZCUnl4UFFVRlBMRU5CUVVNc1YwRkJWeXhKUVVGSkxFVkJRVVVzUTBGQlF6
czdPMEZCUjJoRUxGVkJRVWtzV1VGQldTeEhRVUZITEU5QlFVOHNRMEZCUXl4WlFVRlpMRU5CUVVN
N1FVRkRlRU1zWVVGQlR5eERRVUZETEZsQlFWa3NSMEZCUnp0QlFVTnlRaXgxUWtGQlpTeEZRVUZG
TEVsQlFVazdRVUZEY2tJc05FSkJRVzlDTEVWQlFVVXNTVUZCU1R0QlFVTXhRaXhqUVVGTkxFVkJR
VVVzU1VGQlNUdEJRVU5hTEZsQlFVa3NSVUZCUlN4SlFVRkpPMEZCUTFZc1owSkJRVkVzUlVGQlJT
eEpRVUZKTzBGQlEyUXNZMEZCVFN4RlFVRkZMRWxCUVVrN1FVRkRXaXhoUVVGTExFVkJRVVVzU1VG
QlNUdEJRVU5ZTEdkQ1FVRlJMRVZCUVVVc1NVRkJTVHRQUVVObUxFTkJRVU03UVVGRFJpeFZRVUZK
TEZsQlFWa3NSVUZCUlR0QlFVTm9RaXhoUVVGTExFbEJRVWtzUzBGQlNTeEpRVUZKTEZsQlFWa3NS
VUZCUlRzN1FVRkZOMElzWTBGQlNTeExRVUZKTEVsQlFVa3NXVUZCV1N4RlFVRkZPMEZCUTNoQ0xH
MUNRVUZQTEVOQlFVTXNXVUZCV1N4RFFVRkRMRXRCUVVrc1EwRkJReXhIUVVGSExGbEJRVmtzUTBG
QlF5eExRVUZKTEVOQlFVTXNRMEZCUXp0WFFVTnFSRHRUUVVOR08wOUJRMFk3TzBGQlJVUXNZVUZC
VHl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzB0QlF6ZENP
enRCUVVWRUxHdENRVUZqTEVWQlFVVXNkMEpCUVZNc1QwRkJUeXhGUVVGRk8wRkJRMmhETEZWQlFV
a3NZVUZCWVN4SFFVRkhMRWxCUVVrc1NVRkJTU3hEUVVGRExGRkJRVkVzUlVGQlJUczdRVUZEYmtN
c1dVRkJUU3hIUVVGSExHRkJRV0VzUTBGQlF5eFBRVUZQTEVOQlFVTXNUMEZCVHl4RlFVRkZMRWxC
UVVrc1EwRkJReXhQUVVGUExFTkJRVU03VlVGRGNrUXNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJR
eXhKUVVGSkxFVkJRVVVzUTBGQlF6czdRVUZGZGtJc1ZVRkJTU3hEUVVGRExGVkJRVlVzUjBGQlJ5
eEpRVUZKTEVOQlFVTXNWVUZCVlN4SlFVRkpMRTFCUVUwc1EwRkJReXhWUVVGVkxFTkJRVU03TzBG
QlJYWkVMRlZCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NUVUZC
VFN4RFFVRkRPMEZCUXpkQ0xGVkJRVWtzUTBGQlF5eFRRVUZUTEVkQlFVY3NTVUZCU1N4RFFVRkRM
Rk5CUVZNc1NVRkJTU3hOUVVGTkxFTkJRVU1zVTBGQlV5eERRVUZET3p0QlFVVndSQ3hoUVVGUExF
bEJRVWtzUTBGQlF6dExRVU5pT3p0QlFVVkVMRlZCUVUwc1JVRkJSU3huUWtGQlV5eEpRVUZKTEVW
QlFVVTdPMEZCUlhKQ0xGVkJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxC
UVVrc1EwRkJReXhGUVVGRk8wRkJRM0JDTEdOQlFVMHNNRUpCUVdNc1owSkJRV2RDTEVkQlFVY3NT
VUZCU1N4RFFVRkRMRWxCUVVrc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6dFBRVU42UkRzN1FV
RkZSQ3hWUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVN
c1EwRkJRenRCUVVNNVFpeFZRVUZKTEVkQlFVY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1NVRkJTU3hE
UVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMEZCUTJoRExGVkJR
VWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNTMEZCU3l4RlFVRkZMRU5CUVVNN1FVRkRlRUlzWVVGQlR5
eEhRVUZITEVOQlFVTTdTMEZEV2pzN1FVRkZSQ3hYUVVGUExFVkJRVVVzYVVKQlFWTXNUMEZCVHl4
RlFVRkZPMEZCUTNwQ0xGVkJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNWMEZCVnl4RFFVRkRMRTlC
UVU4c1EwRkJReXhQUVVGUExFTkJRVU1zVjBGQlZ5eERRVUZETEVOQlFVTTdPMEZCUlhSRUxGVkJR
VWtzU1VGQlNTeEhRVUZITEU5QlFVOHNRMEZCUXl4SlFVRkpPMVZCUTI1Q0xGVkJRVlVzUjBGQlJ5
eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRPMEZCUXpkQ0xGZEJRVXNzU1VGQlNTeERRVUZETEVk
QlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhWUVVGVkxFVkJRVVVzUTBGQlF5eEZRVUZG
TEVWQlFVVTdRVUZEYmtNc1dVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNR
MEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRQUVVOMFFqczdRVUZGUkN4VlFVRkpMRU5CUVVNc1Qw
RkJUeXhEUVVGRExGZEJRVmNzUTBGQlF5eExRVUZMTEVWQlFVVXNRMEZCUXpzN1FVRkZha01zVlVG
QlNTeERRVUZETEZGQlFWRXNSMEZCUnl4VlFVRlZMRXRCUVVzc1EwRkJReXhEUVVGRE8wRkJRMnBE
TEZWQlFVa3NRMEZCUXl4WFFVRlhMRWRCUVVjc1QwRkJUeXhEUVVGRExGZEJRVmNzUjBGQlJ5eFBR
VUZQTEVOQlFVTXNWMEZCVnl4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU03TzBGQlJY
aEZMR0ZCUVU4c1NVRkJTU3hEUVVGRE8wdEJRMkk3TzBGQlJVUXNhMEpCUVdNc1JVRkJSU3gzUWtG
QlV5eExRVUZMTEVWQlFVVTdRVUZET1VJc05FSkJRWE5DTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5C
UVVNN08wRkJSVGxDTEZWQlFVa3NUMEZCVHl4SFFVRkhMRXRCUVVzc1EwRkJReXhQUVVGUE8xVkJR
M1pDTEU5QlFVOHNSMEZCUnl4TFFVRkxMRU5CUVVNc1QwRkJUeXhEUVVGRE96dEJRVVUxUWl4aFFV
RlBMRWRCUVVjc1QwRkJUeXhKUVVGSkxFbEJRVWtzUTBGQlF5eGpRVUZqTEVOQlFVTXNUMEZCVHl4
RFFVRkRMRU5CUVVNN1FVRkRiRVFzWVVGQlR5eEhRVUZITEU5QlFVOHNTVUZCU1N4SlFVRkpMRU5C
UVVNc1kwRkJZeXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZET3p0QlFVVnNSQ3hWUVVGSkxFbEJR
VWtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNZVUZCWVN4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE96
dEJRVVZ5UXl4VlFVRkpMRWxCUVVrc1MwRkJTeXhSUVVGUkxFVkJRVVU3UVVGRGNrSXNXVUZCU1N4
RFFVRkRMRmRCUVZjc1EwRkJReXhMUVVGTExFVkJRVVVzVDBGQlR5eEZRVUZGTEU5QlFVOHNRMEZC
UXl4RFFVRkRPMDlCUXpORExFMUJRVTBzU1VGQlNTeEpRVUZKTEV0QlFVc3NVVUZCVVN4RlFVRkZP
MEZCUXpWQ0xGbEJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN096
czdRVUZKZUVJc1dVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eGhRVUZoTEVWQlFVVXNUMEZCVHl4
RFFVRkRMRU5CUVVNN1FVRkRjRU1zV1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4aFFVRmhMRVZC
UVVVc1QwRkJUeXhEUVVGRExFTkJRVU03UVVGRGNFTXNXVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJR
eXhYUVVGWExFTkJRVU1zUTBGQlF6dEJRVU42UWl4WlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExG
bEJRVmtzUlVGQlJTeExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVG
RE8wOUJRMmhFTEUxQlFVMDdRVUZEVEN4WlFVRkpMRU5CUVVNc1kwRkJZeXhEUVVGRExFdEJRVXNz
UlVGQlJTeFBRVUZQTEVWQlFVVXNUMEZCVHl4RFFVRkRMRU5CUVVNN096czdRVUZKTjBNc1dVRkJT
U3hEUVVGRExFMUJRVTBzUTBGQlF5eGhRVUZoTEVWQlFVVXNUMEZCVHl4RFFVRkRMRU5CUVVNN1FV
RkRjRU1zV1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4aFFVRmhMRVZCUVVVc1QwRkJUeXhEUVVG
RExFTkJRVU03UVVGRGNFTXNXVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhYUVVGWExFTkJRVU1z
UTBGQlF6dEJRVU42UWl4WlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExIRkNRVUZ4UWl4RFFVRkRM
RU5CUVVNN1QwRkRjRU03TzBGQlJVUXNWVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhSUVVGUkxF
TkJRVU1zUTBGQlF6dExRVU4yUWpzN1FVRkZSQ3hyUWtGQll5eEZRVUZCTEhkQ1FVRkRMRk5CUVZN
c1JVRkJSVHRCUVVONFFpeFZRVUZKTEU5QlFVOHNSMEZCUnl4VFFVRlRMRU5CUVVNc1QwRkJUeXhK
UVVGSkxFbEJRVWtzUTBGQlF5eGpRVUZqTEVOQlFVTXNVMEZCVXl4RFFVRkRMRTlCUVU4c1EwRkJR
eXhEUVVGRE8wRkJRekZGTEZWQlFVa3NUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXgxUWtGQmRV
SXNRMEZCUXl4VFFVRlRMRVZCUVVVc1QwRkJUeXhGUVVGRkxGTkJRVk1zUTBGQlF6dFZRVU53UlN4
SlFVRkpMRWRCUVVjc1UwRkJVeXhEUVVGRExFbEJRVWtzUTBGQlF6czdRVUZGTVVJc1ZVRkJTU3hE
UVVGRExHRkJRV0VzUjBGQlJ5eEpRVUZKTEVOQlFVTTdRVUZETVVJc1ZVRkJTU3hEUVVGRExFMUJR
VTBzUTBGQlF5eHRRa0ZCYlVJc1JVRkJSU3hOUVVGTkxFTkJRVU1zVFVGQlRTeEZRVUZGTEVsQlFV
a3NRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJRenRMUVVOb1JUczdRVUZGUkN4dlFrRkJaMElzUlVG
QlJTd3dRa0ZCVXl4UFFVRlBMRVZCUVVVN1FVRkRiRU1zVlVGQlNTeERRVUZETEZWQlFWVXNSMEZC
Unl4SlFVRkpMRU5CUVVNN08wRkJSWFpDTEZWQlFVa3NUMEZCVHl4SFFVRkhMRTlCUVU4c1EwRkJR
eXhQUVVGUExFTkJRVU03UVVGRE9VSXNWVUZCU1N4UFFVRlBMRVZCUVVVN1FVRkRXQ3hsUVVGUExF
ZEJRVWNzU1VGQlNTeERRVUZETEdOQlFXTXNRMEZCUXl4UFFVRlBMRU5CUVVNc1QwRkJUeXhEUVVG
RExFTkJRVU03VDBGRGFFUTdPMEZCUlVRc1ZVRkJTU3hOUVVGTkxFZEJRVWNzVDBGQlR5eERRVUZE
TEUxQlFVMHNRMEZCUXp0QlFVTTFRaXhWUVVGSkxFMUJRVTBzUTBGQlF5eE5RVUZOTEVkQlFVY3NR
MEZCUXl4RlFVRkZPMEZCUTNKQ0xHTkJRVTBzTUVKQlFXTXNNa05CUVRKRExFZEJRVWNzVFVGQlRT
eERRVUZETEUxQlFVMHNSVUZCUlN4UFFVRlBMRU5CUVVNc1EwRkJRenRQUVVNelJpeE5RVUZOTEVs
QlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1RVRkJUU3hGUVVGRk8wRkJRM3BDTEZsQlFVa3NTVUZC
U1N4RFFVRkRMRTlCUVU4c1EwRkJReXh6UWtGQmMwSXNSVUZCUlR0QlFVTjJReXhqUVVGSkxFTkJR
VU1zVFVGQlRTeERRVUZETEdGQlFXRXNSVUZCUlN4WFFVRlhMRU5CUVVNc1EwRkJRenRUUVVONlF5
eE5RVUZOTzBGQlEwd3NaMEpCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlF5eEpRVUZKTEVW
QlFVVXNaMEpCUVdkQ0xFVkJRVVVzUzBGQlN5eEZRVUZGTEVWQlFVVXNSVUZCUlN4TFFVRkxMRVZC
UVVVc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF6dFRRVU0xUkR0UFFVTkdPenRCUVVWRUxGVkJR
VWtzVjBGQlZ5eEhRVUZITEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1VVRkJVVHRWUVVOdVF5
eFRRVUZUTEVkQlFVY3NUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFdEJRVXNzWlVG
QlpTeERRVUZETzBGQlEzUkVMRlZCUVVrc1UwRkJVeXhGUVVGRk8wRkJRMklzV1VGQlNTeERRVUZE
TEUxQlFVMHNRMEZCUXl4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03VDBGRE0wSTdP
MEZCUlVRc1ZVRkJTU3hEUVVGRExIVkNRVUYxUWl4RFFVRkRMRTlCUVU4c1JVRkJSU3hQUVVGUExF
VkJRVVVzVTBGQlV5eEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPenRCUVVWb1JTeFZRVUZKTEUx
QlFVMHNSMEZCUnl4UFFVRlBMRU5CUVVNc1RVRkJUU3hKUVVGSkxFVkJRVVVzUTBGQlF6dEJRVU5z
UXl4VlFVRkpMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zWVVGQllTeEpRVUZKTEUxQlFVMHNS
VUZCUlR0QlFVTjRReXhaUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEdWQlFXVXNSVUZCUlN4TlFV
Rk5MRU5CUVVNc1EwRkJRenRCUVVOeVF5eGpRVUZOTEVkQlFVY3NSVUZCUlN4RFFVRkRPMDlCUTJJ
N08wRkJSVVFzVlVGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4bFFVRmxMRVZCUVVVc1UwRkJVeXhG
UVVGRkxGZEJRVmNzUlVGQlJTeE5RVUZOTEVOQlFVTXNRMEZCUXp0QlFVTTNSQ3hWUVVGSkxFTkJR
VU1zVFVGQlRTeERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRPMHRCUTNaQ08wRkJRMFFzZVVKQlFY
RkNMRVZCUVVVc0swSkJRVk1zV1VGQldTeEZRVUZGTzBGQlF6VkRMRlZCUVVrc1EwRkJReXhuUWtG
QlowSXNRMEZCUXl4WlFVRlpMRU5CUVVNc1EwRkJRenRMUVVOeVF6czdRVUZGUkN4eFFrRkJhVUlz
UlVGQlJTd3lRa0ZCVXl4UlFVRlJMRVZCUVVVN1FVRkRjRU1zVlVGQlNTeERRVUZETEdGQlFXRXNR
MEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJRenM3UVVGRk4wSXNWVUZCU1N4UlFVRlJMRU5CUVVNc1Qw
RkJUeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4UlFVRlJMRVZCUVVV
N1FVRkRPVU1zV1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4bFFVRmxMRU5CUVVNc1EwRkJRenRQ
UVVNNVFpeE5RVUZOTzBGQlEwd3NXVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhSUVVGUkxFTkJR
VU1zUTBGQlF6dFBRVU4yUWp0TFFVTkdPMEZCUTBRc1lVRkJVeXhGUVVGQkxHMUNRVUZETEZOQlFW
TXNSVUZCUlR0QlFVTnVRaXhWUVVGSkxFTkJRVU1zWTBGQll5eERRVUZETEZOQlFWTXNRMEZCUXl4
RFFVRkRPMHRCUTJoRE96dEJRVWRFTEc5Q1FVRm5RaXhGUVVGRkxEQkNRVUZUTEU5QlFVOHNSVUZC
UlR0QlFVTnNReXhWUVVGSkxFOUJRVThzUTBGQlF5eExRVUZMTEVWQlFVVTdRVUZEYWtJc1dVRkJT
U3hEUVVGRExFMUJRVTBzUTBGQlF5eGxRVUZsTEVWQlFVVXNUMEZCVHl4RFFVRkRMRXRCUVVzc1Ew
RkJReXhEUVVGRE8wOUJRemRETzB0QlEwWTdPMEZCUlVRc2IwSkJRV2RDTEVWQlFVVXNORUpCUVZj
c1JVRkJSVHM3UVVGRkwwSXNhVUpCUVdFc1JVRkJSU3gxUWtGQlV5eExRVUZMTEVWQlFVVTdRVUZE
TjBJc05FSkJRWE5DTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1FVRkRPVUlzVlVGQlNTeEpR
VUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRMR0ZCUVdFc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6
czdRVUZGY2tNc1ZVRkJTU3hKUVVGSkxFdEJRVXNzVVVGQlVTeEZRVUZGTzBGQlEzSkNMRmxCUVVr
c1EwRkJReXhYUVVGWExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdUMEZEZWtJc1RVRkJUU3hK
UVVGSkxFbEJRVWtzUzBGQlN5eFJRVUZSTEVWQlFVVTdRVUZETlVJc1dVRkJTU3hEUVVGRExGZEJR
VmNzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXp0UFFVTjZRaXhOUVVGTk8wRkJRMHdzV1VGQlNT
eERRVUZETEdOQlFXTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRQUVVNMVFqdExRVU5HTzBG
QlEwUXNhMEpCUVdNc1JVRkJSU3gzUWtGQlV5eExRVUZMTEVWQlFVVXNUMEZCVHl4RlFVRkZMRTlC
UVU4c1JVRkJSVHRCUVVOb1JDeFZRVUZKTEVsQlFVa3NSMEZCUnl4TFFVRkxMRU5CUVVNc1NVRkJT
VHRWUVVOcVFpeEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExF
TkJRVU03VlVGRGNFSXNUMEZCVHl4SFFVRkhMRTlCUVU4c1NVRkJTU3hKUVVGSkxFbEJRVWtzVDBG
QlR5eEpRVUZKTEVsQlFVa3NRMEZCUXpzN1FVRkZha1FzVlVGQlNTeERRVUZETEUxQlFVMHNRMEZC
UXl4WlFVRlpMRVZCUVVVc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZET3p0QlFVVjBR
eXhWUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEdGQlFXRXNSVUZCUlN4UFFVRlBMRU5CUVVNc1Ew
RkJRenRCUVVOd1F5eFZRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMR0ZCUVdFc1JVRkJSU3hQUVVG
UExFTkJRVU1zUTBGQlF6czdRVUZGY0VNc1ZVRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eEpRVUZK
TEVOQlFVTTdRVUZEYmtJc1ZVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNR
MEZCUXpzN1FVRkZiRUlzVlVGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4cFFrRkJhVUlzUlVGQlJT
eEpRVUZKTEVWQlFVVXNUMEZCVHl4RFFVRkRMRU5CUVVNN1MwRkRMME03TzBGQlJVUXNaVUZCVnl4
RlFVRkZMSEZDUVVGVExFdEJRVXNzUlVGQlJUdEJRVU16UWl4VlFVRkpMRWxCUVVrc1IwRkJSeXhM
UVVGTExFTkJRVU1zU1VGQlNTeERRVUZETzBGQlEzUkNMRlZCUVVrc1EwRkJReXhOUVVGTkxFZEJR
VWNzU1VGQlNTeERRVUZETzBGQlEyNUNMRlZCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNT
eERRVUZETEVOQlFVTTdRVUZEYkVJc1ZVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eDFRa0ZCZFVJ
c1EwRkJReXhEUVVGRE8wdEJRM1JET3p0QlFVVkVMR1ZCUVZjc1JVRkJSU3h4UWtGQlV5eExRVUZM
TEVWQlFVVXNUMEZCVHl4RlFVRkZMRTlCUVU4c1JVRkJSVHRCUVVNM1F5eFZRVUZKTEUxQlFVMHNS
MEZCUnl4SlFVRkpMRU5CUVVNc2RVSkJRWFZDTEVOQlFVTXNTMEZCU3l4RlFVRkZMRTlCUVU4c1JV
RkJSU3hQUVVGUExFTkJRVU03VlVGRE9VUXNTVUZCU1N4SFFVRkhMRXRCUVVzc1EwRkJReXhKUVVG
Sk8xVkJRMnBDTEVsQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1z
UTBGQlF5eERRVUZET3p0QlFVVjZRaXhWUVVGSkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNX
VUZCV1N4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRk8wRkJRMjVETEZsQlFVa3NRMEZCUXl4TlFV
Rk5MRU5CUVVNc2JVSkJRVzFDTEVWQlFVVXNUVUZCVFN4RFFVRkRMRTFCUVUwc1JVRkJSU3hKUVVG
SkxFTkJRVU1zUTBGQlF6dFBRVU4yUkN4TlFVRk5MRWxCUVVrc1NVRkJTU3hEUVVGRExFOUJRVThz
UTBGQlF5eG5Ra0ZCWjBJc1JVRkJSVHRCUVVONFF5eGpRVUZOTERCQ1FVRmpMRGhFUVVFNFJDeEhR
VUZITEVsQlFVa3NSVUZCUlN4TFFVRkxMRU5CUVVNc1EwRkJRenRQUVVOdVJ5eE5RVUZOTzBGQlEw
d3NXVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhKUVVGSkxFTkJRVU03UVVGRGJrSXNXVUZCU1N4
RFFVRkRMRXRCUVVzc1IwRkJSeXhKUVVGSkxFTkJRVU03TzBGQlJXeENMRmxCUVVrc1EwRkJReXhO
UVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdRVUZEYkVJc1dVRkJTU3hEUVVGRExFMUJR
VTBzUTBGQlF5eGpRVUZqTEVWQlFVVXNUVUZCVFN4RFFVRkRMRTFCUVUwc1JVRkJSU3hKUVVGSkxF
TkJRVU1zVVVGQlVTeEZRVUZGTEdkQ1FVRkpMRTlCUVU4c1EwRkJReXhSUVVGUkxFTkJRVU1zU1VG
QlNTeERRVUZETEVOQlFVTXNRMEZCUXp0UFFVTjJSanRMUVVOR096dEJRVVZFTEd0Q1FVRmpMRVZC
UVVVc2QwSkJRVk1zU1VGQlNTeEZRVUZGTzBGQlF6ZENMRlZCUVVrc1EwRkJReXhSUVVGUkxFTkJR
VU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMEZCUXpGQ0xGVkJRVWtzUTBGQlF5
eE5RVUZOTEVOQlFVTXNXVUZCV1N4RlFVRkZMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBG
QlF6czdRVUZGZEVNc1ZVRkJTU3hKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZC
UXl4RFFVRkRMRU5CUVVNN1ZVRkRjRUlzVFVGQlRTeEhRVUZITEdkQ1FVRkpMRTlCUVU4c1EwRkJR
eXhSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETzFWQlEyNURMRmxCUVZrc1IwRkJSeXhEUVVGRExF
bEJRVWtzUTBGQlF5eExRVUZMTEVsQlFVa3NRMEZCUXl4TlFVRk5MRWxCUVVrc1NVRkJTU3hEUVVG
RExHVkJRV1VzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXpzN1FVRkZlRVVzVlVGQlNTeFpRVUZa
TEVWQlFVVTdRVUZEYUVJc1dVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eHJRa0ZCYTBJc1JVRkJS
U3haUVVGWkxFVkJRVVVzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMDlCUXpORUxF
MUJRVTBzU1VGQlNTeERRVUZETEVsQlFVa3NSVUZCUlRzN1FVRkZhRUlzV1VGQlNTeERRVUZETEUx
QlFVMHNRMEZCUXl4aFFVRmhMRU5CUVVNc1EwRkJRenRQUVVNMVFpeE5RVUZOTEVsQlFVa3NTVUZC
U1N4RFFVRkRMRWxCUVVrc1JVRkJSVHRCUVVOd1FpeFpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRM
RWxCUVVrc1IwRkJSeXhKUVVGSkxFTkJRVU03UVVGRGVrSXNXVUZCU1N4RFFVRkRMRTFCUVUwc1Ew
RkJReXhaUVVGWkxFVkJRVVVzU1VGQlNTeERRVUZETEV0QlFVc3NSVUZCUlN4SlFVRkpMRU5CUVVN
c1MwRkJTeXhGUVVGRkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0UFFVTm9SU3hO
UVVGTk8wRkJRMHdzV1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4cFFrRkJhVUlzUlVGQlJTeEpR
VUZKTEVOQlFVTXNTMEZCU3l4RlFVRkZMRWxCUVVrc1EwRkJReXhMUVVGTExFVkJRVVVzU1VGQlNT
eERRVUZETEUxQlFVMHNSVUZCUlN4TlFVRk5MRU5CUVVNc1EwRkJRenRQUVVNM1JUdExRVU5HT3p0
QlFVVkVMR2xDUVVGaExFVkJRVVVzZFVKQlFWTXNUVUZCVFN4RlFVRkZPMEZCUXpsQ0xGVkJRVWtz
UTBGQlF5eE5RVUZOTEVOQlFVTXNXVUZCV1N4RlFVRkZMRTFCUVUwc1EwRkJReXhMUVVGTExFTkJR
VU1zUTBGQlF6dExRVU42UXpzN1FVRkZSQ3hwUWtGQllTeEZRVUZGTEhWQ1FVRlRMRTFCUVUwc1JV
RkJSVHRCUVVNNVFpeFZRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMR0ZCUVdFc1JVRkJSU3hOUVVG
TkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdTMEZETVVNN08wRkJSVVFzYTBKQlFXTXNSVUZC
UlN4M1FrRkJVeXhKUVVGSkxFVkJRVVU3UVVGRE4wSXNWVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJR
eXhoUVVGaExFVkJRVVVzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMHRCUTNoRE96
dEJRVVZFTEc5Q1FVRm5RaXhGUVVGRkxEUkNRVUZYTzBGQlF6TkNMRlZCUVVrc1EwRkJReXhOUVVG
TkxFTkJRVU1zWVVGQllTeEZRVUZGTEZkQlFWY3NRMEZCUXl4RFFVRkRPMHRCUTNwRE96dEJRVVZF
TEdWQlFWY3NSVUZCUlN4MVFrRkJWenRCUVVOMFFpeFZRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRM
R0ZCUVdFc1JVRkJSU3hOUVVGTkxFTkJRVU1zUTBGQlF6dExRVU53UXpzN1FVRkZSQ3hSUVVGSkxF
VkJRVVVzWTBGQlV5eEpRVUZKTEVWQlFVVTdRVUZEYmtJc1ZVRkJTU3hMUVVGTExFZEJRVWNzU1VG
QlNTeERRVUZETEV0QlFVczdWVUZEYkVJc1EwRkJReXhIUVVGSExFTkJRVU03VlVGRFRDeERRVUZE
TEVkQlFVY3NTMEZCU3l4RFFVRkRMRTFCUVUwc1EwRkJRenM3UVVGRmNrSXNWVUZCU1N4RFFVRkRM
RTFCUVUwc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF6czdRVUZGZUVJc1lVRkJUeXhEUVVGRExF
ZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RlFVRkZPMEZCUTJwQ0xGbEJRVWtzUTBG
QlF5eFRRVUZUTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNz
UTBGQlF5eERRVUZETzA5QlEyaERPMEZCUTBRc1lVRkJUeXhEUVVGRExFVkJRVVVzUlVGQlJUdEJR
VU5XTEZsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1kwRkJZeXhGUVVGRkxFdEJRVXNzUTBGQlF5
eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRQUVVNelF6dEJRVU5FTEZW
QlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU03UzBGRGVFSTdPenRC
UVVkRUxGVkJRVTBzUlVGQlJTeG5Ra0ZCVXl4SlFVRkpMRVZCUVVVN1FVRkRja0lzVlVGQlNTeERR
VUZETEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSU3hOUVVGTkxFVkJRVVVzU1VGQlNT
eEZRVUZGTEVsQlFVa3NSVUZCUlN4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExGTkJRVk1zUlVG
QlJTeERRVUZETEVOQlFVTXNSVUZCUlN4SFFVRkhMRVZCUVVVc1NVRkJTU3hEUVVGRExGVkJRVlVz
UTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhEUVVGRE8wdEJR
MnhIT3p0QlFVVkVMRmxCUVZFc1JVRkJSU3hyUWtGQlV5eExRVUZMTEVWQlFVVTdRVUZEZUVJc1ZV
RkJTU3hEUVVGRExFdEJRVXNzUlVGQlJUdEJRVU5XTEdWQlFVODdUMEZEVWpzN1FVRkZSQ3hWUVVG
SkxFTkJRVU1zVTBGQlV5eEhRVUZITEVsQlFVa3NRMEZCUXp0TFFVTjJRanM3UVVGRlJDeHBRa0ZC
WVN4RlFVRkZMSFZDUVVGVExFdEJRVXNzUlVGQlJUdEJRVU0zUWl4VlFVRkpMRkZCUVZFc1IwRkJS
eXhuUWtGQlNTeFBRVUZQTEVOQlFVTXNVVUZCVVN4RFFVRkRMRXRCUVVzc1EwRkJReXhKUVVGSkxF
TkJRVU1zUTBGQlF6czdRVUZGYUVRc1ZVRkJTU3haUVVGWkxFZEJRVWNzVVVGQlVTeEpRVUZKTEVO
QlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1pVRkJaU3hEUVVGRExFdEJRVXNzUTBGQlF5eEpRVUZK
TEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03T3pzN1FVRkpN
MFVzVlVGQlNTeFJRVUZSTEVkQlFVY3NRMEZCUXl4WlFVRlpMRWxCUVVrc1owSkJRVWtzVDBGQlR5
eERRVUZETEdkQ1FVRm5RaXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZET3pzN096dEJRVXR3UlN4
VlFVRkpMRlZCUVZVc1IwRkJSeXhEUVVGRExGbEJRVmtzUzBGQlN5eFJRVUZSTEVsQlFVa3NVVUZC
VVN4RFFVRkJMRUZCUVVNc1EwRkJRenM3T3p0QlFVbDZSQ3hWUVVGSkxGVkJRVlVzU1VGQlNTeERR
VUZETEZGQlFWRXNSVUZCUlR0QlFVTXpRaXhaUVVGSkxFMUJRVWtzUjBGQlJ5eExRVUZMTEVOQlFV
TXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRE1VSXNUMEZCVHl4
SFFVRkhMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU03TzBGQlJUTkNMRmxCUVVrc1QwRkJUeXhE
UVVGRExGbEJRVmtzUTBGQlF5eE5RVUZKTEVOQlFVTXNSVUZCUlR0QlFVTTVRaXhyUWtGQlVTeEhR
VUZITEVsQlFVa3NRMEZCUXp0VFFVTnFRaXhOUVVGTkxFbEJRVWtzVDBGQlR5eERRVUZETEdkQ1FV
Rm5RaXhGUVVGRk8wRkJRMjVETEc5Q1FVRlZMRWRCUVVjc1MwRkJTeXhEUVVGRE8xTkJRM0JDTzA5
QlEwWTdPMEZCUlVRc1ZVRkJTU3hSUVVGUkxFVkJRVVU3UVVGRFdpeGxRVUZQTEZGQlFWRXNRMEZC
UXp0UFFVTnFRaXhOUVVGTkxFbEJRVWtzVlVGQlZTeEZRVUZGTzBGQlEzSkNMR1ZCUVU4c1YwRkJW
eXhEUVVGRE8wOUJRM0JDTEUxQlFVMDdRVUZEVEN4bFFVRlBMRkZCUVZFc1EwRkJRenRQUVVOcVFq
dExRVU5HT3p0QlFVVkVMR05CUVZVc1JVRkJSU3h2UWtGQlV5eE5RVUZOTEVWQlFVVTdRVUZETTBJ
c1YwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRTFC
UVUwc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRM
RVZCUVVVc1JVRkJSVHRCUVVNM1F5eFpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRTFCUVUwc1Ew
RkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzA5QlF6TkNPMHRCUTBZN08wRkJSVVFzWVVG
QlV5eEZRVUZGTEcxQ1FVRlRMRWRCUVVjc1JVRkJSVHRCUVVOMlFpeFZRVUZKTEV0QlFVc3NSMEZC
Unl4SFFVRkhMRU5CUVVNc1MwRkJTeXhKUVVGSkxFbEJRVWtzUjBGQlJ5eEhRVUZITEVOQlFVTXNT
MEZCU3l4SFFVRkhMRWRCUVVjc1EwRkJReXhSUVVGUkxFbEJRVWtzUlVGQlJTeERRVUZET3p0QlFV
VXZSQ3hWUVVGSkxFbEJRVWtzUTBGQlF5eFpRVUZaTEVWQlFVVTdRVUZEY2tJc1dVRkJTU3hMUVVG
TExFTkJRVU1zVDBGQlR5eEZRVUZGTzBGQlEycENMR1ZCUVVzc1IwRkJSeXhMUVVGTExFTkJRMUlz
VDBGQlR5eERRVUZETEdOQlFXTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkRNMElzVDBGQlR5eERR
VUZETEV0QlFVc3NSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJRenRUUVVNeFFqczdRVUZGUkN4WlFV
RkpMRWRCUVVjc1EwRkJReXhMUVVGTExFVkJRVVU3UVVGRFlpeGpRVUZKTEVOQlFVTXNVVUZCVVN4
RFFVRkRMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dFRRVU14UWp0QlFVTkVMRmxC
UVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zV1VGQldTeEZRVUZGTEVkQlFVY3NRMEZCUXl4TFFVRkxM
RWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU03UVVGRE1VTXNXVUZCU1N4RFFVRkRMRTFCUVUwc1Ew
RkJReXhwUWtGQmFVSXNSVUZCUlN4TFFVRkxMRVZCUVVVc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBG
QlF5eERRVUZET3p0QlFVVm9SQ3haUVVGSkxFZEJRVWNzUTBGQlF5eEpRVUZKTEV0QlFVc3NaVUZC
WlN4RlFVRkZPenM3UVVGSGFFTXNZMEZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhIUVVGSExFTkJR
VU1zUTBGQlF6dFRRVU5zUWp0UFFVTkdMRTFCUVUwN1FVRkRUQ3haUVVGSkxFbEJRVWtzUTBGQlF5
eFJRVUZSTEVWQlFVVTdRVUZEYWtJc1kwRkJTU3hsUVVGbExGbEJRVUVzUTBGQlF6dEJRVU53UWl4
alFVRkpMRWRCUVVjc1EwRkJReXhMUVVGTExFbEJRVWtzUTBGQlF5eG5Ra0ZCU1N4UFFVRlBMRU5C
UVVNc1VVRkJVU3hEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRM
RXRCUVVzc1JVRkJSVHRCUVVONFJDd3lRa0ZCWlN4SFFVRkhMRWxCUVVrc1EwRkJReXhsUVVGbExF
TkJRVU1zUjBGQlJ5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVG
RE8xZEJRM1pFTzBGQlEwUXNZMEZCU1N4bFFVRmxMRVZCUVVVN1FVRkRia0lzWjBKQlFVa3NaVUZC
WlN4SFFVRkhMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNR
MEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dEJRVU51UkN4blFr
RkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFJRVUZSTEVWQlFVVXNXVUZCV1N4RlFVRkZMR1ZCUVdV
c1JVRkJSU3hsUVVGbExFTkJRVU1zUTBGQlF6dFhRVU4yUlN4TlFVRk5PMEZCUTB3c2FVSkJRVXNz
UjBGQlJ5eEhRVUZITEVOQlFVTXNVVUZCVVN4SlFVRkpMRXRCUVVzc1EwRkJRenRCUVVNNVFpeG5R
a0ZCU1N4TFFVRkxMRU5CUVVNc1QwRkJUeXhGUVVGRk8wRkJRMnBDTEcxQ1FVRkxMRWRCUVVjc1Mw
RkJTeXhEUVVOU0xFOUJRVThzUTBGQlF5eGxRVUZsTEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUXpW
Q0xFOUJRVThzUTBGQlF5eFBRVUZQTEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUTNCQ0xFOUJRVThz
UTBGQlF5eE5RVUZOTEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNN1lVRkRNVUk3TzBGQlJVUXNa
MEpCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zVVVGQlVTeEZRVUZGTEVkQlFVY3NRMEZCUXl4SlFV
RkpMRVZCUVVVc1MwRkJTeXhEUVVGRExFTkJRVU03VjBGRGVFTTdVMEZEUmp0QlFVTkVMRmxCUVVr
c1EwRkJReXhOUVVGTkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdUMEZEYkVJN1MwRkRSanM3
UVVGRlJDd3lRa0ZCZFVJc1JVRkJSU3hwUTBGQlV5eExRVUZMTEVWQlFVVXNUMEZCVHl4RlFVRkZM
RTlCUVU4c1JVRkJSU3hUUVVGVExFVkJRVVU3UVVGRGNFVXNWVUZCU1N4TlFVRk5MRWRCUVVjc1Mw
RkJTeXhEUVVGRExFMUJRVTBzUTBGQlF6dEJRVU14UWl4VlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVG
RExFMUJRVTBzUTBGQlF5eERRVUZET3p0QlFVVjRRaXhWUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZE
TEdGQlFXRXNSVUZCUlN4UFFVRlBMRU5CUVVNc1EwRkJRenRCUVVOd1F5eFZRVUZKTEVOQlFVTXNU
VUZCVFN4RFFVRkRMR0ZCUVdFc1JVRkJSU3hQUVVGUExFTkJRVU1zUTBGQlF6czdRVUZGY0VNc1ZV
RkJTU3hMUVVGTExFTkJRVU1zU1VGQlNTeEZRVUZGTzBGQlEyUXNXVUZCU1N4RFFVRkRMRTFCUVUw
c1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdUMEZEZWtJc1RVRkJUVHRC
UVVOTUxGbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNWMEZCVnl4RlFVRkZMRk5CUVZNc1EwRkJR
eXhEUVVGRE8wOUJRM0pET3p0QlFVVkVMR0ZCUVU4c1RVRkJUU3hEUVVGRE8wdEJRMlk3TzBGQlJV
UXNiVUpCUVdVc1JVRkJSU3g1UWtGQlV5eEpRVUZKTEVWQlFVVTdRVUZET1VJc1YwRkJTeXhKUVVG
SkxFdEJRVXNzUjBGQlJ5eERRVUZETEVWQlFVVXNSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJReXhQ
UVVGUExFTkJRVU1zVjBGQlZ5eERRVUZETEUxQlFVMHNSVUZCUlN4TFFVRkxMRWRCUVVjc1IwRkJS
eXhGUVVGRkxFdEJRVXNzUlVGQlJTeEZRVUZGTzBGQlF5OUZMRmxCUVVrc1YwRkJWeXhIUVVGSExF
bEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNWMEZCVnl4RFFVRkRMRXRCUVVzc1EwRkJRenRaUVVN
M1F5eExRVUZMTEVkQlFVY3NWMEZCVnl4SlFVRkpMRTlCZUdOb1FpeFBRVUZQTEVOQmQyTnBRaXhY
UVVGWExFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTTdRVUZEZEVRc1dVRkJTU3hYUVVGWExFbEJR
VWtzUzBGQlN5eEpRVUZKTEVOQlFVTXNSVUZCUlR0QlFVTTNRaXhwUWtGQlR5eERRVUZETEV0QlFV
c3NSVUZCUlN4TFFVRkxMRU5CUVVNc1EwRkJRenRUUVVOMlFqdFBRVU5HTzB0QlEwWTdSMEZEUml4
RFFVRkRPenRCUVVWTExGZEJRVk1zVlVGQlZTeERRVUZETEV0QlFVc3NSVUZCUlN4UFFVRlBMRVZC
UVVVc1IwRkJSeXhGUVVGRk8wRkJRemxETEZGQlFVa3NTMEZCU3l4SlFVRkpMRWxCUVVrc1NVRkJT
eXhQUVVGUExFdEJRVXNzUzBGQlN5eFJRVUZSTEVsQlFVa3NTMEZCU3l4RFFVRkRMRWxCUVVrc1Mw
RkJTeXhUUVVGVExFRkJRVU1zUlVGQlJUdEJRVU0xUlN4WlFVRk5MREJDUVVGakxHZEdRVUZuUml4
SFFVRkhMRXRCUVVzc1EwRkJReXhEUVVGRE8wdEJReTlIT3p0QlFVVkVMRmRCUVU4c1IwRkJSeXhQ
UVVGUExFbEJRVWtzUlVGQlJTeERRVUZETzBGQlEzaENMRkZCUVVrc1JVRkJSU3hOUVVGTkxFbEJR
VWtzVDBGQlR5eERRVUZCTEVGQlFVTXNSVUZCUlR0QlFVTjRRaXhoUVVGUExFTkJRVU1zU1VGQlNT
eEhRVUZITEVsQlFVa3NRMEZCUXp0TFFVTnlRanRCUVVORUxGRkJRVWtzVDBGQlR5eERRVUZETEUx
QlFVMHNSVUZCUlR0QlFVTnNRaXhoUVVGUExFTkJRVU1zVTBGQlV5eEhRVUZITEVsQlFVa3NRMEZC
UXp0TFFVTXhRanM3UVVGRlJDeFJRVUZKTEVkQlFVY3NSMEZCUnl4SFFVRkhMRU5CUVVNc1MwRkJT
eXhEUVVGRExFdEJRVXNzUlVGQlJTeFBRVUZQTEVOQlFVTTdVVUZETDBJc1YwRkJWeXhIUVVGSExF
bEJRVWtzUjBGQlJ5eERRVUZETEZGQlFWRXNSVUZCUlN4RFFVRkRMRTlCUVU4c1EwRkJReXhIUVVG
SExFVkJRVVVzVDBGQlR5eERRVUZETEVOQlFVTTdRVUZETTBRc1YwRkJUeXhKUVVGSkxFZEJRVWNz
UTBGQlF5eHJRa0ZCYTBJc1JVRkJSU3hEUVVGRExFOUJRVThzUTBGQlF5eFhRVUZYTEVWQlFVVXNU
MEZCVHl4RFFVRkRMRU5CUVVNN1IwRkRia1U3TzBGQlJVMHNWMEZCVXl4UFFVRlBMRU5CUVVNc1Mw
RkJTeXhGUVVGRkxFOUJRVThzUlVGQlR5eEhRVUZITEVWQlFVVTdVVUZCYmtJc1QwRkJUeXhuUWtG
QlVDeFBRVUZQTEVkQlFVY3NSVUZCUlRzN1FVRkRla01zVVVGQlNTeExRVUZMTEVsQlFVa3NTVUZC
U1N4SlFVRkxMRTlCUVU4c1MwRkJTeXhMUVVGTExGRkJRVkVzU1VGQlNTeExRVUZMTEVOQlFVTXNT
VUZCU1N4TFFVRkxMRk5CUVZNc1FVRkJReXhGUVVGRk8wRkJRelZGTEZsQlFVMHNNRUpCUVdNc05r
VkJRVFpGTEVkQlFVY3NTMEZCU3l4RFFVRkRMRU5CUVVNN1MwRkROVWM3TzBGQlJVUXNVVUZCU1N4
RlFVRkZMRTFCUVUwc1NVRkJTU3hQUVVGUExFTkJRVUVzUVVGQlF5eEZRVUZGTzBGQlEzaENMR0ZC
UVU4c1EwRkJReXhKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETzB0QlEzSkNPMEZCUTBRc1VVRkJT
U3hQUVVGUExFTkJRVU1zVFVGQlRTeEZRVUZGTzBGQlEyeENMR0ZCUVU4c1EwRkJReXhUUVVGVExF
ZEJRVWNzU1VGQlNTeERRVUZETzB0QlF6RkNPenRCUVVWRUxGRkJRVWtzVVVGQlVTeFpRVUZCTEVO
QlFVTTdPMEZCUldJc1lVRkJVeXhaUVVGWkxFZEJRVWM3UVVGRGRFSXNWVUZCU1N4SFFVRkhMRWRC
UVVjc1IwRkJSeXhEUVVGRExFdEJRVXNzUTBGQlF5eExRVUZMTEVWQlFVVXNUMEZCVHl4RFFVRkRP
MVZCUXk5Q0xGZEJRVmNzUjBGQlJ5eEpRVUZKTEVkQlFVY3NRMEZCUXl4UlFVRlJMRVZCUVVVc1Ew
RkJReXhQUVVGUExFTkJRVU1zUjBGQlJ5eEZRVUZGTEU5QlFVOHNRMEZCUXp0VlFVTjBSQ3haUVVG
WkxFZEJRVWNzU1VGQlNTeEhRVUZITEVOQlFVTXNhMEpCUVd0Q0xFVkJRVVVzUTBGQlF5eFBRVUZQ
TEVOQlFVTXNWMEZCVnl4RlFVRkZMRTlCUVU4c1JVRkJSU3hUUVVGVExFVkJRVVVzU1VGQlNTeERR
VUZETEVOQlFVTTdRVUZETDBZc1lVRkJUeXhIUVVGSExFTkJRVU1zVVVGQlVTeERRVUZETEZsQlFW
a3NRMEZCUXl4RFFVRkRPMHRCUTI1RE96czdRVUZIUkN4aFFVRlRMRWRCUVVjc1EwRkJReXhQUVVG
UExFVkJRVVVzVjBGQlZ5eEZRVUZGTzBGQlEycERMRlZCUVVrc1EwRkJReXhSUVVGUkxFVkJRVVU3
UVVGRFlpeG5Ra0ZCVVN4SFFVRkhMRmxCUVZrc1JVRkJSU3hEUVVGRE8wOUJRek5DTzBGQlEwUXNZ
VUZCVHl4UlFVRlJMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUlVGQlJTeFBRVUZQTEVWQlFV
VXNWMEZCVnl4RFFVRkRMRU5CUVVNN1MwRkRiRVE3UVVGRFJDeFBRVUZITEVOQlFVTXNUVUZCVFN4
SFFVRkhMRlZCUVZNc1dVRkJXU3hGUVVGRk8wRkJRMnhETEZWQlFVa3NRMEZCUXl4UlFVRlJMRVZC
UVVVN1FVRkRZaXhuUWtGQlVTeEhRVUZITEZsQlFWa3NSVUZCUlN4RFFVRkRPMDlCUXpOQ08wRkJR
MFFzWVVGQlR5eFJRVUZSTEVOQlFVTXNUVUZCVFN4RFFVRkRMRmxCUVZrc1EwRkJReXhEUVVGRE8w
dEJRM1JETEVOQlFVTTdRVUZEUml4UFFVRkhMRU5CUVVNc1RVRkJUU3hIUVVGSExGVkJRVk1zUTBG
QlF5eEZRVUZGTEVsQlFVa3NSVUZCUlN4WFFVRlhMRVZCUVVVc1RVRkJUU3hGUVVGRk8wRkJRMnhF
TEZWQlFVa3NRMEZCUXl4UlFVRlJMRVZCUVVVN1FVRkRZaXhuUWtGQlVTeEhRVUZITEZsQlFWa3NS
VUZCUlN4RFFVRkRPMDlCUXpOQ08wRkJRMFFzWVVGQlR5eFJRVUZSTEVOQlFVTXNUVUZCVFN4RFFV
RkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFVkJRVVVzVjBGQlZ5eEZRVUZGTEUxQlFVMHNRMEZCUXl4
RFFVRkRPMHRCUTNSRUxFTkJRVU03UVVGRFJpeFhRVUZQTEVkQlFVY3NRMEZCUXp0SFFVTmFPenRC
UVVWRUxGZEJRVk1zVTBGQlV5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVN1FVRkRk
a0lzVVVGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RlFVRkZPMEZCUTFnc1lVRkJUeXhKUVVGSkxF
TkJRVU03UzBGRFlqczdRVUZGUkN4UlFVRkpMRTlCYkdoQ1JTeFBRVUZQTEVOQmEyaENSQ3hEUVVG
RExFTkJRVU1zU1VGQlNTeFBRV3hvUWxvc1QwRkJUeXhEUVd0b1FtRXNRMEZCUXl4RFFVRkRMRWxC
UVVrc1EwRkJReXhEUVVGRExFMUJRVTBzUzBGQlN5eERRVUZETEVOQlFVTXNUVUZCVFN4RlFVRkZP
MEZCUTNKRUxGZEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1Iw
RkJSeXhEUVVGRExFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTXNSVUZCUlN4RlFVRkZPMEZCUTJw
RExGbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhG
UVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZPMEZCUXpGQ0xHbENR
VUZQTEV0QlFVc3NRMEZCUXp0VFFVTmtPMDlCUTBZN1FVRkRSQ3hoUVVGUExFbEJRVWtzUTBGQlF6
dExRVU5pTzBkQlEwWTdPMEZCUlVRc1YwRkJVeXh6UWtGQmMwSXNRMEZCUXl4TFFVRkxMRVZCUVVV
N1FVRkRja01zVVVGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhG
UVVGRk8wRkJRM0pDTEZWQlFVa3NUMEZCVHl4SFFVRkhMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJR
VU03T3p0QlFVZDZRaXhYUVVGTExFTkJRVU1zU1VGQlNTeEhRVUZITzBGQlExZ3NXVUZCU1N4RlFV
RkZMR2RDUVVGblFqdEJRVU4wUWl4WlFVRkpMRVZCUVVVc1MwRkJTenRCUVVOWUxHRkJRVXNzUlVG
QlJTeERRVUZETzBGQlExSXNZVUZCU3l4RlFVRkZMRU5CUVVNc1QwRkJUeXhEUVVGRExGRkJRVkVz
UjBGQlJ5eEZRVUZGTEVOQlFVTTdRVUZET1VJc1owSkJRVkVzUlVGQlJTeFBRVUZQTEVOQlFVTXNV
VUZCVVN4SFFVRkhMRVZCUVVVN1FVRkRMMElzVjBGQlJ5eEZRVUZGTEU5QlFVOHNRMEZCUXl4SFFV
RkhPMDlCUTJwQ0xFTkJRVU03UzBGRFNEdEhRVU5HSWl3aVptbHNaU0k2SW1OdmJYQnBiR1Z5TG1w
eklpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lMeW9nWlhOc2FXNTBMV1JwYzJGaWJHVWdibVYz
TFdOaGNDQXFMMXh1WEc1cGJYQnZjblFnUlhoalpYQjBhVzl1SUdaeWIyMGdKeTR1TDJWNFkyVndk
R2x2YmljN1hHNXBiWEJ2Y25RZ2UybHpRWEp5WVhrc0lHbHVaR1Y0VDJaOUlHWnliMjBnSnk0dUwz
VjBhV3h6Snp0Y2JtbHRjRzl5ZENCQlUxUWdabkp2YlNBbkxpOWhjM1FuTzF4dVhHNWpiMjV6ZENC
emJHbGpaU0E5SUZ0ZExuTnNhV05sTzF4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1EyOXRjR2xz
WlhJb0tTQjdmVnh1WEc0dkx5QjBhR1VnWm05MWJtUklaV3h3WlhJZ2NtVm5hWE4wWlhJZ2QybHNi
Q0JrYVhOaGJXSnBaM1ZoZEdVZ2FHVnNjR1Z5SUd4dmIydDFjQ0JtY205dElHWnBibVJwYm1jZ1lW
eHVMeThnWm5WdVkzUnBiMjRnYVc0Z1lTQmpiMjUwWlhoMExpQlVhR2x6SUdseklHNWxZMlZ6YzJG
eWVTQm1iM0lnYlhWemRHRmphR1VnWTI5dGNHRjBhV0pwYkdsMGVTd2dkMmhwWTJoY2JpOHZJSEps
Y1hWcGNtVnpJSFJvWVhRZ1kyOXVkR1Y0ZENCbWRXNWpkR2x2Ym5NZ2FXNGdZbXh2WTJ0eklHRnla
U0JsZG1Gc2RXRjBaV1FnWW5rZ1lteHZZMnRJWld4d1pYSk5hWE56YVc1bkxGeHVMeThnWVc1a0lI
Um9aVzRnY0hKdlkyVmxaQ0JoY3lCcFppQjBhR1VnY21WemRXeDBhVzVuSUhaaGJIVmxJSGRoY3lC
d2NtOTJhV1JsWkNCMGJ5QmliRzlqYTBobGJIQmxjazFwYzNOcGJtY3VYRzVjYmtOdmJYQnBiR1Z5
TG5CeWIzUnZkSGx3WlNBOUlIdGNiaUFnWTI5dGNHbHNaWEk2SUVOdmJYQnBiR1Z5TEZ4dVhHNGdJ
R1Z4ZFdGc2N6b2dablZ1WTNScGIyNG9iM1JvWlhJcElIdGNiaUFnSUNCc1pYUWdiR1Z1SUQwZ2RH
aHBjeTV2Y0dOdlpHVnpMbXhsYm1kMGFEdGNiaUFnSUNCcFppQW9iM1JvWlhJdWIzQmpiMlJsY3k1
c1pXNW5kR2dnSVQwOUlHeGxiaWtnZTF4dUlDQWdJQ0FnY21WMGRYSnVJR1poYkhObE8xeHVJQ0Fn
SUgxY2JseHVJQ0FnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z2JHVnVPeUJwS3lzcElIdGNi
aUFnSUNBZ0lHeGxkQ0J2Y0dOdlpHVWdQU0IwYUdsekxtOXdZMjlrWlhOYmFWMHNYRzRnSUNBZ0lD
QWdJQ0FnYjNSb1pYSlBjR052WkdVZ1BTQnZkR2hsY2k1dmNHTnZaR1Z6VzJsZE8xeHVJQ0FnSUNB
Z2FXWWdLRzl3WTI5a1pTNXZjR052WkdVZ0lUMDlJRzkwYUdWeVQzQmpiMlJsTG05d1kyOWtaU0I4
ZkNBaFlYSm5SWEYxWVd4ektHOXdZMjlrWlM1aGNtZHpMQ0J2ZEdobGNrOXdZMjlrWlM1aGNtZHpL
U2tnZTF4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnWm1Gc2MyVTdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZW
eHVYRzRnSUNBZ0x5OGdWMlVnYTI1dmR5QjBhR0YwSUd4bGJtZDBhQ0JwY3lCMGFHVWdjMkZ0WlNC
aVpYUjNaV1Z1SUhSb1pTQjBkMjhnWVhKeVlYbHpJR0psWTJGMWMyVWdkR2hsZVNCaGNtVWdaR2x5
WldOMGJIa2dkR2xsWkZ4dUlDQWdJQzh2SUhSdklIUm9aU0J2Y0dOdlpHVWdZbVZvWVhacGIzSWdZ
V0p2ZG1VdVhHNGdJQ0FnYkdWdUlEMGdkR2hwY3k1amFHbHNaSEpsYmk1c1pXNW5kR2c3WEc0Z0lD
QWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0JzWlc0N0lHa3JLeWtnZTF4dUlDQWdJQ0FnYVdZ
Z0tDRjBhR2x6TG1Ob2FXeGtjbVZ1VzJsZExtVnhkV0ZzY3lodmRHaGxjaTVqYUdsc1pISmxibHRw
WFNrcElIdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHWmhiSE5sTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJ
SDFjYmx4dUlDQWdJSEpsZEhWeWJpQjBjblZsTzF4dUlDQjlMRnh1WEc0Z0lHZDFhV1E2SURBc1hH
NWNiaUFnWTI5dGNHbHNaVG9nWm5WdVkzUnBiMjRvY0hKdlozSmhiU3dnYjNCMGFXOXVjeWtnZTF4
dUlDQWdJSFJvYVhNdWMyOTFjbU5sVG05a1pTQTlJRnRkTzF4dUlDQWdJSFJvYVhNdWIzQmpiMlJs
Y3lBOUlGdGRPMXh1SUNBZ0lIUm9hWE11WTJocGJHUnlaVzRnUFNCYlhUdGNiaUFnSUNCMGFHbHpM
bTl3ZEdsdmJuTWdQU0J2Y0hScGIyNXpPMXh1SUNBZ0lIUm9hWE11YzNSeWFXNW5VR0Z5WVcxeklE
MGdiM0IwYVc5dWN5NXpkSEpwYm1kUVlYSmhiWE03WEc0Z0lDQWdkR2hwY3k1MGNtRmphMGxrY3lB
OUlHOXdkR2x2Ym5NdWRISmhZMnRKWkhNN1hHNWNiaUFnSUNCdmNIUnBiMjV6TG1Kc2IyTnJVR0Z5
WVcxeklEMGdiM0IwYVc5dWN5NWliRzlqYTFCaGNtRnRjeUI4ZkNCYlhUdGNibHh1SUNBZ0lDOHZJ
RlJvWlhObElHTm9ZVzVuWlhNZ2QybHNiQ0J3Y205d1lXZGhkR1VnZEc4Z2RHaGxJRzkwYUdWeUlH
TnZiWEJwYkdWeUlHTnZiWEJ2Ym1WdWRITmNiaUFnSUNCc1pYUWdhMjV2ZDI1SVpXeHdaWEp6SUQw
Z2IzQjBhVzl1Y3k1cmJtOTNia2hsYkhCbGNuTTdYRzRnSUNBZ2IzQjBhVzl1Y3k1cmJtOTNia2hs
YkhCbGNuTWdQU0I3WEc0Z0lDQWdJQ0FuYUdWc2NHVnlUV2x6YzJsdVp5YzZJSFJ5ZFdVc1hHNGdJ
Q0FnSUNBbllteHZZMnRJWld4d1pYSk5hWE56YVc1bkp6b2dkSEoxWlN4Y2JpQWdJQ0FnSUNkbFlX
Tm9Kem9nZEhKMVpTeGNiaUFnSUNBZ0lDZHBaaWM2SUhSeWRXVXNYRzRnSUNBZ0lDQW5kVzVzWlhO
ekp6b2dkSEoxWlN4Y2JpQWdJQ0FnSUNkM2FYUm9Kem9nZEhKMVpTeGNiaUFnSUNBZ0lDZHNiMmNu
T2lCMGNuVmxMRnh1SUNBZ0lDQWdKMnh2YjJ0MWNDYzZJSFJ5ZFdWY2JpQWdJQ0I5TzF4dUlDQWdJ
R2xtSUNocmJtOTNia2hsYkhCbGNuTXBJSHRjYmlBZ0lDQWdJR1p2Y2lBb2JHVjBJRzVoYldVZ2FX
NGdhMjV2ZDI1SVpXeHdaWEp6S1NCN1hHNGdJQ0FnSUNBZ0lDOHFJR2x6ZEdGdVluVnNJR2xuYm05
eVpTQmxiSE5sSUNvdlhHNGdJQ0FnSUNBZ0lHbG1JQ2h1WVcxbElHbHVJR3R1YjNkdVNHVnNjR1Z5
Y3lrZ2UxeHVJQ0FnSUNBZ0lDQWdJRzl3ZEdsdmJuTXVhMjV2ZDI1SVpXeHdaWEp6VzI1aGJXVmRJ
RDBnYTI1dmQyNUlaV3h3WlhKelcyNWhiV1ZkTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOVhH
NGdJQ0FnZlZ4dVhHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVlXTmpaWEIwS0hCeWIyZHlZVzBwTzF4
dUlDQjlMRnh1WEc0Z0lHTnZiWEJwYkdWUWNtOW5jbUZ0T2lCbWRXNWpkR2x2Ymlod2NtOW5jbUZ0
S1NCN1hHNGdJQ0FnYkdWMElHTm9hV3hrUTI5dGNHbHNaWElnUFNCdVpYY2dkR2hwY3k1amIyMXdh
V3hsY2lncExDQXZMeUJsYzJ4cGJuUXRaR2x6WVdKc1pTMXNhVzVsSUc1bGR5MWpZWEJjYmlBZ0lD
QWdJQ0FnY21WemRXeDBJRDBnWTJocGJHUkRiMjF3YVd4bGNpNWpiMjF3YVd4bEtIQnliMmR5WVcw
c0lIUm9hWE11YjNCMGFXOXVjeWtzWEc0Z0lDQWdJQ0FnSUdkMWFXUWdQU0IwYUdsekxtZDFhV1Fy
S3p0Y2JseHVJQ0FnSUhSb2FYTXVkWE5sVUdGeWRHbGhiQ0E5SUhSb2FYTXVkWE5sVUdGeWRHbGhi
Q0I4ZkNCeVpYTjFiSFF1ZFhObFVHRnlkR2xoYkR0Y2JseHVJQ0FnSUhSb2FYTXVZMmhwYkdSeVpX
NWJaM1ZwWkYwZ1BTQnlaWE4xYkhRN1hHNGdJQ0FnZEdocGN5NTFjMlZFWlhCMGFITWdQU0IwYUds
ekxuVnpaVVJsY0hSb2N5QjhmQ0J5WlhOMWJIUXVkWE5sUkdWd2RHaHpPMXh1WEc0Z0lDQWdjbVYw
ZFhKdUlHZDFhV1E3WEc0Z0lIMHNYRzVjYmlBZ1lXTmpaWEIwT2lCbWRXNWpkR2x2YmlodWIyUmxL
U0I3WEc0Z0lDQWdMeW9nYVhOMFlXNWlkV3dnYVdkdWIzSmxJRzVsZUhRNklGTmhibWwwZVNCamIy
UmxJQ292WEc0Z0lDQWdhV1lnS0NGMGFHbHpXMjV2WkdVdWRIbHdaVjBwSUh0Y2JpQWdJQ0FnSUhS
b2NtOTNJRzVsZHlCRmVHTmxjSFJwYjI0b0oxVnVhMjV2ZDI0Z2RIbHdaVG9nSnlBcklHNXZaR1V1
ZEhsd1pTd2dibTlrWlNrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnZEdocGN5NXpiM1Z5WTJWT2IyUmxM
blZ1YzJocFpuUW9ibTlrWlNrN1hHNGdJQ0FnYkdWMElISmxkQ0E5SUhSb2FYTmJibTlrWlM1MGVY
QmxYU2h1YjJSbEtUdGNiaUFnSUNCMGFHbHpMbk52ZFhKalpVNXZaR1V1YzJocFpuUW9LVHRjYmlB
Z0lDQnlaWFIxY200Z2NtVjBPMXh1SUNCOUxGeHVYRzRnSUZCeWIyZHlZVzA2SUdaMWJtTjBhVzl1
S0hCeWIyZHlZVzBwSUh0Y2JpQWdJQ0IwYUdsekxtOXdkR2x2Ym5NdVlteHZZMnRRWVhKaGJYTXVk
VzV6YUdsbWRDaHdjbTluY21GdExtSnNiMk5yVUdGeVlXMXpLVHRjYmx4dUlDQWdJR3hsZENCaWIy
UjVJRDBnY0hKdlozSmhiUzVpYjJSNUxGeHVJQ0FnSUNBZ0lDQmliMlI1VEdWdVozUm9JRDBnWW05
a2VTNXNaVzVuZEdnN1hHNGdJQ0FnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCaWIyUjVUR1Z1
WjNSb095QnBLeXNwSUh0Y2JpQWdJQ0FnSUhSb2FYTXVZV05qWlhCMEtHSnZaSGxiYVYwcE8xeHVJ
Q0FnSUgxY2JseHVJQ0FnSUhSb2FYTXViM0IwYVc5dWN5NWliRzlqYTFCaGNtRnRjeTV6YUdsbWRD
Z3BPMXh1WEc0Z0lDQWdkR2hwY3k1cGMxTnBiWEJzWlNBOUlHSnZaSGxNWlc1bmRHZ2dQVDA5SURF
N1hHNGdJQ0FnZEdocGN5NWliRzlqYTFCaGNtRnRjeUE5SUhCeWIyZHlZVzB1WW14dlkydFFZWEpo
YlhNZ1B5QndjbTluY21GdExtSnNiMk5yVUdGeVlXMXpMbXhsYm1kMGFDQTZJREE3WEc1Y2JpQWdJ
Q0J5WlhSMWNtNGdkR2hwY3p0Y2JpQWdmU3hjYmx4dUlDQkNiRzlqYTFOMFlYUmxiV1Z1ZERvZ1pu
VnVZM1JwYjI0b1lteHZZMnNwSUh0Y2JpQWdJQ0IwY21GdWMyWnZjbTFNYVhSbGNtRnNWRzlRWVhS
b0tHSnNiMk5yS1R0Y2JseHVJQ0FnSUd4bGRDQndjbTluY21GdElEMGdZbXh2WTJzdWNISnZaM0po
YlN4Y2JpQWdJQ0FnSUNBZ2FXNTJaWEp6WlNBOUlHSnNiMk5yTG1sdWRtVnljMlU3WEc1Y2JpQWdJ
Q0J3Y205bmNtRnRJRDBnY0hKdlozSmhiU0FtSmlCMGFHbHpMbU52YlhCcGJHVlFjbTluY21GdEtI
QnliMmR5WVcwcE8xeHVJQ0FnSUdsdWRtVnljMlVnUFNCcGJuWmxjbk5sSUNZbUlIUm9hWE11WTI5
dGNHbHNaVkJ5YjJkeVlXMG9hVzUyWlhKelpTazdYRzVjYmlBZ0lDQnNaWFFnZEhsd1pTQTlJSFJv
YVhNdVkyeGhjM05wWm5sVFpYaHdjaWhpYkc5amF5azdYRzVjYmlBZ0lDQnBaaUFvZEhsd1pTQTlQ
VDBnSjJobGJIQmxjaWNwSUh0Y2JpQWdJQ0FnSUhSb2FYTXVhR1ZzY0dWeVUyVjRjSElvWW14dlky
c3NJSEJ5YjJkeVlXMHNJR2x1ZG1WeWMyVXBPMXh1SUNBZ0lIMGdaV3h6WlNCcFppQW9kSGx3WlNB
OVBUMGdKM05wYlhCc1pTY3BJSHRjYmlBZ0lDQWdJSFJvYVhNdWMybHRjR3hsVTJWNGNISW9ZbXh2
WTJzcE8xeHVYRzRnSUNBZ0lDQXZMeUJ1YjNjZ2RHaGhkQ0IwYUdVZ2MybHRjR3hsSUcxMWMzUmhZ
MmhsSUdseklISmxjMjlzZG1Wa0xDQjNaU0J1WldWa0lIUnZYRzRnSUNBZ0lDQXZMeUJsZG1Gc2RX
RjBaU0JwZENCaWVTQmxlR1ZqZFhScGJtY2dZR0pzYjJOclNHVnNjR1Z5VFdsemMybHVaMkJjYmlB
Z0lDQWdJSFJvYVhNdWIzQmpiMlJsS0Nkd2RYTm9VSEp2WjNKaGJTY3NJSEJ5YjJkeVlXMHBPMXh1
SUNBZ0lDQWdkR2hwY3k1dmNHTnZaR1VvSjNCMWMyaFFjbTluY21GdEp5d2dhVzUyWlhKelpTazdY
RzRnSUNBZ0lDQjBhR2x6TG05d1kyOWtaU2duWlcxd2RIbElZWE5vSnlrN1hHNGdJQ0FnSUNCMGFH
bHpMbTl3WTI5a1pTZ25ZbXh2WTJ0V1lXeDFaU2NzSUdKc2IyTnJMbkJoZEdndWIzSnBaMmx1WVd3
cE8xeHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0IwYUdsekxtRnRZbWxuZFc5MWMxTmxlSEJ5
S0dKc2IyTnJMQ0J3Y205bmNtRnRMQ0JwYm5abGNuTmxLVHRjYmx4dUlDQWdJQ0FnTHk4Z2JtOTNJ
SFJvWVhRZ2RHaGxJSE5wYlhCc1pTQnRkWE4wWVdOb1pTQnBjeUJ5WlhOdmJIWmxaQ3dnZDJVZ2Jt
VmxaQ0IwYjF4dUlDQWdJQ0FnTHk4Z1pYWmhiSFZoZEdVZ2FYUWdZbmtnWlhobFkzVjBhVzVuSUdC
aWJHOWphMGhsYkhCbGNrMXBjM05wYm1kZ1hHNGdJQ0FnSUNCMGFHbHpMbTl3WTI5a1pTZ25jSFZ6
YUZCeWIyZHlZVzBuTENCd2NtOW5jbUZ0S1R0Y2JpQWdJQ0FnSUhSb2FYTXViM0JqYjJSbEtDZHdk
WE5vVUhKdlozSmhiU2NzSUdsdWRtVnljMlVwTzF4dUlDQWdJQ0FnZEdocGN5NXZjR052WkdVb0oy
VnRjSFI1U0dGemFDY3BPMXh1SUNBZ0lDQWdkR2hwY3k1dmNHTnZaR1VvSjJGdFltbG5kVzkxYzBK
c2IyTnJWbUZzZFdVbktUdGNiaUFnSUNCOVhHNWNiaUFnSUNCMGFHbHpMbTl3WTI5a1pTZ25ZWEJ3
Wlc1a0p5azdYRzRnSUgwc1hHNWNiaUFnUkdWamIzSmhkRzl5UW14dlkyc29aR1ZqYjNKaGRHOXlL
U0I3WEc0Z0lDQWdiR1YwSUhCeWIyZHlZVzBnUFNCa1pXTnZjbUYwYjNJdWNISnZaM0poYlNBbUpp
QjBhR2x6TG1OdmJYQnBiR1ZRY205bmNtRnRLR1JsWTI5eVlYUnZjaTV3Y205bmNtRnRLVHRjYmlB
Z0lDQnNaWFFnY0dGeVlXMXpJRDBnZEdocGN5NXpaWFIxY0VaMWJHeE5kWE4wWVdOb1pWQmhjbUZ0
Y3loa1pXTnZjbUYwYjNJc0lIQnliMmR5WVcwc0lIVnVaR1ZtYVc1bFpDa3NYRzRnSUNBZ0lDQWdJ
SEJoZEdnZ1BTQmtaV052Y21GMGIzSXVjR0YwYUR0Y2JseHVJQ0FnSUhSb2FYTXVkWE5sUkdWamIz
SmhkRzl5Y3lBOUlIUnlkV1U3WEc0Z0lDQWdkR2hwY3k1dmNHTnZaR1VvSjNKbFoybHpkR1Z5UkdW
amIzSmhkRzl5Snl3Z2NHRnlZVzF6TG14bGJtZDBhQ3dnY0dGMGFDNXZjbWxuYVc1aGJDazdYRzRn
SUgwc1hHNWNiaUFnVUdGeWRHbGhiRk4wWVhSbGJXVnVkRG9nWm5WdVkzUnBiMjRvY0dGeWRHbGhi
Q2tnZTF4dUlDQWdJSFJvYVhNdWRYTmxVR0Z5ZEdsaGJDQTlJSFJ5ZFdVN1hHNWNiaUFnSUNCc1pY
UWdjSEp2WjNKaGJTQTlJSEJoY25ScFlXd3VjSEp2WjNKaGJUdGNiaUFnSUNCcFppQW9jSEp2WjNK
aGJTa2dlMXh1SUNBZ0lDQWdjSEp2WjNKaGJTQTlJSFJvYVhNdVkyOXRjR2xzWlZCeWIyZHlZVzBv
Y0dGeWRHbGhiQzV3Y205bmNtRnRLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnNaWFFnY0dGeVlXMXpJ
RDBnY0dGeWRHbGhiQzV3WVhKaGJYTTdYRzRnSUNBZ2FXWWdLSEJoY21GdGN5NXNaVzVuZEdnZ1Bp
QXhLU0I3WEc0Z0lDQWdJQ0IwYUhKdmR5QnVaWGNnUlhoalpYQjBhVzl1S0NkVmJuTjFjSEJ2Y25S
bFpDQnVkVzFpWlhJZ2IyWWdjR0Z5ZEdsaGJDQmhjbWQxYldWdWRITTZJQ2NnS3lCd1lYSmhiWE11
YkdWdVozUm9MQ0J3WVhKMGFXRnNLVHRjYmlBZ0lDQjlJR1ZzYzJVZ2FXWWdLQ0Z3WVhKaGJYTXVi
R1Z1WjNSb0tTQjdYRzRnSUNBZ0lDQnBaaUFvZEdocGN5NXZjSFJwYjI1ekxtVjRjR3hwWTJsMFVH
RnlkR2xoYkVOdmJuUmxlSFFwSUh0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTV2Y0dOdlpHVW9KM0IxYzJo
TWFYUmxjbUZzSnl3Z0ozVnVaR1ZtYVc1bFpDY3BPMXh1SUNBZ0lDQWdmU0JsYkhObElIdGNiaUFn
SUNBZ0lDQWdjR0Z5WVcxekxuQjFjMmdvZTNSNWNHVTZJQ2RRWVhSb1JYaHdjbVZ6YzJsdmJpY3NJ
SEJoY25Sek9pQmJYU3dnWkdWd2RHZzZJREI5S1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc1Y2Jp
QWdJQ0JzWlhRZ2NHRnlkR2xoYkU1aGJXVWdQU0J3WVhKMGFXRnNMbTVoYldVdWIzSnBaMmx1WVd3
c1hHNGdJQ0FnSUNBZ0lHbHpSSGx1WVcxcFl5QTlJSEJoY25ScFlXd3VibUZ0WlM1MGVYQmxJRDA5
UFNBblUzVmlSWGh3Y21WemMybHZiaWM3WEc0Z0lDQWdhV1lnS0dselJIbHVZVzFwWXlrZ2UxeHVJ
Q0FnSUNBZ2RHaHBjeTVoWTJObGNIUW9jR0Z5ZEdsaGJDNXVZVzFsS1R0Y2JpQWdJQ0I5WEc1Y2Jp
QWdJQ0IwYUdsekxuTmxkSFZ3Um5Wc2JFMTFjM1JoWTJobFVHRnlZVzF6S0hCaGNuUnBZV3dzSUhC
eWIyZHlZVzBzSUhWdVpHVm1hVzVsWkN3Z2RISjFaU2s3WEc1Y2JpQWdJQ0JzWlhRZ2FXNWtaVzUw
SUQwZ2NHRnlkR2xoYkM1cGJtUmxiblFnZkh3Z0p5YzdYRzRnSUNBZ2FXWWdLSFJvYVhNdWIzQjBh
Vzl1Y3k1d2NtVjJaVzUwU1c1a1pXNTBJQ1ltSUdsdVpHVnVkQ2tnZTF4dUlDQWdJQ0FnZEdocGN5
NXZjR052WkdVb0oyRndjR1Z1WkVOdmJuUmxiblFuTENCcGJtUmxiblFwTzF4dUlDQWdJQ0FnYVc1
a1pXNTBJRDBnSnljN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnZEdocGN5NXZjR052WkdVb0oybHVkbTly
WlZCaGNuUnBZV3duTENCcGMwUjVibUZ0YVdNc0lIQmhjblJwWVd4T1lXMWxMQ0JwYm1SbGJuUXBP
MXh1SUNBZ0lIUm9hWE11YjNCamIyUmxLQ2RoY0hCbGJtUW5LVHRjYmlBZ2ZTeGNiaUFnVUdGeWRH
bGhiRUpzYjJOclUzUmhkR1Z0Wlc1ME9pQm1kVzVqZEdsdmJpaHdZWEowYVdGc1FteHZZMnNwSUh0
Y2JpQWdJQ0IwYUdsekxsQmhjblJwWVd4VGRHRjBaVzFsYm5Rb2NHRnlkR2xoYkVKc2IyTnJLVHRj
YmlBZ2ZTeGNibHh1SUNCTmRYTjBZV05vWlZOMFlYUmxiV1Z1ZERvZ1puVnVZM1JwYjI0b2JYVnpk
R0ZqYUdVcElIdGNiaUFnSUNCMGFHbHpMbE4xWWtWNGNISmxjM05wYjI0b2JYVnpkR0ZqYUdVcE8x
eHVYRzRnSUNBZ2FXWWdLRzExYzNSaFkyaGxMbVZ6WTJGd1pXUWdKaVlnSVhSb2FYTXViM0IwYVc5
dWN5NXViMFZ6WTJGd1pTa2dlMXh1SUNBZ0lDQWdkR2hwY3k1dmNHTnZaR1VvSjJGd2NHVnVaRVZ6
WTJGd1pXUW5LVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2RHaHBjeTV2Y0dOdlpHVW9K
MkZ3Y0dWdVpDY3BPMXh1SUNBZ0lIMWNiaUFnZlN4Y2JpQWdSR1ZqYjNKaGRHOXlLR1JsWTI5eVlY
UnZjaWtnZTF4dUlDQWdJSFJvYVhNdVJHVmpiM0poZEc5eVFteHZZMnNvWkdWamIzSmhkRzl5S1R0
Y2JpQWdmU3hjYmx4dVhHNGdJRU52Ym5SbGJuUlRkR0YwWlcxbGJuUTZJR1oxYm1OMGFXOXVLR052
Ym5SbGJuUXBJSHRjYmlBZ0lDQnBaaUFvWTI5dWRHVnVkQzUyWVd4MVpTa2dlMXh1SUNBZ0lDQWdk
R2hwY3k1dmNHTnZaR1VvSjJGd2NHVnVaRU52Ym5SbGJuUW5MQ0JqYjI1MFpXNTBMblpoYkhWbEtU
dGNiaUFnSUNCOVhHNGdJSDBzWEc1Y2JpQWdRMjl0YldWdWRGTjBZWFJsYldWdWREb2dablZ1WTNS
cGIyNG9LU0I3ZlN4Y2JseHVJQ0JUZFdKRmVIQnlaWE56YVc5dU9pQm1kVzVqZEdsdmJpaHpaWGh3
Y2lrZ2UxeHVJQ0FnSUhSeVlXNXpabTl5YlV4cGRHVnlZV3hVYjFCaGRHZ29jMlY0Y0hJcE8xeHVJ
Q0FnSUd4bGRDQjBlWEJsSUQwZ2RHaHBjeTVqYkdGemMybG1lVk5sZUhCeUtITmxlSEJ5S1R0Y2Js
eHVJQ0FnSUdsbUlDaDBlWEJsSUQwOVBTQW5jMmx0Y0d4bEp5a2dlMXh1SUNBZ0lDQWdkR2hwY3k1
emFXMXdiR1ZUWlhod2NpaHpaWGh3Y2lrN1hHNGdJQ0FnZlNCbGJITmxJR2xtSUNoMGVYQmxJRDA5
UFNBbmFHVnNjR1Z5SnlrZ2UxeHVJQ0FnSUNBZ2RHaHBjeTVvWld4d1pYSlRaWGh3Y2loelpYaHdj
aWs3WEc0Z0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lIUm9hWE11WVcxaWFXZDFiM1Z6VTJWNGNI
SW9jMlY0Y0hJcE8xeHVJQ0FnSUgxY2JpQWdmU3hjYmlBZ1lXMWlhV2QxYjNWelUyVjRjSEk2SUda
MWJtTjBhVzl1S0hObGVIQnlMQ0J3Y205bmNtRnRMQ0JwYm5abGNuTmxLU0I3WEc0Z0lDQWdiR1Yw
SUhCaGRHZ2dQU0J6Wlhod2NpNXdZWFJvTEZ4dUlDQWdJQ0FnSUNCdVlXMWxJRDBnY0dGMGFDNXdZ
WEowYzFzd1hTeGNiaUFnSUNBZ0lDQWdhWE5DYkc5amF5QTlJSEJ5YjJkeVlXMGdJVDBnYm5Wc2JD
QjhmQ0JwYm5abGNuTmxJQ0U5SUc1MWJHdzdYRzVjYmlBZ0lDQjBhR2x6TG05d1kyOWtaU2duWjJW
MFEyOXVkR1Y0ZENjc0lIQmhkR2d1WkdWd2RHZ3BPMXh1WEc0Z0lDQWdkR2hwY3k1dmNHTnZaR1Vv
SjNCMWMyaFFjbTluY21GdEp5d2djSEp2WjNKaGJTazdYRzRnSUNBZ2RHaHBjeTV2Y0dOdlpHVW9K
M0IxYzJoUWNtOW5jbUZ0Snl3Z2FXNTJaWEp6WlNrN1hHNWNiaUFnSUNCd1lYUm9Mbk4wY21samRD
QTlJSFJ5ZFdVN1hHNGdJQ0FnZEdocGN5NWhZMk5sY0hRb2NHRjBhQ2s3WEc1Y2JpQWdJQ0IwYUds
ekxtOXdZMjlrWlNnbmFXNTJiMnRsUVcxaWFXZDFiM1Z6Snl3Z2JtRnRaU3dnYVhOQ2JHOWpheWs3
WEc0Z0lIMHNYRzVjYmlBZ2MybHRjR3hsVTJWNGNISTZJR1oxYm1OMGFXOXVLSE5sZUhCeUtTQjdY
RzRnSUNBZ2JHVjBJSEJoZEdnZ1BTQnpaWGh3Y2k1d1lYUm9PMXh1SUNBZ0lIQmhkR2d1YzNSeWFX
TjBJRDBnZEhKMVpUdGNiaUFnSUNCMGFHbHpMbUZqWTJWd2RDaHdZWFJvS1R0Y2JpQWdJQ0IwYUds
ekxtOXdZMjlrWlNnbmNtVnpiMngyWlZCdmMzTnBZbXhsVEdGdFltUmhKeWs3WEc0Z0lIMHNYRzVj
YmlBZ2FHVnNjR1Z5VTJWNGNISTZJR1oxYm1OMGFXOXVLSE5sZUhCeUxDQndjbTluY21GdExDQnBi
blpsY25ObEtTQjdYRzRnSUNBZ2JHVjBJSEJoY21GdGN5QTlJSFJvYVhNdWMyVjBkWEJHZFd4c1RY
VnpkR0ZqYUdWUVlYSmhiWE1vYzJWNGNISXNJSEJ5YjJkeVlXMHNJR2x1ZG1WeWMyVXBMRnh1SUNB
Z0lDQWdJQ0J3WVhSb0lEMGdjMlY0Y0hJdWNHRjBhQ3hjYmlBZ0lDQWdJQ0FnYm1GdFpTQTlJSEJo
ZEdndWNHRnlkSE5iTUYwN1hHNWNiaUFnSUNCcFppQW9kR2hwY3k1dmNIUnBiMjV6TG10dWIzZHVT
R1ZzY0dWeWMxdHVZVzFsWFNrZ2UxeHVJQ0FnSUNBZ2RHaHBjeTV2Y0dOdlpHVW9KMmx1ZG05clpV
dHViM2R1U0dWc2NHVnlKeXdnY0dGeVlXMXpMbXhsYm1kMGFDd2dibUZ0WlNrN1hHNGdJQ0FnZlNC
bGJITmxJR2xtSUNoMGFHbHpMbTl3ZEdsdmJuTXVhMjV2ZDI1SVpXeHdaWEp6VDI1c2VTa2dlMXh1
SUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRVY0WTJWd2RHbHZiaWduV1c5MUlITndaV05wWm1sbFpDQnJi
bTkzYmtobGJIQmxjbk5QYm14NUxDQmlkWFFnZFhObFpDQjBhR1VnZFc1cmJtOTNiaUJvWld4d1pY
SWdKeUFySUc1aGJXVXNJSE5sZUhCeUtUdGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnY0dG
MGFDNXpkSEpwWTNRZ1BTQjBjblZsTzF4dUlDQWdJQ0FnY0dGMGFDNW1ZV3h6ZVNBOUlIUnlkV1U3
WEc1Y2JpQWdJQ0FnSUhSb2FYTXVZV05qWlhCMEtIQmhkR2dwTzF4dUlDQWdJQ0FnZEdocGN5NXZj
R052WkdVb0oybHVkbTlyWlVobGJIQmxjaWNzSUhCaGNtRnRjeTVzWlc1bmRHZ3NJSEJoZEdndWIz
SnBaMmx1WVd3c0lFRlRWQzVvWld4d1pYSnpMbk5wYlhCc1pVbGtLSEJoZEdncEtUdGNiaUFnSUNC
OVhHNGdJSDBzWEc1Y2JpQWdVR0YwYUVWNGNISmxjM05wYjI0NklHWjFibU4wYVc5dUtIQmhkR2dw
SUh0Y2JpQWdJQ0IwYUdsekxtRmtaRVJsY0hSb0tIQmhkR2d1WkdWd2RHZ3BPMXh1SUNBZ0lIUm9h
WE11YjNCamIyUmxLQ2RuWlhSRGIyNTBaWGgwSnl3Z2NHRjBhQzVrWlhCMGFDazdYRzVjYmlBZ0lD
QnNaWFFnYm1GdFpTQTlJSEJoZEdndWNHRnlkSE5iTUYwc1hHNGdJQ0FnSUNBZ0lITmpiM0JsWkNB
OUlFRlRWQzVvWld4d1pYSnpMbk5qYjNCbFpFbGtLSEJoZEdncExGeHVJQ0FnSUNBZ0lDQmliRzlq
YTFCaGNtRnRTV1FnUFNBaGNHRjBhQzVrWlhCMGFDQW1KaUFoYzJOdmNHVmtJQ1ltSUhSb2FYTXVZ
bXh2WTJ0UVlYSmhiVWx1WkdWNEtHNWhiV1VwTzF4dVhHNGdJQ0FnYVdZZ0tHSnNiMk5yVUdGeVlX
MUpaQ2tnZTF4dUlDQWdJQ0FnZEdocGN5NXZjR052WkdVb0oyeHZiMnQxY0VKc2IyTnJVR0Z5WVcw
bkxDQmliRzlqYTFCaGNtRnRTV1FzSUhCaGRHZ3VjR0Z5ZEhNcE8xeHVJQ0FnSUgwZ1pXeHpaU0Jw
WmlBb0lXNWhiV1VwSUh0Y2JpQWdJQ0FnSUM4dklFTnZiblJsZUhRZ2NtVm1aWEpsYm1ObExDQnBM
bVV1SUdCN2UyWnZieUF1ZlgxZ0lHOXlJR0I3ZTJadmJ5QXVMbjE5WUZ4dUlDQWdJQ0FnZEdocGN5
NXZjR052WkdVb0ozQjFjMmhEYjI1MFpYaDBKeWs3WEc0Z0lDQWdmU0JsYkhObElHbG1JQ2h3WVhS
b0xtUmhkR0VwSUh0Y2JpQWdJQ0FnSUhSb2FYTXViM0IwYVc5dWN5NWtZWFJoSUQwZ2RISjFaVHRj
YmlBZ0lDQWdJSFJvYVhNdWIzQmpiMlJsS0Nkc2IyOXJkWEJFWVhSaEp5d2djR0YwYUM1a1pYQjBh
Q3dnY0dGMGFDNXdZWEowY3l3Z2NHRjBhQzV6ZEhKcFkzUXBPMXh1SUNBZ0lIMGdaV3h6WlNCN1hH
NGdJQ0FnSUNCMGFHbHpMbTl3WTI5a1pTZ25iRzl2YTNWd1QyNURiMjUwWlhoMEp5d2djR0YwYUM1
d1lYSjBjeXdnY0dGMGFDNW1ZV3h6ZVN3Z2NHRjBhQzV6ZEhKcFkzUXNJSE5qYjNCbFpDazdYRzRn
SUNBZ2ZWeHVJQ0I5TEZ4dVhHNGdJRk4wY21sdVoweHBkR1Z5WVd3NklHWjFibU4wYVc5dUtITjBj
bWx1WnlrZ2UxeHVJQ0FnSUhSb2FYTXViM0JqYjJSbEtDZHdkWE5vVTNSeWFXNW5KeXdnYzNSeWFX
NW5MblpoYkhWbEtUdGNiaUFnZlN4Y2JseHVJQ0JPZFcxaVpYSk1hWFJsY21Gc09pQm1kVzVqZEds
dmJpaHVkVzFpWlhJcElIdGNiaUFnSUNCMGFHbHpMbTl3WTI5a1pTZ25jSFZ6YUV4cGRHVnlZV3du
TENCdWRXMWlaWEl1ZG1Gc2RXVXBPMXh1SUNCOUxGeHVYRzRnSUVKdmIyeGxZVzVNYVhSbGNtRnNP
aUJtZFc1amRHbHZiaWhpYjI5c0tTQjdYRzRnSUNBZ2RHaHBjeTV2Y0dOdlpHVW9KM0IxYzJoTWFY
UmxjbUZzSnl3Z1ltOXZiQzUyWVd4MVpTazdYRzRnSUgwc1hHNWNiaUFnVlc1a1pXWnBibVZrVEds
MFpYSmhiRG9nWm5WdVkzUnBiMjRvS1NCN1hHNGdJQ0FnZEdocGN5NXZjR052WkdVb0ozQjFjMmhN
YVhSbGNtRnNKeXdnSjNWdVpHVm1hVzVsWkNjcE8xeHVJQ0I5TEZ4dVhHNGdJRTUxYkd4TWFYUmxj
bUZzT2lCbWRXNWpkR2x2YmlncElIdGNiaUFnSUNCMGFHbHpMbTl3WTI5a1pTZ25jSFZ6YUV4cGRH
VnlZV3duTENBbmJuVnNiQ2NwTzF4dUlDQjlMRnh1WEc0Z0lFaGhjMmc2SUdaMWJtTjBhVzl1S0do
aGMyZ3BJSHRjYmlBZ0lDQnNaWFFnY0dGcGNuTWdQU0JvWVhOb0xuQmhhWEp6TEZ4dUlDQWdJQ0Fn
SUNCcElEMGdNQ3hjYmlBZ0lDQWdJQ0FnYkNBOUlIQmhhWEp6TG14bGJtZDBhRHRjYmx4dUlDQWdJ
SFJvYVhNdWIzQmpiMlJsS0Nkd2RYTm9TR0Z6YUNjcE8xeHVYRzRnSUNBZ1ptOXlJQ2c3SUdrZ1BD
QnNPeUJwS3lzcElIdGNiaUFnSUNBZ0lIUm9hWE11Y0hWemFGQmhjbUZ0S0hCaGFYSnpXMmxkTG5a
aGJIVmxLVHRjYmlBZ0lDQjlYRzRnSUNBZ2QyaHBiR1VnS0drdExTa2dlMXh1SUNBZ0lDQWdkR2hw
Y3k1dmNHTnZaR1VvSjJGemMybG5ibFJ2U0dGemFDY3NJSEJoYVhKelcybGRMbXRsZVNrN1hHNGdJ
Q0FnZlZ4dUlDQWdJSFJvYVhNdWIzQmpiMlJsS0Nkd2IzQklZWE5vSnlrN1hHNGdJSDBzWEc1Y2Jp
QWdMeThnU0VWTVVFVlNVMXh1SUNCdmNHTnZaR1U2SUdaMWJtTjBhVzl1S0c1aGJXVXBJSHRjYmlB
Z0lDQjBhR2x6TG05d1kyOWtaWE11Y0hWemFDaDdJRzl3WTI5a1pUb2dibUZ0WlN3Z1lYSm5jem9n
YzJ4cFkyVXVZMkZzYkNoaGNtZDFiV1Z1ZEhNc0lERXBMQ0JzYjJNNklIUm9hWE11YzI5MWNtTmxU
bTlrWlZzd1hTNXNiMk1nZlNrN1hHNGdJSDBzWEc1Y2JpQWdZV1JrUkdWd2RHZzZJR1oxYm1OMGFX
OXVLR1JsY0hSb0tTQjdYRzRnSUNBZ2FXWWdLQ0ZrWlhCMGFDa2dlMXh1SUNBZ0lDQWdjbVYwZFhK
dU8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhSb2FYTXVkWE5sUkdWd2RHaHpJRDBnZEhKMVpUdGNiaUFn
ZlN4Y2JseHVJQ0JqYkdGemMybG1lVk5sZUhCeU9pQm1kVzVqZEdsdmJpaHpaWGh3Y2lrZ2UxeHVJ
Q0FnSUd4bGRDQnBjMU5wYlhCc1pTQTlJRUZUVkM1b1pXeHdaWEp6TG5OcGJYQnNaVWxrS0hObGVI
QnlMbkJoZEdncE8xeHVYRzRnSUNBZ2JHVjBJR2x6UW14dlkydFFZWEpoYlNBOUlHbHpVMmx0Y0d4
bElDWW1JQ0VoZEdocGN5NWliRzlqYTFCaGNtRnRTVzVrWlhnb2MyVjRjSEl1Y0dGMGFDNXdZWEow
YzFzd1hTazdYRzVjYmlBZ0lDQXZMeUJoSUcxMWMzUmhZMmhsSUdseklHRnVJR1ZzYVdkcFlteGxJ
R2hsYkhCbGNpQnBaanBjYmlBZ0lDQXZMeUFxSUdsMGN5QnBaQ0JwY3lCemFXMXdiR1VnS0dFZ2My
bHVaMnhsSUhCaGNuUXNJRzV2ZENCZ2RHaHBjMkFnYjNJZ1lDNHVZQ2xjYmlBZ0lDQnNaWFFnYVhO
SVpXeHdaWElnUFNBaGFYTkNiRzlqYTFCaGNtRnRJQ1ltSUVGVFZDNW9aV3h3WlhKekxtaGxiSEJs
Y2tWNGNISmxjM05wYjI0b2MyVjRjSElwTzF4dVhHNGdJQ0FnTHk4Z2FXWWdZU0J0ZFhOMFlXTm9a
U0JwY3lCaGJpQmxiR2xuYVdKc1pTQm9aV3h3WlhJZ1luVjBJRzV2ZENCaElHUmxabWx1YVhSbFhH
NGdJQ0FnTHk4Z2FHVnNjR1Z5TENCcGRDQnBjeUJoYldKcFozVnZkWE1zSUdGdVpDQjNhV3hzSUdK
bElISmxjMjlzZG1Wa0lHbHVJR0VnYkdGMFpYSmNiaUFnSUNBdkx5QndZWE56SUc5eUlHRjBJSEox
Ym5ScGJXVXVYRzRnSUNBZ2JHVjBJR2x6Uld4cFoybGliR1VnUFNBaGFYTkNiRzlqYTFCaGNtRnRJ
Q1ltSUNocGMwaGxiSEJsY2lCOGZDQnBjMU5wYlhCc1pTazdYRzVjYmlBZ0lDQXZMeUJwWmlCaGJX
SnBaM1Z2ZFhNc0lIZGxJR05oYmlCd2IzTnphV0pzZVNCeVpYTnZiSFpsSUhSb1pTQmhiV0pwWjNW
cGRIa2dibTkzWEc0Z0lDQWdMeThnUVc0Z1pXeHBaMmxpYkdVZ2FHVnNjR1Z5SUdseklHOXVaU0Iw
YUdGMElHUnZaWE1nYm05MElHaGhkbVVnWVNCamIyMXdiR1Y0SUhCaGRHZ3NJR2t1WlM0Z1lIUm9h
WE11Wm05dllDd2dZQzR1TDJadmIyQWdaWFJqTGx4dUlDQWdJR2xtSUNocGMwVnNhV2RwWW14bElD
WW1JQ0ZwYzBobGJIQmxjaWtnZTF4dUlDQWdJQ0FnYkdWMElHNWhiV1VnUFNCelpYaHdjaTV3WVhS
b0xuQmhjblJ6V3pCZExGeHVJQ0FnSUNBZ0lDQWdJRzl3ZEdsdmJuTWdQU0IwYUdsekxtOXdkR2x2
Ym5NN1hHNWNiaUFnSUNBZ0lHbG1JQ2h2Y0hScGIyNXpMbXR1YjNkdVNHVnNjR1Z5YzF0dVlXMWxY
U2tnZTF4dUlDQWdJQ0FnSUNCcGMwaGxiSEJsY2lBOUlIUnlkV1U3WEc0Z0lDQWdJQ0I5SUdWc2My
VWdhV1lnS0c5d2RHbHZibk11YTI1dmQyNUlaV3h3WlhKelQyNXNlU2tnZTF4dUlDQWdJQ0FnSUNC
cGMwVnNhV2RwWW14bElEMGdabUZzYzJVN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dVhHNGdJQ0Fn
YVdZZ0tHbHpTR1ZzY0dWeUtTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z0oyaGxiSEJsY2ljN1hHNGdJ
Q0FnZlNCbGJITmxJR2xtSUNocGMwVnNhV2RwWW14bEtTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z0oy
RnRZbWxuZFc5MWN5YzdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUFuYzJs
dGNHeGxKenRjYmlBZ0lDQjlYRzRnSUgwc1hHNWNiaUFnY0hWemFGQmhjbUZ0Y3pvZ1puVnVZM1Jw
YjI0b2NHRnlZVzF6S1NCN1hHNGdJQ0FnWm05eUlDaHNaWFFnYVNBOUlEQXNJR3dnUFNCd1lYSmhi
WE11YkdWdVozUm9PeUJwSUR3Z2JEc2dhU3NyS1NCN1hHNGdJQ0FnSUNCMGFHbHpMbkIxYzJoUVlY
SmhiU2h3WVhKaGJYTmJhVjBwTzF4dUlDQWdJSDFjYmlBZ2ZTeGNibHh1SUNCd2RYTm9VR0Z5WVcw
NklHWjFibU4wYVc5dUtIWmhiQ2tnZTF4dUlDQWdJR3hsZENCMllXeDFaU0E5SUhaaGJDNTJZV3gx
WlNBaFBTQnVkV3hzSUQ4Z2RtRnNMblpoYkhWbElEb2dkbUZzTG05eWFXZHBibUZzSUh4OElDY25P
MXh1WEc0Z0lDQWdhV1lnS0hSb2FYTXVjM1J5YVc1blVHRnlZVzF6S1NCN1hHNGdJQ0FnSUNCcFpp
QW9kbUZzZFdVdWNtVndiR0ZqWlNrZ2UxeHVJQ0FnSUNBZ0lDQjJZV3gxWlNBOUlIWmhiSFZsWEc0
Z0lDQWdJQ0FnSUNBZ0lDQXVjbVZ3YkdGalpTZ3ZYaWhjWEM0L1hGd3VYRnd2S1Nvdlp5d2dKeWNw
WEc0Z0lDQWdJQ0FnSUNBZ0lDQXVjbVZ3YkdGalpTZ3ZYRnd2TDJjc0lDY3VKeWs3WEc0Z0lDQWdJ
Q0I5WEc1Y2JpQWdJQ0FnSUdsbUlDaDJZV3d1WkdWd2RHZ3BJSHRjYmlBZ0lDQWdJQ0FnZEdocGN5
NWhaR1JFWlhCMGFDaDJZV3d1WkdWd2RHZ3BPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdkR2hwY3k1
dmNHTnZaR1VvSjJkbGRFTnZiblJsZUhRbkxDQjJZV3d1WkdWd2RHZ2dmSHdnTUNrN1hHNGdJQ0Fn
SUNCMGFHbHpMbTl3WTI5a1pTZ25jSFZ6YUZOMGNtbHVaMUJoY21GdEp5d2dkbUZzZFdVc0lIWmhi
QzUwZVhCbEtUdGNibHh1SUNBZ0lDQWdhV1lnS0haaGJDNTBlWEJsSUQwOVBTQW5VM1ZpUlhod2Nt
VnpjMmx2YmljcElIdGNiaUFnSUNBZ0lDQWdMeThnVTNWaVJYaHdjbVZ6YzJsdmJuTWdaMlYwSUdW
MllXeDFZWFJsWkNCaGJtUWdjR0Z6YzJWa0lHbHVYRzRnSUNBZ0lDQWdJQzh2SUdsdUlITjBjbWx1
WnlCd1lYSmhiWE1nYlc5a1pTNWNiaUFnSUNBZ0lDQWdkR2hwY3k1aFkyTmxjSFFvZG1Gc0tUdGNi
aUFnSUNBZ0lIMWNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnYVdZZ0tIUm9hWE11ZEhKaFky
dEpaSE1wSUh0Y2JpQWdJQ0FnSUNBZ2JHVjBJR0pzYjJOclVHRnlZVzFKYm1SbGVEdGNiaUFnSUNB
Z0lDQWdhV1lnS0haaGJDNXdZWEowY3lBbUppQWhRVk5VTG1obGJIQmxjbk11YzJOdmNHVmtTV1Fv
ZG1Gc0tTQW1KaUFoZG1Gc0xtUmxjSFJvS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJR0pzYjJOclVHRnlZ
VzFKYm1SbGVDQTlJSFJvYVhNdVlteHZZMnRRWVhKaGJVbHVaR1Y0S0haaGJDNXdZWEowYzFzd1hT
azdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnYVdZZ0tHSnNiMk5yVUdGeVlXMUpibVJsZUNr
Z2UxeHVJQ0FnSUNBZ0lDQWdJR3hsZENCaWJHOWphMUJoY21GdFEyaHBiR1FnUFNCMllXd3VjR0Z5
ZEhNdWMyeHBZMlVvTVNrdWFtOXBiaWduTGljcE8xeHVJQ0FnSUNBZ0lDQWdJSFJvYVhNdWIzQmpi
MlJsS0Nkd2RYTm9TV1FuTENBblFteHZZMnRRWVhKaGJTY3NJR0pzYjJOclVHRnlZVzFKYm1SbGVD
d2dZbXh2WTJ0UVlYSmhiVU5vYVd4a0tUdGNiaUFnSUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNB
Z0lDQWdJQ0IyWVd4MVpTQTlJSFpoYkM1dmNtbG5hVzVoYkNCOGZDQjJZV3gxWlR0Y2JpQWdJQ0Fn
SUNBZ0lDQnBaaUFvZG1Gc2RXVXVjbVZ3YkdGalpTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2RtRnNk
V1VnUFNCMllXeDFaVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQzV5WlhCc1lXTmxLQzllZEdocGN5
Zy9PbHhjTG53a0tTOHNJQ2NuS1Z4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUM1eVpYQnNZV05sS0M5
ZVhGd3VYRnd2THl3Z0p5Y3BYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdMbkpsY0d4aFkyVW9MMTVj
WEM0a0x5d2dKeWNwTzF4dUlDQWdJQ0FnSUNBZ0lIMWNibHh1SUNBZ0lDQWdJQ0FnSUhSb2FYTXVi
M0JqYjJSbEtDZHdkWE5vU1dRbkxDQjJZV3d1ZEhsd1pTd2dkbUZzZFdVcE8xeHVJQ0FnSUNBZ0lD
QjlYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQjBhR2x6TG1GalkyVndkQ2gyWVd3cE8xeHVJQ0FnSUgx
Y2JpQWdmU3hjYmx4dUlDQnpaWFIxY0VaMWJHeE5kWE4wWVdOb1pWQmhjbUZ0Y3pvZ1puVnVZM1Jw
YjI0b2MyVjRjSElzSUhCeWIyZHlZVzBzSUdsdWRtVnljMlVzSUc5dGFYUkZiWEIwZVNrZ2UxeHVJ
Q0FnSUd4bGRDQndZWEpoYlhNZ1BTQnpaWGh3Y2k1d1lYSmhiWE03WEc0Z0lDQWdkR2hwY3k1d2RY
Tm9VR0Z5WVcxektIQmhjbUZ0Y3lrN1hHNWNiaUFnSUNCMGFHbHpMbTl3WTI5a1pTZ25jSFZ6YUZC
eWIyZHlZVzBuTENCd2NtOW5jbUZ0S1R0Y2JpQWdJQ0IwYUdsekxtOXdZMjlrWlNnbmNIVnphRkJ5
YjJkeVlXMG5MQ0JwYm5abGNuTmxLVHRjYmx4dUlDQWdJR2xtSUNoelpYaHdjaTVvWVhOb0tTQjdY
RzRnSUNBZ0lDQjBhR2x6TG1GalkyVndkQ2h6Wlhod2NpNW9ZWE5vS1R0Y2JpQWdJQ0I5SUdWc2My
VWdlMXh1SUNBZ0lDQWdkR2hwY3k1dmNHTnZaR1VvSjJWdGNIUjVTR0Z6YUNjc0lHOXRhWFJGYlhC
MGVTazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NtVjBkWEp1SUhCaGNtRnRjenRjYmlBZ2ZTeGNibHh1
SUNCaWJHOWphMUJoY21GdFNXNWtaWGc2SUdaMWJtTjBhVzl1S0c1aGJXVXBJSHRjYmlBZ0lDQm1i
M0lnS0d4bGRDQmtaWEIwYUNBOUlEQXNJR3hsYmlBOUlIUm9hWE11YjNCMGFXOXVjeTVpYkc5amEx
QmhjbUZ0Y3k1c1pXNW5kR2c3SUdSbGNIUm9JRHdnYkdWdU95QmtaWEIwYUNzcktTQjdYRzRnSUNB
Z0lDQnNaWFFnWW14dlkydFFZWEpoYlhNZ1BTQjBhR2x6TG05d2RHbHZibk11WW14dlkydFFZWEpo
YlhOYlpHVndkR2hkTEZ4dUlDQWdJQ0FnSUNBZ0lIQmhjbUZ0SUQwZ1lteHZZMnRRWVhKaGJYTWdK
aVlnYVc1a1pYaFBaaWhpYkc5amExQmhjbUZ0Y3l3Z2JtRnRaU2s3WEc0Z0lDQWdJQ0JwWmlBb1lt
eHZZMnRRWVhKaGJYTWdKaVlnY0dGeVlXMGdQajBnTUNrZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200
Z1cyUmxjSFJvTENCd1lYSmhiVjA3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNCOVhHNTlPMXh1
WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnY0hKbFkyOXRjR2xzWlNocGJuQjFkQ3dnYjNCMGFXOXVj
eXdnWlc1MktTQjdYRzRnSUdsbUlDaHBibkIxZENBOVBTQnVkV3hzSUh4OElDaDBlWEJsYjJZZ2FX
NXdkWFFnSVQwOUlDZHpkSEpwYm1jbklDWW1JR2x1Y0hWMExuUjVjR1VnSVQwOUlDZFFjbTluY21G
dEp5a3BJSHRjYmlBZ0lDQjBhSEp2ZHlCdVpYY2dSWGhqWlhCMGFXOXVLQ2RaYjNVZ2JYVnpkQ0J3
WVhOeklHRWdjM1J5YVc1bklHOXlJRWhoYm1Sc1pXSmhjbk1nUVZOVUlIUnZJRWhoYm1Sc1pXSmhj
bk11Y0hKbFkyOXRjR2xzWlM0Z1dXOTFJSEJoYzNObFpDQW5JQ3NnYVc1d2RYUXBPMXh1SUNCOVhH
NWNiaUFnYjNCMGFXOXVjeUE5SUc5d2RHbHZibk1nZkh3Z2UzMDdYRzRnSUdsbUlDZ2hLQ2RrWVhS
aEp5QnBiaUJ2Y0hScGIyNXpLU2tnZTF4dUlDQWdJRzl3ZEdsdmJuTXVaR0YwWVNBOUlIUnlkV1U3
WEc0Z0lIMWNiaUFnYVdZZ0tHOXdkR2x2Ym5NdVkyOXRjR0YwS1NCN1hHNGdJQ0FnYjNCMGFXOXVj
eTUxYzJWRVpYQjBhSE1nUFNCMGNuVmxPMXh1SUNCOVhHNWNiaUFnYkdWMElHRnpkQ0E5SUdWdWRp
NXdZWEp6WlNocGJuQjFkQ3dnYjNCMGFXOXVjeWtzWEc0Z0lDQWdJQ0JsYm5acGNtOXViV1Z1ZENB
OUlHNWxkeUJsYm5ZdVEyOXRjR2xzWlhJb0tTNWpiMjF3YVd4bEtHRnpkQ3dnYjNCMGFXOXVjeWs3
WEc0Z0lISmxkSFZ5YmlCdVpYY2daVzUyTGtwaGRtRlRZM0pwY0hSRGIyMXdhV3hsY2lncExtTnZi
WEJwYkdVb1pXNTJhWEp2Ym0xbGJuUXNJRzl3ZEdsdmJuTXBPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1pu
VnVZM1JwYjI0Z1kyOXRjR2xzWlNocGJuQjFkQ3dnYjNCMGFXOXVjeUE5SUh0OUxDQmxibllwSUh0
Y2JpQWdhV1lnS0dsdWNIVjBJRDA5SUc1MWJHd2dmSHdnS0hSNWNHVnZaaUJwYm5CMWRDQWhQVDBn
SjNOMGNtbHVaeWNnSmlZZ2FXNXdkWFF1ZEhsd1pTQWhQVDBnSjFCeWIyZHlZVzBuS1NrZ2UxeHVJ
Q0FnSUhSb2NtOTNJRzVsZHlCRmVHTmxjSFJwYjI0b0oxbHZkU0J0ZFhOMElIQmhjM01nWVNCemRI
SnBibWNnYjNJZ1NHRnVaR3hsWW1GeWN5QkJVMVFnZEc4Z1NHRnVaR3hsWW1GeWN5NWpiMjF3YVd4
bExpQlpiM1VnY0dGemMyVmtJQ2NnS3lCcGJuQjFkQ2s3WEc0Z0lIMWNibHh1SUNCcFppQW9JU2du
WkdGMFlTY2dhVzRnYjNCMGFXOXVjeWtwSUh0Y2JpQWdJQ0J2Y0hScGIyNXpMbVJoZEdFZ1BTQjBj
blZsTzF4dUlDQjlYRzRnSUdsbUlDaHZjSFJwYjI1ekxtTnZiWEJoZENrZ2UxeHVJQ0FnSUc5d2RH
bHZibk11ZFhObFJHVndkR2h6SUQwZ2RISjFaVHRjYmlBZ2ZWeHVYRzRnSUd4bGRDQmpiMjF3YVd4
bFpEdGNibHh1SUNCbWRXNWpkR2x2YmlCamIyMXdhV3hsU1c1d2RYUW9LU0I3WEc0Z0lDQWdiR1Yw
SUdGemRDQTlJR1Z1ZGk1d1lYSnpaU2hwYm5CMWRDd2diM0IwYVc5dWN5a3NYRzRnSUNBZ0lDQWdJ
R1Z1ZG1seWIyNXRaVzUwSUQwZ2JtVjNJR1Z1ZGk1RGIyMXdhV3hsY2lncExtTnZiWEJwYkdVb1lY
TjBMQ0J2Y0hScGIyNXpLU3hjYmlBZ0lDQWdJQ0FnZEdWdGNHeGhkR1ZUY0dWaklEMGdibVYzSUdW
dWRpNUtZWFpoVTJOeWFYQjBRMjl0Y0dsc1pYSW9LUzVqYjIxd2FXeGxLR1Z1ZG1seWIyNXRaVzUw
TENCdmNIUnBiMjV6TENCMWJtUmxabWx1WldRc0lIUnlkV1VwTzF4dUlDQWdJSEpsZEhWeWJpQmxi
bll1ZEdWdGNHeGhkR1VvZEdWdGNHeGhkR1ZUY0dWaktUdGNiaUFnZlZ4dVhHNGdJQzh2SUZSbGJY
QnNZWFJsSUdseklHOXViSGtnWTI5dGNHbHNaV1FnYjI0Z1ptbHljM1FnZFhObElHRnVaQ0JqWVdO
b1pXUWdZV1owWlhJZ2RHaGhkQ0J3YjJsdWRDNWNiaUFnWm5WdVkzUnBiMjRnY21WMEtHTnZiblJs
ZUhRc0lHVjRaV05QY0hScGIyNXpLU0I3WEc0Z0lDQWdhV1lnS0NGamIyMXdhV3hsWkNrZ2UxeHVJ
Q0FnSUNBZ1kyOXRjR2xzWldRZ1BTQmpiMjF3YVd4bFNXNXdkWFFvS1R0Y2JpQWdJQ0I5WEc0Z0lD
QWdjbVYwZFhKdUlHTnZiWEJwYkdWa0xtTmhiR3dvZEdocGN5d2dZMjl1ZEdWNGRDd2daWGhsWTA5
d2RHbHZibk1wTzF4dUlDQjlYRzRnSUhKbGRDNWZjMlYwZFhBZ1BTQm1kVzVqZEdsdmJpaHpaWFIx
Y0U5d2RHbHZibk1wSUh0Y2JpQWdJQ0JwWmlBb0lXTnZiWEJwYkdWa0tTQjdYRzRnSUNBZ0lDQmpi
MjF3YVd4bFpDQTlJR052YlhCcGJHVkpibkIxZENncE8xeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNt
NGdZMjl0Y0dsc1pXUXVYM05sZEhWd0tITmxkSFZ3VDNCMGFXOXVjeWs3WEc0Z0lIMDdYRzRnSUhK
bGRDNWZZMmhwYkdRZ1BTQm1kVzVqZEdsdmJpaHBMQ0JrWVhSaExDQmliRzlqYTFCaGNtRnRjeXdn
WkdWd2RHaHpLU0I3WEc0Z0lDQWdhV1lnS0NGamIyMXdhV3hsWkNrZ2UxeHVJQ0FnSUNBZ1kyOXRj
R2xzWldRZ1BTQmpiMjF3YVd4bFNXNXdkWFFvS1R0Y2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlH
TnZiWEJwYkdWa0xsOWphR2xzWkNocExDQmtZWFJoTENCaWJHOWphMUJoY21GdGN5d2daR1Z3ZEdo
ektUdGNiaUFnZlR0Y2JpQWdjbVYwZFhKdUlISmxkRHRjYm4xY2JseHVablZ1WTNScGIyNGdZWEpu
UlhGMVlXeHpLR0VzSUdJcElIdGNiaUFnYVdZZ0tHRWdQVDA5SUdJcElIdGNiaUFnSUNCeVpYUjFj
bTRnZEhKMVpUdGNiaUFnZlZ4dVhHNGdJR2xtSUNocGMwRnljbUY1S0dFcElDWW1JR2x6UVhKeVlY
a29ZaWtnSmlZZ1lTNXNaVzVuZEdnZ1BUMDlJR0l1YkdWdVozUm9LU0I3WEc0Z0lDQWdabTl5SUNo
c1pYUWdhU0E5SURBN0lHa2dQQ0JoTG14bGJtZDBhRHNnYVNzcktTQjdYRzRnSUNBZ0lDQnBaaUFv
SVdGeVowVnhkV0ZzY3loaFcybGRMQ0JpVzJsZEtTa2dlMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGda
bUZzYzJVN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQjBjblZsTzF4dUlD
QjlYRzU5WEc1Y2JtWjFibU4wYVc5dUlIUnlZVzV6Wm05eWJVeHBkR1Z5WVd4VWIxQmhkR2dvYzJW
NGNISXBJSHRjYmlBZ2FXWWdLQ0Z6Wlhod2NpNXdZWFJvTG5CaGNuUnpLU0I3WEc0Z0lDQWdiR1Yw
SUd4cGRHVnlZV3dnUFNCelpYaHdjaTV3WVhSb08xeHVJQ0FnSUM4dklFTmhjM1JwYm1jZ2RHOGdj
M1J5YVc1bklHaGxjbVVnZEc4Z2JXRnJaU0JtWVd4elpTQmhibVFnTUNCc2FYUmxjbUZzSUhaaGJI
VmxjeUJ3YkdGNUlHNXBZMlZzZVNCM2FYUm9JSFJvWlNCeVpYTjBYRzRnSUNBZ0x5OGdiMllnZEdo
bElITjVjM1JsYlM1Y2JpQWdJQ0J6Wlhod2NpNXdZWFJvSUQwZ2UxeHVJQ0FnSUNBZ2RIbHdaVG9n
SjFCaGRHaEZlSEJ5WlhOemFXOXVKeXhjYmlBZ0lDQWdJR1JoZEdFNklHWmhiSE5sTEZ4dUlDQWdJ
Q0FnWkdWd2RHZzZJREFzWEc0Z0lDQWdJQ0J3WVhKMGN6b2dXMnhwZEdWeVlXd3ViM0pwWjJsdVlX
d2dLeUFuSjEwc1hHNGdJQ0FnSUNCdmNtbG5hVzVoYkRvZ2JHbDBaWEpoYkM1dmNtbG5hVzVoYkNB
cklDY25MRnh1SUNBZ0lDQWdiRzlqT2lCc2FYUmxjbUZzTG14dlkxeHVJQ0FnSUgwN1hHNGdJSDFj
Ym4xY2JpSmRmUT09Cis7CitkZWZpbmUoJ2hhbmRsZWJhcnMvY29tcGlsZXIvY29kZS1nZW4nLFsn
ZXhwb3J0cycsICdtb2R1bGUnLCAnLi4vdXRpbHMnXSwgZnVuY3Rpb24gKGV4cG9ydHMsIG1vZHVs
ZSwgX3V0aWxzKSB7CisgIC8qIGdsb2JhbCBkZWZpbmUgKi8KKyAgJ3VzZSBzdHJpY3QnOworCisg
IHZhciBTb3VyY2VOb2RlID0gdW5kZWZpbmVkOworCisgIHRyeSB7CisgICAgLyogaXN0YW5idWwg
aWdub3JlIG5leHQgKi8KKyAgICBpZiAodHlwZW9mIGRlZmluZSAhPT0gJ2Z1bmN0aW9uJyB8fCAh
ZGVmaW5lLmFtZCkgeworICAgICAgLy8gV2UgZG9uJ3Qgc3VwcG9ydCB0aGlzIGluIEFNRCBlbnZp
cm9ubWVudHMuIEZvciB0aGVzZSBlbnZpcm9ubWVudHMsIHdlIGFzdXNtZSB0aGF0CisgICAgICAv
LyB0aGV5IGFyZSBydW5uaW5nIG9uIHRoZSBicm93c2VyIGFuZCB0aHVzIGhhdmUgbm8gbmVlZCBm
b3IgdGhlIHNvdXJjZS1tYXAgbGlicmFyeS4KKyAgICAgIHZhciBTb3VyY2VNYXAgPSByZXF1aXJl
KCdzb3VyY2UtbWFwJyk7CisgICAgICBTb3VyY2VOb2RlID0gU291cmNlTWFwLlNvdXJjZU5vZGU7
CisgICAgfQorICB9IGNhdGNoIChlcnIpIHt9CisgIC8qIE5PUCAqLworCisgIC8qIGlzdGFuYnVs
IGlnbm9yZSBpZjogdGVzdGVkIGJ1dCBub3QgY292ZXJlZCBpbiBpc3RhbmJ1bCBkdWUgdG8gZGlz
dCBidWlsZCAgKi8KKyAgaWYgKCFTb3VyY2VOb2RlKSB7CisgICAgU291cmNlTm9kZSA9IGZ1bmN0
aW9uIChsaW5lLCBjb2x1bW4sIHNyY0ZpbGUsIGNodW5rcykgeworICAgICAgdGhpcy5zcmMgPSAn
JzsKKyAgICAgIGlmIChjaHVua3MpIHsKKyAgICAgICAgdGhpcy5hZGQoY2h1bmtzKTsKKyAgICAg
IH0KKyAgICB9OworICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovCisgICAgU291cmNlTm9k
ZS5wcm90b3R5cGUgPSB7CisgICAgICBhZGQ6IGZ1bmN0aW9uIGFkZChjaHVua3MpIHsKKyAgICAg
ICAgaWYgKF91dGlscy5pc0FycmF5KGNodW5rcykpIHsKKyAgICAgICAgICBjaHVua3MgPSBjaHVu
a3Muam9pbignJyk7CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5zcmMgKz0gY2h1bmtzOworICAg
ICAgfSwKKyAgICAgIHByZXBlbmQ6IGZ1bmN0aW9uIHByZXBlbmQoY2h1bmtzKSB7CisgICAgICAg
IGlmIChfdXRpbHMuaXNBcnJheShjaHVua3MpKSB7CisgICAgICAgICAgY2h1bmtzID0gY2h1bmtz
LmpvaW4oJycpOworICAgICAgICB9CisgICAgICAgIHRoaXMuc3JjID0gY2h1bmtzICsgdGhpcy5z
cmM7CisgICAgICB9LAorICAgICAgdG9TdHJpbmdXaXRoU291cmNlTWFwOiBmdW5jdGlvbiB0b1N0
cmluZ1dpdGhTb3VyY2VNYXAoKSB7CisgICAgICAgIHJldHVybiB7IGNvZGU6IHRoaXMudG9TdHJp
bmcoKSB9OworICAgICAgfSwKKyAgICAgIHRvU3RyaW5nOiBmdW5jdGlvbiB0b1N0cmluZygpIHsK
KyAgICAgICAgcmV0dXJuIHRoaXMuc3JjOworICAgICAgfQorICAgIH07CisgIH0KKworICBmdW5j
dGlvbiBjYXN0Q2h1bmsoY2h1bmssIGNvZGVHZW4sIGxvYykgeworICAgIGlmIChfdXRpbHMuaXNB
cnJheShjaHVuaykpIHsKKyAgICAgIHZhciByZXQgPSBbXTsKKworICAgICAgZm9yICh2YXIgaSA9
IDAsIGxlbiA9IGNodW5rLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgIHJldC5wdXNo
KGNvZGVHZW4ud3JhcChjaHVua1tpXSwgbG9jKSk7CisgICAgICB9CisgICAgICByZXR1cm4gcmV0
OworICAgIH0gZWxzZSBpZiAodHlwZW9mIGNodW5rID09PSAnYm9vbGVhbicgfHwgdHlwZW9mIGNo
dW5rID09PSAnbnVtYmVyJykgeworICAgICAgLy8gSGFuZGxlIHByaW1pdGl2ZXMgdGhhdCB0aGUg
U291cmNlTm9kZSB3aWxsIHRocm93IHVwIG9uCisgICAgICByZXR1cm4gY2h1bmsgKyAnJzsKKyAg
ICB9CisgICAgcmV0dXJuIGNodW5rOworICB9CisKKyAgZnVuY3Rpb24gQ29kZUdlbihzcmNGaWxl
KSB7CisgICAgdGhpcy5zcmNGaWxlID0gc3JjRmlsZTsKKyAgICB0aGlzLnNvdXJjZSA9IFtdOwor
ICB9CisKKyAgQ29kZUdlbi5wcm90b3R5cGUgPSB7CisgICAgaXNFbXB0eTogZnVuY3Rpb24gaXNF
bXB0eSgpIHsKKyAgICAgIHJldHVybiAhdGhpcy5zb3VyY2UubGVuZ3RoOworICAgIH0sCisgICAg
cHJlcGVuZDogZnVuY3Rpb24gcHJlcGVuZChzb3VyY2UsIGxvYykgeworICAgICAgdGhpcy5zb3Vy
Y2UudW5zaGlmdCh0aGlzLndyYXAoc291cmNlLCBsb2MpKTsKKyAgICB9LAorICAgIHB1c2g6IGZ1
bmN0aW9uIHB1c2goc291cmNlLCBsb2MpIHsKKyAgICAgIHRoaXMuc291cmNlLnB1c2godGhpcy53
cmFwKHNvdXJjZSwgbG9jKSk7CisgICAgfSwKKworICAgIG1lcmdlOiBmdW5jdGlvbiBtZXJnZSgp
IHsKKyAgICAgIHZhciBzb3VyY2UgPSB0aGlzLmVtcHR5KCk7CisgICAgICB0aGlzLmVhY2goZnVu
Y3Rpb24gKGxpbmUpIHsKKyAgICAgICAgc291cmNlLmFkZChbJyAgJywgbGluZSwgJ1xuJ10pOwor
ICAgICAgfSk7CisgICAgICByZXR1cm4gc291cmNlOworICAgIH0sCisKKyAgICBlYWNoOiBmdW5j
dGlvbiBlYWNoKGl0ZXIpIHsKKyAgICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSB0aGlzLnNvdXJj
ZS5sZW5ndGg7IGkgPCBsZW47IGkrKykgeworICAgICAgICBpdGVyKHRoaXMuc291cmNlW2ldKTsK
KyAgICAgIH0KKyAgICB9LAorCisgICAgZW1wdHk6IGZ1bmN0aW9uIGVtcHR5KCkgeworICAgICAg
dmFyIGxvYyA9IHRoaXMuY3VycmVudExvY2F0aW9uIHx8IHsgc3RhcnQ6IHt9IH07CisgICAgICBy
ZXR1cm4gbmV3IFNvdXJjZU5vZGUobG9jLnN0YXJ0LmxpbmUsIGxvYy5zdGFydC5jb2x1bW4sIHRo
aXMuc3JjRmlsZSk7CisgICAgfSwKKyAgICB3cmFwOiBmdW5jdGlvbiB3cmFwKGNodW5rKSB7Cisg
ICAgICB2YXIgbG9jID0gYXJndW1lbnRzLmxlbmd0aCA8PSAxIHx8IGFyZ3VtZW50c1sxXSA9PT0g
dW5kZWZpbmVkID8gdGhpcy5jdXJyZW50TG9jYXRpb24gfHwgeyBzdGFydDoge30gfSA6IGFyZ3Vt
ZW50c1sxXTsKKworICAgICAgaWYgKGNodW5rIGluc3RhbmNlb2YgU291cmNlTm9kZSkgeworICAg
ICAgICByZXR1cm4gY2h1bms7CisgICAgICB9CisKKyAgICAgIGNodW5rID0gY2FzdENodW5rKGNo
dW5rLCB0aGlzLCBsb2MpOworCisgICAgICByZXR1cm4gbmV3IFNvdXJjZU5vZGUobG9jLnN0YXJ0
LmxpbmUsIGxvYy5zdGFydC5jb2x1bW4sIHRoaXMuc3JjRmlsZSwgY2h1bmspOworICAgIH0sCisK
KyAgICBmdW5jdGlvbkNhbGw6IGZ1bmN0aW9uIGZ1bmN0aW9uQ2FsbChmbiwgdHlwZSwgcGFyYW1z
KSB7CisgICAgICBwYXJhbXMgPSB0aGlzLmdlbmVyYXRlTGlzdChwYXJhbXMpOworICAgICAgcmV0
dXJuIHRoaXMud3JhcChbZm4sIHR5cGUgPyAnLicgKyB0eXBlICsgJygnIDogJygnLCBwYXJhbXMs
ICcpJ10pOworICAgIH0sCisKKyAgICBxdW90ZWRTdHJpbmc6IGZ1bmN0aW9uIHF1b3RlZFN0cmlu
ZyhzdHIpIHsKKyAgICAgIHJldHVybiAnIicgKyAoc3RyICsgJycpLnJlcGxhY2UoL1xcL2csICdc
XFxcJykucmVwbGFjZSgvIi9nLCAnXFwiJykucmVwbGFjZSgvXG4vZywgJ1xcbicpLnJlcGxhY2Uo
L1xyL2csICdcXHInKS5yZXBsYWNlKC9cdTIwMjgvZywgJ1xcdTIwMjgnKSAvLyBQZXIgRWNtYS0y
NjIgNy4zICsgNy44LjQKKyAgICAgIC5yZXBsYWNlKC9cdTIwMjkvZywgJ1xcdTIwMjknKSArICci
JzsKKyAgICB9LAorCisgICAgb2JqZWN0TGl0ZXJhbDogZnVuY3Rpb24gb2JqZWN0TGl0ZXJhbChv
YmopIHsKKyAgICAgIHZhciBwYWlycyA9IFtdOworCisgICAgICBmb3IgKHZhciBrZXkgaW4gb2Jq
KSB7CisgICAgICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkoa2V5KSkgeworICAgICAgICAgIHZh
ciB2YWx1ZSA9IGNhc3RDaHVuayhvYmpba2V5XSwgdGhpcyk7CisgICAgICAgICAgaWYgKHZhbHVl
ICE9PSAndW5kZWZpbmVkJykgeworICAgICAgICAgICAgcGFpcnMucHVzaChbdGhpcy5xdW90ZWRT
dHJpbmcoa2V5KSwgJzonLCB2YWx1ZV0pOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
fQorCisgICAgICB2YXIgcmV0ID0gdGhpcy5nZW5lcmF0ZUxpc3QocGFpcnMpOworICAgICAgcmV0
LnByZXBlbmQoJ3snKTsKKyAgICAgIHJldC5hZGQoJ30nKTsKKyAgICAgIHJldHVybiByZXQ7Cisg
ICAgfSwKKworICAgIGdlbmVyYXRlTGlzdDogZnVuY3Rpb24gZ2VuZXJhdGVMaXN0KGVudHJpZXMp
IHsKKyAgICAgIHZhciByZXQgPSB0aGlzLmVtcHR5KCk7CisKKyAgICAgIGZvciAodmFyIGkgPSAw
LCBsZW4gPSBlbnRyaWVzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgIGlmIChpKSB7
CisgICAgICAgICAgcmV0LmFkZCgnLCcpOworICAgICAgICB9CisKKyAgICAgICAgcmV0LmFkZChj
YXN0Q2h1bmsoZW50cmllc1tpXSwgdGhpcykpOworICAgICAgfQorCisgICAgICByZXR1cm4gcmV0
OworICAgIH0sCisKKyAgICBnZW5lcmF0ZUFycmF5OiBmdW5jdGlvbiBnZW5lcmF0ZUFycmF5KGVu
dHJpZXMpIHsKKyAgICAgIHZhciByZXQgPSB0aGlzLmdlbmVyYXRlTGlzdChlbnRyaWVzKTsKKyAg
ICAgIHJldC5wcmVwZW5kKCdbJyk7CisgICAgICByZXQuYWRkKCddJyk7CisKKyAgICAgIHJldHVy
biByZXQ7CisgICAgfQorICB9OworCisgIG1vZHVsZS5leHBvcnRzID0gQ29kZUdlbjsKK30pOwor
Ly8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhK
emFXOXVJam96TENKemIzVnlZMlZ6SWpwYklpNHVMeTR1THk0dUx5NHVMMnhwWWk5b1lXNWtiR1Zp
WVhKekwyTnZiWEJwYkdWeUwyTnZaR1V0WjJWdUxtcHpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndj
R2x1WjNNaU9pSTdPenM3UVVGSFFTeE5RVUZKTEZWQlFWVXNXVUZCUVN4RFFVRkRPenRCUVVWbUxF
MUJRVWs3TzBGQlJVWXNVVUZCU1N4UFFVRlBMRTFCUVUwc1MwRkJTeXhWUVVGVkxFbEJRVWtzUTBG
QlF5eE5RVUZOTEVOQlFVTXNSMEZCUnl4RlFVRkZPenM3UVVGSEwwTXNWVUZCU1N4VFFVRlRMRWRC
UVVjc1QwRkJUeXhEUVVGRExGbEJRVmtzUTBGQlF5eERRVUZETzBGQlEzUkRMR2RDUVVGVkxFZEJR
VWNzVTBGQlV5eERRVUZETEZWQlFWVXNRMEZCUXp0TFFVTnVRenRIUVVOR0xFTkJRVU1zVDBGQlR5
eEhRVUZITEVWQlFVVXNSVUZGWWpzN096dEJRVUZCTEVGQlIwUXNUVUZCU1N4RFFVRkRMRlZCUVZV
c1JVRkJSVHRCUVVObUxHTkJRVlVzUjBGQlJ5eFZRVUZUTEVsQlFVa3NSVUZCUlN4TlFVRk5MRVZC
UVVVc1QwRkJUeXhGUVVGRkxFMUJRVTBzUlVGQlJUdEJRVU51UkN4VlFVRkpMRU5CUVVNc1IwRkJS
eXhIUVVGSExFVkJRVVVzUTBGQlF6dEJRVU5rTEZWQlFVa3NUVUZCVFN4RlFVRkZPMEZCUTFZc1dV
RkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0UFFVTnNRanRMUVVO
R0xFTkJRVU03TzBGQlJVWXNZMEZCVlN4RFFVRkRMRk5CUVZNc1IwRkJSenRCUVVOeVFpeFRRVUZI
TEVWQlFVVXNZVUZCVXl4TlFVRk5MRVZCUVVVN1FVRkRjRUlzV1VGQlNTeFBRVE5DUml4UFFVRlBM
RU5CTWtKSExFMUJRVTBzUTBGQlF5eEZRVUZGTzBGQlEyNUNMR2RDUVVGTkxFZEJRVWNzVFVGQlRT
eERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJRenRUUVVNeFFqdEJRVU5FTEZs
QlFVa3NRMEZCUXl4SFFVRkhMRWxCUVVrc1RVRkJUU3hEUVVGRE8wOUJRM0JDTzBGQlEwUXNZVUZC
VHl4RlFVRkZMR2xDUVVGVExFMUJRVTBzUlVGQlJUdEJRVU40UWl4WlFVRkpMRTlCYWtOR0xFOUJR
VThzUTBGcFEwY3NUVUZCVFN4RFFVRkRMRVZCUVVVN1FVRkRia0lzWjBKQlFVMHNSMEZCUnl4TlFV
Rk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETzFOQlF6RkNPMEZCUTBR
c1dVRkJTU3hEUVVGRExFZEJRVWNzUjBGQlJ5eE5RVUZOTEVkQlFVY3NTVUZCU1N4RFFVRkRMRWRC
UVVjc1EwRkJRenRQUVVNNVFqdEJRVU5FTERKQ1FVRnhRaXhGUVVGRkxHbERRVUZYTzBGQlEyaERM
R1ZCUVU4c1JVRkJReXhKUVVGSkxFVkJRVVVzU1VGQlNTeERRVUZETEZGQlFWRXNSVUZCUlN4RlFV
RkRMRU5CUVVNN1QwRkRhRU03UVVGRFJDeGpRVUZSTEVWQlFVVXNiMEpCUVZjN1FVRkRia0lzWlVG
QlR5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRPMDlCUTJwQ08wdEJRMFlzUTBGQlF6dEhRVU5J
T3p0QlFVZEVMRmRCUVZNc1UwRkJVeXhEUVVGRExFdEJRVXNzUlVGQlJTeFBRVUZQTEVWQlFVVXNS
MEZCUnl4RlFVRkZPMEZCUTNSRExGRkJRVWtzVDBGcVJFVXNUMEZCVHl4RFFXbEVSQ3hMUVVGTExF
TkJRVU1zUlVGQlJUdEJRVU5zUWl4VlFVRkpMRWRCUVVjc1IwRkJSeXhGUVVGRkxFTkJRVU03TzBG
QlJXSXNWMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUjBGQlJ5eEhRVUZI
TEV0QlFVc3NRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhIUVVGSExFZEJRVWNzUlVGQlJTeERR
VUZETEVWQlFVVXNSVUZCUlR0QlFVTm9SQ3hYUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEU5QlFV
OHNRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVk
QlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNN1QwRkRka003UVVGRFJDeGhRVUZQTEVkQlFVY3NRMEZC
UXp0TFFVTmFMRTFCUVUwc1NVRkJTU3hQUVVGUExFdEJRVXNzUzBGQlN5eFRRVUZUTEVsQlFVa3NU
MEZCVHl4TFFVRkxMRXRCUVVzc1VVRkJVU3hGUVVGRk96dEJRVVZzUlN4aFFVRlBMRXRCUVVzc1Iw
RkJSeXhGUVVGRkxFTkJRVU03UzBGRGJrSTdRVUZEUkN4WFFVRlBMRXRCUVVzc1EwRkJRenRIUVVO
a096dEJRVWRFTEZkQlFWTXNUMEZCVHl4RFFVRkRMRTlCUVU4c1JVRkJSVHRCUVVONFFpeFJRVUZK
TEVOQlFVTXNUMEZCVHl4SFFVRkhMRTlCUVU4c1EwRkJRenRCUVVOMlFpeFJRVUZKTEVOQlFVTXNU
VUZCVFN4SFFVRkhMRVZCUVVVc1EwRkJRenRIUVVOc1FqczdRVUZGUkN4VFFVRlBMRU5CUVVNc1Uw
RkJVeXhIUVVGSE8wRkJRMnhDTEZkQlFVOHNSVUZCUVN4dFFrRkJSenRCUVVOU0xHRkJRVThzUTBG
QlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJRenRMUVVNMVFqdEJRVU5F
TEZkQlFVOHNSVUZCUlN4cFFrRkJVeXhOUVVGTkxFVkJRVVVzUjBGQlJ5eEZRVUZGTzBGQlF6ZENM
RlZCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4SlFV
RkpMRU5CUVVNc1RVRkJUU3hGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTTdTMEZETjBN
N1FVRkRSQ3hSUVVGSkxFVkJRVVVzWTBGQlV5eE5RVUZOTEVWQlFVVXNSMEZCUnl4RlFVRkZPMEZC
UXpGQ0xGVkJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJR
eXhKUVVGSkxFTkJRVU1zVFVGQlRTeEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNN1Mw
RkRNVU03TzBGQlJVUXNVMEZCU3l4RlFVRkZMR2xDUVVGWE8wRkJRMmhDTEZWQlFVa3NUVUZCVFN4
SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFVkJRVVVzUTBGQlF6dEJRVU14UWl4VlFVRkpMRU5C
UVVNc1NVRkJTU3hEUVVGRExGVkJRVk1zU1VGQlNTeEZRVUZGTzBGQlEzWkNMR05CUVUwc1EwRkJR
eXhIUVVGSExFTkJRVU1zUTBGQlF5eEpRVUZKTEVWQlFVVXNTVUZCU1N4RlFVRkZMRWxCUVVrc1Ew
RkJReXhEUVVGRExFTkJRVU03VDBGRGFFTXNRMEZCUXl4RFFVRkRPMEZCUTBnc1lVRkJUeXhOUVVG
TkxFTkJRVU03UzBGRFpqczdRVUZGUkN4UlFVRkpMRVZCUVVVc1kwRkJVeXhKUVVGSkxFVkJRVVU3
UVVGRGJrSXNWMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUjBGQlJ5eEhR
VUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU1zUjBGQlJ5
eEhRVUZITEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVN1FVRkRkRVFzV1VGQlNTeERRVUZETEVs
QlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFBRVU4w
UWp0TFFVTkdPenRCUVVWRUxGTkJRVXNzUlVGQlJTeHBRa0ZCVnp0QlFVTm9RaXhWUVVGSkxFZEJR
VWNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNaVUZCWlN4SlFVRkpMRVZCUVVNc1MwRkJTeXhGUVVGRkxF
VkJRVVVzUlVGQlF5eERRVUZETzBGQlF6bERMR0ZCUVU4c1NVRkJTU3hWUVVGVkxFTkJRVU1zUjBG
QlJ5eERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRVZCUVVVc1IwRkJSeXhEUVVGRExFdEJRVXNz
UTBGQlF5eE5RVUZOTEVWQlFVVXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8wdEJR
M1pGTzBGQlEwUXNVVUZCU1N4RlFVRkZMR05CUVZNc1MwRkJTeXhGUVVFMlF6dFZRVUV6UXl4SFFV
RkhMSGxFUVVGSExFbEJRVWtzUTBGQlF5eGxRVUZsTEVsQlFVa3NSVUZCUXl4TFFVRkxMRVZCUVVV
c1JVRkJSU3hGUVVGRE96dEJRVU0zUkN4VlFVRkpMRXRCUVVzc1dVRkJXU3hWUVVGVkxFVkJRVVU3
UVVGREwwSXNaVUZCVHl4TFFVRkxMRU5CUVVNN1QwRkRaRHM3UVVGRlJDeFhRVUZMTEVkQlFVY3NV
MEZCVXl4RFFVRkRMRXRCUVVzc1JVRkJSU3hKUVVGSkxFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFV
TTdPMEZCUlhCRExHRkJRVThzU1VGQlNTeFZRVUZWTEVOQlFVTXNSMEZCUnl4RFFVRkRMRXRCUVVz
c1EwRkJReXhKUVVGSkxFVkJRVVVzUjBGQlJ5eERRVUZETEV0QlFVc3NRMEZCUXl4TlFVRk5MRVZC
UVVVc1NVRkJTU3hEUVVGRExFOUJRVThzUlVGQlJTeExRVUZMTEVOQlFVTXNRMEZCUXp0TFFVTTVS
VHM3UVVGRlJDeG5Ra0ZCV1N4RlFVRkZMSE5DUVVGVExFVkJRVVVzUlVGQlJTeEpRVUZKTEVWQlFV
VXNUVUZCVFN4RlFVRkZPMEZCUTNaRExGbEJRVTBzUjBGQlJ5eEpRVUZKTEVOQlFVTXNXVUZCV1N4
RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8wRkJRMjVETEdGQlFVOHNTVUZCU1N4RFFVRkRMRWxC
UVVrc1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJTeEpRVUZKTEVkQlFVY3NSMEZCUnl4SFFVRkhM
RWxCUVVrc1IwRkJSeXhIUVVGSExFZEJRVWNzUjBGQlJ5eEZRVUZGTEUxQlFVMHNSVUZCUlN4SFFV
RkhMRU5CUVVNc1EwRkJReXhEUVVGRE8wdEJRM0JGT3p0QlFVVkVMR2RDUVVGWkxFVkJRVVVzYzBK
QlFWTXNSMEZCUnl4RlFVRkZPMEZCUXpGQ0xHRkJRVThzUjBGQlJ5eEhRVUZITEVOQlFVTXNSMEZC
Unl4SFFVRkhMRVZCUVVVc1EwRkJRU3hEUVVOdVFpeFBRVUZQTEVOQlFVTXNTMEZCU3l4RlFVRkZM
RTFCUVUwc1EwRkJReXhEUVVOMFFpeFBRVUZQTEVOQlFVTXNTVUZCU1N4RlFVRkZMRXRCUVVzc1Ew
RkJReXhEUVVOd1FpeFBRVUZQTEVOQlFVTXNTMEZCU3l4RlFVRkZMRXRCUVVzc1EwRkJReXhEUVVO
eVFpeFBRVUZQTEVOQlFVTXNTMEZCU3l4RlFVRkZMRXRCUVVzc1EwRkJReXhEUVVOeVFpeFBRVUZQ
TEVOQlFVTXNVMEZCVXl4RlFVRkZMRk5CUVZNc1EwRkJRenRQUVVNM1FpeFBRVUZQTEVOQlFVTXNV
MEZCVXl4RlFVRkZMRk5CUVZNc1EwRkJReXhIUVVGSExFZEJRVWNzUTBGQlF6dExRVU40UXpzN1FV
RkZSQ3hwUWtGQllTeEZRVUZGTEhWQ1FVRlRMRWRCUVVjc1JVRkJSVHRCUVVNelFpeFZRVUZKTEV0
QlFVc3NSMEZCUnl4RlFVRkZMRU5CUVVNN08wRkJSV1lzVjBGQlN5eEpRVUZKTEVkQlFVY3NTVUZC
U1N4SFFVRkhMRVZCUVVVN1FVRkRia0lzV1VGQlNTeEhRVUZITEVOQlFVTXNZMEZCWXl4RFFVRkRM
RWRCUVVjc1EwRkJReXhGUVVGRk8wRkJRek5DTEdOQlFVa3NTMEZCU3l4SFFVRkhMRk5CUVZNc1Ew
RkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVN
N1FVRkRkRU1zWTBGQlNTeExRVUZMTEV0QlFVc3NWMEZCVnl4RlFVRkZPMEZCUTNwQ0xHbENRVUZM
TEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExGbEJRVmtzUTBGQlF5eEhR
VUZITEVOQlFVTXNSVUZCUlN4SFFVRkhMRVZCUVVVc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF6
dFhRVU5zUkR0VFFVTkdPMDlCUTBZN08wRkJSVVFzVlVGQlNTeEhRVUZITEVkQlFVY3NTVUZCU1N4
RFFVRkRMRmxCUVZrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dEJRVU51UXl4VFFVRkhMRU5C
UVVNc1QwRkJUeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzBGQlEycENMRk5CUVVjc1EwRkJR
eXhIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdRVUZEWWl4aFFVRlBMRWRCUVVjc1Ew
RkJRenRMUVVOYU96dEJRVWRFTEdkQ1FVRlpMRVZCUVVVc2MwSkJRVk1zVDBGQlR5eEZRVUZGTzBG
QlF6bENMRlZCUVVrc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTEVWQlFVVXNRMEZC
UXpzN1FVRkZka0lzVjBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1IwRkJS
eXhIUVVGSExFOUJRVThzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4SFFVRkhMRWRCUVVjc1JV
RkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdEJRVU5zUkN4WlFVRkpMRU5CUVVNc1JVRkJSVHRCUVVO
TUxHRkJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1UwRkRaRHM3
UVVGRlJDeFhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRk5CUVZNc1EwRkJReXhQUVVGUExFTkJR
VU1zUTBGQlF5eERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJRenRQUVVOMFF6
czdRVUZGUkN4aFFVRlBMRWRCUVVjc1EwRkJRenRMUVVOYU96dEJRVVZFTEdsQ1FVRmhMRVZCUVVV
c2RVSkJRVk1zVDBGQlR5eEZRVUZGTzBGQlF5OUNMRlZCUVVrc1IwRkJSeXhIUVVGSExFbEJRVWtz
UTBGQlF5eFpRVUZaTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1FVRkRja01zVTBGQlJ5eERR
VUZETEU5QlFVOHNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRCUVVOcVFpeFRRVUZITEVOQlFV
TXNSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE96dEJRVVZpTEdGQlFVOHNSMEZCUnl4
RFFVRkRPMHRCUTFvN1IwRkRSaXhEUVVGRE96dHRRa0ZGWVN4UFFVRlBJaXdpWm1sc1pTSTZJbU52
WkdVdFoyVnVMbXB6SWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaUx5b2daMnh2WW1Gc0lHUmxa
bWx1WlNBcUwxeHVhVzF3YjNKMElIdHBjMEZ5Y21GNWZTQm1jbTl0SUNjdUxpOTFkR2xzY3ljN1hH
NWNibXhsZENCVGIzVnlZMlZPYjJSbE8xeHVYRzUwY25rZ2UxeHVJQ0F2S2lCcGMzUmhibUoxYkNC
cFoyNXZjbVVnYm1WNGRDQXFMMXh1SUNCcFppQW9kSGx3Wlc5bUlHUmxabWx1WlNBaFBUMGdKMlox
Ym1OMGFXOXVKeUI4ZkNBaFpHVm1hVzVsTG1GdFpDa2dlMXh1SUNBZ0lDOHZJRmRsSUdSdmJpZDBJ
SE4xY0hCdmNuUWdkR2hwY3lCcGJpQkJUVVFnWlc1MmFYSnZibTFsYm5SekxpQkdiM0lnZEdobGMy
VWdaVzUyYVhKdmJtMWxiblJ6TENCM1pTQmhjM1Z6YldVZ2RHaGhkRnh1SUNBZ0lDOHZJSFJvWlhr
Z1lYSmxJSEoxYm01cGJtY2diMjRnZEdobElHSnliM2R6WlhJZ1lXNWtJSFJvZFhNZ2FHRjJaU0J1
YnlCdVpXVmtJR1p2Y2lCMGFHVWdjMjkxY21ObExXMWhjQ0JzYVdKeVlYSjVMbHh1SUNBZ0lHeGxk
Q0JUYjNWeVkyVk5ZWEFnUFNCeVpYRjFhWEpsS0NkemIzVnlZMlV0YldGd0p5azdYRzRnSUNBZ1Uy
OTFjbU5sVG05a1pTQTlJRk52ZFhKalpVMWhjQzVUYjNWeVkyVk9iMlJsTzF4dUlDQjlYRzU5SUdO
aGRHTm9JQ2hsY25JcElIdGNiaUFnTHlvZ1RrOVFJQ292WEc1OVhHNWNiaThxSUdsemRHRnVZblZz
SUdsbmJtOXlaU0JwWmpvZ2RHVnpkR1ZrSUdKMWRDQnViM1FnWTI5MlpYSmxaQ0JwYmlCcGMzUmhi
bUoxYkNCa2RXVWdkRzhnWkdsemRDQmlkV2xzWkNBZ0tpOWNibWxtSUNnaFUyOTFjbU5sVG05a1pT
a2dlMXh1SUNCVGIzVnlZMlZPYjJSbElEMGdablZ1WTNScGIyNG9iR2x1WlN3Z1kyOXNkVzF1TENC
emNtTkdhV3hsTENCamFIVnVhM01wSUh0Y2JpQWdJQ0IwYUdsekxuTnlZeUE5SUNjbk8xeHVJQ0Fn
SUdsbUlDaGphSFZ1YTNNcElIdGNiaUFnSUNBZ0lIUm9hWE11WVdSa0tHTm9kVzVyY3lrN1hHNGdJ
Q0FnZlZ4dUlDQjlPMXh1SUNBdktpQnBjM1JoYm1KMWJDQnBaMjV2Y21VZ2JtVjRkQ0FxTDF4dUlD
QlRiM1Z5WTJWT2IyUmxMbkJ5YjNSdmRIbHdaU0E5SUh0Y2JpQWdJQ0JoWkdRNklHWjFibU4wYVc5
dUtHTm9kVzVyY3lrZ2UxeHVJQ0FnSUNBZ2FXWWdLR2x6UVhKeVlYa29ZMmgxYm10ektTa2dlMXh1
SUNBZ0lDQWdJQ0JqYUhWdWEzTWdQU0JqYUhWdWEzTXVhbTlwYmlnbkp5azdYRzRnSUNBZ0lDQjlY
RzRnSUNBZ0lDQjBhR2x6TG5OeVl5QXJQU0JqYUhWdWEzTTdYRzRnSUNBZ2ZTeGNiaUFnSUNCd2Nt
VndaVzVrT2lCbWRXNWpkR2x2YmloamFIVnVhM01wSUh0Y2JpQWdJQ0FnSUdsbUlDaHBjMEZ5Y21G
NUtHTm9kVzVyY3lrcElIdGNiaUFnSUNBZ0lDQWdZMmgxYm10eklEMGdZMmgxYm10ekxtcHZhVzRv
SnljcE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2RHaHBjeTV6Y21NZ1BTQmphSFZ1YTNNZ0t5QjBh
R2x6TG5OeVl6dGNiaUFnSUNCOUxGeHVJQ0FnSUhSdlUzUnlhVzVuVjJsMGFGTnZkWEpqWlUxaGNE
b2dablZ1WTNScGIyNG9LU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdlMk52WkdVNklIUm9hWE11ZEc5
VGRISnBibWNvS1gwN1hHNGdJQ0FnZlN4Y2JpQWdJQ0IwYjFOMGNtbHVaem9nWm5WdVkzUnBiMjRv
S1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnZEdocGN5NXpjbU03WEc0Z0lDQWdmVnh1SUNCOU8xeHVm
Vnh1WEc1Y2JtWjFibU4wYVc5dUlHTmhjM1JEYUhWdWF5aGphSFZ1YXl3Z1kyOWtaVWRsYml3Z2JH
OWpLU0I3WEc0Z0lHbG1JQ2hwYzBGeWNtRjVLR05vZFc1cktTa2dlMXh1SUNBZ0lHeGxkQ0J5WlhR
Z1BTQmJYVHRjYmx4dUlDQWdJR1p2Y2lBb2JHVjBJR2tnUFNBd0xDQnNaVzRnUFNCamFIVnVheTVz
Wlc1bmRHZzdJR2tnUENCc1pXNDdJR2tyS3lrZ2UxeHVJQ0FnSUNBZ2NtVjBMbkIxYzJnb1kyOWta
VWRsYmk1M2NtRndLR05vZFc1clcybGRMQ0JzYjJNcEtUdGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRY
SnVJSEpsZER0Y2JpQWdmU0JsYkhObElHbG1JQ2gwZVhCbGIyWWdZMmgxYm1zZ1BUMDlJQ2RpYjI5
c1pXRnVKeUI4ZkNCMGVYQmxiMllnWTJoMWJtc2dQVDA5SUNkdWRXMWlaWEluS1NCN1hHNGdJQ0Fn
THk4Z1NHRnVaR3hsSUhCeWFXMXBkR2wyWlhNZ2RHaGhkQ0IwYUdVZ1UyOTFjbU5sVG05a1pTQjNh
V3hzSUhSb2NtOTNJSFZ3SUc5dVhHNGdJQ0FnY21WMGRYSnVJR05vZFc1cklDc2dKeWM3WEc0Z0lI
MWNiaUFnY21WMGRYSnVJR05vZFc1ck8xeHVmVnh1WEc1Y2JtWjFibU4wYVc5dUlFTnZaR1ZIWlc0
b2MzSmpSbWxzWlNrZ2UxeHVJQ0IwYUdsekxuTnlZMFpwYkdVZ1BTQnpjbU5HYVd4bE8xeHVJQ0Iw
YUdsekxuTnZkWEpqWlNBOUlGdGRPMXh1ZlZ4dVhHNURiMlJsUjJWdUxuQnliM1J2ZEhsd1pTQTlJ
SHRjYmlBZ2FYTkZiWEIwZVNncElIdGNiaUFnSUNCeVpYUjFjbTRnSVhSb2FYTXVjMjkxY21ObExt
eGxibWQwYUR0Y2JpQWdmU3hjYmlBZ2NISmxjR1Z1WkRvZ1puVnVZM1JwYjI0b2MyOTFjbU5sTENC
c2IyTXBJSHRjYmlBZ0lDQjBhR2x6TG5OdmRYSmpaUzUxYm5Ob2FXWjBLSFJvYVhNdWQzSmhjQ2h6
YjNWeVkyVXNJR3h2WXlrcE8xeHVJQ0I5TEZ4dUlDQndkWE5vT2lCbWRXNWpkR2x2YmloemIzVnlZ
MlVzSUd4dll5a2dlMXh1SUNBZ0lIUm9hWE11YzI5MWNtTmxMbkIxYzJnb2RHaHBjeTUzY21Gd0tI
TnZkWEpqWlN3Z2JHOWpLU2s3WEc0Z0lIMHNYRzVjYmlBZ2JXVnlaMlU2SUdaMWJtTjBhVzl1S0Nr
Z2UxeHVJQ0FnSUd4bGRDQnpiM1Z5WTJVZ1BTQjBhR2x6TG1WdGNIUjVLQ2s3WEc0Z0lDQWdkR2hw
Y3k1bFlXTm9LR1oxYm1OMGFXOXVLR3hwYm1VcElIdGNiaUFnSUNBZ0lITnZkWEpqWlM1aFpHUW9X
eWNnSUNjc0lHeHBibVVzSUNkY1hHNG5YU2s3WEc0Z0lDQWdmU2s3WEc0Z0lDQWdjbVYwZFhKdUlI
TnZkWEpqWlR0Y2JpQWdmU3hjYmx4dUlDQmxZV05vT2lCbWRXNWpkR2x2YmlocGRHVnlLU0I3WEc0
Z0lDQWdabTl5SUNoc1pYUWdhU0E5SURBc0lHeGxiaUE5SUhSb2FYTXVjMjkxY21ObExteGxibWQw
YURzZ2FTQThJR3hsYmpzZ2FTc3JLU0I3WEc0Z0lDQWdJQ0JwZEdWeUtIUm9hWE11YzI5MWNtTmxX
MmxkS1R0Y2JpQWdJQ0I5WEc0Z0lIMHNYRzVjYmlBZ1pXMXdkSGs2SUdaMWJtTjBhVzl1S0NrZ2Ux
eHVJQ0FnSUd4bGRDQnNiMk1nUFNCMGFHbHpMbU4xY25KbGJuUk1iMk5oZEdsdmJpQjhmQ0I3YzNS
aGNuUTZJSHQ5ZlR0Y2JpQWdJQ0J5WlhSMWNtNGdibVYzSUZOdmRYSmpaVTV2WkdVb2JHOWpMbk4w
WVhKMExteHBibVVzSUd4dll5NXpkR0Z5ZEM1amIyeDFiVzRzSUhSb2FYTXVjM0pqUm1sc1pTazdY
RzRnSUgwc1hHNGdJSGR5WVhBNklHWjFibU4wYVc5dUtHTm9kVzVyTENCc2IyTWdQU0IwYUdsekxt
TjFjbkpsYm5STWIyTmhkR2x2YmlCOGZDQjdjM1JoY25RNklIdDlmU2tnZTF4dUlDQWdJR2xtSUNo
amFIVnVheUJwYm5OMFlXNWpaVzltSUZOdmRYSmpaVTV2WkdVcElIdGNiaUFnSUNBZ0lISmxkSFZ5
YmlCamFIVnVhenRjYmlBZ0lDQjlYRzVjYmlBZ0lDQmphSFZ1YXlBOUlHTmhjM1JEYUhWdWF5aGph
SFZ1YXl3Z2RHaHBjeXdnYkc5aktUdGNibHh1SUNBZ0lISmxkSFZ5YmlCdVpYY2dVMjkxY21ObFRt
OWtaU2hzYjJNdWMzUmhjblF1YkdsdVpTd2diRzlqTG5OMFlYSjBMbU52YkhWdGJpd2dkR2hwY3k1
emNtTkdhV3hsTENCamFIVnVheWs3WEc0Z0lIMHNYRzVjYmlBZ1puVnVZM1JwYjI1RFlXeHNPaUJt
ZFc1amRHbHZiaWhtYml3Z2RIbHdaU3dnY0dGeVlXMXpLU0I3WEc0Z0lDQWdjR0Z5WVcxeklEMGdk
R2hwY3k1blpXNWxjbUYwWlV4cGMzUW9jR0Z5WVcxektUdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5
NTNjbUZ3S0Z0bWJpd2dkSGx3WlNBL0lDY3VKeUFySUhSNWNHVWdLeUFuS0NjZ09pQW5LQ2NzSUhC
aGNtRnRjeXdnSnlrblhTazdYRzRnSUgwc1hHNWNiaUFnY1hWdmRHVmtVM1J5YVc1bk9pQm1kVzVq
ZEdsdmJpaHpkSElwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdKMXdpSnlBcklDaHpkSElnS3lBbkp5bGNi
aUFnSUNBZ0lDNXlaWEJzWVdObEtDOWNYRnhjTDJjc0lDZGNYRnhjWEZ4Y1hDY3BYRzRnSUNBZ0lD
QXVjbVZ3YkdGalpTZ3ZYQ0l2Wnl3Z0oxeGNYRnhjSWljcFhHNGdJQ0FnSUNBdWNtVndiR0ZqWlNn
dlhGeHVMMmNzSUNkY1hGeGNiaWNwWEc0Z0lDQWdJQ0F1Y21Wd2JHRmpaU2d2WEZ4eUwyY3NJQ2Rj
WEZ4Y2NpY3BYRzRnSUNBZ0lDQXVjbVZ3YkdGalpTZ3ZYRngxTWpBeU9DOW5MQ0FuWEZ4Y1hIVXlN
REk0SnlrZ0lDQXZMeUJRWlhJZ1JXTnRZUzB5TmpJZ055NHpJQ3NnTnk0NExqUmNiaUFnSUNBZ0lD
NXlaWEJzWVdObEtDOWNYSFV5TURJNUwyY3NJQ2RjWEZ4Y2RUSXdNamtuS1NBcklDZGNJaWM3WEc0
Z0lIMHNYRzVjYmlBZ2IySnFaV04wVEdsMFpYSmhiRG9nWm5WdVkzUnBiMjRvYjJKcUtTQjdYRzRn
SUNBZ2JHVjBJSEJoYVhKeklEMGdXMTA3WEc1Y2JpQWdJQ0JtYjNJZ0tHeGxkQ0JyWlhrZ2FXNGdi
MkpxS1NCN1hHNGdJQ0FnSUNCcFppQW9iMkpxTG1oaGMwOTNibEJ5YjNCbGNuUjVLR3RsZVNrcElI
dGNiaUFnSUNBZ0lDQWdiR1YwSUhaaGJIVmxJRDBnWTJGemRFTm9kVzVyS0c5aWFsdHJaWGxkTENC
MGFHbHpLVHRjYmlBZ0lDQWdJQ0FnYVdZZ0tIWmhiSFZsSUNFOVBTQW5kVzVrWldacGJtVmtKeWtn
ZTF4dUlDQWdJQ0FnSUNBZ0lIQmhhWEp6TG5CMWMyZ29XM1JvYVhNdWNYVnZkR1ZrVTNSeWFXNW5L
R3RsZVNrc0lDYzZKeXdnZG1Gc2RXVmRLVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnZlZ4dUlD
QWdJSDFjYmx4dUlDQWdJR3hsZENCeVpYUWdQU0IwYUdsekxtZGxibVZ5WVhSbFRHbHpkQ2h3WVds
eWN5azdYRzRnSUNBZ2NtVjBMbkJ5WlhCbGJtUW9KM3NuS1R0Y2JpQWdJQ0J5WlhRdVlXUmtLQ2Q5
SnlrN1hHNGdJQ0FnY21WMGRYSnVJSEpsZER0Y2JpQWdmU3hjYmx4dVhHNGdJR2RsYm1WeVlYUmxU
R2x6ZERvZ1puVnVZM1JwYjI0b1pXNTBjbWxsY3lrZ2UxeHVJQ0FnSUd4bGRDQnlaWFFnUFNCMGFH
bHpMbVZ0Y0hSNUtDazdYRzVjYmlBZ0lDQm1iM0lnS0d4bGRDQnBJRDBnTUN3Z2JHVnVJRDBnWlc1
MGNtbGxjeTVzWlc1bmRHZzdJR2tnUENCc1pXNDdJR2tyS3lrZ2UxeHVJQ0FnSUNBZ2FXWWdLR2tw
SUh0Y2JpQWdJQ0FnSUNBZ2NtVjBMbUZrWkNnbkxDY3BPMXh1SUNBZ0lDQWdmVnh1WEc0Z0lDQWdJ
Q0J5WlhRdVlXUmtLR05oYzNSRGFIVnVheWhsYm5SeWFXVnpXMmxkTENCMGFHbHpLU2s3WEc0Z0lD
QWdmVnh1WEc0Z0lDQWdjbVYwZFhKdUlISmxkRHRjYmlBZ2ZTeGNibHh1SUNCblpXNWxjbUYwWlVG
eWNtRjVPaUJtZFc1amRHbHZiaWhsYm5SeWFXVnpLU0I3WEc0Z0lDQWdiR1YwSUhKbGRDQTlJSFJv
YVhNdVoyVnVaWEpoZEdWTWFYTjBLR1Z1ZEhKcFpYTXBPMXh1SUNBZ0lISmxkQzV3Y21Wd1pXNWtL
Q2RiSnlrN1hHNGdJQ0FnY21WMExtRmtaQ2duWFNjcE8xeHVYRzRnSUNBZ2NtVjBkWEp1SUhKbGRE
dGNiaUFnZlZ4dWZUdGNibHh1Wlhod2IzSjBJR1JsWm1GMWJIUWdRMjlrWlVkbGJqdGNibHh1SWwx
OQorOworZGVmaW5lKCdoYW5kbGViYXJzL2NvbXBpbGVyL2phdmFzY3JpcHQtY29tcGlsZXInLFsn
ZXhwb3J0cycsICdtb2R1bGUnLCAnLi4vYmFzZScsICcuLi9leGNlcHRpb24nLCAnLi4vdXRpbHMn
LCAnLi9jb2RlLWdlbiddLCBmdW5jdGlvbiAoZXhwb3J0cywgbW9kdWxlLCBfYmFzZSwgX2V4Y2Vw
dGlvbiwgX3V0aWxzLCBfY29kZUdlbikgeworICAndXNlIHN0cmljdCc7CisKKyAgLy8gaXN0YW5i
dWwgaWdub3JlIG5leHQKKworICBmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikg
eyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9
OyB9CisKKyAgdmFyIF9FeGNlcHRpb24gPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9leGNlcHRp
b24pOworCisgIHZhciBfQ29kZUdlbiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NvZGVHZW4p
OworCisgIGZ1bmN0aW9uIExpdGVyYWwodmFsdWUpIHsKKyAgICB0aGlzLnZhbHVlID0gdmFsdWU7
CisgIH0KKworICBmdW5jdGlvbiBKYXZhU2NyaXB0Q29tcGlsZXIoKSB7fQorCisgIEphdmFTY3Jp
cHRDb21waWxlci5wcm90b3R5cGUgPSB7CisgICAgLy8gUFVCTElDIEFQSTogWW91IGNhbiBvdmVy
cmlkZSB0aGVzZSBtZXRob2RzIGluIGEgc3ViY2xhc3MgdG8gcHJvdmlkZQorICAgIC8vIGFsdGVy
bmF0aXZlIGNvbXBpbGVkIGZvcm1zIGZvciBuYW1lIGxvb2t1cCBhbmQgYnVmZmVyaW5nIHNlbWFu
dGljcworICAgIG5hbWVMb29rdXA6IGZ1bmN0aW9uIG5hbWVMb29rdXAocGFyZW50LCBuYW1lIC8q
ICwgdHlwZSovKSB7CisgICAgICBpZiAoSmF2YVNjcmlwdENvbXBpbGVyLmlzVmFsaWRKYXZhU2Ny
aXB0VmFyaWFibGVOYW1lKG5hbWUpKSB7CisgICAgICAgIHJldHVybiBbcGFyZW50LCAnLicsIG5h
bWVdOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIFtwYXJlbnQsICdbJywgSlNPTi5z
dHJpbmdpZnkobmFtZSksICddJ107CisgICAgICB9CisgICAgfSwKKyAgICBkZXB0aGVkTG9va3Vw
OiBmdW5jdGlvbiBkZXB0aGVkTG9va3VwKG5hbWUpIHsKKyAgICAgIHJldHVybiBbdGhpcy5hbGlh
c2FibGUoJ2NvbnRhaW5lci5sb29rdXAnKSwgJyhkZXB0aHMsICInLCBuYW1lLCAnIiknXTsKKyAg
ICB9LAorCisgICAgY29tcGlsZXJJbmZvOiBmdW5jdGlvbiBjb21waWxlckluZm8oKSB7CisgICAg
ICB2YXIgcmV2aXNpb24gPSBfYmFzZS5DT01QSUxFUl9SRVZJU0lPTiwKKyAgICAgICAgICB2ZXJz
aW9ucyA9IF9iYXNlLlJFVklTSU9OX0NIQU5HRVNbcmV2aXNpb25dOworICAgICAgcmV0dXJuIFty
ZXZpc2lvbiwgdmVyc2lvbnNdOworICAgIH0sCisKKyAgICBhcHBlbmRUb0J1ZmZlcjogZnVuY3Rp
b24gYXBwZW5kVG9CdWZmZXIoc291cmNlLCBsb2NhdGlvbiwgZXhwbGljaXQpIHsKKyAgICAgIC8v
IEZvcmNlIGEgc291cmNlIGFzIHRoaXMgc2ltcGxpZmllcyB0aGUgbWVyZ2UgbG9naWMuCisgICAg
ICBpZiAoIV91dGlscy5pc0FycmF5KHNvdXJjZSkpIHsKKyAgICAgICAgc291cmNlID0gW3NvdXJj
ZV07CisgICAgICB9CisgICAgICBzb3VyY2UgPSB0aGlzLnNvdXJjZS53cmFwKHNvdXJjZSwgbG9j
YXRpb24pOworCisgICAgICBpZiAodGhpcy5lbnZpcm9ubWVudC5pc1NpbXBsZSkgeworICAgICAg
ICByZXR1cm4gWydyZXR1cm4gJywgc291cmNlLCAnOyddOworICAgICAgfSBlbHNlIGlmIChleHBs
aWNpdCkgeworICAgICAgICAvLyBUaGlzIGlzIGEgY2FzZSB3aGVyZSB0aGUgYnVmZmVyIG9wZXJh
dGlvbiBvY2N1cnMgYXMgYSBjaGlsZCBvZiBhbm90aGVyCisgICAgICAgIC8vIGNvbnN0cnVjdCwg
Z2VuZXJhbGx5IGJyYWNlcy4gV2UgaGF2ZSB0byBleHBsaWNpdGx5IG91dHB1dCB0aGVzZSBidWZm
ZXIKKyAgICAgICAgLy8gb3BlcmF0aW9ucyB0byBlbnN1cmUgdGhhdCB0aGUgZW1pdHRlZCBjb2Rl
IGdvZXMgaW4gdGhlIGNvcnJlY3QgbG9jYXRpb24uCisgICAgICAgIHJldHVybiBbJ2J1ZmZlciAr
PSAnLCBzb3VyY2UsICc7J107CisgICAgICB9IGVsc2UgeworICAgICAgICBzb3VyY2UuYXBwZW5k
VG9CdWZmZXIgPSB0cnVlOworICAgICAgICByZXR1cm4gc291cmNlOworICAgICAgfQorICAgIH0s
CisKKyAgICBpbml0aWFsaXplQnVmZmVyOiBmdW5jdGlvbiBpbml0aWFsaXplQnVmZmVyKCkgewor
ICAgICAgcmV0dXJuIHRoaXMucXVvdGVkU3RyaW5nKCcnKTsKKyAgICB9LAorICAgIC8vIEVORCBQ
VUJMSUMgQVBJCisKKyAgICBjb21waWxlOiBmdW5jdGlvbiBjb21waWxlKGVudmlyb25tZW50LCBv
cHRpb25zLCBjb250ZXh0LCBhc09iamVjdCkgeworICAgICAgdGhpcy5lbnZpcm9ubWVudCA9IGVu
dmlyb25tZW50OworICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9uczsKKyAgICAgIHRoaXMuc3Ry
aW5nUGFyYW1zID0gdGhpcy5vcHRpb25zLnN0cmluZ1BhcmFtczsKKyAgICAgIHRoaXMudHJhY2tJ
ZHMgPSB0aGlzLm9wdGlvbnMudHJhY2tJZHM7CisgICAgICB0aGlzLnByZWNvbXBpbGUgPSAhYXNP
YmplY3Q7CisKKyAgICAgIHRoaXMubmFtZSA9IHRoaXMuZW52aXJvbm1lbnQubmFtZTsKKyAgICAg
IHRoaXMuaXNDaGlsZCA9ICEhY29udGV4dDsKKyAgICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHQg
fHwgeworICAgICAgICBkZWNvcmF0b3JzOiBbXSwKKyAgICAgICAgcHJvZ3JhbXM6IFtdLAorICAg
ICAgICBlbnZpcm9ubWVudHM6IFtdCisgICAgICB9OworCisgICAgICB0aGlzLnByZWFtYmxlKCk7
CisKKyAgICAgIHRoaXMuc3RhY2tTbG90ID0gMDsKKyAgICAgIHRoaXMuc3RhY2tWYXJzID0gW107
CisgICAgICB0aGlzLmFsaWFzZXMgPSB7fTsKKyAgICAgIHRoaXMucmVnaXN0ZXJzID0geyBsaXN0
OiBbXSB9OworICAgICAgdGhpcy5oYXNoZXMgPSBbXTsKKyAgICAgIHRoaXMuY29tcGlsZVN0YWNr
ID0gW107CisgICAgICB0aGlzLmlubGluZVN0YWNrID0gW107CisgICAgICB0aGlzLmJsb2NrUGFy
YW1zID0gW107CisKKyAgICAgIHRoaXMuY29tcGlsZUNoaWxkcmVuKGVudmlyb25tZW50LCBvcHRp
b25zKTsKKworICAgICAgdGhpcy51c2VEZXB0aHMgPSB0aGlzLnVzZURlcHRocyB8fCBlbnZpcm9u
bWVudC51c2VEZXB0aHMgfHwgZW52aXJvbm1lbnQudXNlRGVjb3JhdG9ycyB8fCB0aGlzLm9wdGlv
bnMuY29tcGF0OworICAgICAgdGhpcy51c2VCbG9ja1BhcmFtcyA9IHRoaXMudXNlQmxvY2tQYXJh
bXMgfHwgZW52aXJvbm1lbnQudXNlQmxvY2tQYXJhbXM7CisKKyAgICAgIHZhciBvcGNvZGVzID0g
ZW52aXJvbm1lbnQub3Bjb2RlcywKKyAgICAgICAgICBvcGNvZGUgPSB1bmRlZmluZWQsCisgICAg
ICAgICAgZmlyc3RMb2MgPSB1bmRlZmluZWQsCisgICAgICAgICAgaSA9IHVuZGVmaW5lZCwKKyAg
ICAgICAgICBsID0gdW5kZWZpbmVkOworCisgICAgICBmb3IgKGkgPSAwLCBsID0gb3Bjb2Rlcy5s
ZW5ndGg7IGkgPCBsOyBpKyspIHsKKyAgICAgICAgb3Bjb2RlID0gb3Bjb2Rlc1tpXTsKKworICAg
ICAgICB0aGlzLnNvdXJjZS5jdXJyZW50TG9jYXRpb24gPSBvcGNvZGUubG9jOworICAgICAgICBm
aXJzdExvYyA9IGZpcnN0TG9jIHx8IG9wY29kZS5sb2M7CisgICAgICAgIHRoaXNbb3Bjb2RlLm9w
Y29kZV0uYXBwbHkodGhpcywgb3Bjb2RlLmFyZ3MpOworICAgICAgfQorCisgICAgICAvLyBGbHVz
aCBhbnkgdHJhaWxpbmcgY29udGVudCB0aGF0IG1pZ2h0IGJlIHBlbmRpbmcuCisgICAgICB0aGlz
LnNvdXJjZS5jdXJyZW50TG9jYXRpb24gPSBmaXJzdExvYzsKKyAgICAgIHRoaXMucHVzaFNvdXJj
ZSgnJyk7CisKKyAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovCisgICAgICBpZiAodGhp
cy5zdGFja1Nsb3QgfHwgdGhpcy5pbmxpbmVTdGFjay5sZW5ndGggfHwgdGhpcy5jb21waWxlU3Rh
Y2subGVuZ3RoKSB7CisgICAgICAgIHRocm93IG5ldyBfRXhjZXB0aW9uWydkZWZhdWx0J10oJ0Nv
bXBpbGUgY29tcGxldGVkIHdpdGggY29udGVudCBsZWZ0IG9uIHN0YWNrJyk7CisgICAgICB9CisK
KyAgICAgIGlmICghdGhpcy5kZWNvcmF0b3JzLmlzRW1wdHkoKSkgeworICAgICAgICB0aGlzLnVz
ZURlY29yYXRvcnMgPSB0cnVlOworCisgICAgICAgIHRoaXMuZGVjb3JhdG9ycy5wcmVwZW5kKCd2
YXIgZGVjb3JhdG9ycyA9IGNvbnRhaW5lci5kZWNvcmF0b3JzO1xuJyk7CisgICAgICAgIHRoaXMu
ZGVjb3JhdG9ycy5wdXNoKCdyZXR1cm4gZm47Jyk7CisKKyAgICAgICAgaWYgKGFzT2JqZWN0KSB7
CisgICAgICAgICAgdGhpcy5kZWNvcmF0b3JzID0gRnVuY3Rpb24uYXBwbHkodGhpcywgWydmbics
ICdwcm9wcycsICdjb250YWluZXInLCAnZGVwdGgwJywgJ2RhdGEnLCAnYmxvY2tQYXJhbXMnLCAn
ZGVwdGhzJywgdGhpcy5kZWNvcmF0b3JzLm1lcmdlKCldKTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICB0aGlzLmRlY29yYXRvcnMucHJlcGVuZCgnZnVuY3Rpb24oZm4sIHByb3BzLCBjb250
YWluZXIsIGRlcHRoMCwgZGF0YSwgYmxvY2tQYXJhbXMsIGRlcHRocykge1xuJyk7CisgICAgICAg
ICAgdGhpcy5kZWNvcmF0b3JzLnB1c2goJ31cbicpOworICAgICAgICAgIHRoaXMuZGVjb3JhdG9y
cyA9IHRoaXMuZGVjb3JhdG9ycy5tZXJnZSgpOworICAgICAgICB9CisgICAgICB9IGVsc2Ugewor
ICAgICAgICB0aGlzLmRlY29yYXRvcnMgPSB1bmRlZmluZWQ7CisgICAgICB9CisKKyAgICAgIHZh
ciBmbiA9IHRoaXMuY3JlYXRlRnVuY3Rpb25Db250ZXh0KGFzT2JqZWN0KTsKKyAgICAgIGlmICgh
dGhpcy5pc0NoaWxkKSB7CisgICAgICAgIHZhciByZXQgPSB7CisgICAgICAgICAgY29tcGlsZXI6
IHRoaXMuY29tcGlsZXJJbmZvKCksCisgICAgICAgICAgbWFpbjogZm4KKyAgICAgICAgfTsKKwor
ICAgICAgICBpZiAodGhpcy5kZWNvcmF0b3JzKSB7CisgICAgICAgICAgcmV0Lm1haW5fZCA9IHRo
aXMuZGVjb3JhdG9yczsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBjYW1lbGNhc2UKKyAgICAgICAg
ICByZXQudXNlRGVjb3JhdG9ycyA9IHRydWU7CisgICAgICAgIH0KKworICAgICAgICB2YXIgX2Nv
bnRleHQgPSB0aGlzLmNvbnRleHQ7CisgICAgICAgIHZhciBwcm9ncmFtcyA9IF9jb250ZXh0LnBy
b2dyYW1zOworICAgICAgICB2YXIgZGVjb3JhdG9ycyA9IF9jb250ZXh0LmRlY29yYXRvcnM7CisK
KyAgICAgICAgZm9yIChpID0gMCwgbCA9IHByb2dyYW1zLmxlbmd0aDsgaSA8IGw7IGkrKykgewor
ICAgICAgICAgIGlmIChwcm9ncmFtc1tpXSkgeworICAgICAgICAgICAgcmV0W2ldID0gcHJvZ3Jh
bXNbaV07CisgICAgICAgICAgICBpZiAoZGVjb3JhdG9yc1tpXSkgeworICAgICAgICAgICAgICBy
ZXRbaSArICdfZCddID0gZGVjb3JhdG9yc1tpXTsKKyAgICAgICAgICAgICAgcmV0LnVzZURlY29y
YXRvcnMgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorCisg
ICAgICAgIGlmICh0aGlzLmVudmlyb25tZW50LnVzZVBhcnRpYWwpIHsKKyAgICAgICAgICByZXQu
dXNlUGFydGlhbCA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5k
YXRhKSB7CisgICAgICAgICAgcmV0LnVzZURhdGEgPSB0cnVlOworICAgICAgICB9CisgICAgICAg
IGlmICh0aGlzLnVzZURlcHRocykgeworICAgICAgICAgIHJldC51c2VEZXB0aHMgPSB0cnVlOwor
ICAgICAgICB9CisgICAgICAgIGlmICh0aGlzLnVzZUJsb2NrUGFyYW1zKSB7CisgICAgICAgICAg
cmV0LnVzZUJsb2NrUGFyYW1zID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAodGhpcy5v
cHRpb25zLmNvbXBhdCkgeworICAgICAgICAgIHJldC5jb21wYXQgPSB0cnVlOworICAgICAgICB9
CisKKyAgICAgICAgaWYgKCFhc09iamVjdCkgeworICAgICAgICAgIHJldC5jb21waWxlciA9IEpT
T04uc3RyaW5naWZ5KHJldC5jb21waWxlcik7CisKKyAgICAgICAgICB0aGlzLnNvdXJjZS5jdXJy
ZW50TG9jYXRpb24gPSB7IHN0YXJ0OiB7IGxpbmU6IDEsIGNvbHVtbjogMCB9IH07CisgICAgICAg
ICAgcmV0ID0gdGhpcy5vYmplY3RMaXRlcmFsKHJldCk7CisKKyAgICAgICAgICBpZiAob3B0aW9u
cy5zcmNOYW1lKSB7CisgICAgICAgICAgICByZXQgPSByZXQudG9TdHJpbmdXaXRoU291cmNlTWFw
KHsgZmlsZTogb3B0aW9ucy5kZXN0TmFtZSB9KTsKKyAgICAgICAgICAgIHJldC5tYXAgPSByZXQu
bWFwICYmIHJldC5tYXAudG9TdHJpbmcoKTsKKyAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgcmV0ID0gcmV0LnRvU3RyaW5nKCk7CisgICAgICAgICAgfQorICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgIHJldC5jb21waWxlck9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7CisgICAgICAgIH0K
KworICAgICAgICByZXR1cm4gcmV0OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIGZu
OworICAgICAgfQorICAgIH0sCisKKyAgICBwcmVhbWJsZTogZnVuY3Rpb24gcHJlYW1ibGUoKSB7
CisgICAgICAvLyB0cmFjayB0aGUgbGFzdCBjb250ZXh0IHB1c2hlZCBpbnRvIHBsYWNlIHRvIGFs
bG93IHNraXBwaW5nIHRoZQorICAgICAgLy8gZ2V0Q29udGV4dCBvcGNvZGUgd2hlbiBpdCB3b3Vs
ZCBiZSBhIG5vb3AKKyAgICAgIHRoaXMubGFzdENvbnRleHQgPSAwOworICAgICAgdGhpcy5zb3Vy
Y2UgPSBuZXcgX0NvZGVHZW5bJ2RlZmF1bHQnXSh0aGlzLm9wdGlvbnMuc3JjTmFtZSk7CisgICAg
ICB0aGlzLmRlY29yYXRvcnMgPSBuZXcgX0NvZGVHZW5bJ2RlZmF1bHQnXSh0aGlzLm9wdGlvbnMu
c3JjTmFtZSk7CisgICAgfSwKKworICAgIGNyZWF0ZUZ1bmN0aW9uQ29udGV4dDogZnVuY3Rpb24g
Y3JlYXRlRnVuY3Rpb25Db250ZXh0KGFzT2JqZWN0KSB7CisgICAgICB2YXIgdmFyRGVjbGFyYXRp
b25zID0gJyc7CisKKyAgICAgIHZhciBsb2NhbHMgPSB0aGlzLnN0YWNrVmFycy5jb25jYXQodGhp
cy5yZWdpc3RlcnMubGlzdCk7CisgICAgICBpZiAobG9jYWxzLmxlbmd0aCA+IDApIHsKKyAgICAg
ICAgdmFyRGVjbGFyYXRpb25zICs9ICcsICcgKyBsb2NhbHMuam9pbignLCAnKTsKKyAgICAgIH0K
KworICAgICAgLy8gR2VuZXJhdGUgbWluaW1pemVyIGFsaWFzIG1hcHBpbmdzCisgICAgICAvLwor
ICAgICAgLy8gV2hlbiB1c2luZyB0cnVlIFNvdXJjZU5vZGVzLCB0aGlzIHdpbGwgdXBkYXRlIGFs
bCByZWZlcmVuY2VzIHRvIHRoZSBnaXZlbiBhbGlhcworICAgICAgLy8gYXMgdGhlIHNvdXJjZSBu
b2RlcyBhcmUgcmV1c2VkIGluIHNpdHUuIEZvciB0aGUgbm9uLXNvdXJjZSBub2RlIGNvbXBpbGF0
aW9uIG1vZGUsCisgICAgICAvLyBhbGlhc2VzIHdpbGwgbm90IGJlIHVzZWQsIGJ1dCB0aGlzIGNh
c2UgaXMgYWxyZWFkeSBiZWluZyBydW4gb24gdGhlIGNsaWVudCBhbmQKKyAgICAgIC8vIHdlIGFy
ZW4ndCBjb25jZXJuIGFib3V0IG1pbmltaXppbmcgdGhlIHRlbXBsYXRlIHNpemUuCisgICAgICB2
YXIgYWxpYXNDb3VudCA9IDA7CisgICAgICBmb3IgKHZhciBhbGlhcyBpbiB0aGlzLmFsaWFzZXMp
IHsKKyAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbGluZSBndWFyZC1mb3ItaW4KKyAgICAgICAg
dmFyIG5vZGUgPSB0aGlzLmFsaWFzZXNbYWxpYXNdOworCisgICAgICAgIGlmICh0aGlzLmFsaWFz
ZXMuaGFzT3duUHJvcGVydHkoYWxpYXMpICYmIG5vZGUuY2hpbGRyZW4gJiYgbm9kZS5yZWZlcmVu
Y2VDb3VudCA+IDEpIHsKKyAgICAgICAgICB2YXJEZWNsYXJhdGlvbnMgKz0gJywgYWxpYXMnICsg
KythbGlhc0NvdW50ICsgJz0nICsgYWxpYXM7CisgICAgICAgICAgbm9kZS5jaGlsZHJlblswXSA9
ICdhbGlhcycgKyBhbGlhc0NvdW50OworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIHZhciBw
YXJhbXMgPSBbJ2NvbnRhaW5lcicsICdkZXB0aDAnLCAnaGVscGVycycsICdwYXJ0aWFscycsICdk
YXRhJ107CisKKyAgICAgIGlmICh0aGlzLnVzZUJsb2NrUGFyYW1zIHx8IHRoaXMudXNlRGVwdGhz
KSB7CisgICAgICAgIHBhcmFtcy5wdXNoKCdibG9ja1BhcmFtcycpOworICAgICAgfQorICAgICAg
aWYgKHRoaXMudXNlRGVwdGhzKSB7CisgICAgICAgIHBhcmFtcy5wdXNoKCdkZXB0aHMnKTsKKyAg
ICAgIH0KKworICAgICAgLy8gUGVyZm9ybSBhIHNlY29uZCBwYXNzIG92ZXIgdGhlIG91dHB1dCB0
byBtZXJnZSBjb250ZW50IHdoZW4gcG9zc2libGUKKyAgICAgIHZhciBzb3VyY2UgPSB0aGlzLm1l
cmdlU291cmNlKHZhckRlY2xhcmF0aW9ucyk7CisKKyAgICAgIGlmIChhc09iamVjdCkgeworICAg
ICAgICBwYXJhbXMucHVzaChzb3VyY2UpOworCisgICAgICAgIHJldHVybiBGdW5jdGlvbi5hcHBs
eSh0aGlzLCBwYXJhbXMpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuc291
cmNlLndyYXAoWydmdW5jdGlvbignLCBwYXJhbXMuam9pbignLCcpLCAnKSB7XG4gICcsIHNvdXJj
ZSwgJ30nXSk7CisgICAgICB9CisgICAgfSwKKyAgICBtZXJnZVNvdXJjZTogZnVuY3Rpb24gbWVy
Z2VTb3VyY2UodmFyRGVjbGFyYXRpb25zKSB7CisgICAgICB2YXIgaXNTaW1wbGUgPSB0aGlzLmVu
dmlyb25tZW50LmlzU2ltcGxlLAorICAgICAgICAgIGFwcGVuZE9ubHkgPSAhdGhpcy5mb3JjZUJ1
ZmZlciwKKyAgICAgICAgICBhcHBlbmRGaXJzdCA9IHVuZGVmaW5lZCwKKyAgICAgICAgICBzb3Vy
Y2VTZWVuID0gdW5kZWZpbmVkLAorICAgICAgICAgIGJ1ZmZlclN0YXJ0ID0gdW5kZWZpbmVkLAor
ICAgICAgICAgIGJ1ZmZlckVuZCA9IHVuZGVmaW5lZDsKKyAgICAgIHRoaXMuc291cmNlLmVhY2go
ZnVuY3Rpb24gKGxpbmUpIHsKKyAgICAgICAgaWYgKGxpbmUuYXBwZW5kVG9CdWZmZXIpIHsKKyAg
ICAgICAgICBpZiAoYnVmZmVyU3RhcnQpIHsKKyAgICAgICAgICAgIGxpbmUucHJlcGVuZCgnICAr
ICcpOworICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBidWZmZXJTdGFydCA9IGxpbmU7
CisgICAgICAgICAgfQorICAgICAgICAgIGJ1ZmZlckVuZCA9IGxpbmU7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgaWYgKGJ1ZmZlclN0YXJ0KSB7CisgICAgICAgICAgICBpZiAoIXNvdXJj
ZVNlZW4pIHsKKyAgICAgICAgICAgICAgYXBwZW5kRmlyc3QgPSB0cnVlOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgYnVmZmVyU3RhcnQucHJlcGVuZCgnYnVmZmVyICs9ICcp
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnVmZmVyRW5kLmFkZCgnOycpOworICAgICAg
ICAgICAgYnVmZmVyU3RhcnQgPSBidWZmZXJFbmQgPSB1bmRlZmluZWQ7CisgICAgICAgICAgfQor
CisgICAgICAgICAgc291cmNlU2VlbiA9IHRydWU7CisgICAgICAgICAgaWYgKCFpc1NpbXBsZSkg
eworICAgICAgICAgICAgYXBwZW5kT25seSA9IGZhbHNlOworICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgfSk7CisKKyAgICAgIGlmIChhcHBlbmRPbmx5KSB7CisgICAgICAgIGlmIChidWZm
ZXJTdGFydCkgeworICAgICAgICAgIGJ1ZmZlclN0YXJ0LnByZXBlbmQoJ3JldHVybiAnKTsKKyAg
ICAgICAgICBidWZmZXJFbmQuYWRkKCc7Jyk7CisgICAgICAgIH0gZWxzZSBpZiAoIXNvdXJjZVNl
ZW4pIHsKKyAgICAgICAgICB0aGlzLnNvdXJjZS5wdXNoKCdyZXR1cm4gIiI7Jyk7CisgICAgICAg
IH0KKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHZhckRlY2xhcmF0aW9ucyArPSAnLCBidWZmZXIg
PSAnICsgKGFwcGVuZEZpcnN0ID8gJycgOiB0aGlzLmluaXRpYWxpemVCdWZmZXIoKSk7CisKKyAg
ICAgICAgaWYgKGJ1ZmZlclN0YXJ0KSB7CisgICAgICAgICAgYnVmZmVyU3RhcnQucHJlcGVuZCgn
cmV0dXJuIGJ1ZmZlciArICcpOworICAgICAgICAgIGJ1ZmZlckVuZC5hZGQoJzsnKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICB0aGlzLnNvdXJjZS5wdXNoKCdyZXR1cm4gYnVmZmVyOycp
OworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIGlmICh2YXJEZWNsYXJhdGlvbnMpIHsKKyAg
ICAgICAgdGhpcy5zb3VyY2UucHJlcGVuZCgndmFyICcgKyB2YXJEZWNsYXJhdGlvbnMuc3Vic3Ry
aW5nKDIpICsgKGFwcGVuZEZpcnN0ID8gJycgOiAnO1xuJykpOworICAgICAgfQorCisgICAgICBy
ZXR1cm4gdGhpcy5zb3VyY2UubWVyZ2UoKTsKKyAgICB9LAorCisgICAgLy8gW2Jsb2NrVmFsdWVd
CisgICAgLy8KKyAgICAvLyBPbiBzdGFjaywgYmVmb3JlOiBoYXNoLCBpbnZlcnNlLCBwcm9ncmFt
LCB2YWx1ZQorICAgIC8vIE9uIHN0YWNrLCBhZnRlcjogcmV0dXJuIHZhbHVlIG9mIGJsb2NrSGVs
cGVyTWlzc2luZworICAgIC8vCisgICAgLy8gVGhlIHB1cnBvc2Ugb2YgdGhpcyBvcGNvZGUgaXMg
dG8gdGFrZSBhIGJsb2NrIG9mIHRoZSBmb3JtCisgICAgLy8gYHt7I3RoaXMuZm9vfX0uLi57ey90
aGlzLmZvb319YCwgcmVzb2x2ZSB0aGUgdmFsdWUgb2YgYGZvb2AsIGFuZAorICAgIC8vIHJlcGxh
Y2UgaXQgb24gdGhlIHN0YWNrIHdpdGggdGhlIHJlc3VsdCBvZiBwcm9wZXJseQorICAgIC8vIGlu
dm9raW5nIGJsb2NrSGVscGVyTWlzc2luZy4KKyAgICBibG9ja1ZhbHVlOiBmdW5jdGlvbiBibG9j
a1ZhbHVlKG5hbWUpIHsKKyAgICAgIHZhciBibG9ja0hlbHBlck1pc3NpbmcgPSB0aGlzLmFsaWFz
YWJsZSgnaGVscGVycy5ibG9ja0hlbHBlck1pc3NpbmcnKSwKKyAgICAgICAgICBwYXJhbXMgPSBb
dGhpcy5jb250ZXh0TmFtZSgwKV07CisgICAgICB0aGlzLnNldHVwSGVscGVyQXJncyhuYW1lLCAw
LCBwYXJhbXMpOworCisgICAgICB2YXIgYmxvY2tOYW1lID0gdGhpcy5wb3BTdGFjaygpOworICAg
ICAgcGFyYW1zLnNwbGljZSgxLCAwLCBibG9ja05hbWUpOworCisgICAgICB0aGlzLnB1c2godGhp
cy5zb3VyY2UuZnVuY3Rpb25DYWxsKGJsb2NrSGVscGVyTWlzc2luZywgJ2NhbGwnLCBwYXJhbXMp
KTsKKyAgICB9LAorCisgICAgLy8gW2FtYmlndW91c0Jsb2NrVmFsdWVdCisgICAgLy8KKyAgICAv
LyBPbiBzdGFjaywgYmVmb3JlOiBoYXNoLCBpbnZlcnNlLCBwcm9ncmFtLCB2YWx1ZQorICAgIC8v
IENvbXBpbGVyIHZhbHVlLCBiZWZvcmU6IGxhc3RIZWxwZXI9dmFsdWUgb2YgbGFzdCBmb3VuZCBo
ZWxwZXIsIGlmIGFueQorICAgIC8vIE9uIHN0YWNrLCBhZnRlciwgaWYgbm8gbGFzdEhlbHBlcjog
c2FtZSBhcyBbYmxvY2tWYWx1ZV0KKyAgICAvLyBPbiBzdGFjaywgYWZ0ZXIsIGlmIGxhc3RIZWxw
ZXI6IHZhbHVlCisgICAgYW1iaWd1b3VzQmxvY2tWYWx1ZTogZnVuY3Rpb24gYW1iaWd1b3VzQmxv
Y2tWYWx1ZSgpIHsKKyAgICAgIC8vIFdlJ3JlIGJlaW5nIGEgYml0IGNoZWVreSBhbmQgcmV1c2lu
ZyB0aGUgb3B0aW9ucyB2YWx1ZSBmcm9tIHRoZSBwcmlvciBleGVjCisgICAgICB2YXIgYmxvY2tI
ZWxwZXJNaXNzaW5nID0gdGhpcy5hbGlhc2FibGUoJ2hlbHBlcnMuYmxvY2tIZWxwZXJNaXNzaW5n
JyksCisgICAgICAgICAgcGFyYW1zID0gW3RoaXMuY29udGV4dE5hbWUoMCldOworICAgICAgdGhp
cy5zZXR1cEhlbHBlckFyZ3MoJycsIDAsIHBhcmFtcywgdHJ1ZSk7CisKKyAgICAgIHRoaXMuZmx1
c2hJbmxpbmUoKTsKKworICAgICAgdmFyIGN1cnJlbnQgPSB0aGlzLnRvcFN0YWNrKCk7CisgICAg
ICBwYXJhbXMuc3BsaWNlKDEsIDAsIGN1cnJlbnQpOworCisgICAgICB0aGlzLnB1c2hTb3VyY2Uo
WydpZiAoIScsIHRoaXMubGFzdEhlbHBlciwgJykgeyAnLCBjdXJyZW50LCAnID0gJywgdGhpcy5z
b3VyY2UuZnVuY3Rpb25DYWxsKGJsb2NrSGVscGVyTWlzc2luZywgJ2NhbGwnLCBwYXJhbXMpLCAn
fSddKTsKKyAgICB9LAorCisgICAgLy8gW2FwcGVuZENvbnRlbnRdCisgICAgLy8KKyAgICAvLyBP
biBzdGFjaywgYmVmb3JlOiAuLi4KKyAgICAvLyBPbiBzdGFjaywgYWZ0ZXI6IC4uLgorICAgIC8v
CisgICAgLy8gQXBwZW5kcyB0aGUgc3RyaW5nIHZhbHVlIG9mIGBjb250ZW50YCB0byB0aGUgY3Vy
cmVudCBidWZmZXIKKyAgICBhcHBlbmRDb250ZW50OiBmdW5jdGlvbiBhcHBlbmRDb250ZW50KGNv
bnRlbnQpIHsKKyAgICAgIGlmICh0aGlzLnBlbmRpbmdDb250ZW50KSB7CisgICAgICAgIGNvbnRl
bnQgPSB0aGlzLnBlbmRpbmdDb250ZW50ICsgY29udGVudDsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHRoaXMucGVuZGluZ0xvY2F0aW9uID0gdGhpcy5zb3VyY2UuY3VycmVudExvY2F0aW9uOwor
ICAgICAgfQorCisgICAgICB0aGlzLnBlbmRpbmdDb250ZW50ID0gY29udGVudDsKKyAgICB9LAor
CisgICAgLy8gW2FwcGVuZF0KKyAgICAvLworICAgIC8vIE9uIHN0YWNrLCBiZWZvcmU6IHZhbHVl
LCAuLi4KKyAgICAvLyBPbiBzdGFjaywgYWZ0ZXI6IC4uLgorICAgIC8vCisgICAgLy8gQ29lcmNl
cyBgdmFsdWVgIHRvIGEgU3RyaW5nIGFuZCBhcHBlbmRzIGl0IHRvIHRoZSBjdXJyZW50IGJ1ZmZl
ci4KKyAgICAvLworICAgIC8vIElmIGB2YWx1ZWAgaXMgdHJ1dGh5LCBvciAwLCBpdCBpcyBjb2Vy
Y2VkIGludG8gYSBzdHJpbmcgYW5kIGFwcGVuZGVkCisgICAgLy8gT3RoZXJ3aXNlLCB0aGUgZW1w
dHkgc3RyaW5nIGlzIGFwcGVuZGVkCisgICAgYXBwZW5kOiBmdW5jdGlvbiBhcHBlbmQoKSB7Cisg
ICAgICBpZiAodGhpcy5pc0lubGluZSgpKSB7CisgICAgICAgIHRoaXMucmVwbGFjZVN0YWNrKGZ1
bmN0aW9uIChjdXJyZW50KSB7CisgICAgICAgICAgcmV0dXJuIFsnICE9IG51bGwgPyAnLCBjdXJy
ZW50LCAnIDogIiInXTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgdGhpcy5wdXNoU291cmNlKHRo
aXMuYXBwZW5kVG9CdWZmZXIodGhpcy5wb3BTdGFjaygpKSk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICB2YXIgbG9jYWwgPSB0aGlzLnBvcFN0YWNrKCk7CisgICAgICAgIHRoaXMucHVzaFNvdXJj
ZShbJ2lmICgnLCBsb2NhbCwgJyAhPSBudWxsKSB7ICcsIHRoaXMuYXBwZW5kVG9CdWZmZXIobG9j
YWwsIHVuZGVmaW5lZCwgdHJ1ZSksICcgfSddKTsKKyAgICAgICAgaWYgKHRoaXMuZW52aXJvbm1l
bnQuaXNTaW1wbGUpIHsKKyAgICAgICAgICB0aGlzLnB1c2hTb3VyY2UoWydlbHNlIHsgJywgdGhp
cy5hcHBlbmRUb0J1ZmZlcigiJyciLCB1bmRlZmluZWQsIHRydWUpLCAnIH0nXSk7CisgICAgICAg
IH0KKyAgICAgIH0KKyAgICB9LAorCisgICAgLy8gW2FwcGVuZEVzY2FwZWRdCisgICAgLy8KKyAg
ICAvLyBPbiBzdGFjaywgYmVmb3JlOiB2YWx1ZSwgLi4uCisgICAgLy8gT24gc3RhY2ssIGFmdGVy
OiAuLi4KKyAgICAvLworICAgIC8vIEVzY2FwZSBgdmFsdWVgIGFuZCBhcHBlbmQgaXQgdG8gdGhl
IGJ1ZmZlcgorICAgIGFwcGVuZEVzY2FwZWQ6IGZ1bmN0aW9uIGFwcGVuZEVzY2FwZWQoKSB7Cisg
ICAgICB0aGlzLnB1c2hTb3VyY2UodGhpcy5hcHBlbmRUb0J1ZmZlcihbdGhpcy5hbGlhc2FibGUo
J2NvbnRhaW5lci5lc2NhcGVFeHByZXNzaW9uJyksICcoJywgdGhpcy5wb3BTdGFjaygpLCAnKSdd
KSk7CisgICAgfSwKKworICAgIC8vIFtnZXRDb250ZXh0XQorICAgIC8vCisgICAgLy8gT24gc3Rh
Y2ssIGJlZm9yZTogLi4uCisgICAgLy8gT24gc3RhY2ssIGFmdGVyOiAuLi4KKyAgICAvLyBDb21w
aWxlciB2YWx1ZSwgYWZ0ZXI6IGxhc3RDb250ZXh0PWRlcHRoCisgICAgLy8KKyAgICAvLyBTZXQg
dGhlIHZhbHVlIG9mIHRoZSBgbGFzdENvbnRleHRgIGNvbXBpbGVyIHZhbHVlIHRvIHRoZSBkZXB0
aAorICAgIGdldENvbnRleHQ6IGZ1bmN0aW9uIGdldENvbnRleHQoZGVwdGgpIHsKKyAgICAgIHRo
aXMubGFzdENvbnRleHQgPSBkZXB0aDsKKyAgICB9LAorCisgICAgLy8gW3B1c2hDb250ZXh0XQor
ICAgIC8vCisgICAgLy8gT24gc3RhY2ssIGJlZm9yZTogLi4uCisgICAgLy8gT24gc3RhY2ssIGFm
dGVyOiBjdXJyZW50Q29udGV4dCwgLi4uCisgICAgLy8KKyAgICAvLyBQdXNoZXMgdGhlIHZhbHVl
IG9mIHRoZSBjdXJyZW50IGNvbnRleHQgb250byB0aGUgc3RhY2suCisgICAgcHVzaENvbnRleHQ6
IGZ1bmN0aW9uIHB1c2hDb250ZXh0KCkgeworICAgICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFsKHRo
aXMuY29udGV4dE5hbWUodGhpcy5sYXN0Q29udGV4dCkpOworICAgIH0sCisKKyAgICAvLyBbbG9v
a3VwT25Db250ZXh0XQorICAgIC8vCisgICAgLy8gT24gc3RhY2ssIGJlZm9yZTogLi4uCisgICAg
Ly8gT24gc3RhY2ssIGFmdGVyOiBjdXJyZW50Q29udGV4dFtuYW1lXSwgLi4uCisgICAgLy8KKyAg
ICAvLyBMb29rcyB1cCB0aGUgdmFsdWUgb2YgYG5hbWVgIG9uIHRoZSBjdXJyZW50IGNvbnRleHQg
YW5kIHB1c2hlcworICAgIC8vIGl0IG9udG8gdGhlIHN0YWNrLgorICAgIGxvb2t1cE9uQ29udGV4
dDogZnVuY3Rpb24gbG9va3VwT25Db250ZXh0KHBhcnRzLCBmYWxzeSwgc3RyaWN0LCBzY29wZWQp
IHsKKyAgICAgIHZhciBpID0gMDsKKworICAgICAgaWYgKCFzY29wZWQgJiYgdGhpcy5vcHRpb25z
LmNvbXBhdCAmJiAhdGhpcy5sYXN0Q29udGV4dCkgeworICAgICAgICAvLyBUaGUgZGVwdGhlZCBx
dWVyeSBpcyBleHBlY3RlZCB0byBoYW5kbGUgdGhlIHVuZGVmaW5lZCBsb2dpYyBmb3IgdGhlIHJv
b3QgbGV2ZWwgdGhhdAorICAgICAgICAvLyBpcyBpbXBsZW1lbnRlZCBiZWxvdywgc28gd2UgZXZh
bHVhdGUgdGhhdCBkaXJlY3RseSBpbiBjb21wYXQgbW9kZQorICAgICAgICB0aGlzLnB1c2godGhp
cy5kZXB0aGVkTG9va3VwKHBhcnRzW2krK10pKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHRo
aXMucHVzaENvbnRleHQoKTsKKyAgICAgIH0KKworICAgICAgdGhpcy5yZXNvbHZlUGF0aCgnY29u
dGV4dCcsIHBhcnRzLCBpLCBmYWxzeSwgc3RyaWN0KTsKKyAgICB9LAorCisgICAgLy8gW2xvb2t1
cEJsb2NrUGFyYW1dCisgICAgLy8KKyAgICAvLyBPbiBzdGFjaywgYmVmb3JlOiAuLi4KKyAgICAv
LyBPbiBzdGFjaywgYWZ0ZXI6IGJsb2NrUGFyYW1bbmFtZV0sIC4uLgorICAgIC8vCisgICAgLy8g
TG9va3MgdXAgdGhlIHZhbHVlIG9mIGBwYXJ0c2Agb24gdGhlIGdpdmVuIGJsb2NrIHBhcmFtIGFu
ZCBwdXNoZXMKKyAgICAvLyBpdCBvbnRvIHRoZSBzdGFjay4KKyAgICBsb29rdXBCbG9ja1BhcmFt
OiBmdW5jdGlvbiBsb29rdXBCbG9ja1BhcmFtKGJsb2NrUGFyYW1JZCwgcGFydHMpIHsKKyAgICAg
IHRoaXMudXNlQmxvY2tQYXJhbXMgPSB0cnVlOworCisgICAgICB0aGlzLnB1c2goWydibG9ja1Bh
cmFtc1snLCBibG9ja1BhcmFtSWRbMF0sICddWycsIGJsb2NrUGFyYW1JZFsxXSwgJ10nXSk7Cisg
ICAgICB0aGlzLnJlc29sdmVQYXRoKCdjb250ZXh0JywgcGFydHMsIDEpOworICAgIH0sCisKKyAg
ICAvLyBbbG9va3VwRGF0YV0KKyAgICAvLworICAgIC8vIE9uIHN0YWNrLCBiZWZvcmU6IC4uLgor
ICAgIC8vIE9uIHN0YWNrLCBhZnRlcjogZGF0YSwgLi4uCisgICAgLy8KKyAgICAvLyBQdXNoIHRo
ZSBkYXRhIGxvb2t1cCBvcGVyYXRvcgorICAgIGxvb2t1cERhdGE6IGZ1bmN0aW9uIGxvb2t1cERh
dGEoZGVwdGgsIHBhcnRzLCBzdHJpY3QpIHsKKyAgICAgIGlmICghZGVwdGgpIHsKKyAgICAgICAg
dGhpcy5wdXNoU3RhY2tMaXRlcmFsKCdkYXRhJyk7CisgICAgICB9IGVsc2UgeworICAgICAgICB0
aGlzLnB1c2hTdGFja0xpdGVyYWwoJ2NvbnRhaW5lci5kYXRhKGRhdGEsICcgKyBkZXB0aCArICcp
Jyk7CisgICAgICB9CisKKyAgICAgIHRoaXMucmVzb2x2ZVBhdGgoJ2RhdGEnLCBwYXJ0cywgMCwg
dHJ1ZSwgc3RyaWN0KTsKKyAgICB9LAorCisgICAgcmVzb2x2ZVBhdGg6IGZ1bmN0aW9uIHJlc29s
dmVQYXRoKHR5cGUsIHBhcnRzLCBpLCBmYWxzeSwgc3RyaWN0KSB7CisgICAgICAvLyBpc3RhbmJ1
bCBpZ25vcmUgbmV4dAorCisgICAgICB2YXIgX3RoaXMgPSB0aGlzOworCisgICAgICBpZiAodGhp
cy5vcHRpb25zLnN0cmljdCB8fCB0aGlzLm9wdGlvbnMuYXNzdW1lT2JqZWN0cykgeworICAgICAg
ICB0aGlzLnB1c2goc3RyaWN0TG9va3VwKHRoaXMub3B0aW9ucy5zdHJpY3QgJiYgc3RyaWN0LCB0
aGlzLCBwYXJ0cywgdHlwZSkpOworICAgICAgICByZXR1cm47CisgICAgICB9CisKKyAgICAgIHZh
ciBsZW4gPSBwYXJ0cy5sZW5ndGg7CisgICAgICBmb3IgKDsgaSA8IGxlbjsgaSsrKSB7CisgICAg
ICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLWxvb3AtZnVuYyAqLworICAgICAgICB0aGlzLnJlcGxh
Y2VTdGFjayhmdW5jdGlvbiAoY3VycmVudCkgeworICAgICAgICAgIHZhciBsb29rdXAgPSBfdGhp
cy5uYW1lTG9va3VwKGN1cnJlbnQsIHBhcnRzW2ldLCB0eXBlKTsKKyAgICAgICAgICAvLyBXZSB3
YW50IHRvIGVuc3VyZSB0aGF0IHplcm8gYW5kIGZhbHNlIGFyZSBoYW5kbGVkIHByb3Blcmx5IGlm
IHRoZSBjb250ZXh0IChmYWxzeSBmbGFnKQorICAgICAgICAgIC8vIG5lZWRzIHRvIGhhdmUgdGhl
IHNwZWNpYWwgaGFuZGxpbmcgZm9yIHRoZXNlIHZhbHVlcy4KKyAgICAgICAgICBpZiAoIWZhbHN5
KSB7CisgICAgICAgICAgICByZXR1cm4gWycgIT0gbnVsbCA/ICcsIGxvb2t1cCwgJyA6ICcsIGN1
cnJlbnRdOworICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBPdGhlcndpc2Ugd2Ug
Y2FuIHVzZSBnZW5lcmljIGZhbHN5IGhhbmRsaW5nCisgICAgICAgICAgICByZXR1cm4gWycgJiYg
JywgbG9va3VwXTsKKyAgICAgICAgICB9CisgICAgICAgIH0pOworICAgICAgICAvKiBlc2xpbnQt
ZW5hYmxlIG5vLWxvb3AtZnVuYyAqLworICAgICAgfQorICAgIH0sCisKKyAgICAvLyBbcmVzb2x2
ZVBvc3NpYmxlTGFtYmRhXQorICAgIC8vCisgICAgLy8gT24gc3RhY2ssIGJlZm9yZTogdmFsdWUs
IC4uLgorICAgIC8vIE9uIHN0YWNrLCBhZnRlcjogcmVzb2x2ZWQgdmFsdWUsIC4uLgorICAgIC8v
CisgICAgLy8gSWYgdGhlIGB2YWx1ZWAgaXMgYSBsYW1iZGEsIHJlcGxhY2UgaXQgb24gdGhlIHN0
YWNrIGJ5CisgICAgLy8gdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgbGFtYmRhCisgICAgcmVzb2x2
ZVBvc3NpYmxlTGFtYmRhOiBmdW5jdGlvbiByZXNvbHZlUG9zc2libGVMYW1iZGEoKSB7CisgICAg
ICB0aGlzLnB1c2goW3RoaXMuYWxpYXNhYmxlKCdjb250YWluZXIubGFtYmRhJyksICcoJywgdGhp
cy5wb3BTdGFjaygpLCAnLCAnLCB0aGlzLmNvbnRleHROYW1lKDApLCAnKSddKTsKKyAgICB9LAor
CisgICAgLy8gW3B1c2hTdHJpbmdQYXJhbV0KKyAgICAvLworICAgIC8vIE9uIHN0YWNrLCBiZWZv
cmU6IC4uLgorICAgIC8vIE9uIHN0YWNrLCBhZnRlcjogc3RyaW5nLCBjdXJyZW50Q29udGV4dCwg
Li4uCisgICAgLy8KKyAgICAvLyBUaGlzIG9wY29kZSBpcyBkZXNpZ25lZCBmb3IgdXNlIGluIHN0
cmluZyBtb2RlLCB3aGljaAorICAgIC8vIHByb3ZpZGVzIHRoZSBzdHJpbmcgdmFsdWUgb2YgYSBw
YXJhbWV0ZXIgYWxvbmcgd2l0aCBpdHMKKyAgICAvLyBkZXB0aCByYXRoZXIgdGhhbiByZXNvbHZp
bmcgaXQgaW1tZWRpYXRlbHkuCisgICAgcHVzaFN0cmluZ1BhcmFtOiBmdW5jdGlvbiBwdXNoU3Ry
aW5nUGFyYW0oc3RyaW5nLCB0eXBlKSB7CisgICAgICB0aGlzLnB1c2hDb250ZXh0KCk7CisgICAg
ICB0aGlzLnB1c2hTdHJpbmcodHlwZSk7CisKKyAgICAgIC8vIElmIGl0J3MgYSBzdWJleHByZXNz
aW9uLCB0aGUgc3RyaW5nIHJlc3VsdAorICAgICAgLy8gd2lsbCBiZSBwdXNoZWQgYWZ0ZXIgdGhp
cyBvcGNvZGUuCisgICAgICBpZiAodHlwZSAhPT0gJ1N1YkV4cHJlc3Npb24nKSB7CisgICAgICAg
IGlmICh0eXBlb2Ygc3RyaW5nID09PSAnc3RyaW5nJykgeworICAgICAgICAgIHRoaXMucHVzaFN0
cmluZyhzdHJpbmcpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIHRoaXMucHVzaFN0YWNr
TGl0ZXJhbChzdHJpbmcpOworICAgICAgICB9CisgICAgICB9CisgICAgfSwKKworICAgIGVtcHR5
SGFzaDogZnVuY3Rpb24gZW1wdHlIYXNoKG9taXRFbXB0eSkgeworICAgICAgaWYgKHRoaXMudHJh
Y2tJZHMpIHsKKyAgICAgICAgdGhpcy5wdXNoKCd7fScpOyAvLyBoYXNoSWRzCisgICAgICB9Cisg
ICAgICBpZiAodGhpcy5zdHJpbmdQYXJhbXMpIHsKKyAgICAgICAgdGhpcy5wdXNoKCd7fScpOyAv
LyBoYXNoQ29udGV4dHMKKyAgICAgICAgdGhpcy5wdXNoKCd7fScpOyAvLyBoYXNoVHlwZXMKKyAg
ICAgIH0KKyAgICAgIHRoaXMucHVzaFN0YWNrTGl0ZXJhbChvbWl0RW1wdHkgPyAndW5kZWZpbmVk
JyA6ICd7fScpOworICAgIH0sCisgICAgcHVzaEhhc2g6IGZ1bmN0aW9uIHB1c2hIYXNoKCkgewor
ICAgICAgaWYgKHRoaXMuaGFzaCkgeworICAgICAgICB0aGlzLmhhc2hlcy5wdXNoKHRoaXMuaGFz
aCk7CisgICAgICB9CisgICAgICB0aGlzLmhhc2ggPSB7IHZhbHVlczogW10sIHR5cGVzOiBbXSwg
Y29udGV4dHM6IFtdLCBpZHM6IFtdIH07CisgICAgfSwKKyAgICBwb3BIYXNoOiBmdW5jdGlvbiBw
b3BIYXNoKCkgeworICAgICAgdmFyIGhhc2ggPSB0aGlzLmhhc2g7CisgICAgICB0aGlzLmhhc2gg
PSB0aGlzLmhhc2hlcy5wb3AoKTsKKworICAgICAgaWYgKHRoaXMudHJhY2tJZHMpIHsKKyAgICAg
ICAgdGhpcy5wdXNoKHRoaXMub2JqZWN0TGl0ZXJhbChoYXNoLmlkcykpOworICAgICAgfQorICAg
ICAgaWYgKHRoaXMuc3RyaW5nUGFyYW1zKSB7CisgICAgICAgIHRoaXMucHVzaCh0aGlzLm9iamVj
dExpdGVyYWwoaGFzaC5jb250ZXh0cykpOworICAgICAgICB0aGlzLnB1c2godGhpcy5vYmplY3RM
aXRlcmFsKGhhc2gudHlwZXMpKTsKKyAgICAgIH0KKworICAgICAgdGhpcy5wdXNoKHRoaXMub2Jq
ZWN0TGl0ZXJhbChoYXNoLnZhbHVlcykpOworICAgIH0sCisKKyAgICAvLyBbcHVzaFN0cmluZ10K
KyAgICAvLworICAgIC8vIE9uIHN0YWNrLCBiZWZvcmU6IC4uLgorICAgIC8vIE9uIHN0YWNrLCBh
ZnRlcjogcXVvdGVkU3RyaW5nKHN0cmluZyksIC4uLgorICAgIC8vCisgICAgLy8gUHVzaCBhIHF1
b3RlZCB2ZXJzaW9uIG9mIGBzdHJpbmdgIG9udG8gdGhlIHN0YWNrCisgICAgcHVzaFN0cmluZzog
ZnVuY3Rpb24gcHVzaFN0cmluZyhzdHJpbmcpIHsKKyAgICAgIHRoaXMucHVzaFN0YWNrTGl0ZXJh
bCh0aGlzLnF1b3RlZFN0cmluZyhzdHJpbmcpKTsKKyAgICB9LAorCisgICAgLy8gW3B1c2hMaXRl
cmFsXQorICAgIC8vCisgICAgLy8gT24gc3RhY2ssIGJlZm9yZTogLi4uCisgICAgLy8gT24gc3Rh
Y2ssIGFmdGVyOiB2YWx1ZSwgLi4uCisgICAgLy8KKyAgICAvLyBQdXNoZXMgYSB2YWx1ZSBvbnRv
IHRoZSBzdGFjay4gVGhpcyBvcGVyYXRpb24gcHJldmVudHMKKyAgICAvLyB0aGUgY29tcGlsZXIg
ZnJvbSBjcmVhdGluZyBhIHRlbXBvcmFyeSB2YXJpYWJsZSB0byBob2xkCisgICAgLy8gaXQuCisg
ICAgcHVzaExpdGVyYWw6IGZ1bmN0aW9uIHB1c2hMaXRlcmFsKHZhbHVlKSB7CisgICAgICB0aGlz
LnB1c2hTdGFja0xpdGVyYWwodmFsdWUpOworICAgIH0sCisKKyAgICAvLyBbcHVzaFByb2dyYW1d
CisgICAgLy8KKyAgICAvLyBPbiBzdGFjaywgYmVmb3JlOiAuLi4KKyAgICAvLyBPbiBzdGFjaywg
YWZ0ZXI6IHByb2dyYW0oZ3VpZCksIC4uLgorICAgIC8vCisgICAgLy8gUHVzaCBhIHByb2dyYW0g
ZXhwcmVzc2lvbiBvbnRvIHRoZSBzdGFjay4gVGhpcyB0YWtlcworICAgIC8vIGEgY29tcGlsZS10
aW1lIGd1aWQgYW5kIGNvbnZlcnRzIGl0IGludG8gYSBydW50aW1lLWFjY2Vzc2libGUKKyAgICAv
LyBleHByZXNzaW9uLgorICAgIHB1c2hQcm9ncmFtOiBmdW5jdGlvbiBwdXNoUHJvZ3JhbShndWlk
KSB7CisgICAgICBpZiAoZ3VpZCAhPSBudWxsKSB7CisgICAgICAgIHRoaXMucHVzaFN0YWNrTGl0
ZXJhbCh0aGlzLnByb2dyYW1FeHByZXNzaW9uKGd1aWQpKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHRoaXMucHVzaFN0YWNrTGl0ZXJhbChudWxsKTsKKyAgICAgIH0KKyAgICB9LAorCisgICAg
Ly8gW3JlZ2lzdGVyRGVjb3JhdG9yXQorICAgIC8vCisgICAgLy8gT24gc3RhY2ssIGJlZm9yZTog
aGFzaCwgcHJvZ3JhbSwgcGFyYW1zLi4uLCAuLi4KKyAgICAvLyBPbiBzdGFjaywgYWZ0ZXI6IC4u
LgorICAgIC8vCisgICAgLy8gUG9wcyBvZmYgdGhlIGRlY29yYXRvcidzIHBhcmFtZXRlcnMsIGlu
dm9rZXMgdGhlIGRlY29yYXRvciwKKyAgICAvLyBhbmQgaW5zZXJ0cyB0aGUgZGVjb3JhdG9yIGlu
dG8gdGhlIGRlY29yYXRvcnMgbGlzdC4KKyAgICByZWdpc3RlckRlY29yYXRvcjogZnVuY3Rpb24g
cmVnaXN0ZXJEZWNvcmF0b3IocGFyYW1TaXplLCBuYW1lKSB7CisgICAgICB2YXIgZm91bmREZWNv
cmF0b3IgPSB0aGlzLm5hbWVMb29rdXAoJ2RlY29yYXRvcnMnLCBuYW1lLCAnZGVjb3JhdG9yJyks
CisgICAgICAgICAgb3B0aW9ucyA9IHRoaXMuc2V0dXBIZWxwZXJBcmdzKG5hbWUsIHBhcmFtU2l6
ZSk7CisKKyAgICAgIHRoaXMuZGVjb3JhdG9ycy5wdXNoKFsnZm4gPSAnLCB0aGlzLmRlY29yYXRv
cnMuZnVuY3Rpb25DYWxsKGZvdW5kRGVjb3JhdG9yLCAnJywgWydmbicsICdwcm9wcycsICdjb250
YWluZXInLCBvcHRpb25zXSksICcgfHwgZm47J10pOworICAgIH0sCisKKyAgICAvLyBbaW52b2tl
SGVscGVyXQorICAgIC8vCisgICAgLy8gT24gc3RhY2ssIGJlZm9yZTogaGFzaCwgaW52ZXJzZSwg
cHJvZ3JhbSwgcGFyYW1zLi4uLCAuLi4KKyAgICAvLyBPbiBzdGFjaywgYWZ0ZXI6IHJlc3VsdCBv
ZiBoZWxwZXIgaW52b2NhdGlvbgorICAgIC8vCisgICAgLy8gUG9wcyBvZmYgdGhlIGhlbHBlcidz
IHBhcmFtZXRlcnMsIGludm9rZXMgdGhlIGhlbHBlciwKKyAgICAvLyBhbmQgcHVzaGVzIHRoZSBo
ZWxwZXIncyByZXR1cm4gdmFsdWUgb250byB0aGUgc3RhY2suCisgICAgLy8KKyAgICAvLyBJZiB0
aGUgaGVscGVyIGlzIG5vdCBmb3VuZCwgYGhlbHBlck1pc3NpbmdgIGlzIGNhbGxlZC4KKyAgICBp
bnZva2VIZWxwZXI6IGZ1bmN0aW9uIGludm9rZUhlbHBlcihwYXJhbVNpemUsIG5hbWUsIGlzU2lt
cGxlKSB7CisgICAgICB2YXIgbm9uSGVscGVyID0gdGhpcy5wb3BTdGFjaygpLAorICAgICAgICAg
IGhlbHBlciA9IHRoaXMuc2V0dXBIZWxwZXIocGFyYW1TaXplLCBuYW1lKSwKKyAgICAgICAgICBz
aW1wbGUgPSBpc1NpbXBsZSA/IFtoZWxwZXIubmFtZSwgJyB8fCAnXSA6ICcnOworCisgICAgICB2
YXIgbG9va3VwID0gWycoJ10uY29uY2F0KHNpbXBsZSwgbm9uSGVscGVyKTsKKyAgICAgIGlmICgh
dGhpcy5vcHRpb25zLnN0cmljdCkgeworICAgICAgICBsb29rdXAucHVzaCgnIHx8ICcsIHRoaXMu
YWxpYXNhYmxlKCdoZWxwZXJzLmhlbHBlck1pc3NpbmcnKSk7CisgICAgICB9CisgICAgICBsb29r
dXAucHVzaCgnKScpOworCisgICAgICB0aGlzLnB1c2godGhpcy5zb3VyY2UuZnVuY3Rpb25DYWxs
KGxvb2t1cCwgJ2NhbGwnLCBoZWxwZXIuY2FsbFBhcmFtcykpOworICAgIH0sCisKKyAgICAvLyBb
aW52b2tlS25vd25IZWxwZXJdCisgICAgLy8KKyAgICAvLyBPbiBzdGFjaywgYmVmb3JlOiBoYXNo
LCBpbnZlcnNlLCBwcm9ncmFtLCBwYXJhbXMuLi4sIC4uLgorICAgIC8vIE9uIHN0YWNrLCBhZnRl
cjogcmVzdWx0IG9mIGhlbHBlciBpbnZvY2F0aW9uCisgICAgLy8KKyAgICAvLyBUaGlzIG9wZXJh
dGlvbiBpcyB1c2VkIHdoZW4gdGhlIGhlbHBlciBpcyBrbm93biB0byBleGlzdCwKKyAgICAvLyBz
byBhIGBoZWxwZXJNaXNzaW5nYCBmYWxsYmFjayBpcyBub3QgcmVxdWlyZWQuCisgICAgaW52b2tl
S25vd25IZWxwZXI6IGZ1bmN0aW9uIGludm9rZUtub3duSGVscGVyKHBhcmFtU2l6ZSwgbmFtZSkg
eworICAgICAgdmFyIGhlbHBlciA9IHRoaXMuc2V0dXBIZWxwZXIocGFyYW1TaXplLCBuYW1lKTsK
KyAgICAgIHRoaXMucHVzaCh0aGlzLnNvdXJjZS5mdW5jdGlvbkNhbGwoaGVscGVyLm5hbWUsICdj
YWxsJywgaGVscGVyLmNhbGxQYXJhbXMpKTsKKyAgICB9LAorCisgICAgLy8gW2ludm9rZUFtYmln
dW91c10KKyAgICAvLworICAgIC8vIE9uIHN0YWNrLCBiZWZvcmU6IGhhc2gsIGludmVyc2UsIHBy
b2dyYW0sIHBhcmFtcy4uLiwgLi4uCisgICAgLy8gT24gc3RhY2ssIGFmdGVyOiByZXN1bHQgb2Yg
ZGlzYW1iaWd1YXRpb24KKyAgICAvLworICAgIC8vIFRoaXMgb3BlcmF0aW9uIGlzIHVzZWQgd2hl
biBhbiBleHByZXNzaW9uIGxpa2UgYHt7Zm9vfX1gCisgICAgLy8gaXMgcHJvdmlkZWQsIGJ1dCB3
ZSBkb24ndCBrbm93IGF0IGNvbXBpbGUtdGltZSB3aGV0aGVyIGl0CisgICAgLy8gaXMgYSBoZWxw
ZXIgb3IgYSBwYXRoLgorICAgIC8vCisgICAgLy8gVGhpcyBvcGVyYXRpb24gZW1pdHMgbW9yZSBj
b2RlIHRoYW4gdGhlIG90aGVyIG9wdGlvbnMsCisgICAgLy8gYW5kIGNhbiBiZSBhdm9pZGVkIGJ5
IHBhc3NpbmcgdGhlIGBrbm93bkhlbHBlcnNgIGFuZAorICAgIC8vIGBrbm93bkhlbHBlcnNPbmx5
YCBmbGFncyBhdCBjb21waWxlLXRpbWUuCisgICAgaW52b2tlQW1iaWd1b3VzOiBmdW5jdGlvbiBp
bnZva2VBbWJpZ3VvdXMobmFtZSwgaGVscGVyQ2FsbCkgeworICAgICAgdGhpcy51c2VSZWdpc3Rl
cignaGVscGVyJyk7CisKKyAgICAgIHZhciBub25IZWxwZXIgPSB0aGlzLnBvcFN0YWNrKCk7CisK
KyAgICAgIHRoaXMuZW1wdHlIYXNoKCk7CisgICAgICB2YXIgaGVscGVyID0gdGhpcy5zZXR1cEhl
bHBlcigwLCBuYW1lLCBoZWxwZXJDYWxsKTsKKworICAgICAgdmFyIGhlbHBlck5hbWUgPSB0aGlz
Lmxhc3RIZWxwZXIgPSB0aGlzLm5hbWVMb29rdXAoJ2hlbHBlcnMnLCBuYW1lLCAnaGVscGVyJyk7
CisKKyAgICAgIHZhciBsb29rdXAgPSBbJygnLCAnKGhlbHBlciA9ICcsIGhlbHBlck5hbWUsICcg
fHwgJywgbm9uSGVscGVyLCAnKSddOworICAgICAgaWYgKCF0aGlzLm9wdGlvbnMuc3RyaWN0KSB7
CisgICAgICAgIGxvb2t1cFswXSA9ICcoaGVscGVyID0gJzsKKyAgICAgICAgbG9va3VwLnB1c2go
JyAhPSBudWxsID8gaGVscGVyIDogJywgdGhpcy5hbGlhc2FibGUoJ2hlbHBlcnMuaGVscGVyTWlz
c2luZycpKTsKKyAgICAgIH0KKworICAgICAgdGhpcy5wdXNoKFsnKCcsIGxvb2t1cCwgaGVscGVy
LnBhcmFtc0luaXQgPyBbJyksKCcsIGhlbHBlci5wYXJhbXNJbml0XSA6IFtdLCAnKSwnLCAnKHR5
cGVvZiBoZWxwZXIgPT09ICcsIHRoaXMuYWxpYXNhYmxlKCciZnVuY3Rpb24iJyksICcgPyAnLCB0
aGlzLnNvdXJjZS5mdW5jdGlvbkNhbGwoJ2hlbHBlcicsICdjYWxsJywgaGVscGVyLmNhbGxQYXJh
bXMpLCAnIDogaGVscGVyKSknXSk7CisgICAgfSwKKworICAgIC8vIFtpbnZva2VQYXJ0aWFsXQor
ICAgIC8vCisgICAgLy8gT24gc3RhY2ssIGJlZm9yZTogY29udGV4dCwgLi4uCisgICAgLy8gT24g
c3RhY2sgYWZ0ZXI6IHJlc3VsdCBvZiBwYXJ0aWFsIGludm9jYXRpb24KKyAgICAvLworICAgIC8v
IFRoaXMgb3BlcmF0aW9uIHBvcHMgb2ZmIGEgY29udGV4dCwgaW52b2tlcyBhIHBhcnRpYWwgd2l0
aCB0aGF0IGNvbnRleHQsCisgICAgLy8gYW5kIHB1c2hlcyB0aGUgcmVzdWx0IG9mIHRoZSBpbnZv
Y2F0aW9uIGJhY2suCisgICAgaW52b2tlUGFydGlhbDogZnVuY3Rpb24gaW52b2tlUGFydGlhbChp
c0R5bmFtaWMsIG5hbWUsIGluZGVudCkgeworICAgICAgdmFyIHBhcmFtcyA9IFtdLAorICAgICAg
ICAgIG9wdGlvbnMgPSB0aGlzLnNldHVwUGFyYW1zKG5hbWUsIDEsIHBhcmFtcyk7CisKKyAgICAg
IGlmIChpc0R5bmFtaWMpIHsKKyAgICAgICAgbmFtZSA9IHRoaXMucG9wU3RhY2soKTsKKyAgICAg
ICAgZGVsZXRlIG9wdGlvbnMubmFtZTsKKyAgICAgIH0KKworICAgICAgaWYgKGluZGVudCkgewor
ICAgICAgICBvcHRpb25zLmluZGVudCA9IEpTT04uc3RyaW5naWZ5KGluZGVudCk7CisgICAgICB9
CisgICAgICBvcHRpb25zLmhlbHBlcnMgPSAnaGVscGVycyc7CisgICAgICBvcHRpb25zLnBhcnRp
YWxzID0gJ3BhcnRpYWxzJzsKKyAgICAgIG9wdGlvbnMuZGVjb3JhdG9ycyA9ICdjb250YWluZXIu
ZGVjb3JhdG9ycyc7CisKKyAgICAgIGlmICghaXNEeW5hbWljKSB7CisgICAgICAgIHBhcmFtcy51
bnNoaWZ0KHRoaXMubmFtZUxvb2t1cCgncGFydGlhbHMnLCBuYW1lLCAncGFydGlhbCcpKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHBhcmFtcy51bnNoaWZ0KG5hbWUpOworICAgICAgfQorCisg
ICAgICBpZiAodGhpcy5vcHRpb25zLmNvbXBhdCkgeworICAgICAgICBvcHRpb25zLmRlcHRocyA9
ICdkZXB0aHMnOworICAgICAgfQorICAgICAgb3B0aW9ucyA9IHRoaXMub2JqZWN0TGl0ZXJhbChv
cHRpb25zKTsKKyAgICAgIHBhcmFtcy5wdXNoKG9wdGlvbnMpOworCisgICAgICB0aGlzLnB1c2go
dGhpcy5zb3VyY2UuZnVuY3Rpb25DYWxsKCdjb250YWluZXIuaW52b2tlUGFydGlhbCcsICcnLCBw
YXJhbXMpKTsKKyAgICB9LAorCisgICAgLy8gW2Fzc2lnblRvSGFzaF0KKyAgICAvLworICAgIC8v
IE9uIHN0YWNrLCBiZWZvcmU6IHZhbHVlLCAuLi4sIGhhc2gsIC4uLgorICAgIC8vIE9uIHN0YWNr
LCBhZnRlcjogLi4uLCBoYXNoLCAuLi4KKyAgICAvLworICAgIC8vIFBvcHMgYSB2YWx1ZSBvZmYg
dGhlIHN0YWNrIGFuZCBhc3NpZ25zIGl0IHRvIHRoZSBjdXJyZW50IGhhc2gKKyAgICBhc3NpZ25U
b0hhc2g6IGZ1bmN0aW9uIGFzc2lnblRvSGFzaChrZXkpIHsKKyAgICAgIHZhciB2YWx1ZSA9IHRo
aXMucG9wU3RhY2soKSwKKyAgICAgICAgICBjb250ZXh0ID0gdW5kZWZpbmVkLAorICAgICAgICAg
IHR5cGUgPSB1bmRlZmluZWQsCisgICAgICAgICAgaWQgPSB1bmRlZmluZWQ7CisKKyAgICAgIGlm
ICh0aGlzLnRyYWNrSWRzKSB7CisgICAgICAgIGlkID0gdGhpcy5wb3BTdGFjaygpOworICAgICAg
fQorICAgICAgaWYgKHRoaXMuc3RyaW5nUGFyYW1zKSB7CisgICAgICAgIHR5cGUgPSB0aGlzLnBv
cFN0YWNrKCk7CisgICAgICAgIGNvbnRleHQgPSB0aGlzLnBvcFN0YWNrKCk7CisgICAgICB9CisK
KyAgICAgIHZhciBoYXNoID0gdGhpcy5oYXNoOworICAgICAgaWYgKGNvbnRleHQpIHsKKyAgICAg
ICAgaGFzaC5jb250ZXh0c1trZXldID0gY29udGV4dDsKKyAgICAgIH0KKyAgICAgIGlmICh0eXBl
KSB7CisgICAgICAgIGhhc2gudHlwZXNba2V5XSA9IHR5cGU7CisgICAgICB9CisgICAgICBpZiAo
aWQpIHsKKyAgICAgICAgaGFzaC5pZHNba2V5XSA9IGlkOworICAgICAgfQorICAgICAgaGFzaC52
YWx1ZXNba2V5XSA9IHZhbHVlOworICAgIH0sCisKKyAgICBwdXNoSWQ6IGZ1bmN0aW9uIHB1c2hJ
ZCh0eXBlLCBuYW1lLCBjaGlsZCkgeworICAgICAgaWYgKHR5cGUgPT09ICdCbG9ja1BhcmFtJykg
eworICAgICAgICB0aGlzLnB1c2hTdGFja0xpdGVyYWwoJ2Jsb2NrUGFyYW1zWycgKyBuYW1lWzBd
ICsgJ10ucGF0aFsnICsgbmFtZVsxXSArICddJyArIChjaGlsZCA/ICcgKyAnICsgSlNPTi5zdHJp
bmdpZnkoJy4nICsgY2hpbGQpIDogJycpKTsKKyAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ1Bh
dGhFeHByZXNzaW9uJykgeworICAgICAgICB0aGlzLnB1c2hTdHJpbmcobmFtZSk7CisgICAgICB9
IGVsc2UgaWYgKHR5cGUgPT09ICdTdWJFeHByZXNzaW9uJykgeworICAgICAgICB0aGlzLnB1c2hT
dGFja0xpdGVyYWwoJ3RydWUnKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHRoaXMucHVzaFN0
YWNrTGl0ZXJhbCgnbnVsbCcpOworICAgICAgfQorICAgIH0sCisKKyAgICAvLyBIRUxQRVJTCisK
KyAgICBjb21waWxlcjogSmF2YVNjcmlwdENvbXBpbGVyLAorCisgICAgY29tcGlsZUNoaWxkcmVu
OiBmdW5jdGlvbiBjb21waWxlQ2hpbGRyZW4oZW52aXJvbm1lbnQsIG9wdGlvbnMpIHsKKyAgICAg
IHZhciBjaGlsZHJlbiA9IGVudmlyb25tZW50LmNoaWxkcmVuLAorICAgICAgICAgIGNoaWxkID0g
dW5kZWZpbmVkLAorICAgICAgICAgIGNvbXBpbGVyID0gdW5kZWZpbmVkOworCisgICAgICBmb3Ig
KHZhciBpID0gMCwgbCA9IGNoaWxkcmVuLmxlbmd0aDsgaSA8IGw7IGkrKykgeworICAgICAgICBj
aGlsZCA9IGNoaWxkcmVuW2ldOworICAgICAgICBjb21waWxlciA9IG5ldyB0aGlzLmNvbXBpbGVy
KCk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbmV3LWNhcAorCisgICAgICAgIHZhciBleGlzdGlu
ZyA9IHRoaXMubWF0Y2hFeGlzdGluZ1Byb2dyYW0oY2hpbGQpOworCisgICAgICAgIGlmIChleGlz
dGluZyA9PSBudWxsKSB7CisgICAgICAgICAgdGhpcy5jb250ZXh0LnByb2dyYW1zLnB1c2goJycp
OyAvLyBQbGFjZWhvbGRlciB0byBwcmV2ZW50IG5hbWUgY29uZmxpY3RzIGZvciBuZXN0ZWQgY2hp
bGRyZW4KKyAgICAgICAgICB2YXIgaW5kZXggPSB0aGlzLmNvbnRleHQucHJvZ3JhbXMubGVuZ3Ro
OworICAgICAgICAgIGNoaWxkLmluZGV4ID0gaW5kZXg7CisgICAgICAgICAgY2hpbGQubmFtZSA9
ICdwcm9ncmFtJyArIGluZGV4OworICAgICAgICAgIHRoaXMuY29udGV4dC5wcm9ncmFtc1tpbmRl
eF0gPSBjb21waWxlci5jb21waWxlKGNoaWxkLCBvcHRpb25zLCB0aGlzLmNvbnRleHQsICF0aGlz
LnByZWNvbXBpbGUpOworICAgICAgICAgIHRoaXMuY29udGV4dC5kZWNvcmF0b3JzW2luZGV4XSA9
IGNvbXBpbGVyLmRlY29yYXRvcnM7CisgICAgICAgICAgdGhpcy5jb250ZXh0LmVudmlyb25tZW50
c1tpbmRleF0gPSBjaGlsZDsKKworICAgICAgICAgIHRoaXMudXNlRGVwdGhzID0gdGhpcy51c2VE
ZXB0aHMgfHwgY29tcGlsZXIudXNlRGVwdGhzOworICAgICAgICAgIHRoaXMudXNlQmxvY2tQYXJh
bXMgPSB0aGlzLnVzZUJsb2NrUGFyYW1zIHx8IGNvbXBpbGVyLnVzZUJsb2NrUGFyYW1zOworICAg
ICAgICAgIGNoaWxkLnVzZURlcHRocyA9IHRoaXMudXNlRGVwdGhzOworICAgICAgICAgIGNoaWxk
LnVzZUJsb2NrUGFyYW1zID0gdGhpcy51c2VCbG9ja1BhcmFtczsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICBjaGlsZC5pbmRleCA9IGV4aXN0aW5nLmluZGV4OworICAgICAgICAgIGNoaWxk
Lm5hbWUgPSAncHJvZ3JhbScgKyBleGlzdGluZy5pbmRleDsKKworICAgICAgICAgIHRoaXMudXNl
RGVwdGhzID0gdGhpcy51c2VEZXB0aHMgfHwgZXhpc3RpbmcudXNlRGVwdGhzOworICAgICAgICAg
IHRoaXMudXNlQmxvY2tQYXJhbXMgPSB0aGlzLnVzZUJsb2NrUGFyYW1zIHx8IGV4aXN0aW5nLnVz
ZUJsb2NrUGFyYW1zOworICAgICAgICB9CisgICAgICB9CisgICAgfSwKKyAgICBtYXRjaEV4aXN0
aW5nUHJvZ3JhbTogZnVuY3Rpb24gbWF0Y2hFeGlzdGluZ1Byb2dyYW0oY2hpbGQpIHsKKyAgICAg
IGZvciAodmFyIGkgPSAwLCBsZW4gPSB0aGlzLmNvbnRleHQuZW52aXJvbm1lbnRzLmxlbmd0aDsg
aSA8IGxlbjsgaSsrKSB7CisgICAgICAgIHZhciBlbnZpcm9ubWVudCA9IHRoaXMuY29udGV4dC5l
bnZpcm9ubWVudHNbaV07CisgICAgICAgIGlmIChlbnZpcm9ubWVudCAmJiBlbnZpcm9ubWVudC5l
cXVhbHMoY2hpbGQpKSB7CisgICAgICAgICAgcmV0dXJuIGVudmlyb25tZW50OworICAgICAgICB9
CisgICAgICB9CisgICAgfSwKKworICAgIHByb2dyYW1FeHByZXNzaW9uOiBmdW5jdGlvbiBwcm9n
cmFtRXhwcmVzc2lvbihndWlkKSB7CisgICAgICB2YXIgY2hpbGQgPSB0aGlzLmVudmlyb25tZW50
LmNoaWxkcmVuW2d1aWRdLAorICAgICAgICAgIHByb2dyYW1QYXJhbXMgPSBbY2hpbGQuaW5kZXgs
ICdkYXRhJywgY2hpbGQuYmxvY2tQYXJhbXNdOworCisgICAgICBpZiAodGhpcy51c2VCbG9ja1Bh
cmFtcyB8fCB0aGlzLnVzZURlcHRocykgeworICAgICAgICBwcm9ncmFtUGFyYW1zLnB1c2goJ2Js
b2NrUGFyYW1zJyk7CisgICAgICB9CisgICAgICBpZiAodGhpcy51c2VEZXB0aHMpIHsKKyAgICAg
ICAgcHJvZ3JhbVBhcmFtcy5wdXNoKCdkZXB0aHMnKTsKKyAgICAgIH0KKworICAgICAgcmV0dXJu
ICdjb250YWluZXIucHJvZ3JhbSgnICsgcHJvZ3JhbVBhcmFtcy5qb2luKCcsICcpICsgJyknOwor
ICAgIH0sCisKKyAgICB1c2VSZWdpc3RlcjogZnVuY3Rpb24gdXNlUmVnaXN0ZXIobmFtZSkgewor
ICAgICAgaWYgKCF0aGlzLnJlZ2lzdGVyc1tuYW1lXSkgeworICAgICAgICB0aGlzLnJlZ2lzdGVy
c1tuYW1lXSA9IHRydWU7CisgICAgICAgIHRoaXMucmVnaXN0ZXJzLmxpc3QucHVzaChuYW1lKTsK
KyAgICAgIH0KKyAgICB9LAorCisgICAgcHVzaDogZnVuY3Rpb24gcHVzaChleHByKSB7CisgICAg
ICBpZiAoIShleHByIGluc3RhbmNlb2YgTGl0ZXJhbCkpIHsKKyAgICAgICAgZXhwciA9IHRoaXMu
c291cmNlLndyYXAoZXhwcik7CisgICAgICB9CisKKyAgICAgIHRoaXMuaW5saW5lU3RhY2sucHVz
aChleHByKTsKKyAgICAgIHJldHVybiBleHByOworICAgIH0sCisKKyAgICBwdXNoU3RhY2tMaXRl
cmFsOiBmdW5jdGlvbiBwdXNoU3RhY2tMaXRlcmFsKGl0ZW0pIHsKKyAgICAgIHRoaXMucHVzaChu
ZXcgTGl0ZXJhbChpdGVtKSk7CisgICAgfSwKKworICAgIHB1c2hTb3VyY2U6IGZ1bmN0aW9uIHB1
c2hTb3VyY2Uoc291cmNlKSB7CisgICAgICBpZiAodGhpcy5wZW5kaW5nQ29udGVudCkgeworICAg
ICAgICB0aGlzLnNvdXJjZS5wdXNoKHRoaXMuYXBwZW5kVG9CdWZmZXIodGhpcy5zb3VyY2UucXVv
dGVkU3RyaW5nKHRoaXMucGVuZGluZ0NvbnRlbnQpLCB0aGlzLnBlbmRpbmdMb2NhdGlvbikpOwor
ICAgICAgICB0aGlzLnBlbmRpbmdDb250ZW50ID0gdW5kZWZpbmVkOworICAgICAgfQorCisgICAg
ICBpZiAoc291cmNlKSB7CisgICAgICAgIHRoaXMuc291cmNlLnB1c2goc291cmNlKTsKKyAgICAg
IH0KKyAgICB9LAorCisgICAgcmVwbGFjZVN0YWNrOiBmdW5jdGlvbiByZXBsYWNlU3RhY2soY2Fs
bGJhY2spIHsKKyAgICAgIHZhciBwcmVmaXggPSBbJygnXSwKKyAgICAgICAgICBzdGFjayA9IHVu
ZGVmaW5lZCwKKyAgICAgICAgICBjcmVhdGVkU3RhY2sgPSB1bmRlZmluZWQsCisgICAgICAgICAg
dXNlZExpdGVyYWwgPSB1bmRlZmluZWQ7CisKKyAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0
ICovCisgICAgICBpZiAoIXRoaXMuaXNJbmxpbmUoKSkgeworICAgICAgICB0aHJvdyBuZXcgX0V4
Y2VwdGlvblsnZGVmYXVsdCddKCdyZXBsYWNlU3RhY2sgb24gbm9uLWlubGluZScpOworICAgICAg
fQorCisgICAgICAvLyBXZSB3YW50IHRvIG1lcmdlIHRoZSBpbmxpbmUgc3RhdGVtZW50IGludG8g
dGhlIHJlcGxhY2VtZW50IHN0YXRlbWVudCB2aWEgJywnCisgICAgICB2YXIgdG9wID0gdGhpcy5w
b3BTdGFjayh0cnVlKTsKKworICAgICAgaWYgKHRvcCBpbnN0YW5jZW9mIExpdGVyYWwpIHsKKyAg
ICAgICAgLy8gTGl0ZXJhbHMgZG8gbm90IG5lZWQgdG8gYmUgaW5saW5lZAorICAgICAgICBzdGFj
ayA9IFt0b3AudmFsdWVdOworICAgICAgICBwcmVmaXggPSBbJygnLCBzdGFja107CisgICAgICAg
IHVzZWRMaXRlcmFsID0gdHJ1ZTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIC8vIEdldCBvciBj
cmVhdGUgdGhlIGN1cnJlbnQgc3RhY2sgbmFtZSBmb3IgdXNlIGJ5IHRoZSBpbmxpbmUKKyAgICAg
ICAgY3JlYXRlZFN0YWNrID0gdHJ1ZTsKKyAgICAgICAgdmFyIF9uYW1lID0gdGhpcy5pbmNyU3Rh
Y2soKTsKKworICAgICAgICBwcmVmaXggPSBbJygoJywgdGhpcy5wdXNoKF9uYW1lKSwgJyA9ICcs
IHRvcCwgJyknXTsKKyAgICAgICAgc3RhY2sgPSB0aGlzLnRvcFN0YWNrKCk7CisgICAgICB9CisK
KyAgICAgIHZhciBpdGVtID0gY2FsbGJhY2suY2FsbCh0aGlzLCBzdGFjayk7CisKKyAgICAgIGlm
ICghdXNlZExpdGVyYWwpIHsKKyAgICAgICAgdGhpcy5wb3BTdGFjaygpOworICAgICAgfQorICAg
ICAgaWYgKGNyZWF0ZWRTdGFjaykgeworICAgICAgICB0aGlzLnN0YWNrU2xvdC0tOworICAgICAg
fQorICAgICAgdGhpcy5wdXNoKHByZWZpeC5jb25jYXQoaXRlbSwgJyknKSk7CisgICAgfSwKKwor
ICAgIGluY3JTdGFjazogZnVuY3Rpb24gaW5jclN0YWNrKCkgeworICAgICAgdGhpcy5zdGFja1Ns
b3QrKzsKKyAgICAgIGlmICh0aGlzLnN0YWNrU2xvdCA+IHRoaXMuc3RhY2tWYXJzLmxlbmd0aCkg
eworICAgICAgICB0aGlzLnN0YWNrVmFycy5wdXNoKCdzdGFjaycgKyB0aGlzLnN0YWNrU2xvdCk7
CisgICAgICB9CisgICAgICByZXR1cm4gdGhpcy50b3BTdGFja05hbWUoKTsKKyAgICB9LAorICAg
IHRvcFN0YWNrTmFtZTogZnVuY3Rpb24gdG9wU3RhY2tOYW1lKCkgeworICAgICAgcmV0dXJuICdz
dGFjaycgKyB0aGlzLnN0YWNrU2xvdDsKKyAgICB9LAorICAgIGZsdXNoSW5saW5lOiBmdW5jdGlv
biBmbHVzaElubGluZSgpIHsKKyAgICAgIHZhciBpbmxpbmVTdGFjayA9IHRoaXMuaW5saW5lU3Rh
Y2s7CisgICAgICB0aGlzLmlubGluZVN0YWNrID0gW107CisgICAgICBmb3IgKHZhciBpID0gMCwg
bGVuID0gaW5saW5lU3RhY2subGVuZ3RoOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgdmFyIGVu
dHJ5ID0gaW5saW5lU3RhY2tbaV07CisgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqLwor
ICAgICAgICBpZiAoZW50cnkgaW5zdGFuY2VvZiBMaXRlcmFsKSB7CisgICAgICAgICAgdGhpcy5j
b21waWxlU3RhY2sucHVzaChlbnRyeSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgdmFy
IHN0YWNrID0gdGhpcy5pbmNyU3RhY2soKTsKKyAgICAgICAgICB0aGlzLnB1c2hTb3VyY2UoW3N0
YWNrLCAnID0gJywgZW50cnksICc7J10pOworICAgICAgICAgIHRoaXMuY29tcGlsZVN0YWNrLnB1
c2goc3RhY2spOworICAgICAgICB9CisgICAgICB9CisgICAgfSwKKyAgICBpc0lubGluZTogZnVu
Y3Rpb24gaXNJbmxpbmUoKSB7CisgICAgICByZXR1cm4gdGhpcy5pbmxpbmVTdGFjay5sZW5ndGg7
CisgICAgfSwKKworICAgIHBvcFN0YWNrOiBmdW5jdGlvbiBwb3BTdGFjayh3cmFwcGVkKSB7Cisg
ICAgICB2YXIgaW5saW5lID0gdGhpcy5pc0lubGluZSgpLAorICAgICAgICAgIGl0ZW0gPSAoaW5s
aW5lID8gdGhpcy5pbmxpbmVTdGFjayA6IHRoaXMuY29tcGlsZVN0YWNrKS5wb3AoKTsKKworICAg
ICAgaWYgKCF3cmFwcGVkICYmIGl0ZW0gaW5zdGFuY2VvZiBMaXRlcmFsKSB7CisgICAgICAgIHJl
dHVybiBpdGVtLnZhbHVlOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKCFpbmxpbmUpIHsK
KyAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLworICAgICAgICAgIGlmICghdGhp
cy5zdGFja1Nsb3QpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBfRXhjZXB0aW9uWydkZWZhdWx0
J10oJ0ludmFsaWQgc3RhY2sgcG9wJyk7CisgICAgICAgICAgfQorICAgICAgICAgIHRoaXMuc3Rh
Y2tTbG90LS07CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGl0ZW07CisgICAgICB9CisgICAg
fSwKKworICAgIHRvcFN0YWNrOiBmdW5jdGlvbiB0b3BTdGFjaygpIHsKKyAgICAgIHZhciBzdGFj
ayA9IHRoaXMuaXNJbmxpbmUoKSA/IHRoaXMuaW5saW5lU3RhY2sgOiB0aGlzLmNvbXBpbGVTdGFj
aywKKyAgICAgICAgICBpdGVtID0gc3RhY2tbc3RhY2subGVuZ3RoIC0gMV07CisKKyAgICAgIC8q
IGlzdGFuYnVsIGlnbm9yZSBpZiAqLworICAgICAgaWYgKGl0ZW0gaW5zdGFuY2VvZiBMaXRlcmFs
KSB7CisgICAgICAgIHJldHVybiBpdGVtLnZhbHVlOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cmV0dXJuIGl0ZW07CisgICAgICB9CisgICAgfSwKKworICAgIGNvbnRleHROYW1lOiBmdW5jdGlv
biBjb250ZXh0TmFtZShjb250ZXh0KSB7CisgICAgICBpZiAodGhpcy51c2VEZXB0aHMgJiYgY29u
dGV4dCkgeworICAgICAgICByZXR1cm4gJ2RlcHRoc1snICsgY29udGV4dCArICddJzsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHJldHVybiAnZGVwdGgnICsgY29udGV4dDsKKyAgICAgIH0KKyAg
ICB9LAorCisgICAgcXVvdGVkU3RyaW5nOiBmdW5jdGlvbiBxdW90ZWRTdHJpbmcoc3RyKSB7Cisg
ICAgICByZXR1cm4gdGhpcy5zb3VyY2UucXVvdGVkU3RyaW5nKHN0cik7CisgICAgfSwKKworICAg
IG9iamVjdExpdGVyYWw6IGZ1bmN0aW9uIG9iamVjdExpdGVyYWwob2JqKSB7CisgICAgICByZXR1
cm4gdGhpcy5zb3VyY2Uub2JqZWN0TGl0ZXJhbChvYmopOworICAgIH0sCisKKyAgICBhbGlhc2Fi
bGU6IGZ1bmN0aW9uIGFsaWFzYWJsZShuYW1lKSB7CisgICAgICB2YXIgcmV0ID0gdGhpcy5hbGlh
c2VzW25hbWVdOworICAgICAgaWYgKHJldCkgeworICAgICAgICByZXQucmVmZXJlbmNlQ291bnQr
KzsKKyAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgIH0KKworICAgICAgcmV0ID0gdGhpcy5hbGlh
c2VzW25hbWVdID0gdGhpcy5zb3VyY2Uud3JhcChuYW1lKTsKKyAgICAgIHJldC5hbGlhc2FibGUg
PSB0cnVlOworICAgICAgcmV0LnJlZmVyZW5jZUNvdW50ID0gMTsKKworICAgICAgcmV0dXJuIHJl
dDsKKyAgICB9LAorCisgICAgc2V0dXBIZWxwZXI6IGZ1bmN0aW9uIHNldHVwSGVscGVyKHBhcmFt
U2l6ZSwgbmFtZSwgYmxvY2tIZWxwZXIpIHsKKyAgICAgIHZhciBwYXJhbXMgPSBbXSwKKyAgICAg
ICAgICBwYXJhbXNJbml0ID0gdGhpcy5zZXR1cEhlbHBlckFyZ3MobmFtZSwgcGFyYW1TaXplLCBw
YXJhbXMsIGJsb2NrSGVscGVyKTsKKyAgICAgIHZhciBmb3VuZEhlbHBlciA9IHRoaXMubmFtZUxv
b2t1cCgnaGVscGVycycsIG5hbWUsICdoZWxwZXInKSwKKyAgICAgICAgICBjYWxsQ29udGV4dCA9
IHRoaXMuYWxpYXNhYmxlKHRoaXMuY29udGV4dE5hbWUoMCkgKyAnICE9IG51bGwgPyAnICsgdGhp
cy5jb250ZXh0TmFtZSgwKSArICcgOiB7fScpOworCisgICAgICByZXR1cm4geworICAgICAgICBw
YXJhbXM6IHBhcmFtcywKKyAgICAgICAgcGFyYW1zSW5pdDogcGFyYW1zSW5pdCwKKyAgICAgICAg
bmFtZTogZm91bmRIZWxwZXIsCisgICAgICAgIGNhbGxQYXJhbXM6IFtjYWxsQ29udGV4dF0uY29u
Y2F0KHBhcmFtcykKKyAgICAgIH07CisgICAgfSwKKworICAgIHNldHVwUGFyYW1zOiBmdW5jdGlv
biBzZXR1cFBhcmFtcyhoZWxwZXIsIHBhcmFtU2l6ZSwgcGFyYW1zKSB7CisgICAgICB2YXIgb3B0
aW9ucyA9IHt9LAorICAgICAgICAgIGNvbnRleHRzID0gW10sCisgICAgICAgICAgdHlwZXMgPSBb
XSwKKyAgICAgICAgICBpZHMgPSBbXSwKKyAgICAgICAgICBvYmplY3RBcmdzID0gIXBhcmFtcywK
KyAgICAgICAgICBwYXJhbSA9IHVuZGVmaW5lZDsKKworICAgICAgaWYgKG9iamVjdEFyZ3MpIHsK
KyAgICAgICAgcGFyYW1zID0gW107CisgICAgICB9CisKKyAgICAgIG9wdGlvbnMubmFtZSA9IHRo
aXMucXVvdGVkU3RyaW5nKGhlbHBlcik7CisgICAgICBvcHRpb25zLmhhc2ggPSB0aGlzLnBvcFN0
YWNrKCk7CisKKyAgICAgIGlmICh0aGlzLnRyYWNrSWRzKSB7CisgICAgICAgIG9wdGlvbnMuaGFz
aElkcyA9IHRoaXMucG9wU3RhY2soKTsKKyAgICAgIH0KKyAgICAgIGlmICh0aGlzLnN0cmluZ1Bh
cmFtcykgeworICAgICAgICBvcHRpb25zLmhhc2hUeXBlcyA9IHRoaXMucG9wU3RhY2soKTsKKyAg
ICAgICAgb3B0aW9ucy5oYXNoQ29udGV4dHMgPSB0aGlzLnBvcFN0YWNrKCk7CisgICAgICB9CisK
KyAgICAgIHZhciBpbnZlcnNlID0gdGhpcy5wb3BTdGFjaygpLAorICAgICAgICAgIHByb2dyYW0g
PSB0aGlzLnBvcFN0YWNrKCk7CisKKyAgICAgIC8vIEF2b2lkIHNldHRpbmcgZm4gYW5kIGludmVy
c2UgaWYgbmVpdGhlciBhcmUgc2V0LiBUaGlzIGFsbG93cworICAgICAgLy8gaGVscGVycyB0byBk
byBhIGNoZWNrIGZvciBgaWYgKG9wdGlvbnMuZm4pYAorICAgICAgaWYgKHByb2dyYW0gfHwgaW52
ZXJzZSkgeworICAgICAgICBvcHRpb25zLmZuID0gcHJvZ3JhbSB8fCAnY29udGFpbmVyLm5vb3An
OworICAgICAgICBvcHRpb25zLmludmVyc2UgPSBpbnZlcnNlIHx8ICdjb250YWluZXIubm9vcCc7
CisgICAgICB9CisKKyAgICAgIC8vIFRoZSBwYXJhbWV0ZXJzIGdvIG9uIHRvIHRoZSBzdGFjayBp
biBvcmRlciAobWFraW5nIHN1cmUgdGhhdCB0aGV5IGFyZSBldmFsdWF0ZWQgaW4gb3JkZXIpCisg
ICAgICAvLyBzbyB3ZSBuZWVkIHRvIHBvcCB0aGVtIG9mZiB0aGUgc3RhY2sgaW4gcmV2ZXJzZSBv
cmRlcgorICAgICAgdmFyIGkgPSBwYXJhbVNpemU7CisgICAgICB3aGlsZSAoaS0tKSB7CisgICAg
ICAgIHBhcmFtID0gdGhpcy5wb3BTdGFjaygpOworICAgICAgICBwYXJhbXNbaV0gPSBwYXJhbTsK
KworICAgICAgICBpZiAodGhpcy50cmFja0lkcykgeworICAgICAgICAgIGlkc1tpXSA9IHRoaXMu
cG9wU3RhY2soKTsKKyAgICAgICAgfQorICAgICAgICBpZiAodGhpcy5zdHJpbmdQYXJhbXMpIHsK
KyAgICAgICAgICB0eXBlc1tpXSA9IHRoaXMucG9wU3RhY2soKTsKKyAgICAgICAgICBjb250ZXh0
c1tpXSA9IHRoaXMucG9wU3RhY2soKTsKKyAgICAgICAgfQorICAgICAgfQorCisgICAgICBpZiAo
b2JqZWN0QXJncykgeworICAgICAgICBvcHRpb25zLmFyZ3MgPSB0aGlzLnNvdXJjZS5nZW5lcmF0
ZUFycmF5KHBhcmFtcyk7CisgICAgICB9CisKKyAgICAgIGlmICh0aGlzLnRyYWNrSWRzKSB7Cisg
ICAgICAgIG9wdGlvbnMuaWRzID0gdGhpcy5zb3VyY2UuZ2VuZXJhdGVBcnJheShpZHMpOworICAg
ICAgfQorICAgICAgaWYgKHRoaXMuc3RyaW5nUGFyYW1zKSB7CisgICAgICAgIG9wdGlvbnMudHlw
ZXMgPSB0aGlzLnNvdXJjZS5nZW5lcmF0ZUFycmF5KHR5cGVzKTsKKyAgICAgICAgb3B0aW9ucy5j
b250ZXh0cyA9IHRoaXMuc291cmNlLmdlbmVyYXRlQXJyYXkoY29udGV4dHMpOworICAgICAgfQor
CisgICAgICBpZiAodGhpcy5vcHRpb25zLmRhdGEpIHsKKyAgICAgICAgb3B0aW9ucy5kYXRhID0g
J2RhdGEnOworICAgICAgfQorICAgICAgaWYgKHRoaXMudXNlQmxvY2tQYXJhbXMpIHsKKyAgICAg
ICAgb3B0aW9ucy5ibG9ja1BhcmFtcyA9ICdibG9ja1BhcmFtcyc7CisgICAgICB9CisgICAgICBy
ZXR1cm4gb3B0aW9uczsKKyAgICB9LAorCisgICAgc2V0dXBIZWxwZXJBcmdzOiBmdW5jdGlvbiBz
ZXR1cEhlbHBlckFyZ3MoaGVscGVyLCBwYXJhbVNpemUsIHBhcmFtcywgdXNlUmVnaXN0ZXIpIHsK
KyAgICAgIHZhciBvcHRpb25zID0gdGhpcy5zZXR1cFBhcmFtcyhoZWxwZXIsIHBhcmFtU2l6ZSwg
cGFyYW1zKTsKKyAgICAgIG9wdGlvbnMgPSB0aGlzLm9iamVjdExpdGVyYWwob3B0aW9ucyk7Cisg
ICAgICBpZiAodXNlUmVnaXN0ZXIpIHsKKyAgICAgICAgdGhpcy51c2VSZWdpc3Rlcignb3B0aW9u
cycpOworICAgICAgICBwYXJhbXMucHVzaCgnb3B0aW9ucycpOworICAgICAgICByZXR1cm4gWydv
cHRpb25zPScsIG9wdGlvbnNdOworICAgICAgfSBlbHNlIGlmIChwYXJhbXMpIHsKKyAgICAgICAg
cGFyYW1zLnB1c2gob3B0aW9ucyk7CisgICAgICAgIHJldHVybiAnJzsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHJldHVybiBvcHRpb25zOworICAgICAgfQorICAgIH0KKyAgfTsKKworICAoZnVu
Y3Rpb24gKCkgeworICAgIHZhciByZXNlcnZlZFdvcmRzID0gKCdicmVhayBlbHNlIG5ldyB2YXIn
ICsgJyBjYXNlIGZpbmFsbHkgcmV0dXJuIHZvaWQnICsgJyBjYXRjaCBmb3Igc3dpdGNoIHdoaWxl
JyArICcgY29udGludWUgZnVuY3Rpb24gdGhpcyB3aXRoJyArICcgZGVmYXVsdCBpZiB0aHJvdycg
KyAnIGRlbGV0ZSBpbiB0cnknICsgJyBkbyBpbnN0YW5jZW9mIHR5cGVvZicgKyAnIGFic3RyYWN0
IGVudW0gaW50IHNob3J0JyArICcgYm9vbGVhbiBleHBvcnQgaW50ZXJmYWNlIHN0YXRpYycgKyAn
IGJ5dGUgZXh0ZW5kcyBsb25nIHN1cGVyJyArICcgY2hhciBmaW5hbCBuYXRpdmUgc3luY2hyb25p
emVkJyArICcgY2xhc3MgZmxvYXQgcGFja2FnZSB0aHJvd3MnICsgJyBjb25zdCBnb3RvIHByaXZh
dGUgdHJhbnNpZW50JyArICcgZGVidWdnZXIgaW1wbGVtZW50cyBwcm90ZWN0ZWQgdm9sYXRpbGUn
ICsgJyBkb3VibGUgaW1wb3J0IHB1YmxpYyBsZXQgeWllbGQgYXdhaXQnICsgJyBudWxsIHRydWUg
ZmFsc2UnKS5zcGxpdCgnICcpOworCisgICAgdmFyIGNvbXBpbGVyV29yZHMgPSBKYXZhU2NyaXB0
Q29tcGlsZXIuUkVTRVJWRURfV09SRFMgPSB7fTsKKworICAgIGZvciAodmFyIGkgPSAwLCBsID0g
cmVzZXJ2ZWRXb3Jkcy5sZW5ndGg7IGkgPCBsOyBpKyspIHsKKyAgICAgIGNvbXBpbGVyV29yZHNb
cmVzZXJ2ZWRXb3Jkc1tpXV0gPSB0cnVlOworICAgIH0KKyAgfSkoKTsKKworICBKYXZhU2NyaXB0
Q29tcGlsZXIuaXNWYWxpZEphdmFTY3JpcHRWYXJpYWJsZU5hbWUgPSBmdW5jdGlvbiAobmFtZSkg
eworICAgIHJldHVybiAhSmF2YVNjcmlwdENvbXBpbGVyLlJFU0VSVkVEX1dPUkRTW25hbWVdICYm
IC9eW2EtekEtWl8kXVswLTlhLXpBLVpfJF0qJC8udGVzdChuYW1lKTsKKyAgfTsKKworICBmdW5j
dGlvbiBzdHJpY3RMb29rdXAocmVxdWlyZVRlcm1pbmFsLCBjb21waWxlciwgcGFydHMsIHR5cGUp
IHsKKyAgICB2YXIgc3RhY2sgPSBjb21waWxlci5wb3BTdGFjaygpLAorICAgICAgICBpID0gMCwK
KyAgICAgICAgbGVuID0gcGFydHMubGVuZ3RoOworICAgIGlmIChyZXF1aXJlVGVybWluYWwpIHsK
KyAgICAgIGxlbi0tOworICAgIH0KKworICAgIGZvciAoOyBpIDwgbGVuOyBpKyspIHsKKyAgICAg
IHN0YWNrID0gY29tcGlsZXIubmFtZUxvb2t1cChzdGFjaywgcGFydHNbaV0sIHR5cGUpOworICAg
IH0KKworICAgIGlmIChyZXF1aXJlVGVybWluYWwpIHsKKyAgICAgIHJldHVybiBbY29tcGlsZXIu
YWxpYXNhYmxlKCdjb250YWluZXIuc3RyaWN0JyksICcoJywgc3RhY2ssICcsICcsIGNvbXBpbGVy
LnF1b3RlZFN0cmluZyhwYXJ0c1tpXSksICcpJ107CisgICAgfSBlbHNlIHsKKyAgICAgIHJldHVy
biBzdGFjazsKKyAgICB9CisgIH0KKworICBtb2R1bGUuZXhwb3J0cyA9IEphdmFTY3JpcHRDb21w
aWxlcjsKK30pOworLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jh
c2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYklpNHVMeTR1THk0dUx5NHVMMnhw
WWk5b1lXNWtiR1ZpWVhKekwyTnZiWEJwYkdWeUwycGhkbUZ6WTNKcGNIUXRZMjl0Y0dsc1pYSXVh
bk1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanM3T3pzN096czdPenM3UVVGTFFT
eFhRVUZUTEU5QlFVOHNRMEZCUXl4TFFVRkxMRVZCUVVVN1FVRkRkRUlzVVVGQlNTeERRVUZETEV0
QlFVc3NSMEZCUnl4TFFVRkxMRU5CUVVNN1IwRkRjRUk3TzBGQlJVUXNWMEZCVXl4clFrRkJhMElz
UjBGQlJ5eEZRVUZGT3p0QlFVVm9ReXh2UWtGQmEwSXNRMEZCUXl4VFFVRlRMRWRCUVVjN096dEJR
VWMzUWl4alFVRlZMRVZCUVVVc2IwSkJRVk1zVFVGQlRTeEZRVUZGTEVsQlFVa3NZMEZCWVR0QlFV
TTFReXhWUVVGSkxHdENRVUZyUWl4RFFVRkRMRFpDUVVFMlFpeERRVUZETEVsQlFVa3NRMEZCUXl4
RlFVRkZPMEZCUXpGRUxHVkJRVThzUTBGQlF5eE5RVUZOTEVWQlFVVXNSMEZCUnl4RlFVRkZMRWxC
UVVrc1EwRkJReXhEUVVGRE8wOUJRelZDTEUxQlFVMDdRVUZEVEN4bFFVRlBMRU5CUVVNc1RVRkJU
U3hGUVVGRkxFZEJRVWNzUlVGQlJTeEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1Ew
RkJReXhGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETzA5QlEycEVPMHRCUTBZN1FVRkRSQ3hwUWtG
QllTeEZRVUZGTEhWQ1FVRlRMRWxCUVVrc1JVRkJSVHRCUVVNMVFpeGhRVUZQTEVOQlFVTXNTVUZC
U1N4RFFVRkRMRk5CUVZNc1EwRkJReXhyUWtGQmEwSXNRMEZCUXl4RlFVRkZMRmxCUVZrc1JVRkJS
U3hKUVVGSkxFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTTdTMEZEZGtVN08wRkJSVVFzWjBKQlFW
a3NSVUZCUlN4M1FrRkJWenRCUVVOMlFpeFZRVUZOTEZGQlFWRXNVMEV4UWxRc2FVSkJRV2xDTEVG
Qk1FSlpPMVZCUXpWQ0xGRkJRVkVzUjBGQlJ5eE5RVE5DVHl4blFrRkJaMElzUTBFeVFrNHNVVUZC
VVN4RFFVRkRMRU5CUVVNN1FVRkROVU1zWVVGQlR5eERRVUZETEZGQlFWRXNSVUZCUlN4UlFVRlJM
RU5CUVVNc1EwRkJRenRMUVVNM1FqczdRVUZGUkN4clFrRkJZeXhGUVVGRkxIZENRVUZUTEUxQlFV
MHNSVUZCUlN4UlFVRlJMRVZCUVVVc1VVRkJVU3hGUVVGRk96dEJRVVZ1UkN4VlFVRkpMRU5CUVVN
c1QwRXZRa1FzVDBGQlR5eERRU3RDUlN4TlFVRk5MRU5CUVVNc1JVRkJSVHRCUVVOd1FpeGpRVUZO
TEVkQlFVY3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRQUVVOdVFqdEJRVU5FTEZsQlFVMHNS
MEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVWQlFV
VXNVVUZCVVN4RFFVRkRMRU5CUVVNN08wRkJSVFZETEZWQlFVa3NTVUZCU1N4RFFVRkRMRmRCUVZj
c1EwRkJReXhSUVVGUkxFVkJRVVU3UVVGRE4wSXNaVUZCVHl4RFFVRkRMRk5CUVZNc1JVRkJSU3hO
UVVGTkxFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTTdUMEZEYWtNc1RVRkJUU3hKUVVGSkxGRkJR
VkVzUlVGQlJUczdPenRCUVVsdVFpeGxRVUZQTEVOQlFVTXNXVUZCV1N4RlFVRkZMRTFCUVUwc1JV
RkJSU3hIUVVGSExFTkJRVU1zUTBGQlF6dFBRVU53UXl4TlFVRk5PMEZCUTB3c1kwRkJUU3hEUVVG
RExHTkJRV01zUjBGQlJ5eEpRVUZKTEVOQlFVTTdRVUZETjBJc1pVRkJUeXhOUVVGTkxFTkJRVU03
VDBGRFpqdExRVU5HT3p0QlFVVkVMRzlDUVVGblFpeEZRVUZGTERSQ1FVRlhPMEZCUXpOQ0xHRkJR
VThzU1VGQlNTeERRVUZETEZsQlFWa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJRenRMUVVNNVFq
czdPMEZCUjBRc1YwRkJUeXhGUVVGRkxHbENRVUZUTEZkQlFWY3NSVUZCUlN4UFFVRlBMRVZCUVVV
c1QwRkJUeXhGUVVGRkxGRkJRVkVzUlVGQlJUdEJRVU42UkN4VlFVRkpMRU5CUVVNc1YwRkJWeXhI
UVVGSExGZEJRVmNzUTBGQlF6dEJRVU12UWl4VlFVRkpMRU5CUVVNc1QwRkJUeXhIUVVGSExFOUJR
VThzUTBGQlF6dEJRVU4yUWl4VlFVRkpMRU5CUVVNc1dVRkJXU3hIUVVGSExFbEJRVWtzUTBGQlF5
eFBRVUZQTEVOQlFVTXNXVUZCV1N4RFFVRkRPMEZCUXpsRExGVkJRVWtzUTBGQlF5eFJRVUZSTEVk
QlFVY3NTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhSUVVGUkxFTkJRVU03UVVGRGRFTXNWVUZC
U1N4RFFVRkRMRlZCUVZVc1IwRkJSeXhEUVVGRExGRkJRVkVzUTBGQlF6czdRVUZGTlVJc1ZVRkJT
U3hEUVVGRExFbEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRWxCUVVrc1Ew
RkJRenRCUVVOc1F5eFZRVUZKTEVOQlFVTXNUMEZCVHl4SFFVRkhMRU5CUVVNc1EwRkJReXhQUVVG
UExFTkJRVU03UVVGRGVrSXNWVUZCU1N4RFFVRkRMRTlCUVU4c1IwRkJSeXhQUVVGUExFbEJRVWs3
UVVGRGVFSXNhMEpCUVZVc1JVRkJSU3hGUVVGRk8wRkJRMlFzWjBKQlFWRXNSVUZCUlN4RlFVRkZP
MEZCUTFvc2IwSkJRVmtzUlVGQlJTeEZRVUZGTzA5QlEycENMRU5CUVVNN08wRkJSVVlzVlVGQlNT
eERRVUZETEZGQlFWRXNSVUZCUlN4RFFVRkRPenRCUVVWb1FpeFZRVUZKTEVOQlFVTXNVMEZCVXl4
SFFVRkhMRU5CUVVNc1EwRkJRenRCUVVOdVFpeFZRVUZKTEVOQlFVTXNVMEZCVXl4SFFVRkhMRVZC
UVVVc1EwRkJRenRCUVVOd1FpeFZRVUZKTEVOQlFVTXNUMEZCVHl4SFFVRkhMRVZCUVVVc1EwRkJR
enRCUVVOc1FpeFZRVUZKTEVOQlFVTXNVMEZCVXl4SFFVRkhMRVZCUVVVc1NVRkJTU3hGUVVGRkxF
VkJRVVVzUlVGQlJTeERRVUZETzBGQlF6bENMRlZCUVVrc1EwRkJReXhOUVVGTkxFZEJRVWNzUlVG
QlJTeERRVUZETzBGQlEycENMRlZCUVVrc1EwRkJReXhaUVVGWkxFZEJRVWNzUlVGQlJTeERRVUZE
TzBGQlEzWkNMRlZCUVVrc1EwRkJReXhYUVVGWExFZEJRVWNzUlVGQlJTeERRVUZETzBGQlEzUkNM
RlZCUVVrc1EwRkJReXhYUVVGWExFZEJRVWNzUlVGQlJTeERRVUZET3p0QlFVVjBRaXhWUVVGSkxF
TkJRVU1zWlVGQlpTeERRVUZETEZkQlFWY3NSVUZCUlN4UFFVRlBMRU5CUVVNc1EwRkJRenM3UVVG
Rk0wTXNWVUZCU1N4RFFVRkRMRk5CUVZNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVTBGQlV5eEpRVUZK
TEZkQlFWY3NRMEZCUXl4VFFVRlRMRWxCUVVrc1YwRkJWeXhEUVVGRExHRkJRV0VzU1VGQlNTeEpR
VUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRTFCUVUwc1EwRkJRenRCUVVNM1J5eFZRVUZKTEVOQlFV
TXNZMEZCWXl4SFFVRkhMRWxCUVVrc1EwRkJReXhqUVVGakxFbEJRVWtzVjBGQlZ5eERRVUZETEdO
QlFXTXNRMEZCUXpzN1FVRkZlRVVzVlVGQlNTeFBRVUZQTEVkQlFVY3NWMEZCVnl4RFFVRkRMRTlC
UVU4N1ZVRkROMElzVFVGQlRTeFpRVUZCTzFWQlEwNHNVVUZCVVN4WlFVRkJPMVZCUTFJc1EwRkJR
eXhaUVVGQk8xVkJRMFFzUTBGQlF5eFpRVUZCTEVOQlFVTTdPMEZCUlU0c1YwRkJTeXhEUVVGRExF
ZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4UFFVRlBMRU5CUVVNc1RVRkJUU3hGUVVG
RkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVN1FVRkRNVU1z
WTBGQlRTeEhRVUZITEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenM3UVVGRmNFSXNX
VUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhsUVVGbExFZEJRVWNzVFVGQlRTeERRVUZETEVkQlFV
Y3NRMEZCUXp0QlFVTjZReXhuUWtGQlVTeEhRVUZITEZGQlFWRXNTVUZCU1N4TlFVRk5MRU5CUVVN
c1IwRkJSeXhEUVVGRE8wRkJRMnhETEZsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1RVRkJUU3hE
UVVGRExFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NSVUZCUlN4TlFVRk5MRU5CUVVNc1NVRkJT
U3hEUVVGRExFTkJRVU03VDBGRE9VTTdPenRCUVVkRUxGVkJRVWtzUTBGQlF5eE5RVUZOTEVOQlFV
TXNaVUZCWlN4SFFVRkhMRkZCUVZFc1EwRkJRenRCUVVOMlF5eFZRVUZKTEVOQlFVTXNWVUZCVlN4
RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRE96czdRVUZIY0VJc1ZVRkJTU3hKUVVGSkxFTkJRVU1z
VTBGQlV5eEpRVUZKTEVsQlFVa3NRMEZCUXl4WFFVRlhMRU5CUVVNc1RVRkJUU3hKUVVGSkxFbEJR
VWtzUTBGQlF5eFpRVUZaTEVOQlFVTXNUVUZCVFN4RlFVRkZPMEZCUTNwRkxHTkJRVTBzTUVKQlFX
TXNPRU5CUVRoRExFTkJRVU1zUTBGQlF6dFBRVU55UlRzN1FVRkZSQ3hWUVVGSkxFTkJRVU1zU1VG
QlNTeERRVUZETEZWQlFWVXNRMEZCUXl4UFFVRlBMRVZCUVVVc1JVRkJSVHRCUVVNNVFpeFpRVUZK
TEVOQlFVTXNZVUZCWVN4SFFVRkhMRWxCUVVrc1EwRkJRenM3UVVGRk1VSXNXVUZCU1N4RFFVRkRM
RlZCUVZVc1EwRkJReXhQUVVGUExFTkJRVU1zTUVOQlFUQkRMRU5CUVVNc1EwRkJRenRCUVVOd1JT
eFpRVUZKTEVOQlFVTXNWVUZCVlN4RFFVRkRMRWxCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU1zUTBG
QlF6czdRVUZGYmtNc1dVRkJTU3hSUVVGUkxFVkJRVVU3UVVGRFdpeGpRVUZKTEVOQlFVTXNWVUZC
VlN4SFFVRkhMRkZCUVZFc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeEZRVUZGTEVOQlFVTXNT
VUZCU1N4RlFVRkZMRTlCUVU4c1JVRkJSU3hYUVVGWExFVkJRVVVzVVVGQlVTeEZRVUZGTEUxQlFV
MHNSVUZCUlN4aFFVRmhMRVZCUVVVc1VVRkJVU3hGUVVGRkxFbEJRVWtzUTBGQlF5eFZRVUZWTEVO
QlFVTXNTMEZCU3l4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8xTkJRekZKTEUxQlFVMDdRVUZE
VEN4alFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRExFOUJRVThzUTBGQlF5eDFSVUZCZFVVc1EwRkJR
eXhEUVVGRE8wRkJRMnBITEdOQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1NVRkJTU3hEUVVGRExF
dEJRVXNzUTBGQlF5eERRVUZETzBGQlF6VkNMR05CUVVrc1EwRkJReXhWUVVGVkxFZEJRVWNzU1VG
QlNTeERRVUZETEZWQlFWVXNRMEZCUXl4TFFVRkxMRVZCUVVVc1EwRkJRenRUUVVNelF6dFBRVU5H
TEUxQlFVMDdRVUZEVEN4WlFVRkpMRU5CUVVNc1ZVRkJWU3hIUVVGSExGTkJRVk1zUTBGQlF6dFBR
VU0zUWpzN1FVRkZSQ3hWUVVGSkxFVkJRVVVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNjVUpCUVhGQ0xF
TkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTTdRVUZET1VNc1ZVRkJTU3hEUVVGRExFbEJRVWtzUTBG
QlF5eFBRVUZQTEVWQlFVVTdRVUZEYWtJc1dVRkJTU3hIUVVGSExFZEJRVWM3UVVGRFVpeHJRa0ZC
VVN4RlFVRkZMRWxCUVVrc1EwRkJReXhaUVVGWkxFVkJRVVU3UVVGRE4wSXNZMEZCU1N4RlFVRkZM
RVZCUVVVN1UwRkRWQ3hEUVVGRE96dEJRVVZHTEZsQlFVa3NTVUZCU1N4RFFVRkRMRlZCUVZVc1JV
RkJSVHRCUVVOdVFpeGhRVUZITEVOQlFVTXNUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhWUVVG
VkxFTkJRVU03UVVGRE4wSXNZVUZCUnl4RFFVRkRMR0ZCUVdFc1IwRkJSeXhKUVVGSkxFTkJRVU03
VTBGRE1VSTdPM1ZDUVVVMFFpeEpRVUZKTEVOQlFVTXNUMEZCVHp0WlFVRndReXhSUVVGUkxGbEJR
VklzVVVGQlVUdFpRVUZGTEZWQlFWVXNXVUZCVml4VlFVRlZPenRCUVVONlFpeGhRVUZMTEVOQlFV
TXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExGRkJRVkVzUTBGQlF5eE5RVUZOTEVW
QlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdEJRVU16
UXl4alFVRkpMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJUdEJRVU5tTEdWQlFVY3NR
MEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFV
TTdRVUZEY2tJc1owSkJRVWtzVlVGQlZTeERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZPMEZCUTJw
Q0xHbENRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhIUVVGSExGVkJRVlVz
UTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTTVRaXhwUWtGQlJ5eERRVUZETEdGQlFXRXNS
MEZCUnl4SlFVRkpMRU5CUVVNN1lVRkRNVUk3VjBGRFJqdFRRVU5HT3p0QlFVVkVMRmxCUVVrc1NV
RkJTU3hEUVVGRExGZEJRVmNzUTBGQlF5eFZRVUZWTEVWQlFVVTdRVUZETDBJc1lVRkJSeXhEUVVG
RExGVkJRVlVzUjBGQlJ5eEpRVUZKTEVOQlFVTTdVMEZEZGtJN1FVRkRSQ3haUVVGSkxFbEJRVWtz
UTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RlFVRkZPMEZCUTNKQ0xHRkJRVWNzUTBGQlF5eFBR
VUZQTEVkQlFVY3NTVUZCU1N4RFFVRkRPMU5CUTNCQ08wRkJRMFFzV1VGQlNTeEpRVUZKTEVOQlFV
TXNVMEZCVXl4RlFVRkZPMEZCUTJ4Q0xHRkJRVWNzUTBGQlF5eFRRVUZUTEVkQlFVY3NTVUZCU1N4
RFFVRkRPMU5CUTNSQ08wRkJRMFFzV1VGQlNTeEpRVUZKTEVOQlFVTXNZMEZCWXl4RlFVRkZPMEZC
UTNaQ0xHRkJRVWNzUTBGQlF5eGpRVUZqTEVkQlFVY3NTVUZCU1N4RFFVRkRPMU5CUXpOQ08wRkJR
MFFzV1VGQlNTeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRTFCUVUwc1JVRkJSVHRCUVVOMlFp
eGhRVUZITEVOQlFVTXNUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJRenRUUVVOdVFqczdRVUZGUkN4
WlFVRkpMRU5CUVVNc1VVRkJVU3hGUVVGRk8wRkJRMklzWVVGQlJ5eERRVUZETEZGQlFWRXNSMEZC
Unl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFZEJRVWNzUTBGQlF5eFJRVUZSTEVOQlFVTXNR
MEZCUXpzN1FVRkZOVU1zWTBGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4bFFVRmxMRWRCUVVjc1JV
RkJReXhMUVVGTExFVkJRVVVzUlVGQlF5eEpRVUZKTEVWQlFVVXNRMEZCUXl4RlFVRkZMRTFCUVUw
c1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlF5eERRVUZETzBGQlF6VkVMR0ZCUVVjc1IwRkJSeXhK
UVVGSkxFTkJRVU1zWVVGQllTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPenRCUVVVNVFpeGpR
VUZKTEU5QlFVOHNRMEZCUXl4UFFVRlBMRVZCUVVVN1FVRkRia0lzWlVGQlJ5eEhRVUZITEVkQlFV
Y3NRMEZCUXl4eFFrRkJjVUlzUTBGQlF5eEZRVUZETEVsQlFVa3NSVUZCUlN4UFFVRlBMRU5CUVVN
c1VVRkJVU3hGUVVGRExFTkJRVU1zUTBGQlF6dEJRVU14UkN4bFFVRkhMRU5CUVVNc1IwRkJSeXhI
UVVGSExFZEJRVWNzUTBGQlF5eEhRVUZITEVsQlFVa3NSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJR
eXhSUVVGUkxFVkJRVVVzUTBGQlF6dFhRVU42UXl4TlFVRk5PMEZCUTB3c1pVRkJSeXhIUVVGSExF
ZEJRVWNzUTBGQlF5eFJRVUZSTEVWQlFVVXNRMEZCUXp0WFFVTjBRanRUUVVOR0xFMUJRVTA3UVVG
RFRDeGhRVUZITEVOQlFVTXNaVUZCWlN4SFFVRkhMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU03
VTBGRGNFTTdPMEZCUlVRc1pVRkJUeXhIUVVGSExFTkJRVU03VDBGRFdpeE5RVUZOTzBGQlEwd3Na
VUZCVHl4RlFVRkZMRU5CUVVNN1QwRkRXRHRMUVVOR096dEJRVVZFTEZsQlFWRXNSVUZCUlN4dlFr
RkJWenM3TzBGQlIyNUNMRlZCUVVrc1EwRkJReXhYUVVGWExFZEJRVWNzUTBGQlF5eERRVUZETzBG
QlEzSkNMRlZCUVVrc1EwRkJReXhOUVVGTkxFZEJRVWNzZDBKQlFWa3NTVUZCU1N4RFFVRkRMRTlC
UVU4c1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF6dEJRVU5vUkN4VlFVRkpMRU5CUVVNc1ZVRkJW
U3hIUVVGSExIZENRVUZaTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1QwRkJUeXhEUVVGRExF
TkJRVU03UzBGRGNrUTdPMEZCUlVRc2VVSkJRWEZDTEVWQlFVVXNLMEpCUVZNc1VVRkJVU3hGUVVG
Rk8wRkJRM2hETEZWQlFVa3NaVUZCWlN4SFFVRkhMRVZCUVVVc1EwRkJRenM3UVVGRmVrSXNWVUZC
U1N4TlFVRk5MRWRCUVVjc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eE5RVUZOTEVOQlFVTXNT
VUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dEJRVU40UkN4VlFV
RkpMRTFCUVUwc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eEZRVUZGTzBGQlEzSkNMSFZDUVVG
bExFbEJRVWtzU1VGQlNTeEhRVUZITEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hE
UVVGRExFTkJRVU03VDBGRE4wTTdPenM3T3pzN08wRkJVVVFzVlVGQlNTeFZRVUZWTEVkQlFVY3NR
MEZCUXl4RFFVRkRPMEZCUTI1Q0xGZEJRVXNzU1VGQlNTeExRVUZMTEVsQlFVa3NTVUZCU1N4RFFV
RkRMRTlCUVU4c1JVRkJSVHM3UVVGRE9VSXNXVUZCU1N4SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVG
RExFOUJRVThzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXpzN1FVRkZMMElzV1VGQlNTeEpRVUZK
TEVOQlFVTXNUMEZCVHl4RFFVRkRMR05CUVdNc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeEpR
VUZKTEVOQlFVTXNVVUZCVVN4SlFVRkpMRWxCUVVrc1EwRkJReXhqUVVGakxFZEJRVWNzUTBGQlF5
eEZRVUZGTzBGQlEyeEdMSGxDUVVGbExFbEJRVWtzVTBGQlV5eEhRVUZKTEVWQlFVVXNWVUZCVlN4
QlFVRkRMRWRCUVVjc1IwRkJSeXhIUVVGSExFdEJRVXNzUTBGQlF6dEJRVU0xUkN4alFVRkpMRU5C
UVVNc1VVRkJVU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEU5QlFVOHNSMEZCUnl4VlFVRlZM
RU5CUVVNN1UwRkRla003VDBGRFJqczdRVUZGUkN4VlFVRkpMRTFCUVUwc1IwRkJSeXhEUVVGRExG
ZEJRVmNzUlVGQlJTeFJRVUZSTEVWQlFVVXNVMEZCVXl4RlFVRkZMRlZCUVZVc1JVRkJSU3hOUVVG
TkxFTkJRVU1zUTBGQlF6czdRVUZGY0VVc1ZVRkJTU3hKUVVGSkxFTkJRVU1zWTBGQll5eEpRVUZK
TEVsQlFVa3NRMEZCUXl4VFFVRlRMRVZCUVVVN1FVRkRla01zWTBGQlRTeERRVUZETEVsQlFVa3NR
MEZCUXl4aFFVRmhMRU5CUVVNc1EwRkJRenRQUVVNMVFqdEJRVU5FTEZWQlFVa3NTVUZCU1N4RFFV
RkRMRk5CUVZNc1JVRkJSVHRCUVVOc1FpeGpRVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRkZCUVZF
c1EwRkJReXhEUVVGRE8wOUJRM1pDT3pzN1FVRkhSQ3hWUVVGSkxFMUJRVTBzUjBGQlJ5eEpRVUZK
TEVOQlFVTXNWMEZCVnl4RFFVRkRMR1ZCUVdVc1EwRkJReXhEUVVGRE96dEJRVVV2UXl4VlFVRkpM
RkZCUVZFc1JVRkJSVHRCUVVOYUxHTkJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFV
RkRMRU5CUVVNN08wRkJSWEJDTEdWQlFVOHNVVUZCVVN4RFFVRkRMRXRCUVVzc1EwRkJReXhKUVVG
SkxFVkJRVVVzVFVGQlRTeERRVUZETEVOQlFVTTdUMEZEY2tNc1RVRkJUVHRCUVVOTUxHVkJRVThz
U1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhYUVVGWExFVkJR
VVVzVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hUUVVGVExF
VkJRVVVzVFVGQlRTeEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNN1QwRkRiRVk3UzBG
RFJqdEJRVU5FTEdWQlFWY3NSVUZCUlN4eFFrRkJVeXhsUVVGbExFVkJRVVU3UVVGRGNrTXNWVUZC
U1N4UlFVRlJMRWRCUVVjc1NVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF5eFJRVUZSTzFWQlEzQkRM
RlZCUVZVc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eFhRVUZYTzFWQlF6bENMRmRCUVZjc1dV
RkJRVHRWUVVWWUxGVkJRVlVzV1VGQlFUdFZRVU5XTEZkQlFWY3NXVUZCUVR0VlFVTllMRk5CUVZN
c1dVRkJRU3hEUVVGRE8wRkJRMlFzVlVGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5C
UVVNc1ZVRkJReXhKUVVGSkxFVkJRVXM3UVVGRGVrSXNXVUZCU1N4SlFVRkpMRU5CUVVNc1kwRkJZ
eXhGUVVGRk8wRkJRM1pDTEdOQlFVa3NWMEZCVnl4RlFVRkZPMEZCUTJZc1owSkJRVWtzUTBGQlF5
eFBRVUZQTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1YwRkRkRUlzVFVGQlRUdEJRVU5NTEhW
Q1FVRlhMRWRCUVVjc1NVRkJTU3hEUVVGRE8xZEJRM0JDTzBGQlEwUXNiVUpCUVZNc1IwRkJSeXhK
UVVGSkxFTkJRVU03VTBGRGJFSXNUVUZCVFR0QlFVTk1MR05CUVVrc1YwRkJWeXhGUVVGRk8wRkJR
MllzWjBKQlFVa3NRMEZCUXl4VlFVRlZMRVZCUVVVN1FVRkRaaXg1UWtGQlZ5eEhRVUZITEVsQlFV
a3NRMEZCUXp0aFFVTndRaXhOUVVGTk8wRkJRMHdzZVVKQlFWY3NRMEZCUXl4UFFVRlBMRU5CUVVN
c1dVRkJXU3hEUVVGRExFTkJRVU03WVVGRGJrTTdRVUZEUkN4eFFrRkJVeXhEUVVGRExFZEJRVWNz
UTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0QlFVTnVRaXgxUWtGQlZ5eEhRVUZITEZOQlFWTXNS
MEZCUnl4VFFVRlRMRU5CUVVNN1YwRkRja003TzBGQlJVUXNiMEpCUVZVc1IwRkJSeXhKUVVGSkxF
TkJRVU03UVVGRGJFSXNZMEZCU1N4RFFVRkRMRkZCUVZFc1JVRkJSVHRCUVVOaUxITkNRVUZWTEVk
QlFVY3NTMEZCU3l4RFFVRkRPMWRCUTNCQ08xTkJRMFk3VDBGRFJpeERRVUZETEVOQlFVTTdPMEZC
UjBnc1ZVRkJTU3hWUVVGVkxFVkJRVVU3UVVGRFpDeFpRVUZKTEZkQlFWY3NSVUZCUlR0QlFVTm1M
SEZDUVVGWExFTkJRVU1zVDBGQlR5eERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRPMEZCUXk5Q0xH
MUNRVUZUTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8xTkJRM0JDTEUx
QlFVMHNTVUZCU1N4RFFVRkRMRlZCUVZVc1JVRkJSVHRCUVVOMFFpeGpRVUZKTEVOQlFVTXNUVUZC
VFN4RFFVRkRMRWxCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU1zUTBGQlF6dFRRVU5vUXp0UFFVTkdM
RTFCUVUwN1FVRkRUQ3gxUWtGQlpTeEpRVUZKTEdGQlFXRXNTVUZCU1N4WFFVRlhMRWRCUVVjc1JV
RkJSU3hIUVVGSExFbEJRVWtzUTBGQlF5eG5Ra0ZCWjBJc1JVRkJSU3hEUVVGQkxFRkJRVU1zUTBG
QlF6czdRVUZGYUVZc1dVRkJTU3hYUVVGWExFVkJRVVU3UVVGRFppeHhRa0ZCVnl4RFFVRkRMRTlC
UVU4c1EwRkJReXhyUWtGQmEwSXNRMEZCUXl4RFFVRkRPMEZCUTNoRExHMUNRVUZUTEVOQlFVTXNS
MEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8xTkJRM0JDTEUxQlFVMDdRVUZEVEN4alFV
RkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eG5Ra0ZCWjBJc1EwRkJReXhEUVVG
RE8xTkJRM0JETzA5QlEwWTdPMEZCUlVRc1ZVRkJTU3hsUVVGbExFVkJRVVU3UVVGRGJrSXNXVUZC
U1N4RFFVRkRMRTFCUVUwc1EwRkJReXhQUVVGUExFTkJRVU1zVFVGQlRTeEhRVUZITEdWQlFXVXNR
MEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzVjBGQlZ5eEhRVUZITEVWQlFV
VXNSMEZCUnl4TFFVRkxMRU5CUVVFc1FVRkJReXhEUVVGRExFTkJRVU03VDBGRGVrWTdPMEZCUlVR
c1lVRkJUeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEV0QlFVc3NSVUZCUlN4RFFVRkRPMHRC
UXpWQ096czdPenM3T3pzN096dEJRVmRFTEdOQlFWVXNSVUZCUlN4dlFrRkJVeXhKUVVGSkxFVkJR
VVU3UVVGRGVrSXNWVUZCU1N4clFrRkJhMElzUjBGQlJ5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFV
RkRMRFJDUVVFMFFpeERRVUZETzFWQlEycEZMRTFCUVUwc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBG
QlF5eFhRVUZYTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVOdVF5eFZRVUZK
TEVOQlFVTXNaVUZCWlN4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGRExFVkJRVVVzVFVGQlRTeERR
VUZETEVOQlFVTTdPMEZCUlhSRExGVkJRVWtzVTBGQlV5eEhRVUZITEVsQlFVa3NRMEZCUXl4UlFV
RlJMRVZCUVVVc1EwRkJRenRCUVVOb1F5eFpRVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVN
c1JVRkJSU3hEUVVGRExFVkJRVVVzVTBGQlV5eERRVUZETEVOQlFVTTdPMEZCUlM5Q0xGVkJRVWtz
UTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhaUVVGWkxFTkJR
VU1zYTBKQlFXdENMRVZCUVVVc1RVRkJUU3hGUVVGRkxFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFV
TTdTMEZEZWtVN096czdPenM3TzBGQlVVUXNkVUpCUVcxQ0xFVkJRVVVzSzBKQlFWYzdPMEZCUlRs
Q0xGVkJRVWtzYTBKQlFXdENMRWRCUVVjc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5dzBRa0ZC
TkVJc1EwRkJRenRWUVVOcVJTeE5RVUZOTEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1YwRkJW
eXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdRVUZEYmtNc1ZVRkJTU3hEUVVGRExH
VkJRV1VzUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZMRTFCUVUwc1JVRkJSU3hKUVVG
SkxFTkJRVU1zUTBGQlF6czdRVUZGTVVNc1ZVRkJTU3hEUVVGRExGZEJRVmNzUlVGQlJTeERRVUZE
T3p0QlFVVnVRaXhWUVVGSkxFOUJRVThzUjBGQlJ5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RlFVRkZM
RU5CUVVNN1FVRkRPVUlzV1VGQlRTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRVZCUVVVc1Ew
RkJReXhGUVVGRkxFOUJRVThzUTBGQlF5eERRVUZET3p0QlFVVTNRaXhWUVVGSkxFTkJRVU1zVlVG
QlZTeERRVUZETEVOQlExb3NUMEZCVHl4RlFVRkZMRWxCUVVrc1EwRkJReXhWUVVGVkxFVkJRVVVz
VFVGQlRTeEZRVU01UWl4UFFVRlBMRVZCUVVVc1MwRkJTeXhGUVVGRkxFbEJRVWtzUTBGQlF5eE5R
VUZOTEVOQlFVTXNXVUZCV1N4RFFVRkRMR3RDUVVGclFpeEZRVUZGTEUxQlFVMHNSVUZCUlN4TlFV
Rk5MRU5CUVVNc1JVRkRPVVVzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXp0TFFVTllPenM3T3pz
N096dEJRVkZFTEdsQ1FVRmhMRVZCUVVVc2RVSkJRVk1zVDBGQlR5eEZRVUZGTzBGQlF5OUNMRlZC
UVVrc1NVRkJTU3hEUVVGRExHTkJRV01zUlVGQlJUdEJRVU4yUWl4bFFVRlBMRWRCUVVjc1NVRkJT
U3hEUVVGRExHTkJRV01zUjBGQlJ5eFBRVUZQTEVOQlFVTTdUMEZEZWtNc1RVRkJUVHRCUVVOTUxG
bEJRVWtzUTBGQlF5eGxRVUZsTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhsUVVG
bExFTkJRVU03VDBGRGNFUTdPMEZCUlVRc1ZVRkJTU3hEUVVGRExHTkJRV01zUjBGQlJ5eFBRVUZQ
TEVOQlFVTTdTMEZETDBJN096czdPenM3T3pzN08wRkJWMFFzVlVGQlRTeEZRVUZGTEd0Q1FVRlhP
MEZCUTJwQ0xGVkJRVWtzU1VGQlNTeERRVUZETEZGQlFWRXNSVUZCUlN4RlFVRkZPMEZCUTI1Q0xG
bEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTXNWVUZCUXl4UFFVRlBPMmxDUVVGTExFTkJRVU1zWVVG
QllTeEZRVUZGTEU5QlFVOHNSVUZCUlN4UFFVRlBMRU5CUVVNN1UwRkJRU3hEUVVGRExFTkJRVU03
TzBGQlJXeEZMRmxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zU1VGQlNTeERRVUZETEdOQlFXTXNR
MEZCUXl4SlFVRkpMRU5CUVVNc1VVRkJVU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzA5QlEz
WkVMRTFCUVUwN1FVRkRUQ3haUVVGSkxFdEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNVVUZCVVN4
RlFVRkZMRU5CUVVNN1FVRkROVUlzV1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4RFFVRkRMRTFC
UVUwc1JVRkJSU3hMUVVGTExFVkJRVVVzWTBGQll5eEZRVUZGTEVsQlFVa3NRMEZCUXl4alFVRmpM
RU5CUVVNc1MwRkJTeXhGUVVGRkxGTkJRVk1zUlVGQlJTeEpRVUZKTEVOQlFVTXNSVUZCUlN4SlFV
RkpMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJRM0JITEZsQlFVa3NTVUZCU1N4RFFVRkRMRmRCUVZj
c1EwRkJReXhSUVVGUkxFVkJRVVU3UVVGRE4wSXNZMEZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhE
UVVGRExGTkJRVk1zUlVGQlJTeEpRVUZKTEVOQlFVTXNZMEZCWXl4RFFVRkRMRWxCUVVrc1JVRkJS
U3hUUVVGVExFVkJRVVVzU1VGQlNTeERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNc1Ew
RkJRenRUUVVOb1JqdFBRVU5HTzB0QlEwWTdPenM3T3pzN08wRkJVVVFzYVVKQlFXRXNSVUZCUlN4
NVFrRkJWenRCUVVONFFpeFZRVUZKTEVOQlFVTXNWVUZCVlN4RFFVRkRMRWxCUVVrc1EwRkJReXhq
UVVGakxFTkJReTlDTEVOQlFVTXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXcwUWtGQk5FSXNR
MEZCUXl4RlFVRkZMRWRCUVVjc1JVRkJSU3hKUVVGSkxFTkJRVU1zVVVGQlVTeEZRVUZGTEVWQlFV
VXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wdEJRMnBHT3pzN096czdPenM3UVVG
VFJDeGpRVUZWTEVWQlFVVXNiMEpCUVZNc1MwRkJTeXhGUVVGRk8wRkJRekZDTEZWQlFVa3NRMEZC
UXl4WFFVRlhMRWRCUVVjc1MwRkJTeXhEUVVGRE8wdEJRekZDT3pzN096czdPenRCUVZGRUxHVkJR
VmNzUlVGQlJTeDFRa0ZCVnp0QlFVTjBRaXhWUVVGSkxFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1NV
RkJTU3hEUVVGRExGZEJRVmNzUTBGQlF5eEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRU5CUVVN
c1EwRkJRenRMUVVNelJEczdPenM3T3pzN08wRkJVMFFzYlVKQlFXVXNSVUZCUlN4NVFrRkJVeXhM
UVVGTExFVkJRVVVzUzBGQlN5eEZRVUZGTEUxQlFVMHNSVUZCUlN4TlFVRk5MRVZCUVVVN1FVRkRk
RVFzVlVGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPenRCUVVWV0xGVkJRVWtzUTBGQlF5
eE5RVUZOTEVsQlFVa3NTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhOUVVGTkxFbEJRVWtzUTBG
QlF5eEpRVUZKTEVOQlFVTXNWMEZCVnl4RlFVRkZPenM3UVVGSGRrUXNXVUZCU1N4RFFVRkRMRWxC
UVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zWVVGQllTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRM
RVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFBRVU16UXl4TlFVRk5PMEZCUTB3c1dV
RkJTU3hEUVVGRExGZEJRVmNzUlVGQlJTeERRVUZETzA5QlEzQkNPenRCUVVWRUxGVkJRVWtzUTBG
QlF5eFhRVUZYTEVOQlFVTXNVMEZCVXl4RlFVRkZMRXRCUVVzc1JVRkJSU3hEUVVGRExFVkJRVVVz
UzBGQlN5eEZRVUZGTEUxQlFVMHNRMEZCUXl4RFFVRkRPMHRCUTNSRU96czdPenM3T3pzN1FVRlRS
Q3h2UWtGQlowSXNSVUZCUlN3d1FrRkJVeXhaUVVGWkxFVkJRVVVzUzBGQlN5eEZRVUZGTzBGQlF6
bERMRlZCUVVrc1EwRkJReXhqUVVGakxFZEJRVWNzU1VGQlNTeERRVUZET3p0QlFVVXpRaXhWUVVG
SkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNZMEZCWXl4RlFVRkZMRmxCUVZrc1EwRkJReXhE
UVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVWQlFVVXNXVUZCV1N4RFFVRkRMRU5CUVVNc1EwRkJR
eXhGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTTdRVUZEZWtVc1ZVRkJTU3hEUVVGRExG
ZEJRVmNzUTBGQlF5eFRRVUZUTEVWQlFVVXNTMEZCU3l4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVG
RE8wdEJRM1pET3pzN096czdPenRCUVZGRUxHTkJRVlVzUlVGQlJTeHZRa0ZCVXl4TFFVRkxMRVZC
UVVVc1MwRkJTeXhGUVVGRkxFMUJRVTBzUlVGQlJUdEJRVU42UXl4VlFVRkpMRU5CUVVNc1MwRkJT
eXhGUVVGRk8wRkJRMVlzV1VGQlNTeERRVUZETEdkQ1FVRm5RaXhEUVVGRExFMUJRVTBzUTBGQlF5
eERRVUZETzA5QlF5OUNMRTFCUVUwN1FVRkRUQ3haUVVGSkxFTkJRVU1zWjBKQlFXZENMRU5CUVVN
c2RVSkJRWFZDTEVkQlFVY3NTMEZCU3l4SFFVRkhMRWRCUVVjc1EwRkJReXhEUVVGRE8wOUJRemxF
T3p0QlFVVkVMRlZCUVVrc1EwRkJReXhYUVVGWExFTkJRVU1zVFVGQlRTeEZRVUZGTEV0QlFVc3NS
VUZCUlN4RFFVRkRMRVZCUVVVc1NVRkJTU3hGUVVGRkxFMUJRVTBzUTBGQlF5eERRVUZETzB0QlEy
eEVPenRCUVVWRUxHVkJRVmNzUlVGQlJTeHhRa0ZCVXl4SlFVRkpMRVZCUVVVc1MwRkJTeXhGUVVG
RkxFTkJRVU1zUlVGQlJTeExRVUZMTEVWQlFVVXNUVUZCVFN4RlFVRkZPenM3T3p0QlFVTnVSQ3hW
UVVGSkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNUVUZCVFN4SlFVRkpMRWxCUVVrc1EwRkJR
eXhQUVVGUExFTkJRVU1zWVVGQllTeEZRVUZGTzBGQlEzSkVMRmxCUVVrc1EwRkJReXhKUVVGSkxF
TkJRVU1zV1VGQldTeERRVUZETEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1RVRkJUU3hKUVVG
SkxFMUJRVTBzUlVGQlJTeEpRVUZKTEVWQlFVVXNTMEZCU3l4RlFVRkZMRWxCUVVrc1EwRkJReXhE
UVVGRExFTkJRVU03UVVGRE1VVXNaVUZCVHp0UFFVTlNPenRCUVVWRUxGVkJRVWtzUjBGQlJ5eEhR
VUZITEV0QlFVc3NRMEZCUXl4TlFVRk5MRU5CUVVNN1FVRkRka0lzWVVGQlR5eERRVUZETEVkQlFV
Y3NSMEZCUnl4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRk96dEJRVVZ1UWl4WlFVRkpMRU5CUVVN
c1dVRkJXU3hEUVVGRExGVkJRVU1zVDBGQlR5eEZRVUZMTzBGQlF6ZENMR05CUVVrc1RVRkJUU3hI
UVVGSExFMUJRVXNzVlVGQlZTeERRVUZETEU5QlFVOHNSVUZCUlN4TFFVRkxMRU5CUVVNc1EwRkJR
eXhEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTTdPenRCUVVkMFJDeGpRVUZKTEVOQlFV
TXNTMEZCU3l4RlFVRkZPMEZCUTFZc2JVSkJRVThzUTBGQlF5eGhRVUZoTEVWQlFVVXNUVUZCVFN4
RlFVRkZMRXRCUVVzc1JVRkJSU3hQUVVGUExFTkJRVU1zUTBGQlF6dFhRVU5vUkN4TlFVRk5PenRC
UVVWTUxHMUNRVUZQTEVOQlFVTXNUVUZCVFN4RlFVRkZMRTFCUVUwc1EwRkJReXhEUVVGRE8xZEJR
M3BDTzFOQlEwWXNRMEZCUXl4RFFVRkRPenRQUVVWS08wdEJRMFk3T3pzN096czdPenRCUVZORUxI
bENRVUZ4UWl4RlFVRkZMR2xEUVVGWE8wRkJRMmhETEZWQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVN
c1EwRkJReXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEd0Q1FVRnJRaXhEUVVGRExFVkJRVVVz
UjBGQlJ5eEZRVUZGTEVsQlFVa3NRMEZCUXl4UlFVRlJMRVZCUVVVc1JVRkJSU3hKUVVGSkxFVkJR
VVVzU1VGQlNTeERRVUZETEZkQlFWY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hIUVVGSExF
TkJRVU1zUTBGQlF5eERRVUZETzB0QlEzWkhPenM3T3pzN096czdPMEZCVlVRc2JVSkJRV1VzUlVG
QlJTeDVRa0ZCVXl4TlFVRk5MRVZCUVVVc1NVRkJTU3hGUVVGRk8wRkJRM1JETEZWQlFVa3NRMEZC
UXl4WFFVRlhMRVZCUVVVc1EwRkJRenRCUVVOdVFpeFZRVUZKTEVOQlFVTXNWVUZCVlN4RFFVRkRM
RWxCUVVrc1EwRkJReXhEUVVGRE96czdPMEZCU1hSQ0xGVkJRVWtzU1VGQlNTeExRVUZMTEdWQlFX
VXNSVUZCUlR0QlFVTTFRaXhaUVVGSkxFOUJRVThzVFVGQlRTeExRVUZMTEZGQlFWRXNSVUZCUlR0
QlFVTTVRaXhqUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMU5C
UTNwQ0xFMUJRVTA3UVVGRFRDeGpRVUZKTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zVFVGQlRTeERR
VUZETEVOQlFVTTdVMEZETDBJN1QwRkRSanRMUVVOR096dEJRVVZFTEdGQlFWTXNSVUZCUlN4dFFr
RkJVeXhUUVVGVExFVkJRVVU3UVVGRE4wSXNWVUZCU1N4SlFVRkpMRU5CUVVNc1VVRkJVU3hGUVVG
Rk8wRkJRMnBDTEZsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03
VDBGRGFrSTdRVUZEUkN4VlFVRkpMRWxCUVVrc1EwRkJReXhaUVVGWkxFVkJRVVU3UVVGRGNrSXNX
VUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dEJRVU5vUWl4WlFV
RkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzA5QlEycENPMEZCUTBR
c1ZVRkJTU3hEUVVGRExHZENRVUZuUWl4RFFVRkRMRk5CUVZNc1IwRkJSeXhYUVVGWExFZEJRVWNz
U1VGQlNTeERRVUZETEVOQlFVTTdTMEZEZGtRN1FVRkRSQ3haUVVGUkxFVkJRVVVzYjBKQlFWYzdR
VUZEYmtJc1ZVRkJTU3hKUVVGSkxFTkJRVU1zU1VGQlNTeEZRVUZGTzBGQlEySXNXVUZCU1N4RFFV
RkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4
RFFVRkRPMDlCUXpkQ08wRkJRMFFzVlVGQlNTeERRVUZETEVsQlFVa3NSMEZCUnl4RlFVRkRMRTFC
UVUwc1JVRkJSU3hGUVVGRkxFVkJRVVVzUzBGQlN5eEZRVUZGTEVWQlFVVXNSVUZCUlN4UlFVRlJM
RVZCUVVVc1JVRkJSU3hGUVVGRkxFZEJRVWNzUlVGQlJTeEZRVUZGTEVWQlFVTXNRMEZCUXp0TFFV
TTFSRHRCUVVORUxGZEJRVThzUlVGQlJTeHRRa0ZCVnp0QlFVTnNRaXhWUVVGSkxFbEJRVWtzUjBG
QlJ5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRPMEZCUTNKQ0xGVkJRVWtzUTBGQlF5eEpRVUZK
TEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF6czdR
VUZGT1VJc1ZVRkJTU3hKUVVGSkxFTkJRVU1zVVVGQlVTeEZRVUZGTzBGQlEycENMRmxCUVVrc1Ew
RkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEdGQlFXRXNRMEZCUXl4SlFVRkpMRU5CUVVN
c1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF6dFBRVU42UXp0QlFVTkVMRlZCUVVrc1NVRkJTU3hE
UVVGRExGbEJRVmtzUlVGQlJUdEJRVU55UWl4WlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJR
VWtzUTBGQlF5eGhRVUZoTEVOQlFVTXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRExF
TkJRVU03UVVGRE4wTXNXVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zWVVG
QllTeERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRE8wOUJRek5E
T3p0QlFVVkVMRlZCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEdGQlFXRXNR
MEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF6dExRVU0xUXpzN096
czdPenM3UVVGUlJDeGpRVUZWTEVWQlFVVXNiMEpCUVZNc1RVRkJUU3hGUVVGRk8wRkJRek5DTEZW
QlFVa3NRMEZCUXl4blFrRkJaMElzUTBGQlF5eEpRVUZKTEVOQlFVTXNXVUZCV1N4RFFVRkRMRTFC
UVUwc1EwRkJReXhEUVVGRExFTkJRVU03UzBGRGJFUTdPenM3T3pzN096czdRVUZWUkN4bFFVRlhM
RVZCUVVVc2NVSkJRVk1zUzBGQlN5eEZRVUZGTzBGQlF6TkNMRlZCUVVrc1EwRkJReXhuUWtGQlow
SXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRMUVVNNVFqczdPenM3T3pzN096dEJRVlZFTEdW
QlFWY3NSVUZCUlN4eFFrRkJVeXhKUVVGSkxFVkJRVVU3UVVGRE1VSXNWVUZCU1N4SlFVRkpMRWxC
UVVrc1NVRkJTU3hGUVVGRk8wRkJRMmhDTEZsQlFVa3NRMEZCUXl4blFrRkJaMElzUTBGQlF5eEpR
VUZKTEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXp0UFFV
TnlSQ3hOUVVGTk8wRkJRMHdzV1VGQlNTeERRVUZETEdkQ1FVRm5RaXhEUVVGRExFbEJRVWtzUTBG
QlF5eERRVUZETzA5QlF6ZENPMHRCUTBZN096czdPenM3T3p0QlFWTkVMSEZDUVVGcFFpeEZRVUZC
TERKQ1FVRkRMRk5CUVZNc1JVRkJSU3hKUVVGSkxFVkJRVVU3UVVGRGFrTXNWVUZCU1N4alFVRmpM
RWRCUVVjc1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eFpRVUZaTEVWQlFVVXNTVUZCU1N4RlFV
RkZMRmRCUVZjc1EwRkJRenRWUVVOcVJTeFBRVUZQTEVkQlFVY3NTVUZCU1N4RFFVRkRMR1ZCUVdV
c1EwRkJReXhKUVVGSkxFVkJRVVVzVTBGQlV5eERRVUZETEVOQlFVTTdPMEZCUlhCRUxGVkJRVWtz
UTBGQlF5eFZRVUZWTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUTI1Q0xFOUJRVThzUlVGRFVDeEpR
VUZKTEVOQlFVTXNWVUZCVlN4RFFVRkRMRmxCUVZrc1EwRkJReXhqUVVGakxFVkJRVVVzUlVGQlJT
eEZRVUZGTEVOQlFVTXNTVUZCU1N4RlFVRkZMRTlCUVU4c1JVRkJSU3hYUVVGWExFVkJRVVVzVDBG
QlR5eERRVUZETEVOQlFVTXNSVUZEZGtZc1UwRkJVeXhEUVVOV0xFTkJRVU1zUTBGQlF6dExRVU5L
T3pzN096czdPenM3T3p0QlFWZEVMR2RDUVVGWkxFVkJRVVVzYzBKQlFWTXNVMEZCVXl4RlFVRkZM
RWxCUVVrc1JVRkJSU3hSUVVGUkxFVkJRVVU3UVVGRGFFUXNWVUZCU1N4VFFVRlRMRWRCUVVjc1NV
RkJTU3hEUVVGRExGRkJRVkVzUlVGQlJUdFZRVU16UWl4TlFVRk5MRWRCUVVjc1NVRkJTU3hEUVVG
RExGZEJRVmNzUTBGQlF5eFRRVUZUTEVWQlFVVXNTVUZCU1N4RFFVRkRPMVZCUXpGRExFMUJRVTBz
UjBGQlJ5eFJRVUZSTEVkQlFVY3NRMEZCUXl4TlFVRk5MRU5CUVVNc1NVRkJTU3hGUVVGRkxFMUJR
VTBzUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXpzN1FVRkZia1FzVlVGQlNTeE5RVUZOTEVkQlFV
Y3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zVFVGQlRTeEZRVUZGTEZO
QlFWTXNRMEZCUXl4RFFVRkRPMEZCUXpkRExGVkJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNUMEZC
VHl4RFFVRkRMRTFCUVUwc1JVRkJSVHRCUVVONFFpeGpRVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRM
RTFCUVUwc1JVRkJSU3hKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEhWQ1FVRjFRaXhEUVVGRExF
TkJRVU1zUTBGQlF6dFBRVU01UkR0QlFVTkVMRmxCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBG
QlJ5eERRVUZETEVOQlFVTTdPMEZCUldwQ0xGVkJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZC
U1N4RFFVRkRMRTFCUVUwc1EwRkJReXhaUVVGWkxFTkJRVU1zVFVGQlRTeEZRVUZGTEUxQlFVMHNS
VUZCUlN4TlFVRk5MRU5CUVVNc1ZVRkJWU3hEUVVGRExFTkJRVU1zUTBGQlF6dExRVU40UlRzN096
czdPenM3TzBGQlUwUXNjVUpCUVdsQ0xFVkJRVVVzTWtKQlFWTXNVMEZCVXl4RlFVRkZMRWxCUVVr
c1JVRkJSVHRCUVVNelF5eFZRVUZKTEUxQlFVMHNSMEZCUnl4SlFVRkpMRU5CUVVNc1YwRkJWeXhE
UVVGRExGTkJRVk1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0QlFVTXZReXhWUVVGSkxFTkJR
VU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1dVRkJXU3hEUVVGRExF
MUJRVTBzUTBGQlF5eEpRVUZKTEVWQlFVVXNUVUZCVFN4RlFVRkZMRTFCUVUwc1EwRkJReXhWUVVG
VkxFTkJRVU1zUTBGQlF5eERRVUZETzB0QlF6ZEZPenM3T3pzN096czdPenM3T3p0QlFXTkVMRzFD
UVVGbExFVkJRVVVzZVVKQlFWTXNTVUZCU1N4RlFVRkZMRlZCUVZVc1JVRkJSVHRCUVVNeFF5eFZR
VUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRE96dEJRVVV6UWl4VlFV
RkpMRk5CUVZNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVVVGQlVTeEZRVUZGTEVOQlFVTTdPMEZCUldo
RExGVkJRVWtzUTBGQlF5eFRRVUZUTEVWQlFVVXNRMEZCUXp0QlFVTnFRaXhWUVVGSkxFMUJRVTBz
UjBGQlJ5eEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFVkJR
VVVzVlVGQlZTeERRVUZETEVOQlFVTTdPMEZCUlc1RUxGVkJRVWtzVlVGQlZTeEhRVUZITEVsQlFV
a3NRMEZCUXl4VlFVRlZMRWRCUVVjc1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eFRRVUZUTEVW
QlFVVXNTVUZCU1N4RlFVRkZMRkZCUVZFc1EwRkJReXhEUVVGRE96dEJRVVU1UlN4VlFVRkpMRTFC
UVUwc1IwRkJSeXhEUVVGRExFZEJRVWNzUlVGQlJTeFpRVUZaTEVWQlFVVXNWVUZCVlN4RlFVRkZM
RTFCUVUwc1JVRkJSU3hUUVVGVExFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTTdRVUZEY2tVc1ZV
RkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNUVUZCVFN4RlFVRkZPMEZCUTNo
Q0xHTkJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4WlFVRlpMRU5CUVVNN1FVRkRla0lz
WTBGQlRTeERRVUZETEVsQlFVa3NRMEZEVkN4elFrRkJjMElzUlVGRGRFSXNTVUZCU1N4RFFVRkRM
Rk5CUVZNc1EwRkJReXgxUWtGQmRVSXNRMEZCUXl4RFFVTjRReXhEUVVGRE8wOUJRMGc3TzBGQlJV
UXNWVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVOT0xFZEJRVWNzUlVGQlJTeE5RVUZOTEVW
QlExWXNUVUZCVFN4RFFVRkRMRlZCUVZVc1IwRkJSeXhEUVVGRExFdEJRVXNzUlVGQlJTeE5RVUZO
TEVOQlFVTXNWVUZCVlN4RFFVRkRMRWRCUVVjc1JVRkJSU3hGUVVGSExFbEJRVWtzUlVGRE0wUXNj
VUpCUVhGQ0xFVkJRVVVzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4WlFVRlpMRU5CUVVNc1JV
RkJSU3hMUVVGTExFVkJRekZFTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1dVRkJXU3hEUVVG
RExGRkJRVkVzUlVGQlJTeE5RVUZOTEVWQlFVVXNUVUZCVFN4RFFVRkRMRlZCUVZVc1EwRkJReXhG
UVVGRkxHRkJRV0VzUTBGREwwVXNRMEZCUXl4RFFVRkRPMHRCUTBvN096czdPenM3T3p0QlFWTkVM
R2xDUVVGaExFVkJRVVVzZFVKQlFWTXNVMEZCVXl4RlFVRkZMRWxCUVVrc1JVRkJSU3hOUVVGTkxF
VkJRVVU3UVVGREwwTXNWVUZCU1N4TlFVRk5MRWRCUVVjc1JVRkJSVHRWUVVOWUxFOUJRVThzUjBG
QlJ5eEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGRExFVkJRVVVz
VFVGQlRTeERRVUZETEVOQlFVTTdPMEZCUldoRUxGVkJRVWtzVTBGQlV5eEZRVUZGTzBGQlEySXNX
VUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhSUVVGUkxFVkJRVVVzUTBGQlF6dEJRVU4yUWl4bFFV
RlBMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU03VDBGRGNrSTdPMEZCUlVRc1ZVRkJTU3hOUVVG
TkxFVkJRVVU3UVVGRFZpeGxRVUZQTEVOQlFVTXNUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhU
UVVGVExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdUMEZEZWtNN1FVRkRSQ3hoUVVGUExFTkJR
VU1zVDBGQlR5eEhRVUZITEZOQlFWTXNRMEZCUXp0QlFVTTFRaXhoUVVGUExFTkJRVU1zVVVGQlVT
eEhRVUZITEZWQlFWVXNRMEZCUXp0QlFVTTVRaXhoUVVGUExFTkJRVU1zVlVGQlZTeEhRVUZITEhO
Q1FVRnpRaXhEUVVGRE96dEJRVVUxUXl4VlFVRkpMRU5CUVVNc1UwRkJVeXhGUVVGRk8wRkJRMlFz
WTBGQlRTeERRVUZETEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRExGVkJR
VlVzUlVGQlJTeEpRVUZKTEVWQlFVVXNVMEZCVXl4RFFVRkRMRU5CUVVNc1EwRkJRenRQUVVNNVJD
eE5RVUZOTzBGQlEwd3NZMEZCVFN4RFFVRkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zUTBG
QlF6dFBRVU4wUWpzN1FVRkZSQ3hWUVVGSkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNUVUZC
VFN4RlFVRkZPMEZCUTNaQ0xHVkJRVThzUTBGQlF5eE5RVUZOTEVkQlFVY3NVVUZCVVN4RFFVRkRP
MDlCUXpOQ08wRkJRMFFzWVVGQlR5eEhRVUZITEVsQlFVa3NRMEZCUXl4aFFVRmhMRU5CUVVNc1Qw
RkJUeXhEUVVGRExFTkJRVU03UVVGRGRFTXNXVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhQUVVG
UExFTkJRVU1zUTBGQlF6czdRVUZGY2tJc1ZVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZK
TEVOQlFVTXNUVUZCVFN4RFFVRkRMRmxCUVZrc1EwRkJReXg1UWtGQmVVSXNSVUZCUlN4RlFVRkZM
RVZCUVVVc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF6dExRVU0xUlRzN096czdPenM3UVVGUlJD
eG5Ra0ZCV1N4RlFVRkZMSE5DUVVGVExFZEJRVWNzUlVGQlJUdEJRVU14UWl4VlFVRkpMRXRCUVVz
c1IwRkJSeXhKUVVGSkxFTkJRVU1zVVVGQlVTeEZRVUZGTzFWQlEzWkNMRTlCUVU4c1dVRkJRVHRW
UVVOUUxFbEJRVWtzV1VGQlFUdFZRVU5LTEVWQlFVVXNXVUZCUVN4RFFVRkRPenRCUVVWUUxGVkJR
VWtzU1VGQlNTeERRVUZETEZGQlFWRXNSVUZCUlR0QlFVTnFRaXhWUVVGRkxFZEJRVWNzU1VGQlNT
eERRVUZETEZGQlFWRXNSVUZCUlN4RFFVRkRPMDlCUTNSQ08wRkJRMFFzVlVGQlNTeEpRVUZKTEVO
QlFVTXNXVUZCV1N4RlFVRkZPMEZCUTNKQ0xGbEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNVVUZC
VVN4RlFVRkZMRU5CUVVNN1FVRkRka0lzWlVGQlR5eEhRVUZITEVsQlFVa3NRMEZCUXl4UlFVRlJM
RVZCUVVVc1EwRkJRenRQUVVNelFqczdRVUZGUkN4VlFVRkpMRWxCUVVrc1IwRkJSeXhKUVVGSkxF
TkJRVU1zU1VGQlNTeERRVUZETzBGQlEzSkNMRlZCUVVrc1QwRkJUeXhGUVVGRk8wRkJRMWdzV1VG
QlNTeERRVUZETEZGQlFWRXNRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhQUVVGUExFTkJRVU03
VDBGRE9VSTdRVUZEUkN4VlFVRkpMRWxCUVVrc1JVRkJSVHRCUVVOU0xGbEJRVWtzUTBGQlF5eExR
VUZMTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRE8wOUJRM2hDTzBGQlEw
UXNWVUZCU1N4RlFVRkZMRVZCUVVVN1FVRkRUaXhaUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVk
QlFVY3NRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJRenRQUVVOd1FqdEJRVU5FTEZWQlFVa3NRMEZC
UXl4TlFVRk5MRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUzBGQlN5eERRVUZETzB0QlF6RkNP
enRCUVVWRUxGVkJRVTBzUlVGQlJTeG5Ra0ZCVXl4SlFVRkpMRVZCUVVVc1NVRkJTU3hGUVVGRkxF
dEJRVXNzUlVGQlJUdEJRVU5zUXl4VlFVRkpMRWxCUVVrc1MwRkJTeXhaUVVGWkxFVkJRVVU3UVVG
RGVrSXNXVUZCU1N4RFFVRkRMR2RDUVVGblFpeERRVU5xUWl4alFVRmpMRWRCUVVjc1NVRkJTU3hE
UVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEZOQlFWTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJR
eXhEUVVGRExFZEJRVWNzUjBGQlJ5eEpRVU5xUkN4TFFVRkxMRWRCUVVjc1MwRkJTeXhIUVVGSExF
bEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNSMEZCUnl4SFFVRkhMRXRCUVVzc1EwRkJReXhIUVVG
SExFVkJRVVVzUTBGQlFTeEJRVUZETEVOQlFVTXNRMEZCUXp0UFFVTXpSQ3hOUVVGTkxFbEJRVWtz
U1VGQlNTeExRVUZMTEdkQ1FVRm5RaXhGUVVGRk8wRkJRM0JETEZsQlFVa3NRMEZCUXl4VlFVRlZM
RU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03VDBGRGRrSXNUVUZCVFN4SlFVRkpMRWxCUVVrc1Mw
RkJTeXhsUVVGbExFVkJRVVU3UVVGRGJrTXNXVUZCU1N4RFFVRkRMR2RDUVVGblFpeERRVUZETEUx
QlFVMHNRMEZCUXl4RFFVRkRPMDlCUXk5Q0xFMUJRVTA3UVVGRFRDeFpRVUZKTEVOQlFVTXNaMEpC
UVdkQ0xFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdUMEZETDBJN1MwRkRSanM3T3p0QlFVbEVM
RmxCUVZFc1JVRkJSU3hyUWtGQmEwSTdPMEZCUlRWQ0xHMUNRVUZsTEVWQlFVVXNlVUpCUVZNc1Yw
RkJWeXhGUVVGRkxFOUJRVThzUlVGQlJUdEJRVU01UXl4VlFVRkpMRkZCUVZFc1IwRkJSeXhYUVVG
WExFTkJRVU1zVVVGQlVUdFZRVUZGTEV0QlFVc3NXVUZCUVR0VlFVRkZMRkZCUVZFc1dVRkJRU3hE
UVVGRE96dEJRVVZ5UkN4WFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERR
VUZETEVkQlFVY3NVVUZCVVN4RFFVRkRMRTFCUVUwc1JVRkJSU3hEUVVGRExFZEJRVWNzUTBGQlF5
eEZRVUZGTEVOQlFVTXNSVUZCUlN4RlFVRkZPMEZCUXk5RExHRkJRVXNzUjBGQlJ5eFJRVUZSTEVO
QlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRjRUlzWjBKQlFWRXNSMEZCUnl4SlFVRkpMRWxC
UVVrc1EwRkJReXhSUVVGUkxFVkJRVVVzUTBGQlF6czdRVUZGTDBJc1dVRkJTU3hSUVVGUkxFZEJR
VWNzU1VGQlNTeERRVUZETEc5Q1FVRnZRaXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZET3p0QlFV
Vm9SQ3haUVVGSkxGRkJRVkVzU1VGQlNTeEpRVUZKTEVWQlFVVTdRVUZEY0VJc1kwRkJTU3hEUVVG
RExFOUJRVThzUTBGQlF5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhE
UVVGRE8wRkJReTlDTEdOQlFVa3NTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJR
VU1zVVVGQlVTeERRVUZETEUxQlFVMHNRMEZCUXp0QlFVTjZReXhsUVVGTExFTkJRVU1zUzBGQlN5
eEhRVUZITEV0QlFVc3NRMEZCUXp0QlFVTndRaXhsUVVGTExFTkJRVU1zU1VGQlNTeEhRVUZITEZO
QlFWTXNSMEZCUnl4TFFVRkxMRU5CUVVNN1FVRkRMMElzWTBGQlNTeERRVUZETEU5QlFVOHNRMEZC
UXl4UlFVRlJMRU5CUVVNc1MwRkJTeXhEUVVGRExFZEJRVWNzVVVGQlVTeERRVUZETEU5QlFVOHNR
MEZCUXl4TFFVRkxMRVZCUVVVc1QwRkJUeXhGUVVGRkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVWQlFV
VXNRMEZCUXl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRExFTkJRVU03UVVGRGFFY3NZMEZCU1N4
RFFVRkRMRTlCUVU4c1EwRkJReXhWUVVGVkxFTkJRVU1zUzBGQlN5eERRVUZETEVkQlFVY3NVVUZC
VVN4RFFVRkRMRlZCUVZVc1EwRkJRenRCUVVOeVJDeGpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRM
RmxCUVZrc1EwRkJReXhMUVVGTExFTkJRVU1zUjBGQlJ5eExRVUZMTEVOQlFVTTdPMEZCUlhwRExH
TkJRVWtzUTBGQlF5eFRRVUZUTEVkQlFVY3NTVUZCU1N4RFFVRkRMRk5CUVZNc1NVRkJTU3hSUVVG
UkxFTkJRVU1zVTBGQlV5eERRVUZETzBGQlEzUkVMR05CUVVrc1EwRkJReXhqUVVGakxFZEJRVWNz
U1VGQlNTeERRVUZETEdOQlFXTXNTVUZCU1N4UlFVRlJMRU5CUVVNc1kwRkJZeXhEUVVGRE8wRkJR
M0pGTEdWQlFVc3NRMEZCUXl4VFFVRlRMRWRCUVVjc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF6
dEJRVU5xUXl4bFFVRkxMRU5CUVVNc1kwRkJZeXhIUVVGSExFbEJRVWtzUTBGQlF5eGpRVUZqTEVO
QlFVTTdVMEZETlVNc1RVRkJUVHRCUVVOTUxHVkJRVXNzUTBGQlF5eExRVUZMTEVkQlFVY3NVVUZC
VVN4RFFVRkRMRXRCUVVzc1EwRkJRenRCUVVNM1FpeGxRVUZMTEVOQlFVTXNTVUZCU1N4SFFVRkhM
Rk5CUVZNc1IwRkJSeXhSUVVGUkxFTkJRVU1zUzBGQlN5eERRVUZET3p0QlFVVjRReXhqUVVGSkxF
TkJRVU1zVTBGQlV5eEhRVUZITEVsQlFVa3NRMEZCUXl4VFFVRlRMRWxCUVVrc1VVRkJVU3hEUVVG
RExGTkJRVk1zUTBGQlF6dEJRVU4wUkN4alFVRkpMRU5CUVVNc1kwRkJZeXhIUVVGSExFbEJRVWtz
UTBGQlF5eGpRVUZqTEVsQlFVa3NVVUZCVVN4RFFVRkRMR05CUVdNc1EwRkJRenRUUVVOMFJUdFBR
VU5HTzB0QlEwWTdRVUZEUkN4M1FrRkJiMElzUlVGQlJTdzRRa0ZCVXl4TFFVRkxMRVZCUVVVN1FV
RkRjRU1zVjBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1IwRkJSeXhIUVVG
SExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNXVUZCV1N4RFFVRkRMRTFCUVUwc1JVRkJSU3hE
UVVGRExFZEJRVWNzUjBGQlJ5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RlFVRkZPMEZCUTNCRkxGbEJR
VWtzVjBGQlZ5eEhRVUZITEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1dVRkJXU3hEUVVGRExF
TkJRVU1zUTBGQlF5eERRVUZETzBGQlF5OURMRmxCUVVrc1YwRkJWeXhKUVVGSkxGZEJRVmNzUTBG
QlF5eE5RVUZOTEVOQlFVTXNTMEZCU3l4RFFVRkRMRVZCUVVVN1FVRkROVU1zYVVKQlFVOHNWMEZC
Vnl4RFFVRkRPMU5CUTNCQ08wOUJRMFk3UzBGRFJqczdRVUZGUkN4eFFrRkJhVUlzUlVGQlJTd3lR
a0ZCVXl4SlFVRkpMRVZCUVVVN1FVRkRhRU1zVlVGQlNTeExRVUZMTEVkQlFVY3NTVUZCU1N4RFFV
RkRMRmRCUVZjc1EwRkJReXhSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETzFWQlEzWkRMR0ZCUVdF
c1IwRkJSeXhEUVVGRExFdEJRVXNzUTBGQlF5eExRVUZMTEVWQlFVVXNUVUZCVFN4RlFVRkZMRXRC
UVVzc1EwRkJReXhYUVVGWExFTkJRVU1zUTBGQlF6czdRVUZGTjBRc1ZVRkJTU3hKUVVGSkxFTkJR
VU1zWTBGQll5eEpRVUZKTEVsQlFVa3NRMEZCUXl4VFFVRlRMRVZCUVVVN1FVRkRla01zY1VKQlFX
RXNRMEZCUXl4SlFVRkpMRU5CUVVNc1lVRkJZU3hEUVVGRExFTkJRVU03VDBGRGJrTTdRVUZEUkN4
VlFVRkpMRWxCUVVrc1EwRkJReXhUUVVGVExFVkJRVVU3UVVGRGJFSXNjVUpCUVdFc1EwRkJReXhK
UVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTTdUMEZET1VJN08wRkJSVVFzWVVGQlR5eHZR
a0ZCYjBJc1IwRkJSeXhoUVVGaExFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4SFFV
RkhMRWRCUVVjc1EwRkJRenRMUVVNNVJEczdRVUZGUkN4bFFVRlhMRVZCUVVVc2NVSkJRVk1zU1VG
QlNTeEZRVUZGTzBGQlF6RkNMRlZCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZE
TEVsQlFVa3NRMEZCUXl4RlFVRkZPMEZCUTNwQ0xGbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNT
VUZCU1N4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRE8wRkJRelZDTEZsQlFVa3NRMEZCUXl4VFFV
RlRMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0
UFFVTm9RenRMUVVOR096dEJRVVZFTEZGQlFVa3NSVUZCUlN4alFVRlRMRWxCUVVrc1JVRkJSVHRC
UVVOdVFpeFZRVUZKTEVWQlFVVXNTVUZCU1N4WlFVRlpMRTlCUVU4c1EwRkJRU3hCUVVGRExFVkJR
VVU3UVVGRE9VSXNXVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNT
eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMDlCUXk5Q096dEJRVVZFTEZWQlFVa3NRMEZCUXl4
WFFVRlhMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzBGQlF6VkNMR0ZC
UVU4c1NVRkJTU3hEUVVGRE8wdEJRMkk3TzBGQlJVUXNiMEpCUVdkQ0xFVkJRVVVzTUVKQlFWTXNT
VUZCU1N4RlFVRkZPMEZCUXk5Q0xGVkJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4UFFV
RlBMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF6dExRVU01UWpzN1FVRkZSQ3hqUVVG
VkxFVkJRVVVzYjBKQlFWTXNUVUZCVFN4RlFVRkZPMEZCUXpOQ0xGVkJRVWtzU1VGQlNTeERRVUZE
TEdOQlFXTXNSVUZCUlR0QlFVTjJRaXhaUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NR
MEZEV2l4SlFVRkpMRU5CUVVNc1kwRkJZeXhEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFV
TXNXVUZCV1N4RFFVRkRMRWxCUVVrc1EwRkJReXhqUVVGakxFTkJRVU1zUlVGQlJTeEpRVUZKTEVO
QlFVTXNaVUZCWlN4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVNNVJpeFpRVUZKTEVOQlFVTXNZMEZC
WXl4SFFVRkhMRk5CUVZNc1EwRkJRenRQUVVOcVF6czdRVUZGUkN4VlFVRkpMRTFCUVUwc1JVRkJS
VHRCUVVOV0xGbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1Ew
RkJReXhEUVVGRE8wOUJRekZDTzB0QlEwWTdPMEZCUlVRc1owSkJRVmtzUlVGQlJTeHpRa0ZCVXl4
UlFVRlJMRVZCUVVVN1FVRkRMMElzVlVGQlNTeE5RVUZOTEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5C
UVVNN1ZVRkRaQ3hMUVVGTExGbEJRVUU3VlVGRFRDeFpRVUZaTEZsQlFVRTdWVUZEV2l4WFFVRlhM
RmxCUVVFc1EwRkJRenM3TzBGQlIyaENMRlZCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVVVGQlVT
eEZRVUZGTEVWQlFVVTdRVUZEY0VJc1kwRkJUU3d3UWtGQll5dzBRa0ZCTkVJc1EwRkJReXhEUVVG
RE8wOUJRMjVFT3pzN1FVRkhSQ3hWUVVGSkxFZEJRVWNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNVVUZC
VVN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE96dEJRVVU1UWl4VlFVRkpMRWRCUVVjc1dVRkJX
U3hQUVVGUExFVkJRVVU3TzBGQlJURkNMR0ZCUVVzc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5
eExRVUZMTEVOQlFVTXNRMEZCUXp0QlFVTndRaXhqUVVGTkxFZEJRVWNzUTBGQlF5eEhRVUZITEVW
QlFVVXNTMEZCU3l4RFFVRkRMRU5CUVVNN1FVRkRkRUlzYlVKQlFWY3NSMEZCUnl4SlFVRkpMRU5C
UVVNN1QwRkRjRUlzVFVGQlRUczdRVUZGVEN4dlFrRkJXU3hIUVVGSExFbEJRVWtzUTBGQlF6dEJR
VU53UWl4WlFVRkpMRXRCUVVrc1IwRkJSeXhKUVVGSkxFTkJRVU1zVTBGQlV5eEZRVUZGTEVOQlFV
TTdPMEZCUlRWQ0xHTkJRVTBzUjBGQlJ5eERRVUZETEVsQlFVa3NSVUZCUlN4SlFVRkpMRU5CUVVN
c1NVRkJTU3hEUVVGRExFdEJRVWtzUTBGQlF5eEZRVUZGTEV0QlFVc3NSVUZCUlN4SFFVRkhMRVZC
UVVVc1IwRkJSeXhEUVVGRExFTkJRVU03UVVGRGJFUXNZVUZCU3l4SFFVRkhMRWxCUVVrc1EwRkJR
eXhSUVVGUkxFVkJRVVVzUTBGQlF6dFBRVU42UWpzN1FVRkZSQ3hWUVVGSkxFbEJRVWtzUjBGQlJ5
eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1JVRkJSU3hMUVVGTExFTkJRVU1zUTBG
QlF6czdRVUZGZEVNc1ZVRkJTU3hEUVVGRExGZEJRVmNzUlVGQlJUdEJRVU5vUWl4WlFVRkpMRU5C
UVVNc1VVRkJVU3hGUVVGRkxFTkJRVU03VDBGRGFrSTdRVUZEUkN4VlFVRkpMRmxCUVZrc1JVRkJS
VHRCUVVOb1FpeFpRVUZKTEVOQlFVTXNVMEZCVXl4RlFVRkZMRU5CUVVNN1QwRkRiRUk3UVVGRFJD
eFZRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VG
QlNTeEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNN1MwRkRja003TzBGQlJVUXNZVUZC
VXl4RlFVRkZMSEZDUVVGWE8wRkJRM0JDTEZWQlFVa3NRMEZCUXl4VFFVRlRMRVZCUVVVc1EwRkJR
enRCUVVOcVFpeFZRVUZKTEVsQlFVa3NRMEZCUXl4VFFVRlRMRWRCUVVjc1NVRkJTU3hEUVVGRExG
TkJRVk1zUTBGQlF5eE5RVUZOTEVWQlFVVTdRVUZCUlN4WlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVG
RExFbEJRVWtzUTBGQlF5eFBRVUZQTEVkQlFVY3NTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhE
UVVGRE8wOUJRVVU3UVVGRE9VWXNZVUZCVHl4SlFVRkpMRU5CUVVNc1dVRkJXU3hGUVVGRkxFTkJR
VU03UzBGRE5VSTdRVUZEUkN4blFrRkJXU3hGUVVGRkxIZENRVUZYTzBGQlEzWkNMR0ZCUVU4c1Qw
RkJUeXhIUVVGSExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTTdTMEZEYWtNN1FVRkRSQ3hsUVVG
WExFVkJRVVVzZFVKQlFWYzdRVUZEZEVJc1ZVRkJTU3hYUVVGWExFZEJRVWNzU1VGQlNTeERRVUZE
TEZkQlFWY3NRMEZCUXp0QlFVTnVReXhWUVVGSkxFTkJRVU1zVjBGQlZ5eEhRVUZITEVWQlFVVXNR
MEZCUXp0QlFVTjBRaXhYUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4SFFV
RkhMRWRCUVVjc1YwRkJWeXhEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETEVkQlFVY3NSMEZCUnl4
RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRk8wRkJRM1JFTEZsQlFVa3NTMEZCU3l4SFFVRkhMRmRC
UVZjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6czdRVUZGTTBJc1dVRkJTU3hMUVVGTExGbEJR
VmtzVDBGQlR5eEZRVUZGTzBGQlF6VkNMR05CUVVrc1EwRkJReXhaUVVGWkxFTkJRVU1zU1VGQlNT
eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMU5CUXk5Q0xFMUJRVTA3UVVGRFRDeGpRVUZKTEV0
QlFVc3NSMEZCUnl4SlFVRkpMRU5CUVVNc1UwRkJVeXhGUVVGRkxFTkJRVU03UVVGRE4wSXNZMEZC
U1N4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRExFdEJRVXNzUlVGQlJTeExRVUZMTEVWQlFVVXNT
MEZCU3l4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU03UVVGRE5VTXNZMEZCU1N4RFFV
RkRMRmxCUVZrc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdVMEZETDBJ
N1QwRkRSanRMUVVOR08wRkJRMFFzV1VGQlVTeEZRVUZGTEc5Q1FVRlhPMEZCUTI1Q0xHRkJRVThz
U1VGQlNTeERRVUZETEZkQlFWY3NRMEZCUXl4TlFVRk5MRU5CUVVNN1MwRkRhRU03TzBGQlJVUXNX
VUZCVVN4RlFVRkZMR3RDUVVGVExFOUJRVThzUlVGQlJUdEJRVU14UWl4VlFVRkpMRTFCUVUwc1Iw
RkJSeXhKUVVGSkxFTkJRVU1zVVVGQlVTeEZRVUZGTzFWQlEzaENMRWxCUVVrc1IwRkJSeXhEUVVG
RExFMUJRVTBzUjBGQlJ5eEpRVUZKTEVOQlFVTXNWMEZCVnl4SFFVRkhMRWxCUVVrc1EwRkJReXha
UVVGWkxFTkJRVUVzUTBGQlJTeEhRVUZITEVWQlFVVXNRMEZCUXpzN1FVRkZha1VzVlVGQlNTeERR
VUZETEU5QlFVOHNTVUZCU3l4SlFVRkpMRmxCUVZrc1QwRkJUeXhCUVVGRExFVkJRVVU3UVVGRGVr
TXNaVUZCVHl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRE8wOUJRMjVDTEUxQlFVMDdRVUZEVEN4
WlFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRk96dEJRVVZZTEdOQlFVa3NRMEZCUXl4SlFVRkpMRU5C
UVVNc1UwRkJVeXhGUVVGRk8wRkJRMjVDTEd0Q1FVRk5MREJDUVVGakxHMUNRVUZ0UWl4RFFVRkRM
RU5CUVVNN1YwRkRNVU03UVVGRFJDeGpRVUZKTEVOQlFVTXNVMEZCVXl4RlFVRkZMRU5CUVVNN1Uw
RkRiRUk3UVVGRFJDeGxRVUZQTEVsQlFVa3NRMEZCUXp0UFFVTmlPMHRCUTBZN08wRkJSVVFzV1VG
QlVTeEZRVUZGTEc5Q1FVRlhPMEZCUTI1Q0xGVkJRVWtzUzBGQlN5eEhRVUZKTEVsQlFVa3NRMEZC
UXl4UlFVRlJMRVZCUVVVc1IwRkJSeXhKUVVGSkxFTkJRVU1zVjBGQlZ5eEhRVUZITEVsQlFVa3NR
MEZCUXl4WlFVRlpMRUZCUVVNN1ZVRkRhRVVzU1VGQlNTeEhRVUZITEV0QlFVc3NRMEZCUXl4TFFV
RkxMRU5CUVVNc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZET3pzN1FVRkhia01zVlVG
QlNTeEpRVUZKTEZsQlFWa3NUMEZCVHl4RlFVRkZPMEZCUXpOQ0xHVkJRVThzU1VGQlNTeERRVUZE
TEV0QlFVc3NRMEZCUXp0UFFVTnVRaXhOUVVGTk8wRkJRMHdzWlVGQlR5eEpRVUZKTEVOQlFVTTdU
MEZEWWp0TFFVTkdPenRCUVVWRUxHVkJRVmNzUlVGQlJTeHhRa0ZCVXl4UFFVRlBMRVZCUVVVN1FV
RkROMElzVlVGQlNTeEpRVUZKTEVOQlFVTXNVMEZCVXl4SlFVRkpMRTlCUVU4c1JVRkJSVHRCUVVN
M1FpeGxRVUZQTEZOQlFWTXNSMEZCUnl4UFFVRlBMRWRCUVVjc1IwRkJSeXhEUVVGRE8wOUJRMnhE
TEUxQlFVMDdRVUZEVEN4bFFVRlBMRTlCUVU4c1IwRkJSeXhQUVVGUExFTkJRVU03VDBGRE1VSTdT
MEZEUmpzN1FVRkZSQ3huUWtGQldTeEZRVUZGTEhOQ1FVRlRMRWRCUVVjc1JVRkJSVHRCUVVNeFFp
eGhRVUZQTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1dVRkJXU3hEUVVGRExFZEJRVWNzUTBG
QlF5eERRVUZETzB0QlEzUkRPenRCUVVWRUxHbENRVUZoTEVWQlFVVXNkVUpCUVZNc1IwRkJSeXhG
UVVGRk8wRkJRek5DTEdGQlFVOHNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhoUVVGaExFTkJR
VU1zUjBGQlJ5eERRVUZETEVOQlFVTTdTMEZEZGtNN08wRkJSVVFzWVVGQlV5eEZRVUZGTEcxQ1FV
RlRMRWxCUVVrc1JVRkJSVHRCUVVONFFpeFZRVUZKTEVkQlFVY3NSMEZCUnl4SlFVRkpMRU5CUVVN
c1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzBGQlF6ZENMRlZCUVVrc1IwRkJSeXhG
UVVGRk8wRkJRMUFzVjBGQlJ5eERRVUZETEdOQlFXTXNSVUZCUlN4RFFVRkRPMEZCUTNKQ0xHVkJR
VThzUjBGQlJ5eERRVUZETzA5QlExbzdPMEZCUlVRc1UwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF5
eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBG
QlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1FVRkRiRVFzVTBGQlJ5eERRVUZE
TEZOQlFWTXNSMEZCUnl4SlFVRkpMRU5CUVVNN1FVRkRja0lzVTBGQlJ5eERRVUZETEdOQlFXTXNS
MEZCUnl4RFFVRkRMRU5CUVVNN08wRkJSWFpDTEdGQlFVOHNSMEZCUnl4RFFVRkRPMHRCUTFvN08w
RkJSVVFzWlVGQlZ5eEZRVUZGTEhGQ1FVRlRMRk5CUVZNc1JVRkJSU3hKUVVGSkxFVkJRVVVzVjBG
QlZ5eEZRVUZGTzBGQlEyeEVMRlZCUVVrc1RVRkJUU3hIUVVGSExFVkJRVVU3VlVGRFdDeFZRVUZW
TEVkQlFVY3NTVUZCU1N4RFFVRkRMR1ZCUVdVc1EwRkJReXhKUVVGSkxFVkJRVVVzVTBGQlV5eEZR
VUZGTEUxQlFVMHNSVUZCUlN4WFFVRlhMRU5CUVVNc1EwRkJRenRCUVVNMVJTeFZRVUZKTEZkQlFW
Y3NSMEZCUnl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRExGTkJRVk1zUlVGQlJTeEpRVUZKTEVW
QlFVVXNVVUZCVVN4RFFVRkRPMVZCUTNoRUxGZEJRVmNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNVMEZC
VXl4RFFVRkpMRWxCUVVrc1EwRkJReXhYUVVGWExFTkJRVU1zUTBGQlF5eERRVUZETEcxQ1FVRmpM
RWxCUVVrc1EwRkJReXhYUVVGWExFTkJRVU1zUTBGQlF5eERRVUZETEZkQlFWRXNRMEZCUXpzN1FV
RkZha2NzWVVGQlR6dEJRVU5NTEdOQlFVMHNSVUZCUlN4TlFVRk5PMEZCUTJRc2EwSkJRVlVzUlVG
QlJTeFZRVUZWTzBGQlEzUkNMRmxCUVVrc1JVRkJSU3hYUVVGWE8wRkJRMnBDTEd0Q1FVRlZMRVZC
UVVVc1EwRkJReXhYUVVGWExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRP
MDlCUTNwRExFTkJRVU03UzBGRFNEczdRVUZGUkN4bFFVRlhMRVZCUVVVc2NVSkJRVk1zVFVGQlRT
eEZRVUZGTEZOQlFWTXNSVUZCUlN4TlFVRk5MRVZCUVVVN1FVRkRMME1zVlVGQlNTeFBRVUZQTEVk
QlFVY3NSVUZCUlR0VlFVTmFMRkZCUVZFc1IwRkJSeXhGUVVGRk8xVkJRMklzUzBGQlN5eEhRVUZI
TEVWQlFVVTdWVUZEVml4SFFVRkhMRWRCUVVjc1JVRkJSVHRWUVVOU0xGVkJRVlVzUjBGQlJ5eERR
VUZETEUxQlFVMDdWVUZEY0VJc1MwRkJTeXhaUVVGQkxFTkJRVU03TzBGQlJWWXNWVUZCU1N4VlFV
RlZMRVZCUVVVN1FVRkRaQ3hqUVVGTkxFZEJRVWNzUlVGQlJTeERRVUZETzA5QlEySTdPMEZCUlVR
c1lVRkJUeXhEUVVGRExFbEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNXVUZCV1N4RFFVRkRMRTFC
UVUwc1EwRkJReXhEUVVGRE8wRkJRM3BETEdGQlFVOHNRMEZCUXl4SlFVRkpMRWRCUVVjc1NVRkJT
U3hEUVVGRExGRkJRVkVzUlVGQlJTeERRVUZET3p0QlFVVXZRaXhWUVVGSkxFbEJRVWtzUTBGQlF5
eFJRVUZSTEVWQlFVVTdRVUZEYWtJc1pVRkJUeXhEUVVGRExFOUJRVThzUjBGQlJ5eEpRVUZKTEVO
QlFVTXNVVUZCVVN4RlFVRkZMRU5CUVVNN1QwRkRia003UVVGRFJDeFZRVUZKTEVsQlFVa3NRMEZC
UXl4WlFVRlpMRVZCUVVVN1FVRkRja0lzWlVGQlR5eERRVUZETEZOQlFWTXNSMEZCUnl4SlFVRkpM
RU5CUVVNc1VVRkJVU3hGUVVGRkxFTkJRVU03UVVGRGNFTXNaVUZCVHl4RFFVRkRMRmxCUVZrc1Iw
RkJSeXhKUVVGSkxFTkJRVU1zVVVGQlVTeEZRVUZGTEVOQlFVTTdUMEZEZUVNN08wRkJSVVFzVlVG
QlNTeFBRVUZQTEVkQlFVY3NTVUZCU1N4RFFVRkRMRkZCUVZFc1JVRkJSVHRWUVVONlFpeFBRVUZQ
TEVkQlFVY3NTVUZCU1N4RFFVRkRMRkZCUVZFc1JVRkJSU3hEUVVGRE96czdPMEZCU1RsQ0xGVkJR
VWtzVDBGQlR5eEpRVUZKTEU5QlFVOHNSVUZCUlR0QlFVTjBRaXhsUVVGUExFTkJRVU1zUlVGQlJT
eEhRVUZITEU5QlFVOHNTVUZCU1N4blFrRkJaMElzUTBGQlF6dEJRVU42UXl4bFFVRlBMRU5CUVVN
c1QwRkJUeXhIUVVGSExFOUJRVThzU1VGQlNTeG5Ra0ZCWjBJc1EwRkJRenRQUVVNdlF6czdPenRC
UVVsRUxGVkJRVWtzUTBGQlF5eEhRVUZITEZOQlFWTXNRMEZCUXp0QlFVTnNRaXhoUVVGUExFTkJR
VU1zUlVGQlJTeEZRVUZGTzBGQlExWXNZVUZCU3l4SFFVRkhMRWxCUVVrc1EwRkJReXhSUVVGUkxF
VkJRVVVzUTBGQlF6dEJRVU40UWl4alFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUzBG
QlN5eERRVUZET3p0QlFVVnNRaXhaUVVGSkxFbEJRVWtzUTBGQlF5eFJRVUZSTEVWQlFVVTdRVUZE
YWtJc1lVRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4UlFVRlJM
RVZCUVVVc1EwRkJRenRUUVVNeFFqdEJRVU5FTEZsQlFVa3NTVUZCU1N4RFFVRkRMRmxCUVZrc1JV
RkJSVHRCUVVOeVFpeGxRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVG
RExGRkJRVkVzUlVGQlJTeERRVUZETzBGQlF6TkNMR3RDUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZE
TEVkQlFVY3NTVUZCU1N4RFFVRkRMRkZCUVZFc1JVRkJSU3hEUVVGRE8xTkJReTlDTzA5QlEwWTdP
MEZCUlVRc1ZVRkJTU3hWUVVGVkxFVkJRVVU3UVVGRFpDeGxRVUZQTEVOQlFVTXNTVUZCU1N4SFFV
RkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zWVVGQllTeERRVUZETEUxQlFVMHNRMEZCUXl4
RFFVRkRPMDlCUTJ4RU96dEJRVVZFTEZWQlFVa3NTVUZCU1N4RFFVRkRMRkZCUVZFc1JVRkJSVHRC
UVVOcVFpeGxRVUZQTEVOQlFVTXNSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJR
VU1zWVVGQllTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMDlCUXpsRE8wRkJRMFFzVlVGQlNT
eEpRVUZKTEVOQlFVTXNXVUZCV1N4RlFVRkZPMEZCUTNKQ0xHVkJRVThzUTBGQlF5eExRVUZMTEVk
QlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhoUVVGaExFTkJRVU1zUzBGQlN5eERRVUZE
TEVOQlFVTTdRVUZEYWtRc1pVRkJUeXhEUVVGRExGRkJRVkVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNU
VUZCVFN4RFFVRkRMR0ZCUVdFc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF6dFBRVU40UkRzN1FV
RkZSQ3hWUVVGSkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RlFVRkZPMEZCUTNK
Q0xHVkJRVThzUTBGQlF5eEpRVUZKTEVkQlFVY3NUVUZCVFN4RFFVRkRPMDlCUTNaQ08wRkJRMFFz
VlVGQlNTeEpRVUZKTEVOQlFVTXNZMEZCWXl4RlFVRkZPMEZCUTNaQ0xHVkJRVThzUTBGQlF5eFhR
VUZYTEVkQlFVY3NZVUZCWVN4RFFVRkRPMDlCUTNKRE8wRkJRMFFzWVVGQlR5eFBRVUZQTEVOQlFV
TTdTMEZEYUVJN08wRkJSVVFzYlVKQlFXVXNSVUZCUlN4NVFrRkJVeXhOUVVGTkxFVkJRVVVzVTBG
QlV5eEZRVUZGTEUxQlFVMHNSVUZCUlN4WFFVRlhMRVZCUVVVN1FVRkRhRVVzVlVGQlNTeFBRVUZQ
TEVkQlFVY3NTVUZCU1N4RFFVRkRMRmRCUVZjc1EwRkJReXhOUVVGTkxFVkJRVVVzVTBGQlV5eEZR
VUZGTEUxQlFVMHNRMEZCUXl4RFFVRkRPMEZCUXpGRUxHRkJRVThzUjBGQlJ5eEpRVUZKTEVOQlFV
TXNZVUZCWVN4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8wRkJRM1JETEZWQlFVa3NWMEZCVnl4
RlFVRkZPMEZCUTJZc1dVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZC
UXp0QlFVTTFRaXhqUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRP
MEZCUTNaQ0xHVkJRVThzUTBGQlF5eFZRVUZWTEVWQlFVVXNUMEZCVHl4RFFVRkRMRU5CUVVNN1Qw
RkRPVUlzVFVGQlRTeEpRVUZKTEUxQlFVMHNSVUZCUlR0QlFVTnFRaXhqUVVGTkxFTkJRVU1zU1VG
QlNTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMEZCUTNKQ0xHVkJRVThzUlVGQlJTeERRVUZE
TzA5QlExZ3NUVUZCVFR0QlFVTk1MR1ZCUVU4c1QwRkJUeXhEUVVGRE8wOUJRMmhDTzB0QlEwWTdS
MEZEUml4RFFVRkRPenRCUVVkR0xFRkJRVU1zUjBGQlFTeFpRVUZYTzBGQlExWXNVVUZCVFN4aFFV
RmhMRWRCUVVjc1EwRkRjRUlzYjBKQlFXOUNMRWRCUTNCQ0xESkNRVUV5UWl4SFFVTXpRaXg1UWtG
QmVVSXNSMEZEZWtJc09FSkJRVGhDTEVkQlF6bENMRzFDUVVGdFFpeEhRVU51UWl4blFrRkJaMElz
UjBGRGFFSXNkVUpCUVhWQ0xFZEJRM1pDTERCQ1FVRXdRaXhIUVVNeFFpeHJRMEZCYTBNc1IwRkRi
RU1zTUVKQlFUQkNMRWRCUXpGQ0xHbERRVUZwUXl4SFFVTnFReXcyUWtGQk5rSXNSMEZETjBJc0sw
SkJRU3RDTEVkQlF5OUNMSGxEUVVGNVF5eEhRVU42UXl4MVEwRkJkVU1zUjBGRGRrTXNhMEpCUVd0
Q0xFTkJRVUVzUTBGRGJFSXNTMEZCU3l4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE96dEJRVVZp
TEZGQlFVMHNZVUZCWVN4SFFVRkhMR3RDUVVGclFpeERRVUZETEdOQlFXTXNSMEZCUnl4RlFVRkZM
RU5CUVVNN08wRkJSVGRFTEZOQlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxF
TkJRVU1zUjBGQlJ5eGhRVUZoTEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNc1IwRkJSeXhEUVVG
RExFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdRVUZEY0VRc2JVSkJRV0VzUTBGQlF5eGhRVUZo
TEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU03UzBGRGVFTTdS
MEZEUml4RFFVRkJMRVZCUVVVc1EwRkJSVHM3UVVGRlRDeHZRa0ZCYTBJc1EwRkJReXcyUWtGQk5r
SXNSMEZCUnl4VlFVRlRMRWxCUVVrc1JVRkJSVHRCUVVOb1JTeFhRVUZQTEVOQlFVTXNhMEpCUVd0
Q0xFTkJRVU1zWTBGQll5eERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRUZCUVVNc05FSkJRVFJD
TEVOQlFVVXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8wZEJRemxHTEVOQlFVTTdP
MEZCUlVZc1YwRkJVeXhaUVVGWkxFTkJRVU1zWlVGQlpTeEZRVUZGTEZGQlFWRXNSVUZCUlN4TFFV
RkxMRVZCUVVVc1NVRkJTU3hGUVVGRk8wRkJRelZFTEZGQlFVa3NTMEZCU3l4SFFVRkhMRkZCUVZF
c1EwRkJReXhSUVVGUkxFVkJRVVU3VVVGRE0wSXNRMEZCUXl4SFFVRkhMRU5CUVVNN1VVRkRUQ3hI
UVVGSExFZEJRVWNzUzBGQlN5eERRVUZETEUxQlFVMHNRMEZCUXp0QlFVTjJRaXhSUVVGSkxHVkJR
V1VzUlVGQlJUdEJRVU51UWl4VFFVRkhMRVZCUVVVc1EwRkJRenRMUVVOUU96dEJRVVZFTEZkQlFV
OHNRMEZCUXl4SFFVRkhMRWRCUVVjc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdEJRVU51UWl4
WFFVRkxMRWRCUVVjc1VVRkJVU3hEUVVGRExGVkJRVlVzUTBGQlF5eExRVUZMTEVWQlFVVXNTMEZC
U3l4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETzB0QlEzQkVP
enRCUVVWRUxGRkJRVWtzWlVGQlpTeEZRVUZGTzBGQlEyNUNMR0ZCUVU4c1EwRkJReXhSUVVGUkxF
TkJRVU1zVTBGQlV5eERRVUZETEd0Q1FVRnJRaXhEUVVGRExFVkJRVVVzUjBGQlJ5eEZRVUZGTEV0
QlFVc3NSVUZCUlN4SlFVRkpMRVZCUVVVc1VVRkJVU3hEUVVGRExGbEJRVmtzUTBGQlF5eExRVUZM
TEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF6dExR
VU42Unl4TlFVRk5PMEZCUTB3c1lVRkJUeXhMUVVGTExFTkJRVU03UzBGRFpEdEhRVU5HT3p0dFFr
RkZZeXhyUWtGQmEwSWlMQ0ptYVd4bElqb2lhbUYyWVhOamNtbHdkQzFqYjIxd2FXeGxjaTVxY3lJ
c0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENCN0lFTlBUVkJKVEVWU1gxSkZWa2xU
U1U5T0xDQlNSVlpKVTBsUFRsOURTRUZPUjBWVElIMGdabkp2YlNBbkxpNHZZbUZ6WlNjN1hHNXBi
WEJ2Y25RZ1JYaGpaWEIwYVc5dUlHWnliMjBnSnk0dUwyVjRZMlZ3ZEdsdmJpYzdYRzVwYlhCdmNu
UWdlMmx6UVhKeVlYbDlJR1p5YjIwZ0p5NHVMM1YwYVd4ekp6dGNibWx0Y0c5eWRDQkRiMlJsUjJW
dUlHWnliMjBnSnk0dlkyOWtaUzFuWlc0bk8xeHVYRzVtZFc1amRHbHZiaUJNYVhSbGNtRnNLSFpo
YkhWbEtTQjdYRzRnSUhSb2FYTXVkbUZzZFdVZ1BTQjJZV3gxWlR0Y2JuMWNibHh1Wm5WdVkzUnBi
MjRnU21GMllWTmpjbWx3ZEVOdmJYQnBiR1Z5S0NrZ2UzMWNibHh1U21GMllWTmpjbWx3ZEVOdmJY
QnBiR1Z5TG5CeWIzUnZkSGx3WlNBOUlIdGNiaUFnTHk4Z1VGVkNURWxESUVGUVNUb2dXVzkxSUdO
aGJpQnZkbVZ5Y21sa1pTQjBhR1Z6WlNCdFpYUm9iMlJ6SUdsdUlHRWdjM1ZpWTJ4aGMzTWdkRzhn
Y0hKdmRtbGtaVnh1SUNBdkx5QmhiSFJsY201aGRHbDJaU0JqYjIxd2FXeGxaQ0JtYjNKdGN5Qm1i
M0lnYm1GdFpTQnNiMjlyZFhBZ1lXNWtJR0oxWm1abGNtbHVaeUJ6WlcxaGJuUnBZM05jYmlBZ2Jt
RnRaVXh2YjJ0MWNEb2dablZ1WTNScGIyNG9jR0Z5Wlc1MExDQnVZVzFsTHlvZ0xDQjBlWEJsS2k4
cElIdGNiaUFnSUNCcFppQW9TbUYyWVZOamNtbHdkRU52YlhCcGJHVnlMbWx6Vm1Gc2FXUktZWFpo
VTJOeWFYQjBWbUZ5YVdGaWJHVk9ZVzFsS0c1aGJXVXBLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdX
M0JoY21WdWRDd2dKeTRuTENCdVlXMWxYVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2Nt
VjBkWEp1SUZ0d1lYSmxiblFzSUNkYkp5d2dTbE5QVGk1emRISnBibWRwWm5rb2JtRnRaU2tzSUNk
ZEoxMDdYRzRnSUNBZ2ZWeHVJQ0I5TEZ4dUlDQmtaWEIwYUdWa1RHOXZhM1Z3T2lCbWRXNWpkR2x2
YmlodVlXMWxLU0I3WEc0Z0lDQWdjbVYwZFhKdUlGdDBhR2x6TG1Gc2FXRnpZV0pzWlNnblkyOXVk
R0ZwYm1WeUxteHZiMnQxY0NjcExDQW5LR1JsY0hSb2N5d2dYQ0luTENCdVlXMWxMQ0FuWENJcEox
MDdYRzRnSUgwc1hHNWNiaUFnWTI5dGNHbHNaWEpKYm1adk9pQm1kVzVqZEdsdmJpZ3BJSHRjYmlB
Z0lDQmpiMjV6ZENCeVpYWnBjMmx2YmlBOUlFTlBUVkJKVEVWU1gxSkZWa2xUU1U5T0xGeHVJQ0Fn
SUNBZ0lDQWdJSFpsY25OcGIyNXpJRDBnVWtWV1NWTkpUMDVmUTBoQlRrZEZVMXR5WlhacGMybHZi
bDA3WEc0Z0lDQWdjbVYwZFhKdUlGdHlaWFpwYzJsdmJpd2dkbVZ5YzJsdmJuTmRPMXh1SUNCOUxG
eHVYRzRnSUdGd2NHVnVaRlJ2UW5WbVptVnlPaUJtZFc1amRHbHZiaWh6YjNWeVkyVXNJR3h2WTJG
MGFXOXVMQ0JsZUhCc2FXTnBkQ2tnZTF4dUlDQWdJQzh2SUVadmNtTmxJR0VnYzI5MWNtTmxJR0Z6
SUhSb2FYTWdjMmx0Y0d4cFptbGxjeUIwYUdVZ2JXVnlaMlVnYkc5bmFXTXVYRzRnSUNBZ2FXWWdL
Q0ZwYzBGeWNtRjVLSE52ZFhKalpTa3BJSHRjYmlBZ0lDQWdJSE52ZFhKalpTQTlJRnR6YjNWeVky
VmRPMXh1SUNBZ0lIMWNiaUFnSUNCemIzVnlZMlVnUFNCMGFHbHpMbk52ZFhKalpTNTNjbUZ3S0hO
dmRYSmpaU3dnYkc5allYUnBiMjRwTzF4dVhHNGdJQ0FnYVdZZ0tIUm9hWE11Wlc1MmFYSnZibTFs
Ym5RdWFYTlRhVzF3YkdVcElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlCYkozSmxkSFZ5YmlBbkxDQnpi
M1Z5WTJVc0lDYzdKMTA3WEc0Z0lDQWdmU0JsYkhObElHbG1JQ2hsZUhCc2FXTnBkQ2tnZTF4dUlD
QWdJQ0FnTHk4Z1ZHaHBjeUJwY3lCaElHTmhjMlVnZDJobGNtVWdkR2hsSUdKMVptWmxjaUJ2Y0dW
eVlYUnBiMjRnYjJOamRYSnpJR0Z6SUdFZ1kyaHBiR1FnYjJZZ1lXNXZkR2hsY2x4dUlDQWdJQ0Fn
THk4Z1kyOXVjM1J5ZFdOMExDQm5aVzVsY21Gc2JIa2dZbkpoWTJWekxpQlhaU0JvWVhabElIUnZJ
R1Y0Y0d4cFkybDBiSGtnYjNWMGNIVjBJSFJvWlhObElHSjFabVpsY2x4dUlDQWdJQ0FnTHk4Z2Iz
QmxjbUYwYVc5dWN5QjBieUJsYm5OMWNtVWdkR2hoZENCMGFHVWdaVzFwZEhSbFpDQmpiMlJsSUdk
dlpYTWdhVzRnZEdobElHTnZjbkpsWTNRZ2JHOWpZWFJwYjI0dVhHNGdJQ0FnSUNCeVpYUjFjbTRn
V3lkaWRXWm1aWElnS3owZ0p5d2djMjkxY21ObExDQW5PeWRkTzF4dUlDQWdJSDBnWld4elpTQjdY
RzRnSUNBZ0lDQnpiM1Z5WTJVdVlYQndaVzVrVkc5Q2RXWm1aWElnUFNCMGNuVmxPMXh1SUNBZ0lD
QWdjbVYwZFhKdUlITnZkWEpqWlR0Y2JpQWdJQ0I5WEc0Z0lIMHNYRzVjYmlBZ2FXNXBkR2xoYkds
NlpVSjFabVpsY2pvZ1puVnVZM1JwYjI0b0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVjWFZ2
ZEdWa1UzUnlhVzVuS0NjbktUdGNiaUFnZlN4Y2JpQWdMeThnUlU1RUlGQlZRa3hKUXlCQlVFbGNi
bHh1SUNCamIyMXdhV3hsT2lCbWRXNWpkR2x2YmlobGJuWnBjbTl1YldWdWRDd2diM0IwYVc5dWN5
d2dZMjl1ZEdWNGRDd2dZWE5QWW1wbFkzUXBJSHRjYmlBZ0lDQjBhR2x6TG1WdWRtbHliMjV0Wlc1
MElEMGdaVzUyYVhKdmJtMWxiblE3WEc0Z0lDQWdkR2hwY3k1dmNIUnBiMjV6SUQwZ2IzQjBhVzl1
Y3p0Y2JpQWdJQ0IwYUdsekxuTjBjbWx1WjFCaGNtRnRjeUE5SUhSb2FYTXViM0IwYVc5dWN5NXpk
SEpwYm1kUVlYSmhiWE03WEc0Z0lDQWdkR2hwY3k1MGNtRmphMGxrY3lBOUlIUm9hWE11YjNCMGFX
OXVjeTUwY21GamEwbGtjenRjYmlBZ0lDQjBhR2x6TG5CeVpXTnZiWEJwYkdVZ1BTQWhZWE5QWW1w
bFkzUTdYRzVjYmlBZ0lDQjBhR2x6TG01aGJXVWdQU0IwYUdsekxtVnVkbWx5YjI1dFpXNTBMbTVo
YldVN1hHNGdJQ0FnZEdocGN5NXBjME5vYVd4a0lEMGdJU0ZqYjI1MFpYaDBPMXh1SUNBZ0lIUm9h
WE11WTI5dWRHVjRkQ0E5SUdOdmJuUmxlSFFnZkh3Z2UxeHVJQ0FnSUNBZ1pHVmpiM0poZEc5eWN6
b2dXMTBzWEc0Z0lDQWdJQ0J3Y205bmNtRnRjem9nVzEwc1hHNGdJQ0FnSUNCbGJuWnBjbTl1YldW
dWRITTZJRnRkWEc0Z0lDQWdmVHRjYmx4dUlDQWdJSFJvYVhNdWNISmxZVzFpYkdVb0tUdGNibHh1
SUNBZ0lIUm9hWE11YzNSaFkydFRiRzkwSUQwZ01EdGNiaUFnSUNCMGFHbHpMbk4wWVdOclZtRnlj
eUE5SUZ0ZE8xeHVJQ0FnSUhSb2FYTXVZV3hwWVhObGN5QTlJSHQ5TzF4dUlDQWdJSFJvYVhNdWNt
Vm5hWE4wWlhKeklEMGdleUJzYVhOME9pQmJYU0I5TzF4dUlDQWdJSFJvYVhNdWFHRnphR1Z6SUQw
Z1cxMDdYRzRnSUNBZ2RHaHBjeTVqYjIxd2FXeGxVM1JoWTJzZ1BTQmJYVHRjYmlBZ0lDQjBhR2x6
TG1sdWJHbHVaVk4wWVdOcklEMGdXMTA3WEc0Z0lDQWdkR2hwY3k1aWJHOWphMUJoY21GdGN5QTlJ
RnRkTzF4dVhHNGdJQ0FnZEdocGN5NWpiMjF3YVd4bFEyaHBiR1J5Wlc0b1pXNTJhWEp2Ym0xbGJu
UXNJRzl3ZEdsdmJuTXBPMXh1WEc0Z0lDQWdkR2hwY3k1MWMyVkVaWEIwYUhNZ1BTQjBhR2x6TG5W
elpVUmxjSFJvY3lCOGZDQmxiblpwY205dWJXVnVkQzUxYzJWRVpYQjBhSE1nZkh3Z1pXNTJhWEp2
Ym0xbGJuUXVkWE5sUkdWamIzSmhkRzl5Y3lCOGZDQjBhR2x6TG05d2RHbHZibk11WTI5dGNHRjBP
MXh1SUNBZ0lIUm9hWE11ZFhObFFteHZZMnRRWVhKaGJYTWdQU0IwYUdsekxuVnpaVUpzYjJOclVH
RnlZVzF6SUh4OElHVnVkbWx5YjI1dFpXNTBMblZ6WlVKc2IyTnJVR0Z5WVcxek8xeHVYRzRnSUNB
Z2JHVjBJRzl3WTI5a1pYTWdQU0JsYm5acGNtOXViV1Z1ZEM1dmNHTnZaR1Z6TEZ4dUlDQWdJQ0Fn
SUNCdmNHTnZaR1VzWEc0Z0lDQWdJQ0FnSUdacGNuTjBURzlqTEZ4dUlDQWdJQ0FnSUNCcExGeHVJ
Q0FnSUNBZ0lDQnNPMXh1WEc0Z0lDQWdabTl5SUNocElEMGdNQ3dnYkNBOUlHOXdZMjlrWlhNdWJH
VnVaM1JvT3lCcElEd2diRHNnYVNzcktTQjdYRzRnSUNBZ0lDQnZjR052WkdVZ1BTQnZjR052WkdW
elcybGRPMXh1WEc0Z0lDQWdJQ0IwYUdsekxuTnZkWEpqWlM1amRYSnlaVzUwVEc5allYUnBiMjRn
UFNCdmNHTnZaR1V1Ykc5ak8xeHVJQ0FnSUNBZ1ptbHljM1JNYjJNZ1BTQm1hWEp6ZEV4dll5Qjhm
Q0J2Y0dOdlpHVXViRzlqTzF4dUlDQWdJQ0FnZEdocGMxdHZjR052WkdVdWIzQmpiMlJsWFM1aGNI
QnNlU2gwYUdsekxDQnZjR052WkdVdVlYSm5jeWs3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdMeThnUm14
MWMyZ2dZVzU1SUhSeVlXbHNhVzVuSUdOdmJuUmxiblFnZEdoaGRDQnRhV2RvZENCaVpTQndaVzVr
YVc1bkxseHVJQ0FnSUhSb2FYTXVjMjkxY21ObExtTjFjbkpsYm5STWIyTmhkR2x2YmlBOUlHWnBj
bk4wVEc5ak8xeHVJQ0FnSUhSb2FYTXVjSFZ6YUZOdmRYSmpaU2duSnlrN1hHNWNiaUFnSUNBdktp
QnBjM1JoYm1KMWJDQnBaMjV2Y21VZ2JtVjRkQ0FxTDF4dUlDQWdJR2xtSUNoMGFHbHpMbk4wWVdO
clUyeHZkQ0I4ZkNCMGFHbHpMbWx1YkdsdVpWTjBZV05yTG14bGJtZDBhQ0I4ZkNCMGFHbHpMbU52
YlhCcGJHVlRkR0ZqYXk1c1pXNW5kR2dwSUh0Y2JpQWdJQ0FnSUhSb2NtOTNJRzVsZHlCRmVHTmxj
SFJwYjI0b0owTnZiWEJwYkdVZ1kyOXRjR3hsZEdWa0lIZHBkR2dnWTI5dWRHVnVkQ0JzWldaMElH
OXVJSE4wWVdOckp5azdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2FXWWdLQ0YwYUdsekxtUmxZMjl5WVhS
dmNuTXVhWE5GYlhCMGVTZ3BLU0I3WEc0Z0lDQWdJQ0IwYUdsekxuVnpaVVJsWTI5eVlYUnZjbk1n
UFNCMGNuVmxPMXh1WEc0Z0lDQWdJQ0IwYUdsekxtUmxZMjl5WVhSdmNuTXVjSEpsY0dWdVpDZ25k
bUZ5SUdSbFkyOXlZWFJ2Y25NZ1BTQmpiMjUwWVdsdVpYSXVaR1ZqYjNKaGRHOXljenRjWEc0bktU
dGNiaUFnSUNBZ0lIUm9hWE11WkdWamIzSmhkRzl5Y3k1d2RYTm9LQ2R5WlhSMWNtNGdabTQ3Snlr
N1hHNWNiaUFnSUNBZ0lHbG1JQ2hoYzA5aWFtVmpkQ2tnZTF4dUlDQWdJQ0FnSUNCMGFHbHpMbVJs
WTI5eVlYUnZjbk1nUFNCR2RXNWpkR2x2Ymk1aGNIQnNlU2gwYUdsekxDQmJKMlp1Snl3Z0ozQnli
M0J6Snl3Z0oyTnZiblJoYVc1bGNpY3NJQ2RrWlhCMGFEQW5MQ0FuWkdGMFlTY3NJQ2RpYkc5amEx
QmhjbUZ0Y3ljc0lDZGtaWEIwYUhNbkxDQjBhR2x6TG1SbFkyOXlZWFJ2Y25NdWJXVnlaMlVvS1Yw
cE8xeHVJQ0FnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTVrWldOdmNtRjBiM0p6
TG5CeVpYQmxibVFvSjJaMWJtTjBhVzl1S0dadUxDQndjbTl3Y3l3Z1kyOXVkR0ZwYm1WeUxDQmta
WEIwYURBc0lHUmhkR0VzSUdKc2IyTnJVR0Z5WVcxekxDQmtaWEIwYUhNcElIdGNYRzRuS1R0Y2Jp
QWdJQ0FnSUNBZ2RHaHBjeTVrWldOdmNtRjBiM0p6TG5CMWMyZ29KMzFjWEc0bktUdGNiaUFnSUNB
Z0lDQWdkR2hwY3k1a1pXTnZjbUYwYjNKeklEMGdkR2hwY3k1a1pXTnZjbUYwYjNKekxtMWxjbWRs
S0NrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJSFJvYVhNdVpHVmpi
M0poZEc5eWN5QTlJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnNaWFFnWm00Z1BT
QjBhR2x6TG1OeVpXRjBaVVoxYm1OMGFXOXVRMjl1ZEdWNGRDaGhjMDlpYW1WamRDazdYRzRnSUNB
Z2FXWWdLQ0YwYUdsekxtbHpRMmhwYkdRcElIdGNiaUFnSUNBZ0lHeGxkQ0J5WlhRZ1BTQjdYRzRn
SUNBZ0lDQWdJR052YlhCcGJHVnlPaUIwYUdsekxtTnZiWEJwYkdWeVNXNW1ieWdwTEZ4dUlDQWdJ
Q0FnSUNCdFlXbHVPaUJtYmx4dUlDQWdJQ0FnZlR0Y2JseHVJQ0FnSUNBZ2FXWWdLSFJvYVhNdVpH
VmpiM0poZEc5eWN5a2dlMXh1SUNBZ0lDQWdJQ0J5WlhRdWJXRnBibDlrSUQwZ2RHaHBjeTVrWldO
dmNtRjBiM0p6T3lBZ0lDOHZJR1Z6YkdsdWRDMWthWE5oWW14bExXeHBibVVnWTJGdFpXeGpZWE5s
WEc0Z0lDQWdJQ0FnSUhKbGRDNTFjMlZFWldOdmNtRjBiM0p6SUQwZ2RISjFaVHRjYmlBZ0lDQWdJ
SDFjYmx4dUlDQWdJQ0FnYkdWMElIdHdjbTluY21GdGN5d2daR1ZqYjNKaGRHOXljMzBnUFNCMGFH
bHpMbU52Ym5SbGVIUTdYRzRnSUNBZ0lDQm1iM0lnS0drZ1BTQXdMQ0JzSUQwZ2NISnZaM0poYlhN
dWJHVnVaM1JvT3lCcElEd2diRHNnYVNzcktTQjdYRzRnSUNBZ0lDQWdJR2xtSUNod2NtOW5jbUZ0
YzF0cFhTa2dlMXh1SUNBZ0lDQWdJQ0FnSUhKbGRGdHBYU0E5SUhCeWIyZHlZVzF6VzJsZE8xeHVJ
Q0FnSUNBZ0lDQWdJR2xtSUNoa1pXTnZjbUYwYjNKelcybGRLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lD
QnlaWFJiYVNBcklDZGZaQ2RkSUQwZ1pHVmpiM0poZEc5eWMxdHBYVHRjYmlBZ0lDQWdJQ0FnSUNB
Z0lISmxkQzUxYzJWRVpXTnZjbUYwYjNKeklEMGdkSEoxWlR0Y2JpQWdJQ0FnSUNBZ0lDQjlYRzRn
SUNBZ0lDQWdJSDFjYmlBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnYVdZZ0tIUm9hWE11Wlc1MmFYSnZi
bTFsYm5RdWRYTmxVR0Z5ZEdsaGJDa2dlMXh1SUNBZ0lDQWdJQ0J5WlhRdWRYTmxVR0Z5ZEdsaGJD
QTlJSFJ5ZFdVN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNCcFppQW9kR2hwY3k1dmNIUnBiMjV6TG1S
aGRHRXBJSHRjYmlBZ0lDQWdJQ0FnY21WMExuVnpaVVJoZEdFZ1BTQjBjblZsTzF4dUlDQWdJQ0Fn
ZlZ4dUlDQWdJQ0FnYVdZZ0tIUm9hWE11ZFhObFJHVndkR2h6S1NCN1hHNGdJQ0FnSUNBZ0lISmxk
QzUxYzJWRVpYQjBhSE1nUFNCMGNuVmxPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdhV1lnS0hSb2FY
TXVkWE5sUW14dlkydFFZWEpoYlhNcElIdGNiaUFnSUNBZ0lDQWdjbVYwTG5WelpVSnNiMk5yVUdG
eVlXMXpJRDBnZEhKMVpUdGNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lHbG1JQ2gwYUdsekxtOXdkR2x2
Ym5NdVkyOXRjR0YwS1NCN1hHNGdJQ0FnSUNBZ0lISmxkQzVqYjIxd1lYUWdQU0IwY25WbE8xeHVJ
Q0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQnBaaUFvSVdGelQySnFaV04wS1NCN1hHNGdJQ0FnSUNBZ0lI
SmxkQzVqYjIxd2FXeGxjaUE5SUVwVFQwNHVjM1J5YVc1bmFXWjVLSEpsZEM1amIyMXdhV3hsY2lr
N1hHNWNiaUFnSUNBZ0lDQWdkR2hwY3k1emIzVnlZMlV1WTNWeWNtVnVkRXh2WTJGMGFXOXVJRDBn
ZTNOMFlYSjBPaUI3YkdsdVpUb2dNU3dnWTI5c2RXMXVPaUF3ZlgwN1hHNGdJQ0FnSUNBZ0lISmxk
Q0E5SUhSb2FYTXViMkpxWldOMFRHbDBaWEpoYkNoeVpYUXBPMXh1WEc0Z0lDQWdJQ0FnSUdsbUlD
aHZjSFJwYjI1ekxuTnlZMDVoYldVcElIdGNiaUFnSUNBZ0lDQWdJQ0J5WlhRZ1BTQnlaWFF1ZEc5
VGRISnBibWRYYVhSb1UyOTFjbU5sVFdGd0tIdG1hV3hsT2lCdmNIUnBiMjV6TG1SbGMzUk9ZVzFs
ZlNrN1hHNGdJQ0FnSUNBZ0lDQWdjbVYwTG0xaGNDQTlJSEpsZEM1dFlYQWdKaVlnY21WMExtMWhj
QzUwYjFOMGNtbHVaeWdwTzF4dUlDQWdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lI
SmxkQ0E5SUhKbGRDNTBiMU4wY21sdVp5Z3BPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5SUdW
c2MyVWdlMXh1SUNBZ0lDQWdJQ0J5WlhRdVkyOXRjR2xzWlhKUGNIUnBiMjV6SUQwZ2RHaHBjeTV2
Y0hScGIyNXpPMXh1SUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0J5WlhSMWNtNGdjbVYwTzF4dUlDQWdJ
SDBnWld4elpTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z1ptNDdYRzRnSUNBZ2ZWeHVJQ0I5TEZ4dVhH
NGdJSEJ5WldGdFlteGxPaUJtZFc1amRHbHZiaWdwSUh0Y2JpQWdJQ0F2THlCMGNtRmpheUIwYUdV
Z2JHRnpkQ0JqYjI1MFpYaDBJSEIxYzJobFpDQnBiblJ2SUhCc1lXTmxJSFJ2SUdGc2JHOTNJSE5y
YVhCd2FXNW5JSFJvWlZ4dUlDQWdJQzh2SUdkbGRFTnZiblJsZUhRZ2IzQmpiMlJsSUhkb1pXNGdh
WFFnZDI5MWJHUWdZbVVnWVNCdWIyOXdYRzRnSUNBZ2RHaHBjeTVzWVhOMFEyOXVkR1Y0ZENBOUlE
QTdYRzRnSUNBZ2RHaHBjeTV6YjNWeVkyVWdQU0J1WlhjZ1EyOWtaVWRsYmloMGFHbHpMbTl3ZEds
dmJuTXVjM0pqVG1GdFpTazdYRzRnSUNBZ2RHaHBjeTVrWldOdmNtRjBiM0p6SUQwZ2JtVjNJRU52
WkdWSFpXNG9kR2hwY3k1dmNIUnBiMjV6TG5OeVkwNWhiV1VwTzF4dUlDQjlMRnh1WEc0Z0lHTnla
V0YwWlVaMWJtTjBhVzl1UTI5dWRHVjRkRG9nWm5WdVkzUnBiMjRvWVhOUFltcGxZM1FwSUh0Y2Jp
QWdJQ0JzWlhRZ2RtRnlSR1ZqYkdGeVlYUnBiMjV6SUQwZ0p5YzdYRzVjYmlBZ0lDQnNaWFFnYkc5
allXeHpJRDBnZEdocGN5NXpkR0ZqYTFaaGNuTXVZMjl1WTJGMEtIUm9hWE11Y21WbmFYTjBaWEp6
TG14cGMzUXBPMXh1SUNBZ0lHbG1JQ2hzYjJOaGJITXViR1Z1WjNSb0lENGdNQ2tnZTF4dUlDQWdJ
Q0FnZG1GeVJHVmpiR0Z5WVhScGIyNXpJQ3M5SUNjc0lDY2dLeUJzYjJOaGJITXVhbTlwYmlnbkxD
QW5LVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQXZMeUJIWlc1bGNtRjBaU0J0YVc1cGJXbDZaWElnWVd4
cFlYTWdiV0Z3Y0dsdVozTmNiaUFnSUNBdkwxeHVJQ0FnSUM4dklGZG9aVzRnZFhOcGJtY2dkSEox
WlNCVGIzVnlZMlZPYjJSbGN5d2dkR2hwY3lCM2FXeHNJSFZ3WkdGMFpTQmhiR3dnY21WbVpYSmxi
bU5sY3lCMGJ5QjBhR1VnWjJsMlpXNGdZV3hwWVhOY2JpQWdJQ0F2THlCaGN5QjBhR1VnYzI5MWNt
TmxJRzV2WkdWeklHRnlaU0J5WlhWelpXUWdhVzRnYzJsMGRTNGdSbTl5SUhSb1pTQnViMjR0YzI5
MWNtTmxJRzV2WkdVZ1kyOXRjR2xzWVhScGIyNGdiVzlrWlN4Y2JpQWdJQ0F2THlCaGJHbGhjMlZ6
SUhkcGJHd2dibTkwSUdKbElIVnpaV1FzSUdKMWRDQjBhR2x6SUdOaGMyVWdhWE1nWVd4eVpXRmtl
U0JpWldsdVp5QnlkVzRnYjI0Z2RHaGxJR05zYVdWdWRDQmhibVJjYmlBZ0lDQXZMeUIzWlNCaGNt
VnVKM1FnWTI5dVkyVnliaUJoWW05MWRDQnRhVzVwYldsNmFXNW5JSFJvWlNCMFpXMXdiR0YwWlNC
emFYcGxMbHh1SUNBZ0lHeGxkQ0JoYkdsaGMwTnZkVzUwSUQwZ01EdGNiaUFnSUNCbWIzSWdLR3hs
ZENCaGJHbGhjeUJwYmlCMGFHbHpMbUZzYVdGelpYTXBJSHNnSUNBZ0x5OGdaWE5zYVc1MExXUnBj
MkZpYkdVdGJHbHVaU0JuZFdGeVpDMW1iM0l0YVc1Y2JpQWdJQ0FnSUd4bGRDQnViMlJsSUQwZ2RH
aHBjeTVoYkdsaGMyVnpXMkZzYVdGelhUdGNibHh1SUNBZ0lDQWdhV1lnS0hSb2FYTXVZV3hwWVhO
bGN5NW9ZWE5QZDI1UWNtOXdaWEowZVNoaGJHbGhjeWtnSmlZZ2JtOWtaUzVqYUdsc1pISmxiaUFt
SmlCdWIyUmxMbkpsWm1WeVpXNWpaVU52ZFc1MElENGdNU2tnZTF4dUlDQWdJQ0FnSUNCMllYSkVa
V05zWVhKaGRHbHZibk1nS3owZ0p5d2dZV3hwWVhNbklDc2dLQ3NyWVd4cFlYTkRiM1Z1ZENrZ0t5
QW5QU2NnS3lCaGJHbGhjenRjYmlBZ0lDQWdJQ0FnYm05a1pTNWphR2xzWkhKbGJsc3dYU0E5SUNk
aGJHbGhjeWNnS3lCaGJHbGhjME52ZFc1ME8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JseHVJQ0Fn
SUd4bGRDQndZWEpoYlhNZ1BTQmJKMk52Ym5SaGFXNWxjaWNzSUNka1pYQjBhREFuTENBbmFHVnNj
R1Z5Y3ljc0lDZHdZWEowYVdGc2N5Y3NJQ2RrWVhSaEoxMDdYRzVjYmlBZ0lDQnBaaUFvZEdocGN5
NTFjMlZDYkc5amExQmhjbUZ0Y3lCOGZDQjBhR2x6TG5WelpVUmxjSFJvY3lrZ2UxeHVJQ0FnSUNB
Z2NHRnlZVzF6TG5CMWMyZ29KMkpzYjJOclVHRnlZVzF6SnlrN1hHNGdJQ0FnZlZ4dUlDQWdJR2xt
SUNoMGFHbHpMblZ6WlVSbGNIUm9jeWtnZTF4dUlDQWdJQ0FnY0dGeVlXMXpMbkIxYzJnb0oyUmxj
SFJvY3ljcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUM4dklGQmxjbVp2Y20wZ1lTQnpaV052Ym1RZ2NH
RnpjeUJ2ZG1WeUlIUm9aU0J2ZFhSd2RYUWdkRzhnYldWeVoyVWdZMjl1ZEdWdWRDQjNhR1Z1SUhC
dmMzTnBZbXhsWEc0Z0lDQWdiR1YwSUhOdmRYSmpaU0E5SUhSb2FYTXViV1Z5WjJWVGIzVnlZMlVv
ZG1GeVJHVmpiR0Z5WVhScGIyNXpLVHRjYmx4dUlDQWdJR2xtSUNoaGMwOWlhbVZqZENrZ2UxeHVJ
Q0FnSUNBZ2NHRnlZVzF6TG5CMWMyZ29jMjkxY21ObEtUdGNibHh1SUNBZ0lDQWdjbVYwZFhKdUlF
WjFibU4wYVc5dUxtRndjR3g1S0hSb2FYTXNJSEJoY21GdGN5azdYRzRnSUNBZ2ZTQmxiSE5sSUh0
Y2JpQWdJQ0FnSUhKbGRIVnliaUIwYUdsekxuTnZkWEpqWlM1M2NtRndLRnNuWm5WdVkzUnBiMjRv
Snl3Z2NHRnlZVzF6TG1wdmFXNG9KeXduS1N3Z0p5a2dlMXhjYmlBZ0p5d2djMjkxY21ObExDQW5m
U2RkS1R0Y2JpQWdJQ0I5WEc0Z0lIMHNYRzRnSUcxbGNtZGxVMjkxY21ObE9pQm1kVzVqZEdsdmJp
aDJZWEpFWldOc1lYSmhkR2x2Ym5NcElIdGNiaUFnSUNCc1pYUWdhWE5UYVcxd2JHVWdQU0IwYUds
ekxtVnVkbWx5YjI1dFpXNTBMbWx6VTJsdGNHeGxMRnh1SUNBZ0lDQWdJQ0JoY0hCbGJtUlBibXg1
SUQwZ0lYUm9hWE11Wm05eVkyVkNkV1ptWlhJc1hHNGdJQ0FnSUNBZ0lHRndjR1Z1WkVacGNuTjBM
Rnh1WEc0Z0lDQWdJQ0FnSUhOdmRYSmpaVk5sWlc0c1hHNGdJQ0FnSUNBZ0lHSjFabVpsY2xOMFlY
SjBMRnh1SUNBZ0lDQWdJQ0JpZFdabVpYSkZibVE3WEc0Z0lDQWdkR2hwY3k1emIzVnlZMlV1WldG
amFDZ29iR2x1WlNrZ1BUNGdlMXh1SUNBZ0lDQWdhV1lnS0d4cGJtVXVZWEJ3Wlc1a1ZHOUNkV1pt
WlhJcElIdGNiaUFnSUNBZ0lDQWdhV1lnS0dKMVptWmxjbE4wWVhKMEtTQjdYRzRnSUNBZ0lDQWdJ
Q0FnYkdsdVpTNXdjbVZ3Wlc1a0tDY2dJQ3NnSnlrN1hHNGdJQ0FnSUNBZ0lIMGdaV3h6WlNCN1hH
NGdJQ0FnSUNBZ0lDQWdZblZtWm1WeVUzUmhjblFnUFNCc2FXNWxPMXh1SUNBZ0lDQWdJQ0I5WEc0
Z0lDQWdJQ0FnSUdKMVptWmxja1Z1WkNBOUlHeHBibVU3WEc0Z0lDQWdJQ0I5SUdWc2MyVWdlMXh1
SUNBZ0lDQWdJQ0JwWmlBb1luVm1abVZ5VTNSaGNuUXBJSHRjYmlBZ0lDQWdJQ0FnSUNCcFppQW9J
WE52ZFhKalpWTmxaVzRwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR0Z3Y0dWdVpFWnBjbk4wSUQwZ2RI
SjFaVHRjYmlBZ0lDQWdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdZblZtWm1W
eVUzUmhjblF1Y0hKbGNHVnVaQ2duWW5WbVptVnlJQ3M5SUNjcE8xeHVJQ0FnSUNBZ0lDQWdJSDFj
YmlBZ0lDQWdJQ0FnSUNCaWRXWm1aWEpGYm1RdVlXUmtLQ2M3SnlrN1hHNGdJQ0FnSUNBZ0lDQWdZ
blZtWm1WeVUzUmhjblFnUFNCaWRXWm1aWEpGYm1RZ1BTQjFibVJsWm1sdVpXUTdYRzRnSUNBZ0lD
QWdJSDFjYmx4dUlDQWdJQ0FnSUNCemIzVnlZMlZUWldWdUlEMGdkSEoxWlR0Y2JpQWdJQ0FnSUNB
Z2FXWWdLQ0ZwYzFOcGJYQnNaU2tnZTF4dUlDQWdJQ0FnSUNBZ0lHRndjR1Z1WkU5dWJIa2dQU0Jt
WVd4elpUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdmVnh1SUNBZ0lIMHBPMXh1WEc1Y2JpQWdJ
Q0JwWmlBb1lYQndaVzVrVDI1c2VTa2dlMXh1SUNBZ0lDQWdhV1lnS0dKMVptWmxjbE4wWVhKMEtT
QjdYRzRnSUNBZ0lDQWdJR0oxWm1abGNsTjBZWEowTG5CeVpYQmxibVFvSjNKbGRIVnliaUFuS1R0
Y2JpQWdJQ0FnSUNBZ1luVm1abVZ5Ulc1a0xtRmtaQ2duT3ljcE8xeHVJQ0FnSUNBZ2ZTQmxiSE5s
SUdsbUlDZ2hjMjkxY21ObFUyVmxiaWtnZTF4dUlDQWdJQ0FnSUNCMGFHbHpMbk52ZFhKalpTNXdk
WE5vS0NkeVpYUjFjbTRnWENKY0lqc25LVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlJR1ZzYzJVZ2Ux
eHVJQ0FnSUNBZ2RtRnlSR1ZqYkdGeVlYUnBiMjV6SUNzOUlDY3NJR0oxWm1abGNpQTlJQ2NnS3lB
b1lYQndaVzVrUm1seWMzUWdQeUFuSnlBNklIUm9hWE11YVc1cGRHbGhiR2w2WlVKMVptWmxjaWdw
S1R0Y2JseHVJQ0FnSUNBZ2FXWWdLR0oxWm1abGNsTjBZWEowS1NCN1hHNGdJQ0FnSUNBZ0lHSjFa
bVpsY2xOMFlYSjBMbkJ5WlhCbGJtUW9KM0psZEhWeWJpQmlkV1ptWlhJZ0t5QW5LVHRjYmlBZ0lD
QWdJQ0FnWW5WbVptVnlSVzVrTG1Ga1pDZ25PeWNwTzF4dUlDQWdJQ0FnZlNCbGJITmxJSHRjYmlB
Z0lDQWdJQ0FnZEdocGN5NXpiM1Z5WTJVdWNIVnphQ2duY21WMGRYSnVJR0oxWm1abGNqc25LVHRj
YmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzVjYmlBZ0lDQnBaaUFvZG1GeVJHVmpiR0Z5WVhScGIyNXpL
U0I3WEc0Z0lDQWdJQ0IwYUdsekxuTnZkWEpqWlM1d2NtVndaVzVrS0NkMllYSWdKeUFySUhaaGNr
UmxZMnhoY21GMGFXOXVjeTV6ZFdKemRISnBibWNvTWlrZ0t5QW9ZWEJ3Wlc1a1JtbHljM1FnUHlB
bkp5QTZJQ2M3WEZ4dUp5a3BPMXh1SUNBZ0lIMWNibHh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMbk52
ZFhKalpTNXRaWEpuWlNncE8xeHVJQ0I5TEZ4dVhHNGdJQzh2SUZ0aWJHOWphMVpoYkhWbFhWeHVJ
Q0F2TDF4dUlDQXZMeUJQYmlCemRHRmpheXdnWW1WbWIzSmxPaUJvWVhOb0xDQnBiblpsY25ObExD
QndjbTluY21GdExDQjJZV3gxWlZ4dUlDQXZMeUJQYmlCemRHRmpheXdnWVdaMFpYSTZJSEpsZEhW
eWJpQjJZV3gxWlNCdlppQmliRzlqYTBobGJIQmxjazFwYzNOcGJtZGNiaUFnTHk5Y2JpQWdMeThn
VkdobElIQjFjbkJ2YzJVZ2IyWWdkR2hwY3lCdmNHTnZaR1VnYVhNZ2RHOGdkR0ZyWlNCaElHSnNi
Mk5ySUc5bUlIUm9aU0JtYjNKdFhHNGdJQzh2SUdCN2V5TjBhR2x6TG1admIzMTlMaTR1ZTNzdmRH
aHBjeTVtYjI5OWZXQXNJSEpsYzI5c2RtVWdkR2hsSUhaaGJIVmxJRzltSUdCbWIyOWdMQ0JoYm1S
Y2JpQWdMeThnY21Wd2JHRmpaU0JwZENCdmJpQjBhR1VnYzNSaFkyc2dkMmwwYUNCMGFHVWdjbVZ6
ZFd4MElHOW1JSEJ5YjNCbGNteDVYRzRnSUM4dklHbHVkbTlyYVc1bklHSnNiMk5yU0dWc2NHVnlU
V2x6YzJsdVp5NWNiaUFnWW14dlkydFdZV3gxWlRvZ1puVnVZM1JwYjI0b2JtRnRaU2tnZTF4dUlD
QWdJR3hsZENCaWJHOWphMGhsYkhCbGNrMXBjM05wYm1jZ1BTQjBhR2x6TG1Gc2FXRnpZV0pzWlNn
bmFHVnNjR1Z5Y3k1aWJHOWphMGhsYkhCbGNrMXBjM05wYm1jbktTeGNiaUFnSUNBZ0lDQWdjR0Z5
WVcxeklEMGdXM1JvYVhNdVkyOXVkR1Y0ZEU1aGJXVW9NQ2xkTzF4dUlDQWdJSFJvYVhNdWMyVjBk
WEJJWld4d1pYSkJjbWR6S0c1aGJXVXNJREFzSUhCaGNtRnRjeWs3WEc1Y2JpQWdJQ0JzWlhRZ1lt
eHZZMnRPWVcxbElEMGdkR2hwY3k1d2IzQlRkR0ZqYXlncE8xeHVJQ0FnSUhCaGNtRnRjeTV6Y0d4
cFkyVW9NU3dnTUN3Z1lteHZZMnRPWVcxbEtUdGNibHh1SUNBZ0lIUm9hWE11Y0hWemFDaDBhR2x6
TG5OdmRYSmpaUzVtZFc1amRHbHZia05oYkd3b1lteHZZMnRJWld4d1pYSk5hWE56YVc1bkxDQW5Z
MkZzYkNjc0lIQmhjbUZ0Y3lrcE8xeHVJQ0I5TEZ4dVhHNGdJQzh2SUZ0aGJXSnBaM1Z2ZFhOQ2JH
OWphMVpoYkhWbFhWeHVJQ0F2TDF4dUlDQXZMeUJQYmlCemRHRmpheXdnWW1WbWIzSmxPaUJvWVhO
b0xDQnBiblpsY25ObExDQndjbTluY21GdExDQjJZV3gxWlZ4dUlDQXZMeUJEYjIxd2FXeGxjaUIy
WVd4MVpTd2dZbVZtYjNKbE9pQnNZWE4wU0dWc2NHVnlQWFpoYkhWbElHOW1JR3hoYzNRZ1ptOTFi
bVFnYUdWc2NHVnlMQ0JwWmlCaGJubGNiaUFnTHk4Z1QyNGdjM1JoWTJzc0lHRm1kR1Z5TENCcFpp
QnVieUJzWVhOMFNHVnNjR1Z5T2lCellXMWxJR0Z6SUZ0aWJHOWphMVpoYkhWbFhWeHVJQ0F2THlC
UGJpQnpkR0ZqYXl3Z1lXWjBaWElzSUdsbUlHeGhjM1JJWld4d1pYSTZJSFpoYkhWbFhHNGdJR0Z0
WW1sbmRXOTFjMEpzYjJOclZtRnNkV1U2SUdaMWJtTjBhVzl1S0NrZ2UxeHVJQ0FnSUM4dklGZGxK
M0psSUdKbGFXNW5JR0VnWW1sMElHTm9aV1ZyZVNCaGJtUWdjbVYxYzJsdVp5QjBhR1VnYjNCMGFX
OXVjeUIyWVd4MVpTQm1jbTl0SUhSb1pTQndjbWx2Y2lCbGVHVmpYRzRnSUNBZ2JHVjBJR0pzYjJO
clNHVnNjR1Z5VFdsemMybHVaeUE5SUhSb2FYTXVZV3hwWVhOaFlteGxLQ2RvWld4d1pYSnpMbUpz
YjJOclNHVnNjR1Z5VFdsemMybHVaeWNwTEZ4dUlDQWdJQ0FnSUNCd1lYSmhiWE1nUFNCYmRHaHBj
eTVqYjI1MFpYaDBUbUZ0WlNnd0tWMDdYRzRnSUNBZ2RHaHBjeTV6WlhSMWNFaGxiSEJsY2tGeVoz
TW9KeWNzSURBc0lIQmhjbUZ0Y3l3Z2RISjFaU2s3WEc1Y2JpQWdJQ0IwYUdsekxtWnNkWE5vU1c1
c2FXNWxLQ2s3WEc1Y2JpQWdJQ0JzWlhRZ1kzVnljbVZ1ZENBOUlIUm9hWE11ZEc5d1UzUmhZMnNv
S1R0Y2JpQWdJQ0J3WVhKaGJYTXVjM0JzYVdObEtERXNJREFzSUdOMWNuSmxiblFwTzF4dVhHNGdJ
Q0FnZEdocGN5NXdkWE5vVTI5MWNtTmxLRnRjYmlBZ0lDQWdJQ0FnSjJsbUlDZ2hKeXdnZEdocGN5
NXNZWE4wU0dWc2NHVnlMQ0FuS1NCN0lDY3NYRzRnSUNBZ0lDQWdJQ0FnWTNWeWNtVnVkQ3dnSnlB
OUlDY3NJSFJvYVhNdWMyOTFjbU5sTG1aMWJtTjBhVzl1UTJGc2JDaGliRzlqYTBobGJIQmxjazFw
YzNOcGJtY3NJQ2RqWVd4c0p5d2djR0Z5WVcxektTeGNiaUFnSUNBZ0lDQWdKMzBuWFNrN1hHNGdJ
SDBzWEc1Y2JpQWdMeThnVzJGd2NHVnVaRU52Ym5SbGJuUmRYRzRnSUM4dlhHNGdJQzh2SUU5dUlI
TjBZV05yTENCaVpXWnZjbVU2SUM0dUxseHVJQ0F2THlCUGJpQnpkR0ZqYXl3Z1lXWjBaWEk2SUM0
dUxseHVJQ0F2TDF4dUlDQXZMeUJCY0hCbGJtUnpJSFJvWlNCemRISnBibWNnZG1Gc2RXVWdiMlln
WUdOdmJuUmxiblJnSUhSdklIUm9aU0JqZFhKeVpXNTBJR0oxWm1abGNseHVJQ0JoY0hCbGJtUkRi
MjUwWlc1ME9pQm1kVzVqZEdsdmJpaGpiMjUwWlc1MEtTQjdYRzRnSUNBZ2FXWWdLSFJvYVhNdWNH
VnVaR2x1WjBOdmJuUmxiblFwSUh0Y2JpQWdJQ0FnSUdOdmJuUmxiblFnUFNCMGFHbHpMbkJsYm1S
cGJtZERiMjUwWlc1MElDc2dZMjl1ZEdWdWREdGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0Fn
ZEdocGN5NXdaVzVrYVc1blRHOWpZWFJwYjI0Z1BTQjBhR2x6TG5OdmRYSmpaUzVqZFhKeVpXNTBU
RzlqWVhScGIyNDdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2RHaHBjeTV3Wlc1a2FXNW5RMjl1ZEdWdWRD
QTlJR052Ym5SbGJuUTdYRzRnSUgwc1hHNWNiaUFnTHk4Z1cyRndjR1Z1WkYxY2JpQWdMeTljYmlB
Z0x5OGdUMjRnYzNSaFkyc3NJR0psWm05eVpUb2dkbUZzZFdVc0lDNHVMbHh1SUNBdkx5QlBiaUJ6
ZEdGamF5d2dZV1owWlhJNklDNHVMbHh1SUNBdkwxeHVJQ0F2THlCRGIyVnlZMlZ6SUdCMllXeDFa
V0FnZEc4Z1lTQlRkSEpwYm1jZ1lXNWtJR0Z3Y0dWdVpITWdhWFFnZEc4Z2RHaGxJR04xY25KbGJu
UWdZblZtWm1WeUxseHVJQ0F2TDF4dUlDQXZMeUJKWmlCZ2RtRnNkV1ZnSUdseklIUnlkWFJvZVN3
Z2IzSWdNQ3dnYVhRZ2FYTWdZMjlsY21ObFpDQnBiblJ2SUdFZ2MzUnlhVzVuSUdGdVpDQmhjSEJs
Ym1SbFpGeHVJQ0F2THlCUGRHaGxjbmRwYzJVc0lIUm9aU0JsYlhCMGVTQnpkSEpwYm1jZ2FYTWdZ
WEJ3Wlc1a1pXUmNiaUFnWVhCd1pXNWtPaUJtZFc1amRHbHZiaWdwSUh0Y2JpQWdJQ0JwWmlBb2RH
aHBjeTVwYzBsdWJHbHVaU2dwS1NCN1hHNGdJQ0FnSUNCMGFHbHpMbkpsY0d4aFkyVlRkR0ZqYXln
b1kzVnljbVZ1ZENrZ1BUNGdXeWNnSVQwZ2JuVnNiQ0EvSUNjc0lHTjFjbkpsYm5Rc0lDY2dPaUJj
SWx3aUoxMHBPMXh1WEc0Z0lDQWdJQ0IwYUdsekxuQjFjMmhUYjNWeVkyVW9kR2hwY3k1aGNIQmxi
bVJVYjBKMVptWmxjaWgwYUdsekxuQnZjRk4wWVdOcktDa3BLVHRjYmlBZ0lDQjlJR1ZzYzJVZ2Ux
eHVJQ0FnSUNBZ2JHVjBJR3h2WTJGc0lEMGdkR2hwY3k1d2IzQlRkR0ZqYXlncE8xeHVJQ0FnSUNB
Z2RHaHBjeTV3ZFhOb1UyOTFjbU5sS0ZzbmFXWWdLQ2NzSUd4dlkyRnNMQ0FuSUNFOUlHNTFiR3dw
SUhzZ0p5d2dkR2hwY3k1aGNIQmxibVJVYjBKMVptWmxjaWhzYjJOaGJDd2dkVzVrWldacGJtVmtM
Q0IwY25WbEtTd2dKeUI5SjEwcE8xeHVJQ0FnSUNBZ2FXWWdLSFJvYVhNdVpXNTJhWEp2Ym0xbGJu
UXVhWE5UYVcxd2JHVXBJSHRjYmlBZ0lDQWdJQ0FnZEdocGN5NXdkWE5vVTI5MWNtTmxLRnNuWld4
elpTQjdJQ2NzSUhSb2FYTXVZWEJ3Wlc1a1ZHOUNkV1ptWlhJb1hDSW5KMXdpTENCMWJtUmxabWx1
WldRc0lIUnlkV1VwTENBbklIMG5YU2s3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNCOUxGeHVY
RzRnSUM4dklGdGhjSEJsYm1SRmMyTmhjR1ZrWFZ4dUlDQXZMMXh1SUNBdkx5QlBiaUJ6ZEdGamF5
d2dZbVZtYjNKbE9pQjJZV3gxWlN3Z0xpNHVYRzRnSUM4dklFOXVJSE4wWVdOckxDQmhablJsY2pv
Z0xpNHVYRzRnSUM4dlhHNGdJQzh2SUVWelkyRndaU0JnZG1Gc2RXVmdJR0Z1WkNCaGNIQmxibVFn
YVhRZ2RHOGdkR2hsSUdKMVptWmxjbHh1SUNCaGNIQmxibVJGYzJOaGNHVmtPaUJtZFc1amRHbHZi
aWdwSUh0Y2JpQWdJQ0IwYUdsekxuQjFjMmhUYjNWeVkyVW9kR2hwY3k1aGNIQmxibVJVYjBKMVpt
WmxjaWhjYmlBZ0lDQWdJQ0FnVzNSb2FYTXVZV3hwWVhOaFlteGxLQ2RqYjI1MFlXbHVaWEl1WlhO
allYQmxSWGh3Y21WemMybHZiaWNwTENBbktDY3NJSFJvYVhNdWNHOXdVM1JoWTJzb0tTd2dKeWtu
WFNrcE8xeHVJQ0I5TEZ4dVhHNGdJQzh2SUZ0blpYUkRiMjUwWlhoMFhWeHVJQ0F2TDF4dUlDQXZM
eUJQYmlCemRHRmpheXdnWW1WbWIzSmxPaUF1TGk1Y2JpQWdMeThnVDI0Z2MzUmhZMnNzSUdGbWRH
VnlPaUF1TGk1Y2JpQWdMeThnUTI5dGNHbHNaWElnZG1Gc2RXVXNJR0ZtZEdWeU9pQnNZWE4wUTI5
dWRHVjRkRDFrWlhCMGFGeHVJQ0F2TDF4dUlDQXZMeUJUWlhRZ2RHaGxJSFpoYkhWbElHOW1JSFJv
WlNCZ2JHRnpkRU52Ym5SbGVIUmdJR052YlhCcGJHVnlJSFpoYkhWbElIUnZJSFJvWlNCa1pYQjBh
Rnh1SUNCblpYUkRiMjUwWlhoME9pQm1kVzVqZEdsdmJpaGtaWEIwYUNrZ2UxeHVJQ0FnSUhSb2FY
TXViR0Z6ZEVOdmJuUmxlSFFnUFNCa1pYQjBhRHRjYmlBZ2ZTeGNibHh1SUNBdkx5QmJjSFZ6YUVO
dmJuUmxlSFJkWEc0Z0lDOHZYRzRnSUM4dklFOXVJSE4wWVdOckxDQmlaV1p2Y21VNklDNHVMbHh1
SUNBdkx5QlBiaUJ6ZEdGamF5d2dZV1owWlhJNklHTjFjbkpsYm5SRGIyNTBaWGgwTENBdUxpNWNi
aUFnTHk5Y2JpQWdMeThnVUhWemFHVnpJSFJvWlNCMllXeDFaU0J2WmlCMGFHVWdZM1Z5Y21WdWRD
QmpiMjUwWlhoMElHOXVkRzhnZEdobElITjBZV05yTGx4dUlDQndkWE5vUTI5dWRHVjRkRG9nWm5W
dVkzUnBiMjRvS1NCN1hHNGdJQ0FnZEdocGN5NXdkWE5vVTNSaFkydE1hWFJsY21Gc0tIUm9hWE11
WTI5dWRHVjRkRTVoYldVb2RHaHBjeTVzWVhOMFEyOXVkR1Y0ZENrcE8xeHVJQ0I5TEZ4dVhHNGdJ
Qzh2SUZ0c2IyOXJkWEJQYmtOdmJuUmxlSFJkWEc0Z0lDOHZYRzRnSUM4dklFOXVJSE4wWVdOckxD
QmlaV1p2Y21VNklDNHVMbHh1SUNBdkx5QlBiaUJ6ZEdGamF5d2dZV1owWlhJNklHTjFjbkpsYm5S
RGIyNTBaWGgwVzI1aGJXVmRMQ0F1TGk1Y2JpQWdMeTljYmlBZ0x5OGdURzl2YTNNZ2RYQWdkR2hs
SUhaaGJIVmxJRzltSUdCdVlXMWxZQ0J2YmlCMGFHVWdZM1Z5Y21WdWRDQmpiMjUwWlhoMElHRnVa
Q0J3ZFhOb1pYTmNiaUFnTHk4Z2FYUWdiMjUwYnlCMGFHVWdjM1JoWTJzdVhHNGdJR3h2YjJ0MWNF
OXVRMjl1ZEdWNGREb2dablZ1WTNScGIyNG9jR0Z5ZEhNc0lHWmhiSE41TENCemRISnBZM1FzSUhO
amIzQmxaQ2tnZTF4dUlDQWdJR3hsZENCcElEMGdNRHRjYmx4dUlDQWdJR2xtSUNnaGMyTnZjR1Zr
SUNZbUlIUm9hWE11YjNCMGFXOXVjeTVqYjIxd1lYUWdKaVlnSVhSb2FYTXViR0Z6ZEVOdmJuUmxl
SFFwSUh0Y2JpQWdJQ0FnSUM4dklGUm9aU0JrWlhCMGFHVmtJSEYxWlhKNUlHbHpJR1Y0Y0dWamRH
VmtJSFJ2SUdoaGJtUnNaU0IwYUdVZ2RXNWtaV1pwYm1Wa0lHeHZaMmxqSUdadmNpQjBhR1VnY205
dmRDQnNaWFpsYkNCMGFHRjBYRzRnSUNBZ0lDQXZMeUJwY3lCcGJYQnNaVzFsYm5SbFpDQmlaV3h2
ZHl3Z2MyOGdkMlVnWlhaaGJIVmhkR1VnZEdoaGRDQmthWEpsWTNSc2VTQnBiaUJqYjIxd1lYUWdi
VzlrWlZ4dUlDQWdJQ0FnZEdocGN5NXdkWE5vS0hSb2FYTXVaR1Z3ZEdobFpFeHZiMnQxY0Nod1lY
SjBjMXRwS3l0ZEtTazdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUhSb2FYTXVjSFZ6YUVO
dmJuUmxlSFFvS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0IwYUdsekxuSmxjMjlzZG1WUVlYUm9LQ2Rq
YjI1MFpYaDBKeXdnY0dGeWRITXNJR2tzSUdaaGJITjVMQ0J6ZEhKcFkzUXBPMXh1SUNCOUxGeHVY
RzRnSUM4dklGdHNiMjlyZFhCQ2JHOWphMUJoY21GdFhWeHVJQ0F2TDF4dUlDQXZMeUJQYmlCemRH
RmpheXdnWW1WbWIzSmxPaUF1TGk1Y2JpQWdMeThnVDI0Z2MzUmhZMnNzSUdGbWRHVnlPaUJpYkc5
amExQmhjbUZ0VzI1aGJXVmRMQ0F1TGk1Y2JpQWdMeTljYmlBZ0x5OGdURzl2YTNNZ2RYQWdkR2hs
SUhaaGJIVmxJRzltSUdCd1lYSjBjMkFnYjI0Z2RHaGxJR2RwZG1WdUlHSnNiMk5ySUhCaGNtRnRJ
R0Z1WkNCd2RYTm9aWE5jYmlBZ0x5OGdhWFFnYjI1MGJ5QjBhR1VnYzNSaFkyc3VYRzRnSUd4dmIy
dDFjRUpzYjJOclVHRnlZVzA2SUdaMWJtTjBhVzl1S0dKc2IyTnJVR0Z5WVcxSlpDd2djR0Z5ZEhN
cElIdGNiaUFnSUNCMGFHbHpMblZ6WlVKc2IyTnJVR0Z5WVcxeklEMGdkSEoxWlR0Y2JseHVJQ0Fn
SUhSb2FYTXVjSFZ6YUNoYkoySnNiMk5yVUdGeVlXMXpXeWNzSUdKc2IyTnJVR0Z5WVcxSlpGc3dY
U3dnSjExYkp5d2dZbXh2WTJ0UVlYSmhiVWxrV3pGZExDQW5YU2RkS1R0Y2JpQWdJQ0IwYUdsekxu
SmxjMjlzZG1WUVlYUm9LQ2RqYjI1MFpYaDBKeXdnY0dGeWRITXNJREVwTzF4dUlDQjlMRnh1WEc0
Z0lDOHZJRnRzYjI5cmRYQkVZWFJoWFZ4dUlDQXZMMXh1SUNBdkx5QlBiaUJ6ZEdGamF5d2dZbVZt
YjNKbE9pQXVMaTVjYmlBZ0x5OGdUMjRnYzNSaFkyc3NJR0ZtZEdWeU9pQmtZWFJoTENBdUxpNWNi
aUFnTHk5Y2JpQWdMeThnVUhWemFDQjBhR1VnWkdGMFlTQnNiMjlyZFhBZ2IzQmxjbUYwYjNKY2Jp
QWdiRzl2YTNWd1JHRjBZVG9nWm5WdVkzUnBiMjRvWkdWd2RHZ3NJSEJoY25SekxDQnpkSEpwWTNR
cElIdGNiaUFnSUNCcFppQW9JV1JsY0hSb0tTQjdYRzRnSUNBZ0lDQjBhR2x6TG5CMWMyaFRkR0Zq
YTB4cGRHVnlZV3dvSjJSaGRHRW5LVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2RHaHBj
eTV3ZFhOb1UzUmhZMnRNYVhSbGNtRnNLQ2RqYjI1MFlXbHVaWEl1WkdGMFlTaGtZWFJoTENBbklD
c2daR1Z3ZEdnZ0t5QW5LU2NwTzF4dUlDQWdJSDFjYmx4dUlDQWdJSFJvYVhNdWNtVnpiMngyWlZC
aGRHZ29KMlJoZEdFbkxDQndZWEowY3l3Z01Dd2dkSEoxWlN3Z2MzUnlhV04wS1R0Y2JpQWdmU3hj
Ymx4dUlDQnlaWE52YkhabFVHRjBhRG9nWm5WdVkzUnBiMjRvZEhsd1pTd2djR0Z5ZEhNc0lHa3NJ
R1poYkhONUxDQnpkSEpwWTNRcElIdGNiaUFnSUNCcFppQW9kR2hwY3k1dmNIUnBiMjV6TG5OMGNt
bGpkQ0I4ZkNCMGFHbHpMbTl3ZEdsdmJuTXVZWE56ZFcxbFQySnFaV04wY3lrZ2UxeHVJQ0FnSUNB
Z2RHaHBjeTV3ZFhOb0tITjBjbWxqZEV4dmIydDFjQ2gwYUdsekxtOXdkR2x2Ym5NdWMzUnlhV04w
SUNZbUlITjBjbWxqZEN3Z2RHaHBjeXdnY0dGeWRITXNJSFI1Y0dVcEtUdGNiaUFnSUNBZ0lISmxk
SFZ5Ymp0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JzWlhRZ2JHVnVJRDBnY0dGeWRITXViR1Z1WjNSb08x
eHVJQ0FnSUdadmNpQW9PeUJwSUR3Z2JHVnVPeUJwS3lzcElIdGNiaUFnSUNBZ0lDOHFJR1Z6Ykds
dWRDMWthWE5oWW14bElHNXZMV3h2YjNBdFpuVnVZeUFxTDF4dUlDQWdJQ0FnZEdocGN5NXlaWEJz
WVdObFUzUmhZMnNvS0dOMWNuSmxiblFwSUQwK0lIdGNiaUFnSUNBZ0lDQWdiR1YwSUd4dmIydDFj
Q0E5SUhSb2FYTXVibUZ0WlV4dmIydDFjQ2hqZFhKeVpXNTBMQ0J3WVhKMGMxdHBYU3dnZEhsd1pT
azdYRzRnSUNBZ0lDQWdJQzh2SUZkbElIZGhiblFnZEc4Z1pXNXpkWEpsSUhSb1lYUWdlbVZ5YnlC
aGJtUWdabUZzYzJVZ1lYSmxJR2hoYm1Sc1pXUWdjSEp2Y0dWeWJIa2dhV1lnZEdobElHTnZiblJs
ZUhRZ0tHWmhiSE41SUdac1lXY3BYRzRnSUNBZ0lDQWdJQzh2SUc1bFpXUnpJSFJ2SUdoaGRtVWdk
R2hsSUhOd1pXTnBZV3dnYUdGdVpHeHBibWNnWm05eUlIUm9aWE5sSUhaaGJIVmxjeTVjYmlBZ0lD
QWdJQ0FnYVdZZ0tDRm1ZV3h6ZVNrZ2UxeHVJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQmJKeUFoUFNC
dWRXeHNJRDhnSnl3Z2JHOXZhM1Z3TENBbklEb2dKeXdnWTNWeWNtVnVkRjA3WEc0Z0lDQWdJQ0Fn
SUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUNBZ0x5OGdUM1JvWlhKM2FYTmxJSGRsSUdOaGJpQjFj
MlVnWjJWdVpYSnBZeUJtWVd4emVTQm9ZVzVrYkdsdVoxeHVJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJp
QmJKeUFtSmlBbkxDQnNiMjlyZFhCZE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlLVHRjYmlB
Z0lDQWdJQzhxSUdWemJHbHVkQzFsYm1GaWJHVWdibTh0Ykc5dmNDMW1kVzVqSUNvdlhHNGdJQ0Fn
ZlZ4dUlDQjlMRnh1WEc0Z0lDOHZJRnR5WlhOdmJIWmxVRzl6YzJsaWJHVk1ZVzFpWkdGZFhHNGdJ
Qzh2WEc0Z0lDOHZJRTl1SUhOMFlXTnJMQ0JpWldadmNtVTZJSFpoYkhWbExDQXVMaTVjYmlBZ0x5
OGdUMjRnYzNSaFkyc3NJR0ZtZEdWeU9pQnlaWE52YkhabFpDQjJZV3gxWlN3Z0xpNHVYRzRnSUM4
dlhHNGdJQzh2SUVsbUlIUm9aU0JnZG1Gc2RXVmdJR2x6SUdFZ2JHRnRZbVJoTENCeVpYQnNZV05s
SUdsMElHOXVJSFJvWlNCemRHRmpheUJpZVZ4dUlDQXZMeUIwYUdVZ2NtVjBkWEp1SUhaaGJIVmxJ
RzltSUhSb1pTQnNZVzFpWkdGY2JpQWdjbVZ6YjJ4MlpWQnZjM05wWW14bFRHRnRZbVJoT2lCbWRX
NWpkR2x2YmlncElIdGNiaUFnSUNCMGFHbHpMbkIxYzJnb1czUm9hWE11WVd4cFlYTmhZbXhsS0Nk
amIyNTBZV2x1WlhJdWJHRnRZbVJoSnlrc0lDY29KeXdnZEdocGN5NXdiM0JUZEdGamF5Z3BMQ0Fu
TENBbkxDQjBhR2x6TG1OdmJuUmxlSFJPWVcxbEtEQXBMQ0FuS1NkZEtUdGNiaUFnZlN4Y2JseHVJ
Q0F2THlCYmNIVnphRk4wY21sdVoxQmhjbUZ0WFZ4dUlDQXZMMXh1SUNBdkx5QlBiaUJ6ZEdGamF5
d2dZbVZtYjNKbE9pQXVMaTVjYmlBZ0x5OGdUMjRnYzNSaFkyc3NJR0ZtZEdWeU9pQnpkSEpwYm1j
c0lHTjFjbkpsYm5SRGIyNTBaWGgwTENBdUxpNWNiaUFnTHk5Y2JpQWdMeThnVkdocGN5QnZjR052
WkdVZ2FYTWdaR1Z6YVdkdVpXUWdabTl5SUhWelpTQnBiaUJ6ZEhKcGJtY2diVzlrWlN3Z2QyaHBZ
MmhjYmlBZ0x5OGdjSEp2ZG1sa1pYTWdkR2hsSUhOMGNtbHVaeUIyWVd4MVpTQnZaaUJoSUhCaGNt
RnRaWFJsY2lCaGJHOXVaeUIzYVhSb0lHbDBjMXh1SUNBdkx5QmtaWEIwYUNCeVlYUm9aWElnZEdo
aGJpQnlaWE52YkhacGJtY2dhWFFnYVcxdFpXUnBZWFJsYkhrdVhHNGdJSEIxYzJoVGRISnBibWRR
WVhKaGJUb2dablZ1WTNScGIyNG9jM1J5YVc1bkxDQjBlWEJsS1NCN1hHNGdJQ0FnZEdocGN5NXdk
WE5vUTI5dWRHVjRkQ2dwTzF4dUlDQWdJSFJvYVhNdWNIVnphRk4wY21sdVp5aDBlWEJsS1R0Y2Js
eHVJQ0FnSUM4dklFbG1JR2wwSjNNZ1lTQnpkV0psZUhCeVpYTnphVzl1TENCMGFHVWdjM1J5YVc1
bklISmxjM1ZzZEZ4dUlDQWdJQzh2SUhkcGJHd2dZbVVnY0hWemFHVmtJR0ZtZEdWeUlIUm9hWE1n
YjNCamIyUmxMbHh1SUNBZ0lHbG1JQ2gwZVhCbElDRTlQU0FuVTNWaVJYaHdjbVZ6YzJsdmJpY3BJ
SHRjYmlBZ0lDQWdJR2xtSUNoMGVYQmxiMllnYzNSeWFXNW5JRDA5UFNBbmMzUnlhVzVuSnlrZ2Ux
eHVJQ0FnSUNBZ0lDQjBhR2x6TG5CMWMyaFRkSEpwYm1jb2MzUnlhVzVuS1R0Y2JpQWdJQ0FnSUgw
Z1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUhSb2FYTXVjSFZ6YUZOMFlXTnJUR2wwWlhKaGJDaHpkSEpw
Ym1jcE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdmU3hjYmx4dUlDQmxiWEIwZVVoaGMyZzZJ
R1oxYm1OMGFXOXVLRzl0YVhSRmJYQjBlU2tnZTF4dUlDQWdJR2xtSUNoMGFHbHpMblJ5WVdOclNX
UnpLU0I3WEc0Z0lDQWdJQ0IwYUdsekxuQjFjMmdvSjN0OUp5azdJQzh2SUdoaGMyaEpaSE5jYmlB
Z0lDQjlYRzRnSUNBZ2FXWWdLSFJvYVhNdWMzUnlhVzVuVUdGeVlXMXpLU0I3WEc0Z0lDQWdJQ0Iw
YUdsekxuQjFjMmdvSjN0OUp5azdJQzh2SUdoaGMyaERiMjUwWlhoMGMxeHVJQ0FnSUNBZ2RHaHBj
eTV3ZFhOb0tDZDdmU2NwT3lBdkx5Qm9ZWE5vVkhsd1pYTmNiaUFnSUNCOVhHNGdJQ0FnZEdocGN5
NXdkWE5vVTNSaFkydE1hWFJsY21Gc0tHOXRhWFJGYlhCMGVTQS9JQ2QxYm1SbFptbHVaV1FuSURv
Z0ozdDlKeWs3WEc0Z0lIMHNYRzRnSUhCMWMyaElZWE5vT2lCbWRXNWpkR2x2YmlncElIdGNiaUFn
SUNCcFppQW9kR2hwY3k1b1lYTm9LU0I3WEc0Z0lDQWdJQ0IwYUdsekxtaGhjMmhsY3k1d2RYTm9L
SFJvYVhNdWFHRnphQ2s3WEc0Z0lDQWdmVnh1SUNBZ0lIUm9hWE11YUdGemFDQTlJSHQyWVd4MVpY
TTZJRnRkTENCMGVYQmxjem9nVzEwc0lHTnZiblJsZUhSek9pQmJYU3dnYVdSek9pQmJYWDA3WEc0
Z0lIMHNYRzRnSUhCdmNFaGhjMmc2SUdaMWJtTjBhVzl1S0NrZ2UxeHVJQ0FnSUd4bGRDQm9ZWE5v
SUQwZ2RHaHBjeTVvWVhOb08xeHVJQ0FnSUhSb2FYTXVhR0Z6YUNBOUlIUm9hWE11YUdGemFHVnpM
bkJ2Y0NncE8xeHVYRzRnSUNBZ2FXWWdLSFJvYVhNdWRISmhZMnRKWkhNcElIdGNiaUFnSUNBZ0lI
Um9hWE11Y0hWemFDaDBhR2x6TG05aWFtVmpkRXhwZEdWeVlXd29hR0Z6YUM1cFpITXBLVHRjYmlB
Z0lDQjlYRzRnSUNBZ2FXWWdLSFJvYVhNdWMzUnlhVzVuVUdGeVlXMXpLU0I3WEc0Z0lDQWdJQ0Iw
YUdsekxuQjFjMmdvZEdocGN5NXZZbXBsWTNSTWFYUmxjbUZzS0doaGMyZ3VZMjl1ZEdWNGRITXBL
VHRjYmlBZ0lDQWdJSFJvYVhNdWNIVnphQ2gwYUdsekxtOWlhbVZqZEV4cGRHVnlZV3dvYUdGemFD
NTBlWEJsY3lrcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhSb2FYTXVjSFZ6YUNoMGFHbHpMbTlpYW1W
amRFeHBkR1Z5WVd3b2FHRnphQzUyWVd4MVpYTXBLVHRjYmlBZ2ZTeGNibHh1SUNBdkx5QmJjSFZ6
YUZOMGNtbHVaMTFjYmlBZ0x5OWNiaUFnTHk4Z1QyNGdjM1JoWTJzc0lHSmxabTl5WlRvZ0xpNHVY
RzRnSUM4dklFOXVJSE4wWVdOckxDQmhablJsY2pvZ2NYVnZkR1ZrVTNSeWFXNW5LSE4wY21sdVp5
a3NJQzR1TGx4dUlDQXZMMXh1SUNBdkx5QlFkWE5vSUdFZ2NYVnZkR1ZrSUhabGNuTnBiMjRnYjJZ
Z1lITjBjbWx1WjJBZ2IyNTBieUIwYUdVZ2MzUmhZMnRjYmlBZ2NIVnphRk4wY21sdVp6b2dablZ1
WTNScGIyNG9jM1J5YVc1bktTQjdYRzRnSUNBZ2RHaHBjeTV3ZFhOb1UzUmhZMnRNYVhSbGNtRnNL
SFJvYVhNdWNYVnZkR1ZrVTNSeWFXNW5LSE4wY21sdVp5a3BPMXh1SUNCOUxGeHVYRzRnSUM4dklG
dHdkWE5vVEdsMFpYSmhiRjFjYmlBZ0x5OWNiaUFnTHk4Z1QyNGdjM1JoWTJzc0lHSmxabTl5WlRv
Z0xpNHVYRzRnSUM4dklFOXVJSE4wWVdOckxDQmhablJsY2pvZ2RtRnNkV1VzSUM0dUxseHVJQ0F2
TDF4dUlDQXZMeUJRZFhOb1pYTWdZU0IyWVd4MVpTQnZiblJ2SUhSb1pTQnpkR0ZqYXk0Z1ZHaHBj
eUJ2Y0dWeVlYUnBiMjRnY0hKbGRtVnVkSE5jYmlBZ0x5OGdkR2hsSUdOdmJYQnBiR1Z5SUdaeWIy
MGdZM0psWVhScGJtY2dZU0IwWlcxd2IzSmhjbmtnZG1GeWFXRmliR1VnZEc4Z2FHOXNaRnh1SUNB
dkx5QnBkQzVjYmlBZ2NIVnphRXhwZEdWeVlXdzZJR1oxYm1OMGFXOXVLSFpoYkhWbEtTQjdYRzRn
SUNBZ2RHaHBjeTV3ZFhOb1UzUmhZMnRNYVhSbGNtRnNLSFpoYkhWbEtUdGNiaUFnZlN4Y2JseHVJ
Q0F2THlCYmNIVnphRkJ5YjJkeVlXMWRYRzRnSUM4dlhHNGdJQzh2SUU5dUlITjBZV05yTENCaVpX
WnZjbVU2SUM0dUxseHVJQ0F2THlCUGJpQnpkR0ZqYXl3Z1lXWjBaWEk2SUhCeWIyZHlZVzBvWjNW
cFpDa3NJQzR1TGx4dUlDQXZMMXh1SUNBdkx5QlFkWE5vSUdFZ2NISnZaM0poYlNCbGVIQnlaWE56
YVc5dUlHOXVkRzhnZEdobElITjBZV05yTGlCVWFHbHpJSFJoYTJWelhHNGdJQzh2SUdFZ1kyOXRj
R2xzWlMxMGFXMWxJR2QxYVdRZ1lXNWtJR052Ym5abGNuUnpJR2wwSUdsdWRHOGdZU0J5ZFc1MGFX
MWxMV0ZqWTJWemMybGliR1ZjYmlBZ0x5OGdaWGh3Y21WemMybHZiaTVjYmlBZ2NIVnphRkJ5YjJk
eVlXMDZJR1oxYm1OMGFXOXVLR2QxYVdRcElIdGNiaUFnSUNCcFppQW9aM1ZwWkNBaFBTQnVkV3hz
S1NCN1hHNGdJQ0FnSUNCMGFHbHpMbkIxYzJoVGRHRmphMHhwZEdWeVlXd29kR2hwY3k1d2NtOW5j
bUZ0Ulhod2NtVnpjMmx2YmlobmRXbGtLU2s3WEc0Z0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lI
Um9hWE11Y0hWemFGTjBZV05yVEdsMFpYSmhiQ2h1ZFd4c0tUdGNiaUFnSUNCOVhHNGdJSDBzWEc1
Y2JpQWdMeThnVzNKbFoybHpkR1Z5UkdWamIzSmhkRzl5WFZ4dUlDQXZMMXh1SUNBdkx5QlBiaUJ6
ZEdGamF5d2dZbVZtYjNKbE9pQm9ZWE5vTENCd2NtOW5jbUZ0TENCd1lYSmhiWE11TGk0c0lDNHVM
bHh1SUNBdkx5QlBiaUJ6ZEdGamF5d2dZV1owWlhJNklDNHVMbHh1SUNBdkwxeHVJQ0F2THlCUWIz
QnpJRzltWmlCMGFHVWdaR1ZqYjNKaGRHOXlKM01nY0dGeVlXMWxkR1Z5Y3l3Z2FXNTJiMnRsY3lC
MGFHVWdaR1ZqYjNKaGRHOXlMRnh1SUNBdkx5QmhibVFnYVc1elpYSjBjeUIwYUdVZ1pHVmpiM0po
ZEc5eUlHbHVkRzhnZEdobElHUmxZMjl5WVhSdmNuTWdiR2x6ZEM1Y2JpQWdjbVZuYVhOMFpYSkVa
V052Y21GMGIzSW9jR0Z5WVcxVGFYcGxMQ0J1WVcxbEtTQjdYRzRnSUNBZ2JHVjBJR1p2ZFc1a1JH
VmpiM0poZEc5eUlEMGdkR2hwY3k1dVlXMWxURzl2YTNWd0tDZGtaV052Y21GMGIzSnpKeXdnYm1G
dFpTd2dKMlJsWTI5eVlYUnZjaWNwTEZ4dUlDQWdJQ0FnSUNCdmNIUnBiMjV6SUQwZ2RHaHBjeTV6
WlhSMWNFaGxiSEJsY2tGeVozTW9ibUZ0WlN3Z2NHRnlZVzFUYVhwbEtUdGNibHh1SUNBZ0lIUm9h
WE11WkdWamIzSmhkRzl5Y3k1d2RYTm9LRnRjYmlBZ0lDQWdJQ2RtYmlBOUlDY3NYRzRnSUNBZ0lD
QjBhR2x6TG1SbFkyOXlZWFJ2Y25NdVpuVnVZM1JwYjI1RFlXeHNLR1p2ZFc1a1JHVmpiM0poZEc5
eUxDQW5KeXdnV3lkbWJpY3NJQ2R3Y205d2N5Y3NJQ2RqYjI1MFlXbHVaWEluTENCdmNIUnBiMjV6
WFNrc1hHNGdJQ0FnSUNBbklIeDhJR1p1T3lkY2JpQWdJQ0JkS1R0Y2JpQWdmU3hjYmx4dUlDQXZM
eUJiYVc1MmIydGxTR1ZzY0dWeVhWeHVJQ0F2TDF4dUlDQXZMeUJQYmlCemRHRmpheXdnWW1WbWIz
SmxPaUJvWVhOb0xDQnBiblpsY25ObExDQndjbTluY21GdExDQndZWEpoYlhNdUxpNHNJQzR1TGx4
dUlDQXZMeUJQYmlCemRHRmpheXdnWVdaMFpYSTZJSEpsYzNWc2RDQnZaaUJvWld4d1pYSWdhVzUy
YjJOaGRHbHZibHh1SUNBdkwxeHVJQ0F2THlCUWIzQnpJRzltWmlCMGFHVWdhR1ZzY0dWeUozTWdj
R0Z5WVcxbGRHVnljeXdnYVc1MmIydGxjeUIwYUdVZ2FHVnNjR1Z5TEZ4dUlDQXZMeUJoYm1RZ2NI
VnphR1Z6SUhSb1pTQm9aV3h3WlhJbmN5QnlaWFIxY200Z2RtRnNkV1VnYjI1MGJ5QjBhR1VnYzNS
aFkyc3VYRzRnSUM4dlhHNGdJQzh2SUVsbUlIUm9aU0JvWld4d1pYSWdhWE1nYm05MElHWnZkVzVr
TENCZ2FHVnNjR1Z5VFdsemMybHVaMkFnYVhNZ1kyRnNiR1ZrTGx4dUlDQnBiblp2YTJWSVpXeHda
WEk2SUdaMWJtTjBhVzl1S0hCaGNtRnRVMmw2WlN3Z2JtRnRaU3dnYVhOVGFXMXdiR1VwSUh0Y2Jp
QWdJQ0JzWlhRZ2JtOXVTR1ZzY0dWeUlEMGdkR2hwY3k1d2IzQlRkR0ZqYXlncExGeHVJQ0FnSUNB
Z0lDQm9aV3h3WlhJZ1BTQjBhR2x6TG5ObGRIVndTR1ZzY0dWeUtIQmhjbUZ0VTJsNlpTd2dibUZ0
WlNrc1hHNGdJQ0FnSUNBZ0lITnBiWEJzWlNBOUlHbHpVMmx0Y0d4bElEOGdXMmhsYkhCbGNpNXVZ
VzFsTENBbklIeDhJQ2RkSURvZ0p5YzdYRzVjYmlBZ0lDQnNaWFFnYkc5dmEzVndJRDBnV3ljb0ox
MHVZMjl1WTJGMEtITnBiWEJzWlN3Z2JtOXVTR1ZzY0dWeUtUdGNiaUFnSUNCcFppQW9JWFJvYVhN
dWIzQjBhVzl1Y3k1emRISnBZM1FwSUh0Y2JpQWdJQ0FnSUd4dmIydDFjQzV3ZFhOb0tDY2dmSHdn
Snl3Z2RHaHBjeTVoYkdsaGMyRmliR1VvSjJobGJIQmxjbk11YUdWc2NHVnlUV2x6YzJsdVp5Y3BL
VHRjYmlBZ0lDQjlYRzRnSUNBZ2JHOXZhM1Z3TG5CMWMyZ29KeWtuS1R0Y2JseHVJQ0FnSUhSb2FY
TXVjSFZ6YUNoMGFHbHpMbk52ZFhKalpTNW1kVzVqZEdsdmJrTmhiR3dvYkc5dmEzVndMQ0FuWTJG
c2JDY3NJR2hsYkhCbGNpNWpZV3hzVUdGeVlXMXpLU2s3WEc0Z0lIMHNYRzVjYmlBZ0x5OGdXMmx1
ZG05clpVdHViM2R1U0dWc2NHVnlYVnh1SUNBdkwxeHVJQ0F2THlCUGJpQnpkR0ZqYXl3Z1ltVm1i
M0psT2lCb1lYTm9MQ0JwYm5abGNuTmxMQ0J3Y205bmNtRnRMQ0J3WVhKaGJYTXVMaTRzSUM0dUxs
eHVJQ0F2THlCUGJpQnpkR0ZqYXl3Z1lXWjBaWEk2SUhKbGMzVnNkQ0J2WmlCb1pXeHdaWElnYVc1
MmIyTmhkR2x2Ymx4dUlDQXZMMXh1SUNBdkx5QlVhR2x6SUc5d1pYSmhkR2x2YmlCcGN5QjFjMlZr
SUhkb1pXNGdkR2hsSUdobGJIQmxjaUJwY3lCcmJtOTNiaUIwYnlCbGVHbHpkQ3hjYmlBZ0x5OGdj
MjhnWVNCZ2FHVnNjR1Z5VFdsemMybHVaMkFnWm1Gc2JHSmhZMnNnYVhNZ2JtOTBJSEpsY1hWcGNt
VmtMbHh1SUNCcGJuWnZhMlZMYm05M2JraGxiSEJsY2pvZ1puVnVZM1JwYjI0b2NHRnlZVzFUYVhw
bExDQnVZVzFsS1NCN1hHNGdJQ0FnYkdWMElHaGxiSEJsY2lBOUlIUm9hWE11YzJWMGRYQklaV3h3
WlhJb2NHRnlZVzFUYVhwbExDQnVZVzFsS1R0Y2JpQWdJQ0IwYUdsekxuQjFjMmdvZEdocGN5NXpi
M1Z5WTJVdVpuVnVZM1JwYjI1RFlXeHNLR2hsYkhCbGNpNXVZVzFsTENBblkyRnNiQ2NzSUdobGJI
QmxjaTVqWVd4c1VHRnlZVzF6S1NrN1hHNGdJSDBzWEc1Y2JpQWdMeThnVzJsdWRtOXJaVUZ0WW1s
bmRXOTFjMTFjYmlBZ0x5OWNiaUFnTHk4Z1QyNGdjM1JoWTJzc0lHSmxabTl5WlRvZ2FHRnphQ3dn
YVc1MlpYSnpaU3dnY0hKdlozSmhiU3dnY0dGeVlXMXpMaTR1TENBdUxpNWNiaUFnTHk4Z1QyNGdj
M1JoWTJzc0lHRm1kR1Z5T2lCeVpYTjFiSFFnYjJZZ1pHbHpZVzFpYVdkMVlYUnBiMjVjYmlBZ0x5
OWNiaUFnTHk4Z1ZHaHBjeUJ2Y0dWeVlYUnBiMjRnYVhNZ2RYTmxaQ0IzYUdWdUlHRnVJR1Y0Y0hK
bGMzTnBiMjRnYkdsclpTQmdlM3RtYjI5OWZXQmNiaUFnTHk4Z2FYTWdjSEp2ZG1sa1pXUXNJR0ox
ZENCM1pTQmtiMjRuZENCcmJtOTNJR0YwSUdOdmJYQnBiR1V0ZEdsdFpTQjNhR1YwYUdWeUlHbDBY
RzRnSUM4dklHbHpJR0VnYUdWc2NHVnlJRzl5SUdFZ2NHRjBhQzVjYmlBZ0x5OWNiaUFnTHk4Z1ZH
aHBjeUJ2Y0dWeVlYUnBiMjRnWlcxcGRITWdiVzl5WlNCamIyUmxJSFJvWVc0Z2RHaGxJRzkwYUdW
eUlHOXdkR2x2Ym5Nc1hHNGdJQzh2SUdGdVpDQmpZVzRnWW1VZ1lYWnZhV1JsWkNCaWVTQndZWE56
YVc1bklIUm9aU0JnYTI1dmQyNUlaV3h3WlhKellDQmhibVJjYmlBZ0x5OGdZR3R1YjNkdVNHVnNj
R1Z5YzA5dWJIbGdJR1pzWVdkeklHRjBJR052YlhCcGJHVXRkR2x0WlM1Y2JpQWdhVzUyYjJ0bFFX
MWlhV2QxYjNWek9pQm1kVzVqZEdsdmJpaHVZVzFsTENCb1pXeHdaWEpEWVd4c0tTQjdYRzRnSUNB
Z2RHaHBjeTUxYzJWU1pXZHBjM1JsY2lnbmFHVnNjR1Z5SnlrN1hHNWNiaUFnSUNCc1pYUWdibTl1
U0dWc2NHVnlJRDBnZEdocGN5NXdiM0JUZEdGamF5Z3BPMXh1WEc0Z0lDQWdkR2hwY3k1bGJYQjBl
VWhoYzJnb0tUdGNiaUFnSUNCc1pYUWdhR1ZzY0dWeUlEMGdkR2hwY3k1elpYUjFjRWhsYkhCbGNp
Z3dMQ0J1WVcxbExDQm9aV3h3WlhKRFlXeHNLVHRjYmx4dUlDQWdJR3hsZENCb1pXeHdaWEpPWVcx
bElEMGdkR2hwY3k1c1lYTjBTR1ZzY0dWeUlEMGdkR2hwY3k1dVlXMWxURzl2YTNWd0tDZG9aV3h3
WlhKekp5d2dibUZ0WlN3Z0oyaGxiSEJsY2ljcE8xeHVYRzRnSUNBZ2JHVjBJR3h2YjJ0MWNDQTlJ
RnNuS0Njc0lDY29hR1ZzY0dWeUlEMGdKeXdnYUdWc2NHVnlUbUZ0WlN3Z0p5QjhmQ0FuTENCdWIy
NUlaV3h3WlhJc0lDY3BKMTA3WEc0Z0lDQWdhV1lnS0NGMGFHbHpMbTl3ZEdsdmJuTXVjM1J5YVdO
MEtTQjdYRzRnSUNBZ0lDQnNiMjlyZFhCYk1GMGdQU0FuS0dobGJIQmxjaUE5SUNjN1hHNGdJQ0Fn
SUNCc2IyOXJkWEF1Y0hWemFDaGNiaUFnSUNBZ0lDQWdKeUFoUFNCdWRXeHNJRDhnYUdWc2NHVnlJ
RG9nSnl4Y2JpQWdJQ0FnSUNBZ2RHaHBjeTVoYkdsaGMyRmliR1VvSjJobGJIQmxjbk11YUdWc2NH
VnlUV2x6YzJsdVp5Y3BYRzRnSUNBZ0lDQXBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lIUm9hWE11Y0hW
emFDaGJYRzRnSUNBZ0lDQWdJQ2NvSnl3Z2JHOXZhM1Z3TEZ4dUlDQWdJQ0FnSUNBb2FHVnNjR1Z5
TG5CaGNtRnRjMGx1YVhRZ1B5QmJKeWtzS0Njc0lHaGxiSEJsY2k1d1lYSmhiWE5KYm1sMFhTQTZJ
RnRkS1N3Z0p5a3NKeXhjYmlBZ0lDQWdJQ0FnSnloMGVYQmxiMllnYUdWc2NHVnlJRDA5UFNBbkxD
QjBhR2x6TG1Gc2FXRnpZV0pzWlNnblhDSm1kVzVqZEdsdmJsd2lKeWtzSUNjZ1B5QW5MRnh1SUNB
Z0lDQWdJQ0IwYUdsekxuTnZkWEpqWlM1bWRXNWpkR2x2YmtOaGJHd29KMmhsYkhCbGNpY3NJQ2Rq
WVd4c0p5d2dhR1ZzY0dWeUxtTmhiR3hRWVhKaGJYTXBMQ0FuSURvZ2FHVnNjR1Z5S1NrblhHNGdJ
Q0FnWFNrN1hHNGdJSDBzWEc1Y2JpQWdMeThnVzJsdWRtOXJaVkJoY25ScFlXeGRYRzRnSUM4dlhH
NGdJQzh2SUU5dUlITjBZV05yTENCaVpXWnZjbVU2SUdOdmJuUmxlSFFzSUM0dUxseHVJQ0F2THlC
UGJpQnpkR0ZqYXlCaFpuUmxjam9nY21WemRXeDBJRzltSUhCaGNuUnBZV3dnYVc1MmIyTmhkR2x2
Ymx4dUlDQXZMMXh1SUNBdkx5QlVhR2x6SUc5d1pYSmhkR2x2YmlCd2IzQnpJRzltWmlCaElHTnZi
blJsZUhRc0lHbHVkbTlyWlhNZ1lTQndZWEowYVdGc0lIZHBkR2dnZEdoaGRDQmpiMjUwWlhoMExG
eHVJQ0F2THlCaGJtUWdjSFZ6YUdWeklIUm9aU0J5WlhOMWJIUWdiMllnZEdobElHbHVkbTlqWVhS
cGIyNGdZbUZqYXk1Y2JpQWdhVzUyYjJ0bFVHRnlkR2xoYkRvZ1puVnVZM1JwYjI0b2FYTkVlVzVo
YldsakxDQnVZVzFsTENCcGJtUmxiblFwSUh0Y2JpQWdJQ0JzWlhRZ2NHRnlZVzF6SUQwZ1cxMHNY
RzRnSUNBZ0lDQWdJRzl3ZEdsdmJuTWdQU0IwYUdsekxuTmxkSFZ3VUdGeVlXMXpLRzVoYldVc0lE
RXNJSEJoY21GdGN5azdYRzVjYmlBZ0lDQnBaaUFvYVhORWVXNWhiV2xqS1NCN1hHNGdJQ0FnSUNC
dVlXMWxJRDBnZEdocGN5NXdiM0JUZEdGamF5Z3BPMXh1SUNBZ0lDQWdaR1ZzWlhSbElHOXdkR2x2
Ym5NdWJtRnRaVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnBaaUFvYVc1a1pXNTBLU0I3WEc0Z0lDQWdJ
Q0J2Y0hScGIyNXpMbWx1WkdWdWRDQTlJRXBUVDA0dWMzUnlhVzVuYVdaNUtHbHVaR1Z1ZENrN1hH
NGdJQ0FnZlZ4dUlDQWdJRzl3ZEdsdmJuTXVhR1ZzY0dWeWN5QTlJQ2RvWld4d1pYSnpKenRjYmlB
Z0lDQnZjSFJwYjI1ekxuQmhjblJwWVd4eklEMGdKM0JoY25ScFlXeHpKenRjYmlBZ0lDQnZjSFJw
YjI1ekxtUmxZMjl5WVhSdmNuTWdQU0FuWTI5dWRHRnBibVZ5TG1SbFkyOXlZWFJ2Y25Nbk8xeHVY
RzRnSUNBZ2FXWWdLQ0ZwYzBSNWJtRnRhV01wSUh0Y2JpQWdJQ0FnSUhCaGNtRnRjeTUxYm5Ob2FX
WjBLSFJvYVhNdWJtRnRaVXh2YjJ0MWNDZ25jR0Z5ZEdsaGJITW5MQ0J1WVcxbExDQW5jR0Z5ZEds
aGJDY3BLVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2NHRnlZVzF6TG5WdWMyaHBablFv
Ym1GdFpTazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2FXWWdLSFJvYVhNdWIzQjBhVzl1Y3k1amIyMXdZ
WFFwSUh0Y2JpQWdJQ0FnSUc5d2RHbHZibk11WkdWd2RHaHpJRDBnSjJSbGNIUm9jeWM3WEc0Z0lD
QWdmVnh1SUNBZ0lHOXdkR2x2Ym5NZ1BTQjBhR2x6TG05aWFtVmpkRXhwZEdWeVlXd29iM0IwYVc5
dWN5azdYRzRnSUNBZ2NHRnlZVzF6TG5CMWMyZ29iM0IwYVc5dWN5azdYRzVjYmlBZ0lDQjBhR2x6
TG5CMWMyZ29kR2hwY3k1emIzVnlZMlV1Wm5WdVkzUnBiMjVEWVd4c0tDZGpiMjUwWVdsdVpYSXVh
VzUyYjJ0bFVHRnlkR2xoYkNjc0lDY25MQ0J3WVhKaGJYTXBLVHRjYmlBZ2ZTeGNibHh1SUNBdkx5
QmJZWE56YVdkdVZHOUlZWE5vWFZ4dUlDQXZMMXh1SUNBdkx5QlBiaUJ6ZEdGamF5d2dZbVZtYjNK
bE9pQjJZV3gxWlN3Z0xpNHVMQ0JvWVhOb0xDQXVMaTVjYmlBZ0x5OGdUMjRnYzNSaFkyc3NJR0Zt
ZEdWeU9pQXVMaTRzSUdoaGMyZ3NJQzR1TGx4dUlDQXZMMXh1SUNBdkx5QlFiM0J6SUdFZ2RtRnNk
V1VnYjJabUlIUm9aU0J6ZEdGamF5QmhibVFnWVhOemFXZHVjeUJwZENCMGJ5QjBhR1VnWTNWeWNt
VnVkQ0JvWVhOb1hHNGdJR0Z6YzJsbmJsUnZTR0Z6YURvZ1puVnVZM1JwYjI0b2EyVjVLU0I3WEc0
Z0lDQWdiR1YwSUhaaGJIVmxJRDBnZEdocGN5NXdiM0JUZEdGamF5Z3BMRnh1SUNBZ0lDQWdJQ0Jq
YjI1MFpYaDBMRnh1SUNBZ0lDQWdJQ0IwZVhCbExGeHVJQ0FnSUNBZ0lDQnBaRHRjYmx4dUlDQWdJ
R2xtSUNoMGFHbHpMblJ5WVdOclNXUnpLU0I3WEc0Z0lDQWdJQ0JwWkNBOUlIUm9hWE11Y0c5d1Uz
UmhZMnNvS1R0Y2JpQWdJQ0I5WEc0Z0lDQWdhV1lnS0hSb2FYTXVjM1J5YVc1blVHRnlZVzF6S1NC
N1hHNGdJQ0FnSUNCMGVYQmxJRDBnZEdocGN5NXdiM0JUZEdGamF5Z3BPMXh1SUNBZ0lDQWdZMjl1
ZEdWNGRDQTlJSFJvYVhNdWNHOXdVM1JoWTJzb0tUdGNiaUFnSUNCOVhHNWNiaUFnSUNCc1pYUWdh
R0Z6YUNBOUlIUm9hWE11YUdGemFEdGNiaUFnSUNCcFppQW9ZMjl1ZEdWNGRDa2dlMXh1SUNBZ0lD
QWdhR0Z6YUM1amIyNTBaWGgwYzF0clpYbGRJRDBnWTI5dWRHVjRkRHRjYmlBZ0lDQjlYRzRnSUNB
Z2FXWWdLSFI1Y0dVcElIdGNiaUFnSUNBZ0lHaGhjMmd1ZEhsd1pYTmJhMlY1WFNBOUlIUjVjR1U3
WEc0Z0lDQWdmVnh1SUNBZ0lHbG1JQ2hwWkNrZ2UxeHVJQ0FnSUNBZ2FHRnphQzVwWkhOYmEyVjVY
U0E5SUdsa08xeHVJQ0FnSUgxY2JpQWdJQ0JvWVhOb0xuWmhiSFZsYzF0clpYbGRJRDBnZG1Gc2RX
VTdYRzRnSUgwc1hHNWNiaUFnY0hWemFFbGtPaUJtZFc1amRHbHZiaWgwZVhCbExDQnVZVzFsTENC
amFHbHNaQ2tnZTF4dUlDQWdJR2xtSUNoMGVYQmxJRDA5UFNBblFteHZZMnRRWVhKaGJTY3BJSHRj
YmlBZ0lDQWdJSFJvYVhNdWNIVnphRk4wWVdOclRHbDBaWEpoYkNoY2JpQWdJQ0FnSUNBZ0lDQW5Z
bXh2WTJ0UVlYSmhiWE5iSnlBcklHNWhiV1ZiTUYwZ0t5QW5YUzV3WVhSb1d5Y2dLeUJ1WVcxbFd6
RmRJQ3NnSjEwblhHNGdJQ0FnSUNBZ0lDQWdLeUFvWTJocGJHUWdQeUFuSUNzZ0p5QXJJRXBUVDA0
dWMzUnlhVzVuYVdaNUtDY3VKeUFySUdOb2FXeGtLU0E2SUNjbktTazdYRzRnSUNBZ2ZTQmxiSE5s
SUdsbUlDaDBlWEJsSUQwOVBTQW5VR0YwYUVWNGNISmxjM05wYjI0bktTQjdYRzRnSUNBZ0lDQjBh
R2x6TG5CMWMyaFRkSEpwYm1jb2JtRnRaU2s3WEc0Z0lDQWdmU0JsYkhObElHbG1JQ2gwZVhCbElE
MDlQU0FuVTNWaVJYaHdjbVZ6YzJsdmJpY3BJSHRjYmlBZ0lDQWdJSFJvYVhNdWNIVnphRk4wWVdO
clRHbDBaWEpoYkNnbmRISjFaU2NwTzF4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQjBhR2x6
TG5CMWMyaFRkR0ZqYTB4cGRHVnlZV3dvSjI1MWJHd25LVHRjYmlBZ0lDQjlYRzRnSUgwc1hHNWNi
aUFnTHk4Z1NFVk1VRVZTVTF4dVhHNGdJR052YlhCcGJHVnlPaUJLWVhaaFUyTnlhWEIwUTI5dGNH
bHNaWElzWEc1Y2JpQWdZMjl0Y0dsc1pVTm9hV3hrY21WdU9pQm1kVzVqZEdsdmJpaGxiblpwY205
dWJXVnVkQ3dnYjNCMGFXOXVjeWtnZTF4dUlDQWdJR3hsZENCamFHbHNaSEpsYmlBOUlHVnVkbWx5
YjI1dFpXNTBMbU5vYVd4a2NtVnVMQ0JqYUdsc1pDd2dZMjl0Y0dsc1pYSTdYRzVjYmlBZ0lDQm1i
M0lnS0d4bGRDQnBJRDBnTUN3Z2JDQTlJR05vYVd4a2NtVnVMbXhsYm1kMGFEc2dhU0E4SUd3N0lH
a3JLeWtnZTF4dUlDQWdJQ0FnWTJocGJHUWdQU0JqYUdsc1pISmxibHRwWFR0Y2JpQWdJQ0FnSUdO
dmJYQnBiR1Z5SUQwZ2JtVjNJSFJvYVhNdVkyOXRjR2xzWlhJb0tUc2dJQ0FnTHk4Z1pYTnNhVzUw
TFdScGMyRmliR1V0YkdsdVpTQnVaWGN0WTJGd1hHNWNiaUFnSUNBZ0lHeGxkQ0JsZUdsemRHbHVa
eUE5SUhSb2FYTXViV0YwWTJoRmVHbHpkR2x1WjFCeWIyZHlZVzBvWTJocGJHUXBPMXh1WEc0Z0lD
QWdJQ0JwWmlBb1pYaHBjM1JwYm1jZ1BUMGdiblZzYkNrZ2UxeHVJQ0FnSUNBZ0lDQjBhR2x6TG1O
dmJuUmxlSFF1Y0hKdlozSmhiWE11Y0hWemFDZ25KeWs3SUNBZ0lDQXZMeUJRYkdGalpXaHZiR1Js
Y2lCMGJ5QndjbVYyWlc1MElHNWhiV1VnWTI5dVpteHBZM1J6SUdadmNpQnVaWE4wWldRZ1kyaHBi
R1J5Wlc1Y2JpQWdJQ0FnSUNBZ2JHVjBJR2x1WkdWNElEMGdkR2hwY3k1amIyNTBaWGgwTG5CeWIy
ZHlZVzF6TG14bGJtZDBhRHRjYmlBZ0lDQWdJQ0FnWTJocGJHUXVhVzVrWlhnZ1BTQnBibVJsZUR0
Y2JpQWdJQ0FnSUNBZ1kyaHBiR1F1Ym1GdFpTQTlJQ2R3Y205bmNtRnRKeUFySUdsdVpHVjRPMXh1
SUNBZ0lDQWdJQ0IwYUdsekxtTnZiblJsZUhRdWNISnZaM0poYlhOYmFXNWtaWGhkSUQwZ1kyOXRj
R2xzWlhJdVkyOXRjR2xzWlNoamFHbHNaQ3dnYjNCMGFXOXVjeXdnZEdocGN5NWpiMjUwWlhoMExD
QWhkR2hwY3k1d2NtVmpiMjF3YVd4bEtUdGNiaUFnSUNBZ0lDQWdkR2hwY3k1amIyNTBaWGgwTG1S
bFkyOXlZWFJ2Y25OYmFXNWtaWGhkSUQwZ1kyOXRjR2xzWlhJdVpHVmpiM0poZEc5eWN6dGNiaUFn
SUNBZ0lDQWdkR2hwY3k1amIyNTBaWGgwTG1WdWRtbHliMjV0Wlc1MGMxdHBibVJsZUYwZ1BTQmph
R2xzWkR0Y2JseHVJQ0FnSUNBZ0lDQjBhR2x6TG5WelpVUmxjSFJvY3lBOUlIUm9hWE11ZFhObFJH
VndkR2h6SUh4OElHTnZiWEJwYkdWeUxuVnpaVVJsY0hSb2N6dGNiaUFnSUNBZ0lDQWdkR2hwY3k1
MWMyVkNiRzlqYTFCaGNtRnRjeUE5SUhSb2FYTXVkWE5sUW14dlkydFFZWEpoYlhNZ2ZId2dZMjl0
Y0dsc1pYSXVkWE5sUW14dlkydFFZWEpoYlhNN1hHNGdJQ0FnSUNBZ0lHTm9hV3hrTG5WelpVUmxj
SFJvY3lBOUlIUm9hWE11ZFhObFJHVndkR2h6TzF4dUlDQWdJQ0FnSUNCamFHbHNaQzUxYzJWQ2JH
OWphMUJoY21GdGN5QTlJSFJvYVhNdWRYTmxRbXh2WTJ0UVlYSmhiWE03WEc0Z0lDQWdJQ0I5SUdW
c2MyVWdlMXh1SUNBZ0lDQWdJQ0JqYUdsc1pDNXBibVJsZUNBOUlHVjRhWE4wYVc1bkxtbHVaR1Y0
TzF4dUlDQWdJQ0FnSUNCamFHbHNaQzV1WVcxbElEMGdKM0J5YjJkeVlXMG5JQ3NnWlhocGMzUnBi
bWN1YVc1a1pYZzdYRzVjYmlBZ0lDQWdJQ0FnZEdocGN5NTFjMlZFWlhCMGFITWdQU0IwYUdsekxu
VnpaVVJsY0hSb2N5QjhmQ0JsZUdsemRHbHVaeTUxYzJWRVpYQjBhSE03WEc0Z0lDQWdJQ0FnSUhS
b2FYTXVkWE5sUW14dlkydFFZWEpoYlhNZ1BTQjBhR2x6TG5WelpVSnNiMk5yVUdGeVlXMXpJSHg4
SUdWNGFYTjBhVzVuTG5WelpVSnNiMk5yVUdGeVlXMXpPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNi
aUFnZlN4Y2JpQWdiV0YwWTJoRmVHbHpkR2x1WjFCeWIyZHlZVzA2SUdaMWJtTjBhVzl1S0dOb2FX
eGtLU0I3WEc0Z0lDQWdabTl5SUNoc1pYUWdhU0E5SURBc0lHeGxiaUE5SUhSb2FYTXVZMjl1ZEdW
NGRDNWxiblpwY205dWJXVnVkSE11YkdWdVozUm9PeUJwSUR3Z2JHVnVPeUJwS3lzcElIdGNiaUFn
SUNBZ0lHeGxkQ0JsYm5acGNtOXViV1Z1ZENBOUlIUm9hWE11WTI5dWRHVjRkQzVsYm5acGNtOXVi
V1Z1ZEhOYmFWMDdYRzRnSUNBZ0lDQnBaaUFvWlc1MmFYSnZibTFsYm5RZ0ppWWdaVzUyYVhKdmJt
MWxiblF1WlhGMVlXeHpLR05vYVd4a0tTa2dlMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdaVzUyYVhK
dmJtMWxiblE3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNCOUxGeHVYRzRnSUhCeWIyZHlZVzFG
ZUhCeVpYTnphVzl1T2lCbWRXNWpkR2x2YmlobmRXbGtLU0I3WEc0Z0lDQWdiR1YwSUdOb2FXeGtJ
RDBnZEdocGN5NWxiblpwY205dWJXVnVkQzVqYUdsc1pISmxibHRuZFdsa1hTeGNiaUFnSUNBZ0lD
QWdjSEp2WjNKaGJWQmhjbUZ0Y3lBOUlGdGphR2xzWkM1cGJtUmxlQ3dnSjJSaGRHRW5MQ0JqYUds
c1pDNWliRzlqYTFCaGNtRnRjMTA3WEc1Y2JpQWdJQ0JwWmlBb2RHaHBjeTUxYzJWQ2JHOWphMUJo
Y21GdGN5QjhmQ0IwYUdsekxuVnpaVVJsY0hSb2N5a2dlMXh1SUNBZ0lDQWdjSEp2WjNKaGJWQmhj
bUZ0Y3k1d2RYTm9LQ2RpYkc5amExQmhjbUZ0Y3ljcE8xeHVJQ0FnSUgxY2JpQWdJQ0JwWmlBb2RH
aHBjeTUxYzJWRVpYQjBhSE1wSUh0Y2JpQWdJQ0FnSUhCeWIyZHlZVzFRWVhKaGJYTXVjSFZ6YUNn
blpHVndkR2h6SnlrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnY21WMGRYSnVJQ2RqYjI1MFlXbHVaWEl1
Y0hKdlozSmhiU2duSUNzZ2NISnZaM0poYlZCaGNtRnRjeTVxYjJsdUtDY3NJQ2NwSUNzZ0p5a25P
MXh1SUNCOUxGeHVYRzRnSUhWelpWSmxaMmx6ZEdWeU9pQm1kVzVqZEdsdmJpaHVZVzFsS1NCN1hH
NGdJQ0FnYVdZZ0tDRjBhR2x6TG5KbFoybHpkR1Z5YzF0dVlXMWxYU2tnZTF4dUlDQWdJQ0FnZEdo
cGN5NXlaV2RwYzNSbGNuTmJibUZ0WlYwZ1BTQjBjblZsTzF4dUlDQWdJQ0FnZEdocGN5NXlaV2Rw
YzNSbGNuTXViR2x6ZEM1d2RYTm9LRzVoYldVcE8xeHVJQ0FnSUgxY2JpQWdmU3hjYmx4dUlDQndk
WE5vT2lCbWRXNWpkR2x2YmlobGVIQnlLU0I3WEc0Z0lDQWdhV1lnS0NFb1pYaHdjaUJwYm5OMFlX
NWpaVzltSUV4cGRHVnlZV3dwS1NCN1hHNGdJQ0FnSUNCbGVIQnlJRDBnZEdocGN5NXpiM1Z5WTJV
dWQzSmhjQ2hsZUhCeUtUdGNiaUFnSUNCOVhHNWNiaUFnSUNCMGFHbHpMbWx1YkdsdVpWTjBZV05y
TG5CMWMyZ29aWGh3Y2lrN1hHNGdJQ0FnY21WMGRYSnVJR1Y0Y0hJN1hHNGdJSDBzWEc1Y2JpQWdj
SFZ6YUZOMFlXTnJUR2wwWlhKaGJEb2dablZ1WTNScGIyNG9hWFJsYlNrZ2UxeHVJQ0FnSUhSb2FY
TXVjSFZ6YUNodVpYY2dUR2wwWlhKaGJDaHBkR1Z0S1NrN1hHNGdJSDBzWEc1Y2JpQWdjSFZ6YUZO
dmRYSmpaVG9nWm5WdVkzUnBiMjRvYzI5MWNtTmxLU0I3WEc0Z0lDQWdhV1lnS0hSb2FYTXVjR1Z1
WkdsdVowTnZiblJsYm5RcElIdGNiaUFnSUNBZ0lIUm9hWE11YzI5MWNtTmxMbkIxYzJnb1hHNGdJ
Q0FnSUNBZ0lDQWdkR2hwY3k1aGNIQmxibVJVYjBKMVptWmxjaWgwYUdsekxuTnZkWEpqWlM1eGRX
OTBaV1JUZEhKcGJtY29kR2hwY3k1d1pXNWthVzVuUTI5dWRHVnVkQ2tzSUhSb2FYTXVjR1Z1Wkds
dVoweHZZMkYwYVc5dUtTazdYRzRnSUNBZ0lDQjBhR2x6TG5CbGJtUnBibWREYjI1MFpXNTBJRDBn
ZFc1a1pXWnBibVZrTzF4dUlDQWdJSDFjYmx4dUlDQWdJR2xtSUNoemIzVnlZMlVwSUh0Y2JpQWdJ
Q0FnSUhSb2FYTXVjMjkxY21ObExuQjFjMmdvYzI5MWNtTmxLVHRjYmlBZ0lDQjlYRzRnSUgwc1hH
NWNiaUFnY21Wd2JHRmpaVk4wWVdOck9pQm1kVzVqZEdsdmJpaGpZV3hzWW1GamF5a2dlMXh1SUNB
Z0lHeGxkQ0J3Y21WbWFYZ2dQU0JiSnlnblhTeGNiaUFnSUNBZ0lDQWdjM1JoWTJzc1hHNGdJQ0Fn
SUNBZ0lHTnlaV0YwWldSVGRHRmpheXhjYmlBZ0lDQWdJQ0FnZFhObFpFeHBkR1Z5WVd3N1hHNWNi
aUFnSUNBdktpQnBjM1JoYm1KMWJDQnBaMjV2Y21VZ2JtVjRkQ0FxTDF4dUlDQWdJR2xtSUNnaGRH
aHBjeTVwYzBsdWJHbHVaU2dwS1NCN1hHNGdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1JYaGpaWEIwYVc5
dUtDZHlaWEJzWVdObFUzUmhZMnNnYjI0Z2JtOXVMV2x1YkdsdVpTY3BPMXh1SUNBZ0lIMWNibHh1
SUNBZ0lDOHZJRmRsSUhkaGJuUWdkRzhnYldWeVoyVWdkR2hsSUdsdWJHbHVaU0J6ZEdGMFpXMWxi
blFnYVc1MGJ5QjBhR1VnY21Wd2JHRmpaVzFsYm5RZ2MzUmhkR1Z0Wlc1MElIWnBZU0FuTENkY2Jp
QWdJQ0JzWlhRZ2RHOXdJRDBnZEdocGN5NXdiM0JUZEdGamF5aDBjblZsS1R0Y2JseHVJQ0FnSUds
bUlDaDBiM0FnYVc1emRHRnVZMlZ2WmlCTWFYUmxjbUZzS1NCN1hHNGdJQ0FnSUNBdkx5Qk1hWFJs
Y21Gc2N5QmtieUJ1YjNRZ2JtVmxaQ0IwYnlCaVpTQnBibXhwYm1Wa1hHNGdJQ0FnSUNCemRHRmph
eUE5SUZ0MGIzQXVkbUZzZFdWZE8xeHVJQ0FnSUNBZ2NISmxabWw0SUQwZ1d5Y29KeXdnYzNSaFky
dGRPMXh1SUNBZ0lDQWdkWE5sWkV4cGRHVnlZV3dnUFNCMGNuVmxPMXh1SUNBZ0lIMGdaV3h6WlNC
N1hHNGdJQ0FnSUNBdkx5QkhaWFFnYjNJZ1kzSmxZWFJsSUhSb1pTQmpkWEp5Wlc1MElITjBZV05y
SUc1aGJXVWdabTl5SUhWelpTQmllU0IwYUdVZ2FXNXNhVzVsWEc0Z0lDQWdJQ0JqY21WaGRHVmtV
M1JoWTJzZ1BTQjBjblZsTzF4dUlDQWdJQ0FnYkdWMElHNWhiV1VnUFNCMGFHbHpMbWx1WTNKVGRH
RmpheWdwTzF4dVhHNGdJQ0FnSUNCd2NtVm1hWGdnUFNCYkp5Z29KeXdnZEdocGN5NXdkWE5vS0c1
aGJXVXBMQ0FuSUQwZ0p5d2dkRzl3TENBbktTZGRPMXh1SUNBZ0lDQWdjM1JoWTJzZ1BTQjBhR2x6
TG5SdmNGTjBZV05yS0NrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYkdWMElHbDBaVzBnUFNCallXeHNZ
bUZqYXk1allXeHNLSFJvYVhNc0lITjBZV05yS1R0Y2JseHVJQ0FnSUdsbUlDZ2hkWE5sWkV4cGRH
VnlZV3dwSUh0Y2JpQWdJQ0FnSUhSb2FYTXVjRzl3VTNSaFkyc29LVHRjYmlBZ0lDQjlYRzRnSUNB
Z2FXWWdLR055WldGMFpXUlRkR0ZqYXlrZ2UxeHVJQ0FnSUNBZ2RHaHBjeTV6ZEdGamExTnNiM1F0
TFR0Y2JpQWdJQ0I5WEc0Z0lDQWdkR2hwY3k1d2RYTm9LSEJ5WldacGVDNWpiMjVqWVhRb2FYUmxi
U3dnSnlrbktTazdYRzRnSUgwc1hHNWNiaUFnYVc1amNsTjBZV05yT2lCbWRXNWpkR2x2YmlncElI
dGNiaUFnSUNCMGFHbHpMbk4wWVdOclUyeHZkQ3NyTzF4dUlDQWdJR2xtSUNoMGFHbHpMbk4wWVdO
clUyeHZkQ0ErSUhSb2FYTXVjM1JoWTJ0V1lYSnpMbXhsYm1kMGFDa2dleUIwYUdsekxuTjBZV05y
Vm1GeWN5NXdkWE5vS0NkemRHRmpheWNnS3lCMGFHbHpMbk4wWVdOclUyeHZkQ2s3SUgxY2JpQWdJ
Q0J5WlhSMWNtNGdkR2hwY3k1MGIzQlRkR0ZqYTA1aGJXVW9LVHRjYmlBZ2ZTeGNiaUFnZEc5d1Uz
UmhZMnRPWVcxbE9pQm1kVzVqZEdsdmJpZ3BJSHRjYmlBZ0lDQnlaWFIxY200Z0ozTjBZV05ySnlB
cklIUm9hWE11YzNSaFkydFRiRzkwTzF4dUlDQjlMRnh1SUNCbWJIVnphRWx1YkdsdVpUb2dablZ1
WTNScGIyNG9LU0I3WEc0Z0lDQWdiR1YwSUdsdWJHbHVaVk4wWVdOcklEMGdkR2hwY3k1cGJteHBi
bVZUZEdGamF6dGNiaUFnSUNCMGFHbHpMbWx1YkdsdVpWTjBZV05ySUQwZ1cxMDdYRzRnSUNBZ1pt
OXlJQ2hzWlhRZ2FTQTlJREFzSUd4bGJpQTlJR2x1YkdsdVpWTjBZV05yTG14bGJtZDBhRHNnYVNB
OElHeGxianNnYVNzcktTQjdYRzRnSUNBZ0lDQnNaWFFnWlc1MGNua2dQU0JwYm14cGJtVlRkR0Zq
YTF0cFhUdGNiaUFnSUNBZ0lDOHFJR2x6ZEdGdVluVnNJR2xuYm05eVpTQnBaaUFxTDF4dUlDQWdJ
Q0FnYVdZZ0tHVnVkSEo1SUdsdWMzUmhibU5sYjJZZ1RHbDBaWEpoYkNrZ2UxeHVJQ0FnSUNBZ0lD
QjBhR2x6TG1OdmJYQnBiR1ZUZEdGamF5NXdkWE5vS0dWdWRISjVLVHRjYmlBZ0lDQWdJSDBnWld4
elpTQjdYRzRnSUNBZ0lDQWdJR3hsZENCemRHRmpheUE5SUhSb2FYTXVhVzVqY2xOMFlXTnJLQ2s3
WEc0Z0lDQWdJQ0FnSUhSb2FYTXVjSFZ6YUZOdmRYSmpaU2hiYzNSaFkyc3NJQ2NnUFNBbkxDQmxi
blJ5ZVN3Z0p6c25YU2s3WEc0Z0lDQWdJQ0FnSUhSb2FYTXVZMjl0Y0dsc1pWTjBZV05yTG5CMWMy
Z29jM1JoWTJzcE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdmU3hjYmlBZ2FYTkpibXhwYm1V
NklHWjFibU4wYVc5dUtDa2dlMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMbWx1YkdsdVpWTjBZV05y
TG14bGJtZDBhRHRjYmlBZ2ZTeGNibHh1SUNCd2IzQlRkR0ZqYXpvZ1puVnVZM1JwYjI0b2QzSmhj
SEJsWkNrZ2UxeHVJQ0FnSUd4bGRDQnBibXhwYm1VZ1BTQjBhR2x6TG1selNXNXNhVzVsS0Nrc1hH
NGdJQ0FnSUNBZ0lHbDBaVzBnUFNBb2FXNXNhVzVsSUQ4Z2RHaHBjeTVwYm14cGJtVlRkR0ZqYXlB
NklIUm9hWE11WTI5dGNHbHNaVk4wWVdOcktTNXdiM0FvS1R0Y2JseHVJQ0FnSUdsbUlDZ2hkM0po
Y0hCbFpDQW1KaUFvYVhSbGJTQnBibk4wWVc1alpXOW1JRXhwZEdWeVlXd3BLU0I3WEc0Z0lDQWdJ
Q0J5WlhSMWNtNGdhWFJsYlM1MllXeDFaVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2FX
WWdLQ0ZwYm14cGJtVXBJSHRjYmlBZ0lDQWdJQ0FnTHlvZ2FYTjBZVzVpZFd3Z2FXZHViM0psSUc1
bGVIUWdLaTljYmlBZ0lDQWdJQ0FnYVdZZ0tDRjBhR2x6TG5OMFlXTnJVMnh2ZENrZ2UxeHVJQ0Fn
SUNBZ0lDQWdJSFJvY205M0lHNWxkeUJGZUdObGNIUnBiMjRvSjBsdWRtRnNhV1FnYzNSaFkyc2dj
Rzl3SnlrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdkR2hwY3k1emRHRmphMU5zYjNRdExU
dGNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lISmxkSFZ5YmlCcGRHVnRPMXh1SUNBZ0lIMWNiaUFnZlN4
Y2JseHVJQ0IwYjNCVGRHRmphem9nWm5WdVkzUnBiMjRvS1NCN1hHNGdJQ0FnYkdWMElITjBZV05y
SUQwZ0tIUm9hWE11YVhOSmJteHBibVVvS1NBL0lIUm9hWE11YVc1c2FXNWxVM1JoWTJzZ09pQjBh
R2x6TG1OdmJYQnBiR1ZUZEdGamF5a3NYRzRnSUNBZ0lDQWdJR2wwWlcwZ1BTQnpkR0ZqYTF0emRH
RmpheTVzWlc1bmRHZ2dMU0F4WFR0Y2JseHVJQ0FnSUM4cUlHbHpkR0Z1WW5Wc0lHbG5ibTl5WlNC
cFppQXFMMXh1SUNBZ0lHbG1JQ2hwZEdWdElHbHVjM1JoYm1ObGIyWWdUR2wwWlhKaGJDa2dlMXh1
SUNBZ0lDQWdjbVYwZFhKdUlHbDBaVzB1ZG1Gc2RXVTdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJ
Q0FnSUhKbGRIVnliaUJwZEdWdE8xeHVJQ0FnSUgxY2JpQWdmU3hjYmx4dUlDQmpiMjUwWlhoMFRt
RnRaVG9nWm5WdVkzUnBiMjRvWTI5dWRHVjRkQ2tnZTF4dUlDQWdJR2xtSUNoMGFHbHpMblZ6WlVS
bGNIUm9jeUFtSmlCamIyNTBaWGgwS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnSjJSbGNIUm9jMXNu
SUNzZ1kyOXVkR1Y0ZENBcklDZGRKenRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2NtVjBk
WEp1SUNka1pYQjBhQ2NnS3lCamIyNTBaWGgwTzF4dUlDQWdJSDFjYmlBZ2ZTeGNibHh1SUNCeGRX
OTBaV1JUZEhKcGJtYzZJR1oxYm1OMGFXOXVLSE4wY2lrZ2UxeHVJQ0FnSUhKbGRIVnliaUIwYUds
ekxuTnZkWEpqWlM1eGRXOTBaV1JUZEhKcGJtY29jM1J5S1R0Y2JpQWdmU3hjYmx4dUlDQnZZbXBs
WTNSTWFYUmxjbUZzT2lCbWRXNWpkR2x2Ymlodlltb3BJSHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBj
eTV6YjNWeVkyVXViMkpxWldOMFRHbDBaWEpoYkNodlltb3BPMXh1SUNCOUxGeHVYRzRnSUdGc2FX
RnpZV0pzWlRvZ1puVnVZM1JwYjI0b2JtRnRaU2tnZTF4dUlDQWdJR3hsZENCeVpYUWdQU0IwYUds
ekxtRnNhV0Z6WlhOYmJtRnRaVjA3WEc0Z0lDQWdhV1lnS0hKbGRDa2dlMXh1SUNBZ0lDQWdjbVYw
TG5KbFptVnlaVzVqWlVOdmRXNTBLeXM3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdjbVYwTzF4dUlDQWdJ
SDFjYmx4dUlDQWdJSEpsZENBOUlIUm9hWE11WVd4cFlYTmxjMXR1WVcxbFhTQTlJSFJvYVhNdWMy
OTFjbU5sTG5keVlYQW9ibUZ0WlNrN1hHNGdJQ0FnY21WMExtRnNhV0Z6WVdKc1pTQTlJSFJ5ZFdV
N1hHNGdJQ0FnY21WMExuSmxabVZ5Wlc1alpVTnZkVzUwSUQwZ01UdGNibHh1SUNBZ0lISmxkSFZ5
YmlCeVpYUTdYRzRnSUgwc1hHNWNiaUFnYzJWMGRYQklaV3h3WlhJNklHWjFibU4wYVc5dUtIQmhj
bUZ0VTJsNlpTd2dibUZ0WlN3Z1lteHZZMnRJWld4d1pYSXBJSHRjYmlBZ0lDQnNaWFFnY0dGeVlX
MXpJRDBnVzEwc1hHNGdJQ0FnSUNBZ0lIQmhjbUZ0YzBsdWFYUWdQU0IwYUdsekxuTmxkSFZ3U0dW
c2NHVnlRWEpuY3lodVlXMWxMQ0J3WVhKaGJWTnBlbVVzSUhCaGNtRnRjeXdnWW14dlkydElaV3h3
WlhJcE8xeHVJQ0FnSUd4bGRDQm1iM1Z1WkVobGJIQmxjaUE5SUhSb2FYTXVibUZ0WlV4dmIydDFj
Q2duYUdWc2NHVnljeWNzSUc1aGJXVXNJQ2RvWld4d1pYSW5LU3hjYmlBZ0lDQWdJQ0FnWTJGc2JF
TnZiblJsZUhRZ1BTQjBhR2x6TG1Gc2FXRnpZV0pzWlNoZ0pIdDBhR2x6TG1OdmJuUmxlSFJPWVcx
bEtEQXBmU0FoUFNCdWRXeHNJRDhnSkh0MGFHbHpMbU52Ym5SbGVIUk9ZVzFsS0RBcGZTQTZJSHQ5
WUNrN1hHNWNiaUFnSUNCeVpYUjFjbTRnZTF4dUlDQWdJQ0FnY0dGeVlXMXpPaUJ3WVhKaGJYTXNY
RzRnSUNBZ0lDQndZWEpoYlhOSmJtbDBPaUJ3WVhKaGJYTkpibWwwTEZ4dUlDQWdJQ0FnYm1GdFpU
b2dabTkxYm1SSVpXeHdaWElzWEc0Z0lDQWdJQ0JqWVd4c1VHRnlZVzF6T2lCYlkyRnNiRU52Ym5S
bGVIUmRMbU52Ym1OaGRDaHdZWEpoYlhNcFhHNGdJQ0FnZlR0Y2JpQWdmU3hjYmx4dUlDQnpaWFIx
Y0ZCaGNtRnRjem9nWm5WdVkzUnBiMjRvYUdWc2NHVnlMQ0J3WVhKaGJWTnBlbVVzSUhCaGNtRnRj
eWtnZTF4dUlDQWdJR3hsZENCdmNIUnBiMjV6SUQwZ2UzMHNYRzRnSUNBZ0lDQWdJR052Ym5SbGVI
UnpJRDBnVzEwc1hHNGdJQ0FnSUNBZ0lIUjVjR1Z6SUQwZ1cxMHNYRzRnSUNBZ0lDQWdJR2xrY3lB
OUlGdGRMRnh1SUNBZ0lDQWdJQ0J2WW1wbFkzUkJjbWR6SUQwZ0lYQmhjbUZ0Y3l4Y2JpQWdJQ0Fn
SUNBZ2NHRnlZVzA3WEc1Y2JpQWdJQ0JwWmlBb2IySnFaV04wUVhKbmN5a2dlMXh1SUNBZ0lDQWdj
R0Z5WVcxeklEMGdXMTA3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdiM0IwYVc5dWN5NXVZVzFsSUQwZ2RH
aHBjeTV4ZFc5MFpXUlRkSEpwYm1jb2FHVnNjR1Z5S1R0Y2JpQWdJQ0J2Y0hScGIyNXpMbWhoYzJn
Z1BTQjBhR2x6TG5CdmNGTjBZV05yS0NrN1hHNWNiaUFnSUNCcFppQW9kR2hwY3k1MGNtRmphMGxr
Y3lrZ2UxeHVJQ0FnSUNBZ2IzQjBhVzl1Y3k1b1lYTm9TV1J6SUQwZ2RHaHBjeTV3YjNCVGRHRmph
eWdwTzF4dUlDQWdJSDFjYmlBZ0lDQnBaaUFvZEdocGN5NXpkSEpwYm1kUVlYSmhiWE1wSUh0Y2Jp
QWdJQ0FnSUc5d2RHbHZibk11YUdGemFGUjVjR1Z6SUQwZ2RHaHBjeTV3YjNCVGRHRmpheWdwTzF4
dUlDQWdJQ0FnYjNCMGFXOXVjeTVvWVhOb1EyOXVkR1Y0ZEhNZ1BTQjBhR2x6TG5CdmNGTjBZV05y
S0NrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYkdWMElHbHVkbVZ5YzJVZ1BTQjBhR2x6TG5CdmNGTjBZ
V05yS0Nrc1hHNGdJQ0FnSUNBZ0lIQnliMmR5WVcwZ1BTQjBhR2x6TG5CdmNGTjBZV05yS0NrN1hH
NWNiaUFnSUNBdkx5QkJkbTlwWkNCelpYUjBhVzVuSUdadUlHRnVaQ0JwYm5abGNuTmxJR2xtSUc1
bGFYUm9aWElnWVhKbElITmxkQzRnVkdocGN5QmhiR3h2ZDNOY2JpQWdJQ0F2THlCb1pXeHdaWEp6
SUhSdklHUnZJR0VnWTJobFkyc2dabTl5SUdCcFppQW9iM0IwYVc5dWN5NW1iaWxnWEc0Z0lDQWdh
V1lnS0hCeWIyZHlZVzBnZkh3Z2FXNTJaWEp6WlNrZ2UxeHVJQ0FnSUNBZ2IzQjBhVzl1Y3k1bWJp
QTlJSEJ5YjJkeVlXMGdmSHdnSjJOdmJuUmhhVzVsY2k1dWIyOXdKenRjYmlBZ0lDQWdJRzl3ZEds
dmJuTXVhVzUyWlhKelpTQTlJR2x1ZG1WeWMyVWdmSHdnSjJOdmJuUmhhVzVsY2k1dWIyOXdKenRj
YmlBZ0lDQjlYRzVjYmlBZ0lDQXZMeUJVYUdVZ2NHRnlZVzFsZEdWeWN5Qm5ieUJ2YmlCMGJ5QjBh
R1VnYzNSaFkyc2dhVzRnYjNKa1pYSWdLRzFoYTJsdVp5QnpkWEpsSUhSb1lYUWdkR2hsZVNCaGNt
VWdaWFpoYkhWaGRHVmtJR2x1SUc5eVpHVnlLVnh1SUNBZ0lDOHZJSE52SUhkbElHNWxaV1FnZEc4
Z2NHOXdJSFJvWlcwZ2IyWm1JSFJvWlNCemRHRmpheUJwYmlCeVpYWmxjbk5sSUc5eVpHVnlYRzRn
SUNBZ2JHVjBJR2tnUFNCd1lYSmhiVk5wZW1VN1hHNGdJQ0FnZDJocGJHVWdLR2t0TFNrZ2UxeHVJ
Q0FnSUNBZ2NHRnlZVzBnUFNCMGFHbHpMbkJ2Y0ZOMFlXTnJLQ2s3WEc0Z0lDQWdJQ0J3WVhKaGJY
TmJhVjBnUFNCd1lYSmhiVHRjYmx4dUlDQWdJQ0FnYVdZZ0tIUm9hWE11ZEhKaFkydEpaSE1wSUh0
Y2JpQWdJQ0FnSUNBZ2FXUnpXMmxkSUQwZ2RHaHBjeTV3YjNCVGRHRmpheWdwTzF4dUlDQWdJQ0Fn
ZlZ4dUlDQWdJQ0FnYVdZZ0tIUm9hWE11YzNSeWFXNW5VR0Z5WVcxektTQjdYRzRnSUNBZ0lDQWdJ
SFI1Y0dWelcybGRJRDBnZEdocGN5NXdiM0JUZEdGamF5Z3BPMXh1SUNBZ0lDQWdJQ0JqYjI1MFpY
aDBjMXRwWFNBOUlIUm9hWE11Y0c5d1UzUmhZMnNvS1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc1
Y2JpQWdJQ0JwWmlBb2IySnFaV04wUVhKbmN5a2dlMXh1SUNBZ0lDQWdiM0IwYVc5dWN5NWhjbWR6
SUQwZ2RHaHBjeTV6YjNWeVkyVXVaMlZ1WlhKaGRHVkJjbkpoZVNod1lYSmhiWE1wTzF4dUlDQWdJ
SDFjYmx4dUlDQWdJR2xtSUNoMGFHbHpMblJ5WVdOclNXUnpLU0I3WEc0Z0lDQWdJQ0J2Y0hScGIy
NXpMbWxrY3lBOUlIUm9hWE11YzI5MWNtTmxMbWRsYm1WeVlYUmxRWEp5WVhrb2FXUnpLVHRjYmlB
Z0lDQjlYRzRnSUNBZ2FXWWdLSFJvYVhNdWMzUnlhVzVuVUdGeVlXMXpLU0I3WEc0Z0lDQWdJQ0J2
Y0hScGIyNXpMblI1Y0dWeklEMGdkR2hwY3k1emIzVnlZMlV1WjJWdVpYSmhkR1ZCY25KaGVTaDBl
WEJsY3lrN1hHNGdJQ0FnSUNCdmNIUnBiMjV6TG1OdmJuUmxlSFJ6SUQwZ2RHaHBjeTV6YjNWeVky
VXVaMlZ1WlhKaGRHVkJjbkpoZVNoamIyNTBaWGgwY3lrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZ
Z0tIUm9hWE11YjNCMGFXOXVjeTVrWVhSaEtTQjdYRzRnSUNBZ0lDQnZjSFJwYjI1ekxtUmhkR0Vn
UFNBblpHRjBZU2M3WEc0Z0lDQWdmVnh1SUNBZ0lHbG1JQ2gwYUdsekxuVnpaVUpzYjJOclVHRnlZ
VzF6S1NCN1hHNGdJQ0FnSUNCdmNIUnBiMjV6TG1Kc2IyTnJVR0Z5WVcxeklEMGdKMkpzYjJOclVH
RnlZVzF6Snp0Y2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlHOXdkR2x2Ym5NN1hHNGdJSDBzWEc1
Y2JpQWdjMlYwZFhCSVpXeHdaWEpCY21kek9pQm1kVzVqZEdsdmJpaG9aV3h3WlhJc0lIQmhjbUZ0
VTJsNlpTd2djR0Z5WVcxekxDQjFjMlZTWldkcGMzUmxjaWtnZTF4dUlDQWdJR3hsZENCdmNIUnBi
MjV6SUQwZ2RHaHBjeTV6WlhSMWNGQmhjbUZ0Y3lob1pXeHdaWElzSUhCaGNtRnRVMmw2WlN3Z2NH
RnlZVzF6S1R0Y2JpQWdJQ0J2Y0hScGIyNXpJRDBnZEdocGN5NXZZbXBsWTNSTWFYUmxjbUZzS0c5
d2RHbHZibk1wTzF4dUlDQWdJR2xtSUNoMWMyVlNaV2RwYzNSbGNpa2dlMXh1SUNBZ0lDQWdkR2hw
Y3k1MWMyVlNaV2RwYzNSbGNpZ25iM0IwYVc5dWN5Y3BPMXh1SUNBZ0lDQWdjR0Z5WVcxekxuQjFj
MmdvSjI5d2RHbHZibk1uS1R0Y2JpQWdJQ0FnSUhKbGRIVnliaUJiSjI5d2RHbHZibk05Snl3Z2Iz
QjBhVzl1YzEwN1hHNGdJQ0FnZlNCbGJITmxJR2xtSUNod1lYSmhiWE1wSUh0Y2JpQWdJQ0FnSUhC
aGNtRnRjeTV3ZFhOb0tHOXdkR2x2Ym5NcE8xeHVJQ0FnSUNBZ2NtVjBkWEp1SUNjbk8xeHVJQ0Fn
SUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdiM0IwYVc5dWN6dGNiaUFnSUNCOVhHNGdJ
SDFjYm4wN1hHNWNibHh1S0daMWJtTjBhVzl1S0NrZ2UxeHVJQ0JqYjI1emRDQnlaWE5sY25abFpG
ZHZjbVJ6SUQwZ0tGeHVJQ0FnSUNkaWNtVmhheUJsYkhObElHNWxkeUIyWVhJbklDdGNiaUFnSUNB
bklHTmhjMlVnWm1sdVlXeHNlU0J5WlhSMWNtNGdkbTlwWkNjZ0sxeHVJQ0FnSUNjZ1kyRjBZMmdn
Wm05eUlITjNhWFJqYUNCM2FHbHNaU2NnSzF4dUlDQWdJQ2NnWTI5dWRHbHVkV1VnWm5WdVkzUnBi
MjRnZEdocGN5QjNhWFJvSnlBclhHNGdJQ0FnSnlCa1pXWmhkV3gwSUdsbUlIUm9jbTkzSnlBclhH
NGdJQ0FnSnlCa1pXeGxkR1VnYVc0Z2RISjVKeUFyWEc0Z0lDQWdKeUJrYnlCcGJuTjBZVzVqWlc5
bUlIUjVjR1Z2WmljZ0sxeHVJQ0FnSUNjZ1lXSnpkSEpoWTNRZ1pXNTFiU0JwYm5RZ2MyaHZjblFu
SUN0Y2JpQWdJQ0FuSUdKdmIyeGxZVzRnWlhod2IzSjBJR2x1ZEdWeVptRmpaU0J6ZEdGMGFXTW5J
Q3RjYmlBZ0lDQW5JR0o1ZEdVZ1pYaDBaVzVrY3lCc2IyNW5JSE4xY0dWeUp5QXJYRzRnSUNBZ0p5
QmphR0Z5SUdacGJtRnNJRzVoZEdsMlpTQnplVzVqYUhKdmJtbDZaV1FuSUN0Y2JpQWdJQ0FuSUdO
c1lYTnpJR1pzYjJGMElIQmhZMnRoWjJVZ2RHaHliM2R6SnlBclhHNGdJQ0FnSnlCamIyNXpkQ0Ju
YjNSdklIQnlhWFpoZEdVZ2RISmhibk5wWlc1MEp5QXJYRzRnSUNBZ0p5QmtaV0oxWjJkbGNpQnBi
WEJzWlcxbGJuUnpJSEJ5YjNSbFkzUmxaQ0IyYjJ4aGRHbHNaU2NnSzF4dUlDQWdJQ2NnWkc5MVlt
eGxJR2x0Y0c5eWRDQndkV0pzYVdNZ2JHVjBJSGxwWld4a0lHRjNZV2wwSnlBclhHNGdJQ0FnSnlC
dWRXeHNJSFJ5ZFdVZ1ptRnNjMlVuWEc0Z0lDa3VjM0JzYVhRb0p5QW5LVHRjYmx4dUlDQmpiMjV6
ZENCamIyMXdhV3hsY2xkdmNtUnpJRDBnU21GMllWTmpjbWx3ZEVOdmJYQnBiR1Z5TGxKRlUwVlNW
a1ZFWDFkUFVrUlRJRDBnZTMwN1hHNWNiaUFnWm05eUlDaHNaWFFnYVNBOUlEQXNJR3dnUFNCeVpY
TmxjblpsWkZkdmNtUnpMbXhsYm1kMGFEc2dhU0E4SUd3N0lHa3JLeWtnZTF4dUlDQWdJR052YlhC
cGJHVnlWMjl5WkhOYmNtVnpaWEoyWldSWGIzSmtjMXRwWFYwZ1BTQjBjblZsTzF4dUlDQjlYRzU5
S0NrcE8xeHVYRzVLWVhaaFUyTnlhWEIwUTI5dGNHbHNaWEl1YVhOV1lXeHBaRXBoZG1GVFkzSnBj
SFJXWVhKcFlXSnNaVTVoYldVZ1BTQm1kVzVqZEdsdmJpaHVZVzFsS1NCN1hHNGdJSEpsZEhWeWJp
QWhTbUYyWVZOamNtbHdkRU52YlhCcGJHVnlMbEpGVTBWU1ZrVkVYMWRQVWtSVFcyNWhiV1ZkSUNZ
bUlDZ3ZYbHRoTFhwQkxWcGZKRjFiTUMwNVlTMTZRUzFhWHlSZEtpUXZLUzUwWlhOMEtHNWhiV1Vw
TzF4dWZUdGNibHh1Wm5WdVkzUnBiMjRnYzNSeWFXTjBURzl2YTNWd0tISmxjWFZwY21WVVpYSnRh
VzVoYkN3Z1kyOXRjR2xzWlhJc0lIQmhjblJ6TENCMGVYQmxLU0I3WEc0Z0lHeGxkQ0J6ZEdGamF5
QTlJR052YlhCcGJHVnlMbkJ2Y0ZOMFlXTnJLQ2tzWEc0Z0lDQWdJQ0JwSUQwZ01DeGNiaUFnSUNB
Z0lHeGxiaUE5SUhCaGNuUnpMbXhsYm1kMGFEdGNiaUFnYVdZZ0tISmxjWFZwY21WVVpYSnRhVzVo
YkNrZ2UxeHVJQ0FnSUd4bGJpMHRPMXh1SUNCOVhHNWNiaUFnWm05eUlDZzdJR2tnUENCc1pXNDdJ
R2tyS3lrZ2UxeHVJQ0FnSUhOMFlXTnJJRDBnWTI5dGNHbHNaWEl1Ym1GdFpVeHZiMnQxY0NoemRH
RmpheXdnY0dGeWRITmJhVjBzSUhSNWNHVXBPMXh1SUNCOVhHNWNiaUFnYVdZZ0tISmxjWFZwY21W
VVpYSnRhVzVoYkNrZ2UxeHVJQ0FnSUhKbGRIVnliaUJiWTI5dGNHbHNaWEl1WVd4cFlYTmhZbXhs
S0NkamIyNTBZV2x1WlhJdWMzUnlhV04wSnlrc0lDY29KeXdnYzNSaFkyc3NJQ2NzSUNjc0lHTnZi
WEJwYkdWeUxuRjFiM1JsWkZOMGNtbHVaeWh3WVhKMGMxdHBYU2tzSUNjcEoxMDdYRzRnSUgwZ1pX
eHpaU0I3WEc0Z0lDQWdjbVYwZFhKdUlITjBZV05yTzF4dUlDQjlYRzU5WEc1Y2JtVjRjRzl5ZENC
a1pXWmhkV3gwSUVwaGRtRlRZM0pwY0hSRGIyMXdhV3hsY2p0Y2JpSmRmUT09Cis7CitkZWZpbmUo
J2hhbmRsZWJhcnMnLFsnZXhwb3J0cycsICdtb2R1bGUnLCAnLi9oYW5kbGViYXJzLnJ1bnRpbWUn
LCAnLi9oYW5kbGViYXJzL2NvbXBpbGVyL2FzdCcsICcuL2hhbmRsZWJhcnMvY29tcGlsZXIvYmFz
ZScsICcuL2hhbmRsZWJhcnMvY29tcGlsZXIvY29tcGlsZXInLCAnLi9oYW5kbGViYXJzL2NvbXBp
bGVyL2phdmFzY3JpcHQtY29tcGlsZXInLCAnLi9oYW5kbGViYXJzL2NvbXBpbGVyL3Zpc2l0b3In
LCAnLi9oYW5kbGViYXJzL25vLWNvbmZsaWN0J10sIGZ1bmN0aW9uIChleHBvcnRzLCBtb2R1bGUs
IF9oYW5kbGViYXJzUnVudGltZSwgX2hhbmRsZWJhcnNDb21waWxlckFzdCwgX2hhbmRsZWJhcnND
b21waWxlckJhc2UsIF9oYW5kbGViYXJzQ29tcGlsZXJDb21waWxlciwgX2hhbmRsZWJhcnNDb21w
aWxlckphdmFzY3JpcHRDb21waWxlciwgX2hhbmRsZWJhcnNDb21waWxlclZpc2l0b3IsIF9oYW5k
bGViYXJzTm9Db25mbGljdCkgeworICAndXNlIHN0cmljdCc7CisKKyAgLy8gaXN0YW5idWwgaWdu
b3JlIG5leHQKKworICBmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1
cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9CisK
KyAgdmFyIF9ydW50aW1lID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaGFuZGxlYmFyc1J1bnRp
bWUpOworCisgIC8vIENvbXBpbGVyIGltcG9ydHMKKworICB2YXIgX0FTVCA9IF9pbnRlcm9wUmVx
dWlyZURlZmF1bHQoX2hhbmRsZWJhcnNDb21waWxlckFzdCk7CisKKyAgdmFyIF9KYXZhU2NyaXB0
Q29tcGlsZXIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9oYW5kbGViYXJzQ29tcGlsZXJKYXZh
c2NyaXB0Q29tcGlsZXIpOworCisgIHZhciBfVmlzaXRvciA9IF9pbnRlcm9wUmVxdWlyZURlZmF1
bHQoX2hhbmRsZWJhcnNDb21waWxlclZpc2l0b3IpOworCisgIHZhciBfbm9Db25mbGljdCA9IF9p
bnRlcm9wUmVxdWlyZURlZmF1bHQoX2hhbmRsZWJhcnNOb0NvbmZsaWN0KTsKKworICB2YXIgX2Ny
ZWF0ZSA9IF9ydW50aW1lWydkZWZhdWx0J10uY3JlYXRlOworICBmdW5jdGlvbiBjcmVhdGUoKSB7
CisgICAgdmFyIGhiID0gX2NyZWF0ZSgpOworCisgICAgaGIuY29tcGlsZSA9IGZ1bmN0aW9uIChp
bnB1dCwgb3B0aW9ucykgeworICAgICAgcmV0dXJuIF9oYW5kbGViYXJzQ29tcGlsZXJDb21waWxl
ci5jb21waWxlKGlucHV0LCBvcHRpb25zLCBoYik7CisgICAgfTsKKyAgICBoYi5wcmVjb21waWxl
ID0gZnVuY3Rpb24gKGlucHV0LCBvcHRpb25zKSB7CisgICAgICByZXR1cm4gX2hhbmRsZWJhcnND
b21waWxlckNvbXBpbGVyLnByZWNvbXBpbGUoaW5wdXQsIG9wdGlvbnMsIGhiKTsKKyAgICB9Owor
CisgICAgaGIuQVNUID0gX0FTVFsnZGVmYXVsdCddOworICAgIGhiLkNvbXBpbGVyID0gX2hhbmRs
ZWJhcnNDb21waWxlckNvbXBpbGVyLkNvbXBpbGVyOworICAgIGhiLkphdmFTY3JpcHRDb21waWxl
ciA9IF9KYXZhU2NyaXB0Q29tcGlsZXJbJ2RlZmF1bHQnXTsKKyAgICBoYi5QYXJzZXIgPSBfaGFu
ZGxlYmFyc0NvbXBpbGVyQmFzZS5wYXJzZXI7CisgICAgaGIucGFyc2UgPSBfaGFuZGxlYmFyc0Nv
bXBpbGVyQmFzZS5wYXJzZTsKKworICAgIHJldHVybiBoYjsKKyAgfQorCisgIHZhciBpbnN0ID0g
Y3JlYXRlKCk7CisgIGluc3QuY3JlYXRlID0gY3JlYXRlOworCisgIF9ub0NvbmZsaWN0WydkZWZh
dWx0J10oaW5zdCk7CisKKyAgaW5zdC5WaXNpdG9yID0gX1Zpc2l0b3JbJ2RlZmF1bHQnXTsKKwor
ICBpbnN0WydkZWZhdWx0J10gPSBpbnN0OworCisgIG1vZHVsZS5leHBvcnRzID0gaW5zdDsKK30p
OworLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoy
WlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYklpNHVMeTR1TDJ4cFlpOW9ZVzVrYkdWaVlYSnpM
bXB6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3T3pzN096czdPenM3T3pzN096
czdPenM3UVVGWFFTeE5RVUZKTEU5QlFVOHNSMEZCUnl4dlFrRkJVU3hOUVVGTkxFTkJRVU03UVVG
RE4wSXNWMEZCVXl4TlFVRk5MRWRCUVVjN1FVRkRhRUlzVVVGQlNTeEZRVUZGTEVkQlFVY3NUMEZC
VHl4RlFVRkZMRU5CUVVNN08wRkJSVzVDTEUxQlFVVXNRMEZCUXl4UFFVRlBMRWRCUVVjc1ZVRkJV
eXhMUVVGTExFVkJRVVVzVDBGQlR5eEZRVUZGTzBGQlEzQkRMR0ZCUVU4c05FSkJXRkVzVDBGQlR5
eERRVmRRTEV0QlFVc3NSVUZCUlN4UFFVRlBMRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU03UzBG
RGNFTXNRMEZCUXp0QlFVTkdMRTFCUVVVc1EwRkJReXhWUVVGVkxFZEJRVWNzVlVGQlV5eExRVUZM
TEVWQlFVVXNUMEZCVHl4RlFVRkZPMEZCUTNaRExHRkJRVThzTkVKQlpHbENMRlZCUVZVc1EwRmph
RUlzUzBGQlN5eEZRVUZGTEU5QlFVOHNSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJRenRMUVVOMlF5
eERRVUZET3p0QlFVVkdMRTFCUVVVc1EwRkJReXhIUVVGSExHdENRVUZOTEVOQlFVTTdRVUZEWWl4
TlFVRkZMRU5CUVVNc1VVRkJVU3dyUWtGc1Frb3NVVUZCVVN4QlFXdENUeXhEUVVGRE8wRkJRM1pD
TEUxQlFVVXNRMEZCUXl4clFrRkJhMElzYVVOQlFYRkNMRU5CUVVNN1FVRkRNME1zVFVGQlJTeERR
VUZETEUxQlFVMHNNa0pCY2tKR0xFMUJRVTBzUVVGeFFrc3NRMEZCUXp0QlFVTnVRaXhOUVVGRkxF
TkJRVU1zUzBGQlN5d3lRa0YwUW1sQ0xFdEJRVXNzUVVGelFtUXNRMEZCUXpzN1FVRkZha0lzVjBG
QlR5eEZRVUZGTEVOQlFVTTdSMEZEV0RzN1FVRkZSQ3hOUVVGSkxFbEJRVWtzUjBGQlJ5eE5RVUZO
TEVWQlFVVXNRMEZCUXp0QlFVTndRaXhOUVVGSkxFTkJRVU1zVFVGQlRTeEhRVUZITEUxQlFVMHNR
MEZCUXpzN1FVRkZja0lzZVVKQlFWY3NTVUZCU1N4RFFVRkRMRU5CUVVNN08wRkJSV3BDTEUxQlFV
a3NRMEZCUXl4UFFVRlBMSE5DUVVGVkxFTkJRVU03TzBGQlJYWkNMRTFCUVVrc1EwRkJReXhUUVVG
VExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTTdPMjFDUVVWU0xFbEJRVWtpTENKbWFXeGxJam9p
YUdGdVpHeGxZbUZ5Y3k1cWN5SXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQnlk
VzUwYVcxbElHWnliMjBnSnk0dmFHRnVaR3hsWW1GeWN5NXlkVzUwYVcxbEp6dGNibHh1THk4Z1Ey
OXRjR2xzWlhJZ2FXMXdiM0owYzF4dWFXMXdiM0owSUVGVFZDQm1jbTl0SUNjdUwyaGhibVJzWldK
aGNuTXZZMjl0Y0dsc1pYSXZZWE4wSnp0Y2JtbHRjRzl5ZENCN0lIQmhjbk5sY2lCaGN5QlFZWEp6
WlhJc0lIQmhjbk5sSUgwZ1puSnZiU0FuTGk5b1lXNWtiR1ZpWVhKekwyTnZiWEJwYkdWeUwySmhj
MlVuTzF4dWFXMXdiM0owSUhzZ1EyOXRjR2xzWlhJc0lHTnZiWEJwYkdVc0lIQnlaV052YlhCcGJH
VWdmU0JtY205dElDY3VMMmhoYm1Sc1pXSmhjbk12WTI5dGNHbHNaWEl2WTI5dGNHbHNaWEluTzF4
dWFXMXdiM0owSUVwaGRtRlRZM0pwY0hSRGIyMXdhV3hsY2lCbWNtOXRJQ2N1TDJoaGJtUnNaV0po
Y25NdlkyOXRjR2xzWlhJdmFtRjJZWE5qY21sd2RDMWpiMjF3YVd4bGNpYzdYRzVwYlhCdmNuUWdW
bWx6YVhSdmNpQm1jbTl0SUNjdUwyaGhibVJzWldKaGNuTXZZMjl0Y0dsc1pYSXZkbWx6YVhSdmNp
YzdYRzVjYm1sdGNHOXlkQ0J1YjBOdmJtWnNhV04wSUdaeWIyMGdKeTR2YUdGdVpHeGxZbUZ5Y3k5
dWJ5MWpiMjVtYkdsamRDYzdYRzVjYm14bGRDQmZZM0psWVhSbElEMGdjblZ1ZEdsdFpTNWpjbVZo
ZEdVN1hHNW1kVzVqZEdsdmJpQmpjbVZoZEdVb0tTQjdYRzRnSUd4bGRDQm9ZaUE5SUY5amNtVmhk
R1VvS1R0Y2JseHVJQ0JvWWk1amIyMXdhV3hsSUQwZ1puVnVZM1JwYjI0b2FXNXdkWFFzSUc5d2RH
bHZibk1wSUh0Y2JpQWdJQ0J5WlhSMWNtNGdZMjl0Y0dsc1pTaHBibkIxZEN3Z2IzQjBhVzl1Y3l3
Z2FHSXBPMXh1SUNCOU8xeHVJQ0JvWWk1d2NtVmpiMjF3YVd4bElEMGdablZ1WTNScGIyNG9hVzV3
ZFhRc0lHOXdkR2x2Ym5NcElIdGNiaUFnSUNCeVpYUjFjbTRnY0hKbFkyOXRjR2xzWlNocGJuQjFk
Q3dnYjNCMGFXOXVjeXdnYUdJcE8xeHVJQ0I5TzF4dVhHNGdJR2hpTGtGVFZDQTlJRUZUVkR0Y2Jp
QWdhR0l1UTI5dGNHbHNaWElnUFNCRGIyMXdhV3hsY2p0Y2JpQWdhR0l1U21GMllWTmpjbWx3ZEVO
dmJYQnBiR1Z5SUQwZ1NtRjJZVk5qY21sd2RFTnZiWEJwYkdWeU8xeHVJQ0JvWWk1UVlYSnpaWEln
UFNCUVlYSnpaWEk3WEc0Z0lHaGlMbkJoY25ObElEMGdjR0Z5YzJVN1hHNWNiaUFnY21WMGRYSnVJ
R2hpTzF4dWZWeHVYRzVzWlhRZ2FXNXpkQ0E5SUdOeVpXRjBaU2dwTzF4dWFXNXpkQzVqY21WaGRH
VWdQU0JqY21WaGRHVTdYRzVjYm01dlEyOXVabXhwWTNRb2FXNXpkQ2s3WEc1Y2JtbHVjM1F1Vm1s
emFYUnZjaUE5SUZacGMybDBiM0k3WEc1Y2JtbHVjM1JiSjJSbFptRjFiSFFuWFNBOUlHbHVjM1E3
WEc1Y2JtVjRjRzl5ZENCa1pXWmhkV3gwSUdsdWMzUTdYRzRpWFgwPQorOwpkaWZmIC0tZ2l0IGEv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvaGFuZGxlYmFy
cy5hbWQubWluLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJz
L2Rpc3QvaGFuZGxlYmFycy5hbWQubWluLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVkNDgzMDBmZDAwYTIyNGRi
ZGE1NTU1MGYxOGVjZjc1M2RjNjE3OTYKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9q
cXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9oYW5kbGViYXJzLmFtZC5taW4uanMK
QEAgLTAsMCArMSwyOSBAQAorLyoqIQorCisgQGxpY2Vuc2UKKyBoYW5kbGViYXJzIHY0LjAuNgor
CitDb3B5cmlnaHQgKEMpIDIwMTEtMjAxNiBieSBZZWh1ZGEgS2F0egorCitQZXJtaXNzaW9uIGlz
IGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcg
YSBjb3B5CitvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmls
ZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAoraW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVz
dHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwordG8gdXNl
LCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBh
bmQvb3Igc2VsbAorY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25z
IHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCitmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8g
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorCitUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBh
bmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorYWxsIGNvcGll
cyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisKK1RIRSBTT0ZUV0FS
RSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBS
RVNTIE9SCitJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKK0ZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorQVVUSE9SUyBPUiBD
T1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhF
UgorTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBP
VEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKK09VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhF
IFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4KK1RIRSBTT0ZUV0FSRS4K
KworKi8KK2RlZmluZSgiaGFuZGxlYmFycy91dGlscyIsWyJleHBvcnRzIl0sZnVuY3Rpb24oYSl7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGIoYSl7cmV0dXJuIGpbYV19ZnVuY3Rpb24gYyhhKXtmb3Io
dmFyIGI9MTtiPGFyZ3VtZW50cy5sZW5ndGg7YisrKWZvcih2YXIgYyBpbiBhcmd1bWVudHNbYl0p
T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGFyZ3VtZW50c1tiXSxjKSYmKGFb
Y109YXJndW1lbnRzW2JdW2NdKTtyZXR1cm4gYX1mdW5jdGlvbiBkKGEsYil7Zm9yKHZhciBjPTAs
ZD1hLmxlbmd0aDtjPGQ7YysrKWlmKGFbY109PT1iKXJldHVybiBjO3JldHVybi0xfWZ1bmN0aW9u
IGUoYSl7aWYoInN0cmluZyIhPXR5cGVvZiBhKXtpZihhJiZhLnRvSFRNTClyZXR1cm4gYS50b0hU
TUwoKTtpZihudWxsPT1hKXJldHVybiIiO2lmKCFhKXJldHVybiBhKyIiO2E9IiIrYX1yZXR1cm4g
bC50ZXN0KGEpP2EucmVwbGFjZShrLGIpOmF9ZnVuY3Rpb24gZihhKXtyZXR1cm4hYSYmMCE9PWF8
fCEoIW8oYSl8fDAhPT1hLmxlbmd0aCl9ZnVuY3Rpb24gZyhhKXt2YXIgYj1jKHt9LGEpO3JldHVy
biBiLl9wYXJlbnQ9YSxifWZ1bmN0aW9uIGgoYSxiKXtyZXR1cm4gYS5wYXRoPWIsYX1mdW5jdGlv
biBpKGEsYil7cmV0dXJuKGE/YSsiLiI6IiIpK2J9YS5fX2VzTW9kdWxlPSEwLGEuZXh0ZW5kPWMs
YS5pbmRleE9mPWQsYS5lc2NhcGVFeHByZXNzaW9uPWUsYS5pc0VtcHR5PWYsYS5jcmVhdGVGcmFt
ZT1nLGEuYmxvY2tQYXJhbXM9aCxhLmFwcGVuZENvbnRleHRQYXRoPWk7dmFyIGo9eyImIjoiJmFt
cDsiLCI8IjoiJmx0OyIsIj4iOiImZ3Q7IiwnIic6IiZxdW90OyIsIiciOiImI3gyNzsiLCJgIjoi
JiN4NjA7IiwiPSI6IiYjeDNEOyJ9LGs9L1smPD4iJ2A9XS9nLGw9L1smPD4iJ2A9XS8sbT1PYmpl
Y3QucHJvdG90eXBlLnRvU3RyaW5nO2EudG9TdHJpbmc9bTt2YXIgbj1mdW5jdGlvbihhKXtyZXR1
cm4iZnVuY3Rpb24iPT10eXBlb2YgYX07bigveC8pJiYoYS5pc0Z1bmN0aW9uPW49ZnVuY3Rpb24o
YSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGEmJiJbb2JqZWN0IEZ1bmN0aW9uXSI9PT1tLmNh
bGwoYSl9KSxhLmlzRnVuY3Rpb249bjt2YXIgbz1BcnJheS5pc0FycmF5fHxmdW5jdGlvbihhKXty
ZXR1cm4hKCFhfHwib2JqZWN0IiE9dHlwZW9mIGEpJiYiW29iamVjdCBBcnJheV0iPT09bS5jYWxs
KGEpfTthLmlzQXJyYXk9b30pLGRlZmluZSgiaGFuZGxlYmFycy9leGNlcHRpb24iLFsiZXhwb3J0
cyIsIm1vZHVsZSJdLGZ1bmN0aW9uKGEsYil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGMoYSxiKXt2
YXIgZT1iJiZiLmxvYyxmPXZvaWQgMCxnPXZvaWQgMDtlJiYoZj1lLnN0YXJ0LmxpbmUsZz1lLnN0
YXJ0LmNvbHVtbixhKz0iIC0gIitmKyI6IitnKTtmb3IodmFyIGg9RXJyb3IucHJvdG90eXBlLmNv
bnN0cnVjdG9yLmNhbGwodGhpcyxhKSxpPTA7aTxkLmxlbmd0aDtpKyspdGhpc1tkW2ldXT1oW2Rb
aV1dO0Vycm9yLmNhcHR1cmVTdGFja1RyYWNlJiZFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlz
LGMpO3RyeXtlJiYodGhpcy5saW5lTnVtYmVyPWYsT2JqZWN0LmRlZmluZVByb3BlcnR5P09iamVj
dC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJjb2x1bW4iLHt2YWx1ZTpnfSk6dGhpcy5jb2x1bW49Zyl9
Y2F0Y2goail7fX12YXIgZD1bImRlc2NyaXB0aW9uIiwiZmlsZU5hbWUiLCJsaW5lTnVtYmVyIiwi
bWVzc2FnZSIsIm5hbWUiLCJudW1iZXIiLCJzdGFjayJdO2MucHJvdG90eXBlPW5ldyBFcnJvcixi
LmV4cG9ydHM9Y30pLGRlZmluZSgiaGFuZGxlYmFycy9oZWxwZXJzL2Jsb2NrLWhlbHBlci1taXNz
aW5nIixbImV4cG9ydHMiLCJtb2R1bGUiLCIuLi91dGlscyJdLGZ1bmN0aW9uKGEsYixjKXsidXNl
IHN0cmljdCI7Yi5leHBvcnRzPWZ1bmN0aW9uKGEpe2EucmVnaXN0ZXJIZWxwZXIoImJsb2NrSGVs
cGVyTWlzc2luZyIsZnVuY3Rpb24oYixkKXt2YXIgZT1kLmludmVyc2UsZj1kLmZuO2lmKGI9PT0h
MClyZXR1cm4gZih0aGlzKTtpZihiPT09ITF8fG51bGw9PWIpcmV0dXJuIGUodGhpcyk7aWYoYy5p
c0FycmF5KGIpKXJldHVybiBiLmxlbmd0aD4wPyhkLmlkcyYmKGQuaWRzPVtkLm5hbWVdKSxhLmhl
bHBlcnMuZWFjaChiLGQpKTplKHRoaXMpO2lmKGQuZGF0YSYmZC5pZHMpe3ZhciBnPWMuY3JlYXRl
RnJhbWUoZC5kYXRhKTtnLmNvbnRleHRQYXRoPWMuYXBwZW5kQ29udGV4dFBhdGgoZC5kYXRhLmNv
bnRleHRQYXRoLGQubmFtZSksZD17ZGF0YTpnfX1yZXR1cm4gZihiLGQpfSl9fSksZGVmaW5lKCJo
YW5kbGViYXJzL2hlbHBlcnMvZWFjaCIsWyJleHBvcnRzIiwibW9kdWxlIiwiLi4vdXRpbHMiLCIu
Li9leGNlcHRpb24iXSxmdW5jdGlvbihhLGIsYyxkKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZShh
KXtyZXR1cm4gYSYmYS5fX2VzTW9kdWxlP2E6eyJkZWZhdWx0IjphfX12YXIgZj1lKGQpO2IuZXhw
b3J0cz1mdW5jdGlvbihhKXthLnJlZ2lzdGVySGVscGVyKCJlYWNoIixmdW5jdGlvbihhLGIpe2Z1
bmN0aW9uIGQoYixkLGYpe2omJihqLmtleT1iLGouaW5kZXg9ZCxqLmZpcnN0PTA9PT1kLGoubGFz
dD0hIWYsayYmKGouY29udGV4dFBhdGg9aytiKSksaSs9ZShhW2JdLHtkYXRhOmosYmxvY2tQYXJh
bXM6Yy5ibG9ja1BhcmFtcyhbYVtiXSxiXSxbaytiLG51bGxdKX0pfWlmKCFiKXRocm93IG5ldyBm
WyJkZWZhdWx0Il0oIk11c3QgcGFzcyBpdGVyYXRvciB0byAjZWFjaCIpO3ZhciBlPWIuZm4sZz1i
LmludmVyc2UsaD0wLGk9IiIsaj12b2lkIDAsaz12b2lkIDA7aWYoYi5kYXRhJiZiLmlkcyYmKGs9
Yy5hcHBlbmRDb250ZXh0UGF0aChiLmRhdGEuY29udGV4dFBhdGgsYi5pZHNbMF0pKyIuIiksYy5p
c0Z1bmN0aW9uKGEpJiYoYT1hLmNhbGwodGhpcykpLGIuZGF0YSYmKGo9Yy5jcmVhdGVGcmFtZShi
LmRhdGEpKSxhJiYib2JqZWN0Ij09dHlwZW9mIGEpaWYoYy5pc0FycmF5KGEpKWZvcih2YXIgbD1h
Lmxlbmd0aDtoPGw7aCsrKWggaW4gYSYmZChoLGgsaD09PWEubGVuZ3RoLTEpO2Vsc2V7dmFyIG09
dm9pZCAwO2Zvcih2YXIgbiBpbiBhKWEuaGFzT3duUHJvcGVydHkobikmJih2b2lkIDAhPT1tJiZk
KG0saC0xKSxtPW4saCsrKTt2b2lkIDAhPT1tJiZkKG0saC0xLCEwKX1yZXR1cm4gMD09PWgmJihp
PWcodGhpcykpLGl9KX19KSxkZWZpbmUoImhhbmRsZWJhcnMvaGVscGVycy9oZWxwZXItbWlzc2lu
ZyIsWyJleHBvcnRzIiwibW9kdWxlIiwiLi4vZXhjZXB0aW9uIl0sZnVuY3Rpb24oYSxiLGMpeyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiBkKGEpe3JldHVybiBhJiZhLl9fZXNNb2R1bGU/YTp7ImRlZmF1
bHQiOmF9fXZhciBlPWQoYyk7Yi5leHBvcnRzPWZ1bmN0aW9uKGEpe2EucmVnaXN0ZXJIZWxwZXIo
ImhlbHBlck1pc3NpbmciLGZ1bmN0aW9uKCl7aWYoMSE9PWFyZ3VtZW50cy5sZW5ndGgpdGhyb3cg
bmV3IGVbImRlZmF1bHQiXSgnTWlzc2luZyBoZWxwZXI6ICInK2FyZ3VtZW50c1thcmd1bWVudHMu
bGVuZ3RoLTFdLm5hbWUrJyInKX0pfX0pLGRlZmluZSgiaGFuZGxlYmFycy9oZWxwZXJzL2lmIixb
ImV4cG9ydHMiLCJtb2R1bGUiLCIuLi91dGlscyJdLGZ1bmN0aW9uKGEsYixjKXsidXNlIHN0cmlj
dCI7Yi5leHBvcnRzPWZ1bmN0aW9uKGEpe2EucmVnaXN0ZXJIZWxwZXIoImlmIixmdW5jdGlvbihh
LGIpe3JldHVybiBjLmlzRnVuY3Rpb24oYSkmJihhPWEuY2FsbCh0aGlzKSksIWIuaGFzaC5pbmNs
dWRlWmVybyYmIWF8fGMuaXNFbXB0eShhKT9iLmludmVyc2UodGhpcyk6Yi5mbih0aGlzKX0pLGEu
cmVnaXN0ZXJIZWxwZXIoInVubGVzcyIsZnVuY3Rpb24oYixjKXtyZXR1cm4gYS5oZWxwZXJzWyJp
ZiJdLmNhbGwodGhpcyxiLHtmbjpjLmludmVyc2UsaW52ZXJzZTpjLmZuLGhhc2g6Yy5oYXNofSl9
KX19KSxkZWZpbmUoImhhbmRsZWJhcnMvaGVscGVycy9sb2ciLFsiZXhwb3J0cyIsIm1vZHVsZSJd
LGZ1bmN0aW9uKGEsYil7InVzZSBzdHJpY3QiO2IuZXhwb3J0cz1mdW5jdGlvbihhKXthLnJlZ2lz
dGVySGVscGVyKCJsb2ciLGZ1bmN0aW9uKCl7Zm9yKHZhciBiPVt2b2lkIDBdLGM9YXJndW1lbnRz
W2FyZ3VtZW50cy5sZW5ndGgtMV0sZD0wO2Q8YXJndW1lbnRzLmxlbmd0aC0xO2QrKyliLnB1c2go
YXJndW1lbnRzW2RdKTt2YXIgZT0xO251bGwhPWMuaGFzaC5sZXZlbD9lPWMuaGFzaC5sZXZlbDpj
LmRhdGEmJm51bGwhPWMuZGF0YS5sZXZlbCYmKGU9Yy5kYXRhLmxldmVsKSxiWzBdPWUsYS5sb2cu
YXBwbHkoYSxiKX0pfX0pLGRlZmluZSgiaGFuZGxlYmFycy9oZWxwZXJzL2xvb2t1cCIsWyJleHBv
cnRzIiwibW9kdWxlIl0sZnVuY3Rpb24oYSxiKXsidXNlIHN0cmljdCI7Yi5leHBvcnRzPWZ1bmN0
aW9uKGEpe2EucmVnaXN0ZXJIZWxwZXIoImxvb2t1cCIsZnVuY3Rpb24oYSxiKXtyZXR1cm4gYSYm
YVtiXX0pfX0pLGRlZmluZSgiaGFuZGxlYmFycy9oZWxwZXJzL3dpdGgiLFsiZXhwb3J0cyIsIm1v
ZHVsZSIsIi4uL3V0aWxzIl0sZnVuY3Rpb24oYSxiLGMpeyJ1c2Ugc3RyaWN0IjtiLmV4cG9ydHM9
ZnVuY3Rpb24oYSl7YS5yZWdpc3RlckhlbHBlcigid2l0aCIsZnVuY3Rpb24oYSxiKXtjLmlzRnVu
Y3Rpb24oYSkmJihhPWEuY2FsbCh0aGlzKSk7dmFyIGQ9Yi5mbjtpZihjLmlzRW1wdHkoYSkpcmV0
dXJuIGIuaW52ZXJzZSh0aGlzKTt2YXIgZT1iLmRhdGE7cmV0dXJuIGIuZGF0YSYmYi5pZHMmJihl
PWMuY3JlYXRlRnJhbWUoYi5kYXRhKSxlLmNvbnRleHRQYXRoPWMuYXBwZW5kQ29udGV4dFBhdGgo
Yi5kYXRhLmNvbnRleHRQYXRoLGIuaWRzWzBdKSksZChhLHtkYXRhOmUsYmxvY2tQYXJhbXM6Yy5i
bG9ja1BhcmFtcyhbYV0sW2UmJmUuY29udGV4dFBhdGhdKX0pfSl9fSksZGVmaW5lKCJoYW5kbGVi
YXJzL2hlbHBlcnMiLFsiZXhwb3J0cyIsIi4vaGVscGVycy9ibG9jay1oZWxwZXItbWlzc2luZyIs
Ii4vaGVscGVycy9lYWNoIiwiLi9oZWxwZXJzL2hlbHBlci1taXNzaW5nIiwiLi9oZWxwZXJzL2lm
IiwiLi9oZWxwZXJzL2xvZyIsIi4vaGVscGVycy9sb29rdXAiLCIuL2hlbHBlcnMvd2l0aCJdLGZ1
bmN0aW9uKGEsYixjLGQsZSxmLGcsaCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoYSl7cmV0dXJu
IGEmJmEuX19lc01vZHVsZT9hOnsiZGVmYXVsdCI6YX19ZnVuY3Rpb24gaihhKXtrWyJkZWZhdWx0
Il0oYSksbFsiZGVmYXVsdCJdKGEpLG1bImRlZmF1bHQiXShhKSxuWyJkZWZhdWx0Il0oYSksb1si
ZGVmYXVsdCJdKGEpLHBbImRlZmF1bHQiXShhKSxxWyJkZWZhdWx0Il0oYSl9YS5fX2VzTW9kdWxl
PSEwLGEucmVnaXN0ZXJEZWZhdWx0SGVscGVycz1qO3ZhciBrPWkoYiksbD1pKGMpLG09aShkKSxu
PWkoZSksbz1pKGYpLHA9aShnKSxxPWkoaCl9KSxkZWZpbmUoImhhbmRsZWJhcnMvZGVjb3JhdG9y
cy9pbmxpbmUiLFsiZXhwb3J0cyIsIm1vZHVsZSIsIi4uL3V0aWxzIl0sZnVuY3Rpb24oYSxiLGMp
eyJ1c2Ugc3RyaWN0IjtiLmV4cG9ydHM9ZnVuY3Rpb24oYSl7YS5yZWdpc3RlckRlY29yYXRvcigi
aW5saW5lIixmdW5jdGlvbihhLGIsZCxlKXt2YXIgZj1hO3JldHVybiBiLnBhcnRpYWxzfHwoYi5w
YXJ0aWFscz17fSxmPWZ1bmN0aW9uKGUsZil7dmFyIGc9ZC5wYXJ0aWFscztkLnBhcnRpYWxzPWMu
ZXh0ZW5kKHt9LGcsYi5wYXJ0aWFscyk7dmFyIGg9YShlLGYpO3JldHVybiBkLnBhcnRpYWxzPWcs
aH0pLGIucGFydGlhbHNbZS5hcmdzWzBdXT1lLmZuLGZ9KX19KSxkZWZpbmUoImhhbmRsZWJhcnMv
ZGVjb3JhdG9ycyIsWyJleHBvcnRzIiwiLi9kZWNvcmF0b3JzL2lubGluZSJdLGZ1bmN0aW9uKGEs
Yil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGMoYSl7cmV0dXJuIGEmJmEuX19lc01vZHVsZT9hOnsi
ZGVmYXVsdCI6YX19ZnVuY3Rpb24gZChhKXtlWyJkZWZhdWx0Il0oYSl9YS5fX2VzTW9kdWxlPSEw
LGEucmVnaXN0ZXJEZWZhdWx0RGVjb3JhdG9ycz1kO3ZhciBlPWMoYil9KSxkZWZpbmUoImhhbmRs
ZWJhcnMvbG9nZ2VyIixbImV4cG9ydHMiLCJtb2R1bGUiLCIuL3V0aWxzIl0sZnVuY3Rpb24oYSxi
LGMpeyJ1c2Ugc3RyaWN0Ijt2YXIgZD17bWV0aG9kTWFwOlsiZGVidWciLCJpbmZvIiwid2FybiIs
ImVycm9yIl0sbGV2ZWw6ImluZm8iLGxvb2t1cExldmVsOmZ1bmN0aW9uKGEpe2lmKCJzdHJpbmci
PT10eXBlb2YgYSl7dmFyIGI9Yy5pbmRleE9mKGQubWV0aG9kTWFwLGEudG9Mb3dlckNhc2UoKSk7
YT1iPj0wP2I6cGFyc2VJbnQoYSwxMCl9cmV0dXJuIGF9LGxvZzpmdW5jdGlvbihhKXtpZihhPWQu
bG9va3VwTGV2ZWwoYSksInVuZGVmaW5lZCIhPXR5cGVvZiBjb25zb2xlJiZkLmxvb2t1cExldmVs
KGQubGV2ZWwpPD1hKXt2YXIgYj1kLm1ldGhvZE1hcFthXTtjb25zb2xlW2JdfHwoYj0ibG9nIik7
Zm9yKHZhciBjPWFyZ3VtZW50cy5sZW5ndGgsZT1BcnJheShjPjE/Yy0xOjApLGY9MTtmPGM7Zisr
KWVbZi0xXT1hcmd1bWVudHNbZl07Y29uc29sZVtiXS5hcHBseShjb25zb2xlLGUpfX19O2IuZXhw
b3J0cz1kfSksZGVmaW5lKCJoYW5kbGViYXJzL2Jhc2UiLFsiZXhwb3J0cyIsIi4vdXRpbHMiLCIu
L2V4Y2VwdGlvbiIsIi4vaGVscGVycyIsIi4vZGVjb3JhdG9ycyIsIi4vbG9nZ2VyIl0sZnVuY3Rp
b24oYSxiLGMsZCxlLGYpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBnKGEpe3JldHVybiBhJiZhLl9f
ZXNNb2R1bGU/YTp7ImRlZmF1bHQiOmF9fWZ1bmN0aW9uIGgoYSxiLGMpe3RoaXMuaGVscGVycz1h
fHx7fSx0aGlzLnBhcnRpYWxzPWJ8fHt9LHRoaXMuZGVjb3JhdG9ycz1jfHx7fSxkLnJlZ2lzdGVy
RGVmYXVsdEhlbHBlcnModGhpcyksZS5yZWdpc3RlckRlZmF1bHREZWNvcmF0b3JzKHRoaXMpfWEu
X19lc01vZHVsZT0hMCxhLkhhbmRsZWJhcnNFbnZpcm9ubWVudD1oO3ZhciBpPWcoYyksaj1nKGYp
LGs9IjQuMC42IjthLlZFUlNJT049azt2YXIgbD03O2EuQ09NUElMRVJfUkVWSVNJT049bDt2YXIg
bT17MToiPD0gMS4wLnJjLjIiLDI6Ij09IDEuMC4wLXJjLjMiLDM6Ij09IDEuMC4wLXJjLjQiLDQ6
Ij09IDEueC54Iiw1OiI9PSAyLjAuMC1hbHBoYS54Iiw2OiI+PSAyLjAuMC1iZXRhLjEiLDc6Ij49
IDQuMC4wIn07YS5SRVZJU0lPTl9DSEFOR0VTPW07dmFyIG49IltvYmplY3QgT2JqZWN0XSI7aC5w
cm90b3R5cGU9e2NvbnN0cnVjdG9yOmgsbG9nZ2VyOmpbImRlZmF1bHQiXSxsb2c6alsiZGVmYXVs
dCJdLmxvZyxyZWdpc3RlckhlbHBlcjpmdW5jdGlvbihhLGMpe2lmKGIudG9TdHJpbmcuY2FsbChh
KT09PW4pe2lmKGMpdGhyb3cgbmV3IGlbImRlZmF1bHQiXSgiQXJnIG5vdCBzdXBwb3J0ZWQgd2l0
aCBtdWx0aXBsZSBoZWxwZXJzIik7Yi5leHRlbmQodGhpcy5oZWxwZXJzLGEpfWVsc2UgdGhpcy5o
ZWxwZXJzW2FdPWN9LHVucmVnaXN0ZXJIZWxwZXI6ZnVuY3Rpb24oYSl7ZGVsZXRlIHRoaXMuaGVs
cGVyc1thXX0scmVnaXN0ZXJQYXJ0aWFsOmZ1bmN0aW9uKGEsYyl7aWYoYi50b1N0cmluZy5jYWxs
KGEpPT09biliLmV4dGVuZCh0aGlzLnBhcnRpYWxzLGEpO2Vsc2V7aWYoInVuZGVmaW5lZCI9PXR5
cGVvZiBjKXRocm93IG5ldyBpWyJkZWZhdWx0Il0oJ0F0dGVtcHRpbmcgdG8gcmVnaXN0ZXIgYSBw
YXJ0aWFsIGNhbGxlZCAiJythKyciIGFzIHVuZGVmaW5lZCcpO3RoaXMucGFydGlhbHNbYV09Y319
LHVucmVnaXN0ZXJQYXJ0aWFsOmZ1bmN0aW9uKGEpe2RlbGV0ZSB0aGlzLnBhcnRpYWxzW2FdfSxy
ZWdpc3RlckRlY29yYXRvcjpmdW5jdGlvbihhLGMpe2lmKGIudG9TdHJpbmcuY2FsbChhKT09PW4p
e2lmKGMpdGhyb3cgbmV3IGlbImRlZmF1bHQiXSgiQXJnIG5vdCBzdXBwb3J0ZWQgd2l0aCBtdWx0
aXBsZSBkZWNvcmF0b3JzIik7Yi5leHRlbmQodGhpcy5kZWNvcmF0b3JzLGEpfWVsc2UgdGhpcy5k
ZWNvcmF0b3JzW2FdPWN9LHVucmVnaXN0ZXJEZWNvcmF0b3I6ZnVuY3Rpb24oYSl7ZGVsZXRlIHRo
aXMuZGVjb3JhdG9yc1thXX19O3ZhciBvPWpbImRlZmF1bHQiXS5sb2c7YS5sb2c9byxhLmNyZWF0
ZUZyYW1lPWIuY3JlYXRlRnJhbWUsYS5sb2dnZXI9alsiZGVmYXVsdCJdfSksZGVmaW5lKCJoYW5k
bGViYXJzL3NhZmUtc3RyaW5nIixbImV4cG9ydHMiLCJtb2R1bGUiXSxmdW5jdGlvbihhLGIpeyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiBjKGEpe3RoaXMuc3RyaW5nPWF9Yy5wcm90b3R5cGUudG9TdHJp
bmc9Yy5wcm90b3R5cGUudG9IVE1MPWZ1bmN0aW9uKCl7cmV0dXJuIiIrdGhpcy5zdHJpbmd9LGIu
ZXhwb3J0cz1jfSksZGVmaW5lKCJoYW5kbGViYXJzL3J1bnRpbWUiLFsiZXhwb3J0cyIsIi4vdXRp
bHMiLCIuL2V4Y2VwdGlvbiIsIi4vYmFzZSJdLGZ1bmN0aW9uKGEsYixjLGQpeyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiBlKGEpe3JldHVybiBhJiZhLl9fZXNNb2R1bGU/YTp7ImRlZmF1bHQiOmF9fWZ1
bmN0aW9uIGYoYSl7dmFyIGI9YSYmYVswXXx8MSxjPWQuQ09NUElMRVJfUkVWSVNJT047aWYoYiE9
PWMpe2lmKGI8Yyl7dmFyIGU9ZC5SRVZJU0lPTl9DSEFOR0VTW2NdLGY9ZC5SRVZJU0lPTl9DSEFO
R0VTW2JdO3Rocm93IG5ldyBuWyJkZWZhdWx0Il0oIlRlbXBsYXRlIHdhcyBwcmVjb21waWxlZCB3
aXRoIGFuIG9sZGVyIHZlcnNpb24gb2YgSGFuZGxlYmFycyB0aGFuIHRoZSBjdXJyZW50IHJ1bnRp
bWUuIFBsZWFzZSB1cGRhdGUgeW91ciBwcmVjb21waWxlciB0byBhIG5ld2VyIHZlcnNpb24gKCIr
ZSsiKSBvciBkb3duZ3JhZGUgeW91ciBydW50aW1lIHRvIGFuIG9sZGVyIHZlcnNpb24gKCIrZisi
KS4iKX10aHJvdyBuZXcgblsiZGVmYXVsdCJdKCJUZW1wbGF0ZSB3YXMgcHJlY29tcGlsZWQgd2l0
aCBhIG5ld2VyIHZlcnNpb24gb2YgSGFuZGxlYmFycyB0aGFuIHRoZSBjdXJyZW50IHJ1bnRpbWUu
IFBsZWFzZSB1cGRhdGUgeW91ciBydW50aW1lIHRvIGEgbmV3ZXIgdmVyc2lvbiAoIithWzFdKyIp
LiIpfX1mdW5jdGlvbiBnKGEsYyl7ZnVuY3Rpb24gZChkLGUsZil7Zi5oYXNoJiYoZT1iLmV4dGVu
ZCh7fSxlLGYuaGFzaCksZi5pZHMmJihmLmlkc1swXT0hMCkpLGQ9Yy5WTS5yZXNvbHZlUGFydGlh
bC5jYWxsKHRoaXMsZCxlLGYpO3ZhciBnPWMuVk0uaW52b2tlUGFydGlhbC5jYWxsKHRoaXMsZCxl
LGYpO2lmKG51bGw9PWcmJmMuY29tcGlsZSYmKGYucGFydGlhbHNbZi5uYW1lXT1jLmNvbXBpbGUo
ZCxhLmNvbXBpbGVyT3B0aW9ucyxjKSxnPWYucGFydGlhbHNbZi5uYW1lXShlLGYpKSxudWxsIT1n
KXtpZihmLmluZGVudCl7Zm9yKHZhciBoPWcuc3BsaXQoIlxuIiksaT0wLGo9aC5sZW5ndGg7aTxq
JiYoaFtpXXx8aSsxIT09aik7aSsrKWhbaV09Zi5pbmRlbnQraFtpXTtnPWguam9pbigiXG4iKX1y
ZXR1cm4gZ310aHJvdyBuZXcgblsiZGVmYXVsdCJdKCJUaGUgcGFydGlhbCAiK2YubmFtZSsiIGNv
dWxkIG5vdCBiZSBjb21waWxlZCB3aGVuIHJ1bm5pbmcgaW4gcnVudGltZS1vbmx5IG1vZGUiKX1m
dW5jdGlvbiBlKGIpe2Z1bmN0aW9uIGMoYil7cmV0dXJuIiIrYS5tYWluKGYsYixmLmhlbHBlcnMs
Zi5wYXJ0aWFscyxnLGksaCl9dmFyIGQ9YXJndW1lbnRzLmxlbmd0aDw9MXx8dm9pZCAwPT09YXJn
dW1lbnRzWzFdP3t9OmFyZ3VtZW50c1sxXSxnPWQuZGF0YTtlLl9zZXR1cChkKSwhZC5wYXJ0aWFs
JiZhLnVzZURhdGEmJihnPWwoYixnKSk7dmFyIGg9dm9pZCAwLGk9YS51c2VCbG9ja1BhcmFtcz9b
XTp2b2lkIDA7cmV0dXJuIGEudXNlRGVwdGhzJiYoaD1kLmRlcHRocz9iIT1kLmRlcHRoc1swXT9b
Yl0uY29uY2F0KGQuZGVwdGhzKTpkLmRlcHRoczpbYl0pLChjPW0oYS5tYWluLGMsZixkLmRlcHRo
c3x8W10sZyxpKSkoYixkKX1pZighYyl0aHJvdyBuZXcgblsiZGVmYXVsdCJdKCJObyBlbnZpcm9u
bWVudCBwYXNzZWQgdG8gdGVtcGxhdGUiKTtpZighYXx8IWEubWFpbil0aHJvdyBuZXcgblsiZGVm
YXVsdCJdKCJVbmtub3duIHRlbXBsYXRlIG9iamVjdDogIit0eXBlb2YgYSk7YS5tYWluLmRlY29y
YXRvcj1hLm1haW5fZCxjLlZNLmNoZWNrUmV2aXNpb24oYS5jb21waWxlcik7dmFyIGY9e3N0cmlj
dDpmdW5jdGlvbihhLGIpe2lmKCEoYiBpbiBhKSl0aHJvdyBuZXcgblsiZGVmYXVsdCJdKCciJyti
KyciIG5vdCBkZWZpbmVkIGluICcrYSk7cmV0dXJuIGFbYl19LGxvb2t1cDpmdW5jdGlvbihhLGIp
e2Zvcih2YXIgYz1hLmxlbmd0aCxkPTA7ZDxjO2QrKylpZihhW2RdJiZudWxsIT1hW2RdW2JdKXJl
dHVybiBhW2RdW2JdfSxsYW1iZGE6ZnVuY3Rpb24oYSxiKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBl
b2YgYT9hLmNhbGwoYik6YX0sZXNjYXBlRXhwcmVzc2lvbjpiLmVzY2FwZUV4cHJlc3Npb24saW52
b2tlUGFydGlhbDpkLGZuOmZ1bmN0aW9uKGIpe3ZhciBjPWFbYl07cmV0dXJuIGMuZGVjb3JhdG9y
PWFbYisiX2QiXSxjfSxwcm9ncmFtczpbXSxwcm9ncmFtOmZ1bmN0aW9uKGEsYixjLGQsZSl7dmFy
IGY9dGhpcy5wcm9ncmFtc1thXSxnPXRoaXMuZm4oYSk7cmV0dXJuIGJ8fGV8fGR8fGM/Zj1oKHRo
aXMsYSxnLGIsYyxkLGUpOmZ8fChmPXRoaXMucHJvZ3JhbXNbYV09aCh0aGlzLGEsZykpLGZ9LGRh
dGE6ZnVuY3Rpb24oYSxiKXtmb3IoO2EmJmItLTspYT1hLl9wYXJlbnQ7cmV0dXJuIGF9LG1lcmdl
OmZ1bmN0aW9uKGEsYyl7dmFyIGQ9YXx8YztyZXR1cm4gYSYmYyYmYSE9PWMmJihkPWIuZXh0ZW5k
KHt9LGMsYSkpLGR9LG5vb3A6Yy5WTS5ub29wLGNvbXBpbGVySW5mbzphLmNvbXBpbGVyfTtyZXR1
cm4gZS5pc1RvcD0hMCxlLl9zZXR1cD1mdW5jdGlvbihiKXtiLnBhcnRpYWw/KGYuaGVscGVycz1i
LmhlbHBlcnMsZi5wYXJ0aWFscz1iLnBhcnRpYWxzLGYuZGVjb3JhdG9ycz1iLmRlY29yYXRvcnMp
OihmLmhlbHBlcnM9Zi5tZXJnZShiLmhlbHBlcnMsYy5oZWxwZXJzKSxhLnVzZVBhcnRpYWwmJihm
LnBhcnRpYWxzPWYubWVyZ2UoYi5wYXJ0aWFscyxjLnBhcnRpYWxzKSksKGEudXNlUGFydGlhbHx8
YS51c2VEZWNvcmF0b3JzKSYmKGYuZGVjb3JhdG9ycz1mLm1lcmdlKGIuZGVjb3JhdG9ycyxjLmRl
Y29yYXRvcnMpKSl9LGUuX2NoaWxkPWZ1bmN0aW9uKGIsYyxkLGUpe2lmKGEudXNlQmxvY2tQYXJh
bXMmJiFkKXRocm93IG5ldyBuWyJkZWZhdWx0Il0oIm11c3QgcGFzcyBibG9jayBwYXJhbXMiKTtp
ZihhLnVzZURlcHRocyYmIWUpdGhyb3cgbmV3IG5bImRlZmF1bHQiXSgibXVzdCBwYXNzIHBhcmVu
dCBkZXB0aHMiKTtyZXR1cm4gaChmLGIsYVtiXSxjLDAsZCxlKX0sZX1mdW5jdGlvbiBoKGEsYixj
LGQsZSxmLGcpe2Z1bmN0aW9uIGgoYil7dmFyIGU9YXJndW1lbnRzLmxlbmd0aDw9MXx8dm9pZCAw
PT09YXJndW1lbnRzWzFdP3t9OmFyZ3VtZW50c1sxXSxoPWc7cmV0dXJuIGcmJmIhPWdbMF0mJiho
PVtiXS5jb25jYXQoZykpLGMoYSxiLGEuaGVscGVycyxhLnBhcnRpYWxzLGUuZGF0YXx8ZCxmJiZb
ZS5ibG9ja1BhcmFtc10uY29uY2F0KGYpLGgpfXJldHVybiBoPW0oYyxoLGEsZyxkLGYpLGgucHJv
Z3JhbT1iLGguZGVwdGg9Zz9nLmxlbmd0aDowLGguYmxvY2tQYXJhbXM9ZXx8MCxofWZ1bmN0aW9u
IGkoYSxiLGMpe2lmKGEpYS5jYWxsfHxjLm5hbWV8fChjLm5hbWU9YSxhPWMucGFydGlhbHNbYV0p
O2Vsc2UgaWYoIkBwYXJ0aWFsLWJsb2NrIj09PWMubmFtZSl7Zm9yKHZhciBkPWMuZGF0YTtkWyJw
YXJ0aWFsLWJsb2NrIl09PT1rOylkPWQuX3BhcmVudDthPWRbInBhcnRpYWwtYmxvY2siXSxkWyJw
YXJ0aWFsLWJsb2NrIl09a31lbHNlIGE9Yy5wYXJ0aWFsc1tjLm5hbWVdO3JldHVybiBhfWZ1bmN0
aW9uIGooYSxjLGUpe2UucGFydGlhbD0hMCxlLmlkcyYmKGUuZGF0YS5jb250ZXh0UGF0aD1lLmlk
c1swXXx8ZS5kYXRhLmNvbnRleHRQYXRoKTt2YXIgZj12b2lkIDA7aWYoZS5mbiYmZS5mbiE9PWsm
JihlLmRhdGE9ZC5jcmVhdGVGcmFtZShlLmRhdGEpLGY9ZS5kYXRhWyJwYXJ0aWFsLWJsb2NrIl09
ZS5mbixmLnBhcnRpYWxzJiYoZS5wYXJ0aWFscz1iLmV4dGVuZCh7fSxlLnBhcnRpYWxzLGYucGFy
dGlhbHMpKSksdm9pZCAwPT09YSYmZiYmKGE9Ziksdm9pZCAwPT09YSl0aHJvdyBuZXcgblsiZGVm
YXVsdCJdKCJUaGUgcGFydGlhbCAiK2UubmFtZSsiIGNvdWxkIG5vdCBiZSBmb3VuZCIpO2lmKGEg
aW5zdGFuY2VvZiBGdW5jdGlvbilyZXR1cm4gYShjLGUpfWZ1bmN0aW9uIGsoKXtyZXR1cm4iIn1m
dW5jdGlvbiBsKGEsYil7cmV0dXJuIGImJiJyb290ImluIGJ8fChiPWI/ZC5jcmVhdGVGcmFtZShi
KTp7fSxiLnJvb3Q9YSksYn1mdW5jdGlvbiBtKGEsYyxkLGUsZixnKXtpZihhLmRlY29yYXRvcil7
dmFyIGg9e307Yz1hLmRlY29yYXRvcihjLGgsZCxlJiZlWzBdLGYsZyxlKSxiLmV4dGVuZChjLGgp
fXJldHVybiBjfWEuX19lc01vZHVsZT0hMCxhLmNoZWNrUmV2aXNpb249ZixhLnRlbXBsYXRlPWcs
YS53cmFwUHJvZ3JhbT1oLGEucmVzb2x2ZVBhcnRpYWw9aSxhLmludm9rZVBhcnRpYWw9aixhLm5v
b3A9azt2YXIgbj1lKGMpfSksZGVmaW5lKCJoYW5kbGViYXJzL25vLWNvbmZsaWN0IixbImV4cG9y
dHMiLCJtb2R1bGUiXSxmdW5jdGlvbihhLGIpeyJ1c2Ugc3RyaWN0IjtiLmV4cG9ydHM9ZnVuY3Rp
b24oYSl7dmFyIGI9InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOndpbmRvdyxjPWIu
SGFuZGxlYmFyczthLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gYi5IYW5kbGViYXJzPT09
YSYmKGIuSGFuZGxlYmFycz1jKSxhfX19KSxkZWZpbmUoImhhbmRsZWJhcnMucnVudGltZSIsWyJl
eHBvcnRzIiwibW9kdWxlIiwiLi9oYW5kbGViYXJzL2Jhc2UiLCIuL2hhbmRsZWJhcnMvc2FmZS1z
dHJpbmciLCIuL2hhbmRsZWJhcnMvZXhjZXB0aW9uIiwiLi9oYW5kbGViYXJzL3V0aWxzIiwiLi9o
YW5kbGViYXJzL3J1bnRpbWUiLCIuL2hhbmRsZWJhcnMvbm8tY29uZmxpY3QiXSxmdW5jdGlvbihh
LGIsYyxkLGUsZixnLGgpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGEpe3JldHVybiBhJiZhLl9f
ZXNNb2R1bGU/YTp7ImRlZmF1bHQiOmF9fWZ1bmN0aW9uIGooKXt2YXIgYT1uZXcgYy5IYW5kbGVi
YXJzRW52aXJvbm1lbnQ7cmV0dXJuIGYuZXh0ZW5kKGEsYyksYS5TYWZlU3RyaW5nPWtbImRlZmF1
bHQiXSxhLkV4Y2VwdGlvbj1sWyJkZWZhdWx0Il0sYS5VdGlscz1mLGEuZXNjYXBlRXhwcmVzc2lv
bj1mLmVzY2FwZUV4cHJlc3Npb24sYS5WTT1nLGEudGVtcGxhdGU9ZnVuY3Rpb24oYil7cmV0dXJu
IGcudGVtcGxhdGUoYixhKX0sYX12YXIgaz1pKGQpLGw9aShlKSxtPWkoaCksbj1qKCk7bi5jcmVh
dGU9aixtWyJkZWZhdWx0Il0obiksblsiZGVmYXVsdCJdPW4sYi5leHBvcnRzPW59KSxkZWZpbmUo
ImhhbmRsZWJhcnMvY29tcGlsZXIvYXN0IixbImV4cG9ydHMiLCJtb2R1bGUiXSxmdW5jdGlvbihh
LGIpeyJ1c2Ugc3RyaWN0Ijt2YXIgYz17aGVscGVyczp7aGVscGVyRXhwcmVzc2lvbjpmdW5jdGlv
bihhKXtyZXR1cm4iU3ViRXhwcmVzc2lvbiI9PT1hLnR5cGV8fCgiTXVzdGFjaGVTdGF0ZW1lbnQi
PT09YS50eXBlfHwiQmxvY2tTdGF0ZW1lbnQiPT09YS50eXBlKSYmISEoYS5wYXJhbXMmJmEucGFy
YW1zLmxlbmd0aHx8YS5oYXNoKX0sc2NvcGVkSWQ6ZnVuY3Rpb24oYSl7cmV0dXJuL15cLnx0aGlz
XGIvLnRlc3QoYS5vcmlnaW5hbCl9LHNpbXBsZUlkOmZ1bmN0aW9uKGEpe3JldHVybiAxPT09YS5w
YXJ0cy5sZW5ndGgmJiFjLmhlbHBlcnMuc2NvcGVkSWQoYSkmJiFhLmRlcHRofX19O2IuZXhwb3J0
cz1jfSksZGVmaW5lKCJoYW5kbGViYXJzL2NvbXBpbGVyL3BhcnNlciIsWyJleHBvcnRzIl0sZnVu
Y3Rpb24oYSl7InVzZSBzdHJpY3QiO3ZhciBiPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYSgpe3RoaXMu
eXk9e319dmFyIGI9e3RyYWNlOmZ1bmN0aW9uKCl7fSx5eTp7fSxzeW1ib2xzXzp7ZXJyb3I6Mixy
b290OjMscHJvZ3JhbTo0LEVPRjo1LHByb2dyYW1fcmVwZXRpdGlvbjA6NixzdGF0ZW1lbnQ6Nyxt
dXN0YWNoZTo4LGJsb2NrOjkscmF3QmxvY2s6MTAscGFydGlhbDoxMSxwYXJ0aWFsQmxvY2s6MTIs
Y29udGVudDoxMyxDT01NRU5UOjE0LENPTlRFTlQ6MTUsb3BlblJhd0Jsb2NrOjE2LHJhd0Jsb2Nr
X3JlcGV0aXRpb25fcGx1czA6MTcsRU5EX1JBV19CTE9DSzoxOCxPUEVOX1JBV19CTE9DSzoxOSxo
ZWxwZXJOYW1lOjIwLG9wZW5SYXdCbG9ja19yZXBldGl0aW9uMDoyMSxvcGVuUmF3QmxvY2tfb3B0
aW9uMDoyMixDTE9TRV9SQVdfQkxPQ0s6MjMsb3BlbkJsb2NrOjI0LGJsb2NrX29wdGlvbjA6MjUs
Y2xvc2VCbG9jazoyNixvcGVuSW52ZXJzZToyNyxibG9ja19vcHRpb24xOjI4LE9QRU5fQkxPQ0s6
Mjksb3BlbkJsb2NrX3JlcGV0aXRpb24wOjMwLG9wZW5CbG9ja19vcHRpb24wOjMxLG9wZW5CbG9j
a19vcHRpb24xOjMyLENMT1NFOjMzLE9QRU5fSU5WRVJTRTozNCxvcGVuSW52ZXJzZV9yZXBldGl0
aW9uMDozNSxvcGVuSW52ZXJzZV9vcHRpb24wOjM2LG9wZW5JbnZlcnNlX29wdGlvbjE6Mzcsb3Bl
bkludmVyc2VDaGFpbjozOCxPUEVOX0lOVkVSU0VfQ0hBSU46Mzksb3BlbkludmVyc2VDaGFpbl9y
ZXBldGl0aW9uMDo0MCxvcGVuSW52ZXJzZUNoYWluX29wdGlvbjA6NDEsb3BlbkludmVyc2VDaGFp
bl9vcHRpb24xOjQyLGludmVyc2VBbmRQcm9ncmFtOjQzLElOVkVSU0U6NDQsaW52ZXJzZUNoYWlu
OjQ1LGludmVyc2VDaGFpbl9vcHRpb24wOjQ2LE9QRU5fRU5EQkxPQ0s6NDcsT1BFTjo0OCxtdXN0
YWNoZV9yZXBldGl0aW9uMDo0OSxtdXN0YWNoZV9vcHRpb24wOjUwLE9QRU5fVU5FU0NBUEVEOjUx
LG11c3RhY2hlX3JlcGV0aXRpb24xOjUyLG11c3RhY2hlX29wdGlvbjE6NTMsQ0xPU0VfVU5FU0NB
UEVEOjU0LE9QRU5fUEFSVElBTDo1NSxwYXJ0aWFsTmFtZTo1NixwYXJ0aWFsX3JlcGV0aXRpb24w
OjU3LHBhcnRpYWxfb3B0aW9uMDo1OCxvcGVuUGFydGlhbEJsb2NrOjU5LE9QRU5fUEFSVElBTF9C
TE9DSzo2MCxvcGVuUGFydGlhbEJsb2NrX3JlcGV0aXRpb24wOjYxLG9wZW5QYXJ0aWFsQmxvY2tf
b3B0aW9uMDo2MixwYXJhbTo2MyxzZXhwcjo2NCxPUEVOX1NFWFBSOjY1LHNleHByX3JlcGV0aXRp
b24wOjY2LHNleHByX29wdGlvbjA6NjcsQ0xPU0VfU0VYUFI6NjgsaGFzaDo2OSxoYXNoX3JlcGV0
aXRpb25fcGx1czA6NzAsaGFzaFNlZ21lbnQ6NzEsSUQ6NzIsRVFVQUxTOjczLGJsb2NrUGFyYW1z
Ojc0LE9QRU5fQkxPQ0tfUEFSQU1TOjc1LGJsb2NrUGFyYW1zX3JlcGV0aXRpb25fcGx1czA6NzYs
Q0xPU0VfQkxPQ0tfUEFSQU1TOjc3LHBhdGg6NzgsZGF0YU5hbWU6NzksU1RSSU5HOjgwLE5VTUJF
Ujo4MSxCT09MRUFOOjgyLFVOREVGSU5FRDo4MyxOVUxMOjg0LERBVEE6ODUscGF0aFNlZ21lbnRz
Ojg2LFNFUDo4NywkYWNjZXB0OjAsJGVuZDoxfSx0ZXJtaW5hbHNfOnsyOiJlcnJvciIsNToiRU9G
IiwxNDoiQ09NTUVOVCIsMTU6IkNPTlRFTlQiLDE4OiJFTkRfUkFXX0JMT0NLIiwxOToiT1BFTl9S
QVdfQkxPQ0siLDIzOiJDTE9TRV9SQVdfQkxPQ0siLDI5OiJPUEVOX0JMT0NLIiwzMzoiQ0xPU0Ui
LDM0OiJPUEVOX0lOVkVSU0UiLDM5OiJPUEVOX0lOVkVSU0VfQ0hBSU4iLDQ0OiJJTlZFUlNFIiw0
NzoiT1BFTl9FTkRCTE9DSyIsNDg6Ik9QRU4iLDUxOiJPUEVOX1VORVNDQVBFRCIsNTQ6IkNMT1NF
X1VORVNDQVBFRCIsNTU6Ik9QRU5fUEFSVElBTCIsNjA6Ik9QRU5fUEFSVElBTF9CTE9DSyIsNjU6
Ik9QRU5fU0VYUFIiLDY4OiJDTE9TRV9TRVhQUiIsNzI6IklEIiw3MzoiRVFVQUxTIiw3NToiT1BF
Tl9CTE9DS19QQVJBTVMiLDc3OiJDTE9TRV9CTE9DS19QQVJBTVMiLDgwOiJTVFJJTkciLDgxOiJO
VU1CRVIiLDgyOiJCT09MRUFOIiw4MzoiVU5ERUZJTkVEIiw4NDoiTlVMTCIsODU6IkRBVEEiLDg3
OiJTRVAifSxwcm9kdWN0aW9uc186WzAsWzMsMl0sWzQsMV0sWzcsMV0sWzcsMV0sWzcsMV0sWzcs
MV0sWzcsMV0sWzcsMV0sWzcsMV0sWzEzLDFdLFsxMCwzXSxbMTYsNV0sWzksNF0sWzksNF0sWzI0
LDZdLFsyNyw2XSxbMzgsNl0sWzQzLDJdLFs0NSwzXSxbNDUsMV0sWzI2LDNdLFs4LDVdLFs4LDVd
LFsxMSw1XSxbMTIsM10sWzU5LDVdLFs2MywxXSxbNjMsMV0sWzY0LDVdLFs2OSwxXSxbNzEsM10s
Wzc0LDNdLFsyMCwxXSxbMjAsMV0sWzIwLDFdLFsyMCwxXSxbMjAsMV0sWzIwLDFdLFsyMCwxXSxb
NTYsMV0sWzU2LDFdLFs3OSwyXSxbNzgsMV0sWzg2LDNdLFs4NiwxXSxbNiwwXSxbNiwyXSxbMTcs
MV0sWzE3LDJdLFsyMSwwXSxbMjEsMl0sWzIyLDBdLFsyMiwxXSxbMjUsMF0sWzI1LDFdLFsyOCww
XSxbMjgsMV0sWzMwLDBdLFszMCwyXSxbMzEsMF0sWzMxLDFdLFszMiwwXSxbMzIsMV0sWzM1LDBd
LFszNSwyXSxbMzYsMF0sWzM2LDFdLFszNywwXSxbMzcsMV0sWzQwLDBdLFs0MCwyXSxbNDEsMF0s
WzQxLDFdLFs0MiwwXSxbNDIsMV0sWzQ2LDBdLFs0NiwxXSxbNDksMF0sWzQ5LDJdLFs1MCwwXSxb
NTAsMV0sWzUyLDBdLFs1MiwyXSxbNTMsMF0sWzUzLDFdLFs1NywwXSxbNTcsMl0sWzU4LDBdLFs1
OCwxXSxbNjEsMF0sWzYxLDJdLFs2MiwwXSxbNjIsMV0sWzY2LDBdLFs2NiwyXSxbNjcsMF0sWzY3
LDFdLFs3MCwxXSxbNzAsMl0sWzc2LDFdLFs3NiwyXV0scGVyZm9ybUFjdGlvbjpmdW5jdGlvbihh
LGIsYyxkLGUsZixnKXt2YXIgaD1mLmxlbmd0aC0xO3N3aXRjaChlKXtjYXNlIDE6cmV0dXJuIGZb
aC0xXTtjYXNlIDI6dGhpcy4kPWQucHJlcGFyZVByb2dyYW0oZltoXSk7YnJlYWs7Y2FzZSAzOnRo
aXMuJD1mW2hdO2JyZWFrO2Nhc2UgNDp0aGlzLiQ9ZltoXTticmVhaztjYXNlIDU6dGhpcy4kPWZb
aF07YnJlYWs7Y2FzZSA2OnRoaXMuJD1mW2hdO2JyZWFrO2Nhc2UgNzp0aGlzLiQ9ZltoXTticmVh
aztjYXNlIDg6dGhpcy4kPWZbaF07YnJlYWs7Y2FzZSA5OnRoaXMuJD17dHlwZToiQ29tbWVudFN0
YXRlbWVudCIsdmFsdWU6ZC5zdHJpcENvbW1lbnQoZltoXSksc3RyaXA6ZC5zdHJpcEZsYWdzKGZb
aF0sZltoXSksbG9jOmQubG9jSW5mbyh0aGlzLl8kKX07YnJlYWs7Y2FzZSAxMDp0aGlzLiQ9e3R5
cGU6IkNvbnRlbnRTdGF0ZW1lbnQiLG9yaWdpbmFsOmZbaF0sdmFsdWU6ZltoXSxsb2M6ZC5sb2NJ
bmZvKHRoaXMuXyQpfTticmVhaztjYXNlIDExOnRoaXMuJD1kLnByZXBhcmVSYXdCbG9jayhmW2gt
Ml0sZltoLTFdLGZbaF0sdGhpcy5fJCk7YnJlYWs7Y2FzZSAxMjp0aGlzLiQ9e3BhdGg6ZltoLTNd
LHBhcmFtczpmW2gtMl0saGFzaDpmW2gtMV19O2JyZWFrO2Nhc2UgMTM6dGhpcy4kPWQucHJlcGFy
ZUJsb2NrKGZbaC0zXSxmW2gtMl0sZltoLTFdLGZbaF0sITEsdGhpcy5fJCk7YnJlYWs7Y2FzZSAx
NDp0aGlzLiQ9ZC5wcmVwYXJlQmxvY2soZltoLTNdLGZbaC0yXSxmW2gtMV0sZltoXSwhMCx0aGlz
Ll8kKTticmVhaztjYXNlIDE1OnRoaXMuJD17b3BlbjpmW2gtNV0scGF0aDpmW2gtNF0scGFyYW1z
OmZbaC0zXSxoYXNoOmZbaC0yXSxibG9ja1BhcmFtczpmW2gtMV0sc3RyaXA6ZC5zdHJpcEZsYWdz
KGZbaC01XSxmW2hdKX07YnJlYWs7Y2FzZSAxNjp0aGlzLiQ9e3BhdGg6ZltoLTRdLHBhcmFtczpm
W2gtM10saGFzaDpmW2gtMl0sYmxvY2tQYXJhbXM6ZltoLTFdLHN0cmlwOmQuc3RyaXBGbGFncyhm
W2gtNV0sZltoXSl9O2JyZWFrO2Nhc2UgMTc6dGhpcy4kPXtwYXRoOmZbaC00XSxwYXJhbXM6Zlto
LTNdLGhhc2g6ZltoLTJdLGJsb2NrUGFyYW1zOmZbaC0xXSxzdHJpcDpkLnN0cmlwRmxhZ3MoZlto
LTVdLGZbaF0pfTticmVhaztjYXNlIDE4OnRoaXMuJD17c3RyaXA6ZC5zdHJpcEZsYWdzKGZbaC0x
XSxmW2gtMV0pLHByb2dyYW06ZltoXX07YnJlYWs7Y2FzZSAxOTp2YXIgaT1kLnByZXBhcmVCbG9j
ayhmW2gtMl0sZltoLTFdLGZbaF0sZltoXSwhMSx0aGlzLl8kKSxqPWQucHJlcGFyZVByb2dyYW0o
W2ldLGZbaC0xXS5sb2MpO2ouY2hhaW5lZD0hMCx0aGlzLiQ9e3N0cmlwOmZbaC0yXS5zdHJpcCxw
cm9ncmFtOmosY2hhaW46ITB9O2JyZWFrO2Nhc2UgMjA6dGhpcy4kPWZbaF07YnJlYWs7Y2FzZSAy
MTp0aGlzLiQ9e3BhdGg6ZltoLTFdLHN0cmlwOmQuc3RyaXBGbGFncyhmW2gtMl0sZltoXSl9O2Jy
ZWFrO2Nhc2UgMjI6dGhpcy4kPWQucHJlcGFyZU11c3RhY2hlKGZbaC0zXSxmW2gtMl0sZltoLTFd
LGZbaC00XSxkLnN0cmlwRmxhZ3MoZltoLTRdLGZbaF0pLHRoaXMuXyQpO2JyZWFrO2Nhc2UgMjM6
dGhpcy4kPWQucHJlcGFyZU11c3RhY2hlKGZbaC0zXSxmW2gtMl0sZltoLTFdLGZbaC00XSxkLnN0
cmlwRmxhZ3MoZltoLTRdLGZbaF0pLHRoaXMuXyQpO2JyZWFrO2Nhc2UgMjQ6dGhpcy4kPXt0eXBl
OiJQYXJ0aWFsU3RhdGVtZW50IixuYW1lOmZbaC0zXSxwYXJhbXM6ZltoLTJdLGhhc2g6ZltoLTFd
LGluZGVudDoiIixzdHJpcDpkLnN0cmlwRmxhZ3MoZltoLTRdLGZbaF0pLGxvYzpkLmxvY0luZm8o
dGhpcy5fJCl9O2JyZWFrO2Nhc2UgMjU6dGhpcy4kPWQucHJlcGFyZVBhcnRpYWxCbG9jayhmW2gt
Ml0sZltoLTFdLGZbaF0sdGhpcy5fJCk7YnJlYWs7Y2FzZSAyNjp0aGlzLiQ9e3BhdGg6ZltoLTNd
LHBhcmFtczpmW2gtMl0saGFzaDpmW2gtMV0sc3RyaXA6ZC5zdHJpcEZsYWdzKGZbaC00XSxmW2hd
KX07YnJlYWs7Y2FzZSAyNzp0aGlzLiQ9ZltoXTticmVhaztjYXNlIDI4OnRoaXMuJD1mW2hdO2Jy
ZWFrO2Nhc2UgMjk6dGhpcy4kPXt0eXBlOiJTdWJFeHByZXNzaW9uIixwYXRoOmZbaC0zXSxwYXJh
bXM6ZltoLTJdLGhhc2g6ZltoLTFdLGxvYzpkLmxvY0luZm8odGhpcy5fJCl9O2JyZWFrO2Nhc2Ug
MzA6dGhpcy4kPXt0eXBlOiJIYXNoIixwYWlyczpmW2hdLGxvYzpkLmxvY0luZm8odGhpcy5fJCl9
O2JyZWFrO2Nhc2UgMzE6dGhpcy4kPXt0eXBlOiJIYXNoUGFpciIsa2V5OmQuaWQoZltoLTJdKSx2
YWx1ZTpmW2hdLGxvYzpkLmxvY0luZm8odGhpcy5fJCl9O2JyZWFrO2Nhc2UgMzI6dGhpcy4kPWQu
aWQoZltoLTFdKTticmVhaztjYXNlIDMzOnRoaXMuJD1mW2hdO2JyZWFrO2Nhc2UgMzQ6dGhpcy4k
PWZbaF07YnJlYWs7Y2FzZSAzNTp0aGlzLiQ9e3R5cGU6IlN0cmluZ0xpdGVyYWwiLHZhbHVlOmZb
aF0sb3JpZ2luYWw6ZltoXSxsb2M6ZC5sb2NJbmZvKHRoaXMuXyQpfTticmVhaztjYXNlIDM2OnRo
aXMuJD17dHlwZToiTnVtYmVyTGl0ZXJhbCIsdmFsdWU6TnVtYmVyKGZbaF0pLG9yaWdpbmFsOk51
bWJlcihmW2hdKSxsb2M6ZC5sb2NJbmZvKHRoaXMuXyQpfTticmVhaztjYXNlIDM3OnRoaXMuJD17
dHlwZToiQm9vbGVhbkxpdGVyYWwiLHZhbHVlOiJ0cnVlIj09PWZbaF0sb3JpZ2luYWw6InRydWUi
PT09ZltoXSxsb2M6ZC5sb2NJbmZvKHRoaXMuXyQpfTticmVhaztjYXNlIDM4OnRoaXMuJD17dHlw
ZToiVW5kZWZpbmVkTGl0ZXJhbCIsb3JpZ2luYWw6dm9pZCAwLHZhbHVlOnZvaWQgMCxsb2M6ZC5s
b2NJbmZvKHRoaXMuXyQpfTticmVhaztjYXNlIDM5OnRoaXMuJD17dHlwZToiTnVsbExpdGVyYWwi
LG9yaWdpbmFsOm51bGwsdmFsdWU6bnVsbCxsb2M6ZC5sb2NJbmZvKHRoaXMuXyQpfTticmVhaztj
YXNlIDQwOnRoaXMuJD1mW2hdO2JyZWFrO2Nhc2UgNDE6dGhpcy4kPWZbaF07YnJlYWs7Y2FzZSA0
Mjp0aGlzLiQ9ZC5wcmVwYXJlUGF0aCghMCxmW2hdLHRoaXMuXyQpO2JyZWFrO2Nhc2UgNDM6dGhp
cy4kPWQucHJlcGFyZVBhdGgoITEsZltoXSx0aGlzLl8kKTticmVhaztjYXNlIDQ0OmZbaC0yXS5w
dXNoKHtwYXJ0OmQuaWQoZltoXSksb3JpZ2luYWw6ZltoXSxzZXBhcmF0b3I6ZltoLTFdfSksdGhp
cy4kPWZbaC0yXTticmVhaztjYXNlIDQ1OnRoaXMuJD1be3BhcnQ6ZC5pZChmW2hdKSxvcmlnaW5h
bDpmW2hdfV07YnJlYWs7Y2FzZSA0Njp0aGlzLiQ9W107YnJlYWs7Y2FzZSA0NzpmW2gtMV0ucHVz
aChmW2hdKTticmVhaztjYXNlIDQ4OnRoaXMuJD1bZltoXV07YnJlYWs7Y2FzZSA0OTpmW2gtMV0u
cHVzaChmW2hdKTticmVhaztjYXNlIDUwOnRoaXMuJD1bXTticmVhaztjYXNlIDUxOmZbaC0xXS5w
dXNoKGZbaF0pO2JyZWFrO2Nhc2UgNTg6dGhpcy4kPVtdO2JyZWFrO2Nhc2UgNTk6ZltoLTFdLnB1
c2goZltoXSk7YnJlYWs7Y2FzZSA2NDp0aGlzLiQ9W107YnJlYWs7Y2FzZSA2NTpmW2gtMV0ucHVz
aChmW2hdKTticmVhaztjYXNlIDcwOnRoaXMuJD1bXTticmVhaztjYXNlIDcxOmZbaC0xXS5wdXNo
KGZbaF0pO2JyZWFrO2Nhc2UgNzg6dGhpcy4kPVtdO2JyZWFrO2Nhc2UgNzk6ZltoLTFdLnB1c2go
ZltoXSk7YnJlYWs7Y2FzZSA4Mjp0aGlzLiQ9W107YnJlYWs7Y2FzZSA4MzpmW2gtMV0ucHVzaChm
W2hdKTticmVhaztjYXNlIDg2OnRoaXMuJD1bXTticmVhaztjYXNlIDg3OmZbaC0xXS5wdXNoKGZb
aF0pO2JyZWFrO2Nhc2UgOTA6dGhpcy4kPVtdO2JyZWFrO2Nhc2UgOTE6ZltoLTFdLnB1c2goZlto
XSk7YnJlYWs7Y2FzZSA5NDp0aGlzLiQ9W107YnJlYWs7Y2FzZSA5NTpmW2gtMV0ucHVzaChmW2hd
KTticmVhaztjYXNlIDk4OnRoaXMuJD1bZltoXV07YnJlYWs7Y2FzZSA5OTpmW2gtMV0ucHVzaChm
W2hdKTticmVhaztjYXNlIDEwMDp0aGlzLiQ9W2ZbaF1dO2JyZWFrO2Nhc2UgMTAxOmZbaC0xXS5w
dXNoKGZbaF0pfX0sdGFibGU6W3szOjEsNDoyLDU6WzIsNDZdLDY6MywxNDpbMiw0Nl0sMTU6WzIs
NDZdLDE5OlsyLDQ2XSwyOTpbMiw0Nl0sMzQ6WzIsNDZdLDQ4OlsyLDQ2XSw1MTpbMiw0Nl0sNTU6
WzIsNDZdLDYwOlsyLDQ2XX0sezE6WzNdfSx7NTpbMSw0XX0sezU6WzIsMl0sNzo1LDg6Niw5Ojcs
MTA6OCwxMTo5LDEyOjEwLDEzOjExLDE0OlsxLDEyXSwxNTpbMSwyMF0sMTY6MTcsMTk6WzEsMjNd
LDI0OjE1LDI3OjE2LDI5OlsxLDIxXSwzNDpbMSwyMl0sMzk6WzIsMl0sNDQ6WzIsMl0sNDc6WzIs
Ml0sNDg6WzEsMTNdLDUxOlsxLDE0XSw1NTpbMSwxOF0sNTk6MTksNjA6WzEsMjRdfSx7MTpbMiwx
XX0sezU6WzIsNDddLDE0OlsyLDQ3XSwxNTpbMiw0N10sMTk6WzIsNDddLDI5OlsyLDQ3XSwzNDpb
Miw0N10sMzk6WzIsNDddLDQ0OlsyLDQ3XSw0NzpbMiw0N10sNDg6WzIsNDddLDUxOlsyLDQ3XSw1
NTpbMiw0N10sNjA6WzIsNDddfSx7NTpbMiwzXSwxNDpbMiwzXSwxNTpbMiwzXSwxOTpbMiwzXSwy
OTpbMiwzXSwzNDpbMiwzXSwzOTpbMiwzXSw0NDpbMiwzXSw0NzpbMiwzXSw0ODpbMiwzXSw1MTpb
MiwzXSw1NTpbMiwzXSw2MDpbMiwzXX0sezU6WzIsNF0sMTQ6WzIsNF0sMTU6WzIsNF0sMTk6WzIs
NF0sMjk6WzIsNF0sMzQ6WzIsNF0sMzk6WzIsNF0sNDQ6WzIsNF0sNDc6WzIsNF0sNDg6WzIsNF0s
NTE6WzIsNF0sNTU6WzIsNF0sNjA6WzIsNF19LHs1OlsyLDVdLDE0OlsyLDVdLDE1OlsyLDVdLDE5
OlsyLDVdLDI5OlsyLDVdLDM0OlsyLDVdLDM5OlsyLDVdLDQ0OlsyLDVdLDQ3OlsyLDVdLDQ4Olsy
LDVdLDUxOlsyLDVdLDU1OlsyLDVdLDYwOlsyLDVdfSx7NTpbMiw2XSwxNDpbMiw2XSwxNTpbMiw2
XSwxOTpbMiw2XSwyOTpbMiw2XSwzNDpbMiw2XSwzOTpbMiw2XSw0NDpbMiw2XSw0NzpbMiw2XSw0
ODpbMiw2XSw1MTpbMiw2XSw1NTpbMiw2XSw2MDpbMiw2XX0sezU6WzIsN10sMTQ6WzIsN10sMTU6
WzIsN10sMTk6WzIsN10sMjk6WzIsN10sMzQ6WzIsN10sMzk6WzIsN10sNDQ6WzIsN10sNDc6WzIs
N10sNDg6WzIsN10sNTE6WzIsN10sNTU6WzIsN10sNjA6WzIsN119LHs1OlsyLDhdLDE0OlsyLDhd
LDE1OlsyLDhdLDE5OlsyLDhdLDI5OlsyLDhdLDM0OlsyLDhdLDM5OlsyLDhdLDQ0OlsyLDhdLDQ3
OlsyLDhdLDQ4OlsyLDhdLDUxOlsyLDhdLDU1OlsyLDhdLDYwOlsyLDhdfSx7NTpbMiw5XSwxNDpb
Miw5XSwxNTpbMiw5XSwxOTpbMiw5XSwyOTpbMiw5XSwzNDpbMiw5XSwzOTpbMiw5XSw0NDpbMiw5
XSw0NzpbMiw5XSw0ODpbMiw5XSw1MTpbMiw5XSw1NTpbMiw5XSw2MDpbMiw5XX0sezIwOjI1LDcy
OlsxLDM1XSw3ODoyNiw3OToyNyw4MDpbMSwyOF0sODE6WzEsMjldLDgyOlsxLDMwXSw4MzpbMSwz
MV0sODQ6WzEsMzJdLDg1OlsxLDM0XSw4NjozM30sezIwOjM2LDcyOlsxLDM1XSw3ODoyNiw3OToy
Nyw4MDpbMSwyOF0sODE6WzEsMjldLDgyOlsxLDMwXSw4MzpbMSwzMV0sODQ6WzEsMzJdLDg1Olsx
LDM0XSw4NjozM30sezQ6MzcsNjozLDE0OlsyLDQ2XSwxNTpbMiw0Nl0sMTk6WzIsNDZdLDI5Olsy
LDQ2XSwzNDpbMiw0Nl0sMzk6WzIsNDZdLDQ0OlsyLDQ2XSw0NzpbMiw0Nl0sNDg6WzIsNDZdLDUx
OlsyLDQ2XSw1NTpbMiw0Nl0sNjA6WzIsNDZdfSx7NDozOCw2OjMsMTQ6WzIsNDZdLDE1OlsyLDQ2
XSwxOTpbMiw0Nl0sMjk6WzIsNDZdLDM0OlsyLDQ2XSw0NDpbMiw0Nl0sNDc6WzIsNDZdLDQ4Olsy
LDQ2XSw1MTpbMiw0Nl0sNTU6WzIsNDZdLDYwOlsyLDQ2XX0sezEzOjQwLDE1OlsxLDIwXSwxNzoz
OX0sezIwOjQyLDU2OjQxLDY0OjQzLDY1OlsxLDQ0XSw3MjpbMSwzNV0sNzg6MjYsNzk6MjcsODA6
WzEsMjhdLDgxOlsxLDI5XSw4MjpbMSwzMF0sODM6WzEsMzFdLDg0OlsxLDMyXSw4NTpbMSwzNF0s
ODY6MzN9LHs0OjQ1LDY6MywxNDpbMiw0Nl0sMTU6WzIsNDZdLDE5OlsyLDQ2XSwyOTpbMiw0Nl0s
MzQ6WzIsNDZdLDQ3OlsyLDQ2XSw0ODpbMiw0Nl0sNTE6WzIsNDZdLDU1OlsyLDQ2XSw2MDpbMiw0
Nl19LHs1OlsyLDEwXSwxNDpbMiwxMF0sMTU6WzIsMTBdLDE4OlsyLDEwXSwxOTpbMiwxMF0sMjk6
WzIsMTBdLDM0OlsyLDEwXSwzOTpbMiwxMF0sNDQ6WzIsMTBdLDQ3OlsyLDEwXSw0ODpbMiwxMF0s
NTE6WzIsMTBdLDU1OlsyLDEwXSw2MDpbMiwxMF19LHsyMDo0Niw3MjpbMSwzNV0sNzg6MjYsNzk6
MjcsODA6WzEsMjhdLDgxOlsxLDI5XSw4MjpbMSwzMF0sODM6WzEsMzFdLDg0OlsxLDMyXSw4NTpb
MSwzNF0sODY6MzN9LHsyMDo0Nyw3MjpbMSwzNV0sNzg6MjYsNzk6MjcsODA6WzEsMjhdLDgxOlsx
LDI5XSw4MjpbMSwzMF0sODM6WzEsMzFdLDg0OlsxLDMyXSw4NTpbMSwzNF0sODY6MzN9LHsyMDo0
OCw3MjpbMSwzNV0sNzg6MjYsNzk6MjcsODA6WzEsMjhdLDgxOlsxLDI5XSw4MjpbMSwzMF0sODM6
WzEsMzFdLDg0OlsxLDMyXSw4NTpbMSwzNF0sODY6MzN9LHsyMDo0Miw1Njo0OSw2NDo0Myw2NTpb
MSw0NF0sNzI6WzEsMzVdLDc4OjI2LDc5OjI3LDgwOlsxLDI4XSw4MTpbMSwyOV0sODI6WzEsMzBd
LDgzOlsxLDMxXSw4NDpbMSwzMl0sODU6WzEsMzRdLDg2OjMzfSx7MzM6WzIsNzhdLDQ5OjUwLDY1
OlsyLDc4XSw3MjpbMiw3OF0sODA6WzIsNzhdLDgxOlsyLDc4XSw4MjpbMiw3OF0sODM6WzIsNzhd
LDg0OlsyLDc4XSw4NTpbMiw3OF19LHsyMzpbMiwzM10sMzM6WzIsMzNdLDU0OlsyLDMzXSw2NTpb
MiwzM10sNjg6WzIsMzNdLDcyOlsyLDMzXSw3NTpbMiwzM10sODA6WzIsMzNdLDgxOlsyLDMzXSw4
MjpbMiwzM10sODM6WzIsMzNdLDg0OlsyLDMzXSw4NTpbMiwzM119LHsyMzpbMiwzNF0sMzM6WzIs
MzRdLDU0OlsyLDM0XSw2NTpbMiwzNF0sNjg6WzIsMzRdLDcyOlsyLDM0XSw3NTpbMiwzNF0sODA6
WzIsMzRdLDgxOlsyLDM0XSw4MjpbMiwzNF0sODM6WzIsMzRdLDg0OlsyLDM0XSw4NTpbMiwzNF19
LHsyMzpbMiwzNV0sMzM6WzIsMzVdLDU0OlsyLDM1XSw2NTpbMiwzNV0sNjg6WzIsMzVdLDcyOlsy
LDM1XSw3NTpbMiwzNV0sODA6WzIsMzVdLDgxOlsyLDM1XSw4MjpbMiwzNV0sODM6WzIsMzVdLDg0
OlsyLDM1XSw4NTpbMiwzNV19LHsyMzpbMiwzNl0sMzM6WzIsMzZdLDU0OlsyLDM2XSw2NTpbMiwz
Nl0sNjg6WzIsMzZdLDcyOlsyLDM2XSw3NTpbMiwzNl0sODA6WzIsMzZdLDgxOlsyLDM2XSw4Mjpb
MiwzNl0sODM6WzIsMzZdLDg0OlsyLDM2XSw4NTpbMiwzNl19LHsyMzpbMiwzN10sMzM6WzIsMzdd
LDU0OlsyLDM3XSw2NTpbMiwzN10sNjg6WzIsMzddLDcyOlsyLDM3XSw3NTpbMiwzN10sODA6WzIs
MzddLDgxOlsyLDM3XSw4MjpbMiwzN10sODM6WzIsMzddLDg0OlsyLDM3XSw4NTpbMiwzN119LHsy
MzpbMiwzOF0sMzM6WzIsMzhdLDU0OlsyLDM4XSw2NTpbMiwzOF0sNjg6WzIsMzhdLDcyOlsyLDM4
XSw3NTpbMiwzOF0sODA6WzIsMzhdLDgxOlsyLDM4XSw4MjpbMiwzOF0sODM6WzIsMzhdLDg0Olsy
LDM4XSw4NTpbMiwzOF19LHsyMzpbMiwzOV0sMzM6WzIsMzldLDU0OlsyLDM5XSw2NTpbMiwzOV0s
Njg6WzIsMzldLDcyOlsyLDM5XSw3NTpbMiwzOV0sODA6WzIsMzldLDgxOlsyLDM5XSw4MjpbMiwz
OV0sODM6WzIsMzldLDg0OlsyLDM5XSw4NTpbMiwzOV19LHsyMzpbMiw0M10sMzM6WzIsNDNdLDU0
OlsyLDQzXSw2NTpbMiw0M10sNjg6WzIsNDNdLDcyOlsyLDQzXSw3NTpbMiw0M10sODA6WzIsNDNd
LDgxOlsyLDQzXSw4MjpbMiw0M10sODM6WzIsNDNdLDg0OlsyLDQzXSw4NTpbMiw0M10sODc6WzEs
NTFdfSx7NzI6WzEsMzVdLDg2OjUyfSx7MjM6WzIsNDVdLDMzOlsyLDQ1XSw1NDpbMiw0NV0sNjU6
WzIsNDVdLDY4OlsyLDQ1XSw3MjpbMiw0NV0sNzU6WzIsNDVdLDgwOlsyLDQ1XSw4MTpbMiw0NV0s
ODI6WzIsNDVdLDgzOlsyLDQ1XSw4NDpbMiw0NV0sODU6WzIsNDVdLDg3OlsyLDQ1XX0sezUyOjUz
LDU0OlsyLDgyXSw2NTpbMiw4Ml0sNzI6WzIsODJdLDgwOlsyLDgyXSw4MTpbMiw4Ml0sODI6WzIs
ODJdLDgzOlsyLDgyXSw4NDpbMiw4Ml0sODU6WzIsODJdfSx7MjU6NTQsMzg6NTYsMzk6WzEsNThd
LDQzOjU3LDQ0OlsxLDU5XSw0NTo1NSw0NzpbMiw1NF19LHsyODo2MCw0Mzo2MSw0NDpbMSw1OV0s
NDc6WzIsNTZdfSx7MTM6NjMsMTU6WzEsMjBdLDE4OlsxLDYyXX0sezE1OlsyLDQ4XSwxODpbMiw0
OF19LHszMzpbMiw4Nl0sNTc6NjQsNjU6WzIsODZdLDcyOlsyLDg2XSw4MDpbMiw4Nl0sODE6WzIs
ODZdLDgyOlsyLDg2XSw4MzpbMiw4Nl0sODQ6WzIsODZdLDg1OlsyLDg2XX0sezMzOlsyLDQwXSw2
NTpbMiw0MF0sNzI6WzIsNDBdLDgwOlsyLDQwXSw4MTpbMiw0MF0sODI6WzIsNDBdLDgzOlsyLDQw
XSw4NDpbMiw0MF0sODU6WzIsNDBdfSx7MzM6WzIsNDFdLDY1OlsyLDQxXSw3MjpbMiw0MV0sODA6
WzIsNDFdLDgxOlsyLDQxXSw4MjpbMiw0MV0sODM6WzIsNDFdLDg0OlsyLDQxXSw4NTpbMiw0MV19
LHsyMDo2NSw3MjpbMSwzNV0sNzg6MjYsNzk6MjcsODA6WzEsMjhdLDgxOlsxLDI5XSw4MjpbMSwz
MF0sODM6WzEsMzFdLDg0OlsxLDMyXSw4NTpbMSwzNF0sODY6MzN9LHsyNjo2Niw0NzpbMSw2N119
LHszMDo2OCwzMzpbMiw1OF0sNjU6WzIsNThdLDcyOlsyLDU4XSw3NTpbMiw1OF0sODA6WzIsNThd
LDgxOlsyLDU4XSw4MjpbMiw1OF0sODM6WzIsNThdLDg0OlsyLDU4XSw4NTpbMiw1OF19LHszMzpb
Miw2NF0sMzU6NjksNjU6WzIsNjRdLDcyOlsyLDY0XSw3NTpbMiw2NF0sODA6WzIsNjRdLDgxOlsy
LDY0XSw4MjpbMiw2NF0sODM6WzIsNjRdLDg0OlsyLDY0XSw4NTpbMiw2NF19LHsyMTo3MCwyMzpb
Miw1MF0sNjU6WzIsNTBdLDcyOlsyLDUwXSw4MDpbMiw1MF0sODE6WzIsNTBdLDgyOlsyLDUwXSw4
MzpbMiw1MF0sODQ6WzIsNTBdLDg1OlsyLDUwXX0sezMzOlsyLDkwXSw2MTo3MSw2NTpbMiw5MF0s
NzI6WzIsOTBdLDgwOlsyLDkwXSw4MTpbMiw5MF0sODI6WzIsOTBdLDgzOlsyLDkwXSw4NDpbMiw5
MF0sODU6WzIsOTBdfSx7MjA6NzUsMzM6WzIsODBdLDUwOjcyLDYzOjczLDY0Ojc2LDY1OlsxLDQ0
XSw2OTo3NCw3MDo3Nyw3MTo3OCw3MjpbMSw3OV0sNzg6MjYsNzk6MjcsODA6WzEsMjhdLDgxOlsx
LDI5XSw4MjpbMSwzMF0sODM6WzEsMzFdLDg0OlsxLDMyXSw4NTpbMSwzNF0sODY6MzN9LHs3Mjpb
MSw4MF19LHsyMzpbMiw0Ml0sMzM6WzIsNDJdLDU0OlsyLDQyXSw2NTpbMiw0Ml0sNjg6WzIsNDJd
LDcyOlsyLDQyXSw3NTpbMiw0Ml0sODA6WzIsNDJdLDgxOlsyLDQyXSw4MjpbMiw0Ml0sODM6WzIs
NDJdLDg0OlsyLDQyXSw4NTpbMiw0Ml0sODc6WzEsNTFdfSx7MjA6NzUsNTM6ODEsNTQ6WzIsODRd
LDYzOjgyLDY0Ojc2LDY1OlsxLDQ0XSw2OTo4Myw3MDo3Nyw3MTo3OCw3MjpbMSw3OV0sNzg6MjYs
Nzk6MjcsODA6WzEsMjhdLDgxOlsxLDI5XSw4MjpbMSwzMF0sODM6WzEsMzFdLDg0OlsxLDMyXSw4
NTpbMSwzNF0sODY6MzN9LHsyNjo4NCw0NzpbMSw2N119LHs0NzpbMiw1NV19LHs0Ojg1LDY6Mywx
NDpbMiw0Nl0sMTU6WzIsNDZdLDE5OlsyLDQ2XSwyOTpbMiw0Nl0sMzQ6WzIsNDZdLDM5OlsyLDQ2
XSw0NDpbMiw0Nl0sNDc6WzIsNDZdLDQ4OlsyLDQ2XSw1MTpbMiw0Nl0sNTU6WzIsNDZdLDYwOlsy
LDQ2XX0sezQ3OlsyLDIwXX0sezIwOjg2LDcyOlsxLDM1XSw3ODoyNiw3OToyNyw4MDpbMSwyOF0s
ODE6WzEsMjldLDgyOlsxLDMwXSw4MzpbMSwzMV0sODQ6WzEsMzJdLDg1OlsxLDM0XSw4NjozM30s
ezQ6ODcsNjozLDE0OlsyLDQ2XSwxNTpbMiw0Nl0sMTk6WzIsNDZdLDI5OlsyLDQ2XSwzNDpbMiw0
Nl0sNDc6WzIsNDZdLDQ4OlsyLDQ2XSw1MTpbMiw0Nl0sNTU6WzIsNDZdLDYwOlsyLDQ2XX0sezI2
Ojg4LDQ3OlsxLDY3XX0sezQ3OlsyLDU3XX0sezU6WzIsMTFdLDE0OlsyLDExXSwxNTpbMiwxMV0s
MTk6WzIsMTFdLDI5OlsyLDExXSwzNDpbMiwxMV0sMzk6WzIsMTFdLDQ0OlsyLDExXSw0NzpbMiwx
MV0sNDg6WzIsMTFdLDUxOlsyLDExXSw1NTpbMiwxMV0sNjA6WzIsMTFdfSx7MTU6WzIsNDldLDE4
OlsyLDQ5XX0sezIwOjc1LDMzOlsyLDg4XSw1ODo4OSw2Mzo5MCw2NDo3Niw2NTpbMSw0NF0sNjk6
OTEsNzA6NzcsNzE6NzgsNzI6WzEsNzldLDc4OjI2LDc5OjI3LDgwOlsxLDI4XSw4MTpbMSwyOV0s
ODI6WzEsMzBdLDgzOlsxLDMxXSw4NDpbMSwzMl0sODU6WzEsMzRdLDg2OjMzfSx7NjU6WzIsOTRd
LDY2OjkyLDY4OlsyLDk0XSw3MjpbMiw5NF0sODA6WzIsOTRdLDgxOlsyLDk0XSw4MjpbMiw5NF0s
ODM6WzIsOTRdLDg0OlsyLDk0XSw4NTpbMiw5NF19LHs1OlsyLDI1XSwxNDpbMiwyNV0sMTU6WzIs
MjVdLDE5OlsyLDI1XSwyOTpbMiwyNV0sMzQ6WzIsMjVdLDM5OlsyLDI1XSw0NDpbMiwyNV0sNDc6
WzIsMjVdLDQ4OlsyLDI1XSw1MTpbMiwyNV0sNTU6WzIsMjVdLDYwOlsyLDI1XX0sezIwOjkzLDcy
OlsxLDM1XSw3ODoyNiw3OToyNyw4MDpbMSwyOF0sODE6WzEsMjldLDgyOlsxLDMwXSw4MzpbMSwz
MV0sODQ6WzEsMzJdLDg1OlsxLDM0XSw4NjozM30sezIwOjc1LDMxOjk0LDMzOlsyLDYwXSw2Mzo5
NSw2NDo3Niw2NTpbMSw0NF0sNjk6OTYsNzA6NzcsNzE6NzgsNzI6WzEsNzldLDc1OlsyLDYwXSw3
ODoyNiw3OToyNyw4MDpbMSwyOF0sODE6WzEsMjldLDgyOlsxLDMwXSw4MzpbMSwzMV0sODQ6WzEs
MzJdLDg1OlsxLDM0XSw4NjozM30sezIwOjc1LDMzOlsyLDY2XSwzNjo5Nyw2Mzo5OCw2NDo3Niw2
NTpbMSw0NF0sNjk6OTksNzA6NzcsNzE6NzgsNzI6WzEsNzldLDc1OlsyLDY2XSw3ODoyNiw3OToy
Nyw4MDpbMSwyOF0sODE6WzEsMjldLDgyOlsxLDMwXSw4MzpbMSwzMV0sODQ6WzEsMzJdLDg1Olsx
LDM0XSw4NjozM30sezIwOjc1LDIyOjEwMCwyMzpbMiw1Ml0sNjM6MTAxLDY0Ojc2LDY1OlsxLDQ0
XSw2OToxMDIsNzA6NzcsNzE6NzgsNzI6WzEsNzldLDc4OjI2LDc5OjI3LDgwOlsxLDI4XSw4MTpb
MSwyOV0sODI6WzEsMzBdLDgzOlsxLDMxXSw4NDpbMSwzMl0sODU6WzEsMzRdLDg2OjMzfSx7MjA6
NzUsMzM6WzIsOTJdLDYyOjEwMyw2MzoxMDQsNjQ6NzYsNjU6WzEsNDRdLDY5OjEwNSw3MDo3Nyw3
MTo3OCw3MjpbMSw3OV0sNzg6MjYsNzk6MjcsODA6WzEsMjhdLDgxOlsxLDI5XSw4MjpbMSwzMF0s
ODM6WzEsMzFdLDg0OlsxLDMyXSw4NTpbMSwzNF0sODY6MzN9LHszMzpbMSwxMDZdfSx7MzM6WzIs
NzldLDY1OlsyLDc5XSw3MjpbMiw3OV0sODA6WzIsNzldLDgxOlsyLDc5XSw4MjpbMiw3OV0sODM6
WzIsNzldLDg0OlsyLDc5XSw4NTpbMiw3OV19LHszMzpbMiw4MV19LHsyMzpbMiwyN10sMzM6WzIs
MjddLDU0OlsyLDI3XSw2NTpbMiwyN10sNjg6WzIsMjddLDcyOlsyLDI3XSw3NTpbMiwyN10sODA6
WzIsMjddLDgxOlsyLDI3XSw4MjpbMiwyN10sODM6WzIsMjddLDg0OlsyLDI3XSw4NTpbMiwyN119
LHsyMzpbMiwyOF0sMzM6WzIsMjhdLDU0OlsyLDI4XSw2NTpbMiwyOF0sNjg6WzIsMjhdLDcyOlsy
LDI4XSw3NTpbMiwyOF0sODA6WzIsMjhdLDgxOlsyLDI4XSw4MjpbMiwyOF0sODM6WzIsMjhdLDg0
OlsyLDI4XSw4NTpbMiwyOF19LHsyMzpbMiwzMF0sMzM6WzIsMzBdLDU0OlsyLDMwXSw2ODpbMiwz
MF0sNzE6MTA3LDcyOlsxLDEwOF0sNzU6WzIsMzBdfSx7MjM6WzIsOThdLDMzOlsyLDk4XSw1NDpb
Miw5OF0sNjg6WzIsOThdLDcyOlsyLDk4XSw3NTpbMiw5OF19LHsyMzpbMiw0NV0sMzM6WzIsNDVd
LDU0OlsyLDQ1XSw2NTpbMiw0NV0sNjg6WzIsNDVdLDcyOlsyLDQ1XSw3MzpbMSwxMDldLDc1Olsy
LDQ1XSw4MDpbMiw0NV0sODE6WzIsNDVdLDgyOlsyLDQ1XSw4MzpbMiw0NV0sODQ6WzIsNDVdLDg1
OlsyLDQ1XSw4NzpbMiw0NV19LHsyMzpbMiw0NF0sMzM6WzIsNDRdLDU0OlsyLDQ0XSw2NTpbMiw0
NF0sNjg6WzIsNDRdLDcyOlsyLDQ0XSw3NTpbMiw0NF0sODA6WzIsNDRdLDgxOlsyLDQ0XSw4Mjpb
Miw0NF0sODM6WzIsNDRdLDg0OlsyLDQ0XSw4NTpbMiw0NF0sODc6WzIsNDRdfSx7NTQ6WzEsMTEw
XX0sezU0OlsyLDgzXSw2NTpbMiw4M10sNzI6WzIsODNdLDgwOlsyLDgzXSw4MTpbMiw4M10sODI6
WzIsODNdLDgzOlsyLDgzXSw4NDpbMiw4M10sODU6WzIsODNdfSx7NTQ6WzIsODVdfSx7NTpbMiwx
M10sMTQ6WzIsMTNdLDE1OlsyLDEzXSwxOTpbMiwxM10sMjk6WzIsMTNdLDM0OlsyLDEzXSwzOTpb
MiwxM10sNDQ6WzIsMTNdLDQ3OlsyLDEzXSw0ODpbMiwxM10sNTE6WzIsMTNdLDU1OlsyLDEzXSw2
MDpbMiwxM119LHszODo1NiwzOTpbMSw1OF0sNDM6NTcsNDQ6WzEsNTldLDQ1OjExMiw0NjoxMTEs
NDc6WzIsNzZdfSx7MzM6WzIsNzBdLDQwOjExMyw2NTpbMiw3MF0sNzI6WzIsNzBdLDc1OlsyLDcw
XSw4MDpbMiw3MF0sODE6WzIsNzBdLDgyOlsyLDcwXSw4MzpbMiw3MF0sODQ6WzIsNzBdLDg1Olsy
LDcwXX0sezQ3OlsyLDE4XX0sezU6WzIsMTRdLDE0OlsyLDE0XSwxNTpbMiwxNF0sMTk6WzIsMTRd
LDI5OlsyLDE0XSwzNDpbMiwxNF0sMzk6WzIsMTRdLDQ0OlsyLDE0XSw0NzpbMiwxNF0sNDg6WzIs
MTRdLDUxOlsyLDE0XSw1NTpbMiwxNF0sNjA6WzIsMTRdfSx7MzM6WzEsMTE0XX0sezMzOlsyLDg3
XSw2NTpbMiw4N10sNzI6WzIsODddLDgwOlsyLDg3XSw4MTpbMiw4N10sODI6WzIsODddLDgzOlsy
LDg3XSw4NDpbMiw4N10sODU6WzIsODddfSx7MzM6WzIsODldfSx7MjA6NzUsNjM6MTE2LDY0Ojc2
LDY1OlsxLDQ0XSw2NzoxMTUsNjg6WzIsOTZdLDY5OjExNyw3MDo3Nyw3MTo3OCw3MjpbMSw3OV0s
Nzg6MjYsNzk6MjcsODA6WzEsMjhdLDgxOlsxLDI5XSw4MjpbMSwzMF0sODM6WzEsMzFdLDg0Olsx
LDMyXSw4NTpbMSwzNF0sODY6MzN9LHszMzpbMSwxMThdfSx7MzI6MTE5LDMzOlsyLDYyXSw3NDox
MjAsNzU6WzEsMTIxXX0sezMzOlsyLDU5XSw2NTpbMiw1OV0sNzI6WzIsNTldLDc1OlsyLDU5XSw4
MDpbMiw1OV0sODE6WzIsNTldLDgyOlsyLDU5XSw4MzpbMiw1OV0sODQ6WzIsNTldLDg1OlsyLDU5
XX0sezMzOlsyLDYxXSw3NTpbMiw2MV19LHszMzpbMiw2OF0sMzc6MTIyLDc0OjEyMyw3NTpbMSwx
MjFdfSx7MzM6WzIsNjVdLDY1OlsyLDY1XSw3MjpbMiw2NV0sNzU6WzIsNjVdLDgwOlsyLDY1XSw4
MTpbMiw2NV0sODI6WzIsNjVdLDgzOlsyLDY1XSw4NDpbMiw2NV0sODU6WzIsNjVdfSx7MzM6WzIs
NjddLDc1OlsyLDY3XX0sezIzOlsxLDEyNF19LHsyMzpbMiw1MV0sNjU6WzIsNTFdLDcyOlsyLDUx
XSw4MDpbMiw1MV0sODE6WzIsNTFdLDgyOlsyLDUxXSw4MzpbMiw1MV0sODQ6WzIsNTFdLDg1Olsy
LDUxXX0sezIzOlsyLDUzXX0sezMzOlsxLDEyNV19LHszMzpbMiw5MV0sNjU6WzIsOTFdLDcyOlsy
LDkxXSw4MDpbMiw5MV0sODE6WzIsOTFdLDgyOlsyLDkxXSw4MzpbMiw5MV0sODQ6WzIsOTFdLDg1
OlsyLDkxXX0sezMzOlsyLDkzXX0sezU6WzIsMjJdLDE0OlsyLDIyXSwxNTpbMiwyMl0sMTk6WzIs
MjJdLDI5OlsyLDIyXSwzNDpbMiwyMl0sMzk6WzIsMjJdLDQ0OlsyLDIyXSw0NzpbMiwyMl0sNDg6
WzIsMjJdLDUxOlsyLDIyXSw1NTpbMiwyMl0sNjA6WzIsMjJdfSx7MjM6WzIsOTldLDMzOlsyLDk5
XSw1NDpbMiw5OV0sNjg6WzIsOTldLDcyOlsyLDk5XSw3NTpbMiw5OV19LHs3MzpbMSwxMDldfSx7
MjA6NzUsNjM6MTI2LDY0Ojc2LDY1OlsxLDQ0XSw3MjpbMSwzNV0sNzg6MjYsNzk6MjcsODA6WzEs
MjhdLDgxOlsxLDI5XSw4MjpbMSwzMF0sODM6WzEsMzFdLDg0OlsxLDMyXSw4NTpbMSwzNF0sODY6
MzN9LHs1OlsyLDIzXSwxNDpbMiwyM10sMTU6WzIsMjNdLDE5OlsyLDIzXSwyOTpbMiwyM10sMzQ6
WzIsMjNdLDM5OlsyLDIzXSw0NDpbMiwyM10sNDc6WzIsMjNdLDQ4OlsyLDIzXSw1MTpbMiwyM10s
NTU6WzIsMjNdLDYwOlsyLDIzXX0sezQ3OlsyLDE5XX0sezQ3OlsyLDc3XX0sezIwOjc1LDMzOlsy
LDcyXSw0MToxMjcsNjM6MTI4LDY0Ojc2LDY1OlsxLDQ0XSw2OToxMjksNzA6NzcsNzE6NzgsNzI6
WzEsNzldLDc1OlsyLDcyXSw3ODoyNiw3OToyNyw4MDpbMSwyOF0sODE6WzEsMjldLDgyOlsxLDMw
XSw4MzpbMSwzMV0sODQ6WzEsMzJdLDg1OlsxLDM0XSw4NjozM30sezU6WzIsMjRdLDE0OlsyLDI0
XSwxNTpbMiwyNF0sMTk6WzIsMjRdLDI5OlsyLDI0XSwzNDpbMiwyNF0sMzk6WzIsMjRdLDQ0Olsy
LDI0XSw0NzpbMiwyNF0sNDg6WzIsMjRdLDUxOlsyLDI0XSw1NTpbMiwyNF0sNjA6WzIsMjRdfSx7
Njg6WzEsMTMwXX0sezY1OlsyLDk1XSw2ODpbMiw5NV0sNzI6WzIsOTVdLDgwOlsyLDk1XSw4MTpb
Miw5NV0sODI6WzIsOTVdLDgzOlsyLDk1XSw4NDpbMiw5NV0sODU6WzIsOTVdfSx7Njg6WzIsOTdd
fSx7NTpbMiwyMV0sMTQ6WzIsMjFdLDE1OlsyLDIxXSwxOTpbMiwyMV0sMjk6WzIsMjFdLDM0Olsy
LDIxXSwzOTpbMiwyMV0sNDQ6WzIsMjFdLDQ3OlsyLDIxXSw0ODpbMiwyMV0sNTE6WzIsMjFdLDU1
OlsyLDIxXSw2MDpbMiwyMV19LHszMzpbMSwxMzFdfSx7MzM6WzIsNjNdfSx7NzI6WzEsMTMzXSw3
NjoxMzJ9LHszMzpbMSwxMzRdfSx7MzM6WzIsNjldfSx7MTU6WzIsMTJdfSx7MTQ6WzIsMjZdLDE1
OlsyLDI2XSwxOTpbMiwyNl0sMjk6WzIsMjZdLDM0OlsyLDI2XSw0NzpbMiwyNl0sNDg6WzIsMjZd
LDUxOlsyLDI2XSw1NTpbMiwyNl0sNjA6WzIsMjZdfSx7MjM6WzIsMzFdLDMzOlsyLDMxXSw1NDpb
MiwzMV0sNjg6WzIsMzFdLDcyOlsyLDMxXSw3NTpbMiwzMV19LHszMzpbMiw3NF0sNDI6MTM1LDc0
OjEzNiw3NTpbMSwxMjFdfSx7MzM6WzIsNzFdLDY1OlsyLDcxXSw3MjpbMiw3MV0sNzU6WzIsNzFd
LDgwOlsyLDcxXSw4MTpbMiw3MV0sODI6WzIsNzFdLDgzOlsyLDcxXSw4NDpbMiw3MV0sODU6WzIs
NzFdfSx7MzM6WzIsNzNdLDc1OlsyLDczXX0sezIzOlsyLDI5XSwzMzpbMiwyOV0sNTQ6WzIsMjld
LDY1OlsyLDI5XSw2ODpbMiwyOV0sNzI6WzIsMjldLDc1OlsyLDI5XSw4MDpbMiwyOV0sODE6WzIs
MjldLDgyOlsyLDI5XSw4MzpbMiwyOV0sODQ6WzIsMjldLDg1OlsyLDI5XX0sezE0OlsyLDE1XSwx
NTpbMiwxNV0sMTk6WzIsMTVdLDI5OlsyLDE1XSwzNDpbMiwxNV0sMzk6WzIsMTVdLDQ0OlsyLDE1
XSw0NzpbMiwxNV0sNDg6WzIsMTVdLDUxOlsyLDE1XSw1NTpbMiwxNV0sNjA6WzIsMTVdfSx7NzI6
WzEsMTM4XSw3NzpbMSwxMzddfSx7NzI6WzIsMTAwXSw3NzpbMiwxMDBdfSx7MTQ6WzIsMTZdLDE1
OlsyLDE2XSwxOTpbMiwxNl0sMjk6WzIsMTZdLDM0OlsyLDE2XSw0NDpbMiwxNl0sNDc6WzIsMTZd
LDQ4OlsyLDE2XSw1MTpbMiwxNl0sNTU6WzIsMTZdLDYwOlsyLDE2XX0sezMzOlsxLDEzOV19LHsz
MzpbMiw3NV19LHszMzpbMiwzMl19LHs3MjpbMiwxMDFdLDc3OlsyLDEwMV19LHsxNDpbMiwxN10s
MTU6WzIsMTddLDE5OlsyLDE3XSwyOTpbMiwxN10sMzQ6WzIsMTddLDM5OlsyLDE3XSw0NDpbMiwx
N10sNDc6WzIsMTddLDQ4OlsyLDE3XSw1MTpbMiwxN10sNTU6WzIsMTddLDYwOlsyLDE3XX1dLGRl
ZmF1bHRBY3Rpb25zOns0OlsyLDFdLDU1OlsyLDU1XSw1NzpbMiwyMF0sNjE6WzIsNTddLDc0Olsy
LDgxXSw4MzpbMiw4NV0sODc6WzIsMThdLDkxOlsyLDg5XSwxMDI6WzIsNTNdLDEwNTpbMiw5M10s
MTExOlsyLDE5XSwxMTI6WzIsNzddLDExNzpbMiw5N10sMTIwOlsyLDYzXSwxMjM6WzIsNjldLDEy
NDpbMiwxMl0sMTM2OlsyLDc1XSwxMzc6WzIsMzJdfSxwYXJzZUVycm9yOmZ1bmN0aW9uKGEsYil7
dGhyb3cgbmV3IEVycm9yKGEpfSxwYXJzZTpmdW5jdGlvbihhKXtmdW5jdGlvbiBiKCl7dmFyIGE7
cmV0dXJuIGE9Yy5sZXhlci5sZXgoKXx8MSwibnVtYmVyIiE9dHlwZW9mIGEmJihhPWMuc3ltYm9s
c19bYV18fGEpLGF9dmFyIGM9dGhpcyxkPVswXSxlPVtudWxsXSxmPVtdLGc9dGhpcy50YWJsZSxo
PSIiLGk9MCxqPTAsaz0wO3RoaXMubGV4ZXIuc2V0SW5wdXQoYSksCit0aGlzLmxleGVyLnl5PXRo
aXMueXksdGhpcy55eS5sZXhlcj10aGlzLmxleGVyLHRoaXMueXkucGFyc2VyPXRoaXMsInVuZGVm
aW5lZCI9PXR5cGVvZiB0aGlzLmxleGVyLnl5bGxvYyYmKHRoaXMubGV4ZXIueXlsbG9jPXt9KTt2
YXIgbD10aGlzLmxleGVyLnl5bGxvYztmLnB1c2gobCk7dmFyIG09dGhpcy5sZXhlci5vcHRpb25z
JiZ0aGlzLmxleGVyLm9wdGlvbnMucmFuZ2VzOyJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLnl5LnBh
cnNlRXJyb3ImJih0aGlzLnBhcnNlRXJyb3I9dGhpcy55eS5wYXJzZUVycm9yKTtmb3IodmFyIG4s
byxwLHEscixzLHQsdSx2LHc9e307Oyl7aWYocD1kW2QubGVuZ3RoLTFdLHRoaXMuZGVmYXVsdEFj
dGlvbnNbcF0/cT10aGlzLmRlZmF1bHRBY3Rpb25zW3BdOihudWxsIT09biYmInVuZGVmaW5lZCIh
PXR5cGVvZiBufHwobj1iKCkpLHE9Z1twXSYmZ1twXVtuXSksInVuZGVmaW5lZCI9PXR5cGVvZiBx
fHwhcS5sZW5ndGh8fCFxWzBdKXt2YXIgeD0iIjtpZighayl7dj1bXTtmb3IocyBpbiBnW3BdKXRo
aXMudGVybWluYWxzX1tzXSYmcz4yJiZ2LnB1c2goIiciK3RoaXMudGVybWluYWxzX1tzXSsiJyIp
O3g9dGhpcy5sZXhlci5zaG93UG9zaXRpb24/IlBhcnNlIGVycm9yIG9uIGxpbmUgIisoaSsxKSsi
OlxuIit0aGlzLmxleGVyLnNob3dQb3NpdGlvbigpKyJcbkV4cGVjdGluZyAiK3Yuam9pbigiLCAi
KSsiLCBnb3QgJyIrKHRoaXMudGVybWluYWxzX1tuXXx8bikrIiciOiJQYXJzZSBlcnJvciBvbiBs
aW5lICIrKGkrMSkrIjogVW5leHBlY3RlZCAiKygxPT1uPyJlbmQgb2YgaW5wdXQiOiInIisodGhp
cy50ZXJtaW5hbHNfW25dfHxuKSsiJyIpLHRoaXMucGFyc2VFcnJvcih4LHt0ZXh0OnRoaXMubGV4
ZXIubWF0Y2gsdG9rZW46dGhpcy50ZXJtaW5hbHNfW25dfHxuLGxpbmU6dGhpcy5sZXhlci55eWxp
bmVubyxsb2M6bCxleHBlY3RlZDp2fSl9fWlmKHFbMF1pbnN0YW5jZW9mIEFycmF5JiZxLmxlbmd0
aD4xKXRocm93IG5ldyBFcnJvcigiUGFyc2UgRXJyb3I6IG11bHRpcGxlIGFjdGlvbnMgcG9zc2li
bGUgYXQgc3RhdGU6ICIrcCsiLCB0b2tlbjogIituKTtzd2l0Y2gocVswXSl7Y2FzZSAxOmQucHVz
aChuKSxlLnB1c2godGhpcy5sZXhlci55eXRleHQpLGYucHVzaCh0aGlzLmxleGVyLnl5bGxvYyks
ZC5wdXNoKHFbMV0pLG49bnVsbCxvPyhuPW8sbz1udWxsKTooaj10aGlzLmxleGVyLnl5bGVuZyxo
PXRoaXMubGV4ZXIueXl0ZXh0LGk9dGhpcy5sZXhlci55eWxpbmVubyxsPXRoaXMubGV4ZXIueXls
bG9jLGs+MCYmay0tKTticmVhaztjYXNlIDI6aWYodD10aGlzLnByb2R1Y3Rpb25zX1txWzFdXVsx
XSx3LiQ9ZVtlLmxlbmd0aC10XSx3Ll8kPXtmaXJzdF9saW5lOmZbZi5sZW5ndGgtKHR8fDEpXS5m
aXJzdF9saW5lLGxhc3RfbGluZTpmW2YubGVuZ3RoLTFdLmxhc3RfbGluZSxmaXJzdF9jb2x1bW46
ZltmLmxlbmd0aC0odHx8MSldLmZpcnN0X2NvbHVtbixsYXN0X2NvbHVtbjpmW2YubGVuZ3RoLTFd
Lmxhc3RfY29sdW1ufSxtJiYody5fJC5yYW5nZT1bZltmLmxlbmd0aC0odHx8MSldLnJhbmdlWzBd
LGZbZi5sZW5ndGgtMV0ucmFuZ2VbMV1dKSxyPXRoaXMucGVyZm9ybUFjdGlvbi5jYWxsKHcsaCxq
LGksdGhpcy55eSxxWzFdLGUsZiksInVuZGVmaW5lZCIhPXR5cGVvZiByKXJldHVybiByO3QmJihk
PWQuc2xpY2UoMCwtMSp0KjIpLGU9ZS5zbGljZSgwLC0xKnQpLGY9Zi5zbGljZSgwLC0xKnQpKSxk
LnB1c2godGhpcy5wcm9kdWN0aW9uc19bcVsxXV1bMF0pLGUucHVzaCh3LiQpLGYucHVzaCh3Ll8k
KSx1PWdbZFtkLmxlbmd0aC0yXV1bZFtkLmxlbmd0aC0xXV0sZC5wdXNoKHUpO2JyZWFrO2Nhc2Ug
MzpyZXR1cm4hMH19cmV0dXJuITB9fSxjPWZ1bmN0aW9uKCl7dmFyIGE9e0VPRjoxLHBhcnNlRXJy
b3I6ZnVuY3Rpb24oYSxiKXtpZighdGhpcy55eS5wYXJzZXIpdGhyb3cgbmV3IEVycm9yKGEpO3Ro
aXMueXkucGFyc2VyLnBhcnNlRXJyb3IoYSxiKX0sc2V0SW5wdXQ6ZnVuY3Rpb24oYSl7cmV0dXJu
IHRoaXMuX2lucHV0PWEsdGhpcy5fbW9yZT10aGlzLl9sZXNzPXRoaXMuZG9uZT0hMSx0aGlzLnl5
bGluZW5vPXRoaXMueXlsZW5nPTAsdGhpcy55eXRleHQ9dGhpcy5tYXRjaGVkPXRoaXMubWF0Y2g9
IiIsdGhpcy5jb25kaXRpb25TdGFjaz1bIklOSVRJQUwiXSx0aGlzLnl5bGxvYz17Zmlyc3RfbGlu
ZToxLGZpcnN0X2NvbHVtbjowLGxhc3RfbGluZToxLGxhc3RfY29sdW1uOjB9LHRoaXMub3B0aW9u
cy5yYW5nZXMmJih0aGlzLnl5bGxvYy5yYW5nZT1bMCwwXSksdGhpcy5vZmZzZXQ9MCx0aGlzfSxp
bnB1dDpmdW5jdGlvbigpe3ZhciBhPXRoaXMuX2lucHV0WzBdO3RoaXMueXl0ZXh0Kz1hLHRoaXMu
eXlsZW5nKyssdGhpcy5vZmZzZXQrKyx0aGlzLm1hdGNoKz1hLHRoaXMubWF0Y2hlZCs9YTt2YXIg
Yj1hLm1hdGNoKC8oPzpcclxuP3xcbikuKi9nKTtyZXR1cm4gYj8odGhpcy55eWxpbmVubysrLHRo
aXMueXlsbG9jLmxhc3RfbGluZSsrKTp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbisrLHRoaXMub3B0
aW9ucy5yYW5nZXMmJnRoaXMueXlsbG9jLnJhbmdlWzFdKyssdGhpcy5faW5wdXQ9dGhpcy5faW5w
dXQuc2xpY2UoMSksYX0sdW5wdXQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5sZW5ndGgsYz1hLnNwbGl0
KC8oPzpcclxuP3xcbikvZyk7dGhpcy5faW5wdXQ9YSt0aGlzLl9pbnB1dCx0aGlzLnl5dGV4dD10
aGlzLnl5dGV4dC5zdWJzdHIoMCx0aGlzLnl5dGV4dC5sZW5ndGgtYi0xKSx0aGlzLm9mZnNldC09
Yjt2YXIgZD10aGlzLm1hdGNoLnNwbGl0KC8oPzpcclxuP3xcbikvZyk7dGhpcy5tYXRjaD10aGlz
Lm1hdGNoLnN1YnN0cigwLHRoaXMubWF0Y2gubGVuZ3RoLTEpLHRoaXMubWF0Y2hlZD10aGlzLm1h
dGNoZWQuc3Vic3RyKDAsdGhpcy5tYXRjaGVkLmxlbmd0aC0xKSxjLmxlbmd0aC0xJiYodGhpcy55
eWxpbmVuby09Yy5sZW5ndGgtMSk7dmFyIGU9dGhpcy55eWxsb2MucmFuZ2U7cmV0dXJuIHRoaXMu
eXlsbG9jPXtmaXJzdF9saW5lOnRoaXMueXlsbG9jLmZpcnN0X2xpbmUsbGFzdF9saW5lOnRoaXMu
eXlsaW5lbm8rMSxmaXJzdF9jb2x1bW46dGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLGxhc3RfY29s
dW1uOmM/KGMubGVuZ3RoPT09ZC5sZW5ndGg/dGhpcy55eWxsb2MuZmlyc3RfY29sdW1uOjApK2Rb
ZC5sZW5ndGgtYy5sZW5ndGhdLmxlbmd0aC1jWzBdLmxlbmd0aDp0aGlzLnl5bGxvYy5maXJzdF9j
b2x1bW4tYn0sdGhpcy5vcHRpb25zLnJhbmdlcyYmKHRoaXMueXlsbG9jLnJhbmdlPVtlWzBdLGVb
MF0rdGhpcy55eWxlbmctYl0pLHRoaXN9LG1vcmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbW9y
ZT0hMCx0aGlzfSxsZXNzOmZ1bmN0aW9uKGEpe3RoaXMudW5wdXQodGhpcy5tYXRjaC5zbGljZShh
KSl9LHBhc3RJbnB1dDpmdW5jdGlvbigpe3ZhciBhPXRoaXMubWF0Y2hlZC5zdWJzdHIoMCx0aGlz
Lm1hdGNoZWQubGVuZ3RoLXRoaXMubWF0Y2gubGVuZ3RoKTtyZXR1cm4oYS5sZW5ndGg+MjA/Ii4u
LiI6IiIpK2Euc3Vic3RyKC0yMCkucmVwbGFjZSgvXG4vZywiIil9LHVwY29taW5nSW5wdXQ6ZnVu
Y3Rpb24oKXt2YXIgYT10aGlzLm1hdGNoO3JldHVybiBhLmxlbmd0aDwyMCYmKGErPXRoaXMuX2lu
cHV0LnN1YnN0cigwLDIwLWEubGVuZ3RoKSksKGEuc3Vic3RyKDAsMjApKyhhLmxlbmd0aD4yMD8i
Li4uIjoiIikpLnJlcGxhY2UoL1xuL2csIiIpfSxzaG93UG9zaXRpb246ZnVuY3Rpb24oKXt2YXIg
YT10aGlzLnBhc3RJbnB1dCgpLGI9bmV3IEFycmF5KGEubGVuZ3RoKzEpLmpvaW4oIi0iKTtyZXR1
cm4gYSt0aGlzLnVwY29taW5nSW5wdXQoKSsiXG4iK2IrIl4ifSxuZXh0OmZ1bmN0aW9uKCl7aWYo
dGhpcy5kb25lKXJldHVybiB0aGlzLkVPRjt0aGlzLl9pbnB1dHx8KHRoaXMuZG9uZT0hMCk7dmFy
IGEsYixjLGQsZTt0aGlzLl9tb3JlfHwodGhpcy55eXRleHQ9IiIsdGhpcy5tYXRjaD0iIik7Zm9y
KHZhciBmPXRoaXMuX2N1cnJlbnRSdWxlcygpLGc9MDtnPGYubGVuZ3RoJiYoYz10aGlzLl9pbnB1
dC5tYXRjaCh0aGlzLnJ1bGVzW2ZbZ11dKSwhY3x8YiYmIShjWzBdLmxlbmd0aD5iWzBdLmxlbmd0
aCl8fChiPWMsZD1nLHRoaXMub3B0aW9ucy5mbGV4KSk7ZysrKTtyZXR1cm4gYj8oZT1iWzBdLm1h
dGNoKC8oPzpcclxuP3xcbikuKi9nKSxlJiYodGhpcy55eWxpbmVubys9ZS5sZW5ndGgpLHRoaXMu
eXlsbG9jPXtmaXJzdF9saW5lOnRoaXMueXlsbG9jLmxhc3RfbGluZSxsYXN0X2xpbmU6dGhpcy55
eWxpbmVubysxLGZpcnN0X2NvbHVtbjp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbixsYXN0X2NvbHVt
bjplP2VbZS5sZW5ndGgtMV0ubGVuZ3RoLWVbZS5sZW5ndGgtMV0ubWF0Y2goL1xyP1xuPy8pWzBd
Lmxlbmd0aDp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbitiWzBdLmxlbmd0aH0sdGhpcy55eXRleHQr
PWJbMF0sdGhpcy5tYXRjaCs9YlswXSx0aGlzLm1hdGNoZXM9Yix0aGlzLnl5bGVuZz10aGlzLnl5
dGV4dC5sZW5ndGgsdGhpcy5vcHRpb25zLnJhbmdlcyYmKHRoaXMueXlsbG9jLnJhbmdlPVt0aGlz
Lm9mZnNldCx0aGlzLm9mZnNldCs9dGhpcy55eWxlbmddKSx0aGlzLl9tb3JlPSExLHRoaXMuX2lu
cHV0PXRoaXMuX2lucHV0LnNsaWNlKGJbMF0ubGVuZ3RoKSx0aGlzLm1hdGNoZWQrPWJbMF0sYT10
aGlzLnBlcmZvcm1BY3Rpb24uY2FsbCh0aGlzLHRoaXMueXksdGhpcyxmW2RdLHRoaXMuY29uZGl0
aW9uU3RhY2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgtMV0pLHRoaXMuZG9uZSYmdGhpcy5f
aW5wdXQmJih0aGlzLmRvbmU9ITEpLGE/YTp2b2lkIDApOiIiPT09dGhpcy5faW5wdXQ/dGhpcy5F
T0Y6dGhpcy5wYXJzZUVycm9yKCJMZXhpY2FsIGVycm9yIG9uIGxpbmUgIisodGhpcy55eWxpbmVu
bysxKSsiLiBVbnJlY29nbml6ZWQgdGV4dC5cbiIrdGhpcy5zaG93UG9zaXRpb24oKSx7dGV4dDoi
Iix0b2tlbjpudWxsLGxpbmU6dGhpcy55eWxpbmVub30pfSxsZXg6ZnVuY3Rpb24oKXt2YXIgYT10
aGlzLm5leHQoKTtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIGE/YTp0aGlzLmxleCgpfSxiZWdp
bjpmdW5jdGlvbihhKXt0aGlzLmNvbmRpdGlvblN0YWNrLnB1c2goYSl9LHBvcFN0YXRlOmZ1bmN0
aW9uKCl7cmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2sucG9wKCl9LF9jdXJyZW50UnVsZXM6ZnVu
Y3Rpb24oKXtyZXR1cm4gdGhpcy5jb25kaXRpb25zW3RoaXMuY29uZGl0aW9uU3RhY2tbdGhpcy5j
b25kaXRpb25TdGFjay5sZW5ndGgtMV1dLnJ1bGVzfSx0b3BTdGF0ZTpmdW5jdGlvbigpe3JldHVy
biB0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTJdfSxwdXNo
U3RhdGU6ZnVuY3Rpb24oYSl7dGhpcy5iZWdpbihhKX19O3JldHVybiBhLm9wdGlvbnM9e30sYS5w
ZXJmb3JtQWN0aW9uPWZ1bmN0aW9uKGEsYixjLGQpe2Z1bmN0aW9uIGUoYSxjKXtyZXR1cm4gYi55
eXRleHQ9Yi55eXRleHQuc3Vic3RyKGEsYi55eWxlbmctYyl9c3dpdGNoKGMpe2Nhc2UgMDppZigi
XFxcXCI9PT1iLnl5dGV4dC5zbGljZSgtMik/KGUoMCwxKSx0aGlzLmJlZ2luKCJtdSIpKToiXFwi
PT09Yi55eXRleHQuc2xpY2UoLTEpPyhlKDAsMSksdGhpcy5iZWdpbigiZW11IikpOnRoaXMuYmVn
aW4oIm11IiksYi55eXRleHQpcmV0dXJuIDE1O2JyZWFrO2Nhc2UgMTpyZXR1cm4gMTU7Y2FzZSAy
OnJldHVybiB0aGlzLnBvcFN0YXRlKCksMTU7Y2FzZSAzOnJldHVybiB0aGlzLmJlZ2luKCJyYXci
KSwxNTtjYXNlIDQ6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSwicmF3Ij09PXRoaXMuY29uZGl0aW9u
U3RhY2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgtMV0/MTU6KGIueXl0ZXh0PWIueXl0ZXh0
LnN1YnN0cig1LGIueXlsZW5nLTkpLCJFTkRfUkFXX0JMT0NLIik7Y2FzZSA1OnJldHVybiAxNTtj
YXNlIDY6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSwxNDtjYXNlIDc6cmV0dXJuIDY1O2Nhc2UgODpy
ZXR1cm4gNjg7Y2FzZSA5OnJldHVybiAxOTtjYXNlIDEwOnJldHVybiB0aGlzLnBvcFN0YXRlKCks
dGhpcy5iZWdpbigicmF3IiksMjM7Y2FzZSAxMTpyZXR1cm4gNTU7Y2FzZSAxMjpyZXR1cm4gNjA7
Y2FzZSAxMzpyZXR1cm4gMjk7Y2FzZSAxNDpyZXR1cm4gNDc7Y2FzZSAxNTpyZXR1cm4gdGhpcy5w
b3BTdGF0ZSgpLDQ0O2Nhc2UgMTY6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSw0NDtjYXNlIDE3OnJl
dHVybiAzNDtjYXNlIDE4OnJldHVybiAzOTtjYXNlIDE5OnJldHVybiA1MTtjYXNlIDIwOnJldHVy
biA0ODtjYXNlIDIxOnRoaXMudW5wdXQoYi55eXRleHQpLHRoaXMucG9wU3RhdGUoKSx0aGlzLmJl
Z2luKCJjb20iKTticmVhaztjYXNlIDIyOnJldHVybiB0aGlzLnBvcFN0YXRlKCksMTQ7Y2FzZSAy
MzpyZXR1cm4gNDg7Y2FzZSAyNDpyZXR1cm4gNzM7Y2FzZSAyNTpyZXR1cm4gNzI7Y2FzZSAyNjpy
ZXR1cm4gNzI7Y2FzZSAyNzpyZXR1cm4gODc7Y2FzZSAyODpicmVhaztjYXNlIDI5OnJldHVybiB0
aGlzLnBvcFN0YXRlKCksNTQ7Y2FzZSAzMDpyZXR1cm4gdGhpcy5wb3BTdGF0ZSgpLDMzO2Nhc2Ug
MzE6cmV0dXJuIGIueXl0ZXh0PWUoMSwyKS5yZXBsYWNlKC9cXCIvZywnIicpLDgwO2Nhc2UgMzI6
cmV0dXJuIGIueXl0ZXh0PWUoMSwyKS5yZXBsYWNlKC9cXCcvZywiJyIpLDgwO2Nhc2UgMzM6cmV0
dXJuIDg1O2Nhc2UgMzQ6cmV0dXJuIDgyO2Nhc2UgMzU6cmV0dXJuIDgyO2Nhc2UgMzY6cmV0dXJu
IDgzO2Nhc2UgMzc6cmV0dXJuIDg0O2Nhc2UgMzg6cmV0dXJuIDgxO2Nhc2UgMzk6cmV0dXJuIDc1
O2Nhc2UgNDA6cmV0dXJuIDc3O2Nhc2UgNDE6cmV0dXJuIDcyO2Nhc2UgNDI6cmV0dXJuIGIueXl0
ZXh0PWIueXl0ZXh0LnJlcGxhY2UoL1xcKFtcXFxdXSkvZywiJDEiKSw3MjtjYXNlIDQzOnJldHVy
biJJTlZBTElEIjtjYXNlIDQ0OnJldHVybiA1fX0sYS5ydWxlcz1bL14oPzpbXlx4MDBdKj8oPz0o
XHtceykpKS8sL14oPzpbXlx4MDBdKykvLC9eKD86W15ceDAwXXsyLH0/KD89KFx7XHt8XFxce1x7
fFxcXFxce1x7fCQpKSkvLC9eKD86XHtce1x7XHsoPz1bXlwvXSkpLywvXig/Olx7XHtce1x7XC9b
XlxzISIjJS0sXC5cLzstPkBcWy1cXmBcey1+XSsoPz1bPX1cc1wvLl0pXH1cfVx9XH0pLywvXig/
OlteXHgwMF0qPyg/PShce1x7XHtceykpKS8sL14oPzpbXHNcU10qPy0tKH4pP1x9XH0pLywvXig/
OlwoKS8sL14oPzpcKSkvLC9eKD86XHtce1x7XHspLywvXig/Olx9XH1cfVx9KS8sL14oPzpce1x7
KH4pPz4pLywvXig/Olx7XHsofik/Iz4pLywvXig/Olx7XHsofik/I1wqPykvLC9eKD86XHtceyh+
KT9cLykvLC9eKD86XHtceyh+KT9cXlxzKih+KT9cfVx9KS8sL14oPzpce1x7KH4pP1xzKmVsc2Vc
cyoofik/XH1cfSkvLC9eKD86XHtceyh+KT9cXikvLC9eKD86XHtceyh+KT9ccyplbHNlXGIpLywv
Xig/Olx7XHsofik/XHspLywvXig/Olx7XHsofik/JikvLC9eKD86XHtceyh+KT8hLS0pLywvXig/
Olx7XHsofik/IVtcc1xTXSo/XH1cfSkvLC9eKD86XHtceyh+KT9cKj8pLywvXig/Oj0pLywvXig/
OlwuXC4pLywvXig/OlwuKD89KFs9fn1cc1wvLil8XSkpKS8sL14oPzpbXC8uXSkvLC9eKD86XHMr
KS8sL14oPzpcfSh+KT9cfVx9KS8sL14oPzoofik/XH1cfSkvLC9eKD86IihcXFsiXXxbXiJdKSoi
KS8sL14oPzonKFxcWyddfFteJ10pKicpLywvXig/OkApLywvXig/OnRydWUoPz0oW359XHMpXSkp
KS8sL14oPzpmYWxzZSg/PShbfn1ccyldKSkpLywvXig/OnVuZGVmaW5lZCg/PShbfn1ccyldKSkp
LywvXig/Om51bGwoPz0oW359XHMpXSkpKS8sL14oPzotP1swLTldKyg/OlwuWzAtOV0rKT8oPz0o
W359XHMpXSkpKS8sL14oPzphc1xzK1x8KS8sL14oPzpcfCkvLC9eKD86KFteXHMhIiMlLSxcLlwv
Oy0+QFxbLVxeYFx7LX5dKyg/PShbPX59XHNcLy4pfF0pKSkpLywvXig/OlxbKFxcXF18W15cXV0p
KlxdKS8sL14oPzouKS8sL14oPzokKS9dLGEuY29uZGl0aW9ucz17bXU6e3J1bGVzOls3LDgsOSwx
MCwxMSwxMiwxMywxNCwxNSwxNiwxNywxOCwxOSwyMCwyMSwyMiwyMywyNCwyNSwyNiwyNywyOCwy
OSwzMCwzMSwzMiwzMywzNCwzNSwzNiwzNywzOCwzOSw0MCw0MSw0Miw0Myw0NF0saW5jbHVzaXZl
OiExfSxlbXU6e3J1bGVzOlsyXSxpbmNsdXNpdmU6ITF9LGNvbTp7cnVsZXM6WzZdLGluY2x1c2l2
ZTohMX0scmF3OntydWxlczpbMyw0LDVdLGluY2x1c2l2ZTohMX0sSU5JVElBTDp7cnVsZXM6WzAs
MSw0NF0saW5jbHVzaXZlOiEwfX0sYX0oKTtyZXR1cm4gYi5sZXhlcj1jLGEucHJvdG90eXBlPWIs
Yi5QYXJzZXI9YSxuZXcgYX0oKTthLl9fZXNNb2R1bGU9ITAsYVsiZGVmYXVsdCJdPWJ9KSxkZWZp
bmUoImhhbmRsZWJhcnMvY29tcGlsZXIvdmlzaXRvciIsWyJleHBvcnRzIiwibW9kdWxlIiwiLi4v
ZXhjZXB0aW9uIl0sZnVuY3Rpb24oYSxiLGMpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBkKGEpe3Jl
dHVybiBhJiZhLl9fZXNNb2R1bGU/YTp7ImRlZmF1bHQiOmF9fWZ1bmN0aW9uIGUoKXt0aGlzLnBh
cmVudHM9W119ZnVuY3Rpb24gZihhKXt0aGlzLmFjY2VwdFJlcXVpcmVkKGEsInBhdGgiKSx0aGlz
LmFjY2VwdEFycmF5KGEucGFyYW1zKSx0aGlzLmFjY2VwdEtleShhLCJoYXNoIil9ZnVuY3Rpb24g
ZyhhKXtmLmNhbGwodGhpcyxhKSx0aGlzLmFjY2VwdEtleShhLCJwcm9ncmFtIiksdGhpcy5hY2Nl
cHRLZXkoYSwiaW52ZXJzZSIpfWZ1bmN0aW9uIGgoYSl7dGhpcy5hY2NlcHRSZXF1aXJlZChhLCJu
YW1lIiksdGhpcy5hY2NlcHRBcnJheShhLnBhcmFtcyksdGhpcy5hY2NlcHRLZXkoYSwiaGFzaCIp
fXZhciBpPWQoYyk7ZS5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmUsbXV0YXRpbmc6ITEsYWNjZXB0
S2V5OmZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5hY2NlcHQoYVtiXSk7aWYodGhpcy5tdXRhdGlu
Zyl7aWYoYyYmIWUucHJvdG90eXBlW2MudHlwZV0pdGhyb3cgbmV3IGlbImRlZmF1bHQiXSgnVW5l
eHBlY3RlZCBub2RlIHR5cGUgIicrYy50eXBlKyciIGZvdW5kIHdoZW4gYWNjZXB0aW5nICcrYisi
IG9uICIrYS50eXBlKTthW2JdPWN9fSxhY2NlcHRSZXF1aXJlZDpmdW5jdGlvbihhLGIpe2lmKHRo
aXMuYWNjZXB0S2V5KGEsYiksIWFbYl0pdGhyb3cgbmV3IGlbImRlZmF1bHQiXShhLnR5cGUrIiBy
ZXF1aXJlcyAiK2IpfSxhY2NlcHRBcnJheTpmdW5jdGlvbihhKXtmb3IodmFyIGI9MCxjPWEubGVu
Z3RoO2I8YztiKyspdGhpcy5hY2NlcHRLZXkoYSxiKSxhW2JdfHwoYS5zcGxpY2UoYiwxKSxiLS0s
Yy0tKX0sYWNjZXB0OmZ1bmN0aW9uKGEpe2lmKGEpe2lmKCF0aGlzW2EudHlwZV0pdGhyb3cgbmV3
IGlbImRlZmF1bHQiXSgiVW5rbm93biB0eXBlOiAiK2EudHlwZSxhKTt0aGlzLmN1cnJlbnQmJnRo
aXMucGFyZW50cy51bnNoaWZ0KHRoaXMuY3VycmVudCksdGhpcy5jdXJyZW50PWE7dmFyIGI9dGhp
c1thLnR5cGVdKGEpO3JldHVybiB0aGlzLmN1cnJlbnQ9dGhpcy5wYXJlbnRzLnNoaWZ0KCksIXRo
aXMubXV0YXRpbmd8fGI/YjpiIT09ITE/YTp2b2lkIDB9fSxQcm9ncmFtOmZ1bmN0aW9uKGEpe3Ro
aXMuYWNjZXB0QXJyYXkoYS5ib2R5KX0sTXVzdGFjaGVTdGF0ZW1lbnQ6ZixEZWNvcmF0b3I6ZixC
bG9ja1N0YXRlbWVudDpnLERlY29yYXRvckJsb2NrOmcsUGFydGlhbFN0YXRlbWVudDpoLFBhcnRp
YWxCbG9ja1N0YXRlbWVudDpmdW5jdGlvbihhKXtoLmNhbGwodGhpcyxhKSx0aGlzLmFjY2VwdEtl
eShhLCJwcm9ncmFtIil9LENvbnRlbnRTdGF0ZW1lbnQ6ZnVuY3Rpb24oKXt9LENvbW1lbnRTdGF0
ZW1lbnQ6ZnVuY3Rpb24oKXt9LFN1YkV4cHJlc3Npb246ZixQYXRoRXhwcmVzc2lvbjpmdW5jdGlv
bigpe30sU3RyaW5nTGl0ZXJhbDpmdW5jdGlvbigpe30sTnVtYmVyTGl0ZXJhbDpmdW5jdGlvbigp
e30sQm9vbGVhbkxpdGVyYWw6ZnVuY3Rpb24oKXt9LFVuZGVmaW5lZExpdGVyYWw6ZnVuY3Rpb24o
KXt9LE51bGxMaXRlcmFsOmZ1bmN0aW9uKCl7fSxIYXNoOmZ1bmN0aW9uKGEpe3RoaXMuYWNjZXB0
QXJyYXkoYS5wYWlycyl9LEhhc2hQYWlyOmZ1bmN0aW9uKGEpe3RoaXMuYWNjZXB0UmVxdWlyZWQo
YSwidmFsdWUiKX19LGIuZXhwb3J0cz1lfSksZGVmaW5lKCJoYW5kbGViYXJzL2NvbXBpbGVyL3do
aXRlc3BhY2UtY29udHJvbCIsWyJleHBvcnRzIiwibW9kdWxlIiwiLi92aXNpdG9yIl0sZnVuY3Rp
b24oYSxiLGMpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBkKGEpe3JldHVybiBhJiZhLl9fZXNNb2R1
bGU/YTp7ImRlZmF1bHQiOmF9fWZ1bmN0aW9uIGUoKXt2YXIgYT1hcmd1bWVudHMubGVuZ3RoPD0w
fHx2b2lkIDA9PT1hcmd1bWVudHNbMF0/e306YXJndW1lbnRzWzBdO3RoaXMub3B0aW9ucz1hfWZ1
bmN0aW9uIGYoYSxiLGMpe3ZvaWQgMD09PWImJihiPWEubGVuZ3RoKTt2YXIgZD1hW2ItMV0sZT1h
W2ItMl07cmV0dXJuIGQ/IkNvbnRlbnRTdGF0ZW1lbnQiPT09ZC50eXBlPyhlfHwhYz8vXHI/XG5c
cyo/JC86LyhefFxyP1xuKVxzKj8kLykudGVzdChkLm9yaWdpbmFsKTp2b2lkIDA6Y31mdW5jdGlv
biBnKGEsYixjKXt2b2lkIDA9PT1iJiYoYj0tMSk7dmFyIGQ9YVtiKzFdLGU9YVtiKzJdO3JldHVy
biBkPyJDb250ZW50U3RhdGVtZW50Ij09PWQudHlwZT8oZXx8IWM/L15ccyo/XHI/XG4vOi9eXHMq
Pyhccj9cbnwkKS8pLnRlc3QoZC5vcmlnaW5hbCk6dm9pZCAwOmN9ZnVuY3Rpb24gaChhLGIsYyl7
dmFyIGQ9YVtudWxsPT1iPzA6YisxXTtpZihkJiYiQ29udGVudFN0YXRlbWVudCI9PT1kLnR5cGUm
JihjfHwhZC5yaWdodFN0cmlwcGVkKSl7dmFyIGU9ZC52YWx1ZTtkLnZhbHVlPWQudmFsdWUucmVw
bGFjZShjPy9eXHMrLzovXlsgXHRdKlxyP1xuPy8sIiIpLGQucmlnaHRTdHJpcHBlZD1kLnZhbHVl
IT09ZX19ZnVuY3Rpb24gaShhLGIsYyl7dmFyIGQ9YVtudWxsPT1iP2EubGVuZ3RoLTE6Yi0xXTtp
ZihkJiYiQ29udGVudFN0YXRlbWVudCI9PT1kLnR5cGUmJihjfHwhZC5sZWZ0U3RyaXBwZWQpKXt2
YXIgZT1kLnZhbHVlO3JldHVybiBkLnZhbHVlPWQudmFsdWUucmVwbGFjZShjPy9ccyskLzovWyBc
dF0rJC8sIiIpLGQubGVmdFN0cmlwcGVkPWQudmFsdWUhPT1lLGQubGVmdFN0cmlwcGVkfX12YXIg
aj1kKGMpO2UucHJvdG90eXBlPW5ldyBqWyJkZWZhdWx0Il0sZS5wcm90b3R5cGUuUHJvZ3JhbT1m
dW5jdGlvbihhKXt2YXIgYj0hdGhpcy5vcHRpb25zLmlnbm9yZVN0YW5kYWxvbmUsYz0hdGhpcy5p
c1Jvb3RTZWVuO3RoaXMuaXNSb290U2Vlbj0hMDtmb3IodmFyIGQ9YS5ib2R5LGU9MCxqPWQubGVu
Z3RoO2U8ajtlKyspe3ZhciBrPWRbZV0sbD10aGlzLmFjY2VwdChrKTtpZihsKXt2YXIgbT1mKGQs
ZSxjKSxuPWcoZCxlLGMpLG89bC5vcGVuU3RhbmRhbG9uZSYmbSxwPWwuY2xvc2VTdGFuZGFsb25l
JiZuLHE9bC5pbmxpbmVTdGFuZGFsb25lJiZtJiZuO2wuY2xvc2UmJmgoZCxlLCEwKSxsLm9wZW4m
JmkoZCxlLCEwKSxiJiZxJiYoaChkLGUpLGkoZCxlKSYmIlBhcnRpYWxTdGF0ZW1lbnQiPT09ay50
eXBlJiYoay5pbmRlbnQ9LyhbIFx0XSskKS8uZXhlYyhkW2UtMV0ub3JpZ2luYWwpWzFdKSksYiYm
byYmKGgoKGsucHJvZ3JhbXx8ay5pbnZlcnNlKS5ib2R5KSxpKGQsZSkpLGImJnAmJihoKGQsZSks
aSgoay5pbnZlcnNlfHxrLnByb2dyYW0pLmJvZHkpKX19cmV0dXJuIGF9LGUucHJvdG90eXBlLkJs
b2NrU3RhdGVtZW50PWUucHJvdG90eXBlLkRlY29yYXRvckJsb2NrPWUucHJvdG90eXBlLlBhcnRp
YWxCbG9ja1N0YXRlbWVudD1mdW5jdGlvbihhKXt0aGlzLmFjY2VwdChhLnByb2dyYW0pLHRoaXMu
YWNjZXB0KGEuaW52ZXJzZSk7dmFyIGI9YS5wcm9ncmFtfHxhLmludmVyc2UsYz1hLnByb2dyYW0m
JmEuaW52ZXJzZSxkPWMsZT1jO2lmKGMmJmMuY2hhaW5lZClmb3IoZD1jLmJvZHlbMF0ucHJvZ3Jh
bTtlLmNoYWluZWQ7KWU9ZS5ib2R5W2UuYm9keS5sZW5ndGgtMV0ucHJvZ3JhbTt2YXIgaj17b3Bl
bjphLm9wZW5TdHJpcC5vcGVuLGNsb3NlOmEuY2xvc2VTdHJpcC5jbG9zZSxvcGVuU3RhbmRhbG9u
ZTpnKGIuYm9keSksY2xvc2VTdGFuZGFsb25lOmYoKGR8fGIpLmJvZHkpfTtpZihhLm9wZW5TdHJp
cC5jbG9zZSYmaChiLmJvZHksbnVsbCwhMCksYyl7dmFyIGs9YS5pbnZlcnNlU3RyaXA7ay5vcGVu
JiZpKGIuYm9keSxudWxsLCEwKSxrLmNsb3NlJiZoKGQuYm9keSxudWxsLCEwKSxhLmNsb3NlU3Ry
aXAub3BlbiYmaShlLmJvZHksbnVsbCwhMCksIXRoaXMub3B0aW9ucy5pZ25vcmVTdGFuZGFsb25l
JiZmKGIuYm9keSkmJmcoZC5ib2R5KSYmKGkoYi5ib2R5KSxoKGQuYm9keSkpfWVsc2UgYS5jbG9z
ZVN0cmlwLm9wZW4mJmkoYi5ib2R5LG51bGwsITApO3JldHVybiBqfSxlLnByb3RvdHlwZS5EZWNv
cmF0b3I9ZS5wcm90b3R5cGUuTXVzdGFjaGVTdGF0ZW1lbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGEu
c3RyaXB9LGUucHJvdG90eXBlLlBhcnRpYWxTdGF0ZW1lbnQ9ZS5wcm90b3R5cGUuQ29tbWVudFN0
YXRlbWVudD1mdW5jdGlvbihhKXt2YXIgYj1hLnN0cmlwfHx7fTtyZXR1cm57aW5saW5lU3RhbmRh
bG9uZTohMCxvcGVuOmIub3BlbixjbG9zZTpiLmNsb3NlfX0sYi5leHBvcnRzPWV9KSxkZWZpbmUo
ImhhbmRsZWJhcnMvY29tcGlsZXIvaGVscGVycyIsWyJleHBvcnRzIiwiLi4vZXhjZXB0aW9uIl0s
ZnVuY3Rpb24oYSxiKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYyhhKXtyZXR1cm4gYSYmYS5fX2Vz
TW9kdWxlP2E6eyJkZWZhdWx0IjphfX1mdW5jdGlvbiBkKGEsYil7aWYoYj1iLnBhdGg/Yi5wYXRo
Lm9yaWdpbmFsOmIsYS5wYXRoLm9yaWdpbmFsIT09Yil7dmFyIGM9e2xvYzphLnBhdGgubG9jfTt0
aHJvdyBuZXcgb1siZGVmYXVsdCJdKGEucGF0aC5vcmlnaW5hbCsiIGRvZXNuJ3QgbWF0Y2ggIiti
LGMpfX1mdW5jdGlvbiBlKGEsYil7dGhpcy5zb3VyY2U9YSx0aGlzLnN0YXJ0PXtsaW5lOmIuZmly
c3RfbGluZSxjb2x1bW46Yi5maXJzdF9jb2x1bW59LHRoaXMuZW5kPXtsaW5lOmIubGFzdF9saW5l
LGNvbHVtbjpiLmxhc3RfY29sdW1ufX1mdW5jdGlvbiBmKGEpe3JldHVybi9eXFsuKlxdJC8udGVz
dChhKT9hLnN1YnN0cigxLGEubGVuZ3RoLTIpOmF9ZnVuY3Rpb24gZyhhLGIpe3JldHVybntvcGVu
OiJ+Ij09PWEuY2hhckF0KDIpLGNsb3NlOiJ+Ij09PWIuY2hhckF0KGIubGVuZ3RoLTMpfX1mdW5j
dGlvbiBoKGEpe3JldHVybiBhLnJlcGxhY2UoL15ce1x7fj9cIS0/LT8vLCIiKS5yZXBsYWNlKC8t
Py0/fj9cfVx9JC8sIiIpfWZ1bmN0aW9uIGkoYSxiLGMpe2M9dGhpcy5sb2NJbmZvKGMpO2Zvcih2
YXIgZD1hPyJAIjoiIixlPVtdLGY9MCxnPSIiLGg9MCxpPWIubGVuZ3RoO2g8aTtoKyspe3ZhciBq
PWJbaF0ucGFydCxrPWJbaF0ub3JpZ2luYWwhPT1qO2lmKGQrPShiW2hdLnNlcGFyYXRvcnx8IiIp
K2osa3x8Ii4uIiE9PWomJiIuIiE9PWomJiJ0aGlzIiE9PWopZS5wdXNoKGopO2Vsc2V7aWYoZS5s
ZW5ndGg+MCl0aHJvdyBuZXcgb1siZGVmYXVsdCJdKCJJbnZhbGlkIHBhdGg6ICIrZCx7bG9jOmN9
KTsiLi4iPT09aiYmKGYrKyxnKz0iLi4vIil9fXJldHVybnt0eXBlOiJQYXRoRXhwcmVzc2lvbiIs
ZGF0YTphLGRlcHRoOmYscGFydHM6ZSxvcmlnaW5hbDpkLGxvYzpjfX1mdW5jdGlvbiBqKGEsYixj
LGQsZSxmKXt2YXIgZz1kLmNoYXJBdCgzKXx8ZC5jaGFyQXQoMiksaD0ieyIhPT1nJiYiJiIhPT1n
LGk9L1wqLy50ZXN0KGQpO3JldHVybnt0eXBlOmk/IkRlY29yYXRvciI6Ik11c3RhY2hlU3RhdGVt
ZW50IixwYXRoOmEscGFyYW1zOmIsaGFzaDpjLGVzY2FwZWQ6aCxzdHJpcDplLGxvYzp0aGlzLmxv
Y0luZm8oZil9fWZ1bmN0aW9uIGsoYSxiLGMsZSl7ZChhLGMpLGU9dGhpcy5sb2NJbmZvKGUpO3Zh
ciBmPXt0eXBlOiJQcm9ncmFtIixib2R5OmIsc3RyaXA6e30sbG9jOmV9O3JldHVybnt0eXBlOiJC
bG9ja1N0YXRlbWVudCIscGF0aDphLnBhdGgscGFyYW1zOmEucGFyYW1zLGhhc2g6YS5oYXNoLHBy
b2dyYW06ZixvcGVuU3RyaXA6e30saW52ZXJzZVN0cmlwOnt9LGNsb3NlU3RyaXA6e30sbG9jOmV9
fWZ1bmN0aW9uIGwoYSxiLGMsZSxmLGcpe2UmJmUucGF0aCYmZChhLGUpO3ZhciBoPS9cKi8udGVz
dChhLm9wZW4pO2IuYmxvY2tQYXJhbXM9YS5ibG9ja1BhcmFtczt2YXIgaT12b2lkIDAsaj12b2lk
IDA7aWYoYyl7aWYoaCl0aHJvdyBuZXcgb1siZGVmYXVsdCJdKCJVbmV4cGVjdGVkIGludmVyc2Ug
YmxvY2sgb24gZGVjb3JhdG9yIixjKTtjLmNoYWluJiYoYy5wcm9ncmFtLmJvZHlbMF0uY2xvc2VT
dHJpcD1lLnN0cmlwKSxqPWMuc3RyaXAsaT1jLnByb2dyYW19cmV0dXJuIGYmJihmPWksaT1iLGI9
Zikse3R5cGU6aD8iRGVjb3JhdG9yQmxvY2siOiJCbG9ja1N0YXRlbWVudCIscGF0aDphLnBhdGgs
cGFyYW1zOmEucGFyYW1zLGhhc2g6YS5oYXNoLHByb2dyYW06YixpbnZlcnNlOmksb3BlblN0cmlw
OmEuc3RyaXAsaW52ZXJzZVN0cmlwOmosY2xvc2VTdHJpcDplJiZlLnN0cmlwLGxvYzp0aGlzLmxv
Y0luZm8oZyl9fWZ1bmN0aW9uIG0oYSxiKXtpZighYiYmYS5sZW5ndGgpe3ZhciBjPWFbMF0ubG9j
LGQ9YVthLmxlbmd0aC0xXS5sb2M7YyYmZCYmKGI9e3NvdXJjZTpjLnNvdXJjZSxzdGFydDp7bGlu
ZTpjLnN0YXJ0LmxpbmUsY29sdW1uOmMuc3RhcnQuY29sdW1ufSxlbmQ6e2xpbmU6ZC5lbmQubGlu
ZSxjb2x1bW46ZC5lbmQuY29sdW1ufX0pfXJldHVybnt0eXBlOiJQcm9ncmFtIixib2R5OmEsc3Ry
aXA6e30sbG9jOmJ9fWZ1bmN0aW9uIG4oYSxiLGMsZSl7cmV0dXJuIGQoYSxjKSx7dHlwZToiUGFy
dGlhbEJsb2NrU3RhdGVtZW50IixuYW1lOmEucGF0aCxwYXJhbXM6YS5wYXJhbXMsaGFzaDphLmhh
c2gscHJvZ3JhbTpiLG9wZW5TdHJpcDphLnN0cmlwLGNsb3NlU3RyaXA6YyYmYy5zdHJpcCxsb2M6
dGhpcy5sb2NJbmZvKGUpfX1hLl9fZXNNb2R1bGU9ITAsYS5Tb3VyY2VMb2NhdGlvbj1lLGEuaWQ9
ZixhLnN0cmlwRmxhZ3M9ZyxhLnN0cmlwQ29tbWVudD1oLGEucHJlcGFyZVBhdGg9aSxhLnByZXBh
cmVNdXN0YWNoZT1qLGEucHJlcGFyZVJhd0Jsb2NrPWssYS5wcmVwYXJlQmxvY2s9bCxhLnByZXBh
cmVQcm9ncmFtPW0sYS5wcmVwYXJlUGFydGlhbEJsb2NrPW47dmFyIG89YyhiKX0pLGRlZmluZSgi
aGFuZGxlYmFycy9jb21waWxlci9iYXNlIixbImV4cG9ydHMiLCIuL3BhcnNlciIsIi4vd2hpdGVz
cGFjZS1jb250cm9sIiwiLi9oZWxwZXJzIiwiLi4vdXRpbHMiXSxmdW5jdGlvbihhLGIsYyxkLGUp
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBmKGEpe3JldHVybiBhJiZhLl9fZXNNb2R1bGU/YTp7ImRl
ZmF1bHQiOmF9fWZ1bmN0aW9uIGcoYSxiKXtpZigiUHJvZ3JhbSI9PT1hLnR5cGUpcmV0dXJuIGE7
aFsiZGVmYXVsdCJdLnl5PWosai5sb2NJbmZvPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcgai5Tb3Vy
Y2VMb2NhdGlvbihiJiZiLnNyY05hbWUsYSl9O3ZhciBjPW5ldyBpWyJkZWZhdWx0Il0oYik7cmV0
dXJuIGMuYWNjZXB0KGhbImRlZmF1bHQiXS5wYXJzZShhKSl9YS5fX2VzTW9kdWxlPSEwLGEucGFy
c2U9Zzt2YXIgaD1mKGIpLGk9ZihjKTthLnBhcnNlcj1oWyJkZWZhdWx0Il07dmFyIGo9e307ZS5l
eHRlbmQoaixkKX0pLGRlZmluZSgiaGFuZGxlYmFycy9jb21waWxlci9jb21waWxlciIsWyJleHBv
cnRzIiwiLi4vZXhjZXB0aW9uIiwiLi4vdXRpbHMiLCIuL2FzdCJdLGZ1bmN0aW9uKGEsYixjLGQp
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBlKGEpe3JldHVybiBhJiZhLl9fZXNNb2R1bGU/YTp7ImRl
ZmF1bHQiOmF9fWZ1bmN0aW9uIGYoKXt9ZnVuY3Rpb24gZyhhLGIsYyl7aWYobnVsbD09YXx8InN0
cmluZyIhPXR5cGVvZiBhJiYiUHJvZ3JhbSIhPT1hLnR5cGUpdGhyb3cgbmV3IGtbImRlZmF1bHQi
XSgiWW91IG11c3QgcGFzcyBhIHN0cmluZyBvciBIYW5kbGViYXJzIEFTVCB0byBIYW5kbGViYXJz
LnByZWNvbXBpbGUuIFlvdSBwYXNzZWQgIithKTtiPWJ8fHt9LCJkYXRhImluIGJ8fChiLmRhdGE9
ITApLGIuY29tcGF0JiYoYi51c2VEZXB0aHM9ITApO3ZhciBkPWMucGFyc2UoYSxiKSxlPShuZXcg
Yy5Db21waWxlcikuY29tcGlsZShkLGIpO3JldHVybihuZXcgYy5KYXZhU2NyaXB0Q29tcGlsZXIp
LmNvbXBpbGUoZSxiKX1mdW5jdGlvbiBoKGEsYixjKXtmdW5jdGlvbiBkKCl7dmFyIGQ9Yy5wYXJz
ZShhLGIpLGU9KG5ldyBjLkNvbXBpbGVyKS5jb21waWxlKGQsYiksZj0obmV3IGMuSmF2YVNjcmlw
dENvbXBpbGVyKS5jb21waWxlKGUsYix2b2lkIDAsITApO3JldHVybiBjLnRlbXBsYXRlKGYpfWZ1
bmN0aW9uIGUoYSxiKXtyZXR1cm4gZnx8KGY9ZCgpKSxmLmNhbGwodGhpcyxhLGIpfWlmKHZvaWQg
MD09PWImJihiPXt9KSxudWxsPT1hfHwic3RyaW5nIiE9dHlwZW9mIGEmJiJQcm9ncmFtIiE9PWEu
dHlwZSl0aHJvdyBuZXcga1siZGVmYXVsdCJdKCJZb3UgbXVzdCBwYXNzIGEgc3RyaW5nIG9yIEhh
bmRsZWJhcnMgQVNUIHRvIEhhbmRsZWJhcnMuY29tcGlsZS4gWW91IHBhc3NlZCAiK2EpOyJkYXRh
ImluIGJ8fChiLmRhdGE9ITApLGIuY29tcGF0JiYoYi51c2VEZXB0aHM9ITApO3ZhciBmPXZvaWQg
MDtyZXR1cm4gZS5fc2V0dXA9ZnVuY3Rpb24oYSl7cmV0dXJuIGZ8fChmPWQoKSksZi5fc2V0dXAo
YSl9LGUuX2NoaWxkPWZ1bmN0aW9uKGEsYixjLGUpe3JldHVybiBmfHwoZj1kKCkpLGYuX2NoaWxk
KGEsYixjLGUpfSxlfWZ1bmN0aW9uIGkoYSxiKXtpZihhPT09YilyZXR1cm4hMDtpZihjLmlzQXJy
YXkoYSkmJmMuaXNBcnJheShiKSYmYS5sZW5ndGg9PT1iLmxlbmd0aCl7Zm9yKHZhciBkPTA7ZDxh
Lmxlbmd0aDtkKyspaWYoIWkoYVtkXSxiW2RdKSlyZXR1cm4hMTtyZXR1cm4hMH19ZnVuY3Rpb24g
aihhKXtpZighYS5wYXRoLnBhcnRzKXt2YXIgYj1hLnBhdGg7YS5wYXRoPXt0eXBlOiJQYXRoRXhw
cmVzc2lvbiIsZGF0YTohMSxkZXB0aDowLHBhcnRzOltiLm9yaWdpbmFsKyIiXSxvcmlnaW5hbDpi
Lm9yaWdpbmFsKyIiLGxvYzpiLmxvY319fWEuX19lc01vZHVsZT0hMCxhLkNvbXBpbGVyPWYsYS5w
cmVjb21waWxlPWcsYS5jb21waWxlPWg7dmFyIGs9ZShiKSxsPWUoZCksbT1bXS5zbGljZTtmLnBy
b3RvdHlwZT17Y29tcGlsZXI6ZixlcXVhbHM6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5vcGNvZGVz
Lmxlbmd0aDtpZihhLm9wY29kZXMubGVuZ3RoIT09YilyZXR1cm4hMTtmb3IodmFyIGM9MDtjPGI7
YysrKXt2YXIgZD10aGlzLm9wY29kZXNbY10sZT1hLm9wY29kZXNbY107aWYoZC5vcGNvZGUhPT1l
Lm9wY29kZXx8IWkoZC5hcmdzLGUuYXJncykpcmV0dXJuITF9Yj10aGlzLmNoaWxkcmVuLmxlbmd0
aDtmb3IodmFyIGM9MDtjPGI7YysrKWlmKCF0aGlzLmNoaWxkcmVuW2NdLmVxdWFscyhhLmNoaWxk
cmVuW2NdKSlyZXR1cm4hMTtyZXR1cm4hMH0sZ3VpZDowLGNvbXBpbGU6ZnVuY3Rpb24oYSxiKXt0
aGlzLnNvdXJjZU5vZGU9W10sdGhpcy5vcGNvZGVzPVtdLHRoaXMuY2hpbGRyZW49W10sdGhpcy5v
cHRpb25zPWIsdGhpcy5zdHJpbmdQYXJhbXM9Yi5zdHJpbmdQYXJhbXMsdGhpcy50cmFja0lkcz1i
LnRyYWNrSWRzLGIuYmxvY2tQYXJhbXM9Yi5ibG9ja1BhcmFtc3x8W107dmFyIGM9Yi5rbm93bkhl
bHBlcnM7aWYoYi5rbm93bkhlbHBlcnM9e2hlbHBlck1pc3Npbmc6ITAsYmxvY2tIZWxwZXJNaXNz
aW5nOiEwLGVhY2g6ITAsImlmIjohMCx1bmxlc3M6ITAsIndpdGgiOiEwLGxvZzohMCxsb29rdXA6
ITB9LGMpZm9yKHZhciBkIGluIGMpZCBpbiBjJiYoYi5rbm93bkhlbHBlcnNbZF09Y1tkXSk7cmV0
dXJuIHRoaXMuYWNjZXB0KGEpfSxjb21waWxlUHJvZ3JhbTpmdW5jdGlvbihhKXt2YXIgYj1uZXcg
dGhpcy5jb21waWxlcixjPWIuY29tcGlsZShhLHRoaXMub3B0aW9ucyksZD10aGlzLmd1aWQrKzty
ZXR1cm4gdGhpcy51c2VQYXJ0aWFsPXRoaXMudXNlUGFydGlhbHx8Yy51c2VQYXJ0aWFsLHRoaXMu
Y2hpbGRyZW5bZF09Yyx0aGlzLnVzZURlcHRocz10aGlzLnVzZURlcHRoc3x8Yy51c2VEZXB0aHMs
ZH0sYWNjZXB0OmZ1bmN0aW9uKGEpe2lmKCF0aGlzW2EudHlwZV0pdGhyb3cgbmV3IGtbImRlZmF1
bHQiXSgiVW5rbm93biB0eXBlOiAiK2EudHlwZSxhKTt0aGlzLnNvdXJjZU5vZGUudW5zaGlmdChh
KTt2YXIgYj10aGlzW2EudHlwZV0oYSk7cmV0dXJuIHRoaXMuc291cmNlTm9kZS5zaGlmdCgpLGJ9
LFByb2dyYW06ZnVuY3Rpb24oYSl7dGhpcy5vcHRpb25zLmJsb2NrUGFyYW1zLnVuc2hpZnQoYS5i
bG9ja1BhcmFtcyk7Zm9yKHZhciBiPWEuYm9keSxjPWIubGVuZ3RoLGQ9MDtkPGM7ZCsrKXRoaXMu
YWNjZXB0KGJbZF0pO3JldHVybiB0aGlzLm9wdGlvbnMuYmxvY2tQYXJhbXMuc2hpZnQoKSx0aGlz
LmlzU2ltcGxlPTE9PT1jLHRoaXMuYmxvY2tQYXJhbXM9YS5ibG9ja1BhcmFtcz9hLmJsb2NrUGFy
YW1zLmxlbmd0aDowLHRoaXN9LEJsb2NrU3RhdGVtZW50OmZ1bmN0aW9uKGEpe2ooYSk7dmFyIGI9
YS5wcm9ncmFtLGM9YS5pbnZlcnNlO2I9YiYmdGhpcy5jb21waWxlUHJvZ3JhbShiKSxjPWMmJnRo
aXMuY29tcGlsZVByb2dyYW0oYyk7dmFyIGQ9dGhpcy5jbGFzc2lmeVNleHByKGEpOyJoZWxwZXIi
PT09ZD90aGlzLmhlbHBlclNleHByKGEsYixjKToic2ltcGxlIj09PWQ/KHRoaXMuc2ltcGxlU2V4
cHIoYSksdGhpcy5vcGNvZGUoInB1c2hQcm9ncmFtIixiKSx0aGlzLm9wY29kZSgicHVzaFByb2dy
YW0iLGMpLHRoaXMub3Bjb2RlKCJlbXB0eUhhc2giKSx0aGlzLm9wY29kZSgiYmxvY2tWYWx1ZSIs
YS5wYXRoLm9yaWdpbmFsKSk6KHRoaXMuYW1iaWd1b3VzU2V4cHIoYSxiLGMpLHRoaXMub3Bjb2Rl
KCJwdXNoUHJvZ3JhbSIsYiksdGhpcy5vcGNvZGUoInB1c2hQcm9ncmFtIixjKSx0aGlzLm9wY29k
ZSgiZW1wdHlIYXNoIiksdGhpcy5vcGNvZGUoImFtYmlndW91c0Jsb2NrVmFsdWUiKSksdGhpcy5v
cGNvZGUoImFwcGVuZCIpfSxEZWNvcmF0b3JCbG9jazpmdW5jdGlvbihhKXt2YXIgYj1hLnByb2dy
YW0mJnRoaXMuY29tcGlsZVByb2dyYW0oYS5wcm9ncmFtKSxjPXRoaXMuc2V0dXBGdWxsTXVzdGFj
aGVQYXJhbXMoYSxiLHZvaWQgMCksZD1hLnBhdGg7dGhpcy51c2VEZWNvcmF0b3JzPSEwLHRoaXMu
b3Bjb2RlKCJyZWdpc3RlckRlY29yYXRvciIsYy5sZW5ndGgsZC5vcmlnaW5hbCl9LFBhcnRpYWxT
dGF0ZW1lbnQ6ZnVuY3Rpb24oYSl7dGhpcy51c2VQYXJ0aWFsPSEwO3ZhciBiPWEucHJvZ3JhbTti
JiYoYj10aGlzLmNvbXBpbGVQcm9ncmFtKGEucHJvZ3JhbSkpO3ZhciBjPWEucGFyYW1zO2lmKGMu
bGVuZ3RoPjEpdGhyb3cgbmV3IGtbImRlZmF1bHQiXSgiVW5zdXBwb3J0ZWQgbnVtYmVyIG9mIHBh
cnRpYWwgYXJndW1lbnRzOiAiK2MubGVuZ3RoLGEpO2MubGVuZ3RofHwodGhpcy5vcHRpb25zLmV4
cGxpY2l0UGFydGlhbENvbnRleHQ/dGhpcy5vcGNvZGUoInB1c2hMaXRlcmFsIiwidW5kZWZpbmVk
Iik6Yy5wdXNoKHt0eXBlOiJQYXRoRXhwcmVzc2lvbiIscGFydHM6W10sZGVwdGg6MH0pKTt2YXIg
ZD1hLm5hbWUub3JpZ2luYWwsZT0iU3ViRXhwcmVzc2lvbiI9PT1hLm5hbWUudHlwZTtlJiZ0aGlz
LmFjY2VwdChhLm5hbWUpLHRoaXMuc2V0dXBGdWxsTXVzdGFjaGVQYXJhbXMoYSxiLHZvaWQgMCwh
MCk7dmFyIGY9YS5pbmRlbnR8fCIiO3RoaXMub3B0aW9ucy5wcmV2ZW50SW5kZW50JiZmJiYodGhp
cy5vcGNvZGUoImFwcGVuZENvbnRlbnQiLGYpLGY9IiIpLHRoaXMub3Bjb2RlKCJpbnZva2VQYXJ0
aWFsIixlLGQsZiksdGhpcy5vcGNvZGUoImFwcGVuZCIpfSxQYXJ0aWFsQmxvY2tTdGF0ZW1lbnQ6
ZnVuY3Rpb24oYSl7dGhpcy5QYXJ0aWFsU3RhdGVtZW50KGEpfSxNdXN0YWNoZVN0YXRlbWVudDpm
dW5jdGlvbihhKXt0aGlzLlN1YkV4cHJlc3Npb24oYSksYS5lc2NhcGVkJiYhdGhpcy5vcHRpb25z
Lm5vRXNjYXBlP3RoaXMub3Bjb2RlKCJhcHBlbmRFc2NhcGVkIik6dGhpcy5vcGNvZGUoImFwcGVu
ZCIpfSxEZWNvcmF0b3I6ZnVuY3Rpb24oYSl7dGhpcy5EZWNvcmF0b3JCbG9jayhhKX0sQ29udGVu
dFN0YXRlbWVudDpmdW5jdGlvbihhKXthLnZhbHVlJiZ0aGlzLm9wY29kZSgiYXBwZW5kQ29udGVu
dCIsYS52YWx1ZSl9LENvbW1lbnRTdGF0ZW1lbnQ6ZnVuY3Rpb24oKXt9LFN1YkV4cHJlc3Npb246
ZnVuY3Rpb24oYSl7aihhKTt2YXIgYj10aGlzLmNsYXNzaWZ5U2V4cHIoYSk7InNpbXBsZSI9PT1i
P3RoaXMuc2ltcGxlU2V4cHIoYSk6ImhlbHBlciI9PT1iP3RoaXMuaGVscGVyU2V4cHIoYSk6dGhp
cy5hbWJpZ3VvdXNTZXhwcihhKX0sYW1iaWd1b3VzU2V4cHI6ZnVuY3Rpb24oYSxiLGMpe3ZhciBk
PWEucGF0aCxlPWQucGFydHNbMF0sZj1udWxsIT1ifHxudWxsIT1jO3RoaXMub3Bjb2RlKCJnZXRD
b250ZXh0IixkLmRlcHRoKSx0aGlzLm9wY29kZSgicHVzaFByb2dyYW0iLGIpLHRoaXMub3Bjb2Rl
KCJwdXNoUHJvZ3JhbSIsYyksZC5zdHJpY3Q9ITAsdGhpcy5hY2NlcHQoZCksdGhpcy5vcGNvZGUo
Imludm9rZUFtYmlndW91cyIsZSxmKX0sc2ltcGxlU2V4cHI6ZnVuY3Rpb24oYSl7dmFyIGI9YS5w
YXRoO2Iuc3RyaWN0PSEwLHRoaXMuYWNjZXB0KGIpLHRoaXMub3Bjb2RlKCJyZXNvbHZlUG9zc2li
bGVMYW1iZGEiKX0saGVscGVyU2V4cHI6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMuc2V0dXBG
dWxsTXVzdGFjaGVQYXJhbXMoYSxiLGMpLGU9YS5wYXRoLGY9ZS5wYXJ0c1swXTtpZih0aGlzLm9w
dGlvbnMua25vd25IZWxwZXJzW2ZdKXRoaXMub3Bjb2RlKCJpbnZva2VLbm93bkhlbHBlciIsZC5s
ZW5ndGgsZik7ZWxzZXtpZih0aGlzLm9wdGlvbnMua25vd25IZWxwZXJzT25seSl0aHJvdyBuZXcg
a1siZGVmYXVsdCJdKCJZb3Ugc3BlY2lmaWVkIGtub3duSGVscGVyc09ubHksIGJ1dCB1c2VkIHRo
ZSB1bmtub3duIGhlbHBlciAiK2YsYSk7ZS5zdHJpY3Q9ITAsZS5mYWxzeT0hMCx0aGlzLmFjY2Vw
dChlKSx0aGlzLm9wY29kZSgiaW52b2tlSGVscGVyIixkLmxlbmd0aCxlLm9yaWdpbmFsLGxbImRl
ZmF1bHQiXS5oZWxwZXJzLnNpbXBsZUlkKGUpKX19LFBhdGhFeHByZXNzaW9uOmZ1bmN0aW9uKGEp
e3RoaXMuYWRkRGVwdGgoYS5kZXB0aCksdGhpcy5vcGNvZGUoImdldENvbnRleHQiLGEuZGVwdGgp
O3ZhciBiPWEucGFydHNbMF0sYz1sWyJkZWZhdWx0Il0uaGVscGVycy5zY29wZWRJZChhKSxkPSFh
LmRlcHRoJiYhYyYmdGhpcy5ibG9ja1BhcmFtSW5kZXgoYik7ZD90aGlzLm9wY29kZSgibG9va3Vw
QmxvY2tQYXJhbSIsZCxhLnBhcnRzKTpiP2EuZGF0YT8odGhpcy5vcHRpb25zLmRhdGE9ITAsdGhp
cy5vcGNvZGUoImxvb2t1cERhdGEiLGEuZGVwdGgsYS5wYXJ0cyxhLnN0cmljdCkpOnRoaXMub3Bj
b2RlKCJsb29rdXBPbkNvbnRleHQiLGEucGFydHMsYS5mYWxzeSxhLnN0cmljdCxjKTp0aGlzLm9w
Y29kZSgicHVzaENvbnRleHQiKX0sU3RyaW5nTGl0ZXJhbDpmdW5jdGlvbihhKXt0aGlzLm9wY29k
ZSgicHVzaFN0cmluZyIsYS52YWx1ZSl9LE51bWJlckxpdGVyYWw6ZnVuY3Rpb24oYSl7dGhpcy5v
cGNvZGUoInB1c2hMaXRlcmFsIixhLnZhbHVlKX0sQm9vbGVhbkxpdGVyYWw6ZnVuY3Rpb24oYSl7
dGhpcy5vcGNvZGUoInB1c2hMaXRlcmFsIixhLnZhbHVlKX0sVW5kZWZpbmVkTGl0ZXJhbDpmdW5j
dGlvbigpe3RoaXMub3Bjb2RlKCJwdXNoTGl0ZXJhbCIsInVuZGVmaW5lZCIpfSxOdWxsTGl0ZXJh
bDpmdW5jdGlvbigpe3RoaXMub3Bjb2RlKCJwdXNoTGl0ZXJhbCIsIm51bGwiKX0sSGFzaDpmdW5j
dGlvbihhKXt2YXIgYj1hLnBhaXJzLGM9MCxkPWIubGVuZ3RoO2Zvcih0aGlzLm9wY29kZSgicHVz
aEhhc2giKTtjPGQ7YysrKXRoaXMucHVzaFBhcmFtKGJbY10udmFsdWUpO2Zvcig7Yy0tOyl0aGlz
Lm9wY29kZSgiYXNzaWduVG9IYXNoIixiW2NdLmtleSk7dGhpcy5vcGNvZGUoInBvcEhhc2giKX0s
b3Bjb2RlOmZ1bmN0aW9uKGEpe3RoaXMub3Bjb2Rlcy5wdXNoKHtvcGNvZGU6YSxhcmdzOm0uY2Fs
bChhcmd1bWVudHMsMSksbG9jOnRoaXMuc291cmNlTm9kZVswXS5sb2N9KX0sYWRkRGVwdGg6ZnVu
Y3Rpb24oYSl7YSYmKHRoaXMudXNlRGVwdGhzPSEwKX0sY2xhc3NpZnlTZXhwcjpmdW5jdGlvbihh
KXt2YXIgYj1sWyJkZWZhdWx0Il0uaGVscGVycy5zaW1wbGVJZChhLnBhdGgpLGM9YiYmISF0aGlz
LmJsb2NrUGFyYW1JbmRleChhLnBhdGgucGFydHNbMF0pLGQ9IWMmJmxbImRlZmF1bHQiXS5oZWxw
ZXJzLmhlbHBlckV4cHJlc3Npb24oYSksZT0hYyYmKGR8fGIpO2lmKGUmJiFkKXt2YXIgZj1hLnBh
dGgucGFydHNbMF0sZz10aGlzLm9wdGlvbnM7Zy5rbm93bkhlbHBlcnNbZl0/ZD0hMDpnLmtub3du
SGVscGVyc09ubHkmJihlPSExKX1yZXR1cm4gZD8iaGVscGVyIjplPyJhbWJpZ3VvdXMiOiJzaW1w
bGUifSxwdXNoUGFyYW1zOmZ1bmN0aW9uKGEpe2Zvcih2YXIgYj0wLGM9YS5sZW5ndGg7YjxjO2Ir
Kyl0aGlzLnB1c2hQYXJhbShhW2JdKX0scHVzaFBhcmFtOmZ1bmN0aW9uKGEpe3ZhciBiPW51bGwh
PWEudmFsdWU/YS52YWx1ZTphLm9yaWdpbmFsfHwiIjtpZih0aGlzLnN0cmluZ1BhcmFtcyliLnJl
cGxhY2UmJihiPWIucmVwbGFjZSgvXihcLj9cLlwvKSovZywiIikucmVwbGFjZSgvXC8vZywiLiIp
KSxhLmRlcHRoJiZ0aGlzLmFkZERlcHRoKGEuZGVwdGgpLHRoaXMub3Bjb2RlKCJnZXRDb250ZXh0
IixhLmRlcHRofHwwKSx0aGlzLm9wY29kZSgicHVzaFN0cmluZ1BhcmFtIixiLGEudHlwZSksIlN1
YkV4cHJlc3Npb24iPT09YS50eXBlJiZ0aGlzLmFjY2VwdChhKTtlbHNle2lmKHRoaXMudHJhY2tJ
ZHMpe3ZhciBjPXZvaWQgMDtpZighYS5wYXJ0c3x8bFsiZGVmYXVsdCJdLmhlbHBlcnMuc2NvcGVk
SWQoYSl8fGEuZGVwdGh8fChjPXRoaXMuYmxvY2tQYXJhbUluZGV4KGEucGFydHNbMF0pKSxjKXt2
YXIgZD1hLnBhcnRzLnNsaWNlKDEpLmpvaW4oIi4iKTt0aGlzLm9wY29kZSgicHVzaElkIiwiQmxv
Y2tQYXJhbSIsYyxkKX1lbHNlIGI9YS5vcmlnaW5hbHx8YixiLnJlcGxhY2UmJihiPWIucmVwbGFj
ZSgvXnRoaXMoPzpcLnwkKS8sIiIpLnJlcGxhY2UoL15cLlwvLywiIikucmVwbGFjZSgvXlwuJC8s
IiIpKSx0aGlzLm9wY29kZSgicHVzaElkIixhLnR5cGUsYil9dGhpcy5hY2NlcHQoYSl9fSxzZXR1
cEZ1bGxNdXN0YWNoZVBhcmFtczpmdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1hLnBhcmFtcztyZXR1
cm4gdGhpcy5wdXNoUGFyYW1zKGUpLHRoaXMub3Bjb2RlKCJwdXNoUHJvZ3JhbSIsYiksdGhpcy5v
cGNvZGUoInB1c2hQcm9ncmFtIixjKSxhLmhhc2g/dGhpcy5hY2NlcHQoYS5oYXNoKTp0aGlzLm9w
Y29kZSgiZW1wdHlIYXNoIixkKSxlfSxibG9ja1BhcmFtSW5kZXg6ZnVuY3Rpb24oYSl7Zm9yKHZh
ciBiPTAsZD10aGlzLm9wdGlvbnMuYmxvY2tQYXJhbXMubGVuZ3RoO2I8ZDtiKyspe3ZhciBlPXRo
aXMub3B0aW9ucy5ibG9ja1BhcmFtc1tiXSxmPWUmJmMuaW5kZXhPZihlLGEpO2lmKGUmJmY+PTAp
cmV0dXJuW2IsZl19fX19KSxkZWZpbmUoImhhbmRsZWJhcnMvY29tcGlsZXIvY29kZS1nZW4iLFsi
ZXhwb3J0cyIsIm1vZHVsZSIsIi4uL3V0aWxzIl0sZnVuY3Rpb24oYSxiLGMpeyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiBkKGEsYixkKXtpZihjLmlzQXJyYXkoYSkpe2Zvcih2YXIgZT1bXSxmPTAsZz1h
Lmxlbmd0aDtmPGc7ZisrKWUucHVzaChiLndyYXAoYVtmXSxkKSk7cmV0dXJuIGV9cmV0dXJuImJv
b2xlYW4iPT10eXBlb2YgYXx8Im51bWJlciI9PXR5cGVvZiBhP2ErIiI6YX1mdW5jdGlvbiBlKGEp
e3RoaXMuc3JjRmlsZT1hLHRoaXMuc291cmNlPVtdfXZhciBmPXZvaWQgMDt0cnl7aWYoImZ1bmN0
aW9uIiE9dHlwZW9mIGRlZmluZXx8IWRlZmluZS5hbWQpe3ZhciBnPXJlcXVpcmUoInNvdXJjZS1t
YXAiKTtmPWcuU291cmNlTm9kZX19Y2F0Y2goaCl7fWZ8fChmPWZ1bmN0aW9uKGEsYixjLGQpe3Ro
aXMuc3JjPSIiLGQmJnRoaXMuYWRkKGQpfSxmLnByb3RvdHlwZT17YWRkOmZ1bmN0aW9uKGEpe2Mu
aXNBcnJheShhKSYmKGE9YS5qb2luKCIiKSksdGhpcy5zcmMrPWF9LHByZXBlbmQ6ZnVuY3Rpb24o
YSl7Yy5pc0FycmF5KGEpJiYoYT1hLmpvaW4oIiIpKSx0aGlzLnNyYz1hK3RoaXMuc3JjfSx0b1N0
cmluZ1dpdGhTb3VyY2VNYXA6ZnVuY3Rpb24oKXtyZXR1cm57Y29kZTp0aGlzLnRvU3RyaW5nKCl9
fSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNyY319KSxlLnByb3RvdHlwZT17aXNF
bXB0eTpmdW5jdGlvbigpe3JldHVybiF0aGlzLnNvdXJjZS5sZW5ndGh9LHByZXBlbmQ6ZnVuY3Rp
b24oYSxiKXt0aGlzLnNvdXJjZS51bnNoaWZ0KHRoaXMud3JhcChhLGIpKX0scHVzaDpmdW5jdGlv
bihhLGIpe3RoaXMuc291cmNlLnB1c2godGhpcy53cmFwKGEsYikpfSxtZXJnZTpmdW5jdGlvbigp
e3ZhciBhPXRoaXMuZW1wdHkoKTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe2EuYWRkKFsi
ICAiLGIsIlxuIl0pfSksYX0sZWFjaDpmdW5jdGlvbihhKXtmb3IodmFyIGI9MCxjPXRoaXMuc291
cmNlLmxlbmd0aDtiPGM7YisrKWEodGhpcy5zb3VyY2VbYl0pfSxlbXB0eTpmdW5jdGlvbigpe3Zh
ciBhPXRoaXMuY3VycmVudExvY2F0aW9ufHx7c3RhcnQ6e319O3JldHVybiBuZXcgZihhLnN0YXJ0
LmxpbmUsYS5zdGFydC5jb2x1bW4sdGhpcy5zcmNGaWxlKX0sd3JhcDpmdW5jdGlvbihhKXt2YXIg
Yj1hcmd1bWVudHMubGVuZ3RoPD0xfHx2b2lkIDA9PT1hcmd1bWVudHNbMV0/dGhpcy5jdXJyZW50
TG9jYXRpb258fHtzdGFydDp7fX06YXJndW1lbnRzWzFdO3JldHVybiBhIGluc3RhbmNlb2YgZj9h
OihhPWQoYSx0aGlzLGIpLG5ldyBmKGIuc3RhcnQubGluZSxiLnN0YXJ0LmNvbHVtbix0aGlzLnNy
Y0ZpbGUsYSkpfSxmdW5jdGlvbkNhbGw6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBjPXRoaXMuZ2Vu
ZXJhdGVMaXN0KGMpLHRoaXMud3JhcChbYSxiPyIuIitiKyIoIjoiKCIsYywiKSJdKX0scXVvdGVk
U3RyaW5nOmZ1bmN0aW9uKGEpe3JldHVybiciJysoYSsiIikucmVwbGFjZSgvXFwvZywiXFxcXCIp
LnJlcGxhY2UoLyIvZywnXFwiJykucmVwbGFjZSgvXG4vZywiXFxuIikucmVwbGFjZSgvXHIvZywi
XFxyIikucmVwbGFjZSgvXHUyMDI4L2csIlxcdTIwMjgiKS5yZXBsYWNlKC9cdTIwMjkvZywiXFx1
MjAyOSIpKyciJ30sb2JqZWN0TGl0ZXJhbDpmdW5jdGlvbihhKXt2YXIgYj1bXTtmb3IodmFyIGMg
aW4gYSlpZihhLmhhc093blByb3BlcnR5KGMpKXt2YXIgZT1kKGFbY10sdGhpcyk7InVuZGVmaW5l
ZCIhPT1lJiZiLnB1c2goW3RoaXMucXVvdGVkU3RyaW5nKGMpLCI6IixlXSl9dmFyIGY9dGhpcy5n
ZW5lcmF0ZUxpc3QoYik7cmV0dXJuIGYucHJlcGVuZCgieyIpLGYuYWRkKCJ9IiksZn0sZ2VuZXJh
dGVMaXN0OmZ1bmN0aW9uKGEpe2Zvcih2YXIgYj10aGlzLmVtcHR5KCksYz0wLGU9YS5sZW5ndGg7
YzxlO2MrKyljJiZiLmFkZCgiLCIpLGIuYWRkKGQoYVtjXSx0aGlzKSk7cmV0dXJuIGJ9LGdlbmVy
YXRlQXJyYXk6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5nZW5lcmF0ZUxpc3QoYSk7cmV0dXJuIGIu
cHJlcGVuZCgiWyIpLGIuYWRkKCJdIiksYn19LGIuZXhwb3J0cz1lfSksZGVmaW5lKCJoYW5kbGVi
YXJzL2NvbXBpbGVyL2phdmFzY3JpcHQtY29tcGlsZXIiLFsiZXhwb3J0cyIsIm1vZHVsZSIsIi4u
L2Jhc2UiLCIuLi9leGNlcHRpb24iLCIuLi91dGlscyIsIi4vY29kZS1nZW4iXSxmdW5jdGlvbihh
LGIsYyxkLGUsZil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGcoYSl7cmV0dXJuIGEmJmEuX19lc01v
ZHVsZT9hOnsiZGVmYXVsdCI6YX19ZnVuY3Rpb24gaChhKXt0aGlzLnZhbHVlPWF9ZnVuY3Rpb24g
aSgpe31mdW5jdGlvbiBqKGEsYixjLGQpe3ZhciBlPWIucG9wU3RhY2soKSxmPTAsZz1jLmxlbmd0
aDtmb3IoYSYmZy0tO2Y8ZztmKyspZT1iLm5hbWVMb29rdXAoZSxjW2ZdLGQpO3JldHVybiBhP1ti
LmFsaWFzYWJsZSgiY29udGFpbmVyLnN0cmljdCIpLCIoIixlLCIsICIsYi5xdW90ZWRTdHJpbmco
Y1tmXSksIikiXTplfXZhciBrPWcoZCksbD1nKGYpO2kucHJvdG90eXBlPXtuYW1lTG9va3VwOmZ1
bmN0aW9uKGEsYil7cmV0dXJuIGkuaXNWYWxpZEphdmFTY3JpcHRWYXJpYWJsZU5hbWUoYik/W2Es
Ii4iLGJdOlthLCJbIixKU09OLnN0cmluZ2lmeShiKSwiXSJdfSxkZXB0aGVkTG9va3VwOmZ1bmN0
aW9uKGEpe3JldHVyblt0aGlzLmFsaWFzYWJsZSgiY29udGFpbmVyLmxvb2t1cCIpLCcoZGVwdGhz
LCAiJyxhLCciKSddfSxjb21waWxlckluZm86ZnVuY3Rpb24oKXt2YXIgYT1jLkNPTVBJTEVSX1JF
VklTSU9OLGI9Yy5SRVZJU0lPTl9DSEFOR0VTW2FdO3JldHVyblthLGJdfSxhcHBlbmRUb0J1ZmZl
cjpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGUuaXNBcnJheShhKXx8KGE9W2FdKSxhPXRoaXMuc291
cmNlLndyYXAoYSxiKSx0aGlzLmVudmlyb25tZW50LmlzU2ltcGxlP1sicmV0dXJuICIsYSwiOyJd
OmM/WyJidWZmZXIgKz0gIixhLCI7Il06KGEuYXBwZW5kVG9CdWZmZXI9ITAsYSl9LGluaXRpYWxp
emVCdWZmZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5xdW90ZWRTdHJpbmcoIiIpfSxjb21waWxl
OmZ1bmN0aW9uKGEsYixjLGQpe3RoaXMuZW52aXJvbm1lbnQ9YSx0aGlzLm9wdGlvbnM9Yix0aGlz
LnN0cmluZ1BhcmFtcz10aGlzLm9wdGlvbnMuc3RyaW5nUGFyYW1zLHRoaXMudHJhY2tJZHM9dGhp
cy5vcHRpb25zLnRyYWNrSWRzLHRoaXMucHJlY29tcGlsZT0hZCx0aGlzLm5hbWU9dGhpcy5lbnZp
cm9ubWVudC5uYW1lLHRoaXMuaXNDaGlsZD0hIWMsdGhpcy5jb250ZXh0PWN8fHtkZWNvcmF0b3Jz
OltdLHByb2dyYW1zOltdLGVudmlyb25tZW50czpbXX0sdGhpcy5wcmVhbWJsZSgpLHRoaXMuc3Rh
Y2tTbG90PTAsdGhpcy5zdGFja1ZhcnM9W10sdGhpcy5hbGlhc2VzPXt9LHRoaXMucmVnaXN0ZXJz
PXtsaXN0OltdfSx0aGlzLmhhc2hlcz1bXSx0aGlzLmNvbXBpbGVTdGFjaz1bXSx0aGlzLmlubGlu
ZVN0YWNrPVtdLHRoaXMuYmxvY2tQYXJhbXM9W10sdGhpcy5jb21waWxlQ2hpbGRyZW4oYSxiKSx0
aGlzLnVzZURlcHRocz10aGlzLnVzZURlcHRoc3x8YS51c2VEZXB0aHN8fGEudXNlRGVjb3JhdG9y
c3x8dGhpcy5vcHRpb25zLmNvbXBhdCx0aGlzLnVzZUJsb2NrUGFyYW1zPXRoaXMudXNlQmxvY2tQ
YXJhbXN8fGEudXNlQmxvY2tQYXJhbXM7dmFyIGU9YS5vcGNvZGVzLGY9dm9pZCAwLGc9dm9pZCAw
LGg9dm9pZCAwLGk9dm9pZCAwO2ZvcihoPTAsaT1lLmxlbmd0aDtoPGk7aCsrKWY9ZVtoXSx0aGlz
LnNvdXJjZS5jdXJyZW50TG9jYXRpb249Zi5sb2MsZz1nfHxmLmxvYyx0aGlzW2Yub3Bjb2RlXS5h
cHBseSh0aGlzLGYuYXJncyk7aWYodGhpcy5zb3VyY2UuY3VycmVudExvY2F0aW9uPWcsdGhpcy5w
dXNoU291cmNlKCIiKSx0aGlzLnN0YWNrU2xvdHx8dGhpcy5pbmxpbmVTdGFjay5sZW5ndGh8fHRo
aXMuY29tcGlsZVN0YWNrLmxlbmd0aCl0aHJvdyBuZXcga1siZGVmYXVsdCJdKCJDb21waWxlIGNv
bXBsZXRlZCB3aXRoIGNvbnRlbnQgbGVmdCBvbiBzdGFjayIpO3RoaXMuZGVjb3JhdG9ycy5pc0Vt
cHR5KCk/dGhpcy5kZWNvcmF0b3JzPXZvaWQgMDoodGhpcy51c2VEZWNvcmF0b3JzPSEwLHRoaXMu
ZGVjb3JhdG9ycy5wcmVwZW5kKCJ2YXIgZGVjb3JhdG9ycyA9IGNvbnRhaW5lci5kZWNvcmF0b3Jz
O1xuIiksdGhpcy5kZWNvcmF0b3JzLnB1c2goInJldHVybiBmbjsiKSxkP3RoaXMuZGVjb3JhdG9y
cz1GdW5jdGlvbi5hcHBseSh0aGlzLFsiZm4iLCJwcm9wcyIsImNvbnRhaW5lciIsImRlcHRoMCIs
ImRhdGEiLCJibG9ja1BhcmFtcyIsImRlcHRocyIsdGhpcy5kZWNvcmF0b3JzLm1lcmdlKCldKToo
dGhpcy5kZWNvcmF0b3JzLnByZXBlbmQoImZ1bmN0aW9uKGZuLCBwcm9wcywgY29udGFpbmVyLCBk
ZXB0aDAsIGRhdGEsIGJsb2NrUGFyYW1zLCBkZXB0aHMpIHtcbiIpLHRoaXMuZGVjb3JhdG9ycy5w
dXNoKCJ9XG4iKSx0aGlzLmRlY29yYXRvcnM9dGhpcy5kZWNvcmF0b3JzLm1lcmdlKCkpKTt2YXIg
aj10aGlzLmNyZWF0ZUZ1bmN0aW9uQ29udGV4dChkKTtpZih0aGlzLmlzQ2hpbGQpcmV0dXJuIGo7
dmFyIGw9e2NvbXBpbGVyOnRoaXMuY29tcGlsZXJJbmZvKCksbWFpbjpqfTt0aGlzLmRlY29yYXRv
cnMmJihsLm1haW5fZD10aGlzLmRlY29yYXRvcnMsbC51c2VEZWNvcmF0b3JzPSEwKTt2YXIgbT10
aGlzLmNvbnRleHQsbj1tLnByb2dyYW1zLG89bS5kZWNvcmF0b3JzO2ZvcihoPTAsaT1uLmxlbmd0
aDtoPGk7aCsrKW5baF0mJihsW2hdPW5baF0sb1toXSYmKGxbaCsiX2QiXT1vW2hdLGwudXNlRGVj
b3JhdG9ycz0hMCkpO3JldHVybiB0aGlzLmVudmlyb25tZW50LnVzZVBhcnRpYWwmJihsLnVzZVBh
cnRpYWw9ITApLHRoaXMub3B0aW9ucy5kYXRhJiYobC51c2VEYXRhPSEwKSx0aGlzLnVzZURlcHRo
cyYmKGwudXNlRGVwdGhzPSEwKSx0aGlzLnVzZUJsb2NrUGFyYW1zJiYobC51c2VCbG9ja1BhcmFt
cz0hMCksdGhpcy5vcHRpb25zLmNvbXBhdCYmKGwuY29tcGF0PSEwKSxkP2wuY29tcGlsZXJPcHRp
b25zPXRoaXMub3B0aW9uczoobC5jb21waWxlcj1KU09OLnN0cmluZ2lmeShsLmNvbXBpbGVyKSx0
aGlzLnNvdXJjZS5jdXJyZW50TG9jYXRpb249e3N0YXJ0OntsaW5lOjEsY29sdW1uOjB9fSxsPXRo
aXMub2JqZWN0TGl0ZXJhbChsKSxiLnNyY05hbWU/KGw9bC50b1N0cmluZ1dpdGhTb3VyY2VNYXAo
e2ZpbGU6Yi5kZXN0TmFtZX0pLGwubWFwPWwubWFwJiZsLm1hcC50b1N0cmluZygpKTpsPWwudG9T
dHJpbmcoKSksbH0scHJlYW1ibGU6ZnVuY3Rpb24oKXt0aGlzLmxhc3RDb250ZXh0PTAsdGhpcy5z
b3VyY2U9bmV3IGxbImRlZmF1bHQiXSh0aGlzLm9wdGlvbnMuc3JjTmFtZSksdGhpcy5kZWNvcmF0
b3JzPW5ldyBsWyJkZWZhdWx0Il0odGhpcy5vcHRpb25zLnNyY05hbWUpfSxjcmVhdGVGdW5jdGlv
bkNvbnRleHQ6ZnVuY3Rpb24oYSl7dmFyIGI9IiIsYz10aGlzLnN0YWNrVmFycy5jb25jYXQodGhp
cy5yZWdpc3RlcnMubGlzdCk7Yy5sZW5ndGg+MCYmKGIrPSIsICIrYy5qb2luKCIsICIpKTt2YXIg
ZD0wO2Zvcih2YXIgZSBpbiB0aGlzLmFsaWFzZXMpe3ZhciBmPXRoaXMuYWxpYXNlc1tlXTt0aGlz
LmFsaWFzZXMuaGFzT3duUHJvcGVydHkoZSkmJmYuY2hpbGRyZW4mJmYucmVmZXJlbmNlQ291bnQ+
MSYmKGIrPSIsIGFsaWFzIisgKytkKyI9IitlLGYuY2hpbGRyZW5bMF09ImFsaWFzIitkKX12YXIg
Zz1bImNvbnRhaW5lciIsImRlcHRoMCIsImhlbHBlcnMiLCJwYXJ0aWFscyIsImRhdGEiXTsodGhp
cy51c2VCbG9ja1BhcmFtc3x8dGhpcy51c2VEZXB0aHMpJiZnLnB1c2goImJsb2NrUGFyYW1zIiks
dGhpcy51c2VEZXB0aHMmJmcucHVzaCgiZGVwdGhzIik7dmFyIGg9dGhpcy5tZXJnZVNvdXJjZShi
KTtyZXR1cm4gYT8oZy5wdXNoKGgpLEZ1bmN0aW9uLmFwcGx5KHRoaXMsZykpOnRoaXMuc291cmNl
LndyYXAoWyJmdW5jdGlvbigiLGcuam9pbigiLCIpLCIpIHtcbiAgIixoLCJ9Il0pfSxtZXJnZVNv
dXJjZTpmdW5jdGlvbihhKXt2YXIgYj10aGlzLmVudmlyb25tZW50LmlzU2ltcGxlLGM9IXRoaXMu
Zm9yY2VCdWZmZXIsZD12b2lkIDAsZT12b2lkIDAsZj12b2lkIDAsZz12b2lkIDA7cmV0dXJuIHRo
aXMuc291cmNlLmVhY2goZnVuY3Rpb24oYSl7YS5hcHBlbmRUb0J1ZmZlcj8oZj9hLnByZXBlbmQo
IiAgKyAiKTpmPWEsZz1hKTooZiYmKGU/Zi5wcmVwZW5kKCJidWZmZXIgKz0gIik6ZD0hMCxnLmFk
ZCgiOyIpLGY9Zz12b2lkIDApLGU9ITAsYnx8KGM9ITEpKX0pLGM/Zj8oZi5wcmVwZW5kKCJyZXR1
cm4gIiksZy5hZGQoIjsiKSk6ZXx8dGhpcy5zb3VyY2UucHVzaCgncmV0dXJuICIiOycpOihhKz0i
LCBidWZmZXIgPSAiKyhkPyIiOnRoaXMuaW5pdGlhbGl6ZUJ1ZmZlcigpKSxmPyhmLnByZXBlbmQo
InJldHVybiBidWZmZXIgKyAiKSxnLmFkZCgiOyIpKTp0aGlzLnNvdXJjZS5wdXNoKCJyZXR1cm4g
YnVmZmVyOyIpKSxhJiZ0aGlzLnNvdXJjZS5wcmVwZW5kKCJ2YXIgIithLnN1YnN0cmluZygyKSso
ZD8iIjoiO1xuIikpLHRoaXMuc291cmNlLm1lcmdlKCl9LGJsb2NrVmFsdWU6ZnVuY3Rpb24oYSl7
dmFyIGI9dGhpcy5hbGlhc2FibGUoImhlbHBlcnMuYmxvY2tIZWxwZXJNaXNzaW5nIiksYz1bdGhp
cy5jb250ZXh0TmFtZSgwKV07dGhpcy5zZXR1cEhlbHBlckFyZ3MoYSwwLGMpO3ZhciBkPXRoaXMu
cG9wU3RhY2soKTtjLnNwbGljZSgxLDAsZCksdGhpcy5wdXNoKHRoaXMuc291cmNlLmZ1bmN0aW9u
Q2FsbChiLCJjYWxsIixjKSl9LGFtYmlndW91c0Jsb2NrVmFsdWU6ZnVuY3Rpb24oKXt2YXIgYT10
aGlzLmFsaWFzYWJsZSgiaGVscGVycy5ibG9ja0hlbHBlck1pc3NpbmciKSxiPVt0aGlzLmNvbnRl
eHROYW1lKDApXTt0aGlzLnNldHVwSGVscGVyQXJncygiIiwwLGIsITApLHRoaXMuZmx1c2hJbmxp
bmUoKTt2YXIgYz10aGlzLnRvcFN0YWNrKCk7Yi5zcGxpY2UoMSwwLGMpLHRoaXMucHVzaFNvdXJj
ZShbImlmICghIix0aGlzLmxhc3RIZWxwZXIsIikgeyAiLGMsIiA9ICIsdGhpcy5zb3VyY2UuZnVu
Y3Rpb25DYWxsKGEsImNhbGwiLGIpLCJ9Il0pfSxhcHBlbmRDb250ZW50OmZ1bmN0aW9uKGEpe3Ro
aXMucGVuZGluZ0NvbnRlbnQ/YT10aGlzLnBlbmRpbmdDb250ZW50K2E6dGhpcy5wZW5kaW5nTG9j
YXRpb249dGhpcy5zb3VyY2UuY3VycmVudExvY2F0aW9uLHRoaXMucGVuZGluZ0NvbnRlbnQ9YX0s
YXBwZW5kOmZ1bmN0aW9uKCl7aWYodGhpcy5pc0lubGluZSgpKXRoaXMucmVwbGFjZVN0YWNrKGZ1
bmN0aW9uKGEpe3JldHVyblsiICE9IG51bGwgPyAiLGEsJyA6ICIiJ119KSx0aGlzLnB1c2hTb3Vy
Y2UodGhpcy5hcHBlbmRUb0J1ZmZlcih0aGlzLnBvcFN0YWNrKCkpKTtlbHNle3ZhciBhPXRoaXMu
cG9wU3RhY2soKTt0aGlzLnB1c2hTb3VyY2UoWyJpZiAoIixhLCIgIT0gbnVsbCkgeyAiLHRoaXMu
YXBwZW5kVG9CdWZmZXIoYSx2b2lkIDAsITApLCIgfSJdKSx0aGlzLmVudmlyb25tZW50LmlzU2lt
cGxlJiZ0aGlzLnB1c2hTb3VyY2UoWyJlbHNlIHsgIix0aGlzLmFwcGVuZFRvQnVmZmVyKCInJyIs
dm9pZCAwLCEwKSwiIH0iXSl9fSxhcHBlbmRFc2NhcGVkOmZ1bmN0aW9uKCl7dGhpcy5wdXNoU291
cmNlKHRoaXMuYXBwZW5kVG9CdWZmZXIoW3RoaXMuYWxpYXNhYmxlKCJjb250YWluZXIuZXNjYXBl
RXhwcmVzc2lvbiIpLCIoIix0aGlzLnBvcFN0YWNrKCksIikiXSkpfSxnZXRDb250ZXh0OmZ1bmN0
aW9uKGEpe3RoaXMubGFzdENvbnRleHQ9YX0scHVzaENvbnRleHQ6ZnVuY3Rpb24oKXt0aGlzLnB1
c2hTdGFja0xpdGVyYWwodGhpcy5jb250ZXh0TmFtZSh0aGlzLmxhc3RDb250ZXh0KSl9LGxvb2t1
cE9uQ29udGV4dDpmdW5jdGlvbihhLGIsYyxkKXt2YXIgZT0wO2R8fCF0aGlzLm9wdGlvbnMuY29t
cGF0fHx0aGlzLmxhc3RDb250ZXh0P3RoaXMucHVzaENvbnRleHQoKTp0aGlzLnB1c2godGhpcy5k
ZXB0aGVkTG9va3VwKGFbZSsrXSkpLHRoaXMucmVzb2x2ZVBhdGgoImNvbnRleHQiLGEsZSxiLGMp
fSxsb29rdXBCbG9ja1BhcmFtOmZ1bmN0aW9uKGEsYil7dGhpcy51c2VCbG9ja1BhcmFtcz0hMCx0
aGlzLnB1c2goWyJibG9ja1BhcmFtc1siLGFbMF0sIl1bIixhWzFdLCJdIl0pLHRoaXMucmVzb2x2
ZVBhdGgoImNvbnRleHQiLGIsMSl9LGxvb2t1cERhdGE6ZnVuY3Rpb24oYSxiLGMpe2E/dGhpcy5w
dXNoU3RhY2tMaXRlcmFsKCJjb250YWluZXIuZGF0YShkYXRhLCAiK2ErIikiKTp0aGlzLnB1c2hT
dGFja0xpdGVyYWwoImRhdGEiKSx0aGlzLnJlc29sdmVQYXRoKCJkYXRhIixiLDAsITAsYyl9LHJl
c29sdmVQYXRoOmZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9dGhpcztpZih0aGlzLm9wdGlvbnMu
c3RyaWN0fHx0aGlzLm9wdGlvbnMuYXNzdW1lT2JqZWN0cylyZXR1cm4gdm9pZCB0aGlzLnB1c2go
aih0aGlzLm9wdGlvbnMuc3RyaWN0JiZlLHRoaXMsYixhKSk7Zm9yKHZhciBnPWIubGVuZ3RoO2M8
ZztjKyspdGhpcy5yZXBsYWNlU3RhY2soZnVuY3Rpb24oZSl7dmFyIGc9Zi5uYW1lTG9va3VwKGUs
YltjXSxhKTtyZXR1cm4gZD9bIiAmJiAiLGddOlsiICE9IG51bGwgPyAiLGcsIiA6ICIsZV19KX0s
cmVzb2x2ZVBvc3NpYmxlTGFtYmRhOmZ1bmN0aW9uKCl7dGhpcy5wdXNoKFt0aGlzLmFsaWFzYWJs
ZSgiY29udGFpbmVyLmxhbWJkYSIpLCIoIix0aGlzLnBvcFN0YWNrKCksIiwgIix0aGlzLmNvbnRl
eHROYW1lKDApLCIpIl0pfSxwdXNoU3RyaW5nUGFyYW06ZnVuY3Rpb24oYSxiKXt0aGlzLnB1c2hD
b250ZXh0KCksCit0aGlzLnB1c2hTdHJpbmcoYiksIlN1YkV4cHJlc3Npb24iIT09YiYmKCJzdHJp
bmciPT10eXBlb2YgYT90aGlzLnB1c2hTdHJpbmcoYSk6dGhpcy5wdXNoU3RhY2tMaXRlcmFsKGEp
KX0sZW1wdHlIYXNoOmZ1bmN0aW9uKGEpe3RoaXMudHJhY2tJZHMmJnRoaXMucHVzaCgie30iKSx0
aGlzLnN0cmluZ1BhcmFtcyYmKHRoaXMucHVzaCgie30iKSx0aGlzLnB1c2goInt9IikpLHRoaXMu
cHVzaFN0YWNrTGl0ZXJhbChhPyJ1bmRlZmluZWQiOiJ7fSIpfSxwdXNoSGFzaDpmdW5jdGlvbigp
e3RoaXMuaGFzaCYmdGhpcy5oYXNoZXMucHVzaCh0aGlzLmhhc2gpLHRoaXMuaGFzaD17dmFsdWVz
OltdLHR5cGVzOltdLGNvbnRleHRzOltdLGlkczpbXX19LHBvcEhhc2g6ZnVuY3Rpb24oKXt2YXIg
YT10aGlzLmhhc2g7dGhpcy5oYXNoPXRoaXMuaGFzaGVzLnBvcCgpLHRoaXMudHJhY2tJZHMmJnRo
aXMucHVzaCh0aGlzLm9iamVjdExpdGVyYWwoYS5pZHMpKSx0aGlzLnN0cmluZ1BhcmFtcyYmKHRo
aXMucHVzaCh0aGlzLm9iamVjdExpdGVyYWwoYS5jb250ZXh0cykpLHRoaXMucHVzaCh0aGlzLm9i
amVjdExpdGVyYWwoYS50eXBlcykpKSx0aGlzLnB1c2godGhpcy5vYmplY3RMaXRlcmFsKGEudmFs
dWVzKSl9LHB1c2hTdHJpbmc6ZnVuY3Rpb24oYSl7dGhpcy5wdXNoU3RhY2tMaXRlcmFsKHRoaXMu
cXVvdGVkU3RyaW5nKGEpKX0scHVzaExpdGVyYWw6ZnVuY3Rpb24oYSl7dGhpcy5wdXNoU3RhY2tM
aXRlcmFsKGEpfSxwdXNoUHJvZ3JhbTpmdW5jdGlvbihhKXtudWxsIT1hP3RoaXMucHVzaFN0YWNr
TGl0ZXJhbCh0aGlzLnByb2dyYW1FeHByZXNzaW9uKGEpKTp0aGlzLnB1c2hTdGFja0xpdGVyYWwo
bnVsbCl9LHJlZ2lzdGVyRGVjb3JhdG9yOmZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5uYW1lTG9v
a3VwKCJkZWNvcmF0b3JzIixiLCJkZWNvcmF0b3IiKSxkPXRoaXMuc2V0dXBIZWxwZXJBcmdzKGIs
YSk7dGhpcy5kZWNvcmF0b3JzLnB1c2goWyJmbiA9ICIsdGhpcy5kZWNvcmF0b3JzLmZ1bmN0aW9u
Q2FsbChjLCIiLFsiZm4iLCJwcm9wcyIsImNvbnRhaW5lciIsZF0pLCIgfHwgZm47Il0pfSxpbnZv
a2VIZWxwZXI6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMucG9wU3RhY2soKSxlPXRoaXMuc2V0
dXBIZWxwZXIoYSxiKSxmPWM/W2UubmFtZSwiIHx8ICJdOiIiLGc9WyIoIl0uY29uY2F0KGYsZCk7
dGhpcy5vcHRpb25zLnN0cmljdHx8Zy5wdXNoKCIgfHwgIix0aGlzLmFsaWFzYWJsZSgiaGVscGVy
cy5oZWxwZXJNaXNzaW5nIikpLGcucHVzaCgiKSIpLHRoaXMucHVzaCh0aGlzLnNvdXJjZS5mdW5j
dGlvbkNhbGwoZywiY2FsbCIsZS5jYWxsUGFyYW1zKSl9LGludm9rZUtub3duSGVscGVyOmZ1bmN0
aW9uKGEsYil7dmFyIGM9dGhpcy5zZXR1cEhlbHBlcihhLGIpO3RoaXMucHVzaCh0aGlzLnNvdXJj
ZS5mdW5jdGlvbkNhbGwoYy5uYW1lLCJjYWxsIixjLmNhbGxQYXJhbXMpKX0saW52b2tlQW1iaWd1
b3VzOmZ1bmN0aW9uKGEsYil7dGhpcy51c2VSZWdpc3RlcigiaGVscGVyIik7dmFyIGM9dGhpcy5w
b3BTdGFjaygpO3RoaXMuZW1wdHlIYXNoKCk7dmFyIGQ9dGhpcy5zZXR1cEhlbHBlcigwLGEsYiks
ZT10aGlzLmxhc3RIZWxwZXI9dGhpcy5uYW1lTG9va3VwKCJoZWxwZXJzIixhLCJoZWxwZXIiKSxm
PVsiKCIsIihoZWxwZXIgPSAiLGUsIiB8fCAiLGMsIikiXTt0aGlzLm9wdGlvbnMuc3RyaWN0fHwo
ZlswXT0iKGhlbHBlciA9ICIsZi5wdXNoKCIgIT0gbnVsbCA/IGhlbHBlciA6ICIsdGhpcy5hbGlh
c2FibGUoImhlbHBlcnMuaGVscGVyTWlzc2luZyIpKSksdGhpcy5wdXNoKFsiKCIsZixkLnBhcmFt
c0luaXQ/WyIpLCgiLGQucGFyYW1zSW5pdF06W10sIiksIiwiKHR5cGVvZiBoZWxwZXIgPT09ICIs
dGhpcy5hbGlhc2FibGUoJyJmdW5jdGlvbiInKSwiID8gIix0aGlzLnNvdXJjZS5mdW5jdGlvbkNh
bGwoImhlbHBlciIsImNhbGwiLGQuY2FsbFBhcmFtcyksIiA6IGhlbHBlcikpIl0pfSxpbnZva2VQ
YXJ0aWFsOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1bXSxlPXRoaXMuc2V0dXBQYXJhbXMoYiwxLGQp
O2EmJihiPXRoaXMucG9wU3RhY2soKSxkZWxldGUgZS5uYW1lKSxjJiYoZS5pbmRlbnQ9SlNPTi5z
dHJpbmdpZnkoYykpLGUuaGVscGVycz0iaGVscGVycyIsZS5wYXJ0aWFscz0icGFydGlhbHMiLGUu
ZGVjb3JhdG9ycz0iY29udGFpbmVyLmRlY29yYXRvcnMiLGE/ZC51bnNoaWZ0KGIpOmQudW5zaGlm
dCh0aGlzLm5hbWVMb29rdXAoInBhcnRpYWxzIixiLCJwYXJ0aWFsIikpLHRoaXMub3B0aW9ucy5j
b21wYXQmJihlLmRlcHRocz0iZGVwdGhzIiksZT10aGlzLm9iamVjdExpdGVyYWwoZSksZC5wdXNo
KGUpLHRoaXMucHVzaCh0aGlzLnNvdXJjZS5mdW5jdGlvbkNhbGwoImNvbnRhaW5lci5pbnZva2VQ
YXJ0aWFsIiwiIixkKSl9LGFzc2lnblRvSGFzaDpmdW5jdGlvbihhKXt2YXIgYj10aGlzLnBvcFN0
YWNrKCksYz12b2lkIDAsZD12b2lkIDAsZT12b2lkIDA7dGhpcy50cmFja0lkcyYmKGU9dGhpcy5w
b3BTdGFjaygpKSx0aGlzLnN0cmluZ1BhcmFtcyYmKGQ9dGhpcy5wb3BTdGFjaygpLGM9dGhpcy5w
b3BTdGFjaygpKTt2YXIgZj10aGlzLmhhc2g7YyYmKGYuY29udGV4dHNbYV09YyksZCYmKGYudHlw
ZXNbYV09ZCksZSYmKGYuaWRzW2FdPWUpLGYudmFsdWVzW2FdPWJ9LHB1c2hJZDpmdW5jdGlvbihh
LGIsYyl7IkJsb2NrUGFyYW0iPT09YT90aGlzLnB1c2hTdGFja0xpdGVyYWwoImJsb2NrUGFyYW1z
WyIrYlswXSsiXS5wYXRoWyIrYlsxXSsiXSIrKGM/IiArICIrSlNPTi5zdHJpbmdpZnkoIi4iK2Mp
OiIiKSk6IlBhdGhFeHByZXNzaW9uIj09PWE/dGhpcy5wdXNoU3RyaW5nKGIpOiJTdWJFeHByZXNz
aW9uIj09PWE/dGhpcy5wdXNoU3RhY2tMaXRlcmFsKCJ0cnVlIik6dGhpcy5wdXNoU3RhY2tMaXRl
cmFsKCJudWxsIil9LGNvbXBpbGVyOmksY29tcGlsZUNoaWxkcmVuOmZ1bmN0aW9uKGEsYil7Zm9y
KHZhciBjPWEuY2hpbGRyZW4sZD12b2lkIDAsZT12b2lkIDAsZj0wLGc9Yy5sZW5ndGg7ZjxnO2Yr
Kyl7ZD1jW2ZdLGU9bmV3IHRoaXMuY29tcGlsZXI7dmFyIGg9dGhpcy5tYXRjaEV4aXN0aW5nUHJv
Z3JhbShkKTtpZihudWxsPT1oKXt0aGlzLmNvbnRleHQucHJvZ3JhbXMucHVzaCgiIik7dmFyIGk9
dGhpcy5jb250ZXh0LnByb2dyYW1zLmxlbmd0aDtkLmluZGV4PWksZC5uYW1lPSJwcm9ncmFtIitp
LHRoaXMuY29udGV4dC5wcm9ncmFtc1tpXT1lLmNvbXBpbGUoZCxiLHRoaXMuY29udGV4dCwhdGhp
cy5wcmVjb21waWxlKSx0aGlzLmNvbnRleHQuZGVjb3JhdG9yc1tpXT1lLmRlY29yYXRvcnMsdGhp
cy5jb250ZXh0LmVudmlyb25tZW50c1tpXT1kLHRoaXMudXNlRGVwdGhzPXRoaXMudXNlRGVwdGhz
fHxlLnVzZURlcHRocyx0aGlzLnVzZUJsb2NrUGFyYW1zPXRoaXMudXNlQmxvY2tQYXJhbXN8fGUu
dXNlQmxvY2tQYXJhbXMsZC51c2VEZXB0aHM9dGhpcy51c2VEZXB0aHMsZC51c2VCbG9ja1BhcmFt
cz10aGlzLnVzZUJsb2NrUGFyYW1zfWVsc2UgZC5pbmRleD1oLmluZGV4LGQubmFtZT0icHJvZ3Jh
bSIraC5pbmRleCx0aGlzLnVzZURlcHRocz10aGlzLnVzZURlcHRoc3x8aC51c2VEZXB0aHMsdGhp
cy51c2VCbG9ja1BhcmFtcz10aGlzLnVzZUJsb2NrUGFyYW1zfHxoLnVzZUJsb2NrUGFyYW1zfX0s
bWF0Y2hFeGlzdGluZ1Byb2dyYW06ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPTAsYz10aGlzLmNvbnRl
eHQuZW52aXJvbm1lbnRzLmxlbmd0aDtiPGM7YisrKXt2YXIgZD10aGlzLmNvbnRleHQuZW52aXJv
bm1lbnRzW2JdO2lmKGQmJmQuZXF1YWxzKGEpKXJldHVybiBkfX0scHJvZ3JhbUV4cHJlc3Npb246
ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5lbnZpcm9ubWVudC5jaGlsZHJlblthXSxjPVtiLmluZGV4
LCJkYXRhIixiLmJsb2NrUGFyYW1zXTtyZXR1cm4odGhpcy51c2VCbG9ja1BhcmFtc3x8dGhpcy51
c2VEZXB0aHMpJiZjLnB1c2goImJsb2NrUGFyYW1zIiksdGhpcy51c2VEZXB0aHMmJmMucHVzaCgi
ZGVwdGhzIiksImNvbnRhaW5lci5wcm9ncmFtKCIrYy5qb2luKCIsICIpKyIpIn0sdXNlUmVnaXN0
ZXI6ZnVuY3Rpb24oYSl7dGhpcy5yZWdpc3RlcnNbYV18fCh0aGlzLnJlZ2lzdGVyc1thXT0hMCx0
aGlzLnJlZ2lzdGVycy5saXN0LnB1c2goYSkpfSxwdXNoOmZ1bmN0aW9uKGEpe3JldHVybiBhIGlu
c3RhbmNlb2YgaHx8KGE9dGhpcy5zb3VyY2Uud3JhcChhKSksdGhpcy5pbmxpbmVTdGFjay5wdXNo
KGEpLGF9LHB1c2hTdGFja0xpdGVyYWw6ZnVuY3Rpb24oYSl7dGhpcy5wdXNoKG5ldyBoKGEpKX0s
cHVzaFNvdXJjZTpmdW5jdGlvbihhKXt0aGlzLnBlbmRpbmdDb250ZW50JiYodGhpcy5zb3VyY2Uu
cHVzaCh0aGlzLmFwcGVuZFRvQnVmZmVyKHRoaXMuc291cmNlLnF1b3RlZFN0cmluZyh0aGlzLnBl
bmRpbmdDb250ZW50KSx0aGlzLnBlbmRpbmdMb2NhdGlvbikpLHRoaXMucGVuZGluZ0NvbnRlbnQ9
dm9pZCAwKSxhJiZ0aGlzLnNvdXJjZS5wdXNoKGEpfSxyZXBsYWNlU3RhY2s6ZnVuY3Rpb24oYSl7
dmFyIGI9WyIoIl0sYz12b2lkIDAsZD12b2lkIDAsZT12b2lkIDA7aWYoIXRoaXMuaXNJbmxpbmUo
KSl0aHJvdyBuZXcga1siZGVmYXVsdCJdKCJyZXBsYWNlU3RhY2sgb24gbm9uLWlubGluZSIpO3Zh
ciBmPXRoaXMucG9wU3RhY2soITApO2lmKGYgaW5zdGFuY2VvZiBoKWM9W2YudmFsdWVdLGI9WyIo
IixjXSxlPSEwO2Vsc2V7ZD0hMDt2YXIgZz10aGlzLmluY3JTdGFjaygpO2I9WyIoKCIsdGhpcy5w
dXNoKGcpLCIgPSAiLGYsIikiXSxjPXRoaXMudG9wU3RhY2soKX12YXIgaT1hLmNhbGwodGhpcyxj
KTtlfHx0aGlzLnBvcFN0YWNrKCksZCYmdGhpcy5zdGFja1Nsb3QtLSx0aGlzLnB1c2goYi5jb25j
YXQoaSwiKSIpKX0saW5jclN0YWNrOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RhY2tTbG90Kyss
dGhpcy5zdGFja1Nsb3Q+dGhpcy5zdGFja1ZhcnMubGVuZ3RoJiZ0aGlzLnN0YWNrVmFycy5wdXNo
KCJzdGFjayIrdGhpcy5zdGFja1Nsb3QpLHRoaXMudG9wU3RhY2tOYW1lKCl9LHRvcFN0YWNrTmFt
ZTpmdW5jdGlvbigpe3JldHVybiJzdGFjayIrdGhpcy5zdGFja1Nsb3R9LGZsdXNoSW5saW5lOmZ1
bmN0aW9uKCl7dmFyIGE9dGhpcy5pbmxpbmVTdGFjazt0aGlzLmlubGluZVN0YWNrPVtdO2Zvcih2
YXIgYj0wLGM9YS5sZW5ndGg7YjxjO2IrKyl7dmFyIGQ9YVtiXTtpZihkIGluc3RhbmNlb2YgaCl0
aGlzLmNvbXBpbGVTdGFjay5wdXNoKGQpO2Vsc2V7dmFyIGU9dGhpcy5pbmNyU3RhY2soKTt0aGlz
LnB1c2hTb3VyY2UoW2UsIiA9ICIsZCwiOyJdKSx0aGlzLmNvbXBpbGVTdGFjay5wdXNoKGUpfX19
LGlzSW5saW5lOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5saW5lU3RhY2subGVuZ3RofSxwb3BT
dGFjazpmdW5jdGlvbihhKXt2YXIgYj10aGlzLmlzSW5saW5lKCksYz0oYj90aGlzLmlubGluZVN0
YWNrOnRoaXMuY29tcGlsZVN0YWNrKS5wb3AoKTtpZighYSYmYyBpbnN0YW5jZW9mIGgpcmV0dXJu
IGMudmFsdWU7aWYoIWIpe2lmKCF0aGlzLnN0YWNrU2xvdCl0aHJvdyBuZXcga1siZGVmYXVsdCJd
KCJJbnZhbGlkIHN0YWNrIHBvcCIpO3RoaXMuc3RhY2tTbG90LS19cmV0dXJuIGN9LHRvcFN0YWNr
OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5pc0lubGluZSgpP3RoaXMuaW5saW5lU3RhY2s6dGhpcy5j
b21waWxlU3RhY2ssYj1hW2EubGVuZ3RoLTFdO3JldHVybiBiIGluc3RhbmNlb2YgaD9iLnZhbHVl
OmJ9LGNvbnRleHROYW1lOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnVzZURlcHRocyYmYT8iZGVw
dGhzWyIrYSsiXSI6ImRlcHRoIithfSxxdW90ZWRTdHJpbmc6ZnVuY3Rpb24oYSl7cmV0dXJuIHRo
aXMuc291cmNlLnF1b3RlZFN0cmluZyhhKX0sb2JqZWN0TGl0ZXJhbDpmdW5jdGlvbihhKXtyZXR1
cm4gdGhpcy5zb3VyY2Uub2JqZWN0TGl0ZXJhbChhKX0sYWxpYXNhYmxlOmZ1bmN0aW9uKGEpe3Zh
ciBiPXRoaXMuYWxpYXNlc1thXTtyZXR1cm4gYj8oYi5yZWZlcmVuY2VDb3VudCsrLGIpOihiPXRo
aXMuYWxpYXNlc1thXT10aGlzLnNvdXJjZS53cmFwKGEpLGIuYWxpYXNhYmxlPSEwLGIucmVmZXJl
bmNlQ291bnQ9MSxiKX0sc2V0dXBIZWxwZXI6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPVtdLGU9dGhp
cy5zZXR1cEhlbHBlckFyZ3MoYixhLGQsYyksZj10aGlzLm5hbWVMb29rdXAoImhlbHBlcnMiLGIs
ImhlbHBlciIpLGc9dGhpcy5hbGlhc2FibGUodGhpcy5jb250ZXh0TmFtZSgwKSsiICE9IG51bGwg
PyAiK3RoaXMuY29udGV4dE5hbWUoMCkrIiA6IHt9Iik7cmV0dXJue3BhcmFtczpkLHBhcmFtc0lu
aXQ6ZSxuYW1lOmYsY2FsbFBhcmFtczpbZ10uY29uY2F0KGQpfX0sc2V0dXBQYXJhbXM6ZnVuY3Rp
b24oYSxiLGMpe3ZhciBkPXt9LGU9W10sZj1bXSxnPVtdLGg9IWMsaT12b2lkIDA7aCYmKGM9W10p
LGQubmFtZT10aGlzLnF1b3RlZFN0cmluZyhhKSxkLmhhc2g9dGhpcy5wb3BTdGFjaygpLHRoaXMu
dHJhY2tJZHMmJihkLmhhc2hJZHM9dGhpcy5wb3BTdGFjaygpKSx0aGlzLnN0cmluZ1BhcmFtcyYm
KGQuaGFzaFR5cGVzPXRoaXMucG9wU3RhY2soKSxkLmhhc2hDb250ZXh0cz10aGlzLnBvcFN0YWNr
KCkpO3ZhciBqPXRoaXMucG9wU3RhY2soKSxrPXRoaXMucG9wU3RhY2soKTsoa3x8aikmJihkLmZu
PWt8fCJjb250YWluZXIubm9vcCIsZC5pbnZlcnNlPWp8fCJjb250YWluZXIubm9vcCIpO2Zvcih2
YXIgbD1iO2wtLTspaT10aGlzLnBvcFN0YWNrKCksY1tsXT1pLHRoaXMudHJhY2tJZHMmJihnW2xd
PXRoaXMucG9wU3RhY2soKSksdGhpcy5zdHJpbmdQYXJhbXMmJihmW2xdPXRoaXMucG9wU3RhY2so
KSxlW2xdPXRoaXMucG9wU3RhY2soKSk7cmV0dXJuIGgmJihkLmFyZ3M9dGhpcy5zb3VyY2UuZ2Vu
ZXJhdGVBcnJheShjKSksdGhpcy50cmFja0lkcyYmKGQuaWRzPXRoaXMuc291cmNlLmdlbmVyYXRl
QXJyYXkoZykpLHRoaXMuc3RyaW5nUGFyYW1zJiYoZC50eXBlcz10aGlzLnNvdXJjZS5nZW5lcmF0
ZUFycmF5KGYpLGQuY29udGV4dHM9dGhpcy5zb3VyY2UuZ2VuZXJhdGVBcnJheShlKSksdGhpcy5v
cHRpb25zLmRhdGEmJihkLmRhdGE9ImRhdGEiKSx0aGlzLnVzZUJsb2NrUGFyYW1zJiYoZC5ibG9j
a1BhcmFtcz0iYmxvY2tQYXJhbXMiKSxkfSxzZXR1cEhlbHBlckFyZ3M6ZnVuY3Rpb24oYSxiLGMs
ZCl7dmFyIGU9dGhpcy5zZXR1cFBhcmFtcyhhLGIsYyk7cmV0dXJuIGU9dGhpcy5vYmplY3RMaXRl
cmFsKGUpLGQ/KHRoaXMudXNlUmVnaXN0ZXIoIm9wdGlvbnMiKSxjLnB1c2goIm9wdGlvbnMiKSxb
Im9wdGlvbnM9IixlXSk6Yz8oYy5wdXNoKGUpLCIiKTplfX0sZnVuY3Rpb24oKXtmb3IodmFyIGE9
ImJyZWFrIGVsc2UgbmV3IHZhciBjYXNlIGZpbmFsbHkgcmV0dXJuIHZvaWQgY2F0Y2ggZm9yIHN3
aXRjaCB3aGlsZSBjb250aW51ZSBmdW5jdGlvbiB0aGlzIHdpdGggZGVmYXVsdCBpZiB0aHJvdyBk
ZWxldGUgaW4gdHJ5IGRvIGluc3RhbmNlb2YgdHlwZW9mIGFic3RyYWN0IGVudW0gaW50IHNob3J0
IGJvb2xlYW4gZXhwb3J0IGludGVyZmFjZSBzdGF0aWMgYnl0ZSBleHRlbmRzIGxvbmcgc3VwZXIg
Y2hhciBmaW5hbCBuYXRpdmUgc3luY2hyb25pemVkIGNsYXNzIGZsb2F0IHBhY2thZ2UgdGhyb3dz
IGNvbnN0IGdvdG8gcHJpdmF0ZSB0cmFuc2llbnQgZGVidWdnZXIgaW1wbGVtZW50cyBwcm90ZWN0
ZWQgdm9sYXRpbGUgZG91YmxlIGltcG9ydCBwdWJsaWMgbGV0IHlpZWxkIGF3YWl0IG51bGwgdHJ1
ZSBmYWxzZSIuc3BsaXQoIiAiKSxiPWkuUkVTRVJWRURfV09SRFM9e30sYz0wLGQ9YS5sZW5ndGg7
YzxkO2MrKyliW2FbY11dPSEwfSgpLGkuaXNWYWxpZEphdmFTY3JpcHRWYXJpYWJsZU5hbWU9ZnVu
Y3Rpb24oYSl7cmV0dXJuIWkuUkVTRVJWRURfV09SRFNbYV0mJi9eW2EtekEtWl8kXVswLTlhLXpB
LVpfJF0qJC8udGVzdChhKX0sYi5leHBvcnRzPWl9KSxkZWZpbmUoImhhbmRsZWJhcnMiLFsiZXhw
b3J0cyIsIm1vZHVsZSIsIi4vaGFuZGxlYmFycy5ydW50aW1lIiwiLi9oYW5kbGViYXJzL2NvbXBp
bGVyL2FzdCIsIi4vaGFuZGxlYmFycy9jb21waWxlci9iYXNlIiwiLi9oYW5kbGViYXJzL2NvbXBp
bGVyL2NvbXBpbGVyIiwiLi9oYW5kbGViYXJzL2NvbXBpbGVyL2phdmFzY3JpcHQtY29tcGlsZXIi
LCIuL2hhbmRsZWJhcnMvY29tcGlsZXIvdmlzaXRvciIsIi4vaGFuZGxlYmFycy9uby1jb25mbGlj
dCJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmLGcsaCxpKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaihh
KXtyZXR1cm4gYSYmYS5fX2VzTW9kdWxlP2E6eyJkZWZhdWx0IjphfX1mdW5jdGlvbiBrKCl7dmFy
IGE9cSgpO3JldHVybiBhLmNvbXBpbGU9ZnVuY3Rpb24oYixjKXtyZXR1cm4gZi5jb21waWxlKGIs
YyxhKX0sYS5wcmVjb21waWxlPWZ1bmN0aW9uKGIsYyl7cmV0dXJuIGYucHJlY29tcGlsZShiLGMs
YSl9LGEuQVNUPW1bImRlZmF1bHQiXSxhLkNvbXBpbGVyPWYuQ29tcGlsZXIsYS5KYXZhU2NyaXB0
Q29tcGlsZXI9blsiZGVmYXVsdCJdLGEuUGFyc2VyPWUucGFyc2VyLGEucGFyc2U9ZS5wYXJzZSxh
fXZhciBsPWooYyksbT1qKGQpLG49aihnKSxvPWooaCkscD1qKGkpLHE9bFsiZGVmYXVsdCJdLmNy
ZWF0ZSxyPWsoKTtyLmNyZWF0ZT1rLHBbImRlZmF1bHQiXShyKSxyLlZpc2l0b3I9b1siZGVmYXVs
dCJdLHJbImRlZmF1bHQiXT1yLGIuZXhwb3J0cz1yfSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGVi
YXJzL2Rpc3QvaGFuZGxlYmFycy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMv
aGFuZGxlYmFycy9kaXN0L2hhbmRsZWJhcnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzExZWUzM2NiZTA0NGJh
YmFiYmExODRhNjY4MzI1ODgxYTJiNDA3NQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2hhbmRsZWJhcnMuanMKQEAgLTAs
MCArMSw0NzEzIEBACisvKiohCisKKyBAbGljZW5zZQorIGhhbmRsZWJhcnMgdjQuMC42CisKK0Nv
cHlyaWdodCAoQykgMjAxMS0yMDE2IGJ5IFllaHVkYSBLYXR6CisKK1Blcm1pc3Npb24gaXMgaGVy
ZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNv
cHkKK29mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAo
dGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCitpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmlj
dGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCit0byB1c2UsIGNv
cHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9v
ciBzZWxsCitjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8g
d2hvbSB0aGUgU29mdHdhcmUgaXMKK2Z1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnM6CisKK1RoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0
aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCithbGwgY29waWVzIG9y
IHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKworVEhFIFNPRlRXQVJFIElT
IFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Mg
T1IKK0lNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZLAorRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5E
IE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCitBVVRIT1JTIE9SIENPUFlS
SUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCitM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVS
V0lTRSwgQVJJU0lORyBGUk9NLAorT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09G
VFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgorVEhFIFNPRlRXQVJFLgorCisq
LworLyoqIQorCisgQGxpY2Vuc2UKKyBoYW5kbGViYXJzIHY0LjAuNgorCitDb3B5cmlnaHQgKEMp
IDIwMTEtMjAxNiBieSBZZWh1ZGEgS2F0egorCitQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVk
LCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CitvZiB0aGlz
IHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdh
cmUiKSwgdG8gZGVhbAoraW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1
ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwordG8gdXNlLCBjb3B5LCBtb2RpZnks
IG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAorY29w
aWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNv
ZnR3YXJlIGlzCitmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zOgorCitUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNz
aW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorYWxsIGNvcGllcyBvciBzdWJzdGFudGlh
bCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisKK1RIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAi
QVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCitJTVBMSUVE
LCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSwKK0ZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5H
RU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVS
UyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorTElBQklMSVRZLCBX
SEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJ
TkcgRlJPTSwKK09VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRI
RSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4KK1RIRSBTT0ZUV0FSRS4KKworKi8KKy8qKiEKKwor
IEBsaWNlbnNlCisgaGFuZGxlYmFycyB2NC4wLjYKKworQ29weXJpZ2h0IChDKSAyMDExLTIwMTYg
YnkgWWVodWRhIEthdHoKKworUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBj
aGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQorb2YgdGhpcyBzb2Z0d2FyZSBh
bmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRl
YWwKK2luIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91
dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKK3RvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVi
bGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKK2NvcGllcyBvZiB0aGUg
U29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwor
ZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoK
KworVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ug
c2hhbGwgYmUgaW5jbHVkZWQgaW4KK2FsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMg
b2YgdGhlIFNvZnR3YXJlLgorCitUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lU
SE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorSU1QTElFRCwgSU5DTFVESU5H
IEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCitG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUKK0FVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxF
IEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKK0xJQUJJTElUWSwgV0hFVEhFUiBJTiBB
TiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCitP
VVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9U
SEVSIERFQUxJTkdTIElOCitUSEUgU09GVFdBUkUuCisKKyovCisoZnVuY3Rpb24gd2VicGFja1Vu
aXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkgeworICAgIGlmKHR5cGVvZiBl
eHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0JykKKyAgICAg
ICAgbW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7CisgICAgZWxzZSBpZih0eXBlb2YgZGVmaW5l
ID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpCisgICAgICAgIGRlZmluZShbXSwgZmFjdG9y
eSk7CisgICAgZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpCisgICAgICAgIGV4
cG9ydHNbIkhhbmRsZWJhcnMiXSA9IGZhY3RvcnkoKTsKKyAgICBlbHNlCisgICAgICAgIHJvb3Rb
IkhhbmRsZWJhcnMiXSA9IGZhY3RvcnkoKTsKK30pKHRoaXMsIGZ1bmN0aW9uKCkgeworcmV0dXJu
IC8qKioqKiovIChmdW5jdGlvbihtb2R1bGVzKSB7IC8vIHdlYnBhY2tCb290c3RyYXAKKy8qKioq
KiovICAgIC8vIFRoZSBtb2R1bGUgY2FjaGUKKy8qKioqKiovICAgIHZhciBpbnN0YWxsZWRNb2R1
bGVzID0ge307CisKKy8qKioqKiovICAgIC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uCisvKioqKioq
LyAgICBmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7CisKKy8qKioqKiov
ICAgICAgICAvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGUKKy8qKioqKiovICAgICAgICBp
ZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkKKy8qKioqKiovICAgICAgICAgICAgcmV0dXJu
IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7CisKKy8qKioqKiovICAgICAgICAv
LyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKQorLyoqKioq
Ki8gICAgICAgIHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHsKKy8q
KioqKiovICAgICAgICAgICAgZXhwb3J0czoge30sCisvKioqKioqLyAgICAgICAgICAgIGlkOiBt
b2R1bGVJZCwKKy8qKioqKiovICAgICAgICAgICAgbG9hZGVkOiBmYWxzZQorLyoqKioqKi8gICAg
ICAgIH07CisKKy8qKioqKiovICAgICAgICAvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb24K
Ky8qKioqKiovICAgICAgICBtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBt
b2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTsKKworLyoqKioqKi8g
ICAgICAgIC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWQKKy8qKioqKiovICAgICAgICBtb2R1
bGUubG9hZGVkID0gdHJ1ZTsKKworLyoqKioqKi8gICAgICAgIC8vIFJldHVybiB0aGUgZXhwb3J0
cyBvZiB0aGUgbW9kdWxlCisvKioqKioqLyAgICAgICAgcmV0dXJuIG1vZHVsZS5leHBvcnRzOwor
LyoqKioqKi8gICAgfQorCisKKy8qKioqKiovICAgIC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmpl
Y3QgKF9fd2VicGFja19tb2R1bGVzX18pCisvKioqKioqLyAgICBfX3dlYnBhY2tfcmVxdWlyZV9f
Lm0gPSBtb2R1bGVzOworCisvKioqKioqLyAgICAvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZQor
LyoqKioqKi8gICAgX193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlczsKKwor
LyoqKioqKi8gICAgLy8gX193ZWJwYWNrX3B1YmxpY19wYXRoX18KKy8qKioqKiovICAgIF9fd2Vi
cGFja19yZXF1aXJlX18ucCA9ICIiOworCisvKioqKioqLyAgICAvLyBMb2FkIGVudHJ5IG1vZHVs
ZSBhbmQgcmV0dXJuIGV4cG9ydHMKKy8qKioqKiovICAgIHJldHVybiBfX3dlYnBhY2tfcmVxdWly
ZV9fKDApOworLyoqKioqKi8gfSkKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKioqKioqLyAoWworLyog
MCAqLworLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9f
KSB7CisKKyAgICAndXNlIHN0cmljdCc7CisKKyAgICB2YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVs
dCA9IF9fd2VicGFja19yZXF1aXJlX18oMSlbJ2RlZmF1bHQnXTsKKworICAgIGV4cG9ydHMuX19l
c01vZHVsZSA9IHRydWU7CisKKyAgICB2YXIgX2hhbmRsZWJhcnNSdW50aW1lID0gX193ZWJwYWNr
X3JlcXVpcmVfXygyKTsKKworICAgIHZhciBfaGFuZGxlYmFyc1J1bnRpbWUyID0gX2ludGVyb3BS
ZXF1aXJlRGVmYXVsdChfaGFuZGxlYmFyc1J1bnRpbWUpOworCisgICAgLy8gQ29tcGlsZXIgaW1w
b3J0cworCisgICAgdmFyIF9oYW5kbGViYXJzQ29tcGlsZXJBc3QgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDI0KTsKKworICAgIHZhciBfaGFuZGxlYmFyc0NvbXBpbGVyQXN0MiA9IF9pbnRlcm9wUmVx
dWlyZURlZmF1bHQoX2hhbmRsZWJhcnNDb21waWxlckFzdCk7CisKKyAgICB2YXIgX2hhbmRsZWJh
cnNDb21waWxlckJhc2UgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI1KTsKKworICAgIHZhciBfaGFu
ZGxlYmFyc0NvbXBpbGVyQ29tcGlsZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMwKTsKKworICAg
IHZhciBfaGFuZGxlYmFyc0NvbXBpbGVySmF2YXNjcmlwdENvbXBpbGVyID0gX193ZWJwYWNrX3Jl
cXVpcmVfXygzMSk7CisKKyAgICB2YXIgX2hhbmRsZWJhcnNDb21waWxlckphdmFzY3JpcHRDb21w
aWxlcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9oYW5kbGViYXJzQ29tcGlsZXJKYXZhc2Ny
aXB0Q29tcGlsZXIpOworCisgICAgdmFyIF9oYW5kbGViYXJzQ29tcGlsZXJWaXNpdG9yID0gX193
ZWJwYWNrX3JlcXVpcmVfXygyOCk7CisKKyAgICB2YXIgX2hhbmRsZWJhcnNDb21waWxlclZpc2l0
b3IyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaGFuZGxlYmFyc0NvbXBpbGVyVmlzaXRvcik7
CisKKyAgICB2YXIgX2hhbmRsZWJhcnNOb0NvbmZsaWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygy
Myk7CisKKyAgICB2YXIgX2hhbmRsZWJhcnNOb0NvbmZsaWN0MiA9IF9pbnRlcm9wUmVxdWlyZURl
ZmF1bHQoX2hhbmRsZWJhcnNOb0NvbmZsaWN0KTsKKworICAgIHZhciBfY3JlYXRlID0gX2hhbmRs
ZWJhcnNSdW50aW1lMlsnZGVmYXVsdCddLmNyZWF0ZTsKKyAgICBmdW5jdGlvbiBjcmVhdGUoKSB7
CisgICAgICB2YXIgaGIgPSBfY3JlYXRlKCk7CisKKyAgICAgIGhiLmNvbXBpbGUgPSBmdW5jdGlv
biAoaW5wdXQsIG9wdGlvbnMpIHsKKyAgICAgICAgcmV0dXJuIF9oYW5kbGViYXJzQ29tcGlsZXJD
b21waWxlci5jb21waWxlKGlucHV0LCBvcHRpb25zLCBoYik7CisgICAgICB9OworICAgICAgaGIu
cHJlY29tcGlsZSA9IGZ1bmN0aW9uIChpbnB1dCwgb3B0aW9ucykgeworICAgICAgICByZXR1cm4g
X2hhbmRsZWJhcnNDb21waWxlckNvbXBpbGVyLnByZWNvbXBpbGUoaW5wdXQsIG9wdGlvbnMsIGhi
KTsKKyAgICAgIH07CisKKyAgICAgIGhiLkFTVCA9IF9oYW5kbGViYXJzQ29tcGlsZXJBc3QyWydk
ZWZhdWx0J107CisgICAgICBoYi5Db21waWxlciA9IF9oYW5kbGViYXJzQ29tcGlsZXJDb21waWxl
ci5Db21waWxlcjsKKyAgICAgIGhiLkphdmFTY3JpcHRDb21waWxlciA9IF9oYW5kbGViYXJzQ29t
cGlsZXJKYXZhc2NyaXB0Q29tcGlsZXIyWydkZWZhdWx0J107CisgICAgICBoYi5QYXJzZXIgPSBf
aGFuZGxlYmFyc0NvbXBpbGVyQmFzZS5wYXJzZXI7CisgICAgICBoYi5wYXJzZSA9IF9oYW5kbGVi
YXJzQ29tcGlsZXJCYXNlLnBhcnNlOworCisgICAgICByZXR1cm4gaGI7CisgICAgfQorCisgICAg
dmFyIGluc3QgPSBjcmVhdGUoKTsKKyAgICBpbnN0LmNyZWF0ZSA9IGNyZWF0ZTsKKworICAgIF9o
YW5kbGViYXJzTm9Db25mbGljdDJbJ2RlZmF1bHQnXShpbnN0KTsKKworICAgIGluc3QuVmlzaXRv
ciA9IF9oYW5kbGViYXJzQ29tcGlsZXJWaXNpdG9yMlsnZGVmYXVsdCddOworCisgICAgaW5zdFsn
ZGVmYXVsdCddID0gaW5zdDsKKworICAgIGV4cG9ydHNbJ2RlZmF1bHQnXSA9IGluc3Q7CisgICAg
bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107CisKKy8qKiovIH0sCisvKiAxICov
CisvKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHsKKworICAgICJ1c2Ugc3RyaWN0IjsK
KworICAgIGV4cG9ydHNbImRlZmF1bHQiXSA9IGZ1bmN0aW9uIChvYmopIHsKKyAgICAgIHJldHVy
biBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7CisgICAgICAgICJkZWZhdWx0Ijogb2Jq
CisgICAgICB9OworICAgIH07CisKKyAgICBleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOworCisv
KioqLyB9LAorLyogMiAqLworLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBh
Y2tfcmVxdWlyZV9fKSB7CisKKyAgICAndXNlIHN0cmljdCc7CisKKyAgICB2YXIgX2ludGVyb3BS
ZXF1aXJlV2lsZGNhcmQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpWydkZWZhdWx0J107CisKKyAg
ICB2YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVsdCA9IF9fd2VicGFja19yZXF1aXJlX18oMSlbJ2Rl
ZmF1bHQnXTsKKworICAgIGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7CisKKyAgICB2YXIgX2hh
bmRsZWJhcnNCYXNlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTsKKworICAgIHZhciBiYXNlID0g
X2ludGVyb3BSZXF1aXJlV2lsZGNhcmQoX2hhbmRsZWJhcnNCYXNlKTsKKworICAgIC8vIEVhY2gg
b2YgdGhlc2UgYXVnbWVudCB0aGUgSGFuZGxlYmFycyBvYmplY3QuIE5vIG5lZWQgdG8gc2V0dXAg
aGVyZS4KKyAgICAvLyAoVGhpcyBpcyBkb25lIHRvIGVhc2lseSBzaGFyZSBjb2RlIGJldHdlZW4g
Y29tbW9uanMgYW5kIGJyb3dzZSBlbnZzKQorCisgICAgdmFyIF9oYW5kbGViYXJzU2FmZVN0cmlu
ZyA9IF9fd2VicGFja19yZXF1aXJlX18oMjEpOworCisgICAgdmFyIF9oYW5kbGViYXJzU2FmZVN0
cmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9oYW5kbGViYXJzU2FmZVN0cmluZyk7CisK
KyAgICB2YXIgX2hhbmRsZWJhcnNFeGNlcHRpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpOwor
CisgICAgdmFyIF9oYW5kbGViYXJzRXhjZXB0aW9uMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQo
X2hhbmRsZWJhcnNFeGNlcHRpb24pOworCisgICAgdmFyIF9oYW5kbGViYXJzVXRpbHMgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDUpOworCisgICAgdmFyIFV0aWxzID0gX2ludGVyb3BSZXF1aXJlV2ls
ZGNhcmQoX2hhbmRsZWJhcnNVdGlscyk7CisKKyAgICB2YXIgX2hhbmRsZWJhcnNSdW50aW1lID0g
X193ZWJwYWNrX3JlcXVpcmVfXygyMik7CisKKyAgICB2YXIgcnVudGltZSA9IF9pbnRlcm9wUmVx
dWlyZVdpbGRjYXJkKF9oYW5kbGViYXJzUnVudGltZSk7CisKKyAgICB2YXIgX2hhbmRsZWJhcnNO
b0NvbmZsaWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMyk7CisKKyAgICB2YXIgX2hhbmRsZWJh
cnNOb0NvbmZsaWN0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2hhbmRsZWJhcnNOb0NvbmZs
aWN0KTsKKworICAgIC8vIEZvciBjb21wYXRpYmlsaXR5IGFuZCB1c2FnZSBvdXRzaWRlIG9mIG1v
ZHVsZSBzeXN0ZW1zLCBtYWtlIHRoZSBIYW5kbGViYXJzIG9iamVjdCBhIG5hbWVzcGFjZQorICAg
IGZ1bmN0aW9uIGNyZWF0ZSgpIHsKKyAgICAgIHZhciBoYiA9IG5ldyBiYXNlLkhhbmRsZWJhcnNF
bnZpcm9ubWVudCgpOworCisgICAgICBVdGlscy5leHRlbmQoaGIsIGJhc2UpOworICAgICAgaGIu
U2FmZVN0cmluZyA9IF9oYW5kbGViYXJzU2FmZVN0cmluZzJbJ2RlZmF1bHQnXTsKKyAgICAgIGhi
LkV4Y2VwdGlvbiA9IF9oYW5kbGViYXJzRXhjZXB0aW9uMlsnZGVmYXVsdCddOworICAgICAgaGIu
VXRpbHMgPSBVdGlsczsKKyAgICAgIGhiLmVzY2FwZUV4cHJlc3Npb24gPSBVdGlscy5lc2NhcGVF
eHByZXNzaW9uOworCisgICAgICBoYi5WTSA9IHJ1bnRpbWU7CisgICAgICBoYi50ZW1wbGF0ZSA9
IGZ1bmN0aW9uIChzcGVjKSB7CisgICAgICAgIHJldHVybiBydW50aW1lLnRlbXBsYXRlKHNwZWMs
IGhiKTsKKyAgICAgIH07CisKKyAgICAgIHJldHVybiBoYjsKKyAgICB9CisKKyAgICB2YXIgaW5z
dCA9IGNyZWF0ZSgpOworICAgIGluc3QuY3JlYXRlID0gY3JlYXRlOworCisgICAgX2hhbmRsZWJh
cnNOb0NvbmZsaWN0MlsnZGVmYXVsdCddKGluc3QpOworCisgICAgaW5zdFsnZGVmYXVsdCddID0g
aW5zdDsKKworICAgIGV4cG9ydHNbJ2RlZmF1bHQnXSA9IGluc3Q7CisgICAgbW9kdWxlLmV4cG9y
dHMgPSBleHBvcnRzWydkZWZhdWx0J107CisKKy8qKiovIH0sCisvKiAzICovCisvKioqLyBmdW5j
dGlvbihtb2R1bGUsIGV4cG9ydHMpIHsKKworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGV4cG9y
dHNbImRlZmF1bHQiXSA9IGZ1bmN0aW9uIChvYmopIHsKKyAgICAgIGlmIChvYmogJiYgb2JqLl9f
ZXNNb2R1bGUpIHsKKyAgICAgICAgcmV0dXJuIG9iajsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHZhciBuZXdPYmogPSB7fTsKKworICAgICAgICBpZiAob2JqICE9IG51bGwpIHsKKyAgICAgICAg
ICBmb3IgKHZhciBrZXkgaW4gb2JqKSB7CisgICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlw
ZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsK
KyAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBuZXdPYmpbImRlZmF1bHQiXSA9IG9i
ajsKKyAgICAgICAgcmV0dXJuIG5ld09iajsKKyAgICAgIH0KKyAgICB9OworCisgICAgZXhwb3J0
cy5fX2VzTW9kdWxlID0gdHJ1ZTsKKworLyoqKi8gfSwKKy8qIDQgKi8KKy8qKiovIGZ1bmN0aW9u
KG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgeworCisgICAgJ3VzZSBzdHJp
Y3QnOworCisgICAgdmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDEpWydkZWZhdWx0J107CisKKyAgICBleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOworICAg
IGV4cG9ydHMuSGFuZGxlYmFyc0Vudmlyb25tZW50ID0gSGFuZGxlYmFyc0Vudmlyb25tZW50Owor
CisgICAgdmFyIF91dGlscyA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7CisKKyAgICB2YXIgX2V4
Y2VwdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oNik7CisKKyAgICB2YXIgX2V4Y2VwdGlvbjIg
PSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9leGNlcHRpb24pOworCisgICAgdmFyIF9oZWxwZXJz
ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMCk7CisKKyAgICB2YXIgX2RlY29yYXRvcnMgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDE4KTsKKworICAgIHZhciBfbG9nZ2VyID0gX193ZWJwYWNrX3JlcXVp
cmVfXygyMCk7CisKKyAgICB2YXIgX2xvZ2dlcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9s
b2dnZXIpOworCisgICAgdmFyIFZFUlNJT04gPSAnNC4wLjUnOworICAgIGV4cG9ydHMuVkVSU0lP
TiA9IFZFUlNJT047CisgICAgdmFyIENPTVBJTEVSX1JFVklTSU9OID0gNzsKKworICAgIGV4cG9y
dHMuQ09NUElMRVJfUkVWSVNJT04gPSBDT01QSUxFUl9SRVZJU0lPTjsKKyAgICB2YXIgUkVWSVNJ
T05fQ0hBTkdFUyA9IHsKKyAgICAgIDE6ICc8PSAxLjAucmMuMicsIC8vIDEuMC5yYy4yIGlzIGFj
dHVhbGx5IHJldjIgYnV0IGRvZXNuJ3QgcmVwb3J0IGl0CisgICAgICAyOiAnPT0gMS4wLjAtcmMu
MycsCisgICAgICAzOiAnPT0gMS4wLjAtcmMuNCcsCisgICAgICA0OiAnPT0gMS54LngnLAorICAg
ICAgNTogJz09IDIuMC4wLWFscGhhLngnLAorICAgICAgNjogJz49IDIuMC4wLWJldGEuMScsCisg
ICAgICA3OiAnPj0gNC4wLjAnCisgICAgfTsKKworICAgIGV4cG9ydHMuUkVWSVNJT05fQ0hBTkdF
UyA9IFJFVklTSU9OX0NIQU5HRVM7CisgICAgdmFyIG9iamVjdFR5cGUgPSAnW29iamVjdCBPYmpl
Y3RdJzsKKworICAgIGZ1bmN0aW9uIEhhbmRsZWJhcnNFbnZpcm9ubWVudChoZWxwZXJzLCBwYXJ0
aWFscywgZGVjb3JhdG9ycykgeworICAgICAgdGhpcy5oZWxwZXJzID0gaGVscGVycyB8fCB7fTsK
KyAgICAgIHRoaXMucGFydGlhbHMgPSBwYXJ0aWFscyB8fCB7fTsKKyAgICAgIHRoaXMuZGVjb3Jh
dG9ycyA9IGRlY29yYXRvcnMgfHwge307CisKKyAgICAgIF9oZWxwZXJzLnJlZ2lzdGVyRGVmYXVs
dEhlbHBlcnModGhpcyk7CisgICAgICBfZGVjb3JhdG9ycy5yZWdpc3RlckRlZmF1bHREZWNvcmF0
b3JzKHRoaXMpOworICAgIH0KKworICAgIEhhbmRsZWJhcnNFbnZpcm9ubWVudC5wcm90b3R5cGUg
PSB7CisgICAgICBjb25zdHJ1Y3RvcjogSGFuZGxlYmFyc0Vudmlyb25tZW50LAorCisgICAgICBs
b2dnZXI6IF9sb2dnZXIyWydkZWZhdWx0J10sCisgICAgICBsb2c6IF9sb2dnZXIyWydkZWZhdWx0
J10ubG9nLAorCisgICAgICByZWdpc3RlckhlbHBlcjogZnVuY3Rpb24gcmVnaXN0ZXJIZWxwZXIo
bmFtZSwgZm4pIHsKKyAgICAgICAgaWYgKF91dGlscy50b1N0cmluZy5jYWxsKG5hbWUpID09PSBv
YmplY3RUeXBlKSB7CisgICAgICAgICAgaWYgKGZuKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcg
X2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnQXJnIG5vdCBzdXBwb3J0ZWQgd2l0aCBtdWx0aXBsZSBo
ZWxwZXJzJyk7CisgICAgICAgICAgfQorICAgICAgICAgIF91dGlscy5leHRlbmQodGhpcy5oZWxw
ZXJzLCBuYW1lKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICB0aGlzLmhlbHBlcnNbbmFt
ZV0gPSBmbjsKKyAgICAgICAgfQorICAgICAgfSwKKyAgICAgIHVucmVnaXN0ZXJIZWxwZXI6IGZ1
bmN0aW9uIHVucmVnaXN0ZXJIZWxwZXIobmFtZSkgeworICAgICAgICBkZWxldGUgdGhpcy5oZWxw
ZXJzW25hbWVdOworICAgICAgfSwKKworICAgICAgcmVnaXN0ZXJQYXJ0aWFsOiBmdW5jdGlvbiBy
ZWdpc3RlclBhcnRpYWwobmFtZSwgcGFydGlhbCkgeworICAgICAgICBpZiAoX3V0aWxzLnRvU3Ry
aW5nLmNhbGwobmFtZSkgPT09IG9iamVjdFR5cGUpIHsKKyAgICAgICAgICBfdXRpbHMuZXh0ZW5k
KHRoaXMucGFydGlhbHMsIG5hbWUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIGlmICh0
eXBlb2YgcGFydGlhbCA9PT0gJ3VuZGVmaW5lZCcpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBf
ZXhjZXB0aW9uMlsnZGVmYXVsdCddKCdBdHRlbXB0aW5nIHRvIHJlZ2lzdGVyIGEgcGFydGlhbCBj
YWxsZWQgIicgKyBuYW1lICsgJyIgYXMgdW5kZWZpbmVkJyk7CisgICAgICAgICAgfQorICAgICAg
ICAgIHRoaXMucGFydGlhbHNbbmFtZV0gPSBwYXJ0aWFsOworICAgICAgICB9CisgICAgICB9LAor
ICAgICAgdW5yZWdpc3RlclBhcnRpYWw6IGZ1bmN0aW9uIHVucmVnaXN0ZXJQYXJ0aWFsKG5hbWUp
IHsKKyAgICAgICAgZGVsZXRlIHRoaXMucGFydGlhbHNbbmFtZV07CisgICAgICB9LAorCisgICAg
ICByZWdpc3RlckRlY29yYXRvcjogZnVuY3Rpb24gcmVnaXN0ZXJEZWNvcmF0b3IobmFtZSwgZm4p
IHsKKyAgICAgICAgaWYgKF91dGlscy50b1N0cmluZy5jYWxsKG5hbWUpID09PSBvYmplY3RUeXBl
KSB7CisgICAgICAgICAgaWYgKGZuKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlv
bjJbJ2RlZmF1bHQnXSgnQXJnIG5vdCBzdXBwb3J0ZWQgd2l0aCBtdWx0aXBsZSBkZWNvcmF0b3Jz
Jyk7CisgICAgICAgICAgfQorICAgICAgICAgIF91dGlscy5leHRlbmQodGhpcy5kZWNvcmF0b3Jz
LCBuYW1lKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICB0aGlzLmRlY29yYXRvcnNbbmFt
ZV0gPSBmbjsKKyAgICAgICAgfQorICAgICAgfSwKKyAgICAgIHVucmVnaXN0ZXJEZWNvcmF0b3I6
IGZ1bmN0aW9uIHVucmVnaXN0ZXJEZWNvcmF0b3IobmFtZSkgeworICAgICAgICBkZWxldGUgdGhp
cy5kZWNvcmF0b3JzW25hbWVdOworICAgICAgfQorICAgIH07CisKKyAgICB2YXIgbG9nID0gX2xv
Z2dlcjJbJ2RlZmF1bHQnXS5sb2c7CisKKyAgICBleHBvcnRzLmxvZyA9IGxvZzsKKyAgICBleHBv
cnRzLmNyZWF0ZUZyYW1lID0gX3V0aWxzLmNyZWF0ZUZyYW1lOworICAgIGV4cG9ydHMubG9nZ2Vy
ID0gX2xvZ2dlcjJbJ2RlZmF1bHQnXTsKKworLyoqKi8gfSwKKy8qIDUgKi8KKy8qKiovIGZ1bmN0
aW9uKG1vZHVsZSwgZXhwb3J0cykgeworCisgICAgJ3VzZSBzdHJpY3QnOworCisgICAgZXhwb3J0
cy5fX2VzTW9kdWxlID0gdHJ1ZTsKKyAgICBleHBvcnRzLmV4dGVuZCA9IGV4dGVuZDsKKyAgICBl
eHBvcnRzLmluZGV4T2YgPSBpbmRleE9mOworICAgIGV4cG9ydHMuZXNjYXBlRXhwcmVzc2lvbiA9
IGVzY2FwZUV4cHJlc3Npb247CisgICAgZXhwb3J0cy5pc0VtcHR5ID0gaXNFbXB0eTsKKyAgICBl
eHBvcnRzLmNyZWF0ZUZyYW1lID0gY3JlYXRlRnJhbWU7CisgICAgZXhwb3J0cy5ibG9ja1BhcmFt
cyA9IGJsb2NrUGFyYW1zOworICAgIGV4cG9ydHMuYXBwZW5kQ29udGV4dFBhdGggPSBhcHBlbmRD
b250ZXh0UGF0aDsKKyAgICB2YXIgZXNjYXBlID0geworICAgICAgJyYnOiAnJmFtcDsnLAorICAg
ICAgJzwnOiAnJmx0OycsCisgICAgICAnPic6ICcmZ3Q7JywKKyAgICAgICciJzogJyZxdW90Oycs
CisgICAgICAiJyI6ICcmI3gyNzsnLAorICAgICAgJ2AnOiAnJiN4NjA7JywKKyAgICAgICc9Jzog
JyYjeDNEOycKKyAgICB9OworCisgICAgdmFyIGJhZENoYXJzID0gL1smPD4iJ2A9XS9nLAorICAg
ICAgICBwb3NzaWJsZSA9IC9bJjw+IidgPV0vOworCisgICAgZnVuY3Rpb24gZXNjYXBlQ2hhcihj
aHIpIHsKKyAgICAgIHJldHVybiBlc2NhcGVbY2hyXTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBl
eHRlbmQob2JqIC8qICwgLi4uc291cmNlICovKSB7CisgICAgICBmb3IgKHZhciBpID0gMTsgaSA8
IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeworICAgICAgICBmb3IgKHZhciBrZXkgaW4gYXJndW1l
bnRzW2ldKSB7CisgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHku
Y2FsbChhcmd1bWVudHNbaV0sIGtleSkpIHsKKyAgICAgICAgICAgIG9ialtrZXldID0gYXJndW1l
bnRzW2ldW2tleV07CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisKKyAgICAgIHJl
dHVybiBvYmo7CisgICAgfQorCisgICAgdmFyIHRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50
b1N0cmluZzsKKworICAgIGV4cG9ydHMudG9TdHJpbmcgPSB0b1N0cmluZzsKKyAgICAvLyBTb3Vy
Y2VkIGZyb20gbG9kYXNoCisgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2Jlc3RpZWpzL2xvZGFz
aC9ibG9iL21hc3Rlci9MSUNFTlNFLnR4dAorICAgIC8qIGVzbGludC1kaXNhYmxlIGZ1bmMtc3R5
bGUgKi8KKyAgICB2YXIgaXNGdW5jdGlvbiA9IGZ1bmN0aW9uIGlzRnVuY3Rpb24odmFsdWUpIHsK
KyAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbic7CisgICAgfTsKKyAgICAv
LyBmYWxsYmFjayBmb3Igb2xkZXIgdmVyc2lvbnMgb2YgQ2hyb21lIGFuZCBTYWZhcmkKKyAgICAv
KiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLworICAgIGlmIChpc0Z1bmN0aW9uKC94LykpIHsKKyAg
ICAgIGV4cG9ydHMuaXNGdW5jdGlvbiA9IGlzRnVuY3Rpb24gPSBmdW5jdGlvbiAodmFsdWUpIHsK
KyAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0b1N0cmluZy5j
YWxsKHZhbHVlKSA9PT0gJ1tvYmplY3QgRnVuY3Rpb25dJzsKKyAgICAgIH07CisgICAgfQorICAg
IGV4cG9ydHMuaXNGdW5jdGlvbiA9IGlzRnVuY3Rpb247CisKKyAgICAvKiBlc2xpbnQtZW5hYmxl
IGZ1bmMtc3R5bGUgKi8KKworICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovCisgICAgdmFy
IGlzQXJyYXkgPSBBcnJheS5pc0FycmF5IHx8IGZ1bmN0aW9uICh2YWx1ZSkgeworICAgICAgcmV0
dXJuIHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgPyB0b1N0cmluZy5jYWxsKHZh
bHVlKSA9PT0gJ1tvYmplY3QgQXJyYXldJyA6IGZhbHNlOworICAgIH07CisKKyAgICBleHBvcnRz
LmlzQXJyYXkgPSBpc0FycmF5OworICAgIC8vIE9sZGVyIElFIHZlcnNpb25zIGRvIG5vdCBkaXJl
Y3RseSBzdXBwb3J0IGluZGV4T2Ygc28gd2UgbXVzdCBpbXBsZW1lbnQgb3VyIG93biwgc2FkbHku
CisKKyAgICBmdW5jdGlvbiBpbmRleE9mKGFycmF5LCB2YWx1ZSkgeworICAgICAgZm9yICh2YXIg
aSA9IDAsIGxlbiA9IGFycmF5Lmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgIGlmIChh
cnJheVtpXSA9PT0gdmFsdWUpIHsKKyAgICAgICAgICByZXR1cm4gaTsKKyAgICAgICAgfQorICAg
ICAgfQorICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGZ1bmN0aW9uIGVzY2FwZUV4cHJl
c3Npb24oc3RyaW5nKSB7CisgICAgICBpZiAodHlwZW9mIHN0cmluZyAhPT0gJ3N0cmluZycpIHsK
KyAgICAgICAgLy8gZG9uJ3QgZXNjYXBlIFNhZmVTdHJpbmdzLCBzaW5jZSB0aGV5J3JlIGFscmVh
ZHkgc2FmZQorICAgICAgICBpZiAoc3RyaW5nICYmIHN0cmluZy50b0hUTUwpIHsKKyAgICAgICAg
ICByZXR1cm4gc3RyaW5nLnRvSFRNTCgpOworICAgICAgICB9IGVsc2UgaWYgKHN0cmluZyA9PSBu
dWxsKSB7CisgICAgICAgICAgcmV0dXJuICcnOworICAgICAgICB9IGVsc2UgaWYgKCFzdHJpbmcp
IHsKKyAgICAgICAgICByZXR1cm4gc3RyaW5nICsgJyc7CisgICAgICAgIH0KKworICAgICAgICAv
LyBGb3JjZSBhIHN0cmluZyBjb252ZXJzaW9uIGFzIHRoaXMgd2lsbCBiZSBkb25lIGJ5IHRoZSBh
cHBlbmQgcmVnYXJkbGVzcyBhbmQKKyAgICAgICAgLy8gdGhlIHJlZ2V4IHRlc3Qgd2lsbCBkbyB0
aGlzIHRyYW5zcGFyZW50bHkgYmVoaW5kIHRoZSBzY2VuZXMsIGNhdXNpbmcgaXNzdWVzIGlmCisg
ICAgICAgIC8vIGFuIG9iamVjdCdzIHRvIHN0cmluZyBoYXMgZXNjYXBlZCBjaGFyYWN0ZXJzIGlu
IGl0LgorICAgICAgICBzdHJpbmcgPSAnJyArIHN0cmluZzsKKyAgICAgIH0KKworICAgICAgaWYg
KCFwb3NzaWJsZS50ZXN0KHN0cmluZykpIHsKKyAgICAgICAgcmV0dXJuIHN0cmluZzsKKyAgICAg
IH0KKyAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZShiYWRDaGFycywgZXNjYXBlQ2hhcik7Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gaXNFbXB0eSh2YWx1ZSkgeworICAgICAgaWYgKCF2YWx1ZSAm
JiB2YWx1ZSAhPT0gMCkgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIH0gZWxzZSBpZiAo
aXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID09PSAwKSB7CisgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgfQorICAg
IH0KKworICAgIGZ1bmN0aW9uIGNyZWF0ZUZyYW1lKG9iamVjdCkgeworICAgICAgdmFyIGZyYW1l
ID0gZXh0ZW5kKHt9LCBvYmplY3QpOworICAgICAgZnJhbWUuX3BhcmVudCA9IG9iamVjdDsKKyAg
ICAgIHJldHVybiBmcmFtZTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBibG9ja1BhcmFtcyhwYXJh
bXMsIGlkcykgeworICAgICAgcGFyYW1zLnBhdGggPSBpZHM7CisgICAgICByZXR1cm4gcGFyYW1z
OworICAgIH0KKworICAgIGZ1bmN0aW9uIGFwcGVuZENvbnRleHRQYXRoKGNvbnRleHRQYXRoLCBp
ZCkgeworICAgICAgcmV0dXJuIChjb250ZXh0UGF0aCA/IGNvbnRleHRQYXRoICsgJy4nIDogJycp
ICsgaWQ7CisgICAgfQorCisvKioqLyB9LAorLyogNiAqLworLyoqKi8gZnVuY3Rpb24obW9kdWxl
LCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CisKKyAgICAndXNlIHN0cmljdCc7CisK
KyAgICB2YXIgX09iamVjdCRkZWZpbmVQcm9wZXJ0eSA9IF9fd2VicGFja19yZXF1aXJlX18oNylb
J2RlZmF1bHQnXTsKKworICAgIGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7CisKKyAgICB2YXIg
ZXJyb3JQcm9wcyA9IFsnZGVzY3JpcHRpb24nLCAnZmlsZU5hbWUnLCAnbGluZU51bWJlcicsICdt
ZXNzYWdlJywgJ25hbWUnLCAnbnVtYmVyJywgJ3N0YWNrJ107CisKKyAgICBmdW5jdGlvbiBFeGNl
cHRpb24obWVzc2FnZSwgbm9kZSkgeworICAgICAgdmFyIGxvYyA9IG5vZGUgJiYgbm9kZS5sb2Ms
CisgICAgICAgICAgbGluZSA9IHVuZGVmaW5lZCwKKyAgICAgICAgICBjb2x1bW4gPSB1bmRlZmlu
ZWQ7CisgICAgICBpZiAobG9jKSB7CisgICAgICAgIGxpbmUgPSBsb2Muc3RhcnQubGluZTsKKyAg
ICAgICAgY29sdW1uID0gbG9jLnN0YXJ0LmNvbHVtbjsKKworICAgICAgICBtZXNzYWdlICs9ICcg
LSAnICsgbGluZSArICc6JyArIGNvbHVtbjsKKyAgICAgIH0KKworICAgICAgdmFyIHRtcCA9IEVy
cm9yLnByb3RvdHlwZS5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsIG1lc3NhZ2UpOworCisgICAgICAv
LyBVbmZvcnR1bmF0ZWx5IGVycm9ycyBhcmUgbm90IGVudW1lcmFibGUgaW4gQ2hyb21lIChhdCBs
ZWFzdCksIHNvIGBmb3IgcHJvcCBpbiB0bXBgIGRvZXNuJ3Qgd29yay4KKyAgICAgIGZvciAodmFy
IGlkeCA9IDA7IGlkeCA8IGVycm9yUHJvcHMubGVuZ3RoOyBpZHgrKykgeworICAgICAgICB0aGlz
W2Vycm9yUHJvcHNbaWR4XV0gPSB0bXBbZXJyb3JQcm9wc1tpZHhdXTsKKyAgICAgIH0KKworICAg
ICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi8KKyAgICAgIGlmIChFcnJvci5jYXB0dXJlU3Rh
Y2tUcmFjZSkgeworICAgICAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCBFeGNlcHRp
b24pOworICAgICAgfQorCisgICAgICB0cnkgeworICAgICAgICBpZiAobG9jKSB7CisgICAgICAg
ICAgdGhpcy5saW5lTnVtYmVyID0gbGluZTsKKworICAgICAgICAgIC8vIFdvcmsgYXJvdW5kIGlz
c3VlIHVuZGVyIHNhZmFyaSB3aGVyZSB3ZSBjYW4ndCBkaXJlY3RseSBzZXQgdGhlIGNvbHVtbiB2
YWx1ZQorICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovCisgICAgICAgICAgaWYg
KF9PYmplY3QkZGVmaW5lUHJvcGVydHkpIHsKKyAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eSh0aGlzLCAnY29sdW1uJywgeyB2YWx1ZTogY29sdW1uIH0pOworICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICB0aGlzLmNvbHVtbiA9IGNvbHVtbjsKKyAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgIH0gY2F0Y2ggKG5vcCkgeworICAgICAgICAvKiBJZ25vcmUgaWYgdGhlIGJy
b3dzZXIgaXMgdmVyeSBwYXJ0aWN1bGFyICovCisgICAgICB9CisgICAgfQorCisgICAgRXhjZXB0
aW9uLnByb3RvdHlwZSA9IG5ldyBFcnJvcigpOworCisgICAgZXhwb3J0c1snZGVmYXVsdCddID0g
RXhjZXB0aW9uOworICAgIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOworCisv
KioqLyB9LAorLyogNyAqLworLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBh
Y2tfcmVxdWlyZV9fKSB7CisKKyAgICBtb2R1bGUuZXhwb3J0cyA9IHsgImRlZmF1bHQiOiBfX3dl
YnBhY2tfcmVxdWlyZV9fKDgpLCBfX2VzTW9kdWxlOiB0cnVlIH07CisKKy8qKiovIH0sCisvKiA4
ICovCisvKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18p
IHsKKworICAgIHZhciAkID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5KTsKKyAgICBtb2R1bGUuZXhw
b3J0cyA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KGl0LCBrZXksIGRlc2MpeworICAgICAgcmV0
dXJuICQuc2V0RGVzYyhpdCwga2V5LCBkZXNjKTsKKyAgICB9OworCisvKioqLyB9LAorLyogOSAq
LworLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7CisKKyAgICB2YXIgJE9iamVjdCA9
IE9iamVjdDsKKyAgICBtb2R1bGUuZXhwb3J0cyA9IHsKKyAgICAgIGNyZWF0ZTogICAgICRPYmpl
Y3QuY3JlYXRlLAorICAgICAgZ2V0UHJvdG86ICAgJE9iamVjdC5nZXRQcm90b3R5cGVPZiwKKyAg
ICAgIGlzRW51bTogICAgIHt9LnByb3BlcnR5SXNFbnVtZXJhYmxlLAorICAgICAgZ2V0RGVzYzog
ICAgJE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsCisgICAgICBzZXREZXNjOiAgICAk
T2JqZWN0LmRlZmluZVByb3BlcnR5LAorICAgICAgc2V0RGVzY3M6ICAgJE9iamVjdC5kZWZpbmVQ
cm9wZXJ0aWVzLAorICAgICAgZ2V0S2V5czogICAgJE9iamVjdC5rZXlzLAorICAgICAgZ2V0TmFt
ZXM6ICAgJE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzLAorICAgICAgZ2V0U3ltYm9sczogJE9i
amVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMsCisgICAgICBlYWNoOiAgICAgICBbXS5mb3JFYWNo
CisgICAgfTsKKworLyoqKi8gfSwKKy8qIDEwICovCisvKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4
cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKKworICAgICd1c2Ugc3RyaWN0JzsKKworICAg
IHZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKVsnZGVm
YXVsdCddOworCisgICAgZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKKyAgICBleHBvcnRzLnJl
Z2lzdGVyRGVmYXVsdEhlbHBlcnMgPSByZWdpc3RlckRlZmF1bHRIZWxwZXJzOworCisgICAgdmFy
IF9oZWxwZXJzQmxvY2tIZWxwZXJNaXNzaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMSk7CisK
KyAgICB2YXIgX2hlbHBlcnNCbG9ja0hlbHBlck1pc3NpbmcyID0gX2ludGVyb3BSZXF1aXJlRGVm
YXVsdChfaGVscGVyc0Jsb2NrSGVscGVyTWlzc2luZyk7CisKKyAgICB2YXIgX2hlbHBlcnNFYWNo
ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMik7CisKKyAgICB2YXIgX2hlbHBlcnNFYWNoMiA9IF9p
bnRlcm9wUmVxdWlyZURlZmF1bHQoX2hlbHBlcnNFYWNoKTsKKworICAgIHZhciBfaGVscGVyc0hl
bHBlck1pc3NpbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzKTsKKworICAgIHZhciBfaGVscGVy
c0hlbHBlck1pc3NpbmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaGVscGVyc0hlbHBlck1p
c3NpbmcpOworCisgICAgdmFyIF9oZWxwZXJzSWYgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0KTsK
KworICAgIHZhciBfaGVscGVyc0lmMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2hlbHBlcnNJ
Zik7CisKKyAgICB2YXIgX2hlbHBlcnNMb2cgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1KTsKKwor
ICAgIHZhciBfaGVscGVyc0xvZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9oZWxwZXJzTG9n
KTsKKworICAgIHZhciBfaGVscGVyc0xvb2t1cCA9IF9fd2VicGFja19yZXF1aXJlX18oMTYpOwor
CisgICAgdmFyIF9oZWxwZXJzTG9va3VwMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2hlbHBl
cnNMb29rdXApOworCisgICAgdmFyIF9oZWxwZXJzV2l0aCA9IF9fd2VicGFja19yZXF1aXJlX18o
MTcpOworCisgICAgdmFyIF9oZWxwZXJzV2l0aDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9o
ZWxwZXJzV2l0aCk7CisKKyAgICBmdW5jdGlvbiByZWdpc3RlckRlZmF1bHRIZWxwZXJzKGluc3Rh
bmNlKSB7CisgICAgICBfaGVscGVyc0Jsb2NrSGVscGVyTWlzc2luZzJbJ2RlZmF1bHQnXShpbnN0
YW5jZSk7CisgICAgICBfaGVscGVyc0VhY2gyWydkZWZhdWx0J10oaW5zdGFuY2UpOworICAgICAg
X2hlbHBlcnNIZWxwZXJNaXNzaW5nMlsnZGVmYXVsdCddKGluc3RhbmNlKTsKKyAgICAgIF9oZWxw
ZXJzSWYyWydkZWZhdWx0J10oaW5zdGFuY2UpOworICAgICAgX2hlbHBlcnNMb2cyWydkZWZhdWx0
J10oaW5zdGFuY2UpOworICAgICAgX2hlbHBlcnNMb29rdXAyWydkZWZhdWx0J10oaW5zdGFuY2Up
OworICAgICAgX2hlbHBlcnNXaXRoMlsnZGVmYXVsdCddKGluc3RhbmNlKTsKKyAgICB9CisKKy8q
KiovIH0sCisvKiAxMSAqLworLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBh
Y2tfcmVxdWlyZV9fKSB7CisKKyAgICAndXNlIHN0cmljdCc7CisKKyAgICBleHBvcnRzLl9fZXNN
b2R1bGUgPSB0cnVlOworCisgICAgdmFyIF91dGlscyA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7
CisKKyAgICBleHBvcnRzWydkZWZhdWx0J10gPSBmdW5jdGlvbiAoaW5zdGFuY2UpIHsKKyAgICAg
IGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCdibG9ja0hlbHBlck1pc3NpbmcnLCBmdW5jdGlvbiAo
Y29udGV4dCwgb3B0aW9ucykgeworICAgICAgICB2YXIgaW52ZXJzZSA9IG9wdGlvbnMuaW52ZXJz
ZSwKKyAgICAgICAgICAgIGZuID0gb3B0aW9ucy5mbjsKKworICAgICAgICBpZiAoY29udGV4dCA9
PT0gdHJ1ZSkgeworICAgICAgICAgIHJldHVybiBmbih0aGlzKTsKKyAgICAgICAgfSBlbHNlIGlm
IChjb250ZXh0ID09PSBmYWxzZSB8fCBjb250ZXh0ID09IG51bGwpIHsKKyAgICAgICAgICByZXR1
cm4gaW52ZXJzZSh0aGlzKTsKKyAgICAgICAgfSBlbHNlIGlmIChfdXRpbHMuaXNBcnJheShjb250
ZXh0KSkgeworICAgICAgICAgIGlmIChjb250ZXh0Lmxlbmd0aCA+IDApIHsKKyAgICAgICAgICAg
IGlmIChvcHRpb25zLmlkcykgeworICAgICAgICAgICAgICBvcHRpb25zLmlkcyA9IFtvcHRpb25z
Lm5hbWVdOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gaW5zdGFuY2UuaGVs
cGVycy5lYWNoKGNvbnRleHQsIG9wdGlvbnMpOworICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICByZXR1cm4gaW52ZXJzZSh0aGlzKTsKKyAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgaWYgKG9wdGlvbnMuZGF0YSAmJiBvcHRpb25zLmlkcykgeworICAgICAgICAg
ICAgdmFyIGRhdGEgPSBfdXRpbHMuY3JlYXRlRnJhbWUob3B0aW9ucy5kYXRhKTsKKyAgICAgICAg
ICAgIGRhdGEuY29udGV4dFBhdGggPSBfdXRpbHMuYXBwZW5kQ29udGV4dFBhdGgob3B0aW9ucy5k
YXRhLmNvbnRleHRQYXRoLCBvcHRpb25zLm5hbWUpOworICAgICAgICAgICAgb3B0aW9ucyA9IHsg
ZGF0YTogZGF0YSB9OworICAgICAgICAgIH0KKworICAgICAgICAgIHJldHVybiBmbihjb250ZXh0
LCBvcHRpb25zKTsKKyAgICAgICAgfQorICAgICAgfSk7CisgICAgfTsKKworICAgIG1vZHVsZS5l
eHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOworCisvKioqLyB9LAorLyogMTIgKi8KKy8qKiov
IGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgeworCisgICAg
J3VzZSBzdHJpY3QnOworCisgICAgdmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDEpWydkZWZhdWx0J107CisKKyAgICBleHBvcnRzLl9fZXNNb2R1bGUgPSB0
cnVlOworCisgICAgdmFyIF91dGlscyA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7CisKKyAgICB2
YXIgX2V4Y2VwdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oNik7CisKKyAgICB2YXIgX2V4Y2Vw
dGlvbjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9leGNlcHRpb24pOworCisgICAgZXhwb3J0
c1snZGVmYXVsdCddID0gZnVuY3Rpb24gKGluc3RhbmNlKSB7CisgICAgICBpbnN0YW5jZS5yZWdp
c3RlckhlbHBlcignZWFjaCcsIGZ1bmN0aW9uIChjb250ZXh0LCBvcHRpb25zKSB7CisgICAgICAg
IGlmICghb3B0aW9ucykgeworICAgICAgICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVs
dCddKCdNdXN0IHBhc3MgaXRlcmF0b3IgdG8gI2VhY2gnKTsKKyAgICAgICAgfQorCisgICAgICAg
IHZhciBmbiA9IG9wdGlvbnMuZm4sCisgICAgICAgICAgICBpbnZlcnNlID0gb3B0aW9ucy5pbnZl
cnNlLAorICAgICAgICAgICAgaSA9IDAsCisgICAgICAgICAgICByZXQgPSAnJywKKyAgICAgICAg
ICAgIGRhdGEgPSB1bmRlZmluZWQsCisgICAgICAgICAgICBjb250ZXh0UGF0aCA9IHVuZGVmaW5l
ZDsKKworICAgICAgICBpZiAob3B0aW9ucy5kYXRhICYmIG9wdGlvbnMuaWRzKSB7CisgICAgICAg
ICAgY29udGV4dFBhdGggPSBfdXRpbHMuYXBwZW5kQ29udGV4dFBhdGgob3B0aW9ucy5kYXRhLmNv
bnRleHRQYXRoLCBvcHRpb25zLmlkc1swXSkgKyAnLic7CisgICAgICAgIH0KKworICAgICAgICBp
ZiAoX3V0aWxzLmlzRnVuY3Rpb24oY29udGV4dCkpIHsKKyAgICAgICAgICBjb250ZXh0ID0gY29u
dGV4dC5jYWxsKHRoaXMpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG9wdGlvbnMuZGF0YSkg
eworICAgICAgICAgIGRhdGEgPSBfdXRpbHMuY3JlYXRlRnJhbWUob3B0aW9ucy5kYXRhKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGV4ZWNJdGVyYXRpb24oZmllbGQsIGluZGV4LCBs
YXN0KSB7CisgICAgICAgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgICAgIGRhdGEua2V5ID0gZmll
bGQ7CisgICAgICAgICAgICBkYXRhLmluZGV4ID0gaW5kZXg7CisgICAgICAgICAgICBkYXRhLmZp
cnN0ID0gaW5kZXggPT09IDA7CisgICAgICAgICAgICBkYXRhLmxhc3QgPSAhIWxhc3Q7CisKKyAg
ICAgICAgICAgIGlmIChjb250ZXh0UGF0aCkgeworICAgICAgICAgICAgICBkYXRhLmNvbnRleHRQ
YXRoID0gY29udGV4dFBhdGggKyBmaWVsZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisK
KyAgICAgICAgICByZXQgPSByZXQgKyBmbihjb250ZXh0W2ZpZWxkXSwgeworICAgICAgICAgICAg
ZGF0YTogZGF0YSwKKyAgICAgICAgICAgIGJsb2NrUGFyYW1zOiBfdXRpbHMuYmxvY2tQYXJhbXMo
W2NvbnRleHRbZmllbGRdLCBmaWVsZF0sIFtjb250ZXh0UGF0aCArIGZpZWxkLCBudWxsXSkKKyAg
ICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChjb250ZXh0ICYmIHR5cGVvZiBj
b250ZXh0ID09PSAnb2JqZWN0JykgeworICAgICAgICAgIGlmIChfdXRpbHMuaXNBcnJheShjb250
ZXh0KSkgeworICAgICAgICAgICAgZm9yICh2YXIgaiA9IGNvbnRleHQubGVuZ3RoOyBpIDwgajsg
aSsrKSB7CisgICAgICAgICAgICAgIGlmIChpIGluIGNvbnRleHQpIHsKKyAgICAgICAgICAgICAg
ICBleGVjSXRlcmF0aW9uKGksIGksIGkgPT09IGNvbnRleHQubGVuZ3RoIC0gMSk7CisgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
dmFyIHByaW9yS2V5ID0gdW5kZWZpbmVkOworCisgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4g
Y29udGV4dCkgeworICAgICAgICAgICAgICBpZiAoY29udGV4dC5oYXNPd25Qcm9wZXJ0eShrZXkp
KSB7CisgICAgICAgICAgICAgICAgLy8gV2UncmUgcnVubmluZyB0aGUgaXRlcmF0aW9ucyBvbmUg
c3RlcCBvdXQgb2Ygc3luYyBzbyB3ZSBjYW4gZGV0ZWN0CisgICAgICAgICAgICAgICAgLy8gdGhl
IGxhc3QgaXRlcmF0aW9uIHdpdGhvdXQgaGF2ZSB0byBzY2FuIHRoZSBvYmplY3QgdHdpY2UgYW5k
IGNyZWF0ZQorICAgICAgICAgICAgICAgIC8vIGFuIGl0ZXJtZWRpYXRlIGtleXMgYXJyYXkuCisg
ICAgICAgICAgICAgICAgaWYgKHByaW9yS2V5ICE9PSB1bmRlZmluZWQpIHsKKyAgICAgICAgICAg
ICAgICAgIGV4ZWNJdGVyYXRpb24ocHJpb3JLZXksIGkgLSAxKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgcHJpb3JLZXkgPSBrZXk7CisgICAgICAgICAgICAgICAgaSsrOwor
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAocHJpb3JLZXkg
IT09IHVuZGVmaW5lZCkgeworICAgICAgICAgICAgICBleGVjSXRlcmF0aW9uKHByaW9yS2V5LCBp
IC0gMSwgdHJ1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisKKyAg
ICAgICAgaWYgKGkgPT09IDApIHsKKyAgICAgICAgICByZXQgPSBpbnZlcnNlKHRoaXMpOworICAg
ICAgICB9CisKKyAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgIH0pOworICAgIH07CisKKyAgICBt
b2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsKKworLyoqKi8gfSwKKy8qIDEzICov
CisvKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsK
KworICAgICd1c2Ugc3RyaWN0JzsKKworICAgIHZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0g
X193ZWJwYWNrX3JlcXVpcmVfXygxKVsnZGVmYXVsdCddOworCisgICAgZXhwb3J0cy5fX2VzTW9k
dWxlID0gdHJ1ZTsKKworICAgIHZhciBfZXhjZXB0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2
KTsKKworICAgIHZhciBfZXhjZXB0aW9uMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2V4Y2Vw
dGlvbik7CisKKyAgICBleHBvcnRzWydkZWZhdWx0J10gPSBmdW5jdGlvbiAoaW5zdGFuY2UpIHsK
KyAgICAgIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCdoZWxwZXJNaXNzaW5nJywgZnVuY3Rpb24g
KCkgLyogW2FyZ3MsIF1vcHRpb25zICoveworICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9
PT0gMSkgeworICAgICAgICAgIC8vIEEgbWlzc2luZyBmaWVsZCBpbiBhIHt7Zm9vfX0gY29uc3Ry
dWN0LgorICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgLy8gU29tZW9uZSBpcyBhY3R1YWxseSB0cnlpbmcgdG8gY2FsbCBzb21ldGhpbmcsIGJs
b3cgdXAuCisgICAgICAgICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ01pc3Np
bmcgaGVscGVyOiAiJyArIGFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoIC0gMV0ubmFtZSArICci
Jyk7CisgICAgICAgIH0KKyAgICAgIH0pOworICAgIH07CisKKyAgICBtb2R1bGUuZXhwb3J0cyA9
IGV4cG9ydHNbJ2RlZmF1bHQnXTsKKworLyoqKi8gfSwKKy8qIDE0ICovCisvKioqLyBmdW5jdGlv
bihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKKworICAgICd1c2Ugc3Ry
aWN0JzsKKworICAgIGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7CisKKyAgICB2YXIgX3V0aWxz
ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTsKKworICAgIGV4cG9ydHNbJ2RlZmF1bHQnXSA9IGZ1
bmN0aW9uIChpbnN0YW5jZSkgeworICAgICAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2lmJywg
ZnVuY3Rpb24gKGNvbmRpdGlvbmFsLCBvcHRpb25zKSB7CisgICAgICAgIGlmIChfdXRpbHMuaXNG
dW5jdGlvbihjb25kaXRpb25hbCkpIHsKKyAgICAgICAgICBjb25kaXRpb25hbCA9IGNvbmRpdGlv
bmFsLmNhbGwodGhpcyk7CisgICAgICAgIH0KKworICAgICAgICAvLyBEZWZhdWx0IGJlaGF2aW9y
IGlzIHRvIHJlbmRlciB0aGUgcG9zaXRpdmUgcGF0aCBpZiB0aGUgdmFsdWUgaXMgdHJ1dGh5IGFu
ZCBub3QgZW1wdHkuCisgICAgICAgIC8vIFRoZSBgaW5jbHVkZVplcm9gIG9wdGlvbiBtYXkgYmUg
c2V0IHRvIHRyZWF0IHRoZSBjb25kdGlvbmFsIGFzIHB1cmVseSBub3QgZW1wdHkgYmFzZWQgb24g
dGhlCisgICAgICAgIC8vIGJlaGF2aW9yIG9mIGlzRW1wdHkuIEVmZmVjdGl2ZWx5IHRoaXMgZGV0
ZXJtaW5lcyBpZiAwIGlzIGhhbmRsZWQgYnkgdGhlIHBvc2l0aXZlIHBhdGggb3IgbmVnYXRpdmUu
CisgICAgICAgIGlmICghb3B0aW9ucy5oYXNoLmluY2x1ZGVaZXJvICYmICFjb25kaXRpb25hbCB8
fCBfdXRpbHMuaXNFbXB0eShjb25kaXRpb25hbCkpIHsKKyAgICAgICAgICByZXR1cm4gb3B0aW9u
cy5pbnZlcnNlKHRoaXMpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIHJldHVybiBvcHRp
b25zLmZuKHRoaXMpOworICAgICAgICB9CisgICAgICB9KTsKKworICAgICAgaW5zdGFuY2UucmVn
aXN0ZXJIZWxwZXIoJ3VubGVzcycsIGZ1bmN0aW9uIChjb25kaXRpb25hbCwgb3B0aW9ucykgewor
ICAgICAgICByZXR1cm4gaW5zdGFuY2UuaGVscGVyc1snaWYnXS5jYWxsKHRoaXMsIGNvbmRpdGlv
bmFsLCB7IGZuOiBvcHRpb25zLmludmVyc2UsIGludmVyc2U6IG9wdGlvbnMuZm4sIGhhc2g6IG9w
dGlvbnMuaGFzaCB9KTsKKyAgICAgIH0pOworICAgIH07CisKKyAgICBtb2R1bGUuZXhwb3J0cyA9
IGV4cG9ydHNbJ2RlZmF1bHQnXTsKKworLyoqKi8gfSwKKy8qIDE1ICovCisvKioqLyBmdW5jdGlv
bihtb2R1bGUsIGV4cG9ydHMpIHsKKworICAgICd1c2Ugc3RyaWN0JzsKKworICAgIGV4cG9ydHMu
X19lc01vZHVsZSA9IHRydWU7CisKKyAgICBleHBvcnRzWydkZWZhdWx0J10gPSBmdW5jdGlvbiAo
aW5zdGFuY2UpIHsKKyAgICAgIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCdsb2cnLCBmdW5jdGlv
biAoKSAvKiBtZXNzYWdlLCBvcHRpb25zICoveworICAgICAgICB2YXIgYXJncyA9IFt1bmRlZmlu
ZWRdLAorICAgICAgICAgICAgb3B0aW9ucyA9IGFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoIC0g
MV07CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aCAtIDE7IGkr
KykgeworICAgICAgICAgIGFyZ3MucHVzaChhcmd1bWVudHNbaV0pOworICAgICAgICB9CisKKyAg
ICAgICAgdmFyIGxldmVsID0gMTsKKyAgICAgICAgaWYgKG9wdGlvbnMuaGFzaC5sZXZlbCAhPSBu
dWxsKSB7CisgICAgICAgICAgbGV2ZWwgPSBvcHRpb25zLmhhc2gubGV2ZWw7CisgICAgICAgIH0g
ZWxzZSBpZiAob3B0aW9ucy5kYXRhICYmIG9wdGlvbnMuZGF0YS5sZXZlbCAhPSBudWxsKSB7Cisg
ICAgICAgICAgbGV2ZWwgPSBvcHRpb25zLmRhdGEubGV2ZWw7CisgICAgICAgIH0KKyAgICAgICAg
YXJnc1swXSA9IGxldmVsOworCisgICAgICAgIGluc3RhbmNlLmxvZy5hcHBseShpbnN0YW5jZSwg
YXJncyk7CisgICAgICB9KTsKKyAgICB9OworCisgICAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRz
WydkZWZhdWx0J107CisKKy8qKiovIH0sCisvKiAxNiAqLworLyoqKi8gZnVuY3Rpb24obW9kdWxl
LCBleHBvcnRzKSB7CisKKyAgICAndXNlIHN0cmljdCc7CisKKyAgICBleHBvcnRzLl9fZXNNb2R1
bGUgPSB0cnVlOworCisgICAgZXhwb3J0c1snZGVmYXVsdCddID0gZnVuY3Rpb24gKGluc3RhbmNl
KSB7CisgICAgICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcignbG9va3VwJywgZnVuY3Rpb24gKG9i
aiwgZmllbGQpIHsKKyAgICAgICAgcmV0dXJuIG9iaiAmJiBvYmpbZmllbGRdOworICAgICAgfSk7
CisgICAgfTsKKworICAgIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOworCisv
KioqLyB9LAorLyogMTcgKi8KKy8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJw
YWNrX3JlcXVpcmVfXykgeworCisgICAgJ3VzZSBzdHJpY3QnOworCisgICAgZXhwb3J0cy5fX2Vz
TW9kdWxlID0gdHJ1ZTsKKworICAgIHZhciBfdXRpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUp
OworCisgICAgZXhwb3J0c1snZGVmYXVsdCddID0gZnVuY3Rpb24gKGluc3RhbmNlKSB7CisgICAg
ICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcignd2l0aCcsIGZ1bmN0aW9uIChjb250ZXh0LCBvcHRp
b25zKSB7CisgICAgICAgIGlmIChfdXRpbHMuaXNGdW5jdGlvbihjb250ZXh0KSkgeworICAgICAg
ICAgIGNvbnRleHQgPSBjb250ZXh0LmNhbGwodGhpcyk7CisgICAgICAgIH0KKworICAgICAgICB2
YXIgZm4gPSBvcHRpb25zLmZuOworCisgICAgICAgIGlmICghX3V0aWxzLmlzRW1wdHkoY29udGV4
dCkpIHsKKyAgICAgICAgICB2YXIgZGF0YSA9IG9wdGlvbnMuZGF0YTsKKyAgICAgICAgICBpZiAo
b3B0aW9ucy5kYXRhICYmIG9wdGlvbnMuaWRzKSB7CisgICAgICAgICAgICBkYXRhID0gX3V0aWxz
LmNyZWF0ZUZyYW1lKG9wdGlvbnMuZGF0YSk7CisgICAgICAgICAgICBkYXRhLmNvbnRleHRQYXRo
ID0gX3V0aWxzLmFwcGVuZENvbnRleHRQYXRoKG9wdGlvbnMuZGF0YS5jb250ZXh0UGF0aCwgb3B0
aW9ucy5pZHNbMF0pOworICAgICAgICAgIH0KKworICAgICAgICAgIHJldHVybiBmbihjb250ZXh0
LCB7CisgICAgICAgICAgICBkYXRhOiBkYXRhLAorICAgICAgICAgICAgYmxvY2tQYXJhbXM6IF91
dGlscy5ibG9ja1BhcmFtcyhbY29udGV4dF0sIFtkYXRhICYmIGRhdGEuY29udGV4dFBhdGhdKQor
ICAgICAgICAgIH0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIHJldHVybiBvcHRpb25z
LmludmVyc2UodGhpcyk7CisgICAgICAgIH0KKyAgICAgIH0pOworICAgIH07CisKKyAgICBtb2R1
bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsKKworLyoqKi8gfSwKKy8qIDE4ICovCisv
KioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKKwor
ICAgICd1c2Ugc3RyaWN0JzsKKworICAgIHZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gX193
ZWJwYWNrX3JlcXVpcmVfXygxKVsnZGVmYXVsdCddOworCisgICAgZXhwb3J0cy5fX2VzTW9kdWxl
ID0gdHJ1ZTsKKyAgICBleHBvcnRzLnJlZ2lzdGVyRGVmYXVsdERlY29yYXRvcnMgPSByZWdpc3Rl
ckRlZmF1bHREZWNvcmF0b3JzOworCisgICAgdmFyIF9kZWNvcmF0b3JzSW5saW5lID0gX193ZWJw
YWNrX3JlcXVpcmVfXygxOSk7CisKKyAgICB2YXIgX2RlY29yYXRvcnNJbmxpbmUyID0gX2ludGVy
b3BSZXF1aXJlRGVmYXVsdChfZGVjb3JhdG9yc0lubGluZSk7CisKKyAgICBmdW5jdGlvbiByZWdp
c3RlckRlZmF1bHREZWNvcmF0b3JzKGluc3RhbmNlKSB7CisgICAgICBfZGVjb3JhdG9yc0lubGlu
ZTJbJ2RlZmF1bHQnXShpbnN0YW5jZSk7CisgICAgfQorCisvKioqLyB9LAorLyogMTkgKi8KKy8q
KiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgeworCisg
ICAgJ3VzZSBzdHJpY3QnOworCisgICAgZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKKworICAg
IHZhciBfdXRpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpOworCisgICAgZXhwb3J0c1snZGVm
YXVsdCddID0gZnVuY3Rpb24gKGluc3RhbmNlKSB7CisgICAgICBpbnN0YW5jZS5yZWdpc3RlckRl
Y29yYXRvcignaW5saW5lJywgZnVuY3Rpb24gKGZuLCBwcm9wcywgY29udGFpbmVyLCBvcHRpb25z
KSB7CisgICAgICAgIHZhciByZXQgPSBmbjsKKyAgICAgICAgaWYgKCFwcm9wcy5wYXJ0aWFscykg
eworICAgICAgICAgIHByb3BzLnBhcnRpYWxzID0ge307CisgICAgICAgICAgcmV0ID0gZnVuY3Rp
b24gKGNvbnRleHQsIG9wdGlvbnMpIHsKKyAgICAgICAgICAgIC8vIENyZWF0ZSBhIG5ldyBwYXJ0
aWFscyBzdGFjayBmcmFtZSBwcmlvciB0byBleGVjLgorICAgICAgICAgICAgdmFyIG9yaWdpbmFs
ID0gY29udGFpbmVyLnBhcnRpYWxzOworICAgICAgICAgICAgY29udGFpbmVyLnBhcnRpYWxzID0g
X3V0aWxzLmV4dGVuZCh7fSwgb3JpZ2luYWwsIHByb3BzLnBhcnRpYWxzKTsKKyAgICAgICAgICAg
IHZhciByZXQgPSBmbihjb250ZXh0LCBvcHRpb25zKTsKKyAgICAgICAgICAgIGNvbnRhaW5lci5w
YXJ0aWFscyA9IG9yaWdpbmFsOworICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgICAgICB9
OworICAgICAgICB9CisKKyAgICAgICAgcHJvcHMucGFydGlhbHNbb3B0aW9ucy5hcmdzWzBdXSA9
IG9wdGlvbnMuZm47CisKKyAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgIH0pOworICAgIH07CisK
KyAgICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsKKworLyoqKi8gfSwKKy8q
IDIwICovCisvKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJl
X18pIHsKKworICAgICd1c2Ugc3RyaWN0JzsKKworICAgIGV4cG9ydHMuX19lc01vZHVsZSA9IHRy
dWU7CisKKyAgICB2YXIgX3V0aWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTsKKworICAgIHZh
ciBsb2dnZXIgPSB7CisgICAgICBtZXRob2RNYXA6IFsnZGVidWcnLCAnaW5mbycsICd3YXJuJywg
J2Vycm9yJ10sCisgICAgICBsZXZlbDogJ2luZm8nLAorCisgICAgICAvLyBNYXBzIGEgZ2l2ZW4g
bGV2ZWwgdmFsdWUgdG8gdGhlIGBtZXRob2RNYXBgIGluZGV4ZXMgYWJvdmUuCisgICAgICBsb29r
dXBMZXZlbDogZnVuY3Rpb24gbG9va3VwTGV2ZWwobGV2ZWwpIHsKKyAgICAgICAgaWYgKHR5cGVv
ZiBsZXZlbCA9PT0gJ3N0cmluZycpIHsKKyAgICAgICAgICB2YXIgbGV2ZWxNYXAgPSBfdXRpbHMu
aW5kZXhPZihsb2dnZXIubWV0aG9kTWFwLCBsZXZlbC50b0xvd2VyQ2FzZSgpKTsKKyAgICAgICAg
ICBpZiAobGV2ZWxNYXAgPj0gMCkgeworICAgICAgICAgICAgbGV2ZWwgPSBsZXZlbE1hcDsKKyAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbGV2ZWwgPSBwYXJzZUludChsZXZlbCwgMTAp
OworICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBsZXZlbDsKKyAgICAg
IH0sCisKKyAgICAgIC8vIENhbiBiZSBvdmVycmlkZGVuIGluIHRoZSBob3N0IGVudmlyb25tZW50
CisgICAgICBsb2c6IGZ1bmN0aW9uIGxvZyhsZXZlbCkgeworICAgICAgICBsZXZlbCA9IGxvZ2dl
ci5sb29rdXBMZXZlbChsZXZlbCk7CisKKyAgICAgICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAn
dW5kZWZpbmVkJyAmJiBsb2dnZXIubG9va3VwTGV2ZWwobG9nZ2VyLmxldmVsKSA8PSBsZXZlbCkg
eworICAgICAgICAgIHZhciBtZXRob2QgPSBsb2dnZXIubWV0aG9kTWFwW2xldmVsXTsKKyAgICAg
ICAgICBpZiAoIWNvbnNvbGVbbWV0aG9kXSkgeworICAgICAgICAgICAgLy8gZXNsaW50LWRpc2Fi
bGUtbGluZSBuby1jb25zb2xlCisgICAgICAgICAgICBtZXRob2QgPSAnbG9nJzsKKyAgICAgICAg
ICB9CisKKyAgICAgICAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgbWVzc2Fn
ZSA9IEFycmF5KF9sZW4gPiAxID8gX2xlbiAtIDEgOiAwKSwgX2tleSA9IDE7IF9rZXkgPCBfbGVu
OyBfa2V5KyspIHsKKyAgICAgICAgICAgIG1lc3NhZ2VbX2tleSAtIDFdID0gYXJndW1lbnRzW19r
ZXldOworICAgICAgICAgIH0KKworICAgICAgICAgIGNvbnNvbGVbbWV0aG9kXS5hcHBseShjb25z
b2xlLCBtZXNzYWdlKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlCisgICAgICAg
IH0KKyAgICAgIH0KKyAgICB9OworCisgICAgZXhwb3J0c1snZGVmYXVsdCddID0gbG9nZ2VyOwor
ICAgIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOworCisvKioqLyB9LAorLyog
MjEgKi8KKy8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgeworCisgICAgLy8gQnVpbGQg
b3V0IG91ciBiYXNpYyBTYWZlU3RyaW5nIHR5cGUKKyAgICAndXNlIHN0cmljdCc7CisKKyAgICBl
eHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOworICAgIGZ1bmN0aW9uIFNhZmVTdHJpbmcoc3RyaW5n
KSB7CisgICAgICB0aGlzLnN0cmluZyA9IHN0cmluZzsKKyAgICB9CisKKyAgICBTYWZlU3RyaW5n
LnByb3RvdHlwZS50b1N0cmluZyA9IFNhZmVTdHJpbmcucHJvdG90eXBlLnRvSFRNTCA9IGZ1bmN0
aW9uICgpIHsKKyAgICAgIHJldHVybiAnJyArIHRoaXMuc3RyaW5nOworICAgIH07CisKKyAgICBl
eHBvcnRzWydkZWZhdWx0J10gPSBTYWZlU3RyaW5nOworICAgIG1vZHVsZS5leHBvcnRzID0gZXhw
b3J0c1snZGVmYXVsdCddOworCisvKioqLyB9LAorLyogMjIgKi8KKy8qKiovIGZ1bmN0aW9uKG1v
ZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgeworCisgICAgJ3VzZSBzdHJpY3Qn
OworCisgICAgdmFyIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkID0gX193ZWJwYWNrX3JlcXVpcmVf
XygzKVsnZGVmYXVsdCddOworCisgICAgdmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDEpWydkZWZhdWx0J107CisKKyAgICBleHBvcnRzLl9fZXNNb2R1bGUg
PSB0cnVlOworICAgIGV4cG9ydHMuY2hlY2tSZXZpc2lvbiA9IGNoZWNrUmV2aXNpb247CisgICAg
ZXhwb3J0cy50ZW1wbGF0ZSA9IHRlbXBsYXRlOworICAgIGV4cG9ydHMud3JhcFByb2dyYW0gPSB3
cmFwUHJvZ3JhbTsKKyAgICBleHBvcnRzLnJlc29sdmVQYXJ0aWFsID0gcmVzb2x2ZVBhcnRpYWw7
CisgICAgZXhwb3J0cy5pbnZva2VQYXJ0aWFsID0gaW52b2tlUGFydGlhbDsKKyAgICBleHBvcnRz
Lm5vb3AgPSBub29wOworCisgICAgdmFyIF91dGlscyA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7
CisKKyAgICB2YXIgVXRpbHMgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChfdXRpbHMpOworCisg
ICAgdmFyIF9leGNlcHRpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpOworCisgICAgdmFyIF9l
eGNlcHRpb24yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZXhjZXB0aW9uKTsKKworICAgIHZh
ciBfYmFzZSA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7CisKKyAgICBmdW5jdGlvbiBjaGVja1Jl
dmlzaW9uKGNvbXBpbGVySW5mbykgeworICAgICAgdmFyIGNvbXBpbGVyUmV2aXNpb24gPSBjb21w
aWxlckluZm8gJiYgY29tcGlsZXJJbmZvWzBdIHx8IDEsCisgICAgICAgICAgY3VycmVudFJldmlz
aW9uID0gX2Jhc2UuQ09NUElMRVJfUkVWSVNJT047CisKKyAgICAgIGlmIChjb21waWxlclJldmlz
aW9uICE9PSBjdXJyZW50UmV2aXNpb24pIHsKKyAgICAgICAgaWYgKGNvbXBpbGVyUmV2aXNpb24g
PCBjdXJyZW50UmV2aXNpb24pIHsKKyAgICAgICAgICB2YXIgcnVudGltZVZlcnNpb25zID0gX2Jh
c2UuUkVWSVNJT05fQ0hBTkdFU1tjdXJyZW50UmV2aXNpb25dLAorICAgICAgICAgICAgICBjb21w
aWxlclZlcnNpb25zID0gX2Jhc2UuUkVWSVNJT05fQ0hBTkdFU1tjb21waWxlclJldmlzaW9uXTsK
KyAgICAgICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnVGVtcGxhdGUgd2Fz
IHByZWNvbXBpbGVkIHdpdGggYW4gb2xkZXIgdmVyc2lvbiBvZiBIYW5kbGViYXJzIHRoYW4gdGhl
IGN1cnJlbnQgcnVudGltZS4gJyArICdQbGVhc2UgdXBkYXRlIHlvdXIgcHJlY29tcGlsZXIgdG8g
YSBuZXdlciB2ZXJzaW9uICgnICsgcnVudGltZVZlcnNpb25zICsgJykgb3IgZG93bmdyYWRlIHlv
dXIgcnVudGltZSB0byBhbiBvbGRlciB2ZXJzaW9uICgnICsgY29tcGlsZXJWZXJzaW9ucyArICcp
LicpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIC8vIFVzZSB0aGUgZW1iZWRkZWQgdmVy
c2lvbiBpbmZvIHNpbmNlIHRoZSBydW50aW1lIGRvZXNuJ3Qga25vdyBhYm91dCB0aGlzIHJldmlz
aW9uIHlldAorICAgICAgICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCdUZW1w
bGF0ZSB3YXMgcHJlY29tcGlsZWQgd2l0aCBhIG5ld2VyIHZlcnNpb24gb2YgSGFuZGxlYmFycyB0
aGFuIHRoZSBjdXJyZW50IHJ1bnRpbWUuICcgKyAnUGxlYXNlIHVwZGF0ZSB5b3VyIHJ1bnRpbWUg
dG8gYSBuZXdlciB2ZXJzaW9uICgnICsgY29tcGlsZXJJbmZvWzFdICsgJykuJyk7CisgICAgICAg
IH0KKyAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZW1wbGF0ZSh0ZW1wbGF0ZVNwZWMs
IGVudikgeworICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8KKyAgICAgIGlmICghZW52
KSB7CisgICAgICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCdObyBlbnZpcm9u
bWVudCBwYXNzZWQgdG8gdGVtcGxhdGUnKTsKKyAgICAgIH0KKyAgICAgIGlmICghdGVtcGxhdGVT
cGVjIHx8ICF0ZW1wbGF0ZVNwZWMubWFpbikgeworICAgICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlv
bjJbJ2RlZmF1bHQnXSgnVW5rbm93biB0ZW1wbGF0ZSBvYmplY3Q6ICcgKyB0eXBlb2YgdGVtcGxh
dGVTcGVjKTsKKyAgICAgIH0KKworICAgICAgdGVtcGxhdGVTcGVjLm1haW4uZGVjb3JhdG9yID0g
dGVtcGxhdGVTcGVjLm1haW5fZDsKKworICAgICAgLy8gTm90ZTogVXNpbmcgZW52LlZNIHJlZmVy
ZW5jZXMgcmF0aGVyIHRoYW4gbG9jYWwgdmFyIHJlZmVyZW5jZXMgdGhyb3VnaG91dCB0aGlzIHNl
Y3Rpb24gdG8gYWxsb3cKKyAgICAgIC8vIGZvciBleHRlcm5hbCB1c2VycyB0byBvdmVycmlkZSB0
aGVzZSBhcyBwc3VlZG8tc3VwcG9ydGVkIEFQSXMuCisgICAgICBlbnYuVk0uY2hlY2tSZXZpc2lv
bih0ZW1wbGF0ZVNwZWMuY29tcGlsZXIpOworCisgICAgICBmdW5jdGlvbiBpbnZva2VQYXJ0aWFs
V3JhcHBlcihwYXJ0aWFsLCBjb250ZXh0LCBvcHRpb25zKSB7CisgICAgICAgIGlmIChvcHRpb25z
Lmhhc2gpIHsKKyAgICAgICAgICBjb250ZXh0ID0gVXRpbHMuZXh0ZW5kKHt9LCBjb250ZXh0LCBv
cHRpb25zLmhhc2gpOworICAgICAgICAgIGlmIChvcHRpb25zLmlkcykgeworICAgICAgICAgICAg
b3B0aW9ucy5pZHNbMF0gPSB0cnVlOworICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAg
IHBhcnRpYWwgPSBlbnYuVk0ucmVzb2x2ZVBhcnRpYWwuY2FsbCh0aGlzLCBwYXJ0aWFsLCBjb250
ZXh0LCBvcHRpb25zKTsKKyAgICAgICAgdmFyIHJlc3VsdCA9IGVudi5WTS5pbnZva2VQYXJ0aWFs
LmNhbGwodGhpcywgcGFydGlhbCwgY29udGV4dCwgb3B0aW9ucyk7CisKKyAgICAgICAgaWYgKHJl
c3VsdCA9PSBudWxsICYmIGVudi5jb21waWxlKSB7CisgICAgICAgICAgb3B0aW9ucy5wYXJ0aWFs
c1tvcHRpb25zLm5hbWVdID0gZW52LmNvbXBpbGUocGFydGlhbCwgdGVtcGxhdGVTcGVjLmNvbXBp
bGVyT3B0aW9ucywgZW52KTsKKyAgICAgICAgICByZXN1bHQgPSBvcHRpb25zLnBhcnRpYWxzW29w
dGlvbnMubmFtZV0oY29udGV4dCwgb3B0aW9ucyk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJl
c3VsdCAhPSBudWxsKSB7CisgICAgICAgICAgaWYgKG9wdGlvbnMuaW5kZW50KSB7CisgICAgICAg
ICAgICB2YXIgbGluZXMgPSByZXN1bHQuc3BsaXQoJ1xuJyk7CisgICAgICAgICAgICBmb3IgKHZh
ciBpID0gMCwgbCA9IGxpbmVzLmxlbmd0aDsgaSA8IGw7IGkrKykgeworICAgICAgICAgICAgICBp
ZiAoIWxpbmVzW2ldICYmIGkgKyAxID09PSBsKSB7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICBsaW5lc1tpXSA9IG9wdGlvbnMuaW5kZW50
ICsgbGluZXNbaV07CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXN1bHQgPSBsaW5lcy5q
b2luKCdcbicpOworICAgICAgICAgIH0KKyAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCdU
aGUgcGFydGlhbCAnICsgb3B0aW9ucy5uYW1lICsgJyBjb3VsZCBub3QgYmUgY29tcGlsZWQgd2hl
biBydW5uaW5nIGluIHJ1bnRpbWUtb25seSBtb2RlJyk7CisgICAgICAgIH0KKyAgICAgIH0KKwor
ICAgICAgLy8gSnVzdCBhZGQgd2F0ZXIKKyAgICAgIHZhciBjb250YWluZXIgPSB7CisgICAgICAg
IHN0cmljdDogZnVuY3Rpb24gc3RyaWN0KG9iaiwgbmFtZSkgeworICAgICAgICAgIGlmICghKG5h
bWUgaW4gb2JqKSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZhdWx0
J10oJyInICsgbmFtZSArICciIG5vdCBkZWZpbmVkIGluICcgKyBvYmopOworICAgICAgICAgIH0K
KyAgICAgICAgICByZXR1cm4gb2JqW25hbWVdOworICAgICAgICB9LAorICAgICAgICBsb29rdXA6
IGZ1bmN0aW9uIGxvb2t1cChkZXB0aHMsIG5hbWUpIHsKKyAgICAgICAgICB2YXIgbGVuID0gZGVw
dGhzLmxlbmd0aDsKKyAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7Cisg
ICAgICAgICAgICBpZiAoZGVwdGhzW2ldICYmIGRlcHRoc1tpXVtuYW1lXSAhPSBudWxsKSB7Cisg
ICAgICAgICAgICAgIHJldHVybiBkZXB0aHNbaV1bbmFtZV07CisgICAgICAgICAgICB9CisgICAg
ICAgICAgfQorICAgICAgICB9LAorICAgICAgICBsYW1iZGE6IGZ1bmN0aW9uIGxhbWJkYShjdXJy
ZW50LCBjb250ZXh0KSB7CisgICAgICAgICAgcmV0dXJuIHR5cGVvZiBjdXJyZW50ID09PSAnZnVu
Y3Rpb24nID8gY3VycmVudC5jYWxsKGNvbnRleHQpIDogY3VycmVudDsKKyAgICAgICAgfSwKKwor
ICAgICAgICBlc2NhcGVFeHByZXNzaW9uOiBVdGlscy5lc2NhcGVFeHByZXNzaW9uLAorICAgICAg
ICBpbnZva2VQYXJ0aWFsOiBpbnZva2VQYXJ0aWFsV3JhcHBlciwKKworICAgICAgICBmbjogZnVu
Y3Rpb24gZm4oaSkgeworICAgICAgICAgIHZhciByZXQgPSB0ZW1wbGF0ZVNwZWNbaV07CisgICAg
ICAgICAgcmV0LmRlY29yYXRvciA9IHRlbXBsYXRlU3BlY1tpICsgJ19kJ107CisgICAgICAgICAg
cmV0dXJuIHJldDsKKyAgICAgICAgfSwKKworICAgICAgICBwcm9ncmFtczogW10sCisgICAgICAg
IHByb2dyYW06IGZ1bmN0aW9uIHByb2dyYW0oaSwgZGF0YSwgZGVjbGFyZWRCbG9ja1BhcmFtcywg
YmxvY2tQYXJhbXMsIGRlcHRocykgeworICAgICAgICAgIHZhciBwcm9ncmFtV3JhcHBlciA9IHRo
aXMucHJvZ3JhbXNbaV0sCisgICAgICAgICAgICAgIGZuID0gdGhpcy5mbihpKTsKKyAgICAgICAg
ICBpZiAoZGF0YSB8fCBkZXB0aHMgfHwgYmxvY2tQYXJhbXMgfHwgZGVjbGFyZWRCbG9ja1BhcmFt
cykgeworICAgICAgICAgICAgcHJvZ3JhbVdyYXBwZXIgPSB3cmFwUHJvZ3JhbSh0aGlzLCBpLCBm
biwgZGF0YSwgZGVjbGFyZWRCbG9ja1BhcmFtcywgYmxvY2tQYXJhbXMsIGRlcHRocyk7CisgICAg
ICAgICAgfSBlbHNlIGlmICghcHJvZ3JhbVdyYXBwZXIpIHsKKyAgICAgICAgICAgIHByb2dyYW1X
cmFwcGVyID0gdGhpcy5wcm9ncmFtc1tpXSA9IHdyYXBQcm9ncmFtKHRoaXMsIGksIGZuKTsKKyAg
ICAgICAgICB9CisgICAgICAgICAgcmV0dXJuIHByb2dyYW1XcmFwcGVyOworICAgICAgICB9LAor
CisgICAgICAgIGRhdGE6IGZ1bmN0aW9uIGRhdGEodmFsdWUsIGRlcHRoKSB7CisgICAgICAgICAg
d2hpbGUgKHZhbHVlICYmIGRlcHRoLS0pIHsKKyAgICAgICAgICAgIHZhbHVlID0gdmFsdWUuX3Bh
cmVudDsKKyAgICAgICAgICB9CisgICAgICAgICAgcmV0dXJuIHZhbHVlOworICAgICAgICB9LAor
ICAgICAgICBtZXJnZTogZnVuY3Rpb24gbWVyZ2UocGFyYW0sIGNvbW1vbikgeworICAgICAgICAg
IHZhciBvYmogPSBwYXJhbSB8fCBjb21tb247CisKKyAgICAgICAgICBpZiAocGFyYW0gJiYgY29t
bW9uICYmIHBhcmFtICE9PSBjb21tb24pIHsKKyAgICAgICAgICAgIG9iaiA9IFV0aWxzLmV4dGVu
ZCh7fSwgY29tbW9uLCBwYXJhbSk7CisgICAgICAgICAgfQorCisgICAgICAgICAgcmV0dXJuIG9i
ajsKKyAgICAgICAgfSwKKworICAgICAgICBub29wOiBlbnYuVk0ubm9vcCwKKyAgICAgICAgY29t
cGlsZXJJbmZvOiB0ZW1wbGF0ZVNwZWMuY29tcGlsZXIKKyAgICAgIH07CisKKyAgICAgIGZ1bmN0
aW9uIHJldChjb250ZXh0KSB7CisgICAgICAgIHZhciBvcHRpb25zID0gYXJndW1lbnRzLmxlbmd0
aCA8PSAxIHx8IGFyZ3VtZW50c1sxXSA9PT0gdW5kZWZpbmVkID8ge30gOiBhcmd1bWVudHNbMV07
CisKKyAgICAgICAgdmFyIGRhdGEgPSBvcHRpb25zLmRhdGE7CisKKyAgICAgICAgcmV0Ll9zZXR1
cChvcHRpb25zKTsKKyAgICAgICAgaWYgKCFvcHRpb25zLnBhcnRpYWwgJiYgdGVtcGxhdGVTcGVj
LnVzZURhdGEpIHsKKyAgICAgICAgICBkYXRhID0gaW5pdERhdGEoY29udGV4dCwgZGF0YSk7Cisg
ICAgICAgIH0KKyAgICAgICAgdmFyIGRlcHRocyA9IHVuZGVmaW5lZCwKKyAgICAgICAgICAgIGJs
b2NrUGFyYW1zID0gdGVtcGxhdGVTcGVjLnVzZUJsb2NrUGFyYW1zID8gW10gOiB1bmRlZmluZWQ7
CisgICAgICAgIGlmICh0ZW1wbGF0ZVNwZWMudXNlRGVwdGhzKSB7CisgICAgICAgICAgaWYgKG9w
dGlvbnMuZGVwdGhzKSB7CisgICAgICAgICAgICBkZXB0aHMgPSBjb250ZXh0ICE9IG9wdGlvbnMu
ZGVwdGhzWzBdID8gW2NvbnRleHRdLmNvbmNhdChvcHRpb25zLmRlcHRocykgOiBvcHRpb25zLmRl
cHRoczsKKyAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZGVwdGhzID0gW2NvbnRleHRd
OworICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG1haW4oY29udGV4
dCAvKiwgb3B0aW9ucyovKSB7CisgICAgICAgICAgcmV0dXJuICcnICsgdGVtcGxhdGVTcGVjLm1h
aW4oY29udGFpbmVyLCBjb250ZXh0LCBjb250YWluZXIuaGVscGVycywgY29udGFpbmVyLnBhcnRp
YWxzLCBkYXRhLCBibG9ja1BhcmFtcywgZGVwdGhzKTsKKyAgICAgICAgfQorICAgICAgICBtYWlu
ID0gZXhlY3V0ZURlY29yYXRvcnModGVtcGxhdGVTcGVjLm1haW4sIG1haW4sIGNvbnRhaW5lciwg
b3B0aW9ucy5kZXB0aHMgfHwgW10sIGRhdGEsIGJsb2NrUGFyYW1zKTsKKyAgICAgICAgcmV0dXJu
IG1haW4oY29udGV4dCwgb3B0aW9ucyk7CisgICAgICB9CisgICAgICByZXQuaXNUb3AgPSB0cnVl
OworCisgICAgICByZXQuX3NldHVwID0gZnVuY3Rpb24gKG9wdGlvbnMpIHsKKyAgICAgICAgaWYg
KCFvcHRpb25zLnBhcnRpYWwpIHsKKyAgICAgICAgICBjb250YWluZXIuaGVscGVycyA9IGNvbnRh
aW5lci5tZXJnZShvcHRpb25zLmhlbHBlcnMsIGVudi5oZWxwZXJzKTsKKworICAgICAgICAgIGlm
ICh0ZW1wbGF0ZVNwZWMudXNlUGFydGlhbCkgeworICAgICAgICAgICAgY29udGFpbmVyLnBhcnRp
YWxzID0gY29udGFpbmVyLm1lcmdlKG9wdGlvbnMucGFydGlhbHMsIGVudi5wYXJ0aWFscyk7Cisg
ICAgICAgICAgfQorICAgICAgICAgIGlmICh0ZW1wbGF0ZVNwZWMudXNlUGFydGlhbCB8fCB0ZW1w
bGF0ZVNwZWMudXNlRGVjb3JhdG9ycykgeworICAgICAgICAgICAgY29udGFpbmVyLmRlY29yYXRv
cnMgPSBjb250YWluZXIubWVyZ2Uob3B0aW9ucy5kZWNvcmF0b3JzLCBlbnYuZGVjb3JhdG9ycyk7
CisgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgIGNvbnRhaW5lci5oZWxw
ZXJzID0gb3B0aW9ucy5oZWxwZXJzOworICAgICAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyA9IG9w
dGlvbnMucGFydGlhbHM7CisgICAgICAgICAgY29udGFpbmVyLmRlY29yYXRvcnMgPSBvcHRpb25z
LmRlY29yYXRvcnM7CisgICAgICAgIH0KKyAgICAgIH07CisKKyAgICAgIHJldC5fY2hpbGQgPSBm
dW5jdGlvbiAoaSwgZGF0YSwgYmxvY2tQYXJhbXMsIGRlcHRocykgeworICAgICAgICBpZiAodGVt
cGxhdGVTcGVjLnVzZUJsb2NrUGFyYW1zICYmICFibG9ja1BhcmFtcykgeworICAgICAgICAgIHRo
cm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCdtdXN0IHBhc3MgYmxvY2sgcGFyYW1zJyk7
CisgICAgICAgIH0KKyAgICAgICAgaWYgKHRlbXBsYXRlU3BlYy51c2VEZXB0aHMgJiYgIWRlcHRo
cykgeworICAgICAgICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCdtdXN0IHBh
c3MgcGFyZW50IGRlcHRocycpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHdyYXBQcm9n
cmFtKGNvbnRhaW5lciwgaSwgdGVtcGxhdGVTcGVjW2ldLCBkYXRhLCAwLCBibG9ja1BhcmFtcywg
ZGVwdGhzKTsKKyAgICAgIH07CisgICAgICByZXR1cm4gcmV0OworICAgIH0KKworICAgIGZ1bmN0
aW9uIHdyYXBQcm9ncmFtKGNvbnRhaW5lciwgaSwgZm4sIGRhdGEsIGRlY2xhcmVkQmxvY2tQYXJh
bXMsIGJsb2NrUGFyYW1zLCBkZXB0aHMpIHsKKyAgICAgIGZ1bmN0aW9uIHByb2coY29udGV4dCkg
eworICAgICAgICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMSB8fCBhcmd1bWVu
dHNbMV0gPT09IHVuZGVmaW5lZCA/IHt9IDogYXJndW1lbnRzWzFdOworCisgICAgICAgIHZhciBj
dXJyZW50RGVwdGhzID0gZGVwdGhzOworICAgICAgICBpZiAoZGVwdGhzICYmIGNvbnRleHQgIT0g
ZGVwdGhzWzBdKSB7CisgICAgICAgICAgY3VycmVudERlcHRocyA9IFtjb250ZXh0XS5jb25jYXQo
ZGVwdGhzKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBmbihjb250YWluZXIsIGNvbnRl
eHQsIGNvbnRhaW5lci5oZWxwZXJzLCBjb250YWluZXIucGFydGlhbHMsIG9wdGlvbnMuZGF0YSB8
fCBkYXRhLCBibG9ja1BhcmFtcyAmJiBbb3B0aW9ucy5ibG9ja1BhcmFtc10uY29uY2F0KGJsb2Nr
UGFyYW1zKSwgY3VycmVudERlcHRocyk7CisgICAgICB9CisKKyAgICAgIHByb2cgPSBleGVjdXRl
RGVjb3JhdG9ycyhmbiwgcHJvZywgY29udGFpbmVyLCBkZXB0aHMsIGRhdGEsIGJsb2NrUGFyYW1z
KTsKKworICAgICAgcHJvZy5wcm9ncmFtID0gaTsKKyAgICAgIHByb2cuZGVwdGggPSBkZXB0aHMg
PyBkZXB0aHMubGVuZ3RoIDogMDsKKyAgICAgIHByb2cuYmxvY2tQYXJhbXMgPSBkZWNsYXJlZEJs
b2NrUGFyYW1zIHx8IDA7CisgICAgICByZXR1cm4gcHJvZzsKKyAgICB9CisKKyAgICBmdW5jdGlv
biByZXNvbHZlUGFydGlhbChwYXJ0aWFsLCBjb250ZXh0LCBvcHRpb25zKSB7CisgICAgICBpZiAo
IXBhcnRpYWwpIHsKKyAgICAgICAgaWYgKG9wdGlvbnMubmFtZSA9PT0gJ0BwYXJ0aWFsLWJsb2Nr
JykgeworICAgICAgICAgIHZhciBkYXRhID0gb3B0aW9ucy5kYXRhOworICAgICAgICAgIHdoaWxl
IChkYXRhWydwYXJ0aWFsLWJsb2NrJ10gPT09IG5vb3ApIHsKKyAgICAgICAgICAgIGRhdGEgPSBk
YXRhLl9wYXJlbnQ7CisgICAgICAgICAgfQorICAgICAgICAgIHBhcnRpYWwgPSBkYXRhWydwYXJ0
aWFsLWJsb2NrJ107CisgICAgICAgICAgZGF0YVsncGFydGlhbC1ibG9jayddID0gbm9vcDsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBwYXJ0aWFsID0gb3B0aW9ucy5wYXJ0aWFsc1tvcHRp
b25zLm5hbWVdOworICAgICAgICB9CisgICAgICB9IGVsc2UgaWYgKCFwYXJ0aWFsLmNhbGwgJiYg
IW9wdGlvbnMubmFtZSkgeworICAgICAgICAvLyBUaGlzIGlzIGEgZHluYW1pYyBwYXJ0aWFsIHRo
YXQgcmV0dXJuZWQgYSBzdHJpbmcKKyAgICAgICAgb3B0aW9ucy5uYW1lID0gcGFydGlhbDsKKyAg
ICAgICAgcGFydGlhbCA9IG9wdGlvbnMucGFydGlhbHNbcGFydGlhbF07CisgICAgICB9CisgICAg
ICByZXR1cm4gcGFydGlhbDsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBpbnZva2VQYXJ0aWFsKHBh
cnRpYWwsIGNvbnRleHQsIG9wdGlvbnMpIHsKKyAgICAgIG9wdGlvbnMucGFydGlhbCA9IHRydWU7
CisgICAgICBpZiAob3B0aW9ucy5pZHMpIHsKKyAgICAgICAgb3B0aW9ucy5kYXRhLmNvbnRleHRQ
YXRoID0gb3B0aW9ucy5pZHNbMF0gfHwgb3B0aW9ucy5kYXRhLmNvbnRleHRQYXRoOworICAgICAg
fQorCisgICAgICB2YXIgcGFydGlhbEJsb2NrID0gdW5kZWZpbmVkOworICAgICAgaWYgKG9wdGlv
bnMuZm4gJiYgb3B0aW9ucy5mbiAhPT0gbm9vcCkgeworICAgICAgICBvcHRpb25zLmRhdGEgPSBf
YmFzZS5jcmVhdGVGcmFtZShvcHRpb25zLmRhdGEpOworICAgICAgICBwYXJ0aWFsQmxvY2sgPSBv
cHRpb25zLmRhdGFbJ3BhcnRpYWwtYmxvY2snXSA9IG9wdGlvbnMuZm47CisKKyAgICAgICAgaWYg
KHBhcnRpYWxCbG9jay5wYXJ0aWFscykgeworICAgICAgICAgIG9wdGlvbnMucGFydGlhbHMgPSBV
dGlscy5leHRlbmQoe30sIG9wdGlvbnMucGFydGlhbHMsIHBhcnRpYWxCbG9jay5wYXJ0aWFscyk7
CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgaWYgKHBhcnRpYWwgPT09IHVuZGVmaW5lZCAm
JiBwYXJ0aWFsQmxvY2spIHsKKyAgICAgICAgcGFydGlhbCA9IHBhcnRpYWxCbG9jazsKKyAgICAg
IH0KKworICAgICAgaWYgKHBhcnRpYWwgPT09IHVuZGVmaW5lZCkgeworICAgICAgICB0aHJvdyBu
ZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnVGhlIHBhcnRpYWwgJyArIG9wdGlvbnMubmFtZSAr
ICcgY291bGQgbm90IGJlIGZvdW5kJyk7CisgICAgICB9IGVsc2UgaWYgKHBhcnRpYWwgaW5zdGFu
Y2VvZiBGdW5jdGlvbikgeworICAgICAgICByZXR1cm4gcGFydGlhbChjb250ZXh0LCBvcHRpb25z
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiBub29wKCkgeworICAgICAgcmV0dXJu
ICcnOworICAgIH0KKworICAgIGZ1bmN0aW9uIGluaXREYXRhKGNvbnRleHQsIGRhdGEpIHsKKyAg
ICAgIGlmICghZGF0YSB8fCAhKCdyb290JyBpbiBkYXRhKSkgeworICAgICAgICBkYXRhID0gZGF0
YSA/IF9iYXNlLmNyZWF0ZUZyYW1lKGRhdGEpIDoge307CisgICAgICAgIGRhdGEucm9vdCA9IGNv
bnRleHQ7CisgICAgICB9CisgICAgICByZXR1cm4gZGF0YTsKKyAgICB9CisKKyAgICBmdW5jdGlv
biBleGVjdXRlRGVjb3JhdG9ycyhmbiwgcHJvZywgY29udGFpbmVyLCBkZXB0aHMsIGRhdGEsIGJs
b2NrUGFyYW1zKSB7CisgICAgICBpZiAoZm4uZGVjb3JhdG9yKSB7CisgICAgICAgIHZhciBwcm9w
cyA9IHt9OworICAgICAgICBwcm9nID0gZm4uZGVjb3JhdG9yKHByb2csIHByb3BzLCBjb250YWlu
ZXIsIGRlcHRocyAmJiBkZXB0aHNbMF0sIGRhdGEsIGJsb2NrUGFyYW1zLCBkZXB0aHMpOworICAg
ICAgICBVdGlscy5leHRlbmQocHJvZywgcHJvcHMpOworICAgICAgfQorICAgICAgcmV0dXJuIHBy
b2c7CisgICAgfQorCisvKioqLyB9LAorLyogMjMgKi8KKy8qKiovIGZ1bmN0aW9uKG1vZHVsZSwg
ZXhwb3J0cykgeworCisgICAgLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovKGZ1bmN0aW9uKGds
b2JhbCkgey8qIGdsb2JhbCB3aW5kb3cgKi8KKyAgICAndXNlIHN0cmljdCc7CisKKyAgICBleHBv
cnRzLl9fZXNNb2R1bGUgPSB0cnVlOworCisgICAgZXhwb3J0c1snZGVmYXVsdCddID0gZnVuY3Rp
b24gKEhhbmRsZWJhcnMpIHsKKyAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovCisgICAg
ICB2YXIgcm9vdCA9IHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnID8gZ2xvYmFsIDogd2lu
ZG93LAorICAgICAgICAgICRIYW5kbGViYXJzID0gcm9vdC5IYW5kbGViYXJzOworICAgICAgLyog
aXN0YW5idWwgaWdub3JlIG5leHQgKi8KKyAgICAgIEhhbmRsZWJhcnMubm9Db25mbGljdCA9IGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgaWYgKHJvb3QuSGFuZGxlYmFycyA9PT0gSGFuZGxlYmFycykg
eworICAgICAgICAgIHJvb3QuSGFuZGxlYmFycyA9ICRIYW5kbGViYXJzOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybiBIYW5kbGViYXJzOworICAgICAgfTsKKyAgICB9OworCisgICAgbW9kdWxl
LmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107CisgICAgLyogV0VCUEFDSyBWQVIgSU5KRUNU
SU9OICovfS5jYWxsKGV4cG9ydHMsIChmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0oKSkpKQor
CisvKioqLyB9LAorLyogMjQgKi8KKy8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewor
CisgICAgJ3VzZSBzdHJpY3QnOworCisgICAgZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKKyAg
ICB2YXIgQVNUID0geworICAgICAgLy8gUHVibGljIEFQSSB1c2VkIHRvIGV2YWx1YXRlIGRlcml2
ZWQgYXR0cmlidXRlcyByZWdhcmRpbmcgQVNUIG5vZGVzCisgICAgICBoZWxwZXJzOiB7CisgICAg
ICAgIC8vIGEgbXVzdGFjaGUgaXMgZGVmaW5pdGVseSBhIGhlbHBlciBpZjoKKyAgICAgICAgLy8g
KiBpdCBpcyBhbiBlbGlnaWJsZSBoZWxwZXIsIGFuZAorICAgICAgICAvLyAqIGl0IGhhcyBhdCBs
ZWFzdCBvbmUgcGFyYW1ldGVyIG9yIGhhc2ggc2VnbWVudAorICAgICAgICBoZWxwZXJFeHByZXNz
aW9uOiBmdW5jdGlvbiBoZWxwZXJFeHByZXNzaW9uKG5vZGUpIHsKKyAgICAgICAgICByZXR1cm4g
bm9kZS50eXBlID09PSAnU3ViRXhwcmVzc2lvbicgfHwgKG5vZGUudHlwZSA9PT0gJ011c3RhY2hl
U3RhdGVtZW50JyB8fCBub2RlLnR5cGUgPT09ICdCbG9ja1N0YXRlbWVudCcpICYmICEhKG5vZGUu
cGFyYW1zICYmIG5vZGUucGFyYW1zLmxlbmd0aCB8fCBub2RlLmhhc2gpOworICAgICAgICB9LAor
CisgICAgICAgIHNjb3BlZElkOiBmdW5jdGlvbiBzY29wZWRJZChwYXRoKSB7CisgICAgICAgICAg
cmV0dXJuICgvXlwufHRoaXNcYi8udGVzdChwYXRoLm9yaWdpbmFsKQorICAgICAgICAgICk7Cisg
ICAgICAgIH0sCisKKyAgICAgICAgLy8gYW4gSUQgaXMgc2ltcGxlIGlmIGl0IG9ubHkgaGFzIG9u
ZSBwYXJ0LCBhbmQgdGhhdCBwYXJ0IGlzIG5vdAorICAgICAgICAvLyBgLi5gIG9yIGB0aGlzYC4K
KyAgICAgICAgc2ltcGxlSWQ6IGZ1bmN0aW9uIHNpbXBsZUlkKHBhdGgpIHsKKyAgICAgICAgICBy
ZXR1cm4gcGF0aC5wYXJ0cy5sZW5ndGggPT09IDEgJiYgIUFTVC5oZWxwZXJzLnNjb3BlZElkKHBh
dGgpICYmICFwYXRoLmRlcHRoOworICAgICAgICB9CisgICAgICB9CisgICAgfTsKKworICAgIC8v
IE11c3QgYmUgZXhwb3J0ZWQgYXMgYW4gb2JqZWN0IHJhdGhlciB0aGFuIHRoZSByb290IG9mIHRo
ZSBtb2R1bGUgYXMgdGhlIGppc29uIGxleGVyCisgICAgLy8gbXVzdCBtb2RpZnkgdGhlIG9iamVj
dCB0byBvcGVyYXRlIHByb3Blcmx5LgorICAgIGV4cG9ydHNbJ2RlZmF1bHQnXSA9IEFTVDsKKyAg
ICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsKKworLyoqKi8gfSwKKy8qIDI1
ICovCisvKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18p
IHsKKworICAgICd1c2Ugc3RyaWN0JzsKKworICAgIHZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0
ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKVsnZGVmYXVsdCddOworCisgICAgdmFyIF9pbnRlcm9w
UmVxdWlyZVdpbGRjYXJkID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKVsnZGVmYXVsdCddOworCisg
ICAgZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKKyAgICBleHBvcnRzLnBhcnNlID0gcGFyc2U7
CisKKyAgICB2YXIgX3BhcnNlciA9IF9fd2VicGFja19yZXF1aXJlX18oMjYpOworCisgICAgdmFy
IF9wYXJzZXIyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcGFyc2VyKTsKKworICAgIHZhciBf
d2hpdGVzcGFjZUNvbnRyb2wgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI3KTsKKworICAgIHZhciBf
d2hpdGVzcGFjZUNvbnRyb2wyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfd2hpdGVzcGFjZUNv
bnRyb2wpOworCisgICAgdmFyIF9oZWxwZXJzID0gX193ZWJwYWNrX3JlcXVpcmVfXygyOSk7CisK
KyAgICB2YXIgSGVscGVycyA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKF9oZWxwZXJzKTsKKwor
ICAgIHZhciBfdXRpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpOworCisgICAgZXhwb3J0cy5w
YXJzZXIgPSBfcGFyc2VyMlsnZGVmYXVsdCddOworCisgICAgdmFyIHl5ID0ge307CisgICAgX3V0
aWxzLmV4dGVuZCh5eSwgSGVscGVycyk7CisKKyAgICBmdW5jdGlvbiBwYXJzZShpbnB1dCwgb3B0
aW9ucykgeworICAgICAgLy8gSnVzdCByZXR1cm4gaWYgYW4gYWxyZWFkeS1jb21waWxlZCBBU1Qg
d2FzIHBhc3NlZCBpbi4KKyAgICAgIGlmIChpbnB1dC50eXBlID09PSAnUHJvZ3JhbScpIHsKKyAg
ICAgICAgcmV0dXJuIGlucHV0OworICAgICAgfQorCisgICAgICBfcGFyc2VyMlsnZGVmYXVsdCdd
Lnl5ID0geXk7CisKKyAgICAgIC8vIEFsdGVyaW5nIHRoZSBzaGFyZWQgb2JqZWN0IGhlcmUsIGJ1
dCB0aGlzIGlzIG9rIGFzIHBhcnNlciBpcyBhIHN5bmMgb3BlcmF0aW9uCisgICAgICB5eS5sb2NJ
bmZvID0gZnVuY3Rpb24gKGxvY0luZm8pIHsKKyAgICAgICAgcmV0dXJuIG5ldyB5eS5Tb3VyY2VM
b2NhdGlvbihvcHRpb25zICYmIG9wdGlvbnMuc3JjTmFtZSwgbG9jSW5mbyk7CisgICAgICB9Owor
CisgICAgICB2YXIgc3RyaXAgPSBuZXcgX3doaXRlc3BhY2VDb250cm9sMlsnZGVmYXVsdCddKG9w
dGlvbnMpOworICAgICAgcmV0dXJuIHN0cmlwLmFjY2VwdChfcGFyc2VyMlsnZGVmYXVsdCddLnBh
cnNlKGlucHV0KSk7CisgICAgfQorCisvKioqLyB9LAorLyogMjYgKi8KKy8qKiovIGZ1bmN0aW9u
KG1vZHVsZSwgZXhwb3J0cykgeworCisgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8KKyAg
ICAvKiBKaXNvbiBnZW5lcmF0ZWQgcGFyc2VyICovCisgICAgInVzZSBzdHJpY3QiOworCisgICAg
dmFyIGhhbmRsZWJhcnMgPSAoZnVuY3Rpb24gKCkgeworICAgICAgICB2YXIgcGFyc2VyID0geyB0
cmFjZTogZnVuY3Rpb24gdHJhY2UoKSB7fSwKKyAgICAgICAgICAgIHl5OiB7fSwKKyAgICAgICAg
ICAgIHN5bWJvbHNfOiB7ICJlcnJvciI6IDIsICJyb290IjogMywgInByb2dyYW0iOiA0LCAiRU9G
IjogNSwgInByb2dyYW1fcmVwZXRpdGlvbjAiOiA2LCAic3RhdGVtZW50IjogNywgIm11c3RhY2hl
IjogOCwgImJsb2NrIjogOSwgInJhd0Jsb2NrIjogMTAsICJwYXJ0aWFsIjogMTEsICJwYXJ0aWFs
QmxvY2siOiAxMiwgImNvbnRlbnQiOiAxMywgIkNPTU1FTlQiOiAxNCwgIkNPTlRFTlQiOiAxNSwg
Im9wZW5SYXdCbG9jayI6IDE2LCAicmF3QmxvY2tfcmVwZXRpdGlvbl9wbHVzMCI6IDE3LCAiRU5E
X1JBV19CTE9DSyI6IDE4LCAiT1BFTl9SQVdfQkxPQ0siOiAxOSwgImhlbHBlck5hbWUiOiAyMCwg
Im9wZW5SYXdCbG9ja19yZXBldGl0aW9uMCI6IDIxLCAib3BlblJhd0Jsb2NrX29wdGlvbjAiOiAy
MiwgIkNMT1NFX1JBV19CTE9DSyI6IDIzLCAib3BlbkJsb2NrIjogMjQsICJibG9ja19vcHRpb24w
IjogMjUsICJjbG9zZUJsb2NrIjogMjYsICJvcGVuSW52ZXJzZSI6IDI3LCAiYmxvY2tfb3B0aW9u
MSI6IDI4LCAiT1BFTl9CTE9DSyI6IDI5LCAib3BlbkJsb2NrX3JlcGV0aXRpb24wIjogMzAsICJv
cGVuQmxvY2tfb3B0aW9uMCI6IDMxLCAib3BlbkJsb2NrX29wdGlvbjEiOiAzMiwgIkNMT1NFIjog
MzMsICJPUEVOX0lOVkVSU0UiOiAzNCwgIm9wZW5JbnZlcnNlX3JlcGV0aXRpb24wIjogMzUsICJv
cGVuSW52ZXJzZV9vcHRpb24wIjogMzYsICJvcGVuSW52ZXJzZV9vcHRpb24xIjogMzcsICJvcGVu
SW52ZXJzZUNoYWluIjogMzgsICJPUEVOX0lOVkVSU0VfQ0hBSU4iOiAzOSwgIm9wZW5JbnZlcnNl
Q2hhaW5fcmVwZXRpdGlvbjAiOiA0MCwgIm9wZW5JbnZlcnNlQ2hhaW5fb3B0aW9uMCI6IDQxLCAi
b3BlbkludmVyc2VDaGFpbl9vcHRpb24xIjogNDIsICJpbnZlcnNlQW5kUHJvZ3JhbSI6IDQzLCAi
SU5WRVJTRSI6IDQ0LCAiaW52ZXJzZUNoYWluIjogNDUsICJpbnZlcnNlQ2hhaW5fb3B0aW9uMCI6
IDQ2LCAiT1BFTl9FTkRCTE9DSyI6IDQ3LCAiT1BFTiI6IDQ4LCAibXVzdGFjaGVfcmVwZXRpdGlv
bjAiOiA0OSwgIm11c3RhY2hlX29wdGlvbjAiOiA1MCwgIk9QRU5fVU5FU0NBUEVEIjogNTEsICJt
dXN0YWNoZV9yZXBldGl0aW9uMSI6IDUyLCAibXVzdGFjaGVfb3B0aW9uMSI6IDUzLCAiQ0xPU0Vf
VU5FU0NBUEVEIjogNTQsICJPUEVOX1BBUlRJQUwiOiA1NSwgInBhcnRpYWxOYW1lIjogNTYsICJw
YXJ0aWFsX3JlcGV0aXRpb24wIjogNTcsICJwYXJ0aWFsX29wdGlvbjAiOiA1OCwgIm9wZW5QYXJ0
aWFsQmxvY2siOiA1OSwgIk9QRU5fUEFSVElBTF9CTE9DSyI6IDYwLCAib3BlblBhcnRpYWxCbG9j
a19yZXBldGl0aW9uMCI6IDYxLCAib3BlblBhcnRpYWxCbG9ja19vcHRpb24wIjogNjIsICJwYXJh
bSI6IDYzLCAic2V4cHIiOiA2NCwgIk9QRU5fU0VYUFIiOiA2NSwgInNleHByX3JlcGV0aXRpb24w
IjogNjYsICJzZXhwcl9vcHRpb24wIjogNjcsICJDTE9TRV9TRVhQUiI6IDY4LCAiaGFzaCI6IDY5
LCAiaGFzaF9yZXBldGl0aW9uX3BsdXMwIjogNzAsICJoYXNoU2VnbWVudCI6IDcxLCAiSUQiOiA3
MiwgIkVRVUFMUyI6IDczLCAiYmxvY2tQYXJhbXMiOiA3NCwgIk9QRU5fQkxPQ0tfUEFSQU1TIjog
NzUsICJibG9ja1BhcmFtc19yZXBldGl0aW9uX3BsdXMwIjogNzYsICJDTE9TRV9CTE9DS19QQVJB
TVMiOiA3NywgInBhdGgiOiA3OCwgImRhdGFOYW1lIjogNzksICJTVFJJTkciOiA4MCwgIk5VTUJF
UiI6IDgxLCAiQk9PTEVBTiI6IDgyLCAiVU5ERUZJTkVEIjogODMsICJOVUxMIjogODQsICJEQVRB
IjogODUsICJwYXRoU2VnbWVudHMiOiA4NiwgIlNFUCI6IDg3LCAiJGFjY2VwdCI6IDAsICIkZW5k
IjogMSB9LAorICAgICAgICAgICAgdGVybWluYWxzXzogeyAyOiAiZXJyb3IiLCA1OiAiRU9GIiwg
MTQ6ICJDT01NRU5UIiwgMTU6ICJDT05URU5UIiwgMTg6ICJFTkRfUkFXX0JMT0NLIiwgMTk6ICJP
UEVOX1JBV19CTE9DSyIsIDIzOiAiQ0xPU0VfUkFXX0JMT0NLIiwgMjk6ICJPUEVOX0JMT0NLIiwg
MzM6ICJDTE9TRSIsIDM0OiAiT1BFTl9JTlZFUlNFIiwgMzk6ICJPUEVOX0lOVkVSU0VfQ0hBSU4i
LCA0NDogIklOVkVSU0UiLCA0NzogIk9QRU5fRU5EQkxPQ0siLCA0ODogIk9QRU4iLCA1MTogIk9Q
RU5fVU5FU0NBUEVEIiwgNTQ6ICJDTE9TRV9VTkVTQ0FQRUQiLCA1NTogIk9QRU5fUEFSVElBTCIs
IDYwOiAiT1BFTl9QQVJUSUFMX0JMT0NLIiwgNjU6ICJPUEVOX1NFWFBSIiwgNjg6ICJDTE9TRV9T
RVhQUiIsIDcyOiAiSUQiLCA3MzogIkVRVUFMUyIsIDc1OiAiT1BFTl9CTE9DS19QQVJBTVMiLCA3
NzogIkNMT1NFX0JMT0NLX1BBUkFNUyIsIDgwOiAiU1RSSU5HIiwgODE6ICJOVU1CRVIiLCA4Mjog
IkJPT0xFQU4iLCA4MzogIlVOREVGSU5FRCIsIDg0OiAiTlVMTCIsIDg1OiAiREFUQSIsIDg3OiAi
U0VQIiB9LAorICAgICAgICAgICAgcHJvZHVjdGlvbnNfOiBbMCwgWzMsIDJdLCBbNCwgMV0sIFs3
LCAxXSwgWzcsIDFdLCBbNywgMV0sIFs3LCAxXSwgWzcsIDFdLCBbNywgMV0sIFs3LCAxXSwgWzEz
LCAxXSwgWzEwLCAzXSwgWzE2LCA1XSwgWzksIDRdLCBbOSwgNF0sIFsyNCwgNl0sIFsyNywgNl0s
IFszOCwgNl0sIFs0MywgMl0sIFs0NSwgM10sIFs0NSwgMV0sIFsyNiwgM10sIFs4LCA1XSwgWzgs
IDVdLCBbMTEsIDVdLCBbMTIsIDNdLCBbNTksIDVdLCBbNjMsIDFdLCBbNjMsIDFdLCBbNjQsIDVd
LCBbNjksIDFdLCBbNzEsIDNdLCBbNzQsIDNdLCBbMjAsIDFdLCBbMjAsIDFdLCBbMjAsIDFdLCBb
MjAsIDFdLCBbMjAsIDFdLCBbMjAsIDFdLCBbMjAsIDFdLCBbNTYsIDFdLCBbNTYsIDFdLCBbNzks
IDJdLCBbNzgsIDFdLCBbODYsIDNdLCBbODYsIDFdLCBbNiwgMF0sIFs2LCAyXSwgWzE3LCAxXSwg
WzE3LCAyXSwgWzIxLCAwXSwgWzIxLCAyXSwgWzIyLCAwXSwgWzIyLCAxXSwgWzI1LCAwXSwgWzI1
LCAxXSwgWzI4LCAwXSwgWzI4LCAxXSwgWzMwLCAwXSwgWzMwLCAyXSwgWzMxLCAwXSwgWzMxLCAx
XSwgWzMyLCAwXSwgWzMyLCAxXSwgWzM1LCAwXSwgWzM1LCAyXSwgWzM2LCAwXSwgWzM2LCAxXSwg
WzM3LCAwXSwgWzM3LCAxXSwgWzQwLCAwXSwgWzQwLCAyXSwgWzQxLCAwXSwgWzQxLCAxXSwgWzQy
LCAwXSwgWzQyLCAxXSwgWzQ2LCAwXSwgWzQ2LCAxXSwgWzQ5LCAwXSwgWzQ5LCAyXSwgWzUwLCAw
XSwgWzUwLCAxXSwgWzUyLCAwXSwgWzUyLCAyXSwgWzUzLCAwXSwgWzUzLCAxXSwgWzU3LCAwXSwg
WzU3LCAyXSwgWzU4LCAwXSwgWzU4LCAxXSwgWzYxLCAwXSwgWzYxLCAyXSwgWzYyLCAwXSwgWzYy
LCAxXSwgWzY2LCAwXSwgWzY2LCAyXSwgWzY3LCAwXSwgWzY3LCAxXSwgWzcwLCAxXSwgWzcwLCAy
XSwgWzc2LCAxXSwgWzc2LCAyXV0sCisgICAgICAgICAgICBwZXJmb3JtQWN0aW9uOiBmdW5jdGlv
biBhbm9ueW1vdXMoeXl0ZXh0LCB5eWxlbmcsIHl5bGluZW5vLCB5eSwgeXlzdGF0ZSwgJCQsIF8k
CisgICAgICAgICAgICAvKiovKSB7CisKKyAgICAgICAgICAgICAgICB2YXIgJDAgPSAkJC5sZW5n
dGggLSAxOworICAgICAgICAgICAgICAgIHN3aXRjaCAoeXlzdGF0ZSkgeworICAgICAgICAgICAg
ICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJCRbJDAgLSAx
XTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBj
YXNlIDI6CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB5eS5wcmVwYXJlUHJvZ3Jh
bSgkJFskMF0pOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNl
IDQ6CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSAkJFskMF07CisgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA1OgorICAgICAg
ICAgICAgICAgICAgICAgICAgdGhpcy4kID0gJCRbJDBdOworICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNjoKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHRoaXMuJCA9ICQkWyQwXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgICAgICBjYXNlIDc6CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlz
LiQgPSAkJFskMF07CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICAgICAgY2FzZSA4OgorICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gJCRbJDBd
OworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNh
c2UgOToKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0eXBlOiAnQ29tbWVudFN0YXRlbWVudCcsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdmFsdWU6IHl5LnN0cmlwQ29tbWVudCgkJFskMF0pLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0cmlwOiB5eS5zdHJpcEZsYWdzKCQkWyQwXSwgJCRbJDBdKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBsb2M6IHl5LmxvY0luZm8odGhpcy5fJCkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgICAgICBjYXNlIDEwOgorICAgICAgICAgICAgICAgICAgICAgICAgdGhp
cy4kID0geworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdDb250ZW50U3RhdGVt
ZW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbDogJCRbJDBdLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAkJFskMF0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbG9jOiB5eS5sb2NJbmZvKHRoaXMuXyQpCisgICAgICAgICAgICAgICAgICAg
ICAgICB9OworCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICAgICAgY2FzZSAxMToKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHl5LnByZXBh
cmVSYXdCbG9jaygkJFskMCAtIDJdLCAkJFskMCAtIDFdLCAkJFskMF0sIHRoaXMuXyQpOworICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMTI6
CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB7IHBhdGg6ICQkWyQwIC0gM10sIHBh
cmFtczogJCRbJDAgLSAyXSwgaGFzaDogJCRbJDAgLSAxXSB9OworICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMTM6CisgICAgICAgICAgICAg
ICAgICAgICAgICB0aGlzLiQgPSB5eS5wcmVwYXJlQmxvY2soJCRbJDAgLSAzXSwgJCRbJDAgLSAy
XSwgJCRbJDAgLSAxXSwgJCRbJDBdLCBmYWxzZSwgdGhpcy5fJCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAxNDoKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHRoaXMuJCA9IHl5LnByZXBhcmVCbG9jaygkJFskMCAtIDNdLCAkJFskMCAt
IDJdLCAkJFskMCAtIDFdLCAkJFskMF0sIHRydWUsIHRoaXMuXyQpOworICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMTU6CisgICAgICAgICAg
ICAgICAgICAgICAgICB0aGlzLiQgPSB7IG9wZW46ICQkWyQwIC0gNV0sIHBhdGg6ICQkWyQwIC0g
NF0sIHBhcmFtczogJCRbJDAgLSAzXSwgaGFzaDogJCRbJDAgLSAyXSwgYmxvY2tQYXJhbXM6ICQk
WyQwIC0gMV0sIHN0cmlwOiB5eS5zdHJpcEZsYWdzKCQkWyQwIC0gNV0sICQkWyQwXSkgfTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDE2
OgorICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0geyBwYXRoOiAkJFskMCAtIDRdLCBw
YXJhbXM6ICQkWyQwIC0gM10sIGhhc2g6ICQkWyQwIC0gMl0sIGJsb2NrUGFyYW1zOiAkJFskMCAt
IDFdLCBzdHJpcDogeXkuc3RyaXBGbGFncygkJFskMCAtIDVdLCAkJFskMF0pIH07CisgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAxNzoKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHsgcGF0aDogJCRbJDAgLSA0XSwgcGFyYW1z
OiAkJFskMCAtIDNdLCBoYXNoOiAkJFskMCAtIDJdLCBibG9ja1BhcmFtczogJCRbJDAgLSAxXSwg
c3RyaXA6IHl5LnN0cmlwRmxhZ3MoJCRbJDAgLSA1XSwgJCRbJDBdKSB9OworICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMTg6CisgICAgICAg
ICAgICAgICAgICAgICAgICB0aGlzLiQgPSB7IHN0cmlwOiB5eS5zdHJpcEZsYWdzKCQkWyQwIC0g
MV0sICQkWyQwIC0gMV0pLCBwcm9ncmFtOiAkJFskMF0gfTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDE5OgorICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyIGludmVyc2UgPSB5eS5wcmVwYXJlQmxvY2soJCRbJDAgLSAyXSwgJCRbJDAg
LSAxXSwgJCRbJDBdLCAkJFskMF0sIGZhbHNlLCB0aGlzLl8kKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwcm9ncmFtID0geXkucHJlcGFyZVByb2dyYW0oW2ludmVyc2VdLCAkJFskMCAt
IDFdLmxvYyk7CisgICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtLmNoYWluZWQgPSB0cnVl
OworCisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB7IHN0cmlwOiAkJFskMCAtIDJd
LnN0cmlwLCBwcm9ncmFtOiBwcm9ncmFtLCBjaGFpbjogdHJ1ZSB9OworCisgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAyMDoKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDIxOgorICAgICAgICAgICAgICAgICAg
ICAgICAgdGhpcy4kID0geyBwYXRoOiAkJFskMCAtIDFdLCBzdHJpcDogeXkuc3RyaXBGbGFncygk
JFskMCAtIDJdLCAkJFskMF0pIH07CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICAgICAgY2FzZSAyMjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMu
JCA9IHl5LnByZXBhcmVNdXN0YWNoZSgkJFskMCAtIDNdLCAkJFskMCAtIDJdLCAkJFskMCAtIDFd
LCAkJFskMCAtIDRdLCB5eS5zdHJpcEZsYWdzKCQkWyQwIC0gNF0sICQkWyQwXSksIHRoaXMuXyQp
OworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNh
c2UgMjM6CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB5eS5wcmVwYXJlTXVzdGFj
aGUoJCRbJDAgLSAzXSwgJCRbJDAgLSAyXSwgJCRbJDAgLSAxXSwgJCRbJDAgLSA0XSwgeXkuc3Ry
aXBGbGFncygkJFskMCAtIDRdLCAkJFskMF0pLCB0aGlzLl8kKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDI0OgorICAgICAgICAgICAg
ICAgICAgICAgICAgdGhpcy4kID0geworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6
ICdQYXJ0aWFsU3RhdGVtZW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAk
JFskMCAtIDNdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtczogJCRbJDAgLSAy
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNoOiAkJFskMCAtIDFdLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGluZGVudDogJycsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RyaXA6IHl5LnN0cmlwRmxhZ3MoJCRbJDAgLSA0XSwgJCRbJDBdKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBsb2M6IHl5LmxvY0luZm8odGhpcy5fJCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgICAgICBjYXNlIDI1OgorICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0g
eXkucHJlcGFyZVBhcnRpYWxCbG9jaygkJFskMCAtIDJdLCAkJFskMCAtIDFdLCAkJFskMF0sIHRo
aXMuXyQpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
ICAgIGNhc2UgMjY6CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB7IHBhdGg6ICQk
WyQwIC0gM10sIHBhcmFtczogJCRbJDAgLSAyXSwgaGFzaDogJCRbJDAgLSAxXSwgc3RyaXA6IHl5
LnN0cmlwRmxhZ3MoJCRbJDAgLSA0XSwgJCRbJDBdKSB9OworICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMjc6CisgICAgICAgICAgICAgICAg
ICAgICAgICB0aGlzLiQgPSAkJFskMF07CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICAgICAgY2FzZSAyODoKKyAgICAgICAgICAgICAgICAgICAgICAgIHRo
aXMuJCA9ICQkWyQwXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgICAgICBjYXNlIDI5OgorICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdTdWJFeHByZXNzaW9uJywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiAkJFskMCAtIDNdLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBhcmFtczogJCRbJDAgLSAyXSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBoYXNoOiAkJFskMCAtIDFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYzog
eXkubG9jSW5mbyh0aGlzLl8kKQorICAgICAgICAgICAgICAgICAgICAgICAgfTsKKworICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMzA6Cisg
ICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB7IHR5cGU6ICdIYXNoJywgcGFpcnM6ICQk
WyQwXSwgbG9jOiB5eS5sb2NJbmZvKHRoaXMuXyQpIH07CisgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAzMToKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHRoaXMuJCA9IHsgdHlwZTogJ0hhc2hQYWlyJywga2V5OiB5eS5pZCgkJFskMCAtIDJd
KSwgdmFsdWU6ICQkWyQwXSwgbG9jOiB5eS5sb2NJbmZvKHRoaXMuXyQpIH07CisgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAzMjoKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHl5LmlkKCQkWyQwIC0gMV0pOworICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMzM6CisgICAg
ICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSAkJFskMF07CisgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAzNDoKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgICAgICBjYXNlIDM1OgorICAgICAgICAgICAgICAgICAgICAgICAg
dGhpcy4kID0geyB0eXBlOiAnU3RyaW5nTGl0ZXJhbCcsIHZhbHVlOiAkJFskMF0sIG9yaWdpbmFs
OiAkJFskMF0sIGxvYzogeXkubG9jSW5mbyh0aGlzLl8kKSB9OworICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMzY6CisgICAgICAgICAgICAg
ICAgICAgICAgICB0aGlzLiQgPSB7IHR5cGU6ICdOdW1iZXJMaXRlcmFsJywgdmFsdWU6IE51bWJl
cigkJFskMF0pLCBvcmlnaW5hbDogTnVtYmVyKCQkWyQwXSksIGxvYzogeXkubG9jSW5mbyh0aGlz
Ll8kKSB9OworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
ICAgIGNhc2UgMzc6CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB7IHR5cGU6ICdC
b29sZWFuTGl0ZXJhbCcsIHZhbHVlOiAkJFskMF0gPT09ICd0cnVlJywgb3JpZ2luYWw6ICQkWyQw
XSA9PT0gJ3RydWUnLCBsb2M6IHl5LmxvY0luZm8odGhpcy5fJCkgfTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDM4OgorICAgICAgICAg
ICAgICAgICAgICAgICAgdGhpcy4kID0geyB0eXBlOiAnVW5kZWZpbmVkTGl0ZXJhbCcsIG9yaWdp
bmFsOiB1bmRlZmluZWQsIHZhbHVlOiB1bmRlZmluZWQsIGxvYzogeXkubG9jSW5mbyh0aGlzLl8k
KSB9OworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAg
IGNhc2UgMzk6CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB7IHR5cGU6ICdOdWxs
TGl0ZXJhbCcsIG9yaWdpbmFsOiBudWxsLCB2YWx1ZTogbnVsbCwgbG9jOiB5eS5sb2NJbmZvKHRo
aXMuXyQpIH07CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICAgICAgY2FzZSA0MDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNl
IDQxOgorICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gJCRbJDBdOworICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNDI6CisgICAg
ICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB5eS5wcmVwYXJlUGF0aCh0cnVlLCAkJFskMF0s
IHRoaXMuXyQpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICAgIGNhc2UgNDM6CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB5eS5wcmVw
YXJlUGF0aChmYWxzZSwgJCRbJDBdLCB0aGlzLl8kKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDQ0OgorICAgICAgICAgICAgICAgICAg
ICAgICAgJCRbJDAgLSAyXS5wdXNoKHsgcGFydDogeXkuaWQoJCRbJDBdKSwgb3JpZ2luYWw6ICQk
WyQwXSwgc2VwYXJhdG9yOiAkJFskMCAtIDFdIH0pO3RoaXMuJCA9ICQkWyQwIC0gMl07CisgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA0NToK
KyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IFt7IHBhcnQ6IHl5LmlkKCQkWyQwXSks
IG9yaWdpbmFsOiAkJFskMF0gfV07CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICAgICAgY2FzZSA0NjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMu
JCA9IFtdOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
ICAgIGNhc2UgNDc6CisgICAgICAgICAgICAgICAgICAgICAgICAkJFskMCAtIDFdLnB1c2goJCRb
JDBdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAg
ICBjYXNlIDQ4OgorICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gWyQkWyQwXV07Cisg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA0
OToKKyAgICAgICAgICAgICAgICAgICAgICAgICQkWyQwIC0gMV0ucHVzaCgkJFskMF0pOworICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNTA6
CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSBbXTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDUxOgorICAgICAgICAgICAg
ICAgICAgICAgICAgJCRbJDAgLSAxXS5wdXNoKCQkWyQwXSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA1ODoKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHRoaXMuJCA9IFtdOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgICAgIGNhc2UgNTk6CisgICAgICAgICAgICAgICAgICAgICAgICAkJFsk
MCAtIDFdLnB1c2goJCRbJDBdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgICAgICBjYXNlIDY0OgorICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4k
ID0gW107CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAg
ICAgY2FzZSA2NToKKyAgICAgICAgICAgICAgICAgICAgICAgICQkWyQwIC0gMV0ucHVzaCgkJFsk
MF0pOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAg
IGNhc2UgNzA6CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSBbXTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDcxOgorICAg
ICAgICAgICAgICAgICAgICAgICAgJCRbJDAgLSAxXS5wdXNoKCQkWyQwXSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA3ODoKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IFtdOworICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNzk6CisgICAgICAgICAgICAgICAgICAg
ICAgICAkJFskMCAtIDFdLnB1c2goJCRbJDBdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDgyOgorICAgICAgICAgICAgICAgICAgICAg
ICAgdGhpcy4kID0gW107CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICAgICAgY2FzZSA4MzoKKyAgICAgICAgICAgICAgICAgICAgICAgICQkWyQwIC0gMV0u
cHVzaCgkJFskMF0pOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgICAgIGNhc2UgODY6CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSBbXTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNl
IDg3OgorICAgICAgICAgICAgICAgICAgICAgICAgJCRbJDAgLSAxXS5wdXNoKCQkWyQwXSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA5
MDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IFtdOworICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgOTE6CisgICAgICAgICAg
ICAgICAgICAgICAgICAkJFskMCAtIDFdLnB1c2goJCRbJDBdKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDk0OgorICAgICAgICAgICAg
ICAgICAgICAgICAgdGhpcy4kID0gW107CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICAgICAgY2FzZSA5NToKKyAgICAgICAgICAgICAgICAgICAgICAgICQk
WyQwIC0gMV0ucHVzaCgkJFskMF0pOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgICAgIGNhc2UgOTg6CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlz
LiQgPSBbJCRbJDBdXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgICAgICBjYXNlIDk5OgorICAgICAgICAgICAgICAgICAgICAgICAgJCRbJDAgLSAxXS5w
dXNoKCQkWyQwXSk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICAgICAgY2FzZSAxMDA6CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSBbJCRb
JDBdXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAg
ICBjYXNlIDEwMToKKyAgICAgICAgICAgICAgICAgICAgICAgICQkWyQwIC0gMV0ucHVzaCgkJFsk
MF0pOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHRhYmxlOiBbeyAzOiAxLCA0OiAyLCA1OiBbMiwg
NDZdLCA2OiAzLCAxNDogWzIsIDQ2XSwgMTU6IFsyLCA0Nl0sIDE5OiBbMiwgNDZdLCAyOTogWzIs
IDQ2XSwgMzQ6IFsyLCA0Nl0sIDQ4OiBbMiwgNDZdLCA1MTogWzIsIDQ2XSwgNTU6IFsyLCA0Nl0s
IDYwOiBbMiwgNDZdIH0sIHsgMTogWzNdIH0sIHsgNTogWzEsIDRdIH0sIHsgNTogWzIsIDJdLCA3
OiA1LCA4OiA2LCA5OiA3LCAxMDogOCwgMTE6IDksIDEyOiAxMCwgMTM6IDExLCAxNDogWzEsIDEy
XSwgMTU6IFsxLCAyMF0sIDE2OiAxNywgMTk6IFsxLCAyM10sIDI0OiAxNSwgMjc6IDE2LCAyOTog
WzEsIDIxXSwgMzQ6IFsxLCAyMl0sIDM5OiBbMiwgMl0sIDQ0OiBbMiwgMl0sIDQ3OiBbMiwgMl0s
IDQ4OiBbMSwgMTNdLCA1MTogWzEsIDE0XSwgNTU6IFsxLCAxOF0sIDU5OiAxOSwgNjA6IFsxLCAy
NF0gfSwgeyAxOiBbMiwgMV0gfSwgeyA1OiBbMiwgNDddLCAxNDogWzIsIDQ3XSwgMTU6IFsyLCA0
N10sIDE5OiBbMiwgNDddLCAyOTogWzIsIDQ3XSwgMzQ6IFsyLCA0N10sIDM5OiBbMiwgNDddLCA0
NDogWzIsIDQ3XSwgNDc6IFsyLCA0N10sIDQ4OiBbMiwgNDddLCA1MTogWzIsIDQ3XSwgNTU6IFsy
LCA0N10sIDYwOiBbMiwgNDddIH0sIHsgNTogWzIsIDNdLCAxNDogWzIsIDNdLCAxNTogWzIsIDNd
LCAxOTogWzIsIDNdLCAyOTogWzIsIDNdLCAzNDogWzIsIDNdLCAzOTogWzIsIDNdLCA0NDogWzIs
IDNdLCA0NzogWzIsIDNdLCA0ODogWzIsIDNdLCA1MTogWzIsIDNdLCA1NTogWzIsIDNdLCA2MDog
WzIsIDNdIH0sIHsgNTogWzIsIDRdLCAxNDogWzIsIDRdLCAxNTogWzIsIDRdLCAxOTogWzIsIDRd
LCAyOTogWzIsIDRdLCAzNDogWzIsIDRdLCAzOTogWzIsIDRdLCA0NDogWzIsIDRdLCA0NzogWzIs
IDRdLCA0ODogWzIsIDRdLCA1MTogWzIsIDRdLCA1NTogWzIsIDRdLCA2MDogWzIsIDRdIH0sIHsg
NTogWzIsIDVdLCAxNDogWzIsIDVdLCAxNTogWzIsIDVdLCAxOTogWzIsIDVdLCAyOTogWzIsIDVd
LCAzNDogWzIsIDVdLCAzOTogWzIsIDVdLCA0NDogWzIsIDVdLCA0NzogWzIsIDVdLCA0ODogWzIs
IDVdLCA1MTogWzIsIDVdLCA1NTogWzIsIDVdLCA2MDogWzIsIDVdIH0sIHsgNTogWzIsIDZdLCAx
NDogWzIsIDZdLCAxNTogWzIsIDZdLCAxOTogWzIsIDZdLCAyOTogWzIsIDZdLCAzNDogWzIsIDZd
LCAzOTogWzIsIDZdLCA0NDogWzIsIDZdLCA0NzogWzIsIDZdLCA0ODogWzIsIDZdLCA1MTogWzIs
IDZdLCA1NTogWzIsIDZdLCA2MDogWzIsIDZdIH0sIHsgNTogWzIsIDddLCAxNDogWzIsIDddLCAx
NTogWzIsIDddLCAxOTogWzIsIDddLCAyOTogWzIsIDddLCAzNDogWzIsIDddLCAzOTogWzIsIDdd
LCA0NDogWzIsIDddLCA0NzogWzIsIDddLCA0ODogWzIsIDddLCA1MTogWzIsIDddLCA1NTogWzIs
IDddLCA2MDogWzIsIDddIH0sIHsgNTogWzIsIDhdLCAxNDogWzIsIDhdLCAxNTogWzIsIDhdLCAx
OTogWzIsIDhdLCAyOTogWzIsIDhdLCAzNDogWzIsIDhdLCAzOTogWzIsIDhdLCA0NDogWzIsIDhd
LCA0NzogWzIsIDhdLCA0ODogWzIsIDhdLCA1MTogWzIsIDhdLCA1NTogWzIsIDhdLCA2MDogWzIs
IDhdIH0sIHsgNTogWzIsIDldLCAxNDogWzIsIDldLCAxNTogWzIsIDldLCAxOTogWzIsIDldLCAy
OTogWzIsIDldLCAzNDogWzIsIDldLCAzOTogWzIsIDldLCA0NDogWzIsIDldLCA0NzogWzIsIDld
LCA0ODogWzIsIDldLCA1MTogWzIsIDldLCA1NTogWzIsIDldLCA2MDogWzIsIDldIH0sIHsgMjA6
IDI1LCA3MjogWzEsIDM1XSwgNzg6IDI2LCA3OTogMjcsIDgwOiBbMSwgMjhdLCA4MTogWzEsIDI5
XSwgODI6IFsxLCAzMF0sIDgzOiBbMSwgMzFdLCA4NDogWzEsIDMyXSwgODU6IFsxLCAzNF0sIDg2
OiAzMyB9LCB7IDIwOiAzNiwgNzI6IFsxLCAzNV0sIDc4OiAyNiwgNzk6IDI3LCA4MDogWzEsIDI4
XSwgODE6IFsxLCAyOV0sIDgyOiBbMSwgMzBdLCA4MzogWzEsIDMxXSwgODQ6IFsxLCAzMl0sIDg1
OiBbMSwgMzRdLCA4NjogMzMgfSwgeyA0OiAzNywgNjogMywgMTQ6IFsyLCA0Nl0sIDE1OiBbMiwg
NDZdLCAxOTogWzIsIDQ2XSwgMjk6IFsyLCA0Nl0sIDM0OiBbMiwgNDZdLCAzOTogWzIsIDQ2XSwg
NDQ6IFsyLCA0Nl0sIDQ3OiBbMiwgNDZdLCA0ODogWzIsIDQ2XSwgNTE6IFsyLCA0Nl0sIDU1OiBb
MiwgNDZdLCA2MDogWzIsIDQ2XSB9LCB7IDQ6IDM4LCA2OiAzLCAxNDogWzIsIDQ2XSwgMTU6IFsy
LCA0Nl0sIDE5OiBbMiwgNDZdLCAyOTogWzIsIDQ2XSwgMzQ6IFsyLCA0Nl0sIDQ0OiBbMiwgNDZd
LCA0NzogWzIsIDQ2XSwgNDg6IFsyLCA0Nl0sIDUxOiBbMiwgNDZdLCA1NTogWzIsIDQ2XSwgNjA6
IFsyLCA0Nl0gfSwgeyAxMzogNDAsIDE1OiBbMSwgMjBdLCAxNzogMzkgfSwgeyAyMDogNDIsIDU2
OiA0MSwgNjQ6IDQzLCA2NTogWzEsIDQ0XSwgNzI6IFsxLCAzNV0sIDc4OiAyNiwgNzk6IDI3LCA4
MDogWzEsIDI4XSwgODE6IFsxLCAyOV0sIDgyOiBbMSwgMzBdLCA4MzogWzEsIDMxXSwgODQ6IFsx
LCAzMl0sIDg1OiBbMSwgMzRdLCA4NjogMzMgfSwgeyA0OiA0NSwgNjogMywgMTQ6IFsyLCA0Nl0s
IDE1OiBbMiwgNDZdLCAxOTogWzIsIDQ2XSwgMjk6IFsyLCA0Nl0sIDM0OiBbMiwgNDZdLCA0Nzog
WzIsIDQ2XSwgNDg6IFsyLCA0Nl0sIDUxOiBbMiwgNDZdLCA1NTogWzIsIDQ2XSwgNjA6IFsyLCA0
Nl0gfSwgeyA1OiBbMiwgMTBdLCAxNDogWzIsIDEwXSwgMTU6IFsyLCAxMF0sIDE4OiBbMiwgMTBd
LCAxOTogWzIsIDEwXSwgMjk6IFsyLCAxMF0sIDM0OiBbMiwgMTBdLCAzOTogWzIsIDEwXSwgNDQ6
IFsyLCAxMF0sIDQ3OiBbMiwgMTBdLCA0ODogWzIsIDEwXSwgNTE6IFsyLCAxMF0sIDU1OiBbMiwg
MTBdLCA2MDogWzIsIDEwXSB9LCB7IDIwOiA0NiwgNzI6IFsxLCAzNV0sIDc4OiAyNiwgNzk6IDI3
LCA4MDogWzEsIDI4XSwgODE6IFsxLCAyOV0sIDgyOiBbMSwgMzBdLCA4MzogWzEsIDMxXSwgODQ6
IFsxLCAzMl0sIDg1OiBbMSwgMzRdLCA4NjogMzMgfSwgeyAyMDogNDcsIDcyOiBbMSwgMzVdLCA3
ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0sIDgxOiBbMSwgMjldLCA4MjogWzEsIDMwXSwgODM6
IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwgODY6IDMzIH0sIHsgMjA6IDQ4LCA3
MjogWzEsIDM1XSwgNzg6IDI2LCA3OTogMjcsIDgwOiBbMSwgMjhdLCA4MTogWzEsIDI5XSwgODI6
IFsxLCAzMF0sIDgzOiBbMSwgMzFdLCA4NDogWzEsIDMyXSwgODU6IFsxLCAzNF0sIDg2OiAzMyB9
LCB7IDIwOiA0MiwgNTY6IDQ5LCA2NDogNDMsIDY1OiBbMSwgNDRdLCA3MjogWzEsIDM1XSwgNzg6
IDI2LCA3OTogMjcsIDgwOiBbMSwgMjhdLCA4MTogWzEsIDI5XSwgODI6IFsxLCAzMF0sIDgzOiBb
MSwgMzFdLCA4NDogWzEsIDMyXSwgODU6IFsxLCAzNF0sIDg2OiAzMyB9LCB7IDMzOiBbMiwgNzhd
LCA0OTogNTAsIDY1OiBbMiwgNzhdLCA3MjogWzIsIDc4XSwgODA6IFsyLCA3OF0sIDgxOiBbMiwg
NzhdLCA4MjogWzIsIDc4XSwgODM6IFsyLCA3OF0sIDg0OiBbMiwgNzhdLCA4NTogWzIsIDc4XSB9
LCB7IDIzOiBbMiwgMzNdLCAzMzogWzIsIDMzXSwgNTQ6IFsyLCAzM10sIDY1OiBbMiwgMzNdLCA2
ODogWzIsIDMzXSwgNzI6IFsyLCAzM10sIDc1OiBbMiwgMzNdLCA4MDogWzIsIDMzXSwgODE6IFsy
LCAzM10sIDgyOiBbMiwgMzNdLCA4MzogWzIsIDMzXSwgODQ6IFsyLCAzM10sIDg1OiBbMiwgMzNd
IH0sIHsgMjM6IFsyLCAzNF0sIDMzOiBbMiwgMzRdLCA1NDogWzIsIDM0XSwgNjU6IFsyLCAzNF0s
IDY4OiBbMiwgMzRdLCA3MjogWzIsIDM0XSwgNzU6IFsyLCAzNF0sIDgwOiBbMiwgMzRdLCA4MTog
WzIsIDM0XSwgODI6IFsyLCAzNF0sIDgzOiBbMiwgMzRdLCA4NDogWzIsIDM0XSwgODU6IFsyLCAz
NF0gfSwgeyAyMzogWzIsIDM1XSwgMzM6IFsyLCAzNV0sIDU0OiBbMiwgMzVdLCA2NTogWzIsIDM1
XSwgNjg6IFsyLCAzNV0sIDcyOiBbMiwgMzVdLCA3NTogWzIsIDM1XSwgODA6IFsyLCAzNV0sIDgx
OiBbMiwgMzVdLCA4MjogWzIsIDM1XSwgODM6IFsyLCAzNV0sIDg0OiBbMiwgMzVdLCA4NTogWzIs
IDM1XSB9LCB7IDIzOiBbMiwgMzZdLCAzMzogWzIsIDM2XSwgNTQ6IFsyLCAzNl0sIDY1OiBbMiwg
MzZdLCA2ODogWzIsIDM2XSwgNzI6IFsyLCAzNl0sIDc1OiBbMiwgMzZdLCA4MDogWzIsIDM2XSwg
ODE6IFsyLCAzNl0sIDgyOiBbMiwgMzZdLCA4MzogWzIsIDM2XSwgODQ6IFsyLCAzNl0sIDg1OiBb
MiwgMzZdIH0sIHsgMjM6IFsyLCAzN10sIDMzOiBbMiwgMzddLCA1NDogWzIsIDM3XSwgNjU6IFsy
LCAzN10sIDY4OiBbMiwgMzddLCA3MjogWzIsIDM3XSwgNzU6IFsyLCAzN10sIDgwOiBbMiwgMzdd
LCA4MTogWzIsIDM3XSwgODI6IFsyLCAzN10sIDgzOiBbMiwgMzddLCA4NDogWzIsIDM3XSwgODU6
IFsyLCAzN10gfSwgeyAyMzogWzIsIDM4XSwgMzM6IFsyLCAzOF0sIDU0OiBbMiwgMzhdLCA2NTog
WzIsIDM4XSwgNjg6IFsyLCAzOF0sIDcyOiBbMiwgMzhdLCA3NTogWzIsIDM4XSwgODA6IFsyLCAz
OF0sIDgxOiBbMiwgMzhdLCA4MjogWzIsIDM4XSwgODM6IFsyLCAzOF0sIDg0OiBbMiwgMzhdLCA4
NTogWzIsIDM4XSB9LCB7IDIzOiBbMiwgMzldLCAzMzogWzIsIDM5XSwgNTQ6IFsyLCAzOV0sIDY1
OiBbMiwgMzldLCA2ODogWzIsIDM5XSwgNzI6IFsyLCAzOV0sIDc1OiBbMiwgMzldLCA4MDogWzIs
IDM5XSwgODE6IFsyLCAzOV0sIDgyOiBbMiwgMzldLCA4MzogWzIsIDM5XSwgODQ6IFsyLCAzOV0s
IDg1OiBbMiwgMzldIH0sIHsgMjM6IFsyLCA0M10sIDMzOiBbMiwgNDNdLCA1NDogWzIsIDQzXSwg
NjU6IFsyLCA0M10sIDY4OiBbMiwgNDNdLCA3MjogWzIsIDQzXSwgNzU6IFsyLCA0M10sIDgwOiBb
MiwgNDNdLCA4MTogWzIsIDQzXSwgODI6IFsyLCA0M10sIDgzOiBbMiwgNDNdLCA4NDogWzIsIDQz
XSwgODU6IFsyLCA0M10sIDg3OiBbMSwgNTFdIH0sIHsgNzI6IFsxLCAzNV0sIDg2OiA1MiB9LCB7
IDIzOiBbMiwgNDVdLCAzMzogWzIsIDQ1XSwgNTQ6IFsyLCA0NV0sIDY1OiBbMiwgNDVdLCA2ODog
WzIsIDQ1XSwgNzI6IFsyLCA0NV0sIDc1OiBbMiwgNDVdLCA4MDogWzIsIDQ1XSwgODE6IFsyLCA0
NV0sIDgyOiBbMiwgNDVdLCA4MzogWzIsIDQ1XSwgODQ6IFsyLCA0NV0sIDg1OiBbMiwgNDVdLCA4
NzogWzIsIDQ1XSB9LCB7IDUyOiA1MywgNTQ6IFsyLCA4Ml0sIDY1OiBbMiwgODJdLCA3MjogWzIs
IDgyXSwgODA6IFsyLCA4Ml0sIDgxOiBbMiwgODJdLCA4MjogWzIsIDgyXSwgODM6IFsyLCA4Ml0s
IDg0OiBbMiwgODJdLCA4NTogWzIsIDgyXSB9LCB7IDI1OiA1NCwgMzg6IDU2LCAzOTogWzEsIDU4
XSwgNDM6IDU3LCA0NDogWzEsIDU5XSwgNDU6IDU1LCA0NzogWzIsIDU0XSB9LCB7IDI4OiA2MCwg
NDM6IDYxLCA0NDogWzEsIDU5XSwgNDc6IFsyLCA1Nl0gfSwgeyAxMzogNjMsIDE1OiBbMSwgMjBd
LCAxODogWzEsIDYyXSB9LCB7IDE1OiBbMiwgNDhdLCAxODogWzIsIDQ4XSB9LCB7IDMzOiBbMiwg
ODZdLCA1NzogNjQsIDY1OiBbMiwgODZdLCA3MjogWzIsIDg2XSwgODA6IFsyLCA4Nl0sIDgxOiBb
MiwgODZdLCA4MjogWzIsIDg2XSwgODM6IFsyLCA4Nl0sIDg0OiBbMiwgODZdLCA4NTogWzIsIDg2
XSB9LCB7IDMzOiBbMiwgNDBdLCA2NTogWzIsIDQwXSwgNzI6IFsyLCA0MF0sIDgwOiBbMiwgNDBd
LCA4MTogWzIsIDQwXSwgODI6IFsyLCA0MF0sIDgzOiBbMiwgNDBdLCA4NDogWzIsIDQwXSwgODU6
IFsyLCA0MF0gfSwgeyAzMzogWzIsIDQxXSwgNjU6IFsyLCA0MV0sIDcyOiBbMiwgNDFdLCA4MDog
WzIsIDQxXSwgODE6IFsyLCA0MV0sIDgyOiBbMiwgNDFdLCA4MzogWzIsIDQxXSwgODQ6IFsyLCA0
MV0sIDg1OiBbMiwgNDFdIH0sIHsgMjA6IDY1LCA3MjogWzEsIDM1XSwgNzg6IDI2LCA3OTogMjcs
IDgwOiBbMSwgMjhdLCA4MTogWzEsIDI5XSwgODI6IFsxLCAzMF0sIDgzOiBbMSwgMzFdLCA4NDog
WzEsIDMyXSwgODU6IFsxLCAzNF0sIDg2OiAzMyB9LCB7IDI2OiA2NiwgNDc6IFsxLCA2N10gfSwg
eyAzMDogNjgsIDMzOiBbMiwgNThdLCA2NTogWzIsIDU4XSwgNzI6IFsyLCA1OF0sIDc1OiBbMiwg
NThdLCA4MDogWzIsIDU4XSwgODE6IFsyLCA1OF0sIDgyOiBbMiwgNThdLCA4MzogWzIsIDU4XSwg
ODQ6IFsyLCA1OF0sIDg1OiBbMiwgNThdIH0sIHsgMzM6IFsyLCA2NF0sIDM1OiA2OSwgNjU6IFsy
LCA2NF0sIDcyOiBbMiwgNjRdLCA3NTogWzIsIDY0XSwgODA6IFsyLCA2NF0sIDgxOiBbMiwgNjRd
LCA4MjogWzIsIDY0XSwgODM6IFsyLCA2NF0sIDg0OiBbMiwgNjRdLCA4NTogWzIsIDY0XSB9LCB7
IDIxOiA3MCwgMjM6IFsyLCA1MF0sIDY1OiBbMiwgNTBdLCA3MjogWzIsIDUwXSwgODA6IFsyLCA1
MF0sIDgxOiBbMiwgNTBdLCA4MjogWzIsIDUwXSwgODM6IFsyLCA1MF0sIDg0OiBbMiwgNTBdLCA4
NTogWzIsIDUwXSB9LCB7IDMzOiBbMiwgOTBdLCA2MTogNzEsIDY1OiBbMiwgOTBdLCA3MjogWzIs
IDkwXSwgODA6IFsyLCA5MF0sIDgxOiBbMiwgOTBdLCA4MjogWzIsIDkwXSwgODM6IFsyLCA5MF0s
IDg0OiBbMiwgOTBdLCA4NTogWzIsIDkwXSB9LCB7IDIwOiA3NSwgMzM6IFsyLCA4MF0sIDUwOiA3
MiwgNjM6IDczLCA2NDogNzYsIDY1OiBbMSwgNDRdLCA2OTogNzQsIDcwOiA3NywgNzE6IDc4LCA3
MjogWzEsIDc5XSwgNzg6IDI2LCA3OTogMjcsIDgwOiBbMSwgMjhdLCA4MTogWzEsIDI5XSwgODI6
IFsxLCAzMF0sIDgzOiBbMSwgMzFdLCA4NDogWzEsIDMyXSwgODU6IFsxLCAzNF0sIDg2OiAzMyB9
LCB7IDcyOiBbMSwgODBdIH0sIHsgMjM6IFsyLCA0Ml0sIDMzOiBbMiwgNDJdLCA1NDogWzIsIDQy
XSwgNjU6IFsyLCA0Ml0sIDY4OiBbMiwgNDJdLCA3MjogWzIsIDQyXSwgNzU6IFsyLCA0Ml0sIDgw
OiBbMiwgNDJdLCA4MTogWzIsIDQyXSwgODI6IFsyLCA0Ml0sIDgzOiBbMiwgNDJdLCA4NDogWzIs
IDQyXSwgODU6IFsyLCA0Ml0sIDg3OiBbMSwgNTFdIH0sIHsgMjA6IDc1LCA1MzogODEsIDU0OiBb
MiwgODRdLCA2MzogODIsIDY0OiA3NiwgNjU6IFsxLCA0NF0sIDY5OiA4MywgNzA6IDc3LCA3MTog
NzgsIDcyOiBbMSwgNzldLCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0sIDgxOiBbMSwgMjld
LCA4MjogWzEsIDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwgODY6
IDMzIH0sIHsgMjY6IDg0LCA0NzogWzEsIDY3XSB9LCB7IDQ3OiBbMiwgNTVdIH0sIHsgNDogODUs
IDY6IDMsIDE0OiBbMiwgNDZdLCAxNTogWzIsIDQ2XSwgMTk6IFsyLCA0Nl0sIDI5OiBbMiwgNDZd
LCAzNDogWzIsIDQ2XSwgMzk6IFsyLCA0Nl0sIDQ0OiBbMiwgNDZdLCA0NzogWzIsIDQ2XSwgNDg6
IFsyLCA0Nl0sIDUxOiBbMiwgNDZdLCA1NTogWzIsIDQ2XSwgNjA6IFsyLCA0Nl0gfSwgeyA0Nzog
WzIsIDIwXSB9LCB7IDIwOiA4NiwgNzI6IFsxLCAzNV0sIDc4OiAyNiwgNzk6IDI3LCA4MDogWzEs
IDI4XSwgODE6IFsxLCAyOV0sIDgyOiBbMSwgMzBdLCA4MzogWzEsIDMxXSwgODQ6IFsxLCAzMl0s
IDg1OiBbMSwgMzRdLCA4NjogMzMgfSwgeyA0OiA4NywgNjogMywgMTQ6IFsyLCA0Nl0sIDE1OiBb
MiwgNDZdLCAxOTogWzIsIDQ2XSwgMjk6IFsyLCA0Nl0sIDM0OiBbMiwgNDZdLCA0NzogWzIsIDQ2
XSwgNDg6IFsyLCA0Nl0sIDUxOiBbMiwgNDZdLCA1NTogWzIsIDQ2XSwgNjA6IFsyLCA0Nl0gfSwg
eyAyNjogODgsIDQ3OiBbMSwgNjddIH0sIHsgNDc6IFsyLCA1N10gfSwgeyA1OiBbMiwgMTFdLCAx
NDogWzIsIDExXSwgMTU6IFsyLCAxMV0sIDE5OiBbMiwgMTFdLCAyOTogWzIsIDExXSwgMzQ6IFsy
LCAxMV0sIDM5OiBbMiwgMTFdLCA0NDogWzIsIDExXSwgNDc6IFsyLCAxMV0sIDQ4OiBbMiwgMTFd
LCA1MTogWzIsIDExXSwgNTU6IFsyLCAxMV0sIDYwOiBbMiwgMTFdIH0sIHsgMTU6IFsyLCA0OV0s
IDE4OiBbMiwgNDldIH0sIHsgMjA6IDc1LCAzMzogWzIsIDg4XSwgNTg6IDg5LCA2MzogOTAsIDY0
OiA3NiwgNjU6IFsxLCA0NF0sIDY5OiA5MSwgNzA6IDc3LCA3MTogNzgsIDcyOiBbMSwgNzldLCA3
ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0sIDgxOiBbMSwgMjldLCA4MjogWzEsIDMwXSwgODM6
IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwgODY6IDMzIH0sIHsgNjU6IFsyLCA5
NF0sIDY2OiA5MiwgNjg6IFsyLCA5NF0sIDcyOiBbMiwgOTRdLCA4MDogWzIsIDk0XSwgODE6IFsy
LCA5NF0sIDgyOiBbMiwgOTRdLCA4MzogWzIsIDk0XSwgODQ6IFsyLCA5NF0sIDg1OiBbMiwgOTRd
IH0sIHsgNTogWzIsIDI1XSwgMTQ6IFsyLCAyNV0sIDE1OiBbMiwgMjVdLCAxOTogWzIsIDI1XSwg
Mjk6IFsyLCAyNV0sIDM0OiBbMiwgMjVdLCAzOTogWzIsIDI1XSwgNDQ6IFsyLCAyNV0sIDQ3OiBb
MiwgMjVdLCA0ODogWzIsIDI1XSwgNTE6IFsyLCAyNV0sIDU1OiBbMiwgMjVdLCA2MDogWzIsIDI1
XSB9LCB7IDIwOiA5MywgNzI6IFsxLCAzNV0sIDc4OiAyNiwgNzk6IDI3LCA4MDogWzEsIDI4XSwg
ODE6IFsxLCAyOV0sIDgyOiBbMSwgMzBdLCA4MzogWzEsIDMxXSwgODQ6IFsxLCAzMl0sIDg1OiBb
MSwgMzRdLCA4NjogMzMgfSwgeyAyMDogNzUsIDMxOiA5NCwgMzM6IFsyLCA2MF0sIDYzOiA5NSwg
NjQ6IDc2LCA2NTogWzEsIDQ0XSwgNjk6IDk2LCA3MDogNzcsIDcxOiA3OCwgNzI6IFsxLCA3OV0s
IDc1OiBbMiwgNjBdLCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0sIDgxOiBbMSwgMjldLCA4
MjogWzEsIDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwgODY6IDMz
IH0sIHsgMjA6IDc1LCAzMzogWzIsIDY2XSwgMzY6IDk3LCA2MzogOTgsIDY0OiA3NiwgNjU6IFsx
LCA0NF0sIDY5OiA5OSwgNzA6IDc3LCA3MTogNzgsIDcyOiBbMSwgNzldLCA3NTogWzIsIDY2XSwg
Nzg6IDI2LCA3OTogMjcsIDgwOiBbMSwgMjhdLCA4MTogWzEsIDI5XSwgODI6IFsxLCAzMF0sIDgz
OiBbMSwgMzFdLCA4NDogWzEsIDMyXSwgODU6IFsxLCAzNF0sIDg2OiAzMyB9LCB7IDIwOiA3NSwg
MjI6IDEwMCwgMjM6IFsyLCA1Ml0sIDYzOiAxMDEsIDY0OiA3NiwgNjU6IFsxLCA0NF0sIDY5OiAx
MDIsIDcwOiA3NywgNzE6IDc4LCA3MjogWzEsIDc5XSwgNzg6IDI2LCA3OTogMjcsIDgwOiBbMSwg
MjhdLCA4MTogWzEsIDI5XSwgODI6IFsxLCAzMF0sIDgzOiBbMSwgMzFdLCA4NDogWzEsIDMyXSwg
ODU6IFsxLCAzNF0sIDg2OiAzMyB9LCB7IDIwOiA3NSwgMzM6IFsyLCA5Ml0sIDYyOiAxMDMsIDYz
OiAxMDQsIDY0OiA3NiwgNjU6IFsxLCA0NF0sIDY5OiAxMDUsIDcwOiA3NywgNzE6IDc4LCA3Mjog
WzEsIDc5XSwgNzg6IDI2LCA3OTogMjcsIDgwOiBbMSwgMjhdLCA4MTogWzEsIDI5XSwgODI6IFsx
LCAzMF0sIDgzOiBbMSwgMzFdLCA4NDogWzEsIDMyXSwgODU6IFsxLCAzNF0sIDg2OiAzMyB9LCB7
IDMzOiBbMSwgMTA2XSB9LCB7IDMzOiBbMiwgNzldLCA2NTogWzIsIDc5XSwgNzI6IFsyLCA3OV0s
IDgwOiBbMiwgNzldLCA4MTogWzIsIDc5XSwgODI6IFsyLCA3OV0sIDgzOiBbMiwgNzldLCA4NDog
WzIsIDc5XSwgODU6IFsyLCA3OV0gfSwgeyAzMzogWzIsIDgxXSB9LCB7IDIzOiBbMiwgMjddLCAz
MzogWzIsIDI3XSwgNTQ6IFsyLCAyN10sIDY1OiBbMiwgMjddLCA2ODogWzIsIDI3XSwgNzI6IFsy
LCAyN10sIDc1OiBbMiwgMjddLCA4MDogWzIsIDI3XSwgODE6IFsyLCAyN10sIDgyOiBbMiwgMjdd
LCA4MzogWzIsIDI3XSwgODQ6IFsyLCAyN10sIDg1OiBbMiwgMjddIH0sIHsgMjM6IFsyLCAyOF0s
IDMzOiBbMiwgMjhdLCA1NDogWzIsIDI4XSwgNjU6IFsyLCAyOF0sIDY4OiBbMiwgMjhdLCA3Mjog
WzIsIDI4XSwgNzU6IFsyLCAyOF0sIDgwOiBbMiwgMjhdLCA4MTogWzIsIDI4XSwgODI6IFsyLCAy
OF0sIDgzOiBbMiwgMjhdLCA4NDogWzIsIDI4XSwgODU6IFsyLCAyOF0gfSwgeyAyMzogWzIsIDMw
XSwgMzM6IFsyLCAzMF0sIDU0OiBbMiwgMzBdLCA2ODogWzIsIDMwXSwgNzE6IDEwNywgNzI6IFsx
LCAxMDhdLCA3NTogWzIsIDMwXSB9LCB7IDIzOiBbMiwgOThdLCAzMzogWzIsIDk4XSwgNTQ6IFsy
LCA5OF0sIDY4OiBbMiwgOThdLCA3MjogWzIsIDk4XSwgNzU6IFsyLCA5OF0gfSwgeyAyMzogWzIs
IDQ1XSwgMzM6IFsyLCA0NV0sIDU0OiBbMiwgNDVdLCA2NTogWzIsIDQ1XSwgNjg6IFsyLCA0NV0s
IDcyOiBbMiwgNDVdLCA3MzogWzEsIDEwOV0sIDc1OiBbMiwgNDVdLCA4MDogWzIsIDQ1XSwgODE6
IFsyLCA0NV0sIDgyOiBbMiwgNDVdLCA4MzogWzIsIDQ1XSwgODQ6IFsyLCA0NV0sIDg1OiBbMiwg
NDVdLCA4NzogWzIsIDQ1XSB9LCB7IDIzOiBbMiwgNDRdLCAzMzogWzIsIDQ0XSwgNTQ6IFsyLCA0
NF0sIDY1OiBbMiwgNDRdLCA2ODogWzIsIDQ0XSwgNzI6IFsyLCA0NF0sIDc1OiBbMiwgNDRdLCA4
MDogWzIsIDQ0XSwgODE6IFsyLCA0NF0sIDgyOiBbMiwgNDRdLCA4MzogWzIsIDQ0XSwgODQ6IFsy
LCA0NF0sIDg1OiBbMiwgNDRdLCA4NzogWzIsIDQ0XSB9LCB7IDU0OiBbMSwgMTEwXSB9LCB7IDU0
OiBbMiwgODNdLCA2NTogWzIsIDgzXSwgNzI6IFsyLCA4M10sIDgwOiBbMiwgODNdLCA4MTogWzIs
IDgzXSwgODI6IFsyLCA4M10sIDgzOiBbMiwgODNdLCA4NDogWzIsIDgzXSwgODU6IFsyLCA4M10g
fSwgeyA1NDogWzIsIDg1XSB9LCB7IDU6IFsyLCAxM10sIDE0OiBbMiwgMTNdLCAxNTogWzIsIDEz
XSwgMTk6IFsyLCAxM10sIDI5OiBbMiwgMTNdLCAzNDogWzIsIDEzXSwgMzk6IFsyLCAxM10sIDQ0
OiBbMiwgMTNdLCA0NzogWzIsIDEzXSwgNDg6IFsyLCAxM10sIDUxOiBbMiwgMTNdLCA1NTogWzIs
IDEzXSwgNjA6IFsyLCAxM10gfSwgeyAzODogNTYsIDM5OiBbMSwgNThdLCA0MzogNTcsIDQ0OiBb
MSwgNTldLCA0NTogMTEyLCA0NjogMTExLCA0NzogWzIsIDc2XSB9LCB7IDMzOiBbMiwgNzBdLCA0
MDogMTEzLCA2NTogWzIsIDcwXSwgNzI6IFsyLCA3MF0sIDc1OiBbMiwgNzBdLCA4MDogWzIsIDcw
XSwgODE6IFsyLCA3MF0sIDgyOiBbMiwgNzBdLCA4MzogWzIsIDcwXSwgODQ6IFsyLCA3MF0sIDg1
OiBbMiwgNzBdIH0sIHsgNDc6IFsyLCAxOF0gfSwgeyA1OiBbMiwgMTRdLCAxNDogWzIsIDE0XSwg
MTU6IFsyLCAxNF0sIDE5OiBbMiwgMTRdLCAyOTogWzIsIDE0XSwgMzQ6IFsyLCAxNF0sIDM5OiBb
MiwgMTRdLCA0NDogWzIsIDE0XSwgNDc6IFsyLCAxNF0sIDQ4OiBbMiwgMTRdLCA1MTogWzIsIDE0
XSwgNTU6IFsyLCAxNF0sIDYwOiBbMiwgMTRdIH0sIHsgMzM6IFsxLCAxMTRdIH0sIHsgMzM6IFsy
LCA4N10sIDY1OiBbMiwgODddLCA3MjogWzIsIDg3XSwgODA6IFsyLCA4N10sIDgxOiBbMiwgODdd
LCA4MjogWzIsIDg3XSwgODM6IFsyLCA4N10sIDg0OiBbMiwgODddLCA4NTogWzIsIDg3XSB9LCB7
IDMzOiBbMiwgODldIH0sIHsgMjA6IDc1LCA2MzogMTE2LCA2NDogNzYsIDY1OiBbMSwgNDRdLCA2
NzogMTE1LCA2ODogWzIsIDk2XSwgNjk6IDExNywgNzA6IDc3LCA3MTogNzgsIDcyOiBbMSwgNzld
LCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0sIDgxOiBbMSwgMjldLCA4MjogWzEsIDMwXSwg
ODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwgODY6IDMzIH0sIHsgMzM6IFsx
LCAxMThdIH0sIHsgMzI6IDExOSwgMzM6IFsyLCA2Ml0sIDc0OiAxMjAsIDc1OiBbMSwgMTIxXSB9
LCB7IDMzOiBbMiwgNTldLCA2NTogWzIsIDU5XSwgNzI6IFsyLCA1OV0sIDc1OiBbMiwgNTldLCA4
MDogWzIsIDU5XSwgODE6IFsyLCA1OV0sIDgyOiBbMiwgNTldLCA4MzogWzIsIDU5XSwgODQ6IFsy
LCA1OV0sIDg1OiBbMiwgNTldIH0sIHsgMzM6IFsyLCA2MV0sIDc1OiBbMiwgNjFdIH0sIHsgMzM6
IFsyLCA2OF0sIDM3OiAxMjIsIDc0OiAxMjMsIDc1OiBbMSwgMTIxXSB9LCB7IDMzOiBbMiwgNjVd
LCA2NTogWzIsIDY1XSwgNzI6IFsyLCA2NV0sIDc1OiBbMiwgNjVdLCA4MDogWzIsIDY1XSwgODE6
IFsyLCA2NV0sIDgyOiBbMiwgNjVdLCA4MzogWzIsIDY1XSwgODQ6IFsyLCA2NV0sIDg1OiBbMiwg
NjVdIH0sIHsgMzM6IFsyLCA2N10sIDc1OiBbMiwgNjddIH0sIHsgMjM6IFsxLCAxMjRdIH0sIHsg
MjM6IFsyLCA1MV0sIDY1OiBbMiwgNTFdLCA3MjogWzIsIDUxXSwgODA6IFsyLCA1MV0sIDgxOiBb
MiwgNTFdLCA4MjogWzIsIDUxXSwgODM6IFsyLCA1MV0sIDg0OiBbMiwgNTFdLCA4NTogWzIsIDUx
XSB9LCB7IDIzOiBbMiwgNTNdIH0sIHsgMzM6IFsxLCAxMjVdIH0sIHsgMzM6IFsyLCA5MV0sIDY1
OiBbMiwgOTFdLCA3MjogWzIsIDkxXSwgODA6IFsyLCA5MV0sIDgxOiBbMiwgOTFdLCA4MjogWzIs
IDkxXSwgODM6IFsyLCA5MV0sIDg0OiBbMiwgOTFdLCA4NTogWzIsIDkxXSB9LCB7IDMzOiBbMiwg
OTNdIH0sIHsgNTogWzIsIDIyXSwgMTQ6IFsyLCAyMl0sIDE1OiBbMiwgMjJdLCAxOTogWzIsIDIy
XSwgMjk6IFsyLCAyMl0sIDM0OiBbMiwgMjJdLCAzOTogWzIsIDIyXSwgNDQ6IFsyLCAyMl0sIDQ3
OiBbMiwgMjJdLCA0ODogWzIsIDIyXSwgNTE6IFsyLCAyMl0sIDU1OiBbMiwgMjJdLCA2MDogWzIs
IDIyXSB9LCB7IDIzOiBbMiwgOTldLCAzMzogWzIsIDk5XSwgNTQ6IFsyLCA5OV0sIDY4OiBbMiwg
OTldLCA3MjogWzIsIDk5XSwgNzU6IFsyLCA5OV0gfSwgeyA3MzogWzEsIDEwOV0gfSwgeyAyMDog
NzUsIDYzOiAxMjYsIDY0OiA3NiwgNjU6IFsxLCA0NF0sIDcyOiBbMSwgMzVdLCA3ODogMjYsIDc5
OiAyNywgODA6IFsxLCAyOF0sIDgxOiBbMSwgMjldLCA4MjogWzEsIDMwXSwgODM6IFsxLCAzMV0s
IDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwgODY6IDMzIH0sIHsgNTogWzIsIDIzXSwgMTQ6IFsy
LCAyM10sIDE1OiBbMiwgMjNdLCAxOTogWzIsIDIzXSwgMjk6IFsyLCAyM10sIDM0OiBbMiwgMjNd
LCAzOTogWzIsIDIzXSwgNDQ6IFsyLCAyM10sIDQ3OiBbMiwgMjNdLCA0ODogWzIsIDIzXSwgNTE6
IFsyLCAyM10sIDU1OiBbMiwgMjNdLCA2MDogWzIsIDIzXSB9LCB7IDQ3OiBbMiwgMTldIH0sIHsg
NDc6IFsyLCA3N10gfSwgeyAyMDogNzUsIDMzOiBbMiwgNzJdLCA0MTogMTI3LCA2MzogMTI4LCA2
NDogNzYsIDY1OiBbMSwgNDRdLCA2OTogMTI5LCA3MDogNzcsIDcxOiA3OCwgNzI6IFsxLCA3OV0s
IDc1OiBbMiwgNzJdLCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0sIDgxOiBbMSwgMjldLCA4
MjogWzEsIDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwgODY6IDMz
IH0sIHsgNTogWzIsIDI0XSwgMTQ6IFsyLCAyNF0sIDE1OiBbMiwgMjRdLCAxOTogWzIsIDI0XSwg
Mjk6IFsyLCAyNF0sIDM0OiBbMiwgMjRdLCAzOTogWzIsIDI0XSwgNDQ6IFsyLCAyNF0sIDQ3OiBb
MiwgMjRdLCA0ODogWzIsIDI0XSwgNTE6IFsyLCAyNF0sIDU1OiBbMiwgMjRdLCA2MDogWzIsIDI0
XSB9LCB7IDY4OiBbMSwgMTMwXSB9LCB7IDY1OiBbMiwgOTVdLCA2ODogWzIsIDk1XSwgNzI6IFsy
LCA5NV0sIDgwOiBbMiwgOTVdLCA4MTogWzIsIDk1XSwgODI6IFsyLCA5NV0sIDgzOiBbMiwgOTVd
LCA4NDogWzIsIDk1XSwgODU6IFsyLCA5NV0gfSwgeyA2ODogWzIsIDk3XSB9LCB7IDU6IFsyLCAy
MV0sIDE0OiBbMiwgMjFdLCAxNTogWzIsIDIxXSwgMTk6IFsyLCAyMV0sIDI5OiBbMiwgMjFdLCAz
NDogWzIsIDIxXSwgMzk6IFsyLCAyMV0sIDQ0OiBbMiwgMjFdLCA0NzogWzIsIDIxXSwgNDg6IFsy
LCAyMV0sIDUxOiBbMiwgMjFdLCA1NTogWzIsIDIxXSwgNjA6IFsyLCAyMV0gfSwgeyAzMzogWzEs
IDEzMV0gfSwgeyAzMzogWzIsIDYzXSB9LCB7IDcyOiBbMSwgMTMzXSwgNzY6IDEzMiB9LCB7IDMz
OiBbMSwgMTM0XSB9LCB7IDMzOiBbMiwgNjldIH0sIHsgMTU6IFsyLCAxMl0gfSwgeyAxNDogWzIs
IDI2XSwgMTU6IFsyLCAyNl0sIDE5OiBbMiwgMjZdLCAyOTogWzIsIDI2XSwgMzQ6IFsyLCAyNl0s
IDQ3OiBbMiwgMjZdLCA0ODogWzIsIDI2XSwgNTE6IFsyLCAyNl0sIDU1OiBbMiwgMjZdLCA2MDog
WzIsIDI2XSB9LCB7IDIzOiBbMiwgMzFdLCAzMzogWzIsIDMxXSwgNTQ6IFsyLCAzMV0sIDY4OiBb
MiwgMzFdLCA3MjogWzIsIDMxXSwgNzU6IFsyLCAzMV0gfSwgeyAzMzogWzIsIDc0XSwgNDI6IDEz
NSwgNzQ6IDEzNiwgNzU6IFsxLCAxMjFdIH0sIHsgMzM6IFsyLCA3MV0sIDY1OiBbMiwgNzFdLCA3
MjogWzIsIDcxXSwgNzU6IFsyLCA3MV0sIDgwOiBbMiwgNzFdLCA4MTogWzIsIDcxXSwgODI6IFsy
LCA3MV0sIDgzOiBbMiwgNzFdLCA4NDogWzIsIDcxXSwgODU6IFsyLCA3MV0gfSwgeyAzMzogWzIs
IDczXSwgNzU6IFsyLCA3M10gfSwgeyAyMzogWzIsIDI5XSwgMzM6IFsyLCAyOV0sIDU0OiBbMiwg
MjldLCA2NTogWzIsIDI5XSwgNjg6IFsyLCAyOV0sIDcyOiBbMiwgMjldLCA3NTogWzIsIDI5XSwg
ODA6IFsyLCAyOV0sIDgxOiBbMiwgMjldLCA4MjogWzIsIDI5XSwgODM6IFsyLCAyOV0sIDg0OiBb
MiwgMjldLCA4NTogWzIsIDI5XSB9LCB7IDE0OiBbMiwgMTVdLCAxNTogWzIsIDE1XSwgMTk6IFsy
LCAxNV0sIDI5OiBbMiwgMTVdLCAzNDogWzIsIDE1XSwgMzk6IFsyLCAxNV0sIDQ0OiBbMiwgMTVd
LCA0NzogWzIsIDE1XSwgNDg6IFsyLCAxNV0sIDUxOiBbMiwgMTVdLCA1NTogWzIsIDE1XSwgNjA6
IFsyLCAxNV0gfSwgeyA3MjogWzEsIDEzOF0sIDc3OiBbMSwgMTM3XSB9LCB7IDcyOiBbMiwgMTAw
XSwgNzc6IFsyLCAxMDBdIH0sIHsgMTQ6IFsyLCAxNl0sIDE1OiBbMiwgMTZdLCAxOTogWzIsIDE2
XSwgMjk6IFsyLCAxNl0sIDM0OiBbMiwgMTZdLCA0NDogWzIsIDE2XSwgNDc6IFsyLCAxNl0sIDQ4
OiBbMiwgMTZdLCA1MTogWzIsIDE2XSwgNTU6IFsyLCAxNl0sIDYwOiBbMiwgMTZdIH0sIHsgMzM6
IFsxLCAxMzldIH0sIHsgMzM6IFsyLCA3NV0gfSwgeyAzMzogWzIsIDMyXSB9LCB7IDcyOiBbMiwg
MTAxXSwgNzc6IFsyLCAxMDFdIH0sIHsgMTQ6IFsyLCAxN10sIDE1OiBbMiwgMTddLCAxOTogWzIs
IDE3XSwgMjk6IFsyLCAxN10sIDM0OiBbMiwgMTddLCAzOTogWzIsIDE3XSwgNDQ6IFsyLCAxN10s
IDQ3OiBbMiwgMTddLCA0ODogWzIsIDE3XSwgNTE6IFsyLCAxN10sIDU1OiBbMiwgMTddLCA2MDog
WzIsIDE3XSB9XSwKKyAgICAgICAgICAgIGRlZmF1bHRBY3Rpb25zOiB7IDQ6IFsyLCAxXSwgNTU6
IFsyLCA1NV0sIDU3OiBbMiwgMjBdLCA2MTogWzIsIDU3XSwgNzQ6IFsyLCA4MV0sIDgzOiBbMiwg
ODVdLCA4NzogWzIsIDE4XSwgOTE6IFsyLCA4OV0sIDEwMjogWzIsIDUzXSwgMTA1OiBbMiwgOTNd
LCAxMTE6IFsyLCAxOV0sIDExMjogWzIsIDc3XSwgMTE3OiBbMiwgOTddLCAxMjA6IFsyLCA2M10s
IDEyMzogWzIsIDY5XSwgMTI0OiBbMiwgMTJdLCAxMzY6IFsyLCA3NV0sIDEzNzogWzIsIDMyXSB9
LAorICAgICAgICAgICAgcGFyc2VFcnJvcjogZnVuY3Rpb24gcGFyc2VFcnJvcihzdHIsIGhhc2gp
IHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Ioc3RyKTsKKyAgICAgICAgICAgIH0s
CisgICAgICAgICAgICBwYXJzZTogZnVuY3Rpb24gcGFyc2UoaW5wdXQpIHsKKyAgICAgICAgICAg
ICAgICB2YXIgc2VsZiA9IHRoaXMsCisgICAgICAgICAgICAgICAgICAgIHN0YWNrID0gWzBdLAor
ICAgICAgICAgICAgICAgICAgICB2c3RhY2sgPSBbbnVsbF0sCisgICAgICAgICAgICAgICAgICAg
IGxzdGFjayA9IFtdLAorICAgICAgICAgICAgICAgICAgICB0YWJsZSA9IHRoaXMudGFibGUsCisg
ICAgICAgICAgICAgICAgICAgIHl5dGV4dCA9ICIiLAorICAgICAgICAgICAgICAgICAgICB5eWxp
bmVubyA9IDAsCisgICAgICAgICAgICAgICAgICAgIHl5bGVuZyA9IDAsCisgICAgICAgICAgICAg
ICAgICAgIHJlY292ZXJpbmcgPSAwLAorICAgICAgICAgICAgICAgICAgICBURVJST1IgPSAyLAor
ICAgICAgICAgICAgICAgICAgICBFT0YgPSAxOworICAgICAgICAgICAgICAgIHRoaXMubGV4ZXIu
c2V0SW5wdXQoaW5wdXQpOworICAgICAgICAgICAgICAgIHRoaXMubGV4ZXIueXkgPSB0aGlzLnl5
OworICAgICAgICAgICAgICAgIHRoaXMueXkubGV4ZXIgPSB0aGlzLmxleGVyOworICAgICAgICAg
ICAgICAgIHRoaXMueXkucGFyc2VyID0gdGhpczsKKyAgICAgICAgICAgICAgICBpZiAodHlwZW9m
IHRoaXMubGV4ZXIueXlsbG9jID09ICJ1bmRlZmluZWQiKSB0aGlzLmxleGVyLnl5bGxvYyA9IHt9
OworICAgICAgICAgICAgICAgIHZhciB5eWxvYyA9IHRoaXMubGV4ZXIueXlsbG9jOworICAgICAg
ICAgICAgICAgIGxzdGFjay5wdXNoKHl5bG9jKTsKKyAgICAgICAgICAgICAgICB2YXIgcmFuZ2Vz
ID0gdGhpcy5sZXhlci5vcHRpb25zICYmIHRoaXMubGV4ZXIub3B0aW9ucy5yYW5nZXM7CisgICAg
ICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnl5LnBhcnNlRXJyb3IgPT09ICJmdW5jdGlvbiIp
IHRoaXMucGFyc2VFcnJvciA9IHRoaXMueXkucGFyc2VFcnJvcjsKKyAgICAgICAgICAgICAgICBm
dW5jdGlvbiBwb3BTdGFjayhuKSB7CisgICAgICAgICAgICAgICAgICAgIHN0YWNrLmxlbmd0aCA9
IHN0YWNrLmxlbmd0aCAtIDIgKiBuOworICAgICAgICAgICAgICAgICAgICB2c3RhY2subGVuZ3Ro
ID0gdnN0YWNrLmxlbmd0aCAtIG47CisgICAgICAgICAgICAgICAgICAgIGxzdGFjay5sZW5ndGgg
PSBsc3RhY2subGVuZ3RoIC0gbjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ZnVuY3Rpb24gbGV4KCkgeworICAgICAgICAgICAgICAgICAgICB2YXIgdG9rZW47CisgICAgICAg
ICAgICAgICAgICAgIHRva2VuID0gc2VsZi5sZXhlci5sZXgoKSB8fCAxOworICAgICAgICAgICAg
ICAgICAgICBpZiAodHlwZW9mIHRva2VuICE9PSAibnVtYmVyIikgeworICAgICAgICAgICAgICAg
ICAgICAgICAgdG9rZW4gPSBzZWxmLnN5bWJvbHNfW3Rva2VuXSB8fCB0b2tlbjsKKyAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW47CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIHZhciBzeW1ib2wsCisgICAgICAgICAgICAgICAg
ICAgIHByZUVycm9yU3ltYm9sLAorICAgICAgICAgICAgICAgICAgICBzdGF0ZSwKKyAgICAgICAg
ICAgICAgICAgICAgYWN0aW9uLAorICAgICAgICAgICAgICAgICAgICBhLAorICAgICAgICAgICAg
ICAgICAgICByLAorICAgICAgICAgICAgICAgICAgICB5eXZhbCA9IHt9LAorICAgICAgICAgICAg
ICAgICAgICBwLAorICAgICAgICAgICAgICAgICAgICBsZW4sCisgICAgICAgICAgICAgICAgICAg
IG5ld1N0YXRlLAorICAgICAgICAgICAgICAgICAgICBleHBlY3RlZDsKKyAgICAgICAgICAgICAg
ICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IHN0YWNrW3N0YWNr
Lmxlbmd0aCAtIDFdOworICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5kZWZhdWx0QWN0aW9u
c1tzdGF0ZV0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbiA9IHRoaXMuZGVmYXVs
dEFjdGlvbnNbc3RhdGVdOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKHN5bWJvbCA9PT0gbnVsbCB8fCB0eXBlb2Ygc3ltYm9sID09ICJ1
bmRlZmluZWQiKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ltYm9sID0gbGV4KCk7
CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBhY3Rp
b24gPSB0YWJsZVtzdGF0ZV0gJiYgdGFibGVbc3RhdGVdW3N5bWJvbF07CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBhY3Rpb24gPT09ICJ1bmRl
ZmluZWQiIHx8ICFhY3Rpb24ubGVuZ3RoIHx8ICFhY3Rpb25bMF0pIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHZhciBlcnJTdHIgPSAiIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgh
cmVjb3ZlcmluZykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkID0gW107
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChwIGluIHRhYmxlW3N0YXRlXSkgaWYg
KHRoaXMudGVybWluYWxzX1twXSAmJiBwID4gMikgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBleHBlY3RlZC5wdXNoKCInIiArIHRoaXMudGVybWluYWxzX1twXSArICInIik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmICh0aGlzLmxleGVyLnNob3dQb3NpdGlvbikgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlcnJTdHIgPSAiUGFyc2UgZXJyb3Igb24gbGluZSAiICsgKHl5bGluZW5vICsgMSkg
KyAiOlxuIiArIHRoaXMubGV4ZXIuc2hvd1Bvc2l0aW9uKCkgKyAiXG5FeHBlY3RpbmcgIiArIGV4
cGVjdGVkLmpvaW4oIiwgIikgKyAiLCBnb3QgJyIgKyAodGhpcy50ZXJtaW5hbHNfW3N5bWJvbF0g
fHwgc3ltYm9sKSArICInIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJTdHIgPSAiUGFyc2UgZXJyb3Igb24g
bGluZSAiICsgKHl5bGluZW5vICsgMSkgKyAiOiBVbmV4cGVjdGVkICIgKyAoc3ltYm9sID09IDEg
PyAiZW5kIG9mIGlucHV0IiA6ICInIiArICh0aGlzLnRlcm1pbmFsc19bc3ltYm9sXSB8fCBzeW1i
b2wpICsgIiciKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGhpcy5wYXJzZUVycm9yKGVyclN0ciwgeyB0ZXh0OiB0aGlzLmxleGVy
Lm1hdGNoLCB0b2tlbjogdGhpcy50ZXJtaW5hbHNfW3N5bWJvbF0gfHwgc3ltYm9sLCBsaW5lOiB0
aGlzLmxleGVyLnl5bGluZW5vLCBsb2M6IHl5bG9jLCBleHBlY3RlZDogZXhwZWN0ZWQgfSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgaWYgKGFjdGlvblswXSBpbnN0YW5jZW9mIEFycmF5ICYmIGFjdGlvbi5sZW5n
dGggPiAxKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlBhcnNl
IEVycm9yOiBtdWx0aXBsZSBhY3Rpb25zIHBvc3NpYmxlIGF0IHN0YXRlOiAiICsgc3RhdGUgKyAi
LCB0b2tlbjogIiArIHN5bWJvbCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgc3dpdGNoIChhY3Rpb25bMF0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNh
c2UgMToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFjay5wdXNoKHN5bWJvbCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdnN0YWNrLnB1c2godGhpcy5sZXhlci55eXRleHQp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxzdGFjay5wdXNoKHRoaXMubGV4ZXIueXls
bG9jKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFjay5wdXNoKGFjdGlvblsxXSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ltYm9sID0gbnVsbDsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoIXByZUVycm9yU3ltYm9sKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHl5bGVuZyA9IHRoaXMubGV4ZXIueXlsZW5nOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB5eXRleHQgPSB0aGlzLmxleGVyLnl5dGV4dDsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgeXlsaW5lbm8gPSB0aGlzLmxleGVyLnl5bGluZW5vOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5eWxvYyA9IHRoaXMubGV4ZXIueXlsbG9j
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVjb3ZlcmluZyA+IDApIHJl
Y292ZXJpbmctLTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzeW1ib2wgPSBwcmVFcnJvclN5bWJvbDsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlRXJyb3JTeW1ib2wgPSBudWxsOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBsZW4gPSB0aGlzLnByb2R1Y3Rpb25zX1thY3Rpb25bMV1dWzFdOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHl5dmFsLiQgPSB2c3RhY2tbdnN0YWNrLmxlbmd0aCAtIGxlbl07
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeXl2YWwuXyQgPSB7IGZpcnN0X2xpbmU6IGxz
dGFja1tsc3RhY2subGVuZ3RoIC0gKGxlbiB8fCAxKV0uZmlyc3RfbGluZSwgbGFzdF9saW5lOiBs
c3RhY2tbbHN0YWNrLmxlbmd0aCAtIDFdLmxhc3RfbGluZSwgZmlyc3RfY29sdW1uOiBsc3RhY2tb
bHN0YWNrLmxlbmd0aCAtIChsZW4gfHwgMSldLmZpcnN0X2NvbHVtbiwgbGFzdF9jb2x1bW46IGxz
dGFja1tsc3RhY2subGVuZ3RoIC0gMV0ubGFzdF9jb2x1bW4gfTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAocmFuZ2VzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHl5dmFsLl8kLnJhbmdlID0gW2xzdGFja1tsc3RhY2subGVuZ3RoIC0gKGxlbiB8fCAxKV0ucmFu
Z2VbMF0sIGxzdGFja1tsc3RhY2subGVuZ3RoIC0gMV0ucmFuZ2VbMV1dOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gdGhpcy5w
ZXJmb3JtQWN0aW9uLmNhbGwoeXl2YWwsIHl5dGV4dCwgeXlsZW5nLCB5eWxpbmVubywgdGhpcy55
eSwgYWN0aW9uWzFdLCB2c3RhY2ssIGxzdGFjayk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKHR5cGVvZiByICE9PSAidW5kZWZpbmVkIikgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gcjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxlbikgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGFjayA9IHN0YWNrLnNsaWNlKDAsIC0xICogbGVuICogMik7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZzdGFjayA9IHZzdGFjay5zbGljZSgwLCAtMSAqIGxl
bik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxzdGFjayA9IGxzdGFjay5zbGlj
ZSgwLCAtMSAqIGxlbik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0YWNrLnB1c2godGhpcy5wcm9kdWN0aW9uc19bYWN0aW9uWzFd
XVswXSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnN0YWNrLnB1c2goeXl2YWwuJCk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHN0YWNrLnB1c2goeXl2YWwuXyQpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1N0YXRlID0gdGFibGVbc3RhY2tbc3RhY2subGVu
Z3RoIC0gMl1dW3N0YWNrW3N0YWNrLmxlbmd0aCAtIDFdXTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdGFjay5wdXNoKG5ld1N0YXRlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfTsKKyAgICAgICAgLyogSmlzb24gZ2VuZXJhdGVkIGxleGVyICovCisgICAgICAg
IHZhciBsZXhlciA9IChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB2YXIgbGV4ZXIgPSB7IEVP
RjogMSwKKyAgICAgICAgICAgICAgICBwYXJzZUVycm9yOiBmdW5jdGlvbiBwYXJzZUVycm9yKHN0
ciwgaGFzaCkgeworICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy55eS5wYXJzZXIpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHRoaXMueXkucGFyc2VyLnBhcnNlRXJyb3Ioc3RyLCBoYXNo
KTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHRocm93IG5ldyBFcnJvcihzdHIpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgfSwKKyAgICAgICAgICAgICAgICBzZXRJbnB1dDogZnVuY3Rpb24gc2V0SW5wdXQoaW5w
dXQpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5wdXQgPSBpbnB1dDsKKyAgICAgICAg
ICAgICAgICAgICAgdGhpcy5fbW9yZSA9IHRoaXMuX2xlc3MgPSB0aGlzLmRvbmUgPSBmYWxzZTsK
KyAgICAgICAgICAgICAgICAgICAgdGhpcy55eWxpbmVubyA9IHRoaXMueXlsZW5nID0gMDsKKyAg
ICAgICAgICAgICAgICAgICAgdGhpcy55eXRleHQgPSB0aGlzLm1hdGNoZWQgPSB0aGlzLm1hdGNo
ID0gJyc7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uU3RhY2sgPSBbJ0lOSVRJ
QUwnXTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy55eWxsb2MgPSB7IGZpcnN0X2xpbmU6IDEs
IGZpcnN0X2NvbHVtbjogMCwgbGFzdF9saW5lOiAxLCBsYXN0X2NvbHVtbjogMCB9OworICAgICAg
ICAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJhbmdlcykgdGhpcy55eWxsb2MucmFuZ2Ug
PSBbMCwgMF07CisgICAgICAgICAgICAgICAgICAgIHRoaXMub2Zmc2V0ID0gMDsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
ICAgICBpbnB1dDogZnVuY3Rpb24gaW5wdXQoKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBj
aCA9IHRoaXMuX2lucHV0WzBdOworICAgICAgICAgICAgICAgICAgICB0aGlzLnl5dGV4dCArPSBj
aDsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy55eWxlbmcrKzsKKyAgICAgICAgICAgICAgICAg
ICAgdGhpcy5vZmZzZXQrKzsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXRjaCArPSBjaDsK
KyAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXRjaGVkICs9IGNoOworICAgICAgICAgICAgICAg
ICAgICB2YXIgbGluZXMgPSBjaC5tYXRjaCgvKD86XHJcbj98XG4pLiovZyk7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChsaW5lcykgeworICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy55eWxp
bmVubysrOworICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy55eWxsb2MubGFzdF9saW5lKys7
CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0
aGlzLnl5bGxvYy5sYXN0X2NvbHVtbisrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMucmFuZ2VzKSB0aGlzLnl5bGxvYy5yYW5nZVsx
XSsrOworCisgICAgICAgICAgICAgICAgICAgIHRoaXMuX2lucHV0ID0gdGhpcy5faW5wdXQuc2xp
Y2UoMSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBjaDsKKyAgICAgICAgICAgICAgICB9
LAorICAgICAgICAgICAgICAgIHVucHV0OiBmdW5jdGlvbiB1bnB1dChjaCkgeworICAgICAgICAg
ICAgICAgICAgICB2YXIgbGVuID0gY2gubGVuZ3RoOworICAgICAgICAgICAgICAgICAgICB2YXIg
bGluZXMgPSBjaC5zcGxpdCgvKD86XHJcbj98XG4pL2cpOworCisgICAgICAgICAgICAgICAgICAg
IHRoaXMuX2lucHV0ID0gY2ggKyB0aGlzLl9pbnB1dDsKKyAgICAgICAgICAgICAgICAgICAgdGhp
cy55eXRleHQgPSB0aGlzLnl5dGV4dC5zdWJzdHIoMCwgdGhpcy55eXRleHQubGVuZ3RoIC0gbGVu
IC0gMSk7CisgICAgICAgICAgICAgICAgICAgIC8vdGhpcy55eWxlbmcgLT0gbGVuOworICAgICAg
ICAgICAgICAgICAgICB0aGlzLm9mZnNldCAtPSBsZW47CisgICAgICAgICAgICAgICAgICAgIHZh
ciBvbGRMaW5lcyA9IHRoaXMubWF0Y2guc3BsaXQoLyg/OlxyXG4/fFxuKS9nKTsKKyAgICAgICAg
ICAgICAgICAgICAgdGhpcy5tYXRjaCA9IHRoaXMubWF0Y2guc3Vic3RyKDAsIHRoaXMubWF0Y2gu
bGVuZ3RoIC0gMSk7CisgICAgICAgICAgICAgICAgICAgIHRoaXMubWF0Y2hlZCA9IHRoaXMubWF0
Y2hlZC5zdWJzdHIoMCwgdGhpcy5tYXRjaGVkLmxlbmd0aCAtIDEpOworCisgICAgICAgICAgICAg
ICAgICAgIGlmIChsaW5lcy5sZW5ndGggLSAxKSB0aGlzLnl5bGluZW5vIC09IGxpbmVzLmxlbmd0
aCAtIDE7CisgICAgICAgICAgICAgICAgICAgIHZhciByID0gdGhpcy55eWxsb2MucmFuZ2U7CisK
KyAgICAgICAgICAgICAgICAgICAgdGhpcy55eWxsb2MgPSB7IGZpcnN0X2xpbmU6IHRoaXMueXls
bG9jLmZpcnN0X2xpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICBsYXN0X2xpbmU6IHRoaXMu
eXlsaW5lbm8gKyAxLAorICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RfY29sdW1uOiB0aGlz
Lnl5bGxvYy5maXJzdF9jb2x1bW4sCisgICAgICAgICAgICAgICAgICAgICAgICBsYXN0X2NvbHVt
bjogbGluZXMgPyAobGluZXMubGVuZ3RoID09PSBvbGRMaW5lcy5sZW5ndGggPyB0aGlzLnl5bGxv
Yy5maXJzdF9jb2x1bW4gOiAwKSArIG9sZExpbmVzW29sZExpbmVzLmxlbmd0aCAtIGxpbmVzLmxl
bmd0aF0ubGVuZ3RoIC0gbGluZXNbMF0ubGVuZ3RoIDogdGhpcy55eWxsb2MuZmlyc3RfY29sdW1u
IC0gbGVuCisgICAgICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgICAgICAgICAgaWYg
KHRoaXMub3B0aW9ucy5yYW5nZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMueXls
bG9jLnJhbmdlID0gW3JbMF0sIHJbMF0gKyB0aGlzLnl5bGVuZyAtIGxlbl07CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgICAg
ICAgICAgfSwKKyAgICAgICAgICAgICAgICBtb3JlOiBmdW5jdGlvbiBtb3JlKCkgeworICAgICAg
ICAgICAgICAgICAgICB0aGlzLl9tb3JlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHRoaXM7CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBsZXNzOiBmdW5j
dGlvbiBsZXNzKG4pIHsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy51bnB1dCh0aGlzLm1hdGNo
LnNsaWNlKG4pKTsKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHBhc3RJbnB1
dDogZnVuY3Rpb24gcGFzdElucHV0KCkgeworICAgICAgICAgICAgICAgICAgICB2YXIgcGFzdCA9
IHRoaXMubWF0Y2hlZC5zdWJzdHIoMCwgdGhpcy5tYXRjaGVkLmxlbmd0aCAtIHRoaXMubWF0Y2gu
bGVuZ3RoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChwYXN0Lmxlbmd0aCA+IDIwID8g
Jy4uLicgOiAnJykgKyBwYXN0LnN1YnN0cigtMjApLnJlcGxhY2UoL1xuL2csICIiKTsKKyAgICAg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHVwY29taW5nSW5wdXQ6IGZ1bmN0aW9uIHVw
Y29taW5nSW5wdXQoKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBuZXh0ID0gdGhpcy5tYXRj
aDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5leHQubGVuZ3RoIDwgMjApIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG5leHQgKz0gdGhpcy5faW5wdXQuc3Vic3RyKDAsIDIwIC0gbmV4dC5s
ZW5ndGgpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biAobmV4dC5zdWJzdHIoMCwgMjApICsgKG5leHQubGVuZ3RoID4gMjAgPyAnLi4uJyA6ICcnKSku
cmVwbGFjZSgvXG4vZywgIiIpOworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAg
c2hvd1Bvc2l0aW9uOiBmdW5jdGlvbiBzaG93UG9zaXRpb24oKSB7CisgICAgICAgICAgICAgICAg
ICAgIHZhciBwcmUgPSB0aGlzLnBhc3RJbnB1dCgpOworICAgICAgICAgICAgICAgICAgICB2YXIg
YyA9IG5ldyBBcnJheShwcmUubGVuZ3RoICsgMSkuam9pbigiLSIpOworICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gcHJlICsgdGhpcy51cGNvbWluZ0lucHV0KCkgKyAiXG4iICsgYyArICJeIjsK
KyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIG5leHQ6IGZ1bmN0aW9uIG5leHQo
KSB7CisgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmRvbmUpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0aGlzLkVPRjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICBpZiAoIXRoaXMuX2lucHV0KSB0aGlzLmRvbmUgPSB0cnVlOworCisgICAg
ICAgICAgICAgICAgICAgIHZhciB0b2tlbiwgbWF0Y2gsIHRlbXBNYXRjaCwgaW5kZXgsIGNvbCwg
bGluZXM7CisgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5fbW9yZSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgdGhpcy55eXRleHQgPSAnJzsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHRoaXMubWF0Y2ggPSAnJzsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICB2YXIgcnVsZXMgPSB0aGlzLl9jdXJyZW50UnVsZXMoKTsKKyAgICAgICAgICAgICAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBydWxlcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAg
ICAgICAgICAgICAgdGVtcE1hdGNoID0gdGhpcy5faW5wdXQubWF0Y2godGhpcy5ydWxlc1tydWxl
c1tpXV0pOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRlbXBNYXRjaCAmJiAoIW1hdGNo
IHx8IHRlbXBNYXRjaFswXS5sZW5ndGggPiBtYXRjaFswXS5sZW5ndGgpKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbWF0Y2ggPSB0ZW1wTWF0Y2g7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW5kZXggPSBpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhp
cy5vcHRpb25zLmZsZXgpIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChtYXRjaCkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgbGluZXMgPSBtYXRjaFswXS5tYXRjaCgvKD86XHJcbj98XG4pLiov
Zyk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGluZXMpIHRoaXMueXlsaW5lbm8gKz0g
bGluZXMubGVuZ3RoOworICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy55eWxsb2MgPSB7IGZp
cnN0X2xpbmU6IHRoaXMueXlsbG9jLmxhc3RfbGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBsYXN0X2xpbmU6IHRoaXMueXlsaW5lbm8gKyAxLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZpcnN0X2NvbHVtbjogdGhpcy55eWxsb2MubGFzdF9jb2x1bW4sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbGFzdF9jb2x1bW46IGxpbmVzID8gbGluZXNbbGluZXMubGVuZ3Ro
IC0gMV0ubGVuZ3RoIC0gbGluZXNbbGluZXMubGVuZ3RoIC0gMV0ubWF0Y2goL1xyP1xuPy8pWzBd
Lmxlbmd0aCA6IHRoaXMueXlsbG9jLmxhc3RfY29sdW1uICsgbWF0Y2hbMF0ubGVuZ3RoIH07Cisg
ICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnl5dGV4dCArPSBtYXRjaFswXTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHRoaXMubWF0Y2ggKz0gbWF0Y2hbMF07CisgICAgICAgICAgICAgICAg
ICAgICAgICB0aGlzLm1hdGNoZXMgPSBtYXRjaDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRo
aXMueXlsZW5nID0gdGhpcy55eXRleHQubGVuZ3RoOworICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKHRoaXMub3B0aW9ucy5yYW5nZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
aGlzLnl5bGxvYy5yYW5nZSA9IFt0aGlzLm9mZnNldCwgdGhpcy5vZmZzZXQgKz0gdGhpcy55eWxl
bmddOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAg
dGhpcy5fbW9yZSA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5wdXQg
PSB0aGlzLl9pbnB1dC5zbGljZShtYXRjaFswXS5sZW5ndGgpOworICAgICAgICAgICAgICAgICAg
ICAgICAgdGhpcy5tYXRjaGVkICs9IG1hdGNoWzBdOworICAgICAgICAgICAgICAgICAgICAgICAg
dG9rZW4gPSB0aGlzLnBlcmZvcm1BY3Rpb24uY2FsbCh0aGlzLCB0aGlzLnl5LCB0aGlzLCBydWxl
c1tpbmRleF0sIHRoaXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgg
LSAxXSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5kb25lICYmIHRoaXMuX2lu
cHV0KSB0aGlzLmRvbmUgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0b2tl
bikgcmV0dXJuIHRva2VuO2Vsc2UgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgIGlmICh0aGlzLl9pbnB1dCA9PT0gIiIpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0aGlzLkVPRjsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcnNlRXJyb3IoJ0xleGljYWwg
ZXJyb3Igb24gbGluZSAnICsgKHRoaXMueXlsaW5lbm8gKyAxKSArICcuIFVucmVjb2duaXplZCB0
ZXh0LlxuJyArIHRoaXMuc2hvd1Bvc2l0aW9uKCksIHsgdGV4dDogIiIsIHRva2VuOiBudWxsLCBs
aW5lOiB0aGlzLnl5bGluZW5vIH0pOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgfSwKKyAgICAgICAgICAgICAgICBsZXg6IGZ1bmN0aW9uIGxleCgpIHsKKyAgICAgICAg
ICAgICAgICAgICAgdmFyIHIgPSB0aGlzLm5leHQoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KHR5cGVvZiByICE9PSAndW5kZWZpbmVkJykgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHI7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdGhpcy5sZXgoKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICAgICAgYmVnaW46IGZ1bmN0aW9uIGJlZ2luKGNvbmRpdGlv
bikgeworICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbmRpdGlvblN0YWNrLnB1c2goY29uZGl0
aW9uKTsKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHBvcFN0YXRlOiBmdW5j
dGlvbiBwb3BTdGF0ZSgpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29uZGl0
aW9uU3RhY2sucG9wKCk7CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBfY3Vy
cmVudFJ1bGVzOiBmdW5jdGlvbiBfY3VycmVudFJ1bGVzKCkgeworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdGhpcy5jb25kaXRpb25zW3RoaXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRp
b25TdGFjay5sZW5ndGggLSAxXV0ucnVsZXM7CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgICAgICB0b3BTdGF0ZTogZnVuY3Rpb24gdG9wU3RhdGUoKSB7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3Ro
IC0gMl07CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBwdXNoU3RhdGU6IGZ1
bmN0aW9uIGJlZ2luKGNvbmRpdGlvbikgeworICAgICAgICAgICAgICAgICAgICB0aGlzLmJlZ2lu
KGNvbmRpdGlvbik7CisgICAgICAgICAgICAgICAgfSB9OworICAgICAgICAgICAgbGV4ZXIub3B0
aW9ucyA9IHt9OworICAgICAgICAgICAgbGV4ZXIucGVyZm9ybUFjdGlvbiA9IGZ1bmN0aW9uIGFu
b255bW91cyh5eSwgeXlfLCAkYXZvaWRpbmdfbmFtZV9jb2xsaXNpb25zLCBZWV9TVEFSVAorICAg
ICAgICAgICAgLyoqLykgeworCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gc3RyaXAoc3RhcnQs
IGVuZCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4geXlfLnl5dGV4dCA9IHl5Xy55eXRl
eHQuc3Vic3RyKHN0YXJ0LCB5eV8ueXlsZW5nIC0gZW5kKTsKKyAgICAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICB2YXIgWVlTVEFURSA9IFlZX1NUQVJUOworICAgICAgICAgICAgICAg
IHN3aXRjaCAoJGF2b2lkaW5nX25hbWVfY29sbGlzaW9ucykgeworICAgICAgICAgICAgICAgICAg
ICBjYXNlIDA6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoeXlfLnl5dGV4dC5zbGljZSgt
MikgPT09ICJcXFxcIikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmlwKDAsIDEp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmVnaW4oIm11Iik7CisgICAgICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHl5Xy55eXRleHQuc2xpY2UoLTEpID09PSAiXFwi
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaXAoMCwgMSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGhpcy5iZWdpbigiZW11Iik7CisgICAgICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmVnaW4oIm11
Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoeXlfLnl5dGV4dCkgcmV0dXJuIDE1OworCisgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIDE1OworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxNTsKKworICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHRoaXMuYmVnaW4oJ3JhdycpO3JldHVybiAxNTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6CisgICAgICAgICAgICAg
ICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBT
aG91bGQgYmUgdXNpbmcgYHRoaXMudG9wU3RhdGUoKWAgYmVsb3csIGJ1dCBpdCBjdXJyZW50bHkK
KyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJldHVybnMgdGhlIHNlY29uZCB0b3AgaW5zdGVh
ZCBvZiB0aGUgZmlyc3QgdG9wLiBPcGVuZWQgYW4KKyAgICAgICAgICAgICAgICAgICAgICAgIC8v
IGlzc3VlIGFib3V0IGl0IGF0IGh0dHBzOi8vZ2l0aHViLmNvbS96YWFjaC9qaXNvbi9pc3N1ZXMv
MjkxCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jb25kaXRpb25TdGFja1t0aGlz
LmNvbmRpdGlvblN0YWNrLmxlbmd0aCAtIDFdID09PSAncmF3JykgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiAxNTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeXlfLnl5dGV4dCA9IHl5Xy55eXRleHQuc3Vi
c3RyKDUsIHl5Xy55eWxlbmcgLSA5KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gJ0VORF9SQVdfQkxPQ0snOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA1OgorICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE1OworICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNjoKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHRoaXMucG9wU3RhdGUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxNDsK
KworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNh
c2UgNzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA2NTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDg6CisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gNjg7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICAgICAgY2FzZSA5OgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIDE5OworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
ICAgIGNhc2UgMTA6CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJlZ2luKCdyYXcnKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiAyMzsKKworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgICAgIGNhc2UgMTE6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gNTU7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAg
ICAgY2FzZSAxMjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA2MDsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDEzOgorICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDI5OworICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMTQ6CisgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gNDc7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICAgICAgY2FzZSAxNToKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucG9wU3Rh
dGUoKTtyZXR1cm4gNDQ7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICAgICAgY2FzZSAxNjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucG9wU3Rh
dGUoKTtyZXR1cm4gNDQ7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICAgICAgY2FzZSAxNzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAzNDsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNl
IDE4OgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDM5OworICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMTk6CisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gNTE7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICAgICAgY2FzZSAyMDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiA0ODsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgICBjYXNlIDIxOgorICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51bnB1dCh5eV8ueXl0
ZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHRoaXMuYmVnaW4oJ2NvbScpOworCisgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAyMjoKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biAxNDsKKworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
ICAgIGNhc2UgMjM6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gNDg7CisgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAyNDoKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA3MzsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDI1OgorICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIDcyOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgICAgIGNhc2UgMjY6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gNzI7
CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2Fz
ZSAyNzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA4NzsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDI4OgorICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gaWdub3JlIHdoaXRlc3BhY2UKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDI5OgorICAgICAgICAgICAgICAg
ICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO3JldHVybiA1NDsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDMwOgorICAgICAgICAgICAgICAg
ICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO3JldHVybiAzMzsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDMxOgorICAgICAgICAgICAgICAg
ICAgICAgICAgeXlfLnl5dGV4dCA9IHN0cmlwKDEsIDIpLnJlcGxhY2UoL1xcIi9nLCAnIicpO3Jl
dHVybiA4MDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgICBjYXNlIDMyOgorICAgICAgICAgICAgICAgICAgICAgICAgeXlfLnl5dGV4dCA9IHN0cmlw
KDEsIDIpLnJlcGxhY2UoL1xcJy9nLCAiJyIpO3JldHVybiA4MDsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDMzOgorICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIDg1OworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgICAgIGNhc2UgMzQ6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gODI7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAg
ICAgY2FzZSAzNToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA4MjsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDM2OgorICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDgzOworICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMzc6CisgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gODQ7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICAgICAgY2FzZSAzODoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA4MTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNl
IDM5OgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDc1OworICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNDA6CisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gNzc7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICAgICAgY2FzZSA0MToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiA3MjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgICBjYXNlIDQyOgorICAgICAgICAgICAgICAgICAgICAgICAgeXlfLnl5dGV4dCA9IHl5Xy55
eXRleHQucmVwbGFjZSgvXFwoW1xcXF1dKS9nLCAnJDEnKTtyZXR1cm4gNzI7CisgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA0MzoKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiAnSU5WQUxJRCc7CisgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA0NDoKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiA1OworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIGxleGVyLnJ1bGVzID0g
Wy9eKD86W15ceDAwXSo/KD89KFx7XHspKSkvLCAvXig/OlteXHgwMF0rKS8sIC9eKD86W15ceDAw
XXsyLH0/KD89KFx7XHt8XFxce1x7fFxcXFxce1x7fCQpKSkvLCAvXig/Olx7XHtce1x7KD89W15c
L10pKS8sIC9eKD86XHtce1x7XHtcL1teXHMhIiMlLSxcLlwvOy0+QFxbLVxeYFx7LX5dKyg/PVs9
fVxzXC8uXSlcfVx9XH1cfSkvLCAvXig/OlteXHgwMF0qPyg/PShce1x7XHtceykpKS8sIC9eKD86
W1xzXFNdKj8tLSh+KT9cfVx9KS8sIC9eKD86XCgpLywgL14oPzpcKSkvLCAvXig/Olx7XHtce1x7
KS8sIC9eKD86XH1cfVx9XH0pLywgL14oPzpce1x7KH4pPz4pLywgL14oPzpce1x7KH4pPyM+KS8s
IC9eKD86XHtceyh+KT8jXCo/KS8sIC9eKD86XHtceyh+KT9cLykvLCAvXig/Olx7XHsofik/XF5c
cyoofik/XH1cfSkvLCAvXig/Olx7XHsofik/XHMqZWxzZVxzKih+KT9cfVx9KS8sIC9eKD86XHtc
eyh+KT9cXikvLCAvXig/Olx7XHsofik/XHMqZWxzZVxiKS8sIC9eKD86XHtceyh+KT9ceykvLCAv
Xig/Olx7XHsofik/JikvLCAvXig/Olx7XHsofik/IS0tKS8sIC9eKD86XHtceyh+KT8hW1xzXFNd
Kj9cfVx9KS8sIC9eKD86XHtceyh+KT9cKj8pLywgL14oPzo9KS8sIC9eKD86XC5cLikvLCAvXig/
OlwuKD89KFs9fn1cc1wvLil8XSkpKS8sIC9eKD86W1wvLl0pLywgL14oPzpccyspLywgL14oPzpc
fSh+KT9cfVx9KS8sIC9eKD86KH4pP1x9XH0pLywgL14oPzoiKFxcWyJdfFteIl0pKiIpLywgL14o
PzonKFxcWyddfFteJ10pKicpLywgL14oPzpAKS8sIC9eKD86dHJ1ZSg/PShbfn1ccyldKSkpLywg
L14oPzpmYWxzZSg/PShbfn1ccyldKSkpLywgL14oPzp1bmRlZmluZWQoPz0oW359XHMpXSkpKS8s
IC9eKD86bnVsbCg/PShbfn1ccyldKSkpLywgL14oPzotP1swLTldKyg/OlwuWzAtOV0rKT8oPz0o
W359XHMpXSkpKS8sIC9eKD86YXNccytcfCkvLCAvXig/Olx8KS8sIC9eKD86KFteXHMhIiMlLSxc
LlwvOy0+QFxbLVxeYFx7LX5dKyg/PShbPX59XHNcLy4pfF0pKSkpLywgL14oPzpcWyhcXFxdfFte
XF1dKSpcXSkvLCAvXig/Oi4pLywgL14oPzokKS9dOworICAgICAgICAgICAgbGV4ZXIuY29uZGl0
aW9ucyA9IHsgIm11IjogeyAicnVsZXMiOiBbNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAx
NSwgMTYsIDE3LCAxOCwgMTksIDIwLCAyMSwgMjIsIDIzLCAyNCwgMjUsIDI2LCAyNywgMjgsIDI5
LCAzMCwgMzEsIDMyLCAzMywgMzQsIDM1LCAzNiwgMzcsIDM4LCAzOSwgNDAsIDQxLCA0MiwgNDMs
IDQ0XSwgImluY2x1c2l2ZSI6IGZhbHNlIH0sICJlbXUiOiB7ICJydWxlcyI6IFsyXSwgImluY2x1
c2l2ZSI6IGZhbHNlIH0sICJjb20iOiB7ICJydWxlcyI6IFs2XSwgImluY2x1c2l2ZSI6IGZhbHNl
IH0sICJyYXciOiB7ICJydWxlcyI6IFszLCA0LCA1XSwgImluY2x1c2l2ZSI6IGZhbHNlIH0sICJJ
TklUSUFMIjogeyAicnVsZXMiOiBbMCwgMSwgNDRdLCAiaW5jbHVzaXZlIjogdHJ1ZSB9IH07Cisg
ICAgICAgICAgICByZXR1cm4gbGV4ZXI7CisgICAgICAgIH0pKCk7CisgICAgICAgIHBhcnNlci5s
ZXhlciA9IGxleGVyOworICAgICAgICBmdW5jdGlvbiBQYXJzZXIoKSB7CisgICAgICAgICAgICB0
aGlzLnl5ID0ge307CisgICAgICAgIH1QYXJzZXIucHJvdG90eXBlID0gcGFyc2VyO3BhcnNlci5Q
YXJzZXIgPSBQYXJzZXI7CisgICAgICAgIHJldHVybiBuZXcgUGFyc2VyKCk7CisgICAgfSkoKTtl
eHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOworICAgIGV4cG9ydHNbJ2RlZmF1bHQnXSA9IGhhbmRs
ZWJhcnM7CisKKy8qKiovIH0sCisvKiAyNyAqLworLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBv
cnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CisKKyAgICAndXNlIHN0cmljdCc7CisKKyAgICB2
YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVsdCA9IF9fd2VicGFja19yZXF1aXJlX18oMSlbJ2RlZmF1
bHQnXTsKKworICAgIGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7CisKKyAgICB2YXIgX3Zpc2l0
b3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI4KTsKKworICAgIHZhciBfdmlzaXRvcjIgPSBfaW50
ZXJvcFJlcXVpcmVEZWZhdWx0KF92aXNpdG9yKTsKKworICAgIGZ1bmN0aW9uIFdoaXRlc3BhY2VD
b250cm9sKCkgeworICAgICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDAgfHwg
YXJndW1lbnRzWzBdID09PSB1bmRlZmluZWQgPyB7fSA6IGFyZ3VtZW50c1swXTsKKworICAgICAg
dGhpcy5vcHRpb25zID0gb3B0aW9uczsKKyAgICB9CisgICAgV2hpdGVzcGFjZUNvbnRyb2wucHJv
dG90eXBlID0gbmV3IF92aXNpdG9yMlsnZGVmYXVsdCddKCk7CisKKyAgICBXaGl0ZXNwYWNlQ29u
dHJvbC5wcm90b3R5cGUuUHJvZ3JhbSA9IGZ1bmN0aW9uIChwcm9ncmFtKSB7CisgICAgICB2YXIg
ZG9TdGFuZGFsb25lID0gIXRoaXMub3B0aW9ucy5pZ25vcmVTdGFuZGFsb25lOworCisgICAgICB2
YXIgaXNSb290ID0gIXRoaXMuaXNSb290U2VlbjsKKyAgICAgIHRoaXMuaXNSb290U2VlbiA9IHRy
dWU7CisKKyAgICAgIHZhciBib2R5ID0gcHJvZ3JhbS5ib2R5OworICAgICAgZm9yICh2YXIgaSA9
IDAsIGwgPSBib2R5Lmxlbmd0aDsgaSA8IGw7IGkrKykgeworICAgICAgICB2YXIgY3VycmVudCA9
IGJvZHlbaV0sCisgICAgICAgICAgICBzdHJpcCA9IHRoaXMuYWNjZXB0KGN1cnJlbnQpOworCisg
ICAgICAgIGlmICghc3RyaXApIHsKKyAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisg
ICAgICAgIHZhciBfaXNQcmV2V2hpdGVzcGFjZSA9IGlzUHJldldoaXRlc3BhY2UoYm9keSwgaSwg
aXNSb290KSwKKyAgICAgICAgICAgIF9pc05leHRXaGl0ZXNwYWNlID0gaXNOZXh0V2hpdGVzcGFj
ZShib2R5LCBpLCBpc1Jvb3QpLAorICAgICAgICAgICAgb3BlblN0YW5kYWxvbmUgPSBzdHJpcC5v
cGVuU3RhbmRhbG9uZSAmJiBfaXNQcmV2V2hpdGVzcGFjZSwKKyAgICAgICAgICAgIGNsb3NlU3Rh
bmRhbG9uZSA9IHN0cmlwLmNsb3NlU3RhbmRhbG9uZSAmJiBfaXNOZXh0V2hpdGVzcGFjZSwKKyAg
ICAgICAgICAgIGlubGluZVN0YW5kYWxvbmUgPSBzdHJpcC5pbmxpbmVTdGFuZGFsb25lICYmIF9p
c1ByZXZXaGl0ZXNwYWNlICYmIF9pc05leHRXaGl0ZXNwYWNlOworCisgICAgICAgIGlmIChzdHJp
cC5jbG9zZSkgeworICAgICAgICAgIG9taXRSaWdodChib2R5LCBpLCB0cnVlKTsKKyAgICAgICAg
fQorICAgICAgICBpZiAoc3RyaXAub3BlbikgeworICAgICAgICAgIG9taXRMZWZ0KGJvZHksIGks
IHRydWUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGRvU3RhbmRhbG9uZSAmJiBpbmxpbmVT
dGFuZGFsb25lKSB7CisgICAgICAgICAgb21pdFJpZ2h0KGJvZHksIGkpOworCisgICAgICAgICAg
aWYgKG9taXRMZWZ0KGJvZHksIGkpKSB7CisgICAgICAgICAgICAvLyBJZiB3ZSBhcmUgb24gYSBz
dGFuZGFsb25lIG5vZGUsIHNhdmUgdGhlIGluZGVudCBpbmZvIGZvciBwYXJ0aWFscworICAgICAg
ICAgICAgaWYgKGN1cnJlbnQudHlwZSA9PT0gJ1BhcnRpYWxTdGF0ZW1lbnQnKSB7CisgICAgICAg
ICAgICAgIC8vIFB1bGwgb3V0IHRoZSB3aGl0ZXNwYWNlIGZyb20gdGhlIGZpbmFsIGxpbmUKKyAg
ICAgICAgICAgICAgY3VycmVudC5pbmRlbnQgPSAvKFsgXHRdKyQpLy5leGVjKGJvZHlbaSAtIDFd
Lm9yaWdpbmFsKVsxXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKGRvU3RhbmRhbG9uZSAmJiBvcGVuU3RhbmRhbG9uZSkgeworICAgICAgICAgIG9t
aXRSaWdodCgoY3VycmVudC5wcm9ncmFtIHx8IGN1cnJlbnQuaW52ZXJzZSkuYm9keSk7CisKKyAg
ICAgICAgICAvLyBTdHJpcCBvdXQgdGhlIHByZXZpb3VzIGNvbnRlbnQgbm9kZSBpZiBpdCdzIHdo
aXRlc3BhY2Ugb25seQorICAgICAgICAgIG9taXRMZWZ0KGJvZHksIGkpOworICAgICAgICB9Cisg
ICAgICAgIGlmIChkb1N0YW5kYWxvbmUgJiYgY2xvc2VTdGFuZGFsb25lKSB7CisgICAgICAgICAg
Ly8gQWx3YXlzIHN0cmlwIHRoZSBuZXh0IG5vZGUKKyAgICAgICAgICBvbWl0UmlnaHQoYm9keSwg
aSk7CisKKyAgICAgICAgICBvbWl0TGVmdCgoY3VycmVudC5pbnZlcnNlIHx8IGN1cnJlbnQucHJv
Z3JhbSkuYm9keSk7CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgcmV0dXJuIHByb2dyYW07
CisgICAgfTsKKworICAgIFdoaXRlc3BhY2VDb250cm9sLnByb3RvdHlwZS5CbG9ja1N0YXRlbWVu
dCA9IFdoaXRlc3BhY2VDb250cm9sLnByb3RvdHlwZS5EZWNvcmF0b3JCbG9jayA9IFdoaXRlc3Bh
Y2VDb250cm9sLnByb3RvdHlwZS5QYXJ0aWFsQmxvY2tTdGF0ZW1lbnQgPSBmdW5jdGlvbiAoYmxv
Y2spIHsKKyAgICAgIHRoaXMuYWNjZXB0KGJsb2NrLnByb2dyYW0pOworICAgICAgdGhpcy5hY2Nl
cHQoYmxvY2suaW52ZXJzZSk7CisKKyAgICAgIC8vIEZpbmQgdGhlIGludmVyc2UgcHJvZ3JhbSB0
aGF0IGlzIGludm9sZWQgd2l0aCB3aGl0ZXNwYWNlIHN0cmlwcGluZy4KKyAgICAgIHZhciBwcm9n
cmFtID0gYmxvY2sucHJvZ3JhbSB8fCBibG9jay5pbnZlcnNlLAorICAgICAgICAgIGludmVyc2Ug
PSBibG9jay5wcm9ncmFtICYmIGJsb2NrLmludmVyc2UsCisgICAgICAgICAgZmlyc3RJbnZlcnNl
ID0gaW52ZXJzZSwKKyAgICAgICAgICBsYXN0SW52ZXJzZSA9IGludmVyc2U7CisKKyAgICAgIGlm
IChpbnZlcnNlICYmIGludmVyc2UuY2hhaW5lZCkgeworICAgICAgICBmaXJzdEludmVyc2UgPSBp
bnZlcnNlLmJvZHlbMF0ucHJvZ3JhbTsKKworICAgICAgICAvLyBXYWxrIHRoZSBpbnZlcnNlIGNo
YWluIHRvIGZpbmQgdGhlIGxhc3QgaW52ZXJzZSB0aGF0IGlzIGFjdHVhbGx5IGluIHRoZSBjaGFp
bi4KKyAgICAgICAgd2hpbGUgKGxhc3RJbnZlcnNlLmNoYWluZWQpIHsKKyAgICAgICAgICBsYXN0
SW52ZXJzZSA9IGxhc3RJbnZlcnNlLmJvZHlbbGFzdEludmVyc2UuYm9keS5sZW5ndGggLSAxXS5w
cm9ncmFtOworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIHZhciBzdHJpcCA9IHsKKyAgICAg
ICAgb3BlbjogYmxvY2sub3BlblN0cmlwLm9wZW4sCisgICAgICAgIGNsb3NlOiBibG9jay5jbG9z
ZVN0cmlwLmNsb3NlLAorCisgICAgICAgIC8vIERldGVybWluZSB0aGUgc3RhbmRhbG9uZSBjYW5k
aWFjeS4gQmFzaWNhbGx5IGZsYWcgb3VyIGNvbnRlbnQgYXMgYmVpbmcgcG9zc2libHkgc3RhbmRh
bG9uZQorICAgICAgICAvLyBzbyBvdXIgcGFyZW50IGNhbiBkZXRlcm1pbmUgaWYgd2UgYWN0dWFs
bHkgYXJlIHN0YW5kYWxvbmUKKyAgICAgICAgb3BlblN0YW5kYWxvbmU6IGlzTmV4dFdoaXRlc3Bh
Y2UocHJvZ3JhbS5ib2R5KSwKKyAgICAgICAgY2xvc2VTdGFuZGFsb25lOiBpc1ByZXZXaGl0ZXNw
YWNlKChmaXJzdEludmVyc2UgfHwgcHJvZ3JhbSkuYm9keSkKKyAgICAgIH07CisKKyAgICAgIGlm
IChibG9jay5vcGVuU3RyaXAuY2xvc2UpIHsKKyAgICAgICAgb21pdFJpZ2h0KHByb2dyYW0uYm9k
eSwgbnVsbCwgdHJ1ZSk7CisgICAgICB9CisKKyAgICAgIGlmIChpbnZlcnNlKSB7CisgICAgICAg
IHZhciBpbnZlcnNlU3RyaXAgPSBibG9jay5pbnZlcnNlU3RyaXA7CisKKyAgICAgICAgaWYgKGlu
dmVyc2VTdHJpcC5vcGVuKSB7CisgICAgICAgICAgb21pdExlZnQocHJvZ3JhbS5ib2R5LCBudWxs
LCB0cnVlKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChpbnZlcnNlU3RyaXAuY2xvc2UpIHsK
KyAgICAgICAgICBvbWl0UmlnaHQoZmlyc3RJbnZlcnNlLmJvZHksIG51bGwsIHRydWUpOworICAg
ICAgICB9CisgICAgICAgIGlmIChibG9jay5jbG9zZVN0cmlwLm9wZW4pIHsKKyAgICAgICAgICBv
bWl0TGVmdChsYXN0SW52ZXJzZS5ib2R5LCBudWxsLCB0cnVlKTsKKyAgICAgICAgfQorCisgICAg
ICAgIC8vIEZpbmQgc3RhbmRhbG9uZSBlbHNlIHN0YXRtZW50cworICAgICAgICBpZiAoIXRoaXMu
b3B0aW9ucy5pZ25vcmVTdGFuZGFsb25lICYmIGlzUHJldldoaXRlc3BhY2UocHJvZ3JhbS5ib2R5
KSAmJiBpc05leHRXaGl0ZXNwYWNlKGZpcnN0SW52ZXJzZS5ib2R5KSkgeworICAgICAgICAgIG9t
aXRMZWZ0KHByb2dyYW0uYm9keSk7CisgICAgICAgICAgb21pdFJpZ2h0KGZpcnN0SW52ZXJzZS5i
b2R5KTsKKyAgICAgICAgfQorICAgICAgfSBlbHNlIGlmIChibG9jay5jbG9zZVN0cmlwLm9wZW4p
IHsKKyAgICAgICAgb21pdExlZnQocHJvZ3JhbS5ib2R5LCBudWxsLCB0cnVlKTsKKyAgICAgIH0K
KworICAgICAgcmV0dXJuIHN0cmlwOworICAgIH07CisKKyAgICBXaGl0ZXNwYWNlQ29udHJvbC5w
cm90b3R5cGUuRGVjb3JhdG9yID0gV2hpdGVzcGFjZUNvbnRyb2wucHJvdG90eXBlLk11c3RhY2hl
U3RhdGVtZW50ID0gZnVuY3Rpb24gKG11c3RhY2hlKSB7CisgICAgICByZXR1cm4gbXVzdGFjaGUu
c3RyaXA7CisgICAgfTsKKworICAgIFdoaXRlc3BhY2VDb250cm9sLnByb3RvdHlwZS5QYXJ0aWFs
U3RhdGVtZW50ID0gV2hpdGVzcGFjZUNvbnRyb2wucHJvdG90eXBlLkNvbW1lbnRTdGF0ZW1lbnQg
PSBmdW5jdGlvbiAobm9kZSkgeworICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8KKyAg
ICAgIHZhciBzdHJpcCA9IG5vZGUuc3RyaXAgfHwge307CisgICAgICByZXR1cm4geworICAgICAg
ICBpbmxpbmVTdGFuZGFsb25lOiB0cnVlLAorICAgICAgICBvcGVuOiBzdHJpcC5vcGVuLAorICAg
ICAgICBjbG9zZTogc3RyaXAuY2xvc2UKKyAgICAgIH07CisgICAgfTsKKworICAgIGZ1bmN0aW9u
IGlzUHJldldoaXRlc3BhY2UoYm9keSwgaSwgaXNSb290KSB7CisgICAgICBpZiAoaSA9PT0gdW5k
ZWZpbmVkKSB7CisgICAgICAgIGkgPSBib2R5Lmxlbmd0aDsKKyAgICAgIH0KKworICAgICAgLy8g
Tm9kZXMgdGhhdCBlbmQgd2l0aCBuZXdsaW5lcyBhcmUgY29uc2lkZXJlZCB3aGl0ZXNwYWNlIChi
dXQgYXJlIHNwZWNpYWwKKyAgICAgIC8vIGNhc2VkIGZvciBzdHJpcCBvcGVyYXRpb25zKQorICAg
ICAgdmFyIHByZXYgPSBib2R5W2kgLSAxXSwKKyAgICAgICAgICBzaWJsaW5nID0gYm9keVtpIC0g
Ml07CisgICAgICBpZiAoIXByZXYpIHsKKyAgICAgICAgcmV0dXJuIGlzUm9vdDsKKyAgICAgIH0K
KworICAgICAgaWYgKHByZXYudHlwZSA9PT0gJ0NvbnRlbnRTdGF0ZW1lbnQnKSB7CisgICAgICAg
IHJldHVybiAoc2libGluZyB8fCAhaXNSb290ID8gL1xyP1xuXHMqPyQvIDogLyhefFxyP1xuKVxz
Kj8kLykudGVzdChwcmV2Lm9yaWdpbmFsKTsKKyAgICAgIH0KKyAgICB9CisgICAgZnVuY3Rpb24g
aXNOZXh0V2hpdGVzcGFjZShib2R5LCBpLCBpc1Jvb3QpIHsKKyAgICAgIGlmIChpID09PSB1bmRl
ZmluZWQpIHsKKyAgICAgICAgaSA9IC0xOworICAgICAgfQorCisgICAgICB2YXIgbmV4dCA9IGJv
ZHlbaSArIDFdLAorICAgICAgICAgIHNpYmxpbmcgPSBib2R5W2kgKyAyXTsKKyAgICAgIGlmICgh
bmV4dCkgeworICAgICAgICByZXR1cm4gaXNSb290OworICAgICAgfQorCisgICAgICBpZiAobmV4
dC50eXBlID09PSAnQ29udGVudFN0YXRlbWVudCcpIHsKKyAgICAgICAgcmV0dXJuIChzaWJsaW5n
IHx8ICFpc1Jvb3QgPyAvXlxzKj9ccj9cbi8gOiAvXlxzKj8oXHI/XG58JCkvKS50ZXN0KG5leHQu
b3JpZ2luYWwpOworICAgICAgfQorICAgIH0KKworICAgIC8vIE1hcmtzIHRoZSBub2RlIHRvIHRo
ZSByaWdodCBvZiB0aGUgcG9zaXRpb24gYXMgb21pdHRlZC4KKyAgICAvLyBJLmUuIHt7Zm9vfX0n
ICcgd2lsbCBtYXJrIHRoZSAnICcgbm9kZSBhcyBvbWl0dGVkLgorICAgIC8vCisgICAgLy8gSWYg
aSBpcyB1bmRlZmluZWQsIHRoZW4gdGhlIGZpcnN0IGNoaWxkIHdpbGwgYmUgbWFya2VkIGFzIHN1
Y2guCisgICAgLy8KKyAgICAvLyBJZiBtdWxpdHBsZSBpcyB0cnV0aHkgdGhlbiBhbGwgd2hpdGVz
cGFjZSB3aWxsIGJlIHN0cmlwcGVkIG91dCB1bnRpbCBub24td2hpdGVzcGFjZQorICAgIC8vIGNv
bnRlbnQgaXMgbWV0LgorICAgIGZ1bmN0aW9uIG9taXRSaWdodChib2R5LCBpLCBtdWx0aXBsZSkg
eworICAgICAgdmFyIGN1cnJlbnQgPSBib2R5W2kgPT0gbnVsbCA/IDAgOiBpICsgMV07CisgICAg
ICBpZiAoIWN1cnJlbnQgfHwgY3VycmVudC50eXBlICE9PSAnQ29udGVudFN0YXRlbWVudCcgfHwg
IW11bHRpcGxlICYmIGN1cnJlbnQucmlnaHRTdHJpcHBlZCkgeworICAgICAgICByZXR1cm47Cisg
ICAgICB9CisKKyAgICAgIHZhciBvcmlnaW5hbCA9IGN1cnJlbnQudmFsdWU7CisgICAgICBjdXJy
ZW50LnZhbHVlID0gY3VycmVudC52YWx1ZS5yZXBsYWNlKG11bHRpcGxlID8gL15ccysvIDogL15b
IFx0XSpccj9cbj8vLCAnJyk7CisgICAgICBjdXJyZW50LnJpZ2h0U3RyaXBwZWQgPSBjdXJyZW50
LnZhbHVlICE9PSBvcmlnaW5hbDsKKyAgICB9CisKKyAgICAvLyBNYXJrcyB0aGUgbm9kZSB0byB0
aGUgbGVmdCBvZiB0aGUgcG9zaXRpb24gYXMgb21pdHRlZC4KKyAgICAvLyBJLmUuICcgJ3t7Zm9v
fX0gd2lsbCBtYXJrIHRoZSAnICcgbm9kZSBhcyBvbWl0dGVkLgorICAgIC8vCisgICAgLy8gSWYg
aSBpcyB1bmRlZmluZWQgdGhlbiB0aGUgbGFzdCBjaGlsZCB3aWxsIGJlIG1hcmtlZCBhcyBzdWNo
LgorICAgIC8vCisgICAgLy8gSWYgbXVsaXRwbGUgaXMgdHJ1dGh5IHRoZW4gYWxsIHdoaXRlc3Bh
Y2Ugd2lsbCBiZSBzdHJpcHBlZCBvdXQgdW50aWwgbm9uLXdoaXRlc3BhY2UKKyAgICAvLyBjb250
ZW50IGlzIG1ldC4KKyAgICBmdW5jdGlvbiBvbWl0TGVmdChib2R5LCBpLCBtdWx0aXBsZSkgewor
ICAgICAgdmFyIGN1cnJlbnQgPSBib2R5W2kgPT0gbnVsbCA/IGJvZHkubGVuZ3RoIC0gMSA6IGkg
LSAxXTsKKyAgICAgIGlmICghY3VycmVudCB8fCBjdXJyZW50LnR5cGUgIT09ICdDb250ZW50U3Rh
dGVtZW50JyB8fCAhbXVsdGlwbGUgJiYgY3VycmVudC5sZWZ0U3RyaXBwZWQpIHsKKyAgICAgICAg
cmV0dXJuOworICAgICAgfQorCisgICAgICAvLyBXZSBvbWl0IHRoZSBsYXN0IG5vZGUgaWYgaXQn
cyB3aGl0ZXNwYWNlIG9ubHkgYW5kIG5vdCBwcmVjZWVkZWQgYnkgYSBub24tY29udGVudCBub2Rl
LgorICAgICAgdmFyIG9yaWdpbmFsID0gY3VycmVudC52YWx1ZTsKKyAgICAgIGN1cnJlbnQudmFs
dWUgPSBjdXJyZW50LnZhbHVlLnJlcGxhY2UobXVsdGlwbGUgPyAvXHMrJC8gOiAvWyBcdF0rJC8s
ICcnKTsKKyAgICAgIGN1cnJlbnQubGVmdFN0cmlwcGVkID0gY3VycmVudC52YWx1ZSAhPT0gb3Jp
Z2luYWw7CisgICAgICByZXR1cm4gY3VycmVudC5sZWZ0U3RyaXBwZWQ7CisgICAgfQorCisgICAg
ZXhwb3J0c1snZGVmYXVsdCddID0gV2hpdGVzcGFjZUNvbnRyb2w7CisgICAgbW9kdWxlLmV4cG9y
dHMgPSBleHBvcnRzWydkZWZhdWx0J107CisKKy8qKiovIH0sCisvKiAyOCAqLworLyoqKi8gZnVu
Y3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CisKKyAgICAndXNl
IHN0cmljdCc7CisKKyAgICB2YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVsdCA9IF9fd2VicGFja19y
ZXF1aXJlX18oMSlbJ2RlZmF1bHQnXTsKKworICAgIGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7
CisKKyAgICB2YXIgX2V4Y2VwdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oNik7CisKKyAgICB2
YXIgX2V4Y2VwdGlvbjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9leGNlcHRpb24pOworCisg
ICAgZnVuY3Rpb24gVmlzaXRvcigpIHsKKyAgICAgIHRoaXMucGFyZW50cyA9IFtdOworICAgIH0K
KworICAgIFZpc2l0b3IucHJvdG90eXBlID0geworICAgICAgY29uc3RydWN0b3I6IFZpc2l0b3Is
CisgICAgICBtdXRhdGluZzogZmFsc2UsCisKKyAgICAgIC8vIFZpc2l0cyBhIGdpdmVuIHZhbHVl
LiBJZiBtdXRhdGluZywgd2lsbCByZXBsYWNlIHRoZSB2YWx1ZSBpZiBuZWNlc3NhcnkuCisgICAg
ICBhY2NlcHRLZXk6IGZ1bmN0aW9uIGFjY2VwdEtleShub2RlLCBuYW1lKSB7CisgICAgICAgIHZh
ciB2YWx1ZSA9IHRoaXMuYWNjZXB0KG5vZGVbbmFtZV0pOworICAgICAgICBpZiAodGhpcy5tdXRh
dGluZykgeworICAgICAgICAgIC8vIEhhY2t5IHNhbml0eSBjaGVjazogVGhpcyBtYXkgaGF2ZSBh
IGZldyBmYWxzZSBwb3NpdGl2ZXMgZm9yIHR5cGUgZm9yIHRoZSBoZWxwZXIKKyAgICAgICAgICAv
LyBtZXRob2RzIGJ1dCB3aWxsIGdlbmVyYWxseSBkbyB0aGUgcmlnaHQgdGhpbmcgd2l0aG91dCBh
IGxvdCBvZiBvdmVyaGVhZC4KKyAgICAgICAgICBpZiAodmFsdWUgJiYgIVZpc2l0b3IucHJvdG90
eXBlW3ZhbHVlLnR5cGVdKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2Rl
ZmF1bHQnXSgnVW5leHBlY3RlZCBub2RlIHR5cGUgIicgKyB2YWx1ZS50eXBlICsgJyIgZm91bmQg
d2hlbiBhY2NlcHRpbmcgJyArIG5hbWUgKyAnIG9uICcgKyBub2RlLnR5cGUpOworICAgICAgICAg
IH0KKyAgICAgICAgICBub2RlW25hbWVdID0gdmFsdWU7CisgICAgICAgIH0KKyAgICAgIH0sCisK
KyAgICAgIC8vIFBlcmZvcm1zIGFuIGFjY2VwdCBvcGVyYXRpb24gd2l0aCBhZGRlZCBzYW5pdHkg
Y2hlY2sgdG8gZW5zdXJlCisgICAgICAvLyByZXF1aXJlZCBrZXlzIGFyZSBub3QgcmVtb3ZlZC4K
KyAgICAgIGFjY2VwdFJlcXVpcmVkOiBmdW5jdGlvbiBhY2NlcHRSZXF1aXJlZChub2RlLCBuYW1l
KSB7CisgICAgICAgIHRoaXMuYWNjZXB0S2V5KG5vZGUsIG5hbWUpOworCisgICAgICAgIGlmICgh
bm9kZVtuYW1lXSkgeworICAgICAgICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCdd
KG5vZGUudHlwZSArICcgcmVxdWlyZXMgJyArIG5hbWUpOworICAgICAgICB9CisgICAgICB9LAor
CisgICAgICAvLyBUcmF2ZXJzZXMgYSBnaXZlbiBhcnJheS4gSWYgbXV0YXRpbmcsIGVtcHR5IHJl
c3Buc2VzIHdpbGwgYmUgcmVtb3ZlZAorICAgICAgLy8gZm9yIGNoaWxkIGVsZW1lbnRzLgorICAg
ICAgYWNjZXB0QXJyYXk6IGZ1bmN0aW9uIGFjY2VwdEFycmF5KGFycmF5KSB7CisgICAgICAgIGZv
ciAodmFyIGkgPSAwLCBsID0gYXJyYXkubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CisgICAgICAgICAg
dGhpcy5hY2NlcHRLZXkoYXJyYXksIGkpOworCisgICAgICAgICAgaWYgKCFhcnJheVtpXSkgewor
ICAgICAgICAgICAgYXJyYXkuc3BsaWNlKGksIDEpOworICAgICAgICAgICAgaS0tOworICAgICAg
ICAgICAgbC0tOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfSwKKworICAgICAgYWNj
ZXB0OiBmdW5jdGlvbiBhY2NlcHQob2JqZWN0KSB7CisgICAgICAgIGlmICghb2JqZWN0KSB7Cisg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLyogaXN0YW5idWwgaWdub3Jl
IG5leHQ6IFNhbml0eSBjb2RlICovCisgICAgICAgIGlmICghdGhpc1tvYmplY3QudHlwZV0pIHsK
KyAgICAgICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnVW5rbm93biB0eXBl
OiAnICsgb2JqZWN0LnR5cGUsIG9iamVjdCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAodGhp
cy5jdXJyZW50KSB7CisgICAgICAgICAgdGhpcy5wYXJlbnRzLnVuc2hpZnQodGhpcy5jdXJyZW50
KTsKKyAgICAgICAgfQorICAgICAgICB0aGlzLmN1cnJlbnQgPSBvYmplY3Q7CisKKyAgICAgICAg
dmFyIHJldCA9IHRoaXNbb2JqZWN0LnR5cGVdKG9iamVjdCk7CisKKyAgICAgICAgdGhpcy5jdXJy
ZW50ID0gdGhpcy5wYXJlbnRzLnNoaWZ0KCk7CisKKyAgICAgICAgaWYgKCF0aGlzLm11dGF0aW5n
IHx8IHJldCkgeworICAgICAgICAgIHJldHVybiByZXQ7CisgICAgICAgIH0gZWxzZSBpZiAocmV0
ICE9PSBmYWxzZSkgeworICAgICAgICAgIHJldHVybiBvYmplY3Q7CisgICAgICAgIH0KKyAgICAg
IH0sCisKKyAgICAgIFByb2dyYW06IGZ1bmN0aW9uIFByb2dyYW0ocHJvZ3JhbSkgeworICAgICAg
ICB0aGlzLmFjY2VwdEFycmF5KHByb2dyYW0uYm9keSk7CisgICAgICB9LAorCisgICAgICBNdXN0
YWNoZVN0YXRlbWVudDogdmlzaXRTdWJFeHByZXNzaW9uLAorICAgICAgRGVjb3JhdG9yOiB2aXNp
dFN1YkV4cHJlc3Npb24sCisKKyAgICAgIEJsb2NrU3RhdGVtZW50OiB2aXNpdEJsb2NrLAorICAg
ICAgRGVjb3JhdG9yQmxvY2s6IHZpc2l0QmxvY2ssCisKKyAgICAgIFBhcnRpYWxTdGF0ZW1lbnQ6
IHZpc2l0UGFydGlhbCwKKyAgICAgIFBhcnRpYWxCbG9ja1N0YXRlbWVudDogZnVuY3Rpb24gUGFy
dGlhbEJsb2NrU3RhdGVtZW50KHBhcnRpYWwpIHsKKyAgICAgICAgdmlzaXRQYXJ0aWFsLmNhbGwo
dGhpcywgcGFydGlhbCk7CisKKyAgICAgICAgdGhpcy5hY2NlcHRLZXkocGFydGlhbCwgJ3Byb2dy
YW0nKTsKKyAgICAgIH0sCisKKyAgICAgIENvbnRlbnRTdGF0ZW1lbnQ6IGZ1bmN0aW9uIENvbnRl
bnRTdGF0ZW1lbnQoKSAvKiBjb250ZW50ICove30sCisgICAgICBDb21tZW50U3RhdGVtZW50OiBm
dW5jdGlvbiBDb21tZW50U3RhdGVtZW50KCkgLyogY29tbWVudCAqL3t9LAorCisgICAgICBTdWJF
eHByZXNzaW9uOiB2aXNpdFN1YkV4cHJlc3Npb24sCisKKyAgICAgIFBhdGhFeHByZXNzaW9uOiBm
dW5jdGlvbiBQYXRoRXhwcmVzc2lvbigpIC8qIHBhdGggKi97fSwKKworICAgICAgU3RyaW5nTGl0
ZXJhbDogZnVuY3Rpb24gU3RyaW5nTGl0ZXJhbCgpIC8qIHN0cmluZyAqL3t9LAorICAgICAgTnVt
YmVyTGl0ZXJhbDogZnVuY3Rpb24gTnVtYmVyTGl0ZXJhbCgpIC8qIG51bWJlciAqL3t9LAorICAg
ICAgQm9vbGVhbkxpdGVyYWw6IGZ1bmN0aW9uIEJvb2xlYW5MaXRlcmFsKCkgLyogYm9vbCAqL3t9
LAorICAgICAgVW5kZWZpbmVkTGl0ZXJhbDogZnVuY3Rpb24gVW5kZWZpbmVkTGl0ZXJhbCgpIC8q
IGxpdGVyYWwgKi97fSwKKyAgICAgIE51bGxMaXRlcmFsOiBmdW5jdGlvbiBOdWxsTGl0ZXJhbCgp
IC8qIGxpdGVyYWwgKi97fSwKKworICAgICAgSGFzaDogZnVuY3Rpb24gSGFzaChoYXNoKSB7Cisg
ICAgICAgIHRoaXMuYWNjZXB0QXJyYXkoaGFzaC5wYWlycyk7CisgICAgICB9LAorICAgICAgSGFz
aFBhaXI6IGZ1bmN0aW9uIEhhc2hQYWlyKHBhaXIpIHsKKyAgICAgICAgdGhpcy5hY2NlcHRSZXF1
aXJlZChwYWlyLCAndmFsdWUnKTsKKyAgICAgIH0KKyAgICB9OworCisgICAgZnVuY3Rpb24gdmlz
aXRTdWJFeHByZXNzaW9uKG11c3RhY2hlKSB7CisgICAgICB0aGlzLmFjY2VwdFJlcXVpcmVkKG11
c3RhY2hlLCAncGF0aCcpOworICAgICAgdGhpcy5hY2NlcHRBcnJheShtdXN0YWNoZS5wYXJhbXMp
OworICAgICAgdGhpcy5hY2NlcHRLZXkobXVzdGFjaGUsICdoYXNoJyk7CisgICAgfQorICAgIGZ1
bmN0aW9uIHZpc2l0QmxvY2soYmxvY2spIHsKKyAgICAgIHZpc2l0U3ViRXhwcmVzc2lvbi5jYWxs
KHRoaXMsIGJsb2NrKTsKKworICAgICAgdGhpcy5hY2NlcHRLZXkoYmxvY2ssICdwcm9ncmFtJyk7
CisgICAgICB0aGlzLmFjY2VwdEtleShibG9jaywgJ2ludmVyc2UnKTsKKyAgICB9CisgICAgZnVu
Y3Rpb24gdmlzaXRQYXJ0aWFsKHBhcnRpYWwpIHsKKyAgICAgIHRoaXMuYWNjZXB0UmVxdWlyZWQo
cGFydGlhbCwgJ25hbWUnKTsKKyAgICAgIHRoaXMuYWNjZXB0QXJyYXkocGFydGlhbC5wYXJhbXMp
OworICAgICAgdGhpcy5hY2NlcHRLZXkocGFydGlhbCwgJ2hhc2gnKTsKKyAgICB9CisKKyAgICBl
eHBvcnRzWydkZWZhdWx0J10gPSBWaXNpdG9yOworICAgIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0
c1snZGVmYXVsdCddOworCisvKioqLyB9LAorLyogMjkgKi8KKy8qKiovIGZ1bmN0aW9uKG1vZHVs
ZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgeworCisgICAgJ3VzZSBzdHJpY3QnOwor
CisgICAgdmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEp
WydkZWZhdWx0J107CisKKyAgICBleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOworICAgIGV4cG9y
dHMuU291cmNlTG9jYXRpb24gPSBTb3VyY2VMb2NhdGlvbjsKKyAgICBleHBvcnRzLmlkID0gaWQ7
CisgICAgZXhwb3J0cy5zdHJpcEZsYWdzID0gc3RyaXBGbGFnczsKKyAgICBleHBvcnRzLnN0cmlw
Q29tbWVudCA9IHN0cmlwQ29tbWVudDsKKyAgICBleHBvcnRzLnByZXBhcmVQYXRoID0gcHJlcGFy
ZVBhdGg7CisgICAgZXhwb3J0cy5wcmVwYXJlTXVzdGFjaGUgPSBwcmVwYXJlTXVzdGFjaGU7Cisg
ICAgZXhwb3J0cy5wcmVwYXJlUmF3QmxvY2sgPSBwcmVwYXJlUmF3QmxvY2s7CisgICAgZXhwb3J0
cy5wcmVwYXJlQmxvY2sgPSBwcmVwYXJlQmxvY2s7CisgICAgZXhwb3J0cy5wcmVwYXJlUHJvZ3Jh
bSA9IHByZXBhcmVQcm9ncmFtOworICAgIGV4cG9ydHMucHJlcGFyZVBhcnRpYWxCbG9jayA9IHBy
ZXBhcmVQYXJ0aWFsQmxvY2s7CisKKyAgICB2YXIgX2V4Y2VwdGlvbiA9IF9fd2VicGFja19yZXF1
aXJlX18oNik7CisKKyAgICB2YXIgX2V4Y2VwdGlvbjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0
KF9leGNlcHRpb24pOworCisgICAgZnVuY3Rpb24gdmFsaWRhdGVDbG9zZShvcGVuLCBjbG9zZSkg
eworICAgICAgY2xvc2UgPSBjbG9zZS5wYXRoID8gY2xvc2UucGF0aC5vcmlnaW5hbCA6IGNsb3Nl
OworCisgICAgICBpZiAob3Blbi5wYXRoLm9yaWdpbmFsICE9PSBjbG9zZSkgeworICAgICAgICB2
YXIgZXJyb3JOb2RlID0geyBsb2M6IG9wZW4ucGF0aC5sb2MgfTsKKworICAgICAgICB0aHJvdyBu
ZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXShvcGVuLnBhdGgub3JpZ2luYWwgKyAiIGRvZXNuJ3Qg
bWF0Y2ggIiArIGNsb3NlLCBlcnJvck5vZGUpOworICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0
aW9uIFNvdXJjZUxvY2F0aW9uKHNvdXJjZSwgbG9jSW5mbykgeworICAgICAgdGhpcy5zb3VyY2Ug
PSBzb3VyY2U7CisgICAgICB0aGlzLnN0YXJ0ID0geworICAgICAgICBsaW5lOiBsb2NJbmZvLmZp
cnN0X2xpbmUsCisgICAgICAgIGNvbHVtbjogbG9jSW5mby5maXJzdF9jb2x1bW4KKyAgICAgIH07
CisgICAgICB0aGlzLmVuZCA9IHsKKyAgICAgICAgbGluZTogbG9jSW5mby5sYXN0X2xpbmUsCisg
ICAgICAgIGNvbHVtbjogbG9jSW5mby5sYXN0X2NvbHVtbgorICAgICAgfTsKKyAgICB9CisKKyAg
ICBmdW5jdGlvbiBpZCh0b2tlbikgeworICAgICAgaWYgKC9eXFsuKlxdJC8udGVzdCh0b2tlbikp
IHsKKyAgICAgICAgcmV0dXJuIHRva2VuLnN1YnN0cigxLCB0b2tlbi5sZW5ndGggLSAyKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiB0b2tlbjsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICBmdW5jdGlvbiBzdHJpcEZsYWdzKG9wZW4sIGNsb3NlKSB7CisgICAgICByZXR1cm4geworICAg
ICAgICBvcGVuOiBvcGVuLmNoYXJBdCgyKSA9PT0gJ34nLAorICAgICAgICBjbG9zZTogY2xvc2Uu
Y2hhckF0KGNsb3NlLmxlbmd0aCAtIDMpID09PSAnficKKyAgICAgIH07CisgICAgfQorCisgICAg
ZnVuY3Rpb24gc3RyaXBDb21tZW50KGNvbW1lbnQpIHsKKyAgICAgIHJldHVybiBjb21tZW50LnJl
cGxhY2UoL15ce1x7fj9cIS0/LT8vLCAnJykucmVwbGFjZSgvLT8tP34/XH1cfSQvLCAnJyk7Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gcHJlcGFyZVBhdGgoZGF0YSwgcGFydHMsIGxvYykgeworICAg
ICAgbG9jID0gdGhpcy5sb2NJbmZvKGxvYyk7CisKKyAgICAgIHZhciBvcmlnaW5hbCA9IGRhdGEg
PyAnQCcgOiAnJywKKyAgICAgICAgICBkaWcgPSBbXSwKKyAgICAgICAgICBkZXB0aCA9IDAsCisg
ICAgICAgICAgZGVwdGhTdHJpbmcgPSAnJzsKKworICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBw
YXJ0cy5sZW5ndGg7IGkgPCBsOyBpKyspIHsKKyAgICAgICAgdmFyIHBhcnQgPSBwYXJ0c1tpXS5w
YXJ0LAorCisgICAgICAgIC8vIElmIHdlIGhhdmUgW10gc3ludGF4IHRoZW4gd2UgZG8gbm90IHRy
ZWF0IHBhdGggcmVmZXJlbmNlcyBhcyBvcGVyYXRvcnMsCisgICAgICAgIC8vIGkuZS4gZm9vLlt0
aGlzXSByZXNvbHZlcyB0byBhcHByb3hpbWF0ZWx5IGNvbnRleHQuZm9vWyd0aGlzJ10KKyAgICAg
ICAgaXNMaXRlcmFsID0gcGFydHNbaV0ub3JpZ2luYWwgIT09IHBhcnQ7CisgICAgICAgIG9yaWdp
bmFsICs9IChwYXJ0c1tpXS5zZXBhcmF0b3IgfHwgJycpICsgcGFydDsKKworICAgICAgICBpZiAo
IWlzTGl0ZXJhbCAmJiAocGFydCA9PT0gJy4uJyB8fCBwYXJ0ID09PSAnLicgfHwgcGFydCA9PT0g
J3RoaXMnKSkgeworICAgICAgICAgIGlmIChkaWcubGVuZ3RoID4gMCkgeworICAgICAgICAgICAg
dGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ0ludmFsaWQgcGF0aDogJyArIG9yaWdp
bmFsLCB7IGxvYzogbG9jIH0pOworICAgICAgICAgIH0gZWxzZSBpZiAocGFydCA9PT0gJy4uJykg
eworICAgICAgICAgICAgZGVwdGgrKzsKKyAgICAgICAgICAgIGRlcHRoU3RyaW5nICs9ICcuLi8n
OworICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBkaWcucHVzaChwYXJ0
KTsKKyAgICAgICAgfQorICAgICAgfQorCisgICAgICByZXR1cm4geworICAgICAgICB0eXBlOiAn
UGF0aEV4cHJlc3Npb24nLAorICAgICAgICBkYXRhOiBkYXRhLAorICAgICAgICBkZXB0aDogZGVw
dGgsCisgICAgICAgIHBhcnRzOiBkaWcsCisgICAgICAgIG9yaWdpbmFsOiBvcmlnaW5hbCwKKyAg
ICAgICAgbG9jOiBsb2MKKyAgICAgIH07CisgICAgfQorCisgICAgZnVuY3Rpb24gcHJlcGFyZU11
c3RhY2hlKHBhdGgsIHBhcmFtcywgaGFzaCwgb3Blbiwgc3RyaXAsIGxvY0luZm8pIHsKKyAgICAg
IC8vIE11c3QgdXNlIGNoYXJBdCB0byBzdXBwb3J0IElFIHByZS0xMAorICAgICAgdmFyIGVzY2Fw
ZUZsYWcgPSBvcGVuLmNoYXJBdCgzKSB8fCBvcGVuLmNoYXJBdCgyKSwKKyAgICAgICAgICBlc2Nh
cGVkID0gZXNjYXBlRmxhZyAhPT0gJ3snICYmIGVzY2FwZUZsYWcgIT09ICcmJzsKKworICAgICAg
dmFyIGRlY29yYXRvciA9IC9cKi8udGVzdChvcGVuKTsKKyAgICAgIHJldHVybiB7CisgICAgICAg
IHR5cGU6IGRlY29yYXRvciA/ICdEZWNvcmF0b3InIDogJ011c3RhY2hlU3RhdGVtZW50JywKKyAg
ICAgICAgcGF0aDogcGF0aCwKKyAgICAgICAgcGFyYW1zOiBwYXJhbXMsCisgICAgICAgIGhhc2g6
IGhhc2gsCisgICAgICAgIGVzY2FwZWQ6IGVzY2FwZWQsCisgICAgICAgIHN0cmlwOiBzdHJpcCwK
KyAgICAgICAgbG9jOiB0aGlzLmxvY0luZm8obG9jSW5mbykKKyAgICAgIH07CisgICAgfQorCisg
ICAgZnVuY3Rpb24gcHJlcGFyZVJhd0Jsb2NrKG9wZW5SYXdCbG9jaywgY29udGVudHMsIGNsb3Nl
LCBsb2NJbmZvKSB7CisgICAgICB2YWxpZGF0ZUNsb3NlKG9wZW5SYXdCbG9jaywgY2xvc2UpOwor
CisgICAgICBsb2NJbmZvID0gdGhpcy5sb2NJbmZvKGxvY0luZm8pOworICAgICAgdmFyIHByb2dy
YW0gPSB7CisgICAgICAgIHR5cGU6ICdQcm9ncmFtJywKKyAgICAgICAgYm9keTogY29udGVudHMs
CisgICAgICAgIHN0cmlwOiB7fSwKKyAgICAgICAgbG9jOiBsb2NJbmZvCisgICAgICB9OworCisg
ICAgICByZXR1cm4geworICAgICAgICB0eXBlOiAnQmxvY2tTdGF0ZW1lbnQnLAorICAgICAgICBw
YXRoOiBvcGVuUmF3QmxvY2sucGF0aCwKKyAgICAgICAgcGFyYW1zOiBvcGVuUmF3QmxvY2sucGFy
YW1zLAorICAgICAgICBoYXNoOiBvcGVuUmF3QmxvY2suaGFzaCwKKyAgICAgICAgcHJvZ3JhbTog
cHJvZ3JhbSwKKyAgICAgICAgb3BlblN0cmlwOiB7fSwKKyAgICAgICAgaW52ZXJzZVN0cmlwOiB7
fSwKKyAgICAgICAgY2xvc2VTdHJpcDoge30sCisgICAgICAgIGxvYzogbG9jSW5mbworICAgICAg
fTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBwcmVwYXJlQmxvY2sob3BlbkJsb2NrLCBwcm9ncmFt
LCBpbnZlcnNlQW5kUHJvZ3JhbSwgY2xvc2UsIGludmVydGVkLCBsb2NJbmZvKSB7CisgICAgICBp
ZiAoY2xvc2UgJiYgY2xvc2UucGF0aCkgeworICAgICAgICB2YWxpZGF0ZUNsb3NlKG9wZW5CbG9j
aywgY2xvc2UpOworICAgICAgfQorCisgICAgICB2YXIgZGVjb3JhdG9yID0gL1wqLy50ZXN0KG9w
ZW5CbG9jay5vcGVuKTsKKworICAgICAgcHJvZ3JhbS5ibG9ja1BhcmFtcyA9IG9wZW5CbG9jay5i
bG9ja1BhcmFtczsKKworICAgICAgdmFyIGludmVyc2UgPSB1bmRlZmluZWQsCisgICAgICAgICAg
aW52ZXJzZVN0cmlwID0gdW5kZWZpbmVkOworCisgICAgICBpZiAoaW52ZXJzZUFuZFByb2dyYW0p
IHsKKyAgICAgICAgaWYgKGRlY29yYXRvcikgeworICAgICAgICAgIHRocm93IG5ldyBfZXhjZXB0
aW9uMlsnZGVmYXVsdCddKCdVbmV4cGVjdGVkIGludmVyc2UgYmxvY2sgb24gZGVjb3JhdG9yJywg
aW52ZXJzZUFuZFByb2dyYW0pOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGludmVyc2VBbmRQ
cm9ncmFtLmNoYWluKSB7CisgICAgICAgICAgaW52ZXJzZUFuZFByb2dyYW0ucHJvZ3JhbS5ib2R5
WzBdLmNsb3NlU3RyaXAgPSBjbG9zZS5zdHJpcDsKKyAgICAgICAgfQorCisgICAgICAgIGludmVy
c2VTdHJpcCA9IGludmVyc2VBbmRQcm9ncmFtLnN0cmlwOworICAgICAgICBpbnZlcnNlID0gaW52
ZXJzZUFuZFByb2dyYW0ucHJvZ3JhbTsKKyAgICAgIH0KKworICAgICAgaWYgKGludmVydGVkKSB7
CisgICAgICAgIGludmVydGVkID0gaW52ZXJzZTsKKyAgICAgICAgaW52ZXJzZSA9IHByb2dyYW07
CisgICAgICAgIHByb2dyYW0gPSBpbnZlcnRlZDsKKyAgICAgIH0KKworICAgICAgcmV0dXJuIHsK
KyAgICAgICAgdHlwZTogZGVjb3JhdG9yID8gJ0RlY29yYXRvckJsb2NrJyA6ICdCbG9ja1N0YXRl
bWVudCcsCisgICAgICAgIHBhdGg6IG9wZW5CbG9jay5wYXRoLAorICAgICAgICBwYXJhbXM6IG9w
ZW5CbG9jay5wYXJhbXMsCisgICAgICAgIGhhc2g6IG9wZW5CbG9jay5oYXNoLAorICAgICAgICBw
cm9ncmFtOiBwcm9ncmFtLAorICAgICAgICBpbnZlcnNlOiBpbnZlcnNlLAorICAgICAgICBvcGVu
U3RyaXA6IG9wZW5CbG9jay5zdHJpcCwKKyAgICAgICAgaW52ZXJzZVN0cmlwOiBpbnZlcnNlU3Ry
aXAsCisgICAgICAgIGNsb3NlU3RyaXA6IGNsb3NlICYmIGNsb3NlLnN0cmlwLAorICAgICAgICBs
b2M6IHRoaXMubG9jSW5mbyhsb2NJbmZvKQorICAgICAgfTsKKyAgICB9CisKKyAgICBmdW5jdGlv
biBwcmVwYXJlUHJvZ3JhbShzdGF0ZW1lbnRzLCBsb2MpIHsKKyAgICAgIGlmICghbG9jICYmIHN0
YXRlbWVudHMubGVuZ3RoKSB7CisgICAgICAgIHZhciBmaXJzdExvYyA9IHN0YXRlbWVudHNbMF0u
bG9jLAorICAgICAgICAgICAgbGFzdExvYyA9IHN0YXRlbWVudHNbc3RhdGVtZW50cy5sZW5ndGgg
LSAxXS5sb2M7CisKKyAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi8KKyAgICAgICAg
aWYgKGZpcnN0TG9jICYmIGxhc3RMb2MpIHsKKyAgICAgICAgICBsb2MgPSB7CisgICAgICAgICAg
ICBzb3VyY2U6IGZpcnN0TG9jLnNvdXJjZSwKKyAgICAgICAgICAgIHN0YXJ0OiB7CisgICAgICAg
ICAgICAgIGxpbmU6IGZpcnN0TG9jLnN0YXJ0LmxpbmUsCisgICAgICAgICAgICAgIGNvbHVtbjog
Zmlyc3RMb2Muc3RhcnQuY29sdW1uCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgZW5kOiB7
CisgICAgICAgICAgICAgIGxpbmU6IGxhc3RMb2MuZW5kLmxpbmUsCisgICAgICAgICAgICAgIGNv
bHVtbjogbGFzdExvYy5lbmQuY29sdW1uCisgICAgICAgICAgICB9CisgICAgICAgICAgfTsKKyAg
ICAgICAgfQorICAgICAgfQorCisgICAgICByZXR1cm4geworICAgICAgICB0eXBlOiAnUHJvZ3Jh
bScsCisgICAgICAgIGJvZHk6IHN0YXRlbWVudHMsCisgICAgICAgIHN0cmlwOiB7fSwKKyAgICAg
ICAgbG9jOiBsb2MKKyAgICAgIH07CisgICAgfQorCisgICAgZnVuY3Rpb24gcHJlcGFyZVBhcnRp
YWxCbG9jayhvcGVuLCBwcm9ncmFtLCBjbG9zZSwgbG9jSW5mbykgeworICAgICAgdmFsaWRhdGVD
bG9zZShvcGVuLCBjbG9zZSk7CisKKyAgICAgIHJldHVybiB7CisgICAgICAgIHR5cGU6ICdQYXJ0
aWFsQmxvY2tTdGF0ZW1lbnQnLAorICAgICAgICBuYW1lOiBvcGVuLnBhdGgsCisgICAgICAgIHBh
cmFtczogb3Blbi5wYXJhbXMsCisgICAgICAgIGhhc2g6IG9wZW4uaGFzaCwKKyAgICAgICAgcHJv
Z3JhbTogcHJvZ3JhbSwKKyAgICAgICAgb3BlblN0cmlwOiBvcGVuLnN0cmlwLAorICAgICAgICBj
bG9zZVN0cmlwOiBjbG9zZSAmJiBjbG9zZS5zdHJpcCwKKyAgICAgICAgbG9jOiB0aGlzLmxvY0lu
Zm8obG9jSW5mbykKKyAgICAgIH07CisgICAgfQorCisvKioqLyB9LAorLyogMzAgKi8KKy8qKiov
IGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgeworCisgICAg
LyogZXNsaW50LWRpc2FibGUgbmV3LWNhcCAqLworCisgICAgJ3VzZSBzdHJpY3QnOworCisgICAg
dmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpWydkZWZh
dWx0J107CisKKyAgICBleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOworICAgIGV4cG9ydHMuQ29t
cGlsZXIgPSBDb21waWxlcjsKKyAgICBleHBvcnRzLnByZWNvbXBpbGUgPSBwcmVjb21waWxlOwor
ICAgIGV4cG9ydHMuY29tcGlsZSA9IGNvbXBpbGU7CisKKyAgICB2YXIgX2V4Y2VwdGlvbiA9IF9f
d2VicGFja19yZXF1aXJlX18oNik7CisKKyAgICB2YXIgX2V4Y2VwdGlvbjIgPSBfaW50ZXJvcFJl
cXVpcmVEZWZhdWx0KF9leGNlcHRpb24pOworCisgICAgdmFyIF91dGlscyA9IF9fd2VicGFja19y
ZXF1aXJlX18oNSk7CisKKyAgICB2YXIgX2FzdCA9IF9fd2VicGFja19yZXF1aXJlX18oMjQpOwor
CisgICAgdmFyIF9hc3QyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYXN0KTsKKworICAgIHZh
ciBzbGljZSA9IFtdLnNsaWNlOworCisgICAgZnVuY3Rpb24gQ29tcGlsZXIoKSB7fQorCisgICAg
Ly8gdGhlIGZvdW5kSGVscGVyIHJlZ2lzdGVyIHdpbGwgZGlzYW1iaWd1YXRlIGhlbHBlciBsb29r
dXAgZnJvbSBmaW5kaW5nIGEKKyAgICAvLyBmdW5jdGlvbiBpbiBhIGNvbnRleHQuIFRoaXMgaXMg
bmVjZXNzYXJ5IGZvciBtdXN0YWNoZSBjb21wYXRpYmlsaXR5LCB3aGljaAorICAgIC8vIHJlcXVp
cmVzIHRoYXQgY29udGV4dCBmdW5jdGlvbnMgaW4gYmxvY2tzIGFyZSBldmFsdWF0ZWQgYnkgYmxv
Y2tIZWxwZXJNaXNzaW5nLAorICAgIC8vIGFuZCB0aGVuIHByb2NlZWQgYXMgaWYgdGhlIHJlc3Vs
dGluZyB2YWx1ZSB3YXMgcHJvdmlkZWQgdG8gYmxvY2tIZWxwZXJNaXNzaW5nLgorCisgICAgQ29t
cGlsZXIucHJvdG90eXBlID0geworICAgICAgY29tcGlsZXI6IENvbXBpbGVyLAorCisgICAgICBl
cXVhbHM6IGZ1bmN0aW9uIGVxdWFscyhvdGhlcikgeworICAgICAgICB2YXIgbGVuID0gdGhpcy5v
cGNvZGVzLmxlbmd0aDsKKyAgICAgICAgaWYgKG90aGVyLm9wY29kZXMubGVuZ3RoICE9PSBsZW4p
IHsKKyAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgICAgdmFyIG9wY29kZSA9IHRoaXMub3Bj
b2Rlc1tpXSwKKyAgICAgICAgICAgICAgb3RoZXJPcGNvZGUgPSBvdGhlci5vcGNvZGVzW2ldOwor
ICAgICAgICAgIGlmIChvcGNvZGUub3Bjb2RlICE9PSBvdGhlck9wY29kZS5vcGNvZGUgfHwgIWFy
Z0VxdWFscyhvcGNvZGUuYXJncywgb3RoZXJPcGNvZGUuYXJncykpIHsKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBXZSBrbm93
IHRoYXQgbGVuZ3RoIGlzIHRoZSBzYW1lIGJldHdlZW4gdGhlIHR3byBhcnJheXMgYmVjYXVzZSB0
aGV5IGFyZSBkaXJlY3RseSB0aWVkCisgICAgICAgIC8vIHRvIHRoZSBvcGNvZGUgYmVoYXZpb3Ig
YWJvdmUuCisgICAgICAgIGxlbiA9IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOworICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgICAgaWYgKCF0aGlzLmNoaWxkcmVu
W2ldLmVxdWFscyhvdGhlci5jaGlsZHJlbltpXSkpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
IH0sCisKKyAgICAgIGd1aWQ6IDAsCisKKyAgICAgIGNvbXBpbGU6IGZ1bmN0aW9uIGNvbXBpbGUo
cHJvZ3JhbSwgb3B0aW9ucykgeworICAgICAgICB0aGlzLnNvdXJjZU5vZGUgPSBbXTsKKyAgICAg
ICAgdGhpcy5vcGNvZGVzID0gW107CisgICAgICAgIHRoaXMuY2hpbGRyZW4gPSBbXTsKKyAgICAg
ICAgdGhpcy5vcHRpb25zID0gb3B0aW9uczsKKyAgICAgICAgdGhpcy5zdHJpbmdQYXJhbXMgPSBv
cHRpb25zLnN0cmluZ1BhcmFtczsKKyAgICAgICAgdGhpcy50cmFja0lkcyA9IG9wdGlvbnMudHJh
Y2tJZHM7CisKKyAgICAgICAgb3B0aW9ucy5ibG9ja1BhcmFtcyA9IG9wdGlvbnMuYmxvY2tQYXJh
bXMgfHwgW107CisKKyAgICAgICAgLy8gVGhlc2UgY2hhbmdlcyB3aWxsIHByb3BhZ2F0ZSB0byB0
aGUgb3RoZXIgY29tcGlsZXIgY29tcG9uZW50cworICAgICAgICB2YXIga25vd25IZWxwZXJzID0g
b3B0aW9ucy5rbm93bkhlbHBlcnM7CisgICAgICAgIG9wdGlvbnMua25vd25IZWxwZXJzID0gewor
ICAgICAgICAgICdoZWxwZXJNaXNzaW5nJzogdHJ1ZSwKKyAgICAgICAgICAnYmxvY2tIZWxwZXJN
aXNzaW5nJzogdHJ1ZSwKKyAgICAgICAgICAnZWFjaCc6IHRydWUsCisgICAgICAgICAgJ2lmJzog
dHJ1ZSwKKyAgICAgICAgICAndW5sZXNzJzogdHJ1ZSwKKyAgICAgICAgICAnd2l0aCc6IHRydWUs
CisgICAgICAgICAgJ2xvZyc6IHRydWUsCisgICAgICAgICAgJ2xvb2t1cCc6IHRydWUKKyAgICAg
ICAgfTsKKyAgICAgICAgaWYgKGtub3duSGVscGVycykgeworICAgICAgICAgIGZvciAodmFyIF9u
YW1lIGluIGtub3duSGVscGVycykgeworICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVs
c2UgKi8KKyAgICAgICAgICAgIGlmIChfbmFtZSBpbiBrbm93bkhlbHBlcnMpIHsKKyAgICAgICAg
ICAgICAgb3B0aW9ucy5rbm93bkhlbHBlcnNbX25hbWVdID0ga25vd25IZWxwZXJzW19uYW1lXTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4g
dGhpcy5hY2NlcHQocHJvZ3JhbSk7CisgICAgICB9LAorCisgICAgICBjb21waWxlUHJvZ3JhbTog
ZnVuY3Rpb24gY29tcGlsZVByb2dyYW0ocHJvZ3JhbSkgeworICAgICAgICB2YXIgY2hpbGRDb21w
aWxlciA9IG5ldyB0aGlzLmNvbXBpbGVyKCksCisgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJs
ZS1saW5lIG5ldy1jYXAKKyAgICAgICAgcmVzdWx0ID0gY2hpbGRDb21waWxlci5jb21waWxlKHBy
b2dyYW0sIHRoaXMub3B0aW9ucyksCisgICAgICAgICAgICBndWlkID0gdGhpcy5ndWlkKys7CisK
KyAgICAgICAgdGhpcy51c2VQYXJ0aWFsID0gdGhpcy51c2VQYXJ0aWFsIHx8IHJlc3VsdC51c2VQ
YXJ0aWFsOworCisgICAgICAgIHRoaXMuY2hpbGRyZW5bZ3VpZF0gPSByZXN1bHQ7CisgICAgICAg
IHRoaXMudXNlRGVwdGhzID0gdGhpcy51c2VEZXB0aHMgfHwgcmVzdWx0LnVzZURlcHRoczsKKwor
ICAgICAgICByZXR1cm4gZ3VpZDsKKyAgICAgIH0sCisKKyAgICAgIGFjY2VwdDogZnVuY3Rpb24g
YWNjZXB0KG5vZGUpIHsKKyAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IFNhbml0eSBj
b2RlICovCisgICAgICAgIGlmICghdGhpc1tub2RlLnR5cGVdKSB7CisgICAgICAgICAgdGhyb3cg
bmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ1Vua25vd24gdHlwZTogJyArIG5vZGUudHlwZSwg
bm9kZSk7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLnNvdXJjZU5vZGUudW5zaGlmdChub2Rl
KTsKKyAgICAgICAgdmFyIHJldCA9IHRoaXNbbm9kZS50eXBlXShub2RlKTsKKyAgICAgICAgdGhp
cy5zb3VyY2VOb2RlLnNoaWZ0KCk7CisgICAgICAgIHJldHVybiByZXQ7CisgICAgICB9LAorCisg
ICAgICBQcm9ncmFtOiBmdW5jdGlvbiBQcm9ncmFtKHByb2dyYW0pIHsKKyAgICAgICAgdGhpcy5v
cHRpb25zLmJsb2NrUGFyYW1zLnVuc2hpZnQocHJvZ3JhbS5ibG9ja1BhcmFtcyk7CisKKyAgICAg
ICAgdmFyIGJvZHkgPSBwcm9ncmFtLmJvZHksCisgICAgICAgICAgICBib2R5TGVuZ3RoID0gYm9k
eS5sZW5ndGg7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYm9keUxlbmd0aDsgaSsrKSB7
CisgICAgICAgICAgdGhpcy5hY2NlcHQoYm9keVtpXSk7CisgICAgICAgIH0KKworICAgICAgICB0
aGlzLm9wdGlvbnMuYmxvY2tQYXJhbXMuc2hpZnQoKTsKKworICAgICAgICB0aGlzLmlzU2ltcGxl
ID0gYm9keUxlbmd0aCA9PT0gMTsKKyAgICAgICAgdGhpcy5ibG9ja1BhcmFtcyA9IHByb2dyYW0u
YmxvY2tQYXJhbXMgPyBwcm9ncmFtLmJsb2NrUGFyYW1zLmxlbmd0aCA6IDA7CisKKyAgICAgICAg
cmV0dXJuIHRoaXM7CisgICAgICB9LAorCisgICAgICBCbG9ja1N0YXRlbWVudDogZnVuY3Rpb24g
QmxvY2tTdGF0ZW1lbnQoYmxvY2spIHsKKyAgICAgICAgdHJhbnNmb3JtTGl0ZXJhbFRvUGF0aChi
bG9jayk7CisKKyAgICAgICAgdmFyIHByb2dyYW0gPSBibG9jay5wcm9ncmFtLAorICAgICAgICAg
ICAgaW52ZXJzZSA9IGJsb2NrLmludmVyc2U7CisKKyAgICAgICAgcHJvZ3JhbSA9IHByb2dyYW0g
JiYgdGhpcy5jb21waWxlUHJvZ3JhbShwcm9ncmFtKTsKKyAgICAgICAgaW52ZXJzZSA9IGludmVy
c2UgJiYgdGhpcy5jb21waWxlUHJvZ3JhbShpbnZlcnNlKTsKKworICAgICAgICB2YXIgdHlwZSA9
IHRoaXMuY2xhc3NpZnlTZXhwcihibG9jayk7CisKKyAgICAgICAgaWYgKHR5cGUgPT09ICdoZWxw
ZXInKSB7CisgICAgICAgICAgdGhpcy5oZWxwZXJTZXhwcihibG9jaywgcHJvZ3JhbSwgaW52ZXJz
ZSk7CisgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3NpbXBsZScpIHsKKyAgICAgICAgICB0
aGlzLnNpbXBsZVNleHByKGJsb2NrKTsKKworICAgICAgICAgIC8vIG5vdyB0aGF0IHRoZSBzaW1w
bGUgbXVzdGFjaGUgaXMgcmVzb2x2ZWQsIHdlIG5lZWQgdG8KKyAgICAgICAgICAvLyBldmFsdWF0
ZSBpdCBieSBleGVjdXRpbmcgYGJsb2NrSGVscGVyTWlzc2luZ2AKKyAgICAgICAgICB0aGlzLm9w
Y29kZSgncHVzaFByb2dyYW0nLCBwcm9ncmFtKTsKKyAgICAgICAgICB0aGlzLm9wY29kZSgncHVz
aFByb2dyYW0nLCBpbnZlcnNlKTsKKyAgICAgICAgICB0aGlzLm9wY29kZSgnZW1wdHlIYXNoJyk7
CisgICAgICAgICAgdGhpcy5vcGNvZGUoJ2Jsb2NrVmFsdWUnLCBibG9jay5wYXRoLm9yaWdpbmFs
KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICB0aGlzLmFtYmlndW91c1NleHByKGJsb2Nr
LCBwcm9ncmFtLCBpbnZlcnNlKTsKKworICAgICAgICAgIC8vIG5vdyB0aGF0IHRoZSBzaW1wbGUg
bXVzdGFjaGUgaXMgcmVzb2x2ZWQsIHdlIG5lZWQgdG8KKyAgICAgICAgICAvLyBldmFsdWF0ZSBp
dCBieSBleGVjdXRpbmcgYGJsb2NrSGVscGVyTWlzc2luZ2AKKyAgICAgICAgICB0aGlzLm9wY29k
ZSgncHVzaFByb2dyYW0nLCBwcm9ncmFtKTsKKyAgICAgICAgICB0aGlzLm9wY29kZSgncHVzaFBy
b2dyYW0nLCBpbnZlcnNlKTsKKyAgICAgICAgICB0aGlzLm9wY29kZSgnZW1wdHlIYXNoJyk7Cisg
ICAgICAgICAgdGhpcy5vcGNvZGUoJ2FtYmlndW91c0Jsb2NrVmFsdWUnKTsKKyAgICAgICAgfQor
CisgICAgICAgIHRoaXMub3Bjb2RlKCdhcHBlbmQnKTsKKyAgICAgIH0sCisKKyAgICAgIERlY29y
YXRvckJsb2NrOiBmdW5jdGlvbiBEZWNvcmF0b3JCbG9jayhkZWNvcmF0b3IpIHsKKyAgICAgICAg
dmFyIHByb2dyYW0gPSBkZWNvcmF0b3IucHJvZ3JhbSAmJiB0aGlzLmNvbXBpbGVQcm9ncmFtKGRl
Y29yYXRvci5wcm9ncmFtKTsKKyAgICAgICAgdmFyIHBhcmFtcyA9IHRoaXMuc2V0dXBGdWxsTXVz
dGFjaGVQYXJhbXMoZGVjb3JhdG9yLCBwcm9ncmFtLCB1bmRlZmluZWQpLAorICAgICAgICAgICAg
cGF0aCA9IGRlY29yYXRvci5wYXRoOworCisgICAgICAgIHRoaXMudXNlRGVjb3JhdG9ycyA9IHRy
dWU7CisgICAgICAgIHRoaXMub3Bjb2RlKCdyZWdpc3RlckRlY29yYXRvcicsIHBhcmFtcy5sZW5n
dGgsIHBhdGgub3JpZ2luYWwpOworICAgICAgfSwKKworICAgICAgUGFydGlhbFN0YXRlbWVudDog
ZnVuY3Rpb24gUGFydGlhbFN0YXRlbWVudChwYXJ0aWFsKSB7CisgICAgICAgIHRoaXMudXNlUGFy
dGlhbCA9IHRydWU7CisKKyAgICAgICAgdmFyIHByb2dyYW0gPSBwYXJ0aWFsLnByb2dyYW07Cisg
ICAgICAgIGlmIChwcm9ncmFtKSB7CisgICAgICAgICAgcHJvZ3JhbSA9IHRoaXMuY29tcGlsZVBy
b2dyYW0ocGFydGlhbC5wcm9ncmFtKTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBwYXJhbXMg
PSBwYXJ0aWFsLnBhcmFtczsKKyAgICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPiAxKSB7CisgICAg
ICAgICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ1Vuc3VwcG9ydGVkIG51bWJl
ciBvZiBwYXJ0aWFsIGFyZ3VtZW50czogJyArIHBhcmFtcy5sZW5ndGgsIHBhcnRpYWwpOworICAg
ICAgICB9IGVsc2UgaWYgKCFwYXJhbXMubGVuZ3RoKSB7CisgICAgICAgICAgaWYgKHRoaXMub3B0
aW9ucy5leHBsaWNpdFBhcnRpYWxDb250ZXh0KSB7CisgICAgICAgICAgICB0aGlzLm9wY29kZSgn
cHVzaExpdGVyYWwnLCAndW5kZWZpbmVkJyk7CisgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIHBhcmFtcy5wdXNoKHsgdHlwZTogJ1BhdGhFeHByZXNzaW9uJywgcGFydHM6IFtdLCBkZXB0
aDogMCB9KTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICB2YXIgcGFydGlhbE5h
bWUgPSBwYXJ0aWFsLm5hbWUub3JpZ2luYWwsCisgICAgICAgICAgICBpc0R5bmFtaWMgPSBwYXJ0
aWFsLm5hbWUudHlwZSA9PT0gJ1N1YkV4cHJlc3Npb24nOworICAgICAgICBpZiAoaXNEeW5hbWlj
KSB7CisgICAgICAgICAgdGhpcy5hY2NlcHQocGFydGlhbC5uYW1lKTsKKyAgICAgICAgfQorCisg
ICAgICAgIHRoaXMuc2V0dXBGdWxsTXVzdGFjaGVQYXJhbXMocGFydGlhbCwgcHJvZ3JhbSwgdW5k
ZWZpbmVkLCB0cnVlKTsKKworICAgICAgICB2YXIgaW5kZW50ID0gcGFydGlhbC5pbmRlbnQgfHwg
Jyc7CisgICAgICAgIGlmICh0aGlzLm9wdGlvbnMucHJldmVudEluZGVudCAmJiBpbmRlbnQpIHsK
KyAgICAgICAgICB0aGlzLm9wY29kZSgnYXBwZW5kQ29udGVudCcsIGluZGVudCk7CisgICAgICAg
ICAgaW5kZW50ID0gJyc7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLm9wY29kZSgnaW52b2tl
UGFydGlhbCcsIGlzRHluYW1pYywgcGFydGlhbE5hbWUsIGluZGVudCk7CisgICAgICAgIHRoaXMu
b3Bjb2RlKCdhcHBlbmQnKTsKKyAgICAgIH0sCisgICAgICBQYXJ0aWFsQmxvY2tTdGF0ZW1lbnQ6
IGZ1bmN0aW9uIFBhcnRpYWxCbG9ja1N0YXRlbWVudChwYXJ0aWFsQmxvY2spIHsKKyAgICAgICAg
dGhpcy5QYXJ0aWFsU3RhdGVtZW50KHBhcnRpYWxCbG9jayk7CisgICAgICB9LAorCisgICAgICBN
dXN0YWNoZVN0YXRlbWVudDogZnVuY3Rpb24gTXVzdGFjaGVTdGF0ZW1lbnQobXVzdGFjaGUpIHsK
KyAgICAgICAgdGhpcy5TdWJFeHByZXNzaW9uKG11c3RhY2hlKTsKKworICAgICAgICBpZiAobXVz
dGFjaGUuZXNjYXBlZCAmJiAhdGhpcy5vcHRpb25zLm5vRXNjYXBlKSB7CisgICAgICAgICAgdGhp
cy5vcGNvZGUoJ2FwcGVuZEVzY2FwZWQnKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICB0
aGlzLm9wY29kZSgnYXBwZW5kJyk7CisgICAgICAgIH0KKyAgICAgIH0sCisgICAgICBEZWNvcmF0
b3I6IGZ1bmN0aW9uIERlY29yYXRvcihkZWNvcmF0b3IpIHsKKyAgICAgICAgdGhpcy5EZWNvcmF0
b3JCbG9jayhkZWNvcmF0b3IpOworICAgICAgfSwKKworICAgICAgQ29udGVudFN0YXRlbWVudDog
ZnVuY3Rpb24gQ29udGVudFN0YXRlbWVudChjb250ZW50KSB7CisgICAgICAgIGlmIChjb250ZW50
LnZhbHVlKSB7CisgICAgICAgICAgdGhpcy5vcGNvZGUoJ2FwcGVuZENvbnRlbnQnLCBjb250ZW50
LnZhbHVlKTsKKyAgICAgICAgfQorICAgICAgfSwKKworICAgICAgQ29tbWVudFN0YXRlbWVudDog
ZnVuY3Rpb24gQ29tbWVudFN0YXRlbWVudCgpIHt9LAorCisgICAgICBTdWJFeHByZXNzaW9uOiBm
dW5jdGlvbiBTdWJFeHByZXNzaW9uKHNleHByKSB7CisgICAgICAgIHRyYW5zZm9ybUxpdGVyYWxU
b1BhdGgoc2V4cHIpOworICAgICAgICB2YXIgdHlwZSA9IHRoaXMuY2xhc3NpZnlTZXhwcihzZXhw
cik7CisKKyAgICAgICAgaWYgKHR5cGUgPT09ICdzaW1wbGUnKSB7CisgICAgICAgICAgdGhpcy5z
aW1wbGVTZXhwcihzZXhwcik7CisgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2hlbHBlcicp
IHsKKyAgICAgICAgICB0aGlzLmhlbHBlclNleHByKHNleHByKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICB0aGlzLmFtYmlndW91c1NleHByKHNleHByKTsKKyAgICAgICAgfQorICAgICAg
fSwKKyAgICAgIGFtYmlndW91c1NleHByOiBmdW5jdGlvbiBhbWJpZ3VvdXNTZXhwcihzZXhwciwg
cHJvZ3JhbSwgaW52ZXJzZSkgeworICAgICAgICB2YXIgcGF0aCA9IHNleHByLnBhdGgsCisgICAg
ICAgICAgICBuYW1lID0gcGF0aC5wYXJ0c1swXSwKKyAgICAgICAgICAgIGlzQmxvY2sgPSBwcm9n
cmFtICE9IG51bGwgfHwgaW52ZXJzZSAhPSBudWxsOworCisgICAgICAgIHRoaXMub3Bjb2RlKCdn
ZXRDb250ZXh0JywgcGF0aC5kZXB0aCk7CisKKyAgICAgICAgdGhpcy5vcGNvZGUoJ3B1c2hQcm9n
cmFtJywgcHJvZ3JhbSk7CisgICAgICAgIHRoaXMub3Bjb2RlKCdwdXNoUHJvZ3JhbScsIGludmVy
c2UpOworCisgICAgICAgIHBhdGguc3RyaWN0ID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5hY2NlcHQo
cGF0aCk7CisKKyAgICAgICAgdGhpcy5vcGNvZGUoJ2ludm9rZUFtYmlndW91cycsIG5hbWUsIGlz
QmxvY2spOworICAgICAgfSwKKworICAgICAgc2ltcGxlU2V4cHI6IGZ1bmN0aW9uIHNpbXBsZVNl
eHByKHNleHByKSB7CisgICAgICAgIHZhciBwYXRoID0gc2V4cHIucGF0aDsKKyAgICAgICAgcGF0
aC5zdHJpY3QgPSB0cnVlOworICAgICAgICB0aGlzLmFjY2VwdChwYXRoKTsKKyAgICAgICAgdGhp
cy5vcGNvZGUoJ3Jlc29sdmVQb3NzaWJsZUxhbWJkYScpOworICAgICAgfSwKKworICAgICAgaGVs
cGVyU2V4cHI6IGZ1bmN0aW9uIGhlbHBlclNleHByKHNleHByLCBwcm9ncmFtLCBpbnZlcnNlKSB7
CisgICAgICAgIHZhciBwYXJhbXMgPSB0aGlzLnNldHVwRnVsbE11c3RhY2hlUGFyYW1zKHNleHBy
LCBwcm9ncmFtLCBpbnZlcnNlKSwKKyAgICAgICAgICAgIHBhdGggPSBzZXhwci5wYXRoLAorICAg
ICAgICAgICAgbmFtZSA9IHBhdGgucGFydHNbMF07CisKKyAgICAgICAgaWYgKHRoaXMub3B0aW9u
cy5rbm93bkhlbHBlcnNbbmFtZV0pIHsKKyAgICAgICAgICB0aGlzLm9wY29kZSgnaW52b2tlS25v
d25IZWxwZXInLCBwYXJhbXMubGVuZ3RoLCBuYW1lKTsKKyAgICAgICAgfSBlbHNlIGlmICh0aGlz
Lm9wdGlvbnMua25vd25IZWxwZXJzT25seSkgeworICAgICAgICAgIHRocm93IG5ldyBfZXhjZXB0
aW9uMlsnZGVmYXVsdCddKCdZb3Ugc3BlY2lmaWVkIGtub3duSGVscGVyc09ubHksIGJ1dCB1c2Vk
IHRoZSB1bmtub3duIGhlbHBlciAnICsgbmFtZSwgc2V4cHIpOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgIHBhdGguc3RyaWN0ID0gdHJ1ZTsKKyAgICAgICAgICBwYXRoLmZhbHN5ID0gdHJ1
ZTsKKworICAgICAgICAgIHRoaXMuYWNjZXB0KHBhdGgpOworICAgICAgICAgIHRoaXMub3Bjb2Rl
KCdpbnZva2VIZWxwZXInLCBwYXJhbXMubGVuZ3RoLCBwYXRoLm9yaWdpbmFsLCBfYXN0MlsnZGVm
YXVsdCddLmhlbHBlcnMuc2ltcGxlSWQocGF0aCkpOworICAgICAgICB9CisgICAgICB9LAorCisg
ICAgICBQYXRoRXhwcmVzc2lvbjogZnVuY3Rpb24gUGF0aEV4cHJlc3Npb24ocGF0aCkgeworICAg
ICAgICB0aGlzLmFkZERlcHRoKHBhdGguZGVwdGgpOworICAgICAgICB0aGlzLm9wY29kZSgnZ2V0
Q29udGV4dCcsIHBhdGguZGVwdGgpOworCisgICAgICAgIHZhciBuYW1lID0gcGF0aC5wYXJ0c1sw
XSwKKyAgICAgICAgICAgIHNjb3BlZCA9IF9hc3QyWydkZWZhdWx0J10uaGVscGVycy5zY29wZWRJ
ZChwYXRoKSwKKyAgICAgICAgICAgIGJsb2NrUGFyYW1JZCA9ICFwYXRoLmRlcHRoICYmICFzY29w
ZWQgJiYgdGhpcy5ibG9ja1BhcmFtSW5kZXgobmFtZSk7CisKKyAgICAgICAgaWYgKGJsb2NrUGFy
YW1JZCkgeworICAgICAgICAgIHRoaXMub3Bjb2RlKCdsb29rdXBCbG9ja1BhcmFtJywgYmxvY2tQ
YXJhbUlkLCBwYXRoLnBhcnRzKTsKKyAgICAgICAgfSBlbHNlIGlmICghbmFtZSkgeworICAgICAg
ICAgIC8vIENvbnRleHQgcmVmZXJlbmNlLCBpLmUuIGB7e2ZvbyAufX1gIG9yIGB7e2ZvbyAuLn19
YAorICAgICAgICAgIHRoaXMub3Bjb2RlKCdwdXNoQ29udGV4dCcpOworICAgICAgICB9IGVsc2Ug
aWYgKHBhdGguZGF0YSkgeworICAgICAgICAgIHRoaXMub3B0aW9ucy5kYXRhID0gdHJ1ZTsKKyAg
ICAgICAgICB0aGlzLm9wY29kZSgnbG9va3VwRGF0YScsIHBhdGguZGVwdGgsIHBhdGgucGFydHMs
IHBhdGguc3RyaWN0KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICB0aGlzLm9wY29kZSgn
bG9va3VwT25Db250ZXh0JywgcGF0aC5wYXJ0cywgcGF0aC5mYWxzeSwgcGF0aC5zdHJpY3QsIHNj
b3BlZCk7CisgICAgICAgIH0KKyAgICAgIH0sCisKKyAgICAgIFN0cmluZ0xpdGVyYWw6IGZ1bmN0
aW9uIFN0cmluZ0xpdGVyYWwoc3RyaW5nKSB7CisgICAgICAgIHRoaXMub3Bjb2RlKCdwdXNoU3Ry
aW5nJywgc3RyaW5nLnZhbHVlKTsKKyAgICAgIH0sCisKKyAgICAgIE51bWJlckxpdGVyYWw6IGZ1
bmN0aW9uIE51bWJlckxpdGVyYWwobnVtYmVyKSB7CisgICAgICAgIHRoaXMub3Bjb2RlKCdwdXNo
TGl0ZXJhbCcsIG51bWJlci52YWx1ZSk7CisgICAgICB9LAorCisgICAgICBCb29sZWFuTGl0ZXJh
bDogZnVuY3Rpb24gQm9vbGVhbkxpdGVyYWwoYm9vbCkgeworICAgICAgICB0aGlzLm9wY29kZSgn
cHVzaExpdGVyYWwnLCBib29sLnZhbHVlKTsKKyAgICAgIH0sCisKKyAgICAgIFVuZGVmaW5lZExp
dGVyYWw6IGZ1bmN0aW9uIFVuZGVmaW5lZExpdGVyYWwoKSB7CisgICAgICAgIHRoaXMub3Bjb2Rl
KCdwdXNoTGl0ZXJhbCcsICd1bmRlZmluZWQnKTsKKyAgICAgIH0sCisKKyAgICAgIE51bGxMaXRl
cmFsOiBmdW5jdGlvbiBOdWxsTGl0ZXJhbCgpIHsKKyAgICAgICAgdGhpcy5vcGNvZGUoJ3B1c2hM
aXRlcmFsJywgJ251bGwnKTsKKyAgICAgIH0sCisKKyAgICAgIEhhc2g6IGZ1bmN0aW9uIEhhc2go
aGFzaCkgeworICAgICAgICB2YXIgcGFpcnMgPSBoYXNoLnBhaXJzLAorICAgICAgICAgICAgaSA9
IDAsCisgICAgICAgICAgICBsID0gcGFpcnMubGVuZ3RoOworCisgICAgICAgIHRoaXMub3Bjb2Rl
KCdwdXNoSGFzaCcpOworCisgICAgICAgIGZvciAoOyBpIDwgbDsgaSsrKSB7CisgICAgICAgICAg
dGhpcy5wdXNoUGFyYW0ocGFpcnNbaV0udmFsdWUpOworICAgICAgICB9CisgICAgICAgIHdoaWxl
IChpLS0pIHsKKyAgICAgICAgICB0aGlzLm9wY29kZSgnYXNzaWduVG9IYXNoJywgcGFpcnNbaV0u
a2V5KTsKKyAgICAgICAgfQorICAgICAgICB0aGlzLm9wY29kZSgncG9wSGFzaCcpOworICAgICAg
fSwKKworICAgICAgLy8gSEVMUEVSUworICAgICAgb3Bjb2RlOiBmdW5jdGlvbiBvcGNvZGUobmFt
ZSkgeworICAgICAgICB0aGlzLm9wY29kZXMucHVzaCh7IG9wY29kZTogbmFtZSwgYXJnczogc2xp
Y2UuY2FsbChhcmd1bWVudHMsIDEpLCBsb2M6IHRoaXMuc291cmNlTm9kZVswXS5sb2MgfSk7Cisg
ICAgICB9LAorCisgICAgICBhZGREZXB0aDogZnVuY3Rpb24gYWRkRGVwdGgoZGVwdGgpIHsKKyAg
ICAgICAgaWYgKCFkZXB0aCkgeworICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIHRoaXMudXNlRGVwdGhzID0gdHJ1ZTsKKyAgICAgIH0sCisKKyAgICAgIGNsYXNzaWZ5U2V4
cHI6IGZ1bmN0aW9uIGNsYXNzaWZ5U2V4cHIoc2V4cHIpIHsKKyAgICAgICAgdmFyIGlzU2ltcGxl
ID0gX2FzdDJbJ2RlZmF1bHQnXS5oZWxwZXJzLnNpbXBsZUlkKHNleHByLnBhdGgpOworCisgICAg
ICAgIHZhciBpc0Jsb2NrUGFyYW0gPSBpc1NpbXBsZSAmJiAhIXRoaXMuYmxvY2tQYXJhbUluZGV4
KHNleHByLnBhdGgucGFydHNbMF0pOworCisgICAgICAgIC8vIGEgbXVzdGFjaGUgaXMgYW4gZWxp
Z2libGUgaGVscGVyIGlmOgorICAgICAgICAvLyAqIGl0cyBpZCBpcyBzaW1wbGUgKGEgc2luZ2xl
IHBhcnQsIG5vdCBgdGhpc2Agb3IgYC4uYCkKKyAgICAgICAgdmFyIGlzSGVscGVyID0gIWlzQmxv
Y2tQYXJhbSAmJiBfYXN0MlsnZGVmYXVsdCddLmhlbHBlcnMuaGVscGVyRXhwcmVzc2lvbihzZXhw
cik7CisKKyAgICAgICAgLy8gaWYgYSBtdXN0YWNoZSBpcyBhbiBlbGlnaWJsZSBoZWxwZXIgYnV0
IG5vdCBhIGRlZmluaXRlCisgICAgICAgIC8vIGhlbHBlciwgaXQgaXMgYW1iaWd1b3VzLCBhbmQg
d2lsbCBiZSByZXNvbHZlZCBpbiBhIGxhdGVyCisgICAgICAgIC8vIHBhc3Mgb3IgYXQgcnVudGlt
ZS4KKyAgICAgICAgdmFyIGlzRWxpZ2libGUgPSAhaXNCbG9ja1BhcmFtICYmIChpc0hlbHBlciB8
fCBpc1NpbXBsZSk7CisKKyAgICAgICAgLy8gaWYgYW1iaWd1b3VzLCB3ZSBjYW4gcG9zc2libHkg
cmVzb2x2ZSB0aGUgYW1iaWd1aXR5IG5vdworICAgICAgICAvLyBBbiBlbGlnaWJsZSBoZWxwZXIg
aXMgb25lIHRoYXQgZG9lcyBub3QgaGF2ZSBhIGNvbXBsZXggcGF0aCwgaS5lLiBgdGhpcy5mb29g
LCBgLi4vZm9vYCBldGMuCisgICAgICAgIGlmIChpc0VsaWdpYmxlICYmICFpc0hlbHBlcikgewor
ICAgICAgICAgIHZhciBfbmFtZTIgPSBzZXhwci5wYXRoLnBhcnRzWzBdLAorICAgICAgICAgICAg
ICBvcHRpb25zID0gdGhpcy5vcHRpb25zOworCisgICAgICAgICAgaWYgKG9wdGlvbnMua25vd25I
ZWxwZXJzW19uYW1lMl0pIHsKKyAgICAgICAgICAgIGlzSGVscGVyID0gdHJ1ZTsKKyAgICAgICAg
ICB9IGVsc2UgaWYgKG9wdGlvbnMua25vd25IZWxwZXJzT25seSkgeworICAgICAgICAgICAgaXNF
bGlnaWJsZSA9IGZhbHNlOworICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChp
c0hlbHBlcikgeworICAgICAgICAgIHJldHVybiAnaGVscGVyJzsKKyAgICAgICAgfSBlbHNlIGlm
IChpc0VsaWdpYmxlKSB7CisgICAgICAgICAgcmV0dXJuICdhbWJpZ3VvdXMnOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgIHJldHVybiAnc2ltcGxlJzsKKyAgICAgICAgfQorICAgICAgfSwK
KworICAgICAgcHVzaFBhcmFtczogZnVuY3Rpb24gcHVzaFBhcmFtcyhwYXJhbXMpIHsKKyAgICAg
ICAgZm9yICh2YXIgaSA9IDAsIGwgPSBwYXJhbXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CisgICAg
ICAgICAgdGhpcy5wdXNoUGFyYW0ocGFyYW1zW2ldKTsKKyAgICAgICAgfQorICAgICAgfSwKKwor
ICAgICAgcHVzaFBhcmFtOiBmdW5jdGlvbiBwdXNoUGFyYW0odmFsKSB7CisgICAgICAgIHZhciB2
YWx1ZSA9IHZhbC52YWx1ZSAhPSBudWxsID8gdmFsLnZhbHVlIDogdmFsLm9yaWdpbmFsIHx8ICcn
OworCisgICAgICAgIGlmICh0aGlzLnN0cmluZ1BhcmFtcykgeworICAgICAgICAgIGlmICh2YWx1
ZS5yZXBsYWNlKSB7CisgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL14oXC4/XC5c
LykqL2csICcnKS5yZXBsYWNlKC9cLy9nLCAnLicpOworICAgICAgICAgIH0KKworICAgICAgICAg
IGlmICh2YWwuZGVwdGgpIHsKKyAgICAgICAgICAgIHRoaXMuYWRkRGVwdGgodmFsLmRlcHRoKTsK
KyAgICAgICAgICB9CisgICAgICAgICAgdGhpcy5vcGNvZGUoJ2dldENvbnRleHQnLCB2YWwuZGVw
dGggfHwgMCk7CisgICAgICAgICAgdGhpcy5vcGNvZGUoJ3B1c2hTdHJpbmdQYXJhbScsIHZhbHVl
LCB2YWwudHlwZSk7CisKKyAgICAgICAgICBpZiAodmFsLnR5cGUgPT09ICdTdWJFeHByZXNzaW9u
JykgeworICAgICAgICAgICAgLy8gU3ViRXhwcmVzc2lvbnMgZ2V0IGV2YWx1YXRlZCBhbmQgcGFz
c2VkIGluCisgICAgICAgICAgICAvLyBpbiBzdHJpbmcgcGFyYW1zIG1vZGUuCisgICAgICAgICAg
ICB0aGlzLmFjY2VwdCh2YWwpOworICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICBpZiAodGhpcy50cmFja0lkcykgeworICAgICAgICAgICAgdmFyIGJsb2NrUGFyYW1JbmRl
eCA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAgIGlmICh2YWwucGFydHMgJiYgIV9hc3QyWydkZWZh
dWx0J10uaGVscGVycy5zY29wZWRJZCh2YWwpICYmICF2YWwuZGVwdGgpIHsKKyAgICAgICAgICAg
ICAgYmxvY2tQYXJhbUluZGV4ID0gdGhpcy5ibG9ja1BhcmFtSW5kZXgodmFsLnBhcnRzWzBdKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChibG9ja1BhcmFtSW5kZXgpIHsKKyAgICAg
ICAgICAgICAgdmFyIGJsb2NrUGFyYW1DaGlsZCA9IHZhbC5wYXJ0cy5zbGljZSgxKS5qb2luKCcu
Jyk7CisgICAgICAgICAgICAgIHRoaXMub3Bjb2RlKCdwdXNoSWQnLCAnQmxvY2tQYXJhbScsIGJs
b2NrUGFyYW1JbmRleCwgYmxvY2tQYXJhbUNoaWxkKTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgIHZhbHVlID0gdmFsLm9yaWdpbmFsIHx8IHZhbHVlOworICAgICAgICAgICAg
ICBpZiAodmFsdWUucmVwbGFjZSkgeworICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVw
bGFjZSgvXnRoaXMoPzpcLnwkKS8sICcnKS5yZXBsYWNlKC9eXC5cLy8sICcnKS5yZXBsYWNlKC9e
XC4kLywgJycpOworICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgdGhpcy5vcGNvZGUo
J3B1c2hJZCcsIHZhbC50eXBlLCB2YWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQor
ICAgICAgICAgIHRoaXMuYWNjZXB0KHZhbCk7CisgICAgICAgIH0KKyAgICAgIH0sCisKKyAgICAg
IHNldHVwRnVsbE11c3RhY2hlUGFyYW1zOiBmdW5jdGlvbiBzZXR1cEZ1bGxNdXN0YWNoZVBhcmFt
cyhzZXhwciwgcHJvZ3JhbSwgaW52ZXJzZSwgb21pdEVtcHR5KSB7CisgICAgICAgIHZhciBwYXJh
bXMgPSBzZXhwci5wYXJhbXM7CisgICAgICAgIHRoaXMucHVzaFBhcmFtcyhwYXJhbXMpOworCisg
ICAgICAgIHRoaXMub3Bjb2RlKCdwdXNoUHJvZ3JhbScsIHByb2dyYW0pOworICAgICAgICB0aGlz
Lm9wY29kZSgncHVzaFByb2dyYW0nLCBpbnZlcnNlKTsKKworICAgICAgICBpZiAoc2V4cHIuaGFz
aCkgeworICAgICAgICAgIHRoaXMuYWNjZXB0KHNleHByLmhhc2gpOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgIHRoaXMub3Bjb2RlKCdlbXB0eUhhc2gnLCBvbWl0RW1wdHkpOworICAgICAg
ICB9CisKKyAgICAgICAgcmV0dXJuIHBhcmFtczsKKyAgICAgIH0sCisKKyAgICAgIGJsb2NrUGFy
YW1JbmRleDogZnVuY3Rpb24gYmxvY2tQYXJhbUluZGV4KG5hbWUpIHsKKyAgICAgICAgZm9yICh2
YXIgZGVwdGggPSAwLCBsZW4gPSB0aGlzLm9wdGlvbnMuYmxvY2tQYXJhbXMubGVuZ3RoOyBkZXB0
aCA8IGxlbjsgZGVwdGgrKykgeworICAgICAgICAgIHZhciBibG9ja1BhcmFtcyA9IHRoaXMub3B0
aW9ucy5ibG9ja1BhcmFtc1tkZXB0aF0sCisgICAgICAgICAgICAgIHBhcmFtID0gYmxvY2tQYXJh
bXMgJiYgX3V0aWxzLmluZGV4T2YoYmxvY2tQYXJhbXMsIG5hbWUpOworICAgICAgICAgIGlmIChi
bG9ja1BhcmFtcyAmJiBwYXJhbSA+PSAwKSB7CisgICAgICAgICAgICByZXR1cm4gW2RlcHRoLCBw
YXJhbV07CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfTsKKworICAgIGZ1
bmN0aW9uIHByZWNvbXBpbGUoaW5wdXQsIG9wdGlvbnMsIGVudikgeworICAgICAgaWYgKGlucHV0
ID09IG51bGwgfHwgdHlwZW9mIGlucHV0ICE9PSAnc3RyaW5nJyAmJiBpbnB1dC50eXBlICE9PSAn
UHJvZ3JhbScpIHsKKyAgICAgICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ1lv
dSBtdXN0IHBhc3MgYSBzdHJpbmcgb3IgSGFuZGxlYmFycyBBU1QgdG8gSGFuZGxlYmFycy5wcmVj
b21waWxlLiBZb3UgcGFzc2VkICcgKyBpbnB1dCk7CisgICAgICB9CisKKyAgICAgIG9wdGlvbnMg
PSBvcHRpb25zIHx8IHt9OworICAgICAgaWYgKCEoJ2RhdGEnIGluIG9wdGlvbnMpKSB7CisgICAg
ICAgIG9wdGlvbnMuZGF0YSA9IHRydWU7CisgICAgICB9CisgICAgICBpZiAob3B0aW9ucy5jb21w
YXQpIHsKKyAgICAgICAgb3B0aW9ucy51c2VEZXB0aHMgPSB0cnVlOworICAgICAgfQorCisgICAg
ICB2YXIgYXN0ID0gZW52LnBhcnNlKGlucHV0LCBvcHRpb25zKSwKKyAgICAgICAgICBlbnZpcm9u
bWVudCA9IG5ldyBlbnYuQ29tcGlsZXIoKS5jb21waWxlKGFzdCwgb3B0aW9ucyk7CisgICAgICBy
ZXR1cm4gbmV3IGVudi5KYXZhU2NyaXB0Q29tcGlsZXIoKS5jb21waWxlKGVudmlyb25tZW50LCBv
cHRpb25zKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjb21waWxlKGlucHV0LCBvcHRpb25zLCBl
bnYpIHsKKyAgICAgIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIG9wdGlvbnMgPSB7fTsKKwor
ICAgICAgaWYgKGlucHV0ID09IG51bGwgfHwgdHlwZW9mIGlucHV0ICE9PSAnc3RyaW5nJyAmJiBp
bnB1dC50eXBlICE9PSAnUHJvZ3JhbScpIHsKKyAgICAgICAgdGhyb3cgbmV3IF9leGNlcHRpb24y
WydkZWZhdWx0J10oJ1lvdSBtdXN0IHBhc3MgYSBzdHJpbmcgb3IgSGFuZGxlYmFycyBBU1QgdG8g
SGFuZGxlYmFycy5jb21waWxlLiBZb3UgcGFzc2VkICcgKyBpbnB1dCk7CisgICAgICB9CisKKyAg
ICAgIGlmICghKCdkYXRhJyBpbiBvcHRpb25zKSkgeworICAgICAgICBvcHRpb25zLmRhdGEgPSB0
cnVlOworICAgICAgfQorICAgICAgaWYgKG9wdGlvbnMuY29tcGF0KSB7CisgICAgICAgIG9wdGlv
bnMudXNlRGVwdGhzID0gdHJ1ZTsKKyAgICAgIH0KKworICAgICAgdmFyIGNvbXBpbGVkID0gdW5k
ZWZpbmVkOworCisgICAgICBmdW5jdGlvbiBjb21waWxlSW5wdXQoKSB7CisgICAgICAgIHZhciBh
c3QgPSBlbnYucGFyc2UoaW5wdXQsIG9wdGlvbnMpLAorICAgICAgICAgICAgZW52aXJvbm1lbnQg
PSBuZXcgZW52LkNvbXBpbGVyKCkuY29tcGlsZShhc3QsIG9wdGlvbnMpLAorICAgICAgICAgICAg
dGVtcGxhdGVTcGVjID0gbmV3IGVudi5KYXZhU2NyaXB0Q29tcGlsZXIoKS5jb21waWxlKGVudmly
b25tZW50LCBvcHRpb25zLCB1bmRlZmluZWQsIHRydWUpOworICAgICAgICByZXR1cm4gZW52LnRl
bXBsYXRlKHRlbXBsYXRlU3BlYyk7CisgICAgICB9CisKKyAgICAgIC8vIFRlbXBsYXRlIGlzIG9u
bHkgY29tcGlsZWQgb24gZmlyc3QgdXNlIGFuZCBjYWNoZWQgYWZ0ZXIgdGhhdCBwb2ludC4KKyAg
ICAgIGZ1bmN0aW9uIHJldChjb250ZXh0LCBleGVjT3B0aW9ucykgeworICAgICAgICBpZiAoIWNv
bXBpbGVkKSB7CisgICAgICAgICAgY29tcGlsZWQgPSBjb21waWxlSW5wdXQoKTsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gY29tcGlsZWQuY2FsbCh0aGlzLCBjb250ZXh0LCBleGVjT3B0aW9u
cyk7CisgICAgICB9CisgICAgICByZXQuX3NldHVwID0gZnVuY3Rpb24gKHNldHVwT3B0aW9ucykg
eworICAgICAgICBpZiAoIWNvbXBpbGVkKSB7CisgICAgICAgICAgY29tcGlsZWQgPSBjb21waWxl
SW5wdXQoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gY29tcGlsZWQuX3NldHVwKHNldHVw
T3B0aW9ucyk7CisgICAgICB9OworICAgICAgcmV0Ll9jaGlsZCA9IGZ1bmN0aW9uIChpLCBkYXRh
LCBibG9ja1BhcmFtcywgZGVwdGhzKSB7CisgICAgICAgIGlmICghY29tcGlsZWQpIHsKKyAgICAg
ICAgICBjb21waWxlZCA9IGNvbXBpbGVJbnB1dCgpOworICAgICAgICB9CisgICAgICAgIHJldHVy
biBjb21waWxlZC5fY2hpbGQoaSwgZGF0YSwgYmxvY2tQYXJhbXMsIGRlcHRocyk7CisgICAgICB9
OworICAgICAgcmV0dXJuIHJldDsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBhcmdFcXVhbHMoYSwg
YikgeworICAgICAgaWYgKGEgPT09IGIpIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICB9
CisKKyAgICAgIGlmIChfdXRpbHMuaXNBcnJheShhKSAmJiBfdXRpbHMuaXNBcnJheShiKSAmJiBh
Lmxlbmd0aCA9PT0gYi5sZW5ndGgpIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhLmxl
bmd0aDsgaSsrKSB7CisgICAgICAgICAgaWYgKCFhcmdFcXVhbHMoYVtpXSwgYltpXSkpIHsKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICB9CisgICAgfQorCisgICAgZnVuY3Rpb24gdHJhbnNmb3JtTGl0
ZXJhbFRvUGF0aChzZXhwcikgeworICAgICAgaWYgKCFzZXhwci5wYXRoLnBhcnRzKSB7CisgICAg
ICAgIHZhciBsaXRlcmFsID0gc2V4cHIucGF0aDsKKyAgICAgICAgLy8gQ2FzdGluZyB0byBzdHJp
bmcgaGVyZSB0byBtYWtlIGZhbHNlIGFuZCAwIGxpdGVyYWwgdmFsdWVzIHBsYXkgbmljZWx5IHdp
dGggdGhlIHJlc3QKKyAgICAgICAgLy8gb2YgdGhlIHN5c3RlbS4KKyAgICAgICAgc2V4cHIucGF0
aCA9IHsKKyAgICAgICAgICB0eXBlOiAnUGF0aEV4cHJlc3Npb24nLAorICAgICAgICAgIGRhdGE6
IGZhbHNlLAorICAgICAgICAgIGRlcHRoOiAwLAorICAgICAgICAgIHBhcnRzOiBbbGl0ZXJhbC5v
cmlnaW5hbCArICcnXSwKKyAgICAgICAgICBvcmlnaW5hbDogbGl0ZXJhbC5vcmlnaW5hbCArICcn
LAorICAgICAgICAgIGxvYzogbGl0ZXJhbC5sb2MKKyAgICAgICAgfTsKKyAgICAgIH0KKyAgICB9
CisKKy8qKiovIH0sCisvKiAzMSAqLworLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBf
X3dlYnBhY2tfcmVxdWlyZV9fKSB7CisKKyAgICAndXNlIHN0cmljdCc7CisKKyAgICB2YXIgX2lu
dGVyb3BSZXF1aXJlRGVmYXVsdCA9IF9fd2VicGFja19yZXF1aXJlX18oMSlbJ2RlZmF1bHQnXTsK
KworICAgIGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7CisKKyAgICB2YXIgX2Jhc2UgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDQpOworCisgICAgdmFyIF9leGNlcHRpb24gPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDYpOworCisgICAgdmFyIF9leGNlcHRpb24yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVs
dChfZXhjZXB0aW9uKTsKKworICAgIHZhciBfdXRpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUp
OworCisgICAgdmFyIF9jb2RlR2VuID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMik7CisKKyAgICB2
YXIgX2NvZGVHZW4yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY29kZUdlbik7CisKKyAgICBm
dW5jdGlvbiBMaXRlcmFsKHZhbHVlKSB7CisgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7CisgICAg
fQorCisgICAgZnVuY3Rpb24gSmF2YVNjcmlwdENvbXBpbGVyKCkge30KKworICAgIEphdmFTY3Jp
cHRDb21waWxlci5wcm90b3R5cGUgPSB7CisgICAgICAvLyBQVUJMSUMgQVBJOiBZb3UgY2FuIG92
ZXJyaWRlIHRoZXNlIG1ldGhvZHMgaW4gYSBzdWJjbGFzcyB0byBwcm92aWRlCisgICAgICAvLyBh
bHRlcm5hdGl2ZSBjb21waWxlZCBmb3JtcyBmb3IgbmFtZSBsb29rdXAgYW5kIGJ1ZmZlcmluZyBz
ZW1hbnRpY3MKKyAgICAgIG5hbWVMb29rdXA6IGZ1bmN0aW9uIG5hbWVMb29rdXAocGFyZW50LCBu
YW1lIC8qICwgdHlwZSovKSB7CisgICAgICAgIGlmIChKYXZhU2NyaXB0Q29tcGlsZXIuaXNWYWxp
ZEphdmFTY3JpcHRWYXJpYWJsZU5hbWUobmFtZSkpIHsKKyAgICAgICAgICByZXR1cm4gW3BhcmVu
dCwgJy4nLCBuYW1lXTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICByZXR1cm4gW3BhcmVu
dCwgJ1snLCBKU09OLnN0cmluZ2lmeShuYW1lKSwgJ10nXTsKKyAgICAgICAgfQorICAgICAgfSwK
KyAgICAgIGRlcHRoZWRMb29rdXA6IGZ1bmN0aW9uIGRlcHRoZWRMb29rdXAobmFtZSkgeworICAg
ICAgICByZXR1cm4gW3RoaXMuYWxpYXNhYmxlKCdjb250YWluZXIubG9va3VwJyksICcoZGVwdGhz
LCAiJywgbmFtZSwgJyIpJ107CisgICAgICB9LAorCisgICAgICBjb21waWxlckluZm86IGZ1bmN0
aW9uIGNvbXBpbGVySW5mbygpIHsKKyAgICAgICAgdmFyIHJldmlzaW9uID0gX2Jhc2UuQ09NUElM
RVJfUkVWSVNJT04sCisgICAgICAgICAgICB2ZXJzaW9ucyA9IF9iYXNlLlJFVklTSU9OX0NIQU5H
RVNbcmV2aXNpb25dOworICAgICAgICByZXR1cm4gW3JldmlzaW9uLCB2ZXJzaW9uc107CisgICAg
ICB9LAorCisgICAgICBhcHBlbmRUb0J1ZmZlcjogZnVuY3Rpb24gYXBwZW5kVG9CdWZmZXIoc291
cmNlLCBsb2NhdGlvbiwgZXhwbGljaXQpIHsKKyAgICAgICAgLy8gRm9yY2UgYSBzb3VyY2UgYXMg
dGhpcyBzaW1wbGlmaWVzIHRoZSBtZXJnZSBsb2dpYy4KKyAgICAgICAgaWYgKCFfdXRpbHMuaXNB
cnJheShzb3VyY2UpKSB7CisgICAgICAgICAgc291cmNlID0gW3NvdXJjZV07CisgICAgICAgIH0K
KyAgICAgICAgc291cmNlID0gdGhpcy5zb3VyY2Uud3JhcChzb3VyY2UsIGxvY2F0aW9uKTsKKwor
ICAgICAgICBpZiAodGhpcy5lbnZpcm9ubWVudC5pc1NpbXBsZSkgeworICAgICAgICAgIHJldHVy
biBbJ3JldHVybiAnLCBzb3VyY2UsICc7J107CisgICAgICAgIH0gZWxzZSBpZiAoZXhwbGljaXQp
IHsKKyAgICAgICAgICAvLyBUaGlzIGlzIGEgY2FzZSB3aGVyZSB0aGUgYnVmZmVyIG9wZXJhdGlv
biBvY2N1cnMgYXMgYSBjaGlsZCBvZiBhbm90aGVyCisgICAgICAgICAgLy8gY29uc3RydWN0LCBn
ZW5lcmFsbHkgYnJhY2VzLiBXZSBoYXZlIHRvIGV4cGxpY2l0bHkgb3V0cHV0IHRoZXNlIGJ1ZmZl
cgorICAgICAgICAgIC8vIG9wZXJhdGlvbnMgdG8gZW5zdXJlIHRoYXQgdGhlIGVtaXR0ZWQgY29k
ZSBnb2VzIGluIHRoZSBjb3JyZWN0IGxvY2F0aW9uLgorICAgICAgICAgIHJldHVybiBbJ2J1ZmZl
ciArPSAnLCBzb3VyY2UsICc7J107CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgc291cmNl
LmFwcGVuZFRvQnVmZmVyID0gdHJ1ZTsKKyAgICAgICAgICByZXR1cm4gc291cmNlOworICAgICAg
ICB9CisgICAgICB9LAorCisgICAgICBpbml0aWFsaXplQnVmZmVyOiBmdW5jdGlvbiBpbml0aWFs
aXplQnVmZmVyKCkgeworICAgICAgICByZXR1cm4gdGhpcy5xdW90ZWRTdHJpbmcoJycpOworICAg
ICAgfSwKKyAgICAgIC8vIEVORCBQVUJMSUMgQVBJCisKKyAgICAgIGNvbXBpbGU6IGZ1bmN0aW9u
IGNvbXBpbGUoZW52aXJvbm1lbnQsIG9wdGlvbnMsIGNvbnRleHQsIGFzT2JqZWN0KSB7CisgICAg
ICAgIHRoaXMuZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudDsKKyAgICAgICAgdGhpcy5vcHRpb25z
ID0gb3B0aW9uczsKKyAgICAgICAgdGhpcy5zdHJpbmdQYXJhbXMgPSB0aGlzLm9wdGlvbnMuc3Ry
aW5nUGFyYW1zOworICAgICAgICB0aGlzLnRyYWNrSWRzID0gdGhpcy5vcHRpb25zLnRyYWNrSWRz
OworICAgICAgICB0aGlzLnByZWNvbXBpbGUgPSAhYXNPYmplY3Q7CisKKyAgICAgICAgdGhpcy5u
YW1lID0gdGhpcy5lbnZpcm9ubWVudC5uYW1lOworICAgICAgICB0aGlzLmlzQ2hpbGQgPSAhIWNv
bnRleHQ7CisgICAgICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHQgfHwgeworICAgICAgICAgIGRl
Y29yYXRvcnM6IFtdLAorICAgICAgICAgIHByb2dyYW1zOiBbXSwKKyAgICAgICAgICBlbnZpcm9u
bWVudHM6IFtdCisgICAgICAgIH07CisKKyAgICAgICAgdGhpcy5wcmVhbWJsZSgpOworCisgICAg
ICAgIHRoaXMuc3RhY2tTbG90ID0gMDsKKyAgICAgICAgdGhpcy5zdGFja1ZhcnMgPSBbXTsKKyAg
ICAgICAgdGhpcy5hbGlhc2VzID0ge307CisgICAgICAgIHRoaXMucmVnaXN0ZXJzID0geyBsaXN0
OiBbXSB9OworICAgICAgICB0aGlzLmhhc2hlcyA9IFtdOworICAgICAgICB0aGlzLmNvbXBpbGVT
dGFjayA9IFtdOworICAgICAgICB0aGlzLmlubGluZVN0YWNrID0gW107CisgICAgICAgIHRoaXMu
YmxvY2tQYXJhbXMgPSBbXTsKKworICAgICAgICB0aGlzLmNvbXBpbGVDaGlsZHJlbihlbnZpcm9u
bWVudCwgb3B0aW9ucyk7CisKKyAgICAgICAgdGhpcy51c2VEZXB0aHMgPSB0aGlzLnVzZURlcHRo
cyB8fCBlbnZpcm9ubWVudC51c2VEZXB0aHMgfHwgZW52aXJvbm1lbnQudXNlRGVjb3JhdG9ycyB8
fCB0aGlzLm9wdGlvbnMuY29tcGF0OworICAgICAgICB0aGlzLnVzZUJsb2NrUGFyYW1zID0gdGhp
cy51c2VCbG9ja1BhcmFtcyB8fCBlbnZpcm9ubWVudC51c2VCbG9ja1BhcmFtczsKKworICAgICAg
ICB2YXIgb3Bjb2RlcyA9IGVudmlyb25tZW50Lm9wY29kZXMsCisgICAgICAgICAgICBvcGNvZGUg
PSB1bmRlZmluZWQsCisgICAgICAgICAgICBmaXJzdExvYyA9IHVuZGVmaW5lZCwKKyAgICAgICAg
ICAgIGkgPSB1bmRlZmluZWQsCisgICAgICAgICAgICBsID0gdW5kZWZpbmVkOworCisgICAgICAg
IGZvciAoaSA9IDAsIGwgPSBvcGNvZGVzLmxlbmd0aDsgaSA8IGw7IGkrKykgeworICAgICAgICAg
IG9wY29kZSA9IG9wY29kZXNbaV07CisKKyAgICAgICAgICB0aGlzLnNvdXJjZS5jdXJyZW50TG9j
YXRpb24gPSBvcGNvZGUubG9jOworICAgICAgICAgIGZpcnN0TG9jID0gZmlyc3RMb2MgfHwgb3Bj
b2RlLmxvYzsKKyAgICAgICAgICB0aGlzW29wY29kZS5vcGNvZGVdLmFwcGx5KHRoaXMsIG9wY29k
ZS5hcmdzKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZsdXNoIGFueSB0cmFpbGluZyBjb250
ZW50IHRoYXQgbWlnaHQgYmUgcGVuZGluZy4KKyAgICAgICAgdGhpcy5zb3VyY2UuY3VycmVudExv
Y2F0aW9uID0gZmlyc3RMb2M7CisgICAgICAgIHRoaXMucHVzaFNvdXJjZSgnJyk7CisKKyAgICAg
ICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8KKyAgICAgICAgaWYgKHRoaXMuc3RhY2tTbG90
IHx8IHRoaXMuaW5saW5lU3RhY2subGVuZ3RoIHx8IHRoaXMuY29tcGlsZVN0YWNrLmxlbmd0aCkg
eworICAgICAgICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCdDb21waWxlIGNv
bXBsZXRlZCB3aXRoIGNvbnRlbnQgbGVmdCBvbiBzdGFjaycpOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKCF0aGlzLmRlY29yYXRvcnMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgdGhpcy51c2VE
ZWNvcmF0b3JzID0gdHJ1ZTsKKworICAgICAgICAgIHRoaXMuZGVjb3JhdG9ycy5wcmVwZW5kKCd2
YXIgZGVjb3JhdG9ycyA9IGNvbnRhaW5lci5kZWNvcmF0b3JzO1xuJyk7CisgICAgICAgICAgdGhp
cy5kZWNvcmF0b3JzLnB1c2goJ3JldHVybiBmbjsnKTsKKworICAgICAgICAgIGlmIChhc09iamVj
dCkgeworICAgICAgICAgICAgdGhpcy5kZWNvcmF0b3JzID0gRnVuY3Rpb24uYXBwbHkodGhpcywg
WydmbicsICdwcm9wcycsICdjb250YWluZXInLCAnZGVwdGgwJywgJ2RhdGEnLCAnYmxvY2tQYXJh
bXMnLCAnZGVwdGhzJywgdGhpcy5kZWNvcmF0b3JzLm1lcmdlKCldKTsKKyAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgdGhpcy5kZWNvcmF0b3JzLnByZXBlbmQoJ2Z1bmN0aW9uKGZuLCBw
cm9wcywgY29udGFpbmVyLCBkZXB0aDAsIGRhdGEsIGJsb2NrUGFyYW1zLCBkZXB0aHMpIHtcbicp
OworICAgICAgICAgICAgdGhpcy5kZWNvcmF0b3JzLnB1c2goJ31cbicpOworICAgICAgICAgICAg
dGhpcy5kZWNvcmF0b3JzID0gdGhpcy5kZWNvcmF0b3JzLm1lcmdlKCk7CisgICAgICAgICAgfQor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgIHRoaXMuZGVjb3JhdG9ycyA9IHVuZGVmaW5lZDsK
KyAgICAgICAgfQorCisgICAgICAgIHZhciBmbiA9IHRoaXMuY3JlYXRlRnVuY3Rpb25Db250ZXh0
KGFzT2JqZWN0KTsKKyAgICAgICAgaWYgKCF0aGlzLmlzQ2hpbGQpIHsKKyAgICAgICAgICB2YXIg
cmV0ID0geworICAgICAgICAgICAgY29tcGlsZXI6IHRoaXMuY29tcGlsZXJJbmZvKCksCisgICAg
ICAgICAgICBtYWluOiBmbgorICAgICAgICAgIH07CisKKyAgICAgICAgICBpZiAodGhpcy5kZWNv
cmF0b3JzKSB7CisgICAgICAgICAgICByZXQubWFpbl9kID0gdGhpcy5kZWNvcmF0b3JzOyAvLyBl
c2xpbnQtZGlzYWJsZS1saW5lIGNhbWVsY2FzZQorICAgICAgICAgICAgcmV0LnVzZURlY29yYXRv
cnMgPSB0cnVlOworICAgICAgICAgIH0KKworICAgICAgICAgIHZhciBfY29udGV4dCA9IHRoaXMu
Y29udGV4dDsKKyAgICAgICAgICB2YXIgcHJvZ3JhbXMgPSBfY29udGV4dC5wcm9ncmFtczsKKyAg
ICAgICAgICB2YXIgZGVjb3JhdG9ycyA9IF9jb250ZXh0LmRlY29yYXRvcnM7CisKKyAgICAgICAg
ICBmb3IgKGkgPSAwLCBsID0gcHJvZ3JhbXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CisgICAgICAg
ICAgICBpZiAocHJvZ3JhbXNbaV0pIHsKKyAgICAgICAgICAgICAgcmV0W2ldID0gcHJvZ3JhbXNb
aV07CisgICAgICAgICAgICAgIGlmIChkZWNvcmF0b3JzW2ldKSB7CisgICAgICAgICAgICAgICAg
cmV0W2kgKyAnX2QnXSA9IGRlY29yYXRvcnNbaV07CisgICAgICAgICAgICAgICAgcmV0LnVzZURl
Y29yYXRvcnMgPSB0cnVlOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAg
ICAgfQorCisgICAgICAgICAgaWYgKHRoaXMuZW52aXJvbm1lbnQudXNlUGFydGlhbCkgeworICAg
ICAgICAgICAgcmV0LnVzZVBhcnRpYWwgPSB0cnVlOworICAgICAgICAgIH0KKyAgICAgICAgICBp
ZiAodGhpcy5vcHRpb25zLmRhdGEpIHsKKyAgICAgICAgICAgIHJldC51c2VEYXRhID0gdHJ1ZTsK
KyAgICAgICAgICB9CisgICAgICAgICAgaWYgKHRoaXMudXNlRGVwdGhzKSB7CisgICAgICAgICAg
ICByZXQudXNlRGVwdGhzID0gdHJ1ZTsKKyAgICAgICAgICB9CisgICAgICAgICAgaWYgKHRoaXMu
dXNlQmxvY2tQYXJhbXMpIHsKKyAgICAgICAgICAgIHJldC51c2VCbG9ja1BhcmFtcyA9IHRydWU7
CisgICAgICAgICAgfQorICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuY29tcGF0KSB7CisgICAg
ICAgICAgICByZXQuY29tcGF0ID0gdHJ1ZTsKKyAgICAgICAgICB9CisKKyAgICAgICAgICBpZiAo
IWFzT2JqZWN0KSB7CisgICAgICAgICAgICByZXQuY29tcGlsZXIgPSBKU09OLnN0cmluZ2lmeShy
ZXQuY29tcGlsZXIpOworCisgICAgICAgICAgICB0aGlzLnNvdXJjZS5jdXJyZW50TG9jYXRpb24g
PSB7IHN0YXJ0OiB7IGxpbmU6IDEsIGNvbHVtbjogMCB9IH07CisgICAgICAgICAgICByZXQgPSB0
aGlzLm9iamVjdExpdGVyYWwocmV0KTsKKworICAgICAgICAgICAgaWYgKG9wdGlvbnMuc3JjTmFt
ZSkgeworICAgICAgICAgICAgICByZXQgPSByZXQudG9TdHJpbmdXaXRoU291cmNlTWFwKHsgZmls
ZTogb3B0aW9ucy5kZXN0TmFtZSB9KTsKKyAgICAgICAgICAgICAgcmV0Lm1hcCA9IHJldC5tYXAg
JiYgcmV0Lm1hcC50b1N0cmluZygpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgcmV0ID0gcmV0LnRvU3RyaW5nKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIHJldC5jb21waWxlck9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7CisgICAg
ICAgICAgfQorCisgICAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICByZXR1cm4gZm47CisgICAgICAgIH0KKyAgICAgIH0sCisKKyAgICAgIHByZWFtYmxlOiBm
dW5jdGlvbiBwcmVhbWJsZSgpIHsKKyAgICAgICAgLy8gdHJhY2sgdGhlIGxhc3QgY29udGV4dCBw
dXNoZWQgaW50byBwbGFjZSB0byBhbGxvdyBza2lwcGluZyB0aGUKKyAgICAgICAgLy8gZ2V0Q29u
dGV4dCBvcGNvZGUgd2hlbiBpdCB3b3VsZCBiZSBhIG5vb3AKKyAgICAgICAgdGhpcy5sYXN0Q29u
dGV4dCA9IDA7CisgICAgICAgIHRoaXMuc291cmNlID0gbmV3IF9jb2RlR2VuMlsnZGVmYXVsdCdd
KHRoaXMub3B0aW9ucy5zcmNOYW1lKTsKKyAgICAgICAgdGhpcy5kZWNvcmF0b3JzID0gbmV3IF9j
b2RlR2VuMlsnZGVmYXVsdCddKHRoaXMub3B0aW9ucy5zcmNOYW1lKTsKKyAgICAgIH0sCisKKyAg
ICAgIGNyZWF0ZUZ1bmN0aW9uQ29udGV4dDogZnVuY3Rpb24gY3JlYXRlRnVuY3Rpb25Db250ZXh0
KGFzT2JqZWN0KSB7CisgICAgICAgIHZhciB2YXJEZWNsYXJhdGlvbnMgPSAnJzsKKworICAgICAg
ICB2YXIgbG9jYWxzID0gdGhpcy5zdGFja1ZhcnMuY29uY2F0KHRoaXMucmVnaXN0ZXJzLmxpc3Qp
OworICAgICAgICBpZiAobG9jYWxzLmxlbmd0aCA+IDApIHsKKyAgICAgICAgICB2YXJEZWNsYXJh
dGlvbnMgKz0gJywgJyArIGxvY2Fscy5qb2luKCcsICcpOworICAgICAgICB9CisKKyAgICAgICAg
Ly8gR2VuZXJhdGUgbWluaW1pemVyIGFsaWFzIG1hcHBpbmdzCisgICAgICAgIC8vCisgICAgICAg
IC8vIFdoZW4gdXNpbmcgdHJ1ZSBTb3VyY2VOb2RlcywgdGhpcyB3aWxsIHVwZGF0ZSBhbGwgcmVm
ZXJlbmNlcyB0byB0aGUgZ2l2ZW4gYWxpYXMKKyAgICAgICAgLy8gYXMgdGhlIHNvdXJjZSBub2Rl
cyBhcmUgcmV1c2VkIGluIHNpdHUuIEZvciB0aGUgbm9uLXNvdXJjZSBub2RlIGNvbXBpbGF0aW9u
IG1vZGUsCisgICAgICAgIC8vIGFsaWFzZXMgd2lsbCBub3QgYmUgdXNlZCwgYnV0IHRoaXMgY2Fz
ZSBpcyBhbHJlYWR5IGJlaW5nIHJ1biBvbiB0aGUgY2xpZW50IGFuZAorICAgICAgICAvLyB3ZSBh
cmVuJ3QgY29uY2VybiBhYm91dCBtaW5pbWl6aW5nIHRoZSB0ZW1wbGF0ZSBzaXplLgorICAgICAg
ICB2YXIgYWxpYXNDb3VudCA9IDA7CisgICAgICAgIGZvciAodmFyIGFsaWFzIGluIHRoaXMuYWxp
YXNlcykgeworICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgZ3VhcmQtZm9yLWluCisg
ICAgICAgICAgdmFyIG5vZGUgPSB0aGlzLmFsaWFzZXNbYWxpYXNdOworCisgICAgICAgICAgaWYg
KHRoaXMuYWxpYXNlcy5oYXNPd25Qcm9wZXJ0eShhbGlhcykgJiYgbm9kZS5jaGlsZHJlbiAmJiBu
b2RlLnJlZmVyZW5jZUNvdW50ID4gMSkgeworICAgICAgICAgICAgdmFyRGVjbGFyYXRpb25zICs9
ICcsIGFsaWFzJyArICsrYWxpYXNDb3VudCArICc9JyArIGFsaWFzOworICAgICAgICAgICAgbm9k
ZS5jaGlsZHJlblswXSA9ICdhbGlhcycgKyBhbGlhc0NvdW50OworICAgICAgICAgIH0KKyAgICAg
ICAgfQorCisgICAgICAgIHZhciBwYXJhbXMgPSBbJ2NvbnRhaW5lcicsICdkZXB0aDAnLCAnaGVs
cGVycycsICdwYXJ0aWFscycsICdkYXRhJ107CisKKyAgICAgICAgaWYgKHRoaXMudXNlQmxvY2tQ
YXJhbXMgfHwgdGhpcy51c2VEZXB0aHMpIHsKKyAgICAgICAgICBwYXJhbXMucHVzaCgnYmxvY2tQ
YXJhbXMnKTsKKyAgICAgICAgfQorICAgICAgICBpZiAodGhpcy51c2VEZXB0aHMpIHsKKyAgICAg
ICAgICBwYXJhbXMucHVzaCgnZGVwdGhzJyk7CisgICAgICAgIH0KKworICAgICAgICAvLyBQZXJm
b3JtIGEgc2Vjb25kIHBhc3Mgb3ZlciB0aGUgb3V0cHV0IHRvIG1lcmdlIGNvbnRlbnQgd2hlbiBw
b3NzaWJsZQorICAgICAgICB2YXIgc291cmNlID0gdGhpcy5tZXJnZVNvdXJjZSh2YXJEZWNsYXJh
dGlvbnMpOworCisgICAgICAgIGlmIChhc09iamVjdCkgeworICAgICAgICAgIHBhcmFtcy5wdXNo
KHNvdXJjZSk7CisKKyAgICAgICAgICByZXR1cm4gRnVuY3Rpb24uYXBwbHkodGhpcywgcGFyYW1z
KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICByZXR1cm4gdGhpcy5zb3VyY2Uud3JhcChb
J2Z1bmN0aW9uKCcsIHBhcmFtcy5qb2luKCcsJyksICcpIHtcbiAgJywgc291cmNlLCAnfSddKTsK
KyAgICAgICAgfQorICAgICAgfSwKKyAgICAgIG1lcmdlU291cmNlOiBmdW5jdGlvbiBtZXJnZVNv
dXJjZSh2YXJEZWNsYXJhdGlvbnMpIHsKKyAgICAgICAgdmFyIGlzU2ltcGxlID0gdGhpcy5lbnZp
cm9ubWVudC5pc1NpbXBsZSwKKyAgICAgICAgICAgIGFwcGVuZE9ubHkgPSAhdGhpcy5mb3JjZUJ1
ZmZlciwKKyAgICAgICAgICAgIGFwcGVuZEZpcnN0ID0gdW5kZWZpbmVkLAorICAgICAgICAgICAg
c291cmNlU2VlbiA9IHVuZGVmaW5lZCwKKyAgICAgICAgICAgIGJ1ZmZlclN0YXJ0ID0gdW5kZWZp
bmVkLAorICAgICAgICAgICAgYnVmZmVyRW5kID0gdW5kZWZpbmVkOworICAgICAgICB0aGlzLnNv
dXJjZS5lYWNoKGZ1bmN0aW9uIChsaW5lKSB7CisgICAgICAgICAgaWYgKGxpbmUuYXBwZW5kVG9C
dWZmZXIpIHsKKyAgICAgICAgICAgIGlmIChidWZmZXJTdGFydCkgeworICAgICAgICAgICAgICBs
aW5lLnByZXBlbmQoJyAgKyAnKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
IGJ1ZmZlclN0YXJ0ID0gbGluZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJ1ZmZlckVu
ZCA9IGxpbmU7CisgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChidWZmZXJTdGFy
dCkgeworICAgICAgICAgICAgICBpZiAoIXNvdXJjZVNlZW4pIHsKKyAgICAgICAgICAgICAgICBh
cHBlbmRGaXJzdCA9IHRydWU7CisgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgYnVmZmVyU3RhcnQucHJlcGVuZCgnYnVmZmVyICs9ICcpOworICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgIGJ1ZmZlckVuZC5hZGQoJzsnKTsKKyAgICAgICAgICAgICAgYnVmZmVyU3Rh
cnQgPSBidWZmZXJFbmQgPSB1bmRlZmluZWQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHNvdXJjZVNlZW4gPSB0cnVlOworICAgICAgICAgICAgaWYgKCFpc1NpbXBsZSkgeworICAgICAg
ICAgICAgICBhcHBlbmRPbmx5ID0gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQor
ICAgICAgICB9KTsKKworICAgICAgICBpZiAoYXBwZW5kT25seSkgeworICAgICAgICAgIGlmIChi
dWZmZXJTdGFydCkgeworICAgICAgICAgICAgYnVmZmVyU3RhcnQucHJlcGVuZCgncmV0dXJuICcp
OworICAgICAgICAgICAgYnVmZmVyRW5kLmFkZCgnOycpOworICAgICAgICAgIH0gZWxzZSBpZiAo
IXNvdXJjZVNlZW4pIHsKKyAgICAgICAgICAgIHRoaXMuc291cmNlLnB1c2goJ3JldHVybiAiIjsn
KTsKKyAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgdmFyRGVjbGFyYXRp
b25zICs9ICcsIGJ1ZmZlciA9ICcgKyAoYXBwZW5kRmlyc3QgPyAnJyA6IHRoaXMuaW5pdGlhbGl6
ZUJ1ZmZlcigpKTsKKworICAgICAgICAgIGlmIChidWZmZXJTdGFydCkgeworICAgICAgICAgICAg
YnVmZmVyU3RhcnQucHJlcGVuZCgncmV0dXJuIGJ1ZmZlciArICcpOworICAgICAgICAgICAgYnVm
ZmVyRW5kLmFkZCgnOycpOworICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0aGlzLnNv
dXJjZS5wdXNoKCdyZXR1cm4gYnVmZmVyOycpOworICAgICAgICAgIH0KKyAgICAgICAgfQorCisg
ICAgICAgIGlmICh2YXJEZWNsYXJhdGlvbnMpIHsKKyAgICAgICAgICB0aGlzLnNvdXJjZS5wcmVw
ZW5kKCd2YXIgJyArIHZhckRlY2xhcmF0aW9ucy5zdWJzdHJpbmcoMikgKyAoYXBwZW5kRmlyc3Qg
PyAnJyA6ICc7XG4nKSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdGhpcy5zb3VyY2Uu
bWVyZ2UoKTsKKyAgICAgIH0sCisKKyAgICAgIC8vIFtibG9ja1ZhbHVlXQorICAgICAgLy8KKyAg
ICAgIC8vIE9uIHN0YWNrLCBiZWZvcmU6IGhhc2gsIGludmVyc2UsIHByb2dyYW0sIHZhbHVlCisg
ICAgICAvLyBPbiBzdGFjaywgYWZ0ZXI6IHJldHVybiB2YWx1ZSBvZiBibG9ja0hlbHBlck1pc3Np
bmcKKyAgICAgIC8vCisgICAgICAvLyBUaGUgcHVycG9zZSBvZiB0aGlzIG9wY29kZSBpcyB0byB0
YWtlIGEgYmxvY2sgb2YgdGhlIGZvcm0KKyAgICAgIC8vIGB7eyN0aGlzLmZvb319Li4ue3svdGhp
cy5mb299fWAsIHJlc29sdmUgdGhlIHZhbHVlIG9mIGBmb29gLCBhbmQKKyAgICAgIC8vIHJlcGxh
Y2UgaXQgb24gdGhlIHN0YWNrIHdpdGggdGhlIHJlc3VsdCBvZiBwcm9wZXJseQorICAgICAgLy8g
aW52b2tpbmcgYmxvY2tIZWxwZXJNaXNzaW5nLgorICAgICAgYmxvY2tWYWx1ZTogZnVuY3Rpb24g
YmxvY2tWYWx1ZShuYW1lKSB7CisgICAgICAgIHZhciBibG9ja0hlbHBlck1pc3NpbmcgPSB0aGlz
LmFsaWFzYWJsZSgnaGVscGVycy5ibG9ja0hlbHBlck1pc3NpbmcnKSwKKyAgICAgICAgICAgIHBh
cmFtcyA9IFt0aGlzLmNvbnRleHROYW1lKDApXTsKKyAgICAgICAgdGhpcy5zZXR1cEhlbHBlckFy
Z3MobmFtZSwgMCwgcGFyYW1zKTsKKworICAgICAgICB2YXIgYmxvY2tOYW1lID0gdGhpcy5wb3BT
dGFjaygpOworICAgICAgICBwYXJhbXMuc3BsaWNlKDEsIDAsIGJsb2NrTmFtZSk7CisKKyAgICAg
ICAgdGhpcy5wdXNoKHRoaXMuc291cmNlLmZ1bmN0aW9uQ2FsbChibG9ja0hlbHBlck1pc3Npbmcs
ICdjYWxsJywgcGFyYW1zKSk7CisgICAgICB9LAorCisgICAgICAvLyBbYW1iaWd1b3VzQmxvY2tW
YWx1ZV0KKyAgICAgIC8vCisgICAgICAvLyBPbiBzdGFjaywgYmVmb3JlOiBoYXNoLCBpbnZlcnNl
LCBwcm9ncmFtLCB2YWx1ZQorICAgICAgLy8gQ29tcGlsZXIgdmFsdWUsIGJlZm9yZTogbGFzdEhl
bHBlcj12YWx1ZSBvZiBsYXN0IGZvdW5kIGhlbHBlciwgaWYgYW55CisgICAgICAvLyBPbiBzdGFj
aywgYWZ0ZXIsIGlmIG5vIGxhc3RIZWxwZXI6IHNhbWUgYXMgW2Jsb2NrVmFsdWVdCisgICAgICAv
LyBPbiBzdGFjaywgYWZ0ZXIsIGlmIGxhc3RIZWxwZXI6IHZhbHVlCisgICAgICBhbWJpZ3VvdXNC
bG9ja1ZhbHVlOiBmdW5jdGlvbiBhbWJpZ3VvdXNCbG9ja1ZhbHVlKCkgeworICAgICAgICAvLyBX
ZSdyZSBiZWluZyBhIGJpdCBjaGVla3kgYW5kIHJldXNpbmcgdGhlIG9wdGlvbnMgdmFsdWUgZnJv
bSB0aGUgcHJpb3IgZXhlYworICAgICAgICB2YXIgYmxvY2tIZWxwZXJNaXNzaW5nID0gdGhpcy5h
bGlhc2FibGUoJ2hlbHBlcnMuYmxvY2tIZWxwZXJNaXNzaW5nJyksCisgICAgICAgICAgICBwYXJh
bXMgPSBbdGhpcy5jb250ZXh0TmFtZSgwKV07CisgICAgICAgIHRoaXMuc2V0dXBIZWxwZXJBcmdz
KCcnLCAwLCBwYXJhbXMsIHRydWUpOworCisgICAgICAgIHRoaXMuZmx1c2hJbmxpbmUoKTsKKwor
ICAgICAgICB2YXIgY3VycmVudCA9IHRoaXMudG9wU3RhY2soKTsKKyAgICAgICAgcGFyYW1zLnNw
bGljZSgxLCAwLCBjdXJyZW50KTsKKworICAgICAgICB0aGlzLnB1c2hTb3VyY2UoWydpZiAoIScs
IHRoaXMubGFzdEhlbHBlciwgJykgeyAnLCBjdXJyZW50LCAnID0gJywgdGhpcy5zb3VyY2UuZnVu
Y3Rpb25DYWxsKGJsb2NrSGVscGVyTWlzc2luZywgJ2NhbGwnLCBwYXJhbXMpLCAnfSddKTsKKyAg
ICAgIH0sCisKKyAgICAgIC8vIFthcHBlbmRDb250ZW50XQorICAgICAgLy8KKyAgICAgIC8vIE9u
IHN0YWNrLCBiZWZvcmU6IC4uLgorICAgICAgLy8gT24gc3RhY2ssIGFmdGVyOiAuLi4KKyAgICAg
IC8vCisgICAgICAvLyBBcHBlbmRzIHRoZSBzdHJpbmcgdmFsdWUgb2YgYGNvbnRlbnRgIHRvIHRo
ZSBjdXJyZW50IGJ1ZmZlcgorICAgICAgYXBwZW5kQ29udGVudDogZnVuY3Rpb24gYXBwZW5kQ29u
dGVudChjb250ZW50KSB7CisgICAgICAgIGlmICh0aGlzLnBlbmRpbmdDb250ZW50KSB7CisgICAg
ICAgICAgY29udGVudCA9IHRoaXMucGVuZGluZ0NvbnRlbnQgKyBjb250ZW50OworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgIHRoaXMucGVuZGluZ0xvY2F0aW9uID0gdGhpcy5zb3VyY2UuY3Vy
cmVudExvY2F0aW9uOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5wZW5kaW5nQ29udGVudCA9
IGNvbnRlbnQ7CisgICAgICB9LAorCisgICAgICAvLyBbYXBwZW5kXQorICAgICAgLy8KKyAgICAg
IC8vIE9uIHN0YWNrLCBiZWZvcmU6IHZhbHVlLCAuLi4KKyAgICAgIC8vIE9uIHN0YWNrLCBhZnRl
cjogLi4uCisgICAgICAvLworICAgICAgLy8gQ29lcmNlcyBgdmFsdWVgIHRvIGEgU3RyaW5nIGFu
ZCBhcHBlbmRzIGl0IHRvIHRoZSBjdXJyZW50IGJ1ZmZlci4KKyAgICAgIC8vCisgICAgICAvLyBJ
ZiBgdmFsdWVgIGlzIHRydXRoeSwgb3IgMCwgaXQgaXMgY29lcmNlZCBpbnRvIGEgc3RyaW5nIGFu
ZCBhcHBlbmRlZAorICAgICAgLy8gT3RoZXJ3aXNlLCB0aGUgZW1wdHkgc3RyaW5nIGlzIGFwcGVu
ZGVkCisgICAgICBhcHBlbmQ6IGZ1bmN0aW9uIGFwcGVuZCgpIHsKKyAgICAgICAgaWYgKHRoaXMu
aXNJbmxpbmUoKSkgeworICAgICAgICAgIHRoaXMucmVwbGFjZVN0YWNrKGZ1bmN0aW9uIChjdXJy
ZW50KSB7CisgICAgICAgICAgICByZXR1cm4gWycgIT0gbnVsbCA/ICcsIGN1cnJlbnQsICcgOiAi
IiddOworICAgICAgICAgIH0pOworCisgICAgICAgICAgdGhpcy5wdXNoU291cmNlKHRoaXMuYXBw
ZW5kVG9CdWZmZXIodGhpcy5wb3BTdGFjaygpKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgdmFyIGxvY2FsID0gdGhpcy5wb3BTdGFjaygpOworICAgICAgICAgIHRoaXMucHVzaFNvdXJj
ZShbJ2lmICgnLCBsb2NhbCwgJyAhPSBudWxsKSB7ICcsIHRoaXMuYXBwZW5kVG9CdWZmZXIobG9j
YWwsIHVuZGVmaW5lZCwgdHJ1ZSksICcgfSddKTsKKyAgICAgICAgICBpZiAodGhpcy5lbnZpcm9u
bWVudC5pc1NpbXBsZSkgeworICAgICAgICAgICAgdGhpcy5wdXNoU291cmNlKFsnZWxzZSB7ICcs
IHRoaXMuYXBwZW5kVG9CdWZmZXIoIicnIiwgdW5kZWZpbmVkLCB0cnVlKSwgJyB9J10pOworICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfSwKKworICAgICAgLy8gW2FwcGVuZEVzY2FwZWRd
CisgICAgICAvLworICAgICAgLy8gT24gc3RhY2ssIGJlZm9yZTogdmFsdWUsIC4uLgorICAgICAg
Ly8gT24gc3RhY2ssIGFmdGVyOiAuLi4KKyAgICAgIC8vCisgICAgICAvLyBFc2NhcGUgYHZhbHVl
YCBhbmQgYXBwZW5kIGl0IHRvIHRoZSBidWZmZXIKKyAgICAgIGFwcGVuZEVzY2FwZWQ6IGZ1bmN0
aW9uIGFwcGVuZEVzY2FwZWQoKSB7CisgICAgICAgIHRoaXMucHVzaFNvdXJjZSh0aGlzLmFwcGVu
ZFRvQnVmZmVyKFt0aGlzLmFsaWFzYWJsZSgnY29udGFpbmVyLmVzY2FwZUV4cHJlc3Npb24nKSwg
JygnLCB0aGlzLnBvcFN0YWNrKCksICcpJ10pKTsKKyAgICAgIH0sCisKKyAgICAgIC8vIFtnZXRD
b250ZXh0XQorICAgICAgLy8KKyAgICAgIC8vIE9uIHN0YWNrLCBiZWZvcmU6IC4uLgorICAgICAg
Ly8gT24gc3RhY2ssIGFmdGVyOiAuLi4KKyAgICAgIC8vIENvbXBpbGVyIHZhbHVlLCBhZnRlcjog
bGFzdENvbnRleHQ9ZGVwdGgKKyAgICAgIC8vCisgICAgICAvLyBTZXQgdGhlIHZhbHVlIG9mIHRo
ZSBgbGFzdENvbnRleHRgIGNvbXBpbGVyIHZhbHVlIHRvIHRoZSBkZXB0aAorICAgICAgZ2V0Q29u
dGV4dDogZnVuY3Rpb24gZ2V0Q29udGV4dChkZXB0aCkgeworICAgICAgICB0aGlzLmxhc3RDb250
ZXh0ID0gZGVwdGg7CisgICAgICB9LAorCisgICAgICAvLyBbcHVzaENvbnRleHRdCisgICAgICAv
LworICAgICAgLy8gT24gc3RhY2ssIGJlZm9yZTogLi4uCisgICAgICAvLyBPbiBzdGFjaywgYWZ0
ZXI6IGN1cnJlbnRDb250ZXh0LCAuLi4KKyAgICAgIC8vCisgICAgICAvLyBQdXNoZXMgdGhlIHZh
bHVlIG9mIHRoZSBjdXJyZW50IGNvbnRleHQgb250byB0aGUgc3RhY2suCisgICAgICBwdXNoQ29u
dGV4dDogZnVuY3Rpb24gcHVzaENvbnRleHQoKSB7CisgICAgICAgIHRoaXMucHVzaFN0YWNrTGl0
ZXJhbCh0aGlzLmNvbnRleHROYW1lKHRoaXMubGFzdENvbnRleHQpKTsKKyAgICAgIH0sCisKKyAg
ICAgIC8vIFtsb29rdXBPbkNvbnRleHRdCisgICAgICAvLworICAgICAgLy8gT24gc3RhY2ssIGJl
Zm9yZTogLi4uCisgICAgICAvLyBPbiBzdGFjaywgYWZ0ZXI6IGN1cnJlbnRDb250ZXh0W25hbWVd
LCAuLi4KKyAgICAgIC8vCisgICAgICAvLyBMb29rcyB1cCB0aGUgdmFsdWUgb2YgYG5hbWVgIG9u
IHRoZSBjdXJyZW50IGNvbnRleHQgYW5kIHB1c2hlcworICAgICAgLy8gaXQgb250byB0aGUgc3Rh
Y2suCisgICAgICBsb29rdXBPbkNvbnRleHQ6IGZ1bmN0aW9uIGxvb2t1cE9uQ29udGV4dChwYXJ0
cywgZmFsc3ksIHN0cmljdCwgc2NvcGVkKSB7CisgICAgICAgIHZhciBpID0gMDsKKworICAgICAg
ICBpZiAoIXNjb3BlZCAmJiB0aGlzLm9wdGlvbnMuY29tcGF0ICYmICF0aGlzLmxhc3RDb250ZXh0
KSB7CisgICAgICAgICAgLy8gVGhlIGRlcHRoZWQgcXVlcnkgaXMgZXhwZWN0ZWQgdG8gaGFuZGxl
IHRoZSB1bmRlZmluZWQgbG9naWMgZm9yIHRoZSByb290IGxldmVsIHRoYXQKKyAgICAgICAgICAv
LyBpcyBpbXBsZW1lbnRlZCBiZWxvdywgc28gd2UgZXZhbHVhdGUgdGhhdCBkaXJlY3RseSBpbiBj
b21wYXQgbW9kZQorICAgICAgICAgIHRoaXMucHVzaCh0aGlzLmRlcHRoZWRMb29rdXAocGFydHNb
aSsrXSkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIHRoaXMucHVzaENvbnRleHQoKTsK
KyAgICAgICAgfQorCisgICAgICAgIHRoaXMucmVzb2x2ZVBhdGgoJ2NvbnRleHQnLCBwYXJ0cywg
aSwgZmFsc3ksIHN0cmljdCk7CisgICAgICB9LAorCisgICAgICAvLyBbbG9va3VwQmxvY2tQYXJh
bV0KKyAgICAgIC8vCisgICAgICAvLyBPbiBzdGFjaywgYmVmb3JlOiAuLi4KKyAgICAgIC8vIE9u
IHN0YWNrLCBhZnRlcjogYmxvY2tQYXJhbVtuYW1lXSwgLi4uCisgICAgICAvLworICAgICAgLy8g
TG9va3MgdXAgdGhlIHZhbHVlIG9mIGBwYXJ0c2Agb24gdGhlIGdpdmVuIGJsb2NrIHBhcmFtIGFu
ZCBwdXNoZXMKKyAgICAgIC8vIGl0IG9udG8gdGhlIHN0YWNrLgorICAgICAgbG9va3VwQmxvY2tQ
YXJhbTogZnVuY3Rpb24gbG9va3VwQmxvY2tQYXJhbShibG9ja1BhcmFtSWQsIHBhcnRzKSB7Cisg
ICAgICAgIHRoaXMudXNlQmxvY2tQYXJhbXMgPSB0cnVlOworCisgICAgICAgIHRoaXMucHVzaChb
J2Jsb2NrUGFyYW1zWycsIGJsb2NrUGFyYW1JZFswXSwgJ11bJywgYmxvY2tQYXJhbUlkWzFdLCAn
XSddKTsKKyAgICAgICAgdGhpcy5yZXNvbHZlUGF0aCgnY29udGV4dCcsIHBhcnRzLCAxKTsKKyAg
ICAgIH0sCisKKyAgICAgIC8vIFtsb29rdXBEYXRhXQorICAgICAgLy8KKyAgICAgIC8vIE9uIHN0
YWNrLCBiZWZvcmU6IC4uLgorICAgICAgLy8gT24gc3RhY2ssIGFmdGVyOiBkYXRhLCAuLi4KKyAg
ICAgIC8vCisgICAgICAvLyBQdXNoIHRoZSBkYXRhIGxvb2t1cCBvcGVyYXRvcgorICAgICAgbG9v
a3VwRGF0YTogZnVuY3Rpb24gbG9va3VwRGF0YShkZXB0aCwgcGFydHMsIHN0cmljdCkgeworICAg
ICAgICBpZiAoIWRlcHRoKSB7CisgICAgICAgICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFsKCdkYXRh
Jyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFsKCdj
b250YWluZXIuZGF0YShkYXRhLCAnICsgZGVwdGggKyAnKScpOworICAgICAgICB9CisKKyAgICAg
ICAgdGhpcy5yZXNvbHZlUGF0aCgnZGF0YScsIHBhcnRzLCAwLCB0cnVlLCBzdHJpY3QpOworICAg
ICAgfSwKKworICAgICAgcmVzb2x2ZVBhdGg6IGZ1bmN0aW9uIHJlc29sdmVQYXRoKHR5cGUsIHBh
cnRzLCBpLCBmYWxzeSwgc3RyaWN0KSB7CisgICAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0
CisKKyAgICAgICAgdmFyIF90aGlzID0gdGhpczsKKworICAgICAgICBpZiAodGhpcy5vcHRpb25z
LnN0cmljdCB8fCB0aGlzLm9wdGlvbnMuYXNzdW1lT2JqZWN0cykgeworICAgICAgICAgIHRoaXMu
cHVzaChzdHJpY3RMb29rdXAodGhpcy5vcHRpb25zLnN0cmljdCAmJiBzdHJpY3QsIHRoaXMsIHBh
cnRzLCB0eXBlKSk7CisgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdmFy
IGxlbiA9IHBhcnRzLmxlbmd0aDsKKyAgICAgICAgZm9yICg7IGkgPCBsZW47IGkrKykgeworICAg
ICAgICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLWxvb3AtZnVuYyAqLworICAgICAgICAgIHRoaXMu
cmVwbGFjZVN0YWNrKGZ1bmN0aW9uIChjdXJyZW50KSB7CisgICAgICAgICAgICB2YXIgbG9va3Vw
ID0gX3RoaXMubmFtZUxvb2t1cChjdXJyZW50LCBwYXJ0c1tpXSwgdHlwZSk7CisgICAgICAgICAg
ICAvLyBXZSB3YW50IHRvIGVuc3VyZSB0aGF0IHplcm8gYW5kIGZhbHNlIGFyZSBoYW5kbGVkIHBy
b3Blcmx5IGlmIHRoZSBjb250ZXh0IChmYWxzeSBmbGFnKQorICAgICAgICAgICAgLy8gbmVlZHMg
dG8gaGF2ZSB0aGUgc3BlY2lhbCBoYW5kbGluZyBmb3IgdGhlc2UgdmFsdWVzLgorICAgICAgICAg
ICAgaWYgKCFmYWxzeSkgeworICAgICAgICAgICAgICByZXR1cm4gWycgIT0gbnVsbCA/ICcsIGxv
b2t1cCwgJyA6ICcsIGN1cnJlbnRdOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgLy8gT3RoZXJ3aXNlIHdlIGNhbiB1c2UgZ2VuZXJpYyBmYWxzeSBoYW5kbGluZworICAgICAg
ICAgICAgICByZXR1cm4gWycgJiYgJywgbG9va3VwXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICB9KTsKKyAgICAgICAgICAvKiBlc2xpbnQtZW5hYmxlIG5vLWxvb3AtZnVuYyAqLworICAgICAg
ICB9CisgICAgICB9LAorCisgICAgICAvLyBbcmVzb2x2ZVBvc3NpYmxlTGFtYmRhXQorICAgICAg
Ly8KKyAgICAgIC8vIE9uIHN0YWNrLCBiZWZvcmU6IHZhbHVlLCAuLi4KKyAgICAgIC8vIE9uIHN0
YWNrLCBhZnRlcjogcmVzb2x2ZWQgdmFsdWUsIC4uLgorICAgICAgLy8KKyAgICAgIC8vIElmIHRo
ZSBgdmFsdWVgIGlzIGEgbGFtYmRhLCByZXBsYWNlIGl0IG9uIHRoZSBzdGFjayBieQorICAgICAg
Ly8gdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgbGFtYmRhCisgICAgICByZXNvbHZlUG9zc2libGVM
YW1iZGE6IGZ1bmN0aW9uIHJlc29sdmVQb3NzaWJsZUxhbWJkYSgpIHsKKyAgICAgICAgdGhpcy5w
dXNoKFt0aGlzLmFsaWFzYWJsZSgnY29udGFpbmVyLmxhbWJkYScpLCAnKCcsIHRoaXMucG9wU3Rh
Y2soKSwgJywgJywgdGhpcy5jb250ZXh0TmFtZSgwKSwgJyknXSk7CisgICAgICB9LAorCisgICAg
ICAvLyBbcHVzaFN0cmluZ1BhcmFtXQorICAgICAgLy8KKyAgICAgIC8vIE9uIHN0YWNrLCBiZWZv
cmU6IC4uLgorICAgICAgLy8gT24gc3RhY2ssIGFmdGVyOiBzdHJpbmcsIGN1cnJlbnRDb250ZXh0
LCAuLi4KKyAgICAgIC8vCisgICAgICAvLyBUaGlzIG9wY29kZSBpcyBkZXNpZ25lZCBmb3IgdXNl
IGluIHN0cmluZyBtb2RlLCB3aGljaAorICAgICAgLy8gcHJvdmlkZXMgdGhlIHN0cmluZyB2YWx1
ZSBvZiBhIHBhcmFtZXRlciBhbG9uZyB3aXRoIGl0cworICAgICAgLy8gZGVwdGggcmF0aGVyIHRo
YW4gcmVzb2x2aW5nIGl0IGltbWVkaWF0ZWx5LgorICAgICAgcHVzaFN0cmluZ1BhcmFtOiBmdW5j
dGlvbiBwdXNoU3RyaW5nUGFyYW0oc3RyaW5nLCB0eXBlKSB7CisgICAgICAgIHRoaXMucHVzaENv
bnRleHQoKTsKKyAgICAgICAgdGhpcy5wdXNoU3RyaW5nKHR5cGUpOworCisgICAgICAgIC8vIElm
IGl0J3MgYSBzdWJleHByZXNzaW9uLCB0aGUgc3RyaW5nIHJlc3VsdAorICAgICAgICAvLyB3aWxs
IGJlIHB1c2hlZCBhZnRlciB0aGlzIG9wY29kZS4KKyAgICAgICAgaWYgKHR5cGUgIT09ICdTdWJF
eHByZXNzaW9uJykgeworICAgICAgICAgIGlmICh0eXBlb2Ygc3RyaW5nID09PSAnc3RyaW5nJykg
eworICAgICAgICAgICAgdGhpcy5wdXNoU3RyaW5nKHN0cmluZyk7CisgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIHRoaXMucHVzaFN0YWNrTGl0ZXJhbChzdHJpbmcpOworICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgfSwKKworICAgICAgZW1wdHlIYXNoOiBmdW5jdGlvbiBlbXB0
eUhhc2gob21pdEVtcHR5KSB7CisgICAgICAgIGlmICh0aGlzLnRyYWNrSWRzKSB7CisgICAgICAg
ICAgdGhpcy5wdXNoKCd7fScpOyAvLyBoYXNoSWRzCisgICAgICAgIH0KKyAgICAgICAgaWYgKHRo
aXMuc3RyaW5nUGFyYW1zKSB7CisgICAgICAgICAgdGhpcy5wdXNoKCd7fScpOyAvLyBoYXNoQ29u
dGV4dHMKKyAgICAgICAgICB0aGlzLnB1c2goJ3t9Jyk7IC8vIGhhc2hUeXBlcworICAgICAgICB9
CisgICAgICAgIHRoaXMucHVzaFN0YWNrTGl0ZXJhbChvbWl0RW1wdHkgPyAndW5kZWZpbmVkJyA6
ICd7fScpOworICAgICAgfSwKKyAgICAgIHB1c2hIYXNoOiBmdW5jdGlvbiBwdXNoSGFzaCgpIHsK
KyAgICAgICAgaWYgKHRoaXMuaGFzaCkgeworICAgICAgICAgIHRoaXMuaGFzaGVzLnB1c2godGhp
cy5oYXNoKTsKKyAgICAgICAgfQorICAgICAgICB0aGlzLmhhc2ggPSB7IHZhbHVlczogW10sIHR5
cGVzOiBbXSwgY29udGV4dHM6IFtdLCBpZHM6IFtdIH07CisgICAgICB9LAorICAgICAgcG9wSGFz
aDogZnVuY3Rpb24gcG9wSGFzaCgpIHsKKyAgICAgICAgdmFyIGhhc2ggPSB0aGlzLmhhc2g7Cisg
ICAgICAgIHRoaXMuaGFzaCA9IHRoaXMuaGFzaGVzLnBvcCgpOworCisgICAgICAgIGlmICh0aGlz
LnRyYWNrSWRzKSB7CisgICAgICAgICAgdGhpcy5wdXNoKHRoaXMub2JqZWN0TGl0ZXJhbChoYXNo
LmlkcykpOworICAgICAgICB9CisgICAgICAgIGlmICh0aGlzLnN0cmluZ1BhcmFtcykgeworICAg
ICAgICAgIHRoaXMucHVzaCh0aGlzLm9iamVjdExpdGVyYWwoaGFzaC5jb250ZXh0cykpOworICAg
ICAgICAgIHRoaXMucHVzaCh0aGlzLm9iamVjdExpdGVyYWwoaGFzaC50eXBlcykpOworICAgICAg
ICB9CisKKyAgICAgICAgdGhpcy5wdXNoKHRoaXMub2JqZWN0TGl0ZXJhbChoYXNoLnZhbHVlcykp
OworICAgICAgfSwKKworICAgICAgLy8gW3B1c2hTdHJpbmddCisgICAgICAvLworICAgICAgLy8g
T24gc3RhY2ssIGJlZm9yZTogLi4uCisgICAgICAvLyBPbiBzdGFjaywgYWZ0ZXI6IHF1b3RlZFN0
cmluZyhzdHJpbmcpLCAuLi4KKyAgICAgIC8vCisgICAgICAvLyBQdXNoIGEgcXVvdGVkIHZlcnNp
b24gb2YgYHN0cmluZ2Agb250byB0aGUgc3RhY2sKKyAgICAgIHB1c2hTdHJpbmc6IGZ1bmN0aW9u
IHB1c2hTdHJpbmcoc3RyaW5nKSB7CisgICAgICAgIHRoaXMucHVzaFN0YWNrTGl0ZXJhbCh0aGlz
LnF1b3RlZFN0cmluZyhzdHJpbmcpKTsKKyAgICAgIH0sCisKKyAgICAgIC8vIFtwdXNoTGl0ZXJh
bF0KKyAgICAgIC8vCisgICAgICAvLyBPbiBzdGFjaywgYmVmb3JlOiAuLi4KKyAgICAgIC8vIE9u
IHN0YWNrLCBhZnRlcjogdmFsdWUsIC4uLgorICAgICAgLy8KKyAgICAgIC8vIFB1c2hlcyBhIHZh
bHVlIG9udG8gdGhlIHN0YWNrLiBUaGlzIG9wZXJhdGlvbiBwcmV2ZW50cworICAgICAgLy8gdGhl
IGNvbXBpbGVyIGZyb20gY3JlYXRpbmcgYSB0ZW1wb3JhcnkgdmFyaWFibGUgdG8gaG9sZAorICAg
ICAgLy8gaXQuCisgICAgICBwdXNoTGl0ZXJhbDogZnVuY3Rpb24gcHVzaExpdGVyYWwodmFsdWUp
IHsKKyAgICAgICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFsKHZhbHVlKTsKKyAgICAgIH0sCisKKyAg
ICAgIC8vIFtwdXNoUHJvZ3JhbV0KKyAgICAgIC8vCisgICAgICAvLyBPbiBzdGFjaywgYmVmb3Jl
OiAuLi4KKyAgICAgIC8vIE9uIHN0YWNrLCBhZnRlcjogcHJvZ3JhbShndWlkKSwgLi4uCisgICAg
ICAvLworICAgICAgLy8gUHVzaCBhIHByb2dyYW0gZXhwcmVzc2lvbiBvbnRvIHRoZSBzdGFjay4g
VGhpcyB0YWtlcworICAgICAgLy8gYSBjb21waWxlLXRpbWUgZ3VpZCBhbmQgY29udmVydHMgaXQg
aW50byBhIHJ1bnRpbWUtYWNjZXNzaWJsZQorICAgICAgLy8gZXhwcmVzc2lvbi4KKyAgICAgIHB1
c2hQcm9ncmFtOiBmdW5jdGlvbiBwdXNoUHJvZ3JhbShndWlkKSB7CisgICAgICAgIGlmIChndWlk
ICE9IG51bGwpIHsKKyAgICAgICAgICB0aGlzLnB1c2hTdGFja0xpdGVyYWwodGhpcy5wcm9ncmFt
RXhwcmVzc2lvbihndWlkKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgdGhpcy5wdXNo
U3RhY2tMaXRlcmFsKG51bGwpOworICAgICAgICB9CisgICAgICB9LAorCisgICAgICAvLyBbcmVn
aXN0ZXJEZWNvcmF0b3JdCisgICAgICAvLworICAgICAgLy8gT24gc3RhY2ssIGJlZm9yZTogaGFz
aCwgcHJvZ3JhbSwgcGFyYW1zLi4uLCAuLi4KKyAgICAgIC8vIE9uIHN0YWNrLCBhZnRlcjogLi4u
CisgICAgICAvLworICAgICAgLy8gUG9wcyBvZmYgdGhlIGRlY29yYXRvcidzIHBhcmFtZXRlcnMs
IGludm9rZXMgdGhlIGRlY29yYXRvciwKKyAgICAgIC8vIGFuZCBpbnNlcnRzIHRoZSBkZWNvcmF0
b3IgaW50byB0aGUgZGVjb3JhdG9ycyBsaXN0LgorICAgICAgcmVnaXN0ZXJEZWNvcmF0b3I6IGZ1
bmN0aW9uIHJlZ2lzdGVyRGVjb3JhdG9yKHBhcmFtU2l6ZSwgbmFtZSkgeworICAgICAgICB2YXIg
Zm91bmREZWNvcmF0b3IgPSB0aGlzLm5hbWVMb29rdXAoJ2RlY29yYXRvcnMnLCBuYW1lLCAnZGVj
b3JhdG9yJyksCisgICAgICAgICAgICBvcHRpb25zID0gdGhpcy5zZXR1cEhlbHBlckFyZ3MobmFt
ZSwgcGFyYW1TaXplKTsKKworICAgICAgICB0aGlzLmRlY29yYXRvcnMucHVzaChbJ2ZuID0gJywg
dGhpcy5kZWNvcmF0b3JzLmZ1bmN0aW9uQ2FsbChmb3VuZERlY29yYXRvciwgJycsIFsnZm4nLCAn
cHJvcHMnLCAnY29udGFpbmVyJywgb3B0aW9uc10pLCAnIHx8IGZuOyddKTsKKyAgICAgIH0sCisK
KyAgICAgIC8vIFtpbnZva2VIZWxwZXJdCisgICAgICAvLworICAgICAgLy8gT24gc3RhY2ssIGJl
Zm9yZTogaGFzaCwgaW52ZXJzZSwgcHJvZ3JhbSwgcGFyYW1zLi4uLCAuLi4KKyAgICAgIC8vIE9u
IHN0YWNrLCBhZnRlcjogcmVzdWx0IG9mIGhlbHBlciBpbnZvY2F0aW9uCisgICAgICAvLworICAg
ICAgLy8gUG9wcyBvZmYgdGhlIGhlbHBlcidzIHBhcmFtZXRlcnMsIGludm9rZXMgdGhlIGhlbHBl
ciwKKyAgICAgIC8vIGFuZCBwdXNoZXMgdGhlIGhlbHBlcidzIHJldHVybiB2YWx1ZSBvbnRvIHRo
ZSBzdGFjay4KKyAgICAgIC8vCisgICAgICAvLyBJZiB0aGUgaGVscGVyIGlzIG5vdCBmb3VuZCwg
YGhlbHBlck1pc3NpbmdgIGlzIGNhbGxlZC4KKyAgICAgIGludm9rZUhlbHBlcjogZnVuY3Rpb24g
aW52b2tlSGVscGVyKHBhcmFtU2l6ZSwgbmFtZSwgaXNTaW1wbGUpIHsKKyAgICAgICAgdmFyIG5v
bkhlbHBlciA9IHRoaXMucG9wU3RhY2soKSwKKyAgICAgICAgICAgIGhlbHBlciA9IHRoaXMuc2V0
dXBIZWxwZXIocGFyYW1TaXplLCBuYW1lKSwKKyAgICAgICAgICAgIHNpbXBsZSA9IGlzU2ltcGxl
ID8gW2hlbHBlci5uYW1lLCAnIHx8ICddIDogJyc7CisKKyAgICAgICAgdmFyIGxvb2t1cCA9IFsn
KCddLmNvbmNhdChzaW1wbGUsIG5vbkhlbHBlcik7CisgICAgICAgIGlmICghdGhpcy5vcHRpb25z
LnN0cmljdCkgeworICAgICAgICAgIGxvb2t1cC5wdXNoKCcgfHwgJywgdGhpcy5hbGlhc2FibGUo
J2hlbHBlcnMuaGVscGVyTWlzc2luZycpKTsKKyAgICAgICAgfQorICAgICAgICBsb29rdXAucHVz
aCgnKScpOworCisgICAgICAgIHRoaXMucHVzaCh0aGlzLnNvdXJjZS5mdW5jdGlvbkNhbGwobG9v
a3VwLCAnY2FsbCcsIGhlbHBlci5jYWxsUGFyYW1zKSk7CisgICAgICB9LAorCisgICAgICAvLyBb
aW52b2tlS25vd25IZWxwZXJdCisgICAgICAvLworICAgICAgLy8gT24gc3RhY2ssIGJlZm9yZTog
aGFzaCwgaW52ZXJzZSwgcHJvZ3JhbSwgcGFyYW1zLi4uLCAuLi4KKyAgICAgIC8vIE9uIHN0YWNr
LCBhZnRlcjogcmVzdWx0IG9mIGhlbHBlciBpbnZvY2F0aW9uCisgICAgICAvLworICAgICAgLy8g
VGhpcyBvcGVyYXRpb24gaXMgdXNlZCB3aGVuIHRoZSBoZWxwZXIgaXMga25vd24gdG8gZXhpc3Qs
CisgICAgICAvLyBzbyBhIGBoZWxwZXJNaXNzaW5nYCBmYWxsYmFjayBpcyBub3QgcmVxdWlyZWQu
CisgICAgICBpbnZva2VLbm93bkhlbHBlcjogZnVuY3Rpb24gaW52b2tlS25vd25IZWxwZXIocGFy
YW1TaXplLCBuYW1lKSB7CisgICAgICAgIHZhciBoZWxwZXIgPSB0aGlzLnNldHVwSGVscGVyKHBh
cmFtU2l6ZSwgbmFtZSk7CisgICAgICAgIHRoaXMucHVzaCh0aGlzLnNvdXJjZS5mdW5jdGlvbkNh
bGwoaGVscGVyLm5hbWUsICdjYWxsJywgaGVscGVyLmNhbGxQYXJhbXMpKTsKKyAgICAgIH0sCisK
KyAgICAgIC8vIFtpbnZva2VBbWJpZ3VvdXNdCisgICAgICAvLworICAgICAgLy8gT24gc3RhY2ss
IGJlZm9yZTogaGFzaCwgaW52ZXJzZSwgcHJvZ3JhbSwgcGFyYW1zLi4uLCAuLi4KKyAgICAgIC8v
IE9uIHN0YWNrLCBhZnRlcjogcmVzdWx0IG9mIGRpc2FtYmlndWF0aW9uCisgICAgICAvLworICAg
ICAgLy8gVGhpcyBvcGVyYXRpb24gaXMgdXNlZCB3aGVuIGFuIGV4cHJlc3Npb24gbGlrZSBge3tm
b299fWAKKyAgICAgIC8vIGlzIHByb3ZpZGVkLCBidXQgd2UgZG9uJ3Qga25vdyBhdCBjb21waWxl
LXRpbWUgd2hldGhlciBpdAorICAgICAgLy8gaXMgYSBoZWxwZXIgb3IgYSBwYXRoLgorICAgICAg
Ly8KKyAgICAgIC8vIFRoaXMgb3BlcmF0aW9uIGVtaXRzIG1vcmUgY29kZSB0aGFuIHRoZSBvdGhl
ciBvcHRpb25zLAorICAgICAgLy8gYW5kIGNhbiBiZSBhdm9pZGVkIGJ5IHBhc3NpbmcgdGhlIGBr
bm93bkhlbHBlcnNgIGFuZAorICAgICAgLy8gYGtub3duSGVscGVyc09ubHlgIGZsYWdzIGF0IGNv
bXBpbGUtdGltZS4KKyAgICAgIGludm9rZUFtYmlndW91czogZnVuY3Rpb24gaW52b2tlQW1iaWd1
b3VzKG5hbWUsIGhlbHBlckNhbGwpIHsKKyAgICAgICAgdGhpcy51c2VSZWdpc3RlcignaGVscGVy
Jyk7CisKKyAgICAgICAgdmFyIG5vbkhlbHBlciA9IHRoaXMucG9wU3RhY2soKTsKKworICAgICAg
ICB0aGlzLmVtcHR5SGFzaCgpOworICAgICAgICB2YXIgaGVscGVyID0gdGhpcy5zZXR1cEhlbHBl
cigwLCBuYW1lLCBoZWxwZXJDYWxsKTsKKworICAgICAgICB2YXIgaGVscGVyTmFtZSA9IHRoaXMu
bGFzdEhlbHBlciA9IHRoaXMubmFtZUxvb2t1cCgnaGVscGVycycsIG5hbWUsICdoZWxwZXInKTsK
KworICAgICAgICB2YXIgbG9va3VwID0gWycoJywgJyhoZWxwZXIgPSAnLCBoZWxwZXJOYW1lLCAn
IHx8ICcsIG5vbkhlbHBlciwgJyknXTsKKyAgICAgICAgaWYgKCF0aGlzLm9wdGlvbnMuc3RyaWN0
KSB7CisgICAgICAgICAgbG9va3VwWzBdID0gJyhoZWxwZXIgPSAnOworICAgICAgICAgIGxvb2t1
cC5wdXNoKCcgIT0gbnVsbCA/IGhlbHBlciA6ICcsIHRoaXMuYWxpYXNhYmxlKCdoZWxwZXJzLmhl
bHBlck1pc3NpbmcnKSk7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLnB1c2goWycoJywgbG9v
a3VwLCBoZWxwZXIucGFyYW1zSW5pdCA/IFsnKSwoJywgaGVscGVyLnBhcmFtc0luaXRdIDogW10s
ICcpLCcsICcodHlwZW9mIGhlbHBlciA9PT0gJywgdGhpcy5hbGlhc2FibGUoJyJmdW5jdGlvbiIn
KSwgJyA/ICcsIHRoaXMuc291cmNlLmZ1bmN0aW9uQ2FsbCgnaGVscGVyJywgJ2NhbGwnLCBoZWxw
ZXIuY2FsbFBhcmFtcyksICcgOiBoZWxwZXIpKSddKTsKKyAgICAgIH0sCisKKyAgICAgIC8vIFtp
bnZva2VQYXJ0aWFsXQorICAgICAgLy8KKyAgICAgIC8vIE9uIHN0YWNrLCBiZWZvcmU6IGNvbnRl
eHQsIC4uLgorICAgICAgLy8gT24gc3RhY2sgYWZ0ZXI6IHJlc3VsdCBvZiBwYXJ0aWFsIGludm9j
YXRpb24KKyAgICAgIC8vCisgICAgICAvLyBUaGlzIG9wZXJhdGlvbiBwb3BzIG9mZiBhIGNvbnRl
eHQsIGludm9rZXMgYSBwYXJ0aWFsIHdpdGggdGhhdCBjb250ZXh0LAorICAgICAgLy8gYW5kIHB1
c2hlcyB0aGUgcmVzdWx0IG9mIHRoZSBpbnZvY2F0aW9uIGJhY2suCisgICAgICBpbnZva2VQYXJ0
aWFsOiBmdW5jdGlvbiBpbnZva2VQYXJ0aWFsKGlzRHluYW1pYywgbmFtZSwgaW5kZW50KSB7Cisg
ICAgICAgIHZhciBwYXJhbXMgPSBbXSwKKyAgICAgICAgICAgIG9wdGlvbnMgPSB0aGlzLnNldHVw
UGFyYW1zKG5hbWUsIDEsIHBhcmFtcyk7CisKKyAgICAgICAgaWYgKGlzRHluYW1pYykgeworICAg
ICAgICAgIG5hbWUgPSB0aGlzLnBvcFN0YWNrKCk7CisgICAgICAgICAgZGVsZXRlIG9wdGlvbnMu
bmFtZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChpbmRlbnQpIHsKKyAgICAgICAgICBvcHRp
b25zLmluZGVudCA9IEpTT04uc3RyaW5naWZ5KGluZGVudCk7CisgICAgICAgIH0KKyAgICAgICAg
b3B0aW9ucy5oZWxwZXJzID0gJ2hlbHBlcnMnOworICAgICAgICBvcHRpb25zLnBhcnRpYWxzID0g
J3BhcnRpYWxzJzsKKyAgICAgICAgb3B0aW9ucy5kZWNvcmF0b3JzID0gJ2NvbnRhaW5lci5kZWNv
cmF0b3JzJzsKKworICAgICAgICBpZiAoIWlzRHluYW1pYykgeworICAgICAgICAgIHBhcmFtcy51
bnNoaWZ0KHRoaXMubmFtZUxvb2t1cCgncGFydGlhbHMnLCBuYW1lLCAncGFydGlhbCcpKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBwYXJhbXMudW5zaGlmdChuYW1lKTsKKyAgICAgICAg
fQorCisgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuY29tcGF0KSB7CisgICAgICAgICAgb3B0aW9u
cy5kZXB0aHMgPSAnZGVwdGhzJzsKKyAgICAgICAgfQorICAgICAgICBvcHRpb25zID0gdGhpcy5v
YmplY3RMaXRlcmFsKG9wdGlvbnMpOworICAgICAgICBwYXJhbXMucHVzaChvcHRpb25zKTsKKwor
ICAgICAgICB0aGlzLnB1c2godGhpcy5zb3VyY2UuZnVuY3Rpb25DYWxsKCdjb250YWluZXIuaW52
b2tlUGFydGlhbCcsICcnLCBwYXJhbXMpKTsKKyAgICAgIH0sCisKKyAgICAgIC8vIFthc3NpZ25U
b0hhc2hdCisgICAgICAvLworICAgICAgLy8gT24gc3RhY2ssIGJlZm9yZTogdmFsdWUsIC4uLiwg
aGFzaCwgLi4uCisgICAgICAvLyBPbiBzdGFjaywgYWZ0ZXI6IC4uLiwgaGFzaCwgLi4uCisgICAg
ICAvLworICAgICAgLy8gUG9wcyBhIHZhbHVlIG9mZiB0aGUgc3RhY2sgYW5kIGFzc2lnbnMgaXQg
dG8gdGhlIGN1cnJlbnQgaGFzaAorICAgICAgYXNzaWduVG9IYXNoOiBmdW5jdGlvbiBhc3NpZ25U
b0hhc2goa2V5KSB7CisgICAgICAgIHZhciB2YWx1ZSA9IHRoaXMucG9wU3RhY2soKSwKKyAgICAg
ICAgICAgIGNvbnRleHQgPSB1bmRlZmluZWQsCisgICAgICAgICAgICB0eXBlID0gdW5kZWZpbmVk
LAorICAgICAgICAgICAgaWQgPSB1bmRlZmluZWQ7CisKKyAgICAgICAgaWYgKHRoaXMudHJhY2tJ
ZHMpIHsKKyAgICAgICAgICBpZCA9IHRoaXMucG9wU3RhY2soKTsKKyAgICAgICAgfQorICAgICAg
ICBpZiAodGhpcy5zdHJpbmdQYXJhbXMpIHsKKyAgICAgICAgICB0eXBlID0gdGhpcy5wb3BTdGFj
aygpOworICAgICAgICAgIGNvbnRleHQgPSB0aGlzLnBvcFN0YWNrKCk7CisgICAgICAgIH0KKwor
ICAgICAgICB2YXIgaGFzaCA9IHRoaXMuaGFzaDsKKyAgICAgICAgaWYgKGNvbnRleHQpIHsKKyAg
ICAgICAgICBoYXNoLmNvbnRleHRzW2tleV0gPSBjb250ZXh0OworICAgICAgICB9CisgICAgICAg
IGlmICh0eXBlKSB7CisgICAgICAgICAgaGFzaC50eXBlc1trZXldID0gdHlwZTsKKyAgICAgICAg
fQorICAgICAgICBpZiAoaWQpIHsKKyAgICAgICAgICBoYXNoLmlkc1trZXldID0gaWQ7CisgICAg
ICAgIH0KKyAgICAgICAgaGFzaC52YWx1ZXNba2V5XSA9IHZhbHVlOworICAgICAgfSwKKworICAg
ICAgcHVzaElkOiBmdW5jdGlvbiBwdXNoSWQodHlwZSwgbmFtZSwgY2hpbGQpIHsKKyAgICAgICAg
aWYgKHR5cGUgPT09ICdCbG9ja1BhcmFtJykgeworICAgICAgICAgIHRoaXMucHVzaFN0YWNrTGl0
ZXJhbCgnYmxvY2tQYXJhbXNbJyArIG5hbWVbMF0gKyAnXS5wYXRoWycgKyBuYW1lWzFdICsgJ10n
ICsgKGNoaWxkID8gJyArICcgKyBKU09OLnN0cmluZ2lmeSgnLicgKyBjaGlsZCkgOiAnJykpOwor
ICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdQYXRoRXhwcmVzc2lvbicpIHsKKyAgICAgICAg
ICB0aGlzLnB1c2hTdHJpbmcobmFtZSk7CisgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ1N1
YkV4cHJlc3Npb24nKSB7CisgICAgICAgICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFsKCd0cnVlJyk7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFsKCdudWxs
Jyk7CisgICAgICAgIH0KKyAgICAgIH0sCisKKyAgICAgIC8vIEhFTFBFUlMKKworICAgICAgY29t
cGlsZXI6IEphdmFTY3JpcHRDb21waWxlciwKKworICAgICAgY29tcGlsZUNoaWxkcmVuOiBmdW5j
dGlvbiBjb21waWxlQ2hpbGRyZW4oZW52aXJvbm1lbnQsIG9wdGlvbnMpIHsKKyAgICAgICAgdmFy
IGNoaWxkcmVuID0gZW52aXJvbm1lbnQuY2hpbGRyZW4sCisgICAgICAgICAgICBjaGlsZCA9IHVu
ZGVmaW5lZCwKKyAgICAgICAgICAgIGNvbXBpbGVyID0gdW5kZWZpbmVkOworCisgICAgICAgIGZv
ciAodmFyIGkgPSAwLCBsID0gY2hpbGRyZW4ubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CisgICAgICAg
ICAgY2hpbGQgPSBjaGlsZHJlbltpXTsKKyAgICAgICAgICBjb21waWxlciA9IG5ldyB0aGlzLmNv
bXBpbGVyKCk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbmV3LWNhcAorCisgICAgICAgICAgdmFy
IGV4aXN0aW5nID0gdGhpcy5tYXRjaEV4aXN0aW5nUHJvZ3JhbShjaGlsZCk7CisKKyAgICAgICAg
ICBpZiAoZXhpc3RpbmcgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhpcy5jb250ZXh0LnByb2dy
YW1zLnB1c2goJycpOyAvLyBQbGFjZWhvbGRlciB0byBwcmV2ZW50IG5hbWUgY29uZmxpY3RzIGZv
ciBuZXN0ZWQgY2hpbGRyZW4KKyAgICAgICAgICAgIHZhciBpbmRleCA9IHRoaXMuY29udGV4dC5w
cm9ncmFtcy5sZW5ndGg7CisgICAgICAgICAgICBjaGlsZC5pbmRleCA9IGluZGV4OworICAgICAg
ICAgICAgY2hpbGQubmFtZSA9ICdwcm9ncmFtJyArIGluZGV4OworICAgICAgICAgICAgdGhpcy5j
b250ZXh0LnByb2dyYW1zW2luZGV4XSA9IGNvbXBpbGVyLmNvbXBpbGUoY2hpbGQsIG9wdGlvbnMs
IHRoaXMuY29udGV4dCwgIXRoaXMucHJlY29tcGlsZSk7CisgICAgICAgICAgICB0aGlzLmNvbnRl
eHQuZGVjb3JhdG9yc1tpbmRleF0gPSBjb21waWxlci5kZWNvcmF0b3JzOworICAgICAgICAgICAg
dGhpcy5jb250ZXh0LmVudmlyb25tZW50c1tpbmRleF0gPSBjaGlsZDsKKworICAgICAgICAgICAg
dGhpcy51c2VEZXB0aHMgPSB0aGlzLnVzZURlcHRocyB8fCBjb21waWxlci51c2VEZXB0aHM7Cisg
ICAgICAgICAgICB0aGlzLnVzZUJsb2NrUGFyYW1zID0gdGhpcy51c2VCbG9ja1BhcmFtcyB8fCBj
b21waWxlci51c2VCbG9ja1BhcmFtczsKKyAgICAgICAgICAgIGNoaWxkLnVzZURlcHRocyA9IHRo
aXMudXNlRGVwdGhzOworICAgICAgICAgICAgY2hpbGQudXNlQmxvY2tQYXJhbXMgPSB0aGlzLnVz
ZUJsb2NrUGFyYW1zOworICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjaGlsZC5pbmRl
eCA9IGV4aXN0aW5nLmluZGV4OworICAgICAgICAgICAgY2hpbGQubmFtZSA9ICdwcm9ncmFtJyAr
IGV4aXN0aW5nLmluZGV4OworCisgICAgICAgICAgICB0aGlzLnVzZURlcHRocyA9IHRoaXMudXNl
RGVwdGhzIHx8IGV4aXN0aW5nLnVzZURlcHRoczsKKyAgICAgICAgICAgIHRoaXMudXNlQmxvY2tQ
YXJhbXMgPSB0aGlzLnVzZUJsb2NrUGFyYW1zIHx8IGV4aXN0aW5nLnVzZUJsb2NrUGFyYW1zOwor
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfSwKKyAgICAgIG1hdGNoRXhpc3RpbmdQcm9n
cmFtOiBmdW5jdGlvbiBtYXRjaEV4aXN0aW5nUHJvZ3JhbShjaGlsZCkgeworICAgICAgICBmb3Ig
KHZhciBpID0gMCwgbGVuID0gdGhpcy5jb250ZXh0LmVudmlyb25tZW50cy5sZW5ndGg7IGkgPCBs
ZW47IGkrKykgeworICAgICAgICAgIHZhciBlbnZpcm9ubWVudCA9IHRoaXMuY29udGV4dC5lbnZp
cm9ubWVudHNbaV07CisgICAgICAgICAgaWYgKGVudmlyb25tZW50ICYmIGVudmlyb25tZW50LmVx
dWFscyhjaGlsZCkpIHsKKyAgICAgICAgICAgIHJldHVybiBlbnZpcm9ubWVudDsKKyAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICAgIH0sCisKKyAgICAgIHByb2dyYW1FeHByZXNzaW9uOiBmdW5j
dGlvbiBwcm9ncmFtRXhwcmVzc2lvbihndWlkKSB7CisgICAgICAgIHZhciBjaGlsZCA9IHRoaXMu
ZW52aXJvbm1lbnQuY2hpbGRyZW5bZ3VpZF0sCisgICAgICAgICAgICBwcm9ncmFtUGFyYW1zID0g
W2NoaWxkLmluZGV4LCAnZGF0YScsIGNoaWxkLmJsb2NrUGFyYW1zXTsKKworICAgICAgICBpZiAo
dGhpcy51c2VCbG9ja1BhcmFtcyB8fCB0aGlzLnVzZURlcHRocykgeworICAgICAgICAgIHByb2dy
YW1QYXJhbXMucHVzaCgnYmxvY2tQYXJhbXMnKTsKKyAgICAgICAgfQorICAgICAgICBpZiAodGhp
cy51c2VEZXB0aHMpIHsKKyAgICAgICAgICBwcm9ncmFtUGFyYW1zLnB1c2goJ2RlcHRocycpOwor
ICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuICdjb250YWluZXIucHJvZ3JhbSgnICsgcHJvZ3Jh
bVBhcmFtcy5qb2luKCcsICcpICsgJyknOworICAgICAgfSwKKworICAgICAgdXNlUmVnaXN0ZXI6
IGZ1bmN0aW9uIHVzZVJlZ2lzdGVyKG5hbWUpIHsKKyAgICAgICAgaWYgKCF0aGlzLnJlZ2lzdGVy
c1tuYW1lXSkgeworICAgICAgICAgIHRoaXMucmVnaXN0ZXJzW25hbWVdID0gdHJ1ZTsKKyAgICAg
ICAgICB0aGlzLnJlZ2lzdGVycy5saXN0LnB1c2gobmFtZSk7CisgICAgICAgIH0KKyAgICAgIH0s
CisKKyAgICAgIHB1c2g6IGZ1bmN0aW9uIHB1c2goZXhwcikgeworICAgICAgICBpZiAoIShleHBy
IGluc3RhbmNlb2YgTGl0ZXJhbCkpIHsKKyAgICAgICAgICBleHByID0gdGhpcy5zb3VyY2Uud3Jh
cChleHByKTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuaW5saW5lU3RhY2sucHVzaChleHBy
KTsKKyAgICAgICAgcmV0dXJuIGV4cHI7CisgICAgICB9LAorCisgICAgICBwdXNoU3RhY2tMaXRl
cmFsOiBmdW5jdGlvbiBwdXNoU3RhY2tMaXRlcmFsKGl0ZW0pIHsKKyAgICAgICAgdGhpcy5wdXNo
KG5ldyBMaXRlcmFsKGl0ZW0pKTsKKyAgICAgIH0sCisKKyAgICAgIHB1c2hTb3VyY2U6IGZ1bmN0
aW9uIHB1c2hTb3VyY2Uoc291cmNlKSB7CisgICAgICAgIGlmICh0aGlzLnBlbmRpbmdDb250ZW50
KSB7CisgICAgICAgICAgdGhpcy5zb3VyY2UucHVzaCh0aGlzLmFwcGVuZFRvQnVmZmVyKHRoaXMu
c291cmNlLnF1b3RlZFN0cmluZyh0aGlzLnBlbmRpbmdDb250ZW50KSwgdGhpcy5wZW5kaW5nTG9j
YXRpb24pKTsKKyAgICAgICAgICB0aGlzLnBlbmRpbmdDb250ZW50ID0gdW5kZWZpbmVkOworICAg
ICAgICB9CisKKyAgICAgICAgaWYgKHNvdXJjZSkgeworICAgICAgICAgIHRoaXMuc291cmNlLnB1
c2goc291cmNlKTsKKyAgICAgICAgfQorICAgICAgfSwKKworICAgICAgcmVwbGFjZVN0YWNrOiBm
dW5jdGlvbiByZXBsYWNlU3RhY2soY2FsbGJhY2spIHsKKyAgICAgICAgdmFyIHByZWZpeCA9IFsn
KCddLAorICAgICAgICAgICAgc3RhY2sgPSB1bmRlZmluZWQsCisgICAgICAgICAgICBjcmVhdGVk
U3RhY2sgPSB1bmRlZmluZWQsCisgICAgICAgICAgICB1c2VkTGl0ZXJhbCA9IHVuZGVmaW5lZDsK
KworICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLworICAgICAgICBpZiAoIXRoaXMu
aXNJbmxpbmUoKSkgeworICAgICAgICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCdd
KCdyZXBsYWNlU3RhY2sgb24gbm9uLWlubGluZScpOworICAgICAgICB9CisKKyAgICAgICAgLy8g
V2Ugd2FudCB0byBtZXJnZSB0aGUgaW5saW5lIHN0YXRlbWVudCBpbnRvIHRoZSByZXBsYWNlbWVu
dCBzdGF0ZW1lbnQgdmlhICcsJworICAgICAgICB2YXIgdG9wID0gdGhpcy5wb3BTdGFjayh0cnVl
KTsKKworICAgICAgICBpZiAodG9wIGluc3RhbmNlb2YgTGl0ZXJhbCkgeworICAgICAgICAgIC8v
IExpdGVyYWxzIGRvIG5vdCBuZWVkIHRvIGJlIGlubGluZWQKKyAgICAgICAgICBzdGFjayA9IFt0
b3AudmFsdWVdOworICAgICAgICAgIHByZWZpeCA9IFsnKCcsIHN0YWNrXTsKKyAgICAgICAgICB1
c2VkTGl0ZXJhbCA9IHRydWU7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgLy8gR2V0IG9y
IGNyZWF0ZSB0aGUgY3VycmVudCBzdGFjayBuYW1lIGZvciB1c2UgYnkgdGhlIGlubGluZQorICAg
ICAgICAgIGNyZWF0ZWRTdGFjayA9IHRydWU7CisgICAgICAgICAgdmFyIF9uYW1lID0gdGhpcy5p
bmNyU3RhY2soKTsKKworICAgICAgICAgIHByZWZpeCA9IFsnKCgnLCB0aGlzLnB1c2goX25hbWUp
LCAnID0gJywgdG9wLCAnKSddOworICAgICAgICAgIHN0YWNrID0gdGhpcy50b3BTdGFjaygpOwor
ICAgICAgICB9CisKKyAgICAgICAgdmFyIGl0ZW0gPSBjYWxsYmFjay5jYWxsKHRoaXMsIHN0YWNr
KTsKKworICAgICAgICBpZiAoIXVzZWRMaXRlcmFsKSB7CisgICAgICAgICAgdGhpcy5wb3BTdGFj
aygpOworICAgICAgICB9CisgICAgICAgIGlmIChjcmVhdGVkU3RhY2spIHsKKyAgICAgICAgICB0
aGlzLnN0YWNrU2xvdC0tOworICAgICAgICB9CisgICAgICAgIHRoaXMucHVzaChwcmVmaXguY29u
Y2F0KGl0ZW0sICcpJykpOworICAgICAgfSwKKworICAgICAgaW5jclN0YWNrOiBmdW5jdGlvbiBp
bmNyU3RhY2soKSB7CisgICAgICAgIHRoaXMuc3RhY2tTbG90Kys7CisgICAgICAgIGlmICh0aGlz
LnN0YWNrU2xvdCA+IHRoaXMuc3RhY2tWYXJzLmxlbmd0aCkgeworICAgICAgICAgIHRoaXMuc3Rh
Y2tWYXJzLnB1c2goJ3N0YWNrJyArIHRoaXMuc3RhY2tTbG90KTsKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4gdGhpcy50b3BTdGFja05hbWUoKTsKKyAgICAgIH0sCisgICAgICB0b3BTdGFja05h
bWU6IGZ1bmN0aW9uIHRvcFN0YWNrTmFtZSgpIHsKKyAgICAgICAgcmV0dXJuICdzdGFjaycgKyB0
aGlzLnN0YWNrU2xvdDsKKyAgICAgIH0sCisgICAgICBmbHVzaElubGluZTogZnVuY3Rpb24gZmx1
c2hJbmxpbmUoKSB7CisgICAgICAgIHZhciBpbmxpbmVTdGFjayA9IHRoaXMuaW5saW5lU3RhY2s7
CisgICAgICAgIHRoaXMuaW5saW5lU3RhY2sgPSBbXTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDAs
IGxlbiA9IGlubGluZVN0YWNrLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgICAgdmFy
IGVudHJ5ID0gaW5saW5lU3RhY2tbaV07CisgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlm
ICovCisgICAgICAgICAgaWYgKGVudHJ5IGluc3RhbmNlb2YgTGl0ZXJhbCkgeworICAgICAgICAg
ICAgdGhpcy5jb21waWxlU3RhY2sucHVzaChlbnRyeSk7CisgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIHZhciBzdGFjayA9IHRoaXMuaW5jclN0YWNrKCk7CisgICAgICAgICAgICB0aGlz
LnB1c2hTb3VyY2UoW3N0YWNrLCAnID0gJywgZW50cnksICc7J10pOworICAgICAgICAgICAgdGhp
cy5jb21waWxlU3RhY2sucHVzaChzdGFjayk7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICB9LAorICAgICAgaXNJbmxpbmU6IGZ1bmN0aW9uIGlzSW5saW5lKCkgeworICAgICAgICByZXR1
cm4gdGhpcy5pbmxpbmVTdGFjay5sZW5ndGg7CisgICAgICB9LAorCisgICAgICBwb3BTdGFjazog
ZnVuY3Rpb24gcG9wU3RhY2sod3JhcHBlZCkgeworICAgICAgICB2YXIgaW5saW5lID0gdGhpcy5p
c0lubGluZSgpLAorICAgICAgICAgICAgaXRlbSA9IChpbmxpbmUgPyB0aGlzLmlubGluZVN0YWNr
IDogdGhpcy5jb21waWxlU3RhY2spLnBvcCgpOworCisgICAgICAgIGlmICghd3JhcHBlZCAmJiBp
dGVtIGluc3RhbmNlb2YgTGl0ZXJhbCkgeworICAgICAgICAgIHJldHVybiBpdGVtLnZhbHVlOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgIGlmICghaW5saW5lKSB7CisgICAgICAgICAgICAv
KiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLworICAgICAgICAgICAgaWYgKCF0aGlzLnN0YWNrU2xv
dCkgeworICAgICAgICAgICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnSW52
YWxpZCBzdGFjayBwb3AnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRoaXMuc3RhY2tT
bG90LS07CisgICAgICAgICAgfQorICAgICAgICAgIHJldHVybiBpdGVtOworICAgICAgICB9Cisg
ICAgICB9LAorCisgICAgICB0b3BTdGFjazogZnVuY3Rpb24gdG9wU3RhY2soKSB7CisgICAgICAg
IHZhciBzdGFjayA9IHRoaXMuaXNJbmxpbmUoKSA/IHRoaXMuaW5saW5lU3RhY2sgOiB0aGlzLmNv
bXBpbGVTdGFjaywKKyAgICAgICAgICAgIGl0ZW0gPSBzdGFja1tzdGFjay5sZW5ndGggLSAxXTsK
KworICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi8KKyAgICAgICAgaWYgKGl0ZW0gaW5z
dGFuY2VvZiBMaXRlcmFsKSB7CisgICAgICAgICAgcmV0dXJuIGl0ZW0udmFsdWU7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgcmV0dXJuIGl0ZW07CisgICAgICAgIH0KKyAgICAgIH0sCisK
KyAgICAgIGNvbnRleHROYW1lOiBmdW5jdGlvbiBjb250ZXh0TmFtZShjb250ZXh0KSB7CisgICAg
ICAgIGlmICh0aGlzLnVzZURlcHRocyAmJiBjb250ZXh0KSB7CisgICAgICAgICAgcmV0dXJuICdk
ZXB0aHNbJyArIGNvbnRleHQgKyAnXSc7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgcmV0
dXJuICdkZXB0aCcgKyBjb250ZXh0OworICAgICAgICB9CisgICAgICB9LAorCisgICAgICBxdW90
ZWRTdHJpbmc6IGZ1bmN0aW9uIHF1b3RlZFN0cmluZyhzdHIpIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMuc291cmNlLnF1b3RlZFN0cmluZyhzdHIpOworICAgICAgfSwKKworICAgICAgb2JqZWN0TGl0
ZXJhbDogZnVuY3Rpb24gb2JqZWN0TGl0ZXJhbChvYmopIHsKKyAgICAgICAgcmV0dXJuIHRoaXMu
c291cmNlLm9iamVjdExpdGVyYWwob2JqKTsKKyAgICAgIH0sCisKKyAgICAgIGFsaWFzYWJsZTog
ZnVuY3Rpb24gYWxpYXNhYmxlKG5hbWUpIHsKKyAgICAgICAgdmFyIHJldCA9IHRoaXMuYWxpYXNl
c1tuYW1lXTsKKyAgICAgICAgaWYgKHJldCkgeworICAgICAgICAgIHJldC5yZWZlcmVuY2VDb3Vu
dCsrOworICAgICAgICAgIHJldHVybiByZXQ7CisgICAgICAgIH0KKworICAgICAgICByZXQgPSB0
aGlzLmFsaWFzZXNbbmFtZV0gPSB0aGlzLnNvdXJjZS53cmFwKG5hbWUpOworICAgICAgICByZXQu
YWxpYXNhYmxlID0gdHJ1ZTsKKyAgICAgICAgcmV0LnJlZmVyZW5jZUNvdW50ID0gMTsKKworICAg
ICAgICByZXR1cm4gcmV0OworICAgICAgfSwKKworICAgICAgc2V0dXBIZWxwZXI6IGZ1bmN0aW9u
IHNldHVwSGVscGVyKHBhcmFtU2l6ZSwgbmFtZSwgYmxvY2tIZWxwZXIpIHsKKyAgICAgICAgdmFy
IHBhcmFtcyA9IFtdLAorICAgICAgICAgICAgcGFyYW1zSW5pdCA9IHRoaXMuc2V0dXBIZWxwZXJB
cmdzKG5hbWUsIHBhcmFtU2l6ZSwgcGFyYW1zLCBibG9ja0hlbHBlcik7CisgICAgICAgIHZhciBm
b3VuZEhlbHBlciA9IHRoaXMubmFtZUxvb2t1cCgnaGVscGVycycsIG5hbWUsICdoZWxwZXInKSwK
KyAgICAgICAgICAgIGNhbGxDb250ZXh0ID0gdGhpcy5hbGlhc2FibGUodGhpcy5jb250ZXh0TmFt
ZSgwKSArICcgIT0gbnVsbCA/ICcgKyB0aGlzLmNvbnRleHROYW1lKDApICsgJyA6IHt9Jyk7CisK
KyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICBwYXJhbXM6IHBhcmFtcywKKyAgICAgICAgICBw
YXJhbXNJbml0OiBwYXJhbXNJbml0LAorICAgICAgICAgIG5hbWU6IGZvdW5kSGVscGVyLAorICAg
ICAgICAgIGNhbGxQYXJhbXM6IFtjYWxsQ29udGV4dF0uY29uY2F0KHBhcmFtcykKKyAgICAgICAg
fTsKKyAgICAgIH0sCisKKyAgICAgIHNldHVwUGFyYW1zOiBmdW5jdGlvbiBzZXR1cFBhcmFtcyho
ZWxwZXIsIHBhcmFtU2l6ZSwgcGFyYW1zKSB7CisgICAgICAgIHZhciBvcHRpb25zID0ge30sCisg
ICAgICAgICAgICBjb250ZXh0cyA9IFtdLAorICAgICAgICAgICAgdHlwZXMgPSBbXSwKKyAgICAg
ICAgICAgIGlkcyA9IFtdLAorICAgICAgICAgICAgb2JqZWN0QXJncyA9ICFwYXJhbXMsCisgICAg
ICAgICAgICBwYXJhbSA9IHVuZGVmaW5lZDsKKworICAgICAgICBpZiAob2JqZWN0QXJncykgewor
ICAgICAgICAgIHBhcmFtcyA9IFtdOworICAgICAgICB9CisKKyAgICAgICAgb3B0aW9ucy5uYW1l
ID0gdGhpcy5xdW90ZWRTdHJpbmcoaGVscGVyKTsKKyAgICAgICAgb3B0aW9ucy5oYXNoID0gdGhp
cy5wb3BTdGFjaygpOworCisgICAgICAgIGlmICh0aGlzLnRyYWNrSWRzKSB7CisgICAgICAgICAg
b3B0aW9ucy5oYXNoSWRzID0gdGhpcy5wb3BTdGFjaygpOworICAgICAgICB9CisgICAgICAgIGlm
ICh0aGlzLnN0cmluZ1BhcmFtcykgeworICAgICAgICAgIG9wdGlvbnMuaGFzaFR5cGVzID0gdGhp
cy5wb3BTdGFjaygpOworICAgICAgICAgIG9wdGlvbnMuaGFzaENvbnRleHRzID0gdGhpcy5wb3BT
dGFjaygpOworICAgICAgICB9CisKKyAgICAgICAgdmFyIGludmVyc2UgPSB0aGlzLnBvcFN0YWNr
KCksCisgICAgICAgICAgICBwcm9ncmFtID0gdGhpcy5wb3BTdGFjaygpOworCisgICAgICAgIC8v
IEF2b2lkIHNldHRpbmcgZm4gYW5kIGludmVyc2UgaWYgbmVpdGhlciBhcmUgc2V0LiBUaGlzIGFs
bG93cworICAgICAgICAvLyBoZWxwZXJzIHRvIGRvIGEgY2hlY2sgZm9yIGBpZiAob3B0aW9ucy5m
bilgCisgICAgICAgIGlmIChwcm9ncmFtIHx8IGludmVyc2UpIHsKKyAgICAgICAgICBvcHRpb25z
LmZuID0gcHJvZ3JhbSB8fCAnY29udGFpbmVyLm5vb3AnOworICAgICAgICAgIG9wdGlvbnMuaW52
ZXJzZSA9IGludmVyc2UgfHwgJ2NvbnRhaW5lci5ub29wJzsKKyAgICAgICAgfQorCisgICAgICAg
IC8vIFRoZSBwYXJhbWV0ZXJzIGdvIG9uIHRvIHRoZSBzdGFjayBpbiBvcmRlciAobWFraW5nIHN1
cmUgdGhhdCB0aGV5IGFyZSBldmFsdWF0ZWQgaW4gb3JkZXIpCisgICAgICAgIC8vIHNvIHdlIG5l
ZWQgdG8gcG9wIHRoZW0gb2ZmIHRoZSBzdGFjayBpbiByZXZlcnNlIG9yZGVyCisgICAgICAgIHZh
ciBpID0gcGFyYW1TaXplOworICAgICAgICB3aGlsZSAoaS0tKSB7CisgICAgICAgICAgcGFyYW0g
PSB0aGlzLnBvcFN0YWNrKCk7CisgICAgICAgICAgcGFyYW1zW2ldID0gcGFyYW07CisKKyAgICAg
ICAgICBpZiAodGhpcy50cmFja0lkcykgeworICAgICAgICAgICAgaWRzW2ldID0gdGhpcy5wb3BT
dGFjaygpOworICAgICAgICAgIH0KKyAgICAgICAgICBpZiAodGhpcy5zdHJpbmdQYXJhbXMpIHsK
KyAgICAgICAgICAgIHR5cGVzW2ldID0gdGhpcy5wb3BTdGFjaygpOworICAgICAgICAgICAgY29u
dGV4dHNbaV0gPSB0aGlzLnBvcFN0YWNrKCk7CisgICAgICAgICAgfQorICAgICAgICB9CisKKyAg
ICAgICAgaWYgKG9iamVjdEFyZ3MpIHsKKyAgICAgICAgICBvcHRpb25zLmFyZ3MgPSB0aGlzLnNv
dXJjZS5nZW5lcmF0ZUFycmF5KHBhcmFtcyk7CisgICAgICAgIH0KKworICAgICAgICBpZiAodGhp
cy50cmFja0lkcykgeworICAgICAgICAgIG9wdGlvbnMuaWRzID0gdGhpcy5zb3VyY2UuZ2VuZXJh
dGVBcnJheShpZHMpOworICAgICAgICB9CisgICAgICAgIGlmICh0aGlzLnN0cmluZ1BhcmFtcykg
eworICAgICAgICAgIG9wdGlvbnMudHlwZXMgPSB0aGlzLnNvdXJjZS5nZW5lcmF0ZUFycmF5KHR5
cGVzKTsKKyAgICAgICAgICBvcHRpb25zLmNvbnRleHRzID0gdGhpcy5zb3VyY2UuZ2VuZXJhdGVB
cnJheShjb250ZXh0cyk7CisgICAgICAgIH0KKworICAgICAgICBpZiAodGhpcy5vcHRpb25zLmRh
dGEpIHsKKyAgICAgICAgICBvcHRpb25zLmRhdGEgPSAnZGF0YSc7CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKHRoaXMudXNlQmxvY2tQYXJhbXMpIHsKKyAgICAgICAgICBvcHRpb25zLmJsb2NrUGFy
YW1zID0gJ2Jsb2NrUGFyYW1zJzsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gb3B0aW9uczsK
KyAgICAgIH0sCisKKyAgICAgIHNldHVwSGVscGVyQXJnczogZnVuY3Rpb24gc2V0dXBIZWxwZXJB
cmdzKGhlbHBlciwgcGFyYW1TaXplLCBwYXJhbXMsIHVzZVJlZ2lzdGVyKSB7CisgICAgICAgIHZh
ciBvcHRpb25zID0gdGhpcy5zZXR1cFBhcmFtcyhoZWxwZXIsIHBhcmFtU2l6ZSwgcGFyYW1zKTsK
KyAgICAgICAgb3B0aW9ucyA9IHRoaXMub2JqZWN0TGl0ZXJhbChvcHRpb25zKTsKKyAgICAgICAg
aWYgKHVzZVJlZ2lzdGVyKSB7CisgICAgICAgICAgdGhpcy51c2VSZWdpc3Rlcignb3B0aW9ucycp
OworICAgICAgICAgIHBhcmFtcy5wdXNoKCdvcHRpb25zJyk7CisgICAgICAgICAgcmV0dXJuIFsn
b3B0aW9ucz0nLCBvcHRpb25zXTsKKyAgICAgICAgfSBlbHNlIGlmIChwYXJhbXMpIHsKKyAgICAg
ICAgICBwYXJhbXMucHVzaChvcHRpb25zKTsKKyAgICAgICAgICByZXR1cm4gJyc7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgcmV0dXJuIG9wdGlvbnM7CisgICAgICAgIH0KKyAgICAgIH0K
KyAgICB9OworCisgICAgKGZ1bmN0aW9uICgpIHsKKyAgICAgIHZhciByZXNlcnZlZFdvcmRzID0g
KCdicmVhayBlbHNlIG5ldyB2YXInICsgJyBjYXNlIGZpbmFsbHkgcmV0dXJuIHZvaWQnICsgJyBj
YXRjaCBmb3Igc3dpdGNoIHdoaWxlJyArICcgY29udGludWUgZnVuY3Rpb24gdGhpcyB3aXRoJyAr
ICcgZGVmYXVsdCBpZiB0aHJvdycgKyAnIGRlbGV0ZSBpbiB0cnknICsgJyBkbyBpbnN0YW5jZW9m
IHR5cGVvZicgKyAnIGFic3RyYWN0IGVudW0gaW50IHNob3J0JyArICcgYm9vbGVhbiBleHBvcnQg
aW50ZXJmYWNlIHN0YXRpYycgKyAnIGJ5dGUgZXh0ZW5kcyBsb25nIHN1cGVyJyArICcgY2hhciBm
aW5hbCBuYXRpdmUgc3luY2hyb25pemVkJyArICcgY2xhc3MgZmxvYXQgcGFja2FnZSB0aHJvd3Mn
ICsgJyBjb25zdCBnb3RvIHByaXZhdGUgdHJhbnNpZW50JyArICcgZGVidWdnZXIgaW1wbGVtZW50
cyBwcm90ZWN0ZWQgdm9sYXRpbGUnICsgJyBkb3VibGUgaW1wb3J0IHB1YmxpYyBsZXQgeWllbGQg
YXdhaXQnICsgJyBudWxsIHRydWUgZmFsc2UnKS5zcGxpdCgnICcpOworCisgICAgICB2YXIgY29t
cGlsZXJXb3JkcyA9IEphdmFTY3JpcHRDb21waWxlci5SRVNFUlZFRF9XT1JEUyA9IHt9OworCisg
ICAgICBmb3IgKHZhciBpID0gMCwgbCA9IHJlc2VydmVkV29yZHMubGVuZ3RoOyBpIDwgbDsgaSsr
KSB7CisgICAgICAgIGNvbXBpbGVyV29yZHNbcmVzZXJ2ZWRXb3Jkc1tpXV0gPSB0cnVlOworICAg
ICAgfQorICAgIH0pKCk7CisKKyAgICBKYXZhU2NyaXB0Q29tcGlsZXIuaXNWYWxpZEphdmFTY3Jp
cHRWYXJpYWJsZU5hbWUgPSBmdW5jdGlvbiAobmFtZSkgeworICAgICAgcmV0dXJuICFKYXZhU2Ny
aXB0Q29tcGlsZXIuUkVTRVJWRURfV09SRFNbbmFtZV0gJiYgL15bYS16QS1aXyRdWzAtOWEtekEt
Wl8kXSokLy50ZXN0KG5hbWUpOworICAgIH07CisKKyAgICBmdW5jdGlvbiBzdHJpY3RMb29rdXAo
cmVxdWlyZVRlcm1pbmFsLCBjb21waWxlciwgcGFydHMsIHR5cGUpIHsKKyAgICAgIHZhciBzdGFj
ayA9IGNvbXBpbGVyLnBvcFN0YWNrKCksCisgICAgICAgICAgaSA9IDAsCisgICAgICAgICAgbGVu
ID0gcGFydHMubGVuZ3RoOworICAgICAgaWYgKHJlcXVpcmVUZXJtaW5hbCkgeworICAgICAgICBs
ZW4tLTsKKyAgICAgIH0KKworICAgICAgZm9yICg7IGkgPCBsZW47IGkrKykgeworICAgICAgICBz
dGFjayA9IGNvbXBpbGVyLm5hbWVMb29rdXAoc3RhY2ssIHBhcnRzW2ldLCB0eXBlKTsKKyAgICAg
IH0KKworICAgICAgaWYgKHJlcXVpcmVUZXJtaW5hbCkgeworICAgICAgICByZXR1cm4gW2NvbXBp
bGVyLmFsaWFzYWJsZSgnY29udGFpbmVyLnN0cmljdCcpLCAnKCcsIHN0YWNrLCAnLCAnLCBjb21w
aWxlci5xdW90ZWRTdHJpbmcocGFydHNbaV0pLCAnKSddOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcmV0dXJuIHN0YWNrOworICAgICAgfQorICAgIH0KKworICAgIGV4cG9ydHNbJ2RlZmF1bHQn
XSA9IEphdmFTY3JpcHRDb21waWxlcjsKKyAgICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2Rl
ZmF1bHQnXTsKKworLyoqKi8gfSwKKy8qIDMyICovCisvKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4
cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKKworICAgIC8qIGdsb2JhbCBkZWZpbmUgKi8K
KyAgICAndXNlIHN0cmljdCc7CisKKyAgICBleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOworCisg
ICAgdmFyIF91dGlscyA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7CisKKyAgICB2YXIgU291cmNl
Tm9kZSA9IHVuZGVmaW5lZDsKKworICAgIHRyeSB7CisgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUg
bmV4dCAqLworICAgICAgaWYgKGZhbHNlKSB7CisgICAgICAgIC8vIFdlIGRvbid0IHN1cHBvcnQg
dGhpcyBpbiBBTUQgZW52aXJvbm1lbnRzLiBGb3IgdGhlc2UgZW52aXJvbm1lbnRzLCB3ZSBhc3Vz
bWUgdGhhdAorICAgICAgICAvLyB0aGV5IGFyZSBydW5uaW5nIG9uIHRoZSBicm93c2VyIGFuZCB0
aHVzIGhhdmUgbm8gbmVlZCBmb3IgdGhlIHNvdXJjZS1tYXAgbGlicmFyeS4KKyAgICAgICAgdmFy
IFNvdXJjZU1hcCA9IHJlcXVpcmUoJ3NvdXJjZS1tYXAnKTsKKyAgICAgICAgU291cmNlTm9kZSA9
IFNvdXJjZU1hcC5Tb3VyY2VOb2RlOworICAgICAgfQorICAgIH0gY2F0Y2ggKGVycikge30KKyAg
ICAvKiBOT1AgKi8KKworICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZjogdGVzdGVkIGJ1dCBub3Qg
Y292ZXJlZCBpbiBpc3RhbmJ1bCBkdWUgdG8gZGlzdCBidWlsZCAgKi8KKyAgICBpZiAoIVNvdXJj
ZU5vZGUpIHsKKyAgICAgIFNvdXJjZU5vZGUgPSBmdW5jdGlvbiAobGluZSwgY29sdW1uLCBzcmNG
aWxlLCBjaHVua3MpIHsKKyAgICAgICAgdGhpcy5zcmMgPSAnJzsKKyAgICAgICAgaWYgKGNodW5r
cykgeworICAgICAgICAgIHRoaXMuYWRkKGNodW5rcyk7CisgICAgICAgIH0KKyAgICAgIH07Cisg
ICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLworICAgICAgU291cmNlTm9kZS5wcm90b3R5
cGUgPSB7CisgICAgICAgIGFkZDogZnVuY3Rpb24gYWRkKGNodW5rcykgeworICAgICAgICAgIGlm
IChfdXRpbHMuaXNBcnJheShjaHVua3MpKSB7CisgICAgICAgICAgICBjaHVua3MgPSBjaHVua3Mu
am9pbignJyk7CisgICAgICAgICAgfQorICAgICAgICAgIHRoaXMuc3JjICs9IGNodW5rczsKKyAg
ICAgICAgfSwKKyAgICAgICAgcHJlcGVuZDogZnVuY3Rpb24gcHJlcGVuZChjaHVua3MpIHsKKyAg
ICAgICAgICBpZiAoX3V0aWxzLmlzQXJyYXkoY2h1bmtzKSkgeworICAgICAgICAgICAgY2h1bmtz
ID0gY2h1bmtzLmpvaW4oJycpOworICAgICAgICAgIH0KKyAgICAgICAgICB0aGlzLnNyYyA9IGNo
dW5rcyArIHRoaXMuc3JjOworICAgICAgICB9LAorICAgICAgICB0b1N0cmluZ1dpdGhTb3VyY2VN
YXA6IGZ1bmN0aW9uIHRvU3RyaW5nV2l0aFNvdXJjZU1hcCgpIHsKKyAgICAgICAgICByZXR1cm4g
eyBjb2RlOiB0aGlzLnRvU3RyaW5nKCkgfTsKKyAgICAgICAgfSwKKyAgICAgICAgdG9TdHJpbmc6
IGZ1bmN0aW9uIHRvU3RyaW5nKCkgeworICAgICAgICAgIHJldHVybiB0aGlzLnNyYzsKKyAgICAg
ICAgfQorICAgICAgfTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjYXN0Q2h1bmsoY2h1bmssIGNv
ZGVHZW4sIGxvYykgeworICAgICAgaWYgKF91dGlscy5pc0FycmF5KGNodW5rKSkgeworICAgICAg
ICB2YXIgcmV0ID0gW107CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGNodW5rLmxl
bmd0aDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgICAgcmV0LnB1c2goY29kZUdlbi53cmFwKGNo
dW5rW2ldLCBsb2MpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmV0OworICAgICAgfSBl
bHNlIGlmICh0eXBlb2YgY2h1bmsgPT09ICdib29sZWFuJyB8fCB0eXBlb2YgY2h1bmsgPT09ICdu
dW1iZXInKSB7CisgICAgICAgIC8vIEhhbmRsZSBwcmltaXRpdmVzIHRoYXQgdGhlIFNvdXJjZU5v
ZGUgd2lsbCB0aHJvdyB1cCBvbgorICAgICAgICByZXR1cm4gY2h1bmsgKyAnJzsKKyAgICAgIH0K
KyAgICAgIHJldHVybiBjaHVuazsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBDb2RlR2VuKHNyY0Zp
bGUpIHsKKyAgICAgIHRoaXMuc3JjRmlsZSA9IHNyY0ZpbGU7CisgICAgICB0aGlzLnNvdXJjZSA9
IFtdOworICAgIH0KKworICAgIENvZGVHZW4ucHJvdG90eXBlID0geworICAgICAgaXNFbXB0eTog
ZnVuY3Rpb24gaXNFbXB0eSgpIHsKKyAgICAgICAgcmV0dXJuICF0aGlzLnNvdXJjZS5sZW5ndGg7
CisgICAgICB9LAorICAgICAgcHJlcGVuZDogZnVuY3Rpb24gcHJlcGVuZChzb3VyY2UsIGxvYykg
eworICAgICAgICB0aGlzLnNvdXJjZS51bnNoaWZ0KHRoaXMud3JhcChzb3VyY2UsIGxvYykpOwor
ICAgICAgfSwKKyAgICAgIHB1c2g6IGZ1bmN0aW9uIHB1c2goc291cmNlLCBsb2MpIHsKKyAgICAg
ICAgdGhpcy5zb3VyY2UucHVzaCh0aGlzLndyYXAoc291cmNlLCBsb2MpKTsKKyAgICAgIH0sCisK
KyAgICAgIG1lcmdlOiBmdW5jdGlvbiBtZXJnZSgpIHsKKyAgICAgICAgdmFyIHNvdXJjZSA9IHRo
aXMuZW1wdHkoKTsKKyAgICAgICAgdGhpcy5lYWNoKGZ1bmN0aW9uIChsaW5lKSB7CisgICAgICAg
ICAgc291cmNlLmFkZChbJyAgJywgbGluZSwgJ1xuJ10pOworICAgICAgICB9KTsKKyAgICAgICAg
cmV0dXJuIHNvdXJjZTsKKyAgICAgIH0sCisKKyAgICAgIGVhY2g6IGZ1bmN0aW9uIGVhY2goaXRl
cikgeworICAgICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gdGhpcy5zb3VyY2UubGVuZ3RoOyBp
IDwgbGVuOyBpKyspIHsKKyAgICAgICAgICBpdGVyKHRoaXMuc291cmNlW2ldKTsKKyAgICAgICAg
fQorICAgICAgfSwKKworICAgICAgZW1wdHk6IGZ1bmN0aW9uIGVtcHR5KCkgeworICAgICAgICB2
YXIgbG9jID0gdGhpcy5jdXJyZW50TG9jYXRpb24gfHwgeyBzdGFydDoge30gfTsKKyAgICAgICAg
cmV0dXJuIG5ldyBTb3VyY2VOb2RlKGxvYy5zdGFydC5saW5lLCBsb2Muc3RhcnQuY29sdW1uLCB0
aGlzLnNyY0ZpbGUpOworICAgICAgfSwKKyAgICAgIHdyYXA6IGZ1bmN0aW9uIHdyYXAoY2h1bmsp
IHsKKyAgICAgICAgdmFyIGxvYyA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMSB8fCBhcmd1bWVudHNb
MV0gPT09IHVuZGVmaW5lZCA/IHRoaXMuY3VycmVudExvY2F0aW9uIHx8IHsgc3RhcnQ6IHt9IH0g
OiBhcmd1bWVudHNbMV07CisKKyAgICAgICAgaWYgKGNodW5rIGluc3RhbmNlb2YgU291cmNlTm9k
ZSkgeworICAgICAgICAgIHJldHVybiBjaHVuazsKKyAgICAgICAgfQorCisgICAgICAgIGNodW5r
ID0gY2FzdENodW5rKGNodW5rLCB0aGlzLCBsb2MpOworCisgICAgICAgIHJldHVybiBuZXcgU291
cmNlTm9kZShsb2Muc3RhcnQubGluZSwgbG9jLnN0YXJ0LmNvbHVtbiwgdGhpcy5zcmNGaWxlLCBj
aHVuayk7CisgICAgICB9LAorCisgICAgICBmdW5jdGlvbkNhbGw6IGZ1bmN0aW9uIGZ1bmN0aW9u
Q2FsbChmbiwgdHlwZSwgcGFyYW1zKSB7CisgICAgICAgIHBhcmFtcyA9IHRoaXMuZ2VuZXJhdGVM
aXN0KHBhcmFtcyk7CisgICAgICAgIHJldHVybiB0aGlzLndyYXAoW2ZuLCB0eXBlID8gJy4nICsg
dHlwZSArICcoJyA6ICcoJywgcGFyYW1zLCAnKSddKTsKKyAgICAgIH0sCisKKyAgICAgIHF1b3Rl
ZFN0cmluZzogZnVuY3Rpb24gcXVvdGVkU3RyaW5nKHN0cikgeworICAgICAgICByZXR1cm4gJyIn
ICsgKHN0ciArICcnKS5yZXBsYWNlKC9cXC9nLCAnXFxcXCcpLnJlcGxhY2UoLyIvZywgJ1xcIicp
LnJlcGxhY2UoL1xuL2csICdcXG4nKS5yZXBsYWNlKC9cci9nLCAnXFxyJykucmVwbGFjZSgvXHUy
MDI4L2csICdcXHUyMDI4JykgLy8gUGVyIEVjbWEtMjYyIDcuMyArIDcuOC40CisgICAgICAgIC5y
ZXBsYWNlKC9cdTIwMjkvZywgJ1xcdTIwMjknKSArICciJzsKKyAgICAgIH0sCisKKyAgICAgIG9i
amVjdExpdGVyYWw6IGZ1bmN0aW9uIG9iamVjdExpdGVyYWwob2JqKSB7CisgICAgICAgIHZhciBw
YWlycyA9IFtdOworCisgICAgICAgIGZvciAodmFyIGtleSBpbiBvYmopIHsKKyAgICAgICAgICBp
ZiAob2JqLmhhc093blByb3BlcnR5KGtleSkpIHsKKyAgICAgICAgICAgIHZhciB2YWx1ZSA9IGNh
c3RDaHVuayhvYmpba2V5XSwgdGhpcyk7CisgICAgICAgICAgICBpZiAodmFsdWUgIT09ICd1bmRl
ZmluZWQnKSB7CisgICAgICAgICAgICAgIHBhaXJzLnB1c2goW3RoaXMucXVvdGVkU3RyaW5nKGtl
eSksICc6JywgdmFsdWVdKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0K
KworICAgICAgICB2YXIgcmV0ID0gdGhpcy5nZW5lcmF0ZUxpc3QocGFpcnMpOworICAgICAgICBy
ZXQucHJlcGVuZCgneycpOworICAgICAgICByZXQuYWRkKCd9Jyk7CisgICAgICAgIHJldHVybiBy
ZXQ7CisgICAgICB9LAorCisgICAgICBnZW5lcmF0ZUxpc3Q6IGZ1bmN0aW9uIGdlbmVyYXRlTGlz
dChlbnRyaWVzKSB7CisgICAgICAgIHZhciByZXQgPSB0aGlzLmVtcHR5KCk7CisKKyAgICAgICAg
Zm9yICh2YXIgaSA9IDAsIGxlbiA9IGVudHJpZXMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHsKKyAg
ICAgICAgICBpZiAoaSkgeworICAgICAgICAgICAgcmV0LmFkZCgnLCcpOworICAgICAgICAgIH0K
KworICAgICAgICAgIHJldC5hZGQoY2FzdENodW5rKGVudHJpZXNbaV0sIHRoaXMpKTsKKyAgICAg
ICAgfQorCisgICAgICAgIHJldHVybiByZXQ7CisgICAgICB9LAorCisgICAgICBnZW5lcmF0ZUFy
cmF5OiBmdW5jdGlvbiBnZW5lcmF0ZUFycmF5KGVudHJpZXMpIHsKKyAgICAgICAgdmFyIHJldCA9
IHRoaXMuZ2VuZXJhdGVMaXN0KGVudHJpZXMpOworICAgICAgICByZXQucHJlcGVuZCgnWycpOwor
ICAgICAgICByZXQuYWRkKCddJyk7CisKKyAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgIH0KKyAg
ICB9OworCisgICAgZXhwb3J0c1snZGVmYXVsdCddID0gQ29kZUdlbjsKKyAgICBtb2R1bGUuZXhw
b3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsKKworLyoqKi8gfQorLyoqKioqKi8gXSkKK30pOwor
OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2px
dWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2hhbmRsZWJhcnMubWluLmpzIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvaGFuZGxlYmFycy5t
aW4uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uY2ZjZDYzZTk1ODczZGQ3NTQzNDBlOTZkMjZmYzA5ODIwZmVjZGVj
MAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFu
ZGxlYmFycy9kaXN0L2hhbmRsZWJhcnMubWluLmpzCkBAIC0wLDAgKzEsODEgQEAKKy8qKiEKKwor
IEBsaWNlbnNlCisgaGFuZGxlYmFycyB2NC4wLjYKKworQ29weXJpZ2h0IChDKSAyMDExLTIwMTYg
YnkgWWVodWRhIEthdHoKKworUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBj
aGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQorb2YgdGhpcyBzb2Z0d2FyZSBh
bmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRl
YWwKK2luIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91
dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKK3RvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVi
bGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKK2NvcGllcyBvZiB0aGUg
U29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwor
ZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoK
KworVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ug
c2hhbGwgYmUgaW5jbHVkZWQgaW4KK2FsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMg
b2YgdGhlIFNvZnR3YXJlLgorCitUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lU
SE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorSU1QTElFRCwgSU5DTFVESU5H
IEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCitG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUKK0FVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxF
IEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKK0xJQUJJTElUWSwgV0hFVEhFUiBJTiBB
TiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCitP
VVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9U
SEVSIERFQUxJTkdTIElOCitUSEUgU09GVFdBUkUuCisKKyovCisvKiohCisKKyBAbGljZW5zZQor
IGhhbmRsZWJhcnMgdjQuMC42CisKK0NvcHlyaWdodCAoQykgMjAxMS0yMDE2IGJ5IFllaHVkYSBL
YXR6CisKK1Blcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBh
bnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKK29mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0
ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCitpbiB0aGUg
U29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlv
biB0aGUgcmlnaHRzCit0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3Ry
aWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCitjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBh
bmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKK2Z1cm5pc2hlZCB0
byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisKK1RoZSBhYm92
ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGlu
Y2x1ZGVkIGluCithbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0
d2FyZS4KKworVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFO
VFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKK0lNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJ
TUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFCitBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENM
QUlNLCBEQU1BR0VTIE9SIE9USEVSCitMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9G
IENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAorT1VUIE9GIE9SIElO
IENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5H
UyBJTgorVEhFIFNPRlRXQVJFLgorCisqLworLyoqIQorCisgQGxpY2Vuc2UKKyBoYW5kbGViYXJz
IHY0LjAuNgorCitDb3B5cmlnaHQgKEMpIDIwMTEtMjAxNiBieSBZZWh1ZGEgS2F0egorCitQZXJt
aXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBv
YnRhaW5pbmcgYSBjb3B5CitvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50
YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAoraW4gdGhlIFNvZnR3YXJlIHdp
dGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0
cwordG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJs
aWNlbnNlLCBhbmQvb3Igc2VsbAorY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1p
dCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCitmdXJuaXNoZWQgdG8gZG8gc28sIHN1
YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorCitUaGUgYWJvdmUgY29weXJpZ2h0
IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgor
YWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisKK1RI
RSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBL
SU5ELCBFWFBSRVNTIE9SCitJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRI
RSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKK0ZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorQVVU
SE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdF
UyBPUiBPVEhFUgorTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwg
VE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKK09VVCBPRiBPUiBJTiBDT05ORUNUSU9O
IFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4KK1RIRSBT
T0ZUV0FSRS4KKworKi8KKyFmdW5jdGlvbihhLGIpeyJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYm
Im9iamVjdCI9PXR5cGVvZiBtb2R1bGU/bW9kdWxlLmV4cG9ydHM9YigpOiJmdW5jdGlvbiI9PXR5
cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFtdLGIpOiJvYmplY3QiPT10eXBlb2YgZXhw
b3J0cz9leHBvcnRzLkhhbmRsZWJhcnM9YigpOmEuSGFuZGxlYmFycz1iKCl9KHRoaXMsZnVuY3Rp
b24oKXtyZXR1cm4gZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihkKXtpZihjW2RdKXJldHVybiBjW2Rd
LmV4cG9ydHM7dmFyIGU9Y1tkXT17ZXhwb3J0czp7fSxpZDpkLGxvYWRlZDohMX07cmV0dXJuIGFb
ZF0uY2FsbChlLmV4cG9ydHMsZSxlLmV4cG9ydHMsYiksZS5sb2FkZWQ9ITAsZS5leHBvcnRzfXZh
ciBjPXt9O3JldHVybiBiLm09YSxiLmM9YyxiLnA9IiIsYigwKX0oW2Z1bmN0aW9uKGEsYixjKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gZCgpe3ZhciBhPXIoKTtyZXR1cm4gYS5jb21waWxlPWZ1bmN0
aW9uKGIsYyl7cmV0dXJuIGsuY29tcGlsZShiLGMsYSl9LGEucHJlY29tcGlsZT1mdW5jdGlvbihi
LGMpe3JldHVybiBrLnByZWNvbXBpbGUoYixjLGEpfSxhLkFTVD1pWyJkZWZhdWx0Il0sYS5Db21w
aWxlcj1rLkNvbXBpbGVyLGEuSmF2YVNjcmlwdENvbXBpbGVyPW1bImRlZmF1bHQiXSxhLlBhcnNl
cj1qLnBhcnNlcixhLnBhcnNlPWoucGFyc2UsYX12YXIgZT1jKDEpWyJkZWZhdWx0Il07Yi5fX2Vz
TW9kdWxlPSEwO3ZhciBmPWMoMiksZz1lKGYpLGg9YygyNCksaT1lKGgpLGo9YygyNSksaz1jKDMw
KSxsPWMoMzEpLG09ZShsKSxuPWMoMjgpLG89ZShuKSxwPWMoMjMpLHE9ZShwKSxyPWdbImRlZmF1
bHQiXS5jcmVhdGUscz1kKCk7cy5jcmVhdGU9ZCxxWyJkZWZhdWx0Il0ocykscy5WaXNpdG9yPW9b
ImRlZmF1bHQiXSxzWyJkZWZhdWx0Il09cyxiWyJkZWZhdWx0Il09cyxhLmV4cG9ydHM9YlsiZGVm
YXVsdCJdfSxmdW5jdGlvbihhLGIpeyJ1c2Ugc3RyaWN0IjtiWyJkZWZhdWx0Il09ZnVuY3Rpb24o
YSl7cmV0dXJuIGEmJmEuX19lc01vZHVsZT9hOnsiZGVmYXVsdCI6YX19LGIuX19lc01vZHVsZT0h
MH0sZnVuY3Rpb24oYSxiLGMpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBkKCl7dmFyIGE9bmV3IGgu
SGFuZGxlYmFyc0Vudmlyb25tZW50O3JldHVybiBuLmV4dGVuZChhLGgpLGEuU2FmZVN0cmluZz1q
WyJkZWZhdWx0Il0sYS5FeGNlcHRpb249bFsiZGVmYXVsdCJdLGEuVXRpbHM9bixhLmVzY2FwZUV4
cHJlc3Npb249bi5lc2NhcGVFeHByZXNzaW9uLGEuVk09cCxhLnRlbXBsYXRlPWZ1bmN0aW9uKGIp
e3JldHVybiBwLnRlbXBsYXRlKGIsYSl9LGF9dmFyIGU9YygzKVsiZGVmYXVsdCJdLGY9YygxKVsi
ZGVmYXVsdCJdO2IuX19lc01vZHVsZT0hMDt2YXIgZz1jKDQpLGg9ZShnKSxpPWMoMjEpLGo9Zihp
KSxrPWMoNiksbD1mKGspLG09Yyg1KSxuPWUobSksbz1jKDIyKSxwPWUobykscT1jKDIzKSxyPWYo
cSkscz1kKCk7cy5jcmVhdGU9ZCxyWyJkZWZhdWx0Il0ocyksc1siZGVmYXVsdCJdPXMsYlsiZGVm
YXVsdCJdPXMsYS5leHBvcnRzPWJbImRlZmF1bHQiXX0sZnVuY3Rpb24oYSxiKXsidXNlIHN0cmlj
dCI7YlsiZGVmYXVsdCJdPWZ1bmN0aW9uKGEpe2lmKGEmJmEuX19lc01vZHVsZSlyZXR1cm4gYTt2
YXIgYj17fTtpZihudWxsIT1hKWZvcih2YXIgYyBpbiBhKU9iamVjdC5wcm90b3R5cGUuaGFzT3du
UHJvcGVydHkuY2FsbChhLGMpJiYoYltjXT1hW2NdKTtyZXR1cm4gYlsiZGVmYXVsdCJdPWEsYn0s
Yi5fX2VzTW9kdWxlPSEwfSxmdW5jdGlvbihhLGIsYyl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGQo
YSxiLGMpe3RoaXMuaGVscGVycz1hfHx7fSx0aGlzLnBhcnRpYWxzPWJ8fHt9LHRoaXMuZGVjb3Jh
dG9ycz1jfHx7fSxpLnJlZ2lzdGVyRGVmYXVsdEhlbHBlcnModGhpcyksai5yZWdpc3RlckRlZmF1
bHREZWNvcmF0b3JzKHRoaXMpfXZhciBlPWMoMSlbImRlZmF1bHQiXTtiLl9fZXNNb2R1bGU9ITAs
Yi5IYW5kbGViYXJzRW52aXJvbm1lbnQ9ZDt2YXIgZj1jKDUpLGc9Yyg2KSxoPWUoZyksaT1jKDEw
KSxqPWMoMTgpLGs9YygyMCksbD1lKGspLG09IjQuMC41IjtiLlZFUlNJT049bTt2YXIgbj03O2Iu
Q09NUElMRVJfUkVWSVNJT049bjt2YXIgbz17MToiPD0gMS4wLnJjLjIiLDI6Ij09IDEuMC4wLXJj
LjMiLDM6Ij09IDEuMC4wLXJjLjQiLDQ6Ij09IDEueC54Iiw1OiI9PSAyLjAuMC1hbHBoYS54Iiw2
OiI+PSAyLjAuMC1iZXRhLjEiLDc6Ij49IDQuMC4wIn07Yi5SRVZJU0lPTl9DSEFOR0VTPW87dmFy
IHA9IltvYmplY3QgT2JqZWN0XSI7ZC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmQsbG9nZ2VyOmxb
ImRlZmF1bHQiXSxsb2c6bFsiZGVmYXVsdCJdLmxvZyxyZWdpc3RlckhlbHBlcjpmdW5jdGlvbihh
LGIpe2lmKGYudG9TdHJpbmcuY2FsbChhKT09PXApe2lmKGIpdGhyb3cgbmV3IGhbImRlZmF1bHQi
XSgiQXJnIG5vdCBzdXBwb3J0ZWQgd2l0aCBtdWx0aXBsZSBoZWxwZXJzIik7Zi5leHRlbmQodGhp
cy5oZWxwZXJzLGEpfWVsc2UgdGhpcy5oZWxwZXJzW2FdPWJ9LHVucmVnaXN0ZXJIZWxwZXI6ZnVu
Y3Rpb24oYSl7ZGVsZXRlIHRoaXMuaGVscGVyc1thXX0scmVnaXN0ZXJQYXJ0aWFsOmZ1bmN0aW9u
KGEsYil7aWYoZi50b1N0cmluZy5jYWxsKGEpPT09cClmLmV4dGVuZCh0aGlzLnBhcnRpYWxzLGEp
O2Vsc2V7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBiKXRocm93IG5ldyBoWyJkZWZhdWx0Il0oJ0F0
dGVtcHRpbmcgdG8gcmVnaXN0ZXIgYSBwYXJ0aWFsIGNhbGxlZCAiJythKyciIGFzIHVuZGVmaW5l
ZCcpO3RoaXMucGFydGlhbHNbYV09Yn19LHVucmVnaXN0ZXJQYXJ0aWFsOmZ1bmN0aW9uKGEpe2Rl
bGV0ZSB0aGlzLnBhcnRpYWxzW2FdfSxyZWdpc3RlckRlY29yYXRvcjpmdW5jdGlvbihhLGIpe2lm
KGYudG9TdHJpbmcuY2FsbChhKT09PXApe2lmKGIpdGhyb3cgbmV3IGhbImRlZmF1bHQiXSgiQXJn
IG5vdCBzdXBwb3J0ZWQgd2l0aCBtdWx0aXBsZSBkZWNvcmF0b3JzIik7Zi5leHRlbmQodGhpcy5k
ZWNvcmF0b3JzLGEpfWVsc2UgdGhpcy5kZWNvcmF0b3JzW2FdPWJ9LHVucmVnaXN0ZXJEZWNvcmF0
b3I6ZnVuY3Rpb24oYSl7ZGVsZXRlIHRoaXMuZGVjb3JhdG9yc1thXX19O3ZhciBxPWxbImRlZmF1
bHQiXS5sb2c7Yi5sb2c9cSxiLmNyZWF0ZUZyYW1lPWYuY3JlYXRlRnJhbWUsYi5sb2dnZXI9bFsi
ZGVmYXVsdCJdfSxmdW5jdGlvbihhLGIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBjKGEpe3JldHVy
biBrW2FdfWZ1bmN0aW9uIGQoYSl7Zm9yKHZhciBiPTE7Yjxhcmd1bWVudHMubGVuZ3RoO2IrKylm
b3IodmFyIGMgaW4gYXJndW1lbnRzW2JdKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHku
Y2FsbChhcmd1bWVudHNbYl0sYykmJihhW2NdPWFyZ3VtZW50c1tiXVtjXSk7cmV0dXJuIGF9ZnVu
Y3Rpb24gZShhLGIpe2Zvcih2YXIgYz0wLGQ9YS5sZW5ndGg7YzxkO2MrKylpZihhW2NdPT09Yily
ZXR1cm4gYztyZXR1cm4tMX1mdW5jdGlvbiBmKGEpe2lmKCJzdHJpbmciIT10eXBlb2YgYSl7aWYo
YSYmYS50b0hUTUwpcmV0dXJuIGEudG9IVE1MKCk7aWYobnVsbD09YSlyZXR1cm4iIjtpZighYSly
ZXR1cm4gYSsiIjthPSIiK2F9cmV0dXJuIG0udGVzdChhKT9hLnJlcGxhY2UobCxjKTphfWZ1bmN0
aW9uIGcoYSl7cmV0dXJuIWEmJjAhPT1hfHwhKCFwKGEpfHwwIT09YS5sZW5ndGgpfWZ1bmN0aW9u
IGgoYSl7dmFyIGI9ZCh7fSxhKTtyZXR1cm4gYi5fcGFyZW50PWEsYn1mdW5jdGlvbiBpKGEsYil7
cmV0dXJuIGEucGF0aD1iLGF9ZnVuY3Rpb24gaihhLGIpe3JldHVybihhP2ErIi4iOiIiKStifWIu
X19lc01vZHVsZT0hMCxiLmV4dGVuZD1kLGIuaW5kZXhPZj1lLGIuZXNjYXBlRXhwcmVzc2lvbj1m
LGIuaXNFbXB0eT1nLGIuY3JlYXRlRnJhbWU9aCxiLmJsb2NrUGFyYW1zPWksYi5hcHBlbmRDb250
ZXh0UGF0aD1qO3ZhciBrPXsiJiI6IiZhbXA7IiwiPCI6IiZsdDsiLCI+IjoiJmd0OyIsJyInOiIm
cXVvdDsiLCInIjoiJiN4Mjc7IiwiYCI6IiYjeDYwOyIsIj0iOiImI3gzRDsifSxsPS9bJjw+Iidg
PV0vZyxtPS9bJjw+IidgPV0vLG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztiLnRvU3RyaW5n
PW47dmFyIG89ZnVuY3Rpb24oYSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGF9O28oL3gvKSYm
KGIuaXNGdW5jdGlvbj1vPWZ1bmN0aW9uKGEpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBhJiYi
W29iamVjdCBGdW5jdGlvbl0iPT09bi5jYWxsKGEpfSksYi5pc0Z1bmN0aW9uPW87dmFyIHA9QXJy
YXkuaXNBcnJheXx8ZnVuY3Rpb24oYSl7cmV0dXJuISghYXx8Im9iamVjdCIhPXR5cGVvZiBhKSYm
IltvYmplY3QgQXJyYXldIj09PW4uY2FsbChhKX07Yi5pc0FycmF5PXB9LGZ1bmN0aW9uKGEsYixj
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZChhLGIpe3ZhciBjPWImJmIubG9jLGc9dm9pZCAwLGg9
dm9pZCAwO2MmJihnPWMuc3RhcnQubGluZSxoPWMuc3RhcnQuY29sdW1uLGErPSIgLSAiK2crIjoi
K2gpO2Zvcih2YXIgaT1FcnJvci5wcm90b3R5cGUuY29uc3RydWN0b3IuY2FsbCh0aGlzLGEpLGo9
MDtqPGYubGVuZ3RoO2orKyl0aGlzW2Zbal1dPWlbZltqXV07RXJyb3IuY2FwdHVyZVN0YWNrVHJh
Y2UmJkVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsZCk7dHJ5e2MmJih0aGlzLmxpbmVOdW1i
ZXI9ZyxlP09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJjb2x1bW4iLHt2YWx1ZTpofSk6dGhp
cy5jb2x1bW49aCl9Y2F0Y2goayl7fX12YXIgZT1jKDcpWyJkZWZhdWx0Il07Yi5fX2VzTW9kdWxl
PSEwO3ZhciBmPVsiZGVzY3JpcHRpb24iLCJmaWxlTmFtZSIsImxpbmVOdW1iZXIiLCJtZXNzYWdl
IiwibmFtZSIsIm51bWJlciIsInN0YWNrIl07ZC5wcm90b3R5cGU9bmV3IEVycm9yLGJbImRlZmF1
bHQiXT1kLGEuZXhwb3J0cz1iWyJkZWZhdWx0Il19LGZ1bmN0aW9uKGEsYixjKXthLmV4cG9ydHM9
eyJkZWZhdWx0IjpjKDgpLF9fZXNNb2R1bGU6ITB9fSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9Yyg5
KTthLmV4cG9ydHM9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBkLnNldERlc2MoYSxiLGMpfX0sZnVu
Y3Rpb24oYSxiKXt2YXIgYz1PYmplY3Q7YS5leHBvcnRzPXtjcmVhdGU6Yy5jcmVhdGUsZ2V0UHJv
dG86Yy5nZXRQcm90b3R5cGVPZixpc0VudW06e30ucHJvcGVydHlJc0VudW1lcmFibGUsZ2V0RGVz
YzpjLmdldE93blByb3BlcnR5RGVzY3JpcHRvcixzZXREZXNjOmMuZGVmaW5lUHJvcGVydHksc2V0
RGVzY3M6Yy5kZWZpbmVQcm9wZXJ0aWVzLGdldEtleXM6Yy5rZXlzLGdldE5hbWVzOmMuZ2V0T3du
UHJvcGVydHlOYW1lcyxnZXRTeW1ib2xzOmMuZ2V0T3duUHJvcGVydHlTeW1ib2xzLGVhY2g6W10u
Zm9yRWFjaH19LGZ1bmN0aW9uKGEsYixjKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZChhKXtnWyJk
ZWZhdWx0Il0oYSksaVsiZGVmYXVsdCJdKGEpLGtbImRlZmF1bHQiXShhKSxtWyJkZWZhdWx0Il0o
YSksb1siZGVmYXVsdCJdKGEpLHFbImRlZmF1bHQiXShhKSxzWyJkZWZhdWx0Il0oYSl9dmFyIGU9
YygxKVsiZGVmYXVsdCJdO2IuX19lc01vZHVsZT0hMCxiLnJlZ2lzdGVyRGVmYXVsdEhlbHBlcnM9
ZDt2YXIgZj1jKDExKSxnPWUoZiksaD1jKDEyKSxpPWUoaCksaj1jKDEzKSxrPWUoaiksbD1jKDE0
KSxtPWUobCksbj1jKDE1KSxvPWUobikscD1jKDE2KSxxPWUocCkscj1jKDE3KSxzPWUocil9LGZ1
bmN0aW9uKGEsYixjKXsidXNlIHN0cmljdCI7Yi5fX2VzTW9kdWxlPSEwO3ZhciBkPWMoNSk7Ylsi
ZGVmYXVsdCJdPWZ1bmN0aW9uKGEpe2EucmVnaXN0ZXJIZWxwZXIoImJsb2NrSGVscGVyTWlzc2lu
ZyIsZnVuY3Rpb24oYixjKXt2YXIgZT1jLmludmVyc2UsZj1jLmZuO2lmKGI9PT0hMClyZXR1cm4g
Zih0aGlzKTtpZihiPT09ITF8fG51bGw9PWIpcmV0dXJuIGUodGhpcyk7aWYoZC5pc0FycmF5KGIp
KXJldHVybiBiLmxlbmd0aD4wPyhjLmlkcyYmKGMuaWRzPVtjLm5hbWVdKSxhLmhlbHBlcnMuZWFj
aChiLGMpKTplKHRoaXMpO2lmKGMuZGF0YSYmYy5pZHMpe3ZhciBnPWQuY3JlYXRlRnJhbWUoYy5k
YXRhKTtnLmNvbnRleHRQYXRoPWQuYXBwZW5kQ29udGV4dFBhdGgoYy5kYXRhLmNvbnRleHRQYXRo
LGMubmFtZSksYz17ZGF0YTpnfX1yZXR1cm4gZihiLGMpfSl9LGEuZXhwb3J0cz1iWyJkZWZhdWx0
Il19LGZ1bmN0aW9uKGEsYixjKXsidXNlIHN0cmljdCI7dmFyIGQ9YygxKVsiZGVmYXVsdCJdO2Iu
X19lc01vZHVsZT0hMDt2YXIgZT1jKDUpLGY9Yyg2KSxnPWQoZik7YlsiZGVmYXVsdCJdPWZ1bmN0
aW9uKGEpe2EucmVnaXN0ZXJIZWxwZXIoImVhY2giLGZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gYyhi
LGMsZil7aiYmKGoua2V5PWIsai5pbmRleD1jLGouZmlyc3Q9MD09PWMsai5sYXN0PSEhZixrJiYo
ai5jb250ZXh0UGF0aD1rK2IpKSxpKz1kKGFbYl0se2RhdGE6aixibG9ja1BhcmFtczplLmJsb2Nr
UGFyYW1zKFthW2JdLGJdLFtrK2IsbnVsbF0pfSl9aWYoIWIpdGhyb3cgbmV3IGdbImRlZmF1bHQi
XSgiTXVzdCBwYXNzIGl0ZXJhdG9yIHRvICNlYWNoIik7dmFyIGQ9Yi5mbixmPWIuaW52ZXJzZSxo
PTAsaT0iIixqPXZvaWQgMCxrPXZvaWQgMDtpZihiLmRhdGEmJmIuaWRzJiYoaz1lLmFwcGVuZENv
bnRleHRQYXRoKGIuZGF0YS5jb250ZXh0UGF0aCxiLmlkc1swXSkrIi4iKSxlLmlzRnVuY3Rpb24o
YSkmJihhPWEuY2FsbCh0aGlzKSksYi5kYXRhJiYoaj1lLmNyZWF0ZUZyYW1lKGIuZGF0YSkpLGEm
JiJvYmplY3QiPT10eXBlb2YgYSlpZihlLmlzQXJyYXkoYSkpZm9yKHZhciBsPWEubGVuZ3RoO2g8
bDtoKyspaCBpbiBhJiZjKGgsaCxoPT09YS5sZW5ndGgtMSk7ZWxzZXt2YXIgbT12b2lkIDA7Zm9y
KHZhciBuIGluIGEpYS5oYXNPd25Qcm9wZXJ0eShuKSYmKHZvaWQgMCE9PW0mJmMobSxoLTEpLG09
bixoKyspO3ZvaWQgMCE9PW0mJmMobSxoLTEsITApfXJldHVybiAwPT09aCYmKGk9Zih0aGlzKSks
aX0pfSxhLmV4cG9ydHM9YlsiZGVmYXVsdCJdfSxmdW5jdGlvbihhLGIsYyl7InVzZSBzdHJpY3Qi
O3ZhciBkPWMoMSlbImRlZmF1bHQiXTtiLl9fZXNNb2R1bGU9ITA7dmFyIGU9Yyg2KSxmPWQoZSk7
YlsiZGVmYXVsdCJdPWZ1bmN0aW9uKGEpe2EucmVnaXN0ZXJIZWxwZXIoImhlbHBlck1pc3Npbmci
LGZ1bmN0aW9uKCl7aWYoMSE9PWFyZ3VtZW50cy5sZW5ndGgpdGhyb3cgbmV3IGZbImRlZmF1bHQi
XSgnTWlzc2luZyBoZWxwZXI6ICInK2FyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoLTFdLm5hbWUr
JyInKX0pfSxhLmV4cG9ydHM9YlsiZGVmYXVsdCJdfSxmdW5jdGlvbihhLGIsYyl7InVzZSBzdHJp
Y3QiO2IuX19lc01vZHVsZT0hMDt2YXIgZD1jKDUpO2JbImRlZmF1bHQiXT1mdW5jdGlvbihhKXth
LnJlZ2lzdGVySGVscGVyKCJpZiIsZnVuY3Rpb24oYSxiKXtyZXR1cm4gZC5pc0Z1bmN0aW9uKGEp
JiYoYT1hLmNhbGwodGhpcykpLCFiLmhhc2guaW5jbHVkZVplcm8mJiFhfHxkLmlzRW1wdHkoYSk/
Yi5pbnZlcnNlKHRoaXMpOmIuZm4odGhpcyl9KSxhLnJlZ2lzdGVySGVscGVyKCJ1bmxlc3MiLGZ1
bmN0aW9uKGIsYyl7cmV0dXJuIGEuaGVscGVyc1siaWYiXS5jYWxsKHRoaXMsYix7Zm46Yy5pbnZl
cnNlLGludmVyc2U6Yy5mbixoYXNoOmMuaGFzaH0pfSl9LGEuZXhwb3J0cz1iWyJkZWZhdWx0Il19
LGZ1bmN0aW9uKGEsYil7InVzZSBzdHJpY3QiO2IuX19lc01vZHVsZT0hMCxiWyJkZWZhdWx0Il09
ZnVuY3Rpb24oYSl7YS5yZWdpc3RlckhlbHBlcigibG9nIixmdW5jdGlvbigpe2Zvcih2YXIgYj1b
dm9pZCAwXSxjPWFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoLTFdLGQ9MDtkPGFyZ3VtZW50cy5s
ZW5ndGgtMTtkKyspYi5wdXNoKGFyZ3VtZW50c1tkXSk7dmFyIGU9MTtudWxsIT1jLmhhc2gubGV2
ZWw/ZT1jLmhhc2gubGV2ZWw6Yy5kYXRhJiZudWxsIT1jLmRhdGEubGV2ZWwmJihlPWMuZGF0YS5s
ZXZlbCksYlswXT1lLGEubG9nLmFwcGx5KGEsYil9KX0sYS5leHBvcnRzPWJbImRlZmF1bHQiXX0s
ZnVuY3Rpb24oYSxiKXsidXNlIHN0cmljdCI7Yi5fX2VzTW9kdWxlPSEwLGJbImRlZmF1bHQiXT1m
dW5jdGlvbihhKXthLnJlZ2lzdGVySGVscGVyKCJsb29rdXAiLGZ1bmN0aW9uKGEsYil7cmV0dXJu
IGEmJmFbYl19KX0sYS5leHBvcnRzPWJbImRlZmF1bHQiXX0sZnVuY3Rpb24oYSxiLGMpeyJ1c2Ug
c3RyaWN0IjtiLl9fZXNNb2R1bGU9ITA7dmFyIGQ9Yyg1KTtiWyJkZWZhdWx0Il09ZnVuY3Rpb24o
YSl7YS5yZWdpc3RlckhlbHBlcigid2l0aCIsZnVuY3Rpb24oYSxiKXtkLmlzRnVuY3Rpb24oYSkm
JihhPWEuY2FsbCh0aGlzKSk7dmFyIGM9Yi5mbjtpZihkLmlzRW1wdHkoYSkpcmV0dXJuIGIuaW52
ZXJzZSh0aGlzKTt2YXIgZT1iLmRhdGE7cmV0dXJuIGIuZGF0YSYmYi5pZHMmJihlPWQuY3JlYXRl
RnJhbWUoYi5kYXRhKSxlLmNvbnRleHRQYXRoPWQuYXBwZW5kQ29udGV4dFBhdGgoYi5kYXRhLmNv
bnRleHRQYXRoLGIuaWRzWzBdKSksYyhhLHtkYXRhOmUsYmxvY2tQYXJhbXM6ZC5ibG9ja1BhcmFt
cyhbYV0sW2UmJmUuY29udGV4dFBhdGhdKX0pfSl9LGEuZXhwb3J0cz1iWyJkZWZhdWx0Il19LGZ1
bmN0aW9uKGEsYixjKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZChhKXtnWyJkZWZhdWx0Il0oYSl9
dmFyIGU9YygxKVsiZGVmYXVsdCJdO2IuX19lc01vZHVsZT0hMCxiLnJlZ2lzdGVyRGVmYXVsdERl
Y29yYXRvcnM9ZDt2YXIgZj1jKDE5KSxnPWUoZil9LGZ1bmN0aW9uKGEsYixjKXsidXNlIHN0cmlj
dCI7Yi5fX2VzTW9kdWxlPSEwO3ZhciBkPWMoNSk7YlsiZGVmYXVsdCJdPWZ1bmN0aW9uKGEpe2Eu
cmVnaXN0ZXJEZWNvcmF0b3IoImlubGluZSIsZnVuY3Rpb24oYSxiLGMsZSl7dmFyIGY9YTtyZXR1
cm4gYi5wYXJ0aWFsc3x8KGIucGFydGlhbHM9e30sZj1mdW5jdGlvbihlLGYpe3ZhciBnPWMucGFy
dGlhbHM7Yy5wYXJ0aWFscz1kLmV4dGVuZCh7fSxnLGIucGFydGlhbHMpO3ZhciBoPWEoZSxmKTty
ZXR1cm4gYy5wYXJ0aWFscz1nLGh9KSxiLnBhcnRpYWxzW2UuYXJnc1swXV09ZS5mbixmfSl9LGEu
ZXhwb3J0cz1iWyJkZWZhdWx0Il19LGZ1bmN0aW9uKGEsYixjKXsidXNlIHN0cmljdCI7Yi5fX2Vz
TW9kdWxlPSEwO3ZhciBkPWMoNSksZT17bWV0aG9kTWFwOlsiZGVidWciLCJpbmZvIiwid2FybiIs
ImVycm9yIl0sbGV2ZWw6ImluZm8iLGxvb2t1cExldmVsOmZ1bmN0aW9uKGEpe2lmKCJzdHJpbmci
PT10eXBlb2YgYSl7dmFyIGI9ZC5pbmRleE9mKGUubWV0aG9kTWFwLGEudG9Mb3dlckNhc2UoKSk7
YT1iPj0wP2I6cGFyc2VJbnQoYSwxMCl9cmV0dXJuIGF9LGxvZzpmdW5jdGlvbihhKXtpZihhPWUu
bG9va3VwTGV2ZWwoYSksInVuZGVmaW5lZCIhPXR5cGVvZiBjb25zb2xlJiZlLmxvb2t1cExldmVs
KGUubGV2ZWwpPD1hKXt2YXIgYj1lLm1ldGhvZE1hcFthXTtjb25zb2xlW2JdfHwoYj0ibG9nIik7
Zm9yKHZhciBjPWFyZ3VtZW50cy5sZW5ndGgsZD1BcnJheShjPjE/Yy0xOjApLGY9MTtmPGM7Zisr
KWRbZi0xXT1hcmd1bWVudHNbZl07Y29uc29sZVtiXS5hcHBseShjb25zb2xlLGQpfX19O2JbImRl
ZmF1bHQiXT1lLGEuZXhwb3J0cz1iWyJkZWZhdWx0Il19LGZ1bmN0aW9uKGEsYil7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIGMoYSl7dGhpcy5zdHJpbmc9YX1iLl9fZXNNb2R1bGU9ITAsYy5wcm90b3R5
cGUudG9TdHJpbmc9Yy5wcm90b3R5cGUudG9IVE1MPWZ1bmN0aW9uKCl7cmV0dXJuIiIrdGhpcy5z
dHJpbmd9LGJbImRlZmF1bHQiXT1jLGEuZXhwb3J0cz1iWyJkZWZhdWx0Il19LGZ1bmN0aW9uKGEs
YixjKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZChhKXt2YXIgYj1hJiZhWzBdfHwxLGM9ci5DT01Q
SUxFUl9SRVZJU0lPTjtpZihiIT09Yyl7aWYoYjxjKXt2YXIgZD1yLlJFVklTSU9OX0NIQU5HRVNb
Y10sZT1yLlJFVklTSU9OX0NIQU5HRVNbYl07dGhyb3cgbmV3IHFbImRlZmF1bHQiXSgiVGVtcGxh
dGUgd2FzIHByZWNvbXBpbGVkIHdpdGggYW4gb2xkZXIgdmVyc2lvbiBvZiBIYW5kbGViYXJzIHRo
YW4gdGhlIGN1cnJlbnQgcnVudGltZS4gUGxlYXNlIHVwZGF0ZSB5b3VyIHByZWNvbXBpbGVyIHRv
IGEgbmV3ZXIgdmVyc2lvbiAoIitkKyIpIG9yIGRvd25ncmFkZSB5b3VyIHJ1bnRpbWUgdG8gYW4g
b2xkZXIgdmVyc2lvbiAoIitlKyIpLiIpfXRocm93IG5ldyBxWyJkZWZhdWx0Il0oIlRlbXBsYXRl
IHdhcyBwcmVjb21waWxlZCB3aXRoIGEgbmV3ZXIgdmVyc2lvbiBvZiBIYW5kbGViYXJzIHRoYW4g
dGhlIGN1cnJlbnQgcnVudGltZS4gUGxlYXNlIHVwZGF0ZSB5b3VyIHJ1bnRpbWUgdG8gYSBuZXdl
ciB2ZXJzaW9uICgiK2FbMV0rIikuIil9fWZ1bmN0aW9uIGUoYSxiKXtmdW5jdGlvbiBjKGMsZCxl
KXtlLmhhc2gmJihkPW8uZXh0ZW5kKHt9LGQsZS5oYXNoKSxlLmlkcyYmKGUuaWRzWzBdPSEwKSks
Yz1iLlZNLnJlc29sdmVQYXJ0aWFsLmNhbGwodGhpcyxjLGQsZSk7dmFyIGY9Yi5WTS5pbnZva2VQ
YXJ0aWFsLmNhbGwodGhpcyxjLGQsZSk7aWYobnVsbD09ZiYmYi5jb21waWxlJiYoZS5wYXJ0aWFs
c1tlLm5hbWVdPWIuY29tcGlsZShjLGEuY29tcGlsZXJPcHRpb25zLGIpLGY9ZS5wYXJ0aWFsc1tl
Lm5hbWVdKGQsZSkpLG51bGwhPWYpe2lmKGUuaW5kZW50KXtmb3IodmFyIGc9Zi5zcGxpdCgiXG4i
KSxoPTAsaT1nLmxlbmd0aDtoPGkmJihnW2hdfHxoKzEhPT1pKTtoKyspZ1toXT1lLmluZGVudCtn
W2hdO2Y9Zy5qb2luKCJcbiIpfXJldHVybiBmfXRocm93IG5ldyBxWyJkZWZhdWx0Il0oIlRoZSBw
YXJ0aWFsICIrZS5uYW1lKyIgY291bGQgbm90IGJlIGNvbXBpbGVkIHdoZW4gcnVubmluZyBpbiBy
dW50aW1lLW9ubHkgbW9kZSIpfWZ1bmN0aW9uIGQoYil7ZnVuY3Rpb24gYyhiKXtyZXR1cm4iIith
Lm1haW4oZSxiLGUuaGVscGVycyxlLnBhcnRpYWxzLGcsaSxoKX12YXIgZj1hcmd1bWVudHMubGVu
Z3RoPD0xfHx2b2lkIDA9PT1hcmd1bWVudHNbMV0/e306YXJndW1lbnRzWzFdLGc9Zi5kYXRhO2Qu
X3NldHVwKGYpLCFmLnBhcnRpYWwmJmEudXNlRGF0YSYmKGc9aihiLGcpKTt2YXIgaD12b2lkIDAs
aT1hLnVzZUJsb2NrUGFyYW1zP1tdOnZvaWQgMDtyZXR1cm4gYS51c2VEZXB0aHMmJihoPWYuZGVw
dGhzP2IhPWYuZGVwdGhzWzBdP1tiXS5jb25jYXQoZi5kZXB0aHMpOmYuZGVwdGhzOltiXSksKGM9
ayhhLm1haW4sYyxlLGYuZGVwdGhzfHxbXSxnLGkpKShiLGYpfWlmKCFiKXRocm93IG5ldyBxWyJk
ZWZhdWx0Il0oIk5vIGVudmlyb25tZW50IHBhc3NlZCB0byB0ZW1wbGF0ZSIpO2lmKCFhfHwhYS5t
YWluKXRocm93IG5ldyBxWyJkZWZhdWx0Il0oIlVua25vd24gdGVtcGxhdGUgb2JqZWN0OiAiK3R5
cGVvZiBhKTthLm1haW4uZGVjb3JhdG9yPWEubWFpbl9kLGIuVk0uY2hlY2tSZXZpc2lvbihhLmNv
bXBpbGVyKTt2YXIgZT17c3RyaWN0OmZ1bmN0aW9uKGEsYil7aWYoIShiIGluIGEpKXRocm93IG5l
dyBxWyJkZWZhdWx0Il0oJyInK2IrJyIgbm90IGRlZmluZWQgaW4gJythKTtyZXR1cm4gYVtiXX0s
bG9va3VwOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPWEubGVuZ3RoLGQ9MDtkPGM7ZCsrKWlmKGFb
ZF0mJm51bGwhPWFbZF1bYl0pcmV0dXJuIGFbZF1bYl19LGxhbWJkYTpmdW5jdGlvbihhLGIpe3Jl
dHVybiJmdW5jdGlvbiI9PXR5cGVvZiBhP2EuY2FsbChiKTphfSxlc2NhcGVFeHByZXNzaW9uOm8u
ZXNjYXBlRXhwcmVzc2lvbixpbnZva2VQYXJ0aWFsOmMsZm46ZnVuY3Rpb24oYil7dmFyIGM9YVti
XTtyZXR1cm4gYy5kZWNvcmF0b3I9YVtiKyJfZCJdLGN9LHByb2dyYW1zOltdLHByb2dyYW06ZnVu
Y3Rpb24oYSxiLGMsZCxlKXt2YXIgZz10aGlzLnByb2dyYW1zW2FdLGg9dGhpcy5mbihhKTtyZXR1
cm4gYnx8ZXx8ZHx8Yz9nPWYodGhpcyxhLGgsYixjLGQsZSk6Z3x8KGc9dGhpcy5wcm9ncmFtc1th
XT1mKHRoaXMsYSxoKSksZ30sZGF0YTpmdW5jdGlvbihhLGIpe2Zvcig7YSYmYi0tOylhPWEuX3Bh
cmVudDtyZXR1cm4gYX0sbWVyZ2U6ZnVuY3Rpb24oYSxiKXt2YXIgYz1hfHxiO3JldHVybiBhJiZi
JiZhIT09YiYmKGM9by5leHRlbmQoe30sYixhKSksY30sbm9vcDpiLlZNLm5vb3AsY29tcGlsZXJJ
bmZvOmEuY29tcGlsZXJ9O3JldHVybiBkLmlzVG9wPSEwLGQuX3NldHVwPWZ1bmN0aW9uKGMpe2Mu
cGFydGlhbD8oZS5oZWxwZXJzPWMuaGVscGVycyxlLnBhcnRpYWxzPWMucGFydGlhbHMsZS5kZWNv
cmF0b3JzPWMuZGVjb3JhdG9ycyk6KGUuaGVscGVycz1lLm1lcmdlKGMuaGVscGVycyxiLmhlbHBl
cnMpLGEudXNlUGFydGlhbCYmKGUucGFydGlhbHM9ZS5tZXJnZShjLnBhcnRpYWxzLGIucGFydGlh
bHMpKSwoYS51c2VQYXJ0aWFsfHxhLnVzZURlY29yYXRvcnMpJiYoZS5kZWNvcmF0b3JzPWUubWVy
Z2UoYy5kZWNvcmF0b3JzLGIuZGVjb3JhdG9ycykpKX0sZC5fY2hpbGQ9ZnVuY3Rpb24oYixjLGQs
Zyl7aWYoYS51c2VCbG9ja1BhcmFtcyYmIWQpdGhyb3cgbmV3IHFbImRlZmF1bHQiXSgibXVzdCBw
YXNzIGJsb2NrIHBhcmFtcyIpO2lmKGEudXNlRGVwdGhzJiYhZyl0aHJvdyBuZXcgcVsiZGVmYXVs
dCJdKCJtdXN0IHBhc3MgcGFyZW50IGRlcHRocyIpO3JldHVybiBmKGUsYixhW2JdLGMsMCxkLGcp
fSxkfWZ1bmN0aW9uIGYoYSxiLGMsZCxlLGYsZyl7ZnVuY3Rpb24gaChiKXt2YXIgZT1hcmd1bWVu
dHMubGVuZ3RoPD0xfHx2b2lkIDA9PT1hcmd1bWVudHNbMV0/e306YXJndW1lbnRzWzFdLGg9Zzty
ZXR1cm4gZyYmYiE9Z1swXSYmKGg9W2JdLmNvbmNhdChnKSksYyhhLGIsYS5oZWxwZXJzLGEucGFy
dGlhbHMsZS5kYXRhfHxkLGYmJltlLmJsb2NrUGFyYW1zXS5jb25jYXQoZiksaCl9cmV0dXJuIGg9
ayhjLGgsYSxnLGQsZiksaC5wcm9ncmFtPWIsaC5kZXB0aD1nP2cubGVuZ3RoOjAsaC5ibG9ja1Bh
cmFtcz1lfHwwLGh9ZnVuY3Rpb24gZyhhLGIsYyl7aWYoYSlhLmNhbGx8fGMubmFtZXx8KGMubmFt
ZT1hLGE9Yy5wYXJ0aWFsc1thXSk7ZWxzZSBpZigiQHBhcnRpYWwtYmxvY2siPT09Yy5uYW1lKXtm
b3IodmFyIGQ9Yy5kYXRhO2RbInBhcnRpYWwtYmxvY2siXT09PWk7KWQ9ZC5fcGFyZW50O2E9ZFsi
cGFydGlhbC1ibG9jayJdLGRbInBhcnRpYWwtYmxvY2siXT1pfWVsc2UgYT1jLnBhcnRpYWxzW2Mu
bmFtZV07cmV0dXJuIGF9ZnVuY3Rpb24gaChhLGIsYyl7Yy5wYXJ0aWFsPSEwLGMuaWRzJiYoYy5k
YXRhLmNvbnRleHRQYXRoPWMuaWRzWzBdfHxjLmRhdGEuY29udGV4dFBhdGgpO3ZhciBkPXZvaWQg
MDtpZihjLmZuJiZjLmZuIT09aSYmKGMuZGF0YT1yLmNyZWF0ZUZyYW1lKGMuZGF0YSksZD1jLmRh
dGFbInBhcnRpYWwtYmxvY2siXT1jLmZuLGQucGFydGlhbHMmJihjLnBhcnRpYWxzPW8uZXh0ZW5k
KHt9LGMucGFydGlhbHMsZC5wYXJ0aWFscykpKSx2b2lkIDA9PT1hJiZkJiYoYT1kKSx2b2lkIDA9
PT1hKXRocm93IG5ldyBxWyJkZWZhdWx0Il0oIlRoZSBwYXJ0aWFsICIrYy5uYW1lKyIgY291bGQg
bm90IGJlIGZvdW5kIik7aWYoYSBpbnN0YW5jZW9mIEZ1bmN0aW9uKXJldHVybiBhKGIsYyl9ZnVu
Y3Rpb24gaSgpe3JldHVybiIifWZ1bmN0aW9uIGooYSxiKXtyZXR1cm4gYiYmInJvb3QiaW4gYnx8
KGI9Yj9yLmNyZWF0ZUZyYW1lKGIpOnt9LGIucm9vdD1hKSxifWZ1bmN0aW9uIGsoYSxiLGMsZCxl
LGYpe2lmKGEuZGVjb3JhdG9yKXt2YXIgZz17fTtiPWEuZGVjb3JhdG9yKGIsZyxjLGQmJmRbMF0s
ZSxmLGQpLG8uZXh0ZW5kKGIsZyl9cmV0dXJuIGJ9dmFyIGw9YygzKVsiZGVmYXVsdCJdLG09Yygx
KVsiZGVmYXVsdCJdO2IuX19lc01vZHVsZT0hMCxiLmNoZWNrUmV2aXNpb249ZCxiLnRlbXBsYXRl
PWUsYi53cmFwUHJvZ3JhbT1mLGIucmVzb2x2ZVBhcnRpYWw9ZyxiLmludm9rZVBhcnRpYWw9aCxi
Lm5vb3A9aTt2YXIgbj1jKDUpLG89bChuKSxwPWMoNikscT1tKHApLHI9Yyg0KX0sZnVuY3Rpb24o
YSxiKXsoZnVuY3Rpb24oYyl7InVzZSBzdHJpY3QiO2IuX19lc01vZHVsZT0hMCxiWyJkZWZhdWx0
Il09ZnVuY3Rpb24oYSl7dmFyIGI9InVuZGVmaW5lZCIhPXR5cGVvZiBjP2M6d2luZG93LGQ9Yi5I
YW5kbGViYXJzO2Eubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBiLkhhbmRsZWJhcnM9PT1h
JiYoYi5IYW5kbGViYXJzPWQpLGF9fSxhLmV4cG9ydHM9YlsiZGVmYXVsdCJdfSkuY2FsbChiLGZ1
bmN0aW9uKCl7cmV0dXJuIHRoaXN9KCkpfSxmdW5jdGlvbihhLGIpeyJ1c2Ugc3RyaWN0IjtiLl9f
ZXNNb2R1bGU9ITA7dmFyIGM9e2hlbHBlcnM6e2hlbHBlckV4cHJlc3Npb246ZnVuY3Rpb24oYSl7
cmV0dXJuIlN1YkV4cHJlc3Npb24iPT09YS50eXBlfHwoIk11c3RhY2hlU3RhdGVtZW50Ij09PWEu
dHlwZXx8IkJsb2NrU3RhdGVtZW50Ij09PWEudHlwZSkmJiEhKGEucGFyYW1zJiZhLnBhcmFtcy5s
ZW5ndGh8fGEuaGFzaCl9LHNjb3BlZElkOmZ1bmN0aW9uKGEpe3JldHVybi9eXC58dGhpc1xiLy50
ZXN0KGEub3JpZ2luYWwpfSxzaW1wbGVJZDpmdW5jdGlvbihhKXtyZXR1cm4gMT09PWEucGFydHMu
bGVuZ3RoJiYhYy5oZWxwZXJzLnNjb3BlZElkKGEpJiYhYS5kZXB0aH19fTtiWyJkZWZhdWx0Il09
YyxhLmV4cG9ydHM9YlsiZGVmYXVsdCJdfSxmdW5jdGlvbihhLGIsYyl7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIGQoYSxiKXtpZigiUHJvZ3JhbSI9PT1hLnR5cGUpcmV0dXJuIGE7aFsiZGVmYXVsdCJd
Lnl5PW4sbi5sb2NJbmZvPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcgbi5Tb3VyY2VMb2NhdGlvbihi
JiZiLnNyY05hbWUsYSl9O3ZhciBjPW5ldyBqWyJkZWZhdWx0Il0oYik7cmV0dXJuIGMuYWNjZXB0
KGhbImRlZmF1bHQiXS5wYXJzZShhKSl9dmFyIGU9YygxKVsiZGVmYXVsdCJdLGY9YygzKVsiZGVm
YXVsdCJdO2IuX19lc01vZHVsZT0hMCxiLnBhcnNlPWQ7dmFyIGc9YygyNiksaD1lKGcpLGk9Yygy
Nyksaj1lKGkpLGs9YygyOSksbD1mKGspLG09Yyg1KTtiLnBhcnNlcj1oWyJkZWZhdWx0Il07dmFy
IG49e307bS5leHRlbmQobixsKX0sZnVuY3Rpb24oYSxiKXsidXNlIHN0cmljdCI7dmFyIGM9ZnVu
Y3Rpb24oKXtmdW5jdGlvbiBhKCl7dGhpcy55eT17fX12YXIgYj17dHJhY2U6ZnVuY3Rpb24oKXt9
LHl5Ont9LHN5bWJvbHNfOntlcnJvcjoyLHJvb3Q6Myxwcm9ncmFtOjQsRU9GOjUscHJvZ3JhbV9y
ZXBldGl0aW9uMDo2LHN0YXRlbWVudDo3LG11c3RhY2hlOjgsYmxvY2s6OSxyYXdCbG9jazoxMCxw
YXJ0aWFsOjExLHBhcnRpYWxCbG9jazoxMixjb250ZW50OjEzLENPTU1FTlQ6MTQsQ09OVEVOVDox
NSxvcGVuUmF3QmxvY2s6MTYscmF3QmxvY2tfcmVwZXRpdGlvbl9wbHVzMDoxNyxFTkRfUkFXX0JM
T0NLOjE4LE9QRU5fUkFXX0JMT0NLOjE5LGhlbHBlck5hbWU6MjAsb3BlblJhd0Jsb2NrX3JlcGV0
aXRpb24wOjIxLG9wZW5SYXdCbG9ja19vcHRpb24wOjIyLENMT1NFX1JBV19CTE9DSzoyMyxvcGVu
QmxvY2s6MjQsYmxvY2tfb3B0aW9uMDoyNSxjbG9zZUJsb2NrOjI2LG9wZW5JbnZlcnNlOjI3LGJs
b2NrX29wdGlvbjE6MjgsT1BFTl9CTE9DSzoyOSxvcGVuQmxvY2tfcmVwZXRpdGlvbjA6MzAsb3Bl
bkJsb2NrX29wdGlvbjA6MzEsb3BlbkJsb2NrX29wdGlvbjE6MzIsQ0xPU0U6MzMsT1BFTl9JTlZF
UlNFOjM0LG9wZW5JbnZlcnNlX3JlcGV0aXRpb24wOjM1LG9wZW5JbnZlcnNlX29wdGlvbjA6MzYs
b3BlbkludmVyc2Vfb3B0aW9uMTozNyxvcGVuSW52ZXJzZUNoYWluOjM4LE9QRU5fSU5WRVJTRV9D
SEFJTjozOSxvcGVuSW52ZXJzZUNoYWluX3JlcGV0aXRpb24wOjQwLG9wZW5JbnZlcnNlQ2hhaW5f
b3B0aW9uMDo0MSxvcGVuSW52ZXJzZUNoYWluX29wdGlvbjE6NDIsaW52ZXJzZUFuZFByb2dyYW06
NDMsSU5WRVJTRTo0NCxpbnZlcnNlQ2hhaW46NDUsaW52ZXJzZUNoYWluX29wdGlvbjA6NDYsT1BF
Tl9FTkRCTE9DSzo0NyxPUEVOOjQ4LG11c3RhY2hlX3JlcGV0aXRpb24wOjQ5LG11c3RhY2hlX29w
dGlvbjA6NTAsT1BFTl9VTkVTQ0FQRUQ6NTEsbXVzdGFjaGVfcmVwZXRpdGlvbjE6NTIsbXVzdGFj
aGVfb3B0aW9uMTo1MyxDTE9TRV9VTkVTQ0FQRUQ6NTQsT1BFTl9QQVJUSUFMOjU1LHBhcnRpYWxO
YW1lOjU2LHBhcnRpYWxfcmVwZXRpdGlvbjA6NTcscGFydGlhbF9vcHRpb24wOjU4LG9wZW5QYXJ0
aWFsQmxvY2s6NTksT1BFTl9QQVJUSUFMX0JMT0NLOjYwLG9wZW5QYXJ0aWFsQmxvY2tfcmVwZXRp
dGlvbjA6NjEsb3BlblBhcnRpYWxCbG9ja19vcHRpb24wOjYyLHBhcmFtOjYzLHNleHByOjY0LE9Q
RU5fU0VYUFI6NjUsc2V4cHJfcmVwZXRpdGlvbjA6NjYsc2V4cHJfb3B0aW9uMDo2NyxDTE9TRV9T
RVhQUjo2OCxoYXNoOjY5LGhhc2hfcmVwZXRpdGlvbl9wbHVzMDo3MCxoYXNoU2VnbWVudDo3MSxJ
RDo3MixFUVVBTFM6NzMsYmxvY2tQYXJhbXM6NzQsT1BFTl9CTE9DS19QQVJBTVM6NzUsYmxvY2tQ
YXJhbXNfcmVwZXRpdGlvbl9wbHVzMDo3NixDTE9TRV9CTE9DS19QQVJBTVM6NzcscGF0aDo3OCxk
YXRhTmFtZTo3OSxTVFJJTkc6ODAsTlVNQkVSOjgxLEJPT0xFQU46ODIsVU5ERUZJTkVEOjgzLE5V
TEw6ODQsREFUQTo4NSxwYXRoU2VnbWVudHM6ODYsU0VQOjg3LCRhY2NlcHQ6MCwkZW5kOjF9LHRl
cm1pbmFsc186ezI6ImVycm9yIiw1OiJFT0YiLDE0OiJDT01NRU5UIiwxNToiQ09OVEVOVCIsMTg6
IkVORF9SQVdfQkxPQ0siLDE5OiJPUEVOX1JBV19CTE9DSyIsMjM6IkNMT1NFX1JBV19CTE9DSyIs
Mjk6Ik9QRU5fQkxPQ0siLDMzOiJDTE9TRSIsMzQ6Ik9QRU5fSU5WRVJTRSIsMzk6Ik9QRU5fSU5W
RVJTRV9DSEFJTiIsNDQ6IklOVkVSU0UiLDQ3OiJPUEVOX0VOREJMT0NLIiw0ODoiT1BFTiIsNTE6
Ik9QRU5fVU5FU0NBUEVEIiw1NDoiQ0xPU0VfVU5FU0NBUEVEIiw1NToiT1BFTl9QQVJUSUFMIiw2
MDoiT1BFTl9QQVJUSUFMX0JMT0NLIiw2NToiT1BFTl9TRVhQUiIsNjg6IkNMT1NFX1NFWFBSIiw3
MjoiSUQiLDczOiJFUVVBTFMiLDc1OiJPUEVOX0JMT0NLX1BBUkFNUyIsNzc6IkNMT1NFX0JMT0NL
X1BBUkFNUyIsODA6IlNUUklORyIsODE6Ik5VTUJFUiIsODI6IkJPT0xFQU4iLDgzOiJVTkRFRklO
RUQiLDg0OiJOVUxMIiw4NToiREFUQSIsODc6IlNFUCJ9LHByb2R1Y3Rpb25zXzpbMCxbMywyXSxb
NCwxXSxbNywxXSxbNywxXSxbNywxXSxbNywxXSxbNywxXSxbNywxXSxbNywxXSxbMTMsMV0sWzEw
LDNdLFsxNiw1XSxbOSw0XSxbOSw0XSxbMjQsNl0sWzI3LDZdLFszOCw2XSxbNDMsMl0sWzQ1LDNd
LFs0NSwxXSxbMjYsM10sWzgsNV0sWzgsNV0sWzExLDVdLFsxMiwzXSxbNTksNV0sWzYzLDFdLFs2
MywxXSxbNjQsNV0sWzY5LDFdLFs3MSwzXSxbNzQsM10sWzIwLDFdLFsyMCwxXSxbMjAsMV0sWzIw
LDFdLFsyMCwxXSxbMjAsMV0sWzIwLDFdLFs1NiwxXSxbNTYsMV0sWzc5LDJdLFs3OCwxXSxbODYs
M10sWzg2LDFdLFs2LDBdLFs2LDJdLFsxNywxXSxbMTcsMl0sWzIxLDBdLFsyMSwyXSxbMjIsMF0s
WzIyLDFdLFsyNSwwXSxbMjUsMV0sWzI4LDBdLFsyOCwxXSxbMzAsMF0sWzMwLDJdLFszMSwwXSxb
MzEsMV0sWzMyLDBdLFszMiwxXSxbMzUsMF0sWzM1LDJdLFszNiwwXSxbMzYsMV0sWzM3LDBdLFsz
NywxXSxbNDAsMF0sWzQwLDJdLFs0MSwwXSxbNDEsMV0sWzQyLDBdLFs0MiwxXSxbNDYsMF0sWzQ2
LDFdLFs0OSwwXSxbNDksMl0sWzUwLDBdLFs1MCwxXSxbNTIsMF0sWzUyLDJdLFs1MywwXSxbNTMs
MV0sWzU3LDBdLFs1NywyXSxbNTgsMF0sWzU4LDFdLFs2MSwwXSxbNjEsMl0sWzYyLDBdLFs2Miwx
XSxbNjYsMF0sWzY2LDJdLFs2NywwXSxbNjcsMV0sWzcwLDFdLFs3MCwyXSxbNzYsMV0sWzc2LDJd
XSxwZXJmb3JtQWN0aW9uOmZ1bmN0aW9uKGEsYixjLGQsZSxmLGcpe3ZhciBoPWYubGVuZ3RoLTE7
c3dpdGNoKGUpe2Nhc2UgMTpyZXR1cm4gZltoLTFdO2Nhc2UgMjp0aGlzLiQ9ZC5wcmVwYXJlUHJv
Z3JhbShmW2hdKTticmVhaztjYXNlIDM6dGhpcy4kPWZbaF07YnJlYWs7Y2FzZSA0OnRoaXMuJD1m
W2hdO2JyZWFrO2Nhc2UgNTp0aGlzLiQ9ZltoXTticmVhaztjYXNlIDY6dGhpcy4kPWZbaF07YnJl
YWs7Y2FzZSA3OnRoaXMuJD1mW2hdO2JyZWFrO2Nhc2UgODp0aGlzLiQ9ZltoXTticmVhaztjYXNl
IDk6dGhpcy4kPXt0eXBlOiJDb21tZW50U3RhdGVtZW50Iix2YWx1ZTpkLnN0cmlwQ29tbWVudChm
W2hdKSxzdHJpcDpkLnN0cmlwRmxhZ3MoZltoXSxmW2hdKSxsb2M6ZC5sb2NJbmZvKHRoaXMuXyQp
fTticmVhaztjYXNlIDEwOnRoaXMuJD17dHlwZToiQ29udGVudFN0YXRlbWVudCIsb3JpZ2luYWw6
ZltoXSx2YWx1ZTpmW2hdLGxvYzpkLmxvY0luZm8odGhpcy5fJCl9O2JyZWFrO2Nhc2UgMTE6dGhp
cy4kPWQucHJlcGFyZVJhd0Jsb2NrKGZbaC0yXSxmW2gtMV0sZltoXSx0aGlzLl8kKTticmVhaztj
YXNlIDEyOnRoaXMuJD17cGF0aDpmW2gtM10scGFyYW1zOmZbaC0yXSxoYXNoOmZbaC0xXX07YnJl
YWs7Y2FzZSAxMzp0aGlzLiQ9ZC5wcmVwYXJlQmxvY2soZltoLTNdLGZbaC0yXSxmW2gtMV0sZlto
XSwhMSx0aGlzLl8kKTticmVhaztjYXNlIDE0OnRoaXMuJD1kLnByZXBhcmVCbG9jayhmW2gtM10s
ZltoLTJdLGZbaC0xXSxmW2hdLCEwLHRoaXMuXyQpO2JyZWFrO2Nhc2UgMTU6dGhpcy4kPXtvcGVu
OmZbaC01XSxwYXRoOmZbaC00XSxwYXJhbXM6ZltoLTNdLGhhc2g6ZltoLTJdLGJsb2NrUGFyYW1z
OmZbaC0xXSxzdHJpcDpkLnN0cmlwRmxhZ3MoZltoLTVdLGZbaF0pfTticmVhaztjYXNlIDE2OnRo
aXMuJD17cGF0aDpmW2gtNF0scGFyYW1zOmZbaC0zXSxoYXNoOmZbaC0yXSxibG9ja1BhcmFtczpm
W2gtMV0sc3RyaXA6ZC5zdHJpcEZsYWdzKGZbaC01XSxmW2hdKX07YnJlYWs7Y2FzZSAxNzp0aGlz
LiQ9e3BhdGg6ZltoLTRdLHBhcmFtczpmW2gtM10saGFzaDpmW2gtMl0sYmxvY2tQYXJhbXM6Zlto
LTFdLHN0cmlwOmQuc3RyaXBGbGFncyhmW2gtNV0sZltoXSl9O2JyZWFrO2Nhc2UgMTg6dGhpcy4k
PXtzdHJpcDpkLnN0cmlwRmxhZ3MoZltoLTFdLGZbaC0xXSkscHJvZ3JhbTpmW2hdfTticmVhaztj
YXNlIDE5OnZhciBpPWQucHJlcGFyZUJsb2NrKGZbaC0yXSxmW2gtMV0sZltoXSxmW2hdLCExLHRo
aXMuXyQpLGo9ZC5wcmVwYXJlUHJvZ3JhbShbaV0sZltoLTFdLmxvYyk7ai5jaGFpbmVkPSEwLHRo
aXMuJD17c3RyaXA6ZltoLTJdLnN0cmlwLHByb2dyYW06aixjaGFpbjohMH07YnJlYWs7Y2FzZSAy
MDp0aGlzLiQ9ZltoXTticmVhaztjYXNlIDIxOnRoaXMuJD17cGF0aDpmW2gtMV0sc3RyaXA6ZC5z
dHJpcEZsYWdzKGZbaC0yXSxmW2hdKX07YnJlYWs7Y2FzZSAyMjp0aGlzLiQ9ZC5wcmVwYXJlTXVz
dGFjaGUoZltoLTNdLGZbaC0yXSxmW2gtMV0sZltoLTRdLGQuc3RyaXBGbGFncyhmW2gtNF0sZlto
XSksdGhpcy5fJCk7YnJlYWs7Y2FzZSAyMzp0aGlzLiQ9ZC5wcmVwYXJlTXVzdGFjaGUoZltoLTNd
LGZbaC0yXSxmW2gtMV0sZltoLTRdLGQuc3RyaXBGbGFncyhmW2gtNF0sZltoXSksdGhpcy5fJCk7
YnJlYWs7Y2FzZSAyNDp0aGlzLiQ9e3R5cGU6IlBhcnRpYWxTdGF0ZW1lbnQiLG5hbWU6ZltoLTNd
LHBhcmFtczpmW2gtMl0saGFzaDpmW2gtMV0saW5kZW50OiIiLHN0cmlwOmQuc3RyaXBGbGFncyhm
W2gtNF0sZltoXSksbG9jOmQubG9jSW5mbyh0aGlzLl8kKX07YnJlYWs7Y2FzZSAyNTp0aGlzLiQ9
ZC5wcmVwYXJlUGFydGlhbEJsb2NrKGZbaC0yXSxmW2gtMV0sZltoXSx0aGlzLl8kKTticmVhaztj
YXNlIDI2OnRoaXMuJD17cGF0aDpmW2gtM10scGFyYW1zOmZbaC0yXSxoYXNoOmZbaC0xXSxzdHJp
cDpkLnN0cmlwRmxhZ3MoZltoLTRdLGZbaF0pfTticmVhaztjYXNlIDI3OnRoaXMuJD1mW2hdO2Jy
ZWFrO2Nhc2UgMjg6dGhpcy4kPWZbaF07YnJlYWs7Y2FzZSAyOTp0aGlzLiQ9e3R5cGU6IlN1YkV4
cHJlc3Npb24iLHBhdGg6ZltoLTNdLHBhcmFtczpmW2gtMl0saGFzaDpmW2gtMV0sbG9jOmQubG9j
SW5mbyh0aGlzLl8kKX07YnJlYWs7Y2FzZSAzMDp0aGlzLiQ9e3R5cGU6Ikhhc2giLHBhaXJzOmZb
aF0sbG9jOmQubG9jSW5mbyh0aGlzLl8kKX07YnJlYWs7Y2FzZSAzMTp0aGlzLiQ9e3R5cGU6Ikhh
c2hQYWlyIixrZXk6ZC5pZChmW2gtMl0pLHZhbHVlOmZbaF0sbG9jOmQubG9jSW5mbyh0aGlzLl8k
KX07YnJlYWs7Y2FzZSAzMjp0aGlzLiQ9ZC5pZChmW2gtMV0pO2JyZWFrO2Nhc2UgMzM6dGhpcy4k
PWZbaF07YnJlYWs7Y2FzZSAzNDp0aGlzLiQ9ZltoXTticmVhaztjYXNlIDM1OnRoaXMuJD17dHlw
ZToiU3RyaW5nTGl0ZXJhbCIsdmFsdWU6ZltoXSxvcmlnaW5hbDpmW2hdLGxvYzpkLmxvY0luZm8o
dGhpcy5fJCl9O2JyZWFrO2Nhc2UgMzY6dGhpcy4kPXt0eXBlOiJOdW1iZXJMaXRlcmFsIix2YWx1
ZTpOdW1iZXIoZltoXSksb3JpZ2luYWw6TnVtYmVyKGZbaF0pLGxvYzpkLmxvY0luZm8odGhpcy5f
JCl9O2JyZWFrO2Nhc2UgMzc6dGhpcy4kPXt0eXBlOiJCb29sZWFuTGl0ZXJhbCIsdmFsdWU6InRy
dWUiPT09ZltoXSxvcmlnaW5hbDoidHJ1ZSI9PT1mW2hdLGxvYzpkLmxvY0luZm8odGhpcy5fJCl9
O2JyZWFrO2Nhc2UgMzg6dGhpcy4kPXt0eXBlOiJVbmRlZmluZWRMaXRlcmFsIixvcmlnaW5hbDp2
b2lkIDAsdmFsdWU6dm9pZCAwLGxvYzpkLmxvY0luZm8odGhpcy5fJCl9O2JyZWFrO2Nhc2UgMzk6
dGhpcy4kPXt0eXBlOiJOdWxsTGl0ZXJhbCIsb3JpZ2luYWw6bnVsbCx2YWx1ZTpudWxsLGxvYzpk
LmxvY0luZm8odGhpcy5fJCl9O2JyZWFrO2Nhc2UgNDA6dGhpcy4kPWZbaF07YnJlYWs7Y2FzZSA0
MTp0aGlzLiQ9ZltoXTticmVhaztjYXNlIDQyOnRoaXMuJD1kLnByZXBhcmVQYXRoKCEwLGZbaF0s
dGhpcy5fJCk7YnJlYWs7Y2FzZSA0Mzp0aGlzLiQ9ZC5wcmVwYXJlUGF0aCghMSxmW2hdLHRoaXMu
XyQpO2JyZWFrO2Nhc2UgNDQ6ZltoLTJdLnB1c2goe3BhcnQ6ZC5pZChmW2hdKSxvcmlnaW5hbDpm
W2hdLHNlcGFyYXRvcjpmW2gtMV19KSx0aGlzLiQ9ZltoLTJdO2JyZWFrO2Nhc2UgNDU6dGhpcy4k
PVt7cGFydDpkLmlkKGZbaF0pLG9yaWdpbmFsOmZbaF19XTticmVhaztjYXNlIDQ2OnRoaXMuJD1b
XTticmVhaztjYXNlIDQ3OmZbaC0xXS5wdXNoKGZbaF0pO2JyZWFrO2Nhc2UgNDg6dGhpcy4kPVtm
W2hdXTticmVhaztjYXNlIDQ5OmZbaC0xXS5wdXNoKGZbaF0pO2JyZWFrO2Nhc2UgNTA6dGhpcy4k
PVtdO2JyZWFrO2Nhc2UgNTE6ZltoLTFdLnB1c2goZltoXSk7YnJlYWs7Y2FzZSA1ODp0aGlzLiQ9
W107YnJlYWs7Y2FzZSA1OTpmW2gtMV0ucHVzaChmW2hdKTticmVhaztjYXNlIDY0OnRoaXMuJD1b
XTticmVhaztjYXNlIDY1OmZbaC0xXS5wdXNoKGZbaF0pO2JyZWFrO2Nhc2UgNzA6dGhpcy4kPVtd
O2JyZWFrO2Nhc2UgNzE6ZltoLTFdLnB1c2goZltoXSk7YnJlYWs7Y2FzZSA3ODp0aGlzLiQ9W107
YnJlYWs7Y2FzZSA3OTpmW2gtMV0ucHVzaChmW2hdKTticmVhaztjYXNlIDgyOnRoaXMuJD1bXTti
cmVhaztjYXNlIDgzOmZbaC0xXS5wdXNoKGZbaF0pO2JyZWFrO2Nhc2UgODY6dGhpcy4kPVtdO2Jy
ZWFrO2Nhc2UgODc6ZltoLTFdLnB1c2goZltoXSk7YnJlYWs7Y2FzZSA5MDp0aGlzLiQ9W107YnJl
YWs7Y2FzZSA5MTpmW2gtMV0ucHVzaChmW2hdKTticmVhaztjYXNlIDk0OnRoaXMuJD1bXTticmVh
aztjYXNlIDk1OmZbaC0xXS5wdXNoKGZbaF0pO2JyZWFrO2Nhc2UgOTg6dGhpcy4kPVtmW2hdXTti
cmVhaztjYXNlIDk5OmZbaC0xXS5wdXNoKGZbaF0pO2JyZWFrO2Nhc2UgMTAwOnRoaXMuJD1bZlto
XV07YnJlYWs7Y2FzZSAxMDE6ZltoLTFdLnB1c2goZltoXSl9fSx0YWJsZTpbezM6MSw0OjIsNTpb
Miw0Nl0sNjozLDE0OlsyLDQ2XSwxNTpbMiw0Nl0sMTk6WzIsNDZdLDI5OlsyLDQ2XSwzNDpbMiw0
Nl0sNDg6WzIsNDZdLDUxOlsyLDQ2XSw1NTpbMiw0Nl0sNjA6WzIsNDZdfSx7MTpbM119LHs1Olsx
LDRdfSx7NTpbMiwyXSw3OjUsODo2LDk6NywxMDo4LDExOjksMTI6MTAsMTM6MTEsMTQ6WzEsMTJd
LDE1OlsxLDIwXSwxNjoxNywxOTpbMSwyM10sMjQ6MTUsMjc6MTYsMjk6WzEsMjFdLDM0OlsxLDIy
XSwzOTpbMiwyXSw0NDpbMiwyXSw0NzpbMiwyXSw0ODpbMSwxM10sNTE6WzEsMTRdLDU1OlsxLDE4
XSw1OToxOSw2MDpbMSwyNF19LHsxOlsyLDFdfSx7NTpbMiw0N10sMTQ6WzIsNDddLDE1OlsyLDQ3
XSwxOTpbMiw0N10sMjk6WzIsNDddLDM0OlsyLDQ3XSwzOTpbMiw0N10sNDQ6WzIsNDddLDQ3Olsy
LDQ3XSw0ODpbMiw0N10sNTE6WzIsNDddLDU1OlsyLDQ3XSw2MDpbMiw0N119LHs1OlsyLDNdLDE0
OlsyLDNdLDE1OlsyLDNdLDE5OlsyLDNdLDI5OlsyLDNdLDM0OlsyLDNdLDM5OlsyLDNdLDQ0Olsy
LDNdLDQ3OlsyLDNdLDQ4OlsyLDNdLDUxOlsyLDNdLDU1OlsyLDNdLDYwOlsyLDNdfSx7NTpbMiw0
XSwxNDpbMiw0XSwxNTpbMiw0XSwxOTpbMiw0XSwyOTpbMiw0XSwzNDpbMiw0XSwzOTpbMiw0XSw0
NDpbMiw0XSw0NzpbMiw0XSw0ODpbMiw0XSw1MTpbMiw0XSw1NTpbMiw0XSw2MDpbMiw0XX0sezU6
WzIsNV0sMTQ6WzIsNV0sMTU6WzIsNV0sMTk6WzIsNV0sMjk6WzIsNV0sMzQ6WzIsNV0sMzk6WzIs
NV0sNDQ6WzIsNV0sNDc6WzIsNV0sNDg6WzIsNV0sNTE6WzIsNV0sNTU6WzIsNV0sNjA6WzIsNV19
LHs1OlsyLDZdLDE0OlsyLDZdLDE1OlsyLDZdLDE5OlsyLDZdLDI5OlsyLDZdLDM0OlsyLDZdLDM5
OlsyLDZdLDQ0OlsyLDZdLDQ3OlsyLDZdLDQ4OlsyLDZdLDUxOlsyLDZdLDU1OlsyLDZdLDYwOlsy
LDZdfSx7NTpbMiw3XSwxNDpbMiw3XSwxNTpbMiw3XSwxOTpbMiw3XSwyOTpbMiw3XSwzNDpbMiw3
XSwzOTpbMiw3XSw0NDpbMiw3XSw0NzpbMiw3XSw0ODpbMiw3XSw1MTpbMiw3XSw1NTpbMiw3XSw2
MDpbMiw3XX0sezU6WzIsOF0sMTQ6WzIsOF0sMTU6WzIsOF0sMTk6WzIsOF0sMjk6WzIsOF0sMzQ6
WzIsOF0sMzk6WzIsOF0sNDQ6WzIsOF0sNDc6WzIsOF0sNDg6WzIsOF0sNTE6WzIsOF0sNTU6WzIs
OF0sNjA6WzIsOF19LHs1OlsyLDldLDE0OlsyLDldLDE1OlsyLDldLDE5OlsyLDldLDI5OlsyLDld
LDM0OlsyLDldLDM5OlsyLDldLDQ0OlsyLDldLDQ3OlsyLDldLDQ4OlsyLDldLDUxOlsyLDldLDU1
OlsyLDldLDYwOlsyLDldfSx7MjA6MjUsNzI6WzEsMzVdLDc4OjI2LDc5OjI3LDgwOlsxLDI4XSw4
MTpbMSwyOV0sODI6WzEsMzBdLDgzOlsxLDMxXSw4NDpbMSwzMl0sODU6WzEsMzRdLDg2OjMzfSx7
MjA6MzYsNzI6WzEsMzVdLDc4OjI2LDc5OjI3LDgwOlsxLDI4XSw4MTpbMSwyOV0sODI6WzEsMzBd
LDgzOlsxLDMxXSw4NDpbMSwzMl0sODU6WzEsMzRdLDg2OjMzfSx7NDozNyw2OjMsMTQ6WzIsNDZd
LDE1OlsyLDQ2XSwxOTpbMiw0Nl0sMjk6WzIsNDZdLDM0OlsyLDQ2XSwzOTpbMiw0Nl0sNDQ6WzIs
NDZdLDQ3OlsyLDQ2XSw0ODpbMiw0Nl0sNTE6WzIsNDZdLDU1OlsyLDQ2XSw2MDpbMiw0Nl19LHs0
OjM4LDY6MywxNDpbMiw0Nl0sMTU6WzIsNDZdLDE5OlsyLDQ2XSwyOTpbMiw0Nl0sMzQ6WzIsNDZd
LDQ0OlsyLDQ2XSw0NzpbMiw0Nl0sNDg6WzIsNDZdLDUxOlsyLDQ2XSw1NTpbMiw0Nl0sNjA6WzIs
NDZdfSx7MTM6NDAsMTU6WzEsMjBdLDE3OjM5fSx7MjA6NDIsNTY6NDEsNjQ6NDMsNjU6WzEsNDRd
LDcyOlsxLDM1XSw3ODoyNiw3OToyNyw4MDpbMSwyOF0sODE6WzEsMjldLDgyOlsxLDMwXSw4Mzpb
MSwzMV0sODQ6WzEsMzJdLDg1OlsxLDM0XSw4NjozM30sezQ6NDUsNjozLDE0OlsyLDQ2XSwxNTpb
Miw0Nl0sMTk6WzIsNDZdLDI5OlsyLDQ2XSwzNDpbMiw0Nl0sNDc6WzIsNDZdLDQ4OlsyLDQ2XSw1
MTpbMiw0Nl0sNTU6WzIsNDZdLDYwOlsyLDQ2XX0sezU6WzIsMTBdLDE0OlsyLDEwXSwxNTpbMiwx
MF0sMTg6WzIsMTBdLDE5OlsyLDEwXSwyOTpbMiwxMF0sMzQ6WzIsMTBdLDM5OlsyLDEwXSw0NDpb
MiwxMF0sNDc6WzIsMTBdLDQ4OlsyLDEwXSw1MTpbMiwxMF0sNTU6WzIsMTBdLDYwOlsyLDEwXX0s
ezIwOjQ2LDcyOlsxLDM1XSw3ODoyNiw3OToyNyw4MDpbMSwyOF0sODE6WzEsMjldLDgyOlsxLDMw
XSw4MzpbMSwzMV0sODQ6WzEsMzJdLDg1OlsxLDM0XSw4NjozM30sezIwOjQ3LDcyOlsxLDM1XSw3
ODoyNiw3OToyNyw4MDpbMSwyOF0sODE6WzEsMjldLDgyOlsxLDMwXSw4MzpbMSwzMV0sODQ6WzEs
MzJdLDg1OlsxLDM0XSw4NjozM30sezIwOjQ4LDcyOlsxLDM1XSw3ODoyNiw3OToyNyw4MDpbMSwy
OF0sODE6WzEsMjldLDgyOlsxLDMwXSw4MzpbMSwzMV0sODQ6WzEsMzJdLDg1OlsxLDM0XSw4Njoz
M30sezIwOjQyLDU2OjQ5LDY0OjQzLDY1OlsxLDQ0XSw3MjpbMSwzNV0sNzg6MjYsNzk6MjcsODA6
WzEsMjhdLDgxOlsxLDI5XSw4MjpbMSwzMF0sODM6WzEsMzFdLDg0OlsxLDMyXSw4NTpbMSwzNF0s
ODY6MzN9LHszMzpbMiw3OF0sNDk6NTAsNjU6WzIsNzhdLDcyOlsyLDc4XSw4MDpbMiw3OF0sODE6
WzIsNzhdLDgyOlsyLDc4XSw4MzpbMiw3OF0sODQ6WzIsNzhdLDg1OlsyLDc4XX0sezIzOlsyLDMz
XSwzMzpbMiwzM10sNTQ6WzIsMzNdLDY1OlsyLDMzXSw2ODpbMiwzM10sNzI6WzIsMzNdLDc1Olsy
LDMzXSw4MDpbMiwzM10sODE6WzIsMzNdLDgyOlsyLDMzXSw4MzpbMiwzM10sODQ6WzIsMzNdLDg1
OlsyLDMzXX0sezIzOlsyLDM0XSwzMzpbMiwzNF0sNTQ6WzIsMzRdLDY1OlsyLDM0XSw2ODpbMiwz
NF0sNzI6WzIsMzRdLDc1OlsyLDM0XSw4MDpbMiwzNF0sODE6WzIsMzRdLDgyOlsyLDM0XSw4Mzpb
MiwzNF0sODQ6WzIsMzRdLDg1OlsyLDM0XX0sezIzOlsyLDM1XSwzMzpbMiwzNV0sNTQ6WzIsMzVd
LDY1OlsyLDM1XSw2ODpbMiwzNV0sNzI6WzIsMzVdLDc1OlsyLDM1XSw4MDpbMiwzNV0sODE6WzIs
MzVdLDgyOlsyLDM1XSw4MzpbMiwzNV0sODQ6WzIsMzVdLDg1OlsyLDM1XX0sezIzOlsyLDM2XSwz
MzpbMiwzNl0sNTQ6WzIsMzZdLDY1OlsyLDM2XSw2ODpbMiwzNl0sNzI6WzIsMzZdLDc1OlsyLDM2
XSw4MDpbMiwzNl0sODE6WzIsMzZdLDgyOlsyLDM2XSw4MzpbMiwzNl0sODQ6WzIsMzZdLDg1Olsy
LDM2XX0sezIzOlsyLDM3XSwzMzpbMiwzN10sNTQ6WzIsMzddLDY1OlsyLDM3XSw2ODpbMiwzN10s
NzI6WzIsMzddLDc1OlsyLDM3XSw4MDpbMiwzN10sODE6WzIsMzddLDgyOlsyLDM3XSw4MzpbMiwz
N10sODQ6WzIsMzddLDg1OlsyLDM3XX0sezIzOlsyLDM4XSwzMzpbMiwzOF0sNTQ6WzIsMzhdLDY1
OlsyLDM4XSw2ODpbMiwzOF0sNzI6WzIsMzhdLDc1OlsyLDM4XSw4MDpbMiwzOF0sODE6WzIsMzhd
LDgyOlsyLDM4XSw4MzpbMiwzOF0sODQ6WzIsMzhdLDg1OlsyLDM4XX0sezIzOlsyLDM5XSwzMzpb
MiwzOV0sNTQ6WzIsMzldLDY1OlsyLDM5XSw2ODpbMiwzOV0sNzI6WzIsMzldLDc1OlsyLDM5XSw4
MDpbMiwzOV0sODE6WzIsMzldLDgyOlsyLDM5XSw4MzpbMiwzOV0sODQ6WzIsMzldLDg1OlsyLDM5
XX0sezIzOlsyLDQzXSwzMzpbMiw0M10sNTQ6WzIsNDNdLDY1OlsyLDQzXSw2ODpbMiw0M10sNzI6
WzIsNDNdLDc1OlsyLDQzXSw4MDpbMiw0M10sODE6WzIsNDNdLDgyOlsyLDQzXSw4MzpbMiw0M10s
ODQ6WzIsNDNdLDg1OlsyLDQzXSw4NzpbMSw1MV19LHs3MjpbMSwzNV0sODY6NTJ9LHsyMzpbMiw0
NV0sMzM6WzIsNDVdLDU0OlsyLDQ1XSw2NTpbMiw0NV0sNjg6WzIsNDVdLDcyOlsyLDQ1XSw3NTpb
Miw0NV0sODA6WzIsNDVdLDgxOlsyLDQ1XSw4MjpbMiw0NV0sODM6WzIsNDVdLDg0OlsyLDQ1XSw4
NTpbMiw0NV0sODc6WzIsNDVdfSx7NTI6NTMsNTQ6WzIsODJdLDY1OlsyLDgyXSw3MjpbMiw4Ml0s
ODA6WzIsODJdLDgxOlsyLDgyXSw4MjpbMiw4Ml0sODM6WzIsODJdLDg0OlsyLDgyXSw4NTpbMiw4
Ml19LHsyNTo1NCwzODo1NiwzOTpbMSw1OF0sNDM6NTcsNDQ6WzEsNTldLDQ1OjU1LDQ3OlsyLDU0
XX0sezI4OjYwLDQzOjYxLDQ0OlsxLDU5XSw0NzpbMiw1Nl19LHsxMzo2MywxNTpbMSwyMF0sMTg6
WzEsNjJdfSx7MTU6WzIsNDhdLDE4OlsyLDQ4XX0sezMzOlsyLDg2XSw1Nzo2NCw2NTpbMiw4Nl0s
NzI6WzIsODZdLDgwOlsyLDg2XSw4MTpbMiw4Nl0sODI6WzIsODZdLDgzOlsyLDg2XSw4NDpbMiw4
Nl0sODU6WzIsODZdfSx7MzM6WzIsNDBdLDY1OlsyLDQwXSw3MjpbMiw0MF0sODA6WzIsNDBdLDgx
OlsyLDQwXSw4MjpbMiw0MF0sODM6WzIsNDBdLDg0OlsyLDQwXSw4NTpbMiw0MF19LHszMzpbMiw0
MV0sNjU6WzIsNDFdLDcyOlsyLDQxXSw4MDpbMiw0MV0sODE6WzIsNDFdLDgyOlsyLDQxXSw4Mzpb
Miw0MV0sODQ6WzIsNDFdLDg1OlsyLDQxXX0sezIwOjY1LDcyOlsxLDM1XSw3ODoyNiw3OToyNyw4
MDpbMSwyOF0sODE6WzEsMjldLDgyOlsxLDMwXSw4MzpbMSwzMV0sODQ6WzEsMzJdLDg1OlsxLDM0
XSw4NjozM30sezI2OjY2LDQ3OlsxLDY3XX0sezMwOjY4LDMzOlsyLDU4XSw2NTpbMiw1OF0sNzI6
WzIsNThdLDc1OlsyLDU4XSw4MDpbMiw1OF0sODE6WzIsNThdLDgyOlsyLDU4XSw4MzpbMiw1OF0s
ODQ6WzIsNThdLDg1OlsyLDU4XX0sezMzOlsyLDY0XSwzNTo2OSw2NTpbMiw2NF0sNzI6WzIsNjRd
LDc1OlsyLDY0XSw4MDpbMiw2NF0sODE6WzIsNjRdLDgyOlsyLDY0XSw4MzpbMiw2NF0sODQ6WzIs
NjRdLDg1OlsyLDY0XX0sezIxOjcwLDIzOlsyLDUwXSw2NTpbMiw1MF0sNzI6WzIsNTBdLDgwOlsy
LDUwXSw4MTpbMiw1MF0sODI6WzIsNTBdLDgzOlsyLDUwXSw4NDpbMiw1MF0sODU6WzIsNTBdfSx7
MzM6WzIsOTBdLDYxOjcxLDY1OlsyLDkwXSw3MjpbMiw5MF0sODA6WzIsOTBdLDgxOlsyLDkwXSw4
MjpbMiw5MF0sODM6WzIsOTBdLDg0OlsyLDkwXSw4NTpbMiw5MF19LHsyMDo3NSwzMzpbMiw4MF0s
NTA6NzIsNjM6NzMsNjQ6NzYsNjU6WzEsNDRdLDY5Ojc0LDcwOjc3LDcxOjc4LDcyOlsxLDc5XSw3
ODoyNiw3OToyNyw4MDpbMSwyOF0sODE6WzEsMjldLDgyOlsxLDMwXSw4MzpbMSwzMV0sODQ6WzEs
MzJdLDg1OlsxLDM0XSw4NjozM30sezcyOlsxLDgwXX0sezIzOlsyLDQyXSwzMzpbMiw0Ml0sNTQ6
WzIsNDJdLDY1OlsyLDQyXSw2ODpbMiw0Ml0sNzI6WzIsNDJdLDc1OlsyLDQyXSw4MDpbMiw0Ml0s
ODE6WzIsNDJdLDgyOlsyLDQyXSw4MzpbMiw0Ml0sODQ6WzIsNDJdLDg1OlsyLDQyXSw4NzpbMSw1
MV19LHsyMDo3NSw1Mzo4MSw1NDpbMiw4NF0sNjM6ODIsNjQ6NzYsNjU6WzEsNDRdLDY5OjgzLDcw
Ojc3LDcxOjc4LDcyOlsxLDc5XSw3ODoyNiw3OToyNyw4MDpbMSwyOF0sODE6WzEsMjldLDgyOlsx
LDMwXSw4MzpbMSwzMV0sODQ6WzEsMzJdLDg1OlsxLDM0XSw4NjozM30sezI2Ojg0LDQ3OlsxLDY3
XX0sezQ3OlsyLDU1XX0sezQ6ODUsNjozLDE0OlsyLDQ2XSwxNTpbMiw0Nl0sMTk6WzIsNDZdLDI5
OlsyLDQ2XSwzNDpbMiw0Nl0sMzk6WzIsNDZdLDQ0OlsyLDQ2XSw0NzpbMiw0Nl0sNDg6WzIsNDZd
LDUxOlsyLDQ2XSw1NTpbMiw0Nl0sNjA6WzIsNDZdfSx7NDc6WzIsMjBdfSx7MjA6ODYsNzI6WzEs
MzVdLDc4OjI2LDc5OjI3LDgwOlsxLDI4XSw4MTpbMSwyOV0sODI6WzEsMzBdLDgzOlsxLDMxXSw4
NDpbMSwzMl0sODU6WzEsMzRdLDg2OjMzfSx7NDo4Nyw2OjMsMTQ6WzIsNDZdLDE1OlsyLDQ2XSwx
OTpbMiw0Nl0sMjk6WzIsNDZdLDM0OlsyLDQ2XSw0NzpbMiw0Nl0sNDg6WzIsNDZdLDUxOlsyLDQ2
XSw1NTpbMiw0Nl0sNjA6WzIsNDZdfSx7MjY6ODgsNDc6WzEsNjddfSx7NDc6WzIsNTddfSx7NTpb
MiwxMV0sMTQ6WzIsMTFdLDE1OlsyLDExXSwxOTpbMiwxMV0sMjk6WzIsMTFdLDM0OlsyLDExXSwz
OTpbMiwxMV0sNDQ6WzIsMTFdLDQ3OlsyLDExXSw0ODpbMiwxMV0sNTE6WzIsMTFdLDU1OlsyLDEx
XSw2MDpbMiwxMV19LHsxNTpbMiw0OV0sMTg6WzIsNDldfSx7MjA6NzUsMzM6WzIsODhdLDU4Ojg5
LDYzOjkwLDY0Ojc2LDY1OlsxLDQ0XSw2OTo5MSw3MDo3Nyw3MTo3OCw3MjpbMSw3OV0sNzg6MjYs
Nzk6MjcsODA6WzEsMjhdLDgxOlsxLDI5XSw4MjpbMSwzMF0sODM6WzEsMzFdLDg0OlsxLDMyXSw4
NTpbMSwzNF0sODY6MzN9LHs2NTpbMiw5NF0sNjY6OTIsNjg6WzIsOTRdLDcyOlsyLDk0XSw4MDpb
Miw5NF0sODE6WzIsOTRdLDgyOlsyLDk0XSw4MzpbMiw5NF0sODQ6WzIsOTRdLDg1OlsyLDk0XX0s
ezU6WzIsMjVdLDE0OlsyLDI1XSwxNTpbMiwyNV0sMTk6WzIsMjVdLDI5OlsyLDI1XSwzNDpbMiwy
NV0sMzk6WzIsMjVdLDQ0OlsyLDI1XSw0NzpbMiwyNV0sNDg6WzIsMjVdLDUxOlsyLDI1XSw1NTpb
MiwyNV0sNjA6WzIsMjVdfSx7MjA6OTMsNzI6WzEsMzVdLDc4OjI2LDc5OjI3LDgwOlsxLDI4XSw4
MTpbMSwyOV0sODI6WzEsMzBdLDgzOlsxLDMxXSw4NDpbMSwzMl0sODU6WzEsMzRdLDg2OjMzfSx7
MjA6NzUsMzE6OTQsMzM6WzIsNjBdLDYzOjk1LDY0Ojc2LDY1OlsxLDQ0XSw2OTo5Niw3MDo3Nyw3
MTo3OCw3MjpbMSw3OV0sNzU6WzIsNjBdLDc4OjI2LDc5OjI3LDgwOlsxLDI4XSw4MTpbMSwyOV0s
ODI6WzEsMzBdLDgzOlsxLDMxXSw4NDpbMSwzMl0sODU6WzEsMzRdLDg2OjMzfSx7MjA6NzUsMzM6
WzIsNjZdLDM2Ojk3LDYzOjk4LDY0Ojc2LDY1OlsxLDQ0XSw2OTo5OSw3MDo3Nyw3MTo3OCw3Mjpb
MSw3OV0sNzU6WzIsNjZdLDc4OjI2LDc5OjI3LDgwOlsxLDI4XSw4MTpbMSwyOV0sODI6WzEsMzBd
LDgzOlsxLDMxXSw4NDpbMSwzMl0sODU6WzEsMzRdLDg2OjMzfSx7MjA6NzUsMjI6MTAwLDIzOlsy
LDUyXSw2MzoxMDEsNjQ6NzYsNjU6WzEsNDRdLDY5OjEwMiw3MDo3Nyw3MTo3OCw3MjpbMSw3OV0s
Nzg6MjYsNzk6MjcsODA6WzEsMjhdLDgxOlsxLDI5XSw4MjpbMSwzMF0sODM6WzEsMzFdLDg0Olsx
LDMyXSw4NTpbMSwzNF0sODY6MzN9LHsyMDo3NSwzMzpbMiw5Ml0sNjI6MTAzLDYzOjEwNCw2NDo3
Niw2NTpbMSw0NF0sNjk6MTA1LDcwOjc3LDcxOjc4LDcyOlsxLDc5XSw3ODoyNiw3OToyNyw4MDpb
MSwyOF0sODE6WzEsMjldLDgyOlsxLDMwXSw4MzpbMSwzMV0sODQ6WzEsMzJdLDg1OlsxLDM0XSw4
NjozM30sezMzOlsxLDEwNl19LHszMzpbMiw3OV0sNjU6WzIsNzldLDcyOlsyLDc5XSw4MDpbMiw3
OV0sODE6WzIsNzldLDgyOlsyLDc5XSw4MzpbMiw3OV0sODQ6WzIsNzldLDg1OlsyLDc5XX0sezMz
OlsyLDgxXX0sezIzOlsyLDI3XSwzMzpbMiwyN10sNTQ6WzIsMjddLDY1OlsyLDI3XSw2ODpbMiwy
N10sNzI6WzIsMjddLDc1OlsyLDI3XSw4MDpbMiwyN10sODE6WzIsMjddLDgyOlsyLDI3XSw4Mzpb
MiwyN10sODQ6WzIsMjddLDg1OlsyLDI3XX0sezIzOlsyLDI4XSwzMzpbMiwyOF0sNTQ6WzIsMjhd
LDY1OlsyLDI4XSw2ODpbMiwyOF0sNzI6WzIsMjhdLDc1OlsyLDI4XSw4MDpbMiwyOF0sODE6WzIs
MjhdLDgyOlsyLDI4XSw4MzpbMiwyOF0sODQ6WzIsMjhdLDg1OlsyLDI4XX0sezIzOlsyLDMwXSwz
MzpbMiwzMF0sNTQ6WzIsMzBdLDY4OlsyLDMwXSw3MToxMDcsNzI6WzEsMTA4XSw3NTpbMiwzMF19
LHsyMzpbMiw5OF0sMzM6WzIsOThdLDU0OlsyLDk4XSw2ODpbMiw5OF0sNzI6WzIsOThdLDc1Olsy
LDk4XX0sezIzOlsyLDQ1XSwzMzpbMiw0NV0sNTQ6WzIsNDVdLDY1OlsyLDQ1XSw2ODpbMiw0NV0s
NzI6WzIsNDVdLDczOlsxLDEwOV0sNzU6WzIsNDVdLDgwOlsyLDQ1XSw4MTpbMiw0NV0sODI6WzIs
NDVdLDgzOlsyLDQ1XSw4NDpbMiw0NV0sODU6WzIsNDVdLDg3OlsyLDQ1XX0sezIzOlsyLDQ0XSwz
MzpbMiw0NF0sNTQ6WzIsNDRdLDY1OlsyLDQ0XSw2ODpbMiw0NF0sNzI6WzIsNDRdLDc1OlsyLDQ0
XSw4MDpbMiw0NF0sODE6WzIsNDRdLDgyOlsyLDQ0XSw4MzpbMiw0NF0sODQ6WzIsNDRdLDg1Olsy
LDQ0XSw4NzpbMiw0NF19LHs1NDpbMSwxMTBdfSx7NTQ6WzIsODNdLDY1OlsyLDgzXSw3MjpbMiw4
M10sODA6WzIsODNdLDgxOlsyLDgzXSw4MjpbMiw4M10sODM6WzIsODNdLDg0OlsyLDgzXSw4NTpb
Miw4M119LHs1NDpbMiw4NV19LHs1OlsyLDEzXSwxNDpbMiwxM10sMTU6WzIsMTNdLDE5OlsyLDEz
XSwyOTpbMiwxM10sMzQ6WzIsMTNdLDM5OlsyLDEzXSw0NDpbMiwxM10sNDc6WzIsMTNdLDQ4Olsy
LDEzXSw1MTpbMiwxM10sNTU6WzIsMTNdLDYwOlsyLDEzXX0sezM4OjU2LDM5OlsxLDU4XSw0Mzo1
Nyw0NDpbMSw1OV0sNDU6MTEyLDQ2OjExMSw0NzpbMiw3Nl19LHszMzpbMiw3MF0sNDA6MTEzLDY1
OlsyLDcwXSw3MjpbMiw3MF0sNzU6WzIsNzBdLDgwOlsyLDcwXSw4MTpbMiw3MF0sODI6WzIsNzBd
LDgzOlsyLDcwXSw4NDpbMiw3MF0sODU6WzIsNzBdfSx7NDc6WzIsMThdfSx7NTpbMiwxNF0sMTQ6
WzIsMTRdLDE1OlsyLDE0XSwxOTpbMiwxNF0sMjk6WzIsMTRdLDM0OlsyLDE0XSwzOTpbMiwxNF0s
NDQ6WzIsMTRdLDQ3OlsyLDE0XSw0ODpbMiwxNF0sNTE6WzIsMTRdLDU1OlsyLDE0XSw2MDpbMiwx
NF19LHszMzpbMSwxMTRdfSx7MzM6WzIsODddLDY1OlsyLDg3XSw3MjpbMiw4N10sODA6WzIsODdd
LDgxOlsyLDg3XSw4MjpbMiw4N10sODM6WzIsODddLDg0OlsyLDg3XSw4NTpbMiw4N119LHszMzpb
Miw4OV19LHsyMDo3NSw2MzoxMTYsNjQ6NzYsNjU6WzEsNDRdLDY3OjExNSw2ODpbMiw5Nl0sNjk6
MTE3LDcwOjc3LDcxOjc4LDcyOlsxLDc5XSw3ODoyNiw3OToyNyw4MDpbMSwyOF0sODE6WzEsMjld
LDgyOlsxLDMwXSw4MzpbMSwzMV0sODQ6WzEsMzJdLDg1OlsxLDM0XSw4NjozM30sezMzOlsxLDEx
OF19LHszMjoxMTksMzM6WzIsNjJdLDc0OjEyMCw3NTpbMSwxMjFdfSx7MzM6WzIsNTldLDY1Olsy
LDU5XSw3MjpbMiw1OV0sNzU6WzIsNTldLDgwOlsyLDU5XSw4MTpbMiw1OV0sODI6WzIsNTldLDgz
OlsyLDU5XSw4NDpbMiw1OV0sODU6WzIsNTldfSx7MzM6WzIsNjFdLDc1OlsyLDYxXX0sezMzOlsy
LDY4XSwzNzoxMjIsNzQ6MTIzLDc1OlsxLDEyMV19LHszMzpbMiw2NV0sNjU6WzIsNjVdLDcyOlsy
LDY1XSw3NTpbMiw2NV0sODA6WzIsNjVdLDgxOlsyLDY1XSw4MjpbMiw2NV0sODM6WzIsNjVdLDg0
OlsyLDY1XSw4NTpbMiw2NV19LHszMzpbMiw2N10sNzU6WzIsNjddfSx7MjM6WzEsMTI0XX0sezIz
OlsyLDUxXSw2NTpbMiw1MV0sNzI6WzIsNTFdLDgwOlsyLDUxXSw4MTpbMiw1MV0sODI6WzIsNTFd
LDgzOlsyLDUxXSw4NDpbMiw1MV0sODU6WzIsNTFdfSx7MjM6WzIsNTNdfSx7MzM6WzEsMTI1XX0s
ezMzOlsyLDkxXSw2NTpbMiw5MV0sNzI6WzIsOTFdLDgwOlsyLDkxXSw4MTpbMiw5MV0sODI6WzIs
OTFdLDgzOlsyLDkxXSw4NDpbMiw5MV0sODU6WzIsOTFdfSx7MzM6WzIsOTNdfSx7NTpbMiwyMl0s
MTQ6WzIsMjJdLDE1OlsyLDIyXSwxOTpbMiwyMl0sMjk6WzIsMjJdLDM0OlsyLDIyXSwzOTpbMiwy
Ml0sNDQ6WzIsMjJdLDQ3OlsyLDIyXSw0ODpbMiwyMl0sNTE6WzIsMjJdLDU1OlsyLDIyXSw2MDpb
MiwyMl19LHsyMzpbMiw5OV0sMzM6WzIsOTldLDU0OlsyLDk5XSw2ODpbMiw5OV0sNzI6WzIsOTld
LDc1OlsyLDk5XX0sezczOlsxLDEwOV19LHsyMDo3NSw2MzoxMjYsNjQ6NzYsNjU6WzEsNDRdLDcy
OlsxLDM1XSw3ODoyNiw3OToyNyw4MDpbMSwyOF0sODE6WzEsMjldLDgyOlsxLDMwXSw4MzpbMSwz
MV0sODQ6WzEsMzJdLDg1OlsxLDM0XSw4NjozM30sezU6WzIsMjNdLDE0OlsyLDIzXSwxNTpbMiwy
M10sMTk6WzIsMjNdLDI5OlsyLDIzXSwzNDpbMiwyM10sMzk6WzIsMjNdLDQ0OlsyLDIzXSw0Nzpb
MiwyM10sNDg6WzIsMjNdLDUxOlsyLDIzXSw1NTpbMiwyM10sNjA6WzIsMjNdfSx7NDc6WzIsMTld
fSx7NDc6WzIsNzddfSx7MjA6NzUsMzM6WzIsNzJdLDQxOjEyNyw2MzoxMjgsNjQ6NzYsNjU6WzEs
NDRdLDY5OjEyOSw3MDo3Nyw3MTo3OCw3MjpbMSw3OV0sNzU6WzIsNzJdLDc4OjI2LDc5OjI3LDgw
OlsxLDI4XSw4MTpbMSwyOV0sODI6WzEsMzBdLDgzOlsxLDMxXSw4NDpbMSwzMl0sODU6WzEsMzRd
LDg2OjMzfSx7NTpbMiwyNF0sMTQ6WzIsMjRdLDE1OlsyLDI0XSwxOTpbMiwyNF0sMjk6WzIsMjRd
LDM0OlsyLDI0XSwzOTpbMiwyNF0sNDQ6WzIsMjRdLDQ3OlsyLDI0XSw0ODpbMiwyNF0sNTE6WzIs
MjRdLDU1OlsyLDI0XSw2MDpbMiwyNF19LHs2ODpbMSwxMzBdfSx7NjU6WzIsOTVdLDY4OlsyLDk1
XSw3MjpbMiw5NV0sODA6WzIsOTVdLDgxOlsyLDk1XSw4MjpbMiw5NV0sODM6WzIsOTVdLDg0Olsy
LDk1XSw4NTpbMiw5NV19LHs2ODpbMiw5N119LHs1OlsyLDIxXSwxNDpbMiwyMV0sMTU6WzIsMjFd
LDE5OlsyLDIxXSwyOTpbMiwyMV0sMzQ6WzIsMjFdLDM5OlsyLDIxXSw0NDpbMiwyMV0sNDc6WzIs
MjFdLDQ4OlsyLDIxXSw1MTpbMiwyMV0sNTU6WzIsMjFdLDYwOlsyLDIxXX0sezMzOlsxLDEzMV19
LHszMzpbMiw2M119LHs3MjpbMSwxMzNdLDc2OjEzMn0sezMzOlsxLDEzNF19LHszMzpbMiw2OV19
LHsxNTpbMiwxMl19LHsxNDpbMiwyNl0sMTU6WzIsMjZdLDE5OlsyLDI2XSwyOTpbMiwyNl0sMzQ6
WzIsMjZdLDQ3OlsyLDI2XSw0ODpbMiwyNl0sNTE6WzIsMjZdLDU1OlsyLDI2XSwKKzYwOlsyLDI2
XX0sezIzOlsyLDMxXSwzMzpbMiwzMV0sNTQ6WzIsMzFdLDY4OlsyLDMxXSw3MjpbMiwzMV0sNzU6
WzIsMzFdfSx7MzM6WzIsNzRdLDQyOjEzNSw3NDoxMzYsNzU6WzEsMTIxXX0sezMzOlsyLDcxXSw2
NTpbMiw3MV0sNzI6WzIsNzFdLDc1OlsyLDcxXSw4MDpbMiw3MV0sODE6WzIsNzFdLDgyOlsyLDcx
XSw4MzpbMiw3MV0sODQ6WzIsNzFdLDg1OlsyLDcxXX0sezMzOlsyLDczXSw3NTpbMiw3M119LHsy
MzpbMiwyOV0sMzM6WzIsMjldLDU0OlsyLDI5XSw2NTpbMiwyOV0sNjg6WzIsMjldLDcyOlsyLDI5
XSw3NTpbMiwyOV0sODA6WzIsMjldLDgxOlsyLDI5XSw4MjpbMiwyOV0sODM6WzIsMjldLDg0Olsy
LDI5XSw4NTpbMiwyOV19LHsxNDpbMiwxNV0sMTU6WzIsMTVdLDE5OlsyLDE1XSwyOTpbMiwxNV0s
MzQ6WzIsMTVdLDM5OlsyLDE1XSw0NDpbMiwxNV0sNDc6WzIsMTVdLDQ4OlsyLDE1XSw1MTpbMiwx
NV0sNTU6WzIsMTVdLDYwOlsyLDE1XX0sezcyOlsxLDEzOF0sNzc6WzEsMTM3XX0sezcyOlsyLDEw
MF0sNzc6WzIsMTAwXX0sezE0OlsyLDE2XSwxNTpbMiwxNl0sMTk6WzIsMTZdLDI5OlsyLDE2XSwz
NDpbMiwxNl0sNDQ6WzIsMTZdLDQ3OlsyLDE2XSw0ODpbMiwxNl0sNTE6WzIsMTZdLDU1OlsyLDE2
XSw2MDpbMiwxNl19LHszMzpbMSwxMzldfSx7MzM6WzIsNzVdfSx7MzM6WzIsMzJdfSx7NzI6WzIs
MTAxXSw3NzpbMiwxMDFdfSx7MTQ6WzIsMTddLDE1OlsyLDE3XSwxOTpbMiwxN10sMjk6WzIsMTdd
LDM0OlsyLDE3XSwzOTpbMiwxN10sNDQ6WzIsMTddLDQ3OlsyLDE3XSw0ODpbMiwxN10sNTE6WzIs
MTddLDU1OlsyLDE3XSw2MDpbMiwxN119XSxkZWZhdWx0QWN0aW9uczp7NDpbMiwxXSw1NTpbMiw1
NV0sNTc6WzIsMjBdLDYxOlsyLDU3XSw3NDpbMiw4MV0sODM6WzIsODVdLDg3OlsyLDE4XSw5MTpb
Miw4OV0sMTAyOlsyLDUzXSwxMDU6WzIsOTNdLDExMTpbMiwxOV0sMTEyOlsyLDc3XSwxMTc6WzIs
OTddLDEyMDpbMiw2M10sMTIzOlsyLDY5XSwxMjQ6WzIsMTJdLDEzNjpbMiw3NV0sMTM3OlsyLDMy
XX0scGFyc2VFcnJvcjpmdW5jdGlvbihhLGIpe3Rocm93IG5ldyBFcnJvcihhKX0scGFyc2U6ZnVu
Y3Rpb24oYSl7ZnVuY3Rpb24gYigpe3ZhciBhO3JldHVybiBhPWMubGV4ZXIubGV4KCl8fDEsIm51
bWJlciIhPXR5cGVvZiBhJiYoYT1jLnN5bWJvbHNfW2FdfHxhKSxhfXZhciBjPXRoaXMsZD1bMF0s
ZT1bbnVsbF0sZj1bXSxnPXRoaXMudGFibGUsaD0iIixpPTAsaj0wLGs9MDt0aGlzLmxleGVyLnNl
dElucHV0KGEpLHRoaXMubGV4ZXIueXk9dGhpcy55eSx0aGlzLnl5LmxleGVyPXRoaXMubGV4ZXIs
dGhpcy55eS5wYXJzZXI9dGhpcywidW5kZWZpbmVkIj09dHlwZW9mIHRoaXMubGV4ZXIueXlsbG9j
JiYodGhpcy5sZXhlci55eWxsb2M9e30pO3ZhciBsPXRoaXMubGV4ZXIueXlsbG9jO2YucHVzaChs
KTt2YXIgbT10aGlzLmxleGVyLm9wdGlvbnMmJnRoaXMubGV4ZXIub3B0aW9ucy5yYW5nZXM7ImZ1
bmN0aW9uIj09dHlwZW9mIHRoaXMueXkucGFyc2VFcnJvciYmKHRoaXMucGFyc2VFcnJvcj10aGlz
Lnl5LnBhcnNlRXJyb3IpO2Zvcih2YXIgbixvLHAscSxyLHMsdCx1LHYsdz17fTs7KXtpZihwPWRb
ZC5sZW5ndGgtMV0sdGhpcy5kZWZhdWx0QWN0aW9uc1twXT9xPXRoaXMuZGVmYXVsdEFjdGlvbnNb
cF06KG51bGwhPT1uJiYidW5kZWZpbmVkIiE9dHlwZW9mIG58fChuPWIoKSkscT1nW3BdJiZnW3Bd
W25dKSwidW5kZWZpbmVkIj09dHlwZW9mIHF8fCFxLmxlbmd0aHx8IXFbMF0pe3ZhciB4PSIiO2lm
KCFrKXt2PVtdO2ZvcihzIGluIGdbcF0pdGhpcy50ZXJtaW5hbHNfW3NdJiZzPjImJnYucHVzaCgi
JyIrdGhpcy50ZXJtaW5hbHNfW3NdKyInIik7eD10aGlzLmxleGVyLnNob3dQb3NpdGlvbj8iUGFy
c2UgZXJyb3Igb24gbGluZSAiKyhpKzEpKyI6XG4iK3RoaXMubGV4ZXIuc2hvd1Bvc2l0aW9uKCkr
IlxuRXhwZWN0aW5nICIrdi5qb2luKCIsICIpKyIsIGdvdCAnIisodGhpcy50ZXJtaW5hbHNfW25d
fHxuKSsiJyI6IlBhcnNlIGVycm9yIG9uIGxpbmUgIisoaSsxKSsiOiBVbmV4cGVjdGVkICIrKDE9
PW4/ImVuZCBvZiBpbnB1dCI6IiciKyh0aGlzLnRlcm1pbmFsc19bbl18fG4pKyInIiksdGhpcy5w
YXJzZUVycm9yKHgse3RleHQ6dGhpcy5sZXhlci5tYXRjaCx0b2tlbjp0aGlzLnRlcm1pbmFsc19b
bl18fG4sbGluZTp0aGlzLmxleGVyLnl5bGluZW5vLGxvYzpsLGV4cGVjdGVkOnZ9KX19aWYocVsw
XWluc3RhbmNlb2YgQXJyYXkmJnEubGVuZ3RoPjEpdGhyb3cgbmV3IEVycm9yKCJQYXJzZSBFcnJv
cjogbXVsdGlwbGUgYWN0aW9ucyBwb3NzaWJsZSBhdCBzdGF0ZTogIitwKyIsIHRva2VuOiAiK24p
O3N3aXRjaChxWzBdKXtjYXNlIDE6ZC5wdXNoKG4pLGUucHVzaCh0aGlzLmxleGVyLnl5dGV4dCks
Zi5wdXNoKHRoaXMubGV4ZXIueXlsbG9jKSxkLnB1c2gocVsxXSksbj1udWxsLG8/KG49byxvPW51
bGwpOihqPXRoaXMubGV4ZXIueXlsZW5nLGg9dGhpcy5sZXhlci55eXRleHQsaT10aGlzLmxleGVy
Lnl5bGluZW5vLGw9dGhpcy5sZXhlci55eWxsb2Msaz4wJiZrLS0pO2JyZWFrO2Nhc2UgMjppZih0
PXRoaXMucHJvZHVjdGlvbnNfW3FbMV1dWzFdLHcuJD1lW2UubGVuZ3RoLXRdLHcuXyQ9e2ZpcnN0
X2xpbmU6ZltmLmxlbmd0aC0odHx8MSldLmZpcnN0X2xpbmUsbGFzdF9saW5lOmZbZi5sZW5ndGgt
MV0ubGFzdF9saW5lLGZpcnN0X2NvbHVtbjpmW2YubGVuZ3RoLSh0fHwxKV0uZmlyc3RfY29sdW1u
LGxhc3RfY29sdW1uOmZbZi5sZW5ndGgtMV0ubGFzdF9jb2x1bW59LG0mJih3Ll8kLnJhbmdlPVtm
W2YubGVuZ3RoLSh0fHwxKV0ucmFuZ2VbMF0sZltmLmxlbmd0aC0xXS5yYW5nZVsxXV0pLHI9dGhp
cy5wZXJmb3JtQWN0aW9uLmNhbGwodyxoLGosaSx0aGlzLnl5LHFbMV0sZSxmKSwidW5kZWZpbmVk
IiE9dHlwZW9mIHIpcmV0dXJuIHI7dCYmKGQ9ZC5zbGljZSgwLC0xKnQqMiksZT1lLnNsaWNlKDAs
LTEqdCksZj1mLnNsaWNlKDAsLTEqdCkpLGQucHVzaCh0aGlzLnByb2R1Y3Rpb25zX1txWzFdXVsw
XSksZS5wdXNoKHcuJCksZi5wdXNoKHcuXyQpLHU9Z1tkW2QubGVuZ3RoLTJdXVtkW2QubGVuZ3Ro
LTFdXSxkLnB1c2godSk7YnJlYWs7Y2FzZSAzOnJldHVybiEwfX1yZXR1cm4hMH19LGM9ZnVuY3Rp
b24oKXt2YXIgYT17RU9GOjEscGFyc2VFcnJvcjpmdW5jdGlvbihhLGIpe2lmKCF0aGlzLnl5LnBh
cnNlcil0aHJvdyBuZXcgRXJyb3IoYSk7dGhpcy55eS5wYXJzZXIucGFyc2VFcnJvcihhLGIpfSxz
ZXRJbnB1dDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5faW5wdXQ9YSx0aGlzLl9tb3JlPXRoaXMu
X2xlc3M9dGhpcy5kb25lPSExLHRoaXMueXlsaW5lbm89dGhpcy55eWxlbmc9MCx0aGlzLnl5dGV4
dD10aGlzLm1hdGNoZWQ9dGhpcy5tYXRjaD0iIix0aGlzLmNvbmRpdGlvblN0YWNrPVsiSU5JVElB
TCJdLHRoaXMueXlsbG9jPXtmaXJzdF9saW5lOjEsZmlyc3RfY29sdW1uOjAsbGFzdF9saW5lOjEs
bGFzdF9jb2x1bW46MH0sdGhpcy5vcHRpb25zLnJhbmdlcyYmKHRoaXMueXlsbG9jLnJhbmdlPVsw
LDBdKSx0aGlzLm9mZnNldD0wLHRoaXN9LGlucHV0OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5faW5w
dXRbMF07dGhpcy55eXRleHQrPWEsdGhpcy55eWxlbmcrKyx0aGlzLm9mZnNldCsrLHRoaXMubWF0
Y2grPWEsdGhpcy5tYXRjaGVkKz1hO3ZhciBiPWEubWF0Y2goLyg/OlxyXG4/fFxuKS4qL2cpO3Jl
dHVybiBiPyh0aGlzLnl5bGluZW5vKyssdGhpcy55eWxsb2MubGFzdF9saW5lKyspOnRoaXMueXls
bG9jLmxhc3RfY29sdW1uKyssdGhpcy5vcHRpb25zLnJhbmdlcyYmdGhpcy55eWxsb2MucmFuZ2Vb
MV0rKyx0aGlzLl9pbnB1dD10aGlzLl9pbnB1dC5zbGljZSgxKSxhfSx1bnB1dDpmdW5jdGlvbihh
KXt2YXIgYj1hLmxlbmd0aCxjPWEuc3BsaXQoLyg/OlxyXG4/fFxuKS9nKTt0aGlzLl9pbnB1dD1h
K3RoaXMuX2lucHV0LHRoaXMueXl0ZXh0PXRoaXMueXl0ZXh0LnN1YnN0cigwLHRoaXMueXl0ZXh0
Lmxlbmd0aC1iLTEpLHRoaXMub2Zmc2V0LT1iO3ZhciBkPXRoaXMubWF0Y2guc3BsaXQoLyg/Olxy
XG4/fFxuKS9nKTt0aGlzLm1hdGNoPXRoaXMubWF0Y2guc3Vic3RyKDAsdGhpcy5tYXRjaC5sZW5n
dGgtMSksdGhpcy5tYXRjaGVkPXRoaXMubWF0Y2hlZC5zdWJzdHIoMCx0aGlzLm1hdGNoZWQubGVu
Z3RoLTEpLGMubGVuZ3RoLTEmJih0aGlzLnl5bGluZW5vLT1jLmxlbmd0aC0xKTt2YXIgZT10aGlz
Lnl5bGxvYy5yYW5nZTtyZXR1cm4gdGhpcy55eWxsb2M9e2ZpcnN0X2xpbmU6dGhpcy55eWxsb2Mu
Zmlyc3RfbGluZSxsYXN0X2xpbmU6dGhpcy55eWxpbmVubysxLGZpcnN0X2NvbHVtbjp0aGlzLnl5
bGxvYy5maXJzdF9jb2x1bW4sbGFzdF9jb2x1bW46Yz8oYy5sZW5ndGg9PT1kLmxlbmd0aD90aGlz
Lnl5bGxvYy5maXJzdF9jb2x1bW46MCkrZFtkLmxlbmd0aC1jLmxlbmd0aF0ubGVuZ3RoLWNbMF0u
bGVuZ3RoOnRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbi1ifSx0aGlzLm9wdGlvbnMucmFuZ2VzJiYo
dGhpcy55eWxsb2MucmFuZ2U9W2VbMF0sZVswXSt0aGlzLnl5bGVuZy1iXSksdGhpc30sbW9yZTpm
dW5jdGlvbigpe3JldHVybiB0aGlzLl9tb3JlPSEwLHRoaXN9LGxlc3M6ZnVuY3Rpb24oYSl7dGhp
cy51bnB1dCh0aGlzLm1hdGNoLnNsaWNlKGEpKX0scGFzdElucHV0OmZ1bmN0aW9uKCl7dmFyIGE9
dGhpcy5tYXRjaGVkLnN1YnN0cigwLHRoaXMubWF0Y2hlZC5sZW5ndGgtdGhpcy5tYXRjaC5sZW5n
dGgpO3JldHVybihhLmxlbmd0aD4yMD8iLi4uIjoiIikrYS5zdWJzdHIoLTIwKS5yZXBsYWNlKC9c
bi9nLCIiKX0sdXBjb21pbmdJbnB1dDpmdW5jdGlvbigpe3ZhciBhPXRoaXMubWF0Y2g7cmV0dXJu
IGEubGVuZ3RoPDIwJiYoYSs9dGhpcy5faW5wdXQuc3Vic3RyKDAsMjAtYS5sZW5ndGgpKSwoYS5z
dWJzdHIoMCwyMCkrKGEubGVuZ3RoPjIwPyIuLi4iOiIiKSkucmVwbGFjZSgvXG4vZywiIil9LHNo
b3dQb3NpdGlvbjpmdW5jdGlvbigpe3ZhciBhPXRoaXMucGFzdElucHV0KCksYj1uZXcgQXJyYXko
YS5sZW5ndGgrMSkuam9pbigiLSIpO3JldHVybiBhK3RoaXMudXBjb21pbmdJbnB1dCgpKyJcbiIr
YisiXiJ9LG5leHQ6ZnVuY3Rpb24oKXtpZih0aGlzLmRvbmUpcmV0dXJuIHRoaXMuRU9GO3RoaXMu
X2lucHV0fHwodGhpcy5kb25lPSEwKTt2YXIgYSxiLGMsZCxlO3RoaXMuX21vcmV8fCh0aGlzLnl5
dGV4dD0iIix0aGlzLm1hdGNoPSIiKTtmb3IodmFyIGY9dGhpcy5fY3VycmVudFJ1bGVzKCksZz0w
O2c8Zi5sZW5ndGgmJihjPXRoaXMuX2lucHV0Lm1hdGNoKHRoaXMucnVsZXNbZltnXV0pLCFjfHxi
JiYhKGNbMF0ubGVuZ3RoPmJbMF0ubGVuZ3RoKXx8KGI9YyxkPWcsdGhpcy5vcHRpb25zLmZsZXgp
KTtnKyspO3JldHVybiBiPyhlPWJbMF0ubWF0Y2goLyg/OlxyXG4/fFxuKS4qL2cpLGUmJih0aGlz
Lnl5bGluZW5vKz1lLmxlbmd0aCksdGhpcy55eWxsb2M9e2ZpcnN0X2xpbmU6dGhpcy55eWxsb2Mu
bGFzdF9saW5lLGxhc3RfbGluZTp0aGlzLnl5bGluZW5vKzEsZmlyc3RfY29sdW1uOnRoaXMueXls
bG9jLmxhc3RfY29sdW1uLGxhc3RfY29sdW1uOmU/ZVtlLmxlbmd0aC0xXS5sZW5ndGgtZVtlLmxl
bmd0aC0xXS5tYXRjaCgvXHI/XG4/LylbMF0ubGVuZ3RoOnRoaXMueXlsbG9jLmxhc3RfY29sdW1u
K2JbMF0ubGVuZ3RofSx0aGlzLnl5dGV4dCs9YlswXSx0aGlzLm1hdGNoKz1iWzBdLHRoaXMubWF0
Y2hlcz1iLHRoaXMueXlsZW5nPXRoaXMueXl0ZXh0Lmxlbmd0aCx0aGlzLm9wdGlvbnMucmFuZ2Vz
JiYodGhpcy55eWxsb2MucmFuZ2U9W3RoaXMub2Zmc2V0LHRoaXMub2Zmc2V0Kz10aGlzLnl5bGVu
Z10pLHRoaXMuX21vcmU9ITEsdGhpcy5faW5wdXQ9dGhpcy5faW5wdXQuc2xpY2UoYlswXS5sZW5n
dGgpLHRoaXMubWF0Y2hlZCs9YlswXSxhPXRoaXMucGVyZm9ybUFjdGlvbi5jYWxsKHRoaXMsdGhp
cy55eSx0aGlzLGZbZF0sdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxl
bmd0aC0xXSksdGhpcy5kb25lJiZ0aGlzLl9pbnB1dCYmKHRoaXMuZG9uZT0hMSksYT9hOnZvaWQg
MCk6IiI9PT10aGlzLl9pbnB1dD90aGlzLkVPRjp0aGlzLnBhcnNlRXJyb3IoIkxleGljYWwgZXJy
b3Igb24gbGluZSAiKyh0aGlzLnl5bGluZW5vKzEpKyIuIFVucmVjb2duaXplZCB0ZXh0LlxuIit0
aGlzLnNob3dQb3NpdGlvbigpLHt0ZXh0OiIiLHRva2VuOm51bGwsbGluZTp0aGlzLnl5bGluZW5v
fSl9LGxleDpmdW5jdGlvbigpe3ZhciBhPXRoaXMubmV4dCgpO3JldHVybiJ1bmRlZmluZWQiIT10
eXBlb2YgYT9hOnRoaXMubGV4KCl9LGJlZ2luOmZ1bmN0aW9uKGEpe3RoaXMuY29uZGl0aW9uU3Rh
Y2sucHVzaChhKX0scG9wU3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb25kaXRpb25TdGFj
ay5wb3AoKX0sX2N1cnJlbnRSdWxlczpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbmRpdGlvbnNb
dGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xXV0ucnVsZXN9
LHRvcFN0YXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25k
aXRpb25TdGFjay5sZW5ndGgtMl19LHB1c2hTdGF0ZTpmdW5jdGlvbihhKXt0aGlzLmJlZ2luKGEp
fX07cmV0dXJuIGEub3B0aW9ucz17fSxhLnBlcmZvcm1BY3Rpb249ZnVuY3Rpb24oYSxiLGMsZCl7
ZnVuY3Rpb24gZShhLGMpe3JldHVybiBiLnl5dGV4dD1iLnl5dGV4dC5zdWJzdHIoYSxiLnl5bGVu
Zy1jKX1zd2l0Y2goYyl7Y2FzZSAwOmlmKCJcXFxcIj09PWIueXl0ZXh0LnNsaWNlKC0yKT8oZSgw
LDEpLHRoaXMuYmVnaW4oIm11IikpOiJcXCI9PT1iLnl5dGV4dC5zbGljZSgtMSk/KGUoMCwxKSx0
aGlzLmJlZ2luKCJlbXUiKSk6dGhpcy5iZWdpbigibXUiKSxiLnl5dGV4dClyZXR1cm4gMTU7YnJl
YWs7Y2FzZSAxOnJldHVybiAxNTtjYXNlIDI6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSwxNTtjYXNl
IDM6cmV0dXJuIHRoaXMuYmVnaW4oInJhdyIpLDE1O2Nhc2UgNDpyZXR1cm4gdGhpcy5wb3BTdGF0
ZSgpLCJyYXciPT09dGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0
aC0xXT8xNTooYi55eXRleHQ9Yi55eXRleHQuc3Vic3RyKDUsYi55eWxlbmctOSksIkVORF9SQVdf
QkxPQ0siKTtjYXNlIDU6cmV0dXJuIDE1O2Nhc2UgNjpyZXR1cm4gdGhpcy5wb3BTdGF0ZSgpLDE0
O2Nhc2UgNzpyZXR1cm4gNjU7Y2FzZSA4OnJldHVybiA2ODtjYXNlIDk6cmV0dXJuIDE5O2Nhc2Ug
MTA6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSx0aGlzLmJlZ2luKCJyYXciKSwyMztjYXNlIDExOnJl
dHVybiA1NTtjYXNlIDEyOnJldHVybiA2MDtjYXNlIDEzOnJldHVybiAyOTtjYXNlIDE0OnJldHVy
biA0NztjYXNlIDE1OnJldHVybiB0aGlzLnBvcFN0YXRlKCksNDQ7Y2FzZSAxNjpyZXR1cm4gdGhp
cy5wb3BTdGF0ZSgpLDQ0O2Nhc2UgMTc6cmV0dXJuIDM0O2Nhc2UgMTg6cmV0dXJuIDM5O2Nhc2Ug
MTk6cmV0dXJuIDUxO2Nhc2UgMjA6cmV0dXJuIDQ4O2Nhc2UgMjE6dGhpcy51bnB1dChiLnl5dGV4
dCksdGhpcy5wb3BTdGF0ZSgpLHRoaXMuYmVnaW4oImNvbSIpO2JyZWFrO2Nhc2UgMjI6cmV0dXJu
IHRoaXMucG9wU3RhdGUoKSwxNDtjYXNlIDIzOnJldHVybiA0ODtjYXNlIDI0OnJldHVybiA3Mztj
YXNlIDI1OnJldHVybiA3MjtjYXNlIDI2OnJldHVybiA3MjtjYXNlIDI3OnJldHVybiA4NztjYXNl
IDI4OmJyZWFrO2Nhc2UgMjk6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSw1NDtjYXNlIDMwOnJldHVy
biB0aGlzLnBvcFN0YXRlKCksMzM7Y2FzZSAzMTpyZXR1cm4gYi55eXRleHQ9ZSgxLDIpLnJlcGxh
Y2UoL1xcIi9nLCciJyksODA7Y2FzZSAzMjpyZXR1cm4gYi55eXRleHQ9ZSgxLDIpLnJlcGxhY2Uo
L1xcJy9nLCInIiksODA7Y2FzZSAzMzpyZXR1cm4gODU7Y2FzZSAzNDpyZXR1cm4gODI7Y2FzZSAz
NTpyZXR1cm4gODI7Y2FzZSAzNjpyZXR1cm4gODM7Y2FzZSAzNzpyZXR1cm4gODQ7Y2FzZSAzODpy
ZXR1cm4gODE7Y2FzZSAzOTpyZXR1cm4gNzU7Y2FzZSA0MDpyZXR1cm4gNzc7Y2FzZSA0MTpyZXR1
cm4gNzI7Y2FzZSA0MjpyZXR1cm4gYi55eXRleHQ9Yi55eXRleHQucmVwbGFjZSgvXFwoW1xcXF1d
KS9nLCIkMSIpLDcyO2Nhc2UgNDM6cmV0dXJuIklOVkFMSUQiO2Nhc2UgNDQ6cmV0dXJuIDV9fSxh
LnJ1bGVzPVsvXig/OlteXHgwMF0qPyg/PShce1x7KSkpLywvXig/OlteXHgwMF0rKS8sL14oPzpb
Xlx4MDBdezIsfT8oPz0oXHtce3xcXFx7XHt8XFxcXFx7XHt8JCkpKS8sL14oPzpce1x7XHtceyg/
PVteXC9dKSkvLC9eKD86XHtce1x7XHtcL1teXHMhIiMlLSxcLlwvOy0+QFxbLVxeYFx7LX5dKyg/
PVs9fVxzXC8uXSlcfVx9XH1cfSkvLC9eKD86W15ceDAwXSo/KD89KFx7XHtce1x7KSkpLywvXig/
Oltcc1xTXSo/LS0ofik/XH1cfSkvLC9eKD86XCgpLywvXig/OlwpKS8sL14oPzpce1x7XHtceykv
LC9eKD86XH1cfVx9XH0pLywvXig/Olx7XHsofik/PikvLC9eKD86XHtceyh+KT8jPikvLC9eKD86
XHtceyh+KT8jXCo/KS8sL14oPzpce1x7KH4pP1wvKS8sL14oPzpce1x7KH4pP1xeXHMqKH4pP1x9
XH0pLywvXig/Olx7XHsofik/XHMqZWxzZVxzKih+KT9cfVx9KS8sL14oPzpce1x7KH4pP1xeKS8s
L14oPzpce1x7KH4pP1xzKmVsc2VcYikvLC9eKD86XHtceyh+KT9ceykvLC9eKD86XHtceyh+KT8m
KS8sL14oPzpce1x7KH4pPyEtLSkvLC9eKD86XHtceyh+KT8hW1xzXFNdKj9cfVx9KS8sL14oPzpc
e1x7KH4pP1wqPykvLC9eKD86PSkvLC9eKD86XC5cLikvLC9eKD86XC4oPz0oWz1+fVxzXC8uKXxd
KSkpLywvXig/OltcLy5dKS8sL14oPzpccyspLywvXig/Olx9KH4pP1x9XH0pLywvXig/Oih+KT9c
fVx9KS8sL14oPzoiKFxcWyJdfFteIl0pKiIpLywvXig/OicoXFxbJ118W14nXSkqJykvLC9eKD86
QCkvLC9eKD86dHJ1ZSg/PShbfn1ccyldKSkpLywvXig/OmZhbHNlKD89KFt+fVxzKV0pKSkvLC9e
KD86dW5kZWZpbmVkKD89KFt+fVxzKV0pKSkvLC9eKD86bnVsbCg/PShbfn1ccyldKSkpLywvXig/
Oi0/WzAtOV0rKD86XC5bMC05XSspPyg/PShbfn1ccyldKSkpLywvXig/OmFzXHMrXHwpLywvXig/
Olx8KS8sL14oPzooW15ccyEiIyUtLFwuXC87LT5AXFstXF5gXHstfl0rKD89KFs9fn1cc1wvLil8
XSkpKSkvLC9eKD86XFsoXFxcXXxbXlxdXSkqXF0pLywvXig/Oi4pLywvXig/OiQpL10sYS5jb25k
aXRpb25zPXttdTp7cnVsZXM6WzcsOCw5LDEwLDExLDEyLDEzLDE0LDE1LDE2LDE3LDE4LDE5LDIw
LDIxLDIyLDIzLDI0LDI1LDI2LDI3LDI4LDI5LDMwLDMxLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5
LDQwLDQxLDQyLDQzLDQ0XSxpbmNsdXNpdmU6ITF9LGVtdTp7cnVsZXM6WzJdLGluY2x1c2l2ZToh
MX0sY29tOntydWxlczpbNl0saW5jbHVzaXZlOiExfSxyYXc6e3J1bGVzOlszLDQsNV0saW5jbHVz
aXZlOiExfSxJTklUSUFMOntydWxlczpbMCwxLDQ0XSxpbmNsdXNpdmU6ITB9fSxhfSgpO3JldHVy
biBiLmxleGVyPWMsYS5wcm90b3R5cGU9YixiLlBhcnNlcj1hLG5ldyBhfSgpO2IuX19lc01vZHVs
ZT0hMCxiWyJkZWZhdWx0Il09Y30sZnVuY3Rpb24oYSxiLGMpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biBkKCl7dmFyIGE9YXJndW1lbnRzLmxlbmd0aDw9MHx8dm9pZCAwPT09YXJndW1lbnRzWzBdP3t9
OmFyZ3VtZW50c1swXTt0aGlzLm9wdGlvbnM9YX1mdW5jdGlvbiBlKGEsYixjKXt2b2lkIDA9PT1i
JiYoYj1hLmxlbmd0aCk7dmFyIGQ9YVtiLTFdLGU9YVtiLTJdO3JldHVybiBkPyJDb250ZW50U3Rh
dGVtZW50Ij09PWQudHlwZT8oZXx8IWM/L1xyP1xuXHMqPyQvOi8oXnxccj9cbilccyo/JC8pLnRl
c3QoZC5vcmlnaW5hbCk6dm9pZCAwOmN9ZnVuY3Rpb24gZihhLGIsYyl7dm9pZCAwPT09YiYmKGI9
LTEpO3ZhciBkPWFbYisxXSxlPWFbYisyXTtyZXR1cm4gZD8iQ29udGVudFN0YXRlbWVudCI9PT1k
LnR5cGU/KGV8fCFjPy9eXHMqP1xyP1xuLzovXlxzKj8oXHI/XG58JCkvKS50ZXN0KGQub3JpZ2lu
YWwpOnZvaWQgMDpjfWZ1bmN0aW9uIGcoYSxiLGMpe3ZhciBkPWFbbnVsbD09Yj8wOmIrMV07aWYo
ZCYmIkNvbnRlbnRTdGF0ZW1lbnQiPT09ZC50eXBlJiYoY3x8IWQucmlnaHRTdHJpcHBlZCkpe3Zh
ciBlPWQudmFsdWU7ZC52YWx1ZT1kLnZhbHVlLnJlcGxhY2UoYz8vXlxzKy86L15bIFx0XSpccj9c
bj8vLCIiKSxkLnJpZ2h0U3RyaXBwZWQ9ZC52YWx1ZSE9PWV9fWZ1bmN0aW9uIGgoYSxiLGMpe3Zh
ciBkPWFbbnVsbD09Yj9hLmxlbmd0aC0xOmItMV07aWYoZCYmIkNvbnRlbnRTdGF0ZW1lbnQiPT09
ZC50eXBlJiYoY3x8IWQubGVmdFN0cmlwcGVkKSl7dmFyIGU9ZC52YWx1ZTtyZXR1cm4gZC52YWx1
ZT1kLnZhbHVlLnJlcGxhY2UoYz8vXHMrJC86L1sgXHRdKyQvLCIiKSxkLmxlZnRTdHJpcHBlZD1k
LnZhbHVlIT09ZSxkLmxlZnRTdHJpcHBlZH19dmFyIGk9YygxKVsiZGVmYXVsdCJdO2IuX19lc01v
ZHVsZT0hMDt2YXIgaj1jKDI4KSxrPWkoaik7ZC5wcm90b3R5cGU9bmV3IGtbImRlZmF1bHQiXSxk
LnByb3RvdHlwZS5Qcm9ncmFtPWZ1bmN0aW9uKGEpe3ZhciBiPSF0aGlzLm9wdGlvbnMuaWdub3Jl
U3RhbmRhbG9uZSxjPSF0aGlzLmlzUm9vdFNlZW47dGhpcy5pc1Jvb3RTZWVuPSEwO2Zvcih2YXIg
ZD1hLmJvZHksaT0wLGo9ZC5sZW5ndGg7aTxqO2krKyl7dmFyIGs9ZFtpXSxsPXRoaXMuYWNjZXB0
KGspO2lmKGwpe3ZhciBtPWUoZCxpLGMpLG49ZihkLGksYyksbz1sLm9wZW5TdGFuZGFsb25lJiZt
LHA9bC5jbG9zZVN0YW5kYWxvbmUmJm4scT1sLmlubGluZVN0YW5kYWxvbmUmJm0mJm47bC5jbG9z
ZSYmZyhkLGksITApLGwub3BlbiYmaChkLGksITApLGImJnEmJihnKGQsaSksaChkLGkpJiYiUGFy
dGlhbFN0YXRlbWVudCI9PT1rLnR5cGUmJihrLmluZGVudD0vKFsgXHRdKyQpLy5leGVjKGRbaS0x
XS5vcmlnaW5hbClbMV0pKSxiJiZvJiYoZygoay5wcm9ncmFtfHxrLmludmVyc2UpLmJvZHkpLGgo
ZCxpKSksYiYmcCYmKGcoZCxpKSxoKChrLmludmVyc2V8fGsucHJvZ3JhbSkuYm9keSkpfX1yZXR1
cm4gYX0sZC5wcm90b3R5cGUuQmxvY2tTdGF0ZW1lbnQ9ZC5wcm90b3R5cGUuRGVjb3JhdG9yQmxv
Y2s9ZC5wcm90b3R5cGUuUGFydGlhbEJsb2NrU3RhdGVtZW50PWZ1bmN0aW9uKGEpe3RoaXMuYWNj
ZXB0KGEucHJvZ3JhbSksdGhpcy5hY2NlcHQoYS5pbnZlcnNlKTt2YXIgYj1hLnByb2dyYW18fGEu
aW52ZXJzZSxjPWEucHJvZ3JhbSYmYS5pbnZlcnNlLGQ9YyxpPWM7aWYoYyYmYy5jaGFpbmVkKWZv
cihkPWMuYm9keVswXS5wcm9ncmFtO2kuY2hhaW5lZDspaT1pLmJvZHlbaS5ib2R5Lmxlbmd0aC0x
XS5wcm9ncmFtO3ZhciBqPXtvcGVuOmEub3BlblN0cmlwLm9wZW4sY2xvc2U6YS5jbG9zZVN0cmlw
LmNsb3NlLG9wZW5TdGFuZGFsb25lOmYoYi5ib2R5KSxjbG9zZVN0YW5kYWxvbmU6ZSgoZHx8Yiku
Ym9keSl9O2lmKGEub3BlblN0cmlwLmNsb3NlJiZnKGIuYm9keSxudWxsLCEwKSxjKXt2YXIgaz1h
LmludmVyc2VTdHJpcDtrLm9wZW4mJmgoYi5ib2R5LG51bGwsITApLGsuY2xvc2UmJmcoZC5ib2R5
LG51bGwsITApLGEuY2xvc2VTdHJpcC5vcGVuJiZoKGkuYm9keSxudWxsLCEwKSwhdGhpcy5vcHRp
b25zLmlnbm9yZVN0YW5kYWxvbmUmJmUoYi5ib2R5KSYmZihkLmJvZHkpJiYoaChiLmJvZHkpLGco
ZC5ib2R5KSl9ZWxzZSBhLmNsb3NlU3RyaXAub3BlbiYmaChiLmJvZHksbnVsbCwhMCk7cmV0dXJu
IGp9LGQucHJvdG90eXBlLkRlY29yYXRvcj1kLnByb3RvdHlwZS5NdXN0YWNoZVN0YXRlbWVudD1m
dW5jdGlvbihhKXtyZXR1cm4gYS5zdHJpcH0sZC5wcm90b3R5cGUuUGFydGlhbFN0YXRlbWVudD1k
LnByb3RvdHlwZS5Db21tZW50U3RhdGVtZW50PWZ1bmN0aW9uKGEpe3ZhciBiPWEuc3RyaXB8fHt9
O3JldHVybntpbmxpbmVTdGFuZGFsb25lOiEwLG9wZW46Yi5vcGVuLGNsb3NlOmIuY2xvc2V9fSxi
WyJkZWZhdWx0Il09ZCxhLmV4cG9ydHM9YlsiZGVmYXVsdCJdfSxmdW5jdGlvbihhLGIsYyl7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIGQoKXt0aGlzLnBhcmVudHM9W119ZnVuY3Rpb24gZShhKXt0aGlz
LmFjY2VwdFJlcXVpcmVkKGEsInBhdGgiKSx0aGlzLmFjY2VwdEFycmF5KGEucGFyYW1zKSx0aGlz
LmFjY2VwdEtleShhLCJoYXNoIil9ZnVuY3Rpb24gZihhKXtlLmNhbGwodGhpcyxhKSx0aGlzLmFj
Y2VwdEtleShhLCJwcm9ncmFtIiksdGhpcy5hY2NlcHRLZXkoYSwiaW52ZXJzZSIpfWZ1bmN0aW9u
IGcoYSl7dGhpcy5hY2NlcHRSZXF1aXJlZChhLCJuYW1lIiksdGhpcy5hY2NlcHRBcnJheShhLnBh
cmFtcyksdGhpcy5hY2NlcHRLZXkoYSwiaGFzaCIpfXZhciBoPWMoMSlbImRlZmF1bHQiXTtiLl9f
ZXNNb2R1bGU9ITA7dmFyIGk9Yyg2KSxqPWgoaSk7ZC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmQs
bXV0YXRpbmc6ITEsYWNjZXB0S2V5OmZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5hY2NlcHQoYVti
XSk7aWYodGhpcy5tdXRhdGluZyl7aWYoYyYmIWQucHJvdG90eXBlW2MudHlwZV0pdGhyb3cgbmV3
IGpbImRlZmF1bHQiXSgnVW5leHBlY3RlZCBub2RlIHR5cGUgIicrYy50eXBlKyciIGZvdW5kIHdo
ZW4gYWNjZXB0aW5nICcrYisiIG9uICIrYS50eXBlKTthW2JdPWN9fSxhY2NlcHRSZXF1aXJlZDpm
dW5jdGlvbihhLGIpe2lmKHRoaXMuYWNjZXB0S2V5KGEsYiksIWFbYl0pdGhyb3cgbmV3IGpbImRl
ZmF1bHQiXShhLnR5cGUrIiByZXF1aXJlcyAiK2IpfSxhY2NlcHRBcnJheTpmdW5jdGlvbihhKXtm
b3IodmFyIGI9MCxjPWEubGVuZ3RoO2I8YztiKyspdGhpcy5hY2NlcHRLZXkoYSxiKSxhW2JdfHwo
YS5zcGxpY2UoYiwxKSxiLS0sYy0tKX0sYWNjZXB0OmZ1bmN0aW9uKGEpe2lmKGEpe2lmKCF0aGlz
W2EudHlwZV0pdGhyb3cgbmV3IGpbImRlZmF1bHQiXSgiVW5rbm93biB0eXBlOiAiK2EudHlwZSxh
KTt0aGlzLmN1cnJlbnQmJnRoaXMucGFyZW50cy51bnNoaWZ0KHRoaXMuY3VycmVudCksdGhpcy5j
dXJyZW50PWE7dmFyIGI9dGhpc1thLnR5cGVdKGEpO3JldHVybiB0aGlzLmN1cnJlbnQ9dGhpcy5w
YXJlbnRzLnNoaWZ0KCksIXRoaXMubXV0YXRpbmd8fGI/YjpiIT09ITE/YTp2b2lkIDB9fSxQcm9n
cmFtOmZ1bmN0aW9uKGEpe3RoaXMuYWNjZXB0QXJyYXkoYS5ib2R5KX0sTXVzdGFjaGVTdGF0ZW1l
bnQ6ZSxEZWNvcmF0b3I6ZSxCbG9ja1N0YXRlbWVudDpmLERlY29yYXRvckJsb2NrOmYsUGFydGlh
bFN0YXRlbWVudDpnLFBhcnRpYWxCbG9ja1N0YXRlbWVudDpmdW5jdGlvbihhKXtnLmNhbGwodGhp
cyxhKSx0aGlzLmFjY2VwdEtleShhLCJwcm9ncmFtIil9LENvbnRlbnRTdGF0ZW1lbnQ6ZnVuY3Rp
b24oKXt9LENvbW1lbnRTdGF0ZW1lbnQ6ZnVuY3Rpb24oKXt9LFN1YkV4cHJlc3Npb246ZSxQYXRo
RXhwcmVzc2lvbjpmdW5jdGlvbigpe30sU3RyaW5nTGl0ZXJhbDpmdW5jdGlvbigpe30sTnVtYmVy
TGl0ZXJhbDpmdW5jdGlvbigpe30sQm9vbGVhbkxpdGVyYWw6ZnVuY3Rpb24oKXt9LFVuZGVmaW5l
ZExpdGVyYWw6ZnVuY3Rpb24oKXt9LE51bGxMaXRlcmFsOmZ1bmN0aW9uKCl7fSxIYXNoOmZ1bmN0
aW9uKGEpe3RoaXMuYWNjZXB0QXJyYXkoYS5wYWlycyl9LEhhc2hQYWlyOmZ1bmN0aW9uKGEpe3Ro
aXMuYWNjZXB0UmVxdWlyZWQoYSwidmFsdWUiKX19LGJbImRlZmF1bHQiXT1kLGEuZXhwb3J0cz1i
WyJkZWZhdWx0Il19LGZ1bmN0aW9uKGEsYixjKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZChhLGIp
e2lmKGI9Yi5wYXRoP2IucGF0aC5vcmlnaW5hbDpiLGEucGF0aC5vcmlnaW5hbCE9PWIpe3ZhciBj
PXtsb2M6YS5wYXRoLmxvY307dGhyb3cgbmV3IHFbImRlZmF1bHQiXShhLnBhdGgub3JpZ2luYWwr
IiBkb2Vzbid0IG1hdGNoICIrYixjKX19ZnVuY3Rpb24gZShhLGIpe3RoaXMuc291cmNlPWEsdGhp
cy5zdGFydD17bGluZTpiLmZpcnN0X2xpbmUsY29sdW1uOmIuZmlyc3RfY29sdW1ufSx0aGlzLmVu
ZD17bGluZTpiLmxhc3RfbGluZSxjb2x1bW46Yi5sYXN0X2NvbHVtbn19ZnVuY3Rpb24gZihhKXty
ZXR1cm4vXlxbLipcXSQvLnRlc3QoYSk/YS5zdWJzdHIoMSxhLmxlbmd0aC0yKTphfWZ1bmN0aW9u
IGcoYSxiKXtyZXR1cm57b3BlbjoifiI9PT1hLmNoYXJBdCgyKSxjbG9zZToifiI9PT1iLmNoYXJB
dChiLmxlbmd0aC0zKX19ZnVuY3Rpb24gaChhKXtyZXR1cm4gYS5yZXBsYWNlKC9eXHtce34/XCEt
Py0/LywiIikucmVwbGFjZSgvLT8tP34/XH1cfSQvLCIiKX1mdW5jdGlvbiBpKGEsYixjKXtjPXRo
aXMubG9jSW5mbyhjKTtmb3IodmFyIGQ9YT8iQCI6IiIsZT1bXSxmPTAsZz0iIixoPTAsaT1iLmxl
bmd0aDtoPGk7aCsrKXt2YXIgaj1iW2hdLnBhcnQsaz1iW2hdLm9yaWdpbmFsIT09ajtpZihkKz0o
YltoXS5zZXBhcmF0b3J8fCIiKStqLGt8fCIuLiIhPT1qJiYiLiIhPT1qJiYidGhpcyIhPT1qKWUu
cHVzaChqKTtlbHNle2lmKGUubGVuZ3RoPjApdGhyb3cgbmV3IHFbImRlZmF1bHQiXSgiSW52YWxp
ZCBwYXRoOiAiK2Qse2xvYzpjfSk7Ii4uIj09PWomJihmKyssZys9Ii4uLyIpfX1yZXR1cm57dHlw
ZToiUGF0aEV4cHJlc3Npb24iLGRhdGE6YSxkZXB0aDpmLHBhcnRzOmUsb3JpZ2luYWw6ZCxsb2M6
Y319ZnVuY3Rpb24gaihhLGIsYyxkLGUsZil7dmFyIGc9ZC5jaGFyQXQoMyl8fGQuY2hhckF0KDIp
LGg9InsiIT09ZyYmIiYiIT09ZyxpPS9cKi8udGVzdChkKTtyZXR1cm57dHlwZTppPyJEZWNvcmF0
b3IiOiJNdXN0YWNoZVN0YXRlbWVudCIscGF0aDphLHBhcmFtczpiLGhhc2g6Yyxlc2NhcGVkOmgs
c3RyaXA6ZSxsb2M6dGhpcy5sb2NJbmZvKGYpfX1mdW5jdGlvbiBrKGEsYixjLGUpe2QoYSxjKSxl
PXRoaXMubG9jSW5mbyhlKTt2YXIgZj17dHlwZToiUHJvZ3JhbSIsYm9keTpiLHN0cmlwOnt9LGxv
YzplfTtyZXR1cm57dHlwZToiQmxvY2tTdGF0ZW1lbnQiLHBhdGg6YS5wYXRoLHBhcmFtczphLnBh
cmFtcyxoYXNoOmEuaGFzaCxwcm9ncmFtOmYsb3BlblN0cmlwOnt9LGludmVyc2VTdHJpcDp7fSxj
bG9zZVN0cmlwOnt9LGxvYzplfX1mdW5jdGlvbiBsKGEsYixjLGUsZixnKXtlJiZlLnBhdGgmJmQo
YSxlKTt2YXIgaD0vXCovLnRlc3QoYS5vcGVuKTtiLmJsb2NrUGFyYW1zPWEuYmxvY2tQYXJhbXM7
dmFyIGk9dm9pZCAwLGo9dm9pZCAwO2lmKGMpe2lmKGgpdGhyb3cgbmV3IHFbImRlZmF1bHQiXSgi
VW5leHBlY3RlZCBpbnZlcnNlIGJsb2NrIG9uIGRlY29yYXRvciIsYyk7Yy5jaGFpbiYmKGMucHJv
Z3JhbS5ib2R5WzBdLmNsb3NlU3RyaXA9ZS5zdHJpcCksaj1jLnN0cmlwLGk9Yy5wcm9ncmFtfXJl
dHVybiBmJiYoZj1pLGk9YixiPWYpLHt0eXBlOmg/IkRlY29yYXRvckJsb2NrIjoiQmxvY2tTdGF0
ZW1lbnQiLHBhdGg6YS5wYXRoLHBhcmFtczphLnBhcmFtcyxoYXNoOmEuaGFzaCxwcm9ncmFtOmIs
aW52ZXJzZTppLG9wZW5TdHJpcDphLnN0cmlwLGludmVyc2VTdHJpcDpqLGNsb3NlU3RyaXA6ZSYm
ZS5zdHJpcCxsb2M6dGhpcy5sb2NJbmZvKGcpfX1mdW5jdGlvbiBtKGEsYil7aWYoIWImJmEubGVu
Z3RoKXt2YXIgYz1hWzBdLmxvYyxkPWFbYS5sZW5ndGgtMV0ubG9jO2MmJmQmJihiPXtzb3VyY2U6
Yy5zb3VyY2Usc3RhcnQ6e2xpbmU6Yy5zdGFydC5saW5lLGNvbHVtbjpjLnN0YXJ0LmNvbHVtbn0s
ZW5kOntsaW5lOmQuZW5kLmxpbmUsY29sdW1uOmQuZW5kLmNvbHVtbn19KX1yZXR1cm57dHlwZToi
UHJvZ3JhbSIsYm9keTphLHN0cmlwOnt9LGxvYzpifX1mdW5jdGlvbiBuKGEsYixjLGUpe3JldHVy
biBkKGEsYykse3R5cGU6IlBhcnRpYWxCbG9ja1N0YXRlbWVudCIsbmFtZTphLnBhdGgscGFyYW1z
OmEucGFyYW1zLGhhc2g6YS5oYXNoLHByb2dyYW06YixvcGVuU3RyaXA6YS5zdHJpcCxjbG9zZVN0
cmlwOmMmJmMuc3RyaXAsbG9jOnRoaXMubG9jSW5mbyhlKX19dmFyIG89YygxKVsiZGVmYXVsdCJd
O2IuX19lc01vZHVsZT0hMCxiLlNvdXJjZUxvY2F0aW9uPWUsYi5pZD1mLGIuc3RyaXBGbGFncz1n
LGIuc3RyaXBDb21tZW50PWgsYi5wcmVwYXJlUGF0aD1pLGIucHJlcGFyZU11c3RhY2hlPWosYi5w
cmVwYXJlUmF3QmxvY2s9ayxiLnByZXBhcmVCbG9jaz1sLGIucHJlcGFyZVByb2dyYW09bSxiLnBy
ZXBhcmVQYXJ0aWFsQmxvY2s9bjt2YXIgcD1jKDYpLHE9byhwKX0sZnVuY3Rpb24oYSxiLGMpeyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiBkKCl7fWZ1bmN0aW9uIGUoYSxiLGMpe2lmKG51bGw9PWF8fCJz
dHJpbmciIT10eXBlb2YgYSYmIlByb2dyYW0iIT09YS50eXBlKXRocm93IG5ldyBrWyJkZWZhdWx0
Il0oIllvdSBtdXN0IHBhc3MgYSBzdHJpbmcgb3IgSGFuZGxlYmFycyBBU1QgdG8gSGFuZGxlYmFy
cy5wcmVjb21waWxlLiBZb3UgcGFzc2VkICIrYSk7Yj1ifHx7fSwiZGF0YSJpbiBifHwoYi5kYXRh
PSEwKSxiLmNvbXBhdCYmKGIudXNlRGVwdGhzPSEwKTt2YXIgZD1jLnBhcnNlKGEsYiksZT0obmV3
IGMuQ29tcGlsZXIpLmNvbXBpbGUoZCxiKTtyZXR1cm4obmV3IGMuSmF2YVNjcmlwdENvbXBpbGVy
KS5jb21waWxlKGUsYil9ZnVuY3Rpb24gZihhLGIsYyl7ZnVuY3Rpb24gZCgpe3ZhciBkPWMucGFy
c2UoYSxiKSxlPShuZXcgYy5Db21waWxlcikuY29tcGlsZShkLGIpLGY9KG5ldyBjLkphdmFTY3Jp
cHRDb21waWxlcikuY29tcGlsZShlLGIsdm9pZCAwLCEwKTtyZXR1cm4gYy50ZW1wbGF0ZShmKX1m
dW5jdGlvbiBlKGEsYil7cmV0dXJuIGZ8fChmPWQoKSksZi5jYWxsKHRoaXMsYSxiKX1pZih2b2lk
IDA9PT1iJiYoYj17fSksbnVsbD09YXx8InN0cmluZyIhPXR5cGVvZiBhJiYiUHJvZ3JhbSIhPT1h
LnR5cGUpdGhyb3cgbmV3IGtbImRlZmF1bHQiXSgiWW91IG11c3QgcGFzcyBhIHN0cmluZyBvciBI
YW5kbGViYXJzIEFTVCB0byBIYW5kbGViYXJzLmNvbXBpbGUuIFlvdSBwYXNzZWQgIithKTsiZGF0
YSJpbiBifHwoYi5kYXRhPSEwKSxiLmNvbXBhdCYmKGIudXNlRGVwdGhzPSEwKTt2YXIgZj12b2lk
IDA7cmV0dXJuIGUuX3NldHVwPWZ1bmN0aW9uKGEpe3JldHVybiBmfHwoZj1kKCkpLGYuX3NldHVw
KGEpfSxlLl9jaGlsZD1mdW5jdGlvbihhLGIsYyxlKXtyZXR1cm4gZnx8KGY9ZCgpKSxmLl9jaGls
ZChhLGIsYyxlKX0sZX1mdW5jdGlvbiBnKGEsYil7aWYoYT09PWIpcmV0dXJuITA7aWYobC5pc0Fy
cmF5KGEpJiZsLmlzQXJyYXkoYikmJmEubGVuZ3RoPT09Yi5sZW5ndGgpe2Zvcih2YXIgYz0wO2M8
YS5sZW5ndGg7YysrKWlmKCFnKGFbY10sYltjXSkpcmV0dXJuITE7cmV0dXJuITB9fWZ1bmN0aW9u
IGgoYSl7aWYoIWEucGF0aC5wYXJ0cyl7dmFyIGI9YS5wYXRoO2EucGF0aD17dHlwZToiUGF0aEV4
cHJlc3Npb24iLGRhdGE6ITEsZGVwdGg6MCxwYXJ0czpbYi5vcmlnaW5hbCsiIl0sb3JpZ2luYWw6
Yi5vcmlnaW5hbCsiIixsb2M6Yi5sb2N9fX12YXIgaT1jKDEpWyJkZWZhdWx0Il07Yi5fX2VzTW9k
dWxlPSEwLGIuQ29tcGlsZXI9ZCxiLnByZWNvbXBpbGU9ZSxiLmNvbXBpbGU9Zjt2YXIgaj1jKDYp
LGs9aShqKSxsPWMoNSksbT1jKDI0KSxuPWkobSksbz1bXS5zbGljZTtkLnByb3RvdHlwZT17Y29t
cGlsZXI6ZCxlcXVhbHM6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5vcGNvZGVzLmxlbmd0aDtpZihh
Lm9wY29kZXMubGVuZ3RoIT09YilyZXR1cm4hMTtmb3IodmFyIGM9MDtjPGI7YysrKXt2YXIgZD10
aGlzLm9wY29kZXNbY10sZT1hLm9wY29kZXNbY107aWYoZC5vcGNvZGUhPT1lLm9wY29kZXx8IWco
ZC5hcmdzLGUuYXJncykpcmV0dXJuITF9Yj10aGlzLmNoaWxkcmVuLmxlbmd0aDtmb3IodmFyIGM9
MDtjPGI7YysrKWlmKCF0aGlzLmNoaWxkcmVuW2NdLmVxdWFscyhhLmNoaWxkcmVuW2NdKSlyZXR1
cm4hMTtyZXR1cm4hMH0sZ3VpZDowLGNvbXBpbGU6ZnVuY3Rpb24oYSxiKXt0aGlzLnNvdXJjZU5v
ZGU9W10sdGhpcy5vcGNvZGVzPVtdLHRoaXMuY2hpbGRyZW49W10sdGhpcy5vcHRpb25zPWIsdGhp
cy5zdHJpbmdQYXJhbXM9Yi5zdHJpbmdQYXJhbXMsdGhpcy50cmFja0lkcz1iLnRyYWNrSWRzLGIu
YmxvY2tQYXJhbXM9Yi5ibG9ja1BhcmFtc3x8W107dmFyIGM9Yi5rbm93bkhlbHBlcnM7aWYoYi5r
bm93bkhlbHBlcnM9e2hlbHBlck1pc3Npbmc6ITAsYmxvY2tIZWxwZXJNaXNzaW5nOiEwLGVhY2g6
ITAsImlmIjohMCx1bmxlc3M6ITAsIndpdGgiOiEwLGxvZzohMCxsb29rdXA6ITB9LGMpZm9yKHZh
ciBkIGluIGMpZCBpbiBjJiYoYi5rbm93bkhlbHBlcnNbZF09Y1tkXSk7cmV0dXJuIHRoaXMuYWNj
ZXB0KGEpfSxjb21waWxlUHJvZ3JhbTpmdW5jdGlvbihhKXt2YXIgYj1uZXcgdGhpcy5jb21waWxl
cixjPWIuY29tcGlsZShhLHRoaXMub3B0aW9ucyksZD10aGlzLmd1aWQrKztyZXR1cm4gdGhpcy51
c2VQYXJ0aWFsPXRoaXMudXNlUGFydGlhbHx8Yy51c2VQYXJ0aWFsLHRoaXMuY2hpbGRyZW5bZF09
Yyx0aGlzLnVzZURlcHRocz10aGlzLnVzZURlcHRoc3x8Yy51c2VEZXB0aHMsZH0sYWNjZXB0OmZ1
bmN0aW9uKGEpe2lmKCF0aGlzW2EudHlwZV0pdGhyb3cgbmV3IGtbImRlZmF1bHQiXSgiVW5rbm93
biB0eXBlOiAiK2EudHlwZSxhKTt0aGlzLnNvdXJjZU5vZGUudW5zaGlmdChhKTt2YXIgYj10aGlz
W2EudHlwZV0oYSk7cmV0dXJuIHRoaXMuc291cmNlTm9kZS5zaGlmdCgpLGJ9LFByb2dyYW06ZnVu
Y3Rpb24oYSl7dGhpcy5vcHRpb25zLmJsb2NrUGFyYW1zLnVuc2hpZnQoYS5ibG9ja1BhcmFtcyk7
Zm9yKHZhciBiPWEuYm9keSxjPWIubGVuZ3RoLGQ9MDtkPGM7ZCsrKXRoaXMuYWNjZXB0KGJbZF0p
O3JldHVybiB0aGlzLm9wdGlvbnMuYmxvY2tQYXJhbXMuc2hpZnQoKSx0aGlzLmlzU2ltcGxlPTE9
PT1jLHRoaXMuYmxvY2tQYXJhbXM9YS5ibG9ja1BhcmFtcz9hLmJsb2NrUGFyYW1zLmxlbmd0aDow
LHRoaXN9LEJsb2NrU3RhdGVtZW50OmZ1bmN0aW9uKGEpe2goYSk7dmFyIGI9YS5wcm9ncmFtLGM9
YS5pbnZlcnNlO2I9YiYmdGhpcy5jb21waWxlUHJvZ3JhbShiKSxjPWMmJnRoaXMuY29tcGlsZVBy
b2dyYW0oYyk7dmFyIGQ9dGhpcy5jbGFzc2lmeVNleHByKGEpOyJoZWxwZXIiPT09ZD90aGlzLmhl
bHBlclNleHByKGEsYixjKToic2ltcGxlIj09PWQ/KHRoaXMuc2ltcGxlU2V4cHIoYSksdGhpcy5v
cGNvZGUoInB1c2hQcm9ncmFtIixiKSx0aGlzLm9wY29kZSgicHVzaFByb2dyYW0iLGMpLHRoaXMu
b3Bjb2RlKCJlbXB0eUhhc2giKSx0aGlzLm9wY29kZSgiYmxvY2tWYWx1ZSIsYS5wYXRoLm9yaWdp
bmFsKSk6KHRoaXMuYW1iaWd1b3VzU2V4cHIoYSxiLGMpLHRoaXMub3Bjb2RlKCJwdXNoUHJvZ3Jh
bSIsYiksdGhpcy5vcGNvZGUoInB1c2hQcm9ncmFtIixjKSx0aGlzLm9wY29kZSgiZW1wdHlIYXNo
IiksdGhpcy5vcGNvZGUoImFtYmlndW91c0Jsb2NrVmFsdWUiKSksdGhpcy5vcGNvZGUoImFwcGVu
ZCIpfSxEZWNvcmF0b3JCbG9jazpmdW5jdGlvbihhKXt2YXIgYj1hLnByb2dyYW0mJnRoaXMuY29t
cGlsZVByb2dyYW0oYS5wcm9ncmFtKSxjPXRoaXMuc2V0dXBGdWxsTXVzdGFjaGVQYXJhbXMoYSxi
LHZvaWQgMCksZD1hLnBhdGg7dGhpcy51c2VEZWNvcmF0b3JzPSEwLHRoaXMub3Bjb2RlKCJyZWdp
c3RlckRlY29yYXRvciIsYy5sZW5ndGgsZC5vcmlnaW5hbCl9LFBhcnRpYWxTdGF0ZW1lbnQ6ZnVu
Y3Rpb24oYSl7dGhpcy51c2VQYXJ0aWFsPSEwO3ZhciBiPWEucHJvZ3JhbTtiJiYoYj10aGlzLmNv
bXBpbGVQcm9ncmFtKGEucHJvZ3JhbSkpO3ZhciBjPWEucGFyYW1zO2lmKGMubGVuZ3RoPjEpdGhy
b3cgbmV3IGtbImRlZmF1bHQiXSgiVW5zdXBwb3J0ZWQgbnVtYmVyIG9mIHBhcnRpYWwgYXJndW1l
bnRzOiAiK2MubGVuZ3RoLGEpO2MubGVuZ3RofHwodGhpcy5vcHRpb25zLmV4cGxpY2l0UGFydGlh
bENvbnRleHQ/dGhpcy5vcGNvZGUoInB1c2hMaXRlcmFsIiwidW5kZWZpbmVkIik6Yy5wdXNoKHt0
eXBlOiJQYXRoRXhwcmVzc2lvbiIscGFydHM6W10sZGVwdGg6MH0pKTt2YXIgZD1hLm5hbWUub3Jp
Z2luYWwsZT0iU3ViRXhwcmVzc2lvbiI9PT1hLm5hbWUudHlwZTtlJiZ0aGlzLmFjY2VwdChhLm5h
bWUpLHRoaXMuc2V0dXBGdWxsTXVzdGFjaGVQYXJhbXMoYSxiLHZvaWQgMCwhMCk7dmFyIGY9YS5p
bmRlbnR8fCIiO3RoaXMub3B0aW9ucy5wcmV2ZW50SW5kZW50JiZmJiYodGhpcy5vcGNvZGUoImFw
cGVuZENvbnRlbnQiLGYpLGY9IiIpLHRoaXMub3Bjb2RlKCJpbnZva2VQYXJ0aWFsIixlLGQsZiks
dGhpcy5vcGNvZGUoImFwcGVuZCIpfSxQYXJ0aWFsQmxvY2tTdGF0ZW1lbnQ6ZnVuY3Rpb24oYSl7
dGhpcy5QYXJ0aWFsU3RhdGVtZW50KGEpfSxNdXN0YWNoZVN0YXRlbWVudDpmdW5jdGlvbihhKXt0
aGlzLlN1YkV4cHJlc3Npb24oYSksYS5lc2NhcGVkJiYhdGhpcy5vcHRpb25zLm5vRXNjYXBlP3Ro
aXMub3Bjb2RlKCJhcHBlbmRFc2NhcGVkIik6dGhpcy5vcGNvZGUoImFwcGVuZCIpfSxEZWNvcmF0
b3I6ZnVuY3Rpb24oYSl7dGhpcy5EZWNvcmF0b3JCbG9jayhhKX0sQ29udGVudFN0YXRlbWVudDpm
dW5jdGlvbihhKXthLnZhbHVlJiZ0aGlzLm9wY29kZSgiYXBwZW5kQ29udGVudCIsYS52YWx1ZSl9
LENvbW1lbnRTdGF0ZW1lbnQ6ZnVuY3Rpb24oKXt9LFN1YkV4cHJlc3Npb246ZnVuY3Rpb24oYSl7
aChhKTt2YXIgYj10aGlzLmNsYXNzaWZ5U2V4cHIoYSk7InNpbXBsZSI9PT1iP3RoaXMuc2ltcGxl
U2V4cHIoYSk6ImhlbHBlciI9PT1iP3RoaXMuaGVscGVyU2V4cHIoYSk6dGhpcy5hbWJpZ3VvdXNT
ZXhwcihhKX0sYW1iaWd1b3VzU2V4cHI6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEucGF0aCxlPWQu
cGFydHNbMF0sZj1udWxsIT1ifHxudWxsIT1jO3RoaXMub3Bjb2RlKCJnZXRDb250ZXh0IixkLmRl
cHRoKSx0aGlzLm9wY29kZSgicHVzaFByb2dyYW0iLGIpLHRoaXMub3Bjb2RlKCJwdXNoUHJvZ3Jh
bSIsYyksZC5zdHJpY3Q9ITAsdGhpcy5hY2NlcHQoZCksdGhpcy5vcGNvZGUoImludm9rZUFtYmln
dW91cyIsZSxmKX0sc2ltcGxlU2V4cHI6ZnVuY3Rpb24oYSl7dmFyIGI9YS5wYXRoO2Iuc3RyaWN0
PSEwLHRoaXMuYWNjZXB0KGIpLHRoaXMub3Bjb2RlKCJyZXNvbHZlUG9zc2libGVMYW1iZGEiKX0s
aGVscGVyU2V4cHI6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMuc2V0dXBGdWxsTXVzdGFjaGVQ
YXJhbXMoYSxiLGMpLGU9YS5wYXRoLGY9ZS5wYXJ0c1swXTtpZih0aGlzLm9wdGlvbnMua25vd25I
ZWxwZXJzW2ZdKXRoaXMub3Bjb2RlKCJpbnZva2VLbm93bkhlbHBlciIsZC5sZW5ndGgsZik7ZWxz
ZXtpZih0aGlzLm9wdGlvbnMua25vd25IZWxwZXJzT25seSl0aHJvdyBuZXcga1siZGVmYXVsdCJd
KCJZb3Ugc3BlY2lmaWVkIGtub3duSGVscGVyc09ubHksIGJ1dCB1c2VkIHRoZSB1bmtub3duIGhl
bHBlciAiK2YsYSk7ZS5zdHJpY3Q9ITAsZS5mYWxzeT0hMCx0aGlzLmFjY2VwdChlKSx0aGlzLm9w
Y29kZSgiaW52b2tlSGVscGVyIixkLmxlbmd0aCxlLm9yaWdpbmFsLG5bImRlZmF1bHQiXS5oZWxw
ZXJzLnNpbXBsZUlkKGUpKX19LFBhdGhFeHByZXNzaW9uOmZ1bmN0aW9uKGEpe3RoaXMuYWRkRGVw
dGgoYS5kZXB0aCksdGhpcy5vcGNvZGUoImdldENvbnRleHQiLGEuZGVwdGgpO3ZhciBiPWEucGFy
dHNbMF0sYz1uWyJkZWZhdWx0Il0uaGVscGVycy5zY29wZWRJZChhKSxkPSFhLmRlcHRoJiYhYyYm
dGhpcy5ibG9ja1BhcmFtSW5kZXgoYik7ZD90aGlzLm9wY29kZSgibG9va3VwQmxvY2tQYXJhbSIs
ZCxhLnBhcnRzKTpiP2EuZGF0YT8odGhpcy5vcHRpb25zLmRhdGE9ITAsdGhpcy5vcGNvZGUoImxv
b2t1cERhdGEiLGEuZGVwdGgsYS5wYXJ0cyxhLnN0cmljdCkpOnRoaXMub3Bjb2RlKCJsb29rdXBP
bkNvbnRleHQiLGEucGFydHMsYS5mYWxzeSxhLnN0cmljdCxjKTp0aGlzLm9wY29kZSgicHVzaENv
bnRleHQiKX0sU3RyaW5nTGl0ZXJhbDpmdW5jdGlvbihhKXt0aGlzLm9wY29kZSgicHVzaFN0cmlu
ZyIsYS52YWx1ZSl9LE51bWJlckxpdGVyYWw6ZnVuY3Rpb24oYSl7dGhpcy5vcGNvZGUoInB1c2hM
aXRlcmFsIixhLnZhbHVlKX0sQm9vbGVhbkxpdGVyYWw6ZnVuY3Rpb24oYSl7dGhpcy5vcGNvZGUo
InB1c2hMaXRlcmFsIixhLnZhbHVlKX0sVW5kZWZpbmVkTGl0ZXJhbDpmdW5jdGlvbigpe3RoaXMu
b3Bjb2RlKCJwdXNoTGl0ZXJhbCIsInVuZGVmaW5lZCIpfSxOdWxsTGl0ZXJhbDpmdW5jdGlvbigp
e3RoaXMub3Bjb2RlKCJwdXNoTGl0ZXJhbCIsIm51bGwiKX0sSGFzaDpmdW5jdGlvbihhKXt2YXIg
Yj1hLnBhaXJzLGM9MCxkPWIubGVuZ3RoO2Zvcih0aGlzLm9wY29kZSgicHVzaEhhc2giKTtjPGQ7
YysrKXRoaXMucHVzaFBhcmFtKGJbY10udmFsdWUpO2Zvcig7Yy0tOyl0aGlzLm9wY29kZSgiYXNz
aWduVG9IYXNoIixiW2NdLmtleSk7dGhpcy5vcGNvZGUoInBvcEhhc2giKX0sb3Bjb2RlOmZ1bmN0
aW9uKGEpe3RoaXMub3Bjb2Rlcy5wdXNoKHtvcGNvZGU6YSxhcmdzOm8uY2FsbChhcmd1bWVudHMs
MSksbG9jOnRoaXMuc291cmNlTm9kZVswXS5sb2N9KX0sYWRkRGVwdGg6ZnVuY3Rpb24oYSl7YSYm
KHRoaXMudXNlRGVwdGhzPSEwKX0sY2xhc3NpZnlTZXhwcjpmdW5jdGlvbihhKXt2YXIgYj1uWyJk
ZWZhdWx0Il0uaGVscGVycy5zaW1wbGVJZChhLnBhdGgpLGM9YiYmISF0aGlzLmJsb2NrUGFyYW1J
bmRleChhLnBhdGgucGFydHNbMF0pLGQ9IWMmJm5bImRlZmF1bHQiXS5oZWxwZXJzLmhlbHBlckV4
cHJlc3Npb24oYSksZT0hYyYmKGR8fGIpO2lmKGUmJiFkKXt2YXIgZj1hLnBhdGgucGFydHNbMF0s
Zz10aGlzLm9wdGlvbnM7Zy5rbm93bkhlbHBlcnNbZl0/ZD0hMDpnLmtub3duSGVscGVyc09ubHkm
JihlPSExKX1yZXR1cm4gZD8iaGVscGVyIjplPyJhbWJpZ3VvdXMiOiJzaW1wbGUifSxwdXNoUGFy
YW1zOmZ1bmN0aW9uKGEpe2Zvcih2YXIgYj0wLGM9YS5sZW5ndGg7YjxjO2IrKyl0aGlzLnB1c2hQ
YXJhbShhW2JdKX0scHVzaFBhcmFtOmZ1bmN0aW9uKGEpe3ZhciBiPW51bGwhPWEudmFsdWU/YS52
YWx1ZTphLm9yaWdpbmFsfHwiIjtpZih0aGlzLnN0cmluZ1BhcmFtcyliLnJlcGxhY2UmJihiPWIu
cmVwbGFjZSgvXihcLj9cLlwvKSovZywiIikucmVwbGFjZSgvXC8vZywiLiIpKSxhLmRlcHRoJiZ0
aGlzLmFkZERlcHRoKGEuZGVwdGgpLHRoaXMub3Bjb2RlKCJnZXRDb250ZXh0IixhLmRlcHRofHww
KSx0aGlzLm9wY29kZSgicHVzaFN0cmluZ1BhcmFtIixiLGEudHlwZSksIlN1YkV4cHJlc3Npb24i
PT09YS50eXBlJiZ0aGlzLmFjY2VwdChhKTtlbHNle2lmKHRoaXMudHJhY2tJZHMpe3ZhciBjPXZv
aWQgMDtpZighYS5wYXJ0c3x8blsiZGVmYXVsdCJdLmhlbHBlcnMuc2NvcGVkSWQoYSl8fGEuZGVw
dGh8fChjPXRoaXMuYmxvY2tQYXJhbUluZGV4KGEucGFydHNbMF0pKSxjKXt2YXIgZD1hLnBhcnRz
LnNsaWNlKDEpLmpvaW4oIi4iKTt0aGlzLm9wY29kZSgicHVzaElkIiwiQmxvY2tQYXJhbSIsYyxk
KX1lbHNlIGI9YS5vcmlnaW5hbHx8YixiLnJlcGxhY2UmJihiPWIucmVwbGFjZSgvXnRoaXMoPzpc
LnwkKS8sIiIpLnJlcGxhY2UoL15cLlwvLywiIikucmVwbGFjZSgvXlwuJC8sIiIpKSx0aGlzLm9w
Y29kZSgicHVzaElkIixhLnR5cGUsYil9dGhpcy5hY2NlcHQoYSl9fSxzZXR1cEZ1bGxNdXN0YWNo
ZVBhcmFtczpmdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1hLnBhcmFtcztyZXR1cm4gdGhpcy5wdXNo
UGFyYW1zKGUpLHRoaXMub3Bjb2RlKCJwdXNoUHJvZ3JhbSIsYiksdGhpcy5vcGNvZGUoInB1c2hQ
cm9ncmFtIixjKSxhLmhhc2g/dGhpcy5hY2NlcHQoYS5oYXNoKTp0aGlzLm9wY29kZSgiZW1wdHlI
YXNoIixkKSxlfSxibG9ja1BhcmFtSW5kZXg6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPTAsYz10aGlz
Lm9wdGlvbnMuYmxvY2tQYXJhbXMubGVuZ3RoO2I8YztiKyspe3ZhciBkPXRoaXMub3B0aW9ucy5i
bG9ja1BhcmFtc1tiXSxlPWQmJmwuaW5kZXhPZihkLGEpO2lmKGQmJmU+PTApcmV0dXJuW2IsZV19
fX19LGZ1bmN0aW9uKGEsYixjKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZChhKXt0aGlzLnZhbHVl
PWF9ZnVuY3Rpb24gZSgpe31mdW5jdGlvbiBmKGEsYixjLGQpe3ZhciBlPWIucG9wU3RhY2soKSxm
PTAsZz1jLmxlbmd0aDtmb3IoYSYmZy0tO2Y8ZztmKyspZT1iLm5hbWVMb29rdXAoZSxjW2ZdLGQp
O3JldHVybiBhP1tiLmFsaWFzYWJsZSgiY29udGFpbmVyLnN0cmljdCIpLCIoIixlLCIsICIsYi5x
dW90ZWRTdHJpbmcoY1tmXSksIikiXTplfXZhciBnPWMoMSlbImRlZmF1bHQiXTtiLl9fZXNNb2R1
bGU9ITA7dmFyIGg9Yyg0KSxpPWMoNiksaj1nKGkpLGs9Yyg1KSxsPWMoMzIpLG09ZyhsKTtlLnBy
b3RvdHlwZT17bmFtZUxvb2t1cDpmdW5jdGlvbihhLGIpe3JldHVybiBlLmlzVmFsaWRKYXZhU2Ny
aXB0VmFyaWFibGVOYW1lKGIpP1thLCIuIixiXTpbYSwiWyIsSlNPTi5zdHJpbmdpZnkoYiksIl0i
XX0sZGVwdGhlZExvb2t1cDpmdW5jdGlvbihhKXtyZXR1cm5bdGhpcy5hbGlhc2FibGUoImNvbnRh
aW5lci5sb29rdXAiKSwnKGRlcHRocywgIicsYSwnIiknXX0sY29tcGlsZXJJbmZvOmZ1bmN0aW9u
KCl7dmFyIGE9aC5DT01QSUxFUl9SRVZJU0lPTixiPWguUkVWSVNJT05fQ0hBTkdFU1thXTtyZXR1
cm5bYSxiXX0sYXBwZW5kVG9CdWZmZXI6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBrLmlzQXJyYXko
YSl8fChhPVthXSksYT10aGlzLnNvdXJjZS53cmFwKGEsYiksdGhpcy5lbnZpcm9ubWVudC5pc1Np
bXBsZT9bInJldHVybiAiLGEsIjsiXTpjP1siYnVmZmVyICs9ICIsYSwiOyJdOihhLmFwcGVuZFRv
QnVmZmVyPSEwLGEpfSxpbml0aWFsaXplQnVmZmVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucXVv
dGVkU3RyaW5nKCIiKX0sY29tcGlsZTpmdW5jdGlvbihhLGIsYyxkKXt0aGlzLmVudmlyb25tZW50
PWEsdGhpcy5vcHRpb25zPWIsdGhpcy5zdHJpbmdQYXJhbXM9dGhpcy5vcHRpb25zLnN0cmluZ1Bh
cmFtcyx0aGlzLnRyYWNrSWRzPXRoaXMub3B0aW9ucy50cmFja0lkcyx0aGlzLnByZWNvbXBpbGU9
IWQsdGhpcy5uYW1lPXRoaXMuZW52aXJvbm1lbnQubmFtZSx0aGlzLmlzQ2hpbGQ9ISFjLHRoaXMu
Y29udGV4dD1jfHx7ZGVjb3JhdG9yczpbXSxwcm9ncmFtczpbXSxlbnZpcm9ubWVudHM6W119LHRo
aXMucHJlYW1ibGUoKSx0aGlzLnN0YWNrU2xvdD0wLHRoaXMuc3RhY2tWYXJzPVtdLHRoaXMuYWxp
YXNlcz17fSx0aGlzLnJlZ2lzdGVycz17bGlzdDpbXX0sdGhpcy5oYXNoZXM9W10sdGhpcy5jb21w
aWxlU3RhY2s9W10sdGhpcy5pbmxpbmVTdGFjaz1bXSx0aGlzLmJsb2NrUGFyYW1zPVtdLHRoaXMu
Y29tcGlsZUNoaWxkcmVuKGEsYiksdGhpcy51c2VEZXB0aHM9dGhpcy51c2VEZXB0aHN8fGEudXNl
RGVwdGhzfHxhLnVzZURlY29yYXRvcnN8fHRoaXMub3B0aW9ucy5jb21wYXQsdGhpcy51c2VCbG9j
a1BhcmFtcz10aGlzLnVzZUJsb2NrUGFyYW1zfHxhLnVzZUJsb2NrUGFyYW1zO3ZhciBlPWEub3Bj
b2RlcyxmPXZvaWQgMCxnPXZvaWQgMCxoPXZvaWQgMCxpPXZvaWQgMDtmb3IoaD0wLGk9ZS5sZW5n
dGg7aDxpO2grKylmPWVbaF0sdGhpcy5zb3VyY2UuY3VycmVudExvY2F0aW9uPWYubG9jLGc9Z3x8
Zi5sb2MsdGhpc1tmLm9wY29kZV0uYXBwbHkodGhpcyxmLmFyZ3MpO2lmKHRoaXMuc291cmNlLmN1
cnJlbnRMb2NhdGlvbj1nLHRoaXMucHVzaFNvdXJjZSgiIiksdGhpcy5zdGFja1Nsb3R8fHRoaXMu
aW5saW5lU3RhY2subGVuZ3RofHx0aGlzLmNvbXBpbGVTdGFjay5sZW5ndGgpdGhyb3cgbmV3IGpb
ImRlZmF1bHQiXSgiQ29tcGlsZSBjb21wbGV0ZWQgd2l0aCBjb250ZW50IGxlZnQgb24gc3RhY2si
KTt0aGlzLmRlY29yYXRvcnMuaXNFbXB0eSgpP3RoaXMuZGVjb3JhdG9ycz12b2lkIDA6KHRoaXMu
dXNlRGVjb3JhdG9ycz0hMCx0aGlzLmRlY29yYXRvcnMucHJlcGVuZCgidmFyIGRlY29yYXRvcnMg
PSBjb250YWluZXIuZGVjb3JhdG9ycztcbiIpLHRoaXMuZGVjb3JhdG9ycy5wdXNoKCJyZXR1cm4g
Zm47IiksZD90aGlzLmRlY29yYXRvcnM9RnVuY3Rpb24uYXBwbHkodGhpcyxbImZuIiwicHJvcHMi
LCJjb250YWluZXIiLCJkZXB0aDAiLCJkYXRhIiwiYmxvY2tQYXJhbXMiLCJkZXB0aHMiLHRoaXMu
ZGVjb3JhdG9ycy5tZXJnZSgpXSk6KHRoaXMuZGVjb3JhdG9ycy5wcmVwZW5kKCJmdW5jdGlvbihm
biwgcHJvcHMsIGNvbnRhaW5lciwgZGVwdGgwLCBkYXRhLCBibG9ja1BhcmFtcywgZGVwdGhzKSB7
XG4iKSx0aGlzLmRlY29yYXRvcnMucHVzaCgifVxuIiksdGhpcy5kZWNvcmF0b3JzPXRoaXMuZGVj
b3JhdG9ycy5tZXJnZSgpKSk7dmFyIGs9dGhpcy5jcmVhdGVGdW5jdGlvbkNvbnRleHQoZCk7aWYo
dGhpcy5pc0NoaWxkKXJldHVybiBrO3ZhciBsPXtjb21waWxlcjp0aGlzLmNvbXBpbGVySW5mbygp
LG1haW46a307dGhpcy5kZWNvcmF0b3JzJiYobC5tYWluX2Q9dGhpcy5kZWNvcmF0b3JzLGwudXNl
RGVjb3JhdG9ycz0hMCk7dmFyIG09dGhpcy5jb250ZXh0LG49bS5wcm9ncmFtcyxvPW0uZGVjb3Jh
dG9ycztmb3IoaD0wLGk9bi5sZW5ndGg7aDxpO2grKyluW2hdJiYobFtoXT1uW2hdLG9baF0mJihs
W2grIl9kIl09b1toXSxsLnVzZURlY29yYXRvcnM9ITApKTtyZXR1cm4gdGhpcy5lbnZpcm9ubWVu
dC51c2VQYXJ0aWFsJiYobC51c2VQYXJ0aWFsPSEwKSx0aGlzLm9wdGlvbnMuZGF0YSYmKGwudXNl
RGF0YT0hMCksdGhpcy51c2VEZXB0aHMmJihsLnVzZURlcHRocz0hMCksdGhpcy51c2VCbG9ja1Bh
cmFtcyYmKGwudXNlQmxvY2tQYXJhbXM9ITApLHRoaXMub3B0aW9ucy5jb21wYXQmJihsLmNvbXBh
dD0hMCksZD9sLmNvbXBpbGVyT3B0aW9ucz10aGlzLm9wdGlvbnM6KGwuY29tcGlsZXI9SlNPTi5z
dHJpbmdpZnkobC5jb21waWxlciksdGhpcy5zb3VyY2UuY3VycmVudExvY2F0aW9uPXtzdGFydDp7
bGluZToxLGNvbHVtbjowfX0sbD10aGlzLm9iamVjdExpdGVyYWwobCksYi5zcmNOYW1lPyhsPWwu
dG9TdHJpbmdXaXRoU291cmNlTWFwKHtmaWxlOmIuZGVzdE5hbWV9KSxsLm1hcD1sLm1hcCYmbC5t
YXAudG9TdHJpbmcoKSk6bD1sLnRvU3RyaW5nKCkpLGx9LHByZWFtYmxlOmZ1bmN0aW9uKCl7dGhp
cy5sYXN0Q29udGV4dD0wLHRoaXMuc291cmNlPW5ldyBtWyJkZWZhdWx0Il0odGhpcy5vcHRpb25z
LnNyY05hbWUpLHRoaXMuZGVjb3JhdG9ycz1uZXcgbVsiZGVmYXVsdCJdKHRoaXMub3B0aW9ucy5z
cmNOYW1lKX0sY3JlYXRlRnVuY3Rpb25Db250ZXh0OmZ1bmN0aW9uKGEpe3ZhciBiPSIiLGM9dGhp
cy5zdGFja1ZhcnMuY29uY2F0KHRoaXMucmVnaXN0ZXJzLmxpc3QpO2MubGVuZ3RoPjAmJihiKz0i
LCAiK2Muam9pbigiLCAiKSk7dmFyIGQ9MDtmb3IodmFyIGUgaW4gdGhpcy5hbGlhc2VzKXt2YXIg
Zj10aGlzLmFsaWFzZXNbZV07dGhpcy5hbGlhc2VzLmhhc093blByb3BlcnR5KGUpJiZmLmNoaWxk
cmVuJiZmLnJlZmVyZW5jZUNvdW50PjEmJihiKz0iLCBhbGlhcyIrICsrZCsiPSIrZSxmLmNoaWxk
cmVuWzBdPSJhbGlhcyIrZCl9dmFyIGc9WyJjb250YWluZXIiLCJkZXB0aDAiLCJoZWxwZXJzIiwi
cGFydGlhbHMiLCJkYXRhIl07KHRoaXMudXNlQmxvY2tQYXJhbXN8fHRoaXMudXNlRGVwdGhzKSYm
Zy5wdXNoKCJibG9ja1BhcmFtcyIpLHRoaXMudXNlRGVwdGhzJiZnLnB1c2goImRlcHRocyIpO3Zh
ciBoPXRoaXMubWVyZ2VTb3VyY2UoYik7cmV0dXJuIGE/KGcucHVzaChoKSxGdW5jdGlvbi5hcHBs
eSh0aGlzLGcpKTp0aGlzLnNvdXJjZS53cmFwKFsiZnVuY3Rpb24oIixnLmpvaW4oIiwiKSwiKSB7
XG4gICIsaCwifSJdKX0sbWVyZ2VTb3VyY2U6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5lbnZpcm9u
bWVudC5pc1NpbXBsZSxjPSF0aGlzLmZvcmNlQnVmZmVyLGQ9dm9pZCAwLGU9dm9pZCAwLGY9dm9p
ZCAwLGc9dm9pZCAwO3JldHVybiB0aGlzLnNvdXJjZS5lYWNoKGZ1bmN0aW9uKGEpe2EuYXBwZW5k
VG9CdWZmZXI/KGY/YS5wcmVwZW5kKCIgICsgIik6Zj1hLGc9YSk6KGYmJihlP2YucHJlcGVuZCgi
YnVmZmVyICs9ICIpOmQ9ITAsZy5hZGQoIjsiKSxmPWc9dm9pZCAwKSxlPSEwLGJ8fChjPSExKSl9
KSxjP2Y/KGYucHJlcGVuZCgicmV0dXJuICIpLGcuYWRkKCI7IikpOmV8fHRoaXMuc291cmNlLnB1
c2goJ3JldHVybiAiIjsnKTooYSs9IiwgYnVmZmVyID0gIisoZD8iIjp0aGlzLmluaXRpYWxpemVC
dWZmZXIoKSksZj8oZi5wcmVwZW5kKCJyZXR1cm4gYnVmZmVyICsgIiksZy5hZGQoIjsiKSk6dGhp
cy5zb3VyY2UucHVzaCgicmV0dXJuIGJ1ZmZlcjsiKSksYSYmdGhpcy5zb3VyY2UucHJlcGVuZCgi
dmFyICIrYS5zdWJzdHJpbmcoMikrKGQ/IiI6IjtcbiIpKSx0aGlzLnNvdXJjZS5tZXJnZSgpfSxi
bG9ja1ZhbHVlOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuYWxpYXNhYmxlKCJoZWxwZXJzLmJsb2Nr
SGVscGVyTWlzc2luZyIpLGM9W3RoaXMuY29udGV4dE5hbWUoMCldO3RoaXMuc2V0dXBIZWxwZXJB
cmdzKGEsMCxjKTt2YXIgZD10aGlzLnBvcFN0YWNrKCk7Yy5zcGxpY2UoMSwwLGQpLHRoaXMucHVz
aCh0aGlzLnNvdXJjZS5mdW5jdGlvbkNhbGwoYiwiY2FsbCIsYykpfSxhbWJpZ3VvdXNCbG9ja1Zh
bHVlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5hbGlhc2FibGUoImhlbHBlcnMuYmxvY2tIZWxwZXJN
aXNzaW5nIiksYj1bdGhpcy5jb250ZXh0TmFtZSgwKV07dGhpcy5zZXR1cEhlbHBlckFyZ3MoIiIs
MCxiLCEwKSx0aGlzLmZsdXNoSW5saW5lKCk7dmFyIGM9dGhpcy50b3BTdGFjaygpO2Iuc3BsaWNl
KDEsMCxjKSx0aGlzLnB1c2hTb3VyY2UoWyJpZiAoISIsdGhpcy5sYXN0SGVscGVyLCIpIHsgIixj
LCIgPSAiLHRoaXMuc291cmNlLmZ1bmN0aW9uQ2FsbChhLCJjYWxsIixiKSwifSJdKX0sYXBwZW5k
Q29udGVudDpmdW5jdGlvbihhKXt0aGlzLnBlbmRpbmdDb250ZW50P2E9dGhpcy5wZW5kaW5nQ29u
dGVudCthOnRoaXMucGVuZGluZ0xvY2F0aW9uPXRoaXMuc291cmNlLmN1cnJlbnRMb2NhdGlvbix0
aGlzLnBlbmRpbmdDb250ZW50PWF9LGFwcGVuZDpmdW5jdGlvbigpe2lmKHRoaXMuaXNJbmxpbmUo
KSl0aGlzLnJlcGxhY2VTdGFjayhmdW5jdGlvbihhKXtyZXR1cm5bIiAhPSBudWxsID8gIixhLCcg
OiAiIiddfSksdGhpcy5wdXNoU291cmNlKHRoaXMuYXBwZW5kVG9CdWZmZXIodGhpcy5wb3BTdGFj
aygpKSk7ZWxzZXt2YXIgYT10aGlzLnBvcFN0YWNrKCk7dGhpcy5wdXNoU291cmNlKFsiaWYgKCIs
YSwiICE9IG51bGwpIHsgIix0aGlzLmFwcGVuZFRvQnVmZmVyKGEsdm9pZCAwLCEwKSwiIH0iXSks
dGhpcy5lbnZpcm9ubWVudC5pc1NpbXBsZSYmdGhpcy5wdXNoU291cmNlKFsiZWxzZSB7ICIsdGhp
cy5hcHBlbmRUb0J1ZmZlcigiJyciLHZvaWQgMCwhMCksIiB9Il0pfX0sYXBwZW5kRXNjYXBlZDpm
dW5jdGlvbigpe3RoaXMucHVzaFNvdXJjZSh0aGlzLmFwcGVuZFRvQnVmZmVyKFt0aGlzLmFsaWFz
YWJsZSgiY29udGFpbmVyLmVzY2FwZUV4cHJlc3Npb24iKSwiKCIsdGhpcy5wb3BTdGFjaygpLCIp
Il0pKX0sZ2V0Q29udGV4dDpmdW5jdGlvbihhKXt0aGlzLmxhc3RDb250ZXh0PWF9LHB1c2hDb250
ZXh0OmZ1bmN0aW9uKCl7dGhpcy5wdXNoU3RhY2tMaXRlcmFsKHRoaXMuY29udGV4dE5hbWUodGhp
cy5sYXN0Q29udGV4dCkpfSxsb29rdXBPbkNvbnRleHQ6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9
MDtkfHwhdGhpcy5vcHRpb25zLmNvbXBhdHx8dGhpcy5sYXN0Q29udGV4dD90aGlzLnB1c2hDb250
ZXh0KCk6dGhpcy5wdXNoKHRoaXMuZGVwdGhlZExvb2t1cChhW2UrK10pKSx0aGlzLnJlc29sdmVQ
YXRoKCJjb250ZXh0IixhLGUsYixjKX0sbG9va3VwQmxvY2tQYXJhbTpmdW5jdGlvbihhLGIpe3Ro
aXMudXNlQmxvY2tQYXJhbXM9ITAsdGhpcy5wdXNoKFsiYmxvY2tQYXJhbXNbIixhWzBdLCJdWyIs
YVsxXSwiXSJdKSx0aGlzLnJlc29sdmVQYXRoKCJjb250ZXh0IixiLDEpfSxsb29rdXBEYXRhOmZ1
bmN0aW9uKGEsYixjKXthP3RoaXMucHVzaFN0YWNrTGl0ZXJhbCgiY29udGFpbmVyLmRhdGEoZGF0
YSwgIithKyIpIik6dGhpcy5wdXNoU3RhY2tMaXRlcmFsKCJkYXRhIiksdGhpcy5yZXNvbHZlUGF0
aCgiZGF0YSIsYiwwLCEwLGMpfSxyZXNvbHZlUGF0aDpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBn
PXRoaXM7aWYodGhpcy5vcHRpb25zLnN0cmljdHx8dGhpcy5vcHRpb25zLmFzc3VtZU9iamVjdHMp
cmV0dXJuIHZvaWQgdGhpcy5wdXNoKGYodGhpcy5vcHRpb25zLnN0cmljdCYmZSx0aGlzLGIsYSkp
O2Zvcih2YXIgaD1iLmxlbmd0aDtjPGg7YysrKXRoaXMucmVwbGFjZVN0YWNrKGZ1bmN0aW9uKGUp
e3ZhciBmPWcubmFtZUxvb2t1cChlLGJbY10sYSk7cmV0dXJuIGQ/WyIgJiYgIixmXTpbIiAhPSBu
dWxsID8gIixmLCIgOiAiLGVdfSl9LHJlc29sdmVQb3NzaWJsZUxhbWJkYTpmdW5jdGlvbigpe3Ro
aXMucHVzaChbdGhpcy5hbGlhc2FibGUoImNvbnRhaW5lci5sYW1iZGEiKSwiKCIsdGhpcy5wb3BT
dGFjaygpLCIsICIsdGhpcy5jb250ZXh0TmFtZSgwKSwiKSJdKX0scHVzaFN0cmluZ1BhcmFtOmZ1
bmN0aW9uKGEsYil7dGhpcy5wdXNoQ29udGV4dCgpLHRoaXMucHVzaFN0cmluZyhiKSwiU3ViRXhw
cmVzc2lvbiIhPT1iJiYoInN0cmluZyI9PXR5cGVvZiBhP3RoaXMucHVzaFN0cmluZyhhKTp0aGlz
LnB1c2hTdGFja0xpdGVyYWwoYSkpfSxlbXB0eUhhc2g6ZnVuY3Rpb24oYSl7dGhpcy50cmFja0lk
cyYmdGhpcy5wdXNoKCJ7fSIpLHRoaXMuc3RyaW5nUGFyYW1zJiYodGhpcy5wdXNoKCJ7fSIpLHRo
aXMucHVzaCgie30iKSksdGhpcy5wdXNoU3RhY2tMaXRlcmFsKGE/InVuZGVmaW5lZCI6Int9Iil9
LHB1c2hIYXNoOmZ1bmN0aW9uKCl7dGhpcy5oYXNoJiZ0aGlzLmhhc2hlcy5wdXNoKHRoaXMuaGFz
aCksdGhpcy5oYXNoPXt2YWx1ZXM6W10sdHlwZXM6W10sY29udGV4dHM6W10saWRzOltdfX0scG9w
SGFzaDpmdW5jdGlvbigpe3ZhciBhPXRoaXMuaGFzaDt0aGlzLmhhc2g9dGhpcy5oYXNoZXMucG9w
KCksdGhpcy50cmFja0lkcyYmdGhpcy5wdXNoKHRoaXMub2JqZWN0TGl0ZXJhbChhLmlkcykpLHRo
aXMuc3RyaW5nUGFyYW1zJiYodGhpcy5wdXNoKHRoaXMub2JqZWN0TGl0ZXJhbChhLmNvbnRleHRz
KSksdGhpcy5wdXNoKHRoaXMub2JqZWN0TGl0ZXJhbChhLnR5cGVzKSkpLHRoaXMucHVzaCh0aGlz
Lm9iamVjdExpdGVyYWwoYS52YWx1ZXMpKX0scHVzaFN0cmluZzpmdW5jdGlvbihhKXt0aGlzLnB1
c2hTdGFja0xpdGVyYWwodGhpcy5xdW90ZWRTdHJpbmcoYSkpfSxwdXNoTGl0ZXJhbDpmdW5jdGlv
bihhKXt0aGlzLnB1c2hTdGFja0xpdGVyYWwoYSl9LHB1c2hQcm9ncmFtOmZ1bmN0aW9uKGEpe251
bGwhPWE/dGhpcy5wdXNoU3RhY2tMaXRlcmFsKHRoaXMucHJvZ3JhbUV4cHJlc3Npb24oYSkpOnRo
aXMucHVzaFN0YWNrTGl0ZXJhbChudWxsKX0scmVnaXN0ZXJEZWNvcmF0b3I6ZnVuY3Rpb24oYSxi
KXt2YXIgYz10aGlzLm5hbWVMb29rdXAoImRlY29yYXRvcnMiLGIsImRlY29yYXRvciIpLGQ9dGhp
cy5zZXR1cEhlbHBlckFyZ3MoYixhKTt0aGlzLmRlY29yYXRvcnMucHVzaChbImZuID0gIix0aGlz
LmRlY29yYXRvcnMuZnVuY3Rpb25DYWxsKGMsIiIsWyJmbiIsInByb3BzIiwiY29udGFpbmVyIixk
XSksIiB8fCBmbjsiXSl9LGludm9rZUhlbHBlcjpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcy5w
b3BTdGFjaygpLGU9dGhpcy5zZXR1cEhlbHBlcihhLGIpLGY9Yz9bZS5uYW1lLCIgfHwgIl06IiIs
Zz1bIigiXS5jb25jYXQoZixkKTt0aGlzLm9wdGlvbnMuc3RyaWN0fHxnLnB1c2goIiB8fCAiLHRo
aXMuYWxpYXNhYmxlKCJoZWxwZXJzLmhlbHBlck1pc3NpbmciKSksZy5wdXNoKCIpIiksdGhpcy5w
dXNoKHRoaXMuc291cmNlLmZ1bmN0aW9uQ2FsbChnLCJjYWxsIixlLmNhbGxQYXJhbXMpKX0saW52
b2tlS25vd25IZWxwZXI6ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLnNldHVwSGVscGVyKGEsYik7
dGhpcy5wdXNoKHRoaXMuc291cmNlLmZ1bmN0aW9uQ2FsbChjLm5hbWUsImNhbGwiLGMuY2FsbFBh
cmFtcykpfSxpbnZva2VBbWJpZ3VvdXM6ZnVuY3Rpb24oYSxiKXt0aGlzLnVzZVJlZ2lzdGVyKCJo
ZWxwZXIiKTt2YXIgYz10aGlzLnBvcFN0YWNrKCk7dGhpcy5lbXB0eUhhc2goKTt2YXIgZD10aGlz
LnNldHVwSGVscGVyKDAsYSxiKSxlPXRoaXMubGFzdEhlbHBlcj10aGlzLm5hbWVMb29rdXAoImhl
bHBlcnMiLGEsImhlbHBlciIpLGY9WyIoIiwiKGhlbHBlciA9ICIsZSwiIHx8ICIsYywiKSJdO3Ro
aXMub3B0aW9ucy5zdHJpY3R8fChmWzBdPSIoaGVscGVyID0gIiwKK2YucHVzaCgiICE9IG51bGwg
PyBoZWxwZXIgOiAiLHRoaXMuYWxpYXNhYmxlKCJoZWxwZXJzLmhlbHBlck1pc3NpbmciKSkpLHRo
aXMucHVzaChbIigiLGYsZC5wYXJhbXNJbml0P1siKSwoIixkLnBhcmFtc0luaXRdOltdLCIpLCIs
Iih0eXBlb2YgaGVscGVyID09PSAiLHRoaXMuYWxpYXNhYmxlKCciZnVuY3Rpb24iJyksIiA/ICIs
dGhpcy5zb3VyY2UuZnVuY3Rpb25DYWxsKCJoZWxwZXIiLCJjYWxsIixkLmNhbGxQYXJhbXMpLCIg
OiBoZWxwZXIpKSJdKX0saW52b2tlUGFydGlhbDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9W10sZT10
aGlzLnNldHVwUGFyYW1zKGIsMSxkKTthJiYoYj10aGlzLnBvcFN0YWNrKCksZGVsZXRlIGUubmFt
ZSksYyYmKGUuaW5kZW50PUpTT04uc3RyaW5naWZ5KGMpKSxlLmhlbHBlcnM9ImhlbHBlcnMiLGUu
cGFydGlhbHM9InBhcnRpYWxzIixlLmRlY29yYXRvcnM9ImNvbnRhaW5lci5kZWNvcmF0b3JzIixh
P2QudW5zaGlmdChiKTpkLnVuc2hpZnQodGhpcy5uYW1lTG9va3VwKCJwYXJ0aWFscyIsYiwicGFy
dGlhbCIpKSx0aGlzLm9wdGlvbnMuY29tcGF0JiYoZS5kZXB0aHM9ImRlcHRocyIpLGU9dGhpcy5v
YmplY3RMaXRlcmFsKGUpLGQucHVzaChlKSx0aGlzLnB1c2godGhpcy5zb3VyY2UuZnVuY3Rpb25D
YWxsKCJjb250YWluZXIuaW52b2tlUGFydGlhbCIsIiIsZCkpfSxhc3NpZ25Ub0hhc2g6ZnVuY3Rp
b24oYSl7dmFyIGI9dGhpcy5wb3BTdGFjaygpLGM9dm9pZCAwLGQ9dm9pZCAwLGU9dm9pZCAwO3Ro
aXMudHJhY2tJZHMmJihlPXRoaXMucG9wU3RhY2soKSksdGhpcy5zdHJpbmdQYXJhbXMmJihkPXRo
aXMucG9wU3RhY2soKSxjPXRoaXMucG9wU3RhY2soKSk7dmFyIGY9dGhpcy5oYXNoO2MmJihmLmNv
bnRleHRzW2FdPWMpLGQmJihmLnR5cGVzW2FdPWQpLGUmJihmLmlkc1thXT1lKSxmLnZhbHVlc1th
XT1ifSxwdXNoSWQ6ZnVuY3Rpb24oYSxiLGMpeyJCbG9ja1BhcmFtIj09PWE/dGhpcy5wdXNoU3Rh
Y2tMaXRlcmFsKCJibG9ja1BhcmFtc1siK2JbMF0rIl0ucGF0aFsiK2JbMV0rIl0iKyhjPyIgKyAi
K0pTT04uc3RyaW5naWZ5KCIuIitjKToiIikpOiJQYXRoRXhwcmVzc2lvbiI9PT1hP3RoaXMucHVz
aFN0cmluZyhiKToiU3ViRXhwcmVzc2lvbiI9PT1hP3RoaXMucHVzaFN0YWNrTGl0ZXJhbCgidHJ1
ZSIpOnRoaXMucHVzaFN0YWNrTGl0ZXJhbCgibnVsbCIpfSxjb21waWxlcjplLGNvbXBpbGVDaGls
ZHJlbjpmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz1hLmNoaWxkcmVuLGQ9dm9pZCAwLGU9dm9pZCAw
LGY9MCxnPWMubGVuZ3RoO2Y8ZztmKyspe2Q9Y1tmXSxlPW5ldyB0aGlzLmNvbXBpbGVyO3ZhciBo
PXRoaXMubWF0Y2hFeGlzdGluZ1Byb2dyYW0oZCk7aWYobnVsbD09aCl7dGhpcy5jb250ZXh0LnBy
b2dyYW1zLnB1c2goIiIpO3ZhciBpPXRoaXMuY29udGV4dC5wcm9ncmFtcy5sZW5ndGg7ZC5pbmRl
eD1pLGQubmFtZT0icHJvZ3JhbSIraSx0aGlzLmNvbnRleHQucHJvZ3JhbXNbaV09ZS5jb21waWxl
KGQsYix0aGlzLmNvbnRleHQsIXRoaXMucHJlY29tcGlsZSksdGhpcy5jb250ZXh0LmRlY29yYXRv
cnNbaV09ZS5kZWNvcmF0b3JzLHRoaXMuY29udGV4dC5lbnZpcm9ubWVudHNbaV09ZCx0aGlzLnVz
ZURlcHRocz10aGlzLnVzZURlcHRoc3x8ZS51c2VEZXB0aHMsdGhpcy51c2VCbG9ja1BhcmFtcz10
aGlzLnVzZUJsb2NrUGFyYW1zfHxlLnVzZUJsb2NrUGFyYW1zLGQudXNlRGVwdGhzPXRoaXMudXNl
RGVwdGhzLGQudXNlQmxvY2tQYXJhbXM9dGhpcy51c2VCbG9ja1BhcmFtc31lbHNlIGQuaW5kZXg9
aC5pbmRleCxkLm5hbWU9InByb2dyYW0iK2guaW5kZXgsdGhpcy51c2VEZXB0aHM9dGhpcy51c2VE
ZXB0aHN8fGgudXNlRGVwdGhzLHRoaXMudXNlQmxvY2tQYXJhbXM9dGhpcy51c2VCbG9ja1BhcmFt
c3x8aC51c2VCbG9ja1BhcmFtc319LG1hdGNoRXhpc3RpbmdQcm9ncmFtOmZ1bmN0aW9uKGEpe2Zv
cih2YXIgYj0wLGM9dGhpcy5jb250ZXh0LmVudmlyb25tZW50cy5sZW5ndGg7YjxjO2IrKyl7dmFy
IGQ9dGhpcy5jb250ZXh0LmVudmlyb25tZW50c1tiXTtpZihkJiZkLmVxdWFscyhhKSlyZXR1cm4g
ZH19LHByb2dyYW1FeHByZXNzaW9uOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuZW52aXJvbm1lbnQu
Y2hpbGRyZW5bYV0sYz1bYi5pbmRleCwiZGF0YSIsYi5ibG9ja1BhcmFtc107cmV0dXJuKHRoaXMu
dXNlQmxvY2tQYXJhbXN8fHRoaXMudXNlRGVwdGhzKSYmYy5wdXNoKCJibG9ja1BhcmFtcyIpLHRo
aXMudXNlRGVwdGhzJiZjLnB1c2goImRlcHRocyIpLCJjb250YWluZXIucHJvZ3JhbSgiK2Muam9p
bigiLCAiKSsiKSJ9LHVzZVJlZ2lzdGVyOmZ1bmN0aW9uKGEpe3RoaXMucmVnaXN0ZXJzW2FdfHwo
dGhpcy5yZWdpc3RlcnNbYV09ITAsdGhpcy5yZWdpc3RlcnMubGlzdC5wdXNoKGEpKX0scHVzaDpm
dW5jdGlvbihhKXtyZXR1cm4gYSBpbnN0YW5jZW9mIGR8fChhPXRoaXMuc291cmNlLndyYXAoYSkp
LHRoaXMuaW5saW5lU3RhY2sucHVzaChhKSxhfSxwdXNoU3RhY2tMaXRlcmFsOmZ1bmN0aW9uKGEp
e3RoaXMucHVzaChuZXcgZChhKSl9LHB1c2hTb3VyY2U6ZnVuY3Rpb24oYSl7dGhpcy5wZW5kaW5n
Q29udGVudCYmKHRoaXMuc291cmNlLnB1c2godGhpcy5hcHBlbmRUb0J1ZmZlcih0aGlzLnNvdXJj
ZS5xdW90ZWRTdHJpbmcodGhpcy5wZW5kaW5nQ29udGVudCksdGhpcy5wZW5kaW5nTG9jYXRpb24p
KSx0aGlzLnBlbmRpbmdDb250ZW50PXZvaWQgMCksYSYmdGhpcy5zb3VyY2UucHVzaChhKX0scmVw
bGFjZVN0YWNrOmZ1bmN0aW9uKGEpe3ZhciBiPVsiKCJdLGM9dm9pZCAwLGU9dm9pZCAwLGY9dm9p
ZCAwO2lmKCF0aGlzLmlzSW5saW5lKCkpdGhyb3cgbmV3IGpbImRlZmF1bHQiXSgicmVwbGFjZVN0
YWNrIG9uIG5vbi1pbmxpbmUiKTt2YXIgZz10aGlzLnBvcFN0YWNrKCEwKTtpZihnIGluc3RhbmNl
b2YgZCljPVtnLnZhbHVlXSxiPVsiKCIsY10sZj0hMDtlbHNle2U9ITA7dmFyIGg9dGhpcy5pbmNy
U3RhY2soKTtiPVsiKCgiLHRoaXMucHVzaChoKSwiID0gIixnLCIpIl0sYz10aGlzLnRvcFN0YWNr
KCl9dmFyIGk9YS5jYWxsKHRoaXMsYyk7Znx8dGhpcy5wb3BTdGFjaygpLGUmJnRoaXMuc3RhY2tT
bG90LS0sdGhpcy5wdXNoKGIuY29uY2F0KGksIikiKSl9LGluY3JTdGFjazpmdW5jdGlvbigpe3Jl
dHVybiB0aGlzLnN0YWNrU2xvdCsrLHRoaXMuc3RhY2tTbG90PnRoaXMuc3RhY2tWYXJzLmxlbmd0
aCYmdGhpcy5zdGFja1ZhcnMucHVzaCgic3RhY2siK3RoaXMuc3RhY2tTbG90KSx0aGlzLnRvcFN0
YWNrTmFtZSgpfSx0b3BTdGFja05hbWU6ZnVuY3Rpb24oKXtyZXR1cm4ic3RhY2siK3RoaXMuc3Rh
Y2tTbG90fSxmbHVzaElubGluZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMuaW5saW5lU3RhY2s7dGhp
cy5pbmxpbmVTdGFjaz1bXTtmb3IodmFyIGI9MCxjPWEubGVuZ3RoO2I8YztiKyspe3ZhciBlPWFb
Yl07aWYoZSBpbnN0YW5jZW9mIGQpdGhpcy5jb21waWxlU3RhY2sucHVzaChlKTtlbHNle3ZhciBm
PXRoaXMuaW5jclN0YWNrKCk7dGhpcy5wdXNoU291cmNlKFtmLCIgPSAiLGUsIjsiXSksdGhpcy5j
b21waWxlU3RhY2sucHVzaChmKX19fSxpc0lubGluZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmlu
bGluZVN0YWNrLmxlbmd0aH0scG9wU3RhY2s6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5pc0lubGlu
ZSgpLGM9KGI/dGhpcy5pbmxpbmVTdGFjazp0aGlzLmNvbXBpbGVTdGFjaykucG9wKCk7aWYoIWEm
JmMgaW5zdGFuY2VvZiBkKXJldHVybiBjLnZhbHVlO2lmKCFiKXtpZighdGhpcy5zdGFja1Nsb3Qp
dGhyb3cgbmV3IGpbImRlZmF1bHQiXSgiSW52YWxpZCBzdGFjayBwb3AiKTt0aGlzLnN0YWNrU2xv
dC0tfXJldHVybiBjfSx0b3BTdGFjazpmdW5jdGlvbigpe3ZhciBhPXRoaXMuaXNJbmxpbmUoKT90
aGlzLmlubGluZVN0YWNrOnRoaXMuY29tcGlsZVN0YWNrLGI9YVthLmxlbmd0aC0xXTtyZXR1cm4g
YiBpbnN0YW5jZW9mIGQ/Yi52YWx1ZTpifSxjb250ZXh0TmFtZTpmdW5jdGlvbihhKXtyZXR1cm4g
dGhpcy51c2VEZXB0aHMmJmE/ImRlcHRoc1siK2ErIl0iOiJkZXB0aCIrYX0scXVvdGVkU3RyaW5n
OmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnNvdXJjZS5xdW90ZWRTdHJpbmcoYSl9LG9iamVjdExp
dGVyYWw6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuc291cmNlLm9iamVjdExpdGVyYWwoYSl9LGFs
aWFzYWJsZTpmdW5jdGlvbihhKXt2YXIgYj10aGlzLmFsaWFzZXNbYV07cmV0dXJuIGI/KGIucmVm
ZXJlbmNlQ291bnQrKyxiKTooYj10aGlzLmFsaWFzZXNbYV09dGhpcy5zb3VyY2Uud3JhcChhKSxi
LmFsaWFzYWJsZT0hMCxiLnJlZmVyZW5jZUNvdW50PTEsYil9LHNldHVwSGVscGVyOmZ1bmN0aW9u
KGEsYixjKXt2YXIgZD1bXSxlPXRoaXMuc2V0dXBIZWxwZXJBcmdzKGIsYSxkLGMpLGY9dGhpcy5u
YW1lTG9va3VwKCJoZWxwZXJzIixiLCJoZWxwZXIiKSxnPXRoaXMuYWxpYXNhYmxlKHRoaXMuY29u
dGV4dE5hbWUoMCkrIiAhPSBudWxsID8gIit0aGlzLmNvbnRleHROYW1lKDApKyIgOiB7fSIpO3Jl
dHVybntwYXJhbXM6ZCxwYXJhbXNJbml0OmUsbmFtZTpmLGNhbGxQYXJhbXM6W2ddLmNvbmNhdChk
KX19LHNldHVwUGFyYW1zOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD17fSxlPVtdLGY9W10sZz1bXSxo
PSFjLGk9dm9pZCAwO2gmJihjPVtdKSxkLm5hbWU9dGhpcy5xdW90ZWRTdHJpbmcoYSksZC5oYXNo
PXRoaXMucG9wU3RhY2soKSx0aGlzLnRyYWNrSWRzJiYoZC5oYXNoSWRzPXRoaXMucG9wU3RhY2so
KSksdGhpcy5zdHJpbmdQYXJhbXMmJihkLmhhc2hUeXBlcz10aGlzLnBvcFN0YWNrKCksZC5oYXNo
Q29udGV4dHM9dGhpcy5wb3BTdGFjaygpKTt2YXIgaj10aGlzLnBvcFN0YWNrKCksaz10aGlzLnBv
cFN0YWNrKCk7KGt8fGopJiYoZC5mbj1rfHwiY29udGFpbmVyLm5vb3AiLGQuaW52ZXJzZT1qfHwi
Y29udGFpbmVyLm5vb3AiKTtmb3IodmFyIGw9YjtsLS07KWk9dGhpcy5wb3BTdGFjaygpLGNbbF09
aSx0aGlzLnRyYWNrSWRzJiYoZ1tsXT10aGlzLnBvcFN0YWNrKCkpLHRoaXMuc3RyaW5nUGFyYW1z
JiYoZltsXT10aGlzLnBvcFN0YWNrKCksZVtsXT10aGlzLnBvcFN0YWNrKCkpO3JldHVybiBoJiYo
ZC5hcmdzPXRoaXMuc291cmNlLmdlbmVyYXRlQXJyYXkoYykpLHRoaXMudHJhY2tJZHMmJihkLmlk
cz10aGlzLnNvdXJjZS5nZW5lcmF0ZUFycmF5KGcpKSx0aGlzLnN0cmluZ1BhcmFtcyYmKGQudHlw
ZXM9dGhpcy5zb3VyY2UuZ2VuZXJhdGVBcnJheShmKSxkLmNvbnRleHRzPXRoaXMuc291cmNlLmdl
bmVyYXRlQXJyYXkoZSkpLHRoaXMub3B0aW9ucy5kYXRhJiYoZC5kYXRhPSJkYXRhIiksdGhpcy51
c2VCbG9ja1BhcmFtcyYmKGQuYmxvY2tQYXJhbXM9ImJsb2NrUGFyYW1zIiksZH0sc2V0dXBIZWxw
ZXJBcmdzOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPXRoaXMuc2V0dXBQYXJhbXMoYSxiLGMpO3Jl
dHVybiBlPXRoaXMub2JqZWN0TGl0ZXJhbChlKSxkPyh0aGlzLnVzZVJlZ2lzdGVyKCJvcHRpb25z
IiksYy5wdXNoKCJvcHRpb25zIiksWyJvcHRpb25zPSIsZV0pOmM/KGMucHVzaChlKSwiIik6ZX19
LGZ1bmN0aW9uKCl7Zm9yKHZhciBhPSJicmVhayBlbHNlIG5ldyB2YXIgY2FzZSBmaW5hbGx5IHJl
dHVybiB2b2lkIGNhdGNoIGZvciBzd2l0Y2ggd2hpbGUgY29udGludWUgZnVuY3Rpb24gdGhpcyB3
aXRoIGRlZmF1bHQgaWYgdGhyb3cgZGVsZXRlIGluIHRyeSBkbyBpbnN0YW5jZW9mIHR5cGVvZiBh
YnN0cmFjdCBlbnVtIGludCBzaG9ydCBib29sZWFuIGV4cG9ydCBpbnRlcmZhY2Ugc3RhdGljIGJ5
dGUgZXh0ZW5kcyBsb25nIHN1cGVyIGNoYXIgZmluYWwgbmF0aXZlIHN5bmNocm9uaXplZCBjbGFz
cyBmbG9hdCBwYWNrYWdlIHRocm93cyBjb25zdCBnb3RvIHByaXZhdGUgdHJhbnNpZW50IGRlYnVn
Z2VyIGltcGxlbWVudHMgcHJvdGVjdGVkIHZvbGF0aWxlIGRvdWJsZSBpbXBvcnQgcHVibGljIGxl
dCB5aWVsZCBhd2FpdCBudWxsIHRydWUgZmFsc2UiLnNwbGl0KCIgIiksYj1lLlJFU0VSVkVEX1dP
UkRTPXt9LGM9MCxkPWEubGVuZ3RoO2M8ZDtjKyspYlthW2NdXT0hMH0oKSxlLmlzVmFsaWRKYXZh
U2NyaXB0VmFyaWFibGVOYW1lPWZ1bmN0aW9uKGEpe3JldHVybiFlLlJFU0VSVkVEX1dPUkRTW2Fd
JiYvXlthLXpBLVpfJF1bMC05YS16QS1aXyRdKiQvLnRlc3QoYSl9LGJbImRlZmF1bHQiXT1lLGEu
ZXhwb3J0cz1iWyJkZWZhdWx0Il19LGZ1bmN0aW9uKGEsYixjKXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gZChhLGIsYyl7aWYoZi5pc0FycmF5KGEpKXtmb3IodmFyIGQ9W10sZT0wLGc9YS5sZW5ndGg7
ZTxnO2UrKylkLnB1c2goYi53cmFwKGFbZV0sYykpO3JldHVybiBkfXJldHVybiJib29sZWFuIj09
dHlwZW9mIGF8fCJudW1iZXIiPT10eXBlb2YgYT9hKyIiOmF9ZnVuY3Rpb24gZShhKXt0aGlzLnNy
Y0ZpbGU9YSx0aGlzLnNvdXJjZT1bXX1iLl9fZXNNb2R1bGU9ITA7dmFyIGY9Yyg1KSxnPXZvaWQg
MDt0cnl7fWNhdGNoKGgpe31nfHwoZz1mdW5jdGlvbihhLGIsYyxkKXt0aGlzLnNyYz0iIixkJiZ0
aGlzLmFkZChkKX0sZy5wcm90b3R5cGU9e2FkZDpmdW5jdGlvbihhKXtmLmlzQXJyYXkoYSkmJihh
PWEuam9pbigiIikpLHRoaXMuc3JjKz1hfSxwcmVwZW5kOmZ1bmN0aW9uKGEpe2YuaXNBcnJheShh
KSYmKGE9YS5qb2luKCIiKSksdGhpcy5zcmM9YSt0aGlzLnNyY30sdG9TdHJpbmdXaXRoU291cmNl
TWFwOmZ1bmN0aW9uKCl7cmV0dXJue2NvZGU6dGhpcy50b1N0cmluZygpfX0sdG9TdHJpbmc6ZnVu
Y3Rpb24oKXtyZXR1cm4gdGhpcy5zcmN9fSksZS5wcm90b3R5cGU9e2lzRW1wdHk6ZnVuY3Rpb24o
KXtyZXR1cm4hdGhpcy5zb3VyY2UubGVuZ3RofSxwcmVwZW5kOmZ1bmN0aW9uKGEsYil7dGhpcy5z
b3VyY2UudW5zaGlmdCh0aGlzLndyYXAoYSxiKSl9LHB1c2g6ZnVuY3Rpb24oYSxiKXt0aGlzLnNv
dXJjZS5wdXNoKHRoaXMud3JhcChhLGIpKX0sbWVyZ2U6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmVt
cHR5KCk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXthLmFkZChbIiAgIixiLCJcbiJdKX0p
LGF9LGVhY2g6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPTAsYz10aGlzLnNvdXJjZS5sZW5ndGg7Yjxj
O2IrKylhKHRoaXMuc291cmNlW2JdKX0sZW1wdHk6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmN1cnJl
bnRMb2NhdGlvbnx8e3N0YXJ0Ont9fTtyZXR1cm4gbmV3IGcoYS5zdGFydC5saW5lLGEuc3RhcnQu
Y29sdW1uLHRoaXMuc3JjRmlsZSl9LHdyYXA6ZnVuY3Rpb24oYSl7dmFyIGI9YXJndW1lbnRzLmxl
bmd0aDw9MXx8dm9pZCAwPT09YXJndW1lbnRzWzFdP3RoaXMuY3VycmVudExvY2F0aW9ufHx7c3Rh
cnQ6e319OmFyZ3VtZW50c1sxXTtyZXR1cm4gYSBpbnN0YW5jZW9mIGc/YTooYT1kKGEsdGhpcyxi
KSxuZXcgZyhiLnN0YXJ0LmxpbmUsYi5zdGFydC5jb2x1bW4sdGhpcy5zcmNGaWxlLGEpKX0sZnVu
Y3Rpb25DYWxsOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYz10aGlzLmdlbmVyYXRlTGlzdChjKSx0
aGlzLndyYXAoW2EsYj8iLiIrYisiKCI6IigiLGMsIikiXSl9LHF1b3RlZFN0cmluZzpmdW5jdGlv
bihhKXtyZXR1cm4nIicrKGErIiIpLnJlcGxhY2UoL1xcL2csIlxcXFwiKS5yZXBsYWNlKC8iL2cs
J1xcIicpLnJlcGxhY2UoL1xuL2csIlxcbiIpLnJlcGxhY2UoL1xyL2csIlxcciIpLnJlcGxhY2Uo
L1x1MjAyOC9nLCJcXHUyMDI4IikucmVwbGFjZSgvXHUyMDI5L2csIlxcdTIwMjkiKSsnIid9LG9i
amVjdExpdGVyYWw6ZnVuY3Rpb24oYSl7dmFyIGI9W107Zm9yKHZhciBjIGluIGEpaWYoYS5oYXNP
d25Qcm9wZXJ0eShjKSl7dmFyIGU9ZChhW2NdLHRoaXMpOyJ1bmRlZmluZWQiIT09ZSYmYi5wdXNo
KFt0aGlzLnF1b3RlZFN0cmluZyhjKSwiOiIsZV0pfXZhciBmPXRoaXMuZ2VuZXJhdGVMaXN0KGIp
O3JldHVybiBmLnByZXBlbmQoInsiKSxmLmFkZCgifSIpLGZ9LGdlbmVyYXRlTGlzdDpmdW5jdGlv
bihhKXtmb3IodmFyIGI9dGhpcy5lbXB0eSgpLGM9MCxlPWEubGVuZ3RoO2M8ZTtjKyspYyYmYi5h
ZGQoIiwiKSxiLmFkZChkKGFbY10sdGhpcykpO3JldHVybiBifSxnZW5lcmF0ZUFycmF5OmZ1bmN0
aW9uKGEpe3ZhciBiPXRoaXMuZ2VuZXJhdGVMaXN0KGEpO3JldHVybiBiLnByZXBlbmQoIlsiKSxi
LmFkZCgiXSIpLGJ9fSxiWyJkZWZhdWx0Il09ZSxhLmV4cG9ydHM9YlsiZGVmYXVsdCJdfV0pfSk7
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1
ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvaGFuZGxlYmFycy5ydW50aW1lLmFtZC5q
cyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2hhbmRs
ZWJhcnMucnVudGltZS5hbWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmNmNDEyMzUxMWVmOGYyOTNjOTdiNGY3
ODcyNzc5ZGE3ODdkMDg0YwotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9u
b2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2hhbmRsZWJhcnMucnVudGltZS5hbWQuanMKQEAg
LTAsMCArMSwxMDMzIEBACisvKiohCisKKyBAbGljZW5zZQorIGhhbmRsZWJhcnMgdjQuMC42CisK
K0NvcHlyaWdodCAoQykgMjAxMS0yMDE2IGJ5IFllaHVkYSBLYXR6CisKK1Blcm1pc3Npb24gaXMg
aGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBh
IGNvcHkKK29mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxl
cyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCitpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0
cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCit0byB1c2Us
IGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFu
ZC9vciBzZWxsCitjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMg
dG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKK2Z1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisKK1RoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFu
ZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCithbGwgY29waWVz
IG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKworVEhFIFNPRlRXQVJF
IElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJF
U1MgT1IKK0lNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCitBVVRIT1JTIE9SIENP
UFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVS
CitMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9U
SEVSV0lTRSwgQVJJU0lORyBGUk9NLAorT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUg
U09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgorVEhFIFNPRlRXQVJFLgor
CisqLworZGVmaW5lKCdoYW5kbGViYXJzL3V0aWxzJyxbJ2V4cG9ydHMnXSwgZnVuY3Rpb24gKGV4
cG9ydHMpIHsKKyAgJ3VzZSBzdHJpY3QnOworCisgIGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7
CisgIGV4cG9ydHMuZXh0ZW5kID0gZXh0ZW5kOworICBleHBvcnRzLmluZGV4T2YgPSBpbmRleE9m
OworICBleHBvcnRzLmVzY2FwZUV4cHJlc3Npb24gPSBlc2NhcGVFeHByZXNzaW9uOworICBleHBv
cnRzLmlzRW1wdHkgPSBpc0VtcHR5OworICBleHBvcnRzLmNyZWF0ZUZyYW1lID0gY3JlYXRlRnJh
bWU7CisgIGV4cG9ydHMuYmxvY2tQYXJhbXMgPSBibG9ja1BhcmFtczsKKyAgZXhwb3J0cy5hcHBl
bmRDb250ZXh0UGF0aCA9IGFwcGVuZENvbnRleHRQYXRoOworICB2YXIgZXNjYXBlID0geworICAg
ICcmJzogJyZhbXA7JywKKyAgICAnPCc6ICcmbHQ7JywKKyAgICAnPic6ICcmZ3Q7JywKKyAgICAn
Iic6ICcmcXVvdDsnLAorICAgICInIjogJyYjeDI3OycsCisgICAgJ2AnOiAnJiN4NjA7JywKKyAg
ICAnPSc6ICcmI3gzRDsnCisgIH07CisKKyAgdmFyIGJhZENoYXJzID0gL1smPD4iJ2A9XS9nLAor
ICAgICAgcG9zc2libGUgPSAvWyY8PiInYD1dLzsKKworICBmdW5jdGlvbiBlc2NhcGVDaGFyKGNo
cikgeworICAgIHJldHVybiBlc2NhcGVbY2hyXTsKKyAgfQorCisgIGZ1bmN0aW9uIGV4dGVuZChv
YmogLyogLCAuLi5zb3VyY2UgKi8pIHsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50
cy5sZW5ndGg7IGkrKykgeworICAgICAgZm9yICh2YXIga2V5IGluIGFyZ3VtZW50c1tpXSkgewor
ICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGFyZ3VtZW50
c1tpXSwga2V5KSkgeworICAgICAgICAgIG9ialtrZXldID0gYXJndW1lbnRzW2ldW2tleV07Cisg
ICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gb2JqOworICB9CisKKyAgdmFy
IHRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZzsKKworICBleHBvcnRzLnRvU3Ry
aW5nID0gdG9TdHJpbmc7CisgIC8vIFNvdXJjZWQgZnJvbSBsb2Rhc2gKKyAgLy8gaHR0cHM6Ly9n
aXRodWIuY29tL2Jlc3RpZWpzL2xvZGFzaC9ibG9iL21hc3Rlci9MSUNFTlNFLnR4dAorICAvKiBl
c2xpbnQtZGlzYWJsZSBmdW5jLXN0eWxlICovCisgIHZhciBpc0Z1bmN0aW9uID0gZnVuY3Rpb24g
aXNGdW5jdGlvbih2YWx1ZSkgeworICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlv
bic7CisgIH07CisgIC8vIGZhbGxiYWNrIGZvciBvbGRlciB2ZXJzaW9ucyBvZiBDaHJvbWUgYW5k
IFNhZmFyaQorICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLworICBpZiAoaXNGdW5jdGlvbigv
eC8pKSB7CisgICAgZXhwb3J0cy5pc0Z1bmN0aW9uID0gaXNGdW5jdGlvbiA9IGZ1bmN0aW9uICh2
YWx1ZSkgeworICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0b1N0
cmluZy5jYWxsKHZhbHVlKSA9PT0gJ1tvYmplY3QgRnVuY3Rpb25dJzsKKyAgICB9OworICB9Cisg
IGV4cG9ydHMuaXNGdW5jdGlvbiA9IGlzRnVuY3Rpb247CisKKyAgLyogZXNsaW50LWVuYWJsZSBm
dW5jLXN0eWxlICovCisKKyAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8KKyAgdmFyIGlzQXJy
YXkgPSBBcnJheS5pc0FycmF5IHx8IGZ1bmN0aW9uICh2YWx1ZSkgeworICAgIHJldHVybiB2YWx1
ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnID8gdG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT09
ICdbb2JqZWN0IEFycmF5XScgOiBmYWxzZTsKKyAgfTsKKworICBleHBvcnRzLmlzQXJyYXkgPSBp
c0FycmF5OworICAvLyBPbGRlciBJRSB2ZXJzaW9ucyBkbyBub3QgZGlyZWN0bHkgc3VwcG9ydCBp
bmRleE9mIHNvIHdlIG11c3QgaW1wbGVtZW50IG91ciBvd24sIHNhZGx5LgorCisgIGZ1bmN0aW9u
IGluZGV4T2YoYXJyYXksIHZhbHVlKSB7CisgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGFycmF5
Lmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICBpZiAoYXJyYXlbaV0gPT09IHZhbHVlKSB7
CisgICAgICAgIHJldHVybiBpOworICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gLTE7CisgIH0K
KworICBmdW5jdGlvbiBlc2NhcGVFeHByZXNzaW9uKHN0cmluZykgeworICAgIGlmICh0eXBlb2Yg
c3RyaW5nICE9PSAnc3RyaW5nJykgeworICAgICAgLy8gZG9uJ3QgZXNjYXBlIFNhZmVTdHJpbmdz
LCBzaW5jZSB0aGV5J3JlIGFscmVhZHkgc2FmZQorICAgICAgaWYgKHN0cmluZyAmJiBzdHJpbmcu
dG9IVE1MKSB7CisgICAgICAgIHJldHVybiBzdHJpbmcudG9IVE1MKCk7CisgICAgICB9IGVsc2Ug
aWYgKHN0cmluZyA9PSBudWxsKSB7CisgICAgICAgIHJldHVybiAnJzsKKyAgICAgIH0gZWxzZSBp
ZiAoIXN0cmluZykgeworICAgICAgICByZXR1cm4gc3RyaW5nICsgJyc7CisgICAgICB9CisKKyAg
ICAgIC8vIEZvcmNlIGEgc3RyaW5nIGNvbnZlcnNpb24gYXMgdGhpcyB3aWxsIGJlIGRvbmUgYnkg
dGhlIGFwcGVuZCByZWdhcmRsZXNzIGFuZAorICAgICAgLy8gdGhlIHJlZ2V4IHRlc3Qgd2lsbCBk
byB0aGlzIHRyYW5zcGFyZW50bHkgYmVoaW5kIHRoZSBzY2VuZXMsIGNhdXNpbmcgaXNzdWVzIGlm
CisgICAgICAvLyBhbiBvYmplY3QncyB0byBzdHJpbmcgaGFzIGVzY2FwZWQgY2hhcmFjdGVycyBp
biBpdC4KKyAgICAgIHN0cmluZyA9ICcnICsgc3RyaW5nOworICAgIH0KKworICAgIGlmICghcG9z
c2libGUudGVzdChzdHJpbmcpKSB7CisgICAgICByZXR1cm4gc3RyaW5nOworICAgIH0KKyAgICBy
ZXR1cm4gc3RyaW5nLnJlcGxhY2UoYmFkQ2hhcnMsIGVzY2FwZUNoYXIpOworICB9CisKKyAgZnVu
Y3Rpb24gaXNFbXB0eSh2YWx1ZSkgeworICAgIGlmICghdmFsdWUgJiYgdmFsdWUgIT09IDApIHsK
KyAgICAgIHJldHVybiB0cnVlOworICAgIH0gZWxzZSBpZiAoaXNBcnJheSh2YWx1ZSkgJiYgdmFs
dWUubGVuZ3RoID09PSAwKSB7CisgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9IGVsc2UgeworICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgfQorCisgIGZ1bmN0aW9uIGNyZWF0ZUZyYW1lKG9i
amVjdCkgeworICAgIHZhciBmcmFtZSA9IGV4dGVuZCh7fSwgb2JqZWN0KTsKKyAgICBmcmFtZS5f
cGFyZW50ID0gb2JqZWN0OworICAgIHJldHVybiBmcmFtZTsKKyAgfQorCisgIGZ1bmN0aW9uIGJs
b2NrUGFyYW1zKHBhcmFtcywgaWRzKSB7CisgICAgcGFyYW1zLnBhdGggPSBpZHM7CisgICAgcmV0
dXJuIHBhcmFtczsKKyAgfQorCisgIGZ1bmN0aW9uIGFwcGVuZENvbnRleHRQYXRoKGNvbnRleHRQ
YXRoLCBpZCkgeworICAgIHJldHVybiAoY29udGV4dFBhdGggPyBjb250ZXh0UGF0aCArICcuJyA6
ICcnKSArIGlkOworICB9Cit9KTsKKy8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRp
b24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUx5
NHVMMnhwWWk5b1lXNWtiR1ZpWVhKekwzVjBhV3h6TG1weklsMHNJbTVoYldWeklqcGJYU3dpYldG
d2NHbHVaM01pT2lJN096czdPenM3T3pzN08wRkJRVUVzVFVGQlRTeE5RVUZOTEVkQlFVYzdRVUZE
WWl4UFFVRkhMRVZCUVVVc1QwRkJUenRCUVVOYUxFOUJRVWNzUlVGQlJTeE5RVUZOTzBGQlExZ3NU
MEZCUnl4RlFVRkZMRTFCUVUwN1FVRkRXQ3hQUVVGSExFVkJRVVVzVVVGQlVUdEJRVU5pTEU5QlFV
Y3NSVUZCUlN4UlFVRlJPMEZCUTJJc1QwRkJSeXhGUVVGRkxGRkJRVkU3UVVGRFlpeFBRVUZITEVW
QlFVVXNVVUZCVVR0SFFVTmtMRU5CUVVNN08wRkJSVVlzVFVGQlRTeFJRVUZSTEVkQlFVY3NXVUZC
V1R0TlFVTjJRaXhSUVVGUkxFZEJRVWNzVjBGQlZ5eERRVUZET3p0QlFVVTNRaXhYUVVGVExGVkJR
VlVzUTBGQlF5eEhRVUZITEVWQlFVVTdRVUZEZGtJc1YwRkJUeXhOUVVGTkxFTkJRVU1zUjBGQlJ5
eERRVUZETEVOQlFVTTdSMEZEY0VJN08wRkJSVTBzVjBGQlV5eE5RVUZOTEVOQlFVTXNSMEZCUnl4
dlFrRkJiVUk3UVVGRE0wTXNVMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVz
UTBGQlF5eEhRVUZITEZOQlFWTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJR
VVU3UVVGRGVrTXNWMEZCU3l4SlFVRkpMRWRCUVVjc1NVRkJTU3hUUVVGVExFTkJRVU1zUTBGQlF5
eERRVUZETEVWQlFVVTdRVUZETlVJc1dVRkJTU3hOUVVGTkxFTkJRVU1zVTBGQlV5eERRVUZETEdO
QlFXTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZG
TEVkQlFVY3NRMEZCUXl4RlFVRkZPMEZCUXpORUxHRkJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNS
MEZCUnl4VFFVRlRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFV
TTdVMEZET1VJN1QwRkRSanRMUVVOR096dEJRVVZFTEZkQlFVOHNSMEZCUnl4RFFVRkRPMGRCUTFv
N08wRkJSVTBzVFVGQlNTeFJRVUZSTEVkQlFVY3NUVUZCVFN4RFFVRkRMRk5CUVZNc1EwRkJReXhS
UVVGUkxFTkJRVU03T3pzN096dEJRVXRvUkN4TlFVRkpMRlZCUVZVc1IwRkJSeXh2UWtGQlV5eExR
VUZMTEVWQlFVVTdRVUZETDBJc1YwRkJUeXhQUVVGUExFdEJRVXNzUzBGQlN5eFZRVUZWTEVOQlFV
TTdSMEZEY0VNc1EwRkJRenM3TzBGQlIwWXNUVUZCU1N4VlFVRlZMRU5CUVVNc1IwRkJSeXhEUVVG
RExFVkJRVVU3UVVGRGJrSXNXVUZKVFN4VlFVRlZMRWRCU21oQ0xGVkJRVlVzUjBGQlJ5eFZRVUZU
TEV0QlFVc3NSVUZCUlR0QlFVTXpRaXhoUVVGUExFOUJRVThzUzBGQlN5eExRVUZMTEZWQlFWVXNT
VUZCU1N4UlFVRlJMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eExRVUZMTEcxQ1FV
RnRRaXhEUVVGRE8wdEJRM0JHTEVOQlFVTTdSMEZEU0R0VlFVTlBMRlZCUVZVc1IwRkJWaXhWUVVG
Vk96czdPenRCUVVsWUxFMUJRVTBzVDBGQlR5eEhRVUZITEV0QlFVc3NRMEZCUXl4UFFVRlBMRWxC
UVVrc1ZVRkJVeXhMUVVGTExFVkJRVVU3UVVGRGRFUXNWMEZCVHl4QlFVRkRMRXRCUVVzc1NVRkJT
U3hQUVVGUExFdEJRVXNzUzBGQlN5eFJRVUZSTEVkQlFVa3NVVUZCVVN4RFFVRkRMRWxCUVVrc1Ew
RkJReXhMUVVGTExFTkJRVU1zUzBGQlN5eG5Ra0ZCWjBJc1IwRkJSeXhMUVVGTExFTkJRVU03UjBG
RGFrY3NRMEZCUXpzN096czdRVUZIU3l4WFFVRlRMRTlCUVU4c1EwRkJReXhMUVVGTExFVkJRVVVz
UzBGQlN5eEZRVUZGTzBGQlEzQkRMRk5CUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZR
VUZGTEVkQlFVY3NSMEZCUnl4TFFVRkxMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU1zUjBGQlJ5
eEhRVUZITEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVN1FVRkRhRVFzVlVGQlNTeExRVUZMTEVO
QlFVTXNRMEZCUXl4RFFVRkRMRXRCUVVzc1MwRkJTeXhGUVVGRk8wRkJRM1JDTEdWQlFVOHNRMEZC
UXl4RFFVRkRPMDlCUTFZN1MwRkRSanRCUVVORUxGZEJRVThzUTBGQlF5eERRVUZETEVOQlFVTTdS
MEZEV0RzN1FVRkhUU3hYUVVGVExHZENRVUZuUWl4RFFVRkRMRTFCUVUwc1JVRkJSVHRCUVVOMlF5
eFJRVUZKTEU5QlFVOHNUVUZCVFN4TFFVRkxMRkZCUVZFc1JVRkJSVHM3UVVGRk9VSXNWVUZCU1N4
TlFVRk5MRWxCUVVrc1RVRkJUU3hEUVVGRExFMUJRVTBzUlVGQlJUdEJRVU16UWl4bFFVRlBMRTFC
UVUwc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF6dFBRVU40UWl4TlFVRk5MRWxCUVVrc1RVRkJU
U3hKUVVGSkxFbEJRVWtzUlVGQlJUdEJRVU42UWl4bFFVRlBMRVZCUVVVc1EwRkJRenRQUVVOWUxF
MUJRVTBzU1VGQlNTeERRVUZETEUxQlFVMHNSVUZCUlR0QlFVTnNRaXhsUVVGUExFMUJRVTBzUjBG
QlJ5eEZRVUZGTEVOQlFVTTdUMEZEY0VJN096czdPMEZCUzBRc1dVRkJUU3hIUVVGSExFVkJRVVVz
UjBGQlJ5eE5RVUZOTEVOQlFVTTdTMEZEZEVJN08wRkJSVVFzVVVGQlNTeERRVUZETEZGQlFWRXNR
MEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFVkJRVVU3UVVGQlJTeGhRVUZQTEUxQlFV
MHNRMEZCUXp0TFFVRkZPMEZCUXpsRExGZEJRVThzVFVGQlRTeERRVUZETEU5QlFVOHNRMEZCUXl4
UlFVRlJMRVZCUVVVc1ZVRkJWU3hEUVVGRExFTkJRVU03UjBGRE4wTTdPMEZCUlUwc1YwRkJVeXhQ
UVVGUExFTkJRVU1zUzBGQlN5eEZRVUZGTzBGQlF6ZENMRkZCUVVrc1EwRkJReXhMUVVGTExFbEJR
VWtzUzBGQlN5eExRVUZMTEVOQlFVTXNSVUZCUlR0QlFVTjZRaXhoUVVGUExFbEJRVWtzUTBGQlF6
dExRVU5pTEUxQlFVMHNTVUZCU1N4UFFVRlBMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUzBG
QlN5eERRVUZETEUxQlFVMHNTMEZCU3l4RFFVRkRMRVZCUVVVN1FVRkRMME1zWVVGQlR5eEpRVUZK
TEVOQlFVTTdTMEZEWWl4TlFVRk5PMEZCUTB3c1lVRkJUeXhMUVVGTExFTkJRVU03UzBGRFpEdEhR
VU5HT3p0QlFVVk5MRmRCUVZNc1YwRkJWeXhEUVVGRExFMUJRVTBzUlVGQlJUdEJRVU5zUXl4UlFV
RkpMRXRCUVVzc1IwRkJSeXhOUVVGTkxFTkJRVU1zUlVGQlJTeEZRVUZGTEUxQlFVMHNRMEZCUXl4
RFFVRkRPMEZCUXk5Q0xGTkJRVXNzUTBGQlF5eFBRVUZQTEVkQlFVY3NUVUZCVFN4RFFVRkRPMEZC
UTNaQ0xGZEJRVThzUzBGQlN5eERRVUZETzBkQlEyUTdPMEZCUlUwc1YwRkJVeXhYUVVGWExFTkJR
VU1zVFVGQlRTeEZRVUZGTEVkQlFVY3NSVUZCUlR0QlFVTjJReXhWUVVGTkxFTkJRVU1zU1VGQlNT
eEhRVUZITEVkQlFVY3NRMEZCUXp0QlFVTnNRaXhYUVVGUExFMUJRVTBzUTBGQlF6dEhRVU5tT3p0
QlFVVk5MRmRCUVZNc2FVSkJRV2xDTEVOQlFVTXNWMEZCVnl4RlFVRkZMRVZCUVVVc1JVRkJSVHRC
UVVOcVJDeFhRVUZQTEVOQlFVTXNWMEZCVnl4SFFVRkhMRmRCUVZjc1IwRkJSeXhIUVVGSExFZEJR
VWNzUlVGQlJTeERRVUZCTEVkQlFVa3NSVUZCUlN4RFFVRkRPMGRCUTNCRUlpd2labWxzWlNJNklu
VjBhV3h6TG1weklpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lZMjl1YzNRZ1pYTmpZWEJsSUQw
Z2UxeHVJQ0FuSmljNklDY21ZVzF3T3ljc1hHNGdJQ2M4SnpvZ0p5WnNkRHNuTEZ4dUlDQW5QaWM2
SUNjbVozUTdKeXhjYmlBZ0oxd2lKem9nSnlaeGRXOTBPeWNzWEc0Z0lGd2lKMXdpT2lBbkppTjRN
amM3Snl4Y2JpQWdKMkFuT2lBbkppTjROakE3Snl4Y2JpQWdKejBuT2lBbkppTjRNMFE3SjF4dWZU
dGNibHh1WTI5dWMzUWdZbUZrUTJoaGNuTWdQU0F2V3lZOFBsd2lKMkE5WFM5bkxGeHVJQ0FnSUNB
Z2NHOXpjMmxpYkdVZ1BTQXZXeVk4UGx3aUoyQTlYUzg3WEc1Y2JtWjFibU4wYVc5dUlHVnpZMkZ3
WlVOb1lYSW9ZMmh5S1NCN1hHNGdJSEpsZEhWeWJpQmxjMk5oY0dWYlkyaHlYVHRjYm4xY2JseHVa
WGh3YjNKMElHWjFibU4wYVc5dUlHVjRkR1Z1WkNodlltb3ZLaUFzSUM0dUxuTnZkWEpqWlNBcUx5
a2dlMXh1SUNCbWIzSWdLR3hsZENCcElEMGdNVHNnYVNBOElHRnlaM1Z0Wlc1MGN5NXNaVzVuZEdn
N0lHa3JLeWtnZTF4dUlDQWdJR1p2Y2lBb2JHVjBJR3RsZVNCcGJpQmhjbWQxYldWdWRITmJhVjBw
SUh0Y2JpQWdJQ0FnSUdsbUlDaFBZbXBsWTNRdWNISnZkRzkwZVhCbExtaGhjMDkzYmxCeWIzQmxj
blI1TG1OaGJHd29ZWEpuZFcxbGJuUnpXMmxkTENCclpYa3BLU0I3WEc0Z0lDQWdJQ0FnSUc5aWFs
dHJaWGxkSUQwZ1lYSm5kVzFsYm5SelcybGRXMnRsZVYwN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4
dUlDQjlYRzVjYmlBZ2NtVjBkWEp1SUc5aWFqdGNibjFjYmx4dVpYaHdiM0owSUd4bGRDQjBiMU4w
Y21sdVp5QTlJRTlpYW1WamRDNXdjbTkwYjNSNWNHVXVkRzlUZEhKcGJtYzdYRzVjYmk4dklGTnZk
WEpqWldRZ1puSnZiU0JzYjJSaGMyaGNiaTh2SUdoMGRIQnpPaTh2WjJsMGFIVmlMbU52YlM5aVpY
TjBhV1ZxY3k5c2IyUmhjMmd2WW14dllpOXRZWE4wWlhJdlRFbERSVTVUUlM1MGVIUmNiaThxSUdW
emJHbHVkQzFrYVhOaFlteGxJR1oxYm1NdGMzUjViR1VnS2k5Y2JteGxkQ0JwYzBaMWJtTjBhVzl1
SUQwZ1puVnVZM1JwYjI0b2RtRnNkV1VwSUh0Y2JpQWdjbVYwZFhKdUlIUjVjR1Z2WmlCMllXeDFa
U0E5UFQwZ0oyWjFibU4wYVc5dUp6dGNibjA3WEc0dkx5Qm1ZV3hzWW1GamF5Qm1iM0lnYjJ4a1pY
SWdkbVZ5YzJsdmJuTWdiMllnUTJoeWIyMWxJR0Z1WkNCVFlXWmhjbWxjYmk4cUlHbHpkR0Z1WW5W
c0lHbG5ibTl5WlNCdVpYaDBJQ292WEc1cFppQW9hWE5HZFc1amRHbHZiaWd2ZUM4cEtTQjdYRzRn
SUdselJuVnVZM1JwYjI0Z1BTQm1kVzVqZEdsdmJpaDJZV3gxWlNrZ2UxeHVJQ0FnSUhKbGRIVnli
aUIwZVhCbGIyWWdkbUZzZFdVZ1BUMDlJQ2RtZFc1amRHbHZiaWNnSmlZZ2RHOVRkSEpwYm1jdVky
RnNiQ2gyWVd4MVpTa2dQVDA5SUNkYmIySnFaV04wSUVaMWJtTjBhVzl1WFNjN1hHNGdJSDA3WEc1
OVhHNWxlSEJ2Y25RZ2UybHpSblZ1WTNScGIyNTlPMXh1THlvZ1pYTnNhVzUwTFdWdVlXSnNaU0Jt
ZFc1akxYTjBlV3hsSUNvdlhHNWNiaThxSUdsemRHRnVZblZzSUdsbmJtOXlaU0J1WlhoMElDb3ZY
RzVsZUhCdmNuUWdZMjl1YzNRZ2FYTkJjbkpoZVNBOUlFRnljbUY1TG1selFYSnlZWGtnZkh3Z1pu
VnVZM1JwYjI0b2RtRnNkV1VwSUh0Y2JpQWdjbVYwZFhKdUlDaDJZV3gxWlNBbUppQjBlWEJsYjJZ
Z2RtRnNkV1VnUFQwOUlDZHZZbXBsWTNRbktTQS9JSFJ2VTNSeWFXNW5MbU5oYkd3b2RtRnNkV1Vw
SUQwOVBTQW5XMjlpYW1WamRDQkJjbkpoZVYwbklEb2dabUZzYzJVN1hHNTlPMXh1WEc0dkx5QlBi
R1JsY2lCSlJTQjJaWEp6YVc5dWN5QmtieUJ1YjNRZ1pHbHlaV04wYkhrZ2MzVndjRzl5ZENCcGJt
UmxlRTltSUhOdklIZGxJRzExYzNRZ2FXMXdiR1Z0Wlc1MElHOTFjaUJ2ZDI0c0lITmhaR3g1TGx4
dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdsdVpHVjRUMllvWVhKeVlYa3NJSFpoYkhWbEtTQjdYRzRn
SUdadmNpQW9iR1YwSUdrZ1BTQXdMQ0JzWlc0Z1BTQmhjbkpoZVM1c1pXNW5kR2c3SUdrZ1BDQnNa
VzQ3SUdrckt5a2dlMXh1SUNBZ0lHbG1JQ2hoY25KaGVWdHBYU0E5UFQwZ2RtRnNkV1VwSUh0Y2Jp
QWdJQ0FnSUhKbGRIVnliaUJwTzF4dUlDQWdJSDFjYmlBZ2ZWeHVJQ0J5WlhSMWNtNGdMVEU3WEc1
OVhHNWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR1Z6WTJGd1pVVjRjSEpsYzNOcGIyNG9jM1J5
YVc1bktTQjdYRzRnSUdsbUlDaDBlWEJsYjJZZ2MzUnlhVzVuSUNFOVBTQW5jM1J5YVc1bkp5a2dl
MXh1SUNBZ0lDOHZJR1J2YmlkMElHVnpZMkZ3WlNCVFlXWmxVM1J5YVc1bmN5d2djMmx1WTJVZ2RH
aGxlU2R5WlNCaGJISmxZV1I1SUhOaFptVmNiaUFnSUNCcFppQW9jM1J5YVc1bklDWW1JSE4wY21s
dVp5NTBiMGhVVFV3cElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlCemRISnBibWN1ZEc5SVZFMU1LQ2s3
WEc0Z0lDQWdmU0JsYkhObElHbG1JQ2h6ZEhKcGJtY2dQVDBnYm5Wc2JDa2dlMXh1SUNBZ0lDQWdj
bVYwZFhKdUlDY25PMXh1SUNBZ0lIMGdaV3h6WlNCcFppQW9JWE4wY21sdVp5a2dlMXh1SUNBZ0lD
QWdjbVYwZFhKdUlITjBjbWx1WnlBcklDY25PMXh1SUNBZ0lIMWNibHh1SUNBZ0lDOHZJRVp2Y21O
bElHRWdjM1J5YVc1bklHTnZiblpsY25OcGIyNGdZWE1nZEdocGN5QjNhV3hzSUdKbElHUnZibVVn
WW5rZ2RHaGxJR0Z3Y0dWdVpDQnlaV2RoY21Sc1pYTnpJR0Z1WkZ4dUlDQWdJQzh2SUhSb1pTQnla
V2RsZUNCMFpYTjBJSGRwYkd3Z1pHOGdkR2hwY3lCMGNtRnVjM0JoY21WdWRHeDVJR0psYUdsdVpD
QjBhR1VnYzJObGJtVnpMQ0JqWVhWemFXNW5JR2x6YzNWbGN5QnBabHh1SUNBZ0lDOHZJR0Z1SUc5
aWFtVmpkQ2R6SUhSdklITjBjbWx1WnlCb1lYTWdaWE5qWVhCbFpDQmphR0Z5WVdOMFpYSnpJR2x1
SUdsMExseHVJQ0FnSUhOMGNtbHVaeUE5SUNjbklDc2djM1J5YVc1bk8xeHVJQ0I5WEc1Y2JpQWdh
V1lnS0NGd2IzTnphV0pzWlM1MFpYTjBLSE4wY21sdVp5a3BJSHNnY21WMGRYSnVJSE4wY21sdVp6
c2dmVnh1SUNCeVpYUjFjbTRnYzNSeWFXNW5MbkpsY0d4aFkyVW9ZbUZrUTJoaGNuTXNJR1Z6WTJG
d1pVTm9ZWElwTzF4dWZWeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdhWE5GYlhCMGVTaDJZV3gx
WlNrZ2UxeHVJQ0JwWmlBb0lYWmhiSFZsSUNZbUlIWmhiSFZsSUNFOVBTQXdLU0I3WEc0Z0lDQWdj
bVYwZFhKdUlIUnlkV1U3WEc0Z0lIMGdaV3h6WlNCcFppQW9hWE5CY25KaGVTaDJZV3gxWlNrZ0pp
WWdkbUZzZFdVdWJHVnVaM1JvSUQwOVBTQXdLU0I3WEc0Z0lDQWdjbVYwZFhKdUlIUnlkV1U3WEc0
Z0lIMGdaV3h6WlNCN1hHNGdJQ0FnY21WMGRYSnVJR1poYkhObE8xeHVJQ0I5WEc1OVhHNWNibVY0
Y0c5eWRDQm1kVzVqZEdsdmJpQmpjbVZoZEdWR2NtRnRaU2h2WW1wbFkzUXBJSHRjYmlBZ2JHVjBJ
R1p5WVcxbElEMGdaWGgwWlc1a0tIdDlMQ0J2WW1wbFkzUXBPMXh1SUNCbWNtRnRaUzVmY0dGeVpX
NTBJRDBnYjJKcVpXTjBPMXh1SUNCeVpYUjFjbTRnWm5KaGJXVTdYRzU5WEc1Y2JtVjRjRzl5ZENC
bWRXNWpkR2x2YmlCaWJHOWphMUJoY21GdGN5aHdZWEpoYlhNc0lHbGtjeWtnZTF4dUlDQndZWEpo
YlhNdWNHRjBhQ0E5SUdsa2N6dGNiaUFnY21WMGRYSnVJSEJoY21GdGN6dGNibjFjYmx4dVpYaHdi
M0owSUdaMWJtTjBhVzl1SUdGd2NHVnVaRU52Ym5SbGVIUlFZWFJvS0dOdmJuUmxlSFJRWVhSb0xD
QnBaQ2tnZTF4dUlDQnlaWFIxY200Z0tHTnZiblJsZUhSUVlYUm9JRDhnWTI5dWRHVjRkRkJoZEdn
Z0t5QW5MaWNnT2lBbkp5a2dLeUJwWkR0Y2JuMWNiaUpkZlE9PQorOworZGVmaW5lKCdoYW5kbGVi
YXJzL2V4Y2VwdGlvbicsWydleHBvcnRzJywgJ21vZHVsZSddLCBmdW5jdGlvbiAoZXhwb3J0cywg
bW9kdWxlKSB7CisgICd1c2Ugc3RyaWN0JzsKKworICB2YXIgZXJyb3JQcm9wcyA9IFsnZGVzY3Jp
cHRpb24nLCAnZmlsZU5hbWUnLCAnbGluZU51bWJlcicsICdtZXNzYWdlJywgJ25hbWUnLCAnbnVt
YmVyJywgJ3N0YWNrJ107CisKKyAgZnVuY3Rpb24gRXhjZXB0aW9uKG1lc3NhZ2UsIG5vZGUpIHsK
KyAgICB2YXIgbG9jID0gbm9kZSAmJiBub2RlLmxvYywKKyAgICAgICAgbGluZSA9IHVuZGVmaW5l
ZCwKKyAgICAgICAgY29sdW1uID0gdW5kZWZpbmVkOworICAgIGlmIChsb2MpIHsKKyAgICAgIGxp
bmUgPSBsb2Muc3RhcnQubGluZTsKKyAgICAgIGNvbHVtbiA9IGxvYy5zdGFydC5jb2x1bW47CisK
KyAgICAgIG1lc3NhZ2UgKz0gJyAtICcgKyBsaW5lICsgJzonICsgY29sdW1uOworICAgIH0KKwor
ICAgIHZhciB0bXAgPSBFcnJvci5wcm90b3R5cGUuY29uc3RydWN0b3IuY2FsbCh0aGlzLCBtZXNz
YWdlKTsKKworICAgIC8vIFVuZm9ydHVuYXRlbHkgZXJyb3JzIGFyZSBub3QgZW51bWVyYWJsZSBp
biBDaHJvbWUgKGF0IGxlYXN0KSwgc28gYGZvciBwcm9wIGluIHRtcGAgZG9lc24ndCB3b3JrLgor
ICAgIGZvciAodmFyIGlkeCA9IDA7IGlkeCA8IGVycm9yUHJvcHMubGVuZ3RoOyBpZHgrKykgewor
ICAgICAgdGhpc1tlcnJvclByb3BzW2lkeF1dID0gdG1wW2Vycm9yUHJvcHNbaWR4XV07CisgICAg
fQorCisgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi8KKyAgICBpZiAoRXJyb3IuY2FwdHVy
ZVN0YWNrVHJhY2UpIHsKKyAgICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIEV4Y2Vw
dGlvbik7CisgICAgfQorCisgICAgdHJ5IHsKKyAgICAgIGlmIChsb2MpIHsKKyAgICAgICAgdGhp
cy5saW5lTnVtYmVyID0gbGluZTsKKworICAgICAgICAvLyBXb3JrIGFyb3VuZCBpc3N1ZSB1bmRl
ciBzYWZhcmkgd2hlcmUgd2UgY2FuJ3QgZGlyZWN0bHkgc2V0IHRoZSBjb2x1bW4gdmFsdWUKKyAg
ICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8KKyAgICAgICAgaWYgKE9iamVjdC5kZWZp
bmVQcm9wZXJ0eSkgeworICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAnY29s
dW1uJywgeyB2YWx1ZTogY29sdW1uIH0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIHRo
aXMuY29sdW1uID0gY29sdW1uOworICAgICAgICB9CisgICAgICB9CisgICAgfSBjYXRjaCAobm9w
KSB7CisgICAgICAvKiBJZ25vcmUgaWYgdGhlIGJyb3dzZXIgaXMgdmVyeSBwYXJ0aWN1bGFyICov
CisgICAgfQorICB9CisKKyAgRXhjZXB0aW9uLnByb3RvdHlwZSA9IG5ldyBFcnJvcigpOworCisg
IG1vZHVsZS5leHBvcnRzID0gRXhjZXB0aW9uOworfSk7CisvLyMgc291cmNlTWFwcGluZ1VSTD1k
YXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJ
anBiSWk0dUx5NHVMeTR1TDJ4cFlpOW9ZVzVrYkdWaVlYSnpMMlY0WTJWd2RHbHZiaTVxY3lKZExD
SnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pT3pzN1FVRkRRU3hOUVVGTkxGVkJRVlVzUjBG
QlJ5eERRVUZETEdGQlFXRXNSVUZCUlN4VlFVRlZMRVZCUVVVc1dVRkJXU3hGUVVGRkxGTkJRVk1z
UlVGQlJTeE5RVUZOTEVWQlFVVXNVVUZCVVN4RlFVRkZMRTlCUVU4c1EwRkJReXhEUVVGRE96dEJR
VVZ1Unl4WFFVRlRMRk5CUVZNc1EwRkJReXhQUVVGUExFVkJRVVVzU1VGQlNTeEZRVUZGTzBGQlEy
aERMRkZCUVVrc1IwRkJSeXhIUVVGSExFbEJRVWtzU1VGQlNTeEpRVUZKTEVOQlFVTXNSMEZCUnp0
UlFVTjBRaXhKUVVGSkxGbEJRVUU3VVVGRFNpeE5RVUZOTEZsQlFVRXNRMEZCUXp0QlFVTllMRkZC
UVVrc1IwRkJSeXhGUVVGRk8wRkJRMUFzVlVGQlNTeEhRVUZITEVkQlFVY3NRMEZCUXl4TFFVRkxM
RU5CUVVNc1NVRkJTU3hEUVVGRE8wRkJRM1JDTEZsQlFVMHNSMEZCUnl4SFFVRkhMRU5CUVVNc1Mw
RkJTeXhEUVVGRExFMUJRVTBzUTBGQlF6czdRVUZGTVVJc1lVRkJUeXhKUVVGSkxFdEJRVXNzUjBG
QlJ5eEpRVUZKTEVkQlFVY3NSMEZCUnl4SFFVRkhMRTFCUVUwc1EwRkJRenRMUVVONFF6czdRVUZG
UkN4UlFVRkpMRWRCUVVjc1IwRkJSeXhMUVVGTExFTkJRVU1zVTBGQlV5eERRVUZETEZkQlFWY3NR
MEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hGUVVGRkxFOUJRVThzUTBGQlF5eERRVUZET3pzN1FV
RkhNVVFzVTBGQlN5eEpRVUZKTEVkQlFVY3NSMEZCUnl4RFFVRkRMRVZCUVVVc1IwRkJSeXhIUVVG
SExGVkJRVlVzUTBGQlF5eE5RVUZOTEVWQlFVVXNSMEZCUnl4RlFVRkZMRVZCUVVVN1FVRkRhRVFz
VlVGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFZEJR
VWNzUTBGQlF5eFZRVUZWTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJRenRMUVVNNVF6
czdPMEZCUjBRc1VVRkJTU3hMUVVGTExFTkJRVU1zYVVKQlFXbENMRVZCUVVVN1FVRkRNMElzVjBG
QlN5eERRVUZETEdsQ1FVRnBRaXhEUVVGRExFbEJRVWtzUlVGQlJTeFRRVUZUTEVOQlFVTXNRMEZC
UXp0TFFVTXhRenM3UVVGRlJDeFJRVUZKTzBGQlEwWXNWVUZCU1N4SFFVRkhMRVZCUVVVN1FVRkRV
Q3haUVVGSkxFTkJRVU1zVlVGQlZTeEhRVUZITEVsQlFVa3NRMEZCUXpzN096dEJRVWwyUWl4WlFV
RkpMRTFCUVUwc1EwRkJReXhqUVVGakxFVkJRVVU3UVVGRGVrSXNaMEpCUVUwc1EwRkJReXhqUVVG
akxFTkJRVU1zU1VGQlNTeEZRVUZGTEZGQlFWRXNSVUZCUlN4RlFVRkRMRXRCUVVzc1JVRkJSU3hO
UVVGTkxFVkJRVU1zUTBGQlF5eERRVUZETzFOQlEzaEVMRTFCUVUwN1FVRkRUQ3hqUVVGSkxFTkJR
VU1zVFVGQlRTeEhRVUZITEUxQlFVMHNRMEZCUXp0VFFVTjBRanRQUVVOR08wdEJRMFlzUTBGQlF5
eFBRVUZQTEVkQlFVY3NSVUZCUlRzN1MwRkZZanRIUVVOR096dEJRVVZFTEZkQlFWTXNRMEZCUXl4
VFFVRlRMRWRCUVVjc1NVRkJTU3hMUVVGTExFVkJRVVVzUTBGQlF6czdiVUpCUlc1Q0xGTkJRVk1p
TENKbWFXeGxJam9pWlhoalpYQjBhVzl1TG1weklpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lY
RzVqYjI1emRDQmxjbkp2Y2xCeWIzQnpJRDBnV3lka1pYTmpjbWx3ZEdsdmJpY3NJQ2RtYVd4bFRt
RnRaU2NzSUNkc2FXNWxUblZ0WW1WeUp5d2dKMjFsYzNOaFoyVW5MQ0FuYm1GdFpTY3NJQ2R1ZFcx
aVpYSW5MQ0FuYzNSaFkyc25YVHRjYmx4dVpuVnVZM1JwYjI0Z1JYaGpaWEIwYVc5dUtHMWxjM05o
WjJVc0lHNXZaR1VwSUh0Y2JpQWdiR1YwSUd4dll5QTlJRzV2WkdVZ0ppWWdibTlrWlM1c2IyTXNY
RzRnSUNBZ0lDQnNhVzVsTEZ4dUlDQWdJQ0FnWTI5c2RXMXVPMXh1SUNCcFppQW9iRzlqS1NCN1hH
NGdJQ0FnYkdsdVpTQTlJR3h2WXk1emRHRnlkQzVzYVc1bE8xeHVJQ0FnSUdOdmJIVnRiaUE5SUd4
dll5NXpkR0Z5ZEM1amIyeDFiVzQ3WEc1Y2JpQWdJQ0J0WlhOellXZGxJQ3M5SUNjZ0xTQW5JQ3Nn
YkdsdVpTQXJJQ2M2SnlBcklHTnZiSFZ0Ymp0Y2JpQWdmVnh1WEc0Z0lHeGxkQ0IwYlhBZ1BTQkZj
bkp2Y2k1d2NtOTBiM1I1Y0dVdVkyOXVjM1J5ZFdOMGIzSXVZMkZzYkNoMGFHbHpMQ0J0WlhOellX
ZGxLVHRjYmx4dUlDQXZMeUJWYm1admNuUjFibUYwWld4NUlHVnljbTl5Y3lCaGNtVWdibTkwSUdW
dWRXMWxjbUZpYkdVZ2FXNGdRMmh5YjIxbElDaGhkQ0JzWldGemRDa3NJSE52SUdCbWIzSWdjSEp2
Y0NCcGJpQjBiWEJnSUdSdlpYTnVKM1FnZDI5eWF5NWNiaUFnWm05eUlDaHNaWFFnYVdSNElEMGdN
RHNnYVdSNElEd2daWEp5YjNKUWNtOXdjeTVzWlc1bmRHZzdJR2xrZUNzcktTQjdYRzRnSUNBZ2RH
aHBjMXRsY25KdmNsQnliM0J6VzJsa2VGMWRJRDBnZEcxd1cyVnljbTl5VUhKdmNITmJhV1I0WFYw
N1hHNGdJSDFjYmx4dUlDQXZLaUJwYzNSaGJtSjFiQ0JwWjI1dmNtVWdaV3h6WlNBcUwxeHVJQ0Jw
WmlBb1JYSnliM0l1WTJGd2RIVnlaVk4wWVdOclZISmhZMlVwSUh0Y2JpQWdJQ0JGY25KdmNpNWpZ
WEIwZFhKbFUzUmhZMnRVY21GalpTaDBhR2x6TENCRmVHTmxjSFJwYjI0cE8xeHVJQ0I5WEc1Y2Jp
QWdkSEo1SUh0Y2JpQWdJQ0JwWmlBb2JHOWpLU0I3WEc0Z0lDQWdJQ0IwYUdsekxteHBibVZPZFcx
aVpYSWdQU0JzYVc1bE8xeHVYRzRnSUNBZ0lDQXZMeUJYYjNKcklHRnliM1Z1WkNCcGMzTjFaU0Ix
Ym1SbGNpQnpZV1poY21rZ2QyaGxjbVVnZDJVZ1kyRnVKM1FnWkdseVpXTjBiSGtnYzJWMElIUm9a
U0JqYjJ4MWJXNGdkbUZzZFdWY2JpQWdJQ0FnSUM4cUlHbHpkR0Z1WW5Wc0lHbG5ibTl5WlNCdVpY
aDBJQ292WEc0Z0lDQWdJQ0JwWmlBb1QySnFaV04wTG1SbFptbHVaVkJ5YjNCbGNuUjVLU0I3WEc0
Z0lDQWdJQ0FnSUU5aWFtVmpkQzVrWldacGJtVlFjbTl3WlhKMGVTaDBhR2x6TENBblkyOXNkVzF1
Snl3Z2UzWmhiSFZsT2lCamIyeDFiVzU5S1R0Y2JpQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJ
Q0FnSUhSb2FYTXVZMjlzZFcxdUlEMGdZMjlzZFcxdU8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2Jp
QWdmU0JqWVhSamFDQW9ibTl3S1NCN1hHNGdJQ0FnTHlvZ1NXZHViM0psSUdsbUlIUm9aU0JpY205
M2MyVnlJR2x6SUhabGNua2djR0Z5ZEdsamRXeGhjaUFxTDF4dUlDQjlYRzU5WEc1Y2JrVjRZMlZ3
ZEdsdmJpNXdjbTkwYjNSNWNHVWdQU0J1WlhjZ1JYSnliM0lvS1R0Y2JseHVaWGh3YjNKMElHUmxa
bUYxYkhRZ1JYaGpaWEIwYVc5dU8xeHVJbDE5Cis7CitkZWZpbmUoJ2hhbmRsZWJhcnMvaGVscGVy
cy9ibG9jay1oZWxwZXItbWlzc2luZycsWydleHBvcnRzJywgJ21vZHVsZScsICcuLi91dGlscydd
LCBmdW5jdGlvbiAoZXhwb3J0cywgbW9kdWxlLCBfdXRpbHMpIHsKKyAgJ3VzZSBzdHJpY3QnOwor
CisgIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGluc3RhbmNlKSB7CisgICAgaW5zdGFuY2Uu
cmVnaXN0ZXJIZWxwZXIoJ2Jsb2NrSGVscGVyTWlzc2luZycsIGZ1bmN0aW9uIChjb250ZXh0LCBv
cHRpb25zKSB7CisgICAgICB2YXIgaW52ZXJzZSA9IG9wdGlvbnMuaW52ZXJzZSwKKyAgICAgICAg
ICBmbiA9IG9wdGlvbnMuZm47CisKKyAgICAgIGlmIChjb250ZXh0ID09PSB0cnVlKSB7CisgICAg
ICAgIHJldHVybiBmbih0aGlzKTsKKyAgICAgIH0gZWxzZSBpZiAoY29udGV4dCA9PT0gZmFsc2Ug
fHwgY29udGV4dCA9PSBudWxsKSB7CisgICAgICAgIHJldHVybiBpbnZlcnNlKHRoaXMpOworICAg
ICAgfSBlbHNlIGlmIChfdXRpbHMuaXNBcnJheShjb250ZXh0KSkgeworICAgICAgICBpZiAoY29u
dGV4dC5sZW5ndGggPiAwKSB7CisgICAgICAgICAgaWYgKG9wdGlvbnMuaWRzKSB7CisgICAgICAg
ICAgICBvcHRpb25zLmlkcyA9IFtvcHRpb25zLm5hbWVdOworICAgICAgICAgIH0KKworICAgICAg
ICAgIHJldHVybiBpbnN0YW5jZS5oZWxwZXJzLmVhY2goY29udGV4dCwgb3B0aW9ucyk7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgcmV0dXJuIGludmVyc2UodGhpcyk7CisgICAgICAgIH0K
KyAgICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChvcHRpb25zLmRhdGEgJiYgb3B0aW9ucy5pZHMp
IHsKKyAgICAgICAgICB2YXIgZGF0YSA9IF91dGlscy5jcmVhdGVGcmFtZShvcHRpb25zLmRhdGEp
OworICAgICAgICAgIGRhdGEuY29udGV4dFBhdGggPSBfdXRpbHMuYXBwZW5kQ29udGV4dFBhdGgo
b3B0aW9ucy5kYXRhLmNvbnRleHRQYXRoLCBvcHRpb25zLm5hbWUpOworICAgICAgICAgIG9wdGlv
bnMgPSB7IGRhdGE6IGRhdGEgfTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBmbihjb250
ZXh0LCBvcHRpb25zKTsKKyAgICAgIH0KKyAgICB9KTsKKyAgfTsKK30pOworLy8jIHNvdXJjZU1h
cHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENK
emIzVnlZMlZ6SWpwYklpNHVMeTR1THk0dUx5NHVMMnhwWWk5b1lXNWtiR1ZpWVhKekwyaGxiSEJs
Y25NdllteHZZMnN0YUdWc2NHVnlMVzFwYzNOcGJtY3Vhbk1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZ
WEJ3YVc1bmN5STZJanM3TzIxQ1FVVmxMRlZCUVZNc1VVRkJVU3hGUVVGRk8wRkJRMmhETEZsQlFW
RXNRMEZCUXl4alFVRmpMRU5CUVVNc2IwSkJRVzlDTEVWQlFVVXNWVUZCVXl4UFFVRlBMRVZCUVVV
c1QwRkJUeXhGUVVGRk8wRkJRM1pGTEZWQlFVa3NUMEZCVHl4SFFVRkhMRTlCUVU4c1EwRkJReXhQ
UVVGUE8xVkJRM3BDTEVWQlFVVXNSMEZCUnl4UFFVRlBMRU5CUVVNc1JVRkJSU3hEUVVGRE96dEJR
VVZ3UWl4VlFVRkpMRTlCUVU4c1MwRkJTeXhKUVVGSkxFVkJRVVU3UVVGRGNFSXNaVUZCVHl4RlFV
RkZMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03VDBGRGFrSXNUVUZCVFN4SlFVRkpMRTlCUVU4
c1MwRkJTeXhMUVVGTExFbEJRVWtzVDBGQlR5eEpRVUZKTEVsQlFVa3NSVUZCUlR0QlFVTXZReXhs
UVVGUExFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0UFFVTjBRaXhOUVVGTkxFbEJR
VWtzVDBGWWVVSXNUMEZCVHl4RFFWZDRRaXhQUVVGUExFTkJRVU1zUlVGQlJUdEJRVU16UWl4WlFV
RkpMRTlCUVU4c1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eEZRVUZGTzBGQlEzUkNMR05CUVVr
c1QwRkJUeXhEUVVGRExFZEJRVWNzUlVGQlJUdEJRVU5tTEcxQ1FVRlBMRU5CUVVNc1IwRkJSeXhI
UVVGSExFTkJRVU1zVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMWRCUXpsQ096dEJR
VVZFTEdsQ1FVRlBMRkZCUVZFc1EwRkJReXhQUVVGUExFTkJRVU1zU1VGQlNTeERRVUZETEU5QlFV
OHNSVUZCUlN4UFFVRlBMRU5CUVVNc1EwRkJRenRUUVVOb1JDeE5RVUZOTzBGQlEwd3NhVUpCUVU4
c1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzFOQlEzUkNPMDlCUTBZc1RVRkJUVHRC
UVVOTUxGbEJRVWtzVDBGQlR5eERRVUZETEVsQlFVa3NTVUZCU1N4UFFVRlBMRU5CUVVNc1IwRkJS
eXhGUVVGRk8wRkJReTlDTEdOQlFVa3NTVUZCU1N4SFFVRkhMRTlCZGtKUkxGZEJRVmNzUTBGMVFs
QXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8wRkJRM0pETEdOQlFVa3NRMEZCUXl4
WFFVRlhMRWRCUVVjc1QwRjRRbTVDTEdsQ1FVRnBRaXhEUVhkQ2IwSXNUMEZCVHl4RFFVRkRMRWxC
UVVrc1EwRkJReXhYUVVGWExFVkJRVVVzVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRP
MEZCUXpkRkxHbENRVUZQTEVkQlFVY3NSVUZCUXl4SlFVRkpMRVZCUVVVc1NVRkJTU3hGUVVGRExF
TkJRVU03VTBGRGVFSTdPMEZCUlVRc1pVRkJUeXhGUVVGRkxFTkJRVU1zVDBGQlR5eEZRVUZGTEU5
QlFVOHNRMEZCUXl4RFFVRkRPMDlCUXpkQ08wdEJRMFlzUTBGQlF5eERRVUZETzBkQlEwb2lMQ0pt
YVd4bElqb2lZbXh2WTJzdGFHVnNjR1Z5TFcxcGMzTnBibWN1YW5NaUxDSnpiM1Z5WTJWelEyOXVk
R1Z1ZENJNld5SnBiWEJ2Y25RZ2UyRndjR1Z1WkVOdmJuUmxlSFJRWVhSb0xDQmpjbVZoZEdWR2Nt
RnRaU3dnYVhOQmNuSmhlWDBnWm5KdmJTQW5MaTR2ZFhScGJITW5PMXh1WEc1bGVIQnZjblFnWkdW
bVlYVnNkQ0JtZFc1amRHbHZiaWhwYm5OMFlXNWpaU2tnZTF4dUlDQnBibk4wWVc1alpTNXlaV2Rw
YzNSbGNraGxiSEJsY2lnbllteHZZMnRJWld4d1pYSk5hWE56YVc1bkp5d2dablZ1WTNScGIyNG9Z
Mjl1ZEdWNGRDd2diM0IwYVc5dWN5a2dlMXh1SUNBZ0lHeGxkQ0JwYm5abGNuTmxJRDBnYjNCMGFX
OXVjeTVwYm5abGNuTmxMRnh1SUNBZ0lDQWdJQ0JtYmlBOUlHOXdkR2x2Ym5NdVptNDdYRzVjYmlB
Z0lDQnBaaUFvWTI5dWRHVjRkQ0E5UFQwZ2RISjFaU2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVJR1p1
S0hSb2FYTXBPMXh1SUNBZ0lIMGdaV3h6WlNCcFppQW9ZMjl1ZEdWNGRDQTlQVDBnWm1Gc2MyVWdm
SHdnWTI5dWRHVjRkQ0E5UFNCdWRXeHNLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdhVzUyWlhKelpT
aDBhR2x6S1R0Y2JpQWdJQ0I5SUdWc2MyVWdhV1lnS0dselFYSnlZWGtvWTI5dWRHVjRkQ2twSUh0
Y2JpQWdJQ0FnSUdsbUlDaGpiMjUwWlhoMExteGxibWQwYUNBK0lEQXBJSHRjYmlBZ0lDQWdJQ0Fn
YVdZZ0tHOXdkR2x2Ym5NdWFXUnpLU0I3WEc0Z0lDQWdJQ0FnSUNBZ2IzQjBhVzl1Y3k1cFpITWdQ
U0JiYjNCMGFXOXVjeTV1WVcxbFhUdGNiaUFnSUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0FnSUhKbGRI
VnliaUJwYm5OMFlXNWpaUzVvWld4d1pYSnpMbVZoWTJnb1kyOXVkR1Y0ZEN3Z2IzQjBhVzl1Y3lr
N1hHNGdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnYVc1MlpYSnpaU2gw
YUdsektUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnYVdZZ0tHOXdk
R2x2Ym5NdVpHRjBZU0FtSmlCdmNIUnBiMjV6TG1sa2N5a2dlMXh1SUNBZ0lDQWdJQ0JzWlhRZ1pH
RjBZU0E5SUdOeVpXRjBaVVp5WVcxbEtHOXdkR2x2Ym5NdVpHRjBZU2s3WEc0Z0lDQWdJQ0FnSUdS
aGRHRXVZMjl1ZEdWNGRGQmhkR2dnUFNCaGNIQmxibVJEYjI1MFpYaDBVR0YwYUNodmNIUnBiMjV6
TG1SaGRHRXVZMjl1ZEdWNGRGQmhkR2dzSUc5d2RHbHZibk11Ym1GdFpTazdYRzRnSUNBZ0lDQWdJ
Rzl3ZEdsdmJuTWdQU0I3WkdGMFlUb2daR0YwWVgwN1hHNGdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lI
SmxkSFZ5YmlCbWJpaGpiMjUwWlhoMExDQnZjSFJwYjI1ektUdGNiaUFnSUNCOVhHNGdJSDBwTzF4
dWZWeHVJbDE5Cis7CitkZWZpbmUoJ2hhbmRsZWJhcnMvaGVscGVycy9lYWNoJyxbJ2V4cG9ydHMn
LCAnbW9kdWxlJywgJy4uL3V0aWxzJywgJy4uL2V4Y2VwdGlvbiddLCBmdW5jdGlvbiAoZXhwb3J0
cywgbW9kdWxlLCBfdXRpbHMsIF9leGNlcHRpb24pIHsKKyAgJ3VzZSBzdHJpY3QnOworCisgIC8v
IGlzdGFuYnVsIGlnbm9yZSBuZXh0CisKKyAgZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVs
dChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQn
OiBvYmogfTsgfQorCisgIHZhciBfRXhjZXB0aW9uID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChf
ZXhjZXB0aW9uKTsKKworICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbnN0YW5jZSkgewor
ICAgIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCdlYWNoJywgZnVuY3Rpb24gKGNvbnRleHQsIG9w
dGlvbnMpIHsKKyAgICAgIGlmICghb3B0aW9ucykgeworICAgICAgICB0aHJvdyBuZXcgX0V4Y2Vw
dGlvblsnZGVmYXVsdCddKCdNdXN0IHBhc3MgaXRlcmF0b3IgdG8gI2VhY2gnKTsKKyAgICAgIH0K
KworICAgICAgdmFyIGZuID0gb3B0aW9ucy5mbiwKKyAgICAgICAgICBpbnZlcnNlID0gb3B0aW9u
cy5pbnZlcnNlLAorICAgICAgICAgIGkgPSAwLAorICAgICAgICAgIHJldCA9ICcnLAorICAgICAg
ICAgIGRhdGEgPSB1bmRlZmluZWQsCisgICAgICAgICAgY29udGV4dFBhdGggPSB1bmRlZmluZWQ7
CisKKyAgICAgIGlmIChvcHRpb25zLmRhdGEgJiYgb3B0aW9ucy5pZHMpIHsKKyAgICAgICAgY29u
dGV4dFBhdGggPSBfdXRpbHMuYXBwZW5kQ29udGV4dFBhdGgob3B0aW9ucy5kYXRhLmNvbnRleHRQ
YXRoLCBvcHRpb25zLmlkc1swXSkgKyAnLic7CisgICAgICB9CisKKyAgICAgIGlmIChfdXRpbHMu
aXNGdW5jdGlvbihjb250ZXh0KSkgeworICAgICAgICBjb250ZXh0ID0gY29udGV4dC5jYWxsKHRo
aXMpOworICAgICAgfQorCisgICAgICBpZiAob3B0aW9ucy5kYXRhKSB7CisgICAgICAgIGRhdGEg
PSBfdXRpbHMuY3JlYXRlRnJhbWUob3B0aW9ucy5kYXRhKTsKKyAgICAgIH0KKworICAgICAgZnVu
Y3Rpb24gZXhlY0l0ZXJhdGlvbihmaWVsZCwgaW5kZXgsIGxhc3QpIHsKKyAgICAgICAgaWYgKGRh
dGEpIHsKKyAgICAgICAgICBkYXRhLmtleSA9IGZpZWxkOworICAgICAgICAgIGRhdGEuaW5kZXgg
PSBpbmRleDsKKyAgICAgICAgICBkYXRhLmZpcnN0ID0gaW5kZXggPT09IDA7CisgICAgICAgICAg
ZGF0YS5sYXN0ID0gISFsYXN0OworCisgICAgICAgICAgaWYgKGNvbnRleHRQYXRoKSB7CisgICAg
ICAgICAgICBkYXRhLmNvbnRleHRQYXRoID0gY29udGV4dFBhdGggKyBmaWVsZDsKKyAgICAgICAg
ICB9CisgICAgICAgIH0KKworICAgICAgICByZXQgPSByZXQgKyBmbihjb250ZXh0W2ZpZWxkXSwg
eworICAgICAgICAgIGRhdGE6IGRhdGEsCisgICAgICAgICAgYmxvY2tQYXJhbXM6IF91dGlscy5i
bG9ja1BhcmFtcyhbY29udGV4dFtmaWVsZF0sIGZpZWxkXSwgW2NvbnRleHRQYXRoICsgZmllbGQs
IG51bGxdKQorICAgICAgICB9KTsKKyAgICAgIH0KKworICAgICAgaWYgKGNvbnRleHQgJiYgdHlw
ZW9mIGNvbnRleHQgPT09ICdvYmplY3QnKSB7CisgICAgICAgIGlmIChfdXRpbHMuaXNBcnJheShj
b250ZXh0KSkgeworICAgICAgICAgIGZvciAodmFyIGogPSBjb250ZXh0Lmxlbmd0aDsgaSA8IGo7
IGkrKykgeworICAgICAgICAgICAgaWYgKGkgaW4gY29udGV4dCkgeworICAgICAgICAgICAgICBl
eGVjSXRlcmF0aW9uKGksIGksIGkgPT09IGNvbnRleHQubGVuZ3RoIC0gMSk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgIHZhciBwcmlvcktl
eSA9IHVuZGVmaW5lZDsKKworICAgICAgICAgIGZvciAodmFyIGtleSBpbiBjb250ZXh0KSB7Cisg
ICAgICAgICAgICBpZiAoY29udGV4dC5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7CisgICAgICAgICAg
ICAgIC8vIFdlJ3JlIHJ1bm5pbmcgdGhlIGl0ZXJhdGlvbnMgb25lIHN0ZXAgb3V0IG9mIHN5bmMg
c28gd2UgY2FuIGRldGVjdAorICAgICAgICAgICAgICAvLyB0aGUgbGFzdCBpdGVyYXRpb24gd2l0
aG91dCBoYXZlIHRvIHNjYW4gdGhlIG9iamVjdCB0d2ljZSBhbmQgY3JlYXRlCisgICAgICAgICAg
ICAgIC8vIGFuIGl0ZXJtZWRpYXRlIGtleXMgYXJyYXkuCisgICAgICAgICAgICAgIGlmIChwcmlv
cktleSAhPT0gdW5kZWZpbmVkKSB7CisgICAgICAgICAgICAgICAgZXhlY0l0ZXJhdGlvbihwcmlv
cktleSwgaSAtIDEpOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIHByaW9yS2V5ID0g
a2V5OworICAgICAgICAgICAgICBpKys7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAg
ICAgICAgIGlmIChwcmlvcktleSAhPT0gdW5kZWZpbmVkKSB7CisgICAgICAgICAgICBleGVjSXRl
cmF0aW9uKHByaW9yS2V5LCBpIC0gMSwgdHJ1ZSk7CisgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICB9CisKKyAgICAgIGlmIChpID09PSAwKSB7CisgICAgICAgIHJldCA9IGludmVyc2UodGhp
cyk7CisgICAgICB9CisKKyAgICAgIHJldHVybiByZXQ7CisgICAgfSk7CisgIH07Cit9KTsKKy8v
IyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnph
Vzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUx5NHVMeTR1TDJ4cFlpOW9ZVzVrYkdWaVlY
SnpMMmhsYkhCbGNuTXZaV0ZqYUM1cWN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpv
aU96czdPenM3T3pzN2JVSkJSMlVzVlVGQlV5eFJRVUZSTEVWQlFVVTdRVUZEYUVNc1dVRkJVU3hE
UVVGRExHTkJRV01zUTBGQlF5eE5RVUZOTEVWQlFVVXNWVUZCVXl4UFFVRlBMRVZCUVVVc1QwRkJU
eXhGUVVGRk8wRkJRM3BFTEZWQlFVa3NRMEZCUXl4UFFVRlBMRVZCUVVVN1FVRkRXaXhqUVVGTkxE
QkNRVUZqTERaQ1FVRTJRaXhEUVVGRExFTkJRVU03VDBGRGNFUTdPMEZCUlVRc1ZVRkJTU3hGUVVG
RkxFZEJRVWNzVDBGQlR5eERRVUZETEVWQlFVVTdWVUZEWml4UFFVRlBMRWRCUVVjc1QwRkJUeXhE
UVVGRExFOUJRVTg3VlVGRGVrSXNRMEZCUXl4SFFVRkhMRU5CUVVNN1ZVRkRUQ3hIUVVGSExFZEJR
VWNzUlVGQlJUdFZRVU5TTEVsQlFVa3NXVUZCUVR0VlFVTktMRmRCUVZjc1dVRkJRU3hEUVVGRE96
dEJRVVZvUWl4VlFVRkpMRTlCUVU4c1EwRkJReXhKUVVGSkxFbEJRVWtzVDBGQlR5eERRVUZETEVk
QlFVY3NSVUZCUlR0QlFVTXZRaXh0UWtGQlZ5eEhRVUZITEU5QmFrSmFMR2xDUVVGcFFpeERRV2xD
WVN4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExGZEJRVmNzUlVGQlJTeFBRVUZQTEVOQlFVTXNS
MEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUjBGQlJ5eERRVUZETzA5QlEy
cEdPenRCUVVWRUxGVkJRVWtzVDBGd1FuTkVMRlZCUVZVc1EwRnZRbkpFTEU5QlFVOHNRMEZCUXl4
RlFVRkZPMEZCUVVVc1pVRkJUeXhIUVVGSExFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZC
U1N4RFFVRkRMRU5CUVVNN1QwRkJSVHM3UVVGRk1VUXNWVUZCU1N4UFFVRlBMRU5CUVVNc1NVRkJT
U3hGUVVGRk8wRkJRMmhDTEZsQlFVa3NSMEZCUnl4UFFYWkNNa0lzVjBGQlZ5eERRWFZDTVVJc1Qw
RkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzA5QlEyeERPenRCUVVWRUxHVkJRVk1zWVVG
QllTeERRVUZETEV0QlFVc3NSVUZCUlN4TFFVRkxMRVZCUVVVc1NVRkJTU3hGUVVGRk8wRkJRM3BE
TEZsQlFVa3NTVUZCU1N4RlFVRkZPMEZCUTFJc1kwRkJTU3hEUVVGRExFZEJRVWNzUjBGQlJ5eExR
VUZMTEVOQlFVTTdRVUZEYWtJc1kwRkJTU3hEUVVGRExFdEJRVXNzUjBGQlJ5eExRVUZMTEVOQlFV
TTdRVUZEYmtJc1kwRkJTU3hEUVVGRExFdEJRVXNzUjBGQlJ5eExRVUZMTEV0QlFVc3NRMEZCUXl4
RFFVRkRPMEZCUTNwQ0xHTkJRVWtzUTBGQlF5eEpRVUZKTEVkQlFVY3NRMEZCUXl4RFFVRkRMRWxC
UVVrc1EwRkJRenM3UVVGRmJrSXNZMEZCU1N4WFFVRlhMRVZCUVVVN1FVRkRaaXhuUWtGQlNTeERR
VUZETEZkQlFWY3NSMEZCUnl4WFFVRlhMRWRCUVVjc1MwRkJTeXhEUVVGRE8xZEJRM2hETzFOQlEw
WTdPMEZCUlVRc1YwRkJSeXhIUVVGSExFZEJRVWNzUjBGQlJ5eEZRVUZGTEVOQlFVTXNUMEZCVHl4
RFFVRkRMRXRCUVVzc1EwRkJReXhGUVVGRk8wRkJRemRDTEdOQlFVa3NSVUZCUlN4SlFVRkpPMEZC
UTFZc2NVSkJRVmNzUlVGQlJTeFBRWGhEVFN4WFFVRlhMRU5CZDBOTUxFTkJRVU1zVDBGQlR5eERR
VUZETEV0QlFVc3NRMEZCUXl4RlFVRkZMRXRCUVVzc1EwRkJReXhGUVVGRkxFTkJRVU1zVjBGQlZ5
eEhRVUZITEV0QlFVc3NSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJRenRUUVVNdlJTeERRVUZETEVO
QlFVTTdUMEZEU2pzN1FVRkZSQ3hWUVVGSkxFOUJRVThzU1VGQlNTeFBRVUZQTEU5QlFVOHNTMEZC
U3l4UlFVRlJMRVZCUVVVN1FVRkRNVU1zV1VGQlNTeFBRVGRETWtNc1QwRkJUeXhEUVRaRE1VTXNU
MEZCVHl4RFFVRkRMRVZCUVVVN1FVRkRjRUlzWlVGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4UFFV
RlBMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4
RlFVRkZMRVZCUVVVN1FVRkRka01zWjBKQlFVa3NRMEZCUXl4SlFVRkpMRTlCUVU4c1JVRkJSVHRC
UVVOb1Fpd3lRa0ZCWVN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eExR
VUZMTEU5QlFVOHNRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU03WVVGREww
TTdWMEZEUmp0VFFVTkdMRTFCUVUwN1FVRkRUQ3hqUVVGSkxGRkJRVkVzV1VGQlFTeERRVUZET3p0
QlFVVmlMR1ZCUVVzc1NVRkJTU3hIUVVGSExFbEJRVWtzVDBGQlR5eEZRVUZGTzBGQlEzWkNMR2RD
UVVGSkxFOUJRVThzUTBGQlF5eGpRVUZqTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVN096czdR
VUZKTDBJc2EwSkJRVWtzVVVGQlVTeExRVUZMTEZOQlFWTXNSVUZCUlR0QlFVTXhRaXcyUWtGQllT
eERRVUZETEZGQlFWRXNSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU03WlVG
RGFFTTdRVUZEUkN4elFrRkJVU3hIUVVGSExFZEJRVWNzUTBGQlF6dEJRVU5tTEdWQlFVTXNSVUZC
UlN4RFFVRkRPMkZCUTB3N1YwRkRSanRCUVVORUxHTkJRVWtzVVVGQlVTeExRVUZMTEZOQlFWTXNS
VUZCUlR0QlFVTXhRaXg1UWtGQllTeERRVUZETEZGQlFWRXNSVUZCUlN4RFFVRkRMRWRCUVVjc1Ew
RkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETzFkQlEzUkRPMU5CUTBZN1QwRkRSanM3UVVG
RlJDeFZRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRVZCUVVVN1FVRkRXQ3hYUVVGSExFZEJRVWNz
VDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMDlCUTNKQ096dEJRVVZFTEdGQlFVOHNS
MEZCUnl4RFFVRkRPMHRCUTFvc1EwRkJReXhEUVVGRE8wZEJRMG9pTENKbWFXeGxJam9pWldGamFD
NXFjeUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSW1sdGNHOXlkQ0I3WVhCd1pXNWtRMjl1ZEdW
NGRGQmhkR2dzSUdKc2IyTnJVR0Z5WVcxekxDQmpjbVZoZEdWR2NtRnRaU3dnYVhOQmNuSmhlU3dn
YVhOR2RXNWpkR2x2Ym4wZ1puSnZiU0FuTGk0dmRYUnBiSE1uTzF4dWFXMXdiM0owSUVWNFkyVndk
R2x2YmlCbWNtOXRJQ2N1TGk5bGVHTmxjSFJwYjI0bk8xeHVYRzVsZUhCdmNuUWdaR1ZtWVhWc2RD
Qm1kVzVqZEdsdmJpaHBibk4wWVc1alpTa2dlMXh1SUNCcGJuTjBZVzVqWlM1eVpXZHBjM1JsY2to
bGJIQmxjaWduWldGamFDY3NJR1oxYm1OMGFXOXVLR052Ym5SbGVIUXNJRzl3ZEdsdmJuTXBJSHRj
YmlBZ0lDQnBaaUFvSVc5d2RHbHZibk1wSUh0Y2JpQWdJQ0FnSUhSb2NtOTNJRzVsZHlCRmVHTmxj
SFJwYjI0b0owMTFjM1FnY0dGemN5QnBkR1Z5WVhSdmNpQjBieUFqWldGamFDY3BPMXh1SUNBZ0lI
MWNibHh1SUNBZ0lHeGxkQ0JtYmlBOUlHOXdkR2x2Ym5NdVptNHNYRzRnSUNBZ0lDQWdJR2x1ZG1W
eWMyVWdQU0J2Y0hScGIyNXpMbWx1ZG1WeWMyVXNYRzRnSUNBZ0lDQWdJR2tnUFNBd0xGeHVJQ0Fn
SUNBZ0lDQnlaWFFnUFNBbkp5eGNiaUFnSUNBZ0lDQWdaR0YwWVN4Y2JpQWdJQ0FnSUNBZ1kyOXVk
R1Y0ZEZCaGRHZzdYRzVjYmlBZ0lDQnBaaUFvYjNCMGFXOXVjeTVrWVhSaElDWW1JRzl3ZEdsdmJu
TXVhV1J6S1NCN1hHNGdJQ0FnSUNCamIyNTBaWGgwVUdGMGFDQTlJR0Z3Y0dWdVpFTnZiblJsZUhS
UVlYUm9LRzl3ZEdsdmJuTXVaR0YwWVM1amIyNTBaWGgwVUdGMGFDd2diM0IwYVc5dWN5NXBaSE5i
TUYwcElDc2dKeTRuTzF4dUlDQWdJSDFjYmx4dUlDQWdJR2xtSUNocGMwWjFibU4wYVc5dUtHTnZi
blJsZUhRcEtTQjdJR052Ym5SbGVIUWdQU0JqYjI1MFpYaDBMbU5oYkd3b2RHaHBjeWs3SUgxY2Js
eHVJQ0FnSUdsbUlDaHZjSFJwYjI1ekxtUmhkR0VwSUh0Y2JpQWdJQ0FnSUdSaGRHRWdQU0JqY21W
aGRHVkdjbUZ0WlNodmNIUnBiMjV6TG1SaGRHRXBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHWjFibU4w
YVc5dUlHVjRaV05KZEdWeVlYUnBiMjRvWm1sbGJHUXNJR2x1WkdWNExDQnNZWE4wS1NCN1hHNGdJ
Q0FnSUNCcFppQW9aR0YwWVNrZ2UxeHVJQ0FnSUNBZ0lDQmtZWFJoTG10bGVTQTlJR1pwWld4a08x
eHVJQ0FnSUNBZ0lDQmtZWFJoTG1sdVpHVjRJRDBnYVc1a1pYZzdYRzRnSUNBZ0lDQWdJR1JoZEdF
dVptbHljM1FnUFNCcGJtUmxlQ0E5UFQwZ01EdGNiaUFnSUNBZ0lDQWdaR0YwWVM1c1lYTjBJRDBn
SVNGc1lYTjBPMXh1WEc0Z0lDQWdJQ0FnSUdsbUlDaGpiMjUwWlhoMFVHRjBhQ2tnZTF4dUlDQWdJ
Q0FnSUNBZ0lHUmhkR0V1WTI5dWRHVjRkRkJoZEdnZ1BTQmpiMjUwWlhoMFVHRjBhQ0FySUdacFpX
eGtPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUhKbGRDQTlJSEpsZENB
cklHWnVLR052Ym5SbGVIUmJabWxsYkdSZExDQjdYRzRnSUNBZ0lDQWdJR1JoZEdFNklHUmhkR0Vz
WEc0Z0lDQWdJQ0FnSUdKc2IyTnJVR0Z5WVcxek9pQmliRzlqYTFCaGNtRnRjeWhiWTI5dWRHVjRk
RnRtYVdWc1pGMHNJR1pwWld4a1hTd2dXMk52Ym5SbGVIUlFZWFJvSUNzZ1ptbGxiR1FzSUc1MWJH
eGRLVnh1SUNBZ0lDQWdmU2s3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdhV1lnS0dOdmJuUmxlSFFnSmlZ
Z2RIbHdaVzltSUdOdmJuUmxlSFFnUFQwOUlDZHZZbXBsWTNRbktTQjdYRzRnSUNBZ0lDQnBaaUFv
YVhOQmNuSmhlU2hqYjI1MFpYaDBLU2tnZTF4dUlDQWdJQ0FnSUNCbWIzSWdLR3hsZENCcUlEMGdZ
Mjl1ZEdWNGRDNXNaVzVuZEdnN0lHa2dQQ0JxT3lCcEt5c3BJSHRjYmlBZ0lDQWdJQ0FnSUNCcFpp
QW9hU0JwYmlCamIyNTBaWGgwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JsZUdWalNYUmxjbUYwYVc5
dUtHa3NJR2tzSUdrZ1BUMDlJR052Ym5SbGVIUXViR1Z1WjNSb0lDMGdNU2s3WEc0Z0lDQWdJQ0Fn
SUNBZ2ZWeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQnNa
WFFnY0hKcGIzSkxaWGs3WEc1Y2JpQWdJQ0FnSUNBZ1ptOXlJQ2hzWlhRZ2EyVjVJR2x1SUdOdmJu
UmxlSFFwSUh0Y2JpQWdJQ0FnSUNBZ0lDQnBaaUFvWTI5dWRHVjRkQzVvWVhOUGQyNVFjbTl3WlhK
MGVTaHJaWGtwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0F2THlCWFpTZHlaU0J5ZFc1dWFXNW5JSFJv
WlNCcGRHVnlZWFJwYjI1eklHOXVaU0J6ZEdWd0lHOTFkQ0J2WmlCemVXNWpJSE52SUhkbElHTmhi
aUJrWlhSbFkzUmNiaUFnSUNBZ0lDQWdJQ0FnSUM4dklIUm9aU0JzWVhOMElHbDBaWEpoZEdsdmJp
QjNhWFJvYjNWMElHaGhkbVVnZEc4Z2MyTmhiaUIwYUdVZ2IySnFaV04wSUhSM2FXTmxJR0Z1WkNC
amNtVmhkR1ZjYmlBZ0lDQWdJQ0FnSUNBZ0lDOHZJR0Z1SUdsMFpYSnRaV1JwWVhSbElHdGxlWE1n
WVhKeVlYa3VYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9jSEpwYjNKTFpYa2dJVDA5SUhWdVpHVm1h
VzVsWkNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCbGVHVmpTWFJsY21GMGFXOXVLSEJ5YVc5eVMy
VjVMQ0JwSUMwZ01TazdYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdJQ0J3Y21s
dmNrdGxlU0E5SUd0bGVUdGNiaUFnSUNBZ0lDQWdJQ0FnSUdrckt6dGNiaUFnSUNBZ0lDQWdJQ0I5
WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2FXWWdLSEJ5YVc5eVMyVjVJQ0U5UFNCMWJtUmxa
bWx1WldRcElIdGNiaUFnSUNBZ0lDQWdJQ0JsZUdWalNYUmxjbUYwYVc5dUtIQnlhVzl5UzJWNUxD
QnBJQzBnTVN3Z2RISjFaU2s3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc1
Y2JpQWdJQ0JwWmlBb2FTQTlQVDBnTUNrZ2UxeHVJQ0FnSUNBZ2NtVjBJRDBnYVc1MlpYSnpaU2gw
YUdsektUdGNiaUFnSUNCOVhHNWNiaUFnSUNCeVpYUjFjbTRnY21WME8xeHVJQ0I5S1R0Y2JuMWNi
aUpkZlE9PQorOworZGVmaW5lKCdoYW5kbGViYXJzL2hlbHBlcnMvaGVscGVyLW1pc3NpbmcnLFsn
ZXhwb3J0cycsICdtb2R1bGUnLCAnLi4vZXhjZXB0aW9uJ10sIGZ1bmN0aW9uIChleHBvcnRzLCBt
b2R1bGUsIF9leGNlcHRpb24pIHsKKyAgJ3VzZSBzdHJpY3QnOworCisgIC8vIGlzdGFuYnVsIGln
bm9yZSBuZXh0CisKKyAgZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0
dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfQor
CisgIHZhciBfRXhjZXB0aW9uID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZXhjZXB0aW9uKTsK
KworICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbnN0YW5jZSkgeworICAgIGluc3RhbmNl
LnJlZ2lzdGVySGVscGVyKCdoZWxwZXJNaXNzaW5nJywgZnVuY3Rpb24gKCkgLyogW2FyZ3MsIF1v
cHRpb25zICoveworICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEpIHsKKyAgICAgICAg
Ly8gQSBtaXNzaW5nIGZpZWxkIGluIGEge3tmb299fSBjb25zdHJ1Y3QuCisgICAgICAgIHJldHVy
biB1bmRlZmluZWQ7CisgICAgICB9IGVsc2UgeworICAgICAgICAvLyBTb21lb25lIGlzIGFjdHVh
bGx5IHRyeWluZyB0byBjYWxsIHNvbWV0aGluZywgYmxvdyB1cC4KKyAgICAgICAgdGhyb3cgbmV3
IF9FeGNlcHRpb25bJ2RlZmF1bHQnXSgnTWlzc2luZyBoZWxwZXI6ICInICsgYXJndW1lbnRzW2Fy
Z3VtZW50cy5sZW5ndGggLSAxXS5uYW1lICsgJyInKTsKKyAgICAgIH0KKyAgICB9KTsKKyAgfTsK
K30pOworLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxl
eUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYklpNHVMeTR1THk0dUx5NHVMMnhwWWk5b1lX
NWtiR1ZpWVhKekwyaGxiSEJsY25NdmFHVnNjR1Z5TFcxcGMzTnBibWN1YW5NaVhTd2libUZ0WlhN
aU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWpzN096czdPenM3TzIxQ1FVVmxMRlZCUVZNc1VVRkJVU3hG
UVVGRk8wRkJRMmhETEZsQlFWRXNRMEZCUXl4alFVRmpMRU5CUVVNc1pVRkJaU3hGUVVGRkxHbERR
VUZuUXp0QlFVTjJSU3hWUVVGSkxGTkJRVk1zUTBGQlF5eE5RVUZOTEV0QlFVc3NRMEZCUXl4RlFV
RkZPenRCUVVVeFFpeGxRVUZQTEZOQlFWTXNRMEZCUXp0UFFVTnNRaXhOUVVGTk96dEJRVVZNTEdO
QlFVMHNNRUpCUVdNc2JVSkJRVzFDTEVkQlFVY3NVMEZCVXl4RFFVRkRMRk5CUVZNc1EwRkJReXhO
UVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4SFFVRkhMRWRCUVVjc1EwRkJR
eXhEUVVGRE8wOUJRM1pHTzB0QlEwWXNRMEZCUXl4RFFVRkRPMGRCUTBvaUxDSm1hV3hsSWpvaWFH
VnNjR1Z5TFcxcGMzTnBibWN1YW5NaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SnBiWEJ2Y25R
Z1JYaGpaWEIwYVc5dUlHWnliMjBnSnk0dUwyVjRZMlZ3ZEdsdmJpYzdYRzVjYm1WNGNHOXlkQ0Jr
WldaaGRXeDBJR1oxYm1OMGFXOXVLR2x1YzNSaGJtTmxLU0I3WEc0Z0lHbHVjM1JoYm1ObExuSmxa
Mmx6ZEdWeVNHVnNjR1Z5S0Nkb1pXeHdaWEpOYVhOemFXNW5KeXdnWm5WdVkzUnBiMjRvTHlvZ1cy
RnlaM01zSUYxdmNIUnBiMjV6SUNvdktTQjdYRzRnSUNBZ2FXWWdLR0Z5WjNWdFpXNTBjeTVzWlc1
bmRHZ2dQVDA5SURFcElIdGNiaUFnSUNBZ0lDOHZJRUVnYldsemMybHVaeUJtYVdWc1pDQnBiaUJo
SUh0N1ptOXZmWDBnWTI5dWMzUnlkV04wTGx4dUlDQWdJQ0FnY21WMGRYSnVJSFZ1WkdWbWFXNWxa
RHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0x5OGdVMjl0Wlc5dVpTQnBjeUJoWTNSMVlX
eHNlU0IwY25scGJtY2dkRzhnWTJGc2JDQnpiMjFsZEdocGJtY3NJR0pzYjNjZ2RYQXVYRzRnSUNB
Z0lDQjBhSEp2ZHlCdVpYY2dSWGhqWlhCMGFXOXVLQ2ROYVhOemFXNW5JR2hsYkhCbGNqb2dYQ0lu
SUNzZ1lYSm5kVzFsYm5SelcyRnlaM1Z0Wlc1MGN5NXNaVzVuZEdnZ0xTQXhYUzV1WVcxbElDc2dK
MXdpSnlrN1hHNGdJQ0FnZlZ4dUlDQjlLVHRjYm4xY2JpSmRmUT09Cis7CitkZWZpbmUoJ2hhbmRs
ZWJhcnMvaGVscGVycy9pZicsWydleHBvcnRzJywgJ21vZHVsZScsICcuLi91dGlscyddLCBmdW5j
dGlvbiAoZXhwb3J0cywgbW9kdWxlLCBfdXRpbHMpIHsKKyAgJ3VzZSBzdHJpY3QnOworCisgIG1v
ZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGluc3RhbmNlKSB7CisgICAgaW5zdGFuY2UucmVnaXN0
ZXJIZWxwZXIoJ2lmJywgZnVuY3Rpb24gKGNvbmRpdGlvbmFsLCBvcHRpb25zKSB7CisgICAgICBp
ZiAoX3V0aWxzLmlzRnVuY3Rpb24oY29uZGl0aW9uYWwpKSB7CisgICAgICAgIGNvbmRpdGlvbmFs
ID0gY29uZGl0aW9uYWwuY2FsbCh0aGlzKTsKKyAgICAgIH0KKworICAgICAgLy8gRGVmYXVsdCBi
ZWhhdmlvciBpcyB0byByZW5kZXIgdGhlIHBvc2l0aXZlIHBhdGggaWYgdGhlIHZhbHVlIGlzIHRy
dXRoeSBhbmQgbm90IGVtcHR5LgorICAgICAgLy8gVGhlIGBpbmNsdWRlWmVyb2Agb3B0aW9uIG1h
eSBiZSBzZXQgdG8gdHJlYXQgdGhlIGNvbmR0aW9uYWwgYXMgcHVyZWx5IG5vdCBlbXB0eSBiYXNl
ZCBvbiB0aGUKKyAgICAgIC8vIGJlaGF2aW9yIG9mIGlzRW1wdHkuIEVmZmVjdGl2ZWx5IHRoaXMg
ZGV0ZXJtaW5lcyBpZiAwIGlzIGhhbmRsZWQgYnkgdGhlIHBvc2l0aXZlIHBhdGggb3IgbmVnYXRp
dmUuCisgICAgICBpZiAoIW9wdGlvbnMuaGFzaC5pbmNsdWRlWmVybyAmJiAhY29uZGl0aW9uYWwg
fHwgX3V0aWxzLmlzRW1wdHkoY29uZGl0aW9uYWwpKSB7CisgICAgICAgIHJldHVybiBvcHRpb25z
LmludmVyc2UodGhpcyk7CisgICAgICB9IGVsc2UgeworICAgICAgICByZXR1cm4gb3B0aW9ucy5m
bih0aGlzKTsKKyAgICAgIH0KKyAgICB9KTsKKworICAgIGluc3RhbmNlLnJlZ2lzdGVySGVscGVy
KCd1bmxlc3MnLCBmdW5jdGlvbiAoY29uZGl0aW9uYWwsIG9wdGlvbnMpIHsKKyAgICAgIHJldHVy
biBpbnN0YW5jZS5oZWxwZXJzWydpZiddLmNhbGwodGhpcywgY29uZGl0aW9uYWwsIHsgZm46IG9w
dGlvbnMuaW52ZXJzZSwgaW52ZXJzZTogb3B0aW9ucy5mbiwgaGFzaDogb3B0aW9ucy5oYXNoIH0p
OworICAgIH0pOworICB9OworfSk7CisvLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0
aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVM
eTR1THk0dUwyeHBZaTlvWVc1a2JHVmlZWEp6TDJobGJIQmxjbk12YVdZdWFuTWlYU3dpYm1GdFpY
TWlPbHRkTENKdFlYQndhVzVuY3lJNklqczdPMjFDUVVWbExGVkJRVk1zVVVGQlVTeEZRVUZGTzBG
QlEyaERMRmxCUVZFc1EwRkJReXhqUVVGakxFTkJRVU1zU1VGQlNTeEZRVUZGTEZWQlFWTXNWMEZC
Vnl4RlFVRkZMRTlCUVU4c1JVRkJSVHRCUVVNelJDeFZRVUZKTEU5QlNsTXNWVUZCVlN4RFFVbFNM
RmRCUVZjc1EwRkJReXhGUVVGRk8wRkJRVVVzYlVKQlFWY3NSMEZCUnl4WFFVRlhMRU5CUVVNc1NV
RkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzA5QlFVVTdPenM3TzBGQlMzUkZMRlZCUVVr
c1FVRkJReXhEUVVGRExFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNWMEZCVnl4SlFVRkpMRU5C
UVVNc1YwRkJWeXhKUVVGTExFOUJWQzlETEU5QlFVOHNRMEZUWjBRc1YwRkJWeXhEUVVGRExFVkJR
VVU3UVVGRGRrVXNaVUZCVHl4UFFVRlBMRU5CUVVNc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5
eERRVUZETzA5QlF6bENMRTFCUVUwN1FVRkRUQ3hsUVVGUExFOUJRVThzUTBGQlF5eEZRVUZGTEVO
QlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1QwRkRla0k3UzBGRFJpeERRVUZETEVOQlFVTTdPMEZC
UlVnc1dVRkJVU3hEUVVGRExHTkJRV01zUTBGQlF5eFJRVUZSTEVWQlFVVXNWVUZCVXl4WFFVRlhM
RVZCUVVVc1QwRkJUeXhGUVVGRk8wRkJReTlFTEdGQlFVOHNVVUZCVVN4RFFVRkRMRTlCUVU4c1Ew
RkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RlFVRkZMRmRCUVZj
c1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlJTeFBRVUZQTEVOQlFVTXNUMEZCVHl4RlFVRkZMRTlC
UVU4c1JVRkJSU3hQUVVGUExFTkJRVU1zUlVGQlJTeEZRVUZGTEVsQlFVa3NSVUZCUlN4UFFVRlBM
RU5CUVVNc1NVRkJTU3hGUVVGRExFTkJRVU1zUTBGQlF6dExRVU4yU0N4RFFVRkRMRU5CUVVNN1Iw
RkRTaUlzSW1acGJHVWlPaUpwWmk1cWN5SXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5
eWRDQjdhWE5GYlhCMGVTd2dhWE5HZFc1amRHbHZibjBnWm5KdmJTQW5MaTR2ZFhScGJITW5PMXh1
WEc1bGVIQnZjblFnWkdWbVlYVnNkQ0JtZFc1amRHbHZiaWhwYm5OMFlXNWpaU2tnZTF4dUlDQnBi
bk4wWVc1alpTNXlaV2RwYzNSbGNraGxiSEJsY2lnbmFXWW5MQ0JtZFc1amRHbHZiaWhqYjI1a2FY
UnBiMjVoYkN3Z2IzQjBhVzl1Y3lrZ2UxeHVJQ0FnSUdsbUlDaHBjMFoxYm1OMGFXOXVLR052Ym1S
cGRHbHZibUZzS1NrZ2V5QmpiMjVrYVhScGIyNWhiQ0E5SUdOdmJtUnBkR2x2Ym1Gc0xtTmhiR3dv
ZEdocGN5azdJSDFjYmx4dUlDQWdJQzh2SUVSbFptRjFiSFFnWW1Wb1lYWnBiM0lnYVhNZ2RHOGdj
bVZ1WkdWeUlIUm9aU0J3YjNOcGRHbDJaU0J3WVhSb0lHbG1JSFJvWlNCMllXeDFaU0JwY3lCMGNu
VjBhSGtnWVc1a0lHNXZkQ0JsYlhCMGVTNWNiaUFnSUNBdkx5QlVhR1VnWUdsdVkyeDFaR1ZhWlhK
dllDQnZjSFJwYjI0Z2JXRjVJR0psSUhObGRDQjBieUIwY21WaGRDQjBhR1VnWTI5dVpIUnBiMjVo
YkNCaGN5QndkWEpsYkhrZ2JtOTBJR1Z0Y0hSNUlHSmhjMlZrSUc5dUlIUm9aVnh1SUNBZ0lDOHZJ
R0psYUdGMmFXOXlJRzltSUdselJXMXdkSGt1SUVWbVptVmpkR2wyWld4NUlIUm9hWE1nWkdWMFpY
SnRhVzVsY3lCcFppQXdJR2x6SUdoaGJtUnNaV1FnWW5rZ2RHaGxJSEJ2YzJsMGFYWmxJSEJoZEdn
Z2IzSWdibVZuWVhScGRtVXVYRzRnSUNBZ2FXWWdLQ2doYjNCMGFXOXVjeTVvWVhOb0xtbHVZMngx
WkdWYVpYSnZJQ1ltSUNGamIyNWthWFJwYjI1aGJDa2dmSHdnYVhORmJYQjBlU2hqYjI1a2FYUnBi
MjVoYkNrcElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlCdmNIUnBiMjV6TG1sdWRtVnljMlVvZEdocGN5
azdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJ2Y0hScGIyNXpMbVp1S0hS
b2FYTXBPMXh1SUNBZ0lIMWNiaUFnZlNrN1hHNWNiaUFnYVc1emRHRnVZMlV1Y21WbmFYTjBaWEpJ
Wld4d1pYSW9KM1Z1YkdWemN5Y3NJR1oxYm1OMGFXOXVLR052Ym1ScGRHbHZibUZzTENCdmNIUnBi
MjV6S1NCN1hHNGdJQ0FnY21WMGRYSnVJR2x1YzNSaGJtTmxMbWhsYkhCbGNuTmJKMmxtSjEwdVky
RnNiQ2gwYUdsekxDQmpiMjVrYVhScGIyNWhiQ3dnZTJadU9pQnZjSFJwYjI1ekxtbHVkbVZ5YzJV
c0lHbHVkbVZ5YzJVNklHOXdkR2x2Ym5NdVptNHNJR2hoYzJnNklHOXdkR2x2Ym5NdWFHRnphSDBw
TzF4dUlDQjlLVHRjYm4xY2JpSmRmUT09Cis7CitkZWZpbmUoJ2hhbmRsZWJhcnMvaGVscGVycy9s
b2cnLFsnZXhwb3J0cycsICdtb2R1bGUnXSwgZnVuY3Rpb24gKGV4cG9ydHMsIG1vZHVsZSkgewor
ICAndXNlIHN0cmljdCc7CisKKyAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaW5zdGFuY2Up
IHsKKyAgICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcignbG9nJywgZnVuY3Rpb24gKCkgLyogbWVz
c2FnZSwgb3B0aW9ucyAqL3sKKyAgICAgIHZhciBhcmdzID0gW3VuZGVmaW5lZF0sCisgICAgICAg
ICAgb3B0aW9ucyA9IGFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoIC0gMV07CisgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGggLSAxOyBpKyspIHsKKyAgICAgICAgYXJn
cy5wdXNoKGFyZ3VtZW50c1tpXSk7CisgICAgICB9CisKKyAgICAgIHZhciBsZXZlbCA9IDE7Cisg
ICAgICBpZiAob3B0aW9ucy5oYXNoLmxldmVsICE9IG51bGwpIHsKKyAgICAgICAgbGV2ZWwgPSBv
cHRpb25zLmhhc2gubGV2ZWw7CisgICAgICB9IGVsc2UgaWYgKG9wdGlvbnMuZGF0YSAmJiBvcHRp
b25zLmRhdGEubGV2ZWwgIT0gbnVsbCkgeworICAgICAgICBsZXZlbCA9IG9wdGlvbnMuZGF0YS5s
ZXZlbDsKKyAgICAgIH0KKyAgICAgIGFyZ3NbMF0gPSBsZXZlbDsKKworICAgICAgaW5zdGFuY2Uu
bG9nLmFwcGx5KGluc3RhbmNlLCBhcmdzKTsKKyAgICB9KTsKKyAgfTsKK30pOworLy8jIHNvdXJj
ZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96
TENKemIzVnlZMlZ6SWpwYklpNHVMeTR1THk0dUx5NHVMMnhwWWk5b1lXNWtiR1ZpWVhKekwyaGxi
SEJsY25NdmJHOW5MbXB6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3T3p0dFFr
RkJaU3hWUVVGVExGRkJRVkVzUlVGQlJUdEJRVU5vUXl4WlFVRlJMRU5CUVVNc1kwRkJZeXhEUVVG
RExFdEJRVXNzUlVGQlJTeHJRMEZCYVVNN1FVRkRPVVFzVlVGQlNTeEpRVUZKTEVkQlFVY3NRMEZC
UXl4VFFVRlRMRU5CUVVNN1ZVRkRiRUlzVDBGQlR5eEhRVUZITEZOQlFWTXNRMEZCUXl4VFFVRlRM
RU5CUVVNc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETzBGQlF6bERMRmRCUVVzc1NV
RkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4VFFVRlRMRU5CUVVN
c1RVRkJUU3hIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlR0QlFVTTNReXha
UVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJR
eXhEUVVGRE8wOUJRM3BDT3p0QlFVVkVMRlZCUVVrc1MwRkJTeXhIUVVGSExFTkJRVU1zUTBGQlF6
dEJRVU5rTEZWQlFVa3NUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFbEJRVWtzU1VG
QlNTeEZRVUZGTzBGQlF6bENMR0ZCUVVzc1IwRkJSeXhQUVVGUExFTkJRVU1zU1VGQlNTeERRVUZE
TEV0QlFVc3NRMEZCUXp0UFFVTTFRaXhOUVVGTkxFbEJRVWtzVDBGQlR5eERRVUZETEVsQlFVa3NT
VUZCU1N4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzU1VGQlNTeEpRVUZKTEVWQlFV
VTdRVUZEY2tRc1lVRkJTeXhIUVVGSExFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4
RFFVRkRPMDlCUXpWQ08wRkJRMFFzVlVGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRXRC
UVVzc1EwRkJRenM3UVVGRmFFSXNZMEZCVVN4RFFVRkRMRWRCUVVjc1RVRkJRU3hEUVVGYUxGRkJR
VkVzUlVGQlV5eEpRVUZKTEVOQlFVTXNRMEZCUXp0TFFVTjRRaXhEUVVGRExFTkJRVU03UjBGRFNp
SXNJbVpwYkdVaU9pSnNiMmN1YW5NaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SmxlSEJ2Y25R
Z1pHVm1ZWFZzZENCbWRXNWpkR2x2YmlocGJuTjBZVzVqWlNrZ2UxeHVJQ0JwYm5OMFlXNWpaUzV5
WldkcGMzUmxja2hsYkhCbGNpZ25iRzluSnl3Z1puVnVZM1JwYjI0b0x5b2diV1Z6YzJGblpTd2di
M0IwYVc5dWN5QXFMeWtnZTF4dUlDQWdJR3hsZENCaGNtZHpJRDBnVzNWdVpHVm1hVzVsWkYwc1hH
NGdJQ0FnSUNBZ0lHOXdkR2x2Ym5NZ1BTQmhjbWQxYldWdWRITmJZWEpuZFcxbGJuUnpMbXhsYm1k
MGFDQXRJREZkTzF4dUlDQWdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJRHdnWVhKbmRXMWxiblJ6
TG14bGJtZDBhQ0F0SURFN0lHa3JLeWtnZTF4dUlDQWdJQ0FnWVhKbmN5NXdkWE5vS0dGeVozVnRa
VzUwYzF0cFhTazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2JHVjBJR3hsZG1Wc0lEMGdNVHRjYmlBZ0lD
QnBaaUFvYjNCMGFXOXVjeTVvWVhOb0xteGxkbVZzSUNFOUlHNTFiR3dwSUh0Y2JpQWdJQ0FnSUd4
bGRtVnNJRDBnYjNCMGFXOXVjeTVvWVhOb0xteGxkbVZzTzF4dUlDQWdJSDBnWld4elpTQnBaaUFv
YjNCMGFXOXVjeTVrWVhSaElDWW1JRzl3ZEdsdmJuTXVaR0YwWVM1c1pYWmxiQ0FoUFNCdWRXeHNL
U0I3WEc0Z0lDQWdJQ0JzWlhabGJDQTlJRzl3ZEdsdmJuTXVaR0YwWVM1c1pYWmxiRHRjYmlBZ0lD
QjlYRzRnSUNBZ1lYSm5jMXN3WFNBOUlHeGxkbVZzTzF4dVhHNGdJQ0FnYVc1emRHRnVZMlV1Ykc5
bktDNHVMaUJoY21kektUdGNiaUFnZlNrN1hHNTlYRzRpWFgwPQorOworZGVmaW5lKCdoYW5kbGVi
YXJzL2hlbHBlcnMvbG9va3VwJyxbJ2V4cG9ydHMnLCAnbW9kdWxlJ10sIGZ1bmN0aW9uIChleHBv
cnRzLCBtb2R1bGUpIHsKKyAgJ3VzZSBzdHJpY3QnOworCisgIG1vZHVsZS5leHBvcnRzID0gZnVu
Y3Rpb24gKGluc3RhbmNlKSB7CisgICAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2xvb2t1cCcs
IGZ1bmN0aW9uIChvYmosIGZpZWxkKSB7CisgICAgICByZXR1cm4gb2JqICYmIG9ialtmaWVsZF07
CisgICAgfSk7CisgIH07Cit9KTsKKy8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRp
b24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUx5
NHVMeTR1TDJ4cFlpOW9ZVzVrYkdWaVlYSnpMMmhsYkhCbGNuTXZiRzl2YTNWd0xtcHpJbDBzSW01
aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSTdPenR0UWtGQlpTeFZRVUZUTEZGQlFWRXNSVUZC
UlR0QlFVTm9ReXhaUVVGUkxFTkJRVU1zWTBGQll5eERRVUZETEZGQlFWRXNSVUZCUlN4VlFVRlRM
RWRCUVVjc1JVRkJSU3hMUVVGTExFVkJRVVU3UVVGRGNrUXNZVUZCVHl4SFFVRkhMRWxCUVVrc1Iw
RkJSeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzB0QlF6RkNMRU5CUVVNc1EwRkJRenRIUVVO
S0lpd2labWxzWlNJNklteHZiMnQxY0M1cWN5SXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbVY0
Y0c5eWRDQmtaV1poZFd4MElHWjFibU4wYVc5dUtHbHVjM1JoYm1ObEtTQjdYRzRnSUdsdWMzUmhi
bU5sTG5KbFoybHpkR1Z5U0dWc2NHVnlLQ2RzYjI5cmRYQW5MQ0JtZFc1amRHbHZiaWh2WW1vc0lH
WnBaV3hrS1NCN1hHNGdJQ0FnY21WMGRYSnVJRzlpYWlBbUppQnZZbXBiWm1sbGJHUmRPMXh1SUNC
OUtUdGNibjFjYmlKZGZRPT0KKzsKK2RlZmluZSgnaGFuZGxlYmFycy9oZWxwZXJzL3dpdGgnLFsn
ZXhwb3J0cycsICdtb2R1bGUnLCAnLi4vdXRpbHMnXSwgZnVuY3Rpb24gKGV4cG9ydHMsIG1vZHVs
ZSwgX3V0aWxzKSB7CisgICd1c2Ugc3RyaWN0JzsKKworICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0
aW9uIChpbnN0YW5jZSkgeworICAgIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCd3aXRoJywgZnVu
Y3Rpb24gKGNvbnRleHQsIG9wdGlvbnMpIHsKKyAgICAgIGlmIChfdXRpbHMuaXNGdW5jdGlvbihj
b250ZXh0KSkgeworICAgICAgICBjb250ZXh0ID0gY29udGV4dC5jYWxsKHRoaXMpOworICAgICAg
fQorCisgICAgICB2YXIgZm4gPSBvcHRpb25zLmZuOworCisgICAgICBpZiAoIV91dGlscy5pc0Vt
cHR5KGNvbnRleHQpKSB7CisgICAgICAgIHZhciBkYXRhID0gb3B0aW9ucy5kYXRhOworICAgICAg
ICBpZiAob3B0aW9ucy5kYXRhICYmIG9wdGlvbnMuaWRzKSB7CisgICAgICAgICAgZGF0YSA9IF91
dGlscy5jcmVhdGVGcmFtZShvcHRpb25zLmRhdGEpOworICAgICAgICAgIGRhdGEuY29udGV4dFBh
dGggPSBfdXRpbHMuYXBwZW5kQ29udGV4dFBhdGgob3B0aW9ucy5kYXRhLmNvbnRleHRQYXRoLCBv
cHRpb25zLmlkc1swXSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZm4oY29udGV4dCwg
eworICAgICAgICAgIGRhdGE6IGRhdGEsCisgICAgICAgICAgYmxvY2tQYXJhbXM6IF91dGlscy5i
bG9ja1BhcmFtcyhbY29udGV4dF0sIFtkYXRhICYmIGRhdGEuY29udGV4dFBhdGhdKQorICAgICAg
ICB9KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiBvcHRpb25zLmludmVyc2UodGhp
cyk7CisgICAgICB9CisgICAgfSk7CisgIH07Cit9KTsKKy8vIyBzb3VyY2VNYXBwaW5nVVJMPWRh
dGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklq
cGJJaTR1THk0dUx5NHVMeTR1TDJ4cFlpOW9ZVzVrYkdWaVlYSnpMMmhsYkhCbGNuTXZkMmwwYUM1
cWN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU96czdiVUpCUldVc1ZVRkJVeXhS
UVVGUkxFVkJRVVU3UVVGRGFFTXNXVUZCVVN4RFFVRkRMR05CUVdNc1EwRkJReXhOUVVGTkxFVkJR
VVVzVlVGQlV5eFBRVUZQTEVWQlFVVXNUMEZCVHl4RlFVRkZPMEZCUTNwRUxGVkJRVWtzVDBGS2Mw
UXNWVUZCVlN4RFFVbHlSQ3hQUVVGUExFTkJRVU1zUlVGQlJUdEJRVUZGTEdWQlFVOHNSMEZCUnl4
UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzA5QlFVVTdPMEZC
UlRGRUxGVkJRVWtzUlVGQlJTeEhRVUZITEU5QlFVOHNRMEZCUXl4RlFVRkZMRU5CUVVNN08wRkJS
WEJDTEZWQlFVa3NRMEZCUXl4UFFWSTBReXhQUVVGUExFTkJVVE5ETEU5QlFVOHNRMEZCUXl4RlFV
RkZPMEZCUTNKQ0xGbEJRVWtzU1VGQlNTeEhRVUZITEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVN
N1FVRkRlRUlzV1VGQlNTeFBRVUZQTEVOQlFVTXNTVUZCU1N4SlFVRkpMRTlCUVU4c1EwRkJReXhI
UVVGSExFVkJRVVU3UVVGREwwSXNZMEZCU1N4SFFVRkhMRTlCV0hsQ0xGZEJRVmNzUTBGWGVFSXNU
MEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8wRkJRMnBETEdOQlFVa3NRMEZCUXl4WFFV
RlhMRWRCUVVjc1QwRmFia0lzYVVKQlFXbENMRU5CV1c5Q0xFOUJRVThzUTBGQlF5eEpRVUZKTEVO
QlFVTXNWMEZCVnl4RlFVRkZMRTlCUVU4c1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZE
TEVOQlFVTXNRMEZCUXp0VFFVTm9SanM3UVVGRlJDeGxRVUZQTEVWQlFVVXNRMEZCUXl4UFFVRlBM
RVZCUVVVN1FVRkRha0lzWTBGQlNTeEZRVUZGTEVsQlFVazdRVUZEVml4eFFrRkJWeXhGUVVGRkxF
OUJha0pOTEZkQlFWY3NRMEZwUWt3c1EwRkJReXhQUVVGUExFTkJRVU1zUlVGQlJTeERRVUZETEVs
QlFVa3NTVUZCU1N4SlFVRkpMRU5CUVVNc1YwRkJWeXhEUVVGRExFTkJRVU03VTBGRGFFVXNRMEZC
UXl4RFFVRkRPMDlCUTBvc1RVRkJUVHRCUVVOTUxHVkJRVThzVDBGQlR5eERRVUZETEU5QlFVOHNR
MEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRQUVVNNVFqdExRVU5HTEVOQlFVTXNRMEZCUXp0SFFV
TktJaXdpWm1sc1pTSTZJbmRwZEdndWFuTWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUpwYlhC
dmNuUWdlMkZ3Y0dWdVpFTnZiblJsZUhSUVlYUm9MQ0JpYkc5amExQmhjbUZ0Y3l3Z1kzSmxZWFJs
Um5KaGJXVXNJR2x6Ulcxd2RIa3NJR2x6Um5WdVkzUnBiMjU5SUdaeWIyMGdKeTR1TDNWMGFXeHpK
enRjYmx4dVpYaHdiM0owSUdSbFptRjFiSFFnWm5WdVkzUnBiMjRvYVc1emRHRnVZMlVwSUh0Y2Jp
QWdhVzV6ZEdGdVkyVXVjbVZuYVhOMFpYSklaV3h3WlhJb0ozZHBkR2duTENCbWRXNWpkR2x2Ymlo
amIyNTBaWGgwTENCdmNIUnBiMjV6S1NCN1hHNGdJQ0FnYVdZZ0tHbHpSblZ1WTNScGIyNG9ZMjl1
ZEdWNGRDa3BJSHNnWTI5dWRHVjRkQ0E5SUdOdmJuUmxlSFF1WTJGc2JDaDBhR2x6S1RzZ2ZWeHVY
RzRnSUNBZ2JHVjBJR1p1SUQwZ2IzQjBhVzl1Y3k1bWJqdGNibHh1SUNBZ0lHbG1JQ2doYVhORmJY
QjBlU2hqYjI1MFpYaDBLU2tnZTF4dUlDQWdJQ0FnYkdWMElHUmhkR0VnUFNCdmNIUnBiMjV6TG1S
aGRHRTdYRzRnSUNBZ0lDQnBaaUFvYjNCMGFXOXVjeTVrWVhSaElDWW1JRzl3ZEdsdmJuTXVhV1J6
S1NCN1hHNGdJQ0FnSUNBZ0lHUmhkR0VnUFNCamNtVmhkR1ZHY21GdFpTaHZjSFJwYjI1ekxtUmhk
R0VwTzF4dUlDQWdJQ0FnSUNCa1lYUmhMbU52Ym5SbGVIUlFZWFJvSUQwZ1lYQndaVzVrUTI5dWRH
VjRkRkJoZEdnb2IzQjBhVzl1Y3k1a1lYUmhMbU52Ym5SbGVIUlFZWFJvTENCdmNIUnBiMjV6TG1s
a2Mxc3dYU2s3WEc0Z0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUhKbGRIVnliaUJtYmloamIyNTBaWGgw
TENCN1hHNGdJQ0FnSUNBZ0lHUmhkR0U2SUdSaGRHRXNYRzRnSUNBZ0lDQWdJR0pzYjJOclVHRnlZ
VzF6T2lCaWJHOWphMUJoY21GdGN5aGJZMjl1ZEdWNGRGMHNJRnRrWVhSaElDWW1JR1JoZEdFdVky
OXVkR1Y0ZEZCaGRHaGRLVnh1SUNBZ0lDQWdmU2s3WEc0Z0lDQWdmU0JsYkhObElIdGNiaUFnSUNB
Z0lISmxkSFZ5YmlCdmNIUnBiMjV6TG1sdWRtVnljMlVvZEdocGN5azdYRzRnSUNBZ2ZWeHVJQ0I5
S1R0Y2JuMWNiaUpkZlE9PQorOworZGVmaW5lKCdoYW5kbGViYXJzL2hlbHBlcnMnLFsnZXhwb3J0
cycsICcuL2hlbHBlcnMvYmxvY2staGVscGVyLW1pc3NpbmcnLCAnLi9oZWxwZXJzL2VhY2gnLCAn
Li9oZWxwZXJzL2hlbHBlci1taXNzaW5nJywgJy4vaGVscGVycy9pZicsICcuL2hlbHBlcnMvbG9n
JywgJy4vaGVscGVycy9sb29rdXAnLCAnLi9oZWxwZXJzL3dpdGgnXSwgZnVuY3Rpb24gKGV4cG9y
dHMsIF9oZWxwZXJzQmxvY2tIZWxwZXJNaXNzaW5nLCBfaGVscGVyc0VhY2gsIF9oZWxwZXJzSGVs
cGVyTWlzc2luZywgX2hlbHBlcnNJZiwgX2hlbHBlcnNMb2csIF9oZWxwZXJzTG9va3VwLCBfaGVs
cGVyc1dpdGgpIHsKKyAgJ3VzZSBzdHJpY3QnOworCisgIGV4cG9ydHMuX19lc01vZHVsZSA9IHRy
dWU7CisgIGV4cG9ydHMucmVnaXN0ZXJEZWZhdWx0SGVscGVycyA9IHJlZ2lzdGVyRGVmYXVsdEhl
bHBlcnM7CisgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0CisKKyAgZnVuY3Rpb24gX2ludGVyb3BS
ZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6
IHsgJ2RlZmF1bHQnOiBvYmogfTsgfQorCisgIHZhciBfcmVnaXN0ZXJCbG9ja0hlbHBlck1pc3Np
bmcgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9oZWxwZXJzQmxvY2tIZWxwZXJNaXNzaW5nKTsK
KworICB2YXIgX3JlZ2lzdGVyRWFjaCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2hlbHBlcnNF
YWNoKTsKKworICB2YXIgX3JlZ2lzdGVySGVscGVyTWlzc2luZyA9IF9pbnRlcm9wUmVxdWlyZURl
ZmF1bHQoX2hlbHBlcnNIZWxwZXJNaXNzaW5nKTsKKworICB2YXIgX3JlZ2lzdGVySWYgPSBfaW50
ZXJvcFJlcXVpcmVEZWZhdWx0KF9oZWxwZXJzSWYpOworCisgIHZhciBfcmVnaXN0ZXJMb2cgPSBf
aW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9oZWxwZXJzTG9nKTsKKworICB2YXIgX3JlZ2lzdGVyTG9v
a3VwID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaGVscGVyc0xvb2t1cCk7CisKKyAgdmFyIF9y
ZWdpc3RlcldpdGggPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9oZWxwZXJzV2l0aCk7CisKKyAg
ZnVuY3Rpb24gcmVnaXN0ZXJEZWZhdWx0SGVscGVycyhpbnN0YW5jZSkgeworICAgIF9yZWdpc3Rl
ckJsb2NrSGVscGVyTWlzc2luZ1snZGVmYXVsdCddKGluc3RhbmNlKTsKKyAgICBfcmVnaXN0ZXJF
YWNoWydkZWZhdWx0J10oaW5zdGFuY2UpOworICAgIF9yZWdpc3RlckhlbHBlck1pc3NpbmdbJ2Rl
ZmF1bHQnXShpbnN0YW5jZSk7CisgICAgX3JlZ2lzdGVySWZbJ2RlZmF1bHQnXShpbnN0YW5jZSk7
CisgICAgX3JlZ2lzdGVyTG9nWydkZWZhdWx0J10oaW5zdGFuY2UpOworICAgIF9yZWdpc3Rlckxv
b2t1cFsnZGVmYXVsdCddKGluc3RhbmNlKTsKKyAgICBfcmVnaXN0ZXJXaXRoWydkZWZhdWx0J10o
aW5zdGFuY2UpOworICB9Cit9KTsKKy8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRp
b24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUx5
NHVMMnhwWWk5b1lXNWtiR1ZpWVhKekwyaGxiSEJsY25NdWFuTWlYU3dpYm1GdFpYTWlPbHRkTENK
dFlYQndhVzVuY3lJNklqczdPenM3T3pzN096czdPenM3T3pzN096czdPenM3UVVGUlR5eFhRVUZU
TEhOQ1FVRnpRaXhEUVVGRExGRkJRVkVzUlVGQlJUdEJRVU12UXl3eVEwRkJNa0lzVVVGQlVTeERR
VUZETEVOQlFVTTdRVUZEY2tNc05rSkJRV0VzVVVGQlVTeERRVUZETEVOQlFVTTdRVUZEZGtJc2Mw
TkJRWE5DTEZGQlFWRXNRMEZCUXl4RFFVRkRPMEZCUTJoRExESkNRVUZYTEZGQlFWRXNRMEZCUXl4
RFFVRkRPMEZCUTNKQ0xEUkNRVUZaTEZGQlFWRXNRMEZCUXl4RFFVRkRPMEZCUTNSQ0xDdENRVUZs
TEZGQlFWRXNRMEZCUXl4RFFVRkRPMEZCUTNwQ0xEWkNRVUZoTEZGQlFWRXNRMEZCUXl4RFFVRkRP
MGRCUTNoQ0lpd2labWxzWlNJNkltaGxiSEJsY25NdWFuTWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRD
STZXeUpwYlhCdmNuUWdjbVZuYVhOMFpYSkNiRzlqYTBobGJIQmxjazFwYzNOcGJtY2dabkp2YlNB
bkxpOW9aV3h3WlhKekwySnNiMk5yTFdobGJIQmxjaTF0YVhOemFXNW5KenRjYm1sdGNHOXlkQ0J5
WldkcGMzUmxja1ZoWTJnZ1puSnZiU0FuTGk5b1pXeHdaWEp6TDJWaFkyZ25PMXh1YVcxd2IzSjBJ
SEpsWjJsemRHVnlTR1ZzY0dWeVRXbHpjMmx1WnlCbWNtOXRJQ2N1TDJobGJIQmxjbk12YUdWc2NH
VnlMVzFwYzNOcGJtY25PMXh1YVcxd2IzSjBJSEpsWjJsemRHVnlTV1lnWm5KdmJTQW5MaTlvWld4
d1pYSnpMMmxtSnp0Y2JtbHRjRzl5ZENCeVpXZHBjM1JsY2t4dlp5Qm1jbTl0SUNjdUwyaGxiSEJs
Y25NdmJHOW5KenRjYm1sdGNHOXlkQ0J5WldkcGMzUmxja3h2YjJ0MWNDQm1jbTl0SUNjdUwyaGxi
SEJsY25NdmJHOXZhM1Z3Snp0Y2JtbHRjRzl5ZENCeVpXZHBjM1JsY2xkcGRHZ2dabkp2YlNBbkxp
OW9aV3h3WlhKekwzZHBkR2duTzF4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2NtVm5hWE4wWlhK
RVpXWmhkV3gwU0dWc2NHVnljeWhwYm5OMFlXNWpaU2tnZTF4dUlDQnlaV2RwYzNSbGNrSnNiMk5y
U0dWc2NHVnlUV2x6YzJsdVp5aHBibk4wWVc1alpTazdYRzRnSUhKbFoybHpkR1Z5UldGamFDaHBi
bk4wWVc1alpTazdYRzRnSUhKbFoybHpkR1Z5U0dWc2NHVnlUV2x6YzJsdVp5aHBibk4wWVc1alpT
azdYRzRnSUhKbFoybHpkR1Z5U1dZb2FXNXpkR0Z1WTJVcE8xeHVJQ0J5WldkcGMzUmxja3h2Wnlo
cGJuTjBZVzVqWlNrN1hHNGdJSEpsWjJsemRHVnlURzl2YTNWd0tHbHVjM1JoYm1ObEtUdGNiaUFn
Y21WbmFYTjBaWEpYYVhSb0tHbHVjM1JoYm1ObEtUdGNibjFjYmlKZGZRPT0KKzsKK2RlZmluZSgn
aGFuZGxlYmFycy9kZWNvcmF0b3JzL2lubGluZScsWydleHBvcnRzJywgJ21vZHVsZScsICcuLi91
dGlscyddLCBmdW5jdGlvbiAoZXhwb3J0cywgbW9kdWxlLCBfdXRpbHMpIHsKKyAgJ3VzZSBzdHJp
Y3QnOworCisgIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGluc3RhbmNlKSB7CisgICAgaW5z
dGFuY2UucmVnaXN0ZXJEZWNvcmF0b3IoJ2lubGluZScsIGZ1bmN0aW9uIChmbiwgcHJvcHMsIGNv
bnRhaW5lciwgb3B0aW9ucykgeworICAgICAgdmFyIHJldCA9IGZuOworICAgICAgaWYgKCFwcm9w
cy5wYXJ0aWFscykgeworICAgICAgICBwcm9wcy5wYXJ0aWFscyA9IHt9OworICAgICAgICByZXQg
PSBmdW5jdGlvbiAoY29udGV4dCwgb3B0aW9ucykgeworICAgICAgICAgIC8vIENyZWF0ZSBhIG5l
dyBwYXJ0aWFscyBzdGFjayBmcmFtZSBwcmlvciB0byBleGVjLgorICAgICAgICAgIHZhciBvcmln
aW5hbCA9IGNvbnRhaW5lci5wYXJ0aWFsczsKKyAgICAgICAgICBjb250YWluZXIucGFydGlhbHMg
PSBfdXRpbHMuZXh0ZW5kKHt9LCBvcmlnaW5hbCwgcHJvcHMucGFydGlhbHMpOworICAgICAgICAg
IHZhciByZXQgPSBmbihjb250ZXh0LCBvcHRpb25zKTsKKyAgICAgICAgICBjb250YWluZXIucGFy
dGlhbHMgPSBvcmlnaW5hbDsKKyAgICAgICAgICByZXR1cm4gcmV0OworICAgICAgICB9OworICAg
ICAgfQorCisgICAgICBwcm9wcy5wYXJ0aWFsc1tvcHRpb25zLmFyZ3NbMF1dID0gb3B0aW9ucy5m
bjsKKworICAgICAgcmV0dXJuIHJldDsKKyAgICB9KTsKKyAgfTsKK30pOworLy8jIHNvdXJjZU1h
cHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENK
emIzVnlZMlZ6SWpwYklpNHVMeTR1THk0dUx5NHVMMnhwWWk5b1lXNWtiR1ZpWVhKekwyUmxZMjl5
WVhSdmNuTXZhVzVzYVc1bExtcHpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSTdP
enR0UWtGRlpTeFZRVUZUTEZGQlFWRXNSVUZCUlR0QlFVTm9ReXhaUVVGUkxFTkJRVU1zYVVKQlFX
bENMRU5CUVVNc1VVRkJVU3hGUVVGRkxGVkJRVk1zUlVGQlJTeEZRVUZGTEV0QlFVc3NSVUZCUlN4
VFFVRlRMRVZCUVVVc1QwRkJUeXhGUVVGRk8wRkJRek5GTEZWQlFVa3NSMEZCUnl4SFFVRkhMRVZC
UVVVc1EwRkJRenRCUVVOaUxGVkJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNVVUZCVVN4RlFVRkZP
MEZCUTI1Q0xHRkJRVXNzUTBGQlF5eFJRVUZSTEVkQlFVY3NSVUZCUlN4RFFVRkRPMEZCUTNCQ0xG
ZEJRVWNzUjBGQlJ5eFZRVUZUTEU5QlFVOHNSVUZCUlN4UFFVRlBMRVZCUVVVN08wRkJSUzlDTEdO
QlFVa3NVVUZCVVN4SFFVRkhMRk5CUVZNc1EwRkJReXhSUVVGUkxFTkJRVU03UVVGRGJFTXNiVUpC
UVZNc1EwRkJReXhSUVVGUkxFZEJRVWNzVDBGV2NrSXNUVUZCVFN4RFFWVnpRaXhGUVVGRkxFVkJR
VVVzVVVGQlVTeEZRVUZGTEV0QlFVc3NRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJRenRCUVVNeFJD
eGpRVUZKTEVkQlFVY3NSMEZCUnl4RlFVRkZMRU5CUVVNc1QwRkJUeXhGUVVGRkxFOUJRVThzUTBG
QlF5eERRVUZETzBGQlF5OUNMRzFDUVVGVExFTkJRVU1zVVVGQlVTeEhRVUZITEZGQlFWRXNRMEZC
UXp0QlFVTTVRaXhwUWtGQlR5eEhRVUZITEVOQlFVTTdVMEZEV2l4RFFVRkRPMDlCUTBnN08wRkJS
VVFzVjBGQlN5eERRVUZETEZGQlFWRXNRMEZCUXl4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExF
TkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NUMEZCVHl4RFFVRkRMRVZCUVVVc1EwRkJRenM3UVVG
Rk4wTXNZVUZCVHl4SFFVRkhMRU5CUVVNN1MwRkRXaXhEUVVGRExFTkJRVU03UjBGRFNpSXNJbVpw
YkdVaU9pSnBibXhwYm1VdWFuTWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUpwYlhCdmNuUWdl
MlY0ZEdWdVpIMGdabkp2YlNBbkxpNHZkWFJwYkhNbk8xeHVYRzVsZUhCdmNuUWdaR1ZtWVhWc2RD
Qm1kVzVqZEdsdmJpaHBibk4wWVc1alpTa2dlMXh1SUNCcGJuTjBZVzVqWlM1eVpXZHBjM1JsY2tS
bFkyOXlZWFJ2Y2lnbmFXNXNhVzVsSnl3Z1puVnVZM1JwYjI0b1ptNHNJSEJ5YjNCekxDQmpiMjUw
WVdsdVpYSXNJRzl3ZEdsdmJuTXBJSHRjYmlBZ0lDQnNaWFFnY21WMElEMGdabTQ3WEc0Z0lDQWdh
V1lnS0NGd2NtOXdjeTV3WVhKMGFXRnNjeWtnZTF4dUlDQWdJQ0FnY0hKdmNITXVjR0Z5ZEdsaGJI
TWdQU0I3ZlR0Y2JpQWdJQ0FnSUhKbGRDQTlJR1oxYm1OMGFXOXVLR052Ym5SbGVIUXNJRzl3ZEds
dmJuTXBJSHRjYmlBZ0lDQWdJQ0FnTHk4Z1EzSmxZWFJsSUdFZ2JtVjNJSEJoY25ScFlXeHpJSE4w
WVdOcklHWnlZVzFsSUhCeWFXOXlJSFJ2SUdWNFpXTXVYRzRnSUNBZ0lDQWdJR3hsZENCdmNtbG5h
VzVoYkNBOUlHTnZiblJoYVc1bGNpNXdZWEowYVdGc2N6dGNiaUFnSUNBZ0lDQWdZMjl1ZEdGcGJt
VnlMbkJoY25ScFlXeHpJRDBnWlhoMFpXNWtLSHQ5TENCdmNtbG5hVzVoYkN3Z2NISnZjSE11Y0dG
eWRHbGhiSE1wTzF4dUlDQWdJQ0FnSUNCc1pYUWdjbVYwSUQwZ1ptNG9ZMjl1ZEdWNGRDd2diM0Iw
YVc5dWN5azdYRzRnSUNBZ0lDQWdJR052Ym5SaGFXNWxjaTV3WVhKMGFXRnNjeUE5SUc5eWFXZHBi
bUZzTzF4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnY21WME8xeHVJQ0FnSUNBZ2ZUdGNiaUFnSUNCOVhH
NWNiaUFnSUNCd2NtOXdjeTV3WVhKMGFXRnNjMXR2Y0hScGIyNXpMbUZ5WjNOYk1GMWRJRDBnYjNC
MGFXOXVjeTVtYmp0Y2JseHVJQ0FnSUhKbGRIVnliaUJ5WlhRN1hHNGdJSDBwTzF4dWZWeHVJbDE5
Cis7CitkZWZpbmUoJ2hhbmRsZWJhcnMvZGVjb3JhdG9ycycsWydleHBvcnRzJywgJy4vZGVjb3Jh
dG9ycy9pbmxpbmUnXSwgZnVuY3Rpb24gKGV4cG9ydHMsIF9kZWNvcmF0b3JzSW5saW5lKSB7Cisg
ICd1c2Ugc3RyaWN0JzsKKworICBleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOworICBleHBvcnRz
LnJlZ2lzdGVyRGVmYXVsdERlY29yYXRvcnMgPSByZWdpc3RlckRlZmF1bHREZWNvcmF0b3JzOwor
ICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dAorCisgIGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURl
ZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZh
dWx0Jzogb2JqIH07IH0KKworICB2YXIgX3JlZ2lzdGVySW5saW5lID0gX2ludGVyb3BSZXF1aXJl
RGVmYXVsdChfZGVjb3JhdG9yc0lubGluZSk7CisKKyAgZnVuY3Rpb24gcmVnaXN0ZXJEZWZhdWx0
RGVjb3JhdG9ycyhpbnN0YW5jZSkgeworICAgIF9yZWdpc3RlcklubGluZVsnZGVmYXVsdCddKGlu
c3RhbmNlKTsKKyAgfQorfSk7CisvLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9u
L2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMeTR1
TDJ4cFlpOW9ZVzVrYkdWaVlYSnpMMlJsWTI5eVlYUnZjbk11YW5NaVhTd2libUZ0WlhNaU9sdGRM
Q0p0WVhCd2FXNW5jeUk2SWpzN096czdPenM3T3pzN1FVRkZUeXhYUVVGVExIbENRVUY1UWl4RFFV
RkRMRkZCUVZFc1JVRkJSVHRCUVVOc1JDd3JRa0ZCWlN4UlFVRlJMRU5CUVVNc1EwRkJRenRIUVVN
eFFpSXNJbVpwYkdVaU9pSmtaV052Y21GMGIzSnpMbXB6SWl3aWMyOTFjbU5sYzBOdmJuUmxiblFp
T2xzaWFXMXdiM0owSUhKbFoybHpkR1Z5U1c1c2FXNWxJR1p5YjIwZ0p5NHZaR1ZqYjNKaGRHOXlj
eTlwYm14cGJtVW5PMXh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnY21WbmFYTjBaWEpFWldaaGRX
eDBSR1ZqYjNKaGRHOXljeWhwYm5OMFlXNWpaU2tnZTF4dUlDQnlaV2RwYzNSbGNrbHViR2x1WlNo
cGJuTjBZVzVqWlNrN1hHNTlYRzVjYmlKZGZRPT0KKzsKK2RlZmluZSgnaGFuZGxlYmFycy9sb2dn
ZXInLFsnZXhwb3J0cycsICdtb2R1bGUnLCAnLi91dGlscyddLCBmdW5jdGlvbiAoZXhwb3J0cywg
bW9kdWxlLCBfdXRpbHMpIHsKKyAgJ3VzZSBzdHJpY3QnOworCisgIHZhciBsb2dnZXIgPSB7Cisg
ICAgbWV0aG9kTWFwOiBbJ2RlYnVnJywgJ2luZm8nLCAnd2FybicsICdlcnJvciddLAorICAgIGxl
dmVsOiAnaW5mbycsCisKKyAgICAvLyBNYXBzIGEgZ2l2ZW4gbGV2ZWwgdmFsdWUgdG8gdGhlIGBt
ZXRob2RNYXBgIGluZGV4ZXMgYWJvdmUuCisgICAgbG9va3VwTGV2ZWw6IGZ1bmN0aW9uIGxvb2t1
cExldmVsKGxldmVsKSB7CisgICAgICBpZiAodHlwZW9mIGxldmVsID09PSAnc3RyaW5nJykgewor
ICAgICAgICB2YXIgbGV2ZWxNYXAgPSBfdXRpbHMuaW5kZXhPZihsb2dnZXIubWV0aG9kTWFwLCBs
ZXZlbC50b0xvd2VyQ2FzZSgpKTsKKyAgICAgICAgaWYgKGxldmVsTWFwID49IDApIHsKKyAgICAg
ICAgICBsZXZlbCA9IGxldmVsTWFwOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIGxldmVs
ID0gcGFyc2VJbnQobGV2ZWwsIDEwKTsKKyAgICAgICAgfQorICAgICAgfQorCisgICAgICByZXR1
cm4gbGV2ZWw7CisgICAgfSwKKworICAgIC8vIENhbiBiZSBvdmVycmlkZGVuIGluIHRoZSBob3N0
IGVudmlyb25tZW50CisgICAgbG9nOiBmdW5jdGlvbiBsb2cobGV2ZWwpIHsKKyAgICAgIGxldmVs
ID0gbG9nZ2VyLmxvb2t1cExldmVsKGxldmVsKTsKKworICAgICAgaWYgKHR5cGVvZiBjb25zb2xl
ICE9PSAndW5kZWZpbmVkJyAmJiBsb2dnZXIubG9va3VwTGV2ZWwobG9nZ2VyLmxldmVsKSA8PSBs
ZXZlbCkgeworICAgICAgICB2YXIgbWV0aG9kID0gbG9nZ2VyLm1ldGhvZE1hcFtsZXZlbF07Cisg
ICAgICAgIGlmICghY29uc29sZVttZXRob2RdKSB7CisgICAgICAgICAgLy8gZXNsaW50LWRpc2Fi
bGUtbGluZSBuby1jb25zb2xlCisgICAgICAgICAgbWV0aG9kID0gJ2xvZyc7CisgICAgICAgIH0K
KworICAgICAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgbWVzc2FnZSA9IEFy
cmF5KF9sZW4gPiAxID8gX2xlbiAtIDEgOiAwKSwgX2tleSA9IDE7IF9rZXkgPCBfbGVuOyBfa2V5
KyspIHsKKyAgICAgICAgICBtZXNzYWdlW19rZXkgLSAxXSA9IGFyZ3VtZW50c1tfa2V5XTsKKyAg
ICAgICAgfQorCisgICAgICAgIGNvbnNvbGVbbWV0aG9kXS5hcHBseShjb25zb2xlLCBtZXNzYWdl
KTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlCisgICAgICB9CisgICAgfQorICB9
OworCisgIG1vZHVsZS5leHBvcnRzID0gbG9nZ2VyOworfSk7CisvLyMgc291cmNlTWFwcGluZ1VS
TD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVky
VnpJanBiSWk0dUx5NHVMeTR1TDJ4cFlpOW9ZVzVrYkdWaVlYSnpMMnh2WjJkbGNpNXFjeUpkTENK
dVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPenM3UVVGRlFTeE5RVUZKTEUxQlFVMHNSMEZC
Unp0QlFVTllMR0ZCUVZNc1JVRkJSU3hEUVVGRExFOUJRVThzUlVGQlJTeE5RVUZOTEVWQlFVVXNU
VUZCVFN4RlFVRkZMRTlCUVU4c1EwRkJRenRCUVVNM1F5eFRRVUZMTEVWQlFVVXNUVUZCVFRzN08w
RkJSMklzWlVGQlZ5eEZRVUZGTEhGQ1FVRlRMRXRCUVVzc1JVRkJSVHRCUVVNelFpeFZRVUZKTEU5
QlFVOHNTMEZCU3l4TFFVRkxMRkZCUVZFc1JVRkJSVHRCUVVNM1FpeFpRVUZKTEZGQlFWRXNSMEZC
Unl4UFFWUmlMRTlCUVU4c1EwRlRZeXhOUVVGTkxFTkJRVU1zVTBGQlV5eEZRVUZGTEV0QlFVc3NR
MEZCUXl4WFFVRlhMRVZCUVVVc1EwRkJReXhEUVVGRE8wRkJRemxFTEZsQlFVa3NVVUZCVVN4SlFV
RkpMRU5CUVVNc1JVRkJSVHRCUVVOcVFpeGxRVUZMTEVkQlFVY3NVVUZCVVN4RFFVRkRPMU5CUTJ4
Q0xFMUJRVTA3UVVGRFRDeGxRVUZMTEVkQlFVY3NVVUZCVVN4RFFVRkRMRXRCUVVzc1JVRkJSU3hG
UVVGRkxFTkJRVU1zUTBGQlF6dFRRVU0zUWp0UFFVTkdPenRCUVVWRUxHRkJRVThzUzBGQlN5eERR
VUZETzB0QlEyUTdPenRCUVVkRUxFOUJRVWNzUlVGQlJTeGhRVUZUTEV0QlFVc3NSVUZCWXp0QlFV
TXZRaXhYUVVGTExFZEJRVWNzVFVGQlRTeERRVUZETEZkQlFWY3NRMEZCUXl4TFFVRkxMRU5CUVVN
c1EwRkJRenM3UVVGRmJFTXNWVUZCU1N4UFFVRlBMRTlCUVU4c1MwRkJTeXhYUVVGWExFbEJRVWtz
VFVGQlRTeERRVUZETEZkQlFWY3NRMEZCUXl4TlFVRk5MRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJR
VWtzUzBGQlN5eEZRVUZGTzBGQlF5OUZMRmxCUVVrc1RVRkJUU3hIUVVGSExFMUJRVTBzUTBGQlF5
eFRRVUZUTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1FVRkRja01zV1VGQlNTeERRVUZETEU5
QlFVOHNRMEZCUXl4TlFVRk5MRU5CUVVNc1JVRkJSVHM3UVVGRGNFSXNaMEpCUVUwc1IwRkJSeXhM
UVVGTExFTkJRVU03VTBGRGFFSTdPekJEUVZCdFFpeFBRVUZQTzBGQlFWQXNhVUpCUVU4N096dEJR
VkV6UWl4bFFVRlBMRU5CUVVNc1RVRkJUU3hQUVVGRExFTkJRV1lzVDBGQlR5eEZRVUZaTEU5QlFV
OHNRMEZCUXl4RFFVRkRPMDlCUXpkQ08wdEJRMFk3UjBGRFJpeERRVUZET3p0dFFrRkZZU3hOUVVG
Tklpd2labWxzWlNJNklteHZaMmRsY2k1cWN5SXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0
Y0c5eWRDQjdhVzVrWlhoUFpuMGdabkp2YlNBbkxpOTFkR2xzY3ljN1hHNWNibXhsZENCc2IyZG5a
WElnUFNCN1hHNGdJRzFsZEdodlpFMWhjRG9nV3lka1pXSjFaeWNzSUNkcGJtWnZKeXdnSjNkaGNt
NG5MQ0FuWlhKeWIzSW5YU3hjYmlBZ2JHVjJaV3c2SUNkcGJtWnZKeXhjYmx4dUlDQXZMeUJOWVhC
eklHRWdaMmwyWlc0Z2JHVjJaV3dnZG1Gc2RXVWdkRzhnZEdobElHQnRaWFJvYjJSTllYQmdJR2x1
WkdWNFpYTWdZV0p2ZG1VdVhHNGdJR3h2YjJ0MWNFeGxkbVZzT2lCbWRXNWpkR2x2Ymloc1pYWmxi
Q2tnZTF4dUlDQWdJR2xtSUNoMGVYQmxiMllnYkdWMlpXd2dQVDA5SUNkemRISnBibWNuS1NCN1hH
NGdJQ0FnSUNCc1pYUWdiR1YyWld4TllYQWdQU0JwYm1SbGVFOW1LR3h2WjJkbGNpNXRaWFJvYjJS
TllYQXNJR3hsZG1Wc0xuUnZURzkzWlhKRFlYTmxLQ2twTzF4dUlDQWdJQ0FnYVdZZ0tHeGxkbVZz
VFdGd0lENDlJREFwSUh0Y2JpQWdJQ0FnSUNBZ2JHVjJaV3dnUFNCc1pYWmxiRTFoY0R0Y2JpQWdJ
Q0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUd4bGRtVnNJRDBnY0dGeWMyVkpiblFvYkdWMlpX
d3NJREV3S1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc1Y2JpQWdJQ0J5WlhSMWNtNGdiR1YyWld3
N1hHNGdJSDBzWEc1Y2JpQWdMeThnUTJGdUlHSmxJRzkyWlhKeWFXUmtaVzRnYVc0Z2RHaGxJR2h2
YzNRZ1pXNTJhWEp2Ym0xbGJuUmNiaUFnYkc5bk9pQm1kVzVqZEdsdmJpaHNaWFpsYkN3Z0xpNHVi
V1Z6YzJGblpTa2dlMXh1SUNBZ0lHeGxkbVZzSUQwZ2JHOW5aMlZ5TG14dmIydDFjRXhsZG1Wc0tH
eGxkbVZzS1R0Y2JseHVJQ0FnSUdsbUlDaDBlWEJsYjJZZ1kyOXVjMjlzWlNBaFBUMGdKM1Z1WkdW
bWFXNWxaQ2NnSmlZZ2JHOW5aMlZ5TG14dmIydDFjRXhsZG1Wc0tHeHZaMmRsY2k1c1pYWmxiQ2tn
UEQwZ2JHVjJaV3dwSUh0Y2JpQWdJQ0FnSUd4bGRDQnRaWFJvYjJRZ1BTQnNiMmRuWlhJdWJXVjBh
RzlrVFdGd1cyeGxkbVZzWFR0Y2JpQWdJQ0FnSUdsbUlDZ2hZMjl1YzI5c1pWdHRaWFJvYjJSZEtT
QjdJQ0FnTHk4Z1pYTnNhVzUwTFdScGMyRmliR1V0YkdsdVpTQnVieTFqYjI1emIyeGxYRzRnSUNB
Z0lDQWdJRzFsZEdodlpDQTlJQ2RzYjJjbk8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ1kyOXVjMjlz
WlZ0dFpYUm9iMlJkS0M0dUxtMWxjM05oWjJVcE95QWdJQ0F2THlCbGMyeHBiblF0WkdsellXSnNa
UzFzYVc1bElHNXZMV052Ym5OdmJHVmNiaUFnSUNCOVhHNGdJSDFjYm4wN1hHNWNibVY0Y0c5eWRD
QmtaV1poZFd4MElHeHZaMmRsY2p0Y2JpSmRmUT09Cis7CitkZWZpbmUoJ2hhbmRsZWJhcnMvYmFz
ZScsWydleHBvcnRzJywgJy4vdXRpbHMnLCAnLi9leGNlcHRpb24nLCAnLi9oZWxwZXJzJywgJy4v
ZGVjb3JhdG9ycycsICcuL2xvZ2dlciddLCBmdW5jdGlvbiAoZXhwb3J0cywgX3V0aWxzLCBfZXhj
ZXB0aW9uLCBfaGVscGVycywgX2RlY29yYXRvcnMsIF9sb2dnZXIpIHsKKyAgJ3VzZSBzdHJpY3Qn
OworCisgIGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7CisgIGV4cG9ydHMuSGFuZGxlYmFyc0Vu
dmlyb25tZW50ID0gSGFuZGxlYmFyc0Vudmlyb25tZW50OworICAvLyBpc3RhbmJ1bCBpZ25vcmUg
bmV4dAorCisgIGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBv
YmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH0KKworICB2
YXIgX0V4Y2VwdGlvbiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2V4Y2VwdGlvbik7CisKKyAg
dmFyIF9sb2dnZXIyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfbG9nZ2VyKTsKKworICB2YXIg
VkVSU0lPTiA9ICc0LjAuNic7CisgIGV4cG9ydHMuVkVSU0lPTiA9IFZFUlNJT047CisgIHZhciBD
T01QSUxFUl9SRVZJU0lPTiA9IDc7CisKKyAgZXhwb3J0cy5DT01QSUxFUl9SRVZJU0lPTiA9IENP
TVBJTEVSX1JFVklTSU9OOworICB2YXIgUkVWSVNJT05fQ0hBTkdFUyA9IHsKKyAgICAxOiAnPD0g
MS4wLnJjLjInLCAvLyAxLjAucmMuMiBpcyBhY3R1YWxseSByZXYyIGJ1dCBkb2Vzbid0IHJlcG9y
dCBpdAorICAgIDI6ICc9PSAxLjAuMC1yYy4zJywKKyAgICAzOiAnPT0gMS4wLjAtcmMuNCcsCisg
ICAgNDogJz09IDEueC54JywKKyAgICA1OiAnPT0gMi4wLjAtYWxwaGEueCcsCisgICAgNjogJz49
IDIuMC4wLWJldGEuMScsCisgICAgNzogJz49IDQuMC4wJworICB9OworCisgIGV4cG9ydHMuUkVW
SVNJT05fQ0hBTkdFUyA9IFJFVklTSU9OX0NIQU5HRVM7CisgIHZhciBvYmplY3RUeXBlID0gJ1tv
YmplY3QgT2JqZWN0XSc7CisKKyAgZnVuY3Rpb24gSGFuZGxlYmFyc0Vudmlyb25tZW50KGhlbHBl
cnMsIHBhcnRpYWxzLCBkZWNvcmF0b3JzKSB7CisgICAgdGhpcy5oZWxwZXJzID0gaGVscGVycyB8
fCB7fTsKKyAgICB0aGlzLnBhcnRpYWxzID0gcGFydGlhbHMgfHwge307CisgICAgdGhpcy5kZWNv
cmF0b3JzID0gZGVjb3JhdG9ycyB8fCB7fTsKKworICAgIF9oZWxwZXJzLnJlZ2lzdGVyRGVmYXVs
dEhlbHBlcnModGhpcyk7CisgICAgX2RlY29yYXRvcnMucmVnaXN0ZXJEZWZhdWx0RGVjb3JhdG9y
cyh0aGlzKTsKKyAgfQorCisgIEhhbmRsZWJhcnNFbnZpcm9ubWVudC5wcm90b3R5cGUgPSB7Cisg
ICAgY29uc3RydWN0b3I6IEhhbmRsZWJhcnNFbnZpcm9ubWVudCwKKworICAgIGxvZ2dlcjogX2xv
Z2dlcjJbJ2RlZmF1bHQnXSwKKyAgICBsb2c6IF9sb2dnZXIyWydkZWZhdWx0J10ubG9nLAorCisg
ICAgcmVnaXN0ZXJIZWxwZXI6IGZ1bmN0aW9uIHJlZ2lzdGVySGVscGVyKG5hbWUsIGZuKSB7Cisg
ICAgICBpZiAoX3V0aWxzLnRvU3RyaW5nLmNhbGwobmFtZSkgPT09IG9iamVjdFR5cGUpIHsKKyAg
ICAgICAgaWYgKGZuKSB7CisgICAgICAgICAgdGhyb3cgbmV3IF9FeGNlcHRpb25bJ2RlZmF1bHQn
XSgnQXJnIG5vdCBzdXBwb3J0ZWQgd2l0aCBtdWx0aXBsZSBoZWxwZXJzJyk7CisgICAgICAgIH0K
KyAgICAgICAgX3V0aWxzLmV4dGVuZCh0aGlzLmhlbHBlcnMsIG5hbWUpOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgdGhpcy5oZWxwZXJzW25hbWVdID0gZm47CisgICAgICB9CisgICAgfSwKKyAg
ICB1bnJlZ2lzdGVySGVscGVyOiBmdW5jdGlvbiB1bnJlZ2lzdGVySGVscGVyKG5hbWUpIHsKKyAg
ICAgIGRlbGV0ZSB0aGlzLmhlbHBlcnNbbmFtZV07CisgICAgfSwKKworICAgIHJlZ2lzdGVyUGFy
dGlhbDogZnVuY3Rpb24gcmVnaXN0ZXJQYXJ0aWFsKG5hbWUsIHBhcnRpYWwpIHsKKyAgICAgIGlm
IChfdXRpbHMudG9TdHJpbmcuY2FsbChuYW1lKSA9PT0gb2JqZWN0VHlwZSkgeworICAgICAgICBf
dXRpbHMuZXh0ZW5kKHRoaXMucGFydGlhbHMsIG5hbWUpOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgaWYgKHR5cGVvZiBwYXJ0aWFsID09PSAndW5kZWZpbmVkJykgeworICAgICAgICAgIHRocm93
IG5ldyBfRXhjZXB0aW9uWydkZWZhdWx0J10oJ0F0dGVtcHRpbmcgdG8gcmVnaXN0ZXIgYSBwYXJ0
aWFsIGNhbGxlZCAiJyArIG5hbWUgKyAnIiBhcyB1bmRlZmluZWQnKTsKKyAgICAgICAgfQorICAg
ICAgICB0aGlzLnBhcnRpYWxzW25hbWVdID0gcGFydGlhbDsKKyAgICAgIH0KKyAgICB9LAorICAg
IHVucmVnaXN0ZXJQYXJ0aWFsOiBmdW5jdGlvbiB1bnJlZ2lzdGVyUGFydGlhbChuYW1lKSB7Cisg
ICAgICBkZWxldGUgdGhpcy5wYXJ0aWFsc1tuYW1lXTsKKyAgICB9LAorCisgICAgcmVnaXN0ZXJE
ZWNvcmF0b3I6IGZ1bmN0aW9uIHJlZ2lzdGVyRGVjb3JhdG9yKG5hbWUsIGZuKSB7CisgICAgICBp
ZiAoX3V0aWxzLnRvU3RyaW5nLmNhbGwobmFtZSkgPT09IG9iamVjdFR5cGUpIHsKKyAgICAgICAg
aWYgKGZuKSB7CisgICAgICAgICAgdGhyb3cgbmV3IF9FeGNlcHRpb25bJ2RlZmF1bHQnXSgnQXJn
IG5vdCBzdXBwb3J0ZWQgd2l0aCBtdWx0aXBsZSBkZWNvcmF0b3JzJyk7CisgICAgICAgIH0KKyAg
ICAgICAgX3V0aWxzLmV4dGVuZCh0aGlzLmRlY29yYXRvcnMsIG5hbWUpOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgdGhpcy5kZWNvcmF0b3JzW25hbWVdID0gZm47CisgICAgICB9CisgICAgfSwK
KyAgICB1bnJlZ2lzdGVyRGVjb3JhdG9yOiBmdW5jdGlvbiB1bnJlZ2lzdGVyRGVjb3JhdG9yKG5h
bWUpIHsKKyAgICAgIGRlbGV0ZSB0aGlzLmRlY29yYXRvcnNbbmFtZV07CisgICAgfQorICB9Owor
CisgIHZhciBsb2cgPSBfbG9nZ2VyMlsnZGVmYXVsdCddLmxvZzsKKworICBleHBvcnRzLmxvZyA9
IGxvZzsKKyAgZXhwb3J0cy5jcmVhdGVGcmFtZSA9IF91dGlscy5jcmVhdGVGcmFtZTsKKyAgZXhw
b3J0cy5sb2dnZXIgPSBfbG9nZ2VyMlsnZGVmYXVsdCddOworfSk7CisvLyMgc291cmNlTWFwcGlu
Z1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNW
eVkyVnpJanBiSWk0dUx5NHVMeTR1TDJ4cFlpOW9ZVzVrYkdWaVlYSnpMMkpoYzJVdWFuTWlYU3dp
Ym1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqczdPenM3T3pzN096czdPenRCUVUxUExFMUJR
VTBzVDBGQlR5eEhRVUZITEU5QlFVOHNRMEZCUXpzN1FVRkRlRUlzVFVGQlRTeHBRa0ZCYVVJc1Iw
RkJSeXhEUVVGRExFTkJRVU03T3p0QlFVVTFRaXhOUVVGTkxHZENRVUZuUWl4SFFVRkhPMEZCUXps
Q0xFdEJRVU1zUlVGQlJTeGhRVUZoTzBGQlEyaENMRXRCUVVNc1JVRkJSU3hsUVVGbE8wRkJRMnhD
TEV0QlFVTXNSVUZCUlN4bFFVRmxPMEZCUTJ4Q0xFdEJRVU1zUlVGQlJTeFZRVUZWTzBGQlEySXNT
MEZCUXl4RlFVRkZMR3RDUVVGclFqdEJRVU55UWl4TFFVRkRMRVZCUVVVc2FVSkJRV2xDTzBGQlEz
QkNMRXRCUVVNc1JVRkJSU3hWUVVGVk8wZEJRMlFzUTBGQlF6czdPMEZCUlVZc1RVRkJUU3hWUVVG
VkxFZEJRVWNzYVVKQlFXbENMRU5CUVVNN08wRkJSVGxDTEZkQlFWTXNjVUpCUVhGQ0xFTkJRVU1z
VDBGQlR5eEZRVUZGTEZGQlFWRXNSVUZCUlN4VlFVRlZMRVZCUVVVN1FVRkRia1VzVVVGQlNTeERR
VUZETEU5QlFVOHNSMEZCUnl4UFFVRlBMRWxCUVVrc1JVRkJSU3hEUVVGRE8wRkJRemRDTEZGQlFV
a3NRMEZCUXl4UlFVRlJMRWRCUVVjc1VVRkJVU3hKUVVGSkxFVkJRVVVzUTBGQlF6dEJRVU12UWl4
UlFVRkpMRU5CUVVNc1ZVRkJWU3hIUVVGSExGVkJRVlVzU1VGQlNTeEZRVUZGTEVOQlFVTTdPMEZC
Ulc1RExHRkJlRUpOTEhOQ1FVRnpRaXhEUVhkQ1RDeEpRVUZKTEVOQlFVTXNRMEZCUXp0QlFVTTNR
aXhuUWtGNFFrMHNlVUpCUVhsQ0xFTkJkMEpNTEVsQlFVa3NRMEZCUXl4RFFVRkRPMGRCUTJwRE96
dEJRVVZFTEhWQ1FVRnhRaXhEUVVGRExGTkJRVk1zUjBGQlJ6dEJRVU5vUXl4bFFVRlhMRVZCUVVV
c2NVSkJRWEZDT3p0QlFVVnNReXhWUVVGTkxIRkNRVUZSTzBGQlEyUXNUMEZCUnl4RlFVRkZMRzlD
UVVGUExFZEJRVWM3TzBGQlJXWXNhMEpCUVdNc1JVRkJSU3gzUWtGQlV5eEpRVUZKTEVWQlFVVXNS
VUZCUlN4RlFVRkZPMEZCUTJwRExGVkJRVWtzVDBGeVEzRkNMRkZCUVZFc1EwRnhRM0JDTEVsQlFV
a3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhWUVVGVkxFVkJRVVU3UVVGRGRFTXNXVUZCU1N4
RlFVRkZMRVZCUVVVN1FVRkJSU3huUWtGQlRTd3dRa0ZCWXl4NVEwRkJlVU1zUTBGQlF5eERRVUZE
TzFOQlFVVTdRVUZETTBVc1pVRjJRMlVzVFVGQlRTeERRWFZEWkN4SlFVRkpMRU5CUVVNc1QwRkJU
eXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETzA5QlF6VkNMRTFCUVUwN1FVRkRUQ3haUVVGSkxF
TkJRVU1zVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJRenRQUVVO
NlFqdExRVU5HTzBGQlEwUXNiMEpCUVdkQ0xFVkJRVVVzTUVKQlFWTXNTVUZCU1N4RlFVRkZPMEZC
UXk5Q0xHRkJRVThzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJR
enRMUVVNelFqczdRVUZGUkN4dFFrRkJaU3hGUVVGRkxIbENRVUZUTEVsQlFVa3NSVUZCUlN4UFFV
RlBMRVZCUVVVN1FVRkRka01zVlVGQlNTeFBRV3BFY1VJc1VVRkJVU3hEUVdsRWNFSXNTVUZCU1N4
RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExGVkJRVlVzUlVGQlJUdEJRVU4wUXl4bFFXeEVaU3hO
UVVGTkxFTkJhMFJrTEVsQlFVa3NRMEZCUXl4UlFVRlJMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJR
VU03VDBGRE4wSXNUVUZCVFR0QlFVTk1MRmxCUVVrc1QwRkJUeXhQUVVGUExFdEJRVXNzVjBGQlZ5
eEZRVUZGTzBGQlEyeERMR2RDUVVGTkxIZEZRVUV3UkN4SlFVRkpMRzlDUVVGcFFpeERRVUZETzFO
QlEzWkdPMEZCUTBRc1dVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZC
Unl4UFFVRlBMRU5CUVVNN1QwRkRMMEk3UzBGRFJqdEJRVU5FTEhGQ1FVRnBRaXhGUVVGRkxESkNR
VUZUTEVsQlFVa3NSVUZCUlR0QlFVTm9ReXhoUVVGUExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFV
TXNTVUZCU1N4RFFVRkRMRU5CUVVNN1MwRkROVUk3TzBGQlJVUXNjVUpCUVdsQ0xFVkJRVVVzTWtK
QlFWTXNTVUZCU1N4RlFVRkZMRVZCUVVVc1JVRkJSVHRCUVVOd1F5eFZRVUZKTEU5QkwwUnhRaXhS
UVVGUkxFTkJLMFJ3UWl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzVlVGQlZTeEZR
VUZGTzBGQlEzUkRMRmxCUVVrc1JVRkJSU3hGUVVGRk8wRkJRVVVzWjBKQlFVMHNNRUpCUVdNc05F
TkJRVFJETEVOQlFVTXNRMEZCUXp0VFFVRkZPMEZCUXpsRkxHVkJha1ZsTEUxQlFVMHNRMEZwUldR
c1NVRkJTU3hEUVVGRExGVkJRVlVzUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0UFFVTXZRaXhO
UVVGTk8wRkJRMHdzV1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJS
eXhGUVVGRkxFTkJRVU03VDBGRE5VSTdTMEZEUmp0QlFVTkVMSFZDUVVGdFFpeEZRVUZGTERaQ1FV
RlRMRWxCUVVrc1JVRkJSVHRCUVVOc1F5eGhRVUZQTEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVN
c1NVRkJTU3hEUVVGRExFTkJRVU03UzBGRE9VSTdSMEZEUml4RFFVRkRPenRCUVVWTExFMUJRVWtz
UjBGQlJ5eEhRVUZITEc5Q1FVRlBMRWRCUVVjc1EwRkJRenM3TzFWQlJYQkNMRmRCUVZjc1ZVRTNS
VmdzVjBGQlZ6dFZRVFpGUlN4TlFVRk5JaXdpWm1sc1pTSTZJbUpoYzJVdWFuTWlMQ0p6YjNWeVky
VnpRMjl1ZEdWdWRDSTZXeUpwYlhCdmNuUWdlMk55WldGMFpVWnlZVzFsTENCbGVIUmxibVFzSUhS
dlUzUnlhVzVuZlNCbWNtOXRJQ2N1TDNWMGFXeHpKenRjYm1sdGNHOXlkQ0JGZUdObGNIUnBiMjRn
Wm5KdmJTQW5MaTlsZUdObGNIUnBiMjRuTzF4dWFXMXdiM0owSUh0eVpXZHBjM1JsY2tSbFptRjFi
SFJJWld4d1pYSnpmU0JtY205dElDY3VMMmhsYkhCbGNuTW5PMXh1YVcxd2IzSjBJSHR5WldkcGMz
Umxja1JsWm1GMWJIUkVaV052Y21GMGIzSnpmU0JtY205dElDY3VMMlJsWTI5eVlYUnZjbk1uTzF4
dWFXMXdiM0owSUd4dloyZGxjaUJtY205dElDY3VMMnh2WjJkbGNpYzdYRzVjYm1WNGNHOXlkQ0Jq
YjI1emRDQldSVkpUU1U5T0lEMGdKelF1TUM0Mkp6dGNibVY0Y0c5eWRDQmpiMjV6ZENCRFQwMVFT
VXhGVWw5U1JWWkpVMGxQVGlBOUlEYzdYRzVjYm1WNGNHOXlkQ0JqYjI1emRDQlNSVlpKVTBsUFRs
OURTRUZPUjBWVElEMGdlMXh1SUNBeE9pQW5QRDBnTVM0d0xuSmpMakluTENBdkx5QXhMakF1Y21N
dU1pQnBjeUJoWTNSMVlXeHNlU0J5WlhZeUlHSjFkQ0JrYjJWemJpZDBJSEpsY0c5eWRDQnBkRnh1
SUNBeU9pQW5QVDBnTVM0d0xqQXRjbU11TXljc1hHNGdJRE02SUNjOVBTQXhMakF1TUMxeVl5NDBK
eXhjYmlBZ05Eb2dKejA5SURFdWVDNTRKeXhjYmlBZ05Ub2dKejA5SURJdU1DNHdMV0ZzY0doaExu
Z25MRnh1SUNBMk9pQW5QajBnTWk0d0xqQXRZbVYwWVM0eEp5eGNiaUFnTnpvZ0p6NDlJRFF1TUM0
d0oxeHVmVHRjYmx4dVkyOXVjM1FnYjJKcVpXTjBWSGx3WlNBOUlDZGJiMkpxWldOMElFOWlhbVZq
ZEYwbk8xeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdTR0Z1Wkd4bFltRnljMFZ1ZG1seWIyNXRa
VzUwS0dobGJIQmxjbk1zSUhCaGNuUnBZV3h6TENCa1pXTnZjbUYwYjNKektTQjdYRzRnSUhSb2FY
TXVhR1ZzY0dWeWN5QTlJR2hsYkhCbGNuTWdmSHdnZTMwN1hHNGdJSFJvYVhNdWNHRnlkR2xoYkhN
Z1BTQndZWEowYVdGc2N5QjhmQ0I3ZlR0Y2JpQWdkR2hwY3k1a1pXTnZjbUYwYjNKeklEMGdaR1Zq
YjNKaGRHOXljeUI4ZkNCN2ZUdGNibHh1SUNCeVpXZHBjM1JsY2tSbFptRjFiSFJJWld4d1pYSnpL
SFJvYVhNcE8xeHVJQ0J5WldkcGMzUmxja1JsWm1GMWJIUkVaV052Y21GMGIzSnpLSFJvYVhNcE8x
eHVmVnh1WEc1SVlXNWtiR1ZpWVhKelJXNTJhWEp2Ym0xbGJuUXVjSEp2ZEc5MGVYQmxJRDBnZTF4
dUlDQmpiMjV6ZEhKMVkzUnZjam9nU0dGdVpHeGxZbUZ5YzBWdWRtbHliMjV0Wlc1MExGeHVYRzRn
SUd4dloyZGxjam9nYkc5bloyVnlMRnh1SUNCc2IyYzZJR3h2WjJkbGNpNXNiMmNzWEc1Y2JpQWdj
bVZuYVhOMFpYSklaV3h3WlhJNklHWjFibU4wYVc5dUtHNWhiV1VzSUdadUtTQjdYRzRnSUNBZ2FX
WWdLSFJ2VTNSeWFXNW5MbU5oYkd3b2JtRnRaU2tnUFQwOUlHOWlhbVZqZEZSNWNHVXBJSHRjYmlB
Z0lDQWdJR2xtSUNobWJpa2dleUIwYUhKdmR5QnVaWGNnUlhoalpYQjBhVzl1S0NkQmNtY2dibTkw
SUhOMWNIQnZjblJsWkNCM2FYUm9JRzExYkhScGNHeGxJR2hsYkhCbGNuTW5LVHNnZlZ4dUlDQWdJ
Q0FnWlhoMFpXNWtLSFJvYVhNdWFHVnNjR1Z5Y3l3Z2JtRnRaU2s3WEc0Z0lDQWdmU0JsYkhObElI
dGNiaUFnSUNBZ0lIUm9hWE11YUdWc2NHVnljMXR1WVcxbFhTQTlJR1p1TzF4dUlDQWdJSDFjYmlB
Z2ZTeGNiaUFnZFc1eVpXZHBjM1JsY2tobGJIQmxjam9nWm5WdVkzUnBiMjRvYm1GdFpTa2dlMXh1
SUNBZ0lHUmxiR1YwWlNCMGFHbHpMbWhsYkhCbGNuTmJibUZ0WlYwN1hHNGdJSDBzWEc1Y2JpQWdj
bVZuYVhOMFpYSlFZWEowYVdGc09pQm1kVzVqZEdsdmJpaHVZVzFsTENCd1lYSjBhV0ZzS1NCN1hH
NGdJQ0FnYVdZZ0tIUnZVM1J5YVc1bkxtTmhiR3dvYm1GdFpTa2dQVDA5SUc5aWFtVmpkRlI1Y0dV
cElIdGNiaUFnSUNBZ0lHVjRkR1Z1WkNoMGFHbHpMbkJoY25ScFlXeHpMQ0J1WVcxbEtUdGNiaUFn
SUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnYVdZZ0tIUjVjR1Z2WmlCd1lYSjBhV0ZzSUQwOVBTQW5k
VzVrWldacGJtVmtKeWtnZTF4dUlDQWdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1JYaGpaWEIwYVc5dUtH
QkJkSFJsYlhCMGFXNW5JSFJ2SUhKbFoybHpkR1Z5SUdFZ2NHRnlkR2xoYkNCallXeHNaV1FnWENJ
a2UyNWhiV1Y5WENJZ1lYTWdkVzVrWldacGJtVmtZQ2s3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdJQ0Iw
YUdsekxuQmhjblJwWVd4elcyNWhiV1ZkSUQwZ2NHRnlkR2xoYkR0Y2JpQWdJQ0I5WEc0Z0lIMHNY
RzRnSUhWdWNtVm5hWE4wWlhKUVlYSjBhV0ZzT2lCbWRXNWpkR2x2YmlodVlXMWxLU0I3WEc0Z0lD
QWdaR1ZzWlhSbElIUm9hWE11Y0dGeWRHbGhiSE5iYm1GdFpWMDdYRzRnSUgwc1hHNWNiaUFnY21W
bmFYTjBaWEpFWldOdmNtRjBiM0k2SUdaMWJtTjBhVzl1S0c1aGJXVXNJR1p1S1NCN1hHNGdJQ0Fn
YVdZZ0tIUnZVM1J5YVc1bkxtTmhiR3dvYm1GdFpTa2dQVDA5SUc5aWFtVmpkRlI1Y0dVcElIdGNi
aUFnSUNBZ0lHbG1JQ2htYmlrZ2V5QjBhSEp2ZHlCdVpYY2dSWGhqWlhCMGFXOXVLQ2RCY21jZ2Jt
OTBJSE4xY0hCdmNuUmxaQ0IzYVhSb0lHMTFiSFJwY0d4bElHUmxZMjl5WVhSdmNuTW5LVHNnZlZ4
dUlDQWdJQ0FnWlhoMFpXNWtLSFJvYVhNdVpHVmpiM0poZEc5eWN5d2dibUZ0WlNrN1hHNGdJQ0Fn
ZlNCbGJITmxJSHRjYmlBZ0lDQWdJSFJvYVhNdVpHVmpiM0poZEc5eWMxdHVZVzFsWFNBOUlHWnVP
MXh1SUNBZ0lIMWNiaUFnZlN4Y2JpQWdkVzV5WldkcGMzUmxja1JsWTI5eVlYUnZjam9nWm5WdVkz
UnBiMjRvYm1GdFpTa2dlMXh1SUNBZ0lHUmxiR1YwWlNCMGFHbHpMbVJsWTI5eVlYUnZjbk5iYm1G
dFpWMDdYRzRnSUgxY2JuMDdYRzVjYm1WNGNHOXlkQ0JzWlhRZ2JHOW5JRDBnYkc5bloyVnlMbXh2
Wnp0Y2JseHVaWGh3YjNKMElIdGpjbVZoZEdWR2NtRnRaU3dnYkc5bloyVnlmVHRjYmlKZGZRPT0K
KzsKK2RlZmluZSgnaGFuZGxlYmFycy9zYWZlLXN0cmluZycsWydleHBvcnRzJywgJ21vZHVsZSdd
LCBmdW5jdGlvbiAoZXhwb3J0cywgbW9kdWxlKSB7CisgIC8vIEJ1aWxkIG91dCBvdXIgYmFzaWMg
U2FmZVN0cmluZyB0eXBlCisgICd1c2Ugc3RyaWN0JzsKKworICBmdW5jdGlvbiBTYWZlU3RyaW5n
KHN0cmluZykgeworICAgIHRoaXMuc3RyaW5nID0gc3RyaW5nOworICB9CisKKyAgU2FmZVN0cmlu
Zy5wcm90b3R5cGUudG9TdHJpbmcgPSBTYWZlU3RyaW5nLnByb3RvdHlwZS50b0hUTUwgPSBmdW5j
dGlvbiAoKSB7CisgICAgcmV0dXJuICcnICsgdGhpcy5zdHJpbmc7CisgIH07CisKKyAgbW9kdWxl
LmV4cG9ydHMgPSBTYWZlU3RyaW5nOworfSk7CisvLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFw
cGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSWk0
dUx5NHVMeTR1TDJ4cFlpOW9ZVzVrYkdWaVlYSnpMM05oWm1VdGMzUnlhVzVuTG1weklsMHNJbTVo
YldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN096czdRVUZEUVN4WFFVRlRMRlZCUVZVc1EwRkJR
eXhOUVVGTkxFVkJRVVU3UVVGRE1VSXNVVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhOUVVGTkxF
TkJRVU03UjBGRGRFSTdPMEZCUlVRc1dVRkJWU3hEUVVGRExGTkJRVk1zUTBGQlF5eFJRVUZSTEVk
QlFVY3NWVUZCVlN4RFFVRkRMRk5CUVZNc1EwRkJReXhOUVVGTkxFZEJRVWNzV1VGQlZ6dEJRVU4y
UlN4WFFVRlBMRVZCUVVVc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETzBkQlEzcENM
RU5CUVVNN08yMUNRVVZoTEZWQlFWVWlMQ0ptYVd4bElqb2ljMkZtWlMxemRISnBibWN1YW5NaUxD
SnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SXZMeUJDZFdsc1pDQnZkWFFnYjNWeUlHSmhjMmxqSUZO
aFptVlRkSEpwYm1jZ2RIbHdaVnh1Wm5WdVkzUnBiMjRnVTJGbVpWTjBjbWx1WnloemRISnBibWNw
SUh0Y2JpQWdkR2hwY3k1emRISnBibWNnUFNCemRISnBibWM3WEc1OVhHNWNibE5oWm1WVGRISnBi
bWN1Y0hKdmRHOTBlWEJsTG5SdlUzUnlhVzVuSUQwZ1UyRm1aVk4wY21sdVp5NXdjbTkwYjNSNWNH
VXVkRzlJVkUxTUlEMGdablZ1WTNScGIyNG9LU0I3WEc0Z0lISmxkSFZ5YmlBbkp5QXJJSFJvYVhN
dWMzUnlhVzVuTzF4dWZUdGNibHh1Wlhod2IzSjBJR1JsWm1GMWJIUWdVMkZtWlZOMGNtbHVaenRj
YmlKZGZRPT0KKzsKK2RlZmluZSgnaGFuZGxlYmFycy9ydW50aW1lJyxbJ2V4cG9ydHMnLCAnLi91
dGlscycsICcuL2V4Y2VwdGlvbicsICcuL2Jhc2UnXSwgZnVuY3Rpb24gKGV4cG9ydHMsIF91dGls
cywgX2V4Y2VwdGlvbiwgX2Jhc2UpIHsKKyAgJ3VzZSBzdHJpY3QnOworCisgIGV4cG9ydHMuX19l
c01vZHVsZSA9IHRydWU7CisgIGV4cG9ydHMuY2hlY2tSZXZpc2lvbiA9IGNoZWNrUmV2aXNpb247
CisgIGV4cG9ydHMudGVtcGxhdGUgPSB0ZW1wbGF0ZTsKKyAgZXhwb3J0cy53cmFwUHJvZ3JhbSA9
IHdyYXBQcm9ncmFtOworICBleHBvcnRzLnJlc29sdmVQYXJ0aWFsID0gcmVzb2x2ZVBhcnRpYWw7
CisgIGV4cG9ydHMuaW52b2tlUGFydGlhbCA9IGludm9rZVBhcnRpYWw7CisgIGV4cG9ydHMubm9v
cCA9IG5vb3A7CisgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0CisKKyAgZnVuY3Rpb24gX2ludGVy
b3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9i
aiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfQorCisgIHZhciBfRXhjZXB0aW9uID0gX2ludGVyb3BS
ZXF1aXJlRGVmYXVsdChfZXhjZXB0aW9uKTsKKworICBmdW5jdGlvbiBjaGVja1JldmlzaW9uKGNv
bXBpbGVySW5mbykgeworICAgIHZhciBjb21waWxlclJldmlzaW9uID0gY29tcGlsZXJJbmZvICYm
IGNvbXBpbGVySW5mb1swXSB8fCAxLAorICAgICAgICBjdXJyZW50UmV2aXNpb24gPSBfYmFzZS5D
T01QSUxFUl9SRVZJU0lPTjsKKworICAgIGlmIChjb21waWxlclJldmlzaW9uICE9PSBjdXJyZW50
UmV2aXNpb24pIHsKKyAgICAgIGlmIChjb21waWxlclJldmlzaW9uIDwgY3VycmVudFJldmlzaW9u
KSB7CisgICAgICAgIHZhciBydW50aW1lVmVyc2lvbnMgPSBfYmFzZS5SRVZJU0lPTl9DSEFOR0VT
W2N1cnJlbnRSZXZpc2lvbl0sCisgICAgICAgICAgICBjb21waWxlclZlcnNpb25zID0gX2Jhc2Uu
UkVWSVNJT05fQ0hBTkdFU1tjb21waWxlclJldmlzaW9uXTsKKyAgICAgICAgdGhyb3cgbmV3IF9F
eGNlcHRpb25bJ2RlZmF1bHQnXSgnVGVtcGxhdGUgd2FzIHByZWNvbXBpbGVkIHdpdGggYW4gb2xk
ZXIgdmVyc2lvbiBvZiBIYW5kbGViYXJzIHRoYW4gdGhlIGN1cnJlbnQgcnVudGltZS4gJyArICdQ
bGVhc2UgdXBkYXRlIHlvdXIgcHJlY29tcGlsZXIgdG8gYSBuZXdlciB2ZXJzaW9uICgnICsgcnVu
dGltZVZlcnNpb25zICsgJykgb3IgZG93bmdyYWRlIHlvdXIgcnVudGltZSB0byBhbiBvbGRlciB2
ZXJzaW9uICgnICsgY29tcGlsZXJWZXJzaW9ucyArICcpLicpOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgLy8gVXNlIHRoZSBlbWJlZGRlZCB2ZXJzaW9uIGluZm8gc2luY2UgdGhlIHJ1bnRpbWUg
ZG9lc24ndCBrbm93IGFib3V0IHRoaXMgcmV2aXNpb24geWV0CisgICAgICAgIHRocm93IG5ldyBf
RXhjZXB0aW9uWydkZWZhdWx0J10oJ1RlbXBsYXRlIHdhcyBwcmVjb21waWxlZCB3aXRoIGEgbmV3
ZXIgdmVyc2lvbiBvZiBIYW5kbGViYXJzIHRoYW4gdGhlIGN1cnJlbnQgcnVudGltZS4gJyArICdQ
bGVhc2UgdXBkYXRlIHlvdXIgcnVudGltZSB0byBhIG5ld2VyIHZlcnNpb24gKCcgKyBjb21waWxl
ckluZm9bMV0gKyAnKS4nKTsKKyAgICAgIH0KKyAgICB9CisgIH0KKworICBmdW5jdGlvbiB0ZW1w
bGF0ZSh0ZW1wbGF0ZVNwZWMsIGVudikgeworICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICov
CisgICAgaWYgKCFlbnYpIHsKKyAgICAgIHRocm93IG5ldyBfRXhjZXB0aW9uWydkZWZhdWx0J10o
J05vIGVudmlyb25tZW50IHBhc3NlZCB0byB0ZW1wbGF0ZScpOworICAgIH0KKyAgICBpZiAoIXRl
bXBsYXRlU3BlYyB8fCAhdGVtcGxhdGVTcGVjLm1haW4pIHsKKyAgICAgIHRocm93IG5ldyBfRXhj
ZXB0aW9uWydkZWZhdWx0J10oJ1Vua25vd24gdGVtcGxhdGUgb2JqZWN0OiAnICsgdHlwZW9mIHRl
bXBsYXRlU3BlYyk7CisgICAgfQorCisgICAgdGVtcGxhdGVTcGVjLm1haW4uZGVjb3JhdG9yID0g
dGVtcGxhdGVTcGVjLm1haW5fZDsKKworICAgIC8vIE5vdGU6IFVzaW5nIGVudi5WTSByZWZlcmVu
Y2VzIHJhdGhlciB0aGFuIGxvY2FsIHZhciByZWZlcmVuY2VzIHRocm91Z2hvdXQgdGhpcyBzZWN0
aW9uIHRvIGFsbG93CisgICAgLy8gZm9yIGV4dGVybmFsIHVzZXJzIHRvIG92ZXJyaWRlIHRoZXNl
IGFzIHBzdWVkby1zdXBwb3J0ZWQgQVBJcy4KKyAgICBlbnYuVk0uY2hlY2tSZXZpc2lvbih0ZW1w
bGF0ZVNwZWMuY29tcGlsZXIpOworCisgICAgZnVuY3Rpb24gaW52b2tlUGFydGlhbFdyYXBwZXIo
cGFydGlhbCwgY29udGV4dCwgb3B0aW9ucykgeworICAgICAgaWYgKG9wdGlvbnMuaGFzaCkgewor
ICAgICAgICBjb250ZXh0ID0gX3V0aWxzLmV4dGVuZCh7fSwgY29udGV4dCwgb3B0aW9ucy5oYXNo
KTsKKyAgICAgICAgaWYgKG9wdGlvbnMuaWRzKSB7CisgICAgICAgICAgb3B0aW9ucy5pZHNbMF0g
PSB0cnVlOworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIHBhcnRpYWwgPSBlbnYuVk0ucmVz
b2x2ZVBhcnRpYWwuY2FsbCh0aGlzLCBwYXJ0aWFsLCBjb250ZXh0LCBvcHRpb25zKTsKKyAgICAg
IHZhciByZXN1bHQgPSBlbnYuVk0uaW52b2tlUGFydGlhbC5jYWxsKHRoaXMsIHBhcnRpYWwsIGNv
bnRleHQsIG9wdGlvbnMpOworCisgICAgICBpZiAocmVzdWx0ID09IG51bGwgJiYgZW52LmNvbXBp
bGUpIHsKKyAgICAgICAgb3B0aW9ucy5wYXJ0aWFsc1tvcHRpb25zLm5hbWVdID0gZW52LmNvbXBp
bGUocGFydGlhbCwgdGVtcGxhdGVTcGVjLmNvbXBpbGVyT3B0aW9ucywgZW52KTsKKyAgICAgICAg
cmVzdWx0ID0gb3B0aW9ucy5wYXJ0aWFsc1tvcHRpb25zLm5hbWVdKGNvbnRleHQsIG9wdGlvbnMp
OworICAgICAgfQorICAgICAgaWYgKHJlc3VsdCAhPSBudWxsKSB7CisgICAgICAgIGlmIChvcHRp
b25zLmluZGVudCkgeworICAgICAgICAgIHZhciBsaW5lcyA9IHJlc3VsdC5zcGxpdCgnXG4nKTsK
KyAgICAgICAgICBmb3IgKHZhciBpID0gMCwgbCA9IGxpbmVzLmxlbmd0aDsgaSA8IGw7IGkrKykg
eworICAgICAgICAgICAgaWYgKCFsaW5lc1tpXSAmJiBpICsgMSA9PT0gbCkgeworICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbGluZXNbaV0gPSBvcHRp
b25zLmluZGVudCArIGxpbmVzW2ldOworICAgICAgICAgIH0KKyAgICAgICAgICByZXN1bHQgPSBs
aW5lcy5qb2luKCdcbicpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
ICB9IGVsc2UgeworICAgICAgICB0aHJvdyBuZXcgX0V4Y2VwdGlvblsnZGVmYXVsdCddKCdUaGUg
cGFydGlhbCAnICsgb3B0aW9ucy5uYW1lICsgJyBjb3VsZCBub3QgYmUgY29tcGlsZWQgd2hlbiBy
dW5uaW5nIGluIHJ1bnRpbWUtb25seSBtb2RlJyk7CisgICAgICB9CisgICAgfQorCisgICAgLy8g
SnVzdCBhZGQgd2F0ZXIKKyAgICB2YXIgY29udGFpbmVyID0geworICAgICAgc3RyaWN0OiBmdW5j
dGlvbiBzdHJpY3Qob2JqLCBuYW1lKSB7CisgICAgICAgIGlmICghKG5hbWUgaW4gb2JqKSkgewor
ICAgICAgICAgIHRocm93IG5ldyBfRXhjZXB0aW9uWydkZWZhdWx0J10oJyInICsgbmFtZSArICci
IG5vdCBkZWZpbmVkIGluICcgKyBvYmopOworICAgICAgICB9CisgICAgICAgIHJldHVybiBvYmpb
bmFtZV07CisgICAgICB9LAorICAgICAgbG9va3VwOiBmdW5jdGlvbiBsb29rdXAoZGVwdGhzLCBu
YW1lKSB7CisgICAgICAgIHZhciBsZW4gPSBkZXB0aHMubGVuZ3RoOworICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgICAgaWYgKGRlcHRoc1tpXSAmJiBkZXB0
aHNbaV1bbmFtZV0gIT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIGRlcHRoc1tpXVtuYW1l
XTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0sCisgICAgICBsYW1iZGE6IGZ1bmN0
aW9uIGxhbWJkYShjdXJyZW50LCBjb250ZXh0KSB7CisgICAgICAgIHJldHVybiB0eXBlb2YgY3Vy
cmVudCA9PT0gJ2Z1bmN0aW9uJyA/IGN1cnJlbnQuY2FsbChjb250ZXh0KSA6IGN1cnJlbnQ7Cisg
ICAgICB9LAorCisgICAgICBlc2NhcGVFeHByZXNzaW9uOiBfdXRpbHMuZXNjYXBlRXhwcmVzc2lv
biwKKyAgICAgIGludm9rZVBhcnRpYWw6IGludm9rZVBhcnRpYWxXcmFwcGVyLAorCisgICAgICBm
bjogZnVuY3Rpb24gZm4oaSkgeworICAgICAgICB2YXIgcmV0ID0gdGVtcGxhdGVTcGVjW2ldOwor
ICAgICAgICByZXQuZGVjb3JhdG9yID0gdGVtcGxhdGVTcGVjW2kgKyAnX2QnXTsKKyAgICAgICAg
cmV0dXJuIHJldDsKKyAgICAgIH0sCisKKyAgICAgIHByb2dyYW1zOiBbXSwKKyAgICAgIHByb2dy
YW06IGZ1bmN0aW9uIHByb2dyYW0oaSwgZGF0YSwgZGVjbGFyZWRCbG9ja1BhcmFtcywgYmxvY2tQ
YXJhbXMsIGRlcHRocykgeworICAgICAgICB2YXIgcHJvZ3JhbVdyYXBwZXIgPSB0aGlzLnByb2dy
YW1zW2ldLAorICAgICAgICAgICAgZm4gPSB0aGlzLmZuKGkpOworICAgICAgICBpZiAoZGF0YSB8
fCBkZXB0aHMgfHwgYmxvY2tQYXJhbXMgfHwgZGVjbGFyZWRCbG9ja1BhcmFtcykgeworICAgICAg
ICAgIHByb2dyYW1XcmFwcGVyID0gd3JhcFByb2dyYW0odGhpcywgaSwgZm4sIGRhdGEsIGRlY2xh
cmVkQmxvY2tQYXJhbXMsIGJsb2NrUGFyYW1zLCBkZXB0aHMpOworICAgICAgICB9IGVsc2UgaWYg
KCFwcm9ncmFtV3JhcHBlcikgeworICAgICAgICAgIHByb2dyYW1XcmFwcGVyID0gdGhpcy5wcm9n
cmFtc1tpXSA9IHdyYXBQcm9ncmFtKHRoaXMsIGksIGZuKTsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm4gcHJvZ3JhbVdyYXBwZXI7CisgICAgICB9LAorCisgICAgICBkYXRhOiBmdW5jdGlvbiBk
YXRhKHZhbHVlLCBkZXB0aCkgeworICAgICAgICB3aGlsZSAodmFsdWUgJiYgZGVwdGgtLSkgewor
ICAgICAgICAgIHZhbHVlID0gdmFsdWUuX3BhcmVudDsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gdmFsdWU7CisgICAgICB9LAorICAgICAgbWVyZ2U6IGZ1bmN0aW9uIG1lcmdlKHBhcmFtLCBj
b21tb24pIHsKKyAgICAgICAgdmFyIG9iaiA9IHBhcmFtIHx8IGNvbW1vbjsKKworICAgICAgICBp
ZiAocGFyYW0gJiYgY29tbW9uICYmIHBhcmFtICE9PSBjb21tb24pIHsKKyAgICAgICAgICBvYmog
PSBfdXRpbHMuZXh0ZW5kKHt9LCBjb21tb24sIHBhcmFtKTsKKyAgICAgICAgfQorCisgICAgICAg
IHJldHVybiBvYmo7CisgICAgICB9LAorCisgICAgICBub29wOiBlbnYuVk0ubm9vcCwKKyAgICAg
IGNvbXBpbGVySW5mbzogdGVtcGxhdGVTcGVjLmNvbXBpbGVyCisgICAgfTsKKworICAgIGZ1bmN0
aW9uIHJldChjb250ZXh0KSB7CisgICAgICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGgg
PD0gMSB8fCBhcmd1bWVudHNbMV0gPT09IHVuZGVmaW5lZCA/IHt9IDogYXJndW1lbnRzWzFdOwor
CisgICAgICB2YXIgZGF0YSA9IG9wdGlvbnMuZGF0YTsKKworICAgICAgcmV0Ll9zZXR1cChvcHRp
b25zKTsKKyAgICAgIGlmICghb3B0aW9ucy5wYXJ0aWFsICYmIHRlbXBsYXRlU3BlYy51c2VEYXRh
KSB7CisgICAgICAgIGRhdGEgPSBpbml0RGF0YShjb250ZXh0LCBkYXRhKTsKKyAgICAgIH0KKyAg
ICAgIHZhciBkZXB0aHMgPSB1bmRlZmluZWQsCisgICAgICAgICAgYmxvY2tQYXJhbXMgPSB0ZW1w
bGF0ZVNwZWMudXNlQmxvY2tQYXJhbXMgPyBbXSA6IHVuZGVmaW5lZDsKKyAgICAgIGlmICh0ZW1w
bGF0ZVNwZWMudXNlRGVwdGhzKSB7CisgICAgICAgIGlmIChvcHRpb25zLmRlcHRocykgeworICAg
ICAgICAgIGRlcHRocyA9IGNvbnRleHQgIT0gb3B0aW9ucy5kZXB0aHNbMF0gPyBbY29udGV4dF0u
Y29uY2F0KG9wdGlvbnMuZGVwdGhzKSA6IG9wdGlvbnMuZGVwdGhzOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgIGRlcHRocyA9IFtjb250ZXh0XTsKKyAgICAgICAgfQorICAgICAgfQorCisg
ICAgICBmdW5jdGlvbiBtYWluKGNvbnRleHQgLyosIG9wdGlvbnMqLykgeworICAgICAgICByZXR1
cm4gJycgKyB0ZW1wbGF0ZVNwZWMubWFpbihjb250YWluZXIsIGNvbnRleHQsIGNvbnRhaW5lci5o
ZWxwZXJzLCBjb250YWluZXIucGFydGlhbHMsIGRhdGEsIGJsb2NrUGFyYW1zLCBkZXB0aHMpOwor
ICAgICAgfQorICAgICAgbWFpbiA9IGV4ZWN1dGVEZWNvcmF0b3JzKHRlbXBsYXRlU3BlYy5tYWlu
LCBtYWluLCBjb250YWluZXIsIG9wdGlvbnMuZGVwdGhzIHx8IFtdLCBkYXRhLCBibG9ja1BhcmFt
cyk7CisgICAgICByZXR1cm4gbWFpbihjb250ZXh0LCBvcHRpb25zKTsKKyAgICB9CisgICAgcmV0
LmlzVG9wID0gdHJ1ZTsKKworICAgIHJldC5fc2V0dXAgPSBmdW5jdGlvbiAob3B0aW9ucykgewor
ICAgICAgaWYgKCFvcHRpb25zLnBhcnRpYWwpIHsKKyAgICAgICAgY29udGFpbmVyLmhlbHBlcnMg
PSBjb250YWluZXIubWVyZ2Uob3B0aW9ucy5oZWxwZXJzLCBlbnYuaGVscGVycyk7CisKKyAgICAg
ICAgaWYgKHRlbXBsYXRlU3BlYy51c2VQYXJ0aWFsKSB7CisgICAgICAgICAgY29udGFpbmVyLnBh
cnRpYWxzID0gY29udGFpbmVyLm1lcmdlKG9wdGlvbnMucGFydGlhbHMsIGVudi5wYXJ0aWFscyk7
CisgICAgICAgIH0KKyAgICAgICAgaWYgKHRlbXBsYXRlU3BlYy51c2VQYXJ0aWFsIHx8IHRlbXBs
YXRlU3BlYy51c2VEZWNvcmF0b3JzKSB7CisgICAgICAgICAgY29udGFpbmVyLmRlY29yYXRvcnMg
PSBjb250YWluZXIubWVyZ2Uob3B0aW9ucy5kZWNvcmF0b3JzLCBlbnYuZGVjb3JhdG9ycyk7Cisg
ICAgICAgIH0KKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGNvbnRhaW5lci5oZWxwZXJzID0gb3B0
aW9ucy5oZWxwZXJzOworICAgICAgICBjb250YWluZXIucGFydGlhbHMgPSBvcHRpb25zLnBhcnRp
YWxzOworICAgICAgICBjb250YWluZXIuZGVjb3JhdG9ycyA9IG9wdGlvbnMuZGVjb3JhdG9yczsK
KyAgICAgIH0KKyAgICB9OworCisgICAgcmV0Ll9jaGlsZCA9IGZ1bmN0aW9uIChpLCBkYXRhLCBi
bG9ja1BhcmFtcywgZGVwdGhzKSB7CisgICAgICBpZiAodGVtcGxhdGVTcGVjLnVzZUJsb2NrUGFy
YW1zICYmICFibG9ja1BhcmFtcykgeworICAgICAgICB0aHJvdyBuZXcgX0V4Y2VwdGlvblsnZGVm
YXVsdCddKCdtdXN0IHBhc3MgYmxvY2sgcGFyYW1zJyk7CisgICAgICB9CisgICAgICBpZiAodGVt
cGxhdGVTcGVjLnVzZURlcHRocyAmJiAhZGVwdGhzKSB7CisgICAgICAgIHRocm93IG5ldyBfRXhj
ZXB0aW9uWydkZWZhdWx0J10oJ211c3QgcGFzcyBwYXJlbnQgZGVwdGhzJyk7CisgICAgICB9CisK
KyAgICAgIHJldHVybiB3cmFwUHJvZ3JhbShjb250YWluZXIsIGksIHRlbXBsYXRlU3BlY1tpXSwg
ZGF0YSwgMCwgYmxvY2tQYXJhbXMsIGRlcHRocyk7CisgICAgfTsKKyAgICByZXR1cm4gcmV0Owor
ICB9CisKKyAgZnVuY3Rpb24gd3JhcFByb2dyYW0oY29udGFpbmVyLCBpLCBmbiwgZGF0YSwgZGVj
bGFyZWRCbG9ja1BhcmFtcywgYmxvY2tQYXJhbXMsIGRlcHRocykgeworICAgIGZ1bmN0aW9uIHBy
b2coY29udGV4dCkgeworICAgICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDEg
fHwgYXJndW1lbnRzWzFdID09PSB1bmRlZmluZWQgPyB7fSA6IGFyZ3VtZW50c1sxXTsKKworICAg
ICAgdmFyIGN1cnJlbnREZXB0aHMgPSBkZXB0aHM7CisgICAgICBpZiAoZGVwdGhzICYmIGNvbnRl
eHQgIT0gZGVwdGhzWzBdKSB7CisgICAgICAgIGN1cnJlbnREZXB0aHMgPSBbY29udGV4dF0uY29u
Y2F0KGRlcHRocyk7CisgICAgICB9CisKKyAgICAgIHJldHVybiBmbihjb250YWluZXIsIGNvbnRl
eHQsIGNvbnRhaW5lci5oZWxwZXJzLCBjb250YWluZXIucGFydGlhbHMsIG9wdGlvbnMuZGF0YSB8
fCBkYXRhLCBibG9ja1BhcmFtcyAmJiBbb3B0aW9ucy5ibG9ja1BhcmFtc10uY29uY2F0KGJsb2Nr
UGFyYW1zKSwgY3VycmVudERlcHRocyk7CisgICAgfQorCisgICAgcHJvZyA9IGV4ZWN1dGVEZWNv
cmF0b3JzKGZuLCBwcm9nLCBjb250YWluZXIsIGRlcHRocywgZGF0YSwgYmxvY2tQYXJhbXMpOwor
CisgICAgcHJvZy5wcm9ncmFtID0gaTsKKyAgICBwcm9nLmRlcHRoID0gZGVwdGhzID8gZGVwdGhz
Lmxlbmd0aCA6IDA7CisgICAgcHJvZy5ibG9ja1BhcmFtcyA9IGRlY2xhcmVkQmxvY2tQYXJhbXMg
fHwgMDsKKyAgICByZXR1cm4gcHJvZzsKKyAgfQorCisgIGZ1bmN0aW9uIHJlc29sdmVQYXJ0aWFs
KHBhcnRpYWwsIGNvbnRleHQsIG9wdGlvbnMpIHsKKyAgICBpZiAoIXBhcnRpYWwpIHsKKyAgICAg
IGlmIChvcHRpb25zLm5hbWUgPT09ICdAcGFydGlhbC1ibG9jaycpIHsKKyAgICAgICAgdmFyIGRh
dGEgPSBvcHRpb25zLmRhdGE7CisgICAgICAgIHdoaWxlIChkYXRhWydwYXJ0aWFsLWJsb2NrJ10g
PT09IG5vb3ApIHsKKyAgICAgICAgICBkYXRhID0gZGF0YS5fcGFyZW50OworICAgICAgICB9Cisg
ICAgICAgIHBhcnRpYWwgPSBkYXRhWydwYXJ0aWFsLWJsb2NrJ107CisgICAgICAgIGRhdGFbJ3Bh
cnRpYWwtYmxvY2snXSA9IG5vb3A7CisgICAgICB9IGVsc2UgeworICAgICAgICBwYXJ0aWFsID0g
b3B0aW9ucy5wYXJ0aWFsc1tvcHRpb25zLm5hbWVdOworICAgICAgfQorICAgIH0gZWxzZSBpZiAo
IXBhcnRpYWwuY2FsbCAmJiAhb3B0aW9ucy5uYW1lKSB7CisgICAgICAvLyBUaGlzIGlzIGEgZHlu
YW1pYyBwYXJ0aWFsIHRoYXQgcmV0dXJuZWQgYSBzdHJpbmcKKyAgICAgIG9wdGlvbnMubmFtZSA9
IHBhcnRpYWw7CisgICAgICBwYXJ0aWFsID0gb3B0aW9ucy5wYXJ0aWFsc1twYXJ0aWFsXTsKKyAg
ICB9CisgICAgcmV0dXJuIHBhcnRpYWw7CisgIH0KKworICBmdW5jdGlvbiBpbnZva2VQYXJ0aWFs
KHBhcnRpYWwsIGNvbnRleHQsIG9wdGlvbnMpIHsKKyAgICBvcHRpb25zLnBhcnRpYWwgPSB0cnVl
OworICAgIGlmIChvcHRpb25zLmlkcykgeworICAgICAgb3B0aW9ucy5kYXRhLmNvbnRleHRQYXRo
ID0gb3B0aW9ucy5pZHNbMF0gfHwgb3B0aW9ucy5kYXRhLmNvbnRleHRQYXRoOworICAgIH0KKwor
ICAgIHZhciBwYXJ0aWFsQmxvY2sgPSB1bmRlZmluZWQ7CisgICAgaWYgKG9wdGlvbnMuZm4gJiYg
b3B0aW9ucy5mbiAhPT0gbm9vcCkgeworICAgICAgb3B0aW9ucy5kYXRhID0gX2Jhc2UuY3JlYXRl
RnJhbWUob3B0aW9ucy5kYXRhKTsKKyAgICAgIHBhcnRpYWxCbG9jayA9IG9wdGlvbnMuZGF0YVsn
cGFydGlhbC1ibG9jayddID0gb3B0aW9ucy5mbjsKKworICAgICAgaWYgKHBhcnRpYWxCbG9jay5w
YXJ0aWFscykgeworICAgICAgICBvcHRpb25zLnBhcnRpYWxzID0gX3V0aWxzLmV4dGVuZCh7fSwg
b3B0aW9ucy5wYXJ0aWFscywgcGFydGlhbEJsb2NrLnBhcnRpYWxzKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICBpZiAocGFydGlhbCA9PT0gdW5kZWZpbmVkICYmIHBhcnRpYWxCbG9jaykgeworICAg
ICAgcGFydGlhbCA9IHBhcnRpYWxCbG9jazsKKyAgICB9CisKKyAgICBpZiAocGFydGlhbCA9PT0g
dW5kZWZpbmVkKSB7CisgICAgICB0aHJvdyBuZXcgX0V4Y2VwdGlvblsnZGVmYXVsdCddKCdUaGUg
cGFydGlhbCAnICsgb3B0aW9ucy5uYW1lICsgJyBjb3VsZCBub3QgYmUgZm91bmQnKTsKKyAgICB9
IGVsc2UgaWYgKHBhcnRpYWwgaW5zdGFuY2VvZiBGdW5jdGlvbikgeworICAgICAgcmV0dXJuIHBh
cnRpYWwoY29udGV4dCwgb3B0aW9ucyk7CisgICAgfQorICB9CisKKyAgZnVuY3Rpb24gbm9vcCgp
IHsKKyAgICByZXR1cm4gJyc7CisgIH0KKworICBmdW5jdGlvbiBpbml0RGF0YShjb250ZXh0LCBk
YXRhKSB7CisgICAgaWYgKCFkYXRhIHx8ICEoJ3Jvb3QnIGluIGRhdGEpKSB7CisgICAgICBkYXRh
ID0gZGF0YSA/IF9iYXNlLmNyZWF0ZUZyYW1lKGRhdGEpIDoge307CisgICAgICBkYXRhLnJvb3Qg
PSBjb250ZXh0OworICAgIH0KKyAgICByZXR1cm4gZGF0YTsKKyAgfQorCisgIGZ1bmN0aW9uIGV4
ZWN1dGVEZWNvcmF0b3JzKGZuLCBwcm9nLCBjb250YWluZXIsIGRlcHRocywgZGF0YSwgYmxvY2tQ
YXJhbXMpIHsKKyAgICBpZiAoZm4uZGVjb3JhdG9yKSB7CisgICAgICB2YXIgcHJvcHMgPSB7fTsK
KyAgICAgIHByb2cgPSBmbi5kZWNvcmF0b3IocHJvZywgcHJvcHMsIGNvbnRhaW5lciwgZGVwdGhz
ICYmIGRlcHRoc1swXSwgZGF0YSwgYmxvY2tQYXJhbXMsIGRlcHRocyk7CisgICAgICBfdXRpbHMu
ZXh0ZW5kKHByb2csIHByb3BzKTsKKyAgICB9CisgICAgcmV0dXJuIHByb2c7CisgIH0KK30pOwor
Ly8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhK
emFXOXVJam96TENKemIzVnlZMlZ6SWpwYklpNHVMeTR1THk0dUwyeHBZaTlvWVc1a2JHVmlZWEp6
TDNKMWJuUnBiV1V1YW5NaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWpzN096czdP
enM3T3pzN096czdPenRCUVVsUExGZEJRVk1zWVVGQllTeERRVUZETEZsQlFWa3NSVUZCUlR0QlFV
TXhReXhSUVVGTkxHZENRVUZuUWl4SFFVRkhMRmxCUVZrc1NVRkJTU3haUVVGWkxFTkJRVU1zUTBG
QlF5eERRVUZETEVsQlFVa3NRMEZCUXp0UlFVTjJSQ3hsUVVGbExGTkJTbVFzYVVKQlFXbENMRUZC
U1dsQ0xFTkJRVU03TzBGQlJURkRMRkZCUVVrc1owSkJRV2RDTEV0QlFVc3NaVUZCWlN4RlFVRkZP
MEZCUTNoRExGVkJRVWtzWjBKQlFXZENMRWRCUVVjc1pVRkJaU3hGUVVGRk8wRkJRM1JETEZsQlFV
MHNaVUZCWlN4SFFVRkhMRTFCVWtZc1owSkJRV2RDTEVOQlVVY3NaVUZCWlN4RFFVRkRPMWxCUTI1
RUxHZENRVUZuUWl4SFFVRkhMRTFCVkVnc1owSkJRV2RDTEVOQlUwa3NaMEpCUVdkQ0xFTkJRVU1z
UTBGQlF6dEJRVU0xUkN4alFVRk5MREJDUVVGakxIbEdRVUY1Uml4SFFVTjJSeXh4UkVGQmNVUXNS
MEZCUnl4bFFVRmxMRWRCUVVjc2JVUkJRVzFFTEVkQlFVY3NaMEpCUVdkQ0xFZEJRVWNzU1VGQlNT
eERRVUZETEVOQlFVTTdUMEZEYUVzc1RVRkJUVHM3UVVGRlRDeGpRVUZOTERCQ1FVRmpMSGRHUVVG
M1JpeEhRVU4wUnl4cFJFRkJhVVFzUjBGQlJ5eFpRVUZaTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRC
UVVjc1NVRkJTU3hEUVVGRExFTkJRVU03VDBGRGJrWTdTMEZEUmp0SFFVTkdPenRCUVVWTkxGZEJR
Vk1zVVVGQlVTeERRVUZETEZsQlFWa3NSVUZCUlN4SFFVRkhMRVZCUVVVN08wRkJSVEZETEZGQlFV
a3NRMEZCUXl4SFFVRkhMRVZCUVVVN1FVRkRVaXhaUVVGTkxEQkNRVUZqTEcxRFFVRnRReXhEUVVG
RExFTkJRVU03UzBGRE1VUTdRVUZEUkN4UlFVRkpMRU5CUVVNc1dVRkJXU3hKUVVGSkxFTkJRVU1z
V1VGQldTeERRVUZETEVsQlFVa3NSVUZCUlR0QlFVTjJReXhaUVVGTkxEQkNRVUZqTERKQ1FVRXlR
aXhIUVVGSExFOUJRVThzV1VGQldTeERRVUZETEVOQlFVTTdTMEZEZUVVN08wRkJSVVFzWjBKQlFW
a3NRMEZCUXl4SlFVRkpMRU5CUVVNc1UwRkJVeXhIUVVGSExGbEJRVmtzUTBGQlF5eE5RVUZOTEVO
QlFVTTdPenM3UVVGSmJFUXNUMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhoUVVGaExFTkJRVU1z
V1VGQldTeERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRPenRCUVVVMVF5eGhRVUZUTEc5Q1FVRnZR
aXhEUVVGRExFOUJRVThzUlVGQlJTeFBRVUZQTEVWQlFVVXNUMEZCVHl4RlFVRkZPMEZCUTNaRUxG
VkJRVWtzVDBGQlR5eERRVUZETEVsQlFVa3NSVUZCUlR0QlFVTm9RaXhsUVVGUExFZEJRVWNzVDBG
QlRTeE5RVUZOTEVOQlFVTXNSVUZCUlN4RlFVRkZMRTlCUVU4c1JVRkJSU3hQUVVGUExFTkJRVU1z
U1VGQlNTeERRVUZETEVOQlFVTTdRVUZEYkVRc1dVRkJTU3hQUVVGUExFTkJRVU1zUjBGQlJ5eEZR
VUZGTzBGQlEyWXNhVUpCUVU4c1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFV
Y3NTVUZCU1N4RFFVRkRPMU5CUTNaQ08wOUJRMFk3TzBGQlJVUXNZVUZCVHl4SFFVRkhMRWRCUVVj
c1EwRkJReXhGUVVGRkxFTkJRVU1zWTBGQll5eERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRVZC
UVVVc1QwRkJUeXhGUVVGRkxFOUJRVThzUlVGQlJTeFBRVUZQTEVOQlFVTXNRMEZCUXp0QlFVTjBS
U3hWUVVGSkxFMUJRVTBzUjBGQlJ5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMR0ZCUVdFc1Ew
RkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeEZRVUZGTEU5QlFVOHNSVUZCUlN4UFFVRlBMRVZCUVVV
c1QwRkJUeXhEUVVGRExFTkJRVU03TzBGQlJYaEZMRlZCUVVrc1RVRkJUU3hKUVVGSkxFbEJRVWtz
U1VGQlNTeEhRVUZITEVOQlFVTXNUMEZCVHl4RlFVRkZPMEZCUTJwRExHVkJRVThzUTBGQlF5eFJR
VUZSTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFZEJRVWNzUTBGQlF5
eFBRVUZQTEVOQlFVTXNUMEZCVHl4RlFVRkZMRmxCUVZrc1EwRkJReXhsUVVGbExFVkJRVVVzUjBG
QlJ5eERRVUZETEVOQlFVTTdRVUZEZWtZc1kwRkJUU3hIUVVGSExFOUJRVThzUTBGQlF5eFJRVUZS
TEVOQlFVTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFOUJRVThzUlVGQlJTeFBR
VUZQTEVOQlFVTXNRMEZCUXp0UFFVTXpSRHRCUVVORUxGVkJRVWtzVFVGQlRTeEpRVUZKTEVsQlFV
a3NSVUZCUlR0QlFVTnNRaXhaUVVGSkxFOUJRVThzUTBGQlF5eE5RVUZOTEVWQlFVVTdRVUZEYkVJ
c1kwRkJTU3hMUVVGTExFZEJRVWNzVFVGQlRTeERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5C
UVVNc1EwRkJRenRCUVVNdlFpeGxRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJS
U3hEUVVGRExFZEJRVWNzUzBGQlN5eERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRMRWRCUVVjc1Ew
RkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTzBGQlF6VkRMR2RDUVVGSkxFTkJRVU1zUzBG
QlN5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFdEJRVXNz
UTBGQlF5eEZRVUZGTzBGQlF6VkNMRzlDUVVGTk8yRkJRMUE3TzBGQlJVUXNhVUpCUVVzc1EwRkJR
eXhEUVVGRExFTkJRVU1zUjBGQlJ5eFBRVUZQTEVOQlFVTXNUVUZCVFN4SFFVRkhMRXRCUVVzc1Ew
RkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFhRVU4wUXp0QlFVTkVMR2RDUVVGTkxFZEJRVWNzUzBG
QlN5eERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRUUVVNelFqdEJRVU5F
TEdWQlFVOHNUVUZCVFN4RFFVRkRPMDlCUTJZc1RVRkJUVHRCUVVOTUxHTkJRVTBzTUVKQlFXTXNZ
MEZCWXl4SFFVRkhMRTlCUVU4c1EwRkJReXhKUVVGSkxFZEJRVWNzTUVSQlFUQkVMRU5CUVVNc1Ew
RkJRenRQUVVOcVNEdExRVU5HT3pzN1FVRkhSQ3hSUVVGSkxGTkJRVk1zUjBGQlJ6dEJRVU5rTEZs
QlFVMHNSVUZCUlN4blFrRkJVeXhIUVVGSExFVkJRVVVzU1VGQlNTeEZRVUZGTzBGQlF6RkNMRmxC
UVVrc1JVRkJSU3hKUVVGSkxFbEJRVWtzUjBGQlJ5eERRVUZCTEVGQlFVTXNSVUZCUlR0QlFVTnNR
aXhuUWtGQlRTd3dRa0ZCWXl4SFFVRkhMRWRCUVVjc1NVRkJTU3hIUVVGSExHMUNRVUZ0UWl4SFFV
RkhMRWRCUVVjc1EwRkJReXhEUVVGRE8xTkJRemRFTzBGQlEwUXNaVUZCVHl4SFFVRkhMRU5CUVVN
c1NVRkJTU3hEUVVGRExFTkJRVU03VDBGRGJFSTdRVUZEUkN4WlFVRk5MRVZCUVVVc1owSkJRVk1z
VFVGQlRTeEZRVUZGTEVsQlFVa3NSVUZCUlR0QlFVTTNRaXhaUVVGTkxFZEJRVWNzUjBGQlJ5eE5R
VUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRPMEZCUXpGQ0xHRkJRVXNzU1VGQlNTeERRVUZETEVkQlFV
Y3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhIUVVGSExFVkJRVVVzUTBGQlF5eEZRVUZGTEVW
QlFVVTdRVUZETlVJc1kwRkJTU3hOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NUVUZC
VFN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVsQlFVa3NS
VUZCUlR0QlFVTjRReXh0UWtGQlR5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1NV
RkJTU3hEUVVGRExFTkJRVU03VjBGRGVFSTdVMEZEUmp0UFFVTkdPMEZCUTBRc1dVRkJUU3hGUVVG
RkxHZENRVUZUTEU5QlFVOHNSVUZCUlN4UFFVRlBMRVZCUVVVN1FVRkRha01zWlVGQlR5eFBRVUZQ
TEU5QlFVOHNTMEZCU3l4VlFVRlZMRWRCUVVjc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eFBR
VUZQTEVOQlFVTXNSMEZCUnl4UFFVRlBMRU5CUVVNN1QwRkRlRVU3TzBGQlJVUXNjMEpCUVdkQ0xF
VkJRVVVzVDBGQlRTeG5Ra0ZCWjBJN1FVRkRlRU1zYlVKQlFXRXNSVUZCUlN4dlFrRkJiMEk3TzBG
QlJXNURMRkZCUVVVc1JVRkJSU3haUVVGVExFTkJRVU1zUlVGQlJUdEJRVU5rTEZsQlFVa3NSMEZC
Unl4SFFVRkhMRmxCUVZrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU14UWl4WFFVRkhM
RU5CUVVNc1UwRkJVeXhIUVVGSExGbEJRVmtzUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFV
RkRMRU5CUVVNN1FVRkRka01zWlVGQlR5eEhRVUZITEVOQlFVTTdUMEZEV2pzN1FVRkZSQ3hqUVVG
UkxFVkJRVVVzUlVGQlJUdEJRVU5hTEdGQlFVOHNSVUZCUlN4cFFrRkJVeXhEUVVGRExFVkJRVVVz
U1VGQlNTeEZRVUZGTEcxQ1FVRnRRaXhGUVVGRkxGZEJRVmNzUlVGQlJTeE5RVUZOTEVWQlFVVTdR
VUZEYmtVc1dVRkJTU3hqUVVGakxFZEJRVWNzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4RFFV
RkRMRU5CUVVNN1dVRkRha01zUlVGQlJTeEhRVUZITEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVN
c1EwRkJReXhEUVVGRExFTkJRVU03UVVGRGNFSXNXVUZCU1N4SlFVRkpMRWxCUVVrc1RVRkJUU3hK
UVVGSkxGZEJRVmNzU1VGQlNTeHRRa0ZCYlVJc1JVRkJSVHRCUVVONFJDeDNRa0ZCWXl4SFFVRkhM
RmRCUVZjc1EwRkJReXhKUVVGSkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVXNSVUZCUlN4SlFV
RkpMRVZCUVVVc2JVSkJRVzFDTEVWQlFVVXNWMEZCVnl4RlFVRkZMRTFCUVUwc1EwRkJReXhEUVVG
RE8xTkJRek5HTEUxQlFVMHNTVUZCU1N4RFFVRkRMR05CUVdNc1JVRkJSVHRCUVVNeFFpeDNRa0ZC
WXl4SFFVRkhMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NW
MEZCVnl4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFV
TTdVMEZET1VRN1FVRkRSQ3hsUVVGUExHTkJRV01zUTBGQlF6dFBRVU4yUWpzN1FVRkZSQ3hWUVVG
SkxFVkJRVVVzWTBGQlV5eExRVUZMTEVWQlFVVXNTMEZCU3l4RlFVRkZPMEZCUXpOQ0xHVkJRVThz
UzBGQlN5eEpRVUZKTEV0QlFVc3NSVUZCUlN4RlFVRkZPMEZCUTNaQ0xHVkJRVXNzUjBGQlJ5eExR
VUZMTEVOQlFVTXNUMEZCVHl4RFFVRkRPMU5CUTNaQ08wRkJRMFFzWlVGQlR5eExRVUZMTEVOQlFV
TTdUMEZEWkR0QlFVTkVMRmRCUVVzc1JVRkJSU3hsUVVGVExFdEJRVXNzUlVGQlJTeE5RVUZOTEVW
QlFVVTdRVUZETjBJc1dVRkJTU3hIUVVGSExFZEJRVWNzUzBGQlN5eEpRVUZKTEUxQlFVMHNRMEZC
UXpzN1FVRkZNVUlzV1VGQlNTeExRVUZMTEVsQlFVa3NUVUZCVFN4SlFVRkxMRXRCUVVzc1MwRkJT
eXhOUVVGTkxFRkJRVU1zUlVGQlJUdEJRVU42UXl4aFFVRkhMRWRCUVVjc1QwRkJUU3hOUVVGTkxF
TkJRVU1zUlVGQlJTeEZRVUZGTEUxQlFVMHNSVUZCUlN4TFFVRkxMRU5CUVVNc1EwRkJRenRUUVVO
MlF6czdRVUZGUkN4bFFVRlBMRWRCUVVjc1EwRkJRenRQUVVOYU96dEJRVVZFTEZWQlFVa3NSVUZC
UlN4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFbEJRVWs3UVVGRGFrSXNhMEpCUVZrc1JVRkJS
U3haUVVGWkxFTkJRVU1zVVVGQlVUdExRVU53UXl4RFFVRkRPenRCUVVWR0xHRkJRVk1zUjBGQlJ5
eERRVUZETEU5QlFVOHNSVUZCWjBJN1ZVRkJaQ3hQUVVGUExIbEVRVUZITEVWQlFVVTdPMEZCUTJo
RExGVkJRVWtzU1VGQlNTeEhRVUZITEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNN08wRkJSWGhD
TEZOQlFVY3NRMEZCUXl4TlFVRk5MRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03UVVGRGNFSXNW
VUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhQUVVGUExFbEJRVWtzV1VGQldTeERRVUZETEU5QlFV
OHNSVUZCUlR0QlFVTTFReXhaUVVGSkxFZEJRVWNzVVVGQlVTeERRVUZETEU5QlFVOHNSVUZCUlN4
SlFVRkpMRU5CUVVNc1EwRkJRenRQUVVOb1F6dEJRVU5FTEZWQlFVa3NUVUZCVFN4WlFVRkJPMVZC
UTA0c1YwRkJWeXhIUVVGSExGbEJRVmtzUTBGQlF5eGpRVUZqTEVkQlFVY3NSVUZCUlN4SFFVRkhM
Rk5CUVZNc1EwRkJRenRCUVVNdlJDeFZRVUZKTEZsQlFWa3NRMEZCUXl4VFFVRlRMRVZCUVVVN1FV
RkRNVUlzV1VGQlNTeFBRVUZQTEVOQlFVTXNUVUZCVFN4RlFVRkZPMEZCUTJ4Q0xHZENRVUZOTEVk
QlFVY3NUMEZCVHl4SlFVRkpMRTlCUVU4c1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZE
TEVkQlFVY3NRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zVDBGQlR5eERR
VUZETEUxQlFVMHNRMEZCUXl4SFFVRkhMRTlCUVU4c1EwRkJReXhOUVVGTkxFTkJRVU03VTBGRE0w
WXNUVUZCVFR0QlFVTk1MR2RDUVVGTkxFZEJRVWNzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0
VFFVTndRanRQUVVOR096dEJRVVZFTEdWQlFWTXNTVUZCU1N4RFFVRkRMRTlCUVU4c1owSkJRV1U3
UVVGRGJFTXNaVUZCVHl4RlFVRkZMRWRCUVVjc1dVRkJXU3hEUVVGRExFbEJRVWtzUTBGQlF5eFRR
VUZUTEVWQlFVVXNUMEZCVHl4RlFVRkZMRk5CUVZNc1EwRkJReXhQUVVGUExFVkJRVVVzVTBGQlV5
eERRVUZETEZGQlFWRXNSVUZCUlN4SlFVRkpMRVZCUVVVc1YwRkJWeXhGUVVGRkxFMUJRVTBzUTBG
QlF5eERRVUZETzA5QlEzSklPMEZCUTBRc1ZVRkJTU3hIUVVGSExHbENRVUZwUWl4RFFVRkRMRmxC
UVZrc1EwRkJReXhKUVVGSkxFVkJRVVVzU1VGQlNTeEZRVUZGTEZOQlFWTXNSVUZCUlN4UFFVRlBM
RU5CUVVNc1RVRkJUU3hKUVVGSkxFVkJRVVVzUlVGQlJTeEpRVUZKTEVWQlFVVXNWMEZCVnl4RFFV
RkRMRU5CUVVNN1FVRkRkRWNzWVVGQlR5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RlFVRkZMRTlCUVU4
c1EwRkJReXhEUVVGRE8wdEJReTlDTzBGQlEwUXNUMEZCUnl4RFFVRkRMRXRCUVVzc1IwRkJSeXhK
UVVGSkxFTkJRVU03TzBGQlJXcENMRTlCUVVjc1EwRkJReXhOUVVGTkxFZEJRVWNzVlVGQlV5eFBR
VUZQTEVWQlFVVTdRVUZETjBJc1ZVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eFBRVUZQTEVWQlFV
VTdRVUZEY0VJc2FVSkJRVk1zUTBGQlF5eFBRVUZQTEVkQlFVY3NVMEZCVXl4RFFVRkRMRXRCUVVz
c1EwRkJReXhQUVVGUExFTkJRVU1zVDBGQlR5eEZRVUZGTEVkQlFVY3NRMEZCUXl4UFFVRlBMRU5C
UVVNc1EwRkJRenM3UVVGRmJFVXNXVUZCU1N4WlFVRlpMRU5CUVVNc1ZVRkJWU3hGUVVGRk8wRkJR
ek5DTEcxQ1FVRlRMRU5CUVVNc1VVRkJVU3hIUVVGSExGTkJRVk1zUTBGQlF5eExRVUZMTEVOQlFV
TXNUMEZCVHl4RFFVRkRMRkZCUVZFc1JVRkJSU3hIUVVGSExFTkJRVU1zVVVGQlVTeERRVUZETEVO
QlFVTTdVMEZEZEVVN1FVRkRSQ3haUVVGSkxGbEJRVmtzUTBGQlF5eFZRVUZWTEVsQlFVa3NXVUZC
V1N4RFFVRkRMR0ZCUVdFc1JVRkJSVHRCUVVONlJDeHRRa0ZCVXl4RFFVRkRMRlZCUVZVc1IwRkJS
eXhUUVVGVExFTkJRVU1zUzBGQlN5eERRVUZETEU5QlFVOHNRMEZCUXl4VlFVRlZMRVZCUVVVc1Iw
RkJSeXhEUVVGRExGVkJRVlVzUTBGQlF5eERRVUZETzFOQlF6VkZPMDlCUTBZc1RVRkJUVHRCUVVO
TUxHbENRVUZUTEVOQlFVTXNUMEZCVHl4SFFVRkhMRTlCUVU4c1EwRkJReXhQUVVGUExFTkJRVU03
UVVGRGNFTXNhVUpCUVZNc1EwRkJReXhSUVVGUkxFZEJRVWNzVDBGQlR5eERRVUZETEZGQlFWRXNR
MEZCUXp0QlFVTjBReXhwUWtGQlV5eERRVUZETEZWQlFWVXNSMEZCUnl4UFFVRlBMRU5CUVVNc1ZV
RkJWU3hEUVVGRE8wOUJRek5ETzB0QlEwWXNRMEZCUXpzN1FVRkZSaXhQUVVGSExFTkJRVU1zVFVG
QlRTeEhRVUZITEZWQlFWTXNRMEZCUXl4RlFVRkZMRWxCUVVrc1JVRkJSU3hYUVVGWExFVkJRVVVz
VFVGQlRTeEZRVUZGTzBGQlEyeEVMRlZCUVVrc1dVRkJXU3hEUVVGRExHTkJRV01zU1VGQlNTeERR
VUZETEZkQlFWY3NSVUZCUlR0QlFVTXZReXhqUVVGTkxEQkNRVUZqTEhkQ1FVRjNRaXhEUVVGRExF
TkJRVU03VDBGREwwTTdRVUZEUkN4VlFVRkpMRmxCUVZrc1EwRkJReXhUUVVGVExFbEJRVWtzUTBG
QlF5eE5RVUZOTEVWQlFVVTdRVUZEY2tNc1kwRkJUU3d3UWtGQll5eDVRa0ZCZVVJc1EwRkJReXhE
UVVGRE8wOUJRMmhFT3p0QlFVVkVMR0ZCUVU4c1YwRkJWeXhEUVVGRExGTkJRVk1zUlVGQlJTeERR
VUZETEVWQlFVVXNXVUZCV1N4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFbEJRVWtzUlVGQlJT
eERRVUZETEVWQlFVVXNWMEZCVnl4RlFVRkZMRTFCUVUwc1EwRkJReXhEUVVGRE8wdEJRMnBHTEVO
QlFVTTdRVUZEUml4WFFVRlBMRWRCUVVjc1EwRkJRenRIUVVOYU96dEJRVVZOTEZkQlFWTXNWMEZC
Vnl4RFFVRkRMRk5CUVZNc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJTeEZRVUZGTEVsQlFVa3NS
VUZCUlN4dFFrRkJiVUlzUlVGQlJTeFhRVUZYTEVWQlFVVXNUVUZCVFN4RlFVRkZPMEZCUXpWR0xH
RkJRVk1zU1VGQlNTeERRVUZETEU5QlFVOHNSVUZCWjBJN1ZVRkJaQ3hQUVVGUExIbEVRVUZITEVW
QlFVVTdPMEZCUTJwRExGVkJRVWtzWVVGQllTeEhRVUZITEUxQlFVMHNRMEZCUXp0QlFVTXpRaXhW
UVVGSkxFMUJRVTBzU1VGQlNTeFBRVUZQTEVsQlFVa3NUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJR
eXhGUVVGRk8wRkJRMnhETEhGQ1FVRmhMRWRCUVVjc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5
eE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1QwRkRNVU03TzBGQlJVUXNZVUZCVHl4
RlFVRkZMRU5CUVVNc1UwRkJVeXhGUVVObUxFOUJRVThzUlVGRFVDeFRRVUZUTEVOQlFVTXNUMEZC
VHl4RlFVRkZMRk5CUVZNc1EwRkJReXhSUVVGUkxFVkJRM0pETEU5QlFVOHNRMEZCUXl4SlFVRkpM
RWxCUVVrc1NVRkJTU3hGUVVOd1FpeFhRVUZYTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1Yw
RkJWeXhEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEZkQlFWY3NRMEZCUXl4RlFVTjRSQ3hoUVVG
aExFTkJRVU1zUTBGQlF6dExRVU53UWpzN1FVRkZSQ3hSUVVGSkxFZEJRVWNzYVVKQlFXbENMRU5C
UVVNc1JVRkJSU3hGUVVGRkxFbEJRVWtzUlVGQlJTeFRRVUZUTEVWQlFVVXNUVUZCVFN4RlFVRkZM
RWxCUVVrc1JVRkJSU3hYUVVGWExFTkJRVU1zUTBGQlF6czdRVUZGZWtVc1VVRkJTU3hEUVVGRExF
OUJRVThzUjBGQlJ5eERRVUZETEVOQlFVTTdRVUZEYWtJc1VVRkJTU3hEUVVGRExFdEJRVXNzUjBG
QlJ5eE5RVUZOTEVkQlFVY3NUVUZCVFN4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU03
UVVGRGVFTXNVVUZCU1N4RFFVRkRMRmRCUVZjc1IwRkJSeXh0UWtGQmJVSXNTVUZCU1N4RFFVRkRM
RU5CUVVNN1FVRkROVU1zVjBGQlR5eEpRVUZKTEVOQlFVTTdSMEZEWWpzN1FVRkZUU3hYUVVGVExH
TkJRV01zUTBGQlF5eFBRVUZQTEVWQlFVVXNUMEZCVHl4RlFVRkZMRTlCUVU4c1JVRkJSVHRCUVVO
NFJDeFJRVUZKTEVOQlFVTXNUMEZCVHl4RlFVRkZPMEZCUTFvc1ZVRkJTU3hQUVVGUExFTkJRVU1z
U1VGQlNTeExRVUZMTEdkQ1FVRm5RaXhGUVVGRk8wRkJRM0pETEZsQlFVa3NTVUZCU1N4SFFVRkhM
RTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU03UVVGRGVFSXNaVUZCVHl4SlFVRkpMRU5CUVVNc1pV
RkJaU3hEUVVGRExFdEJRVXNzU1VGQlNTeEZRVUZGTzBGQlEzSkRMR05CUVVrc1IwRkJSeXhKUVVG
SkxFTkJRVU1zVDBGQlR5eERRVUZETzFOQlEzSkNPMEZCUTBRc1pVRkJUeXhIUVVGSExFbEJRVWtz
UTBGQlF5eGxRVUZsTEVOQlFVTXNRMEZCUXp0QlFVTm9ReXhaUVVGSkxFTkJRVU1zWlVGQlpTeERR
VUZETEVkQlFVY3NTVUZCU1N4RFFVRkRPMDlCUXpsQ0xFMUJRVTA3UVVGRFRDeGxRVUZQTEVkQlFV
Y3NUMEZCVHl4RFFVRkRMRkZCUVZFc1EwRkJReXhQUVVGUExFTkJRVU1zU1VGQlNTeERRVUZETEVO
QlFVTTdUMEZETVVNN1MwRkRSaXhOUVVGTkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZC
U1N4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFbEJRVWtzUlVGQlJUczdRVUZGZWtNc1lVRkJU
eXhEUVVGRExFbEJRVWtzUjBGQlJ5eFBRVUZQTEVOQlFVTTdRVUZEZGtJc1lVRkJUeXhIUVVGSExF
OUJRVThzUTBGQlF5eFJRVUZSTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1MwRkRja003UVVG
RFJDeFhRVUZQTEU5QlFVOHNRMEZCUXp0SFFVTm9RanM3UVVGRlRTeFhRVUZUTEdGQlFXRXNRMEZC
UXl4UFFVRlBMRVZCUVVVc1QwRkJUeXhGUVVGRkxFOUJRVThzUlVGQlJUdEJRVU4yUkN4WFFVRlBM
RU5CUVVNc1QwRkJUeXhIUVVGSExFbEJRVWtzUTBGQlF6dEJRVU4yUWl4UlFVRkpMRTlCUVU4c1Ew
RkJReXhIUVVGSExFVkJRVVU3UVVGRFppeGhRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRmRCUVZj
c1IwRkJSeXhQUVVGUExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRTlC
UVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zVjBGQlZ5eERRVUZETzB0QlEzWkZPenRCUVVWRUxGRkJR
VWtzV1VGQldTeFpRVUZCTEVOQlFVTTdRVUZEYWtJc1VVRkJTU3hQUVVGUExFTkJRVU1zUlVGQlJT
eEpRVUZKTEU5QlFVOHNRMEZCUXl4RlFVRkZMRXRCUVVzc1NVRkJTU3hGUVVGRk8wRkJRM0pETEdG
QlFVOHNRMEZCUXl4SlFVRkpMRWRCUVVjc1RVRXpUekpDTEZkQlFWY3NRMEV5VHpGQ0xFOUJRVThz
UTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0QlFVTjZReXhyUWtGQldTeEhRVUZITEU5QlFVOHNR
MEZCUXl4SlFVRkpMRU5CUVVNc1pVRkJaU3hEUVVGRExFZEJRVWNzVDBGQlR5eERRVUZETEVWQlFV
VXNRMEZCUXpzN1FVRkZNVVFzVlVGQlNTeFpRVUZaTEVOQlFVTXNVVUZCVVN4RlFVRkZPMEZCUTNw
Q0xHVkJRVThzUTBGQlF5eFJRVUZSTEVkQlFVY3NUMEZCVFN4TlFVRk5MRU5CUVVNc1JVRkJSU3hG
UVVGRkxFOUJRVThzUTBGQlF5eFJRVUZSTEVWQlFVVXNXVUZCV1N4RFFVRkRMRkZCUVZFc1EwRkJR
eXhEUVVGRE8wOUJRemxGTzB0QlEwWTdPMEZCUlVRc1VVRkJTU3hQUVVGUExFdEJRVXNzVTBGQlV5
eEpRVUZKTEZsQlFWa3NSVUZCUlR0QlFVTjZReXhoUVVGUExFZEJRVWNzV1VGQldTeERRVUZETzB0
QlEzaENPenRCUVVWRUxGRkJRVWtzVDBGQlR5eExRVUZMTEZOQlFWTXNSVUZCUlR0QlFVTjZRaXha
UVVGTkxEQkNRVUZqTEdOQlFXTXNSMEZCUnl4UFFVRlBMRU5CUVVNc1NVRkJTU3hIUVVGSExIRkNR
VUZ4UWl4RFFVRkRMRU5CUVVNN1MwRkROVVVzVFVGQlRTeEpRVUZKTEU5QlFVOHNXVUZCV1N4UlFV
RlJMRVZCUVVVN1FVRkRkRU1zWVVGQlR5eFBRVUZQTEVOQlFVTXNUMEZCVHl4RlFVRkZMRTlCUVU4
c1EwRkJReXhEUVVGRE8wdEJRMnhETzBkQlEwWTdPMEZCUlUwc1YwRkJVeXhKUVVGSkxFZEJRVWM3
UVVGQlJTeFhRVUZQTEVWQlFVVXNRMEZCUXp0SFFVRkZPenRCUVVWeVF5eFhRVUZUTEZGQlFWRXNR
MEZCUXl4UFFVRlBMRVZCUVVVc1NVRkJTU3hGUVVGRk8wRkJReTlDTEZGQlFVa3NRMEZCUXl4SlFV
RkpMRWxCUVVrc1JVRkJSU3hOUVVGTkxFbEJRVWtzU1VGQlNTeERRVUZCTEVGQlFVTXNSVUZCUlR0
QlFVTTVRaXhWUVVGSkxFZEJRVWNzU1VGQlNTeEhRVUZITEUxQmJGRTBRaXhYUVVGWExFTkJhMUV6
UWl4SlFVRkpMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU03UVVGRGNrTXNWVUZCU1N4RFFVRkRM
RWxCUVVrc1IwRkJSeXhQUVVGUExFTkJRVU03UzBGRGNrSTdRVUZEUkN4WFFVRlBMRWxCUVVrc1Ew
RkJRenRIUVVOaU96dEJRVVZFTEZkQlFWTXNhVUpCUVdsQ0xFTkJRVU1zUlVGQlJTeEZRVUZGTEVs
QlFVa3NSVUZCUlN4VFFVRlRMRVZCUVVVc1RVRkJUU3hGUVVGRkxFbEJRVWtzUlVGQlJTeFhRVUZY
TEVWQlFVVTdRVUZEZWtVc1VVRkJTU3hGUVVGRkxFTkJRVU1zVTBGQlV5eEZRVUZGTzBGQlEyaENM
RlZCUVVrc1MwRkJTeXhIUVVGSExFVkJRVVVzUTBGQlF6dEJRVU5tTEZWQlFVa3NSMEZCUnl4RlFV
RkZMRU5CUVVNc1UwRkJVeXhEUVVGRExFbEJRVWtzUlVGQlJTeExRVUZMTEVWQlFVVXNVMEZCVXl4
RlFVRkZMRTFCUVUwc1NVRkJTU3hOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNTVUZC
U1N4RlFVRkZMRmRCUVZjc1JVRkJSU3hOUVVGTkxFTkJRVU1zUTBGQlF6dEJRVU0xUml4aFFVRk5M
RTFCUVUwc1EwRkJReXhKUVVGSkxFVkJRVVVzUzBGQlN5eERRVUZETEVOQlFVTTdTMEZETTBJN1FV
RkRSQ3hYUVVGUExFbEJRVWtzUTBGQlF6dEhRVU5pSWl3aVptbHNaU0k2SW5KMWJuUnBiV1V1YW5N
aUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SnBiWEJ2Y25RZ0tpQmhjeUJWZEdsc2N5Qm1jbTl0
SUNjdUwzVjBhV3h6Snp0Y2JtbHRjRzl5ZENCRmVHTmxjSFJwYjI0Z1puSnZiU0FuTGk5bGVHTmxj
SFJwYjI0bk8xeHVhVzF3YjNKMElIc2dRMDlOVUVsTVJWSmZVa1ZXU1ZOSlQwNHNJRkpGVmtsVFNV
OU9YME5JUVU1SFJWTXNJR055WldGMFpVWnlZVzFsSUgwZ1puSnZiU0FuTGk5aVlYTmxKenRjYmx4
dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdOb1pXTnJVbVYyYVhOcGIyNG9ZMjl0Y0dsc1pYSkpibVp2
S1NCN1hHNGdJR052Ym5OMElHTnZiWEJwYkdWeVVtVjJhWE5wYjI0Z1BTQmpiMjF3YVd4bGNrbHVa
bThnSmlZZ1kyOXRjR2xzWlhKSmJtWnZXekJkSUh4OElERXNYRzRnSUNBZ0lDQWdJR04xY25KbGJu
UlNaWFpwYzJsdmJpQTlJRU5QVFZCSlRFVlNYMUpGVmtsVFNVOU9PMXh1WEc0Z0lHbG1JQ2hqYjIx
d2FXeGxjbEpsZG1semFXOXVJQ0U5UFNCamRYSnlaVzUwVW1WMmFYTnBiMjRwSUh0Y2JpQWdJQ0Jw
WmlBb1kyOXRjR2xzWlhKU1pYWnBjMmx2YmlBOElHTjFjbkpsYm5SU1pYWnBjMmx2YmlrZ2UxeHVJ
Q0FnSUNBZ1kyOXVjM1FnY25WdWRHbHRaVlpsY25OcGIyNXpJRDBnVWtWV1NWTkpUMDVmUTBoQlRr
ZEZVMXRqZFhKeVpXNTBVbVYyYVhOcGIyNWRMRnh1SUNBZ0lDQWdJQ0FnSUNBZ1kyOXRjR2xzWlhK
V1pYSnphVzl1Y3lBOUlGSkZWa2xUU1U5T1gwTklRVTVIUlZOYlkyOXRjR2xzWlhKU1pYWnBjMmx2
YmwwN1hHNGdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1JYaGpaWEIwYVc5dUtDZFVaVzF3YkdGMFpTQjNZ
WE1nY0hKbFkyOXRjR2xzWldRZ2QybDBhQ0JoYmlCdmJHUmxjaUIyWlhKemFXOXVJRzltSUVoaGJt
UnNaV0poY25NZ2RHaGhiaUIwYUdVZ1kzVnljbVZ1ZENCeWRXNTBhVzFsTGlBbklDdGNiaUFnSUNB
Z0lDQWdJQ0FnSUNkUWJHVmhjMlVnZFhCa1lYUmxJSGx2ZFhJZ2NISmxZMjl0Y0dsc1pYSWdkRzhn
WVNCdVpYZGxjaUIyWlhKemFXOXVJQ2duSUNzZ2NuVnVkR2x0WlZabGNuTnBiMjV6SUNzZ0p5a2di
M0lnWkc5M2JtZHlZV1JsSUhsdmRYSWdjblZ1ZEdsdFpTQjBieUJoYmlCdmJHUmxjaUIyWlhKemFX
OXVJQ2duSUNzZ1kyOXRjR2xzWlhKV1pYSnphVzl1Y3lBcklDY3BMaWNwTzF4dUlDQWdJSDBnWld4
elpTQjdYRzRnSUNBZ0lDQXZMeUJWYzJVZ2RHaGxJR1Z0WW1Wa1pHVmtJSFpsY25OcGIyNGdhVzVt
YnlCemFXNWpaU0IwYUdVZ2NuVnVkR2x0WlNCa2IyVnpiaWQwSUd0dWIzY2dZV0p2ZFhRZ2RHaHBj
eUJ5WlhacGMybHZiaUI1WlhSY2JpQWdJQ0FnSUhSb2NtOTNJRzVsZHlCRmVHTmxjSFJwYjI0b0ox
UmxiWEJzWVhSbElIZGhjeUJ3Y21WamIyMXdhV3hsWkNCM2FYUm9JR0VnYm1WM1pYSWdkbVZ5YzJs
dmJpQnZaaUJJWVc1a2JHVmlZWEp6SUhSb1lXNGdkR2hsSUdOMWNuSmxiblFnY25WdWRHbHRaUzRn
SnlBclhHNGdJQ0FnSUNBZ0lDQWdJQ0FuVUd4bFlYTmxJSFZ3WkdGMFpTQjViM1Z5SUhKMWJuUnBi
V1VnZEc4Z1lTQnVaWGRsY2lCMlpYSnphVzl1SUNnbklDc2dZMjl0Y0dsc1pYSkpibVp2V3pGZElD
c2dKeWt1SnlrN1hHNGdJQ0FnZlZ4dUlDQjlYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlC
MFpXMXdiR0YwWlNoMFpXMXdiR0YwWlZOd1pXTXNJR1Z1ZGlrZ2UxeHVJQ0F2S2lCcGMzUmhibUox
YkNCcFoyNXZjbVVnYm1WNGRDQXFMMXh1SUNCcFppQW9JV1Z1ZGlrZ2UxeHVJQ0FnSUhSb2NtOTNJ
RzVsZHlCRmVHTmxjSFJwYjI0b0owNXZJR1Z1ZG1seWIyNXRaVzUwSUhCaGMzTmxaQ0IwYnlCMFpX
MXdiR0YwWlNjcE8xeHVJQ0I5WEc0Z0lHbG1JQ2doZEdWdGNHeGhkR1ZUY0dWaklIeDhJQ0YwWlcx
d2JHRjBaVk53WldNdWJXRnBiaWtnZTF4dUlDQWdJSFJvY205M0lHNWxkeUJGZUdObGNIUnBiMjRv
SjFWdWEyNXZkMjRnZEdWdGNHeGhkR1VnYjJKcVpXTjBPaUFuSUNzZ2RIbHdaVzltSUhSbGJYQnNZ
WFJsVTNCbFl5azdYRzRnSUgxY2JseHVJQ0IwWlcxd2JHRjBaVk53WldNdWJXRnBiaTVrWldOdmNt
RjBiM0lnUFNCMFpXMXdiR0YwWlZOd1pXTXViV0ZwYmw5a08xeHVYRzRnSUM4dklFNXZkR1U2SUZW
emFXNW5JR1Z1ZGk1V1RTQnlaV1psY21WdVkyVnpJSEpoZEdobGNpQjBhR0Z1SUd4dlkyRnNJSFpo
Y2lCeVpXWmxjbVZ1WTJWeklIUm9jbTkxWjJodmRYUWdkR2hwY3lCelpXTjBhVzl1SUhSdklHRnNi
RzkzWEc0Z0lDOHZJR1p2Y2lCbGVIUmxjbTVoYkNCMWMyVnljeUIwYnlCdmRtVnljbWxrWlNCMGFH
VnpaU0JoY3lCd2MzVmxaRzh0YzNWd2NHOXlkR1ZrSUVGUVNYTXVYRzRnSUdWdWRpNVdUUzVqYUdW
amExSmxkbWx6YVc5dUtIUmxiWEJzWVhSbFUzQmxZeTVqYjIxd2FXeGxjaWs3WEc1Y2JpQWdablZ1
WTNScGIyNGdhVzUyYjJ0bFVHRnlkR2xoYkZkeVlYQndaWElvY0dGeWRHbGhiQ3dnWTI5dWRHVjRk
Q3dnYjNCMGFXOXVjeWtnZTF4dUlDQWdJR2xtSUNodmNIUnBiMjV6TG1oaGMyZ3BJSHRjYmlBZ0lD
QWdJR052Ym5SbGVIUWdQU0JWZEdsc2N5NWxlSFJsYm1Rb2UzMHNJR052Ym5SbGVIUXNJRzl3ZEds
dmJuTXVhR0Z6YUNrN1hHNGdJQ0FnSUNCcFppQW9iM0IwYVc5dWN5NXBaSE1wSUh0Y2JpQWdJQ0Fn
SUNBZ2IzQjBhVzl1Y3k1cFpITmJNRjBnUFNCMGNuVmxPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNi
bHh1SUNBZ0lIQmhjblJwWVd3Z1BTQmxibll1VmswdWNtVnpiMngyWlZCaGNuUnBZV3d1WTJGc2JD
aDBhR2x6TENCd1lYSjBhV0ZzTENCamIyNTBaWGgwTENCdmNIUnBiMjV6S1R0Y2JpQWdJQ0JzWlhR
Z2NtVnpkV3gwSUQwZ1pXNTJMbFpOTG1sdWRtOXJaVkJoY25ScFlXd3VZMkZzYkNoMGFHbHpMQ0J3
WVhKMGFXRnNMQ0JqYjI1MFpYaDBMQ0J2Y0hScGIyNXpLVHRjYmx4dUlDQWdJR2xtSUNoeVpYTjFi
SFFnUFQwZ2JuVnNiQ0FtSmlCbGJuWXVZMjl0Y0dsc1pTa2dlMXh1SUNBZ0lDQWdiM0IwYVc5dWN5
NXdZWEowYVdGc2MxdHZjSFJwYjI1ekxtNWhiV1ZkSUQwZ1pXNTJMbU52YlhCcGJHVW9jR0Z5ZEds
aGJDd2dkR1Z0Y0d4aGRHVlRjR1ZqTG1OdmJYQnBiR1Z5VDNCMGFXOXVjeXdnWlc1MktUdGNiaUFn
SUNBZ0lISmxjM1ZzZENBOUlHOXdkR2x2Ym5NdWNHRnlkR2xoYkhOYmIzQjBhVzl1Y3k1dVlXMWxY
U2hqYjI1MFpYaDBMQ0J2Y0hScGIyNXpLVHRjYmlBZ0lDQjlYRzRnSUNBZ2FXWWdLSEpsYzNWc2RD
QWhQU0J1ZFd4c0tTQjdYRzRnSUNBZ0lDQnBaaUFvYjNCMGFXOXVjeTVwYm1SbGJuUXBJSHRjYmlB
Z0lDQWdJQ0FnYkdWMElHeHBibVZ6SUQwZ2NtVnpkV3gwTG5Od2JHbDBLQ2RjWEc0bktUdGNiaUFn
SUNBZ0lDQWdabTl5SUNoc1pYUWdhU0E5SURBc0lHd2dQU0JzYVc1bGN5NXNaVzVuZEdnN0lHa2dQ
Q0JzT3lCcEt5c3BJSHRjYmlBZ0lDQWdJQ0FnSUNCcFppQW9JV3hwYm1WelcybGRJQ1ltSUdrZ0t5
QXhJRDA5UFNCc0tTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQWdJQ0FnSUNC
OVhHNWNiaUFnSUNBZ0lDQWdJQ0JzYVc1bGMxdHBYU0E5SUc5d2RHbHZibk11YVc1a1pXNTBJQ3Nn
YkdsdVpYTmJhVjA3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2NtVnpkV3gwSUQwZ2JHbHVa
WE11YW05cGJpZ25YRnh1SnlrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNCeVpYUjFjbTRnY21WemRX
eDBPMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1JYaGpaWEIwYVc5
dUtDZFVhR1VnY0dGeWRHbGhiQ0FuSUNzZ2IzQjBhVzl1Y3k1dVlXMWxJQ3NnSnlCamIzVnNaQ0J1
YjNRZ1ltVWdZMjl0Y0dsc1pXUWdkMmhsYmlCeWRXNXVhVzVuSUdsdUlISjFiblJwYldVdGIyNXNl
U0J0YjJSbEp5azdYRzRnSUNBZ2ZWeHVJQ0I5WEc1Y2JpQWdMeThnU25WemRDQmhaR1FnZDJGMFpY
SmNiaUFnYkdWMElHTnZiblJoYVc1bGNpQTlJSHRjYmlBZ0lDQnpkSEpwWTNRNklHWjFibU4wYVc5
dUtHOWlhaXdnYm1GdFpTa2dlMXh1SUNBZ0lDQWdhV1lnS0NFb2JtRnRaU0JwYmlCdlltb3BLU0I3
WEc0Z0lDQWdJQ0FnSUhSb2NtOTNJRzVsZHlCRmVHTmxjSFJwYjI0b0oxd2lKeUFySUc1aGJXVWdL
eUFuWENJZ2JtOTBJR1JsWm1sdVpXUWdhVzRnSnlBcklHOWlhaWs3WEc0Z0lDQWdJQ0I5WEc0Z0lD
QWdJQ0J5WlhSMWNtNGdiMkpxVzI1aGJXVmRPMXh1SUNBZ0lIMHNYRzRnSUNBZ2JHOXZhM1Z3T2lC
bWRXNWpkR2x2Ymloa1pYQjBhSE1zSUc1aGJXVXBJSHRjYmlBZ0lDQWdJR052Ym5OMElHeGxiaUE5
SUdSbGNIUm9jeTVzWlc1bmRHZzdYRzRnSUNBZ0lDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJ
R3hsYmpzZ2FTc3JLU0I3WEc0Z0lDQWdJQ0FnSUdsbUlDaGtaWEIwYUhOYmFWMGdKaVlnWkdWd2RH
aHpXMmxkVzI1aGJXVmRJQ0U5SUc1MWJHd3BJSHRjYmlBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnWkdW
d2RHaHpXMmxkVzI1aGJXVmRPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmU3hj
YmlBZ0lDQnNZVzFpWkdFNklHWjFibU4wYVc5dUtHTjFjbkpsYm5Rc0lHTnZiblJsZUhRcElIdGNi
aUFnSUNBZ0lISmxkSFZ5YmlCMGVYQmxiMllnWTNWeWNtVnVkQ0E5UFQwZ0oyWjFibU4wYVc5dUp5
QS9JR04xY25KbGJuUXVZMkZzYkNoamIyNTBaWGgwS1NBNklHTjFjbkpsYm5RN1hHNGdJQ0FnZlN4
Y2JseHVJQ0FnSUdWelkyRndaVVY0Y0hKbGMzTnBiMjQ2SUZWMGFXeHpMbVZ6WTJGd1pVVjRjSEps
YzNOcGIyNHNYRzRnSUNBZ2FXNTJiMnRsVUdGeWRHbGhiRG9nYVc1MmIydGxVR0Z5ZEdsaGJGZHlZ
WEJ3WlhJc1hHNWNiaUFnSUNCbWJqb2dablZ1WTNScGIyNG9hU2tnZTF4dUlDQWdJQ0FnYkdWMElI
SmxkQ0E5SUhSbGJYQnNZWFJsVTNCbFkxdHBYVHRjYmlBZ0lDQWdJSEpsZEM1a1pXTnZjbUYwYjNJ
Z1BTQjBaVzF3YkdGMFpWTndaV05iYVNBcklDZGZaQ2RkTzF4dUlDQWdJQ0FnY21WMGRYSnVJSEps
ZER0Y2JpQWdJQ0I5TEZ4dVhHNGdJQ0FnY0hKdlozSmhiWE02SUZ0ZExGeHVJQ0FnSUhCeWIyZHlZ
VzA2SUdaMWJtTjBhVzl1S0drc0lHUmhkR0VzSUdSbFkyeGhjbVZrUW14dlkydFFZWEpoYlhNc0lH
SnNiMk5yVUdGeVlXMXpMQ0JrWlhCMGFITXBJSHRjYmlBZ0lDQWdJR3hsZENCd2NtOW5jbUZ0VjNK
aGNIQmxjaUE5SUhSb2FYTXVjSEp2WjNKaGJYTmJhVjBzWEc0Z0lDQWdJQ0FnSUNBZ1ptNGdQU0Iw
YUdsekxtWnVLR2twTzF4dUlDQWdJQ0FnYVdZZ0tHUmhkR0VnZkh3Z1pHVndkR2h6SUh4OElHSnNi
Mk5yVUdGeVlXMXpJSHg4SUdSbFkyeGhjbVZrUW14dlkydFFZWEpoYlhNcElIdGNiaUFnSUNBZ0lD
QWdjSEp2WjNKaGJWZHlZWEJ3WlhJZ1BTQjNjbUZ3VUhKdlozSmhiU2gwYUdsekxDQnBMQ0JtYml3
Z1pHRjBZU3dnWkdWamJHRnlaV1JDYkc5amExQmhjbUZ0Y3l3Z1lteHZZMnRRWVhKaGJYTXNJR1Js
Y0hSb2N5azdYRzRnSUNBZ0lDQjlJR1ZzYzJVZ2FXWWdLQ0Z3Y205bmNtRnRWM0poY0hCbGNpa2dl
MXh1SUNBZ0lDQWdJQ0J3Y205bmNtRnRWM0poY0hCbGNpQTlJSFJvYVhNdWNISnZaM0poYlhOYmFW
MGdQU0IzY21Gd1VISnZaM0poYlNoMGFHbHpMQ0JwTENCbWJpazdYRzRnSUNBZ0lDQjlYRzRnSUNB
Z0lDQnlaWFIxY200Z2NISnZaM0poYlZkeVlYQndaWEk3WEc0Z0lDQWdmU3hjYmx4dUlDQWdJR1Jo
ZEdFNklHWjFibU4wYVc5dUtIWmhiSFZsTENCa1pYQjBhQ2tnZTF4dUlDQWdJQ0FnZDJocGJHVWdL
SFpoYkhWbElDWW1JR1JsY0hSb0xTMHBJSHRjYmlBZ0lDQWdJQ0FnZG1Gc2RXVWdQU0IyWVd4MVpT
NWZjR0Z5Wlc1ME8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2NtVjBkWEp1SUhaaGJIVmxPMXh1SUNB
Z0lIMHNYRzRnSUNBZ2JXVnlaMlU2SUdaMWJtTjBhVzl1S0hCaGNtRnRMQ0JqYjIxdGIyNHBJSHRj
YmlBZ0lDQWdJR3hsZENCdlltb2dQU0J3WVhKaGJTQjhmQ0JqYjIxdGIyNDdYRzVjYmlBZ0lDQWdJ
R2xtSUNod1lYSmhiU0FtSmlCamIyMXRiMjRnSmlZZ0tIQmhjbUZ0SUNFOVBTQmpiMjF0YjI0cEtT
QjdYRzRnSUNBZ0lDQWdJRzlpYWlBOUlGVjBhV3h6TG1WNGRHVnVaQ2g3ZlN3Z1kyOXRiVzl1TENC
d1lYSmhiU2s3WEc0Z0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUhKbGRIVnliaUJ2WW1vN1hHNGdJQ0Fn
ZlN4Y2JseHVJQ0FnSUc1dmIzQTZJR1Z1ZGk1V1RTNXViMjl3TEZ4dUlDQWdJR052YlhCcGJHVnlT
VzVtYnpvZ2RHVnRjR3hoZEdWVGNHVmpMbU52YlhCcGJHVnlYRzRnSUgwN1hHNWNiaUFnWm5WdVkz
UnBiMjRnY21WMEtHTnZiblJsZUhRc0lHOXdkR2x2Ym5NZ1BTQjdmU2tnZTF4dUlDQWdJR3hsZENC
a1lYUmhJRDBnYjNCMGFXOXVjeTVrWVhSaE8xeHVYRzRnSUNBZ2NtVjBMbDl6WlhSMWNDaHZjSFJw
YjI1ektUdGNiaUFnSUNCcFppQW9JVzl3ZEdsdmJuTXVjR0Z5ZEdsaGJDQW1KaUIwWlcxd2JHRjBa
Vk53WldNdWRYTmxSR0YwWVNrZ2UxeHVJQ0FnSUNBZ1pHRjBZU0E5SUdsdWFYUkVZWFJoS0dOdmJu
UmxlSFFzSUdSaGRHRXBPMXh1SUNBZ0lIMWNiaUFnSUNCc1pYUWdaR1Z3ZEdoekxGeHVJQ0FnSUNB
Z0lDQmliRzlqYTFCaGNtRnRjeUE5SUhSbGJYQnNZWFJsVTNCbFl5NTFjMlZDYkc5amExQmhjbUZ0
Y3lBL0lGdGRJRG9nZFc1a1pXWnBibVZrTzF4dUlDQWdJR2xtSUNoMFpXMXdiR0YwWlZOd1pXTXVk
WE5sUkdWd2RHaHpLU0I3WEc0Z0lDQWdJQ0JwWmlBb2IzQjBhVzl1Y3k1a1pYQjBhSE1wSUh0Y2Jp
QWdJQ0FnSUNBZ1pHVndkR2h6SUQwZ1kyOXVkR1Y0ZENBaFBTQnZjSFJwYjI1ekxtUmxjSFJvYzFz
d1hTQS9JRnRqYjI1MFpYaDBYUzVqYjI1allYUW9iM0IwYVc5dWN5NWtaWEIwYUhNcElEb2diM0Iw
YVc5dWN5NWtaWEIwYUhNN1hHNGdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNCa1pYQjBh
SE1nUFNCYlkyOXVkR1Y0ZEYwN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dVhHNGdJQ0FnWm5WdVkz
UnBiMjRnYldGcGJpaGpiMjUwWlhoMEx5b3NJRzl3ZEdsdmJuTXFMeWtnZTF4dUlDQWdJQ0FnY21W
MGRYSnVJQ2NuSUNzZ2RHVnRjR3hoZEdWVGNHVmpMbTFoYVc0b1kyOXVkR0ZwYm1WeUxDQmpiMjUw
WlhoMExDQmpiMjUwWVdsdVpYSXVhR1ZzY0dWeWN5d2dZMjl1ZEdGcGJtVnlMbkJoY25ScFlXeHpM
Q0JrWVhSaExDQmliRzlqYTFCaGNtRnRjeXdnWkdWd2RHaHpLVHRjYmlBZ0lDQjlYRzRnSUNBZ2JX
RnBiaUE5SUdWNFpXTjFkR1ZFWldOdmNtRjBiM0p6S0hSbGJYQnNZWFJsVTNCbFl5NXRZV2x1TENC
dFlXbHVMQ0JqYjI1MFlXbHVaWElzSUc5d2RHbHZibk11WkdWd2RHaHpJSHg4SUZ0ZExDQmtZWFJo
TENCaWJHOWphMUJoY21GdGN5azdYRzRnSUNBZ2NtVjBkWEp1SUcxaGFXNG9ZMjl1ZEdWNGRDd2di
M0IwYVc5dWN5azdYRzRnSUgxY2JpQWdjbVYwTG1selZHOXdJRDBnZEhKMVpUdGNibHh1SUNCeVpY
UXVYM05sZEhWd0lEMGdablZ1WTNScGIyNG9iM0IwYVc5dWN5a2dlMXh1SUNBZ0lHbG1JQ2doYjNC
MGFXOXVjeTV3WVhKMGFXRnNLU0I3WEc0Z0lDQWdJQ0JqYjI1MFlXbHVaWEl1YUdWc2NHVnljeUE5
SUdOdmJuUmhhVzVsY2k1dFpYSm5aU2h2Y0hScGIyNXpMbWhsYkhCbGNuTXNJR1Z1ZGk1b1pXeHda
WEp6S1R0Y2JseHVJQ0FnSUNBZ2FXWWdLSFJsYlhCc1lYUmxVM0JsWXk1MWMyVlFZWEowYVdGc0tT
QjdYRzRnSUNBZ0lDQWdJR052Ym5SaGFXNWxjaTV3WVhKMGFXRnNjeUE5SUdOdmJuUmhhVzVsY2k1
dFpYSm5aU2h2Y0hScGIyNXpMbkJoY25ScFlXeHpMQ0JsYm5ZdWNHRnlkR2xoYkhNcE8xeHVJQ0Fn
SUNBZ2ZWeHVJQ0FnSUNBZ2FXWWdLSFJsYlhCc1lYUmxVM0JsWXk1MWMyVlFZWEowYVdGc0lIeDhJ
SFJsYlhCc1lYUmxVM0JsWXk1MWMyVkVaV052Y21GMGIzSnpLU0I3WEc0Z0lDQWdJQ0FnSUdOdmJu
UmhhVzVsY2k1a1pXTnZjbUYwYjNKeklEMGdZMjl1ZEdGcGJtVnlMbTFsY21kbEtHOXdkR2x2Ym5N
dVpHVmpiM0poZEc5eWN5d2daVzUyTG1SbFkyOXlZWFJ2Y25NcE8xeHVJQ0FnSUNBZ2ZWeHVJQ0Fn
SUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0JqYjI1MFlXbHVaWEl1YUdWc2NHVnljeUE5SUc5d2RHbHZi
bk11YUdWc2NHVnljenRjYmlBZ0lDQWdJR052Ym5SaGFXNWxjaTV3WVhKMGFXRnNjeUE5SUc5d2RH
bHZibk11Y0dGeWRHbGhiSE03WEc0Z0lDQWdJQ0JqYjI1MFlXbHVaWEl1WkdWamIzSmhkRzl5Y3lB
OUlHOXdkR2x2Ym5NdVpHVmpiM0poZEc5eWN6dGNiaUFnSUNCOVhHNGdJSDA3WEc1Y2JpQWdjbVYw
TGw5amFHbHNaQ0E5SUdaMWJtTjBhVzl1S0drc0lHUmhkR0VzSUdKc2IyTnJVR0Z5WVcxekxDQmta
WEIwYUhNcElIdGNiaUFnSUNCcFppQW9kR1Z0Y0d4aGRHVlRjR1ZqTG5WelpVSnNiMk5yVUdGeVlX
MXpJQ1ltSUNGaWJHOWphMUJoY21GdGN5a2dlMXh1SUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRVY0WTJW
d2RHbHZiaWduYlhWemRDQndZWE56SUdKc2IyTnJJSEJoY21GdGN5Y3BPMXh1SUNBZ0lIMWNiaUFn
SUNCcFppQW9kR1Z0Y0d4aGRHVlRjR1ZqTG5WelpVUmxjSFJvY3lBbUppQWhaR1Z3ZEdoektTQjdY
RzRnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dSWGhqWlhCMGFXOXVLQ2R0ZFhOMElIQmhjM01nY0dGeVpX
NTBJR1JsY0hSb2N5Y3BPMXh1SUNBZ0lIMWNibHh1SUNBZ0lISmxkSFZ5YmlCM2NtRndVSEp2WjNK
aGJTaGpiMjUwWVdsdVpYSXNJR2tzSUhSbGJYQnNZWFJsVTNCbFkxdHBYU3dnWkdGMFlTd2dNQ3dn
WW14dlkydFFZWEpoYlhNc0lHUmxjSFJvY3lrN1hHNGdJSDA3WEc0Z0lISmxkSFZ5YmlCeVpYUTdY
RzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCM2NtRndVSEp2WjNKaGJTaGpiMjUwWVdsdVpY
SXNJR2tzSUdadUxDQmtZWFJoTENCa1pXTnNZWEpsWkVKc2IyTnJVR0Z5WVcxekxDQmliRzlqYTFC
aGNtRnRjeXdnWkdWd2RHaHpLU0I3WEc0Z0lHWjFibU4wYVc5dUlIQnliMmNvWTI5dWRHVjRkQ3dn
YjNCMGFXOXVjeUE5SUh0OUtTQjdYRzRnSUNBZ2JHVjBJR04xY25KbGJuUkVaWEIwYUhNZ1BTQmta
WEIwYUhNN1hHNGdJQ0FnYVdZZ0tHUmxjSFJvY3lBbUppQmpiMjUwWlhoMElDRTlJR1JsY0hSb2Mx
c3dYU2tnZTF4dUlDQWdJQ0FnWTNWeWNtVnVkRVJsY0hSb2N5QTlJRnRqYjI1MFpYaDBYUzVqYjI1
allYUW9aR1Z3ZEdoektUdGNiaUFnSUNCOVhHNWNiaUFnSUNCeVpYUjFjbTRnWm00b1kyOXVkR0Zw
Ym1WeUxGeHVJQ0FnSUNBZ0lDQmpiMjUwWlhoMExGeHVJQ0FnSUNBZ0lDQmpiMjUwWVdsdVpYSXVh
R1ZzY0dWeWN5d2dZMjl1ZEdGcGJtVnlMbkJoY25ScFlXeHpMRnh1SUNBZ0lDQWdJQ0J2Y0hScGIy
NXpMbVJoZEdFZ2ZId2daR0YwWVN4Y2JpQWdJQ0FnSUNBZ1lteHZZMnRRWVhKaGJYTWdKaVlnVzI5
d2RHbHZibk11WW14dlkydFFZWEpoYlhOZExtTnZibU5oZENoaWJHOWphMUJoY21GdGN5a3NYRzRn
SUNBZ0lDQWdJR04xY25KbGJuUkVaWEIwYUhNcE8xeHVJQ0I5WEc1Y2JpQWdjSEp2WnlBOUlHVjRa
V04xZEdWRVpXTnZjbUYwYjNKektHWnVMQ0J3Y205bkxDQmpiMjUwWVdsdVpYSXNJR1JsY0hSb2N5
d2daR0YwWVN3Z1lteHZZMnRRWVhKaGJYTXBPMXh1WEc0Z0lIQnliMmN1Y0hKdlozSmhiU0E5SUdr
N1hHNGdJSEJ5YjJjdVpHVndkR2dnUFNCa1pYQjBhSE1nUHlCa1pYQjBhSE11YkdWdVozUm9JRG9n
TUR0Y2JpQWdjSEp2Wnk1aWJHOWphMUJoY21GdGN5QTlJR1JsWTJ4aGNtVmtRbXh2WTJ0UVlYSmhi
WE1nZkh3Z01EdGNiaUFnY21WMGRYSnVJSEJ5YjJjN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRH
bHZiaUJ5WlhOdmJIWmxVR0Z5ZEdsaGJDaHdZWEowYVdGc0xDQmpiMjUwWlhoMExDQnZjSFJwYjI1
ektTQjdYRzRnSUdsbUlDZ2hjR0Z5ZEdsaGJDa2dlMXh1SUNBZ0lHbG1JQ2h2Y0hScGIyNXpMbTVo
YldVZ1BUMDlJQ2RBY0dGeWRHbGhiQzFpYkc5amF5Y3BJSHRjYmlBZ0lDQWdJR3hsZENCa1lYUmhJ
RDBnYjNCMGFXOXVjeTVrWVhSaE8xeHVJQ0FnSUNBZ2QyaHBiR1VnS0dSaGRHRmJKM0JoY25ScFlX
d3RZbXh2WTJzblhTQTlQVDBnYm05dmNDa2dlMXh1SUNBZ0lDQWdJQ0JrWVhSaElEMGdaR0YwWVM1
ZmNHRnlaVzUwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnY0dGeWRHbGhiQ0E5SUdSaGRHRmJKM0Jo
Y25ScFlXd3RZbXh2WTJzblhUdGNiaUFnSUNBZ0lHUmhkR0ZiSjNCaGNuUnBZV3d0WW14dlkyc25Y
U0E5SUc1dmIzQTdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUhCaGNuUnBZV3dnUFNCdmNI
UnBiMjV6TG5CaGNuUnBZV3h6VzI5d2RHbHZibk11Ym1GdFpWMDdYRzRnSUNBZ2ZWeHVJQ0I5SUdW
c2MyVWdhV1lnS0NGd1lYSjBhV0ZzTG1OaGJHd2dKaVlnSVc5d2RHbHZibk11Ym1GdFpTa2dlMXh1
SUNBZ0lDOHZJRlJvYVhNZ2FYTWdZU0JrZVc1aGJXbGpJSEJoY25ScFlXd2dkR2hoZENCeVpYUjFj
bTVsWkNCaElITjBjbWx1WjF4dUlDQWdJRzl3ZEdsdmJuTXVibUZ0WlNBOUlIQmhjblJwWVd3N1hH
NGdJQ0FnY0dGeWRHbGhiQ0E5SUc5d2RHbHZibk11Y0dGeWRHbGhiSE5iY0dGeWRHbGhiRjA3WEc0
Z0lIMWNiaUFnY21WMGRYSnVJSEJoY25ScFlXdzdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2
YmlCcGJuWnZhMlZRWVhKMGFXRnNLSEJoY25ScFlXd3NJR052Ym5SbGVIUXNJRzl3ZEdsdmJuTXBJ
SHRjYmlBZ2IzQjBhVzl1Y3k1d1lYSjBhV0ZzSUQwZ2RISjFaVHRjYmlBZ2FXWWdLRzl3ZEdsdmJu
TXVhV1J6S1NCN1hHNGdJQ0FnYjNCMGFXOXVjeTVrWVhSaExtTnZiblJsZUhSUVlYUm9JRDBnYjNC
MGFXOXVjeTVwWkhOYk1GMGdmSHdnYjNCMGFXOXVjeTVrWVhSaExtTnZiblJsZUhSUVlYUm9PMXh1
SUNCOVhHNWNiaUFnYkdWMElIQmhjblJwWVd4Q2JHOWphenRjYmlBZ2FXWWdLRzl3ZEdsdmJuTXVa
bTRnSmlZZ2IzQjBhVzl1Y3k1bWJpQWhQVDBnYm05dmNDa2dlMXh1SUNBZ0lHOXdkR2x2Ym5NdVpH
RjBZU0E5SUdOeVpXRjBaVVp5WVcxbEtHOXdkR2x2Ym5NdVpHRjBZU2s3WEc0Z0lDQWdjR0Z5ZEds
aGJFSnNiMk5ySUQwZ2IzQjBhVzl1Y3k1a1lYUmhXeWR3WVhKMGFXRnNMV0pzYjJOckoxMGdQU0J2
Y0hScGIyNXpMbVp1TzF4dVhHNGdJQ0FnYVdZZ0tIQmhjblJwWVd4Q2JHOWpheTV3WVhKMGFXRnNj
eWtnZTF4dUlDQWdJQ0FnYjNCMGFXOXVjeTV3WVhKMGFXRnNjeUE5SUZWMGFXeHpMbVY0ZEdWdVpD
aDdmU3dnYjNCMGFXOXVjeTV3WVhKMGFXRnNjeXdnY0dGeWRHbGhiRUpzYjJOckxuQmhjblJwWVd4
ektUdGNiaUFnSUNCOVhHNGdJSDFjYmx4dUlDQnBaaUFvY0dGeWRHbGhiQ0E5UFQwZ2RXNWtaV1pw
Ym1Wa0lDWW1JSEJoY25ScFlXeENiRzlqYXlrZ2UxeHVJQ0FnSUhCaGNuUnBZV3dnUFNCd1lYSjBh
V0ZzUW14dlkyczdYRzRnSUgxY2JseHVJQ0JwWmlBb2NHRnlkR2xoYkNBOVBUMGdkVzVrWldacGJt
VmtLU0I3WEc0Z0lDQWdkR2h5YjNjZ2JtVjNJRVY0WTJWd2RHbHZiaWduVkdobElIQmhjblJwWVd3
Z0p5QXJJRzl3ZEdsdmJuTXVibUZ0WlNBcklDY2dZMjkxYkdRZ2JtOTBJR0psSUdadmRXNWtKeWs3
WEc0Z0lIMGdaV3h6WlNCcFppQW9jR0Z5ZEdsaGJDQnBibk4wWVc1alpXOW1JRVoxYm1OMGFXOXVL
U0I3WEc0Z0lDQWdjbVYwZFhKdUlIQmhjblJwWVd3b1kyOXVkR1Y0ZEN3Z2IzQjBhVzl1Y3lrN1hH
NGdJSDFjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlHNXZiM0FvS1NCN0lISmxkSFZ5YmlB
bkp6c2dmVnh1WEc1bWRXNWpkR2x2YmlCcGJtbDBSR0YwWVNoamIyNTBaWGgwTENCa1lYUmhLU0I3
WEc0Z0lHbG1JQ2doWkdGMFlTQjhmQ0FoS0NkeWIyOTBKeUJwYmlCa1lYUmhLU2tnZTF4dUlDQWdJ
R1JoZEdFZ1BTQmtZWFJoSUQ4Z1kzSmxZWFJsUm5KaGJXVW9aR0YwWVNrZ09pQjdmVHRjYmlBZ0lD
QmtZWFJoTG5KdmIzUWdQU0JqYjI1MFpYaDBPMXh1SUNCOVhHNGdJSEpsZEhWeWJpQmtZWFJoTzF4
dWZWeHVYRzVtZFc1amRHbHZiaUJsZUdWamRYUmxSR1ZqYjNKaGRHOXljeWhtYml3Z2NISnZaeXdn
WTI5dWRHRnBibVZ5TENCa1pYQjBhSE1zSUdSaGRHRXNJR0pzYjJOclVHRnlZVzF6S1NCN1hHNGdJ
R2xtSUNobWJpNWtaV052Y21GMGIzSXBJSHRjYmlBZ0lDQnNaWFFnY0hKdmNITWdQU0I3ZlR0Y2Jp
QWdJQ0J3Y205bklEMGdabTR1WkdWamIzSmhkRzl5S0hCeWIyY3NJSEJ5YjNCekxDQmpiMjUwWVds
dVpYSXNJR1JsY0hSb2N5QW1KaUJrWlhCMGFITmJNRjBzSUdSaGRHRXNJR0pzYjJOclVHRnlZVzF6
TENCa1pYQjBhSE1wTzF4dUlDQWdJRlYwYVd4ekxtVjRkR1Z1WkNod2NtOW5MQ0J3Y205d2N5azdY
RzRnSUgxY2JpQWdjbVYwZFhKdUlIQnliMmM3WEc1OVhHNGlYWDA9Cis7CitkZWZpbmUoJ2hhbmRs
ZWJhcnMvbm8tY29uZmxpY3QnLFsnZXhwb3J0cycsICdtb2R1bGUnXSwgZnVuY3Rpb24gKGV4cG9y
dHMsIG1vZHVsZSkgeworICAvKiBnbG9iYWwgd2luZG93ICovCisgICd1c2Ugc3RyaWN0JzsKKwor
ICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChIYW5kbGViYXJzKSB7CisgICAgLyogaXN0YW5i
dWwgaWdub3JlIG5leHQgKi8KKyAgICB2YXIgcm9vdCA9IHR5cGVvZiBnbG9iYWwgIT09ICd1bmRl
ZmluZWQnID8gZ2xvYmFsIDogd2luZG93LAorICAgICAgICAkSGFuZGxlYmFycyA9IHJvb3QuSGFu
ZGxlYmFyczsKKyAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLworICAgIEhhbmRsZWJhcnMu
bm9Db25mbGljdCA9IGZ1bmN0aW9uICgpIHsKKyAgICAgIGlmIChyb290LkhhbmRsZWJhcnMgPT09
IEhhbmRsZWJhcnMpIHsKKyAgICAgICAgcm9vdC5IYW5kbGViYXJzID0gJEhhbmRsZWJhcnM7Cisg
ICAgICB9CisgICAgICByZXR1cm4gSGFuZGxlYmFyczsKKyAgICB9OworICB9OworfSk7CisvLyMg
c291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5
dUlqb3pMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMeTR1TDJ4cFlpOW9ZVzVrYkdWaVlYSnpMMjV2
TFdOdmJtWnNhV04wTG1weklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN096czdi
VUpCUTJVc1ZVRkJVeXhWUVVGVkxFVkJRVVU3TzBGQlJXeERMRkZCUVVrc1NVRkJTU3hIUVVGSExF
OUJRVThzVFVGQlRTeExRVUZMTEZkQlFWY3NSMEZCUnl4TlFVRk5MRWRCUVVjc1RVRkJUVHRSUVVO
MFJDeFhRVUZYTEVkQlFVY3NTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJRenM3UVVGRmJFTXNZMEZC
VlN4RFFVRkRMRlZCUVZVc1IwRkJSeXhaUVVGWE8wRkJRMnBETEZWQlFVa3NTVUZCU1N4RFFVRkRM
RlZCUVZVc1MwRkJTeXhWUVVGVkxFVkJRVVU3UVVGRGJFTXNXVUZCU1N4RFFVRkRMRlZCUVZVc1Iw
RkJSeXhYUVVGWExFTkJRVU03VDBGREwwSTdRVUZEUkN4aFFVRlBMRlZCUVZVc1EwRkJRenRMUVVO
dVFpeERRVUZETzBkQlEwZ2lMQ0ptYVd4bElqb2libTh0WTI5dVpteHBZM1F1YW5NaUxDSnpiM1Z5
WTJWelEyOXVkR1Z1ZENJNld5SXZLaUJuYkc5aVlXd2dkMmx1Wkc5M0lDb3ZYRzVsZUhCdmNuUWda
R1ZtWVhWc2RDQm1kVzVqZEdsdmJpaElZVzVrYkdWaVlYSnpLU0I3WEc0Z0lDOHFJR2x6ZEdGdVlu
VnNJR2xuYm05eVpTQnVaWGgwSUNvdlhHNGdJR3hsZENCeWIyOTBJRDBnZEhsd1pXOW1JR2RzYjJK
aGJDQWhQVDBnSjNWdVpHVm1hVzVsWkNjZ1B5Qm5iRzlpWVd3Z09pQjNhVzVrYjNjc1hHNGdJQ0Fn
SUNBa1NHRnVaR3hsWW1GeWN5QTlJSEp2YjNRdVNHRnVaR3hsWW1GeWN6dGNiaUFnTHlvZ2FYTjBZ
VzVpZFd3Z2FXZHViM0psSUc1bGVIUWdLaTljYmlBZ1NHRnVaR3hsWW1GeWN5NXViME52Ym1ac2FX
TjBJRDBnWm5WdVkzUnBiMjRvS1NCN1hHNGdJQ0FnYVdZZ0tISnZiM1F1U0dGdVpHeGxZbUZ5Y3lB
OVBUMGdTR0Z1Wkd4bFltRnljeWtnZTF4dUlDQWdJQ0FnY205dmRDNUlZVzVrYkdWaVlYSnpJRDBn
SkVoaGJtUnNaV0poY25NN1hHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQklZVzVrYkdWaVlYSnpP
MXh1SUNCOU8xeHVmVnh1SWwxOQorOworZGVmaW5lKCdoYW5kbGViYXJzLnJ1bnRpbWUnLFsnZXhw
b3J0cycsICdtb2R1bGUnLCAnLi9oYW5kbGViYXJzL2Jhc2UnLCAnLi9oYW5kbGViYXJzL3NhZmUt
c3RyaW5nJywgJy4vaGFuZGxlYmFycy9leGNlcHRpb24nLCAnLi9oYW5kbGViYXJzL3V0aWxzJywg
Jy4vaGFuZGxlYmFycy9ydW50aW1lJywgJy4vaGFuZGxlYmFycy9uby1jb25mbGljdCddLCBmdW5j
dGlvbiAoZXhwb3J0cywgbW9kdWxlLCBfaGFuZGxlYmFyc0Jhc2UsIF9oYW5kbGViYXJzU2FmZVN0
cmluZywgX2hhbmRsZWJhcnNFeGNlcHRpb24sIF9oYW5kbGViYXJzVXRpbHMsIF9oYW5kbGViYXJz
UnVudGltZSwgX2hhbmRsZWJhcnNOb0NvbmZsaWN0KSB7CisgICd1c2Ugc3RyaWN0JzsKKworICAv
LyBpc3RhbmJ1bCBpZ25vcmUgbmV4dAorCisgIGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1
bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0
Jzogb2JqIH07IH0KKworICAvLyBFYWNoIG9mIHRoZXNlIGF1Z21lbnQgdGhlIEhhbmRsZWJhcnMg
b2JqZWN0LiBObyBuZWVkIHRvIHNldHVwIGhlcmUuCisgIC8vIChUaGlzIGlzIGRvbmUgdG8gZWFz
aWx5IHNoYXJlIGNvZGUgYmV0d2VlbiBjb21tb25qcyBhbmQgYnJvd3NlIGVudnMpCisKKyAgdmFy
IF9TYWZlU3RyaW5nID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaGFuZGxlYmFyc1NhZmVTdHJp
bmcpOworCisgIHZhciBfRXhjZXB0aW9uID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaGFuZGxl
YmFyc0V4Y2VwdGlvbik7CisKKyAgdmFyIF9ub0NvbmZsaWN0ID0gX2ludGVyb3BSZXF1aXJlRGVm
YXVsdChfaGFuZGxlYmFyc05vQ29uZmxpY3QpOworCisgIC8vIEZvciBjb21wYXRpYmlsaXR5IGFu
ZCB1c2FnZSBvdXRzaWRlIG9mIG1vZHVsZSBzeXN0ZW1zLCBtYWtlIHRoZSBIYW5kbGViYXJzIG9i
amVjdCBhIG5hbWVzcGFjZQorICBmdW5jdGlvbiBjcmVhdGUoKSB7CisgICAgdmFyIGhiID0gbmV3
IF9oYW5kbGViYXJzQmFzZS5IYW5kbGViYXJzRW52aXJvbm1lbnQoKTsKKworICAgIF9oYW5kbGVi
YXJzVXRpbHMuZXh0ZW5kKGhiLCBfaGFuZGxlYmFyc0Jhc2UpOworICAgIGhiLlNhZmVTdHJpbmcg
PSBfU2FmZVN0cmluZ1snZGVmYXVsdCddOworICAgIGhiLkV4Y2VwdGlvbiA9IF9FeGNlcHRpb25b
J2RlZmF1bHQnXTsKKyAgICBoYi5VdGlscyA9IF9oYW5kbGViYXJzVXRpbHM7CisgICAgaGIuZXNj
YXBlRXhwcmVzc2lvbiA9IF9oYW5kbGViYXJzVXRpbHMuZXNjYXBlRXhwcmVzc2lvbjsKKworICAg
IGhiLlZNID0gX2hhbmRsZWJhcnNSdW50aW1lOworICAgIGhiLnRlbXBsYXRlID0gZnVuY3Rpb24g
KHNwZWMpIHsKKyAgICAgIHJldHVybiBfaGFuZGxlYmFyc1J1bnRpbWUudGVtcGxhdGUoc3BlYywg
aGIpOworICAgIH07CisKKyAgICByZXR1cm4gaGI7CisgIH0KKworICB2YXIgaW5zdCA9IGNyZWF0
ZSgpOworICBpbnN0LmNyZWF0ZSA9IGNyZWF0ZTsKKworICBfbm9Db25mbGljdFsnZGVmYXVsdCdd
KGluc3QpOworCisgIGluc3RbJ2RlZmF1bHQnXSA9IGluc3Q7CisKKyAgbW9kdWxlLmV4cG9ydHMg
PSBpbnN0OworfSk7CisvLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247
YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMMnhwWWk5b1lX
NWtiR1ZpWVhKekxuSjFiblJwYldVdWFuTWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJ
NklqczdPenM3T3pzN096czdPenM3T3pzN1FVRlpRU3hYUVVGVExFMUJRVTBzUjBGQlJ6dEJRVU5v
UWl4UlFVRkpMRVZCUVVVc1IwRkJSeXhKUVVGSkxHZENRVUZMTEhGQ1FVRnhRaXhGUVVGRkxFTkJR
VU03TzBGQlJURkRMSEZDUVVGTkxFMUJRVTBzUTBGQlF5eEZRVUZGTEd0Q1FVRlBMRU5CUVVNN1FV
RkRka0lzVFVGQlJTeERRVUZETEZWQlFWVXNlVUpCUVdFc1EwRkJRenRCUVVNelFpeE5RVUZGTEVO
QlFVTXNVMEZCVXl4M1FrRkJXU3hEUVVGRE8wRkJRM3BDTEUxQlFVVXNRMEZCUXl4TFFVRkxMRzFD
UVVGUkxFTkJRVU03UVVGRGFrSXNUVUZCUlN4RFFVRkRMR2RDUVVGblFpeEhRVUZITEdsQ1FVRk5M
R2RDUVVGblFpeERRVUZET3p0QlFVVTNReXhOUVVGRkxFTkJRVU1zUlVGQlJTeHhRa0ZCVlN4RFFV
RkRPMEZCUTJoQ0xFMUJRVVVzUTBGQlF5eFJRVUZSTEVkQlFVY3NWVUZCVXl4SlFVRkpMRVZCUVVV
N1FVRkRNMElzWVVGQlR5eHRRa0ZCVVN4UlFVRlJMRU5CUVVNc1NVRkJTU3hGUVVGRkxFVkJRVVVz
UTBGQlF5eERRVUZETzB0QlEyNURMRU5CUVVNN08wRkJSVVlzVjBGQlR5eEZRVUZGTEVOQlFVTTdS
MEZEV0RzN1FVRkZSQ3hOUVVGSkxFbEJRVWtzUjBGQlJ5eE5RVUZOTEVWQlFVVXNRMEZCUXp0QlFV
TndRaXhOUVVGSkxFTkJRVU1zVFVGQlRTeEhRVUZITEUxQlFVMHNRMEZCUXpzN1FVRkZja0lzZVVK
QlFWY3NTVUZCU1N4RFFVRkRMRU5CUVVNN08wRkJSV3BDTEUxQlFVa3NRMEZCUXl4VFFVRlRMRU5C
UVVNc1IwRkJSeXhKUVVGSkxFTkJRVU03TzIxQ1FVVlNMRWxCUVVraUxDSm1hV3hsSWpvaWFHRnVa
R3hsWW1GeWN5NXlkVzUwYVcxbExtcHpJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2Iz
SjBJQ29nWVhNZ1ltRnpaU0JtY205dElDY3VMMmhoYm1Sc1pXSmhjbk12WW1GelpTYzdYRzVjYmk4
dklFVmhZMmdnYjJZZ2RHaGxjMlVnWVhWbmJXVnVkQ0IwYUdVZ1NHRnVaR3hsWW1GeWN5QnZZbXBs
WTNRdUlFNXZJRzVsWldRZ2RHOGdjMlYwZFhBZ2FHVnlaUzVjYmk4dklDaFVhR2x6SUdseklHUnZi
bVVnZEc4Z1pXRnphV3g1SUhOb1lYSmxJR052WkdVZ1ltVjBkMlZsYmlCamIyMXRiMjVxY3lCaGJt
UWdZbkp2ZDNObElHVnVkbk1wWEc1cGJYQnZjblFnVTJGbVpWTjBjbWx1WnlCbWNtOXRJQ2N1TDJo
aGJtUnNaV0poY25NdmMyRm1aUzF6ZEhKcGJtY25PMXh1YVcxd2IzSjBJRVY0WTJWd2RHbHZiaUJt
Y205dElDY3VMMmhoYm1Sc1pXSmhjbk12WlhoalpYQjBhVzl1Snp0Y2JtbHRjRzl5ZENBcUlHRnpJ
RlYwYVd4eklHWnliMjBnSnk0dmFHRnVaR3hsWW1GeWN5OTFkR2xzY3ljN1hHNXBiWEJ2Y25RZ0tp
QmhjeUJ5ZFc1MGFXMWxJR1p5YjIwZ0p5NHZhR0Z1Wkd4bFltRnljeTl5ZFc1MGFXMWxKenRjYmx4
dWFXMXdiM0owSUc1dlEyOXVabXhwWTNRZ1puSnZiU0FuTGk5b1lXNWtiR1ZpWVhKekwyNXZMV052
Ym1ac2FXTjBKenRjYmx4dUx5OGdSbTl5SUdOdmJYQmhkR2xpYVd4cGRIa2dZVzVrSUhWellXZGxJ
RzkxZEhOcFpHVWdiMllnYlc5a2RXeGxJSE41YzNSbGJYTXNJRzFoYTJVZ2RHaGxJRWhoYm1Sc1pX
Smhjbk1nYjJKcVpXTjBJR0VnYm1GdFpYTndZV05sWEc1bWRXNWpkR2x2YmlCamNtVmhkR1VvS1NC
N1hHNGdJR3hsZENCb1lpQTlJRzVsZHlCaVlYTmxMa2hoYm1Sc1pXSmhjbk5GYm5acGNtOXViV1Z1
ZENncE8xeHVYRzRnSUZWMGFXeHpMbVY0ZEdWdVpDaG9ZaXdnWW1GelpTazdYRzRnSUdoaUxsTmha
bVZUZEhKcGJtY2dQU0JUWVdabFUzUnlhVzVuTzF4dUlDQm9ZaTVGZUdObGNIUnBiMjRnUFNCRmVH
TmxjSFJwYjI0N1hHNGdJR2hpTGxWMGFXeHpJRDBnVlhScGJITTdYRzRnSUdoaUxtVnpZMkZ3WlVW
NGNISmxjM05wYjI0Z1BTQlZkR2xzY3k1bGMyTmhjR1ZGZUhCeVpYTnphVzl1TzF4dVhHNGdJR2hp
TGxaTklEMGdjblZ1ZEdsdFpUdGNiaUFnYUdJdWRHVnRjR3hoZEdVZ1BTQm1kVzVqZEdsdmJpaHpj
R1ZqS1NCN1hHNGdJQ0FnY21WMGRYSnVJSEoxYm5ScGJXVXVkR1Z0Y0d4aGRHVW9jM0JsWXl3Z2FH
SXBPMXh1SUNCOU8xeHVYRzRnSUhKbGRIVnliaUJvWWp0Y2JuMWNibHh1YkdWMElHbHVjM1FnUFNC
amNtVmhkR1VvS1R0Y2JtbHVjM1F1WTNKbFlYUmxJRDBnWTNKbFlYUmxPMXh1WEc1dWIwTnZibVpz
YVdOMEtHbHVjM1FwTzF4dVhHNXBibk4wV3lka1pXWmhkV3gwSjEwZ1BTQnBibk4wTzF4dVhHNWxl
SEJ2Y25RZ1pHVm1ZWFZzZENCcGJuTjBPMXh1SWwxOQorOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvaGFuZGxlYmFycy5ydW50aW1l
LmFtZC5taW4uanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMv
ZGlzdC9oYW5kbGViYXJzLnJ1bnRpbWUuYW1kLm1pbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMTM3MGNmODIw
NWNkYzZiNTM4YTQ5NTExY2MzOTE3MDg5YjEwMWM0Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvaGFuZGxlYmFycy5ydW50
aW1lLmFtZC5taW4uanMKQEAgLTAsMCArMSwyNyBAQAorLyoqIQorCisgQGxpY2Vuc2UKKyBoYW5k
bGViYXJzIHY0LjAuNgorCitDb3B5cmlnaHQgKEMpIDIwMTEtMjAxNiBieSBZZWh1ZGEgS2F0egor
CitQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBl
cnNvbiBvYnRhaW5pbmcgYSBjb3B5CitvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRv
Y3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAoraW4gdGhlIFNvZnR3
YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhl
IHJpZ2h0cwordG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRl
LCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAorY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRv
IHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCitmdXJuaXNoZWQgdG8gZG8g
c28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorCitUaGUgYWJvdmUgY29w
eXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRl
ZCBpbgorYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUu
CisKK1RIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9G
IEFOWSBLSU5ELCBFWFBSRVNTIE9SCitJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVE
IFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKK0ZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RQorQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwg
REFNQUdFUyBPUiBPVEhFUgorTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05U
UkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKK09VVCBPRiBPUiBJTiBDT05O
RUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4K
K1RIRSBTT0ZUV0FSRS4KKworKi8KK2RlZmluZSgiaGFuZGxlYmFycy91dGlscyIsWyJleHBvcnRz
Il0sZnVuY3Rpb24oYSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGIoYSl7cmV0dXJuIGpbYV19ZnVu
Y3Rpb24gYyhhKXtmb3IodmFyIGI9MTtiPGFyZ3VtZW50cy5sZW5ndGg7YisrKWZvcih2YXIgYyBp
biBhcmd1bWVudHNbYl0pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGFyZ3Vt
ZW50c1tiXSxjKSYmKGFbY109YXJndW1lbnRzW2JdW2NdKTtyZXR1cm4gYX1mdW5jdGlvbiBkKGEs
Yil7Zm9yKHZhciBjPTAsZD1hLmxlbmd0aDtjPGQ7YysrKWlmKGFbY109PT1iKXJldHVybiBjO3Jl
dHVybi0xfWZ1bmN0aW9uIGUoYSl7aWYoInN0cmluZyIhPXR5cGVvZiBhKXtpZihhJiZhLnRvSFRN
TClyZXR1cm4gYS50b0hUTUwoKTtpZihudWxsPT1hKXJldHVybiIiO2lmKCFhKXJldHVybiBhKyIi
O2E9IiIrYX1yZXR1cm4gbC50ZXN0KGEpP2EucmVwbGFjZShrLGIpOmF9ZnVuY3Rpb24gZihhKXty
ZXR1cm4hYSYmMCE9PWF8fCEoIW8oYSl8fDAhPT1hLmxlbmd0aCl9ZnVuY3Rpb24gZyhhKXt2YXIg
Yj1jKHt9LGEpO3JldHVybiBiLl9wYXJlbnQ9YSxifWZ1bmN0aW9uIGgoYSxiKXtyZXR1cm4gYS5w
YXRoPWIsYX1mdW5jdGlvbiBpKGEsYil7cmV0dXJuKGE/YSsiLiI6IiIpK2J9YS5fX2VzTW9kdWxl
PSEwLGEuZXh0ZW5kPWMsYS5pbmRleE9mPWQsYS5lc2NhcGVFeHByZXNzaW9uPWUsYS5pc0VtcHR5
PWYsYS5jcmVhdGVGcmFtZT1nLGEuYmxvY2tQYXJhbXM9aCxhLmFwcGVuZENvbnRleHRQYXRoPWk7
dmFyIGo9eyImIjoiJmFtcDsiLCI8IjoiJmx0OyIsIj4iOiImZ3Q7IiwnIic6IiZxdW90OyIsIici
OiImI3gyNzsiLCJgIjoiJiN4NjA7IiwiPSI6IiYjeDNEOyJ9LGs9L1smPD4iJ2A9XS9nLGw9L1sm
PD4iJ2A9XS8sbT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO2EudG9TdHJpbmc9bTt2YXIgbj1m
dW5jdGlvbihhKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgYX07bigveC8pJiYoYS5pc0Z1bmN0
aW9uPW49ZnVuY3Rpb24oYSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGEmJiJbb2JqZWN0IEZ1
bmN0aW9uXSI9PT1tLmNhbGwoYSl9KSxhLmlzRnVuY3Rpb249bjt2YXIgbz1BcnJheS5pc0FycmF5
fHxmdW5jdGlvbihhKXtyZXR1cm4hKCFhfHwib2JqZWN0IiE9dHlwZW9mIGEpJiYiW29iamVjdCBB
cnJheV0iPT09bS5jYWxsKGEpfTthLmlzQXJyYXk9b30pLGRlZmluZSgiaGFuZGxlYmFycy9leGNl
cHRpb24iLFsiZXhwb3J0cyIsIm1vZHVsZSJdLGZ1bmN0aW9uKGEsYil7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIGMoYSxiKXt2YXIgZT1iJiZiLmxvYyxmPXZvaWQgMCxnPXZvaWQgMDtlJiYoZj1lLnN0
YXJ0LmxpbmUsZz1lLnN0YXJ0LmNvbHVtbixhKz0iIC0gIitmKyI6IitnKTtmb3IodmFyIGg9RXJy
b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxhKSxpPTA7aTxkLmxlbmd0aDtpKysp
dGhpc1tkW2ldXT1oW2RbaV1dO0Vycm9yLmNhcHR1cmVTdGFja1RyYWNlJiZFcnJvci5jYXB0dXJl
U3RhY2tUcmFjZSh0aGlzLGMpO3RyeXtlJiYodGhpcy5saW5lTnVtYmVyPWYsT2JqZWN0LmRlZmlu
ZVByb3BlcnR5P09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJjb2x1bW4iLHt2YWx1ZTpnfSk6
dGhpcy5jb2x1bW49Zyl9Y2F0Y2goail7fX12YXIgZD1bImRlc2NyaXB0aW9uIiwiZmlsZU5hbWUi
LCJsaW5lTnVtYmVyIiwibWVzc2FnZSIsIm5hbWUiLCJudW1iZXIiLCJzdGFjayJdO2MucHJvdG90
eXBlPW5ldyBFcnJvcixiLmV4cG9ydHM9Y30pLGRlZmluZSgiaGFuZGxlYmFycy9oZWxwZXJzL2Js
b2NrLWhlbHBlci1taXNzaW5nIixbImV4cG9ydHMiLCJtb2R1bGUiLCIuLi91dGlscyJdLGZ1bmN0
aW9uKGEsYixjKXsidXNlIHN0cmljdCI7Yi5leHBvcnRzPWZ1bmN0aW9uKGEpe2EucmVnaXN0ZXJI
ZWxwZXIoImJsb2NrSGVscGVyTWlzc2luZyIsZnVuY3Rpb24oYixkKXt2YXIgZT1kLmludmVyc2Us
Zj1kLmZuO2lmKGI9PT0hMClyZXR1cm4gZih0aGlzKTtpZihiPT09ITF8fG51bGw9PWIpcmV0dXJu
IGUodGhpcyk7aWYoYy5pc0FycmF5KGIpKXJldHVybiBiLmxlbmd0aD4wPyhkLmlkcyYmKGQuaWRz
PVtkLm5hbWVdKSxhLmhlbHBlcnMuZWFjaChiLGQpKTplKHRoaXMpO2lmKGQuZGF0YSYmZC5pZHMp
e3ZhciBnPWMuY3JlYXRlRnJhbWUoZC5kYXRhKTtnLmNvbnRleHRQYXRoPWMuYXBwZW5kQ29udGV4
dFBhdGgoZC5kYXRhLmNvbnRleHRQYXRoLGQubmFtZSksZD17ZGF0YTpnfX1yZXR1cm4gZihiLGQp
fSl9fSksZGVmaW5lKCJoYW5kbGViYXJzL2hlbHBlcnMvZWFjaCIsWyJleHBvcnRzIiwibW9kdWxl
IiwiLi4vdXRpbHMiLCIuLi9leGNlcHRpb24iXSxmdW5jdGlvbihhLGIsYyxkKXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gZShhKXtyZXR1cm4gYSYmYS5fX2VzTW9kdWxlP2E6eyJkZWZhdWx0IjphfX12
YXIgZj1lKGQpO2IuZXhwb3J0cz1mdW5jdGlvbihhKXthLnJlZ2lzdGVySGVscGVyKCJlYWNoIixm
dW5jdGlvbihhLGIpe2Z1bmN0aW9uIGQoYixkLGYpe2omJihqLmtleT1iLGouaW5kZXg9ZCxqLmZp
cnN0PTA9PT1kLGoubGFzdD0hIWYsayYmKGouY29udGV4dFBhdGg9aytiKSksaSs9ZShhW2JdLHtk
YXRhOmosYmxvY2tQYXJhbXM6Yy5ibG9ja1BhcmFtcyhbYVtiXSxiXSxbaytiLG51bGxdKX0pfWlm
KCFiKXRocm93IG5ldyBmWyJkZWZhdWx0Il0oIk11c3QgcGFzcyBpdGVyYXRvciB0byAjZWFjaCIp
O3ZhciBlPWIuZm4sZz1iLmludmVyc2UsaD0wLGk9IiIsaj12b2lkIDAsaz12b2lkIDA7aWYoYi5k
YXRhJiZiLmlkcyYmKGs9Yy5hcHBlbmRDb250ZXh0UGF0aChiLmRhdGEuY29udGV4dFBhdGgsYi5p
ZHNbMF0pKyIuIiksYy5pc0Z1bmN0aW9uKGEpJiYoYT1hLmNhbGwodGhpcykpLGIuZGF0YSYmKGo9
Yy5jcmVhdGVGcmFtZShiLmRhdGEpKSxhJiYib2JqZWN0Ij09dHlwZW9mIGEpaWYoYy5pc0FycmF5
KGEpKWZvcih2YXIgbD1hLmxlbmd0aDtoPGw7aCsrKWggaW4gYSYmZChoLGgsaD09PWEubGVuZ3Ro
LTEpO2Vsc2V7dmFyIG09dm9pZCAwO2Zvcih2YXIgbiBpbiBhKWEuaGFzT3duUHJvcGVydHkobikm
Jih2b2lkIDAhPT1tJiZkKG0saC0xKSxtPW4saCsrKTt2b2lkIDAhPT1tJiZkKG0saC0xLCEwKX1y
ZXR1cm4gMD09PWgmJihpPWcodGhpcykpLGl9KX19KSxkZWZpbmUoImhhbmRsZWJhcnMvaGVscGVy
cy9oZWxwZXItbWlzc2luZyIsWyJleHBvcnRzIiwibW9kdWxlIiwiLi4vZXhjZXB0aW9uIl0sZnVu
Y3Rpb24oYSxiLGMpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBkKGEpe3JldHVybiBhJiZhLl9fZXNN
b2R1bGU/YTp7ImRlZmF1bHQiOmF9fXZhciBlPWQoYyk7Yi5leHBvcnRzPWZ1bmN0aW9uKGEpe2Eu
cmVnaXN0ZXJIZWxwZXIoImhlbHBlck1pc3NpbmciLGZ1bmN0aW9uKCl7aWYoMSE9PWFyZ3VtZW50
cy5sZW5ndGgpdGhyb3cgbmV3IGVbImRlZmF1bHQiXSgnTWlzc2luZyBoZWxwZXI6ICInK2FyZ3Vt
ZW50c1thcmd1bWVudHMubGVuZ3RoLTFdLm5hbWUrJyInKX0pfX0pLGRlZmluZSgiaGFuZGxlYmFy
cy9oZWxwZXJzL2lmIixbImV4cG9ydHMiLCJtb2R1bGUiLCIuLi91dGlscyJdLGZ1bmN0aW9uKGEs
YixjKXsidXNlIHN0cmljdCI7Yi5leHBvcnRzPWZ1bmN0aW9uKGEpe2EucmVnaXN0ZXJIZWxwZXIo
ImlmIixmdW5jdGlvbihhLGIpe3JldHVybiBjLmlzRnVuY3Rpb24oYSkmJihhPWEuY2FsbCh0aGlz
KSksIWIuaGFzaC5pbmNsdWRlWmVybyYmIWF8fGMuaXNFbXB0eShhKT9iLmludmVyc2UodGhpcyk6
Yi5mbih0aGlzKX0pLGEucmVnaXN0ZXJIZWxwZXIoInVubGVzcyIsZnVuY3Rpb24oYixjKXtyZXR1
cm4gYS5oZWxwZXJzWyJpZiJdLmNhbGwodGhpcyxiLHtmbjpjLmludmVyc2UsaW52ZXJzZTpjLmZu
LGhhc2g6Yy5oYXNofSl9KX19KSxkZWZpbmUoImhhbmRsZWJhcnMvaGVscGVycy9sb2ciLFsiZXhw
b3J0cyIsIm1vZHVsZSJdLGZ1bmN0aW9uKGEsYil7InVzZSBzdHJpY3QiO2IuZXhwb3J0cz1mdW5j
dGlvbihhKXthLnJlZ2lzdGVySGVscGVyKCJsb2ciLGZ1bmN0aW9uKCl7Zm9yKHZhciBiPVt2b2lk
IDBdLGM9YXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGgtMV0sZD0wO2Q8YXJndW1lbnRzLmxlbmd0
aC0xO2QrKyliLnB1c2goYXJndW1lbnRzW2RdKTt2YXIgZT0xO251bGwhPWMuaGFzaC5sZXZlbD9l
PWMuaGFzaC5sZXZlbDpjLmRhdGEmJm51bGwhPWMuZGF0YS5sZXZlbCYmKGU9Yy5kYXRhLmxldmVs
KSxiWzBdPWUsYS5sb2cuYXBwbHkoYSxiKX0pfX0pLGRlZmluZSgiaGFuZGxlYmFycy9oZWxwZXJz
L2xvb2t1cCIsWyJleHBvcnRzIiwibW9kdWxlIl0sZnVuY3Rpb24oYSxiKXsidXNlIHN0cmljdCI7
Yi5leHBvcnRzPWZ1bmN0aW9uKGEpe2EucmVnaXN0ZXJIZWxwZXIoImxvb2t1cCIsZnVuY3Rpb24o
YSxiKXtyZXR1cm4gYSYmYVtiXX0pfX0pLGRlZmluZSgiaGFuZGxlYmFycy9oZWxwZXJzL3dpdGgi
LFsiZXhwb3J0cyIsIm1vZHVsZSIsIi4uL3V0aWxzIl0sZnVuY3Rpb24oYSxiLGMpeyJ1c2Ugc3Ry
aWN0IjtiLmV4cG9ydHM9ZnVuY3Rpb24oYSl7YS5yZWdpc3RlckhlbHBlcigid2l0aCIsZnVuY3Rp
b24oYSxiKXtjLmlzRnVuY3Rpb24oYSkmJihhPWEuY2FsbCh0aGlzKSk7dmFyIGQ9Yi5mbjtpZihj
LmlzRW1wdHkoYSkpcmV0dXJuIGIuaW52ZXJzZSh0aGlzKTt2YXIgZT1iLmRhdGE7cmV0dXJuIGIu
ZGF0YSYmYi5pZHMmJihlPWMuY3JlYXRlRnJhbWUoYi5kYXRhKSxlLmNvbnRleHRQYXRoPWMuYXBw
ZW5kQ29udGV4dFBhdGgoYi5kYXRhLmNvbnRleHRQYXRoLGIuaWRzWzBdKSksZChhLHtkYXRhOmUs
YmxvY2tQYXJhbXM6Yy5ibG9ja1BhcmFtcyhbYV0sW2UmJmUuY29udGV4dFBhdGhdKX0pfSl9fSks
ZGVmaW5lKCJoYW5kbGViYXJzL2hlbHBlcnMiLFsiZXhwb3J0cyIsIi4vaGVscGVycy9ibG9jay1o
ZWxwZXItbWlzc2luZyIsIi4vaGVscGVycy9lYWNoIiwiLi9oZWxwZXJzL2hlbHBlci1taXNzaW5n
IiwiLi9oZWxwZXJzL2lmIiwiLi9oZWxwZXJzL2xvZyIsIi4vaGVscGVycy9sb29rdXAiLCIuL2hl
bHBlcnMvd2l0aCJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmLGcsaCl7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIGkoYSl7cmV0dXJuIGEmJmEuX19lc01vZHVsZT9hOnsiZGVmYXVsdCI6YX19ZnVuY3Rpb24g
aihhKXtrWyJkZWZhdWx0Il0oYSksbFsiZGVmYXVsdCJdKGEpLG1bImRlZmF1bHQiXShhKSxuWyJk
ZWZhdWx0Il0oYSksb1siZGVmYXVsdCJdKGEpLHBbImRlZmF1bHQiXShhKSxxWyJkZWZhdWx0Il0o
YSl9YS5fX2VzTW9kdWxlPSEwLGEucmVnaXN0ZXJEZWZhdWx0SGVscGVycz1qO3ZhciBrPWkoYiks
bD1pKGMpLG09aShkKSxuPWkoZSksbz1pKGYpLHA9aShnKSxxPWkoaCl9KSxkZWZpbmUoImhhbmRs
ZWJhcnMvZGVjb3JhdG9ycy9pbmxpbmUiLFsiZXhwb3J0cyIsIm1vZHVsZSIsIi4uL3V0aWxzIl0s
ZnVuY3Rpb24oYSxiLGMpeyJ1c2Ugc3RyaWN0IjtiLmV4cG9ydHM9ZnVuY3Rpb24oYSl7YS5yZWdp
c3RlckRlY29yYXRvcigiaW5saW5lIixmdW5jdGlvbihhLGIsZCxlKXt2YXIgZj1hO3JldHVybiBi
LnBhcnRpYWxzfHwoYi5wYXJ0aWFscz17fSxmPWZ1bmN0aW9uKGUsZil7dmFyIGc9ZC5wYXJ0aWFs
cztkLnBhcnRpYWxzPWMuZXh0ZW5kKHt9LGcsYi5wYXJ0aWFscyk7dmFyIGg9YShlLGYpO3JldHVy
biBkLnBhcnRpYWxzPWcsaH0pLGIucGFydGlhbHNbZS5hcmdzWzBdXT1lLmZuLGZ9KX19KSxkZWZp
bmUoImhhbmRsZWJhcnMvZGVjb3JhdG9ycyIsWyJleHBvcnRzIiwiLi9kZWNvcmF0b3JzL2lubGlu
ZSJdLGZ1bmN0aW9uKGEsYil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGMoYSl7cmV0dXJuIGEmJmEu
X19lc01vZHVsZT9hOnsiZGVmYXVsdCI6YX19ZnVuY3Rpb24gZChhKXtlWyJkZWZhdWx0Il0oYSl9
YS5fX2VzTW9kdWxlPSEwLGEucmVnaXN0ZXJEZWZhdWx0RGVjb3JhdG9ycz1kO3ZhciBlPWMoYil9
KSxkZWZpbmUoImhhbmRsZWJhcnMvbG9nZ2VyIixbImV4cG9ydHMiLCJtb2R1bGUiLCIuL3V0aWxz
Il0sZnVuY3Rpb24oYSxiLGMpeyJ1c2Ugc3RyaWN0Ijt2YXIgZD17bWV0aG9kTWFwOlsiZGVidWci
LCJpbmZvIiwid2FybiIsImVycm9yIl0sbGV2ZWw6ImluZm8iLGxvb2t1cExldmVsOmZ1bmN0aW9u
KGEpe2lmKCJzdHJpbmciPT10eXBlb2YgYSl7dmFyIGI9Yy5pbmRleE9mKGQubWV0aG9kTWFwLGEu
dG9Mb3dlckNhc2UoKSk7YT1iPj0wP2I6cGFyc2VJbnQoYSwxMCl9cmV0dXJuIGF9LGxvZzpmdW5j
dGlvbihhKXtpZihhPWQubG9va3VwTGV2ZWwoYSksInVuZGVmaW5lZCIhPXR5cGVvZiBjb25zb2xl
JiZkLmxvb2t1cExldmVsKGQubGV2ZWwpPD1hKXt2YXIgYj1kLm1ldGhvZE1hcFthXTtjb25zb2xl
W2JdfHwoYj0ibG9nIik7Zm9yKHZhciBjPWFyZ3VtZW50cy5sZW5ndGgsZT1BcnJheShjPjE/Yy0x
OjApLGY9MTtmPGM7ZisrKWVbZi0xXT1hcmd1bWVudHNbZl07Y29uc29sZVtiXS5hcHBseShjb25z
b2xlLGUpfX19O2IuZXhwb3J0cz1kfSksZGVmaW5lKCJoYW5kbGViYXJzL2Jhc2UiLFsiZXhwb3J0
cyIsIi4vdXRpbHMiLCIuL2V4Y2VwdGlvbiIsIi4vaGVscGVycyIsIi4vZGVjb3JhdG9ycyIsIi4v
bG9nZ2VyIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBnKGEp
e3JldHVybiBhJiZhLl9fZXNNb2R1bGU/YTp7ImRlZmF1bHQiOmF9fWZ1bmN0aW9uIGgoYSxiLGMp
e3RoaXMuaGVscGVycz1hfHx7fSx0aGlzLnBhcnRpYWxzPWJ8fHt9LHRoaXMuZGVjb3JhdG9ycz1j
fHx7fSxkLnJlZ2lzdGVyRGVmYXVsdEhlbHBlcnModGhpcyksZS5yZWdpc3RlckRlZmF1bHREZWNv
cmF0b3JzKHRoaXMpfWEuX19lc01vZHVsZT0hMCxhLkhhbmRsZWJhcnNFbnZpcm9ubWVudD1oO3Zh
ciBpPWcoYyksaj1nKGYpLGs9IjQuMC42IjthLlZFUlNJT049azt2YXIgbD03O2EuQ09NUElMRVJf
UkVWSVNJT049bDt2YXIgbT17MToiPD0gMS4wLnJjLjIiLDI6Ij09IDEuMC4wLXJjLjMiLDM6Ij09
IDEuMC4wLXJjLjQiLDQ6Ij09IDEueC54Iiw1OiI9PSAyLjAuMC1hbHBoYS54Iiw2OiI+PSAyLjAu
MC1iZXRhLjEiLDc6Ij49IDQuMC4wIn07YS5SRVZJU0lPTl9DSEFOR0VTPW07dmFyIG49IltvYmpl
Y3QgT2JqZWN0XSI7aC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmgsbG9nZ2VyOmpbImRlZmF1bHQi
XSxsb2c6alsiZGVmYXVsdCJdLmxvZyxyZWdpc3RlckhlbHBlcjpmdW5jdGlvbihhLGMpe2lmKGIu
dG9TdHJpbmcuY2FsbChhKT09PW4pe2lmKGMpdGhyb3cgbmV3IGlbImRlZmF1bHQiXSgiQXJnIG5v
dCBzdXBwb3J0ZWQgd2l0aCBtdWx0aXBsZSBoZWxwZXJzIik7Yi5leHRlbmQodGhpcy5oZWxwZXJz
LGEpfWVsc2UgdGhpcy5oZWxwZXJzW2FdPWN9LHVucmVnaXN0ZXJIZWxwZXI6ZnVuY3Rpb24oYSl7
ZGVsZXRlIHRoaXMuaGVscGVyc1thXX0scmVnaXN0ZXJQYXJ0aWFsOmZ1bmN0aW9uKGEsYyl7aWYo
Yi50b1N0cmluZy5jYWxsKGEpPT09biliLmV4dGVuZCh0aGlzLnBhcnRpYWxzLGEpO2Vsc2V7aWYo
InVuZGVmaW5lZCI9PXR5cGVvZiBjKXRocm93IG5ldyBpWyJkZWZhdWx0Il0oJ0F0dGVtcHRpbmcg
dG8gcmVnaXN0ZXIgYSBwYXJ0aWFsIGNhbGxlZCAiJythKyciIGFzIHVuZGVmaW5lZCcpO3RoaXMu
cGFydGlhbHNbYV09Y319LHVucmVnaXN0ZXJQYXJ0aWFsOmZ1bmN0aW9uKGEpe2RlbGV0ZSB0aGlz
LnBhcnRpYWxzW2FdfSxyZWdpc3RlckRlY29yYXRvcjpmdW5jdGlvbihhLGMpe2lmKGIudG9TdHJp
bmcuY2FsbChhKT09PW4pe2lmKGMpdGhyb3cgbmV3IGlbImRlZmF1bHQiXSgiQXJnIG5vdCBzdXBw
b3J0ZWQgd2l0aCBtdWx0aXBsZSBkZWNvcmF0b3JzIik7Yi5leHRlbmQodGhpcy5kZWNvcmF0b3Jz
LGEpfWVsc2UgdGhpcy5kZWNvcmF0b3JzW2FdPWN9LHVucmVnaXN0ZXJEZWNvcmF0b3I6ZnVuY3Rp
b24oYSl7ZGVsZXRlIHRoaXMuZGVjb3JhdG9yc1thXX19O3ZhciBvPWpbImRlZmF1bHQiXS5sb2c7
YS5sb2c9byxhLmNyZWF0ZUZyYW1lPWIuY3JlYXRlRnJhbWUsYS5sb2dnZXI9alsiZGVmYXVsdCJd
fSksZGVmaW5lKCJoYW5kbGViYXJzL3NhZmUtc3RyaW5nIixbImV4cG9ydHMiLCJtb2R1bGUiXSxm
dW5jdGlvbihhLGIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBjKGEpe3RoaXMuc3RyaW5nPWF9Yy5w
cm90b3R5cGUudG9TdHJpbmc9Yy5wcm90b3R5cGUudG9IVE1MPWZ1bmN0aW9uKCl7cmV0dXJuIiIr
dGhpcy5zdHJpbmd9LGIuZXhwb3J0cz1jfSksZGVmaW5lKCJoYW5kbGViYXJzL3J1bnRpbWUiLFsi
ZXhwb3J0cyIsIi4vdXRpbHMiLCIuL2V4Y2VwdGlvbiIsIi4vYmFzZSJdLGZ1bmN0aW9uKGEsYixj
LGQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBlKGEpe3JldHVybiBhJiZhLl9fZXNNb2R1bGU/YTp7
ImRlZmF1bHQiOmF9fWZ1bmN0aW9uIGYoYSl7dmFyIGI9YSYmYVswXXx8MSxjPWQuQ09NUElMRVJf
UkVWSVNJT047aWYoYiE9PWMpe2lmKGI8Yyl7dmFyIGU9ZC5SRVZJU0lPTl9DSEFOR0VTW2NdLGY9
ZC5SRVZJU0lPTl9DSEFOR0VTW2JdO3Rocm93IG5ldyBuWyJkZWZhdWx0Il0oIlRlbXBsYXRlIHdh
cyBwcmVjb21waWxlZCB3aXRoIGFuIG9sZGVyIHZlcnNpb24gb2YgSGFuZGxlYmFycyB0aGFuIHRo
ZSBjdXJyZW50IHJ1bnRpbWUuIFBsZWFzZSB1cGRhdGUgeW91ciBwcmVjb21waWxlciB0byBhIG5l
d2VyIHZlcnNpb24gKCIrZSsiKSBvciBkb3duZ3JhZGUgeW91ciBydW50aW1lIHRvIGFuIG9sZGVy
IHZlcnNpb24gKCIrZisiKS4iKX10aHJvdyBuZXcgblsiZGVmYXVsdCJdKCJUZW1wbGF0ZSB3YXMg
cHJlY29tcGlsZWQgd2l0aCBhIG5ld2VyIHZlcnNpb24gb2YgSGFuZGxlYmFycyB0aGFuIHRoZSBj
dXJyZW50IHJ1bnRpbWUuIFBsZWFzZSB1cGRhdGUgeW91ciBydW50aW1lIHRvIGEgbmV3ZXIgdmVy
c2lvbiAoIithWzFdKyIpLiIpfX1mdW5jdGlvbiBnKGEsYyl7ZnVuY3Rpb24gZChkLGUsZil7Zi5o
YXNoJiYoZT1iLmV4dGVuZCh7fSxlLGYuaGFzaCksZi5pZHMmJihmLmlkc1swXT0hMCkpLGQ9Yy5W
TS5yZXNvbHZlUGFydGlhbC5jYWxsKHRoaXMsZCxlLGYpO3ZhciBnPWMuVk0uaW52b2tlUGFydGlh
bC5jYWxsKHRoaXMsZCxlLGYpO2lmKG51bGw9PWcmJmMuY29tcGlsZSYmKGYucGFydGlhbHNbZi5u
YW1lXT1jLmNvbXBpbGUoZCxhLmNvbXBpbGVyT3B0aW9ucyxjKSxnPWYucGFydGlhbHNbZi5uYW1l
XShlLGYpKSxudWxsIT1nKXtpZihmLmluZGVudCl7Zm9yKHZhciBoPWcuc3BsaXQoIlxuIiksaT0w
LGo9aC5sZW5ndGg7aTxqJiYoaFtpXXx8aSsxIT09aik7aSsrKWhbaV09Zi5pbmRlbnQraFtpXTtn
PWguam9pbigiXG4iKX1yZXR1cm4gZ310aHJvdyBuZXcgblsiZGVmYXVsdCJdKCJUaGUgcGFydGlh
bCAiK2YubmFtZSsiIGNvdWxkIG5vdCBiZSBjb21waWxlZCB3aGVuIHJ1bm5pbmcgaW4gcnVudGlt
ZS1vbmx5IG1vZGUiKX1mdW5jdGlvbiBlKGIpe2Z1bmN0aW9uIGMoYil7cmV0dXJuIiIrYS5tYWlu
KGYsYixmLmhlbHBlcnMsZi5wYXJ0aWFscyxnLGksaCl9dmFyIGQ9YXJndW1lbnRzLmxlbmd0aDw9
MXx8dm9pZCAwPT09YXJndW1lbnRzWzFdP3t9OmFyZ3VtZW50c1sxXSxnPWQuZGF0YTtlLl9zZXR1
cChkKSwhZC5wYXJ0aWFsJiZhLnVzZURhdGEmJihnPWwoYixnKSk7dmFyIGg9dm9pZCAwLGk9YS51
c2VCbG9ja1BhcmFtcz9bXTp2b2lkIDA7cmV0dXJuIGEudXNlRGVwdGhzJiYoaD1kLmRlcHRocz9i
IT1kLmRlcHRoc1swXT9bYl0uY29uY2F0KGQuZGVwdGhzKTpkLmRlcHRoczpbYl0pLChjPW0oYS5t
YWluLGMsZixkLmRlcHRoc3x8W10sZyxpKSkoYixkKX1pZighYyl0aHJvdyBuZXcgblsiZGVmYXVs
dCJdKCJObyBlbnZpcm9ubWVudCBwYXNzZWQgdG8gdGVtcGxhdGUiKTtpZighYXx8IWEubWFpbil0
aHJvdyBuZXcgblsiZGVmYXVsdCJdKCJVbmtub3duIHRlbXBsYXRlIG9iamVjdDogIit0eXBlb2Yg
YSk7YS5tYWluLmRlY29yYXRvcj1hLm1haW5fZCxjLlZNLmNoZWNrUmV2aXNpb24oYS5jb21waWxl
cik7dmFyIGY9e3N0cmljdDpmdW5jdGlvbihhLGIpe2lmKCEoYiBpbiBhKSl0aHJvdyBuZXcgblsi
ZGVmYXVsdCJdKCciJytiKyciIG5vdCBkZWZpbmVkIGluICcrYSk7cmV0dXJuIGFbYl19LGxvb2t1
cDpmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz1hLmxlbmd0aCxkPTA7ZDxjO2QrKylpZihhW2RdJiZu
dWxsIT1hW2RdW2JdKXJldHVybiBhW2RdW2JdfSxsYW1iZGE6ZnVuY3Rpb24oYSxiKXtyZXR1cm4i
ZnVuY3Rpb24iPT10eXBlb2YgYT9hLmNhbGwoYik6YX0sZXNjYXBlRXhwcmVzc2lvbjpiLmVzY2Fw
ZUV4cHJlc3Npb24saW52b2tlUGFydGlhbDpkLGZuOmZ1bmN0aW9uKGIpe3ZhciBjPWFbYl07cmV0
dXJuIGMuZGVjb3JhdG9yPWFbYisiX2QiXSxjfSxwcm9ncmFtczpbXSxwcm9ncmFtOmZ1bmN0aW9u
KGEsYixjLGQsZSl7dmFyIGY9dGhpcy5wcm9ncmFtc1thXSxnPXRoaXMuZm4oYSk7cmV0dXJuIGJ8
fGV8fGR8fGM/Zj1oKHRoaXMsYSxnLGIsYyxkLGUpOmZ8fChmPXRoaXMucHJvZ3JhbXNbYV09aCh0
aGlzLGEsZykpLGZ9LGRhdGE6ZnVuY3Rpb24oYSxiKXtmb3IoO2EmJmItLTspYT1hLl9wYXJlbnQ7
cmV0dXJuIGF9LG1lcmdlOmZ1bmN0aW9uKGEsYyl7dmFyIGQ9YXx8YztyZXR1cm4gYSYmYyYmYSE9
PWMmJihkPWIuZXh0ZW5kKHt9LGMsYSkpLGR9LG5vb3A6Yy5WTS5ub29wLGNvbXBpbGVySW5mbzph
LmNvbXBpbGVyfTtyZXR1cm4gZS5pc1RvcD0hMCxlLl9zZXR1cD1mdW5jdGlvbihiKXtiLnBhcnRp
YWw/KGYuaGVscGVycz1iLmhlbHBlcnMsZi5wYXJ0aWFscz1iLnBhcnRpYWxzLGYuZGVjb3JhdG9y
cz1iLmRlY29yYXRvcnMpOihmLmhlbHBlcnM9Zi5tZXJnZShiLmhlbHBlcnMsYy5oZWxwZXJzKSxh
LnVzZVBhcnRpYWwmJihmLnBhcnRpYWxzPWYubWVyZ2UoYi5wYXJ0aWFscyxjLnBhcnRpYWxzKSks
KGEudXNlUGFydGlhbHx8YS51c2VEZWNvcmF0b3JzKSYmKGYuZGVjb3JhdG9ycz1mLm1lcmdlKGIu
ZGVjb3JhdG9ycyxjLmRlY29yYXRvcnMpKSl9LGUuX2NoaWxkPWZ1bmN0aW9uKGIsYyxkLGUpe2lm
KGEudXNlQmxvY2tQYXJhbXMmJiFkKXRocm93IG5ldyBuWyJkZWZhdWx0Il0oIm11c3QgcGFzcyBi
bG9jayBwYXJhbXMiKTtpZihhLnVzZURlcHRocyYmIWUpdGhyb3cgbmV3IG5bImRlZmF1bHQiXSgi
bXVzdCBwYXNzIHBhcmVudCBkZXB0aHMiKTtyZXR1cm4gaChmLGIsYVtiXSxjLDAsZCxlKX0sZX1m
dW5jdGlvbiBoKGEsYixjLGQsZSxmLGcpe2Z1bmN0aW9uIGgoYil7dmFyIGU9YXJndW1lbnRzLmxl
bmd0aDw9MXx8dm9pZCAwPT09YXJndW1lbnRzWzFdP3t9OmFyZ3VtZW50c1sxXSxoPWc7cmV0dXJu
IGcmJmIhPWdbMF0mJihoPVtiXS5jb25jYXQoZykpLGMoYSxiLGEuaGVscGVycyxhLnBhcnRpYWxz
LGUuZGF0YXx8ZCxmJiZbZS5ibG9ja1BhcmFtc10uY29uY2F0KGYpLGgpfXJldHVybiBoPW0oYyxo
LGEsZyxkLGYpLGgucHJvZ3JhbT1iLGguZGVwdGg9Zz9nLmxlbmd0aDowLGguYmxvY2tQYXJhbXM9
ZXx8MCxofWZ1bmN0aW9uIGkoYSxiLGMpe2lmKGEpYS5jYWxsfHxjLm5hbWV8fChjLm5hbWU9YSxh
PWMucGFydGlhbHNbYV0pO2Vsc2UgaWYoIkBwYXJ0aWFsLWJsb2NrIj09PWMubmFtZSl7Zm9yKHZh
ciBkPWMuZGF0YTtkWyJwYXJ0aWFsLWJsb2NrIl09PT1rOylkPWQuX3BhcmVudDthPWRbInBhcnRp
YWwtYmxvY2siXSxkWyJwYXJ0aWFsLWJsb2NrIl09a31lbHNlIGE9Yy5wYXJ0aWFsc1tjLm5hbWVd
O3JldHVybiBhfWZ1bmN0aW9uIGooYSxjLGUpe2UucGFydGlhbD0hMCxlLmlkcyYmKGUuZGF0YS5j
b250ZXh0UGF0aD1lLmlkc1swXXx8ZS5kYXRhLmNvbnRleHRQYXRoKTt2YXIgZj12b2lkIDA7aWYo
ZS5mbiYmZS5mbiE9PWsmJihlLmRhdGE9ZC5jcmVhdGVGcmFtZShlLmRhdGEpLGY9ZS5kYXRhWyJw
YXJ0aWFsLWJsb2NrIl09ZS5mbixmLnBhcnRpYWxzJiYoZS5wYXJ0aWFscz1iLmV4dGVuZCh7fSxl
LnBhcnRpYWxzLGYucGFydGlhbHMpKSksdm9pZCAwPT09YSYmZiYmKGE9Ziksdm9pZCAwPT09YSl0
aHJvdyBuZXcgblsiZGVmYXVsdCJdKCJUaGUgcGFydGlhbCAiK2UubmFtZSsiIGNvdWxkIG5vdCBi
ZSBmb3VuZCIpO2lmKGEgaW5zdGFuY2VvZiBGdW5jdGlvbilyZXR1cm4gYShjLGUpfWZ1bmN0aW9u
IGsoKXtyZXR1cm4iIn1mdW5jdGlvbiBsKGEsYil7cmV0dXJuIGImJiJyb290ImluIGJ8fChiPWI/
ZC5jcmVhdGVGcmFtZShiKTp7fSxiLnJvb3Q9YSksYn1mdW5jdGlvbiBtKGEsYyxkLGUsZixnKXtp
ZihhLmRlY29yYXRvcil7dmFyIGg9e307Yz1hLmRlY29yYXRvcihjLGgsZCxlJiZlWzBdLGYsZyxl
KSxiLmV4dGVuZChjLGgpfXJldHVybiBjfWEuX19lc01vZHVsZT0hMCxhLmNoZWNrUmV2aXNpb249
ZixhLnRlbXBsYXRlPWcsYS53cmFwUHJvZ3JhbT1oLGEucmVzb2x2ZVBhcnRpYWw9aSxhLmludm9r
ZVBhcnRpYWw9aixhLm5vb3A9azt2YXIgbj1lKGMpfSksZGVmaW5lKCJoYW5kbGViYXJzL25vLWNv
bmZsaWN0IixbImV4cG9ydHMiLCJtb2R1bGUiXSxmdW5jdGlvbihhLGIpeyJ1c2Ugc3RyaWN0Ijti
LmV4cG9ydHM9ZnVuY3Rpb24oYSl7dmFyIGI9InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xv
YmFsOndpbmRvdyxjPWIuSGFuZGxlYmFyczthLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oKXtyZXR1cm4g
Yi5IYW5kbGViYXJzPT09YSYmKGIuSGFuZGxlYmFycz1jKSxhfX19KSxkZWZpbmUoImhhbmRsZWJh
cnMucnVudGltZSIsWyJleHBvcnRzIiwibW9kdWxlIiwiLi9oYW5kbGViYXJzL2Jhc2UiLCIuL2hh
bmRsZWJhcnMvc2FmZS1zdHJpbmciLCIuL2hhbmRsZWJhcnMvZXhjZXB0aW9uIiwiLi9oYW5kbGVi
YXJzL3V0aWxzIiwiLi9oYW5kbGViYXJzL3J1bnRpbWUiLCIuL2hhbmRsZWJhcnMvbm8tY29uZmxp
Y3QiXSxmdW5jdGlvbihhLGIsYyxkLGUsZixnLGgpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGEp
e3JldHVybiBhJiZhLl9fZXNNb2R1bGU/YTp7ImRlZmF1bHQiOmF9fWZ1bmN0aW9uIGooKXt2YXIg
YT1uZXcgYy5IYW5kbGViYXJzRW52aXJvbm1lbnQ7cmV0dXJuIGYuZXh0ZW5kKGEsYyksYS5TYWZl
U3RyaW5nPWtbImRlZmF1bHQiXSxhLkV4Y2VwdGlvbj1sWyJkZWZhdWx0Il0sYS5VdGlscz1mLGEu
ZXNjYXBlRXhwcmVzc2lvbj1mLmVzY2FwZUV4cHJlc3Npb24sYS5WTT1nLGEudGVtcGxhdGU9ZnVu
Y3Rpb24oYil7cmV0dXJuIGcudGVtcGxhdGUoYixhKX0sYX12YXIgaz1pKGQpLGw9aShlKSxtPWko
aCksbj1qKCk7bi5jcmVhdGU9aixtWyJkZWZhdWx0Il0obiksblsiZGVmYXVsdCJdPW4sYi5leHBv
cnRzPW59KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9oYW5kbGViYXJzLnJ1bnRp
bWUuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9o
YW5kbGViYXJzLnJ1bnRpbWUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzBmNWM5MzM5NzFhMDJiYTlmYTY5YTYz
ODIyYzBkYzI3ZWI1OTQ4OQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9u
b2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2hhbmRsZWJhcnMucnVudGltZS5qcwpAQCAtMCww
ICsxLDEzNDMgQEAKKy8qKiEKKworIEBsaWNlbnNlCisgaGFuZGxlYmFycyB2NC4wLjYKKworQ29w
eXJpZ2h0IChDKSAyMDExLTIwMTYgYnkgWWVodWRhIEthdHoKKworUGVybWlzc2lvbiBpcyBoZXJl
YnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29w
eQorb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0
aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKK2luIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0
aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKK3RvIHVzZSwgY29w
eSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29y
IHNlbGwKK2NvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3
aG9tIHRoZSBTb2Z0d2FyZSBpcworZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9uczoKKworVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRo
aXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KK2FsbCBjb3BpZXMgb3Ig
c3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorCitUSEUgU09GVFdBUkUgSVMg
UFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBP
UgorSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFksCitGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQg
Tk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKK0FVVEhPUlMgT1IgQ09QWVJJ
R0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKK0xJ
QUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJX
SVNFLCBBUklTSU5HIEZST00sCitPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZU
V0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOCitUSEUgU09GVFdBUkUuCisKKyov
CisvKiohCisKKyBAbGljZW5zZQorIGhhbmRsZWJhcnMgdjQuMC42CisKK0NvcHlyaWdodCAoQykg
MjAxMS0yMDE2IGJ5IFllaHVkYSBLYXR6CisKK1Blcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQs
IGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKK29mIHRoaXMg
c29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2Fy
ZSIpLCB0byBkZWFsCitpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVk
aW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCit0byB1c2UsIGNvcHksIG1vZGlmeSwg
bWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCitjb3Bp
ZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29m
dHdhcmUgaXMKK2Z1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnM6CisKK1RoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Np
b24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCithbGwgY29waWVzIG9yIHN1YnN0YW50aWFs
IHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKworVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJB
UyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKK0lNUExJRUQs
IElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZLAorRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdF
TUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCitBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJT
IEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCitMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lO
RyBGUk9NLAorT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhF
IFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgorVEhFIFNPRlRXQVJFLgorCisqLworLyoqIQorCisg
QGxpY2Vuc2UKKyBoYW5kbGViYXJzIHY0LjAuNgorCitDb3B5cmlnaHQgKEMpIDIwMTEtMjAxNiBi
eSBZZWh1ZGEgS2F0egorCitQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNo
YXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CitvZiB0aGlzIHNvZnR3YXJlIGFu
ZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVh
bAoraW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0
IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwordG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJs
aXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAorY29waWVzIG9mIHRoZSBT
b2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCitm
dXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgor
CitUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBz
aGFsbCBiZSBpbmNsdWRlZCBpbgorYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBv
ZiB0aGUgU29mdHdhcmUuCisKK1RIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRI
T1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCitJTVBMSUVELCBJTkNMVURJTkcg
QlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKK0ZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRQorQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUg
Rk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorTElBQklMSVRZLCBXSEVUSEVSIElOIEFO
IEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKK09V
VCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RI
RVIgREVBTElOR1MgSU4KK1RIRSBTT0ZUV0FSRS4KKworKi8KKyhmdW5jdGlvbiB3ZWJwYWNrVW5p
dmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7CisgICAgaWYodHlwZW9mIGV4
cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKQorICAgICAg
ICBtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTsKKyAgICBlbHNlIGlmKHR5cGVvZiBkZWZpbmUg
PT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCkKKyAgICAgICAgZGVmaW5lKFtdLCBmYWN0b3J5
KTsKKyAgICBlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JykKKyAgICAgICAgZXhw
b3J0c1siSGFuZGxlYmFycyJdID0gZmFjdG9yeSgpOworICAgIGVsc2UKKyAgICAgICAgcm9vdFsi
SGFuZGxlYmFycyJdID0gZmFjdG9yeSgpOworfSkodGhpcywgZnVuY3Rpb24oKSB7CityZXR1cm4g
LyoqKioqKi8gKGZ1bmN0aW9uKG1vZHVsZXMpIHsgLy8gd2VicGFja0Jvb3RzdHJhcAorLyoqKioq
Ki8gICAgLy8gVGhlIG1vZHVsZSBjYWNoZQorLyoqKioqKi8gICAgdmFyIGluc3RhbGxlZE1vZHVs
ZXMgPSB7fTsKKworLyoqKioqKi8gICAgLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb24KKy8qKioqKiov
ICAgIGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHsKKworLyoqKioqKi8g
ICAgICAgIC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZQorLyoqKioqKi8gICAgICAgIGlm
KGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKQorLyoqKioqKi8gICAgICAgICAgICByZXR1cm4g
aW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0czsKKworLyoqKioqKi8gICAgICAgIC8v
IENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpCisvKioqKioq
LyAgICAgICAgdmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0geworLyoq
KioqKi8gICAgICAgICAgICBleHBvcnRzOiB7fSwKKy8qKioqKiovICAgICAgICAgICAgaWQ6IG1v
ZHVsZUlkLAorLyoqKioqKi8gICAgICAgICAgICBsb2FkZWQ6IGZhbHNlCisvKioqKioqLyAgICAg
ICAgfTsKKworLyoqKioqKi8gICAgICAgIC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvbgor
LyoqKioqKi8gICAgICAgIG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1v
ZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pOworCisvKioqKioqLyAg
ICAgICAgLy8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZAorLyoqKioqKi8gICAgICAgIG1vZHVs
ZS5sb2FkZWQgPSB0cnVlOworCisvKioqKioqLyAgICAgICAgLy8gUmV0dXJuIHRoZSBleHBvcnRz
IG9mIHRoZSBtb2R1bGUKKy8qKioqKiovICAgICAgICByZXR1cm4gbW9kdWxlLmV4cG9ydHM7Cisv
KioqKioqLyAgICB9CisKKworLyoqKioqKi8gICAgLy8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVj
dCAoX193ZWJwYWNrX21vZHVsZXNfXykKKy8qKioqKiovICAgIF9fd2VicGFja19yZXF1aXJlX18u
bSA9IG1vZHVsZXM7CisKKy8qKioqKiovICAgIC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlCisv
KioqKioqLyAgICBfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzOworCisv
KioqKioqLyAgICAvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfXworLyoqKioqKi8gICAgX193ZWJw
YWNrX3JlcXVpcmVfXy5wID0gIiI7CisKKy8qKioqKiovICAgIC8vIExvYWQgZW50cnkgbW9kdWxl
IGFuZCByZXR1cm4gZXhwb3J0cworLyoqKioqKi8gICAgcmV0dXJuIF9fd2VicGFja19yZXF1aXJl
X18oMCk7CisvKioqKioqLyB9KQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qKioqKiovIChbCisvKiAw
ICovCisvKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18p
IHsKKworICAgICd1c2Ugc3RyaWN0JzsKKworICAgIHZhciBfaW50ZXJvcFJlcXVpcmVXaWxkY2Fy
ZCA9IF9fd2VicGFja19yZXF1aXJlX18oMSlbJ2RlZmF1bHQnXTsKKworICAgIHZhciBfaW50ZXJv
cFJlcXVpcmVEZWZhdWx0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKVsnZGVmYXVsdCddOworCisg
ICAgZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKKworICAgIHZhciBfaGFuZGxlYmFyc0Jhc2Ug
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpOworCisgICAgdmFyIGJhc2UgPSBfaW50ZXJvcFJlcXVp
cmVXaWxkY2FyZChfaGFuZGxlYmFyc0Jhc2UpOworCisgICAgLy8gRWFjaCBvZiB0aGVzZSBhdWdt
ZW50IHRoZSBIYW5kbGViYXJzIG9iamVjdC4gTm8gbmVlZCB0byBzZXR1cCBoZXJlLgorICAgIC8v
IChUaGlzIGlzIGRvbmUgdG8gZWFzaWx5IHNoYXJlIGNvZGUgYmV0d2VlbiBjb21tb25qcyBhbmQg
YnJvd3NlIGVudnMpCisKKyAgICB2YXIgX2hhbmRsZWJhcnNTYWZlU3RyaW5nID0gX193ZWJwYWNr
X3JlcXVpcmVfXygyMCk7CisKKyAgICB2YXIgX2hhbmRsZWJhcnNTYWZlU3RyaW5nMiA9IF9pbnRl
cm9wUmVxdWlyZURlZmF1bHQoX2hhbmRsZWJhcnNTYWZlU3RyaW5nKTsKKworICAgIHZhciBfaGFu
ZGxlYmFyc0V4Y2VwdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7CisKKyAgICB2YXIgX2hh
bmRsZWJhcnNFeGNlcHRpb24yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaGFuZGxlYmFyc0V4
Y2VwdGlvbik7CisKKyAgICB2YXIgX2hhbmRsZWJhcnNVdGlscyA9IF9fd2VicGFja19yZXF1aXJl
X18oNCk7CisKKyAgICB2YXIgVXRpbHMgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChfaGFuZGxl
YmFyc1V0aWxzKTsKKworICAgIHZhciBfaGFuZGxlYmFyc1J1bnRpbWUgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDIxKTsKKworICAgIHZhciBydW50aW1lID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQo
X2hhbmRsZWJhcnNSdW50aW1lKTsKKworICAgIHZhciBfaGFuZGxlYmFyc05vQ29uZmxpY3QgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDIyKTsKKworICAgIHZhciBfaGFuZGxlYmFyc05vQ29uZmxpY3Qy
ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaGFuZGxlYmFyc05vQ29uZmxpY3QpOworCisgICAg
Ly8gRm9yIGNvbXBhdGliaWxpdHkgYW5kIHVzYWdlIG91dHNpZGUgb2YgbW9kdWxlIHN5c3RlbXMs
IG1ha2UgdGhlIEhhbmRsZWJhcnMgb2JqZWN0IGEgbmFtZXNwYWNlCisgICAgZnVuY3Rpb24gY3Jl
YXRlKCkgeworICAgICAgdmFyIGhiID0gbmV3IGJhc2UuSGFuZGxlYmFyc0Vudmlyb25tZW50KCk7
CisKKyAgICAgIFV0aWxzLmV4dGVuZChoYiwgYmFzZSk7CisgICAgICBoYi5TYWZlU3RyaW5nID0g
X2hhbmRsZWJhcnNTYWZlU3RyaW5nMlsnZGVmYXVsdCddOworICAgICAgaGIuRXhjZXB0aW9uID0g
X2hhbmRsZWJhcnNFeGNlcHRpb24yWydkZWZhdWx0J107CisgICAgICBoYi5VdGlscyA9IFV0aWxz
OworICAgICAgaGIuZXNjYXBlRXhwcmVzc2lvbiA9IFV0aWxzLmVzY2FwZUV4cHJlc3Npb247CisK
KyAgICAgIGhiLlZNID0gcnVudGltZTsKKyAgICAgIGhiLnRlbXBsYXRlID0gZnVuY3Rpb24gKHNw
ZWMpIHsKKyAgICAgICAgcmV0dXJuIHJ1bnRpbWUudGVtcGxhdGUoc3BlYywgaGIpOworICAgICAg
fTsKKworICAgICAgcmV0dXJuIGhiOworICAgIH0KKworICAgIHZhciBpbnN0ID0gY3JlYXRlKCk7
CisgICAgaW5zdC5jcmVhdGUgPSBjcmVhdGU7CisKKyAgICBfaGFuZGxlYmFyc05vQ29uZmxpY3Qy
WydkZWZhdWx0J10oaW5zdCk7CisKKyAgICBpbnN0WydkZWZhdWx0J10gPSBpbnN0OworCisgICAg
ZXhwb3J0c1snZGVmYXVsdCddID0gaW5zdDsKKyAgICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNb
J2RlZmF1bHQnXTsKKworLyoqKi8gfSwKKy8qIDEgKi8KKy8qKiovIGZ1bmN0aW9uKG1vZHVsZSwg
ZXhwb3J0cykgeworCisgICAgInVzZSBzdHJpY3QiOworCisgICAgZXhwb3J0c1siZGVmYXVsdCJd
ID0gZnVuY3Rpb24gKG9iaikgeworICAgICAgaWYgKG9iaiAmJiBvYmouX19lc01vZHVsZSkgewor
ICAgICAgICByZXR1cm4gb2JqOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgdmFyIG5ld09iaiA9
IHt9OworCisgICAgICAgIGlmIChvYmogIT0gbnVsbCkgeworICAgICAgICAgIGZvciAodmFyIGtl
eSBpbiBvYmopIHsKKyAgICAgICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3Bl
cnR5LmNhbGwob2JqLCBrZXkpKSBuZXdPYmpba2V5XSA9IG9ialtrZXldOworICAgICAgICAgIH0K
KyAgICAgICAgfQorCisgICAgICAgIG5ld09ialsiZGVmYXVsdCJdID0gb2JqOworICAgICAgICBy
ZXR1cm4gbmV3T2JqOworICAgICAgfQorICAgIH07CisKKyAgICBleHBvcnRzLl9fZXNNb2R1bGUg
PSB0cnVlOworCisvKioqLyB9LAorLyogMiAqLworLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBv
cnRzKSB7CisKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBleHBvcnRzWyJkZWZhdWx0Il0gPSBm
dW5jdGlvbiAob2JqKSB7CisgICAgICByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2Jq
IDogeworICAgICAgICAiZGVmYXVsdCI6IG9iagorICAgICAgfTsKKyAgICB9OworCisgICAgZXhw
b3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKKworLyoqKi8gfSwKKy8qIDMgKi8KKy8qKiovIGZ1bmN0
aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgeworCisgICAgJ3VzZSBz
dHJpY3QnOworCisgICAgdmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDIpWydkZWZhdWx0J107CisKKyAgICBleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOwor
ICAgIGV4cG9ydHMuSGFuZGxlYmFyc0Vudmlyb25tZW50ID0gSGFuZGxlYmFyc0Vudmlyb25tZW50
OworCisgICAgdmFyIF91dGlscyA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7CisKKyAgICB2YXIg
X2V4Y2VwdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7CisKKyAgICB2YXIgX2V4Y2VwdGlv
bjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9leGNlcHRpb24pOworCisgICAgdmFyIF9oZWxw
ZXJzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5KTsKKworICAgIHZhciBfZGVjb3JhdG9ycyA9IF9f
d2VicGFja19yZXF1aXJlX18oMTcpOworCisgICAgdmFyIF9sb2dnZXIgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDE5KTsKKworICAgIHZhciBfbG9nZ2VyMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQo
X2xvZ2dlcik7CisKKyAgICB2YXIgVkVSU0lPTiA9ICc0LjAuNSc7CisgICAgZXhwb3J0cy5WRVJT
SU9OID0gVkVSU0lPTjsKKyAgICB2YXIgQ09NUElMRVJfUkVWSVNJT04gPSA3OworCisgICAgZXhw
b3J0cy5DT01QSUxFUl9SRVZJU0lPTiA9IENPTVBJTEVSX1JFVklTSU9OOworICAgIHZhciBSRVZJ
U0lPTl9DSEFOR0VTID0geworICAgICAgMTogJzw9IDEuMC5yYy4yJywgLy8gMS4wLnJjLjIgaXMg
YWN0dWFsbHkgcmV2MiBidXQgZG9lc24ndCByZXBvcnQgaXQKKyAgICAgIDI6ICc9PSAxLjAuMC1y
Yy4zJywKKyAgICAgIDM6ICc9PSAxLjAuMC1yYy40JywKKyAgICAgIDQ6ICc9PSAxLngueCcsCisg
ICAgICA1OiAnPT0gMi4wLjAtYWxwaGEueCcsCisgICAgICA2OiAnPj0gMi4wLjAtYmV0YS4xJywK
KyAgICAgIDc6ICc+PSA0LjAuMCcKKyAgICB9OworCisgICAgZXhwb3J0cy5SRVZJU0lPTl9DSEFO
R0VTID0gUkVWSVNJT05fQ0hBTkdFUzsKKyAgICB2YXIgb2JqZWN0VHlwZSA9ICdbb2JqZWN0IE9i
amVjdF0nOworCisgICAgZnVuY3Rpb24gSGFuZGxlYmFyc0Vudmlyb25tZW50KGhlbHBlcnMsIHBh
cnRpYWxzLCBkZWNvcmF0b3JzKSB7CisgICAgICB0aGlzLmhlbHBlcnMgPSBoZWxwZXJzIHx8IHt9
OworICAgICAgdGhpcy5wYXJ0aWFscyA9IHBhcnRpYWxzIHx8IHt9OworICAgICAgdGhpcy5kZWNv
cmF0b3JzID0gZGVjb3JhdG9ycyB8fCB7fTsKKworICAgICAgX2hlbHBlcnMucmVnaXN0ZXJEZWZh
dWx0SGVscGVycyh0aGlzKTsKKyAgICAgIF9kZWNvcmF0b3JzLnJlZ2lzdGVyRGVmYXVsdERlY29y
YXRvcnModGhpcyk7CisgICAgfQorCisgICAgSGFuZGxlYmFyc0Vudmlyb25tZW50LnByb3RvdHlw
ZSA9IHsKKyAgICAgIGNvbnN0cnVjdG9yOiBIYW5kbGViYXJzRW52aXJvbm1lbnQsCisKKyAgICAg
IGxvZ2dlcjogX2xvZ2dlcjJbJ2RlZmF1bHQnXSwKKyAgICAgIGxvZzogX2xvZ2dlcjJbJ2RlZmF1
bHQnXS5sb2csCisKKyAgICAgIHJlZ2lzdGVySGVscGVyOiBmdW5jdGlvbiByZWdpc3RlckhlbHBl
cihuYW1lLCBmbikgeworICAgICAgICBpZiAoX3V0aWxzLnRvU3RyaW5nLmNhbGwobmFtZSkgPT09
IG9iamVjdFR5cGUpIHsKKyAgICAgICAgICBpZiAoZm4pIHsKKyAgICAgICAgICAgIHRocm93IG5l
dyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCdBcmcgbm90IHN1cHBvcnRlZCB3aXRoIG11bHRpcGxl
IGhlbHBlcnMnKTsKKyAgICAgICAgICB9CisgICAgICAgICAgX3V0aWxzLmV4dGVuZCh0aGlzLmhl
bHBlcnMsIG5hbWUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIHRoaXMuaGVscGVyc1tu
YW1lXSA9IGZuOworICAgICAgICB9CisgICAgICB9LAorICAgICAgdW5yZWdpc3RlckhlbHBlcjog
ZnVuY3Rpb24gdW5yZWdpc3RlckhlbHBlcihuYW1lKSB7CisgICAgICAgIGRlbGV0ZSB0aGlzLmhl
bHBlcnNbbmFtZV07CisgICAgICB9LAorCisgICAgICByZWdpc3RlclBhcnRpYWw6IGZ1bmN0aW9u
IHJlZ2lzdGVyUGFydGlhbChuYW1lLCBwYXJ0aWFsKSB7CisgICAgICAgIGlmIChfdXRpbHMudG9T
dHJpbmcuY2FsbChuYW1lKSA9PT0gb2JqZWN0VHlwZSkgeworICAgICAgICAgIF91dGlscy5leHRl
bmQodGhpcy5wYXJ0aWFscywgbmFtZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgaWYg
KHR5cGVvZiBwYXJ0aWFsID09PSAndW5kZWZpbmVkJykgeworICAgICAgICAgICAgdGhyb3cgbmV3
IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ0F0dGVtcHRpbmcgdG8gcmVnaXN0ZXIgYSBwYXJ0aWFs
IGNhbGxlZCAiJyArIG5hbWUgKyAnIiBhcyB1bmRlZmluZWQnKTsKKyAgICAgICAgICB9CisgICAg
ICAgICAgdGhpcy5wYXJ0aWFsc1tuYW1lXSA9IHBhcnRpYWw7CisgICAgICAgIH0KKyAgICAgIH0s
CisgICAgICB1bnJlZ2lzdGVyUGFydGlhbDogZnVuY3Rpb24gdW5yZWdpc3RlclBhcnRpYWwobmFt
ZSkgeworICAgICAgICBkZWxldGUgdGhpcy5wYXJ0aWFsc1tuYW1lXTsKKyAgICAgIH0sCisKKyAg
ICAgIHJlZ2lzdGVyRGVjb3JhdG9yOiBmdW5jdGlvbiByZWdpc3RlckRlY29yYXRvcihuYW1lLCBm
bikgeworICAgICAgICBpZiAoX3V0aWxzLnRvU3RyaW5nLmNhbGwobmFtZSkgPT09IG9iamVjdFR5
cGUpIHsKKyAgICAgICAgICBpZiAoZm4pIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBfZXhjZXB0
aW9uMlsnZGVmYXVsdCddKCdBcmcgbm90IHN1cHBvcnRlZCB3aXRoIG11bHRpcGxlIGRlY29yYXRv
cnMnKTsKKyAgICAgICAgICB9CisgICAgICAgICAgX3V0aWxzLmV4dGVuZCh0aGlzLmRlY29yYXRv
cnMsIG5hbWUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIHRoaXMuZGVjb3JhdG9yc1tu
YW1lXSA9IGZuOworICAgICAgICB9CisgICAgICB9LAorICAgICAgdW5yZWdpc3RlckRlY29yYXRv
cjogZnVuY3Rpb24gdW5yZWdpc3RlckRlY29yYXRvcihuYW1lKSB7CisgICAgICAgIGRlbGV0ZSB0
aGlzLmRlY29yYXRvcnNbbmFtZV07CisgICAgICB9CisgICAgfTsKKworICAgIHZhciBsb2cgPSBf
bG9nZ2VyMlsnZGVmYXVsdCddLmxvZzsKKworICAgIGV4cG9ydHMubG9nID0gbG9nOworICAgIGV4
cG9ydHMuY3JlYXRlRnJhbWUgPSBfdXRpbHMuY3JlYXRlRnJhbWU7CisgICAgZXhwb3J0cy5sb2dn
ZXIgPSBfbG9nZ2VyMlsnZGVmYXVsdCddOworCisvKioqLyB9LAorLyogNCAqLworLyoqKi8gZnVu
Y3Rpb24obW9kdWxlLCBleHBvcnRzKSB7CisKKyAgICAndXNlIHN0cmljdCc7CisKKyAgICBleHBv
cnRzLl9fZXNNb2R1bGUgPSB0cnVlOworICAgIGV4cG9ydHMuZXh0ZW5kID0gZXh0ZW5kOworICAg
IGV4cG9ydHMuaW5kZXhPZiA9IGluZGV4T2Y7CisgICAgZXhwb3J0cy5lc2NhcGVFeHByZXNzaW9u
ID0gZXNjYXBlRXhwcmVzc2lvbjsKKyAgICBleHBvcnRzLmlzRW1wdHkgPSBpc0VtcHR5OworICAg
IGV4cG9ydHMuY3JlYXRlRnJhbWUgPSBjcmVhdGVGcmFtZTsKKyAgICBleHBvcnRzLmJsb2NrUGFy
YW1zID0gYmxvY2tQYXJhbXM7CisgICAgZXhwb3J0cy5hcHBlbmRDb250ZXh0UGF0aCA9IGFwcGVu
ZENvbnRleHRQYXRoOworICAgIHZhciBlc2NhcGUgPSB7CisgICAgICAnJic6ICcmYW1wOycsCisg
ICAgICAnPCc6ICcmbHQ7JywKKyAgICAgICc+JzogJyZndDsnLAorICAgICAgJyInOiAnJnF1b3Q7
JywKKyAgICAgICInIjogJyYjeDI3OycsCisgICAgICAnYCc6ICcmI3g2MDsnLAorICAgICAgJz0n
OiAnJiN4M0Q7JworICAgIH07CisKKyAgICB2YXIgYmFkQ2hhcnMgPSAvWyY8PiInYD1dL2csCisg
ICAgICAgIHBvc3NpYmxlID0gL1smPD4iJ2A9XS87CisKKyAgICBmdW5jdGlvbiBlc2NhcGVDaGFy
KGNocikgeworICAgICAgcmV0dXJuIGVzY2FwZVtjaHJdOworICAgIH0KKworICAgIGZ1bmN0aW9u
IGV4dGVuZChvYmogLyogLCAuLi5zb3VyY2UgKi8pIHsKKyAgICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIGZvciAodmFyIGtleSBpbiBhcmd1
bWVudHNbaV0pIHsKKyAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0
eS5jYWxsKGFyZ3VtZW50c1tpXSwga2V5KSkgeworICAgICAgICAgICAgb2JqW2tleV0gPSBhcmd1
bWVudHNbaV1ba2V5XTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAg
cmV0dXJuIG9iajsKKyAgICB9CisKKyAgICB2YXIgdG9TdHJpbmcgPSBPYmplY3QucHJvdG90eXBl
LnRvU3RyaW5nOworCisgICAgZXhwb3J0cy50b1N0cmluZyA9IHRvU3RyaW5nOworICAgIC8vIFNv
dXJjZWQgZnJvbSBsb2Rhc2gKKyAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vYmVzdGllanMvbG9k
YXNoL2Jsb2IvbWFzdGVyL0xJQ0VOU0UudHh0CisgICAgLyogZXNsaW50LWRpc2FibGUgZnVuYy1z
dHlsZSAqLworICAgIHZhciBpc0Z1bmN0aW9uID0gZnVuY3Rpb24gaXNGdW5jdGlvbih2YWx1ZSkg
eworICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJzsKKyAgICB9OworICAg
IC8vIGZhbGxiYWNrIGZvciBvbGRlciB2ZXJzaW9ucyBvZiBDaHJvbWUgYW5kIFNhZmFyaQorICAg
IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovCisgICAgaWYgKGlzRnVuY3Rpb24oL3gvKSkgewor
ICAgICAgZXhwb3J0cy5pc0Z1bmN0aW9uID0gaXNGdW5jdGlvbiA9IGZ1bmN0aW9uICh2YWx1ZSkg
eworICAgICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHRvU3RyaW5n
LmNhbGwodmFsdWUpID09PSAnW29iamVjdCBGdW5jdGlvbl0nOworICAgICAgfTsKKyAgICB9Cisg
ICAgZXhwb3J0cy5pc0Z1bmN0aW9uID0gaXNGdW5jdGlvbjsKKworICAgIC8qIGVzbGludC1lbmFi
bGUgZnVuYy1zdHlsZSAqLworCisgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8KKyAgICB2
YXIgaXNBcnJheSA9IEFycmF5LmlzQXJyYXkgfHwgZnVuY3Rpb24gKHZhbHVlKSB7CisgICAgICBy
ZXR1cm4gdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyA/IHRvU3RyaW5nLmNhbGwo
dmFsdWUpID09PSAnW29iamVjdCBBcnJheV0nIDogZmFsc2U7CisgICAgfTsKKworICAgIGV4cG9y
dHMuaXNBcnJheSA9IGlzQXJyYXk7CisgICAgLy8gT2xkZXIgSUUgdmVyc2lvbnMgZG8gbm90IGRp
cmVjdGx5IHN1cHBvcnQgaW5kZXhPZiBzbyB3ZSBtdXN0IGltcGxlbWVudCBvdXIgb3duLCBzYWRs
eS4KKworICAgIGZ1bmN0aW9uIGluZGV4T2YoYXJyYXksIHZhbHVlKSB7CisgICAgICBmb3IgKHZh
ciBpID0gMCwgbGVuID0gYXJyYXkubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgaWYg
KGFycmF5W2ldID09PSB2YWx1ZSkgeworICAgICAgICAgIHJldHVybiBpOworICAgICAgICB9Cisg
ICAgICB9CisgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgZnVuY3Rpb24gZXNjYXBlRXhw
cmVzc2lvbihzdHJpbmcpIHsKKyAgICAgIGlmICh0eXBlb2Ygc3RyaW5nICE9PSAnc3RyaW5nJykg
eworICAgICAgICAvLyBkb24ndCBlc2NhcGUgU2FmZVN0cmluZ3MsIHNpbmNlIHRoZXkncmUgYWxy
ZWFkeSBzYWZlCisgICAgICAgIGlmIChzdHJpbmcgJiYgc3RyaW5nLnRvSFRNTCkgeworICAgICAg
ICAgIHJldHVybiBzdHJpbmcudG9IVE1MKCk7CisgICAgICAgIH0gZWxzZSBpZiAoc3RyaW5nID09
IG51bGwpIHsKKyAgICAgICAgICByZXR1cm4gJyc7CisgICAgICAgIH0gZWxzZSBpZiAoIXN0cmlu
ZykgeworICAgICAgICAgIHJldHVybiBzdHJpbmcgKyAnJzsKKyAgICAgICAgfQorCisgICAgICAg
IC8vIEZvcmNlIGEgc3RyaW5nIGNvbnZlcnNpb24gYXMgdGhpcyB3aWxsIGJlIGRvbmUgYnkgdGhl
IGFwcGVuZCByZWdhcmRsZXNzIGFuZAorICAgICAgICAvLyB0aGUgcmVnZXggdGVzdCB3aWxsIGRv
IHRoaXMgdHJhbnNwYXJlbnRseSBiZWhpbmQgdGhlIHNjZW5lcywgY2F1c2luZyBpc3N1ZXMgaWYK
KyAgICAgICAgLy8gYW4gb2JqZWN0J3MgdG8gc3RyaW5nIGhhcyBlc2NhcGVkIGNoYXJhY3RlcnMg
aW4gaXQuCisgICAgICAgIHN0cmluZyA9ICcnICsgc3RyaW5nOworICAgICAgfQorCisgICAgICBp
ZiAoIXBvc3NpYmxlLnRlc3Qoc3RyaW5nKSkgeworICAgICAgICByZXR1cm4gc3RyaW5nOworICAg
ICAgfQorICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKGJhZENoYXJzLCBlc2NhcGVDaGFyKTsK
KyAgICB9CisKKyAgICBmdW5jdGlvbiBpc0VtcHR5KHZhbHVlKSB7CisgICAgICBpZiAoIXZhbHVl
ICYmIHZhbHVlICE9PSAwKSB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgICAgfSBlbHNlIGlm
IChpc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPT09IDApIHsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICB9IGVsc2UgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICB9Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gY3JlYXRlRnJhbWUob2JqZWN0KSB7CisgICAgICB2YXIgZnJh
bWUgPSBleHRlbmQoe30sIG9iamVjdCk7CisgICAgICBmcmFtZS5fcGFyZW50ID0gb2JqZWN0Owor
ICAgICAgcmV0dXJuIGZyYW1lOworICAgIH0KKworICAgIGZ1bmN0aW9uIGJsb2NrUGFyYW1zKHBh
cmFtcywgaWRzKSB7CisgICAgICBwYXJhbXMucGF0aCA9IGlkczsKKyAgICAgIHJldHVybiBwYXJh
bXM7CisgICAgfQorCisgICAgZnVuY3Rpb24gYXBwZW5kQ29udGV4dFBhdGgoY29udGV4dFBhdGgs
IGlkKSB7CisgICAgICByZXR1cm4gKGNvbnRleHRQYXRoID8gY29udGV4dFBhdGggKyAnLicgOiAn
JykgKyBpZDsKKyAgICB9CisKKy8qKiovIH0sCisvKiA1ICovCisvKioqLyBmdW5jdGlvbihtb2R1
bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKKworICAgICd1c2Ugc3RyaWN0JzsK
KworICAgIHZhciBfT2JqZWN0JGRlZmluZVByb3BlcnR5ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2
KVsnZGVmYXVsdCddOworCisgICAgZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKKworICAgIHZh
ciBlcnJvclByb3BzID0gWydkZXNjcmlwdGlvbicsICdmaWxlTmFtZScsICdsaW5lTnVtYmVyJywg
J21lc3NhZ2UnLCAnbmFtZScsICdudW1iZXInLCAnc3RhY2snXTsKKworICAgIGZ1bmN0aW9uIEV4
Y2VwdGlvbihtZXNzYWdlLCBub2RlKSB7CisgICAgICB2YXIgbG9jID0gbm9kZSAmJiBub2RlLmxv
YywKKyAgICAgICAgICBsaW5lID0gdW5kZWZpbmVkLAorICAgICAgICAgIGNvbHVtbiA9IHVuZGVm
aW5lZDsKKyAgICAgIGlmIChsb2MpIHsKKyAgICAgICAgbGluZSA9IGxvYy5zdGFydC5saW5lOwor
ICAgICAgICBjb2x1bW4gPSBsb2Muc3RhcnQuY29sdW1uOworCisgICAgICAgIG1lc3NhZ2UgKz0g
JyAtICcgKyBsaW5lICsgJzonICsgY29sdW1uOworICAgICAgfQorCisgICAgICB2YXIgdG1wID0g
RXJyb3IucHJvdG90eXBlLmNvbnN0cnVjdG9yLmNhbGwodGhpcywgbWVzc2FnZSk7CisKKyAgICAg
IC8vIFVuZm9ydHVuYXRlbHkgZXJyb3JzIGFyZSBub3QgZW51bWVyYWJsZSBpbiBDaHJvbWUgKGF0
IGxlYXN0KSwgc28gYGZvciBwcm9wIGluIHRtcGAgZG9lc24ndCB3b3JrLgorICAgICAgZm9yICh2
YXIgaWR4ID0gMDsgaWR4IDwgZXJyb3JQcm9wcy5sZW5ndGg7IGlkeCsrKSB7CisgICAgICAgIHRo
aXNbZXJyb3JQcm9wc1tpZHhdXSA9IHRtcFtlcnJvclByb3BzW2lkeF1dOworICAgICAgfQorCisg
ICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqLworICAgICAgaWYgKEVycm9yLmNhcHR1cmVT
dGFja1RyYWNlKSB7CisgICAgICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIEV4Y2Vw
dGlvbik7CisgICAgICB9CisKKyAgICAgIHRyeSB7CisgICAgICAgIGlmIChsb2MpIHsKKyAgICAg
ICAgICB0aGlzLmxpbmVOdW1iZXIgPSBsaW5lOworCisgICAgICAgICAgLy8gV29yayBhcm91bmQg
aXNzdWUgdW5kZXIgc2FmYXJpIHdoZXJlIHdlIGNhbid0IGRpcmVjdGx5IHNldCB0aGUgY29sdW1u
IHZhbHVlCisgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8KKyAgICAgICAgICBp
ZiAoX09iamVjdCRkZWZpbmVQcm9wZXJ0eSkgeworICAgICAgICAgICAgT2JqZWN0LmRlZmluZVBy
b3BlcnR5KHRoaXMsICdjb2x1bW4nLCB7IHZhbHVlOiBjb2x1bW4gfSk7CisgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIHRoaXMuY29sdW1uID0gY29sdW1uOworICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgfSBjYXRjaCAobm9wKSB7CisgICAgICAgIC8qIElnbm9yZSBpZiB0aGUg
YnJvd3NlciBpcyB2ZXJ5IHBhcnRpY3VsYXIgKi8KKyAgICAgIH0KKyAgICB9CisKKyAgICBFeGNl
cHRpb24ucHJvdG90eXBlID0gbmV3IEVycm9yKCk7CisKKyAgICBleHBvcnRzWydkZWZhdWx0J10g
PSBFeGNlcHRpb247CisgICAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107CisK
Ky8qKiovIH0sCisvKiA2ICovCisvKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2Vi
cGFja19yZXF1aXJlX18pIHsKKworICAgIG1vZHVsZS5leHBvcnRzID0geyAiZGVmYXVsdCI6IF9f
d2VicGFja19yZXF1aXJlX18oNyksIF9fZXNNb2R1bGU6IHRydWUgfTsKKworLyoqKi8gfSwKKy8q
IDcgKi8KKy8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVf
XykgeworCisgICAgdmFyICQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgpOworICAgIG1vZHVsZS5l
eHBvcnRzID0gZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoaXQsIGtleSwgZGVzYyl7CisgICAgICBy
ZXR1cm4gJC5zZXREZXNjKGl0LCBrZXksIGRlc2MpOworICAgIH07CisKKy8qKiovIH0sCisvKiA4
ICovCisvKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHsKKworICAgIHZhciAkT2JqZWN0
ID0gT2JqZWN0OworICAgIG1vZHVsZS5leHBvcnRzID0geworICAgICAgY3JlYXRlOiAgICAgJE9i
amVjdC5jcmVhdGUsCisgICAgICBnZXRQcm90bzogICAkT2JqZWN0LmdldFByb3RvdHlwZU9mLAor
ICAgICAgaXNFbnVtOiAgICAge30ucHJvcGVydHlJc0VudW1lcmFibGUsCisgICAgICBnZXREZXNj
OiAgICAkT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvciwKKyAgICAgIHNldERlc2M6ICAg
ICRPYmplY3QuZGVmaW5lUHJvcGVydHksCisgICAgICBzZXREZXNjczogICAkT2JqZWN0LmRlZmlu
ZVByb3BlcnRpZXMsCisgICAgICBnZXRLZXlzOiAgICAkT2JqZWN0LmtleXMsCisgICAgICBnZXRO
YW1lczogICAkT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMsCisgICAgICBnZXRTeW1ib2xzOiAk
T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scywKKyAgICAgIGVhY2g6ICAgICAgIFtdLmZvckVh
Y2gKKyAgICB9OworCisvKioqLyB9LAorLyogOSAqLworLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBl
eHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CisKKyAgICAndXNlIHN0cmljdCc7CisKKyAg
ICB2YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVsdCA9IF9fd2VicGFja19yZXF1aXJlX18oMilbJ2Rl
ZmF1bHQnXTsKKworICAgIGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7CisgICAgZXhwb3J0cy5y
ZWdpc3RlckRlZmF1bHRIZWxwZXJzID0gcmVnaXN0ZXJEZWZhdWx0SGVscGVyczsKKworICAgIHZh
ciBfaGVscGVyc0Jsb2NrSGVscGVyTWlzc2luZyA9IF9fd2VicGFja19yZXF1aXJlX18oMTApOwor
CisgICAgdmFyIF9oZWxwZXJzQmxvY2tIZWxwZXJNaXNzaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURl
ZmF1bHQoX2hlbHBlcnNCbG9ja0hlbHBlck1pc3NpbmcpOworCisgICAgdmFyIF9oZWxwZXJzRWFj
aCA9IF9fd2VicGFja19yZXF1aXJlX18oMTEpOworCisgICAgdmFyIF9oZWxwZXJzRWFjaDIgPSBf
aW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9oZWxwZXJzRWFjaCk7CisKKyAgICB2YXIgX2hlbHBlcnNI
ZWxwZXJNaXNzaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMik7CisKKyAgICB2YXIgX2hlbHBl
cnNIZWxwZXJNaXNzaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2hlbHBlcnNIZWxwZXJN
aXNzaW5nKTsKKworICAgIHZhciBfaGVscGVyc0lmID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMyk7
CisKKyAgICB2YXIgX2hlbHBlcnNJZjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9oZWxwZXJz
SWYpOworCisgICAgdmFyIF9oZWxwZXJzTG9nID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNCk7CisK
KyAgICB2YXIgX2hlbHBlcnNMb2cyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaGVscGVyc0xv
Zyk7CisKKyAgICB2YXIgX2hlbHBlcnNMb29rdXAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1KTsK
KworICAgIHZhciBfaGVscGVyc0xvb2t1cDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9oZWxw
ZXJzTG9va3VwKTsKKworICAgIHZhciBfaGVscGVyc1dpdGggPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDE2KTsKKworICAgIHZhciBfaGVscGVyc1dpdGgyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChf
aGVscGVyc1dpdGgpOworCisgICAgZnVuY3Rpb24gcmVnaXN0ZXJEZWZhdWx0SGVscGVycyhpbnN0
YW5jZSkgeworICAgICAgX2hlbHBlcnNCbG9ja0hlbHBlck1pc3NpbmcyWydkZWZhdWx0J10oaW5z
dGFuY2UpOworICAgICAgX2hlbHBlcnNFYWNoMlsnZGVmYXVsdCddKGluc3RhbmNlKTsKKyAgICAg
IF9oZWxwZXJzSGVscGVyTWlzc2luZzJbJ2RlZmF1bHQnXShpbnN0YW5jZSk7CisgICAgICBfaGVs
cGVyc0lmMlsnZGVmYXVsdCddKGluc3RhbmNlKTsKKyAgICAgIF9oZWxwZXJzTG9nMlsnZGVmYXVs
dCddKGluc3RhbmNlKTsKKyAgICAgIF9oZWxwZXJzTG9va3VwMlsnZGVmYXVsdCddKGluc3RhbmNl
KTsKKyAgICAgIF9oZWxwZXJzV2l0aDJbJ2RlZmF1bHQnXShpbnN0YW5jZSk7CisgICAgfQorCisv
KioqLyB9LAorLyogMTAgKi8KKy8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJw
YWNrX3JlcXVpcmVfXykgeworCisgICAgJ3VzZSBzdHJpY3QnOworCisgICAgZXhwb3J0cy5fX2Vz
TW9kdWxlID0gdHJ1ZTsKKworICAgIHZhciBfdXRpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQp
OworCisgICAgZXhwb3J0c1snZGVmYXVsdCddID0gZnVuY3Rpb24gKGluc3RhbmNlKSB7CisgICAg
ICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcignYmxvY2tIZWxwZXJNaXNzaW5nJywgZnVuY3Rpb24g
KGNvbnRleHQsIG9wdGlvbnMpIHsKKyAgICAgICAgdmFyIGludmVyc2UgPSBvcHRpb25zLmludmVy
c2UsCisgICAgICAgICAgICBmbiA9IG9wdGlvbnMuZm47CisKKyAgICAgICAgaWYgKGNvbnRleHQg
PT09IHRydWUpIHsKKyAgICAgICAgICByZXR1cm4gZm4odGhpcyk7CisgICAgICAgIH0gZWxzZSBp
ZiAoY29udGV4dCA9PT0gZmFsc2UgfHwgY29udGV4dCA9PSBudWxsKSB7CisgICAgICAgICAgcmV0
dXJuIGludmVyc2UodGhpcyk7CisgICAgICAgIH0gZWxzZSBpZiAoX3V0aWxzLmlzQXJyYXkoY29u
dGV4dCkpIHsKKyAgICAgICAgICBpZiAoY29udGV4dC5sZW5ndGggPiAwKSB7CisgICAgICAgICAg
ICBpZiAob3B0aW9ucy5pZHMpIHsKKyAgICAgICAgICAgICAgb3B0aW9ucy5pZHMgPSBbb3B0aW9u
cy5uYW1lXTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIGluc3RhbmNlLmhl
bHBlcnMuZWFjaChjb250ZXh0LCBvcHRpb25zKTsKKyAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgcmV0dXJuIGludmVyc2UodGhpcyk7CisgICAgICAgICAgfQorICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgIGlmIChvcHRpb25zLmRhdGEgJiYgb3B0aW9ucy5pZHMpIHsKKyAgICAgICAg
ICAgIHZhciBkYXRhID0gX3V0aWxzLmNyZWF0ZUZyYW1lKG9wdGlvbnMuZGF0YSk7CisgICAgICAg
ICAgICBkYXRhLmNvbnRleHRQYXRoID0gX3V0aWxzLmFwcGVuZENvbnRleHRQYXRoKG9wdGlvbnMu
ZGF0YS5jb250ZXh0UGF0aCwgb3B0aW9ucy5uYW1lKTsKKyAgICAgICAgICAgIG9wdGlvbnMgPSB7
IGRhdGE6IGRhdGEgfTsKKyAgICAgICAgICB9CisKKyAgICAgICAgICByZXR1cm4gZm4oY29udGV4
dCwgb3B0aW9ucyk7CisgICAgICAgIH0KKyAgICAgIH0pOworICAgIH07CisKKyAgICBtb2R1bGUu
ZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsKKworLyoqKi8gfSwKKy8qIDExICovCisvKioq
LyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKKworICAg
ICd1c2Ugc3RyaWN0JzsKKworICAgIHZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gX193ZWJw
YWNrX3JlcXVpcmVfXygyKVsnZGVmYXVsdCddOworCisgICAgZXhwb3J0cy5fX2VzTW9kdWxlID0g
dHJ1ZTsKKworICAgIHZhciBfdXRpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpOworCisgICAg
dmFyIF9leGNlcHRpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpOworCisgICAgdmFyIF9leGNl
cHRpb24yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZXhjZXB0aW9uKTsKKworICAgIGV4cG9y
dHNbJ2RlZmF1bHQnXSA9IGZ1bmN0aW9uIChpbnN0YW5jZSkgeworICAgICAgaW5zdGFuY2UucmVn
aXN0ZXJIZWxwZXIoJ2VhY2gnLCBmdW5jdGlvbiAoY29udGV4dCwgb3B0aW9ucykgeworICAgICAg
ICBpZiAoIW9wdGlvbnMpIHsKKyAgICAgICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1
bHQnXSgnTXVzdCBwYXNzIGl0ZXJhdG9yIHRvICNlYWNoJyk7CisgICAgICAgIH0KKworICAgICAg
ICB2YXIgZm4gPSBvcHRpb25zLmZuLAorICAgICAgICAgICAgaW52ZXJzZSA9IG9wdGlvbnMuaW52
ZXJzZSwKKyAgICAgICAgICAgIGkgPSAwLAorICAgICAgICAgICAgcmV0ID0gJycsCisgICAgICAg
ICAgICBkYXRhID0gdW5kZWZpbmVkLAorICAgICAgICAgICAgY29udGV4dFBhdGggPSB1bmRlZmlu
ZWQ7CisKKyAgICAgICAgaWYgKG9wdGlvbnMuZGF0YSAmJiBvcHRpb25zLmlkcykgeworICAgICAg
ICAgIGNvbnRleHRQYXRoID0gX3V0aWxzLmFwcGVuZENvbnRleHRQYXRoKG9wdGlvbnMuZGF0YS5j
b250ZXh0UGF0aCwgb3B0aW9ucy5pZHNbMF0pICsgJy4nOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKF91dGlscy5pc0Z1bmN0aW9uKGNvbnRleHQpKSB7CisgICAgICAgICAgY29udGV4dCA9IGNv
bnRleHQuY2FsbCh0aGlzKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChvcHRpb25zLmRhdGEp
IHsKKyAgICAgICAgICBkYXRhID0gX3V0aWxzLmNyZWF0ZUZyYW1lKG9wdGlvbnMuZGF0YSk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBleGVjSXRlcmF0aW9uKGZpZWxkLCBpbmRleCwg
bGFzdCkgeworICAgICAgICAgIGlmIChkYXRhKSB7CisgICAgICAgICAgICBkYXRhLmtleSA9IGZp
ZWxkOworICAgICAgICAgICAgZGF0YS5pbmRleCA9IGluZGV4OworICAgICAgICAgICAgZGF0YS5m
aXJzdCA9IGluZGV4ID09PSAwOworICAgICAgICAgICAgZGF0YS5sYXN0ID0gISFsYXN0OworCisg
ICAgICAgICAgICBpZiAoY29udGV4dFBhdGgpIHsKKyAgICAgICAgICAgICAgZGF0YS5jb250ZXh0
UGF0aCA9IGNvbnRleHRQYXRoICsgZmllbGQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQor
CisgICAgICAgICAgcmV0ID0gcmV0ICsgZm4oY29udGV4dFtmaWVsZF0sIHsKKyAgICAgICAgICAg
IGRhdGE6IGRhdGEsCisgICAgICAgICAgICBibG9ja1BhcmFtczogX3V0aWxzLmJsb2NrUGFyYW1z
KFtjb250ZXh0W2ZpZWxkXSwgZmllbGRdLCBbY29udGV4dFBhdGggKyBmaWVsZCwgbnVsbF0pCisg
ICAgICAgICAgfSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoY29udGV4dCAmJiB0eXBlb2Yg
Y29udGV4dCA9PT0gJ29iamVjdCcpIHsKKyAgICAgICAgICBpZiAoX3V0aWxzLmlzQXJyYXkoY29u
dGV4dCkpIHsKKyAgICAgICAgICAgIGZvciAodmFyIGogPSBjb250ZXh0Lmxlbmd0aDsgaSA8IGo7
IGkrKykgeworICAgICAgICAgICAgICBpZiAoaSBpbiBjb250ZXh0KSB7CisgICAgICAgICAgICAg
ICAgZXhlY0l0ZXJhdGlvbihpLCBpLCBpID09PSBjb250ZXh0Lmxlbmd0aCAtIDEpOworICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IHZhciBwcmlvcktleSA9IHVuZGVmaW5lZDsKKworICAgICAgICAgICAgZm9yICh2YXIga2V5IGlu
IGNvbnRleHQpIHsKKyAgICAgICAgICAgICAgaWYgKGNvbnRleHQuaGFzT3duUHJvcGVydHkoa2V5
KSkgeworICAgICAgICAgICAgICAgIC8vIFdlJ3JlIHJ1bm5pbmcgdGhlIGl0ZXJhdGlvbnMgb25l
IHN0ZXAgb3V0IG9mIHN5bmMgc28gd2UgY2FuIGRldGVjdAorICAgICAgICAgICAgICAgIC8vIHRo
ZSBsYXN0IGl0ZXJhdGlvbiB3aXRob3V0IGhhdmUgdG8gc2NhbiB0aGUgb2JqZWN0IHR3aWNlIGFu
ZCBjcmVhdGUKKyAgICAgICAgICAgICAgICAvLyBhbiBpdGVybWVkaWF0ZSBrZXlzIGFycmF5Lgor
ICAgICAgICAgICAgICAgIGlmIChwcmlvcktleSAhPT0gdW5kZWZpbmVkKSB7CisgICAgICAgICAg
ICAgICAgICBleGVjSXRlcmF0aW9uKHByaW9yS2V5LCBpIC0gMSk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIHByaW9yS2V5ID0ga2V5OworICAgICAgICAgICAgICAgIGkrKzsK
KyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHByaW9yS2V5
ICE9PSB1bmRlZmluZWQpIHsKKyAgICAgICAgICAgICAgZXhlY0l0ZXJhdGlvbihwcmlvcktleSwg
aSAtIDEsIHRydWUpOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorCisg
ICAgICAgIGlmIChpID09PSAwKSB7CisgICAgICAgICAgcmV0ID0gaW52ZXJzZSh0aGlzKTsKKyAg
ICAgICAgfQorCisgICAgICAgIHJldHVybiByZXQ7CisgICAgICB9KTsKKyAgICB9OworCisgICAg
bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107CisKKy8qKiovIH0sCisvKiAxMiAq
LworLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7
CisKKyAgICAndXNlIHN0cmljdCc7CisKKyAgICB2YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVsdCA9
IF9fd2VicGFja19yZXF1aXJlX18oMilbJ2RlZmF1bHQnXTsKKworICAgIGV4cG9ydHMuX19lc01v
ZHVsZSA9IHRydWU7CisKKyAgICB2YXIgX2V4Y2VwdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18o
NSk7CisKKyAgICB2YXIgX2V4Y2VwdGlvbjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9leGNl
cHRpb24pOworCisgICAgZXhwb3J0c1snZGVmYXVsdCddID0gZnVuY3Rpb24gKGluc3RhbmNlKSB7
CisgICAgICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcignaGVscGVyTWlzc2luZycsIGZ1bmN0aW9u
ICgpIC8qIFthcmdzLCBdb3B0aW9ucyAqL3sKKyAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGgg
PT09IDEpIHsKKyAgICAgICAgICAvLyBBIG1pc3NpbmcgZmllbGQgaW4gYSB7e2Zvb319IGNvbnN0
cnVjdC4KKyAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgIC8vIFNvbWVvbmUgaXMgYWN0dWFsbHkgdHJ5aW5nIHRvIGNhbGwgc29tZXRoaW5nLCBi
bG93IHVwLgorICAgICAgICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCdNaXNz
aW5nIGhlbHBlcjogIicgKyBhcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aCAtIDFdLm5hbWUgKyAn
IicpOworICAgICAgICB9CisgICAgICB9KTsKKyAgICB9OworCisgICAgbW9kdWxlLmV4cG9ydHMg
PSBleHBvcnRzWydkZWZhdWx0J107CisKKy8qKiovIH0sCisvKiAxMyAqLworLyoqKi8gZnVuY3Rp
b24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CisKKyAgICAndXNlIHN0
cmljdCc7CisKKyAgICBleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOworCisgICAgdmFyIF91dGls
cyA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7CisKKyAgICBleHBvcnRzWydkZWZhdWx0J10gPSBm
dW5jdGlvbiAoaW5zdGFuY2UpIHsKKyAgICAgIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCdpZics
IGZ1bmN0aW9uIChjb25kaXRpb25hbCwgb3B0aW9ucykgeworICAgICAgICBpZiAoX3V0aWxzLmlz
RnVuY3Rpb24oY29uZGl0aW9uYWwpKSB7CisgICAgICAgICAgY29uZGl0aW9uYWwgPSBjb25kaXRp
b25hbC5jYWxsKHRoaXMpOworICAgICAgICB9CisKKyAgICAgICAgLy8gRGVmYXVsdCBiZWhhdmlv
ciBpcyB0byByZW5kZXIgdGhlIHBvc2l0aXZlIHBhdGggaWYgdGhlIHZhbHVlIGlzIHRydXRoeSBh
bmQgbm90IGVtcHR5LgorICAgICAgICAvLyBUaGUgYGluY2x1ZGVaZXJvYCBvcHRpb24gbWF5IGJl
IHNldCB0byB0cmVhdCB0aGUgY29uZHRpb25hbCBhcyBwdXJlbHkgbm90IGVtcHR5IGJhc2VkIG9u
IHRoZQorICAgICAgICAvLyBiZWhhdmlvciBvZiBpc0VtcHR5LiBFZmZlY3RpdmVseSB0aGlzIGRl
dGVybWluZXMgaWYgMCBpcyBoYW5kbGVkIGJ5IHRoZSBwb3NpdGl2ZSBwYXRoIG9yIG5lZ2F0aXZl
LgorICAgICAgICBpZiAoIW9wdGlvbnMuaGFzaC5pbmNsdWRlWmVybyAmJiAhY29uZGl0aW9uYWwg
fHwgX3V0aWxzLmlzRW1wdHkoY29uZGl0aW9uYWwpKSB7CisgICAgICAgICAgcmV0dXJuIG9wdGlv
bnMuaW52ZXJzZSh0aGlzKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICByZXR1cm4gb3B0
aW9ucy5mbih0aGlzKTsKKyAgICAgICAgfQorICAgICAgfSk7CisKKyAgICAgIGluc3RhbmNlLnJl
Z2lzdGVySGVscGVyKCd1bmxlc3MnLCBmdW5jdGlvbiAoY29uZGl0aW9uYWwsIG9wdGlvbnMpIHsK
KyAgICAgICAgcmV0dXJuIGluc3RhbmNlLmhlbHBlcnNbJ2lmJ10uY2FsbCh0aGlzLCBjb25kaXRp
b25hbCwgeyBmbjogb3B0aW9ucy5pbnZlcnNlLCBpbnZlcnNlOiBvcHRpb25zLmZuLCBoYXNoOiBv
cHRpb25zLmhhc2ggfSk7CisgICAgICB9KTsKKyAgICB9OworCisgICAgbW9kdWxlLmV4cG9ydHMg
PSBleHBvcnRzWydkZWZhdWx0J107CisKKy8qKiovIH0sCisvKiAxNCAqLworLyoqKi8gZnVuY3Rp
b24obW9kdWxlLCBleHBvcnRzKSB7CisKKyAgICAndXNlIHN0cmljdCc7CisKKyAgICBleHBvcnRz
Ll9fZXNNb2R1bGUgPSB0cnVlOworCisgICAgZXhwb3J0c1snZGVmYXVsdCddID0gZnVuY3Rpb24g
KGluc3RhbmNlKSB7CisgICAgICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcignbG9nJywgZnVuY3Rp
b24gKCkgLyogbWVzc2FnZSwgb3B0aW9ucyAqL3sKKyAgICAgICAgdmFyIGFyZ3MgPSBbdW5kZWZp
bmVkXSwKKyAgICAgICAgICAgIG9wdGlvbnMgPSBhcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aCAt
IDFdOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGggLSAxOyBp
KyspIHsKKyAgICAgICAgICBhcmdzLnB1c2goYXJndW1lbnRzW2ldKTsKKyAgICAgICAgfQorCisg
ICAgICAgIHZhciBsZXZlbCA9IDE7CisgICAgICAgIGlmIChvcHRpb25zLmhhc2gubGV2ZWwgIT0g
bnVsbCkgeworICAgICAgICAgIGxldmVsID0gb3B0aW9ucy5oYXNoLmxldmVsOworICAgICAgICB9
IGVsc2UgaWYgKG9wdGlvbnMuZGF0YSAmJiBvcHRpb25zLmRhdGEubGV2ZWwgIT0gbnVsbCkgewor
ICAgICAgICAgIGxldmVsID0gb3B0aW9ucy5kYXRhLmxldmVsOworICAgICAgICB9CisgICAgICAg
IGFyZ3NbMF0gPSBsZXZlbDsKKworICAgICAgICBpbnN0YW5jZS5sb2cuYXBwbHkoaW5zdGFuY2Us
IGFyZ3MpOworICAgICAgfSk7CisgICAgfTsKKworICAgIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0
c1snZGVmYXVsdCddOworCisvKioqLyB9LAorLyogMTUgKi8KKy8qKiovIGZ1bmN0aW9uKG1vZHVs
ZSwgZXhwb3J0cykgeworCisgICAgJ3VzZSBzdHJpY3QnOworCisgICAgZXhwb3J0cy5fX2VzTW9k
dWxlID0gdHJ1ZTsKKworICAgIGV4cG9ydHNbJ2RlZmF1bHQnXSA9IGZ1bmN0aW9uIChpbnN0YW5j
ZSkgeworICAgICAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2xvb2t1cCcsIGZ1bmN0aW9uIChv
YmosIGZpZWxkKSB7CisgICAgICAgIHJldHVybiBvYmogJiYgb2JqW2ZpZWxkXTsKKyAgICAgIH0p
OworICAgIH07CisKKyAgICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsKKwor
LyoqKi8gfSwKKy8qIDE2ICovCisvKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2Vi
cGFja19yZXF1aXJlX18pIHsKKworICAgICd1c2Ugc3RyaWN0JzsKKworICAgIGV4cG9ydHMuX19l
c01vZHVsZSA9IHRydWU7CisKKyAgICB2YXIgX3V0aWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0
KTsKKworICAgIGV4cG9ydHNbJ2RlZmF1bHQnXSA9IGZ1bmN0aW9uIChpbnN0YW5jZSkgeworICAg
ICAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ3dpdGgnLCBmdW5jdGlvbiAoY29udGV4dCwgb3B0
aW9ucykgeworICAgICAgICBpZiAoX3V0aWxzLmlzRnVuY3Rpb24oY29udGV4dCkpIHsKKyAgICAg
ICAgICBjb250ZXh0ID0gY29udGV4dC5jYWxsKHRoaXMpOworICAgICAgICB9CisKKyAgICAgICAg
dmFyIGZuID0gb3B0aW9ucy5mbjsKKworICAgICAgICBpZiAoIV91dGlscy5pc0VtcHR5KGNvbnRl
eHQpKSB7CisgICAgICAgICAgdmFyIGRhdGEgPSBvcHRpb25zLmRhdGE7CisgICAgICAgICAgaWYg
KG9wdGlvbnMuZGF0YSAmJiBvcHRpb25zLmlkcykgeworICAgICAgICAgICAgZGF0YSA9IF91dGls
cy5jcmVhdGVGcmFtZShvcHRpb25zLmRhdGEpOworICAgICAgICAgICAgZGF0YS5jb250ZXh0UGF0
aCA9IF91dGlscy5hcHBlbmRDb250ZXh0UGF0aChvcHRpb25zLmRhdGEuY29udGV4dFBhdGgsIG9w
dGlvbnMuaWRzWzBdKTsKKyAgICAgICAgICB9CisKKyAgICAgICAgICByZXR1cm4gZm4oY29udGV4
dCwgeworICAgICAgICAgICAgZGF0YTogZGF0YSwKKyAgICAgICAgICAgIGJsb2NrUGFyYW1zOiBf
dXRpbHMuYmxvY2tQYXJhbXMoW2NvbnRleHRdLCBbZGF0YSAmJiBkYXRhLmNvbnRleHRQYXRoXSkK
KyAgICAgICAgICB9KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICByZXR1cm4gb3B0aW9u
cy5pbnZlcnNlKHRoaXMpOworICAgICAgICB9CisgICAgICB9KTsKKyAgICB9OworCisgICAgbW9k
dWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107CisKKy8qKiovIH0sCisvKiAxNyAqLwor
LyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CisK
KyAgICAndXNlIHN0cmljdCc7CisKKyAgICB2YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVsdCA9IF9f
d2VicGFja19yZXF1aXJlX18oMilbJ2RlZmF1bHQnXTsKKworICAgIGV4cG9ydHMuX19lc01vZHVs
ZSA9IHRydWU7CisgICAgZXhwb3J0cy5yZWdpc3RlckRlZmF1bHREZWNvcmF0b3JzID0gcmVnaXN0
ZXJEZWZhdWx0RGVjb3JhdG9yczsKKworICAgIHZhciBfZGVjb3JhdG9yc0lubGluZSA9IF9fd2Vi
cGFja19yZXF1aXJlX18oMTgpOworCisgICAgdmFyIF9kZWNvcmF0b3JzSW5saW5lMiA9IF9pbnRl
cm9wUmVxdWlyZURlZmF1bHQoX2RlY29yYXRvcnNJbmxpbmUpOworCisgICAgZnVuY3Rpb24gcmVn
aXN0ZXJEZWZhdWx0RGVjb3JhdG9ycyhpbnN0YW5jZSkgeworICAgICAgX2RlY29yYXRvcnNJbmxp
bmUyWydkZWZhdWx0J10oaW5zdGFuY2UpOworICAgIH0KKworLyoqKi8gfSwKKy8qIDE4ICovCisv
KioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKKwor
ICAgICd1c2Ugc3RyaWN0JzsKKworICAgIGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7CisKKyAg
ICB2YXIgX3V0aWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTsKKworICAgIGV4cG9ydHNbJ2Rl
ZmF1bHQnXSA9IGZ1bmN0aW9uIChpbnN0YW5jZSkgeworICAgICAgaW5zdGFuY2UucmVnaXN0ZXJE
ZWNvcmF0b3IoJ2lubGluZScsIGZ1bmN0aW9uIChmbiwgcHJvcHMsIGNvbnRhaW5lciwgb3B0aW9u
cykgeworICAgICAgICB2YXIgcmV0ID0gZm47CisgICAgICAgIGlmICghcHJvcHMucGFydGlhbHMp
IHsKKyAgICAgICAgICBwcm9wcy5wYXJ0aWFscyA9IHt9OworICAgICAgICAgIHJldCA9IGZ1bmN0
aW9uIChjb250ZXh0LCBvcHRpb25zKSB7CisgICAgICAgICAgICAvLyBDcmVhdGUgYSBuZXcgcGFy
dGlhbHMgc3RhY2sgZnJhbWUgcHJpb3IgdG8gZXhlYy4KKyAgICAgICAgICAgIHZhciBvcmlnaW5h
bCA9IGNvbnRhaW5lci5wYXJ0aWFsczsKKyAgICAgICAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyA9
IF91dGlscy5leHRlbmQoe30sIG9yaWdpbmFsLCBwcm9wcy5wYXJ0aWFscyk7CisgICAgICAgICAg
ICB2YXIgcmV0ID0gZm4oY29udGV4dCwgb3B0aW9ucyk7CisgICAgICAgICAgICBjb250YWluZXIu
cGFydGlhbHMgPSBvcmlnaW5hbDsKKyAgICAgICAgICAgIHJldHVybiByZXQ7CisgICAgICAgICAg
fTsKKyAgICAgICAgfQorCisgICAgICAgIHByb3BzLnBhcnRpYWxzW29wdGlvbnMuYXJnc1swXV0g
PSBvcHRpb25zLmZuOworCisgICAgICAgIHJldHVybiByZXQ7CisgICAgICB9KTsKKyAgICB9Owor
CisgICAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107CisKKy8qKiovIH0sCisv
KiAxOSAqLworLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWly
ZV9fKSB7CisKKyAgICAndXNlIHN0cmljdCc7CisKKyAgICBleHBvcnRzLl9fZXNNb2R1bGUgPSB0
cnVlOworCisgICAgdmFyIF91dGlscyA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7CisKKyAgICB2
YXIgbG9nZ2VyID0geworICAgICAgbWV0aG9kTWFwOiBbJ2RlYnVnJywgJ2luZm8nLCAnd2Fybics
ICdlcnJvciddLAorICAgICAgbGV2ZWw6ICdpbmZvJywKKworICAgICAgLy8gTWFwcyBhIGdpdmVu
IGxldmVsIHZhbHVlIHRvIHRoZSBgbWV0aG9kTWFwYCBpbmRleGVzIGFib3ZlLgorICAgICAgbG9v
a3VwTGV2ZWw6IGZ1bmN0aW9uIGxvb2t1cExldmVsKGxldmVsKSB7CisgICAgICAgIGlmICh0eXBl
b2YgbGV2ZWwgPT09ICdzdHJpbmcnKSB7CisgICAgICAgICAgdmFyIGxldmVsTWFwID0gX3V0aWxz
LmluZGV4T2YobG9nZ2VyLm1ldGhvZE1hcCwgbGV2ZWwudG9Mb3dlckNhc2UoKSk7CisgICAgICAg
ICAgaWYgKGxldmVsTWFwID49IDApIHsKKyAgICAgICAgICAgIGxldmVsID0gbGV2ZWxNYXA7Cisg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxldmVsID0gcGFyc2VJbnQobGV2ZWwsIDEw
KTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbGV2ZWw7CisgICAg
ICB9LAorCisgICAgICAvLyBDYW4gYmUgb3ZlcnJpZGRlbiBpbiB0aGUgaG9zdCBlbnZpcm9ubWVu
dAorICAgICAgbG9nOiBmdW5jdGlvbiBsb2cobGV2ZWwpIHsKKyAgICAgICAgbGV2ZWwgPSBsb2dn
ZXIubG9va3VwTGV2ZWwobGV2ZWwpOworCisgICAgICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0g
J3VuZGVmaW5lZCcgJiYgbG9nZ2VyLmxvb2t1cExldmVsKGxvZ2dlci5sZXZlbCkgPD0gbGV2ZWwp
IHsKKyAgICAgICAgICB2YXIgbWV0aG9kID0gbG9nZ2VyLm1ldGhvZE1hcFtsZXZlbF07CisgICAg
ICAgICAgaWYgKCFjb25zb2xlW21ldGhvZF0pIHsKKyAgICAgICAgICAgIC8vIGVzbGludC1kaXNh
YmxlLWxpbmUgbm8tY29uc29sZQorICAgICAgICAgICAgbWV0aG9kID0gJ2xvZyc7CisgICAgICAg
ICAgfQorCisgICAgICAgICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIG1lc3Nh
Z2UgPSBBcnJheShfbGVuID4gMSA/IF9sZW4gLSAxIDogMCksIF9rZXkgPSAxOyBfa2V5IDwgX2xl
bjsgX2tleSsrKSB7CisgICAgICAgICAgICBtZXNzYWdlW19rZXkgLSAxXSA9IGFyZ3VtZW50c1tf
a2V5XTsKKyAgICAgICAgICB9CisKKyAgICAgICAgICBjb25zb2xlW21ldGhvZF0uYXBwbHkoY29u
c29sZSwgbWVzc2FnZSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc29sZQorICAgICAg
ICB9CisgICAgICB9CisgICAgfTsKKworICAgIGV4cG9ydHNbJ2RlZmF1bHQnXSA9IGxvZ2dlcjsK
KyAgICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsKKworLyoqKi8gfSwKKy8q
IDIwICovCisvKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHsKKworICAgIC8vIEJ1aWxk
IG91dCBvdXIgYmFzaWMgU2FmZVN0cmluZyB0eXBlCisgICAgJ3VzZSBzdHJpY3QnOworCisgICAg
ZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKKyAgICBmdW5jdGlvbiBTYWZlU3RyaW5nKHN0cmlu
ZykgeworICAgICAgdGhpcy5zdHJpbmcgPSBzdHJpbmc7CisgICAgfQorCisgICAgU2FmZVN0cmlu
Zy5wcm90b3R5cGUudG9TdHJpbmcgPSBTYWZlU3RyaW5nLnByb3RvdHlwZS50b0hUTUwgPSBmdW5j
dGlvbiAoKSB7CisgICAgICByZXR1cm4gJycgKyB0aGlzLnN0cmluZzsKKyAgICB9OworCisgICAg
ZXhwb3J0c1snZGVmYXVsdCddID0gU2FmZVN0cmluZzsKKyAgICBtb2R1bGUuZXhwb3J0cyA9IGV4
cG9ydHNbJ2RlZmF1bHQnXTsKKworLyoqKi8gfSwKKy8qIDIxICovCisvKioqLyBmdW5jdGlvbiht
b2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKKworICAgICd1c2Ugc3RyaWN0
JzsKKworICAgIHZhciBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCA9IF9fd2VicGFja19yZXF1aXJl
X18oMSlbJ2RlZmF1bHQnXTsKKworICAgIHZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gX193
ZWJwYWNrX3JlcXVpcmVfXygyKVsnZGVmYXVsdCddOworCisgICAgZXhwb3J0cy5fX2VzTW9kdWxl
ID0gdHJ1ZTsKKyAgICBleHBvcnRzLmNoZWNrUmV2aXNpb24gPSBjaGVja1JldmlzaW9uOworICAg
IGV4cG9ydHMudGVtcGxhdGUgPSB0ZW1wbGF0ZTsKKyAgICBleHBvcnRzLndyYXBQcm9ncmFtID0g
d3JhcFByb2dyYW07CisgICAgZXhwb3J0cy5yZXNvbHZlUGFydGlhbCA9IHJlc29sdmVQYXJ0aWFs
OworICAgIGV4cG9ydHMuaW52b2tlUGFydGlhbCA9IGludm9rZVBhcnRpYWw7CisgICAgZXhwb3J0
cy5ub29wID0gbm9vcDsKKworICAgIHZhciBfdXRpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQp
OworCisgICAgdmFyIFV0aWxzID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQoX3V0aWxzKTsKKwor
ICAgIHZhciBfZXhjZXB0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTsKKworICAgIHZhciBf
ZXhjZXB0aW9uMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2V4Y2VwdGlvbik7CisKKyAgICB2
YXIgX2Jhc2UgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpOworCisgICAgZnVuY3Rpb24gY2hlY2tS
ZXZpc2lvbihjb21waWxlckluZm8pIHsKKyAgICAgIHZhciBjb21waWxlclJldmlzaW9uID0gY29t
cGlsZXJJbmZvICYmIGNvbXBpbGVySW5mb1swXSB8fCAxLAorICAgICAgICAgIGN1cnJlbnRSZXZp
c2lvbiA9IF9iYXNlLkNPTVBJTEVSX1JFVklTSU9OOworCisgICAgICBpZiAoY29tcGlsZXJSZXZp
c2lvbiAhPT0gY3VycmVudFJldmlzaW9uKSB7CisgICAgICAgIGlmIChjb21waWxlclJldmlzaW9u
IDwgY3VycmVudFJldmlzaW9uKSB7CisgICAgICAgICAgdmFyIHJ1bnRpbWVWZXJzaW9ucyA9IF9i
YXNlLlJFVklTSU9OX0NIQU5HRVNbY3VycmVudFJldmlzaW9uXSwKKyAgICAgICAgICAgICAgY29t
cGlsZXJWZXJzaW9ucyA9IF9iYXNlLlJFVklTSU9OX0NIQU5HRVNbY29tcGlsZXJSZXZpc2lvbl07
CisgICAgICAgICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ1RlbXBsYXRlIHdh
cyBwcmVjb21waWxlZCB3aXRoIGFuIG9sZGVyIHZlcnNpb24gb2YgSGFuZGxlYmFycyB0aGFuIHRo
ZSBjdXJyZW50IHJ1bnRpbWUuICcgKyAnUGxlYXNlIHVwZGF0ZSB5b3VyIHByZWNvbXBpbGVyIHRv
IGEgbmV3ZXIgdmVyc2lvbiAoJyArIHJ1bnRpbWVWZXJzaW9ucyArICcpIG9yIGRvd25ncmFkZSB5
b3VyIHJ1bnRpbWUgdG8gYW4gb2xkZXIgdmVyc2lvbiAoJyArIGNvbXBpbGVyVmVyc2lvbnMgKyAn
KS4nKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAvLyBVc2UgdGhlIGVtYmVkZGVkIHZl
cnNpb24gaW5mbyBzaW5jZSB0aGUgcnVudGltZSBkb2Vzbid0IGtub3cgYWJvdXQgdGhpcyByZXZp
c2lvbiB5ZXQKKyAgICAgICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnVGVt
cGxhdGUgd2FzIHByZWNvbXBpbGVkIHdpdGggYSBuZXdlciB2ZXJzaW9uIG9mIEhhbmRsZWJhcnMg
dGhhbiB0aGUgY3VycmVudCBydW50aW1lLiAnICsgJ1BsZWFzZSB1cGRhdGUgeW91ciBydW50aW1l
IHRvIGEgbmV3ZXIgdmVyc2lvbiAoJyArIGNvbXBpbGVySW5mb1sxXSArICcpLicpOworICAgICAg
ICB9CisgICAgICB9CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVtcGxhdGUodGVtcGxhdGVTcGVj
LCBlbnYpIHsKKyAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovCisgICAgICBpZiAoIWVu
dikgeworICAgICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnTm8gZW52aXJv
bm1lbnQgcGFzc2VkIHRvIHRlbXBsYXRlJyk7CisgICAgICB9CisgICAgICBpZiAoIXRlbXBsYXRl
U3BlYyB8fCAhdGVtcGxhdGVTcGVjLm1haW4pIHsKKyAgICAgICAgdGhyb3cgbmV3IF9leGNlcHRp
b24yWydkZWZhdWx0J10oJ1Vua25vd24gdGVtcGxhdGUgb2JqZWN0OiAnICsgdHlwZW9mIHRlbXBs
YXRlU3BlYyk7CisgICAgICB9CisKKyAgICAgIHRlbXBsYXRlU3BlYy5tYWluLmRlY29yYXRvciA9
IHRlbXBsYXRlU3BlYy5tYWluX2Q7CisKKyAgICAgIC8vIE5vdGU6IFVzaW5nIGVudi5WTSByZWZl
cmVuY2VzIHJhdGhlciB0aGFuIGxvY2FsIHZhciByZWZlcmVuY2VzIHRocm91Z2hvdXQgdGhpcyBz
ZWN0aW9uIHRvIGFsbG93CisgICAgICAvLyBmb3IgZXh0ZXJuYWwgdXNlcnMgdG8gb3ZlcnJpZGUg
dGhlc2UgYXMgcHN1ZWRvLXN1cHBvcnRlZCBBUElzLgorICAgICAgZW52LlZNLmNoZWNrUmV2aXNp
b24odGVtcGxhdGVTcGVjLmNvbXBpbGVyKTsKKworICAgICAgZnVuY3Rpb24gaW52b2tlUGFydGlh
bFdyYXBwZXIocGFydGlhbCwgY29udGV4dCwgb3B0aW9ucykgeworICAgICAgICBpZiAob3B0aW9u
cy5oYXNoKSB7CisgICAgICAgICAgY29udGV4dCA9IFV0aWxzLmV4dGVuZCh7fSwgY29udGV4dCwg
b3B0aW9ucy5oYXNoKTsKKyAgICAgICAgICBpZiAob3B0aW9ucy5pZHMpIHsKKyAgICAgICAgICAg
IG9wdGlvbnMuaWRzWzBdID0gdHJ1ZTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAg
ICBwYXJ0aWFsID0gZW52LlZNLnJlc29sdmVQYXJ0aWFsLmNhbGwodGhpcywgcGFydGlhbCwgY29u
dGV4dCwgb3B0aW9ucyk7CisgICAgICAgIHZhciByZXN1bHQgPSBlbnYuVk0uaW52b2tlUGFydGlh
bC5jYWxsKHRoaXMsIHBhcnRpYWwsIGNvbnRleHQsIG9wdGlvbnMpOworCisgICAgICAgIGlmIChy
ZXN1bHQgPT0gbnVsbCAmJiBlbnYuY29tcGlsZSkgeworICAgICAgICAgIG9wdGlvbnMucGFydGlh
bHNbb3B0aW9ucy5uYW1lXSA9IGVudi5jb21waWxlKHBhcnRpYWwsIHRlbXBsYXRlU3BlYy5jb21w
aWxlck9wdGlvbnMsIGVudik7CisgICAgICAgICAgcmVzdWx0ID0gb3B0aW9ucy5wYXJ0aWFsc1tv
cHRpb25zLm5hbWVdKGNvbnRleHQsIG9wdGlvbnMpOworICAgICAgICB9CisgICAgICAgIGlmIChy
ZXN1bHQgIT0gbnVsbCkgeworICAgICAgICAgIGlmIChvcHRpb25zLmluZGVudCkgeworICAgICAg
ICAgICAgdmFyIGxpbmVzID0gcmVzdWx0LnNwbGl0KCdcbicpOworICAgICAgICAgICAgZm9yICh2
YXIgaSA9IDAsIGwgPSBsaW5lcy5sZW5ndGg7IGkgPCBsOyBpKyspIHsKKyAgICAgICAgICAgICAg
aWYgKCFsaW5lc1tpXSAmJiBpICsgMSA9PT0gbCkgeworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgbGluZXNbaV0gPSBvcHRpb25zLmluZGVu
dCArIGxpbmVzW2ldOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVzdWx0ID0gbGluZXMu
am9pbignXG4nKTsKKyAgICAgICAgICB9CisgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgn
VGhlIHBhcnRpYWwgJyArIG9wdGlvbnMubmFtZSArICcgY291bGQgbm90IGJlIGNvbXBpbGVkIHdo
ZW4gcnVubmluZyBpbiBydW50aW1lLW9ubHkgbW9kZScpOworICAgICAgICB9CisgICAgICB9CisK
KyAgICAgIC8vIEp1c3QgYWRkIHdhdGVyCisgICAgICB2YXIgY29udGFpbmVyID0geworICAgICAg
ICBzdHJpY3Q6IGZ1bmN0aW9uIHN0cmljdChvYmosIG5hbWUpIHsKKyAgICAgICAgICBpZiAoIShu
YW1lIGluIG9iaikpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVs
dCddKCciJyArIG5hbWUgKyAnIiBub3QgZGVmaW5lZCBpbiAnICsgb2JqKTsKKyAgICAgICAgICB9
CisgICAgICAgICAgcmV0dXJuIG9ialtuYW1lXTsKKyAgICAgICAgfSwKKyAgICAgICAgbG9va3Vw
OiBmdW5jdGlvbiBsb29rdXAoZGVwdGhzLCBuYW1lKSB7CisgICAgICAgICAgdmFyIGxlbiA9IGRl
cHRocy5sZW5ndGg7CisgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgewor
ICAgICAgICAgICAgaWYgKGRlcHRoc1tpXSAmJiBkZXB0aHNbaV1bbmFtZV0gIT0gbnVsbCkgewor
ICAgICAgICAgICAgICByZXR1cm4gZGVwdGhzW2ldW25hbWVdOworICAgICAgICAgICAgfQorICAg
ICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgbGFtYmRhOiBmdW5jdGlvbiBsYW1iZGEoY3Vy
cmVudCwgY29udGV4dCkgeworICAgICAgICAgIHJldHVybiB0eXBlb2YgY3VycmVudCA9PT0gJ2Z1
bmN0aW9uJyA/IGN1cnJlbnQuY2FsbChjb250ZXh0KSA6IGN1cnJlbnQ7CisgICAgICAgIH0sCisK
KyAgICAgICAgZXNjYXBlRXhwcmVzc2lvbjogVXRpbHMuZXNjYXBlRXhwcmVzc2lvbiwKKyAgICAg
ICAgaW52b2tlUGFydGlhbDogaW52b2tlUGFydGlhbFdyYXBwZXIsCisKKyAgICAgICAgZm46IGZ1
bmN0aW9uIGZuKGkpIHsKKyAgICAgICAgICB2YXIgcmV0ID0gdGVtcGxhdGVTcGVjW2ldOworICAg
ICAgICAgIHJldC5kZWNvcmF0b3IgPSB0ZW1wbGF0ZVNwZWNbaSArICdfZCddOworICAgICAgICAg
IHJldHVybiByZXQ7CisgICAgICAgIH0sCisKKyAgICAgICAgcHJvZ3JhbXM6IFtdLAorICAgICAg
ICBwcm9ncmFtOiBmdW5jdGlvbiBwcm9ncmFtKGksIGRhdGEsIGRlY2xhcmVkQmxvY2tQYXJhbXMs
IGJsb2NrUGFyYW1zLCBkZXB0aHMpIHsKKyAgICAgICAgICB2YXIgcHJvZ3JhbVdyYXBwZXIgPSB0
aGlzLnByb2dyYW1zW2ldLAorICAgICAgICAgICAgICBmbiA9IHRoaXMuZm4oaSk7CisgICAgICAg
ICAgaWYgKGRhdGEgfHwgZGVwdGhzIHx8IGJsb2NrUGFyYW1zIHx8IGRlY2xhcmVkQmxvY2tQYXJh
bXMpIHsKKyAgICAgICAgICAgIHByb2dyYW1XcmFwcGVyID0gd3JhcFByb2dyYW0odGhpcywgaSwg
Zm4sIGRhdGEsIGRlY2xhcmVkQmxvY2tQYXJhbXMsIGJsb2NrUGFyYW1zLCBkZXB0aHMpOworICAg
ICAgICAgIH0gZWxzZSBpZiAoIXByb2dyYW1XcmFwcGVyKSB7CisgICAgICAgICAgICBwcm9ncmFt
V3JhcHBlciA9IHRoaXMucHJvZ3JhbXNbaV0gPSB3cmFwUHJvZ3JhbSh0aGlzLCBpLCBmbik7Cisg
ICAgICAgICAgfQorICAgICAgICAgIHJldHVybiBwcm9ncmFtV3JhcHBlcjsKKyAgICAgICAgfSwK
KworICAgICAgICBkYXRhOiBmdW5jdGlvbiBkYXRhKHZhbHVlLCBkZXB0aCkgeworICAgICAgICAg
IHdoaWxlICh2YWx1ZSAmJiBkZXB0aC0tKSB7CisgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLl9w
YXJlbnQ7CisgICAgICAgICAgfQorICAgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAgfSwK
KyAgICAgICAgbWVyZ2U6IGZ1bmN0aW9uIG1lcmdlKHBhcmFtLCBjb21tb24pIHsKKyAgICAgICAg
ICB2YXIgb2JqID0gcGFyYW0gfHwgY29tbW9uOworCisgICAgICAgICAgaWYgKHBhcmFtICYmIGNv
bW1vbiAmJiBwYXJhbSAhPT0gY29tbW9uKSB7CisgICAgICAgICAgICBvYmogPSBVdGlscy5leHRl
bmQoe30sIGNvbW1vbiwgcGFyYW0pOworICAgICAgICAgIH0KKworICAgICAgICAgIHJldHVybiBv
Ymo7CisgICAgICAgIH0sCisKKyAgICAgICAgbm9vcDogZW52LlZNLm5vb3AsCisgICAgICAgIGNv
bXBpbGVySW5mbzogdGVtcGxhdGVTcGVjLmNvbXBpbGVyCisgICAgICB9OworCisgICAgICBmdW5j
dGlvbiByZXQoY29udGV4dCkgeworICAgICAgICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5n
dGggPD0gMSB8fCBhcmd1bWVudHNbMV0gPT09IHVuZGVmaW5lZCA/IHt9IDogYXJndW1lbnRzWzFd
OworCisgICAgICAgIHZhciBkYXRhID0gb3B0aW9ucy5kYXRhOworCisgICAgICAgIHJldC5fc2V0
dXAob3B0aW9ucyk7CisgICAgICAgIGlmICghb3B0aW9ucy5wYXJ0aWFsICYmIHRlbXBsYXRlU3Bl
Yy51c2VEYXRhKSB7CisgICAgICAgICAgZGF0YSA9IGluaXREYXRhKGNvbnRleHQsIGRhdGEpOwor
ICAgICAgICB9CisgICAgICAgIHZhciBkZXB0aHMgPSB1bmRlZmluZWQsCisgICAgICAgICAgICBi
bG9ja1BhcmFtcyA9IHRlbXBsYXRlU3BlYy51c2VCbG9ja1BhcmFtcyA/IFtdIDogdW5kZWZpbmVk
OworICAgICAgICBpZiAodGVtcGxhdGVTcGVjLnVzZURlcHRocykgeworICAgICAgICAgIGlmIChv
cHRpb25zLmRlcHRocykgeworICAgICAgICAgICAgZGVwdGhzID0gY29udGV4dCAhPSBvcHRpb25z
LmRlcHRoc1swXSA/IFtjb250ZXh0XS5jb25jYXQob3B0aW9ucy5kZXB0aHMpIDogb3B0aW9ucy5k
ZXB0aHM7CisgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGRlcHRocyA9IFtjb250ZXh0
XTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBtYWluKGNvbnRl
eHQgLyosIG9wdGlvbnMqLykgeworICAgICAgICAgIHJldHVybiAnJyArIHRlbXBsYXRlU3BlYy5t
YWluKGNvbnRhaW5lciwgY29udGV4dCwgY29udGFpbmVyLmhlbHBlcnMsIGNvbnRhaW5lci5wYXJ0
aWFscywgZGF0YSwgYmxvY2tQYXJhbXMsIGRlcHRocyk7CisgICAgICAgIH0KKyAgICAgICAgbWFp
biA9IGV4ZWN1dGVEZWNvcmF0b3JzKHRlbXBsYXRlU3BlYy5tYWluLCBtYWluLCBjb250YWluZXIs
IG9wdGlvbnMuZGVwdGhzIHx8IFtdLCBkYXRhLCBibG9ja1BhcmFtcyk7CisgICAgICAgIHJldHVy
biBtYWluKGNvbnRleHQsIG9wdGlvbnMpOworICAgICAgfQorICAgICAgcmV0LmlzVG9wID0gdHJ1
ZTsKKworICAgICAgcmV0Ll9zZXR1cCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7CisgICAgICAgIGlm
ICghb3B0aW9ucy5wYXJ0aWFsKSB7CisgICAgICAgICAgY29udGFpbmVyLmhlbHBlcnMgPSBjb250
YWluZXIubWVyZ2Uob3B0aW9ucy5oZWxwZXJzLCBlbnYuaGVscGVycyk7CisKKyAgICAgICAgICBp
ZiAodGVtcGxhdGVTcGVjLnVzZVBhcnRpYWwpIHsKKyAgICAgICAgICAgIGNvbnRhaW5lci5wYXJ0
aWFscyA9IGNvbnRhaW5lci5tZXJnZShvcHRpb25zLnBhcnRpYWxzLCBlbnYucGFydGlhbHMpOwor
ICAgICAgICAgIH0KKyAgICAgICAgICBpZiAodGVtcGxhdGVTcGVjLnVzZVBhcnRpYWwgfHwgdGVt
cGxhdGVTcGVjLnVzZURlY29yYXRvcnMpIHsKKyAgICAgICAgICAgIGNvbnRhaW5lci5kZWNvcmF0
b3JzID0gY29udGFpbmVyLm1lcmdlKG9wdGlvbnMuZGVjb3JhdG9ycywgZW52LmRlY29yYXRvcnMp
OworICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBjb250YWluZXIuaGVs
cGVycyA9IG9wdGlvbnMuaGVscGVyczsKKyAgICAgICAgICBjb250YWluZXIucGFydGlhbHMgPSBv
cHRpb25zLnBhcnRpYWxzOworICAgICAgICAgIGNvbnRhaW5lci5kZWNvcmF0b3JzID0gb3B0aW9u
cy5kZWNvcmF0b3JzOworICAgICAgICB9CisgICAgICB9OworCisgICAgICByZXQuX2NoaWxkID0g
ZnVuY3Rpb24gKGksIGRhdGEsIGJsb2NrUGFyYW1zLCBkZXB0aHMpIHsKKyAgICAgICAgaWYgKHRl
bXBsYXRlU3BlYy51c2VCbG9ja1BhcmFtcyAmJiAhYmxvY2tQYXJhbXMpIHsKKyAgICAgICAgICB0
aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnbXVzdCBwYXNzIGJsb2NrIHBhcmFtcycp
OworICAgICAgICB9CisgICAgICAgIGlmICh0ZW1wbGF0ZVNwZWMudXNlRGVwdGhzICYmICFkZXB0
aHMpIHsKKyAgICAgICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnbXVzdCBw
YXNzIHBhcmVudCBkZXB0aHMnKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB3cmFwUHJv
Z3JhbShjb250YWluZXIsIGksIHRlbXBsYXRlU3BlY1tpXSwgZGF0YSwgMCwgYmxvY2tQYXJhbXMs
IGRlcHRocyk7CisgICAgICB9OworICAgICAgcmV0dXJuIHJldDsKKyAgICB9CisKKyAgICBmdW5j
dGlvbiB3cmFwUHJvZ3JhbShjb250YWluZXIsIGksIGZuLCBkYXRhLCBkZWNsYXJlZEJsb2NrUGFy
YW1zLCBibG9ja1BhcmFtcywgZGVwdGhzKSB7CisgICAgICBmdW5jdGlvbiBwcm9nKGNvbnRleHQp
IHsKKyAgICAgICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDEgfHwgYXJndW1l
bnRzWzFdID09PSB1bmRlZmluZWQgPyB7fSA6IGFyZ3VtZW50c1sxXTsKKworICAgICAgICB2YXIg
Y3VycmVudERlcHRocyA9IGRlcHRoczsKKyAgICAgICAgaWYgKGRlcHRocyAmJiBjb250ZXh0ICE9
IGRlcHRoc1swXSkgeworICAgICAgICAgIGN1cnJlbnREZXB0aHMgPSBbY29udGV4dF0uY29uY2F0
KGRlcHRocyk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZm4oY29udGFpbmVyLCBjb250
ZXh0LCBjb250YWluZXIuaGVscGVycywgY29udGFpbmVyLnBhcnRpYWxzLCBvcHRpb25zLmRhdGEg
fHwgZGF0YSwgYmxvY2tQYXJhbXMgJiYgW29wdGlvbnMuYmxvY2tQYXJhbXNdLmNvbmNhdChibG9j
a1BhcmFtcyksIGN1cnJlbnREZXB0aHMpOworICAgICAgfQorCisgICAgICBwcm9nID0gZXhlY3V0
ZURlY29yYXRvcnMoZm4sIHByb2csIGNvbnRhaW5lciwgZGVwdGhzLCBkYXRhLCBibG9ja1BhcmFt
cyk7CisKKyAgICAgIHByb2cucHJvZ3JhbSA9IGk7CisgICAgICBwcm9nLmRlcHRoID0gZGVwdGhz
ID8gZGVwdGhzLmxlbmd0aCA6IDA7CisgICAgICBwcm9nLmJsb2NrUGFyYW1zID0gZGVjbGFyZWRC
bG9ja1BhcmFtcyB8fCAwOworICAgICAgcmV0dXJuIHByb2c7CisgICAgfQorCisgICAgZnVuY3Rp
b24gcmVzb2x2ZVBhcnRpYWwocGFydGlhbCwgY29udGV4dCwgb3B0aW9ucykgeworICAgICAgaWYg
KCFwYXJ0aWFsKSB7CisgICAgICAgIGlmIChvcHRpb25zLm5hbWUgPT09ICdAcGFydGlhbC1ibG9j
aycpIHsKKyAgICAgICAgICB2YXIgZGF0YSA9IG9wdGlvbnMuZGF0YTsKKyAgICAgICAgICB3aGls
ZSAoZGF0YVsncGFydGlhbC1ibG9jayddID09PSBub29wKSB7CisgICAgICAgICAgICBkYXRhID0g
ZGF0YS5fcGFyZW50OworICAgICAgICAgIH0KKyAgICAgICAgICBwYXJ0aWFsID0gZGF0YVsncGFy
dGlhbC1ibG9jayddOworICAgICAgICAgIGRhdGFbJ3BhcnRpYWwtYmxvY2snXSA9IG5vb3A7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgcGFydGlhbCA9IG9wdGlvbnMucGFydGlhbHNbb3B0
aW9ucy5uYW1lXTsKKyAgICAgICAgfQorICAgICAgfSBlbHNlIGlmICghcGFydGlhbC5jYWxsICYm
ICFvcHRpb25zLm5hbWUpIHsKKyAgICAgICAgLy8gVGhpcyBpcyBhIGR5bmFtaWMgcGFydGlhbCB0
aGF0IHJldHVybmVkIGEgc3RyaW5nCisgICAgICAgIG9wdGlvbnMubmFtZSA9IHBhcnRpYWw7Cisg
ICAgICAgIHBhcnRpYWwgPSBvcHRpb25zLnBhcnRpYWxzW3BhcnRpYWxdOworICAgICAgfQorICAg
ICAgcmV0dXJuIHBhcnRpYWw7CisgICAgfQorCisgICAgZnVuY3Rpb24gaW52b2tlUGFydGlhbChw
YXJ0aWFsLCBjb250ZXh0LCBvcHRpb25zKSB7CisgICAgICBvcHRpb25zLnBhcnRpYWwgPSB0cnVl
OworICAgICAgaWYgKG9wdGlvbnMuaWRzKSB7CisgICAgICAgIG9wdGlvbnMuZGF0YS5jb250ZXh0
UGF0aCA9IG9wdGlvbnMuaWRzWzBdIHx8IG9wdGlvbnMuZGF0YS5jb250ZXh0UGF0aDsKKyAgICAg
IH0KKworICAgICAgdmFyIHBhcnRpYWxCbG9jayA9IHVuZGVmaW5lZDsKKyAgICAgIGlmIChvcHRp
b25zLmZuICYmIG9wdGlvbnMuZm4gIT09IG5vb3ApIHsKKyAgICAgICAgb3B0aW9ucy5kYXRhID0g
X2Jhc2UuY3JlYXRlRnJhbWUob3B0aW9ucy5kYXRhKTsKKyAgICAgICAgcGFydGlhbEJsb2NrID0g
b3B0aW9ucy5kYXRhWydwYXJ0aWFsLWJsb2NrJ10gPSBvcHRpb25zLmZuOworCisgICAgICAgIGlm
IChwYXJ0aWFsQmxvY2sucGFydGlhbHMpIHsKKyAgICAgICAgICBvcHRpb25zLnBhcnRpYWxzID0g
VXRpbHMuZXh0ZW5kKHt9LCBvcHRpb25zLnBhcnRpYWxzLCBwYXJ0aWFsQmxvY2sucGFydGlhbHMp
OworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIGlmIChwYXJ0aWFsID09PSB1bmRlZmluZWQg
JiYgcGFydGlhbEJsb2NrKSB7CisgICAgICAgIHBhcnRpYWwgPSBwYXJ0aWFsQmxvY2s7CisgICAg
ICB9CisKKyAgICAgIGlmIChwYXJ0aWFsID09PSB1bmRlZmluZWQpIHsKKyAgICAgICAgdGhyb3cg
bmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ1RoZSBwYXJ0aWFsICcgKyBvcHRpb25zLm5hbWUg
KyAnIGNvdWxkIG5vdCBiZSBmb3VuZCcpOworICAgICAgfSBlbHNlIGlmIChwYXJ0aWFsIGluc3Rh
bmNlb2YgRnVuY3Rpb24pIHsKKyAgICAgICAgcmV0dXJuIHBhcnRpYWwoY29udGV4dCwgb3B0aW9u
cyk7CisgICAgICB9CisgICAgfQorCisgICAgZnVuY3Rpb24gbm9vcCgpIHsKKyAgICAgIHJldHVy
biAnJzsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBpbml0RGF0YShjb250ZXh0LCBkYXRhKSB7Cisg
ICAgICBpZiAoIWRhdGEgfHwgISgncm9vdCcgaW4gZGF0YSkpIHsKKyAgICAgICAgZGF0YSA9IGRh
dGEgPyBfYmFzZS5jcmVhdGVGcmFtZShkYXRhKSA6IHt9OworICAgICAgICBkYXRhLnJvb3QgPSBj
b250ZXh0OworICAgICAgfQorICAgICAgcmV0dXJuIGRhdGE7CisgICAgfQorCisgICAgZnVuY3Rp
b24gZXhlY3V0ZURlY29yYXRvcnMoZm4sIHByb2csIGNvbnRhaW5lciwgZGVwdGhzLCBkYXRhLCBi
bG9ja1BhcmFtcykgeworICAgICAgaWYgKGZuLmRlY29yYXRvcikgeworICAgICAgICB2YXIgcHJv
cHMgPSB7fTsKKyAgICAgICAgcHJvZyA9IGZuLmRlY29yYXRvcihwcm9nLCBwcm9wcywgY29udGFp
bmVyLCBkZXB0aHMgJiYgZGVwdGhzWzBdLCBkYXRhLCBibG9ja1BhcmFtcywgZGVwdGhzKTsKKyAg
ICAgICAgVXRpbHMuZXh0ZW5kKHByb2csIHByb3BzKTsKKyAgICAgIH0KKyAgICAgIHJldHVybiBw
cm9nOworICAgIH0KKworLyoqKi8gfSwKKy8qIDIyICovCisvKioqLyBmdW5jdGlvbihtb2R1bGUs
IGV4cG9ydHMpIHsKKworICAgIC8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqLyhmdW5jdGlvbihn
bG9iYWwpIHsvKiBnbG9iYWwgd2luZG93ICovCisgICAgJ3VzZSBzdHJpY3QnOworCisgICAgZXhw
b3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKKworICAgIGV4cG9ydHNbJ2RlZmF1bHQnXSA9IGZ1bmN0
aW9uIChIYW5kbGViYXJzKSB7CisgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLworICAg
ICAgdmFyIHJvb3QgPSB0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJyA/IGdsb2JhbCA6IHdp
bmRvdywKKyAgICAgICAgICAkSGFuZGxlYmFycyA9IHJvb3QuSGFuZGxlYmFyczsKKyAgICAgIC8q
IGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovCisgICAgICBIYW5kbGViYXJzLm5vQ29uZmxpY3QgPSBm
dW5jdGlvbiAoKSB7CisgICAgICAgIGlmIChyb290LkhhbmRsZWJhcnMgPT09IEhhbmRsZWJhcnMp
IHsKKyAgICAgICAgICByb290LkhhbmRsZWJhcnMgPSAkSGFuZGxlYmFyczsKKyAgICAgICAgfQor
ICAgICAgICByZXR1cm4gSGFuZGxlYmFyczsKKyAgICAgIH07CisgICAgfTsKKworICAgIG1vZHVs
ZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOworICAgIC8qIFdFQlBBQ0sgVkFSIElOSkVD
VElPTiAqL30uY2FsbChleHBvcnRzLCAoZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KCkpKSkK
KworLyoqKi8gfQorLyoqKioqKi8gXSkKK30pOworOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFy
cy9kaXN0L2hhbmRsZWJhcnMucnVudGltZS5taW4uanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9k
ZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9oYW5kbGViYXJzLnJ1bnRpbWUubWluLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmJiMTZiNTVjNmI1ZTY2MjIyODQwY2RlYjBmYzBhNDhmYjRjMDJjNjIKLS0tIC9kZXYv
bnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlz
dC9oYW5kbGViYXJzLnJ1bnRpbWUubWluLmpzCkBAIC0wLDAgKzEsNzkgQEAKKy8qKiEKKworIEBs
aWNlbnNlCisgaGFuZGxlYmFycyB2NC4wLjYKKworQ29weXJpZ2h0IChDKSAyMDExLTIwMTYgYnkg
WWVodWRhIEthdHoKKworUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFy
Z2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQorb2YgdGhpcyBzb2Z0d2FyZSBhbmQg
YXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwK
K2luIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBs
aW1pdGF0aW9uIHRoZSByaWdodHMKK3RvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlz
aCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKK2NvcGllcyBvZiB0aGUgU29m
dHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworZnVy
bmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKwor
VGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hh
bGwgYmUgaW5jbHVkZWQgaW4KK2FsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2Yg
dGhlIFNvZnR3YXJlLgorCitUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9V
VCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorSU1QTElFRCwgSU5DTFVESU5HIEJV
VCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCitGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUKK0FVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZP
UiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKK0xJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBB
Q1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCitPVVQg
T0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVS
IERFQUxJTkdTIElOCitUSEUgU09GVFdBUkUuCisKKyovCisvKiohCisKKyBAbGljZW5zZQorIGhh
bmRsZWJhcnMgdjQuMC42CisKK0NvcHlyaWdodCAoQykgMjAxMS0yMDE2IGJ5IFllaHVkYSBLYXR6
CisKK1Blcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkg
cGVyc29uIG9idGFpbmluZyBhIGNvcHkKK29mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQg
ZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCitpbiB0aGUgU29m
dHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0
aGUgcmlnaHRzCit0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1
dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCitjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQg
dG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKK2Z1cm5pc2hlZCB0byBk
byBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisKK1RoZSBhYm92ZSBj
b3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1
ZGVkIGluCithbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2Fy
ZS4KKworVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkg
T0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKK0lNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlU
RUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFCitBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlN
LCBEQU1BR0VTIE9SIE9USEVSCitMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENP
TlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAorT1VUIE9GIE9SIElOIENP
Tk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJ
TgorVEhFIFNPRlRXQVJFLgorCisqLworLyoqIQorCisgQGxpY2Vuc2UKKyBoYW5kbGViYXJzIHY0
LjAuNgorCitDb3B5cmlnaHQgKEMpIDIwMTEtMjAxNiBieSBZZWh1ZGEgS2F0egorCitQZXJtaXNz
aW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRh
aW5pbmcgYSBjb3B5CitvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRp
b24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAoraW4gdGhlIFNvZnR3YXJlIHdpdGhv
dXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwor
dG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNl
bnNlLCBhbmQvb3Igc2VsbAorY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBw
ZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCitmdXJuaXNoZWQgdG8gZG8gc28sIHN1Ympl
Y3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorCitUaGUgYWJvdmUgY29weXJpZ2h0IG5v
dGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorYWxs
IGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisKK1RIRSBT
T0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5E
LCBFWFBSRVNTIE9SCitJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKK0ZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorQVVUSE9S
UyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBP
UiBPVEhFUgorTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9S
VCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKK09VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJ
VEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4KK1RIRSBTT0ZU
V0FSRS4KKworKi8KKyFmdW5jdGlvbihhLGIpeyJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmIm9i
amVjdCI9PXR5cGVvZiBtb2R1bGU/bW9kdWxlLmV4cG9ydHM9YigpOiJmdW5jdGlvbiI9PXR5cGVv
ZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFtdLGIpOiJvYmplY3QiPT10eXBlb2YgZXhwb3J0
cz9leHBvcnRzLkhhbmRsZWJhcnM9YigpOmEuSGFuZGxlYmFycz1iKCl9KHRoaXMsZnVuY3Rpb24o
KXtyZXR1cm4gZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihkKXtpZihjW2RdKXJldHVybiBjW2RdLmV4
cG9ydHM7dmFyIGU9Y1tkXT17ZXhwb3J0czp7fSxpZDpkLGxvYWRlZDohMX07cmV0dXJuIGFbZF0u
Y2FsbChlLmV4cG9ydHMsZSxlLmV4cG9ydHMsYiksZS5sb2FkZWQ9ITAsZS5leHBvcnRzfXZhciBj
PXt9O3JldHVybiBiLm09YSxiLmM9YyxiLnA9IiIsYigwKX0oW2Z1bmN0aW9uKGEsYixjKXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gZCgpe3ZhciBhPW5ldyBoLkhhbmRsZWJhcnNFbnZpcm9ubWVudDty
ZXR1cm4gbi5leHRlbmQoYSxoKSxhLlNhZmVTdHJpbmc9alsiZGVmYXVsdCJdLGEuRXhjZXB0aW9u
PWxbImRlZmF1bHQiXSxhLlV0aWxzPW4sYS5lc2NhcGVFeHByZXNzaW9uPW4uZXNjYXBlRXhwcmVz
c2lvbixhLlZNPXAsYS50ZW1wbGF0ZT1mdW5jdGlvbihiKXtyZXR1cm4gcC50ZW1wbGF0ZShiLGEp
fSxhfXZhciBlPWMoMSlbImRlZmF1bHQiXSxmPWMoMilbImRlZmF1bHQiXTtiLl9fZXNNb2R1bGU9
ITA7dmFyIGc9YygzKSxoPWUoZyksaT1jKDIwKSxqPWYoaSksaz1jKDUpLGw9ZihrKSxtPWMoNCks
bj1lKG0pLG89YygyMSkscD1lKG8pLHE9YygyMikscj1mKHEpLHM9ZCgpO3MuY3JlYXRlPWQsclsi
ZGVmYXVsdCJdKHMpLHNbImRlZmF1bHQiXT1zLGJbImRlZmF1bHQiXT1zLGEuZXhwb3J0cz1iWyJk
ZWZhdWx0Il19LGZ1bmN0aW9uKGEsYil7InVzZSBzdHJpY3QiO2JbImRlZmF1bHQiXT1mdW5jdGlv
bihhKXtpZihhJiZhLl9fZXNNb2R1bGUpcmV0dXJuIGE7dmFyIGI9e307aWYobnVsbCE9YSlmb3Io
dmFyIGMgaW4gYSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYSxjKSYmKGJb
Y109YVtjXSk7cmV0dXJuIGJbImRlZmF1bHQiXT1hLGJ9LGIuX19lc01vZHVsZT0hMH0sZnVuY3Rp
b24oYSxiKXsidXNlIHN0cmljdCI7YlsiZGVmYXVsdCJdPWZ1bmN0aW9uKGEpe3JldHVybiBhJiZh
Ll9fZXNNb2R1bGU/YTp7ImRlZmF1bHQiOmF9fSxiLl9fZXNNb2R1bGU9ITB9LGZ1bmN0aW9uKGEs
YixjKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZChhLGIsYyl7dGhpcy5oZWxwZXJzPWF8fHt9LHRo
aXMucGFydGlhbHM9Ynx8e30sdGhpcy5kZWNvcmF0b3JzPWN8fHt9LGkucmVnaXN0ZXJEZWZhdWx0
SGVscGVycyh0aGlzKSxqLnJlZ2lzdGVyRGVmYXVsdERlY29yYXRvcnModGhpcyl9dmFyIGU9Yygy
KVsiZGVmYXVsdCJdO2IuX19lc01vZHVsZT0hMCxiLkhhbmRsZWJhcnNFbnZpcm9ubWVudD1kO3Zh
ciBmPWMoNCksZz1jKDUpLGg9ZShnKSxpPWMoOSksaj1jKDE3KSxrPWMoMTkpLGw9ZShrKSxtPSI0
LjAuNSI7Yi5WRVJTSU9OPW07dmFyIG49NztiLkNPTVBJTEVSX1JFVklTSU9OPW47dmFyIG89ezE6
Ijw9IDEuMC5yYy4yIiwyOiI9PSAxLjAuMC1yYy4zIiwzOiI9PSAxLjAuMC1yYy40Iiw0OiI9PSAx
LngueCIsNToiPT0gMi4wLjAtYWxwaGEueCIsNjoiPj0gMi4wLjAtYmV0YS4xIiw3OiI+PSA0LjAu
MCJ9O2IuUkVWSVNJT05fQ0hBTkdFUz1vO3ZhciBwPSJbb2JqZWN0IE9iamVjdF0iO2QucHJvdG90
eXBlPXtjb25zdHJ1Y3RvcjpkLGxvZ2dlcjpsWyJkZWZhdWx0Il0sbG9nOmxbImRlZmF1bHQiXS5s
b2cscmVnaXN0ZXJIZWxwZXI6ZnVuY3Rpb24oYSxiKXtpZihmLnRvU3RyaW5nLmNhbGwoYSk9PT1w
KXtpZihiKXRocm93IG5ldyBoWyJkZWZhdWx0Il0oIkFyZyBub3Qgc3VwcG9ydGVkIHdpdGggbXVs
dGlwbGUgaGVscGVycyIpO2YuZXh0ZW5kKHRoaXMuaGVscGVycyxhKX1lbHNlIHRoaXMuaGVscGVy
c1thXT1ifSx1bnJlZ2lzdGVySGVscGVyOmZ1bmN0aW9uKGEpe2RlbGV0ZSB0aGlzLmhlbHBlcnNb
YV19LHJlZ2lzdGVyUGFydGlhbDpmdW5jdGlvbihhLGIpe2lmKGYudG9TdHJpbmcuY2FsbChhKT09
PXApZi5leHRlbmQodGhpcy5wYXJ0aWFscyxhKTtlbHNle2lmKCJ1bmRlZmluZWQiPT10eXBlb2Yg
Yil0aHJvdyBuZXcgaFsiZGVmYXVsdCJdKCdBdHRlbXB0aW5nIHRvIHJlZ2lzdGVyIGEgcGFydGlh
bCBjYWxsZWQgIicrYSsnIiBhcyB1bmRlZmluZWQnKTt0aGlzLnBhcnRpYWxzW2FdPWJ9fSx1bnJl
Z2lzdGVyUGFydGlhbDpmdW5jdGlvbihhKXtkZWxldGUgdGhpcy5wYXJ0aWFsc1thXX0scmVnaXN0
ZXJEZWNvcmF0b3I6ZnVuY3Rpb24oYSxiKXtpZihmLnRvU3RyaW5nLmNhbGwoYSk9PT1wKXtpZihi
KXRocm93IG5ldyBoWyJkZWZhdWx0Il0oIkFyZyBub3Qgc3VwcG9ydGVkIHdpdGggbXVsdGlwbGUg
ZGVjb3JhdG9ycyIpO2YuZXh0ZW5kKHRoaXMuZGVjb3JhdG9ycyxhKX1lbHNlIHRoaXMuZGVjb3Jh
dG9yc1thXT1ifSx1bnJlZ2lzdGVyRGVjb3JhdG9yOmZ1bmN0aW9uKGEpe2RlbGV0ZSB0aGlzLmRl
Y29yYXRvcnNbYV19fTt2YXIgcT1sWyJkZWZhdWx0Il0ubG9nO2IubG9nPXEsYi5jcmVhdGVGcmFt
ZT1mLmNyZWF0ZUZyYW1lLGIubG9nZ2VyPWxbImRlZmF1bHQiXX0sZnVuY3Rpb24oYSxiKXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gYyhhKXtyZXR1cm4ga1thXX1mdW5jdGlvbiBkKGEpe2Zvcih2YXIg
Yj0xO2I8YXJndW1lbnRzLmxlbmd0aDtiKyspZm9yKHZhciBjIGluIGFyZ3VtZW50c1tiXSlPYmpl
Y3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYXJndW1lbnRzW2JdLGMpJiYoYVtjXT1h
cmd1bWVudHNbYl1bY10pO3JldHVybiBhfWZ1bmN0aW9uIGUoYSxiKXtmb3IodmFyIGM9MCxkPWEu
bGVuZ3RoO2M8ZDtjKyspaWYoYVtjXT09PWIpcmV0dXJuIGM7cmV0dXJuLTF9ZnVuY3Rpb24gZihh
KXtpZigic3RyaW5nIiE9dHlwZW9mIGEpe2lmKGEmJmEudG9IVE1MKXJldHVybiBhLnRvSFRNTCgp
O2lmKG51bGw9PWEpcmV0dXJuIiI7aWYoIWEpcmV0dXJuIGErIiI7YT0iIithfXJldHVybiBtLnRl
c3QoYSk/YS5yZXBsYWNlKGwsYyk6YX1mdW5jdGlvbiBnKGEpe3JldHVybiFhJiYwIT09YXx8ISgh
cChhKXx8MCE9PWEubGVuZ3RoKX1mdW5jdGlvbiBoKGEpe3ZhciBiPWQoe30sYSk7cmV0dXJuIGIu
X3BhcmVudD1hLGJ9ZnVuY3Rpb24gaShhLGIpe3JldHVybiBhLnBhdGg9YixhfWZ1bmN0aW9uIGoo
YSxiKXtyZXR1cm4oYT9hKyIuIjoiIikrYn1iLl9fZXNNb2R1bGU9ITAsYi5leHRlbmQ9ZCxiLmlu
ZGV4T2Y9ZSxiLmVzY2FwZUV4cHJlc3Npb249ZixiLmlzRW1wdHk9ZyxiLmNyZWF0ZUZyYW1lPWgs
Yi5ibG9ja1BhcmFtcz1pLGIuYXBwZW5kQ29udGV4dFBhdGg9ajt2YXIgaz17IiYiOiImYW1wOyIs
IjwiOiImbHQ7IiwiPiI6IiZndDsiLCciJzoiJnF1b3Q7IiwiJyI6IiYjeDI3OyIsImAiOiImI3g2
MDsiLCI9IjoiJiN4M0Q7In0sbD0vWyY8PiInYD1dL2csbT0vWyY8PiInYD1dLyxuPU9iamVjdC5w
cm90b3R5cGUudG9TdHJpbmc7Yi50b1N0cmluZz1uO3ZhciBvPWZ1bmN0aW9uKGEpe3JldHVybiJm
dW5jdGlvbiI9PXR5cGVvZiBhfTtvKC94LykmJihiLmlzRnVuY3Rpb249bz1mdW5jdGlvbihhKXty
ZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgYSYmIltvYmplY3QgRnVuY3Rpb25dIj09PW4uY2FsbChh
KX0pLGIuaXNGdW5jdGlvbj1vO3ZhciBwPUFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKGEpe3JldHVy
biEoIWF8fCJvYmplY3QiIT10eXBlb2YgYSkmJiJbb2JqZWN0IEFycmF5XSI9PT1uLmNhbGwoYSl9
O2IuaXNBcnJheT1wfSxmdW5jdGlvbihhLGIsYyl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGQoYSxi
KXt2YXIgYz1iJiZiLmxvYyxnPXZvaWQgMCxoPXZvaWQgMDtjJiYoZz1jLnN0YXJ0LmxpbmUsaD1j
LnN0YXJ0LmNvbHVtbixhKz0iIC0gIitnKyI6IitoKTtmb3IodmFyIGk9RXJyb3IucHJvdG90eXBl
LmNvbnN0cnVjdG9yLmNhbGwodGhpcyxhKSxqPTA7ajxmLmxlbmd0aDtqKyspdGhpc1tmW2pdXT1p
W2Zbal1dO0Vycm9yLmNhcHR1cmVTdGFja1RyYWNlJiZFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0
aGlzLGQpO3RyeXtjJiYodGhpcy5saW5lTnVtYmVyPWcsZT9PYmplY3QuZGVmaW5lUHJvcGVydHko
dGhpcywiY29sdW1uIix7dmFsdWU6aH0pOnRoaXMuY29sdW1uPWgpfWNhdGNoKGspe319dmFyIGU9
Yyg2KVsiZGVmYXVsdCJdO2IuX19lc01vZHVsZT0hMDt2YXIgZj1bImRlc2NyaXB0aW9uIiwiZmls
ZU5hbWUiLCJsaW5lTnVtYmVyIiwibWVzc2FnZSIsIm5hbWUiLCJudW1iZXIiLCJzdGFjayJdO2Qu
cHJvdG90eXBlPW5ldyBFcnJvcixiWyJkZWZhdWx0Il09ZCxhLmV4cG9ydHM9YlsiZGVmYXVsdCJd
fSxmdW5jdGlvbihhLGIsYyl7YS5leHBvcnRzPXsiZGVmYXVsdCI6Yyg3KSxfX2VzTW9kdWxlOiEw
fX0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWMoOCk7YS5leHBvcnRzPWZ1bmN0aW9uKGEsYixjKXty
ZXR1cm4gZC5zZXREZXNjKGEsYixjKX19LGZ1bmN0aW9uKGEsYil7dmFyIGM9T2JqZWN0O2EuZXhw
b3J0cz17Y3JlYXRlOmMuY3JlYXRlLGdldFByb3RvOmMuZ2V0UHJvdG90eXBlT2YsaXNFbnVtOnt9
LnByb3BlcnR5SXNFbnVtZXJhYmxlLGdldERlc2M6Yy5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Is
c2V0RGVzYzpjLmRlZmluZVByb3BlcnR5LHNldERlc2NzOmMuZGVmaW5lUHJvcGVydGllcyxnZXRL
ZXlzOmMua2V5cyxnZXROYW1lczpjLmdldE93blByb3BlcnR5TmFtZXMsZ2V0U3ltYm9sczpjLmdl
dE93blByb3BlcnR5U3ltYm9scyxlYWNoOltdLmZvckVhY2h9fSxmdW5jdGlvbihhLGIsYyl7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIGQoYSl7Z1siZGVmYXVsdCJdKGEpLGlbImRlZmF1bHQiXShhKSxr
WyJkZWZhdWx0Il0oYSksbVsiZGVmYXVsdCJdKGEpLG9bImRlZmF1bHQiXShhKSxxWyJkZWZhdWx0
Il0oYSksc1siZGVmYXVsdCJdKGEpfXZhciBlPWMoMilbImRlZmF1bHQiXTtiLl9fZXNNb2R1bGU9
ITAsYi5yZWdpc3RlckRlZmF1bHRIZWxwZXJzPWQ7dmFyIGY9YygxMCksZz1lKGYpLGg9YygxMSks
aT1lKGgpLGo9YygxMiksaz1lKGopLGw9YygxMyksbT1lKGwpLG49YygxNCksbz1lKG4pLHA9Yygx
NSkscT1lKHApLHI9YygxNikscz1lKHIpfSxmdW5jdGlvbihhLGIsYyl7InVzZSBzdHJpY3QiO2Iu
X19lc01vZHVsZT0hMDt2YXIgZD1jKDQpO2JbImRlZmF1bHQiXT1mdW5jdGlvbihhKXthLnJlZ2lz
dGVySGVscGVyKCJibG9ja0hlbHBlck1pc3NpbmciLGZ1bmN0aW9uKGIsYyl7dmFyIGU9Yy5pbnZl
cnNlLGY9Yy5mbjtpZihiPT09ITApcmV0dXJuIGYodGhpcyk7aWYoYj09PSExfHxudWxsPT1iKXJl
dHVybiBlKHRoaXMpO2lmKGQuaXNBcnJheShiKSlyZXR1cm4gYi5sZW5ndGg+MD8oYy5pZHMmJihj
Lmlkcz1bYy5uYW1lXSksYS5oZWxwZXJzLmVhY2goYixjKSk6ZSh0aGlzKTtpZihjLmRhdGEmJmMu
aWRzKXt2YXIgZz1kLmNyZWF0ZUZyYW1lKGMuZGF0YSk7Zy5jb250ZXh0UGF0aD1kLmFwcGVuZENv
bnRleHRQYXRoKGMuZGF0YS5jb250ZXh0UGF0aCxjLm5hbWUpLGM9e2RhdGE6Z319cmV0dXJuIGYo
YixjKX0pfSxhLmV4cG9ydHM9YlsiZGVmYXVsdCJdfSxmdW5jdGlvbihhLGIsYyl7InVzZSBzdHJp
Y3QiO3ZhciBkPWMoMilbImRlZmF1bHQiXTtiLl9fZXNNb2R1bGU9ITA7dmFyIGU9Yyg0KSxmPWMo
NSksZz1kKGYpO2JbImRlZmF1bHQiXT1mdW5jdGlvbihhKXthLnJlZ2lzdGVySGVscGVyKCJlYWNo
IixmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoYixjLGYpe2omJihqLmtleT1iLGouaW5kZXg9Yyxq
LmZpcnN0PTA9PT1jLGoubGFzdD0hIWYsayYmKGouY29udGV4dFBhdGg9aytiKSksaSs9ZChhW2Jd
LHtkYXRhOmosYmxvY2tQYXJhbXM6ZS5ibG9ja1BhcmFtcyhbYVtiXSxiXSxbaytiLG51bGxdKX0p
fWlmKCFiKXRocm93IG5ldyBnWyJkZWZhdWx0Il0oIk11c3QgcGFzcyBpdGVyYXRvciB0byAjZWFj
aCIpO3ZhciBkPWIuZm4sZj1iLmludmVyc2UsaD0wLGk9IiIsaj12b2lkIDAsaz12b2lkIDA7aWYo
Yi5kYXRhJiZiLmlkcyYmKGs9ZS5hcHBlbmRDb250ZXh0UGF0aChiLmRhdGEuY29udGV4dFBhdGgs
Yi5pZHNbMF0pKyIuIiksZS5pc0Z1bmN0aW9uKGEpJiYoYT1hLmNhbGwodGhpcykpLGIuZGF0YSYm
KGo9ZS5jcmVhdGVGcmFtZShiLmRhdGEpKSxhJiYib2JqZWN0Ij09dHlwZW9mIGEpaWYoZS5pc0Fy
cmF5KGEpKWZvcih2YXIgbD1hLmxlbmd0aDtoPGw7aCsrKWggaW4gYSYmYyhoLGgsaD09PWEubGVu
Z3RoLTEpO2Vsc2V7dmFyIG09dm9pZCAwO2Zvcih2YXIgbiBpbiBhKWEuaGFzT3duUHJvcGVydHko
bikmJih2b2lkIDAhPT1tJiZjKG0saC0xKSxtPW4saCsrKTt2b2lkIDAhPT1tJiZjKG0saC0xLCEw
KX1yZXR1cm4gMD09PWgmJihpPWYodGhpcykpLGl9KX0sYS5leHBvcnRzPWJbImRlZmF1bHQiXX0s
ZnVuY3Rpb24oYSxiLGMpeyJ1c2Ugc3RyaWN0Ijt2YXIgZD1jKDIpWyJkZWZhdWx0Il07Yi5fX2Vz
TW9kdWxlPSEwO3ZhciBlPWMoNSksZj1kKGUpO2JbImRlZmF1bHQiXT1mdW5jdGlvbihhKXthLnJl
Z2lzdGVySGVscGVyKCJoZWxwZXJNaXNzaW5nIixmdW5jdGlvbigpe2lmKDEhPT1hcmd1bWVudHMu
bGVuZ3RoKXRocm93IG5ldyBmWyJkZWZhdWx0Il0oJ01pc3NpbmcgaGVscGVyOiAiJythcmd1bWVu
dHNbYXJndW1lbnRzLmxlbmd0aC0xXS5uYW1lKyciJyl9KX0sYS5leHBvcnRzPWJbImRlZmF1bHQi
XX0sZnVuY3Rpb24oYSxiLGMpeyJ1c2Ugc3RyaWN0IjtiLl9fZXNNb2R1bGU9ITA7dmFyIGQ9Yyg0
KTtiWyJkZWZhdWx0Il09ZnVuY3Rpb24oYSl7YS5yZWdpc3RlckhlbHBlcigiaWYiLGZ1bmN0aW9u
KGEsYil7cmV0dXJuIGQuaXNGdW5jdGlvbihhKSYmKGE9YS5jYWxsKHRoaXMpKSwhYi5oYXNoLmlu
Y2x1ZGVaZXJvJiYhYXx8ZC5pc0VtcHR5KGEpP2IuaW52ZXJzZSh0aGlzKTpiLmZuKHRoaXMpfSks
YS5yZWdpc3RlckhlbHBlcigidW5sZXNzIixmdW5jdGlvbihiLGMpe3JldHVybiBhLmhlbHBlcnNb
ImlmIl0uY2FsbCh0aGlzLGIse2ZuOmMuaW52ZXJzZSxpbnZlcnNlOmMuZm4saGFzaDpjLmhhc2h9
KX0pfSxhLmV4cG9ydHM9YlsiZGVmYXVsdCJdfSxmdW5jdGlvbihhLGIpeyJ1c2Ugc3RyaWN0Ijti
Ll9fZXNNb2R1bGU9ITAsYlsiZGVmYXVsdCJdPWZ1bmN0aW9uKGEpe2EucmVnaXN0ZXJIZWxwZXIo
ImxvZyIsZnVuY3Rpb24oKXtmb3IodmFyIGI9W3ZvaWQgMF0sYz1hcmd1bWVudHNbYXJndW1lbnRz
Lmxlbmd0aC0xXSxkPTA7ZDxhcmd1bWVudHMubGVuZ3RoLTE7ZCsrKWIucHVzaChhcmd1bWVudHNb
ZF0pO3ZhciBlPTE7bnVsbCE9Yy5oYXNoLmxldmVsP2U9Yy5oYXNoLmxldmVsOmMuZGF0YSYmbnVs
bCE9Yy5kYXRhLmxldmVsJiYoZT1jLmRhdGEubGV2ZWwpLGJbMF09ZSxhLmxvZy5hcHBseShhLGIp
fSl9LGEuZXhwb3J0cz1iWyJkZWZhdWx0Il19LGZ1bmN0aW9uKGEsYil7InVzZSBzdHJpY3QiO2Iu
X19lc01vZHVsZT0hMCxiWyJkZWZhdWx0Il09ZnVuY3Rpb24oYSl7YS5yZWdpc3RlckhlbHBlcigi
bG9va3VwIixmdW5jdGlvbihhLGIpe3JldHVybiBhJiZhW2JdfSl9LGEuZXhwb3J0cz1iWyJkZWZh
dWx0Il19LGZ1bmN0aW9uKGEsYixjKXsidXNlIHN0cmljdCI7Yi5fX2VzTW9kdWxlPSEwO3ZhciBk
PWMoNCk7YlsiZGVmYXVsdCJdPWZ1bmN0aW9uKGEpe2EucmVnaXN0ZXJIZWxwZXIoIndpdGgiLGZ1
bmN0aW9uKGEsYil7ZC5pc0Z1bmN0aW9uKGEpJiYoYT1hLmNhbGwodGhpcykpO3ZhciBjPWIuZm47
aWYoZC5pc0VtcHR5KGEpKXJldHVybiBiLmludmVyc2UodGhpcyk7dmFyIGU9Yi5kYXRhO3JldHVy
biBiLmRhdGEmJmIuaWRzJiYoZT1kLmNyZWF0ZUZyYW1lKGIuZGF0YSksZS5jb250ZXh0UGF0aD1k
LmFwcGVuZENvbnRleHRQYXRoKGIuZGF0YS5jb250ZXh0UGF0aCxiLmlkc1swXSkpLGMoYSx7ZGF0
YTplLGJsb2NrUGFyYW1zOmQuYmxvY2tQYXJhbXMoW2FdLFtlJiZlLmNvbnRleHRQYXRoXSl9KX0p
fSxhLmV4cG9ydHM9YlsiZGVmYXVsdCJdfSxmdW5jdGlvbihhLGIsYyl7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIGQoYSl7Z1siZGVmYXVsdCJdKGEpfXZhciBlPWMoMilbImRlZmF1bHQiXTtiLl9fZXNN
b2R1bGU9ITAsYi5yZWdpc3RlckRlZmF1bHREZWNvcmF0b3JzPWQ7dmFyIGY9YygxOCksZz1lKGYp
fSxmdW5jdGlvbihhLGIsYyl7InVzZSBzdHJpY3QiO2IuX19lc01vZHVsZT0hMDt2YXIgZD1jKDQp
O2JbImRlZmF1bHQiXT1mdW5jdGlvbihhKXthLnJlZ2lzdGVyRGVjb3JhdG9yKCJpbmxpbmUiLGZ1
bmN0aW9uKGEsYixjLGUpe3ZhciBmPWE7cmV0dXJuIGIucGFydGlhbHN8fChiLnBhcnRpYWxzPXt9
LGY9ZnVuY3Rpb24oZSxmKXt2YXIgZz1jLnBhcnRpYWxzO2MucGFydGlhbHM9ZC5leHRlbmQoe30s
ZyxiLnBhcnRpYWxzKTt2YXIgaD1hKGUsZik7cmV0dXJuIGMucGFydGlhbHM9ZyxofSksYi5wYXJ0
aWFsc1tlLmFyZ3NbMF1dPWUuZm4sZn0pfSxhLmV4cG9ydHM9YlsiZGVmYXVsdCJdfSxmdW5jdGlv
bihhLGIsYyl7InVzZSBzdHJpY3QiO2IuX19lc01vZHVsZT0hMDt2YXIgZD1jKDQpLGU9e21ldGhv
ZE1hcDpbImRlYnVnIiwiaW5mbyIsIndhcm4iLCJlcnJvciJdLGxldmVsOiJpbmZvIixsb29rdXBM
ZXZlbDpmdW5jdGlvbihhKXtpZigic3RyaW5nIj09dHlwZW9mIGEpe3ZhciBiPWQuaW5kZXhPZihl
Lm1ldGhvZE1hcCxhLnRvTG93ZXJDYXNlKCkpO2E9Yj49MD9iOnBhcnNlSW50KGEsMTApfXJldHVy
biBhfSxsb2c6ZnVuY3Rpb24oYSl7aWYoYT1lLmxvb2t1cExldmVsKGEpLCJ1bmRlZmluZWQiIT10
eXBlb2YgY29uc29sZSYmZS5sb29rdXBMZXZlbChlLmxldmVsKTw9YSl7dmFyIGI9ZS5tZXRob2RN
YXBbYV07Y29uc29sZVtiXXx8KGI9ImxvZyIpO2Zvcih2YXIgYz1hcmd1bWVudHMubGVuZ3RoLGQ9
QXJyYXkoYz4xP2MtMTowKSxmPTE7ZjxjO2YrKylkW2YtMV09YXJndW1lbnRzW2ZdO2NvbnNvbGVb
Yl0uYXBwbHkoY29uc29sZSxkKX19fTtiWyJkZWZhdWx0Il09ZSxhLmV4cG9ydHM9YlsiZGVmYXVs
dCJdfSxmdW5jdGlvbihhLGIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBjKGEpe3RoaXMuc3RyaW5n
PWF9Yi5fX2VzTW9kdWxlPSEwLGMucHJvdG90eXBlLnRvU3RyaW5nPWMucHJvdG90eXBlLnRvSFRN
TD1mdW5jdGlvbigpe3JldHVybiIiK3RoaXMuc3RyaW5nfSxiWyJkZWZhdWx0Il09YyxhLmV4cG9y
dHM9YlsiZGVmYXVsdCJdfSxmdW5jdGlvbihhLGIsYyl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGQo
YSl7dmFyIGI9YSYmYVswXXx8MSxjPXIuQ09NUElMRVJfUkVWSVNJT047aWYoYiE9PWMpe2lmKGI8
Yyl7dmFyIGQ9ci5SRVZJU0lPTl9DSEFOR0VTW2NdLGU9ci5SRVZJU0lPTl9DSEFOR0VTW2JdO3Ro
cm93IG5ldyBxWyJkZWZhdWx0Il0oIlRlbXBsYXRlIHdhcyBwcmVjb21waWxlZCB3aXRoIGFuIG9s
ZGVyIHZlcnNpb24gb2YgSGFuZGxlYmFycyB0aGFuIHRoZSBjdXJyZW50IHJ1bnRpbWUuIFBsZWFz
ZSB1cGRhdGUgeW91ciBwcmVjb21waWxlciB0byBhIG5ld2VyIHZlcnNpb24gKCIrZCsiKSBvciBk
b3duZ3JhZGUgeW91ciBydW50aW1lIHRvIGFuIG9sZGVyIHZlcnNpb24gKCIrZSsiKS4iKX10aHJv
dyBuZXcgcVsiZGVmYXVsdCJdKCJUZW1wbGF0ZSB3YXMgcHJlY29tcGlsZWQgd2l0aCBhIG5ld2Vy
IHZlcnNpb24gb2YgSGFuZGxlYmFycyB0aGFuIHRoZSBjdXJyZW50IHJ1bnRpbWUuIFBsZWFzZSB1
cGRhdGUgeW91ciBydW50aW1lIHRvIGEgbmV3ZXIgdmVyc2lvbiAoIithWzFdKyIpLiIpfX1mdW5j
dGlvbiBlKGEsYil7ZnVuY3Rpb24gYyhjLGQsZSl7ZS5oYXNoJiYoZD1vLmV4dGVuZCh7fSxkLGUu
aGFzaCksZS5pZHMmJihlLmlkc1swXT0hMCkpLGM9Yi5WTS5yZXNvbHZlUGFydGlhbC5jYWxsKHRo
aXMsYyxkLGUpO3ZhciBmPWIuVk0uaW52b2tlUGFydGlhbC5jYWxsKHRoaXMsYyxkLGUpO2lmKG51
bGw9PWYmJmIuY29tcGlsZSYmKGUucGFydGlhbHNbZS5uYW1lXT1iLmNvbXBpbGUoYyxhLmNvbXBp
bGVyT3B0aW9ucyxiKSxmPWUucGFydGlhbHNbZS5uYW1lXShkLGUpKSxudWxsIT1mKXtpZihlLmlu
ZGVudCl7Zm9yKHZhciBnPWYuc3BsaXQoIlxuIiksaD0wLGk9Zy5sZW5ndGg7aDxpJiYoZ1toXXx8
aCsxIT09aSk7aCsrKWdbaF09ZS5pbmRlbnQrZ1toXTtmPWcuam9pbigiXG4iKX1yZXR1cm4gZn10
aHJvdyBuZXcgcVsiZGVmYXVsdCJdKCJUaGUgcGFydGlhbCAiK2UubmFtZSsiIGNvdWxkIG5vdCBi
ZSBjb21waWxlZCB3aGVuIHJ1bm5pbmcgaW4gcnVudGltZS1vbmx5IG1vZGUiKX1mdW5jdGlvbiBk
KGIpe2Z1bmN0aW9uIGMoYil7cmV0dXJuIiIrYS5tYWluKGUsYixlLmhlbHBlcnMsZS5wYXJ0aWFs
cyxnLGksaCl9dmFyIGY9YXJndW1lbnRzLmxlbmd0aDw9MXx8dm9pZCAwPT09YXJndW1lbnRzWzFd
P3t9OmFyZ3VtZW50c1sxXSxnPWYuZGF0YTtkLl9zZXR1cChmKSwhZi5wYXJ0aWFsJiZhLnVzZURh
dGEmJihnPWooYixnKSk7dmFyIGg9dm9pZCAwLGk9YS51c2VCbG9ja1BhcmFtcz9bXTp2b2lkIDA7
cmV0dXJuIGEudXNlRGVwdGhzJiYoaD1mLmRlcHRocz9iIT1mLmRlcHRoc1swXT9bYl0uY29uY2F0
KGYuZGVwdGhzKTpmLmRlcHRoczpbYl0pLChjPWsoYS5tYWluLGMsZSxmLmRlcHRoc3x8W10sZyxp
KSkoYixmKX1pZighYil0aHJvdyBuZXcgcVsiZGVmYXVsdCJdKCJObyBlbnZpcm9ubWVudCBwYXNz
ZWQgdG8gdGVtcGxhdGUiKTtpZighYXx8IWEubWFpbil0aHJvdyBuZXcgcVsiZGVmYXVsdCJdKCJV
bmtub3duIHRlbXBsYXRlIG9iamVjdDogIit0eXBlb2YgYSk7YS5tYWluLmRlY29yYXRvcj1hLm1h
aW5fZCxiLlZNLmNoZWNrUmV2aXNpb24oYS5jb21waWxlcik7dmFyIGU9e3N0cmljdDpmdW5jdGlv
bihhLGIpe2lmKCEoYiBpbiBhKSl0aHJvdyBuZXcgcVsiZGVmYXVsdCJdKCciJytiKyciIG5vdCBk
ZWZpbmVkIGluICcrYSk7cmV0dXJuIGFbYl19LGxvb2t1cDpmdW5jdGlvbihhLGIpe2Zvcih2YXIg
Yz1hLmxlbmd0aCxkPTA7ZDxjO2QrKylpZihhW2RdJiZudWxsIT1hW2RdW2JdKXJldHVybiBhW2Rd
W2JdfSxsYW1iZGE6ZnVuY3Rpb24oYSxiKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgYT9hLmNh
bGwoYik6YX0sZXNjYXBlRXhwcmVzc2lvbjpvLmVzY2FwZUV4cHJlc3Npb24saW52b2tlUGFydGlh
bDpjLGZuOmZ1bmN0aW9uKGIpe3ZhciBjPWFbYl07cmV0dXJuIGMuZGVjb3JhdG9yPWFbYisiX2Qi
XSxjfSxwcm9ncmFtczpbXSxwcm9ncmFtOmZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGc9dGhpcy5w
cm9ncmFtc1thXSxoPXRoaXMuZm4oYSk7cmV0dXJuIGJ8fGV8fGR8fGM/Zz1mKHRoaXMsYSxoLGIs
YyxkLGUpOmd8fChnPXRoaXMucHJvZ3JhbXNbYV09Zih0aGlzLGEsaCkpLGd9LGRhdGE6ZnVuY3Rp
b24oYSxiKXtmb3IoO2EmJmItLTspYT1hLl9wYXJlbnQ7cmV0dXJuIGF9LG1lcmdlOmZ1bmN0aW9u
KGEsYil7dmFyIGM9YXx8YjtyZXR1cm4gYSYmYiYmYSE9PWImJihjPW8uZXh0ZW5kKHt9LGIsYSkp
LGN9LG5vb3A6Yi5WTS5ub29wLGNvbXBpbGVySW5mbzphLmNvbXBpbGVyfTtyZXR1cm4gZC5pc1Rv
cD0hMCxkLl9zZXR1cD1mdW5jdGlvbihjKXtjLnBhcnRpYWw/KGUuaGVscGVycz1jLmhlbHBlcnMs
ZS5wYXJ0aWFscz1jLnBhcnRpYWxzLGUuZGVjb3JhdG9ycz1jLmRlY29yYXRvcnMpOihlLmhlbHBl
cnM9ZS5tZXJnZShjLmhlbHBlcnMsYi5oZWxwZXJzKSxhLnVzZVBhcnRpYWwmJihlLnBhcnRpYWxz
PWUubWVyZ2UoYy5wYXJ0aWFscyxiLnBhcnRpYWxzKSksKGEudXNlUGFydGlhbHx8YS51c2VEZWNv
cmF0b3JzKSYmKGUuZGVjb3JhdG9ycz1lLm1lcmdlKGMuZGVjb3JhdG9ycyxiLmRlY29yYXRvcnMp
KSl9LGQuX2NoaWxkPWZ1bmN0aW9uKGIsYyxkLGcpe2lmKGEudXNlQmxvY2tQYXJhbXMmJiFkKXRo
cm93IG5ldyBxWyJkZWZhdWx0Il0oIm11c3QgcGFzcyBibG9jayBwYXJhbXMiKTtpZihhLnVzZURl
cHRocyYmIWcpdGhyb3cgbmV3IHFbImRlZmF1bHQiXSgibXVzdCBwYXNzIHBhcmVudCBkZXB0aHMi
KTtyZXR1cm4gZihlLGIsYVtiXSxjLDAsZCxnKX0sZH1mdW5jdGlvbiBmKGEsYixjLGQsZSxmLGcp
e2Z1bmN0aW9uIGgoYil7dmFyIGU9YXJndW1lbnRzLmxlbmd0aDw9MXx8dm9pZCAwPT09YXJndW1l
bnRzWzFdP3t9OmFyZ3VtZW50c1sxXSxoPWc7cmV0dXJuIGcmJmIhPWdbMF0mJihoPVtiXS5jb25j
YXQoZykpLGMoYSxiLGEuaGVscGVycyxhLnBhcnRpYWxzLGUuZGF0YXx8ZCxmJiZbZS5ibG9ja1Bh
cmFtc10uY29uY2F0KGYpLGgpfXJldHVybiBoPWsoYyxoLGEsZyxkLGYpLGgucHJvZ3JhbT1iLGgu
ZGVwdGg9Zz9nLmxlbmd0aDowLGguYmxvY2tQYXJhbXM9ZXx8MCxofWZ1bmN0aW9uIGcoYSxiLGMp
e2lmKGEpYS5jYWxsfHxjLm5hbWV8fChjLm5hbWU9YSxhPWMucGFydGlhbHNbYV0pO2Vsc2UgaWYo
IkBwYXJ0aWFsLWJsb2NrIj09PWMubmFtZSl7Zm9yKHZhciBkPWMuZGF0YTtkWyJwYXJ0aWFsLWJs
b2NrIl09PT1pOylkPWQuX3BhcmVudDthPWRbInBhcnRpYWwtYmxvY2siXSxkWyJwYXJ0aWFsLWJs
b2NrIl09aX1lbHNlIGE9Yy5wYXJ0aWFsc1tjLm5hbWVdO3JldHVybiBhfWZ1bmN0aW9uIGgoYSxi
LGMpe2MucGFydGlhbD0hMCxjLmlkcyYmKGMuZGF0YS5jb250ZXh0UGF0aD1jLmlkc1swXXx8Yy5k
YXRhLmNvbnRleHRQYXRoKTt2YXIgZD12b2lkIDA7aWYoYy5mbiYmYy5mbiE9PWkmJihjLmRhdGE9
ci5jcmVhdGVGcmFtZShjLmRhdGEpLGQ9Yy5kYXRhWyJwYXJ0aWFsLWJsb2NrIl09Yy5mbixkLnBh
cnRpYWxzJiYoYy5wYXJ0aWFscz1vLmV4dGVuZCh7fSxjLnBhcnRpYWxzLGQucGFydGlhbHMpKSks
dm9pZCAwPT09YSYmZCYmKGE9ZCksdm9pZCAwPT09YSl0aHJvdyBuZXcgcVsiZGVmYXVsdCJdKCJU
aGUgcGFydGlhbCAiK2MubmFtZSsiIGNvdWxkIG5vdCBiZSBmb3VuZCIpO2lmKGEgaW5zdGFuY2Vv
ZiBGdW5jdGlvbilyZXR1cm4gYShiLGMpfWZ1bmN0aW9uIGkoKXtyZXR1cm4iIn1mdW5jdGlvbiBq
KGEsYil7cmV0dXJuIGImJiJyb290ImluIGJ8fChiPWI/ci5jcmVhdGVGcmFtZShiKTp7fSxiLnJv
b3Q9YSksYn1mdW5jdGlvbiBrKGEsYixjLGQsZSxmKXtpZihhLmRlY29yYXRvcil7dmFyIGc9e307
Yj1hLmRlY29yYXRvcihiLGcsYyxkJiZkWzBdLGUsZixkKSxvLmV4dGVuZChiLGcpfXJldHVybiBi
fXZhciBsPWMoMSlbImRlZmF1bHQiXSxtPWMoMilbImRlZmF1bHQiXTtiLl9fZXNNb2R1bGU9ITAs
Yi5jaGVja1JldmlzaW9uPWQsYi50ZW1wbGF0ZT1lLGIud3JhcFByb2dyYW09ZixiLnJlc29sdmVQ
YXJ0aWFsPWcsYi5pbnZva2VQYXJ0aWFsPWgsYi5ub29wPWk7dmFyIG49Yyg0KSxvPWwobikscD1j
KDUpLHE9bShwKSxyPWMoMyl9LGZ1bmN0aW9uKGEsYil7KGZ1bmN0aW9uKGMpeyJ1c2Ugc3RyaWN0
IjtiLl9fZXNNb2R1bGU9ITAsYlsiZGVmYXVsdCJdPWZ1bmN0aW9uKGEpe3ZhciBiPSJ1bmRlZmlu
ZWQiIT10eXBlb2YgYz9jOndpbmRvdyxkPWIuSGFuZGxlYmFyczthLm5vQ29uZmxpY3Q9ZnVuY3Rp
b24oKXtyZXR1cm4gYi5IYW5kbGViYXJzPT09YSYmKGIuSGFuZGxlYmFycz1kKSxhfX0sYS5leHBv
cnRzPWJbImRlZmF1bHQiXX0pLmNhbGwoYixmdW5jdGlvbigpe3JldHVybiB0aGlzfSgpKX1dKX0p
OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2px
dWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kb2NzL2NvbXBpbGVyLWFwaS5tZCBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kb2NzL2NvbXBpbGVyLWFwaS5t
ZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yOTM4MjE5MWVhMzk5NjEyYjQ0NzRjMTc4OTIyY2UxNWVmMTk0OGZkCi0t
LSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGVi
YXJzL2RvY3MvY29tcGlsZXItYXBpLm1kCkBAIC0wLDAgKzEsMzE2IEBACisjIEhhbmRsZWJhcnMg
Q29tcGlsZXIgQVBJcworCitUaGVyZSBhcmUgYSBudW1iZXIgb2YgZm9ybWFsIEFQSXMgdGhhdCB0
b29sIGltcGxlbWVudG9ycyBtYXkgaW50ZXJhY3Qgd2l0aC4KKworIyMgQVNUCisKK090aGVyIHRv
b2xzIG1heSBpbnRlcmFjdCB3aXRoIHRoZSBmb3JtYWwgQVNUIGFzIGRlZmluZWQgYmVsb3cuIEFu
eSBKU09OIHN0cnVjdHVyZSBtYXRjaGluZyB0aGlzIHBhdHRlcm4gbWF5IGJlIHVzZWQgYW5kIHBh
c3NlZCBpbnRvIHRoZSBgY29tcGlsZWAgYW5kIGBwcmVjb21waWxlYCBtZXRob2RzIGluIHRoZSBz
YW1lIHdheSBhcyB0aGUgdGV4dCBmb3IgYSB0ZW1wbGF0ZS4KKworQVNUIHN0cnVjdHVyZXMgbWF5
IGJlIGdlbmVyYXRlZCBlaXRoZXIgd2l0aCB0aGUgYEhhbmRsZWJhcnMucGFyc2VgIG1ldGhvZCBh
bmQgdGhlbiBtYW5pcHVsYXRlZCwgdmlhIHRoZSBgSGFuZGxlYmFycy5BU1RgIG9iamVjdHMgb2Yg
dGhlIHNhbWUgbmFtZSwgb3IgY29uc3RydWN0ZWQgbWFudWFsbHkgYXMgYSBnZW5lcmljIEphdmFT
Y3JpcHQgb2JqZWN0IG1hdGNoaW5nIHRoZSBzdHJ1Y3R1cmUgZGVmaW5lZCBiZWxvdy4KKworYGBg
amF2YXNjcmlwdAordmFyIGFzdCA9IEhhbmRsZWJhcnMucGFyc2UobXlUZW1wbGF0ZSk7CisKKy8v
IE1vZGlmeSBhc3QKKworSGFuZGxlYmFycy5wcmVjb21waWxlKGFzdCk7CitgYGAKKworCisjIyMg
QmFzaWMKKworYGBgamF2YQoraW50ZXJmYWNlIE5vZGUgeworICAgIHR5cGU6IHN0cmluZzsKKyAg
ICBsb2M6IFNvdXJjZUxvY2F0aW9uIHwgbnVsbDsKK30KKworaW50ZXJmYWNlIFNvdXJjZUxvY2F0
aW9uIHsKKyAgICBzb3VyY2U6IHN0cmluZyB8IG51bGw7CisgICAgc3RhcnQ6IFBvc2l0aW9uOwor
ICAgIGVuZDogUG9zaXRpb247Cit9CisKK2ludGVyZmFjZSBQb3NpdGlvbiB7CisgICAgbGluZTog
dWludCA+PSAxOworICAgIGNvbHVtbjogdWludCA+PSAwOworfQorYGBgCisKKyMjIyBQcm9ncmFt
cworCitgYGBqYXZhCitpbnRlcmZhY2UgUHJvZ3JhbSA8OiBOb2RlIHsKKyAgICB0eXBlOiAiUHJv
Z3JhbSI7CisgICAgYm9keTogWyBTdGF0ZW1lbnQgXTsKKyAgICAKKyAgICBibG9ja1BhcmFtczog
WyBzdHJpbmcgXTsKK30KK2BgYAorCisjIyMgU3RhdGVtZW50cworCitgYGBqYXZhCitpbnRlcmZh
Y2UgU3RhdGVtZW50IDw6IE5vZGUgeyB9CisKK2ludGVyZmFjZSBNdXN0YWNoZVN0YXRlbWVudCA8
OiBTdGF0ZW1lbnQgeworICAgIHR5cGU6ICJNdXN0YWNoZVN0YXRlbWVudCI7CisKKyAgICBwYXRo
OiBQYXRoRXhwcmVzc2lvbiB8IExpdGVyYWw7CisgICAgcGFyYW1zOiBbIEV4cHJlc3Npb24gXTsK
KyAgICBoYXNoOiBIYXNoOworCisgICAgZXNjYXBlZDogYm9vbGVhbjsKKyAgICBzdHJpcDogU3Ry
aXBGbGFncyB8IG51bGw7Cit9CisKK2ludGVyZmFjZSBCbG9ja1N0YXRlbWVudCA8OiBTdGF0ZW1l
bnQgeworICAgIHR5cGU6ICJCbG9ja1N0YXRlbWVudCI7CisgICAgcGF0aDogUGF0aEV4cHJlc3Np
b247CisgICAgcGFyYW1zOiBbIEV4cHJlc3Npb24gXTsKKyAgICBoYXNoOiBIYXNoOworCisgICAg
cHJvZ3JhbTogUHJvZ3JhbSB8IG51bGw7CisgICAgaW52ZXJzZTogUHJvZ3JhbSB8IG51bGw7CisK
KyAgICBvcGVuU3RyaXA6IFN0cmlwRmxhZ3MgfCBudWxsOworICAgIGludmVyc2VTdHJpcDogU3Ry
aXBGbGFncyB8IG51bGw7CisgICAgY2xvc2VTdHJpcDogU3RyaXBGbGFncyB8IG51bGw7Cit9CisK
K2ludGVyZmFjZSBQYXJ0aWFsU3RhdGVtZW50IDw6IFN0YXRlbWVudCB7CisgICAgdHlwZTogIlBh
cnRpYWxTdGF0ZW1lbnQiOworICAgIG5hbWU6IFBhdGhFeHByZXNzaW9uIHwgU3ViRXhwcmVzc2lv
bjsKKyAgICBwYXJhbXM6IFsgRXhwcmVzc2lvbiBdOworICAgIGhhc2g6IEhhc2g7CisKKyAgICBp
bmRlbnQ6IHN0cmluZzsKKyAgICBzdHJpcDogU3RyaXBGbGFncyB8IG51bGw7Cit9CisKK2ludGVy
ZmFjZSBQYXJ0aWFsQmxvY2tTdGF0ZW1lbnQgPDogU3RhdGVtZW50IHsKKyAgICB0eXBlOiAiUGFy
dGlhbEJsb2NrU3RhdGVtZW50IjsKKyAgICBuYW1lOiBQYXRoRXhwcmVzc2lvbiB8IFN1YkV4cHJl
c3Npb247CisgICAgcGFyYW1zOiBbIEV4cHJlc3Npb24gXTsKKyAgICBoYXNoOiBIYXNoOworCisg
ICAgcHJvZ3JhbTogUHJvZ3JhbSB8IG51bGw7CisKKyAgICBpbmRlbnQ6IHN0cmluZzsKKyAgICBv
cGVuU3RyaXA6IFN0cmlwRmxhZ3MgfCBudWxsOworICAgIGNsb3NlU3RyaXA6IFN0cmlwRmxhZ3Mg
fCBudWxsOworfQorYGBgCisKK2BuYW1lYCB3aWxsIGJlIGEgYFN1YkV4cHJlc3Npb25gIHdoZW4g
dGllZCB0byBhIGR5bmFtaWMgcGFydGlhbCwgaS5lLiBge3s+IChmb28pIH19YCwgb3RoZXJ3aXNl
IHRoaXMgaXMgYSBwYXRoIG9yIGxpdGVyYWwgd2hvc2UgYG9yaWdpbmFsYCB2YWx1ZSBpcyB1c2Vk
IHRvIGxvb2t1cCB0aGUgZGVzaXJlZCBwYXJ0aWFsLgorCisKK2BgYGphdmEKK2ludGVyZmFjZSBD
b250ZW50U3RhdGVtZW50IDw6IFN0YXRlbWVudCB7CisgICAgdHlwZTogIkNvbnRlbnRTdGF0ZW1l
bnQiOworICAgIHZhbHVlOiBzdHJpbmc7CisgICAgb3JpZ2luYWw6IHN0cmluZzsKK30KKworaW50
ZXJmYWNlIENvbW1lbnRTdGF0ZW1lbnQgPDogU3RhdGVtZW50IHsKKyAgICB0eXBlOiAiQ29tbWVu
dFN0YXRlbWVudCI7CisgICAgdmFsdWU6IHN0cmluZzsKKworICAgIHN0cmlwOiBTdHJpcEZsYWdz
IHwgbnVsbDsKK30KK2BgYAorCisKK2BgYGphdmEKK2ludGVyZmFjZSBEZWNvcmF0b3IgPDogU3Rh
dGVtZW50IHsKKyAgICB0eXBlOiAiRGVjb3JhdG9yIjsKKworICAgIHBhdGg6IFBhdGhFeHByZXNz
aW9uIHwgTGl0ZXJhbDsKKyAgICBwYXJhbXM6IFsgRXhwcmVzc2lvbiBdOworICAgIGhhc2g6IEhh
c2g7CisKKyAgICBzdHJpcDogU3RyaXBGbGFncyB8IG51bGw7Cit9CisKK2ludGVyZmFjZSBEZWNv
cmF0b3JCbG9jayA8OiBTdGF0ZW1lbnQgeworICAgIHR5cGU6ICJEZWNvcmF0b3JCbG9jayI7Cisg
ICAgcGF0aDogUGF0aEV4cHJlc3Npb24gfCBMaXRlcmFsOworICAgIHBhcmFtczogWyBFeHByZXNz
aW9uIF07CisgICAgaGFzaDogSGFzaDsKKworICAgIHByb2dyYW06IFByb2dyYW0gfCBudWxsOwor
CisgICAgb3BlblN0cmlwOiBTdHJpcEZsYWdzIHwgbnVsbDsKKyAgICBjbG9zZVN0cmlwOiBTdHJp
cEZsYWdzIHwgbnVsbDsKK30KK2BgYAorCitEZWNvcmF0b3IgcGF0aHMgb25seSB1dGlsaXplIHRo
ZSBgcGF0aC5vcmlnaW5hbGAgdmFsdWUgYW5kIGFzIGEgY29uc2VxdWVuY2UgZG8gbm90IHN1cHBv
cnQgZGVwdGhlZCBldmFsdWF0aW9uLgorCisjIyMgRXhwcmVzc2lvbnMKKworYGBgamF2YQoraW50
ZXJmYWNlIEV4cHJlc3Npb24gPDogTm9kZSB7IH0KK2BgYAorCisjIyMjIyBTdWJFeHByZXNzaW9u
cworCitgYGBqYXZhCitpbnRlcmZhY2UgU3ViRXhwcmVzc2lvbiA8OiBFeHByZXNzaW9uIHsKKyAg
ICB0eXBlOiAiU3ViRXhwcmVzc2lvbiI7CisgICAgcGF0aDogUGF0aEV4cHJlc3Npb247CisgICAg
cGFyYW1zOiBbIEV4cHJlc3Npb24gXTsKKyAgICBoYXNoOiBIYXNoOworfQorYGBgCisKKyMjIyMj
IFBhdGhzCisKK2BgYGphdmEKK2ludGVyZmFjZSBQYXRoRXhwcmVzc2lvbiA8OiBFeHByZXNzaW9u
IHsKKyAgICB0eXBlOiAiUGF0aEV4cHJlc3Npb24iOworICAgIGRhdGE6IGJvb2xlYW47CisgICAg
ZGVwdGg6IHVpbnQgPj0gMDsKKyAgICBwYXJ0czogWyBzdHJpbmcgXTsKKyAgICBvcmlnaW5hbDog
c3RyaW5nOworfQorYGBgCisKKy0gYGRhdGFgIGlzIHRydWUgd2hlbiB0aGUgZ2l2ZW4gZXhwcmVz
c2lvbiBpcyBhIGBAZGF0YWAgcmVmZXJlbmNlLgorLSBgZGVwdGhgIGlzIGFuIGludGVnZXIgcmVw
cmVzZW50YXRpb24gb2Ygd2hpY2ggY29udGV4dCB0aGUgZXhwcmVzc2lvbiByZWZlcmVuY2VzLiBg
MGAgcmVwcmVzZW50cyB0aGUgY3VycmVudCBjb250ZXh0LCBgMWAgd291bGQgYmUgYC4uL2AsIGV0
Yy4KKy0gYHBhcnRzYCBpcyBhbiBhcnJheSBvZiB0aGUgbmFtZXMgaW4gdGhlIHBhdGguIGBmb28u
YmFyYCB3b3VsZCBiZSBgWydmb28nLCAnYmFyJ11gLiBTY29wZSByZWZlcmVuY2VzLCBgLmAsIGAu
LmAsIGFuZCBgdGhpc2Agc2hvdWxkIGJlIG9taXR0ZWQgZnJvbSB0aGlzIGFycmF5LgorLSBgb3Jp
Z2luYWxgIGlzIHRoZSBwYXRoIGFzIGVudGVyZWQgYnkgdGhlIHVzZXIuIFNlcGFyYXRvciBhbmQg
c2NvcGUgcmVmZXJlbmNlcyBhcmUgbGVmdCB1bnRvdWNoZWQuCisKKworIyMjIyMgTGl0ZXJhbHMK
KworYGBgamF2YQoraW50ZXJmYWNlIExpdGVyYWwgPDogRXhwcmVzc2lvbiB7IH0KKworaW50ZXJm
YWNlIFN0cmluZ0xpdGVyYWwgPDogTGl0ZXJhbCB7CisgICAgdHlwZTogIlN0cmluZ0xpdGVyYWwi
OworICAgIHZhbHVlOiBzdHJpbmc7CisgICAgb3JpZ2luYWw6IHN0cmluZzsKK30KKworaW50ZXJm
YWNlIEJvb2xlYW5MaXRlcmFsIDw6IExpdGVyYWwgeworICAgIHR5cGU6ICJCb29sZWFuTGl0ZXJh
bCI7CisgICAgdmFsdWU6IGJvb2xlYW47CisgICAgb3JpZ2luYWw6IGJvb2xlYW47Cit9CisKK2lu
dGVyZmFjZSBOdW1iZXJMaXRlcmFsIDw6IExpdGVyYWwgeworICAgIHR5cGU6ICJOdW1iZXJMaXRl
cmFsIjsKKyAgICB2YWx1ZTogbnVtYmVyOworICAgIG9yaWdpbmFsOiBudW1iZXI7Cit9CisKK2lu
dGVyZmFjZSBVbmRlZmluZWRMaXRlcmFsIDw6IExpdGVyYWwgeworICAgIHR5cGU6ICJVbmRlZmlu
ZWRMaXRlcmFsIjsKK30KKworaW50ZXJmYWNlIE51bGxMaXRlcmFsIDw6IExpdGVyYWwgeworICAg
IHR5cGU6ICJOdWxsTGl0ZXJhbCI7Cit9CitgYGAKKworCisjIyMgTWlzY2VsbGFuZW91cworCitg
YGBqYXZhCitpbnRlcmZhY2UgSGFzaCA8OiBOb2RlIHsKKyAgICB0eXBlOiAiSGFzaCI7CisgICAg
cGFpcnM6IFsgSGFzaFBhaXIgXTsKK30KKworaW50ZXJmYWNlIEhhc2hQYWlyIDw6IE5vZGUgewor
ICAgIHR5cGU6ICJIYXNoUGFpciI7CisgICAga2V5OiBzdHJpbmc7CisgICAgdmFsdWU6IEV4cHJl
c3Npb247Cit9CisKK2ludGVyZmFjZSBTdHJpcEZsYWdzIHsKKyAgICBvcGVuOiBib29sZWFuOwor
ICAgIGNsb3NlOiBib29sZWFuOworfQorYGBgCisKK2BTdHJpcEZsYWdzYCBhcmUgdXNlZCB0byBz
aWduaWZ5IHdoaXRlc3BhY2UgY29udHJvbCBjaGFyYWN0ZXIgdGhhdCBtYXkgaGF2ZSBiZWVuIGVu
dGVyZWQgb24gYSBnaXZlbiBzdGF0ZW1lbnQuCisKKyMjIEFTVCBWaXNpdG9yCisKK2BIYW5kbGVi
YXJzLlZpc2l0b3JgIGlzIGF2YWlsYWJsZSBhcyBhIGJhc2UgY2xhc3MgZm9yIGdlbmVyYWwgaW50
ZXJhY3Rpb24gd2l0aCBBU1Qgc3RydWN0dXJlcy4gVGhpcyB3aWxsIGJ5IGRlZmF1bHQgdHJhdmVy
c2UgdGhlIGVudGlyZSB0cmVlIGFuZCBpbmRpdmlkdWFsIG1ldGhvZHMgbWF5IGJlIG92ZXJyaWRk
ZW4gdG8gcHJvdmlkZSBzcGVjaWZpYyByZXNwb25zZXMgdG8gcGFydGljdWxhciBub2Rlcy4KKwor
UmVjb3JkaW5nIGFsbCByZWZlcmVuY2VkIHBhcnRpYWwgbmFtZXM6CisKK2BgYGphdmFzY3JpcHQK
K3ZhciBWaXNpdG9yID0gSGFuZGxlYmFycy5WaXNpdG9yOworCitmdW5jdGlvbiBJbXBvcnRTY2Fu
bmVyKCkgeworICB0aGlzLnBhcnRpYWxzID0gW107Cit9CitJbXBvcnRTY2FubmVyLnByb3RvdHlw
ZSA9IG5ldyBWaXNpdG9yKCk7CisKK0ltcG9ydFNjYW5uZXIucHJvdG90eXBlLlBhcnRpYWxTdGF0
ZW1lbnQgPSBmdW5jdGlvbihwYXJ0aWFsKSB7CisgIHRoaXMucGFydGlhbHMucHVzaCh7cmVxdWVz
dDogcGFydGlhbC5uYW1lLm9yaWdpbmFsfSk7CisKKyAgVmlzaXRvci5wcm90b3R5cGUuUGFydGlh
bFN0YXRlbWVudC5jYWxsKHRoaXMsIHBhcnRpYWwpOworfTsKKwordmFyIHNjYW5uZXIgPSBuZXcg
SW1wb3J0U2Nhbm5lcigpOworc2Nhbm5lci5hY2NlcHQoYXN0KTsKK2BgYAorCitUaGUgY3VycmVu
dCBub2RlJ3MgYW5jZXN0b3JzIHdpbGwgYmUgbWFpbnRhaW5lZCBpbiB0aGUgYHBhcmVudHNgIGFy
cmF5LCB3aXRoIHRoZSBtb3N0IHJlY2VudCBwYXJlbnQgbGlzdGVkIGZpcnN0LgorCitUaGUgdmlz
aXRvciBtYXkgYWxzbyBiZSBjb25maWd1cmVkIHRvIG9wZXJhdGUgaW4gbXV0YXRpb24gbW9kZSBi
eSBzZXR0aW5nIHRoZSBgbXV0YXRpb25gIGZpZWxkIHRvIHRydWUuIFdoZW4gaW4gdGhpcyBtb2Rl
LCBoYW5kbGVyIG1ldGhvZHMgbWF5IHJldHVybiBhbnkgdmFsaWQgQVNUIG5vZGUgYW5kIGl0IHdp
bGwgcmVwbGFjZSB0aGUgb25lIHRoZXkgYXJlIGN1cnJlbnRseSBvcGVyYXRpbmcgb24uIFJldHVy
bmluZyBgZmFsc2VgIHdpbGwgcmVtb3ZlIHRoZSBnaXZlbiB2YWx1ZSAoaWYgdmFsaWQpIGFuZCBy
ZXR1cm5pbmcgYHVuZGVmaW5lZGAgd2lsbCBsZWF2ZSB0aGUgbm9kZSBpbiB0YWN0LiBUaGlzIHJl
dHVybiBzdHJ1Y3R1cmUgb25seSBhcHBseSB0byBtdXRhdGlvbiBtb2RlIGFuZCBub24tbXV0YXRp
b24gbW9kZSB2aXNpdG9ycyBhcmUgZnJlZSB0byByZXR1cm4gd2hhdGV2ZXIgdmFsdWVzIHRoZXkg
d2lzaC4KKworSW1wbGVtZW50b3JzIHRoYXQgbWF5IG5lZWQgdG8gc3VwcG9ydCBtdXRhdGlvbiBt
b2RlIGFyZSBlbmNvdXJhZ2VkIHRvIHV0aWxpemUgdGhlIGBhY2NlcHRLZXlgLCBgYWNjZXB0UmVx
dWlyZWRgIGFuZCBgYWNjZXB0QXJyYXlgIGhlbHBlcnMgd2hpY2ggcHJvdmlkZSB0aGUgY29uZGl0
aW9uYWwgb3ZlcndyaXRlIGJlaGF2aW9yIGFzIHdlbGwgYXMgaW1wbGVtZW50IHNhbml0eSBjaGVj
a3Mgd2hlcmUgcGVydGluZW50LgorCisjIyBKYXZhU2NyaXB0IENvbXBpbGVyCisKK1RoZSBgSGFu
ZGxlYmFycy5KYXZhU2NyaXB0Q29tcGlsZXJgIG9iamVjdCBoYXMgYSBudW1iZXIgb2YgbWV0aG9k
cyB0aGF0IG1heSBiZSBjdXN0b21pemVkIHRvIGFsdGVyIHRoZSBvdXRwdXQgb2YgdGhlIGNvbXBp
bGVyOgorCistIGBuYW1lTG9va3VwKHBhcmVudCwgbmFtZSwgdHlwZSlgCisgIFVzZWQgdG8gZ2Vu
ZXJhdGUgdGhlIGNvZGUgdG8gcmVzb2x2ZSBhIGdpdmUgcGF0aCBjb21wb25lbnQuCisKKyAgLSBg
cGFyZW50YCBpcyB0aGUgZXhpc3RpbmcgY29kZSBpbiB0aGUgcGF0aCByZXNvbHV0aW9uCisgIC0g
YG5hbWVgIGlzIHRoZSBjdXJyZW50IHBhdGggY29tcG9uZW50CisgIC0gYHR5cGVgIGlzIHRoZSB0
eXBlIG9mIG5hbWUgYmVpbmcgZXZhbHVhdGVkLiBNYXkgYmUgb25lIG9mIGBjb250ZXh0YCwgYGRh
dGFgLCBgaGVscGVyYCwgYGRlY29yYXRvcmAsIG9yIGBwYXJ0aWFsYC4KKworICBOb3RlIHRoYXQg
dGhpcyBkb2VzIG5vdCBpbXBhY3QgZHluYW1pYyBwYXJ0aWFscywgd2hpY2ggaW1wbGVtZW50b3Jz
IG5lZWQgdG8gYmUgYXdhcmUgb2YuIE92ZXJyaWRpbmcgYFZNLnJlc29sdmVQYXJ0aWFsYCBtYXkg
YmUgcmVxdWlyZWQgdG8gc3VwcG9ydCBkeW5hbWljIGNhc2VzLgorCistIGBkZXB0aGVkTG9va3Vw
KG5hbWUpYAorICBVc2VkIHRvIGdlbmVyYXRlIGNvZGUgdGhhdCByZXNvbHZlcyBwYXJhbWV0ZXJz
IHdpdGhpbiBhbnkgY29udGV4dCBpbiB0aGUgc3RhY2suIElzIG9ubHkgdXNlZCBpbiBgY29tcGF0
YCBtb2RlLiAKKworLSBgY29tcGlsZXJJbmZvKClgCisgIEFsbG93cyBmb3IgY3VzdG9tIGNvbXBp
bGVyIGZsYWdzIHVzZWQgaW4gdGhlIHJ1bnRpbWUgdmVyc2lvbiBjaGVja2luZyBsb2dpYy4KKwor
LSBgYXBwZW5kVG9CdWZmZXIoc291cmNlLCBsb2NhdGlvbiwgZXhwbGljaXQpYAorICAgIEFsbG93
cyBmb3IgY29kZSBidWZmZXIgZW1pdHRpbmcgY29kZS4gRGVmYXVsdHMgYmVoYXZpb3IgaXMgc3Ry
aW5nIGNvbmNhdGVuYXRpb24uCisKKyAgICAtIGBzb3VyY2VgIGlzIHRoZSBzb3VyY2UgY29kZSB3
aG9zZSByZXN1bHQgaXMgdG8gYmUgYXBwZW5kaW5nCisgICAgLSBgbG9jYXRpb25gIGlzIHRoZSBs
b2NhdGlvbiBvZiB0aGUgc291cmNlIGluIHRoZSBzb3VyY2UgbWFwLgorICAgIC0gYGV4cGxpY2l0
YCBpcyBhIGZsYWcgc2lnbmFsaW5nIHRoYXQgdGhlIGVtaXQgb3BlcmF0aW9uIG11c3Qgb2NjdXIs
IHZzLiB0aGUgbGF6eSBldmFsZWQgb3B0aW9ucyBvdGhlcndpc2UuCisKKy0gYGluaXRpYWxpemVC
dWZmZXIoKWAKKyAgICBBbGxvd3MgZm9yIGJ1ZmZlcnMgb3RoZXIgdGhhbiB0aGUgZGVmYXVsdCBz
dHJpbmcgYnVmZmVyIHRvIGJlIHVzZWQuIEdlbmVyYWxseSBuZWVkcyB0byBiZSBwYWlyZWQgd2l0
aCBhIGN1c3RvbSBgYXBwZW5kVG9CdWZmZXJgIGltcGxlbWVudGF0aW9uLgorCitgYGBqYXZhc2Ny
aXB0CitmdW5jdGlvbiBNeUNvbXBpbGVyKCkgeworICBIYW5kbGViYXJzLkphdmFTY3JpcHRDb21w
aWxlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOworfQorTXlDb21waWxlci5wcm90b3R5cGUgPSBP
YmplY3QuY3JlYXRlKEhhbmRsZWJhcnMuSmF2YVNjcmlwdENvbXBpbGVyKTsKKworTXlDb21waWxl
ci5uYW1lTG9va3VwID0gZnVuY3Rpb24ocGFyZW50LCBuYW1lLCB0eXBlKSB7CisgIGlmICh0eXBl
ID09PSAncGFydGlhbCcpIHsKKyAgICByZXR1cm4gJ015UGFydGlhbExpc3RbJyArIEpTT04uc3Ry
aW5naWZ5KG5hbWUpICddJzsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gSGFuZGxlYmFycy5KYXZh
U2NyaXB0Q29tcGlsZXIucHJvdG90eXBlLm5hbWVMb29rdXAuY2FsbCh0aGlzLCBwYXJlbnQsIG5h
bWUsIHR5cGUpOworICB9Cit9OworCit2YXIgZW52ID0gSGFuZGxlYmFycy5jcmVhdGUoKTsKK2Vu
di5KYXZhU2NyaXB0Q29tcGlsZXIgPSBNeUNvbXBpbGVyOworZW52LmNvbXBpbGUoJ215IHRlbXBs
YXRlJyk7CitgYGAKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMv
aGFuZGxlYmFycy9kb2NzL2RlY29yYXRvcnMtYXBpLm1kIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25v
ZGVfbW9kdWxlcy9oYW5kbGViYXJzL2RvY3MvZGVjb3JhdG9ycy1hcGkubWQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NTY2YzdlYjg3Zjg1MTllY2QxODNjMWYwNTVkOWM3YzZjMzZkNWJlMwotLS0gL2Rldi9udWxsCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kb2NzL2RlY29y
YXRvcnMtYXBpLm1kCkBAIC0wLDAgKzEsMTkgQEAKKyMgRGVjb3JhdG9ycworCitEZWNvcmF0b3Jz
IGFsbG93IGZvciBibG9ja3MgdG8gYmUgYW5ub3RhdGVkIHdpdGggbWV0YWRhdGEgb3Igd3JhcHBl
ZCBpbiBmdW5jdGlvbmFsaXR5IHByaW9yIHRvIGV4ZWN1dGlvbiBvZiB0aGUgYmxvY2suIFRoaXMg
bWF5IGJlIHVzZWQgdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgY29udGFpbmluZyBoZWxwZXIgb3Ig
dG8gc2V0dXAgYSBwYXJ0aWN1bGFyIHN0YXRlIGluIHRoZSBzeXN0ZW0gcHJpb3IgdG8gcnVubmlu
ZyB0aGUgYmxvY2suCisKK0RlY29yYXRvcnMgYXJlIHJlZ2lzdGVyZWQgdGhyb3VnaCBzaW1pbGFy
IG1ldGhvZHMgYXMgaGVscGVycywgYHJlZ2lzdGVyRGVjb3JhdG9yc2AgYW5kIGB1bnJlZ2lzdGVy
RGVjb3JhdG9yc2AuIFRoZXNlIGNhbiB0aGVuIGJlIHJlZmVyZW5jZWQgdmlhIHRoZSBmcmllbmRs
eSBuYW1lIGluIHRoZSB0ZW1wbGF0ZSB1c2luZyB0aGUgYHt7KiBkZWNvcmF0b3J9fWAgYW5kIGB7
eyMqIGRlY29yYXRvcn19ey9kZWNvcmF0b3J9fWAgc3ludGF4ZXMuIFRoZXNlIHN5bnRheGVzIGFy
ZSBkZXJpdmF0aXZlcyBvZiB0aGUgbm9ybWFsIG11c3RhY2hlIHN5bnRheCBhbmQgYXMgc3VjaCBo
YXZlIGFsbCBvZiB0aGUgc2FtZSBhcmd1bWVudCBhbmQgd2hpdGVzcGFjZSBiZWhhdmlvcnMuCisK
K0RlY29yYXRvcnMgYXJlIGV4ZWN1dGVkIHdoZW4gdGhlIGJsb2NrIHByb2dyYW0gaXMgaW5zdGFu
dGlhdGVkIGFuZCBhcmUgcGFzc2VkIGAocHJvZ3JhbSwgcHJvcHMsIGNvbnRhaW5lciwgY29udGV4
dCwgZGF0YSwgYmxvY2tQYXJhbXMsIGRlcHRocylgLgorCistIGBwcm9ncmFtYDogVGhlIGJsb2Nr
IHRvIHdyYXAKKy0gYHByb3BzYDogT2JqZWN0IHVzZWQgdG8gc2V0IG1ldGFkYXRhIG9uIHRoZSBm
aW5hbCBmdW5jdGlvbi4gQW55IHZhbHVlcyBzZXQgb24gdGhpcyBvYmplY3Qgd2lsbCBiZSBzZXQg
b24gdGhlIGZ1bmN0aW9uLCByZWdhcmRsZXNzIG9mIGlmIHRoZSBvcmlnaW5hbCBmdW5jdGlvbiBp
cyByZXBsYWNlZCBvciBub3QuIE1ldGFkYXRhIHNob3VsZCBiZSBhcHBsaWVkIHVzaW5nIHRoaXMg
b2JqZWN0IGFzIHZhbHVlcyBhcHBsaWVkIHRvIGBwcm9ncmFtYCBtYXkgYmUgbWFza2VkIGJ5IHN1
YnNlcXVlbnQgZGVjb3JhdG9ycyB0aGF0IG1heSB3cmFwIGBwcm9ncmFtYC4KKy0gYGNvbnRhaW5l
cmA6IFRoZSBjdXJyZW50IHJ1bnRpbWUgY29udGFpbmVyCistIGBjb250ZXh0YDogVGhlIGN1cnJl
bnQgY29udGV4dC4gU2luY2UgdGhlIGRlY29yYXRvciBpcyBydW4gYmVmb3JlIHRoZSBibG9jayB0
aGF0IGNvbnRhaW5zIGl0LCB0aGlzIGlzIHRoZSBwYXJlbnQgY29udGV4dC4KKy0gYGRhdGFgOiBU
aGUgY3VycmVudCBgQGRhdGFgIHZhbHVlcworLSBgYmxvY2tQYXJhbXNgOiBUaGUgY3VycmVudCBi
bG9jayBwYXJhbWV0ZXJzIHN0YWNrCistIGBkZXB0aHNgOiBUaGUgY3VycmVudCBjb250ZXh0IHN0
YWNrCisKK0RlY29yYXRvcnMgbWF5IHNldCB2YWx1ZXMgb24gYHByb3BzYCBvciByZXR1cm4gYSBt
b2RpZmllZCBmdW5jdGlvbiB0aGF0IHdyYXBzIGBwcm9ncmFtYCBpbiBwYXJ0aWN1bGFyIGJlaGF2
aW9ycy4gSWYgdGhlIGRlY29yYXRvciByZXR1cm5zIG5vdGhpbmcsIHRoZW4gYHByb2dyYW1gIGlz
IGxlZnQgdW5hbHRlcmVkLgorCitUaGUgW2lubGluZSBwYXJ0aWFsXShodHRwczovL2dpdGh1Yi5j
b20vd3ljYXRzL2hhbmRsZWJhcnMuanMvYmxvYi9tYXN0ZXIvbGliL2hhbmRsZWJhcnMvZGVjb3Jh
dG9ycy9pbmxpbmUuanMpIGltcGxlbWVudGF0aW9uIHByb3ZpZGVzIGFuIGV4YW1wbGUgb2YgZGVj
b3JhdG9ycyBiZWluZyB1c2VkIGZvciBib3RoIG1ldGFkYXRhIGFuZCB3cmFwcGluZyBiZWhhdmlv
cnMuCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJh
cnMvbGliL2hhbmRsZWJhcnMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hh
bmRsZWJhcnMvbGliL2hhbmRsZWJhcnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjExNDk1OTA1YmRiYmJhOGVk
ZWUyZWUwYWFiYjlhY2M5YjYzMTNhOQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2px
dWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9saWIvaGFuZGxlYmFycy5qcwpAQCAtMCwwICsx
LDQxIEBACitpbXBvcnQgcnVudGltZSBmcm9tICcuL2hhbmRsZWJhcnMucnVudGltZSc7CisKKy8v
IENvbXBpbGVyIGltcG9ydHMKK2ltcG9ydCBBU1QgZnJvbSAnLi9oYW5kbGViYXJzL2NvbXBpbGVy
L2FzdCc7CitpbXBvcnQgeyBwYXJzZXIgYXMgUGFyc2VyLCBwYXJzZSB9IGZyb20gJy4vaGFuZGxl
YmFycy9jb21waWxlci9iYXNlJzsKK2ltcG9ydCB7IENvbXBpbGVyLCBjb21waWxlLCBwcmVjb21w
aWxlIH0gZnJvbSAnLi9oYW5kbGViYXJzL2NvbXBpbGVyL2NvbXBpbGVyJzsKK2ltcG9ydCBKYXZh
U2NyaXB0Q29tcGlsZXIgZnJvbSAnLi9oYW5kbGViYXJzL2NvbXBpbGVyL2phdmFzY3JpcHQtY29t
cGlsZXInOworaW1wb3J0IFZpc2l0b3IgZnJvbSAnLi9oYW5kbGViYXJzL2NvbXBpbGVyL3Zpc2l0
b3InOworCitpbXBvcnQgbm9Db25mbGljdCBmcm9tICcuL2hhbmRsZWJhcnMvbm8tY29uZmxpY3Qn
OworCitsZXQgX2NyZWF0ZSA9IHJ1bnRpbWUuY3JlYXRlOworZnVuY3Rpb24gY3JlYXRlKCkgewor
ICBsZXQgaGIgPSBfY3JlYXRlKCk7CisKKyAgaGIuY29tcGlsZSA9IGZ1bmN0aW9uKGlucHV0LCBv
cHRpb25zKSB7CisgICAgcmV0dXJuIGNvbXBpbGUoaW5wdXQsIG9wdGlvbnMsIGhiKTsKKyAgfTsK
KyAgaGIucHJlY29tcGlsZSA9IGZ1bmN0aW9uKGlucHV0LCBvcHRpb25zKSB7CisgICAgcmV0dXJu
IHByZWNvbXBpbGUoaW5wdXQsIG9wdGlvbnMsIGhiKTsKKyAgfTsKKworICBoYi5BU1QgPSBBU1Q7
CisgIGhiLkNvbXBpbGVyID0gQ29tcGlsZXI7CisgIGhiLkphdmFTY3JpcHRDb21waWxlciA9IEph
dmFTY3JpcHRDb21waWxlcjsKKyAgaGIuUGFyc2VyID0gUGFyc2VyOworICBoYi5wYXJzZSA9IHBh
cnNlOworCisgIHJldHVybiBoYjsKK30KKworbGV0IGluc3QgPSBjcmVhdGUoKTsKK2luc3QuY3Jl
YXRlID0gY3JlYXRlOworCitub0NvbmZsaWN0KGluc3QpOworCitpbnN0LlZpc2l0b3IgPSBWaXNp
dG9yOworCitpbnN0WydkZWZhdWx0J10gPSBpbnN0OworCitleHBvcnQgZGVmYXVsdCBpbnN0Owpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2xp
Yi9oYW5kbGViYXJzLnJ1bnRpbWUuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVz
L2hhbmRsZWJhcnMvbGliL2hhbmRsZWJhcnMucnVudGltZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZDA1YjU0
NDg5NDEwYTFjY2QwMDMzZjUxMGZmYzFlYmM0MDdiOWIyCi0tLSAvZGV2L251bGwKKysrIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2xpYi9oYW5kbGViYXJzLnJ1
bnRpbWUuanMKQEAgLTAsMCArMSwzNyBAQAoraW1wb3J0ICogYXMgYmFzZSBmcm9tICcuL2hhbmRs
ZWJhcnMvYmFzZSc7CisKKy8vIEVhY2ggb2YgdGhlc2UgYXVnbWVudCB0aGUgSGFuZGxlYmFycyBv
YmplY3QuIE5vIG5lZWQgdG8gc2V0dXAgaGVyZS4KKy8vIChUaGlzIGlzIGRvbmUgdG8gZWFzaWx5
IHNoYXJlIGNvZGUgYmV0d2VlbiBjb21tb25qcyBhbmQgYnJvd3NlIGVudnMpCitpbXBvcnQgU2Fm
ZVN0cmluZyBmcm9tICcuL2hhbmRsZWJhcnMvc2FmZS1zdHJpbmcnOworaW1wb3J0IEV4Y2VwdGlv
biBmcm9tICcuL2hhbmRsZWJhcnMvZXhjZXB0aW9uJzsKK2ltcG9ydCAqIGFzIFV0aWxzIGZyb20g
Jy4vaGFuZGxlYmFycy91dGlscyc7CitpbXBvcnQgKiBhcyBydW50aW1lIGZyb20gJy4vaGFuZGxl
YmFycy9ydW50aW1lJzsKKworaW1wb3J0IG5vQ29uZmxpY3QgZnJvbSAnLi9oYW5kbGViYXJzL25v
LWNvbmZsaWN0JzsKKworLy8gRm9yIGNvbXBhdGliaWxpdHkgYW5kIHVzYWdlIG91dHNpZGUgb2Yg
bW9kdWxlIHN5c3RlbXMsIG1ha2UgdGhlIEhhbmRsZWJhcnMgb2JqZWN0IGEgbmFtZXNwYWNlCitm
dW5jdGlvbiBjcmVhdGUoKSB7CisgIGxldCBoYiA9IG5ldyBiYXNlLkhhbmRsZWJhcnNFbnZpcm9u
bWVudCgpOworCisgIFV0aWxzLmV4dGVuZChoYiwgYmFzZSk7CisgIGhiLlNhZmVTdHJpbmcgPSBT
YWZlU3RyaW5nOworICBoYi5FeGNlcHRpb24gPSBFeGNlcHRpb247CisgIGhiLlV0aWxzID0gVXRp
bHM7CisgIGhiLmVzY2FwZUV4cHJlc3Npb24gPSBVdGlscy5lc2NhcGVFeHByZXNzaW9uOworCisg
IGhiLlZNID0gcnVudGltZTsKKyAgaGIudGVtcGxhdGUgPSBmdW5jdGlvbihzcGVjKSB7CisgICAg
cmV0dXJuIHJ1bnRpbWUudGVtcGxhdGUoc3BlYywgaGIpOworICB9OworCisgIHJldHVybiBoYjsK
K30KKworbGV0IGluc3QgPSBjcmVhdGUoKTsKK2luc3QuY3JlYXRlID0gY3JlYXRlOworCitub0Nv
bmZsaWN0KGluc3QpOworCitpbnN0WydkZWZhdWx0J10gPSBpbnN0OworCitleHBvcnQgZGVmYXVs
dCBpbnN0OwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5k
bGViYXJzL2xpYi9oYW5kbGViYXJzL2Jhc2UuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9t
b2R1bGVzL2hhbmRsZWJhcnMvbGliL2hhbmRsZWJhcnMvYmFzZS5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNTVl
N2NhMDQzNzA0MTEyMGJhNzBhZGY0ZWFmZjZmOTg1MmE1NTI4Ci0tLSAvZGV2L251bGwKKysrIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2xpYi9oYW5kbGViYXJz
L2Jhc2UuanMKQEAgLTAsMCArMSw3OCBAQAoraW1wb3J0IHtjcmVhdGVGcmFtZSwgZXh0ZW5kLCB0
b1N0cmluZ30gZnJvbSAnLi91dGlscyc7CitpbXBvcnQgRXhjZXB0aW9uIGZyb20gJy4vZXhjZXB0
aW9uJzsKK2ltcG9ydCB7cmVnaXN0ZXJEZWZhdWx0SGVscGVyc30gZnJvbSAnLi9oZWxwZXJzJzsK
K2ltcG9ydCB7cmVnaXN0ZXJEZWZhdWx0RGVjb3JhdG9yc30gZnJvbSAnLi9kZWNvcmF0b3JzJzsK
K2ltcG9ydCBsb2dnZXIgZnJvbSAnLi9sb2dnZXInOworCitleHBvcnQgY29uc3QgVkVSU0lPTiA9
ICc0LjAuNic7CitleHBvcnQgY29uc3QgQ09NUElMRVJfUkVWSVNJT04gPSA3OworCitleHBvcnQg
Y29uc3QgUkVWSVNJT05fQ0hBTkdFUyA9IHsKKyAgMTogJzw9IDEuMC5yYy4yJywgLy8gMS4wLnJj
LjIgaXMgYWN0dWFsbHkgcmV2MiBidXQgZG9lc24ndCByZXBvcnQgaXQKKyAgMjogJz09IDEuMC4w
LXJjLjMnLAorICAzOiAnPT0gMS4wLjAtcmMuNCcsCisgIDQ6ICc9PSAxLngueCcsCisgIDU6ICc9
PSAyLjAuMC1hbHBoYS54JywKKyAgNjogJz49IDIuMC4wLWJldGEuMScsCisgIDc6ICc+PSA0LjAu
MCcKK307CisKK2NvbnN0IG9iamVjdFR5cGUgPSAnW29iamVjdCBPYmplY3RdJzsKKworZXhwb3J0
IGZ1bmN0aW9uIEhhbmRsZWJhcnNFbnZpcm9ubWVudChoZWxwZXJzLCBwYXJ0aWFscywgZGVjb3Jh
dG9ycykgeworICB0aGlzLmhlbHBlcnMgPSBoZWxwZXJzIHx8IHt9OworICB0aGlzLnBhcnRpYWxz
ID0gcGFydGlhbHMgfHwge307CisgIHRoaXMuZGVjb3JhdG9ycyA9IGRlY29yYXRvcnMgfHwge307
CisKKyAgcmVnaXN0ZXJEZWZhdWx0SGVscGVycyh0aGlzKTsKKyAgcmVnaXN0ZXJEZWZhdWx0RGVj
b3JhdG9ycyh0aGlzKTsKK30KKworSGFuZGxlYmFyc0Vudmlyb25tZW50LnByb3RvdHlwZSA9IHsK
KyAgY29uc3RydWN0b3I6IEhhbmRsZWJhcnNFbnZpcm9ubWVudCwKKworICBsb2dnZXI6IGxvZ2dl
ciwKKyAgbG9nOiBsb2dnZXIubG9nLAorCisgIHJlZ2lzdGVySGVscGVyOiBmdW5jdGlvbihuYW1l
LCBmbikgeworICAgIGlmICh0b1N0cmluZy5jYWxsKG5hbWUpID09PSBvYmplY3RUeXBlKSB7Cisg
ICAgICBpZiAoZm4pIHsgdGhyb3cgbmV3IEV4Y2VwdGlvbignQXJnIG5vdCBzdXBwb3J0ZWQgd2l0
aCBtdWx0aXBsZSBoZWxwZXJzJyk7IH0KKyAgICAgIGV4dGVuZCh0aGlzLmhlbHBlcnMsIG5hbWUp
OworICAgIH0gZWxzZSB7CisgICAgICB0aGlzLmhlbHBlcnNbbmFtZV0gPSBmbjsKKyAgICB9Cisg
IH0sCisgIHVucmVnaXN0ZXJIZWxwZXI6IGZ1bmN0aW9uKG5hbWUpIHsKKyAgICBkZWxldGUgdGhp
cy5oZWxwZXJzW25hbWVdOworICB9LAorCisgIHJlZ2lzdGVyUGFydGlhbDogZnVuY3Rpb24obmFt
ZSwgcGFydGlhbCkgeworICAgIGlmICh0b1N0cmluZy5jYWxsKG5hbWUpID09PSBvYmplY3RUeXBl
KSB7CisgICAgICBleHRlbmQodGhpcy5wYXJ0aWFscywgbmFtZSk7CisgICAgfSBlbHNlIHsKKyAg
ICAgIGlmICh0eXBlb2YgcGFydGlhbCA9PT0gJ3VuZGVmaW5lZCcpIHsKKyAgICAgICAgdGhyb3cg
bmV3IEV4Y2VwdGlvbihgQXR0ZW1wdGluZyB0byByZWdpc3RlciBhIHBhcnRpYWwgY2FsbGVkICIk
e25hbWV9IiBhcyB1bmRlZmluZWRgKTsKKyAgICAgIH0KKyAgICAgIHRoaXMucGFydGlhbHNbbmFt
ZV0gPSBwYXJ0aWFsOworICAgIH0KKyAgfSwKKyAgdW5yZWdpc3RlclBhcnRpYWw6IGZ1bmN0aW9u
KG5hbWUpIHsKKyAgICBkZWxldGUgdGhpcy5wYXJ0aWFsc1tuYW1lXTsKKyAgfSwKKworICByZWdp
c3RlckRlY29yYXRvcjogZnVuY3Rpb24obmFtZSwgZm4pIHsKKyAgICBpZiAodG9TdHJpbmcuY2Fs
bChuYW1lKSA9PT0gb2JqZWN0VHlwZSkgeworICAgICAgaWYgKGZuKSB7IHRocm93IG5ldyBFeGNl
cHRpb24oJ0FyZyBub3Qgc3VwcG9ydGVkIHdpdGggbXVsdGlwbGUgZGVjb3JhdG9ycycpOyB9Cisg
ICAgICBleHRlbmQodGhpcy5kZWNvcmF0b3JzLCBuYW1lKTsKKyAgICB9IGVsc2UgeworICAgICAg
dGhpcy5kZWNvcmF0b3JzW25hbWVdID0gZm47CisgICAgfQorICB9LAorICB1bnJlZ2lzdGVyRGVj
b3JhdG9yOiBmdW5jdGlvbihuYW1lKSB7CisgICAgZGVsZXRlIHRoaXMuZGVjb3JhdG9yc1tuYW1l
XTsKKyAgfQorfTsKKworZXhwb3J0IGxldCBsb2cgPSBsb2dnZXIubG9nOworCitleHBvcnQge2Ny
ZWF0ZUZyYW1lLCBsb2dnZXJ9OwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVf
bW9kdWxlcy9oYW5kbGViYXJzL2xpYi9oYW5kbGViYXJzL2NvbXBpbGVyL2FzdC5qcyBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9saWIvaGFuZGxlYmFycy9jb21w
aWxlci9hc3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTY5OTU2OWJhODZhNTU3ZGE1ZDdjYmNmNjM4NGM2NjJm
MDQ3NzMwZgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVs
ZXMvaGFuZGxlYmFycy9saWIvaGFuZGxlYmFycy9jb21waWxlci9hc3QuanMKQEAgLTAsMCArMSwy
OCBAQAorbGV0IEFTVCA9IHsKKyAgLy8gUHVibGljIEFQSSB1c2VkIHRvIGV2YWx1YXRlIGRlcml2
ZWQgYXR0cmlidXRlcyByZWdhcmRpbmcgQVNUIG5vZGVzCisgIGhlbHBlcnM6IHsKKyAgICAvLyBh
IG11c3RhY2hlIGlzIGRlZmluaXRlbHkgYSBoZWxwZXIgaWY6CisgICAgLy8gKiBpdCBpcyBhbiBl
bGlnaWJsZSBoZWxwZXIsIGFuZAorICAgIC8vICogaXQgaGFzIGF0IGxlYXN0IG9uZSBwYXJhbWV0
ZXIgb3IgaGFzaCBzZWdtZW50CisgICAgaGVscGVyRXhwcmVzc2lvbjogZnVuY3Rpb24obm9kZSkg
eworICAgICAgcmV0dXJuIChub2RlLnR5cGUgPT09ICdTdWJFeHByZXNzaW9uJykKKyAgICAgICAg
ICB8fCAoKG5vZGUudHlwZSA9PT0gJ011c3RhY2hlU3RhdGVtZW50JyB8fCBub2RlLnR5cGUgPT09
ICdCbG9ja1N0YXRlbWVudCcpCisgICAgICAgICAgICAmJiAhISgobm9kZS5wYXJhbXMgJiYgbm9k
ZS5wYXJhbXMubGVuZ3RoKSB8fCBub2RlLmhhc2gpKTsKKyAgICB9LAorCisgICAgc2NvcGVkSWQ6
IGZ1bmN0aW9uKHBhdGgpIHsKKyAgICAgIHJldHVybiAoL15cLnx0aGlzXGIvKS50ZXN0KHBhdGgu
b3JpZ2luYWwpOworICAgIH0sCisKKyAgICAvLyBhbiBJRCBpcyBzaW1wbGUgaWYgaXQgb25seSBo
YXMgb25lIHBhcnQsIGFuZCB0aGF0IHBhcnQgaXMgbm90CisgICAgLy8gYC4uYCBvciBgdGhpc2Au
CisgICAgc2ltcGxlSWQ6IGZ1bmN0aW9uKHBhdGgpIHsKKyAgICAgIHJldHVybiBwYXRoLnBhcnRz
Lmxlbmd0aCA9PT0gMSAmJiAhQVNULmhlbHBlcnMuc2NvcGVkSWQocGF0aCkgJiYgIXBhdGguZGVw
dGg7CisgICAgfQorICB9Cit9OworCisKKy8vIE11c3QgYmUgZXhwb3J0ZWQgYXMgYW4gb2JqZWN0
IHJhdGhlciB0aGFuIHRoZSByb290IG9mIHRoZSBtb2R1bGUgYXMgdGhlIGppc29uIGxleGVyCisv
LyBtdXN0IG1vZGlmeSB0aGUgb2JqZWN0IHRvIG9wZXJhdGUgcHJvcGVybHkuCitleHBvcnQgZGVm
YXVsdCBBU1Q7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hh
bmRsZWJhcnMvbGliL2hhbmRsZWJhcnMvY29tcGlsZXIvYmFzZS5qcyBiL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2px
dWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9saWIvaGFuZGxlYmFycy9jb21waWxlci9iYXNl
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmM2ODcxZDM5OWYzYjk4MzA0ZDU2YjliOTU3MjUyZGJlZTdhM2E3N2IK
LS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRs
ZWJhcnMvbGliL2hhbmRsZWJhcnMvY29tcGlsZXIvYmFzZS5qcwpAQCAtMCwwICsxLDI0IEBACitp
bXBvcnQgcGFyc2VyIGZyb20gJy4vcGFyc2VyJzsKK2ltcG9ydCBXaGl0ZXNwYWNlQ29udHJvbCBm
cm9tICcuL3doaXRlc3BhY2UtY29udHJvbCc7CitpbXBvcnQgKiBhcyBIZWxwZXJzIGZyb20gJy4v
aGVscGVycyc7CitpbXBvcnQgeyBleHRlbmQgfSBmcm9tICcuLi91dGlscyc7CisKK2V4cG9ydCB7
IHBhcnNlciB9OworCitsZXQgeXkgPSB7fTsKK2V4dGVuZCh5eSwgSGVscGVycyk7CisKK2V4cG9y
dCBmdW5jdGlvbiBwYXJzZShpbnB1dCwgb3B0aW9ucykgeworICAvLyBKdXN0IHJldHVybiBpZiBh
biBhbHJlYWR5LWNvbXBpbGVkIEFTVCB3YXMgcGFzc2VkIGluLgorICBpZiAoaW5wdXQudHlwZSA9
PT0gJ1Byb2dyYW0nKSB7IHJldHVybiBpbnB1dDsgfQorCisgIHBhcnNlci55eSA9IHl5OworCisg
IC8vIEFsdGVyaW5nIHRoZSBzaGFyZWQgb2JqZWN0IGhlcmUsIGJ1dCB0aGlzIGlzIG9rIGFzIHBh
cnNlciBpcyBhIHN5bmMgb3BlcmF0aW9uCisgIHl5LmxvY0luZm8gPSBmdW5jdGlvbihsb2NJbmZv
KSB7CisgICAgcmV0dXJuIG5ldyB5eS5Tb3VyY2VMb2NhdGlvbihvcHRpb25zICYmIG9wdGlvbnMu
c3JjTmFtZSwgbG9jSW5mbyk7CisgIH07CisKKyAgbGV0IHN0cmlwID0gbmV3IFdoaXRlc3BhY2VD
b250cm9sKG9wdGlvbnMpOworICByZXR1cm4gc3RyaXAuYWNjZXB0KHBhcnNlci5wYXJzZShpbnB1
dCkpOworfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5k
bGViYXJzL2xpYi9oYW5kbGViYXJzL2NvbXBpbGVyL2NvZGUtZ2VuLmpzIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
anF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2xpYi9oYW5kbGViYXJzL2NvbXBpbGVyL2Nv
ZGUtZ2VuLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVlYzA1MmY3NzVhMzNjOWE0ODFjMWE0YTYzZjE4NTRiYzZh
OWYwMjkKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVz
L2hhbmRsZWJhcnMvbGliL2hhbmRsZWJhcnMvY29tcGlsZXIvY29kZS1nZW4uanMKQEAgLTAsMCAr
MSwxNjggQEAKKy8qIGdsb2JhbCBkZWZpbmUgKi8KK2ltcG9ydCB7aXNBcnJheX0gZnJvbSAnLi4v
dXRpbHMnOworCitsZXQgU291cmNlTm9kZTsKKwordHJ5IHsKKyAgLyogaXN0YW5idWwgaWdub3Jl
IG5leHQgKi8KKyAgaWYgKHR5cGVvZiBkZWZpbmUgIT09ICdmdW5jdGlvbicgfHwgIWRlZmluZS5h
bWQpIHsKKyAgICAvLyBXZSBkb24ndCBzdXBwb3J0IHRoaXMgaW4gQU1EIGVudmlyb25tZW50cy4g
Rm9yIHRoZXNlIGVudmlyb25tZW50cywgd2UgYXN1c21lIHRoYXQKKyAgICAvLyB0aGV5IGFyZSBy
dW5uaW5nIG9uIHRoZSBicm93c2VyIGFuZCB0aHVzIGhhdmUgbm8gbmVlZCBmb3IgdGhlIHNvdXJj
ZS1tYXAgbGlicmFyeS4KKyAgICBsZXQgU291cmNlTWFwID0gcmVxdWlyZSgnc291cmNlLW1hcCcp
OworICAgIFNvdXJjZU5vZGUgPSBTb3VyY2VNYXAuU291cmNlTm9kZTsKKyAgfQorfSBjYXRjaCAo
ZXJyKSB7CisgIC8qIE5PUCAqLworfQorCisvKiBpc3RhbmJ1bCBpZ25vcmUgaWY6IHRlc3RlZCBi
dXQgbm90IGNvdmVyZWQgaW4gaXN0YW5idWwgZHVlIHRvIGRpc3QgYnVpbGQgICovCitpZiAoIVNv
dXJjZU5vZGUpIHsKKyAgU291cmNlTm9kZSA9IGZ1bmN0aW9uKGxpbmUsIGNvbHVtbiwgc3JjRmls
ZSwgY2h1bmtzKSB7CisgICAgdGhpcy5zcmMgPSAnJzsKKyAgICBpZiAoY2h1bmtzKSB7CisgICAg
ICB0aGlzLmFkZChjaHVua3MpOworICAgIH0KKyAgfTsKKyAgLyogaXN0YW5idWwgaWdub3JlIG5l
eHQgKi8KKyAgU291cmNlTm9kZS5wcm90b3R5cGUgPSB7CisgICAgYWRkOiBmdW5jdGlvbihjaHVu
a3MpIHsKKyAgICAgIGlmIChpc0FycmF5KGNodW5rcykpIHsKKyAgICAgICAgY2h1bmtzID0gY2h1
bmtzLmpvaW4oJycpOworICAgICAgfQorICAgICAgdGhpcy5zcmMgKz0gY2h1bmtzOworICAgIH0s
CisgICAgcHJlcGVuZDogZnVuY3Rpb24oY2h1bmtzKSB7CisgICAgICBpZiAoaXNBcnJheShjaHVu
a3MpKSB7CisgICAgICAgIGNodW5rcyA9IGNodW5rcy5qb2luKCcnKTsKKyAgICAgIH0KKyAgICAg
IHRoaXMuc3JjID0gY2h1bmtzICsgdGhpcy5zcmM7CisgICAgfSwKKyAgICB0b1N0cmluZ1dpdGhT
b3VyY2VNYXA6IGZ1bmN0aW9uKCkgeworICAgICAgcmV0dXJuIHtjb2RlOiB0aGlzLnRvU3RyaW5n
KCl9OworICAgIH0sCisgICAgdG9TdHJpbmc6IGZ1bmN0aW9uKCkgeworICAgICAgcmV0dXJuIHRo
aXMuc3JjOworICAgIH0KKyAgfTsKK30KKworCitmdW5jdGlvbiBjYXN0Q2h1bmsoY2h1bmssIGNv
ZGVHZW4sIGxvYykgeworICBpZiAoaXNBcnJheShjaHVuaykpIHsKKyAgICBsZXQgcmV0ID0gW107
CisKKyAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gY2h1bmsubGVuZ3RoOyBpIDwgbGVuOyBpKysp
IHsKKyAgICAgIHJldC5wdXNoKGNvZGVHZW4ud3JhcChjaHVua1tpXSwgbG9jKSk7CisgICAgfQor
ICAgIHJldHVybiByZXQ7CisgIH0gZWxzZSBpZiAodHlwZW9mIGNodW5rID09PSAnYm9vbGVhbicg
fHwgdHlwZW9mIGNodW5rID09PSAnbnVtYmVyJykgeworICAgIC8vIEhhbmRsZSBwcmltaXRpdmVz
IHRoYXQgdGhlIFNvdXJjZU5vZGUgd2lsbCB0aHJvdyB1cCBvbgorICAgIHJldHVybiBjaHVuayAr
ICcnOworICB9CisgIHJldHVybiBjaHVuazsKK30KKworCitmdW5jdGlvbiBDb2RlR2VuKHNyY0Zp
bGUpIHsKKyAgdGhpcy5zcmNGaWxlID0gc3JjRmlsZTsKKyAgdGhpcy5zb3VyY2UgPSBbXTsKK30K
KworQ29kZUdlbi5wcm90b3R5cGUgPSB7CisgIGlzRW1wdHkoKSB7CisgICAgcmV0dXJuICF0aGlz
LnNvdXJjZS5sZW5ndGg7CisgIH0sCisgIHByZXBlbmQ6IGZ1bmN0aW9uKHNvdXJjZSwgbG9jKSB7
CisgICAgdGhpcy5zb3VyY2UudW5zaGlmdCh0aGlzLndyYXAoc291cmNlLCBsb2MpKTsKKyAgfSwK
KyAgcHVzaDogZnVuY3Rpb24oc291cmNlLCBsb2MpIHsKKyAgICB0aGlzLnNvdXJjZS5wdXNoKHRo
aXMud3JhcChzb3VyY2UsIGxvYykpOworICB9LAorCisgIG1lcmdlOiBmdW5jdGlvbigpIHsKKyAg
ICBsZXQgc291cmNlID0gdGhpcy5lbXB0eSgpOworICAgIHRoaXMuZWFjaChmdW5jdGlvbihsaW5l
KSB7CisgICAgICBzb3VyY2UuYWRkKFsnICAnLCBsaW5lLCAnXG4nXSk7CisgICAgfSk7CisgICAg
cmV0dXJuIHNvdXJjZTsKKyAgfSwKKworICBlYWNoOiBmdW5jdGlvbihpdGVyKSB7CisgICAgZm9y
IChsZXQgaSA9IDAsIGxlbiA9IHRoaXMuc291cmNlLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7Cisg
ICAgICBpdGVyKHRoaXMuc291cmNlW2ldKTsKKyAgICB9CisgIH0sCisKKyAgZW1wdHk6IGZ1bmN0
aW9uKCkgeworICAgIGxldCBsb2MgPSB0aGlzLmN1cnJlbnRMb2NhdGlvbiB8fCB7c3RhcnQ6IHt9
fTsKKyAgICByZXR1cm4gbmV3IFNvdXJjZU5vZGUobG9jLnN0YXJ0LmxpbmUsIGxvYy5zdGFydC5j
b2x1bW4sIHRoaXMuc3JjRmlsZSk7CisgIH0sCisgIHdyYXA6IGZ1bmN0aW9uKGNodW5rLCBsb2Mg
PSB0aGlzLmN1cnJlbnRMb2NhdGlvbiB8fCB7c3RhcnQ6IHt9fSkgeworICAgIGlmIChjaHVuayBp
bnN0YW5jZW9mIFNvdXJjZU5vZGUpIHsKKyAgICAgIHJldHVybiBjaHVuazsKKyAgICB9CisKKyAg
ICBjaHVuayA9IGNhc3RDaHVuayhjaHVuaywgdGhpcywgbG9jKTsKKworICAgIHJldHVybiBuZXcg
U291cmNlTm9kZShsb2Muc3RhcnQubGluZSwgbG9jLnN0YXJ0LmNvbHVtbiwgdGhpcy5zcmNGaWxl
LCBjaHVuayk7CisgIH0sCisKKyAgZnVuY3Rpb25DYWxsOiBmdW5jdGlvbihmbiwgdHlwZSwgcGFy
YW1zKSB7CisgICAgcGFyYW1zID0gdGhpcy5nZW5lcmF0ZUxpc3QocGFyYW1zKTsKKyAgICByZXR1
cm4gdGhpcy53cmFwKFtmbiwgdHlwZSA/ICcuJyArIHR5cGUgKyAnKCcgOiAnKCcsIHBhcmFtcywg
JyknXSk7CisgIH0sCisKKyAgcXVvdGVkU3RyaW5nOiBmdW5jdGlvbihzdHIpIHsKKyAgICByZXR1
cm4gJyInICsgKHN0ciArICcnKQorICAgICAgLnJlcGxhY2UoL1xcL2csICdcXFxcJykKKyAgICAg
IC5yZXBsYWNlKC8iL2csICdcXCInKQorICAgICAgLnJlcGxhY2UoL1xuL2csICdcXG4nKQorICAg
ICAgLnJlcGxhY2UoL1xyL2csICdcXHInKQorICAgICAgLnJlcGxhY2UoL1x1MjAyOC9nLCAnXFx1
MjAyOCcpICAgLy8gUGVyIEVjbWEtMjYyIDcuMyArIDcuOC40CisgICAgICAucmVwbGFjZSgvXHUy
MDI5L2csICdcXHUyMDI5JykgKyAnIic7CisgIH0sCisKKyAgb2JqZWN0TGl0ZXJhbDogZnVuY3Rp
b24ob2JqKSB7CisgICAgbGV0IHBhaXJzID0gW107CisKKyAgICBmb3IgKGxldCBrZXkgaW4gb2Jq
KSB7CisgICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KGtleSkpIHsKKyAgICAgICAgbGV0IHZh
bHVlID0gY2FzdENodW5rKG9ialtrZXldLCB0aGlzKTsKKyAgICAgICAgaWYgKHZhbHVlICE9PSAn
dW5kZWZpbmVkJykgeworICAgICAgICAgIHBhaXJzLnB1c2goW3RoaXMucXVvdGVkU3RyaW5nKGtl
eSksICc6JywgdmFsdWVdKTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKworICAgIGxldCBy
ZXQgPSB0aGlzLmdlbmVyYXRlTGlzdChwYWlycyk7CisgICAgcmV0LnByZXBlbmQoJ3snKTsKKyAg
ICByZXQuYWRkKCd9Jyk7CisgICAgcmV0dXJuIHJldDsKKyAgfSwKKworCisgIGdlbmVyYXRlTGlz
dDogZnVuY3Rpb24oZW50cmllcykgeworICAgIGxldCByZXQgPSB0aGlzLmVtcHR5KCk7CisKKyAg
ICBmb3IgKGxldCBpID0gMCwgbGVuID0gZW50cmllcy5sZW5ndGg7IGkgPCBsZW47IGkrKykgewor
ICAgICAgaWYgKGkpIHsKKyAgICAgICAgcmV0LmFkZCgnLCcpOworICAgICAgfQorCisgICAgICBy
ZXQuYWRkKGNhc3RDaHVuayhlbnRyaWVzW2ldLCB0aGlzKSk7CisgICAgfQorCisgICAgcmV0dXJu
IHJldDsKKyAgfSwKKworICBnZW5lcmF0ZUFycmF5OiBmdW5jdGlvbihlbnRyaWVzKSB7CisgICAg
bGV0IHJldCA9IHRoaXMuZ2VuZXJhdGVMaXN0KGVudHJpZXMpOworICAgIHJldC5wcmVwZW5kKCdb
Jyk7CisgICAgcmV0LmFkZCgnXScpOworCisgICAgcmV0dXJuIHJldDsKKyAgfQorfTsKKworZXhw
b3J0IGRlZmF1bHQgQ29kZUdlbjsKKwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25v
ZGVfbW9kdWxlcy9oYW5kbGViYXJzL2xpYi9oYW5kbGViYXJzL2NvbXBpbGVyL2NvbXBpbGVyLmpz
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2xpYi9oYW5kbGVi
YXJzL2NvbXBpbGVyL2NvbXBpbGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk4N2QwZDQ1OTRmMTdmM2MwNDI0
YTIyNjkzMWZiZGNmMmZkZWU5M2EKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVl
cnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvbGliL2hhbmRsZWJhcnMvY29tcGlsZXIvY29tcGls
ZXIuanMKQEAgLTAsMCArMSw1NTggQEAKKy8qIGVzbGludC1kaXNhYmxlIG5ldy1jYXAgKi8KKwor
aW1wb3J0IEV4Y2VwdGlvbiBmcm9tICcuLi9leGNlcHRpb24nOworaW1wb3J0IHtpc0FycmF5LCBp
bmRleE9mfSBmcm9tICcuLi91dGlscyc7CitpbXBvcnQgQVNUIGZyb20gJy4vYXN0JzsKKworY29u
c3Qgc2xpY2UgPSBbXS5zbGljZTsKKworZXhwb3J0IGZ1bmN0aW9uIENvbXBpbGVyKCkge30KKwor
Ly8gdGhlIGZvdW5kSGVscGVyIHJlZ2lzdGVyIHdpbGwgZGlzYW1iaWd1YXRlIGhlbHBlciBsb29r
dXAgZnJvbSBmaW5kaW5nIGEKKy8vIGZ1bmN0aW9uIGluIGEgY29udGV4dC4gVGhpcyBpcyBuZWNl
c3NhcnkgZm9yIG11c3RhY2hlIGNvbXBhdGliaWxpdHksIHdoaWNoCisvLyByZXF1aXJlcyB0aGF0
IGNvbnRleHQgZnVuY3Rpb25zIGluIGJsb2NrcyBhcmUgZXZhbHVhdGVkIGJ5IGJsb2NrSGVscGVy
TWlzc2luZywKKy8vIGFuZCB0aGVuIHByb2NlZWQgYXMgaWYgdGhlIHJlc3VsdGluZyB2YWx1ZSB3
YXMgcHJvdmlkZWQgdG8gYmxvY2tIZWxwZXJNaXNzaW5nLgorCitDb21waWxlci5wcm90b3R5cGUg
PSB7CisgIGNvbXBpbGVyOiBDb21waWxlciwKKworICBlcXVhbHM6IGZ1bmN0aW9uKG90aGVyKSB7
CisgICAgbGV0IGxlbiA9IHRoaXMub3Bjb2Rlcy5sZW5ndGg7CisgICAgaWYgKG90aGVyLm9wY29k
ZXMubGVuZ3RoICE9PSBsZW4pIHsKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBm
b3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICBsZXQgb3Bjb2RlID0gdGhpcy5v
cGNvZGVzW2ldLAorICAgICAgICAgIG90aGVyT3Bjb2RlID0gb3RoZXIub3Bjb2Rlc1tpXTsKKyAg
ICAgIGlmIChvcGNvZGUub3Bjb2RlICE9PSBvdGhlck9wY29kZS5vcGNvZGUgfHwgIWFyZ0VxdWFs
cyhvcGNvZGUuYXJncywgb3RoZXJPcGNvZGUuYXJncykpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgfQorICAgIH0KKworICAgIC8vIFdlIGtub3cgdGhhdCBsZW5ndGggaXMgdGhlIHNh
bWUgYmV0d2VlbiB0aGUgdHdvIGFycmF5cyBiZWNhdXNlIHRoZXkgYXJlIGRpcmVjdGx5IHRpZWQK
KyAgICAvLyB0byB0aGUgb3Bjb2RlIGJlaGF2aW9yIGFib3ZlLgorICAgIGxlbiA9IHRoaXMuY2hp
bGRyZW4ubGVuZ3RoOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAg
IGlmICghdGhpcy5jaGlsZHJlbltpXS5lcXVhbHMob3RoZXIuY2hpbGRyZW5baV0pKSB7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKKyAg
fSwKKworICBndWlkOiAwLAorCisgIGNvbXBpbGU6IGZ1bmN0aW9uKHByb2dyYW0sIG9wdGlvbnMp
IHsKKyAgICB0aGlzLnNvdXJjZU5vZGUgPSBbXTsKKyAgICB0aGlzLm9wY29kZXMgPSBbXTsKKyAg
ICB0aGlzLmNoaWxkcmVuID0gW107CisgICAgdGhpcy5vcHRpb25zID0gb3B0aW9uczsKKyAgICB0
aGlzLnN0cmluZ1BhcmFtcyA9IG9wdGlvbnMuc3RyaW5nUGFyYW1zOworICAgIHRoaXMudHJhY2tJ
ZHMgPSBvcHRpb25zLnRyYWNrSWRzOworCisgICAgb3B0aW9ucy5ibG9ja1BhcmFtcyA9IG9wdGlv
bnMuYmxvY2tQYXJhbXMgfHwgW107CisKKyAgICAvLyBUaGVzZSBjaGFuZ2VzIHdpbGwgcHJvcGFn
YXRlIHRvIHRoZSBvdGhlciBjb21waWxlciBjb21wb25lbnRzCisgICAgbGV0IGtub3duSGVscGVy
cyA9IG9wdGlvbnMua25vd25IZWxwZXJzOworICAgIG9wdGlvbnMua25vd25IZWxwZXJzID0gewor
ICAgICAgJ2hlbHBlck1pc3NpbmcnOiB0cnVlLAorICAgICAgJ2Jsb2NrSGVscGVyTWlzc2luZyc6
IHRydWUsCisgICAgICAnZWFjaCc6IHRydWUsCisgICAgICAnaWYnOiB0cnVlLAorICAgICAgJ3Vu
bGVzcyc6IHRydWUsCisgICAgICAnd2l0aCc6IHRydWUsCisgICAgICAnbG9nJzogdHJ1ZSwKKyAg
ICAgICdsb29rdXAnOiB0cnVlCisgICAgfTsKKyAgICBpZiAoa25vd25IZWxwZXJzKSB7CisgICAg
ICBmb3IgKGxldCBuYW1lIGluIGtub3duSGVscGVycykgeworICAgICAgICAvKiBpc3RhbmJ1bCBp
Z25vcmUgZWxzZSAqLworICAgICAgICBpZiAobmFtZSBpbiBrbm93bkhlbHBlcnMpIHsKKyAgICAg
ICAgICBvcHRpb25zLmtub3duSGVscGVyc1tuYW1lXSA9IGtub3duSGVscGVyc1tuYW1lXTsKKyAg
ICAgICAgfQorICAgICAgfQorICAgIH0KKworICAgIHJldHVybiB0aGlzLmFjY2VwdChwcm9ncmFt
KTsKKyAgfSwKKworICBjb21waWxlUHJvZ3JhbTogZnVuY3Rpb24ocHJvZ3JhbSkgeworICAgIGxl
dCBjaGlsZENvbXBpbGVyID0gbmV3IHRoaXMuY29tcGlsZXIoKSwgLy8gZXNsaW50LWRpc2FibGUt
bGluZSBuZXctY2FwCisgICAgICAgIHJlc3VsdCA9IGNoaWxkQ29tcGlsZXIuY29tcGlsZShwcm9n
cmFtLCB0aGlzLm9wdGlvbnMpLAorICAgICAgICBndWlkID0gdGhpcy5ndWlkKys7CisKKyAgICB0
aGlzLnVzZVBhcnRpYWwgPSB0aGlzLnVzZVBhcnRpYWwgfHwgcmVzdWx0LnVzZVBhcnRpYWw7CisK
KyAgICB0aGlzLmNoaWxkcmVuW2d1aWRdID0gcmVzdWx0OworICAgIHRoaXMudXNlRGVwdGhzID0g
dGhpcy51c2VEZXB0aHMgfHwgcmVzdWx0LnVzZURlcHRoczsKKworICAgIHJldHVybiBndWlkOwor
ICB9LAorCisgIGFjY2VwdDogZnVuY3Rpb24obm9kZSkgeworICAgIC8qIGlzdGFuYnVsIGlnbm9y
ZSBuZXh0OiBTYW5pdHkgY29kZSAqLworICAgIGlmICghdGhpc1tub2RlLnR5cGVdKSB7CisgICAg
ICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdVbmtub3duIHR5cGU6ICcgKyBub2RlLnR5cGUsIG5vZGUp
OworICAgIH0KKworICAgIHRoaXMuc291cmNlTm9kZS51bnNoaWZ0KG5vZGUpOworICAgIGxldCBy
ZXQgPSB0aGlzW25vZGUudHlwZV0obm9kZSk7CisgICAgdGhpcy5zb3VyY2VOb2RlLnNoaWZ0KCk7
CisgICAgcmV0dXJuIHJldDsKKyAgfSwKKworICBQcm9ncmFtOiBmdW5jdGlvbihwcm9ncmFtKSB7
CisgICAgdGhpcy5vcHRpb25zLmJsb2NrUGFyYW1zLnVuc2hpZnQocHJvZ3JhbS5ibG9ja1BhcmFt
cyk7CisKKyAgICBsZXQgYm9keSA9IHByb2dyYW0uYm9keSwKKyAgICAgICAgYm9keUxlbmd0aCA9
IGJvZHkubGVuZ3RoOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYm9keUxlbmd0aDsgaSsrKSB7
CisgICAgICB0aGlzLmFjY2VwdChib2R5W2ldKTsKKyAgICB9CisKKyAgICB0aGlzLm9wdGlvbnMu
YmxvY2tQYXJhbXMuc2hpZnQoKTsKKworICAgIHRoaXMuaXNTaW1wbGUgPSBib2R5TGVuZ3RoID09
PSAxOworICAgIHRoaXMuYmxvY2tQYXJhbXMgPSBwcm9ncmFtLmJsb2NrUGFyYW1zID8gcHJvZ3Jh
bS5ibG9ja1BhcmFtcy5sZW5ndGggOiAwOworCisgICAgcmV0dXJuIHRoaXM7CisgIH0sCisKKyAg
QmxvY2tTdGF0ZW1lbnQ6IGZ1bmN0aW9uKGJsb2NrKSB7CisgICAgdHJhbnNmb3JtTGl0ZXJhbFRv
UGF0aChibG9jayk7CisKKyAgICBsZXQgcHJvZ3JhbSA9IGJsb2NrLnByb2dyYW0sCisgICAgICAg
IGludmVyc2UgPSBibG9jay5pbnZlcnNlOworCisgICAgcHJvZ3JhbSA9IHByb2dyYW0gJiYgdGhp
cy5jb21waWxlUHJvZ3JhbShwcm9ncmFtKTsKKyAgICBpbnZlcnNlID0gaW52ZXJzZSAmJiB0aGlz
LmNvbXBpbGVQcm9ncmFtKGludmVyc2UpOworCisgICAgbGV0IHR5cGUgPSB0aGlzLmNsYXNzaWZ5
U2V4cHIoYmxvY2spOworCisgICAgaWYgKHR5cGUgPT09ICdoZWxwZXInKSB7CisgICAgICB0aGlz
LmhlbHBlclNleHByKGJsb2NrLCBwcm9ncmFtLCBpbnZlcnNlKTsKKyAgICB9IGVsc2UgaWYgKHR5
cGUgPT09ICdzaW1wbGUnKSB7CisgICAgICB0aGlzLnNpbXBsZVNleHByKGJsb2NrKTsKKworICAg
ICAgLy8gbm93IHRoYXQgdGhlIHNpbXBsZSBtdXN0YWNoZSBpcyByZXNvbHZlZCwgd2UgbmVlZCB0
bworICAgICAgLy8gZXZhbHVhdGUgaXQgYnkgZXhlY3V0aW5nIGBibG9ja0hlbHBlck1pc3Npbmdg
CisgICAgICB0aGlzLm9wY29kZSgncHVzaFByb2dyYW0nLCBwcm9ncmFtKTsKKyAgICAgIHRoaXMu
b3Bjb2RlKCdwdXNoUHJvZ3JhbScsIGludmVyc2UpOworICAgICAgdGhpcy5vcGNvZGUoJ2VtcHR5
SGFzaCcpOworICAgICAgdGhpcy5vcGNvZGUoJ2Jsb2NrVmFsdWUnLCBibG9jay5wYXRoLm9yaWdp
bmFsKTsKKyAgICB9IGVsc2UgeworICAgICAgdGhpcy5hbWJpZ3VvdXNTZXhwcihibG9jaywgcHJv
Z3JhbSwgaW52ZXJzZSk7CisKKyAgICAgIC8vIG5vdyB0aGF0IHRoZSBzaW1wbGUgbXVzdGFjaGUg
aXMgcmVzb2x2ZWQsIHdlIG5lZWQgdG8KKyAgICAgIC8vIGV2YWx1YXRlIGl0IGJ5IGV4ZWN1dGlu
ZyBgYmxvY2tIZWxwZXJNaXNzaW5nYAorICAgICAgdGhpcy5vcGNvZGUoJ3B1c2hQcm9ncmFtJywg
cHJvZ3JhbSk7CisgICAgICB0aGlzLm9wY29kZSgncHVzaFByb2dyYW0nLCBpbnZlcnNlKTsKKyAg
ICAgIHRoaXMub3Bjb2RlKCdlbXB0eUhhc2gnKTsKKyAgICAgIHRoaXMub3Bjb2RlKCdhbWJpZ3Vv
dXNCbG9ja1ZhbHVlJyk7CisgICAgfQorCisgICAgdGhpcy5vcGNvZGUoJ2FwcGVuZCcpOworICB9
LAorCisgIERlY29yYXRvckJsb2NrKGRlY29yYXRvcikgeworICAgIGxldCBwcm9ncmFtID0gZGVj
b3JhdG9yLnByb2dyYW0gJiYgdGhpcy5jb21waWxlUHJvZ3JhbShkZWNvcmF0b3IucHJvZ3JhbSk7
CisgICAgbGV0IHBhcmFtcyA9IHRoaXMuc2V0dXBGdWxsTXVzdGFjaGVQYXJhbXMoZGVjb3JhdG9y
LCBwcm9ncmFtLCB1bmRlZmluZWQpLAorICAgICAgICBwYXRoID0gZGVjb3JhdG9yLnBhdGg7CisK
KyAgICB0aGlzLnVzZURlY29yYXRvcnMgPSB0cnVlOworICAgIHRoaXMub3Bjb2RlKCdyZWdpc3Rl
ckRlY29yYXRvcicsIHBhcmFtcy5sZW5ndGgsIHBhdGgub3JpZ2luYWwpOworICB9LAorCisgIFBh
cnRpYWxTdGF0ZW1lbnQ6IGZ1bmN0aW9uKHBhcnRpYWwpIHsKKyAgICB0aGlzLnVzZVBhcnRpYWwg
PSB0cnVlOworCisgICAgbGV0IHByb2dyYW0gPSBwYXJ0aWFsLnByb2dyYW07CisgICAgaWYgKHBy
b2dyYW0pIHsKKyAgICAgIHByb2dyYW0gPSB0aGlzLmNvbXBpbGVQcm9ncmFtKHBhcnRpYWwucHJv
Z3JhbSk7CisgICAgfQorCisgICAgbGV0IHBhcmFtcyA9IHBhcnRpYWwucGFyYW1zOworICAgIGlm
IChwYXJhbXMubGVuZ3RoID4gMSkgeworICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignVW5zdXBw
b3J0ZWQgbnVtYmVyIG9mIHBhcnRpYWwgYXJndW1lbnRzOiAnICsgcGFyYW1zLmxlbmd0aCwgcGFy
dGlhbCk7CisgICAgfSBlbHNlIGlmICghcGFyYW1zLmxlbmd0aCkgeworICAgICAgaWYgKHRoaXMu
b3B0aW9ucy5leHBsaWNpdFBhcnRpYWxDb250ZXh0KSB7CisgICAgICAgIHRoaXMub3Bjb2RlKCdw
dXNoTGl0ZXJhbCcsICd1bmRlZmluZWQnKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHBhcmFt
cy5wdXNoKHt0eXBlOiAnUGF0aEV4cHJlc3Npb24nLCBwYXJ0czogW10sIGRlcHRoOiAwfSk7Cisg
ICAgICB9CisgICAgfQorCisgICAgbGV0IHBhcnRpYWxOYW1lID0gcGFydGlhbC5uYW1lLm9yaWdp
bmFsLAorICAgICAgICBpc0R5bmFtaWMgPSBwYXJ0aWFsLm5hbWUudHlwZSA9PT0gJ1N1YkV4cHJl
c3Npb24nOworICAgIGlmIChpc0R5bmFtaWMpIHsKKyAgICAgIHRoaXMuYWNjZXB0KHBhcnRpYWwu
bmFtZSk7CisgICAgfQorCisgICAgdGhpcy5zZXR1cEZ1bGxNdXN0YWNoZVBhcmFtcyhwYXJ0aWFs
LCBwcm9ncmFtLCB1bmRlZmluZWQsIHRydWUpOworCisgICAgbGV0IGluZGVudCA9IHBhcnRpYWwu
aW5kZW50IHx8ICcnOworICAgIGlmICh0aGlzLm9wdGlvbnMucHJldmVudEluZGVudCAmJiBpbmRl
bnQpIHsKKyAgICAgIHRoaXMub3Bjb2RlKCdhcHBlbmRDb250ZW50JywgaW5kZW50KTsKKyAgICAg
IGluZGVudCA9ICcnOworICAgIH0KKworICAgIHRoaXMub3Bjb2RlKCdpbnZva2VQYXJ0aWFsJywg
aXNEeW5hbWljLCBwYXJ0aWFsTmFtZSwgaW5kZW50KTsKKyAgICB0aGlzLm9wY29kZSgnYXBwZW5k
Jyk7CisgIH0sCisgIFBhcnRpYWxCbG9ja1N0YXRlbWVudDogZnVuY3Rpb24ocGFydGlhbEJsb2Nr
KSB7CisgICAgdGhpcy5QYXJ0aWFsU3RhdGVtZW50KHBhcnRpYWxCbG9jayk7CisgIH0sCisKKyAg
TXVzdGFjaGVTdGF0ZW1lbnQ6IGZ1bmN0aW9uKG11c3RhY2hlKSB7CisgICAgdGhpcy5TdWJFeHBy
ZXNzaW9uKG11c3RhY2hlKTsKKworICAgIGlmIChtdXN0YWNoZS5lc2NhcGVkICYmICF0aGlzLm9w
dGlvbnMubm9Fc2NhcGUpIHsKKyAgICAgIHRoaXMub3Bjb2RlKCdhcHBlbmRFc2NhcGVkJyk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgIHRoaXMub3Bjb2RlKCdhcHBlbmQnKTsKKyAgICB9CisgIH0sCisg
IERlY29yYXRvcihkZWNvcmF0b3IpIHsKKyAgICB0aGlzLkRlY29yYXRvckJsb2NrKGRlY29yYXRv
cik7CisgIH0sCisKKworICBDb250ZW50U3RhdGVtZW50OiBmdW5jdGlvbihjb250ZW50KSB7Cisg
ICAgaWYgKGNvbnRlbnQudmFsdWUpIHsKKyAgICAgIHRoaXMub3Bjb2RlKCdhcHBlbmRDb250ZW50
JywgY29udGVudC52YWx1ZSk7CisgICAgfQorICB9LAorCisgIENvbW1lbnRTdGF0ZW1lbnQ6IGZ1
bmN0aW9uKCkge30sCisKKyAgU3ViRXhwcmVzc2lvbjogZnVuY3Rpb24oc2V4cHIpIHsKKyAgICB0
cmFuc2Zvcm1MaXRlcmFsVG9QYXRoKHNleHByKTsKKyAgICBsZXQgdHlwZSA9IHRoaXMuY2xhc3Np
ZnlTZXhwcihzZXhwcik7CisKKyAgICBpZiAodHlwZSA9PT0gJ3NpbXBsZScpIHsKKyAgICAgIHRo
aXMuc2ltcGxlU2V4cHIoc2V4cHIpOworICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2hlbHBlcicp
IHsKKyAgICAgIHRoaXMuaGVscGVyU2V4cHIoc2V4cHIpOworICAgIH0gZWxzZSB7CisgICAgICB0
aGlzLmFtYmlndW91c1NleHByKHNleHByKTsKKyAgICB9CisgIH0sCisgIGFtYmlndW91c1NleHBy
OiBmdW5jdGlvbihzZXhwciwgcHJvZ3JhbSwgaW52ZXJzZSkgeworICAgIGxldCBwYXRoID0gc2V4
cHIucGF0aCwKKyAgICAgICAgbmFtZSA9IHBhdGgucGFydHNbMF0sCisgICAgICAgIGlzQmxvY2sg
PSBwcm9ncmFtICE9IG51bGwgfHwgaW52ZXJzZSAhPSBudWxsOworCisgICAgdGhpcy5vcGNvZGUo
J2dldENvbnRleHQnLCBwYXRoLmRlcHRoKTsKKworICAgIHRoaXMub3Bjb2RlKCdwdXNoUHJvZ3Jh
bScsIHByb2dyYW0pOworICAgIHRoaXMub3Bjb2RlKCdwdXNoUHJvZ3JhbScsIGludmVyc2UpOwor
CisgICAgcGF0aC5zdHJpY3QgPSB0cnVlOworICAgIHRoaXMuYWNjZXB0KHBhdGgpOworCisgICAg
dGhpcy5vcGNvZGUoJ2ludm9rZUFtYmlndW91cycsIG5hbWUsIGlzQmxvY2spOworICB9LAorCisg
IHNpbXBsZVNleHByOiBmdW5jdGlvbihzZXhwcikgeworICAgIGxldCBwYXRoID0gc2V4cHIucGF0
aDsKKyAgICBwYXRoLnN0cmljdCA9IHRydWU7CisgICAgdGhpcy5hY2NlcHQocGF0aCk7CisgICAg
dGhpcy5vcGNvZGUoJ3Jlc29sdmVQb3NzaWJsZUxhbWJkYScpOworICB9LAorCisgIGhlbHBlclNl
eHByOiBmdW5jdGlvbihzZXhwciwgcHJvZ3JhbSwgaW52ZXJzZSkgeworICAgIGxldCBwYXJhbXMg
PSB0aGlzLnNldHVwRnVsbE11c3RhY2hlUGFyYW1zKHNleHByLCBwcm9ncmFtLCBpbnZlcnNlKSwK
KyAgICAgICAgcGF0aCA9IHNleHByLnBhdGgsCisgICAgICAgIG5hbWUgPSBwYXRoLnBhcnRzWzBd
OworCisgICAgaWYgKHRoaXMub3B0aW9ucy5rbm93bkhlbHBlcnNbbmFtZV0pIHsKKyAgICAgIHRo
aXMub3Bjb2RlKCdpbnZva2VLbm93bkhlbHBlcicsIHBhcmFtcy5sZW5ndGgsIG5hbWUpOworICAg
IH0gZWxzZSBpZiAodGhpcy5vcHRpb25zLmtub3duSGVscGVyc09ubHkpIHsKKyAgICAgIHRocm93
IG5ldyBFeGNlcHRpb24oJ1lvdSBzcGVjaWZpZWQga25vd25IZWxwZXJzT25seSwgYnV0IHVzZWQg
dGhlIHVua25vd24gaGVscGVyICcgKyBuYW1lLCBzZXhwcik7CisgICAgfSBlbHNlIHsKKyAgICAg
IHBhdGguc3RyaWN0ID0gdHJ1ZTsKKyAgICAgIHBhdGguZmFsc3kgPSB0cnVlOworCisgICAgICB0
aGlzLmFjY2VwdChwYXRoKTsKKyAgICAgIHRoaXMub3Bjb2RlKCdpbnZva2VIZWxwZXInLCBwYXJh
bXMubGVuZ3RoLCBwYXRoLm9yaWdpbmFsLCBBU1QuaGVscGVycy5zaW1wbGVJZChwYXRoKSk7Cisg
ICAgfQorICB9LAorCisgIFBhdGhFeHByZXNzaW9uOiBmdW5jdGlvbihwYXRoKSB7CisgICAgdGhp
cy5hZGREZXB0aChwYXRoLmRlcHRoKTsKKyAgICB0aGlzLm9wY29kZSgnZ2V0Q29udGV4dCcsIHBh
dGguZGVwdGgpOworCisgICAgbGV0IG5hbWUgPSBwYXRoLnBhcnRzWzBdLAorICAgICAgICBzY29w
ZWQgPSBBU1QuaGVscGVycy5zY29wZWRJZChwYXRoKSwKKyAgICAgICAgYmxvY2tQYXJhbUlkID0g
IXBhdGguZGVwdGggJiYgIXNjb3BlZCAmJiB0aGlzLmJsb2NrUGFyYW1JbmRleChuYW1lKTsKKwor
ICAgIGlmIChibG9ja1BhcmFtSWQpIHsKKyAgICAgIHRoaXMub3Bjb2RlKCdsb29rdXBCbG9ja1Bh
cmFtJywgYmxvY2tQYXJhbUlkLCBwYXRoLnBhcnRzKTsKKyAgICB9IGVsc2UgaWYgKCFuYW1lKSB7
CisgICAgICAvLyBDb250ZXh0IHJlZmVyZW5jZSwgaS5lLiBge3tmb28gLn19YCBvciBge3tmb28g
Li59fWAKKyAgICAgIHRoaXMub3Bjb2RlKCdwdXNoQ29udGV4dCcpOworICAgIH0gZWxzZSBpZiAo
cGF0aC5kYXRhKSB7CisgICAgICB0aGlzLm9wdGlvbnMuZGF0YSA9IHRydWU7CisgICAgICB0aGlz
Lm9wY29kZSgnbG9va3VwRGF0YScsIHBhdGguZGVwdGgsIHBhdGgucGFydHMsIHBhdGguc3RyaWN0
KTsKKyAgICB9IGVsc2UgeworICAgICAgdGhpcy5vcGNvZGUoJ2xvb2t1cE9uQ29udGV4dCcsIHBh
dGgucGFydHMsIHBhdGguZmFsc3ksIHBhdGguc3RyaWN0LCBzY29wZWQpOworICAgIH0KKyAgfSwK
KworICBTdHJpbmdMaXRlcmFsOiBmdW5jdGlvbihzdHJpbmcpIHsKKyAgICB0aGlzLm9wY29kZSgn
cHVzaFN0cmluZycsIHN0cmluZy52YWx1ZSk7CisgIH0sCisKKyAgTnVtYmVyTGl0ZXJhbDogZnVu
Y3Rpb24obnVtYmVyKSB7CisgICAgdGhpcy5vcGNvZGUoJ3B1c2hMaXRlcmFsJywgbnVtYmVyLnZh
bHVlKTsKKyAgfSwKKworICBCb29sZWFuTGl0ZXJhbDogZnVuY3Rpb24oYm9vbCkgeworICAgIHRo
aXMub3Bjb2RlKCdwdXNoTGl0ZXJhbCcsIGJvb2wudmFsdWUpOworICB9LAorCisgIFVuZGVmaW5l
ZExpdGVyYWw6IGZ1bmN0aW9uKCkgeworICAgIHRoaXMub3Bjb2RlKCdwdXNoTGl0ZXJhbCcsICd1
bmRlZmluZWQnKTsKKyAgfSwKKworICBOdWxsTGl0ZXJhbDogZnVuY3Rpb24oKSB7CisgICAgdGhp
cy5vcGNvZGUoJ3B1c2hMaXRlcmFsJywgJ251bGwnKTsKKyAgfSwKKworICBIYXNoOiBmdW5jdGlv
bihoYXNoKSB7CisgICAgbGV0IHBhaXJzID0gaGFzaC5wYWlycywKKyAgICAgICAgaSA9IDAsCisg
ICAgICAgIGwgPSBwYWlycy5sZW5ndGg7CisKKyAgICB0aGlzLm9wY29kZSgncHVzaEhhc2gnKTsK
KworICAgIGZvciAoOyBpIDwgbDsgaSsrKSB7CisgICAgICB0aGlzLnB1c2hQYXJhbShwYWlyc1tp
XS52YWx1ZSk7CisgICAgfQorICAgIHdoaWxlIChpLS0pIHsKKyAgICAgIHRoaXMub3Bjb2RlKCdh
c3NpZ25Ub0hhc2gnLCBwYWlyc1tpXS5rZXkpOworICAgIH0KKyAgICB0aGlzLm9wY29kZSgncG9w
SGFzaCcpOworICB9LAorCisgIC8vIEhFTFBFUlMKKyAgb3Bjb2RlOiBmdW5jdGlvbihuYW1lKSB7
CisgICAgdGhpcy5vcGNvZGVzLnB1c2goeyBvcGNvZGU6IG5hbWUsIGFyZ3M6IHNsaWNlLmNhbGwo
YXJndW1lbnRzLCAxKSwgbG9jOiB0aGlzLnNvdXJjZU5vZGVbMF0ubG9jIH0pOworICB9LAorCisg
IGFkZERlcHRoOiBmdW5jdGlvbihkZXB0aCkgeworICAgIGlmICghZGVwdGgpIHsKKyAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICB0aGlzLnVzZURlcHRocyA9IHRydWU7CisgIH0sCisKKyAgY2xh
c3NpZnlTZXhwcjogZnVuY3Rpb24oc2V4cHIpIHsKKyAgICBsZXQgaXNTaW1wbGUgPSBBU1QuaGVs
cGVycy5zaW1wbGVJZChzZXhwci5wYXRoKTsKKworICAgIGxldCBpc0Jsb2NrUGFyYW0gPSBpc1Np
bXBsZSAmJiAhIXRoaXMuYmxvY2tQYXJhbUluZGV4KHNleHByLnBhdGgucGFydHNbMF0pOworCisg
ICAgLy8gYSBtdXN0YWNoZSBpcyBhbiBlbGlnaWJsZSBoZWxwZXIgaWY6CisgICAgLy8gKiBpdHMg
aWQgaXMgc2ltcGxlIChhIHNpbmdsZSBwYXJ0LCBub3QgYHRoaXNgIG9yIGAuLmApCisgICAgbGV0
IGlzSGVscGVyID0gIWlzQmxvY2tQYXJhbSAmJiBBU1QuaGVscGVycy5oZWxwZXJFeHByZXNzaW9u
KHNleHByKTsKKworICAgIC8vIGlmIGEgbXVzdGFjaGUgaXMgYW4gZWxpZ2libGUgaGVscGVyIGJ1
dCBub3QgYSBkZWZpbml0ZQorICAgIC8vIGhlbHBlciwgaXQgaXMgYW1iaWd1b3VzLCBhbmQgd2ls
bCBiZSByZXNvbHZlZCBpbiBhIGxhdGVyCisgICAgLy8gcGFzcyBvciBhdCBydW50aW1lLgorICAg
IGxldCBpc0VsaWdpYmxlID0gIWlzQmxvY2tQYXJhbSAmJiAoaXNIZWxwZXIgfHwgaXNTaW1wbGUp
OworCisgICAgLy8gaWYgYW1iaWd1b3VzLCB3ZSBjYW4gcG9zc2libHkgcmVzb2x2ZSB0aGUgYW1i
aWd1aXR5IG5vdworICAgIC8vIEFuIGVsaWdpYmxlIGhlbHBlciBpcyBvbmUgdGhhdCBkb2VzIG5v
dCBoYXZlIGEgY29tcGxleCBwYXRoLCBpLmUuIGB0aGlzLmZvb2AsIGAuLi9mb29gIGV0Yy4KKyAg
ICBpZiAoaXNFbGlnaWJsZSAmJiAhaXNIZWxwZXIpIHsKKyAgICAgIGxldCBuYW1lID0gc2V4cHIu
cGF0aC5wYXJ0c1swXSwKKyAgICAgICAgICBvcHRpb25zID0gdGhpcy5vcHRpb25zOworCisgICAg
ICBpZiAob3B0aW9ucy5rbm93bkhlbHBlcnNbbmFtZV0pIHsKKyAgICAgICAgaXNIZWxwZXIgPSB0
cnVlOworICAgICAgfSBlbHNlIGlmIChvcHRpb25zLmtub3duSGVscGVyc09ubHkpIHsKKyAgICAg
ICAgaXNFbGlnaWJsZSA9IGZhbHNlOworICAgICAgfQorICAgIH0KKworICAgIGlmIChpc0hlbHBl
cikgeworICAgICAgcmV0dXJuICdoZWxwZXInOworICAgIH0gZWxzZSBpZiAoaXNFbGlnaWJsZSkg
eworICAgICAgcmV0dXJuICdhbWJpZ3VvdXMnOworICAgIH0gZWxzZSB7CisgICAgICByZXR1cm4g
J3NpbXBsZSc7CisgICAgfQorICB9LAorCisgIHB1c2hQYXJhbXM6IGZ1bmN0aW9uKHBhcmFtcykg
eworICAgIGZvciAobGV0IGkgPSAwLCBsID0gcGFyYW1zLmxlbmd0aDsgaSA8IGw7IGkrKykgewor
ICAgICAgdGhpcy5wdXNoUGFyYW0ocGFyYW1zW2ldKTsKKyAgICB9CisgIH0sCisKKyAgcHVzaFBh
cmFtOiBmdW5jdGlvbih2YWwpIHsKKyAgICBsZXQgdmFsdWUgPSB2YWwudmFsdWUgIT0gbnVsbCA/
IHZhbC52YWx1ZSA6IHZhbC5vcmlnaW5hbCB8fCAnJzsKKworICAgIGlmICh0aGlzLnN0cmluZ1Bh
cmFtcykgeworICAgICAgaWYgKHZhbHVlLnJlcGxhY2UpIHsKKyAgICAgICAgdmFsdWUgPSB2YWx1
ZQorICAgICAgICAgICAgLnJlcGxhY2UoL14oXC4/XC5cLykqL2csICcnKQorICAgICAgICAgICAg
LnJlcGxhY2UoL1wvL2csICcuJyk7CisgICAgICB9CisKKyAgICAgIGlmICh2YWwuZGVwdGgpIHsK
KyAgICAgICAgdGhpcy5hZGREZXB0aCh2YWwuZGVwdGgpOworICAgICAgfQorICAgICAgdGhpcy5v
cGNvZGUoJ2dldENvbnRleHQnLCB2YWwuZGVwdGggfHwgMCk7CisgICAgICB0aGlzLm9wY29kZSgn
cHVzaFN0cmluZ1BhcmFtJywgdmFsdWUsIHZhbC50eXBlKTsKKworICAgICAgaWYgKHZhbC50eXBl
ID09PSAnU3ViRXhwcmVzc2lvbicpIHsKKyAgICAgICAgLy8gU3ViRXhwcmVzc2lvbnMgZ2V0IGV2
YWx1YXRlZCBhbmQgcGFzc2VkIGluCisgICAgICAgIC8vIGluIHN0cmluZyBwYXJhbXMgbW9kZS4K
KyAgICAgICAgdGhpcy5hY2NlcHQodmFsKTsKKyAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAg
aWYgKHRoaXMudHJhY2tJZHMpIHsKKyAgICAgICAgbGV0IGJsb2NrUGFyYW1JbmRleDsKKyAgICAg
ICAgaWYgKHZhbC5wYXJ0cyAmJiAhQVNULmhlbHBlcnMuc2NvcGVkSWQodmFsKSAmJiAhdmFsLmRl
cHRoKSB7CisgICAgICAgICAgIGJsb2NrUGFyYW1JbmRleCA9IHRoaXMuYmxvY2tQYXJhbUluZGV4
KHZhbC5wYXJ0c1swXSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGJsb2NrUGFyYW1JbmRleCkg
eworICAgICAgICAgIGxldCBibG9ja1BhcmFtQ2hpbGQgPSB2YWwucGFydHMuc2xpY2UoMSkuam9p
bignLicpOworICAgICAgICAgIHRoaXMub3Bjb2RlKCdwdXNoSWQnLCAnQmxvY2tQYXJhbScsIGJs
b2NrUGFyYW1JbmRleCwgYmxvY2tQYXJhbUNoaWxkKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICB2YWx1ZSA9IHZhbC5vcmlnaW5hbCB8fCB2YWx1ZTsKKyAgICAgICAgICBpZiAodmFsdWUu
cmVwbGFjZSkgeworICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZQorICAgICAgICAgICAgICAgIC5y
ZXBsYWNlKC9edGhpcyg/OlwufCQpLywgJycpCisgICAgICAgICAgICAgICAgLnJlcGxhY2UoL15c
LlwvLywgJycpCisgICAgICAgICAgICAgICAgLnJlcGxhY2UoL15cLiQvLCAnJyk7CisgICAgICAg
ICAgfQorCisgICAgICAgICAgdGhpcy5vcGNvZGUoJ3B1c2hJZCcsIHZhbC50eXBlLCB2YWx1ZSk7
CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIHRoaXMuYWNjZXB0KHZhbCk7CisgICAgfQorICB9
LAorCisgIHNldHVwRnVsbE11c3RhY2hlUGFyYW1zOiBmdW5jdGlvbihzZXhwciwgcHJvZ3JhbSwg
aW52ZXJzZSwgb21pdEVtcHR5KSB7CisgICAgbGV0IHBhcmFtcyA9IHNleHByLnBhcmFtczsKKyAg
ICB0aGlzLnB1c2hQYXJhbXMocGFyYW1zKTsKKworICAgIHRoaXMub3Bjb2RlKCdwdXNoUHJvZ3Jh
bScsIHByb2dyYW0pOworICAgIHRoaXMub3Bjb2RlKCdwdXNoUHJvZ3JhbScsIGludmVyc2UpOwor
CisgICAgaWYgKHNleHByLmhhc2gpIHsKKyAgICAgIHRoaXMuYWNjZXB0KHNleHByLmhhc2gpOwor
ICAgIH0gZWxzZSB7CisgICAgICB0aGlzLm9wY29kZSgnZW1wdHlIYXNoJywgb21pdEVtcHR5KTsK
KyAgICB9CisKKyAgICByZXR1cm4gcGFyYW1zOworICB9LAorCisgIGJsb2NrUGFyYW1JbmRleDog
ZnVuY3Rpb24obmFtZSkgeworICAgIGZvciAobGV0IGRlcHRoID0gMCwgbGVuID0gdGhpcy5vcHRp
b25zLmJsb2NrUGFyYW1zLmxlbmd0aDsgZGVwdGggPCBsZW47IGRlcHRoKyspIHsKKyAgICAgIGxl
dCBibG9ja1BhcmFtcyA9IHRoaXMub3B0aW9ucy5ibG9ja1BhcmFtc1tkZXB0aF0sCisgICAgICAg
ICAgcGFyYW0gPSBibG9ja1BhcmFtcyAmJiBpbmRleE9mKGJsb2NrUGFyYW1zLCBuYW1lKTsKKyAg
ICAgIGlmIChibG9ja1BhcmFtcyAmJiBwYXJhbSA+PSAwKSB7CisgICAgICAgIHJldHVybiBbZGVw
dGgsIHBhcmFtXTsKKyAgICAgIH0KKyAgICB9CisgIH0KK307CisKK2V4cG9ydCBmdW5jdGlvbiBw
cmVjb21waWxlKGlucHV0LCBvcHRpb25zLCBlbnYpIHsKKyAgaWYgKGlucHV0ID09IG51bGwgfHwg
KHR5cGVvZiBpbnB1dCAhPT0gJ3N0cmluZycgJiYgaW5wdXQudHlwZSAhPT0gJ1Byb2dyYW0nKSkg
eworICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ1lvdSBtdXN0IHBhc3MgYSBzdHJpbmcgb3IgSGFu
ZGxlYmFycyBBU1QgdG8gSGFuZGxlYmFycy5wcmVjb21waWxlLiBZb3UgcGFzc2VkICcgKyBpbnB1
dCk7CisgIH0KKworICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKKyAgaWYgKCEoJ2RhdGEnIGlu
IG9wdGlvbnMpKSB7CisgICAgb3B0aW9ucy5kYXRhID0gdHJ1ZTsKKyAgfQorICBpZiAob3B0aW9u
cy5jb21wYXQpIHsKKyAgICBvcHRpb25zLnVzZURlcHRocyA9IHRydWU7CisgIH0KKworICBsZXQg
YXN0ID0gZW52LnBhcnNlKGlucHV0LCBvcHRpb25zKSwKKyAgICAgIGVudmlyb25tZW50ID0gbmV3
IGVudi5Db21waWxlcigpLmNvbXBpbGUoYXN0LCBvcHRpb25zKTsKKyAgcmV0dXJuIG5ldyBlbnYu
SmF2YVNjcmlwdENvbXBpbGVyKCkuY29tcGlsZShlbnZpcm9ubWVudCwgb3B0aW9ucyk7Cit9CisK
K2V4cG9ydCBmdW5jdGlvbiBjb21waWxlKGlucHV0LCBvcHRpb25zID0ge30sIGVudikgeworICBp
ZiAoaW5wdXQgPT0gbnVsbCB8fCAodHlwZW9mIGlucHV0ICE9PSAnc3RyaW5nJyAmJiBpbnB1dC50
eXBlICE9PSAnUHJvZ3JhbScpKSB7CisgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignWW91IG11c3Qg
cGFzcyBhIHN0cmluZyBvciBIYW5kbGViYXJzIEFTVCB0byBIYW5kbGViYXJzLmNvbXBpbGUuIFlv
dSBwYXNzZWQgJyArIGlucHV0KTsKKyAgfQorCisgIGlmICghKCdkYXRhJyBpbiBvcHRpb25zKSkg
eworICAgIG9wdGlvbnMuZGF0YSA9IHRydWU7CisgIH0KKyAgaWYgKG9wdGlvbnMuY29tcGF0KSB7
CisgICAgb3B0aW9ucy51c2VEZXB0aHMgPSB0cnVlOworICB9CisKKyAgbGV0IGNvbXBpbGVkOwor
CisgIGZ1bmN0aW9uIGNvbXBpbGVJbnB1dCgpIHsKKyAgICBsZXQgYXN0ID0gZW52LnBhcnNlKGlu
cHV0LCBvcHRpb25zKSwKKyAgICAgICAgZW52aXJvbm1lbnQgPSBuZXcgZW52LkNvbXBpbGVyKCku
Y29tcGlsZShhc3QsIG9wdGlvbnMpLAorICAgICAgICB0ZW1wbGF0ZVNwZWMgPSBuZXcgZW52Lkph
dmFTY3JpcHRDb21waWxlcigpLmNvbXBpbGUoZW52aXJvbm1lbnQsIG9wdGlvbnMsIHVuZGVmaW5l
ZCwgdHJ1ZSk7CisgICAgcmV0dXJuIGVudi50ZW1wbGF0ZSh0ZW1wbGF0ZVNwZWMpOworICB9CisK
KyAgLy8gVGVtcGxhdGUgaXMgb25seSBjb21waWxlZCBvbiBmaXJzdCB1c2UgYW5kIGNhY2hlZCBh
ZnRlciB0aGF0IHBvaW50LgorICBmdW5jdGlvbiByZXQoY29udGV4dCwgZXhlY09wdGlvbnMpIHsK
KyAgICBpZiAoIWNvbXBpbGVkKSB7CisgICAgICBjb21waWxlZCA9IGNvbXBpbGVJbnB1dCgpOwor
ICAgIH0KKyAgICByZXR1cm4gY29tcGlsZWQuY2FsbCh0aGlzLCBjb250ZXh0LCBleGVjT3B0aW9u
cyk7CisgIH0KKyAgcmV0Ll9zZXR1cCA9IGZ1bmN0aW9uKHNldHVwT3B0aW9ucykgeworICAgIGlm
ICghY29tcGlsZWQpIHsKKyAgICAgIGNvbXBpbGVkID0gY29tcGlsZUlucHV0KCk7CisgICAgfQor
ICAgIHJldHVybiBjb21waWxlZC5fc2V0dXAoc2V0dXBPcHRpb25zKTsKKyAgfTsKKyAgcmV0Ll9j
aGlsZCA9IGZ1bmN0aW9uKGksIGRhdGEsIGJsb2NrUGFyYW1zLCBkZXB0aHMpIHsKKyAgICBpZiAo
IWNvbXBpbGVkKSB7CisgICAgICBjb21waWxlZCA9IGNvbXBpbGVJbnB1dCgpOworICAgIH0KKyAg
ICByZXR1cm4gY29tcGlsZWQuX2NoaWxkKGksIGRhdGEsIGJsb2NrUGFyYW1zLCBkZXB0aHMpOwor
ICB9OworICByZXR1cm4gcmV0OworfQorCitmdW5jdGlvbiBhcmdFcXVhbHMoYSwgYikgeworICBp
ZiAoYSA9PT0gYikgeworICAgIHJldHVybiB0cnVlOworICB9CisKKyAgaWYgKGlzQXJyYXkoYSkg
JiYgaXNBcnJheShiKSAmJiBhLmxlbmd0aCA9PT0gYi5sZW5ndGgpIHsKKyAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspIHsKKyAgICAgIGlmICghYXJnRXF1YWxzKGFbaV0sIGJb
aV0pKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJu
IHRydWU7CisgIH0KK30KKworZnVuY3Rpb24gdHJhbnNmb3JtTGl0ZXJhbFRvUGF0aChzZXhwcikg
eworICBpZiAoIXNleHByLnBhdGgucGFydHMpIHsKKyAgICBsZXQgbGl0ZXJhbCA9IHNleHByLnBh
dGg7CisgICAgLy8gQ2FzdGluZyB0byBzdHJpbmcgaGVyZSB0byBtYWtlIGZhbHNlIGFuZCAwIGxp
dGVyYWwgdmFsdWVzIHBsYXkgbmljZWx5IHdpdGggdGhlIHJlc3QKKyAgICAvLyBvZiB0aGUgc3lz
dGVtLgorICAgIHNleHByLnBhdGggPSB7CisgICAgICB0eXBlOiAnUGF0aEV4cHJlc3Npb24nLAor
ICAgICAgZGF0YTogZmFsc2UsCisgICAgICBkZXB0aDogMCwKKyAgICAgIHBhcnRzOiBbbGl0ZXJh
bC5vcmlnaW5hbCArICcnXSwKKyAgICAgIG9yaWdpbmFsOiBsaXRlcmFsLm9yaWdpbmFsICsgJycs
CisgICAgICBsb2M6IGxpdGVyYWwubG9jCisgICAgfTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2xpYi9oYW5kbGViYXJzL2Nv
bXBpbGVyL2hlbHBlcnMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRs
ZWJhcnMvbGliL2hhbmRsZWJhcnMvY29tcGlsZXIvaGVscGVycy5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMDlh
MDhkZjkzZTMyZTEzMzg0NGYxZWQzNGJhMzFhY2FiNjMwM2ZiCi0tLSAvZGV2L251bGwKKysrIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2xpYi9oYW5kbGViYXJz
L2NvbXBpbGVyL2hlbHBlcnMuanMKQEAgLTAsMCArMSwyMTIgQEAKK2ltcG9ydCBFeGNlcHRpb24g
ZnJvbSAnLi4vZXhjZXB0aW9uJzsKKworZnVuY3Rpb24gdmFsaWRhdGVDbG9zZShvcGVuLCBjbG9z
ZSkgeworICBjbG9zZSA9IGNsb3NlLnBhdGggPyBjbG9zZS5wYXRoLm9yaWdpbmFsIDogY2xvc2U7
CisKKyAgaWYgKG9wZW4ucGF0aC5vcmlnaW5hbCAhPT0gY2xvc2UpIHsKKyAgICBsZXQgZXJyb3JO
b2RlID0ge2xvYzogb3Blbi5wYXRoLmxvY307CisKKyAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKG9w
ZW4ucGF0aC5vcmlnaW5hbCArICIgZG9lc24ndCBtYXRjaCAiICsgY2xvc2UsIGVycm9yTm9kZSk7
CisgIH0KK30KKworZXhwb3J0IGZ1bmN0aW9uIFNvdXJjZUxvY2F0aW9uKHNvdXJjZSwgbG9jSW5m
bykgeworICB0aGlzLnNvdXJjZSA9IHNvdXJjZTsKKyAgdGhpcy5zdGFydCA9IHsKKyAgICBsaW5l
OiBsb2NJbmZvLmZpcnN0X2xpbmUsCisgICAgY29sdW1uOiBsb2NJbmZvLmZpcnN0X2NvbHVtbgor
ICB9OworICB0aGlzLmVuZCA9IHsKKyAgICBsaW5lOiBsb2NJbmZvLmxhc3RfbGluZSwKKyAgICBj
b2x1bW46IGxvY0luZm8ubGFzdF9jb2x1bW4KKyAgfTsKK30KKworZXhwb3J0IGZ1bmN0aW9uIGlk
KHRva2VuKSB7CisgIGlmICgvXlxbLipcXSQvLnRlc3QodG9rZW4pKSB7CisgICAgcmV0dXJuIHRv
a2VuLnN1YnN0cigxLCB0b2tlbi5sZW5ndGggLSAyKTsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4g
dG9rZW47CisgIH0KK30KKworZXhwb3J0IGZ1bmN0aW9uIHN0cmlwRmxhZ3Mob3BlbiwgY2xvc2Up
IHsKKyAgcmV0dXJuIHsKKyAgICBvcGVuOiBvcGVuLmNoYXJBdCgyKSA9PT0gJ34nLAorICAgIGNs
b3NlOiBjbG9zZS5jaGFyQXQoY2xvc2UubGVuZ3RoIC0gMykgPT09ICd+JworICB9OworfQorCitl
eHBvcnQgZnVuY3Rpb24gc3RyaXBDb21tZW50KGNvbW1lbnQpIHsKKyAgcmV0dXJuIGNvbW1lbnQu
cmVwbGFjZSgvXlx7XHt+P1whLT8tPy8sICcnKQorICAgICAgICAgICAgICAgIC5yZXBsYWNlKC8t
Py0/fj9cfVx9JC8sICcnKTsKK30KKworZXhwb3J0IGZ1bmN0aW9uIHByZXBhcmVQYXRoKGRhdGEs
IHBhcnRzLCBsb2MpIHsKKyAgbG9jID0gdGhpcy5sb2NJbmZvKGxvYyk7CisKKyAgbGV0IG9yaWdp
bmFsID0gZGF0YSA/ICdAJyA6ICcnLAorICAgICAgZGlnID0gW10sCisgICAgICBkZXB0aCA9IDAs
CisgICAgICBkZXB0aFN0cmluZyA9ICcnOworCisgIGZvciAobGV0IGkgPSAwLCBsID0gcGFydHMu
bGVuZ3RoOyBpIDwgbDsgaSsrKSB7CisgICAgbGV0IHBhcnQgPSBwYXJ0c1tpXS5wYXJ0LAorICAg
ICAgICAvLyBJZiB3ZSBoYXZlIFtdIHN5bnRheCB0aGVuIHdlIGRvIG5vdCB0cmVhdCBwYXRoIHJl
ZmVyZW5jZXMgYXMgb3BlcmF0b3JzLAorICAgICAgICAvLyBpLmUuIGZvby5bdGhpc10gcmVzb2x2
ZXMgdG8gYXBwcm94aW1hdGVseSBjb250ZXh0LmZvb1sndGhpcyddCisgICAgICAgIGlzTGl0ZXJh
bCA9IHBhcnRzW2ldLm9yaWdpbmFsICE9PSBwYXJ0OworICAgIG9yaWdpbmFsICs9IChwYXJ0c1tp
XS5zZXBhcmF0b3IgfHwgJycpICsgcGFydDsKKworICAgIGlmICghaXNMaXRlcmFsICYmIChwYXJ0
ID09PSAnLi4nIHx8IHBhcnQgPT09ICcuJyB8fCBwYXJ0ID09PSAndGhpcycpKSB7CisgICAgICBp
ZiAoZGlnLmxlbmd0aCA+IDApIHsKKyAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignSW52YWxp
ZCBwYXRoOiAnICsgb3JpZ2luYWwsIHtsb2N9KTsKKyAgICAgIH0gZWxzZSBpZiAocGFydCA9PT0g
Jy4uJykgeworICAgICAgICBkZXB0aCsrOworICAgICAgICBkZXB0aFN0cmluZyArPSAnLi4vJzsK
KyAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgZGlnLnB1c2gocGFydCk7CisgICAgfQorICB9
CisKKyAgcmV0dXJuIHsKKyAgICB0eXBlOiAnUGF0aEV4cHJlc3Npb24nLAorICAgIGRhdGEsCisg
ICAgZGVwdGgsCisgICAgcGFydHM6IGRpZywKKyAgICBvcmlnaW5hbCwKKyAgICBsb2MKKyAgfTsK
K30KKworZXhwb3J0IGZ1bmN0aW9uIHByZXBhcmVNdXN0YWNoZShwYXRoLCBwYXJhbXMsIGhhc2gs
IG9wZW4sIHN0cmlwLCBsb2NJbmZvKSB7CisgIC8vIE11c3QgdXNlIGNoYXJBdCB0byBzdXBwb3J0
IElFIHByZS0xMAorICBsZXQgZXNjYXBlRmxhZyA9IG9wZW4uY2hhckF0KDMpIHx8IG9wZW4uY2hh
ckF0KDIpLAorICAgICAgZXNjYXBlZCA9IGVzY2FwZUZsYWcgIT09ICd7JyAmJiBlc2NhcGVGbGFn
ICE9PSAnJic7CisKKyAgbGV0IGRlY29yYXRvciA9ICgvXCovLnRlc3Qob3BlbikpOworICByZXR1
cm4geworICAgIHR5cGU6IGRlY29yYXRvciA/ICdEZWNvcmF0b3InIDogJ011c3RhY2hlU3RhdGVt
ZW50JywKKyAgICBwYXRoLAorICAgIHBhcmFtcywKKyAgICBoYXNoLAorICAgIGVzY2FwZWQsCisg
ICAgc3RyaXAsCisgICAgbG9jOiB0aGlzLmxvY0luZm8obG9jSW5mbykKKyAgfTsKK30KKworZXhw
b3J0IGZ1bmN0aW9uIHByZXBhcmVSYXdCbG9jayhvcGVuUmF3QmxvY2ssIGNvbnRlbnRzLCBjbG9z
ZSwgbG9jSW5mbykgeworICB2YWxpZGF0ZUNsb3NlKG9wZW5SYXdCbG9jaywgY2xvc2UpOworCisg
IGxvY0luZm8gPSB0aGlzLmxvY0luZm8obG9jSW5mbyk7CisgIGxldCBwcm9ncmFtID0geworICAg
IHR5cGU6ICdQcm9ncmFtJywKKyAgICBib2R5OiBjb250ZW50cywKKyAgICBzdHJpcDoge30sCisg
ICAgbG9jOiBsb2NJbmZvCisgIH07CisKKyAgcmV0dXJuIHsKKyAgICB0eXBlOiAnQmxvY2tTdGF0
ZW1lbnQnLAorICAgIHBhdGg6IG9wZW5SYXdCbG9jay5wYXRoLAorICAgIHBhcmFtczogb3BlblJh
d0Jsb2NrLnBhcmFtcywKKyAgICBoYXNoOiBvcGVuUmF3QmxvY2suaGFzaCwKKyAgICBwcm9ncmFt
LAorICAgIG9wZW5TdHJpcDoge30sCisgICAgaW52ZXJzZVN0cmlwOiB7fSwKKyAgICBjbG9zZVN0
cmlwOiB7fSwKKyAgICBsb2M6IGxvY0luZm8KKyAgfTsKK30KKworZXhwb3J0IGZ1bmN0aW9uIHBy
ZXBhcmVCbG9jayhvcGVuQmxvY2ssIHByb2dyYW0sIGludmVyc2VBbmRQcm9ncmFtLCBjbG9zZSwg
aW52ZXJ0ZWQsIGxvY0luZm8pIHsKKyAgaWYgKGNsb3NlICYmIGNsb3NlLnBhdGgpIHsKKyAgICB2
YWxpZGF0ZUNsb3NlKG9wZW5CbG9jaywgY2xvc2UpOworICB9CisKKyAgbGV0IGRlY29yYXRvciA9
ICgvXCovLnRlc3Qob3BlbkJsb2NrLm9wZW4pKTsKKworICBwcm9ncmFtLmJsb2NrUGFyYW1zID0g
b3BlbkJsb2NrLmJsb2NrUGFyYW1zOworCisgIGxldCBpbnZlcnNlLAorICAgICAgaW52ZXJzZVN0
cmlwOworCisgIGlmIChpbnZlcnNlQW5kUHJvZ3JhbSkgeworICAgIGlmIChkZWNvcmF0b3IpIHsK
KyAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ1VuZXhwZWN0ZWQgaW52ZXJzZSBibG9jayBvbiBk
ZWNvcmF0b3InLCBpbnZlcnNlQW5kUHJvZ3JhbSk7CisgICAgfQorCisgICAgaWYgKGludmVyc2VB
bmRQcm9ncmFtLmNoYWluKSB7CisgICAgICBpbnZlcnNlQW5kUHJvZ3JhbS5wcm9ncmFtLmJvZHlb
MF0uY2xvc2VTdHJpcCA9IGNsb3NlLnN0cmlwOworICAgIH0KKworICAgIGludmVyc2VTdHJpcCA9
IGludmVyc2VBbmRQcm9ncmFtLnN0cmlwOworICAgIGludmVyc2UgPSBpbnZlcnNlQW5kUHJvZ3Jh
bS5wcm9ncmFtOworICB9CisKKyAgaWYgKGludmVydGVkKSB7CisgICAgaW52ZXJ0ZWQgPSBpbnZl
cnNlOworICAgIGludmVyc2UgPSBwcm9ncmFtOworICAgIHByb2dyYW0gPSBpbnZlcnRlZDsKKyAg
fQorCisgIHJldHVybiB7CisgICAgdHlwZTogZGVjb3JhdG9yID8gJ0RlY29yYXRvckJsb2NrJyA6
ICdCbG9ja1N0YXRlbWVudCcsCisgICAgcGF0aDogb3BlbkJsb2NrLnBhdGgsCisgICAgcGFyYW1z
OiBvcGVuQmxvY2sucGFyYW1zLAorICAgIGhhc2g6IG9wZW5CbG9jay5oYXNoLAorICAgIHByb2dy
YW0sCisgICAgaW52ZXJzZSwKKyAgICBvcGVuU3RyaXA6IG9wZW5CbG9jay5zdHJpcCwKKyAgICBp
bnZlcnNlU3RyaXAsCisgICAgY2xvc2VTdHJpcDogY2xvc2UgJiYgY2xvc2Uuc3RyaXAsCisgICAg
bG9jOiB0aGlzLmxvY0luZm8obG9jSW5mbykKKyAgfTsKK30KKworZXhwb3J0IGZ1bmN0aW9uIHBy
ZXBhcmVQcm9ncmFtKHN0YXRlbWVudHMsIGxvYykgeworICBpZiAoIWxvYyAmJiBzdGF0ZW1lbnRz
Lmxlbmd0aCkgeworICAgIGNvbnN0IGZpcnN0TG9jID0gc3RhdGVtZW50c1swXS5sb2MsCisgICAg
ICAgICAgbGFzdExvYyA9IHN0YXRlbWVudHNbc3RhdGVtZW50cy5sZW5ndGggLSAxXS5sb2M7CisK
KyAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqLworICAgIGlmIChmaXJzdExvYyAmJiBsYXN0
TG9jKSB7CisgICAgICBsb2MgPSB7CisgICAgICAgIHNvdXJjZTogZmlyc3RMb2Muc291cmNlLAor
ICAgICAgICBzdGFydDogeworICAgICAgICAgIGxpbmU6IGZpcnN0TG9jLnN0YXJ0LmxpbmUsCisg
ICAgICAgICAgY29sdW1uOiBmaXJzdExvYy5zdGFydC5jb2x1bW4KKyAgICAgICAgfSwKKyAgICAg
ICAgZW5kOiB7CisgICAgICAgICAgbGluZTogbGFzdExvYy5lbmQubGluZSwKKyAgICAgICAgICBj
b2x1bW46IGxhc3RMb2MuZW5kLmNvbHVtbgorICAgICAgICB9CisgICAgICB9OworICAgIH0KKyAg
fQorCisgIHJldHVybiB7CisgICAgdHlwZTogJ1Byb2dyYW0nLAorICAgIGJvZHk6IHN0YXRlbWVu
dHMsCisgICAgc3RyaXA6IHt9LAorICAgIGxvYzogbG9jCisgIH07Cit9CisKKworZXhwb3J0IGZ1
bmN0aW9uIHByZXBhcmVQYXJ0aWFsQmxvY2sob3BlbiwgcHJvZ3JhbSwgY2xvc2UsIGxvY0luZm8p
IHsKKyAgdmFsaWRhdGVDbG9zZShvcGVuLCBjbG9zZSk7CisKKyAgcmV0dXJuIHsKKyAgICB0eXBl
OiAnUGFydGlhbEJsb2NrU3RhdGVtZW50JywKKyAgICBuYW1lOiBvcGVuLnBhdGgsCisgICAgcGFy
YW1zOiBvcGVuLnBhcmFtcywKKyAgICBoYXNoOiBvcGVuLmhhc2gsCisgICAgcHJvZ3JhbSwKKyAg
ICBvcGVuU3RyaXA6IG9wZW4uc3RyaXAsCisgICAgY2xvc2VTdHJpcDogY2xvc2UgJiYgY2xvc2Uu
c3RyaXAsCisgICAgbG9jOiB0aGlzLmxvY0luZm8obG9jSW5mbykKKyAgfTsKK30KKwpkaWZmIC0t
Z2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2xpYi9oYW5k
bGViYXJzL2NvbXBpbGVyL2phdmFzY3JpcHQtY29tcGlsZXIuanMgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVl
cnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvbGliL2hhbmRsZWJhcnMvY29tcGlsZXIvamF2YXNj
cmlwdC1jb21waWxlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYzg5MTE3NjE0N2NjN2I2MjZhYTMxNjA4ZjRl
MDk0OTcwMDg3OTUwCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVf
bW9kdWxlcy9oYW5kbGViYXJzL2xpYi9oYW5kbGViYXJzL2NvbXBpbGVyL2phdmFzY3JpcHQtY29t
cGlsZXIuanMKQEAgLTAsMCArMSwxMTM3IEBACitpbXBvcnQgeyBDT01QSUxFUl9SRVZJU0lPTiwg
UkVWSVNJT05fQ0hBTkdFUyB9IGZyb20gJy4uL2Jhc2UnOworaW1wb3J0IEV4Y2VwdGlvbiBmcm9t
ICcuLi9leGNlcHRpb24nOworaW1wb3J0IHtpc0FycmF5fSBmcm9tICcuLi91dGlscyc7CitpbXBv
cnQgQ29kZUdlbiBmcm9tICcuL2NvZGUtZ2VuJzsKKworZnVuY3Rpb24gTGl0ZXJhbCh2YWx1ZSkg
eworICB0aGlzLnZhbHVlID0gdmFsdWU7Cit9CisKK2Z1bmN0aW9uIEphdmFTY3JpcHRDb21waWxl
cigpIHt9CisKK0phdmFTY3JpcHRDb21waWxlci5wcm90b3R5cGUgPSB7CisgIC8vIFBVQkxJQyBB
UEk6IFlvdSBjYW4gb3ZlcnJpZGUgdGhlc2UgbWV0aG9kcyBpbiBhIHN1YmNsYXNzIHRvIHByb3Zp
ZGUKKyAgLy8gYWx0ZXJuYXRpdmUgY29tcGlsZWQgZm9ybXMgZm9yIG5hbWUgbG9va3VwIGFuZCBi
dWZmZXJpbmcgc2VtYW50aWNzCisgIG5hbWVMb29rdXA6IGZ1bmN0aW9uKHBhcmVudCwgbmFtZS8q
ICwgdHlwZSovKSB7CisgICAgaWYgKEphdmFTY3JpcHRDb21waWxlci5pc1ZhbGlkSmF2YVNjcmlw
dFZhcmlhYmxlTmFtZShuYW1lKSkgeworICAgICAgcmV0dXJuIFtwYXJlbnQsICcuJywgbmFtZV07
CisgICAgfSBlbHNlIHsKKyAgICAgIHJldHVybiBbcGFyZW50LCAnWycsIEpTT04uc3RyaW5naWZ5
KG5hbWUpLCAnXSddOworICAgIH0KKyAgfSwKKyAgZGVwdGhlZExvb2t1cDogZnVuY3Rpb24obmFt
ZSkgeworICAgIHJldHVybiBbdGhpcy5hbGlhc2FibGUoJ2NvbnRhaW5lci5sb29rdXAnKSwgJyhk
ZXB0aHMsICInLCBuYW1lLCAnIiknXTsKKyAgfSwKKworICBjb21waWxlckluZm86IGZ1bmN0aW9u
KCkgeworICAgIGNvbnN0IHJldmlzaW9uID0gQ09NUElMRVJfUkVWSVNJT04sCisgICAgICAgICAg
dmVyc2lvbnMgPSBSRVZJU0lPTl9DSEFOR0VTW3JldmlzaW9uXTsKKyAgICByZXR1cm4gW3Jldmlz
aW9uLCB2ZXJzaW9uc107CisgIH0sCisKKyAgYXBwZW5kVG9CdWZmZXI6IGZ1bmN0aW9uKHNvdXJj
ZSwgbG9jYXRpb24sIGV4cGxpY2l0KSB7CisgICAgLy8gRm9yY2UgYSBzb3VyY2UgYXMgdGhpcyBz
aW1wbGlmaWVzIHRoZSBtZXJnZSBsb2dpYy4KKyAgICBpZiAoIWlzQXJyYXkoc291cmNlKSkgewor
ICAgICAgc291cmNlID0gW3NvdXJjZV07CisgICAgfQorICAgIHNvdXJjZSA9IHRoaXMuc291cmNl
LndyYXAoc291cmNlLCBsb2NhdGlvbik7CisKKyAgICBpZiAodGhpcy5lbnZpcm9ubWVudC5pc1Np
bXBsZSkgeworICAgICAgcmV0dXJuIFsncmV0dXJuICcsIHNvdXJjZSwgJzsnXTsKKyAgICB9IGVs
c2UgaWYgKGV4cGxpY2l0KSB7CisgICAgICAvLyBUaGlzIGlzIGEgY2FzZSB3aGVyZSB0aGUgYnVm
ZmVyIG9wZXJhdGlvbiBvY2N1cnMgYXMgYSBjaGlsZCBvZiBhbm90aGVyCisgICAgICAvLyBjb25z
dHJ1Y3QsIGdlbmVyYWxseSBicmFjZXMuIFdlIGhhdmUgdG8gZXhwbGljaXRseSBvdXRwdXQgdGhl
c2UgYnVmZmVyCisgICAgICAvLyBvcGVyYXRpb25zIHRvIGVuc3VyZSB0aGF0IHRoZSBlbWl0dGVk
IGNvZGUgZ29lcyBpbiB0aGUgY29ycmVjdCBsb2NhdGlvbi4KKyAgICAgIHJldHVybiBbJ2J1ZmZl
ciArPSAnLCBzb3VyY2UsICc7J107CisgICAgfSBlbHNlIHsKKyAgICAgIHNvdXJjZS5hcHBlbmRU
b0J1ZmZlciA9IHRydWU7CisgICAgICByZXR1cm4gc291cmNlOworICAgIH0KKyAgfSwKKworICBp
bml0aWFsaXplQnVmZmVyOiBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gdGhpcy5xdW90ZWRTdHJp
bmcoJycpOworICB9LAorICAvLyBFTkQgUFVCTElDIEFQSQorCisgIGNvbXBpbGU6IGZ1bmN0aW9u
KGVudmlyb25tZW50LCBvcHRpb25zLCBjb250ZXh0LCBhc09iamVjdCkgeworICAgIHRoaXMuZW52
aXJvbm1lbnQgPSBlbnZpcm9ubWVudDsKKyAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zOworICAg
IHRoaXMuc3RyaW5nUGFyYW1zID0gdGhpcy5vcHRpb25zLnN0cmluZ1BhcmFtczsKKyAgICB0aGlz
LnRyYWNrSWRzID0gdGhpcy5vcHRpb25zLnRyYWNrSWRzOworICAgIHRoaXMucHJlY29tcGlsZSA9
ICFhc09iamVjdDsKKworICAgIHRoaXMubmFtZSA9IHRoaXMuZW52aXJvbm1lbnQubmFtZTsKKyAg
ICB0aGlzLmlzQ2hpbGQgPSAhIWNvbnRleHQ7CisgICAgdGhpcy5jb250ZXh0ID0gY29udGV4dCB8
fCB7CisgICAgICBkZWNvcmF0b3JzOiBbXSwKKyAgICAgIHByb2dyYW1zOiBbXSwKKyAgICAgIGVu
dmlyb25tZW50czogW10KKyAgICB9OworCisgICAgdGhpcy5wcmVhbWJsZSgpOworCisgICAgdGhp
cy5zdGFja1Nsb3QgPSAwOworICAgIHRoaXMuc3RhY2tWYXJzID0gW107CisgICAgdGhpcy5hbGlh
c2VzID0ge307CisgICAgdGhpcy5yZWdpc3RlcnMgPSB7IGxpc3Q6IFtdIH07CisgICAgdGhpcy5o
YXNoZXMgPSBbXTsKKyAgICB0aGlzLmNvbXBpbGVTdGFjayA9IFtdOworICAgIHRoaXMuaW5saW5l
U3RhY2sgPSBbXTsKKyAgICB0aGlzLmJsb2NrUGFyYW1zID0gW107CisKKyAgICB0aGlzLmNvbXBp
bGVDaGlsZHJlbihlbnZpcm9ubWVudCwgb3B0aW9ucyk7CisKKyAgICB0aGlzLnVzZURlcHRocyA9
IHRoaXMudXNlRGVwdGhzIHx8IGVudmlyb25tZW50LnVzZURlcHRocyB8fCBlbnZpcm9ubWVudC51
c2VEZWNvcmF0b3JzIHx8IHRoaXMub3B0aW9ucy5jb21wYXQ7CisgICAgdGhpcy51c2VCbG9ja1Bh
cmFtcyA9IHRoaXMudXNlQmxvY2tQYXJhbXMgfHwgZW52aXJvbm1lbnQudXNlQmxvY2tQYXJhbXM7
CisKKyAgICBsZXQgb3Bjb2RlcyA9IGVudmlyb25tZW50Lm9wY29kZXMsCisgICAgICAgIG9wY29k
ZSwKKyAgICAgICAgZmlyc3RMb2MsCisgICAgICAgIGksCisgICAgICAgIGw7CisKKyAgICBmb3Ig
KGkgPSAwLCBsID0gb3Bjb2Rlcy5sZW5ndGg7IGkgPCBsOyBpKyspIHsKKyAgICAgIG9wY29kZSA9
IG9wY29kZXNbaV07CisKKyAgICAgIHRoaXMuc291cmNlLmN1cnJlbnRMb2NhdGlvbiA9IG9wY29k
ZS5sb2M7CisgICAgICBmaXJzdExvYyA9IGZpcnN0TG9jIHx8IG9wY29kZS5sb2M7CisgICAgICB0
aGlzW29wY29kZS5vcGNvZGVdLmFwcGx5KHRoaXMsIG9wY29kZS5hcmdzKTsKKyAgICB9CisKKyAg
ICAvLyBGbHVzaCBhbnkgdHJhaWxpbmcgY29udGVudCB0aGF0IG1pZ2h0IGJlIHBlbmRpbmcuCisg
ICAgdGhpcy5zb3VyY2UuY3VycmVudExvY2F0aW9uID0gZmlyc3RMb2M7CisgICAgdGhpcy5wdXNo
U291cmNlKCcnKTsKKworICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovCisgICAgaWYgKHRo
aXMuc3RhY2tTbG90IHx8IHRoaXMuaW5saW5lU3RhY2subGVuZ3RoIHx8IHRoaXMuY29tcGlsZVN0
YWNrLmxlbmd0aCkgeworICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignQ29tcGlsZSBjb21wbGV0
ZWQgd2l0aCBjb250ZW50IGxlZnQgb24gc3RhY2snKTsKKyAgICB9CisKKyAgICBpZiAoIXRoaXMu
ZGVjb3JhdG9ycy5pc0VtcHR5KCkpIHsKKyAgICAgIHRoaXMudXNlRGVjb3JhdG9ycyA9IHRydWU7
CisKKyAgICAgIHRoaXMuZGVjb3JhdG9ycy5wcmVwZW5kKCd2YXIgZGVjb3JhdG9ycyA9IGNvbnRh
aW5lci5kZWNvcmF0b3JzO1xuJyk7CisgICAgICB0aGlzLmRlY29yYXRvcnMucHVzaCgncmV0dXJu
IGZuOycpOworCisgICAgICBpZiAoYXNPYmplY3QpIHsKKyAgICAgICAgdGhpcy5kZWNvcmF0b3Jz
ID0gRnVuY3Rpb24uYXBwbHkodGhpcywgWydmbicsICdwcm9wcycsICdjb250YWluZXInLCAnZGVw
dGgwJywgJ2RhdGEnLCAnYmxvY2tQYXJhbXMnLCAnZGVwdGhzJywgdGhpcy5kZWNvcmF0b3JzLm1l
cmdlKCldKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHRoaXMuZGVjb3JhdG9ycy5wcmVwZW5k
KCdmdW5jdGlvbihmbiwgcHJvcHMsIGNvbnRhaW5lciwgZGVwdGgwLCBkYXRhLCBibG9ja1BhcmFt
cywgZGVwdGhzKSB7XG4nKTsKKyAgICAgICAgdGhpcy5kZWNvcmF0b3JzLnB1c2goJ31cbicpOwor
ICAgICAgICB0aGlzLmRlY29yYXRvcnMgPSB0aGlzLmRlY29yYXRvcnMubWVyZ2UoKTsKKyAgICAg
IH0KKyAgICB9IGVsc2UgeworICAgICAgdGhpcy5kZWNvcmF0b3JzID0gdW5kZWZpbmVkOworICAg
IH0KKworICAgIGxldCBmbiA9IHRoaXMuY3JlYXRlRnVuY3Rpb25Db250ZXh0KGFzT2JqZWN0KTsK
KyAgICBpZiAoIXRoaXMuaXNDaGlsZCkgeworICAgICAgbGV0IHJldCA9IHsKKyAgICAgICAgY29t
cGlsZXI6IHRoaXMuY29tcGlsZXJJbmZvKCksCisgICAgICAgIG1haW46IGZuCisgICAgICB9Owor
CisgICAgICBpZiAodGhpcy5kZWNvcmF0b3JzKSB7CisgICAgICAgIHJldC5tYWluX2QgPSB0aGlz
LmRlY29yYXRvcnM7ICAgLy8gZXNsaW50LWRpc2FibGUtbGluZSBjYW1lbGNhc2UKKyAgICAgICAg
cmV0LnVzZURlY29yYXRvcnMgPSB0cnVlOworICAgICAgfQorCisgICAgICBsZXQge3Byb2dyYW1z
LCBkZWNvcmF0b3JzfSA9IHRoaXMuY29udGV4dDsKKyAgICAgIGZvciAoaSA9IDAsIGwgPSBwcm9n
cmFtcy5sZW5ndGg7IGkgPCBsOyBpKyspIHsKKyAgICAgICAgaWYgKHByb2dyYW1zW2ldKSB7Cisg
ICAgICAgICAgcmV0W2ldID0gcHJvZ3JhbXNbaV07CisgICAgICAgICAgaWYgKGRlY29yYXRvcnNb
aV0pIHsKKyAgICAgICAgICAgIHJldFtpICsgJ19kJ10gPSBkZWNvcmF0b3JzW2ldOworICAgICAg
ICAgICAgcmV0LnVzZURlY29yYXRvcnMgPSB0cnVlOworICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgfQorCisgICAgICBpZiAodGhpcy5lbnZpcm9ubWVudC51c2VQYXJ0aWFsKSB7CisgICAg
ICAgIHJldC51c2VQYXJ0aWFsID0gdHJ1ZTsKKyAgICAgIH0KKyAgICAgIGlmICh0aGlzLm9wdGlv
bnMuZGF0YSkgeworICAgICAgICByZXQudXNlRGF0YSA9IHRydWU7CisgICAgICB9CisgICAgICBp
ZiAodGhpcy51c2VEZXB0aHMpIHsKKyAgICAgICAgcmV0LnVzZURlcHRocyA9IHRydWU7CisgICAg
ICB9CisgICAgICBpZiAodGhpcy51c2VCbG9ja1BhcmFtcykgeworICAgICAgICByZXQudXNlQmxv
Y2tQYXJhbXMgPSB0cnVlOworICAgICAgfQorICAgICAgaWYgKHRoaXMub3B0aW9ucy5jb21wYXQp
IHsKKyAgICAgICAgcmV0LmNvbXBhdCA9IHRydWU7CisgICAgICB9CisKKyAgICAgIGlmICghYXNP
YmplY3QpIHsKKyAgICAgICAgcmV0LmNvbXBpbGVyID0gSlNPTi5zdHJpbmdpZnkocmV0LmNvbXBp
bGVyKTsKKworICAgICAgICB0aGlzLnNvdXJjZS5jdXJyZW50TG9jYXRpb24gPSB7c3RhcnQ6IHts
aW5lOiAxLCBjb2x1bW46IDB9fTsKKyAgICAgICAgcmV0ID0gdGhpcy5vYmplY3RMaXRlcmFsKHJl
dCk7CisKKyAgICAgICAgaWYgKG9wdGlvbnMuc3JjTmFtZSkgeworICAgICAgICAgIHJldCA9IHJl
dC50b1N0cmluZ1dpdGhTb3VyY2VNYXAoe2ZpbGU6IG9wdGlvbnMuZGVzdE5hbWV9KTsKKyAgICAg
ICAgICByZXQubWFwID0gcmV0Lm1hcCAmJiByZXQubWFwLnRvU3RyaW5nKCk7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgcmV0ID0gcmV0LnRvU3RyaW5nKCk7CisgICAgICAgIH0KKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHJldC5jb21waWxlck9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7Cisg
ICAgICB9CisKKyAgICAgIHJldHVybiByZXQ7CisgICAgfSBlbHNlIHsKKyAgICAgIHJldHVybiBm
bjsKKyAgICB9CisgIH0sCisKKyAgcHJlYW1ibGU6IGZ1bmN0aW9uKCkgeworICAgIC8vIHRyYWNr
IHRoZSBsYXN0IGNvbnRleHQgcHVzaGVkIGludG8gcGxhY2UgdG8gYWxsb3cgc2tpcHBpbmcgdGhl
CisgICAgLy8gZ2V0Q29udGV4dCBvcGNvZGUgd2hlbiBpdCB3b3VsZCBiZSBhIG5vb3AKKyAgICB0
aGlzLmxhc3RDb250ZXh0ID0gMDsKKyAgICB0aGlzLnNvdXJjZSA9IG5ldyBDb2RlR2VuKHRoaXMu
b3B0aW9ucy5zcmNOYW1lKTsKKyAgICB0aGlzLmRlY29yYXRvcnMgPSBuZXcgQ29kZUdlbih0aGlz
Lm9wdGlvbnMuc3JjTmFtZSk7CisgIH0sCisKKyAgY3JlYXRlRnVuY3Rpb25Db250ZXh0OiBmdW5j
dGlvbihhc09iamVjdCkgeworICAgIGxldCB2YXJEZWNsYXJhdGlvbnMgPSAnJzsKKworICAgIGxl
dCBsb2NhbHMgPSB0aGlzLnN0YWNrVmFycy5jb25jYXQodGhpcy5yZWdpc3RlcnMubGlzdCk7Cisg
ICAgaWYgKGxvY2Fscy5sZW5ndGggPiAwKSB7CisgICAgICB2YXJEZWNsYXJhdGlvbnMgKz0gJywg
JyArIGxvY2Fscy5qb2luKCcsICcpOworICAgIH0KKworICAgIC8vIEdlbmVyYXRlIG1pbmltaXpl
ciBhbGlhcyBtYXBwaW5ncworICAgIC8vCisgICAgLy8gV2hlbiB1c2luZyB0cnVlIFNvdXJjZU5v
ZGVzLCB0aGlzIHdpbGwgdXBkYXRlIGFsbCByZWZlcmVuY2VzIHRvIHRoZSBnaXZlbiBhbGlhcwor
ICAgIC8vIGFzIHRoZSBzb3VyY2Ugbm9kZXMgYXJlIHJldXNlZCBpbiBzaXR1LiBGb3IgdGhlIG5v
bi1zb3VyY2Ugbm9kZSBjb21waWxhdGlvbiBtb2RlLAorICAgIC8vIGFsaWFzZXMgd2lsbCBub3Qg
YmUgdXNlZCwgYnV0IHRoaXMgY2FzZSBpcyBhbHJlYWR5IGJlaW5nIHJ1biBvbiB0aGUgY2xpZW50
IGFuZAorICAgIC8vIHdlIGFyZW4ndCBjb25jZXJuIGFib3V0IG1pbmltaXppbmcgdGhlIHRlbXBs
YXRlIHNpemUuCisgICAgbGV0IGFsaWFzQ291bnQgPSAwOworICAgIGZvciAobGV0IGFsaWFzIGlu
IHRoaXMuYWxpYXNlcykgeyAgICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGd1YXJkLWZvci1pbgor
ICAgICAgbGV0IG5vZGUgPSB0aGlzLmFsaWFzZXNbYWxpYXNdOworCisgICAgICBpZiAodGhpcy5h
bGlhc2VzLmhhc093blByb3BlcnR5KGFsaWFzKSAmJiBub2RlLmNoaWxkcmVuICYmIG5vZGUucmVm
ZXJlbmNlQ291bnQgPiAxKSB7CisgICAgICAgIHZhckRlY2xhcmF0aW9ucyArPSAnLCBhbGlhcycg
KyAoKythbGlhc0NvdW50KSArICc9JyArIGFsaWFzOworICAgICAgICBub2RlLmNoaWxkcmVuWzBd
ID0gJ2FsaWFzJyArIGFsaWFzQ291bnQ7CisgICAgICB9CisgICAgfQorCisgICAgbGV0IHBhcmFt
cyA9IFsnY29udGFpbmVyJywgJ2RlcHRoMCcsICdoZWxwZXJzJywgJ3BhcnRpYWxzJywgJ2RhdGEn
XTsKKworICAgIGlmICh0aGlzLnVzZUJsb2NrUGFyYW1zIHx8IHRoaXMudXNlRGVwdGhzKSB7Cisg
ICAgICBwYXJhbXMucHVzaCgnYmxvY2tQYXJhbXMnKTsKKyAgICB9CisgICAgaWYgKHRoaXMudXNl
RGVwdGhzKSB7CisgICAgICBwYXJhbXMucHVzaCgnZGVwdGhzJyk7CisgICAgfQorCisgICAgLy8g
UGVyZm9ybSBhIHNlY29uZCBwYXNzIG92ZXIgdGhlIG91dHB1dCB0byBtZXJnZSBjb250ZW50IHdo
ZW4gcG9zc2libGUKKyAgICBsZXQgc291cmNlID0gdGhpcy5tZXJnZVNvdXJjZSh2YXJEZWNsYXJh
dGlvbnMpOworCisgICAgaWYgKGFzT2JqZWN0KSB7CisgICAgICBwYXJhbXMucHVzaChzb3VyY2Up
OworCisgICAgICByZXR1cm4gRnVuY3Rpb24uYXBwbHkodGhpcywgcGFyYW1zKTsKKyAgICB9IGVs
c2UgeworICAgICAgcmV0dXJuIHRoaXMuc291cmNlLndyYXAoWydmdW5jdGlvbignLCBwYXJhbXMu
am9pbignLCcpLCAnKSB7XG4gICcsIHNvdXJjZSwgJ30nXSk7CisgICAgfQorICB9LAorICBtZXJn
ZVNvdXJjZTogZnVuY3Rpb24odmFyRGVjbGFyYXRpb25zKSB7CisgICAgbGV0IGlzU2ltcGxlID0g
dGhpcy5lbnZpcm9ubWVudC5pc1NpbXBsZSwKKyAgICAgICAgYXBwZW5kT25seSA9ICF0aGlzLmZv
cmNlQnVmZmVyLAorICAgICAgICBhcHBlbmRGaXJzdCwKKworICAgICAgICBzb3VyY2VTZWVuLAor
ICAgICAgICBidWZmZXJTdGFydCwKKyAgICAgICAgYnVmZmVyRW5kOworICAgIHRoaXMuc291cmNl
LmVhY2goKGxpbmUpID0+IHsKKyAgICAgIGlmIChsaW5lLmFwcGVuZFRvQnVmZmVyKSB7CisgICAg
ICAgIGlmIChidWZmZXJTdGFydCkgeworICAgICAgICAgIGxpbmUucHJlcGVuZCgnICArICcpOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgIGJ1ZmZlclN0YXJ0ID0gbGluZTsKKyAgICAgICAg
fQorICAgICAgICBidWZmZXJFbmQgPSBsaW5lOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgaWYg
KGJ1ZmZlclN0YXJ0KSB7CisgICAgICAgICAgaWYgKCFzb3VyY2VTZWVuKSB7CisgICAgICAgICAg
ICBhcHBlbmRGaXJzdCA9IHRydWU7CisgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGJ1
ZmZlclN0YXJ0LnByZXBlbmQoJ2J1ZmZlciArPSAnKTsKKyAgICAgICAgICB9CisgICAgICAgICAg
YnVmZmVyRW5kLmFkZCgnOycpOworICAgICAgICAgIGJ1ZmZlclN0YXJ0ID0gYnVmZmVyRW5kID0g
dW5kZWZpbmVkOworICAgICAgICB9CisKKyAgICAgICAgc291cmNlU2VlbiA9IHRydWU7CisgICAg
ICAgIGlmICghaXNTaW1wbGUpIHsKKyAgICAgICAgICBhcHBlbmRPbmx5ID0gZmFsc2U7CisgICAg
ICAgIH0KKyAgICAgIH0KKyAgICB9KTsKKworCisgICAgaWYgKGFwcGVuZE9ubHkpIHsKKyAgICAg
IGlmIChidWZmZXJTdGFydCkgeworICAgICAgICBidWZmZXJTdGFydC5wcmVwZW5kKCdyZXR1cm4g
Jyk7CisgICAgICAgIGJ1ZmZlckVuZC5hZGQoJzsnKTsKKyAgICAgIH0gZWxzZSBpZiAoIXNvdXJj
ZVNlZW4pIHsKKyAgICAgICAgdGhpcy5zb3VyY2UucHVzaCgncmV0dXJuICIiOycpOworICAgICAg
fQorICAgIH0gZWxzZSB7CisgICAgICB2YXJEZWNsYXJhdGlvbnMgKz0gJywgYnVmZmVyID0gJyAr
IChhcHBlbmRGaXJzdCA/ICcnIDogdGhpcy5pbml0aWFsaXplQnVmZmVyKCkpOworCisgICAgICBp
ZiAoYnVmZmVyU3RhcnQpIHsKKyAgICAgICAgYnVmZmVyU3RhcnQucHJlcGVuZCgncmV0dXJuIGJ1
ZmZlciArICcpOworICAgICAgICBidWZmZXJFbmQuYWRkKCc7Jyk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICB0aGlzLnNvdXJjZS5wdXNoKCdyZXR1cm4gYnVmZmVyOycpOworICAgICAgfQorICAg
IH0KKworICAgIGlmICh2YXJEZWNsYXJhdGlvbnMpIHsKKyAgICAgIHRoaXMuc291cmNlLnByZXBl
bmQoJ3ZhciAnICsgdmFyRGVjbGFyYXRpb25zLnN1YnN0cmluZygyKSArIChhcHBlbmRGaXJzdCA/
ICcnIDogJztcbicpKTsKKyAgICB9CisKKyAgICByZXR1cm4gdGhpcy5zb3VyY2UubWVyZ2UoKTsK
KyAgfSwKKworICAvLyBbYmxvY2tWYWx1ZV0KKyAgLy8KKyAgLy8gT24gc3RhY2ssIGJlZm9yZTog
aGFzaCwgaW52ZXJzZSwgcHJvZ3JhbSwgdmFsdWUKKyAgLy8gT24gc3RhY2ssIGFmdGVyOiByZXR1
cm4gdmFsdWUgb2YgYmxvY2tIZWxwZXJNaXNzaW5nCisgIC8vCisgIC8vIFRoZSBwdXJwb3NlIG9m
IHRoaXMgb3Bjb2RlIGlzIHRvIHRha2UgYSBibG9jayBvZiB0aGUgZm9ybQorICAvLyBge3sjdGhp
cy5mb299fS4uLnt7L3RoaXMuZm9vfX1gLCByZXNvbHZlIHRoZSB2YWx1ZSBvZiBgZm9vYCwgYW5k
CisgIC8vIHJlcGxhY2UgaXQgb24gdGhlIHN0YWNrIHdpdGggdGhlIHJlc3VsdCBvZiBwcm9wZXJs
eQorICAvLyBpbnZva2luZyBibG9ja0hlbHBlck1pc3NpbmcuCisgIGJsb2NrVmFsdWU6IGZ1bmN0
aW9uKG5hbWUpIHsKKyAgICBsZXQgYmxvY2tIZWxwZXJNaXNzaW5nID0gdGhpcy5hbGlhc2FibGUo
J2hlbHBlcnMuYmxvY2tIZWxwZXJNaXNzaW5nJyksCisgICAgICAgIHBhcmFtcyA9IFt0aGlzLmNv
bnRleHROYW1lKDApXTsKKyAgICB0aGlzLnNldHVwSGVscGVyQXJncyhuYW1lLCAwLCBwYXJhbXMp
OworCisgICAgbGV0IGJsb2NrTmFtZSA9IHRoaXMucG9wU3RhY2soKTsKKyAgICBwYXJhbXMuc3Bs
aWNlKDEsIDAsIGJsb2NrTmFtZSk7CisKKyAgICB0aGlzLnB1c2godGhpcy5zb3VyY2UuZnVuY3Rp
b25DYWxsKGJsb2NrSGVscGVyTWlzc2luZywgJ2NhbGwnLCBwYXJhbXMpKTsKKyAgfSwKKworICAv
LyBbYW1iaWd1b3VzQmxvY2tWYWx1ZV0KKyAgLy8KKyAgLy8gT24gc3RhY2ssIGJlZm9yZTogaGFz
aCwgaW52ZXJzZSwgcHJvZ3JhbSwgdmFsdWUKKyAgLy8gQ29tcGlsZXIgdmFsdWUsIGJlZm9yZTog
bGFzdEhlbHBlcj12YWx1ZSBvZiBsYXN0IGZvdW5kIGhlbHBlciwgaWYgYW55CisgIC8vIE9uIHN0
YWNrLCBhZnRlciwgaWYgbm8gbGFzdEhlbHBlcjogc2FtZSBhcyBbYmxvY2tWYWx1ZV0KKyAgLy8g
T24gc3RhY2ssIGFmdGVyLCBpZiBsYXN0SGVscGVyOiB2YWx1ZQorICBhbWJpZ3VvdXNCbG9ja1Zh
bHVlOiBmdW5jdGlvbigpIHsKKyAgICAvLyBXZSdyZSBiZWluZyBhIGJpdCBjaGVla3kgYW5kIHJl
dXNpbmcgdGhlIG9wdGlvbnMgdmFsdWUgZnJvbSB0aGUgcHJpb3IgZXhlYworICAgIGxldCBibG9j
a0hlbHBlck1pc3NpbmcgPSB0aGlzLmFsaWFzYWJsZSgnaGVscGVycy5ibG9ja0hlbHBlck1pc3Np
bmcnKSwKKyAgICAgICAgcGFyYW1zID0gW3RoaXMuY29udGV4dE5hbWUoMCldOworICAgIHRoaXMu
c2V0dXBIZWxwZXJBcmdzKCcnLCAwLCBwYXJhbXMsIHRydWUpOworCisgICAgdGhpcy5mbHVzaElu
bGluZSgpOworCisgICAgbGV0IGN1cnJlbnQgPSB0aGlzLnRvcFN0YWNrKCk7CisgICAgcGFyYW1z
LnNwbGljZSgxLCAwLCBjdXJyZW50KTsKKworICAgIHRoaXMucHVzaFNvdXJjZShbCisgICAgICAg
ICdpZiAoIScsIHRoaXMubGFzdEhlbHBlciwgJykgeyAnLAorICAgICAgICAgIGN1cnJlbnQsICcg
PSAnLCB0aGlzLnNvdXJjZS5mdW5jdGlvbkNhbGwoYmxvY2tIZWxwZXJNaXNzaW5nLCAnY2FsbCcs
IHBhcmFtcyksCisgICAgICAgICd9J10pOworICB9LAorCisgIC8vIFthcHBlbmRDb250ZW50XQor
ICAvLworICAvLyBPbiBzdGFjaywgYmVmb3JlOiAuLi4KKyAgLy8gT24gc3RhY2ssIGFmdGVyOiAu
Li4KKyAgLy8KKyAgLy8gQXBwZW5kcyB0aGUgc3RyaW5nIHZhbHVlIG9mIGBjb250ZW50YCB0byB0
aGUgY3VycmVudCBidWZmZXIKKyAgYXBwZW5kQ29udGVudDogZnVuY3Rpb24oY29udGVudCkgewor
ICAgIGlmICh0aGlzLnBlbmRpbmdDb250ZW50KSB7CisgICAgICBjb250ZW50ID0gdGhpcy5wZW5k
aW5nQ29udGVudCArIGNvbnRlbnQ7CisgICAgfSBlbHNlIHsKKyAgICAgIHRoaXMucGVuZGluZ0xv
Y2F0aW9uID0gdGhpcy5zb3VyY2UuY3VycmVudExvY2F0aW9uOworICAgIH0KKworICAgIHRoaXMu
cGVuZGluZ0NvbnRlbnQgPSBjb250ZW50OworICB9LAorCisgIC8vIFthcHBlbmRdCisgIC8vCisg
IC8vIE9uIHN0YWNrLCBiZWZvcmU6IHZhbHVlLCAuLi4KKyAgLy8gT24gc3RhY2ssIGFmdGVyOiAu
Li4KKyAgLy8KKyAgLy8gQ29lcmNlcyBgdmFsdWVgIHRvIGEgU3RyaW5nIGFuZCBhcHBlbmRzIGl0
IHRvIHRoZSBjdXJyZW50IGJ1ZmZlci4KKyAgLy8KKyAgLy8gSWYgYHZhbHVlYCBpcyB0cnV0aHks
IG9yIDAsIGl0IGlzIGNvZXJjZWQgaW50byBhIHN0cmluZyBhbmQgYXBwZW5kZWQKKyAgLy8gT3Ro
ZXJ3aXNlLCB0aGUgZW1wdHkgc3RyaW5nIGlzIGFwcGVuZGVkCisgIGFwcGVuZDogZnVuY3Rpb24o
KSB7CisgICAgaWYgKHRoaXMuaXNJbmxpbmUoKSkgeworICAgICAgdGhpcy5yZXBsYWNlU3RhY2so
KGN1cnJlbnQpID0+IFsnICE9IG51bGwgPyAnLCBjdXJyZW50LCAnIDogIiInXSk7CisKKyAgICAg
IHRoaXMucHVzaFNvdXJjZSh0aGlzLmFwcGVuZFRvQnVmZmVyKHRoaXMucG9wU3RhY2soKSkpOwor
ICAgIH0gZWxzZSB7CisgICAgICBsZXQgbG9jYWwgPSB0aGlzLnBvcFN0YWNrKCk7CisgICAgICB0
aGlzLnB1c2hTb3VyY2UoWydpZiAoJywgbG9jYWwsICcgIT0gbnVsbCkgeyAnLCB0aGlzLmFwcGVu
ZFRvQnVmZmVyKGxvY2FsLCB1bmRlZmluZWQsIHRydWUpLCAnIH0nXSk7CisgICAgICBpZiAodGhp
cy5lbnZpcm9ubWVudC5pc1NpbXBsZSkgeworICAgICAgICB0aGlzLnB1c2hTb3VyY2UoWydlbHNl
IHsgJywgdGhpcy5hcHBlbmRUb0J1ZmZlcigiJyciLCB1bmRlZmluZWQsIHRydWUpLCAnIH0nXSk7
CisgICAgICB9CisgICAgfQorICB9LAorCisgIC8vIFthcHBlbmRFc2NhcGVkXQorICAvLworICAv
LyBPbiBzdGFjaywgYmVmb3JlOiB2YWx1ZSwgLi4uCisgIC8vIE9uIHN0YWNrLCBhZnRlcjogLi4u
CisgIC8vCisgIC8vIEVzY2FwZSBgdmFsdWVgIGFuZCBhcHBlbmQgaXQgdG8gdGhlIGJ1ZmZlcgor
ICBhcHBlbmRFc2NhcGVkOiBmdW5jdGlvbigpIHsKKyAgICB0aGlzLnB1c2hTb3VyY2UodGhpcy5h
cHBlbmRUb0J1ZmZlcigKKyAgICAgICAgW3RoaXMuYWxpYXNhYmxlKCdjb250YWluZXIuZXNjYXBl
RXhwcmVzc2lvbicpLCAnKCcsIHRoaXMucG9wU3RhY2soKSwgJyknXSkpOworICB9LAorCisgIC8v
IFtnZXRDb250ZXh0XQorICAvLworICAvLyBPbiBzdGFjaywgYmVmb3JlOiAuLi4KKyAgLy8gT24g
c3RhY2ssIGFmdGVyOiAuLi4KKyAgLy8gQ29tcGlsZXIgdmFsdWUsIGFmdGVyOiBsYXN0Q29udGV4
dD1kZXB0aAorICAvLworICAvLyBTZXQgdGhlIHZhbHVlIG9mIHRoZSBgbGFzdENvbnRleHRgIGNv
bXBpbGVyIHZhbHVlIHRvIHRoZSBkZXB0aAorICBnZXRDb250ZXh0OiBmdW5jdGlvbihkZXB0aCkg
eworICAgIHRoaXMubGFzdENvbnRleHQgPSBkZXB0aDsKKyAgfSwKKworICAvLyBbcHVzaENvbnRl
eHRdCisgIC8vCisgIC8vIE9uIHN0YWNrLCBiZWZvcmU6IC4uLgorICAvLyBPbiBzdGFjaywgYWZ0
ZXI6IGN1cnJlbnRDb250ZXh0LCAuLi4KKyAgLy8KKyAgLy8gUHVzaGVzIHRoZSB2YWx1ZSBvZiB0
aGUgY3VycmVudCBjb250ZXh0IG9udG8gdGhlIHN0YWNrLgorICBwdXNoQ29udGV4dDogZnVuY3Rp
b24oKSB7CisgICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFsKHRoaXMuY29udGV4dE5hbWUodGhpcy5s
YXN0Q29udGV4dCkpOworICB9LAorCisgIC8vIFtsb29rdXBPbkNvbnRleHRdCisgIC8vCisgIC8v
IE9uIHN0YWNrLCBiZWZvcmU6IC4uLgorICAvLyBPbiBzdGFjaywgYWZ0ZXI6IGN1cnJlbnRDb250
ZXh0W25hbWVdLCAuLi4KKyAgLy8KKyAgLy8gTG9va3MgdXAgdGhlIHZhbHVlIG9mIGBuYW1lYCBv
biB0aGUgY3VycmVudCBjb250ZXh0IGFuZCBwdXNoZXMKKyAgLy8gaXQgb250byB0aGUgc3RhY2su
CisgIGxvb2t1cE9uQ29udGV4dDogZnVuY3Rpb24ocGFydHMsIGZhbHN5LCBzdHJpY3QsIHNjb3Bl
ZCkgeworICAgIGxldCBpID0gMDsKKworICAgIGlmICghc2NvcGVkICYmIHRoaXMub3B0aW9ucy5j
b21wYXQgJiYgIXRoaXMubGFzdENvbnRleHQpIHsKKyAgICAgIC8vIFRoZSBkZXB0aGVkIHF1ZXJ5
IGlzIGV4cGVjdGVkIHRvIGhhbmRsZSB0aGUgdW5kZWZpbmVkIGxvZ2ljIGZvciB0aGUgcm9vdCBs
ZXZlbCB0aGF0CisgICAgICAvLyBpcyBpbXBsZW1lbnRlZCBiZWxvdywgc28gd2UgZXZhbHVhdGUg
dGhhdCBkaXJlY3RseSBpbiBjb21wYXQgbW9kZQorICAgICAgdGhpcy5wdXNoKHRoaXMuZGVwdGhl
ZExvb2t1cChwYXJ0c1tpKytdKSk7CisgICAgfSBlbHNlIHsKKyAgICAgIHRoaXMucHVzaENvbnRl
eHQoKTsKKyAgICB9CisKKyAgICB0aGlzLnJlc29sdmVQYXRoKCdjb250ZXh0JywgcGFydHMsIGks
IGZhbHN5LCBzdHJpY3QpOworICB9LAorCisgIC8vIFtsb29rdXBCbG9ja1BhcmFtXQorICAvLwor
ICAvLyBPbiBzdGFjaywgYmVmb3JlOiAuLi4KKyAgLy8gT24gc3RhY2ssIGFmdGVyOiBibG9ja1Bh
cmFtW25hbWVdLCAuLi4KKyAgLy8KKyAgLy8gTG9va3MgdXAgdGhlIHZhbHVlIG9mIGBwYXJ0c2Ag
b24gdGhlIGdpdmVuIGJsb2NrIHBhcmFtIGFuZCBwdXNoZXMKKyAgLy8gaXQgb250byB0aGUgc3Rh
Y2suCisgIGxvb2t1cEJsb2NrUGFyYW06IGZ1bmN0aW9uKGJsb2NrUGFyYW1JZCwgcGFydHMpIHsK
KyAgICB0aGlzLnVzZUJsb2NrUGFyYW1zID0gdHJ1ZTsKKworICAgIHRoaXMucHVzaChbJ2Jsb2Nr
UGFyYW1zWycsIGJsb2NrUGFyYW1JZFswXSwgJ11bJywgYmxvY2tQYXJhbUlkWzFdLCAnXSddKTsK
KyAgICB0aGlzLnJlc29sdmVQYXRoKCdjb250ZXh0JywgcGFydHMsIDEpOworICB9LAorCisgIC8v
IFtsb29rdXBEYXRhXQorICAvLworICAvLyBPbiBzdGFjaywgYmVmb3JlOiAuLi4KKyAgLy8gT24g
c3RhY2ssIGFmdGVyOiBkYXRhLCAuLi4KKyAgLy8KKyAgLy8gUHVzaCB0aGUgZGF0YSBsb29rdXAg
b3BlcmF0b3IKKyAgbG9va3VwRGF0YTogZnVuY3Rpb24oZGVwdGgsIHBhcnRzLCBzdHJpY3QpIHsK
KyAgICBpZiAoIWRlcHRoKSB7CisgICAgICB0aGlzLnB1c2hTdGFja0xpdGVyYWwoJ2RhdGEnKTsK
KyAgICB9IGVsc2UgeworICAgICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFsKCdjb250YWluZXIuZGF0
YShkYXRhLCAnICsgZGVwdGggKyAnKScpOworICAgIH0KKworICAgIHRoaXMucmVzb2x2ZVBhdGgo
J2RhdGEnLCBwYXJ0cywgMCwgdHJ1ZSwgc3RyaWN0KTsKKyAgfSwKKworICByZXNvbHZlUGF0aDog
ZnVuY3Rpb24odHlwZSwgcGFydHMsIGksIGZhbHN5LCBzdHJpY3QpIHsKKyAgICBpZiAodGhpcy5v
cHRpb25zLnN0cmljdCB8fCB0aGlzLm9wdGlvbnMuYXNzdW1lT2JqZWN0cykgeworICAgICAgdGhp
cy5wdXNoKHN0cmljdExvb2t1cCh0aGlzLm9wdGlvbnMuc3RyaWN0ICYmIHN0cmljdCwgdGhpcywg
cGFydHMsIHR5cGUpKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBsZXQgbGVuID0gcGFy
dHMubGVuZ3RoOworICAgIGZvciAoOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgIC8qIGVzbGludC1k
aXNhYmxlIG5vLWxvb3AtZnVuYyAqLworICAgICAgdGhpcy5yZXBsYWNlU3RhY2soKGN1cnJlbnQp
ID0+IHsKKyAgICAgICAgbGV0IGxvb2t1cCA9IHRoaXMubmFtZUxvb2t1cChjdXJyZW50LCBwYXJ0
c1tpXSwgdHlwZSk7CisgICAgICAgIC8vIFdlIHdhbnQgdG8gZW5zdXJlIHRoYXQgemVybyBhbmQg
ZmFsc2UgYXJlIGhhbmRsZWQgcHJvcGVybHkgaWYgdGhlIGNvbnRleHQgKGZhbHN5IGZsYWcpCisg
ICAgICAgIC8vIG5lZWRzIHRvIGhhdmUgdGhlIHNwZWNpYWwgaGFuZGxpbmcgZm9yIHRoZXNlIHZh
bHVlcy4KKyAgICAgICAgaWYgKCFmYWxzeSkgeworICAgICAgICAgIHJldHVybiBbJyAhPSBudWxs
ID8gJywgbG9va3VwLCAnIDogJywgY3VycmVudF07CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgLy8gT3RoZXJ3aXNlIHdlIGNhbiB1c2UgZ2VuZXJpYyBmYWxzeSBoYW5kbGluZworICAgICAg
ICAgIHJldHVybiBbJyAmJiAnLCBsb29rdXBdOworICAgICAgICB9CisgICAgICB9KTsKKyAgICAg
IC8qIGVzbGludC1lbmFibGUgbm8tbG9vcC1mdW5jICovCisgICAgfQorICB9LAorCisgIC8vIFty
ZXNvbHZlUG9zc2libGVMYW1iZGFdCisgIC8vCisgIC8vIE9uIHN0YWNrLCBiZWZvcmU6IHZhbHVl
LCAuLi4KKyAgLy8gT24gc3RhY2ssIGFmdGVyOiByZXNvbHZlZCB2YWx1ZSwgLi4uCisgIC8vCisg
IC8vIElmIHRoZSBgdmFsdWVgIGlzIGEgbGFtYmRhLCByZXBsYWNlIGl0IG9uIHRoZSBzdGFjayBi
eQorICAvLyB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBsYW1iZGEKKyAgcmVzb2x2ZVBvc3NpYmxl
TGFtYmRhOiBmdW5jdGlvbigpIHsKKyAgICB0aGlzLnB1c2goW3RoaXMuYWxpYXNhYmxlKCdjb250
YWluZXIubGFtYmRhJyksICcoJywgdGhpcy5wb3BTdGFjaygpLCAnLCAnLCB0aGlzLmNvbnRleHRO
YW1lKDApLCAnKSddKTsKKyAgfSwKKworICAvLyBbcHVzaFN0cmluZ1BhcmFtXQorICAvLworICAv
LyBPbiBzdGFjaywgYmVmb3JlOiAuLi4KKyAgLy8gT24gc3RhY2ssIGFmdGVyOiBzdHJpbmcsIGN1
cnJlbnRDb250ZXh0LCAuLi4KKyAgLy8KKyAgLy8gVGhpcyBvcGNvZGUgaXMgZGVzaWduZWQgZm9y
IHVzZSBpbiBzdHJpbmcgbW9kZSwgd2hpY2gKKyAgLy8gcHJvdmlkZXMgdGhlIHN0cmluZyB2YWx1
ZSBvZiBhIHBhcmFtZXRlciBhbG9uZyB3aXRoIGl0cworICAvLyBkZXB0aCByYXRoZXIgdGhhbiBy
ZXNvbHZpbmcgaXQgaW1tZWRpYXRlbHkuCisgIHB1c2hTdHJpbmdQYXJhbTogZnVuY3Rpb24oc3Ry
aW5nLCB0eXBlKSB7CisgICAgdGhpcy5wdXNoQ29udGV4dCgpOworICAgIHRoaXMucHVzaFN0cmlu
Zyh0eXBlKTsKKworICAgIC8vIElmIGl0J3MgYSBzdWJleHByZXNzaW9uLCB0aGUgc3RyaW5nIHJl
c3VsdAorICAgIC8vIHdpbGwgYmUgcHVzaGVkIGFmdGVyIHRoaXMgb3Bjb2RlLgorICAgIGlmICh0
eXBlICE9PSAnU3ViRXhwcmVzc2lvbicpIHsKKyAgICAgIGlmICh0eXBlb2Ygc3RyaW5nID09PSAn
c3RyaW5nJykgeworICAgICAgICB0aGlzLnB1c2hTdHJpbmcoc3RyaW5nKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHRoaXMucHVzaFN0YWNrTGl0ZXJhbChzdHJpbmcpOworICAgICAgfQorICAg
IH0KKyAgfSwKKworICBlbXB0eUhhc2g6IGZ1bmN0aW9uKG9taXRFbXB0eSkgeworICAgIGlmICh0
aGlzLnRyYWNrSWRzKSB7CisgICAgICB0aGlzLnB1c2goJ3t9Jyk7IC8vIGhhc2hJZHMKKyAgICB9
CisgICAgaWYgKHRoaXMuc3RyaW5nUGFyYW1zKSB7CisgICAgICB0aGlzLnB1c2goJ3t9Jyk7IC8v
IGhhc2hDb250ZXh0cworICAgICAgdGhpcy5wdXNoKCd7fScpOyAvLyBoYXNoVHlwZXMKKyAgICB9
CisgICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFsKG9taXRFbXB0eSA/ICd1bmRlZmluZWQnIDogJ3t9
Jyk7CisgIH0sCisgIHB1c2hIYXNoOiBmdW5jdGlvbigpIHsKKyAgICBpZiAodGhpcy5oYXNoKSB7
CisgICAgICB0aGlzLmhhc2hlcy5wdXNoKHRoaXMuaGFzaCk7CisgICAgfQorICAgIHRoaXMuaGFz
aCA9IHt2YWx1ZXM6IFtdLCB0eXBlczogW10sIGNvbnRleHRzOiBbXSwgaWRzOiBbXX07CisgIH0s
CisgIHBvcEhhc2g6IGZ1bmN0aW9uKCkgeworICAgIGxldCBoYXNoID0gdGhpcy5oYXNoOworICAg
IHRoaXMuaGFzaCA9IHRoaXMuaGFzaGVzLnBvcCgpOworCisgICAgaWYgKHRoaXMudHJhY2tJZHMp
IHsKKyAgICAgIHRoaXMucHVzaCh0aGlzLm9iamVjdExpdGVyYWwoaGFzaC5pZHMpKTsKKyAgICB9
CisgICAgaWYgKHRoaXMuc3RyaW5nUGFyYW1zKSB7CisgICAgICB0aGlzLnB1c2godGhpcy5vYmpl
Y3RMaXRlcmFsKGhhc2guY29udGV4dHMpKTsKKyAgICAgIHRoaXMucHVzaCh0aGlzLm9iamVjdExp
dGVyYWwoaGFzaC50eXBlcykpOworICAgIH0KKworICAgIHRoaXMucHVzaCh0aGlzLm9iamVjdExp
dGVyYWwoaGFzaC52YWx1ZXMpKTsKKyAgfSwKKworICAvLyBbcHVzaFN0cmluZ10KKyAgLy8KKyAg
Ly8gT24gc3RhY2ssIGJlZm9yZTogLi4uCisgIC8vIE9uIHN0YWNrLCBhZnRlcjogcXVvdGVkU3Ry
aW5nKHN0cmluZyksIC4uLgorICAvLworICAvLyBQdXNoIGEgcXVvdGVkIHZlcnNpb24gb2YgYHN0
cmluZ2Agb250byB0aGUgc3RhY2sKKyAgcHVzaFN0cmluZzogZnVuY3Rpb24oc3RyaW5nKSB7Cisg
ICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFsKHRoaXMucXVvdGVkU3RyaW5nKHN0cmluZykpOworICB9
LAorCisgIC8vIFtwdXNoTGl0ZXJhbF0KKyAgLy8KKyAgLy8gT24gc3RhY2ssIGJlZm9yZTogLi4u
CisgIC8vIE9uIHN0YWNrLCBhZnRlcjogdmFsdWUsIC4uLgorICAvLworICAvLyBQdXNoZXMgYSB2
YWx1ZSBvbnRvIHRoZSBzdGFjay4gVGhpcyBvcGVyYXRpb24gcHJldmVudHMKKyAgLy8gdGhlIGNv
bXBpbGVyIGZyb20gY3JlYXRpbmcgYSB0ZW1wb3JhcnkgdmFyaWFibGUgdG8gaG9sZAorICAvLyBp
dC4KKyAgcHVzaExpdGVyYWw6IGZ1bmN0aW9uKHZhbHVlKSB7CisgICAgdGhpcy5wdXNoU3RhY2tM
aXRlcmFsKHZhbHVlKTsKKyAgfSwKKworICAvLyBbcHVzaFByb2dyYW1dCisgIC8vCisgIC8vIE9u
IHN0YWNrLCBiZWZvcmU6IC4uLgorICAvLyBPbiBzdGFjaywgYWZ0ZXI6IHByb2dyYW0oZ3VpZCks
IC4uLgorICAvLworICAvLyBQdXNoIGEgcHJvZ3JhbSBleHByZXNzaW9uIG9udG8gdGhlIHN0YWNr
LiBUaGlzIHRha2VzCisgIC8vIGEgY29tcGlsZS10aW1lIGd1aWQgYW5kIGNvbnZlcnRzIGl0IGlu
dG8gYSBydW50aW1lLWFjY2Vzc2libGUKKyAgLy8gZXhwcmVzc2lvbi4KKyAgcHVzaFByb2dyYW06
IGZ1bmN0aW9uKGd1aWQpIHsKKyAgICBpZiAoZ3VpZCAhPSBudWxsKSB7CisgICAgICB0aGlzLnB1
c2hTdGFja0xpdGVyYWwodGhpcy5wcm9ncmFtRXhwcmVzc2lvbihndWlkKSk7CisgICAgfSBlbHNl
IHsKKyAgICAgIHRoaXMucHVzaFN0YWNrTGl0ZXJhbChudWxsKTsKKyAgICB9CisgIH0sCisKKyAg
Ly8gW3JlZ2lzdGVyRGVjb3JhdG9yXQorICAvLworICAvLyBPbiBzdGFjaywgYmVmb3JlOiBoYXNo
LCBwcm9ncmFtLCBwYXJhbXMuLi4sIC4uLgorICAvLyBPbiBzdGFjaywgYWZ0ZXI6IC4uLgorICAv
LworICAvLyBQb3BzIG9mZiB0aGUgZGVjb3JhdG9yJ3MgcGFyYW1ldGVycywgaW52b2tlcyB0aGUg
ZGVjb3JhdG9yLAorICAvLyBhbmQgaW5zZXJ0cyB0aGUgZGVjb3JhdG9yIGludG8gdGhlIGRlY29y
YXRvcnMgbGlzdC4KKyAgcmVnaXN0ZXJEZWNvcmF0b3IocGFyYW1TaXplLCBuYW1lKSB7CisgICAg
bGV0IGZvdW5kRGVjb3JhdG9yID0gdGhpcy5uYW1lTG9va3VwKCdkZWNvcmF0b3JzJywgbmFtZSwg
J2RlY29yYXRvcicpLAorICAgICAgICBvcHRpb25zID0gdGhpcy5zZXR1cEhlbHBlckFyZ3MobmFt
ZSwgcGFyYW1TaXplKTsKKworICAgIHRoaXMuZGVjb3JhdG9ycy5wdXNoKFsKKyAgICAgICdmbiA9
ICcsCisgICAgICB0aGlzLmRlY29yYXRvcnMuZnVuY3Rpb25DYWxsKGZvdW5kRGVjb3JhdG9yLCAn
JywgWydmbicsICdwcm9wcycsICdjb250YWluZXInLCBvcHRpb25zXSksCisgICAgICAnIHx8IGZu
OycKKyAgICBdKTsKKyAgfSwKKworICAvLyBbaW52b2tlSGVscGVyXQorICAvLworICAvLyBPbiBz
dGFjaywgYmVmb3JlOiBoYXNoLCBpbnZlcnNlLCBwcm9ncmFtLCBwYXJhbXMuLi4sIC4uLgorICAv
LyBPbiBzdGFjaywgYWZ0ZXI6IHJlc3VsdCBvZiBoZWxwZXIgaW52b2NhdGlvbgorICAvLworICAv
LyBQb3BzIG9mZiB0aGUgaGVscGVyJ3MgcGFyYW1ldGVycywgaW52b2tlcyB0aGUgaGVscGVyLAor
ICAvLyBhbmQgcHVzaGVzIHRoZSBoZWxwZXIncyByZXR1cm4gdmFsdWUgb250byB0aGUgc3RhY2su
CisgIC8vCisgIC8vIElmIHRoZSBoZWxwZXIgaXMgbm90IGZvdW5kLCBgaGVscGVyTWlzc2luZ2Ag
aXMgY2FsbGVkLgorICBpbnZva2VIZWxwZXI6IGZ1bmN0aW9uKHBhcmFtU2l6ZSwgbmFtZSwgaXNT
aW1wbGUpIHsKKyAgICBsZXQgbm9uSGVscGVyID0gdGhpcy5wb3BTdGFjaygpLAorICAgICAgICBo
ZWxwZXIgPSB0aGlzLnNldHVwSGVscGVyKHBhcmFtU2l6ZSwgbmFtZSksCisgICAgICAgIHNpbXBs
ZSA9IGlzU2ltcGxlID8gW2hlbHBlci5uYW1lLCAnIHx8ICddIDogJyc7CisKKyAgICBsZXQgbG9v
a3VwID0gWycoJ10uY29uY2F0KHNpbXBsZSwgbm9uSGVscGVyKTsKKyAgICBpZiAoIXRoaXMub3B0
aW9ucy5zdHJpY3QpIHsKKyAgICAgIGxvb2t1cC5wdXNoKCcgfHwgJywgdGhpcy5hbGlhc2FibGUo
J2hlbHBlcnMuaGVscGVyTWlzc2luZycpKTsKKyAgICB9CisgICAgbG9va3VwLnB1c2goJyknKTsK
KworICAgIHRoaXMucHVzaCh0aGlzLnNvdXJjZS5mdW5jdGlvbkNhbGwobG9va3VwLCAnY2FsbCcs
IGhlbHBlci5jYWxsUGFyYW1zKSk7CisgIH0sCisKKyAgLy8gW2ludm9rZUtub3duSGVscGVyXQor
ICAvLworICAvLyBPbiBzdGFjaywgYmVmb3JlOiBoYXNoLCBpbnZlcnNlLCBwcm9ncmFtLCBwYXJh
bXMuLi4sIC4uLgorICAvLyBPbiBzdGFjaywgYWZ0ZXI6IHJlc3VsdCBvZiBoZWxwZXIgaW52b2Nh
dGlvbgorICAvLworICAvLyBUaGlzIG9wZXJhdGlvbiBpcyB1c2VkIHdoZW4gdGhlIGhlbHBlciBp
cyBrbm93biB0byBleGlzdCwKKyAgLy8gc28gYSBgaGVscGVyTWlzc2luZ2AgZmFsbGJhY2sgaXMg
bm90IHJlcXVpcmVkLgorICBpbnZva2VLbm93bkhlbHBlcjogZnVuY3Rpb24ocGFyYW1TaXplLCBu
YW1lKSB7CisgICAgbGV0IGhlbHBlciA9IHRoaXMuc2V0dXBIZWxwZXIocGFyYW1TaXplLCBuYW1l
KTsKKyAgICB0aGlzLnB1c2godGhpcy5zb3VyY2UuZnVuY3Rpb25DYWxsKGhlbHBlci5uYW1lLCAn
Y2FsbCcsIGhlbHBlci5jYWxsUGFyYW1zKSk7CisgIH0sCisKKyAgLy8gW2ludm9rZUFtYmlndW91
c10KKyAgLy8KKyAgLy8gT24gc3RhY2ssIGJlZm9yZTogaGFzaCwgaW52ZXJzZSwgcHJvZ3JhbSwg
cGFyYW1zLi4uLCAuLi4KKyAgLy8gT24gc3RhY2ssIGFmdGVyOiByZXN1bHQgb2YgZGlzYW1iaWd1
YXRpb24KKyAgLy8KKyAgLy8gVGhpcyBvcGVyYXRpb24gaXMgdXNlZCB3aGVuIGFuIGV4cHJlc3Np
b24gbGlrZSBge3tmb299fWAKKyAgLy8gaXMgcHJvdmlkZWQsIGJ1dCB3ZSBkb24ndCBrbm93IGF0
IGNvbXBpbGUtdGltZSB3aGV0aGVyIGl0CisgIC8vIGlzIGEgaGVscGVyIG9yIGEgcGF0aC4KKyAg
Ly8KKyAgLy8gVGhpcyBvcGVyYXRpb24gZW1pdHMgbW9yZSBjb2RlIHRoYW4gdGhlIG90aGVyIG9w
dGlvbnMsCisgIC8vIGFuZCBjYW4gYmUgYXZvaWRlZCBieSBwYXNzaW5nIHRoZSBga25vd25IZWxw
ZXJzYCBhbmQKKyAgLy8gYGtub3duSGVscGVyc09ubHlgIGZsYWdzIGF0IGNvbXBpbGUtdGltZS4K
KyAgaW52b2tlQW1iaWd1b3VzOiBmdW5jdGlvbihuYW1lLCBoZWxwZXJDYWxsKSB7CisgICAgdGhp
cy51c2VSZWdpc3RlcignaGVscGVyJyk7CisKKyAgICBsZXQgbm9uSGVscGVyID0gdGhpcy5wb3BT
dGFjaygpOworCisgICAgdGhpcy5lbXB0eUhhc2goKTsKKyAgICBsZXQgaGVscGVyID0gdGhpcy5z
ZXR1cEhlbHBlcigwLCBuYW1lLCBoZWxwZXJDYWxsKTsKKworICAgIGxldCBoZWxwZXJOYW1lID0g
dGhpcy5sYXN0SGVscGVyID0gdGhpcy5uYW1lTG9va3VwKCdoZWxwZXJzJywgbmFtZSwgJ2hlbHBl
cicpOworCisgICAgbGV0IGxvb2t1cCA9IFsnKCcsICcoaGVscGVyID0gJywgaGVscGVyTmFtZSwg
JyB8fCAnLCBub25IZWxwZXIsICcpJ107CisgICAgaWYgKCF0aGlzLm9wdGlvbnMuc3RyaWN0KSB7
CisgICAgICBsb29rdXBbMF0gPSAnKGhlbHBlciA9ICc7CisgICAgICBsb29rdXAucHVzaCgKKyAg
ICAgICAgJyAhPSBudWxsID8gaGVscGVyIDogJywKKyAgICAgICAgdGhpcy5hbGlhc2FibGUoJ2hl
bHBlcnMuaGVscGVyTWlzc2luZycpCisgICAgICApOworICAgIH0KKworICAgIHRoaXMucHVzaChb
CisgICAgICAgICcoJywgbG9va3VwLAorICAgICAgICAoaGVscGVyLnBhcmFtc0luaXQgPyBbJyks
KCcsIGhlbHBlci5wYXJhbXNJbml0XSA6IFtdKSwgJyksJywKKyAgICAgICAgJyh0eXBlb2YgaGVs
cGVyID09PSAnLCB0aGlzLmFsaWFzYWJsZSgnImZ1bmN0aW9uIicpLCAnID8gJywKKyAgICAgICAg
dGhpcy5zb3VyY2UuZnVuY3Rpb25DYWxsKCdoZWxwZXInLCAnY2FsbCcsIGhlbHBlci5jYWxsUGFy
YW1zKSwgJyA6IGhlbHBlcikpJworICAgIF0pOworICB9LAorCisgIC8vIFtpbnZva2VQYXJ0aWFs
XQorICAvLworICAvLyBPbiBzdGFjaywgYmVmb3JlOiBjb250ZXh0LCAuLi4KKyAgLy8gT24gc3Rh
Y2sgYWZ0ZXI6IHJlc3VsdCBvZiBwYXJ0aWFsIGludm9jYXRpb24KKyAgLy8KKyAgLy8gVGhpcyBv
cGVyYXRpb24gcG9wcyBvZmYgYSBjb250ZXh0LCBpbnZva2VzIGEgcGFydGlhbCB3aXRoIHRoYXQg
Y29udGV4dCwKKyAgLy8gYW5kIHB1c2hlcyB0aGUgcmVzdWx0IG9mIHRoZSBpbnZvY2F0aW9uIGJh
Y2suCisgIGludm9rZVBhcnRpYWw6IGZ1bmN0aW9uKGlzRHluYW1pYywgbmFtZSwgaW5kZW50KSB7
CisgICAgbGV0IHBhcmFtcyA9IFtdLAorICAgICAgICBvcHRpb25zID0gdGhpcy5zZXR1cFBhcmFt
cyhuYW1lLCAxLCBwYXJhbXMpOworCisgICAgaWYgKGlzRHluYW1pYykgeworICAgICAgbmFtZSA9
IHRoaXMucG9wU3RhY2soKTsKKyAgICAgIGRlbGV0ZSBvcHRpb25zLm5hbWU7CisgICAgfQorCisg
ICAgaWYgKGluZGVudCkgeworICAgICAgb3B0aW9ucy5pbmRlbnQgPSBKU09OLnN0cmluZ2lmeShp
bmRlbnQpOworICAgIH0KKyAgICBvcHRpb25zLmhlbHBlcnMgPSAnaGVscGVycyc7CisgICAgb3B0
aW9ucy5wYXJ0aWFscyA9ICdwYXJ0aWFscyc7CisgICAgb3B0aW9ucy5kZWNvcmF0b3JzID0gJ2Nv
bnRhaW5lci5kZWNvcmF0b3JzJzsKKworICAgIGlmICghaXNEeW5hbWljKSB7CisgICAgICBwYXJh
bXMudW5zaGlmdCh0aGlzLm5hbWVMb29rdXAoJ3BhcnRpYWxzJywgbmFtZSwgJ3BhcnRpYWwnKSk7
CisgICAgfSBlbHNlIHsKKyAgICAgIHBhcmFtcy51bnNoaWZ0KG5hbWUpOworICAgIH0KKworICAg
IGlmICh0aGlzLm9wdGlvbnMuY29tcGF0KSB7CisgICAgICBvcHRpb25zLmRlcHRocyA9ICdkZXB0
aHMnOworICAgIH0KKyAgICBvcHRpb25zID0gdGhpcy5vYmplY3RMaXRlcmFsKG9wdGlvbnMpOwor
ICAgIHBhcmFtcy5wdXNoKG9wdGlvbnMpOworCisgICAgdGhpcy5wdXNoKHRoaXMuc291cmNlLmZ1
bmN0aW9uQ2FsbCgnY29udGFpbmVyLmludm9rZVBhcnRpYWwnLCAnJywgcGFyYW1zKSk7CisgIH0s
CisKKyAgLy8gW2Fzc2lnblRvSGFzaF0KKyAgLy8KKyAgLy8gT24gc3RhY2ssIGJlZm9yZTogdmFs
dWUsIC4uLiwgaGFzaCwgLi4uCisgIC8vIE9uIHN0YWNrLCBhZnRlcjogLi4uLCBoYXNoLCAuLi4K
KyAgLy8KKyAgLy8gUG9wcyBhIHZhbHVlIG9mZiB0aGUgc3RhY2sgYW5kIGFzc2lnbnMgaXQgdG8g
dGhlIGN1cnJlbnQgaGFzaAorICBhc3NpZ25Ub0hhc2g6IGZ1bmN0aW9uKGtleSkgeworICAgIGxl
dCB2YWx1ZSA9IHRoaXMucG9wU3RhY2soKSwKKyAgICAgICAgY29udGV4dCwKKyAgICAgICAgdHlw
ZSwKKyAgICAgICAgaWQ7CisKKyAgICBpZiAodGhpcy50cmFja0lkcykgeworICAgICAgaWQgPSB0
aGlzLnBvcFN0YWNrKCk7CisgICAgfQorICAgIGlmICh0aGlzLnN0cmluZ1BhcmFtcykgeworICAg
ICAgdHlwZSA9IHRoaXMucG9wU3RhY2soKTsKKyAgICAgIGNvbnRleHQgPSB0aGlzLnBvcFN0YWNr
KCk7CisgICAgfQorCisgICAgbGV0IGhhc2ggPSB0aGlzLmhhc2g7CisgICAgaWYgKGNvbnRleHQp
IHsKKyAgICAgIGhhc2guY29udGV4dHNba2V5XSA9IGNvbnRleHQ7CisgICAgfQorICAgIGlmICh0
eXBlKSB7CisgICAgICBoYXNoLnR5cGVzW2tleV0gPSB0eXBlOworICAgIH0KKyAgICBpZiAoaWQp
IHsKKyAgICAgIGhhc2guaWRzW2tleV0gPSBpZDsKKyAgICB9CisgICAgaGFzaC52YWx1ZXNba2V5
XSA9IHZhbHVlOworICB9LAorCisgIHB1c2hJZDogZnVuY3Rpb24odHlwZSwgbmFtZSwgY2hpbGQp
IHsKKyAgICBpZiAodHlwZSA9PT0gJ0Jsb2NrUGFyYW0nKSB7CisgICAgICB0aGlzLnB1c2hTdGFj
a0xpdGVyYWwoCisgICAgICAgICAgJ2Jsb2NrUGFyYW1zWycgKyBuYW1lWzBdICsgJ10ucGF0aFsn
ICsgbmFtZVsxXSArICddJworICAgICAgICAgICsgKGNoaWxkID8gJyArICcgKyBKU09OLnN0cmlu
Z2lmeSgnLicgKyBjaGlsZCkgOiAnJykpOworICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ1BhdGhF
eHByZXNzaW9uJykgeworICAgICAgdGhpcy5wdXNoU3RyaW5nKG5hbWUpOworICAgIH0gZWxzZSBp
ZiAodHlwZSA9PT0gJ1N1YkV4cHJlc3Npb24nKSB7CisgICAgICB0aGlzLnB1c2hTdGFja0xpdGVy
YWwoJ3RydWUnKTsKKyAgICB9IGVsc2UgeworICAgICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFsKCdu
dWxsJyk7CisgICAgfQorICB9LAorCisgIC8vIEhFTFBFUlMKKworICBjb21waWxlcjogSmF2YVNj
cmlwdENvbXBpbGVyLAorCisgIGNvbXBpbGVDaGlsZHJlbjogZnVuY3Rpb24oZW52aXJvbm1lbnQs
IG9wdGlvbnMpIHsKKyAgICBsZXQgY2hpbGRyZW4gPSBlbnZpcm9ubWVudC5jaGlsZHJlbiwgY2hp
bGQsIGNvbXBpbGVyOworCisgICAgZm9yIChsZXQgaSA9IDAsIGwgPSBjaGlsZHJlbi5sZW5ndGg7
IGkgPCBsOyBpKyspIHsKKyAgICAgIGNoaWxkID0gY2hpbGRyZW5baV07CisgICAgICBjb21waWxl
ciA9IG5ldyB0aGlzLmNvbXBpbGVyKCk7ICAgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbmV3LWNh
cAorCisgICAgICBsZXQgZXhpc3RpbmcgPSB0aGlzLm1hdGNoRXhpc3RpbmdQcm9ncmFtKGNoaWxk
KTsKKworICAgICAgaWYgKGV4aXN0aW5nID09IG51bGwpIHsKKyAgICAgICAgdGhpcy5jb250ZXh0
LnByb2dyYW1zLnB1c2goJycpOyAgICAgLy8gUGxhY2Vob2xkZXIgdG8gcHJldmVudCBuYW1lIGNv
bmZsaWN0cyBmb3IgbmVzdGVkIGNoaWxkcmVuCisgICAgICAgIGxldCBpbmRleCA9IHRoaXMuY29u
dGV4dC5wcm9ncmFtcy5sZW5ndGg7CisgICAgICAgIGNoaWxkLmluZGV4ID0gaW5kZXg7CisgICAg
ICAgIGNoaWxkLm5hbWUgPSAncHJvZ3JhbScgKyBpbmRleDsKKyAgICAgICAgdGhpcy5jb250ZXh0
LnByb2dyYW1zW2luZGV4XSA9IGNvbXBpbGVyLmNvbXBpbGUoY2hpbGQsIG9wdGlvbnMsIHRoaXMu
Y29udGV4dCwgIXRoaXMucHJlY29tcGlsZSk7CisgICAgICAgIHRoaXMuY29udGV4dC5kZWNvcmF0
b3JzW2luZGV4XSA9IGNvbXBpbGVyLmRlY29yYXRvcnM7CisgICAgICAgIHRoaXMuY29udGV4dC5l
bnZpcm9ubWVudHNbaW5kZXhdID0gY2hpbGQ7CisKKyAgICAgICAgdGhpcy51c2VEZXB0aHMgPSB0
aGlzLnVzZURlcHRocyB8fCBjb21waWxlci51c2VEZXB0aHM7CisgICAgICAgIHRoaXMudXNlQmxv
Y2tQYXJhbXMgPSB0aGlzLnVzZUJsb2NrUGFyYW1zIHx8IGNvbXBpbGVyLnVzZUJsb2NrUGFyYW1z
OworICAgICAgICBjaGlsZC51c2VEZXB0aHMgPSB0aGlzLnVzZURlcHRoczsKKyAgICAgICAgY2hp
bGQudXNlQmxvY2tQYXJhbXMgPSB0aGlzLnVzZUJsb2NrUGFyYW1zOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgY2hpbGQuaW5kZXggPSBleGlzdGluZy5pbmRleDsKKyAgICAgICAgY2hpbGQubmFt
ZSA9ICdwcm9ncmFtJyArIGV4aXN0aW5nLmluZGV4OworCisgICAgICAgIHRoaXMudXNlRGVwdGhz
ID0gdGhpcy51c2VEZXB0aHMgfHwgZXhpc3RpbmcudXNlRGVwdGhzOworICAgICAgICB0aGlzLnVz
ZUJsb2NrUGFyYW1zID0gdGhpcy51c2VCbG9ja1BhcmFtcyB8fCBleGlzdGluZy51c2VCbG9ja1Bh
cmFtczsKKyAgICAgIH0KKyAgICB9CisgIH0sCisgIG1hdGNoRXhpc3RpbmdQcm9ncmFtOiBmdW5j
dGlvbihjaGlsZCkgeworICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSB0aGlzLmNvbnRleHQuZW52
aXJvbm1lbnRzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICBsZXQgZW52aXJvbm1lbnQg
PSB0aGlzLmNvbnRleHQuZW52aXJvbm1lbnRzW2ldOworICAgICAgaWYgKGVudmlyb25tZW50ICYm
IGVudmlyb25tZW50LmVxdWFscyhjaGlsZCkpIHsKKyAgICAgICAgcmV0dXJuIGVudmlyb25tZW50
OworICAgICAgfQorICAgIH0KKyAgfSwKKworICBwcm9ncmFtRXhwcmVzc2lvbjogZnVuY3Rpb24o
Z3VpZCkgeworICAgIGxldCBjaGlsZCA9IHRoaXMuZW52aXJvbm1lbnQuY2hpbGRyZW5bZ3VpZF0s
CisgICAgICAgIHByb2dyYW1QYXJhbXMgPSBbY2hpbGQuaW5kZXgsICdkYXRhJywgY2hpbGQuYmxv
Y2tQYXJhbXNdOworCisgICAgaWYgKHRoaXMudXNlQmxvY2tQYXJhbXMgfHwgdGhpcy51c2VEZXB0
aHMpIHsKKyAgICAgIHByb2dyYW1QYXJhbXMucHVzaCgnYmxvY2tQYXJhbXMnKTsKKyAgICB9Cisg
ICAgaWYgKHRoaXMudXNlRGVwdGhzKSB7CisgICAgICBwcm9ncmFtUGFyYW1zLnB1c2goJ2RlcHRo
cycpOworICAgIH0KKworICAgIHJldHVybiAnY29udGFpbmVyLnByb2dyYW0oJyArIHByb2dyYW1Q
YXJhbXMuam9pbignLCAnKSArICcpJzsKKyAgfSwKKworICB1c2VSZWdpc3RlcjogZnVuY3Rpb24o
bmFtZSkgeworICAgIGlmICghdGhpcy5yZWdpc3RlcnNbbmFtZV0pIHsKKyAgICAgIHRoaXMucmVn
aXN0ZXJzW25hbWVdID0gdHJ1ZTsKKyAgICAgIHRoaXMucmVnaXN0ZXJzLmxpc3QucHVzaChuYW1l
KTsKKyAgICB9CisgIH0sCisKKyAgcHVzaDogZnVuY3Rpb24oZXhwcikgeworICAgIGlmICghKGV4
cHIgaW5zdGFuY2VvZiBMaXRlcmFsKSkgeworICAgICAgZXhwciA9IHRoaXMuc291cmNlLndyYXAo
ZXhwcik7CisgICAgfQorCisgICAgdGhpcy5pbmxpbmVTdGFjay5wdXNoKGV4cHIpOworICAgIHJl
dHVybiBleHByOworICB9LAorCisgIHB1c2hTdGFja0xpdGVyYWw6IGZ1bmN0aW9uKGl0ZW0pIHsK
KyAgICB0aGlzLnB1c2gobmV3IExpdGVyYWwoaXRlbSkpOworICB9LAorCisgIHB1c2hTb3VyY2U6
IGZ1bmN0aW9uKHNvdXJjZSkgeworICAgIGlmICh0aGlzLnBlbmRpbmdDb250ZW50KSB7CisgICAg
ICB0aGlzLnNvdXJjZS5wdXNoKAorICAgICAgICAgIHRoaXMuYXBwZW5kVG9CdWZmZXIodGhpcy5z
b3VyY2UucXVvdGVkU3RyaW5nKHRoaXMucGVuZGluZ0NvbnRlbnQpLCB0aGlzLnBlbmRpbmdMb2Nh
dGlvbikpOworICAgICAgdGhpcy5wZW5kaW5nQ29udGVudCA9IHVuZGVmaW5lZDsKKyAgICB9CisK
KyAgICBpZiAoc291cmNlKSB7CisgICAgICB0aGlzLnNvdXJjZS5wdXNoKHNvdXJjZSk7CisgICAg
fQorICB9LAorCisgIHJlcGxhY2VTdGFjazogZnVuY3Rpb24oY2FsbGJhY2spIHsKKyAgICBsZXQg
cHJlZml4ID0gWycoJ10sCisgICAgICAgIHN0YWNrLAorICAgICAgICBjcmVhdGVkU3RhY2ssCisg
ICAgICAgIHVzZWRMaXRlcmFsOworCisgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8KKyAg
ICBpZiAoIXRoaXMuaXNJbmxpbmUoKSkgeworICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigncmVw
bGFjZVN0YWNrIG9uIG5vbi1pbmxpbmUnKTsKKyAgICB9CisKKyAgICAvLyBXZSB3YW50IHRvIG1l
cmdlIHRoZSBpbmxpbmUgc3RhdGVtZW50IGludG8gdGhlIHJlcGxhY2VtZW50IHN0YXRlbWVudCB2
aWEgJywnCisgICAgbGV0IHRvcCA9IHRoaXMucG9wU3RhY2sodHJ1ZSk7CisKKyAgICBpZiAodG9w
IGluc3RhbmNlb2YgTGl0ZXJhbCkgeworICAgICAgLy8gTGl0ZXJhbHMgZG8gbm90IG5lZWQgdG8g
YmUgaW5saW5lZAorICAgICAgc3RhY2sgPSBbdG9wLnZhbHVlXTsKKyAgICAgIHByZWZpeCA9IFsn
KCcsIHN0YWNrXTsKKyAgICAgIHVzZWRMaXRlcmFsID0gdHJ1ZTsKKyAgICB9IGVsc2UgeworICAg
ICAgLy8gR2V0IG9yIGNyZWF0ZSB0aGUgY3VycmVudCBzdGFjayBuYW1lIGZvciB1c2UgYnkgdGhl
IGlubGluZQorICAgICAgY3JlYXRlZFN0YWNrID0gdHJ1ZTsKKyAgICAgIGxldCBuYW1lID0gdGhp
cy5pbmNyU3RhY2soKTsKKworICAgICAgcHJlZml4ID0gWycoKCcsIHRoaXMucHVzaChuYW1lKSwg
JyA9ICcsIHRvcCwgJyknXTsKKyAgICAgIHN0YWNrID0gdGhpcy50b3BTdGFjaygpOworICAgIH0K
KworICAgIGxldCBpdGVtID0gY2FsbGJhY2suY2FsbCh0aGlzLCBzdGFjayk7CisKKyAgICBpZiAo
IXVzZWRMaXRlcmFsKSB7CisgICAgICB0aGlzLnBvcFN0YWNrKCk7CisgICAgfQorICAgIGlmIChj
cmVhdGVkU3RhY2spIHsKKyAgICAgIHRoaXMuc3RhY2tTbG90LS07CisgICAgfQorICAgIHRoaXMu
cHVzaChwcmVmaXguY29uY2F0KGl0ZW0sICcpJykpOworICB9LAorCisgIGluY3JTdGFjazogZnVu
Y3Rpb24oKSB7CisgICAgdGhpcy5zdGFja1Nsb3QrKzsKKyAgICBpZiAodGhpcy5zdGFja1Nsb3Qg
PiB0aGlzLnN0YWNrVmFycy5sZW5ndGgpIHsgdGhpcy5zdGFja1ZhcnMucHVzaCgnc3RhY2snICsg
dGhpcy5zdGFja1Nsb3QpOyB9CisgICAgcmV0dXJuIHRoaXMudG9wU3RhY2tOYW1lKCk7CisgIH0s
CisgIHRvcFN0YWNrTmFtZTogZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuICdzdGFjaycgKyB0aGlz
LnN0YWNrU2xvdDsKKyAgfSwKKyAgZmx1c2hJbmxpbmU6IGZ1bmN0aW9uKCkgeworICAgIGxldCBp
bmxpbmVTdGFjayA9IHRoaXMuaW5saW5lU3RhY2s7CisgICAgdGhpcy5pbmxpbmVTdGFjayA9IFtd
OworICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSBpbmxpbmVTdGFjay5sZW5ndGg7IGkgPCBsZW47
IGkrKykgeworICAgICAgbGV0IGVudHJ5ID0gaW5saW5lU3RhY2tbaV07CisgICAgICAvKiBpc3Rh
bmJ1bCBpZ25vcmUgaWYgKi8KKyAgICAgIGlmIChlbnRyeSBpbnN0YW5jZW9mIExpdGVyYWwpIHsK
KyAgICAgICAgdGhpcy5jb21waWxlU3RhY2sucHVzaChlbnRyeSk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBsZXQgc3RhY2sgPSB0aGlzLmluY3JTdGFjaygpOworICAgICAgICB0aGlzLnB1c2hT
b3VyY2UoW3N0YWNrLCAnID0gJywgZW50cnksICc7J10pOworICAgICAgICB0aGlzLmNvbXBpbGVT
dGFjay5wdXNoKHN0YWNrKTsKKyAgICAgIH0KKyAgICB9CisgIH0sCisgIGlzSW5saW5lOiBmdW5j
dGlvbigpIHsKKyAgICByZXR1cm4gdGhpcy5pbmxpbmVTdGFjay5sZW5ndGg7CisgIH0sCisKKyAg
cG9wU3RhY2s6IGZ1bmN0aW9uKHdyYXBwZWQpIHsKKyAgICBsZXQgaW5saW5lID0gdGhpcy5pc0lu
bGluZSgpLAorICAgICAgICBpdGVtID0gKGlubGluZSA/IHRoaXMuaW5saW5lU3RhY2sgOiB0aGlz
LmNvbXBpbGVTdGFjaykucG9wKCk7CisKKyAgICBpZiAoIXdyYXBwZWQgJiYgKGl0ZW0gaW5zdGFu
Y2VvZiBMaXRlcmFsKSkgeworICAgICAgcmV0dXJuIGl0ZW0udmFsdWU7CisgICAgfSBlbHNlIHsK
KyAgICAgIGlmICghaW5saW5lKSB7CisgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICov
CisgICAgICAgIGlmICghdGhpcy5zdGFja1Nsb3QpIHsKKyAgICAgICAgICB0aHJvdyBuZXcgRXhj
ZXB0aW9uKCdJbnZhbGlkIHN0YWNrIHBvcCcpOworICAgICAgICB9CisgICAgICAgIHRoaXMuc3Rh
Y2tTbG90LS07CisgICAgICB9CisgICAgICByZXR1cm4gaXRlbTsKKyAgICB9CisgIH0sCisKKyAg
dG9wU3RhY2s6IGZ1bmN0aW9uKCkgeworICAgIGxldCBzdGFjayA9ICh0aGlzLmlzSW5saW5lKCkg
PyB0aGlzLmlubGluZVN0YWNrIDogdGhpcy5jb21waWxlU3RhY2spLAorICAgICAgICBpdGVtID0g
c3RhY2tbc3RhY2subGVuZ3RoIC0gMV07CisKKyAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi8K
KyAgICBpZiAoaXRlbSBpbnN0YW5jZW9mIExpdGVyYWwpIHsKKyAgICAgIHJldHVybiBpdGVtLnZh
bHVlOworICAgIH0gZWxzZSB7CisgICAgICByZXR1cm4gaXRlbTsKKyAgICB9CisgIH0sCisKKyAg
Y29udGV4dE5hbWU6IGZ1bmN0aW9uKGNvbnRleHQpIHsKKyAgICBpZiAodGhpcy51c2VEZXB0aHMg
JiYgY29udGV4dCkgeworICAgICAgcmV0dXJuICdkZXB0aHNbJyArIGNvbnRleHQgKyAnXSc7Cisg
ICAgfSBlbHNlIHsKKyAgICAgIHJldHVybiAnZGVwdGgnICsgY29udGV4dDsKKyAgICB9CisgIH0s
CisKKyAgcXVvdGVkU3RyaW5nOiBmdW5jdGlvbihzdHIpIHsKKyAgICByZXR1cm4gdGhpcy5zb3Vy
Y2UucXVvdGVkU3RyaW5nKHN0cik7CisgIH0sCisKKyAgb2JqZWN0TGl0ZXJhbDogZnVuY3Rpb24o
b2JqKSB7CisgICAgcmV0dXJuIHRoaXMuc291cmNlLm9iamVjdExpdGVyYWwob2JqKTsKKyAgfSwK
KworICBhbGlhc2FibGU6IGZ1bmN0aW9uKG5hbWUpIHsKKyAgICBsZXQgcmV0ID0gdGhpcy5hbGlh
c2VzW25hbWVdOworICAgIGlmIChyZXQpIHsKKyAgICAgIHJldC5yZWZlcmVuY2VDb3VudCsrOwor
ICAgICAgcmV0dXJuIHJldDsKKyAgICB9CisKKyAgICByZXQgPSB0aGlzLmFsaWFzZXNbbmFtZV0g
PSB0aGlzLnNvdXJjZS53cmFwKG5hbWUpOworICAgIHJldC5hbGlhc2FibGUgPSB0cnVlOworICAg
IHJldC5yZWZlcmVuY2VDb3VudCA9IDE7CisKKyAgICByZXR1cm4gcmV0OworICB9LAorCisgIHNl
dHVwSGVscGVyOiBmdW5jdGlvbihwYXJhbVNpemUsIG5hbWUsIGJsb2NrSGVscGVyKSB7CisgICAg
bGV0IHBhcmFtcyA9IFtdLAorICAgICAgICBwYXJhbXNJbml0ID0gdGhpcy5zZXR1cEhlbHBlckFy
Z3MobmFtZSwgcGFyYW1TaXplLCBwYXJhbXMsIGJsb2NrSGVscGVyKTsKKyAgICBsZXQgZm91bmRI
ZWxwZXIgPSB0aGlzLm5hbWVMb29rdXAoJ2hlbHBlcnMnLCBuYW1lLCAnaGVscGVyJyksCisgICAg
ICAgIGNhbGxDb250ZXh0ID0gdGhpcy5hbGlhc2FibGUoYCR7dGhpcy5jb250ZXh0TmFtZSgwKX0g
IT0gbnVsbCA/ICR7dGhpcy5jb250ZXh0TmFtZSgwKX0gOiB7fWApOworCisgICAgcmV0dXJuIHsK
KyAgICAgIHBhcmFtczogcGFyYW1zLAorICAgICAgcGFyYW1zSW5pdDogcGFyYW1zSW5pdCwKKyAg
ICAgIG5hbWU6IGZvdW5kSGVscGVyLAorICAgICAgY2FsbFBhcmFtczogW2NhbGxDb250ZXh0XS5j
b25jYXQocGFyYW1zKQorICAgIH07CisgIH0sCisKKyAgc2V0dXBQYXJhbXM6IGZ1bmN0aW9uKGhl
bHBlciwgcGFyYW1TaXplLCBwYXJhbXMpIHsKKyAgICBsZXQgb3B0aW9ucyA9IHt9LAorICAgICAg
ICBjb250ZXh0cyA9IFtdLAorICAgICAgICB0eXBlcyA9IFtdLAorICAgICAgICBpZHMgPSBbXSwK
KyAgICAgICAgb2JqZWN0QXJncyA9ICFwYXJhbXMsCisgICAgICAgIHBhcmFtOworCisgICAgaWYg
KG9iamVjdEFyZ3MpIHsKKyAgICAgIHBhcmFtcyA9IFtdOworICAgIH0KKworICAgIG9wdGlvbnMu
bmFtZSA9IHRoaXMucXVvdGVkU3RyaW5nKGhlbHBlcik7CisgICAgb3B0aW9ucy5oYXNoID0gdGhp
cy5wb3BTdGFjaygpOworCisgICAgaWYgKHRoaXMudHJhY2tJZHMpIHsKKyAgICAgIG9wdGlvbnMu
aGFzaElkcyA9IHRoaXMucG9wU3RhY2soKTsKKyAgICB9CisgICAgaWYgKHRoaXMuc3RyaW5nUGFy
YW1zKSB7CisgICAgICBvcHRpb25zLmhhc2hUeXBlcyA9IHRoaXMucG9wU3RhY2soKTsKKyAgICAg
IG9wdGlvbnMuaGFzaENvbnRleHRzID0gdGhpcy5wb3BTdGFjaygpOworICAgIH0KKworICAgIGxl
dCBpbnZlcnNlID0gdGhpcy5wb3BTdGFjaygpLAorICAgICAgICBwcm9ncmFtID0gdGhpcy5wb3BT
dGFjaygpOworCisgICAgLy8gQXZvaWQgc2V0dGluZyBmbiBhbmQgaW52ZXJzZSBpZiBuZWl0aGVy
IGFyZSBzZXQuIFRoaXMgYWxsb3dzCisgICAgLy8gaGVscGVycyB0byBkbyBhIGNoZWNrIGZvciBg
aWYgKG9wdGlvbnMuZm4pYAorICAgIGlmIChwcm9ncmFtIHx8IGludmVyc2UpIHsKKyAgICAgIG9w
dGlvbnMuZm4gPSBwcm9ncmFtIHx8ICdjb250YWluZXIubm9vcCc7CisgICAgICBvcHRpb25zLmlu
dmVyc2UgPSBpbnZlcnNlIHx8ICdjb250YWluZXIubm9vcCc7CisgICAgfQorCisgICAgLy8gVGhl
IHBhcmFtZXRlcnMgZ28gb24gdG8gdGhlIHN0YWNrIGluIG9yZGVyIChtYWtpbmcgc3VyZSB0aGF0
IHRoZXkgYXJlIGV2YWx1YXRlZCBpbiBvcmRlcikKKyAgICAvLyBzbyB3ZSBuZWVkIHRvIHBvcCB0
aGVtIG9mZiB0aGUgc3RhY2sgaW4gcmV2ZXJzZSBvcmRlcgorICAgIGxldCBpID0gcGFyYW1TaXpl
OworICAgIHdoaWxlIChpLS0pIHsKKyAgICAgIHBhcmFtID0gdGhpcy5wb3BTdGFjaygpOworICAg
ICAgcGFyYW1zW2ldID0gcGFyYW07CisKKyAgICAgIGlmICh0aGlzLnRyYWNrSWRzKSB7CisgICAg
ICAgIGlkc1tpXSA9IHRoaXMucG9wU3RhY2soKTsKKyAgICAgIH0KKyAgICAgIGlmICh0aGlzLnN0
cmluZ1BhcmFtcykgeworICAgICAgICB0eXBlc1tpXSA9IHRoaXMucG9wU3RhY2soKTsKKyAgICAg
ICAgY29udGV4dHNbaV0gPSB0aGlzLnBvcFN0YWNrKCk7CisgICAgICB9CisgICAgfQorCisgICAg
aWYgKG9iamVjdEFyZ3MpIHsKKyAgICAgIG9wdGlvbnMuYXJncyA9IHRoaXMuc291cmNlLmdlbmVy
YXRlQXJyYXkocGFyYW1zKTsKKyAgICB9CisKKyAgICBpZiAodGhpcy50cmFja0lkcykgeworICAg
ICAgb3B0aW9ucy5pZHMgPSB0aGlzLnNvdXJjZS5nZW5lcmF0ZUFycmF5KGlkcyk7CisgICAgfQor
ICAgIGlmICh0aGlzLnN0cmluZ1BhcmFtcykgeworICAgICAgb3B0aW9ucy50eXBlcyA9IHRoaXMu
c291cmNlLmdlbmVyYXRlQXJyYXkodHlwZXMpOworICAgICAgb3B0aW9ucy5jb250ZXh0cyA9IHRo
aXMuc291cmNlLmdlbmVyYXRlQXJyYXkoY29udGV4dHMpOworICAgIH0KKworICAgIGlmICh0aGlz
Lm9wdGlvbnMuZGF0YSkgeworICAgICAgb3B0aW9ucy5kYXRhID0gJ2RhdGEnOworICAgIH0KKyAg
ICBpZiAodGhpcy51c2VCbG9ja1BhcmFtcykgeworICAgICAgb3B0aW9ucy5ibG9ja1BhcmFtcyA9
ICdibG9ja1BhcmFtcyc7CisgICAgfQorICAgIHJldHVybiBvcHRpb25zOworICB9LAorCisgIHNl
dHVwSGVscGVyQXJnczogZnVuY3Rpb24oaGVscGVyLCBwYXJhbVNpemUsIHBhcmFtcywgdXNlUmVn
aXN0ZXIpIHsKKyAgICBsZXQgb3B0aW9ucyA9IHRoaXMuc2V0dXBQYXJhbXMoaGVscGVyLCBwYXJh
bVNpemUsIHBhcmFtcyk7CisgICAgb3B0aW9ucyA9IHRoaXMub2JqZWN0TGl0ZXJhbChvcHRpb25z
KTsKKyAgICBpZiAodXNlUmVnaXN0ZXIpIHsKKyAgICAgIHRoaXMudXNlUmVnaXN0ZXIoJ29wdGlv
bnMnKTsKKyAgICAgIHBhcmFtcy5wdXNoKCdvcHRpb25zJyk7CisgICAgICByZXR1cm4gWydvcHRp
b25zPScsIG9wdGlvbnNdOworICAgIH0gZWxzZSBpZiAocGFyYW1zKSB7CisgICAgICBwYXJhbXMu
cHVzaChvcHRpb25zKTsKKyAgICAgIHJldHVybiAnJzsKKyAgICB9IGVsc2UgeworICAgICAgcmV0
dXJuIG9wdGlvbnM7CisgICAgfQorICB9Cit9OworCisKKyhmdW5jdGlvbigpIHsKKyAgY29uc3Qg
cmVzZXJ2ZWRXb3JkcyA9ICgKKyAgICAnYnJlYWsgZWxzZSBuZXcgdmFyJyArCisgICAgJyBjYXNl
IGZpbmFsbHkgcmV0dXJuIHZvaWQnICsKKyAgICAnIGNhdGNoIGZvciBzd2l0Y2ggd2hpbGUnICsK
KyAgICAnIGNvbnRpbnVlIGZ1bmN0aW9uIHRoaXMgd2l0aCcgKworICAgICcgZGVmYXVsdCBpZiB0
aHJvdycgKworICAgICcgZGVsZXRlIGluIHRyeScgKworICAgICcgZG8gaW5zdGFuY2VvZiB0eXBl
b2YnICsKKyAgICAnIGFic3RyYWN0IGVudW0gaW50IHNob3J0JyArCisgICAgJyBib29sZWFuIGV4
cG9ydCBpbnRlcmZhY2Ugc3RhdGljJyArCisgICAgJyBieXRlIGV4dGVuZHMgbG9uZyBzdXBlcicg
KworICAgICcgY2hhciBmaW5hbCBuYXRpdmUgc3luY2hyb25pemVkJyArCisgICAgJyBjbGFzcyBm
bG9hdCBwYWNrYWdlIHRocm93cycgKworICAgICcgY29uc3QgZ290byBwcml2YXRlIHRyYW5zaWVu
dCcgKworICAgICcgZGVidWdnZXIgaW1wbGVtZW50cyBwcm90ZWN0ZWQgdm9sYXRpbGUnICsKKyAg
ICAnIGRvdWJsZSBpbXBvcnQgcHVibGljIGxldCB5aWVsZCBhd2FpdCcgKworICAgICcgbnVsbCB0
cnVlIGZhbHNlJworICApLnNwbGl0KCcgJyk7CisKKyAgY29uc3QgY29tcGlsZXJXb3JkcyA9IEph
dmFTY3JpcHRDb21waWxlci5SRVNFUlZFRF9XT1JEUyA9IHt9OworCisgIGZvciAobGV0IGkgPSAw
LCBsID0gcmVzZXJ2ZWRXb3Jkcy5sZW5ndGg7IGkgPCBsOyBpKyspIHsKKyAgICBjb21waWxlcldv
cmRzW3Jlc2VydmVkV29yZHNbaV1dID0gdHJ1ZTsKKyAgfQorfSgpKTsKKworSmF2YVNjcmlwdENv
bXBpbGVyLmlzVmFsaWRKYXZhU2NyaXB0VmFyaWFibGVOYW1lID0gZnVuY3Rpb24obmFtZSkgewor
ICByZXR1cm4gIUphdmFTY3JpcHRDb21waWxlci5SRVNFUlZFRF9XT1JEU1tuYW1lXSAmJiAoL15b
YS16QS1aXyRdWzAtOWEtekEtWl8kXSokLykudGVzdChuYW1lKTsKK307CisKK2Z1bmN0aW9uIHN0
cmljdExvb2t1cChyZXF1aXJlVGVybWluYWwsIGNvbXBpbGVyLCBwYXJ0cywgdHlwZSkgeworICBs
ZXQgc3RhY2sgPSBjb21waWxlci5wb3BTdGFjaygpLAorICAgICAgaSA9IDAsCisgICAgICBsZW4g
PSBwYXJ0cy5sZW5ndGg7CisgIGlmIChyZXF1aXJlVGVybWluYWwpIHsKKyAgICBsZW4tLTsKKyAg
fQorCisgIGZvciAoOyBpIDwgbGVuOyBpKyspIHsKKyAgICBzdGFjayA9IGNvbXBpbGVyLm5hbWVM
b29rdXAoc3RhY2ssIHBhcnRzW2ldLCB0eXBlKTsKKyAgfQorCisgIGlmIChyZXF1aXJlVGVybWlu
YWwpIHsKKyAgICByZXR1cm4gW2NvbXBpbGVyLmFsaWFzYWJsZSgnY29udGFpbmVyLnN0cmljdCcp
LCAnKCcsIHN0YWNrLCAnLCAnLCBjb21waWxlci5xdW90ZWRTdHJpbmcocGFydHNbaV0pLCAnKSdd
OworICB9IGVsc2UgeworICAgIHJldHVybiBzdGFjazsKKyAgfQorfQorCitleHBvcnQgZGVmYXVs
dCBKYXZhU2NyaXB0Q29tcGlsZXI7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9k
ZV9tb2R1bGVzL2hhbmRsZWJhcnMvbGliL2hhbmRsZWJhcnMvY29tcGlsZXIvcGFyc2VyLmpzIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2xpYi9oYW5kbGViYXJz
L2NvbXBpbGVyL3BhcnNlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNGZlNmFlM2EwNDUzMGU0MjdmYmQ0ZDMz
ZGUzYjNkOTU3YzhkNmU3Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25v
ZGVfbW9kdWxlcy9oYW5kbGViYXJzL2xpYi9oYW5kbGViYXJzL2NvbXBpbGVyL3BhcnNlci5qcwpA
QCAtMCwwICsxLDYyMyBAQAorLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8KKy8qIEppc29uIGdl
bmVyYXRlZCBwYXJzZXIgKi8KK3ZhciBoYW5kbGViYXJzID0gKGZ1bmN0aW9uKCl7Cit2YXIgcGFy
c2VyID0ge3RyYWNlOiBmdW5jdGlvbiB0cmFjZSgpIHsgfSwKK3l5OiB7fSwKK3N5bWJvbHNfOiB7
ImVycm9yIjoyLCJyb290IjozLCJwcm9ncmFtIjo0LCJFT0YiOjUsInByb2dyYW1fcmVwZXRpdGlv
bjAiOjYsInN0YXRlbWVudCI6NywibXVzdGFjaGUiOjgsImJsb2NrIjo5LCJyYXdCbG9jayI6MTAs
InBhcnRpYWwiOjExLCJwYXJ0aWFsQmxvY2siOjEyLCJjb250ZW50IjoxMywiQ09NTUVOVCI6MTQs
IkNPTlRFTlQiOjE1LCJvcGVuUmF3QmxvY2siOjE2LCJyYXdCbG9ja19yZXBldGl0aW9uX3BsdXMw
IjoxNywiRU5EX1JBV19CTE9DSyI6MTgsIk9QRU5fUkFXX0JMT0NLIjoxOSwiaGVscGVyTmFtZSI6
MjAsIm9wZW5SYXdCbG9ja19yZXBldGl0aW9uMCI6MjEsIm9wZW5SYXdCbG9ja19vcHRpb24wIjoy
MiwiQ0xPU0VfUkFXX0JMT0NLIjoyMywib3BlbkJsb2NrIjoyNCwiYmxvY2tfb3B0aW9uMCI6MjUs
ImNsb3NlQmxvY2siOjI2LCJvcGVuSW52ZXJzZSI6MjcsImJsb2NrX29wdGlvbjEiOjI4LCJPUEVO
X0JMT0NLIjoyOSwib3BlbkJsb2NrX3JlcGV0aXRpb24wIjozMCwib3BlbkJsb2NrX29wdGlvbjAi
OjMxLCJvcGVuQmxvY2tfb3B0aW9uMSI6MzIsIkNMT1NFIjozMywiT1BFTl9JTlZFUlNFIjozNCwi
b3BlbkludmVyc2VfcmVwZXRpdGlvbjAiOjM1LCJvcGVuSW52ZXJzZV9vcHRpb24wIjozNiwib3Bl
bkludmVyc2Vfb3B0aW9uMSI6MzcsIm9wZW5JbnZlcnNlQ2hhaW4iOjM4LCJPUEVOX0lOVkVSU0Vf
Q0hBSU4iOjM5LCJvcGVuSW52ZXJzZUNoYWluX3JlcGV0aXRpb24wIjo0MCwib3BlbkludmVyc2VD
aGFpbl9vcHRpb24wIjo0MSwib3BlbkludmVyc2VDaGFpbl9vcHRpb24xIjo0MiwiaW52ZXJzZUFu
ZFByb2dyYW0iOjQzLCJJTlZFUlNFIjo0NCwiaW52ZXJzZUNoYWluIjo0NSwiaW52ZXJzZUNoYWlu
X29wdGlvbjAiOjQ2LCJPUEVOX0VOREJMT0NLIjo0NywiT1BFTiI6NDgsIm11c3RhY2hlX3JlcGV0
aXRpb24wIjo0OSwibXVzdGFjaGVfb3B0aW9uMCI6NTAsIk9QRU5fVU5FU0NBUEVEIjo1MSwibXVz
dGFjaGVfcmVwZXRpdGlvbjEiOjUyLCJtdXN0YWNoZV9vcHRpb24xIjo1MywiQ0xPU0VfVU5FU0NB
UEVEIjo1NCwiT1BFTl9QQVJUSUFMIjo1NSwicGFydGlhbE5hbWUiOjU2LCJwYXJ0aWFsX3JlcGV0
aXRpb24wIjo1NywicGFydGlhbF9vcHRpb24wIjo1OCwib3BlblBhcnRpYWxCbG9jayI6NTksIk9Q
RU5fUEFSVElBTF9CTE9DSyI6NjAsIm9wZW5QYXJ0aWFsQmxvY2tfcmVwZXRpdGlvbjAiOjYxLCJv
cGVuUGFydGlhbEJsb2NrX29wdGlvbjAiOjYyLCJwYXJhbSI6NjMsInNleHByIjo2NCwiT1BFTl9T
RVhQUiI6NjUsInNleHByX3JlcGV0aXRpb24wIjo2Niwic2V4cHJfb3B0aW9uMCI6NjcsIkNMT1NF
X1NFWFBSIjo2OCwiaGFzaCI6NjksImhhc2hfcmVwZXRpdGlvbl9wbHVzMCI6NzAsImhhc2hTZWdt
ZW50Ijo3MSwiSUQiOjcyLCJFUVVBTFMiOjczLCJibG9ja1BhcmFtcyI6NzQsIk9QRU5fQkxPQ0tf
UEFSQU1TIjo3NSwiYmxvY2tQYXJhbXNfcmVwZXRpdGlvbl9wbHVzMCI6NzYsIkNMT1NFX0JMT0NL
X1BBUkFNUyI6NzcsInBhdGgiOjc4LCJkYXRhTmFtZSI6NzksIlNUUklORyI6ODAsIk5VTUJFUiI6
ODEsIkJPT0xFQU4iOjgyLCJVTkRFRklORUQiOjgzLCJOVUxMIjo4NCwiREFUQSI6ODUsInBhdGhT
ZWdtZW50cyI6ODYsIlNFUCI6ODcsIiRhY2NlcHQiOjAsIiRlbmQiOjF9LAordGVybWluYWxzXzog
ezI6ImVycm9yIiw1OiJFT0YiLDE0OiJDT01NRU5UIiwxNToiQ09OVEVOVCIsMTg6IkVORF9SQVdf
QkxPQ0siLDE5OiJPUEVOX1JBV19CTE9DSyIsMjM6IkNMT1NFX1JBV19CTE9DSyIsMjk6Ik9QRU5f
QkxPQ0siLDMzOiJDTE9TRSIsMzQ6Ik9QRU5fSU5WRVJTRSIsMzk6Ik9QRU5fSU5WRVJTRV9DSEFJ
TiIsNDQ6IklOVkVSU0UiLDQ3OiJPUEVOX0VOREJMT0NLIiw0ODoiT1BFTiIsNTE6Ik9QRU5fVU5F
U0NBUEVEIiw1NDoiQ0xPU0VfVU5FU0NBUEVEIiw1NToiT1BFTl9QQVJUSUFMIiw2MDoiT1BFTl9Q
QVJUSUFMX0JMT0NLIiw2NToiT1BFTl9TRVhQUiIsNjg6IkNMT1NFX1NFWFBSIiw3MjoiSUQiLDcz
OiJFUVVBTFMiLDc1OiJPUEVOX0JMT0NLX1BBUkFNUyIsNzc6IkNMT1NFX0JMT0NLX1BBUkFNUyIs
ODA6IlNUUklORyIsODE6Ik5VTUJFUiIsODI6IkJPT0xFQU4iLDgzOiJVTkRFRklORUQiLDg0OiJO
VUxMIiw4NToiREFUQSIsODc6IlNFUCJ9LAorcHJvZHVjdGlvbnNfOiBbMCxbMywyXSxbNCwxXSxb
NywxXSxbNywxXSxbNywxXSxbNywxXSxbNywxXSxbNywxXSxbNywxXSxbMTMsMV0sWzEwLDNdLFsx
Niw1XSxbOSw0XSxbOSw0XSxbMjQsNl0sWzI3LDZdLFszOCw2XSxbNDMsMl0sWzQ1LDNdLFs0NSwx
XSxbMjYsM10sWzgsNV0sWzgsNV0sWzExLDVdLFsxMiwzXSxbNTksNV0sWzYzLDFdLFs2MywxXSxb
NjQsNV0sWzY5LDFdLFs3MSwzXSxbNzQsM10sWzIwLDFdLFsyMCwxXSxbMjAsMV0sWzIwLDFdLFsy
MCwxXSxbMjAsMV0sWzIwLDFdLFs1NiwxXSxbNTYsMV0sWzc5LDJdLFs3OCwxXSxbODYsM10sWzg2
LDFdLFs2LDBdLFs2LDJdLFsxNywxXSxbMTcsMl0sWzIxLDBdLFsyMSwyXSxbMjIsMF0sWzIyLDFd
LFsyNSwwXSxbMjUsMV0sWzI4LDBdLFsyOCwxXSxbMzAsMF0sWzMwLDJdLFszMSwwXSxbMzEsMV0s
WzMyLDBdLFszMiwxXSxbMzUsMF0sWzM1LDJdLFszNiwwXSxbMzYsMV0sWzM3LDBdLFszNywxXSxb
NDAsMF0sWzQwLDJdLFs0MSwwXSxbNDEsMV0sWzQyLDBdLFs0MiwxXSxbNDYsMF0sWzQ2LDFdLFs0
OSwwXSxbNDksMl0sWzUwLDBdLFs1MCwxXSxbNTIsMF0sWzUyLDJdLFs1MywwXSxbNTMsMV0sWzU3
LDBdLFs1NywyXSxbNTgsMF0sWzU4LDFdLFs2MSwwXSxbNjEsMl0sWzYyLDBdLFs2MiwxXSxbNjYs
MF0sWzY2LDJdLFs2NywwXSxbNjcsMV0sWzcwLDFdLFs3MCwyXSxbNzYsMV0sWzc2LDJdXSwKK3Bl
cmZvcm1BY3Rpb246IGZ1bmN0aW9uIGFub255bW91cyh5eXRleHQseXlsZW5nLHl5bGluZW5vLHl5
LHl5c3RhdGUsJCQsXyQKKy8qKi8pIHsKKwordmFyICQwID0gJCQubGVuZ3RoIC0gMTsKK3N3aXRj
aCAoeXlzdGF0ZSkgeworY2FzZSAxOiByZXR1cm4gJCRbJDAtMV07IAorYnJlYWs7CitjYXNlIDI6
dGhpcy4kID0geXkucHJlcGFyZVByb2dyYW0oJCRbJDBdKTsKK2JyZWFrOworY2FzZSAzOnRoaXMu
JCA9ICQkWyQwXTsKK2JyZWFrOworY2FzZSA0OnRoaXMuJCA9ICQkWyQwXTsKK2JyZWFrOworY2Fz
ZSA1OnRoaXMuJCA9ICQkWyQwXTsKK2JyZWFrOworY2FzZSA2OnRoaXMuJCA9ICQkWyQwXTsKK2Jy
ZWFrOworY2FzZSA3OnRoaXMuJCA9ICQkWyQwXTsKK2JyZWFrOworY2FzZSA4OnRoaXMuJCA9ICQk
WyQwXTsKK2JyZWFrOworY2FzZSA5OgorICAgIHRoaXMuJCA9IHsKKyAgICAgIHR5cGU6ICdDb21t
ZW50U3RhdGVtZW50JywKKyAgICAgIHZhbHVlOiB5eS5zdHJpcENvbW1lbnQoJCRbJDBdKSwKKyAg
ICAgIHN0cmlwOiB5eS5zdHJpcEZsYWdzKCQkWyQwXSwgJCRbJDBdKSwKKyAgICAgIGxvYzogeXku
bG9jSW5mbyh0aGlzLl8kKQorICAgIH07CisgIAorYnJlYWs7CitjYXNlIDEwOgorICAgIHRoaXMu
JCA9IHsKKyAgICAgIHR5cGU6ICdDb250ZW50U3RhdGVtZW50JywKKyAgICAgIG9yaWdpbmFsOiAk
JFskMF0sCisgICAgICB2YWx1ZTogJCRbJDBdLAorICAgICAgbG9jOiB5eS5sb2NJbmZvKHRoaXMu
XyQpCisgICAgfTsKKyAgCiticmVhazsKK2Nhc2UgMTE6dGhpcy4kID0geXkucHJlcGFyZVJhd0Js
b2NrKCQkWyQwLTJdLCAkJFskMC0xXSwgJCRbJDBdLCB0aGlzLl8kKTsKK2JyZWFrOworY2FzZSAx
Mjp0aGlzLiQgPSB7IHBhdGg6ICQkWyQwLTNdLCBwYXJhbXM6ICQkWyQwLTJdLCBoYXNoOiAkJFsk
MC0xXSB9OworYnJlYWs7CitjYXNlIDEzOnRoaXMuJCA9IHl5LnByZXBhcmVCbG9jaygkJFskMC0z
XSwgJCRbJDAtMl0sICQkWyQwLTFdLCAkJFskMF0sIGZhbHNlLCB0aGlzLl8kKTsKK2JyZWFrOwor
Y2FzZSAxNDp0aGlzLiQgPSB5eS5wcmVwYXJlQmxvY2soJCRbJDAtM10sICQkWyQwLTJdLCAkJFsk
MC0xXSwgJCRbJDBdLCB0cnVlLCB0aGlzLl8kKTsKK2JyZWFrOworY2FzZSAxNTp0aGlzLiQgPSB7
IG9wZW46ICQkWyQwLTVdLCBwYXRoOiAkJFskMC00XSwgcGFyYW1zOiAkJFskMC0zXSwgaGFzaDog
JCRbJDAtMl0sIGJsb2NrUGFyYW1zOiAkJFskMC0xXSwgc3RyaXA6IHl5LnN0cmlwRmxhZ3MoJCRb
JDAtNV0sICQkWyQwXSkgfTsKK2JyZWFrOworY2FzZSAxNjp0aGlzLiQgPSB7IHBhdGg6ICQkWyQw
LTRdLCBwYXJhbXM6ICQkWyQwLTNdLCBoYXNoOiAkJFskMC0yXSwgYmxvY2tQYXJhbXM6ICQkWyQw
LTFdLCBzdHJpcDogeXkuc3RyaXBGbGFncygkJFskMC01XSwgJCRbJDBdKSB9OworYnJlYWs7Citj
YXNlIDE3OnRoaXMuJCA9IHsgcGF0aDogJCRbJDAtNF0sIHBhcmFtczogJCRbJDAtM10sIGhhc2g6
ICQkWyQwLTJdLCBibG9ja1BhcmFtczogJCRbJDAtMV0sIHN0cmlwOiB5eS5zdHJpcEZsYWdzKCQk
WyQwLTVdLCAkJFskMF0pIH07CiticmVhazsKK2Nhc2UgMTg6dGhpcy4kID0geyBzdHJpcDogeXku
c3RyaXBGbGFncygkJFskMC0xXSwgJCRbJDAtMV0pLCBwcm9ncmFtOiAkJFskMF0gfTsKK2JyZWFr
OworY2FzZSAxOToKKyAgICB2YXIgaW52ZXJzZSA9IHl5LnByZXBhcmVCbG9jaygkJFskMC0yXSwg
JCRbJDAtMV0sICQkWyQwXSwgJCRbJDBdLCBmYWxzZSwgdGhpcy5fJCksCisgICAgICAgIHByb2dy
YW0gPSB5eS5wcmVwYXJlUHJvZ3JhbShbaW52ZXJzZV0sICQkWyQwLTFdLmxvYyk7CisgICAgcHJv
Z3JhbS5jaGFpbmVkID0gdHJ1ZTsKKworICAgIHRoaXMuJCA9IHsgc3RyaXA6ICQkWyQwLTJdLnN0
cmlwLCBwcm9ncmFtOiBwcm9ncmFtLCBjaGFpbjogdHJ1ZSB9OworICAKK2JyZWFrOworY2FzZSAy
MDp0aGlzLiQgPSAkJFskMF07CiticmVhazsKK2Nhc2UgMjE6dGhpcy4kID0ge3BhdGg6ICQkWyQw
LTFdLCBzdHJpcDogeXkuc3RyaXBGbGFncygkJFskMC0yXSwgJCRbJDBdKX07CiticmVhazsKK2Nh
c2UgMjI6dGhpcy4kID0geXkucHJlcGFyZU11c3RhY2hlKCQkWyQwLTNdLCAkJFskMC0yXSwgJCRb
JDAtMV0sICQkWyQwLTRdLCB5eS5zdHJpcEZsYWdzKCQkWyQwLTRdLCAkJFskMF0pLCB0aGlzLl8k
KTsKK2JyZWFrOworY2FzZSAyMzp0aGlzLiQgPSB5eS5wcmVwYXJlTXVzdGFjaGUoJCRbJDAtM10s
ICQkWyQwLTJdLCAkJFskMC0xXSwgJCRbJDAtNF0sIHl5LnN0cmlwRmxhZ3MoJCRbJDAtNF0sICQk
WyQwXSksIHRoaXMuXyQpOworYnJlYWs7CitjYXNlIDI0OgorICAgIHRoaXMuJCA9IHsKKyAgICAg
IHR5cGU6ICdQYXJ0aWFsU3RhdGVtZW50JywKKyAgICAgIG5hbWU6ICQkWyQwLTNdLAorICAgICAg
cGFyYW1zOiAkJFskMC0yXSwKKyAgICAgIGhhc2g6ICQkWyQwLTFdLAorICAgICAgaW5kZW50OiAn
JywKKyAgICAgIHN0cmlwOiB5eS5zdHJpcEZsYWdzKCQkWyQwLTRdLCAkJFskMF0pLAorICAgICAg
bG9jOiB5eS5sb2NJbmZvKHRoaXMuXyQpCisgICAgfTsKKyAgCiticmVhazsKK2Nhc2UgMjU6dGhp
cy4kID0geXkucHJlcGFyZVBhcnRpYWxCbG9jaygkJFskMC0yXSwgJCRbJDAtMV0sICQkWyQwXSwg
dGhpcy5fJCk7CiticmVhazsKK2Nhc2UgMjY6dGhpcy4kID0geyBwYXRoOiAkJFskMC0zXSwgcGFy
YW1zOiAkJFskMC0yXSwgaGFzaDogJCRbJDAtMV0sIHN0cmlwOiB5eS5zdHJpcEZsYWdzKCQkWyQw
LTRdLCAkJFskMF0pIH07CiticmVhazsKK2Nhc2UgMjc6dGhpcy4kID0gJCRbJDBdOworYnJlYWs7
CitjYXNlIDI4OnRoaXMuJCA9ICQkWyQwXTsKK2JyZWFrOworY2FzZSAyOToKKyAgICB0aGlzLiQg
PSB7CisgICAgICB0eXBlOiAnU3ViRXhwcmVzc2lvbicsCisgICAgICBwYXRoOiAkJFskMC0zXSwK
KyAgICAgIHBhcmFtczogJCRbJDAtMl0sCisgICAgICBoYXNoOiAkJFskMC0xXSwKKyAgICAgIGxv
YzogeXkubG9jSW5mbyh0aGlzLl8kKQorICAgIH07CisgIAorYnJlYWs7CitjYXNlIDMwOnRoaXMu
JCA9IHt0eXBlOiAnSGFzaCcsIHBhaXJzOiAkJFskMF0sIGxvYzogeXkubG9jSW5mbyh0aGlzLl8k
KX07CiticmVhazsKK2Nhc2UgMzE6dGhpcy4kID0ge3R5cGU6ICdIYXNoUGFpcicsIGtleTogeXku
aWQoJCRbJDAtMl0pLCB2YWx1ZTogJCRbJDBdLCBsb2M6IHl5LmxvY0luZm8odGhpcy5fJCl9Owor
YnJlYWs7CitjYXNlIDMyOnRoaXMuJCA9IHl5LmlkKCQkWyQwLTFdKTsKK2JyZWFrOworY2FzZSAz
Mzp0aGlzLiQgPSAkJFskMF07CiticmVhazsKK2Nhc2UgMzQ6dGhpcy4kID0gJCRbJDBdOworYnJl
YWs7CitjYXNlIDM1OnRoaXMuJCA9IHt0eXBlOiAnU3RyaW5nTGl0ZXJhbCcsIHZhbHVlOiAkJFsk
MF0sIG9yaWdpbmFsOiAkJFskMF0sIGxvYzogeXkubG9jSW5mbyh0aGlzLl8kKX07CiticmVhazsK
K2Nhc2UgMzY6dGhpcy4kID0ge3R5cGU6ICdOdW1iZXJMaXRlcmFsJywgdmFsdWU6IE51bWJlcigk
JFskMF0pLCBvcmlnaW5hbDogTnVtYmVyKCQkWyQwXSksIGxvYzogeXkubG9jSW5mbyh0aGlzLl8k
KX07CiticmVhazsKK2Nhc2UgMzc6dGhpcy4kID0ge3R5cGU6ICdCb29sZWFuTGl0ZXJhbCcsIHZh
bHVlOiAkJFskMF0gPT09ICd0cnVlJywgb3JpZ2luYWw6ICQkWyQwXSA9PT0gJ3RydWUnLCBsb2M6
IHl5LmxvY0luZm8odGhpcy5fJCl9OworYnJlYWs7CitjYXNlIDM4OnRoaXMuJCA9IHt0eXBlOiAn
VW5kZWZpbmVkTGl0ZXJhbCcsIG9yaWdpbmFsOiB1bmRlZmluZWQsIHZhbHVlOiB1bmRlZmluZWQs
IGxvYzogeXkubG9jSW5mbyh0aGlzLl8kKX07CiticmVhazsKK2Nhc2UgMzk6dGhpcy4kID0ge3R5
cGU6ICdOdWxsTGl0ZXJhbCcsIG9yaWdpbmFsOiBudWxsLCB2YWx1ZTogbnVsbCwgbG9jOiB5eS5s
b2NJbmZvKHRoaXMuXyQpfTsKK2JyZWFrOworY2FzZSA0MDp0aGlzLiQgPSAkJFskMF07CiticmVh
azsKK2Nhc2UgNDE6dGhpcy4kID0gJCRbJDBdOworYnJlYWs7CitjYXNlIDQyOnRoaXMuJCA9IHl5
LnByZXBhcmVQYXRoKHRydWUsICQkWyQwXSwgdGhpcy5fJCk7CiticmVhazsKK2Nhc2UgNDM6dGhp
cy4kID0geXkucHJlcGFyZVBhdGgoZmFsc2UsICQkWyQwXSwgdGhpcy5fJCk7CiticmVhazsKK2Nh
c2UgNDQ6ICQkWyQwLTJdLnB1c2goe3BhcnQ6IHl5LmlkKCQkWyQwXSksIG9yaWdpbmFsOiAkJFsk
MF0sIHNlcGFyYXRvcjogJCRbJDAtMV19KTsgdGhpcy4kID0gJCRbJDAtMl07IAorYnJlYWs7Citj
YXNlIDQ1OnRoaXMuJCA9IFt7cGFydDogeXkuaWQoJCRbJDBdKSwgb3JpZ2luYWw6ICQkWyQwXX1d
OworYnJlYWs7CitjYXNlIDQ2OnRoaXMuJCA9IFtdOworYnJlYWs7CitjYXNlIDQ3OiQkWyQwLTFd
LnB1c2goJCRbJDBdKTsKK2JyZWFrOworY2FzZSA0ODp0aGlzLiQgPSBbJCRbJDBdXTsKK2JyZWFr
OworY2FzZSA0OTokJFskMC0xXS5wdXNoKCQkWyQwXSk7CiticmVhazsKK2Nhc2UgNTA6dGhpcy4k
ID0gW107CiticmVhazsKK2Nhc2UgNTE6JCRbJDAtMV0ucHVzaCgkJFskMF0pOworYnJlYWs7Citj
YXNlIDU4OnRoaXMuJCA9IFtdOworYnJlYWs7CitjYXNlIDU5OiQkWyQwLTFdLnB1c2goJCRbJDBd
KTsKK2JyZWFrOworY2FzZSA2NDp0aGlzLiQgPSBbXTsKK2JyZWFrOworY2FzZSA2NTokJFskMC0x
XS5wdXNoKCQkWyQwXSk7CiticmVhazsKK2Nhc2UgNzA6dGhpcy4kID0gW107CiticmVhazsKK2Nh
c2UgNzE6JCRbJDAtMV0ucHVzaCgkJFskMF0pOworYnJlYWs7CitjYXNlIDc4OnRoaXMuJCA9IFtd
OworYnJlYWs7CitjYXNlIDc5OiQkWyQwLTFdLnB1c2goJCRbJDBdKTsKK2JyZWFrOworY2FzZSA4
Mjp0aGlzLiQgPSBbXTsKK2JyZWFrOworY2FzZSA4MzokJFskMC0xXS5wdXNoKCQkWyQwXSk7Citi
cmVhazsKK2Nhc2UgODY6dGhpcy4kID0gW107CiticmVhazsKK2Nhc2UgODc6JCRbJDAtMV0ucHVz
aCgkJFskMF0pOworYnJlYWs7CitjYXNlIDkwOnRoaXMuJCA9IFtdOworYnJlYWs7CitjYXNlIDkx
OiQkWyQwLTFdLnB1c2goJCRbJDBdKTsKK2JyZWFrOworY2FzZSA5NDp0aGlzLiQgPSBbXTsKK2Jy
ZWFrOworY2FzZSA5NTokJFskMC0xXS5wdXNoKCQkWyQwXSk7CiticmVhazsKK2Nhc2UgOTg6dGhp
cy4kID0gWyQkWyQwXV07CiticmVhazsKK2Nhc2UgOTk6JCRbJDAtMV0ucHVzaCgkJFskMF0pOwor
YnJlYWs7CitjYXNlIDEwMDp0aGlzLiQgPSBbJCRbJDBdXTsKK2JyZWFrOworY2FzZSAxMDE6JCRb
JDAtMV0ucHVzaCgkJFskMF0pOworYnJlYWs7Cit9Cit9LAordGFibGU6IFt7MzoxLDQ6Miw1Olsy
LDQ2XSw2OjMsMTQ6WzIsNDZdLDE1OlsyLDQ2XSwxOTpbMiw0Nl0sMjk6WzIsNDZdLDM0OlsyLDQ2
XSw0ODpbMiw0Nl0sNTE6WzIsNDZdLDU1OlsyLDQ2XSw2MDpbMiw0Nl19LHsxOlszXX0sezU6WzEs
NF19LHs1OlsyLDJdLDc6NSw4OjYsOTo3LDEwOjgsMTE6OSwxMjoxMCwxMzoxMSwxNDpbMSwxMl0s
MTU6WzEsMjBdLDE2OjE3LDE5OlsxLDIzXSwyNDoxNSwyNzoxNiwyOTpbMSwyMV0sMzQ6WzEsMjJd
LDM5OlsyLDJdLDQ0OlsyLDJdLDQ3OlsyLDJdLDQ4OlsxLDEzXSw1MTpbMSwxNF0sNTU6WzEsMThd
LDU5OjE5LDYwOlsxLDI0XX0sezE6WzIsMV19LHs1OlsyLDQ3XSwxNDpbMiw0N10sMTU6WzIsNDdd
LDE5OlsyLDQ3XSwyOTpbMiw0N10sMzQ6WzIsNDddLDM5OlsyLDQ3XSw0NDpbMiw0N10sNDc6WzIs
NDddLDQ4OlsyLDQ3XSw1MTpbMiw0N10sNTU6WzIsNDddLDYwOlsyLDQ3XX0sezU6WzIsM10sMTQ6
WzIsM10sMTU6WzIsM10sMTk6WzIsM10sMjk6WzIsM10sMzQ6WzIsM10sMzk6WzIsM10sNDQ6WzIs
M10sNDc6WzIsM10sNDg6WzIsM10sNTE6WzIsM10sNTU6WzIsM10sNjA6WzIsM119LHs1OlsyLDRd
LDE0OlsyLDRdLDE1OlsyLDRdLDE5OlsyLDRdLDI5OlsyLDRdLDM0OlsyLDRdLDM5OlsyLDRdLDQ0
OlsyLDRdLDQ3OlsyLDRdLDQ4OlsyLDRdLDUxOlsyLDRdLDU1OlsyLDRdLDYwOlsyLDRdfSx7NTpb
Miw1XSwxNDpbMiw1XSwxNTpbMiw1XSwxOTpbMiw1XSwyOTpbMiw1XSwzNDpbMiw1XSwzOTpbMiw1
XSw0NDpbMiw1XSw0NzpbMiw1XSw0ODpbMiw1XSw1MTpbMiw1XSw1NTpbMiw1XSw2MDpbMiw1XX0s
ezU6WzIsNl0sMTQ6WzIsNl0sMTU6WzIsNl0sMTk6WzIsNl0sMjk6WzIsNl0sMzQ6WzIsNl0sMzk6
WzIsNl0sNDQ6WzIsNl0sNDc6WzIsNl0sNDg6WzIsNl0sNTE6WzIsNl0sNTU6WzIsNl0sNjA6WzIs
Nl19LHs1OlsyLDddLDE0OlsyLDddLDE1OlsyLDddLDE5OlsyLDddLDI5OlsyLDddLDM0OlsyLDdd
LDM5OlsyLDddLDQ0OlsyLDddLDQ3OlsyLDddLDQ4OlsyLDddLDUxOlsyLDddLDU1OlsyLDddLDYw
OlsyLDddfSx7NTpbMiw4XSwxNDpbMiw4XSwxNTpbMiw4XSwxOTpbMiw4XSwyOTpbMiw4XSwzNDpb
Miw4XSwzOTpbMiw4XSw0NDpbMiw4XSw0NzpbMiw4XSw0ODpbMiw4XSw1MTpbMiw4XSw1NTpbMiw4
XSw2MDpbMiw4XX0sezU6WzIsOV0sMTQ6WzIsOV0sMTU6WzIsOV0sMTk6WzIsOV0sMjk6WzIsOV0s
MzQ6WzIsOV0sMzk6WzIsOV0sNDQ6WzIsOV0sNDc6WzIsOV0sNDg6WzIsOV0sNTE6WzIsOV0sNTU6
WzIsOV0sNjA6WzIsOV19LHsyMDoyNSw3MjpbMSwzNV0sNzg6MjYsNzk6MjcsODA6WzEsMjhdLDgx
OlsxLDI5XSw4MjpbMSwzMF0sODM6WzEsMzFdLDg0OlsxLDMyXSw4NTpbMSwzNF0sODY6MzN9LHsy
MDozNiw3MjpbMSwzNV0sNzg6MjYsNzk6MjcsODA6WzEsMjhdLDgxOlsxLDI5XSw4MjpbMSwzMF0s
ODM6WzEsMzFdLDg0OlsxLDMyXSw4NTpbMSwzNF0sODY6MzN9LHs0OjM3LDY6MywxNDpbMiw0Nl0s
MTU6WzIsNDZdLDE5OlsyLDQ2XSwyOTpbMiw0Nl0sMzQ6WzIsNDZdLDM5OlsyLDQ2XSw0NDpbMiw0
Nl0sNDc6WzIsNDZdLDQ4OlsyLDQ2XSw1MTpbMiw0Nl0sNTU6WzIsNDZdLDYwOlsyLDQ2XX0sezQ6
MzgsNjozLDE0OlsyLDQ2XSwxNTpbMiw0Nl0sMTk6WzIsNDZdLDI5OlsyLDQ2XSwzNDpbMiw0Nl0s
NDQ6WzIsNDZdLDQ3OlsyLDQ2XSw0ODpbMiw0Nl0sNTE6WzIsNDZdLDU1OlsyLDQ2XSw2MDpbMiw0
Nl19LHsxMzo0MCwxNTpbMSwyMF0sMTc6Mzl9LHsyMDo0Miw1Njo0MSw2NDo0Myw2NTpbMSw0NF0s
NzI6WzEsMzVdLDc4OjI2LDc5OjI3LDgwOlsxLDI4XSw4MTpbMSwyOV0sODI6WzEsMzBdLDgzOlsx
LDMxXSw4NDpbMSwzMl0sODU6WzEsMzRdLDg2OjMzfSx7NDo0NSw2OjMsMTQ6WzIsNDZdLDE1Olsy
LDQ2XSwxOTpbMiw0Nl0sMjk6WzIsNDZdLDM0OlsyLDQ2XSw0NzpbMiw0Nl0sNDg6WzIsNDZdLDUx
OlsyLDQ2XSw1NTpbMiw0Nl0sNjA6WzIsNDZdfSx7NTpbMiwxMF0sMTQ6WzIsMTBdLDE1OlsyLDEw
XSwxODpbMiwxMF0sMTk6WzIsMTBdLDI5OlsyLDEwXSwzNDpbMiwxMF0sMzk6WzIsMTBdLDQ0Olsy
LDEwXSw0NzpbMiwxMF0sNDg6WzIsMTBdLDUxOlsyLDEwXSw1NTpbMiwxMF0sNjA6WzIsMTBdfSx7
MjA6NDYsNzI6WzEsMzVdLDc4OjI2LDc5OjI3LDgwOlsxLDI4XSw4MTpbMSwyOV0sODI6WzEsMzBd
LDgzOlsxLDMxXSw4NDpbMSwzMl0sODU6WzEsMzRdLDg2OjMzfSx7MjA6NDcsNzI6WzEsMzVdLDc4
OjI2LDc5OjI3LDgwOlsxLDI4XSw4MTpbMSwyOV0sODI6WzEsMzBdLDgzOlsxLDMxXSw4NDpbMSwz
Ml0sODU6WzEsMzRdLDg2OjMzfSx7MjA6NDgsNzI6WzEsMzVdLDc4OjI2LDc5OjI3LDgwOlsxLDI4
XSw4MTpbMSwyOV0sODI6WzEsMzBdLDgzOlsxLDMxXSw4NDpbMSwzMl0sODU6WzEsMzRdLDg2OjMz
fSx7MjA6NDIsNTY6NDksNjQ6NDMsNjU6WzEsNDRdLDcyOlsxLDM1XSw3ODoyNiw3OToyNyw4MDpb
MSwyOF0sODE6WzEsMjldLDgyOlsxLDMwXSw4MzpbMSwzMV0sODQ6WzEsMzJdLDg1OlsxLDM0XSw4
NjozM30sezMzOlsyLDc4XSw0OTo1MCw2NTpbMiw3OF0sNzI6WzIsNzhdLDgwOlsyLDc4XSw4MTpb
Miw3OF0sODI6WzIsNzhdLDgzOlsyLDc4XSw4NDpbMiw3OF0sODU6WzIsNzhdfSx7MjM6WzIsMzNd
LDMzOlsyLDMzXSw1NDpbMiwzM10sNjU6WzIsMzNdLDY4OlsyLDMzXSw3MjpbMiwzM10sNzU6WzIs
MzNdLDgwOlsyLDMzXSw4MTpbMiwzM10sODI6WzIsMzNdLDgzOlsyLDMzXSw4NDpbMiwzM10sODU6
WzIsMzNdfSx7MjM6WzIsMzRdLDMzOlsyLDM0XSw1NDpbMiwzNF0sNjU6WzIsMzRdLDY4OlsyLDM0
XSw3MjpbMiwzNF0sNzU6WzIsMzRdLDgwOlsyLDM0XSw4MTpbMiwzNF0sODI6WzIsMzRdLDgzOlsy
LDM0XSw4NDpbMiwzNF0sODU6WzIsMzRdfSx7MjM6WzIsMzVdLDMzOlsyLDM1XSw1NDpbMiwzNV0s
NjU6WzIsMzVdLDY4OlsyLDM1XSw3MjpbMiwzNV0sNzU6WzIsMzVdLDgwOlsyLDM1XSw4MTpbMiwz
NV0sODI6WzIsMzVdLDgzOlsyLDM1XSw4NDpbMiwzNV0sODU6WzIsMzVdfSx7MjM6WzIsMzZdLDMz
OlsyLDM2XSw1NDpbMiwzNl0sNjU6WzIsMzZdLDY4OlsyLDM2XSw3MjpbMiwzNl0sNzU6WzIsMzZd
LDgwOlsyLDM2XSw4MTpbMiwzNl0sODI6WzIsMzZdLDgzOlsyLDM2XSw4NDpbMiwzNl0sODU6WzIs
MzZdfSx7MjM6WzIsMzddLDMzOlsyLDM3XSw1NDpbMiwzN10sNjU6WzIsMzddLDY4OlsyLDM3XSw3
MjpbMiwzN10sNzU6WzIsMzddLDgwOlsyLDM3XSw4MTpbMiwzN10sODI6WzIsMzddLDgzOlsyLDM3
XSw4NDpbMiwzN10sODU6WzIsMzddfSx7MjM6WzIsMzhdLDMzOlsyLDM4XSw1NDpbMiwzOF0sNjU6
WzIsMzhdLDY4OlsyLDM4XSw3MjpbMiwzOF0sNzU6WzIsMzhdLDgwOlsyLDM4XSw4MTpbMiwzOF0s
ODI6WzIsMzhdLDgzOlsyLDM4XSw4NDpbMiwzOF0sODU6WzIsMzhdfSx7MjM6WzIsMzldLDMzOlsy
LDM5XSw1NDpbMiwzOV0sNjU6WzIsMzldLDY4OlsyLDM5XSw3MjpbMiwzOV0sNzU6WzIsMzldLDgw
OlsyLDM5XSw4MTpbMiwzOV0sODI6WzIsMzldLDgzOlsyLDM5XSw4NDpbMiwzOV0sODU6WzIsMzld
fSx7MjM6WzIsNDNdLDMzOlsyLDQzXSw1NDpbMiw0M10sNjU6WzIsNDNdLDY4OlsyLDQzXSw3Mjpb
Miw0M10sNzU6WzIsNDNdLDgwOlsyLDQzXSw4MTpbMiw0M10sODI6WzIsNDNdLDgzOlsyLDQzXSw4
NDpbMiw0M10sODU6WzIsNDNdLDg3OlsxLDUxXX0sezcyOlsxLDM1XSw4Njo1Mn0sezIzOlsyLDQ1
XSwzMzpbMiw0NV0sNTQ6WzIsNDVdLDY1OlsyLDQ1XSw2ODpbMiw0NV0sNzI6WzIsNDVdLDc1Olsy
LDQ1XSw4MDpbMiw0NV0sODE6WzIsNDVdLDgyOlsyLDQ1XSw4MzpbMiw0NV0sODQ6WzIsNDVdLDg1
OlsyLDQ1XSw4NzpbMiw0NV19LHs1Mjo1Myw1NDpbMiw4Ml0sNjU6WzIsODJdLDcyOlsyLDgyXSw4
MDpbMiw4Ml0sODE6WzIsODJdLDgyOlsyLDgyXSw4MzpbMiw4Ml0sODQ6WzIsODJdLDg1OlsyLDgy
XX0sezI1OjU0LDM4OjU2LDM5OlsxLDU4XSw0Mzo1Nyw0NDpbMSw1OV0sNDU6NTUsNDc6WzIsNTRd
fSx7Mjg6NjAsNDM6NjEsNDQ6WzEsNTldLDQ3OlsyLDU2XX0sezEzOjYzLDE1OlsxLDIwXSwxODpb
MSw2Ml19LHsxNTpbMiw0OF0sMTg6WzIsNDhdfSx7MzM6WzIsODZdLDU3OjY0LDY1OlsyLDg2XSw3
MjpbMiw4Nl0sODA6WzIsODZdLDgxOlsyLDg2XSw4MjpbMiw4Nl0sODM6WzIsODZdLDg0OlsyLDg2
XSw4NTpbMiw4Nl19LHszMzpbMiw0MF0sNjU6WzIsNDBdLDcyOlsyLDQwXSw4MDpbMiw0MF0sODE6
WzIsNDBdLDgyOlsyLDQwXSw4MzpbMiw0MF0sODQ6WzIsNDBdLDg1OlsyLDQwXX0sezMzOlsyLDQx
XSw2NTpbMiw0MV0sNzI6WzIsNDFdLDgwOlsyLDQxXSw4MTpbMiw0MV0sODI6WzIsNDFdLDgzOlsy
LDQxXSw4NDpbMiw0MV0sODU6WzIsNDFdfSx7MjA6NjUsNzI6WzEsMzVdLDc4OjI2LDc5OjI3LDgw
OlsxLDI4XSw4MTpbMSwyOV0sODI6WzEsMzBdLDgzOlsxLDMxXSw4NDpbMSwzMl0sODU6WzEsMzRd
LDg2OjMzfSx7MjY6NjYsNDc6WzEsNjddfSx7MzA6NjgsMzM6WzIsNThdLDY1OlsyLDU4XSw3Mjpb
Miw1OF0sNzU6WzIsNThdLDgwOlsyLDU4XSw4MTpbMiw1OF0sODI6WzIsNThdLDgzOlsyLDU4XSw4
NDpbMiw1OF0sODU6WzIsNThdfSx7MzM6WzIsNjRdLDM1OjY5LDY1OlsyLDY0XSw3MjpbMiw2NF0s
NzU6WzIsNjRdLDgwOlsyLDY0XSw4MTpbMiw2NF0sODI6WzIsNjRdLDgzOlsyLDY0XSw4NDpbMiw2
NF0sODU6WzIsNjRdfSx7MjE6NzAsMjM6WzIsNTBdLDY1OlsyLDUwXSw3MjpbMiw1MF0sODA6WzIs
NTBdLDgxOlsyLDUwXSw4MjpbMiw1MF0sODM6WzIsNTBdLDg0OlsyLDUwXSw4NTpbMiw1MF19LHsz
MzpbMiw5MF0sNjE6NzEsNjU6WzIsOTBdLDcyOlsyLDkwXSw4MDpbMiw5MF0sODE6WzIsOTBdLDgy
OlsyLDkwXSw4MzpbMiw5MF0sODQ6WzIsOTBdLDg1OlsyLDkwXX0sezIwOjc1LDMzOlsyLDgwXSw1
MDo3Miw2Mzo3Myw2NDo3Niw2NTpbMSw0NF0sNjk6NzQsNzA6NzcsNzE6NzgsNzI6WzEsNzldLDc4
OjI2LDc5OjI3LDgwOlsxLDI4XSw4MTpbMSwyOV0sODI6WzEsMzBdLDgzOlsxLDMxXSw4NDpbMSwz
Ml0sODU6WzEsMzRdLDg2OjMzfSx7NzI6WzEsODBdfSx7MjM6WzIsNDJdLDMzOlsyLDQyXSw1NDpb
Miw0Ml0sNjU6WzIsNDJdLDY4OlsyLDQyXSw3MjpbMiw0Ml0sNzU6WzIsNDJdLDgwOlsyLDQyXSw4
MTpbMiw0Ml0sODI6WzIsNDJdLDgzOlsyLDQyXSw4NDpbMiw0Ml0sODU6WzIsNDJdLDg3OlsxLDUx
XX0sezIwOjc1LDUzOjgxLDU0OlsyLDg0XSw2Mzo4Miw2NDo3Niw2NTpbMSw0NF0sNjk6ODMsNzA6
NzcsNzE6NzgsNzI6WzEsNzldLDc4OjI2LDc5OjI3LDgwOlsxLDI4XSw4MTpbMSwyOV0sODI6WzEs
MzBdLDgzOlsxLDMxXSw4NDpbMSwzMl0sODU6WzEsMzRdLDg2OjMzfSx7MjY6ODQsNDc6WzEsNjdd
fSx7NDc6WzIsNTVdfSx7NDo4NSw2OjMsMTQ6WzIsNDZdLDE1OlsyLDQ2XSwxOTpbMiw0Nl0sMjk6
WzIsNDZdLDM0OlsyLDQ2XSwzOTpbMiw0Nl0sNDQ6WzIsNDZdLDQ3OlsyLDQ2XSw0ODpbMiw0Nl0s
NTE6WzIsNDZdLDU1OlsyLDQ2XSw2MDpbMiw0Nl19LHs0NzpbMiwyMF19LHsyMDo4Niw3MjpbMSwz
NV0sNzg6MjYsNzk6MjcsODA6WzEsMjhdLDgxOlsxLDI5XSw4MjpbMSwzMF0sODM6WzEsMzFdLDg0
OlsxLDMyXSw4NTpbMSwzNF0sODY6MzN9LHs0Ojg3LDY6MywxNDpbMiw0Nl0sMTU6WzIsNDZdLDE5
OlsyLDQ2XSwyOTpbMiw0Nl0sMzQ6WzIsNDZdLDQ3OlsyLDQ2XSw0ODpbMiw0Nl0sNTE6WzIsNDZd
LDU1OlsyLDQ2XSw2MDpbMiw0Nl19LHsyNjo4OCw0NzpbMSw2N119LHs0NzpbMiw1N119LHs1Olsy
LDExXSwxNDpbMiwxMV0sMTU6WzIsMTFdLDE5OlsyLDExXSwyOTpbMiwxMV0sMzQ6WzIsMTFdLDM5
OlsyLDExXSw0NDpbMiwxMV0sNDc6WzIsMTFdLDQ4OlsyLDExXSw1MTpbMiwxMV0sNTU6WzIsMTFd
LDYwOlsyLDExXX0sezE1OlsyLDQ5XSwxODpbMiw0OV19LHsyMDo3NSwzMzpbMiw4OF0sNTg6ODks
NjM6OTAsNjQ6NzYsNjU6WzEsNDRdLDY5OjkxLDcwOjc3LDcxOjc4LDcyOlsxLDc5XSw3ODoyNiw3
OToyNyw4MDpbMSwyOF0sODE6WzEsMjldLDgyOlsxLDMwXSw4MzpbMSwzMV0sODQ6WzEsMzJdLDg1
OlsxLDM0XSw4NjozM30sezY1OlsyLDk0XSw2Njo5Miw2ODpbMiw5NF0sNzI6WzIsOTRdLDgwOlsy
LDk0XSw4MTpbMiw5NF0sODI6WzIsOTRdLDgzOlsyLDk0XSw4NDpbMiw5NF0sODU6WzIsOTRdfSx7
NTpbMiwyNV0sMTQ6WzIsMjVdLDE1OlsyLDI1XSwxOTpbMiwyNV0sMjk6WzIsMjVdLDM0OlsyLDI1
XSwzOTpbMiwyNV0sNDQ6WzIsMjVdLDQ3OlsyLDI1XSw0ODpbMiwyNV0sNTE6WzIsMjVdLDU1Olsy
LDI1XSw2MDpbMiwyNV19LHsyMDo5Myw3MjpbMSwzNV0sNzg6MjYsNzk6MjcsODA6WzEsMjhdLDgx
OlsxLDI5XSw4MjpbMSwzMF0sODM6WzEsMzFdLDg0OlsxLDMyXSw4NTpbMSwzNF0sODY6MzN9LHsy
MDo3NSwzMTo5NCwzMzpbMiw2MF0sNjM6OTUsNjQ6NzYsNjU6WzEsNDRdLDY5Ojk2LDcwOjc3LDcx
Ojc4LDcyOlsxLDc5XSw3NTpbMiw2MF0sNzg6MjYsNzk6MjcsODA6WzEsMjhdLDgxOlsxLDI5XSw4
MjpbMSwzMF0sODM6WzEsMzFdLDg0OlsxLDMyXSw4NTpbMSwzNF0sODY6MzN9LHsyMDo3NSwzMzpb
Miw2Nl0sMzY6OTcsNjM6OTgsNjQ6NzYsNjU6WzEsNDRdLDY5Ojk5LDcwOjc3LDcxOjc4LDcyOlsx
LDc5XSw3NTpbMiw2Nl0sNzg6MjYsNzk6MjcsODA6WzEsMjhdLDgxOlsxLDI5XSw4MjpbMSwzMF0s
ODM6WzEsMzFdLDg0OlsxLDMyXSw4NTpbMSwzNF0sODY6MzN9LHsyMDo3NSwyMjoxMDAsMjM6WzIs
NTJdLDYzOjEwMSw2NDo3Niw2NTpbMSw0NF0sNjk6MTAyLDcwOjc3LDcxOjc4LDcyOlsxLDc5XSw3
ODoyNiw3OToyNyw4MDpbMSwyOF0sODE6WzEsMjldLDgyOlsxLDMwXSw4MzpbMSwzMV0sODQ6WzEs
MzJdLDg1OlsxLDM0XSw4NjozM30sezIwOjc1LDMzOlsyLDkyXSw2MjoxMDMsNjM6MTA0LDY0Ojc2
LDY1OlsxLDQ0XSw2OToxMDUsNzA6NzcsNzE6NzgsNzI6WzEsNzldLDc4OjI2LDc5OjI3LDgwOlsx
LDI4XSw4MTpbMSwyOV0sODI6WzEsMzBdLDgzOlsxLDMxXSw4NDpbMSwzMl0sODU6WzEsMzRdLDg2
OjMzfSx7MzM6WzEsMTA2XX0sezMzOlsyLDc5XSw2NTpbMiw3OV0sNzI6WzIsNzldLDgwOlsyLDc5
XSw4MTpbMiw3OV0sODI6WzIsNzldLDgzOlsyLDc5XSw4NDpbMiw3OV0sODU6WzIsNzldfSx7MzM6
WzIsODFdfSx7MjM6WzIsMjddLDMzOlsyLDI3XSw1NDpbMiwyN10sNjU6WzIsMjddLDY4OlsyLDI3
XSw3MjpbMiwyN10sNzU6WzIsMjddLDgwOlsyLDI3XSw4MTpbMiwyN10sODI6WzIsMjddLDgzOlsy
LDI3XSw4NDpbMiwyN10sODU6WzIsMjddfSx7MjM6WzIsMjhdLDMzOlsyLDI4XSw1NDpbMiwyOF0s
NjU6WzIsMjhdLDY4OlsyLDI4XSw3MjpbMiwyOF0sNzU6WzIsMjhdLDgwOlsyLDI4XSw4MTpbMiwy
OF0sODI6WzIsMjhdLDgzOlsyLDI4XSw4NDpbMiwyOF0sODU6WzIsMjhdfSx7MjM6WzIsMzBdLDMz
OlsyLDMwXSw1NDpbMiwzMF0sNjg6WzIsMzBdLDcxOjEwNyw3MjpbMSwxMDhdLDc1OlsyLDMwXX0s
ezIzOlsyLDk4XSwzMzpbMiw5OF0sNTQ6WzIsOThdLDY4OlsyLDk4XSw3MjpbMiw5OF0sNzU6WzIs
OThdfSx7MjM6WzIsNDVdLDMzOlsyLDQ1XSw1NDpbMiw0NV0sNjU6WzIsNDVdLDY4OlsyLDQ1XSw3
MjpbMiw0NV0sNzM6WzEsMTA5XSw3NTpbMiw0NV0sODA6WzIsNDVdLDgxOlsyLDQ1XSw4MjpbMiw0
NV0sODM6WzIsNDVdLDg0OlsyLDQ1XSw4NTpbMiw0NV0sODc6WzIsNDVdfSx7MjM6WzIsNDRdLDMz
OlsyLDQ0XSw1NDpbMiw0NF0sNjU6WzIsNDRdLDY4OlsyLDQ0XSw3MjpbMiw0NF0sNzU6WzIsNDRd
LDgwOlsyLDQ0XSw4MTpbMiw0NF0sODI6WzIsNDRdLDgzOlsyLDQ0XSw4NDpbMiw0NF0sODU6WzIs
NDRdLDg3OlsyLDQ0XX0sezU0OlsxLDExMF19LHs1NDpbMiw4M10sNjU6WzIsODNdLDcyOlsyLDgz
XSw4MDpbMiw4M10sODE6WzIsODNdLDgyOlsyLDgzXSw4MzpbMiw4M10sODQ6WzIsODNdLDg1Olsy
LDgzXX0sezU0OlsyLDg1XX0sezU6WzIsMTNdLDE0OlsyLDEzXSwxNTpbMiwxM10sMTk6WzIsMTNd
LDI5OlsyLDEzXSwzNDpbMiwxM10sMzk6WzIsMTNdLDQ0OlsyLDEzXSw0NzpbMiwxM10sNDg6WzIs
MTNdLDUxOlsyLDEzXSw1NTpbMiwxM10sNjA6WzIsMTNdfSx7Mzg6NTYsMzk6WzEsNThdLDQzOjU3
LDQ0OlsxLDU5XSw0NToxMTIsNDY6MTExLDQ3OlsyLDc2XX0sezMzOlsyLDcwXSw0MDoxMTMsNjU6
WzIsNzBdLDcyOlsyLDcwXSw3NTpbMiw3MF0sODA6WzIsNzBdLDgxOlsyLDcwXSw4MjpbMiw3MF0s
ODM6WzIsNzBdLDg0OlsyLDcwXSw4NTpbMiw3MF19LHs0NzpbMiwxOF19LHs1OlsyLDE0XSwxNDpb
MiwxNF0sMTU6WzIsMTRdLDE5OlsyLDE0XSwyOTpbMiwxNF0sMzQ6WzIsMTRdLDM5OlsyLDE0XSw0
NDpbMiwxNF0sNDc6WzIsMTRdLDQ4OlsyLDE0XSw1MTpbMiwxNF0sNTU6WzIsMTRdLDYwOlsyLDE0
XX0sezMzOlsxLDExNF19LHszMzpbMiw4N10sNjU6WzIsODddLDcyOlsyLDg3XSw4MDpbMiw4N10s
ODE6WzIsODddLDgyOlsyLDg3XSw4MzpbMiw4N10sODQ6WzIsODddLDg1OlsyLDg3XX0sezMzOlsy
LDg5XX0sezIwOjc1LDYzOjExNiw2NDo3Niw2NTpbMSw0NF0sNjc6MTE1LDY4OlsyLDk2XSw2OTox
MTcsNzA6NzcsNzE6NzgsNzI6WzEsNzldLDc4OjI2LDc5OjI3LDgwOlsxLDI4XSw4MTpbMSwyOV0s
ODI6WzEsMzBdLDgzOlsxLDMxXSw4NDpbMSwzMl0sODU6WzEsMzRdLDg2OjMzfSx7MzM6WzEsMTE4
XX0sezMyOjExOSwzMzpbMiw2Ml0sNzQ6MTIwLDc1OlsxLDEyMV19LHszMzpbMiw1OV0sNjU6WzIs
NTldLDcyOlsyLDU5XSw3NTpbMiw1OV0sODA6WzIsNTldLDgxOlsyLDU5XSw4MjpbMiw1OV0sODM6
WzIsNTldLDg0OlsyLDU5XSw4NTpbMiw1OV19LHszMzpbMiw2MV0sNzU6WzIsNjFdfSx7MzM6WzIs
NjhdLDM3OjEyMiw3NDoxMjMsNzU6WzEsMTIxXX0sezMzOlsyLDY1XSw2NTpbMiw2NV0sNzI6WzIs
NjVdLDc1OlsyLDY1XSw4MDpbMiw2NV0sODE6WzIsNjVdLDgyOlsyLDY1XSw4MzpbMiw2NV0sODQ6
WzIsNjVdLDg1OlsyLDY1XX0sezMzOlsyLDY3XSw3NTpbMiw2N119LHsyMzpbMSwxMjRdfSx7MjM6
WzIsNTFdLDY1OlsyLDUxXSw3MjpbMiw1MV0sODA6WzIsNTFdLDgxOlsyLDUxXSw4MjpbMiw1MV0s
ODM6WzIsNTFdLDg0OlsyLDUxXSw4NTpbMiw1MV19LHsyMzpbMiw1M119LHszMzpbMSwxMjVdfSx7
MzM6WzIsOTFdLDY1OlsyLDkxXSw3MjpbMiw5MV0sODA6WzIsOTFdLDgxOlsyLDkxXSw4MjpbMiw5
MV0sODM6WzIsOTFdLDg0OlsyLDkxXSw4NTpbMiw5MV19LHszMzpbMiw5M119LHs1OlsyLDIyXSwx
NDpbMiwyMl0sMTU6WzIsMjJdLDE5OlsyLDIyXSwyOTpbMiwyMl0sMzQ6WzIsMjJdLDM5OlsyLDIy
XSw0NDpbMiwyMl0sNDc6WzIsMjJdLDQ4OlsyLDIyXSw1MTpbMiwyMl0sNTU6WzIsMjJdLDYwOlsy
LDIyXX0sezIzOlsyLDk5XSwzMzpbMiw5OV0sNTQ6WzIsOTldLDY4OlsyLDk5XSw3MjpbMiw5OV0s
NzU6WzIsOTldfSx7NzM6WzEsMTA5XX0sezIwOjc1LDYzOjEyNiw2NDo3Niw2NTpbMSw0NF0sNzI6
WzEsMzVdLDc4OjI2LDc5OjI3LDgwOlsxLDI4XSw4MTpbMSwyOV0sODI6WzEsMzBdLDgzOlsxLDMx
XSw4NDpbMSwzMl0sODU6WzEsMzRdLDg2OjMzfSx7NTpbMiwyM10sMTQ6WzIsMjNdLDE1OlsyLDIz
XSwxOTpbMiwyM10sMjk6WzIsMjNdLDM0OlsyLDIzXSwzOTpbMiwyM10sNDQ6WzIsMjNdLDQ3Olsy
LDIzXSw0ODpbMiwyM10sNTE6WzIsMjNdLDU1OlsyLDIzXSw2MDpbMiwyM119LHs0NzpbMiwxOV19
LHs0NzpbMiw3N119LHsyMDo3NSwzMzpbMiw3Ml0sNDE6MTI3LDYzOjEyOCw2NDo3Niw2NTpbMSw0
NF0sNjk6MTI5LDcwOjc3LDcxOjc4LDcyOlsxLDc5XSw3NTpbMiw3Ml0sNzg6MjYsNzk6MjcsODA6
WzEsMjhdLDgxOlsxLDI5XSw4MjpbMSwzMF0sODM6WzEsMzFdLDg0OlsxLDMyXSw4NTpbMSwzNF0s
ODY6MzN9LHs1OlsyLDI0XSwxNDpbMiwyNF0sMTU6WzIsMjRdLDE5OlsyLDI0XSwyOTpbMiwyNF0s
MzQ6WzIsMjRdLDM5OlsyLDI0XSw0NDpbMiwyNF0sNDc6WzIsMjRdLDQ4OlsyLDI0XSw1MTpbMiwy
NF0sNTU6WzIsMjRdLDYwOlsyLDI0XX0sezY4OlsxLDEzMF19LHs2NTpbMiw5NV0sNjg6WzIsOTVd
LDcyOlsyLDk1XSw4MDpbMiw5NV0sODE6WzIsOTVdLDgyOlsyLDk1XSw4MzpbMiw5NV0sODQ6WzIs
OTVdLDg1OlsyLDk1XX0sezY4OlsyLDk3XX0sezU6WzIsMjFdLDE0OlsyLDIxXSwxNTpbMiwyMV0s
MTk6WzIsMjFdLDI5OlsyLDIxXSwzNDpbMiwyMV0sMzk6WzIsMjFdLDQ0OlsyLDIxXSw0NzpbMiwy
MV0sNDg6WzIsMjFdLDUxOlsyLDIxXSw1NTpbMiwyMV0sNjA6WzIsMjFdfSx7MzM6WzEsMTMxXX0s
ezMzOlsyLDYzXX0sezcyOlsxLDEzM10sNzY6MTMyfSx7MzM6WzEsMTM0XX0sezMzOlsyLDY5XX0s
ezE1OlsyLDEyXX0sezE0OlsyLDI2XSwxNTpbMiwyNl0sMTk6WzIsMjZdLDI5OlsyLDI2XSwzNDpb
MiwyNl0sNDc6WzIsMjZdLDQ4OlsyLDI2XSw1MTpbMiwyNl0sNTU6WzIsMjZdLDYwOlsyLDI2XX0s
ezIzOlsyLDMxXSwzMzpbMiwzMV0sNTQ6WzIsMzFdLDY4OlsyLDMxXSw3MjpbMiwzMV0sNzU6WzIs
MzFdfSx7MzM6WzIsNzRdLDQyOjEzNSw3NDoxMzYsNzU6WzEsMTIxXX0sezMzOlsyLDcxXSw2NTpb
Miw3MV0sNzI6WzIsNzFdLDc1OlsyLDcxXSw4MDpbMiw3MV0sODE6WzIsNzFdLDgyOlsyLDcxXSw4
MzpbMiw3MV0sODQ6WzIsNzFdLDg1OlsyLDcxXX0sezMzOlsyLDczXSw3NTpbMiw3M119LHsyMzpb
MiwyOV0sMzM6WzIsMjldLDU0OlsyLDI5XSw2NTpbMiwyOV0sNjg6WzIsMjldLDcyOlsyLDI5XSw3
NTpbMiwyOV0sODA6WzIsMjldLDgxOlsyLDI5XSw4MjpbMiwyOV0sODM6WzIsMjldLDg0OlsyLDI5
XSw4NTpbMiwyOV19LHsxNDpbMiwxNV0sMTU6WzIsMTVdLDE5OlsyLDE1XSwyOTpbMiwxNV0sMzQ6
WzIsMTVdLDM5OlsyLDE1XSw0NDpbMiwxNV0sNDc6WzIsMTVdLDQ4OlsyLDE1XSw1MTpbMiwxNV0s
NTU6WzIsMTVdLDYwOlsyLDE1XX0sezcyOlsxLDEzOF0sNzc6WzEsMTM3XX0sezcyOlsyLDEwMF0s
Nzc6WzIsMTAwXX0sezE0OlsyLDE2XSwxNTpbMiwxNl0sMTk6WzIsMTZdLDI5OlsyLDE2XSwzNDpb
MiwxNl0sNDQ6WzIsMTZdLDQ3OlsyLDE2XSw0ODpbMiwxNl0sNTE6WzIsMTZdLDU1OlsyLDE2XSw2
MDpbMiwxNl19LHszMzpbMSwxMzldfSx7MzM6WzIsNzVdfSx7MzM6WzIsMzJdfSx7NzI6WzIsMTAx
XSw3NzpbMiwxMDFdfSx7MTQ6WzIsMTddLDE1OlsyLDE3XSwxOTpbMiwxN10sMjk6WzIsMTddLDM0
OlsyLDE3XSwzOTpbMiwxN10sNDQ6WzIsMTddLDQ3OlsyLDE3XSw0ODpbMiwxN10sNTE6WzIsMTdd
LDU1OlsyLDE3XSw2MDpbMiwxN119XSwKK2RlZmF1bHRBY3Rpb25zOiB7NDpbMiwxXSw1NTpbMiw1
NV0sNTc6WzIsMjBdLDYxOlsyLDU3XSw3NDpbMiw4MV0sODM6WzIsODVdLDg3OlsyLDE4XSw5MTpb
Miw4OV0sMTAyOlsyLDUzXSwxMDU6WzIsOTNdLDExMTpbMiwxOV0sMTEyOlsyLDc3XSwxMTc6WzIs
OTddLDEyMDpbMiw2M10sMTIzOlsyLDY5XSwxMjQ6WzIsMTJdLDEzNjpbMiw3NV0sMTM3OlsyLDMy
XX0sCitwYXJzZUVycm9yOiBmdW5jdGlvbiBwYXJzZUVycm9yKHN0ciwgaGFzaCkgeworICAgIHRo
cm93IG5ldyBFcnJvcihzdHIpOworfSwKK3BhcnNlOiBmdW5jdGlvbiBwYXJzZShpbnB1dCkgewor
ICAgIHZhciBzZWxmID0gdGhpcywgc3RhY2sgPSBbMF0sIHZzdGFjayA9IFtudWxsXSwgbHN0YWNr
ID0gW10sIHRhYmxlID0gdGhpcy50YWJsZSwgeXl0ZXh0ID0gIiIsIHl5bGluZW5vID0gMCwgeXls
ZW5nID0gMCwgcmVjb3ZlcmluZyA9IDAsIFRFUlJPUiA9IDIsIEVPRiA9IDE7CisgICAgdGhpcy5s
ZXhlci5zZXRJbnB1dChpbnB1dCk7CisgICAgdGhpcy5sZXhlci55eSA9IHRoaXMueXk7CisgICAg
dGhpcy55eS5sZXhlciA9IHRoaXMubGV4ZXI7CisgICAgdGhpcy55eS5wYXJzZXIgPSB0aGlzOwor
ICAgIGlmICh0eXBlb2YgdGhpcy5sZXhlci55eWxsb2MgPT0gInVuZGVmaW5lZCIpCisgICAgICAg
IHRoaXMubGV4ZXIueXlsbG9jID0ge307CisgICAgdmFyIHl5bG9jID0gdGhpcy5sZXhlci55eWxs
b2M7CisgICAgbHN0YWNrLnB1c2goeXlsb2MpOworICAgIHZhciByYW5nZXMgPSB0aGlzLmxleGVy
Lm9wdGlvbnMgJiYgdGhpcy5sZXhlci5vcHRpb25zLnJhbmdlczsKKyAgICBpZiAodHlwZW9mIHRo
aXMueXkucGFyc2VFcnJvciA9PT0gImZ1bmN0aW9uIikKKyAgICAgICAgdGhpcy5wYXJzZUVycm9y
ID0gdGhpcy55eS5wYXJzZUVycm9yOworICAgIGZ1bmN0aW9uIHBvcFN0YWNrKG4pIHsKKyAgICAg
ICAgc3RhY2subGVuZ3RoID0gc3RhY2subGVuZ3RoIC0gMiAqIG47CisgICAgICAgIHZzdGFjay5s
ZW5ndGggPSB2c3RhY2subGVuZ3RoIC0gbjsKKyAgICAgICAgbHN0YWNrLmxlbmd0aCA9IGxzdGFj
ay5sZW5ndGggLSBuOworICAgIH0KKyAgICBmdW5jdGlvbiBsZXgoKSB7CisgICAgICAgIHZhciB0
b2tlbjsKKyAgICAgICAgdG9rZW4gPSBzZWxmLmxleGVyLmxleCgpIHx8IDE7CisgICAgICAgIGlm
ICh0eXBlb2YgdG9rZW4gIT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICB0b2tlbiA9IHNlbGYu
c3ltYm9sc19bdG9rZW5dIHx8IHRva2VuOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0b2tl
bjsKKyAgICB9CisgICAgdmFyIHN5bWJvbCwgcHJlRXJyb3JTeW1ib2wsIHN0YXRlLCBhY3Rpb24s
IGEsIHIsIHl5dmFsID0ge30sIHAsIGxlbiwgbmV3U3RhdGUsIGV4cGVjdGVkOworICAgIHdoaWxl
ICh0cnVlKSB7CisgICAgICAgIHN0YXRlID0gc3RhY2tbc3RhY2subGVuZ3RoIC0gMV07CisgICAg
ICAgIGlmICh0aGlzLmRlZmF1bHRBY3Rpb25zW3N0YXRlXSkgeworICAgICAgICAgICAgYWN0aW9u
ID0gdGhpcy5kZWZhdWx0QWN0aW9uc1tzdGF0ZV07CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBpZiAoc3ltYm9sID09PSBudWxsIHx8IHR5cGVvZiBzeW1ib2wgPT0gInVuZGVmaW5lZCIp
IHsKKyAgICAgICAgICAgICAgICBzeW1ib2wgPSBsZXgoKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGFjdGlvbiA9IHRhYmxlW3N0YXRlXSAmJiB0YWJsZVtzdGF0ZV1bc3ltYm9sXTsKKyAg
ICAgICAgfQorICAgICAgICBpZiAodHlwZW9mIGFjdGlvbiA9PT0gInVuZGVmaW5lZCIgfHwgIWFj
dGlvbi5sZW5ndGggfHwgIWFjdGlvblswXSkgeworICAgICAgICAgICAgdmFyIGVyclN0ciA9ICIi
OworICAgICAgICAgICAgaWYgKCFyZWNvdmVyaW5nKSB7CisgICAgICAgICAgICAgICAgZXhwZWN0
ZWQgPSBbXTsKKyAgICAgICAgICAgICAgICBmb3IgKHAgaW4gdGFibGVbc3RhdGVdKQorICAgICAg
ICAgICAgICAgICAgICBpZiAodGhpcy50ZXJtaW5hbHNfW3BdICYmIHAgPiAyKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBleHBlY3RlZC5wdXNoKCInIiArIHRoaXMudGVybWluYWxzX1twXSAr
ICInIik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAodGhpcy5s
ZXhlci5zaG93UG9zaXRpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgZXJyU3RyID0gIlBhcnNl
IGVycm9yIG9uIGxpbmUgIiArICh5eWxpbmVubyArIDEpICsgIjpcbiIgKyB0aGlzLmxleGVyLnNo
b3dQb3NpdGlvbigpICsgIlxuRXhwZWN0aW5nICIgKyBleHBlY3RlZC5qb2luKCIsICIpICsgIiwg
Z290ICciICsgKHRoaXMudGVybWluYWxzX1tzeW1ib2xdIHx8IHN5bWJvbCkgKyAiJyI7CisgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZXJyU3RyID0gIlBhcnNl
IGVycm9yIG9uIGxpbmUgIiArICh5eWxpbmVubyArIDEpICsgIjogVW5leHBlY3RlZCAiICsgKHN5
bWJvbCA9PSAxPyJlbmQgb2YgaW5wdXQiOiInIiArICh0aGlzLnRlcm1pbmFsc19bc3ltYm9sXSB8
fCBzeW1ib2wpICsgIiciKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdGhp
cy5wYXJzZUVycm9yKGVyclN0ciwge3RleHQ6IHRoaXMubGV4ZXIubWF0Y2gsIHRva2VuOiB0aGlz
LnRlcm1pbmFsc19bc3ltYm9sXSB8fCBzeW1ib2wsIGxpbmU6IHRoaXMubGV4ZXIueXlsaW5lbm8s
IGxvYzogeXlsb2MsIGV4cGVjdGVkOiBleHBlY3RlZH0pOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIGlmIChhY3Rpb25bMF0gaW5zdGFuY2VvZiBBcnJheSAmJiBhY3Rpb24ubGVu
Z3RoID4gMSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJQYXJzZSBFcnJvcjogbXVs
dGlwbGUgYWN0aW9ucyBwb3NzaWJsZSBhdCBzdGF0ZTogIiArIHN0YXRlICsgIiwgdG9rZW46ICIg
KyBzeW1ib2wpOworICAgICAgICB9CisgICAgICAgIHN3aXRjaCAoYWN0aW9uWzBdKSB7CisgICAg
ICAgIGNhc2UgMToKKyAgICAgICAgICAgIHN0YWNrLnB1c2goc3ltYm9sKTsKKyAgICAgICAgICAg
IHZzdGFjay5wdXNoKHRoaXMubGV4ZXIueXl0ZXh0KTsKKyAgICAgICAgICAgIGxzdGFjay5wdXNo
KHRoaXMubGV4ZXIueXlsbG9jKTsKKyAgICAgICAgICAgIHN0YWNrLnB1c2goYWN0aW9uWzFdKTsK
KyAgICAgICAgICAgIHN5bWJvbCA9IG51bGw7CisgICAgICAgICAgICBpZiAoIXByZUVycm9yU3lt
Ym9sKSB7CisgICAgICAgICAgICAgICAgeXlsZW5nID0gdGhpcy5sZXhlci55eWxlbmc7CisgICAg
ICAgICAgICAgICAgeXl0ZXh0ID0gdGhpcy5sZXhlci55eXRleHQ7CisgICAgICAgICAgICAgICAg
eXlsaW5lbm8gPSB0aGlzLmxleGVyLnl5bGluZW5vOworICAgICAgICAgICAgICAgIHl5bG9jID0g
dGhpcy5sZXhlci55eWxsb2M7CisgICAgICAgICAgICAgICAgaWYgKHJlY292ZXJpbmcgPiAwKQor
ICAgICAgICAgICAgICAgICAgICByZWNvdmVyaW5nLS07CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIHN5bWJvbCA9IHByZUVycm9yU3ltYm9sOworICAgICAgICAgICAgICAg
IHByZUVycm9yU3ltYm9sID0gbnVsbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICBsZW4gPSB0aGlzLnByb2R1Y3Rpb25zX1th
Y3Rpb25bMV1dWzFdOworICAgICAgICAgICAgeXl2YWwuJCA9IHZzdGFja1t2c3RhY2subGVuZ3Ro
IC0gbGVuXTsKKyAgICAgICAgICAgIHl5dmFsLl8kID0ge2ZpcnN0X2xpbmU6IGxzdGFja1tsc3Rh
Y2subGVuZ3RoIC0gKGxlbiB8fCAxKV0uZmlyc3RfbGluZSwgbGFzdF9saW5lOiBsc3RhY2tbbHN0
YWNrLmxlbmd0aCAtIDFdLmxhc3RfbGluZSwgZmlyc3RfY29sdW1uOiBsc3RhY2tbbHN0YWNrLmxl
bmd0aCAtIChsZW4gfHwgMSldLmZpcnN0X2NvbHVtbiwgbGFzdF9jb2x1bW46IGxzdGFja1tsc3Rh
Y2subGVuZ3RoIC0gMV0ubGFzdF9jb2x1bW59OworICAgICAgICAgICAgaWYgKHJhbmdlcykgewor
ICAgICAgICAgICAgICAgIHl5dmFsLl8kLnJhbmdlID0gW2xzdGFja1tsc3RhY2subGVuZ3RoIC0g
KGxlbiB8fCAxKV0ucmFuZ2VbMF0sIGxzdGFja1tsc3RhY2subGVuZ3RoIC0gMV0ucmFuZ2VbMV1d
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgciA9IHRoaXMucGVyZm9ybUFjdGlvbi5jYWxs
KHl5dmFsLCB5eXRleHQsIHl5bGVuZywgeXlsaW5lbm8sIHRoaXMueXksIGFjdGlvblsxXSwgdnN0
YWNrLCBsc3RhY2spOworICAgICAgICAgICAgaWYgKHR5cGVvZiByICE9PSAidW5kZWZpbmVkIikg
eworICAgICAgICAgICAgICAgIHJldHVybiByOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
aWYgKGxlbikgeworICAgICAgICAgICAgICAgIHN0YWNrID0gc3RhY2suc2xpY2UoMCwgLTEgKiBs
ZW4gKiAyKTsKKyAgICAgICAgICAgICAgICB2c3RhY2sgPSB2c3RhY2suc2xpY2UoMCwgLTEgKiBs
ZW4pOworICAgICAgICAgICAgICAgIGxzdGFjayA9IGxzdGFjay5zbGljZSgwLCAtMSAqIGxlbik7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzdGFjay5wdXNoKHRoaXMucHJvZHVjdGlvbnNf
W2FjdGlvblsxXV1bMF0pOworICAgICAgICAgICAgdnN0YWNrLnB1c2goeXl2YWwuJCk7CisgICAg
ICAgICAgICBsc3RhY2sucHVzaCh5eXZhbC5fJCk7CisgICAgICAgICAgICBuZXdTdGF0ZSA9IHRh
YmxlW3N0YWNrW3N0YWNrLmxlbmd0aCAtIDJdXVtzdGFja1tzdGFjay5sZW5ndGggLSAxXV07Cisg
ICAgICAgICAgICBzdGFjay5wdXNoKG5ld1N0YXRlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIDM6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0K
KyAgICByZXR1cm4gdHJ1ZTsKK30KK307CisvKiBKaXNvbiBnZW5lcmF0ZWQgbGV4ZXIgKi8KK3Zh
ciBsZXhlciA9IChmdW5jdGlvbigpewordmFyIGxleGVyID0gKHtFT0Y6MSwKK3BhcnNlRXJyb3I6
ZnVuY3Rpb24gcGFyc2VFcnJvcihzdHIsIGhhc2gpIHsKKyAgICAgICAgaWYgKHRoaXMueXkucGFy
c2VyKSB7CisgICAgICAgICAgICB0aGlzLnl5LnBhcnNlci5wYXJzZUVycm9yKHN0ciwgaGFzaCk7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Ioc3RyKTsKKyAg
ICAgICAgfQorICAgIH0sCitzZXRJbnB1dDpmdW5jdGlvbiAoaW5wdXQpIHsKKyAgICAgICAgdGhp
cy5faW5wdXQgPSBpbnB1dDsKKyAgICAgICAgdGhpcy5fbW9yZSA9IHRoaXMuX2xlc3MgPSB0aGlz
LmRvbmUgPSBmYWxzZTsKKyAgICAgICAgdGhpcy55eWxpbmVubyA9IHRoaXMueXlsZW5nID0gMDsK
KyAgICAgICAgdGhpcy55eXRleHQgPSB0aGlzLm1hdGNoZWQgPSB0aGlzLm1hdGNoID0gJyc7Cisg
ICAgICAgIHRoaXMuY29uZGl0aW9uU3RhY2sgPSBbJ0lOSVRJQUwnXTsKKyAgICAgICAgdGhpcy55
eWxsb2MgPSB7Zmlyc3RfbGluZToxLGZpcnN0X2NvbHVtbjowLGxhc3RfbGluZToxLGxhc3RfY29s
dW1uOjB9OworICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJhbmdlcykgdGhpcy55eWxsb2MucmFu
Z2UgPSBbMCwwXTsKKyAgICAgICAgdGhpcy5vZmZzZXQgPSAwOworICAgICAgICByZXR1cm4gdGhp
czsKKyAgICB9LAoraW5wdXQ6ZnVuY3Rpb24gKCkgeworICAgICAgICB2YXIgY2ggPSB0aGlzLl9p
bnB1dFswXTsKKyAgICAgICAgdGhpcy55eXRleHQgKz0gY2g7CisgICAgICAgIHRoaXMueXlsZW5n
Kys7CisgICAgICAgIHRoaXMub2Zmc2V0Kys7CisgICAgICAgIHRoaXMubWF0Y2ggKz0gY2g7Cisg
ICAgICAgIHRoaXMubWF0Y2hlZCArPSBjaDsKKyAgICAgICAgdmFyIGxpbmVzID0gY2gubWF0Y2go
Lyg/OlxyXG4/fFxuKS4qL2cpOworICAgICAgICBpZiAobGluZXMpIHsKKyAgICAgICAgICAgIHRo
aXMueXlsaW5lbm8rKzsKKyAgICAgICAgICAgIHRoaXMueXlsbG9jLmxhc3RfbGluZSsrOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhpcy55eWxsb2MubGFzdF9jb2x1bW4rKzsKKyAg
ICAgICAgfQorICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJhbmdlcykgdGhpcy55eWxsb2MucmFu
Z2VbMV0rKzsKKworICAgICAgICB0aGlzLl9pbnB1dCA9IHRoaXMuX2lucHV0LnNsaWNlKDEpOwor
ICAgICAgICByZXR1cm4gY2g7CisgICAgfSwKK3VucHV0OmZ1bmN0aW9uIChjaCkgeworICAgICAg
ICB2YXIgbGVuID0gY2gubGVuZ3RoOworICAgICAgICB2YXIgbGluZXMgPSBjaC5zcGxpdCgvKD86
XHJcbj98XG4pL2cpOworCisgICAgICAgIHRoaXMuX2lucHV0ID0gY2ggKyB0aGlzLl9pbnB1dDsK
KyAgICAgICAgdGhpcy55eXRleHQgPSB0aGlzLnl5dGV4dC5zdWJzdHIoMCwgdGhpcy55eXRleHQu
bGVuZ3RoLWxlbi0xKTsKKyAgICAgICAgLy90aGlzLnl5bGVuZyAtPSBsZW47CisgICAgICAgIHRo
aXMub2Zmc2V0IC09IGxlbjsKKyAgICAgICAgdmFyIG9sZExpbmVzID0gdGhpcy5tYXRjaC5zcGxp
dCgvKD86XHJcbj98XG4pL2cpOworICAgICAgICB0aGlzLm1hdGNoID0gdGhpcy5tYXRjaC5zdWJz
dHIoMCwgdGhpcy5tYXRjaC5sZW5ndGgtMSk7CisgICAgICAgIHRoaXMubWF0Y2hlZCA9IHRoaXMu
bWF0Y2hlZC5zdWJzdHIoMCwgdGhpcy5tYXRjaGVkLmxlbmd0aC0xKTsKKworICAgICAgICBpZiAo
bGluZXMubGVuZ3RoLTEpIHRoaXMueXlsaW5lbm8gLT0gbGluZXMubGVuZ3RoLTE7CisgICAgICAg
IHZhciByID0gdGhpcy55eWxsb2MucmFuZ2U7CisKKyAgICAgICAgdGhpcy55eWxsb2MgPSB7Zmly
c3RfbGluZTogdGhpcy55eWxsb2MuZmlyc3RfbGluZSwKKyAgICAgICAgICBsYXN0X2xpbmU6IHRo
aXMueXlsaW5lbm8rMSwKKyAgICAgICAgICBmaXJzdF9jb2x1bW46IHRoaXMueXlsbG9jLmZpcnN0
X2NvbHVtbiwKKyAgICAgICAgICBsYXN0X2NvbHVtbjogbGluZXMgPworICAgICAgICAgICAgICAo
bGluZXMubGVuZ3RoID09PSBvbGRMaW5lcy5sZW5ndGggPyB0aGlzLnl5bGxvYy5maXJzdF9jb2x1
bW4gOiAwKSArIG9sZExpbmVzW29sZExpbmVzLmxlbmd0aCAtIGxpbmVzLmxlbmd0aF0ubGVuZ3Ro
IC0gbGluZXNbMF0ubGVuZ3RoOgorICAgICAgICAgICAgICB0aGlzLnl5bGxvYy5maXJzdF9jb2x1
bW4gLSBsZW4KKyAgICAgICAgICB9OworCisgICAgICAgIGlmICh0aGlzLm9wdGlvbnMucmFuZ2Vz
KSB7CisgICAgICAgICAgICB0aGlzLnl5bGxvYy5yYW5nZSA9IFtyWzBdLCByWzBdICsgdGhpcy55
eWxlbmcgLSBsZW5dOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0sCitt
b3JlOmZ1bmN0aW9uICgpIHsKKyAgICAgICAgdGhpcy5fbW9yZSA9IHRydWU7CisgICAgICAgIHJl
dHVybiB0aGlzOworICAgIH0sCitsZXNzOmZ1bmN0aW9uIChuKSB7CisgICAgICAgIHRoaXMudW5w
dXQodGhpcy5tYXRjaC5zbGljZShuKSk7CisgICAgfSwKK3Bhc3RJbnB1dDpmdW5jdGlvbiAoKSB7
CisgICAgICAgIHZhciBwYXN0ID0gdGhpcy5tYXRjaGVkLnN1YnN0cigwLCB0aGlzLm1hdGNoZWQu
bGVuZ3RoIC0gdGhpcy5tYXRjaC5sZW5ndGgpOworICAgICAgICByZXR1cm4gKHBhc3QubGVuZ3Ro
ID4gMjAgPyAnLi4uJzonJykgKyBwYXN0LnN1YnN0cigtMjApLnJlcGxhY2UoL1xuL2csICIiKTsK
KyAgICB9LAordXBjb21pbmdJbnB1dDpmdW5jdGlvbiAoKSB7CisgICAgICAgIHZhciBuZXh0ID0g
dGhpcy5tYXRjaDsKKyAgICAgICAgaWYgKG5leHQubGVuZ3RoIDwgMjApIHsKKyAgICAgICAgICAg
IG5leHQgKz0gdGhpcy5faW5wdXQuc3Vic3RyKDAsIDIwLW5leHQubGVuZ3RoKTsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gKG5leHQuc3Vic3RyKDAsMjApKyhuZXh0Lmxlbmd0aCA+IDIwID8g
Jy4uLic6JycpKS5yZXBsYWNlKC9cbi9nLCAiIik7CisgICAgfSwKK3Nob3dQb3NpdGlvbjpmdW5j
dGlvbiAoKSB7CisgICAgICAgIHZhciBwcmUgPSB0aGlzLnBhc3RJbnB1dCgpOworICAgICAgICB2
YXIgYyA9IG5ldyBBcnJheShwcmUubGVuZ3RoICsgMSkuam9pbigiLSIpOworICAgICAgICByZXR1
cm4gcHJlICsgdGhpcy51cGNvbWluZ0lucHV0KCkgKyAiXG4iICsgYysiXiI7CisgICAgfSwKK25l
eHQ6ZnVuY3Rpb24gKCkgeworICAgICAgICBpZiAodGhpcy5kb25lKSB7CisgICAgICAgICAgICBy
ZXR1cm4gdGhpcy5FT0Y7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCF0aGlzLl9pbnB1dCkgdGhp
cy5kb25lID0gdHJ1ZTsKKworICAgICAgICB2YXIgdG9rZW4sCisgICAgICAgICAgICBtYXRjaCwK
KyAgICAgICAgICAgIHRlbXBNYXRjaCwKKyAgICAgICAgICAgIGluZGV4LAorICAgICAgICAgICAg
Y29sLAorICAgICAgICAgICAgbGluZXM7CisgICAgICAgIGlmICghdGhpcy5fbW9yZSkgeworICAg
ICAgICAgICAgdGhpcy55eXRleHQgPSAnJzsKKyAgICAgICAgICAgIHRoaXMubWF0Y2ggPSAnJzsK
KyAgICAgICAgfQorICAgICAgICB2YXIgcnVsZXMgPSB0aGlzLl9jdXJyZW50UnVsZXMoKTsKKyAg
ICAgICAgZm9yICh2YXIgaT0wO2kgPCBydWxlcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAg
dGVtcE1hdGNoID0gdGhpcy5faW5wdXQubWF0Y2godGhpcy5ydWxlc1tydWxlc1tpXV0pOworICAg
ICAgICAgICAgaWYgKHRlbXBNYXRjaCAmJiAoIW1hdGNoIHx8IHRlbXBNYXRjaFswXS5sZW5ndGgg
PiBtYXRjaFswXS5sZW5ndGgpKSB7CisgICAgICAgICAgICAgICAgbWF0Y2ggPSB0ZW1wTWF0Y2g7
CisgICAgICAgICAgICAgICAgaW5kZXggPSBpOworICAgICAgICAgICAgICAgIGlmICghdGhpcy5v
cHRpb25zLmZsZXgpIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlm
IChtYXRjaCkgeworICAgICAgICAgICAgbGluZXMgPSBtYXRjaFswXS5tYXRjaCgvKD86XHJcbj98
XG4pLiovZyk7CisgICAgICAgICAgICBpZiAobGluZXMpIHRoaXMueXlsaW5lbm8gKz0gbGluZXMu
bGVuZ3RoOworICAgICAgICAgICAgdGhpcy55eWxsb2MgPSB7Zmlyc3RfbGluZTogdGhpcy55eWxs
b2MubGFzdF9saW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdF9saW5lOiB0aGlz
Lnl5bGluZW5vKzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJzdF9jb2x1bW46IHRo
aXMueXlsbG9jLmxhc3RfY29sdW1uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdF9j
b2x1bW46IGxpbmVzID8gbGluZXNbbGluZXMubGVuZ3RoLTFdLmxlbmd0aC1saW5lc1tsaW5lcy5s
ZW5ndGgtMV0ubWF0Y2goL1xyP1xuPy8pWzBdLmxlbmd0aCA6IHRoaXMueXlsbG9jLmxhc3RfY29s
dW1uICsgbWF0Y2hbMF0ubGVuZ3RofTsKKyAgICAgICAgICAgIHRoaXMueXl0ZXh0ICs9IG1hdGNo
WzBdOworICAgICAgICAgICAgdGhpcy5tYXRjaCArPSBtYXRjaFswXTsKKyAgICAgICAgICAgIHRo
aXMubWF0Y2hlcyA9IG1hdGNoOworICAgICAgICAgICAgdGhpcy55eWxlbmcgPSB0aGlzLnl5dGV4
dC5sZW5ndGg7CisgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJhbmdlcykgeworICAgICAg
ICAgICAgICAgIHRoaXMueXlsbG9jLnJhbmdlID0gW3RoaXMub2Zmc2V0LCB0aGlzLm9mZnNldCAr
PSB0aGlzLnl5bGVuZ107CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0aGlzLl9tb3JlID0g
ZmFsc2U7CisgICAgICAgICAgICB0aGlzLl9pbnB1dCA9IHRoaXMuX2lucHV0LnNsaWNlKG1hdGNo
WzBdLmxlbmd0aCk7CisgICAgICAgICAgICB0aGlzLm1hdGNoZWQgKz0gbWF0Y2hbMF07CisgICAg
ICAgICAgICB0b2tlbiA9IHRoaXMucGVyZm9ybUFjdGlvbi5jYWxsKHRoaXMsIHRoaXMueXksIHRo
aXMsIHJ1bGVzW2luZGV4XSx0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2su
bGVuZ3RoLTFdKTsKKyAgICAgICAgICAgIGlmICh0aGlzLmRvbmUgJiYgdGhpcy5faW5wdXQpIHRo
aXMuZG9uZSA9IGZhbHNlOworICAgICAgICAgICAgaWYgKHRva2VuKSByZXR1cm4gdG9rZW47Cisg
ICAgICAgICAgICBlbHNlIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAodGhpcy5faW5w
dXQgPT09ICIiKSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy5FT0Y7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJzZUVycm9yKCdMZXhpY2FsIGVycm9yIG9u
IGxpbmUgJysodGhpcy55eWxpbmVubysxKSsnLiBVbnJlY29nbml6ZWQgdGV4dC5cbicrdGhpcy5z
aG93UG9zaXRpb24oKSwKKyAgICAgICAgICAgICAgICAgICAge3RleHQ6ICIiLCB0b2tlbjogbnVs
bCwgbGluZTogdGhpcy55eWxpbmVub30pOworICAgICAgICB9CisgICAgfSwKK2xleDpmdW5jdGlv
biBsZXgoKSB7CisgICAgICAgIHZhciByID0gdGhpcy5uZXh0KCk7CisgICAgICAgIGlmICh0eXBl
b2YgciAhPT0gJ3VuZGVmaW5lZCcpIHsKKyAgICAgICAgICAgIHJldHVybiByOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMubGV4KCk7CisgICAgICAgIH0KKyAgICB9
LAorYmVnaW46ZnVuY3Rpb24gYmVnaW4oY29uZGl0aW9uKSB7CisgICAgICAgIHRoaXMuY29uZGl0
aW9uU3RhY2sucHVzaChjb25kaXRpb24pOworICAgIH0sCitwb3BTdGF0ZTpmdW5jdGlvbiBwb3BT
dGF0ZSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2sucG9wKCk7CisgICAg
fSwKK19jdXJyZW50UnVsZXM6ZnVuY3Rpb24gX2N1cnJlbnRSdWxlcygpIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMuY29uZGl0aW9uc1t0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3Rh
Y2subGVuZ3RoLTFdXS5ydWxlczsKKyAgICB9LAordG9wU3RhdGU6ZnVuY3Rpb24gKCkgeworICAg
ICAgICByZXR1cm4gdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0
aC0yXTsKKyAgICB9LAorcHVzaFN0YXRlOmZ1bmN0aW9uIGJlZ2luKGNvbmRpdGlvbikgeworICAg
ICAgICB0aGlzLmJlZ2luKGNvbmRpdGlvbik7CisgICAgfX0pOworbGV4ZXIub3B0aW9ucyA9IHt9
OworbGV4ZXIucGVyZm9ybUFjdGlvbiA9IGZ1bmN0aW9uIGFub255bW91cyh5eSx5eV8sJGF2b2lk
aW5nX25hbWVfY29sbGlzaW9ucyxZWV9TVEFSVAorLyoqLykgeworCisKK2Z1bmN0aW9uIHN0cmlw
KHN0YXJ0LCBlbmQpIHsKKyAgcmV0dXJuIHl5Xy55eXRleHQgPSB5eV8ueXl0ZXh0LnN1YnN0cihz
dGFydCwgeXlfLnl5bGVuZy1lbmQpOworfQorCisKK3ZhciBZWVNUQVRFPVlZX1NUQVJUCitzd2l0
Y2goJGF2b2lkaW5nX25hbWVfY29sbGlzaW9ucykgeworY2FzZSAwOgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZih5eV8ueXl0ZXh0LnNsaWNlKC0yKSA9PT0gIlxcXFwiKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaXAoMCwxKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJlZ2luKCJtdSIpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYoeXlfLnl5dGV4dC5zbGljZSgt
MSkgPT09ICJcXCIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJp
cCgwLDEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmVnaW4o
ImVtdSIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmVnaW4oIm11Iik7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYoeXlfLnl5dGV4dCkgcmV0dXJuIDE1OworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgCiticmVhazsKK2Nhc2UgMTpyZXR1cm4gMTU7CiticmVhazsKK2Nhc2Ug
MjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTU7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAKK2JyZWFrOworY2FzZSAzOnRoaXMuYmVnaW4oJ3Jhdycp
OyByZXR1cm4gMTU7CiticmVhazsKK2Nhc2UgNDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0aGlzLnBvcFN0YXRlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gU2hvdWxkIGJlIHVzaW5nIGB0aGlzLnRvcFN0YXRlKClgIGJlbG93LCBidXQgaXQgY3Vy
cmVudGx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmV0dXJucyB0aGUg
c2Vjb25kIHRvcCBpbnN0ZWFkIG9mIHRoZSBmaXJzdCB0b3AuIE9wZW5lZCBhbgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzc3VlIGFib3V0IGl0IGF0IGh0dHBzOi8vZ2l0
aHViLmNvbS96YWFjaC9qaXNvbi9pc3N1ZXMvMjkxCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5n
dGgtMV0gPT09ICdyYXcnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gMTU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHl5Xy55eXRleHQgPSB5eV8ueXl0ZXh0
LnN1YnN0cig1LCB5eV8ueXlsZW5nLTkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuICdFTkRfUkFXX0JMT0NLJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK2JyZWFrOworY2Fz
ZSA1OiByZXR1cm4gMTU7IAorYnJlYWs7CitjYXNlIDY6CisgIHRoaXMucG9wU3RhdGUoKTsKKyAg
cmV0dXJuIDE0OworCiticmVhazsKK2Nhc2UgNzpyZXR1cm4gNjU7CiticmVhazsKK2Nhc2UgODpy
ZXR1cm4gNjg7CiticmVhazsKK2Nhc2UgOTogcmV0dXJuIDE5OyAKK2JyZWFrOworY2FzZSAxMDoK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iZWdpbigncmF3Jyk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDIzOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgCiticmVhazsKK2Nhc2UgMTE6cmV0dXJuIDU1OworYnJlYWs7CitjYXNl
IDEyOnJldHVybiA2MDsKK2JyZWFrOworY2FzZSAxMzpyZXR1cm4gMjk7CiticmVhazsKK2Nhc2Ug
MTQ6cmV0dXJuIDQ3OworYnJlYWs7CitjYXNlIDE1OnRoaXMucG9wU3RhdGUoKTsgcmV0dXJuIDQ0
OworYnJlYWs7CitjYXNlIDE2OnRoaXMucG9wU3RhdGUoKTsgcmV0dXJuIDQ0OworYnJlYWs7Citj
YXNlIDE3OnJldHVybiAzNDsKK2JyZWFrOworY2FzZSAxODpyZXR1cm4gMzk7CiticmVhazsKK2Nh
c2UgMTk6cmV0dXJuIDUxOworYnJlYWs7CitjYXNlIDIwOnJldHVybiA0ODsKK2JyZWFrOworY2Fz
ZSAyMToKKyAgdGhpcy51bnB1dCh5eV8ueXl0ZXh0KTsKKyAgdGhpcy5wb3BTdGF0ZSgpOworICB0
aGlzLmJlZ2luKCdjb20nKTsKKworYnJlYWs7CitjYXNlIDIyOgorICB0aGlzLnBvcFN0YXRlKCk7
CisgIHJldHVybiAxNDsKKworYnJlYWs7CitjYXNlIDIzOnJldHVybiA0ODsKK2JyZWFrOworY2Fz
ZSAyNDpyZXR1cm4gNzM7CiticmVhazsKK2Nhc2UgMjU6cmV0dXJuIDcyOworYnJlYWs7CitjYXNl
IDI2OnJldHVybiA3MjsKK2JyZWFrOworY2FzZSAyNzpyZXR1cm4gODc7CiticmVhazsKK2Nhc2Ug
Mjg6Ly8gaWdub3JlIHdoaXRlc3BhY2UKK2JyZWFrOworY2FzZSAyOTp0aGlzLnBvcFN0YXRlKCk7
IHJldHVybiA1NDsKK2JyZWFrOworY2FzZSAzMDp0aGlzLnBvcFN0YXRlKCk7IHJldHVybiAzMzsK
K2JyZWFrOworY2FzZSAzMTp5eV8ueXl0ZXh0ID0gc3RyaXAoMSwyKS5yZXBsYWNlKC9cXCIvZywn
IicpOyByZXR1cm4gODA7CiticmVhazsKK2Nhc2UgMzI6eXlfLnl5dGV4dCA9IHN0cmlwKDEsMiku
cmVwbGFjZSgvXFwnL2csIiciKTsgcmV0dXJuIDgwOworYnJlYWs7CitjYXNlIDMzOnJldHVybiA4
NTsKK2JyZWFrOworY2FzZSAzNDpyZXR1cm4gODI7CiticmVhazsKK2Nhc2UgMzU6cmV0dXJuIDgy
OworYnJlYWs7CitjYXNlIDM2OnJldHVybiA4MzsKK2JyZWFrOworY2FzZSAzNzpyZXR1cm4gODQ7
CiticmVhazsKK2Nhc2UgMzg6cmV0dXJuIDgxOworYnJlYWs7CitjYXNlIDM5OnJldHVybiA3NTsK
K2JyZWFrOworY2FzZSA0MDpyZXR1cm4gNzc7CiticmVhazsKK2Nhc2UgNDE6cmV0dXJuIDcyOwor
YnJlYWs7CitjYXNlIDQyOnl5Xy55eXRleHQgPSB5eV8ueXl0ZXh0LnJlcGxhY2UoL1xcKFtcXFxd
XSkvZywnJDEnKTsgcmV0dXJuIDcyOworYnJlYWs7CitjYXNlIDQzOnJldHVybiAnSU5WQUxJRCc7
CiticmVhazsKK2Nhc2UgNDQ6cmV0dXJuIDU7CiticmVhazsKK30KK307CitsZXhlci5ydWxlcyA9
IFsvXig/OlteXHgwMF0qPyg/PShce1x7KSkpLywvXig/OlteXHgwMF0rKS8sL14oPzpbXlx4MDBd
ezIsfT8oPz0oXHtce3xcXFx7XHt8XFxcXFx7XHt8JCkpKS8sL14oPzpce1x7XHtceyg/PVteXC9d
KSkvLC9eKD86XHtce1x7XHtcL1teXHMhIiMlLSxcLlwvOy0+QFxbLVxeYFx7LX5dKyg/PVs9fVxz
XC8uXSlcfVx9XH1cfSkvLC9eKD86W15ceDAwXSo/KD89KFx7XHtce1x7KSkpLywvXig/Oltcc1xT
XSo/LS0ofik/XH1cfSkvLC9eKD86XCgpLywvXig/OlwpKS8sL14oPzpce1x7XHtceykvLC9eKD86
XH1cfVx9XH0pLywvXig/Olx7XHsofik/PikvLC9eKD86XHtceyh+KT8jPikvLC9eKD86XHtceyh+
KT8jXCo/KS8sL14oPzpce1x7KH4pP1wvKS8sL14oPzpce1x7KH4pP1xeXHMqKH4pP1x9XH0pLywv
Xig/Olx7XHsofik/XHMqZWxzZVxzKih+KT9cfVx9KS8sL14oPzpce1x7KH4pP1xeKS8sL14oPzpc
e1x7KH4pP1xzKmVsc2VcYikvLC9eKD86XHtceyh+KT9ceykvLC9eKD86XHtceyh+KT8mKS8sL14o
Pzpce1x7KH4pPyEtLSkvLC9eKD86XHtceyh+KT8hW1xzXFNdKj9cfVx9KS8sL14oPzpce1x7KH4p
P1wqPykvLC9eKD86PSkvLC9eKD86XC5cLikvLC9eKD86XC4oPz0oWz1+fVxzXC8uKXxdKSkpLywv
Xig/OltcLy5dKS8sL14oPzpccyspLywvXig/Olx9KH4pP1x9XH0pLywvXig/Oih+KT9cfVx9KS8s
L14oPzoiKFxcWyJdfFteIl0pKiIpLywvXig/OicoXFxbJ118W14nXSkqJykvLC9eKD86QCkvLC9e
KD86dHJ1ZSg/PShbfn1ccyldKSkpLywvXig/OmZhbHNlKD89KFt+fVxzKV0pKSkvLC9eKD86dW5k
ZWZpbmVkKD89KFt+fVxzKV0pKSkvLC9eKD86bnVsbCg/PShbfn1ccyldKSkpLywvXig/Oi0/WzAt
OV0rKD86XC5bMC05XSspPyg/PShbfn1ccyldKSkpLywvXig/OmFzXHMrXHwpLywvXig/Olx8KS8s
L14oPzooW15ccyEiIyUtLFwuXC87LT5AXFstXF5gXHstfl0rKD89KFs9fn1cc1wvLil8XSkpKSkv
LC9eKD86XFsoXFxcXXxbXlxdXSkqXF0pLywvXig/Oi4pLywvXig/OiQpL107CitsZXhlci5jb25k
aXRpb25zID0geyJtdSI6eyJydWxlcyI6WzcsOCw5LDEwLDExLDEyLDEzLDE0LDE1LDE2LDE3LDE4
LDE5LDIwLDIxLDIyLDIzLDI0LDI1LDI2LDI3LDI4LDI5LDMwLDMxLDMyLDMzLDM0LDM1LDM2LDM3
LDM4LDM5LDQwLDQxLDQyLDQzLDQ0XSwiaW5jbHVzaXZlIjpmYWxzZX0sImVtdSI6eyJydWxlcyI6
WzJdLCJpbmNsdXNpdmUiOmZhbHNlfSwiY29tIjp7InJ1bGVzIjpbNl0sImluY2x1c2l2ZSI6ZmFs
c2V9LCJyYXciOnsicnVsZXMiOlszLDQsNV0sImluY2x1c2l2ZSI6ZmFsc2V9LCJJTklUSUFMIjp7
InJ1bGVzIjpbMCwxLDQ0XSwiaW5jbHVzaXZlIjp0cnVlfX07CityZXR1cm4gbGV4ZXI7fSkoKQor
cGFyc2VyLmxleGVyID0gbGV4ZXI7CitmdW5jdGlvbiBQYXJzZXIgKCkgeyB0aGlzLnl5ID0ge307
IH1QYXJzZXIucHJvdG90eXBlID0gcGFyc2VyO3BhcnNlci5QYXJzZXIgPSBQYXJzZXI7CityZXR1
cm4gbmV3IFBhcnNlcjsKK30pKCk7ZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKK2V4cG9ydHNb
J2RlZmF1bHQnXSA9IGhhbmRsZWJhcnM7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkv
bm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvbGliL2hhbmRsZWJhcnMvY29tcGlsZXIvcHJpbnRlci5q
cyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9saWIvaGFuZGxl
YmFycy9jb21waWxlci9wcmludGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZhZDQzYmFlYzI2ZTNmNTVmZmMw
MTgzNmExY2YwYjc1OWI3NWZhZjAKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVl
cnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvbGliL2hhbmRsZWJhcnMvY29tcGlsZXIvcHJpbnRl
ci5qcwpAQCAtMCwwICsxLDE3MSBAQAorLyogZXNsaW50LWRpc2FibGUgbmV3LWNhcCAqLworaW1w
b3J0IFZpc2l0b3IgZnJvbSAnLi92aXNpdG9yJzsKKworZXhwb3J0IGZ1bmN0aW9uIHByaW50KGFz
dCkgeworICByZXR1cm4gbmV3IFByaW50VmlzaXRvcigpLmFjY2VwdChhc3QpOworfQorCitleHBv
cnQgZnVuY3Rpb24gUHJpbnRWaXNpdG9yKCkgeworICB0aGlzLnBhZGRpbmcgPSAwOworfQorCitQ
cmludFZpc2l0b3IucHJvdG90eXBlID0gbmV3IFZpc2l0b3IoKTsKKworUHJpbnRWaXNpdG9yLnBy
b3RvdHlwZS5wYWQgPSBmdW5jdGlvbihzdHJpbmcpIHsKKyAgbGV0IG91dCA9ICcnOworCisgIGZv
ciAobGV0IGkgPSAwLCBsID0gdGhpcy5wYWRkaW5nOyBpIDwgbDsgaSsrKSB7CisgICAgb3V0ICs9
ICcgICc7CisgIH0KKworICBvdXQgKz0gc3RyaW5nICsgJ1xuJzsKKyAgcmV0dXJuIG91dDsKK307
CisKK1ByaW50VmlzaXRvci5wcm90b3R5cGUuUHJvZ3JhbSA9IGZ1bmN0aW9uKHByb2dyYW0pIHsK
KyAgbGV0IG91dCA9ICcnLAorICAgICAgYm9keSA9IHByb2dyYW0uYm9keSwKKyAgICAgIGksIGw7
CisKKyAgaWYgKHByb2dyYW0uYmxvY2tQYXJhbXMpIHsKKyAgICBsZXQgYmxvY2tQYXJhbXMgPSAn
QkxPQ0sgUEFSQU1TOiBbJzsKKyAgICBmb3IgKGkgPSAwLCBsID0gcHJvZ3JhbS5ibG9ja1BhcmFt
cy5sZW5ndGg7IGkgPCBsOyBpKyspIHsKKyAgICAgICBibG9ja1BhcmFtcyArPSAnICcgKyBwcm9n
cmFtLmJsb2NrUGFyYW1zW2ldOworICAgIH0KKyAgICBibG9ja1BhcmFtcyArPSAnIF0nOworICAg
IG91dCArPSB0aGlzLnBhZChibG9ja1BhcmFtcyk7CisgIH0KKworICBmb3IgKGkgPSAwLCBsID0g
Ym9keS5sZW5ndGg7IGkgPCBsOyBpKyspIHsKKyAgICBvdXQgKz0gdGhpcy5hY2NlcHQoYm9keVtp
XSk7CisgIH0KKworICB0aGlzLnBhZGRpbmctLTsKKworICByZXR1cm4gb3V0OworfTsKKworUHJp
bnRWaXNpdG9yLnByb3RvdHlwZS5NdXN0YWNoZVN0YXRlbWVudCA9IGZ1bmN0aW9uKG11c3RhY2hl
KSB7CisgIHJldHVybiB0aGlzLnBhZCgne3sgJyArIHRoaXMuU3ViRXhwcmVzc2lvbihtdXN0YWNo
ZSkgKyAnIH19Jyk7Cit9OworUHJpbnRWaXNpdG9yLnByb3RvdHlwZS5EZWNvcmF0b3IgPSBmdW5j
dGlvbihtdXN0YWNoZSkgeworICByZXR1cm4gdGhpcy5wYWQoJ3t7IERJUkVDVElWRSAnICsgdGhp
cy5TdWJFeHByZXNzaW9uKG11c3RhY2hlKSArICcgfX0nKTsKK307CisKK1ByaW50VmlzaXRvci5w
cm90b3R5cGUuQmxvY2tTdGF0ZW1lbnQgPQorUHJpbnRWaXNpdG9yLnByb3RvdHlwZS5EZWNvcmF0
b3JCbG9jayA9IGZ1bmN0aW9uKGJsb2NrKSB7CisgIGxldCBvdXQgPSAnJzsKKworICBvdXQgKz0g
dGhpcy5wYWQoKGJsb2NrLnR5cGUgPT09ICdEZWNvcmF0b3JCbG9jaycgPyAnRElSRUNUSVZFICcg
OiAnJykgKyAnQkxPQ0s6Jyk7CisgIHRoaXMucGFkZGluZysrOworICBvdXQgKz0gdGhpcy5wYWQo
dGhpcy5TdWJFeHByZXNzaW9uKGJsb2NrKSk7CisgIGlmIChibG9jay5wcm9ncmFtKSB7CisgICAg
b3V0ICs9IHRoaXMucGFkKCdQUk9HUkFNOicpOworICAgIHRoaXMucGFkZGluZysrOworICAgIG91
dCArPSB0aGlzLmFjY2VwdChibG9jay5wcm9ncmFtKTsKKyAgICB0aGlzLnBhZGRpbmctLTsKKyAg
fQorICBpZiAoYmxvY2suaW52ZXJzZSkgeworICAgIGlmIChibG9jay5wcm9ncmFtKSB7IHRoaXMu
cGFkZGluZysrOyB9CisgICAgb3V0ICs9IHRoaXMucGFkKCd7e159fScpOworICAgIHRoaXMucGFk
ZGluZysrOworICAgIG91dCArPSB0aGlzLmFjY2VwdChibG9jay5pbnZlcnNlKTsKKyAgICB0aGlz
LnBhZGRpbmctLTsKKyAgICBpZiAoYmxvY2sucHJvZ3JhbSkgeyB0aGlzLnBhZGRpbmctLTsgfQor
ICB9CisgIHRoaXMucGFkZGluZy0tOworCisgIHJldHVybiBvdXQ7Cit9OworCitQcmludFZpc2l0
b3IucHJvdG90eXBlLlBhcnRpYWxTdGF0ZW1lbnQgPSBmdW5jdGlvbihwYXJ0aWFsKSB7CisgIGxl
dCBjb250ZW50ID0gJ1BBUlRJQUw6JyArIHBhcnRpYWwubmFtZS5vcmlnaW5hbDsKKyAgaWYgKHBh
cnRpYWwucGFyYW1zWzBdKSB7CisgICAgY29udGVudCArPSAnICcgKyB0aGlzLmFjY2VwdChwYXJ0
aWFsLnBhcmFtc1swXSk7CisgIH0KKyAgaWYgKHBhcnRpYWwuaGFzaCkgeworICAgIGNvbnRlbnQg
Kz0gJyAnICsgdGhpcy5hY2NlcHQocGFydGlhbC5oYXNoKTsKKyAgfQorICByZXR1cm4gdGhpcy5w
YWQoJ3t7PiAnICsgY29udGVudCArICcgfX0nKTsKK307CitQcmludFZpc2l0b3IucHJvdG90eXBl
LlBhcnRpYWxCbG9ja1N0YXRlbWVudCA9IGZ1bmN0aW9uKHBhcnRpYWwpIHsKKyAgbGV0IGNvbnRl
bnQgPSAnUEFSVElBTCBCTE9DSzonICsgcGFydGlhbC5uYW1lLm9yaWdpbmFsOworICBpZiAocGFy
dGlhbC5wYXJhbXNbMF0pIHsKKyAgICBjb250ZW50ICs9ICcgJyArIHRoaXMuYWNjZXB0KHBhcnRp
YWwucGFyYW1zWzBdKTsKKyAgfQorICBpZiAocGFydGlhbC5oYXNoKSB7CisgICAgY29udGVudCAr
PSAnICcgKyB0aGlzLmFjY2VwdChwYXJ0aWFsLmhhc2gpOworICB9CisKKyAgY29udGVudCArPSAn
ICcgKyB0aGlzLnBhZCgnUFJPR1JBTTonKTsKKyAgdGhpcy5wYWRkaW5nKys7CisgIGNvbnRlbnQg
Kz0gdGhpcy5hY2NlcHQocGFydGlhbC5wcm9ncmFtKTsKKyAgdGhpcy5wYWRkaW5nLS07CisKKyAg
cmV0dXJuIHRoaXMucGFkKCd7ez4gJyArIGNvbnRlbnQgKyAnIH19Jyk7Cit9OworCitQcmludFZp
c2l0b3IucHJvdG90eXBlLkNvbnRlbnRTdGF0ZW1lbnQgPSBmdW5jdGlvbihjb250ZW50KSB7Cisg
IHJldHVybiB0aGlzLnBhZCgiQ09OVEVOVFsgJyIgKyBjb250ZW50LnZhbHVlICsgIicgXSIpOwor
fTsKKworUHJpbnRWaXNpdG9yLnByb3RvdHlwZS5Db21tZW50U3RhdGVtZW50ID0gZnVuY3Rpb24o
Y29tbWVudCkgeworICByZXR1cm4gdGhpcy5wYWQoInt7ISAnIiArIGNvbW1lbnQudmFsdWUgKyAi
JyB9fSIpOworfTsKKworUHJpbnRWaXNpdG9yLnByb3RvdHlwZS5TdWJFeHByZXNzaW9uID0gZnVu
Y3Rpb24oc2V4cHIpIHsKKyAgbGV0IHBhcmFtcyA9IHNleHByLnBhcmFtcywKKyAgICAgIHBhcmFt
U3RyaW5ncyA9IFtdLAorICAgICAgaGFzaDsKKworICBmb3IgKGxldCBpID0gMCwgbCA9IHBhcmFt
cy5sZW5ndGg7IGkgPCBsOyBpKyspIHsKKyAgICBwYXJhbVN0cmluZ3MucHVzaCh0aGlzLmFjY2Vw
dChwYXJhbXNbaV0pKTsKKyAgfQorCisgIHBhcmFtcyA9ICdbJyArIHBhcmFtU3RyaW5ncy5qb2lu
KCcsICcpICsgJ10nOworCisgIGhhc2ggPSBzZXhwci5oYXNoID8gJyAnICsgdGhpcy5hY2NlcHQo
c2V4cHIuaGFzaCkgOiAnJzsKKworICByZXR1cm4gdGhpcy5hY2NlcHQoc2V4cHIucGF0aCkgKyAn
ICcgKyBwYXJhbXMgKyBoYXNoOworfTsKKworUHJpbnRWaXNpdG9yLnByb3RvdHlwZS5QYXRoRXhw
cmVzc2lvbiA9IGZ1bmN0aW9uKGlkKSB7CisgIGxldCBwYXRoID0gaWQucGFydHMuam9pbignLycp
OworICByZXR1cm4gKGlkLmRhdGEgPyAnQCcgOiAnJykgKyAnUEFUSDonICsgcGF0aDsKK307CisK
KworUHJpbnRWaXNpdG9yLnByb3RvdHlwZS5TdHJpbmdMaXRlcmFsID0gZnVuY3Rpb24oc3RyaW5n
KSB7CisgIHJldHVybiAnIicgKyBzdHJpbmcudmFsdWUgKyAnIic7Cit9OworCitQcmludFZpc2l0
b3IucHJvdG90eXBlLk51bWJlckxpdGVyYWwgPSBmdW5jdGlvbihudW1iZXIpIHsKKyAgcmV0dXJu
ICdOVU1CRVJ7JyArIG51bWJlci52YWx1ZSArICd9JzsKK307CisKK1ByaW50VmlzaXRvci5wcm90
b3R5cGUuQm9vbGVhbkxpdGVyYWwgPSBmdW5jdGlvbihib29sKSB7CisgIHJldHVybiAnQk9PTEVB
TnsnICsgYm9vbC52YWx1ZSArICd9JzsKK307CisKK1ByaW50VmlzaXRvci5wcm90b3R5cGUuVW5k
ZWZpbmVkTGl0ZXJhbCA9IGZ1bmN0aW9uKCkgeworICByZXR1cm4gJ1VOREVGSU5FRCc7Cit9Owor
CitQcmludFZpc2l0b3IucHJvdG90eXBlLk51bGxMaXRlcmFsID0gZnVuY3Rpb24oKSB7CisgIHJl
dHVybiAnTlVMTCc7Cit9OworCitQcmludFZpc2l0b3IucHJvdG90eXBlLkhhc2ggPSBmdW5jdGlv
bihoYXNoKSB7CisgIGxldCBwYWlycyA9IGhhc2gucGFpcnMsCisgICAgICBqb2luZWRQYWlycyA9
IFtdOworCisgIGZvciAobGV0IGkgPSAwLCBsID0gcGFpcnMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7
CisgICAgam9pbmVkUGFpcnMucHVzaCh0aGlzLmFjY2VwdChwYWlyc1tpXSkpOworICB9CisKKyAg
cmV0dXJuICdIQVNIeycgKyBqb2luZWRQYWlycy5qb2luKCcsICcpICsgJ30nOworfTsKK1ByaW50
VmlzaXRvci5wcm90b3R5cGUuSGFzaFBhaXIgPSBmdW5jdGlvbihwYWlyKSB7CisgIHJldHVybiBw
YWlyLmtleSArICc9JyArIHRoaXMuYWNjZXB0KHBhaXIudmFsdWUpOworfTsKKy8qIGVzbGludC1l
bmFibGUgbmV3LWNhcCAqLwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9k
dWxlcy9oYW5kbGViYXJzL2xpYi9oYW5kbGViYXJzL2NvbXBpbGVyL3Zpc2l0b3IuanMgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvbGliL2hhbmRsZWJhcnMvY29t
cGlsZXIvdmlzaXRvci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYzUwNGQxYjIzYTkwN2EzNmY4YmVjZWRmMjFk
MmIyN2MzZTBhNzA5Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVf
bW9kdWxlcy9oYW5kbGViYXJzL2xpYi9oYW5kbGViYXJzL2NvbXBpbGVyL3Zpc2l0b3IuanMKQEAg
LTAsMCArMSwxMjkgQEAKK2ltcG9ydCBFeGNlcHRpb24gZnJvbSAnLi4vZXhjZXB0aW9uJzsKKwor
ZnVuY3Rpb24gVmlzaXRvcigpIHsKKyAgdGhpcy5wYXJlbnRzID0gW107Cit9CisKK1Zpc2l0b3Iu
cHJvdG90eXBlID0geworICBjb25zdHJ1Y3RvcjogVmlzaXRvciwKKyAgbXV0YXRpbmc6IGZhbHNl
LAorCisgIC8vIFZpc2l0cyBhIGdpdmVuIHZhbHVlLiBJZiBtdXRhdGluZywgd2lsbCByZXBsYWNl
IHRoZSB2YWx1ZSBpZiBuZWNlc3NhcnkuCisgIGFjY2VwdEtleTogZnVuY3Rpb24obm9kZSwgbmFt
ZSkgeworICAgIGxldCB2YWx1ZSA9IHRoaXMuYWNjZXB0KG5vZGVbbmFtZV0pOworICAgIGlmICh0
aGlzLm11dGF0aW5nKSB7CisgICAgICAvLyBIYWNreSBzYW5pdHkgY2hlY2s6IFRoaXMgbWF5IGhh
dmUgYSBmZXcgZmFsc2UgcG9zaXRpdmVzIGZvciB0eXBlIGZvciB0aGUgaGVscGVyCisgICAgICAv
LyBtZXRob2RzIGJ1dCB3aWxsIGdlbmVyYWxseSBkbyB0aGUgcmlnaHQgdGhpbmcgd2l0aG91dCBh
IGxvdCBvZiBvdmVyaGVhZC4KKyAgICAgIGlmICh2YWx1ZSAmJiAhVmlzaXRvci5wcm90b3R5cGVb
dmFsdWUudHlwZV0pIHsKKyAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignVW5leHBlY3RlZCBu
b2RlIHR5cGUgIicgKyB2YWx1ZS50eXBlICsgJyIgZm91bmQgd2hlbiBhY2NlcHRpbmcgJyArIG5h
bWUgKyAnIG9uICcgKyBub2RlLnR5cGUpOworICAgICAgfQorICAgICAgbm9kZVtuYW1lXSA9IHZh
bHVlOworICAgIH0KKyAgfSwKKworICAvLyBQZXJmb3JtcyBhbiBhY2NlcHQgb3BlcmF0aW9uIHdp
dGggYWRkZWQgc2FuaXR5IGNoZWNrIHRvIGVuc3VyZQorICAvLyByZXF1aXJlZCBrZXlzIGFyZSBu
b3QgcmVtb3ZlZC4KKyAgYWNjZXB0UmVxdWlyZWQ6IGZ1bmN0aW9uKG5vZGUsIG5hbWUpIHsKKyAg
ICB0aGlzLmFjY2VwdEtleShub2RlLCBuYW1lKTsKKworICAgIGlmICghbm9kZVtuYW1lXSkgewor
ICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbihub2RlLnR5cGUgKyAnIHJlcXVpcmVzICcgKyBuYW1l
KTsKKyAgICB9CisgIH0sCisKKyAgLy8gVHJhdmVyc2VzIGEgZ2l2ZW4gYXJyYXkuIElmIG11dGF0
aW5nLCBlbXB0eSByZXNwbnNlcyB3aWxsIGJlIHJlbW92ZWQKKyAgLy8gZm9yIGNoaWxkIGVsZW1l
bnRzLgorICBhY2NlcHRBcnJheTogZnVuY3Rpb24oYXJyYXkpIHsKKyAgICBmb3IgKGxldCBpID0g
MCwgbCA9IGFycmF5Lmxlbmd0aDsgaSA8IGw7IGkrKykgeworICAgICAgdGhpcy5hY2NlcHRLZXko
YXJyYXksIGkpOworCisgICAgICBpZiAoIWFycmF5W2ldKSB7CisgICAgICAgIGFycmF5LnNwbGlj
ZShpLCAxKTsKKyAgICAgICAgaS0tOworICAgICAgICBsLS07CisgICAgICB9CisgICAgfQorICB9
LAorCisgIGFjY2VwdDogZnVuY3Rpb24ob2JqZWN0KSB7CisgICAgaWYgKCFvYmplY3QpIHsKKyAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogU2FuaXR5
IGNvZGUgKi8KKyAgICBpZiAoIXRoaXNbb2JqZWN0LnR5cGVdKSB7CisgICAgICB0aHJvdyBuZXcg
RXhjZXB0aW9uKCdVbmtub3duIHR5cGU6ICcgKyBvYmplY3QudHlwZSwgb2JqZWN0KTsKKyAgICB9
CisKKyAgICBpZiAodGhpcy5jdXJyZW50KSB7CisgICAgICB0aGlzLnBhcmVudHMudW5zaGlmdCh0
aGlzLmN1cnJlbnQpOworICAgIH0KKyAgICB0aGlzLmN1cnJlbnQgPSBvYmplY3Q7CisKKyAgICBs
ZXQgcmV0ID0gdGhpc1tvYmplY3QudHlwZV0ob2JqZWN0KTsKKworICAgIHRoaXMuY3VycmVudCA9
IHRoaXMucGFyZW50cy5zaGlmdCgpOworCisgICAgaWYgKCF0aGlzLm11dGF0aW5nIHx8IHJldCkg
eworICAgICAgcmV0dXJuIHJldDsKKyAgICB9IGVsc2UgaWYgKHJldCAhPT0gZmFsc2UpIHsKKyAg
ICAgIHJldHVybiBvYmplY3Q7CisgICAgfQorICB9LAorCisgIFByb2dyYW06IGZ1bmN0aW9uKHBy
b2dyYW0pIHsKKyAgICB0aGlzLmFjY2VwdEFycmF5KHByb2dyYW0uYm9keSk7CisgIH0sCisKKyAg
TXVzdGFjaGVTdGF0ZW1lbnQ6IHZpc2l0U3ViRXhwcmVzc2lvbiwKKyAgRGVjb3JhdG9yOiB2aXNp
dFN1YkV4cHJlc3Npb24sCisKKyAgQmxvY2tTdGF0ZW1lbnQ6IHZpc2l0QmxvY2ssCisgIERlY29y
YXRvckJsb2NrOiB2aXNpdEJsb2NrLAorCisgIFBhcnRpYWxTdGF0ZW1lbnQ6IHZpc2l0UGFydGlh
bCwKKyAgUGFydGlhbEJsb2NrU3RhdGVtZW50OiBmdW5jdGlvbihwYXJ0aWFsKSB7CisgICAgdmlz
aXRQYXJ0aWFsLmNhbGwodGhpcywgcGFydGlhbCk7CisKKyAgICB0aGlzLmFjY2VwdEtleShwYXJ0
aWFsLCAncHJvZ3JhbScpOworICB9LAorCisgIENvbnRlbnRTdGF0ZW1lbnQ6IGZ1bmN0aW9uKC8q
IGNvbnRlbnQgKi8pIHt9LAorICBDb21tZW50U3RhdGVtZW50OiBmdW5jdGlvbigvKiBjb21tZW50
ICovKSB7fSwKKworICBTdWJFeHByZXNzaW9uOiB2aXNpdFN1YkV4cHJlc3Npb24sCisKKyAgUGF0
aEV4cHJlc3Npb246IGZ1bmN0aW9uKC8qIHBhdGggKi8pIHt9LAorCisgIFN0cmluZ0xpdGVyYWw6
IGZ1bmN0aW9uKC8qIHN0cmluZyAqLykge30sCisgIE51bWJlckxpdGVyYWw6IGZ1bmN0aW9uKC8q
IG51bWJlciAqLykge30sCisgIEJvb2xlYW5MaXRlcmFsOiBmdW5jdGlvbigvKiBib29sICovKSB7
fSwKKyAgVW5kZWZpbmVkTGl0ZXJhbDogZnVuY3Rpb24oLyogbGl0ZXJhbCAqLykge30sCisgIE51
bGxMaXRlcmFsOiBmdW5jdGlvbigvKiBsaXRlcmFsICovKSB7fSwKKworICBIYXNoOiBmdW5jdGlv
bihoYXNoKSB7CisgICAgdGhpcy5hY2NlcHRBcnJheShoYXNoLnBhaXJzKTsKKyAgfSwKKyAgSGFz
aFBhaXI6IGZ1bmN0aW9uKHBhaXIpIHsKKyAgICB0aGlzLmFjY2VwdFJlcXVpcmVkKHBhaXIsICd2
YWx1ZScpOworICB9Cit9OworCitmdW5jdGlvbiB2aXNpdFN1YkV4cHJlc3Npb24obXVzdGFjaGUp
IHsKKyAgdGhpcy5hY2NlcHRSZXF1aXJlZChtdXN0YWNoZSwgJ3BhdGgnKTsKKyAgdGhpcy5hY2Nl
cHRBcnJheShtdXN0YWNoZS5wYXJhbXMpOworICB0aGlzLmFjY2VwdEtleShtdXN0YWNoZSwgJ2hh
c2gnKTsKK30KK2Z1bmN0aW9uIHZpc2l0QmxvY2soYmxvY2spIHsKKyAgdmlzaXRTdWJFeHByZXNz
aW9uLmNhbGwodGhpcywgYmxvY2spOworCisgIHRoaXMuYWNjZXB0S2V5KGJsb2NrLCAncHJvZ3Jh
bScpOworICB0aGlzLmFjY2VwdEtleShibG9jaywgJ2ludmVyc2UnKTsKK30KK2Z1bmN0aW9uIHZp
c2l0UGFydGlhbChwYXJ0aWFsKSB7CisgIHRoaXMuYWNjZXB0UmVxdWlyZWQocGFydGlhbCwgJ25h
bWUnKTsKKyAgdGhpcy5hY2NlcHRBcnJheShwYXJ0aWFsLnBhcmFtcyk7CisgIHRoaXMuYWNjZXB0
S2V5KHBhcnRpYWwsICdoYXNoJyk7Cit9CisKK2V4cG9ydCBkZWZhdWx0IFZpc2l0b3I7CmRpZmYg
LS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvbGliL2hh
bmRsZWJhcnMvY29tcGlsZXIvd2hpdGVzcGFjZS1jb250cm9sLmpzIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1
ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2xpYi9oYW5kbGViYXJzL2NvbXBpbGVyL3doaXRl
c3BhY2UtY29udHJvbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMTE0ODNjOTE0OTk2NmM0MDhmZGNlYzU5ZWM3
ZDE0Zjc2NDIxNzMzCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVf
bW9kdWxlcy9oYW5kbGViYXJzL2xpYi9oYW5kbGViYXJzL2NvbXBpbGVyL3doaXRlc3BhY2UtY29u
dHJvbC5qcwpAQCAtMCwwICsxLDIxNiBAQAoraW1wb3J0IFZpc2l0b3IgZnJvbSAnLi92aXNpdG9y
JzsKKworZnVuY3Rpb24gV2hpdGVzcGFjZUNvbnRyb2wob3B0aW9ucyA9IHt9KSB7CisgIHRoaXMu
b3B0aW9ucyA9IG9wdGlvbnM7Cit9CitXaGl0ZXNwYWNlQ29udHJvbC5wcm90b3R5cGUgPSBuZXcg
VmlzaXRvcigpOworCitXaGl0ZXNwYWNlQ29udHJvbC5wcm90b3R5cGUuUHJvZ3JhbSA9IGZ1bmN0
aW9uKHByb2dyYW0pIHsKKyAgY29uc3QgZG9TdGFuZGFsb25lID0gIXRoaXMub3B0aW9ucy5pZ25v
cmVTdGFuZGFsb25lOworCisgIGxldCBpc1Jvb3QgPSAhdGhpcy5pc1Jvb3RTZWVuOworICB0aGlz
LmlzUm9vdFNlZW4gPSB0cnVlOworCisgIGxldCBib2R5ID0gcHJvZ3JhbS5ib2R5OworICBmb3Ig
KGxldCBpID0gMCwgbCA9IGJvZHkubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CisgICAgbGV0IGN1cnJl
bnQgPSBib2R5W2ldLAorICAgICAgICBzdHJpcCA9IHRoaXMuYWNjZXB0KGN1cnJlbnQpOworCisg
ICAgaWYgKCFzdHJpcCkgeworICAgICAgY29udGludWU7CisgICAgfQorCisgICAgbGV0IF9pc1By
ZXZXaGl0ZXNwYWNlID0gaXNQcmV2V2hpdGVzcGFjZShib2R5LCBpLCBpc1Jvb3QpLAorICAgICAg
ICBfaXNOZXh0V2hpdGVzcGFjZSA9IGlzTmV4dFdoaXRlc3BhY2UoYm9keSwgaSwgaXNSb290KSwK
KworICAgICAgICBvcGVuU3RhbmRhbG9uZSA9IHN0cmlwLm9wZW5TdGFuZGFsb25lICYmIF9pc1By
ZXZXaGl0ZXNwYWNlLAorICAgICAgICBjbG9zZVN0YW5kYWxvbmUgPSBzdHJpcC5jbG9zZVN0YW5k
YWxvbmUgJiYgX2lzTmV4dFdoaXRlc3BhY2UsCisgICAgICAgIGlubGluZVN0YW5kYWxvbmUgPSBz
dHJpcC5pbmxpbmVTdGFuZGFsb25lICYmIF9pc1ByZXZXaGl0ZXNwYWNlICYmIF9pc05leHRXaGl0
ZXNwYWNlOworCisgICAgaWYgKHN0cmlwLmNsb3NlKSB7CisgICAgICBvbWl0UmlnaHQoYm9keSwg
aSwgdHJ1ZSk7CisgICAgfQorICAgIGlmIChzdHJpcC5vcGVuKSB7CisgICAgICBvbWl0TGVmdChi
b2R5LCBpLCB0cnVlKTsKKyAgICB9CisKKyAgICBpZiAoZG9TdGFuZGFsb25lICYmIGlubGluZVN0
YW5kYWxvbmUpIHsKKyAgICAgIG9taXRSaWdodChib2R5LCBpKTsKKworICAgICAgaWYgKG9taXRM
ZWZ0KGJvZHksIGkpKSB7CisgICAgICAgIC8vIElmIHdlIGFyZSBvbiBhIHN0YW5kYWxvbmUgbm9k
ZSwgc2F2ZSB0aGUgaW5kZW50IGluZm8gZm9yIHBhcnRpYWxzCisgICAgICAgIGlmIChjdXJyZW50
LnR5cGUgPT09ICdQYXJ0aWFsU3RhdGVtZW50JykgeworICAgICAgICAgIC8vIFB1bGwgb3V0IHRo
ZSB3aGl0ZXNwYWNlIGZyb20gdGhlIGZpbmFsIGxpbmUKKyAgICAgICAgICBjdXJyZW50LmluZGVu
dCA9ICgvKFsgXHRdKyQpLykuZXhlYyhib2R5W2kgLSAxXS5vcmlnaW5hbClbMV07CisgICAgICAg
IH0KKyAgICAgIH0KKyAgICB9CisgICAgaWYgKGRvU3RhbmRhbG9uZSAmJiBvcGVuU3RhbmRhbG9u
ZSkgeworICAgICAgb21pdFJpZ2h0KChjdXJyZW50LnByb2dyYW0gfHwgY3VycmVudC5pbnZlcnNl
KS5ib2R5KTsKKworICAgICAgLy8gU3RyaXAgb3V0IHRoZSBwcmV2aW91cyBjb250ZW50IG5vZGUg
aWYgaXQncyB3aGl0ZXNwYWNlIG9ubHkKKyAgICAgIG9taXRMZWZ0KGJvZHksIGkpOworICAgIH0K
KyAgICBpZiAoZG9TdGFuZGFsb25lICYmIGNsb3NlU3RhbmRhbG9uZSkgeworICAgICAgLy8gQWx3
YXlzIHN0cmlwIHRoZSBuZXh0IG5vZGUKKyAgICAgIG9taXRSaWdodChib2R5LCBpKTsKKworICAg
ICAgb21pdExlZnQoKGN1cnJlbnQuaW52ZXJzZSB8fCBjdXJyZW50LnByb2dyYW0pLmJvZHkpOwor
ICAgIH0KKyAgfQorCisgIHJldHVybiBwcm9ncmFtOworfTsKKworV2hpdGVzcGFjZUNvbnRyb2wu
cHJvdG90eXBlLkJsb2NrU3RhdGVtZW50ID0KK1doaXRlc3BhY2VDb250cm9sLnByb3RvdHlwZS5E
ZWNvcmF0b3JCbG9jayA9CitXaGl0ZXNwYWNlQ29udHJvbC5wcm90b3R5cGUuUGFydGlhbEJsb2Nr
U3RhdGVtZW50ID0gZnVuY3Rpb24oYmxvY2spIHsKKyAgdGhpcy5hY2NlcHQoYmxvY2sucHJvZ3Jh
bSk7CisgIHRoaXMuYWNjZXB0KGJsb2NrLmludmVyc2UpOworCisgIC8vIEZpbmQgdGhlIGludmVy
c2UgcHJvZ3JhbSB0aGF0IGlzIGludm9sZWQgd2l0aCB3aGl0ZXNwYWNlIHN0cmlwcGluZy4KKyAg
bGV0IHByb2dyYW0gPSBibG9jay5wcm9ncmFtIHx8IGJsb2NrLmludmVyc2UsCisgICAgICBpbnZl
cnNlID0gYmxvY2sucHJvZ3JhbSAmJiBibG9jay5pbnZlcnNlLAorICAgICAgZmlyc3RJbnZlcnNl
ID0gaW52ZXJzZSwKKyAgICAgIGxhc3RJbnZlcnNlID0gaW52ZXJzZTsKKworICBpZiAoaW52ZXJz
ZSAmJiBpbnZlcnNlLmNoYWluZWQpIHsKKyAgICBmaXJzdEludmVyc2UgPSBpbnZlcnNlLmJvZHlb
MF0ucHJvZ3JhbTsKKworICAgIC8vIFdhbGsgdGhlIGludmVyc2UgY2hhaW4gdG8gZmluZCB0aGUg
bGFzdCBpbnZlcnNlIHRoYXQgaXMgYWN0dWFsbHkgaW4gdGhlIGNoYWluLgorICAgIHdoaWxlIChs
YXN0SW52ZXJzZS5jaGFpbmVkKSB7CisgICAgICBsYXN0SW52ZXJzZSA9IGxhc3RJbnZlcnNlLmJv
ZHlbbGFzdEludmVyc2UuYm9keS5sZW5ndGggLSAxXS5wcm9ncmFtOworICAgIH0KKyAgfQorCisg
IGxldCBzdHJpcCA9IHsKKyAgICBvcGVuOiBibG9jay5vcGVuU3RyaXAub3BlbiwKKyAgICBjbG9z
ZTogYmxvY2suY2xvc2VTdHJpcC5jbG9zZSwKKworICAgIC8vIERldGVybWluZSB0aGUgc3RhbmRh
bG9uZSBjYW5kaWFjeS4gQmFzaWNhbGx5IGZsYWcgb3VyIGNvbnRlbnQgYXMgYmVpbmcgcG9zc2li
bHkgc3RhbmRhbG9uZQorICAgIC8vIHNvIG91ciBwYXJlbnQgY2FuIGRldGVybWluZSBpZiB3ZSBh
Y3R1YWxseSBhcmUgc3RhbmRhbG9uZQorICAgIG9wZW5TdGFuZGFsb25lOiBpc05leHRXaGl0ZXNw
YWNlKHByb2dyYW0uYm9keSksCisgICAgY2xvc2VTdGFuZGFsb25lOiBpc1ByZXZXaGl0ZXNwYWNl
KChmaXJzdEludmVyc2UgfHwgcHJvZ3JhbSkuYm9keSkKKyAgfTsKKworICBpZiAoYmxvY2sub3Bl
blN0cmlwLmNsb3NlKSB7CisgICAgb21pdFJpZ2h0KHByb2dyYW0uYm9keSwgbnVsbCwgdHJ1ZSk7
CisgIH0KKworICBpZiAoaW52ZXJzZSkgeworICAgIGxldCBpbnZlcnNlU3RyaXAgPSBibG9jay5p
bnZlcnNlU3RyaXA7CisKKyAgICBpZiAoaW52ZXJzZVN0cmlwLm9wZW4pIHsKKyAgICAgIG9taXRM
ZWZ0KHByb2dyYW0uYm9keSwgbnVsbCwgdHJ1ZSk7CisgICAgfQorCisgICAgaWYgKGludmVyc2VT
dHJpcC5jbG9zZSkgeworICAgICAgb21pdFJpZ2h0KGZpcnN0SW52ZXJzZS5ib2R5LCBudWxsLCB0
cnVlKTsKKyAgICB9CisgICAgaWYgKGJsb2NrLmNsb3NlU3RyaXAub3BlbikgeworICAgICAgb21p
dExlZnQobGFzdEludmVyc2UuYm9keSwgbnVsbCwgdHJ1ZSk7CisgICAgfQorCisgICAgLy8gRmlu
ZCBzdGFuZGFsb25lIGVsc2Ugc3RhdG1lbnRzCisgICAgaWYgKCF0aGlzLm9wdGlvbnMuaWdub3Jl
U3RhbmRhbG9uZQorICAgICAgICAmJiBpc1ByZXZXaGl0ZXNwYWNlKHByb2dyYW0uYm9keSkKKyAg
ICAgICAgJiYgaXNOZXh0V2hpdGVzcGFjZShmaXJzdEludmVyc2UuYm9keSkpIHsKKyAgICAgIG9t
aXRMZWZ0KHByb2dyYW0uYm9keSk7CisgICAgICBvbWl0UmlnaHQoZmlyc3RJbnZlcnNlLmJvZHkp
OworICAgIH0KKyAgfSBlbHNlIGlmIChibG9jay5jbG9zZVN0cmlwLm9wZW4pIHsKKyAgICBvbWl0
TGVmdChwcm9ncmFtLmJvZHksIG51bGwsIHRydWUpOworICB9CisKKyAgcmV0dXJuIHN0cmlwOwor
fTsKKworV2hpdGVzcGFjZUNvbnRyb2wucHJvdG90eXBlLkRlY29yYXRvciA9CitXaGl0ZXNwYWNl
Q29udHJvbC5wcm90b3R5cGUuTXVzdGFjaGVTdGF0ZW1lbnQgPSBmdW5jdGlvbihtdXN0YWNoZSkg
eworICByZXR1cm4gbXVzdGFjaGUuc3RyaXA7Cit9OworCitXaGl0ZXNwYWNlQ29udHJvbC5wcm90
b3R5cGUuUGFydGlhbFN0YXRlbWVudCA9CisgICAgV2hpdGVzcGFjZUNvbnRyb2wucHJvdG90eXBl
LkNvbW1lbnRTdGF0ZW1lbnQgPSBmdW5jdGlvbihub2RlKSB7CisgIC8qIGlzdGFuYnVsIGlnbm9y
ZSBuZXh0ICovCisgIGxldCBzdHJpcCA9IG5vZGUuc3RyaXAgfHwge307CisgIHJldHVybiB7Cisg
ICAgaW5saW5lU3RhbmRhbG9uZTogdHJ1ZSwKKyAgICBvcGVuOiBzdHJpcC5vcGVuLAorICAgIGNs
b3NlOiBzdHJpcC5jbG9zZQorICB9OworfTsKKworCitmdW5jdGlvbiBpc1ByZXZXaGl0ZXNwYWNl
KGJvZHksIGksIGlzUm9vdCkgeworICBpZiAoaSA9PT0gdW5kZWZpbmVkKSB7CisgICAgaSA9IGJv
ZHkubGVuZ3RoOworICB9CisKKyAgLy8gTm9kZXMgdGhhdCBlbmQgd2l0aCBuZXdsaW5lcyBhcmUg
Y29uc2lkZXJlZCB3aGl0ZXNwYWNlIChidXQgYXJlIHNwZWNpYWwKKyAgLy8gY2FzZWQgZm9yIHN0
cmlwIG9wZXJhdGlvbnMpCisgIGxldCBwcmV2ID0gYm9keVtpIC0gMV0sCisgICAgICBzaWJsaW5n
ID0gYm9keVtpIC0gMl07CisgIGlmICghcHJldikgeworICAgIHJldHVybiBpc1Jvb3Q7CisgIH0K
KworICBpZiAocHJldi50eXBlID09PSAnQ29udGVudFN0YXRlbWVudCcpIHsKKyAgICByZXR1cm4g
KHNpYmxpbmcgfHwgIWlzUm9vdCA/ICgvXHI/XG5ccyo/JC8pIDogKC8oXnxccj9cbilccyo/JC8p
KS50ZXN0KHByZXYub3JpZ2luYWwpOworICB9Cit9CitmdW5jdGlvbiBpc05leHRXaGl0ZXNwYWNl
KGJvZHksIGksIGlzUm9vdCkgeworICBpZiAoaSA9PT0gdW5kZWZpbmVkKSB7CisgICAgaSA9IC0x
OworICB9CisKKyAgbGV0IG5leHQgPSBib2R5W2kgKyAxXSwKKyAgICAgIHNpYmxpbmcgPSBib2R5
W2kgKyAyXTsKKyAgaWYgKCFuZXh0KSB7CisgICAgcmV0dXJuIGlzUm9vdDsKKyAgfQorCisgIGlm
IChuZXh0LnR5cGUgPT09ICdDb250ZW50U3RhdGVtZW50JykgeworICAgIHJldHVybiAoc2libGlu
ZyB8fCAhaXNSb290ID8gKC9eXHMqP1xyP1xuLykgOiAoL15ccyo/KFxyP1xufCQpLykpLnRlc3Qo
bmV4dC5vcmlnaW5hbCk7CisgIH0KK30KKworLy8gTWFya3MgdGhlIG5vZGUgdG8gdGhlIHJpZ2h0
IG9mIHRoZSBwb3NpdGlvbiBhcyBvbWl0dGVkLgorLy8gSS5lLiB7e2Zvb319JyAnIHdpbGwgbWFy
ayB0aGUgJyAnIG5vZGUgYXMgb21pdHRlZC4KKy8vCisvLyBJZiBpIGlzIHVuZGVmaW5lZCwgdGhl
biB0aGUgZmlyc3QgY2hpbGQgd2lsbCBiZSBtYXJrZWQgYXMgc3VjaC4KKy8vCisvLyBJZiBtdWxp
dHBsZSBpcyB0cnV0aHkgdGhlbiBhbGwgd2hpdGVzcGFjZSB3aWxsIGJlIHN0cmlwcGVkIG91dCB1
bnRpbCBub24td2hpdGVzcGFjZQorLy8gY29udGVudCBpcyBtZXQuCitmdW5jdGlvbiBvbWl0Umln
aHQoYm9keSwgaSwgbXVsdGlwbGUpIHsKKyAgbGV0IGN1cnJlbnQgPSBib2R5W2kgPT0gbnVsbCA/
IDAgOiBpICsgMV07CisgIGlmICghY3VycmVudCB8fCBjdXJyZW50LnR5cGUgIT09ICdDb250ZW50
U3RhdGVtZW50JyB8fCAoIW11bHRpcGxlICYmIGN1cnJlbnQucmlnaHRTdHJpcHBlZCkpIHsKKyAg
ICByZXR1cm47CisgIH0KKworICBsZXQgb3JpZ2luYWwgPSBjdXJyZW50LnZhbHVlOworICBjdXJy
ZW50LnZhbHVlID0gY3VycmVudC52YWx1ZS5yZXBsYWNlKG11bHRpcGxlID8gKC9eXHMrLykgOiAo
L15bIFx0XSpccj9cbj8vKSwgJycpOworICBjdXJyZW50LnJpZ2h0U3RyaXBwZWQgPSBjdXJyZW50
LnZhbHVlICE9PSBvcmlnaW5hbDsKK30KKworLy8gTWFya3MgdGhlIG5vZGUgdG8gdGhlIGxlZnQg
b2YgdGhlIHBvc2l0aW9uIGFzIG9taXR0ZWQuCisvLyBJLmUuICcgJ3t7Zm9vfX0gd2lsbCBtYXJr
IHRoZSAnICcgbm9kZSBhcyBvbWl0dGVkLgorLy8KKy8vIElmIGkgaXMgdW5kZWZpbmVkIHRoZW4g
dGhlIGxhc3QgY2hpbGQgd2lsbCBiZSBtYXJrZWQgYXMgc3VjaC4KKy8vCisvLyBJZiBtdWxpdHBs
ZSBpcyB0cnV0aHkgdGhlbiBhbGwgd2hpdGVzcGFjZSB3aWxsIGJlIHN0cmlwcGVkIG91dCB1bnRp
bCBub24td2hpdGVzcGFjZQorLy8gY29udGVudCBpcyBtZXQuCitmdW5jdGlvbiBvbWl0TGVmdChi
b2R5LCBpLCBtdWx0aXBsZSkgeworICBsZXQgY3VycmVudCA9IGJvZHlbaSA9PSBudWxsID8gYm9k
eS5sZW5ndGggLSAxIDogaSAtIDFdOworICBpZiAoIWN1cnJlbnQgfHwgY3VycmVudC50eXBlICE9
PSAnQ29udGVudFN0YXRlbWVudCcgfHwgKCFtdWx0aXBsZSAmJiBjdXJyZW50LmxlZnRTdHJpcHBl
ZCkpIHsKKyAgICByZXR1cm47CisgIH0KKworICAvLyBXZSBvbWl0IHRoZSBsYXN0IG5vZGUgaWYg
aXQncyB3aGl0ZXNwYWNlIG9ubHkgYW5kIG5vdCBwcmVjZWVkZWQgYnkgYSBub24tY29udGVudCBu
b2RlLgorICBsZXQgb3JpZ2luYWwgPSBjdXJyZW50LnZhbHVlOworICBjdXJyZW50LnZhbHVlID0g
Y3VycmVudC52YWx1ZS5yZXBsYWNlKG11bHRpcGxlID8gKC9ccyskLykgOiAoL1sgXHRdKyQvKSwg
JycpOworICBjdXJyZW50LmxlZnRTdHJpcHBlZCA9IGN1cnJlbnQudmFsdWUgIT09IG9yaWdpbmFs
OworICByZXR1cm4gY3VycmVudC5sZWZ0U3RyaXBwZWQ7Cit9CisKK2V4cG9ydCBkZWZhdWx0IFdo
aXRlc3BhY2VDb250cm9sOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9k
dWxlcy9oYW5kbGViYXJzL2xpYi9oYW5kbGViYXJzL2RlY29yYXRvcnMuanMgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvbGliL2hhbmRsZWJhcnMvZGVjb3JhdG9y
cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZjVhNjE1MjViZjBlNDYxY2I2MzMxMDhiY2EwNmI0ZDFhZmIyYWJj
Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5k
bGViYXJzL2xpYi9oYW5kbGViYXJzL2RlY29yYXRvcnMuanMKQEAgLTAsMCArMSw2IEBACitpbXBv
cnQgcmVnaXN0ZXJJbmxpbmUgZnJvbSAnLi9kZWNvcmF0b3JzL2lubGluZSc7CisKK2V4cG9ydCBm
dW5jdGlvbiByZWdpc3RlckRlZmF1bHREZWNvcmF0b3JzKGluc3RhbmNlKSB7CisgIHJlZ2lzdGVy
SW5saW5lKGluc3RhbmNlKTsKK30KKwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25v
ZGVfbW9kdWxlcy9oYW5kbGViYXJzL2xpYi9oYW5kbGViYXJzL2RlY29yYXRvcnMvaW5saW5lLmpz
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2xpYi9oYW5kbGVi
YXJzL2RlY29yYXRvcnMvaW5saW5lLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIxNDI0NjYyMGMwYzhhNTVmYjRk
ZjMzNzJkMmMwZDMwMTFlNTJhZGUKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVl
cnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvbGliL2hhbmRsZWJhcnMvZGVjb3JhdG9ycy9pbmxp
bmUuanMKQEAgLTAsMCArMSwyMiBAQAoraW1wb3J0IHtleHRlbmR9IGZyb20gJy4uL3V0aWxzJzsK
KworZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHsKKyAgaW5zdGFuY2UucmVnaXN0
ZXJEZWNvcmF0b3IoJ2lubGluZScsIGZ1bmN0aW9uKGZuLCBwcm9wcywgY29udGFpbmVyLCBvcHRp
b25zKSB7CisgICAgbGV0IHJldCA9IGZuOworICAgIGlmICghcHJvcHMucGFydGlhbHMpIHsKKyAg
ICAgIHByb3BzLnBhcnRpYWxzID0ge307CisgICAgICByZXQgPSBmdW5jdGlvbihjb250ZXh0LCBv
cHRpb25zKSB7CisgICAgICAgIC8vIENyZWF0ZSBhIG5ldyBwYXJ0aWFscyBzdGFjayBmcmFtZSBw
cmlvciB0byBleGVjLgorICAgICAgICBsZXQgb3JpZ2luYWwgPSBjb250YWluZXIucGFydGlhbHM7
CisgICAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyA9IGV4dGVuZCh7fSwgb3JpZ2luYWwsIHByb3Bz
LnBhcnRpYWxzKTsKKyAgICAgICAgbGV0IHJldCA9IGZuKGNvbnRleHQsIG9wdGlvbnMpOworICAg
ICAgICBjb250YWluZXIucGFydGlhbHMgPSBvcmlnaW5hbDsKKyAgICAgICAgcmV0dXJuIHJldDsK
KyAgICAgIH07CisgICAgfQorCisgICAgcHJvcHMucGFydGlhbHNbb3B0aW9ucy5hcmdzWzBdXSA9
IG9wdGlvbnMuZm47CisKKyAgICByZXR1cm4gcmV0OworICB9KTsKK30KZGlmZiAtLWdpdCBhL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9saWIvaGFuZGxlYmFycy9l
eGNlcHRpb24uanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMv
bGliL2hhbmRsZWJhcnMvZXhjZXB0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA4YWU1MzFhYTFiOTRmZWM1
NGM5ZjE0YjAwYjNlZTdiMmM2ZGNjY2MKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9q
cXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvbGliL2hhbmRsZWJhcnMvZXhjZXB0aW9uLmpz
CkBAIC0wLDAgKzEsNDYgQEAKKworY29uc3QgZXJyb3JQcm9wcyA9IFsnZGVzY3JpcHRpb24nLCAn
ZmlsZU5hbWUnLCAnbGluZU51bWJlcicsICdtZXNzYWdlJywgJ25hbWUnLCAnbnVtYmVyJywgJ3N0
YWNrJ107CisKK2Z1bmN0aW9uIEV4Y2VwdGlvbihtZXNzYWdlLCBub2RlKSB7CisgIGxldCBsb2Mg
PSBub2RlICYmIG5vZGUubG9jLAorICAgICAgbGluZSwKKyAgICAgIGNvbHVtbjsKKyAgaWYgKGxv
YykgeworICAgIGxpbmUgPSBsb2Muc3RhcnQubGluZTsKKyAgICBjb2x1bW4gPSBsb2Muc3RhcnQu
Y29sdW1uOworCisgICAgbWVzc2FnZSArPSAnIC0gJyArIGxpbmUgKyAnOicgKyBjb2x1bW47Cisg
IH0KKworICBsZXQgdG1wID0gRXJyb3IucHJvdG90eXBlLmNvbnN0cnVjdG9yLmNhbGwodGhpcywg
bWVzc2FnZSk7CisKKyAgLy8gVW5mb3J0dW5hdGVseSBlcnJvcnMgYXJlIG5vdCBlbnVtZXJhYmxl
IGluIENocm9tZSAoYXQgbGVhc3QpLCBzbyBgZm9yIHByb3AgaW4gdG1wYCBkb2Vzbid0IHdvcmsu
CisgIGZvciAobGV0IGlkeCA9IDA7IGlkeCA8IGVycm9yUHJvcHMubGVuZ3RoOyBpZHgrKykgewor
ICAgIHRoaXNbZXJyb3JQcm9wc1tpZHhdXSA9IHRtcFtlcnJvclByb3BzW2lkeF1dOworICB9CisK
KyAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi8KKyAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1Ry
YWNlKSB7CisgICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgRXhjZXB0aW9uKTsKKyAg
fQorCisgIHRyeSB7CisgICAgaWYgKGxvYykgeworICAgICAgdGhpcy5saW5lTnVtYmVyID0gbGlu
ZTsKKworICAgICAgLy8gV29yayBhcm91bmQgaXNzdWUgdW5kZXIgc2FmYXJpIHdoZXJlIHdlIGNh
bid0IGRpcmVjdGx5IHNldCB0aGUgY29sdW1uIHZhbHVlCisgICAgICAvKiBpc3RhbmJ1bCBpZ25v
cmUgbmV4dCAqLworICAgICAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkgeworICAgICAgICBP
YmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ2NvbHVtbicsIHt2YWx1ZTogY29sdW1ufSk7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICB0aGlzLmNvbHVtbiA9IGNvbHVtbjsKKyAgICAgIH0KKyAg
ICB9CisgIH0gY2F0Y2ggKG5vcCkgeworICAgIC8qIElnbm9yZSBpZiB0aGUgYnJvd3NlciBpcyB2
ZXJ5IHBhcnRpY3VsYXIgKi8KKyAgfQorfQorCitFeGNlcHRpb24ucHJvdG90eXBlID0gbmV3IEVy
cm9yKCk7CisKK2V4cG9ydCBkZWZhdWx0IEV4Y2VwdGlvbjsKZGlmZiAtLWdpdCBhL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9saWIvaGFuZGxlYmFycy9oZWxwZXJz
LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2xpYi9oYW5k
bGViYXJzL2hlbHBlcnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2E0MzY1YWVhMjEzOGY5MDQ5NjYzOTMxNmEy
ZWMzNzg5MmIzMDAzZgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2Rl
X21vZHVsZXMvaGFuZGxlYmFycy9saWIvaGFuZGxlYmFycy9oZWxwZXJzLmpzCkBAIC0wLDAgKzEs
MTcgQEAKK2ltcG9ydCByZWdpc3RlckJsb2NrSGVscGVyTWlzc2luZyBmcm9tICcuL2hlbHBlcnMv
YmxvY2staGVscGVyLW1pc3NpbmcnOworaW1wb3J0IHJlZ2lzdGVyRWFjaCBmcm9tICcuL2hlbHBl
cnMvZWFjaCc7CitpbXBvcnQgcmVnaXN0ZXJIZWxwZXJNaXNzaW5nIGZyb20gJy4vaGVscGVycy9o
ZWxwZXItbWlzc2luZyc7CitpbXBvcnQgcmVnaXN0ZXJJZiBmcm9tICcuL2hlbHBlcnMvaWYnOwor
aW1wb3J0IHJlZ2lzdGVyTG9nIGZyb20gJy4vaGVscGVycy9sb2cnOworaW1wb3J0IHJlZ2lzdGVy
TG9va3VwIGZyb20gJy4vaGVscGVycy9sb29rdXAnOworaW1wb3J0IHJlZ2lzdGVyV2l0aCBmcm9t
ICcuL2hlbHBlcnMvd2l0aCc7CisKK2V4cG9ydCBmdW5jdGlvbiByZWdpc3RlckRlZmF1bHRIZWxw
ZXJzKGluc3RhbmNlKSB7CisgIHJlZ2lzdGVyQmxvY2tIZWxwZXJNaXNzaW5nKGluc3RhbmNlKTsK
KyAgcmVnaXN0ZXJFYWNoKGluc3RhbmNlKTsKKyAgcmVnaXN0ZXJIZWxwZXJNaXNzaW5nKGluc3Rh
bmNlKTsKKyAgcmVnaXN0ZXJJZihpbnN0YW5jZSk7CisgIHJlZ2lzdGVyTG9nKGluc3RhbmNlKTsK
KyAgcmVnaXN0ZXJMb29rdXAoaW5zdGFuY2UpOworICByZWdpc3RlcldpdGgoaW5zdGFuY2UpOwor
fQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJz
L2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvYmxvY2staGVscGVyLW1pc3NpbmcuanMgYi9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvbGliL2hhbmRsZWJhcnMvaGVscGVy
cy9ibG9jay1oZWxwZXItbWlzc2luZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NjM5ZGRiOWRkNTc4M2EzYTAz
ZjNlMjYwZmQ5MTM0MTVjNzA1Y2QzCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1
ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvYmxvY2st
aGVscGVyLW1pc3NpbmcuanMKQEAgLTAsMCArMSwzMiBAQAoraW1wb3J0IHthcHBlbmRDb250ZXh0
UGF0aCwgY3JlYXRlRnJhbWUsIGlzQXJyYXl9IGZyb20gJy4uL3V0aWxzJzsKKworZXhwb3J0IGRl
ZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHsKKyAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2Js
b2NrSGVscGVyTWlzc2luZycsIGZ1bmN0aW9uKGNvbnRleHQsIG9wdGlvbnMpIHsKKyAgICBsZXQg
aW52ZXJzZSA9IG9wdGlvbnMuaW52ZXJzZSwKKyAgICAgICAgZm4gPSBvcHRpb25zLmZuOworCisg
ICAgaWYgKGNvbnRleHQgPT09IHRydWUpIHsKKyAgICAgIHJldHVybiBmbih0aGlzKTsKKyAgICB9
IGVsc2UgaWYgKGNvbnRleHQgPT09IGZhbHNlIHx8IGNvbnRleHQgPT0gbnVsbCkgeworICAgICAg
cmV0dXJuIGludmVyc2UodGhpcyk7CisgICAgfSBlbHNlIGlmIChpc0FycmF5KGNvbnRleHQpKSB7
CisgICAgICBpZiAoY29udGV4dC5sZW5ndGggPiAwKSB7CisgICAgICAgIGlmIChvcHRpb25zLmlk
cykgeworICAgICAgICAgIG9wdGlvbnMuaWRzID0gW29wdGlvbnMubmFtZV07CisgICAgICAgIH0K
KworICAgICAgICByZXR1cm4gaW5zdGFuY2UuaGVscGVycy5lYWNoKGNvbnRleHQsIG9wdGlvbnMp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIGludmVyc2UodGhpcyk7CisgICAgICB9
CisgICAgfSBlbHNlIHsKKyAgICAgIGlmIChvcHRpb25zLmRhdGEgJiYgb3B0aW9ucy5pZHMpIHsK
KyAgICAgICAgbGV0IGRhdGEgPSBjcmVhdGVGcmFtZShvcHRpb25zLmRhdGEpOworICAgICAgICBk
YXRhLmNvbnRleHRQYXRoID0gYXBwZW5kQ29udGV4dFBhdGgob3B0aW9ucy5kYXRhLmNvbnRleHRQ
YXRoLCBvcHRpb25zLm5hbWUpOworICAgICAgICBvcHRpb25zID0ge2RhdGE6IGRhdGF9OworICAg
ICAgfQorCisgICAgICByZXR1cm4gZm4oY29udGV4dCwgb3B0aW9ucyk7CisgICAgfQorICB9KTsK
K30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFy
cy9saWIvaGFuZGxlYmFycy9oZWxwZXJzL2VhY2guanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9k
ZV9tb2R1bGVzL2hhbmRsZWJhcnMvbGliL2hhbmRsZWJhcnMvaGVscGVycy9lYWNoLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmZiMTE5MDNjODcxMTUwZGMxZmY4MWNhMzE0OTY2ZjU0MTgxNzhmODEKLS0tIC9kZXYv
bnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvbGli
L2hhbmRsZWJhcnMvaGVscGVycy9lYWNoLmpzCkBAIC0wLDAgKzEsNzkgQEAKK2ltcG9ydCB7YXBw
ZW5kQ29udGV4dFBhdGgsIGJsb2NrUGFyYW1zLCBjcmVhdGVGcmFtZSwgaXNBcnJheSwgaXNGdW5j
dGlvbn0gZnJvbSAnLi4vdXRpbHMnOworaW1wb3J0IEV4Y2VwdGlvbiBmcm9tICcuLi9leGNlcHRp
b24nOworCitleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihpbnN0YW5jZSkgeworICBpbnN0YW5jZS5y
ZWdpc3RlckhlbHBlcignZWFjaCcsIGZ1bmN0aW9uKGNvbnRleHQsIG9wdGlvbnMpIHsKKyAgICBp
ZiAoIW9wdGlvbnMpIHsKKyAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ011c3QgcGFzcyBpdGVy
YXRvciB0byAjZWFjaCcpOworICAgIH0KKworICAgIGxldCBmbiA9IG9wdGlvbnMuZm4sCisgICAg
ICAgIGludmVyc2UgPSBvcHRpb25zLmludmVyc2UsCisgICAgICAgIGkgPSAwLAorICAgICAgICBy
ZXQgPSAnJywKKyAgICAgICAgZGF0YSwKKyAgICAgICAgY29udGV4dFBhdGg7CisKKyAgICBpZiAo
b3B0aW9ucy5kYXRhICYmIG9wdGlvbnMuaWRzKSB7CisgICAgICBjb250ZXh0UGF0aCA9IGFwcGVu
ZENvbnRleHRQYXRoKG9wdGlvbnMuZGF0YS5jb250ZXh0UGF0aCwgb3B0aW9ucy5pZHNbMF0pICsg
Jy4nOworICAgIH0KKworICAgIGlmIChpc0Z1bmN0aW9uKGNvbnRleHQpKSB7IGNvbnRleHQgPSBj
b250ZXh0LmNhbGwodGhpcyk7IH0KKworICAgIGlmIChvcHRpb25zLmRhdGEpIHsKKyAgICAgIGRh
dGEgPSBjcmVhdGVGcmFtZShvcHRpb25zLmRhdGEpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGV4
ZWNJdGVyYXRpb24oZmllbGQsIGluZGV4LCBsYXN0KSB7CisgICAgICBpZiAoZGF0YSkgeworICAg
ICAgICBkYXRhLmtleSA9IGZpZWxkOworICAgICAgICBkYXRhLmluZGV4ID0gaW5kZXg7CisgICAg
ICAgIGRhdGEuZmlyc3QgPSBpbmRleCA9PT0gMDsKKyAgICAgICAgZGF0YS5sYXN0ID0gISFsYXN0
OworCisgICAgICAgIGlmIChjb250ZXh0UGF0aCkgeworICAgICAgICAgIGRhdGEuY29udGV4dFBh
dGggPSBjb250ZXh0UGF0aCArIGZpZWxkOworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIHJl
dCA9IHJldCArIGZuKGNvbnRleHRbZmllbGRdLCB7CisgICAgICAgIGRhdGE6IGRhdGEsCisgICAg
ICAgIGJsb2NrUGFyYW1zOiBibG9ja1BhcmFtcyhbY29udGV4dFtmaWVsZF0sIGZpZWxkXSwgW2Nv
bnRleHRQYXRoICsgZmllbGQsIG51bGxdKQorICAgICAgfSk7CisgICAgfQorCisgICAgaWYgKGNv
bnRleHQgJiYgdHlwZW9mIGNvbnRleHQgPT09ICdvYmplY3QnKSB7CisgICAgICBpZiAoaXNBcnJh
eShjb250ZXh0KSkgeworICAgICAgICBmb3IgKGxldCBqID0gY29udGV4dC5sZW5ndGg7IGkgPCBq
OyBpKyspIHsKKyAgICAgICAgICBpZiAoaSBpbiBjb250ZXh0KSB7CisgICAgICAgICAgICBleGVj
SXRlcmF0aW9uKGksIGksIGkgPT09IGNvbnRleHQubGVuZ3RoIC0gMSk7CisgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICB9IGVsc2UgeworICAgICAgICBsZXQgcHJpb3JLZXk7CisKKyAgICAg
ICAgZm9yIChsZXQga2V5IGluIGNvbnRleHQpIHsKKyAgICAgICAgICBpZiAoY29udGV4dC5oYXNP
d25Qcm9wZXJ0eShrZXkpKSB7CisgICAgICAgICAgICAvLyBXZSdyZSBydW5uaW5nIHRoZSBpdGVy
YXRpb25zIG9uZSBzdGVwIG91dCBvZiBzeW5jIHNvIHdlIGNhbiBkZXRlY3QKKyAgICAgICAgICAg
IC8vIHRoZSBsYXN0IGl0ZXJhdGlvbiB3aXRob3V0IGhhdmUgdG8gc2NhbiB0aGUgb2JqZWN0IHR3
aWNlIGFuZCBjcmVhdGUKKyAgICAgICAgICAgIC8vIGFuIGl0ZXJtZWRpYXRlIGtleXMgYXJyYXku
CisgICAgICAgICAgICBpZiAocHJpb3JLZXkgIT09IHVuZGVmaW5lZCkgeworICAgICAgICAgICAg
ICBleGVjSXRlcmF0aW9uKHByaW9yS2V5LCBpIC0gMSk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBwcmlvcktleSA9IGtleTsKKyAgICAgICAgICAgIGkrKzsKKyAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKHByaW9yS2V5ICE9PSB1bmRlZmluZWQpIHsKKyAgICAgICAgICBl
eGVjSXRlcmF0aW9uKHByaW9yS2V5LCBpIC0gMSwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICAgIH0K
KyAgICB9CisKKyAgICBpZiAoaSA9PT0gMCkgeworICAgICAgcmV0ID0gaW52ZXJzZSh0aGlzKTsK
KyAgICB9CisKKyAgICByZXR1cm4gcmV0OworICB9KTsKK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9saWIvaGFuZGxlYmFycy9oZWxwZXJz
L2hlbHBlci1taXNzaW5nLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5k
bGViYXJzL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvaGVscGVyLW1pc3NpbmcuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZWMzMmU4MjQ1NjEyYzBiNTE4MTc5YjUzZmJjMDUyY2I1MTEzZmJiZAotLS0gL2Rldi9udWxs
CisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9saWIvaGFu
ZGxlYmFycy9oZWxwZXJzL2hlbHBlci1taXNzaW5nLmpzCkBAIC0wLDAgKzEsMTMgQEAKK2ltcG9y
dCBFeGNlcHRpb24gZnJvbSAnLi4vZXhjZXB0aW9uJzsKKworZXhwb3J0IGRlZmF1bHQgZnVuY3Rp
b24oaW5zdGFuY2UpIHsKKyAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2hlbHBlck1pc3Npbmcn
LCBmdW5jdGlvbigvKiBbYXJncywgXW9wdGlvbnMgKi8pIHsKKyAgICBpZiAoYXJndW1lbnRzLmxl
bmd0aCA9PT0gMSkgeworICAgICAgLy8gQSBtaXNzaW5nIGZpZWxkIGluIGEge3tmb299fSBjb25z
dHJ1Y3QuCisgICAgICByZXR1cm4gdW5kZWZpbmVkOworICAgIH0gZWxzZSB7CisgICAgICAvLyBT
b21lb25lIGlzIGFjdHVhbGx5IHRyeWluZyB0byBjYWxsIHNvbWV0aGluZywgYmxvdyB1cC4KKyAg
ICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ01pc3NpbmcgaGVscGVyOiAiJyArIGFyZ3VtZW50c1th
cmd1bWVudHMubGVuZ3RoIC0gMV0ubmFtZSArICciJyk7CisgICAgfQorICB9KTsKK30KZGlmZiAt
LWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9saWIvaGFu
ZGxlYmFycy9oZWxwZXJzL2lmLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9o
YW5kbGViYXJzL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvaWYuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTFkMDhk
ZjkxMmUxZDhmZTJlNWJkNDYxN2EwMWQ1ZWI1YjAyMDU4MQotLS0gL2Rldi9udWxsCisrKyBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9saWIvaGFuZGxlYmFycy9o
ZWxwZXJzL2lmLmpzCkBAIC0wLDAgKzEsMjAgQEAKK2ltcG9ydCB7aXNFbXB0eSwgaXNGdW5jdGlv
bn0gZnJvbSAnLi4vdXRpbHMnOworCitleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihpbnN0YW5jZSkg
eworICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcignaWYnLCBmdW5jdGlvbihjb25kaXRpb25hbCwg
b3B0aW9ucykgeworICAgIGlmIChpc0Z1bmN0aW9uKGNvbmRpdGlvbmFsKSkgeyBjb25kaXRpb25h
bCA9IGNvbmRpdGlvbmFsLmNhbGwodGhpcyk7IH0KKworICAgIC8vIERlZmF1bHQgYmVoYXZpb3Ig
aXMgdG8gcmVuZGVyIHRoZSBwb3NpdGl2ZSBwYXRoIGlmIHRoZSB2YWx1ZSBpcyB0cnV0aHkgYW5k
IG5vdCBlbXB0eS4KKyAgICAvLyBUaGUgYGluY2x1ZGVaZXJvYCBvcHRpb24gbWF5IGJlIHNldCB0
byB0cmVhdCB0aGUgY29uZHRpb25hbCBhcyBwdXJlbHkgbm90IGVtcHR5IGJhc2VkIG9uIHRoZQor
ICAgIC8vIGJlaGF2aW9yIG9mIGlzRW1wdHkuIEVmZmVjdGl2ZWx5IHRoaXMgZGV0ZXJtaW5lcyBp
ZiAwIGlzIGhhbmRsZWQgYnkgdGhlIHBvc2l0aXZlIHBhdGggb3IgbmVnYXRpdmUuCisgICAgaWYg
KCghb3B0aW9ucy5oYXNoLmluY2x1ZGVaZXJvICYmICFjb25kaXRpb25hbCkgfHwgaXNFbXB0eShj
b25kaXRpb25hbCkpIHsKKyAgICAgIHJldHVybiBvcHRpb25zLmludmVyc2UodGhpcyk7CisgICAg
fSBlbHNlIHsKKyAgICAgIHJldHVybiBvcHRpb25zLmZuKHRoaXMpOworICAgIH0KKyAgfSk7CisK
KyAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ3VubGVzcycsIGZ1bmN0aW9uKGNvbmRpdGlvbmFs
LCBvcHRpb25zKSB7CisgICAgcmV0dXJuIGluc3RhbmNlLmhlbHBlcnNbJ2lmJ10uY2FsbCh0aGlz
LCBjb25kaXRpb25hbCwge2ZuOiBvcHRpb25zLmludmVyc2UsIGludmVyc2U6IG9wdGlvbnMuZm4s
IGhhc2g6IG9wdGlvbnMuaGFzaH0pOworICB9KTsKK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9saWIvaGFuZGxlYmFycy9oZWxwZXJzL2xv
Zy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9saWIvaGFu
ZGxlYmFycy9oZWxwZXJzL2xvZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YmRlNGExMGQ1ODc2ODEyN2E1YzZh
OGI2Y2E2NmU2MWIzNmI0NmRlCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5
L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvbG9nLmpzCkBA
IC0wLDAgKzEsMTkgQEAKK2V4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGluc3RhbmNlKSB7CisgIGlu
c3RhbmNlLnJlZ2lzdGVySGVscGVyKCdsb2cnLCBmdW5jdGlvbigvKiBtZXNzYWdlLCBvcHRpb25z
ICovKSB7CisgICAgbGV0IGFyZ3MgPSBbdW5kZWZpbmVkXSwKKyAgICAgICAgb3B0aW9ucyA9IGFy
Z3VtZW50c1thcmd1bWVudHMubGVuZ3RoIC0gMV07CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBh
cmd1bWVudHMubGVuZ3RoIC0gMTsgaSsrKSB7CisgICAgICBhcmdzLnB1c2goYXJndW1lbnRzW2ld
KTsKKyAgICB9CisKKyAgICBsZXQgbGV2ZWwgPSAxOworICAgIGlmIChvcHRpb25zLmhhc2gubGV2
ZWwgIT0gbnVsbCkgeworICAgICAgbGV2ZWwgPSBvcHRpb25zLmhhc2gubGV2ZWw7CisgICAgfSBl
bHNlIGlmIChvcHRpb25zLmRhdGEgJiYgb3B0aW9ucy5kYXRhLmxldmVsICE9IG51bGwpIHsKKyAg
ICAgIGxldmVsID0gb3B0aW9ucy5kYXRhLmxldmVsOworICAgIH0KKyAgICBhcmdzWzBdID0gbGV2
ZWw7CisKKyAgICBpbnN0YW5jZS5sb2coLi4uIGFyZ3MpOworICB9KTsKK30KZGlmZiAtLWdpdCBh
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9saWIvaGFuZGxlYmFy
cy9oZWxwZXJzL2xvb2t1cC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFu
ZGxlYmFycy9saWIvaGFuZGxlYmFycy9oZWxwZXJzL2xvb2t1cC5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNTJl
NzdhMDRmZWY2ZTY4YTAyNzg5NzUwMTMxZTMyYzcwYjM5YjI3Ci0tLSAvZGV2L251bGwKKysrIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2xpYi9oYW5kbGViYXJz
L2hlbHBlcnMvbG9va3VwLmpzCkBAIC0wLDAgKzEsNSBAQAorZXhwb3J0IGRlZmF1bHQgZnVuY3Rp
b24oaW5zdGFuY2UpIHsKKyAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2xvb2t1cCcsIGZ1bmN0
aW9uKG9iaiwgZmllbGQpIHsKKyAgICByZXR1cm4gb2JqICYmIG9ialtmaWVsZF07CisgIH0pOwor
fQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJz
L2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvd2l0aC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2Rl
X21vZHVsZXMvaGFuZGxlYmFycy9saWIvaGFuZGxlYmFycy9oZWxwZXJzL3dpdGguanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNzQxOGNkMDY2MmY5YzVkOGI1Y2E5NjMzZWNhNzc2MzVmZDM0MGQxOQotLS0gL2Rldi9u
dWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9saWIv
aGFuZGxlYmFycy9oZWxwZXJzL3dpdGguanMKQEAgLTAsMCArMSwyNCBAQAoraW1wb3J0IHthcHBl
bmRDb250ZXh0UGF0aCwgYmxvY2tQYXJhbXMsIGNyZWF0ZUZyYW1lLCBpc0VtcHR5LCBpc0Z1bmN0
aW9ufSBmcm9tICcuLi91dGlscyc7CisKK2V4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGluc3RhbmNl
KSB7CisgIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCd3aXRoJywgZnVuY3Rpb24oY29udGV4dCwg
b3B0aW9ucykgeworICAgIGlmIChpc0Z1bmN0aW9uKGNvbnRleHQpKSB7IGNvbnRleHQgPSBjb250
ZXh0LmNhbGwodGhpcyk7IH0KKworICAgIGxldCBmbiA9IG9wdGlvbnMuZm47CisKKyAgICBpZiAo
IWlzRW1wdHkoY29udGV4dCkpIHsKKyAgICAgIGxldCBkYXRhID0gb3B0aW9ucy5kYXRhOworICAg
ICAgaWYgKG9wdGlvbnMuZGF0YSAmJiBvcHRpb25zLmlkcykgeworICAgICAgICBkYXRhID0gY3Jl
YXRlRnJhbWUob3B0aW9ucy5kYXRhKTsKKyAgICAgICAgZGF0YS5jb250ZXh0UGF0aCA9IGFwcGVu
ZENvbnRleHRQYXRoKG9wdGlvbnMuZGF0YS5jb250ZXh0UGF0aCwgb3B0aW9ucy5pZHNbMF0pOwor
ICAgICAgfQorCisgICAgICByZXR1cm4gZm4oY29udGV4dCwgeworICAgICAgICBkYXRhOiBkYXRh
LAorICAgICAgICBibG9ja1BhcmFtczogYmxvY2tQYXJhbXMoW2NvbnRleHRdLCBbZGF0YSAmJiBk
YXRhLmNvbnRleHRQYXRoXSkKKyAgICAgIH0pOworICAgIH0gZWxzZSB7CisgICAgICByZXR1cm4g
b3B0aW9ucy5pbnZlcnNlKHRoaXMpOworICAgIH0KKyAgfSk7Cit9CmRpZmYgLS1naXQgYS9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvbGliL2hhbmRsZWJhcnMvbG9n
Z2VyLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2xpYi9o
YW5kbGViYXJzL2xvZ2dlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYWIwMDUxZjUwMmIyNWY3MTdmZTA3Njcz
ZWYwMTExMmE1ZmE5ZGNmCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25v
ZGVfbW9kdWxlcy9oYW5kbGViYXJzL2xpYi9oYW5kbGViYXJzL2xvZ2dlci5qcwpAQCAtMCwwICsx
LDM1IEBACitpbXBvcnQge2luZGV4T2Z9IGZyb20gJy4vdXRpbHMnOworCitsZXQgbG9nZ2VyID0g
eworICBtZXRob2RNYXA6IFsnZGVidWcnLCAnaW5mbycsICd3YXJuJywgJ2Vycm9yJ10sCisgIGxl
dmVsOiAnaW5mbycsCisKKyAgLy8gTWFwcyBhIGdpdmVuIGxldmVsIHZhbHVlIHRvIHRoZSBgbWV0
aG9kTWFwYCBpbmRleGVzIGFib3ZlLgorICBsb29rdXBMZXZlbDogZnVuY3Rpb24obGV2ZWwpIHsK
KyAgICBpZiAodHlwZW9mIGxldmVsID09PSAnc3RyaW5nJykgeworICAgICAgbGV0IGxldmVsTWFw
ID0gaW5kZXhPZihsb2dnZXIubWV0aG9kTWFwLCBsZXZlbC50b0xvd2VyQ2FzZSgpKTsKKyAgICAg
IGlmIChsZXZlbE1hcCA+PSAwKSB7CisgICAgICAgIGxldmVsID0gbGV2ZWxNYXA7CisgICAgICB9
IGVsc2UgeworICAgICAgICBsZXZlbCA9IHBhcnNlSW50KGxldmVsLCAxMCk7CisgICAgICB9Cisg
ICAgfQorCisgICAgcmV0dXJuIGxldmVsOworICB9LAorCisgIC8vIENhbiBiZSBvdmVycmlkZGVu
IGluIHRoZSBob3N0IGVudmlyb25tZW50CisgIGxvZzogZnVuY3Rpb24obGV2ZWwsIC4uLm1lc3Nh
Z2UpIHsKKyAgICBsZXZlbCA9IGxvZ2dlci5sb29rdXBMZXZlbChsZXZlbCk7CisKKyAgICBpZiAo
dHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnICYmIGxvZ2dlci5sb29rdXBMZXZlbChsb2dn
ZXIubGV2ZWwpIDw9IGxldmVsKSB7CisgICAgICBsZXQgbWV0aG9kID0gbG9nZ2VyLm1ldGhvZE1h
cFtsZXZlbF07CisgICAgICBpZiAoIWNvbnNvbGVbbWV0aG9kXSkgeyAgIC8vIGVzbGludC1kaXNh
YmxlLWxpbmUgbm8tY29uc29sZQorICAgICAgICBtZXRob2QgPSAnbG9nJzsKKyAgICAgIH0KKyAg
ICAgIGNvbnNvbGVbbWV0aG9kXSguLi5tZXNzYWdlKTsgICAgLy8gZXNsaW50LWRpc2FibGUtbGlu
ZSBuby1jb25zb2xlCisgICAgfQorICB9Cit9OworCitleHBvcnQgZGVmYXVsdCBsb2dnZXI7CmRp
ZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvbGli
L2hhbmRsZWJhcnMvbm8tY29uZmxpY3QuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1
bGVzL2hhbmRsZWJhcnMvbGliL2hhbmRsZWJhcnMvbm8tY29uZmxpY3QuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NDBhNDRkN2E2NzQxMzhkY2M0YWVhMzY0YjkwMWRhM2Q2Nzc0NjAyZQotLS0gL2Rldi9udWxsCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9saWIvaGFuZGxl
YmFycy9uby1jb25mbGljdC5qcwpAQCAtMCwwICsxLDEzIEBACisvKiBnbG9iYWwgd2luZG93ICov
CitleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihIYW5kbGViYXJzKSB7CisgIC8qIGlzdGFuYnVsIGln
bm9yZSBuZXh0ICovCisgIGxldCByb290ID0gdHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcg
PyBnbG9iYWwgOiB3aW5kb3csCisgICAgICAkSGFuZGxlYmFycyA9IHJvb3QuSGFuZGxlYmFyczsK
KyAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8KKyAgSGFuZGxlYmFycy5ub0NvbmZsaWN0ID0g
ZnVuY3Rpb24oKSB7CisgICAgaWYgKHJvb3QuSGFuZGxlYmFycyA9PT0gSGFuZGxlYmFycykgewor
ICAgICAgcm9vdC5IYW5kbGViYXJzID0gJEhhbmRsZWJhcnM7CisgICAgfQorICAgIHJldHVybiBI
YW5kbGViYXJzOworICB9OworfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVf
bW9kdWxlcy9oYW5kbGViYXJzL2xpYi9oYW5kbGViYXJzL3J1bnRpbWUuanMgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvbGliL2hhbmRsZWJhcnMvcnVudGltZS5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xMDNiNWFmYWI3YzA1Y2NkOGVlYjYxZmUxYzUwNTE0MzgyZTQ1OWE4Ci0t
LSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGVi
YXJzL2xpYi9oYW5kbGViYXJzL3J1bnRpbWUuanMKQEAgLTAsMCArMSwyNzQgQEAKK2ltcG9ydCAq
IGFzIFV0aWxzIGZyb20gJy4vdXRpbHMnOworaW1wb3J0IEV4Y2VwdGlvbiBmcm9tICcuL2V4Y2Vw
dGlvbic7CitpbXBvcnQgeyBDT01QSUxFUl9SRVZJU0lPTiwgUkVWSVNJT05fQ0hBTkdFUywgY3Jl
YXRlRnJhbWUgfSBmcm9tICcuL2Jhc2UnOworCitleHBvcnQgZnVuY3Rpb24gY2hlY2tSZXZpc2lv
bihjb21waWxlckluZm8pIHsKKyAgY29uc3QgY29tcGlsZXJSZXZpc2lvbiA9IGNvbXBpbGVySW5m
byAmJiBjb21waWxlckluZm9bMF0gfHwgMSwKKyAgICAgICAgY3VycmVudFJldmlzaW9uID0gQ09N
UElMRVJfUkVWSVNJT047CisKKyAgaWYgKGNvbXBpbGVyUmV2aXNpb24gIT09IGN1cnJlbnRSZXZp
c2lvbikgeworICAgIGlmIChjb21waWxlclJldmlzaW9uIDwgY3VycmVudFJldmlzaW9uKSB7Cisg
ICAgICBjb25zdCBydW50aW1lVmVyc2lvbnMgPSBSRVZJU0lPTl9DSEFOR0VTW2N1cnJlbnRSZXZp
c2lvbl0sCisgICAgICAgICAgICBjb21waWxlclZlcnNpb25zID0gUkVWSVNJT05fQ0hBTkdFU1tj
b21waWxlclJldmlzaW9uXTsKKyAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ1RlbXBsYXRlIHdh
cyBwcmVjb21waWxlZCB3aXRoIGFuIG9sZGVyIHZlcnNpb24gb2YgSGFuZGxlYmFycyB0aGFuIHRo
ZSBjdXJyZW50IHJ1bnRpbWUuICcgKworICAgICAgICAgICAgJ1BsZWFzZSB1cGRhdGUgeW91ciBw
cmVjb21waWxlciB0byBhIG5ld2VyIHZlcnNpb24gKCcgKyBydW50aW1lVmVyc2lvbnMgKyAnKSBv
ciBkb3duZ3JhZGUgeW91ciBydW50aW1lIHRvIGFuIG9sZGVyIHZlcnNpb24gKCcgKyBjb21waWxl
clZlcnNpb25zICsgJykuJyk7CisgICAgfSBlbHNlIHsKKyAgICAgIC8vIFVzZSB0aGUgZW1iZWRk
ZWQgdmVyc2lvbiBpbmZvIHNpbmNlIHRoZSBydW50aW1lIGRvZXNuJ3Qga25vdyBhYm91dCB0aGlz
IHJldmlzaW9uIHlldAorICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignVGVtcGxhdGUgd2FzIHBy
ZWNvbXBpbGVkIHdpdGggYSBuZXdlciB2ZXJzaW9uIG9mIEhhbmRsZWJhcnMgdGhhbiB0aGUgY3Vy
cmVudCBydW50aW1lLiAnICsKKyAgICAgICAgICAgICdQbGVhc2UgdXBkYXRlIHlvdXIgcnVudGlt
ZSB0byBhIG5ld2VyIHZlcnNpb24gKCcgKyBjb21waWxlckluZm9bMV0gKyAnKS4nKTsKKyAgICB9
CisgIH0KK30KKworZXhwb3J0IGZ1bmN0aW9uIHRlbXBsYXRlKHRlbXBsYXRlU3BlYywgZW52KSB7
CisgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovCisgIGlmICghZW52KSB7CisgICAgdGhyb3cg
bmV3IEV4Y2VwdGlvbignTm8gZW52aXJvbm1lbnQgcGFzc2VkIHRvIHRlbXBsYXRlJyk7CisgIH0K
KyAgaWYgKCF0ZW1wbGF0ZVNwZWMgfHwgIXRlbXBsYXRlU3BlYy5tYWluKSB7CisgICAgdGhyb3cg
bmV3IEV4Y2VwdGlvbignVW5rbm93biB0ZW1wbGF0ZSBvYmplY3Q6ICcgKyB0eXBlb2YgdGVtcGxh
dGVTcGVjKTsKKyAgfQorCisgIHRlbXBsYXRlU3BlYy5tYWluLmRlY29yYXRvciA9IHRlbXBsYXRl
U3BlYy5tYWluX2Q7CisKKyAgLy8gTm90ZTogVXNpbmcgZW52LlZNIHJlZmVyZW5jZXMgcmF0aGVy
IHRoYW4gbG9jYWwgdmFyIHJlZmVyZW5jZXMgdGhyb3VnaG91dCB0aGlzIHNlY3Rpb24gdG8gYWxs
b3cKKyAgLy8gZm9yIGV4dGVybmFsIHVzZXJzIHRvIG92ZXJyaWRlIHRoZXNlIGFzIHBzdWVkby1z
dXBwb3J0ZWQgQVBJcy4KKyAgZW52LlZNLmNoZWNrUmV2aXNpb24odGVtcGxhdGVTcGVjLmNvbXBp
bGVyKTsKKworICBmdW5jdGlvbiBpbnZva2VQYXJ0aWFsV3JhcHBlcihwYXJ0aWFsLCBjb250ZXh0
LCBvcHRpb25zKSB7CisgICAgaWYgKG9wdGlvbnMuaGFzaCkgeworICAgICAgY29udGV4dCA9IFV0
aWxzLmV4dGVuZCh7fSwgY29udGV4dCwgb3B0aW9ucy5oYXNoKTsKKyAgICAgIGlmIChvcHRpb25z
LmlkcykgeworICAgICAgICBvcHRpb25zLmlkc1swXSA9IHRydWU7CisgICAgICB9CisgICAgfQor
CisgICAgcGFydGlhbCA9IGVudi5WTS5yZXNvbHZlUGFydGlhbC5jYWxsKHRoaXMsIHBhcnRpYWws
IGNvbnRleHQsIG9wdGlvbnMpOworICAgIGxldCByZXN1bHQgPSBlbnYuVk0uaW52b2tlUGFydGlh
bC5jYWxsKHRoaXMsIHBhcnRpYWwsIGNvbnRleHQsIG9wdGlvbnMpOworCisgICAgaWYgKHJlc3Vs
dCA9PSBudWxsICYmIGVudi5jb21waWxlKSB7CisgICAgICBvcHRpb25zLnBhcnRpYWxzW29wdGlv
bnMubmFtZV0gPSBlbnYuY29tcGlsZShwYXJ0aWFsLCB0ZW1wbGF0ZVNwZWMuY29tcGlsZXJPcHRp
b25zLCBlbnYpOworICAgICAgcmVzdWx0ID0gb3B0aW9ucy5wYXJ0aWFsc1tvcHRpb25zLm5hbWVd
KGNvbnRleHQsIG9wdGlvbnMpOworICAgIH0KKyAgICBpZiAocmVzdWx0ICE9IG51bGwpIHsKKyAg
ICAgIGlmIChvcHRpb25zLmluZGVudCkgeworICAgICAgICBsZXQgbGluZXMgPSByZXN1bHQuc3Bs
aXQoJ1xuJyk7CisgICAgICAgIGZvciAobGV0IGkgPSAwLCBsID0gbGluZXMubGVuZ3RoOyBpIDwg
bDsgaSsrKSB7CisgICAgICAgICAgaWYgKCFsaW5lc1tpXSAmJiBpICsgMSA9PT0gbCkgeworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgfQorCisgICAgICAgICAgbGluZXNbaV0gPSBvcHRp
b25zLmluZGVudCArIGxpbmVzW2ldOworICAgICAgICB9CisgICAgICAgIHJlc3VsdCA9IGxpbmVz
LmpvaW4oJ1xuJyk7CisgICAgICB9CisgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0gZWxzZSB7
CisgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdUaGUgcGFydGlhbCAnICsgb3B0aW9ucy5uYW1l
ICsgJyBjb3VsZCBub3QgYmUgY29tcGlsZWQgd2hlbiBydW5uaW5nIGluIHJ1bnRpbWUtb25seSBt
b2RlJyk7CisgICAgfQorICB9CisKKyAgLy8gSnVzdCBhZGQgd2F0ZXIKKyAgbGV0IGNvbnRhaW5l
ciA9IHsKKyAgICBzdHJpY3Q6IGZ1bmN0aW9uKG9iaiwgbmFtZSkgeworICAgICAgaWYgKCEobmFt
ZSBpbiBvYmopKSB7CisgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJyInICsgbmFtZSArICci
IG5vdCBkZWZpbmVkIGluICcgKyBvYmopOworICAgICAgfQorICAgICAgcmV0dXJuIG9ialtuYW1l
XTsKKyAgICB9LAorICAgIGxvb2t1cDogZnVuY3Rpb24oZGVwdGhzLCBuYW1lKSB7CisgICAgICBj
b25zdCBsZW4gPSBkZXB0aHMubGVuZ3RoOworICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47
IGkrKykgeworICAgICAgICBpZiAoZGVwdGhzW2ldICYmIGRlcHRoc1tpXVtuYW1lXSAhPSBudWxs
KSB7CisgICAgICAgICAgcmV0dXJuIGRlcHRoc1tpXVtuYW1lXTsKKyAgICAgICAgfQorICAgICAg
fQorICAgIH0sCisgICAgbGFtYmRhOiBmdW5jdGlvbihjdXJyZW50LCBjb250ZXh0KSB7CisgICAg
ICByZXR1cm4gdHlwZW9mIGN1cnJlbnQgPT09ICdmdW5jdGlvbicgPyBjdXJyZW50LmNhbGwoY29u
dGV4dCkgOiBjdXJyZW50OworICAgIH0sCisKKyAgICBlc2NhcGVFeHByZXNzaW9uOiBVdGlscy5l
c2NhcGVFeHByZXNzaW9uLAorICAgIGludm9rZVBhcnRpYWw6IGludm9rZVBhcnRpYWxXcmFwcGVy
LAorCisgICAgZm46IGZ1bmN0aW9uKGkpIHsKKyAgICAgIGxldCByZXQgPSB0ZW1wbGF0ZVNwZWNb
aV07CisgICAgICByZXQuZGVjb3JhdG9yID0gdGVtcGxhdGVTcGVjW2kgKyAnX2QnXTsKKyAgICAg
IHJldHVybiByZXQ7CisgICAgfSwKKworICAgIHByb2dyYW1zOiBbXSwKKyAgICBwcm9ncmFtOiBm
dW5jdGlvbihpLCBkYXRhLCBkZWNsYXJlZEJsb2NrUGFyYW1zLCBibG9ja1BhcmFtcywgZGVwdGhz
KSB7CisgICAgICBsZXQgcHJvZ3JhbVdyYXBwZXIgPSB0aGlzLnByb2dyYW1zW2ldLAorICAgICAg
ICAgIGZuID0gdGhpcy5mbihpKTsKKyAgICAgIGlmIChkYXRhIHx8IGRlcHRocyB8fCBibG9ja1Bh
cmFtcyB8fCBkZWNsYXJlZEJsb2NrUGFyYW1zKSB7CisgICAgICAgIHByb2dyYW1XcmFwcGVyID0g
d3JhcFByb2dyYW0odGhpcywgaSwgZm4sIGRhdGEsIGRlY2xhcmVkQmxvY2tQYXJhbXMsIGJsb2Nr
UGFyYW1zLCBkZXB0aHMpOworICAgICAgfSBlbHNlIGlmICghcHJvZ3JhbVdyYXBwZXIpIHsKKyAg
ICAgICAgcHJvZ3JhbVdyYXBwZXIgPSB0aGlzLnByb2dyYW1zW2ldID0gd3JhcFByb2dyYW0odGhp
cywgaSwgZm4pOworICAgICAgfQorICAgICAgcmV0dXJuIHByb2dyYW1XcmFwcGVyOworICAgIH0s
CisKKyAgICBkYXRhOiBmdW5jdGlvbih2YWx1ZSwgZGVwdGgpIHsKKyAgICAgIHdoaWxlICh2YWx1
ZSAmJiBkZXB0aC0tKSB7CisgICAgICAgIHZhbHVlID0gdmFsdWUuX3BhcmVudDsKKyAgICAgIH0K
KyAgICAgIHJldHVybiB2YWx1ZTsKKyAgICB9LAorICAgIG1lcmdlOiBmdW5jdGlvbihwYXJhbSwg
Y29tbW9uKSB7CisgICAgICBsZXQgb2JqID0gcGFyYW0gfHwgY29tbW9uOworCisgICAgICBpZiAo
cGFyYW0gJiYgY29tbW9uICYmIChwYXJhbSAhPT0gY29tbW9uKSkgeworICAgICAgICBvYmogPSBV
dGlscy5leHRlbmQoe30sIGNvbW1vbiwgcGFyYW0pOworICAgICAgfQorCisgICAgICByZXR1cm4g
b2JqOworICAgIH0sCisKKyAgICBub29wOiBlbnYuVk0ubm9vcCwKKyAgICBjb21waWxlckluZm86
IHRlbXBsYXRlU3BlYy5jb21waWxlcgorICB9OworCisgIGZ1bmN0aW9uIHJldChjb250ZXh0LCBv
cHRpb25zID0ge30pIHsKKyAgICBsZXQgZGF0YSA9IG9wdGlvbnMuZGF0YTsKKworICAgIHJldC5f
c2V0dXAob3B0aW9ucyk7CisgICAgaWYgKCFvcHRpb25zLnBhcnRpYWwgJiYgdGVtcGxhdGVTcGVj
LnVzZURhdGEpIHsKKyAgICAgIGRhdGEgPSBpbml0RGF0YShjb250ZXh0LCBkYXRhKTsKKyAgICB9
CisgICAgbGV0IGRlcHRocywKKyAgICAgICAgYmxvY2tQYXJhbXMgPSB0ZW1wbGF0ZVNwZWMudXNl
QmxvY2tQYXJhbXMgPyBbXSA6IHVuZGVmaW5lZDsKKyAgICBpZiAodGVtcGxhdGVTcGVjLnVzZURl
cHRocykgeworICAgICAgaWYgKG9wdGlvbnMuZGVwdGhzKSB7CisgICAgICAgIGRlcHRocyA9IGNv
bnRleHQgIT0gb3B0aW9ucy5kZXB0aHNbMF0gPyBbY29udGV4dF0uY29uY2F0KG9wdGlvbnMuZGVw
dGhzKSA6IG9wdGlvbnMuZGVwdGhzOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgZGVwdGhzID0g
W2NvbnRleHRdOworICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIG1haW4oY29udGV4dC8q
LCBvcHRpb25zKi8pIHsKKyAgICAgIHJldHVybiAnJyArIHRlbXBsYXRlU3BlYy5tYWluKGNvbnRh
aW5lciwgY29udGV4dCwgY29udGFpbmVyLmhlbHBlcnMsIGNvbnRhaW5lci5wYXJ0aWFscywgZGF0
YSwgYmxvY2tQYXJhbXMsIGRlcHRocyk7CisgICAgfQorICAgIG1haW4gPSBleGVjdXRlRGVjb3Jh
dG9ycyh0ZW1wbGF0ZVNwZWMubWFpbiwgbWFpbiwgY29udGFpbmVyLCBvcHRpb25zLmRlcHRocyB8
fCBbXSwgZGF0YSwgYmxvY2tQYXJhbXMpOworICAgIHJldHVybiBtYWluKGNvbnRleHQsIG9wdGlv
bnMpOworICB9CisgIHJldC5pc1RvcCA9IHRydWU7CisKKyAgcmV0Ll9zZXR1cCA9IGZ1bmN0aW9u
KG9wdGlvbnMpIHsKKyAgICBpZiAoIW9wdGlvbnMucGFydGlhbCkgeworICAgICAgY29udGFpbmVy
LmhlbHBlcnMgPSBjb250YWluZXIubWVyZ2Uob3B0aW9ucy5oZWxwZXJzLCBlbnYuaGVscGVycyk7
CisKKyAgICAgIGlmICh0ZW1wbGF0ZVNwZWMudXNlUGFydGlhbCkgeworICAgICAgICBjb250YWlu
ZXIucGFydGlhbHMgPSBjb250YWluZXIubWVyZ2Uob3B0aW9ucy5wYXJ0aWFscywgZW52LnBhcnRp
YWxzKTsKKyAgICAgIH0KKyAgICAgIGlmICh0ZW1wbGF0ZVNwZWMudXNlUGFydGlhbCB8fCB0ZW1w
bGF0ZVNwZWMudXNlRGVjb3JhdG9ycykgeworICAgICAgICBjb250YWluZXIuZGVjb3JhdG9ycyA9
IGNvbnRhaW5lci5tZXJnZShvcHRpb25zLmRlY29yYXRvcnMsIGVudi5kZWNvcmF0b3JzKTsKKyAg
ICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgY29udGFpbmVyLmhlbHBlcnMgPSBvcHRpb25zLmhl
bHBlcnM7CisgICAgICBjb250YWluZXIucGFydGlhbHMgPSBvcHRpb25zLnBhcnRpYWxzOworICAg
ICAgY29udGFpbmVyLmRlY29yYXRvcnMgPSBvcHRpb25zLmRlY29yYXRvcnM7CisgICAgfQorICB9
OworCisgIHJldC5fY2hpbGQgPSBmdW5jdGlvbihpLCBkYXRhLCBibG9ja1BhcmFtcywgZGVwdGhz
KSB7CisgICAgaWYgKHRlbXBsYXRlU3BlYy51c2VCbG9ja1BhcmFtcyAmJiAhYmxvY2tQYXJhbXMp
IHsKKyAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ211c3QgcGFzcyBibG9jayBwYXJhbXMnKTsK
KyAgICB9CisgICAgaWYgKHRlbXBsYXRlU3BlYy51c2VEZXB0aHMgJiYgIWRlcHRocykgeworICAg
ICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignbXVzdCBwYXNzIHBhcmVudCBkZXB0aHMnKTsKKyAgICB9
CisKKyAgICByZXR1cm4gd3JhcFByb2dyYW0oY29udGFpbmVyLCBpLCB0ZW1wbGF0ZVNwZWNbaV0s
IGRhdGEsIDAsIGJsb2NrUGFyYW1zLCBkZXB0aHMpOworICB9OworICByZXR1cm4gcmV0OworfQor
CitleHBvcnQgZnVuY3Rpb24gd3JhcFByb2dyYW0oY29udGFpbmVyLCBpLCBmbiwgZGF0YSwgZGVj
bGFyZWRCbG9ja1BhcmFtcywgYmxvY2tQYXJhbXMsIGRlcHRocykgeworICBmdW5jdGlvbiBwcm9n
KGNvbnRleHQsIG9wdGlvbnMgPSB7fSkgeworICAgIGxldCBjdXJyZW50RGVwdGhzID0gZGVwdGhz
OworICAgIGlmIChkZXB0aHMgJiYgY29udGV4dCAhPSBkZXB0aHNbMF0pIHsKKyAgICAgIGN1cnJl
bnREZXB0aHMgPSBbY29udGV4dF0uY29uY2F0KGRlcHRocyk7CisgICAgfQorCisgICAgcmV0dXJu
IGZuKGNvbnRhaW5lciwKKyAgICAgICAgY29udGV4dCwKKyAgICAgICAgY29udGFpbmVyLmhlbHBl
cnMsIGNvbnRhaW5lci5wYXJ0aWFscywKKyAgICAgICAgb3B0aW9ucy5kYXRhIHx8IGRhdGEsCisg
ICAgICAgIGJsb2NrUGFyYW1zICYmIFtvcHRpb25zLmJsb2NrUGFyYW1zXS5jb25jYXQoYmxvY2tQ
YXJhbXMpLAorICAgICAgICBjdXJyZW50RGVwdGhzKTsKKyAgfQorCisgIHByb2cgPSBleGVjdXRl
RGVjb3JhdG9ycyhmbiwgcHJvZywgY29udGFpbmVyLCBkZXB0aHMsIGRhdGEsIGJsb2NrUGFyYW1z
KTsKKworICBwcm9nLnByb2dyYW0gPSBpOworICBwcm9nLmRlcHRoID0gZGVwdGhzID8gZGVwdGhz
Lmxlbmd0aCA6IDA7CisgIHByb2cuYmxvY2tQYXJhbXMgPSBkZWNsYXJlZEJsb2NrUGFyYW1zIHx8
IDA7CisgIHJldHVybiBwcm9nOworfQorCitleHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVBhcnRpYWwo
cGFydGlhbCwgY29udGV4dCwgb3B0aW9ucykgeworICBpZiAoIXBhcnRpYWwpIHsKKyAgICBpZiAo
b3B0aW9ucy5uYW1lID09PSAnQHBhcnRpYWwtYmxvY2snKSB7CisgICAgICBsZXQgZGF0YSA9IG9w
dGlvbnMuZGF0YTsKKyAgICAgIHdoaWxlIChkYXRhWydwYXJ0aWFsLWJsb2NrJ10gPT09IG5vb3Ap
IHsKKyAgICAgICAgZGF0YSA9IGRhdGEuX3BhcmVudDsKKyAgICAgIH0KKyAgICAgIHBhcnRpYWwg
PSBkYXRhWydwYXJ0aWFsLWJsb2NrJ107CisgICAgICBkYXRhWydwYXJ0aWFsLWJsb2NrJ10gPSBu
b29wOworICAgIH0gZWxzZSB7CisgICAgICBwYXJ0aWFsID0gb3B0aW9ucy5wYXJ0aWFsc1tvcHRp
b25zLm5hbWVdOworICAgIH0KKyAgfSBlbHNlIGlmICghcGFydGlhbC5jYWxsICYmICFvcHRpb25z
Lm5hbWUpIHsKKyAgICAvLyBUaGlzIGlzIGEgZHluYW1pYyBwYXJ0aWFsIHRoYXQgcmV0dXJuZWQg
YSBzdHJpbmcKKyAgICBvcHRpb25zLm5hbWUgPSBwYXJ0aWFsOworICAgIHBhcnRpYWwgPSBvcHRp
b25zLnBhcnRpYWxzW3BhcnRpYWxdOworICB9CisgIHJldHVybiBwYXJ0aWFsOworfQorCitleHBv
cnQgZnVuY3Rpb24gaW52b2tlUGFydGlhbChwYXJ0aWFsLCBjb250ZXh0LCBvcHRpb25zKSB7Cisg
IG9wdGlvbnMucGFydGlhbCA9IHRydWU7CisgIGlmIChvcHRpb25zLmlkcykgeworICAgIG9wdGlv
bnMuZGF0YS5jb250ZXh0UGF0aCA9IG9wdGlvbnMuaWRzWzBdIHx8IG9wdGlvbnMuZGF0YS5jb250
ZXh0UGF0aDsKKyAgfQorCisgIGxldCBwYXJ0aWFsQmxvY2s7CisgIGlmIChvcHRpb25zLmZuICYm
IG9wdGlvbnMuZm4gIT09IG5vb3ApIHsKKyAgICBvcHRpb25zLmRhdGEgPSBjcmVhdGVGcmFtZShv
cHRpb25zLmRhdGEpOworICAgIHBhcnRpYWxCbG9jayA9IG9wdGlvbnMuZGF0YVsncGFydGlhbC1i
bG9jayddID0gb3B0aW9ucy5mbjsKKworICAgIGlmIChwYXJ0aWFsQmxvY2sucGFydGlhbHMpIHsK
KyAgICAgIG9wdGlvbnMucGFydGlhbHMgPSBVdGlscy5leHRlbmQoe30sIG9wdGlvbnMucGFydGlh
bHMsIHBhcnRpYWxCbG9jay5wYXJ0aWFscyk7CisgICAgfQorICB9CisKKyAgaWYgKHBhcnRpYWwg
PT09IHVuZGVmaW5lZCAmJiBwYXJ0aWFsQmxvY2spIHsKKyAgICBwYXJ0aWFsID0gcGFydGlhbEJs
b2NrOworICB9CisKKyAgaWYgKHBhcnRpYWwgPT09IHVuZGVmaW5lZCkgeworICAgIHRocm93IG5l
dyBFeGNlcHRpb24oJ1RoZSBwYXJ0aWFsICcgKyBvcHRpb25zLm5hbWUgKyAnIGNvdWxkIG5vdCBi
ZSBmb3VuZCcpOworICB9IGVsc2UgaWYgKHBhcnRpYWwgaW5zdGFuY2VvZiBGdW5jdGlvbikgewor
ICAgIHJldHVybiBwYXJ0aWFsKGNvbnRleHQsIG9wdGlvbnMpOworICB9Cit9CisKK2V4cG9ydCBm
dW5jdGlvbiBub29wKCkgeyByZXR1cm4gJyc7IH0KKworZnVuY3Rpb24gaW5pdERhdGEoY29udGV4
dCwgZGF0YSkgeworICBpZiAoIWRhdGEgfHwgISgncm9vdCcgaW4gZGF0YSkpIHsKKyAgICBkYXRh
ID0gZGF0YSA/IGNyZWF0ZUZyYW1lKGRhdGEpIDoge307CisgICAgZGF0YS5yb290ID0gY29udGV4
dDsKKyAgfQorICByZXR1cm4gZGF0YTsKK30KKworZnVuY3Rpb24gZXhlY3V0ZURlY29yYXRvcnMo
Zm4sIHByb2csIGNvbnRhaW5lciwgZGVwdGhzLCBkYXRhLCBibG9ja1BhcmFtcykgeworICBpZiAo
Zm4uZGVjb3JhdG9yKSB7CisgICAgbGV0IHByb3BzID0ge307CisgICAgcHJvZyA9IGZuLmRlY29y
YXRvcihwcm9nLCBwcm9wcywgY29udGFpbmVyLCBkZXB0aHMgJiYgZGVwdGhzWzBdLCBkYXRhLCBi
bG9ja1BhcmFtcywgZGVwdGhzKTsKKyAgICBVdGlscy5leHRlbmQocHJvZywgcHJvcHMpOworICB9
CisgIHJldHVybiBwcm9nOworfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVf
bW9kdWxlcy9oYW5kbGViYXJzL2xpYi9oYW5kbGViYXJzL3NhZmUtc3RyaW5nLmpzIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2xpYi9oYW5kbGViYXJzL3NhZmUt
c3RyaW5nLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ2ODAxOTQyMTkxZjk2MDcxOTdjMjE5ZTMyZThhMWM4YWJh
OWM0ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVz
L2hhbmRsZWJhcnMvbGliL2hhbmRsZWJhcnMvc2FmZS1zdHJpbmcuanMKQEAgLTAsMCArMSwxMCBA
QAorLy8gQnVpbGQgb3V0IG91ciBiYXNpYyBTYWZlU3RyaW5nIHR5cGUKK2Z1bmN0aW9uIFNhZmVT
dHJpbmcoc3RyaW5nKSB7CisgIHRoaXMuc3RyaW5nID0gc3RyaW5nOworfQorCitTYWZlU3RyaW5n
LnByb3RvdHlwZS50b1N0cmluZyA9IFNhZmVTdHJpbmcucHJvdG90eXBlLnRvSFRNTCA9IGZ1bmN0
aW9uKCkgeworICByZXR1cm4gJycgKyB0aGlzLnN0cmluZzsKK307CisKK2V4cG9ydCBkZWZhdWx0
IFNhZmVTdHJpbmc7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVz
L2hhbmRsZWJhcnMvbGliL2hhbmRsZWJhcnMvdXRpbHMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkv
bm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvbGliL2hhbmRsZWJhcnMvdXRpbHMuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjU4NDYwMWVmNjIwMzFkZDQzNGFjOWI4ODZkZjllNmFhYjlhNmM5NAotLS0gL2Rldi9udWxs
CisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9saWIvaGFu
ZGxlYmFycy91dGlscy5qcwpAQCAtMCwwICsxLDEwOCBAQAorY29uc3QgZXNjYXBlID0geworICAn
Jic6ICcmYW1wOycsCisgICc8JzogJyZsdDsnLAorICAnPic6ICcmZ3Q7JywKKyAgJyInOiAnJnF1
b3Q7JywKKyAgIiciOiAnJiN4Mjc7JywKKyAgJ2AnOiAnJiN4NjA7JywKKyAgJz0nOiAnJiN4M0Q7
JworfTsKKworY29uc3QgYmFkQ2hhcnMgPSAvWyY8PiInYD1dL2csCisgICAgICBwb3NzaWJsZSA9
IC9bJjw+IidgPV0vOworCitmdW5jdGlvbiBlc2NhcGVDaGFyKGNocikgeworICByZXR1cm4gZXNj
YXBlW2Nocl07Cit9CisKK2V4cG9ydCBmdW5jdGlvbiBleHRlbmQob2JqLyogLCAuLi5zb3VyY2Ug
Ki8pIHsKKyAgZm9yIChsZXQgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsKKyAg
ICBmb3IgKGxldCBrZXkgaW4gYXJndW1lbnRzW2ldKSB7CisgICAgICBpZiAoT2JqZWN0LnByb3Rv
dHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGFyZ3VtZW50c1tpXSwga2V5KSkgeworICAgICAgICBv
Ympba2V5XSA9IGFyZ3VtZW50c1tpXVtrZXldOworICAgICAgfQorICAgIH0KKyAgfQorCisgIHJl
dHVybiBvYmo7Cit9CisKK2V4cG9ydCBsZXQgdG9TdHJpbmcgPSBPYmplY3QucHJvdG90eXBlLnRv
U3RyaW5nOworCisvLyBTb3VyY2VkIGZyb20gbG9kYXNoCisvLyBodHRwczovL2dpdGh1Yi5jb20v
YmVzdGllanMvbG9kYXNoL2Jsb2IvbWFzdGVyL0xJQ0VOU0UudHh0CisvKiBlc2xpbnQtZGlzYWJs
ZSBmdW5jLXN0eWxlICovCitsZXQgaXNGdW5jdGlvbiA9IGZ1bmN0aW9uKHZhbHVlKSB7CisgIHJl
dHVybiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbic7Cit9OworLy8gZmFsbGJhY2sgZm9yIG9s
ZGVyIHZlcnNpb25zIG9mIENocm9tZSBhbmQgU2FmYXJpCisvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4
dCAqLworaWYgKGlzRnVuY3Rpb24oL3gvKSkgeworICBpc0Z1bmN0aW9uID0gZnVuY3Rpb24odmFs
dWUpIHsKKyAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHRvU3RyaW5n
LmNhbGwodmFsdWUpID09PSAnW29iamVjdCBGdW5jdGlvbl0nOworICB9OworfQorZXhwb3J0IHtp
c0Z1bmN0aW9ufTsKKy8qIGVzbGludC1lbmFibGUgZnVuYy1zdHlsZSAqLworCisvKiBpc3RhbmJ1
bCBpZ25vcmUgbmV4dCAqLworZXhwb3J0IGNvbnN0IGlzQXJyYXkgPSBBcnJheS5pc0FycmF5IHx8
IGZ1bmN0aW9uKHZhbHVlKSB7CisgIHJldHVybiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAn
b2JqZWN0JykgPyB0b1N0cmluZy5jYWxsKHZhbHVlKSA9PT0gJ1tvYmplY3QgQXJyYXldJyA6IGZh
bHNlOworfTsKKworLy8gT2xkZXIgSUUgdmVyc2lvbnMgZG8gbm90IGRpcmVjdGx5IHN1cHBvcnQg
aW5kZXhPZiBzbyB3ZSBtdXN0IGltcGxlbWVudCBvdXIgb3duLCBzYWRseS4KK2V4cG9ydCBmdW5j
dGlvbiBpbmRleE9mKGFycmF5LCB2YWx1ZSkgeworICBmb3IgKGxldCBpID0gMCwgbGVuID0gYXJy
YXkubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHsKKyAgICBpZiAoYXJyYXlbaV0gPT09IHZhbHVlKSB7
CisgICAgICByZXR1cm4gaTsKKyAgICB9CisgIH0KKyAgcmV0dXJuIC0xOworfQorCisKK2V4cG9y
dCBmdW5jdGlvbiBlc2NhcGVFeHByZXNzaW9uKHN0cmluZykgeworICBpZiAodHlwZW9mIHN0cmlu
ZyAhPT0gJ3N0cmluZycpIHsKKyAgICAvLyBkb24ndCBlc2NhcGUgU2FmZVN0cmluZ3MsIHNpbmNl
IHRoZXkncmUgYWxyZWFkeSBzYWZlCisgICAgaWYgKHN0cmluZyAmJiBzdHJpbmcudG9IVE1MKSB7
CisgICAgICByZXR1cm4gc3RyaW5nLnRvSFRNTCgpOworICAgIH0gZWxzZSBpZiAoc3RyaW5nID09
IG51bGwpIHsKKyAgICAgIHJldHVybiAnJzsKKyAgICB9IGVsc2UgaWYgKCFzdHJpbmcpIHsKKyAg
ICAgIHJldHVybiBzdHJpbmcgKyAnJzsKKyAgICB9CisKKyAgICAvLyBGb3JjZSBhIHN0cmluZyBj
b252ZXJzaW9uIGFzIHRoaXMgd2lsbCBiZSBkb25lIGJ5IHRoZSBhcHBlbmQgcmVnYXJkbGVzcyBh
bmQKKyAgICAvLyB0aGUgcmVnZXggdGVzdCB3aWxsIGRvIHRoaXMgdHJhbnNwYXJlbnRseSBiZWhp
bmQgdGhlIHNjZW5lcywgY2F1c2luZyBpc3N1ZXMgaWYKKyAgICAvLyBhbiBvYmplY3QncyB0byBz
dHJpbmcgaGFzIGVzY2FwZWQgY2hhcmFjdGVycyBpbiBpdC4KKyAgICBzdHJpbmcgPSAnJyArIHN0
cmluZzsKKyAgfQorCisgIGlmICghcG9zc2libGUudGVzdChzdHJpbmcpKSB7IHJldHVybiBzdHJp
bmc7IH0KKyAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKGJhZENoYXJzLCBlc2NhcGVDaGFyKTsKK30K
KworZXhwb3J0IGZ1bmN0aW9uIGlzRW1wdHkodmFsdWUpIHsKKyAgaWYgKCF2YWx1ZSAmJiB2YWx1
ZSAhPT0gMCkgeworICAgIHJldHVybiB0cnVlOworICB9IGVsc2UgaWYgKGlzQXJyYXkodmFsdWUp
ICYmIHZhbHVlLmxlbmd0aCA9PT0gMCkgeworICAgIHJldHVybiB0cnVlOworICB9IGVsc2Ugewor
ICAgIHJldHVybiBmYWxzZTsKKyAgfQorfQorCitleHBvcnQgZnVuY3Rpb24gY3JlYXRlRnJhbWUo
b2JqZWN0KSB7CisgIGxldCBmcmFtZSA9IGV4dGVuZCh7fSwgb2JqZWN0KTsKKyAgZnJhbWUuX3Bh
cmVudCA9IG9iamVjdDsKKyAgcmV0dXJuIGZyYW1lOworfQorCitleHBvcnQgZnVuY3Rpb24gYmxv
Y2tQYXJhbXMocGFyYW1zLCBpZHMpIHsKKyAgcGFyYW1zLnBhdGggPSBpZHM7CisgIHJldHVybiBw
YXJhbXM7Cit9CisKK2V4cG9ydCBmdW5jdGlvbiBhcHBlbmRDb250ZXh0UGF0aChjb250ZXh0UGF0
aCwgaWQpIHsKKyAgcmV0dXJuIChjb250ZXh0UGF0aCA/IGNvbnRleHRQYXRoICsgJy4nIDogJycp
ICsgaWQ7Cit9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hh
bmRsZWJhcnMvbGliL2luZGV4LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9o
YW5kbGViYXJzL2xpYi9pbmRleC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMzgzYzAyZjc3MjYyZDIxYTVhY2I3
ZTEyMmRjZmU4M2E5NWM3NDQzCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5
L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2xpYi9pbmRleC5qcwpAQCAtMCwwICsxLDI1IEBACisv
LyBVU0FHRToKKy8vIHZhciBoYW5kbGViYXJzID0gcmVxdWlyZSgnaGFuZGxlYmFycycpOworLyog
ZXNsaW50LWRpc2FibGUgbm8tdmFyICovCisKKy8vIHZhciBsb2NhbCA9IGhhbmRsZWJhcnMuY3Jl
YXRlKCk7CisKK3ZhciBoYW5kbGViYXJzID0gcmVxdWlyZSgnLi4vZGlzdC9janMvaGFuZGxlYmFy
cycpWydkZWZhdWx0J107CisKK3ZhciBwcmludGVyID0gcmVxdWlyZSgnLi4vZGlzdC9janMvaGFu
ZGxlYmFycy9jb21waWxlci9wcmludGVyJyk7CitoYW5kbGViYXJzLlByaW50VmlzaXRvciA9IHBy
aW50ZXIuUHJpbnRWaXNpdG9yOworaGFuZGxlYmFycy5wcmludCA9IHByaW50ZXIucHJpbnQ7CisK
K21vZHVsZS5leHBvcnRzID0gaGFuZGxlYmFyczsKKworLy8gUHVibGlzaCBhIE5vZGUuanMgcmVx
dWlyZSgpIGhhbmRsZXIgZm9yIC5oYW5kbGViYXJzIGFuZCAuaGJzIGZpbGVzCitmdW5jdGlvbiBl
eHRlbnNpb24obW9kdWxlLCBmaWxlbmFtZSkgeworICB2YXIgZnMgPSByZXF1aXJlKCdmcycpOwor
ICB2YXIgdGVtcGxhdGVTdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoZmlsZW5hbWUsICd1dGY4Jyk7
CisgIG1vZHVsZS5leHBvcnRzID0gaGFuZGxlYmFycy5jb21waWxlKHRlbXBsYXRlU3RyaW5nKTsK
K30KKy8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovCitpZiAodHlwZW9mIHJlcXVpcmUgIT09ICd1
bmRlZmluZWQnICYmIHJlcXVpcmUuZXh0ZW5zaW9ucykgeworICByZXF1aXJlLmV4dGVuc2lvbnNb
Jy5oYW5kbGViYXJzJ10gPSBleHRlbnNpb247CisgIHJlcXVpcmUuZXh0ZW5zaW9uc1snLmhicydd
ID0gZXh0ZW5zaW9uOworfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9k
dWxlcy9oYW5kbGViYXJzL2xpYi9wcmVjb21waWxlci5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9u
b2RlX21vZHVsZXMvaGFuZGxlYmFycy9saWIvcHJlY29tcGlsZXIuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTIw
ZDE0MTlkOGYwYzg2NDY4NTUwNTYyNWQzYWI2MDk2NTM5YTY1ZgotLS0gL2Rldi9udWxsCisrKyBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9saWIvcHJlY29tcGls
ZXIuanMKQEAgLTAsMCArMSwyNzYgQEAKKy8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi8K
K2ltcG9ydCBBc3luYyBmcm9tICdhc3luYyc7CitpbXBvcnQgZnMgZnJvbSAnZnMnOworaW1wb3J0
ICogYXMgSGFuZGxlYmFycyBmcm9tICcuL2hhbmRsZWJhcnMnOworaW1wb3J0IHtiYXNlbmFtZX0g
ZnJvbSAncGF0aCc7CitpbXBvcnQge1NvdXJjZU1hcENvbnN1bWVyLCBTb3VyY2VOb2RlfSBmcm9t
ICdzb3VyY2UtbWFwJzsKK2ltcG9ydCB1Z2xpZnkgZnJvbSAndWdsaWZ5LWpzJzsKKworbW9kdWxl
LmV4cG9ydHMubG9hZFRlbXBsYXRlcyA9IGZ1bmN0aW9uKG9wdHMsIGNhbGxiYWNrKSB7CisgIGxv
YWRTdHJpbmdzKG9wdHMsIGZ1bmN0aW9uKGVyciwgc3RyaW5ncykgeworICAgIGlmIChlcnIpIHsK
KyAgICAgIGNhbGxiYWNrKGVycik7CisgICAgfSBlbHNlIHsKKyAgICAgIGxvYWRGaWxlcyhvcHRz
LCBmdW5jdGlvbihlcnIsIGZpbGVzKSB7CisgICAgICAgIGlmIChlcnIpIHsKKyAgICAgICAgICBj
YWxsYmFjayhlcnIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIG9wdHMudGVtcGxhdGVz
ID0gc3RyaW5ncy5jb25jYXQoZmlsZXMpOworICAgICAgICAgIGNhbGxiYWNrKHVuZGVmaW5lZCwg
b3B0cyk7CisgICAgICAgIH0KKyAgICAgIH0pOworICAgIH0KKyAgfSk7Cit9OworCitmdW5jdGlv
biBsb2FkU3RyaW5ncyhvcHRzLCBjYWxsYmFjaykgeworICBsZXQgc3RyaW5ncyA9IGFycmF5Q2Fz
dChvcHRzLnN0cmluZyksCisgICAgICBuYW1lcyA9IGFycmF5Q2FzdChvcHRzLm5hbWUpOworCisg
IGlmIChuYW1lcy5sZW5ndGggIT09IHN0cmluZ3MubGVuZ3RoCisgICAgICAmJiBzdHJpbmdzLmxl
bmd0aCA+IDEpIHsKKyAgICByZXR1cm4gY2FsbGJhY2sobmV3IEhhbmRsZWJhcnMuRXhjZXB0aW9u
KCdOdW1iZXIgb2YgbmFtZXMgZGlkIG5vdCBtYXRjaCB0aGUgbnVtYmVyIG9mIHN0cmluZyBpbnB1
dHMnKSk7CisgIH0KKworICBBc3luYy5tYXAoc3RyaW5ncywgZnVuY3Rpb24oc3RyaW5nLCBjYWxs
YmFjaykgeworICAgICAgaWYgKHN0cmluZyAhPT0gJy0nKSB7CisgICAgICAgIGNhbGxiYWNrKHVu
ZGVmaW5lZCwgc3RyaW5nKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIC8vIExvYWQgZnJvbSBz
dGRpbgorICAgICAgICBsZXQgYnVmZmVyID0gJyc7CisgICAgICAgIHByb2Nlc3Muc3RkaW4uc2V0
RW5jb2RpbmcoJ3V0ZjgnKTsKKworICAgICAgICBwcm9jZXNzLnN0ZGluLm9uKCdkYXRhJywgZnVu
Y3Rpb24oY2h1bmspIHsKKyAgICAgICAgICBidWZmZXIgKz0gY2h1bms7CisgICAgICAgIH0pOwor
ICAgICAgICBwcm9jZXNzLnN0ZGluLm9uKCdlbmQnLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICBj
YWxsYmFjayh1bmRlZmluZWQsIGJ1ZmZlcik7CisgICAgICAgIH0pOworICAgICAgfQorICAgIH0s
CisgICAgZnVuY3Rpb24oZXJyLCBzdHJpbmdzKSB7CisgICAgICBzdHJpbmdzID0gc3RyaW5ncy5t
YXAoKHN0cmluZywgaW5kZXgpID0+ICh7CisgICAgICAgIG5hbWU6IG5hbWVzW2luZGV4XSwKKyAg
ICAgICAgcGF0aDogbmFtZXNbaW5kZXhdLAorICAgICAgICBzb3VyY2U6IHN0cmluZworICAgICAg
fSkpOworICAgICAgY2FsbGJhY2soZXJyLCBzdHJpbmdzKTsKKyAgICB9KTsKK30KKworZnVuY3Rp
b24gbG9hZEZpbGVzKG9wdHMsIGNhbGxiYWNrKSB7CisgIC8vIEJ1aWxkIGZpbGUgZXh0ZW5zaW9u
IHBhdHRlcm4KKyAgbGV0IGV4dGVuc2lvbiA9IChvcHRzLmV4dGVuc2lvbiB8fCAnaGFuZGxlYmFy
cycpLnJlcGxhY2UoL1tcXF4kKis/LigpOj0hfHt9XC1cW1xdXS9nLCBmdW5jdGlvbihhcmcpIHsg
cmV0dXJuICdcXCcgKyBhcmc7IH0pOworICBleHRlbnNpb24gPSBuZXcgUmVnRXhwKCdcXC4nICsg
ZXh0ZW5zaW9uICsgJyQnKTsKKworICBsZXQgcmV0ID0gW10sCisgICAgICBxdWV1ZSA9IChvcHRz
LmZpbGVzIHx8IFtdKS5tYXAoKHRlbXBsYXRlKSA9PiAoe3RlbXBsYXRlLCByb290OiBvcHRzLnJv
b3R9KSk7CisgIEFzeW5jLndoaWxzdCgoKSA9PiBxdWV1ZS5sZW5ndGgsIGZ1bmN0aW9uKGNhbGxi
YWNrKSB7CisgICAgbGV0IHt0ZW1wbGF0ZTogcGF0aCwgcm9vdH0gPSBxdWV1ZS5zaGlmdCgpOwor
CisgICAgZnMuc3RhdChwYXRoLCBmdW5jdGlvbihlcnIsIHN0YXQpIHsKKyAgICAgIGlmIChlcnIp
IHsKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG5ldyBIYW5kbGViYXJzLkV4Y2VwdGlvbihgVW5h
YmxlIHRvIG9wZW4gdGVtcGxhdGUgZmlsZSAiJHtwYXRofSJgKSk7CisgICAgICB9CisKKyAgICAg
IGlmIChzdGF0LmlzRGlyZWN0b3J5KCkpIHsKKyAgICAgICAgb3B0cy5oYXNEaXJlY3RvcnkgPSB0
cnVlOworCisgICAgICAgIGZzLnJlYWRkaXIocGF0aCwgZnVuY3Rpb24oZXJyLCBjaGlsZHJlbikg
eworICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0IDogUmFjZSBjb25kaXRpb24gdGhh
dCBiZWluZyB0b28gbGF6eSB0byB0ZXN0ICovCisgICAgICAgICAgaWYgKGVycikgeworICAgICAg
ICAgICAgcmV0dXJuIGNhbGxiYWNrKGVycik7CisgICAgICAgICAgfQorICAgICAgICAgIGNoaWxk
cmVuLmZvckVhY2goZnVuY3Rpb24oZmlsZSkgeworICAgICAgICAgICAgbGV0IGNoaWxkUGF0aCA9
IHBhdGggKyAnLycgKyBmaWxlOworCisgICAgICAgICAgICBpZiAoZXh0ZW5zaW9uLnRlc3QoY2hp
bGRQYXRoKSB8fCBmcy5zdGF0U3luYyhjaGlsZFBhdGgpLmlzRGlyZWN0b3J5KCkpIHsKKyAgICAg
ICAgICAgICAgcXVldWUucHVzaCh7dGVtcGxhdGU6IGNoaWxkUGF0aCwgcm9vdDogcm9vdCB8fCBw
YXRofSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgfSk7CisKKyAgICAgICAgICBjYWxsYmFj
aygpOworICAgICAgICB9KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGZzLnJlYWRGaWxlKHBh
dGgsICd1dGY4JywgZnVuY3Rpb24oZXJyLCBkYXRhKSB7CisgICAgICAgICAgLyogaXN0YW5idWwg
aWdub3JlIG5leHQgOiBSYWNlIGNvbmRpdGlvbiB0aGF0IGJlaW5nIHRvbyBsYXp5IHRvIHRlc3Qg
Ki8KKyAgICAgICAgICBpZiAoZXJyKSB7CisgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soZXJy
KTsKKyAgICAgICAgICB9CisKKyAgICAgICAgICBpZiAob3B0cy5ib20gJiYgZGF0YS5pbmRleE9m
KCdcdUZFRkYnKSA9PT0gMCkgeworICAgICAgICAgICAgZGF0YSA9IGRhdGEuc3Vic3RyaW5nKDEp
OworICAgICAgICAgIH0KKworICAgICAgICAgIC8vIENsZWFuIHRoZSB0ZW1wbGF0ZSBuYW1lCisg
ICAgICAgICAgbGV0IG5hbWUgPSBwYXRoOworICAgICAgICAgIGlmICghcm9vdCkgeworICAgICAg
ICAgICAgbmFtZSA9IGJhc2VuYW1lKG5hbWUpOworICAgICAgICAgIH0gZWxzZSBpZiAobmFtZS5p
bmRleE9mKHJvb3QpID09PSAwKSB7CisgICAgICAgICAgICBuYW1lID0gbmFtZS5zdWJzdHJpbmco
cm9vdC5sZW5ndGggKyAxKTsKKyAgICAgICAgICB9CisgICAgICAgICAgbmFtZSA9IG5hbWUucmVw
bGFjZShleHRlbnNpb24sICcnKTsKKworICAgICAgICAgIHJldC5wdXNoKHsKKyAgICAgICAgICAg
IHBhdGg6IHBhdGgsCisgICAgICAgICAgICBuYW1lOiBuYW1lLAorICAgICAgICAgICAgc291cmNl
OiBkYXRhCisgICAgICAgICAgfSk7CisKKyAgICAgICAgICBjYWxsYmFjaygpOworICAgICAgICB9
KTsKKyAgICAgIH0KKyAgICB9KTsKKyAgfSwKKyAgZnVuY3Rpb24oZXJyKSB7CisgICAgaWYgKGVy
cikgeworICAgICAgY2FsbGJhY2soZXJyKTsKKyAgICB9IGVsc2UgeworICAgICAgY2FsbGJhY2so
dW5kZWZpbmVkLCByZXQpOworICAgIH0KKyAgfSk7Cit9CisKK21vZHVsZS5leHBvcnRzLmNsaSA9
IGZ1bmN0aW9uKG9wdHMpIHsKKyAgaWYgKG9wdHMudmVyc2lvbikgeworICAgIGNvbnNvbGUubG9n
KEhhbmRsZWJhcnMuVkVSU0lPTik7CisgICAgcmV0dXJuOworICB9CisKKyAgaWYgKCFvcHRzLnRl
bXBsYXRlcy5sZW5ndGggJiYgIW9wdHMuaGFzRGlyZWN0b3J5KSB7CisgICAgdGhyb3cgbmV3IEhh
bmRsZWJhcnMuRXhjZXB0aW9uKCdNdXN0IGRlZmluZSBhdCBsZWFzdCBvbmUgdGVtcGxhdGUgb3Ig
ZGlyZWN0b3J5LicpOworICB9CisKKyAgaWYgKG9wdHMuc2ltcGxlICYmIG9wdHMubWluKSB7Cisg
ICAgdGhyb3cgbmV3IEhhbmRsZWJhcnMuRXhjZXB0aW9uKCdVbmFibGUgdG8gbWluaW1pemUgc2lt
cGxlIG91dHB1dCcpOworICB9CisKKyAgY29uc3QgbXVsdGlwbGUgPSBvcHRzLnRlbXBsYXRlcy5s
ZW5ndGggIT09IDEgfHwgb3B0cy5oYXNEaXJlY3Rvcnk7CisgIGlmIChvcHRzLnNpbXBsZSAmJiBt
dWx0aXBsZSkgeworICAgIHRocm93IG5ldyBIYW5kbGViYXJzLkV4Y2VwdGlvbignVW5hYmxlIHRv
IG91dHB1dCBtdWx0aXBsZSB0ZW1wbGF0ZXMgaW4gc2ltcGxlIG1vZGUnKTsKKyAgfQorCisgIC8v
IEZvcmNlIHNpbXBsZSBtb2RlIGlmIHdlIGhhdmUgb25seSBvbmUgdGVtcGxhdGUgYW5kIGl0J3Mg
dW5uYW1lZC4KKyAgaWYgKCFvcHRzLmFtZCAmJiAhb3B0cy5jb21tb25qcyAmJiBvcHRzLnRlbXBs
YXRlcy5sZW5ndGggPT09IDEKKyAgICAgICYmICFvcHRzLnRlbXBsYXRlc1swXS5uYW1lKSB7Cisg
ICAgb3B0cy5zaW1wbGUgPSB0cnVlOworICB9CisKKyAgLy8gQ29udmVydCB0aGUga25vd24gbGlz
dCBpbnRvIGEgaGFzaAorICBsZXQga25vd24gPSB7fTsKKyAgaWYgKG9wdHMua25vd24gJiYgIUFy
cmF5LmlzQXJyYXkob3B0cy5rbm93bikpIHsKKyAgICBvcHRzLmtub3duID0gW29wdHMua25vd25d
OworICB9CisgIGlmIChvcHRzLmtub3duKSB7CisgICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IG9w
dHMua25vd24ubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgIGtub3duW29wdHMua25vd25b
aV1dID0gdHJ1ZTsKKyAgICB9CisgIH0KKworICBjb25zdCBvYmplY3ROYW1lID0gb3B0cy5wYXJ0
aWFsID8gJ0hhbmRsZWJhcnMucGFydGlhbHMnIDogJ3RlbXBsYXRlcyc7CisKKyAgbGV0IG91dHB1
dCA9IG5ldyBTb3VyY2VOb2RlKCk7CisgIGlmICghb3B0cy5zaW1wbGUpIHsKKyAgICBpZiAob3B0
cy5hbWQpIHsKKyAgICAgIG91dHB1dC5hZGQoJ2RlZmluZShbXCcnICsgb3B0cy5oYW5kbGViYXJQ
YXRoICsgJ2hhbmRsZWJhcnMucnVudGltZVwnXSwgZnVuY3Rpb24oSGFuZGxlYmFycykge1xuICBI
YW5kbGViYXJzID0gSGFuZGxlYmFyc1siZGVmYXVsdCJdOycpOworICAgIH0gZWxzZSBpZiAob3B0
cy5jb21tb25qcykgeworICAgICAgb3V0cHV0LmFkZCgndmFyIEhhbmRsZWJhcnMgPSByZXF1aXJl
KCInICsgb3B0cy5jb21tb25qcyArICciKTsnKTsKKyAgICB9IGVsc2UgeworICAgICAgb3V0cHV0
LmFkZCgnKGZ1bmN0aW9uKCkge1xuJyk7CisgICAgfQorICAgIG91dHB1dC5hZGQoJyAgdmFyIHRl
bXBsYXRlID0gSGFuZGxlYmFycy50ZW1wbGF0ZSwgdGVtcGxhdGVzID0gJyk7CisgICAgaWYgKG9w
dHMubmFtZXNwYWNlKSB7CisgICAgICBvdXRwdXQuYWRkKG9wdHMubmFtZXNwYWNlKTsKKyAgICAg
IG91dHB1dC5hZGQoJyA9ICcpOworICAgICAgb3V0cHV0LmFkZChvcHRzLm5hbWVzcGFjZSk7Cisg
ICAgICBvdXRwdXQuYWRkKCcgfHwgJyk7CisgICAgfQorICAgIG91dHB1dC5hZGQoJ3t9O1xuJyk7
CisgIH0KKworICBvcHRzLnRlbXBsYXRlcy5mb3JFYWNoKGZ1bmN0aW9uKHRlbXBsYXRlKSB7Cisg
ICAgbGV0IG9wdGlvbnMgPSB7CisgICAgICBrbm93bkhlbHBlcnM6IGtub3duLAorICAgICAga25v
d25IZWxwZXJzT25seTogb3B0cy5vCisgICAgfTsKKworICAgIGlmIChvcHRzLm1hcCkgeworICAg
ICAgb3B0aW9ucy5zcmNOYW1lID0gdGVtcGxhdGUucGF0aDsKKyAgICB9CisgICAgaWYgKG9wdHMu
ZGF0YSkgeworICAgICAgb3B0aW9ucy5kYXRhID0gdHJ1ZTsKKyAgICB9CisKKyAgICBsZXQgcHJl
Y29tcGlsZWQgPSBIYW5kbGViYXJzLnByZWNvbXBpbGUodGVtcGxhdGUuc291cmNlLCBvcHRpb25z
KTsKKworICAgIC8vIElmIHdlIGFyZSBnZW5lcmF0aW5nIGEgc291cmNlIG1hcCwgd2UgaGF2ZSB0
byByZWNvbnN0cnVjdCB0aGUgU291cmNlTm9kZSBvYmplY3QKKyAgICBpZiAob3B0cy5tYXApIHsK
KyAgICAgIGxldCBjb25zdW1lciA9IG5ldyBTb3VyY2VNYXBDb25zdW1lcihwcmVjb21waWxlZC5t
YXApOworICAgICAgcHJlY29tcGlsZWQgPSBTb3VyY2VOb2RlLmZyb21TdHJpbmdXaXRoU291cmNl
TWFwKHByZWNvbXBpbGVkLmNvZGUsIGNvbnN1bWVyKTsKKyAgICB9CisKKyAgICBpZiAob3B0cy5z
aW1wbGUpIHsKKyAgICAgIG91dHB1dC5hZGQoW3ByZWNvbXBpbGVkLCAnXG4nXSk7CisgICAgfSBl
bHNlIHsKKyAgICAgIGlmICghdGVtcGxhdGUubmFtZSkgeworICAgICAgICB0aHJvdyBuZXcgSGFu
ZGxlYmFycy5FeGNlcHRpb24oJ05hbWUgbWlzc2luZyBmb3IgdGVtcGxhdGUnKTsKKyAgICAgIH0K
KworICAgICAgaWYgKG9wdHMuYW1kICYmICFtdWx0aXBsZSkgeworICAgICAgICBvdXRwdXQuYWRk
KCdyZXR1cm4gJyk7CisgICAgICB9CisgICAgICBvdXRwdXQuYWRkKFtvYmplY3ROYW1lLCAnW1wn
JywgdGVtcGxhdGUubmFtZSwgJ1wnXSA9IHRlbXBsYXRlKCcsIHByZWNvbXBpbGVkLCAnKTtcbidd
KTsKKyAgICB9CisgIH0pOworCisgIC8vIE91dHB1dCB0aGUgY29udGVudAorICBpZiAoIW9wdHMu
c2ltcGxlKSB7CisgICAgaWYgKG9wdHMuYW1kKSB7CisgICAgICBpZiAobXVsdGlwbGUpIHsKKyAg
ICAgICAgb3V0cHV0LmFkZChbJ3JldHVybiAnLCBvYmplY3ROYW1lLCAnO1xuJ10pOworICAgICAg
fQorICAgICAgb3V0cHV0LmFkZCgnfSk7Jyk7CisgICAgfSBlbHNlIGlmICghb3B0cy5jb21tb25q
cykgeworICAgICAgb3V0cHV0LmFkZCgnfSkoKTsnKTsKKyAgICB9CisgIH0KKworCisgIGlmIChv
cHRzLm1hcCkgeworICAgIG91dHB1dC5hZGQoJ1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9JyArIG9w
dHMubWFwICsgJ1xuJyk7CisgIH0KKworICBvdXRwdXQgPSBvdXRwdXQudG9TdHJpbmdXaXRoU291
cmNlTWFwKCk7CisgIG91dHB1dC5tYXAgPSBvdXRwdXQubWFwICsgJyc7CisKKyAgaWYgKG9wdHMu
bWluKSB7CisgICAgb3V0cHV0ID0gdWdsaWZ5Lm1pbmlmeShvdXRwdXQuY29kZSwgeworICAgICAg
ZnJvbVN0cmluZzogdHJ1ZSwKKworICAgICAgb3V0U291cmNlTWFwOiBvcHRzLm1hcCwKKyAgICAg
IGluU291cmNlTWFwOiBKU09OLnBhcnNlKG91dHB1dC5tYXApCisgICAgfSk7CisgICAgaWYgKG9w
dHMubWFwKSB7CisgICAgICBvdXRwdXQuY29kZSArPSAnXG4vLyMgc291cmNlTWFwcGluZ1VSTD0n
ICsgb3B0cy5tYXAgKyAnXG4nOworICAgIH0KKyAgfQorCisgIGlmIChvcHRzLm1hcCkgeworICAg
IGZzLndyaXRlRmlsZVN5bmMob3B0cy5tYXAsIG91dHB1dC5tYXAsICd1dGY4Jyk7CisgIH0KKyAg
b3V0cHV0ID0gb3V0cHV0LmNvZGU7CisKKyAgaWYgKG9wdHMub3V0cHV0KSB7CisgICAgZnMud3Jp
dGVGaWxlU3luYyhvcHRzLm91dHB1dCwgb3V0cHV0LCAndXRmOCcpOworICB9IGVsc2UgeworICAg
IGNvbnNvbGUubG9nKG91dHB1dCk7CisgIH0KK307CisKK2Z1bmN0aW9uIGFycmF5Q2FzdCh2YWx1
ZSkgeworICB2YWx1ZSA9IHZhbHVlICE9IG51bGwgPyB2YWx1ZSA6IFtdOworICBpZiAoIUFycmF5
LmlzQXJyYXkodmFsdWUpKSB7CisgICAgdmFsdWUgPSBbdmFsdWVdOworICB9CisgIHJldHVybiB2
YWx1ZTsKK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFu
ZGxlYmFycy9wYWNrYWdlLmpzb24gYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hh
bmRsZWJhcnMvcGFja2FnZS5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc2YTRlNmQ2ZjllYzVhYjQ4YjZkNjhi
ZTUyMjlhNDI5MzdjZjFlOWUKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkv
bm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvcGFja2FnZS5qc29uCkBAIC0wLDAgKzEsMTU0IEBACit7
CisgICJfYXJncyI6IFsKKyAgICBbCisgICAgICB7CisgICAgICAgICJyYXciOiAiaGFuZGxlYmFy
c0A0LjAuNiIsCisgICAgICAgICJzY29wZSI6IG51bGwsCisgICAgICAgICJlc2NhcGVkTmFtZSI6
ICJoYW5kbGViYXJzIiwKKyAgICAgICAgIm5hbWUiOiAiaGFuZGxlYmFycyIsCisgICAgICAgICJy
YXdTcGVjIjogIjQuMC42IiwKKyAgICAgICAgInNwZWMiOiAiNC4wLjYiLAorICAgICAgICAidHlw
ZSI6ICJ2ZXJzaW9uIgorICAgICAgfSwKKyAgICAgICIvVXNlcnMvYWRkeW8vcHJvamVjdHMvc3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeSIK
KyAgICBdCisgIF0sCisgICJfZnJvbSI6ICJoYW5kbGViYXJzQDQuMC42IiwKKyAgIl9pZCI6ICJo
YW5kbGViYXJzQDQuMC42IiwKKyAgIl9pbkNhY2hlIjogdHJ1ZSwKKyAgIl9sb2NhdGlvbiI6ICIv
aGFuZGxlYmFycyIsCisgICJfbm9kZVZlcnNpb24iOiAiNC42LjEiLAorICAiX25wbU9wZXJhdGlv
bmFsSW50ZXJuYWwiOiB7CisgICAgImhvc3QiOiAicGFja2FnZXMtMTgtZWFzdC5pbnRlcm5hbC5u
cG1qcy5jb20iLAorICAgICJ0bXAiOiAidG1wL2hhbmRsZWJhcnMtNC4wLjYudGd6XzE0NzkwMDA0
NjMzMDRfMC45MTYzNDE2MDM1MDA3Njg1IgorICB9LAorICAiX25wbVVzZXIiOiB7CisgICAgIm5h
bWUiOiAibGF3bnNlYSIsCisgICAgImVtYWlsIjogImxhd25zZWFAZ21haWwuY29tIgorICB9LAor
ICAiX25wbVZlcnNpb24iOiAiMi4xNS45IiwKKyAgIl9waGFudG9tQ2hpbGRyZW4iOiB7fSwKKyAg
Il9yZXF1ZXN0ZWQiOiB7CisgICAgInJhdyI6ICJoYW5kbGViYXJzQDQuMC42IiwKKyAgICAic2Nv
cGUiOiBudWxsLAorICAgICJlc2NhcGVkTmFtZSI6ICJoYW5kbGViYXJzIiwKKyAgICAibmFtZSI6
ICJoYW5kbGViYXJzIiwKKyAgICAicmF3U3BlYyI6ICI0LjAuNiIsCisgICAgInNwZWMiOiAiNC4w
LjYiLAorICAgICJ0eXBlIjogInZlcnNpb24iCisgIH0sCisgICJfcmVxdWlyZWRCeSI6IFsKKyAg
ICAiI1VTRVIiLAorICAgICIvIgorICBdLAorICAiX3Jlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL2hhbmRsZWJhcnMvLS9oYW5kbGViYXJzLTQuMC42LnRneiIsCisgICJfc2hh
c3VtIjogIjJjZTQ0ODQ4NTA1MzdmOWM5N2E4MDI2ZDUzOTliOTM1YzRlZDRlZDciLAorICAiX3No
cmlua3dyYXAiOiBudWxsLAorICAiX3NwZWMiOiAiaGFuZGxlYmFyc0A0LjAuNiIsCisgICJfd2hl
cmUiOiAiL1VzZXJzL2FkZHlvL3Byb2plY3RzL3NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkiLAorICAiYXV0aG9yIjogeworICAgICJuYW1l
IjogIlllaHVkYSBLYXR6IgorICB9LAorICAiYmFyZW5hbWUiOiAiaGFuZGxlYmFycyIsCisgICJi
aW4iOiB7CisgICAgImhhbmRsZWJhcnMiOiAiYmluL2hhbmRsZWJhcnMiCisgIH0sCisgICJidWdz
IjogeworICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3d5Y2F0cy9oYW5kbGViYXJzLmpz
L2lzc3VlcyIKKyAgfSwKKyAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAiYXN5bmMiOiAiXjEuNC4w
IiwKKyAgICAib3B0aW1pc3QiOiAiXjAuNi4xIiwKKyAgICAic291cmNlLW1hcCI6ICJeMC40LjQi
LAorICAgICJ1Z2xpZnktanMiOiAiXjIuNiIKKyAgfSwKKyAgImRlc2NyaXB0aW9uIjogIkhhbmRs
ZWJhcnMgcHJvdmlkZXMgdGhlIHBvd2VyIG5lY2Vzc2FyeSB0byBsZXQgeW91IGJ1aWxkIHNlbWFu
dGljIHRlbXBsYXRlcyBlZmZlY3RpdmVseSB3aXRoIG5vIGZydXN0cmF0aW9uIiwKKyAgImRldkRl
cGVuZGVuY2llcyI6IHsKKyAgICAiYXdzLXNkayI6ICJeMi4xLjQ5IiwKKyAgICAiYmFiZWwtbG9h
ZGVyIjogIl41LjAuMCIsCisgICAgImJhYmVsLXJ1bnRpbWUiOiAiXjUuMS4xMCIsCisgICAgImJl
bmNobWFyayI6ICJ+MS4wIiwKKyAgICAiZHVzdGpzLWxpbmtlZGluIjogIl4yLjAuMiIsCisgICAg
ImVjbyI6ICJ+MS4xLjAtcmMtMyIsCisgICAgImdydW50IjogIn4wLjQuMSIsCisgICAgImdydW50
LWJhYmVsIjogIl41LjAuMCIsCisgICAgImdydW50LWNsaSI6ICJ+MC4xLjEwIiwKKyAgICAiZ3J1
bnQtY29udHJpYi1jbGVhbiI6ICIwLngiLAorICAgICJncnVudC1jb250cmliLWNvbmNhdCI6ICIw
LngiLAorICAgICJncnVudC1jb250cmliLWNvbm5lY3QiOiAiMC54IiwKKyAgICAiZ3J1bnQtY29u
dHJpYi1jb3B5IjogIjAueCIsCisgICAgImdydW50LWNvbnRyaWItcmVxdWlyZWpzIjogIjAueCIs
CisgICAgImdydW50LWNvbnRyaWItdWdsaWZ5IjogIjAueCIsCisgICAgImdydW50LWNvbnRyaWIt
d2F0Y2giOiAiMC54IiwKKyAgICAiZ3J1bnQtZXNsaW50IjogIl4xNy4xLjAiLAorICAgICJncnVu
dC1zYXVjZWxhYnMiOiAiOC54IiwKKyAgICAiZ3J1bnQtd2VicGFjayI6ICJeMS4wLjgiLAorICAg
ICJpc3RhbmJ1bCI6ICJeMC4zLjAiLAorICAgICJqaXNvbiI6ICJ+MC4zLjAiLAorICAgICJtb2No
YSI6ICJ+MS4yMC4wIiwKKyAgICAibW9jay1zdGRpbiI6ICJeMC4zLjAiLAorICAgICJtdXN0YWNo
ZSI6ICJeMi4xLjMiLAorICAgICJzZW12ZXIiOiAiXjUuMC4xIiwKKyAgICAidW5kZXJzY29yZSI6
ICJeMS41LjEiLAorICAgICJ3ZWJwYWNrIjogIl4xLjEyLjYiLAorICAgICJ3ZWJwYWNrLWRldi1z
ZXJ2ZXIiOiAiXjEuMTIuMSIKKyAgfSwKKyAgImRpcmVjdG9yaWVzIjoge30sCisgICJkaXN0Ijog
eworICAgICJzaGFzdW0iOiAiMmNlNDQ4NDg1MDUzN2Y5Yzk3YTgwMjZkNTM5OWI5MzVjNGVkNGVk
NyIsCisgICAgInRhcmJhbGwiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaGFuZGxlYmFy
cy8tL2hhbmRsZWJhcnMtNC4wLjYudGd6IgorICB9LAorICAiZW5naW5lcyI6IHsKKyAgICAibm9k
ZSI6ICI+PTAuNC43IgorICB9LAorICAiZ2l0SGVhZCI6ICJhZDMwMzdjZjU0MTMyZmM1ZjU4OTEz
NGQzYmVmOTYxYTVmNzUxOTczIiwKKyAgImhvbWVwYWdlIjogImh0dHA6Ly93d3cuaGFuZGxlYmFy
c2pzLmNvbS8iLAorICAianNwbSI6IHsKKyAgICAibWFpbiI6ICJoYW5kbGViYXJzIiwKKyAgICAi
ZGlyZWN0b3JpZXMiOiB7CisgICAgICAibGliIjogImRpc3QvYW1kIgorICAgIH0sCisgICAgImJ1
aWxkQ29uZmlnIjogeworICAgICAgIm1pbmlmeSI6IHRydWUKKyAgICB9CisgIH0sCisgICJrZXl3
b3JkcyI6IFsKKyAgICAiaGFuZGxlYmFycyIsCisgICAgIm11c3RhY2hlIiwKKyAgICAidGVtcGxh
dGUiLAorICAgICJodG1sIgorICBdLAorICAibGljZW5zZSI6ICJNSVQiLAorICAibWFpbiI6ICJs
aWIvaW5kZXguanMiLAorICAibWFpbnRhaW5lcnMiOiBbCisgICAgeworICAgICAgIm5hbWUiOiAi
ZXJpc2RzIiwKKyAgICAgICJlbWFpbCI6ICJlcmlzZHNAZ21haWwuY29tIgorICAgIH0sCisgICAg
eworICAgICAgIm5hbWUiOiAia3BkZWNrZXIiLAorICAgICAgImVtYWlsIjogImtwZGVja2VyQGdt
YWlsLmNvbSIKKyAgICB9LAorICAgIHsKKyAgICAgICJuYW1lIjogImxhd25zZWEiLAorICAgICAg
ImVtYWlsIjogImxhd25zZWFAZ21haWwuY29tIgorICAgIH0sCisgICAgeworICAgICAgIm5hbWUi
OiAid3ljYXRzIiwKKyAgICAgICJlbWFpbCI6ICJ3eWNhdHNAZ21haWwuY29tIgorICAgIH0KKyAg
XSwKKyAgIm5hbWUiOiAiaGFuZGxlYmFycyIsCisgICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsK
KyAgICAidWdsaWZ5LWpzIjogIl4yLjYiCisgIH0sCisgICJyZWFkbWUiOiAiRVJST1I6IE5vIFJF
QURNRSBkYXRhIGZvdW5kISIsCisgICJyZXBvc2l0b3J5IjogeworICAgICJ0eXBlIjogImdpdCIs
CisgICAgInVybCI6ICJnaXQraHR0cHM6Ly9naXRodWIuY29tL3d5Y2F0cy9oYW5kbGViYXJzLmpz
LmdpdCIKKyAgfSwKKyAgInNjcmlwdHMiOiB7CisgICAgInRlc3QiOiAiZ3J1bnQiCisgIH0sCisg
ICJ2ZXJzaW9uIjogIjQuMC42IgorfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25v
ZGVfbW9kdWxlcy9oYW5kbGViYXJzL3ByaW50LXNjcmlwdCBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9u
b2RlX21vZHVsZXMvaGFuZGxlYmFycy9wcmludC1zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA3NTUK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDQ2Yjk5YzE3
ZGZhOGNlYmRiZjEyNzA5M2ZlNDZlNzhmM2ZmMWFkZgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9wcmludC1zY3JpcHQKQEAgLTAs
MCArMSw5NSBAQAorIyEgL3Vzci9iaW4vZW52IG5vZGUKKy8qIGVzbGludC1kaXNhYmxlIG5vLWNv
bnNvbGUsIG5vLXZhciAqLworLy8gVXRpbCBzY3JpcHQgZm9yIGRlYnVnZ2luZyBzb3VyY2UgY29k
ZSBnZW5lcmF0aW9uIGlzc3VlcworCit2YXIgc2NyaXB0ID0gcHJvY2Vzcy5hcmd2WzJdLnJlcGxh
Y2UoL1xcbi9nLCAnXG4nKSwKKyAgICB2ZXJib3NlID0gcHJvY2Vzcy5hcmd2WzNdID09PSAnLXYn
OworCit2YXIgSGFuZGxlYmFycyA9IHJlcXVpcmUoJy4vbGliJyksCisgICAgU291cmNlTWFwID0g
cmVxdWlyZSgnc291cmNlLW1hcCcpLAorICAgICAgU291cmNlTWFwQ29uc3VtZXIgPSBTb3VyY2VN
YXAuU291cmNlTWFwQ29uc3VtZXI7CisKK3ZhciB0ZW1wbGF0ZSA9IEhhbmRsZWJhcnMucHJlY29t
cGlsZShzY3JpcHQsIHsKKyAgICAgIHNyY05hbWU6ICdpbnB1dC5oYnMnLAorICAgICAgZGVzdE5h
bWU6ICdvdXRwdXQuanMnLAorCisgICAgICBhc3N1bWVPYmplY3RzOiB0cnVlLAorICAgICAgY29t
cGF0OiBmYWxzZSwKKyAgICAgIHN0cmljdDogdHJ1ZSwKKyAgICAgIHRyYWNrSWRzOiB0cnVlLAor
ICAgICAga25vd25IZWxwZXJzT25seTogZmFsc2UKKyAgICB9KTsKKworaWYgKCF2ZXJib3NlKSB7
CisgIGNvbnNvbGUubG9nKHRlbXBsYXRlKTsKK30gZWxzZSB7CisgIHZhciBjb25zdW1lciA9IG5l
dyBTb3VyY2VNYXBDb25zdW1lcih0ZW1wbGF0ZS5tYXApLAorICAgICAgbGluZXMgPSB0ZW1wbGF0
ZS5jb2RlLnNwbGl0KCdcbicpLAorICAgICAgc3JjTGluZXMgPSBzY3JpcHQuc3BsaXQoJ1xuJyk7
CisKKyAgY29uc29sZS5sb2coKTsKKyAgY29uc29sZS5sb2coJ1NvdXJjZTonKTsKKyAgc3JjTGlu
ZXMuZm9yRWFjaChmdW5jdGlvbihzb3VyY2UsIGluZGV4KSB7CisgICAgY29uc29sZS5sb2coaW5k
ZXggKyAxLCBzb3VyY2UpOworICB9KTsKKyAgY29uc29sZS5sb2coKTsKKyAgY29uc29sZS5sb2co
J0dlbmVyYXRlZDonKTsKKyAgY29uc29sZS5sb2codGVtcGxhdGUuY29kZSk7CisgIGxpbmVzLmZv
ckVhY2goZnVuY3Rpb24oc291cmNlLCBpbmRleCkgeworICAgIGNvbnNvbGUubG9nKGluZGV4ICsg
MSwgc291cmNlKTsKKyAgfSk7CisgIGNvbnNvbGUubG9nKCk7CisgIGNvbnNvbGUubG9nKCdNYXA6
Jyk7CisgIGNvbnNvbGUubG9nKHRlbXBsYXRlLm1hcCk7CisgIGNvbnNvbGUubG9nKCk7CisKKyAg
ZnVuY3Rpb24gY29sbGVjdFNvdXJjZShsaW5lcywgbGluZU5hbWUsIGNvbE5hbWUsIG9yZGVyKSB7
CisgICAgdmFyIHJldCA9IHt9LAorICAgICAgICBvcmRlcmVkID0gW10sCisgICAgICAgIGxhc3Q7
CisKKyAgICBmdW5jdGlvbiBjb2xsZWN0KGN1cnJlbnQpIHsKKyAgICAgIGlmIChsYXN0KSB7Cisg
ICAgICAgIHZhciBtYXBMaW5lcyA9IGxpbmVzLnNsaWNlKGxhc3RbbGluZU5hbWVdIC0gMSwgY3Vy
cmVudCAmJiBjdXJyZW50W2xpbmVOYW1lXSk7CisgICAgICAgIGlmIChtYXBMaW5lcy5sZW5ndGgp
IHsKKyAgICAgICAgICBpZiAoY3VycmVudCkgeworICAgICAgICAgICAgbWFwTGluZXNbbWFwTGlu
ZXMubGVuZ3RoIC0gMV0gPSBtYXBMaW5lc1ttYXBMaW5lcy5sZW5ndGggLSAxXS5zbGljZSgwLCBj
dXJyZW50W2NvbE5hbWVdKTsKKyAgICAgICAgICB9CisgICAgICAgICAgbWFwTGluZXNbMF0gPSBt
YXBMaW5lc1swXS5zbGljZShsYXN0W2NvbE5hbWVdKTsKKyAgICAgICAgfQorICAgICAgICByZXRb
bGFzdFtsaW5lTmFtZV0gKyAnOicgKyBsYXN0W2NvbE5hbWVdXSA9IG1hcExpbmVzLmpvaW4oJ1xu
Jyk7CisgICAgICAgIG9yZGVyZWQucHVzaCh7CisgICAgICAgICAgc3RhcnRMaW5lOiBsYXN0W2xp
bmVOYW1lXSwKKyAgICAgICAgICBzdGFydENvbDogbGFzdFtjb2xOYW1lXSwKKyAgICAgICAgICBl
bmRMaW5lOiBjdXJyZW50ICYmIGN1cnJlbnRbbGluZU5hbWVdCisgICAgICAgIH0pOworICAgICAg
fQorICAgICAgbGFzdCA9IGN1cnJlbnQ7CisgICAgfQorCisgICAgY29uc3VtZXIuZWFjaE1hcHBp
bmcoY29sbGVjdCwgdW5kZWZpbmVkLCBvcmRlcik7CisgICAgY29sbGVjdCgpOworCisgICAgcmV0
dXJuIHJldDsKKyAgfQorCisgIHNyY0xpbmVzID0gY29sbGVjdFNvdXJjZShzcmNMaW5lcywgJ29y
aWdpbmFsTGluZScsICdvcmlnaW5hbENvbHVtbicsIFNvdXJjZU1hcENvbnN1bWVyLk9SSUdJTkFM
X09SREVSKTsKKyAgbGluZXMgPSBjb2xsZWN0U291cmNlKGxpbmVzLCAnZ2VuZXJhdGVkTGluZScs
ICdnZW5lcmF0ZWRDb2x1bW4nKTsKKworICBjb25zdW1lci5lYWNoTWFwcGluZyhmdW5jdGlvbiht
YXBwaW5nKSB7CisgICAgdmFyIG9yaWdpbmFsU3JjID0gc3JjTGluZXNbbWFwcGluZy5vcmlnaW5h
bExpbmUgKyAnOicgKyBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uXSwKKyAgICAgICAgZ2VuZXJhdGVk
U3JjID0gbGluZXNbbWFwcGluZy5nZW5lcmF0ZWRMaW5lICsgJzonICsgbWFwcGluZy5nZW5lcmF0
ZWRDb2x1bW5dOworCisgICAgaWYgKCFtYXBwaW5nLm9yaWdpbmFsTGluZSkgeworICAgICAgY29u
c29sZS5sb2coJ2dlbmVyYXRlZCcsIG1hcHBpbmcuZ2VuZXJhdGVkTGluZSArICc6JyArIG1hcHBp
bmcuZ2VuZXJhdGVkQ29sdW1uLCBnZW5lcmF0ZWRTcmMpOworICAgIH0gZWxzZSB7CisgICAgICBj
b25zb2xlLmxvZygnbWFwJywKKyAgICAgICAgICBtYXBwaW5nLnNvdXJjZSwKKyAgICAgICAgICBt
YXBwaW5nLm9yaWdpbmFsTGluZSArICc6JyArIG1hcHBpbmcub3JpZ2luYWxDb2x1bW4sCisgICAg
ICAgICAgb3JpZ2luYWxTcmMsCisgICAgICAgICAgJy0+JywKKyAgICAgICAgICBtYXBwaW5nLmdl
bmVyYXRlZExpbmUgKyAnOicgKyBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbiwKKyAgICAgICAgICBn
ZW5lcmF0ZWRTcmMpOworICAgIH0KKyAgfSk7Cit9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9q
cXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvcmVsZWFzZS1ub3Rlcy5tZCBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvaGFuZGxlYmFycy9yZWxlYXNlLW5vdGVzLm1kCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjhiMDczZDUyMGVhNjg0MDIzZjZhN2FkMGZmOWM4MDJkODNlNjQ3OTAKLS0tIC9kZXYv
bnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvcmVs
ZWFzZS1ub3Rlcy5tZApAQCAtMCwwICsxLDQ4MyBAQAorIyBSZWxlYXNlIE5vdGVzCisKKyMjIERl
dmVsb3BtZW50CisKK1tDb21taXRzXShodHRwczovL2dpdGh1Yi5jb20vbGF3bnNlYS9oYW5kbGVi
YXJzLmpzL2NvbXBhcmUvdjQuMC42Li4ubWFzdGVyKQorCisjIyB2NC4wLjYgLSBOb3ZlbWJlciAx
MnRoLCAyMDE2CistIFsjMTI0M10oaHR0cHM6Ly9naXRodWIuY29tL3d5Y2F0cy9oYW5kbGViYXJz
LmpzL3B1bGwvMTI0MykgLSBXYWxrIHVwIGRhdGEgZnJhbWVzIGZvciBuZXN0ZWQgQHBhcnRpYWwt
YmxvY2sgKFtAbGF3bnNlYV0oaHR0cHM6Ly9naXRodWIuY29tL2xhd25zZWEpKQorLSBbIzEyMTBd
KGh0dHBzOi8vZ2l0aHViLmNvbS93eWNhdHMvaGFuZGxlYmFycy5qcy9wdWxsLzEyMTApIC0gQWRk
IGEgbmV3IGxpZ2h0d2VpZ2h0IHBhY2thZ2UgYmFzZWQgb24gaGFuZGxlYmFycyBpbiB0aGUgUkVB
RE1FIChbQGthYmlyYmFpZGh5YV0oaHR0cHM6Ly9naXRodWIuY29tL2thYmlyYmFpZGh5YSkpCist
IFsjMTE4N10oaHR0cHM6Ly9naXRodWIuY29tL3d5Y2F0cy9oYW5kbGViYXJzLmpzL3B1bGwvMTE4
NykgLSBFbnN1cmUgdGhhdCBleGlzdGluZyBibG9ja1BhcmFtcyBhbmQgZGVwdGhzIGFyZSByZXNw
ZWN0ZWQgb24gZHVwZSBwcm9ncmFtcyAoW0BjaGFybGVzb10oaHR0cHM6Ly9naXRodWIuY29tL2No
YXJsZXNvKSkKKy0gWyMxMTkxXShodHRwczovL2dpdGh1Yi5jb20vd3ljYXRzL2hhbmRsZWJhcnMu
anMvcHVsbC8xMTkxKSAtIEFkZGVkIGNvcnkgKFtAbGVvXShodHRwczovL2dpdGh1Yi5jb20vbGVv
KSkKKy0gWyMxMTc3XShodHRwczovL2dpdGh1Yi5jb20vd3ljYXRzL2hhbmRsZWJhcnMuanMvcHVs
bC8xMTc3KSAtIFByZXNlcnZlIExpY2Vuc2UgaW5mbyBpbiBDbG9zdXJlIENvbXBpbGVyIChbQGdl
bm5hZGl5bGl0dmlueXVrXShodHRwczovL2dpdGh1Yi5jb20vZ2VubmFkaXlsaXR2aW55dWspKQor
LSBbIzExNzFdKGh0dHBzOi8vZ2l0aHViLmNvbS93eWNhdHMvaGFuZGxlYmFycy5qcy9wdWxsLzEx
NzEpIC0gQ29udHJpYnV0aW5nIGRvYyBmaXg6IGZhaWxpbmcgdGhhdHMgLT4gZmFpbGluZyB0ZXN0
cyAoW0BwYXVsZmFsZ291dF0oaHR0cHM6Ly9naXRodWIuY29tL3BhdWxmYWxnb3V0KSkKKy0gWyMx
MTY2XShodHRwczovL2dpdGh1Yi5jb20vd3ljYXRzL2hhbmRsZWJhcnMuanMvcHVsbC8xMTY2KSAt
IFVwZGF0ZSBsaWNlbnNlIGRhdGUgKFtAdGltd2FuZ2Rldl0oaHR0cHM6Ly9naXRodWIuY29tL3Rp
bXdhbmdkZXYpKQorLSAgVXBkYXRlIGpzZmlkZGxlIHRvIHBvaW50IHRvIGxhdGVzdCAtIDk1OWVl
NTUgKG9yaWdpbmFsbHkgZGZjNzU1NCBieSBbQGtwZGVja2VyXShodHRwczovL2dpdGh1Yi5jb20v
a3BkZWNrZXIpKQorLSBbIzExNjNdKGh0dHBzOi8vZ2l0aHViLmNvbS93eWNhdHMvaGFuZGxlYmFy
cy5qcy9wdWxsLzExNjMpIC0gRml4IHR5cG9zIG9uIGRlY29yYXRvcnMtYXBpLm1kLiAoW0BhZGpv
aG5zb245MTZdKGh0dHBzOi8vZ2l0aHViLmNvbS9hZGpvaG5zb245MTYpKQorLSBEcm9wIGV4dHJh
IEVycm9yIHBhcmFtcyAtIDhjMTk4NzQgKG9yaWdpbmFsbHkgNjNmZGI5MiBieSBbQGtwZGVja2Vy
XShodHRwczovL2dpdGh1Yi5jb20va3BkZWNrZXIpKQorLSBbIzExNTNdKGh0dHBzOi8vZ2l0aHVi
LmNvbS93eWNhdHMvaGFuZGxlYmFycy5qcy9wdWxsLzExNTMpIC0gQWRkIGRvY3VtZW50YXRpb24g
Zm9yIHJ1bm5pbmcgdGVzdHMgdG8gY29udHJpYnV0aW5nLm1kIChbQHJ5YW5tdXJha2FtaV0oaHR0
cHM6Ly9naXRodWIuY29tL3J5YW5tdXJha2FtaSkpCistIEF2b2lkIGVycm9yIGluIG9sZGVyIGJy
b3dzZXJzIGluIHRlc3QgLSA0MDA5MTZjIChvcmlnaW5hbGx5IGE2MTIxY2EgYnkgW0BrcGRlY2tl
cl0oaHR0cHM6Ly9naXRodWIuY29tL2twZGVja2VyKSkKKy0gVXBkYXRlIHRhcmdldCBicm93c2Vy
IHRlc3QgdmVyc2lvbnMgLSBmZWUyMzM0IChvcmlnaW5hbGx5IDg3MWMzMmEgYnkgW0BrcGRlY2tl
cl0oaHR0cHM6Ly9naXRodWIuY29tL2twZGVja2VyKSkKKy0gRXhjbHVkZSBjb3ZlcmFnZSBjaGVj
ayBpbiBleGNlcHRpb24gY29uZGl0aW9uYWwgLSAzMmQ2MzYzIChvcmlnaW5hbGx5IDMyNjczNGIg
YnkgW0BrcGRlY2tlcl0oaHR0cHM6Ly9naXRodWIuY29tL2twZGVja2VyKSkKKy0gRml4IHRocm93
IHdoZW4gY3JlYXRpbmcgZXhjZXB0aW9uIG9iamVjdCBpbiBTYWZhcmkgLSAyMGM5NjVjIChvcmln
aW5hbGx5IDJlYTYxMTkgYnkgW0BrcGRlY2tlcl0oaHR0cHM6Ly9naXRodWIuY29tL2twZGVja2Vy
KSkKKy0gVXBkYXRlIGJ1aWxkIGZvciBtb2Rlcm4gbm9kZSB2ZXJzaW9ucyAtIDZjOWY5OGMgKG9y
aWdpbmFsbHkgODI4OWMwYiBieSBbQGtwZGVja2VyXShodHRwczovL2dpdGh1Yi5jb20va3BkZWNr
ZXIpKQorLSBbIzExMzVdKGh0dHBzOi8vZ2l0aHViLmNvbS93eWNhdHMvaGFuZGxlYmFycy5qcy9p
c3N1ZXMvMTEzNSkgLSBSZWxheCBkZXB0aCBjaGVjayBmb3IgY29udGV4dCBwdXNoIC0gYzM5M2M4
MSAob3JpZ2luYWxseSAyNTQ1OGZkIGJ5IFtAa3BkZWNrZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9r
cGRlY2tlcikpCisKK1tDb21taXRzXShodHRwczovL2dpdGh1Yi5jb20vd3ljYXRzL2hhbmRsZWJh
cnMuanMvY29tcGFyZS92NC4wLjUuLi52NC4wLjYpCisKKyMjIHY0LjAuNSAtIE5vdmVtYmVyIDE5
dGgsIDIwMTUKKy0gWyMxMTMyXShodHRwczovL2dpdGh1Yi5jb20vd3ljYXRzL2hhbmRsZWJhcnMu
anMvcHVsbC8xMTMyKSAtIFVwZGF0ZSB1Z2xpZnktanMgdG8gYXZvaWQgdnVsbmVyYWJpbGl0eSAo
W0BwbHluY2hubG1dKGh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvcGx5bmNobmxtKSkKKy0g
WyMxMTI5XShodHRwczovL2dpdGh1Yi5jb20vd3ljYXRzL2hhbmRsZWJhcnMuanMvaXNzdWVzLzEx
MjkpIC0gTWluaWZpZWQgbGliIHJldHVybnMgYW4gZW1wdHkgc3RyaW5nIChbQGJyaWNzc10oaHR0
cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy9icmljc3MpKQorLSBSZXR1cm4gY3VycmVudCBoYW5k
bGViYXJzIGluc3RhbmNlIGZyb20gbm9Db25mbGljdCAtIDY4NWNmOTIKKy0gQWRkIHdlYnBhY2sg
dG8gZGV2IGRlcGVuZGVuY3kgdG8gc3VwcG9ydCBucG0gMyAtIDdhNmMyMjgKKy0gRnVydGhlciBy
ZWxheCB1Z2xpZnkgZGVwZW5kZW5jeSAtIDBhM2IzYzIKKy0gSW5jbHVkZSB0ZXN0cyBmb3IgbWlu
aW1pemVkIGFydGlmYWN0cyAtIGMyMTExOGQKKy0gRml4IGxpbnQgZXJyb3JzIHVuZGVyIGxhdGVz
dCBlc2xpbnQgLSA5ZjU5ZGU5CistIEFkZCBwcmludC1zY3JpcHQgaGVscGVyIHNjcmlwdCAtIDk4
YTY3MTcKKworW0NvbW1pdHNdKGh0dHBzOi8vZ2l0aHViLmNvbS93eWNhdHMvaGFuZGxlYmFycy5q
cy9jb21wYXJlL3Y0LjAuNC4uLnY0LjAuNSkKKworIyMgdjQuMC40IC0gT2N0b2JlciAyOXRoLCAy
MDE1CistIFsjMTEyMV0oaHR0cHM6Ly9naXRodWIuY29tL3d5Y2F0cy9oYW5kbGViYXJzLmpzL3B1
bGwvMTEyMSkgLSBJbmNsdWRlIHBhcnRpYWwgbmFtZSBpbiAndW5kZWZpbmVkIHBhcnRpYWwnIGV4
Y2VwdGlvbiBtZXNzYWdlIChbQHNoaW55cGJdKGh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMv
c2hpbnlwYikpCistIFsjMTEyNV0oaHR0cHM6Ly9naXRodWIuY29tL3d5Y2F0cy9oYW5kbGViYXJz
LmpzL3B1bGwvMTEyNSkgLSBBZGQgcHJvbWlzZWQtaGFuZGxlYmFycyB0byAiaW4tdGhlLXdpbGQi
LWxpc3QgKFtAbmtuYXBwXShodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL25rbmFwcCkpCisK
K1tDb21taXRzXShodHRwczovL2dpdGh1Yi5jb20vd3ljYXRzL2hhbmRsZWJhcnMuanMvY29tcGFy
ZS92NC4wLjMuLi52NC4wLjQpCisKKyMjIHY0LjAuMyAtIFNlcHRlbWJlciAyM3JkLCAyMDE1Cist
IFsjMTA5OV0oaHR0cHM6Ly9naXRodWIuY29tL3d5Y2F0cy9oYW5kbGViYXJzLmpzL2lzc3Vlcy8x
MDk5KSAtIEBwYXJ0aWFsLWJsb2NrIGlzIG92ZXJyaWRkZW4gKFtAYnRtb3JleF0oaHR0cHM6Ly9h
cGkuZ2l0aHViLmNvbS91c2Vycy9idG1vcmV4KSkKKy0gWyMxMDkzXShodHRwczovL2dpdGh1Yi5j
b20vd3ljYXRzL2hhbmRsZWJhcnMuanMvaXNzdWVzLzEwOTMpIC0gI2VhY2ggc2tpcHMgaXRlcmF0
aW9uIG9uIHVuZGVmaW5lZCB2YWx1ZXMgKFtAZmxvcmlhbnBpbHpdKGh0dHBzOi8vYXBpLmdpdGh1
Yi5jb20vdXNlcnMvZmxvcmlhbnBpbHopKQorLSBbIzEwOTJdKGh0dHBzOi8vZ2l0aHViLmNvbS93
eWNhdHMvaGFuZGxlYmFycy5qcy9pc3N1ZXMvMTA5MikgLSBTcXVhcmUgYnJhY2VzIGluIGtleSBu
YW1lIChbQGRpc3RhbnRuYXRpdmVdKGh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvZGlzdGFu
dG5hdGl2ZSkpCistIFsjMTA5MV0oaHR0cHM6Ly9naXRodWIuY29tL3d5Y2F0cy9oYW5kbGViYXJz
LmpzL3B1bGwvMTA5MSkgLSBmaXggdHlwbyBpbiByZWxlYXNlIG5vdGVzIChbQG5pa29sYXNdKGh0
dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvbmlrb2xhcykpCistIFsjMTA5MF0oaHR0cHM6Ly9n
aXRodWIuY29tL3d5Y2F0cy9oYW5kbGViYXJzLmpzL3B1bGwvMTA5MCkgLSBncmFtbWFyIGZpeGVz
IGluIDQuMC4wIHJlbGVhc2Ugbm90ZXMgKFtAbmlrb2xhc10oaHR0cHM6Ly9hcGkuZ2l0aHViLmNv
bS91c2Vycy9uaWtvbGFzKSkKKworQ29tcGF0aWJpbGl0eSBub3RlczoKKy0gYGVhY2hgIGl0ZXJh
dGlvbiB3aXRoIGB1bmRlZmluZWRgIHZhbHVlcyBoYXMgYmVlbiByZXN0b3JlZCB0byB0aGUgMy4w
IGJlaGF2aW9ycy4gSGVscGVyIGNhbGxzIHdpdGggdW5kZWZpbmVkIGNvbnRleHQgdmFsdWVzIHdp
bGwgbm93IGV4ZWN1dGUgYWdhaW5zdCBhbiBhcmJpdHJhcnkgZW1wdHkgb2JqZWN0IHRvIGF2b2lk
IGV4ZWN1dGluZyBhZ2FpbnN0IGdsb2JhbCBvYmplY3QgaW4gbm9uLXN0cmljdCBtb2RlLgorLSBg
XWAgY2FuIG5vdyBiZSBpbmNsdWRlZCBpbiBgW11gIHdyYXBwZWQgaWRlbnRpZmllcnMgYnkgZXNj
YXBpbmcgd2l0aCBgXGAuIEFueSBgW11gIGlkZW50aWZpZXJzIHRoYXQgaW5jbHVkZSBgXGAgd2ls
bCBub3cgaGF2ZSB0byBwcm9wZXJseSBlc2NhcGUgdGhlc2UgdmFsdWVzLgorCitbQ29tbWl0c10o
aHR0cHM6Ly9naXRodWIuY29tL3d5Y2F0cy9oYW5kbGViYXJzLmpzL2NvbXBhcmUvdjQuMC4yLi4u
djQuMC4zKQorCisjIyB2NC4wLjIgLSBTZXB0ZW1iZXIgNHRoLCAyMDE1CistIFsjMTA4OV0oaHR0
cHM6Ly9naXRodWIuY29tL3d5Y2F0cy9oYW5kbGViYXJzLmpzL2lzc3Vlcy8xMDg5KSAtICJGYWls
b3ZlciBjb250ZW50IiBub3Qgd29ya2luZyBpbiBtdWx0aXBsZSBsZXZlbHMgb2YgaW5saW5lIHBh
cnRpYWxzIChbQG1pY2hhZWxsb3Blel0oaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy9taWNo
YWVsbG9wZXopKQorCitbQ29tbWl0c10oaHR0cHM6Ly9naXRodWIuY29tL3d5Y2F0cy9oYW5kbGVi
YXJzLmpzL2NvbXBhcmUvdjQuMC4xLi4udjQuMC4yKQorCisjIyB2NC4wLjEgLSBTZXB0ZW1iZXIg
Mm5kLCAyMDE1CistIEZpeCBmYWlsdXJlIHdoZW4gdXNpbmcgZGVjb3JhdG9ycyBpbiBwYXJ0aWFs
cyAtIDA1YjgyYTIKKworW0NvbW1pdHNdKGh0dHBzOi8vZ2l0aHViLmNvbS93eWNhdHMvaGFuZGxl
YmFycy5qcy9jb21wYXJlL3Y0LjAuMC4uLnY0LjAuMSkKKworIyMgdjQuMC4wIC0gU2VwdGVtYmVy
IDFzdCwgMjAxNQorLSBbIzEwODJdKGh0dHBzOi8vZ2l0aHViLmNvbS93eWNhdHMvaGFuZGxlYmFy
cy5qcy9wdWxsLzEwODIpIC0gRGVjb3JhdG9ycyBhbmQgSW5saW5lIFBhcnRpYWxzIChbQGtwZGVj
a2VyXShodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL2twZGVja2VyKSkKKy0gWyMxMDc2XSho
dHRwczovL2dpdGh1Yi5jb20vd3ljYXRzL2hhbmRsZWJhcnMuanMvcHVsbC8xMDc2KSAtIEltcGxl
bWVudCBwYXJ0aWFsIGJsb2NrcyAoW0BrcGRlY2tlcl0oaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91
c2Vycy9rcGRlY2tlcikpCistIFsjMTA4N10oaHR0cHM6Ly9naXRodWIuY29tL3d5Y2F0cy9oYW5k
bGViYXJzLmpzL3B1bGwvMTA4NykgLSBGaXggI2VhY2ggd2hlbiBsYXN0IG9iamVjdCBlbnRyeSBo
YXMgZW1wdHkga2V5IChbQGRlbm5pc2t1Y3p5bnNraV0oaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91
c2Vycy9kZW5uaXNrdWN6eW5za2kpKQorLSBbIzEwODRdKGh0dHBzOi8vZ2l0aHViLmNvbS93eWNh
dHMvaGFuZGxlYmFycy5qcy9wdWxsLzEwODQpIC0gQnVtcCB1Z2xpZnkgdmVyc2lvbiB0byBmaXgg
dnVsbmVyYWJpbGl0eSAoW0BKb2huLVN0ZWlkbGV5XShodHRwczovL2FwaS5naXRodWIuY29tL3Vz
ZXJzL0pvaG4tU3RlaWRsZXkpKQorLSBbIzEwNjhdKGh0dHBzOi8vZ2l0aHViLmNvbS93eWNhdHMv
aGFuZGxlYmFycy5qcy9wdWxsLzEwNjgpIC0gRml4IHR5cG8gKFtAMHhhY2sxM10oaHR0cHM6Ly9h
cGkuZ2l0aHViLmNvbS91c2Vycy8weGFjazEzKSkKKy0gWyMxMDYwXShodHRwczovL2dpdGh1Yi5j
b20vd3ljYXRzL2hhbmRsZWJhcnMuanMvcHVsbC8xMDYwKSAtICMxMDU2IEZpeGVkIGdyYW1tYXIg
Zm9yIG5lc3RlZCByYXcgYmxvY2tzIChbQGVyaWNibl0oaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91
c2Vycy9lcmljYm4pKQorLSBbIzEwNTJdKGh0dHBzOi8vZ2l0aHViLmNvbS93eWNhdHMvaGFuZGxl
YmFycy5qcy9wdWxsLzEwNTIpIC0gVXBkYXRlZCB5ZWFyIGluIExpY2Vuc2UgKFtAbWFxbm91Y2hd
KGh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvbWFxbm91Y2gpKQorLSBbIzEwMzddKGh0dHBz
Oi8vZ2l0aHViLmNvbS93eWNhdHMvaGFuZGxlYmFycy5qcy9wdWxsLzEwMzcpIC0gRml4IG1pbm9y
IHR5cG9zIGluIFJFQURNRSAoW0B0b214dG9iaW5dKGh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNl
cnMvdG9teHRvYmluKSkKKy0gWyMxMDMyXShodHRwczovL2dpdGh1Yi5jb20vd3ljYXRzL2hhbmRs
ZWJhcnMuanMvaXNzdWVzLzEwMzIpIC0gSXMgaXQgcG9zc2libGUgdG8gcmVuZGVyIGEgcGFydGlh
bCB3aXRob3V0IHRoZSBwYXJlbnQgc2NvcGU/IChbQGFwdXRpbnNraV0oaHR0cHM6Ly9hcGkuZ2l0
aHViLmNvbS91c2Vycy9hcHV0aW5za2kpKQorLSBbIzEwMTldKGh0dHBzOi8vZ2l0aHViLmNvbS93
eWNhdHMvaGFuZGxlYmFycy5qcy9wdWxsLzEwMTkpIC0gRml4ZXMgdHlwbyBpbiB0ZXN0cyAoW0Bh
eW1lcmlja10oaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy9heW1lcmljaykpCistIFsjMTAx
Nl0oaHR0cHM6Ly9naXRodWIuY29tL3d5Y2F0cy9oYW5kbGViYXJzLmpzL2lzc3Vlcy8xMDE2KSAt
IFZlcnNpb24gbWlzLW1hdGNoIChbQG1heWFua2RlZGhpYV0oaHR0cHM6Ly9hcGkuZ2l0aHViLmNv
bS91c2Vycy9tYXlhbmtkZWRoaWEpKQorLSBbIzEwMjNdKGh0dHBzOi8vZ2l0aHViLmNvbS93eWNh
dHMvaGFuZGxlYmFycy5qcy9pc3N1ZXMvMTAyMykgLSBpcyBpdCBwb3NzaWJsZSBmb3IgbmVzdGVk
IGN1c3RvbSBoZWxwZXJzIHRvIGNvbW11bmljYXRlIGJldHdlZW4gZWFjaCBvdGhlcj8KKy0gWyM4
OTNdKGh0dHBzOi8vZ2l0aHViLmNvbS93eWNhdHMvaGFuZGxlYmFycy5qcy9pc3N1ZXMvODkzKSAt
IFtQcm9wb3NhbF0gU2VjdGlvbiBibG9ja3MuCistIFsjNzkyXShodHRwczovL2dpdGh1Yi5jb20v
d3ljYXRzL2hhbmRsZWJhcnMuanMvaXNzdWVzLzc5MikgLSBmZWF0dXJlIHJlcXVlc3Q6IGlubGlu
ZSBwYXJ0aWFsIGRlZmluaXRpb25zCistIFsjNTgzXShodHRwczovL2dpdGh1Yi5jb20vd3ljYXRz
L2hhbmRsZWJhcnMuanMvaXNzdWVzLzU4MykgLSBQYXJlbnQgcGF0aCBjb250aW51ZXMgdG8gZHJp
bGwgZG93biBkZXB0aCB3aXRoIG11bHRpcGxlIGNvbmRpdGlvbmFscworLSBbIzQwNF0oaHR0cHM6
Ly9naXRodWIuY29tL3d5Y2F0cy9oYW5kbGViYXJzLmpzL2lzc3Vlcy80MDQpIC0gQWRkIG5hbWVk
IGNoaWxkIGhlbHBlcnMgdGhhdCBjYW4gYmUgcmVmZXJlbmNlZCBieSBibG9jayBoZWxwZXJzCist
IEVzY2FwZSA9IGluIEhUTUwgY29udGVudCAtIFs4M2I4ZTg0XShodHRwczovL2dpdGh1Yi5jb20v
d3ljYXRzL2hhbmRsZWJhcnMuanMvY29tbWl0LzgzYjhlODQpCistIERyb3AgQVNUIGNvbnN0cnVj
dG9ycyBpbiBmYXZvciBvZiBKU09OIC0gWzk1ZDg0YmFdKGh0dHBzOi8vZ2l0aHViLmNvbS93eWNh
dHMvaGFuZGxlYmFycy5qcy9jb21taXQvOTVkODRiYSkKKy0gUGFzcyBjb250YWluZXIgcmF0aGVy
IHRoYW4gZXhlYyBhcyBjb250ZXh0IC0gWzlhMmQxZDZdKGh0dHBzOi8vZ2l0aHViLmNvbS93eWNh
dHMvaGFuZGxlYmFycy5qcy9jb21taXQvOWEyZDFkNikKKy0gQWRkIGlnbm9yZVN0YW5kYWxvbmUg
Y29tcGlsZXIgb3B0aW9uIC0gW2VhM2E1YTFdKGh0dHBzOi8vZ2l0aHViLmNvbS93eWNhdHMvaGFu
ZGxlYmFycy5qcy9jb21taXQvZWEzYTVhMSkKKy0gSWdub3JlIGVtcHR5IHdoZW4gaXRlcmF0aW5n
IG9uIHNwYXJzZSBhcnJheXMgLSBbMDZkNTE1YV0oaHR0cHM6Ly9naXRodWIuY29tL3d5Y2F0cy9o
YW5kbGViYXJzLmpzL2NvbW1pdC8wNmQ1MTVhKQorLSBBZGQgc3VwcG9ydCBmb3Igc3RyaW5nIGFu
ZCBzdGRpbiBwcmVjb21waWxhdGlvbiAtIFswZGU4ZGFjXShodHRwczovL2dpdGh1Yi5jb20vd3lj
YXRzL2hhbmRsZWJhcnMuanMvY29tbWl0LzBkZThkYWMpCistIFNpbXBsaWZ5IG9iamVjdCBhc3Np
Z25tZW50IGdlbmVyYXRpb24gbG9naWMgLSBbNzdlNmJmY10oaHR0cHM6Ly9naXRodWIuY29tL3d5
Y2F0cy9oYW5kbGViYXJzLmpzL2NvbW1pdC83N2U2YmZjKQorLSBCdWxsZXRwcm9vZiBBU1QuaGVs
cGVycy5oZWxwZXJFeHByZXNzaW9uIC0gWzkzYjA3NjBdKGh0dHBzOi8vZ2l0aHViLmNvbS93eWNh
dHMvaGFuZGxlYmFycy5qcy9jb21taXQvOTNiMDc2MCkKKy0gQWx3YXlzIHJldHVybiBzdHJpbmcg
cmVzcG9uc2VzIC0gWzhlODY4YWJdKGh0dHBzOi8vZ2l0aHViLmNvbS93eWNhdHMvaGFuZGxlYmFy
cy5qcy9jb21taXQvOGU4NjhhYikKKy0gUGFzcyB1bmRlZmluZWQgZmllbGRzIHRvIGhlbHBlcnMg
aW4gc3RyaWN0IG1vZGUgLSBbNWQ0YjhkYV0oaHR0cHM6Ly9naXRodWIuY29tL3d5Y2F0cy9oYW5k
bGViYXJzLmpzL2NvbW1pdC81ZDRiOGRhKQorLSBBdm9pZCBkZXB0aCBjcmVhdGlvbiB3aGVuIGNv
bnRleHQgcmVtYWlucyB0aGUgc2FtZSAtIFsyNzllMDM4XShodHRwczovL2dpdGh1Yi5jb20vd3lj
YXRzL2hhbmRsZWJhcnMuanMvY29tbWl0LzI3OWUwMzgpCistIEltcHJvdmUgbG9nZ2luZyBBUEkg
LSBbOWE0OWQzNV0oaHR0cHM6Ly9naXRodWIuY29tL3d5Y2F0cy9oYW5kbGViYXJzLmpzL2NvbW1p
dC85YTQ5ZDM1KQorLSBGaXggd2l0aCBvcGVyYXRvciBpbiBubyBAZGF0YSBtb2RlIC0gWzIzMWE4
ZDddKGh0dHBzOi8vZ2l0aHViLmNvbS93eWNhdHMvaGFuZGxlYmFycy5qcy9jb21taXQvMjMxYThk
NykKKy0gQWxsb3cgZW1wdHkga2V5IG5hbWUgaW4gZWFjaCBpdGVyYXRpb24gLSBbMWJiNjQwYl0o
aHR0cHM6Ly9naXRodWIuY29tL3d5Y2F0cy9oYW5kbGViYXJzLmpzL2NvbW1pdC8xYmI2NDBiKQor
LSBBZGQgd2l0aCBibG9jayBwYXJhbWV0ZXIgc3VwcG9ydCAtIFsyYTg1MTA2XShodHRwczovL2dp
dGh1Yi5jb20vd3ljYXRzL2hhbmRsZWJhcnMuanMvY29tbWl0LzJhODUxMDYpCistIEZpeCBlc2Nh
cGluZyBvZiBub24tamF2YXNjcmlwdCBpZGVudGlmaWVycyAtIFs0MTAxNDFjXShodHRwczovL2dp
dGh1Yi5jb20vd3ljYXRzL2hhbmRsZWJhcnMuanMvY29tbWl0LzQxMDE0MWMpCistIEZpeCBsb2Nh
dGlvbiBpbmZvcm1hdGlvbiBmb3IgcHJvZ3JhbXMgLSBbOTNmYWZmYV0oaHR0cHM6Ly9naXRodWIu
Y29tL3d5Y2F0cy9oYW5kbGViYXJzLmpzL2NvbW1pdC85M2ZhZmZhKQorCitDb21wYXRpYmlsaXR5
IG5vdGVzOgorLSBEZXB0aGVkIHBhdGhzIGFyZSBub3cgY29uZGl0aW9uYWxseSBwdXNoZWQgb24g
dG8gdGhlIHN0YWNrLiBJZiB0aGUgaGVscGVyIHVzZXMgdGhlIHNhbWUgY29udGV4dCwgdGhlbiBh
IG5ldyBzdGFjayBpcyBub3QgY3JlYXRlZC4gVGhpcyBsZWFkcyB0byBiZWhhdmlvciB0aGF0IGJl
dHRlciBtYXRjaGVzIGV4cGVjdGF0aW9ucyBmb3IgaGVscGVycyBsaWtlIGBpZmAgdGhhdCBkbyBu
b3Qgc2VlbSB0byBhbHRlciB0aGUgY29udGV4dC4gQW55IGluc3RhbmNlcyBvZiBgLi4vYCBpbiB0
ZW1wbGF0ZXMgd2lsbCBuZWVkIHRvIGJlIGNoZWNrZWQgZm9yIHRoZSBjb3JyZWN0IGJlaGF2aW9y
IHVuZGVyIDQuMC4wLiBJbiBnZW5lcmFsIHRlbXBsYXRlcyB3aWxsIGVpdGhlciByZWR1Y2UgdGhl
IG51bWJlciBvZiBgLi4vYCBpbnN0YW5jZXMgb3IgbGVhdmUgdGhlbSBhcyBpcy4gU2VlIFsjMTAy
OF0oaHR0cHM6Ly9naXRodWIuY29tL3d5Y2F0cy9oYW5kbGViYXJzLmpzL2lzc3Vlcy8xMDI4KS4K
Ky0gVGhlIGA9YCBjaGFyYWN0ZXIgaXMgbm93IEhUTUwgZXNjYXBlZC4gVGhpcyBjbG9zZXMgYSBw
b3RlbnRpYWwgZXhwbG9pdCBjYXNlIHdoZW4gdXNpbmcgdW5xdW90ZWQgYXR0cmlidXRlcywgaS5l
LiBgPGRpdiBmb289e3tiYXJ9fT5gLiBJbiBnZW5lcmFsIGl0J3MgcmVjb21tZW5kZWQgdGhhdCBh
dHRyaWJ1dGVzIGFsd2F5cyBiZSBxdW90ZWQgd2hlbiB0aGVpciB2YWx1ZXMgYXJlIGdlbmVyYXRl
ZCBmcm9tIGEgbXVzdGFjaGUgdG8gYXZvaWQgYW55IHBvdGVudGlhbCBleHBsb2l0IHN1cmZhY2Vz
LgorLSBBU1QgY29uc3RydWN0b3JzIGhhdmUgYmVlbiBkcm9wcGVkIGluIGZhdm9yIG9mIHBsYWlu
IG9sZCBqYXZhc2NyaXB0IG9iamVjdHMKKy0gVGhlIHJ1bnRpbWUgdmVyc2lvbiBoYXMgYmVlbiBp
bmNyZWFzZWQuIFByZWNvbXBpbGVkIHRlbXBsYXRlcyB3aWxsIG5lZWQgdG8gdXNlIHJ1bnRpbWUg
b2YgYXQgbGVhc3QgNC4wLjAuCisKK1tDb21taXRzXShodHRwczovL2dpdGh1Yi5jb20vd3ljYXRz
L2hhbmRsZWJhcnMuanMvY29tcGFyZS92My4wLjMuLi52NC4wLjApCisKKyMjIHYzLjAuMyAtIEFw
cmlsIDI4dGgsIDIwMTUKKy0gWyMxMDA0XShodHRwczovL2dpdGh1Yi5jb20vd3ljYXRzL2hhbmRs
ZWJhcnMuanMvaXNzdWVzLzEwMDQpIC0gTGF0ZXN0IHZlcnNpb24gYnJlYWtzIHdpdGggUmVxdWly
ZUpTIChnbG9iYWwgaXMgdW5kZWZpbmVkKSAoW0Bib3NrZWVdKGh0dHBzOi8vYXBpLmdpdGh1Yi5j
b20vdXNlcnMvYm9za2VlKSkKKworW0NvbW1pdHNdKGh0dHBzOi8vZ2l0aHViLmNvbS93eWNhdHMv
aGFuZGxlYmFycy5qcy9jb21wYXJlL3YzLjAuMi4uLnYzLjAuMykKKworIyMgdjMuMC4yIC0gQXBy
aWwgMjB0aCwgMjAxNQorLSBbIzk5OF0oaHR0cHM6Ly9naXRodWIuY29tL3d5Y2F0cy9oYW5kbGVi
YXJzLmpzL3B1bGwvOTk4KSAtIEFkZCBmdWxsIHN1cHBvcnQgZm9yIGVzNiAoW0BrcGRlY2tlcl0o
aHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy9rcGRlY2tlcikpCistIFsjOTk0XShodHRwczov
L2dpdGh1Yi5jb20vd3ljYXRzL2hhbmRsZWJhcnMuanMvaXNzdWVzLzk5NCkgLSBBY2Nlc3MgSGFu
ZGxlYmFycy5WaXNpdG9yIGluIGJyb3dzZXIgKFtAdGFtbHluXShodHRwczovL2FwaS5naXRodWIu
Y29tL3VzZXJzL3RhbWx5bikpCistIFsjOTkwXShodHRwczovL2dpdGh1Yi5jb20vd3ljYXRzL2hh
bmRsZWJhcnMuanMvaXNzdWVzLzk5MCkgLSBBbGxvdyBwYXNzaW5nIG51bGwvdW5kZWZpbmVkIGxp
dGVyYWxzIHN1YmV4cHJlc3Npb25zIChbQGJsaW1tZXJdKGh0dHBzOi8vYXBpLmdpdGh1Yi5jb20v
dXNlcnMvYmxpbW1lcikpCistIFsjOTg5XShodHRwczovL2dpdGh1Yi5jb20vd3ljYXRzL2hhbmRs
ZWJhcnMuanMvaXNzdWVzLzk4OSkgLSBTb3VyY2UtbWFwIGVycm9yIHdpdGggcmVxdWlyZWpzIChb
QFN0ZXBwZUVhZ2xlXShodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL1N0ZXBwZUVhZ2xlKSkK
Ky0gWyM5NjddKGh0dHBzOi8vZ2l0aHViLmNvbS93eWNhdHMvaGFuZGxlYmFycy5qcy9pc3N1ZXMv
OTY3KSAtIGNhbid0IGFjY2VzcyAidGhpcyIgcHJvcGVydHkgIChbQDc1bGJdKGh0dHBzOi8vYXBp
LmdpdGh1Yi5jb20vdXNlcnMvNzVsYikpCistIFVzZSBjYXB0dXJlU3RhY2tUcmFjZSBmb3IgZXJy
b3IgaGFuZGxlciAtIGEwMDlhOTcKKy0gSWdub3JlIGJyYW5jaGVzIHRlc3RlZCB3aXRob3V0IGNv
dmVyYWdlIG1vbml0b3JpbmcgLSAzN2E2NjRiCisKK1tDb21taXRzXShodHRwczovL2dpdGh1Yi5j
b20vd3ljYXRzL2hhbmRsZWJhcnMuanMvY29tcGFyZS92My4wLjEuLi52My4wLjIpCisKKyMjIHYz
LjAuMSAtIE1hcmNoIDI0dGgsIDIwMTUKKy0gWyM5ODRdKGh0dHBzOi8vZ2l0aHViLmNvbS93eWNh
dHMvaGFuZGxlYmFycy5qcy9wdWxsLzk4NCkgLSBBZGRpbmcgZG9jdW1lbnRhdGlvbiBmb3IgcGFz
c2luZyBhcmd1bWVudHMgaW50byBwYXJ0aWFscyAoW0Bqb2huZWtlXShodHRwczovL2FwaS5naXRo
dWIuY29tL3VzZXJzL2pvaG5la2UpKQorLSBbIzk3M10oaHR0cHM6Ly9naXRodWIuY29tL3d5Y2F0
cy9oYW5kbGViYXJzLmpzL2lzc3Vlcy85NzMpIC0gdmVyc2lvbiAzIGlzIHNsb3dlciB0aGFuIHZl
cnNpb24gMiAoW0BlbG92ZXJdKGh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvZWxvdmVyKSkK
Ky0gWyM5NjZdKGh0dHBzOi8vZ2l0aHViLmNvbS93eWNhdHMvaGFuZGxlYmFycy5qcy9pc3N1ZXMv
OTY2KSAtICJoYW5kbGViYXJzIC0tdmVyc2lvbiIgZG9lcyBub3Qgd29yayB3aXRoIHYzLjAuMCAo
W0BhYmxvb21zdG9uXShodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL2FibG9vbXN0b24pKQor
LSBbIzk2NF0oaHR0cHM6Ly9naXRodWIuY29tL3d5Y2F0cy9oYW5kbGViYXJzLmpzL3B1bGwvOTY0
KSAtIGRlZmF1bHQgaXMgYSByZXNlcnZlZCB3b3JkIChbQGdyYXNzaWNrXShodHRwczovL2FwaS5n
aXRodWIuY29tL3VzZXJzL2dyYXNzaWNrKSkKKy0gWyM5NjJdKGh0dHBzOi8vZ2l0aHViLmNvbS93
eWNhdHMvaGFuZGxlYmFycy5qcy9wdWxsLzk2MikgLSBBZGQgZGFzaGJhcnMnIGxpbmsgb24gUkVB
RE1FLiAoW0BwaXNtdXRlXShodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3Bpc211dGUpKQor
CitbQ29tbWl0c10oaHR0cHM6Ly9naXRodWIuY29tL3d5Y2F0cy9oYW5kbGViYXJzLmpzL2NvbXBh
cmUvdjMuMC4wLi4udjMuMC4xKQorCisjIyB2My4wLjAgLSBGZWJydWFyeSAxMHRoLCAyMDE1Cist
IFsjOTQxXShodHRwczovL2dpdGh1Yi5jb20vd3ljYXRzL2hhbmRsZWJhcnMuanMvcHVsbC85NDEp
IC0gQWRkIHN1cHBvcnQgZm9yIGR5bmFtaWMgcGFydGlhbCBuYW1lcyAoW0BrcGRlY2tlcl0oaHR0
cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy9rcGRlY2tlcikpCistIFsjOTQwXShodHRwczovL2dp
dGh1Yi5jb20vd3ljYXRzL2hhbmRsZWJhcnMuanMvcHVsbC85NDApIC0gQWRkIG1pc3NpbmcgcmVz
ZXJ2ZWQgd29yZHMgc28gY29tcGlsZXIga25vd3MgdG8gdXNlIGFycmF5IHN5bnRheDogKFtAbWF0
dGZsYXNjaGVuXShodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL21hdHRmbGFzY2hlbikpCist
IFsjOTM4XShodHRwczovL2dpdGh1Yi5jb20vd3ljYXRzL2hhbmRsZWJhcnMuanMvcHVsbC85Mzgp
IC0gRml4IGV4YW1wbGUgdXNpbmcgI3dpdGggaGVscGVyIChbQGRpd29dKGh0dHBzOi8vYXBpLmdp
dGh1Yi5jb20vdXNlcnMvZGl3bykpCistIFsjOTMwXShodHRwczovL2dpdGh1Yi5jb20vd3ljYXRz
L2hhbmRsZWJhcnMuanMvcHVsbC85MzApIC0gQWRkIHBhcmVudCB0cmFja2luZyBhbmQgbXV0YXRp
b24gdG8gQVNUIHZpc2l0b3JzIChbQGtwZGVja2VyXShodHRwczovL2FwaS5naXRodWIuY29tL3Vz
ZXJzL2twZGVja2VyKSkKKy0gWyM5MjZdKGh0dHBzOi8vZ2l0aHViLmNvbS93eWNhdHMvaGFuZGxl
YmFycy5qcy9pc3N1ZXMvOTI2KSAtIERlcHRoZWQgbG9va3VwcyBmYWlsIHdoZW4gcHJvZ3JhbSBk
dXBsaWNhdG9yIHJ1bnMgKFtAa3BkZWNrZXJdKGh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMv
a3BkZWNrZXIpKQorLSBbIzkxOF0oaHR0cHM6Ly9naXRodWIuY29tL3d5Y2F0cy9oYW5kbGViYXJz
LmpzL3B1bGwvOTE4KSAtIEFkZCBpbnN0cnVjdGlvbnMgZm9yICdzcGVjL211c3RhY2hlJyB0byBD
T05UUklCVVRJTkcubWQsIGZpeCBhIGZldyB0eXBvcyAoW0BvbmVlbWFuXShodHRwczovL2FwaS5n
aXRodWIuY29tL3VzZXJzL29uZWVtYW4pKQorLSBbIzkxNV0oaHR0cHM6Ly9naXRodWIuY29tL3d5
Y2F0cy9oYW5kbGViYXJzLmpzL3B1bGwvOTE1KSAtIEFzdCB1cGRhdGUgKFtAa3BkZWNrZXJdKGh0
dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMva3BkZWNrZXIpKQorLSBbIzkxMF0oaHR0cHM6Ly9n
aXRodWIuY29tL3d5Y2F0cy9oYW5kbGViYXJzLmpzL2lzc3Vlcy85MTApIC0gRGlmZmVyZW50IGJl
aGF2aW9yIG9mIHt7QGxhc3R9fSB3aGVuIHt7I2VhY2h9fSBpbiB7eyNlYWNofX0gKFtAem9yZGl1
c10oaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy96b3JkaXVzKSkKKy0gWyM5MDddKGh0dHBz
Oi8vZ2l0aHViLmNvbS93eWNhdHMvaGFuZGxlYmFycy5qcy9pc3N1ZXMvOTA3KSAtIEltcGxlbWVu
dCBuYW1lZCBoZWxwZXIgdmFyaWFibGUgcmVmZXJlbmNlcyAoW0BrcGRlY2tlcl0oaHR0cHM6Ly9h
cGkuZ2l0aHViLmNvbS91c2Vycy9rcGRlY2tlcikpCistIFsjOTA2XShodHRwczovL2dpdGh1Yi5j
b20vd3ljYXRzL2hhbmRsZWJhcnMuanMvcHVsbC85MDYpIC0gQWRkIHBhcnNlciBzdXBwb3J0IGZv
ciBibG9jayBwYXJhbXMgKFtAbW11bl0oaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy9tbXVu
KSkKKy0gWyM5MDNdKGh0dHBzOi8vZ2l0aHViLmNvbS93eWNhdHMvaGFuZGxlYmFycy5qcy9pc3N1
ZXMvOTAzKSAtIE9ubHkgcHJvdmlkZSBhbGlhc2VzIGZvciBtdWx0aXBsZSB1c2UgY2FsbHMgKFtA
a3BkZWNrZXJdKGh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMva3BkZWNrZXIpKQorLSBbIzkw
Ml0oaHR0cHM6Ly9naXRodWIuY29tL3d5Y2F0cy9oYW5kbGViYXJzLmpzL3B1bGwvOTAyKSAtIEdl
bmVyYXRlIFNvdXJjZSBNYXBzIChbQGtwZGVja2VyXShodHRwczovL2FwaS5naXRodWIuY29tL3Vz
ZXJzL2twZGVja2VyKSkKKy0gWyM5MDFdKGh0dHBzOi8vZ2l0aHViLmNvbS93eWNhdHMvaGFuZGxl
YmFycy5qcy9pc3N1ZXMvOTAxKSAtIFN0aWxsIGVzY2FwZXMgd2l0aCBub0VzY2FwZSBlbmFibGVk
IG9uIGlzb2xhdGVkIEhhbmRsZWJhcnMgZW52aXJvbm1lbnQgKFtAemVka25pZ2h0XShodHRwczov
L2FwaS5naXRodWIuY29tL3VzZXJzL3plZGtuaWdodCkpCistIFsjODk2XShodHRwczovL2dpdGh1
Yi5jb20vd3ljYXRzL2hhbmRsZWJhcnMuanMvcHVsbC84OTYpIC0gU2ltcGxpZnkgQmxvY2tOb2Rl
IGJ5IHJlbW92aW5nIGludGVybWVkaWF0ZSBNdXN0YWNoZU5vZGUgKFtAbW11bl0oaHR0cHM6Ly9h
cGkuZ2l0aHViLmNvbS91c2Vycy9tbXVuKSkKKy0gWyM4OTJdKGh0dHBzOi8vZ2l0aHViLmNvbS93
eWNhdHMvaGFuZGxlYmFycy5qcy9wdWxsLzg5MikgLSBJbXBsZW1lbnQgcGFyc2VyIGZvciBlbHNl
IGNoYWluaW5nIG9mIGhlbHBlcnMgKFtAa3BkZWNrZXJdKGh0dHBzOi8vYXBpLmdpdGh1Yi5jb20v
dXNlcnMva3BkZWNrZXIpKQorLSBbIzg4OV0oaHR0cHM6Ly9naXRodWIuY29tL3d5Y2F0cy9oYW5k
bGViYXJzLmpzL2lzc3Vlcy84ODkpIC0gQ29uc2lkZXIgZXh0ZW5zaWJsZSBwYXJzZXIgQVBJIChb
QGtwZGVja2VyXShodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL2twZGVja2VyKSkKKy0gWyM4
ODddKGh0dHBzOi8vZ2l0aHViLmNvbS93eWNhdHMvaGFuZGxlYmFycy5qcy9pc3N1ZXMvODg3KSAt
IEhhbmRsZWJhcnMubm9Db25mbGljdCgpIG9wdGlvbj8gKFtAYnJhZHZvZ2VsXShodHRwczovL2Fw
aS5naXRodWIuY29tL3VzZXJzL2JyYWR2b2dlbCkpCistIFsjODg2XShodHRwczovL2dpdGh1Yi5j
b20vd3ljYXRzL2hhbmRsZWJhcnMuanMvaXNzdWVzLzg4NikgLSBBZGQgU2FmZVN0cmluZyB0byBj
b250ZXh0IChvciB1c2UgZHVjay10eXBpbmcpIChbQGRvbWluaWNiYXJuZXNdKGh0dHBzOi8vYXBp
LmdpdGh1Yi5jb20vdXNlcnMvZG9taW5pY2Jhcm5lcykpCistIFsjODcwXShodHRwczovL2dpdGh1
Yi5jb20vd3ljYXRzL2hhbmRsZWJhcnMuanMvcHVsbC84NzApIC0gUmVnaXN0ZXJpbmcgdW5kZWZp
bmVkIHBhcnRpYWwgdGhyb3dzIGV4Y2VwdGlvbi4gKFtAbWF4LWJdKGh0dHBzOi8vYXBpLmdpdGh1
Yi5jb20vdXNlcnMvbWF4LWIpKQorLSBbIzg2Nl0oaHR0cHM6Ly9naXRodWIuY29tL3d5Y2F0cy9o
YW5kbGViYXJzLmpzL2lzc3Vlcy84NjYpIC0gY29tbWVudHMgZG9uJ3QgcmVzcGVjdCB3aGl0ZXNw
YWNlIGNvbnRyb2wgKFtANzVsYl0oaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy83NWxiKSkK
Ky0gWyM4NjNdKGh0dHBzOi8vZ2l0aHViLmNvbS93eWNhdHMvaGFuZGxlYmFycy5qcy9wdWxsLzg2
MykgLSArIGpzRGVsaXZyIENETiBpbmZvIChbQHRvbUJ5cmVyXShodHRwczovL2FwaS5naXRodWIu
Y29tL3VzZXJzL3RvbUJ5cmVyKSkKKy0gWyM4NThdKGh0dHBzOi8vZ2l0aHViLmNvbS93eWNhdHMv
aGFuZGxlYmFycy5qcy9pc3N1ZXMvODU4KSAtIERpc2FibGUgbmV3IGRlZmF1bHQgYXV0by1pbmRl
bnQgYXQgaW5jbHVkZWQgcGFydGlhbHMgKFtAbWFqb2Rldl0oaHR0cHM6Ly9hcGkuZ2l0aHViLmNv
bS91c2Vycy9tYWpvZGV2KSkKKy0gWyM4NTZdKGh0dHBzOi8vZ2l0aHViLmNvbS93eWNhdHMvaGFu
ZGxlYmFycy5qcy9wdWxsLzg1NikgLSBqc3BtIGNvbXBhdGliaWxpdHkgKFtATWFqb3JCcmVha2Zh
c3RdKGh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvTWFqb3JCcmVha2Zhc3QpKQorLSBbIzgw
NV0oaHR0cHM6Ly9naXRodWIuY29tL3d5Y2F0cy9oYW5kbGViYXJzLmpzL2lzc3Vlcy84MDUpIC0g
UmVxdWVzdDogInN0cmljdCIgbG9va3VwcyAoW0BuemFrYXNdKGh0dHBzOi8vYXBpLmdpdGh1Yi5j
b20vdXNlcnMvbnpha2FzKSkKKworLSBFeHBvcnQgdGhlIGRlZmF1bHQgb2JqZWN0IGZvciBoYW5k
bGViYXJzL3J1bnRpbWUgLSA1NTk0NDE2CistIExvb2t1cCBwYXJ0aWFscyB3aGVuIHVuZGVmaW5l
ZCAtIDYxN2RkNTcKKworQ29tcGF0aWJpbGl0eSBub3RlczoKKy0gUnVudGltZSBicmVha2luZyBj
aGFuZ2VzLiBNdXN0IG1hdGNoIDMueCBydW50aW1lIGFuZCBwcmVjb21waWxlci4KKy0gVGhlIEFT
VCBoYXMgYmVlbiB1cGdyYWRlZCB0byBhIHB1YmxpYyBBUEkuCisgIC0gVGhlcmUgYXJlIGEgbnVt
YmVyIG9mIGNoYW5nZXMgdG8gdGhpcywgYnV0IHRoZSBmb3JtYXQgaXMgbm93IGRvY3VtZW50ZWQg
aW4gZG9jcy9jb21waWxlci1hcGkubWQKKyAgLSBUaGUgVmlzaXRvciBBUEkgaGFzIGJlZW4gZXhw
YW5kZWQgdG8gc3VwcG9ydCBtdXRhdGlvbiBhbmQgcHJvdmlkZSBhIGJhc2UgaW1wbGVtZW50YXRp
b24KKy0gVGhlIGBKYXZhU2NyaXB0Q29tcGlsZXJgIEFQSXMgaGF2ZSBiZWVuIGZvcm1hbGl6ZWQg
YW5kIGRvY3VtZW50ZWQuIEFzIHBhcnQgb2YgdGhlIHNvdXJjZW1hcCBoYW5kbGluZyB0aGVzZSBz
aG91bGQgYmUgdXBkYXRlZCB0byByZXR1cm4gYXJyYXlzIGZvciBjb25jYXRlbmF0aW9uLgorLSBg
SmF2YVNjcmlwdENvbXBpbGVyLm5hbWVzcGFjZWAgaGFzIGJlZW4gcmVtb3ZlZCBhcyBpdCB3YXMg
dW51c2VkLgorLSBgU2FmZVN0cmluZ2AgaXMgbm93IGR1Y2sgdHlwZWQgb24gYHRvSFRNTGAKKwor
TmV3IEZlYXR1cmVzOgorLSBub0NvbmZsaWN0CistIFNvdXJjZSBNYXBzCistIEJsb2NrIFBhcmFt
cworLSBTdHJpY3QgTW9kZQorLSBAbGFzdCBhbmQgb3RoZXIgZWFjaCBjaGFuZ2VzCistIENoYWlu
ZWQgZWxzZSBibG9ja3MKKy0gQGRhdGEgbWV0aG9kcyBjYW4gbm93IGhhdmUgaGVscGVyIHBhcmFt
ZXRlcnMgcGFzc2VkIHRvIHRoZW0KKy0gRHluYW1pYyBwYXJ0aWFscworCitbQ29tbWl0c10oaHR0
cHM6Ly9naXRodWIuY29tL3d5Y2F0cy9oYW5kbGViYXJzLmpzL2NvbXBhcmUvdjIuMC4wLi4udjMu
MC4wKQorCisjIyB2Mi4wLjAgLSBTZXB0ZW1iZXIgMXN0LCAyMDE0CistIFVwZGF0ZSBqc2ZpZGRs
ZSB0byAyLjAuMC1iZXRhLjEgLSAwNjcwZjY1CistIEFkZCBjb250cmliIG5vdGUgcmVnYXJkaW5n
IGhhbmRsZWJhcnNqcy5jb20gZG9jcyAtIDRkMTdlM2MKKy0gUGxheSBuaWNlIHdpdGggZ2Vtc3Bl
YyB2ZXJzaW9uIG51bWJlcnMgLSA2NGQ1NDgxCisKK1tDb21taXRzXShodHRwczovL2dpdGh1Yi5j
b20vd3ljYXRzL2hhbmRsZWJhcnMuanMvY29tcGFyZS92Mi4wLjAtYmV0YS4xLi4udjIuMC4wKQor
CisjIyB2Mi4wLjAtYmV0YS4xIC0gQXVndXN0IDI2dGgsIDIwMTQKKy0gWyM3ODddKGh0dHBzOi8v
Z2l0aHViLmNvbS93eWNhdHMvaGFuZGxlYmFycy5qcy9wdWxsLzc4NykgLSBSZW1vdmUgd2hpdGVz
cGFjZSBzdXJyb3VuZGluZyBzdGFuZGFsb25lIHN0YXRlbWVudHMgKFtAa3BkZWNrZXJdKGh0dHBz
Oi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMva3BkZWNrZXIpKQorLSBbIzgyN10oaHR0cHM6Ly9naXRo
dWIuY29tL3d5Y2F0cy9oYW5kbGViYXJzLmpzL2lzc3Vlcy84MjcpIC0gUmVuZGVyIGZhbHNlIGxp
dGVyYWwgYXMg4oCcZmFsc2XigJ0gKFtAc2Nvb3Q1NTddKGh0dHBzOi8vYXBpLmdpdGh1Yi5jb20v
dXNlcnMvc2Nvb3Q1NTcpKQorLSBbIzc2N10oaHR0cHM6Ly9naXRodWIuY29tL3d5Y2F0cy9oYW5k
bGViYXJzLmpzL2lzc3Vlcy83NjcpIC0gU3ViZXhwcmVzc2lvbnMgYnVnIHdpdGggaGFzaCBhbmQg
Y29udGV4dCAoW0BldmVuc291bF0oaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy9ldmVuc291
bCkpCistIENoYW5nZXMgdG8gMC91bmRlZmluZWQgaGFuZGxpbmcKKyAgLSBbIzczMV0oaHR0cHM6
Ly9naXRodWIuY29tL3d5Y2F0cy9oYW5kbGViYXJzLmpzL3B1bGwvNzMxKSAtIFN0cmFuZ2UgYmVo
YXZpb3IgZm9yIHt7I2Zvb319IHt7YmFyfX0ge3svZm9vfX0gd2hlbiBmb28gaXMgMCAoW0BrcGRl
Y2tlcl0oaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy9rcGRlY2tlcikpCisgIC0gWyM4MjBd
KGh0dHBzOi8vZ2l0aHViLmNvbS93eWNhdHMvaGFuZGxlYmFycy5qcy9pc3N1ZXMvODIwKSAtIHN0
cmFuZ2UgYmVoYXZpb3IgZm9yIHt7Zm9vLmJhcn19IHdoZW4gZm9vIGlzIDAgb3IgbnVsbCBvciBm
YWxzZSAoW0B6b3JkaXVzXShodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3pvcmRpdXMpKQor
ICAtIFsjODM3XShodHRwczovL2dpdGh1Yi5jb20vd3ljYXRzL2hhbmRsZWJhcnMuanMvaXNzdWVz
LzgzNykgLSBTdHJhbmdlIGlucHV0IGZvciBjdXN0b20gaGVscGVyICggZm9vLmJhciA9PSBmYWxz
ZSB3aGVuIGZvbyBpcyB1bmRlZmluZWQgKSAoW0B6b3JkaXVzXShodHRwczovL2FwaS5naXRodWIu
Y29tL3VzZXJzL3pvcmRpdXMpKQorLSBbIzgxOV0oaHR0cHM6Ly9naXRodWIuY29tL3d5Y2F0cy9o
YW5kbGViYXJzLmpzL3B1bGwvODE5KSAtIEltcGxlbWVudCByZWN1cnNpdmUgZmllbGQgbG9va3Vw
IChbQGtwZGVja2VyXShodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL2twZGVja2VyKSkKKy0g
WyM3NjRdKGh0dHBzOi8vZ2l0aHViLmNvbS93eWNhdHMvaGFuZGxlYmFycy5qcy9pc3N1ZXMvNzY0
KSAtIFRoaXMgcmVmZXJlbmNlIG5vdCB3b3JraW5nIGZvciBoZWxwZXJzIChbQGtwZGVja2VyXSho
dHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL2twZGVja2VyKSkKKy0gWyM3NzNdKGh0dHBzOi8v
Z2l0aHViLmNvbS93eWNhdHMvaGFuZGxlYmFycy5qcy9pc3N1ZXMvNzczKSAtIEltcGxpY2l0IHBh
cmFtZXRlcnMgaW4ge3sjZWFjaH19IGludHJvZHVjZXMgYSBwZWN1bGlhcml0eSBpbiBoZWxwZXJz
IGNhbGxpbmcgY29udmVudGlvbiAgKFtAQmVydHJhbmRdKGh0dHBzOi8vYXBpLmdpdGh1Yi5jb20v
dXNlcnMvQmVydHJhbmQpKQorLSBbIzc4M10oaHR0cHM6Ly9naXRodWIuY29tL3d5Y2F0cy9oYW5k
bGViYXJzLmpzL2lzc3Vlcy83ODMpIC0gaGVscGVyTWlzc2luZyBhbmQgY29uc2lzdGVuY3kgZm9y
IGRpZmZlcmVudCBleHByZXNzaW9uIHR5cGVzIChbQEVyaXNEU10oaHR0cHM6Ly9hcGkuZ2l0aHVi
LmNvbS91c2Vycy9FcmlzRFMpKQorLSBbIzc5NV0oaHR0cHM6Ly9naXRodWIuY29tL3d5Y2F0cy9o
YW5kbGViYXJzLmpzL3B1bGwvNzk1KSAtIFR1cm4gdGhlIHByZWNvbXBpbGUgc2NyaXB0IGludG8g
YSB3cmFwcGVyIGFyb3VuZCBhIG1vZHVsZS4gKFtAandpZXRlbG1hbm5dKGh0dHBzOi8vYXBpLmdp
dGh1Yi5jb20vdXNlcnMvandpZXRlbG1hbm4pKQorLSBbIzgyM10oaHR0cHM6Ly9naXRodWIuY29t
L3d5Y2F0cy9oYW5kbGViYXJzLmpzL3B1bGwvODIzKSAtIFN1cHBvcnQgaW52ZXJzZSBzZWN0aW9u
cyBvbiB0aGUgd2l0aCBoZWxwZXIgKFtAZGFuLW1hbmdlc10oaHR0cHM6Ly9hcGkuZ2l0aHViLmNv
bS91c2Vycy9kYW4tbWFuZ2VzKSkKKy0gWyM4MzRdKGh0dHBzOi8vZ2l0aHViLmNvbS93eWNhdHMv
aGFuZGxlYmFycy5qcy9wdWxsLzgzNCkgLSBSZWZhY3RvciBibG9ja3MsIHByb2dyYW1zIGFuZCBp
bnZlcnNlcyAoW0BtbXVuXShodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL21tdW4pKQorLSBb
Izg1Ml0oaHR0cHM6Ly9naXRodWIuY29tL3d5Y2F0cy9oYW5kbGViYXJzLmpzL2lzc3Vlcy84NTIp
IC0ge3tmb29+fX0gc3BhY2UgY29udHJvbCBiZWhhdmlvciBpcyBkaWZmZXJlbnQgZnJvbSBvbGRl
ciB2ZXJzaW9uIChbQHpvcmRpdXNdKGh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvem9yZGl1
cykpCistIFsjODM1XShodHRwczovL2dpdGh1Yi5jb20vd3ljYXRzL2hhbmRsZWJhcnMuanMvaXNz
dWVzLzgzNSkgLSBUZW1wbGF0ZXMgb3ZlcndyaXR0ZW4gaWYgZmlsZSBpcyBsb2FkZWQgdHdpY2UK
KworLSBFeHBvc2UgZXNjYXBlRXhwcmVzc2lvbiBvbiB0aGUgcm9vdCBvYmplY3QgLSA5ODBjMzhj
CistIFJlbW92ZSBuZXN0ZWQgZnVuY3Rpb24gZXZhbCBpbiBibG9ja0hlbHBlck1pc3NpbmcgLSA2
ZjIyZWMxCistIEZpeCBjb21waWxlciBwcm9ncmFtIGRlLWR1cGluZyAtIDllM2Y4MjQKKworQ29t
cGF0aWJpbGl0eSBub3RlczoKKy0gVGhlIGRlZmF1bHQgYnVpbGQgbm93IG91dHB1dHMgYSBnZW5l
cmljIFVNRCB3cmFwcGVyLiBUaGlzIHNob3VsZCBiZSB0cmFuc3BhcmVudCBjaGFuZ2UgYnV0IG1h
eSBjYXVzZSBpc3N1ZXMgaW4gc29tZSBlbnZpcm9ubWVudHMuCistIFJ1bnRpbWUgY29tcGF0aWJp
bGl0eSBicmVha3MgaW4gYm90aCBkaXJlY3Rpb25zLiBFbnN1cmUgdGhhdCBib3RoIGNvbXBpbGVy
IGFuZCBjbGllbnQgYXJlIHVwZ3JhZGVkIHRvIDIuMC4wLWJldGEuMSBvciBoaWdoZXIgYXQgdGhl
IHNhbWUgdGltZS4KKyAgLSBgcHJvZ3JhbVdpdGhEZXB0aGAgaGFzIGJlZW4gcmVtb3ZlZCBhbiBp
bnN0ZWFkIGFuIGFycmF5IG9mIGNvbnRleHQgdmFsdWVzIGlzIHBhc3NlZCB0byBmaWVsZHMgbmVl
ZGluZyBkZXB0aCBsb29rdXBzLgorLSBgZmFsc2VgIHZhbHVlcyBhcmUgbm93IHByaW50ZWQgdG8g
b3V0cHV0IHJhdGhlciB0aGFuIHNpbGVudGx5IGRyb3BwZWQKKy0gTGluZXMgY29udGFpbmluZyBv
bmx5IGJsb2NrIHN0YXRlbWVudHMgYW5kIHdoaXRlc3BhY2UgYXJlIG5vdyByZW1vdmVkLiBUaGlz
IG1hdGNoZXMgdGhlIE11c3RhY2hlIHNwZWMgYnV0IG1heSBjYXVzZSBpc3N1ZXMgd2l0aCBjb2Rl
IHRoYXQgZXhwZWN0cyB3aGl0ZXNwYWNlIHRvIGV4aXN0IGJ1dCB3b3VsZCBub3Qgb3RoZXJ3aXNl
LgorLSBQYXJ0aWFscyB0aGF0IGFyZSBzdGFuZGFsb25lIHdpbGwgbm93IGluZGVudCB0aGVpciBy
ZW5kZXJlZCBjb250ZW50CistIGBBU1QuUHJvZ3JhbU5vZGVgJ3Mgc2lnbmF0dXJlIGhhcyBjaGFu
Z2VkLiAKKy0gTnVtZXJpb3VzIG1ldGhvZHMvZmVhdHVyZXMgcmVtb3ZlZCBmcm9tIHBzdWVkby1B
UEkgY2xhc3NlcworICAtIGBKYXZhU2NyaXB0Q29tcGlsZXIucmVnaXN0ZXJgCisgIC0gYEphdmFT
Y3JpcHRDb21waWxlci5yZXBsYWNlU3RhY2tgIG5vIGxvbmdlciBzdXBwb3J0cyBub24taW5saW5l
IHJlcGxhY2UKKyAgLSBgQ29tcGlsZXIuZGlzYXNzZW1ibGVgCisgIC0gYERFQ0xBUkVgIG9wY29k
ZQorICAtIGBzdHJpcGAgb3Bjb2RlCisgIC0gYGxvb2t1cGAgb3Bjb2RlCisgIC0gQ29udGVudCBu
b2RlcyBtYXkgaGF2ZSB0aGVpciBgc3RyaW5nYCB2YWx1ZXMgbXV0YXRlZCBvdmVyIHRpbWUuIGBv
cmlnaW5hbGAgZmllbGQgcHJvdmlkZXMgdGhlIHVubW9kaWZpZWQgdmFsdWUuCistIFJlbW92ZWQg
dW51c2VkIGBIYW5kbGViYXJzLnJlZ2lzdGVySGVscGVyYCBgaW52ZXJzZWAgcGFyYW1ldGVyCist
IGBlYWNoYCBoZWxwZXIgcmVxdWlyZXMgaXRlcmF0b3IgcGFyYW1ldGVyCisKK1tDb21taXRzXSho
dHRwczovL2dpdGh1Yi5jb20vd3ljYXRzL2hhbmRsZWJhcnMuanMvY29tcGFyZS92Mi4wLjAtYWxw
aGEuNC4uLnYyLjAuMC1iZXRhLjEpCisKKyMjIHYyLjAuMC1hbHBoYS40IC0gTWF5IDE5dGgsIDIw
MTQKKy0gRXhwb3NlIHNldHVwIHdyYXBwZXJzIGZvciBjb21waWxlZCB0ZW1wbGF0ZXMgLSAzNjM4
ODc0CisKK1tDb21taXRzXShodHRwczovL2dpdGh1Yi5jb20vd3ljYXRzL2hhbmRsZWJhcnMuanMv
Y29tcGFyZS92Mi4wLjAtYWxwaGEuMy4uLnYyLjAuMC1hbHBoYS40KQorCisjIyB2Mi4wLjAtYWxw
aGEuMyAtIE1heSAxOXRoLCAyMDE0CistIFsjNzk3XShodHRwczovL2dpdGh1Yi5jb20vd3ljYXRz
L2hhbmRsZWJhcnMuanMvcHVsbC83OTcpIC0gUGFzcyBmdWxsIGhlbHBlciBJRCB0byBoZWxwZXJN
aXNzaW5nIHdoZW4gb3B0aW9ucyBhcmUgcHJvdmlkZWQgKFtAdG9tZGFsZV0oaHR0cHM6Ly9hcGku
Z2l0aHViLmNvbS91c2Vycy90b21kYWxlKSkKKy0gWyM3OTNdKGh0dHBzOi8vZ2l0aHViLmNvbS93
eWNhdHMvaGFuZGxlYmFycy5qcy9wdWxsLzc5MykgLSBFbnN1cmUgaXNIZWxwZXIgaXMgY29lcmNl
ZCB0byBhIGJvb2xlYW4gKFtAbW11bl0oaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy9tbXVu
KSkKKy0gUmVmYWN0b3IgdGVtcGxhdGUgaW5pdCBsb2dpYyAtIDA4NWU1ZTEKKworW0NvbW1pdHNd
KGh0dHBzOi8vZ2l0aHViLmNvbS93eWNhdHMvaGFuZGxlYmFycy5qcy9jb21wYXJlL3YyLjAuMC1h
bHBoYS4yLi4udjIuMC4wLWFscGhhLjMpCisKKyMjIHYyLjAuMC1hbHBoYS4yIC0gTWFyY2ggNnRo
LCAyMDE0CistIFsjNzU2XShodHRwczovL2dpdGh1Yi5jb20vd3ljYXRzL2hhbmRsZWJhcnMuanMv
cHVsbC83NTYpIC0gZml4IGJ1ZyBpbiBJRTw9OCAobm8gQXJyYXk6Om1hcCksIGNsb3NlcyAjNzUx
IChbQGplbnNlbmddKGh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvamVuc2VuZykpCistIFsj
NzQ5XShodHRwczovL2dpdGh1Yi5jb20vd3ljYXRzL2hhbmRsZWJhcnMuanMvcHVsbC83NDkpIC0g
cHJvcGVybHkgaGFuZGxlIG11bHRpcGxlIHN1YmV4cHJlc3Npb25zIGluIHRoZSBzYW1lIGhhc2gs
IGZpeGVzICM3NDggKFtAamVuc2VuZ10oaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy9qZW5z
ZW5nKSkKKy0gWyM3NDNdKGh0dHBzOi8vZ2l0aHViLmNvbS93eWNhdHMvaGFuZGxlYmFycy5qcy9p
c3N1ZXMvNzQzKSAtIHN1YmV4cHJlc3Npb24gY29uZnVzaW9uL3Byb2JsZW0/IChbQHdheW5lZHBq
XShodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3dheW5lZHBqKSkKKy0gWyM3NDZdKGh0dHBz
Oi8vZ2l0aHViLmNvbS93eWNhdHMvaGFuZGxlYmFycy5qcy9pc3N1ZXMvNzQ2KSAtIFtDTEldIHN1
cHBvcnQgYGhhbmRsZWJhcnMgLS12ZXJzaW9uYCAoW0BhcGZlbGJveF0oaHR0cHM6Ly9hcGkuZ2l0
aHViLmNvbS91c2Vycy9hcGZlbGJveCkpCistIFsjNzQ3XShodHRwczovL2dpdGh1Yi5jb20vd3lj
YXRzL2hhbmRsZWJhcnMuanMvcHVsbC83NDcpIC0gdXBkYXRlZCBncnVudC1zYXVjZWxhYnMsIGZh
aWxpbmcgdGVzdHMgcmV2ZWFsZWQgKFtASm9uYWhzc10oaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91
c2Vycy9Kb25haHNzKSkKKy0gTWFrZSBKU09OIGEgcmVxdWlyZW1lbnQgZm9yIHRoZSBjb21waWxl
ci4gLSAwNThjMGZiCistIFRlbXBvcmFyaWx5IGtpbGwgdGhlIEFXUyBwdWJsaXNoIENJIHN0ZXAg
LSA4MzQ3ZWUyCisKK0NvbXBhdGliaWxpdHkgbm90ZXM6CistIEEgSlNPTiBwb2x5ZmlsbCBpcyBy
ZXF1aXJlZCB0byBydW4gdGhlIGNvbXBpbGVyIHVuZGVyIElFOCBhbmQgYmVsb3cuIEl0J3MgcmVj
b21tZW5kZWQgdGhhdCB0aGUgcHJlY29tcGlsZXIgYmUgdXNlZCBpbiBsaWV1IG9mIHJ1bm5pbmcg
dGhlIGNvbXBpbGVyIG9uIHRoZXNlIGxlZ2FjeSBlbnZpcm9ubWVudHMuCisKK1tDb21taXRzXSho
dHRwczovL2dpdGh1Yi5jb20vd3ljYXRzL2hhbmRsZWJhcnMuanMvY29tcGFyZS92Mi4wLjAtYWxw
aGEuMS4uLnYyLjAuMC1hbHBoYS4yKQorCisjIyB2Mi4wLjAtYWxwaGEuMSAtIEZlYnJ1YXJ5IDEw
dGgsIDIwMTQKKy0gWyMxODJdKGh0dHBzOi8vZ2l0aHViLmNvbS93eWNhdHMvaGFuZGxlYmFycy5q
cy9wdWxsLzE4MikgLSBBbGxvdyBwYXNzaW5nIGhhc2ggcGFyYW1ldGVycyB0byBwYXJ0aWFscyAo
W0BrcGRlY2tlcl0oaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy9rcGRlY2tlcikpCistIFsj
MzkyXShodHRwczovL2dpdGh1Yi5jb20vd3ljYXRzL2hhbmRsZWJhcnMuanMvcHVsbC8zOTIpIC0g
QWNjZXNzIHRvIHJvb3QgY29udGV4dCBpbiBwYXJ0aWFscyBhbmQgaGVscGVycyAoW0BrcGRlY2tl
cl0oaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy9rcGRlY2tlcikpCistIFsjNDcyXShodHRw
czovL2dpdGh1Yi5jb20vd3ljYXRzL2hhbmRsZWJhcnMuanMvaXNzdWVzLzQ3MikgLSBIZWxwZXJz
IGNhbm5vdCBoYXZlIGRlY2ltYWwgcGFyYW1ldGVycyAoW0BrYXlsZWddKGh0dHBzOi8vYXBpLmdp
dGh1Yi5jb20vdXNlcnMva2F5bGVnKSkKKy0gWyM1NjldKGh0dHBzOi8vZ2l0aHViLmNvbS93eWNh
dHMvaGFuZGxlYmFycy5qcy9wdWxsLzU2OSkgLSBVbmFibGUgdG8gbG9va3VwIGFycmF5IHZhbHVl
cyB1c2luZyBAaW5kZXggKFtAa3BkZWNrZXJdKGh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMv
a3BkZWNrZXIpKQorLSBbIzQ5MV0oaHR0cHM6Ly9naXRodWIuY29tL3d5Y2F0cy9oYW5kbGViYXJz
LmpzL3B1bGwvNDkxKSAtIEZvciBuZXN0ZWQgaGVscGVyczogZ2V0IHRoZSBAIHZhcmlhYmxlcyBv
ZiB0aGUgb3V0ZXIgaGVscGVyIGZyb20gdGhlIGlubmVyIG9uZSAoW0BrcGRlY2tlcl0oaHR0cHM6
Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy9rcGRlY2tlcikpCistIFsjNjY5XShodHRwczovL2dpdGh1
Yi5jb20vd3ljYXRzL2hhbmRsZWJhcnMuanMvaXNzdWVzLzY2OSkgLSBBYmlsaXR5IHRvIHVucmVn
aXN0ZXIgYSBoZWxwZXIgKFtAZGJhY2hyYWNoXShodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJz
L2RiYWNocmFjaCkpCistIFsjNzMwXShodHRwczovL2dpdGh1Yi5jb20vd3ljYXRzL2hhbmRsZWJh
cnMuanMvcHVsbC83MzApIC0gUmF3IGJsb2NrIGhlbHBlcnMgKFtAa3BkZWNrZXJdKGh0dHBzOi8v
YXBpLmdpdGh1Yi5jb20vdXNlcnMva3BkZWNrZXIpKQorLSBbIzYzNF0oaHR0cHM6Ly9naXRodWIu
Y29tL3d5Y2F0cy9oYW5kbGViYXJzLmpzL3B1bGwvNjM0KSAtIEl0IHdvdWxkIGJlIGdyZWF0IHRv
IGhhdmUgdGhlIGhlbHBlciBuYW1lIHBhc3NlZCB0byBgYmxvY2tIZWxwZXJNaXNzaW5nYCAoW0Br
cGRlY2tlcl0oaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy9rcGRlY2tlcikpCistIFsjNzI5
XShodHRwczovL2dpdGh1Yi5jb20vd3ljYXRzL2hhbmRsZWJhcnMuanMvcHVsbC83MjkpIC0gQ29u
dmVydCB0ZW1wbGF0ZSBzcGVjIHRvIG9iamVjdCBsaXRlcmFsIChbQGtwZGVja2VyXShodHRwczov
L2FwaS5naXRodWIuY29tL3VzZXJzL2twZGVja2VyKSkKKworLSBbIzY1OF0oaHR0cHM6Ly9naXRo
dWIuY29tL3d5Y2F0cy9oYW5kbGViYXJzLmpzL2lzc3Vlcy82NTgpIC0gRGVwdGhlZCBoZWxwZXJz
IGRvIG5vdCB3b3JrIGFmdGVyIGFuIHVwZ3JhZGUgZnJvbSAxLjAuMCAoW0B4aWJ4b3JdKGh0dHBz
Oi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMveGlieG9yKSkKKy0gWyM2NzFdKGh0dHBzOi8vZ2l0aHVi
LmNvbS93eWNhdHMvaGFuZGxlYmFycy5qcy9pc3N1ZXMvNjcxKSAtIENyYXNoZXMgb24gbm8tcGFy
YW1ldGVyIHt7I2VhY2h9fSAoW0BzdGVwYW5jaGVnXShodHRwczovL2FwaS5naXRodWIuY29tL3Vz
ZXJzL3N0ZXBhbmNoZWcpKQorLSBbIzY4OV0oaHR0cHM6Ly9naXRodWIuY29tL3d5Y2F0cy9oYW5k
bGViYXJzLmpzL2lzc3Vlcy82ODkpIC0gYnJva2VuIHRlbXBsYXRlIHByZWNvbXBpbGF0aW9uIChb
QEFBU10oaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy9BQVMpKQorLSBbIzY5OF0oaHR0cHM6
Ly9naXRodWIuY29tL3d5Y2F0cy9oYW5kbGViYXJzLmpzL3B1bGwvNjk4KSAtIEZpeCBwYXJzZXIg
Z2VuZXJhdGlvbiB1bmRlciB3aW5kb3dzIChbQG9zaXJpczQzXShodHRwczovL2FwaS5naXRodWIu
Y29tL3VzZXJzL29zaXJpczQzKSkKKy0gWyM2OTldKGh0dHBzOi8vZ2l0aHViLmNvbS93eWNhdHMv
aGFuZGxlYmFycy5qcy9pc3N1ZXMvNjk5KSAtIEBEQVRBIG5vdCBjb21waWxlcyB0byBpbnZhbGlk
IEpTIGluIHN0cmluZ1BhcmFtcyBtb2RlIChbQGtwZGVja2VyXShodHRwczovL2FwaS5naXRodWIu
Y29tL3VzZXJzL2twZGVja2VyKSkKKy0gWyM3MDVdKGh0dHBzOi8vZ2l0aHViLmNvbS93eWNhdHMv
aGFuZGxlYmFycy5qcy9pc3N1ZXMvNzA1KSAtIDEuMy4wIGNhbiBub3QgYmUgd3JhcHBlZCBpbiBh
biBJSUZFIChbQGNyYWlndGVlZ2FyZGVuXShodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL2Ny
YWlndGVlZ2FyZGVuKSkKKy0gWyM3MDZdKGh0dHBzOi8vZ2l0aHViLmNvbS93eWNhdHMvaGFuZGxl
YmFycy5qcy9wdWxsLzcwNikgLSBSRUFETUU6IFVzZSB3aXRoIGhlbHBlciBpbnN0ZWFkIG9mIHJl
bHlpbmcgb24gYmxvY2tIZWxwZXJNaXNzaW5nIChbQHNjb3R0Z29uemFsZXpdKGh0dHBzOi8vYXBp
LmdpdGh1Yi5jb20vdXNlcnMvc2NvdHRnb256YWxleikpCisKKy0gWyM3MDBdKGh0dHBzOi8vZ2l0
aHViLmNvbS93eWNhdHMvaGFuZGxlYmFycy5qcy9wdWxsLzcwMCkgLSBSZW1vdmUgcmVkdW5kYW50
IGNvbmRpdGlvbnMgKFtAYmxha2VlbWJyZXldKGh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMv
Ymxha2VlbWJyZXkpKQorLSBbIzcwNF0oaHR0cHM6Ly9naXRodWIuY29tL3d5Y2F0cy9oYW5kbGVi
YXJzLmpzL3B1bGwvNzA0KSAtIEphdmFTY3JpcHQgQ29tcGlsZXIgQ2xlYW51cCAoW0BibGFrZWVt
YnJleV0oaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy9ibGFrZWVtYnJleSkpCisKK0NvbXBh
dGliaWxpdHkgbm90ZXM6CistIGBoZWxwZXJNaXNzaW5nYCBoZWxwZXIgbm8gbG9uZ2VyIGhhcyB0
aGUgaW5kZXhlZCBuYW1lIGFyZ3VtZW50LiBIZWxwZXIgbmFtZSBpcyBub3cgYXZhaWxhYmxlIHZp
YSBgb3B0aW9ucy5uYW1lYC4KKy0gUHJlY29tcGlsZXIgb3V0cHV0IGhhcyBjaGFuZ2VkLCB3aGlj
aCBicmVha3MgY29tcGF0aWJpbGl0eSB3aXRoIHByaW9yIHZlcnNpb25zIG9mIHRoZSBydW50aW1l
IGFuZCBwcmVjb21waWxlZCBvdXRwdXQuCistIGBKYXZhU2NyaXB0Q29tcGlsZXIuY29tcGlsZXJJ
bmZvYCBub3cgcmV0dXJucyBnZW5lcmljIG9iamVjdHMgcmF0aGVyIHRoYW4gamF2YXNjcmlwdCBz
b3VyY2UuCistIEFTVCBjaGFuZ2VzCisgIC0gSU5URUdFUiAtPiBOVU1CRVIKKyAgLSBBZGRpdGlv
bmFsIFBhcnRpYWxOb2RlIGhhc2ggcGFyYW1ldGVyCisgIC0gTmV3IFJhd0Jsb2NrTm9kZSB0eXBl
CistIERhdGEgZnJhbWVzIG5vdyBoYXZlIGEgYF9wYXJlbnRgIGZpZWxkLiBUaGlzIGlzIGludGVy
bmFsIGJ1dCBpcyBlbnVtZXJhYmxlIGZvciBwZXJmb3JtYW5jZS9jb21wYXRpYmlsaXR5IHJlYXNv
bnMuCisKK1tDb21taXRzXShodHRwczovL2dpdGh1Yi5jb20vd3ljYXRzL2hhbmRsZWJhcnMuanMv
Y29tcGFyZS92MS4zLjAuLi52Mi4wLjAtYWxwaGEuMSkKKworIyMgdjEuMy4wIC0gSmFudWFyeSAx
c3QsIDIwMTQKKy0gWyM2OTBdKGh0dHBzOi8vZ2l0aHViLmNvbS93eWNhdHMvaGFuZGxlYmFycy5q
cy9wdWxsLzY5MCkgLSBBZGRlZCBzdXBwb3J0IGZvciBzdWJleHByZXNzaW9ucyAoW0BtYWNodHld
KGh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvbWFjaHR5KSkKKy0gWyM2OTZdKGh0dHBzOi8v
Z2l0aHViLmNvbS93eWNhdHMvaGFuZGxlYmFycy5qcy9wdWxsLzY5NikgLSBGaXggZm9yIHJlc2Vy
dmVkIGtleXdvcmQgImRlZmF1bHQiIChbQG5hdGVpcndpbl0oaHR0cHM6Ly9hcGkuZ2l0aHViLmNv
bS91c2Vycy9uYXRlaXJ3aW4pKQorLSBbIzY5Ml0oaHR0cHM6Ly9naXRodWIuY29tL3d5Y2F0cy9o
YW5kbGViYXJzLmpzL3B1bGwvNjkyKSAtIGFkZCBsaW5lIG51bWJlcnMgdG8gbm9kZXMgd2hlbiBw
YXJzaW5nIChbQGZpdmV0YW5sZXldKGh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvZml2ZXRh
bmxleSkpCistIFsjNjk1XShodHRwczovL2dpdGh1Yi5jb20vd3ljYXRzL2hhbmRsZWJhcnMuanMv
cHVsbC82OTUpIC0gUHVsbCBvcHRpb25zIG91dCBmcm9tIHBhcmFtIHNldHVwIHRvIGFsbG93IGVh
c2llciBleHRlbnNpb24gKFtAYmxha2VlbWJyZXldKGh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNl
cnMvYmxha2VlbWJyZXkpKQorLSBbIzY5NF0oaHR0cHM6Ly9naXRodWIuY29tL3d5Y2F0cy9oYW5k
bGViYXJzLmpzL3B1bGwvNjk0KSAtIE1ha2UgdGhlIGVudmlyb25tZW50IHJldXNhYmxlIChbQGJs
YWtlZW1icmV5XShodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL2JsYWtlZW1icmV5KSkKKy0g
WyM2MzZdKGh0dHBzOi8vZ2l0aHViLmNvbS93eWNhdHMvaGFuZGxlYmFycy5qcy9pc3N1ZXMvNjM2
KSAtIFByaW50IGxpbmUgYW5kIGNvbHVtbiBvZiBlcnJvcnMgKFtAc2dyb25ibG9dKGh0dHBzOi8v
YXBpLmdpdGh1Yi5jb20vdXNlcnMvc2dyb25ibG8pKQorLSBVc2UgbGl0ZXJhbCBmb3IgZGF0YSBs
b29rdXAgLSBjMWE5M2QzCistIEFkZCBzdGFjayBoYW5kbGluZyBzYW5pdHkgY2hlY2tzIC0gY2Q4
ODViZgorLSBGaXggc3RhY2sgaWQgImxlYWsiIG9uIHJlcGxhY2VTdGFjayAtIGRkZmU0NTcKKy0g
Rml4IGluY29ycmVjdCBzdGFjayBwb3Agd2hlbiByZXBsYWNpbmcgbGl0ZXJhbHMgLSBmNGQzMzdk
CisKK1tDb21taXRzXShodHRwczovL2dpdGh1Yi5jb20vd3ljYXRzL2hhbmRsZWJhcnMuanMvY29t
cGFyZS92MS4yLjEuLi52MS4zLjApCisKKyMjIHYxLjIuMSAtIERlY2VtYmVyIDI2dGgsIDIwMTMK
Ky0gWyM2ODRdKGh0dHBzOi8vZ2l0aHViLmNvbS93eWNhdHMvaGFuZGxlYmFycy5qcy9wdWxsLzY4
NCkgLSBBbGxvdyBhbnkgbnVtYmVyIG9mIHRyYWlsaW5nIGNoYXJhY3RlcnMgZm9yIHZhbGlkIEph
dmFTY3JpcHQgdmFyaWFibGUgKFtAYmxha2VlbWJyZXldKGh0dHBzOi8vYXBpLmdpdGh1Yi5jb20v
dXNlcnMvYmxha2VlbWJyZXkpKQorLSBbIzY4Nl0oaHR0cHM6Ly9naXRodWIuY29tL3d5Y2F0cy9o
YW5kbGViYXJzLmpzL3B1bGwvNjg2KSAtIEZhbHN5IEFNRCBtb2R1bGUgbmFtZXMgaW4gdmVyc2lv
biAxLjIuMCAoW0BrcGRlY2tlcl0oaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy9rcGRlY2tl
cikpCisKK1tDb21taXRzXShodHRwczovL2dpdGh1Yi5jb20vd3ljYXRzL2hhbmRsZWJhcnMuanMv
Y29tcGFyZS92MS4yLjAuLi52MS4yLjEpCisKKyMjIHYxLjIuMCAtIERlY2VtYmVyIDIzcmQsIDIw
MTMKKy0gWyM2NzVdKGh0dHBzOi8vZ2l0aHViLmNvbS93eWNhdHMvaGFuZGxlYmFycy5qcy9pc3N1
ZXMvNjc1KSAtIENhbm5vdCBjb21waWxlIGVtcHR5IHRlbXBsYXRlIGZvciBwYXJ0aWFsIChbQGVy
d2lud10oaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy9lcndpbncpKQorLSBbIzY3N10oaHR0
cHM6Ly9naXRodWIuY29tL3d5Y2F0cy9oYW5kbGViYXJzLmpzL2lzc3Vlcy82NzcpIC0gVHJpcGxl
IGJyYWNlIHN0YXRlbWVudHMgZmFpbCB1bmRlciBJRSAoW0BoYW16YUNNXShodHRwczovL2FwaS5n
aXRodWIuY29tL3VzZXJzL2hhbXphQ00pKQorLSBbIzY1NV0oaHR0cHM6Ly9naXRodWIuY29tL3d5
Y2F0cy9oYW5kbGViYXJzLmpzL2lzc3Vlcy82NTUpIC0gTG9hZGluZyBIYW5kbGViYXJzIHVzaW5n
IGJvd2VyIChbQG5pa2k0ODEwXShodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL25pa2k0ODEw
KSkKKy0gWyM2NTddKGh0dHBzOi8vZ2l0aHViLmNvbS93eWNhdHMvaGFuZGxlYmFycy5qcy9wdWxs
LzY1NykgLSBGaXhlcyBpc3N1ZSB3aGVyZSBjbGkgY29tcGlsZXMgbm9uIGhhbmRsZWJhcnMgdGVt
cGxhdGVzIChbQGNocmlzaG9hZ2VdKGh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvY2hyaXNo
b2FnZSkpCistIFsjNjgxXShodHRwczovL2dpdGh1Yi5jb20vd3ljYXRzL2hhbmRsZWJhcnMuanMv
cHVsbC82ODEpIC0gQWRkcyBpbi1icm93c2VyIHRlc3RpbmcgYW5kIFNhdWNlbGFicyBDSSAoW0Br
cGRlY2tlcl0oaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy9rcGRlY2tlcikpCistIFsjNjYx
XShodHRwczovL2dpdGh1Yi5jb20vd3ljYXRzL2hhbmRsZWJhcnMuanMvcHVsbC82NjEpIC0gQWRk
IEBmaXJzdCBhbmQgQGluZGV4IHRvICNlYWNoIG9iamVjdCBpdGVyYXRpb24gKFtAY2dwXShodHRw
czovL2FwaS5naXRodWIuY29tL3VzZXJzL2NncCkpCistIFsjNjUwXShodHRwczovL2dpdGh1Yi5j
b20vd3ljYXRzL2hhbmRsZWJhcnMuanMvcHVsbC82NTApIC0gSGFuZGxlYmFycyBpcyBNSVQtbGlj
ZW5zZWQgKFtAdGhvbWFzYm95dF0oaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy90aG9tYXNi
b3l0KSkKKy0gWyM2NDFdKGh0dHBzOi8vZ2l0aHViLmNvbS93eWNhdHMvaGFuZGxlYmFycy5qcy9w
dWxsLzY0MSkgLSBEb2N1bWVudCBlbWJlciB0ZXN0aW5nIHByb2Nlc3MgKFtAa3BkZWNrZXJdKGh0
dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMva3BkZWNrZXIpKQorLSBbIzY2Ml0oaHR0cHM6Ly9n
aXRodWIuY29tL3d5Y2F0cy9oYW5kbGViYXJzLmpzL2lzc3Vlcy82NjIpIC0gaGFuZGxlYmFycy1z
b3VyY2UgMS4xLjIgaXMgbWlzc2luZyBmcm9tIFJ1YnlHZW1zLgorLSBbIzY1Nl0oaHR0cHM6Ly9n
aXRodWIuY29tL3d5Y2F0cy9oYW5kbGViYXJzLmpzL2lzc3Vlcy82NTYpIC0gRXhwb3NlIENPTVBJ
TEVSX1JFVklTSU9OIGNoZWNrcyBhcyBhIGhvb2sgKFtAbWFjaHR5XShodHRwczovL2FwaS5naXRo
dWIuY29tL3VzZXJzL21hY2h0eSkpCistIFsjNjY4XShodHRwczovL2dpdGh1Yi5jb20vd3ljYXRz
L2hhbmRsZWJhcnMuanMvaXNzdWVzLzY2OCkgLSBDb25zaWRlciBwdWJsaXNoaW5nIGhhbmRsZWJh
cnMtcnVudGltZSBhcyBhIHNlcGFyYXRlIG1vZHVsZSBvbiBucG0gKFtAZGxtYW5uaW5nXShodHRw
czovL2FwaS5naXRodWIuY29tL3VzZXJzL2RsbWFubmluZykpCistIFsjNjc5XShodHRwczovL2dp
dGh1Yi5jb20vd3ljYXRzL2hhbmRsZWJhcnMuanMvaXNzdWVzLzY3OSkgLSBVbmFibGUgdG8gb3Zl
cnJpZGUgaW52b2tlUGFydGlhbCAoW0BtYXR0YnJhaWxzZm9yZF0oaHR0cHM6Ly9hcGkuZ2l0aHVi
LmNvbS91c2Vycy9tYXR0YnJhaWxzZm9yZCkpCistIFsjNjQ2XShodHRwczovL2dpdGh1Yi5jb20v
d3ljYXRzL2hhbmRsZWJhcnMuanMvcHVsbC82NDYpIC0gRml4ICJcXHt7IiBpbW1lZGlhdGVseSBm
b2xsb3dpbmcgIlx7eyIgKFtAZG1hcmNvdHRlXShodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJz
L2RtYXJjb3R0ZSkpCistIEFsbG93IGV4dGVuZCB0byB3b3JrIHdpdGggbm9uLXByb3RvdHlwZWQg
b2JqZWN0cyAtIGViNTNmMmUKKy0gQWRkIEphdmFzY3JpcHRDb21waWxlciBwdWJsaWMgQVBJIHRl
c3RzIC0gMWE3NTFiMgorLSBBZGQgQVNUIHRlc3QgY292ZXJhZ2UgZm9yIG1vcmUgY29tcGxleCBw
YXRocyAtIGRkZWE1YmUKKy0gRml4IGhhbmRsaW5nIG9mIGJvb2xlYW4gZXNjYXBlIGluIE11c3Rh
Y2hlTm9kZSAtIGI0OTY4YmIKKworQ29tcGF0aWJpbGl0eSBub3RlczoKKy0gYEBpbmRleGAgYW5k
IGBAZmlyc3RgIGFyZSBub3cgc3VwcG9ydGVkIGZvciBgZWFjaGAgaXRlcmF0aW9uIG9uIG9iamVj
dHMKKy0gYEhhbmRsZWJhcnMuVk0uY2hlY2tSZXZpc2lvbmAgYW5kIGBIYW5kbGViYXJzLkphdmFT
Y3JpcHRDb21waWxlci5wcm90b3R5cGUuY29tcGlsZXJJbmZvYCBub3cgYXZhaWxhYmxlIHRvIG1v
ZGlmeSB0aGUgdmVyc2lvbiBjaGVja2luZyBiZWhhdmlvci4KKy0gQnJvd3NlcmlmeSB1c2VycyBt
YXkgbGluayB0byB0aGUgcnVudGltZSBsaWJyYXJ5IHZpYSBgcmVxdWlyZSgnaGFuZGxlYmFycy9y
dW50aW1lJylgCisKK1tDb21taXRzXShodHRwczovL2dpdGh1Yi5jb20vd3ljYXRzL2hhbmRsZWJh
cnMuanMvY29tcGFyZS92MS4xLjIuLi52MS4yLjApCisKKyMjIHYxLjEuMiAtIE5vdmVtYmVyIDV0
aCwgMjAxMworCistIFsjNjQ1XShodHRwczovL2dpdGh1Yi5jb20vd3ljYXRzL2hhbmRsZWJhcnMu
anMvaXNzdWVzLzY0NSkgLSAxLjEuMSBmYWlscyB1bmRlciBJRTggKFtAa3BkZWNrZXJdKGh0dHBz
Oi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMva3BkZWNrZXIpKQorLSBbIzY0NF0oaHR0cHM6Ly9naXRo
dWIuY29tL3d5Y2F0cy9oYW5kbGViYXJzLmpzL2lzc3Vlcy82NDQpIC0gVXNpbmcgcHJlY29tcGls
ZWQgdGVtcGxhdGVzIChBTUQgbW9kZSkgd2l0aCBoYW5kbGViYXJzLnJ1bnRpbWUgMS4xLjEgKFtA
ZmRkaW1hXShodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL2ZkZGltYSkpCisKKy0gQWRkIHNp
bXBsZSBiaW5hcnkgdXRpbGl0eSB0ZXN0cyAtIDk2YTQ1YTQKKy0gRml4IGVtcHR5IHN0cmluZyBj
b21waWxhdGlvbiAtIGVlYTcwOGEKKworW0NvbW1pdHNdKGh0dHBzOi8vZ2l0aHViLmNvbS93eWNh
dHMvaGFuZGxlYmFycy5qcy9jb21wYXJlL3YxLjEuMS4uLnYxLjEuMikKKworIyMgdjEuMS4xIC0g
Tm92ZW1iZXIgNHRoLCAyMDEzCisKKy0gWyM2NDJdKGh0dHBzOi8vZ2l0aHViLmNvbS93eWNhdHMv
aGFuZGxlYmFycy5qcy9pc3N1ZXMvNjQyKSAtIGhhbmRsZWJhcnMgMS4xLjAgYXJlIGJyb2tlbiB3
aXRoIG5vZGVqcworCistIEZpeCByZWxlYXNlIG5vdGVzIGxpbmsgLSAxN2JhMjU4CisKK1tDb21t
aXRzXShodHRwczovL2dpdGh1Yi5jb20vd3ljYXRzL2hhbmRsZWJhcnMuanMvY29tcGFyZS92MS4x
LjAuLi52MS4xLjEpCisKKyMjIHYxLjEuMCAtIE5vdmVtYmVyIDNyZCwgMjAxMworCistIFsjNjI4
XShodHRwczovL2dpdGh1Yi5jb20vd3ljYXRzL2hhbmRsZWJhcnMuanMvcHVsbC82MjgpIC0gQ29u
dmVydCBjb2RlIHRvIEVTNiBtb2R1bGVzIChbQGtwZGVja2VyXShodHRwczovL2FwaS5naXRodWIu
Y29tL3VzZXJzL2twZGVja2VyKSkKKy0gWyMzMzZdKGh0dHBzOi8vZ2l0aHViLmNvbS93eWNhdHMv
aGFuZGxlYmFycy5qcy9wdWxsLzMzNikgLSBBZGQgd2hpdGVzcGFjZSBjb250cm9sIHN5bnRheCAo
W0BrcGRlY2tlcl0oaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy9rcGRlY2tlcikpCistIFsj
NTM1XShodHRwczovL2dpdGh1Yi5jb20vd3ljYXRzL2hhbmRsZWJhcnMuanMvcHVsbC81MzUpIC0g
Rml4IGZvciBwcm9iYWJsZSBKSVQgZXJyb3IgdW5kZXIgU2FmYXJpIChbQHNvcmVudHdvXShodHRw
czovL2FwaS5naXRodWIuY29tL3VzZXJzL3NvcmVudHdvKSkKKy0gWyM0ODNdKGh0dHBzOi8vZ2l0
aHViLmNvbS93eWNhdHMvaGFuZGxlYmFycy5qcy9pc3N1ZXMvNDgzKSAtIEFkZCBmaXJzdCBhbmQg
bGFzdCBAIHZhcnMgdG8gZWFjaCBoZWxwZXIgKFtAZGVubmlza3Vjenluc2tpXShodHRwczovL2Fw
aS5naXRodWIuY29tL3VzZXJzL2Rlbm5pc2t1Y3p5bnNraSkpCistIFsjNTU3XShodHRwczovL2dp
dGh1Yi5jb20vd3ljYXRzL2hhbmRsZWJhcnMuanMvcHVsbC81NTcpIC0gYFxce3tmb299fWAgZXNj
YXBpbmcgb25seSB3b3JrcyBpbiBzb21lIHNpdHVhdGlvbnMgKFtAZG1hcmNvdHRlXShodHRwczov
L2FwaS5naXRodWIuY29tL3VzZXJzL2RtYXJjb3R0ZSkpCistIFsjNTUyXShodHRwczovL2dpdGh1
Yi5jb20vd3ljYXRzL2hhbmRsZWJhcnMuanMvcHVsbC81NTIpIC0gQWRkZWQgQk9NIHJlbW92YWwg
ZmxhZy4gKFtAYmxlc3Nlbm1dKGh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvYmxlc3Nlbm0p
KQorLSBbIzU0M10oaHR0cHM6Ly9naXRodWIuY29tL3d5Y2F0cy9oYW5kbGViYXJzLmpzL3B1bGwv
NTQzKSAtIHB1Ymxpc2ggcGFzc2luZyBtYXN0ZXIgYnVpbGRzIHRvIHMzIChbQGZpdmV0YW5sZXld
KGh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvZml2ZXRhbmxleSkpCisKKy0gWyM2MDhdKGh0
dHBzOi8vZ2l0aHViLmNvbS93eWNhdHMvaGFuZGxlYmFycy5qcy9pc3N1ZXMvNjA4KSAtIEFkZCBg
aW5jbHVkZVplcm9gIGZsYWcgdG8gYGlmYCBjb25kaXRpb25hbAorLSBbIzQ5OF0oaHR0cHM6Ly9n
aXRodWIuY29tL3d5Y2F0cy9oYW5kbGViYXJzLmpzL2lzc3Vlcy80OTgpIC0gYEhhbmRsZWJhcnMu
Y29tcGlsZWAgZmFpbHMgb24gZW1wdHkgc3RyaW5nIGFsdGhvdWdoIGEgc2luZ2xlIGJsYW5rIHdv
cmtzIGZpbmUKKy0gWyM1OTldKGh0dHBzOi8vZ2l0aHViLmNvbS93eWNhdHMvaGFuZGxlYmFycy5q
cy9pc3N1ZXMvNTk5KSAtIGxhbWJkYSBoZWxwZXJzIG9ubHkgcmVjZWl2ZSBvcHRpb25zIGlmIHVz
ZWQgd2l0aCBhcmd1bWVudHMKKy0gWyM1OTJdKGh0dHBzOi8vZ2l0aHViLmNvbS93eWNhdHMvaGFu
ZGxlYmFycy5qcy9pc3N1ZXMvNTkyKSAtIE9wdGltaXplIGFycmF5IGFuZCBzdWJwcm9ncmFtIHBl
cmZvcm1hbmNlCistIFsjNTcxXShodHRwczovL2dpdGh1Yi5jb20vd3ljYXRzL2hhbmRsZWJhcnMu
anMvaXNzdWVzLzU3MSkgLSB1Z2xpZnkgdXBncmFkZSBicmVha3MgY29tcGF0aWJpbGl0eSB3aXRo
IG9sZGVyIHZlcnNpb25zIG9mIG5vZGUKKy0gWyM1ODddKGh0dHBzOi8vZ2l0aHViLmNvbS93eWNh
dHMvaGFuZGxlYmFycy5qcy9pc3N1ZXMvNTg3KSAtIFBhcnRpYWwgaW5zaWRlIHBhcnRpYWwgYnJl
YWtzPworCisKK0NvbXBhdGliaWxpdHkgbm90ZXM6CistIFRoZSBwcm9qZWN0IG5vdyBpbmNsdWRl
cyBzZXBhcmF0ZSBhcnRpZmFjdHMgZm9yIEFNRCwgQ29tbW9uSlMsIGFuZCBnbG9iYWwgb2JqZWN0
cy4gCisgIC0gQU1EOiBVc2VycyBtYXkgbG9hZCB0aGUgYnVuZGxlZCBgaGFuZGxlYmFycy5hbWQu
anNgIG9yIGBoYW5kbGViYXJzLnJ1bnRpbWUuYW1kLmpzYCBmaWxlcyBvciBsb2FkIGluZGl2aWR1
YWwgbW9kdWxlcyBkaXJlY3RseS4gQU1EIHVzZXJzIHNob3VsZCBhbHNvIG5vdGUgdGhhdCB0aGUg
aGFuZGxlYmFycyBvYmplY3QgaXMgZXhwb3NlZCB2aWEgdGhlIGBkZWZhdWx0YCBmaWVsZCBvbiB0
aGUgaW1wb3J0ZWQgb2JqZWN0LiBUaGlzIFtnaXN0XShodHRwczovL2dpc3QuZ2l0aHViLmNvbS93
eWNhdHMvNzQxN2JlMGRjMzYxYTY5ZDU5MTYpIHByb3ZpZGVzIHNvbWUgZGlzY3Vzc2lvbiBvZiBw
b3NzaWJsZSBjb21wYXRpYmlsaXR5IHNoaW1zLgorICAtIENvbW1vbkpTL05vZGU6IE5vZGUgbG9h
ZGluZyBvY2N1cnMgYXMgbm9ybWFsIHZpYSBgcmVxdWlyZWAKKyAgLSBHbG9iYWxzOiBUaGUgYGhh
bmRsZWJhcnMuanNgIGFuZCBgaGFuZGxlYmFycy5ydW50aW1lLmpzYCBmaWxlcyBzaG91bGQgYmVo
YXZlIGluIHRoZSBzYW1lIG1hbm5lciBhcyB0aGUgdjEuMC4xMiAvIDEuMC4wIHJlbGVhc2UuCist
IEJ1aWxkIGFydGlmYWN0cyBoYXZlIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSByZXBvc2l0b3J5LiBb
bnBtXVtucG1dLCBbY29tcG9uZW50cy9oYW5kbGViYXJzLmpzXVtjb21wb25lbnRzXSwgW2Nkbmpz
XVtjZG5qc10sIG9yIHRoZSBbYnVpbGRzIHBhZ2VdW2J1aWxkcy1wYWdlXSBzaG91bGQgbm93IGJl
IHVzZWQgYXMgdGhlIHNvdXJjZSBvZiBidWlsdCBhcnRpZmFjdHMuIAorLSBDb250ZXh0LXN0b3Jl
ZCBoZWxwZXJzIGFyZSBub3cgYWx3YXlzIHBhc3NlZCB0aGUgYG9wdGlvbnNgIGhhc2guIFByZXZp
b3VzbHkgbm8tYXJndW1lbnQgaGVscGVycyBkaWQgbm90IGhhdmUgdGhpcyBhcmd1bWVudC4KKwor
CitbQ29tbWl0c10oaHR0cHM6Ly9naXRodWIuY29tL3d5Y2F0cy9oYW5kbGViYXJzLmpzL2NvbXBh
cmUvdjEuMC4xMi4uLnYxLjEuMCkKKworIyMgdjEuMC4xMiAvIDEuMC4wIC0gTWF5IDMxIDIwMTMK
KworLSBbIzUxNV0oaHR0cHM6Ly9naXRodWIuY29tL3d5Y2F0cy9oYW5kbGViYXJzLmpzL2lzc3Vl
cy81MTUpIC0gQWRkIG5vZGUgcmVxdWlyZSBleHRlbnNpb25zIHN1cHBvcnQgKFtAampjbGFyazE5
ODJdKGh0dHBzOi8vZ2l0aHViLmNvbS9qamNsYXJrMTk4MikpCistIFsjNTE3XShodHRwczovL2dp
dGh1Yi5jb20vd3ljYXRzL2hhbmRsZWJhcnMuanMvaXNzdWVzLzUxNykgLSBGaXggYW1kIHByZWNv
bXBpbGVyIG91dHB1dCB3aXRoIGRpcmVjdG9yaWVzIChbQGJsZXNzZW5tXShodHRwczovL2dpdGh1
Yi5jb20vYmxlc3Nlbm0pKQorLSBbIzQzM10oaHR0cHM6Ly9naXRodWIuY29tL3d5Y2F0cy9oYW5k
bGViYXJzLmpzL2lzc3Vlcy80MzMpIC0gQWRkIHN1cHBvcnQgZm9yIHVuaWNvZGUgaWRzCistIFsj
NDY5XShodHRwczovL2dpdGh1Yi5jb20vd3ljYXRzL2hhbmRsZWJhcnMuanMvaXNzdWVzLzQ2OSkg
LSBBZGQgc3VwcG9ydCBmb3IgYD9gIGluIGlkcworLSBbIzUzNF0oaHR0cHM6Ly9naXRodWIuY29t
L3d5Y2F0cy9oYW5kbGViYXJzLmpzL2lzc3Vlcy81MzQpIC0gUHJvdGVjdCBmcm9tIG9iamVjdCBw
cm90b3R5cGUgbW9kaWZpY2F0aW9ucworLSBbIzUxOV0oaHR0cHM6Ly9naXRodWIuY29tL3d5Y2F0
cy9oYW5kbGViYXJzLmpzL2lzc3Vlcy81MTkpIC0gRml4IHBhcnRpYWxzIHdpdGggLiBuYW1lIChb
QGphbWVzZ29ycmllXShodHRwczovL2dpdGh1Yi5jb20vamFtZXNnb3JyaWUpKQorLSBbIzUxOV0o
aHR0cHM6Ly9naXRodWIuY29tL3d5Y2F0cy9oYW5kbGViYXJzLmpzL2lzc3Vlcy81MTkpIC0gQWxs
b3cgSUQgb3Igc3RyaW5ncyBpbiBwYXJ0aWFsIG5hbWVzCistIFsjNDM3XShodHRwczovL2dpdGh1
Yi5jb20vd3ljYXRzL2hhbmRsZWJhcnMuanMvaXNzdWVzLzQzNykgLSBSZXF1aXJlIG1hdGNoaW5n
IGJyYWNlIGNvdW50cyBpbiBlc2NhcGVkIGV4cHJlc3Npb25zCistIE1lcmdlIHBhc3NlZCBwYXJ0
aWFscyBhbmQgaGVscGVycyB3aXRoIGdsb2JhbCBuYW1lc3BhY2UgdmFsdWVzCistIEFkZCBzdXBw
b3J0IGZvciBjb21wbGV4IGlkcyBpbiBAZGF0YSByZWZlcmVuY2VzCistIERvY3MgdXBkYXRlcwor
CitDb21wYXRpYmlsaXR5IG5vdGVzOgorLSBUaGUgcGFyc2VyIGlzIG5vdyBzdHJpY3RlciBvbiBg
e3t7YCwgcmVxdWlyaW5nIHRoYXQgdGhlIGVuZCB0b2tlbiBiZSBgfX19YC4gVGVtcGxhdGVzIHRo
YXQgZG8gbm90CisgIGZvbGxvdyB0aGlzIGNvbnZlbnRpb24gc2hvdWxkIGFkZCB0aGUgYWRkaXRp
b25hbCBicmFjZSB2YWx1ZS4KKy0gQ29kZSB0aGF0IHJlbGllcyBvbiBnbG9iYWwgdGhlIG5hbWVz
cGFjZSBiZWluZyBtdXRlZCB3aGVuIGN1c3RvbSBoZWxwZXJzIG9yIHBhcnRpYWxzIGFyZSBwYXNz
ZWQgd2lsbCBuZWVkIHRvIGV4cGxpY2l0bHkgcGFzcyBhbiBgdW5kZWZpbmVkYCB2YWx1ZSBmb3Ig
YW55IGhlbHBlcnMgdGhhdCBzaG91bGQgbm90IGJlIGF2YWlsYWJsZS4KKy0gVGhlIGNvbXBpbGVy
IHZlcnNpb24gaGFzIGNoYW5nZWQuIFByZWNvbXBpbGVkIHRlbXBsYXRlcyB3aXRoIDEuMC4xMiBv
ciBoaWdoZXIgbXVzdCB1c2UgdGhlIDEuMC4wIG9yIGhpZ2hlciBydW50aW1lLgorCitbQ29tbWl0
c10oaHR0cHM6Ly9naXRodWIuY29tL3d5Y2F0cy9oYW5kbGViYXJzLmpzL2NvbXBhcmUvdjEuMC4x
MS4uLnYxLjAuMTIpCisKKyMjIHYxLjAuMTEgLyAxLjAuMC1yYzQgLSBNYXkgMTMgMjAxMworCist
IFsjNDU4XShodHRwczovL2dpdGh1Yi5jb20vd3ljYXRzL2hhbmRsZWJhcnMuanMvaXNzdWVzLzQ1
OCkgLSBGaXggYC4vZm9vYCBzeW50YXggKFtAanBmaXNldF0oaHR0cHM6Ly9naXRodWIuY29tL2pw
ZmlzZXQpKQorLSBbIzQ2MF0oaHR0cHM6Ly9naXRodWIuY29tL3d5Y2F0cy9oYW5kbGViYXJzLmpz
L2lzc3Vlcy80NjApIC0gQWxsb3cgYDpgIGluIHVuZXNjYXBlZCBpZGVudGlmZXJzIChbQGpwZmlz
ZXRdKGh0dHBzOi8vZ2l0aHViLmNvbS9qcGZpc2V0KSkKKy0gWyM0NzFdKGh0dHBzOi8vZ2l0aHVi
LmNvbS93eWNhdHMvaGFuZGxlYmFycy5qcy9pc3N1ZXMvNDcxKSAtIENyZWF0ZSByZWxlYXNlIG5v
dGVzIChUaGVzZSEpCistIFsjNDU2XShodHRwczovL2dpdGh1Yi5jb20vd3ljYXRzL2hhbmRsZWJh
cnMuanMvaXNzdWVzLzQ1NikgLSBBbGxvdyBlc2NhcGluZyBvZiBgXFxgCistIFsjMjExXShodHRw
czovL2dpdGh1Yi5jb20vd3ljYXRzL2hhbmRsZWJhcnMuanMvaXNzdWVzLzIxMSkgLSBGaXggZXhj
ZXB0aW9uIGluIGBlc2NhcGVFeHByZXNzaW9uYAorLSBbIzM3NV0oaHR0cHM6Ly9naXRodWIuY29t
L3d5Y2F0cy9oYW5kbGViYXJzLmpzL2lzc3Vlcy8zNzUpIC0gRXNjYXBlIHVuaWNvZGUgbmV3bGlu
ZXMKKy0gWyM0NjFdKGh0dHBzOi8vZ2l0aHViLmNvbS93eWNhdHMvaGFuZGxlYmFycy5qcy9pc3N1
ZXMvNDYxKSAtIERvIG5vdCBmYWlsIHdoZW4gY29tcGlsaW5nIGAiImAKKy0gWyMzMDJdKGh0dHBz
Oi8vZ2l0aHViLmNvbS93eWNhdHMvaGFuZGxlYmFycy5qcy9pc3N1ZXMvMzAyKSAtIEZpeCBzYW5p
dHkgY2hlY2sgaW4ga25vd25IZWxwZXJzT25seSBtb2RlCistIFsjMzY5XShodHRwczovL2dpdGh1
Yi5jb20vd3ljYXRzL2hhbmRsZWJhcnMuanMvaXNzdWVzLzM2OSkgLSBBbGxvdyByZWdpc3RyYXRp
b24gb2YgbXVsdGlwbGUgaGVscGVycyBhbmQgcGFydGlhbCBieSBwYXNzaW5nIGRlZmluaXRpb24g
b2JqZWN0CistIEFkZCBib3dlciBwYWNrYWdlIGRlY2xhcmF0aW9uIChbQERldmluQ2xhcmtdKGh0
dHBzOi8vZ2l0aHViLmNvbS9EZXZpbkNsYXJrKSkKKy0gQWRkIE51U3BlYyBwYWNrYWdlIGRlY2xh
cmF0aW9uIChbQE1pa2VNYXllcl0oaHR0cHM6Ly9naXRodWIuY29tL01pa2VNYXllcikpCistIEhh
bmRsZSBlbXB0eSBjb250ZXh0IGluIGB3aXRoYCAoW0B0aGVqb2huZnJlZW1hbl0oaHR0cHM6Ly9n
aXRodWIuY29tL3RoZWpvaG5mcmVlbWFuKSkKKy0gU3VwcG9ydCBjdXN0b20gdGVtcGxhdGUgZXh0
ZW5zaW9ucyBpbiBDTEkgKFtAbWF0dGVvYWdvc3RpXShodHRwczovL2dpdGh1Yi5jb20vbWF0dGVv
YWdvc3RpKSkKKy0gRml4IFJoaW5vIHN1cHBvcnQgKFtAYnJvYWR5XShodHRwczovL2dpdGh1Yi5j
b20vYnJvYWR5KSkKKy0gSW5jbHVkZSBjb250ZXh0cyBpbiBzdHJpbmcgbW9kZSAoW0BsZXNoaWxs
XShodHRwczovL2dpdGh1Yi5jb20vbGVzaGlsbCkpCistIFJldHVybiBwcmVjb21waWxlZCBzY3Jp
cHRzIHdoZW4gY29tcGlsaW5nIHRvIEFNRCAoW0BKYW1lc01hcm9uZXldKGh0dHBzOi8vZ2l0aHVi
LmNvbS9KYW1lc01hcm9uZXkpKQorLSBEb2NzIHVwZGF0ZXMgKFtAaWFuZ3JlZW5sZWFmXShodHRw
czovL2dpdGh1Yi5jb20vaWFuZ3JlZW5sZWFmKSwgW0BnaWxlc2Jvd2tldHRdKGh0dHBzOi8vZ2l0
aHViLmNvbS9naWxlc2Jvd2tldHQpLCBbQHV0a2Fyc2gyMDEyXShodHRwczovL2dpdGh1Yi5jb20v
dXRrYXJzaDIwMTIpKQorLSBGaXggYHRvU3RyaW5nYCBoYW5kbGluZyB1bmRlciBJRSBhbmQgYnJv
d3NlcmlmeSAoW0B0b21teWR1ZGVicmVhdXhdKGh0dHBzOi8vZ2l0aHViLmNvbS90b21teWR1ZGVi
cmVhdXgpKQorLSBBZGQgcHJvZ3JhbSBtZXRhZGF0YQorCitbQ29tbWl0c10oaHR0cHM6Ly9naXRo
dWIuY29tL3d5Y2F0cy9oYW5kbGViYXJzLmpzL2NvbXBhcmUvdjEuMC4xMC4uLnYxLjAuMTEpCisK
KyMjIHYxLjAuMTAgLSBOb2RlIC0gRmViIDI3IDIwMTMKKworLSBbIzQyOF0oaHR0cHM6Ly9naXRo
dWIuY29tL3d5Y2F0cy9oYW5kbGViYXJzLmpzL2lzc3Vlcy80MjgpIC0gRml4IGluY29ycmVjdCBy
ZW5kZXJpbmcgb2YgbmVzdGVkIHByb2dyYW1zCistIEZpeCBleGNlcHRpb24gbWVzc2FnZSAoW0B0
cmlja25vdGVzXShodHRwczovL2dpdGh1Yi5jb20vdHJpY2tub3RlcykpCistIEFkZGVkIG5lZ2F0
aXZlIG51bWJlciBsaXRlcmFsIHN1cHBvcnQKKy0gQ29uY2VydCBsaWJyYXJ5IHRvIHNpbmdsZSBJ
SUZFCistIEFkZCBoYW5kbGViYXJzLXNvdXJjZSBnZW1zcGVjIChbQG1hY2h0eV0oaHR0cHM6Ly9n
aXRodWIuY29tL21hY2h0eSkpCisKK1tDb21taXRzXShodHRwczovL2dpdGh1Yi5jb20vd3ljYXRz
L2hhbmRsZWJhcnMuanMvY29tcGFyZS92MS4wLjkuLi52MS4wLjEwKQorCisjIyB2MS4wLjkgLSBO
b2RlIC0gRmViIDE1IDIwMTMKKworLSBBZGRlZCBgSGFuZGxlYmFycy5jcmVhdGVgIEFQSSBpbiBu
b2RlIG1vZHVsZSBmb3Igc2FuZGJveGVkIGluc3RhbmNlcyAoW0B0b21teWR1ZGVicmVhdXhdKGh0
dHBzOi8vZ2l0aHViLmNvbS90b21teWR1ZGVicmVhdXgpKQorCitbQ29tbWl0c10oaHR0cHM6Ly9n
aXRodWIuY29tL3d5Y2F0cy9oYW5kbGViYXJzLmpzL2NvbXBhcmUvMS4wLjAtcmMuMy4uLnYxLjAu
OSkKKworIyMgMS4wLjAtcmMzIC0gQnJvd3NlciAtIEZlYiAxNCAyMDEzCisKKy0gUHJldmVudCB1
c2Ugb2YgYHRoaXNgIG9yIGAuLmAgaW4gaWxsb2dpY2FsIHBsYWNlIChbQGxlc2hpbGxdKGh0dHBz
Oi8vZ2l0aHViLmNvbS9sZXNoaWxsKSkKKy0gQWxsb3cgQVNUIHBhc3NpbmcgZm9yIGBwYXJzZWAv
YGNvbXBpbGVgL2BwcmVjb21waWxlYCAoW0BtYWNodHldKGh0dHBzOi8vZ2l0aHViLmNvbS9tYWNo
dHkpKQorLSBPcHRpbWl6ZSBnZW5lcmF0ZWQgb3V0cHV0IGJ5IGlubGluaW5nIHN0YXRlbWVudHMg
d2hlcmUgcG9zc2libGUKKy0gQ2hlY2sgY29tcGlsZXIgdmVyc2lvbiB3aGVuIGV2YWx1YXRpbmcg
dGVtcGxhdGVzCistIFBhY2thZ2UgYnJvd3NlciBkaXN0IGluIG5wbSBwYWNrYWdlCisKK1tDb21t
aXRzXShodHRwczovL2dpdGh1Yi5jb20vd3ljYXRzL2hhbmRsZWJhcnMuanMvY29tcGFyZS92MS4w
LjguLi4xLjAuMC1yYy4zKQorCisjIyBQcmlvciBWZXJzaW9ucworCitXaGVuIHVwZ3JhZGluZyBm
cm9tIHRoZSBIYW5kbGViYXJzIDAuOSBzZXJpZXMsIGJlIGF3YXJlIHRoYXQgdGhlCitzaWduYXR1
cmUgZm9yIHBhc3NpbmcgY3VzdG9tIGhlbHBlcnMgb3IgcGFydGlhbHMgdG8gdGVtcGxhdGVzIGhh
cworY2hhbmdlZC4KKworSW5zdGVhZCBvZjoKKworYGBganMKK3RlbXBsYXRlKGNvbnRleHQsIGhl
bHBlcnMsIHBhcnRpYWxzLCBbZGF0YV0pCitgYGAKKworVXNlOgorCitgYGBqcwordGVtcGxhdGUo
Y29udGV4dCwge2hlbHBlcnM6IGhlbHBlcnMsIHBhcnRpYWxzOiBwYXJ0aWFscywgZGF0YTogZGF0
YX0pCitgYGAKKworW2J1aWxkcy1wYWdlXTogaHR0cDovL2J1aWxkcy5oYW5kbGViYXJzanMuY29t
LnMzLmFtYXpvbmF3cy5jb20vaW5kZXguaHRtbAorW2NkbmpzXTogaHR0cDovL2NkbmpzLmNvbS9s
aWJyYXJpZXMvaGFuZGxlYmFycy5qcy8KK1tjb21wb25lbnRzXTogaHR0cHM6Ly9naXRodWIuY29t
L2NvbXBvbmVudHMvaGFuZGxlYmFycy5qcworW25wbV06IGh0dHBzOi8vbnBtanMub3JnL3BhY2th
Z2UvaGFuZGxlYmFycwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxl
cy9oYW5kbGViYXJzL3J1bnRpbWUuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVz
L2hhbmRsZWJhcnMvcnVudGltZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMDYyMDdjZDJhZjdkY2Y1YzVjZjY2
OTMwY2FmMDM1NTQzNTJmN2JkCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5
L25vZGVfbW9kdWxlcy9oYW5kbGViYXJzL3J1bnRpbWUuanMKQEAgLTAsMCArMSwzIEBACisvLyBD
cmVhdGUgYSBzaW1wbGUgcGF0aCBhbGlhcyB0byBhbGxvdyBicm93c2VyaWZ5IHRvIHJlc29sdmUK
Ky8vIHRoZSBydW50aW1lIG9uIGEgc3VwcG9ydGVkIHBhdGguCittb2R1bGUuZXhwb3J0cyA9IHJl
cXVpcmUoJy4vZGlzdC9janMvaGFuZGxlYmFycy5ydW50aW1lJylbJ2RlZmF1bHQnXTsKZGlmZiAt
LWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L0FVVEhPUlMudHh0
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvQVVUSE9SUy50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMzM0MzYzZGVhYTc1NDc0OGJjYzhhMmFmMjBlY2I1MzNiMjJjMDRjMQotLS0gL2Rl
di9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L0FVVEhP
UlMudHh0CkBAIC0wLDAgKzEsMjk1IEBACitBdXRob3JzIG9yZGVyZWQgYnkgZmlyc3QgY29udHJp
YnV0aW9uLgorCitKb2huIFJlc2lnIDxqZXJlc2lnQGdtYWlsLmNvbT4KK0dpbGxlcyB2YW4gZGVu
IEhvdmVuIDxnaWxsZXMwMTgxQGdtYWlsLmNvbT4KK01pY2hhZWwgR2VhcnkgPG1pa2VAZ2Vhcnku
Y29tPgorU3RlZmFuIFBldHJlIDxzdGVmYW4ucGV0cmVAZ21haWwuY29tPgorWWVodWRhIEthdHog
PHd5Y2F0c0BnbWFpbC5jb20+CitDb3JleSBKZXdldHQgPGNqQHN5bnRoZXRpY3BsYXlncm91bmQu
Y29tPgorS2xhdXMgSGFydGwgPGtsYXVzLmhhcnRsQGdtYWlsLmNvbT4KK0ZyYW5jayBNYXJjaWEg
PGZyYW5jay5tYXJjaWFAZ21haWwuY29tPgorSsO2cm4gWmFlZmZlcmVyIDxqb2Vybi56YWVmZmVy
ZXJAZ21haWwuY29tPgorUGF1bCBCYWthdXMgPHBhdWwuYmFrYXVzQGdtYWlsLmNvbT4KK0JyYW5k
b24gQWFyb24gPGJyYW5kb24uYWFyb25AZ21haWwuY29tPgorTWlrZSBBbHN1cCA8bWFsc3VwQGdt
YWlsLmNvbT4KK0RhdmUgTWV0aHZpbiA8ZGF2ZS5tZXRodmluQGdtYWlsLmNvbT4KK0VkIEVuZ2Vs
aGFyZHQgPGVkZW5nZWxoYXJkdEBnbWFpbC5jb20+CitTZWFuIENhdGNocG9sZSA8bGl0dGxlY29v
bGR1ZGVAZ21haWwuY29tPgorUGF1bCBNY2xhbmFoYW4gPHBtY2xhbmFoYW5AZ21haWwuY29tPgor
RGF2aWQgU2VyZHVrZSA8ZGF2aWRzZXJkdWtlQGdtYWlsLmNvbT4KK1JpY2hhcmQgRC4gV29ydGgg
PHJkd29ydGhAZ21haWwuY29tPgorU2NvdHQgR29uesOhbGV6IDxzY290dC5nb256YWxlekBnbWFp
bC5jb20+CitBcmllbCBGbGVzbGVyIDxhZmxlc2xlckBnbWFpbC5jb20+CitKb24gRXZhbnMgPGpv
bkBzcHJpbmd5d2ViLmNvbT4KK1RKIEhvbG93YXljaHVrIDx0akB2aXNpb24tbWVkaWEuY2E+CitN
aWNoYWVsIEJlbnNvdXNzYW4gPG1pY2tleUBzZWVzbWljLmNvbT4KK1JvYmVydCBLYXRpxIcgPHJv
YmVydC5rYXRpY0BnbWFpbC5jb20+CitMb3Vpcy1Sw6ltaSBCYWLDqSA8bHJiYWJlQGdtYWlsLmNv
bT4KK0VhcmxlIENhc3RsZWRpbmUgPG1yc3BlYWtlckBnbWFpbC5jb20+CitEYW1pYW4gSmFub3dz
a2kgPGRhbWlhbi5qYW5vd3NraUBnbWFpbC5jb20+CitSaWNoIERvdWdoZXJ0eSA8cmljaEByZC5n
ZW4ubno+CitLaW0gRGFsc2dhYXJkIDxraW1Aa2ltZGFsc2dhYXJkLmNvbT4KK0FuZHJlYSBHaWFt
bWFyY2hpIDxhbmRyZWEuZ2lhbW1hcmNoaUBnbWFpbC5jb20+CitNYXJrIEdpYnNvbiA8am9sbHl0
b2FkQGdtYWlsLmNvbT4KK0thcmwgU3dlZGJlcmcgPGtzd2VkYmVyZ0BnbWFpbC5jb20+CitKdXN0
aW4gTWV5ZXIgPGp1c3RpbmJtZXllckBnbWFpbC5jb20+CitCZW4gQWxtYW4gPGNvd2JveUByajMu
bmV0PgorSmFtZXMgUGFkb2xzZXkgPGNsYUBwYWRvbHNleS5uZXQ+CitEYXZpZCBQZXRlcnNlbiA8
cHVibGljQHBldGVyc2VuZGlkaXQuY29tPgorQmF0aXN0ZSBCaWVsZXIgPGJhdGlzdGUuYmllbGVy
QGdtYWlsLmNvbT4KK0FsZXhhbmRlciBGYXJrYXMgPGluZm9AY29ycnVwdC1zeXN0ZW0uZGU+CitS
aWNrIFdhbGRyb24gPHdhbGRyb24ucmlja0BnbWFpbC5jb20+CitGaWxpcGUgRm9ydGVzIDxmaWxp
cGVAZm9ydGVzLmNvbT4KK05lZXJhaiBTaW5naCA8bmVlcmFqZG90bmFtZUBnbWFpbC5jb20+CitQ
YXVsIElyaXNoIDxwYXVsLmlyaXNoQGdtYWlsLmNvbT4KK0lyYcOqIENhcnZhbGhvIDxpcmFlQGly
YWUucHJvLmJyPgorTWF0dCBDdXJyeSA8bWF0dEBwc2V1ZG9jb2Rlci5jb20+CitNaWNoYWVsIE1v
bnRlbGVvbmUgPG1pY2hhZWxAbWljaGFlbG1vbnRlbGVvbmUubmV0PgorTm9haCBTbG9hbiA8bm9h
aC5zbG9hbkBnbWFpbC5jb20+CitUb20gVmluZXIgPGdpdGh1YkB2aW5lci50dj4KK0RvdWdsYXMg
TmVpbmVyIDxkb3VnQGRvdWduZWluZXIuY29tPgorQWRhbSBKLiBTb250YWcgPGFqcGlhbm9AYWpw
aWFuby5jb20+CitEYXZlIFJlZWQgPGRhcmVlZEBtaWNyb3NvZnQuY29tPgorUmFscGggV2hpdGJl
Y2sgPHJhbHBoLndoaXRiZWNrQGdtYWlsLmNvbT4KK0NhcmwgRsO8cnN0ZW5iZXJnIDxhemF0b3Ro
QGdtYWlsLmNvbT4KK0phY29iIFdyaWdodCA8amFjd3JpZ2h0QGdtYWlsLmNvbT4KK0ouIFJ5YW4g
U3Rpbm5ldHQgPGpyeWFuc0BnbWFpbC5jb20+Cit1bmtub3duIDxJZ2VuMDA1QC51cGNvcnAuYWQu
dXByci5jb20+Cit0ZW1wMDEgPHRlbXAwMWlyY0BnbWFpbC5jb20+CitIZXVuZ3N1YiBMZWUgPGhA
c3VibC5lZT4KK0NvbGluIFNub3ZlciA8Z2l0aHViLmNvbUB6ZXRhZmxlZXQuY29tPgorUnlhbiBX
IFRlbm5leSA8cnlhbkAxMGUudXM+CitQaW5ob29rIDxjb250YWN0QHBpbmhvb2tsYWJzLmNvbT4K
K1JvbiBPdHRlbiA8ci5qLmcub3R0ZW5AZ21haWwuY29tPgorSmVwaHRlIENsYWluIDxKZXBodGUu
Q2xhaW5AdW5pdi1yZXVuaW9uLmZyPgorQW50b24gTWF0em5lbGxlciA8b2JodnNieXBxZ2hnY0Bn
bWFpbC5jb20+CitBbGV4IFNleHRvbiA8QWxleFNleHRvbkBnbWFpbC5jb20+CitEYW4gSGViZXJk
ZW4gPGRhbmhlYmVyZGVuQGdtYWlsLmNvbT4KK0hlbnJpIFdpZWNoZXJzIDxod2llY2hlcnNAZ21h
aWwuY29tPgorUnVzc2VsbCBIb2xicm9vayA8cnVzc2VsbC5ob2xicm9va0BwYXRjaC5jb20+CitK
dWxpYW4gQXVib3VyZyA8YXVib3VyZy5qdWxpYW5AZ21haWwuY29tPgorR2lhbm5pIEFsZXNzYW5k
cm8gQ2hpYXBwZXR0YSA8Z2lhbm5pQHJ1bmxldmVsNi5vcmc+CitTY290dCBKZWhsIDxzY290dGpl
aGxAZ21haWwuY29tPgorSmFtZXMgQnVya2UgPGpyYnVya2VAZ21haWwuY29tPgorSm9uYXMgUGZl
bm5pZ2VyIDxqb25hc0BwZmVubmlnZXIubmFtZT4KK1hhdmkgUmFtaXJleiA8eGF2aS5ybXpAZ21h
aWwuY29tPgorSmFyZWQgR3JpcHBlIDxqYXJlZEBkZWFkbHlpY29uLmNvbT4KK1N5bHZlc3RlciBL
ZWlsIDxzeWx2ZXN0ZXJAa2VpbC5vci5hdD4KK0JyYW5kb24gU3Rlcm5lIDxic3Rlcm5lQG1vemls
bGEuY29tPgorTWF0aGlhcyBCeW5lbnMgPG1hdGhpYXNAcWl3aS5iZT4KK1RpbW15IFdpbGxpc29u
IDw0dGltbXl3aWxAZ21haWwuY29tPgorQ29yZXkgRnJhbmcgPGduYXJmMzdAZ21haWwuY29tPgor
RGlnaXRhbHhlcm8gPGRpZ2l0YWx4ZXJvPgorQW50b24gS292YWx5b3YgPGFudG9uQGtvdmFseW92
Lm5ldD4KK0RhdmlkIE11cmRvY2ggPGRhdmlkQGRhdmlkbXVyZG9jaC5jb20+CitKb3NoIFZhcm5l
ciA8am9zaC52YXJuZXJAZ21haWwuY29tPgorQ2hhcmxlcyBNY051bHR5IDxjbWNudWx0eUBrem5m
LmNvbT4KK0pvcmRhbiBCb2VzY2ggPGpib2VzY2gyNkBnbWFpbC5jb20+CitKZXNzIFRocnlzb2Vl
IDxqZXNzQHRocnlzb2VlLmRrPgorTWljaGFlbCBNdXJyYXkgPG1AbXVyei5uZXQ+CitMZWUgQ2Fy
cGVudGVyIDxlbGNhcnBpZUBnbWFpbC5jb20+CitBbGV4aXMgQWJyaWwgPG1lQGFsZXhpc2Ficmls
LmNvbT4KK1JvYiBNb3JnYW4gPHJvYmJ5bUBnbWFpbC5jb20+CitKb2huIEZpcmViYXVnaCA8am9o
bl9maXJlYmF1Z2hAYmlnZml4LmNvbT4KK1NhbSBCaXNiZWUgPHNhbUBzYmlzYmVlLmNvbT4KK0dp
bG1vcmUgRGF2aWRzb24gPGdpbG1vcmVvcmxlc3NAZ21haWwuY29tPgorQnJpYW4gQnJlbm5hbiA8
bWVAYnJpYW5sb3Zlc3RoaW5ncy5jb20+CitYYXZpZXIgTW9udGlsbGV0IDx4YXZpZXJtMDIubmV0
QGdtYWlsLmNvbT4KK0RhbmllbCBQaWhsc3Ryb20gPHNjaW9saXN0LnNlQGdtYWlsLmNvbT4KK1Nh
aGFiIFlhemRhbmkgPHNhaGFiLnlhemRhbmkrZ2l0aHViQGdtYWlsLmNvbT4KK2F2YWx5IDxnaXRo
dWItY29tQGFnYWNoaS5uYW1lPgorU2NvdHQgSHVnaGVzIDxoaUBzY290dC1odWdoZXMubWU+CitN
aWtlIFNoZXJvdiA8bWlrZS5zaGVyb3ZAZ21haWwuY29tPgorR3JlZyBIYXplbCA8Z2hhemVsQGdt
YWlsLmNvbT4KK1NjaGFsayBOZWV0aGxpbmcgPHNjaGFsa0Bvc3NyZWxlYXNlZmVlZC5jb20+CitE
ZW5pcyBLbmF1ZiA8RGVuaXMuS25hdWZAZ21haWwuY29tPgorVGltbyBUaWpob2YgPGtyaW5rbGVt
YWlsQGdtYWlsLmNvbT4KK1N0ZWVuIE5pZWxzZW4gPHN3aW5lZGtAZ21haWwuY29tPgorQW50b24g
Unl6aG92IDxhbnRvbkByeXpob3YubWU+CitTaGkgQ2h1YW4gPHNoaWNodWFuckBnbWFpbC5jb20+
CitCZXJrZXIgUGVrc2FnIDxiZXJrZXIucGVrc2FnQGdtYWlsLmNvbT4KK1RvYnkgQnJhaW4gPHRv
YnliQGZyZXNodmlldy5jb20+CitNYXR0IE11ZWxsZXIgPG1hdHRtdWVsbGVAZ21haWwuY29tPgor
SnVzdGluIDxkcmFrZWZqdXN0aW5AZ21haWwuY29tPgorRGFuaWVsIEhlcm1hbiA8ZGFuaWVsLmMu
aGVybWFuQGdtYWlsLmNvbT4KK09sZWcgR2FpZGFyZW5rbyA8bWFya2Vsb2dAZ21haWwuY29tPgor
UmljaGFyZCBHaWJzb24gPHJpY2hhcmQuZ2lic29uQGdtYWlsLmNvbT4KK1JhZmHDq2wgQmxhaXMg
TWFzc29uIDxyYWZibWFzc29uQGdtYWlsLmNvbT4KK2NtYzNjbiA8NTkxOTQ2MThAcXEuY29tPgor
Sm9lIFByZXNicmV5IDxwcmVzYnJleUBnbWFpbC5jb20+CitTaW5kcmUgU29yaHVzIDxzaW5kcmVz
b3JodXNAZ21haWwuY29tPgorQXJuZSBkZSBCcmVlIDxhcm5lQGJ1a2tpZS5ubD4KK1ZsYWRpc2xh
diBaYXJha292c2t5IDx2bGFkLnphckBnbWFpbC5jb20+CitBbmRyZXcgRSBNb25hdCA8YW1vbmF0
QGdtYWlsLmNvbT4KK09za2FyaSA8YWRtaW5Aby1wcm9ncmFtcy5jb20+CitKb2FvIEhlbnJpcXVl
IGRlIEFuZHJhZGUgQnJ1bmkgPGpvYW9oYnJ1bmlAeWFob28uY29tLmJyPgordHNpbmhhIDx0c2lu
aGFAQW50aG9ueXMtTWFjQm9vay1Qcm8ubG9jYWw+CitNYXR0IEZhcm1lciA8bWF0dEBmcm1yLm1l
PgorVHJleSBIdW5uZXIgPHRyZXlodW5uZXJAZ21haWwuY29tPgorSmFzb24gTW9vbiA8am1vb25A
c29jaWFsY2FzdC5jb20+CitKZWZmZXJ5IFRvIDxqZWZmZXJ5LnRvQGdtYWlsLmNvbT4KK0tyaXMg
Qm9yY2hlcnMgPGtyaXMuYm9yY2hlcnNAZ21haWwuY29tPgorVmxhZGltaXIgWmh1cmF2bGV2IDxw
cml2YXRlLmZhY2VAZ21haWwuY29tPgorSmFjb2IgVGhvcm50b24gPGphY29idGhvcm50b25AZ21h
aWwuY29tPgorQ2hhZCBLaWxsaW5nc3dvcnRoIDxjaGFka2lsbGluZ3N3b3J0aEBtaXNzb3VyaXN0
YXRlLmVkdT4KK05vd3JlcyBSYWZpZCA8bm93cmVzLnJhZmVkQGdtYWlsLmNvbT4KK0RhdmlkIEJl
bmphbWluIDxkYXZpZGJlbkBtaXQuZWR1PgorVXJpIEdpbGFkIDxhbnRpc2hva0BnbWFpbC5jb20+
CitDaHJpcyBGYXVsa25lciA8dGhlZmF1bGtuZXJAZ21haWwuY29tPgorRWxpamFoIE1hbm9yIDxl
bGlqYWgubWFub3JAZ21haWwuY29tPgorRGFuaWVsIENoYXRmaWVsZCA8Y2hhdGZpZWxkZGFuaWVs
QGdtYWlsLmNvbT4KK05pa2l0YSBHb3Zvcm92IDxuaWtpdGEuZ292b3JvdkBnbWFpbC5jb20+CitX
ZXNsZXkgV2Fsc2VyIDx3YXczMjVAZ21haWwuY29tPgorTWlrZSBQZW5uaXNpIDxtaWtlQG1pa2Vw
ZW5uaXNpLmNvbT4KK01hcmt1cyBTdGFhYiA8bWFya3VzLnN0YWFiQHJlZGF4by5kZT4KK0RhdmUg
UmlkZGxlIDxkYXZpZEBqb3l2dXUuY29tPgorQ2FsbHVtIE1hY3JhZSA8Y2FsbHVtQGx5bnhwaHAu
Y29tPgorQmVuamFtaW4gVHJ1eW1hbiA8YmVudHJ1eW1hbkBnbWFpbC5jb20+CitKYW1lcyBIdXN0
b24gPGphbWVzQGphbWVzaHVzdG9uLm5ldD4KK0VyaWNrIFJ1aXogZGUgQ2jDoXZleiA8ZXJpY2ty
ZGNoQGdtYWlsLmNvbT4KK0RhdmlkIEJvbm5lciA8ZGJvbm5lckBjb2dvbGFicy5jb20+CitBa2lu
dGF5byBBa2lud3VubWkgPGFha2lud3VubWlAanVkZ2UuY29tPgorTU9SR0FOIDxtb3JnYW5AbW9y
Z2FuZ3JhcGhpY3MuY29tPgorSXNtYWlsIEtoYWlyIDxpc21haWwua2hhaXJAZ21haWwuY29tPgor
Q2FybCBEYW5sZXkgPGNhcmxkYW5sZXlAZ21haWwuY29tPgorTWlrZSBQZXRyb3ZpY2ggPG1pY2hh
ZWwuYy5wZXRyb3ZpY2hAZ21haWwuY29tPgorR3JlZyBMYXZhbGxlZSA8Z3JlZ2xhdmFsbGVlQHdh
cG9sYWJzLmNvbT4KK0RhbmllbCBHw6FsdmV6IDxkZ2FsdmV6QGVkaXRhYmxldGhpbmcuY29tPgor
U2FpIEx1bmcgV29uZyA8c2FpLndvbmdAaHVmZmluZ3RvbnBvc3QuY29tPgorVG9tIEggRnVlcnRl
cyA8VG9tRnVlcnRlc0BnbWFpbC5jb20+CitSb2xhbmQgRWNrbCA8ZWNrbC5yb2xhbmRAZ29vZ2xl
bWFpbC5jb20+CitKYXkgTWVycmlmaWVsZCA8ZnJhY21ha0BnbWFpbC5jb20+CitBbGxlbiBKIFNj
aG1pZHQgSnIgPGNvYnJhc29mdEBnbWFpbC5jb20+CitKb25hdGhhbiBTYW1wc29uIDxqamRzYW1w
c29uQGdtYWlsLmNvbT4KK01hcmNlbCBHcmV0ZXIgPG1hcmNlbC5ncmV0ZXJAb2NibmV0LmNoPgor
TWF0dGhpYXMgSsOkZ2dsaSA8bWF0dGhpYXMuamFlZ2dsaUBnbWFpbC5jb20+CitEYXZpZCBGb3gg
PGRmb3hpbmF0b3JAZ21haWwuY29tPgorWWltaW5nIEhlIDx5aW1pbmdoZUBnbWFpbC5jb20+CitE
ZXZpbiBDb29wZXIgPGNvb3Blci5zZW1hbnRpY3NAZ21haWwuY29tPgorUGF1bCBSYW1vcyA8cGF1
bC5iLnJhbW9zQGdtYWlsLmNvbT4KK1JvZCBWYWdnIDxyb2RAdmFnZy5vcmc+CitCZW5uZXR0IFNv
cmJvIDxic29yYm9AZ21haWwuY29tPgorU2ViYXN0aWFuIEJ1cmtoYXJkIDxzZWJpLmJ1cmtoYXJk
QGdtYWlsLmNvbT4KK1phY2hhcnkgQWRhbSBLYXBsYW4gPHJhemljQHZpcmFsa2l0dHkuY29tPgor
bmFudG9fdmkgPG5hbnRvQG1vb24uZW1haWwubmUuanA+CituYW50byA8bmFudG9AbW9vbi5lbWFp
bC5uZS5qcD4KK0RhbmlsIFNvbXNpa292IDxkYW5pbGFzb21zaWtvdkBnbWFpbC5jb20+CitSeXVu
b3N1a2UgU0FUTyA8dHJpY2tub3Rlcy5yc0BnbWFpbC5jb20+CitKZWFuIEJvdXNzaWVyIDxqZWFu
LmJvdXNzaWVyQGdtYWlsLmNvbT4KK0FkYW0gQ291bG9tYmUgPG1lQGFkYW0uY28+CitBbmRyZXcg
UGx1bW1lciA8cGx1bW1lci5hbmRyZXdAZ21haWwuY29tPgorTWFyayBSYWRkYXR6IDxtcmFkZGF0
ekBnbWFpbC5jb20+CitJc2FhYyBaLiBTY2hsdWV0ZXIgPGlAaXpzLm1lPgorS2FybCBTaWVidXJn
IDxrc2llYnVyZ0B5YWhvby5jb20+CitQYXNjYWwgQm9ycmVsaSA8cGFzY2FsQGJvcnJlbGkuY29t
PgorTmd1eWVuIFBodWMgTGFtIDxydWFkbzE5ODdAZ21haWwuY29tPgorRG1pdHJ5IEd1c2V2IDxk
bWl0cnkuZ3VzZXZAZ21haWwuY29tPgorTWljaGHFgiBHb8WCxJliaW93c2tpIDxtLmdvbGViQGdt
YWlsLmNvbT4KK0xpIFh1ZG9uZyA8aXN0b25lbGVlQGdtYWlsLmNvbT4KK1N0ZXZlbiBCZW5uZXIg
PGFkbWluQHN0ZXZlbmJlbm5lci5jb20+CitUb20gSCBGdWVydGVzIDx0b21mdWVydGVzQGdtYWls
LmNvbT4KK1JlbmF0byBPbGl2ZWlyYSBkb3MgU2FudG9zIDxyb3MzQGNpbi51ZnBlLmJyPgorcm9z
M2NpbiA8cm9zM0BjaW4udWZwZS5icj4KK0phc29uIEJlZGFyZCA8amFzb24ranF1ZXJ5QGpiZWRh
cmQuY2E+CitLeWxlIFJvYmluc29uIFlvdW5nIDxreWxlQGRvbnRrcnkuY29tPgorQ2hyaXMgVGFs
a2luZ3RvbiA8Y2hyaXNAdGFsa2luZ3RvbnRlY2guY29tPgorRWRkaWUgTW9uZ2UgPGVkZGllQGVk
ZGllbW9uZ2UuY29tPgorVGVycnkgSm9uZXMgPHRlcnJ5QGpvbi5lcz4KK0phc29uIE1lcmlubyA8
amFzb25tZXJpbm9AZ21haWwuY29tPgorSmVyZW15IER1bmNrIDxqZHVuY2tAZ21haWwuY29tPgor
Q2hyaXMgUHJpY2UgPHByaWNlLmNAZ21haWwuY29tPgorR3V5IEJlZGZvcmQgPGd1eWJlZGZvcmRA
Z21haWwuY29tPgorQW1leSBTYWtoYWRlbyA8bWVAYW1leW1zLmNvbT4KK01pa2UgU2lkb3JvdiA8
bWlrZXMuZWtiQGdtYWlsLmNvbT4KK0FudGhvbnkgUnlhbiA8YW50aG9ueXJ5YW4xQGdtYWlsLmNv
bT4KK0RvbWluaWsgRC4gR2V5ZXIgPGRvbWluaWsuZ2V5ZXJAZ21haWwuY29tPgorR2VvcmdlIEth
dHMgPGthdHNnZW9yZ2Vla0BnbWFpbC5jb20+CitMaWhhbiBMaSA8ZnJhbmtpZXRlYXJkcm9wQGdt
YWlsLmNvbT4KK1Jvbm55IFNwcmluZ2VyIDxzcHJpbmdlci5yb25ueUBnbWFpbC5jb20+CitDaHJp
cyBBbnRha2kgPENocmlzQW50YWtpQGdtYWlsLmNvbT4KK01hcmlhbiBTb2xsbWFubiA8bWFyaWFu
LnNvbGxtYW5uQGNhcmdvbWVkaWEuY2g+CituamhhbWFubiA8bmpoYW1hbm5AZ21haWwuY29tPgor
SWx5YSBLYW50b3IgPGlsaWFrYW5AZ21haWwuY29tPgorRGF2aWQgSG9uZyA8ZC5ob25nQG1lLmNv
bT4KK0pvaG4gUGF1bCA8am9obkBqb2hua3BhdWwuY29tPgorSmFrb2IgU3RvZWNrIDxqYWtvYkBw
b2tlcm1hbmlhLmRlPgorQ2hyaXN0b3BoZXIgSm9uZXMgPGNocmlzQGNqcWVkLmNvbT4KK0ZvcmJl
cyBMaW5kZXNheSA8Zm9yYmVzQGxpbmRlc2F5LmNvLnVrPgorUy4gQW5kcmV3IFNoZXBwYXJkIDxh
bmRyZXdAd3EuaW8+CitMZW9uYXJkbyBCYWx0ZXIgPGxlb25hcmRvLmJhbHRlckBnbWFpbC5jb20+
CitSb21hbiBSZWnDnyA8bWVAc2lsdmVyd2luZC5pbz4KK0Jlbmp5IEN1aSA8YmVuanl0cnlzQGdt
YWlsLmNvbT4KK1JvZHJpZ28gUm9zZW5mZWxkIFJvc2FzIDxyci5yb3Nhc0BnbWFpbC5jb20+CitK
b2huIEhvdmVuIDxob3ZlbmpAZ21haWwuY29tPgorUGhpbGlwIErDpGdlbnN0ZWR0IDxwaGlsaXBA
Zm9vbGlwLm9yZz4KK0NocmlzdGlhbiBLb3Ntb3dza2kgPGtzbXdza0BnbWFpbC5jb20+CitMaWFu
ZyBQZW5nIDxwb3BwaW5scEBnbWFpbC5jb20+CitUSiBWYW5Ub2xsIDx0ai52YW50b2xsQGdtYWls
LmNvbT4KK1NlbnlhIFB1Z2FjaCA8dXBpc2ZyZWVAb3V0bG9vay5jb20+CitBdXJlbGlvIERlIFJv
c2EgPGF1cmVsaW9kZXJvc2FAZ21haWwuY29tPgorTmF6YXIgTW9rcnluc2t5aSA8bmF6YXJAbW9r
cnluc2t5aS5jb20+CitBbWl0IE1lcmNoYW50IDxidWxscmVkZXllc0BnbWFpbC5jb20+CitKYXNv
biBCZWRhcmQgPGphc29uK2dpdGh1YkBqYmVkYXJkLmNhPgorQXJ0aHVyIFZlcnNjaGFldmUgPGNv
bnRhY3RAYXJ0aHVydmVyc2NoYWV2ZS5iZT4KK0RhbiBIYXJ0IDxkYW5oYXJ0QG5vdG9udGhlaGln
aHN0cmVldC5jb20+CitCaW4gWGluIDxyaHl6aXhAZ21haWwuY29tPgorRGF2aWQgQ29yYmFjaG8g
PGRhdmlkY29yYmFjaG9AZ21haWwuY29tPgorVmVhY2VzbGF2IEdyaW1hbHNjaGkgPGdyaW1hbHNj
aGlAeWFuZGV4LnJ1PgorRGFuaWVsIEh1c2FyIDxkYW5vLmh1c2FyQGdtYWlsLmNvbT4KK0ZyZWRl
cmljIEhlbWJlcmdlciA8bWFpbEBmcmVkZXJpYy1oZW1iZXJnZXIuZGU+CitCZW4gVG9ld3MgPG1h
c3RhaHlldGlAZ21haWwuY29tPgorQWRpdHlhIFJhZ2hhdmFuIDxhcmFnaGF2YW4zQGdtYWlsLmNv
bT4KK1ZpY3RvciBIb215YWtvdiA8dmtob215YWNrb3ZAZ21haWwuY29tPgorU2hpdmFqaSBWYXJt
YSA8Y29udGFjdEBzaGl2YWppdmFybWEuY29tPgorTmljb2xhcyBIRU5SWSA8aWNld2lsQGdtYWls
LmNvbT4KK0FubmUtR2FlbGxlIENvbG9tIDxjb2xvbWFAd2VzdG1pbnN0ZXIuYWMudWs+CitHZW9y
Z2UgTWF1ZXIgPGdtYXVlckBnbWFpbC5jb20+CitMZW9uYXJkbyBCcmFnYSA8bGVvbmFyZG8uYnJh
Z2FAZ21haWwuY29tPgorU3RlcGhlbiBFZGdhciA8c3RlcGhlbkBuZXR3ZWIuY29tLmF1PgorVGhv
bWFzIFRvcnRvcmluaSA8dGhvbWFzdG9ydG9yaW5pQGdtYWlsLmNvbT4KK1dpbnN0b24gSG93ZXMg
PHdpbnN0b25ob3dlc0BnbWFpbC5jb20+CitKb24gSGVzdGVyIDxqb24uZC5oZXN0ZXJAZ21haWwu
Y29tPgorQWxleGFuZGVyIE8nTWFyYSA8bWVAYWxleG9tYXJhLmNvbT4KK0Jhc3RpYW4gQnVjaGhv
bHogPGJ1Y2hob2x6LmJhc3RpYW5AZ29vZ2xlbWFpbC5jb20+CitBcnRodXIgU3RvbHlhciA8bmVr
ci5mYWJ1bGFAZ21haWwuY29tPgorQ2FsdmluIE1ldGNhbGYgPGNhbHZpbi5tZXRjYWxmQGdtYWls
LmNvbT4KK011IEhhaWJhbyA8bWhic2VhbEAxNjMuY29tPgorUmljaGFyZCBNY0RhbmllbCA8cm0w
MDI2QHVhaC5lZHU+CitDaHJpcyBSZWJlcnQgPGdpdGh1YkByZWJlcnRpYS5jb20+CitHYWJyaWVs
IFNjaHVsaG9mIDxnYWJyaWVsLnNjaHVsaG9mQGludGVsLmNvbT4KK0dpbGFkIFBlbGVnIDxnaWxh
ZHAwMDdAZ21haWwuY29tPgorTWFydGluIE5hdW1hbm4gPG1hcnRpbkBnZWVrb25hdXQuZGU+CitN
YXJlayBMZXdhbmRvd3NraSA8bS5sZXdhbmRvd3NraUBja3NvdXJjZS5jb20+CitCcnVubyBQZcyB
cmVsIDxicnVub3BlcmVsQGdtYWlsLmNvbT4KK1JlZWQgTG9kZW4gPHJlZWRAcmVlZGxvZGVuLmNv
bT4KK0RhbmllbCBOaWxsIDxkYW5pZWxsbmlsbEBnbWFpbC5jb20+CitZb25nd29vIEplb24gPHlv
bmd3b28uamVvbkBuYXZlcmNvcnAuY29tPgorU2VhbiBIZW5kZXJzb24gPHNlYW5oLnphQGdtYWls
LmNvbT4KK1JpY2hhcmQgS3JhYWlqZW5oYWdlbiA8c3RkaW4rZ2l0QHJpaWNoYXJkLmNvbT4KK0Nv
bm5vciBBdGhlcnRvbiA8Yy5saWFtLmF0aGVydG9uQGdtYWlsLmNvbT4KK0dhcnkgWWUgPGdhcnlz
eWVAZ21haWwuY29tPgorQ2hyaXN0aWFuIEdyZXRlIDx3ZWJtYXN0ZXJAY2hyaXN0aWFuZ3JldGUu
Y29tPgorTGl6YSBSYW1vIDxsaXphLmgucmFtb0BnbWFpbC5jb20+CitKdWxpYW4gQWxleGFuZGVy
IE11cmlsbG8gPGp1bGlhbi5hbGV4YW5kZXIubXVyaWxsb0BnbWFpbC5jb20+CitKb2VsbGUgRmxl
dXJhbnRpbiA8am9hc3F1ZWVuaWViZWVAZ21haWwuY29tPgorSmFlIFN1bmcgUGFyayA8YWxiZXJ0
by5wYXJrQGdtYWlsLmNvbT4KK0p1biBTdW4gPGtsc2ZvcmV2ZXJAZ21haWwuY29tPgorSm9zaCBT
b3JlZiA8YXBhY2hlQHNvcmVmLmNvbT4KK0hlbnJ5IFdvbmcgPGhlbnJ5dzRrQGdtYWlsLmNvbT4K
K0pvbiBEdWZyZXNuZSA8am9uLmR1ZnJlc25lQGdtYWlsLmNvbT4KK01hcnRpam4gVy4gdmFuIGRl
ciBMZWUgPG1hcnRpam5AdmFuZGVybGVlLmNvbT4KK0RldmluIFdpbHNvbiA8ZHdpbHNvbjYuZ2l0
aHViQGdtYWlsLmNvbT4KK1N0ZXZlIE1hbyA8bWFvY2hlbnlhbkBnbWFpbC5jb20+CitaYWNrIEhh
bGwgPHphY2toYWxsQG91dGxvb2suY29tPgorQmVybmhhcmQgTS4gV2llZGVtYW5uIDxqcXVlcnli
bXdAbHNtb2QuZGU+CitUb2RvciBQcmlrdW1vdiA8dG9ub19wckBhYnYuYmc+CitKaGEgTmFtYW4g
PGNyZWF0ZW5hbWFuQGdtYWlsLmNvbT4KK1dpbGxpYW0gUm9iaW5ldCA8d2lsbGlhbS5yb2JpbmV0
QGNvbm9zdGl4LmNvbT4KK0FsZXhhbmRlciBMaXNpYW5vaSA8YWxsM2ZveEBnbWFpbC5jb20+CitW
aXRhbGl5IFRlcnppZXYgPHZpdGFsaXl0ZXJ6aWV2QGdtYWlsLmNvbT4KK0pvZSBUcnVtYnVsbCA8
dHJ1bWJ1bGwuakBnbWFpbC5jb20+CitBbGV4YW5kZXIgSyA8eHB5cm9AeWEucnU+CitEYW1pYW4g
U2VubiA8anF1ZXJ5QHRvcGF4aS5jb2Rlcz4KK1JhbGluIENoaW1ldiA8cmFsaW4uY2hpbWV2QGdt
YWlsLmNvbT4KK0ZlbGlwZSBTYXRlbGVyIDxmc2F0ZWxlckBnbWFpbC5jb20+CitDaHJpc3RvcGhl
IFRhZmFuaS1EZXJlZXBlciA8Y2hyaXN0b3BoZXRkQGhvdG1haWwuZnI+CmRpZmYgLS1naXQgYS9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9MSUNFTlNFLnR4dCBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L0xJQ0VOU0UudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjUzMTJhNGM4NjRkMjIwZDQ5NmFlMGI2ZmQxMTgzNGEwODM5NmZiODkKLS0tIC9kZXYvbnVsbAor
KysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9MSUNFTlNFLnR4dApA
QCAtMCwwICsxLDM2IEBACitDb3B5cmlnaHQgalF1ZXJ5IEZvdW5kYXRpb24gYW5kIG90aGVyIGNv
bnRyaWJ1dG9ycywgaHR0cHM6Ly9qcXVlcnkub3JnLworCitUaGlzIHNvZnR3YXJlIGNvbnNpc3Rz
IG9mIHZvbHVudGFyeSBjb250cmlidXRpb25zIG1hZGUgYnkgbWFueQoraW5kaXZpZHVhbHMuIEZv
ciBleGFjdCBjb250cmlidXRpb24gaGlzdG9yeSwgc2VlIHRoZSByZXZpc2lvbiBoaXN0b3J5Cith
dmFpbGFibGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL2pxdWVyeS9qcXVlcnkKKworVGhlIGZvbGxv
d2luZyBsaWNlbnNlIGFwcGxpZXMgdG8gYWxsIHBhcnRzIG9mIHRoaXMgc29mdHdhcmUgZXhjZXB0
IGFzCitkb2N1bWVudGVkIGJlbG93OgorCis9PT09CisKK1Blcm1pc3Npb24gaXMgaGVyZWJ5IGdy
YW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZworYSBjb3B5IG9m
IHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCisi
U29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwg
aW5jbHVkaW5nCit3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1v
ZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCitkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2Vs
bCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8KK3Blcm1pdCBwZXJzb25zIHRvIHdob20g
dGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bwordGhlIGZvbGxv
d2luZyBjb25kaXRpb25zOgorCitUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBw
ZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZQoraW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJz
dGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisKK1RIRSBTT0ZUV0FSRSBJUyBQUk9W
SURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAorRVhQUkVTUyBPUiBJ
TVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCitN
RVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORAorTk9O
SU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQg
SE9MREVSUyBCRQorTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklM
SVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTgorT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNF
LCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OCitXSVRIIFRIRSBTT0ZUV0FS
RSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKworPT09PQor
CitBbGwgZmlsZXMgbG9jYXRlZCBpbiB0aGUgbm9kZV9tb2R1bGVzIGFuZCBleHRlcm5hbCBkaXJl
Y3RvcmllcyBhcmUKK2V4dGVybmFsbHkgbWFpbnRhaW5lZCBsaWJyYXJpZXMgdXNlZCBieSB0aGlz
IHNvZnR3YXJlIHdoaWNoIGhhdmUgdGhlaXIKK293biBsaWNlbnNlczsgd2UgcmVjb21tZW5kIHlv
dSByZWFkIHRoZW0sIGFzIHRoZWlyIHRlcm1zIG1heSBkaWZmZXIgZnJvbQordGhlIHRlcm1zIGFi
b3ZlLgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkv
UkVBRE1FLm1kIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvUkVBRE1F
Lm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmJhMzE3NGE3NzgxZTA4OTI4ZDM5MTZlNTY3YWJmZWJkNmU5NTAwMmEK
LS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVy
eS9SRUFETUUubWQKQEAgLTAsMCArMSw2NSBAQAorIyBqUXVlcnkKKworPiBqUXVlcnkgaXMgYSBm
YXN0LCBzbWFsbCwgYW5kIGZlYXR1cmUtcmljaCBKYXZhU2NyaXB0IGxpYnJhcnkuCisKK0ZvciBp
bmZvcm1hdGlvbiBvbiBob3cgdG8gZ2V0IHN0YXJ0ZWQgYW5kIGhvdyB0byB1c2UgalF1ZXJ5LCBw
bGVhc2Ugc2VlIFtqUXVlcnkncyBkb2N1bWVudGF0aW9uXShodHRwOi8vYXBpLmpxdWVyeS5jb20v
KS4KK0ZvciBzb3VyY2UgZmlsZXMgYW5kIGlzc3VlcywgcGxlYXNlIHZpc2l0IHRoZSBbalF1ZXJ5
IHJlcG9dKGh0dHBzOi8vZ2l0aHViLmNvbS9qcXVlcnkvanF1ZXJ5KS4KKworIyMgSW5jbHVkaW5n
IGpRdWVyeQorCitCZWxvdyBhcmUgc29tZSBvZiB0aGUgbW9zdCBjb21tb24gd2F5cyB0byBpbmNs
dWRlIGpRdWVyeS4KKworIyMjIEJyb3dzZXIKKworIyMjIyBTY3JpcHQgdGFnCisKK2BgYGh0bWwK
KzxzY3JpcHQgc3JjPSJodHRwczovL2NvZGUuanF1ZXJ5LmNvbS9qcXVlcnktMi4yLjAubWluLmpz
Ij48L3NjcmlwdD4KK2BgYAorCisjIyMjIEJhYmVsCisKK1tCYWJlbF0oaHR0cDovL2JhYmVsanMu
aW8vKSBpcyBhIG5leHQgZ2VuZXJhdGlvbiBKYXZhU2NyaXB0IGNvbXBpbGVyLiBPbmUgb2YgdGhl
IGZlYXR1cmVzIGlzIHRoZSBhYmlsaXR5IHRvIHVzZSBFUzYvRVMyMDE1IG1vZHVsZXMgbm93LCBl
dmVuIHRob3VnaCBicm93c2VycyBkbyBub3QgeWV0IHN1cHBvcnQgdGhpcyBmZWF0dXJlIG5hdGl2
ZWx5LgorCitgYGBqcworaW1wb3J0ICQgZnJvbSAianF1ZXJ5IjsKK2BgYAorCisjIyMjIEJyb3dz
ZXJpZnkvV2VicGFjaworCitUaGVyZSBhcmUgc2V2ZXJhbCB3YXlzIHRvIHVzZSBbQnJvd3Nlcmlm
eV0oaHR0cDovL2Jyb3dzZXJpZnkub3JnLykgYW5kIFtXZWJwYWNrXShodHRwczovL3dlYnBhY2su
Z2l0aHViLmlvLykuIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHVzaW5nIHRoZXNlIHRvb2xzLCBw
bGVhc2UgcmVmZXIgdG8gdGhlIGNvcnJlc3BvbmRpbmcgcHJvamVjdCdzIGRvY3VtZW50aW9uLiBJ
biB0aGUgc2NyaXB0LCBpbmNsdWRpbmcgalF1ZXJ5IHdpbGwgdXN1YWxseSBsb29rIGxpa2UgdGhp
cy4uLgorCitgYGBqcwordmFyICQgPSByZXF1aXJlKCJqcXVlcnkiKTsKK2BgYAorCisjIyMjIEFN
RCAoQXN5bmNocm9ub3VzIE1vZHVsZSBEZWZpbml0aW9uKQorCitBTUQgaXMgYSBtb2R1bGUgZm9y
bWF0IGJ1aWx0IGZvciB0aGUgYnJvd3Nlci4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHdlIHJlY29t
bWVuZCBbcmVxdWlyZS5qcycgZG9jdW1lbnRhdGlvbl0oaHR0cDovL3JlcXVpcmVqcy5vcmcvZG9j
cy93aHlhbWQuaHRtbCkuCisKK2BgYGpzCitkZWZpbmUoWyJqcXVlcnkiXSwgZnVuY3Rpb24oJCkg
eworCit9KTsKK2BgYAorCisjIyMgTm9kZQorCitUbyBpbmNsdWRlIGpRdWVyeSBpbiBbTm9kZV0o
bm9kZWpzLm9yZyksIGZpcnN0IGluc3RhbGwgd2l0aCBucG0uCisKK2BgYHNoCitucG0gaW5zdGFs
bCBqcXVlcnkKK2BgYAorCitGb3IgalF1ZXJ5IHRvIHdvcmsgaW4gTm9kZSwgYSB3aW5kb3cgd2l0
aCBhIGRvY3VtZW50IGlzIHJlcXVpcmVkLiBTaW5jZSBubyBzdWNoIHdpbmRvdyBleGlzdHMgbmF0
aXZlbHkgaW4gTm9kZSwgb25lIGNhbiBiZSBtb2NrZWQgYnkgdG9vbHMgc3VjaCBhcyBbanNkb21d
KGh0dHBzOi8vZ2l0aHViLmNvbS90bXB2YXIvanNkb20pLiBUaGlzIGNhbiBiZSB1c2VmdWwgZm9y
IHRlc3RpbmcgcHVycG9zZXMuCisKK2BgYGpzCityZXF1aXJlKCJqc2RvbSIpLmVudigiIiwgZnVu
Y3Rpb24oZXJyLCB3aW5kb3cpIHsKKwlpZiAoZXJyKSB7CisJCWNvbnNvbGUuZXJyb3IoZXJyKTsK
KwkJcmV0dXJuOworCX0KKworCXZhciAkID0gcmVxdWlyZSgianF1ZXJ5Iikod2luZG93KTsKK30p
OworYGBgCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVy
eS9ib3dlci5qc29uIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvYm93
ZXIuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45NTc5OGQ1YWRhNmRjMGJiM2QzZDE3OTlhMmZkZmJlNDg5ZWQz
ZTE4Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9q
cXVlcnkvYm93ZXIuanNvbgpAQCAtMCwwICsxLDE0IEBACit7CisgICJuYW1lIjogImpxdWVyeSIs
CisgICJtYWluIjogImRpc3QvanF1ZXJ5LmpzIiwKKyAgImxpY2Vuc2UiOiAiTUlUIiwKKyAgImln
bm9yZSI6IFsKKyAgICAicGFja2FnZS5qc29uIgorICBdLAorICAia2V5d29yZHMiOiBbCisgICAg
ImpxdWVyeSIsCisgICAgImphdmFzY3JpcHQiLAorICAgICJicm93c2VyIiwKKyAgICAibGlicmFy
eSIKKyAgXQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L2Rpc3QvY29yZS5qcyBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L2Rpc3QvY29yZS5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
OTAwYjJlNGJlNDE2YWQzZDRjYWJjNDAzMjVjNzQ5MDE3ZjcxNDM2Ci0tLSAvZGV2L251bGwKKysr
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvZGlzdC9jb3JlLmpzCkBA
IC0wLDAgKzEsNDgyIEBACisvKiBnbG9iYWwgU3ltYm9sICovCisvLyBEZWZpbmluZyB0aGlzIGds
b2JhbCBpbiAuZXNsaW50cmMuanNvbiB3b3VsZCBjcmVhdGUgYSBkYW5nZXIgb2YgdXNpbmcgdGhl
IGdsb2JhbAorLy8gdW5ndWFyZGVkIGluIGFub3RoZXIgcGxhY2UsIGl0IHNlZW1zIHNhZmVyIHRv
IGRlZmluZSBnbG9iYWwgb25seSBmb3IgdGhpcyBtb2R1bGUKKworZGVmaW5lKCBbCisgICAgIi4v
dmFyL2FyciIsCisgICAgIi4vdmFyL2RvY3VtZW50IiwKKyAgICAiLi92YXIvZ2V0UHJvdG8iLAor
ICAgICIuL3Zhci9zbGljZSIsCisgICAgIi4vdmFyL2NvbmNhdCIsCisgICAgIi4vdmFyL3B1c2gi
LAorICAgICIuL3Zhci9pbmRleE9mIiwKKyAgICAiLi92YXIvY2xhc3MydHlwZSIsCisgICAgIi4v
dmFyL3RvU3RyaW5nIiwKKyAgICAiLi92YXIvaGFzT3duIiwKKyAgICAiLi92YXIvZm5Ub1N0cmlu
ZyIsCisgICAgIi4vdmFyL09iamVjdEZ1bmN0aW9uU3RyaW5nIiwKKyAgICAiLi92YXIvc3VwcG9y
dCIsCisgICAgIi4vY29yZS9ET01FdmFsIgorXSwgZnVuY3Rpb24oIGFyciwgZG9jdW1lbnQsIGdl
dFByb3RvLCBzbGljZSwgY29uY2F0LCBwdXNoLCBpbmRleE9mLAorICAgIGNsYXNzMnR5cGUsIHRv
U3RyaW5nLCBoYXNPd24sIGZuVG9TdHJpbmcsIE9iamVjdEZ1bmN0aW9uU3RyaW5nLAorICAgIHN1
cHBvcnQsIERPTUV2YWwgKSB7CisKKyJ1c2Ugc3RyaWN0IjsKKwordmFyCisgICAgdmVyc2lvbiA9
ICIzLjEuMSIsCisKKyAgICAvLyBEZWZpbmUgYSBsb2NhbCBjb3B5IG9mIGpRdWVyeQorICAgIGpR
dWVyeSA9IGZ1bmN0aW9uKCBzZWxlY3RvciwgY29udGV4dCApIHsKKworICAgICAgICAvLyBUaGUg
alF1ZXJ5IG9iamVjdCBpcyBhY3R1YWxseSBqdXN0IHRoZSBpbml0IGNvbnN0cnVjdG9yICdlbmhh
bmNlZCcKKyAgICAgICAgLy8gTmVlZCBpbml0IGlmIGpRdWVyeSBpcyBjYWxsZWQgKGp1c3QgYWxs
b3cgZXJyb3IgdG8gYmUgdGhyb3duIGlmIG5vdCBpbmNsdWRlZCkKKyAgICAgICAgcmV0dXJuIG5l
dyBqUXVlcnkuZm4uaW5pdCggc2VsZWN0b3IsIGNvbnRleHQgKTsKKyAgICB9LAorCisgICAgLy8g
U3VwcG9ydDogQW5kcm9pZCA8PTQuMCBvbmx5CisgICAgLy8gTWFrZSBzdXJlIHdlIHRyaW0gQk9N
IGFuZCBOQlNQCisgICAgcnRyaW0gPSAvXltcc1x1RkVGRlx4QTBdK3xbXHNcdUZFRkZceEEwXSsk
L2csCisKKyAgICAvLyBNYXRjaGVzIGRhc2hlZCBzdHJpbmcgZm9yIGNhbWVsaXppbmcKKyAgICBy
bXNQcmVmaXggPSAvXi1tcy0vLAorICAgIHJkYXNoQWxwaGEgPSAvLShbYS16XSkvZywKKworICAg
IC8vIFVzZWQgYnkgalF1ZXJ5LmNhbWVsQ2FzZSBhcyBjYWxsYmFjayB0byByZXBsYWNlKCkKKyAg
ICBmY2FtZWxDYXNlID0gZnVuY3Rpb24oIGFsbCwgbGV0dGVyICkgeworICAgICAgICByZXR1cm4g
bGV0dGVyLnRvVXBwZXJDYXNlKCk7CisgICAgfTsKKworalF1ZXJ5LmZuID0galF1ZXJ5LnByb3Rv
dHlwZSA9IHsKKworICAgIC8vIFRoZSBjdXJyZW50IHZlcnNpb24gb2YgalF1ZXJ5IGJlaW5nIHVz
ZWQKKyAgICBqcXVlcnk6IHZlcnNpb24sCisKKyAgICBjb25zdHJ1Y3RvcjogalF1ZXJ5LAorCisg
ICAgLy8gVGhlIGRlZmF1bHQgbGVuZ3RoIG9mIGEgalF1ZXJ5IG9iamVjdCBpcyAwCisgICAgbGVu
Z3RoOiAwLAorCisgICAgdG9BcnJheTogZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiBzbGlj
ZS5jYWxsKCB0aGlzICk7CisgICAgfSwKKworICAgIC8vIEdldCB0aGUgTnRoIGVsZW1lbnQgaW4g
dGhlIG1hdGNoZWQgZWxlbWVudCBzZXQgT1IKKyAgICAvLyBHZXQgdGhlIHdob2xlIG1hdGNoZWQg
ZWxlbWVudCBzZXQgYXMgYSBjbGVhbiBhcnJheQorICAgIGdldDogZnVuY3Rpb24oIG51bSApIHsK
KworICAgICAgICAvLyBSZXR1cm4gYWxsIHRoZSBlbGVtZW50cyBpbiBhIGNsZWFuIGFycmF5Cisg
ICAgICAgIGlmICggbnVtID09IG51bGwgKSB7CisgICAgICAgICAgICByZXR1cm4gc2xpY2UuY2Fs
bCggdGhpcyApOworICAgICAgICB9CisKKyAgICAgICAgLy8gUmV0dXJuIGp1c3QgdGhlIG9uZSBl
bGVtZW50IGZyb20gdGhlIHNldAorICAgICAgICByZXR1cm4gbnVtIDwgMCA/IHRoaXNbIG51bSAr
IHRoaXMubGVuZ3RoIF0gOiB0aGlzWyBudW0gXTsKKyAgICB9LAorCisgICAgLy8gVGFrZSBhbiBh
cnJheSBvZiBlbGVtZW50cyBhbmQgcHVzaCBpdCBvbnRvIHRoZSBzdGFjaworICAgIC8vIChyZXR1
cm5pbmcgdGhlIG5ldyBtYXRjaGVkIGVsZW1lbnQgc2V0KQorICAgIHB1c2hTdGFjazogZnVuY3Rp
b24oIGVsZW1zICkgeworCisgICAgICAgIC8vIEJ1aWxkIGEgbmV3IGpRdWVyeSBtYXRjaGVkIGVs
ZW1lbnQgc2V0CisgICAgICAgIHZhciByZXQgPSBqUXVlcnkubWVyZ2UoIHRoaXMuY29uc3RydWN0
b3IoKSwgZWxlbXMgKTsKKworICAgICAgICAvLyBBZGQgdGhlIG9sZCBvYmplY3Qgb250byB0aGUg
c3RhY2sgKGFzIGEgcmVmZXJlbmNlKQorICAgICAgICByZXQucHJldk9iamVjdCA9IHRoaXM7CisK
KyAgICAgICAgLy8gUmV0dXJuIHRoZSBuZXdseS1mb3JtZWQgZWxlbWVudCBzZXQKKyAgICAgICAg
cmV0dXJuIHJldDsKKyAgICB9LAorCisgICAgLy8gRXhlY3V0ZSBhIGNhbGxiYWNrIGZvciBldmVy
eSBlbGVtZW50IGluIHRoZSBtYXRjaGVkIHNldC4KKyAgICBlYWNoOiBmdW5jdGlvbiggY2FsbGJh
Y2sgKSB7CisgICAgICAgIHJldHVybiBqUXVlcnkuZWFjaCggdGhpcywgY2FsbGJhY2sgKTsKKyAg
ICB9LAorCisgICAgbWFwOiBmdW5jdGlvbiggY2FsbGJhY2sgKSB7CisgICAgICAgIHJldHVybiB0
aGlzLnB1c2hTdGFjayggalF1ZXJ5Lm1hcCggdGhpcywgZnVuY3Rpb24oIGVsZW0sIGkgKSB7Cisg
ICAgICAgICAgICByZXR1cm4gY2FsbGJhY2suY2FsbCggZWxlbSwgaSwgZWxlbSApOworICAgICAg
ICB9ICkgKTsKKyAgICB9LAorCisgICAgc2xpY2U6IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1
cm4gdGhpcy5wdXNoU3RhY2soIHNsaWNlLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKSApOworICAg
IH0sCisKKyAgICBmaXJzdDogZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiB0aGlzLmVxKCAw
ICk7CisgICAgfSwKKworICAgIGxhc3Q6IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gdGhp
cy5lcSggLTEgKTsKKyAgICB9LAorCisgICAgZXE6IGZ1bmN0aW9uKCBpICkgeworICAgICAgICB2
YXIgbGVuID0gdGhpcy5sZW5ndGgsCisgICAgICAgICAgICBqID0gK2kgKyAoIGkgPCAwID8gbGVu
IDogMCApOworICAgICAgICByZXR1cm4gdGhpcy5wdXNoU3RhY2soIGogPj0gMCAmJiBqIDwgbGVu
ID8gWyB0aGlzWyBqIF0gXSA6IFtdICk7CisgICAgfSwKKworICAgIGVuZDogZnVuY3Rpb24oKSB7
CisgICAgICAgIHJldHVybiB0aGlzLnByZXZPYmplY3QgfHwgdGhpcy5jb25zdHJ1Y3RvcigpOwor
ICAgIH0sCisKKyAgICAvLyBGb3IgaW50ZXJuYWwgdXNlIG9ubHkuCisgICAgLy8gQmVoYXZlcyBs
aWtlIGFuIEFycmF5J3MgbWV0aG9kLCBub3QgbGlrZSBhIGpRdWVyeSBtZXRob2QuCisgICAgcHVz
aDogcHVzaCwKKyAgICBzb3J0OiBhcnIuc29ydCwKKyAgICBzcGxpY2U6IGFyci5zcGxpY2UKK307
CisKK2pRdWVyeS5leHRlbmQgPSBqUXVlcnkuZm4uZXh0ZW5kID0gZnVuY3Rpb24oKSB7CisgICAg
dmFyIG9wdGlvbnMsIG5hbWUsIHNyYywgY29weSwgY29weUlzQXJyYXksIGNsb25lLAorICAgICAg
ICB0YXJnZXQgPSBhcmd1bWVudHNbIDAgXSB8fCB7fSwKKyAgICAgICAgaSA9IDEsCisgICAgICAg
IGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGgsCisgICAgICAgIGRlZXAgPSBmYWxzZTsKKworICAg
IC8vIEhhbmRsZSBhIGRlZXAgY29weSBzaXR1YXRpb24KKyAgICBpZiAoIHR5cGVvZiB0YXJnZXQg
PT09ICJib29sZWFuIiApIHsKKyAgICAgICAgZGVlcCA9IHRhcmdldDsKKworICAgICAgICAvLyBT
a2lwIHRoZSBib29sZWFuIGFuZCB0aGUgdGFyZ2V0CisgICAgICAgIHRhcmdldCA9IGFyZ3VtZW50
c1sgaSBdIHx8IHt9OworICAgICAgICBpKys7CisgICAgfQorCisgICAgLy8gSGFuZGxlIGNhc2Ug
d2hlbiB0YXJnZXQgaXMgYSBzdHJpbmcgb3Igc29tZXRoaW5nIChwb3NzaWJsZSBpbiBkZWVwIGNv
cHkpCisgICAgaWYgKCB0eXBlb2YgdGFyZ2V0ICE9PSAib2JqZWN0IiAmJiAhalF1ZXJ5LmlzRnVu
Y3Rpb24oIHRhcmdldCApICkgeworICAgICAgICB0YXJnZXQgPSB7fTsKKyAgICB9CisKKyAgICAv
LyBFeHRlbmQgalF1ZXJ5IGl0c2VsZiBpZiBvbmx5IG9uZSBhcmd1bWVudCBpcyBwYXNzZWQKKyAg
ICBpZiAoIGkgPT09IGxlbmd0aCApIHsKKyAgICAgICAgdGFyZ2V0ID0gdGhpczsKKyAgICAgICAg
aS0tOworICAgIH0KKworICAgIGZvciAoIDsgaSA8IGxlbmd0aDsgaSsrICkgeworCisgICAgICAg
IC8vIE9ubHkgZGVhbCB3aXRoIG5vbi1udWxsL3VuZGVmaW5lZCB2YWx1ZXMKKyAgICAgICAgaWYg
KCAoIG9wdGlvbnMgPSBhcmd1bWVudHNbIGkgXSApICE9IG51bGwgKSB7CisKKyAgICAgICAgICAg
IC8vIEV4dGVuZCB0aGUgYmFzZSBvYmplY3QKKyAgICAgICAgICAgIGZvciAoIG5hbWUgaW4gb3B0
aW9ucyApIHsKKyAgICAgICAgICAgICAgICBzcmMgPSB0YXJnZXRbIG5hbWUgXTsKKyAgICAgICAg
ICAgICAgICBjb3B5ID0gb3B0aW9uc1sgbmFtZSBdOworCisgICAgICAgICAgICAgICAgLy8gUHJl
dmVudCBuZXZlci1lbmRpbmcgbG9vcAorICAgICAgICAgICAgICAgIGlmICggdGFyZ2V0ID09PSBj
b3B5ICkgeworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICAvLyBSZWN1cnNlIGlmIHdlJ3JlIG1lcmdpbmcgcGxhaW4gb2Jq
ZWN0cyBvciBhcnJheXMKKyAgICAgICAgICAgICAgICBpZiAoIGRlZXAgJiYgY29weSAmJiAoIGpR
dWVyeS5pc1BsYWluT2JqZWN0KCBjb3B5ICkgfHwKKyAgICAgICAgICAgICAgICAgICAgKCBjb3B5
SXNBcnJheSA9IGpRdWVyeS5pc0FycmF5KCBjb3B5ICkgKSApICkgeworCisgICAgICAgICAgICAg
ICAgICAgIGlmICggY29weUlzQXJyYXkgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjb3B5
SXNBcnJheSA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgY2xvbmUgPSBzcmMgJiYg
alF1ZXJ5LmlzQXJyYXkoIHNyYyApID8gc3JjIDogW107CisKKyAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsb25lID0gc3JjICYmIGpRdWVyeS5p
c1BsYWluT2JqZWN0KCBzcmMgKSA/IHNyYyA6IHt9OworICAgICAgICAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICAgICAgLy8gTmV2ZXIgbW92ZSBvcmlnaW5hbCBvYmplY3RzLCBjbG9u
ZSB0aGVtCisgICAgICAgICAgICAgICAgICAgIHRhcmdldFsgbmFtZSBdID0galF1ZXJ5LmV4dGVu
ZCggZGVlcCwgY2xvbmUsIGNvcHkgKTsKKworICAgICAgICAgICAgICAgIC8vIERvbid0IGJyaW5n
IGluIHVuZGVmaW5lZCB2YWx1ZXMKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCBjb3B5ICE9
PSB1bmRlZmluZWQgKSB7CisgICAgICAgICAgICAgICAgICAgIHRhcmdldFsgbmFtZSBdID0gY29w
eTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisK
KyAgICAvLyBSZXR1cm4gdGhlIG1vZGlmaWVkIG9iamVjdAorICAgIHJldHVybiB0YXJnZXQ7Cit9
OworCitqUXVlcnkuZXh0ZW5kKCB7CisKKyAgICAvLyBVbmlxdWUgZm9yIGVhY2ggY29weSBvZiBq
UXVlcnkgb24gdGhlIHBhZ2UKKyAgICBleHBhbmRvOiAialF1ZXJ5IiArICggdmVyc2lvbiArIE1h
dGgucmFuZG9tKCkgKS5yZXBsYWNlKCAvXEQvZywgIiIgKSwKKworICAgIC8vIEFzc3VtZSBqUXVl
cnkgaXMgcmVhZHkgd2l0aG91dCB0aGUgcmVhZHkgbW9kdWxlCisgICAgaXNSZWFkeTogdHJ1ZSwK
KworICAgIGVycm9yOiBmdW5jdGlvbiggbXNnICkgeworICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
IG1zZyApOworICAgIH0sCisKKyAgICBub29wOiBmdW5jdGlvbigpIHt9LAorCisgICAgaXNGdW5j
dGlvbjogZnVuY3Rpb24oIG9iaiApIHsKKyAgICAgICAgcmV0dXJuIGpRdWVyeS50eXBlKCBvYmog
KSA9PT0gImZ1bmN0aW9uIjsKKyAgICB9LAorCisgICAgaXNBcnJheTogQXJyYXkuaXNBcnJheSwK
KworICAgIGlzV2luZG93OiBmdW5jdGlvbiggb2JqICkgeworICAgICAgICByZXR1cm4gb2JqICE9
IG51bGwgJiYgb2JqID09PSBvYmoud2luZG93OworICAgIH0sCisKKyAgICBpc051bWVyaWM6IGZ1
bmN0aW9uKCBvYmogKSB7CisKKyAgICAgICAgLy8gQXMgb2YgalF1ZXJ5IDMuMCwgaXNOdW1lcmlj
IGlzIGxpbWl0ZWQgdG8KKyAgICAgICAgLy8gc3RyaW5ncyBhbmQgbnVtYmVycyAocHJpbWl0aXZl
cyBvciBvYmplY3RzKQorICAgICAgICAvLyB0aGF0IGNhbiBiZSBjb2VyY2VkIHRvIGZpbml0ZSBu
dW1iZXJzIChnaC0yNjYyKQorICAgICAgICB2YXIgdHlwZSA9IGpRdWVyeS50eXBlKCBvYmogKTsK
KyAgICAgICAgcmV0dXJuICggdHlwZSA9PT0gIm51bWJlciIgfHwgdHlwZSA9PT0gInN0cmluZyIg
KSAmJgorCisgICAgICAgICAgICAvLyBwYXJzZUZsb2F0IE5hTnMgbnVtZXJpYy1jYXN0IGZhbHNl
IHBvc2l0aXZlcyAoIiIpCisgICAgICAgICAgICAvLyAuLi5idXQgbWlzaW50ZXJwcmV0cyBsZWFk
aW5nLW51bWJlciBzdHJpbmdzLCBwYXJ0aWN1bGFybHkgaGV4IGxpdGVyYWxzICgiMHguLi4iKQor
ICAgICAgICAgICAgLy8gc3VidHJhY3Rpb24gZm9yY2VzIGluZmluaXRpZXMgdG8gTmFOCisgICAg
ICAgICAgICAhaXNOYU4oIG9iaiAtIHBhcnNlRmxvYXQoIG9iaiApICk7CisgICAgfSwKKworICAg
IGlzUGxhaW5PYmplY3Q6IGZ1bmN0aW9uKCBvYmogKSB7CisgICAgICAgIHZhciBwcm90bywgQ3Rv
cjsKKworICAgICAgICAvLyBEZXRlY3Qgb2J2aW91cyBuZWdhdGl2ZXMKKyAgICAgICAgLy8gVXNl
IHRvU3RyaW5nIGluc3RlYWQgb2YgalF1ZXJ5LnR5cGUgdG8gY2F0Y2ggaG9zdCBvYmplY3RzCisg
ICAgICAgIGlmICggIW9iaiB8fCB0b1N0cmluZy5jYWxsKCBvYmogKSAhPT0gIltvYmplY3QgT2Jq
ZWN0XSIgKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAg
ICBwcm90byA9IGdldFByb3RvKCBvYmogKTsKKworICAgICAgICAvLyBPYmplY3RzIHdpdGggbm8g
cHJvdG90eXBlIChlLmcuLCBgT2JqZWN0LmNyZWF0ZSggbnVsbCApYCkgYXJlIHBsYWluCisgICAg
ICAgIGlmICggIXByb3RvICkgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0K
KworICAgICAgICAvLyBPYmplY3RzIHdpdGggcHJvdG90eXBlIGFyZSBwbGFpbiBpZmYgdGhleSB3
ZXJlIGNvbnN0cnVjdGVkIGJ5IGEgZ2xvYmFsIE9iamVjdCBmdW5jdGlvbgorICAgICAgICBDdG9y
ID0gaGFzT3duLmNhbGwoIHByb3RvLCAiY29uc3RydWN0b3IiICkgJiYgcHJvdG8uY29uc3RydWN0
b3I7CisgICAgICAgIHJldHVybiB0eXBlb2YgQ3RvciA9PT0gImZ1bmN0aW9uIiAmJiBmblRvU3Ry
aW5nLmNhbGwoIEN0b3IgKSA9PT0gT2JqZWN0RnVuY3Rpb25TdHJpbmc7CisgICAgfSwKKworICAg
IGlzRW1wdHlPYmplY3Q6IGZ1bmN0aW9uKCBvYmogKSB7CisKKyAgICAgICAgLyogZXNsaW50LWRp
c2FibGUgbm8tdW51c2VkLXZhcnMgKi8KKyAgICAgICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNv
bS9lc2xpbnQvZXNsaW50L2lzc3Vlcy82MTI1CisgICAgICAgIHZhciBuYW1lOworCisgICAgICAg
IGZvciAoIG5hbWUgaW4gb2JqICkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0sCisKKyAgICB0eXBlOiBmdW5jdGlvbigg
b2JqICkgeworICAgICAgICBpZiAoIG9iaiA9PSBudWxsICkgeworICAgICAgICAgICAgcmV0dXJu
IG9iaiArICIiOworICAgICAgICB9CisKKyAgICAgICAgLy8gU3VwcG9ydDogQW5kcm9pZCA8PTIu
MyBvbmx5IChmdW5jdGlvbmlzaCBSZWdFeHApCisgICAgICAgIHJldHVybiB0eXBlb2Ygb2JqID09
PSAib2JqZWN0IiB8fCB0eXBlb2Ygb2JqID09PSAiZnVuY3Rpb24iID8KKyAgICAgICAgICAgIGNs
YXNzMnR5cGVbIHRvU3RyaW5nLmNhbGwoIG9iaiApIF0gfHwgIm9iamVjdCIgOgorICAgICAgICAg
ICAgdHlwZW9mIG9iajsKKyAgICB9LAorCisgICAgLy8gRXZhbHVhdGVzIGEgc2NyaXB0IGluIGEg
Z2xvYmFsIGNvbnRleHQKKyAgICBnbG9iYWxFdmFsOiBmdW5jdGlvbiggY29kZSApIHsKKyAgICAg
ICAgRE9NRXZhbCggY29kZSApOworICAgIH0sCisKKyAgICAvLyBDb252ZXJ0IGRhc2hlZCB0byBj
YW1lbENhc2U7IHVzZWQgYnkgdGhlIGNzcyBhbmQgZGF0YSBtb2R1bGVzCisgICAgLy8gU3VwcG9y
dDogSUUgPD05IC0gMTEsIEVkZ2UgMTIgLSAxMworICAgIC8vIE1pY3Jvc29mdCBmb3Jnb3QgdG8g
aHVtcCB0aGVpciB2ZW5kb3IgcHJlZml4ICgjOTU3MikKKyAgICBjYW1lbENhc2U6IGZ1bmN0aW9u
KCBzdHJpbmcgKSB7CisgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSggcm1zUHJlZml4LCAi
bXMtIiApLnJlcGxhY2UoIHJkYXNoQWxwaGEsIGZjYW1lbENhc2UgKTsKKyAgICB9LAorCisgICAg
bm9kZU5hbWU6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lICkgeworICAgICAgICByZXR1cm4gZWxlbS5u
b2RlTmFtZSAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IG5hbWUudG9Mb3dlckNh
c2UoKTsKKyAgICB9LAorCisgICAgZWFjaDogZnVuY3Rpb24oIG9iaiwgY2FsbGJhY2sgKSB7Cisg
ICAgICAgIHZhciBsZW5ndGgsIGkgPSAwOworCisgICAgICAgIGlmICggaXNBcnJheUxpa2UoIG9i
aiApICkgeworICAgICAgICAgICAgbGVuZ3RoID0gb2JqLmxlbmd0aDsKKyAgICAgICAgICAgIGZv
ciAoIDsgaSA8IGxlbmd0aDsgaSsrICkgeworICAgICAgICAgICAgICAgIGlmICggY2FsbGJhY2su
Y2FsbCggb2JqWyBpIF0sIGksIG9ialsgaSBdICkgPT09IGZhbHNlICkgeworICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBmb3IgKCBpIGluIG9iaiApIHsKKyAgICAgICAgICAgICAg
ICBpZiAoIGNhbGxiYWNrLmNhbGwoIG9ialsgaSBdLCBpLCBvYmpbIGkgXSApID09PSBmYWxzZSAp
IHsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG9iajsKKyAgICB9LAorCisgICAg
Ly8gU3VwcG9ydDogQW5kcm9pZCA8PTQuMCBvbmx5CisgICAgdHJpbTogZnVuY3Rpb24oIHRleHQg
KSB7CisgICAgICAgIHJldHVybiB0ZXh0ID09IG51bGwgPworICAgICAgICAgICAgIiIgOgorICAg
ICAgICAgICAgKCB0ZXh0ICsgIiIgKS5yZXBsYWNlKCBydHJpbSwgIiIgKTsKKyAgICB9LAorCisg
ICAgLy8gcmVzdWx0cyBpcyBmb3IgaW50ZXJuYWwgdXNhZ2Ugb25seQorICAgIG1ha2VBcnJheTog
ZnVuY3Rpb24oIGFyciwgcmVzdWx0cyApIHsKKyAgICAgICAgdmFyIHJldCA9IHJlc3VsdHMgfHwg
W107CisKKyAgICAgICAgaWYgKCBhcnIgIT0gbnVsbCApIHsKKyAgICAgICAgICAgIGlmICggaXNB
cnJheUxpa2UoIE9iamVjdCggYXJyICkgKSApIHsKKyAgICAgICAgICAgICAgICBqUXVlcnkubWVy
Z2UoIHJldCwKKyAgICAgICAgICAgICAgICAgICAgdHlwZW9mIGFyciA9PT0gInN0cmluZyIgPwor
ICAgICAgICAgICAgICAgICAgICBbIGFyciBdIDogYXJyCisgICAgICAgICAgICAgICAgKTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcHVzaC5jYWxsKCByZXQsIGFyciAp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHJldDsKKyAgICB9
LAorCisgICAgaW5BcnJheTogZnVuY3Rpb24oIGVsZW0sIGFyciwgaSApIHsKKyAgICAgICAgcmV0
dXJuIGFyciA9PSBudWxsID8gLTEgOiBpbmRleE9mLmNhbGwoIGFyciwgZWxlbSwgaSApOworICAg
IH0sCisKKyAgICAvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4wIG9ubHksIFBoYW50b21KUyAxIG9u
bHkKKyAgICAvLyBwdXNoLmFwcGx5KF8sIGFycmF5bGlrZSkgdGhyb3dzIG9uIGFuY2llbnQgV2Vi
S2l0CisgICAgbWVyZ2U6IGZ1bmN0aW9uKCBmaXJzdCwgc2Vjb25kICkgeworICAgICAgICB2YXIg
bGVuID0gK3NlY29uZC5sZW5ndGgsCisgICAgICAgICAgICBqID0gMCwKKyAgICAgICAgICAgIGkg
PSBmaXJzdC5sZW5ndGg7CisKKyAgICAgICAgZm9yICggOyBqIDwgbGVuOyBqKysgKSB7CisgICAg
ICAgICAgICBmaXJzdFsgaSsrIF0gPSBzZWNvbmRbIGogXTsKKyAgICAgICAgfQorCisgICAgICAg
IGZpcnN0Lmxlbmd0aCA9IGk7CisKKyAgICAgICAgcmV0dXJuIGZpcnN0OworICAgIH0sCisKKyAg
ICBncmVwOiBmdW5jdGlvbiggZWxlbXMsIGNhbGxiYWNrLCBpbnZlcnQgKSB7CisgICAgICAgIHZh
ciBjYWxsYmFja0ludmVyc2UsCisgICAgICAgICAgICBtYXRjaGVzID0gW10sCisgICAgICAgICAg
ICBpID0gMCwKKyAgICAgICAgICAgIGxlbmd0aCA9IGVsZW1zLmxlbmd0aCwKKyAgICAgICAgICAg
IGNhbGxiYWNrRXhwZWN0ID0gIWludmVydDsKKworICAgICAgICAvLyBHbyB0aHJvdWdoIHRoZSBh
cnJheSwgb25seSBzYXZpbmcgdGhlIGl0ZW1zCisgICAgICAgIC8vIHRoYXQgcGFzcyB0aGUgdmFs
aWRhdG9yIGZ1bmN0aW9uCisgICAgICAgIGZvciAoIDsgaSA8IGxlbmd0aDsgaSsrICkgeworICAg
ICAgICAgICAgY2FsbGJhY2tJbnZlcnNlID0gIWNhbGxiYWNrKCBlbGVtc1sgaSBdLCBpICk7Cisg
ICAgICAgICAgICBpZiAoIGNhbGxiYWNrSW52ZXJzZSAhPT0gY2FsbGJhY2tFeHBlY3QgKSB7Cisg
ICAgICAgICAgICAgICAgbWF0Y2hlcy5wdXNoKCBlbGVtc1sgaSBdICk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbWF0Y2hlczsKKyAgICB9LAorCisgICAgLy8g
YXJnIGlzIGZvciBpbnRlcm5hbCB1c2FnZSBvbmx5CisgICAgbWFwOiBmdW5jdGlvbiggZWxlbXMs
IGNhbGxiYWNrLCBhcmcgKSB7CisgICAgICAgIHZhciBsZW5ndGgsIHZhbHVlLAorICAgICAgICAg
ICAgaSA9IDAsCisgICAgICAgICAgICByZXQgPSBbXTsKKworICAgICAgICAvLyBHbyB0aHJvdWdo
IHRoZSBhcnJheSwgdHJhbnNsYXRpbmcgZWFjaCBvZiB0aGUgaXRlbXMgdG8gdGhlaXIgbmV3IHZh
bHVlcworICAgICAgICBpZiAoIGlzQXJyYXlMaWtlKCBlbGVtcyApICkgeworICAgICAgICAgICAg
bGVuZ3RoID0gZWxlbXMubGVuZ3RoOworICAgICAgICAgICAgZm9yICggOyBpIDwgbGVuZ3RoOyBp
KysgKSB7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBjYWxsYmFjayggZWxlbXNbIGkgXSwgaSwg
YXJnICk7CisKKyAgICAgICAgICAgICAgICBpZiAoIHZhbHVlICE9IG51bGwgKSB7CisgICAgICAg
ICAgICAgICAgICAgIHJldC5wdXNoKCB2YWx1ZSApOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKworICAgICAgICAvLyBHbyB0aHJvdWdoIGV2ZXJ5IGtleSBvbiB0aGUgb2JqZWN0
LAorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZm9yICggaSBpbiBlbGVtcyApIHsKKyAg
ICAgICAgICAgICAgICB2YWx1ZSA9IGNhbGxiYWNrKCBlbGVtc1sgaSBdLCBpLCBhcmcgKTsKKwor
ICAgICAgICAgICAgICAgIGlmICggdmFsdWUgIT0gbnVsbCApIHsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0LnB1c2goIHZhbHVlICk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
ICAgICAgICB9CisKKyAgICAgICAgLy8gRmxhdHRlbiBhbnkgbmVzdGVkIGFycmF5cworICAgICAg
ICByZXR1cm4gY29uY2F0LmFwcGx5KCBbXSwgcmV0ICk7CisgICAgfSwKKworICAgIC8vIEEgZ2xv
YmFsIEdVSUQgY291bnRlciBmb3Igb2JqZWN0cworICAgIGd1aWQ6IDEsCisKKyAgICAvLyBCaW5k
IGEgZnVuY3Rpb24gdG8gYSBjb250ZXh0LCBvcHRpb25hbGx5IHBhcnRpYWxseSBhcHBseWluZyBh
bnkKKyAgICAvLyBhcmd1bWVudHMuCisgICAgcHJveHk6IGZ1bmN0aW9uKCBmbiwgY29udGV4dCAp
IHsKKyAgICAgICAgdmFyIHRtcCwgYXJncywgcHJveHk7CisKKyAgICAgICAgaWYgKCB0eXBlb2Yg
Y29udGV4dCA9PT0gInN0cmluZyIgKSB7CisgICAgICAgICAgICB0bXAgPSBmblsgY29udGV4dCBd
OworICAgICAgICAgICAgY29udGV4dCA9IGZuOworICAgICAgICAgICAgZm4gPSB0bXA7CisgICAg
ICAgIH0KKworICAgICAgICAvLyBRdWljayBjaGVjayB0byBkZXRlcm1pbmUgaWYgdGFyZ2V0IGlz
IGNhbGxhYmxlLCBpbiB0aGUgc3BlYworICAgICAgICAvLyB0aGlzIHRocm93cyBhIFR5cGVFcnJv
ciwgYnV0IHdlIHdpbGwganVzdCByZXR1cm4gdW5kZWZpbmVkLgorICAgICAgICBpZiAoICFqUXVl
cnkuaXNGdW5jdGlvbiggZm4gKSApIHsKKyAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7Cisg
ICAgICAgIH0KKworICAgICAgICAvLyBTaW11bGF0ZWQgYmluZAorICAgICAgICBhcmdzID0gc2xp
Y2UuY2FsbCggYXJndW1lbnRzLCAyICk7CisgICAgICAgIHByb3h5ID0gZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICByZXR1cm4gZm4uYXBwbHkoIGNvbnRleHQgfHwgdGhpcywgYXJncy5jb25jYXQo
IHNsaWNlLmNhbGwoIGFyZ3VtZW50cyApICkgKTsKKyAgICAgICAgfTsKKworICAgICAgICAvLyBT
ZXQgdGhlIGd1aWQgb2YgdW5pcXVlIGhhbmRsZXIgdG8gdGhlIHNhbWUgb2Ygb3JpZ2luYWwgaGFu
ZGxlciwgc28gaXQgY2FuIGJlIHJlbW92ZWQKKyAgICAgICAgcHJveHkuZ3VpZCA9IGZuLmd1aWQg
PSBmbi5ndWlkIHx8IGpRdWVyeS5ndWlkKys7CisKKyAgICAgICAgcmV0dXJuIHByb3h5OworICAg
IH0sCisKKyAgICBub3c6IERhdGUubm93LAorCisgICAgLy8galF1ZXJ5LnN1cHBvcnQgaXMgbm90
IHVzZWQgaW4gQ29yZSBidXQgb3RoZXIgcHJvamVjdHMgYXR0YWNoIHRoZWlyCisgICAgLy8gcHJv
cGVydGllcyB0byBpdCBzbyBpdCBuZWVkcyB0byBleGlzdC4KKyAgICBzdXBwb3J0OiBzdXBwb3J0
Cit9ICk7CisKK2lmICggdHlwZW9mIFN5bWJvbCA9PT0gImZ1bmN0aW9uIiApIHsKKyAgICBqUXVl
cnkuZm5bIFN5bWJvbC5pdGVyYXRvciBdID0gYXJyWyBTeW1ib2wuaXRlcmF0b3IgXTsKK30KKwor
Ly8gUG9wdWxhdGUgdGhlIGNsYXNzMnR5cGUgbWFwCitqUXVlcnkuZWFjaCggIkJvb2xlYW4gTnVt
YmVyIFN0cmluZyBGdW5jdGlvbiBBcnJheSBEYXRlIFJlZ0V4cCBPYmplY3QgRXJyb3IgU3ltYm9s
Ii5zcGxpdCggIiAiICksCitmdW5jdGlvbiggaSwgbmFtZSApIHsKKyAgICBjbGFzczJ0eXBlWyAi
W29iamVjdCAiICsgbmFtZSArICJdIiBdID0gbmFtZS50b0xvd2VyQ2FzZSgpOworfSApOworCitm
dW5jdGlvbiBpc0FycmF5TGlrZSggb2JqICkgeworCisgICAgLy8gU3VwcG9ydDogcmVhbCBpT1Mg
OC4yIG9ubHkgKG5vdCByZXByb2R1Y2libGUgaW4gc2ltdWxhdG9yKQorICAgIC8vIGBpbmAgY2hl
Y2sgdXNlZCB0byBwcmV2ZW50IEpJVCBlcnJvciAoZ2gtMjE0NSkKKyAgICAvLyBoYXNPd24gaXNu
J3QgdXNlZCBoZXJlIGR1ZSB0byBmYWxzZSBuZWdhdGl2ZXMKKyAgICAvLyByZWdhcmRpbmcgTm9k
ZWxpc3QgbGVuZ3RoIGluIElFCisgICAgdmFyIGxlbmd0aCA9ICEhb2JqICYmICJsZW5ndGgiIGlu
IG9iaiAmJiBvYmoubGVuZ3RoLAorICAgICAgICB0eXBlID0galF1ZXJ5LnR5cGUoIG9iaiApOwor
CisgICAgaWYgKCB0eXBlID09PSAiZnVuY3Rpb24iIHx8IGpRdWVyeS5pc1dpbmRvdyggb2JqICkg
KSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHlwZSA9PT0g
ImFycmF5IiB8fCBsZW5ndGggPT09IDAgfHwKKyAgICAgICAgdHlwZW9mIGxlbmd0aCA9PT0gIm51
bWJlciIgJiYgbGVuZ3RoID4gMCAmJiAoIGxlbmd0aCAtIDEgKSBpbiBvYmo7Cit9CisKK3JldHVy
biBqUXVlcnk7Cit9ICk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1
bGVzL2pxdWVyeS9kaXN0L2pxdWVyeS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVs
ZXMvanF1ZXJ5L2Rpc3QvanF1ZXJ5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUxYWVhMjkzYTMzZmE0YjJiODdm
YWJiNDA2MGU3NjI2ZGMyYTQ4OTEKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVl
cnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9kaXN0L2pxdWVyeS5qcwpAQCAtMCwwICsxLDEwMjIwIEBA
CisvKiEKKyAqIGpRdWVyeSBKYXZhU2NyaXB0IExpYnJhcnkgdjMuMS4xCisgKiBodHRwczovL2px
dWVyeS5jb20vCisgKgorICogSW5jbHVkZXMgU2l6emxlLmpzCisgKiBodHRwczovL3NpenpsZWpz
LmNvbS8KKyAqCisgKiBDb3B5cmlnaHQgalF1ZXJ5IEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRy
aWJ1dG9ycworICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlCisgKiBodHRwczovL2px
dWVyeS5vcmcvbGljZW5zZQorICoKKyAqIERhdGU6IDIwMTYtMDktMjJUMjI6MzBaCisgKi8KKygg
ZnVuY3Rpb24oIGdsb2JhbCwgZmFjdG9yeSApIHsKKworICAgICJ1c2Ugc3RyaWN0IjsKKworICAg
IGlmICggdHlwZW9mIG1vZHVsZSA9PT0gIm9iamVjdCIgJiYgdHlwZW9mIG1vZHVsZS5leHBvcnRz
ID09PSAib2JqZWN0IiApIHsKKworICAgICAgICAvLyBGb3IgQ29tbW9uSlMgYW5kIENvbW1vbkpT
LWxpa2UgZW52aXJvbm1lbnRzIHdoZXJlIGEgcHJvcGVyIGB3aW5kb3dgCisgICAgICAgIC8vIGlz
IHByZXNlbnQsIGV4ZWN1dGUgdGhlIGZhY3RvcnkgYW5kIGdldCBqUXVlcnkuCisgICAgICAgIC8v
IEZvciBlbnZpcm9ubWVudHMgdGhhdCBkbyBub3QgaGF2ZSBhIGB3aW5kb3dgIHdpdGggYSBgZG9j
dW1lbnRgCisgICAgICAgIC8vIChzdWNoIGFzIE5vZGUuanMpLCBleHBvc2UgYSBmYWN0b3J5IGFz
IG1vZHVsZS5leHBvcnRzLgorICAgICAgICAvLyBUaGlzIGFjY2VudHVhdGVzIHRoZSBuZWVkIGZv
ciB0aGUgY3JlYXRpb24gb2YgYSByZWFsIGB3aW5kb3dgLgorICAgICAgICAvLyBlLmcuIHZhciBq
UXVlcnkgPSByZXF1aXJlKCJqcXVlcnkiKSh3aW5kb3cpOworICAgICAgICAvLyBTZWUgdGlja2V0
ICMxNDU0OSBmb3IgbW9yZSBpbmZvLgorICAgICAgICBtb2R1bGUuZXhwb3J0cyA9IGdsb2JhbC5k
b2N1bWVudCA/CisgICAgICAgICAgICBmYWN0b3J5KCBnbG9iYWwsIHRydWUgKSA6CisgICAgICAg
ICAgICBmdW5jdGlvbiggdyApIHsKKyAgICAgICAgICAgICAgICBpZiAoICF3LmRvY3VtZW50ICkg
eworICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoICJqUXVlcnkgcmVxdWlyZXMg
YSB3aW5kb3cgd2l0aCBhIGRvY3VtZW50IiApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFjdG9yeSggdyApOworICAgICAgICAgICAgfTsKKyAgICB9IGVsc2Ug
eworICAgICAgICBmYWN0b3J5KCBnbG9iYWwgKTsKKyAgICB9CisKKy8vIFBhc3MgdGhpcyBpZiB3
aW5kb3cgaXMgbm90IGRlZmluZWQgeWV0Cit9ICkoIHR5cGVvZiB3aW5kb3cgIT09ICJ1bmRlZmlu
ZWQiID8gd2luZG93IDogdGhpcywgZnVuY3Rpb24oIHdpbmRvdywgbm9HbG9iYWwgKSB7CisKKy8v
IEVkZ2UgPD0gMTIgLSAxMyssIEZpcmVmb3ggPD0xOCAtIDQ1KywgSUUgMTAgLSAxMSwgU2FmYXJp
IDUuMSAtIDkrLCBpT1MgNiAtIDkuMQorLy8gdGhyb3cgZXhjZXB0aW9ucyB3aGVuIG5vbi1zdHJp
Y3QgY29kZSAoZS5nLiwgQVNQLk5FVCA0LjUpIGFjY2Vzc2VzIHN0cmljdCBtb2RlCisvLyBhcmd1
bWVudHMuY2FsbGVlLmNhbGxlciAodHJhYy0xMzMzNSkuIEJ1dCBhcyBvZiBqUXVlcnkgMy4wICgy
MDE2KSwgc3RyaWN0IG1vZGUgc2hvdWxkIGJlIGNvbW1vbgorLy8gZW5vdWdoIHRoYXQgYWxsIHN1
Y2ggYXR0ZW1wdHMgYXJlIGd1YXJkZWQgaW4gYSB0cnkgYmxvY2suCisidXNlIHN0cmljdCI7CisK
K3ZhciBhcnIgPSBbXTsKKwordmFyIGRvY3VtZW50ID0gd2luZG93LmRvY3VtZW50OworCit2YXIg
Z2V0UHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Y7CisKK3ZhciBzbGljZSA9IGFyci5zbGlj
ZTsKKwordmFyIGNvbmNhdCA9IGFyci5jb25jYXQ7CisKK3ZhciBwdXNoID0gYXJyLnB1c2g7CisK
K3ZhciBpbmRleE9mID0gYXJyLmluZGV4T2Y7CisKK3ZhciBjbGFzczJ0eXBlID0ge307CisKK3Zh
ciB0b1N0cmluZyA9IGNsYXNzMnR5cGUudG9TdHJpbmc7CisKK3ZhciBoYXNPd24gPSBjbGFzczJ0
eXBlLmhhc093blByb3BlcnR5OworCit2YXIgZm5Ub1N0cmluZyA9IGhhc093bi50b1N0cmluZzsK
KwordmFyIE9iamVjdEZ1bmN0aW9uU3RyaW5nID0gZm5Ub1N0cmluZy5jYWxsKCBPYmplY3QgKTsK
KwordmFyIHN1cHBvcnQgPSB7fTsKKworCisKKyAgICBmdW5jdGlvbiBET01FdmFsKCBjb2RlLCBk
b2MgKSB7CisgICAgICAgIGRvYyA9IGRvYyB8fCBkb2N1bWVudDsKKworICAgICAgICB2YXIgc2Ny
aXB0ID0gZG9jLmNyZWF0ZUVsZW1lbnQoICJzY3JpcHQiICk7CisKKyAgICAgICAgc2NyaXB0LnRl
eHQgPSBjb2RlOworICAgICAgICBkb2MuaGVhZC5hcHBlbmRDaGlsZCggc2NyaXB0ICkucGFyZW50
Tm9kZS5yZW1vdmVDaGlsZCggc2NyaXB0ICk7CisgICAgfQorLyogZ2xvYmFsIFN5bWJvbCAqLwor
Ly8gRGVmaW5pbmcgdGhpcyBnbG9iYWwgaW4gLmVzbGludHJjLmpzb24gd291bGQgY3JlYXRlIGEg
ZGFuZ2VyIG9mIHVzaW5nIHRoZSBnbG9iYWwKKy8vIHVuZ3VhcmRlZCBpbiBhbm90aGVyIHBsYWNl
LCBpdCBzZWVtcyBzYWZlciB0byBkZWZpbmUgZ2xvYmFsIG9ubHkgZm9yIHRoaXMgbW9kdWxlCisK
KworCit2YXIKKyAgICB2ZXJzaW9uID0gIjMuMS4xIiwKKworICAgIC8vIERlZmluZSBhIGxvY2Fs
IGNvcHkgb2YgalF1ZXJ5CisgICAgalF1ZXJ5ID0gZnVuY3Rpb24oIHNlbGVjdG9yLCBjb250ZXh0
ICkgeworCisgICAgICAgIC8vIFRoZSBqUXVlcnkgb2JqZWN0IGlzIGFjdHVhbGx5IGp1c3QgdGhl
IGluaXQgY29uc3RydWN0b3IgJ2VuaGFuY2VkJworICAgICAgICAvLyBOZWVkIGluaXQgaWYgalF1
ZXJ5IGlzIGNhbGxlZCAoanVzdCBhbGxvdyBlcnJvciB0byBiZSB0aHJvd24gaWYgbm90IGluY2x1
ZGVkKQorICAgICAgICByZXR1cm4gbmV3IGpRdWVyeS5mbi5pbml0KCBzZWxlY3RvciwgY29udGV4
dCApOworICAgIH0sCisKKyAgICAvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4wIG9ubHkKKyAgICAv
LyBNYWtlIHN1cmUgd2UgdHJpbSBCT00gYW5kIE5CU1AKKyAgICBydHJpbSA9IC9eW1xzXHVGRUZG
XHhBMF0rfFtcc1x1RkVGRlx4QTBdKyQvZywKKworICAgIC8vIE1hdGNoZXMgZGFzaGVkIHN0cmlu
ZyBmb3IgY2FtZWxpemluZworICAgIHJtc1ByZWZpeCA9IC9eLW1zLS8sCisgICAgcmRhc2hBbHBo
YSA9IC8tKFthLXpdKS9nLAorCisgICAgLy8gVXNlZCBieSBqUXVlcnkuY2FtZWxDYXNlIGFzIGNh
bGxiYWNrIHRvIHJlcGxhY2UoKQorICAgIGZjYW1lbENhc2UgPSBmdW5jdGlvbiggYWxsLCBsZXR0
ZXIgKSB7CisgICAgICAgIHJldHVybiBsZXR0ZXIudG9VcHBlckNhc2UoKTsKKyAgICB9OworCitq
UXVlcnkuZm4gPSBqUXVlcnkucHJvdG90eXBlID0geworCisgICAgLy8gVGhlIGN1cnJlbnQgdmVy
c2lvbiBvZiBqUXVlcnkgYmVpbmcgdXNlZAorICAgIGpxdWVyeTogdmVyc2lvbiwKKworICAgIGNv
bnN0cnVjdG9yOiBqUXVlcnksCisKKyAgICAvLyBUaGUgZGVmYXVsdCBsZW5ndGggb2YgYSBqUXVl
cnkgb2JqZWN0IGlzIDAKKyAgICBsZW5ndGg6IDAsCisKKyAgICB0b0FycmF5OiBmdW5jdGlvbigp
IHsKKyAgICAgICAgcmV0dXJuIHNsaWNlLmNhbGwoIHRoaXMgKTsKKyAgICB9LAorCisgICAgLy8g
R2V0IHRoZSBOdGggZWxlbWVudCBpbiB0aGUgbWF0Y2hlZCBlbGVtZW50IHNldCBPUgorICAgIC8v
IEdldCB0aGUgd2hvbGUgbWF0Y2hlZCBlbGVtZW50IHNldCBhcyBhIGNsZWFuIGFycmF5CisgICAg
Z2V0OiBmdW5jdGlvbiggbnVtICkgeworCisgICAgICAgIC8vIFJldHVybiBhbGwgdGhlIGVsZW1l
bnRzIGluIGEgY2xlYW4gYXJyYXkKKyAgICAgICAgaWYgKCBudW0gPT0gbnVsbCApIHsKKyAgICAg
ICAgICAgIHJldHVybiBzbGljZS5jYWxsKCB0aGlzICk7CisgICAgICAgIH0KKworICAgICAgICAv
LyBSZXR1cm4ganVzdCB0aGUgb25lIGVsZW1lbnQgZnJvbSB0aGUgc2V0CisgICAgICAgIHJldHVy
biBudW0gPCAwID8gdGhpc1sgbnVtICsgdGhpcy5sZW5ndGggXSA6IHRoaXNbIG51bSBdOworICAg
IH0sCisKKyAgICAvLyBUYWtlIGFuIGFycmF5IG9mIGVsZW1lbnRzIGFuZCBwdXNoIGl0IG9udG8g
dGhlIHN0YWNrCisgICAgLy8gKHJldHVybmluZyB0aGUgbmV3IG1hdGNoZWQgZWxlbWVudCBzZXQp
CisgICAgcHVzaFN0YWNrOiBmdW5jdGlvbiggZWxlbXMgKSB7CisKKyAgICAgICAgLy8gQnVpbGQg
YSBuZXcgalF1ZXJ5IG1hdGNoZWQgZWxlbWVudCBzZXQKKyAgICAgICAgdmFyIHJldCA9IGpRdWVy
eS5tZXJnZSggdGhpcy5jb25zdHJ1Y3RvcigpLCBlbGVtcyApOworCisgICAgICAgIC8vIEFkZCB0
aGUgb2xkIG9iamVjdCBvbnRvIHRoZSBzdGFjayAoYXMgYSByZWZlcmVuY2UpCisgICAgICAgIHJl
dC5wcmV2T2JqZWN0ID0gdGhpczsKKworICAgICAgICAvLyBSZXR1cm4gdGhlIG5ld2x5LWZvcm1l
ZCBlbGVtZW50IHNldAorICAgICAgICByZXR1cm4gcmV0OworICAgIH0sCisKKyAgICAvLyBFeGVj
dXRlIGEgY2FsbGJhY2sgZm9yIGV2ZXJ5IGVsZW1lbnQgaW4gdGhlIG1hdGNoZWQgc2V0LgorICAg
IGVhY2g6IGZ1bmN0aW9uKCBjYWxsYmFjayApIHsKKyAgICAgICAgcmV0dXJuIGpRdWVyeS5lYWNo
KCB0aGlzLCBjYWxsYmFjayApOworICAgIH0sCisKKyAgICBtYXA6IGZ1bmN0aW9uKCBjYWxsYmFj
ayApIHsKKyAgICAgICAgcmV0dXJuIHRoaXMucHVzaFN0YWNrKCBqUXVlcnkubWFwKCB0aGlzLCBm
dW5jdGlvbiggZWxlbSwgaSApIHsKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjay5jYWxsKCBl
bGVtLCBpLCBlbGVtICk7CisgICAgICAgIH0gKSApOworICAgIH0sCisKKyAgICBzbGljZTogZnVu
Y3Rpb24oKSB7CisgICAgICAgIHJldHVybiB0aGlzLnB1c2hTdGFjayggc2xpY2UuYXBwbHkoIHRo
aXMsIGFyZ3VtZW50cyApICk7CisgICAgfSwKKworICAgIGZpcnN0OiBmdW5jdGlvbigpIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMuZXEoIDAgKTsKKyAgICB9LAorCisgICAgbGFzdDogZnVuY3Rpb24o
KSB7CisgICAgICAgIHJldHVybiB0aGlzLmVxKCAtMSApOworICAgIH0sCisKKyAgICBlcTogZnVu
Y3Rpb24oIGkgKSB7CisgICAgICAgIHZhciBsZW4gPSB0aGlzLmxlbmd0aCwKKyAgICAgICAgICAg
IGogPSAraSArICggaSA8IDAgPyBsZW4gOiAwICk7CisgICAgICAgIHJldHVybiB0aGlzLnB1c2hT
dGFjayggaiA+PSAwICYmIGogPCBsZW4gPyBbIHRoaXNbIGogXSBdIDogW10gKTsKKyAgICB9LAor
CisgICAgZW5kOiBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMucHJldk9iamVjdCB8
fCB0aGlzLmNvbnN0cnVjdG9yKCk7CisgICAgfSwKKworICAgIC8vIEZvciBpbnRlcm5hbCB1c2Ug
b25seS4KKyAgICAvLyBCZWhhdmVzIGxpa2UgYW4gQXJyYXkncyBtZXRob2QsIG5vdCBsaWtlIGEg
alF1ZXJ5IG1ldGhvZC4KKyAgICBwdXNoOiBwdXNoLAorICAgIHNvcnQ6IGFyci5zb3J0LAorICAg
IHNwbGljZTogYXJyLnNwbGljZQorfTsKKworalF1ZXJ5LmV4dGVuZCA9IGpRdWVyeS5mbi5leHRl
bmQgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgb3B0aW9ucywgbmFtZSwgc3JjLCBjb3B5LCBjb3B5
SXNBcnJheSwgY2xvbmUsCisgICAgICAgIHRhcmdldCA9IGFyZ3VtZW50c1sgMCBdIHx8IHt9LAor
ICAgICAgICBpID0gMSwKKyAgICAgICAgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aCwKKyAgICAg
ICAgZGVlcCA9IGZhbHNlOworCisgICAgLy8gSGFuZGxlIGEgZGVlcCBjb3B5IHNpdHVhdGlvbgor
ICAgIGlmICggdHlwZW9mIHRhcmdldCA9PT0gImJvb2xlYW4iICkgeworICAgICAgICBkZWVwID0g
dGFyZ2V0OworCisgICAgICAgIC8vIFNraXAgdGhlIGJvb2xlYW4gYW5kIHRoZSB0YXJnZXQKKyAg
ICAgICAgdGFyZ2V0ID0gYXJndW1lbnRzWyBpIF0gfHwge307CisgICAgICAgIGkrKzsKKyAgICB9
CisKKyAgICAvLyBIYW5kbGUgY2FzZSB3aGVuIHRhcmdldCBpcyBhIHN0cmluZyBvciBzb21ldGhp
bmcgKHBvc3NpYmxlIGluIGRlZXAgY29weSkKKyAgICBpZiAoIHR5cGVvZiB0YXJnZXQgIT09ICJv
YmplY3QiICYmICFqUXVlcnkuaXNGdW5jdGlvbiggdGFyZ2V0ICkgKSB7CisgICAgICAgIHRhcmdl
dCA9IHt9OworICAgIH0KKworICAgIC8vIEV4dGVuZCBqUXVlcnkgaXRzZWxmIGlmIG9ubHkgb25l
IGFyZ3VtZW50IGlzIHBhc3NlZAorICAgIGlmICggaSA9PT0gbGVuZ3RoICkgeworICAgICAgICB0
YXJnZXQgPSB0aGlzOworICAgICAgICBpLS07CisgICAgfQorCisgICAgZm9yICggOyBpIDwgbGVu
Z3RoOyBpKysgKSB7CisKKyAgICAgICAgLy8gT25seSBkZWFsIHdpdGggbm9uLW51bGwvdW5kZWZp
bmVkIHZhbHVlcworICAgICAgICBpZiAoICggb3B0aW9ucyA9IGFyZ3VtZW50c1sgaSBdICkgIT0g
bnVsbCApIHsKKworICAgICAgICAgICAgLy8gRXh0ZW5kIHRoZSBiYXNlIG9iamVjdAorICAgICAg
ICAgICAgZm9yICggbmFtZSBpbiBvcHRpb25zICkgeworICAgICAgICAgICAgICAgIHNyYyA9IHRh
cmdldFsgbmFtZSBdOworICAgICAgICAgICAgICAgIGNvcHkgPSBvcHRpb25zWyBuYW1lIF07CisK
KyAgICAgICAgICAgICAgICAvLyBQcmV2ZW50IG5ldmVyLWVuZGluZyBsb29wCisgICAgICAgICAg
ICAgICAgaWYgKCB0YXJnZXQgPT09IGNvcHkgKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIFJlY3Vyc2UgaWYg
d2UncmUgbWVyZ2luZyBwbGFpbiBvYmplY3RzIG9yIGFycmF5cworICAgICAgICAgICAgICAgIGlm
ICggZGVlcCAmJiBjb3B5ICYmICggalF1ZXJ5LmlzUGxhaW5PYmplY3QoIGNvcHkgKSB8fAorICAg
ICAgICAgICAgICAgICAgICAoIGNvcHlJc0FycmF5ID0galF1ZXJ5LmlzQXJyYXkoIGNvcHkgKSAp
ICkgKSB7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKCBjb3B5SXNBcnJheSApIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGNvcHlJc0FycmF5ID0gZmFsc2U7CisgICAgICAgICAgICAgICAg
ICAgICAgICBjbG9uZSA9IHNyYyAmJiBqUXVlcnkuaXNBcnJheSggc3JjICkgPyBzcmMgOiBbXTsK
KworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAg
Y2xvbmUgPSBzcmMgJiYgalF1ZXJ5LmlzUGxhaW5PYmplY3QoIHNyYyApID8gc3JjIDoge307Cisg
ICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAvLyBOZXZlciBtb3Zl
IG9yaWdpbmFsIG9iamVjdHMsIGNsb25lIHRoZW0KKyAgICAgICAgICAgICAgICAgICAgdGFyZ2V0
WyBuYW1lIF0gPSBqUXVlcnkuZXh0ZW5kKCBkZWVwLCBjbG9uZSwgY29weSApOworCisgICAgICAg
ICAgICAgICAgLy8gRG9uJ3QgYnJpbmcgaW4gdW5kZWZpbmVkIHZhbHVlcworICAgICAgICAgICAg
ICAgIH0gZWxzZSBpZiAoIGNvcHkgIT09IHVuZGVmaW5lZCApIHsKKyAgICAgICAgICAgICAgICAg
ICAgdGFyZ2V0WyBuYW1lIF0gPSBjb3B5OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFJldHVybiB0aGUgbW9kaWZpZWQgb2JqZWN0
CisgICAgcmV0dXJuIHRhcmdldDsKK307CisKK2pRdWVyeS5leHRlbmQoIHsKKworICAgIC8vIFVu
aXF1ZSBmb3IgZWFjaCBjb3B5IG9mIGpRdWVyeSBvbiB0aGUgcGFnZQorICAgIGV4cGFuZG86ICJq
UXVlcnkiICsgKCB2ZXJzaW9uICsgTWF0aC5yYW5kb20oKSApLnJlcGxhY2UoIC9cRC9nLCAiIiAp
LAorCisgICAgLy8gQXNzdW1lIGpRdWVyeSBpcyByZWFkeSB3aXRob3V0IHRoZSByZWFkeSBtb2R1
bGUKKyAgICBpc1JlYWR5OiB0cnVlLAorCisgICAgZXJyb3I6IGZ1bmN0aW9uKCBtc2cgKSB7Cisg
ICAgICAgIHRocm93IG5ldyBFcnJvciggbXNnICk7CisgICAgfSwKKworICAgIG5vb3A6IGZ1bmN0
aW9uKCkge30sCisKKyAgICBpc0Z1bmN0aW9uOiBmdW5jdGlvbiggb2JqICkgeworICAgICAgICBy
ZXR1cm4galF1ZXJ5LnR5cGUoIG9iaiApID09PSAiZnVuY3Rpb24iOworICAgIH0sCisKKyAgICBp
c0FycmF5OiBBcnJheS5pc0FycmF5LAorCisgICAgaXNXaW5kb3c6IGZ1bmN0aW9uKCBvYmogKSB7
CisgICAgICAgIHJldHVybiBvYmogIT0gbnVsbCAmJiBvYmogPT09IG9iai53aW5kb3c7CisgICAg
fSwKKworICAgIGlzTnVtZXJpYzogZnVuY3Rpb24oIG9iaiApIHsKKworICAgICAgICAvLyBBcyBv
ZiBqUXVlcnkgMy4wLCBpc051bWVyaWMgaXMgbGltaXRlZCB0bworICAgICAgICAvLyBzdHJpbmdz
IGFuZCBudW1iZXJzIChwcmltaXRpdmVzIG9yIG9iamVjdHMpCisgICAgICAgIC8vIHRoYXQgY2Fu
IGJlIGNvZXJjZWQgdG8gZmluaXRlIG51bWJlcnMgKGdoLTI2NjIpCisgICAgICAgIHZhciB0eXBl
ID0galF1ZXJ5LnR5cGUoIG9iaiApOworICAgICAgICByZXR1cm4gKCB0eXBlID09PSAibnVtYmVy
IiB8fCB0eXBlID09PSAic3RyaW5nIiApICYmCisKKyAgICAgICAgICAgIC8vIHBhcnNlRmxvYXQg
TmFOcyBudW1lcmljLWNhc3QgZmFsc2UgcG9zaXRpdmVzICgiIikKKyAgICAgICAgICAgIC8vIC4u
LmJ1dCBtaXNpbnRlcnByZXRzIGxlYWRpbmctbnVtYmVyIHN0cmluZ3MsIHBhcnRpY3VsYXJseSBo
ZXggbGl0ZXJhbHMgKCIweC4uLiIpCisgICAgICAgICAgICAvLyBzdWJ0cmFjdGlvbiBmb3JjZXMg
aW5maW5pdGllcyB0byBOYU4KKyAgICAgICAgICAgICFpc05hTiggb2JqIC0gcGFyc2VGbG9hdCgg
b2JqICkgKTsKKyAgICB9LAorCisgICAgaXNQbGFpbk9iamVjdDogZnVuY3Rpb24oIG9iaiApIHsK
KyAgICAgICAgdmFyIHByb3RvLCBDdG9yOworCisgICAgICAgIC8vIERldGVjdCBvYnZpb3VzIG5l
Z2F0aXZlcworICAgICAgICAvLyBVc2UgdG9TdHJpbmcgaW5zdGVhZCBvZiBqUXVlcnkudHlwZSB0
byBjYXRjaCBob3N0IG9iamVjdHMKKyAgICAgICAgaWYgKCAhb2JqIHx8IHRvU3RyaW5nLmNhbGwo
IG9iaiApICE9PSAiW29iamVjdCBPYmplY3RdIiApIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgfQorCisgICAgICAgIHByb3RvID0gZ2V0UHJvdG8oIG9iaiApOworCisgICAg
ICAgIC8vIE9iamVjdHMgd2l0aCBubyBwcm90b3R5cGUgKGUuZy4sIGBPYmplY3QuY3JlYXRlKCBu
dWxsIClgKSBhcmUgcGxhaW4KKyAgICAgICAgaWYgKCAhcHJvdG8gKSB7CisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIE9iamVjdHMgd2l0aCBwcm90b3R5
cGUgYXJlIHBsYWluIGlmZiB0aGV5IHdlcmUgY29uc3RydWN0ZWQgYnkgYSBnbG9iYWwgT2JqZWN0
IGZ1bmN0aW9uCisgICAgICAgIEN0b3IgPSBoYXNPd24uY2FsbCggcHJvdG8sICJjb25zdHJ1Y3Rv
ciIgKSAmJiBwcm90by5jb25zdHJ1Y3RvcjsKKyAgICAgICAgcmV0dXJuIHR5cGVvZiBDdG9yID09
PSAiZnVuY3Rpb24iICYmIGZuVG9TdHJpbmcuY2FsbCggQ3RvciApID09PSBPYmplY3RGdW5jdGlv
blN0cmluZzsKKyAgICB9LAorCisgICAgaXNFbXB0eU9iamVjdDogZnVuY3Rpb24oIG9iaiApIHsK
KworICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqLworICAgICAgICAv
LyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2VzbGludC9lc2xpbnQvaXNzdWVzLzYxMjUKKyAgICAg
ICAgdmFyIG5hbWU7CisKKyAgICAgICAgZm9yICggbmFtZSBpbiBvYmogKSB7CisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSwK
KworICAgIHR5cGU6IGZ1bmN0aW9uKCBvYmogKSB7CisgICAgICAgIGlmICggb2JqID09IG51bGwg
KSB7CisgICAgICAgICAgICByZXR1cm4gb2JqICsgIiI7CisgICAgICAgIH0KKworICAgICAgICAv
LyBTdXBwb3J0OiBBbmRyb2lkIDw9Mi4zIG9ubHkgKGZ1bmN0aW9uaXNoIFJlZ0V4cCkKKyAgICAg
ICAgcmV0dXJuIHR5cGVvZiBvYmogPT09ICJvYmplY3QiIHx8IHR5cGVvZiBvYmogPT09ICJmdW5j
dGlvbiIgPworICAgICAgICAgICAgY2xhc3MydHlwZVsgdG9TdHJpbmcuY2FsbCggb2JqICkgXSB8
fCAib2JqZWN0IiA6CisgICAgICAgICAgICB0eXBlb2Ygb2JqOworICAgIH0sCisKKyAgICAvLyBF
dmFsdWF0ZXMgYSBzY3JpcHQgaW4gYSBnbG9iYWwgY29udGV4dAorICAgIGdsb2JhbEV2YWw6IGZ1
bmN0aW9uKCBjb2RlICkgeworICAgICAgICBET01FdmFsKCBjb2RlICk7CisgICAgfSwKKworICAg
IC8vIENvbnZlcnQgZGFzaGVkIHRvIGNhbWVsQ2FzZTsgdXNlZCBieSB0aGUgY3NzIGFuZCBkYXRh
IG1vZHVsZXMKKyAgICAvLyBTdXBwb3J0OiBJRSA8PTkgLSAxMSwgRWRnZSAxMiAtIDEzCisgICAg
Ly8gTWljcm9zb2Z0IGZvcmdvdCB0byBodW1wIHRoZWlyIHZlbmRvciBwcmVmaXggKCM5NTcyKQor
ICAgIGNhbWVsQ2FzZTogZnVuY3Rpb24oIHN0cmluZyApIHsKKyAgICAgICAgcmV0dXJuIHN0cmlu
Zy5yZXBsYWNlKCBybXNQcmVmaXgsICJtcy0iICkucmVwbGFjZSggcmRhc2hBbHBoYSwgZmNhbWVs
Q2FzZSApOworICAgIH0sCisKKyAgICBub2RlTmFtZTogZnVuY3Rpb24oIGVsZW0sIG5hbWUgKSB7
CisgICAgICAgIHJldHVybiBlbGVtLm5vZGVOYW1lICYmIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNh
c2UoKSA9PT0gbmFtZS50b0xvd2VyQ2FzZSgpOworICAgIH0sCisKKyAgICBlYWNoOiBmdW5jdGlv
biggb2JqLCBjYWxsYmFjayApIHsKKyAgICAgICAgdmFyIGxlbmd0aCwgaSA9IDA7CisKKyAgICAg
ICAgaWYgKCBpc0FycmF5TGlrZSggb2JqICkgKSB7CisgICAgICAgICAgICBsZW5ndGggPSBvYmou
bGVuZ3RoOworICAgICAgICAgICAgZm9yICggOyBpIDwgbGVuZ3RoOyBpKysgKSB7CisgICAgICAg
ICAgICAgICAgaWYgKCBjYWxsYmFjay5jYWxsKCBvYmpbIGkgXSwgaSwgb2JqWyBpIF0gKSA9PT0g
ZmFsc2UgKSB7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGZvciAoIGkgaW4g
b2JqICkgeworICAgICAgICAgICAgICAgIGlmICggY2FsbGJhY2suY2FsbCggb2JqWyBpIF0sIGks
IG9ialsgaSBdICkgPT09IGZhbHNlICkgeworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1
cm4gb2JqOworICAgIH0sCisKKyAgICAvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4wIG9ubHkKKyAg
ICB0cmltOiBmdW5jdGlvbiggdGV4dCApIHsKKyAgICAgICAgcmV0dXJuIHRleHQgPT0gbnVsbCA/
CisgICAgICAgICAgICAiIiA6CisgICAgICAgICAgICAoIHRleHQgKyAiIiApLnJlcGxhY2UoIHJ0
cmltLCAiIiApOworICAgIH0sCisKKyAgICAvLyByZXN1bHRzIGlzIGZvciBpbnRlcm5hbCB1c2Fn
ZSBvbmx5CisgICAgbWFrZUFycmF5OiBmdW5jdGlvbiggYXJyLCByZXN1bHRzICkgeworICAgICAg
ICB2YXIgcmV0ID0gcmVzdWx0cyB8fCBbXTsKKworICAgICAgICBpZiAoIGFyciAhPSBudWxsICkg
eworICAgICAgICAgICAgaWYgKCBpc0FycmF5TGlrZSggT2JqZWN0KCBhcnIgKSApICkgeworICAg
ICAgICAgICAgICAgIGpRdWVyeS5tZXJnZSggcmV0LAorICAgICAgICAgICAgICAgICAgICB0eXBl
b2YgYXJyID09PSAic3RyaW5nIiA/CisgICAgICAgICAgICAgICAgICAgIFsgYXJyIF0gOiBhcnIK
KyAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBwdXNoLmNhbGwoIHJldCwgYXJyICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAg
ICAgICByZXR1cm4gcmV0OworICAgIH0sCisKKyAgICBpbkFycmF5OiBmdW5jdGlvbiggZWxlbSwg
YXJyLCBpICkgeworICAgICAgICByZXR1cm4gYXJyID09IG51bGwgPyAtMSA6IGluZGV4T2YuY2Fs
bCggYXJyLCBlbGVtLCBpICk7CisgICAgfSwKKworICAgIC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00
LjAgb25seSwgUGhhbnRvbUpTIDEgb25seQorICAgIC8vIHB1c2guYXBwbHkoXywgYXJyYXlsaWtl
KSB0aHJvd3Mgb24gYW5jaWVudCBXZWJLaXQKKyAgICBtZXJnZTogZnVuY3Rpb24oIGZpcnN0LCBz
ZWNvbmQgKSB7CisgICAgICAgIHZhciBsZW4gPSArc2Vjb25kLmxlbmd0aCwKKyAgICAgICAgICAg
IGogPSAwLAorICAgICAgICAgICAgaSA9IGZpcnN0Lmxlbmd0aDsKKworICAgICAgICBmb3IgKCA7
IGogPCBsZW47IGorKyApIHsKKyAgICAgICAgICAgIGZpcnN0WyBpKysgXSA9IHNlY29uZFsgaiBd
OworICAgICAgICB9CisKKyAgICAgICAgZmlyc3QubGVuZ3RoID0gaTsKKworICAgICAgICByZXR1
cm4gZmlyc3Q7CisgICAgfSwKKworICAgIGdyZXA6IGZ1bmN0aW9uKCBlbGVtcywgY2FsbGJhY2ss
IGludmVydCApIHsKKyAgICAgICAgdmFyIGNhbGxiYWNrSW52ZXJzZSwKKyAgICAgICAgICAgIG1h
dGNoZXMgPSBbXSwKKyAgICAgICAgICAgIGkgPSAwLAorICAgICAgICAgICAgbGVuZ3RoID0gZWxl
bXMubGVuZ3RoLAorICAgICAgICAgICAgY2FsbGJhY2tFeHBlY3QgPSAhaW52ZXJ0OworCisgICAg
ICAgIC8vIEdvIHRocm91Z2ggdGhlIGFycmF5LCBvbmx5IHNhdmluZyB0aGUgaXRlbXMKKyAgICAg
ICAgLy8gdGhhdCBwYXNzIHRoZSB2YWxpZGF0b3IgZnVuY3Rpb24KKyAgICAgICAgZm9yICggOyBp
IDwgbGVuZ3RoOyBpKysgKSB7CisgICAgICAgICAgICBjYWxsYmFja0ludmVyc2UgPSAhY2FsbGJh
Y2soIGVsZW1zWyBpIF0sIGkgKTsKKyAgICAgICAgICAgIGlmICggY2FsbGJhY2tJbnZlcnNlICE9
PSBjYWxsYmFja0V4cGVjdCApIHsKKyAgICAgICAgICAgICAgICBtYXRjaGVzLnB1c2goIGVsZW1z
WyBpIF0gKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBtYXRj
aGVzOworICAgIH0sCisKKyAgICAvLyBhcmcgaXMgZm9yIGludGVybmFsIHVzYWdlIG9ubHkKKyAg
ICBtYXA6IGZ1bmN0aW9uKCBlbGVtcywgY2FsbGJhY2ssIGFyZyApIHsKKyAgICAgICAgdmFyIGxl
bmd0aCwgdmFsdWUsCisgICAgICAgICAgICBpID0gMCwKKyAgICAgICAgICAgIHJldCA9IFtdOwor
CisgICAgICAgIC8vIEdvIHRocm91Z2ggdGhlIGFycmF5LCB0cmFuc2xhdGluZyBlYWNoIG9mIHRo
ZSBpdGVtcyB0byB0aGVpciBuZXcgdmFsdWVzCisgICAgICAgIGlmICggaXNBcnJheUxpa2UoIGVs
ZW1zICkgKSB7CisgICAgICAgICAgICBsZW5ndGggPSBlbGVtcy5sZW5ndGg7CisgICAgICAgICAg
ICBmb3IgKCA7IGkgPCBsZW5ndGg7IGkrKyApIHsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IGNh
bGxiYWNrKCBlbGVtc1sgaSBdLCBpLCBhcmcgKTsKKworICAgICAgICAgICAgICAgIGlmICggdmFs
dWUgIT0gbnVsbCApIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0LnB1c2goIHZhbHVlICk7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgIC8vIEdvIHRocm91Z2gg
ZXZlcnkga2V5IG9uIHRoZSBvYmplY3QsCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBm
b3IgKCBpIGluIGVsZW1zICkgeworICAgICAgICAgICAgICAgIHZhbHVlID0gY2FsbGJhY2soIGVs
ZW1zWyBpIF0sIGksIGFyZyApOworCisgICAgICAgICAgICAgICAgaWYgKCB2YWx1ZSAhPSBudWxs
ICkgeworICAgICAgICAgICAgICAgICAgICByZXQucHVzaCggdmFsdWUgKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBGbGF0dGVuIGFu
eSBuZXN0ZWQgYXJyYXlzCisgICAgICAgIHJldHVybiBjb25jYXQuYXBwbHkoIFtdLCByZXQgKTsK
KyAgICB9LAorCisgICAgLy8gQSBnbG9iYWwgR1VJRCBjb3VudGVyIGZvciBvYmplY3RzCisgICAg
Z3VpZDogMSwKKworICAgIC8vIEJpbmQgYSBmdW5jdGlvbiB0byBhIGNvbnRleHQsIG9wdGlvbmFs
bHkgcGFydGlhbGx5IGFwcGx5aW5nIGFueQorICAgIC8vIGFyZ3VtZW50cy4KKyAgICBwcm94eTog
ZnVuY3Rpb24oIGZuLCBjb250ZXh0ICkgeworICAgICAgICB2YXIgdG1wLCBhcmdzLCBwcm94eTsK
KworICAgICAgICBpZiAoIHR5cGVvZiBjb250ZXh0ID09PSAic3RyaW5nIiApIHsKKyAgICAgICAg
ICAgIHRtcCA9IGZuWyBjb250ZXh0IF07CisgICAgICAgICAgICBjb250ZXh0ID0gZm47CisgICAg
ICAgICAgICBmbiA9IHRtcDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFF1aWNrIGNoZWNrIHRv
IGRldGVybWluZSBpZiB0YXJnZXQgaXMgY2FsbGFibGUsIGluIHRoZSBzcGVjCisgICAgICAgIC8v
IHRoaXMgdGhyb3dzIGEgVHlwZUVycm9yLCBidXQgd2Ugd2lsbCBqdXN0IHJldHVybiB1bmRlZmlu
ZWQuCisgICAgICAgIGlmICggIWpRdWVyeS5pc0Z1bmN0aW9uKCBmbiApICkgeworICAgICAgICAg
ICAgcmV0dXJuIHVuZGVmaW5lZDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFNpbXVsYXRlZCBi
aW5kCisgICAgICAgIGFyZ3MgPSBzbGljZS5jYWxsKCBhcmd1bWVudHMsIDIgKTsKKyAgICAgICAg
cHJveHkgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHJldHVybiBmbi5hcHBseSggY29udGV4
dCB8fCB0aGlzLCBhcmdzLmNvbmNhdCggc2xpY2UuY2FsbCggYXJndW1lbnRzICkgKSApOworICAg
ICAgICB9OworCisgICAgICAgIC8vIFNldCB0aGUgZ3VpZCBvZiB1bmlxdWUgaGFuZGxlciB0byB0
aGUgc2FtZSBvZiBvcmlnaW5hbCBoYW5kbGVyLCBzbyBpdCBjYW4gYmUgcmVtb3ZlZAorICAgICAg
ICBwcm94eS5ndWlkID0gZm4uZ3VpZCA9IGZuLmd1aWQgfHwgalF1ZXJ5Lmd1aWQrKzsKKworICAg
ICAgICByZXR1cm4gcHJveHk7CisgICAgfSwKKworICAgIG5vdzogRGF0ZS5ub3csCisKKyAgICAv
LyBqUXVlcnkuc3VwcG9ydCBpcyBub3QgdXNlZCBpbiBDb3JlIGJ1dCBvdGhlciBwcm9qZWN0cyBh
dHRhY2ggdGhlaXIKKyAgICAvLyBwcm9wZXJ0aWVzIHRvIGl0IHNvIGl0IG5lZWRzIHRvIGV4aXN0
LgorICAgIHN1cHBvcnQ6IHN1cHBvcnQKK30gKTsKKworaWYgKCB0eXBlb2YgU3ltYm9sID09PSAi
ZnVuY3Rpb24iICkgeworICAgIGpRdWVyeS5mblsgU3ltYm9sLml0ZXJhdG9yIF0gPSBhcnJbIFN5
bWJvbC5pdGVyYXRvciBdOworfQorCisvLyBQb3B1bGF0ZSB0aGUgY2xhc3MydHlwZSBtYXAKK2pR
dWVyeS5lYWNoKCAiQm9vbGVhbiBOdW1iZXIgU3RyaW5nIEZ1bmN0aW9uIEFycmF5IERhdGUgUmVn
RXhwIE9iamVjdCBFcnJvciBTeW1ib2wiLnNwbGl0KCAiICIgKSwKK2Z1bmN0aW9uKCBpLCBuYW1l
ICkgeworICAgIGNsYXNzMnR5cGVbICJbb2JqZWN0ICIgKyBuYW1lICsgIl0iIF0gPSBuYW1lLnRv
TG93ZXJDYXNlKCk7Cit9ICk7CisKK2Z1bmN0aW9uIGlzQXJyYXlMaWtlKCBvYmogKSB7CisKKyAg
ICAvLyBTdXBwb3J0OiByZWFsIGlPUyA4LjIgb25seSAobm90IHJlcHJvZHVjaWJsZSBpbiBzaW11
bGF0b3IpCisgICAgLy8gYGluYCBjaGVjayB1c2VkIHRvIHByZXZlbnQgSklUIGVycm9yIChnaC0y
MTQ1KQorICAgIC8vIGhhc093biBpc24ndCB1c2VkIGhlcmUgZHVlIHRvIGZhbHNlIG5lZ2F0aXZl
cworICAgIC8vIHJlZ2FyZGluZyBOb2RlbGlzdCBsZW5ndGggaW4gSUUKKyAgICB2YXIgbGVuZ3Ro
ID0gISFvYmogJiYgImxlbmd0aCIgaW4gb2JqICYmIG9iai5sZW5ndGgsCisgICAgICAgIHR5cGUg
PSBqUXVlcnkudHlwZSggb2JqICk7CisKKyAgICBpZiAoIHR5cGUgPT09ICJmdW5jdGlvbiIgfHwg
alF1ZXJ5LmlzV2luZG93KCBvYmogKSApIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIHJldHVybiB0eXBlID09PSAiYXJyYXkiIHx8IGxlbmd0aCA9PT0gMCB8fAorICAgICAg
ICB0eXBlb2YgbGVuZ3RoID09PSAibnVtYmVyIiAmJiBsZW5ndGggPiAwICYmICggbGVuZ3RoIC0g
MSApIGluIG9iajsKK30KK3ZhciBTaXp6bGUgPQorLyohCisgKiBTaXp6bGUgQ1NTIFNlbGVjdG9y
IEVuZ2luZSB2Mi4zLjMKKyAqIGh0dHBzOi8vc2l6emxlanMuY29tLworICoKKyAqIENvcHlyaWdo
dCBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzCisgKiBSZWxlYXNlZCB1
bmRlciB0aGUgTUlUIGxpY2Vuc2UKKyAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2UKKyAqCisg
KiBEYXRlOiAyMDE2LTA4LTA4CisgKi8KKyhmdW5jdGlvbiggd2luZG93ICkgeworCit2YXIgaSwK
KyAgICBzdXBwb3J0LAorICAgIEV4cHIsCisgICAgZ2V0VGV4dCwKKyAgICBpc1hNTCwKKyAgICB0
b2tlbml6ZSwKKyAgICBjb21waWxlLAorICAgIHNlbGVjdCwKKyAgICBvdXRlcm1vc3RDb250ZXh0
LAorICAgIHNvcnRJbnB1dCwKKyAgICBoYXNEdXBsaWNhdGUsCisKKyAgICAvLyBMb2NhbCBkb2N1
bWVudCB2YXJzCisgICAgc2V0RG9jdW1lbnQsCisgICAgZG9jdW1lbnQsCisgICAgZG9jRWxlbSwK
KyAgICBkb2N1bWVudElzSFRNTCwKKyAgICByYnVnZ3lRU0EsCisgICAgcmJ1Z2d5TWF0Y2hlcywK
KyAgICBtYXRjaGVzLAorICAgIGNvbnRhaW5zLAorCisgICAgLy8gSW5zdGFuY2Utc3BlY2lmaWMg
ZGF0YQorICAgIGV4cGFuZG8gPSAic2l6emxlIiArIDEgKiBuZXcgRGF0ZSgpLAorICAgIHByZWZl
cnJlZERvYyA9IHdpbmRvdy5kb2N1bWVudCwKKyAgICBkaXJydW5zID0gMCwKKyAgICBkb25lID0g
MCwKKyAgICBjbGFzc0NhY2hlID0gY3JlYXRlQ2FjaGUoKSwKKyAgICB0b2tlbkNhY2hlID0gY3Jl
YXRlQ2FjaGUoKSwKKyAgICBjb21waWxlckNhY2hlID0gY3JlYXRlQ2FjaGUoKSwKKyAgICBzb3J0
T3JkZXIgPSBmdW5jdGlvbiggYSwgYiApIHsKKyAgICAgICAgaWYgKCBhID09PSBiICkgeworICAg
ICAgICAgICAgaGFzRHVwbGljYXRlID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
MDsKKyAgICB9LAorCisgICAgLy8gSW5zdGFuY2UgbWV0aG9kcworICAgIGhhc093biA9ICh7fSku
aGFzT3duUHJvcGVydHksCisgICAgYXJyID0gW10sCisgICAgcG9wID0gYXJyLnBvcCwKKyAgICBw
dXNoX25hdGl2ZSA9IGFyci5wdXNoLAorICAgIHB1c2ggPSBhcnIucHVzaCwKKyAgICBzbGljZSA9
IGFyci5zbGljZSwKKyAgICAvLyBVc2UgYSBzdHJpcHBlZC1kb3duIGluZGV4T2YgYXMgaXQncyBm
YXN0ZXIgdGhhbiBuYXRpdmUKKyAgICAvLyBodHRwczovL2pzcGVyZi5jb20vdGhvci1pbmRleG9m
LXZzLWZvci81CisgICAgaW5kZXhPZiA9IGZ1bmN0aW9uKCBsaXN0LCBlbGVtICkgeworICAgICAg
ICB2YXIgaSA9IDAsCisgICAgICAgICAgICBsZW4gPSBsaXN0Lmxlbmd0aDsKKyAgICAgICAgZm9y
ICggOyBpIDwgbGVuOyBpKysgKSB7CisgICAgICAgICAgICBpZiAoIGxpc3RbaV0gPT09IGVsZW0g
KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIC0xOworICAgIH0sCisKKyAgICBib29sZWFucyA9ICJjaGVja2VkfHNl
bGVjdGVkfGFzeW5jfGF1dG9mb2N1c3xhdXRvcGxheXxjb250cm9sc3xkZWZlcnxkaXNhYmxlZHxo
aWRkZW58aXNtYXB8bG9vcHxtdWx0aXBsZXxvcGVufHJlYWRvbmx5fHJlcXVpcmVkfHNjb3BlZCIs
CisKKyAgICAvLyBSZWd1bGFyIGV4cHJlc3Npb25zCisKKyAgICAvLyBodHRwOi8vd3d3LnczLm9y
Zy9UUi9jc3MzLXNlbGVjdG9ycy8jd2hpdGVzcGFjZQorICAgIHdoaXRlc3BhY2UgPSAiW1xceDIw
XFx0XFxyXFxuXFxmXSIsCisKKyAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9DU1MyMS9zeW5k
YXRhLmh0bWwjdmFsdWUtZGVmLWlkZW50aWZpZXIKKyAgICBpZGVudGlmaWVyID0gIig/OlxcXFwu
fFtcXHctXXxbXlwwLVxceGEwXSkrIiwKKworICAgIC8vIEF0dHJpYnV0ZSBzZWxlY3RvcnM6IGh0
dHA6Ly93d3cudzMub3JnL1RSL3NlbGVjdG9ycy8jYXR0cmlidXRlLXNlbGVjdG9ycworICAgIGF0
dHJpYnV0ZXMgPSAiXFxbIiArIHdoaXRlc3BhY2UgKyAiKigiICsgaWRlbnRpZmllciArICIpKD86
IiArIHdoaXRlc3BhY2UgKworICAgICAgICAvLyBPcGVyYXRvciAoY2FwdHVyZSAyKQorICAgICAg
ICAiKihbKl4kfCF+XT89KSIgKyB3aGl0ZXNwYWNlICsKKyAgICAgICAgLy8gIkF0dHJpYnV0ZSB2
YWx1ZXMgbXVzdCBiZSBDU1MgaWRlbnRpZmllcnMgW2NhcHR1cmUgNV0gb3Igc3RyaW5ncyBbY2Fw
dHVyZSAzIG9yIGNhcHR1cmUgNF0iCisgICAgICAgICIqKD86JygoPzpcXFxcLnxbXlxcXFwnXSkq
KSd8XCIoKD86XFxcXC58W15cXFxcXCJdKSopXCJ8KCIgKyBpZGVudGlmaWVyICsgIikpfCkiICsg
d2hpdGVzcGFjZSArCisgICAgICAgICIqXFxdIiwKKworICAgIHBzZXVkb3MgPSAiOigiICsgaWRl
bnRpZmllciArICIpKD86XFwoKCIgKworICAgICAgICAvLyBUbyByZWR1Y2UgdGhlIG51bWJlciBv
ZiBzZWxlY3RvcnMgbmVlZGluZyB0b2tlbml6ZSBpbiB0aGUgcHJlRmlsdGVyLCBwcmVmZXIgYXJn
dW1lbnRzOgorICAgICAgICAvLyAxLiBxdW90ZWQgKGNhcHR1cmUgMzsgY2FwdHVyZSA0IG9yIGNh
cHR1cmUgNSkKKyAgICAgICAgIignKCg/OlxcXFwufFteXFxcXCddKSopJ3xcIigoPzpcXFxcLnxb
XlxcXFxcIl0pKilcIil8IiArCisgICAgICAgIC8vIDIuIHNpbXBsZSAoY2FwdHVyZSA2KQorICAg
ICAgICAiKCg/OlxcXFwufFteXFxcXCgpW1xcXV18IiArIGF0dHJpYnV0ZXMgKyAiKSopfCIgKwor
ICAgICAgICAvLyAzLiBhbnl0aGluZyBlbHNlIChjYXB0dXJlIDIpCisgICAgICAgICIuKiIgKwor
ICAgICAgICAiKVxcKXwpIiwKKworICAgIC8vIExlYWRpbmcgYW5kIG5vbi1lc2NhcGVkIHRyYWls
aW5nIHdoaXRlc3BhY2UsIGNhcHR1cmluZyBzb21lIG5vbi13aGl0ZXNwYWNlIGNoYXJhY3RlcnMg
cHJlY2VkaW5nIHRoZSBsYXR0ZXIKKyAgICByd2hpdGVzcGFjZSA9IG5ldyBSZWdFeHAoIHdoaXRl
c3BhY2UgKyAiKyIsICJnIiApLAorICAgIHJ0cmltID0gbmV3IFJlZ0V4cCggIl4iICsgd2hpdGVz
cGFjZSArICIrfCgoPzpefFteXFxcXF0pKD86XFxcXC4pKikiICsgd2hpdGVzcGFjZSArICIrJCIs
ICJnIiApLAorCisgICAgcmNvbW1hID0gbmV3IFJlZ0V4cCggIl4iICsgd2hpdGVzcGFjZSArICIq
LCIgKyB3aGl0ZXNwYWNlICsgIioiICksCisgICAgcmNvbWJpbmF0b3JzID0gbmV3IFJlZ0V4cCgg
Il4iICsgd2hpdGVzcGFjZSArICIqKFs+K35dfCIgKyB3aGl0ZXNwYWNlICsgIikiICsgd2hpdGVz
cGFjZSArICIqIiApLAorCisgICAgcmF0dHJpYnV0ZVF1b3RlcyA9IG5ldyBSZWdFeHAoICI9IiAr
IHdoaXRlc3BhY2UgKyAiKihbXlxcXSdcIl0qPykiICsgd2hpdGVzcGFjZSArICIqXFxdIiwgImci
ICksCisKKyAgICBycHNldWRvID0gbmV3IFJlZ0V4cCggcHNldWRvcyApLAorICAgIHJpZGVudGlm
aWVyID0gbmV3IFJlZ0V4cCggIl4iICsgaWRlbnRpZmllciArICIkIiApLAorCisgICAgbWF0Y2hF
eHByID0geworICAgICAgICAiSUQiOiBuZXcgUmVnRXhwKCAiXiMoIiArIGlkZW50aWZpZXIgKyAi
KSIgKSwKKyAgICAgICAgIkNMQVNTIjogbmV3IFJlZ0V4cCggIl5cXC4oIiArIGlkZW50aWZpZXIg
KyAiKSIgKSwKKyAgICAgICAgIlRBRyI6IG5ldyBSZWdFeHAoICJeKCIgKyBpZGVudGlmaWVyICsg
InxbKl0pIiApLAorICAgICAgICAiQVRUUiI6IG5ldyBSZWdFeHAoICJeIiArIGF0dHJpYnV0ZXMg
KSwKKyAgICAgICAgIlBTRVVETyI6IG5ldyBSZWdFeHAoICJeIiArIHBzZXVkb3MgKSwKKyAgICAg
ICAgIkNISUxEIjogbmV3IFJlZ0V4cCggIl46KG9ubHl8Zmlyc3R8bGFzdHxudGh8bnRoLWxhc3Qp
LShjaGlsZHxvZi10eXBlKSg/OlxcKCIgKyB3aGl0ZXNwYWNlICsKKyAgICAgICAgICAgICIqKGV2
ZW58b2RkfCgoWystXXwpKFxcZCopbnwpIiArIHdoaXRlc3BhY2UgKyAiKig/OihbKy1dfCkiICsg
d2hpdGVzcGFjZSArCisgICAgICAgICAgICAiKihcXGQrKXwpKSIgKyB3aGl0ZXNwYWNlICsgIipc
XCl8KSIsICJpIiApLAorICAgICAgICAiYm9vbCI6IG5ldyBSZWdFeHAoICJeKD86IiArIGJvb2xl
YW5zICsgIikkIiwgImkiICksCisgICAgICAgIC8vIEZvciB1c2UgaW4gbGlicmFyaWVzIGltcGxl
bWVudGluZyAuaXMoKQorICAgICAgICAvLyBXZSB1c2UgdGhpcyBmb3IgUE9TIG1hdGNoaW5nIGlu
IGBzZWxlY3RgCisgICAgICAgICJuZWVkc0NvbnRleHQiOiBuZXcgUmVnRXhwKCAiXiIgKyB3aGl0
ZXNwYWNlICsgIipbPit+XXw6KGV2ZW58b2RkfGVxfGd0fGx0fG50aHxmaXJzdHxsYXN0KSg/Olxc
KCIgKworICAgICAgICAgICAgd2hpdGVzcGFjZSArICIqKCg/Oi1cXGQpP1xcZCopIiArIHdoaXRl
c3BhY2UgKyAiKlxcKXwpKD89W14tXXwkKSIsICJpIiApCisgICAgfSwKKworICAgIHJpbnB1dHMg
PSAvXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pLAorICAgIHJoZWFkZXIgPSAv
XmhcZCQvaSwKKworICAgIHJuYXRpdmUgPSAvXltee10rXHtccypcW25hdGl2ZSBcdy8sCisKKyAg
ICAvLyBFYXNpbHktcGFyc2VhYmxlL3JldHJpZXZhYmxlIElEIG9yIFRBRyBvciBDTEFTUyBzZWxl
Y3RvcnMKKyAgICBycXVpY2tFeHByID0gL14oPzojKFtcdy1dKyl8KFx3Kyl8XC4oW1x3LV0rKSkk
LywKKworICAgIHJzaWJsaW5nID0gL1srfl0vLAorCisgICAgLy8gQ1NTIGVzY2FwZXMKKyAgICAv
LyBodHRwOi8vd3d3LnczLm9yZy9UUi9DU1MyMS9zeW5kYXRhLmh0bWwjZXNjYXBlZC1jaGFyYWN0
ZXJzCisgICAgcnVuZXNjYXBlID0gbmV3IFJlZ0V4cCggIlxcXFwoW1xcZGEtZl17MSw2fSIgKyB3
aGl0ZXNwYWNlICsgIj98KCIgKyB3aGl0ZXNwYWNlICsgIil8LikiLCAiaWciICksCisgICAgZnVu
ZXNjYXBlID0gZnVuY3Rpb24oIF8sIGVzY2FwZWQsIGVzY2FwZWRXaGl0ZXNwYWNlICkgeworICAg
ICAgICB2YXIgaGlnaCA9ICIweCIgKyBlc2NhcGVkIC0gMHgxMDAwMDsKKyAgICAgICAgLy8gTmFO
IG1lYW5zIG5vbi1jb2RlcG9pbnQKKyAgICAgICAgLy8gU3VwcG9ydDogRmlyZWZveDwyNAorICAg
ICAgICAvLyBXb3JrYXJvdW5kIGVycm9uZW91cyBudW1lcmljIGludGVycHJldGF0aW9uIG9mICsi
MHgiCisgICAgICAgIHJldHVybiBoaWdoICE9PSBoaWdoIHx8IGVzY2FwZWRXaGl0ZXNwYWNlID8K
KyAgICAgICAgICAgIGVzY2FwZWQgOgorICAgICAgICAgICAgaGlnaCA8IDAgPworICAgICAgICAg
ICAgICAgIC8vIEJNUCBjb2RlcG9pbnQKKyAgICAgICAgICAgICAgICBTdHJpbmcuZnJvbUNoYXJD
b2RlKCBoaWdoICsgMHgxMDAwMCApIDoKKyAgICAgICAgICAgICAgICAvLyBTdXBwbGVtZW50YWwg
UGxhbmUgY29kZXBvaW50IChzdXJyb2dhdGUgcGFpcikKKyAgICAgICAgICAgICAgICBTdHJpbmcu
ZnJvbUNoYXJDb2RlKCBoaWdoID4+IDEwIHwgMHhEODAwLCBoaWdoICYgMHgzRkYgfCAweERDMDAg
KTsKKyAgICB9LAorCisgICAgLy8gQ1NTIHN0cmluZy9pZGVudGlmaWVyIHNlcmlhbGl6YXRpb24K
KyAgICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3Nzb20vI2NvbW1vbi1zZXJpYWxpemlu
Zy1pZGlvbXMKKyAgICByY3NzZXNjYXBlID0gLyhbXDAtXHgxZlx4N2ZdfF4tP1xkKXxeLSR8W15c
MC1ceDFmXHg3Zi1cdUZGRkZcdy1dL2csCisgICAgZmNzc2VzY2FwZSA9IGZ1bmN0aW9uKCBjaCwg
YXNDb2RlUG9pbnQgKSB7CisgICAgICAgIGlmICggYXNDb2RlUG9pbnQgKSB7CisKKyAgICAgICAg
ICAgIC8vIFUrMDAwMCBOVUxMIGJlY29tZXMgVStGRkZEIFJFUExBQ0VNRU5UIENIQVJBQ1RFUgor
ICAgICAgICAgICAgaWYgKCBjaCA9PT0gIlwwIiApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
Ilx1RkZGRCI7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIENvbnRyb2wgY2hhcmFj
dGVycyBhbmQgKGRlcGVuZGVudCB1cG9uIHBvc2l0aW9uKSBudW1iZXJzIGdldCBlc2NhcGVkIGFz
IGNvZGUgcG9pbnRzCisgICAgICAgICAgICByZXR1cm4gY2guc2xpY2UoIDAsIC0xICkgKyAiXFwi
ICsgY2guY2hhckNvZGVBdCggY2gubGVuZ3RoIC0gMSApLnRvU3RyaW5nKCAxNiApICsgIiAiOwor
ICAgICAgICB9CisKKyAgICAgICAgLy8gT3RoZXIgcG90ZW50aWFsbHktc3BlY2lhbCBBU0NJSSBj
aGFyYWN0ZXJzIGdldCBiYWNrc2xhc2gtZXNjYXBlZAorICAgICAgICByZXR1cm4gIlxcIiArIGNo
OworICAgIH0sCisKKyAgICAvLyBVc2VkIGZvciBpZnJhbWVzCisgICAgLy8gU2VlIHNldERvY3Vt
ZW50KCkKKyAgICAvLyBSZW1vdmluZyB0aGUgZnVuY3Rpb24gd3JhcHBlciBjYXVzZXMgYSAiUGVy
bWlzc2lvbiBEZW5pZWQiCisgICAgLy8gZXJyb3IgaW4gSUUKKyAgICB1bmxvYWRIYW5kbGVyID0g
ZnVuY3Rpb24oKSB7CisgICAgICAgIHNldERvY3VtZW50KCk7CisgICAgfSwKKworICAgIGRpc2Fi
bGVkQW5jZXN0b3IgPSBhZGRDb21iaW5hdG9yKAorICAgICAgICBmdW5jdGlvbiggZWxlbSApIHsK
KyAgICAgICAgICAgIHJldHVybiBlbGVtLmRpc2FibGVkID09PSB0cnVlICYmICgiZm9ybSIgaW4g
ZWxlbSB8fCAibGFiZWwiIGluIGVsZW0pOworICAgICAgICB9LAorICAgICAgICB7IGRpcjogInBh
cmVudE5vZGUiLCBuZXh0OiAibGVnZW5kIiB9CisgICAgKTsKKworLy8gT3B0aW1pemUgZm9yIHB1
c2guYXBwbHkoIF8sIE5vZGVMaXN0ICkKK3RyeSB7CisgICAgcHVzaC5hcHBseSgKKyAgICAgICAg
KGFyciA9IHNsaWNlLmNhbGwoIHByZWZlcnJlZERvYy5jaGlsZE5vZGVzICkpLAorICAgICAgICBw
cmVmZXJyZWREb2MuY2hpbGROb2RlcworICAgICk7CisgICAgLy8gU3VwcG9ydDogQW5kcm9pZDw0
LjAKKyAgICAvLyBEZXRlY3Qgc2lsZW50bHkgZmFpbGluZyBwdXNoLmFwcGx5CisgICAgYXJyWyBw
cmVmZXJyZWREb2MuY2hpbGROb2Rlcy5sZW5ndGggXS5ub2RlVHlwZTsKK30gY2F0Y2ggKCBlICkg
eworICAgIHB1c2ggPSB7IGFwcGx5OiBhcnIubGVuZ3RoID8KKworICAgICAgICAvLyBMZXZlcmFn
ZSBzbGljZSBpZiBwb3NzaWJsZQorICAgICAgICBmdW5jdGlvbiggdGFyZ2V0LCBlbHMgKSB7Cisg
ICAgICAgICAgICBwdXNoX25hdGl2ZS5hcHBseSggdGFyZ2V0LCBzbGljZS5jYWxsKGVscykgKTsK
KyAgICAgICAgfSA6CisKKyAgICAgICAgLy8gU3VwcG9ydDogSUU8OQorICAgICAgICAvLyBPdGhl
cndpc2UgYXBwZW5kIGRpcmVjdGx5CisgICAgICAgIGZ1bmN0aW9uKCB0YXJnZXQsIGVscyApIHsK
KyAgICAgICAgICAgIHZhciBqID0gdGFyZ2V0Lmxlbmd0aCwKKyAgICAgICAgICAgICAgICBpID0g
MDsKKyAgICAgICAgICAgIC8vIENhbid0IHRydXN0IE5vZGVMaXN0Lmxlbmd0aAorICAgICAgICAg
ICAgd2hpbGUgKCAodGFyZ2V0W2orK10gPSBlbHNbaSsrXSkgKSB7fQorICAgICAgICAgICAgdGFy
Z2V0Lmxlbmd0aCA9IGogLSAxOworICAgICAgICB9CisgICAgfTsKK30KKworZnVuY3Rpb24gU2l6
emxlKCBzZWxlY3RvciwgY29udGV4dCwgcmVzdWx0cywgc2VlZCApIHsKKyAgICB2YXIgbSwgaSwg
ZWxlbSwgbmlkLCBtYXRjaCwgZ3JvdXBzLCBuZXdTZWxlY3RvciwKKyAgICAgICAgbmV3Q29udGV4
dCA9IGNvbnRleHQgJiYgY29udGV4dC5vd25lckRvY3VtZW50LAorCisgICAgICAgIC8vIG5vZGVU
eXBlIGRlZmF1bHRzIHRvIDksIHNpbmNlIGNvbnRleHQgZGVmYXVsdHMgdG8gZG9jdW1lbnQKKyAg
ICAgICAgbm9kZVR5cGUgPSBjb250ZXh0ID8gY29udGV4dC5ub2RlVHlwZSA6IDk7CisKKyAgICBy
ZXN1bHRzID0gcmVzdWx0cyB8fCBbXTsKKworICAgIC8vIFJldHVybiBlYXJseSBmcm9tIGNhbGxz
IHdpdGggaW52YWxpZCBzZWxlY3RvciBvciBjb250ZXh0CisgICAgaWYgKCB0eXBlb2Ygc2VsZWN0
b3IgIT09ICJzdHJpbmciIHx8ICFzZWxlY3RvciB8fAorICAgICAgICBub2RlVHlwZSAhPT0gMSAm
JiBub2RlVHlwZSAhPT0gOSAmJiBub2RlVHlwZSAhPT0gMTEgKSB7CisKKyAgICAgICAgcmV0dXJu
IHJlc3VsdHM7CisgICAgfQorCisgICAgLy8gVHJ5IHRvIHNob3J0Y3V0IGZpbmQgb3BlcmF0aW9u
cyAoYXMgb3Bwb3NlZCB0byBmaWx0ZXJzKSBpbiBIVE1MIGRvY3VtZW50cworICAgIGlmICggIXNl
ZWQgKSB7CisKKyAgICAgICAgaWYgKCAoIGNvbnRleHQgPyBjb250ZXh0Lm93bmVyRG9jdW1lbnQg
fHwgY29udGV4dCA6IHByZWZlcnJlZERvYyApICE9PSBkb2N1bWVudCApIHsKKyAgICAgICAgICAg
IHNldERvY3VtZW50KCBjb250ZXh0ICk7CisgICAgICAgIH0KKyAgICAgICAgY29udGV4dCA9IGNv
bnRleHQgfHwgZG9jdW1lbnQ7CisKKyAgICAgICAgaWYgKCBkb2N1bWVudElzSFRNTCApIHsKKwor
ICAgICAgICAgICAgLy8gSWYgdGhlIHNlbGVjdG9yIGlzIHN1ZmZpY2llbnRseSBzaW1wbGUsIHRy
eSB1c2luZyBhICJnZXQqQnkqIiBET00gbWV0aG9kCisgICAgICAgICAgICAvLyAoZXhjZXB0aW5n
IERvY3VtZW50RnJhZ21lbnQgY29udGV4dCwgd2hlcmUgdGhlIG1ldGhvZHMgZG9uJ3QgZXhpc3Qp
CisgICAgICAgICAgICBpZiAoIG5vZGVUeXBlICE9PSAxMSAmJiAobWF0Y2ggPSBycXVpY2tFeHBy
LmV4ZWMoIHNlbGVjdG9yICkpICkgeworCisgICAgICAgICAgICAgICAgLy8gSUQgc2VsZWN0b3IK
KyAgICAgICAgICAgICAgICBpZiAoIChtID0gbWF0Y2hbMV0pICkgeworCisgICAgICAgICAgICAg
ICAgICAgIC8vIERvY3VtZW50IGNvbnRleHQKKyAgICAgICAgICAgICAgICAgICAgaWYgKCBub2Rl
VHlwZSA9PT0gOSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICggKGVsZW0gPSBjb250
ZXh0LmdldEVsZW1lbnRCeUlkKCBtICkpICkgeworCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gU3VwcG9ydDogSUUsIE9wZXJhLCBXZWJraXQKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBUT0RPOiBpZGVudGlmeSB2ZXJzaW9ucworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIGdldEVsZW1lbnRCeUlkIGNhbiBtYXRjaCBlbGVtZW50cyBieSBuYW1lIGluc3RlYWQg
b2YgSUQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGVsZW0uaWQgPT09IG0gKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMucHVzaCggZWxlbSApOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0czsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRzOworICAgICAgICAgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIC8vIEVsZW1lbnQgY29udGV4dAor
ICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworCisgICAgICAgICAgICAgICAgICAgICAgICAv
LyBTdXBwb3J0OiBJRSwgT3BlcmEsIFdlYmtpdAorICAgICAgICAgICAgICAgICAgICAgICAgLy8g
VE9ETzogaWRlbnRpZnkgdmVyc2lvbnMKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdldEVs
ZW1lbnRCeUlkIGNhbiBtYXRjaCBlbGVtZW50cyBieSBuYW1lIGluc3RlYWQgb2YgSUQKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICggbmV3Q29udGV4dCAmJiAoZWxlbSA9IG5ld0NvbnRleHQu
Z2V0RWxlbWVudEJ5SWQoIG0gKSkgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250
YWlucyggY29udGV4dCwgZWxlbSApICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxl
bS5pZCA9PT0gbSApIHsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMucHVz
aCggZWxlbSApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRzOwor
ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICAvLyBUeXBlIHNlbGVjdG9yCisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgg
bWF0Y2hbMl0gKSB7CisgICAgICAgICAgICAgICAgICAgIHB1c2guYXBwbHkoIHJlc3VsdHMsIGNv
bnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIHNlbGVjdG9yICkgKTsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdHM7CisKKyAgICAgICAgICAgICAgICAvLyBDbGFzcyBzZWxlY3Rv
cgorICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIChtID0gbWF0Y2hbM10pICYmIHN1cHBvcnQu
Z2V0RWxlbWVudHNCeUNsYXNzTmFtZSAmJgorICAgICAgICAgICAgICAgICAgICBjb250ZXh0Lmdl
dEVsZW1lbnRzQnlDbGFzc05hbWUgKSB7CisKKyAgICAgICAgICAgICAgICAgICAgcHVzaC5hcHBs
eSggcmVzdWx0cywgY29udGV4dC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCBtICkgKTsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdHM7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAvLyBUYWtlIGFkdmFudGFnZSBvZiBxdWVyeVNlbGVjdG9y
QWxsCisgICAgICAgICAgICBpZiAoIHN1cHBvcnQucXNhICYmCisgICAgICAgICAgICAgICAgIWNv
bXBpbGVyQ2FjaGVbIHNlbGVjdG9yICsgIiAiIF0gJiYKKyAgICAgICAgICAgICAgICAoIXJidWdn
eVFTQSB8fCAhcmJ1Z2d5UVNBLnRlc3QoIHNlbGVjdG9yICkpICkgeworCisgICAgICAgICAgICAg
ICAgaWYgKCBub2RlVHlwZSAhPT0gMSApIHsKKyAgICAgICAgICAgICAgICAgICAgbmV3Q29udGV4
dCA9IGNvbnRleHQ7CisgICAgICAgICAgICAgICAgICAgIG5ld1NlbGVjdG9yID0gc2VsZWN0b3I7
CisKKyAgICAgICAgICAgICAgICAvLyBxU0EgbG9va3Mgb3V0c2lkZSBFbGVtZW50IGNvbnRleHQs
IHdoaWNoIGlzIG5vdCB3aGF0IHdlIHdhbnQKKyAgICAgICAgICAgICAgICAvLyBUaGFua3MgdG8g
QW5kcmV3IER1cG9udCBmb3IgdGhpcyB3b3JrYXJvdW5kIHRlY2huaXF1ZQorICAgICAgICAgICAg
ICAgIC8vIFN1cHBvcnQ6IElFIDw9OAorICAgICAgICAgICAgICAgIC8vIEV4Y2x1ZGUgb2JqZWN0
IGVsZW1lbnRzCisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICggY29udGV4dC5ub2RlTmFtZS50
b0xvd2VyQ2FzZSgpICE9PSAib2JqZWN0IiApIHsKKworICAgICAgICAgICAgICAgICAgICAvLyBD
YXB0dXJlIHRoZSBjb250ZXh0IElELCBzZXR0aW5nIGl0IGZpcnN0IGlmIG5lY2Vzc2FyeQorICAg
ICAgICAgICAgICAgICAgICBpZiAoIChuaWQgPSBjb250ZXh0LmdldEF0dHJpYnV0ZSggImlkIiAp
KSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5pZCA9IG5pZC5yZXBsYWNlKCByY3NzZXNj
YXBlLCBmY3NzZXNjYXBlICk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LnNldEF0dHJpYnV0ZSggImlkIiwgKG5pZCA9IGV4cGFu
ZG8pICk7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAvLyBQ
cmVmaXggZXZlcnkgc2VsZWN0b3IgaW4gdGhlIGxpc3QKKyAgICAgICAgICAgICAgICAgICAgZ3Jv
dXBzID0gdG9rZW5pemUoIHNlbGVjdG9yICk7CisgICAgICAgICAgICAgICAgICAgIGkgPSBncm91
cHMubGVuZ3RoOworICAgICAgICAgICAgICAgICAgICB3aGlsZSAoIGktLSApIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGdyb3Vwc1tpXSA9ICIjIiArIG5pZCArICIgIiArIHRvU2VsZWN0b3Io
IGdyb3Vwc1tpXSApOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
IG5ld1NlbGVjdG9yID0gZ3JvdXBzLmpvaW4oICIsIiApOworCisgICAgICAgICAgICAgICAgICAg
IC8vIEV4cGFuZCBjb250ZXh0IGZvciBzaWJsaW5nIHNlbGVjdG9ycworICAgICAgICAgICAgICAg
ICAgICBuZXdDb250ZXh0ID0gcnNpYmxpbmcudGVzdCggc2VsZWN0b3IgKSAmJiB0ZXN0Q29udGV4
dCggY29udGV4dC5wYXJlbnROb2RlICkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRl
eHQ7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKCBuZXdTZWxlY3Rv
ciApIHsKKyAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHB1c2guYXBwbHkoIHJlc3VsdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3Q29u
dGV4dC5xdWVyeVNlbGVjdG9yQWxsKCBuZXdTZWxlY3RvciApCisgICAgICAgICAgICAgICAgICAg
ICAgICApOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdHM7CisgICAgICAg
ICAgICAgICAgICAgIH0gY2F0Y2ggKCBxc2FFcnJvciApIHsKKyAgICAgICAgICAgICAgICAgICAg
fSBmaW5hbGx5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICggbmlkID09PSBleHBhbmRv
ICkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQucmVtb3ZlQXR0cmlidXRl
KCAiaWQiICk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisK
KyAgICAvLyBBbGwgb3RoZXJzCisgICAgcmV0dXJuIHNlbGVjdCggc2VsZWN0b3IucmVwbGFjZSgg
cnRyaW0sICIkMSIgKSwgY29udGV4dCwgcmVzdWx0cywgc2VlZCApOworfQorCisvKioKKyAqIENy
ZWF0ZSBrZXktdmFsdWUgY2FjaGVzIG9mIGxpbWl0ZWQgc2l6ZQorICogQHJldHVybnMge2Z1bmN0
aW9uKHN0cmluZywgb2JqZWN0KX0gUmV0dXJucyB0aGUgT2JqZWN0IGRhdGEgYWZ0ZXIgc3Rvcmlu
ZyBpdCBvbiBpdHNlbGYgd2l0aAorICogIHByb3BlcnR5IG5hbWUgdGhlIChzcGFjZS1zdWZmaXhl
ZCkgc3RyaW5nIGFuZCAoaWYgdGhlIGNhY2hlIGlzIGxhcmdlciB0aGFuIEV4cHIuY2FjaGVMZW5n
dGgpCisgKiAgZGVsZXRpbmcgdGhlIG9sZGVzdCBlbnRyeQorICovCitmdW5jdGlvbiBjcmVhdGVD
YWNoZSgpIHsKKyAgICB2YXIga2V5cyA9IFtdOworCisgICAgZnVuY3Rpb24gY2FjaGUoIGtleSwg
dmFsdWUgKSB7CisgICAgICAgIC8vIFVzZSAoa2V5ICsgIiAiKSB0byBhdm9pZCBjb2xsaXNpb24g
d2l0aCBuYXRpdmUgcHJvdG90eXBlIHByb3BlcnRpZXMgKHNlZSBJc3N1ZSAjMTU3KQorICAgICAg
ICBpZiAoIGtleXMucHVzaCgga2V5ICsgIiAiICkgPiBFeHByLmNhY2hlTGVuZ3RoICkgeworICAg
ICAgICAgICAgLy8gT25seSBrZWVwIHRoZSBtb3N0IHJlY2VudCBlbnRyaWVzCisgICAgICAgICAg
ICBkZWxldGUgY2FjaGVbIGtleXMuc2hpZnQoKSBdOworICAgICAgICB9CisgICAgICAgIHJldHVy
biAoY2FjaGVbIGtleSArICIgIiBdID0gdmFsdWUpOworICAgIH0KKyAgICByZXR1cm4gY2FjaGU7
Cit9CisKKy8qKgorICogTWFyayBhIGZ1bmN0aW9uIGZvciBzcGVjaWFsIHVzZSBieSBTaXp6bGUK
KyAqIEBwYXJhbSB7RnVuY3Rpb259IGZuIFRoZSBmdW5jdGlvbiB0byBtYXJrCisgKi8KK2Z1bmN0
aW9uIG1hcmtGdW5jdGlvbiggZm4gKSB7CisgICAgZm5bIGV4cGFuZG8gXSA9IHRydWU7CisgICAg
cmV0dXJuIGZuOworfQorCisvKioKKyAqIFN1cHBvcnQgdGVzdGluZyB1c2luZyBhbiBlbGVtZW50
CisgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiBQYXNzZWQgdGhlIGNyZWF0ZWQgZWxlbWVudCBhbmQg
cmV0dXJucyBhIGJvb2xlYW4gcmVzdWx0CisgKi8KK2Z1bmN0aW9uIGFzc2VydCggZm4gKSB7Cisg
ICAgdmFyIGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZmllbGRzZXQiKTsKKworICAgIHRy
eSB7CisgICAgICAgIHJldHVybiAhIWZuKCBlbCApOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0gZmluYWxseSB7CisgICAgICAgIC8vIFJlbW92ZSBmcm9t
IGl0cyBwYXJlbnQgYnkgZGVmYXVsdAorICAgICAgICBpZiAoIGVsLnBhcmVudE5vZGUgKSB7Cisg
ICAgICAgICAgICBlbC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKCBlbCApOworICAgICAgICB9Cisg
ICAgICAgIC8vIHJlbGVhc2UgbWVtb3J5IGluIElFCisgICAgICAgIGVsID0gbnVsbDsKKyAgICB9
Cit9CisKKy8qKgorICogQWRkcyB0aGUgc2FtZSBoYW5kbGVyIGZvciBhbGwgb2YgdGhlIHNwZWNp
ZmllZCBhdHRycworICogQHBhcmFtIHtTdHJpbmd9IGF0dHJzIFBpcGUtc2VwYXJhdGVkIGxpc3Qg
b2YgYXR0cmlidXRlcworICogQHBhcmFtIHtGdW5jdGlvbn0gaGFuZGxlciBUaGUgbWV0aG9kIHRo
YXQgd2lsbCBiZSBhcHBsaWVkCisgKi8KK2Z1bmN0aW9uIGFkZEhhbmRsZSggYXR0cnMsIGhhbmRs
ZXIgKSB7CisgICAgdmFyIGFyciA9IGF0dHJzLnNwbGl0KCJ8IiksCisgICAgICAgIGkgPSBhcnIu
bGVuZ3RoOworCisgICAgd2hpbGUgKCBpLS0gKSB7CisgICAgICAgIEV4cHIuYXR0ckhhbmRsZVsg
YXJyW2ldIF0gPSBoYW5kbGVyOworICAgIH0KK30KKworLyoqCisgKiBDaGVja3MgZG9jdW1lbnQg
b3JkZXIgb2YgdHdvIHNpYmxpbmdzCisgKiBAcGFyYW0ge0VsZW1lbnR9IGEKKyAqIEBwYXJhbSB7
RWxlbWVudH0gYgorICogQHJldHVybnMge051bWJlcn0gUmV0dXJucyBsZXNzIHRoYW4gMCBpZiBh
IHByZWNlZGVzIGIsIGdyZWF0ZXIgdGhhbiAwIGlmIGEgZm9sbG93cyBiCisgKi8KK2Z1bmN0aW9u
IHNpYmxpbmdDaGVjayggYSwgYiApIHsKKyAgICB2YXIgY3VyID0gYiAmJiBhLAorICAgICAgICBk
aWZmID0gY3VyICYmIGEubm9kZVR5cGUgPT09IDEgJiYgYi5ub2RlVHlwZSA9PT0gMSAmJgorICAg
ICAgICAgICAgYS5zb3VyY2VJbmRleCAtIGIuc291cmNlSW5kZXg7CisKKyAgICAvLyBVc2UgSUUg
c291cmNlSW5kZXggaWYgYXZhaWxhYmxlIG9uIGJvdGggbm9kZXMKKyAgICBpZiAoIGRpZmYgKSB7
CisgICAgICAgIHJldHVybiBkaWZmOworICAgIH0KKworICAgIC8vIENoZWNrIGlmIGIgZm9sbG93
cyBhCisgICAgaWYgKCBjdXIgKSB7CisgICAgICAgIHdoaWxlICggKGN1ciA9IGN1ci5uZXh0U2li
bGluZykgKSB7CisgICAgICAgICAgICBpZiAoIGN1ciA9PT0gYiApIHsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1
cm4gYSA/IDEgOiAtMTsKK30KKworLyoqCisgKiBSZXR1cm5zIGEgZnVuY3Rpb24gdG8gdXNlIGlu
IHBzZXVkb3MgZm9yIGlucHV0IHR5cGVzCisgKiBAcGFyYW0ge1N0cmluZ30gdHlwZQorICovCitm
dW5jdGlvbiBjcmVhdGVJbnB1dFBzZXVkbyggdHlwZSApIHsKKyAgICByZXR1cm4gZnVuY3Rpb24o
IGVsZW0gKSB7CisgICAgICAgIHZhciBuYW1lID0gZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgp
OworICAgICAgICByZXR1cm4gbmFtZSA9PT0gImlucHV0IiAmJiBlbGVtLnR5cGUgPT09IHR5cGU7
CisgICAgfTsKK30KKworLyoqCisgKiBSZXR1cm5zIGEgZnVuY3Rpb24gdG8gdXNlIGluIHBzZXVk
b3MgZm9yIGJ1dHRvbnMKKyAqIEBwYXJhbSB7U3RyaW5nfSB0eXBlCisgKi8KK2Z1bmN0aW9uIGNy
ZWF0ZUJ1dHRvblBzZXVkbyggdHlwZSApIHsKKyAgICByZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7
CisgICAgICAgIHZhciBuYW1lID0gZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOworICAgICAg
ICByZXR1cm4gKG5hbWUgPT09ICJpbnB1dCIgfHwgbmFtZSA9PT0gImJ1dHRvbiIpICYmIGVsZW0u
dHlwZSA9PT0gdHlwZTsKKyAgICB9OworfQorCisvKioKKyAqIFJldHVybnMgYSBmdW5jdGlvbiB0
byB1c2UgaW4gcHNldWRvcyBmb3IgOmVuYWJsZWQvOmRpc2FibGVkCisgKiBAcGFyYW0ge0Jvb2xl
YW59IGRpc2FibGVkIHRydWUgZm9yIDpkaXNhYmxlZDsgZmFsc2UgZm9yIDplbmFibGVkCisgKi8K
K2Z1bmN0aW9uIGNyZWF0ZURpc2FibGVkUHNldWRvKCBkaXNhYmxlZCApIHsKKworICAgIC8vIEtu
b3duIDpkaXNhYmxlZCBmYWxzZSBwb3NpdGl2ZXM6IGZpZWxkc2V0W2Rpc2FibGVkXSA+IGxlZ2Vu
ZDpudGgtb2YtdHlwZShuKzIpIDpjYW4tZGlzYWJsZQorICAgIHJldHVybiBmdW5jdGlvbiggZWxl
bSApIHsKKworICAgICAgICAvLyBPbmx5IGNlcnRhaW4gZWxlbWVudHMgY2FuIG1hdGNoIDplbmFi
bGVkIG9yIDpkaXNhYmxlZAorICAgICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3Jn
L211bHRpcGFnZS9zY3JpcHRpbmcuaHRtbCNzZWxlY3Rvci1lbmFibGVkCisgICAgICAgIC8vIGh0
dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3NjcmlwdGluZy5odG1sI3NlbGVj
dG9yLWRpc2FibGVkCisgICAgICAgIGlmICggImZvcm0iIGluIGVsZW0gKSB7CisKKyAgICAgICAg
ICAgIC8vIENoZWNrIGZvciBpbmhlcml0ZWQgZGlzYWJsZWRuZXNzIG9uIHJlbGV2YW50IG5vbi1k
aXNhYmxlZCBlbGVtZW50czoKKyAgICAgICAgICAgIC8vICogbGlzdGVkIGZvcm0tYXNzb2NpYXRl
ZCBlbGVtZW50cyBpbiBhIGRpc2FibGVkIGZpZWxkc2V0CisgICAgICAgICAgICAvLyAgIGh0dHBz
Oi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2Zvcm1zLmh0bWwjY2F0ZWdvcnktbGlz
dGVkCisgICAgICAgICAgICAvLyAgIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlw
YWdlL2Zvcm1zLmh0bWwjY29uY2VwdC1mZS1kaXNhYmxlZAorICAgICAgICAgICAgLy8gKiBvcHRp
b24gZWxlbWVudHMgaW4gYSBkaXNhYmxlZCBvcHRncm91cAorICAgICAgICAgICAgLy8gICBodHRw
czovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9mb3Jtcy5odG1sI2NvbmNlcHQtb3B0
aW9uLWRpc2FibGVkCisgICAgICAgICAgICAvLyBBbGwgc3VjaCBlbGVtZW50cyBoYXZlIGEgImZv
cm0iIHByb3BlcnR5LgorICAgICAgICAgICAgaWYgKCBlbGVtLnBhcmVudE5vZGUgJiYgZWxlbS5k
aXNhYmxlZCA9PT0gZmFsc2UgKSB7CisKKyAgICAgICAgICAgICAgICAvLyBPcHRpb24gZWxlbWVu
dHMgZGVmZXIgdG8gYSBwYXJlbnQgb3B0Z3JvdXAgaWYgcHJlc2VudAorICAgICAgICAgICAgICAg
IGlmICggImxhYmVsIiBpbiBlbGVtICkgeworICAgICAgICAgICAgICAgICAgICBpZiAoICJsYWJl
bCIgaW4gZWxlbS5wYXJlbnROb2RlICkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGVsZW0ucGFyZW50Tm9kZS5kaXNhYmxlZCA9PT0gZGlzYWJsZWQ7CisgICAgICAgICAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbS5kaXNhYmxl
ZCA9PT0gZGlzYWJsZWQ7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICAvLyBTdXBwb3J0OiBJRSA2IC0gMTEKKyAgICAgICAgICAgICAg
ICAvLyBVc2UgdGhlIGlzRGlzYWJsZWQgc2hvcnRjdXQgcHJvcGVydHkgdG8gY2hlY2sgZm9yIGRp
c2FibGVkIGZpZWxkc2V0IGFuY2VzdG9ycworICAgICAgICAgICAgICAgIHJldHVybiBlbGVtLmlz
RGlzYWJsZWQgPT09IGRpc2FibGVkIHx8CisKKyAgICAgICAgICAgICAgICAgICAgLy8gV2hlcmUg
dGhlcmUgaXMgbm8gaXNEaXNhYmxlZCwgY2hlY2sgbWFudWFsbHkKKyAgICAgICAgICAgICAgICAg
ICAgLyoganNoaW50IC1XMDE4ICovCisgICAgICAgICAgICAgICAgICAgIGVsZW0uaXNEaXNhYmxl
ZCAhPT0gIWRpc2FibGVkICYmCisgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZEFuY2Vz
dG9yKCBlbGVtICkgPT09IGRpc2FibGVkOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBy
ZXR1cm4gZWxlbS5kaXNhYmxlZCA9PT0gZGlzYWJsZWQ7CisKKyAgICAgICAgLy8gVHJ5IHRvIHdp
bm5vdyBvdXQgZWxlbWVudHMgdGhhdCBjYW4ndCBiZSBkaXNhYmxlZCBiZWZvcmUgdHJ1c3Rpbmcg
dGhlIGRpc2FibGVkIHByb3BlcnR5LgorICAgICAgICAvLyBTb21lIHZpY3RpbXMgZ2V0IGNhdWdo
dCBpbiBvdXIgbmV0IChsYWJlbCwgbGVnZW5kLCBtZW51LCB0cmFjayksIGJ1dCBpdCBzaG91bGRu
J3QKKyAgICAgICAgLy8gZXZlbiBleGlzdCBvbiB0aGVtLCBsZXQgYWxvbmUgaGF2ZSBhIGJvb2xl
YW4gdmFsdWUuCisgICAgICAgIH0gZWxzZSBpZiAoICJsYWJlbCIgaW4gZWxlbSApIHsKKyAgICAg
ICAgICAgIHJldHVybiBlbGVtLmRpc2FibGVkID09PSBkaXNhYmxlZDsKKyAgICAgICAgfQorCisg
ICAgICAgIC8vIFJlbWFpbmluZyBlbGVtZW50cyBhcmUgbmVpdGhlciA6ZW5hYmxlZCBub3IgOmRp
c2FibGVkCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9OworfQorCisvKioKKyAqIFJldHVy
bnMgYSBmdW5jdGlvbiB0byB1c2UgaW4gcHNldWRvcyBmb3IgcG9zaXRpb25hbHMKKyAqIEBwYXJh
bSB7RnVuY3Rpb259IGZuCisgKi8KK2Z1bmN0aW9uIGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oIGZu
ICkgeworICAgIHJldHVybiBtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIGFyZ3VtZW50ICkgeworICAg
ICAgICBhcmd1bWVudCA9ICthcmd1bWVudDsKKyAgICAgICAgcmV0dXJuIG1hcmtGdW5jdGlvbihm
dW5jdGlvbiggc2VlZCwgbWF0Y2hlcyApIHsKKyAgICAgICAgICAgIHZhciBqLAorICAgICAgICAg
ICAgICAgIG1hdGNoSW5kZXhlcyA9IGZuKCBbXSwgc2VlZC5sZW5ndGgsIGFyZ3VtZW50ICksCisg
ICAgICAgICAgICAgICAgaSA9IG1hdGNoSW5kZXhlcy5sZW5ndGg7CisKKyAgICAgICAgICAgIC8v
IE1hdGNoIGVsZW1lbnRzIGZvdW5kIGF0IHRoZSBzcGVjaWZpZWQgaW5kZXhlcworICAgICAgICAg
ICAgd2hpbGUgKCBpLS0gKSB7CisgICAgICAgICAgICAgICAgaWYgKCBzZWVkWyAoaiA9IG1hdGNo
SW5kZXhlc1tpXSkgXSApIHsKKyAgICAgICAgICAgICAgICAgICAgc2VlZFtqXSA9ICEobWF0Y2hl
c1tqXSA9IHNlZWRbal0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfSk7CisgICAgfSk7Cit9CisKKy8qKgorICogQ2hlY2tzIGEgbm9kZSBmb3IgdmFsaWRpdHkg
YXMgYSBTaXp6bGUgY29udGV4dAorICogQHBhcmFtIHtFbGVtZW50fE9iamVjdD19IGNvbnRleHQK
KyAqIEByZXR1cm5zIHtFbGVtZW50fE9iamVjdHxCb29sZWFufSBUaGUgaW5wdXQgbm9kZSBpZiBh
Y2NlcHRhYmxlLCBvdGhlcndpc2UgYSBmYWxzeSB2YWx1ZQorICovCitmdW5jdGlvbiB0ZXN0Q29u
dGV4dCggY29udGV4dCApIHsKKyAgICByZXR1cm4gY29udGV4dCAmJiB0eXBlb2YgY29udGV4dC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSAhPT0gInVuZGVmaW5lZCIgJiYgY29udGV4dDsKK30KKworLy8g
RXhwb3NlIHN1cHBvcnQgdmFycyBmb3IgY29udmVuaWVuY2UKK3N1cHBvcnQgPSBTaXp6bGUuc3Vw
cG9ydCA9IHt9OworCisvKioKKyAqIERldGVjdHMgWE1MIG5vZGVzCisgKiBAcGFyYW0ge0VsZW1l
bnR8T2JqZWN0fSBlbGVtIEFuIGVsZW1lbnQgb3IgYSBkb2N1bWVudAorICogQHJldHVybnMge0Jv
b2xlYW59IFRydWUgaWZmIGVsZW0gaXMgYSBub24tSFRNTCBYTUwgbm9kZQorICovCitpc1hNTCA9
IFNpenpsZS5pc1hNTCA9IGZ1bmN0aW9uKCBlbGVtICkgeworICAgIC8vIGRvY3VtZW50RWxlbWVu
dCBpcyB2ZXJpZmllZCBmb3IgY2FzZXMgd2hlcmUgaXQgZG9lc24ndCB5ZXQgZXhpc3QKKyAgICAv
LyAoc3VjaCBhcyBsb2FkaW5nIGlmcmFtZXMgaW4gSUUgLSAjNDgzMykKKyAgICB2YXIgZG9jdW1l
bnRFbGVtZW50ID0gZWxlbSAmJiAoZWxlbS5vd25lckRvY3VtZW50IHx8IGVsZW0pLmRvY3VtZW50
RWxlbWVudDsKKyAgICByZXR1cm4gZG9jdW1lbnRFbGVtZW50ID8gZG9jdW1lbnRFbGVtZW50Lm5v
ZGVOYW1lICE9PSAiSFRNTCIgOiBmYWxzZTsKK307CisKKy8qKgorICogU2V0cyBkb2N1bWVudC1y
ZWxhdGVkIHZhcmlhYmxlcyBvbmNlIGJhc2VkIG9uIHRoZSBjdXJyZW50IGRvY3VtZW50CisgKiBA
cGFyYW0ge0VsZW1lbnR8T2JqZWN0fSBbZG9jXSBBbiBlbGVtZW50IG9yIGRvY3VtZW50IG9iamVj
dCB0byB1c2UgdG8gc2V0IHRoZSBkb2N1bWVudAorICogQHJldHVybnMge09iamVjdH0gUmV0dXJu
cyB0aGUgY3VycmVudCBkb2N1bWVudAorICovCitzZXREb2N1bWVudCA9IFNpenpsZS5zZXREb2N1
bWVudCA9IGZ1bmN0aW9uKCBub2RlICkgeworICAgIHZhciBoYXNDb21wYXJlLCBzdWJXaW5kb3cs
CisgICAgICAgIGRvYyA9IG5vZGUgPyBub2RlLm93bmVyRG9jdW1lbnQgfHwgbm9kZSA6IHByZWZl
cnJlZERvYzsKKworICAgIC8vIFJldHVybiBlYXJseSBpZiBkb2MgaXMgaW52YWxpZCBvciBhbHJl
YWR5IHNlbGVjdGVkCisgICAgaWYgKCBkb2MgPT09IGRvY3VtZW50IHx8IGRvYy5ub2RlVHlwZSAh
PT0gOSB8fCAhZG9jLmRvY3VtZW50RWxlbWVudCApIHsKKyAgICAgICAgcmV0dXJuIGRvY3VtZW50
OworICAgIH0KKworICAgIC8vIFVwZGF0ZSBnbG9iYWwgdmFyaWFibGVzCisgICAgZG9jdW1lbnQg
PSBkb2M7CisgICAgZG9jRWxlbSA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDsKKyAgICBkb2N1
bWVudElzSFRNTCA9ICFpc1hNTCggZG9jdW1lbnQgKTsKKworICAgIC8vIFN1cHBvcnQ6IElFIDkt
MTEsIEVkZ2UKKyAgICAvLyBBY2Nlc3NpbmcgaWZyYW1lIGRvY3VtZW50cyBhZnRlciB1bmxvYWQg
dGhyb3dzICJwZXJtaXNzaW9uIGRlbmllZCIgZXJyb3JzIChqUXVlcnkgIzEzOTM2KQorICAgIGlm
ICggcHJlZmVycmVkRG9jICE9PSBkb2N1bWVudCAmJgorICAgICAgICAoc3ViV2luZG93ID0gZG9j
dW1lbnQuZGVmYXVsdFZpZXcpICYmIHN1YldpbmRvdy50b3AgIT09IHN1YldpbmRvdyApIHsKKwor
ICAgICAgICAvLyBTdXBwb3J0OiBJRSAxMSwgRWRnZQorICAgICAgICBpZiAoIHN1YldpbmRvdy5h
ZGRFdmVudExpc3RlbmVyICkgeworICAgICAgICAgICAgc3ViV2luZG93LmFkZEV2ZW50TGlzdGVu
ZXIoICJ1bmxvYWQiLCB1bmxvYWRIYW5kbGVyLCBmYWxzZSApOworCisgICAgICAgIC8vIFN1cHBv
cnQ6IElFIDkgLSAxMCBvbmx5CisgICAgICAgIH0gZWxzZSBpZiAoIHN1YldpbmRvdy5hdHRhY2hF
dmVudCApIHsKKyAgICAgICAgICAgIHN1YldpbmRvdy5hdHRhY2hFdmVudCggIm9udW5sb2FkIiwg
dW5sb2FkSGFuZGxlciApOworICAgICAgICB9CisgICAgfQorCisgICAgLyogQXR0cmlidXRlcwor
ICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0gKi8KKworICAgIC8vIFN1cHBvcnQ6IElFPDgKKyAgICAvLyBWZXJp
ZnkgdGhhdCBnZXRBdHRyaWJ1dGUgcmVhbGx5IHJldHVybnMgYXR0cmlidXRlcyBhbmQgbm90IHBy
b3BlcnRpZXMKKyAgICAvLyAoZXhjZXB0aW5nIElFOCBib29sZWFucykKKyAgICBzdXBwb3J0LmF0
dHJpYnV0ZXMgPSBhc3NlcnQoZnVuY3Rpb24oIGVsICkgeworICAgICAgICBlbC5jbGFzc05hbWUg
PSAiaSI7CisgICAgICAgIHJldHVybiAhZWwuZ2V0QXR0cmlidXRlKCJjbGFzc05hbWUiKTsKKyAg
ICB9KTsKKworICAgIC8qIGdldEVsZW1lbnQocylCeSoKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisK
KyAgICAvLyBDaGVjayBpZiBnZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpIHJldHVybnMgb25seSBl
bGVtZW50cworICAgIHN1cHBvcnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUgPSBhc3NlcnQoZnVuY3Rp
b24oIGVsICkgeworICAgICAgICBlbC5hcHBlbmRDaGlsZCggZG9jdW1lbnQuY3JlYXRlQ29tbWVu
dCgiIikgKTsKKyAgICAgICAgcmV0dXJuICFlbC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLmxl
bmd0aDsKKyAgICB9KTsKKworICAgIC8vIFN1cHBvcnQ6IElFPDkKKyAgICBzdXBwb3J0LmdldEVs
ZW1lbnRzQnlDbGFzc05hbWUgPSBybmF0aXZlLnRlc3QoIGRvY3VtZW50LmdldEVsZW1lbnRzQnlD
bGFzc05hbWUgKTsKKworICAgIC8vIFN1cHBvcnQ6IElFPDEwCisgICAgLy8gQ2hlY2sgaWYgZ2V0
RWxlbWVudEJ5SWQgcmV0dXJucyBlbGVtZW50cyBieSBuYW1lCisgICAgLy8gVGhlIGJyb2tlbiBn
ZXRFbGVtZW50QnlJZCBtZXRob2RzIGRvbid0IHBpY2sgdXAgcHJvZ3JhbW1hdGljYWxseS1zZXQg
bmFtZXMsCisgICAgLy8gc28gdXNlIGEgcm91bmRhYm91dCBnZXRFbGVtZW50c0J5TmFtZSB0ZXN0
CisgICAgc3VwcG9ydC5nZXRCeUlkID0gYXNzZXJ0KGZ1bmN0aW9uKCBlbCApIHsKKyAgICAgICAg
ZG9jRWxlbS5hcHBlbmRDaGlsZCggZWwgKS5pZCA9IGV4cGFuZG87CisgICAgICAgIHJldHVybiAh
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUgfHwgIWRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1l
KCBleHBhbmRvICkubGVuZ3RoOworICAgIH0pOworCisgICAgLy8gSUQgZmlsdGVyIGFuZCBmaW5k
CisgICAgaWYgKCBzdXBwb3J0LmdldEJ5SWQgKSB7CisgICAgICAgIEV4cHIuZmlsdGVyWyJJRCJd
ID0gZnVuY3Rpb24oIGlkICkgeworICAgICAgICAgICAgdmFyIGF0dHJJZCA9IGlkLnJlcGxhY2Uo
IHJ1bmVzY2FwZSwgZnVuZXNjYXBlICk7CisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oIGVs
ZW0gKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW0uZ2V0QXR0cmlidXRlKCJpZCIpID09
PSBhdHRySWQ7CisgICAgICAgICAgICB9OworICAgICAgICB9OworICAgICAgICBFeHByLmZpbmRb
IklEIl0gPSBmdW5jdGlvbiggaWQsIGNvbnRleHQgKSB7CisgICAgICAgICAgICBpZiAoIHR5cGVv
ZiBjb250ZXh0LmdldEVsZW1lbnRCeUlkICE9PSAidW5kZWZpbmVkIiAmJiBkb2N1bWVudElzSFRN
TCApIHsKKyAgICAgICAgICAgICAgICB2YXIgZWxlbSA9IGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQo
IGlkICk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW0gPyBbIGVsZW0gXSA6IFtdOworICAg
ICAgICAgICAgfQorICAgICAgICB9OworICAgIH0gZWxzZSB7CisgICAgICAgIEV4cHIuZmlsdGVy
WyJJRCJdID0gIGZ1bmN0aW9uKCBpZCApIHsKKyAgICAgICAgICAgIHZhciBhdHRySWQgPSBpZC5y
ZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApOworICAgICAgICAgICAgcmV0dXJuIGZ1bmN0
aW9uKCBlbGVtICkgeworICAgICAgICAgICAgICAgIHZhciBub2RlID0gdHlwZW9mIGVsZW0uZ2V0
QXR0cmlidXRlTm9kZSAhPT0gInVuZGVmaW5lZCIgJiYKKyAgICAgICAgICAgICAgICAgICAgZWxl
bS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpOworICAgICAgICAgICAgICAgIHJldHVybiBub2RlICYm
IG5vZGUudmFsdWUgPT09IGF0dHJJZDsKKyAgICAgICAgICAgIH07CisgICAgICAgIH07CisKKyAg
ICAgICAgLy8gU3VwcG9ydDogSUUgNiAtIDcgb25seQorICAgICAgICAvLyBnZXRFbGVtZW50QnlJ
ZCBpcyBub3QgcmVsaWFibGUgYXMgYSBmaW5kIHNob3J0Y3V0CisgICAgICAgIEV4cHIuZmluZFsi
SUQiXSA9IGZ1bmN0aW9uKCBpZCwgY29udGV4dCApIHsKKyAgICAgICAgICAgIGlmICggdHlwZW9m
IGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQgIT09ICJ1bmRlZmluZWQiICYmIGRvY3VtZW50SXNIVE1M
ICkgeworICAgICAgICAgICAgICAgIHZhciBub2RlLCBpLCBlbGVtcywKKyAgICAgICAgICAgICAg
ICAgICAgZWxlbSA9IGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQoIGlkICk7CisKKyAgICAgICAgICAg
ICAgICBpZiAoIGVsZW0gKSB7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gVmVyaWZ5IHRoZSBp
ZCBhdHRyaWJ1dGUKKyAgICAgICAgICAgICAgICAgICAgbm9kZSA9IGVsZW0uZ2V0QXR0cmlidXRl
Tm9kZSgiaWQiKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCBub2RlICYmIG5vZGUudmFsdWUg
PT09IGlkICkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsgZWxlbSBdOworICAg
ICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgLy8gRmFsbCBiYWNrIG9u
IGdldEVsZW1lbnRzQnlOYW1lCisgICAgICAgICAgICAgICAgICAgIGVsZW1zID0gY29udGV4dC5n
ZXRFbGVtZW50c0J5TmFtZSggaWQgKTsKKyAgICAgICAgICAgICAgICAgICAgaSA9IDA7CisgICAg
ICAgICAgICAgICAgICAgIHdoaWxlICggKGVsZW0gPSBlbGVtc1tpKytdKSApIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG5vZGUgPSBlbGVtLmdldEF0dHJpYnV0ZU5vZGUoImlkIik7CisgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoIG5vZGUgJiYgbm9kZS52YWx1ZSA9PT0gaWQgKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsgZWxlbSBdOworICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgcmV0dXJuIFtdOworICAgICAgICAgICAgfQorICAgICAgICB9Owor
ICAgIH0KKworICAgIC8vIFRhZworICAgIEV4cHIuZmluZFsiVEFHIl0gPSBzdXBwb3J0LmdldEVs
ZW1lbnRzQnlUYWdOYW1lID8KKyAgICAgICAgZnVuY3Rpb24oIHRhZywgY29udGV4dCApIHsKKyAg
ICAgICAgICAgIGlmICggdHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUgIT09ICJ1
bmRlZmluZWQiICkgeworICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCB0YWcgKTsKKworICAgICAgICAgICAgLy8gRG9jdW1lbnRGcmFnbWVudCBub2Rl
cyBkb24ndCBoYXZlIGdFQlROCisgICAgICAgICAgICB9IGVsc2UgaWYgKCBzdXBwb3J0LnFzYSAp
IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5xdWVyeVNlbGVjdG9yQWxsKCB0YWcg
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSA6CisKKyAgICAgICAgZnVuY3Rpb24oIHRhZywg
Y29udGV4dCApIHsKKyAgICAgICAgICAgIHZhciBlbGVtLAorICAgICAgICAgICAgICAgIHRtcCA9
IFtdLAorICAgICAgICAgICAgICAgIGkgPSAwLAorICAgICAgICAgICAgICAgIC8vIEJ5IGhhcHB5
IGNvaW5jaWRlbmNlLCBhIChicm9rZW4pIGdFQlROIGFwcGVhcnMgb24gRG9jdW1lbnRGcmFnbWVu
dCBub2RlcyB0b28KKyAgICAgICAgICAgICAgICByZXN1bHRzID0gY29udGV4dC5nZXRFbGVtZW50
c0J5VGFnTmFtZSggdGFnICk7CisKKyAgICAgICAgICAgIC8vIEZpbHRlciBvdXQgcG9zc2libGUg
Y29tbWVudHMKKyAgICAgICAgICAgIGlmICggdGFnID09PSAiKiIgKSB7CisgICAgICAgICAgICAg
ICAgd2hpbGUgKCAoZWxlbSA9IHJlc3VsdHNbaSsrXSkgKSB7CisgICAgICAgICAgICAgICAgICAg
IGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRt
cC5wdXNoKCBlbGVtICk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICByZXR1cm4gdG1wOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdHM7CisgICAgICAgIH07CisKKyAgICAvLyBDbGFzcworICAgIEV4cHIu
ZmluZFsiQ0xBU1MiXSA9IHN1cHBvcnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSAmJiBmdW5jdGlv
biggY2xhc3NOYW1lLCBjb250ZXh0ICkgeworICAgICAgICBpZiAoIHR5cGVvZiBjb250ZXh0Lmdl
dEVsZW1lbnRzQnlDbGFzc05hbWUgIT09ICJ1bmRlZmluZWQiICYmIGRvY3VtZW50SXNIVE1MICkg
eworICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSggY2xh
c3NOYW1lICk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgLyogUVNBL21hdGNoZXNTZWxlY3Rv
cgorICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworICAgIC8vIFFTQSBhbmQgbWF0Y2hlc1NlbGVjdG9y
IHN1cHBvcnQKKworICAgIC8vIG1hdGNoZXNTZWxlY3Rvcig6YWN0aXZlKSByZXBvcnRzIGZhbHNl
IHdoZW4gdHJ1ZSAoSUU5L09wZXJhIDExLjUpCisgICAgcmJ1Z2d5TWF0Y2hlcyA9IFtdOworCisg
ICAgLy8gcVNhKDpmb2N1cykgcmVwb3J0cyBmYWxzZSB3aGVuIHRydWUgKENocm9tZSAyMSkKKyAg
ICAvLyBXZSBhbGxvdyB0aGlzIGJlY2F1c2Ugb2YgYSBidWcgaW4gSUU4LzkgdGhhdCB0aHJvd3Mg
YW4gZXJyb3IKKyAgICAvLyB3aGVuZXZlciBgZG9jdW1lbnQuYWN0aXZlRWxlbWVudGAgaXMgYWNj
ZXNzZWQgb24gYW4gaWZyYW1lCisgICAgLy8gU28sIHdlIGFsbG93IDpmb2N1cyB0byBwYXNzIHRo
cm91Z2ggUVNBIGFsbCB0aGUgdGltZSB0byBhdm9pZCB0aGUgSUUgZXJyb3IKKyAgICAvLyBTZWUg
aHR0cHM6Ly9idWdzLmpxdWVyeS5jb20vdGlja2V0LzEzMzc4CisgICAgcmJ1Z2d5UVNBID0gW107
CisKKyAgICBpZiAoIChzdXBwb3J0LnFzYSA9IHJuYXRpdmUudGVzdCggZG9jdW1lbnQucXVlcnlT
ZWxlY3RvckFsbCApKSApIHsKKyAgICAgICAgLy8gQnVpbGQgUVNBIHJlZ2V4CisgICAgICAgIC8v
IFJlZ2V4IHN0cmF0ZWd5IGFkb3B0ZWQgZnJvbSBEaWVnbyBQZXJpbmkKKyAgICAgICAgYXNzZXJ0
KGZ1bmN0aW9uKCBlbCApIHsKKyAgICAgICAgICAgIC8vIFNlbGVjdCBpcyBzZXQgdG8gZW1wdHkg
c3RyaW5nIG9uIHB1cnBvc2UKKyAgICAgICAgICAgIC8vIFRoaXMgaXMgdG8gdGVzdCBJRSdzIHRy
ZWF0bWVudCBvZiBub3QgZXhwbGljaXRseQorICAgICAgICAgICAgLy8gc2V0dGluZyBhIGJvb2xl
YW4gY29udGVudCBhdHRyaWJ1dGUsCisgICAgICAgICAgICAvLyBzaW5jZSBpdHMgcHJlc2VuY2Ug
c2hvdWxkIGJlIGVub3VnaAorICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLmpxdWVyeS5jb20v
dGlja2V0LzEyMzU5CisgICAgICAgICAgICBkb2NFbGVtLmFwcGVuZENoaWxkKCBlbCApLmlubmVy
SFRNTCA9ICI8YSBpZD0nIiArIGV4cGFuZG8gKyAiJz48L2E+IiArCisgICAgICAgICAgICAgICAg
IjxzZWxlY3QgaWQ9JyIgKyBleHBhbmRvICsgIi1cclxcJyBtc2FsbG93Y2FwdHVyZT0nJz4iICsK
KyAgICAgICAgICAgICAgICAiPG9wdGlvbiBzZWxlY3RlZD0nJz48L29wdGlvbj48L3NlbGVjdD4i
OworCisgICAgICAgICAgICAvLyBTdXBwb3J0OiBJRTgsIE9wZXJhIDExLTEyLjE2CisgICAgICAg
ICAgICAvLyBOb3RoaW5nIHNob3VsZCBiZSBzZWxlY3RlZCB3aGVuIGVtcHR5IHN0cmluZ3MgZm9s
bG93IF49IG9yICQ9IG9yICo9CisgICAgICAgICAgICAvLyBUaGUgdGVzdCBhdHRyaWJ1dGUgbXVz
dCBiZSB1bmtub3duIGluIE9wZXJhIGJ1dCAic2FmZSIgZm9yIFdpblJUCisgICAgICAgICAgICAv
LyBodHRwczovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L2llL2hoNDY1Mzg4LmFz
cHgjYXR0cmlidXRlX3NlY3Rpb24KKyAgICAgICAgICAgIGlmICggZWwucXVlcnlTZWxlY3RvckFs
bCgiW21zYWxsb3djYXB0dXJlXj0nJ10iKS5sZW5ndGggKSB7CisgICAgICAgICAgICAgICAgcmJ1
Z2d5UVNBLnB1c2goICJbKl4kXT0iICsgd2hpdGVzcGFjZSArICIqKD86Jyd8XCJcIikiICk7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFN1cHBvcnQ6IElFOAorICAgICAgICAgICAg
Ly8gQm9vbGVhbiBhdHRyaWJ1dGVzIGFuZCAidmFsdWUiIGFyZSBub3QgdHJlYXRlZCBjb3JyZWN0
bHkKKyAgICAgICAgICAgIGlmICggIWVsLnF1ZXJ5U2VsZWN0b3JBbGwoIltzZWxlY3RlZF0iKS5s
ZW5ndGggKSB7CisgICAgICAgICAgICAgICAgcmJ1Z2d5UVNBLnB1c2goICJcXFsiICsgd2hpdGVz
cGFjZSArICIqKD86dmFsdWV8IiArIGJvb2xlYW5zICsgIikiICk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIC8vIFN1cHBvcnQ6IENocm9tZTwyOSwgQW5kcm9pZDw0LjQsIFNhZmFyaTw3
LjArLCBpT1M8Ny4wKywgUGhhbnRvbUpTPDEuOS44KworICAgICAgICAgICAgaWYgKCAhZWwucXVl
cnlTZWxlY3RvckFsbCggIltpZH49IiArIGV4cGFuZG8gKyAiLV0iICkubGVuZ3RoICkgeworICAg
ICAgICAgICAgICAgIHJidWdneVFTQS5wdXNoKCJ+PSIpOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAvLyBXZWJraXQvT3BlcmEgLSA6Y2hlY2tlZCBzaG91bGQgcmV0dXJuIHNlbGVjdGVk
IG9wdGlvbiBlbGVtZW50cworICAgICAgICAgICAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIvMjAx
MS9SRUMtY3NzMy1zZWxlY3RvcnMtMjAxMTA5MjkvI2NoZWNrZWQKKyAgICAgICAgICAgIC8vIElF
OCB0aHJvd3MgZXJyb3IgaGVyZSBhbmQgd2lsbCBub3Qgc2VlIGxhdGVyIHRlc3RzCisgICAgICAg
ICAgICBpZiAoICFlbC5xdWVyeVNlbGVjdG9yQWxsKCI6Y2hlY2tlZCIpLmxlbmd0aCApIHsKKyAg
ICAgICAgICAgICAgICByYnVnZ3lRU0EucHVzaCgiOmNoZWNrZWQiKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgLy8gU3VwcG9ydDogU2FmYXJpIDgrLCBpT1MgOCsKKyAgICAgICAgICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzY4NTEKKyAgICAg
ICAgICAgIC8vIEluLXBhZ2UgYHNlbGVjdG9yI2lkIHNpYmxpbmctY29tYmluYXRvciBzZWxlY3Rv
cmAgZmFpbHMKKyAgICAgICAgICAgIGlmICggIWVsLnF1ZXJ5U2VsZWN0b3JBbGwoICJhIyIgKyBl
eHBhbmRvICsgIisqIiApLmxlbmd0aCApIHsKKyAgICAgICAgICAgICAgICByYnVnZ3lRU0EucHVz
aCgiLiMuK1srfl0iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisKKyAgICAgICAgYXNz
ZXJ0KGZ1bmN0aW9uKCBlbCApIHsKKyAgICAgICAgICAgIGVsLmlubmVySFRNTCA9ICI8YSBocmVm
PScnIGRpc2FibGVkPSdkaXNhYmxlZCc+PC9hPiIgKworICAgICAgICAgICAgICAgICI8c2VsZWN0
IGRpc2FibGVkPSdkaXNhYmxlZCc+PG9wdGlvbi8+PC9zZWxlY3Q+IjsKKworICAgICAgICAgICAg
Ly8gU3VwcG9ydDogV2luZG93cyA4IE5hdGl2ZSBBcHBzCisgICAgICAgICAgICAvLyBUaGUgdHlw
ZSBhbmQgbmFtZSBhdHRyaWJ1dGVzIGFyZSByZXN0cmljdGVkIGR1cmluZyAuaW5uZXJIVE1MIGFz
c2lnbm1lbnQKKyAgICAgICAgICAgIHZhciBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImlucHV0Iik7CisgICAgICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoICJ0eXBlIiwgImhpZGRl
biIgKTsKKyAgICAgICAgICAgIGVsLmFwcGVuZENoaWxkKCBpbnB1dCApLnNldEF0dHJpYnV0ZSgg
Im5hbWUiLCAiRCIgKTsKKworICAgICAgICAgICAgLy8gU3VwcG9ydDogSUU4CisgICAgICAgICAg
ICAvLyBFbmZvcmNlIGNhc2Utc2Vuc2l0aXZpdHkgb2YgbmFtZSBhdHRyaWJ1dGUKKyAgICAgICAg
ICAgIGlmICggZWwucXVlcnlTZWxlY3RvckFsbCgiW25hbWU9ZF0iKS5sZW5ndGggKSB7CisgICAg
ICAgICAgICAgICAgcmJ1Z2d5UVNBLnB1c2goICJuYW1lIiArIHdoaXRlc3BhY2UgKyAiKlsqXiR8
IX5dPz0iICk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEZGIDMuNSAtIDplbmFi
bGVkLzpkaXNhYmxlZCBhbmQgaGlkZGVuIGVsZW1lbnRzIChoaWRkZW4gZWxlbWVudHMgYXJlIHN0
aWxsIGVuYWJsZWQpCisgICAgICAgICAgICAvLyBJRTggdGhyb3dzIGVycm9yIGhlcmUgYW5kIHdp
bGwgbm90IHNlZSBsYXRlciB0ZXN0cworICAgICAgICAgICAgaWYgKCBlbC5xdWVyeVNlbGVjdG9y
QWxsKCI6ZW5hYmxlZCIpLmxlbmd0aCAhPT0gMiApIHsKKyAgICAgICAgICAgICAgICByYnVnZ3lR
U0EucHVzaCggIjplbmFibGVkIiwgIjpkaXNhYmxlZCIgKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgLy8gU3VwcG9ydDogSUU5LTExKworICAgICAgICAgICAgLy8gSUUncyA6ZGlzYWJs
ZWQgc2VsZWN0b3IgZG9lcyBub3QgcGljayB1cCB0aGUgY2hpbGRyZW4gb2YgZGlzYWJsZWQgZmll
bGRzZXRzCisgICAgICAgICAgICBkb2NFbGVtLmFwcGVuZENoaWxkKCBlbCApLmRpc2FibGVkID0g
dHJ1ZTsKKyAgICAgICAgICAgIGlmICggZWwucXVlcnlTZWxlY3RvckFsbCgiOmRpc2FibGVkIiku
bGVuZ3RoICE9PSAyICkgeworICAgICAgICAgICAgICAgIHJidWdneVFTQS5wdXNoKCAiOmVuYWJs
ZWQiLCAiOmRpc2FibGVkIiApOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBPcGVy
YSAxMC0xMSBkb2VzIG5vdCB0aHJvdyBvbiBwb3N0LWNvbW1hIGludmFsaWQgcHNldWRvcworICAg
ICAgICAgICAgZWwucXVlcnlTZWxlY3RvckFsbCgiKiw6eCIpOworICAgICAgICAgICAgcmJ1Z2d5
UVNBLnB1c2goIiwuKjoiKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgaWYgKCAoc3VwcG9y
dC5tYXRjaGVzU2VsZWN0b3IgPSBybmF0aXZlLnRlc3QoIChtYXRjaGVzID0gZG9jRWxlbS5tYXRj
aGVzIHx8CisgICAgICAgIGRvY0VsZW0ud2Via2l0TWF0Y2hlc1NlbGVjdG9yIHx8CisgICAgICAg
IGRvY0VsZW0ubW96TWF0Y2hlc1NlbGVjdG9yIHx8CisgICAgICAgIGRvY0VsZW0ub01hdGNoZXNT
ZWxlY3RvciB8fAorICAgICAgICBkb2NFbGVtLm1zTWF0Y2hlc1NlbGVjdG9yKSApKSApIHsKKwor
ICAgICAgICBhc3NlcnQoZnVuY3Rpb24oIGVsICkgeworICAgICAgICAgICAgLy8gQ2hlY2sgdG8g
c2VlIGlmIGl0J3MgcG9zc2libGUgdG8gZG8gbWF0Y2hlc1NlbGVjdG9yCisgICAgICAgICAgICAv
LyBvbiBhIGRpc2Nvbm5lY3RlZCBub2RlIChJRSA5KQorICAgICAgICAgICAgc3VwcG9ydC5kaXNj
b25uZWN0ZWRNYXRjaCA9IG1hdGNoZXMuY2FsbCggZWwsICIqIiApOworCisgICAgICAgICAgICAv
LyBUaGlzIHNob3VsZCBmYWlsIHdpdGggYW4gZXhjZXB0aW9uCisgICAgICAgICAgICAvLyBHZWNr
byBkb2VzIG5vdCBlcnJvciwgcmV0dXJucyBmYWxzZSBpbnN0ZWFkCisgICAgICAgICAgICBtYXRj
aGVzLmNhbGwoIGVsLCAiW3MhPScnXTp4IiApOworICAgICAgICAgICAgcmJ1Z2d5TWF0Y2hlcy5w
dXNoKCAiIT0iLCBwc2V1ZG9zICk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIHJidWdneVFT
QSA9IHJidWdneVFTQS5sZW5ndGggJiYgbmV3IFJlZ0V4cCggcmJ1Z2d5UVNBLmpvaW4oInwiKSAp
OworICAgIHJidWdneU1hdGNoZXMgPSByYnVnZ3lNYXRjaGVzLmxlbmd0aCAmJiBuZXcgUmVnRXhw
KCByYnVnZ3lNYXRjaGVzLmpvaW4oInwiKSApOworCisgICAgLyogQ29udGFpbnMKKyAgICAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tICovCisgICAgaGFzQ29tcGFyZSA9IHJuYXRpdmUudGVzdCggZG9jRWxlbS5jb21w
YXJlRG9jdW1lbnRQb3NpdGlvbiApOworCisgICAgLy8gRWxlbWVudCBjb250YWlucyBhbm90aGVy
CisgICAgLy8gUHVycG9zZWZ1bGx5IHNlbGYtZXhjbHVzaXZlCisgICAgLy8gQXMgaW4sIGFuIGVs
ZW1lbnQgZG9lcyBub3QgY29udGFpbiBpdHNlbGYKKyAgICBjb250YWlucyA9IGhhc0NvbXBhcmUg
fHwgcm5hdGl2ZS50ZXN0KCBkb2NFbGVtLmNvbnRhaW5zICkgPworICAgICAgICBmdW5jdGlvbigg
YSwgYiApIHsKKyAgICAgICAgICAgIHZhciBhZG93biA9IGEubm9kZVR5cGUgPT09IDkgPyBhLmRv
Y3VtZW50RWxlbWVudCA6IGEsCisgICAgICAgICAgICAgICAgYnVwID0gYiAmJiBiLnBhcmVudE5v
ZGU7CisgICAgICAgICAgICByZXR1cm4gYSA9PT0gYnVwIHx8ICEhKCBidXAgJiYgYnVwLm5vZGVU
eXBlID09PSAxICYmICgKKyAgICAgICAgICAgICAgICBhZG93bi5jb250YWlucyA/CisgICAgICAg
ICAgICAgICAgICAgIGFkb3duLmNvbnRhaW5zKCBidXAgKSA6CisgICAgICAgICAgICAgICAgICAg
IGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24gJiYgYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbigg
YnVwICkgJiAxNgorICAgICAgICAgICAgKSk7CisgICAgICAgIH0gOgorICAgICAgICBmdW5jdGlv
biggYSwgYiApIHsKKyAgICAgICAgICAgIGlmICggYiApIHsKKyAgICAgICAgICAgICAgICB3aGls
ZSAoIChiID0gYi5wYXJlbnROb2RlKSApIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCBiID09
PSBhICkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIH07CisKKyAgICAvKiBTb3J0aW5nCisgICAgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSAqLworCisgICAgLy8gRG9jdW1lbnQgb3JkZXIgc29ydGluZworICAgIHNvcnRPcmRl
ciA9IGhhc0NvbXBhcmUgPworICAgIGZ1bmN0aW9uKCBhLCBiICkgeworCisgICAgICAgIC8vIEZs
YWcgZm9yIGR1cGxpY2F0ZSByZW1vdmFsCisgICAgICAgIGlmICggYSA9PT0gYiApIHsKKyAgICAg
ICAgICAgIGhhc0R1cGxpY2F0ZSA9IHRydWU7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgfQorCisgICAgICAgIC8vIFNvcnQgb24gbWV0aG9kIGV4aXN0ZW5jZSBpZiBvbmx5IG9uZSBp
bnB1dCBoYXMgY29tcGFyZURvY3VtZW50UG9zaXRpb24KKyAgICAgICAgdmFyIGNvbXBhcmUgPSAh
YS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiAtICFiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uOwor
ICAgICAgICBpZiAoIGNvbXBhcmUgKSB7CisgICAgICAgICAgICByZXR1cm4gY29tcGFyZTsKKyAg
ICAgICAgfQorCisgICAgICAgIC8vIENhbGN1bGF0ZSBwb3NpdGlvbiBpZiBib3RoIGlucHV0cyBi
ZWxvbmcgdG8gdGhlIHNhbWUgZG9jdW1lbnQKKyAgICAgICAgY29tcGFyZSA9ICggYS5vd25lckRv
Y3VtZW50IHx8IGEgKSA9PT0gKCBiLm93bmVyRG9jdW1lbnQgfHwgYiApID8KKyAgICAgICAgICAg
IGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oIGIgKSA6CisKKyAgICAgICAgICAgIC8vIE90aGVy
d2lzZSB3ZSBrbm93IHRoZXkgYXJlIGRpc2Nvbm5lY3RlZAorICAgICAgICAgICAgMTsKKworICAg
ICAgICAvLyBEaXNjb25uZWN0ZWQgbm9kZXMKKyAgICAgICAgaWYgKCBjb21wYXJlICYgMSB8fAor
ICAgICAgICAgICAgKCFzdXBwb3J0LnNvcnREZXRhY2hlZCAmJiBiLmNvbXBhcmVEb2N1bWVudFBv
c2l0aW9uKCBhICkgPT09IGNvbXBhcmUpICkgeworCisgICAgICAgICAgICAvLyBDaG9vc2UgdGhl
IGZpcnN0IGVsZW1lbnQgdGhhdCBpcyByZWxhdGVkIHRvIG91ciBwcmVmZXJyZWQgZG9jdW1lbnQK
KyAgICAgICAgICAgIGlmICggYSA9PT0gZG9jdW1lbnQgfHwgYS5vd25lckRvY3VtZW50ID09PSBw
cmVmZXJyZWREb2MgJiYgY29udGFpbnMocHJlZmVycmVkRG9jLCBhKSApIHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIGIgPT09IGRv
Y3VtZW50IHx8IGIub3duZXJEb2N1bWVudCA9PT0gcHJlZmVycmVkRG9jICYmIGNvbnRhaW5zKHBy
ZWZlcnJlZERvYywgYikgKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIC8vIE1haW50YWluIG9yaWdpbmFsIG9yZGVyCisgICAgICAgICAg
ICByZXR1cm4gc29ydElucHV0ID8KKyAgICAgICAgICAgICAgICAoIGluZGV4T2YoIHNvcnRJbnB1
dCwgYSApIC0gaW5kZXhPZiggc29ydElucHV0LCBiICkgKSA6CisgICAgICAgICAgICAgICAgMDsK
KyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBjb21wYXJlICYgNCA/IC0xIDogMTsKKyAgICB9
IDoKKyAgICBmdW5jdGlvbiggYSwgYiApIHsKKyAgICAgICAgLy8gRXhpdCBlYXJseSBpZiB0aGUg
bm9kZXMgYXJlIGlkZW50aWNhbAorICAgICAgICBpZiAoIGEgPT09IGIgKSB7CisgICAgICAgICAg
ICBoYXNEdXBsaWNhdGUgPSB0cnVlOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0K
KworICAgICAgICB2YXIgY3VyLAorICAgICAgICAgICAgaSA9IDAsCisgICAgICAgICAgICBhdXAg
PSBhLnBhcmVudE5vZGUsCisgICAgICAgICAgICBidXAgPSBiLnBhcmVudE5vZGUsCisgICAgICAg
ICAgICBhcCA9IFsgYSBdLAorICAgICAgICAgICAgYnAgPSBbIGIgXTsKKworICAgICAgICAvLyBQ
YXJlbnRsZXNzIG5vZGVzIGFyZSBlaXRoZXIgZG9jdW1lbnRzIG9yIGRpc2Nvbm5lY3RlZAorICAg
ICAgICBpZiAoICFhdXAgfHwgIWJ1cCApIHsKKyAgICAgICAgICAgIHJldHVybiBhID09PSBkb2N1
bWVudCA/IC0xIDoKKyAgICAgICAgICAgICAgICBiID09PSBkb2N1bWVudCA/IDEgOgorICAgICAg
ICAgICAgICAgIGF1cCA/IC0xIDoKKyAgICAgICAgICAgICAgICBidXAgPyAxIDoKKyAgICAgICAg
ICAgICAgICBzb3J0SW5wdXQgPworICAgICAgICAgICAgICAgICggaW5kZXhPZiggc29ydElucHV0
LCBhICkgLSBpbmRleE9mKCBzb3J0SW5wdXQsIGIgKSApIDoKKyAgICAgICAgICAgICAgICAwOwor
CisgICAgICAgIC8vIElmIHRoZSBub2RlcyBhcmUgc2libGluZ3MsIHdlIGNhbiBkbyBhIHF1aWNr
IGNoZWNrCisgICAgICAgIH0gZWxzZSBpZiAoIGF1cCA9PT0gYnVwICkgeworICAgICAgICAgICAg
cmV0dXJuIHNpYmxpbmdDaGVjayggYSwgYiApOworICAgICAgICB9CisKKyAgICAgICAgLy8gT3Ro
ZXJ3aXNlIHdlIG5lZWQgZnVsbCBsaXN0cyBvZiB0aGVpciBhbmNlc3RvcnMgZm9yIGNvbXBhcmlz
b24KKyAgICAgICAgY3VyID0gYTsKKyAgICAgICAgd2hpbGUgKCAoY3VyID0gY3VyLnBhcmVudE5v
ZGUpICkgeworICAgICAgICAgICAgYXAudW5zaGlmdCggY3VyICk7CisgICAgICAgIH0KKyAgICAg
ICAgY3VyID0gYjsKKyAgICAgICAgd2hpbGUgKCAoY3VyID0gY3VyLnBhcmVudE5vZGUpICkgewor
ICAgICAgICAgICAgYnAudW5zaGlmdCggY3VyICk7CisgICAgICAgIH0KKworICAgICAgICAvLyBX
YWxrIGRvd24gdGhlIHRyZWUgbG9va2luZyBmb3IgYSBkaXNjcmVwYW5jeQorICAgICAgICB3aGls
ZSAoIGFwW2ldID09PSBicFtpXSApIHsKKyAgICAgICAgICAgIGkrKzsKKyAgICAgICAgfQorCisg
ICAgICAgIHJldHVybiBpID8KKyAgICAgICAgICAgIC8vIERvIGEgc2libGluZyBjaGVjayBpZiB0
aGUgbm9kZXMgaGF2ZSBhIGNvbW1vbiBhbmNlc3RvcgorICAgICAgICAgICAgc2libGluZ0NoZWNr
KCBhcFtpXSwgYnBbaV0gKSA6CisKKyAgICAgICAgICAgIC8vIE90aGVyd2lzZSBub2RlcyBpbiBv
dXIgZG9jdW1lbnQgc29ydCBmaXJzdAorICAgICAgICAgICAgYXBbaV0gPT09IHByZWZlcnJlZERv
YyA/IC0xIDoKKyAgICAgICAgICAgIGJwW2ldID09PSBwcmVmZXJyZWREb2MgPyAxIDoKKyAgICAg
ICAgICAgIDA7CisgICAgfTsKKworICAgIHJldHVybiBkb2N1bWVudDsKK307CisKK1NpenpsZS5t
YXRjaGVzID0gZnVuY3Rpb24oIGV4cHIsIGVsZW1lbnRzICkgeworICAgIHJldHVybiBTaXp6bGUo
IGV4cHIsIG51bGwsIG51bGwsIGVsZW1lbnRzICk7Cit9OworCitTaXp6bGUubWF0Y2hlc1NlbGVj
dG9yID0gZnVuY3Rpb24oIGVsZW0sIGV4cHIgKSB7CisgICAgLy8gU2V0IGRvY3VtZW50IHZhcnMg
aWYgbmVlZGVkCisgICAgaWYgKCAoIGVsZW0ub3duZXJEb2N1bWVudCB8fCBlbGVtICkgIT09IGRv
Y3VtZW50ICkgeworICAgICAgICBzZXREb2N1bWVudCggZWxlbSApOworICAgIH0KKworICAgIC8v
IE1ha2Ugc3VyZSB0aGF0IGF0dHJpYnV0ZSBzZWxlY3RvcnMgYXJlIHF1b3RlZAorICAgIGV4cHIg
PSBleHByLnJlcGxhY2UoIHJhdHRyaWJ1dGVRdW90ZXMsICI9JyQxJ10iICk7CisKKyAgICBpZiAo
IHN1cHBvcnQubWF0Y2hlc1NlbGVjdG9yICYmIGRvY3VtZW50SXNIVE1MICYmCisgICAgICAgICFj
b21waWxlckNhY2hlWyBleHByICsgIiAiIF0gJiYKKyAgICAgICAgKCAhcmJ1Z2d5TWF0Y2hlcyB8
fCAhcmJ1Z2d5TWF0Y2hlcy50ZXN0KCBleHByICkgKSAmJgorICAgICAgICAoICFyYnVnZ3lRU0Eg
ICAgIHx8ICFyYnVnZ3lRU0EudGVzdCggZXhwciApICkgKSB7CisKKyAgICAgICAgdHJ5IHsKKyAg
ICAgICAgICAgIHZhciByZXQgPSBtYXRjaGVzLmNhbGwoIGVsZW0sIGV4cHIgKTsKKworICAgICAg
ICAgICAgLy8gSUUgOSdzIG1hdGNoZXNTZWxlY3RvciByZXR1cm5zIGZhbHNlIG9uIGRpc2Nvbm5l
Y3RlZCBub2RlcworICAgICAgICAgICAgaWYgKCByZXQgfHwgc3VwcG9ydC5kaXNjb25uZWN0ZWRN
YXRjaCB8fAorICAgICAgICAgICAgICAgICAgICAvLyBBcyB3ZWxsLCBkaXNjb25uZWN0ZWQgbm9k
ZXMgYXJlIHNhaWQgdG8gYmUgaW4gYSBkb2N1bWVudAorICAgICAgICAgICAgICAgICAgICAvLyBm
cmFnbWVudCBpbiBJRSA5CisgICAgICAgICAgICAgICAgICAgIGVsZW0uZG9jdW1lbnQgJiYgZWxl
bS5kb2N1bWVudC5ub2RlVHlwZSAhPT0gMTEgKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJl
dDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBjYXRjaCAoZSkge30KKyAgICB9CisKKyAgICBy
ZXR1cm4gU2l6emxlKCBleHByLCBkb2N1bWVudCwgbnVsbCwgWyBlbGVtIF0gKS5sZW5ndGggPiAw
OworfTsKKworU2l6emxlLmNvbnRhaW5zID0gZnVuY3Rpb24oIGNvbnRleHQsIGVsZW0gKSB7Cisg
ICAgLy8gU2V0IGRvY3VtZW50IHZhcnMgaWYgbmVlZGVkCisgICAgaWYgKCAoIGNvbnRleHQub3du
ZXJEb2N1bWVudCB8fCBjb250ZXh0ICkgIT09IGRvY3VtZW50ICkgeworICAgICAgICBzZXREb2N1
bWVudCggY29udGV4dCApOworICAgIH0KKyAgICByZXR1cm4gY29udGFpbnMoIGNvbnRleHQsIGVs
ZW0gKTsKK307CisKK1NpenpsZS5hdHRyID0gZnVuY3Rpb24oIGVsZW0sIG5hbWUgKSB7CisgICAg
Ly8gU2V0IGRvY3VtZW50IHZhcnMgaWYgbmVlZGVkCisgICAgaWYgKCAoIGVsZW0ub3duZXJEb2N1
bWVudCB8fCBlbGVtICkgIT09IGRvY3VtZW50ICkgeworICAgICAgICBzZXREb2N1bWVudCggZWxl
bSApOworICAgIH0KKworICAgIHZhciBmbiA9IEV4cHIuYXR0ckhhbmRsZVsgbmFtZS50b0xvd2Vy
Q2FzZSgpIF0sCisgICAgICAgIC8vIERvbid0IGdldCBmb29sZWQgYnkgT2JqZWN0LnByb3RvdHlw
ZSBwcm9wZXJ0aWVzIChqUXVlcnkgIzEzODA3KQorICAgICAgICB2YWwgPSBmbiAmJiBoYXNPd24u
Y2FsbCggRXhwci5hdHRySGFuZGxlLCBuYW1lLnRvTG93ZXJDYXNlKCkgKSA/CisgICAgICAgICAg
ICBmbiggZWxlbSwgbmFtZSwgIWRvY3VtZW50SXNIVE1MICkgOgorICAgICAgICAgICAgdW5kZWZp
bmVkOworCisgICAgcmV0dXJuIHZhbCAhPT0gdW5kZWZpbmVkID8KKyAgICAgICAgdmFsIDoKKyAg
ICAgICAgc3VwcG9ydC5hdHRyaWJ1dGVzIHx8ICFkb2N1bWVudElzSFRNTCA/CisgICAgICAgICAg
ICBlbGVtLmdldEF0dHJpYnV0ZSggbmFtZSApIDoKKyAgICAgICAgICAgICh2YWwgPSBlbGVtLmdl
dEF0dHJpYnV0ZU5vZGUobmFtZSkpICYmIHZhbC5zcGVjaWZpZWQgPworICAgICAgICAgICAgICAg
IHZhbC52YWx1ZSA6CisgICAgICAgICAgICAgICAgbnVsbDsKK307CisKK1NpenpsZS5lc2NhcGUg
PSBmdW5jdGlvbiggc2VsICkgeworICAgIHJldHVybiAoc2VsICsgIiIpLnJlcGxhY2UoIHJjc3Nl
c2NhcGUsIGZjc3Nlc2NhcGUgKTsKK307CisKK1NpenpsZS5lcnJvciA9IGZ1bmN0aW9uKCBtc2cg
KSB7CisgICAgdGhyb3cgbmV3IEVycm9yKCAiU3ludGF4IGVycm9yLCB1bnJlY29nbml6ZWQgZXhw
cmVzc2lvbjogIiArIG1zZyApOworfTsKKworLyoqCisgKiBEb2N1bWVudCBzb3J0aW5nIGFuZCBy
ZW1vdmluZyBkdXBsaWNhdGVzCisgKiBAcGFyYW0ge0FycmF5TGlrZX0gcmVzdWx0cworICovCitT
aXp6bGUudW5pcXVlU29ydCA9IGZ1bmN0aW9uKCByZXN1bHRzICkgeworICAgIHZhciBlbGVtLAor
ICAgICAgICBkdXBsaWNhdGVzID0gW10sCisgICAgICAgIGogPSAwLAorICAgICAgICBpID0gMDsK
KworICAgIC8vIFVubGVzcyB3ZSAqa25vdyogd2UgY2FuIGRldGVjdCBkdXBsaWNhdGVzLCBhc3N1
bWUgdGhlaXIgcHJlc2VuY2UKKyAgICBoYXNEdXBsaWNhdGUgPSAhc3VwcG9ydC5kZXRlY3REdXBs
aWNhdGVzOworICAgIHNvcnRJbnB1dCA9ICFzdXBwb3J0LnNvcnRTdGFibGUgJiYgcmVzdWx0cy5z
bGljZSggMCApOworICAgIHJlc3VsdHMuc29ydCggc29ydE9yZGVyICk7CisKKyAgICBpZiAoIGhh
c0R1cGxpY2F0ZSApIHsKKyAgICAgICAgd2hpbGUgKCAoZWxlbSA9IHJlc3VsdHNbaSsrXSkgKSB7
CisgICAgICAgICAgICBpZiAoIGVsZW0gPT09IHJlc3VsdHNbIGkgXSApIHsKKyAgICAgICAgICAg
ICAgICBqID0gZHVwbGljYXRlcy5wdXNoKCBpICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgd2hpbGUgKCBqLS0gKSB7CisgICAgICAgICAgICByZXN1bHRzLnNwbGljZSggZHVw
bGljYXRlc1sgaiBdLCAxICk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBDbGVhciBpbnB1
dCBhZnRlciBzb3J0aW5nIHRvIHJlbGVhc2Ugb2JqZWN0cworICAgIC8vIFNlZSBodHRwczovL2dp
dGh1Yi5jb20vanF1ZXJ5L3NpenpsZS9wdWxsLzIyNQorICAgIHNvcnRJbnB1dCA9IG51bGw7CisK
KyAgICByZXR1cm4gcmVzdWx0czsKK307CisKKy8qKgorICogVXRpbGl0eSBmdW5jdGlvbiBmb3Ig
cmV0cmlldmluZyB0aGUgdGV4dCB2YWx1ZSBvZiBhbiBhcnJheSBvZiBET00gbm9kZXMKKyAqIEBw
YXJhbSB7QXJyYXl8RWxlbWVudH0gZWxlbQorICovCitnZXRUZXh0ID0gU2l6emxlLmdldFRleHQg
PSBmdW5jdGlvbiggZWxlbSApIHsKKyAgICB2YXIgbm9kZSwKKyAgICAgICAgcmV0ID0gIiIsCisg
ICAgICAgIGkgPSAwLAorICAgICAgICBub2RlVHlwZSA9IGVsZW0ubm9kZVR5cGU7CisKKyAgICBp
ZiAoICFub2RlVHlwZSApIHsKKyAgICAgICAgLy8gSWYgbm8gbm9kZVR5cGUsIHRoaXMgaXMgZXhw
ZWN0ZWQgdG8gYmUgYW4gYXJyYXkKKyAgICAgICAgd2hpbGUgKCAobm9kZSA9IGVsZW1baSsrXSkg
KSB7CisgICAgICAgICAgICAvLyBEbyBub3QgdHJhdmVyc2UgY29tbWVudCBub2RlcworICAgICAg
ICAgICAgcmV0ICs9IGdldFRleHQoIG5vZGUgKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAo
IG5vZGVUeXBlID09PSAxIHx8IG5vZGVUeXBlID09PSA5IHx8IG5vZGVUeXBlID09PSAxMSApIHsK
KyAgICAgICAgLy8gVXNlIHRleHRDb250ZW50IGZvciBlbGVtZW50cworICAgICAgICAvLyBpbm5l
clRleHQgdXNhZ2UgcmVtb3ZlZCBmb3IgY29uc2lzdGVuY3kgb2YgbmV3IGxpbmVzIChqUXVlcnkg
IzExMTUzKQorICAgICAgICBpZiAoIHR5cGVvZiBlbGVtLnRleHRDb250ZW50ID09PSAic3RyaW5n
IiApIHsKKyAgICAgICAgICAgIHJldHVybiBlbGVtLnRleHRDb250ZW50OworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgLy8gVHJhdmVyc2UgaXRzIGNoaWxkcmVuCisgICAgICAgICAgICBm
b3IgKCBlbGVtID0gZWxlbS5maXJzdENoaWxkOyBlbGVtOyBlbGVtID0gZWxlbS5uZXh0U2libGlu
ZyApIHsKKyAgICAgICAgICAgICAgICByZXQgKz0gZ2V0VGV4dCggZWxlbSApOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfSBlbHNlIGlmICggbm9kZVR5cGUgPT09IDMgfHwgbm9kZVR5
cGUgPT09IDQgKSB7CisgICAgICAgIHJldHVybiBlbGVtLm5vZGVWYWx1ZTsKKyAgICB9CisgICAg
Ly8gRG8gbm90IGluY2x1ZGUgY29tbWVudCBvciBwcm9jZXNzaW5nIGluc3RydWN0aW9uIG5vZGVz
CisKKyAgICByZXR1cm4gcmV0OworfTsKKworRXhwciA9IFNpenpsZS5zZWxlY3RvcnMgPSB7CisK
KyAgICAvLyBDYW4gYmUgYWRqdXN0ZWQgYnkgdGhlIHVzZXIKKyAgICBjYWNoZUxlbmd0aDogNTAs
CisKKyAgICBjcmVhdGVQc2V1ZG86IG1hcmtGdW5jdGlvbiwKKworICAgIG1hdGNoOiBtYXRjaEV4
cHIsCisKKyAgICBhdHRySGFuZGxlOiB7fSwKKworICAgIGZpbmQ6IHt9LAorCisgICAgcmVsYXRp
dmU6IHsKKyAgICAgICAgIj4iOiB7IGRpcjogInBhcmVudE5vZGUiLCBmaXJzdDogdHJ1ZSB9LAor
ICAgICAgICAiICI6IHsgZGlyOiAicGFyZW50Tm9kZSIgfSwKKyAgICAgICAgIisiOiB7IGRpcjog
InByZXZpb3VzU2libGluZyIsIGZpcnN0OiB0cnVlIH0sCisgICAgICAgICJ+IjogeyBkaXI6ICJw
cmV2aW91c1NpYmxpbmciIH0KKyAgICB9LAorCisgICAgcHJlRmlsdGVyOiB7CisgICAgICAgICJB
VFRSIjogZnVuY3Rpb24oIG1hdGNoICkgeworICAgICAgICAgICAgbWF0Y2hbMV0gPSBtYXRjaFsx
XS5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApOworCisgICAgICAgICAgICAvLyBNb3Zl
IHRoZSBnaXZlbiB2YWx1ZSB0byBtYXRjaFszXSB3aGV0aGVyIHF1b3RlZCBvciB1bnF1b3RlZAor
ICAgICAgICAgICAgbWF0Y2hbM10gPSAoIG1hdGNoWzNdIHx8IG1hdGNoWzRdIHx8IG1hdGNoWzVd
IHx8ICIiICkucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKTsKKworICAgICAgICAgICAg
aWYgKCBtYXRjaFsyXSA9PT0gIn49IiApIHsKKyAgICAgICAgICAgICAgICBtYXRjaFszXSA9ICIg
IiArIG1hdGNoWzNdICsgIiAiOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4g
bWF0Y2guc2xpY2UoIDAsIDQgKTsKKyAgICAgICAgfSwKKworICAgICAgICAiQ0hJTEQiOiBmdW5j
dGlvbiggbWF0Y2ggKSB7CisgICAgICAgICAgICAvKiBtYXRjaGVzIGZyb20gbWF0Y2hFeHByWyJD
SElMRCJdCisgICAgICAgICAgICAgICAgMSB0eXBlIChvbmx5fG50aHwuLi4pCisgICAgICAgICAg
ICAgICAgMiB3aGF0IChjaGlsZHxvZi10eXBlKQorICAgICAgICAgICAgICAgIDMgYXJndW1lbnQg
KGV2ZW58b2RkfFxkKnxcZCpuKFsrLV1cZCspP3wuLi4pCisgICAgICAgICAgICAgICAgNCB4bi1j
b21wb25lbnQgb2YgeG4reSBhcmd1bWVudCAoWystXT9cZCpufCkKKyAgICAgICAgICAgICAgICA1
IHNpZ24gb2YgeG4tY29tcG9uZW50CisgICAgICAgICAgICAgICAgNiB4IG9mIHhuLWNvbXBvbmVu
dAorICAgICAgICAgICAgICAgIDcgc2lnbiBvZiB5LWNvbXBvbmVudAorICAgICAgICAgICAgICAg
IDggeSBvZiB5LWNvbXBvbmVudAorICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIG1hdGNoWzFd
ID0gbWF0Y2hbMV0udG9Mb3dlckNhc2UoKTsKKworICAgICAgICAgICAgaWYgKCBtYXRjaFsxXS5z
bGljZSggMCwgMyApID09PSAibnRoIiApIHsKKyAgICAgICAgICAgICAgICAvLyBudGgtKiByZXF1
aXJlcyBhcmd1bWVudAorICAgICAgICAgICAgICAgIGlmICggIW1hdGNoWzNdICkgeworICAgICAg
ICAgICAgICAgICAgICBTaXp6bGUuZXJyb3IoIG1hdGNoWzBdICk7CisgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgLy8gbnVtZXJpYyB4IGFuZCB5IHBhcmFtZXRlcnMgZm9yIEV4
cHIuZmlsdGVyLkNISUxECisgICAgICAgICAgICAgICAgLy8gcmVtZW1iZXIgdGhhdCBmYWxzZS90
cnVlIGNhc3QgcmVzcGVjdGl2ZWx5IHRvIDAvMQorICAgICAgICAgICAgICAgIG1hdGNoWzRdID0g
KyggbWF0Y2hbNF0gPyBtYXRjaFs1XSArIChtYXRjaFs2XSB8fCAxKSA6IDIgKiAoIG1hdGNoWzNd
ID09PSAiZXZlbiIgfHwgbWF0Y2hbM10gPT09ICJvZGQiICkgKTsKKyAgICAgICAgICAgICAgICBt
YXRjaFs1XSA9ICsoICggbWF0Y2hbN10gKyBtYXRjaFs4XSApIHx8IG1hdGNoWzNdID09PSAib2Rk
IiApOworCisgICAgICAgICAgICAvLyBvdGhlciB0eXBlcyBwcm9oaWJpdCBhcmd1bWVudHMKKyAg
ICAgICAgICAgIH0gZWxzZSBpZiAoIG1hdGNoWzNdICkgeworICAgICAgICAgICAgICAgIFNpenps
ZS5lcnJvciggbWF0Y2hbMF0gKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJu
IG1hdGNoOworICAgICAgICB9LAorCisgICAgICAgICJQU0VVRE8iOiBmdW5jdGlvbiggbWF0Y2gg
KSB7CisgICAgICAgICAgICB2YXIgZXhjZXNzLAorICAgICAgICAgICAgICAgIHVucXVvdGVkID0g
IW1hdGNoWzZdICYmIG1hdGNoWzJdOworCisgICAgICAgICAgICBpZiAoIG1hdGNoRXhwclsiQ0hJ
TEQiXS50ZXN0KCBtYXRjaFswXSApICkgeworICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBBY2NlcHQgcXVvdGVkIGFyZ3VtZW50cyBh
cy1pcworICAgICAgICAgICAgaWYgKCBtYXRjaFszXSApIHsKKyAgICAgICAgICAgICAgICBtYXRj
aFsyXSA9IG1hdGNoWzRdIHx8IG1hdGNoWzVdIHx8ICIiOworCisgICAgICAgICAgICAvLyBTdHJp
cCBleGNlc3MgY2hhcmFjdGVycyBmcm9tIHVucXVvdGVkIGFyZ3VtZW50cworICAgICAgICAgICAg
fSBlbHNlIGlmICggdW5xdW90ZWQgJiYgcnBzZXVkby50ZXN0KCB1bnF1b3RlZCApICYmCisgICAg
ICAgICAgICAgICAgLy8gR2V0IGV4Y2VzcyBmcm9tIHRva2VuaXplIChyZWN1cnNpdmVseSkKKyAg
ICAgICAgICAgICAgICAoZXhjZXNzID0gdG9rZW5pemUoIHVucXVvdGVkLCB0cnVlICkpICYmCisg
ICAgICAgICAgICAgICAgLy8gYWR2YW5jZSB0byB0aGUgbmV4dCBjbG9zaW5nIHBhcmVudGhlc2lz
CisgICAgICAgICAgICAgICAgKGV4Y2VzcyA9IHVucXVvdGVkLmluZGV4T2YoICIpIiwgdW5xdW90
ZWQubGVuZ3RoIC0gZXhjZXNzICkgLSB1bnF1b3RlZC5sZW5ndGgpICkgeworCisgICAgICAgICAg
ICAgICAgLy8gZXhjZXNzIGlzIGEgbmVnYXRpdmUgaW5kZXgKKyAgICAgICAgICAgICAgICBtYXRj
aFswXSA9IG1hdGNoWzBdLnNsaWNlKCAwLCBleGNlc3MgKTsKKyAgICAgICAgICAgICAgICBtYXRj
aFsyXSA9IHVucXVvdGVkLnNsaWNlKCAwLCBleGNlc3MgKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgLy8gUmV0dXJuIG9ubHkgY2FwdHVyZXMgbmVlZGVkIGJ5IHRoZSBwc2V1ZG8gZmls
dGVyIG1ldGhvZCAodHlwZSBhbmQgYXJndW1lbnQpCisgICAgICAgICAgICByZXR1cm4gbWF0Y2gu
c2xpY2UoIDAsIDMgKTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICBmaWx0ZXI6IHsKKworICAg
ICAgICAiVEFHIjogZnVuY3Rpb24oIG5vZGVOYW1lU2VsZWN0b3IgKSB7CisgICAgICAgICAgICB2
YXIgbm9kZU5hbWUgPSBub2RlTmFtZVNlbGVjdG9yLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNj
YXBlICkudG9Mb3dlckNhc2UoKTsKKyAgICAgICAgICAgIHJldHVybiBub2RlTmFtZVNlbGVjdG9y
ID09PSAiKiIgPworICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyByZXR1cm4gdHJ1ZTsgfSA6
CisgICAgICAgICAgICAgICAgZnVuY3Rpb24oIGVsZW0gKSB7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBlbGVtLm5vZGVOYW1lICYmIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0g
bm9kZU5hbWU7CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgfSwKKworICAgICAgICAiQ0xB
U1MiOiBmdW5jdGlvbiggY2xhc3NOYW1lICkgeworICAgICAgICAgICAgdmFyIHBhdHRlcm4gPSBj
bGFzc0NhY2hlWyBjbGFzc05hbWUgKyAiICIgXTsKKworICAgICAgICAgICAgcmV0dXJuIHBhdHRl
cm4gfHwKKyAgICAgICAgICAgICAgICAocGF0dGVybiA9IG5ldyBSZWdFeHAoICIoXnwiICsgd2hp
dGVzcGFjZSArICIpIiArIGNsYXNzTmFtZSArICIoIiArIHdoaXRlc3BhY2UgKyAifCQpIiApKSAm
JgorICAgICAgICAgICAgICAgIGNsYXNzQ2FjaGUoIGNsYXNzTmFtZSwgZnVuY3Rpb24oIGVsZW0g
KSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXR0ZXJuLnRlc3QoIHR5cGVvZiBlbGVt
LmNsYXNzTmFtZSA9PT0gInN0cmluZyIgJiYgZWxlbS5jbGFzc05hbWUgfHwgdHlwZW9mIGVsZW0u
Z2V0QXR0cmlidXRlICE9PSAidW5kZWZpbmVkIiAmJiBlbGVtLmdldEF0dHJpYnV0ZSgiY2xhc3Mi
KSB8fCAiIiApOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICB9LAorCisgICAgICAgICJB
VFRSIjogZnVuY3Rpb24oIG5hbWUsIG9wZXJhdG9yLCBjaGVjayApIHsKKyAgICAgICAgICAgIHJl
dHVybiBmdW5jdGlvbiggZWxlbSApIHsKKyAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gU2l6
emxlLmF0dHIoIGVsZW0sIG5hbWUgKTsKKworICAgICAgICAgICAgICAgIGlmICggcmVzdWx0ID09
IG51bGwgKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBvcGVyYXRvciA9PT0gIiE9IjsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKCAhb3BlcmF0b3IgKSB7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgIHJlc3VsdCArPSAiIjsKKworICAgICAgICAgICAgICAgIHJldHVybiBvcGVy
YXRvciA9PT0gIj0iID8gcmVzdWx0ID09PSBjaGVjayA6CisgICAgICAgICAgICAgICAgICAgIG9w
ZXJhdG9yID09PSAiIT0iID8gcmVzdWx0ICE9PSBjaGVjayA6CisgICAgICAgICAgICAgICAgICAg
IG9wZXJhdG9yID09PSAiXj0iID8gY2hlY2sgJiYgcmVzdWx0LmluZGV4T2YoIGNoZWNrICkgPT09
IDAgOgorICAgICAgICAgICAgICAgICAgICBvcGVyYXRvciA9PT0gIio9IiA/IGNoZWNrICYmIHJl
c3VsdC5pbmRleE9mKCBjaGVjayApID4gLTEgOgorICAgICAgICAgICAgICAgICAgICBvcGVyYXRv
ciA9PT0gIiQ9IiA/IGNoZWNrICYmIHJlc3VsdC5zbGljZSggLWNoZWNrLmxlbmd0aCApID09PSBj
aGVjayA6CisgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yID09PSAifj0iID8gKCAiICIgKyBy
ZXN1bHQucmVwbGFjZSggcndoaXRlc3BhY2UsICIgIiApICsgIiAiICkuaW5kZXhPZiggY2hlY2sg
KSA+IC0xIDoKKyAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3IgPT09ICJ8PSIgPyByZXN1bHQg
PT09IGNoZWNrIHx8IHJlc3VsdC5zbGljZSggMCwgY2hlY2subGVuZ3RoICsgMSApID09PSBjaGVj
ayArICItIiA6CisgICAgICAgICAgICAgICAgICAgIGZhbHNlOworICAgICAgICAgICAgfTsKKyAg
ICAgICAgfSwKKworICAgICAgICAiQ0hJTEQiOiBmdW5jdGlvbiggdHlwZSwgd2hhdCwgYXJndW1l
bnQsIGZpcnN0LCBsYXN0ICkgeworICAgICAgICAgICAgdmFyIHNpbXBsZSA9IHR5cGUuc2xpY2Uo
IDAsIDMgKSAhPT0gIm50aCIsCisgICAgICAgICAgICAgICAgZm9yd2FyZCA9IHR5cGUuc2xpY2Uo
IC00ICkgIT09ICJsYXN0IiwKKyAgICAgICAgICAgICAgICBvZlR5cGUgPSB3aGF0ID09PSAib2Yt
dHlwZSI7CisKKyAgICAgICAgICAgIHJldHVybiBmaXJzdCA9PT0gMSAmJiBsYXN0ID09PSAwID8K
KworICAgICAgICAgICAgICAgIC8vIFNob3J0Y3V0IGZvciA6bnRoLSoobikKKyAgICAgICAgICAg
ICAgICBmdW5jdGlvbiggZWxlbSApIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEhZWxl
bS5wYXJlbnROb2RlOworICAgICAgICAgICAgICAgIH0gOgorCisgICAgICAgICAgICAgICAgZnVu
Y3Rpb24oIGVsZW0sIGNvbnRleHQsIHhtbCApIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGNh
Y2hlLCB1bmlxdWVDYWNoZSwgb3V0ZXJDYWNoZSwgbm9kZSwgbm9kZUluZGV4LCBzdGFydCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGRpciA9IHNpbXBsZSAhPT0gZm9yd2FyZCA/ICJuZXh0U2li
bGluZyIgOiAicHJldmlvdXNTaWJsaW5nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVu
dCA9IGVsZW0ucGFyZW50Tm9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSBvZlR5
cGUgJiYgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgdXNlQ2FjaGUgPSAheG1sICYmICFvZlR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICBk
aWZmID0gZmFsc2U7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKCBwYXJlbnQgKSB7CisKKyAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIDooZmlyc3R8bGFzdHxvbmx5KS0oY2hpbGR8b2YtdHlw
ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICggc2ltcGxlICkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHdoaWxlICggZGlyICkgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBub2RlID0gZWxlbTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hp
bGUgKCAobm9kZSA9IG5vZGVbIGRpciBdKSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICggb2ZUeXBlID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IG5hbWUgOgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUubm9kZVR5cGUgPT09IDEgKSB7CisK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmV2ZXJz
ZSBkaXJlY3Rpb24gZm9yIDpvbmx5LSogKGlmIHdlIGhhdmVuJ3QgeWV0IGRvbmUgc28pCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0ID0gZGlyID0gdHlwZSA9PT0gIm9ubHki
ICYmICFzdGFydCAmJiAibmV4dFNpYmxpbmciOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQgPSBbIGZvcndh
cmQgPyBwYXJlbnQuZmlyc3RDaGlsZCA6IHBhcmVudC5sYXN0Q2hpbGQgXTsKKworICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gbm9uLXhtbCA6bnRoLWNoaWxkKC4uLikgc3RvcmVzIGNhY2hlIGRh
dGEgb24gYHBhcmVudGAKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICggZm9yd2FyZCAmJiB1
c2VDYWNoZSApIHsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNlZWsgYGVsZW1g
IGZyb20gYSBwcmV2aW91c2x5LWNhY2hlZCBpbmRleAorCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gLi4uaW4gYSBnemlwLWZyaWVuZGx5IHdheQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG5vZGUgPSBwYXJlbnQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ZXJD
YWNoZSA9IG5vZGVbIGV4cGFuZG8gXSB8fCAobm9kZVsgZXhwYW5kbyBdID0ge30pOworCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3VwcG9ydDogSUUgPDkgb25seQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIERlZmVuZCBhZ2FpbnN0IGNsb25lZCBhdHRyb3BlcnRpZXMg
KGpRdWVyeSBnaC0xNzA5KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXF1ZUNhY2hl
ID0gb3V0ZXJDYWNoZVsgbm9kZS51bmlxdWVJRCBdIHx8CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChvdXRlckNhY2hlWyBub2RlLnVuaXF1ZUlEIF0gPSB7fSk7CisKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjYWNoZSA9IHVuaXF1ZUNhY2hlWyB0eXBlIF0gfHwgW107Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZUluZGV4ID0gY2FjaGVbIDAgXSA9PT0gZGly
cnVucyAmJiBjYWNoZVsgMSBdOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZmYgPSBu
b2RlSW5kZXggJiYgY2FjaGVbIDIgXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2Rl
ID0gbm9kZUluZGV4ICYmIHBhcmVudC5jaGlsZE5vZGVzWyBub2RlSW5kZXggXTsKKworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICggKG5vZGUgPSArK25vZGVJbmRleCAmJiBub2Rl
ICYmIG5vZGVbIGRpciBdIHx8CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
RmFsbGJhY2sgdG8gc2Vla2luZyBgZWxlbWAgZnJvbSB0aGUgc3RhcnQKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKGRpZmYgPSBub2RlSW5kZXggPSAwKSB8fCBzdGFydC5wb3AoKSkg
KSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2hlbiBmb3VuZCwgY2Fj
aGUgaW5kZXhlcyBvbiBgcGFyZW50YCBhbmQgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCBub2RlLm5vZGVUeXBlID09PSAxICYmICsrZGlmZiAmJiBub2RlID09PSBl
bGVtICkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pcXVlQ2FjaGVb
IHR5cGUgXSA9IFsgZGlycnVucywgbm9kZUluZGV4LCBkaWZmIF07CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBVc2UgcHJldmlv
dXNseS1jYWNoZWQgZWxlbWVudCBpbmRleCBpZiBhdmFpbGFibGUKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoIHVzZUNhY2hlICkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyAuLi5pbiBhIGd6aXAtZnJpZW5kbHkgd2F5CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG5vZGUgPSBlbGVtOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBv
dXRlckNhY2hlID0gbm9kZVsgZXhwYW5kbyBdIHx8IChub2RlWyBleHBhbmRvIF0gPSB7fSk7CisK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3VwcG9ydDogSUUgPDkgb25seQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEZWZlbmQgYWdhaW5zdCBjbG9uZWQg
YXR0cm9wZXJ0aWVzIChqUXVlcnkgZ2gtMTcwOSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5pcXVlQ2FjaGUgPSBvdXRlckNhY2hlWyBub2RlLnVuaXF1ZUlEIF0gfHwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvdXRlckNhY2hlWyBub2RlLnVuaXF1ZUlE
IF0gPSB7fSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGUgPSB1bmlx
dWVDYWNoZVsgdHlwZSBdIHx8IFtdOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
b2RlSW5kZXggPSBjYWNoZVsgMCBdID09PSBkaXJydW5zICYmIGNhY2hlWyAxIF07CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRpZmYgPSBub2RlSW5kZXg7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8geG1sIDpu
dGgtY2hpbGQoLi4uKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9yIDpudGgtbGFz
dC1jaGlsZCguLi4pIG9yIDpudGgoLWxhc3QpPy1vZi10eXBlKC4uLikKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoIGRpZmYgPT09IGZhbHNlICkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBVc2UgdGhlIHNhbWUgbG9vcCBhcyBhYm92ZSB0byBzZWVrIGBlbGVt
YCBmcm9tIHRoZSBzdGFydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAo
IChub2RlID0gKytub2RlSW5kZXggJiYgbm9kZSAmJiBub2RlWyBkaXIgXSB8fAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRpZmYgPSBub2RlSW5kZXggPSAwKSB8fCBzdGFy
dC5wb3AoKSkgKSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgg
KCBvZlR5cGUgPworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUu
bm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gbmFtZSA6CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbm9kZS5ub2RlVHlwZSA9PT0gMSApICYmCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKytkaWZmICkgeworCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2FjaGUgdGhlIGluZGV4IG9mIGVhY2ggZW5jb3Vu
dGVyZWQgZWxlbWVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICggdXNlQ2FjaGUgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG91dGVyQ2FjaGUgPSBub2RlWyBleHBhbmRvIF0gfHwgKG5vZGVbIGV4cGFuZG8gXSA9IHt9
KTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTdXBw
b3J0OiBJRSA8OSBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIERlZmVuZCBhZ2FpbnN0IGNsb25lZCBhdHRyb3BlcnRpZXMgKGpRdWVyeSBnaC0xNzA5
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlxdWVDYWNo
ZSA9IG91dGVyQ2FjaGVbIG5vZGUudW5pcXVlSUQgXSB8fAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKG91dGVyQ2FjaGVbIG5vZGUudW5pcXVlSUQgXSA9
IHt9KTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlx
dWVDYWNoZVsgdHlwZSBdID0gWyBkaXJydW5zLCBkaWZmIF07CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCBub2RlID09PSBlbGVtICkgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAg
IC8vIEluY29ycG9yYXRlIHRoZSBvZmZzZXQsIHRoZW4gY2hlY2sgYWdhaW5zdCBjeWNsZSBzaXpl
CisgICAgICAgICAgICAgICAgICAgICAgICBkaWZmIC09IGxhc3Q7CisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZGlmZiA9PT0gZmlyc3QgfHwgKCBkaWZmICUgZmlyc3QgPT09IDAgJiYg
ZGlmZiAvIGZpcnN0ID49IDAgKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIH07CisgICAgICAgIH0sCisKKyAgICAgICAgIlBTRVVETyI6IGZ1bmN0aW9uKCBwc2V1ZG8s
IGFyZ3VtZW50ICkgeworICAgICAgICAgICAgLy8gcHNldWRvLWNsYXNzIG5hbWVzIGFyZSBjYXNl
LWluc2Vuc2l0aXZlCisgICAgICAgICAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9zZWxlY3Rv
cnMvI3BzZXVkby1jbGFzc2VzCisgICAgICAgICAgICAvLyBQcmlvcml0aXplIGJ5IGNhc2Ugc2Vu
c2l0aXZpdHkgaW4gY2FzZSBjdXN0b20gcHNldWRvcyBhcmUgYWRkZWQgd2l0aCB1cHBlcmNhc2Ug
bGV0dGVycworICAgICAgICAgICAgLy8gUmVtZW1iZXIgdGhhdCBzZXRGaWx0ZXJzIGluaGVyaXRz
IGZyb20gcHNldWRvcworICAgICAgICAgICAgdmFyIGFyZ3MsCisgICAgICAgICAgICAgICAgZm4g
PSBFeHByLnBzZXVkb3NbIHBzZXVkbyBdIHx8IEV4cHIuc2V0RmlsdGVyc1sgcHNldWRvLnRvTG93
ZXJDYXNlKCkgXSB8fAorICAgICAgICAgICAgICAgICAgICBTaXp6bGUuZXJyb3IoICJ1bnN1cHBv
cnRlZCBwc2V1ZG86ICIgKyBwc2V1ZG8gKTsKKworICAgICAgICAgICAgLy8gVGhlIHVzZXIgbWF5
IHVzZSBjcmVhdGVQc2V1ZG8gdG8gaW5kaWNhdGUgdGhhdAorICAgICAgICAgICAgLy8gYXJndW1l
bnRzIGFyZSBuZWVkZWQgdG8gY3JlYXRlIHRoZSBmaWx0ZXIgZnVuY3Rpb24KKyAgICAgICAgICAg
IC8vIGp1c3QgYXMgU2l6emxlIGRvZXMKKyAgICAgICAgICAgIGlmICggZm5bIGV4cGFuZG8gXSAp
IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZm4oIGFyZ3VtZW50ICk7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIC8vIEJ1dCBtYWludGFpbiBzdXBwb3J0IGZvciBvbGQgc2lnbmF0dXJl
cworICAgICAgICAgICAgaWYgKCBmbi5sZW5ndGggPiAxICkgeworICAgICAgICAgICAgICAgIGFy
Z3MgPSBbIHBzZXVkbywgcHNldWRvLCAiIiwgYXJndW1lbnQgXTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gRXhwci5zZXRGaWx0ZXJzLmhhc093blByb3BlcnR5KCBwc2V1ZG8udG9Mb3dlckNhc2Uo
KSApID8KKyAgICAgICAgICAgICAgICAgICAgbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCBzZWVkLCBt
YXRjaGVzICkgeworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGlkeCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtYXRjaGVkID0gZm4oIHNlZWQsIGFyZ3VtZW50ICksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaSA9IG1hdGNoZWQubGVuZ3RoOworICAgICAgICAgICAgICAg
ICAgICAgICAgd2hpbGUgKCBpLS0gKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWR4
ID0gaW5kZXhPZiggc2VlZCwgbWF0Y2hlZFtpXSApOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNlZWRbIGlkeCBdID0gISggbWF0Y2hlc1sgaWR4IF0gPSBtYXRjaGVkW2ldICk7CisgICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0pIDoKKyAgICAgICAg
ICAgICAgICAgICAgZnVuY3Rpb24oIGVsZW0gKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZm4oIGVsZW0sIDAsIGFyZ3MgKTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIGZuOworICAgICAgICB9CisgICAgfSwKKwor
ICAgIHBzZXVkb3M6IHsKKyAgICAgICAgLy8gUG90ZW50aWFsbHkgY29tcGxleCBwc2V1ZG9zCisg
ICAgICAgICJub3QiOiBtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIHNlbGVjdG9yICkgeworICAgICAg
ICAgICAgLy8gVHJpbSB0aGUgc2VsZWN0b3IgcGFzc2VkIHRvIGNvbXBpbGUKKyAgICAgICAgICAg
IC8vIHRvIGF2b2lkIHRyZWF0aW5nIGxlYWRpbmcgYW5kIHRyYWlsaW5nCisgICAgICAgICAgICAv
LyBzcGFjZXMgYXMgY29tYmluYXRvcnMKKyAgICAgICAgICAgIHZhciBpbnB1dCA9IFtdLAorICAg
ICAgICAgICAgICAgIHJlc3VsdHMgPSBbXSwKKyAgICAgICAgICAgICAgICBtYXRjaGVyID0gY29t
cGlsZSggc2VsZWN0b3IucmVwbGFjZSggcnRyaW0sICIkMSIgKSApOworCisgICAgICAgICAgICBy
ZXR1cm4gbWF0Y2hlclsgZXhwYW5kbyBdID8KKyAgICAgICAgICAgICAgICBtYXJrRnVuY3Rpb24o
ZnVuY3Rpb24oIHNlZWQsIG1hdGNoZXMsIGNvbnRleHQsIHhtbCApIHsKKyAgICAgICAgICAgICAg
ICAgICAgdmFyIGVsZW0sCisgICAgICAgICAgICAgICAgICAgICAgICB1bm1hdGNoZWQgPSBtYXRj
aGVyKCBzZWVkLCBudWxsLCB4bWwsIFtdICksCisgICAgICAgICAgICAgICAgICAgICAgICBpID0g
c2VlZC5sZW5ndGg7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gTWF0Y2ggZWxlbWVudHMgdW5t
YXRjaGVkIGJ5IGBtYXRjaGVyYAorICAgICAgICAgICAgICAgICAgICB3aGlsZSAoIGktLSApIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGlmICggKGVsZW0gPSB1bm1hdGNoZWRbaV0pICkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlZWRbaV0gPSAhKG1hdGNoZXNbaV0gPSBlbGVt
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIH0pIDoKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiggZWxlbSwgY29udGV4
dCwgeG1sICkgeworICAgICAgICAgICAgICAgICAgICBpbnB1dFswXSA9IGVsZW07CisgICAgICAg
ICAgICAgICAgICAgIG1hdGNoZXIoIGlucHV0LCBudWxsLCB4bWwsIHJlc3VsdHMgKTsKKyAgICAg
ICAgICAgICAgICAgICAgLy8gRG9uJ3Qga2VlcCB0aGUgZWxlbWVudCAoaXNzdWUgIzI5OSkKKyAg
ICAgICAgICAgICAgICAgICAgaW5wdXRbMF0gPSBudWxsOworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gIXJlc3VsdHMucG9wKCk7CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgfSksCisK
KyAgICAgICAgImhhcyI6IG1hcmtGdW5jdGlvbihmdW5jdGlvbiggc2VsZWN0b3IgKSB7CisgICAg
ICAgICAgICByZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IFNpenpsZSggc2VsZWN0b3IsIGVsZW0gKS5sZW5ndGggPiAwOworICAgICAgICAgICAgfTsKKyAg
ICAgICAgfSksCisKKyAgICAgICAgImNvbnRhaW5zIjogbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCB0
ZXh0ICkgeworICAgICAgICAgICAgdGV4dCA9IHRleHQucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5l
c2NhcGUgKTsKKyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiggZWxlbSApIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gKCBlbGVtLnRleHRDb250ZW50IHx8IGVsZW0uaW5uZXJUZXh0IHx8IGdl
dFRleHQoIGVsZW0gKSApLmluZGV4T2YoIHRleHQgKSA+IC0xOworICAgICAgICAgICAgfTsKKyAg
ICAgICAgfSksCisKKyAgICAgICAgLy8gIldoZXRoZXIgYW4gZWxlbWVudCBpcyByZXByZXNlbnRl
ZCBieSBhIDpsYW5nKCkgc2VsZWN0b3IKKyAgICAgICAgLy8gaXMgYmFzZWQgc29sZWx5IG9uIHRo
ZSBlbGVtZW50J3MgbGFuZ3VhZ2UgdmFsdWUKKyAgICAgICAgLy8gYmVpbmcgZXF1YWwgdG8gdGhl
IGlkZW50aWZpZXIgQywKKyAgICAgICAgLy8gb3IgYmVnaW5uaW5nIHdpdGggdGhlIGlkZW50aWZp
ZXIgQyBpbW1lZGlhdGVseSBmb2xsb3dlZCBieSAiLSIuCisgICAgICAgIC8vIFRoZSBtYXRjaGlu
ZyBvZiBDIGFnYWluc3QgdGhlIGVsZW1lbnQncyBsYW5ndWFnZSB2YWx1ZSBpcyBwZXJmb3JtZWQg
Y2FzZS1pbnNlbnNpdGl2ZWx5LgorICAgICAgICAvLyBUaGUgaWRlbnRpZmllciBDIGRvZXMgbm90
IGhhdmUgdG8gYmUgYSB2YWxpZCBsYW5ndWFnZSBuYW1lLiIKKyAgICAgICAgLy8gaHR0cDovL3d3
dy53My5vcmcvVFIvc2VsZWN0b3JzLyNsYW5nLXBzZXVkbworICAgICAgICAibGFuZyI6IG1hcmtG
dW5jdGlvbiggZnVuY3Rpb24oIGxhbmcgKSB7CisgICAgICAgICAgICAvLyBsYW5nIHZhbHVlIG11
c3QgYmUgYSB2YWxpZCBpZGVudGlmaWVyCisgICAgICAgICAgICBpZiAoICFyaWRlbnRpZmllci50
ZXN0KGxhbmcgfHwgIiIpICkgeworICAgICAgICAgICAgICAgIFNpenpsZS5lcnJvciggInVuc3Vw
cG9ydGVkIGxhbmc6ICIgKyBsYW5nICk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBsYW5n
ID0gbGFuZy5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApLnRvTG93ZXJDYXNlKCk7Cisg
ICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7CisgICAgICAgICAgICAgICAgdmFy
IGVsZW1MYW5nOworICAgICAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KCAoZWxlbUxhbmcgPSBkb2N1bWVudElzSFRNTCA/CisgICAgICAgICAgICAgICAgICAgICAgICBl
bGVtLmxhbmcgOgorICAgICAgICAgICAgICAgICAgICAgICAgZWxlbS5nZXRBdHRyaWJ1dGUoInht
bDpsYW5nIikgfHwgZWxlbS5nZXRBdHRyaWJ1dGUoImxhbmciKSkgKSB7CisKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGVsZW1MYW5nID0gZWxlbUxhbmcudG9Mb3dlckNhc2UoKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBlbGVtTGFuZyA9PT0gbGFuZyB8fCBlbGVtTGFuZy5pbmRl
eE9mKCBsYW5nICsgIi0iICkgPT09IDA7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICB9IHdoaWxlICggKGVsZW0gPSBlbGVtLnBhcmVudE5vZGUpICYmIGVsZW0ubm9kZVR5
cGUgPT09IDEgKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9
OworICAgICAgICB9KSwKKworICAgICAgICAvLyBNaXNjZWxsYW5lb3VzCisgICAgICAgICJ0YXJn
ZXQiOiBmdW5jdGlvbiggZWxlbSApIHsKKyAgICAgICAgICAgIHZhciBoYXNoID0gd2luZG93Lmxv
Y2F0aW9uICYmIHdpbmRvdy5sb2NhdGlvbi5oYXNoOworICAgICAgICAgICAgcmV0dXJuIGhhc2gg
JiYgaGFzaC5zbGljZSggMSApID09PSBlbGVtLmlkOworICAgICAgICB9LAorCisgICAgICAgICJy
b290IjogZnVuY3Rpb24oIGVsZW0gKSB7CisgICAgICAgICAgICByZXR1cm4gZWxlbSA9PT0gZG9j
RWxlbTsKKyAgICAgICAgfSwKKworICAgICAgICAiZm9jdXMiOiBmdW5jdGlvbiggZWxlbSApIHsK
KyAgICAgICAgICAgIHJldHVybiBlbGVtID09PSBkb2N1bWVudC5hY3RpdmVFbGVtZW50ICYmICgh
ZG9jdW1lbnQuaGFzRm9jdXMgfHwgZG9jdW1lbnQuaGFzRm9jdXMoKSkgJiYgISEoZWxlbS50eXBl
IHx8IGVsZW0uaHJlZiB8fCB+ZWxlbS50YWJJbmRleCk7CisgICAgICAgIH0sCisKKyAgICAgICAg
Ly8gQm9vbGVhbiBwcm9wZXJ0aWVzCisgICAgICAgICJlbmFibGVkIjogY3JlYXRlRGlzYWJsZWRQ
c2V1ZG8oIGZhbHNlICksCisgICAgICAgICJkaXNhYmxlZCI6IGNyZWF0ZURpc2FibGVkUHNldWRv
KCB0cnVlICksCisKKyAgICAgICAgImNoZWNrZWQiOiBmdW5jdGlvbiggZWxlbSApIHsKKyAgICAg
ICAgICAgIC8vIEluIENTUzMsIDpjaGVja2VkIHNob3VsZCByZXR1cm4gYm90aCBjaGVja2VkIGFu
ZCBzZWxlY3RlZCBlbGVtZW50cworICAgICAgICAgICAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIv
MjAxMS9SRUMtY3NzMy1zZWxlY3RvcnMtMjAxMTA5MjkvI2NoZWNrZWQKKyAgICAgICAgICAgIHZh
ciBub2RlTmFtZSA9IGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTsKKyAgICAgICAgICAgIHJl
dHVybiAobm9kZU5hbWUgPT09ICJpbnB1dCIgJiYgISFlbGVtLmNoZWNrZWQpIHx8IChub2RlTmFt
ZSA9PT0gIm9wdGlvbiIgJiYgISFlbGVtLnNlbGVjdGVkKTsKKyAgICAgICAgfSwKKworICAgICAg
ICAic2VsZWN0ZWQiOiBmdW5jdGlvbiggZWxlbSApIHsKKyAgICAgICAgICAgIC8vIEFjY2Vzc2lu
ZyB0aGlzIHByb3BlcnR5IG1ha2VzIHNlbGVjdGVkLWJ5LWRlZmF1bHQKKyAgICAgICAgICAgIC8v
IG9wdGlvbnMgaW4gU2FmYXJpIHdvcmsgcHJvcGVybHkKKyAgICAgICAgICAgIGlmICggZWxlbS5w
YXJlbnROb2RlICkgeworICAgICAgICAgICAgICAgIGVsZW0ucGFyZW50Tm9kZS5zZWxlY3RlZElu
ZGV4OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gZWxlbS5zZWxlY3RlZCA9
PT0gdHJ1ZTsKKyAgICAgICAgfSwKKworICAgICAgICAvLyBDb250ZW50cworICAgICAgICAiZW1w
dHkiOiBmdW5jdGlvbiggZWxlbSApIHsKKyAgICAgICAgICAgIC8vIGh0dHA6Ly93d3cudzMub3Jn
L1RSL3NlbGVjdG9ycy8jZW1wdHktcHNldWRvCisgICAgICAgICAgICAvLyA6ZW1wdHkgaXMgbmVn
YXRlZCBieSBlbGVtZW50ICgxKSBvciBjb250ZW50IG5vZGVzICh0ZXh0OiAzOyBjZGF0YTogNDsg
ZW50aXR5IHJlZjogNSksCisgICAgICAgICAgICAvLyAgIGJ1dCBub3QgYnkgb3RoZXJzIChjb21t
ZW50OiA4OyBwcm9jZXNzaW5nIGluc3RydWN0aW9uOiA3OyBldGMuKQorICAgICAgICAgICAgLy8g
bm9kZVR5cGUgPCA2IHdvcmtzIGJlY2F1c2UgYXR0cmlidXRlcyAoMikgZG8gbm90IGFwcGVhciBh
cyBjaGlsZHJlbgorICAgICAgICAgICAgZm9yICggZWxlbSA9IGVsZW0uZmlyc3RDaGlsZDsgZWxl
bTsgZWxlbSA9IGVsZW0ubmV4dFNpYmxpbmcgKSB7CisgICAgICAgICAgICAgICAgaWYgKCBlbGVt
Lm5vZGVUeXBlIDwgNiApIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICB9LAorCisgICAgICAgICJwYXJlbnQiOiBmdW5jdGlvbiggZWxlbSApIHsKKyAgICAg
ICAgICAgIHJldHVybiAhRXhwci5wc2V1ZG9zWyJlbXB0eSJdKCBlbGVtICk7CisgICAgICAgIH0s
CisKKyAgICAgICAgLy8gRWxlbWVudC9pbnB1dCB0eXBlcworICAgICAgICAiaGVhZGVyIjogZnVu
Y3Rpb24oIGVsZW0gKSB7CisgICAgICAgICAgICByZXR1cm4gcmhlYWRlci50ZXN0KCBlbGVtLm5v
ZGVOYW1lICk7CisgICAgICAgIH0sCisKKyAgICAgICAgImlucHV0IjogZnVuY3Rpb24oIGVsZW0g
KSB7CisgICAgICAgICAgICByZXR1cm4gcmlucHV0cy50ZXN0KCBlbGVtLm5vZGVOYW1lICk7Cisg
ICAgICAgIH0sCisKKyAgICAgICAgImJ1dHRvbiI6IGZ1bmN0aW9uKCBlbGVtICkgeworICAgICAg
ICAgICAgdmFyIG5hbWUgPSBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7CisgICAgICAgICAg
ICByZXR1cm4gbmFtZSA9PT0gImlucHV0IiAmJiBlbGVtLnR5cGUgPT09ICJidXR0b24iIHx8IG5h
bWUgPT09ICJidXR0b24iOworICAgICAgICB9LAorCisgICAgICAgICJ0ZXh0IjogZnVuY3Rpb24o
IGVsZW0gKSB7CisgICAgICAgICAgICB2YXIgYXR0cjsKKyAgICAgICAgICAgIHJldHVybiBlbGVt
Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICJpbnB1dCIgJiYKKyAgICAgICAgICAgICAgICBl
bGVtLnR5cGUgPT09ICJ0ZXh0IiAmJgorCisgICAgICAgICAgICAgICAgLy8gU3VwcG9ydDogSUU8
OAorICAgICAgICAgICAgICAgIC8vIE5ldyBIVE1MNSBhdHRyaWJ1dGUgdmFsdWVzIChlLmcuLCAi
c2VhcmNoIikgYXBwZWFyIHdpdGggZWxlbS50eXBlID09PSAidGV4dCIKKyAgICAgICAgICAgICAg
ICAoIChhdHRyID0gZWxlbS5nZXRBdHRyaWJ1dGUoInR5cGUiKSkgPT0gbnVsbCB8fCBhdHRyLnRv
TG93ZXJDYXNlKCkgPT09ICJ0ZXh0IiApOworICAgICAgICB9LAorCisgICAgICAgIC8vIFBvc2l0
aW9uLWluLWNvbGxlY3Rpb24KKyAgICAgICAgImZpcnN0IjogY3JlYXRlUG9zaXRpb25hbFBzZXVk
byhmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHJldHVybiBbIDAgXTsKKyAgICAgICAgfSksCisK
KyAgICAgICAgImxhc3QiOiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9uKCBtYXRjaElu
ZGV4ZXMsIGxlbmd0aCApIHsKKyAgICAgICAgICAgIHJldHVybiBbIGxlbmd0aCAtIDEgXTsKKyAg
ICAgICAgfSksCisKKyAgICAgICAgImVxIjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlv
biggbWF0Y2hJbmRleGVzLCBsZW5ndGgsIGFyZ3VtZW50ICkgeworICAgICAgICAgICAgcmV0dXJu
IFsgYXJndW1lbnQgPCAwID8gYXJndW1lbnQgKyBsZW5ndGggOiBhcmd1bWVudCBdOworICAgICAg
ICB9KSwKKworICAgICAgICAiZXZlbiI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24o
IG1hdGNoSW5kZXhlcywgbGVuZ3RoICkgeworICAgICAgICAgICAgdmFyIGkgPSAwOworICAgICAg
ICAgICAgZm9yICggOyBpIDwgbGVuZ3RoOyBpICs9IDIgKSB7CisgICAgICAgICAgICAgICAgbWF0
Y2hJbmRleGVzLnB1c2goIGkgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBt
YXRjaEluZGV4ZXM7CisgICAgICAgIH0pLAorCisgICAgICAgICJvZGQiOiBjcmVhdGVQb3NpdGlv
bmFsUHNldWRvKGZ1bmN0aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0aCApIHsKKyAgICAgICAgICAg
IHZhciBpID0gMTsKKyAgICAgICAgICAgIGZvciAoIDsgaSA8IGxlbmd0aDsgaSArPSAyICkgewor
ICAgICAgICAgICAgICAgIG1hdGNoSW5kZXhlcy5wdXNoKCBpICk7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICByZXR1cm4gbWF0Y2hJbmRleGVzOworICAgICAgICB9KSwKKworICAgICAgICAi
bHQiOiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0
aCwgYXJndW1lbnQgKSB7CisgICAgICAgICAgICB2YXIgaSA9IGFyZ3VtZW50IDwgMCA/IGFyZ3Vt
ZW50ICsgbGVuZ3RoIDogYXJndW1lbnQ7CisgICAgICAgICAgICBmb3IgKCA7IC0taSA+PSAwOyAp
IHsKKyAgICAgICAgICAgICAgICBtYXRjaEluZGV4ZXMucHVzaCggaSApOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgcmV0dXJuIG1hdGNoSW5kZXhlczsKKyAgICAgICAgfSksCisKKyAgICAg
ICAgImd0IjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbiggbWF0Y2hJbmRleGVzLCBs
ZW5ndGgsIGFyZ3VtZW50ICkgeworICAgICAgICAgICAgdmFyIGkgPSBhcmd1bWVudCA8IDAgPyBh
cmd1bWVudCArIGxlbmd0aCA6IGFyZ3VtZW50OworICAgICAgICAgICAgZm9yICggOyArK2kgPCBs
ZW5ndGg7ICkgeworICAgICAgICAgICAgICAgIG1hdGNoSW5kZXhlcy5wdXNoKCBpICk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gbWF0Y2hJbmRleGVzOworICAgICAgICB9KQor
ICAgIH0KK307CisKK0V4cHIucHNldWRvc1sibnRoIl0gPSBFeHByLnBzZXVkb3NbImVxIl07CisK
Ky8vIEFkZCBidXR0b24vaW5wdXQgdHlwZSBwc2V1ZG9zCitmb3IgKCBpIGluIHsgcmFkaW86IHRy
dWUsIGNoZWNrYm94OiB0cnVlLCBmaWxlOiB0cnVlLCBwYXNzd29yZDogdHJ1ZSwgaW1hZ2U6IHRy
dWUgfSApIHsKKyAgICBFeHByLnBzZXVkb3NbIGkgXSA9IGNyZWF0ZUlucHV0UHNldWRvKCBpICk7
Cit9Citmb3IgKCBpIGluIHsgc3VibWl0OiB0cnVlLCByZXNldDogdHJ1ZSB9ICkgeworICAgIEV4
cHIucHNldWRvc1sgaSBdID0gY3JlYXRlQnV0dG9uUHNldWRvKCBpICk7Cit9CisKKy8vIEVhc3kg
QVBJIGZvciBjcmVhdGluZyBuZXcgc2V0RmlsdGVycworZnVuY3Rpb24gc2V0RmlsdGVycygpIHt9
CitzZXRGaWx0ZXJzLnByb3RvdHlwZSA9IEV4cHIuZmlsdGVycyA9IEV4cHIucHNldWRvczsKK0V4
cHIuc2V0RmlsdGVycyA9IG5ldyBzZXRGaWx0ZXJzKCk7CisKK3Rva2VuaXplID0gU2l6emxlLnRv
a2VuaXplID0gZnVuY3Rpb24oIHNlbGVjdG9yLCBwYXJzZU9ubHkgKSB7CisgICAgdmFyIG1hdGNo
ZWQsIG1hdGNoLCB0b2tlbnMsIHR5cGUsCisgICAgICAgIHNvRmFyLCBncm91cHMsIHByZUZpbHRl
cnMsCisgICAgICAgIGNhY2hlZCA9IHRva2VuQ2FjaGVbIHNlbGVjdG9yICsgIiAiIF07CisKKyAg
ICBpZiAoIGNhY2hlZCApIHsKKyAgICAgICAgcmV0dXJuIHBhcnNlT25seSA/IDAgOiBjYWNoZWQu
c2xpY2UoIDAgKTsKKyAgICB9CisKKyAgICBzb0ZhciA9IHNlbGVjdG9yOworICAgIGdyb3VwcyA9
IFtdOworICAgIHByZUZpbHRlcnMgPSBFeHByLnByZUZpbHRlcjsKKworICAgIHdoaWxlICggc29G
YXIgKSB7CisKKyAgICAgICAgLy8gQ29tbWEgYW5kIGZpcnN0IHJ1bgorICAgICAgICBpZiAoICFt
YXRjaGVkIHx8IChtYXRjaCA9IHJjb21tYS5leGVjKCBzb0ZhciApKSApIHsKKyAgICAgICAgICAg
IGlmICggbWF0Y2ggKSB7CisgICAgICAgICAgICAgICAgLy8gRG9uJ3QgY29uc3VtZSB0cmFpbGlu
ZyBjb21tYXMgYXMgdmFsaWQKKyAgICAgICAgICAgICAgICBzb0ZhciA9IHNvRmFyLnNsaWNlKCBt
YXRjaFswXS5sZW5ndGggKSB8fCBzb0ZhcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGdy
b3Vwcy5wdXNoKCAodG9rZW5zID0gW10pICk7CisgICAgICAgIH0KKworICAgICAgICBtYXRjaGVk
ID0gZmFsc2U7CisKKyAgICAgICAgLy8gQ29tYmluYXRvcnMKKyAgICAgICAgaWYgKCAobWF0Y2gg
PSByY29tYmluYXRvcnMuZXhlYyggc29GYXIgKSkgKSB7CisgICAgICAgICAgICBtYXRjaGVkID0g
bWF0Y2guc2hpZnQoKTsKKyAgICAgICAgICAgIHRva2Vucy5wdXNoKHsKKyAgICAgICAgICAgICAg
ICB2YWx1ZTogbWF0Y2hlZCwKKyAgICAgICAgICAgICAgICAvLyBDYXN0IGRlc2NlbmRhbnQgY29t
YmluYXRvcnMgdG8gc3BhY2UKKyAgICAgICAgICAgICAgICB0eXBlOiBtYXRjaFswXS5yZXBsYWNl
KCBydHJpbSwgIiAiICkKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgc29GYXIgPSBzb0Zh
ci5zbGljZSggbWF0Y2hlZC5sZW5ndGggKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZpbHRl
cnMKKyAgICAgICAgZm9yICggdHlwZSBpbiBFeHByLmZpbHRlciApIHsKKyAgICAgICAgICAgIGlm
ICggKG1hdGNoID0gbWF0Y2hFeHByWyB0eXBlIF0uZXhlYyggc29GYXIgKSkgJiYgKCFwcmVGaWx0
ZXJzWyB0eXBlIF0gfHwKKyAgICAgICAgICAgICAgICAobWF0Y2ggPSBwcmVGaWx0ZXJzWyB0eXBl
IF0oIG1hdGNoICkpKSApIHsKKyAgICAgICAgICAgICAgICBtYXRjaGVkID0gbWF0Y2guc2hpZnQo
KTsKKyAgICAgICAgICAgICAgICB0b2tlbnMucHVzaCh7CisgICAgICAgICAgICAgICAgICAgIHZh
bHVlOiBtYXRjaGVkLAorICAgICAgICAgICAgICAgICAgICB0eXBlOiB0eXBlLAorICAgICAgICAg
ICAgICAgICAgICBtYXRjaGVzOiBtYXRjaAorICAgICAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgICAgIHNvRmFyID0gc29GYXIuc2xpY2UoIG1hdGNoZWQubGVuZ3RoICk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoICFtYXRjaGVkICkgeworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBSZXR1cm4gdGhlIGxlbmd0aCBvZiB0
aGUgaW52YWxpZCBleGNlc3MKKyAgICAvLyBpZiB3ZSdyZSBqdXN0IHBhcnNpbmcKKyAgICAvLyBP
dGhlcndpc2UsIHRocm93IGFuIGVycm9yIG9yIHJldHVybiB0b2tlbnMKKyAgICByZXR1cm4gcGFy
c2VPbmx5ID8KKyAgICAgICAgc29GYXIubGVuZ3RoIDoKKyAgICAgICAgc29GYXIgPworICAgICAg
ICAgICAgU2l6emxlLmVycm9yKCBzZWxlY3RvciApIDoKKyAgICAgICAgICAgIC8vIENhY2hlIHRo
ZSB0b2tlbnMKKyAgICAgICAgICAgIHRva2VuQ2FjaGUoIHNlbGVjdG9yLCBncm91cHMgKS5zbGlj
ZSggMCApOworfTsKKworZnVuY3Rpb24gdG9TZWxlY3RvciggdG9rZW5zICkgeworICAgIHZhciBp
ID0gMCwKKyAgICAgICAgbGVuID0gdG9rZW5zLmxlbmd0aCwKKyAgICAgICAgc2VsZWN0b3IgPSAi
IjsKKyAgICBmb3IgKCA7IGkgPCBsZW47IGkrKyApIHsKKyAgICAgICAgc2VsZWN0b3IgKz0gdG9r
ZW5zW2ldLnZhbHVlOworICAgIH0KKyAgICByZXR1cm4gc2VsZWN0b3I7Cit9CisKK2Z1bmN0aW9u
IGFkZENvbWJpbmF0b3IoIG1hdGNoZXIsIGNvbWJpbmF0b3IsIGJhc2UgKSB7CisgICAgdmFyIGRp
ciA9IGNvbWJpbmF0b3IuZGlyLAorICAgICAgICBza2lwID0gY29tYmluYXRvci5uZXh0LAorICAg
ICAgICBrZXkgPSBza2lwIHx8IGRpciwKKyAgICAgICAgY2hlY2tOb25FbGVtZW50cyA9IGJhc2Ug
JiYga2V5ID09PSAicGFyZW50Tm9kZSIsCisgICAgICAgIGRvbmVOYW1lID0gZG9uZSsrOworCisg
ICAgcmV0dXJuIGNvbWJpbmF0b3IuZmlyc3QgPworICAgICAgICAvLyBDaGVjayBhZ2FpbnN0IGNs
b3Nlc3QgYW5jZXN0b3IvcHJlY2VkaW5nIGVsZW1lbnQKKyAgICAgICAgZnVuY3Rpb24oIGVsZW0s
IGNvbnRleHQsIHhtbCApIHsKKyAgICAgICAgICAgIHdoaWxlICggKGVsZW0gPSBlbGVtWyBkaXIg
XSkgKSB7CisgICAgICAgICAgICAgICAgaWYgKCBlbGVtLm5vZGVUeXBlID09PSAxIHx8IGNoZWNr
Tm9uRWxlbWVudHMgKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaGVyKCBlbGVt
LCBjb250ZXh0LCB4bWwgKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0gOgorCisgICAgICAgIC8vIENoZWNrIGFn
YWluc3QgYWxsIGFuY2VzdG9yL3ByZWNlZGluZyBlbGVtZW50cworICAgICAgICBmdW5jdGlvbigg
ZWxlbSwgY29udGV4dCwgeG1sICkgeworICAgICAgICAgICAgdmFyIG9sZENhY2hlLCB1bmlxdWVD
YWNoZSwgb3V0ZXJDYWNoZSwKKyAgICAgICAgICAgICAgICBuZXdDYWNoZSA9IFsgZGlycnVucywg
ZG9uZU5hbWUgXTsKKworICAgICAgICAgICAgLy8gV2UgY2FuJ3Qgc2V0IGFyYml0cmFyeSBkYXRh
IG9uIFhNTCBub2Rlcywgc28gdGhleSBkb24ndCBiZW5lZml0IGZyb20gY29tYmluYXRvciBjYWNo
aW5nCisgICAgICAgICAgICBpZiAoIHhtbCApIHsKKyAgICAgICAgICAgICAgICB3aGlsZSAoIChl
bGVtID0gZWxlbVsgZGlyIF0pICkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIGVsZW0ubm9k
ZVR5cGUgPT09IDEgfHwgY2hlY2tOb25FbGVtZW50cyApIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICggbWF0Y2hlciggZWxlbSwgY29udGV4dCwgeG1sICkgKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIHdoaWxlICggKGVsZW0gPSBlbGVtWyBkaXIgXSkgKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSB8fCBjaGVja05vbkVs
ZW1lbnRzICkgeworICAgICAgICAgICAgICAgICAgICAgICAgb3V0ZXJDYWNoZSA9IGVsZW1bIGV4
cGFuZG8gXSB8fCAoZWxlbVsgZXhwYW5kbyBdID0ge30pOworCisgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBTdXBwb3J0OiBJRSA8OSBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBE
ZWZlbmQgYWdhaW5zdCBjbG9uZWQgYXR0cm9wZXJ0aWVzIChqUXVlcnkgZ2gtMTcwOSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHVuaXF1ZUNhY2hlID0gb3V0ZXJDYWNoZVsgZWxlbS51bmlxdWVJ
RCBdIHx8IChvdXRlckNhY2hlWyBlbGVtLnVuaXF1ZUlEIF0gPSB7fSk7CisKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICggc2tpcCAmJiBza2lwID09PSBlbGVtLm5vZGVOYW1lLnRvTG93ZXJD
YXNlKCkgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbSA9IGVsZW1bIGRpciBd
IHx8IGVsZW07CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCAob2xkQ2FjaGUg
PSB1bmlxdWVDYWNoZVsga2V5IF0pICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xk
Q2FjaGVbIDAgXSA9PT0gZGlycnVucyAmJiBvbGRDYWNoZVsgMSBdID09PSBkb25lTmFtZSApIHsK
KworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFzc2lnbiB0byBuZXdDYWNoZSBzbyBy
ZXN1bHRzIGJhY2stcHJvcGFnYXRlIHRvIHByZXZpb3VzIGVsZW1lbnRzCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIChuZXdDYWNoZVsgMiBdID0gb2xkQ2FjaGVbIDIgXSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIFJldXNlIG5ld2NhY2hlIHNvIHJlc3VsdHMgYmFjay1wcm9wYWdhdGUgdG8gcHJldmlv
dXMgZWxlbWVudHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlxdWVDYWNoZVsga2V5
IF0gPSBuZXdDYWNoZTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEEgbWF0Y2gg
bWVhbnMgd2UncmUgZG9uZTsgYSBmYWlsIG1lYW5zIHdlIGhhdmUgdG8ga2VlcCBjaGVja2luZwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggKG5ld0NhY2hlWyAyIF0gPSBtYXRjaGVy
KCBlbGVtLCBjb250ZXh0LCB4bWwgKSkgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfTsK
K30KKworZnVuY3Rpb24gZWxlbWVudE1hdGNoZXIoIG1hdGNoZXJzICkgeworICAgIHJldHVybiBt
YXRjaGVycy5sZW5ndGggPiAxID8KKyAgICAgICAgZnVuY3Rpb24oIGVsZW0sIGNvbnRleHQsIHht
bCApIHsKKyAgICAgICAgICAgIHZhciBpID0gbWF0Y2hlcnMubGVuZ3RoOworICAgICAgICAgICAg
d2hpbGUgKCBpLS0gKSB7CisgICAgICAgICAgICAgICAgaWYgKCAhbWF0Y2hlcnNbaV0oIGVsZW0s
IGNvbnRleHQsIHhtbCApICkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgIH0gOgorICAgICAgICBtYXRjaGVyc1swXTsKK30KKworZnVuY3Rpb24gbXVsdGlw
bGVDb250ZXh0cyggc2VsZWN0b3IsIGNvbnRleHRzLCByZXN1bHRzICkgeworICAgIHZhciBpID0g
MCwKKyAgICAgICAgbGVuID0gY29udGV4dHMubGVuZ3RoOworICAgIGZvciAoIDsgaSA8IGxlbjsg
aSsrICkgeworICAgICAgICBTaXp6bGUoIHNlbGVjdG9yLCBjb250ZXh0c1tpXSwgcmVzdWx0cyAp
OworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0czsKK30KKworZnVuY3Rpb24gY29uZGVuc2UoIHVu
bWF0Y2hlZCwgbWFwLCBmaWx0ZXIsIGNvbnRleHQsIHhtbCApIHsKKyAgICB2YXIgZWxlbSwKKyAg
ICAgICAgbmV3VW5tYXRjaGVkID0gW10sCisgICAgICAgIGkgPSAwLAorICAgICAgICBsZW4gPSB1
bm1hdGNoZWQubGVuZ3RoLAorICAgICAgICBtYXBwZWQgPSBtYXAgIT0gbnVsbDsKKworICAgIGZv
ciAoIDsgaSA8IGxlbjsgaSsrICkgeworICAgICAgICBpZiAoIChlbGVtID0gdW5tYXRjaGVkW2ld
KSApIHsKKyAgICAgICAgICAgIGlmICggIWZpbHRlciB8fCBmaWx0ZXIoIGVsZW0sIGNvbnRleHQs
IHhtbCApICkgeworICAgICAgICAgICAgICAgIG5ld1VubWF0Y2hlZC5wdXNoKCBlbGVtICk7Cisg
ICAgICAgICAgICAgICAgaWYgKCBtYXBwZWQgKSB7CisgICAgICAgICAgICAgICAgICAgIG1hcC5w
dXNoKCBpICk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfQorCisgICAgcmV0dXJuIG5ld1VubWF0Y2hlZDsKK30KKworZnVuY3Rpb24gc2V0TWF0Y2hl
ciggcHJlRmlsdGVyLCBzZWxlY3RvciwgbWF0Y2hlciwgcG9zdEZpbHRlciwgcG9zdEZpbmRlciwg
cG9zdFNlbGVjdG9yICkgeworICAgIGlmICggcG9zdEZpbHRlciAmJiAhcG9zdEZpbHRlclsgZXhw
YW5kbyBdICkgeworICAgICAgICBwb3N0RmlsdGVyID0gc2V0TWF0Y2hlciggcG9zdEZpbHRlciAp
OworICAgIH0KKyAgICBpZiAoIHBvc3RGaW5kZXIgJiYgIXBvc3RGaW5kZXJbIGV4cGFuZG8gXSAp
IHsKKyAgICAgICAgcG9zdEZpbmRlciA9IHNldE1hdGNoZXIoIHBvc3RGaW5kZXIsIHBvc3RTZWxl
Y3RvciApOworICAgIH0KKyAgICByZXR1cm4gbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCBzZWVkLCBy
ZXN1bHRzLCBjb250ZXh0LCB4bWwgKSB7CisgICAgICAgIHZhciB0ZW1wLCBpLCBlbGVtLAorICAg
ICAgICAgICAgcHJlTWFwID0gW10sCisgICAgICAgICAgICBwb3N0TWFwID0gW10sCisgICAgICAg
ICAgICBwcmVleGlzdGluZyA9IHJlc3VsdHMubGVuZ3RoLAorCisgICAgICAgICAgICAvLyBHZXQg
aW5pdGlhbCBlbGVtZW50cyBmcm9tIHNlZWQgb3IgY29udGV4dAorICAgICAgICAgICAgZWxlbXMg
PSBzZWVkIHx8IG11bHRpcGxlQ29udGV4dHMoIHNlbGVjdG9yIHx8ICIqIiwgY29udGV4dC5ub2Rl
VHlwZSA/IFsgY29udGV4dCBdIDogY29udGV4dCwgW10gKSwKKworICAgICAgICAgICAgLy8gUHJl
ZmlsdGVyIHRvIGdldCBtYXRjaGVyIGlucHV0LCBwcmVzZXJ2aW5nIGEgbWFwIGZvciBzZWVkLXJl
c3VsdHMgc3luY2hyb25pemF0aW9uCisgICAgICAgICAgICBtYXRjaGVySW4gPSBwcmVGaWx0ZXIg
JiYgKCBzZWVkIHx8ICFzZWxlY3RvciApID8KKyAgICAgICAgICAgICAgICBjb25kZW5zZSggZWxl
bXMsIHByZU1hcCwgcHJlRmlsdGVyLCBjb250ZXh0LCB4bWwgKSA6CisgICAgICAgICAgICAgICAg
ZWxlbXMsCisKKyAgICAgICAgICAgIG1hdGNoZXJPdXQgPSBtYXRjaGVyID8KKyAgICAgICAgICAg
ICAgICAvLyBJZiB3ZSBoYXZlIGEgcG9zdEZpbmRlciwgb3IgZmlsdGVyZWQgc2VlZCwgb3Igbm9u
LXNlZWQgcG9zdEZpbHRlciBvciBwcmVleGlzdGluZyByZXN1bHRzLAorICAgICAgICAgICAgICAg
IHBvc3RGaW5kZXIgfHwgKCBzZWVkID8gcHJlRmlsdGVyIDogcHJlZXhpc3RpbmcgfHwgcG9zdEZp
bHRlciApID8KKworICAgICAgICAgICAgICAgICAgICAvLyAuLi5pbnRlcm1lZGlhdGUgcHJvY2Vz
c2luZyBpcyBuZWNlc3NhcnkKKyAgICAgICAgICAgICAgICAgICAgW10gOgorCisgICAgICAgICAg
ICAgICAgICAgIC8vIC4uLm90aGVyd2lzZSB1c2UgcmVzdWx0cyBkaXJlY3RseQorICAgICAgICAg
ICAgICAgICAgICByZXN1bHRzIDoKKyAgICAgICAgICAgICAgICBtYXRjaGVySW47CisKKyAgICAg
ICAgLy8gRmluZCBwcmltYXJ5IG1hdGNoZXMKKyAgICAgICAgaWYgKCBtYXRjaGVyICkgeworICAg
ICAgICAgICAgbWF0Y2hlciggbWF0Y2hlckluLCBtYXRjaGVyT3V0LCBjb250ZXh0LCB4bWwgKTsK
KyAgICAgICAgfQorCisgICAgICAgIC8vIEFwcGx5IHBvc3RGaWx0ZXIKKyAgICAgICAgaWYgKCBw
b3N0RmlsdGVyICkgeworICAgICAgICAgICAgdGVtcCA9IGNvbmRlbnNlKCBtYXRjaGVyT3V0LCBw
b3N0TWFwICk7CisgICAgICAgICAgICBwb3N0RmlsdGVyKCB0ZW1wLCBbXSwgY29udGV4dCwgeG1s
ICk7CisKKyAgICAgICAgICAgIC8vIFVuLW1hdGNoIGZhaWxpbmcgZWxlbWVudHMgYnkgbW92aW5n
IHRoZW0gYmFjayB0byBtYXRjaGVySW4KKyAgICAgICAgICAgIGkgPSB0ZW1wLmxlbmd0aDsKKyAg
ICAgICAgICAgIHdoaWxlICggaS0tICkgeworICAgICAgICAgICAgICAgIGlmICggKGVsZW0gPSB0
ZW1wW2ldKSApIHsKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2hlck91dFsgcG9zdE1hcFtpXSBd
ID0gIShtYXRjaGVySW5bIHBvc3RNYXBbaV0gXSA9IGVsZW0pOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmICggc2VlZCApIHsKKyAgICAg
ICAgICAgIGlmICggcG9zdEZpbmRlciB8fCBwcmVGaWx0ZXIgKSB7CisgICAgICAgICAgICAgICAg
aWYgKCBwb3N0RmluZGVyICkgeworICAgICAgICAgICAgICAgICAgICAvLyBHZXQgdGhlIGZpbmFs
IG1hdGNoZXJPdXQgYnkgY29uZGVuc2luZyB0aGlzIGludGVybWVkaWF0ZSBpbnRvIHBvc3RGaW5k
ZXIgY29udGV4dHMKKyAgICAgICAgICAgICAgICAgICAgdGVtcCA9IFtdOworICAgICAgICAgICAg
ICAgICAgICBpID0gbWF0Y2hlck91dC5sZW5ndGg7CisgICAgICAgICAgICAgICAgICAgIHdoaWxl
ICggaS0tICkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAoZWxlbSA9IG1hdGNoZXJP
dXRbaV0pICkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlc3RvcmUgbWF0Y2hl
ckluIHNpbmNlIGVsZW0gaXMgbm90IHlldCBhIGZpbmFsIG1hdGNoCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGVtcC5wdXNoKCAobWF0Y2hlckluW2ldID0gZWxlbSkgKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICBwb3N0RmluZGVyKCBudWxsLCAobWF0Y2hlck91dCA9IFtdKSwgdGVtcCwgeG1sICk7Cisg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gTW92ZSBtYXRjaGVkIGVsZW1l
bnRzIGZyb20gc2VlZCB0byByZXN1bHRzIHRvIGtlZXAgdGhlbSBzeW5jaHJvbml6ZWQKKyAgICAg
ICAgICAgICAgICBpID0gbWF0Y2hlck91dC5sZW5ndGg7CisgICAgICAgICAgICAgICAgd2hpbGUg
KCBpLS0gKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICggKGVsZW0gPSBtYXRjaGVyT3V0W2ld
KSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgKHRlbXAgPSBwb3N0RmluZGVyID8gaW5kZXhP
Ziggc2VlZCwgZWxlbSApIDogcHJlTWFwW2ldKSA+IC0xICkgeworCisgICAgICAgICAgICAgICAg
ICAgICAgICBzZWVkW3RlbXBdID0gIShyZXN1bHRzW3RlbXBdID0gZWxlbSk7CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAg
Ly8gQWRkIGVsZW1lbnRzIHRvIHJlc3VsdHMsIHRocm91Z2ggcG9zdEZpbmRlciBpZiBkZWZpbmVk
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtYXRjaGVyT3V0ID0gY29uZGVuc2UoCisg
ICAgICAgICAgICAgICAgbWF0Y2hlck91dCA9PT0gcmVzdWx0cyA/CisgICAgICAgICAgICAgICAg
ICAgIG1hdGNoZXJPdXQuc3BsaWNlKCBwcmVleGlzdGluZywgbWF0Y2hlck91dC5sZW5ndGggKSA6
CisgICAgICAgICAgICAgICAgICAgIG1hdGNoZXJPdXQKKyAgICAgICAgICAgICk7CisgICAgICAg
ICAgICBpZiAoIHBvc3RGaW5kZXIgKSB7CisgICAgICAgICAgICAgICAgcG9zdEZpbmRlciggbnVs
bCwgcmVzdWx0cywgbWF0Y2hlck91dCwgeG1sICk7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIHB1c2guYXBwbHkoIHJlc3VsdHMsIG1hdGNoZXJPdXQgKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0pOworfQorCitmdW5jdGlvbiBtYXRjaGVyRnJvbVRva2Vu
cyggdG9rZW5zICkgeworICAgIHZhciBjaGVja0NvbnRleHQsIG1hdGNoZXIsIGosCisgICAgICAg
IGxlbiA9IHRva2Vucy5sZW5ndGgsCisgICAgICAgIGxlYWRpbmdSZWxhdGl2ZSA9IEV4cHIucmVs
YXRpdmVbIHRva2Vuc1swXS50eXBlIF0sCisgICAgICAgIGltcGxpY2l0UmVsYXRpdmUgPSBsZWFk
aW5nUmVsYXRpdmUgfHwgRXhwci5yZWxhdGl2ZVsiICJdLAorICAgICAgICBpID0gbGVhZGluZ1Jl
bGF0aXZlID8gMSA6IDAsCisKKyAgICAgICAgLy8gVGhlIGZvdW5kYXRpb25hbCBtYXRjaGVyIGVu
c3VyZXMgdGhhdCBlbGVtZW50cyBhcmUgcmVhY2hhYmxlIGZyb20gdG9wLWxldmVsIGNvbnRleHQo
cykKKyAgICAgICAgbWF0Y2hDb250ZXh0ID0gYWRkQ29tYmluYXRvciggZnVuY3Rpb24oIGVsZW0g
KSB7CisgICAgICAgICAgICByZXR1cm4gZWxlbSA9PT0gY2hlY2tDb250ZXh0OworICAgICAgICB9
LCBpbXBsaWNpdFJlbGF0aXZlLCB0cnVlICksCisgICAgICAgIG1hdGNoQW55Q29udGV4dCA9IGFk
ZENvbWJpbmF0b3IoIGZ1bmN0aW9uKCBlbGVtICkgeworICAgICAgICAgICAgcmV0dXJuIGluZGV4
T2YoIGNoZWNrQ29udGV4dCwgZWxlbSApID4gLTE7CisgICAgICAgIH0sIGltcGxpY2l0UmVsYXRp
dmUsIHRydWUgKSwKKyAgICAgICAgbWF0Y2hlcnMgPSBbIGZ1bmN0aW9uKCBlbGVtLCBjb250ZXh0
LCB4bWwgKSB7CisgICAgICAgICAgICB2YXIgcmV0ID0gKCAhbGVhZGluZ1JlbGF0aXZlICYmICgg
eG1sIHx8IGNvbnRleHQgIT09IG91dGVybW9zdENvbnRleHQgKSApIHx8ICgKKyAgICAgICAgICAg
ICAgICAoY2hlY2tDb250ZXh0ID0gY29udGV4dCkubm9kZVR5cGUgPworICAgICAgICAgICAgICAg
ICAgICBtYXRjaENvbnRleHQoIGVsZW0sIGNvbnRleHQsIHhtbCApIDoKKyAgICAgICAgICAgICAg
ICAgICAgbWF0Y2hBbnlDb250ZXh0KCBlbGVtLCBjb250ZXh0LCB4bWwgKSApOworICAgICAgICAg
ICAgLy8gQXZvaWQgaGFuZ2luZyBvbnRvIGVsZW1lbnQgKGlzc3VlICMyOTkpCisgICAgICAgICAg
ICBjaGVja0NvbnRleHQgPSBudWxsOworICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgICAg
fSBdOworCisgICAgZm9yICggOyBpIDwgbGVuOyBpKysgKSB7CisgICAgICAgIGlmICggKG1hdGNo
ZXIgPSBFeHByLnJlbGF0aXZlWyB0b2tlbnNbaV0udHlwZSBdKSApIHsKKyAgICAgICAgICAgIG1h
dGNoZXJzID0gWyBhZGRDb21iaW5hdG9yKGVsZW1lbnRNYXRjaGVyKCBtYXRjaGVycyApLCBtYXRj
aGVyKSBdOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbWF0Y2hlciA9IEV4cHIuZmls
dGVyWyB0b2tlbnNbaV0udHlwZSBdLmFwcGx5KCBudWxsLCB0b2tlbnNbaV0ubWF0Y2hlcyApOwor
CisgICAgICAgICAgICAvLyBSZXR1cm4gc3BlY2lhbCB1cG9uIHNlZWluZyBhIHBvc2l0aW9uYWwg
bWF0Y2hlcgorICAgICAgICAgICAgaWYgKCBtYXRjaGVyWyBleHBhbmRvIF0gKSB7CisgICAgICAg
ICAgICAgICAgLy8gRmluZCB0aGUgbmV4dCByZWxhdGl2ZSBvcGVyYXRvciAoaWYgYW55KSBmb3Ig
cHJvcGVyIGhhbmRsaW5nCisgICAgICAgICAgICAgICAgaiA9ICsraTsKKyAgICAgICAgICAgICAg
ICBmb3IgKCA7IGogPCBsZW47IGorKyApIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCBFeHBy
LnJlbGF0aXZlWyB0b2tlbnNbal0udHlwZSBdICkgeworICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHNldE1hdGNoZXIoCisgICAgICAgICAgICAgICAgICAgIGkgPiAxICYm
IGVsZW1lbnRNYXRjaGVyKCBtYXRjaGVycyApLAorICAgICAgICAgICAgICAgICAgICBpID4gMSAm
JiB0b1NlbGVjdG9yKAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHByZWNlZGlu
ZyB0b2tlbiB3YXMgYSBkZXNjZW5kYW50IGNvbWJpbmF0b3IsIGluc2VydCBhbiBpbXBsaWNpdCBh
bnktZWxlbWVudCBgKmAKKyAgICAgICAgICAgICAgICAgICAgICAgIHRva2Vucy5zbGljZSggMCwg
aSAtIDEgKS5jb25jYXQoeyB2YWx1ZTogdG9rZW5zWyBpIC0gMiBdLnR5cGUgPT09ICIgIiA/ICIq
IiA6ICIiIH0pCisgICAgICAgICAgICAgICAgICAgICkucmVwbGFjZSggcnRyaW0sICIkMSIgKSwK
KyAgICAgICAgICAgICAgICAgICAgbWF0Y2hlciwKKyAgICAgICAgICAgICAgICAgICAgaSA8IGog
JiYgbWF0Y2hlckZyb21Ub2tlbnMoIHRva2Vucy5zbGljZSggaSwgaiApICksCisgICAgICAgICAg
ICAgICAgICAgIGogPCBsZW4gJiYgbWF0Y2hlckZyb21Ub2tlbnMoICh0b2tlbnMgPSB0b2tlbnMu
c2xpY2UoIGogKSkgKSwKKyAgICAgICAgICAgICAgICAgICAgaiA8IGxlbiAmJiB0b1NlbGVjdG9y
KCB0b2tlbnMgKQorICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBtYXRjaGVycy5wdXNoKCBtYXRjaGVyICk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1
cm4gZWxlbWVudE1hdGNoZXIoIG1hdGNoZXJzICk7Cit9CisKK2Z1bmN0aW9uIG1hdGNoZXJGcm9t
R3JvdXBNYXRjaGVycyggZWxlbWVudE1hdGNoZXJzLCBzZXRNYXRjaGVycyApIHsKKyAgICB2YXIg
YnlTZXQgPSBzZXRNYXRjaGVycy5sZW5ndGggPiAwLAorICAgICAgICBieUVsZW1lbnQgPSBlbGVt
ZW50TWF0Y2hlcnMubGVuZ3RoID4gMCwKKyAgICAgICAgc3VwZXJNYXRjaGVyID0gZnVuY3Rpb24o
IHNlZWQsIGNvbnRleHQsIHhtbCwgcmVzdWx0cywgb3V0ZXJtb3N0ICkgeworICAgICAgICAgICAg
dmFyIGVsZW0sIGosIG1hdGNoZXIsCisgICAgICAgICAgICAgICAgbWF0Y2hlZENvdW50ID0gMCwK
KyAgICAgICAgICAgICAgICBpID0gIjAiLAorICAgICAgICAgICAgICAgIHVubWF0Y2hlZCA9IHNl
ZWQgJiYgW10sCisgICAgICAgICAgICAgICAgc2V0TWF0Y2hlZCA9IFtdLAorICAgICAgICAgICAg
ICAgIGNvbnRleHRCYWNrdXAgPSBvdXRlcm1vc3RDb250ZXh0LAorICAgICAgICAgICAgICAgIC8v
IFdlIG11c3QgYWx3YXlzIGhhdmUgZWl0aGVyIHNlZWQgZWxlbWVudHMgb3Igb3V0ZXJtb3N0IGNv
bnRleHQKKyAgICAgICAgICAgICAgICBlbGVtcyA9IHNlZWQgfHwgYnlFbGVtZW50ICYmIEV4cHIu
ZmluZFsiVEFHIl0oICIqIiwgb3V0ZXJtb3N0ICksCisgICAgICAgICAgICAgICAgLy8gVXNlIGlu
dGVnZXIgZGlycnVucyBpZmYgdGhpcyBpcyB0aGUgb3V0ZXJtb3N0IG1hdGNoZXIKKyAgICAgICAg
ICAgICAgICBkaXJydW5zVW5pcXVlID0gKGRpcnJ1bnMgKz0gY29udGV4dEJhY2t1cCA9PSBudWxs
ID8gMSA6IE1hdGgucmFuZG9tKCkgfHwgMC4xKSwKKyAgICAgICAgICAgICAgICBsZW4gPSBlbGVt
cy5sZW5ndGg7CisKKyAgICAgICAgICAgIGlmICggb3V0ZXJtb3N0ICkgeworICAgICAgICAgICAg
ICAgIG91dGVybW9zdENvbnRleHQgPSBjb250ZXh0ID09PSBkb2N1bWVudCB8fCBjb250ZXh0IHx8
IG91dGVybW9zdDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gQWRkIGVsZW1lbnRz
IHBhc3NpbmcgZWxlbWVudE1hdGNoZXJzIGRpcmVjdGx5IHRvIHJlc3VsdHMKKyAgICAgICAgICAg
IC8vIFN1cHBvcnQ6IElFPDksIFNhZmFyaQorICAgICAgICAgICAgLy8gVG9sZXJhdGUgTm9kZUxp
c3QgcHJvcGVydGllcyAoSUU6ICJsZW5ndGgiOyBTYWZhcmk6IDxudW1iZXI+KSBtYXRjaGluZyBl
bGVtZW50cyBieSBpZAorICAgICAgICAgICAgZm9yICggOyBpICE9PSBsZW4gJiYgKGVsZW0gPSBl
bGVtc1tpXSkgIT0gbnVsbDsgaSsrICkgeworICAgICAgICAgICAgICAgIGlmICggYnlFbGVtZW50
ICYmIGVsZW0gKSB7CisgICAgICAgICAgICAgICAgICAgIGogPSAwOworICAgICAgICAgICAgICAg
ICAgICBpZiAoICFjb250ZXh0ICYmIGVsZW0ub3duZXJEb2N1bWVudCAhPT0gZG9jdW1lbnQgKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBzZXREb2N1bWVudCggZWxlbSApOworICAgICAgICAg
ICAgICAgICAgICAgICAgeG1sID0gIWRvY3VtZW50SXNIVE1MOworICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIHdoaWxlICggKG1hdGNoZXIgPSBlbGVtZW50TWF0Y2hl
cnNbaisrXSkgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIG1hdGNoZXIoIGVsZW0s
IGNvbnRleHQgfHwgZG9jdW1lbnQsIHhtbCkgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0cy5wdXNoKCBlbGVtICk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgaWYgKCBvdXRlcm1vc3QgKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBkaXJydW5zID0gZGlycnVuc1VuaXF1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIFRyYWNrIHVubWF0Y2hlZCBlbGVt
ZW50cyBmb3Igc2V0IGZpbHRlcnMKKyAgICAgICAgICAgICAgICBpZiAoIGJ5U2V0ICkgeworICAg
ICAgICAgICAgICAgICAgICAvLyBUaGV5IHdpbGwgaGF2ZSBnb25lIHRocm91Z2ggYWxsIHBvc3Np
YmxlIG1hdGNoZXJzCisgICAgICAgICAgICAgICAgICAgIGlmICggKGVsZW0gPSAhbWF0Y2hlciAm
JiBlbGVtKSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZWRDb3VudC0tOworICAg
ICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgLy8gTGVuZ3RoZW4gdGhl
IGFycmF5IGZvciBldmVyeSBlbGVtZW50LCBtYXRjaGVkIG9yIG5vdAorICAgICAgICAgICAgICAg
ICAgICBpZiAoIHNlZWQgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB1bm1hdGNoZWQucHVz
aCggZWxlbSApOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBgaWAgaXMgbm93IHRoZSBjb3VudCBvZiBlbGVt
ZW50cyB2aXNpdGVkIGFib3ZlLCBhbmQgYWRkaW5nIGl0IHRvIGBtYXRjaGVkQ291bnRgCisgICAg
ICAgICAgICAvLyBtYWtlcyB0aGUgbGF0dGVyIG5vbm5lZ2F0aXZlLgorICAgICAgICAgICAgbWF0
Y2hlZENvdW50ICs9IGk7CisKKyAgICAgICAgICAgIC8vIEFwcGx5IHNldCBmaWx0ZXJzIHRvIHVu
bWF0Y2hlZCBlbGVtZW50cworICAgICAgICAgICAgLy8gTk9URTogVGhpcyBjYW4gYmUgc2tpcHBl
ZCBpZiB0aGVyZSBhcmUgbm8gdW5tYXRjaGVkIGVsZW1lbnRzIChpLmUuLCBgbWF0Y2hlZENvdW50
YAorICAgICAgICAgICAgLy8gZXF1YWxzIGBpYCksIHVubGVzcyB3ZSBkaWRuJ3QgdmlzaXQgX2Fu
eV8gZWxlbWVudHMgaW4gdGhlIGFib3ZlIGxvb3AgYmVjYXVzZSB3ZSBoYXZlCisgICAgICAgICAg
ICAvLyBubyBlbGVtZW50IG1hdGNoZXJzIGFuZCBubyBzZWVkLgorICAgICAgICAgICAgLy8gSW5j
cmVtZW50aW5nIGFuIGluaXRpYWxseS1zdHJpbmcgIjAiIGBpYCBhbGxvd3MgYGlgIHRvIHJlbWFp
biBhIHN0cmluZyBvbmx5IGluIHRoYXQKKyAgICAgICAgICAgIC8vIGNhc2UsIHdoaWNoIHdpbGwg
cmVzdWx0IGluIGEgIjAwIiBgbWF0Y2hlZENvdW50YCB0aGF0IGRpZmZlcnMgZnJvbSBgaWAgYnV0
IGlzIGFsc28KKyAgICAgICAgICAgIC8vIG51bWVyaWNhbGx5IHplcm8uCisgICAgICAgICAgICBp
ZiAoIGJ5U2V0ICYmIGkgIT09IG1hdGNoZWRDb3VudCApIHsKKyAgICAgICAgICAgICAgICBqID0g
MDsKKyAgICAgICAgICAgICAgICB3aGlsZSAoIChtYXRjaGVyID0gc2V0TWF0Y2hlcnNbaisrXSkg
KSB7CisgICAgICAgICAgICAgICAgICAgIG1hdGNoZXIoIHVubWF0Y2hlZCwgc2V0TWF0Y2hlZCwg
Y29udGV4dCwgeG1sICk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYg
KCBzZWVkICkgeworICAgICAgICAgICAgICAgICAgICAvLyBSZWludGVncmF0ZSBlbGVtZW50IG1h
dGNoZXMgdG8gZWxpbWluYXRlIHRoZSBuZWVkIGZvciBzb3J0aW5nCisgICAgICAgICAgICAgICAg
ICAgIGlmICggbWF0Y2hlZENvdW50ID4gMCApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHdo
aWxlICggaS0tICkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggISh1bm1hdGNo
ZWRbaV0gfHwgc2V0TWF0Y2hlZFtpXSkgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNldE1hdGNoZWRbaV0gPSBwb3AuY2FsbCggcmVzdWx0cyApOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIC8vIERpc2NhcmQgaW5kZXggcGxhY2Vob2xk
ZXIgdmFsdWVzIHRvIGdldCBvbmx5IGFjdHVhbCBtYXRjaGVzCisgICAgICAgICAgICAgICAgICAg
IHNldE1hdGNoZWQgPSBjb25kZW5zZSggc2V0TWF0Y2hlZCApOworICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgIC8vIEFkZCBtYXRjaGVzIHRvIHJlc3VsdHMKKyAgICAgICAgICAg
ICAgICBwdXNoLmFwcGx5KCByZXN1bHRzLCBzZXRNYXRjaGVkICk7CisKKyAgICAgICAgICAgICAg
ICAvLyBTZWVkbGVzcyBzZXQgbWF0Y2hlcyBzdWNjZWVkaW5nIG11bHRpcGxlIHN1Y2Nlc3NmdWwg
bWF0Y2hlcnMgc3RpcHVsYXRlIHNvcnRpbmcKKyAgICAgICAgICAgICAgICBpZiAoIG91dGVybW9z
dCAmJiAhc2VlZCAmJiBzZXRNYXRjaGVkLmxlbmd0aCA+IDAgJiYKKyAgICAgICAgICAgICAgICAg
ICAgKCBtYXRjaGVkQ291bnQgKyBzZXRNYXRjaGVycy5sZW5ndGggKSA+IDEgKSB7CisKKyAgICAg
ICAgICAgICAgICAgICAgU2l6emxlLnVuaXF1ZVNvcnQoIHJlc3VsdHMgKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIE92ZXJyaWRlIG1hbmlwdWxh
dGlvbiBvZiBnbG9iYWxzIGJ5IG5lc3RlZCBtYXRjaGVycworICAgICAgICAgICAgaWYgKCBvdXRl
cm1vc3QgKSB7CisgICAgICAgICAgICAgICAgZGlycnVucyA9IGRpcnJ1bnNVbmlxdWU7CisgICAg
ICAgICAgICAgICAgb3V0ZXJtb3N0Q29udGV4dCA9IGNvbnRleHRCYWNrdXA7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHJldHVybiB1bm1hdGNoZWQ7CisgICAgICAgIH07CisKKyAgICBy
ZXR1cm4gYnlTZXQgPworICAgICAgICBtYXJrRnVuY3Rpb24oIHN1cGVyTWF0Y2hlciApIDoKKyAg
ICAgICAgc3VwZXJNYXRjaGVyOworfQorCitjb21waWxlID0gU2l6emxlLmNvbXBpbGUgPSBmdW5j
dGlvbiggc2VsZWN0b3IsIG1hdGNoIC8qIEludGVybmFsIFVzZSBPbmx5ICovICkgeworICAgIHZh
ciBpLAorICAgICAgICBzZXRNYXRjaGVycyA9IFtdLAorICAgICAgICBlbGVtZW50TWF0Y2hlcnMg
PSBbXSwKKyAgICAgICAgY2FjaGVkID0gY29tcGlsZXJDYWNoZVsgc2VsZWN0b3IgKyAiICIgXTsK
KworICAgIGlmICggIWNhY2hlZCApIHsKKyAgICAgICAgLy8gR2VuZXJhdGUgYSBmdW5jdGlvbiBv
ZiByZWN1cnNpdmUgZnVuY3Rpb25zIHRoYXQgY2FuIGJlIHVzZWQgdG8gY2hlY2sgZWFjaCBlbGVt
ZW50CisgICAgICAgIGlmICggIW1hdGNoICkgeworICAgICAgICAgICAgbWF0Y2ggPSB0b2tlbml6
ZSggc2VsZWN0b3IgKTsKKyAgICAgICAgfQorICAgICAgICBpID0gbWF0Y2gubGVuZ3RoOworICAg
ICAgICB3aGlsZSAoIGktLSApIHsKKyAgICAgICAgICAgIGNhY2hlZCA9IG1hdGNoZXJGcm9tVG9r
ZW5zKCBtYXRjaFtpXSApOworICAgICAgICAgICAgaWYgKCBjYWNoZWRbIGV4cGFuZG8gXSApIHsK
KyAgICAgICAgICAgICAgICBzZXRNYXRjaGVycy5wdXNoKCBjYWNoZWQgKTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZWxlbWVudE1hdGNoZXJzLnB1c2goIGNhY2hlZCAp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gQ2FjaGUgdGhlIGNvbXBp
bGVkIGZ1bmN0aW9uCisgICAgICAgIGNhY2hlZCA9IGNvbXBpbGVyQ2FjaGUoIHNlbGVjdG9yLCBt
YXRjaGVyRnJvbUdyb3VwTWF0Y2hlcnMoIGVsZW1lbnRNYXRjaGVycywgc2V0TWF0Y2hlcnMgKSAp
OworCisgICAgICAgIC8vIFNhdmUgc2VsZWN0b3IgYW5kIHRva2VuaXphdGlvbgorICAgICAgICBj
YWNoZWQuc2VsZWN0b3IgPSBzZWxlY3RvcjsKKyAgICB9CisgICAgcmV0dXJuIGNhY2hlZDsKK307
CisKKy8qKgorICogQSBsb3ctbGV2ZWwgc2VsZWN0aW9uIGZ1bmN0aW9uIHRoYXQgd29ya3Mgd2l0
aCBTaXp6bGUncyBjb21waWxlZAorICogIHNlbGVjdG9yIGZ1bmN0aW9ucworICogQHBhcmFtIHtT
dHJpbmd8RnVuY3Rpb259IHNlbGVjdG9yIEEgc2VsZWN0b3Igb3IgYSBwcmUtY29tcGlsZWQKKyAq
ICBzZWxlY3RvciBmdW5jdGlvbiBidWlsdCB3aXRoIFNpenpsZS5jb21waWxlCisgKiBAcGFyYW0g
e0VsZW1lbnR9IGNvbnRleHQKKyAqIEBwYXJhbSB7QXJyYXl9IFtyZXN1bHRzXQorICogQHBhcmFt
IHtBcnJheX0gW3NlZWRdIEEgc2V0IG9mIGVsZW1lbnRzIHRvIG1hdGNoIGFnYWluc3QKKyAqLwor
c2VsZWN0ID0gU2l6emxlLnNlbGVjdCA9IGZ1bmN0aW9uKCBzZWxlY3RvciwgY29udGV4dCwgcmVz
dWx0cywgc2VlZCApIHsKKyAgICB2YXIgaSwgdG9rZW5zLCB0b2tlbiwgdHlwZSwgZmluZCwKKyAg
ICAgICAgY29tcGlsZWQgPSB0eXBlb2Ygc2VsZWN0b3IgPT09ICJmdW5jdGlvbiIgJiYgc2VsZWN0
b3IsCisgICAgICAgIG1hdGNoID0gIXNlZWQgJiYgdG9rZW5pemUoIChzZWxlY3RvciA9IGNvbXBp
bGVkLnNlbGVjdG9yIHx8IHNlbGVjdG9yKSApOworCisgICAgcmVzdWx0cyA9IHJlc3VsdHMgfHwg
W107CisKKyAgICAvLyBUcnkgdG8gbWluaW1pemUgb3BlcmF0aW9ucyBpZiB0aGVyZSBpcyBvbmx5
IG9uZSBzZWxlY3RvciBpbiB0aGUgbGlzdCBhbmQgbm8gc2VlZAorICAgIC8vICh0aGUgbGF0dGVy
IG9mIHdoaWNoIGd1YXJhbnRlZXMgdXMgY29udGV4dCkKKyAgICBpZiAoIG1hdGNoLmxlbmd0aCA9
PT0gMSApIHsKKworICAgICAgICAvLyBSZWR1Y2UgY29udGV4dCBpZiB0aGUgbGVhZGluZyBjb21w
b3VuZCBzZWxlY3RvciBpcyBhbiBJRAorICAgICAgICB0b2tlbnMgPSBtYXRjaFswXSA9IG1hdGNo
WzBdLnNsaWNlKCAwICk7CisgICAgICAgIGlmICggdG9rZW5zLmxlbmd0aCA+IDIgJiYgKHRva2Vu
ID0gdG9rZW5zWzBdKS50eXBlID09PSAiSUQiICYmCisgICAgICAgICAgICAgICAgY29udGV4dC5u
b2RlVHlwZSA9PT0gOSAmJiBkb2N1bWVudElzSFRNTCAmJiBFeHByLnJlbGF0aXZlWyB0b2tlbnNb
MV0udHlwZSBdICkgeworCisgICAgICAgICAgICBjb250ZXh0ID0gKCBFeHByLmZpbmRbIklEIl0o
IHRva2VuLm1hdGNoZXNbMF0ucmVwbGFjZShydW5lc2NhcGUsIGZ1bmVzY2FwZSksIGNvbnRleHQg
KSB8fCBbXSApWzBdOworICAgICAgICAgICAgaWYgKCAhY29udGV4dCApIHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0czsKKworICAgICAgICAgICAgLy8gUHJlY29tcGlsZWQgbWF0Y2hl
cnMgd2lsbCBzdGlsbCB2ZXJpZnkgYW5jZXN0cnksIHNvIHN0ZXAgdXAgYSBsZXZlbAorICAgICAg
ICAgICAgfSBlbHNlIGlmICggY29tcGlsZWQgKSB7CisgICAgICAgICAgICAgICAgY29udGV4dCA9
IGNvbnRleHQucGFyZW50Tm9kZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc2VsZWN0
b3IgPSBzZWxlY3Rvci5zbGljZSggdG9rZW5zLnNoaWZ0KCkudmFsdWUubGVuZ3RoICk7CisgICAg
ICAgIH0KKworICAgICAgICAvLyBGZXRjaCBhIHNlZWQgc2V0IGZvciByaWdodC10by1sZWZ0IG1h
dGNoaW5nCisgICAgICAgIGkgPSBtYXRjaEV4cHJbIm5lZWRzQ29udGV4dCJdLnRlc3QoIHNlbGVj
dG9yICkgPyAwIDogdG9rZW5zLmxlbmd0aDsKKyAgICAgICAgd2hpbGUgKCBpLS0gKSB7CisgICAg
ICAgICAgICB0b2tlbiA9IHRva2Vuc1tpXTsKKworICAgICAgICAgICAgLy8gQWJvcnQgaWYgd2Ug
aGl0IGEgY29tYmluYXRvcgorICAgICAgICAgICAgaWYgKCBFeHByLnJlbGF0aXZlWyAodHlwZSA9
IHRva2VuLnR5cGUpIF0gKSB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBpZiAoIChmaW5kID0gRXhwci5maW5kWyB0eXBlIF0pICkgeworICAgICAg
ICAgICAgICAgIC8vIFNlYXJjaCwgZXhwYW5kaW5nIGNvbnRleHQgZm9yIGxlYWRpbmcgc2libGlu
ZyBjb21iaW5hdG9ycworICAgICAgICAgICAgICAgIGlmICggKHNlZWQgPSBmaW5kKAorICAgICAg
ICAgICAgICAgICAgICB0b2tlbi5tYXRjaGVzWzBdLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNj
YXBlICksCisgICAgICAgICAgICAgICAgICAgIHJzaWJsaW5nLnRlc3QoIHRva2Vuc1swXS50eXBl
ICkgJiYgdGVzdENvbnRleHQoIGNvbnRleHQucGFyZW50Tm9kZSApIHx8IGNvbnRleHQKKyAgICAg
ICAgICAgICAgICApKSApIHsKKworICAgICAgICAgICAgICAgICAgICAvLyBJZiBzZWVkIGlzIGVt
cHR5IG9yIG5vIHRva2VucyByZW1haW4sIHdlIGNhbiByZXR1cm4gZWFybHkKKyAgICAgICAgICAg
ICAgICAgICAgdG9rZW5zLnNwbGljZSggaSwgMSApOworICAgICAgICAgICAgICAgICAgICBzZWxl
Y3RvciA9IHNlZWQubGVuZ3RoICYmIHRvU2VsZWN0b3IoIHRva2VucyApOworICAgICAgICAgICAg
ICAgICAgICBpZiAoICFzZWxlY3RvciApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2gu
YXBwbHkoIHJlc3VsdHMsIHNlZWQgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBy
ZXN1bHRzOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
CisgICAgLy8gQ29tcGlsZSBhbmQgZXhlY3V0ZSBhIGZpbHRlcmluZyBmdW5jdGlvbiBpZiBvbmUg
aXMgbm90IHByb3ZpZGVkCisgICAgLy8gUHJvdmlkZSBgbWF0Y2hgIHRvIGF2b2lkIHJldG9rZW5p
emF0aW9uIGlmIHdlIG1vZGlmaWVkIHRoZSBzZWxlY3RvciBhYm92ZQorICAgICggY29tcGlsZWQg
fHwgY29tcGlsZSggc2VsZWN0b3IsIG1hdGNoICkgKSgKKyAgICAgICAgc2VlZCwKKyAgICAgICAg
Y29udGV4dCwKKyAgICAgICAgIWRvY3VtZW50SXNIVE1MLAorICAgICAgICByZXN1bHRzLAorICAg
ICAgICAhY29udGV4dCB8fCByc2libGluZy50ZXN0KCBzZWxlY3RvciApICYmIHRlc3RDb250ZXh0
KCBjb250ZXh0LnBhcmVudE5vZGUgKSB8fCBjb250ZXh0CisgICAgKTsKKyAgICByZXR1cm4gcmVz
dWx0czsKK307CisKKy8vIE9uZS10aW1lIGFzc2lnbm1lbnRzCisKKy8vIFNvcnQgc3RhYmlsaXR5
CitzdXBwb3J0LnNvcnRTdGFibGUgPSBleHBhbmRvLnNwbGl0KCIiKS5zb3J0KCBzb3J0T3JkZXIg
KS5qb2luKCIiKSA9PT0gZXhwYW5kbzsKKworLy8gU3VwcG9ydDogQ2hyb21lIDE0LTM1KworLy8g
QWx3YXlzIGFzc3VtZSBkdXBsaWNhdGVzIGlmIHRoZXkgYXJlbid0IHBhc3NlZCB0byB0aGUgY29t
cGFyaXNvbiBmdW5jdGlvbgorc3VwcG9ydC5kZXRlY3REdXBsaWNhdGVzID0gISFoYXNEdXBsaWNh
dGU7CisKKy8vIEluaXRpYWxpemUgYWdhaW5zdCB0aGUgZGVmYXVsdCBkb2N1bWVudAorc2V0RG9j
dW1lbnQoKTsKKworLy8gU3VwcG9ydDogV2Via2l0PDUzNy4zMiAtIFNhZmFyaSA2LjAuMy9DaHJv
bWUgMjUgKGZpeGVkIGluIENocm9tZSAyNykKKy8vIERldGFjaGVkIG5vZGVzIGNvbmZvdW5kaW5n
bHkgZm9sbG93ICplYWNoIG90aGVyKgorc3VwcG9ydC5zb3J0RGV0YWNoZWQgPSBhc3NlcnQoZnVu
Y3Rpb24oIGVsICkgeworICAgIC8vIFNob3VsZCByZXR1cm4gMSwgYnV0IHJldHVybnMgNCAoZm9s
bG93aW5nKQorICAgIHJldHVybiBlbC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiggZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZmllbGRzZXQiKSApICYgMTsKK30pOworCisvLyBTdXBwb3J0OiBJRTw4
CisvLyBQcmV2ZW50IGF0dHJpYnV0ZS9wcm9wZXJ0eSAiaW50ZXJwb2xhdGlvbiIKKy8vIGh0dHBz
Oi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvbXM1MzY0MjklMjhWUy44NSUyOS5h
c3B4CitpZiAoICFhc3NlcnQoZnVuY3Rpb24oIGVsICkgeworICAgIGVsLmlubmVySFRNTCA9ICI8
YSBocmVmPScjJz48L2E+IjsKKyAgICByZXR1cm4gZWwuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUo
ImhyZWYiKSA9PT0gIiMiIDsKK30pICkgeworICAgIGFkZEhhbmRsZSggInR5cGV8aHJlZnxoZWln
aHR8d2lkdGgiLCBmdW5jdGlvbiggZWxlbSwgbmFtZSwgaXNYTUwgKSB7CisgICAgICAgIGlmICgg
IWlzWE1MICkgeworICAgICAgICAgICAgcmV0dXJuIGVsZW0uZ2V0QXR0cmlidXRlKCBuYW1lLCBu
YW1lLnRvTG93ZXJDYXNlKCkgPT09ICJ0eXBlIiA/IDEgOiAyICk7CisgICAgICAgIH0KKyAgICB9
KTsKK30KKworLy8gU3VwcG9ydDogSUU8OQorLy8gVXNlIGRlZmF1bHRWYWx1ZSBpbiBwbGFjZSBv
ZiBnZXRBdHRyaWJ1dGUoInZhbHVlIikKK2lmICggIXN1cHBvcnQuYXR0cmlidXRlcyB8fCAhYXNz
ZXJ0KGZ1bmN0aW9uKCBlbCApIHsKKyAgICBlbC5pbm5lckhUTUwgPSAiPGlucHV0Lz4iOworICAg
IGVsLmZpcnN0Q2hpbGQuc2V0QXR0cmlidXRlKCAidmFsdWUiLCAiIiApOworICAgIHJldHVybiBl
bC5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSggInZhbHVlIiApID09PSAiIjsKK30pICkgeworICAg
IGFkZEhhbmRsZSggInZhbHVlIiwgZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGlzWE1MICkgeworICAg
ICAgICBpZiAoICFpc1hNTCAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICJpbnB1
dCIgKSB7CisgICAgICAgICAgICByZXR1cm4gZWxlbS5kZWZhdWx0VmFsdWU7CisgICAgICAgIH0K
KyAgICB9KTsKK30KKworLy8gU3VwcG9ydDogSUU8OQorLy8gVXNlIGdldEF0dHJpYnV0ZU5vZGUg
dG8gZmV0Y2ggYm9vbGVhbnMgd2hlbiBnZXRBdHRyaWJ1dGUgbGllcworaWYgKCAhYXNzZXJ0KGZ1
bmN0aW9uKCBlbCApIHsKKyAgICByZXR1cm4gZWwuZ2V0QXR0cmlidXRlKCJkaXNhYmxlZCIpID09
IG51bGw7Cit9KSApIHsKKyAgICBhZGRIYW5kbGUoIGJvb2xlYW5zLCBmdW5jdGlvbiggZWxlbSwg
bmFtZSwgaXNYTUwgKSB7CisgICAgICAgIHZhciB2YWw7CisgICAgICAgIGlmICggIWlzWE1MICkg
eworICAgICAgICAgICAgcmV0dXJuIGVsZW1bIG5hbWUgXSA9PT0gdHJ1ZSA/IG5hbWUudG9Mb3dl
ckNhc2UoKSA6CisgICAgICAgICAgICAgICAgICAgICh2YWwgPSBlbGVtLmdldEF0dHJpYnV0ZU5v
ZGUoIG5hbWUgKSkgJiYgdmFsLnNwZWNpZmllZCA/CisgICAgICAgICAgICAgICAgICAgIHZhbC52
YWx1ZSA6CisgICAgICAgICAgICAgICAgbnVsbDsKKyAgICAgICAgfQorICAgIH0pOworfQorCity
ZXR1cm4gU2l6emxlOworCit9KSggd2luZG93ICk7CisKKworCitqUXVlcnkuZmluZCA9IFNpenps
ZTsKK2pRdWVyeS5leHByID0gU2l6emxlLnNlbGVjdG9yczsKKworLy8gRGVwcmVjYXRlZAoralF1
ZXJ5LmV4cHJbICI6IiBdID0galF1ZXJ5LmV4cHIucHNldWRvczsKK2pRdWVyeS51bmlxdWVTb3J0
ID0galF1ZXJ5LnVuaXF1ZSA9IFNpenpsZS51bmlxdWVTb3J0OworalF1ZXJ5LnRleHQgPSBTaXp6
bGUuZ2V0VGV4dDsKK2pRdWVyeS5pc1hNTERvYyA9IFNpenpsZS5pc1hNTDsKK2pRdWVyeS5jb250
YWlucyA9IFNpenpsZS5jb250YWluczsKK2pRdWVyeS5lc2NhcGVTZWxlY3RvciA9IFNpenpsZS5l
c2NhcGU7CisKKworCisKK3ZhciBkaXIgPSBmdW5jdGlvbiggZWxlbSwgZGlyLCB1bnRpbCApIHsK
KyAgICB2YXIgbWF0Y2hlZCA9IFtdLAorICAgICAgICB0cnVuY2F0ZSA9IHVudGlsICE9PSB1bmRl
ZmluZWQ7CisKKyAgICB3aGlsZSAoICggZWxlbSA9IGVsZW1bIGRpciBdICkgJiYgZWxlbS5ub2Rl
VHlwZSAhPT0gOSApIHsKKyAgICAgICAgaWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICkgeworICAg
ICAgICAgICAgaWYgKCB0cnVuY2F0ZSAmJiBqUXVlcnkoIGVsZW0gKS5pcyggdW50aWwgKSApIHsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1hdGNo
ZWQucHVzaCggZWxlbSApOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBtYXRjaGVkOwor
fTsKKworCit2YXIgc2libGluZ3MgPSBmdW5jdGlvbiggbiwgZWxlbSApIHsKKyAgICB2YXIgbWF0
Y2hlZCA9IFtdOworCisgICAgZm9yICggOyBuOyBuID0gbi5uZXh0U2libGluZyApIHsKKyAgICAg
ICAgaWYgKCBuLm5vZGVUeXBlID09PSAxICYmIG4gIT09IGVsZW0gKSB7CisgICAgICAgICAgICBt
YXRjaGVkLnB1c2goIG4gKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBtYXRjaGVk
OworfTsKKworCit2YXIgcm5lZWRzQ29udGV4dCA9IGpRdWVyeS5leHByLm1hdGNoLm5lZWRzQ29u
dGV4dDsKKwordmFyIHJzaW5nbGVUYWcgPSAoIC9ePChbYS16XVteXC9cMD46XHgyMFx0XHJcblxm
XSopW1x4MjBcdFxyXG5cZl0qXC8/Pig/OjxcL1wxPnwpJC9pICk7CisKKworCit2YXIgcmlzU2lt
cGxlID0gL14uW146I1xbXC4sXSokLzsKKworLy8gSW1wbGVtZW50IHRoZSBpZGVudGljYWwgZnVu
Y3Rpb25hbGl0eSBmb3IgZmlsdGVyIGFuZCBub3QKK2Z1bmN0aW9uIHdpbm5vdyggZWxlbWVudHMs
IHF1YWxpZmllciwgbm90ICkgeworICAgIGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIHF1YWxpZmll
ciApICkgeworICAgICAgICByZXR1cm4galF1ZXJ5LmdyZXAoIGVsZW1lbnRzLCBmdW5jdGlvbigg
ZWxlbSwgaSApIHsKKyAgICAgICAgICAgIHJldHVybiAhIXF1YWxpZmllci5jYWxsKCBlbGVtLCBp
LCBlbGVtICkgIT09IG5vdDsKKyAgICAgICAgfSApOworICAgIH0KKworICAgIC8vIFNpbmdsZSBl
bGVtZW50CisgICAgaWYgKCBxdWFsaWZpZXIubm9kZVR5cGUgKSB7CisgICAgICAgIHJldHVybiBq
UXVlcnkuZ3JlcCggZWxlbWVudHMsIGZ1bmN0aW9uKCBlbGVtICkgeworICAgICAgICAgICAgcmV0
dXJuICggZWxlbSA9PT0gcXVhbGlmaWVyICkgIT09IG5vdDsKKyAgICAgICAgfSApOworICAgIH0K
KworICAgIC8vIEFycmF5bGlrZSBvZiBlbGVtZW50cyAoalF1ZXJ5LCBhcmd1bWVudHMsIEFycmF5
KQorICAgIGlmICggdHlwZW9mIHF1YWxpZmllciAhPT0gInN0cmluZyIgKSB7CisgICAgICAgIHJl
dHVybiBqUXVlcnkuZ3JlcCggZWxlbWVudHMsIGZ1bmN0aW9uKCBlbGVtICkgeworICAgICAgICAg
ICAgcmV0dXJuICggaW5kZXhPZi5jYWxsKCBxdWFsaWZpZXIsIGVsZW0gKSA+IC0xICkgIT09IG5v
dDsKKyAgICAgICAgfSApOworICAgIH0KKworICAgIC8vIFNpbXBsZSBzZWxlY3RvciB0aGF0IGNh
biBiZSBmaWx0ZXJlZCBkaXJlY3RseSwgcmVtb3Zpbmcgbm9uLUVsZW1lbnRzCisgICAgaWYgKCBy
aXNTaW1wbGUudGVzdCggcXVhbGlmaWVyICkgKSB7CisgICAgICAgIHJldHVybiBqUXVlcnkuZmls
dGVyKCBxdWFsaWZpZXIsIGVsZW1lbnRzLCBub3QgKTsKKyAgICB9CisKKyAgICAvLyBDb21wbGV4
IHNlbGVjdG9yLCBjb21wYXJlIHRoZSB0d28gc2V0cywgcmVtb3Zpbmcgbm9uLUVsZW1lbnRzCisg
ICAgcXVhbGlmaWVyID0galF1ZXJ5LmZpbHRlciggcXVhbGlmaWVyLCBlbGVtZW50cyApOworICAg
IHJldHVybiBqUXVlcnkuZ3JlcCggZWxlbWVudHMsIGZ1bmN0aW9uKCBlbGVtICkgeworICAgICAg
ICByZXR1cm4gKCBpbmRleE9mLmNhbGwoIHF1YWxpZmllciwgZWxlbSApID4gLTEgKSAhPT0gbm90
ICYmIGVsZW0ubm9kZVR5cGUgPT09IDE7CisgICAgfSApOworfQorCitqUXVlcnkuZmlsdGVyID0g
ZnVuY3Rpb24oIGV4cHIsIGVsZW1zLCBub3QgKSB7CisgICAgdmFyIGVsZW0gPSBlbGVtc1sgMCBd
OworCisgICAgaWYgKCBub3QgKSB7CisgICAgICAgIGV4cHIgPSAiOm5vdCgiICsgZXhwciArICIp
IjsKKyAgICB9CisKKyAgICBpZiAoIGVsZW1zLmxlbmd0aCA9PT0gMSAmJiBlbGVtLm5vZGVUeXBl
ID09PSAxICkgeworICAgICAgICByZXR1cm4galF1ZXJ5LmZpbmQubWF0Y2hlc1NlbGVjdG9yKCBl
bGVtLCBleHByICkgPyBbIGVsZW0gXSA6IFtdOworICAgIH0KKworICAgIHJldHVybiBqUXVlcnku
ZmluZC5tYXRjaGVzKCBleHByLCBqUXVlcnkuZ3JlcCggZWxlbXMsIGZ1bmN0aW9uKCBlbGVtICkg
eworICAgICAgICByZXR1cm4gZWxlbS5ub2RlVHlwZSA9PT0gMTsKKyAgICB9ICkgKTsKK307CisK
K2pRdWVyeS5mbi5leHRlbmQoIHsKKyAgICBmaW5kOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7Cisg
ICAgICAgIHZhciBpLCByZXQsCisgICAgICAgICAgICBsZW4gPSB0aGlzLmxlbmd0aCwKKyAgICAg
ICAgICAgIHNlbGYgPSB0aGlzOworCisgICAgICAgIGlmICggdHlwZW9mIHNlbGVjdG9yICE9PSAi
c3RyaW5nIiApIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLnB1c2hTdGFjayggalF1ZXJ5KCBz
ZWxlY3RvciApLmZpbHRlciggZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgZm9yICggaSA9
IDA7IGkgPCBsZW47IGkrKyApIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCBqUXVlcnkuY29u
dGFpbnMoIHNlbGZbIGkgXSwgdGhpcyApICkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9ICkgKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldCA9IHRoaXMucHVzaFN0YWNr
KCBbXSApOworCisgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgbGVuOyBpKysgKSB7CisgICAgICAg
ICAgICBqUXVlcnkuZmluZCggc2VsZWN0b3IsIHNlbGZbIGkgXSwgcmV0ICk7CisgICAgICAgIH0K
KworICAgICAgICByZXR1cm4gbGVuID4gMSA/IGpRdWVyeS51bmlxdWVTb3J0KCByZXQgKSA6IHJl
dDsKKyAgICB9LAorICAgIGZpbHRlcjogZnVuY3Rpb24oIHNlbGVjdG9yICkgeworICAgICAgICBy
ZXR1cm4gdGhpcy5wdXNoU3RhY2soIHdpbm5vdyggdGhpcywgc2VsZWN0b3IgfHwgW10sIGZhbHNl
ICkgKTsKKyAgICB9LAorICAgIG5vdDogZnVuY3Rpb24oIHNlbGVjdG9yICkgeworICAgICAgICBy
ZXR1cm4gdGhpcy5wdXNoU3RhY2soIHdpbm5vdyggdGhpcywgc2VsZWN0b3IgfHwgW10sIHRydWUg
KSApOworICAgIH0sCisgICAgaXM6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHsKKyAgICAgICAgcmV0
dXJuICEhd2lubm93KAorICAgICAgICAgICAgdGhpcywKKworICAgICAgICAgICAgLy8gSWYgdGhp
cyBpcyBhIHBvc2l0aW9uYWwvcmVsYXRpdmUgc2VsZWN0b3IsIGNoZWNrIG1lbWJlcnNoaXAgaW4g
dGhlIHJldHVybmVkIHNldAorICAgICAgICAgICAgLy8gc28gJCgicDpmaXJzdCIpLmlzKCJwOmxh
c3QiKSB3b24ndCByZXR1cm4gdHJ1ZSBmb3IgYSBkb2Mgd2l0aCB0d28gInAiLgorICAgICAgICAg
ICAgdHlwZW9mIHNlbGVjdG9yID09PSAic3RyaW5nIiAmJiBybmVlZHNDb250ZXh0LnRlc3QoIHNl
bGVjdG9yICkgPworICAgICAgICAgICAgICAgIGpRdWVyeSggc2VsZWN0b3IgKSA6CisgICAgICAg
ICAgICAgICAgc2VsZWN0b3IgfHwgW10sCisgICAgICAgICAgICBmYWxzZQorICAgICAgICApLmxl
bmd0aDsKKyAgICB9Cit9ICk7CisKKworLy8gSW5pdGlhbGl6ZSBhIGpRdWVyeSBvYmplY3QKKwor
CisvLyBBIGNlbnRyYWwgcmVmZXJlbmNlIHRvIHRoZSByb290IGpRdWVyeShkb2N1bWVudCkKK3Zh
ciByb290alF1ZXJ5LAorCisgICAgLy8gQSBzaW1wbGUgd2F5IHRvIGNoZWNrIGZvciBIVE1MIHN0
cmluZ3MKKyAgICAvLyBQcmlvcml0aXplICNpZCBvdmVyIDx0YWc+IHRvIGF2b2lkIFhTUyB2aWEg
bG9jYXRpb24uaGFzaCAoIzk1MjEpCisgICAgLy8gU3RyaWN0IEhUTUwgcmVjb2duaXRpb24gKCMx
MTI5MDogbXVzdCBzdGFydCB3aXRoIDwpCisgICAgLy8gU2hvcnRjdXQgc2ltcGxlICNpZCBjYXNl
IGZvciBzcGVlZAorICAgIHJxdWlja0V4cHIgPSAvXig/OlxzKig8W1x3XFddKz4pW14+XSp8Iyhb
XHctXSspKSQvLAorCisgICAgaW5pdCA9IGpRdWVyeS5mbi5pbml0ID0gZnVuY3Rpb24oIHNlbGVj
dG9yLCBjb250ZXh0LCByb290ICkgeworICAgICAgICB2YXIgbWF0Y2gsIGVsZW07CisKKyAgICAg
ICAgLy8gSEFORExFOiAkKCIiKSwgJChudWxsKSwgJCh1bmRlZmluZWQpLCAkKGZhbHNlKQorICAg
ICAgICBpZiAoICFzZWxlY3RvciApIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAg
ICB9CisKKyAgICAgICAgLy8gTWV0aG9kIGluaXQoKSBhY2NlcHRzIGFuIGFsdGVybmF0ZSByb290
alF1ZXJ5CisgICAgICAgIC8vIHNvIG1pZ3JhdGUgY2FuIHN1cHBvcnQgalF1ZXJ5LnN1YiAoZ2gt
MjEwMSkKKyAgICAgICAgcm9vdCA9IHJvb3QgfHwgcm9vdGpRdWVyeTsKKworICAgICAgICAvLyBI
YW5kbGUgSFRNTCBzdHJpbmdzCisgICAgICAgIGlmICggdHlwZW9mIHNlbGVjdG9yID09PSAic3Ry
aW5nIiApIHsKKyAgICAgICAgICAgIGlmICggc2VsZWN0b3JbIDAgXSA9PT0gIjwiICYmCisgICAg
ICAgICAgICAgICAgc2VsZWN0b3JbIHNlbGVjdG9yLmxlbmd0aCAtIDEgXSA9PT0gIj4iICYmCisg
ICAgICAgICAgICAgICAgc2VsZWN0b3IubGVuZ3RoID49IDMgKSB7CisKKyAgICAgICAgICAgICAg
ICAvLyBBc3N1bWUgdGhhdCBzdHJpbmdzIHRoYXQgc3RhcnQgYW5kIGVuZCB3aXRoIDw+IGFyZSBI
VE1MIGFuZCBza2lwIHRoZSByZWdleCBjaGVjaworICAgICAgICAgICAgICAgIG1hdGNoID0gWyBu
dWxsLCBzZWxlY3RvciwgbnVsbCBdOworCisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIG1hdGNoID0gcnF1aWNrRXhwci5leGVjKCBzZWxlY3RvciApOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAvLyBNYXRjaCBodG1sIG9yIG1ha2Ugc3VyZSBubyBjb250ZXh0IGlz
IHNwZWNpZmllZCBmb3IgI2lkCisgICAgICAgICAgICBpZiAoIG1hdGNoICYmICggbWF0Y2hbIDEg
XSB8fCAhY29udGV4dCApICkgeworCisgICAgICAgICAgICAgICAgLy8gSEFORExFOiAkKGh0bWwp
IC0+ICQoYXJyYXkpCisgICAgICAgICAgICAgICAgaWYgKCBtYXRjaFsgMSBdICkgeworICAgICAg
ICAgICAgICAgICAgICBjb250ZXh0ID0gY29udGV4dCBpbnN0YW5jZW9mIGpRdWVyeSA/IGNvbnRl
eHRbIDAgXSA6IGNvbnRleHQ7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gT3B0aW9uIHRvIHJ1
biBzY3JpcHRzIGlzIHRydWUgZm9yIGJhY2stY29tcGF0CisgICAgICAgICAgICAgICAgICAgIC8v
IEludGVudGlvbmFsbHkgbGV0IHRoZSBlcnJvciBiZSB0aHJvd24gaWYgcGFyc2VIVE1MIGlzIG5v
dCBwcmVzZW50CisgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5tZXJnZSggdGhpcywgalF1ZXJ5
LnBhcnNlSFRNTCgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWyAxIF0sCisgICAgICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0ICYmIGNvbnRleHQubm9kZVR5cGUgPyBjb250ZXh0Lm93
bmVyRG9jdW1lbnQgfHwgY29udGV4dCA6IGRvY3VtZW50LAorICAgICAgICAgICAgICAgICAgICAg
ICAgdHJ1ZQorICAgICAgICAgICAgICAgICAgICApICk7CisKKyAgICAgICAgICAgICAgICAgICAg
Ly8gSEFORExFOiAkKGh0bWwsIHByb3BzKQorICAgICAgICAgICAgICAgICAgICBpZiAoIHJzaW5n
bGVUYWcudGVzdCggbWF0Y2hbIDEgXSApICYmIGpRdWVyeS5pc1BsYWluT2JqZWN0KCBjb250ZXh0
ICkgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKCBtYXRjaCBpbiBjb250ZXh0ICkg
eworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUHJvcGVydGllcyBvZiBjb250ZXh0
IGFyZSBjYWxsZWQgYXMgbWV0aG9kcyBpZiBwb3NzaWJsZQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIHRoaXNbIG1hdGNoIF0gKSApIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpc1sgbWF0Y2ggXSggY29udGV4dFsgbWF0Y2gg
XSApOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLi4uYW5kIG90aGVyd2lzZSBz
ZXQgYXMgYXR0cmlidXRlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXR0ciggbWF0Y2gsIGNvbnRleHRb
IG1hdGNoIF0gKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdGhpczsKKworICAgICAgICAgICAgICAgIC8vIEhBTkRMRTogJCgjaWQpCisgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZWxlbSA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCBtYXRjaFsgMiBdICk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYg
KCBlbGVtICkgeworCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBJbmplY3QgdGhlIGVsZW1l
bnQgZGlyZWN0bHkgaW50byB0aGUgalF1ZXJ5IG9iamVjdAorICAgICAgICAgICAgICAgICAgICAg
ICAgdGhpc1sgMCBdID0gZWxlbTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGVuZ3Ro
ID0gMTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dGhpczsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEhBTkRMRTogJChleHBy
LCAkKC4uLikpCisgICAgICAgICAgICB9IGVsc2UgaWYgKCAhY29udGV4dCB8fCBjb250ZXh0Lmpx
dWVyeSApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gKCBjb250ZXh0IHx8IHJvb3QgKS5maW5k
KCBzZWxlY3RvciApOworCisgICAgICAgICAgICAvLyBIQU5ETEU6ICQoZXhwciwgY29udGV4dCkK
KyAgICAgICAgICAgIC8vICh3aGljaCBpcyBqdXN0IGVxdWl2YWxlbnQgdG86ICQoY29udGV4dCku
ZmluZChleHByKQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
dGhpcy5jb25zdHJ1Y3RvciggY29udGV4dCApLmZpbmQoIHNlbGVjdG9yICk7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgLy8gSEFORExFOiAkKERPTUVsZW1lbnQpCisgICAgICAgIH0gZWxzZSBp
ZiAoIHNlbGVjdG9yLm5vZGVUeXBlICkgeworICAgICAgICAgICAgdGhpc1sgMCBdID0gc2VsZWN0
b3I7CisgICAgICAgICAgICB0aGlzLmxlbmd0aCA9IDE7CisgICAgICAgICAgICByZXR1cm4gdGhp
czsKKworICAgICAgICAvLyBIQU5ETEU6ICQoZnVuY3Rpb24pCisgICAgICAgIC8vIFNob3J0Y3V0
IGZvciBkb2N1bWVudCByZWFkeQorICAgICAgICB9IGVsc2UgaWYgKCBqUXVlcnkuaXNGdW5jdGlv
biggc2VsZWN0b3IgKSApIHsKKyAgICAgICAgICAgIHJldHVybiByb290LnJlYWR5ICE9PSB1bmRl
ZmluZWQgPworICAgICAgICAgICAgICAgIHJvb3QucmVhZHkoIHNlbGVjdG9yICkgOgorCisgICAg
ICAgICAgICAgICAgLy8gRXhlY3V0ZSBpbW1lZGlhdGVseSBpZiByZWFkeSBpcyBub3QgcHJlc2Vu
dAorICAgICAgICAgICAgICAgIHNlbGVjdG9yKCBqUXVlcnkgKTsKKyAgICAgICAgfQorCisgICAg
ICAgIHJldHVybiBqUXVlcnkubWFrZUFycmF5KCBzZWxlY3RvciwgdGhpcyApOworICAgIH07CisK
Ky8vIEdpdmUgdGhlIGluaXQgZnVuY3Rpb24gdGhlIGpRdWVyeSBwcm90b3R5cGUgZm9yIGxhdGVy
IGluc3RhbnRpYXRpb24KK2luaXQucHJvdG90eXBlID0galF1ZXJ5LmZuOworCisvLyBJbml0aWFs
aXplIGNlbnRyYWwgcmVmZXJlbmNlCityb290alF1ZXJ5ID0galF1ZXJ5KCBkb2N1bWVudCApOwor
CisKK3ZhciBycGFyZW50c3ByZXYgPSAvXig/OnBhcmVudHN8cHJldig/OlVudGlsfEFsbCkpLywK
KworICAgIC8vIE1ldGhvZHMgZ3VhcmFudGVlZCB0byBwcm9kdWNlIGEgdW5pcXVlIHNldCB3aGVu
IHN0YXJ0aW5nIGZyb20gYSB1bmlxdWUgc2V0CisgICAgZ3VhcmFudGVlZFVuaXF1ZSA9IHsKKyAg
ICAgICAgY2hpbGRyZW46IHRydWUsCisgICAgICAgIGNvbnRlbnRzOiB0cnVlLAorICAgICAgICBu
ZXh0OiB0cnVlLAorICAgICAgICBwcmV2OiB0cnVlCisgICAgfTsKKworalF1ZXJ5LmZuLmV4dGVu
ZCggeworICAgIGhhczogZnVuY3Rpb24oIHRhcmdldCApIHsKKyAgICAgICAgdmFyIHRhcmdldHMg
PSBqUXVlcnkoIHRhcmdldCwgdGhpcyApLAorICAgICAgICAgICAgbCA9IHRhcmdldHMubGVuZ3Ro
OworCisgICAgICAgIHJldHVybiB0aGlzLmZpbHRlciggZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICB2YXIgaSA9IDA7CisgICAgICAgICAgICBmb3IgKCA7IGkgPCBsOyBpKysgKSB7CisgICAgICAg
ICAgICAgICAgaWYgKCBqUXVlcnkuY29udGFpbnMoIHRoaXMsIHRhcmdldHNbIGkgXSApICkgewor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgIH0gKTsKKyAgICB9LAorCisgICAgY2xvc2VzdDogZnVuY3Rpb24o
IHNlbGVjdG9ycywgY29udGV4dCApIHsKKyAgICAgICAgdmFyIGN1ciwKKyAgICAgICAgICAgIGkg
PSAwLAorICAgICAgICAgICAgbCA9IHRoaXMubGVuZ3RoLAorICAgICAgICAgICAgbWF0Y2hlZCA9
IFtdLAorICAgICAgICAgICAgdGFyZ2V0cyA9IHR5cGVvZiBzZWxlY3RvcnMgIT09ICJzdHJpbmci
ICYmIGpRdWVyeSggc2VsZWN0b3JzICk7CisKKyAgICAgICAgLy8gUG9zaXRpb25hbCBzZWxlY3Rv
cnMgbmV2ZXIgbWF0Y2gsIHNpbmNlIHRoZXJlJ3Mgbm8gX3NlbGVjdGlvbl8gY29udGV4dAorICAg
ICAgICBpZiAoICFybmVlZHNDb250ZXh0LnRlc3QoIHNlbGVjdG9ycyApICkgeworICAgICAgICAg
ICAgZm9yICggOyBpIDwgbDsgaSsrICkgeworICAgICAgICAgICAgICAgIGZvciAoIGN1ciA9IHRo
aXNbIGkgXTsgY3VyICYmIGN1ciAhPT0gY29udGV4dDsgY3VyID0gY3VyLnBhcmVudE5vZGUgKSB7
CisKKyAgICAgICAgICAgICAgICAgICAgLy8gQWx3YXlzIHNraXAgZG9jdW1lbnQgZnJhZ21lbnRz
CisgICAgICAgICAgICAgICAgICAgIGlmICggY3VyLm5vZGVUeXBlIDwgMTEgJiYgKCB0YXJnZXRz
ID8KKyAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldHMuaW5kZXgoIGN1ciApID4gLTEgOgor
CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBEb24ndCBwYXNzIG5vbi1lbGVtZW50cyB0byBT
aXp6bGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1ci5ub2RlVHlwZSA9PT0gMSAmJgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5maW5kLm1hdGNoZXNTZWxlY3RvciggY3Vy
LCBzZWxlY3RvcnMgKSApICkgeworCisgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVkLnB1
c2goIGN1ciApOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwor
ICAgICAgICByZXR1cm4gdGhpcy5wdXNoU3RhY2soIG1hdGNoZWQubGVuZ3RoID4gMSA/IGpRdWVy
eS51bmlxdWVTb3J0KCBtYXRjaGVkICkgOiBtYXRjaGVkICk7CisgICAgfSwKKworICAgIC8vIERl
dGVybWluZSB0aGUgcG9zaXRpb24gb2YgYW4gZWxlbWVudCB3aXRoaW4gdGhlIHNldAorICAgIGlu
ZGV4OiBmdW5jdGlvbiggZWxlbSApIHsKKworICAgICAgICAvLyBObyBhcmd1bWVudCwgcmV0dXJu
IGluZGV4IGluIHBhcmVudAorICAgICAgICBpZiAoICFlbGVtICkgeworICAgICAgICAgICAgcmV0
dXJuICggdGhpc1sgMCBdICYmIHRoaXNbIDAgXS5wYXJlbnROb2RlICkgPyB0aGlzLmZpcnN0KCku
cHJldkFsbCgpLmxlbmd0aCA6IC0xOworICAgICAgICB9CisKKyAgICAgICAgLy8gSW5kZXggaW4g
c2VsZWN0b3IKKyAgICAgICAgaWYgKCB0eXBlb2YgZWxlbSA9PT0gInN0cmluZyIgKSB7CisgICAg
ICAgICAgICByZXR1cm4gaW5kZXhPZi5jYWxsKCBqUXVlcnkoIGVsZW0gKSwgdGhpc1sgMCBdICk7
CisgICAgICAgIH0KKworICAgICAgICAvLyBMb2NhdGUgdGhlIHBvc2l0aW9uIG9mIHRoZSBkZXNp
cmVkIGVsZW1lbnQKKyAgICAgICAgcmV0dXJuIGluZGV4T2YuY2FsbCggdGhpcywKKworICAgICAg
ICAgICAgLy8gSWYgaXQgcmVjZWl2ZXMgYSBqUXVlcnkgb2JqZWN0LCB0aGUgZmlyc3QgZWxlbWVu
dCBpcyB1c2VkCisgICAgICAgICAgICBlbGVtLmpxdWVyeSA/IGVsZW1bIDAgXSA6IGVsZW0KKyAg
ICAgICAgKTsKKyAgICB9LAorCisgICAgYWRkOiBmdW5jdGlvbiggc2VsZWN0b3IsIGNvbnRleHQg
KSB7CisgICAgICAgIHJldHVybiB0aGlzLnB1c2hTdGFjaygKKyAgICAgICAgICAgIGpRdWVyeS51
bmlxdWVTb3J0KAorICAgICAgICAgICAgICAgIGpRdWVyeS5tZXJnZSggdGhpcy5nZXQoKSwgalF1
ZXJ5KCBzZWxlY3RvciwgY29udGV4dCApICkKKyAgICAgICAgICAgICkKKyAgICAgICAgKTsKKyAg
ICB9LAorCisgICAgYWRkQmFjazogZnVuY3Rpb24oIHNlbGVjdG9yICkgeworICAgICAgICByZXR1
cm4gdGhpcy5hZGQoIHNlbGVjdG9yID09IG51bGwgPworICAgICAgICAgICAgdGhpcy5wcmV2T2Jq
ZWN0IDogdGhpcy5wcmV2T2JqZWN0LmZpbHRlciggc2VsZWN0b3IgKQorICAgICAgICApOworICAg
IH0KK30gKTsKKworZnVuY3Rpb24gc2libGluZyggY3VyLCBkaXIgKSB7CisgICAgd2hpbGUgKCAo
IGN1ciA9IGN1clsgZGlyIF0gKSAmJiBjdXIubm9kZVR5cGUgIT09IDEgKSB7fQorICAgIHJldHVy
biBjdXI7Cit9CisKK2pRdWVyeS5lYWNoKCB7CisgICAgcGFyZW50OiBmdW5jdGlvbiggZWxlbSAp
IHsKKyAgICAgICAgdmFyIHBhcmVudCA9IGVsZW0ucGFyZW50Tm9kZTsKKyAgICAgICAgcmV0dXJu
IHBhcmVudCAmJiBwYXJlbnQubm9kZVR5cGUgIT09IDExID8gcGFyZW50IDogbnVsbDsKKyAgICB9
LAorICAgIHBhcmVudHM6IGZ1bmN0aW9uKCBlbGVtICkgeworICAgICAgICByZXR1cm4gZGlyKCBl
bGVtLCAicGFyZW50Tm9kZSIgKTsKKyAgICB9LAorICAgIHBhcmVudHNVbnRpbDogZnVuY3Rpb24o
IGVsZW0sIGksIHVudGlsICkgeworICAgICAgICByZXR1cm4gZGlyKCBlbGVtLCAicGFyZW50Tm9k
ZSIsIHVudGlsICk7CisgICAgfSwKKyAgICBuZXh0OiBmdW5jdGlvbiggZWxlbSApIHsKKyAgICAg
ICAgcmV0dXJuIHNpYmxpbmcoIGVsZW0sICJuZXh0U2libGluZyIgKTsKKyAgICB9LAorICAgIHBy
ZXY6IGZ1bmN0aW9uKCBlbGVtICkgeworICAgICAgICByZXR1cm4gc2libGluZyggZWxlbSwgInBy
ZXZpb3VzU2libGluZyIgKTsKKyAgICB9LAorICAgIG5leHRBbGw6IGZ1bmN0aW9uKCBlbGVtICkg
eworICAgICAgICByZXR1cm4gZGlyKCBlbGVtLCAibmV4dFNpYmxpbmciICk7CisgICAgfSwKKyAg
ICBwcmV2QWxsOiBmdW5jdGlvbiggZWxlbSApIHsKKyAgICAgICAgcmV0dXJuIGRpciggZWxlbSwg
InByZXZpb3VzU2libGluZyIgKTsKKyAgICB9LAorICAgIG5leHRVbnRpbDogZnVuY3Rpb24oIGVs
ZW0sIGksIHVudGlsICkgeworICAgICAgICByZXR1cm4gZGlyKCBlbGVtLCAibmV4dFNpYmxpbmci
LCB1bnRpbCApOworICAgIH0sCisgICAgcHJldlVudGlsOiBmdW5jdGlvbiggZWxlbSwgaSwgdW50
aWwgKSB7CisgICAgICAgIHJldHVybiBkaXIoIGVsZW0sICJwcmV2aW91c1NpYmxpbmciLCB1bnRp
bCApOworICAgIH0sCisgICAgc2libGluZ3M6IGZ1bmN0aW9uKCBlbGVtICkgeworICAgICAgICBy
ZXR1cm4gc2libGluZ3MoICggZWxlbS5wYXJlbnROb2RlIHx8IHt9ICkuZmlyc3RDaGlsZCwgZWxl
bSApOworICAgIH0sCisgICAgY2hpbGRyZW46IGZ1bmN0aW9uKCBlbGVtICkgeworICAgICAgICBy
ZXR1cm4gc2libGluZ3MoIGVsZW0uZmlyc3RDaGlsZCApOworICAgIH0sCisgICAgY29udGVudHM6
IGZ1bmN0aW9uKCBlbGVtICkgeworICAgICAgICByZXR1cm4gZWxlbS5jb250ZW50RG9jdW1lbnQg
fHwgalF1ZXJ5Lm1lcmdlKCBbXSwgZWxlbS5jaGlsZE5vZGVzICk7CisgICAgfQorfSwgZnVuY3Rp
b24oIG5hbWUsIGZuICkgeworICAgIGpRdWVyeS5mblsgbmFtZSBdID0gZnVuY3Rpb24oIHVudGls
LCBzZWxlY3RvciApIHsKKyAgICAgICAgdmFyIG1hdGNoZWQgPSBqUXVlcnkubWFwKCB0aGlzLCBm
biwgdW50aWwgKTsKKworICAgICAgICBpZiAoIG5hbWUuc2xpY2UoIC01ICkgIT09ICJVbnRpbCIg
KSB7CisgICAgICAgICAgICBzZWxlY3RvciA9IHVudGlsOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKCBzZWxlY3RvciAmJiB0eXBlb2Ygc2VsZWN0b3IgPT09ICJzdHJpbmciICkgeworICAgICAg
ICAgICAgbWF0Y2hlZCA9IGpRdWVyeS5maWx0ZXIoIHNlbGVjdG9yLCBtYXRjaGVkICk7CisgICAg
ICAgIH0KKworICAgICAgICBpZiAoIHRoaXMubGVuZ3RoID4gMSApIHsKKworICAgICAgICAgICAg
Ly8gUmVtb3ZlIGR1cGxpY2F0ZXMKKyAgICAgICAgICAgIGlmICggIWd1YXJhbnRlZWRVbmlxdWVb
IG5hbWUgXSApIHsKKyAgICAgICAgICAgICAgICBqUXVlcnkudW5pcXVlU29ydCggbWF0Y2hlZCAp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBSZXZlcnNlIG9yZGVyIGZvciBwYXJl
bnRzKiBhbmQgcHJldi1kZXJpdmF0aXZlcworICAgICAgICAgICAgaWYgKCBycGFyZW50c3ByZXYu
dGVzdCggbmFtZSApICkgeworICAgICAgICAgICAgICAgIG1hdGNoZWQucmV2ZXJzZSgpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHRoaXMucHVzaFN0YWNrKCBt
YXRjaGVkICk7CisgICAgfTsKK30gKTsKK3ZhciBybm90aHRtbHdoaXRlID0gKCAvW15ceDIwXHRc
clxuXGZdKy9nICk7CisKKworCisvLyBDb252ZXJ0IFN0cmluZy1mb3JtYXR0ZWQgb3B0aW9ucyBp
bnRvIE9iamVjdC1mb3JtYXR0ZWQgb25lcworZnVuY3Rpb24gY3JlYXRlT3B0aW9ucyggb3B0aW9u
cyApIHsKKyAgICB2YXIgb2JqZWN0ID0ge307CisgICAgalF1ZXJ5LmVhY2goIG9wdGlvbnMubWF0
Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbXSwgZnVuY3Rpb24oIF8sIGZsYWcgKSB7CisgICAgICAg
IG9iamVjdFsgZmxhZyBdID0gdHJ1ZTsKKyAgICB9ICk7CisgICAgcmV0dXJuIG9iamVjdDsKK30K
KworLyoKKyAqIENyZWF0ZSBhIGNhbGxiYWNrIGxpc3QgdXNpbmcgdGhlIGZvbGxvd2luZyBwYXJh
bWV0ZXJzOgorICoKKyAqICBvcHRpb25zOiBhbiBvcHRpb25hbCBsaXN0IG9mIHNwYWNlLXNlcGFy
YXRlZCBvcHRpb25zIHRoYXQgd2lsbCBjaGFuZ2UgaG93CisgKiAgICAgICAgICB0aGUgY2FsbGJh
Y2sgbGlzdCBiZWhhdmVzIG9yIGEgbW9yZSB0cmFkaXRpb25hbCBvcHRpb24gb2JqZWN0CisgKgor
ICogQnkgZGVmYXVsdCBhIGNhbGxiYWNrIGxpc3Qgd2lsbCBhY3QgbGlrZSBhbiBldmVudCBjYWxs
YmFjayBsaXN0IGFuZCBjYW4gYmUKKyAqICJmaXJlZCIgbXVsdGlwbGUgdGltZXMuCisgKgorICog
UG9zc2libGUgb3B0aW9uczoKKyAqCisgKiAgb25jZTogICAgICAgICAgIHdpbGwgZW5zdXJlIHRo
ZSBjYWxsYmFjayBsaXN0IGNhbiBvbmx5IGJlIGZpcmVkIG9uY2UgKGxpa2UgYSBEZWZlcnJlZCkK
KyAqCisgKiAgbWVtb3J5OiAgICAgICAgIHdpbGwga2VlcCB0cmFjayBvZiBwcmV2aW91cyB2YWx1
ZXMgYW5kIHdpbGwgY2FsbCBhbnkgY2FsbGJhY2sgYWRkZWQKKyAqICAgICAgICAgICAgICAgICAg
YWZ0ZXIgdGhlIGxpc3QgaGFzIGJlZW4gZmlyZWQgcmlnaHQgYXdheSB3aXRoIHRoZSBsYXRlc3Qg
Im1lbW9yaXplZCIKKyAqICAgICAgICAgICAgICAgICAgdmFsdWVzIChsaWtlIGEgRGVmZXJyZWQp
CisgKgorICogIHVuaXF1ZTogICAgICAgICB3aWxsIGVuc3VyZSBhIGNhbGxiYWNrIGNhbiBvbmx5
IGJlIGFkZGVkIG9uY2UgKG5vIGR1cGxpY2F0ZSBpbiB0aGUgbGlzdCkKKyAqCisgKiAgc3RvcE9u
RmFsc2U6ICAgIGludGVycnVwdCBjYWxsaW5ncyB3aGVuIGEgY2FsbGJhY2sgcmV0dXJucyBmYWxz
ZQorICoKKyAqLworalF1ZXJ5LkNhbGxiYWNrcyA9IGZ1bmN0aW9uKCBvcHRpb25zICkgeworCisg
ICAgLy8gQ29udmVydCBvcHRpb25zIGZyb20gU3RyaW5nLWZvcm1hdHRlZCB0byBPYmplY3QtZm9y
bWF0dGVkIGlmIG5lZWRlZAorICAgIC8vICh3ZSBjaGVjayBpbiBjYWNoZSBmaXJzdCkKKyAgICBv
cHRpb25zID0gdHlwZW9mIG9wdGlvbnMgPT09ICJzdHJpbmciID8KKyAgICAgICAgY3JlYXRlT3B0
aW9ucyggb3B0aW9ucyApIDoKKyAgICAgICAgalF1ZXJ5LmV4dGVuZCgge30sIG9wdGlvbnMgKTsK
KworICAgIHZhciAvLyBGbGFnIHRvIGtub3cgaWYgbGlzdCBpcyBjdXJyZW50bHkgZmlyaW5nCisg
ICAgICAgIGZpcmluZywKKworICAgICAgICAvLyBMYXN0IGZpcmUgdmFsdWUgZm9yIG5vbi1mb3Jn
ZXR0YWJsZSBsaXN0cworICAgICAgICBtZW1vcnksCisKKyAgICAgICAgLy8gRmxhZyB0byBrbm93
IGlmIGxpc3Qgd2FzIGFscmVhZHkgZmlyZWQKKyAgICAgICAgZmlyZWQsCisKKyAgICAgICAgLy8g
RmxhZyB0byBwcmV2ZW50IGZpcmluZworICAgICAgICBsb2NrZWQsCisKKyAgICAgICAgLy8gQWN0
dWFsIGNhbGxiYWNrIGxpc3QKKyAgICAgICAgbGlzdCA9IFtdLAorCisgICAgICAgIC8vIFF1ZXVl
IG9mIGV4ZWN1dGlvbiBkYXRhIGZvciByZXBlYXRhYmxlIGxpc3RzCisgICAgICAgIHF1ZXVlID0g
W10sCisKKyAgICAgICAgLy8gSW5kZXggb2YgY3VycmVudGx5IGZpcmluZyBjYWxsYmFjayAobW9k
aWZpZWQgYnkgYWRkL3JlbW92ZSBhcyBuZWVkZWQpCisgICAgICAgIGZpcmluZ0luZGV4ID0gLTEs
CisKKyAgICAgICAgLy8gRmlyZSBjYWxsYmFja3MKKyAgICAgICAgZmlyZSA9IGZ1bmN0aW9uKCkg
eworCisgICAgICAgICAgICAvLyBFbmZvcmNlIHNpbmdsZS1maXJpbmcKKyAgICAgICAgICAgIGxv
Y2tlZCA9IG9wdGlvbnMub25jZTsKKworICAgICAgICAgICAgLy8gRXhlY3V0ZSBjYWxsYmFja3Mg
Zm9yIGFsbCBwZW5kaW5nIGV4ZWN1dGlvbnMsCisgICAgICAgICAgICAvLyByZXNwZWN0aW5nIGZp
cmluZ0luZGV4IG92ZXJyaWRlcyBhbmQgcnVudGltZSBjaGFuZ2VzCisgICAgICAgICAgICBmaXJl
ZCA9IGZpcmluZyA9IHRydWU7CisgICAgICAgICAgICBmb3IgKCA7IHF1ZXVlLmxlbmd0aDsgZmly
aW5nSW5kZXggPSAtMSApIHsKKyAgICAgICAgICAgICAgICBtZW1vcnkgPSBxdWV1ZS5zaGlmdCgp
OworICAgICAgICAgICAgICAgIHdoaWxlICggKytmaXJpbmdJbmRleCA8IGxpc3QubGVuZ3RoICkg
eworCisgICAgICAgICAgICAgICAgICAgIC8vIFJ1biBjYWxsYmFjayBhbmQgY2hlY2sgZm9yIGVh
cmx5IHRlcm1pbmF0aW9uCisgICAgICAgICAgICAgICAgICAgIGlmICggbGlzdFsgZmlyaW5nSW5k
ZXggXS5hcHBseSggbWVtb3J5WyAwIF0sIG1lbW9yeVsgMSBdICkgPT09IGZhbHNlICYmCisgICAg
ICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnN0b3BPbkZhbHNlICkgeworCisgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBKdW1wIHRvIGVuZCBhbmQgZm9yZ2V0IHRoZSBkYXRhIHNvIC5hZGQg
ZG9lc24ndCByZS1maXJlCisgICAgICAgICAgICAgICAgICAgICAgICBmaXJpbmdJbmRleCA9IGxp
c3QubGVuZ3RoOworICAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5ID0gZmFsc2U7CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIC8vIEZvcmdldCB0aGUgZGF0YSBpZiB3ZSdyZSBkb25lIHdpdGggaXQKKyAgICAg
ICAgICAgIGlmICggIW9wdGlvbnMubWVtb3J5ICkgeworICAgICAgICAgICAgICAgIG1lbW9yeSA9
IGZhbHNlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmaXJpbmcgPSBmYWxzZTsKKwor
ICAgICAgICAgICAgLy8gQ2xlYW4gdXAgaWYgd2UncmUgZG9uZSBmaXJpbmcgZm9yIGdvb2QKKyAg
ICAgICAgICAgIGlmICggbG9ja2VkICkgeworCisgICAgICAgICAgICAgICAgLy8gS2VlcCBhbiBl
bXB0eSBsaXN0IGlmIHdlIGhhdmUgZGF0YSBmb3IgZnV0dXJlIGFkZCBjYWxscworICAgICAgICAg
ICAgICAgIGlmICggbWVtb3J5ICkgeworICAgICAgICAgICAgICAgICAgICBsaXN0ID0gW107CisK
KyAgICAgICAgICAgICAgICAvLyBPdGhlcndpc2UsIHRoaXMgb2JqZWN0IGlzIHNwZW50CisgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgbGlzdCA9ICIiOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKworICAgICAgICAvLyBB
Y3R1YWwgQ2FsbGJhY2tzIG9iamVjdAorICAgICAgICBzZWxmID0geworCisgICAgICAgICAgICAv
LyBBZGQgYSBjYWxsYmFjayBvciBhIGNvbGxlY3Rpb24gb2YgY2FsbGJhY2tzIHRvIHRoZSBsaXN0
CisgICAgICAgICAgICBhZGQ6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGlmICggbGlz
dCApIHsKKworICAgICAgICAgICAgICAgICAgICAvLyBJZiB3ZSBoYXZlIG1lbW9yeSBmcm9tIGEg
cGFzdCBydW4sIHdlIHNob3VsZCBmaXJlIGFmdGVyIGFkZGluZworICAgICAgICAgICAgICAgICAg
ICBpZiAoIG1lbW9yeSAmJiAhZmlyaW5nICkgeworICAgICAgICAgICAgICAgICAgICAgICAgZmly
aW5nSW5kZXggPSBsaXN0Lmxlbmd0aCAtIDE7CisgICAgICAgICAgICAgICAgICAgICAgICBxdWV1
ZS5wdXNoKCBtZW1vcnkgKTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgICAgICggZnVuY3Rpb24gYWRkKCBhcmdzICkgeworICAgICAgICAgICAgICAgICAgICAgICAg
alF1ZXJ5LmVhY2goIGFyZ3MsIGZ1bmN0aW9uKCBfLCBhcmcgKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggYXJnICkgKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICggIW9wdGlvbnMudW5pcXVlIHx8ICFzZWxmLmhhcygg
YXJnICkgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0LnB1c2go
IGFyZyApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfSBlbHNlIGlmICggYXJnICYmIGFyZy5sZW5ndGggJiYgalF1ZXJ5LnR5
cGUoIGFyZyApICE9PSAic3RyaW5nIiApIHsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBJbnNwZWN0IHJlY3Vyc2l2ZWx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGFkZCggYXJnICk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICAgICAgfSApOworICAgICAgICAgICAgICAgICAgICB9ICkoIGFyZ3VtZW50cyAp
OworCisgICAgICAgICAgICAgICAgICAgIGlmICggbWVtb3J5ICYmICFmaXJpbmcgKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBmaXJlKCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgICAgICB9
LAorCisgICAgICAgICAgICAvLyBSZW1vdmUgYSBjYWxsYmFjayBmcm9tIHRoZSBsaXN0CisgICAg
ICAgICAgICByZW1vdmU6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGpRdWVyeS5lYWNo
KCBhcmd1bWVudHMsIGZ1bmN0aW9uKCBfLCBhcmcgKSB7CisgICAgICAgICAgICAgICAgICAgIHZh
ciBpbmRleDsKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCAoIGluZGV4ID0galF1ZXJ5Lmlu
QXJyYXkoIGFyZywgbGlzdCwgaW5kZXggKSApID4gLTEgKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBsaXN0LnNwbGljZSggaW5kZXgsIDEgKTsKKworICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gSGFuZGxlIGZpcmluZyBpbmRleGVzCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGlu
ZGV4IDw9IGZpcmluZ0luZGV4ICkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcmlu
Z0luZGV4LS07CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICB9ICk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7Cisg
ICAgICAgICAgICB9LAorCisgICAgICAgICAgICAvLyBDaGVjayBpZiBhIGdpdmVuIGNhbGxiYWNr
IGlzIGluIHRoZSBsaXN0LgorICAgICAgICAgICAgLy8gSWYgbm8gYXJndW1lbnQgaXMgZ2l2ZW4s
IHJldHVybiB3aGV0aGVyIG9yIG5vdCBsaXN0IGhhcyBjYWxsYmFja3MgYXR0YWNoZWQuCisgICAg
ICAgICAgICBoYXM6IGZ1bmN0aW9uKCBmbiApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZm4g
PworICAgICAgICAgICAgICAgICAgICBqUXVlcnkuaW5BcnJheSggZm4sIGxpc3QgKSA+IC0xIDoK
KyAgICAgICAgICAgICAgICAgICAgbGlzdC5sZW5ndGggPiAwOworICAgICAgICAgICAgfSwKKwor
ICAgICAgICAgICAgLy8gUmVtb3ZlIGFsbCBjYWxsYmFja3MgZnJvbSB0aGUgbGlzdAorICAgICAg
ICAgICAgZW1wdHk6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGlmICggbGlzdCApIHsK
KyAgICAgICAgICAgICAgICAgICAgbGlzdCA9IFtdOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgIC8v
IERpc2FibGUgLmZpcmUgYW5kIC5hZGQKKyAgICAgICAgICAgIC8vIEFib3J0IGFueSBjdXJyZW50
L3BlbmRpbmcgZXhlY3V0aW9ucworICAgICAgICAgICAgLy8gQ2xlYXIgYWxsIGNhbGxiYWNrcyBh
bmQgdmFsdWVzCisgICAgICAgICAgICBkaXNhYmxlOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
ICAgICBsb2NrZWQgPSBxdWV1ZSA9IFtdOworICAgICAgICAgICAgICAgIGxpc3QgPSBtZW1vcnkg
PSAiIjsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgICAgIH0sCisgICAg
ICAgICAgICBkaXNhYmxlZDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuICFs
aXN0OworICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgLy8gRGlzYWJsZSAuZmlyZQorICAg
ICAgICAgICAgLy8gQWxzbyBkaXNhYmxlIC5hZGQgdW5sZXNzIHdlIGhhdmUgbWVtb3J5IChzaW5j
ZSBpdCB3b3VsZCBoYXZlIG5vIGVmZmVjdCkKKyAgICAgICAgICAgIC8vIEFib3J0IGFueSBwZW5k
aW5nIGV4ZWN1dGlvbnMKKyAgICAgICAgICAgIGxvY2s6IGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgICAgIGxvY2tlZCA9IHF1ZXVlID0gW107CisgICAgICAgICAgICAgICAgaWYgKCAhbWVtb3J5
ICYmICFmaXJpbmcgKSB7CisgICAgICAgICAgICAgICAgICAgIGxpc3QgPSBtZW1vcnkgPSAiIjsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgbG9ja2VkOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gISFsb2NrZWQ7CisgICAgICAgICAgICB9LAorCisgICAgICAgICAgICAvLyBDYWxs
IGFsbCBjYWxsYmFja3Mgd2l0aCB0aGUgZ2l2ZW4gY29udGV4dCBhbmQgYXJndW1lbnRzCisgICAg
ICAgICAgICBmaXJlV2l0aDogZnVuY3Rpb24oIGNvbnRleHQsIGFyZ3MgKSB7CisgICAgICAgICAg
ICAgICAgaWYgKCAhbG9ja2VkICkgeworICAgICAgICAgICAgICAgICAgICBhcmdzID0gYXJncyB8
fCBbXTsKKyAgICAgICAgICAgICAgICAgICAgYXJncyA9IFsgY29udGV4dCwgYXJncy5zbGljZSA/
IGFyZ3Muc2xpY2UoKSA6IGFyZ3MgXTsKKyAgICAgICAgICAgICAgICAgICAgcXVldWUucHVzaCgg
YXJncyApOworICAgICAgICAgICAgICAgICAgICBpZiAoICFmaXJpbmcgKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBmaXJlKCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgICAgICB9LAorCisg
ICAgICAgICAgICAvLyBDYWxsIGFsbCB0aGUgY2FsbGJhY2tzIHdpdGggdGhlIGdpdmVuIGFyZ3Vt
ZW50cworICAgICAgICAgICAgZmlyZTogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgc2Vs
Zi5maXJlV2l0aCggdGhpcywgYXJndW1lbnRzICk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRo
aXM7CisgICAgICAgICAgICB9LAorCisgICAgICAgICAgICAvLyBUbyBrbm93IGlmIHRoZSBjYWxs
YmFja3MgaGF2ZSBhbHJlYWR5IGJlZW4gY2FsbGVkIGF0IGxlYXN0IG9uY2UKKyAgICAgICAgICAg
IGZpcmVkOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gISFmaXJlZDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgIHJldHVybiBzZWxmOworfTsKKworCitmdW5j
dGlvbiBJZGVudGl0eSggdiApIHsKKyAgICByZXR1cm4gdjsKK30KK2Z1bmN0aW9uIFRocm93ZXIo
IGV4ICkgeworICAgIHRocm93IGV4OworfQorCitmdW5jdGlvbiBhZG9wdFZhbHVlKCB2YWx1ZSwg
cmVzb2x2ZSwgcmVqZWN0ICkgeworICAgIHZhciBtZXRob2Q7CisKKyAgICB0cnkgeworCisgICAg
ICAgIC8vIENoZWNrIGZvciBwcm9taXNlIGFzcGVjdCBmaXJzdCB0byBwcml2aWxlZ2Ugc3luY2hy
b25vdXMgYmVoYXZpb3IKKyAgICAgICAgaWYgKCB2YWx1ZSAmJiBqUXVlcnkuaXNGdW5jdGlvbigg
KCBtZXRob2QgPSB2YWx1ZS5wcm9taXNlICkgKSApIHsKKyAgICAgICAgICAgIG1ldGhvZC5jYWxs
KCB2YWx1ZSApLmRvbmUoIHJlc29sdmUgKS5mYWlsKCByZWplY3QgKTsKKworICAgICAgICAvLyBP
dGhlciB0aGVuYWJsZXMKKyAgICAgICAgfSBlbHNlIGlmICggdmFsdWUgJiYgalF1ZXJ5LmlzRnVu
Y3Rpb24oICggbWV0aG9kID0gdmFsdWUudGhlbiApICkgKSB7CisgICAgICAgICAgICBtZXRob2Qu
Y2FsbCggdmFsdWUsIHJlc29sdmUsIHJlamVjdCApOworCisgICAgICAgIC8vIE90aGVyIG5vbi10
aGVuYWJsZXMKKyAgICAgICAgfSBlbHNlIHsKKworICAgICAgICAgICAgLy8gU3VwcG9ydDogQW5k
cm9pZCA0LjAgb25seQorICAgICAgICAgICAgLy8gU3RyaWN0IG1vZGUgZnVuY3Rpb25zIGludm9r
ZWQgd2l0aG91dCAuY2FsbC8uYXBwbHkgZ2V0IGdsb2JhbC1vYmplY3QgY29udGV4dAorICAgICAg
ICAgICAgcmVzb2x2ZS5jYWxsKCB1bmRlZmluZWQsIHZhbHVlICk7CisgICAgICAgIH0KKworICAg
IC8vIEZvciBQcm9taXNlcy9BKywgY29udmVydCBleGNlcHRpb25zIGludG8gcmVqZWN0aW9ucwor
ICAgIC8vIFNpbmNlIGpRdWVyeS53aGVuIGRvZXNuJ3QgdW53cmFwIHRoZW5hYmxlcywgd2UgY2Fu
IHNraXAgdGhlIGV4dHJhIGNoZWNrcyBhcHBlYXJpbmcgaW4KKyAgICAvLyBEZWZlcnJlZCN0aGVu
IHRvIGNvbmRpdGlvbmFsbHkgc3VwcHJlc3MgcmVqZWN0aW9uLgorICAgIH0gY2F0Y2ggKCB2YWx1
ZSApIHsKKworICAgICAgICAvLyBTdXBwb3J0OiBBbmRyb2lkIDQuMCBvbmx5CisgICAgICAgIC8v
IFN0cmljdCBtb2RlIGZ1bmN0aW9ucyBpbnZva2VkIHdpdGhvdXQgLmNhbGwvLmFwcGx5IGdldCBn
bG9iYWwtb2JqZWN0IGNvbnRleHQKKyAgICAgICAgcmVqZWN0LmNhbGwoIHVuZGVmaW5lZCwgdmFs
dWUgKTsKKyAgICB9Cit9CisKK2pRdWVyeS5leHRlbmQoIHsKKworICAgIERlZmVycmVkOiBmdW5j
dGlvbiggZnVuYyApIHsKKyAgICAgICAgdmFyIHR1cGxlcyA9IFsKKworICAgICAgICAgICAgICAg
IC8vIGFjdGlvbiwgYWRkIGxpc3RlbmVyLCBjYWxsYmFja3MsCisgICAgICAgICAgICAgICAgLy8g
Li4uIC50aGVuIGhhbmRsZXJzLCBhcmd1bWVudCBpbmRleCwgW2ZpbmFsIHN0YXRlXQorICAgICAg
ICAgICAgICAgIFsgIm5vdGlmeSIsICJwcm9ncmVzcyIsIGpRdWVyeS5DYWxsYmFja3MoICJtZW1v
cnkiICksCisgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5DYWxsYmFja3MoICJtZW1vcnkiICks
IDIgXSwKKyAgICAgICAgICAgICAgICBbICJyZXNvbHZlIiwgImRvbmUiLCBqUXVlcnkuQ2FsbGJh
Y2tzKCAib25jZSBtZW1vcnkiICksCisgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5DYWxsYmFj
a3MoICJvbmNlIG1lbW9yeSIgKSwgMCwgInJlc29sdmVkIiBdLAorICAgICAgICAgICAgICAgIFsg
InJlamVjdCIsICJmYWlsIiwgalF1ZXJ5LkNhbGxiYWNrcyggIm9uY2UgbWVtb3J5IiApLAorICAg
ICAgICAgICAgICAgICAgICBqUXVlcnkuQ2FsbGJhY2tzKCAib25jZSBtZW1vcnkiICksIDEsICJy
ZWplY3RlZCIgXQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgIHN0YXRlID0gInBlbmRpbmci
LAorICAgICAgICAgICAgcHJvbWlzZSA9IHsKKyAgICAgICAgICAgICAgICBzdGF0ZTogZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdGF0ZTsKKyAgICAgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgICAgIGFsd2F5czogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAg
ICAgICAgIGRlZmVycmVkLmRvbmUoIGFyZ3VtZW50cyApLmZhaWwoIGFyZ3VtZW50cyApOworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgICAgICAgICB9LAorICAgICAg
ICAgICAgICAgICJjYXRjaCI6IGZ1bmN0aW9uKCBmbiApIHsKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHByb21pc2UudGhlbiggbnVsbCwgZm4gKTsKKyAgICAgICAgICAgICAgICB9LAorCisg
ICAgICAgICAgICAgICAgLy8gS2VlcCBwaXBlIGZvciBiYWNrLWNvbXBhdAorICAgICAgICAgICAg
ICAgIHBpcGU6IGZ1bmN0aW9uKCAvKiBmbkRvbmUsIGZuRmFpbCwgZm5Qcm9ncmVzcyAqLyApIHsK
KyAgICAgICAgICAgICAgICAgICAgdmFyIGZucyA9IGFyZ3VtZW50czsKKworICAgICAgICAgICAg
ICAgICAgICByZXR1cm4galF1ZXJ5LkRlZmVycmVkKCBmdW5jdGlvbiggbmV3RGVmZXIgKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkuZWFjaCggdHVwbGVzLCBmdW5jdGlvbiggaSwg
dHVwbGUgKSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNYXAgdHVwbGVzIChw
cm9ncmVzcywgZG9uZSwgZmFpbCkgdG8gYXJndW1lbnRzIChkb25lLCBmYWlsLCBwcm9ncmVzcykK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZm4gPSBqUXVlcnkuaXNGdW5jdGlvbigg
Zm5zWyB0dXBsZVsgNCBdIF0gKSAmJiBmbnNbIHR1cGxlWyA0IF0gXTsKKworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIGRlZmVycmVkLnByb2dyZXNzKGZ1bmN0aW9uKCkgeyBiaW5kIHRv
IG5ld0RlZmVyIG9yIG5ld0RlZmVyLm5vdGlmeSB9KQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIGRlZmVycmVkLmRvbmUoZnVuY3Rpb24oKSB7IGJpbmQgdG8gbmV3RGVmZXIgb3IgbmV3
RGVmZXIucmVzb2x2ZSB9KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRlZmVycmVk
LmZhaWwoZnVuY3Rpb24oKSB7IGJpbmQgdG8gbmV3RGVmZXIgb3IgbmV3RGVmZXIucmVqZWN0IH0p
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWRbIHR1cGxlWyAxIF0gXSggZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXR1cm5lZCA9
IGZuICYmIGZuLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCByZXR1cm5lZCAmJiBqUXVlcnkuaXNGdW5jdGlvbiggcmV0dXJuZWQu
cHJvbWlzZSApICkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
ZWQucHJvbWlzZSgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnBy
b2dyZXNzKCBuZXdEZWZlci5ub3RpZnkgKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC5kb25lKCBuZXdEZWZlci5yZXNvbHZlICkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAuZmFpbCggbmV3RGVmZXIucmVqZWN0ICk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBuZXdEZWZlclsgdHVwbGVbIDAgXSArICJXaXRoIiBdKAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZm4gPyBbIHJldHVybmVkIF0gOiBhcmd1bWVudHMKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7CisgICAgICAgICAgICAg
ICAgICAgICAgICB9ICk7CisgICAgICAgICAgICAgICAgICAgICAgICBmbnMgPSBudWxsOworICAg
ICAgICAgICAgICAgICAgICB9ICkucHJvbWlzZSgpOworICAgICAgICAgICAgICAgIH0sCisgICAg
ICAgICAgICAgICAgdGhlbjogZnVuY3Rpb24oIG9uRnVsZmlsbGVkLCBvblJlamVjdGVkLCBvblBy
b2dyZXNzICkgeworICAgICAgICAgICAgICAgICAgICB2YXIgbWF4RGVwdGggPSAwOworICAgICAg
ICAgICAgICAgICAgICBmdW5jdGlvbiByZXNvbHZlKCBkZXB0aCwgZGVmZXJyZWQsIGhhbmRsZXIs
IHNwZWNpYWwgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRoYXQgPSB0aGlzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhcmdzID0gYXJndW1lbnRzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtaWdodFRocm93ID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmV0dXJuZWQsIHRoZW47CisKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6IFByb21pc2VzL0ErIHNlY3Rpb24g
Mi4zLjMuMy4zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBodHRwczov
L3Byb21pc2VzYXBsdXMuY29tLyNwb2ludC01OQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gSWdub3JlIGRvdWJsZS1yZXNvbHV0aW9uIGF0dGVtcHRzCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGRlcHRoIDwgbWF4RGVwdGggKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm5lZCA9IGhhbmRsZXIuYXBwbHkoIHRoYXQsIGFyZ3MgKTsKKworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3VwcG9ydDogUHJvbWlzZXMvQSsgc2Vj
dGlvbiAyLjMuMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaHR0cHM6
Ly9wcm9taXNlc2FwbHVzLmNvbS8jcG9pbnQtNDgKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICggcmV0dXJuZWQgPT09IGRlZmVycmVkLnByb21pc2UoKSApIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCAi
VGhlbmFibGUgc2VsZi1yZXNvbHV0aW9uIiApOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTdXBw
b3J0OiBQcm9taXNlcy9BKyBzZWN0aW9ucyAyLjMuMy4xLCAzLjUKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vcHJvbWlzZXNhcGx1cy5jb20vI3BvaW50LTU0
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBodHRwczovL3Byb21pc2Vz
YXBsdXMuY29tLyNwb2ludC03NQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gUmV0cmlldmUgYHRoZW5gIG9ubHkgb25jZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGhlbiA9IHJldHVybmVkICYmCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBTdXBwb3J0OiBQcm9taXNlcy9BKyBzZWN0aW9uIDIuMy40CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9wcm9taXNlc2Fw
bHVzLmNvbS8jcG9pbnQtNjQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBPbmx5IGNoZWNrIG9iamVjdHMgYW5kIGZ1bmN0aW9ucyBmb3IgdGhlbmFiaWxpdHkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHR5cGVvZiByZXR1cm5lZCA9
PT0gIm9iamVjdCIgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdHlwZW9mIHJldHVybmVkID09PSAiZnVuY3Rpb24iICkgJiYKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5lZC50aGVuOworCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBIYW5kbGUgYSByZXR1cm5lZCB0aGVuYWJsZQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggdGhl
biApICkgeworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3Bl
Y2lhbCBwcm9jZXNzb3JzIChub3RpZnkpIGp1c3Qgd2FpdCBmb3IgcmVzb2x1dGlvbgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggc3BlY2lhbCApIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbi5jYWxsKAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuZWQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCBtYXhE
ZXB0aCwgZGVmZXJyZWQsIElkZW50aXR5LCBzcGVjaWFsICksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCBtYXhEZXB0aCwgZGVmZXJyZWQs
IFRocm93ZXIsIHNwZWNpYWwgKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICApOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
Tm9ybWFsIHByb2Nlc3NvcnMgKHJlc29sdmUpIGFsc28gaG9vayBpbnRvIHByb2dyZXNzCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAuLi5hbmQgZGlzcmVnYXJkIG9s
ZGVyIHJlc29sdXRpb24gdmFsdWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1heERlcHRoKys7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGhlbi5jYWxsKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXNvbHZlKCBtYXhEZXB0aCwgZGVmZXJyZWQsIElkZW50aXR5LCBz
cGVjaWFsICksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXNvbHZlKCBtYXhEZXB0aCwgZGVmZXJyZWQsIFRocm93ZXIsIHNwZWNpYWwgKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoIG1heERl
cHRoLCBkZWZlcnJlZCwgSWRlbnRpdHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQubm90aWZ5V2l0aCApCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBIYW5kbGUgYWxsIG90aGVyIHJldHVybmVkIHZhbHVlcworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIE9ubHkgc3Vic3RpdHV0ZSBoYW5kbGVycyBwYXNzIG9uIGNvbnRleHQK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgbXVsdGlwbGUg
dmFsdWVzIChub24tc3BlYyBiZWhhdmlvcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoIGhhbmRsZXIgIT09IElkZW50aXR5ICkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0ID0gdW5kZWZpbmVkOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzID0gWyByZXR1cm5lZCBdOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFByb2Nlc3MgdGhlIHZhbHVlKHMpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGVmYXVsdCBwcm9jZXNzIGlz
IHJlc29sdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHNwZWNp
YWwgfHwgZGVmZXJyZWQucmVzb2x2ZVdpdGggKSggdGhhdCwgYXJncyApOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9LAorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE9ubHkgbm9ybWFsIHBy
b2Nlc3NvcnMgKHJlc29sdmUpIGNhdGNoIGFuZCByZWplY3QgZXhjZXB0aW9ucworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzID0gc3BlY2lhbCA/CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtaWdodFRocm93IDoKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1pZ2h0VGhyb3coKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9IGNhdGNoICggZSApIHsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoIGpRdWVyeS5EZWZlcnJlZC5leGNlcHRpb25Ib29rICkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LkRlZmVycmVk
LmV4Y2VwdGlvbkhvb2soIGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHJvY2Vzcy5zdGFja1RyYWNlICk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBTdXBwb3J0OiBQcm9taXNlcy9BKyBzZWN0aW9uIDIuMy4zLjMu
NC4xCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGh0dHBz
Oi8vcHJvbWlzZXNhcGx1cy5jb20vI3BvaW50LTYxCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIElnbm9yZSBwb3N0LXJlc29sdXRpb24gZXhjZXB0aW9ucwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGRlcHRoICsg
MSA+PSBtYXhEZXB0aCApIHsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gT25seSBzdWJzdGl0dXRlIGhhbmRsZXJzIHBhc3Mgb24gY29udGV4dAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIG11
bHRpcGxlIHZhbHVlcyAobm9uLXNwZWMgYmVoYXZpb3IpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGhhbmRsZXIgIT09IFRocm93ZXIgKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCA9
IHVuZGVmaW5lZDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhcmdzID0gWyBlIF07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRlZmVycmVkLnJlamVjdFdpdGgoIHRoYXQsIGFyZ3MgKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH07CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTdXBwb3J0OiBQcm9taXNlcy9B
KyBzZWN0aW9uIDIuMy4zLjMuMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGh0dHBz
Oi8vcHJvbWlzZXNhcGx1cy5jb20vI3BvaW50LTU3CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gUmUtcmVzb2x2ZSBwcm9taXNlcyBpbW1lZGlhdGVseSB0byBkb2RnZSBmYWxzZSByZWpl
Y3Rpb24gZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN1YnNlcXVlbnQgZXJy
b3JzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBkZXB0aCApIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2VzcygpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0gZWxzZSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2Fs
bCBhbiBvcHRpb25hbCBob29rIHRvIHJlY29yZCB0aGUgc3RhY2ssIGluIGNhc2Ugb2YgZXhjZXB0
aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNpbmNlIGl0J3Mgb3RoZXJ3
aXNlIGxvc3Qgd2hlbiBleGVjdXRpb24gZ29lcyBhc3luYworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoIGpRdWVyeS5EZWZlcnJlZC5nZXRTdGFja0hvb2sgKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzLnN0YWNrVHJhY2UgPSBqUXVlcnku
RGVmZXJyZWQuZ2V0U3RhY2tIb29rKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LnNldFRpbWVvdXQoIHBy
b2Nlc3MgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGpRdWVyeS5EZWZlcnJlZCggZnVuY3Rpb24oIG5ld0RlZmVyICkgeworCisgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBwcm9ncmVzc19oYW5kbGVycy5hZGQoIC4uLiApCisgICAgICAg
ICAgICAgICAgICAgICAgICB0dXBsZXNbIDAgXVsgMyBdLmFkZCgKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXNvbHZlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdEZWZlciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgalF1ZXJ5LmlzRnVuY3Rpb24oIG9uUHJvZ3Jlc3MgKSA/CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblByb2dyZXNzIDoKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIElkZW50aXR5LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBuZXdEZWZlci5ub3RpZnlXaXRoCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKQorICAgICAgICAgICAgICAgICAgICAgICAgKTsKKworICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gZnVsZmlsbGVkX2hhbmRsZXJzLmFkZCggLi4uICkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHR1cGxlc1sgMSBdWyAzIF0uYWRkKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
c29sdmUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG5ld0RlZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBqUXVlcnkuaXNGdW5jdGlvbiggb25GdWxmaWxsZWQgKSA/CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvbkZ1bGZpbGxlZCA6CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBJZGVudGl0eQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJl
amVjdGVkX2hhbmRsZXJzLmFkZCggLi4uICkKKyAgICAgICAgICAgICAgICAgICAgICAgIHR1cGxl
c1sgMiBdWyAzIF0uYWRkKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG5ld0RlZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVl
cnkuaXNGdW5jdGlvbiggb25SZWplY3RlZCApID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG9uUmVqZWN0ZWQgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVGhyb3dlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgICAgIH0gKS5wcm9taXNlKCk7CisgICAgICAg
ICAgICAgICAgfSwKKworICAgICAgICAgICAgICAgIC8vIEdldCBhIHByb21pc2UgZm9yIHRoaXMg
ZGVmZXJyZWQKKyAgICAgICAgICAgICAgICAvLyBJZiBvYmogaXMgcHJvdmlkZWQsIHRoZSBwcm9t
aXNlIGFzcGVjdCBpcyBhZGRlZCB0byB0aGUgb2JqZWN0CisgICAgICAgICAgICAgICAgcHJvbWlz
ZTogZnVuY3Rpb24oIG9iaiApIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9iaiAhPSBu
dWxsID8galF1ZXJ5LmV4dGVuZCggb2JqLCBwcm9taXNlICkgOiBwcm9taXNlOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBkZWZlcnJlZCA9IHt9OworCisg
ICAgICAgIC8vIEFkZCBsaXN0LXNwZWNpZmljIG1ldGhvZHMKKyAgICAgICAgalF1ZXJ5LmVhY2go
IHR1cGxlcywgZnVuY3Rpb24oIGksIHR1cGxlICkgeworICAgICAgICAgICAgdmFyIGxpc3QgPSB0
dXBsZVsgMiBdLAorICAgICAgICAgICAgICAgIHN0YXRlU3RyaW5nID0gdHVwbGVbIDUgXTsKKwor
ICAgICAgICAgICAgLy8gcHJvbWlzZS5wcm9ncmVzcyA9IGxpc3QuYWRkCisgICAgICAgICAgICAv
LyBwcm9taXNlLmRvbmUgPSBsaXN0LmFkZAorICAgICAgICAgICAgLy8gcHJvbWlzZS5mYWlsID0g
bGlzdC5hZGQKKyAgICAgICAgICAgIHByb21pc2VbIHR1cGxlWyAxIF0gXSA9IGxpc3QuYWRkOwor
CisgICAgICAgICAgICAvLyBIYW5kbGUgc3RhdGUKKyAgICAgICAgICAgIGlmICggc3RhdGVTdHJp
bmcgKSB7CisgICAgICAgICAgICAgICAgbGlzdC5hZGQoCisgICAgICAgICAgICAgICAgICAgIGZ1
bmN0aW9uKCkgeworCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGF0ZSA9ICJyZXNvbHZl
ZCIgKGkuZS4sIGZ1bGZpbGxlZCkKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YXRlID0g
InJlamVjdGVkIgorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBzdGF0ZVN0cmluZzsK
KyAgICAgICAgICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgICAgICAgICAvLyByZWplY3Rl
ZF9jYWxsYmFja3MuZGlzYWJsZQorICAgICAgICAgICAgICAgICAgICAvLyBmdWxmaWxsZWRfY2Fs
bGJhY2tzLmRpc2FibGUKKyAgICAgICAgICAgICAgICAgICAgdHVwbGVzWyAzIC0gaSBdWyAyIF0u
ZGlzYWJsZSwKKworICAgICAgICAgICAgICAgICAgICAvLyBwcm9ncmVzc19jYWxsYmFja3MubG9j
aworICAgICAgICAgICAgICAgICAgICB0dXBsZXNbIDAgXVsgMiBdLmxvY2sKKyAgICAgICAgICAg
ICAgICApOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBwcm9ncmVzc19oYW5kbGVy
cy5maXJlCisgICAgICAgICAgICAvLyBmdWxmaWxsZWRfaGFuZGxlcnMuZmlyZQorICAgICAgICAg
ICAgLy8gcmVqZWN0ZWRfaGFuZGxlcnMuZmlyZQorICAgICAgICAgICAgbGlzdC5hZGQoIHR1cGxl
WyAzIF0uZmlyZSApOworCisgICAgICAgICAgICAvLyBkZWZlcnJlZC5ub3RpZnkgPSBmdW5jdGlv
bigpIHsgZGVmZXJyZWQubm90aWZ5V2l0aCguLi4pIH0KKyAgICAgICAgICAgIC8vIGRlZmVycmVk
LnJlc29sdmUgPSBmdW5jdGlvbigpIHsgZGVmZXJyZWQucmVzb2x2ZVdpdGgoLi4uKSB9CisgICAg
ICAgICAgICAvLyBkZWZlcnJlZC5yZWplY3QgPSBmdW5jdGlvbigpIHsgZGVmZXJyZWQucmVqZWN0
V2l0aCguLi4pIH0KKyAgICAgICAgICAgIGRlZmVycmVkWyB0dXBsZVsgMCBdIF0gPSBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgICAgICBkZWZlcnJlZFsgdHVwbGVbIDAgXSArICJXaXRoIiBdKCB0
aGlzID09PSBkZWZlcnJlZCA/IHVuZGVmaW5lZCA6IHRoaXMsIGFyZ3VtZW50cyApOworICAgICAg
ICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgLy8g
ZGVmZXJyZWQubm90aWZ5V2l0aCA9IGxpc3QuZmlyZVdpdGgKKyAgICAgICAgICAgIC8vIGRlZmVy
cmVkLnJlc29sdmVXaXRoID0gbGlzdC5maXJlV2l0aAorICAgICAgICAgICAgLy8gZGVmZXJyZWQu
cmVqZWN0V2l0aCA9IGxpc3QuZmlyZVdpdGgKKyAgICAgICAgICAgIGRlZmVycmVkWyB0dXBsZVsg
MCBdICsgIldpdGgiIF0gPSBsaXN0LmZpcmVXaXRoOworICAgICAgICB9ICk7CisKKyAgICAgICAg
Ly8gTWFrZSB0aGUgZGVmZXJyZWQgYSBwcm9taXNlCisgICAgICAgIHByb21pc2UucHJvbWlzZSgg
ZGVmZXJyZWQgKTsKKworICAgICAgICAvLyBDYWxsIGdpdmVuIGZ1bmMgaWYgYW55CisgICAgICAg
IGlmICggZnVuYyApIHsKKyAgICAgICAgICAgIGZ1bmMuY2FsbCggZGVmZXJyZWQsIGRlZmVycmVk
ICk7CisgICAgICAgIH0KKworICAgICAgICAvLyBBbGwgZG9uZSEKKyAgICAgICAgcmV0dXJuIGRl
ZmVycmVkOworICAgIH0sCisKKyAgICAvLyBEZWZlcnJlZCBoZWxwZXIKKyAgICB3aGVuOiBmdW5j
dGlvbiggc2luZ2xlVmFsdWUgKSB7CisgICAgICAgIHZhcgorCisgICAgICAgICAgICAvLyBjb3Vu
dCBvZiB1bmNvbXBsZXRlZCBzdWJvcmRpbmF0ZXMKKyAgICAgICAgICAgIHJlbWFpbmluZyA9IGFy
Z3VtZW50cy5sZW5ndGgsCisKKyAgICAgICAgICAgIC8vIGNvdW50IG9mIHVucHJvY2Vzc2VkIGFy
Z3VtZW50cworICAgICAgICAgICAgaSA9IHJlbWFpbmluZywKKworICAgICAgICAgICAgLy8gc3Vi
b3JkaW5hdGUgZnVsZmlsbG1lbnQgZGF0YQorICAgICAgICAgICAgcmVzb2x2ZUNvbnRleHRzID0g
QXJyYXkoIGkgKSwKKyAgICAgICAgICAgIHJlc29sdmVWYWx1ZXMgPSBzbGljZS5jYWxsKCBhcmd1
bWVudHMgKSwKKworICAgICAgICAgICAgLy8gdGhlIG1hc3RlciBEZWZlcnJlZAorICAgICAgICAg
ICAgbWFzdGVyID0galF1ZXJ5LkRlZmVycmVkKCksCisKKyAgICAgICAgICAgIC8vIHN1Ym9yZGlu
YXRlIGNhbGxiYWNrIGZhY3RvcnkKKyAgICAgICAgICAgIHVwZGF0ZUZ1bmMgPSBmdW5jdGlvbigg
aSApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oIHZhbHVlICkgeworICAgICAg
ICAgICAgICAgICAgICByZXNvbHZlQ29udGV4dHNbIGkgXSA9IHRoaXM7CisgICAgICAgICAgICAg
ICAgICAgIHJlc29sdmVWYWx1ZXNbIGkgXSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxID8gc2xpY2Uu
Y2FsbCggYXJndW1lbnRzICkgOiB2YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCAhKCAt
LXJlbWFpbmluZyApICkgeworICAgICAgICAgICAgICAgICAgICAgICAgbWFzdGVyLnJlc29sdmVX
aXRoKCByZXNvbHZlQ29udGV4dHMsIHJlc29sdmVWYWx1ZXMgKTsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICB9OworCisgICAgICAgIC8vIFNp
bmdsZS0gYW5kIGVtcHR5IGFyZ3VtZW50cyBhcmUgYWRvcHRlZCBsaWtlIFByb21pc2UucmVzb2x2
ZQorICAgICAgICBpZiAoIHJlbWFpbmluZyA8PSAxICkgeworICAgICAgICAgICAgYWRvcHRWYWx1
ZSggc2luZ2xlVmFsdWUsIG1hc3Rlci5kb25lKCB1cGRhdGVGdW5jKCBpICkgKS5yZXNvbHZlLCBt
YXN0ZXIucmVqZWN0ICk7CisKKyAgICAgICAgICAgIC8vIFVzZSAudGhlbigpIHRvIHVud3JhcCBz
ZWNvbmRhcnkgdGhlbmFibGVzIChjZi4gZ2gtMzAwMCkKKyAgICAgICAgICAgIGlmICggbWFzdGVy
LnN0YXRlKCkgPT09ICJwZW5kaW5nIiB8fAorICAgICAgICAgICAgICAgIGpRdWVyeS5pc0Z1bmN0
aW9uKCByZXNvbHZlVmFsdWVzWyBpIF0gJiYgcmVzb2x2ZVZhbHVlc1sgaSBdLnRoZW4gKSApIHsK
KworICAgICAgICAgICAgICAgIHJldHVybiBtYXN0ZXIudGhlbigpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisKKyAgICAgICAgLy8gTXVsdGlwbGUgYXJndW1lbnRzIGFyZSBhZ2dyZWdhdGVk
IGxpa2UgUHJvbWlzZS5hbGwgYXJyYXkgZWxlbWVudHMKKyAgICAgICAgd2hpbGUgKCBpLS0gKSB7
CisgICAgICAgICAgICBhZG9wdFZhbHVlKCByZXNvbHZlVmFsdWVzWyBpIF0sIHVwZGF0ZUZ1bmMo
IGkgKSwgbWFzdGVyLnJlamVjdCApOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG1hc3Rl
ci5wcm9taXNlKCk7CisgICAgfQorfSApOworCisKKy8vIFRoZXNlIHVzdWFsbHkgaW5kaWNhdGUg
YSBwcm9ncmFtbWVyIG1pc3Rha2UgZHVyaW5nIGRldmVsb3BtZW50LAorLy8gd2FybiBhYm91dCB0
aGVtIEFTQVAgcmF0aGVyIHRoYW4gc3dhbGxvd2luZyB0aGVtIGJ5IGRlZmF1bHQuCit2YXIgcmVy
cm9yTmFtZXMgPSAvXihFdmFsfEludGVybmFsfFJhbmdlfFJlZmVyZW5jZXxTeW50YXh8VHlwZXxV
UkkpRXJyb3IkLzsKKworalF1ZXJ5LkRlZmVycmVkLmV4Y2VwdGlvbkhvb2sgPSBmdW5jdGlvbigg
ZXJyb3IsIHN0YWNrICkgeworCisgICAgLy8gU3VwcG9ydDogSUUgOCAtIDkgb25seQorICAgIC8v
IENvbnNvbGUgZXhpc3RzIHdoZW4gZGV2IHRvb2xzIGFyZSBvcGVuLCB3aGljaCBjYW4gaGFwcGVu
IGF0IGFueSB0aW1lCisgICAgaWYgKCB3aW5kb3cuY29uc29sZSAmJiB3aW5kb3cuY29uc29sZS53
YXJuICYmIGVycm9yICYmIHJlcnJvck5hbWVzLnRlc3QoIGVycm9yLm5hbWUgKSApIHsKKyAgICAg
ICAgd2luZG93LmNvbnNvbGUud2FybiggImpRdWVyeS5EZWZlcnJlZCBleGNlcHRpb246ICIgKyBl
cnJvci5tZXNzYWdlLCBlcnJvci5zdGFjaywgc3RhY2sgKTsKKyAgICB9Cit9OworCisKKworCitq
UXVlcnkucmVhZHlFeGNlcHRpb24gPSBmdW5jdGlvbiggZXJyb3IgKSB7CisgICAgd2luZG93LnNl
dFRpbWVvdXQoIGZ1bmN0aW9uKCkgeworICAgICAgICB0aHJvdyBlcnJvcjsKKyAgICB9ICk7Cit9
OworCisKKworCisvLyBUaGUgZGVmZXJyZWQgdXNlZCBvbiBET00gcmVhZHkKK3ZhciByZWFkeUxp
c3QgPSBqUXVlcnkuRGVmZXJyZWQoKTsKKworalF1ZXJ5LmZuLnJlYWR5ID0gZnVuY3Rpb24oIGZu
ICkgeworCisgICAgcmVhZHlMaXN0CisgICAgICAgIC50aGVuKCBmbiApCisKKyAgICAgICAgLy8g
V3JhcCBqUXVlcnkucmVhZHlFeGNlcHRpb24gaW4gYSBmdW5jdGlvbiBzbyB0aGF0IHRoZSBsb29r
dXAKKyAgICAgICAgLy8gaGFwcGVucyBhdCB0aGUgdGltZSBvZiBlcnJvciBoYW5kbGluZyBpbnN0
ZWFkIG9mIGNhbGxiYWNrCisgICAgICAgIC8vIHJlZ2lzdHJhdGlvbi4KKyAgICAgICAgLmNhdGNo
KCBmdW5jdGlvbiggZXJyb3IgKSB7CisgICAgICAgICAgICBqUXVlcnkucmVhZHlFeGNlcHRpb24o
IGVycm9yICk7CisgICAgICAgIH0gKTsKKworICAgIHJldHVybiB0aGlzOworfTsKKworalF1ZXJ5
LmV4dGVuZCggeworCisgICAgLy8gSXMgdGhlIERPTSByZWFkeSB0byBiZSB1c2VkPyBTZXQgdG8g
dHJ1ZSBvbmNlIGl0IG9jY3Vycy4KKyAgICBpc1JlYWR5OiBmYWxzZSwKKworICAgIC8vIEEgY291
bnRlciB0byB0cmFjayBob3cgbWFueSBpdGVtcyB0byB3YWl0IGZvciBiZWZvcmUKKyAgICAvLyB0
aGUgcmVhZHkgZXZlbnQgZmlyZXMuIFNlZSAjNjc4MQorICAgIHJlYWR5V2FpdDogMSwKKworICAg
IC8vIEhvbGQgKG9yIHJlbGVhc2UpIHRoZSByZWFkeSBldmVudAorICAgIGhvbGRSZWFkeTogZnVu
Y3Rpb24oIGhvbGQgKSB7CisgICAgICAgIGlmICggaG9sZCApIHsKKyAgICAgICAgICAgIGpRdWVy
eS5yZWFkeVdhaXQrKzsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGpRdWVyeS5yZWFk
eSggdHJ1ZSApOworICAgICAgICB9CisgICAgfSwKKworICAgIC8vIEhhbmRsZSB3aGVuIHRoZSBE
T00gaXMgcmVhZHkKKyAgICByZWFkeTogZnVuY3Rpb24oIHdhaXQgKSB7CisKKyAgICAgICAgLy8g
QWJvcnQgaWYgdGhlcmUgYXJlIHBlbmRpbmcgaG9sZHMgb3Igd2UncmUgYWxyZWFkeSByZWFkeQor
ICAgICAgICBpZiAoIHdhaXQgPT09IHRydWUgPyAtLWpRdWVyeS5yZWFkeVdhaXQgOiBqUXVlcnku
aXNSZWFkeSApIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8v
IFJlbWVtYmVyIHRoYXQgdGhlIERPTSBpcyByZWFkeQorICAgICAgICBqUXVlcnkuaXNSZWFkeSA9
IHRydWU7CisKKyAgICAgICAgLy8gSWYgYSBub3JtYWwgRE9NIFJlYWR5IGV2ZW50IGZpcmVkLCBk
ZWNyZW1lbnQsIGFuZCB3YWl0IGlmIG5lZWQgYmUKKyAgICAgICAgaWYgKCB3YWl0ICE9PSB0cnVl
ICYmIC0talF1ZXJ5LnJlYWR5V2FpdCA+IDAgKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICAvLyBJZiB0aGVyZSBhcmUgZnVuY3Rpb25zIGJvdW5kLCB0byBleGVj
dXRlCisgICAgICAgIHJlYWR5TGlzdC5yZXNvbHZlV2l0aCggZG9jdW1lbnQsIFsgalF1ZXJ5IF0g
KTsKKyAgICB9Cit9ICk7CisKK2pRdWVyeS5yZWFkeS50aGVuID0gcmVhZHlMaXN0LnRoZW47CisK
Ky8vIFRoZSByZWFkeSBldmVudCBoYW5kbGVyIGFuZCBzZWxmIGNsZWFudXAgbWV0aG9kCitmdW5j
dGlvbiBjb21wbGV0ZWQoKSB7CisgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lciggIkRP
TUNvbnRlbnRMb2FkZWQiLCBjb21wbGV0ZWQgKTsKKyAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0
ZW5lciggImxvYWQiLCBjb21wbGV0ZWQgKTsKKyAgICBqUXVlcnkucmVhZHkoKTsKK30KKworLy8g
Q2F0Y2ggY2FzZXMgd2hlcmUgJChkb2N1bWVudCkucmVhZHkoKSBpcyBjYWxsZWQKKy8vIGFmdGVy
IHRoZSBicm93c2VyIGV2ZW50IGhhcyBhbHJlYWR5IG9jY3VycmVkLgorLy8gU3VwcG9ydDogSUUg
PD05IC0gMTAgb25seQorLy8gT2xkZXIgSUUgc29tZXRpbWVzIHNpZ25hbHMgImludGVyYWN0aXZl
IiB0b28gc29vbgoraWYgKCBkb2N1bWVudC5yZWFkeVN0YXRlID09PSAiY29tcGxldGUiIHx8Cisg
ICAgKCBkb2N1bWVudC5yZWFkeVN0YXRlICE9PSAibG9hZGluZyIgJiYgIWRvY3VtZW50LmRvY3Vt
ZW50RWxlbWVudC5kb1Njcm9sbCApICkgeworCisgICAgLy8gSGFuZGxlIGl0IGFzeW5jaHJvbm91
c2x5IHRvIGFsbG93IHNjcmlwdHMgdGhlIG9wcG9ydHVuaXR5IHRvIGRlbGF5IHJlYWR5CisgICAg
d2luZG93LnNldFRpbWVvdXQoIGpRdWVyeS5yZWFkeSApOworCit9IGVsc2UgeworCisgICAgLy8g
VXNlIHRoZSBoYW5keSBldmVudCBjYWxsYmFjaworICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVu
ZXIoICJET01Db250ZW50TG9hZGVkIiwgY29tcGxldGVkICk7CisKKyAgICAvLyBBIGZhbGxiYWNr
IHRvIHdpbmRvdy5vbmxvYWQsIHRoYXQgd2lsbCBhbHdheXMgd29yaworICAgIHdpbmRvdy5hZGRF
dmVudExpc3RlbmVyKCAibG9hZCIsIGNvbXBsZXRlZCApOworfQorCisKKworCisvLyBNdWx0aWZ1
bmN0aW9uYWwgbWV0aG9kIHRvIGdldCBhbmQgc2V0IHZhbHVlcyBvZiBhIGNvbGxlY3Rpb24KKy8v
IFRoZSB2YWx1ZS9zIGNhbiBvcHRpb25hbGx5IGJlIGV4ZWN1dGVkIGlmIGl0J3MgYSBmdW5jdGlv
bgordmFyIGFjY2VzcyA9IGZ1bmN0aW9uKCBlbGVtcywgZm4sIGtleSwgdmFsdWUsIGNoYWluYWJs
ZSwgZW1wdHlHZXQsIHJhdyApIHsKKyAgICB2YXIgaSA9IDAsCisgICAgICAgIGxlbiA9IGVsZW1z
Lmxlbmd0aCwKKyAgICAgICAgYnVsayA9IGtleSA9PSBudWxsOworCisgICAgLy8gU2V0cyBtYW55
IHZhbHVlcworICAgIGlmICggalF1ZXJ5LnR5cGUoIGtleSApID09PSAib2JqZWN0IiApIHsKKyAg
ICAgICAgY2hhaW5hYmxlID0gdHJ1ZTsKKyAgICAgICAgZm9yICggaSBpbiBrZXkgKSB7CisgICAg
ICAgICAgICBhY2Nlc3MoIGVsZW1zLCBmbiwgaSwga2V5WyBpIF0sIHRydWUsIGVtcHR5R2V0LCBy
YXcgKTsKKyAgICAgICAgfQorCisgICAgLy8gU2V0cyBvbmUgdmFsdWUKKyAgICB9IGVsc2UgaWYg
KCB2YWx1ZSAhPT0gdW5kZWZpbmVkICkgeworICAgICAgICBjaGFpbmFibGUgPSB0cnVlOworCisg
ICAgICAgIGlmICggIWpRdWVyeS5pc0Z1bmN0aW9uKCB2YWx1ZSApICkgeworICAgICAgICAgICAg
cmF3ID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICggYnVsayApIHsKKworICAgICAg
ICAgICAgLy8gQnVsayBvcGVyYXRpb25zIHJ1biBhZ2FpbnN0IHRoZSBlbnRpcmUgc2V0CisgICAg
ICAgICAgICBpZiAoIHJhdyApIHsKKyAgICAgICAgICAgICAgICBmbi5jYWxsKCBlbGVtcywgdmFs
dWUgKTsKKyAgICAgICAgICAgICAgICBmbiA9IG51bGw7CisKKyAgICAgICAgICAgIC8vIC4uLmV4
Y2VwdCB3aGVuIGV4ZWN1dGluZyBmdW5jdGlvbiB2YWx1ZXMKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgYnVsayA9IGZuOworICAgICAgICAgICAgICAgIGZuID0gZnVuY3Rp
b24oIGVsZW0sIGtleSwgdmFsdWUgKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBidWxr
LmNhbGwoIGpRdWVyeSggZWxlbSApLCB2YWx1ZSApOworICAgICAgICAgICAgICAgIH07CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoIGZuICkgeworICAgICAgICAgICAg
Zm9yICggOyBpIDwgbGVuOyBpKysgKSB7CisgICAgICAgICAgICAgICAgZm4oCisgICAgICAgICAg
ICAgICAgICAgIGVsZW1zWyBpIF0sIGtleSwgcmF3ID8KKyAgICAgICAgICAgICAgICAgICAgdmFs
dWUgOgorICAgICAgICAgICAgICAgICAgICB2YWx1ZS5jYWxsKCBlbGVtc1sgaSBdLCBpLCBmbigg
ZWxlbXNbIGkgXSwga2V5ICkgKQorICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIGNoYWluYWJsZSApIHsKKyAgICAgICAgcmV0dXJu
IGVsZW1zOworICAgIH0KKworICAgIC8vIEdldHMKKyAgICBpZiAoIGJ1bGsgKSB7CisgICAgICAg
IHJldHVybiBmbi5jYWxsKCBlbGVtcyApOworICAgIH0KKworICAgIHJldHVybiBsZW4gPyBmbigg
ZWxlbXNbIDAgXSwga2V5ICkgOiBlbXB0eUdldDsKK307Cit2YXIgYWNjZXB0RGF0YSA9IGZ1bmN0
aW9uKCBvd25lciApIHsKKworICAgIC8vIEFjY2VwdHMgb25seToKKyAgICAvLyAgLSBOb2RlCisg
ICAgLy8gICAgLSBOb2RlLkVMRU1FTlRfTk9ERQorICAgIC8vICAgIC0gTm9kZS5ET0NVTUVOVF9O
T0RFCisgICAgLy8gIC0gT2JqZWN0CisgICAgLy8gICAgLSBBbnkKKyAgICByZXR1cm4gb3duZXIu
bm9kZVR5cGUgPT09IDEgfHwgb3duZXIubm9kZVR5cGUgPT09IDkgfHwgISggK293bmVyLm5vZGVU
eXBlICk7Cit9OworCisKKworCitmdW5jdGlvbiBEYXRhKCkgeworICAgIHRoaXMuZXhwYW5kbyA9
IGpRdWVyeS5leHBhbmRvICsgRGF0YS51aWQrKzsKK30KKworRGF0YS51aWQgPSAxOworCitEYXRh
LnByb3RvdHlwZSA9IHsKKworICAgIGNhY2hlOiBmdW5jdGlvbiggb3duZXIgKSB7CisKKyAgICAg
ICAgLy8gQ2hlY2sgaWYgdGhlIG93bmVyIG9iamVjdCBhbHJlYWR5IGhhcyBhIGNhY2hlCisgICAg
ICAgIHZhciB2YWx1ZSA9IG93bmVyWyB0aGlzLmV4cGFuZG8gXTsKKworICAgICAgICAvLyBJZiBu
b3QsIGNyZWF0ZSBvbmUKKyAgICAgICAgaWYgKCAhdmFsdWUgKSB7CisgICAgICAgICAgICB2YWx1
ZSA9IHt9OworCisgICAgICAgICAgICAvLyBXZSBjYW4gYWNjZXB0IGRhdGEgZm9yIG5vbi1lbGVt
ZW50IG5vZGVzIGluIG1vZGVybiBicm93c2VycywKKyAgICAgICAgICAgIC8vIGJ1dCB3ZSBzaG91
bGQgbm90LCBzZWUgIzgzMzUuCisgICAgICAgICAgICAvLyBBbHdheXMgcmV0dXJuIGFuIGVtcHR5
IG9iamVjdC4KKyAgICAgICAgICAgIGlmICggYWNjZXB0RGF0YSggb3duZXIgKSApIHsKKworICAg
ICAgICAgICAgICAgIC8vIElmIGl0IGlzIGEgbm9kZSB1bmxpa2VseSB0byBiZSBzdHJpbmdpZnkt
ZWQgb3IgbG9vcGVkIG92ZXIKKyAgICAgICAgICAgICAgICAvLyB1c2UgcGxhaW4gYXNzaWdubWVu
dAorICAgICAgICAgICAgICAgIGlmICggb3duZXIubm9kZVR5cGUgKSB7CisgICAgICAgICAgICAg
ICAgICAgIG93bmVyWyB0aGlzLmV4cGFuZG8gXSA9IHZhbHVlOworCisgICAgICAgICAgICAgICAg
Ly8gT3RoZXJ3aXNlIHNlY3VyZSBpdCBpbiBhIG5vbi1lbnVtZXJhYmxlIHByb3BlcnR5CisgICAg
ICAgICAgICAgICAgLy8gY29uZmlndXJhYmxlIG11c3QgYmUgdHJ1ZSB0byBhbGxvdyB0aGUgcHJv
cGVydHkgdG8gYmUKKyAgICAgICAgICAgICAgICAvLyBkZWxldGVkIHdoZW4gZGF0YSBpcyByZW1v
dmVkCisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgT2JqZWN0
LmRlZmluZVByb3BlcnR5KCBvd25lciwgdGhpcy5leHBhbmRvLCB7CisgICAgICAgICAgICAgICAg
ICAgICAgICB2YWx1ZTogdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFi
bGU6IHRydWUKKyAgICAgICAgICAgICAgICAgICAgfSApOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICB9LAor
ICAgIHNldDogZnVuY3Rpb24oIG93bmVyLCBkYXRhLCB2YWx1ZSApIHsKKyAgICAgICAgdmFyIHBy
b3AsCisgICAgICAgICAgICBjYWNoZSA9IHRoaXMuY2FjaGUoIG93bmVyICk7CisKKyAgICAgICAg
Ly8gSGFuZGxlOiBbIG93bmVyLCBrZXksIHZhbHVlIF0gYXJncworICAgICAgICAvLyBBbHdheXMg
dXNlIGNhbWVsQ2FzZSBrZXkgKGdoLTIyNTcpCisgICAgICAgIGlmICggdHlwZW9mIGRhdGEgPT09
ICJzdHJpbmciICkgeworICAgICAgICAgICAgY2FjaGVbIGpRdWVyeS5jYW1lbENhc2UoIGRhdGEg
KSBdID0gdmFsdWU7CisKKyAgICAgICAgLy8gSGFuZGxlOiBbIG93bmVyLCB7IHByb3BlcnRpZXMg
fSBdIGFyZ3MKKyAgICAgICAgfSBlbHNlIHsKKworICAgICAgICAgICAgLy8gQ29weSB0aGUgcHJv
cGVydGllcyBvbmUtYnktb25lIHRvIHRoZSBjYWNoZSBvYmplY3QKKyAgICAgICAgICAgIGZvciAo
IHByb3AgaW4gZGF0YSApIHsKKyAgICAgICAgICAgICAgICBjYWNoZVsgalF1ZXJ5LmNhbWVsQ2Fz
ZSggcHJvcCApIF0gPSBkYXRhWyBwcm9wIF07CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuIGNhY2hlOworICAgIH0sCisgICAgZ2V0OiBmdW5jdGlvbiggb3duZXIsIGtl
eSApIHsKKyAgICAgICAgcmV0dXJuIGtleSA9PT0gdW5kZWZpbmVkID8KKyAgICAgICAgICAgIHRo
aXMuY2FjaGUoIG93bmVyICkgOgorCisgICAgICAgICAgICAvLyBBbHdheXMgdXNlIGNhbWVsQ2Fz
ZSBrZXkgKGdoLTIyNTcpCisgICAgICAgICAgICBvd25lclsgdGhpcy5leHBhbmRvIF0gJiYgb3du
ZXJbIHRoaXMuZXhwYW5kbyBdWyBqUXVlcnkuY2FtZWxDYXNlKCBrZXkgKSBdOworICAgIH0sCisg
ICAgYWNjZXNzOiBmdW5jdGlvbiggb3duZXIsIGtleSwgdmFsdWUgKSB7CisKKyAgICAgICAgLy8g
SW4gY2FzZXMgd2hlcmUgZWl0aGVyOgorICAgICAgICAvLworICAgICAgICAvLyAgIDEuIE5vIGtl
eSB3YXMgc3BlY2lmaWVkCisgICAgICAgIC8vICAgMi4gQSBzdHJpbmcga2V5IHdhcyBzcGVjaWZp
ZWQsIGJ1dCBubyB2YWx1ZSBwcm92aWRlZAorICAgICAgICAvLworICAgICAgICAvLyBUYWtlIHRo
ZSAicmVhZCIgcGF0aCBhbmQgYWxsb3cgdGhlIGdldCBtZXRob2QgdG8gZGV0ZXJtaW5lCisgICAg
ICAgIC8vIHdoaWNoIHZhbHVlIHRvIHJldHVybiwgcmVzcGVjdGl2ZWx5IGVpdGhlcjoKKyAgICAg
ICAgLy8KKyAgICAgICAgLy8gICAxLiBUaGUgZW50aXJlIGNhY2hlIG9iamVjdAorICAgICAgICAv
LyAgIDIuIFRoZSBkYXRhIHN0b3JlZCBhdCB0aGUga2V5CisgICAgICAgIC8vCisgICAgICAgIGlm
ICgga2V5ID09PSB1bmRlZmluZWQgfHwKKyAgICAgICAgICAgICAgICAoICgga2V5ICYmIHR5cGVv
ZiBrZXkgPT09ICJzdHJpbmciICkgJiYgdmFsdWUgPT09IHVuZGVmaW5lZCApICkgeworCisgICAg
ICAgICAgICByZXR1cm4gdGhpcy5nZXQoIG93bmVyLCBrZXkgKTsKKyAgICAgICAgfQorCisgICAg
ICAgIC8vIFdoZW4gdGhlIGtleSBpcyBub3QgYSBzdHJpbmcsIG9yIGJvdGggYSBrZXkgYW5kIHZh
bHVlCisgICAgICAgIC8vIGFyZSBzcGVjaWZpZWQsIHNldCBvciBleHRlbmQgKGV4aXN0aW5nIG9i
amVjdHMpIHdpdGggZWl0aGVyOgorICAgICAgICAvLworICAgICAgICAvLyAgIDEuIEFuIG9iamVj
dCBvZiBwcm9wZXJ0aWVzCisgICAgICAgIC8vICAgMi4gQSBrZXkgYW5kIHZhbHVlCisgICAgICAg
IC8vCisgICAgICAgIHRoaXMuc2V0KCBvd25lciwga2V5LCB2YWx1ZSApOworCisgICAgICAgIC8v
IFNpbmNlIHRoZSAic2V0IiBwYXRoIGNhbiBoYXZlIHR3byBwb3NzaWJsZSBlbnRyeSBwb2ludHMK
KyAgICAgICAgLy8gcmV0dXJuIHRoZSBleHBlY3RlZCBkYXRhIGJhc2VkIG9uIHdoaWNoIHBhdGgg
d2FzIHRha2VuWypdCisgICAgICAgIHJldHVybiB2YWx1ZSAhPT0gdW5kZWZpbmVkID8gdmFsdWUg
OiBrZXk7CisgICAgfSwKKyAgICByZW1vdmU6IGZ1bmN0aW9uKCBvd25lciwga2V5ICkgeworICAg
ICAgICB2YXIgaSwKKyAgICAgICAgICAgIGNhY2hlID0gb3duZXJbIHRoaXMuZXhwYW5kbyBdOwor
CisgICAgICAgIGlmICggY2FjaGUgPT09IHVuZGVmaW5lZCApIHsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICgga2V5ICE9PSB1bmRlZmluZWQgKSB7CisKKyAg
ICAgICAgICAgIC8vIFN1cHBvcnQgYXJyYXkgb3Igc3BhY2Ugc2VwYXJhdGVkIHN0cmluZyBvZiBr
ZXlzCisgICAgICAgICAgICBpZiAoIGpRdWVyeS5pc0FycmF5KCBrZXkgKSApIHsKKworICAgICAg
ICAgICAgICAgIC8vIElmIGtleSBpcyBhbiBhcnJheSBvZiBrZXlzLi4uCisgICAgICAgICAgICAg
ICAgLy8gV2UgYWx3YXlzIHNldCBjYW1lbENhc2Uga2V5cywgc28gcmVtb3ZlIHRoYXQuCisgICAg
ICAgICAgICAgICAga2V5ID0ga2V5Lm1hcCggalF1ZXJ5LmNhbWVsQ2FzZSApOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBrZXkgPSBqUXVlcnkuY2FtZWxDYXNlKCBrZXkg
KTsKKworICAgICAgICAgICAgICAgIC8vIElmIGEga2V5IHdpdGggdGhlIHNwYWNlcyBleGlzdHMs
IHVzZSBpdC4KKyAgICAgICAgICAgICAgICAvLyBPdGhlcndpc2UsIGNyZWF0ZSBhbiBhcnJheSBi
eSBtYXRjaGluZyBub24td2hpdGVzcGFjZQorICAgICAgICAgICAgICAgIGtleSA9IGtleSBpbiBj
YWNoZSA/CisgICAgICAgICAgICAgICAgICAgIFsga2V5IF0gOgorICAgICAgICAgICAgICAgICAg
ICAoIGtleS5tYXRjaCggcm5vdGh0bWx3aGl0ZSApIHx8IFtdICk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGkgPSBrZXkubGVuZ3RoOworCisgICAgICAgICAgICB3aGlsZSAoIGktLSAp
IHsKKyAgICAgICAgICAgICAgICBkZWxldGUgY2FjaGVbIGtleVsgaSBdIF07CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBSZW1vdmUgdGhlIGV4cGFuZG8gaWYgdGhlcmUn
cyBubyBtb3JlIGRhdGEKKyAgICAgICAgaWYgKCBrZXkgPT09IHVuZGVmaW5lZCB8fCBqUXVlcnku
aXNFbXB0eU9iamVjdCggY2FjaGUgKSApIHsKKworICAgICAgICAgICAgLy8gU3VwcG9ydDogQ2hy
b21lIDw9MzUgLSA0NQorICAgICAgICAgICAgLy8gV2Via2l0ICYgQmxpbmsgcGVyZm9ybWFuY2Ug
c3VmZmVycyB3aGVuIGRlbGV0aW5nIHByb3BlcnRpZXMKKyAgICAgICAgICAgIC8vIGZyb20gRE9N
IG5vZGVzLCBzbyBzZXQgdG8gdW5kZWZpbmVkIGluc3RlYWQKKyAgICAgICAgICAgIC8vIGh0dHBz
Oi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTM3ODYwNyAo
YnVnIHJlc3RyaWN0ZWQpCisgICAgICAgICAgICBpZiAoIG93bmVyLm5vZGVUeXBlICkgeworICAg
ICAgICAgICAgICAgIG93bmVyWyB0aGlzLmV4cGFuZG8gXSA9IHVuZGVmaW5lZDsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGVsZXRlIG93bmVyWyB0aGlzLmV4cGFuZG8g
XTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0sCisgICAgaGFzRGF0YTogZnVuY3Rp
b24oIG93bmVyICkgeworICAgICAgICB2YXIgY2FjaGUgPSBvd25lclsgdGhpcy5leHBhbmRvIF07
CisgICAgICAgIHJldHVybiBjYWNoZSAhPT0gdW5kZWZpbmVkICYmICFqUXVlcnkuaXNFbXB0eU9i
amVjdCggY2FjaGUgKTsKKyAgICB9Cit9OwordmFyIGRhdGFQcml2ID0gbmV3IERhdGEoKTsKKwor
dmFyIGRhdGFVc2VyID0gbmV3IERhdGEoKTsKKworCisKKy8vICBJbXBsZW1lbnRhdGlvbiBTdW1t
YXJ5CisvLworLy8gIDEuIEVuZm9yY2UgQVBJIHN1cmZhY2UgYW5kIHNlbWFudGljIGNvbXBhdGli
aWxpdHkgd2l0aCAxLjkueCBicmFuY2gKKy8vICAyLiBJbXByb3ZlIHRoZSBtb2R1bGUncyBtYWlu
dGFpbmFiaWxpdHkgYnkgcmVkdWNpbmcgdGhlIHN0b3JhZ2UKKy8vICAgICAgcGF0aHMgdG8gYSBz
aW5nbGUgbWVjaGFuaXNtLgorLy8gIDMuIFVzZSB0aGUgc2FtZSBzaW5nbGUgbWVjaGFuaXNtIHRv
IHN1cHBvcnQgInByaXZhdGUiIGFuZCAidXNlciIgZGF0YS4KKy8vICA0LiBfTmV2ZXJfIGV4cG9z
ZSAicHJpdmF0ZSIgZGF0YSB0byB1c2VyIGNvZGUgKFRPRE86IERyb3AgX2RhdGEsIF9yZW1vdmVE
YXRhKQorLy8gIDUuIEF2b2lkIGV4cG9zaW5nIGltcGxlbWVudGF0aW9uIGRldGFpbHMgb24gdXNl
ciBvYmplY3RzIChlZy4gZXhwYW5kbyBwcm9wZXJ0aWVzKQorLy8gIDYuIFByb3ZpZGUgYSBjbGVh
ciBwYXRoIGZvciBpbXBsZW1lbnRhdGlvbiB1cGdyYWRlIHRvIFdlYWtNYXAgaW4gMjAxNAorCit2
YXIgcmJyYWNlID0gL14oPzpce1tcd1xXXSpcfXxcW1tcd1xXXSpcXSkkLywKKyAgICBybXVsdGlE
YXNoID0gL1tBLVpdL2c7CisKK2Z1bmN0aW9uIGdldERhdGEoIGRhdGEgKSB7CisgICAgaWYgKCBk
YXRhID09PSAidHJ1ZSIgKSB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGlm
ICggZGF0YSA9PT0gImZhbHNlIiApIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwor
ICAgIGlmICggZGF0YSA9PT0gIm51bGwiICkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9
CisKKyAgICAvLyBPbmx5IGNvbnZlcnQgdG8gYSBudW1iZXIgaWYgaXQgZG9lc24ndCBjaGFuZ2Ug
dGhlIHN0cmluZworICAgIGlmICggZGF0YSA9PT0gK2RhdGEgKyAiIiApIHsKKyAgICAgICAgcmV0
dXJuICtkYXRhOworICAgIH0KKworICAgIGlmICggcmJyYWNlLnRlc3QoIGRhdGEgKSApIHsKKyAg
ICAgICAgcmV0dXJuIEpTT04ucGFyc2UoIGRhdGEgKTsKKyAgICB9CisKKyAgICByZXR1cm4gZGF0
YTsKK30KKworZnVuY3Rpb24gZGF0YUF0dHIoIGVsZW0sIGtleSwgZGF0YSApIHsKKyAgICB2YXIg
bmFtZTsKKworICAgIC8vIElmIG5vdGhpbmcgd2FzIGZvdW5kIGludGVybmFsbHksIHRyeSB0byBm
ZXRjaCBhbnkKKyAgICAvLyBkYXRhIGZyb20gdGhlIEhUTUw1IGRhdGEtKiBhdHRyaWJ1dGUKKyAg
ICBpZiAoIGRhdGEgPT09IHVuZGVmaW5lZCAmJiBlbGVtLm5vZGVUeXBlID09PSAxICkgeworICAg
ICAgICBuYW1lID0gImRhdGEtIiArIGtleS5yZXBsYWNlKCBybXVsdGlEYXNoLCAiLSQmIiApLnRv
TG93ZXJDYXNlKCk7CisgICAgICAgIGRhdGEgPSBlbGVtLmdldEF0dHJpYnV0ZSggbmFtZSApOwor
CisgICAgICAgIGlmICggdHlwZW9mIGRhdGEgPT09ICJzdHJpbmciICkgeworICAgICAgICAgICAg
dHJ5IHsKKyAgICAgICAgICAgICAgICBkYXRhID0gZ2V0RGF0YSggZGF0YSApOworICAgICAgICAg
ICAgfSBjYXRjaCAoIGUgKSB7fQorCisgICAgICAgICAgICAvLyBNYWtlIHN1cmUgd2Ugc2V0IHRo
ZSBkYXRhIHNvIGl0IGlzbid0IGNoYW5nZWQgbGF0ZXIKKyAgICAgICAgICAgIGRhdGFVc2VyLnNl
dCggZWxlbSwga2V5LCBkYXRhICk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBkYXRh
ID0gdW5kZWZpbmVkOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBkYXRhOworfQorCitq
UXVlcnkuZXh0ZW5kKCB7CisgICAgaGFzRGF0YTogZnVuY3Rpb24oIGVsZW0gKSB7CisgICAgICAg
IHJldHVybiBkYXRhVXNlci5oYXNEYXRhKCBlbGVtICkgfHwgZGF0YVByaXYuaGFzRGF0YSggZWxl
bSApOworICAgIH0sCisKKyAgICBkYXRhOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgZGF0YSApIHsK
KyAgICAgICAgcmV0dXJuIGRhdGFVc2VyLmFjY2VzcyggZWxlbSwgbmFtZSwgZGF0YSApOworICAg
IH0sCisKKyAgICByZW1vdmVEYXRhOiBmdW5jdGlvbiggZWxlbSwgbmFtZSApIHsKKyAgICAgICAg
ZGF0YVVzZXIucmVtb3ZlKCBlbGVtLCBuYW1lICk7CisgICAgfSwKKworICAgIC8vIFRPRE86IE5v
dyB0aGF0IGFsbCBjYWxscyB0byBfZGF0YSBhbmQgX3JlbW92ZURhdGEgaGF2ZSBiZWVuIHJlcGxh
Y2VkCisgICAgLy8gd2l0aCBkaXJlY3QgY2FsbHMgdG8gZGF0YVByaXYgbWV0aG9kcywgdGhlc2Ug
Y2FuIGJlIGRlcHJlY2F0ZWQuCisgICAgX2RhdGE6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBkYXRh
ICkgeworICAgICAgICByZXR1cm4gZGF0YVByaXYuYWNjZXNzKCBlbGVtLCBuYW1lLCBkYXRhICk7
CisgICAgfSwKKworICAgIF9yZW1vdmVEYXRhOiBmdW5jdGlvbiggZWxlbSwgbmFtZSApIHsKKyAg
ICAgICAgZGF0YVByaXYucmVtb3ZlKCBlbGVtLCBuYW1lICk7CisgICAgfQorfSApOworCitqUXVl
cnkuZm4uZXh0ZW5kKCB7CisgICAgZGF0YTogZnVuY3Rpb24oIGtleSwgdmFsdWUgKSB7CisgICAg
ICAgIHZhciBpLCBuYW1lLCBkYXRhLAorICAgICAgICAgICAgZWxlbSA9IHRoaXNbIDAgXSwKKyAg
ICAgICAgICAgIGF0dHJzID0gZWxlbSAmJiBlbGVtLmF0dHJpYnV0ZXM7CisKKyAgICAgICAgLy8g
R2V0cyBhbGwgdmFsdWVzCisgICAgICAgIGlmICgga2V5ID09PSB1bmRlZmluZWQgKSB7CisgICAg
ICAgICAgICBpZiAoIHRoaXMubGVuZ3RoICkgeworICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRh
VXNlci5nZXQoIGVsZW0gKTsKKworICAgICAgICAgICAgICAgIGlmICggZWxlbS5ub2RlVHlwZSA9
PT0gMSAmJiAhZGF0YVByaXYuZ2V0KCBlbGVtLCAiaGFzRGF0YUF0dHJzIiApICkgeworICAgICAg
ICAgICAgICAgICAgICBpID0gYXR0cnMubGVuZ3RoOworICAgICAgICAgICAgICAgICAgICB3aGls
ZSAoIGktLSApIHsKKworICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3VwcG9ydDogSUUgMTEg
b25seQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGF0dHJzIGVsZW1lbnRzIGNhbiBi
ZSBudWxsICgjMTQ4OTQpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGF0dHJzWyBpIF0g
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IGF0dHJzWyBpIF0ubmFtZTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIG5hbWUuaW5kZXhPZiggImRhdGEtIiAp
ID09PSAwICkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0galF1ZXJ5
LmNhbWVsQ2FzZSggbmFtZS5zbGljZSggNSApICk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRhdGFBdHRyKCBlbGVtLCBuYW1lLCBkYXRhWyBuYW1lIF0gKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZGF0YVByaXYuc2V0KCBlbGVtLCAiaGFz
RGF0YUF0dHJzIiwgdHJ1ZSApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgcmV0dXJuIGRhdGE7CisgICAgICAgIH0KKworICAgICAgICAvLyBTZXRzIG11
bHRpcGxlIHZhbHVlcworICAgICAgICBpZiAoIHR5cGVvZiBrZXkgPT09ICJvYmplY3QiICkgewor
ICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAg
ICAgZGF0YVVzZXIuc2V0KCB0aGlzLCBrZXkgKTsKKyAgICAgICAgICAgIH0gKTsKKyAgICAgICAg
fQorCisgICAgICAgIHJldHVybiBhY2Nlc3MoIHRoaXMsIGZ1bmN0aW9uKCB2YWx1ZSApIHsKKyAg
ICAgICAgICAgIHZhciBkYXRhOworCisgICAgICAgICAgICAvLyBUaGUgY2FsbGluZyBqUXVlcnkg
b2JqZWN0IChlbGVtZW50IG1hdGNoZXMpIGlzIG5vdCBlbXB0eQorICAgICAgICAgICAgLy8gKGFu
ZCB0aGVyZWZvcmUgaGFzIGFuIGVsZW1lbnQgYXBwZWFycyBhdCB0aGlzWyAwIF0pIGFuZCB0aGUK
KyAgICAgICAgICAgIC8vIGB2YWx1ZWAgcGFyYW1ldGVyIHdhcyBub3QgdW5kZWZpbmVkLiBBbiBl
bXB0eSBqUXVlcnkgb2JqZWN0CisgICAgICAgICAgICAvLyB3aWxsIHJlc3VsdCBpbiBgdW5kZWZp
bmVkYCBmb3IgZWxlbSA9IHRoaXNbIDAgXSB3aGljaCB3aWxsCisgICAgICAgICAgICAvLyB0aHJv
dyBhbiBleGNlcHRpb24gaWYgYW4gYXR0ZW1wdCB0byByZWFkIGEgZGF0YSBjYWNoZSBpcyBtYWRl
LgorICAgICAgICAgICAgaWYgKCBlbGVtICYmIHZhbHVlID09PSB1bmRlZmluZWQgKSB7CisKKyAg
ICAgICAgICAgICAgICAvLyBBdHRlbXB0IHRvIGdldCBkYXRhIGZyb20gdGhlIGNhY2hlCisgICAg
ICAgICAgICAgICAgLy8gVGhlIGtleSB3aWxsIGFsd2F5cyBiZSBjYW1lbENhc2VkIGluIERhdGEK
KyAgICAgICAgICAgICAgICBkYXRhID0gZGF0YVVzZXIuZ2V0KCBlbGVtLCBrZXkgKTsKKyAgICAg
ICAgICAgICAgICBpZiAoIGRhdGEgIT09IHVuZGVmaW5lZCApIHsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGRhdGE7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8g
QXR0ZW1wdCB0byAiZGlzY292ZXIiIHRoZSBkYXRhIGluCisgICAgICAgICAgICAgICAgLy8gSFRN
TDUgY3VzdG9tIGRhdGEtKiBhdHRycworICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhQXR0cigg
ZWxlbSwga2V5ICk7CisgICAgICAgICAgICAgICAgaWYgKCBkYXRhICE9PSB1bmRlZmluZWQgKSB7
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhOworICAgICAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgICAgIC8vIFdlIHRyaWVkIHJlYWxseSBoYXJkLCBidXQgdGhlIGRhdGEgZG9l
c24ndCBleGlzdC4KKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIC8vIFNldCB0aGUgZGF0YS4uLgorICAgICAgICAgICAgdGhpcy5lYWNoKCBmdW5j
dGlvbigpIHsKKworICAgICAgICAgICAgICAgIC8vIFdlIGFsd2F5cyBzdG9yZSB0aGUgY2FtZWxD
YXNlZCBrZXkKKyAgICAgICAgICAgICAgICBkYXRhVXNlci5zZXQoIHRoaXMsIGtleSwgdmFsdWUg
KTsKKyAgICAgICAgICAgIH0gKTsKKyAgICAgICAgfSwgbnVsbCwgdmFsdWUsIGFyZ3VtZW50cy5s
ZW5ndGggPiAxLCBudWxsLCB0cnVlICk7CisgICAgfSwKKworICAgIHJlbW92ZURhdGE6IGZ1bmN0
aW9uKCBrZXkgKSB7CisgICAgICAgIHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgZGF0YVVzZXIucmVtb3ZlKCB0aGlzLCBrZXkgKTsKKyAgICAgICAgfSApOworICAg
IH0KK30gKTsKKworCitqUXVlcnkuZXh0ZW5kKCB7CisgICAgcXVldWU6IGZ1bmN0aW9uKCBlbGVt
LCB0eXBlLCBkYXRhICkgeworICAgICAgICB2YXIgcXVldWU7CisKKyAgICAgICAgaWYgKCBlbGVt
ICkgeworICAgICAgICAgICAgdHlwZSA9ICggdHlwZSB8fCAiZngiICkgKyAicXVldWUiOworICAg
ICAgICAgICAgcXVldWUgPSBkYXRhUHJpdi5nZXQoIGVsZW0sIHR5cGUgKTsKKworICAgICAgICAg
ICAgLy8gU3BlZWQgdXAgZGVxdWV1ZSBieSBnZXR0aW5nIG91dCBxdWlja2x5IGlmIHRoaXMgaXMg
anVzdCBhIGxvb2t1cAorICAgICAgICAgICAgaWYgKCBkYXRhICkgeworICAgICAgICAgICAgICAg
IGlmICggIXF1ZXVlIHx8IGpRdWVyeS5pc0FycmF5KCBkYXRhICkgKSB7CisgICAgICAgICAgICAg
ICAgICAgIHF1ZXVlID0gZGF0YVByaXYuYWNjZXNzKCBlbGVtLCB0eXBlLCBqUXVlcnkubWFrZUFy
cmF5KCBkYXRhICkgKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
ICAgICBxdWV1ZS5wdXNoKCBkYXRhICk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorICAgICAgICAgICAgcmV0dXJuIHF1ZXVlIHx8IFtdOworICAgICAgICB9CisgICAgfSwKKwor
ICAgIGRlcXVldWU6IGZ1bmN0aW9uKCBlbGVtLCB0eXBlICkgeworICAgICAgICB0eXBlID0gdHlw
ZSB8fCAiZngiOworCisgICAgICAgIHZhciBxdWV1ZSA9IGpRdWVyeS5xdWV1ZSggZWxlbSwgdHlw
ZSApLAorICAgICAgICAgICAgc3RhcnRMZW5ndGggPSBxdWV1ZS5sZW5ndGgsCisgICAgICAgICAg
ICBmbiA9IHF1ZXVlLnNoaWZ0KCksCisgICAgICAgICAgICBob29rcyA9IGpRdWVyeS5fcXVldWVI
b29rcyggZWxlbSwgdHlwZSApLAorICAgICAgICAgICAgbmV4dCA9IGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgICAgIGpRdWVyeS5kZXF1ZXVlKCBlbGVtLCB0eXBlICk7CisgICAgICAgICAgICB9
OworCisgICAgICAgIC8vIElmIHRoZSBmeCBxdWV1ZSBpcyBkZXF1ZXVlZCwgYWx3YXlzIHJlbW92
ZSB0aGUgcHJvZ3Jlc3Mgc2VudGluZWwKKyAgICAgICAgaWYgKCBmbiA9PT0gImlucHJvZ3Jlc3Mi
ICkgeworICAgICAgICAgICAgZm4gPSBxdWV1ZS5zaGlmdCgpOworICAgICAgICAgICAgc3RhcnRM
ZW5ndGgtLTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICggZm4gKSB7CisKKyAgICAgICAgICAg
IC8vIEFkZCBhIHByb2dyZXNzIHNlbnRpbmVsIHRvIHByZXZlbnQgdGhlIGZ4IHF1ZXVlIGZyb20g
YmVpbmcKKyAgICAgICAgICAgIC8vIGF1dG9tYXRpY2FsbHkgZGVxdWV1ZWQKKyAgICAgICAgICAg
IGlmICggdHlwZSA9PT0gImZ4IiApIHsKKyAgICAgICAgICAgICAgICBxdWV1ZS51bnNoaWZ0KCAi
aW5wcm9ncmVzcyIgKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gQ2xlYXIgdXAg
dGhlIGxhc3QgcXVldWUgc3RvcCBmdW5jdGlvbgorICAgICAgICAgICAgZGVsZXRlIGhvb2tzLnN0
b3A7CisgICAgICAgICAgICBmbi5jYWxsKCBlbGVtLCBuZXh0LCBob29rcyApOworICAgICAgICB9
CisKKyAgICAgICAgaWYgKCAhc3RhcnRMZW5ndGggJiYgaG9va3MgKSB7CisgICAgICAgICAgICBo
b29rcy5lbXB0eS5maXJlKCk7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgLy8gTm90IHB1Ymxp
YyAtIGdlbmVyYXRlIGEgcXVldWVIb29rcyBvYmplY3QsIG9yIHJldHVybiB0aGUgY3VycmVudCBv
bmUKKyAgICBfcXVldWVIb29rczogZnVuY3Rpb24oIGVsZW0sIHR5cGUgKSB7CisgICAgICAgIHZh
ciBrZXkgPSB0eXBlICsgInF1ZXVlSG9va3MiOworICAgICAgICByZXR1cm4gZGF0YVByaXYuZ2V0
KCBlbGVtLCBrZXkgKSB8fCBkYXRhUHJpdi5hY2Nlc3MoIGVsZW0sIGtleSwgeworICAgICAgICAg
ICAgZW1wdHk6IGpRdWVyeS5DYWxsYmFja3MoICJvbmNlIG1lbW9yeSIgKS5hZGQoIGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgICAgIGRhdGFQcml2LnJlbW92ZSggZWxlbSwgWyB0eXBlICsgInF1
ZXVlIiwga2V5IF0gKTsKKyAgICAgICAgICAgIH0gKQorICAgICAgICB9ICk7CisgICAgfQorfSAp
OworCitqUXVlcnkuZm4uZXh0ZW5kKCB7CisgICAgcXVldWU6IGZ1bmN0aW9uKCB0eXBlLCBkYXRh
ICkgeworICAgICAgICB2YXIgc2V0dGVyID0gMjsKKworICAgICAgICBpZiAoIHR5cGVvZiB0eXBl
ICE9PSAic3RyaW5nIiApIHsKKyAgICAgICAgICAgIGRhdGEgPSB0eXBlOworICAgICAgICAgICAg
dHlwZSA9ICJmeCI7CisgICAgICAgICAgICBzZXR0ZXItLTsKKyAgICAgICAgfQorCisgICAgICAg
IGlmICggYXJndW1lbnRzLmxlbmd0aCA8IHNldHRlciApIHsKKyAgICAgICAgICAgIHJldHVybiBq
UXVlcnkucXVldWUoIHRoaXNbIDAgXSwgdHlwZSApOworICAgICAgICB9CisKKyAgICAgICAgcmV0
dXJuIGRhdGEgPT09IHVuZGVmaW5lZCA/CisgICAgICAgICAgICB0aGlzIDoKKyAgICAgICAgICAg
IHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgdmFyIHF1ZXVlID0galF1
ZXJ5LnF1ZXVlKCB0aGlzLCB0eXBlLCBkYXRhICk7CisKKyAgICAgICAgICAgICAgICAvLyBFbnN1
cmUgYSBob29rcyBmb3IgdGhpcyBxdWV1ZQorICAgICAgICAgICAgICAgIGpRdWVyeS5fcXVldWVI
b29rcyggdGhpcywgdHlwZSApOworCisgICAgICAgICAgICAgICAgaWYgKCB0eXBlID09PSAiZngi
ICYmIHF1ZXVlWyAwIF0gIT09ICJpbnByb2dyZXNzIiApIHsKKyAgICAgICAgICAgICAgICAgICAg
alF1ZXJ5LmRlcXVldWUoIHRoaXMsIHR5cGUgKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9ICk7CisgICAgfSwKKyAgICBkZXF1ZXVlOiBmdW5jdGlvbiggdHlwZSApIHsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBqUXVlcnkuZGVx
dWV1ZSggdGhpcywgdHlwZSApOworICAgICAgICB9ICk7CisgICAgfSwKKyAgICBjbGVhclF1ZXVl
OiBmdW5jdGlvbiggdHlwZSApIHsKKyAgICAgICAgcmV0dXJuIHRoaXMucXVldWUoIHR5cGUgfHwg
ImZ4IiwgW10gKTsKKyAgICB9LAorCisgICAgLy8gR2V0IGEgcHJvbWlzZSByZXNvbHZlZCB3aGVu
IHF1ZXVlcyBvZiBhIGNlcnRhaW4gdHlwZQorICAgIC8vIGFyZSBlbXB0aWVkIChmeCBpcyB0aGUg
dHlwZSBieSBkZWZhdWx0KQorICAgIHByb21pc2U6IGZ1bmN0aW9uKCB0eXBlLCBvYmogKSB7Cisg
ICAgICAgIHZhciB0bXAsCisgICAgICAgICAgICBjb3VudCA9IDEsCisgICAgICAgICAgICBkZWZl
ciA9IGpRdWVyeS5EZWZlcnJlZCgpLAorICAgICAgICAgICAgZWxlbWVudHMgPSB0aGlzLAorICAg
ICAgICAgICAgaSA9IHRoaXMubGVuZ3RoLAorICAgICAgICAgICAgcmVzb2x2ZSA9IGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgICAgIGlmICggISggLS1jb3VudCApICkgeworICAgICAgICAgICAg
ICAgICAgICBkZWZlci5yZXNvbHZlV2l0aCggZWxlbWVudHMsIFsgZWxlbWVudHMgXSApOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH07CisKKyAgICAgICAgaWYgKCB0eXBlb2YgdHlw
ZSAhPT0gInN0cmluZyIgKSB7CisgICAgICAgICAgICBvYmogPSB0eXBlOworICAgICAgICAgICAg
dHlwZSA9IHVuZGVmaW5lZDsKKyAgICAgICAgfQorICAgICAgICB0eXBlID0gdHlwZSB8fCAiZngi
OworCisgICAgICAgIHdoaWxlICggaS0tICkgeworICAgICAgICAgICAgdG1wID0gZGF0YVByaXYu
Z2V0KCBlbGVtZW50c1sgaSBdLCB0eXBlICsgInF1ZXVlSG9va3MiICk7CisgICAgICAgICAgICBp
ZiAoIHRtcCAmJiB0bXAuZW1wdHkgKSB7CisgICAgICAgICAgICAgICAgY291bnQrKzsKKyAgICAg
ICAgICAgICAgICB0bXAuZW1wdHkuYWRkKCByZXNvbHZlICk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICByZXR1cm4gZGVmZXIucHJvbWlzZSgg
b2JqICk7CisgICAgfQorfSApOwordmFyIHBudW0gPSAoIC9bKy1dPyg/OlxkKlwufClcZCsoPzpb
ZUVdWystXT9cZCt8KS8gKS5zb3VyY2U7CisKK3ZhciByY3NzTnVtID0gbmV3IFJlZ0V4cCggIl4o
PzooWystXSk9fCkoIiArIHBudW0gKyAiKShbYS16JV0qKSQiLCAiaSIgKTsKKworCit2YXIgY3Nz
RXhwYW5kID0gWyAiVG9wIiwgIlJpZ2h0IiwgIkJvdHRvbSIsICJMZWZ0IiBdOworCit2YXIgaXNI
aWRkZW5XaXRoaW5UcmVlID0gZnVuY3Rpb24oIGVsZW0sIGVsICkgeworCisgICAgICAgIC8vIGlz
SGlkZGVuV2l0aGluVHJlZSBtaWdodCBiZSBjYWxsZWQgZnJvbSBqUXVlcnkjZmlsdGVyIGZ1bmN0
aW9uOworICAgICAgICAvLyBpbiB0aGF0IGNhc2UsIGVsZW1lbnQgd2lsbCBiZSBzZWNvbmQgYXJn
dW1lbnQKKyAgICAgICAgZWxlbSA9IGVsIHx8IGVsZW07CisKKyAgICAgICAgLy8gSW5saW5lIHN0
eWxlIHRydW1wcyBhbGwKKyAgICAgICAgcmV0dXJuIGVsZW0uc3R5bGUuZGlzcGxheSA9PT0gIm5v
bmUiIHx8CisgICAgICAgICAgICBlbGVtLnN0eWxlLmRpc3BsYXkgPT09ICIiICYmCisKKyAgICAg
ICAgICAgIC8vIE90aGVyd2lzZSwgY2hlY2sgY29tcHV0ZWQgc3R5bGUKKyAgICAgICAgICAgIC8v
IFN1cHBvcnQ6IEZpcmVmb3ggPD00MyAtIDQ1CisgICAgICAgICAgICAvLyBEaXNjb25uZWN0ZWQg
ZWxlbWVudHMgY2FuIGhhdmUgY29tcHV0ZWQgZGlzcGxheTogbm9uZSwgc28gZmlyc3QgY29uZmly
bSB0aGF0IGVsZW0gaXMKKyAgICAgICAgICAgIC8vIGluIHRoZSBkb2N1bWVudC4KKyAgICAgICAg
ICAgIGpRdWVyeS5jb250YWlucyggZWxlbS5vd25lckRvY3VtZW50LCBlbGVtICkgJiYKKworICAg
ICAgICAgICAgalF1ZXJ5LmNzcyggZWxlbSwgImRpc3BsYXkiICkgPT09ICJub25lIjsKKyAgICB9
OworCit2YXIgc3dhcCA9IGZ1bmN0aW9uKCBlbGVtLCBvcHRpb25zLCBjYWxsYmFjaywgYXJncyAp
IHsKKyAgICB2YXIgcmV0LCBuYW1lLAorICAgICAgICBvbGQgPSB7fTsKKworICAgIC8vIFJlbWVt
YmVyIHRoZSBvbGQgdmFsdWVzLCBhbmQgaW5zZXJ0IHRoZSBuZXcgb25lcworICAgIGZvciAoIG5h
bWUgaW4gb3B0aW9ucyApIHsKKyAgICAgICAgb2xkWyBuYW1lIF0gPSBlbGVtLnN0eWxlWyBuYW1l
IF07CisgICAgICAgIGVsZW0uc3R5bGVbIG5hbWUgXSA9IG9wdGlvbnNbIG5hbWUgXTsKKyAgICB9
CisKKyAgICByZXQgPSBjYWxsYmFjay5hcHBseSggZWxlbSwgYXJncyB8fCBbXSApOworCisgICAg
Ly8gUmV2ZXJ0IHRoZSBvbGQgdmFsdWVzCisgICAgZm9yICggbmFtZSBpbiBvcHRpb25zICkgewor
ICAgICAgICBlbGVtLnN0eWxlWyBuYW1lIF0gPSBvbGRbIG5hbWUgXTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gcmV0OworfTsKKworCisKKworZnVuY3Rpb24gYWRqdXN0Q1NTKCBlbGVtLCBwcm9wLCB2
YWx1ZVBhcnRzLCB0d2VlbiApIHsKKyAgICB2YXIgYWRqdXN0ZWQsCisgICAgICAgIHNjYWxlID0g
MSwKKyAgICAgICAgbWF4SXRlcmF0aW9ucyA9IDIwLAorICAgICAgICBjdXJyZW50VmFsdWUgPSB0
d2VlbiA/CisgICAgICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
dHdlZW4uY3VyKCk7CisgICAgICAgICAgICB9IDoKKyAgICAgICAgICAgIGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgICAgIHJldHVybiBqUXVlcnkuY3NzKCBlbGVtLCBwcm9wLCAiIiApOworICAg
ICAgICAgICAgfSwKKyAgICAgICAgaW5pdGlhbCA9IGN1cnJlbnRWYWx1ZSgpLAorICAgICAgICB1
bml0ID0gdmFsdWVQYXJ0cyAmJiB2YWx1ZVBhcnRzWyAzIF0gfHwgKCBqUXVlcnkuY3NzTnVtYmVy
WyBwcm9wIF0gPyAiIiA6ICJweCIgKSwKKworICAgICAgICAvLyBTdGFydGluZyB2YWx1ZSBjb21w
dXRhdGlvbiBpcyByZXF1aXJlZCBmb3IgcG90ZW50aWFsIHVuaXQgbWlzbWF0Y2hlcworICAgICAg
ICBpbml0aWFsSW5Vbml0ID0gKCBqUXVlcnkuY3NzTnVtYmVyWyBwcm9wIF0gfHwgdW5pdCAhPT0g
InB4IiAmJiAraW5pdGlhbCApICYmCisgICAgICAgICAgICByY3NzTnVtLmV4ZWMoIGpRdWVyeS5j
c3MoIGVsZW0sIHByb3AgKSApOworCisgICAgaWYgKCBpbml0aWFsSW5Vbml0ICYmIGluaXRpYWxJ
blVuaXRbIDMgXSAhPT0gdW5pdCApIHsKKworICAgICAgICAvLyBUcnVzdCB1bml0cyByZXBvcnRl
ZCBieSBqUXVlcnkuY3NzCisgICAgICAgIHVuaXQgPSB1bml0IHx8IGluaXRpYWxJblVuaXRbIDMg
XTsKKworICAgICAgICAvLyBNYWtlIHN1cmUgd2UgdXBkYXRlIHRoZSB0d2VlbiBwcm9wZXJ0aWVz
IGxhdGVyIG9uCisgICAgICAgIHZhbHVlUGFydHMgPSB2YWx1ZVBhcnRzIHx8IFtdOworCisgICAg
ICAgIC8vIEl0ZXJhdGl2ZWx5IGFwcHJveGltYXRlIGZyb20gYSBub256ZXJvIHN0YXJ0aW5nIHBv
aW50CisgICAgICAgIGluaXRpYWxJblVuaXQgPSAraW5pdGlhbCB8fCAxOworCisgICAgICAgIGRv
IHsKKworICAgICAgICAgICAgLy8gSWYgcHJldmlvdXMgaXRlcmF0aW9uIHplcm9lZCBvdXQsIGRv
dWJsZSB1bnRpbCB3ZSBnZXQgKnNvbWV0aGluZyouCisgICAgICAgICAgICAvLyBVc2Ugc3RyaW5n
IGZvciBkb3VibGluZyBzbyB3ZSBkb24ndCBhY2NpZGVudGFsbHkgc2VlIHNjYWxlIGFzIHVuY2hh
bmdlZCBiZWxvdworICAgICAgICAgICAgc2NhbGUgPSBzY2FsZSB8fCAiLjUiOworCisgICAgICAg
ICAgICAvLyBBZGp1c3QgYW5kIGFwcGx5CisgICAgICAgICAgICBpbml0aWFsSW5Vbml0ID0gaW5p
dGlhbEluVW5pdCAvIHNjYWxlOworICAgICAgICAgICAgalF1ZXJ5LnN0eWxlKCBlbGVtLCBwcm9w
LCBpbml0aWFsSW5Vbml0ICsgdW5pdCApOworCisgICAgICAgIC8vIFVwZGF0ZSBzY2FsZSwgdG9s
ZXJhdGluZyB6ZXJvIG9yIE5hTiBmcm9tIHR3ZWVuLmN1cigpCisgICAgICAgIC8vIEJyZWFrIHRo
ZSBsb29wIGlmIHNjYWxlIGlzIHVuY2hhbmdlZCBvciBwZXJmZWN0LCBvciBpZiB3ZSd2ZSBqdXN0
IGhhZCBlbm91Z2guCisgICAgICAgIH0gd2hpbGUgKAorICAgICAgICAgICAgc2NhbGUgIT09ICgg
c2NhbGUgPSBjdXJyZW50VmFsdWUoKSAvIGluaXRpYWwgKSAmJiBzY2FsZSAhPT0gMSAmJiAtLW1h
eEl0ZXJhdGlvbnMKKyAgICAgICAgKTsKKyAgICB9CisKKyAgICBpZiAoIHZhbHVlUGFydHMgKSB7
CisgICAgICAgIGluaXRpYWxJblVuaXQgPSAraW5pdGlhbEluVW5pdCB8fCAraW5pdGlhbCB8fCAw
OworCisgICAgICAgIC8vIEFwcGx5IHJlbGF0aXZlIG9mZnNldCAoKz0vLT0pIGlmIHNwZWNpZmll
ZAorICAgICAgICBhZGp1c3RlZCA9IHZhbHVlUGFydHNbIDEgXSA/CisgICAgICAgICAgICBpbml0
aWFsSW5Vbml0ICsgKCB2YWx1ZVBhcnRzWyAxIF0gKyAxICkgKiB2YWx1ZVBhcnRzWyAyIF0gOgor
ICAgICAgICAgICAgK3ZhbHVlUGFydHNbIDIgXTsKKyAgICAgICAgaWYgKCB0d2VlbiApIHsKKyAg
ICAgICAgICAgIHR3ZWVuLnVuaXQgPSB1bml0OworICAgICAgICAgICAgdHdlZW4uc3RhcnQgPSBp
bml0aWFsSW5Vbml0OworICAgICAgICAgICAgdHdlZW4uZW5kID0gYWRqdXN0ZWQ7CisgICAgICAg
IH0KKyAgICB9CisgICAgcmV0dXJuIGFkanVzdGVkOworfQorCisKK3ZhciBkZWZhdWx0RGlzcGxh
eU1hcCA9IHt9OworCitmdW5jdGlvbiBnZXREZWZhdWx0RGlzcGxheSggZWxlbSApIHsKKyAgICB2
YXIgdGVtcCwKKyAgICAgICAgZG9jID0gZWxlbS5vd25lckRvY3VtZW50LAorICAgICAgICBub2Rl
TmFtZSA9IGVsZW0ubm9kZU5hbWUsCisgICAgICAgIGRpc3BsYXkgPSBkZWZhdWx0RGlzcGxheU1h
cFsgbm9kZU5hbWUgXTsKKworICAgIGlmICggZGlzcGxheSApIHsKKyAgICAgICAgcmV0dXJuIGRp
c3BsYXk7CisgICAgfQorCisgICAgdGVtcCA9IGRvYy5ib2R5LmFwcGVuZENoaWxkKCBkb2MuY3Jl
YXRlRWxlbWVudCggbm9kZU5hbWUgKSApOworICAgIGRpc3BsYXkgPSBqUXVlcnkuY3NzKCB0ZW1w
LCAiZGlzcGxheSIgKTsKKworICAgIHRlbXAucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCggdGVtcCAp
OworCisgICAgaWYgKCBkaXNwbGF5ID09PSAibm9uZSIgKSB7CisgICAgICAgIGRpc3BsYXkgPSAi
YmxvY2siOworICAgIH0KKyAgICBkZWZhdWx0RGlzcGxheU1hcFsgbm9kZU5hbWUgXSA9IGRpc3Bs
YXk7CisKKyAgICByZXR1cm4gZGlzcGxheTsKK30KKworZnVuY3Rpb24gc2hvd0hpZGUoIGVsZW1l
bnRzLCBzaG93ICkgeworICAgIHZhciBkaXNwbGF5LCBlbGVtLAorICAgICAgICB2YWx1ZXMgPSBb
XSwKKyAgICAgICAgaW5kZXggPSAwLAorICAgICAgICBsZW5ndGggPSBlbGVtZW50cy5sZW5ndGg7
CisKKyAgICAvLyBEZXRlcm1pbmUgbmV3IGRpc3BsYXkgdmFsdWUgZm9yIGVsZW1lbnRzIHRoYXQg
bmVlZCB0byBjaGFuZ2UKKyAgICBmb3IgKCA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkgewor
ICAgICAgICBlbGVtID0gZWxlbWVudHNbIGluZGV4IF07CisgICAgICAgIGlmICggIWVsZW0uc3R5
bGUgKSB7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGRpc3Bs
YXkgPSBlbGVtLnN0eWxlLmRpc3BsYXk7CisgICAgICAgIGlmICggc2hvdyApIHsKKworICAgICAg
ICAgICAgLy8gU2luY2Ugd2UgZm9yY2UgdmlzaWJpbGl0eSB1cG9uIGNhc2NhZGUtaGlkZGVuIGVs
ZW1lbnRzLCBhbiBpbW1lZGlhdGUgKGFuZCBzbG93KQorICAgICAgICAgICAgLy8gY2hlY2sgaXMg
cmVxdWlyZWQgaW4gdGhpcyBmaXJzdCBsb29wIHVubGVzcyB3ZSBoYXZlIGEgbm9uZW1wdHkgZGlz
cGxheSB2YWx1ZSAoZWl0aGVyCisgICAgICAgICAgICAvLyBpbmxpbmUgb3IgYWJvdXQtdG8tYmUt
cmVzdG9yZWQpCisgICAgICAgICAgICBpZiAoIGRpc3BsYXkgPT09ICJub25lIiApIHsKKyAgICAg
ICAgICAgICAgICB2YWx1ZXNbIGluZGV4IF0gPSBkYXRhUHJpdi5nZXQoIGVsZW0sICJkaXNwbGF5
IiApIHx8IG51bGw7CisgICAgICAgICAgICAgICAgaWYgKCAhdmFsdWVzWyBpbmRleCBdICkgewor
ICAgICAgICAgICAgICAgICAgICBlbGVtLnN0eWxlLmRpc3BsYXkgPSAiIjsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIGVsZW0uc3R5bGUuZGlzcGxh
eSA9PT0gIiIgJiYgaXNIaWRkZW5XaXRoaW5UcmVlKCBlbGVtICkgKSB7CisgICAgICAgICAgICAg
ICAgdmFsdWVzWyBpbmRleCBdID0gZ2V0RGVmYXVsdERpc3BsYXkoIGVsZW0gKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmICggZGlzcGxheSAhPT0gIm5v
bmUiICkgeworICAgICAgICAgICAgICAgIHZhbHVlc1sgaW5kZXggXSA9ICJub25lIjsKKworICAg
ICAgICAgICAgICAgIC8vIFJlbWVtYmVyIHdoYXQgd2UncmUgb3ZlcndyaXRpbmcKKyAgICAgICAg
ICAgICAgICBkYXRhUHJpdi5zZXQoIGVsZW0sICJkaXNwbGF5IiwgZGlzcGxheSApOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLy8gU2V0IHRoZSBkaXNwbGF5IG9mIHRo
ZSBlbGVtZW50cyBpbiBhIHNlY29uZCBsb29wIHRvIGF2b2lkIGNvbnN0YW50IHJlZmxvdworICAg
IGZvciAoIGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7CisgICAgICAgIGlm
ICggdmFsdWVzWyBpbmRleCBdICE9IG51bGwgKSB7CisgICAgICAgICAgICBlbGVtZW50c1sgaW5k
ZXggXS5zdHlsZS5kaXNwbGF5ID0gdmFsdWVzWyBpbmRleCBdOworICAgICAgICB9CisgICAgfQor
CisgICAgcmV0dXJuIGVsZW1lbnRzOworfQorCitqUXVlcnkuZm4uZXh0ZW5kKCB7CisgICAgc2hv
dzogZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiBzaG93SGlkZSggdGhpcywgdHJ1ZSApOwor
ICAgIH0sCisgICAgaGlkZTogZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiBzaG93SGlkZSgg
dGhpcyApOworICAgIH0sCisgICAgdG9nZ2xlOiBmdW5jdGlvbiggc3RhdGUgKSB7CisgICAgICAg
IGlmICggdHlwZW9mIHN0YXRlID09PSAiYm9vbGVhbiIgKSB7CisgICAgICAgICAgICByZXR1cm4g
c3RhdGUgPyB0aGlzLnNob3coKSA6IHRoaXMuaGlkZSgpOworICAgICAgICB9CisKKyAgICAgICAg
cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBpZiAoIGlzSGlkZGVu
V2l0aGluVHJlZSggdGhpcyApICkgeworICAgICAgICAgICAgICAgIGpRdWVyeSggdGhpcyApLnNo
b3coKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgalF1ZXJ5KCB0aGlz
ICkuaGlkZSgpOworICAgICAgICAgICAgfQorICAgICAgICB9ICk7CisgICAgfQorfSApOwordmFy
IHJjaGVja2FibGVUeXBlID0gKCAvXig/OmNoZWNrYm94fHJhZGlvKSQvaSApOworCit2YXIgcnRh
Z05hbWUgPSAoIC88KFthLXpdW15cL1wwPlx4MjBcdFxyXG5cZl0rKS9pICk7CisKK3ZhciByc2Ny
aXB0VHlwZSA9ICggL14kfFwvKD86amF2YXxlY21hKXNjcmlwdC9pICk7CisKKworCisvLyBXZSBo
YXZlIHRvIGNsb3NlIHRoZXNlIHRhZ3MgdG8gc3VwcG9ydCBYSFRNTCAoIzEzMjAwKQordmFyIHdy
YXBNYXAgPSB7CisKKyAgICAvLyBTdXBwb3J0OiBJRSA8PTkgb25seQorICAgIG9wdGlvbjogWyAx
LCAiPHNlbGVjdCBtdWx0aXBsZT0nbXVsdGlwbGUnPiIsICI8L3NlbGVjdD4iIF0sCisKKyAgICAv
LyBYSFRNTCBwYXJzZXJzIGRvIG5vdCBtYWdpY2FsbHkgaW5zZXJ0IGVsZW1lbnRzIGluIHRoZQor
ICAgIC8vIHNhbWUgd2F5IHRoYXQgdGFnIHNvdXAgcGFyc2VycyBkby4gU28gd2UgY2Fubm90IHNo
b3J0ZW4KKyAgICAvLyB0aGlzIGJ5IG9taXR0aW5nIDx0Ym9keT4gb3Igb3RoZXIgcmVxdWlyZWQg
ZWxlbWVudHMuCisgICAgdGhlYWQ6IFsgMSwgIjx0YWJsZT4iLCAiPC90YWJsZT4iIF0sCisgICAg
Y29sOiBbIDIsICI8dGFibGU+PGNvbGdyb3VwPiIsICI8L2NvbGdyb3VwPjwvdGFibGU+IiBdLAor
ICAgIHRyOiBbIDIsICI8dGFibGU+PHRib2R5PiIsICI8L3Rib2R5PjwvdGFibGU+IiBdLAorICAg
IHRkOiBbIDMsICI8dGFibGU+PHRib2R5Pjx0cj4iLCAiPC90cj48L3Rib2R5PjwvdGFibGU+IiBd
LAorCisgICAgX2RlZmF1bHQ6IFsgMCwgIiIsICIiIF0KK307CisKKy8vIFN1cHBvcnQ6IElFIDw9
OSBvbmx5Cit3cmFwTWFwLm9wdGdyb3VwID0gd3JhcE1hcC5vcHRpb247CisKK3dyYXBNYXAudGJv
ZHkgPSB3cmFwTWFwLnRmb290ID0gd3JhcE1hcC5jb2xncm91cCA9IHdyYXBNYXAuY2FwdGlvbiA9
IHdyYXBNYXAudGhlYWQ7Cit3cmFwTWFwLnRoID0gd3JhcE1hcC50ZDsKKworCitmdW5jdGlvbiBn
ZXRBbGwoIGNvbnRleHQsIHRhZyApIHsKKworICAgIC8vIFN1cHBvcnQ6IElFIDw9OSAtIDExIG9u
bHkKKyAgICAvLyBVc2UgdHlwZW9mIHRvIGF2b2lkIHplcm8tYXJndW1lbnQgbWV0aG9kIGludm9j
YXRpb24gb24gaG9zdCBvYmplY3RzICgjMTUxNTEpCisgICAgdmFyIHJldDsKKworICAgIGlmICgg
dHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUgIT09ICJ1bmRlZmluZWQiICkgewor
ICAgICAgICByZXQgPSBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lKCB0YWcgfHwgIioiICk7
CisKKyAgICB9IGVsc2UgaWYgKCB0eXBlb2YgY29udGV4dC5xdWVyeVNlbGVjdG9yQWxsICE9PSAi
dW5kZWZpbmVkIiApIHsKKyAgICAgICAgcmV0ID0gY29udGV4dC5xdWVyeVNlbGVjdG9yQWxsKCB0
YWcgfHwgIioiICk7CisKKyAgICB9IGVsc2UgeworICAgICAgICByZXQgPSBbXTsKKyAgICB9CisK
KyAgICBpZiAoIHRhZyA9PT0gdW5kZWZpbmVkIHx8IHRhZyAmJiBqUXVlcnkubm9kZU5hbWUoIGNv
bnRleHQsIHRhZyApICkgeworICAgICAgICByZXR1cm4galF1ZXJ5Lm1lcmdlKCBbIGNvbnRleHQg
XSwgcmV0ICk7CisgICAgfQorCisgICAgcmV0dXJuIHJldDsKK30KKworCisvLyBNYXJrIHNjcmlw
dHMgYXMgaGF2aW5nIGFscmVhZHkgYmVlbiBldmFsdWF0ZWQKK2Z1bmN0aW9uIHNldEdsb2JhbEV2
YWwoIGVsZW1zLCByZWZFbGVtZW50cyApIHsKKyAgICB2YXIgaSA9IDAsCisgICAgICAgIGwgPSBl
bGVtcy5sZW5ndGg7CisKKyAgICBmb3IgKCA7IGkgPCBsOyBpKysgKSB7CisgICAgICAgIGRhdGFQ
cml2LnNldCgKKyAgICAgICAgICAgIGVsZW1zWyBpIF0sCisgICAgICAgICAgICAiZ2xvYmFsRXZh
bCIsCisgICAgICAgICAgICAhcmVmRWxlbWVudHMgfHwgZGF0YVByaXYuZ2V0KCByZWZFbGVtZW50
c1sgaSBdLCAiZ2xvYmFsRXZhbCIgKQorICAgICAgICApOworICAgIH0KK30KKworCit2YXIgcmh0
bWwgPSAvPHwmIz9cdys7LzsKKworZnVuY3Rpb24gYnVpbGRGcmFnbWVudCggZWxlbXMsIGNvbnRl
eHQsIHNjcmlwdHMsIHNlbGVjdGlvbiwgaWdub3JlZCApIHsKKyAgICB2YXIgZWxlbSwgdG1wLCB0
YWcsIHdyYXAsIGNvbnRhaW5zLCBqLAorICAgICAgICBmcmFnbWVudCA9IGNvbnRleHQuY3JlYXRl
RG9jdW1lbnRGcmFnbWVudCgpLAorICAgICAgICBub2RlcyA9IFtdLAorICAgICAgICBpID0gMCwK
KyAgICAgICAgbCA9IGVsZW1zLmxlbmd0aDsKKworICAgIGZvciAoIDsgaSA8IGw7IGkrKyApIHsK
KyAgICAgICAgZWxlbSA9IGVsZW1zWyBpIF07CisKKyAgICAgICAgaWYgKCBlbGVtIHx8IGVsZW0g
PT09IDAgKSB7CisKKyAgICAgICAgICAgIC8vIEFkZCBub2RlcyBkaXJlY3RseQorICAgICAgICAg
ICAgaWYgKCBqUXVlcnkudHlwZSggZWxlbSApID09PSAib2JqZWN0IiApIHsKKworICAgICAgICAg
ICAgICAgIC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00LjAgb25seSwgUGhhbnRvbUpTIDEgb25seQor
ICAgICAgICAgICAgICAgIC8vIHB1c2guYXBwbHkoXywgYXJyYXlsaWtlKSB0aHJvd3Mgb24gYW5j
aWVudCBXZWJLaXQKKyAgICAgICAgICAgICAgICBqUXVlcnkubWVyZ2UoIG5vZGVzLCBlbGVtLm5v
ZGVUeXBlID8gWyBlbGVtIF0gOiBlbGVtICk7CisKKyAgICAgICAgICAgIC8vIENvbnZlcnQgbm9u
LWh0bWwgaW50byBhIHRleHQgbm9kZQorICAgICAgICAgICAgfSBlbHNlIGlmICggIXJodG1sLnRl
c3QoIGVsZW0gKSApIHsKKyAgICAgICAgICAgICAgICBub2Rlcy5wdXNoKCBjb250ZXh0LmNyZWF0
ZVRleHROb2RlKCBlbGVtICkgKTsKKworICAgICAgICAgICAgLy8gQ29udmVydCBodG1sIGludG8g
RE9NIG5vZGVzCisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHRtcCA9IHRt
cCB8fCBmcmFnbWVudC5hcHBlbmRDaGlsZCggY29udGV4dC5jcmVhdGVFbGVtZW50KCAiZGl2IiAp
ICk7CisKKyAgICAgICAgICAgICAgICAvLyBEZXNlcmlhbGl6ZSBhIHN0YW5kYXJkIHJlcHJlc2Vu
dGF0aW9uCisgICAgICAgICAgICAgICAgdGFnID0gKCBydGFnTmFtZS5leGVjKCBlbGVtICkgfHwg
WyAiIiwgIiIgXSApWyAxIF0udG9Mb3dlckNhc2UoKTsKKyAgICAgICAgICAgICAgICB3cmFwID0g
d3JhcE1hcFsgdGFnIF0gfHwgd3JhcE1hcC5fZGVmYXVsdDsKKyAgICAgICAgICAgICAgICB0bXAu
aW5uZXJIVE1MID0gd3JhcFsgMSBdICsgalF1ZXJ5Lmh0bWxQcmVmaWx0ZXIoIGVsZW0gKSArIHdy
YXBbIDIgXTsKKworICAgICAgICAgICAgICAgIC8vIERlc2NlbmQgdGhyb3VnaCB3cmFwcGVycyB0
byB0aGUgcmlnaHQgY29udGVudAorICAgICAgICAgICAgICAgIGogPSB3cmFwWyAwIF07CisgICAg
ICAgICAgICAgICAgd2hpbGUgKCBqLS0gKSB7CisgICAgICAgICAgICAgICAgICAgIHRtcCA9IHRt
cC5sYXN0Q2hpbGQ7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gU3Vw
cG9ydDogQW5kcm9pZCA8PTQuMCBvbmx5LCBQaGFudG9tSlMgMSBvbmx5CisgICAgICAgICAgICAg
ICAgLy8gcHVzaC5hcHBseShfLCBhcnJheWxpa2UpIHRocm93cyBvbiBhbmNpZW50IFdlYktpdAor
ICAgICAgICAgICAgICAgIGpRdWVyeS5tZXJnZSggbm9kZXMsIHRtcC5jaGlsZE5vZGVzICk7CisK
KyAgICAgICAgICAgICAgICAvLyBSZW1lbWJlciB0aGUgdG9wLWxldmVsIGNvbnRhaW5lcgorICAg
ICAgICAgICAgICAgIHRtcCA9IGZyYWdtZW50LmZpcnN0Q2hpbGQ7CisKKyAgICAgICAgICAgICAg
ICAvLyBFbnN1cmUgdGhlIGNyZWF0ZWQgbm9kZXMgYXJlIG9ycGhhbmVkICgjMTIzOTIpCisgICAg
ICAgICAgICAgICAgdG1wLnRleHRDb250ZW50ID0gIiI7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9CisKKyAgICAvLyBSZW1vdmUgd3JhcHBlciBmcm9tIGZyYWdtZW50CisgICAgZnJh
Z21lbnQudGV4dENvbnRlbnQgPSAiIjsKKworICAgIGkgPSAwOworICAgIHdoaWxlICggKCBlbGVt
ID0gbm9kZXNbIGkrKyBdICkgKSB7CisKKyAgICAgICAgLy8gU2tpcCBlbGVtZW50cyBhbHJlYWR5
IGluIHRoZSBjb250ZXh0IGNvbGxlY3Rpb24gKHRyYWMtNDA4NykKKyAgICAgICAgaWYgKCBzZWxl
Y3Rpb24gJiYgalF1ZXJ5LmluQXJyYXkoIGVsZW0sIHNlbGVjdGlvbiApID4gLTEgKSB7CisgICAg
ICAgICAgICBpZiAoIGlnbm9yZWQgKSB7CisgICAgICAgICAgICAgICAgaWdub3JlZC5wdXNoKCBl
bGVtICk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQor
CisgICAgICAgIGNvbnRhaW5zID0galF1ZXJ5LmNvbnRhaW5zKCBlbGVtLm93bmVyRG9jdW1lbnQs
IGVsZW0gKTsKKworICAgICAgICAvLyBBcHBlbmQgdG8gZnJhZ21lbnQKKyAgICAgICAgdG1wID0g
Z2V0QWxsKCBmcmFnbWVudC5hcHBlbmRDaGlsZCggZWxlbSApLCAic2NyaXB0IiApOworCisgICAg
ICAgIC8vIFByZXNlcnZlIHNjcmlwdCBldmFsdWF0aW9uIGhpc3RvcnkKKyAgICAgICAgaWYgKCBj
b250YWlucyApIHsKKyAgICAgICAgICAgIHNldEdsb2JhbEV2YWwoIHRtcCApOworICAgICAgICB9
CisKKyAgICAgICAgLy8gQ2FwdHVyZSBleGVjdXRhYmxlcworICAgICAgICBpZiAoIHNjcmlwdHMg
KSB7CisgICAgICAgICAgICBqID0gMDsKKyAgICAgICAgICAgIHdoaWxlICggKCBlbGVtID0gdG1w
WyBqKysgXSApICkgeworICAgICAgICAgICAgICAgIGlmICggcnNjcmlwdFR5cGUudGVzdCggZWxl
bS50eXBlIHx8ICIiICkgKSB7CisgICAgICAgICAgICAgICAgICAgIHNjcmlwdHMucHVzaCggZWxl
bSApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
KworICAgIHJldHVybiBmcmFnbWVudDsKK30KKworCisoIGZ1bmN0aW9uKCkgeworICAgIHZhciBm
cmFnbWVudCA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSwKKyAgICAgICAgZGl2
ID0gZnJhZ21lbnQuYXBwZW5kQ2hpbGQoIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoICJkaXYiICkg
KSwKKyAgICAgICAgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCAiaW5wdXQiICk7CisK
KyAgICAvLyBTdXBwb3J0OiBBbmRyb2lkIDQuMCAtIDQuMyBvbmx5CisgICAgLy8gQ2hlY2sgc3Rh
dGUgbG9zdCBpZiB0aGUgbmFtZSBpcyBzZXQgKCMxMTIxNykKKyAgICAvLyBTdXBwb3J0OiBXaW5k
b3dzIFdlYiBBcHBzIChXV0EpCisgICAgLy8gYG5hbWVgIGFuZCBgdHlwZWAgbXVzdCB1c2UgLnNl
dEF0dHJpYnV0ZSBmb3IgV1dBICgjMTQ5MDEpCisgICAgaW5wdXQuc2V0QXR0cmlidXRlKCAidHlw
ZSIsICJyYWRpbyIgKTsKKyAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoICJjaGVja2VkIiwgImNoZWNr
ZWQiICk7CisgICAgaW5wdXQuc2V0QXR0cmlidXRlKCAibmFtZSIsICJ0IiApOworCisgICAgZGl2
LmFwcGVuZENoaWxkKCBpbnB1dCApOworCisgICAgLy8gU3VwcG9ydDogQW5kcm9pZCA8PTQuMSBv
bmx5CisgICAgLy8gT2xkZXIgV2ViS2l0IGRvZXNuJ3QgY2xvbmUgY2hlY2tlZCBzdGF0ZSBjb3Jy
ZWN0bHkgaW4gZnJhZ21lbnRzCisgICAgc3VwcG9ydC5jaGVja0Nsb25lID0gZGl2LmNsb25lTm9k
ZSggdHJ1ZSApLmNsb25lTm9kZSggdHJ1ZSApLmxhc3RDaGlsZC5jaGVja2VkOworCisgICAgLy8g
U3VwcG9ydDogSUUgPD0xMSBvbmx5CisgICAgLy8gTWFrZSBzdXJlIHRleHRhcmVhIChhbmQgY2hl
Y2tib3gpIGRlZmF1bHRWYWx1ZSBpcyBwcm9wZXJseSBjbG9uZWQKKyAgICBkaXYuaW5uZXJIVE1M
ID0gIjx0ZXh0YXJlYT54PC90ZXh0YXJlYT4iOworICAgIHN1cHBvcnQubm9DbG9uZUNoZWNrZWQg
PSAhIWRpdi5jbG9uZU5vZGUoIHRydWUgKS5sYXN0Q2hpbGQuZGVmYXVsdFZhbHVlOworfSApKCk7
Cit2YXIgZG9jdW1lbnRFbGVtZW50ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50OworCisKKwor
dmFyCisgICAgcmtleUV2ZW50ID0gL15rZXkvLAorICAgIHJtb3VzZUV2ZW50ID0gL14oPzptb3Vz
ZXxwb2ludGVyfGNvbnRleHRtZW51fGRyYWd8ZHJvcCl8Y2xpY2svLAorICAgIHJ0eXBlbmFtZXNw
YWNlID0gL14oW14uXSopKD86XC4oLispfCkvOworCitmdW5jdGlvbiByZXR1cm5UcnVlKCkgewor
ICAgIHJldHVybiB0cnVlOworfQorCitmdW5jdGlvbiByZXR1cm5GYWxzZSgpIHsKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKKy8vIFN1cHBvcnQ6IElFIDw9OSBvbmx5CisvLyBTZWUgIzEzMzkzIGZv
ciBtb3JlIGluZm8KK2Z1bmN0aW9uIHNhZmVBY3RpdmVFbGVtZW50KCkgeworICAgIHRyeSB7Cisg
ICAgICAgIHJldHVybiBkb2N1bWVudC5hY3RpdmVFbGVtZW50OworICAgIH0gY2F0Y2ggKCBlcnIg
KSB7IH0KK30KKworZnVuY3Rpb24gb24oIGVsZW0sIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4s
IG9uZSApIHsKKyAgICB2YXIgb3JpZ0ZuLCB0eXBlOworCisgICAgLy8gVHlwZXMgY2FuIGJlIGEg
bWFwIG9mIHR5cGVzL2hhbmRsZXJzCisgICAgaWYgKCB0eXBlb2YgdHlwZXMgPT09ICJvYmplY3Qi
ICkgeworCisgICAgICAgIC8vICggdHlwZXMtT2JqZWN0LCBzZWxlY3RvciwgZGF0YSApCisgICAg
ICAgIGlmICggdHlwZW9mIHNlbGVjdG9yICE9PSAic3RyaW5nIiApIHsKKworICAgICAgICAgICAg
Ly8gKCB0eXBlcy1PYmplY3QsIGRhdGEgKQorICAgICAgICAgICAgZGF0YSA9IGRhdGEgfHwgc2Vs
ZWN0b3I7CisgICAgICAgICAgICBzZWxlY3RvciA9IHVuZGVmaW5lZDsKKyAgICAgICAgfQorICAg
ICAgICBmb3IgKCB0eXBlIGluIHR5cGVzICkgeworICAgICAgICAgICAgb24oIGVsZW0sIHR5cGUs
IHNlbGVjdG9yLCBkYXRhLCB0eXBlc1sgdHlwZSBdLCBvbmUgKTsKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4gZWxlbTsKKyAgICB9CisKKyAgICBpZiAoIGRhdGEgPT0gbnVsbCAmJiBmbiA9PSBu
dWxsICkgeworCisgICAgICAgIC8vICggdHlwZXMsIGZuICkKKyAgICAgICAgZm4gPSBzZWxlY3Rv
cjsKKyAgICAgICAgZGF0YSA9IHNlbGVjdG9yID0gdW5kZWZpbmVkOworICAgIH0gZWxzZSBpZiAo
IGZuID09IG51bGwgKSB7CisgICAgICAgIGlmICggdHlwZW9mIHNlbGVjdG9yID09PSAic3RyaW5n
IiApIHsKKworICAgICAgICAgICAgLy8gKCB0eXBlcywgc2VsZWN0b3IsIGZuICkKKyAgICAgICAg
ICAgIGZuID0gZGF0YTsKKyAgICAgICAgICAgIGRhdGEgPSB1bmRlZmluZWQ7CisgICAgICAgIH0g
ZWxzZSB7CisKKyAgICAgICAgICAgIC8vICggdHlwZXMsIGRhdGEsIGZuICkKKyAgICAgICAgICAg
IGZuID0gZGF0YTsKKyAgICAgICAgICAgIGRhdGEgPSBzZWxlY3RvcjsKKyAgICAgICAgICAgIHNl
bGVjdG9yID0gdW5kZWZpbmVkOworICAgICAgICB9CisgICAgfQorICAgIGlmICggZm4gPT09IGZh
bHNlICkgeworICAgICAgICBmbiA9IHJldHVybkZhbHNlOworICAgIH0gZWxzZSBpZiAoICFmbiAp
IHsKKyAgICAgICAgcmV0dXJuIGVsZW07CisgICAgfQorCisgICAgaWYgKCBvbmUgPT09IDEgKSB7
CisgICAgICAgIG9yaWdGbiA9IGZuOworICAgICAgICBmbiA9IGZ1bmN0aW9uKCBldmVudCApIHsK
KworICAgICAgICAgICAgLy8gQ2FuIHVzZSBhbiBlbXB0eSBzZXQsIHNpbmNlIGV2ZW50IGNvbnRh
aW5zIHRoZSBpbmZvCisgICAgICAgICAgICBqUXVlcnkoKS5vZmYoIGV2ZW50ICk7CisgICAgICAg
ICAgICByZXR1cm4gb3JpZ0ZuLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKTsKKyAgICAgICAgfTsK
KworICAgICAgICAvLyBVc2Ugc2FtZSBndWlkIHNvIGNhbGxlciBjYW4gcmVtb3ZlIHVzaW5nIG9y
aWdGbgorICAgICAgICBmbi5ndWlkID0gb3JpZ0ZuLmd1aWQgfHwgKCBvcmlnRm4uZ3VpZCA9IGpR
dWVyeS5ndWlkKysgKTsKKyAgICB9CisgICAgcmV0dXJuIGVsZW0uZWFjaCggZnVuY3Rpb24oKSB7
CisgICAgICAgIGpRdWVyeS5ldmVudC5hZGQoIHRoaXMsIHR5cGVzLCBmbiwgZGF0YSwgc2VsZWN0
b3IgKTsKKyAgICB9ICk7Cit9CisKKy8qCisgKiBIZWxwZXIgZnVuY3Rpb25zIGZvciBtYW5hZ2lu
ZyBldmVudHMgLS0gbm90IHBhcnQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuCisgKiBQcm9wcyB0
byBEZWFuIEVkd2FyZHMnIGFkZEV2ZW50IGxpYnJhcnkgZm9yIG1hbnkgb2YgdGhlIGlkZWFzLgor
ICovCitqUXVlcnkuZXZlbnQgPSB7CisKKyAgICBnbG9iYWw6IHt9LAorCisgICAgYWRkOiBmdW5j
dGlvbiggZWxlbSwgdHlwZXMsIGhhbmRsZXIsIGRhdGEsIHNlbGVjdG9yICkgeworCisgICAgICAg
IHZhciBoYW5kbGVPYmpJbiwgZXZlbnRIYW5kbGUsIHRtcCwKKyAgICAgICAgICAgIGV2ZW50cywg
dCwgaGFuZGxlT2JqLAorICAgICAgICAgICAgc3BlY2lhbCwgaGFuZGxlcnMsIHR5cGUsIG5hbWVz
cGFjZXMsIG9yaWdUeXBlLAorICAgICAgICAgICAgZWxlbURhdGEgPSBkYXRhUHJpdi5nZXQoIGVs
ZW0gKTsKKworICAgICAgICAvLyBEb24ndCBhdHRhY2ggZXZlbnRzIHRvIG5vRGF0YSBvciB0ZXh0
L2NvbW1lbnQgbm9kZXMgKGJ1dCBhbGxvdyBwbGFpbiBvYmplY3RzKQorICAgICAgICBpZiAoICFl
bGVtRGF0YSApIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8v
IENhbGxlciBjYW4gcGFzcyBpbiBhbiBvYmplY3Qgb2YgY3VzdG9tIGRhdGEgaW4gbGlldSBvZiB0
aGUgaGFuZGxlcgorICAgICAgICBpZiAoIGhhbmRsZXIuaGFuZGxlciApIHsKKyAgICAgICAgICAg
IGhhbmRsZU9iakluID0gaGFuZGxlcjsKKyAgICAgICAgICAgIGhhbmRsZXIgPSBoYW5kbGVPYmpJ
bi5oYW5kbGVyOworICAgICAgICAgICAgc2VsZWN0b3IgPSBoYW5kbGVPYmpJbi5zZWxlY3RvcjsK
KyAgICAgICAgfQorCisgICAgICAgIC8vIEVuc3VyZSB0aGF0IGludmFsaWQgc2VsZWN0b3JzIHRo
cm93IGV4Y2VwdGlvbnMgYXQgYXR0YWNoIHRpbWUKKyAgICAgICAgLy8gRXZhbHVhdGUgYWdhaW5z
dCBkb2N1bWVudEVsZW1lbnQgaW4gY2FzZSBlbGVtIGlzIGEgbm9uLWVsZW1lbnQgbm9kZSAoZS5n
LiwgZG9jdW1lbnQpCisgICAgICAgIGlmICggc2VsZWN0b3IgKSB7CisgICAgICAgICAgICBqUXVl
cnkuZmluZC5tYXRjaGVzU2VsZWN0b3IoIGRvY3VtZW50RWxlbWVudCwgc2VsZWN0b3IgKTsKKyAg
ICAgICAgfQorCisgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBoYW5kbGVyIGhhcyBhIHVu
aXF1ZSBJRCwgdXNlZCB0byBmaW5kL3JlbW92ZSBpdCBsYXRlcgorICAgICAgICBpZiAoICFoYW5k
bGVyLmd1aWQgKSB7CisgICAgICAgICAgICBoYW5kbGVyLmd1aWQgPSBqUXVlcnkuZ3VpZCsrOwor
ICAgICAgICB9CisKKyAgICAgICAgLy8gSW5pdCB0aGUgZWxlbWVudCdzIGV2ZW50IHN0cnVjdHVy
ZSBhbmQgbWFpbiBoYW5kbGVyLCBpZiB0aGlzIGlzIHRoZSBmaXJzdAorICAgICAgICBpZiAoICEo
IGV2ZW50cyA9IGVsZW1EYXRhLmV2ZW50cyApICkgeworICAgICAgICAgICAgZXZlbnRzID0gZWxl
bURhdGEuZXZlbnRzID0ge307CisgICAgICAgIH0KKyAgICAgICAgaWYgKCAhKCBldmVudEhhbmRs
ZSA9IGVsZW1EYXRhLmhhbmRsZSApICkgeworICAgICAgICAgICAgZXZlbnRIYW5kbGUgPSBlbGVt
RGF0YS5oYW5kbGUgPSBmdW5jdGlvbiggZSApIHsKKworICAgICAgICAgICAgICAgIC8vIERpc2Nh
cmQgdGhlIHNlY29uZCBldmVudCBvZiBhIGpRdWVyeS5ldmVudC50cmlnZ2VyKCkgYW5kCisgICAg
ICAgICAgICAgICAgLy8gd2hlbiBhbiBldmVudCBpcyBjYWxsZWQgYWZ0ZXIgYSBwYWdlIGhhcyB1
bmxvYWRlZAorICAgICAgICAgICAgICAgIHJldHVybiB0eXBlb2YgalF1ZXJ5ICE9PSAidW5kZWZp
bmVkIiAmJiBqUXVlcnkuZXZlbnQudHJpZ2dlcmVkICE9PSBlLnR5cGUgPworICAgICAgICAgICAg
ICAgICAgICBqUXVlcnkuZXZlbnQuZGlzcGF0Y2guYXBwbHkoIGVsZW0sIGFyZ3VtZW50cyApIDog
dW5kZWZpbmVkOworICAgICAgICAgICAgfTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEhhbmRs
ZSBtdWx0aXBsZSBldmVudHMgc2VwYXJhdGVkIGJ5IGEgc3BhY2UKKyAgICAgICAgdHlwZXMgPSAo
IHR5cGVzIHx8ICIiICkubWF0Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbICIiIF07CisgICAgICAg
IHQgPSB0eXBlcy5sZW5ndGg7CisgICAgICAgIHdoaWxlICggdC0tICkgeworICAgICAgICAgICAg
dG1wID0gcnR5cGVuYW1lc3BhY2UuZXhlYyggdHlwZXNbIHQgXSApIHx8IFtdOworICAgICAgICAg
ICAgdHlwZSA9IG9yaWdUeXBlID0gdG1wWyAxIF07CisgICAgICAgICAgICBuYW1lc3BhY2VzID0g
KCB0bXBbIDIgXSB8fCAiIiApLnNwbGl0KCAiLiIgKS5zb3J0KCk7CisKKyAgICAgICAgICAgIC8v
IFRoZXJlICptdXN0KiBiZSBhIHR5cGUsIG5vIGF0dGFjaGluZyBuYW1lc3BhY2Utb25seSBoYW5k
bGVycworICAgICAgICAgICAgaWYgKCAhdHlwZSApIHsKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gSWYgZXZlbnQgY2hhbmdlcyBpdHMg
dHlwZSwgdXNlIHRoZSBzcGVjaWFsIGV2ZW50IGhhbmRsZXJzIGZvciB0aGUgY2hhbmdlZCB0eXBl
CisgICAgICAgICAgICBzcGVjaWFsID0galF1ZXJ5LmV2ZW50LnNwZWNpYWxbIHR5cGUgXSB8fCB7
fTsKKworICAgICAgICAgICAgLy8gSWYgc2VsZWN0b3IgZGVmaW5lZCwgZGV0ZXJtaW5lIHNwZWNp
YWwgZXZlbnQgYXBpIHR5cGUsIG90aGVyd2lzZSBnaXZlbiB0eXBlCisgICAgICAgICAgICB0eXBl
ID0gKCBzZWxlY3RvciA/IHNwZWNpYWwuZGVsZWdhdGVUeXBlIDogc3BlY2lhbC5iaW5kVHlwZSAp
IHx8IHR5cGU7CisKKyAgICAgICAgICAgIC8vIFVwZGF0ZSBzcGVjaWFsIGJhc2VkIG9uIG5ld2x5
IHJlc2V0IHR5cGUKKyAgICAgICAgICAgIHNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbFsg
dHlwZSBdIHx8IHt9OworCisgICAgICAgICAgICAvLyBoYW5kbGVPYmogaXMgcGFzc2VkIHRvIGFs
bCBldmVudCBoYW5kbGVycworICAgICAgICAgICAgaGFuZGxlT2JqID0galF1ZXJ5LmV4dGVuZCgg
eworICAgICAgICAgICAgICAgIHR5cGU6IHR5cGUsCisgICAgICAgICAgICAgICAgb3JpZ1R5cGU6
IG9yaWdUeXBlLAorICAgICAgICAgICAgICAgIGRhdGE6IGRhdGEsCisgICAgICAgICAgICAgICAg
aGFuZGxlcjogaGFuZGxlciwKKyAgICAgICAgICAgICAgICBndWlkOiBoYW5kbGVyLmd1aWQsCisg
ICAgICAgICAgICAgICAgc2VsZWN0b3I6IHNlbGVjdG9yLAorICAgICAgICAgICAgICAgIG5lZWRz
Q29udGV4dDogc2VsZWN0b3IgJiYgalF1ZXJ5LmV4cHIubWF0Y2gubmVlZHNDb250ZXh0LnRlc3Qo
IHNlbGVjdG9yICksCisgICAgICAgICAgICAgICAgbmFtZXNwYWNlOiBuYW1lc3BhY2VzLmpvaW4o
ICIuIiApCisgICAgICAgICAgICB9LCBoYW5kbGVPYmpJbiApOworCisgICAgICAgICAgICAvLyBJ
bml0IHRoZSBldmVudCBoYW5kbGVyIHF1ZXVlIGlmIHdlJ3JlIHRoZSBmaXJzdAorICAgICAgICAg
ICAgaWYgKCAhKCBoYW5kbGVycyA9IGV2ZW50c1sgdHlwZSBdICkgKSB7CisgICAgICAgICAgICAg
ICAgaGFuZGxlcnMgPSBldmVudHNbIHR5cGUgXSA9IFtdOworICAgICAgICAgICAgICAgIGhhbmRs
ZXJzLmRlbGVnYXRlQ291bnQgPSAwOworCisgICAgICAgICAgICAgICAgLy8gT25seSB1c2UgYWRk
RXZlbnRMaXN0ZW5lciBpZiB0aGUgc3BlY2lhbCBldmVudHMgaGFuZGxlciByZXR1cm5zIGZhbHNl
CisgICAgICAgICAgICAgICAgaWYgKCAhc3BlY2lhbC5zZXR1cCB8fAorICAgICAgICAgICAgICAg
ICAgICBzcGVjaWFsLnNldHVwLmNhbGwoIGVsZW0sIGRhdGEsIG5hbWVzcGFjZXMsIGV2ZW50SGFu
ZGxlICkgPT09IGZhbHNlICkgeworCisgICAgICAgICAgICAgICAgICAgIGlmICggZWxlbS5hZGRF
dmVudExpc3RlbmVyICkgeworICAgICAgICAgICAgICAgICAgICAgICAgZWxlbS5hZGRFdmVudExp
c3RlbmVyKCB0eXBlLCBldmVudEhhbmRsZSApOworICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIHNwZWNpYWwu
YWRkICkgeworICAgICAgICAgICAgICAgIHNwZWNpYWwuYWRkLmNhbGwoIGVsZW0sIGhhbmRsZU9i
aiApOworCisgICAgICAgICAgICAgICAgaWYgKCAhaGFuZGxlT2JqLmhhbmRsZXIuZ3VpZCApIHsK
KyAgICAgICAgICAgICAgICAgICAgaGFuZGxlT2JqLmhhbmRsZXIuZ3VpZCA9IGhhbmRsZXIuZ3Vp
ZDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEFk
ZCB0byB0aGUgZWxlbWVudCdzIGhhbmRsZXIgbGlzdCwgZGVsZWdhdGVzIGluIGZyb250CisgICAg
ICAgICAgICBpZiAoIHNlbGVjdG9yICkgeworICAgICAgICAgICAgICAgIGhhbmRsZXJzLnNwbGlj
ZSggaGFuZGxlcnMuZGVsZWdhdGVDb3VudCsrLCAwLCBoYW5kbGVPYmogKTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaGFuZGxlcnMucHVzaCggaGFuZGxlT2JqICk7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEtlZXAgdHJhY2sgb2Ygd2hpY2ggZXZlbnRz
IGhhdmUgZXZlciBiZWVuIHVzZWQsIGZvciBldmVudCBvcHRpbWl6YXRpb24KKyAgICAgICAgICAg
IGpRdWVyeS5ldmVudC5nbG9iYWxbIHR5cGUgXSA9IHRydWU7CisgICAgICAgIH0KKworICAgIH0s
CisKKyAgICAvLyBEZXRhY2ggYW4gZXZlbnQgb3Igc2V0IG9mIGV2ZW50cyBmcm9tIGFuIGVsZW1l
bnQKKyAgICByZW1vdmU6IGZ1bmN0aW9uKCBlbGVtLCB0eXBlcywgaGFuZGxlciwgc2VsZWN0b3Is
IG1hcHBlZFR5cGVzICkgeworCisgICAgICAgIHZhciBqLCBvcmlnQ291bnQsIHRtcCwKKyAgICAg
ICAgICAgIGV2ZW50cywgdCwgaGFuZGxlT2JqLAorICAgICAgICAgICAgc3BlY2lhbCwgaGFuZGxl
cnMsIHR5cGUsIG5hbWVzcGFjZXMsIG9yaWdUeXBlLAorICAgICAgICAgICAgZWxlbURhdGEgPSBk
YXRhUHJpdi5oYXNEYXRhKCBlbGVtICkgJiYgZGF0YVByaXYuZ2V0KCBlbGVtICk7CisKKyAgICAg
ICAgaWYgKCAhZWxlbURhdGEgfHwgISggZXZlbnRzID0gZWxlbURhdGEuZXZlbnRzICkgKSB7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBPbmNlIGZvciBlYWNo
IHR5cGUubmFtZXNwYWNlIGluIHR5cGVzOyB0eXBlIG1heSBiZSBvbWl0dGVkCisgICAgICAgIHR5
cGVzID0gKCB0eXBlcyB8fCAiIiApLm1hdGNoKCBybm90aHRtbHdoaXRlICkgfHwgWyAiIiBdOwor
ICAgICAgICB0ID0gdHlwZXMubGVuZ3RoOworICAgICAgICB3aGlsZSAoIHQtLSApIHsKKyAgICAg
ICAgICAgIHRtcCA9IHJ0eXBlbmFtZXNwYWNlLmV4ZWMoIHR5cGVzWyB0IF0gKSB8fCBbXTsKKyAg
ICAgICAgICAgIHR5cGUgPSBvcmlnVHlwZSA9IHRtcFsgMSBdOworICAgICAgICAgICAgbmFtZXNw
YWNlcyA9ICggdG1wWyAyIF0gfHwgIiIgKS5zcGxpdCggIi4iICkuc29ydCgpOworCisgICAgICAg
ICAgICAvLyBVbmJpbmQgYWxsIGV2ZW50cyAob24gdGhpcyBuYW1lc3BhY2UsIGlmIHByb3ZpZGVk
KSBmb3IgdGhlIGVsZW1lbnQKKyAgICAgICAgICAgIGlmICggIXR5cGUgKSB7CisgICAgICAgICAg
ICAgICAgZm9yICggdHlwZSBpbiBldmVudHMgKSB7CisgICAgICAgICAgICAgICAgICAgIGpRdWVy
eS5ldmVudC5yZW1vdmUoIGVsZW0sIHR5cGUgKyB0eXBlc1sgdCBdLCBoYW5kbGVyLCBzZWxlY3Rv
ciwgdHJ1ZSApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc3BlY2lhbCA9IGpRdWVyeS5ldmVudC5zcGVj
aWFsWyB0eXBlIF0gfHwge307CisgICAgICAgICAgICB0eXBlID0gKCBzZWxlY3RvciA/IHNwZWNp
YWwuZGVsZWdhdGVUeXBlIDogc3BlY2lhbC5iaW5kVHlwZSApIHx8IHR5cGU7CisgICAgICAgICAg
ICBoYW5kbGVycyA9IGV2ZW50c1sgdHlwZSBdIHx8IFtdOworICAgICAgICAgICAgdG1wID0gdG1w
WyAyIF0gJiYKKyAgICAgICAgICAgICAgICBuZXcgUmVnRXhwKCAiKF58XFwuKSIgKyBuYW1lc3Bh
Y2VzLmpvaW4oICJcXC4oPzouKlxcLnwpIiApICsgIihcXC58JCkiICk7CisKKyAgICAgICAgICAg
IC8vIFJlbW92ZSBtYXRjaGluZyBldmVudHMKKyAgICAgICAgICAgIG9yaWdDb3VudCA9IGogPSBo
YW5kbGVycy5sZW5ndGg7CisgICAgICAgICAgICB3aGlsZSAoIGotLSApIHsKKyAgICAgICAgICAg
ICAgICBoYW5kbGVPYmogPSBoYW5kbGVyc1sgaiBdOworCisgICAgICAgICAgICAgICAgaWYgKCAo
IG1hcHBlZFR5cGVzIHx8IG9yaWdUeXBlID09PSBoYW5kbGVPYmoub3JpZ1R5cGUgKSAmJgorICAg
ICAgICAgICAgICAgICAgICAoICFoYW5kbGVyIHx8IGhhbmRsZXIuZ3VpZCA9PT0gaGFuZGxlT2Jq
Lmd1aWQgKSAmJgorICAgICAgICAgICAgICAgICAgICAoICF0bXAgfHwgdG1wLnRlc3QoIGhhbmRs
ZU9iai5uYW1lc3BhY2UgKSApICYmCisgICAgICAgICAgICAgICAgICAgICggIXNlbGVjdG9yIHx8
IHNlbGVjdG9yID09PSBoYW5kbGVPYmouc2VsZWN0b3IgfHwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHNlbGVjdG9yID09PSAiKioiICYmIGhhbmRsZU9iai5zZWxlY3RvciApICkgeworICAgICAg
ICAgICAgICAgICAgICBoYW5kbGVycy5zcGxpY2UoIGosIDEgKTsKKworICAgICAgICAgICAgICAg
ICAgICBpZiAoIGhhbmRsZU9iai5zZWxlY3RvciApIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGhhbmRsZXJzLmRlbGVnYXRlQ291bnQtLTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICBpZiAoIHNwZWNpYWwucmVtb3ZlICkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgc3BlY2lhbC5yZW1vdmUuY2FsbCggZWxlbSwgaGFuZGxlT2JqICk7CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIC8vIFJlbW92ZSBnZW5lcmljIGV2ZW50IGhhbmRsZXIgaWYgd2UgcmVtb3ZlZCBzb21ldGhp
bmcgYW5kIG5vIG1vcmUgaGFuZGxlcnMgZXhpc3QKKyAgICAgICAgICAgIC8vIChhdm9pZHMgcG90
ZW50aWFsIGZvciBlbmRsZXNzIHJlY3Vyc2lvbiBkdXJpbmcgcmVtb3ZhbCBvZiBzcGVjaWFsIGV2
ZW50IGhhbmRsZXJzKQorICAgICAgICAgICAgaWYgKCBvcmlnQ291bnQgJiYgIWhhbmRsZXJzLmxl
bmd0aCApIHsKKyAgICAgICAgICAgICAgICBpZiAoICFzcGVjaWFsLnRlYXJkb3duIHx8CisgICAg
ICAgICAgICAgICAgICAgIHNwZWNpYWwudGVhcmRvd24uY2FsbCggZWxlbSwgbmFtZXNwYWNlcywg
ZWxlbURhdGEuaGFuZGxlICkgPT09IGZhbHNlICkgeworCisgICAgICAgICAgICAgICAgICAgIGpR
dWVyeS5yZW1vdmVFdmVudCggZWxlbSwgdHlwZSwgZWxlbURhdGEuaGFuZGxlICk7CisgICAgICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZGVsZXRlIGV2ZW50c1sgdHlwZSBdOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gUmVtb3ZlIGRhdGEgYW5kIHRoZSBl
eHBhbmRvIGlmIGl0J3Mgbm8gbG9uZ2VyIHVzZWQKKyAgICAgICAgaWYgKCBqUXVlcnkuaXNFbXB0
eU9iamVjdCggZXZlbnRzICkgKSB7CisgICAgICAgICAgICBkYXRhUHJpdi5yZW1vdmUoIGVsZW0s
ICJoYW5kbGUgZXZlbnRzIiApOworICAgICAgICB9CisgICAgfSwKKworICAgIGRpc3BhdGNoOiBm
dW5jdGlvbiggbmF0aXZlRXZlbnQgKSB7CisKKyAgICAgICAgLy8gTWFrZSBhIHdyaXRhYmxlIGpR
dWVyeS5FdmVudCBmcm9tIHRoZSBuYXRpdmUgZXZlbnQgb2JqZWN0CisgICAgICAgIHZhciBldmVu
dCA9IGpRdWVyeS5ldmVudC5maXgoIG5hdGl2ZUV2ZW50ICk7CisKKyAgICAgICAgdmFyIGksIGos
IHJldCwgbWF0Y2hlZCwgaGFuZGxlT2JqLCBoYW5kbGVyUXVldWUsCisgICAgICAgICAgICBhcmdz
ID0gbmV3IEFycmF5KCBhcmd1bWVudHMubGVuZ3RoICksCisgICAgICAgICAgICBoYW5kbGVycyA9
ICggZGF0YVByaXYuZ2V0KCB0aGlzLCAiZXZlbnRzIiApIHx8IHt9IClbIGV2ZW50LnR5cGUgXSB8
fCBbXSwKKyAgICAgICAgICAgIHNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgZXZlbnQu
dHlwZSBdIHx8IHt9OworCisgICAgICAgIC8vIFVzZSB0aGUgZml4LWVkIGpRdWVyeS5FdmVudCBy
YXRoZXIgdGhhbiB0aGUgKHJlYWQtb25seSkgbmF0aXZlIGV2ZW50CisgICAgICAgIGFyZ3NbIDAg
XSA9IGV2ZW50OworCisgICAgICAgIGZvciAoIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsg
aSsrICkgeworICAgICAgICAgICAgYXJnc1sgaSBdID0gYXJndW1lbnRzWyBpIF07CisgICAgICAg
IH0KKworICAgICAgICBldmVudC5kZWxlZ2F0ZVRhcmdldCA9IHRoaXM7CisKKyAgICAgICAgLy8g
Q2FsbCB0aGUgcHJlRGlzcGF0Y2ggaG9vayBmb3IgdGhlIG1hcHBlZCB0eXBlLCBhbmQgbGV0IGl0
IGJhaWwgaWYgZGVzaXJlZAorICAgICAgICBpZiAoIHNwZWNpYWwucHJlRGlzcGF0Y2ggJiYgc3Bl
Y2lhbC5wcmVEaXNwYXRjaC5jYWxsKCB0aGlzLCBldmVudCApID09PSBmYWxzZSApIHsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIERldGVybWluZSBoYW5kbGVy
cworICAgICAgICBoYW5kbGVyUXVldWUgPSBqUXVlcnkuZXZlbnQuaGFuZGxlcnMuY2FsbCggdGhp
cywgZXZlbnQsIGhhbmRsZXJzICk7CisKKyAgICAgICAgLy8gUnVuIGRlbGVnYXRlcyBmaXJzdDsg
dGhleSBtYXkgd2FudCB0byBzdG9wIHByb3BhZ2F0aW9uIGJlbmVhdGggdXMKKyAgICAgICAgaSA9
IDA7CisgICAgICAgIHdoaWxlICggKCBtYXRjaGVkID0gaGFuZGxlclF1ZXVlWyBpKysgXSApICYm
ICFldmVudC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpICkgeworICAgICAgICAgICAgZXZlbnQuY3Vy
cmVudFRhcmdldCA9IG1hdGNoZWQuZWxlbTsKKworICAgICAgICAgICAgaiA9IDA7CisgICAgICAg
ICAgICB3aGlsZSAoICggaGFuZGxlT2JqID0gbWF0Y2hlZC5oYW5kbGVyc1sgaisrIF0gKSAmJgor
ICAgICAgICAgICAgICAgICFldmVudC5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCgpICkg
eworCisgICAgICAgICAgICAgICAgLy8gVHJpZ2dlcmVkIGV2ZW50IG11c3QgZWl0aGVyIDEpIGhh
dmUgbm8gbmFtZXNwYWNlLCBvciAyKSBoYXZlIG5hbWVzcGFjZShzKQorICAgICAgICAgICAgICAg
IC8vIGEgc3Vic2V0IG9yIGVxdWFsIHRvIHRob3NlIGluIHRoZSBib3VuZCBldmVudCAoYm90aCBj
YW4gaGF2ZSBubyBuYW1lc3BhY2UpLgorICAgICAgICAgICAgICAgIGlmICggIWV2ZW50LnJuYW1l
c3BhY2UgfHwgZXZlbnQucm5hbWVzcGFjZS50ZXN0KCBoYW5kbGVPYmoubmFtZXNwYWNlICkgKSB7
CisKKyAgICAgICAgICAgICAgICAgICAgZXZlbnQuaGFuZGxlT2JqID0gaGFuZGxlT2JqOworICAg
ICAgICAgICAgICAgICAgICBldmVudC5kYXRhID0gaGFuZGxlT2JqLmRhdGE7CisKKyAgICAgICAg
ICAgICAgICAgICAgcmV0ID0gKCAoIGpRdWVyeS5ldmVudC5zcGVjaWFsWyBoYW5kbGVPYmoub3Jp
Z1R5cGUgXSB8fCB7fSApLmhhbmRsZSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxl
T2JqLmhhbmRsZXIgKS5hcHBseSggbWF0Y2hlZC5lbGVtLCBhcmdzICk7CisKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKCByZXQgIT09IHVuZGVmaW5lZCApIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICggKCBldmVudC5yZXN1bHQgPSByZXQgKSA9PT0gZmFsc2UgKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIENhbGwgdGhlIHBvc3REaXNwYXRjaCBo
b29rIGZvciB0aGUgbWFwcGVkIHR5cGUKKyAgICAgICAgaWYgKCBzcGVjaWFsLnBvc3REaXNwYXRj
aCApIHsKKyAgICAgICAgICAgIHNwZWNpYWwucG9zdERpc3BhdGNoLmNhbGwoIHRoaXMsIGV2ZW50
ICk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZXZlbnQucmVzdWx0OworICAgIH0sCisK
KyAgICBoYW5kbGVyczogZnVuY3Rpb24oIGV2ZW50LCBoYW5kbGVycyApIHsKKyAgICAgICAgdmFy
IGksIGhhbmRsZU9iaiwgc2VsLCBtYXRjaGVkSGFuZGxlcnMsIG1hdGNoZWRTZWxlY3RvcnMsCisg
ICAgICAgICAgICBoYW5kbGVyUXVldWUgPSBbXSwKKyAgICAgICAgICAgIGRlbGVnYXRlQ291bnQg
PSBoYW5kbGVycy5kZWxlZ2F0ZUNvdW50LAorICAgICAgICAgICAgY3VyID0gZXZlbnQudGFyZ2V0
OworCisgICAgICAgIC8vIEZpbmQgZGVsZWdhdGUgaGFuZGxlcnMKKyAgICAgICAgaWYgKCBkZWxl
Z2F0ZUNvdW50ICYmCisKKyAgICAgICAgICAgIC8vIFN1cHBvcnQ6IElFIDw9OQorICAgICAgICAg
ICAgLy8gQmxhY2staG9sZSBTVkcgPHVzZT4gaW5zdGFuY2UgdHJlZXMgKHRyYWMtMTMxODApCisg
ICAgICAgICAgICBjdXIubm9kZVR5cGUgJiYKKworICAgICAgICAgICAgLy8gU3VwcG9ydDogRmly
ZWZveCA8PTQyCisgICAgICAgICAgICAvLyBTdXBwcmVzcyBzcGVjLXZpb2xhdGluZyBjbGlja3Mg
aW5kaWNhdGluZyBhIG5vbi1wcmltYXJ5IHBvaW50ZXIgYnV0dG9uICh0cmFjLTM4NjEpCisgICAg
ICAgICAgICAvLyBodHRwczovL3d3dy53My5vcmcvVFIvRE9NLUxldmVsLTMtRXZlbnRzLyNldmVu
dC10eXBlLWNsaWNrCisgICAgICAgICAgICAvLyBTdXBwb3J0OiBJRSAxMSBvbmx5CisgICAgICAg
ICAgICAvLyAuLi5idXQgbm90IGFycm93IGtleSAiY2xpY2tzIiBvZiByYWRpbyBpbnB1dHMsIHdo
aWNoIGNhbiBoYXZlIGBidXR0b25gIC0xIChnaC0yMzQzKQorICAgICAgICAgICAgISggZXZlbnQu
dHlwZSA9PT0gImNsaWNrIiAmJiBldmVudC5idXR0b24gPj0gMSApICkgeworCisgICAgICAgICAg
ICBmb3IgKCA7IGN1ciAhPT0gdGhpczsgY3VyID0gY3VyLnBhcmVudE5vZGUgfHwgdGhpcyApIHsK
KworICAgICAgICAgICAgICAgIC8vIERvbid0IGNoZWNrIG5vbi1lbGVtZW50cyAoIzEzMjA4KQor
ICAgICAgICAgICAgICAgIC8vIERvbid0IHByb2Nlc3MgY2xpY2tzIG9uIGRpc2FibGVkIGVsZW1l
bnRzICgjNjkxMSwgIzgxNjUsICMxMTM4MiwgIzExNzY0KQorICAgICAgICAgICAgICAgIGlmICgg
Y3VyLm5vZGVUeXBlID09PSAxICYmICEoIGV2ZW50LnR5cGUgPT09ICJjbGljayIgJiYgY3VyLmRp
c2FibGVkID09PSB0cnVlICkgKSB7CisgICAgICAgICAgICAgICAgICAgIG1hdGNoZWRIYW5kbGVy
cyA9IFtdOworICAgICAgICAgICAgICAgICAgICBtYXRjaGVkU2VsZWN0b3JzID0ge307CisgICAg
ICAgICAgICAgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgZGVsZWdhdGVDb3VudDsgaSsrICkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlT2JqID0gaGFuZGxlcnNbIGkgXTsKKworICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gRG9uJ3QgY29uZmxpY3Qgd2l0aCBPYmplY3QucHJvdG90
eXBlIHByb3BlcnRpZXMgKCMxMzIwMykKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbCA9IGhh
bmRsZU9iai5zZWxlY3RvciArICIgIjsKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBt
YXRjaGVkU2VsZWN0b3JzWyBzZWwgXSA9PT0gdW5kZWZpbmVkICkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1hdGNoZWRTZWxlY3RvcnNbIHNlbCBdID0gaGFuZGxlT2JqLm5lZWRzQ29u
dGV4dCA/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeSggc2VsLCB0aGlz
ICkuaW5kZXgoIGN1ciApID4gLTEgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBq
UXVlcnkuZmluZCggc2VsLCB0aGlzLCBudWxsLCBbIGN1ciBdICkubGVuZ3RoOworICAgICAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBtYXRjaGVkU2Vs
ZWN0b3JzWyBzZWwgXSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVkSGFu
ZGxlcnMucHVzaCggaGFuZGxlT2JqICk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKCBtYXRjaGVkSGFuZGxl
cnMubGVuZ3RoICkgeworICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlclF1ZXVlLnB1c2go
IHsgZWxlbTogY3VyLCBoYW5kbGVyczogbWF0Y2hlZEhhbmRsZXJzIH0gKTsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
CisgICAgICAgIC8vIEFkZCB0aGUgcmVtYWluaW5nIChkaXJlY3RseS1ib3VuZCkgaGFuZGxlcnMK
KyAgICAgICAgY3VyID0gdGhpczsKKyAgICAgICAgaWYgKCBkZWxlZ2F0ZUNvdW50IDwgaGFuZGxl
cnMubGVuZ3RoICkgeworICAgICAgICAgICAgaGFuZGxlclF1ZXVlLnB1c2goIHsgZWxlbTogY3Vy
LCBoYW5kbGVyczogaGFuZGxlcnMuc2xpY2UoIGRlbGVnYXRlQ291bnQgKSB9ICk7CisgICAgICAg
IH0KKworICAgICAgICByZXR1cm4gaGFuZGxlclF1ZXVlOworICAgIH0sCisKKyAgICBhZGRQcm9w
OiBmdW5jdGlvbiggbmFtZSwgaG9vayApIHsKKyAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5
KCBqUXVlcnkuRXZlbnQucHJvdG90eXBlLCBuYW1lLCB7CisgICAgICAgICAgICBlbnVtZXJhYmxl
OiB0cnVlLAorICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLAorCisgICAgICAgICAgICBn
ZXQ6IGpRdWVyeS5pc0Z1bmN0aW9uKCBob29rICkgPworICAgICAgICAgICAgICAgIGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIHRoaXMub3JpZ2luYWxFdmVudCApIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaG9vayggdGhpcy5vcmlnaW5hbEV2ZW50
ICk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IDoKKyAgICAgICAg
ICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCB0aGlzLm9yaWdp
bmFsRXZlbnQgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3Jp
Z2luYWxFdmVudFsgbmFtZSBdOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgfSwKKworICAgICAgICAgICAgc2V0OiBmdW5jdGlvbiggdmFsdWUgKSB7CisgICAgICAgICAg
ICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KCB0aGlzLCBuYW1lLCB7CisgICAgICAgICAgICAg
ICAgICAgIGVudW1lcmFibGU6IHRydWUsCisgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJs
ZTogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsCisgICAgICAgICAg
ICAgICAgICAgIHZhbHVlOiB2YWx1ZQorICAgICAgICAgICAgICAgIH0gKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfSApOworICAgIH0sCisKKyAgICBmaXg6IGZ1bmN0aW9uKCBvcmlnaW5hbEV2
ZW50ICkgeworICAgICAgICByZXR1cm4gb3JpZ2luYWxFdmVudFsgalF1ZXJ5LmV4cGFuZG8gXSA/
CisgICAgICAgICAgICBvcmlnaW5hbEV2ZW50IDoKKyAgICAgICAgICAgIG5ldyBqUXVlcnkuRXZl
bnQoIG9yaWdpbmFsRXZlbnQgKTsKKyAgICB9LAorCisgICAgc3BlY2lhbDogeworICAgICAgICBs
b2FkOiB7CisKKyAgICAgICAgICAgIC8vIFByZXZlbnQgdHJpZ2dlcmVkIGltYWdlLmxvYWQgZXZl
bnRzIGZyb20gYnViYmxpbmcgdG8gd2luZG93LmxvYWQKKyAgICAgICAgICAgIG5vQnViYmxlOiB0
cnVlCisgICAgICAgIH0sCisgICAgICAgIGZvY3VzOiB7CisKKyAgICAgICAgICAgIC8vIEZpcmUg
bmF0aXZlIGV2ZW50IGlmIHBvc3NpYmxlIHNvIGJsdXIvZm9jdXMgc2VxdWVuY2UgaXMgY29ycmVj
dAorICAgICAgICAgICAgdHJpZ2dlcjogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgaWYg
KCB0aGlzICE9PSBzYWZlQWN0aXZlRWxlbWVudCgpICYmIHRoaXMuZm9jdXMgKSB7CisgICAgICAg
ICAgICAgICAgICAgIHRoaXMuZm9jdXMoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBkZWxl
Z2F0ZVR5cGU6ICJmb2N1c2luIgorICAgICAgICB9LAorICAgICAgICBibHVyOiB7CisgICAgICAg
ICAgICB0cmlnZ2VyOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBpZiAoIHRoaXMgPT09
IHNhZmVBY3RpdmVFbGVtZW50KCkgJiYgdGhpcy5ibHVyICkgeworICAgICAgICAgICAgICAgICAg
ICB0aGlzLmJsdXIoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBkZWxlZ2F0ZVR5cGU6ICJm
b2N1c291dCIKKyAgICAgICAgfSwKKyAgICAgICAgY2xpY2s6IHsKKworICAgICAgICAgICAgLy8g
Rm9yIGNoZWNrYm94LCBmaXJlIG5hdGl2ZSBldmVudCBzbyBjaGVja2VkIHN0YXRlIHdpbGwgYmUg
cmlnaHQKKyAgICAgICAgICAgIHRyaWdnZXI6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAg
IGlmICggdGhpcy50eXBlID09PSAiY2hlY2tib3giICYmIHRoaXMuY2xpY2sgJiYgalF1ZXJ5Lm5v
ZGVOYW1lKCB0aGlzLCAiaW5wdXQiICkgKSB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xp
Y2soKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgIC8vIEZvciBjcm9zcy1icm93c2VyIGNv
bnNpc3RlbmN5LCBkb24ndCBmaXJlIG5hdGl2ZSAuY2xpY2soKSBvbiBsaW5rcworICAgICAgICAg
ICAgX2RlZmF1bHQ6IGZ1bmN0aW9uKCBldmVudCApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
alF1ZXJ5Lm5vZGVOYW1lKCBldmVudC50YXJnZXQsICJhIiApOworICAgICAgICAgICAgfQorICAg
ICAgICB9LAorCisgICAgICAgIGJlZm9yZXVubG9hZDogeworICAgICAgICAgICAgcG9zdERpc3Bh
dGNoOiBmdW5jdGlvbiggZXZlbnQgKSB7CisKKyAgICAgICAgICAgICAgICAvLyBTdXBwb3J0OiBG
aXJlZm94IDIwKworICAgICAgICAgICAgICAgIC8vIEZpcmVmb3ggZG9lc24ndCBhbGVydCBpZiB0
aGUgcmV0dXJuVmFsdWUgZmllbGQgaXMgbm90IHNldC4KKyAgICAgICAgICAgICAgICBpZiAoIGV2
ZW50LnJlc3VsdCAhPT0gdW5kZWZpbmVkICYmIGV2ZW50Lm9yaWdpbmFsRXZlbnQgKSB7CisgICAg
ICAgICAgICAgICAgICAgIGV2ZW50Lm9yaWdpbmFsRXZlbnQucmV0dXJuVmFsdWUgPSBldmVudC5y
ZXN1bHQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorfTsKKworalF1ZXJ5LnJlbW92ZUV2ZW50ID0gZnVuY3Rpb24oIGVsZW0sIHR5cGUsIGhhbmRs
ZSApIHsKKworICAgIC8vIFRoaXMgImlmIiBpcyBuZWVkZWQgZm9yIHBsYWluIG9iamVjdHMKKyAg
ICBpZiAoIGVsZW0ucmVtb3ZlRXZlbnRMaXN0ZW5lciApIHsKKyAgICAgICAgZWxlbS5yZW1vdmVF
dmVudExpc3RlbmVyKCB0eXBlLCBoYW5kbGUgKTsKKyAgICB9Cit9OworCitqUXVlcnkuRXZlbnQg
PSBmdW5jdGlvbiggc3JjLCBwcm9wcyApIHsKKworICAgIC8vIEFsbG93IGluc3RhbnRpYXRpb24g
d2l0aG91dCB0aGUgJ25ldycga2V5d29yZAorICAgIGlmICggISggdGhpcyBpbnN0YW5jZW9mIGpR
dWVyeS5FdmVudCApICkgeworICAgICAgICByZXR1cm4gbmV3IGpRdWVyeS5FdmVudCggc3JjLCBw
cm9wcyApOworICAgIH0KKworICAgIC8vIEV2ZW50IG9iamVjdAorICAgIGlmICggc3JjICYmIHNy
Yy50eXBlICkgeworICAgICAgICB0aGlzLm9yaWdpbmFsRXZlbnQgPSBzcmM7CisgICAgICAgIHRo
aXMudHlwZSA9IHNyYy50eXBlOworCisgICAgICAgIC8vIEV2ZW50cyBidWJibGluZyB1cCB0aGUg
ZG9jdW1lbnQgbWF5IGhhdmUgYmVlbiBtYXJrZWQgYXMgcHJldmVudGVkCisgICAgICAgIC8vIGJ5
IGEgaGFuZGxlciBsb3dlciBkb3duIHRoZSB0cmVlOyByZWZsZWN0IHRoZSBjb3JyZWN0IHZhbHVl
LgorICAgICAgICB0aGlzLmlzRGVmYXVsdFByZXZlbnRlZCA9IHNyYy5kZWZhdWx0UHJldmVudGVk
IHx8CisgICAgICAgICAgICAgICAgc3JjLmRlZmF1bHRQcmV2ZW50ZWQgPT09IHVuZGVmaW5lZCAm
JgorCisgICAgICAgICAgICAgICAgLy8gU3VwcG9ydDogQW5kcm9pZCA8PTIuMyBvbmx5CisgICAg
ICAgICAgICAgICAgc3JjLnJldHVyblZhbHVlID09PSBmYWxzZSA/CisgICAgICAgICAgICByZXR1
cm5UcnVlIDoKKyAgICAgICAgICAgIHJldHVybkZhbHNlOworCisgICAgICAgIC8vIENyZWF0ZSB0
YXJnZXQgcHJvcGVydGllcworICAgICAgICAvLyBTdXBwb3J0OiBTYWZhcmkgPD02IC0gNyBvbmx5
CisgICAgICAgIC8vIFRhcmdldCBzaG91bGQgbm90IGJlIGEgdGV4dCBub2RlICgjNTA0LCAjMTMx
NDMpCisgICAgICAgIHRoaXMudGFyZ2V0ID0gKCBzcmMudGFyZ2V0ICYmIHNyYy50YXJnZXQubm9k
ZVR5cGUgPT09IDMgKSA/CisgICAgICAgICAgICBzcmMudGFyZ2V0LnBhcmVudE5vZGUgOgorICAg
ICAgICAgICAgc3JjLnRhcmdldDsKKworICAgICAgICB0aGlzLmN1cnJlbnRUYXJnZXQgPSBzcmMu
Y3VycmVudFRhcmdldDsKKyAgICAgICAgdGhpcy5yZWxhdGVkVGFyZ2V0ID0gc3JjLnJlbGF0ZWRU
YXJnZXQ7CisKKyAgICAvLyBFdmVudCB0eXBlCisgICAgfSBlbHNlIHsKKyAgICAgICAgdGhpcy50
eXBlID0gc3JjOworICAgIH0KKworICAgIC8vIFB1dCBleHBsaWNpdGx5IHByb3ZpZGVkIHByb3Bl
cnRpZXMgb250byB0aGUgZXZlbnQgb2JqZWN0CisgICAgaWYgKCBwcm9wcyApIHsKKyAgICAgICAg
alF1ZXJ5LmV4dGVuZCggdGhpcywgcHJvcHMgKTsKKyAgICB9CisKKyAgICAvLyBDcmVhdGUgYSB0
aW1lc3RhbXAgaWYgaW5jb21pbmcgZXZlbnQgZG9lc24ndCBoYXZlIG9uZQorICAgIHRoaXMudGlt
ZVN0YW1wID0gc3JjICYmIHNyYy50aW1lU3RhbXAgfHwgalF1ZXJ5Lm5vdygpOworCisgICAgLy8g
TWFyayBpdCBhcyBmaXhlZAorICAgIHRoaXNbIGpRdWVyeS5leHBhbmRvIF0gPSB0cnVlOworfTsK
KworLy8galF1ZXJ5LkV2ZW50IGlzIGJhc2VkIG9uIERPTTMgRXZlbnRzIGFzIHNwZWNpZmllZCBi
eSB0aGUgRUNNQVNjcmlwdCBMYW5ndWFnZSBCaW5kaW5nCisvLyBodHRwczovL3d3dy53My5vcmcv
VFIvMjAwMy9XRC1ET00tTGV2ZWwtMy1FdmVudHMtMjAwMzAzMzEvZWNtYS1zY3JpcHQtYmluZGlu
Zy5odG1sCitqUXVlcnkuRXZlbnQucHJvdG90eXBlID0geworICAgIGNvbnN0cnVjdG9yOiBqUXVl
cnkuRXZlbnQsCisgICAgaXNEZWZhdWx0UHJldmVudGVkOiByZXR1cm5GYWxzZSwKKyAgICBpc1By
b3BhZ2F0aW9uU3RvcHBlZDogcmV0dXJuRmFsc2UsCisgICAgaXNJbW1lZGlhdGVQcm9wYWdhdGlv
blN0b3BwZWQ6IHJldHVybkZhbHNlLAorICAgIGlzU2ltdWxhdGVkOiBmYWxzZSwKKworICAgIHBy
ZXZlbnREZWZhdWx0OiBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIGUgPSB0aGlzLm9yaWdpbmFs
RXZlbnQ7CisKKyAgICAgICAgdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQgPSByZXR1cm5UcnVlOwor
CisgICAgICAgIGlmICggZSAmJiAhdGhpcy5pc1NpbXVsYXRlZCApIHsKKyAgICAgICAgICAgIGUu
cHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgfQorICAgIH0sCisgICAgc3RvcFByb3BhZ2F0aW9u
OiBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIGUgPSB0aGlzLm9yaWdpbmFsRXZlbnQ7CisKKyAg
ICAgICAgdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZCA9IHJldHVyblRydWU7CisKKyAgICAgICAg
aWYgKCBlICYmICF0aGlzLmlzU2ltdWxhdGVkICkgeworICAgICAgICAgICAgZS5zdG9wUHJvcGFn
YXRpb24oKTsKKyAgICAgICAgfQorICAgIH0sCisgICAgc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9u
OiBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIGUgPSB0aGlzLm9yaWdpbmFsRXZlbnQ7CisKKyAg
ICAgICAgdGhpcy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCA9IHJldHVyblRydWU7CisK
KyAgICAgICAgaWYgKCBlICYmICF0aGlzLmlzU2ltdWxhdGVkICkgeworICAgICAgICAgICAgZS5z
dG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuc3Rv
cFByb3BhZ2F0aW9uKCk7CisgICAgfQorfTsKKworLy8gSW5jbHVkZXMgYWxsIGNvbW1vbiBldmVu
dCBwcm9wcyBpbmNsdWRpbmcgS2V5RXZlbnQgYW5kIE1vdXNlRXZlbnQgc3BlY2lmaWMgcHJvcHMK
K2pRdWVyeS5lYWNoKCB7CisgICAgYWx0S2V5OiB0cnVlLAorICAgIGJ1YmJsZXM6IHRydWUsCisg
ICAgY2FuY2VsYWJsZTogdHJ1ZSwKKyAgICBjaGFuZ2VkVG91Y2hlczogdHJ1ZSwKKyAgICBjdHJs
S2V5OiB0cnVlLAorICAgIGRldGFpbDogdHJ1ZSwKKyAgICBldmVudFBoYXNlOiB0cnVlLAorICAg
IG1ldGFLZXk6IHRydWUsCisgICAgcGFnZVg6IHRydWUsCisgICAgcGFnZVk6IHRydWUsCisgICAg
c2hpZnRLZXk6IHRydWUsCisgICAgdmlldzogdHJ1ZSwKKyAgICAiY2hhciI6IHRydWUsCisgICAg
Y2hhckNvZGU6IHRydWUsCisgICAga2V5OiB0cnVlLAorICAgIGtleUNvZGU6IHRydWUsCisgICAg
YnV0dG9uOiB0cnVlLAorICAgIGJ1dHRvbnM6IHRydWUsCisgICAgY2xpZW50WDogdHJ1ZSwKKyAg
ICBjbGllbnRZOiB0cnVlLAorICAgIG9mZnNldFg6IHRydWUsCisgICAgb2Zmc2V0WTogdHJ1ZSwK
KyAgICBwb2ludGVySWQ6IHRydWUsCisgICAgcG9pbnRlclR5cGU6IHRydWUsCisgICAgc2NyZWVu
WDogdHJ1ZSwKKyAgICBzY3JlZW5ZOiB0cnVlLAorICAgIHRhcmdldFRvdWNoZXM6IHRydWUsCisg
ICAgdG9FbGVtZW50OiB0cnVlLAorICAgIHRvdWNoZXM6IHRydWUsCisKKyAgICB3aGljaDogZnVu
Y3Rpb24oIGV2ZW50ICkgeworICAgICAgICB2YXIgYnV0dG9uID0gZXZlbnQuYnV0dG9uOworCisg
ICAgICAgIC8vIEFkZCB3aGljaCBmb3Iga2V5IGV2ZW50cworICAgICAgICBpZiAoIGV2ZW50Lndo
aWNoID09IG51bGwgJiYgcmtleUV2ZW50LnRlc3QoIGV2ZW50LnR5cGUgKSApIHsKKyAgICAgICAg
ICAgIHJldHVybiBldmVudC5jaGFyQ29kZSAhPSBudWxsID8gZXZlbnQuY2hhckNvZGUgOiBldmVu
dC5rZXlDb2RlOworICAgICAgICB9CisKKyAgICAgICAgLy8gQWRkIHdoaWNoIGZvciBjbGljazog
MSA9PT0gbGVmdDsgMiA9PT0gbWlkZGxlOyAzID09PSByaWdodAorICAgICAgICBpZiAoICFldmVu
dC53aGljaCAmJiBidXR0b24gIT09IHVuZGVmaW5lZCAmJiBybW91c2VFdmVudC50ZXN0KCBldmVu
dC50eXBlICkgKSB7CisgICAgICAgICAgICBpZiAoIGJ1dHRvbiAmIDEgKSB7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICggYnV0dG9u
ICYgMiApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gMzsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgaWYgKCBidXR0b24gJiA0ICkgeworICAgICAgICAgICAgICAgIHJldHVybiAyOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCisgICAg
ICAgIHJldHVybiBldmVudC53aGljaDsKKyAgICB9Cit9LCBqUXVlcnkuZXZlbnQuYWRkUHJvcCAp
OworCisvLyBDcmVhdGUgbW91c2VlbnRlci9sZWF2ZSBldmVudHMgdXNpbmcgbW91c2VvdmVyL291
dCBhbmQgZXZlbnQtdGltZSBjaGVja3MKKy8vIHNvIHRoYXQgZXZlbnQgZGVsZWdhdGlvbiB3b3Jr
cyBpbiBqUXVlcnkuCisvLyBEbyB0aGUgc2FtZSBmb3IgcG9pbnRlcmVudGVyL3BvaW50ZXJsZWF2
ZSBhbmQgcG9pbnRlcm92ZXIvcG9pbnRlcm91dAorLy8KKy8vIFN1cHBvcnQ6IFNhZmFyaSA3IG9u
bHkKKy8vIFNhZmFyaSBzZW5kcyBtb3VzZWVudGVyIHRvbyBvZnRlbjsgc2VlOgorLy8gaHR0cHM6
Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9NDcwMjU4Cisv
LyBmb3IgdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBidWcgKGl0IGV4aXN0ZWQgaW4gb2xkZXIgQ2hy
b21lIHZlcnNpb25zIGFzIHdlbGwpLgoralF1ZXJ5LmVhY2goIHsKKyAgICBtb3VzZWVudGVyOiAi
bW91c2VvdmVyIiwKKyAgICBtb3VzZWxlYXZlOiAibW91c2VvdXQiLAorICAgIHBvaW50ZXJlbnRl
cjogInBvaW50ZXJvdmVyIiwKKyAgICBwb2ludGVybGVhdmU6ICJwb2ludGVyb3V0IgorfSwgZnVu
Y3Rpb24oIG9yaWcsIGZpeCApIHsKKyAgICBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgb3JpZyBdID0g
eworICAgICAgICBkZWxlZ2F0ZVR5cGU6IGZpeCwKKyAgICAgICAgYmluZFR5cGU6IGZpeCwKKwor
ICAgICAgICBoYW5kbGU6IGZ1bmN0aW9uKCBldmVudCApIHsKKyAgICAgICAgICAgIHZhciByZXQs
CisgICAgICAgICAgICAgICAgdGFyZ2V0ID0gdGhpcywKKyAgICAgICAgICAgICAgICByZWxhdGVk
ID0gZXZlbnQucmVsYXRlZFRhcmdldCwKKyAgICAgICAgICAgICAgICBoYW5kbGVPYmogPSBldmVu
dC5oYW5kbGVPYmo7CisKKyAgICAgICAgICAgIC8vIEZvciBtb3VzZWVudGVyL2xlYXZlIGNhbGwg
dGhlIGhhbmRsZXIgaWYgcmVsYXRlZCBpcyBvdXRzaWRlIHRoZSB0YXJnZXQuCisgICAgICAgICAg
ICAvLyBOQjogTm8gcmVsYXRlZFRhcmdldCBpZiB0aGUgbW91c2UgbGVmdC9lbnRlcmVkIHRoZSBi
cm93c2VyIHdpbmRvdworICAgICAgICAgICAgaWYgKCAhcmVsYXRlZCB8fCAoIHJlbGF0ZWQgIT09
IHRhcmdldCAmJiAhalF1ZXJ5LmNvbnRhaW5zKCB0YXJnZXQsIHJlbGF0ZWQgKSApICkgeworICAg
ICAgICAgICAgICAgIGV2ZW50LnR5cGUgPSBoYW5kbGVPYmoub3JpZ1R5cGU7CisgICAgICAgICAg
ICAgICAgcmV0ID0gaGFuZGxlT2JqLmhhbmRsZXIuYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApOwor
ICAgICAgICAgICAgICAgIGV2ZW50LnR5cGUgPSBmaXg7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICByZXR1cm4gcmV0OworICAgICAgICB9CisgICAgfTsKK30gKTsKKworalF1ZXJ5LmZuLmV4
dGVuZCggeworCisgICAgb246IGZ1bmN0aW9uKCB0eXBlcywgc2VsZWN0b3IsIGRhdGEsIGZuICkg
eworICAgICAgICByZXR1cm4gb24oIHRoaXMsIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4gKTsK
KyAgICB9LAorICAgIG9uZTogZnVuY3Rpb24oIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4gKSB7
CisgICAgICAgIHJldHVybiBvbiggdGhpcywgdHlwZXMsIHNlbGVjdG9yLCBkYXRhLCBmbiwgMSAp
OworICAgIH0sCisgICAgb2ZmOiBmdW5jdGlvbiggdHlwZXMsIHNlbGVjdG9yLCBmbiApIHsKKyAg
ICAgICAgdmFyIGhhbmRsZU9iaiwgdHlwZTsKKyAgICAgICAgaWYgKCB0eXBlcyAmJiB0eXBlcy5w
cmV2ZW50RGVmYXVsdCAmJiB0eXBlcy5oYW5kbGVPYmogKSB7CisKKyAgICAgICAgICAgIC8vICgg
ZXZlbnQgKSAgZGlzcGF0Y2hlZCBqUXVlcnkuRXZlbnQKKyAgICAgICAgICAgIGhhbmRsZU9iaiA9
IHR5cGVzLmhhbmRsZU9iajsKKyAgICAgICAgICAgIGpRdWVyeSggdHlwZXMuZGVsZWdhdGVUYXJn
ZXQgKS5vZmYoCisgICAgICAgICAgICAgICAgaGFuZGxlT2JqLm5hbWVzcGFjZSA/CisgICAgICAg
ICAgICAgICAgICAgIGhhbmRsZU9iai5vcmlnVHlwZSArICIuIiArIGhhbmRsZU9iai5uYW1lc3Bh
Y2UgOgorICAgICAgICAgICAgICAgICAgICBoYW5kbGVPYmoub3JpZ1R5cGUsCisgICAgICAgICAg
ICAgICAgaGFuZGxlT2JqLnNlbGVjdG9yLAorICAgICAgICAgICAgICAgIGhhbmRsZU9iai5oYW5k
bGVyCisgICAgICAgICAgICApOworICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKCB0eXBlb2YgdHlwZXMgPT09ICJvYmplY3QiICkgeworCisgICAgICAgICAg
ICAvLyAoIHR5cGVzLW9iamVjdCBbLCBzZWxlY3Rvcl0gKQorICAgICAgICAgICAgZm9yICggdHlw
ZSBpbiB0eXBlcyApIHsKKyAgICAgICAgICAgICAgICB0aGlzLm9mZiggdHlwZSwgc2VsZWN0b3Is
IHR5cGVzWyB0eXBlIF0gKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0aGlz
OworICAgICAgICB9CisgICAgICAgIGlmICggc2VsZWN0b3IgPT09IGZhbHNlIHx8IHR5cGVvZiBz
ZWxlY3RvciA9PT0gImZ1bmN0aW9uIiApIHsKKworICAgICAgICAgICAgLy8gKCB0eXBlcyBbLCBm
bl0gKQorICAgICAgICAgICAgZm4gPSBzZWxlY3RvcjsKKyAgICAgICAgICAgIHNlbGVjdG9yID0g
dW5kZWZpbmVkOworICAgICAgICB9CisgICAgICAgIGlmICggZm4gPT09IGZhbHNlICkgeworICAg
ICAgICAgICAgZm4gPSByZXR1cm5GYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdGhp
cy5lYWNoKCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGpRdWVyeS5ldmVudC5yZW1vdmUoIHRo
aXMsIHR5cGVzLCBmbiwgc2VsZWN0b3IgKTsKKyAgICAgICAgfSApOworICAgIH0KK30gKTsKKwor
Cit2YXIKKworICAgIC8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4gKi8KKworICAgIC8vIFNlZSBo
dHRwczovL2dpdGh1Yi5jb20vZXNsaW50L2VzbGludC9pc3N1ZXMvMzIyOQorICAgIHJ4aHRtbFRh
ZyA9IC88KD8hYXJlYXxicnxjb2x8ZW1iZWR8aHJ8aW1nfGlucHV0fGxpbmt8bWV0YXxwYXJhbSko
KFthLXpdW15cL1wwPlx4MjBcdFxyXG5cZl0qKVtePl0qKVwvPi9naSwKKworICAgIC8qIGVzbGlu
dC1lbmFibGUgKi8KKworICAgIC8vIFN1cHBvcnQ6IElFIDw9MTAgLSAxMSwgRWRnZSAxMiAtIDEz
CisgICAgLy8gSW4gSUUvRWRnZSB1c2luZyByZWdleCBncm91cHMgaGVyZSBjYXVzZXMgc2V2ZXJl
IHNsb3dkb3ducy4KKyAgICAvLyBTZWUgaHR0cHM6Ly9jb25uZWN0Lm1pY3Jvc29mdC5jb20vSUUv
ZmVlZGJhY2svZGV0YWlscy8xNzM2NTEyLworICAgIHJub0lubmVyaHRtbCA9IC88c2NyaXB0fDxz
dHlsZXw8bGluay9pLAorCisgICAgLy8gY2hlY2tlZD0iY2hlY2tlZCIgb3IgY2hlY2tlZAorICAg
IHJjaGVja2VkID0gL2NoZWNrZWRccyooPzpbXj1dfD1ccyouY2hlY2tlZC4pL2ksCisgICAgcnNj
cmlwdFR5cGVNYXNrZWQgPSAvXnRydWVcLyguKikvLAorICAgIHJjbGVhblNjcmlwdCA9IC9eXHMq
PCEoPzpcW0NEQVRBXFt8LS0pfCg/OlxdXF18LS0pPlxzKiQvZzsKKworZnVuY3Rpb24gbWFuaXB1
bGF0aW9uVGFyZ2V0KCBlbGVtLCBjb250ZW50ICkgeworICAgIGlmICggalF1ZXJ5Lm5vZGVOYW1l
KCBlbGVtLCAidGFibGUiICkgJiYKKyAgICAgICAgalF1ZXJ5Lm5vZGVOYW1lKCBjb250ZW50Lm5v
ZGVUeXBlICE9PSAxMSA/IGNvbnRlbnQgOiBjb250ZW50LmZpcnN0Q2hpbGQsICJ0ciIgKSApIHsK
KworICAgICAgICByZXR1cm4gZWxlbS5nZXRFbGVtZW50c0J5VGFnTmFtZSggInRib2R5IiApWyAw
IF0gfHwgZWxlbTsKKyAgICB9CisKKyAgICByZXR1cm4gZWxlbTsKK30KKworLy8gUmVwbGFjZS9y
ZXN0b3JlIHRoZSB0eXBlIGF0dHJpYnV0ZSBvZiBzY3JpcHQgZWxlbWVudHMgZm9yIHNhZmUgRE9N
IG1hbmlwdWxhdGlvbgorZnVuY3Rpb24gZGlzYWJsZVNjcmlwdCggZWxlbSApIHsKKyAgICBlbGVt
LnR5cGUgPSAoIGVsZW0uZ2V0QXR0cmlidXRlKCAidHlwZSIgKSAhPT0gbnVsbCApICsgIi8iICsg
ZWxlbS50eXBlOworICAgIHJldHVybiBlbGVtOworfQorZnVuY3Rpb24gcmVzdG9yZVNjcmlwdCgg
ZWxlbSApIHsKKyAgICB2YXIgbWF0Y2ggPSByc2NyaXB0VHlwZU1hc2tlZC5leGVjKCBlbGVtLnR5
cGUgKTsKKworICAgIGlmICggbWF0Y2ggKSB7CisgICAgICAgIGVsZW0udHlwZSA9IG1hdGNoWyAx
IF07CisgICAgfSBlbHNlIHsKKyAgICAgICAgZWxlbS5yZW1vdmVBdHRyaWJ1dGUoICJ0eXBlIiAp
OworICAgIH0KKworICAgIHJldHVybiBlbGVtOworfQorCitmdW5jdGlvbiBjbG9uZUNvcHlFdmVu
dCggc3JjLCBkZXN0ICkgeworICAgIHZhciBpLCBsLCB0eXBlLCBwZGF0YU9sZCwgcGRhdGFDdXIs
IHVkYXRhT2xkLCB1ZGF0YUN1ciwgZXZlbnRzOworCisgICAgaWYgKCBkZXN0Lm5vZGVUeXBlICE9
PSAxICkgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gMS4gQ29weSBwcml2YXRl
IGRhdGE6IGV2ZW50cywgaGFuZGxlcnMsIGV0Yy4KKyAgICBpZiAoIGRhdGFQcml2Lmhhc0RhdGEo
IHNyYyApICkgeworICAgICAgICBwZGF0YU9sZCA9IGRhdGFQcml2LmFjY2Vzcyggc3JjICk7Cisg
ICAgICAgIHBkYXRhQ3VyID0gZGF0YVByaXYuc2V0KCBkZXN0LCBwZGF0YU9sZCApOworICAgICAg
ICBldmVudHMgPSBwZGF0YU9sZC5ldmVudHM7CisKKyAgICAgICAgaWYgKCBldmVudHMgKSB7Cisg
ICAgICAgICAgICBkZWxldGUgcGRhdGFDdXIuaGFuZGxlOworICAgICAgICAgICAgcGRhdGFDdXIu
ZXZlbnRzID0ge307CisKKyAgICAgICAgICAgIGZvciAoIHR5cGUgaW4gZXZlbnRzICkgeworICAg
ICAgICAgICAgICAgIGZvciAoIGkgPSAwLCBsID0gZXZlbnRzWyB0eXBlIF0ubGVuZ3RoOyBpIDwg
bDsgaSsrICkgeworICAgICAgICAgICAgICAgICAgICBqUXVlcnkuZXZlbnQuYWRkKCBkZXN0LCB0
eXBlLCBldmVudHNbIHR5cGUgXVsgaSBdICk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLy8gMi4gQ29weSB1c2VyIGRhdGEKKyAgICBp
ZiAoIGRhdGFVc2VyLmhhc0RhdGEoIHNyYyApICkgeworICAgICAgICB1ZGF0YU9sZCA9IGRhdGFV
c2VyLmFjY2Vzcyggc3JjICk7CisgICAgICAgIHVkYXRhQ3VyID0galF1ZXJ5LmV4dGVuZCgge30s
IHVkYXRhT2xkICk7CisKKyAgICAgICAgZGF0YVVzZXIuc2V0KCBkZXN0LCB1ZGF0YUN1ciApOwor
ICAgIH0KK30KKworLy8gRml4IElFIGJ1Z3MsIHNlZSBzdXBwb3J0IHRlc3RzCitmdW5jdGlvbiBm
aXhJbnB1dCggc3JjLCBkZXN0ICkgeworICAgIHZhciBub2RlTmFtZSA9IGRlc3Qubm9kZU5hbWUu
dG9Mb3dlckNhc2UoKTsKKworICAgIC8vIEZhaWxzIHRvIHBlcnNpc3QgdGhlIGNoZWNrZWQgc3Rh
dGUgb2YgYSBjbG9uZWQgY2hlY2tib3ggb3IgcmFkaW8gYnV0dG9uLgorICAgIGlmICggbm9kZU5h
bWUgPT09ICJpbnB1dCIgJiYgcmNoZWNrYWJsZVR5cGUudGVzdCggc3JjLnR5cGUgKSApIHsKKyAg
ICAgICAgZGVzdC5jaGVja2VkID0gc3JjLmNoZWNrZWQ7CisKKyAgICAvLyBGYWlscyB0byByZXR1
cm4gdGhlIHNlbGVjdGVkIG9wdGlvbiB0byB0aGUgZGVmYXVsdCBzZWxlY3RlZCBzdGF0ZSB3aGVu
IGNsb25pbmcgb3B0aW9ucworICAgIH0gZWxzZSBpZiAoIG5vZGVOYW1lID09PSAiaW5wdXQiIHx8
IG5vZGVOYW1lID09PSAidGV4dGFyZWEiICkgeworICAgICAgICBkZXN0LmRlZmF1bHRWYWx1ZSA9
IHNyYy5kZWZhdWx0VmFsdWU7CisgICAgfQorfQorCitmdW5jdGlvbiBkb21NYW5pcCggY29sbGVj
dGlvbiwgYXJncywgY2FsbGJhY2ssIGlnbm9yZWQgKSB7CisKKyAgICAvLyBGbGF0dGVuIGFueSBu
ZXN0ZWQgYXJyYXlzCisgICAgYXJncyA9IGNvbmNhdC5hcHBseSggW10sIGFyZ3MgKTsKKworICAg
IHZhciBmcmFnbWVudCwgZmlyc3QsIHNjcmlwdHMsIGhhc1NjcmlwdHMsIG5vZGUsIGRvYywKKyAg
ICAgICAgaSA9IDAsCisgICAgICAgIGwgPSBjb2xsZWN0aW9uLmxlbmd0aCwKKyAgICAgICAgaU5v
Q2xvbmUgPSBsIC0gMSwKKyAgICAgICAgdmFsdWUgPSBhcmdzWyAwIF0sCisgICAgICAgIGlzRnVu
Y3Rpb24gPSBqUXVlcnkuaXNGdW5jdGlvbiggdmFsdWUgKTsKKworICAgIC8vIFdlIGNhbid0IGNs
b25lTm9kZSBmcmFnbWVudHMgdGhhdCBjb250YWluIGNoZWNrZWQsIGluIFdlYktpdAorICAgIGlm
ICggaXNGdW5jdGlvbiB8fAorICAgICAgICAgICAgKCBsID4gMSAmJiB0eXBlb2YgdmFsdWUgPT09
ICJzdHJpbmciICYmCisgICAgICAgICAgICAgICAgIXN1cHBvcnQuY2hlY2tDbG9uZSAmJiByY2hl
Y2tlZC50ZXN0KCB2YWx1ZSApICkgKSB7CisgICAgICAgIHJldHVybiBjb2xsZWN0aW9uLmVhY2go
IGZ1bmN0aW9uKCBpbmRleCApIHsKKyAgICAgICAgICAgIHZhciBzZWxmID0gY29sbGVjdGlvbi5l
cSggaW5kZXggKTsKKyAgICAgICAgICAgIGlmICggaXNGdW5jdGlvbiApIHsKKyAgICAgICAgICAg
ICAgICBhcmdzWyAwIF0gPSB2YWx1ZS5jYWxsKCB0aGlzLCBpbmRleCwgc2VsZi5odG1sKCkgKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRvbU1hbmlwKCBzZWxmLCBhcmdzLCBjYWxsYmFj
aywgaWdub3JlZCApOworICAgICAgICB9ICk7CisgICAgfQorCisgICAgaWYgKCBsICkgeworICAg
ICAgICBmcmFnbWVudCA9IGJ1aWxkRnJhZ21lbnQoIGFyZ3MsIGNvbGxlY3Rpb25bIDAgXS5vd25l
ckRvY3VtZW50LCBmYWxzZSwgY29sbGVjdGlvbiwgaWdub3JlZCApOworICAgICAgICBmaXJzdCA9
IGZyYWdtZW50LmZpcnN0Q2hpbGQ7CisKKyAgICAgICAgaWYgKCBmcmFnbWVudC5jaGlsZE5vZGVz
Lmxlbmd0aCA9PT0gMSApIHsKKyAgICAgICAgICAgIGZyYWdtZW50ID0gZmlyc3Q7CisgICAgICAg
IH0KKworICAgICAgICAvLyBSZXF1aXJlIGVpdGhlciBuZXcgY29udGVudCBvciBhbiBpbnRlcmVz
dCBpbiBpZ25vcmVkIGVsZW1lbnRzIHRvIGludm9rZSB0aGUgY2FsbGJhY2sKKyAgICAgICAgaWYg
KCBmaXJzdCB8fCBpZ25vcmVkICkgeworICAgICAgICAgICAgc2NyaXB0cyA9IGpRdWVyeS5tYXAo
IGdldEFsbCggZnJhZ21lbnQsICJzY3JpcHQiICksIGRpc2FibGVTY3JpcHQgKTsKKyAgICAgICAg
ICAgIGhhc1NjcmlwdHMgPSBzY3JpcHRzLmxlbmd0aDsKKworICAgICAgICAgICAgLy8gVXNlIHRo
ZSBvcmlnaW5hbCBmcmFnbWVudCBmb3IgdGhlIGxhc3QgaXRlbQorICAgICAgICAgICAgLy8gaW5z
dGVhZCBvZiB0aGUgZmlyc3QgYmVjYXVzZSBpdCBjYW4gZW5kIHVwCisgICAgICAgICAgICAvLyBi
ZWluZyBlbXB0aWVkIGluY29ycmVjdGx5IGluIGNlcnRhaW4gc2l0dWF0aW9ucyAoIzgwNzApLgor
ICAgICAgICAgICAgZm9yICggOyBpIDwgbDsgaSsrICkgeworICAgICAgICAgICAgICAgIG5vZGUg
PSBmcmFnbWVudDsKKworICAgICAgICAgICAgICAgIGlmICggaSAhPT0gaU5vQ2xvbmUgKSB7Cisg
ICAgICAgICAgICAgICAgICAgIG5vZGUgPSBqUXVlcnkuY2xvbmUoIG5vZGUsIHRydWUsIHRydWUg
KTsKKworICAgICAgICAgICAgICAgICAgICAvLyBLZWVwIHJlZmVyZW5jZXMgdG8gY2xvbmVkIHNj
cmlwdHMgZm9yIGxhdGVyIHJlc3RvcmF0aW9uCisgICAgICAgICAgICAgICAgICAgIGlmICggaGFz
U2NyaXB0cyApIHsKKworICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3VwcG9ydDogQW5kcm9p
ZCA8PTQuMCBvbmx5LCBQaGFudG9tSlMgMSBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAv
LyBwdXNoLmFwcGx5KF8sIGFycmF5bGlrZSkgdGhyb3dzIG9uIGFuY2llbnQgV2ViS2l0CisgICAg
ICAgICAgICAgICAgICAgICAgICBqUXVlcnkubWVyZ2UoIHNjcmlwdHMsIGdldEFsbCggbm9kZSwg
InNjcmlwdCIgKSApOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgY2FsbGJhY2suY2FsbCggY29sbGVjdGlvblsgaSBdLCBub2RlLCBp
ICk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICggaGFzU2NyaXB0cyApIHsKKyAg
ICAgICAgICAgICAgICBkb2MgPSBzY3JpcHRzWyBzY3JpcHRzLmxlbmd0aCAtIDEgXS5vd25lckRv
Y3VtZW50OworCisgICAgICAgICAgICAgICAgLy8gUmVlbmFibGUgc2NyaXB0cworICAgICAgICAg
ICAgICAgIGpRdWVyeS5tYXAoIHNjcmlwdHMsIHJlc3RvcmVTY3JpcHQgKTsKKworICAgICAgICAg
ICAgICAgIC8vIEV2YWx1YXRlIGV4ZWN1dGFibGUgc2NyaXB0cyBvbiBmaXJzdCBkb2N1bWVudCBp
bnNlcnRpb24KKyAgICAgICAgICAgICAgICBmb3IgKCBpID0gMDsgaSA8IGhhc1NjcmlwdHM7IGkr
KyApIHsKKyAgICAgICAgICAgICAgICAgICAgbm9kZSA9IHNjcmlwdHNbIGkgXTsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKCByc2NyaXB0VHlwZS50ZXN0KCBub2RlLnR5cGUgfHwgIiIgKSAmJgor
ICAgICAgICAgICAgICAgICAgICAgICAgIWRhdGFQcml2LmFjY2Vzcyggbm9kZSwgImdsb2JhbEV2
YWwiICkgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5jb250YWlucyggZG9jLCBu
b2RlICkgKSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICggbm9kZS5zcmMgKSB7CisK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBPcHRpb25hbCBBSkFYIGRlcGVuZGVuY3ks
IGJ1dCB3b24ndCBydW4gc2NyaXB0cyBpZiBub3QgcHJlc2VudAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICggalF1ZXJ5Ll9ldmFsVXJsICkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBqUXVlcnkuX2V2YWxVcmwoIG5vZGUuc3JjICk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBET01FdmFsKCBub2RlLnRleHRDb250ZW50LnJlcGxhY2UoIHJj
bGVhblNjcmlwdCwgIiIgKSwgZG9jICk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gY29sbGVjdGlvbjsKK30KKworZnVuY3Rpb24gcmVt
b3ZlKCBlbGVtLCBzZWxlY3Rvciwga2VlcERhdGEgKSB7CisgICAgdmFyIG5vZGUsCisgICAgICAg
IG5vZGVzID0gc2VsZWN0b3IgPyBqUXVlcnkuZmlsdGVyKCBzZWxlY3RvciwgZWxlbSApIDogZWxl
bSwKKyAgICAgICAgaSA9IDA7CisKKyAgICBmb3IgKCA7ICggbm9kZSA9IG5vZGVzWyBpIF0gKSAh
PSBudWxsOyBpKysgKSB7CisgICAgICAgIGlmICggIWtlZXBEYXRhICYmIG5vZGUubm9kZVR5cGUg
PT09IDEgKSB7CisgICAgICAgICAgICBqUXVlcnkuY2xlYW5EYXRhKCBnZXRBbGwoIG5vZGUgKSAp
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKCBub2RlLnBhcmVudE5vZGUgKSB7CisgICAgICAg
ICAgICBpZiAoIGtlZXBEYXRhICYmIGpRdWVyeS5jb250YWlucyggbm9kZS5vd25lckRvY3VtZW50
LCBub2RlICkgKSB7CisgICAgICAgICAgICAgICAgc2V0R2xvYmFsRXZhbCggZ2V0QWxsKCBub2Rl
LCAic2NyaXB0IiApICk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBub2RlLnBhcmVudE5v
ZGUucmVtb3ZlQ2hpbGQoIG5vZGUgKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBl
bGVtOworfQorCitqUXVlcnkuZXh0ZW5kKCB7CisgICAgaHRtbFByZWZpbHRlcjogZnVuY3Rpb24o
IGh0bWwgKSB7CisgICAgICAgIHJldHVybiBodG1sLnJlcGxhY2UoIHJ4aHRtbFRhZywgIjwkMT48
LyQyPiIgKTsKKyAgICB9LAorCisgICAgY2xvbmU6IGZ1bmN0aW9uKCBlbGVtLCBkYXRhQW5kRXZl
bnRzLCBkZWVwRGF0YUFuZEV2ZW50cyApIHsKKyAgICAgICAgdmFyIGksIGwsIHNyY0VsZW1lbnRz
LCBkZXN0RWxlbWVudHMsCisgICAgICAgICAgICBjbG9uZSA9IGVsZW0uY2xvbmVOb2RlKCB0cnVl
ICksCisgICAgICAgICAgICBpblBhZ2UgPSBqUXVlcnkuY29udGFpbnMoIGVsZW0ub3duZXJEb2N1
bWVudCwgZWxlbSApOworCisgICAgICAgIC8vIEZpeCBJRSBjbG9uaW5nIGlzc3VlcworICAgICAg
ICBpZiAoICFzdXBwb3J0Lm5vQ2xvbmVDaGVja2VkICYmICggZWxlbS5ub2RlVHlwZSA9PT0gMSB8
fCBlbGVtLm5vZGVUeXBlID09PSAxMSApICYmCisgICAgICAgICAgICAgICAgIWpRdWVyeS5pc1hN
TERvYyggZWxlbSApICkgeworCisgICAgICAgICAgICAvLyBXZSBlc2NoZXcgU2l6emxlIGhlcmUg
Zm9yIHBlcmZvcm1hbmNlIHJlYXNvbnM6IGh0dHBzOi8vanNwZXJmLmNvbS9nZXRhbGwtdnMtc2l6
emxlLzIKKyAgICAgICAgICAgIGRlc3RFbGVtZW50cyA9IGdldEFsbCggY2xvbmUgKTsKKyAgICAg
ICAgICAgIHNyY0VsZW1lbnRzID0gZ2V0QWxsKCBlbGVtICk7CisKKyAgICAgICAgICAgIGZvciAo
IGkgPSAwLCBsID0gc3JjRWxlbWVudHMubGVuZ3RoOyBpIDwgbDsgaSsrICkgeworICAgICAgICAg
ICAgICAgIGZpeElucHV0KCBzcmNFbGVtZW50c1sgaSBdLCBkZXN0RWxlbWVudHNbIGkgXSApOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gQ29weSB0aGUgZXZlbnRzIGZy
b20gdGhlIG9yaWdpbmFsIHRvIHRoZSBjbG9uZQorICAgICAgICBpZiAoIGRhdGFBbmRFdmVudHMg
KSB7CisgICAgICAgICAgICBpZiAoIGRlZXBEYXRhQW5kRXZlbnRzICkgeworICAgICAgICAgICAg
ICAgIHNyY0VsZW1lbnRzID0gc3JjRWxlbWVudHMgfHwgZ2V0QWxsKCBlbGVtICk7CisgICAgICAg
ICAgICAgICAgZGVzdEVsZW1lbnRzID0gZGVzdEVsZW1lbnRzIHx8IGdldEFsbCggY2xvbmUgKTsK
KworICAgICAgICAgICAgICAgIGZvciAoIGkgPSAwLCBsID0gc3JjRWxlbWVudHMubGVuZ3RoOyBp
IDwgbDsgaSsrICkgeworICAgICAgICAgICAgICAgICAgICBjbG9uZUNvcHlFdmVudCggc3JjRWxl
bWVudHNbIGkgXSwgZGVzdEVsZW1lbnRzWyBpIF0gKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGNsb25lQ29weUV2ZW50KCBlbGVtLCBj
bG9uZSApOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gUHJlc2VydmUg
c2NyaXB0IGV2YWx1YXRpb24gaGlzdG9yeQorICAgICAgICBkZXN0RWxlbWVudHMgPSBnZXRBbGwo
IGNsb25lLCAic2NyaXB0IiApOworICAgICAgICBpZiAoIGRlc3RFbGVtZW50cy5sZW5ndGggPiAw
ICkgeworICAgICAgICAgICAgc2V0R2xvYmFsRXZhbCggZGVzdEVsZW1lbnRzLCAhaW5QYWdlICYm
IGdldEFsbCggZWxlbSwgInNjcmlwdCIgKSApOworICAgICAgICB9CisKKyAgICAgICAgLy8gUmV0
dXJuIHRoZSBjbG9uZWQgc2V0CisgICAgICAgIHJldHVybiBjbG9uZTsKKyAgICB9LAorCisgICAg
Y2xlYW5EYXRhOiBmdW5jdGlvbiggZWxlbXMgKSB7CisgICAgICAgIHZhciBkYXRhLCBlbGVtLCB0
eXBlLAorICAgICAgICAgICAgc3BlY2lhbCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsLAorICAgICAg
ICAgICAgaSA9IDA7CisKKyAgICAgICAgZm9yICggOyAoIGVsZW0gPSBlbGVtc1sgaSBdICkgIT09
IHVuZGVmaW5lZDsgaSsrICkgeworICAgICAgICAgICAgaWYgKCBhY2NlcHREYXRhKCBlbGVtICkg
KSB7CisgICAgICAgICAgICAgICAgaWYgKCAoIGRhdGEgPSBlbGVtWyBkYXRhUHJpdi5leHBhbmRv
IF0gKSApIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCBkYXRhLmV2ZW50cyApIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGZvciAoIHR5cGUgaW4gZGF0YS5ldmVudHMgKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCBzcGVjaWFsWyB0eXBlIF0gKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5ldmVudC5yZW1vdmUoIGVsZW0sIHR5cGUgKTsK
KworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgYSBzaG9ydGN1dCB0byBh
dm9pZCBqUXVlcnkuZXZlbnQucmVtb3ZlJ3Mgb3ZlcmhlYWQKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnku
cmVtb3ZlRXZlbnQoIGVsZW0sIHR5cGUsIGRhdGEuaGFuZGxlICk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgLy8gU3VwcG9ydDogQ2hyb21lIDw9MzUgLSA0
NSsKKyAgICAgICAgICAgICAgICAgICAgLy8gQXNzaWduIHVuZGVmaW5lZCBpbnN0ZWFkIG9mIHVz
aW5nIGRlbGV0ZSwgc2VlIERhdGEjcmVtb3ZlCisgICAgICAgICAgICAgICAgICAgIGVsZW1bIGRh
dGFQcml2LmV4cGFuZG8gXSA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgaWYgKCBlbGVtWyBkYXRhVXNlci5leHBhbmRvIF0gKSB7CisKKyAgICAgICAgICAg
ICAgICAgICAgLy8gU3VwcG9ydDogQ2hyb21lIDw9MzUgLSA0NSsKKyAgICAgICAgICAgICAgICAg
ICAgLy8gQXNzaWduIHVuZGVmaW5lZCBpbnN0ZWFkIG9mIHVzaW5nIGRlbGV0ZSwgc2VlIERhdGEj
cmVtb3ZlCisgICAgICAgICAgICAgICAgICAgIGVsZW1bIGRhdGFVc2VyLmV4cGFuZG8gXSA9IHVu
ZGVmaW5lZDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9Cit9ICk7CisKK2pRdWVyeS5mbi5leHRlbmQoIHsKKyAgICBkZXRhY2g6IGZ1bmN0aW9uKCBz
ZWxlY3RvciApIHsKKyAgICAgICAgcmV0dXJuIHJlbW92ZSggdGhpcywgc2VsZWN0b3IsIHRydWUg
KTsKKyAgICB9LAorCisgICAgcmVtb3ZlOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7CisgICAgICAg
IHJldHVybiByZW1vdmUoIHRoaXMsIHNlbGVjdG9yICk7CisgICAgfSwKKworICAgIHRleHQ6IGZ1
bmN0aW9uKCB2YWx1ZSApIHsKKyAgICAgICAgcmV0dXJuIGFjY2VzcyggdGhpcywgZnVuY3Rpb24o
IHZhbHVlICkgeworICAgICAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPworICAg
ICAgICAgICAgICAgIGpRdWVyeS50ZXh0KCB0aGlzICkgOgorICAgICAgICAgICAgICAgIHRoaXMu
ZW1wdHkoKS5lYWNoKCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCB0aGlz
Lm5vZGVUeXBlID09PSAxIHx8IHRoaXMubm9kZVR5cGUgPT09IDExIHx8IHRoaXMubm9kZVR5cGUg
PT09IDkgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHRDb250ZW50ID0gdmFs
dWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9ICk7CisgICAgICAg
IH0sIG51bGwsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoICk7CisgICAgfSwKKworICAgIGFwcGVu
ZDogZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiBkb21NYW5pcCggdGhpcywgYXJndW1lbnRz
LCBmdW5jdGlvbiggZWxlbSApIHsKKyAgICAgICAgICAgIGlmICggdGhpcy5ub2RlVHlwZSA9PT0g
MSB8fCB0aGlzLm5vZGVUeXBlID09PSAxMSB8fCB0aGlzLm5vZGVUeXBlID09PSA5ICkgeworICAg
ICAgICAgICAgICAgIHZhciB0YXJnZXQgPSBtYW5pcHVsYXRpb25UYXJnZXQoIHRoaXMsIGVsZW0g
KTsKKyAgICAgICAgICAgICAgICB0YXJnZXQuYXBwZW5kQ2hpbGQoIGVsZW0gKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfSApOworICAgIH0sCisKKyAgICBwcmVwZW5kOiBmdW5jdGlvbigpIHsK
KyAgICAgICAgcmV0dXJuIGRvbU1hbmlwKCB0aGlzLCBhcmd1bWVudHMsIGZ1bmN0aW9uKCBlbGVt
ICkgeworICAgICAgICAgICAgaWYgKCB0aGlzLm5vZGVUeXBlID09PSAxIHx8IHRoaXMubm9kZVR5
cGUgPT09IDExIHx8IHRoaXMubm9kZVR5cGUgPT09IDkgKSB7CisgICAgICAgICAgICAgICAgdmFy
IHRhcmdldCA9IG1hbmlwdWxhdGlvblRhcmdldCggdGhpcywgZWxlbSApOworICAgICAgICAgICAg
ICAgIHRhcmdldC5pbnNlcnRCZWZvcmUoIGVsZW0sIHRhcmdldC5maXJzdENoaWxkICk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0gKTsKKyAgICB9LAorCisgICAgYmVmb3JlOiBmdW5jdGlvbigp
IHsKKyAgICAgICAgcmV0dXJuIGRvbU1hbmlwKCB0aGlzLCBhcmd1bWVudHMsIGZ1bmN0aW9uKCBl
bGVtICkgeworICAgICAgICAgICAgaWYgKCB0aGlzLnBhcmVudE5vZGUgKSB7CisgICAgICAgICAg
ICAgICAgdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSggZWxlbSwgdGhpcyApOworICAgICAg
ICAgICAgfQorICAgICAgICB9ICk7CisgICAgfSwKKworICAgIGFmdGVyOiBmdW5jdGlvbigpIHsK
KyAgICAgICAgcmV0dXJuIGRvbU1hbmlwKCB0aGlzLCBhcmd1bWVudHMsIGZ1bmN0aW9uKCBlbGVt
ICkgeworICAgICAgICAgICAgaWYgKCB0aGlzLnBhcmVudE5vZGUgKSB7CisgICAgICAgICAgICAg
ICAgdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSggZWxlbSwgdGhpcy5uZXh0U2libGluZyAp
OworICAgICAgICAgICAgfQorICAgICAgICB9ICk7CisgICAgfSwKKworICAgIGVtcHR5OiBmdW5j
dGlvbigpIHsKKyAgICAgICAgdmFyIGVsZW0sCisgICAgICAgICAgICBpID0gMDsKKworICAgICAg
ICBmb3IgKCA7ICggZWxlbSA9IHRoaXNbIGkgXSApICE9IG51bGw7IGkrKyApIHsKKyAgICAgICAg
ICAgIGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSApIHsKKworICAgICAgICAgICAgICAgIC8vIFBy
ZXZlbnQgbWVtb3J5IGxlYWtzCisgICAgICAgICAgICAgICAgalF1ZXJ5LmNsZWFuRGF0YSggZ2V0
QWxsKCBlbGVtLCBmYWxzZSApICk7CisKKyAgICAgICAgICAgICAgICAvLyBSZW1vdmUgYW55IHJl
bWFpbmluZyBub2RlcworICAgICAgICAgICAgICAgIGVsZW0udGV4dENvbnRlbnQgPSAiIjsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0sCisK
KyAgICBjbG9uZTogZnVuY3Rpb24oIGRhdGFBbmRFdmVudHMsIGRlZXBEYXRhQW5kRXZlbnRzICkg
eworICAgICAgICBkYXRhQW5kRXZlbnRzID0gZGF0YUFuZEV2ZW50cyA9PSBudWxsID8gZmFsc2Ug
OiBkYXRhQW5kRXZlbnRzOworICAgICAgICBkZWVwRGF0YUFuZEV2ZW50cyA9IGRlZXBEYXRhQW5k
RXZlbnRzID09IG51bGwgPyBkYXRhQW5kRXZlbnRzIDogZGVlcERhdGFBbmRFdmVudHM7CisKKyAg
ICAgICAgcmV0dXJuIHRoaXMubWFwKCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHJldHVybiBq
UXVlcnkuY2xvbmUoIHRoaXMsIGRhdGFBbmRFdmVudHMsIGRlZXBEYXRhQW5kRXZlbnRzICk7Cisg
ICAgICAgIH0gKTsKKyAgICB9LAorCisgICAgaHRtbDogZnVuY3Rpb24oIHZhbHVlICkgeworICAg
ICAgICByZXR1cm4gYWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggdmFsdWUgKSB7CisgICAgICAgICAg
ICB2YXIgZWxlbSA9IHRoaXNbIDAgXSB8fCB7fSwKKyAgICAgICAgICAgICAgICBpID0gMCwKKyAg
ICAgICAgICAgICAgICBsID0gdGhpcy5sZW5ndGg7CisKKyAgICAgICAgICAgIGlmICggdmFsdWUg
PT09IHVuZGVmaW5lZCAmJiBlbGVtLm5vZGVUeXBlID09PSAxICkgeworICAgICAgICAgICAgICAg
IHJldHVybiBlbGVtLmlubmVySFRNTDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8g
U2VlIGlmIHdlIGNhbiB0YWtlIGEgc2hvcnRjdXQgYW5kIGp1c3QgdXNlIGlubmVySFRNTAorICAg
ICAgICAgICAgaWYgKCB0eXBlb2YgdmFsdWUgPT09ICJzdHJpbmciICYmICFybm9Jbm5lcmh0bWwu
dGVzdCggdmFsdWUgKSAmJgorICAgICAgICAgICAgICAgICF3cmFwTWFwWyAoIHJ0YWdOYW1lLmV4
ZWMoIHZhbHVlICkgfHwgWyAiIiwgIiIgXSApWyAxIF0udG9Mb3dlckNhc2UoKSBdICkgeworCisg
ICAgICAgICAgICAgICAgdmFsdWUgPSBqUXVlcnkuaHRtbFByZWZpbHRlciggdmFsdWUgKTsKKwor
ICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAoIDsgaSA8IGw7
IGkrKyApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0gPSB0aGlzWyBpIF0gfHwge307
CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlbW92ZSBlbGVtZW50IG5vZGVzIGFuZCBw
cmV2ZW50IG1lbW9yeSBsZWFrcworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBlbGVtLm5v
ZGVUeXBlID09PSAxICkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5jbGVh
bkRhdGEoIGdldEFsbCggZWxlbSwgZmFsc2UgKSApOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGVsZW0uaW5uZXJIVE1MID0gdmFsdWU7CisgICAgICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBlbGVtID0gMDsKKwor
ICAgICAgICAgICAgICAgIC8vIElmIHVzaW5nIGlubmVySFRNTCB0aHJvd3MgYW4gZXhjZXB0aW9u
LCB1c2UgdGhlIGZhbGxiYWNrIG1ldGhvZAorICAgICAgICAgICAgICAgIH0gY2F0Y2ggKCBlICkg
e30KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCBlbGVtICkgeworICAgICAgICAg
ICAgICAgIHRoaXMuZW1wdHkoKS5hcHBlbmQoIHZhbHVlICk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0sIG51bGwsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoICk7CisgICAgfSwKKworICAgIHJl
cGxhY2VXaXRoOiBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIGlnbm9yZWQgPSBbXTsKKworICAg
ICAgICAvLyBNYWtlIHRoZSBjaGFuZ2VzLCByZXBsYWNpbmcgZWFjaCBub24taWdub3JlZCBjb250
ZXh0IGVsZW1lbnQgd2l0aCB0aGUgbmV3IGNvbnRlbnQKKyAgICAgICAgcmV0dXJuIGRvbU1hbmlw
KCB0aGlzLCBhcmd1bWVudHMsIGZ1bmN0aW9uKCBlbGVtICkgeworICAgICAgICAgICAgdmFyIHBh
cmVudCA9IHRoaXMucGFyZW50Tm9kZTsKKworICAgICAgICAgICAgaWYgKCBqUXVlcnkuaW5BcnJh
eSggdGhpcywgaWdub3JlZCApIDwgMCApIHsKKyAgICAgICAgICAgICAgICBqUXVlcnkuY2xlYW5E
YXRhKCBnZXRBbGwoIHRoaXMgKSApOworICAgICAgICAgICAgICAgIGlmICggcGFyZW50ICkgewor
ICAgICAgICAgICAgICAgICAgICBwYXJlbnQucmVwbGFjZUNoaWxkKCBlbGVtLCB0aGlzICk7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgIC8vIEZvcmNlIGNhbGxi
YWNrIGludm9jYXRpb24KKyAgICAgICAgfSwgaWdub3JlZCApOworICAgIH0KK30gKTsKKworalF1
ZXJ5LmVhY2goIHsKKyAgICBhcHBlbmRUbzogImFwcGVuZCIsCisgICAgcHJlcGVuZFRvOiAicHJl
cGVuZCIsCisgICAgaW5zZXJ0QmVmb3JlOiAiYmVmb3JlIiwKKyAgICBpbnNlcnRBZnRlcjogImFm
dGVyIiwKKyAgICByZXBsYWNlQWxsOiAicmVwbGFjZVdpdGgiCit9LCBmdW5jdGlvbiggbmFtZSwg
b3JpZ2luYWwgKSB7CisgICAgalF1ZXJ5LmZuWyBuYW1lIF0gPSBmdW5jdGlvbiggc2VsZWN0b3Ig
KSB7CisgICAgICAgIHZhciBlbGVtcywKKyAgICAgICAgICAgIHJldCA9IFtdLAorICAgICAgICAg
ICAgaW5zZXJ0ID0galF1ZXJ5KCBzZWxlY3RvciApLAorICAgICAgICAgICAgbGFzdCA9IGluc2Vy
dC5sZW5ndGggLSAxLAorICAgICAgICAgICAgaSA9IDA7CisKKyAgICAgICAgZm9yICggOyBpIDw9
IGxhc3Q7IGkrKyApIHsKKyAgICAgICAgICAgIGVsZW1zID0gaSA9PT0gbGFzdCA/IHRoaXMgOiB0
aGlzLmNsb25lKCB0cnVlICk7CisgICAgICAgICAgICBqUXVlcnkoIGluc2VydFsgaSBdIClbIG9y
aWdpbmFsIF0oIGVsZW1zICk7CisKKyAgICAgICAgICAgIC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00
LjAgb25seSwgUGhhbnRvbUpTIDEgb25seQorICAgICAgICAgICAgLy8gLmdldCgpIGJlY2F1c2Ug
cHVzaC5hcHBseShfLCBhcnJheWxpa2UpIHRocm93cyBvbiBhbmNpZW50IFdlYktpdAorICAgICAg
ICAgICAgcHVzaC5hcHBseSggcmV0LCBlbGVtcy5nZXQoKSApOworICAgICAgICB9CisKKyAgICAg
ICAgcmV0dXJuIHRoaXMucHVzaFN0YWNrKCByZXQgKTsKKyAgICB9OworfSApOwordmFyIHJtYXJn
aW4gPSAoIC9ebWFyZ2luLyApOworCit2YXIgcm51bW5vbnB4ID0gbmV3IFJlZ0V4cCggIl4oIiAr
IHBudW0gKyAiKSg/IXB4KVthLXolXSskIiwgImkiICk7CisKK3ZhciBnZXRTdHlsZXMgPSBmdW5j
dGlvbiggZWxlbSApIHsKKworICAgICAgICAvLyBTdXBwb3J0OiBJRSA8PTExIG9ubHksIEZpcmVm
b3ggPD0zMCAoIzE1MDk4LCAjMTQxNTApCisgICAgICAgIC8vIElFIHRocm93cyBvbiBlbGVtZW50
cyBjcmVhdGVkIGluIHBvcHVwcworICAgICAgICAvLyBGRiBtZWFud2hpbGUgdGhyb3dzIG9uIGZy
YW1lIGVsZW1lbnRzIHRocm91Z2ggImRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUiCisgICAg
ICAgIHZhciB2aWV3ID0gZWxlbS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3OworCisgICAgICAg
IGlmICggIXZpZXcgfHwgIXZpZXcub3BlbmVyICkgeworICAgICAgICAgICAgdmlldyA9IHdpbmRv
dzsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB2aWV3LmdldENvbXB1dGVkU3R5bGUoIGVs
ZW0gKTsKKyAgICB9OworCisKKworKCBmdW5jdGlvbigpIHsKKworICAgIC8vIEV4ZWN1dGluZyBi
b3RoIHBpeGVsUG9zaXRpb24gJiBib3hTaXppbmdSZWxpYWJsZSB0ZXN0cyByZXF1aXJlIG9ubHkg
b25lIGxheW91dAorICAgIC8vIHNvIHRoZXkncmUgZXhlY3V0ZWQgYXQgdGhlIHNhbWUgdGltZSB0
byBzYXZlIHRoZSBzZWNvbmQgY29tcHV0YXRpb24uCisgICAgZnVuY3Rpb24gY29tcHV0ZVN0eWxl
VGVzdHMoKSB7CisKKyAgICAgICAgLy8gVGhpcyBpcyBhIHNpbmdsZXRvbiwgd2UgbmVlZCB0byBl
eGVjdXRlIGl0IG9ubHkgb25jZQorICAgICAgICBpZiAoICFkaXYgKSB7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBkaXYuc3R5bGUuY3NzVGV4dCA9CisgICAgICAg
ICAgICAiYm94LXNpemluZzpib3JkZXItYm94OyIgKworICAgICAgICAgICAgInBvc2l0aW9uOnJl
bGF0aXZlO2Rpc3BsYXk6YmxvY2s7IiArCisgICAgICAgICAgICAibWFyZ2luOmF1dG87Ym9yZGVy
OjFweDtwYWRkaW5nOjFweDsiICsKKyAgICAgICAgICAgICJ0b3A6MSU7d2lkdGg6NTAlIjsKKyAg
ICAgICAgZGl2LmlubmVySFRNTCA9ICIiOworICAgICAgICBkb2N1bWVudEVsZW1lbnQuYXBwZW5k
Q2hpbGQoIGNvbnRhaW5lciApOworCisgICAgICAgIHZhciBkaXZTdHlsZSA9IHdpbmRvdy5nZXRD
b21wdXRlZFN0eWxlKCBkaXYgKTsKKyAgICAgICAgcGl4ZWxQb3NpdGlvblZhbCA9IGRpdlN0eWxl
LnRvcCAhPT0gIjElIjsKKworICAgICAgICAvLyBTdXBwb3J0OiBBbmRyb2lkIDQuMCAtIDQuMyBv
bmx5LCBGaXJlZm94IDw9MyAtIDQ0CisgICAgICAgIHJlbGlhYmxlTWFyZ2luTGVmdFZhbCA9IGRp
dlN0eWxlLm1hcmdpbkxlZnQgPT09ICIycHgiOworICAgICAgICBib3hTaXppbmdSZWxpYWJsZVZh
bCA9IGRpdlN0eWxlLndpZHRoID09PSAiNHB4IjsKKworICAgICAgICAvLyBTdXBwb3J0OiBBbmRy
b2lkIDQuMCAtIDQuMyBvbmx5CisgICAgICAgIC8vIFNvbWUgc3R5bGVzIGNvbWUgYmFjayB3aXRo
IHBlcmNlbnRhZ2UgdmFsdWVzLCBldmVuIHRob3VnaCB0aGV5IHNob3VsZG4ndAorICAgICAgICBk
aXYuc3R5bGUubWFyZ2luUmlnaHQgPSAiNTAlIjsKKyAgICAgICAgcGl4ZWxNYXJnaW5SaWdodFZh
bCA9IGRpdlN0eWxlLm1hcmdpblJpZ2h0ID09PSAiNHB4IjsKKworICAgICAgICBkb2N1bWVudEVs
ZW1lbnQucmVtb3ZlQ2hpbGQoIGNvbnRhaW5lciApOworCisgICAgICAgIC8vIE51bGxpZnkgdGhl
IGRpdiBzbyBpdCB3b3VsZG4ndCBiZSBzdG9yZWQgaW4gdGhlIG1lbW9yeSBhbmQKKyAgICAgICAg
Ly8gaXQgd2lsbCBhbHNvIGJlIGEgc2lnbiB0aGF0IGNoZWNrcyBhbHJlYWR5IHBlcmZvcm1lZAor
ICAgICAgICBkaXYgPSBudWxsOworICAgIH0KKworICAgIHZhciBwaXhlbFBvc2l0aW9uVmFsLCBi
b3hTaXppbmdSZWxpYWJsZVZhbCwgcGl4ZWxNYXJnaW5SaWdodFZhbCwgcmVsaWFibGVNYXJnaW5M
ZWZ0VmFsLAorICAgICAgICBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCAiZGl2
IiApLAorICAgICAgICBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCAiZGl2IiApOworCisg
ICAgLy8gRmluaXNoIGVhcmx5IGluIGxpbWl0ZWQgKG5vbi1icm93c2VyKSBlbnZpcm9ubWVudHMK
KyAgICBpZiAoICFkaXYuc3R5bGUgKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAv
LyBTdXBwb3J0OiBJRSA8PTkgLSAxMSBvbmx5CisgICAgLy8gU3R5bGUgb2YgY2xvbmVkIGVsZW1l
bnQgYWZmZWN0cyBzb3VyY2UgZWxlbWVudCBjbG9uZWQgKCM4OTA4KQorICAgIGRpdi5zdHlsZS5i
YWNrZ3JvdW5kQ2xpcCA9ICJjb250ZW50LWJveCI7CisgICAgZGl2LmNsb25lTm9kZSggdHJ1ZSAp
LnN0eWxlLmJhY2tncm91bmRDbGlwID0gIiI7CisgICAgc3VwcG9ydC5jbGVhckNsb25lU3R5bGUg
PSBkaXYuc3R5bGUuYmFja2dyb3VuZENsaXAgPT09ICJjb250ZW50LWJveCI7CisKKyAgICBjb250
YWluZXIuc3R5bGUuY3NzVGV4dCA9ICJib3JkZXI6MDt3aWR0aDo4cHg7aGVpZ2h0OjA7dG9wOjA7
bGVmdDotOTk5OXB4OyIgKworICAgICAgICAicGFkZGluZzowO21hcmdpbi10b3A6MXB4O3Bvc2l0
aW9uOmFic29sdXRlIjsKKyAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoIGRpdiApOworCisgICAg
alF1ZXJ5LmV4dGVuZCggc3VwcG9ydCwgeworICAgICAgICBwaXhlbFBvc2l0aW9uOiBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgIGNvbXB1dGVTdHlsZVRlc3RzKCk7CisgICAgICAgICAgICByZXR1
cm4gcGl4ZWxQb3NpdGlvblZhbDsKKyAgICAgICAgfSwKKyAgICAgICAgYm94U2l6aW5nUmVsaWFi
bGU6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgY29tcHV0ZVN0eWxlVGVzdHMoKTsKKyAgICAg
ICAgICAgIHJldHVybiBib3hTaXppbmdSZWxpYWJsZVZhbDsKKyAgICAgICAgfSwKKyAgICAgICAg
cGl4ZWxNYXJnaW5SaWdodDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBjb21wdXRlU3R5bGVU
ZXN0cygpOworICAgICAgICAgICAgcmV0dXJuIHBpeGVsTWFyZ2luUmlnaHRWYWw7CisgICAgICAg
IH0sCisgICAgICAgIHJlbGlhYmxlTWFyZ2luTGVmdDogZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICBjb21wdXRlU3R5bGVUZXN0cygpOworICAgICAgICAgICAgcmV0dXJuIHJlbGlhYmxlTWFyZ2lu
TGVmdFZhbDsKKyAgICAgICAgfQorICAgIH0gKTsKK30gKSgpOworCisKK2Z1bmN0aW9uIGN1ckNT
UyggZWxlbSwgbmFtZSwgY29tcHV0ZWQgKSB7CisgICAgdmFyIHdpZHRoLCBtaW5XaWR0aCwgbWF4
V2lkdGgsIHJldCwKKyAgICAgICAgc3R5bGUgPSBlbGVtLnN0eWxlOworCisgICAgY29tcHV0ZWQg
PSBjb21wdXRlZCB8fCBnZXRTdHlsZXMoIGVsZW0gKTsKKworICAgIC8vIFN1cHBvcnQ6IElFIDw9
OSBvbmx5CisgICAgLy8gZ2V0UHJvcGVydHlWYWx1ZSBpcyBvbmx5IG5lZWRlZCBmb3IgLmNzcygn
ZmlsdGVyJykgKCMxMjUzNykKKyAgICBpZiAoIGNvbXB1dGVkICkgeworICAgICAgICByZXQgPSBj
b21wdXRlZC5nZXRQcm9wZXJ0eVZhbHVlKCBuYW1lICkgfHwgY29tcHV0ZWRbIG5hbWUgXTsKKwor
ICAgICAgICBpZiAoIHJldCA9PT0gIiIgJiYgIWpRdWVyeS5jb250YWlucyggZWxlbS5vd25lckRv
Y3VtZW50LCBlbGVtICkgKSB7CisgICAgICAgICAgICByZXQgPSBqUXVlcnkuc3R5bGUoIGVsZW0s
IG5hbWUgKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEEgdHJpYnV0ZSB0byB0aGUgImF3ZXNv
bWUgaGFjayBieSBEZWFuIEVkd2FyZHMiCisgICAgICAgIC8vIEFuZHJvaWQgQnJvd3NlciByZXR1
cm5zIHBlcmNlbnRhZ2UgZm9yIHNvbWUgdmFsdWVzLAorICAgICAgICAvLyBidXQgd2lkdGggc2Vl
bXMgdG8gYmUgcmVsaWFibHkgcGl4ZWxzLgorICAgICAgICAvLyBUaGlzIGlzIGFnYWluc3QgdGhl
IENTU09NIGRyYWZ0IHNwZWM6CisgICAgICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9j
c3NvbS8jcmVzb2x2ZWQtdmFsdWVzCisgICAgICAgIGlmICggIXN1cHBvcnQucGl4ZWxNYXJnaW5S
aWdodCgpICYmIHJudW1ub25weC50ZXN0KCByZXQgKSAmJiBybWFyZ2luLnRlc3QoIG5hbWUgKSAp
IHsKKworICAgICAgICAgICAgLy8gUmVtZW1iZXIgdGhlIG9yaWdpbmFsIHZhbHVlcworICAgICAg
ICAgICAgd2lkdGggPSBzdHlsZS53aWR0aDsKKyAgICAgICAgICAgIG1pbldpZHRoID0gc3R5bGUu
bWluV2lkdGg7CisgICAgICAgICAgICBtYXhXaWR0aCA9IHN0eWxlLm1heFdpZHRoOworCisgICAg
ICAgICAgICAvLyBQdXQgaW4gdGhlIG5ldyB2YWx1ZXMgdG8gZ2V0IGEgY29tcHV0ZWQgdmFsdWUg
b3V0CisgICAgICAgICAgICBzdHlsZS5taW5XaWR0aCA9IHN0eWxlLm1heFdpZHRoID0gc3R5bGUu
d2lkdGggPSByZXQ7CisgICAgICAgICAgICByZXQgPSBjb21wdXRlZC53aWR0aDsKKworICAgICAg
ICAgICAgLy8gUmV2ZXJ0IHRoZSBjaGFuZ2VkIHZhbHVlcworICAgICAgICAgICAgc3R5bGUud2lk
dGggPSB3aWR0aDsKKyAgICAgICAgICAgIHN0eWxlLm1pbldpZHRoID0gbWluV2lkdGg7CisgICAg
ICAgICAgICBzdHlsZS5tYXhXaWR0aCA9IG1heFdpZHRoOworICAgICAgICB9CisgICAgfQorCisg
ICAgcmV0dXJuIHJldCAhPT0gdW5kZWZpbmVkID8KKworICAgICAgICAvLyBTdXBwb3J0OiBJRSA8
PTkgLSAxMSBvbmx5CisgICAgICAgIC8vIElFIHJldHVybnMgekluZGV4IHZhbHVlIGFzIGFuIGlu
dGVnZXIuCisgICAgICAgIHJldCArICIiIDoKKyAgICAgICAgcmV0OworfQorCisKK2Z1bmN0aW9u
IGFkZEdldEhvb2tJZiggY29uZGl0aW9uRm4sIGhvb2tGbiApIHsKKworICAgIC8vIERlZmluZSB0
aGUgaG9vaywgd2UnbGwgY2hlY2sgb24gdGhlIGZpcnN0IHJ1biBpZiBpdCdzIHJlYWxseSBuZWVk
ZWQuCisgICAgcmV0dXJuIHsKKyAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
IGlmICggY29uZGl0aW9uRm4oKSApIHsKKworICAgICAgICAgICAgICAgIC8vIEhvb2sgbm90IG5l
ZWRlZCAob3IgaXQncyBub3QgcG9zc2libGUgdG8gdXNlIGl0IGR1ZQorICAgICAgICAgICAgICAg
IC8vIHRvIG1pc3NpbmcgZGVwZW5kZW5jeSksIHJlbW92ZSBpdC4KKyAgICAgICAgICAgICAgICBk
ZWxldGUgdGhpcy5nZXQ7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAvLyBIb29rIG5lZWRlZDsgcmVkZWZpbmUgaXQgc28gdGhhdCB0aGUgc3Vw
cG9ydCB0ZXN0IGlzIG5vdCBleGVjdXRlZCBhZ2Fpbi4KKyAgICAgICAgICAgIHJldHVybiAoIHRo
aXMuZ2V0ID0gaG9va0ZuICkuYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApOworICAgICAgICB9Cisg
ICAgfTsKK30KKworCit2YXIKKworICAgIC8vIFN3YXBwYWJsZSBpZiBkaXNwbGF5IGlzIG5vbmUg
b3Igc3RhcnRzIHdpdGggdGFibGUKKyAgICAvLyBleGNlcHQgInRhYmxlIiwgInRhYmxlLWNlbGwi
LCBvciAidGFibGUtY2FwdGlvbiIKKyAgICAvLyBTZWUgaGVyZSBmb3IgZGlzcGxheSB2YWx1ZXM6
IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvQ1NTL2Rpc3BsYXkKKyAg
ICByZGlzcGxheXN3YXAgPSAvXihub25lfHRhYmxlKD8hLWNbZWFdKS4rKS8sCisgICAgY3NzU2hv
dyA9IHsgcG9zaXRpb246ICJhYnNvbHV0ZSIsIHZpc2liaWxpdHk6ICJoaWRkZW4iLCBkaXNwbGF5
OiAiYmxvY2siIH0sCisgICAgY3NzTm9ybWFsVHJhbnNmb3JtID0geworICAgICAgICBsZXR0ZXJT
cGFjaW5nOiAiMCIsCisgICAgICAgIGZvbnRXZWlnaHQ6ICI0MDAiCisgICAgfSwKKworICAgIGNz
c1ByZWZpeGVzID0gWyAiV2Via2l0IiwgIk1veiIsICJtcyIgXSwKKyAgICBlbXB0eVN0eWxlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggImRpdiIgKS5zdHlsZTsKKworLy8gUmV0dXJuIGEgY3Nz
IHByb3BlcnR5IG1hcHBlZCB0byBhIHBvdGVudGlhbGx5IHZlbmRvciBwcmVmaXhlZCBwcm9wZXJ0
eQorZnVuY3Rpb24gdmVuZG9yUHJvcE5hbWUoIG5hbWUgKSB7CisKKyAgICAvLyBTaG9ydGN1dCBm
b3IgbmFtZXMgdGhhdCBhcmUgbm90IHZlbmRvciBwcmVmaXhlZAorICAgIGlmICggbmFtZSBpbiBl
bXB0eVN0eWxlICkgeworICAgICAgICByZXR1cm4gbmFtZTsKKyAgICB9CisKKyAgICAvLyBDaGVj
ayBmb3IgdmVuZG9yIHByZWZpeGVkIG5hbWVzCisgICAgdmFyIGNhcE5hbWUgPSBuYW1lWyAwIF0u
dG9VcHBlckNhc2UoKSArIG5hbWUuc2xpY2UoIDEgKSwKKyAgICAgICAgaSA9IGNzc1ByZWZpeGVz
Lmxlbmd0aDsKKworICAgIHdoaWxlICggaS0tICkgeworICAgICAgICBuYW1lID0gY3NzUHJlZml4
ZXNbIGkgXSArIGNhcE5hbWU7CisgICAgICAgIGlmICggbmFtZSBpbiBlbXB0eVN0eWxlICkgewor
ICAgICAgICAgICAgcmV0dXJuIG5hbWU7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9u
IHNldFBvc2l0aXZlTnVtYmVyKCBlbGVtLCB2YWx1ZSwgc3VidHJhY3QgKSB7CisKKyAgICAvLyBB
bnkgcmVsYXRpdmUgKCsvLSkgdmFsdWVzIGhhdmUgYWxyZWFkeSBiZWVuCisgICAgLy8gbm9ybWFs
aXplZCBhdCB0aGlzIHBvaW50CisgICAgdmFyIG1hdGNoZXMgPSByY3NzTnVtLmV4ZWMoIHZhbHVl
ICk7CisgICAgcmV0dXJuIG1hdGNoZXMgPworCisgICAgICAgIC8vIEd1YXJkIGFnYWluc3QgdW5k
ZWZpbmVkICJzdWJ0cmFjdCIsIGUuZy4sIHdoZW4gdXNlZCBhcyBpbiBjc3NIb29rcworICAgICAg
ICBNYXRoLm1heCggMCwgbWF0Y2hlc1sgMiBdIC0gKCBzdWJ0cmFjdCB8fCAwICkgKSArICggbWF0
Y2hlc1sgMyBdIHx8ICJweCIgKSA6CisgICAgICAgIHZhbHVlOworfQorCitmdW5jdGlvbiBhdWdt
ZW50V2lkdGhPckhlaWdodCggZWxlbSwgbmFtZSwgZXh0cmEsIGlzQm9yZGVyQm94LCBzdHlsZXMg
KSB7CisgICAgdmFyIGksCisgICAgICAgIHZhbCA9IDA7CisKKyAgICAvLyBJZiB3ZSBhbHJlYWR5
IGhhdmUgdGhlIHJpZ2h0IG1lYXN1cmVtZW50LCBhdm9pZCBhdWdtZW50YXRpb24KKyAgICBpZiAo
IGV4dHJhID09PSAoIGlzQm9yZGVyQm94ID8gImJvcmRlciIgOiAiY29udGVudCIgKSApIHsKKyAg
ICAgICAgaSA9IDQ7CisKKyAgICAvLyBPdGhlcndpc2UgaW5pdGlhbGl6ZSBmb3IgaG9yaXpvbnRh
bCBvciB2ZXJ0aWNhbCBwcm9wZXJ0aWVzCisgICAgfSBlbHNlIHsKKyAgICAgICAgaSA9IG5hbWUg
PT09ICJ3aWR0aCIgPyAxIDogMDsKKyAgICB9CisKKyAgICBmb3IgKCA7IGkgPCA0OyBpICs9IDIg
KSB7CisKKyAgICAgICAgLy8gQm90aCBib3ggbW9kZWxzIGV4Y2x1ZGUgbWFyZ2luLCBzbyBhZGQg
aXQgaWYgd2Ugd2FudCBpdAorICAgICAgICBpZiAoIGV4dHJhID09PSAibWFyZ2luIiApIHsKKyAg
ICAgICAgICAgIHZhbCArPSBqUXVlcnkuY3NzKCBlbGVtLCBleHRyYSArIGNzc0V4cGFuZFsgaSBd
LCB0cnVlLCBzdHlsZXMgKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICggaXNCb3JkZXJCb3gg
KSB7CisKKyAgICAgICAgICAgIC8vIGJvcmRlci1ib3ggaW5jbHVkZXMgcGFkZGluZywgc28gcmVt
b3ZlIGl0IGlmIHdlIHdhbnQgY29udGVudAorICAgICAgICAgICAgaWYgKCBleHRyYSA9PT0gImNv
bnRlbnQiICkgeworICAgICAgICAgICAgICAgIHZhbCAtPSBqUXVlcnkuY3NzKCBlbGVtLCAicGFk
ZGluZyIgKyBjc3NFeHBhbmRbIGkgXSwgdHJ1ZSwgc3R5bGVzICk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIC8vIEF0IHRoaXMgcG9pbnQsIGV4dHJhIGlzbid0IGJvcmRlciBub3IgbWFy
Z2luLCBzbyByZW1vdmUgYm9yZGVyCisgICAgICAgICAgICBpZiAoIGV4dHJhICE9PSAibWFyZ2lu
IiApIHsKKyAgICAgICAgICAgICAgICB2YWwgLT0galF1ZXJ5LmNzcyggZWxlbSwgImJvcmRlciIg
KyBjc3NFeHBhbmRbIGkgXSArICJXaWR0aCIsIHRydWUsIHN0eWxlcyApOworICAgICAgICAgICAg
fQorICAgICAgICB9IGVsc2UgeworCisgICAgICAgICAgICAvLyBBdCB0aGlzIHBvaW50LCBleHRy
YSBpc24ndCBjb250ZW50LCBzbyBhZGQgcGFkZGluZworICAgICAgICAgICAgdmFsICs9IGpRdWVy
eS5jc3MoIGVsZW0sICJwYWRkaW5nIiArIGNzc0V4cGFuZFsgaSBdLCB0cnVlLCBzdHlsZXMgKTsK
KworICAgICAgICAgICAgLy8gQXQgdGhpcyBwb2ludCwgZXh0cmEgaXNuJ3QgY29udGVudCBub3Ig
cGFkZGluZywgc28gYWRkIGJvcmRlcgorICAgICAgICAgICAgaWYgKCBleHRyYSAhPT0gInBhZGRp
bmciICkgeworICAgICAgICAgICAgICAgIHZhbCArPSBqUXVlcnkuY3NzKCBlbGVtLCAiYm9yZGVy
IiArIGNzc0V4cGFuZFsgaSBdICsgIldpZHRoIiwgdHJ1ZSwgc3R5bGVzICk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gdmFsOworfQorCitmdW5jdGlvbiBn
ZXRXaWR0aE9ySGVpZ2h0KCBlbGVtLCBuYW1lLCBleHRyYSApIHsKKworICAgIC8vIFN0YXJ0IHdp
dGggb2Zmc2V0IHByb3BlcnR5LCB3aGljaCBpcyBlcXVpdmFsZW50IHRvIHRoZSBib3JkZXItYm94
IHZhbHVlCisgICAgdmFyIHZhbCwKKyAgICAgICAgdmFsdWVJc0JvcmRlckJveCA9IHRydWUsCisg
ICAgICAgIHN0eWxlcyA9IGdldFN0eWxlcyggZWxlbSApLAorICAgICAgICBpc0JvcmRlckJveCA9
IGpRdWVyeS5jc3MoIGVsZW0sICJib3hTaXppbmciLCBmYWxzZSwgc3R5bGVzICkgPT09ICJib3Jk
ZXItYm94IjsKKworICAgIC8vIFN1cHBvcnQ6IElFIDw9MTEgb25seQorICAgIC8vIFJ1bm5pbmcg
Z2V0Qm91bmRpbmdDbGllbnRSZWN0IG9uIGEgZGlzY29ubmVjdGVkIG5vZGUKKyAgICAvLyBpbiBJ
RSB0aHJvd3MgYW4gZXJyb3IuCisgICAgaWYgKCBlbGVtLmdldENsaWVudFJlY3RzKCkubGVuZ3Ro
ICkgeworICAgICAgICB2YWwgPSBlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpWyBuYW1lIF07
CisgICAgfQorCisgICAgLy8gU29tZSBub24taHRtbCBlbGVtZW50cyByZXR1cm4gdW5kZWZpbmVk
IGZvciBvZmZzZXRXaWR0aCwgc28gY2hlY2sgZm9yIG51bGwvdW5kZWZpbmVkCisgICAgLy8gc3Zn
IC0gaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQ5Mjg1Cisg
ICAgLy8gTWF0aE1MIC0gaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDkxNjY4CisgICAgaWYgKCB2YWwgPD0gMCB8fCB2YWwgPT0gbnVsbCApIHsKKworICAgICAg
ICAvLyBGYWxsIGJhY2sgdG8gY29tcHV0ZWQgdGhlbiB1bmNvbXB1dGVkIGNzcyBpZiBuZWNlc3Nh
cnkKKyAgICAgICAgdmFsID0gY3VyQ1NTKCBlbGVtLCBuYW1lLCBzdHlsZXMgKTsKKyAgICAgICAg
aWYgKCB2YWwgPCAwIHx8IHZhbCA9PSBudWxsICkgeworICAgICAgICAgICAgdmFsID0gZWxlbS5z
dHlsZVsgbmFtZSBdOworICAgICAgICB9CisKKyAgICAgICAgLy8gQ29tcHV0ZWQgdW5pdCBpcyBu
b3QgcGl4ZWxzLiBTdG9wIGhlcmUgYW5kIHJldHVybi4KKyAgICAgICAgaWYgKCBybnVtbm9ucHgu
dGVzdCggdmFsICkgKSB7CisgICAgICAgICAgICByZXR1cm4gdmFsOworICAgICAgICB9CisKKyAg
ICAgICAgLy8gQ2hlY2sgZm9yIHN0eWxlIGluIGNhc2UgYSBicm93c2VyIHdoaWNoIHJldHVybnMg
dW5yZWxpYWJsZSB2YWx1ZXMKKyAgICAgICAgLy8gZm9yIGdldENvbXB1dGVkU3R5bGUgc2lsZW50
bHkgZmFsbHMgYmFjayB0byB0aGUgcmVsaWFibGUgZWxlbS5zdHlsZQorICAgICAgICB2YWx1ZUlz
Qm9yZGVyQm94ID0gaXNCb3JkZXJCb3ggJiYKKyAgICAgICAgICAgICggc3VwcG9ydC5ib3hTaXpp
bmdSZWxpYWJsZSgpIHx8IHZhbCA9PT0gZWxlbS5zdHlsZVsgbmFtZSBdICk7CisKKyAgICAgICAg
Ly8gTm9ybWFsaXplICIiLCBhdXRvLCBhbmQgcHJlcGFyZSBmb3IgZXh0cmEKKyAgICAgICAgdmFs
ID0gcGFyc2VGbG9hdCggdmFsICkgfHwgMDsKKyAgICB9CisKKyAgICAvLyBVc2UgdGhlIGFjdGl2
ZSBib3gtc2l6aW5nIG1vZGVsIHRvIGFkZC9zdWJ0cmFjdCBpcnJlbGV2YW50IHN0eWxlcworICAg
IHJldHVybiAoIHZhbCArCisgICAgICAgIGF1Z21lbnRXaWR0aE9ySGVpZ2h0KAorICAgICAgICAg
ICAgZWxlbSwKKyAgICAgICAgICAgIG5hbWUsCisgICAgICAgICAgICBleHRyYSB8fCAoIGlzQm9y
ZGVyQm94ID8gImJvcmRlciIgOiAiY29udGVudCIgKSwKKyAgICAgICAgICAgIHZhbHVlSXNCb3Jk
ZXJCb3gsCisgICAgICAgICAgICBzdHlsZXMKKyAgICAgICAgKQorICAgICkgKyAicHgiOworfQor
CitqUXVlcnkuZXh0ZW5kKCB7CisKKyAgICAvLyBBZGQgaW4gc3R5bGUgcHJvcGVydHkgaG9va3Mg
Zm9yIG92ZXJyaWRpbmcgdGhlIGRlZmF1bHQKKyAgICAvLyBiZWhhdmlvciBvZiBnZXR0aW5nIGFu
ZCBzZXR0aW5nIGEgc3R5bGUgcHJvcGVydHkKKyAgICBjc3NIb29rczogeworICAgICAgICBvcGFj
aXR5OiB7CisgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCBlbGVtLCBjb21wdXRlZCApIHsKKyAg
ICAgICAgICAgICAgICBpZiAoIGNvbXB1dGVkICkgeworCisgICAgICAgICAgICAgICAgICAgIC8v
IFdlIHNob3VsZCBhbHdheXMgZ2V0IGEgbnVtYmVyIGJhY2sgZnJvbSBvcGFjaXR5CisgICAgICAg
ICAgICAgICAgICAgIHZhciByZXQgPSBjdXJDU1MoIGVsZW0sICJvcGFjaXR5IiApOworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gcmV0ID09PSAiIiA/ICIxIiA6IHJldDsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9LAorCisgICAgLy8gRG9uJ3Qg
YXV0b21hdGljYWxseSBhZGQgInB4IiB0byB0aGVzZSBwb3NzaWJseS11bml0bGVzcyBwcm9wZXJ0
aWVzCisgICAgY3NzTnVtYmVyOiB7CisgICAgICAgICJhbmltYXRpb25JdGVyYXRpb25Db3VudCI6
IHRydWUsCisgICAgICAgICJjb2x1bW5Db3VudCI6IHRydWUsCisgICAgICAgICJmaWxsT3BhY2l0
eSI6IHRydWUsCisgICAgICAgICJmbGV4R3JvdyI6IHRydWUsCisgICAgICAgICJmbGV4U2hyaW5r
IjogdHJ1ZSwKKyAgICAgICAgImZvbnRXZWlnaHQiOiB0cnVlLAorICAgICAgICAibGluZUhlaWdo
dCI6IHRydWUsCisgICAgICAgICJvcGFjaXR5IjogdHJ1ZSwKKyAgICAgICAgIm9yZGVyIjogdHJ1
ZSwKKyAgICAgICAgIm9ycGhhbnMiOiB0cnVlLAorICAgICAgICAid2lkb3dzIjogdHJ1ZSwKKyAg
ICAgICAgInpJbmRleCI6IHRydWUsCisgICAgICAgICJ6b29tIjogdHJ1ZQorICAgIH0sCisKKyAg
ICAvLyBBZGQgaW4gcHJvcGVydGllcyB3aG9zZSBuYW1lcyB5b3Ugd2lzaCB0byBmaXggYmVmb3Jl
CisgICAgLy8gc2V0dGluZyBvciBnZXR0aW5nIHRoZSB2YWx1ZQorICAgIGNzc1Byb3BzOiB7Cisg
ICAgICAgICJmbG9hdCI6ICJjc3NGbG9hdCIKKyAgICB9LAorCisgICAgLy8gR2V0IGFuZCBzZXQg
dGhlIHN0eWxlIHByb3BlcnR5IG9uIGEgRE9NIE5vZGUKKyAgICBzdHlsZTogZnVuY3Rpb24oIGVs
ZW0sIG5hbWUsIHZhbHVlLCBleHRyYSApIHsKKworICAgICAgICAvLyBEb24ndCBzZXQgc3R5bGVz
IG9uIHRleHQgYW5kIGNvbW1lbnQgbm9kZXMKKyAgICAgICAgaWYgKCAhZWxlbSB8fCBlbGVtLm5v
ZGVUeXBlID09PSAzIHx8IGVsZW0ubm9kZVR5cGUgPT09IDggfHwgIWVsZW0uc3R5bGUgKSB7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBNYWtlIHN1cmUgdGhh
dCB3ZSdyZSB3b3JraW5nIHdpdGggdGhlIHJpZ2h0IG5hbWUKKyAgICAgICAgdmFyIHJldCwgdHlw
ZSwgaG9va3MsCisgICAgICAgICAgICBvcmlnTmFtZSA9IGpRdWVyeS5jYW1lbENhc2UoIG5hbWUg
KSwKKyAgICAgICAgICAgIHN0eWxlID0gZWxlbS5zdHlsZTsKKworICAgICAgICBuYW1lID0galF1
ZXJ5LmNzc1Byb3BzWyBvcmlnTmFtZSBdIHx8CisgICAgICAgICAgICAoIGpRdWVyeS5jc3NQcm9w
c1sgb3JpZ05hbWUgXSA9IHZlbmRvclByb3BOYW1lKCBvcmlnTmFtZSApIHx8IG9yaWdOYW1lICk7
CisKKyAgICAgICAgLy8gR2V0cyBob29rIGZvciB0aGUgcHJlZml4ZWQgdmVyc2lvbiwgdGhlbiB1
bnByZWZpeGVkIHZlcnNpb24KKyAgICAgICAgaG9va3MgPSBqUXVlcnkuY3NzSG9va3NbIG5hbWUg
XSB8fCBqUXVlcnkuY3NzSG9va3NbIG9yaWdOYW1lIF07CisKKyAgICAgICAgLy8gQ2hlY2sgaWYg
d2UncmUgc2V0dGluZyBhIHZhbHVlCisgICAgICAgIGlmICggdmFsdWUgIT09IHVuZGVmaW5lZCAp
IHsKKyAgICAgICAgICAgIHR5cGUgPSB0eXBlb2YgdmFsdWU7CisKKyAgICAgICAgICAgIC8vIENv
bnZlcnQgIis9IiBvciAiLT0iIHRvIHJlbGF0aXZlIG51bWJlcnMgKCM3MzQ1KQorICAgICAgICAg
ICAgaWYgKCB0eXBlID09PSAic3RyaW5nIiAmJiAoIHJldCA9IHJjc3NOdW0uZXhlYyggdmFsdWUg
KSApICYmIHJldFsgMSBdICkgeworICAgICAgICAgICAgICAgIHZhbHVlID0gYWRqdXN0Q1NTKCBl
bGVtLCBuYW1lLCByZXQgKTsKKworICAgICAgICAgICAgICAgIC8vIEZpeGVzIGJ1ZyAjOTIzNwor
ICAgICAgICAgICAgICAgIHR5cGUgPSAibnVtYmVyIjsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgbnVsbCBhbmQgTmFOIHZhbHVlcyBhcmVuJ3Qgc2V0ICgj
NzExNikKKyAgICAgICAgICAgIGlmICggdmFsdWUgPT0gbnVsbCB8fCB2YWx1ZSAhPT0gdmFsdWUg
KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAvLyBJZiBhIG51bWJlciB3YXMgcGFzc2VkIGluLCBhZGQgdGhlIHVuaXQgKGV4Y2VwdCBmb3Ig
Y2VydGFpbiBDU1MgcHJvcGVydGllcykKKyAgICAgICAgICAgIGlmICggdHlwZSA9PT0gIm51bWJl
ciIgKSB7CisgICAgICAgICAgICAgICAgdmFsdWUgKz0gcmV0ICYmIHJldFsgMyBdIHx8ICggalF1
ZXJ5LmNzc051bWJlclsgb3JpZ05hbWUgXSA/ICIiIDogInB4IiApOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAvLyBiYWNrZ3JvdW5kLSogcHJvcHMgYWZmZWN0IG9yaWdpbmFsIGNsb25l
J3MgdmFsdWVzCisgICAgICAgICAgICBpZiAoICFzdXBwb3J0LmNsZWFyQ2xvbmVTdHlsZSAmJiB2
YWx1ZSA9PT0gIiIgJiYgbmFtZS5pbmRleE9mKCAiYmFja2dyb3VuZCIgKSA9PT0gMCApIHsKKyAg
ICAgICAgICAgICAgICBzdHlsZVsgbmFtZSBdID0gImluaGVyaXQiOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAvLyBJZiBhIGhvb2sgd2FzIHByb3ZpZGVkLCB1c2UgdGhhdCB2YWx1ZSwg
b3RoZXJ3aXNlIGp1c3Qgc2V0IHRoZSBzcGVjaWZpZWQgdmFsdWUKKyAgICAgICAgICAgIGlmICgg
IWhvb2tzIHx8ICEoICJzZXQiIGluIGhvb2tzICkgfHwKKyAgICAgICAgICAgICAgICAoIHZhbHVl
ID0gaG9va3Muc2V0KCBlbGVtLCB2YWx1ZSwgZXh0cmEgKSApICE9PSB1bmRlZmluZWQgKSB7CisK
KyAgICAgICAgICAgICAgICBzdHlsZVsgbmFtZSBdID0gdmFsdWU7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgfSBlbHNlIHsKKworICAgICAgICAgICAgLy8gSWYgYSBob29rIHdhcyBwcm92aWRl
ZCBnZXQgdGhlIG5vbi1jb21wdXRlZCB2YWx1ZSBmcm9tIHRoZXJlCisgICAgICAgICAgICBpZiAo
IGhvb2tzICYmICJnZXQiIGluIGhvb2tzICYmCisgICAgICAgICAgICAgICAgKCByZXQgPSBob29r
cy5nZXQoIGVsZW0sIGZhbHNlLCBleHRyYSApICkgIT09IHVuZGVmaW5lZCApIHsKKworICAgICAg
ICAgICAgICAgIHJldHVybiByZXQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIE90
aGVyd2lzZSBqdXN0IGdldCB0aGUgdmFsdWUgZnJvbSB0aGUgc3R5bGUgb2JqZWN0CisgICAgICAg
ICAgICByZXR1cm4gc3R5bGVbIG5hbWUgXTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICBjc3M6
IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBleHRyYSwgc3R5bGVzICkgeworICAgICAgICB2YXIgdmFs
LCBudW0sIGhvb2tzLAorICAgICAgICAgICAgb3JpZ05hbWUgPSBqUXVlcnkuY2FtZWxDYXNlKCBu
YW1lICk7CisKKyAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgd2UncmUgd29ya2luZyB3aXRoIHRo
ZSByaWdodCBuYW1lCisgICAgICAgIG5hbWUgPSBqUXVlcnkuY3NzUHJvcHNbIG9yaWdOYW1lIF0g
fHwKKyAgICAgICAgICAgICggalF1ZXJ5LmNzc1Byb3BzWyBvcmlnTmFtZSBdID0gdmVuZG9yUHJv
cE5hbWUoIG9yaWdOYW1lICkgfHwgb3JpZ05hbWUgKTsKKworICAgICAgICAvLyBUcnkgcHJlZml4
ZWQgbmFtZSBmb2xsb3dlZCBieSB0aGUgdW5wcmVmaXhlZCBuYW1lCisgICAgICAgIGhvb2tzID0g
alF1ZXJ5LmNzc0hvb2tzWyBuYW1lIF0gfHwgalF1ZXJ5LmNzc0hvb2tzWyBvcmlnTmFtZSBdOwor
CisgICAgICAgIC8vIElmIGEgaG9vayB3YXMgcHJvdmlkZWQgZ2V0IHRoZSBjb21wdXRlZCB2YWx1
ZSBmcm9tIHRoZXJlCisgICAgICAgIGlmICggaG9va3MgJiYgImdldCIgaW4gaG9va3MgKSB7Cisg
ICAgICAgICAgICB2YWwgPSBob29rcy5nZXQoIGVsZW0sIHRydWUsIGV4dHJhICk7CisgICAgICAg
IH0KKworICAgICAgICAvLyBPdGhlcndpc2UsIGlmIGEgd2F5IHRvIGdldCB0aGUgY29tcHV0ZWQg
dmFsdWUgZXhpc3RzLCB1c2UgdGhhdAorICAgICAgICBpZiAoIHZhbCA9PT0gdW5kZWZpbmVkICkg
eworICAgICAgICAgICAgdmFsID0gY3VyQ1NTKCBlbGVtLCBuYW1lLCBzdHlsZXMgKTsKKyAgICAg
ICAgfQorCisgICAgICAgIC8vIENvbnZlcnQgIm5vcm1hbCIgdG8gY29tcHV0ZWQgdmFsdWUKKyAg
ICAgICAgaWYgKCB2YWwgPT09ICJub3JtYWwiICYmIG5hbWUgaW4gY3NzTm9ybWFsVHJhbnNmb3Jt
ICkgeworICAgICAgICAgICAgdmFsID0gY3NzTm9ybWFsVHJhbnNmb3JtWyBuYW1lIF07CisgICAg
ICAgIH0KKworICAgICAgICAvLyBNYWtlIG51bWVyaWMgaWYgZm9yY2VkIG9yIGEgcXVhbGlmaWVy
IHdhcyBwcm92aWRlZCBhbmQgdmFsIGxvb2tzIG51bWVyaWMKKyAgICAgICAgaWYgKCBleHRyYSA9
PT0gIiIgfHwgZXh0cmEgKSB7CisgICAgICAgICAgICBudW0gPSBwYXJzZUZsb2F0KCB2YWwgKTsK
KyAgICAgICAgICAgIHJldHVybiBleHRyYSA9PT0gdHJ1ZSB8fCBpc0Zpbml0ZSggbnVtICkgPyBu
dW0gfHwgMCA6IHZhbDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdmFsOworICAgIH0KK30g
KTsKKworalF1ZXJ5LmVhY2goIFsgImhlaWdodCIsICJ3aWR0aCIgXSwgZnVuY3Rpb24oIGksIG5h
bWUgKSB7CisgICAgalF1ZXJ5LmNzc0hvb2tzWyBuYW1lIF0gPSB7CisgICAgICAgIGdldDogZnVu
Y3Rpb24oIGVsZW0sIGNvbXB1dGVkLCBleHRyYSApIHsKKyAgICAgICAgICAgIGlmICggY29tcHV0
ZWQgKSB7CisKKyAgICAgICAgICAgICAgICAvLyBDZXJ0YWluIGVsZW1lbnRzIGNhbiBoYXZlIGRp
bWVuc2lvbiBpbmZvIGlmIHdlIGludmlzaWJseSBzaG93IHRoZW0KKyAgICAgICAgICAgICAgICAv
LyBidXQgaXQgbXVzdCBoYXZlIGEgY3VycmVudCBkaXNwbGF5IHN0eWxlIHRoYXQgd291bGQgYmVu
ZWZpdAorICAgICAgICAgICAgICAgIHJldHVybiByZGlzcGxheXN3YXAudGVzdCggalF1ZXJ5LmNz
cyggZWxlbSwgImRpc3BsYXkiICkgKSAmJgorCisgICAgICAgICAgICAgICAgICAgIC8vIFN1cHBv
cnQ6IFNhZmFyaSA4KworICAgICAgICAgICAgICAgICAgICAvLyBUYWJsZSBjb2x1bW5zIGluIFNh
ZmFyaSBoYXZlIG5vbi16ZXJvIG9mZnNldFdpZHRoICYgemVybworICAgICAgICAgICAgICAgICAg
ICAvLyBnZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCB1bmxlc3MgZGlzcGxheSBpcyBjaGFu
Z2VkLgorICAgICAgICAgICAgICAgICAgICAvLyBTdXBwb3J0OiBJRSA8PTExIG9ubHkKKyAgICAg
ICAgICAgICAgICAgICAgLy8gUnVubmluZyBnZXRCb3VuZGluZ0NsaWVudFJlY3Qgb24gYSBkaXNj
b25uZWN0ZWQgbm9kZQorICAgICAgICAgICAgICAgICAgICAvLyBpbiBJRSB0aHJvd3MgYW4gZXJy
b3IuCisgICAgICAgICAgICAgICAgICAgICggIWVsZW0uZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGgg
fHwgIWVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggKSA/CisgICAgICAgICAgICAg
ICAgICAgICAgICBzd2FwKCBlbGVtLCBjc3NTaG93LCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0V2lkdGhPckhlaWdodCggZWxlbSwgbmFtZSwgZXh0
cmEgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gKSA6CisgICAgICAgICAgICAgICAgICAg
ICAgICBnZXRXaWR0aE9ySGVpZ2h0KCBlbGVtLCBuYW1lLCBleHRyYSApOworICAgICAgICAgICAg
fQorICAgICAgICB9LAorCisgICAgICAgIHNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlLCBleHRy
YSApIHsKKyAgICAgICAgICAgIHZhciBtYXRjaGVzLAorICAgICAgICAgICAgICAgIHN0eWxlcyA9
IGV4dHJhICYmIGdldFN0eWxlcyggZWxlbSApLAorICAgICAgICAgICAgICAgIHN1YnRyYWN0ID0g
ZXh0cmEgJiYgYXVnbWVudFdpZHRoT3JIZWlnaHQoCisgICAgICAgICAgICAgICAgICAgIGVsZW0s
CisgICAgICAgICAgICAgICAgICAgIG5hbWUsCisgICAgICAgICAgICAgICAgICAgIGV4dHJhLAor
ICAgICAgICAgICAgICAgICAgICBqUXVlcnkuY3NzKCBlbGVtLCAiYm94U2l6aW5nIiwgZmFsc2Us
IHN0eWxlcyApID09PSAiYm9yZGVyLWJveCIsCisgICAgICAgICAgICAgICAgICAgIHN0eWxlcwor
ICAgICAgICAgICAgICAgICk7CisKKyAgICAgICAgICAgIC8vIENvbnZlcnQgdG8gcGl4ZWxzIGlm
IHZhbHVlIGFkanVzdG1lbnQgaXMgbmVlZGVkCisgICAgICAgICAgICBpZiAoIHN1YnRyYWN0ICYm
ICggbWF0Y2hlcyA9IHJjc3NOdW0uZXhlYyggdmFsdWUgKSApICYmCisgICAgICAgICAgICAgICAg
KCBtYXRjaGVzWyAzIF0gfHwgInB4IiApICE9PSAicHgiICkgeworCisgICAgICAgICAgICAgICAg
ZWxlbS5zdHlsZVsgbmFtZSBdID0gdmFsdWU7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBqUXVl
cnkuY3NzKCBlbGVtLCBuYW1lICk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVy
biBzZXRQb3NpdGl2ZU51bWJlciggZWxlbSwgdmFsdWUsIHN1YnRyYWN0ICk7CisgICAgICAgIH0K
KyAgICB9OworfSApOworCitqUXVlcnkuY3NzSG9va3MubWFyZ2luTGVmdCA9IGFkZEdldEhvb2tJ
Ziggc3VwcG9ydC5yZWxpYWJsZU1hcmdpbkxlZnQsCisgICAgZnVuY3Rpb24oIGVsZW0sIGNvbXB1
dGVkICkgeworICAgICAgICBpZiAoIGNvbXB1dGVkICkgeworICAgICAgICAgICAgcmV0dXJuICgg
cGFyc2VGbG9hdCggY3VyQ1NTKCBlbGVtLCAibWFyZ2luTGVmdCIgKSApIHx8CisgICAgICAgICAg
ICAgICAgZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0IC0KKyAgICAgICAgICAgICAg
ICAgICAgc3dhcCggZWxlbSwgeyBtYXJnaW5MZWZ0OiAwIH0sIGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVm
dDsKKyAgICAgICAgICAgICAgICAgICAgfSApCisgICAgICAgICAgICAgICAgKSArICJweCI7Cisg
ICAgICAgIH0KKyAgICB9CispOworCisvLyBUaGVzZSBob29rcyBhcmUgdXNlZCBieSBhbmltYXRl
IHRvIGV4cGFuZCBwcm9wZXJ0aWVzCitqUXVlcnkuZWFjaCggeworICAgIG1hcmdpbjogIiIsCisg
ICAgcGFkZGluZzogIiIsCisgICAgYm9yZGVyOiAiV2lkdGgiCit9LCBmdW5jdGlvbiggcHJlZml4
LCBzdWZmaXggKSB7CisgICAgalF1ZXJ5LmNzc0hvb2tzWyBwcmVmaXggKyBzdWZmaXggXSA9IHsK
KyAgICAgICAgZXhwYW5kOiBmdW5jdGlvbiggdmFsdWUgKSB7CisgICAgICAgICAgICB2YXIgaSA9
IDAsCisgICAgICAgICAgICAgICAgZXhwYW5kZWQgPSB7fSwKKworICAgICAgICAgICAgICAgIC8v
IEFzc3VtZXMgYSBzaW5nbGUgbnVtYmVyIGlmIG5vdCBhIHN0cmluZworICAgICAgICAgICAgICAg
IHBhcnRzID0gdHlwZW9mIHZhbHVlID09PSAic3RyaW5nIiA/IHZhbHVlLnNwbGl0KCAiICIgKSA6
IFsgdmFsdWUgXTsKKworICAgICAgICAgICAgZm9yICggOyBpIDwgNDsgaSsrICkgeworICAgICAg
ICAgICAgICAgIGV4cGFuZGVkWyBwcmVmaXggKyBjc3NFeHBhbmRbIGkgXSArIHN1ZmZpeCBdID0K
KyAgICAgICAgICAgICAgICAgICAgcGFydHNbIGkgXSB8fCBwYXJ0c1sgaSAtIDIgXSB8fCBwYXJ0
c1sgMCBdOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gZXhwYW5kZWQ7Cisg
ICAgICAgIH0KKyAgICB9OworCisgICAgaWYgKCAhcm1hcmdpbi50ZXN0KCBwcmVmaXggKSApIHsK
KyAgICAgICAgalF1ZXJ5LmNzc0hvb2tzWyBwcmVmaXggKyBzdWZmaXggXS5zZXQgPSBzZXRQb3Np
dGl2ZU51bWJlcjsKKyAgICB9Cit9ICk7CisKK2pRdWVyeS5mbi5leHRlbmQoIHsKKyAgICBjc3M6
IGZ1bmN0aW9uKCBuYW1lLCB2YWx1ZSApIHsKKyAgICAgICAgcmV0dXJuIGFjY2VzcyggdGhpcywg
ZnVuY3Rpb24oIGVsZW0sIG5hbWUsIHZhbHVlICkgeworICAgICAgICAgICAgdmFyIHN0eWxlcywg
bGVuLAorICAgICAgICAgICAgICAgIG1hcCA9IHt9LAorICAgICAgICAgICAgICAgIGkgPSAwOwor
CisgICAgICAgICAgICBpZiAoIGpRdWVyeS5pc0FycmF5KCBuYW1lICkgKSB7CisgICAgICAgICAg
ICAgICAgc3R5bGVzID0gZ2V0U3R5bGVzKCBlbGVtICk7CisgICAgICAgICAgICAgICAgbGVuID0g
bmFtZS5sZW5ndGg7CisKKyAgICAgICAgICAgICAgICBmb3IgKCA7IGkgPCBsZW47IGkrKyApIHsK
KyAgICAgICAgICAgICAgICAgICAgbWFwWyBuYW1lWyBpIF0gXSA9IGpRdWVyeS5jc3MoIGVsZW0s
IG5hbWVbIGkgXSwgZmFsc2UsIHN0eWxlcyApOworICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgIHJldHVybiBtYXA7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVy
biB2YWx1ZSAhPT0gdW5kZWZpbmVkID8KKyAgICAgICAgICAgICAgICBqUXVlcnkuc3R5bGUoIGVs
ZW0sIG5hbWUsIHZhbHVlICkgOgorICAgICAgICAgICAgICAgIGpRdWVyeS5jc3MoIGVsZW0sIG5h
bWUgKTsKKyAgICAgICAgfSwgbmFtZSwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggPiAxICk7Cisg
ICAgfQorfSApOworCisKK2Z1bmN0aW9uIFR3ZWVuKCBlbGVtLCBvcHRpb25zLCBwcm9wLCBlbmQs
IGVhc2luZyApIHsKKyAgICByZXR1cm4gbmV3IFR3ZWVuLnByb3RvdHlwZS5pbml0KCBlbGVtLCBv
cHRpb25zLCBwcm9wLCBlbmQsIGVhc2luZyApOworfQoralF1ZXJ5LlR3ZWVuID0gVHdlZW47CisK
K1R3ZWVuLnByb3RvdHlwZSA9IHsKKyAgICBjb25zdHJ1Y3RvcjogVHdlZW4sCisgICAgaW5pdDog
ZnVuY3Rpb24oIGVsZW0sIG9wdGlvbnMsIHByb3AsIGVuZCwgZWFzaW5nLCB1bml0ICkgeworICAg
ICAgICB0aGlzLmVsZW0gPSBlbGVtOworICAgICAgICB0aGlzLnByb3AgPSBwcm9wOworICAgICAg
ICB0aGlzLmVhc2luZyA9IGVhc2luZyB8fCBqUXVlcnkuZWFzaW5nLl9kZWZhdWx0OworICAgICAg
ICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zOworICAgICAgICB0aGlzLnN0YXJ0ID0gdGhpcy5ub3cg
PSB0aGlzLmN1cigpOworICAgICAgICB0aGlzLmVuZCA9IGVuZDsKKyAgICAgICAgdGhpcy51bml0
ID0gdW5pdCB8fCAoIGpRdWVyeS5jc3NOdW1iZXJbIHByb3AgXSA/ICIiIDogInB4IiApOworICAg
IH0sCisgICAgY3VyOiBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIGhvb2tzID0gVHdlZW4ucHJv
cEhvb2tzWyB0aGlzLnByb3AgXTsKKworICAgICAgICByZXR1cm4gaG9va3MgJiYgaG9va3MuZ2V0
ID8KKyAgICAgICAgICAgIGhvb2tzLmdldCggdGhpcyApIDoKKyAgICAgICAgICAgIFR3ZWVuLnBy
b3BIb29rcy5fZGVmYXVsdC5nZXQoIHRoaXMgKTsKKyAgICB9LAorICAgIHJ1bjogZnVuY3Rpb24o
IHBlcmNlbnQgKSB7CisgICAgICAgIHZhciBlYXNlZCwKKyAgICAgICAgICAgIGhvb2tzID0gVHdl
ZW4ucHJvcEhvb2tzWyB0aGlzLnByb3AgXTsKKworICAgICAgICBpZiAoIHRoaXMub3B0aW9ucy5k
dXJhdGlvbiApIHsKKyAgICAgICAgICAgIHRoaXMucG9zID0gZWFzZWQgPSBqUXVlcnkuZWFzaW5n
WyB0aGlzLmVhc2luZyBdKAorICAgICAgICAgICAgICAgIHBlcmNlbnQsIHRoaXMub3B0aW9ucy5k
dXJhdGlvbiAqIHBlcmNlbnQsIDAsIDEsIHRoaXMub3B0aW9ucy5kdXJhdGlvbgorICAgICAgICAg
ICAgKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMucG9zID0gZWFzZWQgPSBw
ZXJjZW50OworICAgICAgICB9CisgICAgICAgIHRoaXMubm93ID0gKCB0aGlzLmVuZCAtIHRoaXMu
c3RhcnQgKSAqIGVhc2VkICsgdGhpcy5zdGFydDsKKworICAgICAgICBpZiAoIHRoaXMub3B0aW9u
cy5zdGVwICkgeworICAgICAgICAgICAgdGhpcy5vcHRpb25zLnN0ZXAuY2FsbCggdGhpcy5lbGVt
LCB0aGlzLm5vdywgdGhpcyApOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCBob29rcyAmJiBo
b29rcy5zZXQgKSB7CisgICAgICAgICAgICBob29rcy5zZXQoIHRoaXMgKTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIFR3ZWVuLnByb3BIb29rcy5fZGVmYXVsdC5zZXQoIHRoaXMgKTsK
KyAgICAgICAgfQorICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9Cit9OworCitUd2Vlbi5wcm90
b3R5cGUuaW5pdC5wcm90b3R5cGUgPSBUd2Vlbi5wcm90b3R5cGU7CisKK1R3ZWVuLnByb3BIb29r
cyA9IHsKKyAgICBfZGVmYXVsdDogeworICAgICAgICBnZXQ6IGZ1bmN0aW9uKCB0d2VlbiApIHsK
KyAgICAgICAgICAgIHZhciByZXN1bHQ7CisKKyAgICAgICAgICAgIC8vIFVzZSBhIHByb3BlcnR5
IG9uIHRoZSBlbGVtZW50IGRpcmVjdGx5IHdoZW4gaXQgaXMgbm90IGEgRE9NIGVsZW1lbnQsCisg
ICAgICAgICAgICAvLyBvciB3aGVuIHRoZXJlIGlzIG5vIG1hdGNoaW5nIHN0eWxlIHByb3BlcnR5
IHRoYXQgZXhpc3RzLgorICAgICAgICAgICAgaWYgKCB0d2Vlbi5lbGVtLm5vZGVUeXBlICE9PSAx
IHx8CisgICAgICAgICAgICAgICAgdHdlZW4uZWxlbVsgdHdlZW4ucHJvcCBdICE9IG51bGwgJiYg
dHdlZW4uZWxlbS5zdHlsZVsgdHdlZW4ucHJvcCBdID09IG51bGwgKSB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHR3ZWVuLmVsZW1bIHR3ZWVuLnByb3AgXTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgLy8gUGFzc2luZyBhbiBlbXB0eSBzdHJpbmcgYXMgYSAzcmQgcGFyYW1ldGVyIHRv
IC5jc3Mgd2lsbCBhdXRvbWF0aWNhbGx5CisgICAgICAgICAgICAvLyBhdHRlbXB0IGEgcGFyc2VG
bG9hdCBhbmQgZmFsbGJhY2sgdG8gYSBzdHJpbmcgaWYgdGhlIHBhcnNlIGZhaWxzLgorICAgICAg
ICAgICAgLy8gU2ltcGxlIHZhbHVlcyBzdWNoIGFzICIxMHB4IiBhcmUgcGFyc2VkIHRvIEZsb2F0
OworICAgICAgICAgICAgLy8gY29tcGxleCB2YWx1ZXMgc3VjaCBhcyAicm90YXRlKDFyYWQpIiBh
cmUgcmV0dXJuZWQgYXMtaXMuCisgICAgICAgICAgICByZXN1bHQgPSBqUXVlcnkuY3NzKCB0d2Vl
bi5lbGVtLCB0d2Vlbi5wcm9wLCAiIiApOworCisgICAgICAgICAgICAvLyBFbXB0eSBzdHJpbmdz
LCBudWxsLCB1bmRlZmluZWQgYW5kICJhdXRvIiBhcmUgY29udmVydGVkIHRvIDAuCisgICAgICAg
ICAgICByZXR1cm4gIXJlc3VsdCB8fCByZXN1bHQgPT09ICJhdXRvIiA/IDAgOiByZXN1bHQ7Cisg
ICAgICAgIH0sCisgICAgICAgIHNldDogZnVuY3Rpb24oIHR3ZWVuICkgeworCisgICAgICAgICAg
ICAvLyBVc2Ugc3RlcCBob29rIGZvciBiYWNrIGNvbXBhdC4KKyAgICAgICAgICAgIC8vIFVzZSBj
c3NIb29rIGlmIGl0cyB0aGVyZS4KKyAgICAgICAgICAgIC8vIFVzZSAuc3R5bGUgaWYgYXZhaWxh
YmxlIGFuZCB1c2UgcGxhaW4gcHJvcGVydGllcyB3aGVyZSBhdmFpbGFibGUuCisgICAgICAgICAg
ICBpZiAoIGpRdWVyeS5meC5zdGVwWyB0d2Vlbi5wcm9wIF0gKSB7CisgICAgICAgICAgICAgICAg
alF1ZXJ5LmZ4LnN0ZXBbIHR3ZWVuLnByb3AgXSggdHdlZW4gKTsKKyAgICAgICAgICAgIH0gZWxz
ZSBpZiAoIHR3ZWVuLmVsZW0ubm9kZVR5cGUgPT09IDEgJiYKKyAgICAgICAgICAgICAgICAoIHR3
ZWVuLmVsZW0uc3R5bGVbIGpRdWVyeS5jc3NQcm9wc1sgdHdlZW4ucHJvcCBdIF0gIT0gbnVsbCB8
fAorICAgICAgICAgICAgICAgICAgICBqUXVlcnkuY3NzSG9va3NbIHR3ZWVuLnByb3AgXSApICkg
eworICAgICAgICAgICAgICAgIGpRdWVyeS5zdHlsZSggdHdlZW4uZWxlbSwgdHdlZW4ucHJvcCwg
dHdlZW4ubm93ICsgdHdlZW4udW5pdCApOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICB0d2Vlbi5lbGVtWyB0d2Vlbi5wcm9wIF0gPSB0d2Vlbi5ub3c7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9Cit9OworCisvLyBTdXBwb3J0OiBJRSA8PTkgb25seQorLy8g
UGFuaWMgYmFzZWQgYXBwcm9hY2ggdG8gc2V0dGluZyB0aGluZ3Mgb24gZGlzY29ubmVjdGVkIG5v
ZGVzCitUd2Vlbi5wcm9wSG9va3Muc2Nyb2xsVG9wID0gVHdlZW4ucHJvcEhvb2tzLnNjcm9sbExl
ZnQgPSB7CisgICAgc2V0OiBmdW5jdGlvbiggdHdlZW4gKSB7CisgICAgICAgIGlmICggdHdlZW4u
ZWxlbS5ub2RlVHlwZSAmJiB0d2Vlbi5lbGVtLnBhcmVudE5vZGUgKSB7CisgICAgICAgICAgICB0
d2Vlbi5lbGVtWyB0d2Vlbi5wcm9wIF0gPSB0d2Vlbi5ub3c7CisgICAgICAgIH0KKyAgICB9Cit9
OworCitqUXVlcnkuZWFzaW5nID0geworICAgIGxpbmVhcjogZnVuY3Rpb24oIHAgKSB7CisgICAg
ICAgIHJldHVybiBwOworICAgIH0sCisgICAgc3dpbmc6IGZ1bmN0aW9uKCBwICkgeworICAgICAg
ICByZXR1cm4gMC41IC0gTWF0aC5jb3MoIHAgKiBNYXRoLlBJICkgLyAyOworICAgIH0sCisgICAg
X2RlZmF1bHQ6ICJzd2luZyIKK307CisKK2pRdWVyeS5meCA9IFR3ZWVuLnByb3RvdHlwZS5pbml0
OworCisvLyBCYWNrIGNvbXBhdCA8MS44IGV4dGVuc2lvbiBwb2ludAoralF1ZXJ5LmZ4LnN0ZXAg
PSB7fTsKKworCisKKwordmFyCisgICAgZnhOb3csIHRpbWVySWQsCisgICAgcmZ4dHlwZXMgPSAv
Xig/OnRvZ2dsZXxzaG93fGhpZGUpJC8sCisgICAgcnJ1biA9IC9xdWV1ZUhvb2tzJC87CisKK2Z1
bmN0aW9uIHJhZigpIHsKKyAgICBpZiAoIHRpbWVySWQgKSB7CisgICAgICAgIHdpbmRvdy5yZXF1
ZXN0QW5pbWF0aW9uRnJhbWUoIHJhZiApOworICAgICAgICBqUXVlcnkuZngudGljaygpOworICAg
IH0KK30KKworLy8gQW5pbWF0aW9ucyBjcmVhdGVkIHN5bmNocm9ub3VzbHkgd2lsbCBydW4gc3lu
Y2hyb25vdXNseQorZnVuY3Rpb24gY3JlYXRlRnhOb3coKSB7CisgICAgd2luZG93LnNldFRpbWVv
dXQoIGZ1bmN0aW9uKCkgeworICAgICAgICBmeE5vdyA9IHVuZGVmaW5lZDsKKyAgICB9ICk7Cisg
ICAgcmV0dXJuICggZnhOb3cgPSBqUXVlcnkubm93KCkgKTsKK30KKworLy8gR2VuZXJhdGUgcGFy
YW1ldGVycyB0byBjcmVhdGUgYSBzdGFuZGFyZCBhbmltYXRpb24KK2Z1bmN0aW9uIGdlbkZ4KCB0
eXBlLCBpbmNsdWRlV2lkdGggKSB7CisgICAgdmFyIHdoaWNoLAorICAgICAgICBpID0gMCwKKyAg
ICAgICAgYXR0cnMgPSB7IGhlaWdodDogdHlwZSB9OworCisgICAgLy8gSWYgd2UgaW5jbHVkZSB3
aWR0aCwgc3RlcCB2YWx1ZSBpcyAxIHRvIGRvIGFsbCBjc3NFeHBhbmQgdmFsdWVzLAorICAgIC8v
IG90aGVyd2lzZSBzdGVwIHZhbHVlIGlzIDIgdG8gc2tpcCBvdmVyIExlZnQgYW5kIFJpZ2h0Cisg
ICAgaW5jbHVkZVdpZHRoID0gaW5jbHVkZVdpZHRoID8gMSA6IDA7CisgICAgZm9yICggOyBpIDwg
NDsgaSArPSAyIC0gaW5jbHVkZVdpZHRoICkgeworICAgICAgICB3aGljaCA9IGNzc0V4cGFuZFsg
aSBdOworICAgICAgICBhdHRyc1sgIm1hcmdpbiIgKyB3aGljaCBdID0gYXR0cnNbICJwYWRkaW5n
IiArIHdoaWNoIF0gPSB0eXBlOworICAgIH0KKworICAgIGlmICggaW5jbHVkZVdpZHRoICkgewor
ICAgICAgICBhdHRycy5vcGFjaXR5ID0gYXR0cnMud2lkdGggPSB0eXBlOworICAgIH0KKworICAg
IHJldHVybiBhdHRyczsKK30KKworZnVuY3Rpb24gY3JlYXRlVHdlZW4oIHZhbHVlLCBwcm9wLCBh
bmltYXRpb24gKSB7CisgICAgdmFyIHR3ZWVuLAorICAgICAgICBjb2xsZWN0aW9uID0gKCBBbmlt
YXRpb24udHdlZW5lcnNbIHByb3AgXSB8fCBbXSApLmNvbmNhdCggQW5pbWF0aW9uLnR3ZWVuZXJz
WyAiKiIgXSApLAorICAgICAgICBpbmRleCA9IDAsCisgICAgICAgIGxlbmd0aCA9IGNvbGxlY3Rp
b24ubGVuZ3RoOworICAgIGZvciAoIDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7CisgICAg
ICAgIGlmICggKCB0d2VlbiA9IGNvbGxlY3Rpb25bIGluZGV4IF0uY2FsbCggYW5pbWF0aW9uLCBw
cm9wLCB2YWx1ZSApICkgKSB7CisKKyAgICAgICAgICAgIC8vIFdlJ3JlIGRvbmUgd2l0aCB0aGlz
IHByb3BlcnR5CisgICAgICAgICAgICByZXR1cm4gdHdlZW47CisgICAgICAgIH0KKyAgICB9Cit9
CisKK2Z1bmN0aW9uIGRlZmF1bHRQcmVmaWx0ZXIoIGVsZW0sIHByb3BzLCBvcHRzICkgeworICAg
IHZhciBwcm9wLCB2YWx1ZSwgdG9nZ2xlLCBob29rcywgb2xkZmlyZSwgcHJvcFR3ZWVuLCByZXN0
b3JlRGlzcGxheSwgZGlzcGxheSwKKyAgICAgICAgaXNCb3ggPSAid2lkdGgiIGluIHByb3BzIHx8
ICJoZWlnaHQiIGluIHByb3BzLAorICAgICAgICBhbmltID0gdGhpcywKKyAgICAgICAgb3JpZyA9
IHt9LAorICAgICAgICBzdHlsZSA9IGVsZW0uc3R5bGUsCisgICAgICAgIGhpZGRlbiA9IGVsZW0u
bm9kZVR5cGUgJiYgaXNIaWRkZW5XaXRoaW5UcmVlKCBlbGVtICksCisgICAgICAgIGRhdGFTaG93
ID0gZGF0YVByaXYuZ2V0KCBlbGVtLCAiZnhzaG93IiApOworCisgICAgLy8gUXVldWUtc2tpcHBp
bmcgYW5pbWF0aW9ucyBoaWphY2sgdGhlIGZ4IGhvb2tzCisgICAgaWYgKCAhb3B0cy5xdWV1ZSAp
IHsKKyAgICAgICAgaG9va3MgPSBqUXVlcnkuX3F1ZXVlSG9va3MoIGVsZW0sICJmeCIgKTsKKyAg
ICAgICAgaWYgKCBob29rcy51bnF1ZXVlZCA9PSBudWxsICkgeworICAgICAgICAgICAgaG9va3Mu
dW5xdWV1ZWQgPSAwOworICAgICAgICAgICAgb2xkZmlyZSA9IGhvb2tzLmVtcHR5LmZpcmU7Cisg
ICAgICAgICAgICBob29rcy5lbXB0eS5maXJlID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAg
ICAgaWYgKCAhaG9va3MudW5xdWV1ZWQgKSB7CisgICAgICAgICAgICAgICAgICAgIG9sZGZpcmUo
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9OworICAgICAgICB9CisgICAgICAg
IGhvb2tzLnVucXVldWVkKys7CisKKyAgICAgICAgYW5pbS5hbHdheXMoIGZ1bmN0aW9uKCkgewor
CisgICAgICAgICAgICAvLyBFbnN1cmUgdGhlIGNvbXBsZXRlIGhhbmRsZXIgaXMgY2FsbGVkIGJl
Zm9yZSB0aGlzIGNvbXBsZXRlcworICAgICAgICAgICAgYW5pbS5hbHdheXMoIGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgICAgIGhvb2tzLnVucXVldWVkLS07CisgICAgICAgICAgICAgICAgaWYg
KCAhalF1ZXJ5LnF1ZXVlKCBlbGVtLCAiZngiICkubGVuZ3RoICkgeworICAgICAgICAgICAgICAg
ICAgICBob29rcy5lbXB0eS5maXJlKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fSApOworICAgICAgICB9ICk7CisgICAgfQorCisgICAgLy8gRGV0ZWN0IHNob3cvaGlkZSBhbmlt
YXRpb25zCisgICAgZm9yICggcHJvcCBpbiBwcm9wcyApIHsKKyAgICAgICAgdmFsdWUgPSBwcm9w
c1sgcHJvcCBdOworICAgICAgICBpZiAoIHJmeHR5cGVzLnRlc3QoIHZhbHVlICkgKSB7CisgICAg
ICAgICAgICBkZWxldGUgcHJvcHNbIHByb3AgXTsKKyAgICAgICAgICAgIHRvZ2dsZSA9IHRvZ2ds
ZSB8fCB2YWx1ZSA9PT0gInRvZ2dsZSI7CisgICAgICAgICAgICBpZiAoIHZhbHVlID09PSAoIGhp
ZGRlbiA/ICJoaWRlIiA6ICJzaG93IiApICkgeworCisgICAgICAgICAgICAgICAgLy8gUHJldGVu
ZCB0byBiZSBoaWRkZW4gaWYgdGhpcyBpcyBhICJzaG93IiBhbmQKKyAgICAgICAgICAgICAgICAv
LyB0aGVyZSBpcyBzdGlsbCBkYXRhIGZyb20gYSBzdG9wcGVkIHNob3cvaGlkZQorICAgICAgICAg
ICAgICAgIGlmICggdmFsdWUgPT09ICJzaG93IiAmJiBkYXRhU2hvdyAmJiBkYXRhU2hvd1sgcHJv
cCBdICE9PSB1bmRlZmluZWQgKSB7CisgICAgICAgICAgICAgICAgICAgIGhpZGRlbiA9IHRydWU7
CisKKyAgICAgICAgICAgICAgICAvLyBJZ25vcmUgYWxsIG90aGVyIG5vLW9wIHNob3cvaGlkZSBk
YXRhCisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgb3JpZ1sg
cHJvcCBdID0gZGF0YVNob3cgJiYgZGF0YVNob3dbIHByb3AgXSB8fCBqUXVlcnkuc3R5bGUoIGVs
ZW0sIHByb3AgKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEJhaWwgb3V0IGlmIHRoaXMg
aXMgYSBuby1vcCBsaWtlIC5oaWRlKCkuaGlkZSgpCisgICAgcHJvcFR3ZWVuID0gIWpRdWVyeS5p
c0VtcHR5T2JqZWN0KCBwcm9wcyApOworICAgIGlmICggIXByb3BUd2VlbiAmJiBqUXVlcnkuaXNF
bXB0eU9iamVjdCggb3JpZyApICkgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8g
UmVzdHJpY3QgIm92ZXJmbG93IiBhbmQgImRpc3BsYXkiIHN0eWxlcyBkdXJpbmcgYm94IGFuaW1h
dGlvbnMKKyAgICBpZiAoIGlzQm94ICYmIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7CisKKyAgICAg
ICAgLy8gU3VwcG9ydDogSUUgPD05IC0gMTEsIEVkZ2UgMTIgLSAxMworICAgICAgICAvLyBSZWNv
cmQgYWxsIDMgb3ZlcmZsb3cgYXR0cmlidXRlcyBiZWNhdXNlIElFIGRvZXMgbm90IGluZmVyIHRo
ZSBzaG9ydGhhbmQKKyAgICAgICAgLy8gZnJvbSBpZGVudGljYWxseS12YWx1ZWQgb3ZlcmZsb3dY
IGFuZCBvdmVyZmxvd1kKKyAgICAgICAgb3B0cy5vdmVyZmxvdyA9IFsgc3R5bGUub3ZlcmZsb3cs
IHN0eWxlLm92ZXJmbG93WCwgc3R5bGUub3ZlcmZsb3dZIF07CisKKyAgICAgICAgLy8gSWRlbnRp
ZnkgYSBkaXNwbGF5IHR5cGUsIHByZWZlcnJpbmcgb2xkIHNob3cvaGlkZSBkYXRhIG92ZXIgdGhl
IENTUyBjYXNjYWRlCisgICAgICAgIHJlc3RvcmVEaXNwbGF5ID0gZGF0YVNob3cgJiYgZGF0YVNo
b3cuZGlzcGxheTsKKyAgICAgICAgaWYgKCByZXN0b3JlRGlzcGxheSA9PSBudWxsICkgeworICAg
ICAgICAgICAgcmVzdG9yZURpc3BsYXkgPSBkYXRhUHJpdi5nZXQoIGVsZW0sICJkaXNwbGF5IiAp
OworICAgICAgICB9CisgICAgICAgIGRpc3BsYXkgPSBqUXVlcnkuY3NzKCBlbGVtLCAiZGlzcGxh
eSIgKTsKKyAgICAgICAgaWYgKCBkaXNwbGF5ID09PSAibm9uZSIgKSB7CisgICAgICAgICAgICBp
ZiAoIHJlc3RvcmVEaXNwbGF5ICkgeworICAgICAgICAgICAgICAgIGRpc3BsYXkgPSByZXN0b3Jl
RGlzcGxheTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisKKyAgICAgICAgICAgICAgICAvLyBHZXQg
bm9uZW1wdHkgdmFsdWUocykgYnkgdGVtcG9yYXJpbHkgZm9yY2luZyB2aXNpYmlsaXR5CisgICAg
ICAgICAgICAgICAgc2hvd0hpZGUoIFsgZWxlbSBdLCB0cnVlICk7CisgICAgICAgICAgICAgICAg
cmVzdG9yZURpc3BsYXkgPSBlbGVtLnN0eWxlLmRpc3BsYXkgfHwgcmVzdG9yZURpc3BsYXk7Cisg
ICAgICAgICAgICAgICAgZGlzcGxheSA9IGpRdWVyeS5jc3MoIGVsZW0sICJkaXNwbGF5IiApOwor
ICAgICAgICAgICAgICAgIHNob3dIaWRlKCBbIGVsZW0gXSApOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisKKyAgICAgICAgLy8gQW5pbWF0ZSBpbmxpbmUgZWxlbWVudHMgYXMgaW5saW5lLWJs
b2NrCisgICAgICAgIGlmICggZGlzcGxheSA9PT0gImlubGluZSIgfHwgZGlzcGxheSA9PT0gImlu
bGluZS1ibG9jayIgJiYgcmVzdG9yZURpc3BsYXkgIT0gbnVsbCApIHsKKyAgICAgICAgICAgIGlm
ICggalF1ZXJ5LmNzcyggZWxlbSwgImZsb2F0IiApID09PSAibm9uZSIgKSB7CisKKyAgICAgICAg
ICAgICAgICAvLyBSZXN0b3JlIHRoZSBvcmlnaW5hbCBkaXNwbGF5IHZhbHVlIGF0IHRoZSBlbmQg
b2YgcHVyZSBzaG93L2hpZGUgYW5pbWF0aW9ucworICAgICAgICAgICAgICAgIGlmICggIXByb3BU
d2VlbiApIHsKKyAgICAgICAgICAgICAgICAgICAgYW5pbS5kb25lKCBmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHN0eWxlLmRpc3BsYXkgPSByZXN0b3JlRGlzcGxheTsKKyAg
ICAgICAgICAgICAgICAgICAgfSApOworICAgICAgICAgICAgICAgICAgICBpZiAoIHJlc3RvcmVE
aXNwbGF5ID09IG51bGwgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5ID0gc3R5
bGUuZGlzcGxheTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RvcmVEaXNwbGF5ID0gZGlz
cGxheSA9PT0gIm5vbmUiID8gIiIgOiBkaXNwbGF5OworICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHN0eWxlLmRpc3BsYXkgPSAiaW5saW5l
LWJsb2NrIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICggb3B0
cy5vdmVyZmxvdyApIHsKKyAgICAgICAgc3R5bGUub3ZlcmZsb3cgPSAiaGlkZGVuIjsKKyAgICAg
ICAgYW5pbS5hbHdheXMoIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgc3R5bGUub3ZlcmZsb3cg
PSBvcHRzLm92ZXJmbG93WyAwIF07CisgICAgICAgICAgICBzdHlsZS5vdmVyZmxvd1ggPSBvcHRz
Lm92ZXJmbG93WyAxIF07CisgICAgICAgICAgICBzdHlsZS5vdmVyZmxvd1kgPSBvcHRzLm92ZXJm
bG93WyAyIF07CisgICAgICAgIH0gKTsKKyAgICB9CisKKyAgICAvLyBJbXBsZW1lbnQgc2hvdy9o
aWRlIGFuaW1hdGlvbnMKKyAgICBwcm9wVHdlZW4gPSBmYWxzZTsKKyAgICBmb3IgKCBwcm9wIGlu
IG9yaWcgKSB7CisKKyAgICAgICAgLy8gR2VuZXJhbCBzaG93L2hpZGUgc2V0dXAgZm9yIHRoaXMg
ZWxlbWVudCBhbmltYXRpb24KKyAgICAgICAgaWYgKCAhcHJvcFR3ZWVuICkgeworICAgICAgICAg
ICAgaWYgKCBkYXRhU2hvdyApIHsKKyAgICAgICAgICAgICAgICBpZiAoICJoaWRkZW4iIGluIGRh
dGFTaG93ICkgeworICAgICAgICAgICAgICAgICAgICBoaWRkZW4gPSBkYXRhU2hvdy5oaWRkZW47
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBkYXRhU2hvdyA9IGRhdGFQcml2LmFjY2VzcyggZWxlbSwgImZ4c2hvdyIsIHsgZGlzcGxheTog
cmVzdG9yZURpc3BsYXkgfSApOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBTdG9y
ZSBoaWRkZW4vdmlzaWJsZSBmb3IgdG9nZ2xlIHNvIGAuc3RvcCgpLnRvZ2dsZSgpYCAicmV2ZXJz
ZXMiCisgICAgICAgICAgICBpZiAoIHRvZ2dsZSApIHsKKyAgICAgICAgICAgICAgICBkYXRhU2hv
dy5oaWRkZW4gPSAhaGlkZGVuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBTaG93
IGVsZW1lbnRzIGJlZm9yZSBhbmltYXRpbmcgdGhlbQorICAgICAgICAgICAgaWYgKCBoaWRkZW4g
KSB7CisgICAgICAgICAgICAgICAgc2hvd0hpZGUoIFsgZWxlbSBdLCB0cnVlICk7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLWxvb3AtZnVuYyAqLwor
CisgICAgICAgICAgICBhbmltLmRvbmUoIGZ1bmN0aW9uKCkgeworCisgICAgICAgICAgICAvKiBl
c2xpbnQtZW5hYmxlIG5vLWxvb3AtZnVuYyAqLworCisgICAgICAgICAgICAgICAgLy8gVGhlIGZp
bmFsIHN0ZXAgb2YgYSAiaGlkZSIgYW5pbWF0aW9uIGlzIGFjdHVhbGx5IGhpZGluZyB0aGUgZWxl
bWVudAorICAgICAgICAgICAgICAgIGlmICggIWhpZGRlbiApIHsKKyAgICAgICAgICAgICAgICAg
ICAgc2hvd0hpZGUoIFsgZWxlbSBdICk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIGRhdGFQcml2LnJlbW92ZSggZWxlbSwgImZ4c2hvdyIgKTsKKyAgICAgICAgICAgICAgICBm
b3IgKCBwcm9wIGluIG9yaWcgKSB7CisgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5zdHlsZSgg
ZWxlbSwgcHJvcCwgb3JpZ1sgcHJvcCBdICk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfSApOworICAgICAgICB9CisKKyAgICAgICAgLy8gUGVyLXByb3BlcnR5IHNldHVwCisgICAg
ICAgIHByb3BUd2VlbiA9IGNyZWF0ZVR3ZWVuKCBoaWRkZW4gPyBkYXRhU2hvd1sgcHJvcCBdIDog
MCwgcHJvcCwgYW5pbSApOworICAgICAgICBpZiAoICEoIHByb3AgaW4gZGF0YVNob3cgKSApIHsK
KyAgICAgICAgICAgIGRhdGFTaG93WyBwcm9wIF0gPSBwcm9wVHdlZW4uc3RhcnQ7CisgICAgICAg
ICAgICBpZiAoIGhpZGRlbiApIHsKKyAgICAgICAgICAgICAgICBwcm9wVHdlZW4uZW5kID0gcHJv
cFR3ZWVuLnN0YXJ0OworICAgICAgICAgICAgICAgIHByb3BUd2Vlbi5zdGFydCA9IDA7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIHByb3BGaWx0ZXIoIHBy
b3BzLCBzcGVjaWFsRWFzaW5nICkgeworICAgIHZhciBpbmRleCwgbmFtZSwgZWFzaW5nLCB2YWx1
ZSwgaG9va3M7CisKKyAgICAvLyBjYW1lbENhc2UsIHNwZWNpYWxFYXNpbmcgYW5kIGV4cGFuZCBj
c3NIb29rIHBhc3MKKyAgICBmb3IgKCBpbmRleCBpbiBwcm9wcyApIHsKKyAgICAgICAgbmFtZSA9
IGpRdWVyeS5jYW1lbENhc2UoIGluZGV4ICk7CisgICAgICAgIGVhc2luZyA9IHNwZWNpYWxFYXNp
bmdbIG5hbWUgXTsKKyAgICAgICAgdmFsdWUgPSBwcm9wc1sgaW5kZXggXTsKKyAgICAgICAgaWYg
KCBqUXVlcnkuaXNBcnJheSggdmFsdWUgKSApIHsKKyAgICAgICAgICAgIGVhc2luZyA9IHZhbHVl
WyAxIF07CisgICAgICAgICAgICB2YWx1ZSA9IHByb3BzWyBpbmRleCBdID0gdmFsdWVbIDAgXTsK
KyAgICAgICAgfQorCisgICAgICAgIGlmICggaW5kZXggIT09IG5hbWUgKSB7CisgICAgICAgICAg
ICBwcm9wc1sgbmFtZSBdID0gdmFsdWU7CisgICAgICAgICAgICBkZWxldGUgcHJvcHNbIGluZGV4
IF07CisgICAgICAgIH0KKworICAgICAgICBob29rcyA9IGpRdWVyeS5jc3NIb29rc1sgbmFtZSBd
OworICAgICAgICBpZiAoIGhvb2tzICYmICJleHBhbmQiIGluIGhvb2tzICkgeworICAgICAgICAg
ICAgdmFsdWUgPSBob29rcy5leHBhbmQoIHZhbHVlICk7CisgICAgICAgICAgICBkZWxldGUgcHJv
cHNbIG5hbWUgXTsKKworICAgICAgICAgICAgLy8gTm90IHF1aXRlICQuZXh0ZW5kLCB0aGlzIHdv
bid0IG92ZXJ3cml0ZSBleGlzdGluZyBrZXlzLgorICAgICAgICAgICAgLy8gUmV1c2luZyAnaW5k
ZXgnIGJlY2F1c2Ugd2UgaGF2ZSB0aGUgY29ycmVjdCAibmFtZSIKKyAgICAgICAgICAgIGZvciAo
IGluZGV4IGluIHZhbHVlICkgeworICAgICAgICAgICAgICAgIGlmICggISggaW5kZXggaW4gcHJv
cHMgKSApIHsKKyAgICAgICAgICAgICAgICAgICAgcHJvcHNbIGluZGV4IF0gPSB2YWx1ZVsgaW5k
ZXggXTsKKyAgICAgICAgICAgICAgICAgICAgc3BlY2lhbEVhc2luZ1sgaW5kZXggXSA9IGVhc2lu
ZzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBzcGVjaWFsRWFzaW5nWyBuYW1lIF0gPSBlYXNpbmc7CisgICAgICAgIH0KKyAg
ICB9Cit9CisKK2Z1bmN0aW9uIEFuaW1hdGlvbiggZWxlbSwgcHJvcGVydGllcywgb3B0aW9ucyAp
IHsKKyAgICB2YXIgcmVzdWx0LAorICAgICAgICBzdG9wcGVkLAorICAgICAgICBpbmRleCA9IDAs
CisgICAgICAgIGxlbmd0aCA9IEFuaW1hdGlvbi5wcmVmaWx0ZXJzLmxlbmd0aCwKKyAgICAgICAg
ZGVmZXJyZWQgPSBqUXVlcnkuRGVmZXJyZWQoKS5hbHdheXMoIGZ1bmN0aW9uKCkgeworCisgICAg
ICAgICAgICAvLyBEb24ndCBtYXRjaCBlbGVtIGluIHRoZSA6YW5pbWF0ZWQgc2VsZWN0b3IKKyAg
ICAgICAgICAgIGRlbGV0ZSB0aWNrLmVsZW07CisgICAgICAgIH0gKSwKKyAgICAgICAgdGljayA9
IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgaWYgKCBzdG9wcGVkICkgeworICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHZhciBjdXJyZW50
VGltZSA9IGZ4Tm93IHx8IGNyZWF0ZUZ4Tm93KCksCisgICAgICAgICAgICAgICAgcmVtYWluaW5n
ID0gTWF0aC5tYXgoIDAsIGFuaW1hdGlvbi5zdGFydFRpbWUgKyBhbmltYXRpb24uZHVyYXRpb24g
LSBjdXJyZW50VGltZSApLAorCisgICAgICAgICAgICAgICAgLy8gU3VwcG9ydDogQW5kcm9pZCAy
LjMgb25seQorICAgICAgICAgICAgICAgIC8vIEFyY2hhaWMgY3Jhc2ggYnVnIHdvbid0IGFsbG93
IHVzIHRvIHVzZSBgMSAtICggMC41IHx8IDAgKWAgKCMxMjQ5NykKKyAgICAgICAgICAgICAgICB0
ZW1wID0gcmVtYWluaW5nIC8gYW5pbWF0aW9uLmR1cmF0aW9uIHx8IDAsCisgICAgICAgICAgICAg
ICAgcGVyY2VudCA9IDEgLSB0ZW1wLAorICAgICAgICAgICAgICAgIGluZGV4ID0gMCwKKyAgICAg
ICAgICAgICAgICBsZW5ndGggPSBhbmltYXRpb24udHdlZW5zLmxlbmd0aDsKKworICAgICAgICAg
ICAgZm9yICggOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHsKKyAgICAgICAgICAgICAgICBh
bmltYXRpb24udHdlZW5zWyBpbmRleCBdLnJ1biggcGVyY2VudCApOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBkZWZlcnJlZC5ub3RpZnlXaXRoKCBlbGVtLCBbIGFuaW1hdGlvbiwgcGVy
Y2VudCwgcmVtYWluaW5nIF0gKTsKKworICAgICAgICAgICAgaWYgKCBwZXJjZW50IDwgMSAmJiBs
ZW5ndGggKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlbWFpbmluZzsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZVdpdGgoIGVsZW0sIFsg
YW5pbWF0aW9uIF0gKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0sCisgICAgICAgIGFuaW1hdGlvbiA9IGRlZmVycmVkLnByb21pc2UoIHsK
KyAgICAgICAgICAgIGVsZW06IGVsZW0sCisgICAgICAgICAgICBwcm9wczogalF1ZXJ5LmV4dGVu
ZCgge30sIHByb3BlcnRpZXMgKSwKKyAgICAgICAgICAgIG9wdHM6IGpRdWVyeS5leHRlbmQoIHRy
dWUsIHsKKyAgICAgICAgICAgICAgICBzcGVjaWFsRWFzaW5nOiB7fSwKKyAgICAgICAgICAgICAg
ICBlYXNpbmc6IGpRdWVyeS5lYXNpbmcuX2RlZmF1bHQKKyAgICAgICAgICAgIH0sIG9wdGlvbnMg
KSwKKyAgICAgICAgICAgIG9yaWdpbmFsUHJvcGVydGllczogcHJvcGVydGllcywKKyAgICAgICAg
ICAgIG9yaWdpbmFsT3B0aW9uczogb3B0aW9ucywKKyAgICAgICAgICAgIHN0YXJ0VGltZTogZnhO
b3cgfHwgY3JlYXRlRnhOb3coKSwKKyAgICAgICAgICAgIGR1cmF0aW9uOiBvcHRpb25zLmR1cmF0
aW9uLAorICAgICAgICAgICAgdHdlZW5zOiBbXSwKKyAgICAgICAgICAgIGNyZWF0ZVR3ZWVuOiBm
dW5jdGlvbiggcHJvcCwgZW5kICkgeworICAgICAgICAgICAgICAgIHZhciB0d2VlbiA9IGpRdWVy
eS5Ud2VlbiggZWxlbSwgYW5pbWF0aW9uLm9wdHMsIHByb3AsIGVuZCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGFuaW1hdGlvbi5vcHRzLnNwZWNpYWxFYXNpbmdbIHByb3AgXSB8fCBhbmltYXRp
b24ub3B0cy5lYXNpbmcgKTsKKyAgICAgICAgICAgICAgICBhbmltYXRpb24udHdlZW5zLnB1c2go
IHR3ZWVuICk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHR3ZWVuOworICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgIHN0b3A6IGZ1bmN0aW9uKCBnb3RvRW5kICkgeworICAgICAgICAgICAgICAg
IHZhciBpbmRleCA9IDAsCisKKyAgICAgICAgICAgICAgICAgICAgLy8gSWYgd2UgYXJlIGdvaW5n
IHRvIHRoZSBlbmQsIHdlIHdhbnQgdG8gcnVuIGFsbCB0aGUgdHdlZW5zCisgICAgICAgICAgICAg
ICAgICAgIC8vIG90aGVyd2lzZSB3ZSBza2lwIHRoaXMgcGFydAorICAgICAgICAgICAgICAgICAg
ICBsZW5ndGggPSBnb3RvRW5kID8gYW5pbWF0aW9uLnR3ZWVucy5sZW5ndGggOiAwOworICAgICAg
ICAgICAgICAgIGlmICggc3RvcHBlZCApIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRo
aXM7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHN0b3BwZWQgPSB0cnVlOwor
ICAgICAgICAgICAgICAgIGZvciAoIDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7CisgICAg
ICAgICAgICAgICAgICAgIGFuaW1hdGlvbi50d2VlbnNbIGluZGV4IF0ucnVuKCAxICk7CisgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gUmVzb2x2ZSB3aGVuIHdlIHBsYXll
ZCB0aGUgbGFzdCBmcmFtZTsgb3RoZXJ3aXNlLCByZWplY3QKKyAgICAgICAgICAgICAgICBpZiAo
IGdvdG9FbmQgKSB7CisgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLm5vdGlmeVdpdGgoIGVs
ZW0sIFsgYW5pbWF0aW9uLCAxLCAwIF0gKTsKKyAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQu
cmVzb2x2ZVdpdGgoIGVsZW0sIFsgYW5pbWF0aW9uLCBnb3RvRW5kIF0gKTsKKyAgICAgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3RXaXRoKCBl
bGVtLCBbIGFuaW1hdGlvbiwgZ290b0VuZCBdICk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICAgICAgfQorICAgICAgICB9ICksCisgICAg
ICAgIHByb3BzID0gYW5pbWF0aW9uLnByb3BzOworCisgICAgcHJvcEZpbHRlciggcHJvcHMsIGFu
aW1hdGlvbi5vcHRzLnNwZWNpYWxFYXNpbmcgKTsKKworICAgIGZvciAoIDsgaW5kZXggPCBsZW5n
dGg7IGluZGV4KysgKSB7CisgICAgICAgIHJlc3VsdCA9IEFuaW1hdGlvbi5wcmVmaWx0ZXJzWyBp
bmRleCBdLmNhbGwoIGFuaW1hdGlvbiwgZWxlbSwgcHJvcHMsIGFuaW1hdGlvbi5vcHRzICk7Cisg
ICAgICAgIGlmICggcmVzdWx0ICkgeworICAgICAgICAgICAgaWYgKCBqUXVlcnkuaXNGdW5jdGlv
biggcmVzdWx0LnN0b3AgKSApIHsKKyAgICAgICAgICAgICAgICBqUXVlcnkuX3F1ZXVlSG9va3Mo
IGFuaW1hdGlvbi5lbGVtLCBhbmltYXRpb24ub3B0cy5xdWV1ZSApLnN0b3AgPQorICAgICAgICAg
ICAgICAgICAgICBqUXVlcnkucHJveHkoIHJlc3VsdC5zdG9wLCByZXN1bHQgKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBqUXVlcnkubWFwKCBwcm9wcywgY3JlYXRlVHdlZW4sIGFuaW1hdGlvbiApOworCisgICAgaWYg
KCBqUXVlcnkuaXNGdW5jdGlvbiggYW5pbWF0aW9uLm9wdHMuc3RhcnQgKSApIHsKKyAgICAgICAg
YW5pbWF0aW9uLm9wdHMuc3RhcnQuY2FsbCggZWxlbSwgYW5pbWF0aW9uICk7CisgICAgfQorCisg
ICAgalF1ZXJ5LmZ4LnRpbWVyKAorICAgICAgICBqUXVlcnkuZXh0ZW5kKCB0aWNrLCB7CisgICAg
ICAgICAgICBlbGVtOiBlbGVtLAorICAgICAgICAgICAgYW5pbTogYW5pbWF0aW9uLAorICAgICAg
ICAgICAgcXVldWU6IGFuaW1hdGlvbi5vcHRzLnF1ZXVlCisgICAgICAgIH0gKQorICAgICk7CisK
KyAgICAvLyBhdHRhY2ggY2FsbGJhY2tzIGZyb20gb3B0aW9ucworICAgIHJldHVybiBhbmltYXRp
b24ucHJvZ3Jlc3MoIGFuaW1hdGlvbi5vcHRzLnByb2dyZXNzICkKKyAgICAgICAgLmRvbmUoIGFu
aW1hdGlvbi5vcHRzLmRvbmUsIGFuaW1hdGlvbi5vcHRzLmNvbXBsZXRlICkKKyAgICAgICAgLmZh
aWwoIGFuaW1hdGlvbi5vcHRzLmZhaWwgKQorICAgICAgICAuYWx3YXlzKCBhbmltYXRpb24ub3B0
cy5hbHdheXMgKTsKK30KKworalF1ZXJ5LkFuaW1hdGlvbiA9IGpRdWVyeS5leHRlbmQoIEFuaW1h
dGlvbiwgeworCisgICAgdHdlZW5lcnM6IHsKKyAgICAgICAgIioiOiBbIGZ1bmN0aW9uKCBwcm9w
LCB2YWx1ZSApIHsKKyAgICAgICAgICAgIHZhciB0d2VlbiA9IHRoaXMuY3JlYXRlVHdlZW4oIHBy
b3AsIHZhbHVlICk7CisgICAgICAgICAgICBhZGp1c3RDU1MoIHR3ZWVuLmVsZW0sIHByb3AsIHJj
c3NOdW0uZXhlYyggdmFsdWUgKSwgdHdlZW4gKTsKKyAgICAgICAgICAgIHJldHVybiB0d2VlbjsK
KyAgICAgICAgfSBdCisgICAgfSwKKworICAgIHR3ZWVuZXI6IGZ1bmN0aW9uKCBwcm9wcywgY2Fs
bGJhY2sgKSB7CisgICAgICAgIGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIHByb3BzICkgKSB7Cisg
ICAgICAgICAgICBjYWxsYmFjayA9IHByb3BzOworICAgICAgICAgICAgcHJvcHMgPSBbICIqIiBd
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcHJvcHMgPSBwcm9wcy5tYXRjaCggcm5v
dGh0bWx3aGl0ZSApOworICAgICAgICB9CisKKyAgICAgICAgdmFyIHByb3AsCisgICAgICAgICAg
ICBpbmRleCA9IDAsCisgICAgICAgICAgICBsZW5ndGggPSBwcm9wcy5sZW5ndGg7CisKKyAgICAg
ICAgZm9yICggOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHsKKyAgICAgICAgICAgIHByb3Ag
PSBwcm9wc1sgaW5kZXggXTsKKyAgICAgICAgICAgIEFuaW1hdGlvbi50d2VlbmVyc1sgcHJvcCBd
ID0gQW5pbWF0aW9uLnR3ZWVuZXJzWyBwcm9wIF0gfHwgW107CisgICAgICAgICAgICBBbmltYXRp
b24udHdlZW5lcnNbIHByb3AgXS51bnNoaWZ0KCBjYWxsYmFjayApOworICAgICAgICB9CisgICAg
fSwKKworICAgIHByZWZpbHRlcnM6IFsgZGVmYXVsdFByZWZpbHRlciBdLAorCisgICAgcHJlZmls
dGVyOiBmdW5jdGlvbiggY2FsbGJhY2ssIHByZXBlbmQgKSB7CisgICAgICAgIGlmICggcHJlcGVu
ZCApIHsKKyAgICAgICAgICAgIEFuaW1hdGlvbi5wcmVmaWx0ZXJzLnVuc2hpZnQoIGNhbGxiYWNr
ICk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBBbmltYXRpb24ucHJlZmlsdGVycy5w
dXNoKCBjYWxsYmFjayApOworICAgICAgICB9CisgICAgfQorfSApOworCitqUXVlcnkuc3BlZWQg
PSBmdW5jdGlvbiggc3BlZWQsIGVhc2luZywgZm4gKSB7CisgICAgdmFyIG9wdCA9IHNwZWVkICYm
IHR5cGVvZiBzcGVlZCA9PT0gIm9iamVjdCIgPyBqUXVlcnkuZXh0ZW5kKCB7fSwgc3BlZWQgKSA6
IHsKKyAgICAgICAgY29tcGxldGU6IGZuIHx8ICFmbiAmJiBlYXNpbmcgfHwKKyAgICAgICAgICAg
IGpRdWVyeS5pc0Z1bmN0aW9uKCBzcGVlZCApICYmIHNwZWVkLAorICAgICAgICBkdXJhdGlvbjog
c3BlZWQsCisgICAgICAgIGVhc2luZzogZm4gJiYgZWFzaW5nIHx8IGVhc2luZyAmJiAhalF1ZXJ5
LmlzRnVuY3Rpb24oIGVhc2luZyApICYmIGVhc2luZworICAgIH07CisKKyAgICAvLyBHbyB0byB0
aGUgZW5kIHN0YXRlIGlmIGZ4IGFyZSBvZmYgb3IgaWYgZG9jdW1lbnQgaXMgaGlkZGVuCisgICAg
aWYgKCBqUXVlcnkuZngub2ZmIHx8IGRvY3VtZW50LmhpZGRlbiApIHsKKyAgICAgICAgb3B0LmR1
cmF0aW9uID0gMDsKKworICAgIH0gZWxzZSB7CisgICAgICAgIGlmICggdHlwZW9mIG9wdC5kdXJh
dGlvbiAhPT0gIm51bWJlciIgKSB7CisgICAgICAgICAgICBpZiAoIG9wdC5kdXJhdGlvbiBpbiBq
UXVlcnkuZnguc3BlZWRzICkgeworICAgICAgICAgICAgICAgIG9wdC5kdXJhdGlvbiA9IGpRdWVy
eS5meC5zcGVlZHNbIG9wdC5kdXJhdGlvbiBdOworCisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIG9wdC5kdXJhdGlvbiA9IGpRdWVyeS5meC5zcGVlZHMuX2RlZmF1bHQ7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBOb3JtYWxpemUgb3B0LnF1
ZXVlIC0gdHJ1ZS91bmRlZmluZWQvbnVsbCAtPiAiZngiCisgICAgaWYgKCBvcHQucXVldWUgPT0g
bnVsbCB8fCBvcHQucXVldWUgPT09IHRydWUgKSB7CisgICAgICAgIG9wdC5xdWV1ZSA9ICJmeCI7
CisgICAgfQorCisgICAgLy8gUXVldWVpbmcKKyAgICBvcHQub2xkID0gb3B0LmNvbXBsZXRlOwor
CisgICAgb3B0LmNvbXBsZXRlID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGlmICggalF1ZXJ5Lmlz
RnVuY3Rpb24oIG9wdC5vbGQgKSApIHsKKyAgICAgICAgICAgIG9wdC5vbGQuY2FsbCggdGhpcyAp
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKCBvcHQucXVldWUgKSB7CisgICAgICAgICAgICBq
UXVlcnkuZGVxdWV1ZSggdGhpcywgb3B0LnF1ZXVlICk7CisgICAgICAgIH0KKyAgICB9OworCisg
ICAgcmV0dXJuIG9wdDsKK307CisKK2pRdWVyeS5mbi5leHRlbmQoIHsKKyAgICBmYWRlVG86IGZ1
bmN0aW9uKCBzcGVlZCwgdG8sIGVhc2luZywgY2FsbGJhY2sgKSB7CisKKyAgICAgICAgLy8gU2hv
dyBhbnkgaGlkZGVuIGVsZW1lbnRzIGFmdGVyIHNldHRpbmcgb3BhY2l0eSB0byAwCisgICAgICAg
IHJldHVybiB0aGlzLmZpbHRlciggaXNIaWRkZW5XaXRoaW5UcmVlICkuY3NzKCAib3BhY2l0eSIs
IDAgKS5zaG93KCkKKworICAgICAgICAgICAgLy8gQW5pbWF0ZSB0byB0aGUgdmFsdWUgc3BlY2lm
aWVkCisgICAgICAgICAgICAuZW5kKCkuYW5pbWF0ZSggeyBvcGFjaXR5OiB0byB9LCBzcGVlZCwg
ZWFzaW5nLCBjYWxsYmFjayApOworICAgIH0sCisgICAgYW5pbWF0ZTogZnVuY3Rpb24oIHByb3As
IHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICkgeworICAgICAgICB2YXIgZW1wdHkgPSBqUXVlcnku
aXNFbXB0eU9iamVjdCggcHJvcCApLAorICAgICAgICAgICAgb3B0YWxsID0galF1ZXJ5LnNwZWVk
KCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApLAorICAgICAgICAgICAgZG9BbmltYXRpb24gPSBm
dW5jdGlvbigpIHsKKworICAgICAgICAgICAgICAgIC8vIE9wZXJhdGUgb24gYSBjb3B5IG9mIHBy
b3Agc28gcGVyLXByb3BlcnR5IGVhc2luZyB3b24ndCBiZSBsb3N0CisgICAgICAgICAgICAgICAg
dmFyIGFuaW0gPSBBbmltYXRpb24oIHRoaXMsIGpRdWVyeS5leHRlbmQoIHt9LCBwcm9wICksIG9w
dGFsbCApOworCisgICAgICAgICAgICAgICAgLy8gRW1wdHkgYW5pbWF0aW9ucywgb3IgZmluaXNo
aW5nIHJlc29sdmVzIGltbWVkaWF0ZWx5CisgICAgICAgICAgICAgICAgaWYgKCBlbXB0eSB8fCBk
YXRhUHJpdi5nZXQoIHRoaXMsICJmaW5pc2giICkgKSB7CisgICAgICAgICAgICAgICAgICAgIGFu
aW0uc3RvcCggdHJ1ZSApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH07CisgICAg
ICAgICAgICBkb0FuaW1hdGlvbi5maW5pc2ggPSBkb0FuaW1hdGlvbjsKKworICAgICAgICByZXR1
cm4gZW1wdHkgfHwgb3B0YWxsLnF1ZXVlID09PSBmYWxzZSA/CisgICAgICAgICAgICB0aGlzLmVh
Y2goIGRvQW5pbWF0aW9uICkgOgorICAgICAgICAgICAgdGhpcy5xdWV1ZSggb3B0YWxsLnF1ZXVl
LCBkb0FuaW1hdGlvbiApOworICAgIH0sCisgICAgc3RvcDogZnVuY3Rpb24oIHR5cGUsIGNsZWFy
UXVldWUsIGdvdG9FbmQgKSB7CisgICAgICAgIHZhciBzdG9wUXVldWUgPSBmdW5jdGlvbiggaG9v
a3MgKSB7CisgICAgICAgICAgICB2YXIgc3RvcCA9IGhvb2tzLnN0b3A7CisgICAgICAgICAgICBk
ZWxldGUgaG9va3Muc3RvcDsKKyAgICAgICAgICAgIHN0b3AoIGdvdG9FbmQgKTsKKyAgICAgICAg
fTsKKworICAgICAgICBpZiAoIHR5cGVvZiB0eXBlICE9PSAic3RyaW5nIiApIHsKKyAgICAgICAg
ICAgIGdvdG9FbmQgPSBjbGVhclF1ZXVlOworICAgICAgICAgICAgY2xlYXJRdWV1ZSA9IHR5cGU7
CisgICAgICAgICAgICB0eXBlID0gdW5kZWZpbmVkOworICAgICAgICB9CisgICAgICAgIGlmICgg
Y2xlYXJRdWV1ZSAmJiB0eXBlICE9PSBmYWxzZSApIHsKKyAgICAgICAgICAgIHRoaXMucXVldWUo
IHR5cGUgfHwgImZ4IiwgW10gKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0aGlzLmVh
Y2goIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdmFyIGRlcXVldWUgPSB0cnVlLAorICAgICAg
ICAgICAgICAgIGluZGV4ID0gdHlwZSAhPSBudWxsICYmIHR5cGUgKyAicXVldWVIb29rcyIsCisg
ICAgICAgICAgICAgICAgdGltZXJzID0galF1ZXJ5LnRpbWVycywKKyAgICAgICAgICAgICAgICBk
YXRhID0gZGF0YVByaXYuZ2V0KCB0aGlzICk7CisKKyAgICAgICAgICAgIGlmICggaW5kZXggKSB7
CisgICAgICAgICAgICAgICAgaWYgKCBkYXRhWyBpbmRleCBdICYmIGRhdGFbIGluZGV4IF0uc3Rv
cCApIHsKKyAgICAgICAgICAgICAgICAgICAgc3RvcFF1ZXVlKCBkYXRhWyBpbmRleCBdICk7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBm
b3IgKCBpbmRleCBpbiBkYXRhICkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIGRhdGFbIGlu
ZGV4IF0gJiYgZGF0YVsgaW5kZXggXS5zdG9wICYmIHJydW4udGVzdCggaW5kZXggKSApIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHN0b3BRdWV1ZSggZGF0YVsgaW5kZXggXSApOworICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBmb3IgKCBpbmRleCA9IHRpbWVycy5sZW5ndGg7IGluZGV4LS07ICkgeworICAgICAg
ICAgICAgICAgIGlmICggdGltZXJzWyBpbmRleCBdLmVsZW0gPT09IHRoaXMgJiYKKyAgICAgICAg
ICAgICAgICAgICAgKCB0eXBlID09IG51bGwgfHwgdGltZXJzWyBpbmRleCBdLnF1ZXVlID09PSB0
eXBlICkgKSB7CisKKyAgICAgICAgICAgICAgICAgICAgdGltZXJzWyBpbmRleCBdLmFuaW0uc3Rv
cCggZ290b0VuZCApOworICAgICAgICAgICAgICAgICAgICBkZXF1ZXVlID0gZmFsc2U7CisgICAg
ICAgICAgICAgICAgICAgIHRpbWVycy5zcGxpY2UoIGluZGV4LCAxICk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBTdGFydCB0aGUgbmV4dCBpbiB0
aGUgcXVldWUgaWYgdGhlIGxhc3Qgc3RlcCB3YXNuJ3QgZm9yY2VkLgorICAgICAgICAgICAgLy8g
VGltZXJzIGN1cnJlbnRseSB3aWxsIGNhbGwgdGhlaXIgY29tcGxldGUgY2FsbGJhY2tzLCB3aGlj
aAorICAgICAgICAgICAgLy8gd2lsbCBkZXF1ZXVlIGJ1dCBvbmx5IGlmIHRoZXkgd2VyZSBnb3Rv
RW5kLgorICAgICAgICAgICAgaWYgKCBkZXF1ZXVlIHx8ICFnb3RvRW5kICkgeworICAgICAgICAg
ICAgICAgIGpRdWVyeS5kZXF1ZXVlKCB0aGlzLCB0eXBlICk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0gKTsKKyAgICB9LAorICAgIGZpbmlzaDogZnVuY3Rpb24oIHR5cGUgKSB7CisgICAgICAg
IGlmICggdHlwZSAhPT0gZmFsc2UgKSB7CisgICAgICAgICAgICB0eXBlID0gdHlwZSB8fCAiZngi
OworICAgICAgICB9CisgICAgICAgIHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgdmFyIGluZGV4LAorICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhUHJpdi5nZXQo
IHRoaXMgKSwKKyAgICAgICAgICAgICAgICBxdWV1ZSA9IGRhdGFbIHR5cGUgKyAicXVldWUiIF0s
CisgICAgICAgICAgICAgICAgaG9va3MgPSBkYXRhWyB0eXBlICsgInF1ZXVlSG9va3MiIF0sCisg
ICAgICAgICAgICAgICAgdGltZXJzID0galF1ZXJ5LnRpbWVycywKKyAgICAgICAgICAgICAgICBs
ZW5ndGggPSBxdWV1ZSA/IHF1ZXVlLmxlbmd0aCA6IDA7CisKKyAgICAgICAgICAgIC8vIEVuYWJs
ZSBmaW5pc2hpbmcgZmxhZyBvbiBwcml2YXRlIGRhdGEKKyAgICAgICAgICAgIGRhdGEuZmluaXNo
ID0gdHJ1ZTsKKworICAgICAgICAgICAgLy8gRW1wdHkgdGhlIHF1ZXVlIGZpcnN0CisgICAgICAg
ICAgICBqUXVlcnkucXVldWUoIHRoaXMsIHR5cGUsIFtdICk7CisKKyAgICAgICAgICAgIGlmICgg
aG9va3MgJiYgaG9va3Muc3RvcCApIHsKKyAgICAgICAgICAgICAgICBob29rcy5zdG9wLmNhbGwo
IHRoaXMsIHRydWUgKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gTG9vayBmb3Ig
YW55IGFjdGl2ZSBhbmltYXRpb25zLCBhbmQgZmluaXNoIHRoZW0KKyAgICAgICAgICAgIGZvciAo
IGluZGV4ID0gdGltZXJzLmxlbmd0aDsgaW5kZXgtLTsgKSB7CisgICAgICAgICAgICAgICAgaWYg
KCB0aW1lcnNbIGluZGV4IF0uZWxlbSA9PT0gdGhpcyAmJiB0aW1lcnNbIGluZGV4IF0ucXVldWUg
PT09IHR5cGUgKSB7CisgICAgICAgICAgICAgICAgICAgIHRpbWVyc1sgaW5kZXggXS5hbmltLnN0
b3AoIHRydWUgKTsKKyAgICAgICAgICAgICAgICAgICAgdGltZXJzLnNwbGljZSggaW5kZXgsIDEg
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIExv
b2sgZm9yIGFueSBhbmltYXRpb25zIGluIHRoZSBvbGQgcXVldWUgYW5kIGZpbmlzaCB0aGVtCisg
ICAgICAgICAgICBmb3IgKCBpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkgewor
ICAgICAgICAgICAgICAgIGlmICggcXVldWVbIGluZGV4IF0gJiYgcXVldWVbIGluZGV4IF0uZmlu
aXNoICkgeworICAgICAgICAgICAgICAgICAgICBxdWV1ZVsgaW5kZXggXS5maW5pc2guY2FsbCgg
dGhpcyApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
Ly8gVHVybiBvZmYgZmluaXNoaW5nIGZsYWcKKyAgICAgICAgICAgIGRlbGV0ZSBkYXRhLmZpbmlz
aDsKKyAgICAgICAgfSApOworICAgIH0KK30gKTsKKworalF1ZXJ5LmVhY2goIFsgInRvZ2dsZSIs
ICJzaG93IiwgImhpZGUiIF0sIGZ1bmN0aW9uKCBpLCBuYW1lICkgeworICAgIHZhciBjc3NGbiA9
IGpRdWVyeS5mblsgbmFtZSBdOworICAgIGpRdWVyeS5mblsgbmFtZSBdID0gZnVuY3Rpb24oIHNw
ZWVkLCBlYXNpbmcsIGNhbGxiYWNrICkgeworICAgICAgICByZXR1cm4gc3BlZWQgPT0gbnVsbCB8
fCB0eXBlb2Ygc3BlZWQgPT09ICJib29sZWFuIiA/CisgICAgICAgICAgICBjc3NGbi5hcHBseSgg
dGhpcywgYXJndW1lbnRzICkgOgorICAgICAgICAgICAgdGhpcy5hbmltYXRlKCBnZW5GeCggbmFt
ZSwgdHJ1ZSApLCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApOworICAgIH07Cit9ICk7CisKKy8v
IEdlbmVyYXRlIHNob3J0Y3V0cyBmb3IgY3VzdG9tIGFuaW1hdGlvbnMKK2pRdWVyeS5lYWNoKCB7
CisgICAgc2xpZGVEb3duOiBnZW5GeCggInNob3ciICksCisgICAgc2xpZGVVcDogZ2VuRngoICJo
aWRlIiApLAorICAgIHNsaWRlVG9nZ2xlOiBnZW5GeCggInRvZ2dsZSIgKSwKKyAgICBmYWRlSW46
IHsgb3BhY2l0eTogInNob3ciIH0sCisgICAgZmFkZU91dDogeyBvcGFjaXR5OiAiaGlkZSIgfSwK
KyAgICBmYWRlVG9nZ2xlOiB7IG9wYWNpdHk6ICJ0b2dnbGUiIH0KK30sIGZ1bmN0aW9uKCBuYW1l
LCBwcm9wcyApIHsKKyAgICBqUXVlcnkuZm5bIG5hbWUgXSA9IGZ1bmN0aW9uKCBzcGVlZCwgZWFz
aW5nLCBjYWxsYmFjayApIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuYW5pbWF0ZSggcHJvcHMsIHNw
ZWVkLCBlYXNpbmcsIGNhbGxiYWNrICk7CisgICAgfTsKK30gKTsKKworalF1ZXJ5LnRpbWVycyA9
IFtdOworalF1ZXJ5LmZ4LnRpY2sgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgdGltZXIsCisgICAg
ICAgIGkgPSAwLAorICAgICAgICB0aW1lcnMgPSBqUXVlcnkudGltZXJzOworCisgICAgZnhOb3cg
PSBqUXVlcnkubm93KCk7CisKKyAgICBmb3IgKCA7IGkgPCB0aW1lcnMubGVuZ3RoOyBpKysgKSB7
CisgICAgICAgIHRpbWVyID0gdGltZXJzWyBpIF07CisKKyAgICAgICAgLy8gQ2hlY2tzIHRoZSB0
aW1lciBoYXMgbm90IGFscmVhZHkgYmVlbiByZW1vdmVkCisgICAgICAgIGlmICggIXRpbWVyKCkg
JiYgdGltZXJzWyBpIF0gPT09IHRpbWVyICkgeworICAgICAgICAgICAgdGltZXJzLnNwbGljZSgg
aS0tLCAxICk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoICF0aW1lcnMubGVuZ3RoICkg
eworICAgICAgICBqUXVlcnkuZnguc3RvcCgpOworICAgIH0KKyAgICBmeE5vdyA9IHVuZGVmaW5l
ZDsKK307CisKK2pRdWVyeS5meC50aW1lciA9IGZ1bmN0aW9uKCB0aW1lciApIHsKKyAgICBqUXVl
cnkudGltZXJzLnB1c2goIHRpbWVyICk7CisgICAgaWYgKCB0aW1lcigpICkgeworICAgICAgICBq
UXVlcnkuZnguc3RhcnQoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBqUXVlcnkudGltZXJzLnBv
cCgpOworICAgIH0KK307CisKK2pRdWVyeS5meC5pbnRlcnZhbCA9IDEzOworalF1ZXJ5LmZ4LnN0
YXJ0ID0gZnVuY3Rpb24oKSB7CisgICAgaWYgKCAhdGltZXJJZCApIHsKKyAgICAgICAgdGltZXJJ
ZCA9IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgPworICAgICAgICAgICAgd2luZG93LnJl
cXVlc3RBbmltYXRpb25GcmFtZSggcmFmICkgOgorICAgICAgICAgICAgd2luZG93LnNldEludGVy
dmFsKCBqUXVlcnkuZngudGljaywgalF1ZXJ5LmZ4LmludGVydmFsICk7CisgICAgfQorfTsKKwor
alF1ZXJ5LmZ4LnN0b3AgPSBmdW5jdGlvbigpIHsKKyAgICBpZiAoIHdpbmRvdy5jYW5jZWxBbmlt
YXRpb25GcmFtZSApIHsKKyAgICAgICAgd2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKCB0aW1l
cklkICk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgd2luZG93LmNsZWFySW50ZXJ2YWwoIHRpbWVy
SWQgKTsKKyAgICB9CisKKyAgICB0aW1lcklkID0gbnVsbDsKK307CisKK2pRdWVyeS5meC5zcGVl
ZHMgPSB7CisgICAgc2xvdzogNjAwLAorICAgIGZhc3Q6IDIwMCwKKworICAgIC8vIERlZmF1bHQg
c3BlZWQKKyAgICBfZGVmYXVsdDogNDAwCit9OworCisKKy8vIEJhc2VkIG9mZiBvZiB0aGUgcGx1
Z2luIGJ5IENsaW50IEhlbGZlcnMsIHdpdGggcGVybWlzc2lvbi4KKy8vIGh0dHBzOi8vd2ViLmFy
Y2hpdmUub3JnL3dlYi8yMDEwMDMyNDAxNDc0Ny9odHRwOi8vYmxpbmRzaWduYWxzLmNvbS9pbmRl
eC5waHAvMjAwOS8wNy9qcXVlcnktZGVsYXkvCitqUXVlcnkuZm4uZGVsYXkgPSBmdW5jdGlvbigg
dGltZSwgdHlwZSApIHsKKyAgICB0aW1lID0galF1ZXJ5LmZ4ID8galF1ZXJ5LmZ4LnNwZWVkc1sg
dGltZSBdIHx8IHRpbWUgOiB0aW1lOworICAgIHR5cGUgPSB0eXBlIHx8ICJmeCI7CisKKyAgICBy
ZXR1cm4gdGhpcy5xdWV1ZSggdHlwZSwgZnVuY3Rpb24oIG5leHQsIGhvb2tzICkgeworICAgICAg
ICB2YXIgdGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0KCBuZXh0LCB0aW1lICk7CisgICAgICAg
IGhvb2tzLnN0b3AgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHdpbmRvdy5jbGVhclRpbWVv
dXQoIHRpbWVvdXQgKTsKKyAgICAgICAgfTsKKyAgICB9ICk7Cit9OworCisKKyggZnVuY3Rpb24o
KSB7CisgICAgdmFyIGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggImlucHV0IiApLAor
ICAgICAgICBzZWxlY3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCAic2VsZWN0IiApLAorICAg
ICAgICBvcHQgPSBzZWxlY3QuYXBwZW5kQ2hpbGQoIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoICJv
cHRpb24iICkgKTsKKworICAgIGlucHV0LnR5cGUgPSAiY2hlY2tib3giOworCisgICAgLy8gU3Vw
cG9ydDogQW5kcm9pZCA8PTQuMyBvbmx5CisgICAgLy8gRGVmYXVsdCB2YWx1ZSBmb3IgYSBjaGVj
a2JveCBzaG91bGQgYmUgIm9uIgorICAgIHN1cHBvcnQuY2hlY2tPbiA9IGlucHV0LnZhbHVlICE9
PSAiIjsKKworICAgIC8vIFN1cHBvcnQ6IElFIDw9MTEgb25seQorICAgIC8vIE11c3QgYWNjZXNz
IHNlbGVjdGVkSW5kZXggdG8gbWFrZSBkZWZhdWx0IG9wdGlvbnMgc2VsZWN0CisgICAgc3VwcG9y
dC5vcHRTZWxlY3RlZCA9IG9wdC5zZWxlY3RlZDsKKworICAgIC8vIFN1cHBvcnQ6IElFIDw9MTEg
b25seQorICAgIC8vIEFuIGlucHV0IGxvc2VzIGl0cyB2YWx1ZSBhZnRlciBiZWNvbWluZyBhIHJh
ZGlvCisgICAgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCAiaW5wdXQiICk7CisgICAg
aW5wdXQudmFsdWUgPSAidCI7CisgICAgaW5wdXQudHlwZSA9ICJyYWRpbyI7CisgICAgc3VwcG9y
dC5yYWRpb1ZhbHVlID0gaW5wdXQudmFsdWUgPT09ICJ0IjsKK30gKSgpOworCisKK3ZhciBib29s
SG9vaywKKyAgICBhdHRySGFuZGxlID0galF1ZXJ5LmV4cHIuYXR0ckhhbmRsZTsKKworalF1ZXJ5
LmZuLmV4dGVuZCggeworICAgIGF0dHI6IGZ1bmN0aW9uKCBuYW1lLCB2YWx1ZSApIHsKKyAgICAg
ICAgcmV0dXJuIGFjY2VzcyggdGhpcywgalF1ZXJ5LmF0dHIsIG5hbWUsIHZhbHVlLCBhcmd1bWVu
dHMubGVuZ3RoID4gMSApOworICAgIH0sCisKKyAgICByZW1vdmVBdHRyOiBmdW5jdGlvbiggbmFt
ZSApIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICBqUXVlcnkucmVtb3ZlQXR0ciggdGhpcywgbmFtZSApOworICAgICAgICB9ICk7CisgICAgfQor
fSApOworCitqUXVlcnkuZXh0ZW5kKCB7CisgICAgYXR0cjogZnVuY3Rpb24oIGVsZW0sIG5hbWUs
IHZhbHVlICkgeworICAgICAgICB2YXIgcmV0LCBob29rcywKKyAgICAgICAgICAgIG5UeXBlID0g
ZWxlbS5ub2RlVHlwZTsKKworICAgICAgICAvLyBEb24ndCBnZXQvc2V0IGF0dHJpYnV0ZXMgb24g
dGV4dCwgY29tbWVudCBhbmQgYXR0cmlidXRlIG5vZGVzCisgICAgICAgIGlmICggblR5cGUgPT09
IDMgfHwgblR5cGUgPT09IDggfHwgblR5cGUgPT09IDIgKSB7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKworICAgICAgICAvLyBGYWxsYmFjayB0byBwcm9wIHdoZW4gYXR0cmlidXRl
cyBhcmUgbm90IHN1cHBvcnRlZAorICAgICAgICBpZiAoIHR5cGVvZiBlbGVtLmdldEF0dHJpYnV0
ZSA9PT0gInVuZGVmaW5lZCIgKSB7CisgICAgICAgICAgICByZXR1cm4galF1ZXJ5LnByb3AoIGVs
ZW0sIG5hbWUsIHZhbHVlICk7CisgICAgICAgIH0KKworICAgICAgICAvLyBBdHRyaWJ1dGUgaG9v
a3MgYXJlIGRldGVybWluZWQgYnkgdGhlIGxvd2VyY2FzZSB2ZXJzaW9uCisgICAgICAgIC8vIEdy
YWIgbmVjZXNzYXJ5IGhvb2sgaWYgb25lIGlzIGRlZmluZWQKKyAgICAgICAgaWYgKCBuVHlwZSAh
PT0gMSB8fCAhalF1ZXJ5LmlzWE1MRG9jKCBlbGVtICkgKSB7CisgICAgICAgICAgICBob29rcyA9
IGpRdWVyeS5hdHRySG9va3NbIG5hbWUudG9Mb3dlckNhc2UoKSBdIHx8CisgICAgICAgICAgICAg
ICAgKCBqUXVlcnkuZXhwci5tYXRjaC5ib29sLnRlc3QoIG5hbWUgKSA/IGJvb2xIb29rIDogdW5k
ZWZpbmVkICk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIHZhbHVlICE9PSB1bmRlZmluZWQg
KSB7CisgICAgICAgICAgICBpZiAoIHZhbHVlID09PSBudWxsICkgeworICAgICAgICAgICAgICAg
IGpRdWVyeS5yZW1vdmVBdHRyKCBlbGVtLCBuYW1lICk7CisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIGhvb2tzICYmICJzZXQiIGluIGhv
b2tzICYmCisgICAgICAgICAgICAgICAgKCByZXQgPSBob29rcy5zZXQoIGVsZW0sIHZhbHVlLCBu
YW1lICkgKSAhPT0gdW5kZWZpbmVkICkgeworICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGVsZW0uc2V0QXR0cmlidXRlKCBuYW1lLCB2YWx1
ZSArICIiICk7CisgICAgICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgICAgIH0KKworICAgICAg
ICBpZiAoIGhvb2tzICYmICJnZXQiIGluIGhvb2tzICYmICggcmV0ID0gaG9va3MuZ2V0KCBlbGVt
LCBuYW1lICkgKSAhPT0gbnVsbCApIHsKKyAgICAgICAgICAgIHJldHVybiByZXQ7CisgICAgICAg
IH0KKworICAgICAgICByZXQgPSBqUXVlcnkuZmluZC5hdHRyKCBlbGVtLCBuYW1lICk7CisKKyAg
ICAgICAgLy8gTm9uLWV4aXN0ZW50IGF0dHJpYnV0ZXMgcmV0dXJuIG51bGwsIHdlIG5vcm1hbGl6
ZSB0byB1bmRlZmluZWQKKyAgICAgICAgcmV0dXJuIHJldCA9PSBudWxsID8gdW5kZWZpbmVkIDog
cmV0OworICAgIH0sCisKKyAgICBhdHRySG9va3M6IHsKKyAgICAgICAgdHlwZTogeworICAgICAg
ICAgICAgc2V0OiBmdW5jdGlvbiggZWxlbSwgdmFsdWUgKSB7CisgICAgICAgICAgICAgICAgaWYg
KCAhc3VwcG9ydC5yYWRpb1ZhbHVlICYmIHZhbHVlID09PSAicmFkaW8iICYmCisgICAgICAgICAg
ICAgICAgICAgIGpRdWVyeS5ub2RlTmFtZSggZWxlbSwgImlucHV0IiApICkgeworICAgICAgICAg
ICAgICAgICAgICB2YXIgdmFsID0gZWxlbS52YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgZWxl
bS5zZXRBdHRyaWJ1dGUoICJ0eXBlIiwgdmFsdWUgKTsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KCB2YWwgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBlbGVtLnZhbHVlID0gdmFsOworICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9LAorCisgICAg
cmVtb3ZlQXR0cjogZnVuY3Rpb24oIGVsZW0sIHZhbHVlICkgeworICAgICAgICB2YXIgbmFtZSwK
KyAgICAgICAgICAgIGkgPSAwLAorCisgICAgICAgICAgICAvLyBBdHRyaWJ1dGUgbmFtZXMgY2Fu
IGNvbnRhaW4gbm9uLUhUTUwgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzCisgICAgICAgICAgICAvLyBo
dHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNhdHRyaWJ1
dGVzLTIKKyAgICAgICAgICAgIGF0dHJOYW1lcyA9IHZhbHVlICYmIHZhbHVlLm1hdGNoKCBybm90
aHRtbHdoaXRlICk7CisKKyAgICAgICAgaWYgKCBhdHRyTmFtZXMgJiYgZWxlbS5ub2RlVHlwZSA9
PT0gMSApIHsKKyAgICAgICAgICAgIHdoaWxlICggKCBuYW1lID0gYXR0ck5hbWVzWyBpKysgXSAp
ICkgeworICAgICAgICAgICAgICAgIGVsZW0ucmVtb3ZlQXR0cmlidXRlKCBuYW1lICk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9ICk7CisKKy8vIEhvb2tzIGZvciBib29sZWFu
IGF0dHJpYnV0ZXMKK2Jvb2xIb29rID0geworICAgIHNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVl
LCBuYW1lICkgeworICAgICAgICBpZiAoIHZhbHVlID09PSBmYWxzZSApIHsKKworICAgICAgICAg
ICAgLy8gUmVtb3ZlIGJvb2xlYW4gYXR0cmlidXRlcyB3aGVuIHNldCB0byBmYWxzZQorICAgICAg
ICAgICAgalF1ZXJ5LnJlbW92ZUF0dHIoIGVsZW0sIG5hbWUgKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIGVsZW0uc2V0QXR0cmlidXRlKCBuYW1lLCBuYW1lICk7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIG5hbWU7CisgICAgfQorfTsKKworalF1ZXJ5LmVhY2goIGpRdWVyeS5l
eHByLm1hdGNoLmJvb2wuc291cmNlLm1hdGNoKCAvXHcrL2cgKSwgZnVuY3Rpb24oIGksIG5hbWUg
KSB7CisgICAgdmFyIGdldHRlciA9IGF0dHJIYW5kbGVbIG5hbWUgXSB8fCBqUXVlcnkuZmluZC5h
dHRyOworCisgICAgYXR0ckhhbmRsZVsgbmFtZSBdID0gZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGlz
WE1MICkgeworICAgICAgICB2YXIgcmV0LCBoYW5kbGUsCisgICAgICAgICAgICBsb3dlcmNhc2VO
YW1lID0gbmFtZS50b0xvd2VyQ2FzZSgpOworCisgICAgICAgIGlmICggIWlzWE1MICkgeworCisg
ICAgICAgICAgICAvLyBBdm9pZCBhbiBpbmZpbml0ZSBsb29wIGJ5IHRlbXBvcmFyaWx5IHJlbW92
aW5nIHRoaXMgZnVuY3Rpb24gZnJvbSB0aGUgZ2V0dGVyCisgICAgICAgICAgICBoYW5kbGUgPSBh
dHRySGFuZGxlWyBsb3dlcmNhc2VOYW1lIF07CisgICAgICAgICAgICBhdHRySGFuZGxlWyBsb3dl
cmNhc2VOYW1lIF0gPSByZXQ7CisgICAgICAgICAgICByZXQgPSBnZXR0ZXIoIGVsZW0sIG5hbWUs
IGlzWE1MICkgIT0gbnVsbCA/CisgICAgICAgICAgICAgICAgbG93ZXJjYXNlTmFtZSA6CisgICAg
ICAgICAgICAgICAgbnVsbDsKKyAgICAgICAgICAgIGF0dHJIYW5kbGVbIGxvd2VyY2FzZU5hbWUg
XSA9IGhhbmRsZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmV0OworICAgIH07Cit9ICk7
CisKKworCisKK3ZhciByZm9jdXNhYmxlID0gL14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0
dG9uKSQvaSwKKyAgICByY2xpY2thYmxlID0gL14oPzphfGFyZWEpJC9pOworCitqUXVlcnkuZm4u
ZXh0ZW5kKCB7CisgICAgcHJvcDogZnVuY3Rpb24oIG5hbWUsIHZhbHVlICkgeworICAgICAgICBy
ZXR1cm4gYWNjZXNzKCB0aGlzLCBqUXVlcnkucHJvcCwgbmFtZSwgdmFsdWUsIGFyZ3VtZW50cy5s
ZW5ndGggPiAxICk7CisgICAgfSwKKworICAgIHJlbW92ZVByb3A6IGZ1bmN0aW9uKCBuYW1lICkg
eworICAgICAgICByZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGRl
bGV0ZSB0aGlzWyBqUXVlcnkucHJvcEZpeFsgbmFtZSBdIHx8IG5hbWUgXTsKKyAgICAgICAgfSAp
OworICAgIH0KK30gKTsKKworalF1ZXJ5LmV4dGVuZCggeworICAgIHByb3A6IGZ1bmN0aW9uKCBl
bGVtLCBuYW1lLCB2YWx1ZSApIHsKKyAgICAgICAgdmFyIHJldCwgaG9va3MsCisgICAgICAgICAg
ICBuVHlwZSA9IGVsZW0ubm9kZVR5cGU7CisKKyAgICAgICAgLy8gRG9uJ3QgZ2V0L3NldCBwcm9w
ZXJ0aWVzIG9uIHRleHQsIGNvbW1lbnQgYW5kIGF0dHJpYnV0ZSBub2RlcworICAgICAgICBpZiAo
IG5UeXBlID09PSAzIHx8IG5UeXBlID09PSA4IHx8IG5UeXBlID09PSAyICkgeworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCBuVHlwZSAhPT0gMSB8fCAhalF1
ZXJ5LmlzWE1MRG9jKCBlbGVtICkgKSB7CisKKyAgICAgICAgICAgIC8vIEZpeCBuYW1lIGFuZCBh
dHRhY2ggaG9va3MKKyAgICAgICAgICAgIG5hbWUgPSBqUXVlcnkucHJvcEZpeFsgbmFtZSBdIHx8
IG5hbWU7CisgICAgICAgICAgICBob29rcyA9IGpRdWVyeS5wcm9wSG9va3NbIG5hbWUgXTsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmICggdmFsdWUgIT09IHVuZGVmaW5lZCApIHsKKyAgICAgICAg
ICAgIGlmICggaG9va3MgJiYgInNldCIgaW4gaG9va3MgJiYKKyAgICAgICAgICAgICAgICAoIHJl
dCA9IGhvb2tzLnNldCggZWxlbSwgdmFsdWUsIG5hbWUgKSApICE9PSB1bmRlZmluZWQgKSB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
cmV0dXJuICggZWxlbVsgbmFtZSBdID0gdmFsdWUgKTsKKyAgICAgICAgfQorCisgICAgICAgIGlm
ICggaG9va3MgJiYgImdldCIgaW4gaG9va3MgJiYgKCByZXQgPSBob29rcy5nZXQoIGVsZW0sIG5h
bWUgKSApICE9PSBudWxsICkgeworICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgICAgfQor
CisgICAgICAgIHJldHVybiBlbGVtWyBuYW1lIF07CisgICAgfSwKKworICAgIHByb3BIb29rczog
eworICAgICAgICB0YWJJbmRleDogeworICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiggZWxlbSAp
IHsKKworICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6IElFIDw9OSAtIDExIG9ubHkKKyAgICAg
ICAgICAgICAgICAvLyBlbGVtLnRhYkluZGV4IGRvZXNuJ3QgYWx3YXlzIHJldHVybiB0aGUKKyAg
ICAgICAgICAgICAgICAvLyBjb3JyZWN0IHZhbHVlIHdoZW4gaXQgaGFzbid0IGJlZW4gZXhwbGlj
aXRseSBzZXQKKyAgICAgICAgICAgICAgICAvLyBodHRwczovL3dlYi5hcmNoaXZlLm9yZy93ZWIv
MjAxNDExMTYyMzMzNDcvaHR0cDovL2ZsdWlkcHJvamVjdC5vcmcvYmxvZy8yMDA4LzAxLzA5L2dl
dHRpbmctc2V0dGluZy1hbmQtcmVtb3ZpbmctdGFiaW5kZXgtdmFsdWVzLXdpdGgtamF2YXNjcmlw
dC8KKyAgICAgICAgICAgICAgICAvLyBVc2UgcHJvcGVyIGF0dHJpYnV0ZSByZXRyaWV2YWwoIzEy
MDcyKQorICAgICAgICAgICAgICAgIHZhciB0YWJpbmRleCA9IGpRdWVyeS5maW5kLmF0dHIoIGVs
ZW0sICJ0YWJpbmRleCIgKTsKKworICAgICAgICAgICAgICAgIGlmICggdGFiaW5kZXggKSB7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUludCggdGFiaW5kZXgsIDEwICk7CisgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKAorICAgICAgICAgICAgICAgICAg
ICByZm9jdXNhYmxlLnRlc3QoIGVsZW0ubm9kZU5hbWUgKSB8fAorICAgICAgICAgICAgICAgICAg
ICByY2xpY2thYmxlLnRlc3QoIGVsZW0ubm9kZU5hbWUgKSAmJgorICAgICAgICAgICAgICAgICAg
ICBlbGVtLmhyZWYKKyAgICAgICAgICAgICAgICApIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSwKKworICAgIHByb3BGaXg6IHsKKyAgICAg
ICAgImZvciI6ICJodG1sRm9yIiwKKyAgICAgICAgImNsYXNzIjogImNsYXNzTmFtZSIKKyAgICB9
Cit9ICk7CisKKy8vIFN1cHBvcnQ6IElFIDw9MTEgb25seQorLy8gQWNjZXNzaW5nIHRoZSBzZWxl
Y3RlZEluZGV4IHByb3BlcnR5CisvLyBmb3JjZXMgdGhlIGJyb3dzZXIgdG8gcmVzcGVjdCBzZXR0
aW5nIHNlbGVjdGVkCisvLyBvbiB0aGUgb3B0aW9uCisvLyBUaGUgZ2V0dGVyIGVuc3VyZXMgYSBk
ZWZhdWx0IG9wdGlvbiBpcyBzZWxlY3RlZAorLy8gd2hlbiBpbiBhbiBvcHRncm91cAorLy8gZXNs
aW50IHJ1bGUgIm5vLXVudXNlZC1leHByZXNzaW9ucyIgaXMgZGlzYWJsZWQgZm9yIHRoaXMgY29k
ZQorLy8gc2luY2UgaXQgY29uc2lkZXJzIHN1Y2ggYWNjZXNzaW9ucyBub29wCitpZiAoICFzdXBw
b3J0Lm9wdFNlbGVjdGVkICkgeworICAgIGpRdWVyeS5wcm9wSG9va3Muc2VsZWN0ZWQgPSB7Cisg
ICAgICAgIGdldDogZnVuY3Rpb24oIGVsZW0gKSB7CisKKyAgICAgICAgICAgIC8qIGVzbGludCBu
by11bnVzZWQtZXhwcmVzc2lvbnM6ICJvZmYiICovCisKKyAgICAgICAgICAgIHZhciBwYXJlbnQg
PSBlbGVtLnBhcmVudE5vZGU7CisgICAgICAgICAgICBpZiAoIHBhcmVudCAmJiBwYXJlbnQucGFy
ZW50Tm9kZSApIHsKKyAgICAgICAgICAgICAgICBwYXJlbnQucGFyZW50Tm9kZS5zZWxlY3RlZElu
ZGV4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0s
CisgICAgICAgIHNldDogZnVuY3Rpb24oIGVsZW0gKSB7CisKKyAgICAgICAgICAgIC8qIGVzbGlu
dCBuby11bnVzZWQtZXhwcmVzc2lvbnM6ICJvZmYiICovCisKKyAgICAgICAgICAgIHZhciBwYXJl
bnQgPSBlbGVtLnBhcmVudE5vZGU7CisgICAgICAgICAgICBpZiAoIHBhcmVudCApIHsKKyAgICAg
ICAgICAgICAgICBwYXJlbnQuc2VsZWN0ZWRJbmRleDsKKworICAgICAgICAgICAgICAgIGlmICgg
cGFyZW50LnBhcmVudE5vZGUgKSB7CisgICAgICAgICAgICAgICAgICAgIHBhcmVudC5wYXJlbnRO
b2RlLnNlbGVjdGVkSW5kZXg7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfTsKK30KKworalF1ZXJ5LmVhY2goIFsKKyAgICAidGFiSW5kZXgiLAorICAg
ICJyZWFkT25seSIsCisgICAgIm1heExlbmd0aCIsCisgICAgImNlbGxTcGFjaW5nIiwKKyAgICAi
Y2VsbFBhZGRpbmciLAorICAgICJyb3dTcGFuIiwKKyAgICAiY29sU3BhbiIsCisgICAgInVzZU1h
cCIsCisgICAgImZyYW1lQm9yZGVyIiwKKyAgICAiY29udGVudEVkaXRhYmxlIgorXSwgZnVuY3Rp
b24oKSB7CisgICAgalF1ZXJ5LnByb3BGaXhbIHRoaXMudG9Mb3dlckNhc2UoKSBdID0gdGhpczsK
K30gKTsKKworCisKKworICAgIC8vIFN0cmlwIGFuZCBjb2xsYXBzZSB3aGl0ZXNwYWNlIGFjY29y
ZGluZyB0byBIVE1MIHNwZWMKKyAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211
bHRpcGFnZS9pbmZyYXN0cnVjdHVyZS5odG1sI3N0cmlwLWFuZC1jb2xsYXBzZS13aGl0ZXNwYWNl
CisgICAgZnVuY3Rpb24gc3RyaXBBbmRDb2xsYXBzZSggdmFsdWUgKSB7CisgICAgICAgIHZhciB0
b2tlbnMgPSB2YWx1ZS5tYXRjaCggcm5vdGh0bWx3aGl0ZSApIHx8IFtdOworICAgICAgICByZXR1
cm4gdG9rZW5zLmpvaW4oICIgIiApOworICAgIH0KKworCitmdW5jdGlvbiBnZXRDbGFzcyggZWxl
bSApIHsKKyAgICByZXR1cm4gZWxlbS5nZXRBdHRyaWJ1dGUgJiYgZWxlbS5nZXRBdHRyaWJ1dGUo
ICJjbGFzcyIgKSB8fCAiIjsKK30KKworalF1ZXJ5LmZuLmV4dGVuZCggeworICAgIGFkZENsYXNz
OiBmdW5jdGlvbiggdmFsdWUgKSB7CisgICAgICAgIHZhciBjbGFzc2VzLCBlbGVtLCBjdXIsIGN1
clZhbHVlLCBjbGF6eiwgaiwgZmluYWxWYWx1ZSwKKyAgICAgICAgICAgIGkgPSAwOworCisgICAg
ICAgIGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIHZhbHVlICkgKSB7CisgICAgICAgICAgICByZXR1
cm4gdGhpcy5lYWNoKCBmdW5jdGlvbiggaiApIHsKKyAgICAgICAgICAgICAgICBqUXVlcnkoIHRo
aXMgKS5hZGRDbGFzcyggdmFsdWUuY2FsbCggdGhpcywgaiwgZ2V0Q2xhc3MoIHRoaXMgKSApICk7
CisgICAgICAgICAgICB9ICk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIHR5cGVvZiB2YWx1
ZSA9PT0gInN0cmluZyIgJiYgdmFsdWUgKSB7CisgICAgICAgICAgICBjbGFzc2VzID0gdmFsdWUu
bWF0Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbXTsKKworICAgICAgICAgICAgd2hpbGUgKCAoIGVs
ZW0gPSB0aGlzWyBpKysgXSApICkgeworICAgICAgICAgICAgICAgIGN1clZhbHVlID0gZ2V0Q2xh
c3MoIGVsZW0gKTsKKyAgICAgICAgICAgICAgICBjdXIgPSBlbGVtLm5vZGVUeXBlID09PSAxICYm
ICggIiAiICsgc3RyaXBBbmRDb2xsYXBzZSggY3VyVmFsdWUgKSArICIgIiApOworCisgICAgICAg
ICAgICAgICAgaWYgKCBjdXIgKSB7CisgICAgICAgICAgICAgICAgICAgIGogPSAwOworICAgICAg
ICAgICAgICAgICAgICB3aGlsZSAoICggY2xhenogPSBjbGFzc2VzWyBqKysgXSApICkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCBjdXIuaW5kZXhPZiggIiAiICsgY2xhenogKyAiICIg
KSA8IDAgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyICs9IGNsYXp6ICsgIiAi
OworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICAgICAgLy8gT25seSBhc3NpZ24gaWYgZGlmZmVyZW50IHRvIGF2b2lkIHVu
bmVlZGVkIHJlbmRlcmluZy4KKyAgICAgICAgICAgICAgICAgICAgZmluYWxWYWx1ZSA9IHN0cmlw
QW5kQ29sbGFwc2UoIGN1ciApOworICAgICAgICAgICAgICAgICAgICBpZiAoIGN1clZhbHVlICE9
PSBmaW5hbFZhbHVlICkgeworICAgICAgICAgICAgICAgICAgICAgICAgZWxlbS5zZXRBdHRyaWJ1
dGUoICJjbGFzcyIsIGZpbmFsVmFsdWUgKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0
aGlzOworICAgIH0sCisKKyAgICByZW1vdmVDbGFzczogZnVuY3Rpb24oIHZhbHVlICkgeworICAg
ICAgICB2YXIgY2xhc3NlcywgZWxlbSwgY3VyLCBjdXJWYWx1ZSwgY2xhenosIGosIGZpbmFsVmFs
dWUsCisgICAgICAgICAgICBpID0gMDsKKworICAgICAgICBpZiAoIGpRdWVyeS5pc0Z1bmN0aW9u
KCB2YWx1ZSApICkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oIGog
KSB7CisgICAgICAgICAgICAgICAgalF1ZXJ5KCB0aGlzICkucmVtb3ZlQ2xhc3MoIHZhbHVlLmNh
bGwoIHRoaXMsIGosIGdldENsYXNzKCB0aGlzICkgKSApOworICAgICAgICAgICAgfSApOworICAg
ICAgICB9CisKKyAgICAgICAgaWYgKCAhYXJndW1lbnRzLmxlbmd0aCApIHsKKyAgICAgICAgICAg
IHJldHVybiB0aGlzLmF0dHIoICJjbGFzcyIsICIiICk7CisgICAgICAgIH0KKworICAgICAgICBp
ZiAoIHR5cGVvZiB2YWx1ZSA9PT0gInN0cmluZyIgJiYgdmFsdWUgKSB7CisgICAgICAgICAgICBj
bGFzc2VzID0gdmFsdWUubWF0Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbXTsKKworICAgICAgICAg
ICAgd2hpbGUgKCAoIGVsZW0gPSB0aGlzWyBpKysgXSApICkgeworICAgICAgICAgICAgICAgIGN1
clZhbHVlID0gZ2V0Q2xhc3MoIGVsZW0gKTsKKworICAgICAgICAgICAgICAgIC8vIFRoaXMgZXhw
cmVzc2lvbiBpcyBoZXJlIGZvciBiZXR0ZXIgY29tcHJlc3NpYmlsaXR5IChzZWUgYWRkQ2xhc3Mp
CisgICAgICAgICAgICAgICAgY3VyID0gZWxlbS5ub2RlVHlwZSA9PT0gMSAmJiAoICIgIiArIHN0
cmlwQW5kQ29sbGFwc2UoIGN1clZhbHVlICkgKyAiICIgKTsKKworICAgICAgICAgICAgICAgIGlm
ICggY3VyICkgeworICAgICAgICAgICAgICAgICAgICBqID0gMDsKKyAgICAgICAgICAgICAgICAg
ICAgd2hpbGUgKCAoIGNsYXp6ID0gY2xhc3Nlc1sgaisrIF0gKSApIHsKKworICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gUmVtb3ZlICphbGwqIGluc3RhbmNlcworICAgICAgICAgICAgICAgICAg
ICAgICAgd2hpbGUgKCBjdXIuaW5kZXhPZiggIiAiICsgY2xhenogKyAiICIgKSA+IC0xICkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1ciA9IGN1ci5yZXBsYWNlKCAiICIgKyBjbGF6
eiArICIgIiwgIiAiICk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAvLyBPbmx5IGFzc2lnbiBpZiBkaWZmZXJl
bnQgdG8gYXZvaWQgdW5uZWVkZWQgcmVuZGVyaW5nLgorICAgICAgICAgICAgICAgICAgICBmaW5h
bFZhbHVlID0gc3RyaXBBbmRDb2xsYXBzZSggY3VyICk7CisgICAgICAgICAgICAgICAgICAgIGlm
ICggY3VyVmFsdWUgIT09IGZpbmFsVmFsdWUgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBl
bGVtLnNldEF0dHJpYnV0ZSggImNsYXNzIiwgZmluYWxWYWx1ZSApOworICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAg
ICAgICAgcmV0dXJuIHRoaXM7CisgICAgfSwKKworICAgIHRvZ2dsZUNsYXNzOiBmdW5jdGlvbigg
dmFsdWUsIHN0YXRlVmFsICkgeworICAgICAgICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTsKKwor
ICAgICAgICBpZiAoIHR5cGVvZiBzdGF0ZVZhbCA9PT0gImJvb2xlYW4iICYmIHR5cGUgPT09ICJz
dHJpbmciICkgeworICAgICAgICAgICAgcmV0dXJuIHN0YXRlVmFsID8gdGhpcy5hZGRDbGFzcygg
dmFsdWUgKSA6IHRoaXMucmVtb3ZlQ2xhc3MoIHZhbHVlICk7CisgICAgICAgIH0KKworICAgICAg
ICBpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCB2YWx1ZSApICkgeworICAgICAgICAgICAgcmV0dXJu
IHRoaXMuZWFjaCggZnVuY3Rpb24oIGkgKSB7CisgICAgICAgICAgICAgICAgalF1ZXJ5KCB0aGlz
ICkudG9nZ2xlQ2xhc3MoCisgICAgICAgICAgICAgICAgICAgIHZhbHVlLmNhbGwoIHRoaXMsIGks
IGdldENsYXNzKCB0aGlzICksIHN0YXRlVmFsICksCisgICAgICAgICAgICAgICAgICAgIHN0YXRl
VmFsCisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIH0gKTsKKyAgICAgICAgfQorCisg
ICAgICAgIHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdmFyIGNs
YXNzTmFtZSwgaSwgc2VsZiwgY2xhc3NOYW1lczsKKworICAgICAgICAgICAgaWYgKCB0eXBlID09
PSAic3RyaW5nIiApIHsKKworICAgICAgICAgICAgICAgIC8vIFRvZ2dsZSBpbmRpdmlkdWFsIGNs
YXNzIG5hbWVzCisgICAgICAgICAgICAgICAgaSA9IDA7CisgICAgICAgICAgICAgICAgc2VsZiA9
IGpRdWVyeSggdGhpcyApOworICAgICAgICAgICAgICAgIGNsYXNzTmFtZXMgPSB2YWx1ZS5tYXRj
aCggcm5vdGh0bWx3aGl0ZSApIHx8IFtdOworCisgICAgICAgICAgICAgICAgd2hpbGUgKCAoIGNs
YXNzTmFtZSA9IGNsYXNzTmFtZXNbIGkrKyBdICkgKSB7CisKKyAgICAgICAgICAgICAgICAgICAg
Ly8gQ2hlY2sgZWFjaCBjbGFzc05hbWUgZ2l2ZW4sIHNwYWNlIHNlcGFyYXRlZCBsaXN0CisgICAg
ICAgICAgICAgICAgICAgIGlmICggc2VsZi5oYXNDbGFzcyggY2xhc3NOYW1lICkgKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBzZWxmLnJlbW92ZUNsYXNzKCBjbGFzc05hbWUgKTsKKyAgICAg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYWRk
Q2xhc3MoIGNsYXNzTmFtZSApOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAvLyBUb2dnbGUgd2hvbGUgY2xhc3MgbmFtZQorICAgICAgICAg
ICAgfSBlbHNlIGlmICggdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB0eXBlID09PSAiYm9vbGVhbiIg
KSB7CisgICAgICAgICAgICAgICAgY2xhc3NOYW1lID0gZ2V0Q2xhc3MoIHRoaXMgKTsKKyAgICAg
ICAgICAgICAgICBpZiAoIGNsYXNzTmFtZSApIHsKKworICAgICAgICAgICAgICAgICAgICAvLyBT
dG9yZSBjbGFzc05hbWUgaWYgc2V0CisgICAgICAgICAgICAgICAgICAgIGRhdGFQcml2LnNldCgg
dGhpcywgIl9fY2xhc3NOYW1lX18iLCBjbGFzc05hbWUgKTsKKyAgICAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICAvLyBJZiB0aGUgZWxlbWVudCBoYXMgYSBjbGFzcyBuYW1lIG9yIGlm
IHdlJ3JlIHBhc3NlZCBgZmFsc2VgLAorICAgICAgICAgICAgICAgIC8vIHRoZW4gcmVtb3ZlIHRo
ZSB3aG9sZSBjbGFzc25hbWUgKGlmIHRoZXJlIHdhcyBvbmUsIHRoZSBhYm92ZSBzYXZlZCBpdCku
CisgICAgICAgICAgICAgICAgLy8gT3RoZXJ3aXNlIGJyaW5nIGJhY2sgd2hhdGV2ZXIgd2FzIHBy
ZXZpb3VzbHkgc2F2ZWQgKGlmIGFueXRoaW5nKSwKKyAgICAgICAgICAgICAgICAvLyBmYWxsaW5n
IGJhY2sgdG8gdGhlIGVtcHR5IHN0cmluZyBpZiBub3RoaW5nIHdhcyBzdG9yZWQuCisgICAgICAg
ICAgICAgICAgaWYgKCB0aGlzLnNldEF0dHJpYnV0ZSApIHsKKyAgICAgICAgICAgICAgICAgICAg
dGhpcy5zZXRBdHRyaWJ1dGUoICJjbGFzcyIsCisgICAgICAgICAgICAgICAgICAgICAgICBjbGFz
c05hbWUgfHwgdmFsdWUgPT09IGZhbHNlID8KKyAgICAgICAgICAgICAgICAgICAgICAgICIiIDoK
KyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFQcml2LmdldCggdGhpcywgIl9fY2xhc3NOYW1l
X18iICkgfHwgIiIKKyAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0gKTsKKyAgICB9LAorCisgICAgaGFzQ2xhc3M6IGZ1bmN0
aW9uKCBzZWxlY3RvciApIHsKKyAgICAgICAgdmFyIGNsYXNzTmFtZSwgZWxlbSwKKyAgICAgICAg
ICAgIGkgPSAwOworCisgICAgICAgIGNsYXNzTmFtZSA9ICIgIiArIHNlbGVjdG9yICsgIiAiOwor
ICAgICAgICB3aGlsZSAoICggZWxlbSA9IHRoaXNbIGkrKyBdICkgKSB7CisgICAgICAgICAgICBp
ZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgJiYKKyAgICAgICAgICAgICAgICAoICIgIiArIHN0cmlw
QW5kQ29sbGFwc2UoIGdldENsYXNzKCBlbGVtICkgKSArICIgIiApLmluZGV4T2YoIGNsYXNzTmFt
ZSApID4gLTEgKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30gKTsKKwor
CisKKwordmFyIHJyZXR1cm4gPSAvXHIvZzsKKworalF1ZXJ5LmZuLmV4dGVuZCggeworICAgIHZh
bDogZnVuY3Rpb24oIHZhbHVlICkgeworICAgICAgICB2YXIgaG9va3MsIHJldCwgaXNGdW5jdGlv
biwKKyAgICAgICAgICAgIGVsZW0gPSB0aGlzWyAwIF07CisKKyAgICAgICAgaWYgKCAhYXJndW1l
bnRzLmxlbmd0aCApIHsKKyAgICAgICAgICAgIGlmICggZWxlbSApIHsKKyAgICAgICAgICAgICAg
ICBob29rcyA9IGpRdWVyeS52YWxIb29rc1sgZWxlbS50eXBlIF0gfHwKKyAgICAgICAgICAgICAg
ICAgICAgalF1ZXJ5LnZhbEhvb2tzWyBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgXTsKKwor
ICAgICAgICAgICAgICAgIGlmICggaG9va3MgJiYKKyAgICAgICAgICAgICAgICAgICAgImdldCIg
aW4gaG9va3MgJiYKKyAgICAgICAgICAgICAgICAgICAgKCByZXQgPSBob29rcy5nZXQoIGVsZW0s
ICJ2YWx1ZSIgKSApICE9PSB1bmRlZmluZWQKKyAgICAgICAgICAgICAgICApIHsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICByZXQgPSBlbGVtLnZhbHVlOworCisgICAgICAgICAgICAgICAgLy8gSGFuZGxlIG1vc3Qg
Y29tbW9uIHN0cmluZyBjYXNlcworICAgICAgICAgICAgICAgIGlmICggdHlwZW9mIHJldCA9PT0g
InN0cmluZyIgKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQucmVwbGFjZSggcnJl
dHVybiwgIiIgKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBIYW5k
bGUgY2FzZXMgd2hlcmUgdmFsdWUgaXMgbnVsbC91bmRlZiBvciBudW1iZXIKKyAgICAgICAgICAg
ICAgICByZXR1cm4gcmV0ID09IG51bGwgPyAiIiA6IHJldDsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaXNGdW5jdGlvbiA9IGpRdWVy
eS5pc0Z1bmN0aW9uKCB2YWx1ZSApOworCisgICAgICAgIHJldHVybiB0aGlzLmVhY2goIGZ1bmN0
aW9uKCBpICkgeworICAgICAgICAgICAgdmFyIHZhbDsKKworICAgICAgICAgICAgaWYgKCB0aGlz
Lm5vZGVUeXBlICE9PSAxICkgeworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgaWYgKCBpc0Z1bmN0aW9uICkgeworICAgICAgICAgICAgICAgIHZh
bCA9IHZhbHVlLmNhbGwoIHRoaXMsIGksIGpRdWVyeSggdGhpcyApLnZhbCgpICk7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHZhbCA9IHZhbHVlOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAvLyBUcmVhdCBudWxsL3VuZGVmaW5lZCBhcyAiIjsgY29udmVydCBu
dW1iZXJzIHRvIHN0cmluZworICAgICAgICAgICAgaWYgKCB2YWwgPT0gbnVsbCApIHsKKyAgICAg
ICAgICAgICAgICB2YWwgPSAiIjsKKworICAgICAgICAgICAgfSBlbHNlIGlmICggdHlwZW9mIHZh
bCA9PT0gIm51bWJlciIgKSB7CisgICAgICAgICAgICAgICAgdmFsICs9ICIiOworCisgICAgICAg
ICAgICB9IGVsc2UgaWYgKCBqUXVlcnkuaXNBcnJheSggdmFsICkgKSB7CisgICAgICAgICAgICAg
ICAgdmFsID0galF1ZXJ5Lm1hcCggdmFsLCBmdW5jdGlvbiggdmFsdWUgKSB7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB2YWx1ZSA9PSBudWxsID8gIiIgOiB2YWx1ZSArICIiOworICAgICAg
ICAgICAgICAgIH0gKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaG9va3MgPSBqUXVl
cnkudmFsSG9va3NbIHRoaXMudHlwZSBdIHx8IGpRdWVyeS52YWxIb29rc1sgdGhpcy5ub2RlTmFt
ZS50b0xvd2VyQ2FzZSgpIF07CisKKyAgICAgICAgICAgIC8vIElmIHNldCByZXR1cm5zIHVuZGVm
aW5lZCwgZmFsbCBiYWNrIHRvIG5vcm1hbCBzZXR0aW5nCisgICAgICAgICAgICBpZiAoICFob29r
cyB8fCAhKCAic2V0IiBpbiBob29rcyApIHx8IGhvb2tzLnNldCggdGhpcywgdmFsLCAidmFsdWUi
ICkgPT09IHVuZGVmaW5lZCApIHsKKyAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdmFsOwor
ICAgICAgICAgICAgfQorICAgICAgICB9ICk7CisgICAgfQorfSApOworCitqUXVlcnkuZXh0ZW5k
KCB7CisgICAgdmFsSG9va3M6IHsKKyAgICAgICAgb3B0aW9uOiB7CisgICAgICAgICAgICBnZXQ6
IGZ1bmN0aW9uKCBlbGVtICkgeworCisgICAgICAgICAgICAgICAgdmFyIHZhbCA9IGpRdWVyeS5m
aW5kLmF0dHIoIGVsZW0sICJ2YWx1ZSIgKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdmFsICE9
IG51bGwgPworICAgICAgICAgICAgICAgICAgICB2YWwgOgorCisgICAgICAgICAgICAgICAgICAg
IC8vIFN1cHBvcnQ6IElFIDw9MTAgLSAxMSBvbmx5CisgICAgICAgICAgICAgICAgICAgIC8vIG9w
dGlvbi50ZXh0IHRocm93cyBleGNlcHRpb25zICgjMTQ2ODYsICMxNDg1OCkKKyAgICAgICAgICAg
ICAgICAgICAgLy8gU3RyaXAgYW5kIGNvbGxhcHNlIHdoaXRlc3BhY2UKKyAgICAgICAgICAgICAg
ICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jc3RyaXAtYW5kLWNvbGxhcHNl
LXdoaXRlc3BhY2UKKyAgICAgICAgICAgICAgICAgICAgc3RyaXBBbmRDb2xsYXBzZSggalF1ZXJ5
LnRleHQoIGVsZW0gKSApOworICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICBzZWxl
Y3Q6IHsKKyAgICAgICAgICAgIGdldDogZnVuY3Rpb24oIGVsZW0gKSB7CisgICAgICAgICAgICAg
ICAgdmFyIHZhbHVlLCBvcHRpb24sIGksCisgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMgPSBl
bGVtLm9wdGlvbnMsCisgICAgICAgICAgICAgICAgICAgIGluZGV4ID0gZWxlbS5zZWxlY3RlZElu
ZGV4LAorICAgICAgICAgICAgICAgICAgICBvbmUgPSBlbGVtLnR5cGUgPT09ICJzZWxlY3Qtb25l
IiwKKyAgICAgICAgICAgICAgICAgICAgdmFsdWVzID0gb25lID8gbnVsbCA6IFtdLAorICAgICAg
ICAgICAgICAgICAgICBtYXggPSBvbmUgPyBpbmRleCArIDEgOiBvcHRpb25zLmxlbmd0aDsKKwor
ICAgICAgICAgICAgICAgIGlmICggaW5kZXggPCAwICkgeworICAgICAgICAgICAgICAgICAgICBp
ID0gbWF4OworCisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAg
aSA9IG9uZSA/IGluZGV4IDogMDsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICAvLyBMb29wIHRocm91Z2ggYWxsIHRoZSBzZWxlY3RlZCBvcHRpb25zCisgICAgICAgICAgICAg
ICAgZm9yICggOyBpIDwgbWF4OyBpKysgKSB7CisgICAgICAgICAgICAgICAgICAgIG9wdGlvbiA9
IG9wdGlvbnNbIGkgXTsKKworICAgICAgICAgICAgICAgICAgICAvLyBTdXBwb3J0OiBJRSA8PTkg
b25seQorICAgICAgICAgICAgICAgICAgICAvLyBJRTgtOSBkb2Vzbid0IHVwZGF0ZSBzZWxlY3Rl
ZCBhZnRlciBmb3JtIHJlc2V0ICgjMjU1MSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKCAoIG9w
dGlvbi5zZWxlY3RlZCB8fCBpID09PSBpbmRleCApICYmCisKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBEb24ndCByZXR1cm4gb3B0aW9ucyB0aGF0IGFyZSBkaXNhYmxlZCBvciBpbiBh
IGRpc2FibGVkIG9wdGdyb3VwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIW9wdGlvbi5k
aXNhYmxlZCAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICggIW9wdGlvbi5wYXJlbnRO
b2RlLmRpc2FibGVkIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFqUXVlcnku
bm9kZU5hbWUoIG9wdGlvbi5wYXJlbnROb2RlLCAib3B0Z3JvdXAiICkgKSApIHsKKworICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gR2V0IHRoZSBzcGVjaWZpYyB2YWx1ZSBmb3IgdGhlIG9wdGlv
bgorICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBqUXVlcnkoIG9wdGlvbiApLnZhbCgp
OworCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBkb24ndCBuZWVkIGFuIGFycmF5IGZv
ciBvbmUgc2VsZWN0cworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBvbmUgKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlOworICAgICAgICAgICAgICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBNdWx0aS1TZWxlY3RzIHJldHVy
biBhbiBhcnJheQorICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzLnB1c2goIHZhbHVlICk7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICByZXR1cm4gdmFsdWVzOworICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgc2V0OiBm
dW5jdGlvbiggZWxlbSwgdmFsdWUgKSB7CisgICAgICAgICAgICAgICAgdmFyIG9wdGlvblNldCwg
b3B0aW9uLAorICAgICAgICAgICAgICAgICAgICBvcHRpb25zID0gZWxlbS5vcHRpb25zLAorICAg
ICAgICAgICAgICAgICAgICB2YWx1ZXMgPSBqUXVlcnkubWFrZUFycmF5KCB2YWx1ZSApLAorICAg
ICAgICAgICAgICAgICAgICBpID0gb3B0aW9ucy5sZW5ndGg7CisKKyAgICAgICAgICAgICAgICB3
aGlsZSAoIGktLSApIHsKKyAgICAgICAgICAgICAgICAgICAgb3B0aW9uID0gb3B0aW9uc1sgaSBd
OworCisgICAgICAgICAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLWNvbmQtYXNzaWdu
ICovCisKKyAgICAgICAgICAgICAgICAgICAgaWYgKCBvcHRpb24uc2VsZWN0ZWQgPQorICAgICAg
ICAgICAgICAgICAgICAgICAgalF1ZXJ5LmluQXJyYXkoIGpRdWVyeS52YWxIb29rcy5vcHRpb24u
Z2V0KCBvcHRpb24gKSwgdmFsdWVzICkgPiAtMQorICAgICAgICAgICAgICAgICAgICApIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG9wdGlvblNldCA9IHRydWU7CisgICAgICAgICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgICAgICAgICAvKiBlc2xpbnQtZW5hYmxlIG5vLWNvbmQtYXNz
aWduICovCisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gRm9yY2UgYnJv
d3NlcnMgdG8gYmVoYXZlIGNvbnNpc3RlbnRseSB3aGVuIG5vbi1tYXRjaGluZyB2YWx1ZSBpcyBz
ZXQKKyAgICAgICAgICAgICAgICBpZiAoICFvcHRpb25TZXQgKSB7CisgICAgICAgICAgICAgICAg
ICAgIGVsZW0uc2VsZWN0ZWRJbmRleCA9IC0xOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICByZXR1cm4gdmFsdWVzOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
fSApOworCisvLyBSYWRpb3MgYW5kIGNoZWNrYm94ZXMgZ2V0dGVyL3NldHRlcgoralF1ZXJ5LmVh
Y2goIFsgInJhZGlvIiwgImNoZWNrYm94IiBdLCBmdW5jdGlvbigpIHsKKyAgICBqUXVlcnkudmFs
SG9va3NbIHRoaXMgXSA9IHsKKyAgICAgICAgc2V0OiBmdW5jdGlvbiggZWxlbSwgdmFsdWUgKSB7
CisgICAgICAgICAgICBpZiAoIGpRdWVyeS5pc0FycmF5KCB2YWx1ZSApICkgeworICAgICAgICAg
ICAgICAgIHJldHVybiAoIGVsZW0uY2hlY2tlZCA9IGpRdWVyeS5pbkFycmF5KCBqUXVlcnkoIGVs
ZW0gKS52YWwoKSwgdmFsdWUgKSA+IC0xICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9OworICAgIGlmICggIXN1cHBvcnQuY2hlY2tPbiApIHsKKyAgICAgICAgalF1ZXJ5LnZhbEhv
b2tzWyB0aGlzIF0uZ2V0ID0gZnVuY3Rpb24oIGVsZW0gKSB7CisgICAgICAgICAgICByZXR1cm4g
ZWxlbS5nZXRBdHRyaWJ1dGUoICJ2YWx1ZSIgKSA9PT0gbnVsbCA/ICJvbiIgOiBlbGVtLnZhbHVl
OworICAgICAgICB9OworICAgIH0KK30gKTsKKworCisKKworLy8gUmV0dXJuIGpRdWVyeSBmb3Ig
YXR0cmlidXRlcy1vbmx5IGluY2x1c2lvbgorCisKK3ZhciByZm9jdXNNb3JwaCA9IC9eKD86Zm9j
dXNpbmZvY3VzfGZvY3Vzb3V0Ymx1cikkLzsKKworalF1ZXJ5LmV4dGVuZCggalF1ZXJ5LmV2ZW50
LCB7CisKKyAgICB0cmlnZ2VyOiBmdW5jdGlvbiggZXZlbnQsIGRhdGEsIGVsZW0sIG9ubHlIYW5k
bGVycyApIHsKKworICAgICAgICB2YXIgaSwgY3VyLCB0bXAsIGJ1YmJsZVR5cGUsIG9udHlwZSwg
aGFuZGxlLCBzcGVjaWFsLAorICAgICAgICAgICAgZXZlbnRQYXRoID0gWyBlbGVtIHx8IGRvY3Vt
ZW50IF0sCisgICAgICAgICAgICB0eXBlID0gaGFzT3duLmNhbGwoIGV2ZW50LCAidHlwZSIgKSA/
IGV2ZW50LnR5cGUgOiBldmVudCwKKyAgICAgICAgICAgIG5hbWVzcGFjZXMgPSBoYXNPd24uY2Fs
bCggZXZlbnQsICJuYW1lc3BhY2UiICkgPyBldmVudC5uYW1lc3BhY2Uuc3BsaXQoICIuIiApIDog
W107CisKKyAgICAgICAgY3VyID0gdG1wID0gZWxlbSA9IGVsZW0gfHwgZG9jdW1lbnQ7CisKKyAg
ICAgICAgLy8gRG9uJ3QgZG8gZXZlbnRzIG9uIHRleHQgYW5kIGNvbW1lbnQgbm9kZXMKKyAgICAg
ICAgaWYgKCBlbGVtLm5vZGVUeXBlID09PSAzIHx8IGVsZW0ubm9kZVR5cGUgPT09IDggKSB7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBmb2N1cy9ibHVyIG1v
cnBocyB0byBmb2N1c2luL291dDsgZW5zdXJlIHdlJ3JlIG5vdCBmaXJpbmcgdGhlbSByaWdodCBu
b3cKKyAgICAgICAgaWYgKCByZm9jdXNNb3JwaC50ZXN0KCB0eXBlICsgalF1ZXJ5LmV2ZW50LnRy
aWdnZXJlZCApICkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKCB0eXBlLmluZGV4T2YoICIuIiApID4gLTEgKSB7CisKKyAgICAgICAgICAgIC8vIE5hbWVz
cGFjZWQgdHJpZ2dlcjsgY3JlYXRlIGEgcmVnZXhwIHRvIG1hdGNoIGV2ZW50IHR5cGUgaW4gaGFu
ZGxlKCkKKyAgICAgICAgICAgIG5hbWVzcGFjZXMgPSB0eXBlLnNwbGl0KCAiLiIgKTsKKyAgICAg
ICAgICAgIHR5cGUgPSBuYW1lc3BhY2VzLnNoaWZ0KCk7CisgICAgICAgICAgICBuYW1lc3BhY2Vz
LnNvcnQoKTsKKyAgICAgICAgfQorICAgICAgICBvbnR5cGUgPSB0eXBlLmluZGV4T2YoICI6IiAp
IDwgMCAmJiAib24iICsgdHlwZTsKKworICAgICAgICAvLyBDYWxsZXIgY2FuIHBhc3MgaW4gYSBq
UXVlcnkuRXZlbnQgb2JqZWN0LCBPYmplY3QsIG9yIGp1c3QgYW4gZXZlbnQgdHlwZSBzdHJpbmcK
KyAgICAgICAgZXZlbnQgPSBldmVudFsgalF1ZXJ5LmV4cGFuZG8gXSA/CisgICAgICAgICAgICBl
dmVudCA6CisgICAgICAgICAgICBuZXcgalF1ZXJ5LkV2ZW50KCB0eXBlLCB0eXBlb2YgZXZlbnQg
PT09ICJvYmplY3QiICYmIGV2ZW50ICk7CisKKyAgICAgICAgLy8gVHJpZ2dlciBiaXRtYXNrOiAm
IDEgZm9yIG5hdGl2ZSBoYW5kbGVyczsgJiAyIGZvciBqUXVlcnkgKGFsd2F5cyB0cnVlKQorICAg
ICAgICBldmVudC5pc1RyaWdnZXIgPSBvbmx5SGFuZGxlcnMgPyAyIDogMzsKKyAgICAgICAgZXZl
bnQubmFtZXNwYWNlID0gbmFtZXNwYWNlcy5qb2luKCAiLiIgKTsKKyAgICAgICAgZXZlbnQucm5h
bWVzcGFjZSA9IGV2ZW50Lm5hbWVzcGFjZSA/CisgICAgICAgICAgICBuZXcgUmVnRXhwKCAiKF58
XFwuKSIgKyBuYW1lc3BhY2VzLmpvaW4oICJcXC4oPzouKlxcLnwpIiApICsgIihcXC58JCkiICkg
OgorICAgICAgICAgICAgbnVsbDsKKworICAgICAgICAvLyBDbGVhbiB1cCB0aGUgZXZlbnQgaW4g
Y2FzZSBpdCBpcyBiZWluZyByZXVzZWQKKyAgICAgICAgZXZlbnQucmVzdWx0ID0gdW5kZWZpbmVk
OworICAgICAgICBpZiAoICFldmVudC50YXJnZXQgKSB7CisgICAgICAgICAgICBldmVudC50YXJn
ZXQgPSBlbGVtOworICAgICAgICB9CisKKyAgICAgICAgLy8gQ2xvbmUgYW55IGluY29taW5nIGRh
dGEgYW5kIHByZXBlbmQgdGhlIGV2ZW50LCBjcmVhdGluZyB0aGUgaGFuZGxlciBhcmcgbGlzdAor
ICAgICAgICBkYXRhID0gZGF0YSA9PSBudWxsID8KKyAgICAgICAgICAgIFsgZXZlbnQgXSA6Cisg
ICAgICAgICAgICBqUXVlcnkubWFrZUFycmF5KCBkYXRhLCBbIGV2ZW50IF0gKTsKKworICAgICAg
ICAvLyBBbGxvdyBzcGVjaWFsIGV2ZW50cyB0byBkcmF3IG91dHNpZGUgdGhlIGxpbmVzCisgICAg
ICAgIHNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgdHlwZSBdIHx8IHt9OworICAgICAg
ICBpZiAoICFvbmx5SGFuZGxlcnMgJiYgc3BlY2lhbC50cmlnZ2VyICYmIHNwZWNpYWwudHJpZ2dl
ci5hcHBseSggZWxlbSwgZGF0YSApID09PSBmYWxzZSApIHsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIC8vIERldGVybWluZSBldmVudCBwcm9wYWdhdGlvbiBwYXRo
IGluIGFkdmFuY2UsIHBlciBXM0MgZXZlbnRzIHNwZWMgKCM5OTUxKQorICAgICAgICAvLyBCdWJi
bGUgdXAgdG8gZG9jdW1lbnQsIHRoZW4gdG8gd2luZG93OyB3YXRjaCBmb3IgYSBnbG9iYWwgb3du
ZXJEb2N1bWVudCB2YXIgKCM5NzI0KQorICAgICAgICBpZiAoICFvbmx5SGFuZGxlcnMgJiYgIXNw
ZWNpYWwubm9CdWJibGUgJiYgIWpRdWVyeS5pc1dpbmRvdyggZWxlbSApICkgeworCisgICAgICAg
ICAgICBidWJibGVUeXBlID0gc3BlY2lhbC5kZWxlZ2F0ZVR5cGUgfHwgdHlwZTsKKyAgICAgICAg
ICAgIGlmICggIXJmb2N1c01vcnBoLnRlc3QoIGJ1YmJsZVR5cGUgKyB0eXBlICkgKSB7CisgICAg
ICAgICAgICAgICAgY3VyID0gY3VyLnBhcmVudE5vZGU7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBmb3IgKCA7IGN1cjsgY3VyID0gY3VyLnBhcmVudE5vZGUgKSB7CisgICAgICAgICAgICAg
ICAgZXZlbnRQYXRoLnB1c2goIGN1ciApOworICAgICAgICAgICAgICAgIHRtcCA9IGN1cjsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gT25seSBhZGQgd2luZG93IGlmIHdlIGdvdCB0
byBkb2N1bWVudCAoZS5nLiwgbm90IHBsYWluIG9iaiBvciBkZXRhY2hlZCBET00pCisgICAgICAg
ICAgICBpZiAoIHRtcCA9PT0gKCBlbGVtLm93bmVyRG9jdW1lbnQgfHwgZG9jdW1lbnQgKSApIHsK
KyAgICAgICAgICAgICAgICBldmVudFBhdGgucHVzaCggdG1wLmRlZmF1bHRWaWV3IHx8IHRtcC5w
YXJlbnRXaW5kb3cgfHwgd2luZG93ICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAg
ICAgICAvLyBGaXJlIGhhbmRsZXJzIG9uIHRoZSBldmVudCBwYXRoCisgICAgICAgIGkgPSAwOwor
ICAgICAgICB3aGlsZSAoICggY3VyID0gZXZlbnRQYXRoWyBpKysgXSApICYmICFldmVudC5pc1By
b3BhZ2F0aW9uU3RvcHBlZCgpICkgeworCisgICAgICAgICAgICBldmVudC50eXBlID0gaSA+IDEg
PworICAgICAgICAgICAgICAgIGJ1YmJsZVR5cGUgOgorICAgICAgICAgICAgICAgIHNwZWNpYWwu
YmluZFR5cGUgfHwgdHlwZTsKKworICAgICAgICAgICAgLy8galF1ZXJ5IGhhbmRsZXIKKyAgICAg
ICAgICAgIGhhbmRsZSA9ICggZGF0YVByaXYuZ2V0KCBjdXIsICJldmVudHMiICkgfHwge30gKVsg
ZXZlbnQudHlwZSBdICYmCisgICAgICAgICAgICAgICAgZGF0YVByaXYuZ2V0KCBjdXIsICJoYW5k
bGUiICk7CisgICAgICAgICAgICBpZiAoIGhhbmRsZSApIHsKKyAgICAgICAgICAgICAgICBoYW5k
bGUuYXBwbHkoIGN1ciwgZGF0YSApOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBO
YXRpdmUgaGFuZGxlcgorICAgICAgICAgICAgaGFuZGxlID0gb250eXBlICYmIGN1clsgb250eXBl
IF07CisgICAgICAgICAgICBpZiAoIGhhbmRsZSAmJiBoYW5kbGUuYXBwbHkgJiYgYWNjZXB0RGF0
YSggY3VyICkgKSB7CisgICAgICAgICAgICAgICAgZXZlbnQucmVzdWx0ID0gaGFuZGxlLmFwcGx5
KCBjdXIsIGRhdGEgKTsKKyAgICAgICAgICAgICAgICBpZiAoIGV2ZW50LnJlc3VsdCA9PT0gZmFs
c2UgKSB7CisgICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGV2ZW50LnR5
cGUgPSB0eXBlOworCisgICAgICAgIC8vIElmIG5vYm9keSBwcmV2ZW50ZWQgdGhlIGRlZmF1bHQg
YWN0aW9uLCBkbyBpdCBub3cKKyAgICAgICAgaWYgKCAhb25seUhhbmRsZXJzICYmICFldmVudC5p
c0RlZmF1bHRQcmV2ZW50ZWQoKSApIHsKKworICAgICAgICAgICAgaWYgKCAoICFzcGVjaWFsLl9k
ZWZhdWx0IHx8CisgICAgICAgICAgICAgICAgc3BlY2lhbC5fZGVmYXVsdC5hcHBseSggZXZlbnRQ
YXRoLnBvcCgpLCBkYXRhICkgPT09IGZhbHNlICkgJiYKKyAgICAgICAgICAgICAgICBhY2NlcHRE
YXRhKCBlbGVtICkgKSB7CisKKyAgICAgICAgICAgICAgICAvLyBDYWxsIGEgbmF0aXZlIERPTSBt
ZXRob2Qgb24gdGhlIHRhcmdldCB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgdGhlIGV2ZW50LgorICAg
ICAgICAgICAgICAgIC8vIERvbid0IGRvIGRlZmF1bHQgYWN0aW9ucyBvbiB3aW5kb3csIHRoYXQn
cyB3aGVyZSBnbG9iYWwgdmFyaWFibGVzIGJlICgjNjE3MCkKKyAgICAgICAgICAgICAgICBpZiAo
IG9udHlwZSAmJiBqUXVlcnkuaXNGdW5jdGlvbiggZWxlbVsgdHlwZSBdICkgJiYgIWpRdWVyeS5p
c1dpbmRvdyggZWxlbSApICkgeworCisgICAgICAgICAgICAgICAgICAgIC8vIERvbid0IHJlLXRy
aWdnZXIgYW4gb25GT08gZXZlbnQgd2hlbiB3ZSBjYWxsIGl0cyBGT08oKSBtZXRob2QKKyAgICAg
ICAgICAgICAgICAgICAgdG1wID0gZWxlbVsgb250eXBlIF07CisKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKCB0bXAgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBlbGVtWyBvbnR5cGUgXSA9
IG51bGw7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAvLyBQ
cmV2ZW50IHJlLXRyaWdnZXJpbmcgb2YgdGhlIHNhbWUgZXZlbnQsIHNpbmNlIHdlIGFscmVhZHkg
YnViYmxlZCBpdCBhYm92ZQorICAgICAgICAgICAgICAgICAgICBqUXVlcnkuZXZlbnQudHJpZ2dl
cmVkID0gdHlwZTsKKyAgICAgICAgICAgICAgICAgICAgZWxlbVsgdHlwZSBdKCk7CisgICAgICAg
ICAgICAgICAgICAgIGpRdWVyeS5ldmVudC50cmlnZ2VyZWQgPSB1bmRlZmluZWQ7CisKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKCB0bXAgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBlbGVt
WyBvbnR5cGUgXSA9IHRtcDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBldmVudC5yZXN1
bHQ7CisgICAgfSwKKworICAgIC8vIFBpZ2d5YmFjayBvbiBhIGRvbm9yIGV2ZW50IHRvIHNpbXVs
YXRlIGEgZGlmZmVyZW50IG9uZQorICAgIC8vIFVzZWQgb25seSBmb3IgYGZvY3VzKGluIHwgb3V0
KWAgZXZlbnRzCisgICAgc2ltdWxhdGU6IGZ1bmN0aW9uKCB0eXBlLCBlbGVtLCBldmVudCApIHsK
KyAgICAgICAgdmFyIGUgPSBqUXVlcnkuZXh0ZW5kKAorICAgICAgICAgICAgbmV3IGpRdWVyeS5F
dmVudCgpLAorICAgICAgICAgICAgZXZlbnQsCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgdHlwZTogdHlwZSwKKyAgICAgICAgICAgICAgICBpc1NpbXVsYXRlZDogdHJ1ZQorICAgICAg
ICAgICAgfQorICAgICAgICApOworCisgICAgICAgIGpRdWVyeS5ldmVudC50cmlnZ2VyKCBlLCBu
dWxsLCBlbGVtICk7CisgICAgfQorCit9ICk7CisKK2pRdWVyeS5mbi5leHRlbmQoIHsKKworICAg
IHRyaWdnZXI6IGZ1bmN0aW9uKCB0eXBlLCBkYXRhICkgeworICAgICAgICByZXR1cm4gdGhpcy5l
YWNoKCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGpRdWVyeS5ldmVudC50cmlnZ2VyKCB0eXBl
LCBkYXRhLCB0aGlzICk7CisgICAgICAgIH0gKTsKKyAgICB9LAorICAgIHRyaWdnZXJIYW5kbGVy
OiBmdW5jdGlvbiggdHlwZSwgZGF0YSApIHsKKyAgICAgICAgdmFyIGVsZW0gPSB0aGlzWyAwIF07
CisgICAgICAgIGlmICggZWxlbSApIHsKKyAgICAgICAgICAgIHJldHVybiBqUXVlcnkuZXZlbnQu
dHJpZ2dlciggdHlwZSwgZGF0YSwgZWxlbSwgdHJ1ZSApOworICAgICAgICB9CisgICAgfQorfSAp
OworCisKK2pRdWVyeS5lYWNoKCAoICJibHVyIGZvY3VzIGZvY3VzaW4gZm9jdXNvdXQgcmVzaXpl
IHNjcm9sbCBjbGljayBkYmxjbGljayAiICsKKyAgICAibW91c2Vkb3duIG1vdXNldXAgbW91c2Vt
b3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgIiArCisgICAgImNo
YW5nZSBzZWxlY3Qgc3VibWl0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgY29udGV4dG1lbnUiICku
c3BsaXQoICIgIiApLAorICAgIGZ1bmN0aW9uKCBpLCBuYW1lICkgeworCisgICAgLy8gSGFuZGxl
IGV2ZW50IGJpbmRpbmcKKyAgICBqUXVlcnkuZm5bIG5hbWUgXSA9IGZ1bmN0aW9uKCBkYXRhLCBm
biApIHsKKyAgICAgICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPiAwID8KKyAgICAgICAgICAg
IHRoaXMub24oIG5hbWUsIG51bGwsIGRhdGEsIGZuICkgOgorICAgICAgICAgICAgdGhpcy50cmln
Z2VyKCBuYW1lICk7CisgICAgfTsKK30gKTsKKworalF1ZXJ5LmZuLmV4dGVuZCggeworICAgIGhv
dmVyOiBmdW5jdGlvbiggZm5PdmVyLCBmbk91dCApIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubW91
c2VlbnRlciggZm5PdmVyICkubW91c2VsZWF2ZSggZm5PdXQgfHwgZm5PdmVyICk7CisgICAgfQor
fSApOworCisKKworCitzdXBwb3J0LmZvY3VzaW4gPSAib25mb2N1c2luIiBpbiB3aW5kb3c7CisK
KworLy8gU3VwcG9ydDogRmlyZWZveCA8PTQ0CisvLyBGaXJlZm94IGRvZXNuJ3QgaGF2ZSBmb2N1
cyhpbiB8IG91dCkgZXZlbnRzCisvLyBSZWxhdGVkIHRpY2tldCAtIGh0dHBzOi8vYnVnemlsbGEu
bW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTY4Nzc4NworLy8KKy8vIFN1cHBvcnQ6IENocm9t
ZSA8PTQ4IC0gNDksIFNhZmFyaSA8PTkuMCAtIDkuMQorLy8gZm9jdXMoaW4gfCBvdXQpIGV2ZW50
cyBmaXJlIGFmdGVyIGZvY3VzICYgYmx1ciBldmVudHMsCisvLyB3aGljaCBpcyBzcGVjIHZpb2xh
dGlvbiAtIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy8jZXZlbnRzLWZv
Y3VzZXZlbnQtZXZlbnQtb3JkZXIKKy8vIFJlbGF0ZWQgdGlja2V0IC0gaHR0cHM6Ly9idWdzLmNo
cm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9NDQ5ODU3CitpZiAoICFzdXBw
b3J0LmZvY3VzaW4gKSB7CisgICAgalF1ZXJ5LmVhY2goIHsgZm9jdXM6ICJmb2N1c2luIiwgYmx1
cjogImZvY3Vzb3V0IiB9LCBmdW5jdGlvbiggb3JpZywgZml4ICkgeworCisgICAgICAgIC8vIEF0
dGFjaCBhIHNpbmdsZSBjYXB0dXJpbmcgaGFuZGxlciBvbiB0aGUgZG9jdW1lbnQgd2hpbGUgc29t
ZW9uZSB3YW50cyBmb2N1c2luL2ZvY3Vzb3V0CisgICAgICAgIHZhciBoYW5kbGVyID0gZnVuY3Rp
b24oIGV2ZW50ICkgeworICAgICAgICAgICAgalF1ZXJ5LmV2ZW50LnNpbXVsYXRlKCBmaXgsIGV2
ZW50LnRhcmdldCwgalF1ZXJ5LmV2ZW50LmZpeCggZXZlbnQgKSApOworICAgICAgICB9OworCisg
ICAgICAgIGpRdWVyeS5ldmVudC5zcGVjaWFsWyBmaXggXSA9IHsKKyAgICAgICAgICAgIHNldHVw
OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICB2YXIgZG9jID0gdGhpcy5vd25lckRvY3Vt
ZW50IHx8IHRoaXMsCisgICAgICAgICAgICAgICAgICAgIGF0dGFjaGVzID0gZGF0YVByaXYuYWNj
ZXNzKCBkb2MsIGZpeCApOworCisgICAgICAgICAgICAgICAgaWYgKCAhYXR0YWNoZXMgKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGRvYy5hZGRFdmVudExpc3RlbmVyKCBvcmlnLCBoYW5kbGVyLCB0
cnVlICk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGRhdGFQcml2LmFjY2Vz
cyggZG9jLCBmaXgsICggYXR0YWNoZXMgfHwgMCApICsgMSApOworICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgIHRlYXJkb3duOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICB2YXIgZG9j
ID0gdGhpcy5vd25lckRvY3VtZW50IHx8IHRoaXMsCisgICAgICAgICAgICAgICAgICAgIGF0dGFj
aGVzID0gZGF0YVByaXYuYWNjZXNzKCBkb2MsIGZpeCApIC0gMTsKKworICAgICAgICAgICAgICAg
IGlmICggIWF0dGFjaGVzICkgeworICAgICAgICAgICAgICAgICAgICBkb2MucmVtb3ZlRXZlbnRM
aXN0ZW5lciggb3JpZywgaGFuZGxlciwgdHJ1ZSApOworICAgICAgICAgICAgICAgICAgICBkYXRh
UHJpdi5yZW1vdmUoIGRvYywgZml4ICk7CisKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgICAgICBkYXRhUHJpdi5hY2Nlc3MoIGRvYywgZml4LCBhdHRhY2hlcyApOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9ICk7Cit9
Cit2YXIgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247CisKK3ZhciBub25jZSA9IGpRdWVyeS5u
b3coKTsKKwordmFyIHJxdWVyeSA9ICggL1w/LyApOworCisKKworLy8gQ3Jvc3MtYnJvd3NlciB4
bWwgcGFyc2luZworalF1ZXJ5LnBhcnNlWE1MID0gZnVuY3Rpb24oIGRhdGEgKSB7CisgICAgdmFy
IHhtbDsKKyAgICBpZiAoICFkYXRhIHx8IHR5cGVvZiBkYXRhICE9PSAic3RyaW5nIiApIHsKKyAg
ICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgLy8gU3VwcG9ydDogSUUgOSAtIDExIG9u
bHkKKyAgICAvLyBJRSB0aHJvd3Mgb24gcGFyc2VGcm9tU3RyaW5nIHdpdGggaW52YWxpZCBpbnB1
dC4KKyAgICB0cnkgeworICAgICAgICB4bWwgPSAoIG5ldyB3aW5kb3cuRE9NUGFyc2VyKCkgKS5w
YXJzZUZyb21TdHJpbmcoIGRhdGEsICJ0ZXh0L3htbCIgKTsKKyAgICB9IGNhdGNoICggZSApIHsK
KyAgICAgICAgeG1sID0gdW5kZWZpbmVkOworICAgIH0KKworICAgIGlmICggIXhtbCB8fCB4bWwu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoICJwYXJzZXJlcnJvciIgKS5sZW5ndGggKSB7CisgICAgICAg
IGpRdWVyeS5lcnJvciggIkludmFsaWQgWE1MOiAiICsgZGF0YSApOworICAgIH0KKyAgICByZXR1
cm4geG1sOworfTsKKworCit2YXIKKyAgICByYnJhY2tldCA9IC9cW1xdJC8sCisgICAgckNSTEYg
PSAvXHI/XG4vZywKKyAgICByc3VibWl0dGVyVHlwZXMgPSAvXig/OnN1Ym1pdHxidXR0b258aW1h
Z2V8cmVzZXR8ZmlsZSkkL2ksCisgICAgcnN1Ym1pdHRhYmxlID0gL14oPzppbnB1dHxzZWxlY3R8
dGV4dGFyZWF8a2V5Z2VuKS9pOworCitmdW5jdGlvbiBidWlsZFBhcmFtcyggcHJlZml4LCBvYmos
IHRyYWRpdGlvbmFsLCBhZGQgKSB7CisgICAgdmFyIG5hbWU7CisKKyAgICBpZiAoIGpRdWVyeS5p
c0FycmF5KCBvYmogKSApIHsKKworICAgICAgICAvLyBTZXJpYWxpemUgYXJyYXkgaXRlbS4KKyAg
ICAgICAgalF1ZXJ5LmVhY2goIG9iaiwgZnVuY3Rpb24oIGksIHYgKSB7CisgICAgICAgICAgICBp
ZiAoIHRyYWRpdGlvbmFsIHx8IHJicmFja2V0LnRlc3QoIHByZWZpeCApICkgeworCisgICAgICAg
ICAgICAgICAgLy8gVHJlYXQgZWFjaCBhcnJheSBpdGVtIGFzIGEgc2NhbGFyLgorICAgICAgICAg
ICAgICAgIGFkZCggcHJlZml4LCB2ICk7CisKKyAgICAgICAgICAgIH0gZWxzZSB7CisKKyAgICAg
ICAgICAgICAgICAvLyBJdGVtIGlzIG5vbi1zY2FsYXIgKGFycmF5IG9yIG9iamVjdCksIGVuY29k
ZSBpdHMgbnVtZXJpYyBpbmRleC4KKyAgICAgICAgICAgICAgICBidWlsZFBhcmFtcygKKyAgICAg
ICAgICAgICAgICAgICAgcHJlZml4ICsgIlsiICsgKCB0eXBlb2YgdiA9PT0gIm9iamVjdCIgJiYg
diAhPSBudWxsID8gaSA6ICIiICkgKyAiXSIsCisgICAgICAgICAgICAgICAgICAgIHYsCisgICAg
ICAgICAgICAgICAgICAgIHRyYWRpdGlvbmFsLAorICAgICAgICAgICAgICAgICAgICBhZGQKKyAg
ICAgICAgICAgICAgICApOworICAgICAgICAgICAgfQorICAgICAgICB9ICk7CisKKyAgICB9IGVs
c2UgaWYgKCAhdHJhZGl0aW9uYWwgJiYgalF1ZXJ5LnR5cGUoIG9iaiApID09PSAib2JqZWN0IiAp
IHsKKworICAgICAgICAvLyBTZXJpYWxpemUgb2JqZWN0IGl0ZW0uCisgICAgICAgIGZvciAoIG5h
bWUgaW4gb2JqICkgeworICAgICAgICAgICAgYnVpbGRQYXJhbXMoIHByZWZpeCArICJbIiArIG5h
bWUgKyAiXSIsIG9ialsgbmFtZSBdLCB0cmFkaXRpb25hbCwgYWRkICk7CisgICAgICAgIH0KKwor
ICAgIH0gZWxzZSB7CisKKyAgICAgICAgLy8gU2VyaWFsaXplIHNjYWxhciBpdGVtLgorICAgICAg
ICBhZGQoIHByZWZpeCwgb2JqICk7CisgICAgfQorfQorCisvLyBTZXJpYWxpemUgYW4gYXJyYXkg
b2YgZm9ybSBlbGVtZW50cyBvciBhIHNldCBvZgorLy8ga2V5L3ZhbHVlcyBpbnRvIGEgcXVlcnkg
c3RyaW5nCitqUXVlcnkucGFyYW0gPSBmdW5jdGlvbiggYSwgdHJhZGl0aW9uYWwgKSB7CisgICAg
dmFyIHByZWZpeCwKKyAgICAgICAgcyA9IFtdLAorICAgICAgICBhZGQgPSBmdW5jdGlvbigga2V5
LCB2YWx1ZU9yRnVuY3Rpb24gKSB7CisKKyAgICAgICAgICAgIC8vIElmIHZhbHVlIGlzIGEgZnVu
Y3Rpb24sIGludm9rZSBpdCBhbmQgdXNlIGl0cyByZXR1cm4gdmFsdWUKKyAgICAgICAgICAgIHZh
ciB2YWx1ZSA9IGpRdWVyeS5pc0Z1bmN0aW9uKCB2YWx1ZU9yRnVuY3Rpb24gKSA/CisgICAgICAg
ICAgICAgICAgdmFsdWVPckZ1bmN0aW9uKCkgOgorICAgICAgICAgICAgICAgIHZhbHVlT3JGdW5j
dGlvbjsKKworICAgICAgICAgICAgc1sgcy5sZW5ndGggXSA9IGVuY29kZVVSSUNvbXBvbmVudCgg
a2V5ICkgKyAiPSIgKworICAgICAgICAgICAgICAgIGVuY29kZVVSSUNvbXBvbmVudCggdmFsdWUg
PT0gbnVsbCA/ICIiIDogdmFsdWUgKTsKKyAgICAgICAgfTsKKworICAgIC8vIElmIGFuIGFycmF5
IHdhcyBwYXNzZWQgaW4sIGFzc3VtZSB0aGF0IGl0IGlzIGFuIGFycmF5IG9mIGZvcm0gZWxlbWVu
dHMuCisgICAgaWYgKCBqUXVlcnkuaXNBcnJheSggYSApIHx8ICggYS5qcXVlcnkgJiYgIWpRdWVy
eS5pc1BsYWluT2JqZWN0KCBhICkgKSApIHsKKworICAgICAgICAvLyBTZXJpYWxpemUgdGhlIGZv
cm0gZWxlbWVudHMKKyAgICAgICAgalF1ZXJ5LmVhY2goIGEsIGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgYWRkKCB0aGlzLm5hbWUsIHRoaXMudmFsdWUgKTsKKyAgICAgICAgfSApOworCisgICAg
fSBlbHNlIHsKKworICAgICAgICAvLyBJZiB0cmFkaXRpb25hbCwgZW5jb2RlIHRoZSAib2xkIiB3
YXkgKHRoZSB3YXkgMS4zLjIgb3Igb2xkZXIKKyAgICAgICAgLy8gZGlkIGl0KSwgb3RoZXJ3aXNl
IGVuY29kZSBwYXJhbXMgcmVjdXJzaXZlbHkuCisgICAgICAgIGZvciAoIHByZWZpeCBpbiBhICkg
eworICAgICAgICAgICAgYnVpbGRQYXJhbXMoIHByZWZpeCwgYVsgcHJlZml4IF0sIHRyYWRpdGlv
bmFsLCBhZGQgKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFJldHVybiB0aGUgcmVzdWx0
aW5nIHNlcmlhbGl6YXRpb24KKyAgICByZXR1cm4gcy5qb2luKCAiJiIgKTsKK307CisKK2pRdWVy
eS5mbi5leHRlbmQoIHsKKyAgICBzZXJpYWxpemU6IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1
cm4galF1ZXJ5LnBhcmFtKCB0aGlzLnNlcmlhbGl6ZUFycmF5KCkgKTsKKyAgICB9LAorICAgIHNl
cmlhbGl6ZUFycmF5OiBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubWFwKCBmdW5j
dGlvbigpIHsKKworICAgICAgICAgICAgLy8gQ2FuIGFkZCBwcm9wSG9vayBmb3IgImVsZW1lbnRz
IiB0byBmaWx0ZXIgb3IgYWRkIGZvcm0gZWxlbWVudHMKKyAgICAgICAgICAgIHZhciBlbGVtZW50
cyA9IGpRdWVyeS5wcm9wKCB0aGlzLCAiZWxlbWVudHMiICk7CisgICAgICAgICAgICByZXR1cm4g
ZWxlbWVudHMgPyBqUXVlcnkubWFrZUFycmF5KCBlbGVtZW50cyApIDogdGhpczsKKyAgICAgICAg
fSApCisgICAgICAgIC5maWx0ZXIoIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdmFyIHR5cGUg
PSB0aGlzLnR5cGU7CisKKyAgICAgICAgICAgIC8vIFVzZSAuaXMoICI6ZGlzYWJsZWQiICkgc28g
dGhhdCBmaWVsZHNldFtkaXNhYmxlZF0gd29ya3MKKyAgICAgICAgICAgIHJldHVybiB0aGlzLm5h
bWUgJiYgIWpRdWVyeSggdGhpcyApLmlzKCAiOmRpc2FibGVkIiApICYmCisgICAgICAgICAgICAg
ICAgcnN1Ym1pdHRhYmxlLnRlc3QoIHRoaXMubm9kZU5hbWUgKSAmJiAhcnN1Ym1pdHRlclR5cGVz
LnRlc3QoIHR5cGUgKSAmJgorICAgICAgICAgICAgICAgICggdGhpcy5jaGVja2VkIHx8ICFyY2hl
Y2thYmxlVHlwZS50ZXN0KCB0eXBlICkgKTsKKyAgICAgICAgfSApCisgICAgICAgIC5tYXAoIGZ1
bmN0aW9uKCBpLCBlbGVtICkgeworICAgICAgICAgICAgdmFyIHZhbCA9IGpRdWVyeSggdGhpcyAp
LnZhbCgpOworCisgICAgICAgICAgICBpZiAoIHZhbCA9PSBudWxsICkgeworICAgICAgICAgICAg
ICAgIHJldHVybiBudWxsOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIGpRdWVy
eS5pc0FycmF5KCB2YWwgKSApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4galF1ZXJ5Lm1hcCgg
dmFsLCBmdW5jdGlvbiggdmFsICkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBuYW1l
OiBlbGVtLm5hbWUsIHZhbHVlOiB2YWwucmVwbGFjZSggckNSTEYsICJcclxuIiApIH07CisgICAg
ICAgICAgICAgICAgfSApOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4geyBu
YW1lOiBlbGVtLm5hbWUsIHZhbHVlOiB2YWwucmVwbGFjZSggckNSTEYsICJcclxuIiApIH07Cisg
ICAgICAgIH0gKS5nZXQoKTsKKyAgICB9Cit9ICk7CisKKwordmFyCisgICAgcjIwID0gLyUyMC9n
LAorICAgIHJoYXNoID0gLyMuKiQvLAorICAgIHJhbnRpQ2FjaGUgPSAvKFs/Jl0pXz1bXiZdKi8s
CisgICAgcmhlYWRlcnMgPSAvXiguKj8pOlsgXHRdKihbXlxyXG5dKikkL21nLAorCisgICAgLy8g
Izc2NTMsICM4MTI1LCAjODE1MjogbG9jYWwgcHJvdG9jb2wgZGV0ZWN0aW9uCisgICAgcmxvY2Fs
UHJvdG9jb2wgPSAvXig/OmFib3V0fGFwcHxhcHAtc3RvcmFnZXwuKy1leHRlbnNpb258ZmlsZXxy
ZXN8d2lkZ2V0KTokLywKKyAgICBybm9Db250ZW50ID0gL14oPzpHRVR8SEVBRCkkLywKKyAgICBy
cHJvdG9jb2wgPSAvXlwvXC8vLAorCisgICAgLyogUHJlZmlsdGVycworICAgICAqIDEpIFRoZXkg
YXJlIHVzZWZ1bCB0byBpbnRyb2R1Y2UgY3VzdG9tIGRhdGFUeXBlcyAoc2VlIGFqYXgvanNvbnAu
anMgZm9yIGFuIGV4YW1wbGUpCisgICAgICogMikgVGhlc2UgYXJlIGNhbGxlZDoKKyAgICAgKiAg
ICAtIEJFRk9SRSBhc2tpbmcgZm9yIGEgdHJhbnNwb3J0CisgICAgICogICAgLSBBRlRFUiBwYXJh
bSBzZXJpYWxpemF0aW9uIChzLmRhdGEgaXMgYSBzdHJpbmcgaWYgcy5wcm9jZXNzRGF0YSBpcyB0
cnVlKQorICAgICAqIDMpIGtleSBpcyB0aGUgZGF0YVR5cGUKKyAgICAgKiA0KSB0aGUgY2F0Y2hh
bGwgc3ltYm9sICIqIiBjYW4gYmUgdXNlZAorICAgICAqIDUpIGV4ZWN1dGlvbiB3aWxsIHN0YXJ0
IHdpdGggdHJhbnNwb3J0IGRhdGFUeXBlIGFuZCBUSEVOIGNvbnRpbnVlIGRvd24gdG8gIioiIGlm
IG5lZWRlZAorICAgICAqLworICAgIHByZWZpbHRlcnMgPSB7fSwKKworICAgIC8qIFRyYW5zcG9y
dHMgYmluZGluZ3MKKyAgICAgKiAxKSBrZXkgaXMgdGhlIGRhdGFUeXBlCisgICAgICogMikgdGhl
IGNhdGNoYWxsIHN5bWJvbCAiKiIgY2FuIGJlIHVzZWQKKyAgICAgKiAzKSBzZWxlY3Rpb24gd2ls
bCBzdGFydCB3aXRoIHRyYW5zcG9ydCBkYXRhVHlwZSBhbmQgVEhFTiBnbyB0byAiKiIgaWYgbmVl
ZGVkCisgICAgICovCisgICAgdHJhbnNwb3J0cyA9IHt9LAorCisgICAgLy8gQXZvaWQgY29tbWVu
dC1wcm9sb2cgY2hhciBzZXF1ZW5jZSAoIzEwMDk4KTsgbXVzdCBhcHBlYXNlIGxpbnQgYW5kIGV2
YWRlIGNvbXByZXNzaW9uCisgICAgYWxsVHlwZXMgPSAiKi8iLmNvbmNhdCggIioiICksCisKKyAg
ICAvLyBBbmNob3IgdGFnIGZvciBwYXJzaW5nIHRoZSBkb2N1bWVudCBvcmlnaW4KKyAgICBvcmln
aW5BbmNob3IgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCAiYSIgKTsKKyAgICBvcmlnaW5BbmNo
b3IuaHJlZiA9IGxvY2F0aW9uLmhyZWY7CisKKy8vIEJhc2UgImNvbnN0cnVjdG9yIiBmb3IgalF1
ZXJ5LmFqYXhQcmVmaWx0ZXIgYW5kIGpRdWVyeS5hamF4VHJhbnNwb3J0CitmdW5jdGlvbiBhZGRU
b1ByZWZpbHRlcnNPclRyYW5zcG9ydHMoIHN0cnVjdHVyZSApIHsKKworICAgIC8vIGRhdGFUeXBl
RXhwcmVzc2lvbiBpcyBvcHRpb25hbCBhbmQgZGVmYXVsdHMgdG8gIioiCisgICAgcmV0dXJuIGZ1
bmN0aW9uKCBkYXRhVHlwZUV4cHJlc3Npb24sIGZ1bmMgKSB7CisKKyAgICAgICAgaWYgKCB0eXBl
b2YgZGF0YVR5cGVFeHByZXNzaW9uICE9PSAic3RyaW5nIiApIHsKKyAgICAgICAgICAgIGZ1bmMg
PSBkYXRhVHlwZUV4cHJlc3Npb247CisgICAgICAgICAgICBkYXRhVHlwZUV4cHJlc3Npb24gPSAi
KiI7CisgICAgICAgIH0KKworICAgICAgICB2YXIgZGF0YVR5cGUsCisgICAgICAgICAgICBpID0g
MCwKKyAgICAgICAgICAgIGRhdGFUeXBlcyA9IGRhdGFUeXBlRXhwcmVzc2lvbi50b0xvd2VyQ2Fz
ZSgpLm1hdGNoKCBybm90aHRtbHdoaXRlICkgfHwgW107CisKKyAgICAgICAgaWYgKCBqUXVlcnku
aXNGdW5jdGlvbiggZnVuYyApICkgeworCisgICAgICAgICAgICAvLyBGb3IgZWFjaCBkYXRhVHlw
ZSBpbiB0aGUgZGF0YVR5cGVFeHByZXNzaW9uCisgICAgICAgICAgICB3aGlsZSAoICggZGF0YVR5
cGUgPSBkYXRhVHlwZXNbIGkrKyBdICkgKSB7CisKKyAgICAgICAgICAgICAgICAvLyBQcmVwZW5k
IGlmIHJlcXVlc3RlZAorICAgICAgICAgICAgICAgIGlmICggZGF0YVR5cGVbIDAgXSA9PT0gIisi
ICkgeworICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZSA9IGRhdGFUeXBlLnNsaWNlKCAxICkg
fHwgIioiOworICAgICAgICAgICAgICAgICAgICAoIHN0cnVjdHVyZVsgZGF0YVR5cGUgXSA9IHN0
cnVjdHVyZVsgZGF0YVR5cGUgXSB8fCBbXSApLnVuc2hpZnQoIGZ1bmMgKTsKKworICAgICAgICAg
ICAgICAgIC8vIE90aGVyd2lzZSBhcHBlbmQKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgICAgICAoIHN0cnVjdHVyZVsgZGF0YVR5cGUgXSA9IHN0cnVjdHVyZVsgZGF0
YVR5cGUgXSB8fCBbXSApLnB1c2goIGZ1bmMgKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9OworfQorCisvLyBCYXNlIGluc3BlY3Rpb24gZnVuY3Rp
b24gZm9yIHByZWZpbHRlcnMgYW5kIHRyYW5zcG9ydHMKK2Z1bmN0aW9uIGluc3BlY3RQcmVmaWx0
ZXJzT3JUcmFuc3BvcnRzKCBzdHJ1Y3R1cmUsIG9wdGlvbnMsIG9yaWdpbmFsT3B0aW9ucywganFY
SFIgKSB7CisKKyAgICB2YXIgaW5zcGVjdGVkID0ge30sCisgICAgICAgIHNlZWtpbmdUcmFuc3Bv
cnQgPSAoIHN0cnVjdHVyZSA9PT0gdHJhbnNwb3J0cyApOworCisgICAgZnVuY3Rpb24gaW5zcGVj
dCggZGF0YVR5cGUgKSB7CisgICAgICAgIHZhciBzZWxlY3RlZDsKKyAgICAgICAgaW5zcGVjdGVk
WyBkYXRhVHlwZSBdID0gdHJ1ZTsKKyAgICAgICAgalF1ZXJ5LmVhY2goIHN0cnVjdHVyZVsgZGF0
YVR5cGUgXSB8fCBbXSwgZnVuY3Rpb24oIF8sIHByZWZpbHRlck9yRmFjdG9yeSApIHsKKyAgICAg
ICAgICAgIHZhciBkYXRhVHlwZU9yVHJhbnNwb3J0ID0gcHJlZmlsdGVyT3JGYWN0b3J5KCBvcHRp
b25zLCBvcmlnaW5hbE9wdGlvbnMsIGpxWEhSICk7CisgICAgICAgICAgICBpZiAoIHR5cGVvZiBk
YXRhVHlwZU9yVHJhbnNwb3J0ID09PSAic3RyaW5nIiAmJgorICAgICAgICAgICAgICAgICFzZWVr
aW5nVHJhbnNwb3J0ICYmICFpbnNwZWN0ZWRbIGRhdGFUeXBlT3JUcmFuc3BvcnQgXSApIHsKKwor
ICAgICAgICAgICAgICAgIG9wdGlvbnMuZGF0YVR5cGVzLnVuc2hpZnQoIGRhdGFUeXBlT3JUcmFu
c3BvcnQgKTsKKyAgICAgICAgICAgICAgICBpbnNwZWN0KCBkYXRhVHlwZU9yVHJhbnNwb3J0ICk7
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfSBlbHNlIGlmICgg
c2Vla2luZ1RyYW5zcG9ydCApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gISggc2VsZWN0ZWQg
PSBkYXRhVHlwZU9yVHJhbnNwb3J0ICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gKTsKKyAg
ICAgICAgcmV0dXJuIHNlbGVjdGVkOworICAgIH0KKworICAgIHJldHVybiBpbnNwZWN0KCBvcHRp
b25zLmRhdGFUeXBlc1sgMCBdICkgfHwgIWluc3BlY3RlZFsgIioiIF0gJiYgaW5zcGVjdCggIioi
ICk7Cit9CisKKy8vIEEgc3BlY2lhbCBleHRlbmQgZm9yIGFqYXggb3B0aW9ucworLy8gdGhhdCB0
YWtlcyAiZmxhdCIgb3B0aW9ucyAobm90IHRvIGJlIGRlZXAgZXh0ZW5kZWQpCisvLyBGaXhlcyAj
OTg4NworZnVuY3Rpb24gYWpheEV4dGVuZCggdGFyZ2V0LCBzcmMgKSB7CisgICAgdmFyIGtleSwg
ZGVlcCwKKyAgICAgICAgZmxhdE9wdGlvbnMgPSBqUXVlcnkuYWpheFNldHRpbmdzLmZsYXRPcHRp
b25zIHx8IHt9OworCisgICAgZm9yICgga2V5IGluIHNyYyApIHsKKyAgICAgICAgaWYgKCBzcmNb
IGtleSBdICE9PSB1bmRlZmluZWQgKSB7CisgICAgICAgICAgICAoIGZsYXRPcHRpb25zWyBrZXkg
XSA/IHRhcmdldCA6ICggZGVlcCB8fCAoIGRlZXAgPSB7fSApICkgKVsga2V5IF0gPSBzcmNbIGtl
eSBdOworICAgICAgICB9CisgICAgfQorICAgIGlmICggZGVlcCApIHsKKyAgICAgICAgalF1ZXJ5
LmV4dGVuZCggdHJ1ZSwgdGFyZ2V0LCBkZWVwICk7CisgICAgfQorCisgICAgcmV0dXJuIHRhcmdl
dDsKK30KKworLyogSGFuZGxlcyByZXNwb25zZXMgdG8gYW4gYWpheCByZXF1ZXN0OgorICogLSBm
aW5kcyB0aGUgcmlnaHQgZGF0YVR5cGUgKG1lZGlhdGVzIGJldHdlZW4gY29udGVudC10eXBlIGFu
ZCBleHBlY3RlZCBkYXRhVHlwZSkKKyAqIC0gcmV0dXJucyB0aGUgY29ycmVzcG9uZGluZyByZXNw
b25zZQorICovCitmdW5jdGlvbiBhamF4SGFuZGxlUmVzcG9uc2VzKCBzLCBqcVhIUiwgcmVzcG9u
c2VzICkgeworCisgICAgdmFyIGN0LCB0eXBlLCBmaW5hbERhdGFUeXBlLCBmaXJzdERhdGFUeXBl
LAorICAgICAgICBjb250ZW50cyA9IHMuY29udGVudHMsCisgICAgICAgIGRhdGFUeXBlcyA9IHMu
ZGF0YVR5cGVzOworCisgICAgLy8gUmVtb3ZlIGF1dG8gZGF0YVR5cGUgYW5kIGdldCBjb250ZW50
LXR5cGUgaW4gdGhlIHByb2Nlc3MKKyAgICB3aGlsZSAoIGRhdGFUeXBlc1sgMCBdID09PSAiKiIg
KSB7CisgICAgICAgIGRhdGFUeXBlcy5zaGlmdCgpOworICAgICAgICBpZiAoIGN0ID09PSB1bmRl
ZmluZWQgKSB7CisgICAgICAgICAgICBjdCA9IHMubWltZVR5cGUgfHwganFYSFIuZ2V0UmVzcG9u
c2VIZWFkZXIoICJDb250ZW50LVR5cGUiICk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBD
aGVjayBpZiB3ZSdyZSBkZWFsaW5nIHdpdGggYSBrbm93biBjb250ZW50LXR5cGUKKyAgICBpZiAo
IGN0ICkgeworICAgICAgICBmb3IgKCB0eXBlIGluIGNvbnRlbnRzICkgeworICAgICAgICAgICAg
aWYgKCBjb250ZW50c1sgdHlwZSBdICYmIGNvbnRlbnRzWyB0eXBlIF0udGVzdCggY3QgKSApIHsK
KyAgICAgICAgICAgICAgICBkYXRhVHlwZXMudW5zaGlmdCggdHlwZSApOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLy8gQ2hl
Y2sgdG8gc2VlIGlmIHdlIGhhdmUgYSByZXNwb25zZSBmb3IgdGhlIGV4cGVjdGVkIGRhdGFUeXBl
CisgICAgaWYgKCBkYXRhVHlwZXNbIDAgXSBpbiByZXNwb25zZXMgKSB7CisgICAgICAgIGZpbmFs
RGF0YVR5cGUgPSBkYXRhVHlwZXNbIDAgXTsKKyAgICB9IGVsc2UgeworCisgICAgICAgIC8vIFRy
eSBjb252ZXJ0aWJsZSBkYXRhVHlwZXMKKyAgICAgICAgZm9yICggdHlwZSBpbiByZXNwb25zZXMg
KSB7CisgICAgICAgICAgICBpZiAoICFkYXRhVHlwZXNbIDAgXSB8fCBzLmNvbnZlcnRlcnNbIHR5
cGUgKyAiICIgKyBkYXRhVHlwZXNbIDAgXSBdICkgeworICAgICAgICAgICAgICAgIGZpbmFsRGF0
YVR5cGUgPSB0eXBlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgaWYgKCAhZmlyc3REYXRhVHlwZSApIHsKKyAgICAgICAgICAgICAgICBmaXJzdERh
dGFUeXBlID0gdHlwZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIE9y
IGp1c3QgdXNlIGZpcnN0IG9uZQorICAgICAgICBmaW5hbERhdGFUeXBlID0gZmluYWxEYXRhVHlw
ZSB8fCBmaXJzdERhdGFUeXBlOworICAgIH0KKworICAgIC8vIElmIHdlIGZvdW5kIGEgZGF0YVR5
cGUKKyAgICAvLyBXZSBhZGQgdGhlIGRhdGFUeXBlIHRvIHRoZSBsaXN0IGlmIG5lZWRlZAorICAg
IC8vIGFuZCByZXR1cm4gdGhlIGNvcnJlc3BvbmRpbmcgcmVzcG9uc2UKKyAgICBpZiAoIGZpbmFs
RGF0YVR5cGUgKSB7CisgICAgICAgIGlmICggZmluYWxEYXRhVHlwZSAhPT0gZGF0YVR5cGVzWyAw
IF0gKSB7CisgICAgICAgICAgICBkYXRhVHlwZXMudW5zaGlmdCggZmluYWxEYXRhVHlwZSApOwor
ICAgICAgICB9CisgICAgICAgIHJldHVybiByZXNwb25zZXNbIGZpbmFsRGF0YVR5cGUgXTsKKyAg
ICB9Cit9CisKKy8qIENoYWluIGNvbnZlcnNpb25zIGdpdmVuIHRoZSByZXF1ZXN0IGFuZCB0aGUg
b3JpZ2luYWwgcmVzcG9uc2UKKyAqIEFsc28gc2V0cyB0aGUgcmVzcG9uc2VYWFggZmllbGRzIG9u
IHRoZSBqcVhIUiBpbnN0YW5jZQorICovCitmdW5jdGlvbiBhamF4Q29udmVydCggcywgcmVzcG9u
c2UsIGpxWEhSLCBpc1N1Y2Nlc3MgKSB7CisgICAgdmFyIGNvbnYyLCBjdXJyZW50LCBjb252LCB0
bXAsIHByZXYsCisgICAgICAgIGNvbnZlcnRlcnMgPSB7fSwKKworICAgICAgICAvLyBXb3JrIHdp
dGggYSBjb3B5IG9mIGRhdGFUeXBlcyBpbiBjYXNlIHdlIG5lZWQgdG8gbW9kaWZ5IGl0IGZvciBj
b252ZXJzaW9uCisgICAgICAgIGRhdGFUeXBlcyA9IHMuZGF0YVR5cGVzLnNsaWNlKCk7CisKKyAg
ICAvLyBDcmVhdGUgY29udmVydGVycyBtYXAgd2l0aCBsb3dlcmNhc2VkIGtleXMKKyAgICBpZiAo
IGRhdGFUeXBlc1sgMSBdICkgeworICAgICAgICBmb3IgKCBjb252IGluIHMuY29udmVydGVycyAp
IHsKKyAgICAgICAgICAgIGNvbnZlcnRlcnNbIGNvbnYudG9Mb3dlckNhc2UoKSBdID0gcy5jb252
ZXJ0ZXJzWyBjb252IF07CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjdXJyZW50ID0gZGF0YVR5
cGVzLnNoaWZ0KCk7CisKKyAgICAvLyBDb252ZXJ0IHRvIGVhY2ggc2VxdWVudGlhbCBkYXRhVHlw
ZQorICAgIHdoaWxlICggY3VycmVudCApIHsKKworICAgICAgICBpZiAoIHMucmVzcG9uc2VGaWVs
ZHNbIGN1cnJlbnQgXSApIHsKKyAgICAgICAgICAgIGpxWEhSWyBzLnJlc3BvbnNlRmllbGRzWyBj
dXJyZW50IF0gXSA9IHJlc3BvbnNlOworICAgICAgICB9CisKKyAgICAgICAgLy8gQXBwbHkgdGhl
IGRhdGFGaWx0ZXIgaWYgcHJvdmlkZWQKKyAgICAgICAgaWYgKCAhcHJldiAmJiBpc1N1Y2Nlc3Mg
JiYgcy5kYXRhRmlsdGVyICkgeworICAgICAgICAgICAgcmVzcG9uc2UgPSBzLmRhdGFGaWx0ZXIo
IHJlc3BvbnNlLCBzLmRhdGFUeXBlICk7CisgICAgICAgIH0KKworICAgICAgICBwcmV2ID0gY3Vy
cmVudDsKKyAgICAgICAgY3VycmVudCA9IGRhdGFUeXBlcy5zaGlmdCgpOworCisgICAgICAgIGlm
ICggY3VycmVudCApIHsKKworICAgICAgICAgICAgLy8gVGhlcmUncyBvbmx5IHdvcmsgdG8gZG8g
aWYgY3VycmVudCBkYXRhVHlwZSBpcyBub24tYXV0bworICAgICAgICAgICAgaWYgKCBjdXJyZW50
ID09PSAiKiIgKSB7CisKKyAgICAgICAgICAgICAgICBjdXJyZW50ID0gcHJldjsKKworICAgICAg
ICAgICAgLy8gQ29udmVydCByZXNwb25zZSBpZiBwcmV2IGRhdGFUeXBlIGlzIG5vbi1hdXRvIGFu
ZCBkaWZmZXJzIGZyb20gY3VycmVudAorICAgICAgICAgICAgfSBlbHNlIGlmICggcHJldiAhPT0g
IioiICYmIHByZXYgIT09IGN1cnJlbnQgKSB7CisKKyAgICAgICAgICAgICAgICAvLyBTZWVrIGEg
ZGlyZWN0IGNvbnZlcnRlcgorICAgICAgICAgICAgICAgIGNvbnYgPSBjb252ZXJ0ZXJzWyBwcmV2
ICsgIiAiICsgY3VycmVudCBdIHx8IGNvbnZlcnRlcnNbICIqICIgKyBjdXJyZW50IF07CisKKyAg
ICAgICAgICAgICAgICAvLyBJZiBub25lIGZvdW5kLCBzZWVrIGEgcGFpcgorICAgICAgICAgICAg
ICAgIGlmICggIWNvbnYgKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAoIGNvbnYyIGluIGNv
bnZlcnRlcnMgKSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIGNvbnYyIG91dHB1
dHMgY3VycmVudAorICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gY29udjIuc3BsaXQoICIg
IiApOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCB0bXBbIDEgXSA9PT0gY3VycmVudCAp
IHsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHByZXYgY2FuIGJlIGNvbnZl
cnRlZCB0byBhY2NlcHRlZCBpbnB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnYg
PSBjb252ZXJ0ZXJzWyBwcmV2ICsgIiAiICsgdG1wWyAwIF0gXSB8fAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb252ZXJ0ZXJzWyAiKiAiICsgdG1wWyAwIF0gXTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoIGNvbnYgKSB7CisKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gQ29uZGVuc2UgZXF1aXZhbGVuY2UgY29udmVydGVycworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGNvbnYgPT09IHRydWUgKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb252ID0gY29udmVydGVyc1sgY29udjIgXTsKKwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBPdGhlcndpc2UsIGluc2VydCB0aGUg
aW50ZXJtZWRpYXRlIGRhdGFUeXBlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0g
ZWxzZSBpZiAoIGNvbnZlcnRlcnNbIGNvbnYyIF0gIT09IHRydWUgKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50ID0gdG1wWyAwIF07CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZXMudW5zaGlmdCggdG1wWyAxIF0gKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICAvLyBBcHBseSBjb252ZXJ0ZXIgKGlmIG5vdCBhbiBlcXVpdmFs
ZW5jZSkKKyAgICAgICAgICAgICAgICBpZiAoIGNvbnYgIT09IHRydWUgKSB7CisKKyAgICAgICAg
ICAgICAgICAgICAgLy8gVW5sZXNzIGVycm9ycyBhcmUgYWxsb3dlZCB0byBidWJibGUsIGNhdGNo
IGFuZCByZXR1cm4gdGhlbQorICAgICAgICAgICAgICAgICAgICBpZiAoIGNvbnYgJiYgcy50aHJv
d3MgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IGNvbnYoIHJlc3BvbnNl
ICk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gY29udiggcmVz
cG9uc2UgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKCBlICkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0YXRlOiAicGFyc2VyZXJyb3IiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlcnJvcjogY29udiA/IGUgOiAiTm8gY29udmVyc2lvbiBmcm9tICIgKyBwcmV2ICsgIiB0
byAiICsgY3VycmVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4geyBzdGF0ZTog
InN1Y2Nlc3MiLCBkYXRhOiByZXNwb25zZSB9OworfQorCitqUXVlcnkuZXh0ZW5kKCB7CisKKyAg
ICAvLyBDb3VudGVyIGZvciBob2xkaW5nIHRoZSBudW1iZXIgb2YgYWN0aXZlIHF1ZXJpZXMKKyAg
ICBhY3RpdmU6IDAsCisKKyAgICAvLyBMYXN0LU1vZGlmaWVkIGhlYWRlciBjYWNoZSBmb3IgbmV4
dCByZXF1ZXN0CisgICAgbGFzdE1vZGlmaWVkOiB7fSwKKyAgICBldGFnOiB7fSwKKworICAgIGFq
YXhTZXR0aW5nczogeworICAgICAgICB1cmw6IGxvY2F0aW9uLmhyZWYsCisgICAgICAgIHR5cGU6
ICJHRVQiLAorICAgICAgICBpc0xvY2FsOiBybG9jYWxQcm90b2NvbC50ZXN0KCBsb2NhdGlvbi5w
cm90b2NvbCApLAorICAgICAgICBnbG9iYWw6IHRydWUsCisgICAgICAgIHByb2Nlc3NEYXRhOiB0
cnVlLAorICAgICAgICBhc3luYzogdHJ1ZSwKKyAgICAgICAgY29udGVudFR5cGU6ICJhcHBsaWNh
dGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9VVRGLTgiLAorCisgICAgICAgIC8q
CisgICAgICAgIHRpbWVvdXQ6IDAsCisgICAgICAgIGRhdGE6IG51bGwsCisgICAgICAgIGRhdGFU
eXBlOiBudWxsLAorICAgICAgICB1c2VybmFtZTogbnVsbCwKKyAgICAgICAgcGFzc3dvcmQ6IG51
bGwsCisgICAgICAgIGNhY2hlOiBudWxsLAorICAgICAgICB0aHJvd3M6IGZhbHNlLAorICAgICAg
ICB0cmFkaXRpb25hbDogZmFsc2UsCisgICAgICAgIGhlYWRlcnM6IHt9LAorICAgICAgICAqLwor
CisgICAgICAgIGFjY2VwdHM6IHsKKyAgICAgICAgICAgICIqIjogYWxsVHlwZXMsCisgICAgICAg
ICAgICB0ZXh0OiAidGV4dC9wbGFpbiIsCisgICAgICAgICAgICBodG1sOiAidGV4dC9odG1sIiwK
KyAgICAgICAgICAgIHhtbDogImFwcGxpY2F0aW9uL3htbCwgdGV4dC94bWwiLAorICAgICAgICAg
ICAganNvbjogImFwcGxpY2F0aW9uL2pzb24sIHRleHQvamF2YXNjcmlwdCIKKyAgICAgICAgfSwK
KworICAgICAgICBjb250ZW50czogeworICAgICAgICAgICAgeG1sOiAvXGJ4bWxcYi8sCisgICAg
ICAgICAgICBodG1sOiAvXGJodG1sLywKKyAgICAgICAgICAgIGpzb246IC9cYmpzb25cYi8KKyAg
ICAgICAgfSwKKworICAgICAgICByZXNwb25zZUZpZWxkczogeworICAgICAgICAgICAgeG1sOiAi
cmVzcG9uc2VYTUwiLAorICAgICAgICAgICAgdGV4dDogInJlc3BvbnNlVGV4dCIsCisgICAgICAg
ICAgICBqc29uOiAicmVzcG9uc2VKU09OIgorICAgICAgICB9LAorCisgICAgICAgIC8vIERhdGEg
Y29udmVydGVycworICAgICAgICAvLyBLZXlzIHNlcGFyYXRlIHNvdXJjZSAob3IgY2F0Y2hhbGwg
IioiKSBhbmQgZGVzdGluYXRpb24gdHlwZXMgd2l0aCBhIHNpbmdsZSBzcGFjZQorICAgICAgICBj
b252ZXJ0ZXJzOiB7CisKKyAgICAgICAgICAgIC8vIENvbnZlcnQgYW55dGhpbmcgdG8gdGV4dAor
ICAgICAgICAgICAgIiogdGV4dCI6IFN0cmluZywKKworICAgICAgICAgICAgLy8gVGV4dCB0byBo
dG1sICh0cnVlID0gbm8gdHJhbnNmb3JtYXRpb24pCisgICAgICAgICAgICAidGV4dCBodG1sIjog
dHJ1ZSwKKworICAgICAgICAgICAgLy8gRXZhbHVhdGUgdGV4dCBhcyBhIGpzb24gZXhwcmVzc2lv
bgorICAgICAgICAgICAgInRleHQganNvbiI6IEpTT04ucGFyc2UsCisKKyAgICAgICAgICAgIC8v
IFBhcnNlIHRleHQgYXMgeG1sCisgICAgICAgICAgICAidGV4dCB4bWwiOiBqUXVlcnkucGFyc2VY
TUwKKyAgICAgICAgfSwKKworICAgICAgICAvLyBGb3Igb3B0aW9ucyB0aGF0IHNob3VsZG4ndCBi
ZSBkZWVwIGV4dGVuZGVkOgorICAgICAgICAvLyB5b3UgY2FuIGFkZCB5b3VyIG93biBjdXN0b20g
b3B0aW9ucyBoZXJlIGlmCisgICAgICAgIC8vIGFuZCB3aGVuIHlvdSBjcmVhdGUgb25lIHRoYXQg
c2hvdWxkbid0IGJlCisgICAgICAgIC8vIGRlZXAgZXh0ZW5kZWQgKHNlZSBhamF4RXh0ZW5kKQor
ICAgICAgICBmbGF0T3B0aW9uczogeworICAgICAgICAgICAgdXJsOiB0cnVlLAorICAgICAgICAg
ICAgY29udGV4dDogdHJ1ZQorICAgICAgICB9CisgICAgfSwKKworICAgIC8vIENyZWF0ZXMgYSBm
dWxsIGZsZWRnZWQgc2V0dGluZ3Mgb2JqZWN0IGludG8gdGFyZ2V0CisgICAgLy8gd2l0aCBib3Ro
IGFqYXhTZXR0aW5ncyBhbmQgc2V0dGluZ3MgZmllbGRzLgorICAgIC8vIElmIHRhcmdldCBpcyBv
bWl0dGVkLCB3cml0ZXMgaW50byBhamF4U2V0dGluZ3MuCisgICAgYWpheFNldHVwOiBmdW5jdGlv
biggdGFyZ2V0LCBzZXR0aW5ncyApIHsKKyAgICAgICAgcmV0dXJuIHNldHRpbmdzID8KKworICAg
ICAgICAgICAgLy8gQnVpbGRpbmcgYSBzZXR0aW5ncyBvYmplY3QKKyAgICAgICAgICAgIGFqYXhF
eHRlbmQoIGFqYXhFeHRlbmQoIHRhcmdldCwgalF1ZXJ5LmFqYXhTZXR0aW5ncyApLCBzZXR0aW5n
cyApIDoKKworICAgICAgICAgICAgLy8gRXh0ZW5kaW5nIGFqYXhTZXR0aW5ncworICAgICAgICAg
ICAgYWpheEV4dGVuZCggalF1ZXJ5LmFqYXhTZXR0aW5ncywgdGFyZ2V0ICk7CisgICAgfSwKKwor
ICAgIGFqYXhQcmVmaWx0ZXI6IGFkZFRvUHJlZmlsdGVyc09yVHJhbnNwb3J0cyggcHJlZmlsdGVy
cyApLAorICAgIGFqYXhUcmFuc3BvcnQ6IGFkZFRvUHJlZmlsdGVyc09yVHJhbnNwb3J0cyggdHJh
bnNwb3J0cyApLAorCisgICAgLy8gTWFpbiBtZXRob2QKKyAgICBhamF4OiBmdW5jdGlvbiggdXJs
LCBvcHRpb25zICkgeworCisgICAgICAgIC8vIElmIHVybCBpcyBhbiBvYmplY3QsIHNpbXVsYXRl
IHByZS0xLjUgc2lnbmF0dXJlCisgICAgICAgIGlmICggdHlwZW9mIHVybCA9PT0gIm9iamVjdCIg
KSB7CisgICAgICAgICAgICBvcHRpb25zID0gdXJsOworICAgICAgICAgICAgdXJsID0gdW5kZWZp
bmVkOworICAgICAgICB9CisKKyAgICAgICAgLy8gRm9yY2Ugb3B0aW9ucyB0byBiZSBhbiBvYmpl
Y3QKKyAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307CisKKyAgICAgICAgdmFyIHRyYW5z
cG9ydCwKKworICAgICAgICAgICAgLy8gVVJMIHdpdGhvdXQgYW50aS1jYWNoZSBwYXJhbQorICAg
ICAgICAgICAgY2FjaGVVUkwsCisKKyAgICAgICAgICAgIC8vIFJlc3BvbnNlIGhlYWRlcnMKKyAg
ICAgICAgICAgIHJlc3BvbnNlSGVhZGVyc1N0cmluZywKKyAgICAgICAgICAgIHJlc3BvbnNlSGVh
ZGVycywKKworICAgICAgICAgICAgLy8gdGltZW91dCBoYW5kbGUKKyAgICAgICAgICAgIHRpbWVv
dXRUaW1lciwKKworICAgICAgICAgICAgLy8gVXJsIGNsZWFudXAgdmFyCisgICAgICAgICAgICB1
cmxBbmNob3IsCisKKyAgICAgICAgICAgIC8vIFJlcXVlc3Qgc3RhdGUgKGJlY29tZXMgZmFsc2Ug
dXBvbiBzZW5kIGFuZCB0cnVlIHVwb24gY29tcGxldGlvbikKKyAgICAgICAgICAgIGNvbXBsZXRl
ZCwKKworICAgICAgICAgICAgLy8gVG8ga25vdyBpZiBnbG9iYWwgZXZlbnRzIGFyZSB0byBiZSBk
aXNwYXRjaGVkCisgICAgICAgICAgICBmaXJlR2xvYmFscywKKworICAgICAgICAgICAgLy8gTG9v
cCB2YXJpYWJsZQorICAgICAgICAgICAgaSwKKworICAgICAgICAgICAgLy8gdW5jYWNoZWQgcGFy
dCBvZiB0aGUgdXJsCisgICAgICAgICAgICB1bmNhY2hlZCwKKworICAgICAgICAgICAgLy8gQ3Jl
YXRlIHRoZSBmaW5hbCBvcHRpb25zIG9iamVjdAorICAgICAgICAgICAgcyA9IGpRdWVyeS5hamF4
U2V0dXAoIHt9LCBvcHRpb25zICksCisKKyAgICAgICAgICAgIC8vIENhbGxiYWNrcyBjb250ZXh0
CisgICAgICAgICAgICBjYWxsYmFja0NvbnRleHQgPSBzLmNvbnRleHQgfHwgcywKKworICAgICAg
ICAgICAgLy8gQ29udGV4dCBmb3IgZ2xvYmFsIGV2ZW50cyBpcyBjYWxsYmFja0NvbnRleHQgaWYg
aXQgaXMgYSBET00gbm9kZSBvciBqUXVlcnkgY29sbGVjdGlvbgorICAgICAgICAgICAgZ2xvYmFs
RXZlbnRDb250ZXh0ID0gcy5jb250ZXh0ICYmCisgICAgICAgICAgICAgICAgKCBjYWxsYmFja0Nv
bnRleHQubm9kZVR5cGUgfHwgY2FsbGJhY2tDb250ZXh0LmpxdWVyeSApID8KKyAgICAgICAgICAg
ICAgICAgICAgalF1ZXJ5KCBjYWxsYmFja0NvbnRleHQgKSA6CisgICAgICAgICAgICAgICAgICAg
IGpRdWVyeS5ldmVudCwKKworICAgICAgICAgICAgLy8gRGVmZXJyZWRzCisgICAgICAgICAgICBk
ZWZlcnJlZCA9IGpRdWVyeS5EZWZlcnJlZCgpLAorICAgICAgICAgICAgY29tcGxldGVEZWZlcnJl
ZCA9IGpRdWVyeS5DYWxsYmFja3MoICJvbmNlIG1lbW9yeSIgKSwKKworICAgICAgICAgICAgLy8g
U3RhdHVzLWRlcGVuZGVudCBjYWxsYmFja3MKKyAgICAgICAgICAgIHN0YXR1c0NvZGUgPSBzLnN0
YXR1c0NvZGUgfHwge30sCisKKyAgICAgICAgICAgIC8vIEhlYWRlcnMgKHRoZXkgYXJlIHNlbnQg
YWxsIGF0IG9uY2UpCisgICAgICAgICAgICByZXF1ZXN0SGVhZGVycyA9IHt9LAorICAgICAgICAg
ICAgcmVxdWVzdEhlYWRlcnNOYW1lcyA9IHt9LAorCisgICAgICAgICAgICAvLyBEZWZhdWx0IGFi
b3J0IG1lc3NhZ2UKKyAgICAgICAgICAgIHN0ckFib3J0ID0gImNhbmNlbGVkIiwKKworICAgICAg
ICAgICAgLy8gRmFrZSB4aHIKKyAgICAgICAgICAgIGpxWEhSID0geworICAgICAgICAgICAgICAg
IHJlYWR5U3RhdGU6IDAsCisKKyAgICAgICAgICAgICAgICAvLyBCdWlsZHMgaGVhZGVycyBoYXNo
dGFibGUgaWYgbmVlZGVkCisgICAgICAgICAgICAgICAgZ2V0UmVzcG9uc2VIZWFkZXI6IGZ1bmN0
aW9uKCBrZXkgKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBtYXRjaDsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKCBjb21wbGV0ZWQgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
ICFyZXNwb25zZUhlYWRlcnMgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9u
c2VIZWFkZXJzID0ge307CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCAoIG1h
dGNoID0gcmhlYWRlcnMuZXhlYyggcmVzcG9uc2VIZWFkZXJzU3RyaW5nICkgKSApIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VIZWFkZXJzWyBtYXRjaFsgMSBdLnRv
TG93ZXJDYXNlKCkgXSA9IG1hdGNoWyAyIF07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgbWF0
Y2ggPSByZXNwb25zZUhlYWRlcnNbIGtleS50b0xvd2VyQ2FzZSgpIF07CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoID09IG51bGwgPyBudWxs
IDogbWF0Y2g7CisgICAgICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgICAgIC8vIFJhdyBz
dHJpbmcKKyAgICAgICAgICAgICAgICBnZXRBbGxSZXNwb25zZUhlYWRlcnM6IGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29tcGxldGVkID8gcmVzcG9uc2VIZWFkZXJz
U3RyaW5nIDogbnVsbDsKKyAgICAgICAgICAgICAgICB9LAorCisgICAgICAgICAgICAgICAgLy8g
Q2FjaGVzIHRoZSBoZWFkZXIKKyAgICAgICAgICAgICAgICBzZXRSZXF1ZXN0SGVhZGVyOiBmdW5j
dGlvbiggbmFtZSwgdmFsdWUgKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICggY29tcGxldGVk
ID09IG51bGwgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0gcmVxdWVzdEhlYWRl
cnNOYW1lc1sgbmFtZS50b0xvd2VyQ2FzZSgpIF0gPQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlcXVlc3RIZWFkZXJzTmFtZXNbIG5hbWUudG9Mb3dlckNhc2UoKSBdIHx8IG5hbWU7Cisg
ICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SGVhZGVyc1sgbmFtZSBdID0gdmFsdWU7Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7Cisg
ICAgICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgICAgIC8vIE92ZXJyaWRlcyByZXNwb25z
ZSBjb250ZW50LXR5cGUgaGVhZGVyCisgICAgICAgICAgICAgICAgb3ZlcnJpZGVNaW1lVHlwZTog
ZnVuY3Rpb24oIHR5cGUgKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICggY29tcGxldGVkID09
IG51bGwgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzLm1pbWVUeXBlID0gdHlwZTsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAg
ICAgICAgICAgICAgICB9LAorCisgICAgICAgICAgICAgICAgLy8gU3RhdHVzLWRlcGVuZGVudCBj
YWxsYmFja3MKKyAgICAgICAgICAgICAgICBzdGF0dXNDb2RlOiBmdW5jdGlvbiggbWFwICkgewor
ICAgICAgICAgICAgICAgICAgICB2YXIgY29kZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCBt
YXAgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGNvbXBsZXRlZCApIHsKKworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEV4ZWN1dGUgdGhlIGFwcHJvcHJpYXRlIGNhbGxi
YWNrcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpxWEhSLmFsd2F5cyggbWFwWyBqcVhI
Ui5zdGF0dXMgXSApOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIExhenktYWRkIHRoZSBuZXcgY2FsbGJhY2tzIGluIGEg
d2F5IHRoYXQgcHJlc2VydmVzIG9sZCBvbmVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Zm9yICggY29kZSBpbiBtYXAgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
YXR1c0NvZGVbIGNvZGUgXSA9IFsgc3RhdHVzQ29kZVsgY29kZSBdLCBtYXBbIGNvZGUgXSBdOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsK
KyAgICAgICAgICAgICAgICB9LAorCisgICAgICAgICAgICAgICAgLy8gQ2FuY2VsIHRoZSByZXF1
ZXN0CisgICAgICAgICAgICAgICAgYWJvcnQ6IGZ1bmN0aW9uKCBzdGF0dXNUZXh0ICkgeworICAg
ICAgICAgICAgICAgICAgICB2YXIgZmluYWxUZXh0ID0gc3RhdHVzVGV4dCB8fCBzdHJBYm9ydDsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKCB0cmFuc3BvcnQgKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICB0cmFuc3BvcnQuYWJvcnQoIGZpbmFsVGV4dCApOworICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIGRvbmUoIDAsIGZpbmFsVGV4dCApOworICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
OworCisgICAgICAgIC8vIEF0dGFjaCBkZWZlcnJlZHMKKyAgICAgICAgZGVmZXJyZWQucHJvbWlz
ZSgganFYSFIgKTsKKworICAgICAgICAvLyBBZGQgcHJvdG9jb2wgaWYgbm90IHByb3ZpZGVkIChw
cmVmaWx0ZXJzIG1pZ2h0IGV4cGVjdCBpdCkKKyAgICAgICAgLy8gSGFuZGxlIGZhbHN5IHVybCBp
biB0aGUgc2V0dGluZ3Mgb2JqZWN0ICgjMTAwOTM6IGNvbnNpc3RlbmN5IHdpdGggb2xkIHNpZ25h
dHVyZSkKKyAgICAgICAgLy8gV2UgYWxzbyB1c2UgdGhlIHVybCBwYXJhbWV0ZXIgaWYgYXZhaWxh
YmxlCisgICAgICAgIHMudXJsID0gKCAoIHVybCB8fCBzLnVybCB8fCBsb2NhdGlvbi5ocmVmICkg
KyAiIiApCisgICAgICAgICAgICAucmVwbGFjZSggcnByb3RvY29sLCBsb2NhdGlvbi5wcm90b2Nv
bCArICIvLyIgKTsKKworICAgICAgICAvLyBBbGlhcyBtZXRob2Qgb3B0aW9uIHRvIHR5cGUgYXMg
cGVyIHRpY2tldCAjMTIwMDQKKyAgICAgICAgcy50eXBlID0gb3B0aW9ucy5tZXRob2QgfHwgb3B0
aW9ucy50eXBlIHx8IHMubWV0aG9kIHx8IHMudHlwZTsKKworICAgICAgICAvLyBFeHRyYWN0IGRh
dGFUeXBlcyBsaXN0CisgICAgICAgIHMuZGF0YVR5cGVzID0gKCBzLmRhdGFUeXBlIHx8ICIqIiAp
LnRvTG93ZXJDYXNlKCkubWF0Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbICIiIF07CisKKyAgICAg
ICAgLy8gQSBjcm9zcy1kb21haW4gcmVxdWVzdCBpcyBpbiBvcmRlciB3aGVuIHRoZSBvcmlnaW4g
ZG9lc24ndCBtYXRjaCB0aGUgY3VycmVudCBvcmlnaW4uCisgICAgICAgIGlmICggcy5jcm9zc0Rv
bWFpbiA9PSBudWxsICkgeworICAgICAgICAgICAgdXJsQW5jaG9yID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCggImEiICk7CisKKyAgICAgICAgICAgIC8vIFN1cHBvcnQ6IElFIDw9OCAtIDExLCBF
ZGdlIDEyIC0gMTMKKyAgICAgICAgICAgIC8vIElFIHRocm93cyBleGNlcHRpb24gb24gYWNjZXNz
aW5nIHRoZSBocmVmIHByb3BlcnR5IGlmIHVybCBpcyBtYWxmb3JtZWQsCisgICAgICAgICAgICAv
LyBlLmcuIGh0dHA6Ly9leGFtcGxlLmNvbTo4MHgvCisgICAgICAgICAgICB0cnkgeworICAgICAg
ICAgICAgICAgIHVybEFuY2hvci5ocmVmID0gcy51cmw7CisKKyAgICAgICAgICAgICAgICAvLyBT
dXBwb3J0OiBJRSA8PTggLSAxMSBvbmx5CisgICAgICAgICAgICAgICAgLy8gQW5jaG9yJ3MgaG9z
dCBwcm9wZXJ0eSBpc24ndCBjb3JyZWN0bHkgc2V0IHdoZW4gcy51cmwgaXMgcmVsYXRpdmUKKyAg
ICAgICAgICAgICAgICB1cmxBbmNob3IuaHJlZiA9IHVybEFuY2hvci5ocmVmOworICAgICAgICAg
ICAgICAgIHMuY3Jvc3NEb21haW4gPSBvcmlnaW5BbmNob3IucHJvdG9jb2wgKyAiLy8iICsgb3Jp
Z2luQW5jaG9yLmhvc3QgIT09CisgICAgICAgICAgICAgICAgICAgIHVybEFuY2hvci5wcm90b2Nv
bCArICIvLyIgKyB1cmxBbmNob3IuaG9zdDsKKyAgICAgICAgICAgIH0gY2F0Y2ggKCBlICkgewor
CisgICAgICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgYW4gZXJyb3IgcGFyc2luZyB0aGUgVVJM
LCBhc3N1bWUgaXQgaXMgY3Jvc3NEb21haW4sCisgICAgICAgICAgICAgICAgLy8gaXQgY2FuIGJl
IHJlamVjdGVkIGJ5IHRoZSB0cmFuc3BvcnQgaWYgaXQgaXMgaW52YWxpZAorICAgICAgICAgICAg
ICAgIHMuY3Jvc3NEb21haW4gPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAg
ICAgICAgLy8gQ29udmVydCBkYXRhIGlmIG5vdCBhbHJlYWR5IGEgc3RyaW5nCisgICAgICAgIGlm
ICggcy5kYXRhICYmIHMucHJvY2Vzc0RhdGEgJiYgdHlwZW9mIHMuZGF0YSAhPT0gInN0cmluZyIg
KSB7CisgICAgICAgICAgICBzLmRhdGEgPSBqUXVlcnkucGFyYW0oIHMuZGF0YSwgcy50cmFkaXRp
b25hbCApOworICAgICAgICB9CisKKyAgICAgICAgLy8gQXBwbHkgcHJlZmlsdGVycworICAgICAg
ICBpbnNwZWN0UHJlZmlsdGVyc09yVHJhbnNwb3J0cyggcHJlZmlsdGVycywgcywgb3B0aW9ucywg
anFYSFIgKTsKKworICAgICAgICAvLyBJZiByZXF1ZXN0IHdhcyBhYm9ydGVkIGluc2lkZSBhIHBy
ZWZpbHRlciwgc3RvcCB0aGVyZQorICAgICAgICBpZiAoIGNvbXBsZXRlZCApIHsKKyAgICAgICAg
ICAgIHJldHVybiBqcVhIUjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFdlIGNhbiBmaXJlIGds
b2JhbCBldmVudHMgYXMgb2Ygbm93IGlmIGFza2VkIHRvCisgICAgICAgIC8vIERvbid0IGZpcmUg
ZXZlbnRzIGlmIGpRdWVyeS5ldmVudCBpcyB1bmRlZmluZWQgaW4gYW4gQU1ELXVzYWdlIHNjZW5h
cmlvICgjMTUxMTgpCisgICAgICAgIGZpcmVHbG9iYWxzID0galF1ZXJ5LmV2ZW50ICYmIHMuZ2xv
YmFsOworCisgICAgICAgIC8vIFdhdGNoIGZvciBhIG5ldyBzZXQgb2YgcmVxdWVzdHMKKyAgICAg
ICAgaWYgKCBmaXJlR2xvYmFscyAmJiBqUXVlcnkuYWN0aXZlKysgPT09IDAgKSB7CisgICAgICAg
ICAgICBqUXVlcnkuZXZlbnQudHJpZ2dlciggImFqYXhTdGFydCIgKTsKKyAgICAgICAgfQorCisg
ICAgICAgIC8vIFVwcGVyY2FzZSB0aGUgdHlwZQorICAgICAgICBzLnR5cGUgPSBzLnR5cGUudG9V
cHBlckNhc2UoKTsKKworICAgICAgICAvLyBEZXRlcm1pbmUgaWYgcmVxdWVzdCBoYXMgY29udGVu
dAorICAgICAgICBzLmhhc0NvbnRlbnQgPSAhcm5vQ29udGVudC50ZXN0KCBzLnR5cGUgKTsKKwor
ICAgICAgICAvLyBTYXZlIHRoZSBVUkwgaW4gY2FzZSB3ZSdyZSB0b3lpbmcgd2l0aCB0aGUgSWYt
TW9kaWZpZWQtU2luY2UKKyAgICAgICAgLy8gYW5kL29yIElmLU5vbmUtTWF0Y2ggaGVhZGVyIGxh
dGVyIG9uCisgICAgICAgIC8vIFJlbW92ZSBoYXNoIHRvIHNpbXBsaWZ5IHVybCBtYW5pcHVsYXRp
b24KKyAgICAgICAgY2FjaGVVUkwgPSBzLnVybC5yZXBsYWNlKCByaGFzaCwgIiIgKTsKKworICAg
ICAgICAvLyBNb3JlIG9wdGlvbnMgaGFuZGxpbmcgZm9yIHJlcXVlc3RzIHdpdGggbm8gY29udGVu
dAorICAgICAgICBpZiAoICFzLmhhc0NvbnRlbnQgKSB7CisKKyAgICAgICAgICAgIC8vIFJlbWVt
YmVyIHRoZSBoYXNoIHNvIHdlIGNhbiBwdXQgaXQgYmFjaworICAgICAgICAgICAgdW5jYWNoZWQg
PSBzLnVybC5zbGljZSggY2FjaGVVUkwubGVuZ3RoICk7CisKKyAgICAgICAgICAgIC8vIElmIGRh
dGEgaXMgYXZhaWxhYmxlLCBhcHBlbmQgZGF0YSB0byB1cmwKKyAgICAgICAgICAgIGlmICggcy5k
YXRhICkgeworICAgICAgICAgICAgICAgIGNhY2hlVVJMICs9ICggcnF1ZXJ5LnRlc3QoIGNhY2hl
VVJMICkgPyAiJiIgOiAiPyIgKSArIHMuZGF0YTsKKworICAgICAgICAgICAgICAgIC8vICM5Njgy
OiByZW1vdmUgZGF0YSBzbyB0aGF0IGl0J3Mgbm90IHVzZWQgaW4gYW4gZXZlbnR1YWwgcmV0cnkK
KyAgICAgICAgICAgICAgICBkZWxldGUgcy5kYXRhOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAvLyBBZGQgb3IgdXBkYXRlIGFudGktY2FjaGUgcGFyYW0gaWYgbmVlZGVkCisgICAgICAg
ICAgICBpZiAoIHMuY2FjaGUgPT09IGZhbHNlICkgeworICAgICAgICAgICAgICAgIGNhY2hlVVJM
ID0gY2FjaGVVUkwucmVwbGFjZSggcmFudGlDYWNoZSwgIiQxIiApOworICAgICAgICAgICAgICAg
IHVuY2FjaGVkID0gKCBycXVlcnkudGVzdCggY2FjaGVVUkwgKSA/ICImIiA6ICI/IiApICsgIl89
IiArICggbm9uY2UrKyApICsgdW5jYWNoZWQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IC8vIFB1dCBoYXNoIGFuZCBhbnRpLWNhY2hlIG9uIHRoZSBVUkwgdGhhdCB3aWxsIGJlIHJlcXVl
c3RlZCAoZ2gtMTczMikKKyAgICAgICAgICAgIHMudXJsID0gY2FjaGVVUkwgKyB1bmNhY2hlZDsK
KworICAgICAgICAvLyBDaGFuZ2UgJyUyMCcgdG8gJysnIGlmIHRoaXMgaXMgZW5jb2RlZCBmb3Jt
IGJvZHkgY29udGVudCAoZ2gtMjY1OCkKKyAgICAgICAgfSBlbHNlIGlmICggcy5kYXRhICYmIHMu
cHJvY2Vzc0RhdGEgJiYKKyAgICAgICAgICAgICggcy5jb250ZW50VHlwZSB8fCAiIiApLmluZGV4
T2YoICJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiICkgPT09IDAgKSB7CisgICAg
ICAgICAgICBzLmRhdGEgPSBzLmRhdGEucmVwbGFjZSggcjIwLCAiKyIgKTsKKyAgICAgICAgfQor
CisgICAgICAgIC8vIFNldCB0aGUgSWYtTW9kaWZpZWQtU2luY2UgYW5kL29yIElmLU5vbmUtTWF0
Y2ggaGVhZGVyLCBpZiBpbiBpZk1vZGlmaWVkIG1vZGUuCisgICAgICAgIGlmICggcy5pZk1vZGlm
aWVkICkgeworICAgICAgICAgICAgaWYgKCBqUXVlcnkubGFzdE1vZGlmaWVkWyBjYWNoZVVSTCBd
ICkgeworICAgICAgICAgICAgICAgIGpxWEhSLnNldFJlcXVlc3RIZWFkZXIoICJJZi1Nb2RpZmll
ZC1TaW5jZSIsIGpRdWVyeS5sYXN0TW9kaWZpZWRbIGNhY2hlVVJMIF0gKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGlmICggalF1ZXJ5LmV0YWdbIGNhY2hlVVJMIF0gKSB7CisgICAgICAg
ICAgICAgICAganFYSFIuc2V0UmVxdWVzdEhlYWRlciggIklmLU5vbmUtTWF0Y2giLCBqUXVlcnku
ZXRhZ1sgY2FjaGVVUkwgXSApOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAg
Ly8gU2V0IHRoZSBjb3JyZWN0IGhlYWRlciwgaWYgZGF0YSBpcyBiZWluZyBzZW50CisgICAgICAg
IGlmICggcy5kYXRhICYmIHMuaGFzQ29udGVudCAmJiBzLmNvbnRlbnRUeXBlICE9PSBmYWxzZSB8
fCBvcHRpb25zLmNvbnRlbnRUeXBlICkgeworICAgICAgICAgICAganFYSFIuc2V0UmVxdWVzdEhl
YWRlciggIkNvbnRlbnQtVHlwZSIsIHMuY29udGVudFR5cGUgKTsKKyAgICAgICAgfQorCisgICAg
ICAgIC8vIFNldCB0aGUgQWNjZXB0cyBoZWFkZXIgZm9yIHRoZSBzZXJ2ZXIsIGRlcGVuZGluZyBv
biB0aGUgZGF0YVR5cGUKKyAgICAgICAganFYSFIuc2V0UmVxdWVzdEhlYWRlcigKKyAgICAgICAg
ICAgICJBY2NlcHQiLAorICAgICAgICAgICAgcy5kYXRhVHlwZXNbIDAgXSAmJiBzLmFjY2VwdHNb
IHMuZGF0YVR5cGVzWyAwIF0gXSA/CisgICAgICAgICAgICAgICAgcy5hY2NlcHRzWyBzLmRhdGFU
eXBlc1sgMCBdIF0gKworICAgICAgICAgICAgICAgICAgICAoIHMuZGF0YVR5cGVzWyAwIF0gIT09
ICIqIiA/ICIsICIgKyBhbGxUeXBlcyArICI7IHE9MC4wMSIgOiAiIiApIDoKKyAgICAgICAgICAg
ICAgICBzLmFjY2VwdHNbICIqIiBdCisgICAgICAgICk7CisKKyAgICAgICAgLy8gQ2hlY2sgZm9y
IGhlYWRlcnMgb3B0aW9uCisgICAgICAgIGZvciAoIGkgaW4gcy5oZWFkZXJzICkgeworICAgICAg
ICAgICAganFYSFIuc2V0UmVxdWVzdEhlYWRlciggaSwgcy5oZWFkZXJzWyBpIF0gKTsKKyAgICAg
ICAgfQorCisgICAgICAgIC8vIEFsbG93IGN1c3RvbSBoZWFkZXJzL21pbWV0eXBlcyBhbmQgZWFy
bHkgYWJvcnQKKyAgICAgICAgaWYgKCBzLmJlZm9yZVNlbmQgJiYKKyAgICAgICAgICAgICggcy5i
ZWZvcmVTZW5kLmNhbGwoIGNhbGxiYWNrQ29udGV4dCwganFYSFIsIHMgKSA9PT0gZmFsc2UgfHwg
Y29tcGxldGVkICkgKSB7CisKKyAgICAgICAgICAgIC8vIEFib3J0IGlmIG5vdCBkb25lIGFscmVh
ZHkgYW5kIHJldHVybgorICAgICAgICAgICAgcmV0dXJuIGpxWEhSLmFib3J0KCk7CisgICAgICAg
IH0KKworICAgICAgICAvLyBBYm9ydGluZyBpcyBubyBsb25nZXIgYSBjYW5jZWxsYXRpb24KKyAg
ICAgICAgc3RyQWJvcnQgPSAiYWJvcnQiOworCisgICAgICAgIC8vIEluc3RhbGwgY2FsbGJhY2tz
IG9uIGRlZmVycmVkcworICAgICAgICBjb21wbGV0ZURlZmVycmVkLmFkZCggcy5jb21wbGV0ZSAp
OworICAgICAgICBqcVhIUi5kb25lKCBzLnN1Y2Nlc3MgKTsKKyAgICAgICAganFYSFIuZmFpbCgg
cy5lcnJvciApOworCisgICAgICAgIC8vIEdldCB0cmFuc3BvcnQKKyAgICAgICAgdHJhbnNwb3J0
ID0gaW5zcGVjdFByZWZpbHRlcnNPclRyYW5zcG9ydHMoIHRyYW5zcG9ydHMsIHMsIG9wdGlvbnMs
IGpxWEhSICk7CisKKyAgICAgICAgLy8gSWYgbm8gdHJhbnNwb3J0LCB3ZSBhdXRvLWFib3J0Cisg
ICAgICAgIGlmICggIXRyYW5zcG9ydCApIHsKKyAgICAgICAgICAgIGRvbmUoIC0xLCAiTm8gVHJh
bnNwb3J0IiApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAganFYSFIucmVhZHlTdGF0
ZSA9IDE7CisKKyAgICAgICAgICAgIC8vIFNlbmQgZ2xvYmFsIGV2ZW50CisgICAgICAgICAgICBp
ZiAoIGZpcmVHbG9iYWxzICkgeworICAgICAgICAgICAgICAgIGdsb2JhbEV2ZW50Q29udGV4dC50
cmlnZ2VyKCAiYWpheFNlbmQiLCBbIGpxWEhSLCBzIF0gKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgLy8gSWYgcmVxdWVzdCB3YXMgYWJvcnRlZCBpbnNpZGUgYWpheFNlbmQsIHN0b3Ag
dGhlcmUKKyAgICAgICAgICAgIGlmICggY29tcGxldGVkICkgeworICAgICAgICAgICAgICAgIHJl
dHVybiBqcVhIUjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGltZW91dAorICAg
ICAgICAgICAgaWYgKCBzLmFzeW5jICYmIHMudGltZW91dCA+IDAgKSB7CisgICAgICAgICAgICAg
ICAgdGltZW91dFRpbWVyID0gd2luZG93LnNldFRpbWVvdXQoIGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgICAgICAgICBqcVhIUi5hYm9ydCggInRpbWVvdXQiICk7CisgICAgICAgICAgICAgICAg
fSwgcy50aW1lb3V0ICk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRyeSB7CisgICAg
ICAgICAgICAgICAgY29tcGxldGVkID0gZmFsc2U7CisgICAgICAgICAgICAgICAgdHJhbnNwb3J0
LnNlbmQoIHJlcXVlc3RIZWFkZXJzLCBkb25lICk7CisgICAgICAgICAgICB9IGNhdGNoICggZSAp
IHsKKworICAgICAgICAgICAgICAgIC8vIFJldGhyb3cgcG9zdC1jb21wbGV0aW9uIGV4Y2VwdGlv
bnMKKyAgICAgICAgICAgICAgICBpZiAoIGNvbXBsZXRlZCApIHsKKyAgICAgICAgICAgICAgICAg
ICAgdGhyb3cgZTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBQcm9w
YWdhdGUgb3RoZXJzIGFzIHJlc3VsdHMKKyAgICAgICAgICAgICAgICBkb25lKCAtMSwgZSApOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gQ2FsbGJhY2sgZm9yIHdoZW4g
ZXZlcnl0aGluZyBpcyBkb25lCisgICAgICAgIGZ1bmN0aW9uIGRvbmUoIHN0YXR1cywgbmF0aXZl
U3RhdHVzVGV4dCwgcmVzcG9uc2VzLCBoZWFkZXJzICkgeworICAgICAgICAgICAgdmFyIGlzU3Vj
Y2Vzcywgc3VjY2VzcywgZXJyb3IsIHJlc3BvbnNlLCBtb2RpZmllZCwKKyAgICAgICAgICAgICAg
ICBzdGF0dXNUZXh0ID0gbmF0aXZlU3RhdHVzVGV4dDsKKworICAgICAgICAgICAgLy8gSWdub3Jl
IHJlcGVhdCBpbnZvY2F0aW9ucworICAgICAgICAgICAgaWYgKCBjb21wbGV0ZWQgKSB7CisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjb21wbGV0
ZWQgPSB0cnVlOworCisgICAgICAgICAgICAvLyBDbGVhciB0aW1lb3V0IGlmIGl0IGV4aXN0cwor
ICAgICAgICAgICAgaWYgKCB0aW1lb3V0VGltZXIgKSB7CisgICAgICAgICAgICAgICAgd2luZG93
LmNsZWFyVGltZW91dCggdGltZW91dFRpbWVyICk7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIC8vIERlcmVmZXJlbmNlIHRyYW5zcG9ydCBmb3IgZWFybHkgZ2FyYmFnZSBjb2xsZWN0aW9u
CisgICAgICAgICAgICAvLyAobm8gbWF0dGVyIGhvdyBsb25nIHRoZSBqcVhIUiBvYmplY3Qgd2ls
bCBiZSB1c2VkKQorICAgICAgICAgICAgdHJhbnNwb3J0ID0gdW5kZWZpbmVkOworCisgICAgICAg
ICAgICAvLyBDYWNoZSByZXNwb25zZSBoZWFkZXJzCisgICAgICAgICAgICByZXNwb25zZUhlYWRl
cnNTdHJpbmcgPSBoZWFkZXJzIHx8ICIiOworCisgICAgICAgICAgICAvLyBTZXQgcmVhZHlTdGF0
ZQorICAgICAgICAgICAganFYSFIucmVhZHlTdGF0ZSA9IHN0YXR1cyA+IDAgPyA0IDogMDsKKwor
ICAgICAgICAgICAgLy8gRGV0ZXJtaW5lIGlmIHN1Y2Nlc3NmdWwKKyAgICAgICAgICAgIGlzU3Vj
Y2VzcyA9IHN0YXR1cyA+PSAyMDAgJiYgc3RhdHVzIDwgMzAwIHx8IHN0YXR1cyA9PT0gMzA0Owor
CisgICAgICAgICAgICAvLyBHZXQgcmVzcG9uc2UgZGF0YQorICAgICAgICAgICAgaWYgKCByZXNw
b25zZXMgKSB7CisgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBhamF4SGFuZGxlUmVzcG9uc2Vz
KCBzLCBqcVhIUiwgcmVzcG9uc2VzICk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8v
IENvbnZlcnQgbm8gbWF0dGVyIHdoYXQgKHRoYXQgd2F5IHJlc3BvbnNlWFhYIGZpZWxkcyBhcmUg
YWx3YXlzIHNldCkKKyAgICAgICAgICAgIHJlc3BvbnNlID0gYWpheENvbnZlcnQoIHMsIHJlc3Bv
bnNlLCBqcVhIUiwgaXNTdWNjZXNzICk7CisKKyAgICAgICAgICAgIC8vIElmIHN1Y2Nlc3NmdWws
IGhhbmRsZSB0eXBlIGNoYWluaW5nCisgICAgICAgICAgICBpZiAoIGlzU3VjY2VzcyApIHsKKwor
ICAgICAgICAgICAgICAgIC8vIFNldCB0aGUgSWYtTW9kaWZpZWQtU2luY2UgYW5kL29yIElmLU5v
bmUtTWF0Y2ggaGVhZGVyLCBpZiBpbiBpZk1vZGlmaWVkIG1vZGUuCisgICAgICAgICAgICAgICAg
aWYgKCBzLmlmTW9kaWZpZWQgKSB7CisgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVkID0ganFY
SFIuZ2V0UmVzcG9uc2VIZWFkZXIoICJMYXN0LU1vZGlmaWVkIiApOworICAgICAgICAgICAgICAg
ICAgICBpZiAoIG1vZGlmaWVkICkgeworICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5Lmxh
c3RNb2RpZmllZFsgY2FjaGVVUkwgXSA9IG1vZGlmaWVkOworICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVkID0ganFYSFIuZ2V0UmVzcG9uc2VIZWFkZXIo
ICJldGFnIiApOworICAgICAgICAgICAgICAgICAgICBpZiAoIG1vZGlmaWVkICkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgalF1ZXJ5LmV0YWdbIGNhY2hlVVJMIF0gPSBtb2RpZmllZDsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg
IC8vIGlmIG5vIGNvbnRlbnQKKyAgICAgICAgICAgICAgICBpZiAoIHN0YXR1cyA9PT0gMjA0IHx8
IHMudHlwZSA9PT0gIkhFQUQiICkgeworICAgICAgICAgICAgICAgICAgICBzdGF0dXNUZXh0ID0g
Im5vY29udGVudCI7CisKKyAgICAgICAgICAgICAgICAvLyBpZiBub3QgbW9kaWZpZWQKKyAgICAg
ICAgICAgICAgICB9IGVsc2UgaWYgKCBzdGF0dXMgPT09IDMwNCApIHsKKyAgICAgICAgICAgICAg
ICAgICAgc3RhdHVzVGV4dCA9ICJub3Rtb2RpZmllZCI7CisKKyAgICAgICAgICAgICAgICAvLyBJ
ZiB3ZSBoYXZlIGRhdGEsIGxldCdzIGNvbnZlcnQgaXQKKyAgICAgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgICAgICBzdGF0dXNUZXh0ID0gcmVzcG9uc2Uuc3RhdGU7CisgICAg
ICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSByZXNwb25zZS5kYXRhOworICAgICAgICAgICAgICAg
ICAgICBlcnJvciA9IHJlc3BvbnNlLmVycm9yOworICAgICAgICAgICAgICAgICAgICBpc1N1Y2Nl
c3MgPSAhZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKwor
ICAgICAgICAgICAgICAgIC8vIEV4dHJhY3QgZXJyb3IgZnJvbSBzdGF0dXNUZXh0IGFuZCBub3Jt
YWxpemUgZm9yIG5vbi1hYm9ydHMKKyAgICAgICAgICAgICAgICBlcnJvciA9IHN0YXR1c1RleHQ7
CisgICAgICAgICAgICAgICAgaWYgKCBzdGF0dXMgfHwgIXN0YXR1c1RleHQgKSB7CisgICAgICAg
ICAgICAgICAgICAgIHN0YXR1c1RleHQgPSAiZXJyb3IiOworICAgICAgICAgICAgICAgICAgICBp
ZiAoIHN0YXR1cyA8IDAgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSAwOwor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAvLyBTZXQgZGF0YSBmb3IgdGhlIGZha2UgeGhyIG9iamVjdAorICAgICAg
ICAgICAganFYSFIuc3RhdHVzID0gc3RhdHVzOworICAgICAgICAgICAganFYSFIuc3RhdHVzVGV4
dCA9ICggbmF0aXZlU3RhdHVzVGV4dCB8fCBzdGF0dXNUZXh0ICkgKyAiIjsKKworICAgICAgICAg
ICAgLy8gU3VjY2Vzcy9FcnJvcgorICAgICAgICAgICAgaWYgKCBpc1N1Y2Nlc3MgKSB7CisgICAg
ICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZVdpdGgoIGNhbGxiYWNrQ29udGV4dCwgWyBzdWNj
ZXNzLCBzdGF0dXNUZXh0LCBqcVhIUiBdICk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIGRlZmVycmVkLnJlamVjdFdpdGgoIGNhbGxiYWNrQ29udGV4dCwgWyBqcVhIUiwg
c3RhdHVzVGV4dCwgZXJyb3IgXSApOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBT
dGF0dXMtZGVwZW5kZW50IGNhbGxiYWNrcworICAgICAgICAgICAganFYSFIuc3RhdHVzQ29kZSgg
c3RhdHVzQ29kZSApOworICAgICAgICAgICAgc3RhdHVzQ29kZSA9IHVuZGVmaW5lZDsKKworICAg
ICAgICAgICAgaWYgKCBmaXJlR2xvYmFscyApIHsKKyAgICAgICAgICAgICAgICBnbG9iYWxFdmVu
dENvbnRleHQudHJpZ2dlciggaXNTdWNjZXNzID8gImFqYXhTdWNjZXNzIiA6ICJhamF4RXJyb3Ii
LAorICAgICAgICAgICAgICAgICAgICBbIGpxWEhSLCBzLCBpc1N1Y2Nlc3MgPyBzdWNjZXNzIDog
ZXJyb3IgXSApOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBDb21wbGV0ZQorICAg
ICAgICAgICAgY29tcGxldGVEZWZlcnJlZC5maXJlV2l0aCggY2FsbGJhY2tDb250ZXh0LCBbIGpx
WEhSLCBzdGF0dXNUZXh0IF0gKTsKKworICAgICAgICAgICAgaWYgKCBmaXJlR2xvYmFscyApIHsK
KyAgICAgICAgICAgICAgICBnbG9iYWxFdmVudENvbnRleHQudHJpZ2dlciggImFqYXhDb21wbGV0
ZSIsIFsganFYSFIsIHMgXSApOworCisgICAgICAgICAgICAgICAgLy8gSGFuZGxlIHRoZSBnbG9i
YWwgQUpBWCBjb3VudGVyCisgICAgICAgICAgICAgICAgaWYgKCAhKCAtLWpRdWVyeS5hY3RpdmUg
KSApIHsKKyAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmV2ZW50LnRyaWdnZXIoICJhamF4U3Rv
cCIgKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAg
ICAgICByZXR1cm4ganFYSFI7CisgICAgfSwKKworICAgIGdldEpTT046IGZ1bmN0aW9uKCB1cmws
IGRhdGEsIGNhbGxiYWNrICkgeworICAgICAgICByZXR1cm4galF1ZXJ5LmdldCggdXJsLCBkYXRh
LCBjYWxsYmFjaywgImpzb24iICk7CisgICAgfSwKKworICAgIGdldFNjcmlwdDogZnVuY3Rpb24o
IHVybCwgY2FsbGJhY2sgKSB7CisgICAgICAgIHJldHVybiBqUXVlcnkuZ2V0KCB1cmwsIHVuZGVm
aW5lZCwgY2FsbGJhY2ssICJzY3JpcHQiICk7CisgICAgfQorfSApOworCitqUXVlcnkuZWFjaCgg
WyAiZ2V0IiwgInBvc3QiIF0sIGZ1bmN0aW9uKCBpLCBtZXRob2QgKSB7CisgICAgalF1ZXJ5WyBt
ZXRob2QgXSA9IGZ1bmN0aW9uKCB1cmwsIGRhdGEsIGNhbGxiYWNrLCB0eXBlICkgeworCisgICAg
ICAgIC8vIFNoaWZ0IGFyZ3VtZW50cyBpZiBkYXRhIGFyZ3VtZW50IHdhcyBvbWl0dGVkCisgICAg
ICAgIGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIGRhdGEgKSApIHsKKyAgICAgICAgICAgIHR5cGUg
PSB0eXBlIHx8IGNhbGxiYWNrOworICAgICAgICAgICAgY2FsbGJhY2sgPSBkYXRhOworICAgICAg
ICAgICAgZGF0YSA9IHVuZGVmaW5lZDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFRoZSB1cmwg
Y2FuIGJlIGFuIG9wdGlvbnMgb2JqZWN0ICh3aGljaCB0aGVuIG11c3QgaGF2ZSAudXJsKQorICAg
ICAgICByZXR1cm4galF1ZXJ5LmFqYXgoIGpRdWVyeS5leHRlbmQoIHsKKyAgICAgICAgICAgIHVy
bDogdXJsLAorICAgICAgICAgICAgdHlwZTogbWV0aG9kLAorICAgICAgICAgICAgZGF0YVR5cGU6
IHR5cGUsCisgICAgICAgICAgICBkYXRhOiBkYXRhLAorICAgICAgICAgICAgc3VjY2VzczogY2Fs
bGJhY2sKKyAgICAgICAgfSwgalF1ZXJ5LmlzUGxhaW5PYmplY3QoIHVybCApICYmIHVybCApICk7
CisgICAgfTsKK30gKTsKKworCitqUXVlcnkuX2V2YWxVcmwgPSBmdW5jdGlvbiggdXJsICkgewor
ICAgIHJldHVybiBqUXVlcnkuYWpheCggeworICAgICAgICB1cmw6IHVybCwKKworICAgICAgICAv
LyBNYWtlIHRoaXMgZXhwbGljaXQsIHNpbmNlIHVzZXIgY2FuIG92ZXJyaWRlIHRoaXMgdGhyb3Vn
aCBhamF4U2V0dXAgKCMxMTI2NCkKKyAgICAgICAgdHlwZTogIkdFVCIsCisgICAgICAgIGRhdGFU
eXBlOiAic2NyaXB0IiwKKyAgICAgICAgY2FjaGU6IHRydWUsCisgICAgICAgIGFzeW5jOiBmYWxz
ZSwKKyAgICAgICAgZ2xvYmFsOiBmYWxzZSwKKyAgICAgICAgInRocm93cyI6IHRydWUKKyAgICB9
ICk7Cit9OworCisKK2pRdWVyeS5mbi5leHRlbmQoIHsKKyAgICB3cmFwQWxsOiBmdW5jdGlvbigg
aHRtbCApIHsKKyAgICAgICAgdmFyIHdyYXA7CisKKyAgICAgICAgaWYgKCB0aGlzWyAwIF0gKSB7
CisgICAgICAgICAgICBpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBodG1sICkgKSB7CisgICAgICAg
ICAgICAgICAgaHRtbCA9IGh0bWwuY2FsbCggdGhpc1sgMCBdICk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIC8vIFRoZSBlbGVtZW50cyB0byB3cmFwIHRoZSB0YXJnZXQgYXJvdW5kCisg
ICAgICAgICAgICB3cmFwID0galF1ZXJ5KCBodG1sLCB0aGlzWyAwIF0ub3duZXJEb2N1bWVudCAp
LmVxKCAwICkuY2xvbmUoIHRydWUgKTsKKworICAgICAgICAgICAgaWYgKCB0aGlzWyAwIF0ucGFy
ZW50Tm9kZSApIHsKKyAgICAgICAgICAgICAgICB3cmFwLmluc2VydEJlZm9yZSggdGhpc1sgMCBd
ICk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHdyYXAubWFwKCBmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgICAgICB2YXIgZWxlbSA9IHRoaXM7CisKKyAgICAgICAgICAgICAgICB3aGls
ZSAoIGVsZW0uZmlyc3RFbGVtZW50Q2hpbGQgKSB7CisgICAgICAgICAgICAgICAgICAgIGVsZW0g
PSBlbGVtLmZpcnN0RWxlbWVudENoaWxkOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgIHJldHVybiBlbGVtOworICAgICAgICAgICAgfSApLmFwcGVuZCggdGhpcyApOworICAg
ICAgICB9CisKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfSwKKworICAgIHdyYXBJbm5lcjog
ZnVuY3Rpb24oIGh0bWwgKSB7CisgICAgICAgIGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIGh0bWwg
KSApIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCBpICkgeworICAg
ICAgICAgICAgICAgIGpRdWVyeSggdGhpcyApLndyYXBJbm5lciggaHRtbC5jYWxsKCB0aGlzLCBp
ICkgKTsKKyAgICAgICAgICAgIH0gKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0aGlz
LmVhY2goIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdmFyIHNlbGYgPSBqUXVlcnkoIHRoaXMg
KSwKKyAgICAgICAgICAgICAgICBjb250ZW50cyA9IHNlbGYuY29udGVudHMoKTsKKworICAgICAg
ICAgICAgaWYgKCBjb250ZW50cy5sZW5ndGggKSB7CisgICAgICAgICAgICAgICAgY29udGVudHMu
d3JhcEFsbCggaHRtbCApOworCisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IHNlbGYuYXBwZW5kKCBodG1sICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gKTsKKyAgICB9
LAorCisgICAgd3JhcDogZnVuY3Rpb24oIGh0bWwgKSB7CisgICAgICAgIHZhciBpc0Z1bmN0aW9u
ID0galF1ZXJ5LmlzRnVuY3Rpb24oIGh0bWwgKTsKKworICAgICAgICByZXR1cm4gdGhpcy5lYWNo
KCBmdW5jdGlvbiggaSApIHsKKyAgICAgICAgICAgIGpRdWVyeSggdGhpcyApLndyYXBBbGwoIGlz
RnVuY3Rpb24gPyBodG1sLmNhbGwoIHRoaXMsIGkgKSA6IGh0bWwgKTsKKyAgICAgICAgfSApOwor
ICAgIH0sCisKKyAgICB1bndyYXA6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHsKKyAgICAgICAgdGhp
cy5wYXJlbnQoIHNlbGVjdG9yICkubm90KCAiYm9keSIgKS5lYWNoKCBmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgIGpRdWVyeSggdGhpcyApLnJlcGxhY2VXaXRoKCB0aGlzLmNoaWxkTm9kZXMgKTsK
KyAgICAgICAgfSApOworICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9Cit9ICk7CisKKworalF1
ZXJ5LmV4cHIucHNldWRvcy5oaWRkZW4gPSBmdW5jdGlvbiggZWxlbSApIHsKKyAgICByZXR1cm4g
IWpRdWVyeS5leHByLnBzZXVkb3MudmlzaWJsZSggZWxlbSApOworfTsKK2pRdWVyeS5leHByLnBz
ZXVkb3MudmlzaWJsZSA9IGZ1bmN0aW9uKCBlbGVtICkgeworICAgIHJldHVybiAhISggZWxlbS5v
ZmZzZXRXaWR0aCB8fCBlbGVtLm9mZnNldEhlaWdodCB8fCBlbGVtLmdldENsaWVudFJlY3RzKCku
bGVuZ3RoICk7Cit9OworCisKKworCitqUXVlcnkuYWpheFNldHRpbmdzLnhociA9IGZ1bmN0aW9u
KCkgeworICAgIHRyeSB7CisgICAgICAgIHJldHVybiBuZXcgd2luZG93LlhNTEh0dHBSZXF1ZXN0
KCk7CisgICAgfSBjYXRjaCAoIGUgKSB7fQorfTsKKwordmFyIHhoclN1Y2Nlc3NTdGF0dXMgPSB7
CisKKyAgICAgICAgLy8gRmlsZSBwcm90b2NvbCBhbHdheXMgeWllbGRzIHN0YXR1cyBjb2RlIDAs
IGFzc3VtZSAyMDAKKyAgICAgICAgMDogMjAwLAorCisgICAgICAgIC8vIFN1cHBvcnQ6IElFIDw9
OSBvbmx5CisgICAgICAgIC8vICMxNDUwOiBzb21ldGltZXMgSUUgcmV0dXJucyAxMjIzIHdoZW4g
aXQgc2hvdWxkIGJlIDIwNAorICAgICAgICAxMjIzOiAyMDQKKyAgICB9LAorICAgIHhoclN1cHBv
cnRlZCA9IGpRdWVyeS5hamF4U2V0dGluZ3MueGhyKCk7CisKK3N1cHBvcnQuY29ycyA9ICEheGhy
U3VwcG9ydGVkICYmICggIndpdGhDcmVkZW50aWFscyIgaW4geGhyU3VwcG9ydGVkICk7CitzdXBw
b3J0LmFqYXggPSB4aHJTdXBwb3J0ZWQgPSAhIXhoclN1cHBvcnRlZDsKKworalF1ZXJ5LmFqYXhU
cmFuc3BvcnQoIGZ1bmN0aW9uKCBvcHRpb25zICkgeworICAgIHZhciBjYWxsYmFjaywgZXJyb3JD
YWxsYmFjazsKKworICAgIC8vIENyb3NzIGRvbWFpbiBvbmx5IGFsbG93ZWQgaWYgc3VwcG9ydGVk
IHRocm91Z2ggWE1MSHR0cFJlcXVlc3QKKyAgICBpZiAoIHN1cHBvcnQuY29ycyB8fCB4aHJTdXBw
b3J0ZWQgJiYgIW9wdGlvbnMuY3Jvc3NEb21haW4gKSB7CisgICAgICAgIHJldHVybiB7CisgICAg
ICAgICAgICBzZW5kOiBmdW5jdGlvbiggaGVhZGVycywgY29tcGxldGUgKSB7CisgICAgICAgICAg
ICAgICAgdmFyIGksCisgICAgICAgICAgICAgICAgICAgIHhociA9IG9wdGlvbnMueGhyKCk7CisK
KyAgICAgICAgICAgICAgICB4aHIub3BlbigKKyAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy50
eXBlLAorICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnVybCwKKyAgICAgICAgICAgICAgICAg
ICAgb3B0aW9ucy5hc3luYywKKyAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy51c2VybmFtZSwK
KyAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5wYXNzd29yZAorICAgICAgICAgICAgICAgICk7
CisKKyAgICAgICAgICAgICAgICAvLyBBcHBseSBjdXN0b20gZmllbGRzIGlmIHByb3ZpZGVkCisg
ICAgICAgICAgICAgICAgaWYgKCBvcHRpb25zLnhockZpZWxkcyApIHsKKyAgICAgICAgICAgICAg
ICAgICAgZm9yICggaSBpbiBvcHRpb25zLnhockZpZWxkcyApIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHhoclsgaSBdID0gb3B0aW9ucy54aHJGaWVsZHNbIGkgXTsKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIE92ZXJyaWRl
IG1pbWUgdHlwZSBpZiBuZWVkZWQKKyAgICAgICAgICAgICAgICBpZiAoIG9wdGlvbnMubWltZVR5
cGUgJiYgeGhyLm92ZXJyaWRlTWltZVR5cGUgKSB7CisgICAgICAgICAgICAgICAgICAgIHhoci5v
dmVycmlkZU1pbWVUeXBlKCBvcHRpb25zLm1pbWVUeXBlICk7CisgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgLy8gWC1SZXF1ZXN0ZWQtV2l0aCBoZWFkZXIKKyAgICAgICAgICAg
ICAgICAvLyBGb3IgY3Jvc3MtZG9tYWluIHJlcXVlc3RzLCBzZWVpbmcgYXMgY29uZGl0aW9ucyBm
b3IgYSBwcmVmbGlnaHQgYXJlCisgICAgICAgICAgICAgICAgLy8gYWtpbiB0byBhIGppZ3NhdyBw
dXp6bGUsIHdlIHNpbXBseSBuZXZlciBzZXQgaXQgdG8gYmUgc3VyZS4KKyAgICAgICAgICAgICAg
ICAvLyAoaXQgY2FuIGFsd2F5cyBiZSBzZXQgb24gYSBwZXItcmVxdWVzdCBiYXNpcyBvciBldmVu
IHVzaW5nIGFqYXhTZXR1cCkKKyAgICAgICAgICAgICAgICAvLyBGb3Igc2FtZS1kb21haW4gcmVx
dWVzdHMsIHdvbid0IGNoYW5nZSBoZWFkZXIgaWYgYWxyZWFkeSBwcm92aWRlZC4KKyAgICAgICAg
ICAgICAgICBpZiAoICFvcHRpb25zLmNyb3NzRG9tYWluICYmICFoZWFkZXJzWyAiWC1SZXF1ZXN0
ZWQtV2l0aCIgXSApIHsKKyAgICAgICAgICAgICAgICAgICAgaGVhZGVyc1sgIlgtUmVxdWVzdGVk
LVdpdGgiIF0gPSAiWE1MSHR0cFJlcXVlc3QiOworICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgIC8vIFNldCBoZWFkZXJzCisgICAgICAgICAgICAgICAgZm9yICggaSBpbiBoZWFk
ZXJzICkgeworICAgICAgICAgICAgICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlciggaSwgaGVh
ZGVyc1sgaSBdICk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gQ2Fs
bGJhY2sKKyAgICAgICAgICAgICAgICBjYWxsYmFjayA9IGZ1bmN0aW9uKCB0eXBlICkgeworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoIGNhbGxiYWNrICkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxi
YWNrID0gZXJyb3JDYWxsYmFjayA9IHhoci5vbmxvYWQgPQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB4aHIub25lcnJvciA9IHhoci5vbmFib3J0ID0geGhyLm9ucmVhZHlzdGF0ZWNo
YW5nZSA9IG51bGw7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHR5cGUgPT09
ICJhYm9ydCIgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhoci5hYm9ydCgp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIHR5cGUgPT09ICJlcnJv
ciIgKSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3VwcG9ydDogSUUg
PD05IG9ubHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gT24gYSBtYW51YWwg
bmF0aXZlIGFib3J0LCBJRTkgdGhyb3dzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIGVycm9ycyBvbiBhbnkgcHJvcGVydHkgYWNjZXNzIHRoYXQgaXMgbm90IHJlYWR5U3RhdGUK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCB0eXBlb2YgeGhyLnN0YXR1cyAh
PT0gIm51bWJlciIgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21w
bGV0ZSggMCwgImVycm9yIiApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGUoCisKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGaWxlOiBwcm90b2NvbCBh
bHdheXMgeWllbGRzIHN0YXR1cyAwOyBzZWUgIzg2MDUsICMxNDIwNworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHhoci5zdGF0dXMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgeGhyLnN0YXR1c1RleHQKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb21wbGV0ZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHhoclN1Y2Nlc3NTdGF0dXNbIHhoci5zdGF0dXMgXSB8fCB4aHIuc3RhdHVzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgeGhyLnN0YXR1c1RleHQsCisKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6IElFIDw9OSBvbmx5CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJRTkgaGFzIG5vIFhIUjIgYnV0IHRocm93
cyBvbiBiaW5hcnkgKHRyYWMtMTE0MjYpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBGb3IgWEhSMiBub24tdGV4dCwgbGV0IHRoZSBjYWxsZXIgaGFuZGxlIGl0IChnaC0y
NDk4KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB4aHIucmVzcG9uc2VU
eXBlIHx8ICJ0ZXh0IiApICE9PSAidGV4dCIgIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0eXBlb2YgeGhyLnJlc3BvbnNlVGV4dCAhPT0gInN0cmluZyIgPworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgYmluYXJ5OiB4aHIucmVzcG9uc2Ug
fSA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB0ZXh0OiB4aHIu
cmVzcG9uc2VUZXh0IH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4aHIu
Z2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgfTsKKworICAgICAg
ICAgICAgICAgIC8vIExpc3RlbiB0byBldmVudHMKKyAgICAgICAgICAgICAgICB4aHIub25sb2Fk
ID0gY2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICBlcnJvckNhbGxiYWNrID0geGhyLm9uZXJy
b3IgPSBjYWxsYmFjayggImVycm9yIiApOworCisgICAgICAgICAgICAgICAgLy8gU3VwcG9ydDog
SUUgOSBvbmx5CisgICAgICAgICAgICAgICAgLy8gVXNlIG9ucmVhZHlzdGF0ZWNoYW5nZSB0byBy
ZXBsYWNlIG9uYWJvcnQKKyAgICAgICAgICAgICAgICAvLyB0byBoYW5kbGUgdW5jYXVnaHQgYWJv
cnRzCisgICAgICAgICAgICAgICAgaWYgKCB4aHIub25hYm9ydCAhPT0gdW5kZWZpbmVkICkgewor
ICAgICAgICAgICAgICAgICAgICB4aHIub25hYm9ydCA9IGVycm9yQ2FsbGJhY2s7CisgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNo
YW5nZSA9IGZ1bmN0aW9uKCkgeworCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayBy
ZWFkeVN0YXRlIGJlZm9yZSB0aW1lb3V0IGFzIGl0IGNoYW5nZXMKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICggeGhyLnJlYWR5U3RhdGUgPT09IDQgKSB7CisKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBBbGxvdyBvbmVycm9yIHRvIGJlIGNhbGxlZCBmaXJzdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBidXQgdGhhdCB3aWxsIG5vdCBoYW5kbGUgYSBuYXRpdmUg
YWJvcnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBbHNvLCBzYXZlIGVycm9yQ2Fs
bGJhY2sgdG8gYSB2YXJpYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzIHho
ci5vbmVycm9yIGNhbm5vdCBiZSBhY2Nlc3NlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHdpbmRvdy5zZXRUaW1lb3V0KCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCBjYWxsYmFjayApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVycm9yQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICAvLyBDcmVhdGUgdGhlIGFib3J0IGNhbGxiYWNrCisgICAgICAgICAgICAgICAg
Y2FsbGJhY2sgPSBjYWxsYmFjayggImFib3J0IiApOworCisgICAgICAgICAgICAgICAgdHJ5IHsK
KworICAgICAgICAgICAgICAgICAgICAvLyBEbyBzZW5kIHRoZSByZXF1ZXN0ICh0aGlzIG1heSBy
YWlzZSBhbiBleGNlcHRpb24pCisgICAgICAgICAgICAgICAgICAgIHhoci5zZW5kKCBvcHRpb25z
Lmhhc0NvbnRlbnQgJiYgb3B0aW9ucy5kYXRhIHx8IG51bGwgKTsKKyAgICAgICAgICAgICAgICB9
IGNhdGNoICggZSApIHsKKworICAgICAgICAgICAgICAgICAgICAvLyAjMTQ2ODM6IE9ubHkgcmV0
aHJvdyBpZiB0aGlzIGhhc24ndCBiZWVuIG5vdGlmaWVkIGFzIGFuIGVycm9yIHlldAorICAgICAg
ICAgICAgICAgICAgICBpZiAoIGNhbGxiYWNrICkgeworICAgICAgICAgICAgICAgICAgICAgICAg
dGhyb3cgZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0sCisKKyAgICAgICAgICAgIGFib3J0OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoIGNhbGxiYWNrICkgeworICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaygpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9Cit9ICk7
CisKKworCisKKy8vIFByZXZlbnQgYXV0by1leGVjdXRpb24gb2Ygc2NyaXB0cyB3aGVuIG5vIGV4
cGxpY2l0IGRhdGFUeXBlIHdhcyBwcm92aWRlZCAoU2VlIGdoLTI0MzIpCitqUXVlcnkuYWpheFBy
ZWZpbHRlciggZnVuY3Rpb24oIHMgKSB7CisgICAgaWYgKCBzLmNyb3NzRG9tYWluICkgeworICAg
ICAgICBzLmNvbnRlbnRzLnNjcmlwdCA9IGZhbHNlOworICAgIH0KK30gKTsKKworLy8gSW5zdGFs
bCBzY3JpcHQgZGF0YVR5cGUKK2pRdWVyeS5hamF4U2V0dXAoIHsKKyAgICBhY2NlcHRzOiB7Cisg
ICAgICAgIHNjcmlwdDogInRleHQvamF2YXNjcmlwdCwgYXBwbGljYXRpb24vamF2YXNjcmlwdCwg
IiArCisgICAgICAgICAgICAiYXBwbGljYXRpb24vZWNtYXNjcmlwdCwgYXBwbGljYXRpb24veC1l
Y21hc2NyaXB0IgorICAgIH0sCisgICAgY29udGVudHM6IHsKKyAgICAgICAgc2NyaXB0OiAvXGIo
PzpqYXZhfGVjbWEpc2NyaXB0XGIvCisgICAgfSwKKyAgICBjb252ZXJ0ZXJzOiB7CisgICAgICAg
ICJ0ZXh0IHNjcmlwdCI6IGZ1bmN0aW9uKCB0ZXh0ICkgeworICAgICAgICAgICAgalF1ZXJ5Lmds
b2JhbEV2YWwoIHRleHQgKTsKKyAgICAgICAgICAgIHJldHVybiB0ZXh0OworICAgICAgICB9Cisg
ICAgfQorfSApOworCisvLyBIYW5kbGUgY2FjaGUncyBzcGVjaWFsIGNhc2UgYW5kIGNyb3NzRG9t
YWluCitqUXVlcnkuYWpheFByZWZpbHRlciggInNjcmlwdCIsIGZ1bmN0aW9uKCBzICkgeworICAg
IGlmICggcy5jYWNoZSA9PT0gdW5kZWZpbmVkICkgeworICAgICAgICBzLmNhY2hlID0gZmFsc2U7
CisgICAgfQorICAgIGlmICggcy5jcm9zc0RvbWFpbiApIHsKKyAgICAgICAgcy50eXBlID0gIkdF
VCI7CisgICAgfQorfSApOworCisvLyBCaW5kIHNjcmlwdCB0YWcgaGFjayB0cmFuc3BvcnQKK2pR
dWVyeS5hamF4VHJhbnNwb3J0KCAic2NyaXB0IiwgZnVuY3Rpb24oIHMgKSB7CisKKyAgICAvLyBU
aGlzIHRyYW5zcG9ydCBvbmx5IGRlYWxzIHdpdGggY3Jvc3MgZG9tYWluIHJlcXVlc3RzCisgICAg
aWYgKCBzLmNyb3NzRG9tYWluICkgeworICAgICAgICB2YXIgc2NyaXB0LCBjYWxsYmFjazsKKyAg
ICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIHNlbmQ6IGZ1bmN0aW9uKCBfLCBjb21wbGV0ZSAp
IHsKKyAgICAgICAgICAgICAgICBzY3JpcHQgPSBqUXVlcnkoICI8c2NyaXB0PiIgKS5wcm9wKCB7
CisgICAgICAgICAgICAgICAgICAgIGNoYXJzZXQ6IHMuc2NyaXB0Q2hhcnNldCwKKyAgICAgICAg
ICAgICAgICAgICAgc3JjOiBzLnVybAorICAgICAgICAgICAgICAgIH0gKS5vbigKKyAgICAgICAg
ICAgICAgICAgICAgImxvYWQgZXJyb3IiLAorICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayA9
IGZ1bmN0aW9uKCBldnQgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHQucmVtb3Zl
KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayA9IG51bGw7CisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoIGV2dCApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b21wbGV0ZSggZXZ0LnR5cGUgPT09ICJlcnJvciIgPyA0MDQgOiAyMDAsIGV2dC50eXBlICk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICApOworCisgICAgICAgICAgICAgICAgLy8gVXNlIG5hdGl2ZSBET00gbWFuaXB1bGF0
aW9uIHRvIGF2b2lkIG91ciBkb21NYW5pcCBBSkFYIHRyaWNrZXJ5CisgICAgICAgICAgICAgICAg
ZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZCggc2NyaXB0WyAwIF0gKTsKKyAgICAgICAgICAgIH0s
CisgICAgICAgICAgICBhYm9ydDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgaWYgKCBj
YWxsYmFjayApIHsKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorfSApOworCisKKworCit2
YXIgb2xkQ2FsbGJhY2tzID0gW10sCisgICAgcmpzb25wID0gLyg9KVw/KD89JnwkKXxcP1w/LzsK
KworLy8gRGVmYXVsdCBqc29ucCBzZXR0aW5ncworalF1ZXJ5LmFqYXhTZXR1cCggeworICAgIGpz
b25wOiAiY2FsbGJhY2siLAorICAgIGpzb25wQ2FsbGJhY2s6IGZ1bmN0aW9uKCkgeworICAgICAg
ICB2YXIgY2FsbGJhY2sgPSBvbGRDYWxsYmFja3MucG9wKCkgfHwgKCBqUXVlcnkuZXhwYW5kbyAr
ICJfIiArICggbm9uY2UrKyApICk7CisgICAgICAgIHRoaXNbIGNhbGxiYWNrIF0gPSB0cnVlOwor
ICAgICAgICByZXR1cm4gY2FsbGJhY2s7CisgICAgfQorfSApOworCisvLyBEZXRlY3QsIG5vcm1h
bGl6ZSBvcHRpb25zIGFuZCBpbnN0YWxsIGNhbGxiYWNrcyBmb3IganNvbnAgcmVxdWVzdHMKK2pR
dWVyeS5hamF4UHJlZmlsdGVyKCAianNvbiBqc29ucCIsIGZ1bmN0aW9uKCBzLCBvcmlnaW5hbFNl
dHRpbmdzLCBqcVhIUiApIHsKKworICAgIHZhciBjYWxsYmFja05hbWUsIG92ZXJ3cml0dGVuLCBy
ZXNwb25zZUNvbnRhaW5lciwKKyAgICAgICAganNvblByb3AgPSBzLmpzb25wICE9PSBmYWxzZSAm
JiAoIHJqc29ucC50ZXN0KCBzLnVybCApID8KKyAgICAgICAgICAgICJ1cmwiIDoKKyAgICAgICAg
ICAgIHR5cGVvZiBzLmRhdGEgPT09ICJzdHJpbmciICYmCisgICAgICAgICAgICAgICAgKCBzLmNv
bnRlbnRUeXBlIHx8ICIiICkKKyAgICAgICAgICAgICAgICAgICAgLmluZGV4T2YoICJhcHBsaWNh
dGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiICkgPT09IDAgJiYKKyAgICAgICAgICAgICAgICBy
anNvbnAudGVzdCggcy5kYXRhICkgJiYgImRhdGEiCisgICAgICAgICk7CisKKyAgICAvLyBIYW5k
bGUgaWZmIHRoZSBleHBlY3RlZCBkYXRhIHR5cGUgaXMgImpzb25wIiBvciB3ZSBoYXZlIGEgcGFy
YW1ldGVyIHRvIHNldAorICAgIGlmICgganNvblByb3AgfHwgcy5kYXRhVHlwZXNbIDAgXSA9PT0g
Impzb25wIiApIHsKKworICAgICAgICAvLyBHZXQgY2FsbGJhY2sgbmFtZSwgcmVtZW1iZXJpbmcg
cHJlZXhpc3RpbmcgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIGl0CisgICAgICAgIGNhbGxiYWNrTmFt
ZSA9IHMuanNvbnBDYWxsYmFjayA9IGpRdWVyeS5pc0Z1bmN0aW9uKCBzLmpzb25wQ2FsbGJhY2sg
KSA/CisgICAgICAgICAgICBzLmpzb25wQ2FsbGJhY2soKSA6CisgICAgICAgICAgICBzLmpzb25w
Q2FsbGJhY2s7CisKKyAgICAgICAgLy8gSW5zZXJ0IGNhbGxiYWNrIGludG8gdXJsIG9yIGZvcm0g
ZGF0YQorICAgICAgICBpZiAoIGpzb25Qcm9wICkgeworICAgICAgICAgICAgc1sganNvblByb3Ag
XSA9IHNbIGpzb25Qcm9wIF0ucmVwbGFjZSggcmpzb25wLCAiJDEiICsgY2FsbGJhY2tOYW1lICk7
CisgICAgICAgIH0gZWxzZSBpZiAoIHMuanNvbnAgIT09IGZhbHNlICkgeworICAgICAgICAgICAg
cy51cmwgKz0gKCBycXVlcnkudGVzdCggcy51cmwgKSA/ICImIiA6ICI/IiApICsgcy5qc29ucCAr
ICI9IiArIGNhbGxiYWNrTmFtZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFVzZSBkYXRhIGNv
bnZlcnRlciB0byByZXRyaWV2ZSBqc29uIGFmdGVyIHNjcmlwdCBleGVjdXRpb24KKyAgICAgICAg
cy5jb252ZXJ0ZXJzWyAic2NyaXB0IGpzb24iIF0gPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
IGlmICggIXJlc3BvbnNlQ29udGFpbmVyICkgeworICAgICAgICAgICAgICAgIGpRdWVyeS5lcnJv
ciggY2FsbGJhY2tOYW1lICsgIiB3YXMgbm90IGNhbGxlZCIgKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIHJldHVybiByZXNwb25zZUNvbnRhaW5lclsgMCBdOworICAgICAgICB9OworCisg
ICAgICAgIC8vIEZvcmNlIGpzb24gZGF0YVR5cGUKKyAgICAgICAgcy5kYXRhVHlwZXNbIDAgXSA9
ICJqc29uIjsKKworICAgICAgICAvLyBJbnN0YWxsIGNhbGxiYWNrCisgICAgICAgIG92ZXJ3cml0
dGVuID0gd2luZG93WyBjYWxsYmFja05hbWUgXTsKKyAgICAgICAgd2luZG93WyBjYWxsYmFja05h
bWUgXSA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcmVzcG9uc2VDb250YWluZXIgPSBhcmd1
bWVudHM7CisgICAgICAgIH07CisKKyAgICAgICAgLy8gQ2xlYW4tdXAgZnVuY3Rpb24gKGZpcmVz
IGFmdGVyIGNvbnZlcnRlcnMpCisgICAgICAgIGpxWEhSLmFsd2F5cyggZnVuY3Rpb24oKSB7CisK
KyAgICAgICAgICAgIC8vIElmIHByZXZpb3VzIHZhbHVlIGRpZG4ndCBleGlzdCAtIHJlbW92ZSBp
dAorICAgICAgICAgICAgaWYgKCBvdmVyd3JpdHRlbiA9PT0gdW5kZWZpbmVkICkgeworICAgICAg
ICAgICAgICAgIGpRdWVyeSggd2luZG93ICkucmVtb3ZlUHJvcCggY2FsbGJhY2tOYW1lICk7CisK
KyAgICAgICAgICAgIC8vIE90aGVyd2lzZSByZXN0b3JlIHByZWV4aXN0aW5nIHZhbHVlCisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHdpbmRvd1sgY2FsbGJhY2tOYW1lIF0g
PSBvdmVyd3JpdHRlbjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gU2F2ZSBiYWNr
IGFzIGZyZWUKKyAgICAgICAgICAgIGlmICggc1sgY2FsbGJhY2tOYW1lIF0gKSB7CisKKyAgICAg
ICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCByZS11c2luZyB0aGUgb3B0aW9ucyBkb2Vzbid0
IHNjcmV3IHRoaW5ncyBhcm91bmQKKyAgICAgICAgICAgICAgICBzLmpzb25wQ2FsbGJhY2sgPSBv
cmlnaW5hbFNldHRpbmdzLmpzb25wQ2FsbGJhY2s7CisKKyAgICAgICAgICAgICAgICAvLyBTYXZl
IHRoZSBjYWxsYmFjayBuYW1lIGZvciBmdXR1cmUgdXNlCisgICAgICAgICAgICAgICAgb2xkQ2Fs
bGJhY2tzLnB1c2goIGNhbGxiYWNrTmFtZSApOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAvLyBDYWxsIGlmIGl0IHdhcyBhIGZ1bmN0aW9uIGFuZCB3ZSBoYXZlIGEgcmVzcG9uc2UKKyAg
ICAgICAgICAgIGlmICggcmVzcG9uc2VDb250YWluZXIgJiYgalF1ZXJ5LmlzRnVuY3Rpb24oIG92
ZXJ3cml0dGVuICkgKSB7CisgICAgICAgICAgICAgICAgb3ZlcndyaXR0ZW4oIHJlc3BvbnNlQ29u
dGFpbmVyWyAwIF0gKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmVzcG9uc2VDb250
YWluZXIgPSBvdmVyd3JpdHRlbiA9IHVuZGVmaW5lZDsKKyAgICAgICAgfSApOworCisgICAgICAg
IC8vIERlbGVnYXRlIHRvIHNjcmlwdAorICAgICAgICByZXR1cm4gInNjcmlwdCI7CisgICAgfQor
fSApOworCisKKworCisvLyBTdXBwb3J0OiBTYWZhcmkgOCBvbmx5CisvLyBJbiBTYWZhcmkgOCBk
b2N1bWVudHMgY3JlYXRlZCB2aWEgZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERv
Y3VtZW50CisvLyBjb2xsYXBzZSBzaWJsaW5nIGZvcm1zOiB0aGUgc2Vjb25kIG9uZSBiZWNvbWVz
IGEgY2hpbGQgb2YgdGhlIGZpcnN0IG9uZS4KKy8vIEJlY2F1c2Ugb2YgdGhhdCwgdGhpcyBzZWN1
cml0eSBtZWFzdXJlIGhhcyB0byBiZSBkaXNhYmxlZCBpbiBTYWZhcmkgOC4KKy8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzczMzcKK3N1cHBvcnQuY3JlYXRlSFRN
TERvY3VtZW50ID0gKCBmdW5jdGlvbigpIHsKKyAgICB2YXIgYm9keSA9IGRvY3VtZW50LmltcGxl
bWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCggIiIgKS5ib2R5OworICAgIGJvZHkuaW5uZXJI
VE1MID0gIjxmb3JtPjwvZm9ybT48Zm9ybT48L2Zvcm0+IjsKKyAgICByZXR1cm4gYm9keS5jaGls
ZE5vZGVzLmxlbmd0aCA9PT0gMjsKK30gKSgpOworCisKKy8vIEFyZ3VtZW50ICJkYXRhIiBzaG91
bGQgYmUgc3RyaW5nIG9mIGh0bWwKKy8vIGNvbnRleHQgKG9wdGlvbmFsKTogSWYgc3BlY2lmaWVk
LCB0aGUgZnJhZ21lbnQgd2lsbCBiZSBjcmVhdGVkIGluIHRoaXMgY29udGV4dCwKKy8vIGRlZmF1
bHRzIHRvIGRvY3VtZW50CisvLyBrZWVwU2NyaXB0cyAob3B0aW9uYWwpOiBJZiB0cnVlLCB3aWxs
IGluY2x1ZGUgc2NyaXB0cyBwYXNzZWQgaW4gdGhlIGh0bWwgc3RyaW5nCitqUXVlcnkucGFyc2VI
VE1MID0gZnVuY3Rpb24oIGRhdGEsIGNvbnRleHQsIGtlZXBTY3JpcHRzICkgeworICAgIGlmICgg
dHlwZW9mIGRhdGEgIT09ICJzdHJpbmciICkgeworICAgICAgICByZXR1cm4gW107CisgICAgfQor
ICAgIGlmICggdHlwZW9mIGNvbnRleHQgPT09ICJib29sZWFuIiApIHsKKyAgICAgICAga2VlcFNj
cmlwdHMgPSBjb250ZXh0OworICAgICAgICBjb250ZXh0ID0gZmFsc2U7CisgICAgfQorCisgICAg
dmFyIGJhc2UsIHBhcnNlZCwgc2NyaXB0czsKKworICAgIGlmICggIWNvbnRleHQgKSB7CisKKyAg
ICAgICAgLy8gU3RvcCBzY3JpcHRzIG9yIGlubGluZSBldmVudCBoYW5kbGVycyBmcm9tIGJlaW5n
IGV4ZWN1dGVkIGltbWVkaWF0ZWx5CisgICAgICAgIC8vIGJ5IHVzaW5nIGRvY3VtZW50LmltcGxl
bWVudGF0aW9uCisgICAgICAgIGlmICggc3VwcG9ydC5jcmVhdGVIVE1MRG9jdW1lbnQgKSB7Cisg
ICAgICAgICAgICBjb250ZXh0ID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERv
Y3VtZW50KCAiIiApOworCisgICAgICAgICAgICAvLyBTZXQgdGhlIGJhc2UgaHJlZiBmb3IgdGhl
IGNyZWF0ZWQgZG9jdW1lbnQKKyAgICAgICAgICAgIC8vIHNvIGFueSBwYXJzZWQgZWxlbWVudHMg
d2l0aCBVUkxzCisgICAgICAgICAgICAvLyBhcmUgYmFzZWQgb24gdGhlIGRvY3VtZW50J3MgVVJM
IChnaC0yOTY1KQorICAgICAgICAgICAgYmFzZSA9IGNvbnRleHQuY3JlYXRlRWxlbWVudCggImJh
c2UiICk7CisgICAgICAgICAgICBiYXNlLmhyZWYgPSBkb2N1bWVudC5sb2NhdGlvbi5ocmVmOwor
ICAgICAgICAgICAgY29udGV4dC5oZWFkLmFwcGVuZENoaWxkKCBiYXNlICk7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBjb250ZXh0ID0gZG9jdW1lbnQ7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBwYXJzZWQgPSByc2luZ2xlVGFnLmV4ZWMoIGRhdGEgKTsKKyAgICBzY3JpcHRzID0g
IWtlZXBTY3JpcHRzICYmIFtdOworCisgICAgLy8gU2luZ2xlIHRhZworICAgIGlmICggcGFyc2Vk
ICkgeworICAgICAgICByZXR1cm4gWyBjb250ZXh0LmNyZWF0ZUVsZW1lbnQoIHBhcnNlZFsgMSBd
ICkgXTsKKyAgICB9CisKKyAgICBwYXJzZWQgPSBidWlsZEZyYWdtZW50KCBbIGRhdGEgXSwgY29u
dGV4dCwgc2NyaXB0cyApOworCisgICAgaWYgKCBzY3JpcHRzICYmIHNjcmlwdHMubGVuZ3RoICkg
eworICAgICAgICBqUXVlcnkoIHNjcmlwdHMgKS5yZW1vdmUoKTsKKyAgICB9CisKKyAgICByZXR1
cm4galF1ZXJ5Lm1lcmdlKCBbXSwgcGFyc2VkLmNoaWxkTm9kZXMgKTsKK307CisKKworLyoqCisg
KiBMb2FkIGEgdXJsIGludG8gYSBwYWdlCisgKi8KK2pRdWVyeS5mbi5sb2FkID0gZnVuY3Rpb24o
IHVybCwgcGFyYW1zLCBjYWxsYmFjayApIHsKKyAgICB2YXIgc2VsZWN0b3IsIHR5cGUsIHJlc3Bv
bnNlLAorICAgICAgICBzZWxmID0gdGhpcywKKyAgICAgICAgb2ZmID0gdXJsLmluZGV4T2YoICIg
IiApOworCisgICAgaWYgKCBvZmYgPiAtMSApIHsKKyAgICAgICAgc2VsZWN0b3IgPSBzdHJpcEFu
ZENvbGxhcHNlKCB1cmwuc2xpY2UoIG9mZiApICk7CisgICAgICAgIHVybCA9IHVybC5zbGljZSgg
MCwgb2ZmICk7CisgICAgfQorCisgICAgLy8gSWYgaXQncyBhIGZ1bmN0aW9uCisgICAgaWYgKCBq
UXVlcnkuaXNGdW5jdGlvbiggcGFyYW1zICkgKSB7CisKKyAgICAgICAgLy8gV2UgYXNzdW1lIHRo
YXQgaXQncyB0aGUgY2FsbGJhY2sKKyAgICAgICAgY2FsbGJhY2sgPSBwYXJhbXM7CisgICAgICAg
IHBhcmFtcyA9IHVuZGVmaW5lZDsKKworICAgIC8vIE90aGVyd2lzZSwgYnVpbGQgYSBwYXJhbSBz
dHJpbmcKKyAgICB9IGVsc2UgaWYgKCBwYXJhbXMgJiYgdHlwZW9mIHBhcmFtcyA9PT0gIm9iamVj
dCIgKSB7CisgICAgICAgIHR5cGUgPSAiUE9TVCI7CisgICAgfQorCisgICAgLy8gSWYgd2UgaGF2
ZSBlbGVtZW50cyB0byBtb2RpZnksIG1ha2UgdGhlIHJlcXVlc3QKKyAgICBpZiAoIHNlbGYubGVu
Z3RoID4gMCApIHsKKyAgICAgICAgalF1ZXJ5LmFqYXgoIHsKKyAgICAgICAgICAgIHVybDogdXJs
LAorCisgICAgICAgICAgICAvLyBJZiAidHlwZSIgdmFyaWFibGUgaXMgdW5kZWZpbmVkLCB0aGVu
ICJHRVQiIG1ldGhvZCB3aWxsIGJlIHVzZWQuCisgICAgICAgICAgICAvLyBNYWtlIHZhbHVlIG9m
IHRoaXMgZmllbGQgZXhwbGljaXQgc2luY2UKKyAgICAgICAgICAgIC8vIHVzZXIgY2FuIG92ZXJy
aWRlIGl0IHRocm91Z2ggYWpheFNldHVwIG1ldGhvZAorICAgICAgICAgICAgdHlwZTogdHlwZSB8
fCAiR0VUIiwKKyAgICAgICAgICAgIGRhdGFUeXBlOiAiaHRtbCIsCisgICAgICAgICAgICBkYXRh
OiBwYXJhbXMKKyAgICAgICAgfSApLmRvbmUoIGZ1bmN0aW9uKCByZXNwb25zZVRleHQgKSB7CisK
KyAgICAgICAgICAgIC8vIFNhdmUgcmVzcG9uc2UgZm9yIHVzZSBpbiBjb21wbGV0ZSBjYWxsYmFj
aworICAgICAgICAgICAgcmVzcG9uc2UgPSBhcmd1bWVudHM7CisKKyAgICAgICAgICAgIHNlbGYu
aHRtbCggc2VsZWN0b3IgPworCisgICAgICAgICAgICAgICAgLy8gSWYgYSBzZWxlY3RvciB3YXMg
c3BlY2lmaWVkLCBsb2NhdGUgdGhlIHJpZ2h0IGVsZW1lbnRzIGluIGEgZHVtbXkgZGl2CisgICAg
ICAgICAgICAgICAgLy8gRXhjbHVkZSBzY3JpcHRzIHRvIGF2b2lkIElFICdQZXJtaXNzaW9uIERl
bmllZCcgZXJyb3JzCisgICAgICAgICAgICAgICAgalF1ZXJ5KCAiPGRpdj4iICkuYXBwZW5kKCBq
UXVlcnkucGFyc2VIVE1MKCByZXNwb25zZVRleHQgKSApLmZpbmQoIHNlbGVjdG9yICkgOgorCisg
ICAgICAgICAgICAgICAgLy8gT3RoZXJ3aXNlIHVzZSB0aGUgZnVsbCByZXN1bHQKKyAgICAgICAg
ICAgICAgICByZXNwb25zZVRleHQgKTsKKworICAgICAgICAvLyBJZiB0aGUgcmVxdWVzdCBzdWNj
ZWVkcywgdGhpcyBmdW5jdGlvbiBnZXRzICJkYXRhIiwgInN0YXR1cyIsICJqcVhIUiIKKyAgICAg
ICAgLy8gYnV0IHRoZXkgYXJlIGlnbm9yZWQgYmVjYXVzZSByZXNwb25zZSB3YXMgc2V0IGFib3Zl
LgorICAgICAgICAvLyBJZiBpdCBmYWlscywgdGhpcyBmdW5jdGlvbiBnZXRzICJqcVhIUiIsICJz
dGF0dXMiLCAiZXJyb3IiCisgICAgICAgIH0gKS5hbHdheXMoIGNhbGxiYWNrICYmIGZ1bmN0aW9u
KCBqcVhIUiwgc3RhdHVzICkgeworICAgICAgICAgICAgc2VsZi5lYWNoKCBmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgICAgICBjYWxsYmFjay5hcHBseSggdGhpcywgcmVzcG9uc2UgfHwgWyBqcVhI
Ui5yZXNwb25zZVRleHQsIHN0YXR1cywganFYSFIgXSApOworICAgICAgICAgICAgfSApOworICAg
ICAgICB9ICk7CisgICAgfQorCisgICAgcmV0dXJuIHRoaXM7Cit9OworCisKKworCisvLyBBdHRh
Y2ggYSBidW5jaCBvZiBmdW5jdGlvbnMgZm9yIGhhbmRsaW5nIGNvbW1vbiBBSkFYIGV2ZW50cwor
alF1ZXJ5LmVhY2goIFsKKyAgICAiYWpheFN0YXJ0IiwKKyAgICAiYWpheFN0b3AiLAorICAgICJh
amF4Q29tcGxldGUiLAorICAgICJhamF4RXJyb3IiLAorICAgICJhamF4U3VjY2VzcyIsCisgICAg
ImFqYXhTZW5kIgorXSwgZnVuY3Rpb24oIGksIHR5cGUgKSB7CisgICAgalF1ZXJ5LmZuWyB0eXBl
IF0gPSBmdW5jdGlvbiggZm4gKSB7CisgICAgICAgIHJldHVybiB0aGlzLm9uKCB0eXBlLCBmbiAp
OworICAgIH07Cit9ICk7CisKKworCisKK2pRdWVyeS5leHByLnBzZXVkb3MuYW5pbWF0ZWQgPSBm
dW5jdGlvbiggZWxlbSApIHsKKyAgICByZXR1cm4galF1ZXJ5LmdyZXAoIGpRdWVyeS50aW1lcnMs
IGZ1bmN0aW9uKCBmbiApIHsKKyAgICAgICAgcmV0dXJuIGVsZW0gPT09IGZuLmVsZW07CisgICAg
fSApLmxlbmd0aDsKK307CisKKworCisKKy8qKgorICogR2V0cyBhIHdpbmRvdyBmcm9tIGFuIGVs
ZW1lbnQKKyAqLworZnVuY3Rpb24gZ2V0V2luZG93KCBlbGVtICkgeworICAgIHJldHVybiBqUXVl
cnkuaXNXaW5kb3coIGVsZW0gKSA/IGVsZW0gOiBlbGVtLm5vZGVUeXBlID09PSA5ICYmIGVsZW0u
ZGVmYXVsdFZpZXc7Cit9CisKK2pRdWVyeS5vZmZzZXQgPSB7CisgICAgc2V0T2Zmc2V0OiBmdW5j
dGlvbiggZWxlbSwgb3B0aW9ucywgaSApIHsKKyAgICAgICAgdmFyIGN1clBvc2l0aW9uLCBjdXJM
ZWZ0LCBjdXJDU1NUb3AsIGN1clRvcCwgY3VyT2Zmc2V0LCBjdXJDU1NMZWZ0LCBjYWxjdWxhdGVQ
b3NpdGlvbiwKKyAgICAgICAgICAgIHBvc2l0aW9uID0galF1ZXJ5LmNzcyggZWxlbSwgInBvc2l0
aW9uIiApLAorICAgICAgICAgICAgY3VyRWxlbSA9IGpRdWVyeSggZWxlbSApLAorICAgICAgICAg
ICAgcHJvcHMgPSB7fTsKKworICAgICAgICAvLyBTZXQgcG9zaXRpb24gZmlyc3QsIGluLWNhc2Ug
dG9wL2xlZnQgYXJlIHNldCBldmVuIG9uIHN0YXRpYyBlbGVtCisgICAgICAgIGlmICggcG9zaXRp
b24gPT09ICJzdGF0aWMiICkgeworICAgICAgICAgICAgZWxlbS5zdHlsZS5wb3NpdGlvbiA9ICJy
ZWxhdGl2ZSI7CisgICAgICAgIH0KKworICAgICAgICBjdXJPZmZzZXQgPSBjdXJFbGVtLm9mZnNl
dCgpOworICAgICAgICBjdXJDU1NUb3AgPSBqUXVlcnkuY3NzKCBlbGVtLCAidG9wIiApOworICAg
ICAgICBjdXJDU1NMZWZ0ID0galF1ZXJ5LmNzcyggZWxlbSwgImxlZnQiICk7CisgICAgICAgIGNh
bGN1bGF0ZVBvc2l0aW9uID0gKCBwb3NpdGlvbiA9PT0gImFic29sdXRlIiB8fCBwb3NpdGlvbiA9
PT0gImZpeGVkIiApICYmCisgICAgICAgICAgICAoIGN1ckNTU1RvcCArIGN1ckNTU0xlZnQgKS5p
bmRleE9mKCAiYXV0byIgKSA+IC0xOworCisgICAgICAgIC8vIE5lZWQgdG8gYmUgYWJsZSB0byBj
YWxjdWxhdGUgcG9zaXRpb24gaWYgZWl0aGVyCisgICAgICAgIC8vIHRvcCBvciBsZWZ0IGlzIGF1
dG8gYW5kIHBvc2l0aW9uIGlzIGVpdGhlciBhYnNvbHV0ZSBvciBmaXhlZAorICAgICAgICBpZiAo
IGNhbGN1bGF0ZVBvc2l0aW9uICkgeworICAgICAgICAgICAgY3VyUG9zaXRpb24gPSBjdXJFbGVt
LnBvc2l0aW9uKCk7CisgICAgICAgICAgICBjdXJUb3AgPSBjdXJQb3NpdGlvbi50b3A7CisgICAg
ICAgICAgICBjdXJMZWZ0ID0gY3VyUG9zaXRpb24ubGVmdDsKKworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgY3VyVG9wID0gcGFyc2VGbG9hdCggY3VyQ1NTVG9wICkgfHwgMDsKKyAgICAg
ICAgICAgIGN1ckxlZnQgPSBwYXJzZUZsb2F0KCBjdXJDU1NMZWZ0ICkgfHwgMDsKKyAgICAgICAg
fQorCisgICAgICAgIGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIG9wdGlvbnMgKSApIHsKKworICAg
ICAgICAgICAgLy8gVXNlIGpRdWVyeS5leHRlbmQgaGVyZSB0byBhbGxvdyBtb2RpZmljYXRpb24g
b2YgY29vcmRpbmF0ZXMgYXJndW1lbnQgKGdoLTE4NDgpCisgICAgICAgICAgICBvcHRpb25zID0g
b3B0aW9ucy5jYWxsKCBlbGVtLCBpLCBqUXVlcnkuZXh0ZW5kKCB7fSwgY3VyT2Zmc2V0ICkgKTsK
KyAgICAgICAgfQorCisgICAgICAgIGlmICggb3B0aW9ucy50b3AgIT0gbnVsbCApIHsKKyAgICAg
ICAgICAgIHByb3BzLnRvcCA9ICggb3B0aW9ucy50b3AgLSBjdXJPZmZzZXQudG9wICkgKyBjdXJU
b3A7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCBvcHRpb25zLmxlZnQgIT0gbnVsbCApIHsKKyAg
ICAgICAgICAgIHByb3BzLmxlZnQgPSAoIG9wdGlvbnMubGVmdCAtIGN1ck9mZnNldC5sZWZ0ICkg
KyBjdXJMZWZ0OworICAgICAgICB9CisKKyAgICAgICAgaWYgKCAidXNpbmciIGluIG9wdGlvbnMg
KSB7CisgICAgICAgICAgICBvcHRpb25zLnVzaW5nLmNhbGwoIGVsZW0sIHByb3BzICk7CisKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGN1ckVsZW0uY3NzKCBwcm9wcyApOworICAgICAg
ICB9CisgICAgfQorfTsKKworalF1ZXJ5LmZuLmV4dGVuZCggeworICAgIG9mZnNldDogZnVuY3Rp
b24oIG9wdGlvbnMgKSB7CisKKyAgICAgICAgLy8gUHJlc2VydmUgY2hhaW5pbmcgZm9yIHNldHRl
cgorICAgICAgICBpZiAoIGFyZ3VtZW50cy5sZW5ndGggKSB7CisgICAgICAgICAgICByZXR1cm4g
b3B0aW9ucyA9PT0gdW5kZWZpbmVkID8KKyAgICAgICAgICAgICAgICB0aGlzIDoKKyAgICAgICAg
ICAgICAgICB0aGlzLmVhY2goIGZ1bmN0aW9uKCBpICkgeworICAgICAgICAgICAgICAgICAgICBq
UXVlcnkub2Zmc2V0LnNldE9mZnNldCggdGhpcywgb3B0aW9ucywgaSApOworICAgICAgICAgICAg
ICAgIH0gKTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBkb2NFbGVtLCB3aW4sIHJlY3QsIGRv
YywKKyAgICAgICAgICAgIGVsZW0gPSB0aGlzWyAwIF07CisKKyAgICAgICAgaWYgKCAhZWxlbSAp
IHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFN1cHBvcnQ6
IElFIDw9MTEgb25seQorICAgICAgICAvLyBSdW5uaW5nIGdldEJvdW5kaW5nQ2xpZW50UmVjdCBv
biBhCisgICAgICAgIC8vIGRpc2Nvbm5lY3RlZCBub2RlIGluIElFIHRocm93cyBhbiBlcnJvcgor
ICAgICAgICBpZiAoICFlbGVtLmdldENsaWVudFJlY3RzKCkubGVuZ3RoICkgeworICAgICAgICAg
ICAgcmV0dXJuIHsgdG9wOiAwLCBsZWZ0OiAwIH07CisgICAgICAgIH0KKworICAgICAgICByZWN0
ID0gZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKKworICAgICAgICAvLyBNYWtlIHN1cmUg
ZWxlbWVudCBpcyBub3QgaGlkZGVuIChkaXNwbGF5OiBub25lKQorICAgICAgICBpZiAoIHJlY3Qu
d2lkdGggfHwgcmVjdC5oZWlnaHQgKSB7CisgICAgICAgICAgICBkb2MgPSBlbGVtLm93bmVyRG9j
dW1lbnQ7CisgICAgICAgICAgICB3aW4gPSBnZXRXaW5kb3coIGRvYyApOworICAgICAgICAgICAg
ZG9jRWxlbSA9IGRvYy5kb2N1bWVudEVsZW1lbnQ7CisKKyAgICAgICAgICAgIHJldHVybiB7Cisg
ICAgICAgICAgICAgICAgdG9wOiByZWN0LnRvcCArIHdpbi5wYWdlWU9mZnNldCAtIGRvY0VsZW0u
Y2xpZW50VG9wLAorICAgICAgICAgICAgICAgIGxlZnQ6IHJlY3QubGVmdCArIHdpbi5wYWdlWE9m
ZnNldCAtIGRvY0VsZW0uY2xpZW50TGVmdAorICAgICAgICAgICAgfTsKKyAgICAgICAgfQorCisg
ICAgICAgIC8vIFJldHVybiB6ZXJvcyBmb3IgZGlzY29ubmVjdGVkIGFuZCBoaWRkZW4gZWxlbWVu
dHMgKGdoLTIzMTApCisgICAgICAgIHJldHVybiByZWN0OworICAgIH0sCisKKyAgICBwb3NpdGlv
bjogZnVuY3Rpb24oKSB7CisgICAgICAgIGlmICggIXRoaXNbIDAgXSApIHsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBvZmZzZXRQYXJlbnQsIG9mZnNldCwK
KyAgICAgICAgICAgIGVsZW0gPSB0aGlzWyAwIF0sCisgICAgICAgICAgICBwYXJlbnRPZmZzZXQg
PSB7IHRvcDogMCwgbGVmdDogMCB9OworCisgICAgICAgIC8vIEZpeGVkIGVsZW1lbnRzIGFyZSBv
ZmZzZXQgZnJvbSB3aW5kb3cgKHBhcmVudE9mZnNldCA9IHt0b3A6MCwgbGVmdDogMH0sCisgICAg
ICAgIC8vIGJlY2F1c2UgaXQgaXMgaXRzIG9ubHkgb2Zmc2V0IHBhcmVudAorICAgICAgICBpZiAo
IGpRdWVyeS5jc3MoIGVsZW0sICJwb3NpdGlvbiIgKSA9PT0gImZpeGVkIiApIHsKKworICAgICAg
ICAgICAgLy8gQXNzdW1lIGdldEJvdW5kaW5nQ2xpZW50UmVjdCBpcyB0aGVyZSB3aGVuIGNvbXB1
dGVkIHBvc2l0aW9uIGlzIGZpeGVkCisgICAgICAgICAgICBvZmZzZXQgPSBlbGVtLmdldEJvdW5k
aW5nQ2xpZW50UmVjdCgpOworCisgICAgICAgIH0gZWxzZSB7CisKKyAgICAgICAgICAgIC8vIEdl
dCAqcmVhbCogb2Zmc2V0UGFyZW50CisgICAgICAgICAgICBvZmZzZXRQYXJlbnQgPSB0aGlzLm9m
ZnNldFBhcmVudCgpOworCisgICAgICAgICAgICAvLyBHZXQgY29ycmVjdCBvZmZzZXRzCisgICAg
ICAgICAgICBvZmZzZXQgPSB0aGlzLm9mZnNldCgpOworICAgICAgICAgICAgaWYgKCAhalF1ZXJ5
Lm5vZGVOYW1lKCBvZmZzZXRQYXJlbnRbIDAgXSwgImh0bWwiICkgKSB7CisgICAgICAgICAgICAg
ICAgcGFyZW50T2Zmc2V0ID0gb2Zmc2V0UGFyZW50Lm9mZnNldCgpOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAvLyBBZGQgb2Zmc2V0UGFyZW50IGJvcmRlcnMKKyAgICAgICAgICAgIHBh
cmVudE9mZnNldCA9IHsKKyAgICAgICAgICAgICAgICB0b3A6IHBhcmVudE9mZnNldC50b3AgKyBq
UXVlcnkuY3NzKCBvZmZzZXRQYXJlbnRbIDAgXSwgImJvcmRlclRvcFdpZHRoIiwgdHJ1ZSApLAor
ICAgICAgICAgICAgICAgIGxlZnQ6IHBhcmVudE9mZnNldC5sZWZ0ICsgalF1ZXJ5LmNzcyggb2Zm
c2V0UGFyZW50WyAwIF0sICJib3JkZXJMZWZ0V2lkdGgiLCB0cnVlICkKKyAgICAgICAgICAgIH07
CisgICAgICAgIH0KKworICAgICAgICAvLyBTdWJ0cmFjdCBwYXJlbnQgb2Zmc2V0cyBhbmQgZWxl
bWVudCBtYXJnaW5zCisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICB0b3A6IG9mZnNldC50
b3AgLSBwYXJlbnRPZmZzZXQudG9wIC0galF1ZXJ5LmNzcyggZWxlbSwgIm1hcmdpblRvcCIsIHRy
dWUgKSwKKyAgICAgICAgICAgIGxlZnQ6IG9mZnNldC5sZWZ0IC0gcGFyZW50T2Zmc2V0LmxlZnQg
LSBqUXVlcnkuY3NzKCBlbGVtLCAibWFyZ2luTGVmdCIsIHRydWUgKQorICAgICAgICB9OworICAg
IH0sCisKKyAgICAvLyBUaGlzIG1ldGhvZCB3aWxsIHJldHVybiBkb2N1bWVudEVsZW1lbnQgaW4g
dGhlIGZvbGxvd2luZyBjYXNlczoKKyAgICAvLyAxKSBGb3IgdGhlIGVsZW1lbnQgaW5zaWRlIHRo
ZSBpZnJhbWUgd2l0aG91dCBvZmZzZXRQYXJlbnQsIHRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuCisg
ICAgLy8gICAgZG9jdW1lbnRFbGVtZW50IG9mIHRoZSBwYXJlbnQgd2luZG93CisgICAgLy8gMikg
Rm9yIHRoZSBoaWRkZW4gb3IgZGV0YWNoZWQgZWxlbWVudAorICAgIC8vIDMpIEZvciBib2R5IG9y
IGh0bWwgZWxlbWVudCwgaS5lLiBpbiBjYXNlIG9mIHRoZSBodG1sIG5vZGUgLSBpdCB3aWxsIHJl
dHVybiBpdHNlbGYKKyAgICAvLworICAgIC8vIGJ1dCB0aG9zZSBleGNlcHRpb25zIHdlcmUgbmV2
ZXIgcHJlc2VudGVkIGFzIGEgcmVhbCBsaWZlIHVzZS1jYXNlcworICAgIC8vIGFuZCBtaWdodCBi
ZSBjb25zaWRlcmVkIGFzIG1vcmUgcHJlZmVyYWJsZSByZXN1bHRzLgorICAgIC8vCisgICAgLy8g
VGhpcyBsb2dpYywgaG93ZXZlciwgaXMgbm90IGd1YXJhbnRlZWQgYW5kIGNhbiBjaGFuZ2UgYXQg
YW55IHBvaW50IGluIHRoZSBmdXR1cmUKKyAgICBvZmZzZXRQYXJlbnQ6IGZ1bmN0aW9uKCkgewor
ICAgICAgICByZXR1cm4gdGhpcy5tYXAoIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdmFyIG9m
ZnNldFBhcmVudCA9IHRoaXMub2Zmc2V0UGFyZW50OworCisgICAgICAgICAgICB3aGlsZSAoIG9m
ZnNldFBhcmVudCAmJiBqUXVlcnkuY3NzKCBvZmZzZXRQYXJlbnQsICJwb3NpdGlvbiIgKSA9PT0g
InN0YXRpYyIgKSB7CisgICAgICAgICAgICAgICAgb2Zmc2V0UGFyZW50ID0gb2Zmc2V0UGFyZW50
Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIG9mZnNl
dFBhcmVudCB8fCBkb2N1bWVudEVsZW1lbnQ7CisgICAgICAgIH0gKTsKKyAgICB9Cit9ICk7CisK
Ky8vIENyZWF0ZSBzY3JvbGxMZWZ0IGFuZCBzY3JvbGxUb3AgbWV0aG9kcworalF1ZXJ5LmVhY2go
IHsgc2Nyb2xsTGVmdDogInBhZ2VYT2Zmc2V0Iiwgc2Nyb2xsVG9wOiAicGFnZVlPZmZzZXQiIH0s
IGZ1bmN0aW9uKCBtZXRob2QsIHByb3AgKSB7CisgICAgdmFyIHRvcCA9ICJwYWdlWU9mZnNldCIg
PT09IHByb3A7CisKKyAgICBqUXVlcnkuZm5bIG1ldGhvZCBdID0gZnVuY3Rpb24oIHZhbCApIHsK
KyAgICAgICAgcmV0dXJuIGFjY2VzcyggdGhpcywgZnVuY3Rpb24oIGVsZW0sIG1ldGhvZCwgdmFs
ICkgeworICAgICAgICAgICAgdmFyIHdpbiA9IGdldFdpbmRvdyggZWxlbSApOworCisgICAgICAg
ICAgICBpZiAoIHZhbCA9PT0gdW5kZWZpbmVkICkgeworICAgICAgICAgICAgICAgIHJldHVybiB3
aW4gPyB3aW5bIHByb3AgXSA6IGVsZW1bIG1ldGhvZCBdOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBpZiAoIHdpbiApIHsKKyAgICAgICAgICAgICAgICB3aW4uc2Nyb2xsVG8oCisgICAg
ICAgICAgICAgICAgICAgICF0b3AgPyB2YWwgOiB3aW4ucGFnZVhPZmZzZXQsCisgICAgICAgICAg
ICAgICAgICAgIHRvcCA/IHZhbCA6IHdpbi5wYWdlWU9mZnNldAorICAgICAgICAgICAgICAgICk7
CisKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZWxlbVsgbWV0aG9kIF0g
PSB2YWw7CisgICAgICAgICAgICB9CisgICAgICAgIH0sIG1ldGhvZCwgdmFsLCBhcmd1bWVudHMu
bGVuZ3RoICk7CisgICAgfTsKK30gKTsKKworLy8gU3VwcG9ydDogU2FmYXJpIDw9NyAtIDkuMSwg
Q2hyb21lIDw9MzcgLSA0OQorLy8gQWRkIHRoZSB0b3AvbGVmdCBjc3NIb29rcyB1c2luZyBqUXVl
cnkuZm4ucG9zaXRpb24KKy8vIFdlYmtpdCBidWc6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yOTA4NAorLy8gQmxpbmsgYnVnOiBodHRwczovL2J1Z3MuY2hyb21pdW0u
b3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD01ODkzNDcKKy8vIGdldENvbXB1dGVkU3R5
bGUgcmV0dXJucyBwZXJjZW50IHdoZW4gc3BlY2lmaWVkIGZvciB0b3AvbGVmdC9ib3R0b20vcmln
aHQ7CisvLyByYXRoZXIgdGhhbiBtYWtlIHRoZSBjc3MgbW9kdWxlIGRlcGVuZCBvbiB0aGUgb2Zm
c2V0IG1vZHVsZSwganVzdCBjaGVjayBmb3IgaXQgaGVyZQoralF1ZXJ5LmVhY2goIFsgInRvcCIs
ICJsZWZ0IiBdLCBmdW5jdGlvbiggaSwgcHJvcCApIHsKKyAgICBqUXVlcnkuY3NzSG9va3NbIHBy
b3AgXSA9IGFkZEdldEhvb2tJZiggc3VwcG9ydC5waXhlbFBvc2l0aW9uLAorICAgICAgICBmdW5j
dGlvbiggZWxlbSwgY29tcHV0ZWQgKSB7CisgICAgICAgICAgICBpZiAoIGNvbXB1dGVkICkgewor
ICAgICAgICAgICAgICAgIGNvbXB1dGVkID0gY3VyQ1NTKCBlbGVtLCBwcm9wICk7CisKKyAgICAg
ICAgICAgICAgICAvLyBJZiBjdXJDU1MgcmV0dXJucyBwZXJjZW50YWdlLCBmYWxsYmFjayB0byBv
ZmZzZXQKKyAgICAgICAgICAgICAgICByZXR1cm4gcm51bW5vbnB4LnRlc3QoIGNvbXB1dGVkICkg
PworICAgICAgICAgICAgICAgICAgICBqUXVlcnkoIGVsZW0gKS5wb3NpdGlvbigpWyBwcm9wIF0g
KyAicHgiIDoKKyAgICAgICAgICAgICAgICAgICAgY29tcHV0ZWQ7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICApOworfSApOworCisKKy8vIENyZWF0ZSBpbm5lckhlaWdodCwgaW5uZXJX
aWR0aCwgaGVpZ2h0LCB3aWR0aCwgb3V0ZXJIZWlnaHQgYW5kIG91dGVyV2lkdGggbWV0aG9kcwor
alF1ZXJ5LmVhY2goIHsgSGVpZ2h0OiAiaGVpZ2h0IiwgV2lkdGg6ICJ3aWR0aCIgfSwgZnVuY3Rp
b24oIG5hbWUsIHR5cGUgKSB7CisgICAgalF1ZXJ5LmVhY2goIHsgcGFkZGluZzogImlubmVyIiAr
IG5hbWUsIGNvbnRlbnQ6IHR5cGUsICIiOiAib3V0ZXIiICsgbmFtZSB9LAorICAgICAgICBmdW5j
dGlvbiggZGVmYXVsdEV4dHJhLCBmdW5jTmFtZSApIHsKKworICAgICAgICAvLyBNYXJnaW4gaXMg
b25seSBmb3Igb3V0ZXJIZWlnaHQsIG91dGVyV2lkdGgKKyAgICAgICAgalF1ZXJ5LmZuWyBmdW5j
TmFtZSBdID0gZnVuY3Rpb24oIG1hcmdpbiwgdmFsdWUgKSB7CisgICAgICAgICAgICB2YXIgY2hh
aW5hYmxlID0gYXJndW1lbnRzLmxlbmd0aCAmJiAoIGRlZmF1bHRFeHRyYSB8fCB0eXBlb2YgbWFy
Z2luICE9PSAiYm9vbGVhbiIgKSwKKyAgICAgICAgICAgICAgICBleHRyYSA9IGRlZmF1bHRFeHRy
YSB8fCAoIG1hcmdpbiA9PT0gdHJ1ZSB8fCB2YWx1ZSA9PT0gdHJ1ZSA/ICJtYXJnaW4iIDogImJv
cmRlciIgKTsKKworICAgICAgICAgICAgcmV0dXJuIGFjY2VzcyggdGhpcywgZnVuY3Rpb24oIGVs
ZW0sIHR5cGUsIHZhbHVlICkgeworICAgICAgICAgICAgICAgIHZhciBkb2M7CisKKyAgICAgICAg
ICAgICAgICBpZiAoIGpRdWVyeS5pc1dpbmRvdyggZWxlbSApICkgeworCisgICAgICAgICAgICAg
ICAgICAgIC8vICQoIHdpbmRvdyApLm91dGVyV2lkdGgvSGVpZ2h0IHJldHVybiB3L2ggaW5jbHVk
aW5nIHNjcm9sbGJhcnMgKGdoLTE3MjkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5j
TmFtZS5pbmRleE9mKCAib3V0ZXIiICkgPT09IDAgPworICAgICAgICAgICAgICAgICAgICAgICAg
ZWxlbVsgImlubmVyIiArIG5hbWUgXSA6CisgICAgICAgICAgICAgICAgICAgICAgICBlbGVtLmRv
Y3VtZW50LmRvY3VtZW50RWxlbWVudFsgImNsaWVudCIgKyBuYW1lIF07CisgICAgICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAgICAgLy8gR2V0IGRvY3VtZW50IHdpZHRoIG9yIGhlaWdodAor
ICAgICAgICAgICAgICAgIGlmICggZWxlbS5ub2RlVHlwZSA9PT0gOSApIHsKKyAgICAgICAgICAg
ICAgICAgICAgZG9jID0gZWxlbS5kb2N1bWVudEVsZW1lbnQ7CisKKyAgICAgICAgICAgICAgICAg
ICAgLy8gRWl0aGVyIHNjcm9sbFtXaWR0aC9IZWlnaHRdIG9yIG9mZnNldFtXaWR0aC9IZWlnaHRd
IG9yIGNsaWVudFtXaWR0aC9IZWlnaHRdLAorICAgICAgICAgICAgICAgICAgICAvLyB3aGljaGV2
ZXIgaXMgZ3JlYXRlc3QKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE1hdGgubWF4KAorICAg
ICAgICAgICAgICAgICAgICAgICAgZWxlbS5ib2R5WyAic2Nyb2xsIiArIG5hbWUgXSwgZG9jWyAi
c2Nyb2xsIiArIG5hbWUgXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0uYm9keVsgIm9m
ZnNldCIgKyBuYW1lIF0sIGRvY1sgIm9mZnNldCIgKyBuYW1lIF0sCisgICAgICAgICAgICAgICAg
ICAgICAgICBkb2NbICJjbGllbnQiICsgbmFtZSBdCisgICAgICAgICAgICAgICAgICAgICk7Cisg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRl
ZmluZWQgPworCisgICAgICAgICAgICAgICAgICAgIC8vIEdldCB3aWR0aCBvciBoZWlnaHQgb24g
dGhlIGVsZW1lbnQsIHJlcXVlc3RpbmcgYnV0IG5vdCBmb3JjaW5nIHBhcnNlRmxvYXQKKyAgICAg
ICAgICAgICAgICAgICAgalF1ZXJ5LmNzcyggZWxlbSwgdHlwZSwgZXh0cmEgKSA6CisKKyAgICAg
ICAgICAgICAgICAgICAgLy8gU2V0IHdpZHRoIG9yIGhlaWdodCBvbiB0aGUgZWxlbWVudAorICAg
ICAgICAgICAgICAgICAgICBqUXVlcnkuc3R5bGUoIGVsZW0sIHR5cGUsIHZhbHVlLCBleHRyYSAp
OworICAgICAgICAgICAgfSwgdHlwZSwgY2hhaW5hYmxlID8gbWFyZ2luIDogdW5kZWZpbmVkLCBj
aGFpbmFibGUgKTsKKyAgICAgICAgfTsKKyAgICB9ICk7Cit9ICk7CisKKworalF1ZXJ5LmZuLmV4
dGVuZCggeworCisgICAgYmluZDogZnVuY3Rpb24oIHR5cGVzLCBkYXRhLCBmbiApIHsKKyAgICAg
ICAgcmV0dXJuIHRoaXMub24oIHR5cGVzLCBudWxsLCBkYXRhLCBmbiApOworICAgIH0sCisgICAg
dW5iaW5kOiBmdW5jdGlvbiggdHlwZXMsIGZuICkgeworICAgICAgICByZXR1cm4gdGhpcy5vZmYo
IHR5cGVzLCBudWxsLCBmbiApOworICAgIH0sCisKKyAgICBkZWxlZ2F0ZTogZnVuY3Rpb24oIHNl
bGVjdG9yLCB0eXBlcywgZGF0YSwgZm4gKSB7CisgICAgICAgIHJldHVybiB0aGlzLm9uKCB0eXBl
cywgc2VsZWN0b3IsIGRhdGEsIGZuICk7CisgICAgfSwKKyAgICB1bmRlbGVnYXRlOiBmdW5jdGlv
biggc2VsZWN0b3IsIHR5cGVzLCBmbiApIHsKKworICAgICAgICAvLyAoIG5hbWVzcGFjZSApIG9y
ICggc2VsZWN0b3IsIHR5cGVzIFssIGZuXSApCisgICAgICAgIHJldHVybiBhcmd1bWVudHMubGVu
Z3RoID09PSAxID8KKyAgICAgICAgICAgIHRoaXMub2ZmKCBzZWxlY3RvciwgIioqIiApIDoKKyAg
ICAgICAgICAgIHRoaXMub2ZmKCB0eXBlcywgc2VsZWN0b3IgfHwgIioqIiwgZm4gKTsKKyAgICB9
Cit9ICk7CisKK2pRdWVyeS5wYXJzZUpTT04gPSBKU09OLnBhcnNlOworCisKKworCisvLyBSZWdp
c3RlciBhcyBhIG5hbWVkIEFNRCBtb2R1bGUsIHNpbmNlIGpRdWVyeSBjYW4gYmUgY29uY2F0ZW5h
dGVkIHdpdGggb3RoZXIKKy8vIGZpbGVzIHRoYXQgbWF5IHVzZSBkZWZpbmUsIGJ1dCBub3Qgdmlh
IGEgcHJvcGVyIGNvbmNhdGVuYXRpb24gc2NyaXB0IHRoYXQKKy8vIHVuZGVyc3RhbmRzIGFub255
bW91cyBBTUQgbW9kdWxlcy4gQSBuYW1lZCBBTUQgaXMgc2FmZXN0IGFuZCBtb3N0IHJvYnVzdAor
Ly8gd2F5IHRvIHJlZ2lzdGVyLiBMb3dlcmNhc2UganF1ZXJ5IGlzIHVzZWQgYmVjYXVzZSBBTUQg
bW9kdWxlIG5hbWVzIGFyZQorLy8gZGVyaXZlZCBmcm9tIGZpbGUgbmFtZXMsIGFuZCBqUXVlcnkg
aXMgbm9ybWFsbHkgZGVsaXZlcmVkIGluIGEgbG93ZXJjYXNlCisvLyBmaWxlIG5hbWUuIERvIHRo
aXMgYWZ0ZXIgY3JlYXRpbmcgdGhlIGdsb2JhbCBzbyB0aGF0IGlmIGFuIEFNRCBtb2R1bGUgd2Fu
dHMKKy8vIHRvIGNhbGwgbm9Db25mbGljdCB0byBoaWRlIHRoaXMgdmVyc2lvbiBvZiBqUXVlcnks
IGl0IHdpbGwgd29yay4KKworLy8gTm90ZSB0aGF0IGZvciBtYXhpbXVtIHBvcnRhYmlsaXR5LCBs
aWJyYXJpZXMgdGhhdCBhcmUgbm90IGpRdWVyeSBzaG91bGQKKy8vIGRlY2xhcmUgdGhlbXNlbHZl
cyBhcyBhbm9ueW1vdXMgbW9kdWxlcywgYW5kIGF2b2lkIHNldHRpbmcgYSBnbG9iYWwgaWYgYW4K
Ky8vIEFNRCBsb2FkZXIgaXMgcHJlc2VudC4galF1ZXJ5IGlzIGEgc3BlY2lhbCBjYXNlLiBGb3Ig
bW9yZSBpbmZvcm1hdGlvbiwgc2VlCisvLyBodHRwczovL2dpdGh1Yi5jb20vanJidXJrZS9yZXF1
aXJlanMvd2lraS9VcGRhdGluZy1leGlzdGluZy1saWJyYXJpZXMjd2lraS1hbm9uCisKK2lmICgg
dHlwZW9mIGRlZmluZSA9PT0gImZ1bmN0aW9uIiAmJiBkZWZpbmUuYW1kICkgeworICAgIGRlZmlu
ZSggImpxdWVyeSIsIFtdLCBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIGpRdWVyeTsKKyAg
ICB9ICk7Cit9CisKKworCisKK3ZhcgorCisgICAgLy8gTWFwIG92ZXIgalF1ZXJ5IGluIGNhc2Ug
b2Ygb3ZlcndyaXRlCisgICAgX2pRdWVyeSA9IHdpbmRvdy5qUXVlcnksCisKKyAgICAvLyBNYXAg
b3ZlciB0aGUgJCBpbiBjYXNlIG9mIG92ZXJ3cml0ZQorICAgIF8kID0gd2luZG93LiQ7CisKK2pR
dWVyeS5ub0NvbmZsaWN0ID0gZnVuY3Rpb24oIGRlZXAgKSB7CisgICAgaWYgKCB3aW5kb3cuJCA9
PT0galF1ZXJ5ICkgeworICAgICAgICB3aW5kb3cuJCA9IF8kOworICAgIH0KKworICAgIGlmICgg
ZGVlcCAmJiB3aW5kb3cualF1ZXJ5ID09PSBqUXVlcnkgKSB7CisgICAgICAgIHdpbmRvdy5qUXVl
cnkgPSBfalF1ZXJ5OworICAgIH0KKworICAgIHJldHVybiBqUXVlcnk7Cit9OworCisvLyBFeHBv
c2UgalF1ZXJ5IGFuZCAkIGlkZW50aWZpZXJzLCBldmVuIGluIEFNRAorLy8gKCM3MTAyI2NvbW1l
bnQ6MTAsIGh0dHBzOi8vZ2l0aHViLmNvbS9qcXVlcnkvanF1ZXJ5L3B1bGwvNTU3KQorLy8gYW5k
IENvbW1vbkpTIGZvciBicm93c2VyIGVtdWxhdG9ycyAoIzEzNTY2KQoraWYgKCAhbm9HbG9iYWwg
KSB7CisgICAgd2luZG93LmpRdWVyeSA9IHdpbmRvdy4kID0galF1ZXJ5OworfQorCisKKworCisK
K3JldHVybiBqUXVlcnk7Cit9ICk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9k
ZV9tb2R1bGVzL2pxdWVyeS9kaXN0L2pxdWVyeS5taW4uanMgYi9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkv
bm9kZV9tb2R1bGVzL2pxdWVyeS9kaXN0L2pxdWVyeS5taW4uanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGM1YmU0
YzBmYmUyMzBlODFkOTU3MThhMTg4MjllOTY1YTJkMTRiMgotLS0gL2Rldi9udWxsCisrKyBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L2Rpc3QvanF1ZXJ5Lm1pbi5qcwpA
QCAtMCwwICsxLDQgQEAKKy8qISBqUXVlcnkgdjMuMS4xIHwgKGMpIGpRdWVyeSBGb3VuZGF0aW9u
IHwganF1ZXJ5Lm9yZy9saWNlbnNlICovCishZnVuY3Rpb24oYSxiKXsidXNlIHN0cmljdCI7Im9i
amVjdCI9PXR5cGVvZiBtb2R1bGUmJiJvYmplY3QiPT10eXBlb2YgbW9kdWxlLmV4cG9ydHM/bW9k
dWxlLmV4cG9ydHM9YS5kb2N1bWVudD9iKGEsITApOmZ1bmN0aW9uKGEpe2lmKCFhLmRvY3VtZW50
KXRocm93IG5ldyBFcnJvcigialF1ZXJ5IHJlcXVpcmVzIGEgd2luZG93IHdpdGggYSBkb2N1bWVu
dCIpO3JldHVybiBiKGEpfTpiKGEpfSgidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6
dGhpcyxmdW5jdGlvbihhLGIpeyJ1c2Ugc3RyaWN0Ijt2YXIgYz1bXSxkPWEuZG9jdW1lbnQsZT1P
YmplY3QuZ2V0UHJvdG90eXBlT2YsZj1jLnNsaWNlLGc9Yy5jb25jYXQsaD1jLnB1c2gsaT1jLmlu
ZGV4T2Ysaj17fSxrPWoudG9TdHJpbmcsbD1qLmhhc093blByb3BlcnR5LG09bC50b1N0cmluZyxu
PW0uY2FsbChPYmplY3QpLG89e307ZnVuY3Rpb24gcChhLGIpe2I9Ynx8ZDt2YXIgYz1iLmNyZWF0
ZUVsZW1lbnQoInNjcmlwdCIpO2MudGV4dD1hLGIuaGVhZC5hcHBlbmRDaGlsZChjKS5wYXJlbnRO
b2RlLnJlbW92ZUNoaWxkKGMpfXZhciBxPSIzLjEuMSIscj1mdW5jdGlvbihhLGIpe3JldHVybiBu
ZXcgci5mbi5pbml0KGEsYil9LHM9L15bXHNcdUZFRkZceEEwXSt8W1xzXHVGRUZGXHhBMF0rJC9n
LHQ9L14tbXMtLyx1PS8tKFthLXpdKS9nLHY9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYi50b1VwcGVy
Q2FzZSgpfTtyLmZuPXIucHJvdG90eXBlPXtqcXVlcnk6cSxjb25zdHJ1Y3RvcjpyLGxlbmd0aDow
LHRvQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gZi5jYWxsKHRoaXMpfSxnZXQ6ZnVuY3Rpb24oYSl7
cmV0dXJuIG51bGw9PWE/Zi5jYWxsKHRoaXMpOmE8MD90aGlzW2ErdGhpcy5sZW5ndGhdOnRoaXNb
YV19LHB1c2hTdGFjazpmdW5jdGlvbihhKXt2YXIgYj1yLm1lcmdlKHRoaXMuY29uc3RydWN0b3Io
KSxhKTtyZXR1cm4gYi5wcmV2T2JqZWN0PXRoaXMsYn0sZWFjaDpmdW5jdGlvbihhKXtyZXR1cm4g
ci5lYWNoKHRoaXMsYSl9LG1hcDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soci5t
YXAodGhpcyxmdW5jdGlvbihiLGMpe3JldHVybiBhLmNhbGwoYixjLGIpfSkpfSxzbGljZTpmdW5j
dGlvbigpe3JldHVybiB0aGlzLnB1c2hTdGFjayhmLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9LGZp
cnN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXEoMCl9LGxhc3Q6ZnVuY3Rpb24oKXtyZXR1cm4g
dGhpcy5lcSgtMSl9LGVxOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMubGVuZ3RoLGM9K2ErKGE8MD9i
OjApO3JldHVybiB0aGlzLnB1c2hTdGFjayhjPj0wJiZjPGI/W3RoaXNbY11dOltdKX0sZW5kOmZ1
bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJldk9iamVjdHx8dGhpcy5jb25zdHJ1Y3RvcigpfSxwdXNo
Omgsc29ydDpjLnNvcnQsc3BsaWNlOmMuc3BsaWNlfSxyLmV4dGVuZD1yLmZuLmV4dGVuZD1mdW5j
dGlvbigpe3ZhciBhLGIsYyxkLGUsZixnPWFyZ3VtZW50c1swXXx8e30saD0xLGk9YXJndW1lbnRz
Lmxlbmd0aCxqPSExO2ZvcigiYm9vbGVhbiI9PXR5cGVvZiBnJiYoaj1nLGc9YXJndW1lbnRzW2hd
fHx7fSxoKyspLCJvYmplY3QiPT10eXBlb2YgZ3x8ci5pc0Z1bmN0aW9uKGcpfHwoZz17fSksaD09
PWkmJihnPXRoaXMsaC0tKTtoPGk7aCsrKWlmKG51bGwhPShhPWFyZ3VtZW50c1toXSkpZm9yKGIg
aW4gYSljPWdbYl0sZD1hW2JdLGchPT1kJiYoaiYmZCYmKHIuaXNQbGFpbk9iamVjdChkKXx8KGU9
ci5pc0FycmF5KGQpKSk/KGU/KGU9ITEsZj1jJiZyLmlzQXJyYXkoYyk/YzpbXSk6Zj1jJiZyLmlz
UGxhaW5PYmplY3QoYyk/Yzp7fSxnW2JdPXIuZXh0ZW5kKGosZixkKSk6dm9pZCAwIT09ZCYmKGdb
Yl09ZCkpO3JldHVybiBnfSxyLmV4dGVuZCh7ZXhwYW5kbzoialF1ZXJ5IisocStNYXRoLnJhbmRv
bSgpKS5yZXBsYWNlKC9cRC9nLCIiKSxpc1JlYWR5OiEwLGVycm9yOmZ1bmN0aW9uKGEpe3Rocm93
IG5ldyBFcnJvcihhKX0sbm9vcDpmdW5jdGlvbigpe30saXNGdW5jdGlvbjpmdW5jdGlvbihhKXty
ZXR1cm4iZnVuY3Rpb24iPT09ci50eXBlKGEpfSxpc0FycmF5OkFycmF5LmlzQXJyYXksaXNXaW5k
b3c6ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGwhPWEmJmE9PT1hLndpbmRvd30saXNOdW1lcmljOmZ1
bmN0aW9uKGEpe3ZhciBiPXIudHlwZShhKTtyZXR1cm4oIm51bWJlciI9PT1ifHwic3RyaW5nIj09
PWIpJiYhaXNOYU4oYS1wYXJzZUZsb2F0KGEpKX0saXNQbGFpbk9iamVjdDpmdW5jdGlvbihhKXt2
YXIgYixjO3JldHVybiEoIWF8fCJbb2JqZWN0IE9iamVjdF0iIT09ay5jYWxsKGEpKSYmKCEoYj1l
KGEpKXx8KGM9bC5jYWxsKGIsImNvbnN0cnVjdG9yIikmJmIuY29uc3RydWN0b3IsImZ1bmN0aW9u
Ij09dHlwZW9mIGMmJm0uY2FsbChjKT09PW4pKX0saXNFbXB0eU9iamVjdDpmdW5jdGlvbihhKXt2
YXIgYjtmb3IoYiBpbiBhKXJldHVybiExO3JldHVybiEwfSx0eXBlOmZ1bmN0aW9uKGEpe3JldHVy
biBudWxsPT1hP2ErIiI6Im9iamVjdCI9PXR5cGVvZiBhfHwiZnVuY3Rpb24iPT10eXBlb2YgYT9q
W2suY2FsbChhKV18fCJvYmplY3QiOnR5cGVvZiBhfSxnbG9iYWxFdmFsOmZ1bmN0aW9uKGEpe3Ao
YSl9LGNhbWVsQ2FzZTpmdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKHQsIm1zLSIpLnJlcGxh
Y2UodSx2KX0sbm9kZU5hbWU6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5ub2RlTmFtZSYmYS5ub2Rl
TmFtZS50b0xvd2VyQ2FzZSgpPT09Yi50b0xvd2VyQ2FzZSgpfSxlYWNoOmZ1bmN0aW9uKGEsYil7
dmFyIGMsZD0wO2lmKHcoYSkpe2ZvcihjPWEubGVuZ3RoO2Q8YztkKyspaWYoYi5jYWxsKGFbZF0s
ZCxhW2RdKT09PSExKWJyZWFrfWVsc2UgZm9yKGQgaW4gYSlpZihiLmNhbGwoYVtkXSxkLGFbZF0p
PT09ITEpYnJlYWs7cmV0dXJuIGF9LHRyaW06ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWE/IiI6
KGErIiIpLnJlcGxhY2UocywiIil9LG1ha2VBcnJheTpmdW5jdGlvbihhLGIpe3ZhciBjPWJ8fFtd
O3JldHVybiBudWxsIT1hJiYodyhPYmplY3QoYSkpP3IubWVyZ2UoYywic3RyaW5nIj09dHlwZW9m
IGE/W2FdOmEpOmguY2FsbChjLGEpKSxjfSxpbkFycmF5OmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4g
bnVsbD09Yj8tMTppLmNhbGwoYixhLGMpfSxtZXJnZTpmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0r
Yi5sZW5ndGgsZD0wLGU9YS5sZW5ndGg7ZDxjO2QrKylhW2UrK109YltkXTtyZXR1cm4gYS5sZW5n
dGg9ZSxhfSxncmVwOmZ1bmN0aW9uKGEsYixjKXtmb3IodmFyIGQsZT1bXSxmPTAsZz1hLmxlbmd0
aCxoPSFjO2Y8ZztmKyspZD0hYihhW2ZdLGYpLGQhPT1oJiZlLnB1c2goYVtmXSk7cmV0dXJuIGV9
LG1hcDpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmPTAsaD1bXTtpZih3KGEpKWZvcihkPWEubGVu
Z3RoO2Y8ZDtmKyspZT1iKGFbZl0sZixjKSxudWxsIT1lJiZoLnB1c2goZSk7ZWxzZSBmb3IoZiBp
biBhKWU9YihhW2ZdLGYsYyksbnVsbCE9ZSYmaC5wdXNoKGUpO3JldHVybiBnLmFwcGx5KFtdLGgp
fSxndWlkOjEscHJveHk6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGU7aWYoInN0cmluZyI9PXR5cGVv
ZiBiJiYoYz1hW2JdLGI9YSxhPWMpLHIuaXNGdW5jdGlvbihhKSlyZXR1cm4gZD1mLmNhbGwoYXJn
dW1lbnRzLDIpLGU9ZnVuY3Rpb24oKXtyZXR1cm4gYS5hcHBseShifHx0aGlzLGQuY29uY2F0KGYu
Y2FsbChhcmd1bWVudHMpKSl9LGUuZ3VpZD1hLmd1aWQ9YS5ndWlkfHxyLmd1aWQrKyxlfSxub3c6
RGF0ZS5ub3csc3VwcG9ydDpvfSksImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKHIuZm5bU3lt
Ym9sLml0ZXJhdG9yXT1jW1N5bWJvbC5pdGVyYXRvcl0pLHIuZWFjaCgiQm9vbGVhbiBOdW1iZXIg
U3RyaW5nIEZ1bmN0aW9uIEFycmF5IERhdGUgUmVnRXhwIE9iamVjdCBFcnJvciBTeW1ib2wiLnNw
bGl0KCIgIiksZnVuY3Rpb24oYSxiKXtqWyJbb2JqZWN0ICIrYisiXSJdPWIudG9Mb3dlckNhc2Uo
KX0pO2Z1bmN0aW9uIHcoYSl7dmFyIGI9ISFhJiYibGVuZ3RoImluIGEmJmEubGVuZ3RoLGM9ci50
eXBlKGEpO3JldHVybiJmdW5jdGlvbiIhPT1jJiYhci5pc1dpbmRvdyhhKSYmKCJhcnJheSI9PT1j
fHwwPT09Ynx8Im51bWJlciI9PXR5cGVvZiBiJiZiPjAmJmItMSBpbiBhKX12YXIgeD1mdW5jdGlv
bihhKXt2YXIgYixjLGQsZSxmLGcsaCxpLGosayxsLG0sbixvLHAscSxyLHMsdCx1PSJzaXp6bGUi
KzEqbmV3IERhdGUsdj1hLmRvY3VtZW50LHc9MCx4PTAseT1oYSgpLHo9aGEoKSxBPWhhKCksQj1m
dW5jdGlvbihhLGIpe3JldHVybiBhPT09YiYmKGw9ITApLDB9LEM9e30uaGFzT3duUHJvcGVydHks
RD1bXSxFPUQucG9wLEY9RC5wdXNoLEc9RC5wdXNoLEg9RC5zbGljZSxJPWZ1bmN0aW9uKGEsYil7
Zm9yKHZhciBjPTAsZD1hLmxlbmd0aDtjPGQ7YysrKWlmKGFbY109PT1iKXJldHVybiBjO3JldHVy
bi0xfSxKPSJjaGVja2VkfHNlbGVjdGVkfGFzeW5jfGF1dG9mb2N1c3xhdXRvcGxheXxjb250cm9s
c3xkZWZlcnxkaXNhYmxlZHxoaWRkZW58aXNtYXB8bG9vcHxtdWx0aXBsZXxvcGVufHJlYWRvbmx5
fHJlcXVpcmVkfHNjb3BlZCIsSz0iW1xceDIwXFx0XFxyXFxuXFxmXSIsTD0iKD86XFxcXC58W1xc
dy1dfFteXDAtXFx4YTBdKSsiLE09IlxcWyIrSysiKigiK0wrIikoPzoiK0srIiooWypeJHwhfl0/
PSkiK0srIiooPzonKCg/OlxcXFwufFteXFxcXCddKSopJ3xcIigoPzpcXFxcLnxbXlxcXFxcIl0p
KilcInwoIitMKyIpKXwpIitLKyIqXFxdIixOPSI6KCIrTCsiKSg/OlxcKCgoJygoPzpcXFxcLnxb
XlxcXFwnXSkqKSd8XCIoKD86XFxcXC58W15cXFxcXCJdKSopXCIpfCgoPzpcXFxcLnxbXlxcXFwo
KVtcXF1dfCIrTSsiKSopfC4qKVxcKXwpIixPPW5ldyBSZWdFeHAoSysiKyIsImciKSxQPW5ldyBS
ZWdFeHAoIl4iK0srIit8KCg/Ol58W15cXFxcXSkoPzpcXFxcLikqKSIrSysiKyQiLCJnIiksUT1u
ZXcgUmVnRXhwKCJeIitLKyIqLCIrSysiKiIpLFI9bmV3IFJlZ0V4cCgiXiIrSysiKihbPit+XXwi
K0srIikiK0srIioiKSxTPW5ldyBSZWdFeHAoIj0iK0srIiooW15cXF0nXCJdKj8pIitLKyIqXFxd
IiwiZyIpLFQ9bmV3IFJlZ0V4cChOKSxVPW5ldyBSZWdFeHAoIl4iK0wrIiQiKSxWPXtJRDpuZXcg
UmVnRXhwKCJeIygiK0wrIikiKSxDTEFTUzpuZXcgUmVnRXhwKCJeXFwuKCIrTCsiKSIpLFRBRzpu
ZXcgUmVnRXhwKCJeKCIrTCsifFsqXSkiKSxBVFRSOm5ldyBSZWdFeHAoIl4iK00pLFBTRVVETzpu
ZXcgUmVnRXhwKCJeIitOKSxDSElMRDpuZXcgUmVnRXhwKCJeOihvbmx5fGZpcnN0fGxhc3R8bnRo
fG50aC1sYXN0KS0oY2hpbGR8b2YtdHlwZSkoPzpcXCgiK0srIiooZXZlbnxvZGR8KChbKy1dfCko
XFxkKilufCkiK0srIiooPzooWystXXwpIitLKyIqKFxcZCspfCkpIitLKyIqXFwpfCkiLCJpIiks
Ym9vbDpuZXcgUmVnRXhwKCJeKD86IitKKyIpJCIsImkiKSxuZWVkc0NvbnRleHQ6bmV3IFJlZ0V4
cCgiXiIrSysiKls+K35dfDooZXZlbnxvZGR8ZXF8Z3R8bHR8bnRofGZpcnN0fGxhc3QpKD86XFwo
IitLKyIqKCg/Oi1cXGQpP1xcZCopIitLKyIqXFwpfCkoPz1bXi1dfCQpIiwiaSIpfSxXPS9eKD86
aW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbikkL2ksWD0vXmhcZCQvaSxZPS9eW157XStce1xz
KlxbbmF0aXZlIFx3LyxaPS9eKD86IyhbXHctXSspfChcdyspfFwuKFtcdy1dKykpJC8sJD0vWyt+
XS8sXz1uZXcgUmVnRXhwKCJcXFxcKFtcXGRhLWZdezEsNn0iK0srIj98KCIrSysiKXwuKSIsImln
IiksYWE9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPSIweCIrYi02NTUzNjtyZXR1cm4gZCE9PWR8fGM/
YjpkPDA/U3RyaW5nLmZyb21DaGFyQ29kZShkKzY1NTM2KTpTdHJpbmcuZnJvbUNoYXJDb2RlKGQ+
PjEwfDU1Mjk2LDEwMjMmZHw1NjMyMCl9LGJhPS8oW1wwLVx4MWZceDdmXXxeLT9cZCl8Xi0kfFte
XDAtXHgxZlx4N2YtXHVGRkZGXHctXS9nLGNhPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGI/IlwwIj09
PWE/Ilx1ZmZmZCI6YS5zbGljZSgwLC0xKSsiXFwiK2EuY2hhckNvZGVBdChhLmxlbmd0aC0xKS50
b1N0cmluZygxNikrIiAiOiJcXCIrYX0sZGE9ZnVuY3Rpb24oKXttKCl9LGVhPXRhKGZ1bmN0aW9u
KGEpe3JldHVybiBhLmRpc2FibGVkPT09ITAmJigiZm9ybSJpbiBhfHwibGFiZWwiaW4gYSl9LHtk
aXI6InBhcmVudE5vZGUiLG5leHQ6ImxlZ2VuZCJ9KTt0cnl7Ry5hcHBseShEPUguY2FsbCh2LmNo
aWxkTm9kZXMpLHYuY2hpbGROb2RlcyksRFt2LmNoaWxkTm9kZXMubGVuZ3RoXS5ub2RlVHlwZX1j
YXRjaChmYSl7Rz17YXBwbHk6RC5sZW5ndGg/ZnVuY3Rpb24oYSxiKXtGLmFwcGx5KGEsSC5jYWxs
KGIpKX06ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmxlbmd0aCxkPTA7d2hpbGUoYVtjKytdPWJbZCsr
XSk7YS5sZW5ndGg9Yy0xfX19ZnVuY3Rpb24gZ2EoYSxiLGQsZSl7dmFyIGYsaCxqLGssbCxvLHIs
cz1iJiZiLm93bmVyRG9jdW1lbnQsdz1iP2Iubm9kZVR5cGU6OTtpZihkPWR8fFtdLCJzdHJpbmci
IT10eXBlb2YgYXx8IWF8fDEhPT13JiY5IT09dyYmMTEhPT13KXJldHVybiBkO2lmKCFlJiYoKGI/
Yi5vd25lckRvY3VtZW50fHxiOnYpIT09biYmbShiKSxiPWJ8fG4scCkpe2lmKDExIT09dyYmKGw9
Wi5leGVjKGEpKSlpZihmPWxbMV0pe2lmKDk9PT13KXtpZighKGo9Yi5nZXRFbGVtZW50QnlJZChm
KSkpcmV0dXJuIGQ7aWYoai5pZD09PWYpcmV0dXJuIGQucHVzaChqKSxkfWVsc2UgaWYocyYmKGo9
cy5nZXRFbGVtZW50QnlJZChmKSkmJnQoYixqKSYmai5pZD09PWYpcmV0dXJuIGQucHVzaChqKSxk
fWVsc2V7aWYobFsyXSlyZXR1cm4gRy5hcHBseShkLGIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYSkp
LGQ7aWYoKGY9bFszXSkmJmMuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSYmYi5nZXRFbGVtZW50c0J5
Q2xhc3NOYW1lKXJldHVybiBHLmFwcGx5KGQsYi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGYpKSxk
fWlmKGMucXNhJiYhQVthKyIgIl0mJighcXx8IXEudGVzdChhKSkpe2lmKDEhPT13KXM9YixyPWE7
ZWxzZSBpZigib2JqZWN0IiE9PWIubm9kZU5hbWUudG9Mb3dlckNhc2UoKSl7KGs9Yi5nZXRBdHRy
aWJ1dGUoImlkIikpP2s9ay5yZXBsYWNlKGJhLGNhKTpiLnNldEF0dHJpYnV0ZSgiaWQiLGs9dSks
bz1nKGEpLGg9by5sZW5ndGg7d2hpbGUoaC0tKW9baF09IiMiK2srIiAiK3NhKG9baF0pO3I9by5q
b2luKCIsIikscz0kLnRlc3QoYSkmJnFhKGIucGFyZW50Tm9kZSl8fGJ9aWYocil0cnl7cmV0dXJu
IEcuYXBwbHkoZCxzLnF1ZXJ5U2VsZWN0b3JBbGwocikpLGR9Y2F0Y2goeCl7fWZpbmFsbHl7az09
PXUmJmIucmVtb3ZlQXR0cmlidXRlKCJpZCIpfX19cmV0dXJuIGkoYS5yZXBsYWNlKFAsIiQxIiks
YixkLGUpfWZ1bmN0aW9uIGhhKCl7dmFyIGE9W107ZnVuY3Rpb24gYihjLGUpe3JldHVybiBhLnB1
c2goYysiICIpPmQuY2FjaGVMZW5ndGgmJmRlbGV0ZSBiW2Euc2hpZnQoKV0sYltjKyIgIl09ZX1y
ZXR1cm4gYn1mdW5jdGlvbiBpYShhKXtyZXR1cm4gYVt1XT0hMCxhfWZ1bmN0aW9uIGphKGEpe3Zh
ciBiPW4uY3JlYXRlRWxlbWVudCgiZmllbGRzZXQiKTt0cnl7cmV0dXJuISFhKGIpfWNhdGNoKGMp
e3JldHVybiExfWZpbmFsbHl7Yi5wYXJlbnROb2RlJiZiLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQo
YiksYj1udWxsfX1mdW5jdGlvbiBrYShhLGIpe3ZhciBjPWEuc3BsaXQoInwiKSxlPWMubGVuZ3Ro
O3doaWxlKGUtLSlkLmF0dHJIYW5kbGVbY1tlXV09Yn1mdW5jdGlvbiBsYShhLGIpe3ZhciBjPWIm
JmEsZD1jJiYxPT09YS5ub2RlVHlwZSYmMT09PWIubm9kZVR5cGUmJmEuc291cmNlSW5kZXgtYi5z
b3VyY2VJbmRleDtpZihkKXJldHVybiBkO2lmKGMpd2hpbGUoYz1jLm5leHRTaWJsaW5nKWlmKGM9
PT1iKXJldHVybi0xO3JldHVybiBhPzE6LTF9ZnVuY3Rpb24gbWEoYSl7cmV0dXJuIGZ1bmN0aW9u
KGIpe3ZhciBjPWIubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4iaW5wdXQiPT09YyYmYi50
eXBlPT09YX19ZnVuY3Rpb24gbmEoYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe3ZhciBjPWIubm9kZU5h
bWUudG9Mb3dlckNhc2UoKTtyZXR1cm4oImlucHV0Ij09PWN8fCJidXR0b24iPT09YykmJmIudHlw
ZT09PWF9fWZ1bmN0aW9uIG9hKGEpe3JldHVybiBmdW5jdGlvbihiKXtyZXR1cm4iZm9ybSJpbiBi
P2IucGFyZW50Tm9kZSYmYi5kaXNhYmxlZD09PSExPyJsYWJlbCJpbiBiPyJsYWJlbCJpbiBiLnBh
cmVudE5vZGU/Yi5wYXJlbnROb2RlLmRpc2FibGVkPT09YTpiLmRpc2FibGVkPT09YTpiLmlzRGlz
YWJsZWQ9PT1hfHxiLmlzRGlzYWJsZWQhPT0hYSYmZWEoYik9PT1hOmIuZGlzYWJsZWQ9PT1hOiJs
YWJlbCJpbiBiJiZiLmRpc2FibGVkPT09YX19ZnVuY3Rpb24gcGEoYSl7cmV0dXJuIGlhKGZ1bmN0
aW9uKGIpe3JldHVybiBiPStiLGlhKGZ1bmN0aW9uKGMsZCl7dmFyIGUsZj1hKFtdLGMubGVuZ3Ro
LGIpLGc9Zi5sZW5ndGg7d2hpbGUoZy0tKWNbZT1mW2ddXSYmKGNbZV09IShkW2VdPWNbZV0pKX0p
fSl9ZnVuY3Rpb24gcWEoYSl7cmV0dXJuIGEmJiJ1bmRlZmluZWQiIT10eXBlb2YgYS5nZXRFbGVt
ZW50c0J5VGFnTmFtZSYmYX1jPWdhLnN1cHBvcnQ9e30sZj1nYS5pc1hNTD1mdW5jdGlvbihhKXt2
YXIgYj1hJiYoYS5vd25lckRvY3VtZW50fHxhKS5kb2N1bWVudEVsZW1lbnQ7cmV0dXJuISFiJiYi
SFRNTCIhPT1iLm5vZGVOYW1lfSxtPWdhLnNldERvY3VtZW50PWZ1bmN0aW9uKGEpe3ZhciBiLGUs
Zz1hP2Eub3duZXJEb2N1bWVudHx8YTp2O3JldHVybiBnIT09biYmOT09PWcubm9kZVR5cGUmJmcu
ZG9jdW1lbnRFbGVtZW50PyhuPWcsbz1uLmRvY3VtZW50RWxlbWVudCxwPSFmKG4pLHYhPT1uJiYo
ZT1uLmRlZmF1bHRWaWV3KSYmZS50b3AhPT1lJiYoZS5hZGRFdmVudExpc3RlbmVyP2UuYWRkRXZl
bnRMaXN0ZW5lcigidW5sb2FkIixkYSwhMSk6ZS5hdHRhY2hFdmVudCYmZS5hdHRhY2hFdmVudCgi
b251bmxvYWQiLGRhKSksYy5hdHRyaWJ1dGVzPWphKGZ1bmN0aW9uKGEpe3JldHVybiBhLmNsYXNz
TmFtZT0iaSIsIWEuZ2V0QXR0cmlidXRlKCJjbGFzc05hbWUiKX0pLGMuZ2V0RWxlbWVudHNCeVRh
Z05hbWU9amEoZnVuY3Rpb24oYSl7cmV0dXJuIGEuYXBwZW5kQ2hpbGQobi5jcmVhdGVDb21tZW50
KCIiKSksIWEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKS5sZW5ndGh9KSxjLmdldEVsZW1lbnRz
QnlDbGFzc05hbWU9WS50ZXN0KG4uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSksYy5nZXRCeUlkPWph
KGZ1bmN0aW9uKGEpe3JldHVybiBvLmFwcGVuZENoaWxkKGEpLmlkPXUsIW4uZ2V0RWxlbWVudHNC
eU5hbWV8fCFuLmdldEVsZW1lbnRzQnlOYW1lKHUpLmxlbmd0aH0pLGMuZ2V0QnlJZD8oZC5maWx0
ZXIuSUQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS5yZXBsYWNlKF8sYWEpO3JldHVybiBmdW5jdGlvbihh
KXtyZXR1cm4gYS5nZXRBdHRyaWJ1dGUoImlkIik9PT1ifX0sZC5maW5kLklEPWZ1bmN0aW9uKGEs
Yil7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBiLmdldEVsZW1lbnRCeUlkJiZwKXt2YXIgYz1iLmdl
dEVsZW1lbnRCeUlkKGEpO3JldHVybiBjP1tjXTpbXX19KTooZC5maWx0ZXIuSUQ9ZnVuY3Rpb24o
YSl7dmFyIGI9YS5yZXBsYWNlKF8sYWEpO3JldHVybiBmdW5jdGlvbihhKXt2YXIgYz0idW5kZWZp
bmVkIiE9dHlwZW9mIGEuZ2V0QXR0cmlidXRlTm9kZSYmYS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIp
O3JldHVybiBjJiZjLnZhbHVlPT09Yn19LGQuZmluZC5JRD1mdW5jdGlvbihhLGIpe2lmKCJ1bmRl
ZmluZWQiIT10eXBlb2YgYi5nZXRFbGVtZW50QnlJZCYmcCl7dmFyIGMsZCxlLGY9Yi5nZXRFbGVt
ZW50QnlJZChhKTtpZihmKXtpZihjPWYuZ2V0QXR0cmlidXRlTm9kZSgiaWQiKSxjJiZjLnZhbHVl
PT09YSlyZXR1cm5bZl07ZT1iLmdldEVsZW1lbnRzQnlOYW1lKGEpLGQ9MDt3aGlsZShmPWVbZCsr
XSlpZihjPWYuZ2V0QXR0cmlidXRlTm9kZSgiaWQiKSxjJiZjLnZhbHVlPT09YSlyZXR1cm5bZl19
cmV0dXJuW119fSksZC5maW5kLlRBRz1jLmdldEVsZW1lbnRzQnlUYWdOYW1lP2Z1bmN0aW9uKGEs
Yil7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBiLmdldEVsZW1lbnRzQnlUYWdOYW1lP2IuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoYSk6Yy5xc2E/Yi5xdWVyeVNlbGVjdG9yQWxsKGEpOnZvaWQgMH06
ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPVtdLGU9MCxmPWIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYSk7
aWYoIioiPT09YSl7d2hpbGUoYz1mW2UrK10pMT09PWMubm9kZVR5cGUmJmQucHVzaChjKTtyZXR1
cm4gZH1yZXR1cm4gZn0sZC5maW5kLkNMQVNTPWMuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSYmZnVu
Y3Rpb24oYSxiKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGIuZ2V0RWxlbWVudHNCeUNsYXNzTmFt
ZSYmcClyZXR1cm4gYi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGEpfSxyPVtdLHE9W10sKGMucXNh
PVkudGVzdChuLnF1ZXJ5U2VsZWN0b3JBbGwpKSYmKGphKGZ1bmN0aW9uKGEpe28uYXBwZW5kQ2hp
bGQoYSkuaW5uZXJIVE1MPSI8YSBpZD0nIit1KyInPjwvYT48c2VsZWN0IGlkPSciK3UrIi1cclxc
JyBtc2FsbG93Y2FwdHVyZT0nJz48b3B0aW9uIHNlbGVjdGVkPScnPjwvb3B0aW9uPjwvc2VsZWN0
PiIsYS5xdWVyeVNlbGVjdG9yQWxsKCJbbXNhbGxvd2NhcHR1cmVePScnXSIpLmxlbmd0aCYmcS5w
dXNoKCJbKl4kXT0iK0srIiooPzonJ3xcIlwiKSIpLGEucXVlcnlTZWxlY3RvckFsbCgiW3NlbGVj
dGVkXSIpLmxlbmd0aHx8cS5wdXNoKCJcXFsiK0srIiooPzp2YWx1ZXwiK0orIikiKSxhLnF1ZXJ5
U2VsZWN0b3JBbGwoIltpZH49Iit1KyItXSIpLmxlbmd0aHx8cS5wdXNoKCJ+PSIpLGEucXVlcnlT
ZWxlY3RvckFsbCgiOmNoZWNrZWQiKS5sZW5ndGh8fHEucHVzaCgiOmNoZWNrZWQiKSxhLnF1ZXJ5
U2VsZWN0b3JBbGwoImEjIit1KyIrKiIpLmxlbmd0aHx8cS5wdXNoKCIuIy4rWyt+XSIpfSksamEo
ZnVuY3Rpb24oYSl7YS5pbm5lckhUTUw9IjxhIGhyZWY9JycgZGlzYWJsZWQ9J2Rpc2FibGVkJz48
L2E+PHNlbGVjdCBkaXNhYmxlZD0nZGlzYWJsZWQnPjxvcHRpb24vPjwvc2VsZWN0PiI7dmFyIGI9
bi5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO2Iuc2V0QXR0cmlidXRlKCJ0eXBlIiwiaGlkZGVuIiks
YS5hcHBlbmRDaGlsZChiKS5zZXRBdHRyaWJ1dGUoIm5hbWUiLCJEIiksYS5xdWVyeVNlbGVjdG9y
QWxsKCJbbmFtZT1kXSIpLmxlbmd0aCYmcS5wdXNoKCJuYW1lIitLKyIqWypeJHwhfl0/PSIpLDIh
PT1hLnF1ZXJ5U2VsZWN0b3JBbGwoIjplbmFibGVkIikubGVuZ3RoJiZxLnB1c2goIjplbmFibGVk
IiwiOmRpc2FibGVkIiksby5hcHBlbmRDaGlsZChhKS5kaXNhYmxlZD0hMCwyIT09YS5xdWVyeVNl
bGVjdG9yQWxsKCI6ZGlzYWJsZWQiKS5sZW5ndGgmJnEucHVzaCgiOmVuYWJsZWQiLCI6ZGlzYWJs
ZWQiKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoIiosOngiKSxxLnB1c2goIiwuKjoiKX0pKSwoYy5tYXRj
aGVzU2VsZWN0b3I9WS50ZXN0KHM9by5tYXRjaGVzfHxvLndlYmtpdE1hdGNoZXNTZWxlY3Rvcnx8
by5tb3pNYXRjaGVzU2VsZWN0b3J8fG8ub01hdGNoZXNTZWxlY3Rvcnx8by5tc01hdGNoZXNTZWxl
Y3RvcikpJiZqYShmdW5jdGlvbihhKXtjLmRpc2Nvbm5lY3RlZE1hdGNoPXMuY2FsbChhLCIqIiks
cy5jYWxsKGEsIltzIT0nJ106eCIpLHIucHVzaCgiIT0iLE4pfSkscT1xLmxlbmd0aCYmbmV3IFJl
Z0V4cChxLmpvaW4oInwiKSkscj1yLmxlbmd0aCYmbmV3IFJlZ0V4cChyLmpvaW4oInwiKSksYj1Z
LnRlc3Qoby5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiksdD1ifHxZLnRlc3Qoby5jb250YWlucyk/
ZnVuY3Rpb24oYSxiKXt2YXIgYz05PT09YS5ub2RlVHlwZT9hLmRvY3VtZW50RWxlbWVudDphLGQ9
YiYmYi5wYXJlbnROb2RlO3JldHVybiBhPT09ZHx8ISghZHx8MSE9PWQubm9kZVR5cGV8fCEoYy5j
b250YWlucz9jLmNvbnRhaW5zKGQpOmEuY29tcGFyZURvY3VtZW50UG9zaXRpb24mJjE2JmEuY29t
cGFyZURvY3VtZW50UG9zaXRpb24oZCkpKX06ZnVuY3Rpb24oYSxiKXtpZihiKXdoaWxlKGI9Yi5w
YXJlbnROb2RlKWlmKGI9PT1hKXJldHVybiEwO3JldHVybiExfSxCPWI/ZnVuY3Rpb24oYSxiKXtp
ZihhPT09YilyZXR1cm4gbD0hMCwwO3ZhciBkPSFhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uLSFi
LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uO3JldHVybiBkP2Q6KGQ9KGEub3duZXJEb2N1bWVudHx8
YSk9PT0oYi5vd25lckRvY3VtZW50fHxiKT9hLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGIpOjEs
MSZkfHwhYy5zb3J0RGV0YWNoZWQmJmIuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYSk9PT1kP2E9
PT1ufHxhLm93bmVyRG9jdW1lbnQ9PT12JiZ0KHYsYSk/LTE6Yj09PW58fGIub3duZXJEb2N1bWVu
dD09PXYmJnQodixiKT8xOms/SShrLGEpLUkoayxiKTowOjQmZD8tMToxKX06ZnVuY3Rpb24oYSxi
KXtpZihhPT09YilyZXR1cm4gbD0hMCwwO3ZhciBjLGQ9MCxlPWEucGFyZW50Tm9kZSxmPWIucGFy
ZW50Tm9kZSxnPVthXSxoPVtiXTtpZighZXx8IWYpcmV0dXJuIGE9PT1uPy0xOmI9PT1uPzE6ZT8t
MTpmPzE6az9JKGssYSktSShrLGIpOjA7aWYoZT09PWYpcmV0dXJuIGxhKGEsYik7Yz1hO3doaWxl
KGM9Yy5wYXJlbnROb2RlKWcudW5zaGlmdChjKTtjPWI7d2hpbGUoYz1jLnBhcmVudE5vZGUpaC51
bnNoaWZ0KGMpO3doaWxlKGdbZF09PT1oW2RdKWQrKztyZXR1cm4gZD9sYShnW2RdLGhbZF0pOmdb
ZF09PT12Py0xOmhbZF09PT12PzE6MH0sbik6bn0sZ2EubWF0Y2hlcz1mdW5jdGlvbihhLGIpe3Jl
dHVybiBnYShhLG51bGwsbnVsbCxiKX0sZ2EubWF0Y2hlc1NlbGVjdG9yPWZ1bmN0aW9uKGEsYil7
aWYoKGEub3duZXJEb2N1bWVudHx8YSkhPT1uJiZtKGEpLGI9Yi5yZXBsYWNlKFMsIj0nJDEnXSIp
LGMubWF0Y2hlc1NlbGVjdG9yJiZwJiYhQVtiKyIgIl0mJighcnx8IXIudGVzdChiKSkmJighcXx8
IXEudGVzdChiKSkpdHJ5e3ZhciBkPXMuY2FsbChhLGIpO2lmKGR8fGMuZGlzY29ubmVjdGVkTWF0
Y2h8fGEuZG9jdW1lbnQmJjExIT09YS5kb2N1bWVudC5ub2RlVHlwZSlyZXR1cm4gZH1jYXRjaChl
KXt9cmV0dXJuIGdhKGIsbixudWxsLFthXSkubGVuZ3RoPjB9LGdhLmNvbnRhaW5zPWZ1bmN0aW9u
KGEsYil7cmV0dXJuKGEub3duZXJEb2N1bWVudHx8YSkhPT1uJiZtKGEpLHQoYSxiKX0sZ2EuYXR0
cj1mdW5jdGlvbihhLGIpeyhhLm93bmVyRG9jdW1lbnR8fGEpIT09biYmbShhKTt2YXIgZT1kLmF0
dHJIYW5kbGVbYi50b0xvd2VyQ2FzZSgpXSxmPWUmJkMuY2FsbChkLmF0dHJIYW5kbGUsYi50b0xv
d2VyQ2FzZSgpKT9lKGEsYiwhcCk6dm9pZCAwO3JldHVybiB2b2lkIDAhPT1mP2Y6Yy5hdHRyaWJ1
dGVzfHwhcD9hLmdldEF0dHJpYnV0ZShiKTooZj1hLmdldEF0dHJpYnV0ZU5vZGUoYikpJiZmLnNw
ZWNpZmllZD9mLnZhbHVlOm51bGx9LGdhLmVzY2FwZT1mdW5jdGlvbihhKXtyZXR1cm4oYSsiIiku
cmVwbGFjZShiYSxjYSl9LGdhLmVycm9yPWZ1bmN0aW9uKGEpe3Rocm93IG5ldyBFcnJvcigiU3lu
dGF4IGVycm9yLCB1bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogIithKX0sZ2EudW5pcXVlU29ydD1m
dW5jdGlvbihhKXt2YXIgYixkPVtdLGU9MCxmPTA7aWYobD0hYy5kZXRlY3REdXBsaWNhdGVzLGs9
IWMuc29ydFN0YWJsZSYmYS5zbGljZSgwKSxhLnNvcnQoQiksbCl7d2hpbGUoYj1hW2YrK10pYj09
PWFbZl0mJihlPWQucHVzaChmKSk7d2hpbGUoZS0tKWEuc3BsaWNlKGRbZV0sMSl9cmV0dXJuIGs9
bnVsbCxhfSxlPWdhLmdldFRleHQ9ZnVuY3Rpb24oYSl7dmFyIGIsYz0iIixkPTAsZj1hLm5vZGVU
eXBlO2lmKGYpe2lmKDE9PT1mfHw5PT09Znx8MTE9PT1mKXtpZigic3RyaW5nIj09dHlwZW9mIGEu
dGV4dENvbnRlbnQpcmV0dXJuIGEudGV4dENvbnRlbnQ7Zm9yKGE9YS5maXJzdENoaWxkO2E7YT1h
Lm5leHRTaWJsaW5nKWMrPWUoYSl9ZWxzZSBpZigzPT09Znx8ND09PWYpcmV0dXJuIGEubm9kZVZh
bHVlfWVsc2Ugd2hpbGUoYj1hW2QrK10pYys9ZShiKTtyZXR1cm4gY30sZD1nYS5zZWxlY3RvcnM9
e2NhY2hlTGVuZ3RoOjUwLGNyZWF0ZVBzZXVkbzppYSxtYXRjaDpWLGF0dHJIYW5kbGU6e30sZmlu
ZDp7fSxyZWxhdGl2ZTp7Ij4iOntkaXI6InBhcmVudE5vZGUiLGZpcnN0OiEwfSwiICI6e2Rpcjoi
cGFyZW50Tm9kZSJ9LCIrIjp7ZGlyOiJwcmV2aW91c1NpYmxpbmciLGZpcnN0OiEwfSwifiI6e2Rp
cjoicHJldmlvdXNTaWJsaW5nIn19LHByZUZpbHRlcjp7QVRUUjpmdW5jdGlvbihhKXtyZXR1cm4g
YVsxXT1hWzFdLnJlcGxhY2UoXyxhYSksYVszXT0oYVszXXx8YVs0XXx8YVs1XXx8IiIpLnJlcGxh
Y2UoXyxhYSksIn49Ij09PWFbMl0mJihhWzNdPSIgIithWzNdKyIgIiksYS5zbGljZSgwLDQpfSxD
SElMRDpmdW5jdGlvbihhKXtyZXR1cm4gYVsxXT1hWzFdLnRvTG93ZXJDYXNlKCksIm50aCI9PT1h
WzFdLnNsaWNlKDAsMyk/KGFbM118fGdhLmVycm9yKGFbMF0pLGFbNF09KyhhWzRdP2FbNV0rKGFb
Nl18fDEpOjIqKCJldmVuIj09PWFbM118fCJvZGQiPT09YVszXSkpLGFbNV09KyhhWzddK2FbOF18
fCJvZGQiPT09YVszXSkpOmFbM10mJmdhLmVycm9yKGFbMF0pLGF9LFBTRVVETzpmdW5jdGlvbihh
KXt2YXIgYixjPSFhWzZdJiZhWzJdO3JldHVybiBWLkNISUxELnRlc3QoYVswXSk/bnVsbDooYVsz
XT9hWzJdPWFbNF18fGFbNV18fCIiOmMmJlQudGVzdChjKSYmKGI9ZyhjLCEwKSkmJihiPWMuaW5k
ZXhPZigiKSIsYy5sZW5ndGgtYiktYy5sZW5ndGgpJiYoYVswXT1hWzBdLnNsaWNlKDAsYiksYVsy
XT1jLnNsaWNlKDAsYikpLGEuc2xpY2UoMCwzKSl9fSxmaWx0ZXI6e1RBRzpmdW5jdGlvbihhKXt2
YXIgYj1hLnJlcGxhY2UoXyxhYSkudG9Mb3dlckNhc2UoKTtyZXR1cm4iKiI9PT1hP2Z1bmN0aW9u
KCl7cmV0dXJuITB9OmZ1bmN0aW9uKGEpe3JldHVybiBhLm5vZGVOYW1lJiZhLm5vZGVOYW1lLnRv
TG93ZXJDYXNlKCk9PT1ifX0sQ0xBU1M6ZnVuY3Rpb24oYSl7dmFyIGI9eVthKyIgIl07cmV0dXJu
IGJ8fChiPW5ldyBSZWdFeHAoIihefCIrSysiKSIrYSsiKCIrSysifCQpIikpJiZ5KGEsZnVuY3Rp
b24oYSl7cmV0dXJuIGIudGVzdCgic3RyaW5nIj09dHlwZW9mIGEuY2xhc3NOYW1lJiZhLmNsYXNz
TmFtZXx8InVuZGVmaW5lZCIhPXR5cGVvZiBhLmdldEF0dHJpYnV0ZSYmYS5nZXRBdHRyaWJ1dGUo
ImNsYXNzIil8fCIiKX0pfSxBVFRSOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gZnVuY3Rpb24oZCl7
dmFyIGU9Z2EuYXR0cihkLGEpO3JldHVybiBudWxsPT1lPyIhPSI9PT1iOiFifHwoZSs9IiIsIj0i
PT09Yj9lPT09YzoiIT0iPT09Yj9lIT09YzoiXj0iPT09Yj9jJiYwPT09ZS5pbmRleE9mKGMpOiIq
PSI9PT1iP2MmJmUuaW5kZXhPZihjKT4tMToiJD0iPT09Yj9jJiZlLnNsaWNlKC1jLmxlbmd0aCk9
PT1jOiJ+PSI9PT1iPygiICIrZS5yZXBsYWNlKE8sIiAiKSsiICIpLmluZGV4T2YoYyk+LTE6Inw9
Ij09PWImJihlPT09Y3x8ZS5zbGljZSgwLGMubGVuZ3RoKzEpPT09YysiLSIpKX19LENISUxEOmZ1
bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9Im50aCIhPT1hLnNsaWNlKDAsMyksZz0ibGFzdCIhPT1h
LnNsaWNlKC00KSxoPSJvZi10eXBlIj09PWI7cmV0dXJuIDE9PT1kJiYwPT09ZT9mdW5jdGlvbihh
KXtyZXR1cm4hIWEucGFyZW50Tm9kZX06ZnVuY3Rpb24oYixjLGkpe3ZhciBqLGssbCxtLG4sbyxw
PWYhPT1nPyJuZXh0U2libGluZyI6InByZXZpb3VzU2libGluZyIscT1iLnBhcmVudE5vZGUscj1o
JiZiLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkscz0haSYmIWgsdD0hMTtpZihxKXtpZihmKXt3aGls
ZShwKXttPWI7d2hpbGUobT1tW3BdKWlmKGg/bS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09cjox
PT09bS5ub2RlVHlwZSlyZXR1cm4hMTtvPXA9Im9ubHkiPT09YSYmIW8mJiJuZXh0U2libGluZyJ9
cmV0dXJuITB9aWYobz1bZz9xLmZpcnN0Q2hpbGQ6cS5sYXN0Q2hpbGRdLGcmJnMpe209cSxsPW1b
dV18fChtW3VdPXt9KSxrPWxbbS51bmlxdWVJRF18fChsW20udW5pcXVlSURdPXt9KSxqPWtbYV18
fFtdLG49alswXT09PXcmJmpbMV0sdD1uJiZqWzJdLG09biYmcS5jaGlsZE5vZGVzW25dO3doaWxl
KG09KytuJiZtJiZtW3BdfHwodD1uPTApfHxvLnBvcCgpKWlmKDE9PT1tLm5vZGVUeXBlJiYrK3Qm
Jm09PT1iKXtrW2FdPVt3LG4sdF07YnJlYWt9fWVsc2UgaWYocyYmKG09YixsPW1bdV18fChtW3Vd
PXt9KSxrPWxbbS51bmlxdWVJRF18fChsW20udW5pcXVlSURdPXt9KSxqPWtbYV18fFtdLG49alsw
XT09PXcmJmpbMV0sdD1uKSx0PT09ITEpd2hpbGUobT0rK24mJm0mJm1bcF18fCh0PW49MCl8fG8u
cG9wKCkpaWYoKGg/bS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09cjoxPT09bS5ub2RlVHlwZSkm
JisrdCYmKHMmJihsPW1bdV18fChtW3VdPXt9KSxrPWxbbS51bmlxdWVJRF18fChsW20udW5pcXVl
SURdPXt9KSxrW2FdPVt3LHRdKSxtPT09YikpYnJlYWs7cmV0dXJuIHQtPWUsdD09PWR8fHQlZD09
PTAmJnQvZD49MH19fSxQU0VVRE86ZnVuY3Rpb24oYSxiKXt2YXIgYyxlPWQucHNldWRvc1thXXx8
ZC5zZXRGaWx0ZXJzW2EudG9Mb3dlckNhc2UoKV18fGdhLmVycm9yKCJ1bnN1cHBvcnRlZCBwc2V1
ZG86ICIrYSk7cmV0dXJuIGVbdV0/ZShiKTplLmxlbmd0aD4xPyhjPVthLGEsIiIsYl0sZC5zZXRG
aWx0ZXJzLmhhc093blByb3BlcnR5KGEudG9Mb3dlckNhc2UoKSk/aWEoZnVuY3Rpb24oYSxjKXt2
YXIgZCxmPWUoYSxiKSxnPWYubGVuZ3RoO3doaWxlKGctLSlkPUkoYSxmW2ddKSxhW2RdPSEoY1tk
XT1mW2ddKX0pOmZ1bmN0aW9uKGEpe3JldHVybiBlKGEsMCxjKX0pOmV9fSxwc2V1ZG9zOntub3Q6
aWEoZnVuY3Rpb24oYSl7dmFyIGI9W10sYz1bXSxkPWgoYS5yZXBsYWNlKFAsIiQxIikpO3JldHVy
biBkW3VdP2lhKGZ1bmN0aW9uKGEsYixjLGUpe3ZhciBmLGc9ZChhLG51bGwsZSxbXSksaD1hLmxl
bmd0aDt3aGlsZShoLS0pKGY9Z1toXSkmJihhW2hdPSEoYltoXT1mKSl9KTpmdW5jdGlvbihhLGUs
Zil7cmV0dXJuIGJbMF09YSxkKGIsbnVsbCxmLGMpLGJbMF09bnVsbCwhYy5wb3AoKX19KSxoYXM6
aWEoZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe3JldHVybiBnYShhLGIpLmxlbmd0aD4w
fX0pLGNvbnRhaW5zOmlhKGZ1bmN0aW9uKGEpe3JldHVybiBhPWEucmVwbGFjZShfLGFhKSxmdW5j
dGlvbihiKXtyZXR1cm4oYi50ZXh0Q29udGVudHx8Yi5pbm5lclRleHR8fGUoYikpLmluZGV4T2Yo
YSk+LTF9fSksbGFuZzppYShmdW5jdGlvbihhKXtyZXR1cm4gVS50ZXN0KGF8fCIiKXx8Z2EuZXJy
b3IoInVuc3VwcG9ydGVkIGxhbmc6ICIrYSksYT1hLnJlcGxhY2UoXyxhYSkudG9Mb3dlckNhc2Uo
KSxmdW5jdGlvbihiKXt2YXIgYztkbyBpZihjPXA/Yi5sYW5nOmIuZ2V0QXR0cmlidXRlKCJ4bWw6
bGFuZyIpfHxiLmdldEF0dHJpYnV0ZSgibGFuZyIpKXJldHVybiBjPWMudG9Mb3dlckNhc2UoKSxj
PT09YXx8MD09PWMuaW5kZXhPZihhKyItIik7d2hpbGUoKGI9Yi5wYXJlbnROb2RlKSYmMT09PWIu
bm9kZVR5cGUpO3JldHVybiExfX0pLHRhcmdldDpmdW5jdGlvbihiKXt2YXIgYz1hLmxvY2F0aW9u
JiZhLmxvY2F0aW9uLmhhc2g7cmV0dXJuIGMmJmMuc2xpY2UoMSk9PT1iLmlkfSxyb290OmZ1bmN0
aW9uKGEpe3JldHVybiBhPT09b30sZm9jdXM6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1uLmFjdGl2
ZUVsZW1lbnQmJighbi5oYXNGb2N1c3x8bi5oYXNGb2N1cygpKSYmISEoYS50eXBlfHxhLmhyZWZ8
fH5hLnRhYkluZGV4KX0sZW5hYmxlZDpvYSghMSksZGlzYWJsZWQ6b2EoITApLGNoZWNrZWQ6ZnVu
Y3Rpb24oYSl7dmFyIGI9YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiJpbnB1dCI9PT1i
JiYhIWEuY2hlY2tlZHx8Im9wdGlvbiI9PT1iJiYhIWEuc2VsZWN0ZWR9LHNlbGVjdGVkOmZ1bmN0
aW9uKGEpe3JldHVybiBhLnBhcmVudE5vZGUmJmEucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4LGEu
c2VsZWN0ZWQ9PT0hMH0sZW1wdHk6ZnVuY3Rpb24oYSl7Zm9yKGE9YS5maXJzdENoaWxkO2E7YT1h
Lm5leHRTaWJsaW5nKWlmKGEubm9kZVR5cGU8NilyZXR1cm4hMTtyZXR1cm4hMH0scGFyZW50OmZ1
bmN0aW9uKGEpe3JldHVybiFkLnBzZXVkb3MuZW1wdHkoYSl9LGhlYWRlcjpmdW5jdGlvbihhKXty
ZXR1cm4gWC50ZXN0KGEubm9kZU5hbWUpfSxpbnB1dDpmdW5jdGlvbihhKXtyZXR1cm4gVy50ZXN0
KGEubm9kZU5hbWUpfSxidXR0b246ZnVuY3Rpb24oYSl7dmFyIGI9YS5ub2RlTmFtZS50b0xvd2Vy
Q2FzZSgpO3JldHVybiJpbnB1dCI9PT1iJiYiYnV0dG9uIj09PWEudHlwZXx8ImJ1dHRvbiI9PT1i
fSx0ZXh0OmZ1bmN0aW9uKGEpe3ZhciBiO3JldHVybiJpbnB1dCI9PT1hLm5vZGVOYW1lLnRvTG93
ZXJDYXNlKCkmJiJ0ZXh0Ij09PWEudHlwZSYmKG51bGw9PShiPWEuZ2V0QXR0cmlidXRlKCJ0eXBl
IikpfHwidGV4dCI9PT1iLnRvTG93ZXJDYXNlKCkpfSxmaXJzdDpwYShmdW5jdGlvbigpe3JldHVy
blswXX0pLGxhc3Q6cGEoZnVuY3Rpb24oYSxiKXtyZXR1cm5bYi0xXX0pLGVxOnBhKGZ1bmN0aW9u
KGEsYixjKXtyZXR1cm5bYzwwP2MrYjpjXX0pLGV2ZW46cGEoZnVuY3Rpb24oYSxiKXtmb3IodmFy
IGM9MDtjPGI7Yys9MilhLnB1c2goYyk7cmV0dXJuIGF9KSxvZGQ6cGEoZnVuY3Rpb24oYSxiKXtm
b3IodmFyIGM9MTtjPGI7Yys9MilhLnB1c2goYyk7cmV0dXJuIGF9KSxsdDpwYShmdW5jdGlvbihh
LGIsYyl7Zm9yKHZhciBkPWM8MD9jK2I6YzstLWQ+PTA7KWEucHVzaChkKTtyZXR1cm4gYX0pLGd0
OnBhKGZ1bmN0aW9uKGEsYixjKXtmb3IodmFyIGQ9YzwwP2MrYjpjOysrZDxiOylhLnB1c2goZCk7
cmV0dXJuIGF9KX19LGQucHNldWRvcy5udGg9ZC5wc2V1ZG9zLmVxO2ZvcihiIGlue3JhZGlvOiEw
LGNoZWNrYm94OiEwLGZpbGU6ITAscGFzc3dvcmQ6ITAsaW1hZ2U6ITB9KWQucHNldWRvc1tiXT1t
YShiKTtmb3IoYiBpbntzdWJtaXQ6ITAscmVzZXQ6ITB9KWQucHNldWRvc1tiXT1uYShiKTtmdW5j
dGlvbiByYSgpe31yYS5wcm90b3R5cGU9ZC5maWx0ZXJzPWQucHNldWRvcyxkLnNldEZpbHRlcnM9
bmV3IHJhLGc9Z2EudG9rZW5pemU9ZnVuY3Rpb24oYSxiKXt2YXIgYyxlLGYsZyxoLGksaixrPXpb
YSsiICJdO2lmKGspcmV0dXJuIGI/MDprLnNsaWNlKDApO2g9YSxpPVtdLGo9ZC5wcmVGaWx0ZXI7
d2hpbGUoaCl7YyYmIShlPVEuZXhlYyhoKSl8fChlJiYoaD1oLnNsaWNlKGVbMF0ubGVuZ3RoKXx8
aCksaS5wdXNoKGY9W10pKSxjPSExLChlPVIuZXhlYyhoKSkmJihjPWUuc2hpZnQoKSxmLnB1c2go
e3ZhbHVlOmMsdHlwZTplWzBdLnJlcGxhY2UoUCwiICIpfSksaD1oLnNsaWNlKGMubGVuZ3RoKSk7
Zm9yKGcgaW4gZC5maWx0ZXIpIShlPVZbZ10uZXhlYyhoKSl8fGpbZ10mJiEoZT1qW2ddKGUpKXx8
KGM9ZS5zaGlmdCgpLGYucHVzaCh7dmFsdWU6Yyx0eXBlOmcsbWF0Y2hlczplfSksaD1oLnNsaWNl
KGMubGVuZ3RoKSk7aWYoIWMpYnJlYWt9cmV0dXJuIGI/aC5sZW5ndGg6aD9nYS5lcnJvcihhKTp6
KGEsaSkuc2xpY2UoMCl9O2Z1bmN0aW9uIHNhKGEpe2Zvcih2YXIgYj0wLGM9YS5sZW5ndGgsZD0i
IjtiPGM7YisrKWQrPWFbYl0udmFsdWU7cmV0dXJuIGR9ZnVuY3Rpb24gdGEoYSxiLGMpe3ZhciBk
PWIuZGlyLGU9Yi5uZXh0LGY9ZXx8ZCxnPWMmJiJwYXJlbnROb2RlIj09PWYsaD14Kys7cmV0dXJu
IGIuZmlyc3Q/ZnVuY3Rpb24oYixjLGUpe3doaWxlKGI9YltkXSlpZigxPT09Yi5ub2RlVHlwZXx8
ZylyZXR1cm4gYShiLGMsZSk7cmV0dXJuITF9OmZ1bmN0aW9uKGIsYyxpKXt2YXIgaixrLGwsbT1b
dyxoXTtpZihpKXt3aGlsZShiPWJbZF0paWYoKDE9PT1iLm5vZGVUeXBlfHxnKSYmYShiLGMsaSkp
cmV0dXJuITB9ZWxzZSB3aGlsZShiPWJbZF0paWYoMT09PWIubm9kZVR5cGV8fGcpaWYobD1iW3Vd
fHwoYlt1XT17fSksaz1sW2IudW5pcXVlSURdfHwobFtiLnVuaXF1ZUlEXT17fSksZSYmZT09PWIu
bm9kZU5hbWUudG9Mb3dlckNhc2UoKSliPWJbZF18fGI7ZWxzZXtpZigoaj1rW2ZdKSYmalswXT09
PXcmJmpbMV09PT1oKXJldHVybiBtWzJdPWpbMl07aWYoa1tmXT1tLG1bMl09YShiLGMsaSkpcmV0
dXJuITB9cmV0dXJuITF9fWZ1bmN0aW9uIHVhKGEpe3JldHVybiBhLmxlbmd0aD4xP2Z1bmN0aW9u
KGIsYyxkKXt2YXIgZT1hLmxlbmd0aDt3aGlsZShlLS0paWYoIWFbZV0oYixjLGQpKXJldHVybiEx
O3JldHVybiEwfTphWzBdfWZ1bmN0aW9uIHZhKGEsYixjKXtmb3IodmFyIGQ9MCxlPWIubGVuZ3Ro
O2Q8ZTtkKyspZ2EoYSxiW2RdLGMpO3JldHVybiBjfWZ1bmN0aW9uIHdhKGEsYixjLGQsZSl7Zm9y
KHZhciBmLGc9W10saD0wLGk9YS5sZW5ndGgsaj1udWxsIT1iO2g8aTtoKyspKGY9YVtoXSkmJihj
JiYhYyhmLGQsZSl8fChnLnB1c2goZiksaiYmYi5wdXNoKGgpKSk7cmV0dXJuIGd9ZnVuY3Rpb24g
eGEoYSxiLGMsZCxlLGYpe3JldHVybiBkJiYhZFt1XSYmKGQ9eGEoZCkpLGUmJiFlW3VdJiYoZT14
YShlLGYpKSxpYShmdW5jdGlvbihmLGcsaCxpKXt2YXIgaixrLGwsbT1bXSxuPVtdLG89Zy5sZW5n
dGgscD1mfHx2YShifHwiKiIsaC5ub2RlVHlwZT9baF06aCxbXSkscT0hYXx8IWYmJmI/cDp3YShw
LG0sYSxoLGkpLHI9Yz9lfHwoZj9hOm98fGQpP1tdOmc6cTtpZihjJiZjKHEscixoLGkpLGQpe2o9
d2EocixuKSxkKGosW10saCxpKSxrPWoubGVuZ3RoO3doaWxlKGstLSkobD1qW2tdKSYmKHJbbltr
XV09IShxW25ba11dPWwpKX1pZihmKXtpZihlfHxhKXtpZihlKXtqPVtdLGs9ci5sZW5ndGg7d2hp
bGUoay0tKShsPXJba10pJiZqLnB1c2gocVtrXT1sKTtlKG51bGwscj1bXSxqLGkpfWs9ci5sZW5n
dGg7d2hpbGUoay0tKShsPXJba10pJiYoaj1lP0koZixsKTptW2tdKT4tMSYmKGZbal09IShnW2pd
PWwpKX19ZWxzZSByPXdhKHI9PT1nP3Iuc3BsaWNlKG8sci5sZW5ndGgpOnIpLGU/ZShudWxsLGcs
cixpKTpHLmFwcGx5KGcscil9KX1mdW5jdGlvbiB5YShhKXtmb3IodmFyIGIsYyxlLGY9YS5sZW5n
dGgsZz1kLnJlbGF0aXZlW2FbMF0udHlwZV0saD1nfHxkLnJlbGF0aXZlWyIgIl0saT1nPzE6MCxr
PXRhKGZ1bmN0aW9uKGEpe3JldHVybiBhPT09Yn0saCwhMCksbD10YShmdW5jdGlvbihhKXtyZXR1
cm4gSShiLGEpPi0xfSxoLCEwKSxtPVtmdW5jdGlvbihhLGMsZCl7dmFyIGU9IWcmJihkfHxjIT09
ail8fCgoYj1jKS5ub2RlVHlwZT9rKGEsYyxkKTpsKGEsYyxkKSk7cmV0dXJuIGI9bnVsbCxlfV07
aTxmO2krKylpZihjPWQucmVsYXRpdmVbYVtpXS50eXBlXSltPVt0YSh1YShtKSxjKV07ZWxzZXtp
ZihjPWQuZmlsdGVyW2FbaV0udHlwZV0uYXBwbHkobnVsbCxhW2ldLm1hdGNoZXMpLGNbdV0pe2Zv
cihlPSsraTtlPGY7ZSsrKWlmKGQucmVsYXRpdmVbYVtlXS50eXBlXSlicmVhaztyZXR1cm4geGEo
aT4xJiZ1YShtKSxpPjEmJnNhKGEuc2xpY2UoMCxpLTEpLmNvbmNhdCh7dmFsdWU6IiAiPT09YVtp
LTJdLnR5cGU/IioiOiIifSkpLnJlcGxhY2UoUCwiJDEiKSxjLGk8ZSYmeWEoYS5zbGljZShpLGUp
KSxlPGYmJnlhKGE9YS5zbGljZShlKSksZTxmJiZzYShhKSl9bS5wdXNoKGMpfXJldHVybiB1YSht
KX1mdW5jdGlvbiB6YShhLGIpe3ZhciBjPWIubGVuZ3RoPjAsZT1hLmxlbmd0aD4wLGY9ZnVuY3Rp
b24oZixnLGgsaSxrKXt2YXIgbCxvLHEscj0wLHM9IjAiLHQ9ZiYmW10sdT1bXSx2PWoseD1mfHxl
JiZkLmZpbmQuVEFHKCIqIixrKSx5PXcrPW51bGw9PXY/MTpNYXRoLnJhbmRvbSgpfHwuMSx6PXgu
bGVuZ3RoO2ZvcihrJiYoaj1nPT09bnx8Z3x8ayk7cyE9PXomJm51bGwhPShsPXhbc10pO3MrKyl7
aWYoZSYmbCl7bz0wLGd8fGwub3duZXJEb2N1bWVudD09PW58fChtKGwpLGg9IXApO3doaWxlKHE9
YVtvKytdKWlmKHEobCxnfHxuLGgpKXtpLnB1c2gobCk7YnJlYWt9ayYmKHc9eSl9YyYmKChsPSFx
JiZsKSYmci0tLGYmJnQucHVzaChsKSl9aWYocis9cyxjJiZzIT09cil7bz0wO3doaWxlKHE9Yltv
KytdKXEodCx1LGcsaCk7aWYoZil7aWYocj4wKXdoaWxlKHMtLSl0W3NdfHx1W3NdfHwodVtzXT1F
LmNhbGwoaSkpO3U9d2EodSl9Ry5hcHBseShpLHUpLGsmJiFmJiZ1Lmxlbmd0aD4wJiZyK2IubGVu
Z3RoPjEmJmdhLnVuaXF1ZVNvcnQoaSl9cmV0dXJuIGsmJih3PXksaj12KSx0fTtyZXR1cm4gYz9p
YShmKTpmfXJldHVybiBoPWdhLmNvbXBpbGU9ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPVtdLGU9W10s
Zj1BW2ErIiAiXTtpZighZil7Ynx8KGI9ZyhhKSksYz1iLmxlbmd0aDt3aGlsZShjLS0pZj15YShi
W2NdKSxmW3VdP2QucHVzaChmKTplLnB1c2goZik7Zj1BKGEsemEoZSxkKSksZi5zZWxlY3Rvcj1h
fXJldHVybiBmfSxpPWdhLnNlbGVjdD1mdW5jdGlvbihhLGIsYyxlKXt2YXIgZixpLGosayxsLG09
ImZ1bmN0aW9uIj09dHlwZW9mIGEmJmEsbj0hZSYmZyhhPW0uc2VsZWN0b3J8fGEpO2lmKGM9Y3x8
W10sMT09PW4ubGVuZ3RoKXtpZihpPW5bMF09blswXS5zbGljZSgwKSxpLmxlbmd0aD4yJiYiSUQi
PT09KGo9aVswXSkudHlwZSYmOT09PWIubm9kZVR5cGUmJnAmJmQucmVsYXRpdmVbaVsxXS50eXBl
XSl7aWYoYj0oZC5maW5kLklEKGoubWF0Y2hlc1swXS5yZXBsYWNlKF8sYWEpLGIpfHxbXSlbMF0s
IWIpcmV0dXJuIGM7bSYmKGI9Yi5wYXJlbnROb2RlKSxhPWEuc2xpY2UoaS5zaGlmdCgpLnZhbHVl
Lmxlbmd0aCl9Zj1WLm5lZWRzQ29udGV4dC50ZXN0KGEpPzA6aS5sZW5ndGg7d2hpbGUoZi0tKXtp
ZihqPWlbZl0sZC5yZWxhdGl2ZVtrPWoudHlwZV0pYnJlYWs7aWYoKGw9ZC5maW5kW2tdKSYmKGU9
bChqLm1hdGNoZXNbMF0ucmVwbGFjZShfLGFhKSwkLnRlc3QoaVswXS50eXBlKSYmcWEoYi5wYXJl
bnROb2RlKXx8YikpKXtpZihpLnNwbGljZShmLDEpLGE9ZS5sZW5ndGgmJnNhKGkpLCFhKXJldHVy
biBHLmFwcGx5KGMsZSksYzticmVha319fXJldHVybihtfHxoKGEsbikpKGUsYiwhcCxjLCFifHwk
LnRlc3QoYSkmJnFhKGIucGFyZW50Tm9kZSl8fGIpLGN9LGMuc29ydFN0YWJsZT11LnNwbGl0KCIi
KS5zb3J0KEIpLmpvaW4oIiIpPT09dSxjLmRldGVjdER1cGxpY2F0ZXM9ISFsLG0oKSxjLnNvcnRE
ZXRhY2hlZD1qYShmdW5jdGlvbihhKXtyZXR1cm4gMSZhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9u
KG4uY3JlYXRlRWxlbWVudCgiZmllbGRzZXQiKSl9KSxqYShmdW5jdGlvbihhKXtyZXR1cm4gYS5p
bm5lckhUTUw9IjxhIGhyZWY9JyMnPjwvYT4iLCIjIj09PWEuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1
dGUoImhyZWYiKX0pfHxrYSgidHlwZXxocmVmfGhlaWdodHx3aWR0aCIsZnVuY3Rpb24oYSxiLGMp
e2lmKCFjKXJldHVybiBhLmdldEF0dHJpYnV0ZShiLCJ0eXBlIj09PWIudG9Mb3dlckNhc2UoKT8x
OjIpfSksYy5hdHRyaWJ1dGVzJiZqYShmdW5jdGlvbihhKXtyZXR1cm4gYS5pbm5lckhUTUw9Ijxp
bnB1dC8+IixhLmZpcnN0Q2hpbGQuc2V0QXR0cmlidXRlKCJ2YWx1ZSIsIiIpLCIiPT09YS5maXJz
dENoaWxkLmdldEF0dHJpYnV0ZSgidmFsdWUiKX0pfHxrYSgidmFsdWUiLGZ1bmN0aW9uKGEsYixj
KXtpZighYyYmImlucHV0Ij09PWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKSlyZXR1cm4gYS5kZWZh
dWx0VmFsdWV9KSxqYShmdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09YS5nZXRBdHRyaWJ1dGUoImRp
c2FibGVkIil9KXx8a2EoSixmdW5jdGlvbihhLGIsYyl7dmFyIGQ7aWYoIWMpcmV0dXJuIGFbYl09
PT0hMD9iLnRvTG93ZXJDYXNlKCk6KGQ9YS5nZXRBdHRyaWJ1dGVOb2RlKGIpKSYmZC5zcGVjaWZp
ZWQ/ZC52YWx1ZTpudWxsfSksZ2F9KGEpO3IuZmluZD14LHIuZXhwcj14LnNlbGVjdG9ycyxyLmV4
cHJbIjoiXT1yLmV4cHIucHNldWRvcyxyLnVuaXF1ZVNvcnQ9ci51bmlxdWU9eC51bmlxdWVTb3J0
LHIudGV4dD14LmdldFRleHQsci5pc1hNTERvYz14LmlzWE1MLHIuY29udGFpbnM9eC5jb250YWlu
cyxyLmVzY2FwZVNlbGVjdG9yPXguZXNjYXBlO3ZhciB5PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1b
XSxlPXZvaWQgMCE9PWM7d2hpbGUoKGE9YVtiXSkmJjkhPT1hLm5vZGVUeXBlKWlmKDE9PT1hLm5v
ZGVUeXBlKXtpZihlJiZyKGEpLmlzKGMpKWJyZWFrO2QucHVzaChhKX1yZXR1cm4gZH0sej1mdW5j
dGlvbihhLGIpe2Zvcih2YXIgYz1bXTthO2E9YS5uZXh0U2libGluZykxPT09YS5ub2RlVHlwZSYm
YSE9PWImJmMucHVzaChhKTtyZXR1cm4gY30sQT1yLmV4cHIubWF0Y2gubmVlZHNDb250ZXh0LEI9
L148KFthLXpdW15cL1wwPjpceDIwXHRcclxuXGZdKilbXHgyMFx0XHJcblxmXSpcLz8+KD86PFwv
XDE+fCkkL2ksQz0vXi5bXjojXFtcLixdKiQvO2Z1bmN0aW9uIEQoYSxiLGMpe3JldHVybiByLmlz
RnVuY3Rpb24oYik/ci5ncmVwKGEsZnVuY3Rpb24oYSxkKXtyZXR1cm4hIWIuY2FsbChhLGQsYSkh
PT1jfSk6Yi5ub2RlVHlwZT9yLmdyZXAoYSxmdW5jdGlvbihhKXtyZXR1cm4gYT09PWIhPT1jfSk6
InN0cmluZyIhPXR5cGVvZiBiP3IuZ3JlcChhLGZ1bmN0aW9uKGEpe3JldHVybiBpLmNhbGwoYixh
KT4tMSE9PWN9KTpDLnRlc3QoYik/ci5maWx0ZXIoYixhLGMpOihiPXIuZmlsdGVyKGIsYSksci5n
cmVwKGEsZnVuY3Rpb24oYSl7cmV0dXJuIGkuY2FsbChiLGEpPi0xIT09YyYmMT09PWEubm9kZVR5
cGV9KSl9ci5maWx0ZXI9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWJbMF07cmV0dXJuIGMmJihhPSI6
bm90KCIrYSsiKSIpLDE9PT1iLmxlbmd0aCYmMT09PWQubm9kZVR5cGU/ci5maW5kLm1hdGNoZXNT
ZWxlY3RvcihkLGEpP1tkXTpbXTpyLmZpbmQubWF0Y2hlcyhhLHIuZ3JlcChiLGZ1bmN0aW9uKGEp
e3JldHVybiAxPT09YS5ub2RlVHlwZX0pKX0sci5mbi5leHRlbmQoe2ZpbmQ6ZnVuY3Rpb24oYSl7
dmFyIGIsYyxkPXRoaXMubGVuZ3RoLGU9dGhpcztpZigic3RyaW5nIiE9dHlwZW9mIGEpcmV0dXJu
IHRoaXMucHVzaFN0YWNrKHIoYSkuZmlsdGVyKGZ1bmN0aW9uKCl7Zm9yKGI9MDtiPGQ7YisrKWlm
KHIuY29udGFpbnMoZVtiXSx0aGlzKSlyZXR1cm4hMH0pKTtmb3IoYz10aGlzLnB1c2hTdGFjayhb
XSksYj0wO2I8ZDtiKyspci5maW5kKGEsZVtiXSxjKTtyZXR1cm4gZD4xP3IudW5pcXVlU29ydChj
KTpjfSxmaWx0ZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKEQodGhpcyxhfHxb
XSwhMSkpfSxub3Q6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKEQodGhpcyxhfHxb
XSwhMCkpfSxpczpmdW5jdGlvbihhKXtyZXR1cm4hIUQodGhpcywic3RyaW5nIj09dHlwZW9mIGEm
JkEudGVzdChhKT9yKGEpOmF8fFtdLCExKS5sZW5ndGh9fSk7dmFyIEUsRj0vXig/OlxzKig8W1x3
XFddKz4pW14+XSp8IyhbXHctXSspKSQvLEc9ci5mbi5pbml0PWZ1bmN0aW9uKGEsYixjKXt2YXIg
ZSxmO2lmKCFhKXJldHVybiB0aGlzO2lmKGM9Y3x8RSwic3RyaW5nIj09dHlwZW9mIGEpe2lmKGU9
IjwiPT09YVswXSYmIj4iPT09YVthLmxlbmd0aC0xXSYmYS5sZW5ndGg+PTM/W251bGwsYSxudWxs
XTpGLmV4ZWMoYSksIWV8fCFlWzFdJiZiKXJldHVybiFifHxiLmpxdWVyeT8oYnx8YykuZmluZChh
KTp0aGlzLmNvbnN0cnVjdG9yKGIpLmZpbmQoYSk7aWYoZVsxXSl7aWYoYj1iIGluc3RhbmNlb2Yg
cj9iWzBdOmIsci5tZXJnZSh0aGlzLHIucGFyc2VIVE1MKGVbMV0sYiYmYi5ub2RlVHlwZT9iLm93
bmVyRG9jdW1lbnR8fGI6ZCwhMCkpLEIudGVzdChlWzFdKSYmci5pc1BsYWluT2JqZWN0KGIpKWZv
cihlIGluIGIpci5pc0Z1bmN0aW9uKHRoaXNbZV0pP3RoaXNbZV0oYltlXSk6dGhpcy5hdHRyKGUs
YltlXSk7cmV0dXJuIHRoaXN9cmV0dXJuIGY9ZC5nZXRFbGVtZW50QnlJZChlWzJdKSxmJiYodGhp
c1swXT1mLHRoaXMubGVuZ3RoPTEpLHRoaXN9cmV0dXJuIGEubm9kZVR5cGU/KHRoaXNbMF09YSx0
aGlzLmxlbmd0aD0xLHRoaXMpOnIuaXNGdW5jdGlvbihhKT92b2lkIDAhPT1jLnJlYWR5P2MucmVh
ZHkoYSk6YShyKTpyLm1ha2VBcnJheShhLHRoaXMpfTtHLnByb3RvdHlwZT1yLmZuLEU9cihkKTt2
YXIgSD0vXig/OnBhcmVudHN8cHJldig/OlVudGlsfEFsbCkpLyxJPXtjaGlsZHJlbjohMCxjb250
ZW50czohMCxuZXh0OiEwLHByZXY6ITB9O3IuZm4uZXh0ZW5kKHtoYXM6ZnVuY3Rpb24oYSl7dmFy
IGI9cihhLHRoaXMpLGM9Yi5sZW5ndGg7cmV0dXJuIHRoaXMuZmlsdGVyKGZ1bmN0aW9uKCl7Zm9y
KHZhciBhPTA7YTxjO2ErKylpZihyLmNvbnRhaW5zKHRoaXMsYlthXSkpcmV0dXJuITB9KX0sY2xv
c2VzdDpmdW5jdGlvbihhLGIpe3ZhciBjLGQ9MCxlPXRoaXMubGVuZ3RoLGY9W10sZz0ic3RyaW5n
IiE9dHlwZW9mIGEmJnIoYSk7aWYoIUEudGVzdChhKSlmb3IoO2Q8ZTtkKyspZm9yKGM9dGhpc1tk
XTtjJiZjIT09YjtjPWMucGFyZW50Tm9kZSlpZihjLm5vZGVUeXBlPDExJiYoZz9nLmluZGV4KGMp
Pi0xOjE9PT1jLm5vZGVUeXBlJiZyLmZpbmQubWF0Y2hlc1NlbGVjdG9yKGMsYSkpKXtmLnB1c2go
Yyk7YnJlYWt9cmV0dXJuIHRoaXMucHVzaFN0YWNrKGYubGVuZ3RoPjE/ci51bmlxdWVTb3J0KGYp
OmYpfSxpbmRleDpmdW5jdGlvbihhKXtyZXR1cm4gYT8ic3RyaW5nIj09dHlwZW9mIGE/aS5jYWxs
KHIoYSksdGhpc1swXSk6aS5jYWxsKHRoaXMsYS5qcXVlcnk/YVswXTphKTp0aGlzWzBdJiZ0aGlz
WzBdLnBhcmVudE5vZGU/dGhpcy5maXJzdCgpLnByZXZBbGwoKS5sZW5ndGg6LTF9LGFkZDpmdW5j
dGlvbihhLGIpe3JldHVybiB0aGlzLnB1c2hTdGFjayhyLnVuaXF1ZVNvcnQoci5tZXJnZSh0aGlz
LmdldCgpLHIoYSxiKSkpKX0sYWRkQmFjazpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5hZGQobnVs
bD09YT90aGlzLnByZXZPYmplY3Q6dGhpcy5wcmV2T2JqZWN0LmZpbHRlcihhKSl9fSk7ZnVuY3Rp
b24gSihhLGIpe3doaWxlKChhPWFbYl0pJiYxIT09YS5ub2RlVHlwZSk7cmV0dXJuIGF9ci5lYWNo
KHtwYXJlbnQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5wYXJlbnROb2RlO3JldHVybiBiJiYxMSE9PWIu
bm9kZVR5cGU/YjpudWxsfSxwYXJlbnRzOmZ1bmN0aW9uKGEpe3JldHVybiB5KGEsInBhcmVudE5v
ZGUiKX0scGFyZW50c1VudGlsOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4geShhLCJwYXJlbnROb2Rl
IixjKX0sbmV4dDpmdW5jdGlvbihhKXtyZXR1cm4gSihhLCJuZXh0U2libGluZyIpfSxwcmV2OmZ1
bmN0aW9uKGEpe3JldHVybiBKKGEsInByZXZpb3VzU2libGluZyIpfSxuZXh0QWxsOmZ1bmN0aW9u
KGEpe3JldHVybiB5KGEsIm5leHRTaWJsaW5nIil9LHByZXZBbGw6ZnVuY3Rpb24oYSl7cmV0dXJu
IHkoYSwicHJldmlvdXNTaWJsaW5nIil9LG5leHRVbnRpbDpmdW5jdGlvbihhLGIsYyl7cmV0dXJu
IHkoYSwibmV4dFNpYmxpbmciLGMpfSxwcmV2VW50aWw6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiB5
KGEsInByZXZpb3VzU2libGluZyIsYyl9LHNpYmxpbmdzOmZ1bmN0aW9uKGEpe3JldHVybiB6KChh
LnBhcmVudE5vZGV8fHt9KS5maXJzdENoaWxkLGEpfSxjaGlsZHJlbjpmdW5jdGlvbihhKXtyZXR1
cm4geihhLmZpcnN0Q2hpbGQpfSxjb250ZW50czpmdW5jdGlvbihhKXtyZXR1cm4gYS5jb250ZW50
RG9jdW1lbnR8fHIubWVyZ2UoW10sYS5jaGlsZE5vZGVzKX19LGZ1bmN0aW9uKGEsYil7ci5mblth
XT1mdW5jdGlvbihjLGQpe3ZhciBlPXIubWFwKHRoaXMsYixjKTtyZXR1cm4iVW50aWwiIT09YS5z
bGljZSgtNSkmJihkPWMpLGQmJiJzdHJpbmciPT10eXBlb2YgZCYmKGU9ci5maWx0ZXIoZCxlKSks
dGhpcy5sZW5ndGg+MSYmKElbYV18fHIudW5pcXVlU29ydChlKSxILnRlc3QoYSkmJmUucmV2ZXJz
ZSgpKSx0aGlzLnB1c2hTdGFjayhlKX19KTt2YXIgSz0vW15ceDIwXHRcclxuXGZdKy9nO2Z1bmN0
aW9uIEwoYSl7dmFyIGI9e307cmV0dXJuIHIuZWFjaChhLm1hdGNoKEspfHxbXSxmdW5jdGlvbihh
LGMpe2JbY109ITB9KSxifXIuQ2FsbGJhY2tzPWZ1bmN0aW9uKGEpe2E9InN0cmluZyI9PXR5cGVv
ZiBhP0woYSk6ci5leHRlbmQoe30sYSk7dmFyIGIsYyxkLGUsZj1bXSxnPVtdLGg9LTEsaT1mdW5j
dGlvbigpe2ZvcihlPWEub25jZSxkPWI9ITA7Zy5sZW5ndGg7aD0tMSl7Yz1nLnNoaWZ0KCk7d2hp
bGUoKytoPGYubGVuZ3RoKWZbaF0uYXBwbHkoY1swXSxjWzFdKT09PSExJiZhLnN0b3BPbkZhbHNl
JiYoaD1mLmxlbmd0aCxjPSExKX1hLm1lbW9yeXx8KGM9ITEpLGI9ITEsZSYmKGY9Yz9bXToiIil9
LGo9e2FkZDpmdW5jdGlvbigpe3JldHVybiBmJiYoYyYmIWImJihoPWYubGVuZ3RoLTEsZy5wdXNo
KGMpKSxmdW5jdGlvbiBkKGIpe3IuZWFjaChiLGZ1bmN0aW9uKGIsYyl7ci5pc0Z1bmN0aW9uKGMp
P2EudW5pcXVlJiZqLmhhcyhjKXx8Zi5wdXNoKGMpOmMmJmMubGVuZ3RoJiYic3RyaW5nIiE9PXIu
dHlwZShjKSYmZChjKX0pfShhcmd1bWVudHMpLGMmJiFiJiZpKCkpLHRoaXN9LHJlbW92ZTpmdW5j
dGlvbigpe3JldHVybiByLmVhY2goYXJndW1lbnRzLGZ1bmN0aW9uKGEsYil7dmFyIGM7d2hpbGUo
KGM9ci5pbkFycmF5KGIsZixjKSk+LTEpZi5zcGxpY2UoYywxKSxjPD1oJiZoLS19KSx0aGlzfSxo
YXM6ZnVuY3Rpb24oYSl7cmV0dXJuIGE/ci5pbkFycmF5KGEsZik+LTE6Zi5sZW5ndGg+MH0sZW1w
dHk6ZnVuY3Rpb24oKXtyZXR1cm4gZiYmKGY9W10pLHRoaXN9LGRpc2FibGU6ZnVuY3Rpb24oKXty
ZXR1cm4gZT1nPVtdLGY9Yz0iIix0aGlzfSxkaXNhYmxlZDpmdW5jdGlvbigpe3JldHVybiFmfSxs
b2NrOmZ1bmN0aW9uKCl7cmV0dXJuIGU9Zz1bXSxjfHxifHwoZj1jPSIiKSx0aGlzfSxsb2NrZWQ6
ZnVuY3Rpb24oKXtyZXR1cm4hIWV9LGZpcmVXaXRoOmZ1bmN0aW9uKGEsYyl7cmV0dXJuIGV8fChj
PWN8fFtdLGM9W2EsYy5zbGljZT9jLnNsaWNlKCk6Y10sZy5wdXNoKGMpLGJ8fGkoKSksdGhpc30s
ZmlyZTpmdW5jdGlvbigpe3JldHVybiBqLmZpcmVXaXRoKHRoaXMsYXJndW1lbnRzKSx0aGlzfSxm
aXJlZDpmdW5jdGlvbigpe3JldHVybiEhZH19O3JldHVybiBqfTtmdW5jdGlvbiBNKGEpe3JldHVy
biBhfWZ1bmN0aW9uIE4oYSl7dGhyb3cgYX1mdW5jdGlvbiBPKGEsYixjKXt2YXIgZDt0cnl7YSYm
ci5pc0Z1bmN0aW9uKGQ9YS5wcm9taXNlKT9kLmNhbGwoYSkuZG9uZShiKS5mYWlsKGMpOmEmJnIu
aXNGdW5jdGlvbihkPWEudGhlbik/ZC5jYWxsKGEsYixjKTpiLmNhbGwodm9pZCAwLGEpfWNhdGNo
KGEpe2MuY2FsbCh2b2lkIDAsYSl9fXIuZXh0ZW5kKHtEZWZlcnJlZDpmdW5jdGlvbihiKXt2YXIg
Yz1bWyJub3RpZnkiLCJwcm9ncmVzcyIsci5DYWxsYmFja3MoIm1lbW9yeSIpLHIuQ2FsbGJhY2tz
KCJtZW1vcnkiKSwyXSxbInJlc29sdmUiLCJkb25lIixyLkNhbGxiYWNrcygib25jZSBtZW1vcnki
KSxyLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwwLCJyZXNvbHZlZCJdLFsicmVqZWN0IiwiZmFp
bCIsci5DYWxsYmFja3MoIm9uY2UgbWVtb3J5Iiksci5DYWxsYmFja3MoIm9uY2UgbWVtb3J5Iiks
MSwicmVqZWN0ZWQiXV0sZD0icGVuZGluZyIsZT17c3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gZH0s
YWx3YXlzOmZ1bmN0aW9uKCl7cmV0dXJuIGYuZG9uZShhcmd1bWVudHMpLmZhaWwoYXJndW1lbnRz
KSx0aGlzfSwiY2F0Y2giOmZ1bmN0aW9uKGEpe3JldHVybiBlLnRoZW4obnVsbCxhKX0scGlwZTpm
dW5jdGlvbigpe3ZhciBhPWFyZ3VtZW50cztyZXR1cm4gci5EZWZlcnJlZChmdW5jdGlvbihiKXty
LmVhY2goYyxmdW5jdGlvbihjLGQpe3ZhciBlPXIuaXNGdW5jdGlvbihhW2RbNF1dKSYmYVtkWzRd
XTtmW2RbMV1dKGZ1bmN0aW9uKCl7dmFyIGE9ZSYmZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7YSYm
ci5pc0Z1bmN0aW9uKGEucHJvbWlzZSk/YS5wcm9taXNlKCkucHJvZ3Jlc3MoYi5ub3RpZnkpLmRv
bmUoYi5yZXNvbHZlKS5mYWlsKGIucmVqZWN0KTpiW2RbMF0rIldpdGgiXSh0aGlzLGU/W2FdOmFy
Z3VtZW50cyl9KX0pLGE9bnVsbH0pLnByb21pc2UoKX0sdGhlbjpmdW5jdGlvbihiLGQsZSl7dmFy
IGY9MDtmdW5jdGlvbiBnKGIsYyxkLGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciBoPXRoaXMsaT1h
cmd1bWVudHMsaj1mdW5jdGlvbigpe3ZhciBhLGo7aWYoIShiPGYpKXtpZihhPWQuYXBwbHkoaCxp
KSxhPT09Yy5wcm9taXNlKCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiVGhlbmFibGUgc2VsZi1yZXNv
bHV0aW9uIik7aj1hJiYoIm9iamVjdCI9PXR5cGVvZiBhfHwiZnVuY3Rpb24iPT10eXBlb2YgYSkm
JmEudGhlbixyLmlzRnVuY3Rpb24oaik/ZT9qLmNhbGwoYSxnKGYsYyxNLGUpLGcoZixjLE4sZSkp
OihmKyssai5jYWxsKGEsZyhmLGMsTSxlKSxnKGYsYyxOLGUpLGcoZixjLE0sYy5ub3RpZnlXaXRo
KSkpOihkIT09TSYmKGg9dm9pZCAwLGk9W2FdKSwoZXx8Yy5yZXNvbHZlV2l0aCkoaCxpKSl9fSxr
PWU/ajpmdW5jdGlvbigpe3RyeXtqKCl9Y2F0Y2goYSl7ci5EZWZlcnJlZC5leGNlcHRpb25Ib29r
JiZyLkRlZmVycmVkLmV4Y2VwdGlvbkhvb2soYSxrLnN0YWNrVHJhY2UpLGIrMT49ZiYmKGQhPT1O
JiYoaD12b2lkIDAsaT1bYV0pLGMucmVqZWN0V2l0aChoLGkpKX19O2I/aygpOihyLkRlZmVycmVk
LmdldFN0YWNrSG9vayYmKGsuc3RhY2tUcmFjZT1yLkRlZmVycmVkLmdldFN0YWNrSG9vaygpKSxh
LnNldFRpbWVvdXQoaykpfX1yZXR1cm4gci5EZWZlcnJlZChmdW5jdGlvbihhKXtjWzBdWzNdLmFk
ZChnKDAsYSxyLmlzRnVuY3Rpb24oZSk/ZTpNLGEubm90aWZ5V2l0aCkpLGNbMV1bM10uYWRkKGco
MCxhLHIuaXNGdW5jdGlvbihiKT9iOk0pKSxjWzJdWzNdLmFkZChnKDAsYSxyLmlzRnVuY3Rpb24o
ZCk/ZDpOKSl9KS5wcm9taXNlKCl9LHByb21pc2U6ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGwhPWE/
ci5leHRlbmQoYSxlKTplfX0sZj17fTtyZXR1cm4gci5lYWNoKGMsZnVuY3Rpb24oYSxiKXt2YXIg
Zz1iWzJdLGg9Yls1XTtlW2JbMV1dPWcuYWRkLGgmJmcuYWRkKGZ1bmN0aW9uKCl7ZD1ofSxjWzMt
YV1bMl0uZGlzYWJsZSxjWzBdWzJdLmxvY2spLGcuYWRkKGJbM10uZmlyZSksZltiWzBdXT1mdW5j
dGlvbigpe3JldHVybiBmW2JbMF0rIldpdGgiXSh0aGlzPT09Zj92b2lkIDA6dGhpcyxhcmd1bWVu
dHMpLHRoaXN9LGZbYlswXSsiV2l0aCJdPWcuZmlyZVdpdGh9KSxlLnByb21pc2UoZiksYiYmYi5j
YWxsKGYsZiksZn0sd2hlbjpmdW5jdGlvbihhKXt2YXIgYj1hcmd1bWVudHMubGVuZ3RoLGM9Yixk
PUFycmF5KGMpLGU9Zi5jYWxsKGFyZ3VtZW50cyksZz1yLkRlZmVycmVkKCksaD1mdW5jdGlvbihh
KXtyZXR1cm4gZnVuY3Rpb24oYyl7ZFthXT10aGlzLGVbYV09YXJndW1lbnRzLmxlbmd0aD4xP2Yu
Y2FsbChhcmd1bWVudHMpOmMsLS1ifHxnLnJlc29sdmVXaXRoKGQsZSl9fTtpZihiPD0xJiYoTyhh
LGcuZG9uZShoKGMpKS5yZXNvbHZlLGcucmVqZWN0KSwicGVuZGluZyI9PT1nLnN0YXRlKCl8fHIu
aXNGdW5jdGlvbihlW2NdJiZlW2NdLnRoZW4pKSlyZXR1cm4gZy50aGVuKCk7d2hpbGUoYy0tKU8o
ZVtjXSxoKGMpLGcucmVqZWN0KTtyZXR1cm4gZy5wcm9taXNlKCl9fSk7dmFyIFA9L14oRXZhbHxJ
bnRlcm5hbHxSYW5nZXxSZWZlcmVuY2V8U3ludGF4fFR5cGV8VVJJKUVycm9yJC87ci5EZWZlcnJl
ZC5leGNlcHRpb25Ib29rPWZ1bmN0aW9uKGIsYyl7YS5jb25zb2xlJiZhLmNvbnNvbGUud2FybiYm
YiYmUC50ZXN0KGIubmFtZSkmJmEuY29uc29sZS53YXJuKCJqUXVlcnkuRGVmZXJyZWQgZXhjZXB0
aW9uOiAiK2IubWVzc2FnZSxiLnN0YWNrLGMpfSxyLnJlYWR5RXhjZXB0aW9uPWZ1bmN0aW9uKGIp
e2Euc2V0VGltZW91dChmdW5jdGlvbigpe3Rocm93IGJ9KX07dmFyIFE9ci5EZWZlcnJlZCgpO3Iu
Zm4ucmVhZHk9ZnVuY3Rpb24oYSl7cmV0dXJuIFEudGhlbihhKVsiY2F0Y2giXShmdW5jdGlvbihh
KXtyLnJlYWR5RXhjZXB0aW9uKGEpfSksdGhpc30sci5leHRlbmQoe2lzUmVhZHk6ITEscmVhZHlX
YWl0OjEsaG9sZFJlYWR5OmZ1bmN0aW9uKGEpe2E/ci5yZWFkeVdhaXQrKzpyLnJlYWR5KCEwKX0s
cmVhZHk6ZnVuY3Rpb24oYSl7KGE9PT0hMD8tLXIucmVhZHlXYWl0OnIuaXNSZWFkeSl8fChyLmlz
UmVhZHk9ITAsYSE9PSEwJiYtLXIucmVhZHlXYWl0PjB8fFEucmVzb2x2ZVdpdGgoZCxbcl0pKX19
KSxyLnJlYWR5LnRoZW49US50aGVuO2Z1bmN0aW9uIFIoKXtkLnJlbW92ZUV2ZW50TGlzdGVuZXIo
IkRPTUNvbnRlbnRMb2FkZWQiLFIpLAorYS5yZW1vdmVFdmVudExpc3RlbmVyKCJsb2FkIixSKSxy
LnJlYWR5KCl9ImNvbXBsZXRlIj09PWQucmVhZHlTdGF0ZXx8ImxvYWRpbmciIT09ZC5yZWFkeVN0
YXRlJiYhZC5kb2N1bWVudEVsZW1lbnQuZG9TY3JvbGw/YS5zZXRUaW1lb3V0KHIucmVhZHkpOihk
LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLFIpLGEuYWRkRXZlbnRMaXN0ZW5l
cigibG9hZCIsUikpO3ZhciBTPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcpe3ZhciBoPTAsaT1hLmxl
bmd0aCxqPW51bGw9PWM7aWYoIm9iamVjdCI9PT1yLnR5cGUoYykpe2U9ITA7Zm9yKGggaW4gYylT
KGEsYixoLGNbaF0sITAsZixnKX1lbHNlIGlmKHZvaWQgMCE9PWQmJihlPSEwLHIuaXNGdW5jdGlv
bihkKXx8KGc9ITApLGomJihnPyhiLmNhbGwoYSxkKSxiPW51bGwpOihqPWIsYj1mdW5jdGlvbihh
LGIsYyl7cmV0dXJuIGouY2FsbChyKGEpLGMpfSkpLGIpKWZvcig7aDxpO2grKyliKGFbaF0sYyxn
P2Q6ZC5jYWxsKGFbaF0saCxiKGFbaF0sYykpKTtyZXR1cm4gZT9hOmo/Yi5jYWxsKGEpOmk/Yihh
WzBdLGMpOmZ9LFQ9ZnVuY3Rpb24oYSl7cmV0dXJuIDE9PT1hLm5vZGVUeXBlfHw5PT09YS5ub2Rl
VHlwZXx8ISthLm5vZGVUeXBlfTtmdW5jdGlvbiBVKCl7dGhpcy5leHBhbmRvPXIuZXhwYW5kbytV
LnVpZCsrfVUudWlkPTEsVS5wcm90b3R5cGU9e2NhY2hlOmZ1bmN0aW9uKGEpe3ZhciBiPWFbdGhp
cy5leHBhbmRvXTtyZXR1cm4gYnx8KGI9e30sVChhKSYmKGEubm9kZVR5cGU/YVt0aGlzLmV4cGFu
ZG9dPWI6T2JqZWN0LmRlZmluZVByb3BlcnR5KGEsdGhpcy5leHBhbmRvLHt2YWx1ZTpiLGNvbmZp
Z3VyYWJsZTohMH0pKSksYn0sc2V0OmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlPXRoaXMuY2FjaGUo
YSk7aWYoInN0cmluZyI9PXR5cGVvZiBiKWVbci5jYW1lbENhc2UoYildPWM7ZWxzZSBmb3IoZCBp
biBiKWVbci5jYW1lbENhc2UoZCldPWJbZF07cmV0dXJuIGV9LGdldDpmdW5jdGlvbihhLGIpe3Jl
dHVybiB2b2lkIDA9PT1iP3RoaXMuY2FjaGUoYSk6YVt0aGlzLmV4cGFuZG9dJiZhW3RoaXMuZXhw
YW5kb11bci5jYW1lbENhc2UoYildfSxhY2Nlc3M6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiB2b2lk
IDA9PT1ifHxiJiYic3RyaW5nIj09dHlwZW9mIGImJnZvaWQgMD09PWM/dGhpcy5nZXQoYSxiKToo
dGhpcy5zZXQoYSxiLGMpLHZvaWQgMCE9PWM/YzpiKX0scmVtb3ZlOmZ1bmN0aW9uKGEsYil7dmFy
IGMsZD1hW3RoaXMuZXhwYW5kb107aWYodm9pZCAwIT09ZCl7aWYodm9pZCAwIT09Yil7ci5pc0Fy
cmF5KGIpP2I9Yi5tYXAoci5jYW1lbENhc2UpOihiPXIuY2FtZWxDYXNlKGIpLGI9YiBpbiBkP1ti
XTpiLm1hdGNoKEspfHxbXSksYz1iLmxlbmd0aDt3aGlsZShjLS0pZGVsZXRlIGRbYltjXV19KHZv
aWQgMD09PWJ8fHIuaXNFbXB0eU9iamVjdChkKSkmJihhLm5vZGVUeXBlP2FbdGhpcy5leHBhbmRv
XT12b2lkIDA6ZGVsZXRlIGFbdGhpcy5leHBhbmRvXSl9fSxoYXNEYXRhOmZ1bmN0aW9uKGEpe3Zh
ciBiPWFbdGhpcy5leHBhbmRvXTtyZXR1cm4gdm9pZCAwIT09YiYmIXIuaXNFbXB0eU9iamVjdChi
KX19O3ZhciBWPW5ldyBVLFc9bmV3IFUsWD0vXig/Olx7W1x3XFddKlx9fFxbW1x3XFddKlxdKSQv
LFk9L1tBLVpdL2c7ZnVuY3Rpb24gWihhKXtyZXR1cm4idHJ1ZSI9PT1hfHwiZmFsc2UiIT09YSYm
KCJudWxsIj09PWE/bnVsbDphPT09K2ErIiI/K2E6WC50ZXN0KGEpP0pTT04ucGFyc2UoYSk6YSl9
ZnVuY3Rpb24gJChhLGIsYyl7dmFyIGQ7aWYodm9pZCAwPT09YyYmMT09PWEubm9kZVR5cGUpaWYo
ZD0iZGF0YS0iK2IucmVwbGFjZShZLCItJCYiKS50b0xvd2VyQ2FzZSgpLGM9YS5nZXRBdHRyaWJ1
dGUoZCksInN0cmluZyI9PXR5cGVvZiBjKXt0cnl7Yz1aKGMpfWNhdGNoKGUpe31XLnNldChhLGIs
Yyl9ZWxzZSBjPXZvaWQgMDtyZXR1cm4gY31yLmV4dGVuZCh7aGFzRGF0YTpmdW5jdGlvbihhKXty
ZXR1cm4gVy5oYXNEYXRhKGEpfHxWLmhhc0RhdGEoYSl9LGRhdGE6ZnVuY3Rpb24oYSxiLGMpe3Jl
dHVybiBXLmFjY2VzcyhhLGIsYyl9LHJlbW92ZURhdGE6ZnVuY3Rpb24oYSxiKXtXLnJlbW92ZShh
LGIpfSxfZGF0YTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIFYuYWNjZXNzKGEsYixjKX0sX3JlbW92
ZURhdGE6ZnVuY3Rpb24oYSxiKXtWLnJlbW92ZShhLGIpfX0pLHIuZm4uZXh0ZW5kKHtkYXRhOmZ1
bmN0aW9uKGEsYil7dmFyIGMsZCxlLGY9dGhpc1swXSxnPWYmJmYuYXR0cmlidXRlcztpZih2b2lk
IDA9PT1hKXtpZih0aGlzLmxlbmd0aCYmKGU9Vy5nZXQoZiksMT09PWYubm9kZVR5cGUmJiFWLmdl
dChmLCJoYXNEYXRhQXR0cnMiKSkpe2M9Zy5sZW5ndGg7d2hpbGUoYy0tKWdbY10mJihkPWdbY10u
bmFtZSwwPT09ZC5pbmRleE9mKCJkYXRhLSIpJiYoZD1yLmNhbWVsQ2FzZShkLnNsaWNlKDUpKSwk
KGYsZCxlW2RdKSkpO1Yuc2V0KGYsImhhc0RhdGFBdHRycyIsITApfXJldHVybiBlfXJldHVybiJv
YmplY3QiPT10eXBlb2YgYT90aGlzLmVhY2goZnVuY3Rpb24oKXtXLnNldCh0aGlzLGEpfSk6Uyh0
aGlzLGZ1bmN0aW9uKGIpe3ZhciBjO2lmKGYmJnZvaWQgMD09PWIpe2lmKGM9Vy5nZXQoZixhKSx2
b2lkIDAhPT1jKXJldHVybiBjO2lmKGM9JChmLGEpLHZvaWQgMCE9PWMpcmV0dXJuIGN9ZWxzZSB0
aGlzLmVhY2goZnVuY3Rpb24oKXtXLnNldCh0aGlzLGEsYil9KX0sbnVsbCxiLGFyZ3VtZW50cy5s
ZW5ndGg+MSxudWxsLCEwKX0scmVtb3ZlRGF0YTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNo
KGZ1bmN0aW9uKCl7Vy5yZW1vdmUodGhpcyxhKX0pfX0pLHIuZXh0ZW5kKHtxdWV1ZTpmdW5jdGlv
bihhLGIsYyl7dmFyIGQ7aWYoYSlyZXR1cm4gYj0oYnx8ImZ4IikrInF1ZXVlIixkPVYuZ2V0KGEs
YiksYyYmKCFkfHxyLmlzQXJyYXkoYyk/ZD1WLmFjY2VzcyhhLGIsci5tYWtlQXJyYXkoYykpOmQu
cHVzaChjKSksZHx8W119LGRlcXVldWU6ZnVuY3Rpb24oYSxiKXtiPWJ8fCJmeCI7dmFyIGM9ci5x
dWV1ZShhLGIpLGQ9Yy5sZW5ndGgsZT1jLnNoaWZ0KCksZj1yLl9xdWV1ZUhvb2tzKGEsYiksZz1m
dW5jdGlvbigpe3IuZGVxdWV1ZShhLGIpfTsiaW5wcm9ncmVzcyI9PT1lJiYoZT1jLnNoaWZ0KCks
ZC0tKSxlJiYoImZ4Ij09PWImJmMudW5zaGlmdCgiaW5wcm9ncmVzcyIpLGRlbGV0ZSBmLnN0b3As
ZS5jYWxsKGEsZyxmKSksIWQmJmYmJmYuZW1wdHkuZmlyZSgpfSxfcXVldWVIb29rczpmdW5jdGlv
bihhLGIpe3ZhciBjPWIrInF1ZXVlSG9va3MiO3JldHVybiBWLmdldChhLGMpfHxWLmFjY2Vzcyhh
LGMse2VtcHR5OnIuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLmFkZChmdW5jdGlvbigpe1YucmVt
b3ZlKGEsW2IrInF1ZXVlIixjXSl9KX0pfX0pLHIuZm4uZXh0ZW5kKHtxdWV1ZTpmdW5jdGlvbihh
LGIpe3ZhciBjPTI7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBhJiYoYj1hLGE9ImZ4IixjLS0pLGFy
Z3VtZW50cy5sZW5ndGg8Yz9yLnF1ZXVlKHRoaXNbMF0sYSk6dm9pZCAwPT09Yj90aGlzOnRoaXMu
ZWFjaChmdW5jdGlvbigpe3ZhciBjPXIucXVldWUodGhpcyxhLGIpO3IuX3F1ZXVlSG9va3ModGhp
cyxhKSwiZngiPT09YSYmImlucHJvZ3Jlc3MiIT09Y1swXSYmci5kZXF1ZXVlKHRoaXMsYSl9KX0s
ZGVxdWV1ZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ci5kZXF1ZXVl
KHRoaXMsYSl9KX0sY2xlYXJRdWV1ZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5xdWV1ZShhfHwi
ZngiLFtdKX0scHJvbWlzZTpmdW5jdGlvbihhLGIpe3ZhciBjLGQ9MSxlPXIuRGVmZXJyZWQoKSxm
PXRoaXMsZz10aGlzLmxlbmd0aCxoPWZ1bmN0aW9uKCl7LS1kfHxlLnJlc29sdmVXaXRoKGYsW2Zd
KX07InN0cmluZyIhPXR5cGVvZiBhJiYoYj1hLGE9dm9pZCAwKSxhPWF8fCJmeCI7d2hpbGUoZy0t
KWM9Vi5nZXQoZltnXSxhKyJxdWV1ZUhvb2tzIiksYyYmYy5lbXB0eSYmKGQrKyxjLmVtcHR5LmFk
ZChoKSk7cmV0dXJuIGgoKSxlLnByb21pc2UoYil9fSk7dmFyIF89L1srLV0/KD86XGQqXC58KVxk
Kyg/OltlRV1bKy1dP1xkK3wpLy5zb3VyY2UsYWE9bmV3IFJlZ0V4cCgiXig/OihbKy1dKT18KSgi
K18rIikoW2EteiVdKikkIiwiaSIpLGJhPVsiVG9wIiwiUmlnaHQiLCJCb3R0b20iLCJMZWZ0Il0s
Y2E9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT1ifHxhLCJub25lIj09PWEuc3R5bGUuZGlzcGxheXx8
IiI9PT1hLnN0eWxlLmRpc3BsYXkmJnIuY29udGFpbnMoYS5vd25lckRvY3VtZW50LGEpJiYibm9u
ZSI9PT1yLmNzcyhhLCJkaXNwbGF5Iil9LGRhPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlLGYsZz17
fTtmb3IoZiBpbiBiKWdbZl09YS5zdHlsZVtmXSxhLnN0eWxlW2ZdPWJbZl07ZT1jLmFwcGx5KGEs
ZHx8W10pO2ZvcihmIGluIGIpYS5zdHlsZVtmXT1nW2ZdO3JldHVybiBlfTtmdW5jdGlvbiBlYShh
LGIsYyxkKXt2YXIgZSxmPTEsZz0yMCxoPWQ/ZnVuY3Rpb24oKXtyZXR1cm4gZC5jdXIoKX06ZnVu
Y3Rpb24oKXtyZXR1cm4gci5jc3MoYSxiLCIiKX0saT1oKCksaj1jJiZjWzNdfHwoci5jc3NOdW1i
ZXJbYl0/IiI6InB4Iiksaz0oci5jc3NOdW1iZXJbYl18fCJweCIhPT1qJiYraSkmJmFhLmV4ZWMo
ci5jc3MoYSxiKSk7aWYoayYma1szXSE9PWope2o9anx8a1szXSxjPWN8fFtdLGs9K2l8fDE7ZG8g
Zj1mfHwiLjUiLGsvPWYsci5zdHlsZShhLGIsaytqKTt3aGlsZShmIT09KGY9aCgpL2kpJiYxIT09
ZiYmLS1nKX1yZXR1cm4gYyYmKGs9K2t8fCtpfHwwLGU9Y1sxXT9rKyhjWzFdKzEpKmNbMl06K2Nb
Ml0sZCYmKGQudW5pdD1qLGQuc3RhcnQ9ayxkLmVuZD1lKSksZX12YXIgZmE9e307ZnVuY3Rpb24g
Z2EoYSl7dmFyIGIsYz1hLm93bmVyRG9jdW1lbnQsZD1hLm5vZGVOYW1lLGU9ZmFbZF07cmV0dXJu
IGU/ZTooYj1jLmJvZHkuYXBwZW5kQ2hpbGQoYy5jcmVhdGVFbGVtZW50KGQpKSxlPXIuY3NzKGIs
ImRpc3BsYXkiKSxiLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYiksIm5vbmUiPT09ZSYmKGU9ImJs
b2NrIiksZmFbZF09ZSxlKX1mdW5jdGlvbiBoYShhLGIpe2Zvcih2YXIgYyxkLGU9W10sZj0wLGc9
YS5sZW5ndGg7ZjxnO2YrKylkPWFbZl0sZC5zdHlsZSYmKGM9ZC5zdHlsZS5kaXNwbGF5LGI/KCJu
b25lIj09PWMmJihlW2ZdPVYuZ2V0KGQsImRpc3BsYXkiKXx8bnVsbCxlW2ZdfHwoZC5zdHlsZS5k
aXNwbGF5PSIiKSksIiI9PT1kLnN0eWxlLmRpc3BsYXkmJmNhKGQpJiYoZVtmXT1nYShkKSkpOiJu
b25lIiE9PWMmJihlW2ZdPSJub25lIixWLnNldChkLCJkaXNwbGF5IixjKSkpO2ZvcihmPTA7Zjxn
O2YrKyludWxsIT1lW2ZdJiYoYVtmXS5zdHlsZS5kaXNwbGF5PWVbZl0pO3JldHVybiBhfXIuZm4u
ZXh0ZW5kKHtzaG93OmZ1bmN0aW9uKCl7cmV0dXJuIGhhKHRoaXMsITApfSxoaWRlOmZ1bmN0aW9u
KCl7cmV0dXJuIGhhKHRoaXMpfSx0b2dnbGU6ZnVuY3Rpb24oYSl7cmV0dXJuImJvb2xlYW4iPT10
eXBlb2YgYT9hP3RoaXMuc2hvdygpOnRoaXMuaGlkZSgpOnRoaXMuZWFjaChmdW5jdGlvbigpe2Nh
KHRoaXMpP3IodGhpcykuc2hvdygpOnIodGhpcykuaGlkZSgpfSl9fSk7dmFyIGlhPS9eKD86Y2hl
Y2tib3h8cmFkaW8pJC9pLGphPS88KFthLXpdW15cL1wwPlx4MjBcdFxyXG5cZl0rKS9pLGthPS9e
JHxcLyg/OmphdmF8ZWNtYSlzY3JpcHQvaSxsYT17b3B0aW9uOlsxLCI8c2VsZWN0IG11bHRpcGxl
PSdtdWx0aXBsZSc+IiwiPC9zZWxlY3Q+Il0sdGhlYWQ6WzEsIjx0YWJsZT4iLCI8L3RhYmxlPiJd
LGNvbDpbMiwiPHRhYmxlPjxjb2xncm91cD4iLCI8L2NvbGdyb3VwPjwvdGFibGU+Il0sdHI6WzIs
Ijx0YWJsZT48dGJvZHk+IiwiPC90Ym9keT48L3RhYmxlPiJdLHRkOlszLCI8dGFibGU+PHRib2R5
Pjx0cj4iLCI8L3RyPjwvdGJvZHk+PC90YWJsZT4iXSxfZGVmYXVsdDpbMCwiIiwiIl19O2xhLm9w
dGdyb3VwPWxhLm9wdGlvbixsYS50Ym9keT1sYS50Zm9vdD1sYS5jb2xncm91cD1sYS5jYXB0aW9u
PWxhLnRoZWFkLGxhLnRoPWxhLnRkO2Z1bmN0aW9uIG1hKGEsYil7dmFyIGM7cmV0dXJuIGM9InVu
ZGVmaW5lZCIhPXR5cGVvZiBhLmdldEVsZW1lbnRzQnlUYWdOYW1lP2EuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoYnx8IioiKToidW5kZWZpbmVkIiE9dHlwZW9mIGEucXVlcnlTZWxlY3RvckFsbD9hLnF1
ZXJ5U2VsZWN0b3JBbGwoYnx8IioiKTpbXSx2b2lkIDA9PT1ifHxiJiZyLm5vZGVOYW1lKGEsYik/
ci5tZXJnZShbYV0sYyk6Y31mdW5jdGlvbiBuYShhLGIpe2Zvcih2YXIgYz0wLGQ9YS5sZW5ndGg7
YzxkO2MrKylWLnNldChhW2NdLCJnbG9iYWxFdmFsIiwhYnx8Vi5nZXQoYltjXSwiZ2xvYmFsRXZh
bCIpKX12YXIgb2E9Lzx8JiM/XHcrOy87ZnVuY3Rpb24gcGEoYSxiLGMsZCxlKXtmb3IodmFyIGYs
ZyxoLGksaixrLGw9Yi5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksbT1bXSxuPTAsbz1hLmxlbmd0
aDtuPG87bisrKWlmKGY9YVtuXSxmfHwwPT09ZilpZigib2JqZWN0Ij09PXIudHlwZShmKSlyLm1l
cmdlKG0sZi5ub2RlVHlwZT9bZl06Zik7ZWxzZSBpZihvYS50ZXN0KGYpKXtnPWd8fGwuYXBwZW5k
Q2hpbGQoYi5jcmVhdGVFbGVtZW50KCJkaXYiKSksaD0oamEuZXhlYyhmKXx8WyIiLCIiXSlbMV0u
dG9Mb3dlckNhc2UoKSxpPWxhW2hdfHxsYS5fZGVmYXVsdCxnLmlubmVySFRNTD1pWzFdK3IuaHRt
bFByZWZpbHRlcihmKStpWzJdLGs9aVswXTt3aGlsZShrLS0pZz1nLmxhc3RDaGlsZDtyLm1lcmdl
KG0sZy5jaGlsZE5vZGVzKSxnPWwuZmlyc3RDaGlsZCxnLnRleHRDb250ZW50PSIifWVsc2UgbS5w
dXNoKGIuY3JlYXRlVGV4dE5vZGUoZikpO2wudGV4dENvbnRlbnQ9IiIsbj0wO3doaWxlKGY9bVtu
KytdKWlmKGQmJnIuaW5BcnJheShmLGQpPi0xKWUmJmUucHVzaChmKTtlbHNlIGlmKGo9ci5jb250
YWlucyhmLm93bmVyRG9jdW1lbnQsZiksZz1tYShsLmFwcGVuZENoaWxkKGYpLCJzY3JpcHQiKSxq
JiZuYShnKSxjKXtrPTA7d2hpbGUoZj1nW2srK10pa2EudGVzdChmLnR5cGV8fCIiKSYmYy5wdXNo
KGYpfXJldHVybiBsfSFmdW5jdGlvbigpe3ZhciBhPWQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgp
LGI9YS5hcHBlbmRDaGlsZChkLmNyZWF0ZUVsZW1lbnQoImRpdiIpKSxjPWQuY3JlYXRlRWxlbWVu
dCgiaW5wdXQiKTtjLnNldEF0dHJpYnV0ZSgidHlwZSIsInJhZGlvIiksYy5zZXRBdHRyaWJ1dGUo
ImNoZWNrZWQiLCJjaGVja2VkIiksYy5zZXRBdHRyaWJ1dGUoIm5hbWUiLCJ0IiksYi5hcHBlbmRD
aGlsZChjKSxvLmNoZWNrQ2xvbmU9Yi5jbG9uZU5vZGUoITApLmNsb25lTm9kZSghMCkubGFzdENo
aWxkLmNoZWNrZWQsYi5pbm5lckhUTUw9Ijx0ZXh0YXJlYT54PC90ZXh0YXJlYT4iLG8ubm9DbG9u
ZUNoZWNrZWQ9ISFiLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmRlZmF1bHRWYWx1ZX0oKTt2YXIg
cWE9ZC5kb2N1bWVudEVsZW1lbnQscmE9L15rZXkvLHNhPS9eKD86bW91c2V8cG9pbnRlcnxjb250
ZXh0bWVudXxkcmFnfGRyb3ApfGNsaWNrLyx0YT0vXihbXi5dKikoPzpcLiguKyl8KS87ZnVuY3Rp
b24gdWEoKXtyZXR1cm4hMH1mdW5jdGlvbiB2YSgpe3JldHVybiExfWZ1bmN0aW9uIHdhKCl7dHJ5
e3JldHVybiBkLmFjdGl2ZUVsZW1lbnR9Y2F0Y2goYSl7fX1mdW5jdGlvbiB4YShhLGIsYyxkLGUs
Zil7dmFyIGcsaDtpZigib2JqZWN0Ij09dHlwZW9mIGIpeyJzdHJpbmciIT10eXBlb2YgYyYmKGQ9
ZHx8YyxjPXZvaWQgMCk7Zm9yKGggaW4gYil4YShhLGgsYyxkLGJbaF0sZik7cmV0dXJuIGF9aWYo
bnVsbD09ZCYmbnVsbD09ZT8oZT1jLGQ9Yz12b2lkIDApOm51bGw9PWUmJigic3RyaW5nIj09dHlw
ZW9mIGM/KGU9ZCxkPXZvaWQgMCk6KGU9ZCxkPWMsYz12b2lkIDApKSxlPT09ITEpZT12YTtlbHNl
IGlmKCFlKXJldHVybiBhO3JldHVybiAxPT09ZiYmKGc9ZSxlPWZ1bmN0aW9uKGEpe3JldHVybiBy
KCkub2ZmKGEpLGcuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxlLmd1aWQ9Zy5ndWlkfHwoZy5ndWlk
PXIuZ3VpZCsrKSksYS5lYWNoKGZ1bmN0aW9uKCl7ci5ldmVudC5hZGQodGhpcyxiLGUsZCxjKX0p
fXIuZXZlbnQ9e2dsb2JhbDp7fSxhZGQ6ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZixnLGgsaSxq
LGssbCxtLG4sbyxwLHE9Vi5nZXQoYSk7aWYocSl7Yy5oYW5kbGVyJiYoZj1jLGM9Zi5oYW5kbGVy
LGU9Zi5zZWxlY3RvciksZSYmci5maW5kLm1hdGNoZXNTZWxlY3RvcihxYSxlKSxjLmd1aWR8fChj
Lmd1aWQ9ci5ndWlkKyspLChpPXEuZXZlbnRzKXx8KGk9cS5ldmVudHM9e30pLChnPXEuaGFuZGxl
KXx8KGc9cS5oYW5kbGU9ZnVuY3Rpb24oYil7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiByJiZy
LmV2ZW50LnRyaWdnZXJlZCE9PWIudHlwZT9yLmV2ZW50LmRpc3BhdGNoLmFwcGx5KGEsYXJndW1l
bnRzKTp2b2lkIDB9KSxiPShifHwiIikubWF0Y2goSyl8fFsiIl0saj1iLmxlbmd0aDt3aGlsZShq
LS0paD10YS5leGVjKGJbal0pfHxbXSxuPXA9aFsxXSxvPShoWzJdfHwiIikuc3BsaXQoIi4iKS5z
b3J0KCksbiYmKGw9ci5ldmVudC5zcGVjaWFsW25dfHx7fSxuPShlP2wuZGVsZWdhdGVUeXBlOmwu
YmluZFR5cGUpfHxuLGw9ci5ldmVudC5zcGVjaWFsW25dfHx7fSxrPXIuZXh0ZW5kKHt0eXBlOm4s
b3JpZ1R5cGU6cCxkYXRhOmQsaGFuZGxlcjpjLGd1aWQ6Yy5ndWlkLHNlbGVjdG9yOmUsbmVlZHND
b250ZXh0OmUmJnIuZXhwci5tYXRjaC5uZWVkc0NvbnRleHQudGVzdChlKSxuYW1lc3BhY2U6by5q
b2luKCIuIil9LGYpLChtPWlbbl0pfHwobT1pW25dPVtdLG0uZGVsZWdhdGVDb3VudD0wLGwuc2V0
dXAmJmwuc2V0dXAuY2FsbChhLGQsbyxnKSE9PSExfHxhLmFkZEV2ZW50TGlzdGVuZXImJmEuYWRk
RXZlbnRMaXN0ZW5lcihuLGcpKSxsLmFkZCYmKGwuYWRkLmNhbGwoYSxrKSxrLmhhbmRsZXIuZ3Vp
ZHx8KGsuaGFuZGxlci5ndWlkPWMuZ3VpZCkpLGU/bS5zcGxpY2UobS5kZWxlZ2F0ZUNvdW50Kyss
MCxrKTptLnB1c2goayksci5ldmVudC5nbG9iYWxbbl09ITApfX0scmVtb3ZlOmZ1bmN0aW9uKGEs
YixjLGQsZSl7dmFyIGYsZyxoLGksaixrLGwsbSxuLG8scCxxPVYuaGFzRGF0YShhKSYmVi5nZXQo
YSk7aWYocSYmKGk9cS5ldmVudHMpKXtiPShifHwiIikubWF0Y2goSyl8fFsiIl0saj1iLmxlbmd0
aDt3aGlsZShqLS0paWYoaD10YS5leGVjKGJbal0pfHxbXSxuPXA9aFsxXSxvPShoWzJdfHwiIiku
c3BsaXQoIi4iKS5zb3J0KCksbil7bD1yLmV2ZW50LnNwZWNpYWxbbl18fHt9LG49KGQ/bC5kZWxl
Z2F0ZVR5cGU6bC5iaW5kVHlwZSl8fG4sbT1pW25dfHxbXSxoPWhbMl0mJm5ldyBSZWdFeHAoIihe
fFxcLikiK28uam9pbigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIiksZz1mPW0ubGVuZ3RoO3do
aWxlKGYtLSlrPW1bZl0sIWUmJnAhPT1rLm9yaWdUeXBlfHxjJiZjLmd1aWQhPT1rLmd1aWR8fGgm
JiFoLnRlc3Qoay5uYW1lc3BhY2UpfHxkJiZkIT09ay5zZWxlY3RvciYmKCIqKiIhPT1kfHwhay5z
ZWxlY3Rvcil8fChtLnNwbGljZShmLDEpLGsuc2VsZWN0b3ImJm0uZGVsZWdhdGVDb3VudC0tLGwu
cmVtb3ZlJiZsLnJlbW92ZS5jYWxsKGEsaykpO2cmJiFtLmxlbmd0aCYmKGwudGVhcmRvd24mJmwu
dGVhcmRvd24uY2FsbChhLG8scS5oYW5kbGUpIT09ITF8fHIucmVtb3ZlRXZlbnQoYSxuLHEuaGFu
ZGxlKSxkZWxldGUgaVtuXSl9ZWxzZSBmb3IobiBpbiBpKXIuZXZlbnQucmVtb3ZlKGEsbitiW2pd
LGMsZCwhMCk7ci5pc0VtcHR5T2JqZWN0KGkpJiZWLnJlbW92ZShhLCJoYW5kbGUgZXZlbnRzIil9
fSxkaXNwYXRjaDpmdW5jdGlvbihhKXt2YXIgYj1yLmV2ZW50LmZpeChhKSxjLGQsZSxmLGcsaCxp
PW5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoKSxqPShWLmdldCh0aGlzLCJldmVudHMiKXx8e30p
W2IudHlwZV18fFtdLGs9ci5ldmVudC5zcGVjaWFsW2IudHlwZV18fHt9O2ZvcihpWzBdPWIsYz0x
O2M8YXJndW1lbnRzLmxlbmd0aDtjKyspaVtjXT1hcmd1bWVudHNbY107aWYoYi5kZWxlZ2F0ZVRh
cmdldD10aGlzLCFrLnByZURpc3BhdGNofHxrLnByZURpc3BhdGNoLmNhbGwodGhpcyxiKSE9PSEx
KXtoPXIuZXZlbnQuaGFuZGxlcnMuY2FsbCh0aGlzLGIsaiksYz0wO3doaWxlKChmPWhbYysrXSkm
JiFiLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpe2IuY3VycmVudFRhcmdldD1mLmVsZW0sZD0wO3do
aWxlKChnPWYuaGFuZGxlcnNbZCsrXSkmJiFiLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVk
KCkpYi5ybmFtZXNwYWNlJiYhYi5ybmFtZXNwYWNlLnRlc3QoZy5uYW1lc3BhY2UpfHwoYi5oYW5k
bGVPYmo9ZyxiLmRhdGE9Zy5kYXRhLGU9KChyLmV2ZW50LnNwZWNpYWxbZy5vcmlnVHlwZV18fHt9
KS5oYW5kbGV8fGcuaGFuZGxlcikuYXBwbHkoZi5lbGVtLGkpLHZvaWQgMCE9PWUmJihiLnJlc3Vs
dD1lKT09PSExJiYoYi5wcmV2ZW50RGVmYXVsdCgpLGIuc3RvcFByb3BhZ2F0aW9uKCkpKX1yZXR1
cm4gay5wb3N0RGlzcGF0Y2gmJmsucG9zdERpc3BhdGNoLmNhbGwodGhpcyxiKSxiLnJlc3VsdH19
LGhhbmRsZXJzOmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlLGYsZyxoPVtdLGk9Yi5kZWxlZ2F0ZUNv
dW50LGo9YS50YXJnZXQ7aWYoaSYmai5ub2RlVHlwZSYmISgiY2xpY2siPT09YS50eXBlJiZhLmJ1
dHRvbj49MSkpZm9yKDtqIT09dGhpcztqPWoucGFyZW50Tm9kZXx8dGhpcylpZigxPT09ai5ub2Rl
VHlwZSYmKCJjbGljayIhPT1hLnR5cGV8fGouZGlzYWJsZWQhPT0hMCkpe2ZvcihmPVtdLGc9e30s
Yz0wO2M8aTtjKyspZD1iW2NdLGU9ZC5zZWxlY3RvcisiICIsdm9pZCAwPT09Z1tlXSYmKGdbZV09
ZC5uZWVkc0NvbnRleHQ/cihlLHRoaXMpLmluZGV4KGopPi0xOnIuZmluZChlLHRoaXMsbnVsbCxb
al0pLmxlbmd0aCksZ1tlXSYmZi5wdXNoKGQpO2YubGVuZ3RoJiZoLnB1c2goe2VsZW06aixoYW5k
bGVyczpmfSl9cmV0dXJuIGo9dGhpcyxpPGIubGVuZ3RoJiZoLnB1c2goe2VsZW06aixoYW5kbGVy
czpiLnNsaWNlKGkpfSksaH0sYWRkUHJvcDpmdW5jdGlvbihhLGIpe09iamVjdC5kZWZpbmVQcm9w
ZXJ0eShyLkV2ZW50LnByb3RvdHlwZSxhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxn
ZXQ6ci5pc0Z1bmN0aW9uKGIpP2Z1bmN0aW9uKCl7aWYodGhpcy5vcmlnaW5hbEV2ZW50KXJldHVy
biBiKHRoaXMub3JpZ2luYWxFdmVudCl9OmZ1bmN0aW9uKCl7aWYodGhpcy5vcmlnaW5hbEV2ZW50
KXJldHVybiB0aGlzLm9yaWdpbmFsRXZlbnRbYV19LHNldDpmdW5jdGlvbihiKXtPYmplY3QuZGVm
aW5lUHJvcGVydHkodGhpcyxhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJs
ZTohMCx2YWx1ZTpifSl9fSl9LGZpeDpmdW5jdGlvbihhKXtyZXR1cm4gYVtyLmV4cGFuZG9dP2E6
bmV3IHIuRXZlbnQoYSl9LHNwZWNpYWw6e2xvYWQ6e25vQnViYmxlOiEwfSxmb2N1czp7dHJpZ2dl
cjpmdW5jdGlvbigpe2lmKHRoaXMhPT13YSgpJiZ0aGlzLmZvY3VzKXJldHVybiB0aGlzLmZvY3Vz
KCksITF9LGRlbGVnYXRlVHlwZToiZm9jdXNpbiJ9LGJsdXI6e3RyaWdnZXI6ZnVuY3Rpb24oKXtp
Zih0aGlzPT09d2EoKSYmdGhpcy5ibHVyKXJldHVybiB0aGlzLmJsdXIoKSwhMX0sZGVsZWdhdGVU
eXBlOiJmb2N1c291dCJ9LGNsaWNrOnt0cmlnZ2VyOmZ1bmN0aW9uKCl7aWYoImNoZWNrYm94Ij09
PXRoaXMudHlwZSYmdGhpcy5jbGljayYmci5ub2RlTmFtZSh0aGlzLCJpbnB1dCIpKXJldHVybiB0
aGlzLmNsaWNrKCksITF9LF9kZWZhdWx0OmZ1bmN0aW9uKGEpe3JldHVybiByLm5vZGVOYW1lKGEu
dGFyZ2V0LCJhIil9fSxiZWZvcmV1bmxvYWQ6e3Bvc3REaXNwYXRjaDpmdW5jdGlvbihhKXt2b2lk
IDAhPT1hLnJlc3VsdCYmYS5vcmlnaW5hbEV2ZW50JiYoYS5vcmlnaW5hbEV2ZW50LnJldHVyblZh
bHVlPWEucmVzdWx0KX19fX0sci5yZW1vdmVFdmVudD1mdW5jdGlvbihhLGIsYyl7YS5yZW1vdmVF
dmVudExpc3RlbmVyJiZhLnJlbW92ZUV2ZW50TGlzdGVuZXIoYixjKX0sci5FdmVudD1mdW5jdGlv
bihhLGIpe3JldHVybiB0aGlzIGluc3RhbmNlb2Ygci5FdmVudD8oYSYmYS50eXBlPyh0aGlzLm9y
aWdpbmFsRXZlbnQ9YSx0aGlzLnR5cGU9YS50eXBlLHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPWEu
ZGVmYXVsdFByZXZlbnRlZHx8dm9pZCAwPT09YS5kZWZhdWx0UHJldmVudGVkJiZhLnJldHVyblZh
bHVlPT09ITE/dWE6dmEsdGhpcy50YXJnZXQ9YS50YXJnZXQmJjM9PT1hLnRhcmdldC5ub2RlVHlw
ZT9hLnRhcmdldC5wYXJlbnROb2RlOmEudGFyZ2V0LHRoaXMuY3VycmVudFRhcmdldD1hLmN1cnJl
bnRUYXJnZXQsdGhpcy5yZWxhdGVkVGFyZ2V0PWEucmVsYXRlZFRhcmdldCk6dGhpcy50eXBlPWEs
YiYmci5leHRlbmQodGhpcyxiKSx0aGlzLnRpbWVTdGFtcD1hJiZhLnRpbWVTdGFtcHx8ci5ub3co
KSx2b2lkKHRoaXNbci5leHBhbmRvXT0hMCkpOm5ldyByLkV2ZW50KGEsYil9LHIuRXZlbnQucHJv
dG90eXBlPXtjb25zdHJ1Y3RvcjpyLkV2ZW50LGlzRGVmYXVsdFByZXZlbnRlZDp2YSxpc1Byb3Bh
Z2F0aW9uU3RvcHBlZDp2YSxpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZDp2YSxpc1NpbXVs
YXRlZDohMSxwcmV2ZW50RGVmYXVsdDpmdW5jdGlvbigpe3ZhciBhPXRoaXMub3JpZ2luYWxFdmVu
dDt0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD11YSxhJiYhdGhpcy5pc1NpbXVsYXRlZCYmYS5wcmV2
ZW50RGVmYXVsdCgpfSxzdG9wUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9yaWdp
bmFsRXZlbnQ7dGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD11YSxhJiYhdGhpcy5pc1NpbXVsYXRl
ZCYmYS5zdG9wUHJvcGFnYXRpb24oKX0sc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uOmZ1bmN0aW9u
KCl7dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0
b3BwZWQ9dWEsYSYmIXRoaXMuaXNTaW11bGF0ZWQmJmEuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9u
KCksdGhpcy5zdG9wUHJvcGFnYXRpb24oKX19LHIuZWFjaCh7YWx0S2V5OiEwLGJ1YmJsZXM6ITAs
Y2FuY2VsYWJsZTohMCxjaGFuZ2VkVG91Y2hlczohMCxjdHJsS2V5OiEwLGRldGFpbDohMCxldmVu
dFBoYXNlOiEwLG1ldGFLZXk6ITAscGFnZVg6ITAscGFnZVk6ITAsc2hpZnRLZXk6ITAsdmlldzoh
MCwiY2hhciI6ITAsY2hhckNvZGU6ITAsa2V5OiEwLGtleUNvZGU6ITAsYnV0dG9uOiEwLGJ1dHRv
bnM6ITAsY2xpZW50WDohMCxjbGllbnRZOiEwLG9mZnNldFg6ITAsb2Zmc2V0WTohMCxwb2ludGVy
SWQ6ITAscG9pbnRlclR5cGU6ITAsc2NyZWVuWDohMCxzY3JlZW5ZOiEwLHRhcmdldFRvdWNoZXM6
ITAsdG9FbGVtZW50OiEwLHRvdWNoZXM6ITAsd2hpY2g6ZnVuY3Rpb24oYSl7dmFyIGI9YS5idXR0
b247cmV0dXJuIG51bGw9PWEud2hpY2gmJnJhLnRlc3QoYS50eXBlKT9udWxsIT1hLmNoYXJDb2Rl
P2EuY2hhckNvZGU6YS5rZXlDb2RlOiFhLndoaWNoJiZ2b2lkIDAhPT1iJiZzYS50ZXN0KGEudHlw
ZSk/MSZiPzE6MiZiPzM6NCZiPzI6MDphLndoaWNofX0sci5ldmVudC5hZGRQcm9wKSxyLmVhY2go
e21vdXNlZW50ZXI6Im1vdXNlb3ZlciIsbW91c2VsZWF2ZToibW91c2VvdXQiLHBvaW50ZXJlbnRl
cjoicG9pbnRlcm92ZXIiLHBvaW50ZXJsZWF2ZToicG9pbnRlcm91dCJ9LGZ1bmN0aW9uKGEsYil7
ci5ldmVudC5zcGVjaWFsW2FdPXtkZWxlZ2F0ZVR5cGU6YixiaW5kVHlwZTpiLGhhbmRsZTpmdW5j
dGlvbihhKXt2YXIgYyxkPXRoaXMsZT1hLnJlbGF0ZWRUYXJnZXQsZj1hLmhhbmRsZU9iajtyZXR1
cm4gZSYmKGU9PT1kfHxyLmNvbnRhaW5zKGQsZSkpfHwoYS50eXBlPWYub3JpZ1R5cGUsYz1mLmhh
bmRsZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpLGEudHlwZT1iKSxjfX19KSxyLmZuLmV4dGVuZCh7
b246ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIHhhKHRoaXMsYSxiLGMsZCl9LG9uZTpmdW5jdGlv
bihhLGIsYyxkKXtyZXR1cm4geGEodGhpcyxhLGIsYyxkLDEpfSxvZmY6ZnVuY3Rpb24oYSxiLGMp
e3ZhciBkLGU7aWYoYSYmYS5wcmV2ZW50RGVmYXVsdCYmYS5oYW5kbGVPYmopcmV0dXJuIGQ9YS5o
YW5kbGVPYmoscihhLmRlbGVnYXRlVGFyZ2V0KS5vZmYoZC5uYW1lc3BhY2U/ZC5vcmlnVHlwZSsi
LiIrZC5uYW1lc3BhY2U6ZC5vcmlnVHlwZSxkLnNlbGVjdG9yLGQuaGFuZGxlciksdGhpcztpZigi
b2JqZWN0Ij09dHlwZW9mIGEpe2ZvcihlIGluIGEpdGhpcy5vZmYoZSxiLGFbZV0pO3JldHVybiB0
aGlzfXJldHVybiBiIT09ITEmJiJmdW5jdGlvbiIhPXR5cGVvZiBifHwoYz1iLGI9dm9pZCAwKSxj
PT09ITEmJihjPXZhKSx0aGlzLmVhY2goZnVuY3Rpb24oKXtyLmV2ZW50LnJlbW92ZSh0aGlzLGEs
YyxiKX0pfX0pO3ZhciB5YT0vPCg/IWFyZWF8YnJ8Y29sfGVtYmVkfGhyfGltZ3xpbnB1dHxsaW5r
fG1ldGF8cGFyYW0pKChbYS16XVteXC9cMD5ceDIwXHRcclxuXGZdKilbXj5dKilcLz4vZ2ksemE9
LzxzY3JpcHR8PHN0eWxlfDxsaW5rL2ksQWE9L2NoZWNrZWRccyooPzpbXj1dfD1ccyouY2hlY2tl
ZC4pL2ksQmE9L150cnVlXC8oLiopLyxDYT0vXlxzKjwhKD86XFtDREFUQVxbfC0tKXwoPzpcXVxd
fC0tKT5ccyokL2c7ZnVuY3Rpb24gRGEoYSxiKXtyZXR1cm4gci5ub2RlTmFtZShhLCJ0YWJsZSIp
JiZyLm5vZGVOYW1lKDExIT09Yi5ub2RlVHlwZT9iOmIuZmlyc3RDaGlsZCwidHIiKT9hLmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0Ym9keSIpWzBdfHxhOmF9ZnVuY3Rpb24gRWEoYSl7cmV0dXJuIGEu
dHlwZT0obnVsbCE9PWEuZ2V0QXR0cmlidXRlKCJ0eXBlIikpKyIvIithLnR5cGUsYX1mdW5jdGlv
biBGYShhKXt2YXIgYj1CYS5leGVjKGEudHlwZSk7cmV0dXJuIGI/YS50eXBlPWJbMV06YS5yZW1v
dmVBdHRyaWJ1dGUoInR5cGUiKSxhfWZ1bmN0aW9uIEdhKGEsYil7dmFyIGMsZCxlLGYsZyxoLGks
ajtpZigxPT09Yi5ub2RlVHlwZSl7aWYoVi5oYXNEYXRhKGEpJiYoZj1WLmFjY2VzcyhhKSxnPVYu
c2V0KGIsZiksaj1mLmV2ZW50cykpe2RlbGV0ZSBnLmhhbmRsZSxnLmV2ZW50cz17fTtmb3IoZSBp
biBqKWZvcihjPTAsZD1qW2VdLmxlbmd0aDtjPGQ7YysrKXIuZXZlbnQuYWRkKGIsZSxqW2VdW2Nd
KX1XLmhhc0RhdGEoYSkmJihoPVcuYWNjZXNzKGEpLGk9ci5leHRlbmQoe30saCksVy5zZXQoYixp
KSl9fWZ1bmN0aW9uIEhhKGEsYil7dmFyIGM9Yi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOyJpbnB1
dCI9PT1jJiZpYS50ZXN0KGEudHlwZSk/Yi5jaGVja2VkPWEuY2hlY2tlZDoiaW5wdXQiIT09YyYm
InRleHRhcmVhIiE9PWN8fChiLmRlZmF1bHRWYWx1ZT1hLmRlZmF1bHRWYWx1ZSl9ZnVuY3Rpb24g
SWEoYSxiLGMsZCl7Yj1nLmFwcGx5KFtdLGIpO3ZhciBlLGYsaCxpLGosayxsPTAsbT1hLmxlbmd0
aCxuPW0tMSxxPWJbMF0scz1yLmlzRnVuY3Rpb24ocSk7aWYoc3x8bT4xJiYic3RyaW5nIj09dHlw
ZW9mIHEmJiFvLmNoZWNrQ2xvbmUmJkFhLnRlc3QocSkpcmV0dXJuIGEuZWFjaChmdW5jdGlvbihl
KXt2YXIgZj1hLmVxKGUpO3MmJihiWzBdPXEuY2FsbCh0aGlzLGUsZi5odG1sKCkpKSxJYShmLGIs
YyxkKX0pO2lmKG0mJihlPXBhKGIsYVswXS5vd25lckRvY3VtZW50LCExLGEsZCksZj1lLmZpcnN0
Q2hpbGQsMT09PWUuY2hpbGROb2Rlcy5sZW5ndGgmJihlPWYpLGZ8fGQpKXtmb3IoaD1yLm1hcCht
YShlLCJzY3JpcHQiKSxFYSksaT1oLmxlbmd0aDtsPG07bCsrKWo9ZSxsIT09biYmKGo9ci5jbG9u
ZShqLCEwLCEwKSxpJiZyLm1lcmdlKGgsbWEoaiwic2NyaXB0IikpKSxjLmNhbGwoYVtsXSxqLGwp
O2lmKGkpZm9yKGs9aFtoLmxlbmd0aC0xXS5vd25lckRvY3VtZW50LHIubWFwKGgsRmEpLGw9MDts
PGk7bCsrKWo9aFtsXSxrYS50ZXN0KGoudHlwZXx8IiIpJiYhVi5hY2Nlc3MoaiwiZ2xvYmFsRXZh
bCIpJiZyLmNvbnRhaW5zKGssaikmJihqLnNyYz9yLl9ldmFsVXJsJiZyLl9ldmFsVXJsKGouc3Jj
KTpwKGoudGV4dENvbnRlbnQucmVwbGFjZShDYSwiIiksaykpfXJldHVybiBhfWZ1bmN0aW9uIEph
KGEsYixjKXtmb3IodmFyIGQsZT1iP3IuZmlsdGVyKGIsYSk6YSxmPTA7bnVsbCE9KGQ9ZVtmXSk7
ZisrKWN8fDEhPT1kLm5vZGVUeXBlfHxyLmNsZWFuRGF0YShtYShkKSksZC5wYXJlbnROb2RlJiYo
YyYmci5jb250YWlucyhkLm93bmVyRG9jdW1lbnQsZCkmJm5hKG1hKGQsInNjcmlwdCIpKSxkLnBh
cmVudE5vZGUucmVtb3ZlQ2hpbGQoZCkpO3JldHVybiBhfXIuZXh0ZW5kKHtodG1sUHJlZmlsdGVy
OmZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoeWEsIjwkMT48LyQyPiIpfSxjbG9uZTpmdW5j
dGlvbihhLGIsYyl7dmFyIGQsZSxmLGcsaD1hLmNsb25lTm9kZSghMCksaT1yLmNvbnRhaW5zKGEu
b3duZXJEb2N1bWVudCxhKTtpZighKG8ubm9DbG9uZUNoZWNrZWR8fDEhPT1hLm5vZGVUeXBlJiYx
MSE9PWEubm9kZVR5cGV8fHIuaXNYTUxEb2MoYSkpKWZvcihnPW1hKGgpLGY9bWEoYSksZD0wLGU9
Zi5sZW5ndGg7ZDxlO2QrKylIYShmW2RdLGdbZF0pO2lmKGIpaWYoYylmb3IoZj1mfHxtYShhKSxn
PWd8fG1hKGgpLGQ9MCxlPWYubGVuZ3RoO2Q8ZTtkKyspR2EoZltkXSxnW2RdKTtlbHNlIEdhKGEs
aCk7cmV0dXJuIGc9bWEoaCwic2NyaXB0IiksZy5sZW5ndGg+MCYmbmEoZywhaSYmbWEoYSwic2Ny
aXB0IikpLGh9LGNsZWFuRGF0YTpmdW5jdGlvbihhKXtmb3IodmFyIGIsYyxkLGU9ci5ldmVudC5z
cGVjaWFsLGY9MDt2b2lkIDAhPT0oYz1hW2ZdKTtmKyspaWYoVChjKSl7aWYoYj1jW1YuZXhwYW5k
b10pe2lmKGIuZXZlbnRzKWZvcihkIGluIGIuZXZlbnRzKWVbZF0/ci5ldmVudC5yZW1vdmUoYyxk
KTpyLnJlbW92ZUV2ZW50KGMsZCxiLmhhbmRsZSk7Y1tWLmV4cGFuZG9dPXZvaWQgMH1jW1cuZXhw
YW5kb10mJihjW1cuZXhwYW5kb109dm9pZCAwKX19fSksci5mbi5leHRlbmQoe2RldGFjaDpmdW5j
dGlvbihhKXtyZXR1cm4gSmEodGhpcyxhLCEwKX0scmVtb3ZlOmZ1bmN0aW9uKGEpe3JldHVybiBK
YSh0aGlzLGEpfSx0ZXh0OmZ1bmN0aW9uKGEpe3JldHVybiBTKHRoaXMsZnVuY3Rpb24oYSl7cmV0
dXJuIHZvaWQgMD09PWE/ci50ZXh0KHRoaXMpOnRoaXMuZW1wdHkoKS5lYWNoKGZ1bmN0aW9uKCl7
MSE9PXRoaXMubm9kZVR5cGUmJjExIT09dGhpcy5ub2RlVHlwZSYmOSE9PXRoaXMubm9kZVR5cGV8
fCh0aGlzLnRleHRDb250ZW50PWEpfSl9LG51bGwsYSxhcmd1bWVudHMubGVuZ3RoKX0sYXBwZW5k
OmZ1bmN0aW9uKCl7cmV0dXJuIElhKHRoaXMsYXJndW1lbnRzLGZ1bmN0aW9uKGEpe2lmKDE9PT10
aGlzLm5vZGVUeXBlfHwxMT09PXRoaXMubm9kZVR5cGV8fDk9PT10aGlzLm5vZGVUeXBlKXt2YXIg
Yj1EYSh0aGlzLGEpO2IuYXBwZW5kQ2hpbGQoYSl9fSl9LHByZXBlbmQ6ZnVuY3Rpb24oKXtyZXR1
cm4gSWEodGhpcyxhcmd1bWVudHMsZnVuY3Rpb24oYSl7aWYoMT09PXRoaXMubm9kZVR5cGV8fDEx
PT09dGhpcy5ub2RlVHlwZXx8OT09PXRoaXMubm9kZVR5cGUpe3ZhciBiPURhKHRoaXMsYSk7Yi5p
bnNlcnRCZWZvcmUoYSxiLmZpcnN0Q2hpbGQpfX0pfSxiZWZvcmU6ZnVuY3Rpb24oKXtyZXR1cm4g
SWEodGhpcyxhcmd1bWVudHMsZnVuY3Rpb24oYSl7dGhpcy5wYXJlbnROb2RlJiZ0aGlzLnBhcmVu
dE5vZGUuaW5zZXJ0QmVmb3JlKGEsdGhpcyl9KX0sYWZ0ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gSWEo
dGhpcyxhcmd1bWVudHMsZnVuY3Rpb24oYSl7dGhpcy5wYXJlbnROb2RlJiZ0aGlzLnBhcmVudE5v
ZGUuaW5zZXJ0QmVmb3JlKGEsdGhpcy5uZXh0U2libGluZyl9KX0sZW1wdHk6ZnVuY3Rpb24oKXtm
b3IodmFyIGEsYj0wO251bGwhPShhPXRoaXNbYl0pO2IrKykxPT09YS5ub2RlVHlwZSYmKHIuY2xl
YW5EYXRhKG1hKGEsITEpKSxhLnRleHRDb250ZW50PSIiKTtyZXR1cm4gdGhpc30sY2xvbmU6ZnVu
Y3Rpb24oYSxiKXtyZXR1cm4gYT1udWxsIT1hJiZhLGI9bnVsbD09Yj9hOmIsdGhpcy5tYXAoZnVu
Y3Rpb24oKXtyZXR1cm4gci5jbG9uZSh0aGlzLGEsYil9KX0saHRtbDpmdW5jdGlvbihhKXtyZXR1
cm4gUyh0aGlzLGZ1bmN0aW9uKGEpe3ZhciBiPXRoaXNbMF18fHt9LGM9MCxkPXRoaXMubGVuZ3Ro
O2lmKHZvaWQgMD09PWEmJjE9PT1iLm5vZGVUeXBlKXJldHVybiBiLmlubmVySFRNTDtpZigic3Ry
aW5nIj09dHlwZW9mIGEmJiF6YS50ZXN0KGEpJiYhbGFbKGphLmV4ZWMoYSl8fFsiIiwiIl0pWzFd
LnRvTG93ZXJDYXNlKCldKXthPXIuaHRtbFByZWZpbHRlcihhKTt0cnl7Zm9yKDtjPGQ7YysrKWI9
dGhpc1tjXXx8e30sMT09PWIubm9kZVR5cGUmJihyLmNsZWFuRGF0YShtYShiLCExKSksYi5pbm5l
ckhUTUw9YSk7Yj0wfWNhdGNoKGUpe319YiYmdGhpcy5lbXB0eSgpLmFwcGVuZChhKX0sbnVsbCxh
LGFyZ3VtZW50cy5sZW5ndGgpfSxyZXBsYWNlV2l0aDpmdW5jdGlvbigpe3ZhciBhPVtdO3JldHVy
biBJYSh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihiKXt2YXIgYz10aGlzLnBhcmVudE5vZGU7ci5p
bkFycmF5KHRoaXMsYSk8MCYmKHIuY2xlYW5EYXRhKG1hKHRoaXMpKSxjJiZjLnJlcGxhY2VDaGls
ZChiLHRoaXMpKX0sYSl9fSksci5lYWNoKHthcHBlbmRUbzoiYXBwZW5kIixwcmVwZW5kVG86InBy
ZXBlbmQiLGluc2VydEJlZm9yZToiYmVmb3JlIixpbnNlcnRBZnRlcjoiYWZ0ZXIiLHJlcGxhY2VB
bGw6InJlcGxhY2VXaXRoIn0sZnVuY3Rpb24oYSxiKXtyLmZuW2FdPWZ1bmN0aW9uKGEpe2Zvcih2
YXIgYyxkPVtdLGU9cihhKSxmPWUubGVuZ3RoLTEsZz0wO2c8PWY7ZysrKWM9Zz09PWY/dGhpczp0
aGlzLmNsb25lKCEwKSxyKGVbZ10pW2JdKGMpLGguYXBwbHkoZCxjLmdldCgpKTtyZXR1cm4gdGhp
cy5wdXNoU3RhY2soZCl9fSk7dmFyIEthPS9ebWFyZ2luLyxMYT1uZXcgUmVnRXhwKCJeKCIrXysi
KSg/IXB4KVthLXolXSskIiwiaSIpLE1hPWZ1bmN0aW9uKGIpe3ZhciBjPWIub3duZXJEb2N1bWVu
dC5kZWZhdWx0VmlldztyZXR1cm4gYyYmYy5vcGVuZXJ8fChjPWEpLGMuZ2V0Q29tcHV0ZWRTdHls
ZShiKX07IWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYigpe2lmKGkpe2kuc3R5bGUuY3NzVGV4dD0iYm94
LXNpemluZzpib3JkZXItYm94O3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6YmxvY2s7bWFyZ2lu
OmF1dG87Ym9yZGVyOjFweDtwYWRkaW5nOjFweDt0b3A6MSU7d2lkdGg6NTAlIixpLmlubmVySFRN
TD0iIixxYS5hcHBlbmRDaGlsZChoKTt2YXIgYj1hLmdldENvbXB1dGVkU3R5bGUoaSk7Yz0iMSUi
IT09Yi50b3AsZz0iMnB4Ij09PWIubWFyZ2luTGVmdCxlPSI0cHgiPT09Yi53aWR0aCxpLnN0eWxl
Lm1hcmdpblJpZ2h0PSI1MCUiLGY9IjRweCI9PT1iLm1hcmdpblJpZ2h0LHFhLnJlbW92ZUNoaWxk
KGgpLGk9bnVsbH19dmFyIGMsZSxmLGcsaD1kLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGk9ZC5jcmVh
dGVFbGVtZW50KCJkaXYiKTtpLnN0eWxlJiYoaS5zdHlsZS5iYWNrZ3JvdW5kQ2xpcD0iY29udGVu
dC1ib3giLGkuY2xvbmVOb2RlKCEwKS5zdHlsZS5iYWNrZ3JvdW5kQ2xpcD0iIixvLmNsZWFyQ2xv
bmVTdHlsZT0iY29udGVudC1ib3giPT09aS5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCxoLnN0eWxlLmNz
c1RleHQ9ImJvcmRlcjowO3dpZHRoOjhweDtoZWlnaHQ6MDt0b3A6MDtsZWZ0Oi05OTk5cHg7cGFk
ZGluZzowO21hcmdpbi10b3A6MXB4O3Bvc2l0aW9uOmFic29sdXRlIixoLmFwcGVuZENoaWxkKGkp
LHIuZXh0ZW5kKG8se3BpeGVsUG9zaXRpb246ZnVuY3Rpb24oKXtyZXR1cm4gYigpLGN9LGJveFNp
emluZ1JlbGlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIGIoKSxlfSxwaXhlbE1hcmdpblJpZ2h0OmZ1
bmN0aW9uKCl7cmV0dXJuIGIoKSxmfSxyZWxpYWJsZU1hcmdpbkxlZnQ6ZnVuY3Rpb24oKXtyZXR1
cm4gYigpLGd9fSkpfSgpO2Z1bmN0aW9uIE5hKGEsYixjKXt2YXIgZCxlLGYsZyxoPWEuc3R5bGU7
cmV0dXJuIGM9Y3x8TWEoYSksYyYmKGc9Yy5nZXRQcm9wZXJ0eVZhbHVlKGIpfHxjW2JdLCIiIT09
Z3x8ci5jb250YWlucyhhLm93bmVyRG9jdW1lbnQsYSl8fChnPXIuc3R5bGUoYSxiKSksIW8ucGl4
ZWxNYXJnaW5SaWdodCgpJiZMYS50ZXN0KGcpJiZLYS50ZXN0KGIpJiYoZD1oLndpZHRoLGU9aC5t
aW5XaWR0aCxmPWgubWF4V2lkdGgsaC5taW5XaWR0aD1oLm1heFdpZHRoPWgud2lkdGg9ZyxnPWMu
d2lkdGgsaC53aWR0aD1kLGgubWluV2lkdGg9ZSxoLm1heFdpZHRoPWYpKSx2b2lkIDAhPT1nP2cr
IiI6Z31mdW5jdGlvbiBPYShhLGIpe3JldHVybntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYSgpP3Zv
aWQgZGVsZXRlIHRoaXMuZ2V0Oih0aGlzLmdldD1iKS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fX12
YXIgUGE9L14obm9uZXx0YWJsZSg/IS1jW2VhXSkuKykvLFFhPXtwb3NpdGlvbjoiYWJzb2x1dGUi
LHZpc2liaWxpdHk6ImhpZGRlbiIsZGlzcGxheToiYmxvY2sifSxSYT17bGV0dGVyU3BhY2luZzoi
MCIsZm9udFdlaWdodDoiNDAwIn0sU2E9WyJXZWJraXQiLCJNb3oiLCJtcyJdLFRhPWQuY3JlYXRl
RWxlbWVudCgiZGl2Iikuc3R5bGU7ZnVuY3Rpb24gVWEoYSl7aWYoYSBpbiBUYSlyZXR1cm4gYTt2
YXIgYj1hWzBdLnRvVXBwZXJDYXNlKCkrYS5zbGljZSgxKSxjPVNhLmxlbmd0aDt3aGlsZShjLS0p
aWYoYT1TYVtjXStiLGEgaW4gVGEpcmV0dXJuIGF9ZnVuY3Rpb24gVmEoYSxiLGMpe3ZhciBkPWFh
LmV4ZWMoYik7cmV0dXJuIGQ/TWF0aC5tYXgoMCxkWzJdLShjfHwwKSkrKGRbM118fCJweCIpOmJ9
ZnVuY3Rpb24gV2EoYSxiLGMsZCxlKXt2YXIgZixnPTA7Zm9yKGY9Yz09PShkPyJib3JkZXIiOiJj
b250ZW50Iik/NDoid2lkdGgiPT09Yj8xOjA7Zjw0O2YrPTIpIm1hcmdpbiI9PT1jJiYoZys9ci5j
c3MoYSxjK2JhW2ZdLCEwLGUpKSxkPygiY29udGVudCI9PT1jJiYoZy09ci5jc3MoYSwicGFkZGlu
ZyIrYmFbZl0sITAsZSkpLCJtYXJnaW4iIT09YyYmKGctPXIuY3NzKGEsImJvcmRlciIrYmFbZl0r
IldpZHRoIiwhMCxlKSkpOihnKz1yLmNzcyhhLCJwYWRkaW5nIitiYVtmXSwhMCxlKSwicGFkZGlu
ZyIhPT1jJiYoZys9ci5jc3MoYSwiYm9yZGVyIitiYVtmXSsiV2lkdGgiLCEwLGUpKSk7cmV0dXJu
IGd9ZnVuY3Rpb24gWGEoYSxiLGMpe3ZhciBkLGU9ITAsZj1NYShhKSxnPSJib3JkZXItYm94Ij09
PXIuY3NzKGEsImJveFNpemluZyIsITEsZik7aWYoYS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCYm
KGQ9YS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVtiXSksZDw9MHx8bnVsbD09ZCl7aWYoZD1OYShh
LGIsZiksKGQ8MHx8bnVsbD09ZCkmJihkPWEuc3R5bGVbYl0pLExhLnRlc3QoZCkpcmV0dXJuIGQ7
ZT1nJiYoby5ib3hTaXppbmdSZWxpYWJsZSgpfHxkPT09YS5zdHlsZVtiXSksZD1wYXJzZUZsb2F0
KGQpfHwwfXJldHVybiBkK1dhKGEsYixjfHwoZz8iYm9yZGVyIjoiY29udGVudCIpLGUsZikrInB4
In1yLmV4dGVuZCh7Y3NzSG9va3M6e29wYWNpdHk6e2dldDpmdW5jdGlvbihhLGIpe2lmKGIpe3Zh
ciBjPU5hKGEsIm9wYWNpdHkiKTtyZXR1cm4iIj09PWM/IjEiOmN9fX19LGNzc051bWJlcjp7YW5p
bWF0aW9uSXRlcmF0aW9uQ291bnQ6ITAsY29sdW1uQ291bnQ6ITAsZmlsbE9wYWNpdHk6ITAsZmxl
eEdyb3c6ITAsZmxleFNocmluazohMCxmb250V2VpZ2h0OiEwLGxpbmVIZWlnaHQ6ITAsb3BhY2l0
eTohMCxvcmRlcjohMCxvcnBoYW5zOiEwLHdpZG93czohMCx6SW5kZXg6ITAsem9vbTohMH0sY3Nz
UHJvcHM6eyJmbG9hdCI6ImNzc0Zsb2F0In0sc3R5bGU6ZnVuY3Rpb24oYSxiLGMsZCl7aWYoYSYm
MyE9PWEubm9kZVR5cGUmJjghPT1hLm5vZGVUeXBlJiZhLnN0eWxlKXt2YXIgZSxmLGcsaD1yLmNh
bWVsQ2FzZShiKSxpPWEuc3R5bGU7cmV0dXJuIGI9ci5jc3NQcm9wc1toXXx8KHIuY3NzUHJvcHNb
aF09VWEoaCl8fGgpLGc9ci5jc3NIb29rc1tiXXx8ci5jc3NIb29rc1toXSx2b2lkIDA9PT1jP2cm
JiJnZXQiaW4gZyYmdm9pZCAwIT09KGU9Zy5nZXQoYSwhMSxkKSk/ZTppW2JdOihmPXR5cGVvZiBj
LCJzdHJpbmciPT09ZiYmKGU9YWEuZXhlYyhjKSkmJmVbMV0mJihjPWVhKGEsYixlKSxmPSJudW1i
ZXIiKSxudWxsIT1jJiZjPT09YyYmKCJudW1iZXIiPT09ZiYmKGMrPWUmJmVbM118fChyLmNzc051
bWJlcltoXT8iIjoicHgiKSksby5jbGVhckNsb25lU3R5bGV8fCIiIT09Y3x8MCE9PWIuaW5kZXhP
ZigiYmFja2dyb3VuZCIpfHwoaVtiXT0iaW5oZXJpdCIpLGcmJiJzZXQiaW4gZyYmdm9pZCAwPT09
KGM9Zy5zZXQoYSxjLGQpKXx8KGlbYl09YykpLHZvaWQgMCl9fSxjc3M6ZnVuY3Rpb24oYSxiLGMs
ZCl7dmFyIGUsZixnLGg9ci5jYW1lbENhc2UoYik7cmV0dXJuIGI9ci5jc3NQcm9wc1toXXx8KHIu
Y3NzUHJvcHNbaF09VWEoaCl8fGgpLGc9ci5jc3NIb29rc1tiXXx8ci5jc3NIb29rc1toXSxnJiYi
Z2V0ImluIGcmJihlPWcuZ2V0KGEsITAsYykpLHZvaWQgMD09PWUmJihlPU5hKGEsYixkKSksIm5v
cm1hbCI9PT1lJiZiIGluIFJhJiYoZT1SYVtiXSksIiI9PT1jfHxjPyhmPXBhcnNlRmxvYXQoZSks
Yz09PSEwfHxpc0Zpbml0ZShmKT9mfHwwOmUpOmV9fSksci5lYWNoKFsiaGVpZ2h0Iiwid2lkdGgi
XSxmdW5jdGlvbihhLGIpe3IuY3NzSG9va3NbYl09e2dldDpmdW5jdGlvbihhLGMsZCl7aWYoYyly
ZXR1cm4hUGEudGVzdChyLmNzcyhhLCJkaXNwbGF5IikpfHxhLmdldENsaWVudFJlY3RzKCkubGVu
Z3RoJiZhLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoP1hhKGEsYixkKTpkYShhLFFhLGZ1
bmN0aW9uKCl7cmV0dXJuIFhhKGEsYixkKX0pfSxzZXQ6ZnVuY3Rpb24oYSxjLGQpe3ZhciBlLGY9
ZCYmTWEoYSksZz1kJiZXYShhLGIsZCwiYm9yZGVyLWJveCI9PT1yLmNzcyhhLCJib3hTaXppbmci
LCExLGYpLGYpO3JldHVybiBnJiYoZT1hYS5leGVjKGMpKSYmInB4IiE9PShlWzNdfHwicHgiKSYm
KGEuc3R5bGVbYl09YyxjPXIuY3NzKGEsYikpLFZhKGEsYyxnKX19fSksci5jc3NIb29rcy5tYXJn
aW5MZWZ0PU9hKG8ucmVsaWFibGVNYXJnaW5MZWZ0LGZ1bmN0aW9uKGEsYil7aWYoYilyZXR1cm4o
cGFyc2VGbG9hdChOYShhLCJtYXJnaW5MZWZ0IikpfHxhLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgp
LmxlZnQtZGEoYSx7bWFyZ2luTGVmdDowfSxmdW5jdGlvbigpe3JldHVybiBhLmdldEJvdW5kaW5n
Q2xpZW50UmVjdCgpLmxlZnR9KSkrInB4In0pLHIuZWFjaCh7bWFyZ2luOiIiLHBhZGRpbmc6IiIs
Ym9yZGVyOiJXaWR0aCJ9LGZ1bmN0aW9uKGEsYil7ci5jc3NIb29rc1thK2JdPXtleHBhbmQ6ZnVu
Y3Rpb24oYyl7Zm9yKHZhciBkPTAsZT17fSxmPSJzdHJpbmciPT10eXBlb2YgYz9jLnNwbGl0KCIg
Iik6W2NdO2Q8NDtkKyspZVthK2JhW2RdK2JdPWZbZF18fGZbZC0yXXx8ZlswXTtyZXR1cm4gZX19
LEthLnRlc3QoYSl8fChyLmNzc0hvb2tzW2ErYl0uc2V0PVZhKX0pLHIuZm4uZXh0ZW5kKHtjc3M6
ZnVuY3Rpb24oYSxiKXtyZXR1cm4gUyh0aGlzLGZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGY9e30s
Zz0wO2lmKHIuaXNBcnJheShiKSl7Zm9yKGQ9TWEoYSksZT1iLmxlbmd0aDtnPGU7ZysrKWZbYltn
XV09ci5jc3MoYSxiW2ddLCExLGQpO3JldHVybiBmfXJldHVybiB2b2lkIDAhPT1jP3Iuc3R5bGUo
YSxiLGMpOnIuY3NzKGEsYil9LGEsYixhcmd1bWVudHMubGVuZ3RoPjEpfX0pO2Z1bmN0aW9uIFlh
KGEsYixjLGQsZSl7cmV0dXJuIG5ldyBZYS5wcm90b3R5cGUuaW5pdChhLGIsYyxkLGUpfXIuVHdl
ZW49WWEsWWEucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpZYSxpbml0OmZ1bmN0aW9uKGEsYixjLGQs
ZSxmKXt0aGlzLmVsZW09YSx0aGlzLnByb3A9Yyx0aGlzLmVhc2luZz1lfHxyLmVhc2luZy5fZGVm
YXVsdCx0aGlzLm9wdGlvbnM9Yix0aGlzLnN0YXJ0PXRoaXMubm93PXRoaXMuY3VyKCksdGhpcy5l
bmQ9ZCx0aGlzLnVuaXQ9Znx8KHIuY3NzTnVtYmVyW2NdPyIiOiJweCIpfSxjdXI6ZnVuY3Rpb24o
KXt2YXIgYT1ZYS5wcm9wSG9va3NbdGhpcy5wcm9wXTtyZXR1cm4gYSYmYS5nZXQ/YS5nZXQodGhp
cyk6WWEucHJvcEhvb2tzLl9kZWZhdWx0LmdldCh0aGlzKX0scnVuOmZ1bmN0aW9uKGEpe3ZhciBi
LGM9WWEucHJvcEhvb2tzW3RoaXMucHJvcF07cmV0dXJuIHRoaXMub3B0aW9ucy5kdXJhdGlvbj90
aGlzLnBvcz1iPXIuZWFzaW5nW3RoaXMuZWFzaW5nXShhLHRoaXMub3B0aW9ucy5kdXJhdGlvbiph
LDAsMSx0aGlzLm9wdGlvbnMuZHVyYXRpb24pOnRoaXMucG9zPWI9YSx0aGlzLm5vdz0odGhpcy5l
bmQtdGhpcy5zdGFydCkqYit0aGlzLnN0YXJ0LHRoaXMub3B0aW9ucy5zdGVwJiZ0aGlzLm9wdGlv
bnMuc3RlcC5jYWxsKHRoaXMuZWxlbSx0aGlzLm5vdyx0aGlzKSxjJiZjLnNldD9jLnNldCh0aGlz
KTpZYS5wcm9wSG9va3MuX2RlZmF1bHQuc2V0KHRoaXMpLHRoaXN9fSxZYS5wcm90b3R5cGUuaW5p
dC5wcm90b3R5cGU9WWEucHJvdG90eXBlLFlhLnByb3BIb29rcz17X2RlZmF1bHQ6e2dldDpmdW5j
dGlvbihhKXt2YXIgYjtyZXR1cm4gMSE9PWEuZWxlbS5ub2RlVHlwZXx8bnVsbCE9YS5lbGVtW2Eu
cHJvcF0mJm51bGw9PWEuZWxlbS5zdHlsZVthLnByb3BdP2EuZWxlbVthLnByb3BdOihiPXIuY3Nz
KGEuZWxlbSxhLnByb3AsIiIpLGImJiJhdXRvIiE9PWI/YjowKX0sc2V0OmZ1bmN0aW9uKGEpe3Iu
Znguc3RlcFthLnByb3BdP3IuZnguc3RlcFthLnByb3BdKGEpOjEhPT1hLmVsZW0ubm9kZVR5cGV8
fG51bGw9PWEuZWxlbS5zdHlsZVtyLmNzc1Byb3BzW2EucHJvcF1dJiYhci5jc3NIb29rc1thLnBy
b3BdP2EuZWxlbVthLnByb3BdPWEubm93OnIuc3R5bGUoYS5lbGVtLGEucHJvcCxhLm5vdythLnVu
aXQpfX19LFlhLnByb3BIb29rcy5zY3JvbGxUb3A9WWEucHJvcEhvb2tzLnNjcm9sbExlZnQ9e3Nl
dDpmdW5jdGlvbihhKXthLmVsZW0ubm9kZVR5cGUmJmEuZWxlbS5wYXJlbnROb2RlJiYoYS5lbGVt
W2EucHJvcF09YS5ub3cpfX0sci5lYXNpbmc9e2xpbmVhcjpmdW5jdGlvbihhKXtyZXR1cm4gYX0s
c3dpbmc6ZnVuY3Rpb24oYSl7cmV0dXJuLjUtTWF0aC5jb3MoYSpNYXRoLlBJKS8yfSxfZGVmYXVs
dDoic3dpbmcifSxyLmZ4PVlhLnByb3RvdHlwZS5pbml0LHIuZnguc3RlcD17fTt2YXIgWmEsJGEs
X2E9L14oPzp0b2dnbGV8c2hvd3xoaWRlKSQvLGFiPS9xdWV1ZUhvb2tzJC87ZnVuY3Rpb24gYmIo
KXskYSYmKGEucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGJiKSxyLmZ4LnRpY2soKSl9ZnVuY3Rpb24g
Y2IoKXtyZXR1cm4gYS5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7WmE9dm9pZCAwfSksWmE9ci5ub3co
KX1mdW5jdGlvbiBkYihhLGIpe3ZhciBjLGQ9MCxlPXtoZWlnaHQ6YX07Zm9yKGI9Yj8xOjA7ZDw0
O2QrPTItYiljPWJhW2RdLGVbIm1hcmdpbiIrY109ZVsicGFkZGluZyIrY109YTtyZXR1cm4gYiYm
KGUub3BhY2l0eT1lLndpZHRoPWEpLGV9ZnVuY3Rpb24gZWIoYSxiLGMpe2Zvcih2YXIgZCxlPSho
Yi50d2VlbmVyc1tiXXx8W10pLmNvbmNhdChoYi50d2VlbmVyc1siKiJdKSxmPTAsZz1lLmxlbmd0
aDtmPGc7ZisrKWlmKGQ9ZVtmXS5jYWxsKGMsYixhKSlyZXR1cm4gZH1mdW5jdGlvbiBmYihhLGIs
Yyl7dmFyIGQsZSxmLGcsaCxpLGosayxsPSJ3aWR0aCJpbiBifHwiaGVpZ2h0ImluIGIsbT10aGlz
LG49e30sbz1hLnN0eWxlLHA9YS5ub2RlVHlwZSYmY2EoYSkscT1WLmdldChhLCJmeHNob3ciKTtj
LnF1ZXVlfHwoZz1yLl9xdWV1ZUhvb2tzKGEsImZ4IiksbnVsbD09Zy51bnF1ZXVlZCYmKGcudW5x
dWV1ZWQ9MCxoPWcuZW1wdHkuZmlyZSxnLmVtcHR5LmZpcmU9ZnVuY3Rpb24oKXtnLnVucXVldWVk
fHxoKCl9KSxnLnVucXVldWVkKyssbS5hbHdheXMoZnVuY3Rpb24oKXttLmFsd2F5cyhmdW5jdGlv
bigpe2cudW5xdWV1ZWQtLSxyLnF1ZXVlKGEsImZ4IikubGVuZ3RofHxnLmVtcHR5LmZpcmUoKX0p
fSkpO2ZvcihkIGluIGIpaWYoZT1iW2RdLF9hLnRlc3QoZSkpe2lmKGRlbGV0ZSBiW2RdLGY9Znx8
InRvZ2dsZSI9PT1lLGU9PT0ocD8iaGlkZSI6InNob3ciKSl7aWYoInNob3ciIT09ZXx8IXF8fHZv
aWQgMD09PXFbZF0pY29udGludWU7cD0hMH1uW2RdPXEmJnFbZF18fHIuc3R5bGUoYSxkKX1pZihp
PSFyLmlzRW1wdHlPYmplY3QoYiksaXx8IXIuaXNFbXB0eU9iamVjdChuKSl7bCYmMT09PWEubm9k
ZVR5cGUmJihjLm92ZXJmbG93PVtvLm92ZXJmbG93LG8ub3ZlcmZsb3dYLG8ub3ZlcmZsb3dZXSxq
PXEmJnEuZGlzcGxheSxudWxsPT1qJiYoaj1WLmdldChhLCJkaXNwbGF5IikpLGs9ci5jc3MoYSwi
ZGlzcGxheSIpLCJub25lIj09PWsmJihqP2s9ajooaGEoW2FdLCEwKSxqPWEuc3R5bGUuZGlzcGxh
eXx8aixrPXIuY3NzKGEsImRpc3BsYXkiKSxoYShbYV0pKSksKCJpbmxpbmUiPT09a3x8ImlubGlu
ZS1ibG9jayI9PT1rJiZudWxsIT1qKSYmIm5vbmUiPT09ci5jc3MoYSwiZmxvYXQiKSYmKGl8fCht
LmRvbmUoZnVuY3Rpb24oKXtvLmRpc3BsYXk9an0pLG51bGw9PWomJihrPW8uZGlzcGxheSxqPSJu
b25lIj09PWs/IiI6aykpLG8uZGlzcGxheT0iaW5saW5lLWJsb2NrIikpLGMub3ZlcmZsb3cmJihv
Lm92ZXJmbG93PSJoaWRkZW4iLG0uYWx3YXlzKGZ1bmN0aW9uKCl7by5vdmVyZmxvdz1jLm92ZXJm
bG93WzBdLG8ub3ZlcmZsb3dYPWMub3ZlcmZsb3dbMV0sby5vdmVyZmxvd1k9Yy5vdmVyZmxvd1sy
XX0pKSxpPSExO2ZvcihkIGluIG4paXx8KHE/ImhpZGRlbiJpbiBxJiYocD1xLmhpZGRlbik6cT1W
LmFjY2VzcyhhLCJmeHNob3ciLHtkaXNwbGF5Omp9KSxmJiYocS5oaWRkZW49IXApLHAmJmhhKFth
XSwhMCksbS5kb25lKGZ1bmN0aW9uKCl7cHx8aGEoW2FdKSxWLnJlbW92ZShhLCJmeHNob3ciKTtm
b3IoZCBpbiBuKXIuc3R5bGUoYSxkLG5bZF0pfSkpLGk9ZWIocD9xW2RdOjAsZCxtKSxkIGluIHF8
fChxW2RdPWkuc3RhcnQscCYmKGkuZW5kPWkuc3RhcnQsaS5zdGFydD0wKSl9fWZ1bmN0aW9uIGdi
KGEsYil7dmFyIGMsZCxlLGYsZztmb3IoYyBpbiBhKWlmKGQ9ci5jYW1lbENhc2UoYyksZT1iW2Rd
LGY9YVtjXSxyLmlzQXJyYXkoZikmJihlPWZbMV0sZj1hW2NdPWZbMF0pLGMhPT1kJiYoYVtkXT1m
LGRlbGV0ZSBhW2NdKSxnPXIuY3NzSG9va3NbZF0sZyYmImV4cGFuZCJpbiBnKXtmPWcuZXhwYW5k
KGYpLGRlbGV0ZSBhW2RdO2ZvcihjIGluIGYpYyBpbiBhfHwoYVtjXT1mW2NdLGJbY109ZSl9ZWxz
ZSBiW2RdPWV9ZnVuY3Rpb24gaGIoYSxiLGMpe3ZhciBkLGUsZj0wLGc9aGIucHJlZmlsdGVycy5s
ZW5ndGgsaD1yLkRlZmVycmVkKCkuYWx3YXlzKGZ1bmN0aW9uKCl7ZGVsZXRlIGkuZWxlbX0pLGk9
ZnVuY3Rpb24oKXtpZihlKXJldHVybiExO2Zvcih2YXIgYj1aYXx8Y2IoKSxjPU1hdGgubWF4KDAs
ai5zdGFydFRpbWUrai5kdXJhdGlvbi1iKSxkPWMvai5kdXJhdGlvbnx8MCxmPTEtZCxnPTAsaT1q
LnR3ZWVucy5sZW5ndGg7ZzxpO2crKylqLnR3ZWVuc1tnXS5ydW4oZik7cmV0dXJuIGgubm90aWZ5
V2l0aChhLFtqLGYsY10pLGY8MSYmaT9jOihoLnJlc29sdmVXaXRoKGEsW2pdKSwhMSl9LGo9aC5w
cm9taXNlKHtlbGVtOmEscHJvcHM6ci5leHRlbmQoe30sYiksb3B0czpyLmV4dGVuZCghMCx7c3Bl
Y2lhbEVhc2luZzp7fSxlYXNpbmc6ci5lYXNpbmcuX2RlZmF1bHR9LGMpLG9yaWdpbmFsUHJvcGVy
dGllczpiLG9yaWdpbmFsT3B0aW9uczpjLHN0YXJ0VGltZTpaYXx8Y2IoKSxkdXJhdGlvbjpjLmR1
cmF0aW9uLHR3ZWVuczpbXSxjcmVhdGVUd2VlbjpmdW5jdGlvbihiLGMpe3ZhciBkPXIuVHdlZW4o
YSxqLm9wdHMsYixjLGoub3B0cy5zcGVjaWFsRWFzaW5nW2JdfHxqLm9wdHMuZWFzaW5nKTtyZXR1
cm4gai50d2VlbnMucHVzaChkKSxkfSxzdG9wOmZ1bmN0aW9uKGIpe3ZhciBjPTAsZD1iP2oudHdl
ZW5zLmxlbmd0aDowO2lmKGUpcmV0dXJuIHRoaXM7Zm9yKGU9ITA7YzxkO2MrKylqLnR3ZWVuc1tj
XS5ydW4oMSk7cmV0dXJuIGI/KGgubm90aWZ5V2l0aChhLFtqLDEsMF0pLGgucmVzb2x2ZVdpdGgo
YSxbaixiXSkpOmgucmVqZWN0V2l0aChhLFtqLGJdKSx0aGlzfX0pLGs9ai5wcm9wcztmb3IoZ2Io
ayxqLm9wdHMuc3BlY2lhbEVhc2luZyk7ZjxnO2YrKylpZihkPWhiLnByZWZpbHRlcnNbZl0uY2Fs
bChqLGEsayxqLm9wdHMpKXJldHVybiByLmlzRnVuY3Rpb24oZC5zdG9wKSYmKHIuX3F1ZXVlSG9v
a3Moai5lbGVtLGoub3B0cy5xdWV1ZSkuc3RvcD1yLnByb3h5KGQuc3RvcCxkKSksZDtyZXR1cm4g
ci5tYXAoayxlYixqKSxyLmlzRnVuY3Rpb24oai5vcHRzLnN0YXJ0KSYmai5vcHRzLnN0YXJ0LmNh
bGwoYSxqKSxyLmZ4LnRpbWVyKHIuZXh0ZW5kKGkse2VsZW06YSxhbmltOmoscXVldWU6ai5vcHRz
LnF1ZXVlfSkpLGoucHJvZ3Jlc3Moai5vcHRzLnByb2dyZXNzKS5kb25lKGoub3B0cy5kb25lLGou
b3B0cy5jb21wbGV0ZSkuZmFpbChqLm9wdHMuZmFpbCkuYWx3YXlzKGoub3B0cy5hbHdheXMpfXIu
QW5pbWF0aW9uPXIuZXh0ZW5kKGhiLHt0d2VlbmVyczp7IioiOltmdW5jdGlvbihhLGIpe3ZhciBj
PXRoaXMuY3JlYXRlVHdlZW4oYSxiKTtyZXR1cm4gZWEoYy5lbGVtLGEsYWEuZXhlYyhiKSxjKSxj
fV19LHR3ZWVuZXI6ZnVuY3Rpb24oYSxiKXtyLmlzRnVuY3Rpb24oYSk/KGI9YSxhPVsiKiJdKTph
PWEubWF0Y2goSyk7Zm9yKHZhciBjLGQ9MCxlPWEubGVuZ3RoO2Q8ZTtkKyspYz1hW2RdLGhiLnR3
ZWVuZXJzW2NdPWhiLnR3ZWVuZXJzW2NdfHxbXSxoYi50d2VlbmVyc1tjXS51bnNoaWZ0KGIpfSxw
cmVmaWx0ZXJzOltmYl0scHJlZmlsdGVyOmZ1bmN0aW9uKGEsYil7Yj9oYi5wcmVmaWx0ZXJzLnVu
c2hpZnQoYSk6aGIucHJlZmlsdGVycy5wdXNoKGEpfX0pLHIuc3BlZWQ9ZnVuY3Rpb24oYSxiLGMp
e3ZhciBlPWEmJiJvYmplY3QiPT10eXBlb2YgYT9yLmV4dGVuZCh7fSxhKTp7Y29tcGxldGU6Y3x8
IWMmJmJ8fHIuaXNGdW5jdGlvbihhKSYmYSxkdXJhdGlvbjphLGVhc2luZzpjJiZifHxiJiYhci5p
c0Z1bmN0aW9uKGIpJiZifTtyZXR1cm4gci5meC5vZmZ8fGQuaGlkZGVuP2UuZHVyYXRpb249MDoi
bnVtYmVyIiE9dHlwZW9mIGUuZHVyYXRpb24mJihlLmR1cmF0aW9uIGluIHIuZnguc3BlZWRzP2Uu
ZHVyYXRpb249ci5meC5zcGVlZHNbZS5kdXJhdGlvbl06ZS5kdXJhdGlvbj1yLmZ4LnNwZWVkcy5f
ZGVmYXVsdCksbnVsbCE9ZS5xdWV1ZSYmZS5xdWV1ZSE9PSEwfHwoZS5xdWV1ZT0iZngiKSxlLm9s
ZD1lLmNvbXBsZXRlLGUuY29tcGxldGU9ZnVuY3Rpb24oKXtyLmlzRnVuY3Rpb24oZS5vbGQpJiZl
Lm9sZC5jYWxsKHRoaXMpLGUucXVldWUmJnIuZGVxdWV1ZSh0aGlzLGUucXVldWUpfSxlfSxyLmZu
LmV4dGVuZCh7ZmFkZVRvOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLmZpbHRlcihjYSku
Y3NzKCJvcGFjaXR5IiwwKS5zaG93KCkuZW5kKCkuYW5pbWF0ZSh7b3BhY2l0eTpifSxhLGMsZCl9
LGFuaW1hdGU6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9ci5pc0VtcHR5T2JqZWN0KGEpLGY9ci5z
cGVlZChiLGMsZCksZz1mdW5jdGlvbigpe3ZhciBiPWhiKHRoaXMsci5leHRlbmQoe30sYSksZik7
KGV8fFYuZ2V0KHRoaXMsImZpbmlzaCIpKSYmYi5zdG9wKCEwKX07cmV0dXJuIGcuZmluaXNoPWcs
ZXx8Zi5xdWV1ZT09PSExP3RoaXMuZWFjaChnKTp0aGlzLnF1ZXVlKGYucXVldWUsZyl9LHN0b3A6
ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWZ1bmN0aW9uKGEpe3ZhciBiPWEuc3RvcDtkZWxldGUgYS5z
dG9wLGIoYyl9O3JldHVybiJzdHJpbmciIT10eXBlb2YgYSYmKGM9YixiPWEsYT12b2lkIDApLGIm
JmEhPT0hMSYmdGhpcy5xdWV1ZShhfHwiZngiLFtdKSx0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIg
Yj0hMCxlPW51bGwhPWEmJmErInF1ZXVlSG9va3MiLGY9ci50aW1lcnMsZz1WLmdldCh0aGlzKTtp
ZihlKWdbZV0mJmdbZV0uc3RvcCYmZChnW2VdKTtlbHNlIGZvcihlIGluIGcpZ1tlXSYmZ1tlXS5z
dG9wJiZhYi50ZXN0KGUpJiZkKGdbZV0pO2ZvcihlPWYubGVuZ3RoO2UtLTspZltlXS5lbGVtIT09
dGhpc3x8bnVsbCE9YSYmZltlXS5xdWV1ZSE9PWF8fChmW2VdLmFuaW0uc3RvcChjKSxiPSExLGYu
c3BsaWNlKGUsMSkpOyFiJiZjfHxyLmRlcXVldWUodGhpcyxhKX0pfSxmaW5pc2g6ZnVuY3Rpb24o
YSl7cmV0dXJuIGEhPT0hMSYmKGE9YXx8ImZ4IiksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGIs
Yz1WLmdldCh0aGlzKSxkPWNbYSsicXVldWUiXSxlPWNbYSsicXVldWVIb29rcyJdLGY9ci50aW1l
cnMsZz1kP2QubGVuZ3RoOjA7Zm9yKGMuZmluaXNoPSEwLHIucXVldWUodGhpcyxhLFtdKSxlJiZl
LnN0b3AmJmUuc3RvcC5jYWxsKHRoaXMsITApLGI9Zi5sZW5ndGg7Yi0tOylmW2JdLmVsZW09PT10
aGlzJiZmW2JdLnF1ZXVlPT09YSYmKGZbYl0uYW5pbS5zdG9wKCEwKSxmLnNwbGljZShiLDEpKTtm
b3IoYj0wO2I8ZztiKyspZFtiXSYmZFtiXS5maW5pc2gmJmRbYl0uZmluaXNoLmNhbGwodGhpcyk7
ZGVsZXRlIGMuZmluaXNofSl9fSksci5lYWNoKFsidG9nZ2xlIiwic2hvdyIsImhpZGUiXSxmdW5j
dGlvbihhLGIpe3ZhciBjPXIuZm5bYl07ci5mbltiXT1mdW5jdGlvbihhLGQsZSl7cmV0dXJuIG51
bGw9PWF8fCJib29sZWFuIj09dHlwZW9mIGE/Yy5hcHBseSh0aGlzLGFyZ3VtZW50cyk6dGhpcy5h
bmltYXRlKGRiKGIsITApLGEsZCxlKX19KSxyLmVhY2goe3NsaWRlRG93bjpkYigic2hvdyIpLHNs
aWRlVXA6ZGIoImhpZGUiKSxzbGlkZVRvZ2dsZTpkYigidG9nZ2xlIiksZmFkZUluOntvcGFjaXR5
OiJzaG93In0sZmFkZU91dDp7b3BhY2l0eToiaGlkZSJ9LGZhZGVUb2dnbGU6e29wYWNpdHk6InRv
Z2dsZSJ9fSxmdW5jdGlvbihhLGIpe3IuZm5bYV09ZnVuY3Rpb24oYSxjLGQpe3JldHVybiB0aGlz
LmFuaW1hdGUoYixhLGMsZCl9fSksci50aW1lcnM9W10sci5meC50aWNrPWZ1bmN0aW9uKCl7dmFy
IGEsYj0wLGM9ci50aW1lcnM7Zm9yKFphPXIubm93KCk7YjxjLmxlbmd0aDtiKyspYT1jW2JdLGEo
KXx8Y1tiXSE9PWF8fGMuc3BsaWNlKGItLSwxKTtjLmxlbmd0aHx8ci5meC5zdG9wKCksWmE9dm9p
ZCAwfSxyLmZ4LnRpbWVyPWZ1bmN0aW9uKGEpe3IudGltZXJzLnB1c2goYSksYSgpP3IuZnguc3Rh
cnQoKTpyLnRpbWVycy5wb3AoKX0sci5meC5pbnRlcnZhbD0xMyxyLmZ4LnN0YXJ0PWZ1bmN0aW9u
KCl7JGF8fCgkYT1hLnJlcXVlc3RBbmltYXRpb25GcmFtZT9hLnJlcXVlc3RBbmltYXRpb25GcmFt
ZShiYik6YS5zZXRJbnRlcnZhbChyLmZ4LnRpY2ssci5meC5pbnRlcnZhbCkpfSxyLmZ4LnN0b3A9
ZnVuY3Rpb24oKXthLmNhbmNlbEFuaW1hdGlvbkZyYW1lP2EuY2FuY2VsQW5pbWF0aW9uRnJhbWUo
JGEpOmEuY2xlYXJJbnRlcnZhbCgkYSksJGE9bnVsbH0sci5meC5zcGVlZHM9e3Nsb3c6NjAwLGZh
c3Q6MjAwLF9kZWZhdWx0OjQwMH0sci5mbi5kZWxheT1mdW5jdGlvbihiLGMpe3JldHVybiBiPXIu
Zng/ci5meC5zcGVlZHNbYl18fGI6YixjPWN8fCJmeCIsdGhpcy5xdWV1ZShjLGZ1bmN0aW9uKGMs
ZCl7dmFyIGU9YS5zZXRUaW1lb3V0KGMsYik7ZC5zdG9wPWZ1bmN0aW9uKCl7YS5jbGVhclRpbWVv
dXQoZSl9fSl9LGZ1bmN0aW9uKCl7dmFyIGE9ZC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpLGI9ZC5j
cmVhdGVFbGVtZW50KCJzZWxlY3QiKSxjPWIuYXBwZW5kQ2hpbGQoZC5jcmVhdGVFbGVtZW50KCJv
cHRpb24iKSk7YS50eXBlPSJjaGVja2JveCIsby5jaGVja09uPSIiIT09YS52YWx1ZSxvLm9wdFNl
bGVjdGVkPWMuc2VsZWN0ZWQsYT1kLmNyZWF0ZUVsZW1lbnQoImlucHV0IiksYS52YWx1ZT0idCIs
YS50eXBlPSJyYWRpbyIsby5yYWRpb1ZhbHVlPSJ0Ij09PWEudmFsdWV9KCk7dmFyIGliLGpiPXIu
ZXhwci5hdHRySGFuZGxlO3IuZm4uZXh0ZW5kKHthdHRyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIFMo
dGhpcyxyLmF0dHIsYSxiLGFyZ3VtZW50cy5sZW5ndGg+MSl9LHJlbW92ZUF0dHI6ZnVuY3Rpb24o
YSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3IucmVtb3ZlQXR0cih0aGlzLGEpfSl9fSks
ci5leHRlbmQoe2F0dHI6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZj1hLm5vZGVUeXBlO2lmKDMh
PT1mJiY4IT09ZiYmMiE9PWYpcmV0dXJuInVuZGVmaW5lZCI9PXR5cGVvZiBhLmdldEF0dHJpYnV0
ZT9yLnByb3AoYSxiLGMpOigxPT09ZiYmci5pc1hNTERvYyhhKXx8KGU9ci5hdHRySG9va3NbYi50
b0xvd2VyQ2FzZSgpXXx8KHIuZXhwci5tYXRjaC5ib29sLnRlc3QoYik/aWI6dm9pZCAwKSksCit2
b2lkIDAhPT1jP251bGw9PT1jP3ZvaWQgci5yZW1vdmVBdHRyKGEsYik6ZSYmInNldCJpbiBlJiZ2
b2lkIDAhPT0oZD1lLnNldChhLGMsYikpP2Q6KGEuc2V0QXR0cmlidXRlKGIsYysiIiksYyk6ZSYm
ImdldCJpbiBlJiZudWxsIT09KGQ9ZS5nZXQoYSxiKSk/ZDooZD1yLmZpbmQuYXR0cihhLGIpLG51
bGw9PWQ/dm9pZCAwOmQpKX0sYXR0ckhvb2tzOnt0eXBlOntzZXQ6ZnVuY3Rpb24oYSxiKXtpZigh
by5yYWRpb1ZhbHVlJiYicmFkaW8iPT09YiYmci5ub2RlTmFtZShhLCJpbnB1dCIpKXt2YXIgYz1h
LnZhbHVlO3JldHVybiBhLnNldEF0dHJpYnV0ZSgidHlwZSIsYiksYyYmKGEudmFsdWU9YyksYn19
fX0scmVtb3ZlQXR0cjpmdW5jdGlvbihhLGIpe3ZhciBjLGQ9MCxlPWImJmIubWF0Y2goSyk7aWYo
ZSYmMT09PWEubm9kZVR5cGUpd2hpbGUoYz1lW2QrK10pYS5yZW1vdmVBdHRyaWJ1dGUoYyl9fSks
aWI9e3NldDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGI9PT0hMT9yLnJlbW92ZUF0dHIoYSxjKTph
LnNldEF0dHJpYnV0ZShjLGMpLGN9fSxyLmVhY2goci5leHByLm1hdGNoLmJvb2wuc291cmNlLm1h
dGNoKC9cdysvZyksZnVuY3Rpb24oYSxiKXt2YXIgYz1qYltiXXx8ci5maW5kLmF0dHI7amJbYl09
ZnVuY3Rpb24oYSxiLGQpe3ZhciBlLGYsZz1iLnRvTG93ZXJDYXNlKCk7cmV0dXJuIGR8fChmPWpi
W2ddLGpiW2ddPWUsZT1udWxsIT1jKGEsYixkKT9nOm51bGwsamJbZ109ZiksZX19KTt2YXIga2I9
L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaSxsYj0vXig/OmF8YXJlYSkkL2k7
ci5mbi5leHRlbmQoe3Byb3A6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gUyh0aGlzLHIucHJvcCxhLGIs
YXJndW1lbnRzLmxlbmd0aD4xKX0scmVtb3ZlUHJvcDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5l
YWNoKGZ1bmN0aW9uKCl7ZGVsZXRlIHRoaXNbci5wcm9wRml4W2FdfHxhXX0pfX0pLHIuZXh0ZW5k
KHtwcm9wOmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGY9YS5ub2RlVHlwZTtpZigzIT09ZiYmOCE9
PWYmJjIhPT1mKXJldHVybiAxPT09ZiYmci5pc1hNTERvYyhhKXx8KGI9ci5wcm9wRml4W2JdfHxi
LGU9ci5wcm9wSG9va3NbYl0pLHZvaWQgMCE9PWM/ZSYmInNldCJpbiBlJiZ2b2lkIDAhPT0oZD1l
LnNldChhLGMsYikpP2Q6YVtiXT1jOmUmJiJnZXQiaW4gZSYmbnVsbCE9PShkPWUuZ2V0KGEsYikp
P2Q6YVtiXX0scHJvcEhvb2tzOnt0YWJJbmRleDp7Z2V0OmZ1bmN0aW9uKGEpe3ZhciBiPXIuZmlu
ZC5hdHRyKGEsInRhYmluZGV4Iik7cmV0dXJuIGI/cGFyc2VJbnQoYiwxMCk6a2IudGVzdChhLm5v
ZGVOYW1lKXx8bGIudGVzdChhLm5vZGVOYW1lKSYmYS5ocmVmPzA6LTF9fX0scHJvcEZpeDp7ImZv
ciI6Imh0bWxGb3IiLCJjbGFzcyI6ImNsYXNzTmFtZSJ9fSksby5vcHRTZWxlY3RlZHx8KHIucHJv
cEhvb2tzLnNlbGVjdGVkPXtnZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5wYXJlbnROb2RlO3JldHVy
biBiJiZiLnBhcmVudE5vZGUmJmIucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4LG51bGx9LHNldDpm
dW5jdGlvbihhKXt2YXIgYj1hLnBhcmVudE5vZGU7YiYmKGIuc2VsZWN0ZWRJbmRleCxiLnBhcmVu
dE5vZGUmJmIucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4KX19KSxyLmVhY2goWyJ0YWJJbmRleCIs
InJlYWRPbmx5IiwibWF4TGVuZ3RoIiwiY2VsbFNwYWNpbmciLCJjZWxsUGFkZGluZyIsInJvd1Nw
YW4iLCJjb2xTcGFuIiwidXNlTWFwIiwiZnJhbWVCb3JkZXIiLCJjb250ZW50RWRpdGFibGUiXSxm
dW5jdGlvbigpe3IucHJvcEZpeFt0aGlzLnRvTG93ZXJDYXNlKCldPXRoaXN9KTtmdW5jdGlvbiBt
YihhKXt2YXIgYj1hLm1hdGNoKEspfHxbXTtyZXR1cm4gYi5qb2luKCIgIil9ZnVuY3Rpb24gbmIo
YSl7cmV0dXJuIGEuZ2V0QXR0cmlidXRlJiZhLmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiJ9ci5m
bi5leHRlbmQoe2FkZENsYXNzOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlLGYsZyxoLGk9MDtpZihy
LmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXtyKHRoaXMpLmFkZENs
YXNzKGEuY2FsbCh0aGlzLGIsbmIodGhpcykpKX0pO2lmKCJzdHJpbmciPT10eXBlb2YgYSYmYSl7
Yj1hLm1hdGNoKEspfHxbXTt3aGlsZShjPXRoaXNbaSsrXSlpZihlPW5iKGMpLGQ9MT09PWMubm9k
ZVR5cGUmJiIgIittYihlKSsiICIpe2c9MDt3aGlsZShmPWJbZysrXSlkLmluZGV4T2YoIiAiK2Yr
IiAiKTwwJiYoZCs9ZisiICIpO2g9bWIoZCksZSE9PWgmJmMuc2V0QXR0cmlidXRlKCJjbGFzcyIs
aCl9fXJldHVybiB0aGlzfSxyZW1vdmVDbGFzczpmdW5jdGlvbihhKXt2YXIgYixjLGQsZSxmLGcs
aCxpPTA7aWYoci5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYil7cih0
aGlzKS5yZW1vdmVDbGFzcyhhLmNhbGwodGhpcyxiLG5iKHRoaXMpKSl9KTtpZighYXJndW1lbnRz
Lmxlbmd0aClyZXR1cm4gdGhpcy5hdHRyKCJjbGFzcyIsIiIpO2lmKCJzdHJpbmciPT10eXBlb2Yg
YSYmYSl7Yj1hLm1hdGNoKEspfHxbXTt3aGlsZShjPXRoaXNbaSsrXSlpZihlPW5iKGMpLGQ9MT09
PWMubm9kZVR5cGUmJiIgIittYihlKSsiICIpe2c9MDt3aGlsZShmPWJbZysrXSl3aGlsZShkLmlu
ZGV4T2YoIiAiK2YrIiAiKT4tMSlkPWQucmVwbGFjZSgiICIrZisiICIsIiAiKTtoPW1iKGQpLGUh
PT1oJiZjLnNldEF0dHJpYnV0ZSgiY2xhc3MiLGgpfX1yZXR1cm4gdGhpc30sdG9nZ2xlQ2xhc3M6
ZnVuY3Rpb24oYSxiKXt2YXIgYz10eXBlb2YgYTtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiBiJiYi
c3RyaW5nIj09PWM/Yj90aGlzLmFkZENsYXNzKGEpOnRoaXMucmVtb3ZlQ2xhc3MoYSk6ci5pc0Z1
bmN0aW9uKGEpP3RoaXMuZWFjaChmdW5jdGlvbihjKXtyKHRoaXMpLnRvZ2dsZUNsYXNzKGEuY2Fs
bCh0aGlzLGMsbmIodGhpcyksYiksYil9KTp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYixkLGUs
ZjtpZigic3RyaW5nIj09PWMpe2Q9MCxlPXIodGhpcyksZj1hLm1hdGNoKEspfHxbXTt3aGlsZShi
PWZbZCsrXSllLmhhc0NsYXNzKGIpP2UucmVtb3ZlQ2xhc3MoYik6ZS5hZGRDbGFzcyhiKX1lbHNl
IHZvaWQgMCE9PWEmJiJib29sZWFuIiE9PWN8fChiPW5iKHRoaXMpLGImJlYuc2V0KHRoaXMsIl9f
Y2xhc3NOYW1lX18iLGIpLHRoaXMuc2V0QXR0cmlidXRlJiZ0aGlzLnNldEF0dHJpYnV0ZSgiY2xh
c3MiLGJ8fGE9PT0hMT8iIjpWLmdldCh0aGlzLCJfX2NsYXNzTmFtZV9fIil8fCIiKSl9KX0saGFz
Q2xhc3M6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkPTA7Yj0iICIrYSsiICI7d2hpbGUoYz10aGlzW2Qr
K10paWYoMT09PWMubm9kZVR5cGUmJigiICIrbWIobmIoYykpKyIgIikuaW5kZXhPZihiKT4tMSly
ZXR1cm4hMDtyZXR1cm4hMX19KTt2YXIgb2I9L1xyL2c7ci5mbi5leHRlbmQoe3ZhbDpmdW5jdGlv
bihhKXt2YXIgYixjLGQsZT10aGlzWzBdO3tpZihhcmd1bWVudHMubGVuZ3RoKXJldHVybiBkPXIu
aXNGdW5jdGlvbihhKSx0aGlzLmVhY2goZnVuY3Rpb24oYyl7dmFyIGU7MT09PXRoaXMubm9kZVR5
cGUmJihlPWQ/YS5jYWxsKHRoaXMsYyxyKHRoaXMpLnZhbCgpKTphLG51bGw9PWU/ZT0iIjoibnVt
YmVyIj09dHlwZW9mIGU/ZSs9IiI6ci5pc0FycmF5KGUpJiYoZT1yLm1hcChlLGZ1bmN0aW9uKGEp
e3JldHVybiBudWxsPT1hPyIiOmErIiJ9KSksYj1yLnZhbEhvb2tzW3RoaXMudHlwZV18fHIudmFs
SG9va3NbdGhpcy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSxiJiYic2V0ImluIGImJnZvaWQgMCE9
PWIuc2V0KHRoaXMsZSwidmFsdWUiKXx8KHRoaXMudmFsdWU9ZSkpfSk7aWYoZSlyZXR1cm4gYj1y
LnZhbEhvb2tzW2UudHlwZV18fHIudmFsSG9va3NbZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSxi
JiYiZ2V0ImluIGImJnZvaWQgMCE9PShjPWIuZ2V0KGUsInZhbHVlIikpP2M6KGM9ZS52YWx1ZSwi
c3RyaW5nIj09dHlwZW9mIGM/Yy5yZXBsYWNlKG9iLCIiKTpudWxsPT1jPyIiOmMpfX19KSxyLmV4
dGVuZCh7dmFsSG9va3M6e29wdGlvbjp7Z2V0OmZ1bmN0aW9uKGEpe3ZhciBiPXIuZmluZC5hdHRy
KGEsInZhbHVlIik7cmV0dXJuIG51bGwhPWI/YjptYihyLnRleHQoYSkpfX0sc2VsZWN0OntnZXQ6
ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGU9YS5vcHRpb25zLGY9YS5zZWxlY3RlZEluZGV4LGc9InNl
bGVjdC1vbmUiPT09YS50eXBlLGg9Zz9udWxsOltdLGk9Zz9mKzE6ZS5sZW5ndGg7Zm9yKGQ9Zjww
P2k6Zz9mOjA7ZDxpO2QrKylpZihjPWVbZF0sKGMuc2VsZWN0ZWR8fGQ9PT1mKSYmIWMuZGlzYWJs
ZWQmJighYy5wYXJlbnROb2RlLmRpc2FibGVkfHwhci5ub2RlTmFtZShjLnBhcmVudE5vZGUsIm9w
dGdyb3VwIikpKXtpZihiPXIoYykudmFsKCksZylyZXR1cm4gYjtoLnB1c2goYil9cmV0dXJuIGh9
LHNldDpmdW5jdGlvbihhLGIpe3ZhciBjLGQsZT1hLm9wdGlvbnMsZj1yLm1ha2VBcnJheShiKSxn
PWUubGVuZ3RoO3doaWxlKGctLSlkPWVbZ10sKGQuc2VsZWN0ZWQ9ci5pbkFycmF5KHIudmFsSG9v
a3Mub3B0aW9uLmdldChkKSxmKT4tMSkmJihjPSEwKTtyZXR1cm4gY3x8KGEuc2VsZWN0ZWRJbmRl
eD0tMSksZn19fX0pLHIuZWFjaChbInJhZGlvIiwiY2hlY2tib3giXSxmdW5jdGlvbigpe3IudmFs
SG9va3NbdGhpc109e3NldDpmdW5jdGlvbihhLGIpe2lmKHIuaXNBcnJheShiKSlyZXR1cm4gYS5j
aGVja2VkPXIuaW5BcnJheShyKGEpLnZhbCgpLGIpPi0xfX0sby5jaGVja09ufHwoci52YWxIb29r
c1t0aGlzXS5nZXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PT1hLmdldEF0dHJpYnV0ZSgidmFs
dWUiKT8ib24iOmEudmFsdWV9KX0pO3ZhciBwYj0vXig/OmZvY3VzaW5mb2N1c3xmb2N1c291dGJs
dXIpJC87ci5leHRlbmQoci5ldmVudCx7dHJpZ2dlcjpmdW5jdGlvbihiLGMsZSxmKXt2YXIgZyxo
LGksaixrLG0sbixvPVtlfHxkXSxwPWwuY2FsbChiLCJ0eXBlIik/Yi50eXBlOmIscT1sLmNhbGwo
YiwibmFtZXNwYWNlIik/Yi5uYW1lc3BhY2Uuc3BsaXQoIi4iKTpbXTtpZihoPWk9ZT1lfHxkLDMh
PT1lLm5vZGVUeXBlJiY4IT09ZS5ub2RlVHlwZSYmIXBiLnRlc3QocCtyLmV2ZW50LnRyaWdnZXJl
ZCkmJihwLmluZGV4T2YoIi4iKT4tMSYmKHE9cC5zcGxpdCgiLiIpLHA9cS5zaGlmdCgpLHEuc29y
dCgpKSxrPXAuaW5kZXhPZigiOiIpPDAmJiJvbiIrcCxiPWJbci5leHBhbmRvXT9iOm5ldyByLkV2
ZW50KHAsIm9iamVjdCI9PXR5cGVvZiBiJiZiKSxiLmlzVHJpZ2dlcj1mPzI6MyxiLm5hbWVzcGFj
ZT1xLmpvaW4oIi4iKSxiLnJuYW1lc3BhY2U9Yi5uYW1lc3BhY2U/bmV3IFJlZ0V4cCgiKF58XFwu
KSIrcS5qb2luKCJcXC4oPzouKlxcLnwpIikrIihcXC58JCkiKTpudWxsLGIucmVzdWx0PXZvaWQg
MCxiLnRhcmdldHx8KGIudGFyZ2V0PWUpLGM9bnVsbD09Yz9bYl06ci5tYWtlQXJyYXkoYyxbYl0p
LG49ci5ldmVudC5zcGVjaWFsW3BdfHx7fSxmfHwhbi50cmlnZ2VyfHxuLnRyaWdnZXIuYXBwbHko
ZSxjKSE9PSExKSl7aWYoIWYmJiFuLm5vQnViYmxlJiYhci5pc1dpbmRvdyhlKSl7Zm9yKGo9bi5k
ZWxlZ2F0ZVR5cGV8fHAscGIudGVzdChqK3ApfHwoaD1oLnBhcmVudE5vZGUpO2g7aD1oLnBhcmVu
dE5vZGUpby5wdXNoKGgpLGk9aDtpPT09KGUub3duZXJEb2N1bWVudHx8ZCkmJm8ucHVzaChpLmRl
ZmF1bHRWaWV3fHxpLnBhcmVudFdpbmRvd3x8YSl9Zz0wO3doaWxlKChoPW9bZysrXSkmJiFiLmlz
UHJvcGFnYXRpb25TdG9wcGVkKCkpYi50eXBlPWc+MT9qOm4uYmluZFR5cGV8fHAsbT0oVi5nZXQo
aCwiZXZlbnRzIil8fHt9KVtiLnR5cGVdJiZWLmdldChoLCJoYW5kbGUiKSxtJiZtLmFwcGx5KGgs
YyksbT1rJiZoW2tdLG0mJm0uYXBwbHkmJlQoaCkmJihiLnJlc3VsdD1tLmFwcGx5KGgsYyksYi5y
ZXN1bHQ9PT0hMSYmYi5wcmV2ZW50RGVmYXVsdCgpKTtyZXR1cm4gYi50eXBlPXAsZnx8Yi5pc0Rl
ZmF1bHRQcmV2ZW50ZWQoKXx8bi5fZGVmYXVsdCYmbi5fZGVmYXVsdC5hcHBseShvLnBvcCgpLGMp
IT09ITF8fCFUKGUpfHxrJiZyLmlzRnVuY3Rpb24oZVtwXSkmJiFyLmlzV2luZG93KGUpJiYoaT1l
W2tdLGkmJihlW2tdPW51bGwpLHIuZXZlbnQudHJpZ2dlcmVkPXAsZVtwXSgpLHIuZXZlbnQudHJp
Z2dlcmVkPXZvaWQgMCxpJiYoZVtrXT1pKSksYi5yZXN1bHR9fSxzaW11bGF0ZTpmdW5jdGlvbihh
LGIsYyl7dmFyIGQ9ci5leHRlbmQobmV3IHIuRXZlbnQsYyx7dHlwZTphLGlzU2ltdWxhdGVkOiEw
fSk7ci5ldmVudC50cmlnZ2VyKGQsbnVsbCxiKX19KSxyLmZuLmV4dGVuZCh7dHJpZ2dlcjpmdW5j
dGlvbihhLGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtyLmV2ZW50LnRyaWdnZXIoYSxi
LHRoaXMpfSl9LHRyaWdnZXJIYW5kbGVyOmZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpc1swXTtpZihj
KXJldHVybiByLmV2ZW50LnRyaWdnZXIoYSxiLGMsITApfX0pLHIuZWFjaCgiYmx1ciBmb2N1cyBm
b2N1c2luIGZvY3Vzb3V0IHJlc2l6ZSBzY3JvbGwgY2xpY2sgZGJsY2xpY2sgbW91c2Vkb3duIG1v
dXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUg
Y2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBjb250ZXh0bWVudSIu
c3BsaXQoIiAiKSxmdW5jdGlvbihhLGIpe3IuZm5bYl09ZnVuY3Rpb24oYSxjKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD4wP3RoaXMub24oYixudWxsLGEsYyk6dGhpcy50cmlnZ2VyKGIpfX0pLHIu
Zm4uZXh0ZW5kKHtob3ZlcjpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm1vdXNlZW50ZXIoYSku
bW91c2VsZWF2ZShifHxhKX19KSxvLmZvY3VzaW49Im9uZm9jdXNpbiJpbiBhLG8uZm9jdXNpbnx8
ci5lYWNoKHtmb2N1czoiZm9jdXNpbiIsYmx1cjoiZm9jdXNvdXQifSxmdW5jdGlvbihhLGIpe3Zh
ciBjPWZ1bmN0aW9uKGEpe3IuZXZlbnQuc2ltdWxhdGUoYixhLnRhcmdldCxyLmV2ZW50LmZpeChh
KSl9O3IuZXZlbnQuc3BlY2lhbFtiXT17c2V0dXA6ZnVuY3Rpb24oKXt2YXIgZD10aGlzLm93bmVy
RG9jdW1lbnR8fHRoaXMsZT1WLmFjY2VzcyhkLGIpO2V8fGQuYWRkRXZlbnRMaXN0ZW5lcihhLGMs
ITApLFYuYWNjZXNzKGQsYiwoZXx8MCkrMSl9LHRlYXJkb3duOmZ1bmN0aW9uKCl7dmFyIGQ9dGhp
cy5vd25lckRvY3VtZW50fHx0aGlzLGU9Vi5hY2Nlc3MoZCxiKS0xO2U/Vi5hY2Nlc3MoZCxiLGUp
OihkLnJlbW92ZUV2ZW50TGlzdGVuZXIoYSxjLCEwKSxWLnJlbW92ZShkLGIpKX19fSk7dmFyIHFi
PWEubG9jYXRpb24scmI9ci5ub3coKSxzYj0vXD8vO3IucGFyc2VYTUw9ZnVuY3Rpb24oYil7dmFy
IGM7aWYoIWJ8fCJzdHJpbmciIT10eXBlb2YgYilyZXR1cm4gbnVsbDt0cnl7Yz0obmV3IGEuRE9N
UGFyc2VyKS5wYXJzZUZyb21TdHJpbmcoYiwidGV4dC94bWwiKX1jYXRjaChkKXtjPXZvaWQgMH1y
ZXR1cm4gYyYmIWMuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInBhcnNlcmVycm9yIikubGVuZ3RofHxy
LmVycm9yKCJJbnZhbGlkIFhNTDogIitiKSxjfTt2YXIgdGI9L1xbXF0kLyx1Yj0vXHI/XG4vZyx2
Yj0vXig/OnN1Ym1pdHxidXR0b258aW1hZ2V8cmVzZXR8ZmlsZSkkL2ksd2I9L14oPzppbnB1dHxz
ZWxlY3R8dGV4dGFyZWF8a2V5Z2VuKS9pO2Z1bmN0aW9uIHhiKGEsYixjLGQpe3ZhciBlO2lmKHIu
aXNBcnJheShiKSlyLmVhY2goYixmdW5jdGlvbihiLGUpe2N8fHRiLnRlc3QoYSk/ZChhLGUpOnhi
KGErIlsiKygib2JqZWN0Ij09dHlwZW9mIGUmJm51bGwhPWU/YjoiIikrIl0iLGUsYyxkKX0pO2Vs
c2UgaWYoY3x8Im9iamVjdCIhPT1yLnR5cGUoYikpZChhLGIpO2Vsc2UgZm9yKGUgaW4gYil4Yihh
KyJbIitlKyJdIixiW2VdLGMsZCl9ci5wYXJhbT1mdW5jdGlvbihhLGIpe3ZhciBjLGQ9W10sZT1m
dW5jdGlvbihhLGIpe3ZhciBjPXIuaXNGdW5jdGlvbihiKT9iKCk6YjtkW2QubGVuZ3RoXT1lbmNv
ZGVVUklDb21wb25lbnQoYSkrIj0iK2VuY29kZVVSSUNvbXBvbmVudChudWxsPT1jPyIiOmMpfTtp
ZihyLmlzQXJyYXkoYSl8fGEuanF1ZXJ5JiYhci5pc1BsYWluT2JqZWN0KGEpKXIuZWFjaChhLGZ1
bmN0aW9uKCl7ZSh0aGlzLm5hbWUsdGhpcy52YWx1ZSl9KTtlbHNlIGZvcihjIGluIGEpeGIoYyxh
W2NdLGIsZSk7cmV0dXJuIGQuam9pbigiJiIpfSxyLmZuLmV4dGVuZCh7c2VyaWFsaXplOmZ1bmN0
aW9uKCl7cmV0dXJuIHIucGFyYW0odGhpcy5zZXJpYWxpemVBcnJheSgpKX0sc2VyaWFsaXplQXJy
YXk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXt2YXIgYT1yLnByb3AodGhp
cywiZWxlbWVudHMiKTtyZXR1cm4gYT9yLm1ha2VBcnJheShhKTp0aGlzfSkuZmlsdGVyKGZ1bmN0
aW9uKCl7dmFyIGE9dGhpcy50eXBlO3JldHVybiB0aGlzLm5hbWUmJiFyKHRoaXMpLmlzKCI6ZGlz
YWJsZWQiKSYmd2IudGVzdCh0aGlzLm5vZGVOYW1lKSYmIXZiLnRlc3QoYSkmJih0aGlzLmNoZWNr
ZWR8fCFpYS50ZXN0KGEpKX0pLm1hcChmdW5jdGlvbihhLGIpe3ZhciBjPXIodGhpcykudmFsKCk7
cmV0dXJuIG51bGw9PWM/bnVsbDpyLmlzQXJyYXkoYyk/ci5tYXAoYyxmdW5jdGlvbihhKXtyZXR1
cm57bmFtZTpiLm5hbWUsdmFsdWU6YS5yZXBsYWNlKHViLCJcclxuIil9fSk6e25hbWU6Yi5uYW1l
LHZhbHVlOmMucmVwbGFjZSh1YiwiXHJcbiIpfX0pLmdldCgpfX0pO3ZhciB5Yj0vJTIwL2csemI9
LyMuKiQvLEFiPS8oWz8mXSlfPVteJl0qLyxCYj0vXiguKj8pOlsgXHRdKihbXlxyXG5dKikkL2dt
LENiPS9eKD86YWJvdXR8YXBwfGFwcC1zdG9yYWdlfC4rLWV4dGVuc2lvbnxmaWxlfHJlc3x3aWRn
ZXQpOiQvLERiPS9eKD86R0VUfEhFQUQpJC8sRWI9L15cL1wvLyxGYj17fSxHYj17fSxIYj0iKi8i
LmNvbmNhdCgiKiIpLEliPWQuY3JlYXRlRWxlbWVudCgiYSIpO0liLmhyZWY9cWIuaHJlZjtmdW5j
dGlvbiBKYihhKXtyZXR1cm4gZnVuY3Rpb24oYixjKXsic3RyaW5nIiE9dHlwZW9mIGImJihjPWIs
Yj0iKiIpO3ZhciBkLGU9MCxmPWIudG9Mb3dlckNhc2UoKS5tYXRjaChLKXx8W107aWYoci5pc0Z1
bmN0aW9uKGMpKXdoaWxlKGQ9ZltlKytdKSIrIj09PWRbMF0/KGQ9ZC5zbGljZSgxKXx8IioiLChh
W2RdPWFbZF18fFtdKS51bnNoaWZ0KGMpKTooYVtkXT1hW2RdfHxbXSkucHVzaChjKX19ZnVuY3Rp
b24gS2IoYSxiLGMsZCl7dmFyIGU9e30sZj1hPT09R2I7ZnVuY3Rpb24gZyhoKXt2YXIgaTtyZXR1
cm4gZVtoXT0hMCxyLmVhY2goYVtoXXx8W10sZnVuY3Rpb24oYSxoKXt2YXIgaj1oKGIsYyxkKTty
ZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGp8fGZ8fGVbal0/Zj8hKGk9aik6dm9pZCAwOihiLmRhdGFU
eXBlcy51bnNoaWZ0KGopLGcoaiksITEpfSksaX1yZXR1cm4gZyhiLmRhdGFUeXBlc1swXSl8fCFl
WyIqIl0mJmcoIioiKX1mdW5jdGlvbiBMYihhLGIpe3ZhciBjLGQsZT1yLmFqYXhTZXR0aW5ncy5m
bGF0T3B0aW9uc3x8e307Zm9yKGMgaW4gYil2b2lkIDAhPT1iW2NdJiYoKGVbY10/YTpkfHwoZD17
fSkpW2NdPWJbY10pO3JldHVybiBkJiZyLmV4dGVuZCghMCxhLGQpLGF9ZnVuY3Rpb24gTWIoYSxi
LGMpe3ZhciBkLGUsZixnLGg9YS5jb250ZW50cyxpPWEuZGF0YVR5cGVzO3doaWxlKCIqIj09PWlb
MF0paS5zaGlmdCgpLHZvaWQgMD09PWQmJihkPWEubWltZVR5cGV8fGIuZ2V0UmVzcG9uc2VIZWFk
ZXIoIkNvbnRlbnQtVHlwZSIpKTtpZihkKWZvcihlIGluIGgpaWYoaFtlXSYmaFtlXS50ZXN0KGQp
KXtpLnVuc2hpZnQoZSk7YnJlYWt9aWYoaVswXWluIGMpZj1pWzBdO2Vsc2V7Zm9yKGUgaW4gYyl7
aWYoIWlbMF18fGEuY29udmVydGVyc1tlKyIgIitpWzBdXSl7Zj1lO2JyZWFrfWd8fChnPWUpfWY9
Znx8Z31pZihmKXJldHVybiBmIT09aVswXSYmaS51bnNoaWZ0KGYpLGNbZl19ZnVuY3Rpb24gTmIo
YSxiLGMsZCl7dmFyIGUsZixnLGgsaSxqPXt9LGs9YS5kYXRhVHlwZXMuc2xpY2UoKTtpZihrWzFd
KWZvcihnIGluIGEuY29udmVydGVycylqW2cudG9Mb3dlckNhc2UoKV09YS5jb252ZXJ0ZXJzW2dd
O2Y9ay5zaGlmdCgpO3doaWxlKGYpaWYoYS5yZXNwb25zZUZpZWxkc1tmXSYmKGNbYS5yZXNwb25z
ZUZpZWxkc1tmXV09YiksIWkmJmQmJmEuZGF0YUZpbHRlciYmKGI9YS5kYXRhRmlsdGVyKGIsYS5k
YXRhVHlwZSkpLGk9ZixmPWsuc2hpZnQoKSlpZigiKiI9PT1mKWY9aTtlbHNlIGlmKCIqIiE9PWkm
JmkhPT1mKXtpZihnPWpbaSsiICIrZl18fGpbIiogIitmXSwhZylmb3IoZSBpbiBqKWlmKGg9ZS5z
cGxpdCgiICIpLGhbMV09PT1mJiYoZz1qW2krIiAiK2hbMF1dfHxqWyIqICIraFswXV0pKXtnPT09
ITA/Zz1qW2VdOmpbZV0hPT0hMCYmKGY9aFswXSxrLnVuc2hpZnQoaFsxXSkpO2JyZWFrfWlmKGch
PT0hMClpZihnJiZhWyJ0aHJvd3MiXSliPWcoYik7ZWxzZSB0cnl7Yj1nKGIpfWNhdGNoKGwpe3Jl
dHVybntzdGF0ZToicGFyc2VyZXJyb3IiLGVycm9yOmc/bDoiTm8gY29udmVyc2lvbiBmcm9tICIr
aSsiIHRvICIrZn19fXJldHVybntzdGF0ZToic3VjY2VzcyIsZGF0YTpifX1yLmV4dGVuZCh7YWN0
aXZlOjAsbGFzdE1vZGlmaWVkOnt9LGV0YWc6e30sYWpheFNldHRpbmdzOnt1cmw6cWIuaHJlZix0
eXBlOiJHRVQiLGlzTG9jYWw6Q2IudGVzdChxYi5wcm90b2NvbCksZ2xvYmFsOiEwLHByb2Nlc3NE
YXRhOiEwLGFzeW5jOiEwLGNvbnRlbnRUeXBlOiJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVu
Y29kZWQ7IGNoYXJzZXQ9VVRGLTgiLGFjY2VwdHM6eyIqIjpIYix0ZXh0OiJ0ZXh0L3BsYWluIixo
dG1sOiJ0ZXh0L2h0bWwiLHhtbDoiYXBwbGljYXRpb24veG1sLCB0ZXh0L3htbCIsanNvbjoiYXBw
bGljYXRpb24vanNvbiwgdGV4dC9qYXZhc2NyaXB0In0sY29udGVudHM6e3htbDovXGJ4bWxcYi8s
aHRtbDovXGJodG1sLyxqc29uOi9cYmpzb25cYi99LHJlc3BvbnNlRmllbGRzOnt4bWw6InJlc3Bv
bnNlWE1MIix0ZXh0OiJyZXNwb25zZVRleHQiLGpzb246InJlc3BvbnNlSlNPTiJ9LGNvbnZlcnRl
cnM6eyIqIHRleHQiOlN0cmluZywidGV4dCBodG1sIjohMCwidGV4dCBqc29uIjpKU09OLnBhcnNl
LCJ0ZXh0IHhtbCI6ci5wYXJzZVhNTH0sZmxhdE9wdGlvbnM6e3VybDohMCxjb250ZXh0OiEwfX0s
YWpheFNldHVwOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGI/TGIoTGIoYSxyLmFqYXhTZXR0aW5ncyks
Yik6TGIoci5hamF4U2V0dGluZ3MsYSl9LGFqYXhQcmVmaWx0ZXI6SmIoRmIpLGFqYXhUcmFuc3Bv
cnQ6SmIoR2IpLGFqYXg6ZnVuY3Rpb24oYixjKXsib2JqZWN0Ij09dHlwZW9mIGImJihjPWIsYj12
b2lkIDApLGM9Y3x8e307dmFyIGUsZixnLGgsaSxqLGssbCxtLG4sbz1yLmFqYXhTZXR1cCh7fSxj
KSxwPW8uY29udGV4dHx8byxxPW8uY29udGV4dCYmKHAubm9kZVR5cGV8fHAuanF1ZXJ5KT9yKHAp
OnIuZXZlbnQscz1yLkRlZmVycmVkKCksdD1yLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSx1PW8u
c3RhdHVzQ29kZXx8e30sdj17fSx3PXt9LHg9ImNhbmNlbGVkIix5PXtyZWFkeVN0YXRlOjAsZ2V0
UmVzcG9uc2VIZWFkZXI6ZnVuY3Rpb24oYSl7dmFyIGI7aWYoayl7aWYoIWgpe2g9e307d2hpbGUo
Yj1CYi5leGVjKGcpKWhbYlsxXS50b0xvd2VyQ2FzZSgpXT1iWzJdfWI9aFthLnRvTG93ZXJDYXNl
KCldfXJldHVybiBudWxsPT1iP251bGw6Yn0sZ2V0QWxsUmVzcG9uc2VIZWFkZXJzOmZ1bmN0aW9u
KCl7cmV0dXJuIGs/ZzpudWxsfSxzZXRSZXF1ZXN0SGVhZGVyOmZ1bmN0aW9uKGEsYil7cmV0dXJu
IG51bGw9PWsmJihhPXdbYS50b0xvd2VyQ2FzZSgpXT13W2EudG9Mb3dlckNhc2UoKV18fGEsdlth
XT1iKSx0aGlzfSxvdmVycmlkZU1pbWVUeXBlOmZ1bmN0aW9uKGEpe3JldHVybiBudWxsPT1rJiYo
by5taW1lVHlwZT1hKSx0aGlzfSxzdGF0dXNDb2RlOmZ1bmN0aW9uKGEpe3ZhciBiO2lmKGEpaWYo
ayl5LmFsd2F5cyhhW3kuc3RhdHVzXSk7ZWxzZSBmb3IoYiBpbiBhKXVbYl09W3VbYl0sYVtiXV07
cmV0dXJuIHRoaXN9LGFib3J0OmZ1bmN0aW9uKGEpe3ZhciBiPWF8fHg7cmV0dXJuIGUmJmUuYWJv
cnQoYiksQSgwLGIpLHRoaXN9fTtpZihzLnByb21pc2UoeSksby51cmw9KChifHxvLnVybHx8cWIu
aHJlZikrIiIpLnJlcGxhY2UoRWIscWIucHJvdG9jb2wrIi8vIiksby50eXBlPWMubWV0aG9kfHxj
LnR5cGV8fG8ubWV0aG9kfHxvLnR5cGUsby5kYXRhVHlwZXM9KG8uZGF0YVR5cGV8fCIqIikudG9M
b3dlckNhc2UoKS5tYXRjaChLKXx8WyIiXSxudWxsPT1vLmNyb3NzRG9tYWluKXtqPWQuY3JlYXRl
RWxlbWVudCgiYSIpO3RyeXtqLmhyZWY9by51cmwsai5ocmVmPWouaHJlZixvLmNyb3NzRG9tYWlu
PUliLnByb3RvY29sKyIvLyIrSWIuaG9zdCE9ai5wcm90b2NvbCsiLy8iK2ouaG9zdH1jYXRjaCh6
KXtvLmNyb3NzRG9tYWluPSEwfX1pZihvLmRhdGEmJm8ucHJvY2Vzc0RhdGEmJiJzdHJpbmciIT10
eXBlb2Ygby5kYXRhJiYoby5kYXRhPXIucGFyYW0oby5kYXRhLG8udHJhZGl0aW9uYWwpKSxLYihG
YixvLGMseSksaylyZXR1cm4geTtsPXIuZXZlbnQmJm8uZ2xvYmFsLGwmJjA9PT1yLmFjdGl2ZSsr
JiZyLmV2ZW50LnRyaWdnZXIoImFqYXhTdGFydCIpLG8udHlwZT1vLnR5cGUudG9VcHBlckNhc2Uo
KSxvLmhhc0NvbnRlbnQ9IURiLnRlc3Qoby50eXBlKSxmPW8udXJsLnJlcGxhY2UoemIsIiIpLG8u
aGFzQ29udGVudD9vLmRhdGEmJm8ucHJvY2Vzc0RhdGEmJjA9PT0oby5jb250ZW50VHlwZXx8IiIp
LmluZGV4T2YoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpJiYoby5kYXRhPW8u
ZGF0YS5yZXBsYWNlKHliLCIrIikpOihuPW8udXJsLnNsaWNlKGYubGVuZ3RoKSxvLmRhdGEmJihm
Kz0oc2IudGVzdChmKT8iJiI6Ij8iKStvLmRhdGEsZGVsZXRlIG8uZGF0YSksby5jYWNoZT09PSEx
JiYoZj1mLnJlcGxhY2UoQWIsIiQxIiksbj0oc2IudGVzdChmKT8iJiI6Ij8iKSsiXz0iK3JiKysg
K24pLG8udXJsPWYrbiksby5pZk1vZGlmaWVkJiYoci5sYXN0TW9kaWZpZWRbZl0mJnkuc2V0UmVx
dWVzdEhlYWRlcigiSWYtTW9kaWZpZWQtU2luY2UiLHIubGFzdE1vZGlmaWVkW2ZdKSxyLmV0YWdb
Zl0mJnkuc2V0UmVxdWVzdEhlYWRlcigiSWYtTm9uZS1NYXRjaCIsci5ldGFnW2ZdKSksKG8uZGF0
YSYmby5oYXNDb250ZW50JiZvLmNvbnRlbnRUeXBlIT09ITF8fGMuY29udGVudFR5cGUpJiZ5LnNl
dFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIsby5jb250ZW50VHlwZSkseS5zZXRSZXF1ZXN0
SGVhZGVyKCJBY2NlcHQiLG8uZGF0YVR5cGVzWzBdJiZvLmFjY2VwdHNbby5kYXRhVHlwZXNbMF1d
P28uYWNjZXB0c1tvLmRhdGFUeXBlc1swXV0rKCIqIiE9PW8uZGF0YVR5cGVzWzBdPyIsICIrSGIr
IjsgcT0wLjAxIjoiIik6by5hY2NlcHRzWyIqIl0pO2ZvcihtIGluIG8uaGVhZGVycyl5LnNldFJl
cXVlc3RIZWFkZXIobSxvLmhlYWRlcnNbbV0pO2lmKG8uYmVmb3JlU2VuZCYmKG8uYmVmb3JlU2Vu
ZC5jYWxsKHAseSxvKT09PSExfHxrKSlyZXR1cm4geS5hYm9ydCgpO2lmKHg9ImFib3J0Iix0LmFk
ZChvLmNvbXBsZXRlKSx5LmRvbmUoby5zdWNjZXNzKSx5LmZhaWwoby5lcnJvciksZT1LYihHYixv
LGMseSkpe2lmKHkucmVhZHlTdGF0ZT0xLGwmJnEudHJpZ2dlcigiYWpheFNlbmQiLFt5LG9dKSxr
KXJldHVybiB5O28uYXN5bmMmJm8udGltZW91dD4wJiYoaT1hLnNldFRpbWVvdXQoZnVuY3Rpb24o
KXt5LmFib3J0KCJ0aW1lb3V0Iil9LG8udGltZW91dCkpO3RyeXtrPSExLGUuc2VuZCh2LEEpfWNh
dGNoKHope2lmKGspdGhyb3cgejtBKC0xLHopfX1lbHNlIEEoLTEsIk5vIFRyYW5zcG9ydCIpO2Z1
bmN0aW9uIEEoYixjLGQsaCl7dmFyIGosbSxuLHYsdyx4PWM7a3x8KGs9ITAsaSYmYS5jbGVhclRp
bWVvdXQoaSksZT12b2lkIDAsZz1ofHwiIix5LnJlYWR5U3RhdGU9Yj4wPzQ6MCxqPWI+PTIwMCYm
YjwzMDB8fDMwND09PWIsZCYmKHY9TWIobyx5LGQpKSx2PU5iKG8sdix5LGopLGo/KG8uaWZNb2Rp
ZmllZCYmKHc9eS5nZXRSZXNwb25zZUhlYWRlcigiTGFzdC1Nb2RpZmllZCIpLHcmJihyLmxhc3RN
b2RpZmllZFtmXT13KSx3PXkuZ2V0UmVzcG9uc2VIZWFkZXIoImV0YWciKSx3JiYoci5ldGFnW2Zd
PXcpKSwyMDQ9PT1ifHwiSEVBRCI9PT1vLnR5cGU/eD0ibm9jb250ZW50IjozMDQ9PT1iP3g9Im5v
dG1vZGlmaWVkIjooeD12LnN0YXRlLG09di5kYXRhLG49di5lcnJvcixqPSFuKSk6KG49eCwhYiYm
eHx8KHg9ImVycm9yIixiPDAmJihiPTApKSkseS5zdGF0dXM9Yix5LnN0YXR1c1RleHQ9KGN8fHgp
KyIiLGo/cy5yZXNvbHZlV2l0aChwLFttLHgseV0pOnMucmVqZWN0V2l0aChwLFt5LHgsbl0pLHku
c3RhdHVzQ29kZSh1KSx1PXZvaWQgMCxsJiZxLnRyaWdnZXIoaj8iYWpheFN1Y2Nlc3MiOiJhamF4
RXJyb3IiLFt5LG8saj9tOm5dKSx0LmZpcmVXaXRoKHAsW3kseF0pLGwmJihxLnRyaWdnZXIoImFq
YXhDb21wbGV0ZSIsW3ksb10pLC0tci5hY3RpdmV8fHIuZXZlbnQudHJpZ2dlcigiYWpheFN0b3Ai
KSkpfXJldHVybiB5fSxnZXRKU09OOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gci5nZXQoYSxiLGMs
Impzb24iKX0sZ2V0U2NyaXB0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIHIuZ2V0KGEsdm9pZCAwLGIs
InNjcmlwdCIpfX0pLHIuZWFjaChbImdldCIsInBvc3QiXSxmdW5jdGlvbihhLGIpe3JbYl09ZnVu
Y3Rpb24oYSxjLGQsZSl7cmV0dXJuIHIuaXNGdW5jdGlvbihjKSYmKGU9ZXx8ZCxkPWMsYz12b2lk
IDApLHIuYWpheChyLmV4dGVuZCh7dXJsOmEsdHlwZTpiLGRhdGFUeXBlOmUsZGF0YTpjLHN1Y2Nl
c3M6ZH0sci5pc1BsYWluT2JqZWN0KGEpJiZhKSl9fSksci5fZXZhbFVybD1mdW5jdGlvbihhKXty
ZXR1cm4gci5hamF4KHt1cmw6YSx0eXBlOiJHRVQiLGRhdGFUeXBlOiJzY3JpcHQiLGNhY2hlOiEw
LGFzeW5jOiExLGdsb2JhbDohMSwidGhyb3dzIjohMH0pfSxyLmZuLmV4dGVuZCh7d3JhcEFsbDpm
dW5jdGlvbihhKXt2YXIgYjtyZXR1cm4gdGhpc1swXSYmKHIuaXNGdW5jdGlvbihhKSYmKGE9YS5j
YWxsKHRoaXNbMF0pKSxiPXIoYSx0aGlzWzBdLm93bmVyRG9jdW1lbnQpLmVxKDApLmNsb25lKCEw
KSx0aGlzWzBdLnBhcmVudE5vZGUmJmIuaW5zZXJ0QmVmb3JlKHRoaXNbMF0pLGIubWFwKGZ1bmN0
aW9uKCl7dmFyIGE9dGhpczt3aGlsZShhLmZpcnN0RWxlbWVudENoaWxkKWE9YS5maXJzdEVsZW1l
bnRDaGlsZDtyZXR1cm4gYX0pLmFwcGVuZCh0aGlzKSksdGhpc30sd3JhcElubmVyOmZ1bmN0aW9u
KGEpe3JldHVybiByLmlzRnVuY3Rpb24oYSk/dGhpcy5lYWNoKGZ1bmN0aW9uKGIpe3IodGhpcyku
d3JhcElubmVyKGEuY2FsbCh0aGlzLGIpKX0pOnRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiPXIo
dGhpcyksYz1iLmNvbnRlbnRzKCk7Yy5sZW5ndGg/Yy53cmFwQWxsKGEpOmIuYXBwZW5kKGEpfSl9
LHdyYXA6ZnVuY3Rpb24oYSl7dmFyIGI9ci5pc0Z1bmN0aW9uKGEpO3JldHVybiB0aGlzLmVhY2go
ZnVuY3Rpb24oYyl7cih0aGlzKS53cmFwQWxsKGI/YS5jYWxsKHRoaXMsYyk6YSl9KX0sdW53cmFw
OmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnBhcmVudChhKS5ub3QoImJvZHkiKS5lYWNoKGZ1bmN0
aW9uKCl7cih0aGlzKS5yZXBsYWNlV2l0aCh0aGlzLmNoaWxkTm9kZXMpfSksdGhpc319KSxyLmV4
cHIucHNldWRvcy5oaWRkZW49ZnVuY3Rpb24oYSl7cmV0dXJuIXIuZXhwci5wc2V1ZG9zLnZpc2li
bGUoYSl9LHIuZXhwci5wc2V1ZG9zLnZpc2libGU9ZnVuY3Rpb24oYSl7cmV0dXJuISEoYS5vZmZz
ZXRXaWR0aHx8YS5vZmZzZXRIZWlnaHR8fGEuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGgpfSxyLmFq
YXhTZXR0aW5ncy54aHI9ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIG5ldyBhLlhNTEh0dHBSZXF1ZXN0
fWNhdGNoKGIpe319O3ZhciBPYj17MDoyMDAsMTIyMzoyMDR9LFBiPXIuYWpheFNldHRpbmdzLnho
cigpO28uY29ycz0hIVBiJiYid2l0aENyZWRlbnRpYWxzImluIFBiLG8uYWpheD1QYj0hIVBiLHIu
YWpheFRyYW5zcG9ydChmdW5jdGlvbihiKXt2YXIgYyxkO2lmKG8uY29yc3x8UGImJiFiLmNyb3Nz
RG9tYWluKXJldHVybntzZW5kOmZ1bmN0aW9uKGUsZil7dmFyIGcsaD1iLnhocigpO2lmKGgub3Bl
bihiLnR5cGUsYi51cmwsYi5hc3luYyxiLnVzZXJuYW1lLGIucGFzc3dvcmQpLGIueGhyRmllbGRz
KWZvcihnIGluIGIueGhyRmllbGRzKWhbZ109Yi54aHJGaWVsZHNbZ107Yi5taW1lVHlwZSYmaC5v
dmVycmlkZU1pbWVUeXBlJiZoLm92ZXJyaWRlTWltZVR5cGUoYi5taW1lVHlwZSksYi5jcm9zc0Rv
bWFpbnx8ZVsiWC1SZXF1ZXN0ZWQtV2l0aCJdfHwoZVsiWC1SZXF1ZXN0ZWQtV2l0aCJdPSJYTUxI
dHRwUmVxdWVzdCIpO2ZvcihnIGluIGUpaC5zZXRSZXF1ZXN0SGVhZGVyKGcsZVtnXSk7Yz1mdW5j
dGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oKXtjJiYoYz1kPWgub25sb2FkPWgub25lcnJvcj1oLm9u
YWJvcnQ9aC5vbnJlYWR5c3RhdGVjaGFuZ2U9bnVsbCwiYWJvcnQiPT09YT9oLmFib3J0KCk6ImVy
cm9yIj09PWE/Im51bWJlciIhPXR5cGVvZiBoLnN0YXR1cz9mKDAsImVycm9yIik6ZihoLnN0YXR1
cyxoLnN0YXR1c1RleHQpOmYoT2JbaC5zdGF0dXNdfHxoLnN0YXR1cyxoLnN0YXR1c1RleHQsInRl
eHQiIT09KGgucmVzcG9uc2VUeXBlfHwidGV4dCIpfHwic3RyaW5nIiE9dHlwZW9mIGgucmVzcG9u
c2VUZXh0P3tiaW5hcnk6aC5yZXNwb25zZX06e3RleHQ6aC5yZXNwb25zZVRleHR9LGguZ2V0QWxs
UmVzcG9uc2VIZWFkZXJzKCkpKX19LGgub25sb2FkPWMoKSxkPWgub25lcnJvcj1jKCJlcnJvciIp
LHZvaWQgMCE9PWgub25hYm9ydD9oLm9uYWJvcnQ9ZDpoLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5j
dGlvbigpezQ9PT1oLnJlYWR5U3RhdGUmJmEuc2V0VGltZW91dChmdW5jdGlvbigpe2MmJmQoKX0p
fSxjPWMoImFib3J0Iik7dHJ5e2guc2VuZChiLmhhc0NvbnRlbnQmJmIuZGF0YXx8bnVsbCl9Y2F0
Y2goaSl7aWYoYyl0aHJvdyBpfX0sYWJvcnQ6ZnVuY3Rpb24oKXtjJiZjKCl9fX0pLHIuYWpheFBy
ZWZpbHRlcihmdW5jdGlvbihhKXthLmNyb3NzRG9tYWluJiYoYS5jb250ZW50cy5zY3JpcHQ9ITEp
fSksci5hamF4U2V0dXAoe2FjY2VwdHM6e3NjcmlwdDoidGV4dC9qYXZhc2NyaXB0LCBhcHBsaWNh
dGlvbi9qYXZhc2NyaXB0LCBhcHBsaWNhdGlvbi9lY21hc2NyaXB0LCBhcHBsaWNhdGlvbi94LWVj
bWFzY3JpcHQifSxjb250ZW50czp7c2NyaXB0Oi9cYig/OmphdmF8ZWNtYSlzY3JpcHRcYi99LGNv
bnZlcnRlcnM6eyJ0ZXh0IHNjcmlwdCI6ZnVuY3Rpb24oYSl7cmV0dXJuIHIuZ2xvYmFsRXZhbChh
KSxhfX19KSxyLmFqYXhQcmVmaWx0ZXIoInNjcmlwdCIsZnVuY3Rpb24oYSl7dm9pZCAwPT09YS5j
YWNoZSYmKGEuY2FjaGU9ITEpLGEuY3Jvc3NEb21haW4mJihhLnR5cGU9IkdFVCIpfSksci5hamF4
VHJhbnNwb3J0KCJzY3JpcHQiLGZ1bmN0aW9uKGEpe2lmKGEuY3Jvc3NEb21haW4pe3ZhciBiLGM7
cmV0dXJue3NlbmQ6ZnVuY3Rpb24oZSxmKXtiPXIoIjxzY3JpcHQ+IikucHJvcCh7Y2hhcnNldDph
LnNjcmlwdENoYXJzZXQsc3JjOmEudXJsfSkub24oImxvYWQgZXJyb3IiLGM9ZnVuY3Rpb24oYSl7
Yi5yZW1vdmUoKSxjPW51bGwsYSYmZigiZXJyb3IiPT09YS50eXBlPzQwNDoyMDAsYS50eXBlKX0p
LGQuaGVhZC5hcHBlbmRDaGlsZChiWzBdKX0sYWJvcnQ6ZnVuY3Rpb24oKXtjJiZjKCl9fX19KTt2
YXIgUWI9W10sUmI9Lyg9KVw/KD89JnwkKXxcP1w/LztyLmFqYXhTZXR1cCh7anNvbnA6ImNhbGxi
YWNrIixqc29ucENhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIGE9UWIucG9wKCl8fHIuZXhwYW5kbysi
XyIrcmIrKztyZXR1cm4gdGhpc1thXT0hMCxhfX0pLHIuYWpheFByZWZpbHRlcigianNvbiBqc29u
cCIsZnVuY3Rpb24oYixjLGQpe3ZhciBlLGYsZyxoPWIuanNvbnAhPT0hMSYmKFJiLnRlc3QoYi51
cmwpPyJ1cmwiOiJzdHJpbmciPT10eXBlb2YgYi5kYXRhJiYwPT09KGIuY29udGVudFR5cGV8fCIi
KS5pbmRleE9mKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKSYmUmIudGVzdChi
LmRhdGEpJiYiZGF0YSIpO2lmKGh8fCJqc29ucCI9PT1iLmRhdGFUeXBlc1swXSlyZXR1cm4gZT1i
Lmpzb25wQ2FsbGJhY2s9ci5pc0Z1bmN0aW9uKGIuanNvbnBDYWxsYmFjayk/Yi5qc29ucENhbGxi
YWNrKCk6Yi5qc29ucENhbGxiYWNrLGg/YltoXT1iW2hdLnJlcGxhY2UoUmIsIiQxIitlKTpiLmpz
b25wIT09ITEmJihiLnVybCs9KHNiLnRlc3QoYi51cmwpPyImIjoiPyIpK2IuanNvbnArIj0iK2Up
LGIuY29udmVydGVyc1sic2NyaXB0IGpzb24iXT1mdW5jdGlvbigpe3JldHVybiBnfHxyLmVycm9y
KGUrIiB3YXMgbm90IGNhbGxlZCIpLGdbMF19LGIuZGF0YVR5cGVzWzBdPSJqc29uIixmPWFbZV0s
YVtlXT1mdW5jdGlvbigpe2c9YXJndW1lbnRzfSxkLmFsd2F5cyhmdW5jdGlvbigpe3ZvaWQgMD09
PWY/cihhKS5yZW1vdmVQcm9wKGUpOmFbZV09ZixiW2VdJiYoYi5qc29ucENhbGxiYWNrPWMuanNv
bnBDYWxsYmFjayxRYi5wdXNoKGUpKSxnJiZyLmlzRnVuY3Rpb24oZikmJmYoZ1swXSksZz1mPXZv
aWQgMH0pLCJzY3JpcHQifSksby5jcmVhdGVIVE1MRG9jdW1lbnQ9ZnVuY3Rpb24oKXt2YXIgYT1k
LmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgiIikuYm9keTtyZXR1cm4gYS5pbm5l
ckhUTUw9Ijxmb3JtPjwvZm9ybT48Zm9ybT48L2Zvcm0+IiwyPT09YS5jaGlsZE5vZGVzLmxlbmd0
aH0oKSxyLnBhcnNlSFRNTD1mdW5jdGlvbihhLGIsYyl7aWYoInN0cmluZyIhPXR5cGVvZiBhKXJl
dHVybltdOyJib29sZWFuIj09dHlwZW9mIGImJihjPWIsYj0hMSk7dmFyIGUsZixnO3JldHVybiBi
fHwoby5jcmVhdGVIVE1MRG9jdW1lbnQ/KGI9ZC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9j
dW1lbnQoIiIpLGU9Yi5jcmVhdGVFbGVtZW50KCJiYXNlIiksZS5ocmVmPWQubG9jYXRpb24uaHJl
ZixiLmhlYWQuYXBwZW5kQ2hpbGQoZSkpOmI9ZCksZj1CLmV4ZWMoYSksZz0hYyYmW10sZj9bYi5j
cmVhdGVFbGVtZW50KGZbMV0pXTooZj1wYShbYV0sYixnKSxnJiZnLmxlbmd0aCYmcihnKS5yZW1v
dmUoKSxyLm1lcmdlKFtdLGYuY2hpbGROb2RlcykpfSxyLmZuLmxvYWQ9ZnVuY3Rpb24oYSxiLGMp
e3ZhciBkLGUsZixnPXRoaXMsaD1hLmluZGV4T2YoIiAiKTtyZXR1cm4gaD4tMSYmKGQ9bWIoYS5z
bGljZShoKSksYT1hLnNsaWNlKDAsaCkpLHIuaXNGdW5jdGlvbihiKT8oYz1iLGI9dm9pZCAwKTpi
JiYib2JqZWN0Ij09dHlwZW9mIGImJihlPSJQT1NUIiksZy5sZW5ndGg+MCYmci5hamF4KHt1cmw6
YSx0eXBlOmV8fCJHRVQiLGRhdGFUeXBlOiJodG1sIixkYXRhOmJ9KS5kb25lKGZ1bmN0aW9uKGEp
e2Y9YXJndW1lbnRzLGcuaHRtbChkP3IoIjxkaXY+IikuYXBwZW5kKHIucGFyc2VIVE1MKGEpKS5m
aW5kKGQpOmEpfSkuYWx3YXlzKGMmJmZ1bmN0aW9uKGEsYil7Zy5lYWNoKGZ1bmN0aW9uKCl7Yy5h
cHBseSh0aGlzLGZ8fFthLnJlc3BvbnNlVGV4dCxiLGFdKX0pfSksdGhpc30sci5lYWNoKFsiYWph
eFN0YXJ0IiwiYWpheFN0b3AiLCJhamF4Q29tcGxldGUiLCJhamF4RXJyb3IiLCJhamF4U3VjY2Vz
cyIsImFqYXhTZW5kIl0sZnVuY3Rpb24oYSxiKXtyLmZuW2JdPWZ1bmN0aW9uKGEpe3JldHVybiB0
aGlzLm9uKGIsYSl9fSksci5leHByLnBzZXVkb3MuYW5pbWF0ZWQ9ZnVuY3Rpb24oYSl7cmV0dXJu
IHIuZ3JlcChyLnRpbWVycyxmdW5jdGlvbihiKXtyZXR1cm4gYT09PWIuZWxlbX0pLmxlbmd0aH07
ZnVuY3Rpb24gU2IoYSl7cmV0dXJuIHIuaXNXaW5kb3coYSk/YTo5PT09YS5ub2RlVHlwZSYmYS5k
ZWZhdWx0Vmlld31yLm9mZnNldD17c2V0T2Zmc2V0OmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGYs
ZyxoLGksaixrPXIuY3NzKGEsInBvc2l0aW9uIiksbD1yKGEpLG09e307InN0YXRpYyI9PT1rJiYo
YS5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiKSxoPWwub2Zmc2V0KCksZj1yLmNzcyhhLCJ0b3Ai
KSxpPXIuY3NzKGEsImxlZnQiKSxqPSgiYWJzb2x1dGUiPT09a3x8ImZpeGVkIj09PWspJiYoZitp
KS5pbmRleE9mKCJhdXRvIik+LTEsaj8oZD1sLnBvc2l0aW9uKCksZz1kLnRvcCxlPWQubGVmdCk6
KGc9cGFyc2VGbG9hdChmKXx8MCxlPXBhcnNlRmxvYXQoaSl8fDApLHIuaXNGdW5jdGlvbihiKSYm
KGI9Yi5jYWxsKGEsYyxyLmV4dGVuZCh7fSxoKSkpLG51bGwhPWIudG9wJiYobS50b3A9Yi50b3At
aC50b3ArZyksbnVsbCE9Yi5sZWZ0JiYobS5sZWZ0PWIubGVmdC1oLmxlZnQrZSksInVzaW5nImlu
IGI/Yi51c2luZy5jYWxsKGEsbSk6bC5jc3MobSl9fSxyLmZuLmV4dGVuZCh7b2Zmc2V0OmZ1bmN0
aW9uKGEpe2lmKGFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHZvaWQgMD09PWE/dGhpczp0aGlzLmVh
Y2goZnVuY3Rpb24oYil7ci5vZmZzZXQuc2V0T2Zmc2V0KHRoaXMsYSxiKX0pO3ZhciBiLGMsZCxl
LGY9dGhpc1swXTtpZihmKXJldHVybiBmLmdldENsaWVudFJlY3RzKCkubGVuZ3RoPyhkPWYuZ2V0
Qm91bmRpbmdDbGllbnRSZWN0KCksZC53aWR0aHx8ZC5oZWlnaHQ/KGU9Zi5vd25lckRvY3VtZW50
LGM9U2IoZSksYj1lLmRvY3VtZW50RWxlbWVudCx7dG9wOmQudG9wK2MucGFnZVlPZmZzZXQtYi5j
bGllbnRUb3AsbGVmdDpkLmxlZnQrYy5wYWdlWE9mZnNldC1iLmNsaWVudExlZnR9KTpkKTp7dG9w
OjAsbGVmdDowfX0scG9zaXRpb246ZnVuY3Rpb24oKXtpZih0aGlzWzBdKXt2YXIgYSxiLGM9dGhp
c1swXSxkPXt0b3A6MCxsZWZ0OjB9O3JldHVybiJmaXhlZCI9PT1yLmNzcyhjLCJwb3NpdGlvbiIp
P2I9Yy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTooYT10aGlzLm9mZnNldFBhcmVudCgpLGI9dGhp
cy5vZmZzZXQoKSxyLm5vZGVOYW1lKGFbMF0sImh0bWwiKXx8KGQ9YS5vZmZzZXQoKSksZD17dG9w
OmQudG9wK3IuY3NzKGFbMF0sImJvcmRlclRvcFdpZHRoIiwhMCksbGVmdDpkLmxlZnQrci5jc3Mo
YVswXSwiYm9yZGVyTGVmdFdpZHRoIiwhMCl9KSx7dG9wOmIudG9wLWQudG9wLXIuY3NzKGMsIm1h
cmdpblRvcCIsITApLGxlZnQ6Yi5sZWZ0LWQubGVmdC1yLmNzcyhjLCJtYXJnaW5MZWZ0IiwhMCl9
fX0sb2Zmc2V0UGFyZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7dmFy
IGE9dGhpcy5vZmZzZXRQYXJlbnQ7d2hpbGUoYSYmInN0YXRpYyI9PT1yLmNzcyhhLCJwb3NpdGlv
biIpKWE9YS5vZmZzZXRQYXJlbnQ7cmV0dXJuIGF8fHFhfSl9fSksci5lYWNoKHtzY3JvbGxMZWZ0
OiJwYWdlWE9mZnNldCIsc2Nyb2xsVG9wOiJwYWdlWU9mZnNldCJ9LGZ1bmN0aW9uKGEsYil7dmFy
IGM9InBhZ2VZT2Zmc2V0Ij09PWI7ci5mblthXT1mdW5jdGlvbihkKXtyZXR1cm4gUyh0aGlzLGZ1
bmN0aW9uKGEsZCxlKXt2YXIgZj1TYihhKTtyZXR1cm4gdm9pZCAwPT09ZT9mP2ZbYl06YVtkXTp2
b2lkKGY/Zi5zY3JvbGxUbyhjP2YucGFnZVhPZmZzZXQ6ZSxjP2U6Zi5wYWdlWU9mZnNldCk6YVtk
XT1lKX0sYSxkLGFyZ3VtZW50cy5sZW5ndGgpfX0pLHIuZWFjaChbInRvcCIsImxlZnQiXSxmdW5j
dGlvbihhLGIpe3IuY3NzSG9va3NbYl09T2Eoby5waXhlbFBvc2l0aW9uLGZ1bmN0aW9uKGEsYyl7
aWYoYylyZXR1cm4gYz1OYShhLGIpLExhLnRlc3QoYyk/cihhKS5wb3NpdGlvbigpW2JdKyJweCI6
Y30pfSksci5lYWNoKHtIZWlnaHQ6ImhlaWdodCIsV2lkdGg6IndpZHRoIn0sZnVuY3Rpb24oYSxi
KXtyLmVhY2goe3BhZGRpbmc6ImlubmVyIithLGNvbnRlbnQ6YiwiIjoib3V0ZXIiK2F9LGZ1bmN0
aW9uKGMsZCl7ci5mbltkXT1mdW5jdGlvbihlLGYpe3ZhciBnPWFyZ3VtZW50cy5sZW5ndGgmJihj
fHwiYm9vbGVhbiIhPXR5cGVvZiBlKSxoPWN8fChlPT09ITB8fGY9PT0hMD8ibWFyZ2luIjoiYm9y
ZGVyIik7cmV0dXJuIFModGhpcyxmdW5jdGlvbihiLGMsZSl7dmFyIGY7cmV0dXJuIHIuaXNXaW5k
b3coYik/MD09PWQuaW5kZXhPZigib3V0ZXIiKT9iWyJpbm5lciIrYV06Yi5kb2N1bWVudC5kb2N1
bWVudEVsZW1lbnRbImNsaWVudCIrYV06OT09PWIubm9kZVR5cGU/KGY9Yi5kb2N1bWVudEVsZW1l
bnQsTWF0aC5tYXgoYi5ib2R5WyJzY3JvbGwiK2FdLGZbInNjcm9sbCIrYV0sYi5ib2R5WyJvZmZz
ZXQiK2FdLGZbIm9mZnNldCIrYV0sZlsiY2xpZW50IithXSkpOnZvaWQgMD09PWU/ci5jc3MoYixj
LGgpOnIuc3R5bGUoYixjLGUsaCl9LGIsZz9lOnZvaWQgMCxnKX19KX0pLHIuZm4uZXh0ZW5kKHti
aW5kOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gdGhpcy5vbihhLG51bGwsYixjKX0sdW5iaW5kOmZ1
bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMub2ZmKGEsbnVsbCxiKX0sZGVsZWdhdGU6ZnVuY3Rpb24o
YSxiLGMsZCl7cmV0dXJuIHRoaXMub24oYixhLGMsZCl9LHVuZGVsZWdhdGU6ZnVuY3Rpb24oYSxi
LGMpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD90aGlzLm9mZihhLCIqKiIpOnRoaXMub2Zm
KGIsYXx8IioqIixjKX19KSxyLnBhcnNlSlNPTj1KU09OLnBhcnNlLCJmdW5jdGlvbiI9PXR5cGVv
ZiBkZWZpbmUmJmRlZmluZS5hbWQmJmRlZmluZSgianF1ZXJ5IixbXSxmdW5jdGlvbigpe3JldHVy
biByfSk7dmFyIFRiPWEualF1ZXJ5LFViPWEuJDtyZXR1cm4gci5ub0NvbmZsaWN0PWZ1bmN0aW9u
KGIpe3JldHVybiBhLiQ9PT1yJiYoYS4kPVViKSxiJiZhLmpRdWVyeT09PXImJihhLmpRdWVyeT1U
Yikscn0sYnx8KGEualF1ZXJ5PWEuJD1yKSxyfSk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9q
cXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9kaXN0L2pxdWVyeS5taW4ubWFwIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvZGlzdC9qcXVlcnkubWluLm1hcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44YzA5ZGQ4MTQxZDMxNDEwMDliZTIxZTlhZjNmYzE4NDRmNjliZWUxCi0tLSAvZGV2L251
bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvZGlzdC9qcXVl
cnkubWluLm1hcApAQCAtMCwwICsxIEBACit7InZlcnNpb24iOjMsInNvdXJjZXMiOlsianF1ZXJ5
LmpzIl0sIm5hbWVzIjpbImdsb2JhbCIsImZhY3RvcnkiLCJtb2R1bGUiLCJleHBvcnRzIiwiZG9j
dW1lbnQiLCJ3IiwiRXJyb3IiLCJ3aW5kb3ciLCJ0aGlzIiwibm9HbG9iYWwiLCJhcnIiLCJnZXRQ
cm90byIsIk9iamVjdCIsImdldFByb3RvdHlwZU9mIiwic2xpY2UiLCJjb25jYXQiLCJwdXNoIiwi
aW5kZXhPZiIsImNsYXNzMnR5cGUiLCJ0b1N0cmluZyIsImhhc093biIsImhhc093blByb3BlcnR5
IiwiZm5Ub1N0cmluZyIsIk9iamVjdEZ1bmN0aW9uU3RyaW5nIiwiY2FsbCIsInN1cHBvcnQiLCJE
T01FdmFsIiwiY29kZSIsImRvYyIsInNjcmlwdCIsImNyZWF0ZUVsZW1lbnQiLCJ0ZXh0IiwiaGVh
ZCIsImFwcGVuZENoaWxkIiwicGFyZW50Tm9kZSIsInJlbW92ZUNoaWxkIiwidmVyc2lvbiIsImpR
dWVyeSIsInNlbGVjdG9yIiwiY29udGV4dCIsImZuIiwiaW5pdCIsInJ0cmltIiwicm1zUHJlZml4
IiwicmRhc2hBbHBoYSIsImZjYW1lbENhc2UiLCJhbGwiLCJsZXR0ZXIiLCJ0b1VwcGVyQ2FzZSIs
InByb3RvdHlwZSIsImpxdWVyeSIsImNvbnN0cnVjdG9yIiwibGVuZ3RoIiwidG9BcnJheSIsImdl
dCIsIm51bSIsInB1c2hTdGFjayIsImVsZW1zIiwicmV0IiwibWVyZ2UiLCJwcmV2T2JqZWN0Iiwi
ZWFjaCIsImNhbGxiYWNrIiwibWFwIiwiZWxlbSIsImkiLCJhcHBseSIsImFyZ3VtZW50cyIsImZp
cnN0IiwiZXEiLCJsYXN0IiwibGVuIiwiaiIsImVuZCIsInNvcnQiLCJzcGxpY2UiLCJleHRlbmQi
LCJvcHRpb25zIiwibmFtZSIsInNyYyIsImNvcHkiLCJjb3B5SXNBcnJheSIsImNsb25lIiwidGFy
Z2V0IiwiZGVlcCIsImlzRnVuY3Rpb24iLCJpc1BsYWluT2JqZWN0IiwiaXNBcnJheSIsInVuZGVm
aW5lZCIsImV4cGFuZG8iLCJNYXRoIiwicmFuZG9tIiwicmVwbGFjZSIsImlzUmVhZHkiLCJlcnJv
ciIsIm1zZyIsIm5vb3AiLCJvYmoiLCJ0eXBlIiwiQXJyYXkiLCJpc1dpbmRvdyIsImlzTnVtZXJp
YyIsImlzTmFOIiwicGFyc2VGbG9hdCIsInByb3RvIiwiQ3RvciIsImlzRW1wdHlPYmplY3QiLCJn
bG9iYWxFdmFsIiwiY2FtZWxDYXNlIiwic3RyaW5nIiwibm9kZU5hbWUiLCJ0b0xvd2VyQ2FzZSIs
ImlzQXJyYXlMaWtlIiwidHJpbSIsIm1ha2VBcnJheSIsInJlc3VsdHMiLCJpbkFycmF5Iiwic2Vj
b25kIiwiZ3JlcCIsImludmVydCIsImNhbGxiYWNrSW52ZXJzZSIsIm1hdGNoZXMiLCJjYWxsYmFj
a0V4cGVjdCIsImFyZyIsInZhbHVlIiwiZ3VpZCIsInByb3h5IiwidG1wIiwiYXJncyIsIm5vdyIs
IkRhdGUiLCJTeW1ib2wiLCJpdGVyYXRvciIsInNwbGl0IiwiU2l6emxlIiwiRXhwciIsImdldFRl
eHQiLCJpc1hNTCIsInRva2VuaXplIiwiY29tcGlsZSIsInNlbGVjdCIsIm91dGVybW9zdENvbnRl
eHQiLCJzb3J0SW5wdXQiLCJoYXNEdXBsaWNhdGUiLCJzZXREb2N1bWVudCIsImRvY0VsZW0iLCJk
b2N1bWVudElzSFRNTCIsInJidWdneVFTQSIsInJidWdneU1hdGNoZXMiLCJjb250YWlucyIsInBy
ZWZlcnJlZERvYyIsImRpcnJ1bnMiLCJkb25lIiwiY2xhc3NDYWNoZSIsImNyZWF0ZUNhY2hlIiwi
dG9rZW5DYWNoZSIsImNvbXBpbGVyQ2FjaGUiLCJzb3J0T3JkZXIiLCJhIiwiYiIsInBvcCIsInB1
c2hfbmF0aXZlIiwibGlzdCIsImJvb2xlYW5zIiwid2hpdGVzcGFjZSIsImlkZW50aWZpZXIiLCJh
dHRyaWJ1dGVzIiwicHNldWRvcyIsInJ3aGl0ZXNwYWNlIiwiUmVnRXhwIiwicmNvbW1hIiwicmNv
bWJpbmF0b3JzIiwicmF0dHJpYnV0ZVF1b3RlcyIsInJwc2V1ZG8iLCJyaWRlbnRpZmllciIsIm1h
dGNoRXhwciIsIklEIiwiQ0xBU1MiLCJUQUciLCJBVFRSIiwiUFNFVURPIiwiQ0hJTEQiLCJib29s
IiwibmVlZHNDb250ZXh0IiwicmlucHV0cyIsInJoZWFkZXIiLCJybmF0aXZlIiwicnF1aWNrRXhw
ciIsInJzaWJsaW5nIiwicnVuZXNjYXBlIiwiZnVuZXNjYXBlIiwiXyIsImVzY2FwZWQiLCJlc2Nh
cGVkV2hpdGVzcGFjZSIsImhpZ2giLCJTdHJpbmciLCJmcm9tQ2hhckNvZGUiLCJyY3NzZXNjYXBl
IiwiZmNzc2VzY2FwZSIsImNoIiwiYXNDb2RlUG9pbnQiLCJjaGFyQ29kZUF0IiwidW5sb2FkSGFu
ZGxlciIsImRpc2FibGVkQW5jZXN0b3IiLCJhZGRDb21iaW5hdG9yIiwiZGlzYWJsZWQiLCJkaXIi
LCJuZXh0IiwiY2hpbGROb2RlcyIsIm5vZGVUeXBlIiwiZSIsImVscyIsInNlZWQiLCJtIiwibmlk
IiwibWF0Y2giLCJncm91cHMiLCJuZXdTZWxlY3RvciIsIm5ld0NvbnRleHQiLCJvd25lckRvY3Vt
ZW50IiwiZXhlYyIsImdldEVsZW1lbnRCeUlkIiwiaWQiLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIs
ImdldEVsZW1lbnRzQnlDbGFzc05hbWUiLCJxc2EiLCJ0ZXN0IiwiZ2V0QXR0cmlidXRlIiwic2V0
QXR0cmlidXRlIiwidG9TZWxlY3RvciIsImpvaW4iLCJ0ZXN0Q29udGV4dCIsInF1ZXJ5U2VsZWN0
b3JBbGwiLCJxc2FFcnJvciIsInJlbW92ZUF0dHJpYnV0ZSIsImtleXMiLCJjYWNoZSIsImtleSIs
ImNhY2hlTGVuZ3RoIiwic2hpZnQiLCJtYXJrRnVuY3Rpb24iLCJhc3NlcnQiLCJlbCIsImFkZEhh
bmRsZSIsImF0dHJzIiwiaGFuZGxlciIsImF0dHJIYW5kbGUiLCJzaWJsaW5nQ2hlY2siLCJjdXIi
LCJkaWZmIiwic291cmNlSW5kZXgiLCJuZXh0U2libGluZyIsImNyZWF0ZUlucHV0UHNldWRvIiwi
Y3JlYXRlQnV0dG9uUHNldWRvIiwiY3JlYXRlRGlzYWJsZWRQc2V1ZG8iLCJpc0Rpc2FibGVkIiwi
Y3JlYXRlUG9zaXRpb25hbFBzZXVkbyIsImFyZ3VtZW50IiwibWF0Y2hJbmRleGVzIiwiZG9jdW1l
bnRFbGVtZW50Iiwibm9kZSIsImhhc0NvbXBhcmUiLCJzdWJXaW5kb3ciLCJkZWZhdWx0VmlldyIs
InRvcCIsImFkZEV2ZW50TGlzdGVuZXIiLCJhdHRhY2hFdmVudCIsImNsYXNzTmFtZSIsImNyZWF0
ZUNvbW1lbnQiLCJnZXRCeUlkIiwiZ2V0RWxlbWVudHNCeU5hbWUiLCJmaWx0ZXIiLCJhdHRySWQi
LCJmaW5kIiwiZ2V0QXR0cmlidXRlTm9kZSIsInRhZyIsImlubmVySFRNTCIsImlucHV0IiwibWF0
Y2hlc1NlbGVjdG9yIiwid2Via2l0TWF0Y2hlc1NlbGVjdG9yIiwibW96TWF0Y2hlc1NlbGVjdG9y
Iiwib01hdGNoZXNTZWxlY3RvciIsIm1zTWF0Y2hlc1NlbGVjdG9yIiwiZGlzY29ubmVjdGVkTWF0
Y2giLCJjb21wYXJlRG9jdW1lbnRQb3NpdGlvbiIsImFkb3duIiwiYnVwIiwiY29tcGFyZSIsInNv
cnREZXRhY2hlZCIsImF1cCIsImFwIiwiYnAiLCJ1bnNoaWZ0IiwiZXhwciIsImVsZW1lbnRzIiwi
YXR0ciIsInZhbCIsInNwZWNpZmllZCIsImVzY2FwZSIsInNlbCIsInVuaXF1ZVNvcnQiLCJkdXBs
aWNhdGVzIiwiZGV0ZWN0RHVwbGljYXRlcyIsInNvcnRTdGFibGUiLCJ0ZXh0Q29udGVudCIsImZp
cnN0Q2hpbGQiLCJub2RlVmFsdWUiLCJzZWxlY3RvcnMiLCJjcmVhdGVQc2V1ZG8iLCJyZWxhdGl2
ZSIsIj4iLCIgIiwiKyIsIn4iLCJwcmVGaWx0ZXIiLCJleGNlc3MiLCJ1bnF1b3RlZCIsIm5vZGVO
YW1lU2VsZWN0b3IiLCJwYXR0ZXJuIiwib3BlcmF0b3IiLCJjaGVjayIsInJlc3VsdCIsIndoYXQi
LCJzaW1wbGUiLCJmb3J3YXJkIiwib2ZUeXBlIiwieG1sIiwidW5pcXVlQ2FjaGUiLCJvdXRlckNh
Y2hlIiwibm9kZUluZGV4Iiwic3RhcnQiLCJwYXJlbnQiLCJ1c2VDYWNoZSIsImxhc3RDaGlsZCIs
InVuaXF1ZUlEIiwicHNldWRvIiwic2V0RmlsdGVycyIsImlkeCIsIm1hdGNoZWQiLCJub3QiLCJt
YXRjaGVyIiwidW5tYXRjaGVkIiwiaGFzIiwiaW5uZXJUZXh0IiwibGFuZyIsImVsZW1MYW5nIiwi
aGFzaCIsImxvY2F0aW9uIiwicm9vdCIsImZvY3VzIiwiYWN0aXZlRWxlbWVudCIsImhhc0ZvY3Vz
IiwiaHJlZiIsInRhYkluZGV4IiwiZW5hYmxlZCIsImNoZWNrZWQiLCJzZWxlY3RlZCIsInNlbGVj
dGVkSW5kZXgiLCJlbXB0eSIsImhlYWRlciIsImJ1dHRvbiIsImV2ZW4iLCJvZGQiLCJsdCIsImd0
IiwicmFkaW8iLCJjaGVja2JveCIsImZpbGUiLCJwYXNzd29yZCIsImltYWdlIiwic3VibWl0Iiwi
cmVzZXQiLCJmaWx0ZXJzIiwicGFyc2VPbmx5IiwidG9rZW5zIiwic29GYXIiLCJwcmVGaWx0ZXJz
IiwiY2FjaGVkIiwiY29tYmluYXRvciIsImJhc2UiLCJza2lwIiwiY2hlY2tOb25FbGVtZW50cyIs
ImRvbmVOYW1lIiwib2xkQ2FjaGUiLCJuZXdDYWNoZSIsImVsZW1lbnRNYXRjaGVyIiwibWF0Y2hl
cnMiLCJtdWx0aXBsZUNvbnRleHRzIiwiY29udGV4dHMiLCJjb25kZW5zZSIsIm5ld1VubWF0Y2hl
ZCIsIm1hcHBlZCIsInNldE1hdGNoZXIiLCJwb3N0RmlsdGVyIiwicG9zdEZpbmRlciIsInBvc3RT
ZWxlY3RvciIsInRlbXAiLCJwcmVNYXAiLCJwb3N0TWFwIiwicHJlZXhpc3RpbmciLCJtYXRjaGVy
SW4iLCJtYXRjaGVyT3V0IiwibWF0Y2hlckZyb21Ub2tlbnMiLCJjaGVja0NvbnRleHQiLCJsZWFk
aW5nUmVsYXRpdmUiLCJpbXBsaWNpdFJlbGF0aXZlIiwibWF0Y2hDb250ZXh0IiwibWF0Y2hBbnlD
b250ZXh0IiwibWF0Y2hlckZyb21Hcm91cE1hdGNoZXJzIiwiZWxlbWVudE1hdGNoZXJzIiwic2V0
TWF0Y2hlcnMiLCJieVNldCIsImJ5RWxlbWVudCIsInN1cGVyTWF0Y2hlciIsIm91dGVybW9zdCIs
Im1hdGNoZWRDb3VudCIsInNldE1hdGNoZWQiLCJjb250ZXh0QmFja3VwIiwiZGlycnVuc1VuaXF1
ZSIsInRva2VuIiwiY29tcGlsZWQiLCJkZWZhdWx0VmFsdWUiLCJ1bmlxdWUiLCJpc1hNTERvYyIs
ImVzY2FwZVNlbGVjdG9yIiwidW50aWwiLCJ0cnVuY2F0ZSIsImlzIiwic2libGluZ3MiLCJuIiwi
cm5lZWRzQ29udGV4dCIsInJzaW5nbGVUYWciLCJyaXNTaW1wbGUiLCJ3aW5ub3ciLCJxdWFsaWZp
ZXIiLCJzZWxmIiwicm9vdGpRdWVyeSIsInBhcnNlSFRNTCIsInJlYWR5IiwicnBhcmVudHNwcmV2
IiwiZ3VhcmFudGVlZFVuaXF1ZSIsImNoaWxkcmVuIiwiY29udGVudHMiLCJwcmV2IiwidGFyZ2V0
cyIsImwiLCJjbG9zZXN0IiwiaW5kZXgiLCJwcmV2QWxsIiwiYWRkIiwiYWRkQmFjayIsInNpYmxp
bmciLCJwYXJlbnRzIiwicGFyZW50c1VudGlsIiwibmV4dEFsbCIsIm5leHRVbnRpbCIsInByZXZV
bnRpbCIsImNvbnRlbnREb2N1bWVudCIsInJldmVyc2UiLCJybm90aHRtbHdoaXRlIiwiY3JlYXRl
T3B0aW9ucyIsIm9iamVjdCIsImZsYWciLCJDYWxsYmFja3MiLCJmaXJpbmciLCJtZW1vcnkiLCJm
aXJlZCIsImxvY2tlZCIsInF1ZXVlIiwiZmlyaW5nSW5kZXgiLCJmaXJlIiwib25jZSIsInN0b3BP
bkZhbHNlIiwicmVtb3ZlIiwiZGlzYWJsZSIsImxvY2siLCJmaXJlV2l0aCIsIklkZW50aXR5Iiwi
diIsIlRocm93ZXIiLCJleCIsImFkb3B0VmFsdWUiLCJyZXNvbHZlIiwicmVqZWN0IiwibWV0aG9k
IiwicHJvbWlzZSIsImZhaWwiLCJ0aGVuIiwiRGVmZXJyZWQiLCJmdW5jIiwidHVwbGVzIiwic3Rh
dGUiLCJhbHdheXMiLCJkZWZlcnJlZCIsImNhdGNoIiwicGlwZSIsImZucyIsIm5ld0RlZmVyIiwi
dHVwbGUiLCJyZXR1cm5lZCIsInByb2dyZXNzIiwibm90aWZ5Iiwib25GdWxmaWxsZWQiLCJvblJl
amVjdGVkIiwib25Qcm9ncmVzcyIsIm1heERlcHRoIiwiZGVwdGgiLCJzcGVjaWFsIiwidGhhdCIs
Im1pZ2h0VGhyb3ciLCJUeXBlRXJyb3IiLCJub3RpZnlXaXRoIiwicmVzb2x2ZVdpdGgiLCJwcm9j
ZXNzIiwiZXhjZXB0aW9uSG9vayIsInN0YWNrVHJhY2UiLCJyZWplY3RXaXRoIiwiZ2V0U3RhY2tI
b29rIiwic2V0VGltZW91dCIsInN0YXRlU3RyaW5nIiwid2hlbiIsInNpbmdsZVZhbHVlIiwicmVt
YWluaW5nIiwicmVzb2x2ZUNvbnRleHRzIiwicmVzb2x2ZVZhbHVlcyIsIm1hc3RlciIsInVwZGF0
ZUZ1bmMiLCJyZXJyb3JOYW1lcyIsInN0YWNrIiwiY29uc29sZSIsIndhcm4iLCJtZXNzYWdlIiwi
cmVhZHlFeGNlcHRpb24iLCJyZWFkeUxpc3QiLCJyZWFkeVdhaXQiLCJob2xkUmVhZHkiLCJob2xk
Iiwid2FpdCIsImNvbXBsZXRlZCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJyZWFkeVN0YXRlIiwi
ZG9TY3JvbGwiLCJhY2Nlc3MiLCJjaGFpbmFibGUiLCJlbXB0eUdldCIsInJhdyIsImJ1bGsiLCJh
Y2NlcHREYXRhIiwib3duZXIiLCJEYXRhIiwidWlkIiwiZGVmaW5lUHJvcGVydHkiLCJjb25maWd1
cmFibGUiLCJzZXQiLCJkYXRhIiwicHJvcCIsImhhc0RhdGEiLCJkYXRhUHJpdiIsImRhdGFVc2Vy
IiwicmJyYWNlIiwicm11bHRpRGFzaCIsImdldERhdGEiLCJKU09OIiwicGFyc2UiLCJkYXRhQXR0
ciIsInJlbW92ZURhdGEiLCJfZGF0YSIsIl9yZW1vdmVEYXRhIiwiZGVxdWV1ZSIsInN0YXJ0TGVu
Z3RoIiwiaG9va3MiLCJfcXVldWVIb29rcyIsInN0b3AiLCJzZXR0ZXIiLCJjbGVhclF1ZXVlIiwi
Y291bnQiLCJkZWZlciIsInBudW0iLCJzb3VyY2UiLCJyY3NzTnVtIiwiY3NzRXhwYW5kIiwiaXNI
aWRkZW5XaXRoaW5UcmVlIiwic3R5bGUiLCJkaXNwbGF5IiwiY3NzIiwic3dhcCIsIm9sZCIsImFk
anVzdENTUyIsInZhbHVlUGFydHMiLCJ0d2VlbiIsImFkanVzdGVkIiwic2NhbGUiLCJtYXhJdGVy
YXRpb25zIiwiY3VycmVudFZhbHVlIiwiaW5pdGlhbCIsInVuaXQiLCJjc3NOdW1iZXIiLCJpbml0
aWFsSW5Vbml0IiwiZGVmYXVsdERpc3BsYXlNYXAiLCJnZXREZWZhdWx0RGlzcGxheSIsImJvZHki
LCJzaG93SGlkZSIsInNob3ciLCJ2YWx1ZXMiLCJoaWRlIiwidG9nZ2xlIiwicmNoZWNrYWJsZVR5
cGUiLCJydGFnTmFtZSIsInJzY3JpcHRUeXBlIiwid3JhcE1hcCIsIm9wdGlvbiIsInRoZWFkIiwi
Y29sIiwidHIiLCJ0ZCIsIl9kZWZhdWx0Iiwib3B0Z3JvdXAiLCJ0Ym9keSIsInRmb290IiwiY29s
Z3JvdXAiLCJjYXB0aW9uIiwidGgiLCJnZXRBbGwiLCJzZXRHbG9iYWxFdmFsIiwicmVmRWxlbWVu
dHMiLCJyaHRtbCIsImJ1aWxkRnJhZ21lbnQiLCJzY3JpcHRzIiwic2VsZWN0aW9uIiwiaWdub3Jl
ZCIsIndyYXAiLCJmcmFnbWVudCIsImNyZWF0ZURvY3VtZW50RnJhZ21lbnQiLCJub2RlcyIsImh0
bWxQcmVmaWx0ZXIiLCJjcmVhdGVUZXh0Tm9kZSIsImRpdiIsImNoZWNrQ2xvbmUiLCJjbG9uZU5v
ZGUiLCJub0Nsb25lQ2hlY2tlZCIsInJrZXlFdmVudCIsInJtb3VzZUV2ZW50IiwicnR5cGVuYW1l
c3BhY2UiLCJyZXR1cm5UcnVlIiwicmV0dXJuRmFsc2UiLCJzYWZlQWN0aXZlRWxlbWVudCIsImVy
ciIsIm9uIiwidHlwZXMiLCJvbmUiLCJvcmlnRm4iLCJldmVudCIsIm9mZiIsImhhbmRsZU9iaklu
IiwiZXZlbnRIYW5kbGUiLCJldmVudHMiLCJ0IiwiaGFuZGxlT2JqIiwiaGFuZGxlcnMiLCJuYW1l
c3BhY2VzIiwib3JpZ1R5cGUiLCJlbGVtRGF0YSIsImhhbmRsZSIsInRyaWdnZXJlZCIsImRpc3Bh
dGNoIiwiZGVsZWdhdGVUeXBlIiwiYmluZFR5cGUiLCJuYW1lc3BhY2UiLCJkZWxlZ2F0ZUNvdW50
Iiwic2V0dXAiLCJtYXBwZWRUeXBlcyIsIm9yaWdDb3VudCIsInRlYXJkb3duIiwicmVtb3ZlRXZl
bnQiLCJuYXRpdmVFdmVudCIsImZpeCIsImhhbmRsZXJRdWV1ZSIsImRlbGVnYXRlVGFyZ2V0Iiwi
cHJlRGlzcGF0Y2giLCJpc1Byb3BhZ2F0aW9uU3RvcHBlZCIsImN1cnJlbnRUYXJnZXQiLCJpc0lt
bWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCIsInJuYW1lc3BhY2UiLCJwcmV2ZW50RGVmYXVsdCIs
InN0b3BQcm9wYWdhdGlvbiIsInBvc3REaXNwYXRjaCIsIm1hdGNoZWRIYW5kbGVycyIsIm1hdGNo
ZWRTZWxlY3RvcnMiLCJhZGRQcm9wIiwiaG9vayIsIkV2ZW50IiwiZW51bWVyYWJsZSIsIm9yaWdp
bmFsRXZlbnQiLCJ3cml0YWJsZSIsImxvYWQiLCJub0J1YmJsZSIsInRyaWdnZXIiLCJibHVyIiwi
Y2xpY2siLCJiZWZvcmV1bmxvYWQiLCJyZXR1cm5WYWx1ZSIsInByb3BzIiwiaXNEZWZhdWx0UHJl
dmVudGVkIiwiZGVmYXVsdFByZXZlbnRlZCIsInJlbGF0ZWRUYXJnZXQiLCJ0aW1lU3RhbXAiLCJp
c1NpbXVsYXRlZCIsInN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbiIsImFsdEtleSIsImJ1YmJsZXMi
LCJjYW5jZWxhYmxlIiwiY2hhbmdlZFRvdWNoZXMiLCJjdHJsS2V5IiwiZGV0YWlsIiwiZXZlbnRQ
aGFzZSIsIm1ldGFLZXkiLCJwYWdlWCIsInBhZ2VZIiwic2hpZnRLZXkiLCJ2aWV3IiwiY2hhciIs
ImNoYXJDb2RlIiwia2V5Q29kZSIsImJ1dHRvbnMiLCJjbGllbnRYIiwiY2xpZW50WSIsIm9mZnNl
dFgiLCJvZmZzZXRZIiwicG9pbnRlcklkIiwicG9pbnRlclR5cGUiLCJzY3JlZW5YIiwic2NyZWVu
WSIsInRhcmdldFRvdWNoZXMiLCJ0b0VsZW1lbnQiLCJ0b3VjaGVzIiwid2hpY2giLCJtb3VzZWVu
dGVyIiwibW91c2VsZWF2ZSIsInBvaW50ZXJlbnRlciIsInBvaW50ZXJsZWF2ZSIsIm9yaWciLCJy
ZWxhdGVkIiwicnhodG1sVGFnIiwicm5vSW5uZXJodG1sIiwicmNoZWNrZWQiLCJyc2NyaXB0VHlw
ZU1hc2tlZCIsInJjbGVhblNjcmlwdCIsIm1hbmlwdWxhdGlvblRhcmdldCIsImNvbnRlbnQiLCJk
aXNhYmxlU2NyaXB0IiwicmVzdG9yZVNjcmlwdCIsImNsb25lQ29weUV2ZW50IiwiZGVzdCIsInBk
YXRhT2xkIiwicGRhdGFDdXIiLCJ1ZGF0YU9sZCIsInVkYXRhQ3VyIiwiZml4SW5wdXQiLCJkb21N
YW5pcCIsImNvbGxlY3Rpb24iLCJoYXNTY3JpcHRzIiwiaU5vQ2xvbmUiLCJodG1sIiwiX2V2YWxV
cmwiLCJrZWVwRGF0YSIsImNsZWFuRGF0YSIsImRhdGFBbmRFdmVudHMiLCJkZWVwRGF0YUFuZEV2
ZW50cyIsInNyY0VsZW1lbnRzIiwiZGVzdEVsZW1lbnRzIiwiaW5QYWdlIiwiZGV0YWNoIiwiYXBw
ZW5kIiwicHJlcGVuZCIsImluc2VydEJlZm9yZSIsImJlZm9yZSIsImFmdGVyIiwicmVwbGFjZVdp
dGgiLCJyZXBsYWNlQ2hpbGQiLCJhcHBlbmRUbyIsInByZXBlbmRUbyIsImluc2VydEFmdGVyIiwi
cmVwbGFjZUFsbCIsIm9yaWdpbmFsIiwiaW5zZXJ0Iiwicm1hcmdpbiIsInJudW1ub25weCIsImdl
dFN0eWxlcyIsIm9wZW5lciIsImdldENvbXB1dGVkU3R5bGUiLCJjb21wdXRlU3R5bGVUZXN0cyIs
ImNzc1RleHQiLCJjb250YWluZXIiLCJkaXZTdHlsZSIsInBpeGVsUG9zaXRpb25WYWwiLCJyZWxp
YWJsZU1hcmdpbkxlZnRWYWwiLCJtYXJnaW5MZWZ0IiwiYm94U2l6aW5nUmVsaWFibGVWYWwiLCJ3
aWR0aCIsIm1hcmdpblJpZ2h0IiwicGl4ZWxNYXJnaW5SaWdodFZhbCIsImJhY2tncm91bmRDbGlw
IiwiY2xlYXJDbG9uZVN0eWxlIiwicGl4ZWxQb3NpdGlvbiIsImJveFNpemluZ1JlbGlhYmxlIiwi
cGl4ZWxNYXJnaW5SaWdodCIsInJlbGlhYmxlTWFyZ2luTGVmdCIsImN1ckNTUyIsImNvbXB1dGVk
IiwibWluV2lkdGgiLCJtYXhXaWR0aCIsImdldFByb3BlcnR5VmFsdWUiLCJhZGRHZXRIb29rSWYi
LCJjb25kaXRpb25GbiIsImhvb2tGbiIsInJkaXNwbGF5c3dhcCIsImNzc1Nob3ciLCJwb3NpdGlv
biIsInZpc2liaWxpdHkiLCJjc3NOb3JtYWxUcmFuc2Zvcm0iLCJsZXR0ZXJTcGFjaW5nIiwiZm9u
dFdlaWdodCIsImNzc1ByZWZpeGVzIiwiZW1wdHlTdHlsZSIsInZlbmRvclByb3BOYW1lIiwiY2Fw
TmFtZSIsInNldFBvc2l0aXZlTnVtYmVyIiwic3VidHJhY3QiLCJtYXgiLCJhdWdtZW50V2lkdGhP
ckhlaWdodCIsImV4dHJhIiwiaXNCb3JkZXJCb3giLCJzdHlsZXMiLCJnZXRXaWR0aE9ySGVpZ2h0
IiwidmFsdWVJc0JvcmRlckJveCIsImdldENsaWVudFJlY3RzIiwiZ2V0Qm91bmRpbmdDbGllbnRS
ZWN0IiwiY3NzSG9va3MiLCJvcGFjaXR5IiwiYW5pbWF0aW9uSXRlcmF0aW9uQ291bnQiLCJjb2x1
bW5Db3VudCIsImZpbGxPcGFjaXR5IiwiZmxleEdyb3ciLCJmbGV4U2hyaW5rIiwibGluZUhlaWdo
dCIsIm9yZGVyIiwib3JwaGFucyIsIndpZG93cyIsInpJbmRleCIsInpvb20iLCJjc3NQcm9wcyIs
ImZsb2F0Iiwib3JpZ05hbWUiLCJpc0Zpbml0ZSIsImxlZnQiLCJtYXJnaW4iLCJwYWRkaW5nIiwi
Ym9yZGVyIiwicHJlZml4Iiwic3VmZml4IiwiZXhwYW5kIiwiZXhwYW5kZWQiLCJwYXJ0cyIsIlR3
ZWVuIiwiZWFzaW5nIiwicHJvcEhvb2tzIiwicnVuIiwicGVyY2VudCIsImVhc2VkIiwiZHVyYXRp
b24iLCJwb3MiLCJzdGVwIiwiZngiLCJzY3JvbGxUb3AiLCJzY3JvbGxMZWZ0IiwibGluZWFyIiwi
cCIsInN3aW5nIiwiY29zIiwiUEkiLCJmeE5vdyIsInRpbWVySWQiLCJyZnh0eXBlcyIsInJydW4i
LCJyYWYiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJ0aWNrIiwiY3JlYXRlRnhOb3ciLCJnZW5G
eCIsImluY2x1ZGVXaWR0aCIsImhlaWdodCIsImNyZWF0ZVR3ZWVuIiwiYW5pbWF0aW9uIiwiQW5p
bWF0aW9uIiwidHdlZW5lcnMiLCJkZWZhdWx0UHJlZmlsdGVyIiwib3B0cyIsIm9sZGZpcmUiLCJw
cm9wVHdlZW4iLCJyZXN0b3JlRGlzcGxheSIsImlzQm94IiwiYW5pbSIsImhpZGRlbiIsImRhdGFT
aG93IiwidW5xdWV1ZWQiLCJvdmVyZmxvdyIsIm92ZXJmbG93WCIsIm92ZXJmbG93WSIsInByb3BG
aWx0ZXIiLCJzcGVjaWFsRWFzaW5nIiwicHJvcGVydGllcyIsInN0b3BwZWQiLCJwcmVmaWx0ZXJz
IiwiY3VycmVudFRpbWUiLCJzdGFydFRpbWUiLCJ0d2VlbnMiLCJvcmlnaW5hbFByb3BlcnRpZXMi
LCJvcmlnaW5hbE9wdGlvbnMiLCJnb3RvRW5kIiwidGltZXIiLCJjb21wbGV0ZSIsIioiLCJ0d2Vl
bmVyIiwicHJlZmlsdGVyIiwic3BlZWQiLCJvcHQiLCJzcGVlZHMiLCJmYWRlVG8iLCJ0byIsImFu
aW1hdGUiLCJvcHRhbGwiLCJkb0FuaW1hdGlvbiIsImZpbmlzaCIsInN0b3BRdWV1ZSIsInRpbWVy
cyIsImNzc0ZuIiwic2xpZGVEb3duIiwic2xpZGVVcCIsInNsaWRlVG9nZ2xlIiwiZmFkZUluIiwi
ZmFkZU91dCIsImZhZGVUb2dnbGUiLCJpbnRlcnZhbCIsInNldEludGVydmFsIiwiY2FuY2VsQW5p
bWF0aW9uRnJhbWUiLCJjbGVhckludGVydmFsIiwic2xvdyIsImZhc3QiLCJkZWxheSIsInRpbWUi
LCJ0aW1lb3V0IiwiY2xlYXJUaW1lb3V0IiwiY2hlY2tPbiIsIm9wdFNlbGVjdGVkIiwicmFkaW9W
YWx1ZSIsImJvb2xIb29rIiwicmVtb3ZlQXR0ciIsIm5UeXBlIiwiYXR0ckhvb2tzIiwiYXR0ck5h
bWVzIiwiZ2V0dGVyIiwibG93ZXJjYXNlTmFtZSIsInJmb2N1c2FibGUiLCJyY2xpY2thYmxlIiwi
cmVtb3ZlUHJvcCIsInByb3BGaXgiLCJ0YWJpbmRleCIsInBhcnNlSW50IiwiZm9yIiwiY2xhc3Mi
LCJzdHJpcEFuZENvbGxhcHNlIiwiZ2V0Q2xhc3MiLCJhZGRDbGFzcyIsImNsYXNzZXMiLCJjdXJW
YWx1ZSIsImNsYXp6IiwiZmluYWxWYWx1ZSIsInJlbW92ZUNsYXNzIiwidG9nZ2xlQ2xhc3MiLCJz
dGF0ZVZhbCIsImNsYXNzTmFtZXMiLCJoYXNDbGFzcyIsInJyZXR1cm4iLCJ2YWxIb29rcyIsIm9w
dGlvblNldCIsInJmb2N1c01vcnBoIiwib25seUhhbmRsZXJzIiwiYnViYmxlVHlwZSIsIm9udHlw
ZSIsImV2ZW50UGF0aCIsImlzVHJpZ2dlciIsInBhcmVudFdpbmRvdyIsInNpbXVsYXRlIiwidHJp
Z2dlckhhbmRsZXIiLCJob3ZlciIsImZuT3ZlciIsImZuT3V0IiwiZm9jdXNpbiIsImF0dGFjaGVz
Iiwibm9uY2UiLCJycXVlcnkiLCJwYXJzZVhNTCIsIkRPTVBhcnNlciIsInBhcnNlRnJvbVN0cmlu
ZyIsInJicmFja2V0IiwickNSTEYiLCJyc3VibWl0dGVyVHlwZXMiLCJyc3VibWl0dGFibGUiLCJi
dWlsZFBhcmFtcyIsInRyYWRpdGlvbmFsIiwicGFyYW0iLCJzIiwidmFsdWVPckZ1bmN0aW9uIiwi
ZW5jb2RlVVJJQ29tcG9uZW50Iiwic2VyaWFsaXplIiwic2VyaWFsaXplQXJyYXkiLCJyMjAiLCJy
aGFzaCIsInJhbnRpQ2FjaGUiLCJyaGVhZGVycyIsInJsb2NhbFByb3RvY29sIiwicm5vQ29udGVu
dCIsInJwcm90b2NvbCIsInRyYW5zcG9ydHMiLCJhbGxUeXBlcyIsIm9yaWdpbkFuY2hvciIsImFk
ZFRvUHJlZmlsdGVyc09yVHJhbnNwb3J0cyIsInN0cnVjdHVyZSIsImRhdGFUeXBlRXhwcmVzc2lv
biIsImRhdGFUeXBlIiwiZGF0YVR5cGVzIiwiaW5zcGVjdFByZWZpbHRlcnNPclRyYW5zcG9ydHMi
LCJqcVhIUiIsImluc3BlY3RlZCIsInNlZWtpbmdUcmFuc3BvcnQiLCJpbnNwZWN0IiwicHJlZmls
dGVyT3JGYWN0b3J5IiwiZGF0YVR5cGVPclRyYW5zcG9ydCIsImFqYXhFeHRlbmQiLCJmbGF0T3B0
aW9ucyIsImFqYXhTZXR0aW5ncyIsImFqYXhIYW5kbGVSZXNwb25zZXMiLCJyZXNwb25zZXMiLCJj
dCIsImZpbmFsRGF0YVR5cGUiLCJmaXJzdERhdGFUeXBlIiwibWltZVR5cGUiLCJnZXRSZXNwb25z
ZUhlYWRlciIsImNvbnZlcnRlcnMiLCJhamF4Q29udmVydCIsInJlc3BvbnNlIiwiaXNTdWNjZXNz
IiwiY29udjIiLCJjdXJyZW50IiwiY29udiIsInJlc3BvbnNlRmllbGRzIiwiZGF0YUZpbHRlciIs
ImFjdGl2ZSIsImxhc3RNb2RpZmllZCIsImV0YWciLCJ1cmwiLCJpc0xvY2FsIiwicHJvdG9jb2wi
LCJwcm9jZXNzRGF0YSIsImFzeW5jIiwiY29udGVudFR5cGUiLCJhY2NlcHRzIiwianNvbiIsIiog
dGV4dCIsInRleHQgaHRtbCIsInRleHQganNvbiIsInRleHQgeG1sIiwiYWpheFNldHVwIiwic2V0
dGluZ3MiLCJhamF4UHJlZmlsdGVyIiwiYWpheFRyYW5zcG9ydCIsImFqYXgiLCJ0cmFuc3BvcnQi
LCJjYWNoZVVSTCIsInJlc3BvbnNlSGVhZGVyc1N0cmluZyIsInJlc3BvbnNlSGVhZGVycyIsInRp
bWVvdXRUaW1lciIsInVybEFuY2hvciIsImZpcmVHbG9iYWxzIiwidW5jYWNoZWQiLCJjYWxsYmFj
a0NvbnRleHQiLCJnbG9iYWxFdmVudENvbnRleHQiLCJjb21wbGV0ZURlZmVycmVkIiwic3RhdHVz
Q29kZSIsInJlcXVlc3RIZWFkZXJzIiwicmVxdWVzdEhlYWRlcnNOYW1lcyIsInN0ckFib3J0Iiwi
Z2V0QWxsUmVzcG9uc2VIZWFkZXJzIiwic2V0UmVxdWVzdEhlYWRlciIsIm92ZXJyaWRlTWltZVR5
cGUiLCJzdGF0dXMiLCJhYm9ydCIsInN0YXR1c1RleHQiLCJmaW5hbFRleHQiLCJjcm9zc0RvbWFp
biIsImhvc3QiLCJoYXNDb250ZW50IiwiaWZNb2RpZmllZCIsImhlYWRlcnMiLCJiZWZvcmVTZW5k
Iiwic3VjY2VzcyIsInNlbmQiLCJuYXRpdmVTdGF0dXNUZXh0IiwibW9kaWZpZWQiLCJnZXRKU09O
IiwiZ2V0U2NyaXB0IiwidGhyb3dzIiwid3JhcEFsbCIsImZpcnN0RWxlbWVudENoaWxkIiwid3Jh
cElubmVyIiwidW53cmFwIiwidmlzaWJsZSIsIm9mZnNldFdpZHRoIiwib2Zmc2V0SGVpZ2h0Iiwi
eGhyIiwiWE1MSHR0cFJlcXVlc3QiLCJ4aHJTdWNjZXNzU3RhdHVzIiwiMCIsIjEyMjMiLCJ4aHJT
dXBwb3J0ZWQiLCJjb3JzIiwiZXJyb3JDYWxsYmFjayIsIm9wZW4iLCJ1c2VybmFtZSIsInhockZp
ZWxkcyIsIm9ubG9hZCIsIm9uZXJyb3IiLCJvbmFib3J0Iiwib25yZWFkeXN0YXRlY2hhbmdlIiwi
cmVzcG9uc2VUeXBlIiwicmVzcG9uc2VUZXh0IiwiYmluYXJ5IiwidGV4dCBzY3JpcHQiLCJjaGFy
c2V0Iiwic2NyaXB0Q2hhcnNldCIsImV2dCIsIm9sZENhbGxiYWNrcyIsInJqc29ucCIsImpzb25w
IiwianNvbnBDYWxsYmFjayIsIm9yaWdpbmFsU2V0dGluZ3MiLCJjYWxsYmFja05hbWUiLCJvdmVy
d3JpdHRlbiIsInJlc3BvbnNlQ29udGFpbmVyIiwianNvblByb3AiLCJjcmVhdGVIVE1MRG9jdW1l
bnQiLCJpbXBsZW1lbnRhdGlvbiIsImtlZXBTY3JpcHRzIiwicGFyc2VkIiwicGFyYW1zIiwiYW5p
bWF0ZWQiLCJnZXRXaW5kb3ciLCJvZmZzZXQiLCJzZXRPZmZzZXQiLCJjdXJQb3NpdGlvbiIsImN1
ckxlZnQiLCJjdXJDU1NUb3AiLCJjdXJUb3AiLCJjdXJPZmZzZXQiLCJjdXJDU1NMZWZ0IiwiY2Fs
Y3VsYXRlUG9zaXRpb24iLCJjdXJFbGVtIiwidXNpbmciLCJ3aW4iLCJyZWN0IiwicGFnZVlPZmZz
ZXQiLCJjbGllbnRUb3AiLCJwYWdlWE9mZnNldCIsImNsaWVudExlZnQiLCJvZmZzZXRQYXJlbnQi
LCJwYXJlbnRPZmZzZXQiLCJzY3JvbGxUbyIsIkhlaWdodCIsIldpZHRoIiwiIiwiZGVmYXVsdEV4
dHJhIiwiZnVuY05hbWUiLCJiaW5kIiwidW5iaW5kIiwiZGVsZWdhdGUiLCJ1bmRlbGVnYXRlIiwi
cGFyc2VKU09OIiwiZGVmaW5lIiwiYW1kIiwiX2pRdWVyeSIsIl8kIiwiJCIsIm5vQ29uZmxpY3Qi
XSwibWFwcGluZ3MiOiI7Q0FhQSxTQUFZQSxFQUFRQyxHQUVuQixZQUV1QixpQkFBWEMsU0FBaUQs
Z0JBQW5CQSxRQUFPQyxRQVNoREQsT0FBT0MsUUFBVUgsRUFBT0ksU0FDdkJILEVBQVNELEdBQVEs
R0FDakIsU0FBVUssR0FDVCxJQUFNQSxFQUFFRCxTQUNQLEtBQU0sSUFBSUUsT0FBTywyQ0FFbEIs
T0FBT0wsR0FBU0ksSUFHbEJKLEVBQVNELElBSVksbUJBQVhPLFFBQXlCQSxPQUFTQyxLQUFNLFNB
QVVELEVBQVFFLEdBTXRFLFlBRUEsSUFBSUMsTUFFQU4sRUFBV0csRUFBT0gsU0FFbEJPLEVBQVdD
LE9BQU9DLGVBRWxCQyxFQUFRSixFQUFJSSxNQUVaQyxFQUFTTCxFQUFJSyxPQUViQyxFQUFPTixF
QUFJTSxLQUVYQyxFQUFVUCxFQUFJTyxRQUVkQyxLQUVBQyxFQUFXRCxFQUFXQyxTQUV0QkMsRUFB
U0YsRUFBV0csZUFFcEJDLEVBQWFGLEVBQU9ELFNBRXBCSSxFQUF1QkQsRUFBV0UsS0FBTVosUUFF
eENhLElBSUgsU0FBU0MsR0FBU0MsRUFBTUMsR0FDdkJBLEVBQU1BLEdBQU94QixDQUViLElBQUl5
QixHQUFTRCxFQUFJRSxjQUFlLFNBRWhDRCxHQUFPRSxLQUFPSixFQUNkQyxFQUFJSSxLQUFLQyxZ
QUFhSixHQUFTSyxXQUFXQyxZQUFhTixHQVF6RCxHQUNDTyxHQUFVLFFBR1ZDLEVBQVMsU0FBVUMs
RUFBVUMsR0FJNUIsTUFBTyxJQUFJRixHQUFPRyxHQUFHQyxLQUFNSCxFQUFVQyxJQUt0Q0csRUFB
USxxQ0FHUkMsRUFBWSxRQUNaQyxFQUFhLFlBR2JDLEVBQWEsU0FBVUMsRUFBS0MsR0FDM0IsTUFB
T0EsR0FBT0MsY0FHaEJYLEdBQU9HLEdBQUtILEVBQU9ZLFdBR2xCQyxPQUFRZCxFQUVSZSxZQUFh
ZCxFQUdiZSxPQUFRLEVBRVJDLFFBQVMsV0FDUixNQUFPdkMsR0FBTVUsS0FBTWhCLE9BS3BCOEMs
SUFBSyxTQUFVQyxHQUdkLE1BQVksT0FBUEEsRUFDR3pDLEVBQU1VLEtBQU1oQixNQUliK0MsRUFB
TSxFQUFJL0MsS0FBTStDLEVBQU0vQyxLQUFLNEMsUUFBVzVDLEtBQU0rQyxJQUtwREMsVUFBVyxT
QUFVQyxHQUdwQixHQUFJQyxHQUFNckIsRUFBT3NCLE1BQU9uRCxLQUFLMkMsY0FBZU0sRUFNNUMs
T0FIQUMsR0FBSUUsV0FBYXBELEtBR1ZrRCxHQUlSRyxLQUFNLFNBQVVDLEdBQ2YsTUFBT3pCLEdB
QU93QixLQUFNckQsS0FBTXNELElBRzNCQyxJQUFLLFNBQVVELEdBQ2QsTUFBT3RELE1BQUtnRCxV
QUFXbkIsRUFBTzBCLElBQUt2RCxLQUFNLFNBQVV3RCxFQUFNQyxHQUN4RCxNQUFPSCxHQUFTdEMs
S0FBTXdDLEVBQU1DLEVBQUdELE9BSWpDbEQsTUFBTyxXQUNOLE1BQU9OLE1BQUtnRCxVQUFXMUMs
RUFBTW9ELE1BQU8xRCxLQUFNMkQsYUFHM0NDLE1BQU8sV0FDTixNQUFPNUQsTUFBSzZELEdBQUks
SUFHakJDLEtBQU0sV0FDTCxNQUFPOUQsTUFBSzZELFFBR2JBLEdBQUksU0FBVUosR0FDYixHQUFJ
TSxHQUFNL0QsS0FBSzRDLE9BQ2RvQixHQUFLUCxHQUFNQSxFQUFJLEVBQUlNLEVBQU0sRUFDMUIs
T0FBTy9ELE1BQUtnRCxVQUFXZ0IsR0FBSyxHQUFLQSxFQUFJRCxHQUFRL0QsS0FBTWdFLFNBR3BE
QyxJQUFLLFdBQ0osTUFBT2pFLE1BQUtvRCxZQUFjcEQsS0FBSzJDLGVBS2hDbkMsS0FBTUEsRUFD
TjBELEtBQU1oRSxFQUFJZ0UsS0FDVkMsT0FBUWpFLEVBQUlpRSxRQUdidEMsRUFBT3VDLE9BQVN2
QyxFQUFPRyxHQUFHb0MsT0FBUyxXQUNsQyxHQUFJQyxHQUFTQyxFQUFNQyxFQUFLQyxFQUFNQyxF
QUFhQyxFQUMxQ0MsRUFBU2hCLFVBQVcsT0FDcEJGLEVBQUksRUFDSmIsRUFBU2UsVUFBVWYsT0FD
bkJnQyxHQUFPLENBc0JSLEtBbkJ1QixpQkFBWEQsS0FDWEMsRUFBT0QsRUFHUEEsRUFBU2hCLFVB
QVdGLE9BQ3BCQSxLQUlzQixnQkFBWGtCLElBQXdCOUMsRUFBT2dELFdBQVlGLEtBQ3REQSxNQUlJ
bEIsSUFBTWIsSUFDVitCLEVBQVMzRSxLQUNUeUQsS0FHT0EsRUFBSWIsRUFBUWEsSUFHbkIsR0FB
cUMsT0FBOUJZLEVBQVVWLFVBQVdGLElBRzNCLElBQU1hLElBQVFELEdBQ2JFLEVBQU1JLEVBQVFM
LEdBQ2RFLEVBQU9ILEVBQVNDLEdBR1hLLElBQVdILElBS1hJLEdBQVFKLElBQVUzQyxFQUFPaUQs
Y0FBZU4sS0FDMUNDLEVBQWM1QyxFQUFPa0QsUUFBU1AsTUFFM0JDLEdBQ0pBLEdBQWMsRUFDZEMs
RUFBUUgsR0FBTzFDLEVBQU9rRCxRQUFTUixHQUFRQSxNQUd2Q0csRUFBUUgsR0FBTzFDLEVBQU9p
RCxjQUFlUCxHQUFRQSxLQUk5Q0ksRUFBUUwsR0FBU3pDLEVBQU91QyxPQUFRUSxFQUFNRixFQUFP
RixJQUd6QlEsU0FBVFIsSUFDWEcsRUFBUUwsR0FBU0UsR0FPckIsT0FBT0csSUFHUjlDLEVBQU91
QyxRQUdOYSxRQUFTLFVBQWFyRCxFQUFVc0QsS0FBS0MsVUFBV0MsUUFBUyxNQUFPLElBR2hFQyxT
QUFTLEVBRVRDLE1BQU8sU0FBVUMsR0FDaEIsS0FBTSxJQUFJekYsT0FBT3lGLElBR2xCQyxLQUFN
LGFBRU5YLFdBQVksU0FBVVksR0FDckIsTUFBOEIsYUFBdkI1RCxFQUFPNkQsS0FBTUQsSUFHckJW
LFFBQVNZLE1BQU1aLFFBRWZhLFNBQVUsU0FBVUgsR0FDbkIsTUFBYyxPQUFQQSxHQUFlQSxJQUFR
QSxFQUFJMUYsUUFHbkM4RixVQUFXLFNBQVVKLEdBS3BCLEdBQUlDLEdBQU83RCxFQUFPNkQsS0FB
TUQsRUFDeEIsUUFBa0IsV0FBVEMsR0FBOEIsV0FBVEEsS0FLNUJJLE1BQU9MLEVBQU1NLFdBQVlO
LEtBRzVCWCxjQUFlLFNBQVVXLEdBQ3hCLEdBQUlPLEdBQU9DLENBSVgsVUFBTVIsR0FBZ0Msb0JB
QXpCOUUsRUFBU0ssS0FBTXlFLFFBSTVCTyxFQUFRN0YsRUFBVXNGLE1BUWxCUSxFQUFPckYsRUFB
T0ksS0FBTWdGLEVBQU8sZ0JBQW1CQSxFQUFNckQsWUFDN0Isa0JBQVRzRCxJQUF1Qm5GLEVBQVdF
LEtBQU1pRixLQUFXbEYsS0FHbEVtRixjQUFlLFNBQVVULEdBSXhCLEdBQUluQixFQUVKLEtBQU1B
LElBQVFtQixHQUNiLE9BQU8sQ0FFUixRQUFPLEdBR1JDLEtBQU0sU0FBVUQsR0FDZixNQUFZLE9B
QVBBLEVBQ0dBLEVBQU0sR0FJUSxnQkFBUkEsSUFBbUMsa0JBQVJBLEdBQ3hDL0UsRUFBWUMsRUFB
U0ssS0FBTXlFLEtBQVcsZUFDL0JBLElBSVRVLFdBQVksU0FBVWhGLEdBQ3JCRCxFQUFTQyxJQU1W
aUYsVUFBVyxTQUFVQyxHQUNwQixNQUFPQSxHQUFPakIsUUFBU2pELEVBQVcsT0FBUWlELFFBQVNo
RCxFQUFZQyxJQUdoRWlFLFNBQVUsU0FBVTlDLEVBQU1jLEdBQ3pCLE1BQU9kLEdBQUs4QyxVQUFZ
OUMsRUFBSzhDLFNBQVNDLGdCQUFrQmpDLEVBQUtpQyxlQUc5RGxELEtBQU0sU0FBVW9DLEVBQUtu
QyxHQUNwQixHQUFJVixHQUFRYSxFQUFJLENBRWhCLElBQUsrQyxFQUFhZixJQUVqQixJQURBN0Ms
RUFBUzZDLEVBQUk3QyxPQUNMYSxFQUFJYixFQUFRYSxJQUNuQixHQUFLSCxFQUFTdEMsS0FBTXlF
LEVBQUtoQyxHQUFLQSxFQUFHZ0MsRUFBS2hDLE9BQVUsRUFDL0MsVUFJRixLQUFNQSxJQUFLZ0Ms
R0FDVixHQUFLbkMsRUFBU3RDLEtBQU15RSxFQUFLaEMsR0FBS0EsRUFBR2dDLEVBQUtoQyxPQUFV
LEVBQy9DLEtBS0gsT0FBT2dDLElBSVJnQixLQUFNLFNBQVVsRixHQUNmLE1BQWUsT0FBUkEsRUFD
TixJQUNFQSxFQUFPLElBQUs2RCxRQUFTbEQsRUFBTyxLQUloQ3dFLFVBQVcsU0FBVXhHLEVBQUt5
RyxHQUN6QixHQUFJekQsR0FBTXlELEtBYVYsT0FYWSxPQUFQekcsSUFDQ3NHLEVBQWFwRyxPQUFR
RixJQUN6QjJCLEVBQU9zQixNQUFPRCxFQUNFLGdCQUFSaEQsSUFDTEEsR0FBUUEsR0FHWE0sRUFB
S1EsS0FBTWtDLEVBQUtoRCxJQUlYZ0QsR0FHUjBELFFBQVMsU0FBVXBELEVBQU10RCxFQUFLdUQs
R0FDN0IsTUFBYyxPQUFQdkQsS0FBbUJPLEVBQVFPLEtBQU1kLEVBQUtzRCxFQUFNQyxJQUtwRE4s
TUFBTyxTQUFVUyxFQUFPaUQsR0FLdkIsSUFKQSxHQUFJOUMsSUFBTzhDLEVBQU9qRSxPQUNqQm9C
LEVBQUksRUFDSlAsRUFBSUcsRUFBTWhCLE9BRUhvQixFQUFJRCxFQUFLQyxJQUNoQkosRUFBT0gs
S0FBUW9ELEVBQVE3QyxFQUt4QixPQUZBSixHQUFNaEIsT0FBU2EsRUFFUkcsR0FHUmtELEtBQU0s
U0FBVTdELEVBQU9LLEVBQVV5RCxHQVNoQyxJQVJBLEdBQUlDLEdBQ0hDLEtBQ0F4RCxFQUFJLEVB
Q0piLEVBQVNLLEVBQU1MLE9BQ2ZzRSxHQUFrQkgsRUFJWHRELEVBQUliLEVBQVFhLElBQ25CdUQs
R0FBbUIxRCxFQUFVTCxFQUFPUSxHQUFLQSxHQUNwQ3VELElBQW9CRSxHQUN4QkQsRUFBUXpHLEtB
QU15QyxFQUFPUSxHQUl2QixPQUFPd0QsSUFJUjFELElBQUssU0FBVU4sRUFBT0ssRUFBVTZELEdB
Qy9CLEdBQUl2RSxHQUFRd0UsRUFDWDNELEVBQUksRUFDSlAsSUFHRCxJQUFLc0QsRUFBYXZELEdB
RWpCLElBREFMLEVBQVNLLEVBQU1MLE9BQ1BhLEVBQUliLEVBQVFhLElBQ25CMkQsRUFBUTlELEVB
QVVMLEVBQU9RLEdBQUtBLEVBQUcwRCxHQUVuQixNQUFUQyxHQUNKbEUsRUFBSTFDLEtBQU00RyxP
QU1aLEtBQU0zRCxJQUFLUixHQUNWbUUsRUFBUTlELEVBQVVMLEVBQU9RLEdBQUtBLEVBQUcwRCxH
QUVuQixNQUFUQyxHQUNKbEUsRUFBSTFDLEtBQU00RyxFQU1iLE9BQU83RyxHQUFPbUQsU0FBV1Is
SUFJMUJtRSxLQUFNLEVBSU5DLE1BQU8sU0FBVXRGLEVBQUlELEdBQ3BCLEdBQUl3RixHQUFLQyxF
QUFNRixDQVVmLElBUndCLGdCQUFadkYsS0FDWHdGLEVBQU12RixFQUFJRCxHQUNWQSxFQUFVQyxF
QUNWQSxFQUFLdUYsR0FLQTFGLEVBQU9nRCxXQUFZN0MsR0FhekIsTUFSQXdGLEdBQU9sSCxFQUFN
VSxLQUFNMkMsVUFBVyxHQUM5QjJELEVBQVEsV0FDUCxNQUFPdEYsR0FBRzBCLE1BQU8zQixHQUFX
L0IsS0FBTXdILEVBQUtqSCxPQUFRRCxFQUFNVSxLQUFNMkMsY0FJNUQyRCxFQUFNRCxLQUFPckYs
RUFBR3FGLEtBQU9yRixFQUFHcUYsTUFBUXhGLEVBQU93RixPQUVsQ0MsR0FHUkcsSUFBS0MsS0FB
S0QsSUFJVnhHLFFBQVNBLElBR2Esa0JBQVgwRyxVQUNYOUYsRUFBT0csR0FBSTJGLE9BQU9DLFVB
QWExSCxFQUFLeUgsT0FBT0MsV0FJNUMvRixFQUFPd0IsS0FBTSx1RUFBdUV3RSxNQUFPLEtBQzNG
LFNBQVVwRSxFQUFHYSxHQUNaNUQsRUFBWSxXQUFhNEQsRUFBTyxLQUFRQSxFQUFLaUMsZUFHOUMs
U0FBU0MsR0FBYWYsR0FNckIsR0FBSTdDLEtBQVc2QyxHQUFPLFVBQVlBLElBQU9BLEVBQUk3QyxP
QUM1QzhDLEVBQU83RCxFQUFPNkQsS0FBTUQsRUFFckIsT0FBYyxhQUFUQyxJQUF1QjdELEVBQU8r
RCxTQUFVSCxLQUk3QixVQUFUQyxHQUErQixJQUFYOUMsR0FDUixnQkFBWEEsSUFBdUJBLEVBQVMs
R0FBT0EsRUFBUyxJQUFPNkMsSUFFaEUsR0FBSXFDLEdBV0osU0FBVy9ILEdBRVgsR0FBSTBELEdB
Q0h4QyxFQUNBOEcsRUFDQUMsRUFDQUMsRUFDQUMsRUFDQUMsRUFDQUMsRUFDQUMsRUFDQUMsRUFD
QUMsRUFHQUMsRUFDQTVJLEVBQ0E2SSxFQUNBQyxFQUNBQyxFQUNBQyxFQUNBM0IsRUFDQTRCLEVB
R0E1RCxFQUFVLFNBQVcsRUFBSSxHQUFJeUMsTUFDN0JvQixFQUFlL0ksRUFBT0gsU0FDdEJtSixF
QUFVLEVBQ1ZDLEVBQU8sRUFDUEMsRUFBYUMsS0FDYkMsRUFBYUQsS0FDYkUsRUFBZ0JGLEtBQ2hC
RyxFQUFZLFNBQVVDLEVBQUdDLEdBSXhCLE1BSEtELEtBQU1DLElBQ1ZoQixHQUFlLEdBRVQsR0FJ
UjNILEtBQWNDLGVBQ2RYLEtBQ0FzSixFQUFNdEosRUFBSXNKLElBQ1ZDLEVBQWN2SixFQUFJTSxL
QUNsQkEsRUFBT04sRUFBSU0sS0FDWEYsRUFBUUosRUFBSUksTUFHWkcsRUFBVSxTQUFVaUosRUFB
TWxHLEdBR3pCLElBRkEsR0FBSUMsR0FBSSxFQUNQTSxFQUFNMkYsRUFBSzlHLE9BQ0phLEVBQUlN
LEVBQUtOLElBQ2hCLEdBQUtpRyxFQUFLakcsS0FBT0QsRUFDaEIsTUFBT0MsRUFHVCxXQUdEa0cs
RUFBVyw2SEFLWEMsRUFBYSxzQkFHYkMsRUFBYSxnQ0FHYkMsRUFBYSxNQUFRRixFQUFhLEtBQU9D
LEVBQWEsT0FBU0QsRUFFOUQsZ0JBQWtCQSxFQUVsQiwyREFBNkRDLEVBQWEsT0FBU0QsRUFDbkYs
T0FFREcsRUFBVSxLQUFPRixFQUFhLHdGQUtBQyxFQUFhLGVBTTNDRSxFQUFjLEdBQUlDLFFBQVFM
LEVBQWEsSUFBSyxLQUM1QzFILEVBQVEsR0FBSStILFFBQVEsSUFBTUwsRUFBYSw4QkFBZ0NBLEVB
QWEsS0FBTSxLQUUxRk0sRUFBUyxHQUFJRCxRQUFRLElBQU1MLEVBQWEsS0FBT0EsRUFBYSxLQUM1
RE8sRUFBZSxHQUFJRixRQUFRLElBQU1MLEVBQWEsV0FBYUEsRUFBYSxJQUFNQSxFQUFhLEtBRTNG
USxFQUFtQixHQUFJSCxRQUFRLElBQU1MLEVBQWEsaUJBQW1CQSxFQUFhLE9BQVEsS0FFMUZTLEVB
QVUsR0FBSUosUUFBUUYsR0FDdEJPLEVBQWMsR0FBSUwsUUFBUSxJQUFNSixFQUFhLEtBRTdDVSxH
QUNDQyxHQUFNLEdBQUlQLFFBQVEsTUFBUUosRUFBYSxLQUN2Q1ksTUFBUyxHQUFJUixRQUFRLFFB
QVVKLEVBQWEsS0FDNUNhLElBQU8sR0FBSVQsUUFBUSxLQUFPSixFQUFhLFNBQ3ZDYyxLQUFRLEdB
QUlWLFFBQVEsSUFBTUgsR0FDMUJjLE9BQVUsR0FBSVgsUUFBUSxJQUFNRixHQUM1QmMsTUFBUyxH
QUFJWixRQUFRLHlEQUEyREwsRUFDL0UsK0JBQWlDQSxFQUFhLGNBQWdCQSxFQUM5RCxhQUFlQSxF
QUFhLFNBQVUsS0FDdkNrQixLQUFRLEdBQUliLFFBQVEsT0FBU04sRUFBVyxLQUFNLEtBRzlDb0Is
YUFBZ0IsR0FBSWQsUUFBUSxJQUFNTCxFQUFhLG1EQUM5Q0EsRUFBYSxtQkFBcUJBLEVBQWEsbUJB
QW9CLE1BR3JFb0IsRUFBVSxzQ0FDVkMsRUFBVSxTQUVWQyxFQUFVLHlCQUdWQyxFQUFhLG1DQUVi
QyxFQUFXLE9BSVhDLEVBQVksR0FBSXBCLFFBQVEscUJBQXVCTCxFQUFhLE1BQVFBLEVBQWEsT0FB
USxNQUN6RjBCLEdBQVksU0FBVUMsRUFBR0MsRUFBU0MsR0FDakMsR0FBSUMsR0FBTyxLQUFPRixF
QUFVLEtBSTVCLE9BQU9FLEtBQVNBLEdBQVFELEVBQ3ZCRCxFQUNBRSxFQUFPLEVBRU5DLE9BQU9D
LGFBQWNGLEVBQU8sT0FFNUJDLE9BQU9DLGFBQWNGLEdBQVEsR0FBSyxNQUFlLEtBQVBBLEVBQWUs
UUFLNURHLEdBQWEsc0RBQ2JDLEdBQWEsU0FBVUMsRUFBSUMsR0FDMUIsTUFBS0EsR0FHUSxPQUFQ
RCxFQUNHLFNBSURBLEVBQUd6TCxNQUFPLE1BQVUsS0FBT3lMLEVBQUdFLFdBQVlGLEVBQUduSixP
QUFTLEdBQUlqQyxTQUFVLElBQU8sSUFJNUUsS0FBT29MLEdBT2ZHLEdBQWdCLFdBQ2YxRCxLQUdE
MkQsR0FBbUJDLEdBQ2xCLFNBQVU1SSxHQUNULE1BQU9BLEdBQUs2SSxZQUFhLElBQVMsUUFBVTdJ
LElBQVEsU0FBV0EsTUFFOUQ4SSxJQUFLLGFBQWNDLEtBQU0sVUFJN0IsS0FDQy9MLEVBQUtrRCxN
QUNIeEQsRUFBTUksRUFBTVUsS0FBTThILEVBQWEwRCxZQUNoQzFELEVBQWEwRCxZQUlkdE0sRUFB
SzRJLEVBQWEwRCxXQUFXNUosUUFBUzZKLFNBQ3JDLE1BQVFDLElBQ1RsTSxHQUFTa0QsTUFBT3hE
LEVBQUkwQyxPQUduQixTQUFVK0IsRUFBUWdJLEdBQ2pCbEQsRUFBWS9GLE1BQU9pQixFQUFRckUs
RUFBTVUsS0FBSzJMLEtBS3ZDLFNBQVVoSSxFQUFRZ0ksR0FDakIsR0FBSTNJLEdBQUlXLEVBQU8v
QixPQUNkYSxFQUFJLENBRUwsT0FBU2tCLEVBQU9YLEtBQU8ySSxFQUFJbEosTUFDM0JrQixFQUFP
L0IsT0FBU29CLEVBQUksSUFLdkIsUUFBUzhELElBQVFoRyxFQUFVQyxFQUFTNEUsRUFBU2lHLEdB
QzVDLEdBQUlDLEdBQUdwSixFQUFHRCxFQUFNc0osRUFBS0MsRUFBT0MsRUFBUUMsRUFDbkNDLEVB
QWFuTCxHQUFXQSxFQUFRb0wsY0FHaENWLEVBQVcxSyxFQUFVQSxFQUFRMEssU0FBVyxDQUt6QyxJ
QUhBOUYsRUFBVUEsTUFHZSxnQkFBYjdFLEtBQTBCQSxHQUN4QixJQUFiMkssR0FBK0IsSUFBYkEs
R0FBK0IsS0FBYkEsRUFFcEMsTUFBTzlGLEVBSVIsS0FBTWlHLEtBRUU3SyxFQUFVQSxFQUFRb0ws
ZUFBaUJwTCxFQUFVK0csS0FBbUJsSixHQUN0RTRJLEVBQWF6RyxHQUVkQSxFQUFVQSxHQUFXbkMs
RUFFaEI4SSxHQUFpQixDQUlyQixHQUFrQixLQUFiK0QsSUFBb0JNLEVBQVE1QixFQUFXaUMsS0FB
TXRMLElBR2pELEdBQU0rSyxFQUFJRSxFQUFNLElBR2YsR0FBa0IsSUFBYk4sRUFBaUIsQ0FDckIs
S0FBTWpKLEVBQU96QixFQUFRc0wsZUFBZ0JSLElBVXBDLE1BQU9sRyxFQUxQLElBQUtuRCxFQUFL
OEosS0FBT1QsRUFFaEIsTUFEQWxHLEdBQVFuRyxLQUFNZ0QsR0FDUG1ELE1BWVQsSUFBS3VHLElB
QWUxSixFQUFPMEosRUFBV0csZUFBZ0JSLEtBQ3JEaEUsRUFBVTlHLEVBQVN5QixJQUNuQkEsRUFB
SzhKLEtBQU9ULEVBR1osTUFEQWxHLEdBQVFuRyxLQUFNZ0QsR0FDUG1ELE1BS0gsQ0FBQSxHQUFL
b0csRUFBTSxHQUVqQixNQURBdk0sR0FBS2tELE1BQU9pRCxFQUFTNUUsRUFBUXdMLHFCQUFzQnpM
LElBQzVDNkUsQ0FHRCxLQUFNa0csRUFBSUUsRUFBTSxLQUFPOUwsRUFBUXVNLHdCQUNyQ3pMLEVB
QVF5TCx1QkFHUixNQURBaE4sR0FBS2tELE1BQU9pRCxFQUFTNUUsRUFBUXlMLHVCQUF3QlgsSUFD
OUNsRyxFQUtULEdBQUsxRixFQUFRd00sTUFDWHJFLEVBQWV0SCxFQUFXLFFBQ3pCNkcsSUFBY0Es
RUFBVStFLEtBQU01TCxJQUFjLENBRTlDLEdBQWtCLElBQWIySyxFQUNKUyxFQUFhbkwsRUFDYmtM
LEVBQWNuTCxNQU1SLElBQXdDLFdBQW5DQyxFQUFRdUUsU0FBU0MsY0FBNkIsRUFHbkR1RyxFQUFN
L0ssRUFBUTRMLGFBQWMsT0FDakNiLEVBQU1BLEVBQUkxSCxRQUFTeUcsR0FBWUMsSUFFL0IvSixF
QUFRNkwsYUFBYyxLQUFPZCxFQUFNN0gsR0FJcEMrSCxFQUFTOUUsRUFBVXBHLEdBQ25CMkIsRUFB
SXVKLEVBQU9wSyxNQUNYLE9BQVFhLElBQ1B1SixFQUFPdkosR0FBSyxJQUFNcUosRUFBTSxJQUFN
ZSxHQUFZYixFQUFPdkosR0FFbER3SixHQUFjRCxFQUFPYyxLQUFNLEtBRzNCWixFQUFhOUIsRUFB
U3NDLEtBQU01TCxJQUFjaU0sR0FBYWhNLEVBQVFMLGFBQzlESyxFQUdGLEdBQUtrTCxFQUNKLElB
SUMsTUFIQXpNLEdBQUtrRCxNQUFPaUQsRUFDWHVHLEVBQVdjLGlCQUFrQmYsSUFFdkJ0RyxFQUNO
LE1BQVFzSCxJQUNSLFFBQ0luQixJQUFRN0gsR0FDWmxELEVBQVFtTSxnQkFBaUIsUUFTL0IsTUFB
TzlGLEdBQVF0RyxFQUFTc0QsUUFBU2xELEVBQU8sTUFBUUgsRUFBUzRFLEVBQVNpRyxHQVNuRSxR
QUFTMUQsTUFDUixHQUFJaUYsS0FFSixTQUFTQyxHQUFPQyxFQUFLakgsR0FNcEIsTUFKSytHLEdB
QUszTixLQUFNNk4sRUFBTSxLQUFRdEcsRUFBS3VHLG1CQUUzQkYsR0FBT0QsRUFBS0ksU0FFWkgs
RUFBT0MsRUFBTSxLQUFRakgsRUFFOUIsTUFBT2dILEdBT1IsUUFBU0ksSUFBY3hNLEdBRXRCLE1B
REFBLEdBQUlpRCxJQUFZLEVBQ1RqRCxFQU9SLFFBQVN5TSxJQUFRek0sR0FDaEIsR0FBSTBNLEdB
QUs5TyxFQUFTMEIsY0FBYyxXQUVoQyxLQUNDLFFBQVNVLEVBQUkwTSxHQUNaLE1BQU9oQyxHQUNS
LE9BQU8sRUFDTixRQUVJZ0MsRUFBR2hOLFlBQ1BnTixFQUFHaE4sV0FBV0MsWUFBYStNLEdBRzVC
QSxFQUFLLE1BU1AsUUFBU0MsSUFBV0MsRUFBT0MsR0FDMUIsR0FBSTNPLEdBQU0wTyxFQUFNL0cs
TUFBTSxLQUNyQnBFLEVBQUl2RCxFQUFJMEMsTUFFVCxPQUFRYSxJQUNQc0UsRUFBSytHLFdBQVk1
TyxFQUFJdUQsSUFBT29MLEVBVTlCLFFBQVNFLElBQWN6RixFQUFHQyxHQUN6QixHQUFJeUYsR0FB
TXpGLEdBQUtELEVBQ2QyRixFQUFPRCxHQUFzQixJQUFmMUYsRUFBRW1ELFVBQWlDLElBQWZsRCxF
QUFFa0QsVUFDbkNuRCxFQUFFNEYsWUFBYzNGLEVBQUUyRixXQUdwQixJQUFLRCxFQUNKLE1BQU9B
LEVBSVIsSUFBS0QsRUFDSixNQUFTQSxFQUFNQSxFQUFJRyxZQUNsQixHQUFLSCxJQUFRekYsRUFD
WixRQUtILE9BQU9ELEdBQUksS0FPWixRQUFTOEYsSUFBbUIxSixHQUMzQixNQUFPLFVBQVVsQyxH
QUNoQixHQUFJYyxHQUFPZCxFQUFLOEMsU0FBU0MsYUFDekIsT0FBZ0IsVUFBVGpDLEdBQW9CZCxF
QUFLa0MsT0FBU0EsR0FRM0MsUUFBUzJKLElBQW9CM0osR0FDNUIsTUFBTyxVQUFVbEMsR0FDaEIs
R0FBSWMsR0FBT2QsRUFBSzhDLFNBQVNDLGFBQ3pCLFFBQWlCLFVBQVRqQyxHQUE2QixXQUFUQSxJ
QUFzQmQsRUFBS2tDLE9BQVNBLEdBUWxFLFFBQVM0SixJQUFzQmpELEdBRzlCLE1BQU8sVUFBVTdJ
LEdBS2hCLE1BQUssUUFBVUEsR0FTVEEsRUFBSzlCLFlBQWM4QixFQUFLNkksWUFBYSxFQUdwQyxT
QUFXN0ksR0FDVixTQUFXQSxHQUFLOUIsV0FDYjhCLEVBQUs5QixXQUFXMkssV0FBYUEsRUFFN0I3
SSxFQUFLNkksV0FBYUEsRUFNcEI3SSxFQUFLK0wsYUFBZWxELEdBSTFCN0ksRUFBSytMLGNBQWdC
bEQsR0FDcEJGLEdBQWtCM0ksS0FBVzZJLEVBR3pCN0ksRUFBSzZJLFdBQWFBLEVBS2QsU0FBVzdJ
LElBQ2ZBLEVBQUs2SSxXQUFhQSxHQVk1QixRQUFTbUQsSUFBd0J4TixHQUNoQyxNQUFPd00sSUFB
YSxTQUFVaUIsR0FFN0IsTUFEQUEsSUFBWUEsRUFDTGpCLEdBQWEsU0FBVTVCLEVBQU0zRixHQUNu
QyxHQUFJakQsR0FDSDBMLEVBQWUxTixLQUFRNEssRUFBS2hLLE9BQVE2TSxHQUNwQ2hNLEVBQUlp
TSxFQUFhOU0sTUFHbEIsT0FBUWEsSUFDRm1KLEVBQU81SSxFQUFJMEwsRUFBYWpNLE1BQzVCbUos
RUFBSzVJLEtBQU9pRCxFQUFRakQsR0FBSzRJLEVBQUs1SSxTQVluQyxRQUFTK0osSUFBYWhNLEdB
Q3JCLE1BQU9BLElBQW1ELG1CQUFqQ0EsR0FBUXdMLHNCQUF3Q3hMLEVBSTFFZCxFQUFVNkcsR0FB
TzdHLFdBT2pCZ0gsRUFBUUgsR0FBT0csTUFBUSxTQUFVekUsR0FHaEMsR0FBSW1NLEdBQWtCbk0s
SUFBU0EsRUFBSzJKLGVBQWlCM0osR0FBTW1NLGVBQzNELFNBQU9BLEdBQStDLFNBQTdCQSxFQUFn
QnJKLFVBUTFDa0MsRUFBY1YsR0FBT1UsWUFBYyxTQUFVb0gsR0FDNUMsR0FBSUMsR0FBWUMsRUFD
ZjFPLEVBQU13TyxFQUFPQSxFQUFLekMsZUFBaUJ5QyxFQUFPOUcsQ0FHM0MsT0FBSzFILEtBQVF4
QixHQUE2QixJQUFqQndCLEVBQUlxTCxVQUFtQnJMLEVBQUl1TyxpQkFLcEQvUCxFQUFXd0IsRUFD
WHFILEVBQVU3SSxFQUFTK1AsZ0JBQ25CakgsR0FBa0JULEVBQU9ySSxHQUlwQmtKLElBQWlCbEos
SUFDcEJrUSxFQUFZbFEsRUFBU21RLGNBQWdCRCxFQUFVRSxNQUFRRixJQUduREEsRUFBVUcsaUJB
Q2RILEVBQVVHLGlCQUFrQixTQUFVL0QsSUFBZSxHQUcxQzRELEVBQVVJLGFBQ3JCSixFQUFVSSxZ
QUFhLFdBQVloRSxLQVVyQ2pMLEVBQVE2SSxXQUFhMkUsR0FBTyxTQUFVQyxHQUVyQyxNQURBQSxH
QUFHeUIsVUFBWSxLQUNQekIsRUFBR2YsYUFBYSxlQU96QjFNLEVBQVFzTSxxQkFBdUJrQixHQUFP
LFNBQVVDLEdBRS9DLE1BREFBLEdBQUdqTixZQUFhN0IsRUFBU3dRLGNBQWMsTUFDL0IxQixFQUFH
bkIscUJBQXFCLEtBQUszSyxTQUl0QzNCLEVBQVF1TSx1QkFBeUJ0QyxFQUFRd0MsS0FBTTlOLEVB
QVM0Tix3QkFNeER2TSxFQUFRb1AsUUFBVTVCLEdBQU8sU0FBVUMsR0FFbEMsTUFEQWpHLEdBQVFo
SCxZQUFhaU4sR0FBS3BCLEdBQUtySSxHQUN2QnJGLEVBQVMwUSxvQkFBc0IxUSxFQUFTMFEsa0JB
QW1CckwsR0FBVXJDLFNBSXpFM0IsRUFBUW9QLFNBQ1p0SSxFQUFLd0ksT0FBVyxHQUFJLFNBQVVq
RCxHQUM3QixHQUFJa0QsR0FBU2xELEVBQUdsSSxRQUFTaUcsRUFBV0MsR0FDcEMsT0FBTyxVQUFV
OUgsR0FDaEIsTUFBT0EsR0FBS21LLGFBQWEsUUFBVTZDLElBR3JDekksRUFBSzBJLEtBQVMsR0FB
SSxTQUFVbkQsRUFBSXZMLEdBQy9CLEdBQXVDLG1CQUEzQkEsR0FBUXNMLGdCQUFrQzNFLEVBQWlC
LENBQ3RFLEdBQUlsRixHQUFPekIsRUFBUXNMLGVBQWdCQyxFQUNuQyxPQUFPOUosSUFBU0EsVUFJ
bEJ1RSxFQUFLd0ksT0FBVyxHQUFLLFNBQVVqRCxHQUM5QixHQUFJa0QsR0FBU2xELEVBQUdsSSxR
QUFTaUcsRUFBV0MsR0FDcEMsT0FBTyxVQUFVOUgsR0FDaEIsR0FBSW9NLEdBQXdDLG1CQUExQnBN
LEdBQUtrTixrQkFDdEJsTixFQUFLa04saUJBQWlCLEtBQ3ZCLE9BQU9kLElBQVFBLEVBQUt4SSxR
QUFVb0osSUFNaEN6SSxFQUFLMEksS0FBUyxHQUFJLFNBQVVuRCxFQUFJdkwsR0FDL0IsR0FBdUMs
bUJBQTNCQSxHQUFRc0wsZ0JBQWtDM0UsRUFBaUIsQ0FDdEUsR0FBSWtILEdBQU1uTSxFQUFHUixF
QUNaTyxFQUFPekIsRUFBUXNMLGVBQWdCQyxFQUVoQyxJQUFLOUosRUFBTyxDQUlYLEdBREFvTSxF
QUFPcE0sRUFBS2tOLGlCQUFpQixNQUN4QmQsR0FBUUEsRUFBS3hJLFFBQVVrRyxFQUMzQixPQUFT
OUosRUFJVlAsR0FBUWxCLEVBQVF1TyxrQkFBbUJoRCxHQUNuQzdKLEVBQUksQ0FDSixPQUFTRCxF
QUFPUCxFQUFNUSxLQUVyQixHQURBbU0sRUFBT3BNLEVBQUtrTixpQkFBaUIsTUFDeEJkLEdBQVFB
LEVBQUt4SSxRQUFVa0csRUFDM0IsT0FBUzlKLEdBS1osWUFNSHVFLEVBQUswSSxLQUFVLElBQUl4
UCxFQUFRc00scUJBQzFCLFNBQVVvRCxFQUFLNU8sR0FDZCxNQUE2QyxtQkFBakNBLEdBQVF3TCxx
QkFDWnhMLEVBQVF3TCxxQkFBc0JvRCxHQUcxQjFQLEVBQVF3TSxJQUNaMUwsRUFBUWlNLGlCQUFr
QjJDLEdBRDNCLFFBS1IsU0FBVUEsRUFBSzVPLEdBQ2QsR0FBSXlCLEdBQ0grRCxLQUNBOUQsRUFB
SSxFQUVKa0QsRUFBVTVFLEVBQVF3TCxxQkFBc0JvRCxFQUd6QyxJQUFhLE1BQVJBLEVBQWMsQ0FD
bEIsTUFBU25OLEVBQU9tRCxFQUFRbEQsS0FDQSxJQUFsQkQsRUFBS2lKLFVBQ1RsRixFQUFJL0cs
S0FBTWdELEVBSVosT0FBTytELEdBRVIsTUFBT1osSUFJVG9CLEVBQUswSSxLQUFZLE1BQUl4UCxF
QUFRdU0sd0JBQTBCLFNBQVUyQyxFQUFXcE8sR0FDM0UsR0FBK0MsbUJBQW5DQSxHQUFReUwsd0JB
QTBDOUUsRUFDN0QsTUFBTzNHLEdBQVF5TCx1QkFBd0IyQyxJQVV6Q3ZILEtBT0FELE1BRU0xSCxF
QUFRd00sSUFBTXZDLEVBQVF3QyxLQUFNOU4sRUFBU29PLHFCQUcxQ1MsR0FBTyxTQUFVQyxHQU1o
QmpHLEVBQVFoSCxZQUFhaU4sR0FBS2tDLFVBQVksVUFBWTNMLEVBQVUscUJBQzFDQSxFQUFVLGtF
QU92QnlKLEVBQUdWLGlCQUFpQix3QkFBd0JwTCxRQUNoRCtGLEVBQVVuSSxLQUFNLFNBQVdvSixF
QUFhLGdCQUtuQzhFLEVBQUdWLGlCQUFpQixjQUFjcEwsUUFDdkMrRixFQUFVbkksS0FBTSxNQUFR
b0osRUFBYSxhQUFlRCxFQUFXLEtBSTFEK0UsRUFBR1YsaUJBQWtCLFFBQVUvSSxFQUFVLE1BQU9y
QyxRQUNyRCtGLEVBQVVuSSxLQUFLLE1BTVZrTyxFQUFHVixpQkFBaUIsWUFBWXBMLFFBQ3JDK0Ys
RUFBVW5JLEtBQUssWUFNVmtPLEVBQUdWLGlCQUFrQixLQUFPL0ksRUFBVSxNQUFPckMsUUFDbEQr
RixFQUFVbkksS0FBSyxjQUlqQmlPLEdBQU8sU0FBVUMsR0FDaEJBLEVBQUdrQyxVQUFZLG1GQUtm
LElBQUlDLEdBQVFqUixFQUFTMEIsY0FBYyxRQUNuQ3VQLEdBQU1qRCxhQUFjLE9BQVEsVUFDNUJj
LEVBQUdqTixZQUFhb1AsR0FBUWpELGFBQWMsT0FBUSxLQUl6Q2MsRUFBR1YsaUJBQWlCLFlBQVlw
TCxRQUNwQytGLEVBQVVuSSxLQUFNLE9BQVNvSixFQUFhLGVBS1MsSUFBM0M4RSxFQUFHVixpQkFB
aUIsWUFBWXBMLFFBQ3BDK0YsRUFBVW5JLEtBQU0sV0FBWSxhQUs3QmlJLEVBQVFoSCxZQUFhaU4s
R0FBS3JDLFVBQVcsRUFDWSxJQUE1Q3FDLEVBQUdWLGlCQUFpQixhQUFhcEwsUUFDckMrRixFQUFV
bkksS0FBTSxXQUFZLGFBSTdCa08sRUFBR1YsaUJBQWlCLFFBQ3BCckYsRUFBVW5JLEtBQUssWUFJ
WFMsRUFBUTZQLGdCQUFrQjVGLEVBQVF3QyxLQUFPekcsRUFBVXdCLEVBQVF4QixTQUNoRXdCLEVB
QVFzSSx1QkFDUnRJLEVBQVF1SSxvQkFDUnZJLEVBQVF3SSxrQkFDUnhJLEVBQVF5SSxxQkFFUnpD
LEdBQU8sU0FBVUMsR0FHaEJ6TixFQUFRa1Esa0JBQW9CbEssRUFBUWpHLEtBQU0wTixFQUFJLEtB
STlDekgsRUFBUWpHLEtBQU0wTixFQUFJLGFBQ2xCOUYsRUFBY3BJLEtBQU0sS0FBTXVKLEtBSTVC
cEIsRUFBWUEsRUFBVS9GLFFBQVUsR0FBSXFILFFBQVF0QixFQUFVbUYsS0FBSyxNQUMzRGxGLEVB
QWdCQSxFQUFjaEcsUUFBVSxHQUFJcUgsUUFBUXJCLEVBQWNrRixLQUFLLE1BSXZFK0IsRUFBYTNF
LEVBQVF3QyxLQUFNakYsRUFBUTJJLHlCQUtuQ3ZJLEVBQVdnSCxHQUFjM0UsRUFBUXdDLEtBQU1q
RixFQUFRSSxVQUM5QyxTQUFVUyxFQUFHQyxHQUNaLEdBQUk4SCxHQUF1QixJQUFmL0gsRUFBRW1E
LFNBQWlCbkQsRUFBRXFHLGdCQUFrQnJHLEVBQ2xEZ0ksRUFBTS9ILEdBQUtBLEVBQUU3SCxVQUNk
LE9BQU80SCxLQUFNZ0ksTUFBV0EsR0FBd0IsSUFBakJBLEVBQUk3RSxZQUNsQzRFLEVBQU14SSxT
QUNMd0ksRUFBTXhJLFNBQVV5SSxHQUNoQmhJLEVBQUU4SCx5QkFBOEQsR0FBbkM5SCxFQUFFOEgs
d0JBQXlCRSxNQUczRCxTQUFVaEksRUFBR0MsR0FDWixHQUFLQSxFQUNKLE1BQVNBLEVBQUlBLEVB
QUU3SCxXQUNkLEdBQUs2SCxJQUFNRCxFQUNWLE9BQU8sQ0FJVixRQUFPLEdBT1RELEVBQVl3RyxF
QUNaLFNBQVV2RyxFQUFHQyxHQUdaLEdBQUtELElBQU1DLEVBRVYsTUFEQWhCLElBQWUsRUFDUixD
QUlSLElBQUlnSixJQUFXakksRUFBRThILHlCQUEyQjdILEVBQUU2SCx1QkFDOUMsT0FBS0csR0FD
R0EsR0FJUkEsR0FBWWpJLEVBQUU2RCxlQUFpQjdELE1BQVVDLEVBQUU0RCxlQUFpQjVELEdBQzNE
RCxFQUFFOEgsd0JBQXlCN0gsR0FHM0IsRUFHYyxFQUFWZ0ksSUFDRnRRLEVBQVF1USxjQUFnQmpJ
LEVBQUU2SCx3QkFBeUI5SCxLQUFRaUksRUFHeERqSSxJQUFNMUosR0FBWTBKLEVBQUU2RCxnQkFB
a0JyRSxHQUFnQkQsRUFBU0MsRUFBY1EsTUFHN0VDLElBQU0zSixHQUFZMkosRUFBRTRELGdCQUFr
QnJFLEdBQWdCRCxFQUFTQyxFQUFjUyxHQUMxRSxFQUlEakIsRUFDSjdILEVBQVM2SCxFQUFXZ0Is
R0FBTTdJLEVBQVM2SCxFQUFXaUIsR0FDaEQsRUFHZSxFQUFWZ0ksS0FBbUIsSUFFM0IsU0FBVWpJ
LEVBQUdDLEdBRVosR0FBS0QsSUFBTUMsRUFFVixNQURBaEIsSUFBZSxFQUNSLENBR1IsSUFBSXlH
LEdBQ0h2TCxFQUFJLEVBQ0pnTyxFQUFNbkksRUFBRTVILFdBQ1I0UCxFQUFNL0gsRUFBRTdILFdB
Q1JnUSxHQUFPcEksR0FDUHFJLEdBQU9wSSxFQUdSLEtBQU1rSSxJQUFRSCxFQUNiLE1BQU9oSSxL
QUFNMUosS0FDWjJKLElBQU0zSixFQUFXLEVBQ2pCNlIsS0FDQUgsRUFBTSxFQUNOaEosRUFDRTdI
LEVBQVM2SCxFQUFXZ0IsR0FBTTdJLEVBQVM2SCxFQUFXaUIsR0FDaEQsQ0FHSyxJQUFLa0ksSUFB
UUgsRUFDbkIsTUFBT3ZDLElBQWN6RixFQUFHQyxFQUl6QnlGLEdBQU0xRixDQUNOLE9BQVMwRixF
QUFNQSxFQUFJdE4sV0FDbEJnUSxFQUFHRSxRQUFTNUMsRUFFYkEsR0FBTXpGLENBQ04sT0FBU3lG
LEVBQU1BLEVBQUl0TixXQUNsQmlRLEVBQUdDLFFBQVM1QyxFQUliLE9BQVEwQyxFQUFHak8sS0FB
T2tPLEVBQUdsTyxHQUNwQkEsR0FHRCxPQUFPQSxHQUVOc0wsR0FBYzJDLEVBQUdqTyxHQUFJa08s
RUFBR2xPLElBR3hCaU8sRUFBR2pPLEtBQU9xRixLQUNWNkksRUFBR2xPLEtBQU9xRixFQUFlLEVB
Q3pCLEdBR0tsSixHQTNZQ0EsR0E4WVRrSSxHQUFPYixRQUFVLFNBQVU0SyxFQUFNQyxHQUNoQyxN
QUFPaEssSUFBUStKLEVBQU0sS0FBTSxLQUFNQyxJQUdsQ2hLLEdBQU9nSixnQkFBa0IsU0FBVXRO
LEVBQU1xTyxHQVN4QyxJQVBPck8sRUFBSzJKLGVBQWlCM0osS0FBVzVELEdBQ3ZDNEksRUFBYWhG
LEdBSWRxTyxFQUFPQSxFQUFLek0sUUFBU2dGLEVBQWtCLFVBRWxDbkosRUFBUTZQLGlCQUFtQnBJ
LElBQzlCVSxFQUFleUksRUFBTyxRQUNwQmpKLElBQWtCQSxFQUFjOEUsS0FBTW1FLE9BQ3RDbEos
SUFBa0JBLEVBQVUrRSxLQUFNbUUsSUFFckMsSUFDQyxHQUFJM08sR0FBTStELEVBQVFqRyxLQUFN
d0MsRUFBTXFPLEVBRzlCLElBQUszTyxHQUFPakMsRUFBUWtRLG1CQUdsQjNOLEVBQUs1RCxVQUF1
QyxLQUEzQjRELEVBQUs1RCxTQUFTNk0sU0FDaEMsTUFBT3ZKLEdBRVAsTUFBT3dKLElBR1YsTUFB
TzVFLElBQVErSixFQUFNalMsRUFBVSxNQUFRNEQsSUFBU1osT0FBUyxHQUcxRGtGLEdBQU9lLFNB
QVcsU0FBVTlHLEVBQVN5QixHQUtwQyxPQUhPekIsRUFBUW9MLGVBQWlCcEwsS0FBY25DLEdBQzdD
NEksRUFBYXpHLEdBRVA4RyxFQUFVOUcsRUFBU3lCLElBRzNCc0UsR0FBT2lLLEtBQU8sU0FBVXZP
LEVBQU1jLElBRXRCZCxFQUFLMkosZUFBaUIzSixLQUFXNUQsR0FDdkM0SSxFQUFhaEYsRUFHZCxJ
QUFJeEIsR0FBSytGLEVBQUsrRyxXQUFZeEssRUFBS2lDLGVBRTlCeUwsRUFBTWhRLEdBQU1wQixF
QUFPSSxLQUFNK0csRUFBSytHLFdBQVl4SyxFQUFLaUMsZUFDOUN2RSxFQUFJd0IsRUFBTWMsR0FB
T29FLEdBQ2pCMUQsTUFFRixPQUFlQSxVQUFSZ04sRUFDTkEsRUFDQS9RLEVBQVE2SSxhQUFlcEIs
RUFDdEJsRixFQUFLbUssYUFBY3JKLElBQ2xCME4sRUFBTXhPLEVBQUtrTixpQkFBaUJwTSxLQUFV
ME4sRUFBSUMsVUFDMUNELEVBQUk1SyxNQUNKLE1BR0pVLEdBQU9vSyxPQUFTLFNBQVVDLEdBQ3pC
LE9BQVFBLEVBQU0sSUFBSS9NLFFBQVN5RyxHQUFZQyxLQUd4Q2hFLEdBQU94QyxNQUFRLFNBQVVD
LEdBQ3hCLEtBQU0sSUFBSXpGLE9BQU8sMENBQTRDeUYsSUFPOUR1QyxHQUFPc0ssV0FBYSxTQUFV
ekwsR0FDN0IsR0FBSW5ELEdBQ0g2TyxLQUNBck8sRUFBSSxFQUNKUCxFQUFJLENBT0wsSUFKQThF
LEdBQWdCdEgsRUFBUXFSLGlCQUN4QmhLLEdBQWFySCxFQUFRc1IsWUFBYzVMLEVBQVFyRyxNQUFP
LEdBQ2xEcUcsRUFBUXpDLEtBQU1tRixHQUVUZCxFQUFlLENBQ25CLE1BQVMvRSxFQUFPbUQsRUFB
UWxELEtBQ2xCRCxJQUFTbUQsRUFBU2xELEtBQ3RCTyxFQUFJcU8sRUFBVzdSLEtBQU1pRCxHQUd2
QixPQUFRTyxJQUNQMkMsRUFBUXhDLE9BQVFrTyxFQUFZck8sR0FBSyxHQVFuQyxNQUZBc0UsR0FB
WSxLQUVMM0IsR0FPUnFCLEVBQVVGLEdBQU9FLFFBQVUsU0FBVXhFLEdBQ3BDLEdBQUlvTSxHQUNI
MU0sRUFBTSxHQUNOTyxFQUFJLEVBQ0pnSixFQUFXakosRUFBS2lKLFFBRWpCLElBQU1BLEdBTUMs
R0FBa0IsSUFBYkEsR0FBK0IsSUFBYkEsR0FBK0IsS0FBYkEsRUFBa0IsQ0FHakUsR0FBaUMsZ0JB
QXJCakosR0FBS2dQLFlBQ2hCLE1BQU9oUCxHQUFLZ1AsV0FHWixLQUFNaFAsRUFBT0EsRUFBS2lQ
LFdBQVlqUCxFQUFNQSxFQUFPQSxFQUFLMkwsWUFDL0NqTSxHQUFPOEUsRUFBU3hFLE9BR1osSUFB
a0IsSUFBYmlKLEdBQStCLElBQWJBLEVBQzdCLE1BQU9qSixHQUFLa1AsY0FoQlosT0FBUzlDLEVB
QU9wTSxFQUFLQyxLQUVwQlAsR0FBTzhFLEVBQVM0SCxFQWtCbEIsT0FBTzFNLElBR1I2RSxFQUFP
RCxHQUFPNkssV0FHYnJFLFlBQWEsR0FFYnNFLGFBQWNwRSxHQUVkekIsTUFBT3hDLEVBRVB1RSxj
QUVBMkIsUUFFQW9DLFVBQ0NDLEtBQU94RyxJQUFLLGFBQWMxSSxPQUFPLEdBQ2pDbVAsS0FBT3pH
LElBQUssY0FDWjBHLEtBQU8xRyxJQUFLLGtCQUFtQjFJLE9BQU8sR0FDdENxUCxLQUFPM0csSUFB
SyxvQkFHYjRHLFdBQ0N2SSxLQUFRLFNBQVVvQyxHQVVqQixNQVRBQSxHQUFNLEdBQUtBLEVBQU0s
R0FBRzNILFFBQVNpRyxFQUFXQyxJQUd4Q3lCLEVBQU0sSUFBT0EsRUFBTSxJQUFNQSxFQUFNLElB
QU1BLEVBQU0sSUFBTSxJQUFLM0gsUUFBU2lHLEVBQVdDLElBRXhELE9BQWJ5QixFQUFNLEtBQ1ZB
LEVBQU0sR0FBSyxJQUFNQSxFQUFNLEdBQUssS0FHdEJBLEVBQU16TSxNQUFPLEVBQUcsSUFHeEJ1
SyxNQUFTLFNBQVVrQyxHQTZCbEIsTUFsQkFBLEdBQU0sR0FBS0EsRUFBTSxHQUFHeEcsY0FFWSxR
QUEzQndHLEVBQU0sR0FBR3pNLE1BQU8sRUFBRyxJQUVqQnlNLEVBQU0sSUFDWGpGLEdBQU94QyxN
QUFPeUgsRUFBTSxJQUtyQkEsRUFBTSxLQUFRQSxFQUFNLEdBQUtBLEVBQU0sSUFBTUEsRUFBTSxJ
QUFNLEdBQUssR0FBbUIsU0FBYkEsRUFBTSxJQUE4QixRQUFiQSxFQUFNLEtBQ3pGQSxFQUFNLEtB
QVVBLEVBQU0sR0FBS0EsRUFBTSxJQUFxQixRQUFiQSxFQUFNLEtBR3BDQSxFQUFNLElBQ2pCakYs
R0FBT3hDLE1BQU95SCxFQUFNLElBR2RBLEdBR1JuQyxPQUFVLFNBQVVtQyxHQUNuQixHQUFJb0cs
R0FDSEMsR0FBWXJHLEVBQU0sSUFBTUEsRUFBTSxFQUUvQixPQUFLeEMsR0FBaUIsTUFBRW1ELEtB
QU1YLEVBQU0sSUFDNUIsTUFJSEEsRUFBTSxHQUNWQSxFQUFNLEdBQUtBLEVBQU0sSUFBTUEsRUFB
TSxJQUFNLEdBR3hCcUcsR0FBWS9JLEVBQVFxRCxLQUFNMEYsS0FFcENELEVBQVNqTCxFQUFVa0ws
R0FBVSxNQUU3QkQsRUFBU0MsRUFBUzNTLFFBQVMsSUFBSzJTLEVBQVN4USxPQUFTdVEsR0FBV0Ms
RUFBU3hRLFVBR3ZFbUssRUFBTSxHQUFLQSxFQUFNLEdBQUd6TSxNQUFPLEVBQUc2UyxHQUM5QnBH
LEVBQU0sR0FBS3FHLEVBQVM5UyxNQUFPLEVBQUc2UyxJQUl4QnBHLEVBQU16TSxNQUFPLEVBQUcs
TUFJekJpUSxRQUVDN0YsSUFBTyxTQUFVMkksR0FDaEIsR0FBSS9NLEdBQVcrTSxFQUFpQmpPLFFB
QVNpRyxFQUFXQyxJQUFZL0UsYUFDaEUsT0FBNEIsTUFBckI4TSxFQUNOLFdBQWEsT0FBTyxHQUNw
QixTQUFVN1AsR0FDVCxNQUFPQSxHQUFLOEMsVUFBWTlDLEVBQUs4QyxTQUFTQyxnQkFBa0JELElB
STNEbUUsTUFBUyxTQUFVMEYsR0FDbEIsR0FBSW1ELEdBQVVySyxFQUFZa0gsRUFBWSxJQUV0QyxP
QUFPbUQsS0FDTEEsRUFBVSxHQUFJckosUUFBUSxNQUFRTCxFQUFhLElBQU11RyxFQUFZLElBQU12
RyxFQUFhLFNBQ2pGWCxFQUFZa0gsRUFBVyxTQUFVM00sR0FDaEMsTUFBTzhQLEdBQVE1RixLQUFn
QyxnQkFBbkJsSyxHQUFLMk0sV0FBMEIzTSxFQUFLMk0sV0FBMEMsbUJBQXRCM00sR0FBS21LLGNB
QWdDbkssRUFBS21LLGFBQWEsVUFBWSxPQUkxSmhELEtBQVEsU0FBVXJHLEVBQU1pUCxFQUFVQyxH
QUNqQyxNQUFPLFVBQVVoUSxHQUNoQixHQUFJaVEsR0FBUzNMLEdBQU9pSyxLQUFNdk8sRUFBTWMs
RUFFaEMsT0FBZSxPQUFWbVAsRUFDZ0IsT0FBYkYsR0FFRkEsSUFJTkUsR0FBVSxHQUVVLE1BQWJG
LEVBQW1CRSxJQUFXRCxFQUN2QixPQUFiRCxFQUFvQkUsSUFBV0QsRUFDbEIsT0FBYkQsRUFBb0JD
LEdBQXFDLElBQTVCQyxFQUFPaFQsUUFBUytTLEdBQ2hDLE9BQWJELEVBQW9CQyxHQUFTQyxFQUFP
aFQsUUFBUytTLE1BQ2hDLE9BQWJELEVBQW9CQyxHQUFTQyxFQUFPblQsT0FBUWtULEVBQU01USxV
QUFhNFEsRUFDbEQsT0FBYkQsR0FBc0IsSUFBTUUsRUFBT3JPLFFBQVM0RSxFQUFhLEtBQVEsS0FB
TXZKLFFBQVMrUyxNQUNuRSxPQUFiRCxJQUFvQkUsSUFBV0QsR0FBU0MsRUFBT25ULE1BQU8sRUFB
R2tULEVBQU01USxPQUFTLEtBQVE0USxFQUFRLFFBSzNGM0ksTUFBUyxTQUFVbkYsRUFBTWdPLEVB
QU1qRSxFQUFVN0wsRUFBT0UsR0FDL0MsR0FBSTZQLEdBQWdDLFFBQXZCak8sRUFBS3BGLE1BQU8s
RUFBRyxHQUMzQnNULEVBQStCLFNBQXJCbE8sRUFBS3BGLFVBQ2Z1VCxFQUFrQixZQUFUSCxDQUVW
LE9BQWlCLEtBQVY5UCxHQUF3QixJQUFURSxFQUdyQixTQUFVTixHQUNULFFBQVNBLEVBQUs5QixZ
QUdmLFNBQVU4QixFQUFNekIsRUFBUytSLEdBQ3hCLEdBQUkxRixHQUFPMkYsRUFBYUMsRUFBWXBF
LEVBQU1xRSxFQUFXQyxFQUNwRDVILEVBQU1xSCxJQUFXQyxFQUFVLGNBQWdCLGtCQUMzQ08sRUFB
UzNRLEVBQUs5QixXQUNkNEMsRUFBT3VQLEdBQVVyUSxFQUFLOEMsU0FBU0MsY0FDL0I2TixHQUFZ
TixJQUFRRCxFQUNwQjVFLEdBQU8sQ0FFUixJQUFLa0YsRUFBUyxDQUdiLEdBQUtSLEVBQVMsQ0FD
YixNQUFRckgsRUFBTSxDQUNic0QsRUFBT3BNLENBQ1AsT0FBU29NLEVBQU9BLEVBQU10RCxHQUNy
QixHQUFLdUgsRUFDSmpFLEVBQUt0SixTQUFTQyxnQkFBa0JqQyxFQUNkLElBQWxCc0wsRUFBS25E
LFNBRUwsT0FBTyxDQUlUeUgsR0FBUTVILEVBQWUsU0FBVDVHLElBQW9Cd08sR0FBUyxjQUU1QyxP
QUFPLEVBTVIsR0FIQUEsR0FBVU4sRUFBVU8sRUFBTzFCLFdBQWEwQixFQUFPRSxXQUcxQ1QsR0FB
V1EsRUFBVyxDQUsxQnhFLEVBQU91RSxFQUNQSCxFQUFhcEUsRUFBTTNLLEtBQWMySyxFQUFNM0ss
T0FJdkM4TyxFQUFjQyxFQUFZcEUsRUFBSzBFLFlBQzdCTixFQUFZcEUsRUFBSzBFLGNBRW5CbEcs
RUFBUTJGLEVBQWFyTyxPQUNyQnVPLEVBQVk3RixFQUFPLEtBQVFyRixHQUFXcUYsRUFBTyxHQUM3
Q2EsRUFBT2dGLEdBQWE3RixFQUFPLEdBQzNCd0IsRUFBT3FFLEdBQWFFLEVBQU8zSCxXQUFZeUgs
RUFFdkMsT0FBU3JFLElBQVNxRSxHQUFhckUsR0FBUUEsRUFBTXRELEtBRzNDMkMsRUFBT2dGLEVB
QVksSUFBTUMsRUFBTTFLLE1BR2hDLEdBQXVCLElBQWxCb0csRUFBS25ELFlBQW9Cd0MsR0FBUVcs
SUFBU3BNLEVBQU8sQ0FDckR1USxFQUFhck8sSUFBV3FELEVBQVNrTCxFQUFXaEYsRUFDNUMsWUF1
QkYsSUFqQkttRixJQUVKeEUsRUFBT3BNLEVBQ1B3USxFQUFhcEUsRUFBTTNLLEtBQWMySyxFQUFN
M0ssT0FJdkM4TyxFQUFjQyxFQUFZcEUsRUFBSzBFLFlBQzdCTixFQUFZcEUsRUFBSzBFLGNBRW5C
bEcsRUFBUTJGLEVBQWFyTyxPQUNyQnVPLEVBQVk3RixFQUFPLEtBQVFyRixHQUFXcUYsRUFBTyxH
QUM3Q2EsRUFBT2dGLEdBS0hoRixLQUFTLEVBRWIsTUFBU1csSUFBU3FFLEdBQWFyRSxHQUFRQSxF
QUFNdEQsS0FDM0MyQyxFQUFPZ0YsRUFBWSxJQUFNQyxFQUFNMUssTUFFaEMsSUFBT3FLLEVBQ05q
RSxFQUFLdEosU0FBU0MsZ0JBQWtCakMsRUFDZCxJQUFsQnNMLEVBQUtuRCxhQUNId0MsSUFHR21G
LElBQ0pKLEVBQWFwRSxFQUFNM0ssS0FBYzJLLEVBQU0zSyxPQUl2QzhPLEVBQWNDLEVBQVlwRSxF
QUFLMEUsWUFDN0JOLEVBQVlwRSxFQUFLMEUsY0FFbkJQLEVBQWFyTyxJQUFXcUQsRUFBU2tHLElB
RzdCVyxJQUFTcE0sR0FDYixLQVNMLE9BREF5TCxJQUFRbkwsRUFDRG1MLElBQVNyTCxHQUFXcUws
RUFBT3JMLElBQVUsR0FBS3FMLEVBQU9yTCxHQUFTLEtBS3JFZ0gsT0FBVSxTQUFVMkosRUFBUTlF
LEdBSzNCLEdBQUlqSSxHQUNIeEYsRUFBSytGLEVBQUtnQyxRQUFTd0ssSUFBWXhNLEVBQUt5TSxX
QUFZRCxFQUFPaE8sZ0JBQ3REdUIsR0FBT3hDLE1BQU8sdUJBQXlCaVAsRUFLekMsT0FBS3ZTLEdB
QUlpRCxHQUNEakQsRUFBSXlOLEdBSVB6TixFQUFHWSxPQUFTLEdBQ2hCNEUsR0FBUytNLEVBQVFB
LEVBQVEsR0FBSTlFLEdBQ3RCMUgsRUFBS3lNLFdBQVczVCxlQUFnQjBULEVBQU9oTyxlQUM3Q2lJ
LEdBQWEsU0FBVTVCLEVBQU0zRixHQUM1QixHQUFJd04sR0FDSEMsRUFBVTFTLEVBQUk0SyxFQUFN
NkMsR0FDcEJoTSxFQUFJaVIsRUFBUTlSLE1BQ2IsT0FBUWEsSUFDUGdSLEVBQU1oVSxFQUFTbU0s
RUFBTThILEVBQVFqUixJQUM3Qm1KLEVBQU02SCxLQUFXeE4sRUFBU3dOLEdBQVFDLEVBQVFqUixN
QUc1QyxTQUFVRCxHQUNULE1BQU94QixHQUFJd0IsRUFBTSxFQUFHZ0UsS0FJaEJ4RixJQUlUK0gs
U0FFQzRLLElBQU9uRyxHQUFhLFNBQVUxTSxHQUk3QixHQUFJK08sTUFDSGxLLEtBQ0FpTyxFQUFV
ek0sRUFBU3JHLEVBQVNzRCxRQUFTbEQsRUFBTyxNQUU3QyxPQUFPMFMsR0FBUzNQLEdBQ2Z1SixH
QUFhLFNBQVU1QixFQUFNM0YsRUFBU2xGLEVBQVMrUixHQUM5QyxHQUFJdFEsR0FDSHFSLEVBQVlE
LEVBQVNoSSxFQUFNLEtBQU1rSCxNQUNqQ3JRLEVBQUltSixFQUFLaEssTUFHVixPQUFRYSxLQUNE
RCxFQUFPcVIsRUFBVXBSLE1BQ3RCbUosRUFBS25KLEtBQU93RCxFQUFReEQsR0FBS0QsTUFJNUIs
U0FBVUEsRUFBTXpCLEVBQVMrUixHQUt4QixNQUpBakQsR0FBTSxHQUFLck4sRUFDWG9SLEVBQVMv
RCxFQUFPLEtBQU1pRCxFQUFLbk4sR0FFM0JrSyxFQUFNLEdBQUssTUFDSGxLLEVBQVE2QyxTQUlu
QnNMLElBQU90RyxHQUFhLFNBQVUxTSxHQUM3QixNQUFPLFVBQVUwQixHQUNoQixNQUFPc0UsSUFB
UWhHLEVBQVUwQixHQUFPWixPQUFTLEtBSTNDaUcsU0FBWTJGLEdBQWEsU0FBVWpOLEdBRWxDLE1B
REFBLEdBQU9BLEVBQUs2RCxRQUFTaUcsRUFBV0MsSUFDekIsU0FBVTlILEdBQ2hCLE9BQVNBLEVB
QUtnUCxhQUFlaFAsRUFBS3VSLFdBQWEvTSxFQUFTeEUsSUFBUy9DLFFBQVNjLFNBVzVFeVQsS0FB
UXhHLEdBQWMsU0FBVXdHLEdBTS9CLE1BSk0xSyxHQUFZb0QsS0FBS3NILEdBQVEsS0FDOUJsTixH
QUFPeEMsTUFBTyxxQkFBdUIwUCxHQUV0Q0EsRUFBT0EsRUFBSzVQLFFBQVNpRyxFQUFXQyxJQUFZ
L0UsY0FDckMsU0FBVS9DLEdBQ2hCLEdBQUl5UixFQUNKLEdBQ0MsSUFBTUEsRUFBV3ZNLEVBQ2hC
bEYsRUFBS3dSLEtBQ0x4UixFQUFLbUssYUFBYSxhQUFlbkssRUFBS21LLGFBQWEsUUFHbkQsTUFE
QXNILEdBQVdBLEVBQVMxTyxjQUNiME8sSUFBYUQsR0FBMkMsSUFBbkNDLEVBQVN4VSxRQUFTdVUs
RUFBTyxZQUU1Q3hSLEVBQU9BLEVBQUs5QixhQUFpQyxJQUFsQjhCLEVBQUtpSixTQUMzQyxRQUFP
LEtBS1Q5SCxPQUFVLFNBQVVuQixHQUNuQixHQUFJMFIsR0FBT25WLEVBQU9vVixVQUFZcFYsRUFB
T29WLFNBQVNELElBQzlDLE9BQU9BLElBQVFBLEVBQUs1VSxNQUFPLEtBQVFrRCxFQUFLOEosSUFH
ekM4SCxLQUFRLFNBQVU1UixHQUNqQixNQUFPQSxLQUFTaUYsR0FHakI0TSxNQUFTLFNBQVU3UixH
QUNsQixNQUFPQSxLQUFTNUQsRUFBUzBWLGlCQUFtQjFWLEVBQVMyVixVQUFZM1YsRUFBUzJWLGdC
QUFrQi9SLEVBQUtrQyxNQUFRbEMsRUFBS2dTLE9BQVNoUyxFQUFLaVMsV0FJN0hDLFFBQVdwRyxJ
QUFzQixHQUNqQ2pELFNBQVlpRCxJQUFzQixHQUVsQ3FHLFFBQVcsU0FBVW5TLEdBR3BCLEdBQUk4
QyxHQUFXOUMsRUFBSzhDLFNBQVNDLGFBQzdCLE9BQXFCLFVBQWJELEtBQTBCOUMsRUFBS21TLFNB
QTBCLFdBQWJyUCxLQUEyQjlDLEVBQUtvUyxVQUdyRkEsU0FBWSxTQUFVcFMsR0FPckIsTUFKS0Es
R0FBSzlCLFlBQ1Q4QixFQUFLOUIsV0FBV21VLGNBR1ZyUyxFQUFLb1MsWUFBYSxHQUkxQkUsTUFB
UyxTQUFVdFMsR0FLbEIsSUFBTUEsRUFBT0EsRUFBS2lQLFdBQVlqUCxFQUFNQSxFQUFPQSxFQUFL
MkwsWUFDL0MsR0FBSzNMLEVBQUtpSixTQUFXLEVBQ3BCLE9BQU8sQ0FHVCxRQUFPLEdBR1IwSCxP
QUFVLFNBQVUzUSxHQUNuQixPQUFRdUUsRUFBS2dDLFFBQWUsTUFBR3ZHLElBSWhDdVMsT0FBVSxT
QUFVdlMsR0FDbkIsTUFBT3lILEdBQVF5QyxLQUFNbEssRUFBSzhDLFdBRzNCdUssTUFBUyxTQUFV
ck4sR0FDbEIsTUFBT3dILEdBQVEwQyxLQUFNbEssRUFBSzhDLFdBRzNCMFAsT0FBVSxTQUFVeFMs
R0FDbkIsR0FBSWMsR0FBT2QsRUFBSzhDLFNBQVNDLGFBQ3pCLE9BQWdCLFVBQVRqQyxHQUFrQyxX
QUFkZCxFQUFLa0MsTUFBOEIsV0FBVHBCLEdBR3REL0MsS0FBUSxTQUFVaUMsR0FDakIsR0FBSXVP
LEVBQ0osT0FBdUMsVUFBaEN2TyxFQUFLOEMsU0FBU0MsZUFDTixTQUFkL0MsRUFBS2tDLE9BSW1D
LE9BQXJDcU0sRUFBT3ZPLEVBQUttSyxhQUFhLFVBQTJDLFNBQXZCb0UsRUFBS3hMLGdCQUl2RDND
LE1BQVM0TCxHQUF1QixXQUMvQixPQUFTLEtBR1YxTCxLQUFRMEwsR0FBdUIsU0FBVUUsRUFBYzlN
LEdBQ3RELE9BQVNBLEVBQVMsS0FHbkJpQixHQUFNMkwsR0FBdUIsU0FBVUUsRUFBYzlNLEVBQVE2
TSxHQUM1RCxPQUFTQSxFQUFXLEVBQUlBLEVBQVc3TSxFQUFTNk0sS0FHN0N3RyxLQUFRekcsR0FB
dUIsU0FBVUUsRUFBYzlNLEdBRXRELElBREEsR0FBSWEsR0FBSSxFQUNBQSxFQUFJYixFQUFRYSxH
QUFLLEVBQ3hCaU0sRUFBYWxQLEtBQU1pRCxFQUVwQixPQUFPaU0sS0FHUndHLElBQU8xRyxHQUF1
QixTQUFVRSxFQUFjOU0sR0FFckQsSUFEQSxHQUFJYSxHQUFJLEVBQ0FBLEVBQUliLEVBQVFhLEdB
QUssRUFDeEJpTSxFQUFhbFAsS0FBTWlELEVBRXBCLE9BQU9pTSxLQUdSeUcsR0FBTTNHLEdBQXVC
LFNBQVVFLEVBQWM5TSxFQUFRNk0sR0FFNUQsSUFEQSxHQUFJaE0sR0FBSWdNLEVBQVcsRUFBSUEs
RUFBVzdNLEVBQVM2TSxJQUNqQ2hNLEdBQUssR0FDZGlNLEVBQWFsUCxLQUFNaUQsRUFFcEIsT0FB
T2lNLEtBR1IwRyxHQUFNNUcsR0FBdUIsU0FBVUUsRUFBYzlNLEVBQVE2TSxHQUU1RCxJQURBLEdB
QUloTSxHQUFJZ00sRUFBVyxFQUFJQSxFQUFXN00sRUFBUzZNLElBQ2pDaE0sRUFBSWIsR0FDYjhN
LEVBQWFsUCxLQUFNaUQsRUFFcEIsT0FBT2lNLE9BS1YzSCxFQUFLZ0MsUUFBYSxJQUFJaEMsRUFB
S2dDLFFBQVksRUFHdkMsS0FBTXRHLEtBQU80UyxPQUFPLEVBQU1DLFVBQVUsRUFBTUMsTUFBTSxF
QUFNQyxVQUFVLEVBQU1DLE9BQU8sR0FDNUUxTyxFQUFLZ0MsUUFBU3RHLEdBQU0yTCxHQUFtQjNM
LEVBRXhDLEtBQU1BLEtBQU9pVCxRQUFRLEVBQU1DLE9BQU8sR0FDakM1TyxFQUFLZ0MsUUFBU3RH
LEdBQU00TCxHQUFvQjVMLEVBSXpDLFNBQVMrUSxPQUNUQSxHQUFXL1IsVUFBWXNGLEVBQUs2TyxR
QUFVN08sRUFBS2dDLFFBQzNDaEMsRUFBS3lNLFdBQWEsR0FBSUEsSUFFdEJ0TSxFQUFXSixHQUFP
SSxTQUFXLFNBQVVwRyxFQUFVK1UsR0FDaEQsR0FBSW5DLEdBQVMzSCxFQUFPK0osRUFBUXBSLEVB
QzNCcVIsRUFBTy9KLEVBQVFnSyxFQUNmQyxFQUFTOU4sRUFBWXJILEVBQVcsSUFFakMsSUFBS21W
LEVBQ0osTUFBT0osR0FBWSxFQUFJSSxFQUFPM1csTUFBTyxFQUd0Q3lXLEdBQVFqVixFQUNSa0ws
S0FDQWdLLEVBQWFqUCxFQUFLbUwsU0FFbEIsT0FBUTZELEVBQVEsQ0FHVHJDLEtBQVkzSCxFQUFR
N0MsRUFBT2tELEtBQU0ySixNQUNqQ2hLLElBRUpnSyxFQUFRQSxFQUFNelcsTUFBT3lNLEVBQU0s
R0FBR25LLFNBQVltVSxHQUUzQy9KLEVBQU94TSxLQUFPc1csT0FHZnBDLEdBQVUsR0FHSjNILEVB
QVE1QyxFQUFhaUQsS0FBTTJKLE1BQ2hDckMsRUFBVTNILEVBQU13QixRQUNoQnVJLEVBQU90VyxN
QUNONEcsTUFBT3NOLEVBRVBoUCxLQUFNcUgsRUFBTSxHQUFHM0gsUUFBU2xELEVBQU8sT0FFaEM2
VSxFQUFRQSxFQUFNelcsTUFBT29VLEVBQVE5UixRQUk5QixLQUFNOEMsSUFBUXFDLEdBQUt3SSxT
QUNaeEQsRUFBUXhDLEVBQVc3RSxHQUFPMEgsS0FBTTJKLEtBQWNDLEVBQVl0UixNQUM5RHFILEVB
QVFpSyxFQUFZdFIsR0FBUXFILE1BQzdCMkgsRUFBVTNILEVBQU13QixRQUNoQnVJLEVBQU90VyxN
QUNONEcsTUFBT3NOLEVBQ1BoUCxLQUFNQSxFQUNOdUIsUUFBUzhGLElBRVZnSyxFQUFRQSxFQUFN
elcsTUFBT29VLEVBQVE5UixRQUkvQixLQUFNOFIsRUFDTCxNQU9GLE1BQU9tQyxHQUNORSxFQUFN
blUsT0FDTm1VLEVBQ0NqUCxHQUFPeEMsTUFBT3hELEdBRWRxSCxFQUFZckgsRUFBVWtMLEdBQVMx
TSxNQUFPLEdBR3pDLFNBQVN1TixJQUFZaUosR0FJcEIsSUFIQSxHQUFJclQsR0FBSSxFQUNQTSxF
QUFNK1MsRUFBT2xVLE9BQ2JkLEVBQVcsR0FDSjJCLEVBQUlNLEVBQUtOLElBQ2hCM0IsR0FBWWdW
LEVBQU9yVCxHQUFHMkQsS0FFdkIsT0FBT3RGLEdBR1IsUUFBU3NLLElBQWV3SSxFQUFTc0MsRUFB
WUMsR0FDNUMsR0FBSTdLLEdBQU00SyxFQUFXNUssSUFDcEI4SyxFQUFPRixFQUFXM0ssS0FDbEI4
QixFQUFNK0ksR0FBUTlLLEVBQ2QrSyxFQUFtQkYsR0FBZ0IsZUFBUjlJLEVBQzNCaUosRUFBV3RP
LEdBRVosT0FBT2tPLEdBQVd0VCxNQUVqQixTQUFVSixFQUFNekIsRUFBUytSLEdBQ3hCLE1BQVN0
USxFQUFPQSxFQUFNOEksR0FDckIsR0FBdUIsSUFBbEI5SSxFQUFLaUosVUFBa0I0SyxFQUMzQixN
QUFPekMsR0FBU3BSLEVBQU16QixFQUFTK1IsRUFHakMsUUFBTyxHQUlSLFNBQVV0USxFQUFNekIs
RUFBUytSLEdBQ3hCLEdBQUl5RCxHQUFVeEQsRUFBYUMsRUFDMUJ3RCxHQUFhek8sRUFBU3VPLEVB
R3ZCLElBQUt4RCxHQUNKLE1BQVN0USxFQUFPQSxFQUFNOEksR0FDckIsSUFBdUIsSUFBbEI5SSxF
QUFLaUosVUFBa0I0SyxJQUN0QnpDLEVBQVNwUixFQUFNekIsRUFBUytSLEdBQzVCLE9BQU8sTUFL
VixPQUFTdFEsRUFBT0EsRUFBTThJLEdBQ3JCLEdBQXVCLElBQWxCOUksRUFBS2lKLFVBQWtCNEss
RUFPM0IsR0FOQXJELEVBQWF4USxFQUFNeUIsS0FBY3pCLEVBQU15QixPQUl2QzhPLEVBQWNDLEVB
QVl4USxFQUFLOFEsWUFBZU4sRUFBWXhRLEVBQUs4USxjQUUxRDhDLEdBQVFBLElBQVM1VCxFQUFL
OEMsU0FBU0MsY0FDbkMvQyxFQUFPQSxFQUFNOEksSUFBUzlJLE1BQ2hCLENBQUEsSUFBTStULEVB
QVd4RCxFQUFhMUYsS0FDcENrSixFQUFVLEtBQVF4TyxHQUFXd08sRUFBVSxLQUFRRCxFQUcvQyxN
QUFRRSxHQUFVLEdBQU1ELEVBQVUsRUFNbEMsSUFIQXhELEVBQWExRixHQUFRbUosRUFHZkEsRUFB
VSxHQUFNNUMsRUFBU3BSLEVBQU16QixFQUFTK1IsR0FDN0MsT0FBTyxFQU1aLE9BQU8sR0FJVixR
QUFTMkQsSUFBZ0JDLEdBQ3hCLE1BQU9BLEdBQVM5VSxPQUFTLEVBQ3hCLFNBQVVZLEVBQU16QixF
QUFTK1IsR0FDeEIsR0FBSXJRLEdBQUlpVSxFQUFTOVUsTUFDakIsT0FBUWEsSUFDUCxJQUFNaVUs
RUFBU2pVLEdBQUlELEVBQU16QixFQUFTK1IsR0FDakMsT0FBTyxDQUdULFFBQU8sR0FFUjRELEVB
QVMsR0FHWCxRQUFTQyxJQUFrQjdWLEVBQVU4VixFQUFValIsR0FHOUMsSUFGQSxHQUFJbEQsR0FB
SSxFQUNQTSxFQUFNNlQsRUFBU2hWLE9BQ1JhLEVBQUlNLEVBQUtOLElBQ2hCcUUsR0FBUWhHLEVB
QVU4VixFQUFTblUsR0FBSWtELEVBRWhDLE9BQU9BLEdBR1IsUUFBU2tSLElBQVVoRCxFQUFXdFIs
RUFBS2dOLEVBQVF4TyxFQUFTK1IsR0FPbkQsSUFOQSxHQUFJdFEsR0FDSHNVLEtBQ0FyVSxFQUFJ
LEVBQ0pNLEVBQU04USxFQUFValMsT0FDaEJtVixFQUFnQixNQUFQeFUsRUFFRkUsRUFBSU0sRUFB
S04sS0FDVkQsRUFBT3FSLEVBQVVwUixNQUNoQjhNLElBQVVBLEVBQVEvTSxFQUFNekIsRUFBUytS
LEtBQ3RDZ0UsRUFBYXRYLEtBQU1nRCxHQUNkdVUsR0FDSnhVLEVBQUkvQyxLQUFNaUQsSUFNZCxP
QUFPcVUsR0FHUixRQUFTRSxJQUFZOUUsRUFBV3BSLEVBQVU4UyxFQUFTcUQsRUFBWUMsRUFBWUMs
R0FPMUUsTUFOS0YsS0FBZUEsRUFBWWhULEtBQy9CZ1QsRUFBYUQsR0FBWUMsSUFFckJDLElBQWVB
LEVBQVlqVCxLQUMvQmlULEVBQWFGLEdBQVlFLEVBQVlDLElBRS9CM0osR0FBYSxTQUFVNUIsRUFB
TWpHLEVBQVM1RSxFQUFTK1IsR0FDckQsR0FBSXNFLEdBQU0zVSxFQUFHRCxFQUNaNlUsS0FDQUMs
S0FDQUMsRUFBYzVSLEVBQVEvRCxPQUd0QkssRUFBUTJKLEdBQVErSyxHQUFrQjdWLEdBQVksSUFB
S0MsRUFBUTBLLFVBQWExSyxHQUFZQSxNQUdwRnlXLEdBQVl0RixJQUFldEcsR0FBUzlLLEVBRW5D
bUIsRUFEQTRVLEdBQVU1VSxFQUFPb1YsRUFBUW5GLEVBQVduUixFQUFTK1IsR0FHOUMyRSxFQUFh
N0QsRUFFWnNELElBQWdCdEwsRUFBT3NHLEVBQVlxRixHQUFlTixNQU1qRHRSLEVBQ0Q2UixDQVFG
LElBTEs1RCxHQUNKQSxFQUFTNEQsRUFBV0MsRUFBWTFXLEVBQVMrUixHQUlyQ21FLEVBQWEsQ0FD
akJHLEVBQU9QLEdBQVVZLEVBQVlILEdBQzdCTCxFQUFZRyxLQUFVclcsRUFBUytSLEdBRy9CclEs
RUFBSTJVLEVBQUt4VixNQUNULE9BQVFhLEtBQ0RELEVBQU80VSxFQUFLM1UsTUFDakJnVixFQUFZ
SCxFQUFRN1UsTUFBUytVLEVBQVdGLEVBQVE3VSxJQUFPRCxJQUsxRCxHQUFLb0osR0FDSixHQUFL
c0wsR0FBY2hGLEVBQVksQ0FDOUIsR0FBS2dGLEVBQWEsQ0FFakJFLEtBQ0EzVSxFQUFJZ1YsRUFB
VzdWLE1BQ2YsT0FBUWEsS0FDREQsRUFBT2lWLEVBQVdoVixLQUV2QjJVLEVBQUs1WCxLQUFPZ1ks
RUFBVS9VLEdBQUtELEVBRzdCMFUsR0FBWSxLQUFPTyxLQUFrQkwsRUFBTXRFLEdBSTVDclEsRUFB
SWdWLEVBQVc3VixNQUNmLE9BQVFhLEtBQ0RELEVBQU9pVixFQUFXaFYsTUFDdEIyVSxFQUFPRixF
QUFhelgsRUFBU21NLEVBQU1wSixHQUFTNlUsRUFBTzVVLFNBRXBEbUosRUFBS3dMLEtBQVV6UixF
QUFReVIsR0FBUTVVLFNBT2xDaVYsR0FBYVosR0FDWlksSUFBZTlSLEVBQ2Q4UixFQUFXdFUsT0FB
UW9VLEVBQWFFLEVBQVc3VixRQUMzQzZWLEdBRUdQLEVBQ0pBLEVBQVksS0FBTXZSLEVBQVM4UixF
QUFZM0UsR0FFdkN0VCxFQUFLa0QsTUFBT2lELEVBQVM4UixLQU16QixRQUFTQyxJQUFtQjVCLEdB
d0IzQixJQXZCQSxHQUFJNkIsR0FBYy9ELEVBQVM1USxFQUMxQkQsRUFBTStTLEVBQU9sVSxPQUNi
Z1csRUFBa0I3USxFQUFLOEssU0FBVWlFLEVBQU8sR0FBR3BSLE1BQzNDbVQsRUFBbUJELEdBQW1C
N1EsRUFBSzhLLFNBQVMsS0FDcERwUCxFQUFJbVYsRUFBa0IsRUFBSSxFQUcxQkUsRUFBZTFNLEdB
QWUsU0FBVTVJLEdBQ3ZDLE1BQU9BLEtBQVNtVixHQUNkRSxHQUFrQixHQUNyQkUsRUFBa0IzTSxH
QUFlLFNBQVU1SSxHQUMxQyxNQUFPL0MsR0FBU2tZLEVBQWNuVixPQUM1QnFWLEdBQWtCLEdBQ3JC
bkIsR0FBYSxTQUFVbFUsRUFBTXpCLEVBQVMrUixHQUNyQyxHQUFJNVEsSUFBUzBWLElBQXFCOUUs
R0FBTy9SLElBQVlzRyxNQUNuRHNRLEVBQWU1VyxHQUFTMEssU0FDeEJxTSxFQUFjdFYsRUFBTXpC
LEVBQVMrUixHQUM3QmlGLEVBQWlCdlYsRUFBTXpCLEVBQVMrUixHQUdsQyxPQURBNkUsR0FBZSxL
QUNSelYsSUFHRE8sRUFBSU0sRUFBS04sSUFDaEIsR0FBTW1SLEVBQVU3TSxFQUFLOEssU0FBVWlF
LEVBQU9yVCxHQUFHaUMsTUFDeENnUyxHQUFhdEwsR0FBY3FMLEdBQWdCQyxHQUFZOUMsUUFDakQs
Q0FJTixHQUhBQSxFQUFVN00sRUFBS3dJLE9BQVF1RyxFQUFPclQsR0FBR2lDLE1BQU9oQyxNQUFP
LEtBQU1vVCxFQUFPclQsR0FBR3dELFNBRzFEMk4sRUFBUzNQLEdBQVksQ0FHekIsSUFEQWpCLElB
QU1QLEVBQ0VPLEVBQUlELEVBQUtDLElBQ2hCLEdBQUsrRCxFQUFLOEssU0FBVWlFLEVBQU85UyxH
QUFHMEIsTUFDN0IsS0FHRixPQUFPc1MsSUFDTnZVLEVBQUksR0FBS2dVLEdBQWdCQyxHQUN6QmpV
LEVBQUksR0FBS29LLEdBRVJpSixFQUFPeFcsTUFBTyxFQUFHbUQsRUFBSSxHQUFJbEQsUUFBUzZH
LE1BQWdDLE1BQXpCMFAsRUFBUXJULEVBQUksR0FBSWlDLEtBQWUsSUFBTSxNQUM3RU4sUUFBU2xE
LEVBQU8sTUFDbEIwUyxFQUNBblIsRUFBSU8sR0FBSzBVLEdBQW1CNUIsRUFBT3hXLE1BQU9tRCxF
QUFHTyxJQUM3Q0EsRUFBSUQsR0FBTzJVLEdBQW9CNUIsRUFBU0EsRUFBT3hXLE1BQU8wRCxJQUN0
REEsRUFBSUQsR0FBTzhKLEdBQVlpSixJQUd6QlksRUFBU2xYLEtBQU1vVSxHQUlqQixNQUFPNkMs
SUFBZ0JDLEdBR3hCLFFBQVNzQixJQUEwQkMsRUFBaUJDLEdBQ25ELEdBQUlDLEdBQVFELEVBQVl0
VyxPQUFTLEVBQ2hDd1csRUFBWUgsRUFBZ0JyVyxPQUFTLEVBQ3JDeVcsRUFBZSxTQUFVek0sRUFB
TTdLLEVBQVMrUixFQUFLbk4sRUFBUzJTLEdBQ3JELEdBQUk5VixHQUFNUSxFQUFHNFEsRUFDWjJF
LEVBQWUsRUFDZjlWLEVBQUksSUFDSm9SLEVBQVlqSSxNQUNaNE0sS0FDQUMsRUFBZ0JwUixFQUVo
QnBGLEVBQVEySixHQUFRd00sR0FBYXJSLEVBQUswSSxLQUFVLElBQUcsSUFBSzZJLEdBRXBESSxF
QUFpQjNRLEdBQTRCLE1BQWpCMFEsRUFBd0IsRUFBSXZVLEtBQUtDLFVBQVksR0FDekVwQixFQUFN
ZCxFQUFNTCxNQVNiLEtBUEswVyxJQUNKalIsRUFBbUJ0RyxJQUFZbkMsR0FBWW1DLEdBQVd1WCxH
QU0vQzdWLElBQU1NLEdBQTRCLE9BQXBCUCxFQUFPUCxFQUFNUSxJQUFhQSxJQUFNLENBQ3JELEdB
QUsyVixHQUFhNVYsRUFBTyxDQUN4QlEsRUFBSSxFQUNFakMsR0FBV3lCLEVBQUsySixnQkFBa0J2
TixJQUN2QzRJLEVBQWFoRixHQUNic1EsR0FBT3BMLEVBRVIsT0FBU2tNLEVBQVVxRSxFQUFnQmpW
LEtBQ2xDLEdBQUs0USxFQUFTcFIsRUFBTXpCLEdBQVduQyxFQUFVa1UsR0FBTyxDQUMvQ25OLEVB
QVFuRyxLQUFNZ0QsRUFDZCxPQUdHOFYsSUFDSnZRLEVBQVUyUSxHQUtQUCxLQUVFM1YsR0FBUW9S
LEdBQVdwUixJQUN4QitWLElBSUkzTSxHQUNKaUksRUFBVXJVLEtBQU1nRCxJQWdCbkIsR0FUQStW
LEdBQWdCOVYsRUFTWDBWLEdBQVMxVixJQUFNOFYsRUFBZSxDQUNsQ3ZWLEVBQUksQ0FDSixPQUFT
NFEsRUFBVXNFLEVBQVlsVixLQUM5QjRRLEVBQVNDLEVBQVcyRSxFQUFZelgsRUFBUytSLEVBRzFD
LElBQUtsSCxFQUFPLENBRVgsR0FBSzJNLEVBQWUsRUFDbkIsTUFBUTlWLElBQ0FvUixFQUFVcFIs
SUFBTStWLEVBQVcvVixLQUNqQytWLEVBQVcvVixHQUFLK0YsRUFBSXhJLEtBQU0yRixHQU03QjZT
LEdBQWEzQixHQUFVMkIsR0FJeEJoWixFQUFLa0QsTUFBT2lELEVBQVM2UyxHQUdoQkYsSUFBYzFN
LEdBQVE0TSxFQUFXNVcsT0FBUyxHQUM1QzJXLEVBQWVMLEVBQVl0VyxPQUFXLEdBRXhDa0YsR0FB
T3NLLFdBQVl6TCxHQVVyQixNQUxLMlMsS0FDSnZRLEVBQVUyUSxFQUNWclIsRUFBbUJvUixHQUdi
NUUsRUFHVCxPQUFPc0UsR0FDTjNLLEdBQWM2SyxHQUNkQSxFQStLRixNQTVLQWxSLEdBQVVMLEdB
QU9LLFFBQVUsU0FBVXJHLEVBQVVpTCxHQUM5QyxHQUFJdEosR0FDSHlWLEtBQ0FELEtBQ0FoQyxF
QUFTN04sRUFBZXRILEVBQVcsSUFFcEMsS0FBTW1WLEVBQVMsQ0FFUmxLLElBQ0xBLEVBQVE3RSxF
QUFVcEcsSUFFbkIyQixFQUFJc0osRUFBTW5LLE1BQ1YsT0FBUWEsSUFDUHdULEVBQVN5QixHQUFt
QjNMLEVBQU10SixJQUM3QndULEVBQVFoUyxHQUNaaVUsRUFBWTFZLEtBQU15VyxHQUVsQmdDLEVB
QWdCelksS0FBTXlXLEVBS3hCQSxHQUFTN04sRUFBZXRILEVBQVVrWCxHQUEwQkMsRUFBaUJDLElB
RzdFakMsRUFBT25WLFNBQVdBLEVBRW5CLE1BQU9tVixJQVlSN08sRUFBU04sR0FBT00sT0FBUyxT
QUFVdEcsRUFBVUMsRUFBUzRFLEVBQVNpRyxHQUM5RCxHQUFJbkosR0FBR3FULEVBQVE2QyxFQUFP
alUsRUFBTStLLEVBQzNCbUosRUFBK0Isa0JBQWI5WCxJQUEyQkEsRUFDN0NpTCxHQUFTSCxHQUFR
MUUsRUFBV3BHLEVBQVc4WCxFQUFTOVgsVUFBWUEsRUFNN0QsSUFKQTZFLEVBQVVBLE1BSVksSUFB
akJvRyxFQUFNbkssT0FBZSxDQUl6QixHQURBa1UsRUFBUy9KLEVBQU0sR0FBS0EsRUFBTSxHQUFH
ek0sTUFBTyxHQUMvQndXLEVBQU9sVSxPQUFTLEdBQWtDLFFBQTVCK1csRUFBUTdDLEVBQU8sSUFB
SXBSLE1BQ3ZCLElBQXJCM0QsRUFBUTBLLFVBQWtCL0QsR0FBa0JYLEVBQUs4SyxTQUFVaUUsRUFB
TyxHQUFHcFIsTUFBUyxDQUcvRSxHQURBM0QsR0FBWWdHLEVBQUswSSxLQUFTLEdBQUdrSixFQUFN
MVMsUUFBUSxHQUFHN0IsUUFBUWlHLEVBQVdDLElBQVl2SixRQUFrQixJQUN6RkEsRUFDTCxNQUFP
NEUsRUFHSWlULEtBQ1g3WCxFQUFVQSxFQUFRTCxZQUduQkksRUFBV0EsRUFBU3hCLE1BQU93VyxF
QUFPdkksUUFBUW5ILE1BQU14RSxRQUlqRGEsRUFBSThHLEVBQXdCLGFBQUVtRCxLQUFNNUwsR0FB
YSxFQUFJZ1YsRUFBT2xVLE1BQzVELE9BQVFhLElBQU0sQ0FJYixHQUhBa1csRUFBUTdDLEVBQU9y
VCxHQUdWc0UsRUFBSzhLLFNBQVduTixFQUFPaVUsRUFBTWpVLE1BQ2pDLEtBRUQsS0FBTStLLEVB
QU8xSSxFQUFLMEksS0FBTS9LLE1BRWpCa0gsRUFBTzZELEVBQ1prSixFQUFNMVMsUUFBUSxHQUFH
N0IsUUFBU2lHLEVBQVdDLElBQ3JDRixFQUFTc0MsS0FBTW9KLEVBQU8sR0FBR3BSLE9BQVVxSSxH
QUFhaE0sRUFBUUwsYUFBZ0JLLElBQ3BFLENBS0osR0FGQStVLEVBQU8zUyxPQUFRVixFQUFHLEdB
Q2xCM0IsRUFBVzhLLEVBQUtoSyxRQUFVaUwsR0FBWWlKLElBQ2hDaFYsRUFFTCxNQURBdEIsR0FB
S2tELE1BQU9pRCxFQUFTaUcsR0FDZGpHLENBR1IsU0FlSixPQVBFaVQsR0FBWXpSLEVBQVNyRyxF
QUFVaUwsSUFDaENILEVBQ0E3SyxHQUNDMkcsRUFDRC9CLEdBQ0M1RSxHQUFXcUosRUFBU3NDLEtB
QU01TCxJQUFjaU0sR0FBYWhNLEVBQVFMLGFBQWdCSyxHQUV4RTRFLEdBTVIxRixFQUFRc1IsV0FB
YXROLEVBQVE0QyxNQUFNLElBQUkzRCxLQUFNbUYsR0FBWXlFLEtBQUssTUFBUTdJLEVBSXRFaEUs
RUFBUXFSLG1CQUFxQi9KLEVBRzdCQyxJQUlBdkgsRUFBUXVRLGFBQWUvQyxHQUFPLFNBQVVDLEdB
RXZDLE1BQTBFLEdBQW5FQSxFQUFHMEMsd0JBQXlCeFIsRUFBUzBCLGNBQWMsZUFNckRtTixHQUFP
LFNBQVVDLEdBRXRCLE1BREFBLEdBQUdrQyxVQUFZLG1CQUMrQixNQUF2Q2xDLEVBQUcrRCxXQUFX
OUUsYUFBYSxXQUVsQ2dCLEdBQVcseUJBQTBCLFNBQVVuTCxFQUFNYyxFQUFNMkQsR0FDMUQsSUFB
TUEsRUFDTCxNQUFPekUsR0FBS21LLGFBQWNySixFQUE2QixTQUF2QkEsRUFBS2lDLGNBQTJCLEVB
QUksS0FPakV0RixFQUFRNkksWUFBZTJFLEdBQU8sU0FBVUMsR0FHN0MsTUFGQUEsR0FBR2tDLFVB
QVksV0FDZmxDLEVBQUcrRCxXQUFXN0UsYUFBYyxRQUFTLElBQ1ksS0FBMUNjLEVBQUcrRCxXQUFX
OUUsYUFBYyxZQUVuQ2dCLEdBQVcsUUFBUyxTQUFVbkwsRUFBTWMsRUFBTTJELEdBQ3pDLElBQU1B
LEdBQXlDLFVBQWhDekUsRUFBSzhDLFNBQVNDLGNBQzVCLE1BQU8vQyxHQUFLcVcsZUFPVHBMLEdB
QU8sU0FBVUMsR0FDdEIsTUFBc0MsT0FBL0JBLEVBQUdmLGFBQWEsZUFFdkJnQixHQUFXaEYsRUFB
VSxTQUFVbkcsRUFBTWMsRUFBTTJELEdBQzFDLEdBQUkrSixFQUNKLEtBQU0vSixFQUNMLE1BQU96
RSxHQUFNYyxNQUFXLEVBQU9BLEVBQUtpQyxlQUNqQ3lMLEVBQU14TyxFQUFLa04saUJBQWtCcE0s
S0FBVzBOLEVBQUlDLFVBQzdDRCxFQUFJNUssTUFDTCxPQUtHVSxJQUVIL0gsRUFJSjhCLEdBQU80
TyxLQUFPM0ksRUFDZGpHLEVBQU9nUSxLQUFPL0osRUFBTzZLLFVBR3JCOVEsRUFBT2dRLEtBQU0s
S0FBUWhRLEVBQU9nUSxLQUFLOUgsUUFDakNsSSxFQUFPdVEsV0FBYXZRLEVBQU9pWSxPQUFTaFMs
RUFBT3NLLFdBQzNDdlEsRUFBT04sS0FBT3VHLEVBQU9FLFFBQ3JCbkcsRUFBT2tZLFNBQVdqUyxF
QUFPRyxNQUN6QnBHLEVBQU9nSCxTQUFXZixFQUFPZSxTQUN6QmhILEVBQU9tWSxlQUFpQmxTLEVB
QU9vSyxNQUsvQixJQUFJNUYsR0FBTSxTQUFVOUksRUFBTThJLEVBQUsyTixHQUM5QixHQUFJdkYs
TUFDSHdGLEVBQXFCbFYsU0FBVmlWLENBRVosUUFBVXpXLEVBQU9BLEVBQU04SSxLQUE2QixJQUFs
QjlJLEVBQUtpSixTQUN0QyxHQUF1QixJQUFsQmpKLEVBQUtpSixTQUFpQixDQUMxQixHQUFLeU4s
R0FBWXJZLEVBQVEyQixHQUFPMlcsR0FBSUYsR0FDbkMsS0FFRHZGLEdBQVFsVSxLQUFNZ0QsR0FH
aEIsTUFBT2tSLElBSUowRixFQUFXLFNBQVVDLEVBQUc3VyxHQUczQixJQUZBLEdBQUlrUixNQUVJ
MkYsRUFBR0EsRUFBSUEsRUFBRWxMLFlBQ0ksSUFBZmtMLEVBQUU1TixVQUFrQjROLElBQU03VyxH
QUM5QmtSLEVBQVFsVSxLQUFNNlosRUFJaEIsT0FBTzNGLElBSUo0RixFQUFnQnpZLEVBQU9nUSxL
QUFLOUUsTUFBTWhDLGFBRWxDd1AsRUFBYSxrRUFJYkMsRUFBWSxnQkFHaEIsU0FBU0MsR0FBUTNJ
LEVBQVU0SSxFQUFXL0YsR0FDckMsTUFBSzlTLEdBQU9nRCxXQUFZNlYsR0FDaEI3WSxFQUFPaUYs
S0FBTWdMLEVBQVUsU0FBVXRPLEVBQU1DLEdBQzdDLFFBQVNpWCxFQUFVMVosS0FBTXdDLEVBQU1D
LEVBQUdELEtBQVdtUixJQUsxQytGLEVBQVVqTyxTQUNQNUssRUFBT2lGLEtBQU1nTCxFQUFVLFNB
QVV0TyxHQUN2QyxNQUFTQSxLQUFTa1gsSUFBZ0IvRixJQUtWLGdCQUFkK0YsR0FDSjdZLEVBQU9p
RixLQUFNZ0wsRUFBVSxTQUFVdE8sR0FDdkMsTUFBUy9DLEdBQVFPLEtBQU0wWixFQUFXbFgsUUFB
a0JtUixJQUtqRDZGLEVBQVU5TSxLQUFNZ04sR0FDYjdZLEVBQU8wTyxPQUFRbUssRUFBVzVJLEVB
QVU2QyxJQUk1QytGLEVBQVk3WSxFQUFPME8sT0FBUW1LLEVBQVc1SSxHQUMvQmpRLEVBQU9pRixL
QUFNZ0wsRUFBVSxTQUFVdE8sR0FDdkMsTUFBUy9DLEdBQVFPLEtBQU0wWixFQUFXbFgsUUFBa0Jt
UixHQUF5QixJQUFsQm5SLEVBQUtpSixZQUlsRTVLLEVBQU8wTyxPQUFTLFNBQVVzQixFQUFNNU8s
RUFBTzBSLEdBQ3RDLEdBQUluUixHQUFPUCxFQUFPLEVBTWxCLE9BSkswUixLQUNKOUMsRUFBTyxR
QUFVQSxFQUFPLEtBR0gsSUFBakI1TyxFQUFNTCxRQUFrQyxJQUFsQlksRUFBS2lKLFNBQ3hCNUss
RUFBTzRPLEtBQUtLLGdCQUFpQnROLEVBQU1xTyxJQUFXck8sTUFHL0MzQixFQUFPNE8sS0FBS3hK
LFFBQVM0SyxFQUFNaFEsRUFBT2lGLEtBQU03RCxFQUFPLFNBQVVPLEdBQy9ELE1BQXlCLEtBQWxC
QSxFQUFLaUosYUFJZDVLLEVBQU9HLEdBQUdvQyxRQUNUcU0sS0FBTSxTQUFVM08sR0FDZixHQUFJ
MkIsR0FBR1AsRUFDTmEsRUFBTS9ELEtBQUs0QyxPQUNYK1gsRUFBTzNhLElBRVIsSUFBeUIsZ0JB
QWI4QixHQUNYLE1BQU85QixNQUFLZ0QsVUFBV25CLEVBQVFDLEdBQVd5TyxPQUFRLFdBQ2pELElB
QU05TSxFQUFJLEVBQUdBLEVBQUlNLEVBQUtOLElBQ3JCLEdBQUs1QixFQUFPZ0gsU0FBVThSLEVB
QU1sWCxHQUFLekQsTUFDaEMsT0FBTyxJQVFYLEtBRkFrRCxFQUFNbEQsS0FBS2dELGNBRUxTLEVB
QUksRUFBR0EsRUFBSU0sRUFBS04sSUFDckI1QixFQUFPNE8sS0FBTTNPLEVBQVU2WSxFQUFNbFgs
R0FBS1AsRUFHbkMsT0FBT2EsR0FBTSxFQUFJbEMsRUFBT3VRLFdBQVlsUCxHQUFRQSxHQUU3Q3FO
LE9BQVEsU0FBVXpPLEdBQ2pCLE1BQU85QixNQUFLZ0QsVUFBV3lYLEVBQVF6YSxLQUFNOEIsT0FB
Z0IsS0FFdEQ2UyxJQUFLLFNBQVU3UyxHQUNkLE1BQU85QixNQUFLZ0QsVUFBV3lYLEVBQVF6YSxL
QUFNOEIsT0FBZ0IsS0FFdERxWSxHQUFJLFNBQVVyWSxHQUNiLFFBQVMyWSxFQUNSemEsS0FJb0Is
Z0JBQWI4QixJQUF5QndZLEVBQWM1TSxLQUFNNUwsR0FDbkRELEVBQVFDLEdBQ1JBLE9BQ0QsR0FD
Q2MsU0FTSixJQUFJZ1ksR0FNSHpQLEVBQWEsc0NBRWJsSixFQUFPSixFQUFPRyxHQUFHQyxLQUFP
LFNBQVVILEVBQVVDLEVBQVNxVCxHQUNwRCxHQUFJckksR0FBT3ZKLENBR1gsS0FBTTFCLEVBQ0ws
TUFBTzlCLEtBUVIsSUFIQW9WLEVBQU9BLEdBQVF3RixFQUdVLGdCQUFiOVksR0FBd0IsQ0FhbkMs
R0FQQ2lMLEVBTHNCLE1BQWxCakwsRUFBVSxJQUNzQixNQUFwQ0EsRUFBVUEsRUFBU2MsT0FBUyxJ
QUM1QmQsRUFBU2MsUUFBVSxHQUdULEtBQU1kLEVBQVUsTUFHbEJxSixFQUFXaUMsS0FBTXRMLElB
SXJCaUwsSUFBV0EsRUFBTyxJQUFRaEwsRUE2Q3hCLE9BQU1BLEdBQVdBLEVBQVFXLFFBQ3RCWCxH
QUFXcVQsR0FBTzNFLEtBQU0zTyxHQUsxQjlCLEtBQUsyQyxZQUFhWixHQUFVME8sS0FBTTNPLEVB
aER6QyxJQUFLaUwsRUFBTyxHQUFNLENBWWpCLEdBWEFoTCxFQUFVQSxZQUFtQkYsR0FBU0UsRUFB
UyxHQUFNQSxFQUlyREYsRUFBT3NCLE1BQU9uRCxLQUFNNkIsRUFBT2daLFVBQzFCOU4sRUFBTyxH
QUNQaEwsR0FBV0EsRUFBUTBLLFNBQVcxSyxFQUFRb0wsZUFBaUJwTCxFQUFVbkMsR0FDakUsSUFJ
STJhLEVBQVc3TSxLQUFNWCxFQUFPLEtBQVNsTCxFQUFPaUQsY0FBZS9DLEdBQzNELElBQU1nTCxJ
QUFTaEwsR0FHVEYsRUFBT2dELFdBQVk3RSxLQUFNK00sSUFDN0IvTSxLQUFNK00sR0FBU2hMLEVB
QVNnTCxJQUl4Qi9NLEtBQUsrUixLQUFNaEYsRUFBT2hMLEVBQVNnTCxHQUs5QixPQUFPL00sTUFZ
UCxNQVJBd0QsR0FBTzVELEVBQVN5TixlQUFnQk4sRUFBTyxJQUVsQ3ZKLElBR0p4RCxLQUFNLEdB
QU13RCxFQUNaeEQsS0FBSzRDLE9BQVMsR0FFUjVDLEtBY0gsTUFBSzhCLEdBQVMySyxVQUNwQnpN
LEtBQU0sR0FBTThCLEVBQ1o5QixLQUFLNEMsT0FBUyxFQUNQNUMsTUFJSTZCLEVBQU9nRCxXQUFZ
L0MsR0FDUmtELFNBQWZvUSxFQUFLMEYsTUFDWDFGLEVBQUswRixNQUFPaFosR0FHWkEsRUFBVUQs
R0FHTEEsRUFBTzZFLFVBQVc1RSxFQUFVOUIsTUFJckNpQyxHQUFLUSxVQUFZWixFQUFPRyxHQUd4
QjRZLEVBQWEvWSxFQUFRakMsRUFHckIsSUFBSW1iLEdBQWUsaUNBR2xCQyxHQUNDQyxVQUFVLEVB
Q1ZDLFVBQVUsRUFDVjNPLE1BQU0sRUFDTjRPLE1BQU0sRUFHUnRaLEdBQU9HLEdBQUdvQyxRQUNU
MFEsSUFBSyxTQUFVblEsR0FDZCxHQUFJeVcsR0FBVXZaLEVBQVE4QyxFQUFRM0UsTUFDN0JxYixF
QUFJRCxFQUFReFksTUFFYixPQUFPNUMsTUFBS3VRLE9BQVEsV0FFbkIsSUFEQSxHQUFJOU0sR0FB
SSxFQUNBQSxFQUFJNFgsRUFBRzVYLElBQ2QsR0FBSzVCLEVBQU9nSCxTQUFVN0ksS0FBTW9iLEVB
QVMzWCxJQUNwQyxPQUFPLEtBTVg2WCxRQUFTLFNBQVUzSSxFQUFXNVEsR0FDN0IsR0FBSWlOLEdB
Q0h2TCxFQUFJLEVBQ0o0WCxFQUFJcmIsS0FBSzRDLE9BQ1Q4UixLQUNBMEcsRUFBK0IsZ0JBQWR6
SSxJQUEwQjlRLEVBQVE4USxFQUdwRCxLQUFNMkgsRUFBYzVNLEtBQU1pRixHQUN6QixLQUFRbFAs
RUFBSTRYLEVBQUc1WCxJQUNkLElBQU11TCxFQUFNaFAsS0FBTXlELEdBQUt1TCxHQUFPQSxJQUFR
ak4sRUFBU2lOLEVBQU1BLEVBQUl0TixXQUd4RCxHQUFLc04sRUFBSXZDLFNBQVcsS0FBUTJPLEVB
QzNCQSxFQUFRRyxNQUFPdk0sTUFHRSxJQUFqQkEsRUFBSXZDLFVBQ0g1SyxFQUFPNE8sS0FBS0ss
Z0JBQWlCOUIsRUFBSzJELElBQWdCLENBRW5EK0IsRUFBUWxVLEtBQU13TyxFQUNkLE9BTUosTUFB
T2hQLE1BQUtnRCxVQUFXMFIsRUFBUTlSLE9BQVMsRUFBSWYsRUFBT3VRLFdBQVlzQyxHQUFZQSxJ
QUk1RTZHLE1BQU8sU0FBVS9YLEdBR2hCLE1BQU1BLEdBS2UsZ0JBQVRBLEdBQ0ovQyxFQUFRTyxL
QUFNYSxFQUFRMkIsR0FBUXhELEtBQU0sSUFJckNTLEVBQVFPLEtBQU1oQixLQUdwQndELEVBQUtk
LE9BQVNjLEVBQU0sR0FBTUEsR0FaakJ4RCxLQUFNLElBQU9BLEtBQU0sR0FBSTBCLFdBQWUxQixL
QUFLNEQsUUFBUTRYLFVBQVU1WSxXQWdCeEU2WSxJQUFLLFNBQVUzWixFQUFVQyxHQUN4QixNQUFP
L0IsTUFBS2dELFVBQ1huQixFQUFPdVEsV0FDTnZRLEVBQU9zQixNQUFPbkQsS0FBSzhDLE1BQU9q
QixFQUFRQyxFQUFVQyxPQUsvQzJaLFFBQVMsU0FBVTVaLEdBQ2xCLE1BQU85QixNQUFLeWIsSUFB
aUIsTUFBWjNaLEVBQ2hCOUIsS0FBS29ELFdBQWFwRCxLQUFLb0QsV0FBV21OLE9BQVF6TyxNQUs3
QyxTQUFTNlosR0FBUzNNLEVBQUsxQyxHQUN0QixPQUFVMEMsRUFBTUEsRUFBSzFDLEtBQTRCLElB
QWpCMEMsRUFBSXZDLFVBQ3BDLE1BQU91QyxHQUdSbk4sRUFBT3dCLE1BQ044USxPQUFRLFNBQVUz
USxHQUNqQixHQUFJMlEsR0FBUzNRLEVBQUs5QixVQUNsQixPQUFPeVMsSUFBOEIsS0FBcEJBLEVB
QU8xSCxTQUFrQjBILEVBQVMsTUFFcER5SCxRQUFTLFNBQVVwWSxHQUNsQixNQUFPOEksR0FBSzlJ
LEVBQU0sZUFFbkJxWSxhQUFjLFNBQVVyWSxFQUFNQyxFQUFHd1csR0FDaEMsTUFBTzNOLEdBQUs5
SSxFQUFNLGFBQWN5VyxJQUVqQzFOLEtBQU0sU0FBVS9JLEdBQ2YsTUFBT21ZLEdBQVNuWSxFQUFN
LGdCQUV2QjJYLEtBQU0sU0FBVTNYLEdBQ2YsTUFBT21ZLEdBQVNuWSxFQUFNLG9CQUV2QnNZLFFB
QVMsU0FBVXRZLEdBQ2xCLE1BQU84SSxHQUFLOUksRUFBTSxnQkFFbkJnWSxRQUFTLFNBQVVoWSxH
QUNsQixNQUFPOEksR0FBSzlJLEVBQU0sb0JBRW5CdVksVUFBVyxTQUFVdlksRUFBTUMsRUFBR3dX
LEdBQzdCLE1BQU8zTixHQUFLOUksRUFBTSxjQUFleVcsSUFFbEMrQixVQUFXLFNBQVV4WSxFQUFN
QyxFQUFHd1csR0FDN0IsTUFBTzNOLEdBQUs5SSxFQUFNLGtCQUFtQnlXLElBRXRDRyxTQUFVLFNB
QVU1VyxHQUNuQixNQUFPNFcsSUFBWTVXLEVBQUs5QixnQkFBbUIrUSxXQUFZalAsSUFFeER5WCxT
QUFVLFNBQVV6WCxHQUNuQixNQUFPNFcsR0FBVTVXLEVBQUtpUCxhQUV2QnlJLFNBQVUsU0FBVTFY
LEdBQ25CLE1BQU9BLEdBQUt5WSxpQkFBbUJwYSxFQUFPc0IsU0FBV0ssRUFBS2dKLGNBRXJELFNB
QVVsSSxFQUFNdEMsR0FDbEJILEVBQU9HLEdBQUlzQyxHQUFTLFNBQVUyVixFQUFPblksR0FDcEMs
R0FBSTRTLEdBQVU3UyxFQUFPMEIsSUFBS3ZELEtBQU1nQyxFQUFJaVksRUF1QnBDLE9BckIwQixV
QUFyQjNWLEVBQUtoRSxZQUNUd0IsRUFBV21ZLEdBR1BuWSxHQUFnQyxnQkFBYkEsS0FDdkI0UyxF
QUFVN1MsRUFBTzBPLE9BQVF6TyxFQUFVNFMsSUFHL0IxVSxLQUFLNEMsT0FBUyxJQUdab1ksRUFB
a0IxVyxJQUN2QnpDLEVBQU91USxXQUFZc0MsR0FJZnFHLEVBQWFyTixLQUFNcEosSUFDdkJvUSxF
QUFRd0gsV0FJSGxjLEtBQUtnRCxVQUFXMFIsS0FHekIsSUFBSXlILEdBQWdCLG1CQUtwQixTQUFT
QyxHQUFlL1gsR0FDdkIsR0FBSWdZLEtBSUosT0FIQXhhLEdBQU93QixLQUFNZ0IsRUFBUTBJLE1B
QU9vUCxPQUF1QixTQUFVNVEsRUFBRytRLEdBQy9ERCxFQUFRQyxJQUFTLElBRVhELEVBeUJSeGEs
RUFBTzBhLFVBQVksU0FBVWxZLEdBSTVCQSxFQUE2QixnQkFBWkEsR0FDaEIrWCxFQUFlL1gsR0FD
ZnhDLEVBQU91QyxVQUFZQyxFQUVwQixJQUNDbVksR0FHQUMsRUFHQUMsRUFHQUMsRUFHQWpULEtB
R0FrVCxLQUdBQyxLQUdBQyxFQUFPLFdBUU4sSUFMQUgsRUFBU3RZLEVBQVEwWSxLQUlqQkwsRUFB
UUYsR0FBUyxFQUNUSSxFQUFNaGEsT0FBUWlhLEtBQW1CLENBQ3hDSixFQUFTRyxFQUFNck8sT0FD
ZixTQUFVc08sRUFBY25ULEVBQUs5RyxPQUd2QjhHLEVBQU1tVCxHQUFjblosTUFBTytZLEVBQVEs
R0FBS0EsRUFBUSxPQUFVLEdBQzlEcFksRUFBUTJZLGNBR1JILEVBQWNuVCxFQUFLOUcsT0FDbkI2
WixHQUFTLEdBTU5wWSxFQUFRb1ksU0FDYkEsR0FBUyxHQUdWRCxHQUFTLEVBR0pHLElBSUhqVCxF
QURJK1MsS0FLRyxLQU1WOUIsR0FHQ2MsSUFBSyxXQTJCSixNQTFCSy9SLEtBR0MrUyxJQUFXRCxJ
QUNmSyxFQUFjblQsRUFBSzlHLE9BQVMsRUFDNUJnYSxFQUFNcGMsS0FBTWljLElBR2IsUUFBV2hC
LEdBQUtqVSxHQUNmM0YsRUFBT3dCLEtBQU1tRSxFQUFNLFNBQVUrRCxFQUFHcEUsR0FDMUJ0RixF
QUFPZ0QsV0FBWXNDLEdBQ2pCOUMsRUFBUXlWLFFBQVdhLEVBQUs3RixJQUFLM04sSUFDbEN1QyxF
QUFLbEosS0FBTTJHLEdBRURBLEdBQU9BLEVBQUl2RSxRQUFpQyxXQUF2QmYsRUFBTzZELEtBQU15
QixJQUc3Q3NVLEVBQUt0VSxNQUdIeEQsV0FFQThZLElBQVdELEdBQ2ZNLEtBR0s5YyxNQUlSaWQs
T0FBUSxXQVlQLE1BWEFwYixHQUFPd0IsS0FBTU0sVUFBVyxTQUFVNEgsRUFBR3BFLEdBQ3BDLEdB
QUlvVSxFQUNKLFFBQVVBLEVBQVExWixFQUFPK0UsUUFBU08sRUFBS3VDLEVBQU02UixPQUM1QzdS
LEVBQUt2RixPQUFRb1gsRUFBTyxHQUdmQSxHQUFTc0IsR0FDYkEsTUFJSTdjLE1BS1I4VSxJQUFL
LFNBQVU5UyxHQUNkLE1BQU9BLEdBQ05ILEVBQU8rRSxRQUFTNUUsRUFBSTBILE1BQ3BCQSxFQUFL
OUcsT0FBUyxHQUloQmtULE1BQU8sV0FJTixNQUhLcE0sS0FDSkEsTUFFTTFKLE1BTVJrZCxRQUFT
LFdBR1IsTUFGQVAsR0FBU0MsS0FDVGxULEVBQU8rUyxFQUFTLEdBQ1R6YyxNQUVScU0sU0FBVSxX
QUNULE9BQVEzQyxHQU1UeVQsS0FBTSxXQUtMLE1BSkFSLEdBQVNDLEtBQ0hILEdBQVdELElBQ2hC
OVMsRUFBTytTLEVBQVMsSUFFVnpjLE1BRVIyYyxPQUFRLFdBQ1AsUUFBU0EsR0FJVlMsU0FBVSxT
QUFVcmIsRUFBU3lGLEdBUzVCLE1BUk1tVixLQUNMblYsRUFBT0EsTUFDUEEsR0FBU3pGLEVBQVN5
RixFQUFLbEgsTUFBUWtILEVBQUtsSCxRQUFVa0gsR0FDOUNvVixFQUFNcGMsS0FBTWdILEdBQ05n
VixHQUNMTSxLQUdLOWMsTUFJUjhjLEtBQU0sV0FFTCxNQURBbkMsR0FBS3lDLFNBQVVwZCxLQUFN
MkQsV0FDZDNELE1BSVIwYyxNQUFPLFdBQ04sUUFBU0EsR0FJWixPQUFPL0IsR0FJUixTQUFTMEMs
R0FBVUMsR0FDbEIsTUFBT0EsR0FFUixRQUFTQyxHQUFTQyxHQUNqQixLQUFNQSxHQUdQLFFBQVND
LEdBQVlyVyxFQUFPc1csRUFBU0MsR0FDcEMsR0FBSUMsRUFFSixLQUdNeFcsR0FBU3ZGLEVBQU9n
RCxXQUFjK1ksRUFBU3hXLEVBQU15VyxTQUNqREQsRUFBTzVjLEtBQU1vRyxHQUFRNEIsS0FBTTBV
LEdBQVVJLEtBQU1ILEdBR2hDdlcsR0FBU3ZGLEVBQU9nRCxXQUFjK1ksRUFBU3hXLEVBQU0yVyxN
QUN4REgsRUFBTzVjLEtBQU1vRyxFQUFPc1csRUFBU0MsR0FPN0JELEVBQVExYyxLQUFNZ0UsT0FB
V29DLEdBTXpCLE1BQVFBLEdBSVR1VyxFQUFPM2MsS0FBTWdFLE9BQVdvQyxJQUkxQnZGLEVBQU91
QyxRQUVONFosU0FBVSxTQUFVQyxHQUNuQixHQUFJQyxLQUlBLFNBQVUsV0FBWXJjLEVBQU8wYSxV
QUFXLFVBQ3pDMWEsRUFBTzBhLFVBQVcsVUFBWSxJQUM3QixVQUFXLE9BQVExYSxFQUFPMGEsVUFB
VyxlQUN0QzFhLEVBQU8wYSxVQUFXLGVBQWlCLEVBQUcsYUFDckMsU0FBVSxPQUFRMWEsRUFBTzBh
LFVBQVcsZUFDckMxYSxFQUFPMGEsVUFBVyxlQUFpQixFQUFHLGFBRXhDNEIsRUFBUSxVQUNSTixH
QUNDTSxNQUFPLFdBQ04sTUFBT0EsSUFFUkMsT0FBUSxXQUVQLE1BREFDLEdBQVNyVixLQUFNckYs
V0FBWW1hLEtBQU1uYSxXQUMxQjNELE1BRVJzZSxRQUFTLFNBQVV0YyxHQUNsQixNQUFPNmIsR0FB
UUUsS0FBTSxLQUFNL2IsSUFJNUJ1YyxLQUFNLFdBQ0wsR0FBSUMsR0FBTTdhLFNBRVYsT0FBTzlC
LEdBQU9tYyxTQUFVLFNBQVVTLEdBQ2pDNWMsRUFBT3dCLEtBQU02YSxFQUFRLFNBQVV6YSxFQUFH
aWIsR0FHakMsR0FBSTFjLEdBQUtILEVBQU9nRCxXQUFZMlosRUFBS0UsRUFBTyxNQUFXRixFQUFL
RSxFQUFPLEdBSy9ETCxHQUFVSyxFQUFPLElBQU8sV0FDdkIsR0FBSUMsR0FBVzNjLEdBQU1BLEVB
QUcwQixNQUFPMUQsS0FBTTJELFVBQ2hDZ2IsSUFBWTljLEVBQU9nRCxXQUFZOFosRUFBU2QsU0FD
NUNjLEVBQVNkLFVBQ1BlLFNBQVVILEVBQVNJLFFBQ25CN1YsS0FBTXlWLEVBQVNmLFNBQ2ZJLEtB
QU1XLEVBQVNkLFFBRWpCYyxFQUFVQyxFQUFPLEdBQU0sUUFDdEIxZSxLQUNBZ0MsR0FBTzJjLEdB
QWFoYixlQUt4QjZhLEVBQU0sT0FDSFgsV0FFTEUsS0FBTSxTQUFVZSxFQUFhQyxFQUFZQyxHQUN4
QyxHQUFJQyxHQUFXLENBQ2YsU0FBU3ZCLEdBQVN3QixFQUFPYixFQUFVeFAsRUFBU3NRLEdBQzND
LE1BQU8sWUFDTixHQUFJQyxHQUFPcGYsS0FDVndILEVBQU83RCxVQUNQMGIsRUFBYSxXQUNaLEdB
QUlWLEdBQVVaLENBS2QsTUFBS21CLEVBQVFELEdBQWIsQ0FRQSxHQUpBTixFQUFXOVAsRUFBUW5M
LE1BQU8wYixFQUFNNVgsR0FJM0JtWCxJQUFhTixFQUFTUixVQUMxQixLQUFNLElBQUl5QixXQUFX
LDJCQU90QnZCLEdBQU9ZLElBS2dCLGdCQUFiQSxJQUNZLGtCQUFiQSxLQUNSQSxFQUFTWixLQUdM
bGMsRUFBT2dELFdBQVlrWixHQUdsQm9CLEVBQ0pwQixFQUFLL2MsS0FDSjJkLEVBQ0FqQixFQUFT
dUIsRUFBVVosRUFBVWhCLEVBQVU4QixHQUN2Q3pCLEVBQVN1QixFQUFVWixFQUFVZCxFQUFTNEIs
S0FPdkNGLElBRUFsQixFQUFLL2MsS0FDSjJkLEVBQ0FqQixFQUFTdUIsRUFBVVosRUFBVWhCLEVB
QVU4QixHQUN2Q3pCLEVBQVN1QixFQUFVWixFQUFVZCxFQUFTNEIsR0FDdEN6QixFQUFTdUIsRUFB
VVosRUFBVWhCLEVBQzVCZ0IsRUFBU2tCLGVBU1AxUSxJQUFZd08sSUFDaEIrQixFQUFPcGEsT0FD
UHdDLEdBQVNtWCxLQUtSUSxHQUFXZCxFQUFTbUIsYUFBZUosRUFBTTVYLE1BSzdDaVksRUFBVU4s
RUFDVEUsRUFDQSxXQUNDLElBQ0NBLElBQ0MsTUFBUTNTLEdBRUo3SyxFQUFPbWMsU0FBUzBCLGVB
Q3BCN2QsRUFBT21jLFNBQVMwQixjQUFlaFQsRUFDOUIrUyxFQUFRRSxZQU1MVCxFQUFRLEdBQUtE
LElBSVpwUSxJQUFZME8sSUFDaEI2QixFQUFPcGEsT0FDUHdDLEdBQVNrRixJQUdWMlIsRUFBU3VC
LFdBQVlSLEVBQU01WCxLQVMzQjBYLEdBQ0pPLEtBS0s1ZCxFQUFPbWMsU0FBUzZCLGVBQ3BCSixF
QUFRRSxXQUFhOWQsRUFBT21jLFNBQVM2QixnQkFFdEM5ZixFQUFPK2YsV0FBWUwsS0FLdEIsTUFB
TzVkLEdBQU9tYyxTQUFVLFNBQVVTLEdBR2pDUCxFQUFRLEdBQUssR0FBSXpDLElBQ2hCaUMsRUFD
QyxFQUNBZSxFQUNBNWMsRUFBT2dELFdBQVltYSxHQUNsQkEsRUFDQTNCLEVBQ0RvQixFQUFTYyxh
QUtYckIsRUFBUSxHQUFLLEdBQUl6QyxJQUNoQmlDLEVBQ0MsRUFDQWUsRUFDQTVjLEVBQU9nRCxX
QUFZaWEsR0FDbEJBLEVBQ0F6QixJQUtIYSxFQUFRLEdBQUssR0FBSXpDLElBQ2hCaUMsRUFDQyxF
QUNBZSxFQUNBNWMsRUFBT2dELFdBQVlrYSxHQUNsQkEsRUFDQXhCLE1BR0FNLFdBS0xBLFFBQVMs
U0FBVXBZLEdBQ2xCLE1BQWMsT0FBUEEsRUFBYzVELEVBQU91QyxPQUFRcUIsRUFBS29ZLEdBQVlB
LElBR3ZEUSxJQTJERCxPQXhEQXhjLEdBQU93QixLQUFNNmEsRUFBUSxTQUFVemEsRUFBR2liLEdB
Q2pDLEdBQUloVixHQUFPZ1YsRUFBTyxHQUNqQnFCLEVBQWNyQixFQUFPLEVBS3RCYixHQUFTYSxF
QUFPLElBQVFoVixFQUFLK1IsSUFHeEJzRSxHQUNKclcsRUFBSytSLElBQ0osV0FJQzBDLEVBQVE0
QixHQUtUN0IsRUFBUSxFQUFJemEsR0FBSyxHQUFJeVosUUFHckJnQixFQUFRLEdBQUssR0FBSWYs
TUFPbkJ6VCxFQUFLK1IsSUFBS2lELEVBQU8sR0FBSTVCLE1BS3JCdUIsRUFBVUssRUFBTyxJQUFR
LFdBRXhCLE1BREFMLEdBQVVLLEVBQU8sR0FBTSxRQUFVMWUsT0FBU3FlLEVBQVdyWixPQUFZaEYs
S0FBTTJELFdBQ2hFM0QsTUFNUnFlLEVBQVVLLEVBQU8sR0FBTSxRQUFXaFYsRUFBSzBULFdBSXhD
UyxFQUFRQSxRQUFTUSxHQUdaSixHQUNKQSxFQUFLamQsS0FBTXFkLEVBQVVBLEdBSWZBLEdBSVIy
QixLQUFNLFNBQVVDLEdBQ2YsR0FHQ0MsR0FBWXZjLFVBQVVmLE9BR3RCYSxFQUFJeWMsRUFHSkMs
RUFBa0J4YSxNQUFPbEMsR0FDekIyYyxFQUFnQjlmLEVBQU1VLEtBQU0yQyxXQUc1QjBjLEVBQVN4
ZSxFQUFPbWMsV0FHaEJzQyxFQUFhLFNBQVU3YyxHQUN0QixNQUFPLFVBQVUyRCxHQUNoQitZLEVB
QWlCMWMsR0FBTXpELEtBQ3ZCb2dCLEVBQWUzYyxHQUFNRSxVQUFVZixPQUFTLEVBQUl0QyxFQUFN
VSxLQUFNMkMsV0FBY3lELElBQzVEOFksR0FDVEcsRUFBT2IsWUFBYVcsRUFBaUJDLElBTXpDLElB
QUtGLEdBQWEsSUFDakJ6QyxFQUFZd0MsRUFBYUksRUFBT3JYLEtBQU1zWCxFQUFZN2MsSUFBTWlh
LFFBQVMyQyxFQUFPMUMsUUFHaEQsWUFBbkIwQyxFQUFPbEMsU0FDWHRjLEVBQU9nRCxXQUFZdWIs
RUFBZTNjLElBQU8yYyxFQUFlM2MsR0FBSXNhLE9BRTVELE1BQU9zQyxHQUFPdEMsTUFLaEIsT0FB
UXRhLElBQ1BnYSxFQUFZMkMsRUFBZTNjLEdBQUs2YyxFQUFZN2MsR0FBSzRjLEVBQU8xQyxPQUd6
RCxPQUFPMEMsR0FBT3hDLFlBT2hCLElBQUkwQyxHQUFjLHdEQUVsQjFlLEdBQU9tYyxTQUFTMEIs
Y0FBZ0IsU0FBVXBhLEVBQU9rYixHQUkzQ3pnQixFQUFPMGdCLFNBQVcxZ0IsRUFBTzBnQixRQUFR
QyxNQUFRcGIsR0FBU2liLEVBQVk3UyxLQUFNcEksRUFBTWhCLE9BQzlFdkUsRUFBTzBnQixRQUFR
QyxLQUFNLDhCQUFnQ3BiLEVBQU1xYixRQUFTcmIsRUFBTWtiLE1BQU9BLElBT25GM2UsRUFBTytl
LGVBQWlCLFNBQVV0YixHQUNqQ3ZGLEVBQU8rZixXQUFZLFdBQ2xCLEtBQU14YSxLQVFSLElBQUl1
YixHQUFZaGYsRUFBT21jLFVBRXZCbmMsR0FBT0csR0FBRzhZLE1BQVEsU0FBVTlZLEdBWTNCLE1B
VkE2ZSxHQUNFOUMsS0FBTS9iLEdBRFI2ZSxTQU1TLFNBQVV2YixHQUNqQnpELEVBQU8rZSxlQUFn
QnRiLEtBR2xCdEYsTUFHUjZCLEVBQU91QyxRQUdOaUIsU0FBUyxFQUlUeWIsVUFBVyxFQUdYQyxV
QUFXLFNBQVVDLEdBQ2ZBLEVBQ0puZixFQUFPaWYsWUFFUGpmLEVBQU9pWixPQUFPLElBS2hCQSxN
QUFPLFNBQVVtRyxJQUdYQSxLQUFTLElBQVNwZixFQUFPaWYsVUFBWWpmLEVBQU93RCxXQUtqRHhE
LEVBQU93RCxTQUFVLEVBR1o0YixLQUFTLEtBQVVwZixFQUFPaWYsVUFBWSxHQUszQ0QsRUFBVXJC
LFlBQWE1ZixHQUFZaUMsUUFJckNBLEVBQU9pWixNQUFNaUQsS0FBTzhDLEVBQVU5QyxJQUc5QixT
QUFTbUQsS0FDUnRoQixFQUFTdWhCLG9CQUFxQixtQkFBb0JEO0FBQ2xEbmhCLEVBQU9vaEIsb0JB
QXFCLE9BQVFELEdBQ3BDcmYsRUFBT2laLFFBT3FCLGFBQXhCbGIsRUFBU3doQixZQUNhLFlBQXhC
eGhCLEVBQVN3aEIsYUFBNkJ4aEIsRUFBUytQLGdCQUFnQjBSLFNBR2pFdGhCLEVBQU8rZixXQUFZ
amUsRUFBT2laLFFBSzFCbGIsRUFBU3FRLGlCQUFrQixtQkFBb0JpUixHQUcvQ25oQixFQUFPa1Es
aUJBQWtCLE9BQVFpUixHQVFsQyxJQUFJSSxHQUFTLFNBQVVyZSxFQUFPakIsRUFBSXFNLEVBQUtq
SCxFQUFPbWEsRUFBV0MsRUFBVUMsR0FDbEUsR0FBSWhlLEdBQUksRUFDUE0sRUFBTWQsRUFBTUws
T0FDWjhlLEVBQWMsTUFBUHJULENBR1IsSUFBNEIsV0FBdkJ4TSxFQUFPNkQsS0FBTTJJLEdBQXFC
LENBQ3RDa1QsR0FBWSxDQUNaLEtBQU05ZCxJQUFLNEssR0FDVmlULEVBQVFyZSxFQUFPakIsRUFB
SXlCLEVBQUc0SyxFQUFLNUssSUFBSyxFQUFNK2QsRUFBVUMsT0FJM0MsSUFBZXpjLFNBQVZvQyxJ
QUNYbWEsR0FBWSxFQUVOMWYsRUFBT2dELFdBQVl1QyxLQUN4QnFhLEdBQU0sR0FHRkMsSUFHQ0Qs
R0FDSnpmLEVBQUdoQixLQUFNaUMsRUFBT21FLEdBQ2hCcEYsRUFBSyxPQUlMMGYsRUFBTzFmLEVB
Q1BBLEVBQUssU0FBVXdCLEVBQU02SyxFQUFLakgsR0FDekIsTUFBT3NhLEdBQUsxZ0IsS0FBTWEs
RUFBUTJCLEdBQVE0RCxNQUtoQ3BGLEdBQ0osS0FBUXlCLEVBQUlNLEVBQUtOLElBQ2hCekIsRUFD
Q2lCLEVBQU9RLEdBQUs0SyxFQUFLb1QsRUFDakJyYSxFQUNBQSxFQUFNcEcsS0FBTWlDLEVBQU9R
LEdBQUtBLEVBQUd6QixFQUFJaUIsRUFBT1EsR0FBSzRLLElBTS9DLE9BQUtrVCxHQUNHdGUsRUFJ
SHllLEVBQ0cxZixFQUFHaEIsS0FBTWlDLEdBR1ZjLEVBQU0vQixFQUFJaUIsRUFBTyxHQUFLb0ws
R0FBUW1ULEdBRWxDRyxFQUFhLFNBQVVDLEdBUTFCLE1BQTBCLEtBQW5CQSxFQUFNblYsVUFBcUMs
SUFBbkJtVixFQUFNblYsWUFBc0JtVixFQUFNblYsU0FNbEUsU0FBU29WLEtBQ1I3aEIsS0FBS2lG
LFFBQVVwRCxFQUFPb0QsUUFBVTRjLEVBQUtDLE1BR3RDRCxFQUFLQyxJQUFNLEVBRVhELEVBQUtw
ZixXQUVKMkwsTUFBTyxTQUFVd1QsR0FHaEIsR0FBSXhhLEdBQVF3YSxFQUFPNWhCLEtBQUtpRixR
QTRCeEIsT0F6Qk1tQyxLQUNMQSxLQUtLdWEsRUFBWUMsS0FJWEEsRUFBTW5WLFNBQ1ZtVixFQUFP
NWhCLEtBQUtpRixTQUFZbUMsRUFNeEJoSCxPQUFPMmhCLGVBQWdCSCxFQUFPNWhCLEtBQUtpRixT
QUNsQ21DLE1BQU9BLEVBQ1A0YSxjQUFjLE1BTVg1YSxHQUVSNmEsSUFBSyxTQUFVTCxFQUFPTSxF
QUFNOWEsR0FDM0IsR0FBSSthLEdBQ0gvVCxFQUFRcE8sS0FBS29PLE1BQU93VCxFQUlyQixJQUFx
QixnQkFBVE0sR0FDWDlULEVBQU92TSxFQUFPdUUsVUFBVzhiLElBQVc5YSxNQU1wQyxLQUFNK2Es
SUFBUUQsR0FDYjlULEVBQU92TSxFQUFPdUUsVUFBVytiLElBQVdELEVBQU1DLEVBRzVDLE9BQU8v
VCxJQUVSdEwsSUFBSyxTQUFVOGUsRUFBT3ZULEdBQ3JCLE1BQWVySixVQUFScUosRUFDTnJPLEtB
QUtvTyxNQUFPd1QsR0FHWkEsRUFBTzVoQixLQUFLaUYsVUFBYTJjLEVBQU81aEIsS0FBS2lGLFNB
QVdwRCxFQUFPdUUsVUFBV2lJLEtBRXBFaVQsT0FBUSxTQUFVTSxFQUFPdlQsRUFBS2pILEdBYTdC
LE1BQWFwQyxVQUFScUosR0FDQ0EsR0FBc0IsZ0JBQVJBLElBQWdDckosU0FBVm9DLEVBRWxDcEgs
S0FBSzhDLElBQUs4ZSxFQUFPdlQsSUFTekJyTyxLQUFLaWlCLElBQUtMLEVBQU92VCxFQUFLakgs
R0FJTHBDLFNBQVZvQyxFQUFzQkEsRUFBUWlILElBRXRDNE8sT0FBUSxTQUFVMkUsRUFBT3ZULEdB
Q3hCLEdBQUk1SyxHQUNIMkssRUFBUXdULEVBQU81aEIsS0FBS2lGLFFBRXJCLElBQWVELFNBQVZv
SixFQUFMLENBSUEsR0FBYXBKLFNBQVJxSixFQUFvQixDQUduQnhNLEVBQU9rRCxRQUFTc0osR0FJ
cEJBLEVBQU1BLEVBQUk5SyxJQUFLMUIsRUFBT3VFLFlBRXRCaUksRUFBTXhNLEVBQU91RSxVQUFX
aUksR0FJeEJBLEVBQU1BLElBQU9ELElBQ1ZDLEdBQ0FBLEVBQUl0QixNQUFPb1AsUUFHZjFZLEVB
QUk0SyxFQUFJekwsTUFFUixPQUFRYSxVQUNBMkssR0FBT0MsRUFBSzVLLEtBS1J1QixTQUFScUos
R0FBcUJ4TSxFQUFPcUUsY0FBZWtJLE1BTTFDd1QsRUFBTW5WLFNBQ1ZtVixFQUFPNWhCLEtBQUtp
RixTQUFZRCxhQUVqQjRjLEdBQU81aEIsS0FBS2lGLFlBSXRCbWQsUUFBUyxTQUFVUixHQUNsQixH
QUFJeFQsR0FBUXdULEVBQU81aEIsS0FBS2lGLFFBQ3hCLE9BQWlCRCxVQUFWb0osSUFBd0J2TSxF
QUFPcUUsY0FBZWtJLElBR3ZELElBQUlpVSxHQUFXLEdBQUlSLEdBRWZTLEVBQVcsR0FBSVQsR0Fj
ZlUsRUFBUyxnQ0FDWkMsRUFBYSxRQUVkLFNBQVNDLEdBQVNQLEdBQ2pCLE1BQWMsU0FBVEEsR0FJ
UyxVQUFUQSxJQUlTLFNBQVRBLEVBQ0csS0FJSEEsS0FBVUEsRUFBTyxJQUNiQSxFQUdKSyxFQUFP
N1UsS0FBTXdVLEdBQ1ZRLEtBQUtDLE1BQU9ULEdBR2JBLEdBR1IsUUFBU1UsR0FBVXBmLEVBQU02
SyxFQUFLNlQsR0FDN0IsR0FBSTVkLEVBSUosSUFBY1UsU0FBVGtkLEdBQXdDLElBQWxCMWUsRUFB
S2lKLFNBSS9CLEdBSEFuSSxFQUFPLFFBQVUrSixFQUFJakosUUFBU29kLEVBQVksT0FBUWpjLGNB
Q2xEMmIsRUFBTzFlLEVBQUttSyxhQUFjckosR0FFTCxnQkFBVDRkLEdBQW9CLENBQy9CLElBQ0NB
LEVBQU9PLEVBQVNQLEdBQ2YsTUFBUXhWLElBR1Y0VixFQUFTTCxJQUFLemUsRUFBTTZLLEVBQUs2
VCxPQUV6QkEsR0FBT2xkLE1BR1QsT0FBT2tkLEdBR1JyZ0IsRUFBT3VDLFFBQ05nZSxRQUFTLFNB
QVU1ZSxHQUNsQixNQUFPOGUsR0FBU0YsUUFBUzVlLElBQVU2ZSxFQUFTRCxRQUFTNWUsSUFHdEQw
ZSxLQUFNLFNBQVUxZSxFQUFNYyxFQUFNNGQsR0FDM0IsTUFBT0ksR0FBU2hCLE9BQVE5ZCxFQUFN
YyxFQUFNNGQsSUFHckNXLFdBQVksU0FBVXJmLEVBQU1jLEdBQzNCZ2UsRUFBU3JGLE9BQVF6WixF
QUFNYyxJQUt4QndlLE1BQU8sU0FBVXRmLEVBQU1jLEVBQU00ZCxHQUM1QixNQUFPRyxHQUFTZixP
QUFROWQsRUFBTWMsRUFBTTRkLElBR3JDYSxZQUFhLFNBQVV2ZixFQUFNYyxHQUM1QitkLEVBQVNw
RixPQUFRelosRUFBTWMsTUFJekJ6QyxFQUFPRyxHQUFHb0MsUUFDVDhkLEtBQU0sU0FBVTdULEVB
QUtqSCxHQUNwQixHQUFJM0QsR0FBR2EsRUFBTTRkLEVBQ1oxZSxFQUFPeEQsS0FBTSxHQUNiNE8s
RUFBUXBMLEdBQVFBLEVBQUtzRyxVQUd0QixJQUFhOUUsU0FBUnFKLEVBQW9CLENBQ3hCLEdBQUty
TyxLQUFLNEMsU0FDVHNmLEVBQU9JLEVBQVN4ZixJQUFLVSxHQUVFLElBQWxCQSxFQUFLaUosV0FB
bUI0VixFQUFTdmYsSUFBS1UsRUFBTSxpQkFBbUIsQ0FDbkVDLEVBQUltTCxFQUFNaE0sTUFDVixP
QUFRYSxJQUlGbUwsRUFBT25MLEtBQ1hhLEVBQU9zSyxFQUFPbkwsR0FBSWEsS0FDZSxJQUE1QkEs
RUFBSzdELFFBQVMsV0FDbEI2RCxFQUFPekMsRUFBT3VFLFVBQVc5QixFQUFLaEUsTUFBTyxJQUNy
Q3NpQixFQUFVcGYsRUFBTWMsRUFBTTRkLEVBQU01ZCxLQUkvQitkLEdBQVNKLElBQUt6ZSxFQUFN
LGdCQUFnQixHQUl0QyxNQUFPMGUsR0FJUixNQUFvQixnQkFBUjdULEdBQ0pyTyxLQUFLcUQsS0FB
TSxXQUNqQmlmLEVBQVNMLElBQUtqaUIsS0FBTXFPLEtBSWZpVCxFQUFRdGhCLEtBQU0sU0FBVW9I
LEdBQzlCLEdBQUk4YSxFQU9KLElBQUsxZSxHQUFrQndCLFNBQVZvQyxFQUFiLENBS0MsR0FEQThh
LEVBQU9JLEVBQVN4ZixJQUFLVSxFQUFNNkssR0FDYnJKLFNBQVRrZCxFQUNKLE1BQU9BLEVBTVIs
SUFEQUEsRUFBT1UsRUFBVXBmLEVBQU02SyxHQUNUckosU0FBVGtkLEVBQ0osTUFBT0EsT0FRVGxp
QixNQUFLcUQsS0FBTSxXQUdWaWYsRUFBU0wsSUFBS2ppQixLQUFNcU8sRUFBS2pILE1BRXhCLEtB
QU1BLEVBQU96RCxVQUFVZixPQUFTLEVBQUcsTUFBTSxJQUc3Q2lnQixXQUFZLFNBQVV4VSxHQUNy
QixNQUFPck8sTUFBS3FELEtBQU0sV0FDakJpZixFQUFTckYsT0FBUWpkLEtBQU1xTyxRQU0xQnhN
LEVBQU91QyxRQUNOd1ksTUFBTyxTQUFVcFosRUFBTWtDLEVBQU13YyxHQUM1QixHQUFJdEYsRUFF
SixJQUFLcFosRUFZSixNQVhBa0MsSUFBU0EsR0FBUSxNQUFTLFFBQzFCa1gsRUFBUXlGLEVBQVN2
ZixJQUFLVSxFQUFNa0MsR0FHdkJ3YyxLQUNFdEYsR0FBUy9hLEVBQU9rRCxRQUFTbWQsR0FDOUJ0
RixFQUFReUYsRUFBU2YsT0FBUTlkLEVBQU1rQyxFQUFNN0QsRUFBTzZFLFVBQVd3YixJQUV2RHRG
LEVBQU1wYyxLQUFNMGhCLElBR1B0RixPQUlUb0csUUFBUyxTQUFVeGYsRUFBTWtDLEdBQ3hCQSxF
QUFPQSxHQUFRLElBRWYsSUFBSWtYLEdBQVEvYSxFQUFPK2EsTUFBT3BaLEVBQU1rQyxHQUMvQnVk
LEVBQWNyRyxFQUFNaGEsT0FDcEJaLEVBQUs0YSxFQUFNck8sUUFDWDJVLEVBQVFyaEIsRUFBT3No
QixZQUFhM2YsRUFBTWtDLEdBQ2xDNkcsRUFBTyxXQUNOMUssRUFBT21oQixRQUFTeGYsRUFBTWtD
LEdBSVosZ0JBQVAxRCxJQUNKQSxFQUFLNGEsRUFBTXJPLFFBQ1gwVSxLQUdJamhCLElBSVUsT0FB
VDBELEdBQ0prWCxFQUFNaEwsUUFBUyxvQkFJVHNSLEdBQU1FLEtBQ2JwaEIsRUFBR2hCLEtBQU13
QyxFQUFNK0ksRUFBTTJXLEtBR2hCRCxHQUFlQyxHQUNwQkEsRUFBTXBOLE1BQU1nSCxRQUtkcUcs
WUFBYSxTQUFVM2YsRUFBTWtDLEdBQzVCLEdBQUkySSxHQUFNM0ksRUFBTyxZQUNqQixPQUFPMmMs
R0FBU3ZmLElBQUtVLEVBQU02SyxJQUFTZ1UsRUFBU2YsT0FBUTlkLEVBQU02SyxHQUMxRHlILE1B
QU9qVSxFQUFPMGEsVUFBVyxlQUFnQmQsSUFBSyxXQUM3QzRHLEVBQVNwRixPQUFRelosR0FBUWtD
LEVBQU8sUUFBUzJJLFdBTTdDeE0sRUFBT0csR0FBR29DLFFBQ1R3WSxNQUFPLFNBQVVsWCxFQUFN
d2MsR0FDdEIsR0FBSW1CLEdBQVMsQ0FRYixPQU5xQixnQkFBVDNkLEtBQ1h3YyxFQUFPeGMsRUFD
UEEsRUFBTyxLQUNQMmQsS0FHSTFmLFVBQVVmLE9BQVN5Z0IsRUFDaEJ4aEIsRUFBTythLE1BQU81
YyxLQUFNLEdBQUswRixHQUdqQlYsU0FBVGtkLEVBQ05saUIsS0FDQUEsS0FBS3FELEtBQU0sV0FD
VixHQUFJdVosR0FBUS9hLEVBQU8rYSxNQUFPNWMsS0FBTTBGLEVBQU13YyxFQUd0Q3JnQixHQUFP
c2hCLFlBQWFuakIsS0FBTTBGLEdBRVosT0FBVEEsR0FBZ0MsZUFBZmtYLEVBQU8sSUFDNUIvYSxF
QUFPbWhCLFFBQVNoakIsS0FBTTBGLE1BSTFCc2QsUUFBUyxTQUFVdGQsR0FDbEIsTUFBTzFGLE1B
QUtxRCxLQUFNLFdBQ2pCeEIsRUFBT21oQixRQUFTaGpCLEtBQU0wRixNQUd4QjRkLFdBQVksU0FB
VTVkLEdBQ3JCLE1BQU8xRixNQUFLNGMsTUFBT2xYLEdBQVEsVUFLNUJtWSxRQUFTLFNBQVVuWSxF
QUFNRCxHQUN4QixHQUFJOEIsR0FDSGdjLEVBQVEsRUFDUkMsRUFBUTNoQixFQUFPbWMsV0FDZmxN
LEVBQVc5UixLQUNYeUQsRUFBSXpELEtBQUs0QyxPQUNUOGEsRUFBVSxhQUNDNkYsR0FDVEMsRUFB
TWhFLFlBQWExTixHQUFZQSxJQUliLGlCQUFUcE0sS0FDWEQsRUFBTUMsRUFDTkEsRUFBT1YsUUFF
UlUsRUFBT0EsR0FBUSxJQUVmLE9BQVFqQyxJQUNQOEQsRUFBTThhLEVBQVN2ZixJQUFLZ1AsRUFB
VXJPLEdBQUtpQyxFQUFPLGNBQ3JDNkIsR0FBT0EsRUFBSXVPLFFBQ2Z5TixJQUNBaGMsRUFBSXVP
LE1BQU0yRixJQUFLaUMsR0FJakIsT0FEQUEsS0FDTzhGLEVBQU0zRixRQUFTcFksS0FHeEIsSUFB
SWdlLEdBQU8sc0NBQTBDQyxPQUVqREMsR0FBVSxHQUFJMVosUUFBUSxpQkFBbUJ3WixFQUFPLGNB
QWUsS0FHL0RHLElBQWMsTUFBTyxRQUFTLFNBQVUsUUFFeENDLEdBQXFCLFNBQVVyZ0IsRUFBTWtM
LEdBT3ZDLE1BSEFsTCxHQUFPa0wsR0FBTWxMLEVBR2lCLFNBQXZCQSxFQUFLc2dCLE1BQU1DLFNB
Q00sS0FBdkJ2Z0IsRUFBS3NnQixNQUFNQyxTQU1YbGlCLEVBQU9nSCxTQUFVckYsRUFBSzJKLGNB
QWUzSixJQUVILFNBQWxDM0IsRUFBT21pQixJQUFLeGdCLEVBQU0sWUFHakJ5Z0IsR0FBTyxTQUFV
emdCLEVBQU1hLEVBQVNmLEVBQVVrRSxHQUM3QyxHQUFJdEUsR0FBS29CLEVBQ1I0ZixJQUdELEtB
QU01ZixJQUFRRCxHQUNiNmYsRUFBSzVmLEdBQVNkLEVBQUtzZ0IsTUFBT3hmLEdBQzFCZCxFQUFL
c2dCLE1BQU94ZixHQUFTRCxFQUFTQyxFQUcvQnBCLEdBQU1JLEVBQVNJLE1BQU9GLEVBQU1nRSxN
QUc1QixLQUFNbEQsSUFBUUQsR0FDYmIsRUFBS3NnQixNQUFPeGYsR0FBUzRmLEVBQUs1ZixFQUcz
QixPQUFPcEIsR0FNUixTQUFTaWhCLElBQVczZ0IsRUFBTTJlLEVBQU1pQyxFQUFZQyxHQUMzQyxH
QUFJQyxHQUNIQyxFQUFRLEVBQ1JDLEVBQWdCLEdBQ2hCQyxFQUFlSixFQUNkLFdBQ0MsTUFBT0Es
R0FBTXJWLE9BRWQsV0FDQyxNQUFPbk4sR0FBT21pQixJQUFLeGdCLEVBQU0yZSxFQUFNLEtBRWpD
dUMsRUFBVUQsSUFDVkUsRUFBT1AsR0FBY0EsRUFBWSxLQUFTdmlCLEVBQU8raUIsVUFBV3pDLEdB
QVMsR0FBSyxNQUcxRTBDLEdBQWtCaGpCLEVBQU8raUIsVUFBV3pDLElBQW1CLE9BQVR3QyxJQUFr
QkQsSUFDL0RmLEdBQVF2VyxLQUFNdkwsRUFBT21pQixJQUFLeGdCLEVBQU0yZSxHQUVsQyxJQUFL
MEMsR0FBaUJBLEVBQWUsS0FBUUYsRUFBTyxDQUduREEsRUFBT0EsR0FBUUUsRUFBZSxHQUc5QlQs
RUFBYUEsTUFHYlMsR0FBaUJILEdBQVcsQ0FFNUIsR0FJQ0gsR0FBUUEsR0FBUyxLQUdqQk0sR0FB
Z0NOLEVBQ2hDMWlCLEVBQU9paUIsTUFBT3RnQixFQUFNMmUsRUFBTTBDLEVBQWdCRixTQUsxQ0os
S0FBWUEsRUFBUUUsSUFBaUJDLElBQXVCLElBQVZILEtBQWlCQyxHQWlCckUsTUFiS0osS0FDSlMs
R0FBaUJBLElBQWtCSCxHQUFXLEVBRzlDSixFQUFXRixFQUFZLEdBQ3RCUyxHQUFrQlQsRUFBWSxH
QUFNLEdBQU1BLEVBQVksSUFDckRBLEVBQVksR0FDVEMsSUFDSkEsRUFBTU0sS0FBT0EsRUFDYk4s
RUFBTW5RLE1BQVEyUSxFQUNkUixFQUFNcGdCLElBQU1xZ0IsSUFHUEEsRUFJUixHQUFJUSxNQUVK
LFNBQVNDLElBQW1CdmhCLEdBQzNCLEdBQUk0VSxHQUNIaFgsRUFBTW9DLEVBQUsySixjQUNYN0cs
RUFBVzlDLEVBQUs4QyxTQUNoQnlkLEVBQVVlLEdBQW1CeGUsRUFFOUIsT0FBS3lkLEdBQ0dBLEdB
R1IzTCxFQUFPaFgsRUFBSTRqQixLQUFLdmpCLFlBQWFMLEVBQUlFLGNBQWVnRixJQUNoRHlkLEVB
QVVsaUIsRUFBT21pQixJQUFLNUwsRUFBTSxXQUU1QkEsRUFBSzFXLFdBQVdDLFlBQWF5VyxHQUVa
LFNBQVoyTCxJQUNKQSxFQUFVLFNBRVhlLEdBQW1CeGUsR0FBYXlkLEVBRXpCQSxHQUdSLFFBQVNr
QixJQUFVblQsRUFBVW9ULEdBTzVCLElBTkEsR0FBSW5CLEdBQVN2Z0IsRUFDWjJoQixLQUNBNUos
RUFBUSxFQUNSM1ksRUFBU2tQLEVBQVNsUCxPQUdYMlksRUFBUTNZLEVBQVEyWSxJQUN2Qi9YLEVB
QU9zTyxFQUFVeUosR0FDWC9YLEVBQUtzZ0IsUUFJWEMsRUFBVXZnQixFQUFLc2dCLE1BQU1DLFFB
Q2hCbUIsR0FLYSxTQUFabkIsSUFDSm9CLEVBQVE1SixHQUFVOEcsRUFBU3ZmLElBQUtVLEVBQU0s
WUFBZSxLQUMvQzJoQixFQUFRNUosS0FDYi9YLEVBQUtzZ0IsTUFBTUMsUUFBVSxLQUdLLEtBQXZC
dmdCLEVBQUtzZ0IsTUFBTUMsU0FBa0JGLEdBQW9CcmdCLEtBQ3JEMmhCLEVBQVE1SixHQUFVd0os
R0FBbUJ2aEIsS0FHckIsU0FBWnVnQixJQUNKb0IsRUFBUTVKLEdBQVUsT0FHbEI4RyxFQUFTSixJ
QUFLemUsRUFBTSxVQUFXdWdCLElBTWxDLEtBQU14SSxFQUFRLEVBQUdBLEVBQVEzWSxFQUFRMlks
SUFDUixNQUFuQjRKLEVBQVE1SixLQUNaekosRUFBVXlKLEdBQVF1SSxNQUFNQyxRQUFVb0IsRUFB
UTVKLEdBSTVDLE9BQU96SixHQUdSalEsRUFBT0csR0FBR29DLFFBQ1Q4Z0IsS0FBTSxXQUNMLE1B
QU9ELElBQVVqbEIsTUFBTSxJQUV4Qm9sQixLQUFNLFdBQ0wsTUFBT0gsSUFBVWpsQixPQUVsQnFs
QixPQUFRLFNBQVVsSCxHQUNqQixNQUFzQixpQkFBVkEsR0FDSkEsRUFBUW5lLEtBQUtrbEIsT0FB
U2xsQixLQUFLb2xCLE9BRzVCcGxCLEtBQUtxRCxLQUFNLFdBQ1p3Z0IsR0FBb0I3akIsTUFDeEI2
QixFQUFRN0IsTUFBT2tsQixPQUVmcmpCLEVBQVE3QixNQUFPb2xCLFdBS25CLElBQUlFLElBQWlC
LHdCQUVqQkMsR0FBVyxpQ0FFWEMsR0FBYyw0QkFLZEMsSUFHSEMsUUFBVSxFQUFHLCtCQUFnQyxh
QUs3Q0MsT0FBUyxFQUFHLFVBQVcsWUFDdkJDLEtBQU8sRUFBRyxvQkFBcUIsdUJBQy9CQyxJQUFN
LEVBQUcsaUJBQWtCLG9CQUMzQkMsSUFBTSxFQUFHLHFCQUFzQix5QkFFL0JDLFVBQVksRUFBRyxH
QUFJLElBSXBCTixJQUFRTyxTQUFXUCxHQUFRQyxPQUUzQkQsR0FBUVEsTUFBUVIsR0FBUVMsTUFB
UVQsR0FBUVUsU0FBV1YsR0FBUVcsUUFBVVgsR0FBUUUsTUFDN0VGLEdBQVFZLEdBQUtaLEdBQVFL
LEVBR3JCLFNBQVNRLElBQVF2a0IsRUFBUzRPLEdBSXpCLEdBQUl6TixFQVlKLE9BVENBLEdBRDRD
LG1CQUFqQ25CLEdBQVF3TCxxQkFDYnhMLEVBQVF3TCxxQkFBc0JvRCxHQUFPLEtBRUksbUJBQTdC
NU8sR0FBUWlNLGlCQUNwQmpNLEVBQVFpTSxpQkFBa0IyQyxHQUFPLFFBTTNCM0wsU0FBUjJMLEdB
QXFCQSxHQUFPOU8sRUFBT3lFLFNBQVV2RSxFQUFTNE8sR0FDbkQ5TyxFQUFPc0IsT0FBU3BCLEdB
QVdtQixHQUc1QkEsRUFLUixRQUFTcWpCLElBQWV0akIsRUFBT3VqQixHQUk5QixJQUhBLEdBQUkv
aUIsR0FBSSxFQUNQNFgsRUFBSXBZLEVBQU1MLE9BRUhhLEVBQUk0WCxFQUFHNVgsSUFDZDRlLEVB
QVNKLElBQ1JoZixFQUFPUSxHQUNQLGNBQ0MraUIsR0FBZW5FLEVBQVN2ZixJQUFLMGpCLEVBQWEv
aUIsR0FBSyxlQU1uRCxHQUFJZ2pCLElBQVEsV0FFWixTQUFTQyxJQUFlempCLEVBQU9sQixFQUFT
NGtCLEVBQVNDLEVBQVdDLEdBTzNELElBTkEsR0FBSXJqQixHQUFNK0QsRUFBS29KLEVBQUttVyxF
QUFNamUsRUFBVTdFLEVBQ25DK2lCLEVBQVdobEIsRUFBUWlsQix5QkFDbkJDLEtBQ0F4akIsRUFB
SSxFQUNKNFgsRUFBSXBZLEVBQU1MLE9BRUhhLEVBQUk0WCxFQUFHNVgsSUFHZCxHQUZBRCxFQUFP
UCxFQUFPUSxHQUVURCxHQUFpQixJQUFUQSxFQUdaLEdBQTZCLFdBQXhCM0IsRUFBTzZELEtBQU1s
QyxHQUlqQjNCLEVBQU9zQixNQUFPOGpCLEVBQU96akIsRUFBS2lKLFVBQWFqSixHQUFTQSxPQUcx
QyxJQUFNaWpCLEdBQU0vWSxLQUFNbEssR0FJbEIsQ0FDTitELEVBQU1BLEdBQU93ZixFQUFTdGxC
LFlBQWFNLEVBQVFULGNBQWUsUUFHMURxUCxHQUFRNFUsR0FBU25ZLEtBQU01SixLQUFZLEdBQUks
S0FBUSxHQUFJK0MsY0FDbkR1Z0IsRUFBT3JCLEdBQVM5VSxJQUFTOFUsR0FBUU0sU0FDakN4ZSxF
QUFJcUosVUFBWWtXLEVBQU0sR0FBTWpsQixFQUFPcWxCLGNBQWUxakIsR0FBU3NqQixFQUFNLEdB
R2pFOWlCLEVBQUk4aUIsRUFBTSxFQUNWLE9BQVE5aUIsSUFDUHVELEVBQU1BLEVBQUk4TSxTQUtY
eFMsR0FBT3NCLE1BQU84akIsRUFBTzFmLEVBQUlpRixZQUd6QmpGLEVBQU13ZixFQUFTdFUsV0FH
ZmxMLEVBQUlpTCxZQUFjLE9BekJsQnlVLEdBQU16bUIsS0FBTXVCLEVBQVFvbEIsZUFBZ0IzakIs
R0ErQnZDdWpCLEdBQVN2VSxZQUFjLEdBRXZCL08sRUFBSSxDQUNKLE9BQVVELEVBQU95akIsRUFB
T3hqQixLQUd2QixHQUFLbWpCLEdBQWEva0IsRUFBTytFLFFBQVNwRCxFQUFNb2pCLE1BQ2xDQyxH
QUNKQSxFQUFRcm1CLEtBQU1nRCxPQWdCaEIsSUFYQXFGLEVBQVdoSCxFQUFPZ0gsU0FBVXJGLEVB
QUsySixjQUFlM0osR0FHaEQrRCxFQUFNK2UsR0FBUVMsRUFBU3RsQixZQUFhK0IsR0FBUSxVQUd2
Q3FGLEdBQ0owZCxHQUFlaGYsR0FJWG9mLEVBQVUsQ0FDZDNpQixFQUFJLENBQ0osT0FBVVIsRUFB
TytELEVBQUt2RCxLQUNoQndoQixHQUFZOVgsS0FBTWxLLEVBQUtrQyxNQUFRLEtBQ25DaWhCLEVB
QVFubUIsS0FBTWdELEdBTWxCLE1BQU91akIsSUFJUixXQUNDLEdBQUlBLEdBQVdubkIsRUFBU29u
Qix5QkFDdkJJLEVBQU1MLEVBQVN0bEIsWUFBYTdCLEVBQVMwQixjQUFlLFFBQ3BEdVAsRUFBUWpS
LEVBQVMwQixjQUFlLFFBTWpDdVAsR0FBTWpELGFBQWMsT0FBUSxTQUM1QmlELEVBQU1qRCxhQUFj
LFVBQVcsV0FDL0JpRCxFQUFNakQsYUFBYyxPQUFRLEtBRTVCd1osRUFBSTNsQixZQUFhb1AsR0FJ
akI1UCxFQUFRb21CLFdBQWFELEVBQUlFLFdBQVcsR0FBT0EsV0FBVyxHQUFPalQsVUFBVXNCLFFB
SXZFeVIsRUFBSXhXLFVBQVkseUJBQ2hCM1AsRUFBUXNtQixpQkFBbUJILEVBQUlFLFdBQVcsR0FB
T2pULFVBQVV3RixlQUU1RCxJQUFJbEssSUFBa0IvUCxFQUFTK1AsZ0JBSzlCNlgsR0FBWSxPQUNa
QyxHQUFjLGlEQUNkQyxHQUFpQixxQkFFbEIsU0FBU0MsTUFDUixPQUFPLEVBR1IsUUFBU0MsTUFD
UixPQUFPLEVBS1IsUUFBU0MsTUFDUixJQUNDLE1BQU9qb0IsR0FBUzBWLGNBQ2YsTUFBUXdTLEtB
R1gsUUFBU0MsSUFBSXZrQixFQUFNd2tCLEVBQU9sbUIsRUFBVW9nQixFQUFNbGdCLEVBQUlpbUIs
R0FDN0MsR0FBSUMsR0FBUXhpQixDQUdaLElBQXNCLGdCQUFWc2lCLEdBQXFCLENBR1AsZ0JBQWJs
bUIsS0FHWG9nQixFQUFPQSxHQUFRcGdCLEVBQ2ZBLEVBQVdrRCxPQUVaLEtBQU1VLElBQVFzaUIs
R0FDYkQsR0FBSXZrQixFQUFNa0MsRUFBTTVELEVBQVVvZ0IsRUFBTThGLEVBQU90aUIsR0FBUXVp
QixFQUVoRCxPQUFPemtCLEdBc0JSLEdBbkJhLE1BQVIwZSxHQUFzQixNQUFObGdCLEdBR3BCQSxF
QUFLRixFQUNMb2dCLEVBQU9wZ0IsRUFBV2tELFFBQ0QsTUFBTmhELElBQ2MsZ0JBQWJGLElBR1hF
LEVBQUtrZ0IsRUFDTEEsRUFBT2xkLFNBSVBoRCxFQUFLa2dCLEVBQ0xBLEVBQU9wZ0IsRUFDUEEs
RUFBV2tELFNBR1JoRCxLQUFPLEVBQ1hBLEVBQUs0bEIsT0FDQyxLQUFNNWxCLEVBQ1osTUFBT3dC
LEVBZVIsT0FaYSxLQUFSeWtCLElBQ0pDLEVBQVNsbUIsRUFDVEEsRUFBSyxTQUFVbW1CLEdBSWQs
TUFEQXRtQixLQUFTdW1CLElBQUtELEdBQ1BELEVBQU94a0IsTUFBTzFELEtBQU0yRCxZQUk1QjNC
LEVBQUdxRixLQUFPNmdCLEVBQU83Z0IsT0FBVTZnQixFQUFPN2dCLEtBQU94RixFQUFPd0YsU0FF
MUM3RCxFQUFLSCxLQUFNLFdBQ2pCeEIsRUFBT3NtQixNQUFNMU0sSUFBS3piLEtBQU1nb0IsRUFB
T2htQixFQUFJa2dCLEVBQU1wZ0IsS0FRM0NELEVBQU9zbUIsT0FFTjNvQixVQUVBaWMsSUFBSyxT
QUFValksRUFBTXdrQixFQUFPblosRUFBU3FULEVBQU1wZ0IsR0FFMUMsR0FBSXVtQixHQUFhQyxF
QUFhL2dCLEVBQzdCZ2hCLEVBQVFDLEVBQUdDLEVBQ1h0SixFQUFTdUosRUFBVWhqQixFQUFNaWpC
LEVBQVlDLEVBQ3JDQyxFQUFXeEcsRUFBU3ZmLElBQUtVLEVBRzFCLElBQU1xbEIsRUFBTixDQUtL
aGEsRUFBUUEsVUFDWndaLEVBQWN4WixFQUNkQSxFQUFVd1osRUFBWXhaLFFBQ3RCL00sRUFBV3Vt
QixFQUFZdm1CLFVBS25CQSxHQUNKRCxFQUFPNE8sS0FBS0ssZ0JBQWlCbkIsR0FBaUI3TixHQUl6
QytNLEVBQVF4SCxPQUNid0gsRUFBUXhILEtBQU94RixFQUFPd0YsU0FJZmtoQixFQUFTTSxFQUFT
TixVQUN6QkEsRUFBU00sRUFBU04sWUFFWEQsRUFBY08sRUFBU0MsVUFDOUJSLEVBQWNPLEVBQVND
LE9BQVMsU0FBVXBjLEdBSXpDLE1BQXlCLG1CQUFYN0ssSUFBMEJBLEVBQU9zbUIsTUFBTVksWUFB
Y3JjLEVBQUVoSCxLQUNwRTdELEVBQU9zbUIsTUFBTWEsU0FBU3RsQixNQUFPRixFQUFNRyxXQUFj
cUIsU0FLcERnakIsR0FBVUEsR0FBUyxJQUFLamIsTUFBT29QLEtBQXFCLElBQ3BEcU0sRUFBSVIs
RUFBTXBsQixNQUNWLE9BQVE0bEIsSUFDUGpoQixFQUFNbWdCLEdBQWV0YSxLQUFNNGEsRUFBT1Es
UUFDbEM5aUIsRUFBT2tqQixFQUFXcmhCLEVBQUssR0FDdkJvaEIsR0FBZXBoQixFQUFLLElBQU8s
SUFBS00sTUFBTyxLQUFNM0QsT0FHdkN3QixJQUtOeVosRUFBVXRkLEVBQU9zbUIsTUFBTWhKLFFB
QVN6WixPQUdoQ0EsR0FBUzVELEVBQVdxZCxFQUFROEosYUFBZTlKLEVBQVErSixXQUFjeGpCLEVB
R2pFeVosRUFBVXRkLEVBQU9zbUIsTUFBTWhKLFFBQVN6WixPQUdoQytpQixFQUFZNW1CLEVBQU91
QyxRQUNsQnNCLEtBQU1BLEVBQ05rakIsU0FBVUEsRUFDVjFHLEtBQU1BLEVBQ05yVCxRQUFTQSxF
QUNUeEgsS0FBTXdILEVBQVF4SCxLQUNkdkYsU0FBVUEsRUFDVmlKLGFBQWNqSixHQUFZRCxFQUFP
Z1EsS0FBSzlFLE1BQU1oQyxhQUFhMkMsS0FBTTVMLEdBQy9EcW5CLFVBQVdSLEVBQVc3YSxLQUFN
LE1BQzFCdWEsSUFHS0ssRUFBV0gsRUFBUTdpQixNQUMxQmdqQixFQUFXSCxFQUFRN2lCLE1BQ25C
Z2pCLEVBQVNVLGNBQWdCLEVBR25CakssRUFBUWtLLE9BQ2JsSyxFQUFRa0ssTUFBTXJvQixLQUFN
d0MsRUFBTTBlLEVBQU15RyxFQUFZTCxNQUFrQixHQUV6RDlrQixFQUFLeU0sa0JBQ1R6TSxFQUFL
eU0saUJBQWtCdkssRUFBTTRpQixJQUszQm5KLEVBQVExRCxNQUNaMEQsRUFBUTFELElBQUl6YSxL
QUFNd0MsRUFBTWlsQixHQUVsQkEsRUFBVTVaLFFBQVF4SCxPQUN2Qm9oQixFQUFVNVosUUFBUXhI
LEtBQU93SCxFQUFReEgsT0FLOUJ2RixFQUNKNG1CLEVBQVN2a0IsT0FBUXVrQixFQUFTVSxnQkFB
aUIsRUFBR1gsR0FFOUNDLEVBQVNsb0IsS0FBTWlvQixHQUloQjVtQixFQUFPc21CLE1BQU0zb0Is
T0FBUWtHLElBQVMsS0FNaEN1WCxPQUFRLFNBQVV6WixFQUFNd2tCLEVBQU9uWixFQUFTL00sRUFB
VXduQixHQUVqRCxHQUFJdGxCLEdBQUd1bEIsRUFBV2hpQixFQUNqQmdoQixFQUFRQyxFQUFHQyxF
QUNYdEosRUFBU3VKLEVBQVVoakIsRUFBTWlqQixFQUFZQyxFQUNyQ0MsRUFBV3hHLEVBQVNELFFB
QVM1ZSxJQUFVNmUsRUFBU3ZmLElBQUtVLEVBRXRELElBQU1xbEIsSUFBZU4sRUFBU00sRUFBU04s
UUFBdkMsQ0FLQVAsR0FBVUEsR0FBUyxJQUFLamIsTUFBT29QLEtBQXFCLElBQ3BEcU0sRUFBSVIs
RUFBTXBsQixNQUNWLE9BQVE0bEIsSUFNUCxHQUxBamhCLEVBQU1tZ0IsR0FBZXRhLEtBQU00YSxF
QUFPUSxRQUNsQzlpQixFQUFPa2pCLEVBQVdyaEIsRUFBSyxHQUN2Qm9oQixHQUFlcGhCLEVBQUss
SUFBTyxJQUFLTSxNQUFPLEtBQU0zRCxPQUd2Q3dCLEVBQU4sQ0FPQXlaLEVBQVV0ZCxFQUFPc21C
LE1BQU1oSixRQUFTelosT0FDaENBLEdBQVM1RCxFQUFXcWQsRUFBUThKLGFBQWU5SixFQUFRK0os
V0FBY3hqQixFQUNqRWdqQixFQUFXSCxFQUFRN2lCLE9BQ25CNkIsRUFBTUEsRUFBSyxJQUNWLEdB
QUkwQyxRQUFRLFVBQVkwZSxFQUFXN2EsS0FBTSxpQkFBb0IsV0FHOUR5YixFQUFZdmxCLEVBQUkw
a0IsRUFBUzlsQixNQUN6QixPQUFRb0IsSUFDUHlrQixFQUFZQyxFQUFVMWtCLElBRWZzbEIsR0FB
ZVYsSUFBYUgsRUFBVUcsVUFDekMvWixHQUFXQSxFQUFReEgsT0FBU29oQixFQUFVcGhCLE1BQ3RD
RSxJQUFPQSxFQUFJbUcsS0FBTSthLEVBQVVVLFlBQzNCcm5CLEdBQVlBLElBQWEybUIsRUFBVTNt
QixXQUN4QixPQUFiQSxJQUFxQjJtQixFQUFVM21CLFlBQ2hDNG1CLEVBQVN2a0IsT0FBUUgsRUFB
RyxHQUVmeWtCLEVBQVUzbUIsVUFDZDRtQixFQUFTVSxnQkFFTGpLLEVBQVFsQyxRQUNaa0MsRUFB
UWxDLE9BQU9qYyxLQUFNd0MsRUFBTWlsQixHQU96QmMsS0FBY2IsRUFBUzlsQixTQUNyQnVjLEVB
QVFxSyxVQUNickssRUFBUXFLLFNBQVN4b0IsS0FBTXdDLEVBQU1tbEIsRUFBWUUsRUFBU0MsV0FB
YSxHQUUvRGpuQixFQUFPNG5CLFlBQWFqbUIsRUFBTWtDLEVBQU1takIsRUFBU0MsY0FHbkNQLEdB
QVE3aUIsUUExQ2YsS0FBTUEsSUFBUTZpQixHQUNiMW1CLEVBQU9zbUIsTUFBTWxMLE9BQVF6WixF
QUFNa0MsRUFBT3NpQixFQUFPUSxHQUFLM1osRUFBUy9NLEdBQVUsRUE4Qy9ERCxHQUFPcUUsY0FB
ZXFpQixJQUMxQmxHLEVBQVNwRixPQUFRelosRUFBTSxtQkFJekJ3bEIsU0FBVSxTQUFVVSxHQUdu
QixHQUFJdkIsR0FBUXRtQixFQUFPc21CLE1BQU13QixJQUFLRCxHQUUxQmptQixFQUFHTyxFQUFH
ZCxFQUFLd1IsRUFBUytULEVBQVdtQixFQUNsQ3BpQixFQUFPLEdBQUk3QixPQUFPaEMsVUFBVWYs
UUFDNUI4bEIsR0FBYXJHLEVBQVN2ZixJQUFLOUMsS0FBTSxlQUFvQm1vQixFQUFNemlCLFVBQzNE
eVosRUFBVXRkLEVBQU9zbUIsTUFBTWhKLFFBQVNnSixFQUFNemlCLFNBS3ZDLEtBRkE4QixFQUFN
LEdBQU0yZ0IsRUFFTjFrQixFQUFJLEVBQUdBLEVBQUlFLFVBQVVmLE9BQVFhLElBQ2xDK0QsRUFB
TS9ELEdBQU1FLFVBQVdGLEVBTXhCLElBSEEwa0IsRUFBTTBCLGVBQWlCN3BCLE1BR2xCbWYsRUFB
UTJLLGFBQWUzSyxFQUFRMkssWUFBWTlvQixLQUFNaEIsS0FBTW1vQixNQUFZLEVBQXhFLENBS0F5
QixFQUFlL25CLEVBQU9zbUIsTUFBTU8sU0FBUzFuQixLQUFNaEIsS0FBTW1vQixFQUFPTyxHQUd4
RGpsQixFQUFJLENBQ0osUUFBVWlSLEVBQVVrVixFQUFjbm1CLFFBQVkwa0IsRUFBTTRCLHVCQUF5
QixDQUM1RTVCLEVBQU02QixjQUFnQnRWLEVBQVFsUixLQUU5QlEsRUFBSSxDQUNKLFFBQVV5a0Is
RUFBWS9ULEVBQVFnVSxTQUFVMWtCLFFBQ3RDbWtCLEVBQU04QixnQ0FJRDlCLEVBQU0rQixhQUFj
L0IsRUFBTStCLFdBQVd4YyxLQUFNK2EsRUFBVVUsYUFFMURoQixFQUFNTSxVQUFZQSxFQUNsQk4s
RUFBTWpHLEtBQU91RyxFQUFVdkcsS0FFdkJoZixJQUFVckIsRUFBT3NtQixNQUFNaEosUUFBU3NK
LEVBQVVHLGVBQW1CRSxRQUM1REwsRUFBVTVaLFNBQVVuTCxNQUFPZ1IsRUFBUWxSLEtBQU1nRSxH
QUU3QnhDLFNBQVI5QixJQUNHaWxCLEVBQU0xVSxPQUFTdlEsTUFBVSxJQUMvQmlsQixFQUFNZ0Ms
aUJBQ05oQyxFQUFNaUMsb0JBWVgsTUFKS2pMLEdBQVFrTCxjQUNabEwsRUFBUWtMLGFBQWFycEIs
S0FBTWhCLEtBQU1tb0IsR0FHM0JBLEVBQU0xVSxTQUdkaVYsU0FBVSxTQUFVUCxFQUFPTyxHQUMx
QixHQUFJamxCLEdBQUdnbEIsRUFBV3RXLEVBQUttWSxFQUFpQkMsRUFDdkNYLEtBQ0FSLEVBQWdC
VixFQUFTVSxjQUN6QnBhLEVBQU1tWixFQUFNeGpCLE1BR2IsSUFBS3lrQixHQUlKcGEsRUFBSXZD
LFlBT2MsVUFBZjBiLEVBQU16aUIsTUFBb0J5aUIsRUFBTW5TLFFBQVUsR0FFN0MsS0FBUWhILElB
QVFoUCxLQUFNZ1AsRUFBTUEsRUFBSXROLFlBQWMxQixLQUk3QyxHQUFzQixJQUFqQmdQLEVBQUl2
QyxXQUFvQyxVQUFmMGIsRUFBTXppQixNQUFvQnNKLEVBQUkzQyxZQUFhLEdBQVMsQ0FHakYsSUFG
QWllLEtBQ0FDLEtBQ005bUIsRUFBSSxFQUFHQSxFQUFJMmxCLEVBQWUzbEIsSUFDL0JnbEIsRUFB
WUMsRUFBVWpsQixHQUd0QjBPLEVBQU1zVyxFQUFVM21CLFNBQVcsSUFFTWtELFNBQTVCdWxCLEVB
QWtCcFksS0FDdEJvWSxFQUFrQnBZLEdBQVFzVyxFQUFVMWQsYUFDbkNsSixFQUFRc1EsRUFBS25T
LE1BQU91YixNQUFPdk0sTUFDM0JuTixFQUFPNE8sS0FBTTBCLEVBQUtuUyxLQUFNLE1BQVFnUCxJ
QUFRcE0sUUFFckMybkIsRUFBa0JwWSxJQUN0Qm1ZLEVBQWdCOXBCLEtBQU1pb0IsRUFHbkI2QixH
QUFnQjFuQixRQUNwQmduQixFQUFhcHBCLE1BQVFnRCxLQUFNd0wsRUFBSzBaLFNBQVU0QixJQVk5
QyxNQUxBdGIsR0FBTWhQLEtBQ0RvcEIsRUFBZ0JWLEVBQVM5bEIsUUFDN0JnbkIsRUFBYXBwQixN
QUFRZ0QsS0FBTXdMLEVBQUswWixTQUFVQSxFQUFTcG9CLE1BQU84b0IsS0FHcERRLEdBR1JZLFFB
QVMsU0FBVWxtQixFQUFNbW1CLEdBQ3hCcnFCLE9BQU8yaEIsZUFBZ0JsZ0IsRUFBTzZvQixNQUFN
am9CLFVBQVc2QixHQUM5Q3FtQixZQUFZLEVBQ1ozSSxjQUFjLEVBRWRsZixJQUFLakIsRUFBT2dE
LFdBQVk0bEIsR0FDdkIsV0FDQyxHQUFLenFCLEtBQUs0cUIsY0FDUixNQUFPSCxHQUFNenFCLEtB
QUs0cUIsZ0JBR3JCLFdBQ0MsR0FBSzVxQixLQUFLNHFCLGNBQ1IsTUFBTzVxQixNQUFLNHFCLGNB
QWV0bUIsSUFJL0IyZCxJQUFLLFNBQVU3YSxHQUNkaEgsT0FBTzJoQixlQUFnQi9oQixLQUFNc0Us
R0FDNUJxbUIsWUFBWSxFQUNaM0ksY0FBYyxFQUNkNkksVUFBVSxFQUNWempCLE1BQU9BLFFBTVh1
aUIsSUFBSyxTQUFVaUIsR0FDZCxNQUFPQSxHQUFlL29CLEVBQU9vRCxTQUM1QjJsQixFQUNBLEdB
QUkvb0IsR0FBTzZvQixNQUFPRSxJQUdwQnpMLFNBQ0MyTCxNQUdDQyxVQUFVLEdBRVgxVixPQUdD
MlYsUUFBUyxXQUNSLEdBQUtockIsT0FBUzZuQixNQUF1QjduQixLQUFLcVYsTUFFekMsTUFEQXJW
LE1BQUtxVixTQUNFLEdBR1Q0VCxhQUFjLFdBRWZnQyxNQUNDRCxRQUFTLFdBQ1IsR0FBS2hyQixP
QUFTNm5CLE1BQXVCN25CLEtBQUtpckIsS0FFekMsTUFEQWpyQixNQUFLaXJCLFFBQ0UsR0FHVGhD
LGFBQWMsWUFFZmlDLE9BR0NGLFFBQVMsV0FDUixHQUFtQixhQUFkaHJCLEtBQUswRixNQUF1QjFG
LEtBQUtrckIsT0FBU3JwQixFQUFPeUUsU0FBVXRHLEtBQU0sU0FFckUsTUFEQUEsTUFBS2tyQixT
QUNFLEdBS1RuRixTQUFVLFNBQVVvQyxHQUNuQixNQUFPdG1CLEdBQU95RSxTQUFVNmhCLEVBQU14
akIsT0FBUSxPQUl4Q3dtQixjQUNDZCxhQUFjLFNBQVVsQyxHQUlEbmpCLFNBQWpCbWpCLEVBQU0x
VSxRQUF3QjBVLEVBQU15QyxnQkFDeEN6QyxFQUFNeUMsY0FBY1EsWUFBY2pELEVBQU0xVSxZQU83
QzVSLEVBQU80bkIsWUFBYyxTQUFVam1CLEVBQU1rQyxFQUFNb2pCLEdBR3JDdGxCLEVBQUsyZCxx
QkFDVDNkLEVBQUsyZCxvQkFBcUJ6YixFQUFNb2pCLElBSWxDam5CLEVBQU82b0IsTUFBUSxTQUFV
bm1CLEVBQUs4bUIsR0FHN0IsTUFBUXJyQixnQkFBZ0I2QixHQUFPNm9CLE9BSzFCbm1CLEdBQU9B
LEVBQUltQixNQUNmMUYsS0FBSzRxQixjQUFnQnJtQixFQUNyQnZFLEtBQUswRixLQUFPbkIsRUFB
SW1CLEtBSWhCMUYsS0FBS3NyQixtQkFBcUIvbUIsRUFBSWduQixrQkFDSHZtQixTQUF6QlQsRUFB
SWduQixrQkFHSmhuQixFQUFJNm1CLGVBQWdCLEVBQ3JCekQsR0FDQUMsR0FLRDVuQixLQUFLMkUs
T0FBV0osRUFBSUksUUFBa0MsSUFBeEJKLEVBQUlJLE9BQU84SCxTQUN4Q2xJLEVBQUlJLE9BQU9q
RCxXQUNYNkMsRUFBSUksT0FFTDNFLEtBQUtncUIsY0FBZ0J6bEIsRUFBSXlsQixjQUN6QmhxQixL
QUFLd3JCLGNBQWdCam5CLEVBQUlpbkIsZUFJekJ4ckIsS0FBSzBGLEtBQU9uQixFQUlSOG1CLEdB
Q0p4cEIsRUFBT3VDLE9BQVFwRSxLQUFNcXJCLEdBSXRCcnJCLEtBQUt5ckIsVUFBWWxuQixHQUFP
QSxFQUFJa25CLFdBQWE1cEIsRUFBTzRGLFdBR2hEekgsS0FBTTZCLEVBQU9vRCxVQUFZLElBMUNq
QixHQUFJcEQsR0FBTzZvQixNQUFPbm1CLEVBQUs4bUIsSUErQ2hDeHBCLEVBQU82b0IsTUFBTWpv
QixXQUNaRSxZQUFhZCxFQUFPNm9CLE1BQ3BCWSxtQkFBb0IxRCxHQUNwQm1DLHFCQUFzQm5DLEdB
Q3RCcUMsOEJBQStCckMsR0FDL0I4RCxhQUFhLEVBRWJ2QixlQUFnQixXQUNmLEdBQUl6ZCxHQUFJ
MU0sS0FBSzRxQixhQUViNXFCLE1BQUtzckIsbUJBQXFCM0QsR0FFckJqYixJQUFNMU0sS0FBSzBy
QixhQUNmaGYsRUFBRXlkLGtCQUdKQyxnQkFBaUIsV0FDaEIsR0FBSTFkLEdBQUkxTSxLQUFLNHFC
LGFBRWI1cUIsTUFBSytwQixxQkFBdUJwQyxHQUV2QmpiLElBQU0xTSxLQUFLMHJCLGFBQ2ZoZixF
QUFFMGQsbUJBR0p1Qix5QkFBMEIsV0FDekIsR0FBSWpmLEdBQUkxTSxLQUFLNHFCLGFBRWI1cUIs
TUFBS2lxQiw4QkFBZ0N0QyxHQUVoQ2piLElBQU0xTSxLQUFLMHJCLGFBQ2ZoZixFQUFFaWYsMkJB
R0gzckIsS0FBS29xQixvQkFLUHZvQixFQUFPd0IsTUFDTnVvQixRQUFRLEVBQ1JDLFNBQVMsRUFD
VEMsWUFBWSxFQUNaQyxnQkFBZ0IsRUFDaEJDLFNBQVMsRUFDVEMsUUFBUSxFQUNSQyxZQUFZLEVB
Q1pDLFNBQVMsRUFDVEMsT0FBTyxFQUNQQyxPQUFPLEVBQ1BDLFVBQVUsRUFDVkMsTUFBTSxFQUNO
QyxRQUFRLEVBQ1JDLFVBQVUsRUFDVnBlLEtBQUssRUFDTHFlLFNBQVMsRUFDVDFXLFFBQVEsRUFD
UjJXLFNBQVMsRUFDVEMsU0FBUyxFQUNUQyxTQUFTLEVBQ1RDLFNBQVMsRUFDVEMsU0FBUyxFQUNU
QyxXQUFXLEVBQ1hDLGFBQWEsRUFDYkMsU0FBUyxFQUNUQyxTQUFTLEVBQ1RDLGVBQWUsRUFDZkMs
V0FBVyxFQUNYQyxTQUFTLEVBRVRDLE1BQU8sU0FBVXBGLEdBQ2hCLEdBQUluUyxHQUFTbVMsRUFB
TW5TLE1BR25CLE9BQW9CLE9BQWZtUyxFQUFNb0YsT0FBaUIvRixHQUFVOVosS0FBTXlhLEVBQU16
aUIsTUFDeEIsTUFBbEJ5aUIsRUFBTXNFLFNBQW1CdEUsRUFBTXNFLFNBQVd0RSxFQUFNdUUsU0FJ
bER2RSxFQUFNb0YsT0FBb0J2b0IsU0FBWGdSLEdBQXdCeVIsR0FBWS9aLEtBQU15YSxFQUFNemlC
LE1BQ3RELEVBQVRzUSxFQUNHLEVBR00sRUFBVEEsRUFDRyxFQUdNLEVBQVRBLEVBQ0csRUFHRCxF
QUdEbVMsRUFBTW9GLFFBRVoxckIsRUFBT3NtQixNQUFNcUMsU0FVaEIzb0IsRUFBT3dCLE1BQ05t
cUIsV0FBWSxZQUNaQyxXQUFZLFdBQ1pDLGFBQWMsY0FDZEMsYUFBYyxjQUNaLFNBQVVDLEVBQU1q
RSxHQUNsQjluQixFQUFPc21CLE1BQU1oSixRQUFTeU8sSUFDckIzRSxhQUFjVSxFQUNkVCxTQUFV
UyxFQUVWYixPQUFRLFNBQVVYLEdBQ2pCLEdBQUlqbEIsR0FDSHlCLEVBQVMzRSxLQUNUNnRCLEVB
QVUxRixFQUFNcUQsY0FDaEIvQyxFQUFZTixFQUFNTSxTQVNuQixPQUxNb0YsS0FBYUEsSUFBWWxw
QixHQUFXOUMsRUFBT2dILFNBQVVsRSxFQUFRa3BCLE1BQ2xFMUYsRUFBTXppQixLQUFPK2lCLEVB
QVVHLFNBQ3ZCMWxCLEVBQU11bEIsRUFBVTVaLFFBQVFuTCxNQUFPMUQsS0FBTTJELFdBQ3JDd2tC
LEVBQU16aUIsS0FBT2lrQixHQUVQem1CLE1BS1ZyQixFQUFPRyxHQUFHb0MsUUFFVDJqQixHQUFJ
LFNBQVVDLEVBQU9sbUIsRUFBVW9nQixFQUFNbGdCLEdBQ3BDLE1BQU8rbEIsSUFBSS9uQixLQUFN
Z29CLEVBQU9sbUIsRUFBVW9nQixFQUFNbGdCLElBRXpDaW1CLElBQUssU0FBVUQsRUFBT2xtQixF
QUFVb2dCLEVBQU1sZ0IsR0FDckMsTUFBTytsQixJQUFJL25CLEtBQU1nb0IsRUFBT2xtQixFQUFV
b2dCLEVBQU1sZ0IsRUFBSSxJQUU3Q29tQixJQUFLLFNBQVVKLEVBQU9sbUIsRUFBVUUsR0FDL0Is
R0FBSXltQixHQUFXL2lCLENBQ2YsSUFBS3NpQixHQUFTQSxFQUFNbUMsZ0JBQWtCbkMsRUFBTVMs
VUFXM0MsTUFSQUEsR0FBWVQsRUFBTVMsVUFDbEI1bUIsRUFBUW1tQixFQUFNNkIsZ0JBQWlCekIs
SUFDOUJLLEVBQVVVLFVBQ1RWLEVBQVVHLFNBQVcsSUFBTUgsRUFBVVUsVUFDckNWLEVBQVVHLFNB
Q1hILEVBQVUzbUIsU0FDVjJtQixFQUFVNVosU0FFSjdPLElBRVIsSUFBc0IsZ0JBQVZnb0IsR0FB
cUIsQ0FHaEMsSUFBTXRpQixJQUFRc2lCLEdBQ2Job0IsS0FBS29vQixJQUFLMWlCLEVBQU01RCxF
QUFVa21CLEVBQU90aUIsR0FFbEMsT0FBTzFGLE1BV1IsTUFUSzhCLE1BQWEsR0FBNkIsa0JBQWJB
LEtBR2pDRSxFQUFLRixFQUNMQSxFQUFXa0QsUUFFUGhELEtBQU8sSUFDWEEsRUFBSzRsQixJQUVD
NW5CLEtBQUtxRCxLQUFNLFdBQ2pCeEIsRUFBT3NtQixNQUFNbEwsT0FBUWpkLEtBQU1nb0IsRUFB
T2htQixFQUFJRixPQU16QyxJQUtDZ3NCLElBQVksOEZBT1pDLEdBQWUsd0JBR2ZDLEdBQVcsb0NB
Q1hDLEdBQW9CLGNBQ3BCQyxHQUFlLDBDQUVoQixTQUFTQyxJQUFvQjNxQixFQUFNNHFCLEdBQ2xD
LE1BQUt2c0IsR0FBT3lFLFNBQVU5QyxFQUFNLFVBQzNCM0IsRUFBT3lFLFNBQStCLEtBQXJCOG5C
LEVBQVEzaEIsU0FBa0IyaEIsRUFBVUEsRUFBUTNiLFdBQVksTUFFbEVqUCxFQUFLK0oscUJBQXNC
LFNBQVcsSUFBTy9KLEVBRzlDQSxFQUlSLFFBQVM2cUIsSUFBZTdxQixHQUV2QixNQURBQSxHQUFL
a0MsTUFBeUMsT0FBaENsQyxFQUFLbUssYUFBYyxTQUFzQixJQUFNbkssRUFBS2tDLEtBQzNEbEMs
RUFFUixRQUFTOHFCLElBQWU5cUIsR0FDdkIsR0FBSXVKLEdBQVFraEIsR0FBa0I3Z0IsS0FBTTVK
LEVBQUtrQyxLQVF6QyxPQU5LcUgsR0FDSnZKLEVBQUtrQyxLQUFPcUgsRUFBTyxHQUVuQnZKLEVB
QUswSyxnQkFBaUIsUUFHaEIxSyxFQUdSLFFBQVMrcUIsSUFBZ0JocUIsRUFBS2lxQixHQUM3QixH
QUFJL3FCLEdBQUc0WCxFQUFHM1YsRUFBTStvQixFQUFVQyxFQUFVQyxFQUFVQyxFQUFVckcsQ0FF
eEQsSUFBdUIsSUFBbEJpRyxFQUFLL2hCLFNBQVYsQ0FLQSxHQUFLNFYsRUFBU0QsUUFBUzdkLEtB
Q3RCa3FCLEVBQVdwTSxFQUFTZixPQUFRL2MsR0FDNUJtcUIsRUFBV3JNLEVBQVNKLElBQUt1TSxF
QUFNQyxHQUMvQmxHLEVBQVNrRyxFQUFTbEcsUUFFSixPQUNObUcsR0FBUzVGLE9BQ2hCNEYsRUFB
U25HLFNBRVQsS0FBTTdpQixJQUFRNmlCLEdBQ2IsSUFBTTlrQixFQUFJLEVBQUc0WCxFQUFJa04s
RUFBUTdpQixHQUFPOUMsT0FBUWEsRUFBSTRYLEVBQUc1WCxJQUM5QzVCLEVBQU9zbUIsTUFBTTFN
LElBQUsrUyxFQUFNOW9CLEVBQU02aUIsRUFBUTdpQixHQUFRakMsSUFPN0M2ZSxFQUFTRixRQUFT
N2QsS0FDdEJvcUIsRUFBV3JNLEVBQVNoQixPQUFRL2MsR0FDNUJxcUIsRUFBVy9zQixFQUFPdUMs
VUFBWXVxQixHQUU5QnJNLEVBQVNMLElBQUt1TSxFQUFNSSxLQUt0QixRQUFTQyxJQUFVdHFCLEVB
QUtpcUIsR0FDdkIsR0FBSWxvQixHQUFXa29CLEVBQUtsb0IsU0FBU0MsYUFHWCxXQUFiRCxHQUF3
QmdmLEdBQWU1WCxLQUFNbkosRUFBSW1CLE1BQ3JEOG9CLEVBQUs3WSxRQUFVcFIsRUFBSW9SLFFB
R0ssVUFBYnJQLEdBQXFDLGFBQWJBLElBQ25Da29CLEVBQUszVSxhQUFldFYsRUFBSXNWLGNBSTFC
LFFBQVNpVixJQUFVQyxFQUFZdm5CLEVBQU1sRSxFQUFVdWpCLEdBRzlDcmYsRUFBT2pILEVBQU9t
RCxTQUFXOEQsRUFFekIsSUFBSXVmLEdBQVVuakIsRUFBTytpQixFQUFTcUksRUFBWXBmLEVBQU14
TyxFQUMvQ3FDLEVBQUksRUFDSjRYLEVBQUkwVCxFQUFXbnNCLE9BQ2Zxc0IsRUFBVzVULEVBQUks
RUFDZmpVLEVBQVFJLEVBQU0sR0FDZDNDLEVBQWFoRCxFQUFPZ0QsV0FBWXVDLEVBR2pDLElBQUt2
QyxHQUNEd1csRUFBSSxHQUFzQixnQkFBVmpVLEtBQ2hCbkcsRUFBUW9tQixZQUFjMkcsR0FBU3Rn
QixLQUFNdEcsR0FDeEMsTUFBTzJuQixHQUFXMXJCLEtBQU0sU0FBVWtZLEdBQ2pDLEdBQUlaLEdB
QU9vVSxFQUFXbHJCLEdBQUkwWCxFQUNyQjFXLEtBQ0oyQyxFQUFNLEdBQU1KLEVBQU1wRyxLQUFN
aEIsS0FBTXViLEVBQU9aLEVBQUt1VSxTQUUzQ0osR0FBVW5VLEVBQU1uVCxFQUFNbEUsRUFBVXVq
QixJQUlsQyxJQUFLeEwsSUFDSjBMLEVBQVdMLEdBQWVsZixFQUFNdW5CLEVBQVksR0FBSTVoQixl
QUFlLEVBQU80aEIsRUFBWWxJLEdBQ2xGampCLEVBQVFtakIsRUFBU3RVLFdBRW1CLElBQS9Cc1Us
RUFBU3ZhLFdBQVc1SixTQUN4Qm1rQixFQUFXbmpCLEdBSVBBLEdBQVNpakIsR0FBVSxDQU92QixJ
QU5BRixFQUFVOWtCLEVBQU8wQixJQUFLK2lCLEdBQVFTLEVBQVUsVUFBWXNILElBQ3BEVyxFQUFh
ckksRUFBUS9qQixPQUtiYSxFQUFJNFgsRUFBRzVYLElBQ2RtTSxFQUFPbVgsRUFFRnRqQixJQUFN
d3JCLElBQ1ZyZixFQUFPL04sRUFBTzZDLE1BQU9rTCxHQUFNLEdBQU0sR0FHNUJvZixHQUlKbnRC
LEVBQU9zQixNQUFPd2pCLEVBQVNMLEdBQVExVyxFQUFNLFlBSXZDdE0sRUFBU3RDLEtBQU0rdEIs
RUFBWXRyQixHQUFLbU0sRUFBTW5NLEVBR3ZDLElBQUt1ckIsRUFPSixJQU5BNXRCLEVBQU11bEIs
RUFBU0EsRUFBUS9qQixPQUFTLEdBQUl1SyxjQUdwQ3RMLEVBQU8wQixJQUFLb2pCLEVBQVMySCxJ
QUdmN3FCLEVBQUksRUFBR0EsRUFBSXVyQixFQUFZdnJCLElBQzVCbU0sRUFBTytXLEVBQVNsakIs
R0FDWCtoQixHQUFZOVgsS0FBTWtDLEVBQUtsSyxNQUFRLE1BQ2xDMmMsRUFBU2YsT0FBUTFSLEVB
QU0sZUFDeEIvTixFQUFPZ0gsU0FBVXpILEVBQUt3TyxLQUVqQkEsRUFBS3JMLElBR0oxQyxFQUFP
c3RCLFVBQ1h0dEIsRUFBT3N0QixTQUFVdmYsRUFBS3JMLEtBR3ZCckQsRUFBUzBPLEVBQUs0QyxZ
QUFZcE4sUUFBUzhvQixHQUFjLElBQU05c0IsSUFRN0QsTUFBTzJ0QixHQUdSLFFBQVM5UixJQUFR
elosRUFBTTFCLEVBQVVzdEIsR0FLaEMsSUFKQSxHQUFJeGYsR0FDSHFYLEVBQVFubEIsRUFBV0Qs
RUFBTzBPLE9BQVF6TyxFQUFVMEIsR0FBU0EsRUFDckRDLEVBQUksRUFFNEIsT0FBdkJtTSxFQUFP
cVgsRUFBT3hqQixJQUFlQSxJQUNoQzJyQixHQUE4QixJQUFsQnhmLEVBQUtuRCxVQUN0QjVLLEVB
QU93dEIsVUFBVy9JLEdBQVExVyxJQUd0QkEsRUFBS2xPLGFBQ0owdEIsR0FBWXZ0QixFQUFPZ0gs
U0FBVStHLEVBQUt6QyxjQUFleUMsSUFDckQyVyxHQUFlRCxHQUFRMVcsRUFBTSxXQUU5QkEsRUFB
S2xPLFdBQVdDLFlBQWFpTyxHQUkvQixPQUFPcE0sR0FHUjNCLEVBQU91QyxRQUNOOGlCLGNBQWUs
U0FBVWdJLEdBQ3hCLE1BQU9BLEdBQUs5cEIsUUFBUzBvQixHQUFXLGNBR2pDcHBCLE1BQU8sU0FB
VWxCLEVBQU04ckIsRUFBZUMsR0FDckMsR0FBSTlyQixHQUFHNFgsRUFBR21VLEVBQWFDLEVBQ3RC
L3FCLEVBQVFsQixFQUFLOGpCLFdBQVcsR0FDeEJvSSxFQUFTN3RCLEVBQU9nSCxTQUFVckYsRUFB
SzJKLGNBQWUzSixFQUcvQyxNQUFNdkMsRUFBUXNtQixnQkFBc0MsSUFBbEIvakIsRUFBS2lKLFVB
QW9DLEtBQWxCakosRUFBS2lKLFVBQzNENUssRUFBT2tZLFNBQVV2VyxJQU1uQixJQUhBaXNCLEVB
QWVuSixHQUFRNWhCLEdBQ3ZCOHFCLEVBQWNsSixHQUFROWlCLEdBRWhCQyxFQUFJLEVBQUc0WCxF
QUFJbVUsRUFBWTVzQixPQUFRYSxFQUFJNFgsRUFBRzVYLElBQzNDb3JCLEdBQVVXLEVBQWEvckIs
R0FBS2dzQixFQUFjaHNCLEdBSzVDLElBQUs2ckIsRUFDSixHQUFLQyxFQUlKLElBSEFDLEVBQWNB
LEdBQWVsSixHQUFROWlCLEdBQ3JDaXNCLEVBQWVBLEdBQWdCbkosR0FBUTVoQixHQUVqQ2pCLEVB
QUksRUFBRzRYLEVBQUltVSxFQUFZNXNCLE9BQVFhLEVBQUk0WCxFQUFHNVgsSUFDM0M4cUIsR0FB
Z0JpQixFQUFhL3JCLEdBQUtnc0IsRUFBY2hzQixRQUdqRDhxQixJQUFnQi9xQixFQUFNa0IsRUFX
eEIsT0FOQStxQixHQUFlbkosR0FBUTVoQixFQUFPLFVBQ3pCK3FCLEVBQWE3c0IsT0FBUyxHQUMx
QjJqQixHQUFla0osR0FBZUMsR0FBVXBKLEdBQVE5aUIsRUFBTSxXQUloRGtCLEdBR1IycUIsVUFB
VyxTQUFVcHNCLEdBS3BCLElBSkEsR0FBSWlmLEdBQU0xZSxFQUFNa0MsRUFDZnlaLEVBQVV0ZCxF
QUFPc21CLE1BQU1oSixRQUN2QjFiLEVBQUksRUFFNkJ1QixVQUF4QnhCLEVBQU9QLEVBQU9RLElB
QXFCQSxJQUM1QyxHQUFLa2UsRUFBWW5lLEdBQVMsQ0FDekIsR0FBTzBlLEVBQU8xZSxFQUFNNmUs
RUFBU3BkLFNBQWMsQ0FDMUMsR0FBS2lkLEVBQUtxRyxPQUNULElBQU03aUIsSUFBUXdjLEdBQUtx
RyxPQUNicEosRUFBU3paLEdBQ2I3RCxFQUFPc21CLE1BQU1sTCxPQUFRelosRUFBTWtDLEdBSTNC
N0QsRUFBTzRuQixZQUFham1CLEVBQU1rQyxFQUFNd2MsRUFBSzRHLE9BT3hDdGxCLEdBQU02ZSxF
QUFTcGQsU0FBWUQsT0FFdkJ4QixFQUFNOGUsRUFBU3JkLFdBSW5CekIsRUFBTThlLEVBQVNyZCxT
QUFZRCxZQU9oQ25ELEVBQU9HLEdBQUdvQyxRQUNUdXJCLE9BQVEsU0FBVTd0QixHQUNqQixNQUFP
bWIsSUFBUWpkLEtBQU04QixHQUFVLElBR2hDbWIsT0FBUSxTQUFVbmIsR0FDakIsTUFBT21iLElB
QVFqZCxLQUFNOEIsSUFHdEJQLEtBQU0sU0FBVTZGLEdBQ2YsTUFBT2thLEdBQVF0aEIsS0FBTSxT
QUFVb0gsR0FDOUIsTUFBaUJwQyxVQUFWb0MsRUFDTnZGLEVBQU9OLEtBQU12QixNQUNiQSxLQUFL
OFYsUUFBUXpTLEtBQU0sV0FDSyxJQUFsQnJELEtBQUt5TSxVQUFvQyxLQUFsQnpNLEtBQUt5TSxV
QUFxQyxJQUFsQnpNLEtBQUt5TSxXQUN4RHpNLEtBQUt3UyxZQUFjcEwsTUFHcEIsS0FBTUEsRUFB
T3pELFVBQVVmLFNBRzNCZ3RCLE9BQVEsV0FDUCxNQUFPZCxJQUFVOXVCLEtBQU0yRCxVQUFXLFNB
QVVILEdBQzNDLEdBQXVCLElBQWxCeEQsS0FBS3lNLFVBQW9DLEtBQWxCek0sS0FBS3lNLFVBQXFD
LElBQWxCek0sS0FBS3lNLFNBQWlCLENBQ3pFLEdBQUk5SCxHQUFTd3BCLEdBQW9CbnVCLEtBQU13
RCxFQUN2Q21CLEdBQU9sRCxZQUFhK0IsT0FLdkJxc0IsUUFBUyxXQUNSLE1BQU9mLElBQVU5dUIs
S0FBTTJELFVBQVcsU0FBVUgsR0FDM0MsR0FBdUIsSUFBbEJ4RCxLQUFLeU0sVUFBb0MsS0FBbEJ6
TSxLQUFLeU0sVUFBcUMsSUFBbEJ6TSxLQUFLeU0sU0FBaUIsQ0FDekUsR0FBSTlILEdBQVN3cEIs
R0FBb0JudUIsS0FBTXdELEVBQ3ZDbUIsR0FBT21yQixhQUFjdHNCLEVBQU1tQixFQUFPOE4sZ0JB
S3JDc2QsT0FBUSxXQUNQLE1BQU9qQixJQUFVOXVCLEtBQU0yRCxVQUFXLFNBQVVILEdBQ3RDeEQs
S0FBSzBCLFlBQ1QxQixLQUFLMEIsV0FBV291QixhQUFjdHNCLEVBQU14RCxTQUt2Q2d3QixNQUFP
LFdBQ04sTUFBT2xCLElBQVU5dUIsS0FBTTJELFVBQVcsU0FBVUgsR0FDdEN4RCxLQUFLMEIsWUFD
VDFCLEtBQUswQixXQUFXb3VCLGFBQWN0c0IsRUFBTXhELEtBQUttUCxnQkFLNUMyRyxNQUFPLFdB
SU4sSUFIQSxHQUFJdFMsR0FDSEMsRUFBSSxFQUUyQixPQUF0QkQsRUFBT3hELEtBQU15RCxJQUFl
QSxJQUNkLElBQWxCRCxFQUFLaUosV0FHVDVLLEVBQU93dEIsVUFBVy9JLEdBQVE5aUIsR0FBTSxJ
QUdoQ0EsRUFBS2dQLFlBQWMsR0FJckIsT0FBT3hTLE9BR1IwRSxNQUFPLFNBQVU0cUIsRUFBZUMs
R0FJL0IsTUFIQUQsR0FBaUMsTUFBakJBLEdBQWdDQSxFQUNoREMsRUFBeUMsTUFBckJBLEVBQTRC
RCxFQUFnQkMsRUFFekR2dkIsS0FBS3VELElBQUssV0FDaEIsTUFBTzFCLEdBQU82QyxNQUFPMUUs
S0FBTXN2QixFQUFlQyxNQUk1Q0wsS0FBTSxTQUFVOW5CLEdBQ2YsTUFBT2thLEdBQVF0aEIsS0FB
TSxTQUFVb0gsR0FDOUIsR0FBSTVELEdBQU94RCxLQUFNLE9BQ2hCeUQsRUFBSSxFQUNKNFgsRUFB
SXJiLEtBQUs0QyxNQUVWLElBQWVvQyxTQUFWb0MsR0FBeUMsSUFBbEI1RCxFQUFLaUosU0FDaEMs
TUFBT2pKLEdBQUtvTixTQUliLElBQXNCLGdCQUFWeEosS0FBdUIybUIsR0FBYXJnQixLQUFNdEcs
S0FDcERxZSxJQUFXRixHQUFTblksS0FBTWhHLEtBQWEsR0FBSSxLQUFRLEdBQUliLGVBQWtCLENB
RTFFYSxFQUFRdkYsRUFBT3FsQixjQUFlOWYsRUFFOUIsS0FDQyxLQUFRM0QsRUFBSTRYLEVBQUc1
WCxJQUNkRCxFQUFPeEQsS0FBTXlELE9BR1UsSUFBbEJELEVBQUtpSixXQUNUNUssRUFBT3d0QixV
QUFXL0ksR0FBUTlpQixHQUFNLElBQ2hDQSxFQUFLb04sVUFBWXhKLEVBSW5CNUQsR0FBTyxFQUdO
LE1BQVFrSixLQUdObEosR0FDSnhELEtBQUs4VixRQUFROFosT0FBUXhvQixJQUVwQixLQUFNQSxF
QUFPekQsVUFBVWYsU0FHM0JxdEIsWUFBYSxXQUNaLEdBQUlwSixLQUdKLE9BQU9pSSxJQUFVOXVC
LEtBQU0yRCxVQUFXLFNBQVVILEdBQzNDLEdBQUkyUSxHQUFTblUsS0FBSzBCLFVBRWJHLEdBQU8r
RSxRQUFTNUcsS0FBTTZtQixHQUFZLElBQ3RDaGxCLEVBQU93dEIsVUFBVy9JLEdBQVF0bUIsT0FD
ckJtVSxHQUNKQSxFQUFPK2IsYUFBYzFzQixFQUFNeEQsUUFLM0I2bUIsTUFJTGhsQixFQUFPd0Is
TUFDTjhzQixTQUFVLFNBQ1ZDLFVBQVcsVUFDWE4sYUFBYyxTQUNkTyxZQUFhLFFBQ2JDLFdBQVks
ZUFDVixTQUFVaHNCLEVBQU1pc0IsR0FDbEIxdUIsRUFBT0csR0FBSXNDLEdBQVMsU0FBVXhDLEdB
TzdCLElBTkEsR0FBSW1CLEdBQ0hDLEtBQ0FzdEIsRUFBUzN1QixFQUFRQyxHQUNqQmdDLEVBQU8w
c0IsRUFBTzV0QixPQUFTLEVBQ3ZCYSxFQUFJLEVBRUdBLEdBQUtLLEVBQU1MLElBQ2xCUixFQUFR
USxJQUFNSyxFQUFPOUQsS0FBT0EsS0FBSzBFLE9BQU8sR0FDeEM3QyxFQUFRMnVCLEVBQVEvc0Is
SUFBTzhzQixHQUFZdHRCLEdBSW5DekMsRUFBS2tELE1BQU9SLEVBQUtELEVBQU1ILE1BR3hCLE9B
QU85QyxNQUFLZ0QsVUFBV0UsS0FHekIsSUFBSXV0QixJQUFVLFVBRVZDLEdBQVksR0FBSXptQixR
QUFRLEtBQU93WixFQUFPLGtCQUFtQixLQUV6RGtOLEdBQVksU0FBVW50QixHQUt4QixHQUFJK29C
LEdBQU8vb0IsRUFBSzJKLGNBQWM0QyxXQU05QixPQUpNd2MsSUFBU0EsRUFBS3FFLFNBQ25CckUs
RUFBT3hzQixHQUdEd3NCLEVBQUtzRSxpQkFBa0JydEIsS0FLaEMsV0FJQyxRQUFTc3RCLEtBR1Is
R0FBTTFKLEVBQU4sQ0FJQUEsRUFBSXRELE1BQU1pTixRQUNULDRHQUlEM0osRUFBSXhXLFVBQVks
R0FDaEJqQixHQUFnQmxPLFlBQWF1dkIsRUFFN0IsSUFBSUMsR0FBV2x4QixFQUFPOHdCLGlCQUFr
QnpKLEVBQ3hDOEosR0FBb0MsT0FBakJELEVBQVNqaEIsSUFHNUJtaEIsRUFBZ0QsUUFBeEJGLEVB
QVNHLFdBQ2pDQyxFQUEwQyxRQUFuQkosRUFBU0ssTUFJaENsSyxFQUFJdEQsTUFBTXlOLFlBQWMs
TUFDeEJDLEVBQStDLFFBQXpCUCxFQUFTTSxZQUUvQjVoQixHQUFnQmhPLFlBQWFxdkIsR0FJN0I1
SixFQUFNLE1BR1AsR0FBSThKLEdBQWtCRyxFQUFzQkcsRUFBcUJMLEVBQ2hFSCxFQUFZcHhCLEVB
QVMwQixjQUFlLE9BQ3BDOGxCLEVBQU14bkIsRUFBUzBCLGNBQWUsTUFHekI4bEIsR0FBSXRELFFB
TVZzRCxFQUFJdEQsTUFBTTJOLGVBQWlCLGNBQzNCckssRUFBSUUsV0FBVyxHQUFPeEQsTUFBTTJO
LGVBQWlCLEdBQzdDeHdCLEVBQVF5d0IsZ0JBQStDLGdCQUE3QnRLLEVBQUl0RCxNQUFNMk4sZUFF
cENULEVBQVVsTixNQUFNaU4sUUFBVSw0RkFFMUJDLEVBQVV2dkIsWUFBYTJsQixHQUV2QnZsQixF
QUFPdUMsT0FBUW5ELEdBQ2Qwd0IsY0FBZSxXQUVkLE1BREFiLEtBQ09JLEdBRVJVLGtCQUFtQixX
QUVsQixNQURBZCxLQUNPTyxHQUVSUSxpQkFBa0IsV0FFakIsTUFEQWYsS0FDT1UsR0FFUk0sbUJB
QW9CLFdBRW5CLE1BREFoQixLQUNPSyxRQU1WLFNBQVNZLElBQVF2dUIsRUFBTWMsRUFBTTB0QixH
QUM1QixHQUFJVixHQUFPVyxFQUFVQyxFQUFVaHZCLEVBQzlCNGdCLEVBQVF0Z0IsRUFBS3NnQixL
QW9DZCxPQWxDQWtPLEdBQVdBLEdBQVlyQixHQUFXbnRCLEdBSTdCd3VCLElBQ0o5dUIsRUFBTTh1
QixFQUFTRyxpQkFBa0I3dEIsSUFBVTB0QixFQUFVMXRCLEdBRXhDLEtBQVJwQixHQUFlckIsRUFB
T2dILFNBQVVyRixFQUFLMkosY0FBZTNKLEtBQ3hETixFQUFNckIsRUFBT2lpQixNQUFPdGdCLEVB
QU1jLEtBUXJCckQsRUFBUTR3QixvQkFBc0JuQixHQUFVaGpCLEtBQU14SyxJQUFTdXRCLEdBQVEv
aUIsS0FBTXBKLEtBRzFFZ3RCLEVBQVF4TixFQUFNd04sTUFDZFcsRUFBV25PLEVBQU1tTyxTQUNq
QkMsRUFBV3BPLEVBQU1vTyxTQUdqQnBPLEVBQU1tTyxTQUFXbk8sRUFBTW9PLFNBQVdwTyxFQUFN
d04sTUFBUXB1QixFQUNoREEsRUFBTTh1QixFQUFTVixNQUdmeE4sRUFBTXdOLE1BQVFBLEVBQ2R4
TixFQUFNbU8sU0FBV0EsRUFDakJuTyxFQUFNb08sU0FBV0EsSUFJSmx0QixTQUFSOUIsRUFJTkEs
RUFBTSxHQUNOQSxFQUlGLFFBQVNrdkIsSUFBY0MsRUFBYUMsR0FHbkMsT0FDQ3h2QixJQUFLLFdB
Q0osTUFBS3V2QixnQkFJR3J5QixNQUFLOEMsS0FLSjlDLEtBQUs4QyxJQUFNd3ZCLEdBQVM1dUIs
TUFBTzFELEtBQU0yRCxhQU03QyxHQUtDNHVCLElBQWUsNEJBQ2ZDLElBQVlDLFNBQVUsV0FBWUMs
V0FBWSxTQUFVM08sUUFBUyxTQUNqRTRPLElBQ0NDLGNBQWUsSUFDZkMsV0FBWSxPQUdiQyxJQUFn
QixTQUFVLE1BQU8sTUFDakNDLEdBQWFuekIsRUFBUzBCLGNBQWUsT0FBUXdpQixLQUc5QyxTQUFT
a1AsSUFBZ0IxdUIsR0FHeEIsR0FBS0EsSUFBUXl1QixJQUNaLE1BQU96dUIsRUFJUixJQUFJMnVC
LEdBQVUzdUIsRUFBTSxHQUFJOUIsY0FBZ0I4QixFQUFLaEUsTUFBTyxHQUNuRG1ELEVBQUlxdkIs
R0FBWWx3QixNQUVqQixPQUFRYSxJQUVQLEdBREFhLEVBQU93dUIsR0FBYXJ2QixHQUFNd3ZCLEVB
Q3JCM3VCLElBQVF5dUIsSUFDWixNQUFPenVCLEdBS1YsUUFBUzR1QixJQUFtQjF2QixFQUFNNEQs
RUFBTytyQixHQUl4QyxHQUFJbHNCLEdBQVUwYyxHQUFRdlcsS0FBTWhHLEVBQzVCLE9BQU9ILEdB
R04vQixLQUFLa3VCLElBQUssRUFBR25zQixFQUFTLElBQVFrc0IsR0FBWSxLQUFVbHNCLEVBQVMs
SUFBTyxNQUNwRUcsRUFHRixRQUFTaXNCLElBQXNCN3ZCLEVBQU1jLEVBQU1ndkIsRUFBT0MsRUFB
YUMsR0FDOUQsR0FBSS92QixHQUNIdU8sRUFBTSxDQVdQLEtBUEN2TyxFQURJNnZCLEtBQVlDLEVB
QWMsU0FBVyxXQUNyQyxFQUlTLFVBQVRqdkIsRUFBbUIsRUFBSSxFQUdwQmIsRUFBSSxFQUFHQSxH
QUFLLEVBR0osV0FBVjZ2QixJQUNKdGhCLEdBQU9uUSxFQUFPbWlCLElBQUt4Z0IsRUFBTTh2QixF
QUFRMVAsR0FBV25nQixJQUFLLEVBQU0rdkIsSUFHbkRELEdBR1csWUFBVkQsSUFDSnRoQixHQUFP
blEsRUFBT21pQixJQUFLeGdCLEVBQU0sVUFBWW9nQixHQUFXbmdCLElBQUssRUFBTSt2QixJQUk3
QyxXQUFWRixJQUNKdGhCLEdBQU9uUSxFQUFPbWlCLElBQUt4Z0IsRUFBTSxTQUFXb2dCLEdBQVdu
Z0IsR0FBTSxTQUFTLEVBQU0rdkIsTUFLckV4aEIsR0FBT25RLEVBQU9taUIsSUFBS3hnQixFQUFN
LFVBQVlvZ0IsR0FBV25nQixJQUFLLEVBQU0rdkIsR0FHNUMsWUFBVkYsSUFDSnRoQixHQUFPblEs
RUFBT21pQixJQUFLeGdCLEVBQU0sU0FBV29nQixHQUFXbmdCLEdBQU0sU0FBUyxFQUFNK3ZCLElB
S3ZFLE9BQU94aEIsR0FHUixRQUFTeWhCLElBQWtCandCLEVBQU1jLEVBQU1ndkIsR0FHdEMsR0FB
SXRoQixHQUNIMGhCLEdBQW1CLEVBQ25CRixFQUFTN0MsR0FBV250QixHQUNwQit2QixFQUFpRSxl
QUFuRDF4QixFQUFPbWlCLElBQUt4Z0IsRUFBTSxhQUFhLEVBQU9nd0IsRUFZckQsSUFQS2h3QixF
QUFLbXdCLGlCQUFpQi93QixTQUMxQm9QLEVBQU14TyxFQUFLb3dCLHdCQUF5QnR2QixJQU1oQzBO
LEdBQU8sR0FBWSxNQUFQQSxFQUFjLENBUzlCLEdBTkFBLEVBQU0rZixHQUFRdnVCLEVBQU1jLEVB
QU1rdkIsSUFDckJ4aEIsRUFBTSxHQUFZLE1BQVBBLEtBQ2ZBLEVBQU14TyxFQUFLc2dCLE1BQU94
ZixJQUlkb3NCLEdBQVVoakIsS0FBTXNFLEdBQ3BCLE1BQU9BLEVBS1IwaEIsR0FBbUJILElBQ2hC
dHlCLEVBQVEyd0IscUJBQXVCNWYsSUFBUXhPLEVBQUtzZ0IsTUFBT3hmLElBR3REME4sRUFBTWpN
LFdBQVlpTSxJQUFTLEVBSTVCLE1BQVNBLEdBQ1JxaEIsR0FDQzd2QixFQUNBYyxFQUNBZ3ZCLElB
QVdDLEVBQWMsU0FBVyxXQUNwQ0csRUFDQUYsR0FFRSxLQUdMM3hCLEVBQU91QyxRQUlOeXZCLFVB
Q0NDLFNBQ0NoeEIsSUFBSyxTQUFVVSxFQUFNd3VCLEdBQ3BCLEdBQUtBLEVBQVcsQ0FHZixHQUFJ
OXVCLEdBQU02dUIsR0FBUXZ1QixFQUFNLFVBQ3hCLE9BQWUsS0FBUk4sRUFBYSxJQUFNQSxNQU85
QjBoQixXQUNDbVAseUJBQTJCLEVBQzNCQyxhQUFlLEVBQ2ZDLGFBQWUsRUFDZkMsVUFBWSxFQUNa
QyxZQUFjLEVBQ2R0QixZQUFjLEVBQ2R1QixZQUFjLEVBQ2ROLFNBQVcsRUFDWE8sT0FBUyxFQUNU
QyxTQUFXLEVBQ1hDLFFBQVUsRUFDVkMsUUFBVSxFQUNWQyxNQUFRLEdBS1RDLFVBQ0NDLFFBQVMs
WUFJVjdRLE1BQU8sU0FBVXRnQixFQUFNYyxFQUFNOEMsRUFBT2tzQixHQUduQyxHQUFNOXZCLEdB
QTBCLElBQWxCQSxFQUFLaUosVUFBb0MsSUFBbEJqSixFQUFLaUosVUFBbUJqSixFQUFLc2dCLE1B
QWxFLENBS0EsR0FBSTVnQixHQUFLd0MsRUFBTXdkLEVBQ2QwUixFQUFXL3lCLEVBQU91RSxVQUFX
OUIsR0FDN0J3ZixFQUFRdGdCLEVBQUtzZ0IsS0FTZCxPQVBBeGYsR0FBT3pDLEVBQU82eUIsU0FB
VUUsS0FDckIveUIsRUFBTzZ5QixTQUFVRSxHQUFhNUIsR0FBZ0I0QixJQUFjQSxHQUcvRDFSLEVB
QVFyaEIsRUFBT2d5QixTQUFVdnZCLElBQVV6QyxFQUFPZ3lCLFNBQVVlLEdBR3JDNXZCLFNBQVZv
QyxFQW9DQzhiLEdBQVMsT0FBU0EsSUFDd0JsZSxVQUE1QzlCLEVBQU1nZ0IsRUFBTXBnQixJQUFL
VSxHQUFNLEVBQU84dkIsSUFFekJwd0IsRUFJRDRnQixFQUFPeGYsSUExQ2RvQixRQUFjMEIsR0FH
QSxXQUFUMUIsSUFBdUJ4QyxFQUFNeWdCLEdBQVF2VyxLQUFNaEcsS0FBYWxFLEVBQUssS0FDakVr
RSxFQUFRK2MsR0FBVzNnQixFQUFNYyxFQUFNcEIsR0FHL0J3QyxFQUFPLFVBSU0sTUFBVDBCLEdB
QWlCQSxJQUFVQSxJQUtsQixXQUFUMUIsSUFDSjBCLEdBQVNsRSxHQUFPQSxFQUFLLEtBQVNyQixF
QUFPK2lCLFVBQVdnUSxHQUFhLEdBQUssT0FJN0QzekIsRUFBUXl3QixpQkFBNkIsS0FBVnRxQixH
QUFpRCxJQUFqQzlDLEVBQUs3RCxRQUFTLGdCQUM5RHFqQixFQUFPeGYsR0FBUyxXQUlYNGUsR0FB
WSxPQUFTQSxJQUNzQmxlLFVBQTlDb0MsRUFBUThiLEVBQU1qQixJQUFLemUsRUFBTTRELEVBQU9r
c0IsTUFFbEN4UCxFQUFPeGYsR0FBUzhDLElBbEJqQixVQW1DRjRjLElBQUssU0FBVXhnQixFQUFN
YyxFQUFNZ3ZCLEVBQU9FLEdBQ2pDLEdBQUl4aEIsR0FBS2pQLEVBQUttZ0IsRUFDYjBSLEVBQVcv
eUIsRUFBT3VFLFVBQVc5QixFQXlCOUIsT0F0QkFBLEdBQU96QyxFQUFPNnlCLFNBQVVFLEtBQ3JC
L3lCLEVBQU82eUIsU0FBVUUsR0FBYTVCLEdBQWdCNEIsSUFBY0EsR0FHL0QxUixFQUFRcmhCLEVB
QU9neUIsU0FBVXZ2QixJQUFVekMsRUFBT2d5QixTQUFVZSxHQUcvQzFSLEdBQVMsT0FBU0EsS0FD
dEJsUixFQUFNa1IsRUFBTXBnQixJQUFLVSxHQUFNLEVBQU04dkIsSUFJakJ0dUIsU0FBUmdOLElB
Q0pBLEVBQU0rZixHQUFRdnVCLEVBQU1jLEVBQU1rdkIsSUFJZCxXQUFSeGhCLEdBQW9CMU4sSUFB
UXF1QixNQUNoQzNnQixFQUFNMmdCLEdBQW9CcnVCLElBSVosS0FBVmd2QixHQUFnQkEsR0FDcEJ2
d0IsRUFBTWdELFdBQVlpTSxHQUNYc2hCLEtBQVUsR0FBUXVCLFNBQVU5eEIsR0FBUUEsR0FBTyxF
QUFJaVAsR0FFaERBLEtBSVRuUSxFQUFPd0IsTUFBUSxTQUFVLFNBQVcsU0FBVUksRUFBR2EsR0FD
aER6QyxFQUFPZ3lCLFNBQVV2dkIsSUFDaEJ4QixJQUFLLFNBQVVVLEVBQU13dUIsRUFBVXNCLEdB
QzlCLEdBQUt0QixFQUlKLE9BQU9PLEdBQWE3a0IsS0FBTTdMLEVBQU9taUIsSUFBS3hnQixFQUFN
LGFBUXhDQSxFQUFLbXdCLGlCQUFpQi93QixRQUFXWSxFQUFLb3dCLHdCQUF3QnRDLE1BSWhFbUMs
R0FBa0Jqd0IsRUFBTWMsRUFBTWd2QixHQUg5QnJQLEdBQU16Z0IsRUFBTWd2QixHQUFTLFdBQ3BC
LE1BQU9pQixJQUFrQmp3QixFQUFNYyxFQUFNZ3ZCLE1BTTFDclIsSUFBSyxTQUFVemUsRUFBTTRE
LEVBQU9rc0IsR0FDM0IsR0FBSXJzQixHQUNIdXNCLEVBQVNGLEdBQVMzQyxHQUFXbnRCLEdBQzdC
MnZCLEVBQVdHLEdBQVNELEdBQ25CN3ZCLEVBQ0FjLEVBQ0FndkIsRUFDbUQsZUFBbkR6eEIsRUFB
T21pQixJQUFLeGdCLEVBQU0sYUFBYSxFQUFPZ3dCLEdBQ3RDQSxFQVdGLE9BUEtMLEtBQWNsc0Is
RUFBVTBjLEdBQVF2VyxLQUFNaEcsS0FDYixRQUEzQkgsRUFBUyxJQUFPLFFBRWxCekQsRUFBS3Nn
QixNQUFPeGYsR0FBUzhDLEVBQ3JCQSxFQUFRdkYsRUFBT21pQixJQUFLeGdCLEVBQU1jLElBR3BC
NHVCLEdBQW1CMXZCLEVBQU00RCxFQUFPK3JCLE9BSzFDdHhCLEVBQU9neUIsU0FBU3pDLFdBQWFn
QixHQUFjbnhCLEVBQVE2d0IsbUJBQ2xELFNBQVV0dUIsRUFBTXd1QixHQUNmLEdBQUtBLEVBQ0os
T0FBU2pzQixXQUFZZ3NCLEdBQVF2dUIsRUFBTSxnQkFDbENBLEVBQUtvd0Isd0JBQXdCa0IsS0FD
NUI3USxHQUFNemdCLEdBQVE0dEIsV0FBWSxHQUFLLFdBQzlCLE1BQU81dEIsR0FBS293Qix3QkFB
d0JrQixRQUVsQyxPQU1SanpCLEVBQU93QixNQUNOMHhCLE9BQVEsR0FDUkMsUUFBUyxHQUNUQyxP
QUFRLFNBQ04sU0FBVUMsRUFBUUMsR0FDcEJ0ekIsRUFBT2d5QixTQUFVcUIsRUFBU0MsSUFDekJD
LE9BQVEsU0FBVWh1QixHQU9qQixJQU5BLEdBQUkzRCxHQUFJLEVBQ1A0eEIsS0FHQUMsRUFBeUIs
Z0JBQVZsdUIsR0FBcUJBLEVBQU1TLE1BQU8sTUFBVVQsR0FFcEQzRCxFQUFJLEVBQUdBLElBQ2Q0
eEIsRUFBVUgsRUFBU3RSLEdBQVduZ0IsR0FBTTB4QixHQUNuQ0csRUFBTzd4QixJQUFPNnhCLEVB
QU83eEIsRUFBSSxJQUFPNnhCLEVBQU8sRUFHekMsT0FBT0QsS0FJSDVFLEdBQVEvaUIsS0FBTXdu
QixLQUNuQnJ6QixFQUFPZ3lCLFNBQVVxQixFQUFTQyxHQUFTbFQsSUFBTWlSLE1BSTNDcnhCLEVB
QU9HLEdBQUdvQyxRQUNUNGYsSUFBSyxTQUFVMWYsRUFBTThDLEdBQ3BCLE1BQU9rYSxHQUFRdGhC
LEtBQU0sU0FBVXdELEVBQU1jLEVBQU04QyxHQUMxQyxHQUFJb3NCLEdBQVF6dkIsRUFDWFIsS0FD
QUUsRUFBSSxDQUVMLElBQUs1QixFQUFPa0QsUUFBU1QsR0FBUyxDQUk3QixJQUhBa3ZCLEVBQVM3
QyxHQUFXbnRCLEdBQ3BCTyxFQUFNTyxFQUFLMUIsT0FFSGEsRUFBSU0sRUFBS04sSUFDaEJGLEVB
QUtlLEVBQU1iLElBQVE1QixFQUFPbWlCLElBQUt4Z0IsRUFBTWMsRUFBTWIsSUFBSyxFQUFPK3ZC
LEVBR3hELE9BQU9qd0IsR0FHUixNQUFpQnlCLFVBQVZvQyxFQUNOdkYsRUFBT2lpQixNQUFPdGdC
LEVBQU1jLEVBQU04QyxHQUMxQnZGLEVBQU9taUIsSUFBS3hnQixFQUFNYyxJQUNqQkEsRUFBTThD
LEVBQU96RCxVQUFVZixPQUFTLEtBS3JDLFNBQVMyeUIsSUFBTy94QixFQUFNYSxFQUFTOGQsRUFB
TWxlLEVBQUt1eEIsR0FDekMsTUFBTyxJQUFJRCxJQUFNOXlCLFVBQVVSLEtBQU11QixFQUFNYSxF
QUFTOGQsRUFBTWxlLEVBQUt1eEIsR0FFNUQzekIsRUFBTzB6QixNQUFRQSxHQUVmQSxHQUFNOXlC
LFdBQ0xFLFlBQWE0eUIsR0FDYnR6QixLQUFNLFNBQVV1QixFQUFNYSxFQUFTOGQsRUFBTWxlLEVB
QUt1eEIsRUFBUTdRLEdBQ2pEM2tCLEtBQUt3RCxLQUFPQSxFQUNaeEQsS0FBS21pQixLQUFPQSxF
QUNabmlCLEtBQUt3MUIsT0FBU0EsR0FBVTN6QixFQUFPMnpCLE9BQU96UCxTQUN0Qy9sQixLQUFL
cUUsUUFBVUEsRUFDZnJFLEtBQUtrVSxNQUFRbFUsS0FBS3lILElBQU16SCxLQUFLZ1AsTUFDN0Jo
UCxLQUFLaUUsSUFBTUEsRUFDWGpFLEtBQUsya0IsS0FBT0EsSUFBVTlpQixFQUFPK2lCLFVBQVd6
QyxHQUFTLEdBQUssT0FFdkRuVCxJQUFLLFdBQ0osR0FBSWtVLEdBQVFxUyxHQUFNRSxVQUFXejFC
LEtBQUttaUIsS0FFbEMsT0FBT2UsSUFBU0EsRUFBTXBnQixJQUNyQm9nQixFQUFNcGdCLElBQUs5
QyxNQUNYdTFCLEdBQU1FLFVBQVUxUCxTQUFTampCLElBQUs5QyxPQUVoQzAxQixJQUFLLFNBQVVD
LEdBQ2QsR0FBSUMsR0FDSDFTLEVBQVFxUyxHQUFNRSxVQUFXejFCLEtBQUttaUIsS0FvQi9CLE9B
bEJLbmlCLE1BQUtxRSxRQUFRd3hCLFNBQ2pCNzFCLEtBQUs4MUIsSUFBTUYsRUFBUS96QixFQUFP
MnpCLE9BQVF4MUIsS0FBS3cxQixRQUN0Q0csRUFBUzMxQixLQUFLcUUsUUFBUXd4QixTQUFXRixF
QUFTLEVBQUcsRUFBRzMxQixLQUFLcUUsUUFBUXd4QixVQUc5RDcxQixLQUFLODFCLElBQU1GLEVB
QVFELEVBRXBCMzFCLEtBQUt5SCxLQUFRekgsS0FBS2lFLElBQU1qRSxLQUFLa1UsT0FBVTBoQixF
QUFRNTFCLEtBQUtrVSxNQUUvQ2xVLEtBQUtxRSxRQUFRMHhCLE1BQ2pCLzFCLEtBQUtxRSxRQUFR
MHhCLEtBQUsvMEIsS0FBTWhCLEtBQUt3RCxLQUFNeEQsS0FBS3lILElBQUt6SCxNQUd6Q2tqQixH
QUFTQSxFQUFNakIsSUFDbkJpQixFQUFNakIsSUFBS2ppQixNQUVYdTFCLEdBQU1FLFVBQVUxUCxT
QUFTOUQsSUFBS2ppQixNQUV4QkEsT0FJVHUxQixHQUFNOXlCLFVBQVVSLEtBQUtRLFVBQVk4eUIs
R0FBTTl5QixVQUV2Qzh5QixHQUFNRSxXQUNMMVAsVUFDQ2pqQixJQUFLLFNBQVV1aEIsR0FDZCxH
QUFJNVEsRUFJSixPQUE2QixLQUF4QjRRLEVBQU03Z0IsS0FBS2lKLFVBQ2EsTUFBNUI0WCxFQUFN
N2dCLEtBQU02Z0IsRUFBTWxDLE9BQW9ELE1BQWxDa0MsRUFBTTdnQixLQUFLc2dCLE1BQU9PLEVB
QU1sQyxNQUNyRGtDLEVBQU03Z0IsS0FBTTZnQixFQUFNbEMsT0FPMUIxTyxFQUFTNVIsRUFBT21p
QixJQUFLSyxFQUFNN2dCLEtBQU02Z0IsRUFBTWxDLEtBQU0sSUFHckMxTyxHQUFxQixTQUFYQSxF
QUF3QkEsRUFBSixJQUV2Q3dPLElBQUssU0FBVW9DLEdBS1R4aUIsRUFBT20wQixHQUFHRCxLQUFN
MVIsRUFBTWxDLE1BQzFCdGdCLEVBQU9tMEIsR0FBR0QsS0FBTTFSLEVBQU1sQyxNQUFRa0MsR0FD
SyxJQUF4QkEsRUFBTTdnQixLQUFLaUosVUFDaUMsTUFBckQ0WCxFQUFNN2dCLEtBQUtzZ0IsTUFB
T2ppQixFQUFPNnlCLFNBQVVyUSxFQUFNbEMsU0FDMUN0Z0IsRUFBT2d5QixTQUFVeFAsRUFBTWxD
LE1BR3hCa0MsRUFBTTdnQixLQUFNNmdCLEVBQU1sQyxNQUFTa0MsRUFBTTVjLElBRmpDNUYsRUFB
T2lpQixNQUFPTyxFQUFNN2dCLEtBQU02Z0IsRUFBTWxDLEtBQU1rQyxFQUFNNWMsSUFBTTRjLEVB
QU1NLFNBVTVENFEsR0FBTUUsVUFBVVEsVUFBWVYsR0FBTUUsVUFBVVMsWUFDM0NqVSxJQUFLLFNB
QVVvQyxHQUNUQSxFQUFNN2dCLEtBQUtpSixVQUFZNFgsRUFBTTdnQixLQUFLOUIsYUFDdEMyaUIs
RUFBTTdnQixLQUFNNmdCLEVBQU1sQyxNQUFTa0MsRUFBTTVjLE9BS3BDNUYsRUFBTzJ6QixRQUNO
VyxPQUFRLFNBQVVDLEdBQ2pCLE1BQU9BLElBRVJDLE1BQU8sU0FBVUQsR0FDaEIsTUFBTyxHQUFN
bHhCLEtBQUtveEIsSUFBS0YsRUFBSWx4QixLQUFLcXhCLElBQU8sR0FFeEN4USxTQUFVLFNBR1hs
a0IsRUFBT20wQixHQUFLVCxHQUFNOXlCLFVBQVVSLEtBRzVCSixFQUFPbTBCLEdBQUdELE9BS1Ys
SUFDQ1MsSUFBT0MsR0FDUEMsR0FBVyx5QkFDWEMsR0FBTyxhQUVSLFNBQVNDLE1BQ0hILEtBQ0ox
MkIsRUFBTzgyQixzQkFBdUJELElBQzlCLzBCLEVBQU9tMEIsR0FBR2MsUUFLWixRQUFTQyxNQUlS
LE1BSEFoM0IsR0FBTytmLFdBQVksV0FDbEIwVyxHQUFReHhCLFNBRUF3eEIsR0FBUTMwQixFQUFP
NEYsTUFJekIsUUFBU3V2QixJQUFPdHhCLEVBQU11eEIsR0FDckIsR0FBSTFKLEdBQ0g5cEIsRUFB
SSxFQUNKbUwsR0FBVXNvQixPQUFReHhCLEVBS25CLEtBREF1eEIsRUFBZUEsRUFBZSxFQUFJLEVB
QzFCeHpCLEVBQUksRUFBR0EsR0FBSyxFQUFJd3pCLEVBQ3ZCMUosRUFBUTNKLEdBQVduZ0IsR0FD
bkJtTCxFQUFPLFNBQVcyZSxHQUFVM2UsRUFBTyxVQUFZMmUsR0FBVTduQixDQU8xRCxPQUpLdXhC
LEtBQ0pyb0IsRUFBTWtsQixRQUFVbGxCLEVBQU0waUIsTUFBUTVyQixHQUd4QmtKLEVBR1IsUUFB
U3VvQixJQUFhL3ZCLEVBQU8rYSxFQUFNaVYsR0FLbEMsSUFKQSxHQUFJL1MsR0FDSDBLLEdBQWVz
SSxHQUFVQyxTQUFVblYsUUFBZTVoQixPQUFRODJCLEdBQVVDLFNBQVUsTUFDOUUvYixFQUFRLEVB
Q1IzWSxFQUFTbXNCLEVBQVduc0IsT0FDYjJZLEVBQVEzWSxFQUFRMlksSUFDdkIsR0FBTzhJLEVB
QVEwSyxFQUFZeFQsR0FBUXZhLEtBQU1vMkIsRUFBV2pWLEVBQU0vYSxHQUd6RCxNQUFPaWQsR0FL
VixRQUFTa1QsSUFBa0IvekIsRUFBTTZuQixFQUFPbU0sR0FDdkMsR0FBSXJWLEdBQU0vYSxFQUFP
aWUsRUFBUW5DLEVBQU91VSxFQUFTQyxFQUFXQyxFQUFnQjVULEVBQ25FNlQsRUFBUSxTQUFXdk0s
SUFBUyxVQUFZQSxHQUN4Q3dNLEVBQU83M0IsS0FDUDR0QixLQUNBOUosRUFBUXRnQixFQUFLc2dC
LE1BQ2JnVSxFQUFTdDBCLEVBQUtpSixVQUFZb1gsR0FBb0JyZ0IsR0FDOUN1MEIsRUFBVzFWLEVB
QVN2ZixJQUFLVSxFQUFNLFNBRzFCZzBCLEdBQUs1YSxRQUNWc0csRUFBUXJoQixFQUFPc2hCLFlB
QWEzZixFQUFNLE1BQ1gsTUFBbEIwZixFQUFNOFUsV0FDVjlVLEVBQU04VSxTQUFXLEVBQ2pCUCxF
QUFVdlUsRUFBTXBOLE1BQU1nSCxLQUN0Qm9HLEVBQU1wTixNQUFNZ0gsS0FBTyxXQUNab0csRUFB
TThVLFVBQ1hQLE1BSUh2VSxFQUFNOFUsV0FFTkgsRUFBS3paLE9BQVEsV0FHWnlaLEVBQUt6WixP
QUFRLFdBQ1o4RSxFQUFNOFUsV0FDQW4yQixFQUFPK2EsTUFBT3BaLEVBQU0sTUFBT1osUUFDaENz
Z0IsRUFBTXBOLE1BQU1nSCxXQU9oQixLQUFNcUYsSUFBUWtKLEdBRWIsR0FEQWprQixFQUFRaWtC
LEVBQU9sSixHQUNWdVUsR0FBU2hwQixLQUFNdEcsR0FBVSxDQUc3QixTQUZPaWtCLEdBQU9sSixH
QUNka0QsRUFBU0EsR0FBb0IsV0FBVmplLEVBQ2RBLEtBQVkwd0IsRUFBUyxPQUFTLFFBQVcsQ0FJ
N0MsR0FBZSxTQUFWMXdCLElBQW9CMndCLEdBQWlDL3lCLFNBQXJCK3lCLEVBQVU1VixHQUs5QyxR
QUpBMlYsSUFBUyxFQU9YbEssRUFBTXpMLEdBQVM0VixHQUFZQSxFQUFVNVYsSUFBVXRnQixFQUFP
aWlCLE1BQU90Z0IsRUFBTTJlLEdBTXJFLEdBREF1VixHQUFhNzFCLEVBQU9xRSxjQUFlbWxCLEdB
QzdCcU0sSUFBYTcxQixFQUFPcUUsY0FBZTBuQixHQUF6QyxDQUtLZ0ssR0FBMkIsSUFBbEJwMEIs
RUFBS2lKLFdBS2xCK3FCLEVBQUtTLFVBQWFuVSxFQUFNbVUsU0FBVW5VLEVBQU1vVSxVQUFXcFUs
RUFBTXFVLFdBR3pEUixFQUFpQkksR0FBWUEsRUFBU2hVLFFBQ2YsTUFBbEI0VCxJQUNKQSxFQUFp
QnRWLEVBQVN2ZixJQUFLVSxFQUFNLFlBRXRDdWdCLEVBQVVsaUIsRUFBT21pQixJQUFLeGdCLEVB
QU0sV0FDWCxTQUFadWdCLElBQ0M0VCxFQUNKNVQsRUFBVTRULEdBSVYxUyxJQUFZemhCLElBQVEs
R0FDcEJtMEIsRUFBaUJuMEIsRUFBS3NnQixNQUFNQyxTQUFXNFQsRUFDdkM1VCxFQUFVbGlCLEVB
QU9taUIsSUFBS3hnQixFQUFNLFdBQzVCeWhCLElBQVl6aEIsT0FLRyxXQUFadWdCLEdBQW9DLGlC
QUFaQSxHQUFnRCxNQUFsQjRULElBQ3JCLFNBQWhDOTFCLEVBQU9taUIsSUFBS3hnQixFQUFNLFdB
R2hCazBCLElBQ0xHLEVBQUs3dUIsS0FBTSxXQUNWOGEsRUFBTUMsUUFBVTRULElBRU0sTUFBbEJB
LElBQ0o1VCxFQUFVRCxFQUFNQyxRQUNoQjRULEVBQTZCLFNBQVo1VCxFQUFxQixHQUFLQSxJQUc3
Q0QsRUFBTUMsUUFBVSxpQkFLZHlULEVBQUtTLFdBQ1RuVSxFQUFNbVUsU0FBVyxTQUNqQkosRUFB
S3paLE9BQVEsV0FDWjBGLEVBQU1tVSxTQUFXVCxFQUFLUyxTQUFVLEdBQ2hDblUsRUFBTW9VLFVB
QVlWLEVBQUtTLFNBQVUsR0FDakNuVSxFQUFNcVUsVUFBWVgsRUFBS1MsU0FBVSxNQUtuQ1AsR0FB
WSxDQUNaLEtBQU12VixJQUFReUwsR0FHUDhKLElBQ0FLLEVBQ0MsVUFBWUEsS0FDaEJELEVBQVND
LEVBQVNELFFBR25CQyxFQUFXMVYsRUFBU2YsT0FBUTlkLEVBQU0sVUFBWXVnQixRQUFTNFQsSUFJ
bkR0UyxJQUNKMFMsRUFBU0QsUUFBVUEsR0FJZkEsR0FDSjdTLElBQVl6aEIsSUFBUSxHQUtyQnEw
QixFQUFLN3VCLEtBQU0sV0FLSjh1QixHQUNMN1MsSUFBWXpoQixJQUViNmUsRUFBU3BGLE9BQVF6
WixFQUFNLFNBQ3ZCLEtBQU0yZSxJQUFReUwsR0FDYi9yQixFQUFPaWlCLE1BQU90Z0IsRUFBTTJl
LEVBQU15TCxFQUFNekwsT0FNbkN1VixFQUFZUCxHQUFhVyxFQUFTQyxFQUFVNVYsR0FBUyxFQUFH
QSxFQUFNMFYsR0FDdEQxVixJQUFRNFYsS0FDZkEsRUFBVTVWLEdBQVN1VixFQUFVeGpCLE1BQ3hC
NGpCLElBQ0pKLEVBQVV6ekIsSUFBTXl6QixFQUFVeGpCLE1BQzFCd2pCLEVBQVV4akIsTUFBUSxL
QU10QixRQUFTa2tCLElBQVkvTSxFQUFPZ04sR0FDM0IsR0FBSTljLEdBQU9qWCxFQUFNa3hCLEVB
QVFwdUIsRUFBTzhiLENBR2hDLEtBQU0zSCxJQUFTOFAsR0FlZCxHQWRBL21CLEVBQU96QyxFQUFP
dUUsVUFBV21WLEdBQ3pCaWEsRUFBUzZDLEVBQWUvekIsR0FDeEI4QyxFQUFRaWtCLEVBQU85UCxH
QUNWMVosRUFBT2tELFFBQVNxQyxLQUNwQm91QixFQUFTcHVCLEVBQU8sR0FDaEJBLEVBQVFpa0Is
RUFBTzlQLEdBQVVuVSxFQUFPLElBRzVCbVUsSUFBVWpYLElBQ2QrbUIsRUFBTy9tQixHQUFTOEMs
UUFDVGlrQixHQUFPOVAsSUFHZjJILEVBQVFyaEIsRUFBT2d5QixTQUFVdnZCLEdBQ3BCNGUsR0FB
UyxVQUFZQSxHQUFRLENBQ2pDOWIsRUFBUThiLEVBQU1rUyxPQUFRaHVCLFNBQ2Zpa0IsR0FBTy9t
QixFQUlkLEtBQU1pWCxJQUFTblUsR0FDTm1VLElBQVM4UCxLQUNoQkEsRUFBTzlQLEdBQVVuVSxF
QUFPbVUsR0FDeEI4YyxFQUFlOWMsR0FBVWlhLE9BSTNCNkMsR0FBZS96QixHQUFTa3hCLEVBSzNC
LFFBQVM2QixJQUFXN3pCLEVBQU04MEIsRUFBWWowQixHQUNyQyxHQUFJb1AsR0FDSDhrQixFQUNB
aGQsRUFBUSxFQUNSM1ksRUFBU3kwQixHQUFVbUIsV0FBVzUxQixPQUM5QnliLEVBQVd4YyxFQUFP
bWMsV0FBV0ksT0FBUSxpQkFHN0IwWSxHQUFLdHpCLE9BRWJzekIsRUFBTyxXQUNOLEdBQUt5QixF
QUNKLE9BQU8sQ0FZUixLQVZBLEdBQUlFLEdBQWNqQyxJQUFTTyxLQUMxQjdXLEVBQVloYixLQUFL
a3VCLElBQUssRUFBR2dFLEVBQVVzQixVQUFZdEIsRUFBVXZCLFNBQVc0QyxHQUlwRXJnQixFQUFP
OEgsRUFBWWtYLEVBQVV2QixVQUFZLEVBQ3pDRixFQUFVLEVBQUl2ZCxFQUNkbUQsRUFBUSxFQUNS
M1ksRUFBU3cwQixFQUFVdUIsT0FBTy8xQixPQUVuQjJZLEVBQVEzWSxFQUFRMlksSUFDdkI2YixF
QUFVdUIsT0FBUXBkLEdBQVFtYSxJQUFLQyxFQUtoQyxPQUZBdFgsR0FBU2tCLFdBQVkvYixHQUFR
NHpCLEVBQVd6QixFQUFTelYsSUFFNUN5VixFQUFVLEdBQUsveUIsRUFDWnNkLEdBRVA3QixFQUFT
bUIsWUFBYWhjLEdBQVE0ekIsS0FDdkIsSUFHVEEsRUFBWS9ZLEVBQVNSLFNBQ3BCcmEsS0FBTUEs
RUFDTjZuQixNQUFPeHBCLEVBQU91QyxVQUFZazBCLEdBQzFCZCxLQUFNMzFCLEVBQU91QyxRQUFR
LEdBQ3BCaTBCLGlCQUNBN0MsT0FBUTN6QixFQUFPMnpCLE9BQU96UCxVQUNwQjFoQixHQUNIdTBC
LG1CQUFvQk4sRUFDcEJPLGdCQUFpQngwQixFQUNqQnEwQixVQUFXbEMsSUFBU08sS0FDcEJsQixT
QUFVeHhCLEVBQVF3eEIsU0FDbEI4QyxVQUNBeEIsWUFBYSxTQUFVaFYsRUFBTWxlLEdBQzVCLEdB
QUlvZ0IsR0FBUXhpQixFQUFPMHpCLE1BQU8veEIsRUFBTTR6QixFQUFVSSxLQUFNclYsRUFBTWxl
LEVBQ3BEbXpCLEVBQVVJLEtBQUthLGNBQWVsVyxJQUFVaVYsRUFBVUksS0FBS2hDLE9BRXpELE9B
REE0QixHQUFVdUIsT0FBT240QixLQUFNNmpCLEdBQ2hCQSxHQUVSakIsS0FBTSxTQUFVMFYsR0FD
ZixHQUFJdmQsR0FBUSxFQUlYM1ksRUFBU2syQixFQUFVMUIsRUFBVXVCLE9BQU8vMUIsT0FBUyxD
QUM5QyxJQUFLMjFCLEVBQ0osTUFBT3Y0QixLQUdSLEtBREF1NEIsR0FBVSxFQUNGaGQsRUFBUTNZ
LEVBQVEyWSxJQUN2QjZiLEVBQVV1QixPQUFRcGQsR0FBUW1hLElBQUssRUFVaEMsT0FOS29ELElB
Q0p6YSxFQUFTa0IsV0FBWS9iLEdBQVE0ekIsRUFBVyxFQUFHLElBQzNDL1ksRUFBU21CLFlBQWFo
YyxHQUFRNHpCLEVBQVcwQixLQUV6Q3phLEVBQVN1QixXQUFZcGMsR0FBUTR6QixFQUFXMEIsSUFF
bEM5NEIsUUFHVHFyQixFQUFRK0wsRUFBVS9MLEtBSW5CLEtBRkErTSxHQUFZL00sRUFBTytMLEVB
QVVJLEtBQUthLGVBRTFCOWMsRUFBUTNZLEVBQVEyWSxJQUV2QixHQURBOUgsRUFBUzRqQixHQUFV
bUIsV0FBWWpkLEdBQVF2YSxLQUFNbzJCLEVBQVc1ekIsRUFBTTZuQixFQUFPK0wsRUFBVUksTUFN
OUUsTUFKSzMxQixHQUFPZ0QsV0FBWTRPLEVBQU8yUCxRQUM5QnZoQixFQUFPc2hCLFlBQWFpVSxF
QUFVNXpCLEtBQU00ekIsRUFBVUksS0FBSzVhLE9BQVF3RyxLQUMxRHZoQixFQUFPeUYsTUFBT21N
LEVBQU8yUCxLQUFNM1AsSUFFdEJBLENBbUJULE9BZkE1UixHQUFPMEIsSUFBSzhuQixFQUFPOEws
R0FBYUMsR0FFM0J2MUIsRUFBT2dELFdBQVl1eUIsRUFBVUksS0FBS3RqQixRQUN0Q2tqQixFQUFV
SSxLQUFLdGpCLE1BQU1sVCxLQUFNd0MsRUFBTTR6QixHQUdsQ3YxQixFQUFPbTBCLEdBQUcrQyxN
QUNUbDNCLEVBQU91QyxPQUFRMHlCLEdBQ2R0ekIsS0FBTUEsRUFDTnEwQixLQUFNVCxFQUNOeGEs
TUFBT3dhLEVBQVVJLEtBQUs1YSxTQUtqQndhLEVBQVV4WSxTQUFVd1ksRUFBVUksS0FBSzVZLFVB
Q3hDNVYsS0FBTW91QixFQUFVSSxLQUFLeHVCLEtBQU1vdUIsRUFBVUksS0FBS3dCLFVBQzFDbGIs
S0FBTXNaLEVBQVVJLEtBQUsxWixNQUNyQk0sT0FBUWdaLEVBQVVJLEtBQUtwWixRQUcxQnZjLEVB
QU93MUIsVUFBWXgxQixFQUFPdUMsT0FBUWl6QixJQUVqQ0MsVUFDQzJCLEtBQU8sU0FBVTlXLEVB
QU0vYSxHQUN0QixHQUFJaWQsR0FBUXJrQixLQUFLbTNCLFlBQWFoVixFQUFNL2EsRUFFcEMsT0FE
QStjLElBQVdFLEVBQU03Z0IsS0FBTTJlLEVBQU13QixHQUFRdlcsS0FBTWhHLEdBQVNpZCxHQUM3
Q0EsS0FJVDZVLFFBQVMsU0FBVTdOLEVBQU8vbkIsR0FDcEJ6QixFQUFPZ0QsV0FBWXdtQixJQUN2
Qi9uQixFQUFXK25CLEVBQ1hBLEdBQVUsTUFFVkEsRUFBUUEsRUFBTXRlLE1BQU9vUCxFQU90QixL
QUpBLEdBQUlnRyxHQUNINUcsRUFBUSxFQUNSM1ksRUFBU3lvQixFQUFNem9CLE9BRVIyWSxFQUFR
M1ksRUFBUTJZLElBQ3ZCNEcsRUFBT2tKLEVBQU85UCxHQUNkOGIsR0FBVUMsU0FBVW5WLEdBQVNr
VixHQUFVQyxTQUFVblYsT0FDakRrVixHQUFVQyxTQUFVblYsR0FBT3ZRLFFBQVN0TyxJQUl0Q2sx
QixZQUFjakIsSUFFZDRCLFVBQVcsU0FBVTcxQixFQUFVdXNCLEdBQ3pCQSxFQUNKd0gsR0FBVW1C
LFdBQVc1bUIsUUFBU3RPLEdBRTlCK3pCLEdBQVVtQixXQUFXaDRCLEtBQU04QyxNQUs5QnpCLEVB
QU91M0IsTUFBUSxTQUFVQSxFQUFPNUQsRUFBUXh6QixHQUN2QyxHQUFJcTNCLEdBQU1ELEdBQTBC
LGdCQUFWQSxHQUFxQnYzQixFQUFPdUMsVUFBWWcxQixJQUNqRUosU0FBVWgzQixJQUFPQSxHQUFN
d3pCLEdBQ3RCM3pCLEVBQU9nRCxXQUFZdTBCLElBQVdBLEVBQy9CdkQsU0FBVXVELEVBQ1Y1RCxP
QUFReHpCLEdBQU13ekIsR0FBVUEsSUFBVzN6QixFQUFPZ0QsV0FBWTJ3QixJQUFZQSxFQW9DbkUs
T0FoQ0szekIsR0FBT20wQixHQUFHNU4sS0FBT3hvQixFQUFTazRCLE9BQzlCdUIsRUFBSXhELFNB
QVcsRUFHYyxnQkFBakJ3RCxHQUFJeEQsV0FDVndELEVBQUl4RCxXQUFZaDBCLEdBQU9tMEIsR0FB
R3NELE9BQzlCRCxFQUFJeEQsU0FBV2gwQixFQUFPbTBCLEdBQUdzRCxPQUFRRCxFQUFJeEQsVUFH
ckN3RCxFQUFJeEQsU0FBV2gwQixFQUFPbTBCLEdBQUdzRCxPQUFPdlQsVUFNakIsTUFBYnNULEVB
QUl6YyxPQUFpQnljLEVBQUl6YyxTQUFVLElBQ3ZDeWMsRUFBSXpjLE1BQVEsTUFJYnljLEVBQUlu
VixJQUFNbVYsRUFBSUwsU0FFZEssRUFBSUwsU0FBVyxXQUNUbjNCLEVBQU9nRCxXQUFZdzBCLEVB
QUluVixNQUMzQm1WLEVBQUluVixJQUFJbGpCLEtBQU1oQixNQUdWcTVCLEVBQUl6YyxPQUNSL2Es
RUFBT21oQixRQUFTaGpCLEtBQU1xNUIsRUFBSXpjLFFBSXJCeWMsR0FHUngzQixFQUFPRyxHQUFH
b0MsUUFDVG0xQixPQUFRLFNBQVVILEVBQU9JLEVBQUloRSxFQUFRbHlCLEdBR3BDLE1BQU90RCxN
QUFLdVEsT0FBUXNULElBQXFCRyxJQUFLLFVBQVcsR0FBSWtCLE9BRzNEamhCLE1BQU13MUIsU0FB
VzNGLFFBQVMwRixHQUFNSixFQUFPNUQsRUFBUWx5QixJQUVsRG0yQixRQUFTLFNBQVV0WCxFQUFN
aVgsRUFBTzVELEVBQVFseUIsR0FDdkMsR0FBSXdTLEdBQVFqVSxFQUFPcUUsY0FBZWljLEdBQ2pD
dVgsRUFBUzczQixFQUFPdTNCLE1BQU9BLEVBQU81RCxFQUFRbHlCLEdBQ3RDcTJCLEVBQWMsV0FH
YixHQUFJOUIsR0FBT1IsR0FBV3IzQixLQUFNNkIsRUFBT3VDLFVBQVkrZCxHQUFRdVgsSUFHbEQ1
akIsR0FBU3VNLEVBQVN2ZixJQUFLOUMsS0FBTSxZQUNqQzYzQixFQUFLelUsTUFBTSxHQUtkLE9B
RkN1VyxHQUFZQyxPQUFTRCxFQUVmN2pCLEdBQVM0akIsRUFBTzljLFNBQVUsRUFDaEM1YyxLQUFL
cUQsS0FBTXMyQixHQUNYMzVCLEtBQUs0YyxNQUFPOGMsRUFBTzljLE1BQU8rYyxJQUU1QnZXLEtB
QU0sU0FBVTFkLEVBQU00ZCxFQUFZd1YsR0FDakMsR0FBSWUsR0FBWSxTQUFVM1csR0FDekIsR0FB
SUUsR0FBT0YsRUFBTUUsV0FDVkYsR0FBTUUsS0FDYkEsRUFBTTBWLEdBWVAsT0FUcUIsZ0JBQVRw
ekIsS0FDWG96QixFQUFVeFYsRUFDVkEsRUFBYTVkLEVBQ2JBLEVBQU9WLFFBRUhzZSxHQUFjNWQs
S0FBUyxHQUMzQjFGLEtBQUs0YyxNQUFPbFgsR0FBUSxTQUdkMUYsS0FBS3FELEtBQU0sV0FDakIs
R0FBSTJmLElBQVUsRUFDYnpILEVBQWdCLE1BQVI3VixHQUFnQkEsRUFBTyxhQUMvQm8wQixFQUFT
ajRCLEVBQU9pNEIsT0FDaEI1WCxFQUFPRyxFQUFTdmYsSUFBSzlDLEtBRXRCLElBQUt1YixFQUND
MkcsRUFBTTNHLElBQVcyRyxFQUFNM0csR0FBUTZILE1BQ25DeVcsRUFBVzNYLEVBQU0zRyxRQUds
QixLQUFNQSxJQUFTMkcsR0FDVEEsRUFBTTNHLElBQVcyRyxFQUFNM0csR0FBUTZILE1BQVF1VCxH
QUFLanBCLEtBQU02TixJQUN0RHNlLEVBQVczWCxFQUFNM0csR0FLcEIsS0FBTUEsRUFBUXVlLEVB
QU9sM0IsT0FBUTJZLEtBQ3ZCdWUsRUFBUXZlLEdBQVEvWCxPQUFTeEQsTUFDbkIsTUFBUjBGLEdB
QWdCbzBCLEVBQVF2ZSxHQUFRcUIsUUFBVWxYLElBRTVDbzBCLEVBQVF2ZSxHQUFRc2MsS0FBS3pV
LEtBQU0wVixHQUMzQjlWLEdBQVUsRUFDVjhXLEVBQU8zMUIsT0FBUW9YLEVBQU8sS0FPbkJ5SCxH
QUFZOFYsR0FDaEJqM0IsRUFBT21oQixRQUFTaGpCLEtBQU0wRixNQUl6QmswQixPQUFRLFNBQVVs
MEIsR0FJakIsTUFIS0EsTUFBUyxJQUNiQSxFQUFPQSxHQUFRLE1BRVQxRixLQUFLcUQsS0FBTSxX
QUNqQixHQUFJa1ksR0FDSDJHLEVBQU9HLEVBQVN2ZixJQUFLOUMsTUFDckI0YyxFQUFRc0YsRUFB
TXhjLEVBQU8sU0FDckJ3ZCxFQUFRaEIsRUFBTXhjLEVBQU8sY0FDckJvMEIsRUFBU2o0QixFQUFP
aTRCLE9BQ2hCbDNCLEVBQVNnYSxFQUFRQSxFQUFNaGEsT0FBUyxDQWFqQyxLQVZBc2YsRUFBSzBY
LFFBQVMsRUFHZC8zQixFQUFPK2EsTUFBTzVjLEtBQU0wRixNQUVmd2QsR0FBU0EsRUFBTUUsTUFD
bkJGLEVBQU1FLEtBQUtwaUIsS0FBTWhCLE1BQU0sR0FJbEJ1YixFQUFRdWUsRUFBT2wzQixPQUFR
MlksS0FDdkJ1ZSxFQUFRdmUsR0FBUS9YLE9BQVN4RCxNQUFRODVCLEVBQVF2ZSxHQUFRcUIsUUFB
VWxYLElBQy9EbzBCLEVBQVF2ZSxHQUFRc2MsS0FBS3pVLE1BQU0sR0FDM0IwVyxFQUFPMzFCLE9B
QVFvWCxFQUFPLEdBS3hCLEtBQU1BLEVBQVEsRUFBR0EsRUFBUTNZLEVBQVEyWSxJQUMzQnFCLEVB
QU9yQixJQUFXcUIsRUFBT3JCLEdBQVFxZSxRQUNyQ2hkLEVBQU9yQixHQUFRcWUsT0FBTzU0QixL
QUFNaEIsWUFLdkJraUIsR0FBSzBYLFlBS2YvM0IsRUFBT3dCLE1BQVEsU0FBVSxPQUFRLFFBQVUs
U0FBVUksRUFBR2EsR0FDdkQsR0FBSXkxQixHQUFRbDRCLEVBQU9HLEdBQUlzQyxFQUN2QnpDLEdB
QU9HLEdBQUlzQyxHQUFTLFNBQVU4MEIsRUFBTzVELEVBQVFseUIsR0FDNUMsTUFBZ0IsT0FBVDgx
QixHQUFrQyxpQkFBVkEsR0FDOUJXLEVBQU1yMkIsTUFBTzFELEtBQU0yRCxXQUNuQjNELEtBQUt5
NUIsUUFBU3pDLEdBQU8xeUIsR0FBTSxHQUFRODBCLEVBQU81RCxFQUFRbHlCLE1BS3JEekIsRUFB
T3dCLE1BQ04yMkIsVUFBV2hELEdBQU8sUUFDbEJpRCxRQUFTakQsR0FBTyxRQUNoQmtELFlBQWFs
RCxHQUFPLFVBQ3BCbUQsUUFBVXJHLFFBQVMsUUFDbkJzRyxTQUFXdEcsUUFBUyxRQUNwQnVHLFlB
QWN2RyxRQUFTLFdBQ3JCLFNBQVV4dkIsRUFBTSttQixHQUNsQnhwQixFQUFPRyxHQUFJc0MsR0FB
UyxTQUFVODBCLEVBQU81RCxFQUFRbHlCLEdBQzVDLE1BQU90RCxNQUFLeTVCLFFBQVNwTyxFQUFP
K04sRUFBTzVELEVBQVFseUIsTUFJN0N6QixFQUFPaTRCLFVBQ1BqNEIsRUFBT20wQixHQUFHYyxL
QUFPLFdBQ2hCLEdBQUlpQyxHQUNIdDFCLEVBQUksRUFDSnEyQixFQUFTajRCLEVBQU9pNEIsTUFJ
akIsS0FGQXRELEdBQVEzMEIsRUFBTzRGLE1BRVBoRSxFQUFJcTJCLEVBQU9sM0IsT0FBUWEsSUFD
MUJzMUIsRUFBUWUsRUFBUXIyQixHQUdWczFCLEtBQVdlLEVBQVFyMkIsS0FBUXMxQixHQUNoQ2Us
RUFBTzMxQixPQUFRVixJQUFLLEVBSWhCcTJCLEdBQU9sM0IsUUFDWmYsRUFBT20wQixHQUFHNVMs
T0FFWG9ULEdBQVF4eEIsUUFHVG5ELEVBQU9tMEIsR0FBRytDLE1BQVEsU0FBVUEsR0FDM0JsM0Is
RUFBT2k0QixPQUFPdDVCLEtBQU11NEIsR0FDZkEsSUFDSmwzQixFQUFPbTBCLEdBQUc5aEIsUUFF
VnJTLEVBQU9pNEIsT0FBT3R3QixPQUloQjNILEVBQU9tMEIsR0FBR3NFLFNBQVcsR0FDckJ6NEIs
RUFBT20wQixHQUFHOWhCLE1BQVEsV0FDWHVpQixLQUNMQSxHQUFVMTJCLEVBQU84MkIsc0JBQ2hC
OTJCLEVBQU84MkIsc0JBQXVCRCxJQUM5QjcyQixFQUFPdzZCLFlBQWExNEIsRUFBT20wQixHQUFH
YyxLQUFNajFCLEVBQU9tMEIsR0FBR3NFLFlBSWpEejRCLEVBQU9tMEIsR0FBRzVTLEtBQU8sV0FD
WHJqQixFQUFPeTZCLHFCQUNYejZCLEVBQU95NkIscUJBQXNCL0QsSUFFN0IxMkIsRUFBTzA2Qixj
QUFlaEUsSUFHdkJBLEdBQVUsTUFHWDUwQixFQUFPbTBCLEdBQUdzRCxRQUNUb0IsS0FBTSxJQUNO
QyxLQUFNLElBR041VSxTQUFVLEtBTVhsa0IsRUFBT0csR0FBRzQ0QixNQUFRLFNBQVVDLEVBQU1u
MUIsR0FJakMsTUFIQW0xQixHQUFPaDVCLEVBQU9tMEIsR0FBS24wQixFQUFPbTBCLEdBQUdzRCxP
QUFRdUIsSUFBVUEsRUFBT0EsRUFDdERuMUIsRUFBT0EsR0FBUSxLQUVSMUYsS0FBSzRjLE1BQU9s
WCxFQUFNLFNBQVU2RyxFQUFNMlcsR0FDeEMsR0FBSTRYLEdBQVUvNkIsRUFBTytmLFdBQVl2VCxF
QUFNc3VCLEVBQ3ZDM1gsR0FBTUUsS0FBTyxXQUNacmpCLEVBQU9nN0IsYUFBY0QsT0FNeEIsV0FD
QyxHQUFJanFCLEdBQVFqUixFQUFTMEIsY0FBZSxTQUNuQzhHLEVBQVN4SSxFQUFTMEIsY0FBZSxV
QUNqQyszQixFQUFNanhCLEVBQU8zRyxZQUFhN0IsRUFBUzBCLGNBQWUsVUFFbkR1UCxHQUFNbkws
S0FBTyxXQUliekUsRUFBUSs1QixRQUEwQixLQUFoQm5xQixFQUFNekosTUFJeEJuRyxFQUFRZzZC
LFlBQWM1QixFQUFJempCLFNBSTFCL0UsRUFBUWpSLEVBQVMwQixjQUFlLFNBQ2hDdVAsRUFBTXpK
LE1BQVEsSUFDZHlKLEVBQU1uTCxLQUFPLFFBQ2J6RSxFQUFRaTZCLFdBQTZCLE1BQWhCcnFCLEVB
QU16SixRQUk1QixJQUFJK3pCLElBQ0hyc0IsR0FBYWpOLEVBQU9nUSxLQUFLL0MsVUFFMUJqTixH
QUFPRyxHQUFHb0MsUUFDVDJOLEtBQU0sU0FBVXpOLEVBQU04QyxHQUNyQixNQUFPa2EsR0FBUXRo
QixLQUFNNkIsRUFBT2tRLEtBQU16TixFQUFNOEMsRUFBT3pELFVBQVVmLE9BQVMsSUFHbkV3NEIs
V0FBWSxTQUFVOTJCLEdBQ3JCLE1BQU90RSxNQUFLcUQsS0FBTSxXQUNqQnhCLEVBQU91NUIsV0FB
WXA3QixLQUFNc0UsUUFLNUJ6QyxFQUFPdUMsUUFDTjJOLEtBQU0sU0FBVXZPLEVBQU1jLEVBQU04
QyxHQUMzQixHQUFJbEUsR0FBS2dnQixFQUNSbVksRUFBUTczQixFQUFLaUosUUFHZCxJQUFlLElB
QVY0dUIsR0FBeUIsSUFBVkEsR0FBeUIsSUFBVkEsRUFLbkMsTUFBa0MsbUJBQXRCNzNCLEdBQUtt
SyxhQUNUOUwsRUFBT3NnQixLQUFNM2UsRUFBTWMsRUFBTThDLElBS2xCLElBQVZpMEIsR0FBZ0J4
NUIsRUFBT2tZLFNBQVV2VyxLQUNyQzBmLEVBQVFyaEIsRUFBT3k1QixVQUFXaDNCLEVBQUtpQyxp
QkFDNUIxRSxFQUFPZ1EsS0FBSzlFLE1BQU1qQyxLQUFLNEMsS0FBTXBKLEdBQVM2MkIsR0FBV24y
QjtBQUd0Q0EsU0FBVm9DLEVBQ1csT0FBVkEsTUFDSnZGLEdBQU91NUIsV0FBWTUzQixFQUFNYyxH
QUlyQjRlLEdBQVMsT0FBU0EsSUFDdUJsZSxVQUEzQzlCLEVBQU1nZ0IsRUFBTWpCLElBQUt6ZSxF
QUFNNEQsRUFBTzlDLElBQ3pCcEIsR0FHUk0sRUFBS29LLGFBQWN0SixFQUFNOEMsRUFBUSxJQUMx
QkEsR0FHSDhiLEdBQVMsT0FBU0EsSUFBK0MsUUFBcENoZ0IsRUFBTWdnQixFQUFNcGdCLElBQUtV
LEVBQU1jLElBQ2pEcEIsR0FHUkEsRUFBTXJCLEVBQU80TyxLQUFLc0IsS0FBTXZPLEVBQU1jLEdB
R2hCLE1BQVBwQixFQUFjOEIsT0FBWTlCLEtBR2xDbzRCLFdBQ0M1MUIsTUFDQ3VjLElBQUssU0FB
VXplLEVBQU00RCxHQUNwQixJQUFNbkcsRUFBUWk2QixZQUF3QixVQUFWOXpCLEdBQzNCdkYsRUFB
T3lFLFNBQVU5QyxFQUFNLFNBQVksQ0FDbkMsR0FBSXdPLEdBQU14TyxFQUFLNEQsS0FLZixPQUpB
NUQsR0FBS29LLGFBQWMsT0FBUXhHLEdBQ3RCNEssSUFDSnhPLEVBQUs0RCxNQUFRNEssR0FFUDVL
LE1BTVhnMEIsV0FBWSxTQUFVNTNCLEVBQU00RCxHQUMzQixHQUFJOUMsR0FDSGIsRUFBSSxFQUlK
ODNCLEVBQVluMEIsR0FBU0EsRUFBTTJGLE1BQU9vUCxFQUVuQyxJQUFLb2YsR0FBK0IsSUFBbEIv
M0IsRUFBS2lKLFNBQ3RCLE1BQVVuSSxFQUFPaTNCLEVBQVc5M0IsS0FDM0JELEVBQUswSyxnQkFB
aUI1SixNQU8xQjYyQixJQUNDbFosSUFBSyxTQUFVemUsRUFBTTRELEVBQU85QyxHQVEzQixNQVBL
OEMsTUFBVSxFQUdkdkYsRUFBT3U1QixXQUFZNTNCLEVBQU1jLEdBRXpCZCxFQUFLb0ssYUFBY3RK
LEVBQU1BLEdBRW5CQSxJQUlUekMsRUFBT3dCLEtBQU14QixFQUFPZ1EsS0FBSzlFLE1BQU1qQyxL
QUFLNFksT0FBTzNXLE1BQU8sUUFBVSxTQUFVdEosRUFBR2EsR0FDeEUsR0FBSWszQixHQUFTMXNC
LEdBQVl4SyxJQUFVekMsRUFBTzRPLEtBQUtzQixJQUUvQ2pELElBQVl4SyxHQUFTLFNBQVVkLEVB
QU1jLEVBQU0yRCxHQUMxQyxHQUFJL0UsR0FBSzRsQixFQUNSMlMsRUFBZ0JuM0IsRUFBS2lDLGFB
WXRCLE9BVk0wQixLQUdMNmdCLEVBQVNoYSxHQUFZMnNCLEdBQ3JCM3NCLEdBQVkyc0IsR0FBa0J2
NEIsRUFDOUJBLEVBQXFDLE1BQS9CczRCLEVBQVFoNEIsRUFBTWMsRUFBTTJELEdBQ3pCd3pCLEVB
Q0EsS0FDRDNzQixHQUFZMnNCLEdBQWtCM1MsR0FFeEI1bEIsSUFPVCxJQUFJdzRCLElBQWEsc0NB
Q2hCQyxHQUFhLGVBRWQ5NUIsR0FBT0csR0FBR29DLFFBQ1QrZCxLQUFNLFNBQVU3ZCxFQUFNOEMs
R0FDckIsTUFBT2thLEdBQVF0aEIsS0FBTTZCLEVBQU9zZ0IsS0FBTTdkLEVBQU04QyxFQUFPekQs
VUFBVWYsT0FBUyxJQUduRWc1QixXQUFZLFNBQVV0M0IsR0FDckIsTUFBT3RFLE1BQUtxRCxLQUFN
LGlCQUNWckQsTUFBTTZCLEVBQU9nNkIsUUFBU3YzQixJQUFVQSxRQUsxQ3pDLEVBQU91QyxRQUNO
K2QsS0FBTSxTQUFVM2UsRUFBTWMsRUFBTThDLEdBQzNCLEdBQUlsRSxHQUFLZ2dCLEVBQ1JtWSxF
QUFRNzNCLEVBQUtpSixRQUdkLElBQWUsSUFBVjR1QixHQUF5QixJQUFWQSxHQUF5QixJQUFWQSxF
QVduQyxNQVBlLEtBQVZBLEdBQWdCeDVCLEVBQU9rWSxTQUFVdlcsS0FHckNjLEVBQU96QyxFQUFP
ZzZCLFFBQVN2M0IsSUFBVUEsRUFDakM0ZSxFQUFRcmhCLEVBQU80ekIsVUFBV254QixJQUdaVSxT
QUFWb0MsRUFDQzhiLEdBQVMsT0FBU0EsSUFDdUJsZSxVQUEzQzlCLEVBQU1nZ0IsRUFBTWpCLElB
QUt6ZSxFQUFNNEQsRUFBTzlDLElBQ3pCcEIsRUFHQ00sRUFBTWMsR0FBUzhDLEVBR3BCOGIsR0FB
UyxPQUFTQSxJQUErQyxRQUFwQ2hnQixFQUFNZ2dCLEVBQU1wZ0IsSUFBS1UsRUFBTWMsSUFDakRw
QixFQUdETSxFQUFNYyxJQUdkbXhCLFdBQ0NoZ0IsVUFDQzNTLElBQUssU0FBVVUsR0FPZCxHQUFJ
czRCLEdBQVdqNkIsRUFBTzRPLEtBQUtzQixLQUFNdk8sRUFBTSxXQUV2QyxPQUFLczRCLEdBQ0dD
LFNBQVVELEVBQVUsSUFJM0JKLEdBQVdodUIsS0FBTWxLLEVBQUs4QyxXQUN0QnExQixHQUFXanVC
LEtBQU1sSyxFQUFLOEMsV0FDdEI5QyxFQUFLZ1MsS0FFRSxRQVFYcW1CLFNBQ0NHLE1BQU8sVUFD
UEMsUUFBUyxlQVlMaDdCLEVBQVFnNkIsY0FDYnA1QixFQUFPNHpCLFVBQVU3ZixVQUNoQjlTLElB
QUssU0FBVVUsR0FJZCxHQUFJMlEsR0FBUzNRLEVBQUs5QixVQUlsQixPQUhLeVMsSUFBVUEsRUFB
T3pTLFlBQ3JCeVMsRUFBT3pTLFdBQVdtVSxjQUVaLE1BRVJvTSxJQUFLLFNBQVV6ZSxHQUlkLEdB
QUkyUSxHQUFTM1EsRUFBSzlCLFVBQ2J5UyxLQUNKQSxFQUFPMEIsY0FFRjFCLEVBQU96UyxZQUNY
eVMsRUFBT3pTLFdBQVdtVSxrQkFPdkJoVSxFQUFPd0IsTUFDTixXQUNBLFdBQ0EsWUFDQSxjQUNB
LGNBQ0EsVUFDQSxVQUNBLFNBQ0EsY0FDQSxtQkFDRSxXQUNGeEIsRUFBT2c2QixRQUFTNzdCLEtB
QUt1RyxlQUFrQnZHLE1BUXZDLFNBQVNrOEIsSUFBa0I5MEIsR0FDMUIsR0FBSTBQLEdBQVMxUCxF
QUFNMkYsTUFBT29QLE1BQzFCLE9BQU9yRixHQUFPaEosS0FBTSxLQUl0QixRQUFTcXVCLElBQVUz
NEIsR0FDbEIsTUFBT0EsR0FBS21LLGNBQWdCbkssRUFBS21LLGFBQWMsVUFBYSxHQUc3RDlMLEVB
QU9HLEdBQUdvQyxRQUNUZzRCLFNBQVUsU0FBVWgxQixHQUNuQixHQUFJaTFCLEdBQVM3NEIsRUFB
TXdMLEVBQUtzdEIsRUFBVUMsRUFBT3Y0QixFQUFHdzRCLEVBQzNDLzRCLEVBQUksQ0FFTCxJQUFL
NUIsRUFBT2dELFdBQVl1QyxHQUN2QixNQUFPcEgsTUFBS3FELEtBQU0sU0FBVVcsR0FDM0JuQyxF
QUFRN0IsTUFBT284QixTQUFVaDFCLEVBQU1wRyxLQUFNaEIsS0FBTWdFLEVBQUdtNEIsR0FBVW44
QixTQUkxRCxJQUFzQixnQkFBVm9ILElBQXNCQSxFQUFRLENBQ3pDaTFCLEVBQVVqMUIsRUFBTTJG
LE1BQU9vUCxNQUV2QixPQUFVM1ksRUFBT3hELEtBQU15RCxLQUl0QixHQUhBNjRCLEVBQVdILEdB
QVUzNEIsR0FDckJ3TCxFQUF3QixJQUFsQnhMLEVBQUtpSixVQUFvQixJQUFNeXZCLEdBQWtCSSxH
QUFhLElBRXpELENBQ1Z0NEIsRUFBSSxDQUNKLE9BQVV1NEIsRUFBUUYsRUFBU3I0QixLQUNyQmdM
LEVBQUl2TyxRQUFTLElBQU04N0IsRUFBUSxLQUFRLElBQ3ZDdnRCLEdBQU91dEIsRUFBUSxJQUtq
QkMsR0FBYU4sR0FBa0JsdEIsR0FDMUJzdEIsSUFBYUUsR0FDakJoNUIsRUFBS29LLGFBQWMsUUFB
UzR1QixJQU1oQyxNQUFPeDhCLE9BR1J5OEIsWUFBYSxTQUFVcjFCLEdBQ3RCLEdBQUlpMUIsR0FB
Uzc0QixFQUFNd0wsRUFBS3N0QixFQUFVQyxFQUFPdjRCLEVBQUd3NEIsRUFDM0MvNEIsRUFBSSxD
QUVMLElBQUs1QixFQUFPZ0QsV0FBWXVDLEdBQ3ZCLE1BQU9wSCxNQUFLcUQsS0FBTSxTQUFVVyxH
QUMzQm5DLEVBQVE3QixNQUFPeThCLFlBQWFyMUIsRUFBTXBHLEtBQU1oQixLQUFNZ0UsRUFBR200
QixHQUFVbjhCLFNBSTdELEtBQU0yRCxVQUFVZixPQUNmLE1BQU81QyxNQUFLK1IsS0FBTSxRQUFT
LEdBRzVCLElBQXNCLGdCQUFWM0ssSUFBc0JBLEVBQVEsQ0FDekNpMUIsRUFBVWoxQixFQUFNMkYs
TUFBT29QLE1BRXZCLE9BQVUzWSxFQUFPeEQsS0FBTXlELEtBTXRCLEdBTEE2NEIsRUFBV0gsR0FB
VTM0QixHQUdyQndMLEVBQXdCLElBQWxCeEwsRUFBS2lKLFVBQW9CLElBQU15dkIsR0FBa0JJLEdB
QWEsSUFFekQsQ0FDVnQ0QixFQUFJLENBQ0osT0FBVXU0QixFQUFRRixFQUFTcjRCLEtBRzFCLE1B
QVFnTCxFQUFJdk8sUUFBUyxJQUFNODdCLEVBQVEsUUFDbEN2dEIsRUFBTUEsRUFBSTVKLFFBQVMs
SUFBTW0zQixFQUFRLElBQUssSUFLeENDLEdBQWFOLEdBQWtCbHRCLEdBQzFCc3RCLElBQWFFLEdB
Q2pCaDVCLEVBQUtvSyxhQUFjLFFBQVM0dUIsSUFNaEMsTUFBT3g4QixPQUdSMDhCLFlBQWEsU0FB
VXQxQixFQUFPdTFCLEdBQzdCLEdBQUlqM0IsU0FBYzBCLEVBRWxCLE9BQXlCLGlCQUFidTFCLElB
QW1DLFdBQVRqM0IsRUFDOUJpM0IsRUFBVzM4QixLQUFLbzhCLFNBQVVoMUIsR0FBVXBILEtBQUt5
OEIsWUFBYXIxQixHQUd6RHZGLEVBQU9nRCxXQUFZdUMsR0FDaEJwSCxLQUFLcUQsS0FBTSxTQUFV
SSxHQUMzQjVCLEVBQVE3QixNQUFPMDhCLFlBQ2R0MUIsRUFBTXBHLEtBQU1oQixLQUFNeUQsRUFB
RzA0QixHQUFVbjhCLE1BQVEyOEIsR0FDdkNBLEtBS0kzOEIsS0FBS3FELEtBQU0sV0FDakIsR0FB
SThNLEdBQVcxTSxFQUFHa1gsRUFBTWlpQixDQUV4QixJQUFjLFdBQVRsM0IsRUFBb0IsQ0FHeEJq
QyxFQUFJLEVBQ0prWCxFQUFPOVksRUFBUTdCLE1BQ2Y0OEIsRUFBYXgxQixFQUFNMkYsTUFBT29Q
LE1BRTFCLE9BQVVoTSxFQUFZeXNCLEVBQVluNUIsS0FHNUJrWCxFQUFLa2lCLFNBQVUxc0IsR0FD
bkJ3SyxFQUFLOGhCLFlBQWF0c0IsR0FFbEJ3SyxFQUFLeWhCLFNBQVVqc0IsT0FLSW5MLFVBQVZv
QyxHQUFnQyxZQUFUMUIsSUFDbEN5SyxFQUFZZ3NCLEdBQVVuOEIsTUFDakJtUSxHQUdKa1MsRUFB
U0osSUFBS2ppQixLQUFNLGdCQUFpQm1RLEdBT2pDblEsS0FBSzROLGNBQ1Q1TixLQUFLNE4sYUFB
YyxRQUNsQnVDLEdBQWEvSSxLQUFVLEVBQ3ZCLEdBQ0FpYixFQUFTdmYsSUFBSzlDLEtBQU0sa0JB
QXFCLFFBTzlDNjhCLFNBQVUsU0FBVS82QixHQUNuQixHQUFJcU8sR0FBVzNNLEVBQ2RDLEVBQUks
Q0FFTDBNLEdBQVksSUFBTXJPLEVBQVcsR0FDN0IsT0FBVTBCLEVBQU94RCxLQUFNeUQsS0FDdEIs
R0FBdUIsSUFBbEJELEVBQUtpSixXQUNQLElBQU15dkIsR0FBa0JDLEdBQVUzNEIsSUFBVyxLQUFN
L0MsUUFBUzBQLE1BQzdELE9BQU8sQ0FJVixRQUFPLElBT1QsSUFBSTJzQixJQUFVLEtBRWRqN0Is
R0FBT0csR0FBR29DLFFBQ1Q0TixJQUFLLFNBQVU1SyxHQUNkLEdBQUk4YixHQUFPaGdCLEVBQUsy
QixFQUNmckIsRUFBT3hELEtBQU0sRUFFZCxFQUFBLEdBQU0yRCxVQUFVZixPQTRCaEIsTUFGQWlD
LEdBQWFoRCxFQUFPZ0QsV0FBWXVDLEdBRXpCcEgsS0FBS3FELEtBQU0sU0FBVUksR0FDM0IsR0FB
SXVPLEVBRW1CLEtBQWxCaFMsS0FBS3lNLFdBS1R1RixFQURJbk4sRUFDRXVDLEVBQU1wRyxLQUFN
aEIsS0FBTXlELEVBQUc1QixFQUFRN0IsTUFBT2dTLE9BRXBDNUssRUFJSyxNQUFQNEssRUFDSkEs
RUFBTSxHQUVvQixnQkFBUkEsR0FDbEJBLEdBQU8sR0FFSW5RLEVBQU9rRCxRQUFTaU4sS0FDM0JB
LEVBQU1uUSxFQUFPMEIsSUFBS3lPLEVBQUssU0FBVTVLLEdBQ2hDLE1BQWdCLE9BQVRBLEVBQWdC
LEdBQUtBLEVBQVEsTUFJdEM4YixFQUFRcmhCLEVBQU9rN0IsU0FBVS84QixLQUFLMEYsT0FBVTdE
LEVBQU9rN0IsU0FBVS84QixLQUFLc0csU0FBU0MsZUFHakUyYyxHQUFZLE9BQVNBLElBQStDbGUs
U0FBcENrZSxFQUFNakIsSUFBS2ppQixLQUFNZ1MsRUFBSyxXQUMzRGhTLEtBQUtvSCxNQUFRNEss
S0F6RGQsSUFBS3hPLEVBSUosTUFIQTBmLEdBQVFyaEIsRUFBT2s3QixTQUFVdjVCLEVBQUtrQyxP
QUM3QjdELEVBQU9rN0IsU0FBVXY1QixFQUFLOEMsU0FBU0MsZUFFM0IyYyxHQUNKLE9BQVNBLElB
Q2dDbGUsVUFBdkM5QixFQUFNZ2dCLEVBQU1wZ0IsSUFBS1UsRUFBTSxVQUVsQk4sR0FHUkEsRUFB
TU0sRUFBSzRELE1BR1MsZ0JBQVJsRSxHQUNKQSxFQUFJa0MsUUFBUzAzQixHQUFTLElBSWhCLE1B
QVA1NUIsRUFBYyxHQUFLQSxPQTRDOUJyQixFQUFPdUMsUUFDTjI0QixVQUNDclgsUUFDQzVpQixJ
QUFLLFNBQVVVLEdBRWQsR0FBSXdPLEdBQU1uUSxFQUFPNE8sS0FBS3NCLEtBQU12TyxFQUFNLFFB
Q2xDLE9BQWMsT0FBUHdPLEVBQ05BLEVBTUFrcUIsR0FBa0JyNkIsRUFBT04sS0FBTWlDLE1BR2xD
NEUsUUFDQ3RGLElBQUssU0FBVVUsR0FDZCxHQUFJNEQsR0FBT3NlLEVBQVFqaUIsRUFDbEJZLEVB
QVViLEVBQUthLFFBQ2ZrWCxFQUFRL1gsRUFBS3FTLGNBQ2JvUyxFQUFvQixlQUFkemtCLEVBQUtr
QyxLQUNYeWYsRUFBUzhDLEVBQU0sUUFDZm1MLEVBQU1uTCxFQUFNMU0sRUFBUSxFQUFJbFgsRUFB
UXpCLE1BVWpDLEtBUENhLEVBREk4WCxFQUFRLEVBQ1I2WCxFQUdBbkwsRUFBTTFNLEVBQVEsRUFJ
WDlYLEVBQUkydkIsRUFBSzN2QixJQUtoQixHQUpBaWlCLEVBQVNyaEIsRUFBU1osSUFJWGlpQixF
QUFPOVAsVUFBWW5TLElBQU04WCxLQUc3Qm1LLEVBQU9yWixZQUNMcVosRUFBT2hrQixXQUFXMkss
V0FDbkJ4SyxFQUFPeUUsU0FBVW9mLEVBQU9oa0IsV0FBWSxhQUFpQixDQU14RCxHQUhBMEYsRUFB
UXZGLEVBQVE2akIsR0FBUzFULE1BR3BCaVcsRUFDSixNQUFPN2dCLEVBSVIrZCxHQUFPM2tCLEtB
QU00RyxHQUlmLE1BQU8rZCxJQUdSbEQsSUFBSyxTQUFVemUsRUFBTTRELEdBQ3BCLEdBQUk0MUIs
R0FBV3RYLEVBQ2RyaEIsRUFBVWIsRUFBS2EsUUFDZjhnQixFQUFTdGpCLEVBQU82RSxVQUFXVSxH
QUMzQjNELEVBQUlZLEVBQVF6QixNQUViLE9BQVFhLElBQ1BpaUIsRUFBU3JoQixFQUFTWixJQUli
aWlCLEVBQU85UCxTQUNYL1QsRUFBTytFLFFBQVMvRSxFQUFPazdCLFNBQVNyWCxPQUFPNWlCLElB
QUs0aUIsR0FBVVAsU0FFdEQ2WCxHQUFZLEVBVWQsT0FITUEsS0FDTHg1QixFQUFLcVMsa0JBRUNz
UCxPQU9YdGpCLEVBQU93QixNQUFRLFFBQVMsWUFBYyxXQUNyQ3hCLEVBQU9rN0IsU0FBVS84QixP
QUNoQmlpQixJQUFLLFNBQVV6ZSxFQUFNNEQsR0FDcEIsR0FBS3ZGLEVBQU9rRCxRQUFTcUMsR0FD
cEIsTUFBUzVELEdBQUttUyxRQUFVOVQsRUFBTytFLFFBQVMvRSxFQUFRMkIsR0FBT3dPLE1BQU81
SyxRQUkzRG5HLEVBQVErNUIsVUFDYm41QixFQUFPazdCLFNBQVUvOEIsTUFBTzhDLElBQU0sU0FB
VVUsR0FDdkMsTUFBd0MsUUFBakNBLEVBQUttSyxhQUFjLFNBQXFCLEtBQU9uSyxFQUFLNEQsU0FX
OUQsSUFBSTYxQixJQUFjLGlDQUVsQnA3QixHQUFPdUMsT0FBUXZDLEVBQU9zbUIsT0FFckI2QyxR
QUFTLFNBQVU3QyxFQUFPakcsRUFBTTFlLEVBQU0wNUIsR0FFckMsR0FBSXo1QixHQUFHdUwsRUFB
S3pILEVBQUs0MUIsRUFBWUMsRUFBUXRVLEVBQVEzSixFQUM1Q2tlLEdBQWM3NUIsR0FBUTVELEdB
Q3RCOEYsRUFBTzlFLEVBQU9JLEtBQU1tbkIsRUFBTyxRQUFXQSxFQUFNemlCLEtBQU95aUIsRUFD
bkRRLEVBQWEvbkIsRUFBT0ksS0FBTW1uQixFQUFPLGFBQWdCQSxFQUFNZ0IsVUFBVXRoQixNQUFP
LE9BS3pFLElBSEFtSCxFQUFNekgsRUFBTS9ELEVBQU9BLEdBQVE1RCxFQUdKLElBQWxCNEQsRUFB
S2lKLFVBQW9DLElBQWxCakosRUFBS2lKLFdBSzVCd3dCLEdBQVl2dkIsS0FBTWhJLEVBQU83RCxF
QUFPc21CLE1BQU1ZLGFBSXRDcmpCLEVBQUtqRixRQUFTLFVBR2xCa29CLEVBQWFqakIsRUFBS21D
LE1BQU8sS0FDekJuQyxFQUFPaWpCLEVBQVdwYSxRQUNsQm9hLEVBQVd6a0IsUUFFWms1QixFQUFT
MTNCLEVBQUtqRixRQUFTLEtBQVEsR0FBSyxLQUFPaUYsRUFHM0N5aUIsRUFBUUEsRUFBT3RtQixF
QUFPb0QsU0FDckJrakIsRUFDQSxHQUFJdG1CLEdBQU82b0IsTUFBT2hsQixFQUF1QixnQkFBVnlp
QixJQUFzQkEsR0FHdERBLEVBQU1tVixVQUFZSixFQUFlLEVBQUksRUFDckMvVSxFQUFNZ0IsVUFB
WVIsRUFBVzdhLEtBQU0sS0FDbkNxYSxFQUFNK0IsV0FBYS9CLEVBQU1nQixVQUN4QixHQUFJbGYs
UUFBUSxVQUFZMGUsRUFBVzdhLEtBQU0saUJBQW9CLFdBQzdELEtBR0RxYSxFQUFNMVUsT0FBU3pP
LE9BQ1RtakIsRUFBTXhqQixTQUNYd2pCLEVBQU14akIsT0FBU25CLEdBSWhCMGUsRUFBZSxNQUFS
QSxHQUNKaUcsR0FDRnRtQixFQUFPNkUsVUFBV3diLEdBQVFpRyxJQUczQmhKLEVBQVV0ZCxFQUFP
c21CLE1BQU1oSixRQUFTelosT0FDMUJ3M0IsSUFBZ0IvZCxFQUFRNkwsU0FBVzdMLEVBQVE2TCxR
QUFRdG5CLE1BQU9GLEVBQU0wZSxNQUFXLEdBQWpGLENBTUEsSUFBTWdiLElBQWlCL2QsRUFBUTRM
LFdBQWFscEIsRUFBTytELFNBQVVwQyxHQUFTLENBTXJFLElBSkEyNUIsRUFBYWhlLEVBQVE4Sixj
QUFnQnZqQixFQUMvQnUzQixHQUFZdnZCLEtBQU15dkIsRUFBYXozQixLQUNwQ3NKLEVBQU1BLEVB
QUl0TixZQUVIc04sRUFBS0EsRUFBTUEsRUFBSXROLFdBQ3RCMjdCLEVBQVU3OEIsS0FBTXdPLEdB
Q2hCekgsRUFBTXlILENBSUZ6SCxNQUFVL0QsRUFBSzJKLGVBQWlCdk4sSUFDcEN5OUIsRUFBVTc4
QixLQUFNK0csRUFBSXdJLGFBQWV4SSxFQUFJZzJCLGNBQWdCeDlCLEdBS3pEMEQsRUFBSSxDQUNK
LFFBQVV1TCxFQUFNcXVCLEVBQVc1NUIsUUFBWTBrQixFQUFNNEIsdUJBRTVDNUIsRUFBTXppQixL
QUFPakMsRUFBSSxFQUNoQjA1QixFQUNBaGUsRUFBUStKLFVBQVl4akIsRUFHckJvakIsR0FBV3pH
LEVBQVN2ZixJQUFLa00sRUFBSyxlQUFvQm1aLEVBQU16aUIsT0FDdkQyYyxFQUFTdmYsSUFBS2tN
LEVBQUssVUFDZjhaLEdBQ0pBLEVBQU9wbEIsTUFBT3NMLEVBQUtrVCxHQUlwQjRHLEVBQVNzVSxH
QUFVcHVCLEVBQUtvdUIsR0FDbkJ0VSxHQUFVQSxFQUFPcGxCLE9BQVNpZSxFQUFZM1MsS0FDMUNt
WixFQUFNMVUsT0FBU3FWLEVBQU9wbEIsTUFBT3NMLEVBQUtrVCxHQUM3QmlHLEVBQU0xVSxVQUFX
LEdBQ3JCMFUsRUFBTWdDLGlCQW9DVCxPQWhDQWhDLEdBQU16aUIsS0FBT0EsRUFHUHczQixHQUFp
Qi9VLEVBQU1tRCxzQkFFcEJuTSxFQUFRNEcsVUFDZjVHLEVBQVE0RyxTQUFTcmlCLE1BQU8yNUIs
RUFBVTd6QixNQUFPMFksTUFBVyxJQUNwRFAsRUFBWW5lLElBSVA0NUIsR0FBVXY3QixFQUFPZ0Qs
V0FBWXJCLEVBQU1rQyxNQUFhN0QsRUFBTytELFNBQVVwQyxLQUdyRStELEVBQU0vRCxFQUFNNDVC
LEdBRVA3MUIsSUFDSi9ELEVBQU00NUIsR0FBVyxNQUlsQnY3QixFQUFPc21CLE1BQU1ZLFVBQVly
akIsRUFDekJsQyxFQUFNa0MsS0FDTjdELEVBQU9zbUIsTUFBTVksVUFBWS9qQixPQUVwQnVDLElB
Q0ovRCxFQUFNNDVCLEdBQVc3MUIsSUFNZDRnQixFQUFNMVUsU0FLZCtwQixTQUFVLFNBQVU5M0Is
RUFBTWxDLEVBQU0ya0IsR0FDL0IsR0FBSXpiLEdBQUk3SyxFQUFPdUMsT0FDZCxHQUFJdkMsR0FB
TzZvQixNQUNYdkMsR0FFQ3ppQixLQUFNQSxFQUNOZ21CLGFBQWEsR0FJZjdwQixHQUFPc21CLE1B
QU02QyxRQUFTdGUsRUFBRyxLQUFNbEosTUFLakMzQixFQUFPRyxHQUFHb0MsUUFFVDRtQixRQUFT
LFNBQVV0bEIsRUFBTXdjLEdBQ3hCLE1BQU9saUIsTUFBS3FELEtBQU0sV0FDakJ4QixFQUFPc21C
LE1BQU02QyxRQUFTdGxCLEVBQU13YyxFQUFNbGlCLFNBR3BDeTlCLGVBQWdCLFNBQVUvM0IsRUFB
TXdjLEdBQy9CLEdBQUkxZSxHQUFPeEQsS0FBTSxFQUNqQixJQUFLd0QsRUFDSixNQUFPM0IsR0FB
T3NtQixNQUFNNkMsUUFBU3RsQixFQUFNd2MsRUFBTTFlLEdBQU0sTUFNbEQzQixFQUFPd0IsS0FB
TSx3TEFFZ0R3RSxNQUFPLEtBQ25FLFNBQVVwRSxFQUFHYSxHQUdiekMsRUFBT0csR0FBSXNDLEdB
QVMsU0FBVTRkLEVBQU1sZ0IsR0FDbkMsTUFBTzJCLFdBQVVmLE9BQVMsRUFDekI1QyxLQUFLK25C
LEdBQUl6akIsRUFBTSxLQUFNNGQsRUFBTWxnQixHQUMzQmhDLEtBQUtnckIsUUFBUzFtQixNQUlq
QnpDLEVBQU9HLEdBQUdvQyxRQUNUczVCLE1BQU8sU0FBVUMsRUFBUUMsR0FDeEIsTUFBTzU5QixN
QUFLd3RCLFdBQVltUSxHQUFTbFEsV0FBWW1RLEdBQVNELE1BT3hEMThCLEVBQVE0OEIsUUFBVSxh
QUFlOTlCLEdBVzNCa0IsRUFBUTQ4QixTQUNiaDhCLEVBQU93QixNQUFRZ1MsTUFBTyxVQUFXNFYs
S0FBTSxZQUFjLFNBQVUyQyxFQUFNakUsR0FHcEUsR0FBSTlhLEdBQVUsU0FBVXNaLEdBQ3ZCdG1C
LEVBQU9zbUIsTUFBTXFWLFNBQVU3VCxFQUFLeEIsRUFBTXhqQixPQUFROUMsRUFBT3NtQixNQUFN
d0IsSUFBS3hCLElBRzdEdG1CLEdBQU9zbUIsTUFBTWhKLFFBQVN3SyxJQUNyQk4sTUFBTyxXQUNO
LEdBQUlqb0IsR0FBTXBCLEtBQUttTixlQUFpQm5OLEtBQy9CODlCLEVBQVd6YixFQUFTZixPQUFR
bGdCLEVBQUt1b0IsRUFFNUJtVSxJQUNMMThCLEVBQUk2TyxpQkFBa0IyZCxFQUFNL2UsR0FBUyxH
QUV0Q3dULEVBQVNmLE9BQVFsZ0IsRUFBS3VvQixHQUFPbVUsR0FBWSxHQUFNLElBRWhEdFUsU0FB
VSxXQUNULEdBQUlwb0IsR0FBTXBCLEtBQUttTixlQUFpQm5OLEtBQy9CODlCLEVBQVd6YixFQUFT
ZixPQUFRbGdCLEVBQUt1b0IsR0FBUSxDQUVwQ21VLEdBS0x6YixFQUFTZixPQUFRbGdCLEVBQUt1
b0IsRUFBS21VLElBSjNCMThCLEVBQUkrZixvQkFBcUJ5TSxFQUFNL2UsR0FBUyxHQUN4Q3dULEVB
QVNwRixPQUFRN2IsRUFBS3VvQixPQVMzQixJQUFJeFUsSUFBV3BWLEVBQU9vVixTQUVsQjRvQixH
QUFRbDhCLEVBQU80RixNQUVmdTJCLEdBQVMsSUFLYm44QixHQUFPbzhCLFNBQVcsU0FBVS9iLEdB
QzNCLEdBQUlwTyxFQUNKLEtBQU1vTyxHQUF3QixnQkFBVEEsR0FDcEIsTUFBTyxLQUtSLEtBQ0Nw
TyxHQUFNLEdBQU0vVCxHQUFPbStCLFdBQWNDLGdCQUFpQmpjLEVBQU0sWUFDdkQsTUFBUXhWLEdB
Q1RvSCxFQUFNOU8sT0FNUCxNQUhNOE8sS0FBT0EsRUFBSXZHLHFCQUFzQixlQUFnQjNLLFFBQ3RE
ZixFQUFPeUQsTUFBTyxnQkFBa0I0YyxHQUUxQnBPLEVBSVIsSUFDQ3NxQixJQUFXLFFBQ1hDLEdB
QVEsU0FDUkMsR0FBa0Isd0NBQ2xCQyxHQUFlLG9DQUVoQixTQUFTQyxJQUFhdEosRUFBUXp2QixF
QUFLZzVCLEVBQWFoakIsR0FDL0MsR0FBSW5YLEVBRUosSUFBS3pDLEVBQU9rRCxRQUFTVSxHQUdw
QjVELEVBQU93QixLQUFNb0MsRUFBSyxTQUFVaEMsRUFBRzZaLEdBQ3pCbWhCLEdBQWVMLEdBQVMx
d0IsS0FBTXduQixHQUdsQ3paLEVBQUt5WixFQUFRNVgsR0FLYmtoQixHQUNDdEosRUFBUyxLQUFx
QixnQkFBTjVYLElBQXVCLE1BQUxBLEVBQVk3WixFQUFJLElBQU8sSUFDakU2WixFQUNBbWhCLEVB
Q0FoakIsU0FLRyxJQUFNZ2pCLEdBQXNDLFdBQXZCNThCLEVBQU82RCxLQUFNRCxHQVV4Q2dXLEVB
QUt5WixFQUFRenZCLE9BUGIsS0FBTW5CLElBQVFtQixHQUNiKzRCLEdBQWF0SixFQUFTLElBQU01
d0IsRUFBTyxJQUFLbUIsRUFBS25CLEdBQVFtNkIsRUFBYWhqQixHQVlyRTVaLEVBQU82OEIsTUFB
USxTQUFVcDFCLEVBQUdtMUIsR0FDM0IsR0FBSXZKLEdBQ0h5SixLQUNBbGpCLEVBQU0sU0FBVXBO
LEVBQUt1d0IsR0FHcEIsR0FBSXgzQixHQUFRdkYsRUFBT2dELFdBQVkrNUIsR0FDOUJBLElBQ0FB
LENBRURELEdBQUdBLEVBQUUvN0IsUUFBV2k4QixtQkFBb0J4d0IsR0FBUSxJQUMzQ3d3QixtQkFB
NkIsTUFBVHozQixFQUFnQixHQUFLQSxHQUk1QyxJQUFLdkYsRUFBT2tELFFBQVN1RSxJQUFTQSxF
QUFFNUcsU0FBV2IsRUFBT2lELGNBQWV3RSxHQUdoRXpILEVBQU93QixLQUFNaUcsRUFBRyxXQUNm
bVMsRUFBS3piLEtBQUtzRSxLQUFNdEUsS0FBS29ILGFBT3RCLEtBQU04dEIsSUFBVTVyQixHQUNm
azFCLEdBQWF0SixFQUFRNXJCLEVBQUc0ckIsR0FBVXVKLEVBQWFoakIsRUFLakQsT0FBT2tqQixH
QUFFN3dCLEtBQU0sTUFHaEJqTSxFQUFPRyxHQUFHb0MsUUFDVDA2QixVQUFXLFdBQ1YsTUFBT2o5
QixHQUFPNjhCLE1BQU8xK0IsS0FBSysrQixtQkFFM0JBLGVBQWdCLFdBQ2YsTUFBTy8rQixNQUFL
dUQsSUFBSyxXQUdoQixHQUFJdU8sR0FBV2pRLEVBQU9zZ0IsS0FBTW5pQixLQUFNLFdBQ2xDLE9B
QU84UixHQUFXalEsRUFBTzZFLFVBQVdvTCxHQUFhOVIsT0FFakR1USxPQUFRLFdBQ1IsR0FBSTdL
LEdBQU8xRixLQUFLMEYsSUFHaEIsT0FBTzFGLE1BQUtzRSxPQUFTekMsRUFBUTdCLE1BQU9tYSxH
QUFJLGNBQ3ZDb2tCLEdBQWE3d0IsS0FBTTFOLEtBQUtzRyxZQUFlZzRCLEdBQWdCNXdCLEtBQU1o
SSxLQUMzRDFGLEtBQUsyVixVQUFZMlAsR0FBZTVYLEtBQU1oSSxNQUV6Q25DLElBQUssU0FBVUUs
RUFBR0QsR0FDbEIsR0FBSXdPLEdBQU1uUSxFQUFRN0IsTUFBT2dTLEtBRXpCLE9BQVksT0FBUEEs
RUFDRyxLQUdIblEsRUFBT2tELFFBQVNpTixHQUNiblEsRUFBTzBCLElBQUt5TyxFQUFLLFNBQVVB
LEdBQ2pDLE9BQVMxTixLQUFNZCxFQUFLYyxLQUFNOEMsTUFBTzRLLEVBQUk1TSxRQUFTaTVCLEdB
QU8sWUFJOUMvNUIsS0FBTWQsRUFBS2MsS0FBTThDLE1BQU80SyxFQUFJNU0sUUFBU2k1QixHQUFP
LFdBQ2xEdjdCLFFBS04sSUFDQ2s4QixJQUFNLE9BQ05DLEdBQVEsT0FDUkMsR0FBYSxnQkFDYkMs
R0FBVyw2QkFHWEMsR0FBaUIsNERBQ2pCQyxHQUFhLGlCQUNiQyxHQUFZLFFBV1o5RyxNQU9BK0cs
TUFHQUMsR0FBVyxLQUFLai9CLE9BQVEsS0FHeEJrL0IsR0FBZTcvQixFQUFTMEIsY0FBZSxJQUN2
Q20rQixJQUFhanFCLEtBQU9MLEdBQVNLLElBRzlCLFNBQVNrcUIsSUFBNkJDLEdBR3JDLE1BQU8s
VUFBVUMsRUFBb0IzaEIsR0FFRCxnQkFBdkIyaEIsS0FDWDNoQixFQUFPMmhCLEVBQ1BBLEVBQXFC
LElBR3RCLElBQUlDLEdBQ0hwOEIsRUFBSSxFQUNKcThCLEVBQVlGLEVBQW1CcjVCLGNBQWN3RyxN
QUFPb1AsTUFFckQsSUFBS3RhLEVBQU9nRCxXQUFZb1osR0FHdkIsTUFBVTRoQixFQUFXQyxFQUFX
cjhCLEtBR1IsTUFBbEJvOEIsRUFBVSxJQUNkQSxFQUFXQSxFQUFTdi9CLE1BQU8sSUFBTyxLQUNo
Q3EvQixFQUFXRSxHQUFhRixFQUFXRSxRQUFtQmp1QixRQUFTcU0sS0FJL0QwaEIsRUFBV0UsR0FB
YUYsRUFBV0UsUUFBbUJyL0IsS0FBTXlkLElBUW5FLFFBQVM4aEIsSUFBK0JKLEVBQVd0N0IsRUFB
U3cwQixFQUFpQm1ILEdBRTVFLEdBQUlDLE1BQ0hDLEVBQXFCUCxJQUFjSixFQUVwQyxTQUFTWSxH
QUFTTixHQUNqQixHQUFJanFCLEVBY0osT0FiQXFxQixHQUFXSixJQUFhLEVBQ3hCaCtCLEVBQU93
QixLQUFNczhCLEVBQVdFLE9BQWtCLFNBQVV0MEIsRUFBRzYwQixHQUN0RCxHQUFJQyxHQUFzQkQs
RUFBb0IvN0IsRUFBU3cwQixFQUFpQm1ILEVBQ3hFLE9BQW9DLGdCQUF4QkssSUFDVkgsR0FBcUJE
LEVBQVdJLEdBS3RCSCxJQUNEdHFCLEVBQVd5cUIsR0FEZixRQUhOaDhCLEVBQVF5N0IsVUFBVWx1
QixRQUFTeXVCLEdBQzNCRixFQUFTRSxJQUNGLEtBS0Z6cUIsRUFHUixNQUFPdXFCLEdBQVM5N0Is
RUFBUXk3QixVQUFXLE1BQVVHLEVBQVcsTUFBU0UsRUFBUyxLQU0zRSxRQUFTRyxJQUFZMzdCLEVB
QVFKLEdBQzVCLEdBQUk4SixHQUFLekosRUFDUjI3QixFQUFjMStCLEVBQU8yK0IsYUFBYUQsZUFF
bkMsS0FBTWx5QixJQUFPOUosR0FDUVMsU0FBZlQsRUFBSzhKLE1BQ1BreUIsRUFBYWx5QixHQUFR
MUosRUFBV0MsSUFBVUEsT0FBaUJ5SixHQUFROUosRUFBSzhKLEdBTzVFLE9BSkt6SixJQUNKL0Ms
RUFBT3VDLFFBQVEsRUFBTU8sRUFBUUMsR0FHdkJELEVBT1IsUUFBUzg3QixJQUFxQjlCLEVBQUdx
QixFQUFPVSxHQUV2QyxHQUFJQyxHQUFJajdCLEVBQU1rN0IsRUFBZUMsRUFDNUIzbEIsRUFBV3lq
QixFQUFFempCLFNBQ2I0a0IsRUFBWW5CLEVBQUVtQixTQUdmLE9BQTJCLE1BQW5CQSxFQUFXLEdB
Q2xCQSxFQUFVdnhCLFFBQ0V2SixTQUFQMjdCLElBQ0pBLEVBQUtoQyxFQUFFbUMsVUFBWWQsRUFB
TWUsa0JBQW1CLGdCQUs5QyxJQUFLSixFQUNKLElBQU1qN0IsSUFBUXdWLEdBQ2IsR0FBS0EsRUFB
VXhWLElBQVV3VixFQUFVeFYsR0FBT2dJLEtBQU1pekIsR0FBTyxDQUN0RGIsRUFBVWx1QixRQUFT
bE0sRUFDbkIsT0FNSCxHQUFLbzZCLEVBQVcsSUFBT1ksR0FDdEJFLEVBQWdCZCxFQUFXLE9BQ3JC
LENBR04sSUFBTXA2QixJQUFRZzdCLEdBQVksQ0FDekIsSUFBTVosRUFBVyxJQUFPbkIsRUFBRXFD
LFdBQVl0N0IsRUFBTyxJQUFNbzZCLEVBQVcsSUFBUSxDQUNyRWMsRUFBZ0JsN0IsQ0FDaEIsT0FF
S203QixJQUNMQSxFQUFnQm43QixHQUtsQms3QixFQUFnQkEsR0FBaUJDLEVBTWxDLEdBQUtELEVB
SUosTUFIS0EsS0FBa0JkLEVBQVcsSUFDakNBLEVBQVVsdUIsUUFBU2d2QixHQUViRixFQUFXRSxH
QU9wQixRQUFTSyxJQUFhdEMsRUFBR3VDLEVBQVVsQixFQUFPbUIsR0FDekMsR0FBSUMsR0FBT0Ms
RUFBU0MsRUFBTS81QixFQUFLNFQsRUFDOUI2bEIsS0FHQWxCLEVBQVluQixFQUFFbUIsVUFBVXgv
QixPQUd6QixJQUFLdy9CLEVBQVcsR0FDZixJQUFNd0IsSUFBUTNDLEdBQUVxQyxXQUNmQSxFQUFZ
TSxFQUFLLzZCLGVBQWtCbzRCLEVBQUVxQyxXQUFZTSxFQUluREQsR0FBVXZCLEVBQVV2eEIsT0FH
cEIsT0FBUTh5QixFQWNQLEdBWksxQyxFQUFFNEMsZUFBZ0JGLEtBQ3RCckIsRUFBT3JCLEVBQUU0
QyxlQUFnQkYsSUFBY0gsSUFJbEMvbEIsR0FBUWdtQixHQUFheEMsRUFBRTZDLGFBQzVCTixFQUFX
dkMsRUFBRTZDLFdBQVlOLEVBQVV2QyxFQUFFa0IsV0FHdEMxa0IsRUFBT2ttQixFQUNQQSxFQUFV
dkIsRUFBVXZ4QixRQUtuQixHQUFpQixNQUFaOHlCLEVBRUpBLEVBQVVsbUIsTUFHSixJQUFjLE1B
QVRBLEdBQWdCQSxJQUFTa21CLEVBQVUsQ0FNOUMsR0FIQUMsRUFBT04sRUFBWTdsQixFQUFPLElB
QU1rbUIsSUFBYUwsRUFBWSxLQUFPSyxJQUcxREMsRUFDTCxJQUFNRixJQUFTSixHQUlkLEdBREF6
NUIsRUFBTTY1QixFQUFNdjVCLE1BQU8sS0FDZE4sRUFBSyxLQUFRODVCLElBR2pCQyxFQUFPTixF
QUFZN2xCLEVBQU8sSUFBTTVULEVBQUssS0FDcEN5NUIsRUFBWSxLQUFPejVCLEVBQUssS0FDYixD
QUdOKzVCLEtBQVMsRUFDYkEsRUFBT04sRUFBWUksR0FHUkosRUFBWUksTUFBWSxJQUNuQ0MsRUFB
VTk1QixFQUFLLEdBQ2Z1NEIsRUFBVWx1QixRQUFTckssRUFBSyxJQUV6QixPQU9KLEdBQUsrNUIs
S0FBUyxFQUdiLEdBQUtBLEdBQVEzQyxFQUFBQSxVQUNadUMsRUFBV0ksRUFBTUosT0FFakIsS0FD
Q0EsRUFBV0ksRUFBTUosR0FDaEIsTUFBUXgwQixHQUNULE9BQ0N5UixNQUFPLGNBQ1A3WSxNQUFP
ZzhCLEVBQU81MEIsRUFBSSxzQkFBd0J5TyxFQUFPLE9BQVNrbUIsSUFTakUsT0FBU2xqQixNQUFP
LFVBQVcrRCxLQUFNZ2YsR0FHbENyL0IsRUFBT3VDLFFBR05xOUIsT0FBUSxFQUdSQyxnQkFDQUMs
UUFFQW5CLGNBQ0NvQixJQUFLenNCLEdBQVNLLEtBQ2Q5UCxLQUFNLE1BQ05tOEIsUUFBU3pDLEdB
QWUxeEIsS0FBTXlILEdBQVMyc0IsVUFDdkN0aUMsUUFBUSxFQUNSdWlDLGFBQWEsRUFDYkMsT0FB
TyxFQUNQQyxZQUFhLG1EQWNiQyxTQUNDakosSUFBS3VHLEdBQ0xqK0IsS0FBTSxhQUNOMnRCLEtB
QU0sWUFDTnBiLElBQUssNEJBQ0xxdUIsS0FBTSxxQ0FHUGpuQixVQUNDcEgsSUFBSyxVQUNMb2Is
S0FBTSxTQUNOaVQsS0FBTSxZQUdQWixnQkFDQ3p0QixJQUFLLGNBQ0x2UyxLQUFNLGVBQ040Z0Ms
S0FBTSxnQkFLUG5CLFlBR0NvQixTQUFVejJCLE9BR1YwMkIsYUFBYSxFQUdiQyxZQUFhNWYsS0FB
S0MsTUFHbEI0ZixXQUFZMWdDLEVBQU9vOEIsVUFPcEJzQyxhQUNDcUIsS0FBSyxFQUNMNy9CLFNB
QVMsSUFPWHlnQyxVQUFXLFNBQVU3OUIsRUFBUTg5QixHQUM1QixNQUFPQSxHQUdObkMsR0FBWUEs
R0FBWTM3QixFQUFROUMsRUFBTzIrQixjQUFnQmlDLEdBR3ZEbkMsR0FBWXorQixFQUFPMitCLGFB
QWM3N0IsSUFHbkMrOUIsY0FBZWhELEdBQTZCbEgsSUFDNUNtSyxjQUFlakQsR0FBNkJILElBRzVD
cUQsS0FBTSxTQUFVaEIsRUFBS3Y5QixHQUdBLGdCQUFSdTlCLEtBQ1h2OUIsRUFBVXU5QixFQUNW
QSxFQUFNNThCLFFBSVBYLEVBQVVBLEtBRVYsSUFBSXcrQixHQUdIQyxFQUdBQyxFQUNBQyxFQUdB
QyxFQUdBQyxFQUdBaGlCLEVBR0FpaUIsRUFHQTEvQixFQUdBMi9CLEVBR0F6RSxFQUFJOThCLEVB
QU8yZ0MsYUFBZW4rQixHQUcxQmcvQixFQUFrQjFFLEVBQUU1OEIsU0FBVzQ4QixFQUcvQjJFLEVB
QXFCM0UsRUFBRTU4QixVQUNwQnNoQyxFQUFnQjUyQixVQUFZNDJCLEVBQWdCM2dDLFFBQzdDYixF
QUFRd2hDLEdBQ1J4aEMsRUFBT3NtQixNQUdUOUosRUFBV3hjLEVBQU9tYyxXQUNsQnVsQixFQUFt
QjFoQyxFQUFPMGEsVUFBVyxlQUdyQ2luQixFQUFhN0UsRUFBRTZFLGVBR2ZDLEtBQ0FDLEtBR0FD
LEVBQVcsV0FHWDNELEdBQ0M1ZSxXQUFZLEVBR1oyZixrQkFBbUIsU0FBVTF5QixHQUM1QixHQUFJ
dEIsRUFDSixJQUFLbVUsRUFBWSxDQUNoQixJQUFNOGhCLEVBQWtCLENBQ3ZCQSxJQUNBLE9BQVVq
MkIsRUFBUW95QixHQUFTL3hCLEtBQU0yMUIsR0FDaENDLEVBQWlCajJCLEVBQU8sR0FBSXhHLGVB
QWtCd0csRUFBTyxHQUd2REEsRUFBUWkyQixFQUFpQjMwQixFQUFJOUgsZUFFOUIsTUFBZ0IsT0FB
VHdHLEVBQWdCLEtBQU9BLEdBSS9CNjJCLHNCQUF1QixXQUN0QixNQUFPMWlCLEdBQVk2aEIsRUFB
d0IsTUFJNUNjLGlCQUFrQixTQUFVdi9CLEVBQU04QyxHQU1qQyxNQUxrQixPQUFiOFosSUFDSjVj
LEVBQU9vL0IsRUFBcUJwL0IsRUFBS2lDLGVBQ2hDbTlCLEVBQXFCcC9CLEVBQUtpQyxnQkFBbUJq
QyxFQUM5Q20vQixFQUFnQm4vQixHQUFTOEMsR0FFbkJwSCxNQUlSOGpDLGlCQUFrQixTQUFVcCtC
LEdBSTNCLE1BSGtCLE9BQWJ3YixJQUNKeWQsRUFBRW1DLFNBQVdwN0IsR0FFUDFGLE1BSVJ3akMs
V0FBWSxTQUFVamdDLEdBQ3JCLEdBQUlwQyxFQUNKLElBQUtvQyxFQUNKLEdBQUsyZCxFQUdKOGUs
RUFBTTVoQixPQUFRN2EsRUFBS3k4QixFQUFNK0QsYUFJekIsS0FBTTVpQyxJQUFRb0MsR0FDYmln
QyxFQUFZcmlDLElBQVdxaUMsRUFBWXJpQyxHQUFRb0MsRUFBS3BDLEdBSW5ELE9BQU9uQixPQUlS
Z2tDLE1BQU8sU0FBVUMsR0FDaEIsR0FBSUMsR0FBWUQsR0FBY04sQ0FLOUIsT0FKS2QsSUFDSkEs
RUFBVW1CLE1BQU9FLEdBRWxCbDdCLEVBQU0sRUFBR2s3QixHQUNGbGtDLE1Bb0JWLElBZkFxZSxF
QUFTUixRQUFTbWlCLEdBS2xCckIsRUFBRWlELE1BQVVBLEdBQU9qRCxFQUFFaUQsS0FBT3pzQixH
QUFTSyxNQUFTLElBQzVDcFEsUUFBU2s2QixHQUFXbnFCLEdBQVMyc0IsU0FBVyxNQUcxQ25ELEVB
QUVqNUIsS0FBT3JCLEVBQVF1WixRQUFVdlosRUFBUXFCLE1BQVFpNUIsRUFBRS9nQixRQUFVK2dC
LEVBQUVqNUIsS0FHekRpNUIsRUFBRW1CLFdBQWNuQixFQUFFa0IsVUFBWSxLQUFNdDVCLGNBQWN3
RyxNQUFPb1AsS0FBcUIsSUFHeEQsTUFBakJ3aUIsRUFBRXdGLFlBQXNCLENBQzVCakIsRUFBWXRq
QyxFQUFTMEIsY0FBZSxJQUtwQyxLQUNDNGhDLEVBQVUxdEIsS0FBT21wQixFQUFFaUQsSUFJbkJz
QixFQUFVMXRCLEtBQU8wdEIsRUFBVTF0QixLQUMzQm1wQixFQUFFd0YsWUFBYzFFLEdBQWFxQyxT
QUFXLEtBQU9yQyxHQUFhMkUsTUFDM0RsQixFQUFVcEIsU0FBVyxLQUFPb0IsRUFBVWtCLEtBQ3RD
LE1BQVExM0IsR0FJVGl5QixFQUFFd0YsYUFBYyxHQWFsQixHQVJLeEYsRUFBRXpjLE1BQVF5YyxF
QUFFb0QsYUFBaUMsZ0JBQVhwRCxHQUFFemMsT0FDeEN5YyxFQUFFemMsS0FBT3JnQixFQUFPNjhC
LE1BQU9DLEVBQUV6YyxLQUFNeWMsRUFBRUYsY0FJbENzQixHQUErQnZILEdBQVltRyxFQUFHdDZC
LEVBQVMyN0IsR0FHbEQ5ZSxFQUNKLE1BQU84ZSxFQUtSbUQsR0FBY3RoQyxFQUFPc21CLE9BQVN3
VyxFQUFFbi9CLE9BRzNCMmpDLEdBQW1DLElBQXBCdGhDLEVBQU80L0IsVUFDMUI1L0IsRUFBT3Nt
QixNQUFNNkMsUUFBUyxhQUl2QjJULEVBQUVqNUIsS0FBT2k1QixFQUFFajVCLEtBQUtsRCxjQUdo
Qm04QixFQUFFMEYsWUFBY2hGLEdBQVczeEIsS0FBTWl4QixFQUFFajVCLE1BS25DbzlCLEVBQVdu
RSxFQUFFaUQsSUFBSXg4QixRQUFTNjVCLEdBQU8sSUFHM0JOLEVBQUUwRixXQXVCSTFGLEVBQUV6
YyxNQUFReWMsRUFBRW9ELGFBQ29ELEtBQXpFcEQsRUFBRXNELGFBQWUsSUFBS3hoQyxRQUFTLHVD
QUNqQ2srQixFQUFFemMsS0FBT3ljLEVBQUV6YyxLQUFLOWMsUUFBUzQ1QixHQUFLLE9BdEI5Qm9F
LEVBQVd6RSxFQUFFaUQsSUFBSXRoQyxNQUFPd2lDLEVBQVNsZ0MsUUFHNUIrN0IsRUFBRXpjLE9B
Q040Z0IsSUFBYzlFLEdBQU90d0IsS0FBTW8xQixHQUFhLElBQU0sS0FBUW5FLEVBQUV6YyxXQUdq
RHljLEdBQUV6YyxNQUlMeWMsRUFBRXZ3QixTQUFVLElBQ2hCMDBCLEVBQVdBLEVBQVMxOUIsUUFB
Uzg1QixHQUFZLE1BQ3pDa0UsR0FBYXBGLEdBQU90d0IsS0FBTW8xQixHQUFhLElBQU0sS0FBUSxL
QUFTL0UsTUFBWXFGLEdBSTNFekUsRUFBRWlELElBQU1rQixFQUFXTSxHQVNmekUsRUFBRTJGLGFB
Q0R6aUMsRUFBTzYvQixhQUFjb0IsSUFDekI5QyxFQUFNNkQsaUJBQWtCLG9CQUFxQmhpQyxFQUFP
Ni9CLGFBQWNvQixJQUU5RGpoQyxFQUFPOC9CLEtBQU1tQixJQUNqQjlDLEVBQU02RCxpQkFBa0Is
Z0JBQWlCaGlDLEVBQU84L0IsS0FBTW1CLE1BS25EbkUsRUFBRXpjLE1BQVF5YyxFQUFFMEYsWUFB
YzFGLEVBQUVzRCxlQUFnQixHQUFTNTlCLEVBQVE0OUIsY0FDakVqQyxFQUFNNkQsaUJBQWtCLGVB
QWdCbEYsRUFBRXNELGFBSTNDakMsRUFBTTZELGlCQUNMLFNBQ0FsRixFQUFFbUIsVUFBVyxJQUFP
bkIsRUFBRXVELFFBQVN2RCxFQUFFbUIsVUFBVyxJQUMzQ25CLEVBQUV1RCxRQUFTdkQsRUFBRW1C
LFVBQVcsS0FDQSxNQUFyQm5CLEVBQUVtQixVQUFXLEdBQWMsS0FBT04sR0FBVyxXQUFhLElBQzdE
YixFQUFFdUQsUUFBUyxLQUliLEtBQU16K0IsSUFBS2s3QixHQUFFNEYsUUFDWnZFLEVBQU02RCxp
QkFBa0JwZ0MsRUFBR2s3QixFQUFFNEYsUUFBUzlnQyxHQUl2QyxJQUFLazdCLEVBQUU2RixhQUNK
N0YsRUFBRTZGLFdBQVd4akMsS0FBTXFpQyxFQUFpQnJELEVBQU9yQixNQUFRLEdBQVN6ZCxHQUc5
RCxNQUFPOGUsR0FBTWdFLE9BZWQsSUFYQUwsRUFBVyxRQUdYSixFQUFpQjluQixJQUFLa2pCLEVB
QUUzRixVQUN4QmdILEVBQU1oM0IsS0FBTTIxQixFQUFFOEYsU0FDZHpFLEVBQU1saUIsS0FBTTZn
QixFQUFFcjVCLE9BR2R1OUIsRUFBWTlDLEdBQStCUixHQUFZWixFQUFHdDZCLEVBQVMyN0IsR0FL
NUQsQ0FTTixHQVJBQSxFQUFNNWUsV0FBYSxFQUdkK2hCLEdBQ0pHLEVBQW1CdFksUUFBUyxZQUFj
Z1YsRUFBT3JCLElBSTdDemQsRUFDSixNQUFPOGUsRUFJSHJCLEdBQUVxRCxPQUFTckQsRUFBRTdE
LFFBQVUsSUFDM0JtSSxFQUFlbGpDLEVBQU8rZixXQUFZLFdBQ2pDa2dCLEVBQU1nRSxNQUFPLFlB
Q1hyRixFQUFFN0QsU0FHTixLQUNDNVosR0FBWSxFQUNaMmhCLEVBQVU2QixLQUFNakIsRUFBZ0J6
NkIsR0FDL0IsTUFBUTBELEdBR1QsR0FBS3dVLEVBQ0osS0FBTXhVLEVBSVAxRCxNQUFVMEQsUUFo
Q1gxRCxNQUFVLGVBcUNYLFNBQVNBLEdBQU0rNkIsRUFBUVksRUFBa0JqRSxFQUFXNkQsR0FDbkQs
R0FBSXBELEdBQVdzRCxFQUFTbi9CLEVBQU80N0IsRUFBVTBELEVBQ3hDWCxFQUFhVSxDQUdUempC
LEtBSUxBLEdBQVksRUFHUCtoQixHQUNKbGpDLEVBQU9nN0IsYUFBY2tJLEdBS3RCSixFQUFZNzlC
LE9BR1orOUIsRUFBd0J3QixHQUFXLEdBR25DdkUsRUFBTTVlLFdBQWEyaUIsRUFBUyxFQUFJLEVB
QUksRUFHcEM1QyxFQUFZNEMsR0FBVSxLQUFPQSxFQUFTLEtBQWtCLE1BQVhBLEVBR3hDckQsSUFD
SlEsRUFBV1QsR0FBcUI5QixFQUFHcUIsRUFBT1UsSUFJM0NRLEVBQVdELEdBQWF0QyxFQUFHdUMs
RUFBVWxCLEVBQU9tQixHQUd2Q0EsR0FHQ3hDLEVBQUUyRixhQUNOTSxFQUFXNUUsRUFBTWUsa0JB
QW1CLGlCQUMvQjZELElBQ0ovaUMsRUFBTzYvQixhQUFjb0IsR0FBYThCLEdBRW5DQSxFQUFXNUUs
RUFBTWUsa0JBQW1CLFFBQy9CNkQsSUFDSi9pQyxFQUFPOC9CLEtBQU1tQixHQUFhOEIsSUFLWixN
QUFYYixHQUE2QixTQUFYcEYsRUFBRWo1QixLQUN4QnUrQixFQUFhLFlBR1MsTUFBWEYsRUFDWEUs
RUFBYSxlQUliQSxFQUFhL0MsRUFBUy9pQixNQUN0QnNtQixFQUFVdkQsRUFBU2hmLEtBQ25CNWMs
RUFBUTQ3QixFQUFTNTdCLE1BQ2pCNjdCLEdBQWE3N0IsS0FLZEEsRUFBUTIrQixHQUNIRixHQUFX
RSxJQUNmQSxFQUFhLFFBQ1JGLEVBQVMsSUFDYkEsRUFBUyxLQU1aL0QsRUFBTStELE9BQVNBLEVB
Q2YvRCxFQUFNaUUsWUFBZVUsR0FBb0JWLEdBQWUsR0FHbkQ5QyxFQUNKOWlCLEVBQVNtQixZQUFh
NmpCLEdBQW1Cb0IsRUFBU1IsRUFBWWpFLElBRTlEM2hCLEVBQVN1QixXQUFZeWpCLEdBQW1CckQs
RUFBT2lFLEVBQVkzK0IsSUFJNUQwNkIsRUFBTXdELFdBQVlBLEdBQ2xCQSxFQUFheCtCLE9BRVJt
K0IsR0FDSkcsRUFBbUJ0WSxRQUFTbVcsRUFBWSxjQUFnQixhQUNyRG5CLEVBQU9yQixFQUFHd0Ms
RUFBWXNELEVBQVVuL0IsSUFJcENpK0IsRUFBaUJubUIsU0FBVWltQixHQUFtQnJELEVBQU9pRSxJ
QUVoRGQsSUFDSkcsRUFBbUJ0WSxRQUFTLGdCQUFrQmdWLEVBQU9yQixNQUczQzk4QixFQUFPNC9C
LFFBQ2hCNS9CLEVBQU9zbUIsTUFBTTZDLFFBQVMsY0FLekIsTUFBT2dWLElBR1I2RSxRQUFTLFNB
QVVqRCxFQUFLMWYsRUFBTTVlLEdBQzdCLE1BQU96QixHQUFPaUIsSUFBSzgrQixFQUFLMWYsRUFB
TTVlLEVBQVUsU0FHekN3aEMsVUFBVyxTQUFVbEQsRUFBS3QrQixHQUN6QixNQUFPekIsR0FBT2lC
LElBQUs4K0IsRUFBSzU4QixPQUFXMUIsRUFBVSxhQUkvQ3pCLEVBQU93QixNQUFRLE1BQU8sUUFB
VSxTQUFVSSxFQUFHbWEsR0FDNUMvYixFQUFRK2IsR0FBVyxTQUFVZ2tCLEVBQUsxZixFQUFNNWUs
RUFBVW9DLEdBVWpELE1BUEs3RCxHQUFPZ0QsV0FBWXFkLEtBQ3ZCeGMsRUFBT0EsR0FBUXBDLEVB
Q2ZBLEVBQVc0ZSxFQUNYQSxFQUFPbGQsUUFJRG5ELEVBQU8rZ0MsS0FBTS9nQyxFQUFPdUMsUUFD
MUJ3OUIsSUFBS0EsRUFDTGw4QixLQUFNa1ksRUFDTmlpQixTQUFVbjZCLEVBQ1Z3YyxLQUFNQSxF
QUNOdWlCLFFBQVNuaEMsR0FDUHpCLEVBQU9pRCxjQUFlODhCLElBQVNBLE9BS3BDLy9CLEVBQU9z
dEIsU0FBVyxTQUFVeVMsR0FDM0IsTUFBTy8vQixHQUFPK2dDLE1BQ2JoQixJQUFLQSxFQUdMbDhC
LEtBQU0sTUFDTm02QixTQUFVLFNBQ1Z6eEIsT0FBTyxFQUNQNHpCLE9BQU8sRUFDUHhpQyxRQUFR
LEVBQ1J1bEMsVUFBVSxLQUtabGpDLEVBQU9HLEdBQUdvQyxRQUNUNGdDLFFBQVMsU0FBVTlWLEdB
Q2xCLEdBQUlwSSxFQXlCSixPQXZCSzltQixNQUFNLEtBQ0w2QixFQUFPZ0QsV0FBWXFxQixLQUN2
QkEsRUFBT0EsRUFBS2x1QixLQUFNaEIsS0FBTSxLQUl6QjhtQixFQUFPamxCLEVBQVFxdEIsRUFB
TWx2QixLQUFNLEdBQUltTixlQUFnQnRKLEdBQUksR0FBSWEsT0FBTyxHQUV6RDFFLEtBQU0sR0FB
STBCLFlBQ2RvbEIsRUFBS2dKLGFBQWM5dkIsS0FBTSxJQUcxQjhtQixFQUFLdmpCLElBQUssV0FD
VCxHQUFJQyxHQUFPeEQsSUFFWCxPQUFRd0QsRUFBS3loQyxrQkFDWnpoQyxFQUFPQSxFQUFLeWhD
LGlCQUdiLE9BQU96aEMsS0FDSm9zQixPQUFRNXZCLE9BR05BLE1BR1JrbEMsVUFBVyxTQUFVaFcs
R0FDcEIsTUFBS3J0QixHQUFPZ0QsV0FBWXFxQixHQUNoQmx2QixLQUFLcUQsS0FBTSxTQUFVSSxH
QUMzQjVCLEVBQVE3QixNQUFPa2xDLFVBQVdoVyxFQUFLbHVCLEtBQU1oQixLQUFNeUQsTUFJdEN6
RCxLQUFLcUQsS0FBTSxXQUNqQixHQUFJc1gsR0FBTzlZLEVBQVE3QixNQUNsQmtiLEVBQVdQLEVB
QUtPLFVBRVpBLEdBQVN0WSxPQUNic1ksRUFBUzhwQixRQUFTOVYsR0FHbEJ2VSxFQUFLaVYsT0FB
UVYsTUFLaEJwSSxLQUFNLFNBQVVvSSxHQUNmLEdBQUlycUIsR0FBYWhELEVBQU9nRCxXQUFZcXFC
LEVBRXBDLE9BQU9sdkIsTUFBS3FELEtBQU0sU0FBVUksR0FDM0I1QixFQUFRN0IsTUFBT2dsQyxR
QUFTbmdDLEVBQWFxcUIsRUFBS2x1QixLQUFNaEIsS0FBTXlELEdBQU15ckIsTUFJOURpVyxPQUFR
LFNBQVVyakMsR0FJakIsTUFIQTlCLE1BQUttVSxPQUFRclMsR0FBVzZTLElBQUssUUFBU3RSLEtB
QU0sV0FDM0N4QixFQUFRN0IsTUFBT2l3QixZQUFhandCLEtBQUt3TSxjQUUzQnhNLFFBS1Q2QixF
QUFPZ1EsS0FBSzlILFFBQVErdEIsT0FBUyxTQUFVdDBCLEdBQ3RDLE9BQVEzQixFQUFPZ1EsS0FB
SzlILFFBQVFxN0IsUUFBUzVoQyxJQUV0QzNCLEVBQU9nUSxLQUFLOUgsUUFBUXE3QixRQUFVLFNB
QVU1aEMsR0FDdkMsU0FBV0EsRUFBSzZoQyxhQUFlN2hDLEVBQUs4aEMsY0FBZ0I5aEMsRUFBS213
QixpQkFBaUIvd0IsU0FNM0VmLEVBQU8yK0IsYUFBYStFLElBQU0sV0FDekIsSUFDQyxNQUFPLElB
QUl4bEMsR0FBT3lsQyxlQUNqQixNQUFROTRCLEtBR1gsSUFBSSs0QixLQUdGQyxFQUFHLElBSUhD
LEtBQU0sS0FFUEMsR0FBZS9qQyxFQUFPMitCLGFBQWErRSxLQUVwQ3RrQyxHQUFRNGtDLE9BQVNE
LElBQWtCLG1CQUFxQkEsSUFDeEQza0MsRUFBUTJoQyxLQUFPZ0QsS0FBaUJBLEdBRWhDL2pDLEVB
QU84Z0MsY0FBZSxTQUFVdCtCLEdBQy9CLEdBQUlmLEdBQVV3aUMsQ0FHZCxJQUFLN2tDLEVBQVE0
a0MsTUFBUUQsS0FBaUJ2aEMsRUFBUTgvQixZQUM3QyxPQUNDTyxLQUFNLFNBQVVILEVBQVN2TCxH
QUN4QixHQUFJdjFCLEdBQ0g4aEMsRUFBTWxoQyxFQUFRa2hDLEtBV2YsSUFUQUEsRUFBSVEsS0FD
SDFoQyxFQUFRcUIsS0FDUnJCLEVBQVF1OUIsSUFDUnY5QixFQUFRMjlCLE1BQ1IzOUIsRUFBUTJo
QyxTQUNSM2hDLEVBQVFtUyxVQUlKblMsRUFBUTRoQyxVQUNaLElBQU14aUMsSUFBS1ksR0FBUTRo
QyxVQUNsQlYsRUFBSzloQyxHQUFNWSxFQUFRNGhDLFVBQVd4aUMsRUFLM0JZLEdBQVF5OEIsVUFB
WXlFLEVBQUl6QixrQkFDNUJ5QixFQUFJekIsaUJBQWtCei9CLEVBQVF5OEIsVUFRekJ6OEIsRUFB
UTgvQixhQUFnQkksRUFBUyxzQkFDdENBLEVBQVMsb0JBQXVCLGlCQUlqQyxLQUFNOWdDLElBQUs4
Z0MsR0FDVmdCLEVBQUkxQixpQkFBa0JwZ0MsRUFBRzhnQyxFQUFTOWdDLEdBSW5DSCxHQUFXLFNB
QVVvQyxHQUNwQixNQUFPLFlBQ0RwQyxJQUNKQSxFQUFXd2lDLEVBQWdCUCxFQUFJVyxPQUM5Qlgs
RUFBSVksUUFBVVosRUFBSWEsUUFBVWIsRUFBSWMsbUJBQXFCLEtBRXhDLFVBQVQzZ0MsRUFDSjYv
QixFQUFJdkIsUUFDZ0IsVUFBVHQrQixFQUtnQixnQkFBZjYvQixHQUFJeEIsT0FDZi9LLEVBQVUs
RUFBRyxTQUViQSxFQUdDdU0sRUFBSXhCLE9BQ0p3QixFQUFJdEIsWUFJTmpMLEVBQ0N5TSxHQUFr
QkYsRUFBSXhCLFNBQVl3QixFQUFJeEIsT0FDdEN3QixFQUFJdEIsV0FLK0IsVUFBakNzQixFQUFJ
ZSxjQUFnQixTQUNNLGdCQUFyQmYsR0FBSWdCLGNBQ1JDLE9BQVFqQixFQUFJckUsV0FDWjMvQixL
QUFNZ2tDLEVBQUlnQixjQUNiaEIsRUFBSTNCLDRCQVFUMkIsRUFBSVcsT0FBUzVpQyxJQUNid2lD
LEVBQWdCUCxFQUFJWSxRQUFVN2lDLEVBQVUsU0FLbkIwQixTQUFoQnVnQyxFQUFJYSxRQUNSYixF
QUFJYSxRQUFVTixFQUVkUCxFQUFJYyxtQkFBcUIsV0FHQSxJQUFuQmQsRUFBSW5rQixZQU1ScmhC
LEVBQU8rZixXQUFZLFdBQ2J4YyxHQUNKd2lDLE9BUUx4aUMsRUFBV0EsRUFBVSxRQUVyQixLQUdD
aWlDLEVBQUliLEtBQU1yZ0MsRUFBUWdnQyxZQUFjaGdDLEVBQVE2ZCxNQUFRLE1BQy9DLE1BQVF4
VixHQUdULEdBQUtwSixFQUNKLEtBQU1vSixLQUtUczNCLE1BQU8sV0FDRDFnQyxHQUNKQSxRQVdM
ekIsRUFBTzZnQyxjQUFlLFNBQVUvRCxHQUMxQkEsRUFBRXdGLGNBQ054RixFQUFFempCLFNBQVM3
WixRQUFTLEtBS3RCUSxFQUFPMmdDLFdBQ05OLFNBQ0M3Z0MsT0FBUSw2RkFHVDZaLFVBQ0M3WixP
QUFRLDJCQUVUMi9CLFlBQ0N5RixjQUFlLFNBQVVsbEMsR0FFeEIsTUFEQU0sR0FBT3NFLFdBQVk1
RSxHQUNaQSxNQU1WTSxFQUFPNmdDLGNBQWUsU0FBVSxTQUFVL0QsR0FDeEIzNUIsU0FBWjI1QixF
QUFFdndCLFFBQ051d0IsRUFBRXZ3QixPQUFRLEdBRU51d0IsRUFBRXdGLGNBQ054RixFQUFFajVC
LEtBQU8sU0FLWDdELEVBQU84Z0MsY0FBZSxTQUFVLFNBQVVoRSxHQUd6QyxHQUFLQSxFQUFFd0Ys
WUFBYyxDQUNwQixHQUFJOWlDLEdBQVFpQyxDQUNaLFFBQ0NvaEMsS0FBTSxTQUFVbjVCLEVBQUd5
dEIsR0FDbEIzM0IsRUFBU1EsRUFBUSxZQUFhc2dCLE1BQzdCdWtCLFFBQVMvSCxFQUFFZ0ksY0FD
WHBpQyxJQUFLbzZCLEVBQUVpRCxNQUNKN1osR0FDSCxhQUNBemtCLEVBQVcsU0FBVXNqQyxHQUNw
QnZsQyxFQUFPNGIsU0FDUDNaLEVBQVcsS0FDTnNqQyxHQUNKNU4sRUFBdUIsVUFBYjROLEVBQUls
aEMsS0FBbUIsSUFBTSxJQUFLa2hDLEVBQUlsaEMsUUFNbkQ5RixFQUFTNEIsS0FBS0MsWUFBYUos
RUFBUSxLQUVwQzJpQyxNQUFPLFdBQ0QxZ0MsR0FDSkEsUUFVTCxJQUFJdWpDLE9BQ0hDLEdBQVMs
bUJBR1ZqbEMsR0FBTzJnQyxXQUNOdUUsTUFBTyxXQUNQQyxjQUFlLFdBQ2QsR0FBSTFqQyxHQUFX
dWpDLEdBQWFyOUIsT0FBVzNILEVBQU9vRCxRQUFVLElBQVE4NEIsSUFFaEUsT0FEQS85QixNQUFN
c0QsSUFBYSxFQUNaQSxLQUtUekIsRUFBTzZnQyxjQUFlLGFBQWMsU0FBVS9ELEVBQUdzSSxFQUFr
QmpILEdBRWxFLEdBQUlrSCxHQUFjQyxFQUFhQyxFQUM5QkMsRUFBVzFJLEVBQUVvSSxTQUFVLElB
QVdELEdBQU9wNUIsS0FBTWl4QixFQUFFaUQsS0FDaEQsTUFDa0IsZ0JBQVhqRCxHQUFFemMsTUFF
NkMsS0FEbkR5YyxFQUFFc0QsYUFBZSxJQUNqQnhoQyxRQUFTLHNDQUNYcW1DLEdBQU9wNUIsS0FB
TWl4QixFQUFFemMsT0FBVSxPQUk1QixJQUFLbWxCLEdBQWlDLFVBQXJCMUksRUFBRW1CLFVBQVcs
R0E4RDdCLE1BM0RBb0gsR0FBZXZJLEVBQUVxSSxjQUFnQm5sQyxFQUFPZ0QsV0FBWTg1QixFQUFF
cUksZUFDckRySSxFQUFFcUksZ0JBQ0ZySSxFQUFFcUksY0FHRUssRUFDSjFJLEVBQUcwSSxHQUFh
MUksRUFBRzBJLEdBQVdqaUMsUUFBUzBoQyxHQUFRLEtBQU9JLEdBQzNDdkksRUFBRW9JLFNBQVUs
SUFDdkJwSSxFQUFFaUQsTUFBUzVELEdBQU90d0IsS0FBTWl4QixFQUFFaUQsS0FBUSxJQUFNLEtB
QVFqRCxFQUFFb0ksTUFBUSxJQUFNRyxHQUlqRXZJLEVBQUVxQyxXQUFZLGVBQWtCLFdBSS9CLE1B
SE1vRyxJQUNMdmxDLEVBQU95RCxNQUFPNGhDLEVBQWUsbUJBRXZCRSxFQUFtQixJQUkzQnpJLEVB
QUVtQixVQUFXLEdBQU0sT0FHbkJxSCxFQUFjcG5DLEVBQVFtbkMsR0FDdEJubkMsRUFBUW1uQyxH
QUFpQixXQUN4QkUsRUFBb0J6akMsV0FJckJxOEIsRUFBTTVoQixPQUFRLFdBR1FwWixTQUFoQm1p
QyxFQUNKdGxDLEVBQVE5QixHQUFTNjdCLFdBQVlzTCxHQUk3Qm5uQyxFQUFRbW5DLEdBQWlCQyxF
QUlyQnhJLEVBQUd1SSxLQUdQdkksRUFBRXFJLGNBQWdCQyxFQUFpQkQsY0FHbkNILEdBQWFybUMs
S0FBTTBtQyxJQUlmRSxHQUFxQnZsQyxFQUFPZ0QsV0FBWXNpQyxJQUM1Q0EsRUFBYUMsRUFBbUIs
SUFHakNBLEVBQW9CRCxFQUFjbmlDLFNBSTVCLFdBWVQvRCxFQUFRcW1DLG1CQUFxQixXQUM1QixH
QUFJdGlCLEdBQU9wbEIsRUFBUzJuQyxlQUFlRCxtQkFBb0IsSUFBS3RpQixJQUU1RCxPQURBQSxH
QUFLcFUsVUFBWSw2QkFDaUIsSUFBM0JvVSxFQUFLeFksV0FBVzVKLFVBUXhCZixFQUFPZ1osVUFB
WSxTQUFVcUgsRUFBTW5nQixFQUFTeWxDLEdBQzNDLEdBQXFCLGdCQUFUdGxCLEdBQ1gsUUFFdUIs
a0JBQVpuZ0IsS0FDWHlsQyxFQUFjemxDLEVBQ2RBLEdBQVUsRUFHWCxJQUFJb1YsR0FBTXN3QixF
QUFROWdCLENBd0JsQixPQXRCTTVrQixLQUlBZCxFQUFRcW1DLG9CQUNadmxDLEVBQVVuQyxFQUFT
Mm5DLGVBQWVELG1CQUFvQixJQUt0RG53QixFQUFPcFYsRUFBUVQsY0FBZSxRQUM5QjZWLEVBQUsz
QixLQUFPNVYsRUFBU3VWLFNBQVNLLEtBQzlCelQsRUFBUVAsS0FBS0MsWUFBYTBWLElBRTFCcFYs
RUFBVW5DLEdBSVo2bkMsRUFBU2x0QixFQUFXbk4sS0FBTThVLEdBQzFCeUUsR0FBVzZnQixNQUdO
QyxHQUNLMWxDLEVBQVFULGNBQWVtbUMsRUFBUSxNQUd6Q0EsRUFBUy9nQixJQUFpQnhFLEdBQVFu
Z0IsRUFBUzRrQixHQUV0Q0EsR0FBV0EsRUFBUS9qQixRQUN2QmYsRUFBUThrQixHQUFVMUosU0FH
WnBiLEVBQU9zQixTQUFXc2tDLEVBQU9qN0IsY0FPakMzSyxFQUFPRyxHQUFHOG9CLEtBQU8sU0FB
VThXLEVBQUs4RixFQUFRcGtDLEdBQ3ZDLEdBQUl4QixHQUFVNEQsRUFBTXc3QixFQUNuQnZtQixF
QUFPM2EsS0FDUG9vQixFQUFNd1osRUFBSW5oQyxRQUFTLElBc0RwQixPQXBESzJuQixRQUNKdG1C
LEVBQVdvNkIsR0FBa0IwRixFQUFJdGhDLE1BQU84bkIsSUFDeEN3WixFQUFNQSxFQUFJdGhDLE1B
QU8sRUFBRzhuQixJQUloQnZtQixFQUFPZ0QsV0FBWTZpQyxJQUd2QnBrQyxFQUFXb2tDLEVBQ1hB
LEVBQVMxaUMsUUFHRTBpQyxHQUE0QixnQkFBWEEsS0FDNUJoaUMsRUFBTyxRQUlIaVYsRUFBSy9Y
LE9BQVMsR0FDbEJmLEVBQU8rZ0MsTUFDTmhCLElBQUtBLEVBS0xsOEIsS0FBTUEsR0FBUSxNQUNk
bTZCLFNBQVUsT0FDVjNkLEtBQU13bEIsSUFDSDErQixLQUFNLFNBQVV1OUIsR0FHbkJyRixFQUFX
djlCLFVBRVhnWCxFQUFLdVUsS0FBTXB0QixFQUlWRCxFQUFRLFNBQVUrdEIsT0FBUS90QixFQUFP
Z1osVUFBVzByQixJQUFpQjkxQixLQUFNM08sR0FHbkV5a0MsS0FLRW5vQixPQUFROWEsR0FBWSxT
QUFVMDhCLEVBQU8rRCxHQUN4Q3BwQixFQUFLdFgsS0FBTSxXQUNWQyxFQUFTSSxNQUFPMUQsS0FB
TWtoQyxJQUFjbEIsRUFBTXVHLGFBQWN4QyxFQUFRL0QsUUFLNURoZ0MsTUFPUjZCLEVBQU93QixN
QUNOLFlBQ0EsV0FDQSxlQUNBLFlBQ0EsY0FDQSxZQUNFLFNBQVVJLEVBQUdpQyxHQUNmN0QsRUFB
T0csR0FBSTBELEdBQVMsU0FBVTFELEdBQzdCLE1BQU9oQyxNQUFLK25CLEdBQUlyaUIsRUFBTTFE
LE1BT3hCSCxFQUFPZ1EsS0FBSzlILFFBQVE0OUIsU0FBVyxTQUFVbmtDLEdBQ3hDLE1BQU8zQixH
QUFPaUYsS0FBTWpGLEVBQU9pNEIsT0FBUSxTQUFVOTNCLEdBQzVDLE1BQU93QixLQUFTeEIsRUFB
R3dCLE9BQ2hCWixPQVNMLFNBQVNnbEMsSUFBV3BrQyxHQUNuQixNQUFPM0IsR0FBTytELFNBQVVw
QyxHQUFTQSxFQUF5QixJQUFsQkEsRUFBS2lKLFVBQWtCakosRUFBS3VNLFlBR3JFbE8sRUFBT2dt
QyxRQUNOQyxVQUFXLFNBQVV0a0MsRUFBTWEsRUFBU1osR0FDbkMsR0FBSXNrQyxHQUFhQyxFQUFT
QyxFQUFXQyxFQUFRQyxFQUFXQyxFQUFZQyxFQUNuRTVWLEVBQVc1d0IsRUFBT21pQixJQUFLeGdC
LEVBQU0sWUFDN0I4a0MsRUFBVXptQyxFQUFRMkIsR0FDbEI2bkIsSUFHaUIsWUFBYm9ILElBQ0pq
dkIsRUFBS3NnQixNQUFNMk8sU0FBVyxZQUd2QjBWLEVBQVlHLEVBQVFULFNBQ3BCSSxFQUFZcG1D
LEVBQU9taUIsSUFBS3hnQixFQUFNLE9BQzlCNGtDLEVBQWF2bUMsRUFBT21pQixJQUFLeGdCLEVB
QU0sUUFDL0I2a0MsR0FBbUMsYUFBYjVWLEdBQXdDLFVBQWJBLEtBQzlDd1YsRUFBWUcsR0FBYTNu
QyxRQUFTLFdBSWhDNG5DLEdBQ0pOLEVBQWNPLEVBQVE3VixXQUN0QnlWLEVBQVNILEVBQVkvM0Is
SUFDckJnNEIsRUFBVUQsRUFBWWpULE9BR3RCb1QsRUFBU25pQyxXQUFZa2lDLElBQWUsRUFDcENE
LEVBQVVqaUMsV0FBWXFpQyxJQUFnQixHQUdsQ3ZtQyxFQUFPZ0QsV0FBWVIsS0FHdkJBLEVBQVVB
LEVBQVFyRCxLQUFNd0MsRUFBTUMsRUFBRzVCLEVBQU91QyxVQUFZK2pDLEtBR2pDLE1BQWY5akMs
RUFBUTJMLE1BQ1pxYixFQUFNcmIsSUFBUTNMLEVBQVEyTCxJQUFNbTRCLEVBQVVuNEIsSUFBUWs0
QixHQUUxQixNQUFoQjdqQyxFQUFReXdCLE9BQ1p6SixFQUFNeUosS0FBU3p3QixFQUFReXdCLEtB
QU9xVCxFQUFVclQsS0FBU2tULEdBRzdDLFNBQVczakMsR0FDZkEsRUFBUWtrQyxNQUFNdm5DLEtB
QU13QyxFQUFNNm5CLEdBRzFCaWQsRUFBUXRrQixJQUFLcUgsS0FLaEJ4cEIsRUFBT0csR0FBR29D
LFFBQ1R5akMsT0FBUSxTQUFVeGpDLEdBR2pCLEdBQUtWLFVBQVVmLE9BQ2QsTUFBbUJvQyxVQUFa
WCxFQUNOckUsS0FDQUEsS0FBS3FELEtBQU0sU0FBVUksR0FDcEI1QixFQUFPZ21DLE9BQU9DLFVB
QVc5bkMsS0FBTXFFLEVBQVNaLElBSTNDLElBQUlnRixHQUFTKy9CLEVBQUtDLEVBQU1ybkMsRUFD
dkJvQyxFQUFPeEQsS0FBTSxFQUVkLElBQU13RCxFQU9OLE1BQU1BLEdBQUttd0IsaUJBQWlCL3dC
LFFBSTVCNmxDLEVBQU9qbEMsRUFBS293Qix3QkFHUDZVLEVBQUtuWCxPQUFTbVgsRUFBS3ZSLFFB
Q3ZCOTFCLEVBQU1vQyxFQUFLMkosY0FDWHE3QixFQUFNWixHQUFXeG1DLEdBQ2pCcUgsRUFBVXJI
LEVBQUl1TyxpQkFHYkssSUFBS3k0QixFQUFLejRCLElBQU13NEIsRUFBSUUsWUFBY2pnQyxFQUFR
a2dDLFVBQzFDN1QsS0FBTTJULEVBQUszVCxLQUFPMFQsRUFBSUksWUFBY25nQyxFQUFRb2dDLGFB
S3ZDSixJQWxCR3o0QixJQUFLLEVBQUc4a0IsS0FBTSxJQXFCekJyQyxTQUFVLFdBQ1QsR0FBTXp5
QixLQUFNLEdBQVosQ0FJQSxHQUFJOG9DLEdBQWNqQixFQUNqQnJrQyxFQUFPeEQsS0FBTSxHQUNi
K29DLEdBQWlCLzRCLElBQUssRUFBRzhrQixLQUFNLEVBNEJoQyxPQXhCd0MsVUFBbkNqekIsRUFB
T21pQixJQUFLeGdCLEVBQU0sWUFHdEJxa0MsRUFBU3JrQyxFQUFLb3dCLHlCQUtka1YsRUFBZTlv
QyxLQUFLOG9DLGVBR3BCakIsRUFBUzduQyxLQUFLNm5DLFNBQ1JobUMsRUFBT3lFLFNBQVV3aUMs
RUFBYyxHQUFLLFVBQ3pDQyxFQUFlRCxFQUFhakIsVUFJN0JrQixHQUNDLzRCLElBQUsrNEIsRUFB
YS80QixJQUFNbk8sRUFBT21pQixJQUFLOGtCLEVBQWMsR0FBSyxrQkFBa0IsR0FDekVoVSxLQUFN
aVUsRUFBYWpVLEtBQU9qekIsRUFBT21pQixJQUFLOGtCLEVBQWMsR0FBSyxtQkFBbUIsTUFNN0U5
NEIsSUFBSzYzQixFQUFPNzNCLElBQU0rNEIsRUFBYS80QixJQUFNbk8sRUFBT21pQixJQUFLeGdC
LEVBQU0sYUFBYSxHQUNwRXN4QixLQUFNK1MsRUFBTy9TLEtBQU9pVSxFQUFhalUsS0FBT2p6QixF
QUFPbWlCLElBQUt4Z0IsRUFBTSxjQUFjLE1BYzFFc2xDLGFBQWMsV0FDYixNQUFPOW9DLE1BQUt1
RCxJQUFLLFdBQ2hCLEdBQUl1bEMsR0FBZTlvQyxLQUFLOG9DLFlBRXhCLE9BQVFBLEdBQTJELFdB
QTNDam5DLEVBQU9taUIsSUFBSzhrQixFQUFjLFlBQ2pEQSxFQUFlQSxFQUFhQSxZQUc3QixPQUFP
QSxJQUFnQm41QixRQU0xQjlOLEVBQU93QixNQUFRNnlCLFdBQVksY0FBZUQsVUFBVyxlQUFpQixT
QUFVclksRUFBUXVFLEdBQ3ZGLEdBQUluUyxHQUFNLGdCQUFrQm1TLENBRTVCdGdCLEdBQU9HLEdB
QUk0YixHQUFXLFNBQVU1TCxHQUMvQixNQUFPc1AsR0FBUXRoQixLQUFNLFNBQVV3RCxFQUFNb2Es
RUFBUTVMLEdBQzVDLEdBQUl3MkIsR0FBTVosR0FBV3BrQyxFQUVyQixPQUFhd0IsVUFBUmdOLEVB
Q0d3MkIsRUFBTUEsRUFBS3JtQixHQUFTM2UsRUFBTW9hLFFBRzdCNHFCLEVBQ0pBLEVBQUlRLFNB
Q0ZoNUIsRUFBWXc0QixFQUFJSSxZQUFWNTJCLEVBQ1BoQyxFQUFNZ0MsRUFBTXcyQixFQUFJRSxh
QUlqQmxsQyxFQUFNb2EsR0FBVzVMLElBRWhCNEwsRUFBUTVMLEVBQUtyTyxVQUFVZixXQVU1QmYs
RUFBT3dCLE1BQVEsTUFBTyxRQUFVLFNBQVVJLEVBQUcwZSxHQUM1Q3RnQixFQUFPZ3lCLFNBQVUx
UixHQUFTaVEsR0FBY254QixFQUFRMHdCLGNBQy9DLFNBQVVudUIsRUFBTXd1QixHQUNmLEdBQUtB
LEVBSUosTUFIQUEsR0FBV0QsR0FBUXZ1QixFQUFNMmUsR0FHbEJ1TyxHQUFVaGpCLEtBQU1za0Is
R0FDdEJud0IsRUFBUTJCLEdBQU9pdkIsV0FBWXRRLEdBQVMsS0FDcEM2UCxNQVFMbndCLEVBQU93
QixNQUFRNGxDLE9BQVEsU0FBVUMsTUFBTyxTQUFXLFNBQVU1a0MsRUFBTW9CLEdBQ2xFN0QsRUFB
T3dCLE1BQVEyeEIsUUFBUyxRQUFVMXdCLEVBQU04cEIsUUFBUzFvQixFQUFNeWpDLEdBQUksUUFB
VTdrQyxHQUNwRSxTQUFVOGtDLEVBQWNDLEdBR3hCeG5DLEVBQU9HLEdBQUlxbkMsR0FBYSxTQUFV
dFUsRUFBUTN0QixHQUN6QyxHQUFJbWEsR0FBWTVkLFVBQVVmLFNBQVl3bUMsR0FBa0MsaUJBQVhy
VSxJQUM1RHpCLEVBQVE4VixJQUFrQnJVLEtBQVcsR0FBUTN0QixLQUFVLEVBQU8sU0FBVyxTQUUx
RSxPQUFPa2EsR0FBUXRoQixLQUFNLFNBQVV3RCxFQUFNa0MsRUFBTTBCLEdBQzFDLEdBQUloRyxF
QUVKLE9BQUtTLEdBQU8rRCxTQUFVcEMsR0FHa0IsSUFBaEM2bEMsRUFBUzVvQyxRQUFTLFNBQ3hC
K0MsRUFBTSxRQUFVYyxHQUNoQmQsRUFBSzVELFNBQVMrUCxnQkFBaUIsU0FBV3JMLEdBSXJCLElB
QWxCZCxFQUFLaUosVUFDVHJMLEVBQU1vQyxFQUFLbU0sZ0JBSUp6SyxLQUFLa3VCLElBQ1g1dkIs
RUFBS3doQixLQUFNLFNBQVcxZ0IsR0FBUWxELEVBQUssU0FBV2tELEdBQzlDZCxFQUFLd2hCLEtB
QU0sU0FBVzFnQixHQUFRbEQsRUFBSyxTQUFXa0QsR0FDOUNsRCxFQUFLLFNBQVdrRCxLQUlEVSxT
QUFWb0MsRUFHTnZGLEVBQU9taUIsSUFBS3hnQixFQUFNa0MsRUFBTTR0QixHQUd4Qnp4QixFQUFP
aWlCLE1BQU90Z0IsRUFBTWtDLEVBQU0wQixFQUFPa3NCLElBQ2hDNXRCLEVBQU02YixFQUFZd1Qs
RUFBUy92QixPQUFXdWMsUUFNNUMxZixFQUFPRyxHQUFHb0MsUUFFVGtsQyxLQUFNLFNBQVV0aEIs
RUFBTzlGLEVBQU1sZ0IsR0FDNUIsTUFBT2hDLE1BQUsrbkIsR0FBSUMsRUFBTyxLQUFNOUYsRUFB
TWxnQixJQUVwQ3VuQyxPQUFRLFNBQVV2aEIsRUFBT2htQixHQUN4QixNQUFPaEMsTUFBS29vQixJ
QUFLSixFQUFPLEtBQU1obUIsSUFHL0J3bkMsU0FBVSxTQUFVMW5DLEVBQVVrbUIsRUFBTzlGLEVB
QU1sZ0IsR0FDMUMsTUFBT2hDLE1BQUsrbkIsR0FBSUMsRUFBT2xtQixFQUFVb2dCLEVBQU1sZ0Is
SUFFeEN5bkMsV0FBWSxTQUFVM25DLEVBQVVrbUIsRUFBT2htQixHQUd0QyxNQUE0QixLQUFyQjJC
LFVBQVVmLE9BQ2hCNUMsS0FBS29vQixJQUFLdG1CLEVBQVUsTUFDcEI5QixLQUFLb29CLElBQUtK
LEVBQU9sbUIsR0FBWSxLQUFNRSxNQUl0Q0gsRUFBTzZuQyxVQUFZaG5CLEtBQUtDLE1Ba0JELGtC
QUFYZ25CLFNBQXlCQSxPQUFPQyxLQUMzQ0QsT0FBUSxZQUFjLFdBQ3JCLE1BQU85bkMsSUFPVCxJ
QUdDZ29DLElBQVU5cEMsRUFBTzhCLE9BR2pCaW9DLEdBQUsvcEMsRUFBT2dxQyxDQXlCYixPQXZC
QWxvQyxHQUFPbW9DLFdBQWEsU0FBVXBsQyxHQVM3QixNQVJLN0UsR0FBT2dxQyxJQUFNbG9DLElB
Q2pCOUIsRUFBT2dxQyxFQUFJRCxJQUdQbGxDLEdBQVE3RSxFQUFPOEIsU0FBV0EsSUFDOUI5QixF
QUFPOEIsT0FBU2dvQyxJQUdWaG9DLEdBTUY1QixJQUNMRixFQUFPOEIsT0FBUzlCLEVBQU9ncUMs
RUFBSWxvQyxHQU9yQkEiLCJmaWxlIjoianF1ZXJ5Lm1pbi5qcyJ9ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9q
cXVlcnkvZGlzdC9qcXVlcnkuc2xpbS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVs
ZXMvanF1ZXJ5L2Rpc3QvanF1ZXJ5LnNsaW0uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGQzNmJmOWY5OWFhZTg0
NTRhYjdiYWEzNTIxOGFhZTAxODZiZGY2MwotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L2Rpc3QvanF1ZXJ5LnNsaW0uanMKQEAgLTAsMCAr
MSw4MTA3IEBACisvKiEKKyAqIGpRdWVyeSBKYXZhU2NyaXB0IExpYnJhcnkgdjMuMS4xIC1hamF4
LC1hamF4L2pzb25wLC1hamF4L2xvYWQsLWFqYXgvcGFyc2VYTUwsLWFqYXgvc2NyaXB0LC1hamF4
L3Zhci9sb2NhdGlvbiwtYWpheC92YXIvbm9uY2UsLWFqYXgvdmFyL3JxdWVyeSwtYWpheC94aHIs
LW1hbmlwdWxhdGlvbi9fZXZhbFVybCwtZXZlbnQvYWpheCwtZWZmZWN0cywtZWZmZWN0cy9hbmlt
YXRlZFNlbGVjdG9yLC1lZmZlY3RzL1R3ZWVuLC1kZXByZWNhdGVkCisgKiBodHRwczovL2pxdWVy
eS5jb20vCisgKgorICogSW5jbHVkZXMgU2l6emxlLmpzCisgKiBodHRwczovL3NpenpsZWpzLmNv
bS8KKyAqCisgKiBDb3B5cmlnaHQgalF1ZXJ5IEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1
dG9ycworICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlCisgKiBodHRwczovL2pxdWVy
eS5vcmcvbGljZW5zZQorICoKKyAqIERhdGU6IDIwMTYtMDktMjJUMjI6MzBaCisgKi8KKyggZnVu
Y3Rpb24oIGdsb2JhbCwgZmFjdG9yeSApIHsKKworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlm
ICggdHlwZW9mIG1vZHVsZSA9PT0gIm9iamVjdCIgJiYgdHlwZW9mIG1vZHVsZS5leHBvcnRzID09
PSAib2JqZWN0IiApIHsKKworICAgICAgICAvLyBGb3IgQ29tbW9uSlMgYW5kIENvbW1vbkpTLWxp
a2UgZW52aXJvbm1lbnRzIHdoZXJlIGEgcHJvcGVyIGB3aW5kb3dgCisgICAgICAgIC8vIGlzIHBy
ZXNlbnQsIGV4ZWN1dGUgdGhlIGZhY3RvcnkgYW5kIGdldCBqUXVlcnkuCisgICAgICAgIC8vIEZv
ciBlbnZpcm9ubWVudHMgdGhhdCBkbyBub3QgaGF2ZSBhIGB3aW5kb3dgIHdpdGggYSBgZG9jdW1l
bnRgCisgICAgICAgIC8vIChzdWNoIGFzIE5vZGUuanMpLCBleHBvc2UgYSBmYWN0b3J5IGFzIG1v
ZHVsZS5leHBvcnRzLgorICAgICAgICAvLyBUaGlzIGFjY2VudHVhdGVzIHRoZSBuZWVkIGZvciB0
aGUgY3JlYXRpb24gb2YgYSByZWFsIGB3aW5kb3dgLgorICAgICAgICAvLyBlLmcuIHZhciBqUXVl
cnkgPSByZXF1aXJlKCJqcXVlcnkiKSh3aW5kb3cpOworICAgICAgICAvLyBTZWUgdGlja2V0ICMx
NDU0OSBmb3IgbW9yZSBpbmZvLgorICAgICAgICBtb2R1bGUuZXhwb3J0cyA9IGdsb2JhbC5kb2N1
bWVudCA/CisgICAgICAgICAgICBmYWN0b3J5KCBnbG9iYWwsIHRydWUgKSA6CisgICAgICAgICAg
ICBmdW5jdGlvbiggdyApIHsKKyAgICAgICAgICAgICAgICBpZiAoICF3LmRvY3VtZW50ICkgewor
ICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoICJqUXVlcnkgcmVxdWlyZXMgYSB3
aW5kb3cgd2l0aCBhIGRvY3VtZW50IiApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFjdG9yeSggdyApOworICAgICAgICAgICAgfTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBmYWN0b3J5KCBnbG9iYWwgKTsKKyAgICB9CisKKy8vIFBhc3MgdGhpcyBpZiB3aW5k
b3cgaXMgbm90IGRlZmluZWQgeWV0Cit9ICkoIHR5cGVvZiB3aW5kb3cgIT09ICJ1bmRlZmluZWQi
ID8gd2luZG93IDogdGhpcywgZnVuY3Rpb24oIHdpbmRvdywgbm9HbG9iYWwgKSB7CisKKy8vIEVk
Z2UgPD0gMTIgLSAxMyssIEZpcmVmb3ggPD0xOCAtIDQ1KywgSUUgMTAgLSAxMSwgU2FmYXJpIDUu
MSAtIDkrLCBpT1MgNiAtIDkuMQorLy8gdGhyb3cgZXhjZXB0aW9ucyB3aGVuIG5vbi1zdHJpY3Qg
Y29kZSAoZS5nLiwgQVNQLk5FVCA0LjUpIGFjY2Vzc2VzIHN0cmljdCBtb2RlCisvLyBhcmd1bWVu
dHMuY2FsbGVlLmNhbGxlciAodHJhYy0xMzMzNSkuIEJ1dCBhcyBvZiBqUXVlcnkgMy4wICgyMDE2
KSwgc3RyaWN0IG1vZGUgc2hvdWxkIGJlIGNvbW1vbgorLy8gZW5vdWdoIHRoYXQgYWxsIHN1Y2gg
YXR0ZW1wdHMgYXJlIGd1YXJkZWQgaW4gYSB0cnkgYmxvY2suCisidXNlIHN0cmljdCI7CisKK3Zh
ciBhcnIgPSBbXTsKKwordmFyIGRvY3VtZW50ID0gd2luZG93LmRvY3VtZW50OworCit2YXIgZ2V0
UHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Y7CisKK3ZhciBzbGljZSA9IGFyci5zbGljZTsK
KwordmFyIGNvbmNhdCA9IGFyci5jb25jYXQ7CisKK3ZhciBwdXNoID0gYXJyLnB1c2g7CisKK3Zh
ciBpbmRleE9mID0gYXJyLmluZGV4T2Y7CisKK3ZhciBjbGFzczJ0eXBlID0ge307CisKK3ZhciB0
b1N0cmluZyA9IGNsYXNzMnR5cGUudG9TdHJpbmc7CisKK3ZhciBoYXNPd24gPSBjbGFzczJ0eXBl
Lmhhc093blByb3BlcnR5OworCit2YXIgZm5Ub1N0cmluZyA9IGhhc093bi50b1N0cmluZzsKKwor
dmFyIE9iamVjdEZ1bmN0aW9uU3RyaW5nID0gZm5Ub1N0cmluZy5jYWxsKCBPYmplY3QgKTsKKwor
dmFyIHN1cHBvcnQgPSB7fTsKKworCisKKyAgICBmdW5jdGlvbiBET01FdmFsKCBjb2RlLCBkb2Mg
KSB7CisgICAgICAgIGRvYyA9IGRvYyB8fCBkb2N1bWVudDsKKworICAgICAgICB2YXIgc2NyaXB0
ID0gZG9jLmNyZWF0ZUVsZW1lbnQoICJzY3JpcHQiICk7CisKKyAgICAgICAgc2NyaXB0LnRleHQg
PSBjb2RlOworICAgICAgICBkb2MuaGVhZC5hcHBlbmRDaGlsZCggc2NyaXB0ICkucGFyZW50Tm9k
ZS5yZW1vdmVDaGlsZCggc2NyaXB0ICk7CisgICAgfQorLyogZ2xvYmFsIFN5bWJvbCAqLworLy8g
RGVmaW5pbmcgdGhpcyBnbG9iYWwgaW4gLmVzbGludHJjLmpzb24gd291bGQgY3JlYXRlIGEgZGFu
Z2VyIG9mIHVzaW5nIHRoZSBnbG9iYWwKKy8vIHVuZ3VhcmRlZCBpbiBhbm90aGVyIHBsYWNlLCBp
dCBzZWVtcyBzYWZlciB0byBkZWZpbmUgZ2xvYmFsIG9ubHkgZm9yIHRoaXMgbW9kdWxlCisKKwor
Cit2YXIKKyAgICB2ZXJzaW9uID0gIjMuMS4xIC1hamF4LC1hamF4L2pzb25wLC1hamF4L2xvYWQs
LWFqYXgvcGFyc2VYTUwsLWFqYXgvc2NyaXB0LC1hamF4L3Zhci9sb2NhdGlvbiwtYWpheC92YXIv
bm9uY2UsLWFqYXgvdmFyL3JxdWVyeSwtYWpheC94aHIsLW1hbmlwdWxhdGlvbi9fZXZhbFVybCwt
ZXZlbnQvYWpheCwtZWZmZWN0cywtZWZmZWN0cy9hbmltYXRlZFNlbGVjdG9yLC1lZmZlY3RzL1R3
ZWVuLC1kZXByZWNhdGVkIiwKKworICAgIC8vIERlZmluZSBhIGxvY2FsIGNvcHkgb2YgalF1ZXJ5
CisgICAgalF1ZXJ5ID0gZnVuY3Rpb24oIHNlbGVjdG9yLCBjb250ZXh0ICkgeworCisgICAgICAg
IC8vIFRoZSBqUXVlcnkgb2JqZWN0IGlzIGFjdHVhbGx5IGp1c3QgdGhlIGluaXQgY29uc3RydWN0
b3IgJ2VuaGFuY2VkJworICAgICAgICAvLyBOZWVkIGluaXQgaWYgalF1ZXJ5IGlzIGNhbGxlZCAo
anVzdCBhbGxvdyBlcnJvciB0byBiZSB0aHJvd24gaWYgbm90IGluY2x1ZGVkKQorICAgICAgICBy
ZXR1cm4gbmV3IGpRdWVyeS5mbi5pbml0KCBzZWxlY3RvciwgY29udGV4dCApOworICAgIH0sCisK
KyAgICAvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4wIG9ubHkKKyAgICAvLyBNYWtlIHN1cmUgd2Ug
dHJpbSBCT00gYW5kIE5CU1AKKyAgICBydHJpbSA9IC9eW1xzXHVGRUZGXHhBMF0rfFtcc1x1RkVG
Rlx4QTBdKyQvZywKKworICAgIC8vIE1hdGNoZXMgZGFzaGVkIHN0cmluZyBmb3IgY2FtZWxpemlu
ZworICAgIHJtc1ByZWZpeCA9IC9eLW1zLS8sCisgICAgcmRhc2hBbHBoYSA9IC8tKFthLXpdKS9n
LAorCisgICAgLy8gVXNlZCBieSBqUXVlcnkuY2FtZWxDYXNlIGFzIGNhbGxiYWNrIHRvIHJlcGxh
Y2UoKQorICAgIGZjYW1lbENhc2UgPSBmdW5jdGlvbiggYWxsLCBsZXR0ZXIgKSB7CisgICAgICAg
IHJldHVybiBsZXR0ZXIudG9VcHBlckNhc2UoKTsKKyAgICB9OworCitqUXVlcnkuZm4gPSBqUXVl
cnkucHJvdG90eXBlID0geworCisgICAgLy8gVGhlIGN1cnJlbnQgdmVyc2lvbiBvZiBqUXVlcnkg
YmVpbmcgdXNlZAorICAgIGpxdWVyeTogdmVyc2lvbiwKKworICAgIGNvbnN0cnVjdG9yOiBqUXVl
cnksCisKKyAgICAvLyBUaGUgZGVmYXVsdCBsZW5ndGggb2YgYSBqUXVlcnkgb2JqZWN0IGlzIDAK
KyAgICBsZW5ndGg6IDAsCisKKyAgICB0b0FycmF5OiBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0
dXJuIHNsaWNlLmNhbGwoIHRoaXMgKTsKKyAgICB9LAorCisgICAgLy8gR2V0IHRoZSBOdGggZWxl
bWVudCBpbiB0aGUgbWF0Y2hlZCBlbGVtZW50IHNldCBPUgorICAgIC8vIEdldCB0aGUgd2hvbGUg
bWF0Y2hlZCBlbGVtZW50IHNldCBhcyBhIGNsZWFuIGFycmF5CisgICAgZ2V0OiBmdW5jdGlvbigg
bnVtICkgeworCisgICAgICAgIC8vIFJldHVybiBhbGwgdGhlIGVsZW1lbnRzIGluIGEgY2xlYW4g
YXJyYXkKKyAgICAgICAgaWYgKCBudW0gPT0gbnVsbCApIHsKKyAgICAgICAgICAgIHJldHVybiBz
bGljZS5jYWxsKCB0aGlzICk7CisgICAgICAgIH0KKworICAgICAgICAvLyBSZXR1cm4ganVzdCB0
aGUgb25lIGVsZW1lbnQgZnJvbSB0aGUgc2V0CisgICAgICAgIHJldHVybiBudW0gPCAwID8gdGhp
c1sgbnVtICsgdGhpcy5sZW5ndGggXSA6IHRoaXNbIG51bSBdOworICAgIH0sCisKKyAgICAvLyBU
YWtlIGFuIGFycmF5IG9mIGVsZW1lbnRzIGFuZCBwdXNoIGl0IG9udG8gdGhlIHN0YWNrCisgICAg
Ly8gKHJldHVybmluZyB0aGUgbmV3IG1hdGNoZWQgZWxlbWVudCBzZXQpCisgICAgcHVzaFN0YWNr
OiBmdW5jdGlvbiggZWxlbXMgKSB7CisKKyAgICAgICAgLy8gQnVpbGQgYSBuZXcgalF1ZXJ5IG1h
dGNoZWQgZWxlbWVudCBzZXQKKyAgICAgICAgdmFyIHJldCA9IGpRdWVyeS5tZXJnZSggdGhpcy5j
b25zdHJ1Y3RvcigpLCBlbGVtcyApOworCisgICAgICAgIC8vIEFkZCB0aGUgb2xkIG9iamVjdCBv
bnRvIHRoZSBzdGFjayAoYXMgYSByZWZlcmVuY2UpCisgICAgICAgIHJldC5wcmV2T2JqZWN0ID0g
dGhpczsKKworICAgICAgICAvLyBSZXR1cm4gdGhlIG5ld2x5LWZvcm1lZCBlbGVtZW50IHNldAor
ICAgICAgICByZXR1cm4gcmV0OworICAgIH0sCisKKyAgICAvLyBFeGVjdXRlIGEgY2FsbGJhY2sg
Zm9yIGV2ZXJ5IGVsZW1lbnQgaW4gdGhlIG1hdGNoZWQgc2V0LgorICAgIGVhY2g6IGZ1bmN0aW9u
KCBjYWxsYmFjayApIHsKKyAgICAgICAgcmV0dXJuIGpRdWVyeS5lYWNoKCB0aGlzLCBjYWxsYmFj
ayApOworICAgIH0sCisKKyAgICBtYXA6IGZ1bmN0aW9uKCBjYWxsYmFjayApIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMucHVzaFN0YWNrKCBqUXVlcnkubWFwKCB0aGlzLCBmdW5jdGlvbiggZWxlbSwg
aSApIHsKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjay5jYWxsKCBlbGVtLCBpLCBlbGVtICk7
CisgICAgICAgIH0gKSApOworICAgIH0sCisKKyAgICBzbGljZTogZnVuY3Rpb24oKSB7CisgICAg
ICAgIHJldHVybiB0aGlzLnB1c2hTdGFjayggc2xpY2UuYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyAp
ICk7CisgICAgfSwKKworICAgIGZpcnN0OiBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMuZXEoIDAgKTsKKyAgICB9LAorCisgICAgbGFzdDogZnVuY3Rpb24oKSB7CisgICAgICAgIHJl
dHVybiB0aGlzLmVxKCAtMSApOworICAgIH0sCisKKyAgICBlcTogZnVuY3Rpb24oIGkgKSB7Cisg
ICAgICAgIHZhciBsZW4gPSB0aGlzLmxlbmd0aCwKKyAgICAgICAgICAgIGogPSAraSArICggaSA8
IDAgPyBsZW4gOiAwICk7CisgICAgICAgIHJldHVybiB0aGlzLnB1c2hTdGFjayggaiA+PSAwICYm
IGogPCBsZW4gPyBbIHRoaXNbIGogXSBdIDogW10gKTsKKyAgICB9LAorCisgICAgZW5kOiBmdW5j
dGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMucHJldk9iamVjdCB8fCB0aGlzLmNvbnN0cnVj
dG9yKCk7CisgICAgfSwKKworICAgIC8vIEZvciBpbnRlcm5hbCB1c2Ugb25seS4KKyAgICAvLyBC
ZWhhdmVzIGxpa2UgYW4gQXJyYXkncyBtZXRob2QsIG5vdCBsaWtlIGEgalF1ZXJ5IG1ldGhvZC4K
KyAgICBwdXNoOiBwdXNoLAorICAgIHNvcnQ6IGFyci5zb3J0LAorICAgIHNwbGljZTogYXJyLnNw
bGljZQorfTsKKworalF1ZXJ5LmV4dGVuZCA9IGpRdWVyeS5mbi5leHRlbmQgPSBmdW5jdGlvbigp
IHsKKyAgICB2YXIgb3B0aW9ucywgbmFtZSwgc3JjLCBjb3B5LCBjb3B5SXNBcnJheSwgY2xvbmUs
CisgICAgICAgIHRhcmdldCA9IGFyZ3VtZW50c1sgMCBdIHx8IHt9LAorICAgICAgICBpID0gMSwK
KyAgICAgICAgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aCwKKyAgICAgICAgZGVlcCA9IGZhbHNl
OworCisgICAgLy8gSGFuZGxlIGEgZGVlcCBjb3B5IHNpdHVhdGlvbgorICAgIGlmICggdHlwZW9m
IHRhcmdldCA9PT0gImJvb2xlYW4iICkgeworICAgICAgICBkZWVwID0gdGFyZ2V0OworCisgICAg
ICAgIC8vIFNraXAgdGhlIGJvb2xlYW4gYW5kIHRoZSB0YXJnZXQKKyAgICAgICAgdGFyZ2V0ID0g
YXJndW1lbnRzWyBpIF0gfHwge307CisgICAgICAgIGkrKzsKKyAgICB9CisKKyAgICAvLyBIYW5k
bGUgY2FzZSB3aGVuIHRhcmdldCBpcyBhIHN0cmluZyBvciBzb21ldGhpbmcgKHBvc3NpYmxlIGlu
IGRlZXAgY29weSkKKyAgICBpZiAoIHR5cGVvZiB0YXJnZXQgIT09ICJvYmplY3QiICYmICFqUXVl
cnkuaXNGdW5jdGlvbiggdGFyZ2V0ICkgKSB7CisgICAgICAgIHRhcmdldCA9IHt9OworICAgIH0K
KworICAgIC8vIEV4dGVuZCBqUXVlcnkgaXRzZWxmIGlmIG9ubHkgb25lIGFyZ3VtZW50IGlzIHBh
c3NlZAorICAgIGlmICggaSA9PT0gbGVuZ3RoICkgeworICAgICAgICB0YXJnZXQgPSB0aGlzOwor
ICAgICAgICBpLS07CisgICAgfQorCisgICAgZm9yICggOyBpIDwgbGVuZ3RoOyBpKysgKSB7CisK
KyAgICAgICAgLy8gT25seSBkZWFsIHdpdGggbm9uLW51bGwvdW5kZWZpbmVkIHZhbHVlcworICAg
ICAgICBpZiAoICggb3B0aW9ucyA9IGFyZ3VtZW50c1sgaSBdICkgIT0gbnVsbCApIHsKKworICAg
ICAgICAgICAgLy8gRXh0ZW5kIHRoZSBiYXNlIG9iamVjdAorICAgICAgICAgICAgZm9yICggbmFt
ZSBpbiBvcHRpb25zICkgeworICAgICAgICAgICAgICAgIHNyYyA9IHRhcmdldFsgbmFtZSBdOwor
ICAgICAgICAgICAgICAgIGNvcHkgPSBvcHRpb25zWyBuYW1lIF07CisKKyAgICAgICAgICAgICAg
ICAvLyBQcmV2ZW50IG5ldmVyLWVuZGluZyBsb29wCisgICAgICAgICAgICAgICAgaWYgKCB0YXJn
ZXQgPT09IGNvcHkgKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIFJlY3Vyc2UgaWYgd2UncmUgbWVyZ2luZyBw
bGFpbiBvYmplY3RzIG9yIGFycmF5cworICAgICAgICAgICAgICAgIGlmICggZGVlcCAmJiBjb3B5
ICYmICggalF1ZXJ5LmlzUGxhaW5PYmplY3QoIGNvcHkgKSB8fAorICAgICAgICAgICAgICAgICAg
ICAoIGNvcHlJc0FycmF5ID0galF1ZXJ5LmlzQXJyYXkoIGNvcHkgKSApICkgKSB7CisKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKCBjb3B5SXNBcnJheSApIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGNvcHlJc0FycmF5ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBjbG9uZSA9
IHNyYyAmJiBqUXVlcnkuaXNBcnJheSggc3JjICkgPyBzcmMgOiBbXTsKKworICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgY2xvbmUgPSBzcmMgJiYg
alF1ZXJ5LmlzUGxhaW5PYmplY3QoIHNyYyApID8gc3JjIDoge307CisgICAgICAgICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgICAgICAgICAvLyBOZXZlciBtb3ZlIG9yaWdpbmFsIG9iamVj
dHMsIGNsb25lIHRoZW0KKyAgICAgICAgICAgICAgICAgICAgdGFyZ2V0WyBuYW1lIF0gPSBqUXVl
cnkuZXh0ZW5kKCBkZWVwLCBjbG9uZSwgY29weSApOworCisgICAgICAgICAgICAgICAgLy8gRG9u
J3QgYnJpbmcgaW4gdW5kZWZpbmVkIHZhbHVlcworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAo
IGNvcHkgIT09IHVuZGVmaW5lZCApIHsKKyAgICAgICAgICAgICAgICAgICAgdGFyZ2V0WyBuYW1l
IF0gPSBjb3B5OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0KKworICAgIC8vIFJldHVybiB0aGUgbW9kaWZpZWQgb2JqZWN0CisgICAgcmV0dXJuIHRh
cmdldDsKK307CisKK2pRdWVyeS5leHRlbmQoIHsKKworICAgIC8vIFVuaXF1ZSBmb3IgZWFjaCBj
b3B5IG9mIGpRdWVyeSBvbiB0aGUgcGFnZQorICAgIGV4cGFuZG86ICJqUXVlcnkiICsgKCB2ZXJz
aW9uICsgTWF0aC5yYW5kb20oKSApLnJlcGxhY2UoIC9cRC9nLCAiIiApLAorCisgICAgLy8gQXNz
dW1lIGpRdWVyeSBpcyByZWFkeSB3aXRob3V0IHRoZSByZWFkeSBtb2R1bGUKKyAgICBpc1JlYWR5
OiB0cnVlLAorCisgICAgZXJyb3I6IGZ1bmN0aW9uKCBtc2cgKSB7CisgICAgICAgIHRocm93IG5l
dyBFcnJvciggbXNnICk7CisgICAgfSwKKworICAgIG5vb3A6IGZ1bmN0aW9uKCkge30sCisKKyAg
ICBpc0Z1bmN0aW9uOiBmdW5jdGlvbiggb2JqICkgeworICAgICAgICByZXR1cm4galF1ZXJ5LnR5
cGUoIG9iaiApID09PSAiZnVuY3Rpb24iOworICAgIH0sCisKKyAgICBpc0FycmF5OiBBcnJheS5p
c0FycmF5LAorCisgICAgaXNXaW5kb3c6IGZ1bmN0aW9uKCBvYmogKSB7CisgICAgICAgIHJldHVy
biBvYmogIT0gbnVsbCAmJiBvYmogPT09IG9iai53aW5kb3c7CisgICAgfSwKKworICAgIGlzTnVt
ZXJpYzogZnVuY3Rpb24oIG9iaiApIHsKKworICAgICAgICAvLyBBcyBvZiBqUXVlcnkgMy4wLCBp
c051bWVyaWMgaXMgbGltaXRlZCB0bworICAgICAgICAvLyBzdHJpbmdzIGFuZCBudW1iZXJzIChw
cmltaXRpdmVzIG9yIG9iamVjdHMpCisgICAgICAgIC8vIHRoYXQgY2FuIGJlIGNvZXJjZWQgdG8g
ZmluaXRlIG51bWJlcnMgKGdoLTI2NjIpCisgICAgICAgIHZhciB0eXBlID0galF1ZXJ5LnR5cGUo
IG9iaiApOworICAgICAgICByZXR1cm4gKCB0eXBlID09PSAibnVtYmVyIiB8fCB0eXBlID09PSAi
c3RyaW5nIiApICYmCisKKyAgICAgICAgICAgIC8vIHBhcnNlRmxvYXQgTmFOcyBudW1lcmljLWNh
c3QgZmFsc2UgcG9zaXRpdmVzICgiIikKKyAgICAgICAgICAgIC8vIC4uLmJ1dCBtaXNpbnRlcnBy
ZXRzIGxlYWRpbmctbnVtYmVyIHN0cmluZ3MsIHBhcnRpY3VsYXJseSBoZXggbGl0ZXJhbHMgKCIw
eC4uLiIpCisgICAgICAgICAgICAvLyBzdWJ0cmFjdGlvbiBmb3JjZXMgaW5maW5pdGllcyB0byBO
YU4KKyAgICAgICAgICAgICFpc05hTiggb2JqIC0gcGFyc2VGbG9hdCggb2JqICkgKTsKKyAgICB9
LAorCisgICAgaXNQbGFpbk9iamVjdDogZnVuY3Rpb24oIG9iaiApIHsKKyAgICAgICAgdmFyIHBy
b3RvLCBDdG9yOworCisgICAgICAgIC8vIERldGVjdCBvYnZpb3VzIG5lZ2F0aXZlcworICAgICAg
ICAvLyBVc2UgdG9TdHJpbmcgaW5zdGVhZCBvZiBqUXVlcnkudHlwZSB0byBjYXRjaCBob3N0IG9i
amVjdHMKKyAgICAgICAgaWYgKCAhb2JqIHx8IHRvU3RyaW5nLmNhbGwoIG9iaiApICE9PSAiW29i
amVjdCBPYmplY3RdIiApIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQor
CisgICAgICAgIHByb3RvID0gZ2V0UHJvdG8oIG9iaiApOworCisgICAgICAgIC8vIE9iamVjdHMg
d2l0aCBubyBwcm90b3R5cGUgKGUuZy4sIGBPYmplY3QuY3JlYXRlKCBudWxsIClgKSBhcmUgcGxh
aW4KKyAgICAgICAgaWYgKCAhcHJvdG8gKSB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgfQorCisgICAgICAgIC8vIE9iamVjdHMgd2l0aCBwcm90b3R5cGUgYXJlIHBsYWluIGlm
ZiB0aGV5IHdlcmUgY29uc3RydWN0ZWQgYnkgYSBnbG9iYWwgT2JqZWN0IGZ1bmN0aW9uCisgICAg
ICAgIEN0b3IgPSBoYXNPd24uY2FsbCggcHJvdG8sICJjb25zdHJ1Y3RvciIgKSAmJiBwcm90by5j
b25zdHJ1Y3RvcjsKKyAgICAgICAgcmV0dXJuIHR5cGVvZiBDdG9yID09PSAiZnVuY3Rpb24iICYm
IGZuVG9TdHJpbmcuY2FsbCggQ3RvciApID09PSBPYmplY3RGdW5jdGlvblN0cmluZzsKKyAgICB9
LAorCisgICAgaXNFbXB0eU9iamVjdDogZnVuY3Rpb24oIG9iaiApIHsKKworICAgICAgICAvKiBl
c2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqLworICAgICAgICAvLyBTZWUgaHR0cHM6Ly9n
aXRodWIuY29tL2VzbGludC9lc2xpbnQvaXNzdWVzLzYxMjUKKyAgICAgICAgdmFyIG5hbWU7CisK
KyAgICAgICAgZm9yICggbmFtZSBpbiBvYmogKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSwKKworICAgIHR5cGU6IGZ1
bmN0aW9uKCBvYmogKSB7CisgICAgICAgIGlmICggb2JqID09IG51bGwgKSB7CisgICAgICAgICAg
ICByZXR1cm4gb2JqICsgIiI7CisgICAgICAgIH0KKworICAgICAgICAvLyBTdXBwb3J0OiBBbmRy
b2lkIDw9Mi4zIG9ubHkgKGZ1bmN0aW9uaXNoIFJlZ0V4cCkKKyAgICAgICAgcmV0dXJuIHR5cGVv
ZiBvYmogPT09ICJvYmplY3QiIHx8IHR5cGVvZiBvYmogPT09ICJmdW5jdGlvbiIgPworICAgICAg
ICAgICAgY2xhc3MydHlwZVsgdG9TdHJpbmcuY2FsbCggb2JqICkgXSB8fCAib2JqZWN0IiA6Cisg
ICAgICAgICAgICB0eXBlb2Ygb2JqOworICAgIH0sCisKKyAgICAvLyBFdmFsdWF0ZXMgYSBzY3Jp
cHQgaW4gYSBnbG9iYWwgY29udGV4dAorICAgIGdsb2JhbEV2YWw6IGZ1bmN0aW9uKCBjb2RlICkg
eworICAgICAgICBET01FdmFsKCBjb2RlICk7CisgICAgfSwKKworICAgIC8vIENvbnZlcnQgZGFz
aGVkIHRvIGNhbWVsQ2FzZTsgdXNlZCBieSB0aGUgY3NzIGFuZCBkYXRhIG1vZHVsZXMKKyAgICAv
LyBTdXBwb3J0OiBJRSA8PTkgLSAxMSwgRWRnZSAxMiAtIDEzCisgICAgLy8gTWljcm9zb2Z0IGZv
cmdvdCB0byBodW1wIHRoZWlyIHZlbmRvciBwcmVmaXggKCM5NTcyKQorICAgIGNhbWVsQ2FzZTog
ZnVuY3Rpb24oIHN0cmluZyApIHsKKyAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKCBybXNQ
cmVmaXgsICJtcy0iICkucmVwbGFjZSggcmRhc2hBbHBoYSwgZmNhbWVsQ2FzZSApOworICAgIH0s
CisKKyAgICBub2RlTmFtZTogZnVuY3Rpb24oIGVsZW0sIG5hbWUgKSB7CisgICAgICAgIHJldHVy
biBlbGVtLm5vZGVOYW1lICYmIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gbmFtZS50
b0xvd2VyQ2FzZSgpOworICAgIH0sCisKKyAgICBlYWNoOiBmdW5jdGlvbiggb2JqLCBjYWxsYmFj
ayApIHsKKyAgICAgICAgdmFyIGxlbmd0aCwgaSA9IDA7CisKKyAgICAgICAgaWYgKCBpc0FycmF5
TGlrZSggb2JqICkgKSB7CisgICAgICAgICAgICBsZW5ndGggPSBvYmoubGVuZ3RoOworICAgICAg
ICAgICAgZm9yICggOyBpIDwgbGVuZ3RoOyBpKysgKSB7CisgICAgICAgICAgICAgICAgaWYgKCBj
YWxsYmFjay5jYWxsKCBvYmpbIGkgXSwgaSwgb2JqWyBpIF0gKSA9PT0gZmFsc2UgKSB7CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGZvciAoIGkgaW4gb2JqICkgeworICAgICAg
ICAgICAgICAgIGlmICggY2FsbGJhY2suY2FsbCggb2JqWyBpIF0sIGksIG9ialsgaSBdICkgPT09
IGZhbHNlICkgeworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gb2JqOworICAgIH0s
CisKKyAgICAvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4wIG9ubHkKKyAgICB0cmltOiBmdW5jdGlv
biggdGV4dCApIHsKKyAgICAgICAgcmV0dXJuIHRleHQgPT0gbnVsbCA/CisgICAgICAgICAgICAi
IiA6CisgICAgICAgICAgICAoIHRleHQgKyAiIiApLnJlcGxhY2UoIHJ0cmltLCAiIiApOworICAg
IH0sCisKKyAgICAvLyByZXN1bHRzIGlzIGZvciBpbnRlcm5hbCB1c2FnZSBvbmx5CisgICAgbWFr
ZUFycmF5OiBmdW5jdGlvbiggYXJyLCByZXN1bHRzICkgeworICAgICAgICB2YXIgcmV0ID0gcmVz
dWx0cyB8fCBbXTsKKworICAgICAgICBpZiAoIGFyciAhPSBudWxsICkgeworICAgICAgICAgICAg
aWYgKCBpc0FycmF5TGlrZSggT2JqZWN0KCBhcnIgKSApICkgeworICAgICAgICAgICAgICAgIGpR
dWVyeS5tZXJnZSggcmV0LAorICAgICAgICAgICAgICAgICAgICB0eXBlb2YgYXJyID09PSAic3Ry
aW5nIiA/CisgICAgICAgICAgICAgICAgICAgIFsgYXJyIF0gOiBhcnIKKyAgICAgICAgICAgICAg
ICApOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBwdXNoLmNhbGwoIHJl
dCwgYXJyICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gcmV0
OworICAgIH0sCisKKyAgICBpbkFycmF5OiBmdW5jdGlvbiggZWxlbSwgYXJyLCBpICkgeworICAg
ICAgICByZXR1cm4gYXJyID09IG51bGwgPyAtMSA6IGluZGV4T2YuY2FsbCggYXJyLCBlbGVtLCBp
ICk7CisgICAgfSwKKworICAgIC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00LjAgb25seSwgUGhhbnRv
bUpTIDEgb25seQorICAgIC8vIHB1c2guYXBwbHkoXywgYXJyYXlsaWtlKSB0aHJvd3Mgb24gYW5j
aWVudCBXZWJLaXQKKyAgICBtZXJnZTogZnVuY3Rpb24oIGZpcnN0LCBzZWNvbmQgKSB7CisgICAg
ICAgIHZhciBsZW4gPSArc2Vjb25kLmxlbmd0aCwKKyAgICAgICAgICAgIGogPSAwLAorICAgICAg
ICAgICAgaSA9IGZpcnN0Lmxlbmd0aDsKKworICAgICAgICBmb3IgKCA7IGogPCBsZW47IGorKyAp
IHsKKyAgICAgICAgICAgIGZpcnN0WyBpKysgXSA9IHNlY29uZFsgaiBdOworICAgICAgICB9CisK
KyAgICAgICAgZmlyc3QubGVuZ3RoID0gaTsKKworICAgICAgICByZXR1cm4gZmlyc3Q7CisgICAg
fSwKKworICAgIGdyZXA6IGZ1bmN0aW9uKCBlbGVtcywgY2FsbGJhY2ssIGludmVydCApIHsKKyAg
ICAgICAgdmFyIGNhbGxiYWNrSW52ZXJzZSwKKyAgICAgICAgICAgIG1hdGNoZXMgPSBbXSwKKyAg
ICAgICAgICAgIGkgPSAwLAorICAgICAgICAgICAgbGVuZ3RoID0gZWxlbXMubGVuZ3RoLAorICAg
ICAgICAgICAgY2FsbGJhY2tFeHBlY3QgPSAhaW52ZXJ0OworCisgICAgICAgIC8vIEdvIHRocm91
Z2ggdGhlIGFycmF5LCBvbmx5IHNhdmluZyB0aGUgaXRlbXMKKyAgICAgICAgLy8gdGhhdCBwYXNz
IHRoZSB2YWxpZGF0b3IgZnVuY3Rpb24KKyAgICAgICAgZm9yICggOyBpIDwgbGVuZ3RoOyBpKysg
KSB7CisgICAgICAgICAgICBjYWxsYmFja0ludmVyc2UgPSAhY2FsbGJhY2soIGVsZW1zWyBpIF0s
IGkgKTsKKyAgICAgICAgICAgIGlmICggY2FsbGJhY2tJbnZlcnNlICE9PSBjYWxsYmFja0V4cGVj
dCApIHsKKyAgICAgICAgICAgICAgICBtYXRjaGVzLnB1c2goIGVsZW1zWyBpIF0gKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBtYXRjaGVzOworICAgIH0sCisK
KyAgICAvLyBhcmcgaXMgZm9yIGludGVybmFsIHVzYWdlIG9ubHkKKyAgICBtYXA6IGZ1bmN0aW9u
KCBlbGVtcywgY2FsbGJhY2ssIGFyZyApIHsKKyAgICAgICAgdmFyIGxlbmd0aCwgdmFsdWUsCisg
ICAgICAgICAgICBpID0gMCwKKyAgICAgICAgICAgIHJldCA9IFtdOworCisgICAgICAgIC8vIEdv
IHRocm91Z2ggdGhlIGFycmF5LCB0cmFuc2xhdGluZyBlYWNoIG9mIHRoZSBpdGVtcyB0byB0aGVp
ciBuZXcgdmFsdWVzCisgICAgICAgIGlmICggaXNBcnJheUxpa2UoIGVsZW1zICkgKSB7CisgICAg
ICAgICAgICBsZW5ndGggPSBlbGVtcy5sZW5ndGg7CisgICAgICAgICAgICBmb3IgKCA7IGkgPCBs
ZW5ndGg7IGkrKyApIHsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IGNhbGxiYWNrKCBlbGVtc1sg
aSBdLCBpLCBhcmcgKTsKKworICAgICAgICAgICAgICAgIGlmICggdmFsdWUgIT0gbnVsbCApIHsK
KyAgICAgICAgICAgICAgICAgICAgcmV0LnB1c2goIHZhbHVlICk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorCisgICAgICAgIC8vIEdvIHRocm91Z2ggZXZlcnkga2V5IG9uIHRo
ZSBvYmplY3QsCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBmb3IgKCBpIGluIGVsZW1z
ICkgeworICAgICAgICAgICAgICAgIHZhbHVlID0gY2FsbGJhY2soIGVsZW1zWyBpIF0sIGksIGFy
ZyApOworCisgICAgICAgICAgICAgICAgaWYgKCB2YWx1ZSAhPSBudWxsICkgeworICAgICAgICAg
ICAgICAgICAgICByZXQucHVzaCggdmFsdWUgKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBGbGF0dGVuIGFueSBuZXN0ZWQgYXJyYXlz
CisgICAgICAgIHJldHVybiBjb25jYXQuYXBwbHkoIFtdLCByZXQgKTsKKyAgICB9LAorCisgICAg
Ly8gQSBnbG9iYWwgR1VJRCBjb3VudGVyIGZvciBvYmplY3RzCisgICAgZ3VpZDogMSwKKworICAg
IC8vIEJpbmQgYSBmdW5jdGlvbiB0byBhIGNvbnRleHQsIG9wdGlvbmFsbHkgcGFydGlhbGx5IGFw
cGx5aW5nIGFueQorICAgIC8vIGFyZ3VtZW50cy4KKyAgICBwcm94eTogZnVuY3Rpb24oIGZuLCBj
b250ZXh0ICkgeworICAgICAgICB2YXIgdG1wLCBhcmdzLCBwcm94eTsKKworICAgICAgICBpZiAo
IHR5cGVvZiBjb250ZXh0ID09PSAic3RyaW5nIiApIHsKKyAgICAgICAgICAgIHRtcCA9IGZuWyBj
b250ZXh0IF07CisgICAgICAgICAgICBjb250ZXh0ID0gZm47CisgICAgICAgICAgICBmbiA9IHRt
cDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFF1aWNrIGNoZWNrIHRvIGRldGVybWluZSBpZiB0
YXJnZXQgaXMgY2FsbGFibGUsIGluIHRoZSBzcGVjCisgICAgICAgIC8vIHRoaXMgdGhyb3dzIGEg
VHlwZUVycm9yLCBidXQgd2Ugd2lsbCBqdXN0IHJldHVybiB1bmRlZmluZWQuCisgICAgICAgIGlm
ICggIWpRdWVyeS5pc0Z1bmN0aW9uKCBmbiApICkgeworICAgICAgICAgICAgcmV0dXJuIHVuZGVm
aW5lZDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFNpbXVsYXRlZCBiaW5kCisgICAgICAgIGFy
Z3MgPSBzbGljZS5jYWxsKCBhcmd1bWVudHMsIDIgKTsKKyAgICAgICAgcHJveHkgPSBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgIHJldHVybiBmbi5hcHBseSggY29udGV4dCB8fCB0aGlzLCBhcmdz
LmNvbmNhdCggc2xpY2UuY2FsbCggYXJndW1lbnRzICkgKSApOworICAgICAgICB9OworCisgICAg
ICAgIC8vIFNldCB0aGUgZ3VpZCBvZiB1bmlxdWUgaGFuZGxlciB0byB0aGUgc2FtZSBvZiBvcmln
aW5hbCBoYW5kbGVyLCBzbyBpdCBjYW4gYmUgcmVtb3ZlZAorICAgICAgICBwcm94eS5ndWlkID0g
Zm4uZ3VpZCA9IGZuLmd1aWQgfHwgalF1ZXJ5Lmd1aWQrKzsKKworICAgICAgICByZXR1cm4gcHJv
eHk7CisgICAgfSwKKworICAgIG5vdzogRGF0ZS5ub3csCisKKyAgICAvLyBqUXVlcnkuc3VwcG9y
dCBpcyBub3QgdXNlZCBpbiBDb3JlIGJ1dCBvdGhlciBwcm9qZWN0cyBhdHRhY2ggdGhlaXIKKyAg
ICAvLyBwcm9wZXJ0aWVzIHRvIGl0IHNvIGl0IG5lZWRzIHRvIGV4aXN0LgorICAgIHN1cHBvcnQ6
IHN1cHBvcnQKK30gKTsKKworaWYgKCB0eXBlb2YgU3ltYm9sID09PSAiZnVuY3Rpb24iICkgewor
ICAgIGpRdWVyeS5mblsgU3ltYm9sLml0ZXJhdG9yIF0gPSBhcnJbIFN5bWJvbC5pdGVyYXRvciBd
OworfQorCisvLyBQb3B1bGF0ZSB0aGUgY2xhc3MydHlwZSBtYXAKK2pRdWVyeS5lYWNoKCAiQm9v
bGVhbiBOdW1iZXIgU3RyaW5nIEZ1bmN0aW9uIEFycmF5IERhdGUgUmVnRXhwIE9iamVjdCBFcnJv
ciBTeW1ib2wiLnNwbGl0KCAiICIgKSwKK2Z1bmN0aW9uKCBpLCBuYW1lICkgeworICAgIGNsYXNz
MnR5cGVbICJbb2JqZWN0ICIgKyBuYW1lICsgIl0iIF0gPSBuYW1lLnRvTG93ZXJDYXNlKCk7Cit9
ICk7CisKK2Z1bmN0aW9uIGlzQXJyYXlMaWtlKCBvYmogKSB7CisKKyAgICAvLyBTdXBwb3J0OiBy
ZWFsIGlPUyA4LjIgb25seSAobm90IHJlcHJvZHVjaWJsZSBpbiBzaW11bGF0b3IpCisgICAgLy8g
YGluYCBjaGVjayB1c2VkIHRvIHByZXZlbnQgSklUIGVycm9yIChnaC0yMTQ1KQorICAgIC8vIGhh
c093biBpc24ndCB1c2VkIGhlcmUgZHVlIHRvIGZhbHNlIG5lZ2F0aXZlcworICAgIC8vIHJlZ2Fy
ZGluZyBOb2RlbGlzdCBsZW5ndGggaW4gSUUKKyAgICB2YXIgbGVuZ3RoID0gISFvYmogJiYgImxl
bmd0aCIgaW4gb2JqICYmIG9iai5sZW5ndGgsCisgICAgICAgIHR5cGUgPSBqUXVlcnkudHlwZSgg
b2JqICk7CisKKyAgICBpZiAoIHR5cGUgPT09ICJmdW5jdGlvbiIgfHwgalF1ZXJ5LmlzV2luZG93
KCBvYmogKSApIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0
eXBlID09PSAiYXJyYXkiIHx8IGxlbmd0aCA9PT0gMCB8fAorICAgICAgICB0eXBlb2YgbGVuZ3Ro
ID09PSAibnVtYmVyIiAmJiBsZW5ndGggPiAwICYmICggbGVuZ3RoIC0gMSApIGluIG9iajsKK30K
K3ZhciBTaXp6bGUgPQorLyohCisgKiBTaXp6bGUgQ1NTIFNlbGVjdG9yIEVuZ2luZSB2Mi4zLjMK
KyAqIGh0dHBzOi8vc2l6emxlanMuY29tLworICoKKyAqIENvcHlyaWdodCBqUXVlcnkgRm91bmRh
dGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzCisgKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxp
Y2Vuc2UKKyAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2UKKyAqCisgKiBEYXRlOiAyMDE2LTA4
LTA4CisgKi8KKyhmdW5jdGlvbiggd2luZG93ICkgeworCit2YXIgaSwKKyAgICBzdXBwb3J0LAor
ICAgIEV4cHIsCisgICAgZ2V0VGV4dCwKKyAgICBpc1hNTCwKKyAgICB0b2tlbml6ZSwKKyAgICBj
b21waWxlLAorICAgIHNlbGVjdCwKKyAgICBvdXRlcm1vc3RDb250ZXh0LAorICAgIHNvcnRJbnB1
dCwKKyAgICBoYXNEdXBsaWNhdGUsCisKKyAgICAvLyBMb2NhbCBkb2N1bWVudCB2YXJzCisgICAg
c2V0RG9jdW1lbnQsCisgICAgZG9jdW1lbnQsCisgICAgZG9jRWxlbSwKKyAgICBkb2N1bWVudElz
SFRNTCwKKyAgICByYnVnZ3lRU0EsCisgICAgcmJ1Z2d5TWF0Y2hlcywKKyAgICBtYXRjaGVzLAor
ICAgIGNvbnRhaW5zLAorCisgICAgLy8gSW5zdGFuY2Utc3BlY2lmaWMgZGF0YQorICAgIGV4cGFu
ZG8gPSAic2l6emxlIiArIDEgKiBuZXcgRGF0ZSgpLAorICAgIHByZWZlcnJlZERvYyA9IHdpbmRv
dy5kb2N1bWVudCwKKyAgICBkaXJydW5zID0gMCwKKyAgICBkb25lID0gMCwKKyAgICBjbGFzc0Nh
Y2hlID0gY3JlYXRlQ2FjaGUoKSwKKyAgICB0b2tlbkNhY2hlID0gY3JlYXRlQ2FjaGUoKSwKKyAg
ICBjb21waWxlckNhY2hlID0gY3JlYXRlQ2FjaGUoKSwKKyAgICBzb3J0T3JkZXIgPSBmdW5jdGlv
biggYSwgYiApIHsKKyAgICAgICAgaWYgKCBhID09PSBiICkgeworICAgICAgICAgICAgaGFzRHVw
bGljYXRlID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gMDsKKyAgICB9LAorCisg
ICAgLy8gSW5zdGFuY2UgbWV0aG9kcworICAgIGhhc093biA9ICh7fSkuaGFzT3duUHJvcGVydHks
CisgICAgYXJyID0gW10sCisgICAgcG9wID0gYXJyLnBvcCwKKyAgICBwdXNoX25hdGl2ZSA9IGFy
ci5wdXNoLAorICAgIHB1c2ggPSBhcnIucHVzaCwKKyAgICBzbGljZSA9IGFyci5zbGljZSwKKyAg
ICAvLyBVc2UgYSBzdHJpcHBlZC1kb3duIGluZGV4T2YgYXMgaXQncyBmYXN0ZXIgdGhhbiBuYXRp
dmUKKyAgICAvLyBodHRwczovL2pzcGVyZi5jb20vdGhvci1pbmRleG9mLXZzLWZvci81CisgICAg
aW5kZXhPZiA9IGZ1bmN0aW9uKCBsaXN0LCBlbGVtICkgeworICAgICAgICB2YXIgaSA9IDAsCisg
ICAgICAgICAgICBsZW4gPSBsaXN0Lmxlbmd0aDsKKyAgICAgICAgZm9yICggOyBpIDwgbGVuOyBp
KysgKSB7CisgICAgICAgICAgICBpZiAoIGxpc3RbaV0gPT09IGVsZW0gKSB7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIGk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
IC0xOworICAgIH0sCisKKyAgICBib29sZWFucyA9ICJjaGVja2VkfHNlbGVjdGVkfGFzeW5jfGF1
dG9mb2N1c3xhdXRvcGxheXxjb250cm9sc3xkZWZlcnxkaXNhYmxlZHxoaWRkZW58aXNtYXB8bG9v
cHxtdWx0aXBsZXxvcGVufHJlYWRvbmx5fHJlcXVpcmVkfHNjb3BlZCIsCisKKyAgICAvLyBSZWd1
bGFyIGV4cHJlc3Npb25zCisKKyAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLXNlbGVj
dG9ycy8jd2hpdGVzcGFjZQorICAgIHdoaXRlc3BhY2UgPSAiW1xceDIwXFx0XFxyXFxuXFxmXSIs
CisKKyAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9DU1MyMS9zeW5kYXRhLmh0bWwjdmFsdWUt
ZGVmLWlkZW50aWZpZXIKKyAgICBpZGVudGlmaWVyID0gIig/OlxcXFwufFtcXHctXXxbXlwwLVxc
eGEwXSkrIiwKKworICAgIC8vIEF0dHJpYnV0ZSBzZWxlY3RvcnM6IGh0dHA6Ly93d3cudzMub3Jn
L1RSL3NlbGVjdG9ycy8jYXR0cmlidXRlLXNlbGVjdG9ycworICAgIGF0dHJpYnV0ZXMgPSAiXFxb
IiArIHdoaXRlc3BhY2UgKyAiKigiICsgaWRlbnRpZmllciArICIpKD86IiArIHdoaXRlc3BhY2Ug
KworICAgICAgICAvLyBPcGVyYXRvciAoY2FwdHVyZSAyKQorICAgICAgICAiKihbKl4kfCF+XT89
KSIgKyB3aGl0ZXNwYWNlICsKKyAgICAgICAgLy8gIkF0dHJpYnV0ZSB2YWx1ZXMgbXVzdCBiZSBD
U1MgaWRlbnRpZmllcnMgW2NhcHR1cmUgNV0gb3Igc3RyaW5ncyBbY2FwdHVyZSAzIG9yIGNhcHR1
cmUgNF0iCisgICAgICAgICIqKD86JygoPzpcXFxcLnxbXlxcXFwnXSkqKSd8XCIoKD86XFxcXC58
W15cXFxcXCJdKSopXCJ8KCIgKyBpZGVudGlmaWVyICsgIikpfCkiICsgd2hpdGVzcGFjZSArCisg
ICAgICAgICIqXFxdIiwKKworICAgIHBzZXVkb3MgPSAiOigiICsgaWRlbnRpZmllciArICIpKD86
XFwoKCIgKworICAgICAgICAvLyBUbyByZWR1Y2UgdGhlIG51bWJlciBvZiBzZWxlY3RvcnMgbmVl
ZGluZyB0b2tlbml6ZSBpbiB0aGUgcHJlRmlsdGVyLCBwcmVmZXIgYXJndW1lbnRzOgorICAgICAg
ICAvLyAxLiBxdW90ZWQgKGNhcHR1cmUgMzsgY2FwdHVyZSA0IG9yIGNhcHR1cmUgNSkKKyAgICAg
ICAgIignKCg/OlxcXFwufFteXFxcXCddKSopJ3xcIigoPzpcXFxcLnxbXlxcXFxcIl0pKilcIil8
IiArCisgICAgICAgIC8vIDIuIHNpbXBsZSAoY2FwdHVyZSA2KQorICAgICAgICAiKCg/OlxcXFwu
fFteXFxcXCgpW1xcXV18IiArIGF0dHJpYnV0ZXMgKyAiKSopfCIgKworICAgICAgICAvLyAzLiBh
bnl0aGluZyBlbHNlIChjYXB0dXJlIDIpCisgICAgICAgICIuKiIgKworICAgICAgICAiKVxcKXwp
IiwKKworICAgIC8vIExlYWRpbmcgYW5kIG5vbi1lc2NhcGVkIHRyYWlsaW5nIHdoaXRlc3BhY2Us
IGNhcHR1cmluZyBzb21lIG5vbi13aGl0ZXNwYWNlIGNoYXJhY3RlcnMgcHJlY2VkaW5nIHRoZSBs
YXR0ZXIKKyAgICByd2hpdGVzcGFjZSA9IG5ldyBSZWdFeHAoIHdoaXRlc3BhY2UgKyAiKyIsICJn
IiApLAorICAgIHJ0cmltID0gbmV3IFJlZ0V4cCggIl4iICsgd2hpdGVzcGFjZSArICIrfCgoPzpe
fFteXFxcXF0pKD86XFxcXC4pKikiICsgd2hpdGVzcGFjZSArICIrJCIsICJnIiApLAorCisgICAg
cmNvbW1hID0gbmV3IFJlZ0V4cCggIl4iICsgd2hpdGVzcGFjZSArICIqLCIgKyB3aGl0ZXNwYWNl
ICsgIioiICksCisgICAgcmNvbWJpbmF0b3JzID0gbmV3IFJlZ0V4cCggIl4iICsgd2hpdGVzcGFj
ZSArICIqKFs+K35dfCIgKyB3aGl0ZXNwYWNlICsgIikiICsgd2hpdGVzcGFjZSArICIqIiApLAor
CisgICAgcmF0dHJpYnV0ZVF1b3RlcyA9IG5ldyBSZWdFeHAoICI9IiArIHdoaXRlc3BhY2UgKyAi
KihbXlxcXSdcIl0qPykiICsgd2hpdGVzcGFjZSArICIqXFxdIiwgImciICksCisKKyAgICBycHNl
dWRvID0gbmV3IFJlZ0V4cCggcHNldWRvcyApLAorICAgIHJpZGVudGlmaWVyID0gbmV3IFJlZ0V4
cCggIl4iICsgaWRlbnRpZmllciArICIkIiApLAorCisgICAgbWF0Y2hFeHByID0geworICAgICAg
ICAiSUQiOiBuZXcgUmVnRXhwKCAiXiMoIiArIGlkZW50aWZpZXIgKyAiKSIgKSwKKyAgICAgICAg
IkNMQVNTIjogbmV3IFJlZ0V4cCggIl5cXC4oIiArIGlkZW50aWZpZXIgKyAiKSIgKSwKKyAgICAg
ICAgIlRBRyI6IG5ldyBSZWdFeHAoICJeKCIgKyBpZGVudGlmaWVyICsgInxbKl0pIiApLAorICAg
ICAgICAiQVRUUiI6IG5ldyBSZWdFeHAoICJeIiArIGF0dHJpYnV0ZXMgKSwKKyAgICAgICAgIlBT
RVVETyI6IG5ldyBSZWdFeHAoICJeIiArIHBzZXVkb3MgKSwKKyAgICAgICAgIkNISUxEIjogbmV3
IFJlZ0V4cCggIl46KG9ubHl8Zmlyc3R8bGFzdHxudGh8bnRoLWxhc3QpLShjaGlsZHxvZi10eXBl
KSg/OlxcKCIgKyB3aGl0ZXNwYWNlICsKKyAgICAgICAgICAgICIqKGV2ZW58b2RkfCgoWystXXwp
KFxcZCopbnwpIiArIHdoaXRlc3BhY2UgKyAiKig/OihbKy1dfCkiICsgd2hpdGVzcGFjZSArCisg
ICAgICAgICAgICAiKihcXGQrKXwpKSIgKyB3aGl0ZXNwYWNlICsgIipcXCl8KSIsICJpIiApLAor
ICAgICAgICAiYm9vbCI6IG5ldyBSZWdFeHAoICJeKD86IiArIGJvb2xlYW5zICsgIikkIiwgImki
ICksCisgICAgICAgIC8vIEZvciB1c2UgaW4gbGlicmFyaWVzIGltcGxlbWVudGluZyAuaXMoKQor
ICAgICAgICAvLyBXZSB1c2UgdGhpcyBmb3IgUE9TIG1hdGNoaW5nIGluIGBzZWxlY3RgCisgICAg
ICAgICJuZWVkc0NvbnRleHQiOiBuZXcgUmVnRXhwKCAiXiIgKyB3aGl0ZXNwYWNlICsgIipbPit+
XXw6KGV2ZW58b2RkfGVxfGd0fGx0fG50aHxmaXJzdHxsYXN0KSg/OlxcKCIgKworICAgICAgICAg
ICAgd2hpdGVzcGFjZSArICIqKCg/Oi1cXGQpP1xcZCopIiArIHdoaXRlc3BhY2UgKyAiKlxcKXwp
KD89W14tXXwkKSIsICJpIiApCisgICAgfSwKKworICAgIHJpbnB1dHMgPSAvXig/OmlucHV0fHNl
bGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pLAorICAgIHJoZWFkZXIgPSAvXmhcZCQvaSwKKworICAg
IHJuYXRpdmUgPSAvXltee10rXHtccypcW25hdGl2ZSBcdy8sCisKKyAgICAvLyBFYXNpbHktcGFy
c2VhYmxlL3JldHJpZXZhYmxlIElEIG9yIFRBRyBvciBDTEFTUyBzZWxlY3RvcnMKKyAgICBycXVp
Y2tFeHByID0gL14oPzojKFtcdy1dKyl8KFx3Kyl8XC4oW1x3LV0rKSkkLywKKworICAgIHJzaWJs
aW5nID0gL1srfl0vLAorCisgICAgLy8gQ1NTIGVzY2FwZXMKKyAgICAvLyBodHRwOi8vd3d3Lncz
Lm9yZy9UUi9DU1MyMS9zeW5kYXRhLmh0bWwjZXNjYXBlZC1jaGFyYWN0ZXJzCisgICAgcnVuZXNj
YXBlID0gbmV3IFJlZ0V4cCggIlxcXFwoW1xcZGEtZl17MSw2fSIgKyB3aGl0ZXNwYWNlICsgIj98
KCIgKyB3aGl0ZXNwYWNlICsgIil8LikiLCAiaWciICksCisgICAgZnVuZXNjYXBlID0gZnVuY3Rp
b24oIF8sIGVzY2FwZWQsIGVzY2FwZWRXaGl0ZXNwYWNlICkgeworICAgICAgICB2YXIgaGlnaCA9
ICIweCIgKyBlc2NhcGVkIC0gMHgxMDAwMDsKKyAgICAgICAgLy8gTmFOIG1lYW5zIG5vbi1jb2Rl
cG9pbnQKKyAgICAgICAgLy8gU3VwcG9ydDogRmlyZWZveDwyNAorICAgICAgICAvLyBXb3JrYXJv
dW5kIGVycm9uZW91cyBudW1lcmljIGludGVycHJldGF0aW9uIG9mICsiMHgiCisgICAgICAgIHJl
dHVybiBoaWdoICE9PSBoaWdoIHx8IGVzY2FwZWRXaGl0ZXNwYWNlID8KKyAgICAgICAgICAgIGVz
Y2FwZWQgOgorICAgICAgICAgICAgaGlnaCA8IDAgPworICAgICAgICAgICAgICAgIC8vIEJNUCBj
b2RlcG9pbnQKKyAgICAgICAgICAgICAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKCBoaWdoICsgMHgx
MDAwMCApIDoKKyAgICAgICAgICAgICAgICAvLyBTdXBwbGVtZW50YWwgUGxhbmUgY29kZXBvaW50
IChzdXJyb2dhdGUgcGFpcikKKyAgICAgICAgICAgICAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKCBo
aWdoID4+IDEwIHwgMHhEODAwLCBoaWdoICYgMHgzRkYgfCAweERDMDAgKTsKKyAgICB9LAorCisg
ICAgLy8gQ1NTIHN0cmluZy9pZGVudGlmaWVyIHNlcmlhbGl6YXRpb24KKyAgICAvLyBodHRwczov
L2RyYWZ0cy5jc3N3Zy5vcmcvY3Nzb20vI2NvbW1vbi1zZXJpYWxpemluZy1pZGlvbXMKKyAgICBy
Y3NzZXNjYXBlID0gLyhbXDAtXHgxZlx4N2ZdfF4tP1xkKXxeLSR8W15cMC1ceDFmXHg3Zi1cdUZG
RkZcdy1dL2csCisgICAgZmNzc2VzY2FwZSA9IGZ1bmN0aW9uKCBjaCwgYXNDb2RlUG9pbnQgKSB7
CisgICAgICAgIGlmICggYXNDb2RlUG9pbnQgKSB7CisKKyAgICAgICAgICAgIC8vIFUrMDAwMCBO
VUxMIGJlY29tZXMgVStGRkZEIFJFUExBQ0VNRU5UIENIQVJBQ1RFUgorICAgICAgICAgICAgaWYg
KCBjaCA9PT0gIlwwIiApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gIlx1RkZGRCI7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIENvbnRyb2wgY2hhcmFjdGVycyBhbmQgKGRlcGVu
ZGVudCB1cG9uIHBvc2l0aW9uKSBudW1iZXJzIGdldCBlc2NhcGVkIGFzIGNvZGUgcG9pbnRzCisg
ICAgICAgICAgICByZXR1cm4gY2guc2xpY2UoIDAsIC0xICkgKyAiXFwiICsgY2guY2hhckNvZGVB
dCggY2gubGVuZ3RoIC0gMSApLnRvU3RyaW5nKCAxNiApICsgIiAiOworICAgICAgICB9CisKKyAg
ICAgICAgLy8gT3RoZXIgcG90ZW50aWFsbHktc3BlY2lhbCBBU0NJSSBjaGFyYWN0ZXJzIGdldCBi
YWNrc2xhc2gtZXNjYXBlZAorICAgICAgICByZXR1cm4gIlxcIiArIGNoOworICAgIH0sCisKKyAg
ICAvLyBVc2VkIGZvciBpZnJhbWVzCisgICAgLy8gU2VlIHNldERvY3VtZW50KCkKKyAgICAvLyBS
ZW1vdmluZyB0aGUgZnVuY3Rpb24gd3JhcHBlciBjYXVzZXMgYSAiUGVybWlzc2lvbiBEZW5pZWQi
CisgICAgLy8gZXJyb3IgaW4gSUUKKyAgICB1bmxvYWRIYW5kbGVyID0gZnVuY3Rpb24oKSB7Cisg
ICAgICAgIHNldERvY3VtZW50KCk7CisgICAgfSwKKworICAgIGRpc2FibGVkQW5jZXN0b3IgPSBh
ZGRDb21iaW5hdG9yKAorICAgICAgICBmdW5jdGlvbiggZWxlbSApIHsKKyAgICAgICAgICAgIHJl
dHVybiBlbGVtLmRpc2FibGVkID09PSB0cnVlICYmICgiZm9ybSIgaW4gZWxlbSB8fCAibGFiZWwi
IGluIGVsZW0pOworICAgICAgICB9LAorICAgICAgICB7IGRpcjogInBhcmVudE5vZGUiLCBuZXh0
OiAibGVnZW5kIiB9CisgICAgKTsKKworLy8gT3B0aW1pemUgZm9yIHB1c2guYXBwbHkoIF8sIE5v
ZGVMaXN0ICkKK3RyeSB7CisgICAgcHVzaC5hcHBseSgKKyAgICAgICAgKGFyciA9IHNsaWNlLmNh
bGwoIHByZWZlcnJlZERvYy5jaGlsZE5vZGVzICkpLAorICAgICAgICBwcmVmZXJyZWREb2MuY2hp
bGROb2RlcworICAgICk7CisgICAgLy8gU3VwcG9ydDogQW5kcm9pZDw0LjAKKyAgICAvLyBEZXRl
Y3Qgc2lsZW50bHkgZmFpbGluZyBwdXNoLmFwcGx5CisgICAgYXJyWyBwcmVmZXJyZWREb2MuY2hp
bGROb2Rlcy5sZW5ndGggXS5ub2RlVHlwZTsKK30gY2F0Y2ggKCBlICkgeworICAgIHB1c2ggPSB7
IGFwcGx5OiBhcnIubGVuZ3RoID8KKworICAgICAgICAvLyBMZXZlcmFnZSBzbGljZSBpZiBwb3Nz
aWJsZQorICAgICAgICBmdW5jdGlvbiggdGFyZ2V0LCBlbHMgKSB7CisgICAgICAgICAgICBwdXNo
X25hdGl2ZS5hcHBseSggdGFyZ2V0LCBzbGljZS5jYWxsKGVscykgKTsKKyAgICAgICAgfSA6CisK
KyAgICAgICAgLy8gU3VwcG9ydDogSUU8OQorICAgICAgICAvLyBPdGhlcndpc2UgYXBwZW5kIGRp
cmVjdGx5CisgICAgICAgIGZ1bmN0aW9uKCB0YXJnZXQsIGVscyApIHsKKyAgICAgICAgICAgIHZh
ciBqID0gdGFyZ2V0Lmxlbmd0aCwKKyAgICAgICAgICAgICAgICBpID0gMDsKKyAgICAgICAgICAg
IC8vIENhbid0IHRydXN0IE5vZGVMaXN0Lmxlbmd0aAorICAgICAgICAgICAgd2hpbGUgKCAodGFy
Z2V0W2orK10gPSBlbHNbaSsrXSkgKSB7fQorICAgICAgICAgICAgdGFyZ2V0Lmxlbmd0aCA9IGog
LSAxOworICAgICAgICB9CisgICAgfTsKK30KKworZnVuY3Rpb24gU2l6emxlKCBzZWxlY3Rvciwg
Y29udGV4dCwgcmVzdWx0cywgc2VlZCApIHsKKyAgICB2YXIgbSwgaSwgZWxlbSwgbmlkLCBtYXRj
aCwgZ3JvdXBzLCBuZXdTZWxlY3RvciwKKyAgICAgICAgbmV3Q29udGV4dCA9IGNvbnRleHQgJiYg
Y29udGV4dC5vd25lckRvY3VtZW50LAorCisgICAgICAgIC8vIG5vZGVUeXBlIGRlZmF1bHRzIHRv
IDksIHNpbmNlIGNvbnRleHQgZGVmYXVsdHMgdG8gZG9jdW1lbnQKKyAgICAgICAgbm9kZVR5cGUg
PSBjb250ZXh0ID8gY29udGV4dC5ub2RlVHlwZSA6IDk7CisKKyAgICByZXN1bHRzID0gcmVzdWx0
cyB8fCBbXTsKKworICAgIC8vIFJldHVybiBlYXJseSBmcm9tIGNhbGxzIHdpdGggaW52YWxpZCBz
ZWxlY3RvciBvciBjb250ZXh0CisgICAgaWYgKCB0eXBlb2Ygc2VsZWN0b3IgIT09ICJzdHJpbmci
IHx8ICFzZWxlY3RvciB8fAorICAgICAgICBub2RlVHlwZSAhPT0gMSAmJiBub2RlVHlwZSAhPT0g
OSAmJiBub2RlVHlwZSAhPT0gMTEgKSB7CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdHM7CisgICAg
fQorCisgICAgLy8gVHJ5IHRvIHNob3J0Y3V0IGZpbmQgb3BlcmF0aW9ucyAoYXMgb3Bwb3NlZCB0
byBmaWx0ZXJzKSBpbiBIVE1MIGRvY3VtZW50cworICAgIGlmICggIXNlZWQgKSB7CisKKyAgICAg
ICAgaWYgKCAoIGNvbnRleHQgPyBjb250ZXh0Lm93bmVyRG9jdW1lbnQgfHwgY29udGV4dCA6IHBy
ZWZlcnJlZERvYyApICE9PSBkb2N1bWVudCApIHsKKyAgICAgICAgICAgIHNldERvY3VtZW50KCBj
b250ZXh0ICk7CisgICAgICAgIH0KKyAgICAgICAgY29udGV4dCA9IGNvbnRleHQgfHwgZG9jdW1l
bnQ7CisKKyAgICAgICAgaWYgKCBkb2N1bWVudElzSFRNTCApIHsKKworICAgICAgICAgICAgLy8g
SWYgdGhlIHNlbGVjdG9yIGlzIHN1ZmZpY2llbnRseSBzaW1wbGUsIHRyeSB1c2luZyBhICJnZXQq
QnkqIiBET00gbWV0aG9kCisgICAgICAgICAgICAvLyAoZXhjZXB0aW5nIERvY3VtZW50RnJhZ21l
bnQgY29udGV4dCwgd2hlcmUgdGhlIG1ldGhvZHMgZG9uJ3QgZXhpc3QpCisgICAgICAgICAgICBp
ZiAoIG5vZGVUeXBlICE9PSAxMSAmJiAobWF0Y2ggPSBycXVpY2tFeHByLmV4ZWMoIHNlbGVjdG9y
ICkpICkgeworCisgICAgICAgICAgICAgICAgLy8gSUQgc2VsZWN0b3IKKyAgICAgICAgICAgICAg
ICBpZiAoIChtID0gbWF0Y2hbMV0pICkgeworCisgICAgICAgICAgICAgICAgICAgIC8vIERvY3Vt
ZW50IGNvbnRleHQKKyAgICAgICAgICAgICAgICAgICAgaWYgKCBub2RlVHlwZSA9PT0gOSApIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGlmICggKGVsZW0gPSBjb250ZXh0LmdldEVsZW1lbnRC
eUlkKCBtICkpICkgeworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3VwcG9ydDog
SUUsIE9wZXJhLCBXZWJraXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiBp
ZGVudGlmeSB2ZXJzaW9ucworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdldEVsZW1l
bnRCeUlkIGNhbiBtYXRjaCBlbGVtZW50cyBieSBuYW1lIGluc3RlYWQgb2YgSUQKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoIGVsZW0uaWQgPT09IG0gKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc3VsdHMucHVzaCggZWxlbSApOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0czsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiByZXN1bHRzOworICAgICAgICAgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgICAgIC8vIEVsZW1lbnQgY29udGV4dAorICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgeworCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBTdXBwb3J0OiBJRSwg
T3BlcmEsIFdlYmtpdAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gVE9ETzogaWRlbnRpZnkg
dmVyc2lvbnMKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdldEVsZW1lbnRCeUlkIGNhbiBt
YXRjaCBlbGVtZW50cyBieSBuYW1lIGluc3RlYWQgb2YgSUQKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICggbmV3Q29udGV4dCAmJiAoZWxlbSA9IG5ld0NvbnRleHQuZ2V0RWxlbWVudEJ5SWQo
IG0gKSkgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWlucyggY29udGV4dCwg
ZWxlbSApICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbS5pZCA9PT0gbSApIHsK
KworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMucHVzaCggZWxlbSApOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRzOworICAgICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBU
eXBlIHNlbGVjdG9yCisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICggbWF0Y2hbMl0gKSB7Cisg
ICAgICAgICAgICAgICAgICAgIHB1c2guYXBwbHkoIHJlc3VsdHMsIGNvbnRleHQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoIHNlbGVjdG9yICkgKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdHM7CisKKyAgICAgICAgICAgICAgICAvLyBDbGFzcyBzZWxlY3RvcgorICAgICAgICAgICAg
ICAgIH0gZWxzZSBpZiAoIChtID0gbWF0Y2hbM10pICYmIHN1cHBvcnQuZ2V0RWxlbWVudHNCeUNs
YXNzTmFtZSAmJgorICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmdldEVsZW1lbnRzQnlDbGFz
c05hbWUgKSB7CisKKyAgICAgICAgICAgICAgICAgICAgcHVzaC5hcHBseSggcmVzdWx0cywgY29u
dGV4dC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCBtICkgKTsKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdHM7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAvLyBUYWtlIGFkdmFudGFnZSBvZiBxdWVyeVNlbGVjdG9yQWxsCisgICAgICAgICAg
ICBpZiAoIHN1cHBvcnQucXNhICYmCisgICAgICAgICAgICAgICAgIWNvbXBpbGVyQ2FjaGVbIHNl
bGVjdG9yICsgIiAiIF0gJiYKKyAgICAgICAgICAgICAgICAoIXJidWdneVFTQSB8fCAhcmJ1Z2d5
UVNBLnRlc3QoIHNlbGVjdG9yICkpICkgeworCisgICAgICAgICAgICAgICAgaWYgKCBub2RlVHlw
ZSAhPT0gMSApIHsKKyAgICAgICAgICAgICAgICAgICAgbmV3Q29udGV4dCA9IGNvbnRleHQ7Cisg
ICAgICAgICAgICAgICAgICAgIG5ld1NlbGVjdG9yID0gc2VsZWN0b3I7CisKKyAgICAgICAgICAg
ICAgICAvLyBxU0EgbG9va3Mgb3V0c2lkZSBFbGVtZW50IGNvbnRleHQsIHdoaWNoIGlzIG5vdCB3
aGF0IHdlIHdhbnQKKyAgICAgICAgICAgICAgICAvLyBUaGFua3MgdG8gQW5kcmV3IER1cG9udCBm
b3IgdGhpcyB3b3JrYXJvdW5kIHRlY2huaXF1ZQorICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6
IElFIDw9OAorICAgICAgICAgICAgICAgIC8vIEV4Y2x1ZGUgb2JqZWN0IGVsZW1lbnRzCisgICAg
ICAgICAgICAgICAgfSBlbHNlIGlmICggY29udGV4dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpICE9
PSAib2JqZWN0IiApIHsKKworICAgICAgICAgICAgICAgICAgICAvLyBDYXB0dXJlIHRoZSBjb250
ZXh0IElELCBzZXR0aW5nIGl0IGZpcnN0IGlmIG5lY2Vzc2FyeQorICAgICAgICAgICAgICAgICAg
ICBpZiAoIChuaWQgPSBjb250ZXh0LmdldEF0dHJpYnV0ZSggImlkIiApKSApIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG5pZCA9IG5pZC5yZXBsYWNlKCByY3NzZXNjYXBlLCBmY3NzZXNjYXBl
ICk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBjb250ZXh0LnNldEF0dHJpYnV0ZSggImlkIiwgKG5pZCA9IGV4cGFuZG8pICk7CisgICAgICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAvLyBQcmVmaXggZXZlcnkgc2Vs
ZWN0b3IgaW4gdGhlIGxpc3QKKyAgICAgICAgICAgICAgICAgICAgZ3JvdXBzID0gdG9rZW5pemUo
IHNlbGVjdG9yICk7CisgICAgICAgICAgICAgICAgICAgIGkgPSBncm91cHMubGVuZ3RoOworICAg
ICAgICAgICAgICAgICAgICB3aGlsZSAoIGktLSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGdyb3Vwc1tpXSA9ICIjIiArIG5pZCArICIgIiArIHRvU2VsZWN0b3IoIGdyb3Vwc1tpXSApOwor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIG5ld1NlbGVjdG9yID0g
Z3JvdXBzLmpvaW4oICIsIiApOworCisgICAgICAgICAgICAgICAgICAgIC8vIEV4cGFuZCBjb250
ZXh0IGZvciBzaWJsaW5nIHNlbGVjdG9ycworICAgICAgICAgICAgICAgICAgICBuZXdDb250ZXh0
ID0gcnNpYmxpbmcudGVzdCggc2VsZWN0b3IgKSAmJiB0ZXN0Q29udGV4dCggY29udGV4dC5wYXJl
bnROb2RlICkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ7CisgICAgICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKCBuZXdTZWxlY3RvciApIHsKKyAgICAgICAg
ICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2guYXBwbHkoIHJl
c3VsdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3Q29udGV4dC5xdWVyeVNlbGVj
dG9yQWxsKCBuZXdTZWxlY3RvciApCisgICAgICAgICAgICAgICAgICAgICAgICApOworICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdHM7CisgICAgICAgICAgICAgICAgICAgIH0g
Y2F0Y2ggKCBxc2FFcnJvciApIHsKKyAgICAgICAgICAgICAgICAgICAgfSBmaW5hbGx5IHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICggbmlkID09PSBleHBhbmRvICkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnRleHQucmVtb3ZlQXR0cmlidXRlKCAiaWQiICk7CisgICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBBbGwgb3Ro
ZXJzCisgICAgcmV0dXJuIHNlbGVjdCggc2VsZWN0b3IucmVwbGFjZSggcnRyaW0sICIkMSIgKSwg
Y29udGV4dCwgcmVzdWx0cywgc2VlZCApOworfQorCisvKioKKyAqIENyZWF0ZSBrZXktdmFsdWUg
Y2FjaGVzIG9mIGxpbWl0ZWQgc2l6ZQorICogQHJldHVybnMge2Z1bmN0aW9uKHN0cmluZywgb2Jq
ZWN0KX0gUmV0dXJucyB0aGUgT2JqZWN0IGRhdGEgYWZ0ZXIgc3RvcmluZyBpdCBvbiBpdHNlbGYg
d2l0aAorICogIHByb3BlcnR5IG5hbWUgdGhlIChzcGFjZS1zdWZmaXhlZCkgc3RyaW5nIGFuZCAo
aWYgdGhlIGNhY2hlIGlzIGxhcmdlciB0aGFuIEV4cHIuY2FjaGVMZW5ndGgpCisgKiAgZGVsZXRp
bmcgdGhlIG9sZGVzdCBlbnRyeQorICovCitmdW5jdGlvbiBjcmVhdGVDYWNoZSgpIHsKKyAgICB2
YXIga2V5cyA9IFtdOworCisgICAgZnVuY3Rpb24gY2FjaGUoIGtleSwgdmFsdWUgKSB7CisgICAg
ICAgIC8vIFVzZSAoa2V5ICsgIiAiKSB0byBhdm9pZCBjb2xsaXNpb24gd2l0aCBuYXRpdmUgcHJv
dG90eXBlIHByb3BlcnRpZXMgKHNlZSBJc3N1ZSAjMTU3KQorICAgICAgICBpZiAoIGtleXMucHVz
aCgga2V5ICsgIiAiICkgPiBFeHByLmNhY2hlTGVuZ3RoICkgeworICAgICAgICAgICAgLy8gT25s
eSBrZWVwIHRoZSBtb3N0IHJlY2VudCBlbnRyaWVzCisgICAgICAgICAgICBkZWxldGUgY2FjaGVb
IGtleXMuc2hpZnQoKSBdOworICAgICAgICB9CisgICAgICAgIHJldHVybiAoY2FjaGVbIGtleSAr
ICIgIiBdID0gdmFsdWUpOworICAgIH0KKyAgICByZXR1cm4gY2FjaGU7Cit9CisKKy8qKgorICog
TWFyayBhIGZ1bmN0aW9uIGZvciBzcGVjaWFsIHVzZSBieSBTaXp6bGUKKyAqIEBwYXJhbSB7RnVu
Y3Rpb259IGZuIFRoZSBmdW5jdGlvbiB0byBtYXJrCisgKi8KK2Z1bmN0aW9uIG1hcmtGdW5jdGlv
biggZm4gKSB7CisgICAgZm5bIGV4cGFuZG8gXSA9IHRydWU7CisgICAgcmV0dXJuIGZuOworfQor
CisvKioKKyAqIFN1cHBvcnQgdGVzdGluZyB1c2luZyBhbiBlbGVtZW50CisgKiBAcGFyYW0ge0Z1
bmN0aW9ufSBmbiBQYXNzZWQgdGhlIGNyZWF0ZWQgZWxlbWVudCBhbmQgcmV0dXJucyBhIGJvb2xl
YW4gcmVzdWx0CisgKi8KK2Z1bmN0aW9uIGFzc2VydCggZm4gKSB7CisgICAgdmFyIGVsID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZmllbGRzZXQiKTsKKworICAgIHRyeSB7CisgICAgICAgIHJl
dHVybiAhIWZuKCBlbCApOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0gZmluYWxseSB7CisgICAgICAgIC8vIFJlbW92ZSBmcm9tIGl0cyBwYXJlbnQgYnkg
ZGVmYXVsdAorICAgICAgICBpZiAoIGVsLnBhcmVudE5vZGUgKSB7CisgICAgICAgICAgICBlbC5w
YXJlbnROb2RlLnJlbW92ZUNoaWxkKCBlbCApOworICAgICAgICB9CisgICAgICAgIC8vIHJlbGVh
c2UgbWVtb3J5IGluIElFCisgICAgICAgIGVsID0gbnVsbDsKKyAgICB9Cit9CisKKy8qKgorICog
QWRkcyB0aGUgc2FtZSBoYW5kbGVyIGZvciBhbGwgb2YgdGhlIHNwZWNpZmllZCBhdHRycworICog
QHBhcmFtIHtTdHJpbmd9IGF0dHJzIFBpcGUtc2VwYXJhdGVkIGxpc3Qgb2YgYXR0cmlidXRlcwor
ICogQHBhcmFtIHtGdW5jdGlvbn0gaGFuZGxlciBUaGUgbWV0aG9kIHRoYXQgd2lsbCBiZSBhcHBs
aWVkCisgKi8KK2Z1bmN0aW9uIGFkZEhhbmRsZSggYXR0cnMsIGhhbmRsZXIgKSB7CisgICAgdmFy
IGFyciA9IGF0dHJzLnNwbGl0KCJ8IiksCisgICAgICAgIGkgPSBhcnIubGVuZ3RoOworCisgICAg
d2hpbGUgKCBpLS0gKSB7CisgICAgICAgIEV4cHIuYXR0ckhhbmRsZVsgYXJyW2ldIF0gPSBoYW5k
bGVyOworICAgIH0KK30KKworLyoqCisgKiBDaGVja3MgZG9jdW1lbnQgb3JkZXIgb2YgdHdvIHNp
YmxpbmdzCisgKiBAcGFyYW0ge0VsZW1lbnR9IGEKKyAqIEBwYXJhbSB7RWxlbWVudH0gYgorICog
QHJldHVybnMge051bWJlcn0gUmV0dXJucyBsZXNzIHRoYW4gMCBpZiBhIHByZWNlZGVzIGIsIGdy
ZWF0ZXIgdGhhbiAwIGlmIGEgZm9sbG93cyBiCisgKi8KK2Z1bmN0aW9uIHNpYmxpbmdDaGVjaygg
YSwgYiApIHsKKyAgICB2YXIgY3VyID0gYiAmJiBhLAorICAgICAgICBkaWZmID0gY3VyICYmIGEu
bm9kZVR5cGUgPT09IDEgJiYgYi5ub2RlVHlwZSA9PT0gMSAmJgorICAgICAgICAgICAgYS5zb3Vy
Y2VJbmRleCAtIGIuc291cmNlSW5kZXg7CisKKyAgICAvLyBVc2UgSUUgc291cmNlSW5kZXggaWYg
YXZhaWxhYmxlIG9uIGJvdGggbm9kZXMKKyAgICBpZiAoIGRpZmYgKSB7CisgICAgICAgIHJldHVy
biBkaWZmOworICAgIH0KKworICAgIC8vIENoZWNrIGlmIGIgZm9sbG93cyBhCisgICAgaWYgKCBj
dXIgKSB7CisgICAgICAgIHdoaWxlICggKGN1ciA9IGN1ci5uZXh0U2libGluZykgKSB7CisgICAg
ICAgICAgICBpZiAoIGN1ciA9PT0gYiApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gYSA/IDEgOiAtMTsK
K30KKworLyoqCisgKiBSZXR1cm5zIGEgZnVuY3Rpb24gdG8gdXNlIGluIHBzZXVkb3MgZm9yIGlu
cHV0IHR5cGVzCisgKiBAcGFyYW0ge1N0cmluZ30gdHlwZQorICovCitmdW5jdGlvbiBjcmVhdGVJ
bnB1dFBzZXVkbyggdHlwZSApIHsKKyAgICByZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7CisgICAg
ICAgIHZhciBuYW1lID0gZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOworICAgICAgICByZXR1
cm4gbmFtZSA9PT0gImlucHV0IiAmJiBlbGVtLnR5cGUgPT09IHR5cGU7CisgICAgfTsKK30KKwor
LyoqCisgKiBSZXR1cm5zIGEgZnVuY3Rpb24gdG8gdXNlIGluIHBzZXVkb3MgZm9yIGJ1dHRvbnMK
KyAqIEBwYXJhbSB7U3RyaW5nfSB0eXBlCisgKi8KK2Z1bmN0aW9uIGNyZWF0ZUJ1dHRvblBzZXVk
byggdHlwZSApIHsKKyAgICByZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7CisgICAgICAgIHZhciBu
YW1lID0gZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOworICAgICAgICByZXR1cm4gKG5hbWUg
PT09ICJpbnB1dCIgfHwgbmFtZSA9PT0gImJ1dHRvbiIpICYmIGVsZW0udHlwZSA9PT0gdHlwZTsK
KyAgICB9OworfQorCisvKioKKyAqIFJldHVybnMgYSBmdW5jdGlvbiB0byB1c2UgaW4gcHNldWRv
cyBmb3IgOmVuYWJsZWQvOmRpc2FibGVkCisgKiBAcGFyYW0ge0Jvb2xlYW59IGRpc2FibGVkIHRy
dWUgZm9yIDpkaXNhYmxlZDsgZmFsc2UgZm9yIDplbmFibGVkCisgKi8KK2Z1bmN0aW9uIGNyZWF0
ZURpc2FibGVkUHNldWRvKCBkaXNhYmxlZCApIHsKKworICAgIC8vIEtub3duIDpkaXNhYmxlZCBm
YWxzZSBwb3NpdGl2ZXM6IGZpZWxkc2V0W2Rpc2FibGVkXSA+IGxlZ2VuZDpudGgtb2YtdHlwZShu
KzIpIDpjYW4tZGlzYWJsZQorICAgIHJldHVybiBmdW5jdGlvbiggZWxlbSApIHsKKworICAgICAg
ICAvLyBPbmx5IGNlcnRhaW4gZWxlbWVudHMgY2FuIG1hdGNoIDplbmFibGVkIG9yIDpkaXNhYmxl
ZAorICAgICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zY3Jp
cHRpbmcuaHRtbCNzZWxlY3Rvci1lbmFibGVkCisgICAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVj
LndoYXR3Zy5vcmcvbXVsdGlwYWdlL3NjcmlwdGluZy5odG1sI3NlbGVjdG9yLWRpc2FibGVkCisg
ICAgICAgIGlmICggImZvcm0iIGluIGVsZW0gKSB7CisKKyAgICAgICAgICAgIC8vIENoZWNrIGZv
ciBpbmhlcml0ZWQgZGlzYWJsZWRuZXNzIG9uIHJlbGV2YW50IG5vbi1kaXNhYmxlZCBlbGVtZW50
czoKKyAgICAgICAgICAgIC8vICogbGlzdGVkIGZvcm0tYXNzb2NpYXRlZCBlbGVtZW50cyBpbiBh
IGRpc2FibGVkIGZpZWxkc2V0CisgICAgICAgICAgICAvLyAgIGh0dHBzOi8vaHRtbC5zcGVjLndo
YXR3Zy5vcmcvbXVsdGlwYWdlL2Zvcm1zLmh0bWwjY2F0ZWdvcnktbGlzdGVkCisgICAgICAgICAg
ICAvLyAgIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2Zvcm1zLmh0bWwj
Y29uY2VwdC1mZS1kaXNhYmxlZAorICAgICAgICAgICAgLy8gKiBvcHRpb24gZWxlbWVudHMgaW4g
YSBkaXNhYmxlZCBvcHRncm91cAorICAgICAgICAgICAgLy8gICBodHRwczovL2h0bWwuc3BlYy53
aGF0d2cub3JnL211bHRpcGFnZS9mb3Jtcy5odG1sI2NvbmNlcHQtb3B0aW9uLWRpc2FibGVkCisg
ICAgICAgICAgICAvLyBBbGwgc3VjaCBlbGVtZW50cyBoYXZlIGEgImZvcm0iIHByb3BlcnR5Lgor
ICAgICAgICAgICAgaWYgKCBlbGVtLnBhcmVudE5vZGUgJiYgZWxlbS5kaXNhYmxlZCA9PT0gZmFs
c2UgKSB7CisKKyAgICAgICAgICAgICAgICAvLyBPcHRpb24gZWxlbWVudHMgZGVmZXIgdG8gYSBw
YXJlbnQgb3B0Z3JvdXAgaWYgcHJlc2VudAorICAgICAgICAgICAgICAgIGlmICggImxhYmVsIiBp
biBlbGVtICkgeworICAgICAgICAgICAgICAgICAgICBpZiAoICJsYWJlbCIgaW4gZWxlbS5wYXJl
bnROb2RlICkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW0ucGFyZW50Tm9k
ZS5kaXNhYmxlZCA9PT0gZGlzYWJsZWQ7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbS5kaXNhYmxlZCA9PT0gZGlzYWJsZWQ7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICAvLyBTdXBwb3J0OiBJRSA2IC0gMTEKKyAgICAgICAgICAgICAgICAvLyBVc2UgdGhlIGlz
RGlzYWJsZWQgc2hvcnRjdXQgcHJvcGVydHkgdG8gY2hlY2sgZm9yIGRpc2FibGVkIGZpZWxkc2V0
IGFuY2VzdG9ycworICAgICAgICAgICAgICAgIHJldHVybiBlbGVtLmlzRGlzYWJsZWQgPT09IGRp
c2FibGVkIHx8CisKKyAgICAgICAgICAgICAgICAgICAgLy8gV2hlcmUgdGhlcmUgaXMgbm8gaXNE
aXNhYmxlZCwgY2hlY2sgbWFudWFsbHkKKyAgICAgICAgICAgICAgICAgICAgLyoganNoaW50IC1X
MDE4ICovCisgICAgICAgICAgICAgICAgICAgIGVsZW0uaXNEaXNhYmxlZCAhPT0gIWRpc2FibGVk
ICYmCisgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZEFuY2VzdG9yKCBlbGVtICkgPT09
IGRpc2FibGVkOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gZWxlbS5kaXNh
YmxlZCA9PT0gZGlzYWJsZWQ7CisKKyAgICAgICAgLy8gVHJ5IHRvIHdpbm5vdyBvdXQgZWxlbWVu
dHMgdGhhdCBjYW4ndCBiZSBkaXNhYmxlZCBiZWZvcmUgdHJ1c3RpbmcgdGhlIGRpc2FibGVkIHBy
b3BlcnR5LgorICAgICAgICAvLyBTb21lIHZpY3RpbXMgZ2V0IGNhdWdodCBpbiBvdXIgbmV0IChs
YWJlbCwgbGVnZW5kLCBtZW51LCB0cmFjayksIGJ1dCBpdCBzaG91bGRuJ3QKKyAgICAgICAgLy8g
ZXZlbiBleGlzdCBvbiB0aGVtLCBsZXQgYWxvbmUgaGF2ZSBhIGJvb2xlYW4gdmFsdWUuCisgICAg
ICAgIH0gZWxzZSBpZiAoICJsYWJlbCIgaW4gZWxlbSApIHsKKyAgICAgICAgICAgIHJldHVybiBl
bGVtLmRpc2FibGVkID09PSBkaXNhYmxlZDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFJlbWFp
bmluZyBlbGVtZW50cyBhcmUgbmVpdGhlciA6ZW5hYmxlZCBub3IgOmRpc2FibGVkCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9OworfQorCisvKioKKyAqIFJldHVybnMgYSBmdW5jdGlvbiB0
byB1c2UgaW4gcHNldWRvcyBmb3IgcG9zaXRpb25hbHMKKyAqIEBwYXJhbSB7RnVuY3Rpb259IGZu
CisgKi8KK2Z1bmN0aW9uIGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oIGZuICkgeworICAgIHJldHVy
biBtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIGFyZ3VtZW50ICkgeworICAgICAgICBhcmd1bWVudCA9
ICthcmd1bWVudDsKKyAgICAgICAgcmV0dXJuIG1hcmtGdW5jdGlvbihmdW5jdGlvbiggc2VlZCwg
bWF0Y2hlcyApIHsKKyAgICAgICAgICAgIHZhciBqLAorICAgICAgICAgICAgICAgIG1hdGNoSW5k
ZXhlcyA9IGZuKCBbXSwgc2VlZC5sZW5ndGgsIGFyZ3VtZW50ICksCisgICAgICAgICAgICAgICAg
aSA9IG1hdGNoSW5kZXhlcy5sZW5ndGg7CisKKyAgICAgICAgICAgIC8vIE1hdGNoIGVsZW1lbnRz
IGZvdW5kIGF0IHRoZSBzcGVjaWZpZWQgaW5kZXhlcworICAgICAgICAgICAgd2hpbGUgKCBpLS0g
KSB7CisgICAgICAgICAgICAgICAgaWYgKCBzZWVkWyAoaiA9IG1hdGNoSW5kZXhlc1tpXSkgXSAp
IHsKKyAgICAgICAgICAgICAgICAgICAgc2VlZFtqXSA9ICEobWF0Y2hlc1tqXSA9IHNlZWRbal0p
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfSk7
Cit9CisKKy8qKgorICogQ2hlY2tzIGEgbm9kZSBmb3IgdmFsaWRpdHkgYXMgYSBTaXp6bGUgY29u
dGV4dAorICogQHBhcmFtIHtFbGVtZW50fE9iamVjdD19IGNvbnRleHQKKyAqIEByZXR1cm5zIHtF
bGVtZW50fE9iamVjdHxCb29sZWFufSBUaGUgaW5wdXQgbm9kZSBpZiBhY2NlcHRhYmxlLCBvdGhl
cndpc2UgYSBmYWxzeSB2YWx1ZQorICovCitmdW5jdGlvbiB0ZXN0Q29udGV4dCggY29udGV4dCAp
IHsKKyAgICByZXR1cm4gY29udGV4dCAmJiB0eXBlb2YgY29udGV4dC5nZXRFbGVtZW50c0J5VGFn
TmFtZSAhPT0gInVuZGVmaW5lZCIgJiYgY29udGV4dDsKK30KKworLy8gRXhwb3NlIHN1cHBvcnQg
dmFycyBmb3IgY29udmVuaWVuY2UKK3N1cHBvcnQgPSBTaXp6bGUuc3VwcG9ydCA9IHt9OworCisv
KioKKyAqIERldGVjdHMgWE1MIG5vZGVzCisgKiBAcGFyYW0ge0VsZW1lbnR8T2JqZWN0fSBlbGVt
IEFuIGVsZW1lbnQgb3IgYSBkb2N1bWVudAorICogQHJldHVybnMge0Jvb2xlYW59IFRydWUgaWZm
IGVsZW0gaXMgYSBub24tSFRNTCBYTUwgbm9kZQorICovCitpc1hNTCA9IFNpenpsZS5pc1hNTCA9
IGZ1bmN0aW9uKCBlbGVtICkgeworICAgIC8vIGRvY3VtZW50RWxlbWVudCBpcyB2ZXJpZmllZCBm
b3IgY2FzZXMgd2hlcmUgaXQgZG9lc24ndCB5ZXQgZXhpc3QKKyAgICAvLyAoc3VjaCBhcyBsb2Fk
aW5nIGlmcmFtZXMgaW4gSUUgLSAjNDgzMykKKyAgICB2YXIgZG9jdW1lbnRFbGVtZW50ID0gZWxl
bSAmJiAoZWxlbS5vd25lckRvY3VtZW50IHx8IGVsZW0pLmRvY3VtZW50RWxlbWVudDsKKyAgICBy
ZXR1cm4gZG9jdW1lbnRFbGVtZW50ID8gZG9jdW1lbnRFbGVtZW50Lm5vZGVOYW1lICE9PSAiSFRN
TCIgOiBmYWxzZTsKK307CisKKy8qKgorICogU2V0cyBkb2N1bWVudC1yZWxhdGVkIHZhcmlhYmxl
cyBvbmNlIGJhc2VkIG9uIHRoZSBjdXJyZW50IGRvY3VtZW50CisgKiBAcGFyYW0ge0VsZW1lbnR8
T2JqZWN0fSBbZG9jXSBBbiBlbGVtZW50IG9yIGRvY3VtZW50IG9iamVjdCB0byB1c2UgdG8gc2V0
IHRoZSBkb2N1bWVudAorICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY3VycmVudCBk
b2N1bWVudAorICovCitzZXREb2N1bWVudCA9IFNpenpsZS5zZXREb2N1bWVudCA9IGZ1bmN0aW9u
KCBub2RlICkgeworICAgIHZhciBoYXNDb21wYXJlLCBzdWJXaW5kb3csCisgICAgICAgIGRvYyA9
IG5vZGUgPyBub2RlLm93bmVyRG9jdW1lbnQgfHwgbm9kZSA6IHByZWZlcnJlZERvYzsKKworICAg
IC8vIFJldHVybiBlYXJseSBpZiBkb2MgaXMgaW52YWxpZCBvciBhbHJlYWR5IHNlbGVjdGVkCisg
ICAgaWYgKCBkb2MgPT09IGRvY3VtZW50IHx8IGRvYy5ub2RlVHlwZSAhPT0gOSB8fCAhZG9jLmRv
Y3VtZW50RWxlbWVudCApIHsKKyAgICAgICAgcmV0dXJuIGRvY3VtZW50OworICAgIH0KKworICAg
IC8vIFVwZGF0ZSBnbG9iYWwgdmFyaWFibGVzCisgICAgZG9jdW1lbnQgPSBkb2M7CisgICAgZG9j
RWxlbSA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDsKKyAgICBkb2N1bWVudElzSFRNTCA9ICFp
c1hNTCggZG9jdW1lbnQgKTsKKworICAgIC8vIFN1cHBvcnQ6IElFIDktMTEsIEVkZ2UKKyAgICAv
LyBBY2Nlc3NpbmcgaWZyYW1lIGRvY3VtZW50cyBhZnRlciB1bmxvYWQgdGhyb3dzICJwZXJtaXNz
aW9uIGRlbmllZCIgZXJyb3JzIChqUXVlcnkgIzEzOTM2KQorICAgIGlmICggcHJlZmVycmVkRG9j
ICE9PSBkb2N1bWVudCAmJgorICAgICAgICAoc3ViV2luZG93ID0gZG9jdW1lbnQuZGVmYXVsdFZp
ZXcpICYmIHN1YldpbmRvdy50b3AgIT09IHN1YldpbmRvdyApIHsKKworICAgICAgICAvLyBTdXBw
b3J0OiBJRSAxMSwgRWRnZQorICAgICAgICBpZiAoIHN1YldpbmRvdy5hZGRFdmVudExpc3RlbmVy
ICkgeworICAgICAgICAgICAgc3ViV2luZG93LmFkZEV2ZW50TGlzdGVuZXIoICJ1bmxvYWQiLCB1
bmxvYWRIYW5kbGVyLCBmYWxzZSApOworCisgICAgICAgIC8vIFN1cHBvcnQ6IElFIDkgLSAxMCBv
bmx5CisgICAgICAgIH0gZWxzZSBpZiAoIHN1YldpbmRvdy5hdHRhY2hFdmVudCApIHsKKyAgICAg
ICAgICAgIHN1YldpbmRvdy5hdHRhY2hFdmVudCggIm9udW5sb2FkIiwgdW5sb2FkSGFuZGxlciAp
OworICAgICAgICB9CisgICAgfQorCisgICAgLyogQXR0cmlidXRlcworICAgIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0gKi8KKworICAgIC8vIFN1cHBvcnQ6IElFPDgKKyAgICAvLyBWZXJpZnkgdGhhdCBnZXRBdHRy
aWJ1dGUgcmVhbGx5IHJldHVybnMgYXR0cmlidXRlcyBhbmQgbm90IHByb3BlcnRpZXMKKyAgICAv
LyAoZXhjZXB0aW5nIElFOCBib29sZWFucykKKyAgICBzdXBwb3J0LmF0dHJpYnV0ZXMgPSBhc3Nl
cnQoZnVuY3Rpb24oIGVsICkgeworICAgICAgICBlbC5jbGFzc05hbWUgPSAiaSI7CisgICAgICAg
IHJldHVybiAhZWwuZ2V0QXR0cmlidXRlKCJjbGFzc05hbWUiKTsKKyAgICB9KTsKKworICAgIC8q
IGdldEVsZW1lbnQocylCeSoKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKyAgICAvLyBDaGVjayBp
ZiBnZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpIHJldHVybnMgb25seSBlbGVtZW50cworICAgIHN1
cHBvcnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUgPSBhc3NlcnQoZnVuY3Rpb24oIGVsICkgeworICAg
ICAgICBlbC5hcHBlbmRDaGlsZCggZG9jdW1lbnQuY3JlYXRlQ29tbWVudCgiIikgKTsKKyAgICAg
ICAgcmV0dXJuICFlbC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLmxlbmd0aDsKKyAgICB9KTsK
KworICAgIC8vIFN1cHBvcnQ6IElFPDkKKyAgICBzdXBwb3J0LmdldEVsZW1lbnRzQnlDbGFzc05h
bWUgPSBybmF0aXZlLnRlc3QoIGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUgKTsKKwor
ICAgIC8vIFN1cHBvcnQ6IElFPDEwCisgICAgLy8gQ2hlY2sgaWYgZ2V0RWxlbWVudEJ5SWQgcmV0
dXJucyBlbGVtZW50cyBieSBuYW1lCisgICAgLy8gVGhlIGJyb2tlbiBnZXRFbGVtZW50QnlJZCBt
ZXRob2RzIGRvbid0IHBpY2sgdXAgcHJvZ3JhbW1hdGljYWxseS1zZXQgbmFtZXMsCisgICAgLy8g
c28gdXNlIGEgcm91bmRhYm91dCBnZXRFbGVtZW50c0J5TmFtZSB0ZXN0CisgICAgc3VwcG9ydC5n
ZXRCeUlkID0gYXNzZXJ0KGZ1bmN0aW9uKCBlbCApIHsKKyAgICAgICAgZG9jRWxlbS5hcHBlbmRD
aGlsZCggZWwgKS5pZCA9IGV4cGFuZG87CisgICAgICAgIHJldHVybiAhZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeU5hbWUgfHwgIWRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCBleHBhbmRvICkubGVu
Z3RoOworICAgIH0pOworCisgICAgLy8gSUQgZmlsdGVyIGFuZCBmaW5kCisgICAgaWYgKCBzdXBw
b3J0LmdldEJ5SWQgKSB7CisgICAgICAgIEV4cHIuZmlsdGVyWyJJRCJdID0gZnVuY3Rpb24oIGlk
ICkgeworICAgICAgICAgICAgdmFyIGF0dHJJZCA9IGlkLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVu
ZXNjYXBlICk7CisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGVsZW0uZ2V0QXR0cmlidXRlKCJpZCIpID09PSBhdHRySWQ7CisgICAg
ICAgICAgICB9OworICAgICAgICB9OworICAgICAgICBFeHByLmZpbmRbIklEIl0gPSBmdW5jdGlv
biggaWQsIGNvbnRleHQgKSB7CisgICAgICAgICAgICBpZiAoIHR5cGVvZiBjb250ZXh0LmdldEVs
ZW1lbnRCeUlkICE9PSAidW5kZWZpbmVkIiAmJiBkb2N1bWVudElzSFRNTCApIHsKKyAgICAgICAg
ICAgICAgICB2YXIgZWxlbSA9IGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQoIGlkICk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGVsZW0gPyBbIGVsZW0gXSA6IFtdOworICAgICAgICAgICAgfQorICAg
ICAgICB9OworICAgIH0gZWxzZSB7CisgICAgICAgIEV4cHIuZmlsdGVyWyJJRCJdID0gIGZ1bmN0
aW9uKCBpZCApIHsKKyAgICAgICAgICAgIHZhciBhdHRySWQgPSBpZC5yZXBsYWNlKCBydW5lc2Nh
cGUsIGZ1bmVzY2FwZSApOworICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkgewor
ICAgICAgICAgICAgICAgIHZhciBub2RlID0gdHlwZW9mIGVsZW0uZ2V0QXR0cmlidXRlTm9kZSAh
PT0gInVuZGVmaW5lZCIgJiYKKyAgICAgICAgICAgICAgICAgICAgZWxlbS5nZXRBdHRyaWJ1dGVO
b2RlKCJpZCIpOworICAgICAgICAgICAgICAgIHJldHVybiBub2RlICYmIG5vZGUudmFsdWUgPT09
IGF0dHJJZDsKKyAgICAgICAgICAgIH07CisgICAgICAgIH07CisKKyAgICAgICAgLy8gU3VwcG9y
dDogSUUgNiAtIDcgb25seQorICAgICAgICAvLyBnZXRFbGVtZW50QnlJZCBpcyBub3QgcmVsaWFi
bGUgYXMgYSBmaW5kIHNob3J0Y3V0CisgICAgICAgIEV4cHIuZmluZFsiSUQiXSA9IGZ1bmN0aW9u
KCBpZCwgY29udGV4dCApIHsKKyAgICAgICAgICAgIGlmICggdHlwZW9mIGNvbnRleHQuZ2V0RWxl
bWVudEJ5SWQgIT09ICJ1bmRlZmluZWQiICYmIGRvY3VtZW50SXNIVE1MICkgeworICAgICAgICAg
ICAgICAgIHZhciBub2RlLCBpLCBlbGVtcywKKyAgICAgICAgICAgICAgICAgICAgZWxlbSA9IGNv
bnRleHQuZ2V0RWxlbWVudEJ5SWQoIGlkICk7CisKKyAgICAgICAgICAgICAgICBpZiAoIGVsZW0g
KSB7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gVmVyaWZ5IHRoZSBpZCBhdHRyaWJ1dGUKKyAg
ICAgICAgICAgICAgICAgICAgbm9kZSA9IGVsZW0uZ2V0QXR0cmlidXRlTm9kZSgiaWQiKTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKCBub2RlICYmIG5vZGUudmFsdWUgPT09IGlkICkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsgZWxlbSBdOworICAgICAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICAgICAgLy8gRmFsbCBiYWNrIG9uIGdldEVsZW1lbnRzQnlO
YW1lCisgICAgICAgICAgICAgICAgICAgIGVsZW1zID0gY29udGV4dC5nZXRFbGVtZW50c0J5TmFt
ZSggaWQgKTsKKyAgICAgICAgICAgICAgICAgICAgaSA9IDA7CisgICAgICAgICAgICAgICAgICAg
IHdoaWxlICggKGVsZW0gPSBlbGVtc1tpKytdKSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IG5vZGUgPSBlbGVtLmdldEF0dHJpYnV0ZU5vZGUoImlkIik7CisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoIG5vZGUgJiYgbm9kZS52YWx1ZSA9PT0gaWQgKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIFsgZWxlbSBdOworICAgICAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgcmV0dXJuIFtdOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0KKworICAgIC8v
IFRhZworICAgIEV4cHIuZmluZFsiVEFHIl0gPSBzdXBwb3J0LmdldEVsZW1lbnRzQnlUYWdOYW1l
ID8KKyAgICAgICAgZnVuY3Rpb24oIHRhZywgY29udGV4dCApIHsKKyAgICAgICAgICAgIGlmICgg
dHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUgIT09ICJ1bmRlZmluZWQiICkgewor
ICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lKCB0YWcg
KTsKKworICAgICAgICAgICAgLy8gRG9jdW1lbnRGcmFnbWVudCBub2RlcyBkb24ndCBoYXZlIGdF
QlROCisgICAgICAgICAgICB9IGVsc2UgaWYgKCBzdXBwb3J0LnFzYSApIHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gY29udGV4dC5xdWVyeVNlbGVjdG9yQWxsKCB0YWcgKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfSA6CisKKyAgICAgICAgZnVuY3Rpb24oIHRhZywgY29udGV4dCApIHsKKyAg
ICAgICAgICAgIHZhciBlbGVtLAorICAgICAgICAgICAgICAgIHRtcCA9IFtdLAorICAgICAgICAg
ICAgICAgIGkgPSAwLAorICAgICAgICAgICAgICAgIC8vIEJ5IGhhcHB5IGNvaW5jaWRlbmNlLCBh
IChicm9rZW4pIGdFQlROIGFwcGVhcnMgb24gRG9jdW1lbnRGcmFnbWVudCBub2RlcyB0b28KKyAg
ICAgICAgICAgICAgICByZXN1bHRzID0gY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSggdGFn
ICk7CisKKyAgICAgICAgICAgIC8vIEZpbHRlciBvdXQgcG9zc2libGUgY29tbWVudHMKKyAgICAg
ICAgICAgIGlmICggdGFnID09PSAiKiIgKSB7CisgICAgICAgICAgICAgICAgd2hpbGUgKCAoZWxl
bSA9IHJlc3VsdHNbaSsrXSkgKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICggZWxlbS5ub2Rl
VHlwZSA9PT0gMSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcC5wdXNoKCBlbGVtICk7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICByZXR1cm4gdG1wOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dHM7CisgICAgICAgIH07CisKKyAgICAvLyBDbGFzcworICAgIEV4cHIuZmluZFsiQ0xBU1MiXSA9
IHN1cHBvcnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSAmJiBmdW5jdGlvbiggY2xhc3NOYW1lLCBj
b250ZXh0ICkgeworICAgICAgICBpZiAoIHR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRzQnlDbGFz
c05hbWUgIT09ICJ1bmRlZmluZWQiICYmIGRvY3VtZW50SXNIVE1MICkgeworICAgICAgICAgICAg
cmV0dXJuIGNvbnRleHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSggY2xhc3NOYW1lICk7CisgICAg
ICAgIH0KKyAgICB9OworCisgICAgLyogUVNBL21hdGNoZXNTZWxlY3RvcgorICAgIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0gKi8KKworICAgIC8vIFFTQSBhbmQgbWF0Y2hlc1NlbGVjdG9yIHN1cHBvcnQKKworICAg
IC8vIG1hdGNoZXNTZWxlY3Rvcig6YWN0aXZlKSByZXBvcnRzIGZhbHNlIHdoZW4gdHJ1ZSAoSUU5
L09wZXJhIDExLjUpCisgICAgcmJ1Z2d5TWF0Y2hlcyA9IFtdOworCisgICAgLy8gcVNhKDpmb2N1
cykgcmVwb3J0cyBmYWxzZSB3aGVuIHRydWUgKENocm9tZSAyMSkKKyAgICAvLyBXZSBhbGxvdyB0
aGlzIGJlY2F1c2Ugb2YgYSBidWcgaW4gSUU4LzkgdGhhdCB0aHJvd3MgYW4gZXJyb3IKKyAgICAv
LyB3aGVuZXZlciBgZG9jdW1lbnQuYWN0aXZlRWxlbWVudGAgaXMgYWNjZXNzZWQgb24gYW4gaWZy
YW1lCisgICAgLy8gU28sIHdlIGFsbG93IDpmb2N1cyB0byBwYXNzIHRocm91Z2ggUVNBIGFsbCB0
aGUgdGltZSB0byBhdm9pZCB0aGUgSUUgZXJyb3IKKyAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLmpx
dWVyeS5jb20vdGlja2V0LzEzMzc4CisgICAgcmJ1Z2d5UVNBID0gW107CisKKyAgICBpZiAoIChz
dXBwb3J0LnFzYSA9IHJuYXRpdmUudGVzdCggZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCApKSAp
IHsKKyAgICAgICAgLy8gQnVpbGQgUVNBIHJlZ2V4CisgICAgICAgIC8vIFJlZ2V4IHN0cmF0ZWd5
IGFkb3B0ZWQgZnJvbSBEaWVnbyBQZXJpbmkKKyAgICAgICAgYXNzZXJ0KGZ1bmN0aW9uKCBlbCAp
IHsKKyAgICAgICAgICAgIC8vIFNlbGVjdCBpcyBzZXQgdG8gZW1wdHkgc3RyaW5nIG9uIHB1cnBv
c2UKKyAgICAgICAgICAgIC8vIFRoaXMgaXMgdG8gdGVzdCBJRSdzIHRyZWF0bWVudCBvZiBub3Qg
ZXhwbGljaXRseQorICAgICAgICAgICAgLy8gc2V0dGluZyBhIGJvb2xlYW4gY29udGVudCBhdHRy
aWJ1dGUsCisgICAgICAgICAgICAvLyBzaW5jZSBpdHMgcHJlc2VuY2Ugc2hvdWxkIGJlIGVub3Vn
aAorICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLmpxdWVyeS5jb20vdGlja2V0LzEyMzU5Cisg
ICAgICAgICAgICBkb2NFbGVtLmFwcGVuZENoaWxkKCBlbCApLmlubmVySFRNTCA9ICI8YSBpZD0n
IiArIGV4cGFuZG8gKyAiJz48L2E+IiArCisgICAgICAgICAgICAgICAgIjxzZWxlY3QgaWQ9JyIg
KyBleHBhbmRvICsgIi1cclxcJyBtc2FsbG93Y2FwdHVyZT0nJz4iICsKKyAgICAgICAgICAgICAg
ICAiPG9wdGlvbiBzZWxlY3RlZD0nJz48L29wdGlvbj48L3NlbGVjdD4iOworCisgICAgICAgICAg
ICAvLyBTdXBwb3J0OiBJRTgsIE9wZXJhIDExLTEyLjE2CisgICAgICAgICAgICAvLyBOb3RoaW5n
IHNob3VsZCBiZSBzZWxlY3RlZCB3aGVuIGVtcHR5IHN0cmluZ3MgZm9sbG93IF49IG9yICQ9IG9y
ICo9CisgICAgICAgICAgICAvLyBUaGUgdGVzdCBhdHRyaWJ1dGUgbXVzdCBiZSB1bmtub3duIGlu
IE9wZXJhIGJ1dCAic2FmZSIgZm9yIFdpblJUCisgICAgICAgICAgICAvLyBodHRwczovL21zZG4u
bWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L2llL2hoNDY1Mzg4LmFzcHgjYXR0cmlidXRlX3Nl
Y3Rpb24KKyAgICAgICAgICAgIGlmICggZWwucXVlcnlTZWxlY3RvckFsbCgiW21zYWxsb3djYXB0
dXJlXj0nJ10iKS5sZW5ndGggKSB7CisgICAgICAgICAgICAgICAgcmJ1Z2d5UVNBLnB1c2goICJb
Kl4kXT0iICsgd2hpdGVzcGFjZSArICIqKD86Jyd8XCJcIikiICk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIC8vIFN1cHBvcnQ6IElFOAorICAgICAgICAgICAgLy8gQm9vbGVhbiBhdHRy
aWJ1dGVzIGFuZCAidmFsdWUiIGFyZSBub3QgdHJlYXRlZCBjb3JyZWN0bHkKKyAgICAgICAgICAg
IGlmICggIWVsLnF1ZXJ5U2VsZWN0b3JBbGwoIltzZWxlY3RlZF0iKS5sZW5ndGggKSB7CisgICAg
ICAgICAgICAgICAgcmJ1Z2d5UVNBLnB1c2goICJcXFsiICsgd2hpdGVzcGFjZSArICIqKD86dmFs
dWV8IiArIGJvb2xlYW5zICsgIikiICk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8v
IFN1cHBvcnQ6IENocm9tZTwyOSwgQW5kcm9pZDw0LjQsIFNhZmFyaTw3LjArLCBpT1M8Ny4wKywg
UGhhbnRvbUpTPDEuOS44KworICAgICAgICAgICAgaWYgKCAhZWwucXVlcnlTZWxlY3RvckFsbCgg
IltpZH49IiArIGV4cGFuZG8gKyAiLV0iICkubGVuZ3RoICkgeworICAgICAgICAgICAgICAgIHJi
dWdneVFTQS5wdXNoKCJ+PSIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBXZWJr
aXQvT3BlcmEgLSA6Y2hlY2tlZCBzaG91bGQgcmV0dXJuIHNlbGVjdGVkIG9wdGlvbiBlbGVtZW50
cworICAgICAgICAgICAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIvMjAxMS9SRUMtY3NzMy1zZWxl
Y3RvcnMtMjAxMTA5MjkvI2NoZWNrZWQKKyAgICAgICAgICAgIC8vIElFOCB0aHJvd3MgZXJyb3Ig
aGVyZSBhbmQgd2lsbCBub3Qgc2VlIGxhdGVyIHRlc3RzCisgICAgICAgICAgICBpZiAoICFlbC5x
dWVyeVNlbGVjdG9yQWxsKCI6Y2hlY2tlZCIpLmxlbmd0aCApIHsKKyAgICAgICAgICAgICAgICBy
YnVnZ3lRU0EucHVzaCgiOmNoZWNrZWQiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
Ly8gU3VwcG9ydDogU2FmYXJpIDgrLCBpT1MgOCsKKyAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzY4NTEKKyAgICAgICAgICAgIC8vIEluLXBh
Z2UgYHNlbGVjdG9yI2lkIHNpYmxpbmctY29tYmluYXRvciBzZWxlY3RvcmAgZmFpbHMKKyAgICAg
ICAgICAgIGlmICggIWVsLnF1ZXJ5U2VsZWN0b3JBbGwoICJhIyIgKyBleHBhbmRvICsgIisqIiAp
Lmxlbmd0aCApIHsKKyAgICAgICAgICAgICAgICByYnVnZ3lRU0EucHVzaCgiLiMuK1srfl0iKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisKKyAgICAgICAgYXNzZXJ0KGZ1bmN0aW9uKCBl
bCApIHsKKyAgICAgICAgICAgIGVsLmlubmVySFRNTCA9ICI8YSBocmVmPScnIGRpc2FibGVkPSdk
aXNhYmxlZCc+PC9hPiIgKworICAgICAgICAgICAgICAgICI8c2VsZWN0IGRpc2FibGVkPSdkaXNh
YmxlZCc+PG9wdGlvbi8+PC9zZWxlY3Q+IjsKKworICAgICAgICAgICAgLy8gU3VwcG9ydDogV2lu
ZG93cyA4IE5hdGl2ZSBBcHBzCisgICAgICAgICAgICAvLyBUaGUgdHlwZSBhbmQgbmFtZSBhdHRy
aWJ1dGVzIGFyZSByZXN0cmljdGVkIGR1cmluZyAuaW5uZXJIVE1MIGFzc2lnbm1lbnQKKyAgICAg
ICAgICAgIHZhciBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7CisgICAg
ICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoICJ0eXBlIiwgImhpZGRlbiIgKTsKKyAgICAgICAg
ICAgIGVsLmFwcGVuZENoaWxkKCBpbnB1dCApLnNldEF0dHJpYnV0ZSggIm5hbWUiLCAiRCIgKTsK
KworICAgICAgICAgICAgLy8gU3VwcG9ydDogSUU4CisgICAgICAgICAgICAvLyBFbmZvcmNlIGNh
c2Utc2Vuc2l0aXZpdHkgb2YgbmFtZSBhdHRyaWJ1dGUKKyAgICAgICAgICAgIGlmICggZWwucXVl
cnlTZWxlY3RvckFsbCgiW25hbWU9ZF0iKS5sZW5ndGggKSB7CisgICAgICAgICAgICAgICAgcmJ1
Z2d5UVNBLnB1c2goICJuYW1lIiArIHdoaXRlc3BhY2UgKyAiKlsqXiR8IX5dPz0iICk7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEZGIDMuNSAtIDplbmFibGVkLzpkaXNhYmxlZCBh
bmQgaGlkZGVuIGVsZW1lbnRzIChoaWRkZW4gZWxlbWVudHMgYXJlIHN0aWxsIGVuYWJsZWQpCisg
ICAgICAgICAgICAvLyBJRTggdGhyb3dzIGVycm9yIGhlcmUgYW5kIHdpbGwgbm90IHNlZSBsYXRl
ciB0ZXN0cworICAgICAgICAgICAgaWYgKCBlbC5xdWVyeVNlbGVjdG9yQWxsKCI6ZW5hYmxlZCIp
Lmxlbmd0aCAhPT0gMiApIHsKKyAgICAgICAgICAgICAgICByYnVnZ3lRU0EucHVzaCggIjplbmFi
bGVkIiwgIjpkaXNhYmxlZCIgKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gU3Vw
cG9ydDogSUU5LTExKworICAgICAgICAgICAgLy8gSUUncyA6ZGlzYWJsZWQgc2VsZWN0b3IgZG9l
cyBub3QgcGljayB1cCB0aGUgY2hpbGRyZW4gb2YgZGlzYWJsZWQgZmllbGRzZXRzCisgICAgICAg
ICAgICBkb2NFbGVtLmFwcGVuZENoaWxkKCBlbCApLmRpc2FibGVkID0gdHJ1ZTsKKyAgICAgICAg
ICAgIGlmICggZWwucXVlcnlTZWxlY3RvckFsbCgiOmRpc2FibGVkIikubGVuZ3RoICE9PSAyICkg
eworICAgICAgICAgICAgICAgIHJidWdneVFTQS5wdXNoKCAiOmVuYWJsZWQiLCAiOmRpc2FibGVk
IiApOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBPcGVyYSAxMC0xMSBkb2VzIG5v
dCB0aHJvdyBvbiBwb3N0LWNvbW1hIGludmFsaWQgcHNldWRvcworICAgICAgICAgICAgZWwucXVl
cnlTZWxlY3RvckFsbCgiKiw6eCIpOworICAgICAgICAgICAgcmJ1Z2d5UVNBLnB1c2goIiwuKjoi
KTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgaWYgKCAoc3VwcG9ydC5tYXRjaGVzU2VsZWN0
b3IgPSBybmF0aXZlLnRlc3QoIChtYXRjaGVzID0gZG9jRWxlbS5tYXRjaGVzIHx8CisgICAgICAg
IGRvY0VsZW0ud2Via2l0TWF0Y2hlc1NlbGVjdG9yIHx8CisgICAgICAgIGRvY0VsZW0ubW96TWF0
Y2hlc1NlbGVjdG9yIHx8CisgICAgICAgIGRvY0VsZW0ub01hdGNoZXNTZWxlY3RvciB8fAorICAg
ICAgICBkb2NFbGVtLm1zTWF0Y2hlc1NlbGVjdG9yKSApKSApIHsKKworICAgICAgICBhc3NlcnQo
ZnVuY3Rpb24oIGVsICkgeworICAgICAgICAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIGl0J3MgcG9z
c2libGUgdG8gZG8gbWF0Y2hlc1NlbGVjdG9yCisgICAgICAgICAgICAvLyBvbiBhIGRpc2Nvbm5l
Y3RlZCBub2RlIChJRSA5KQorICAgICAgICAgICAgc3VwcG9ydC5kaXNjb25uZWN0ZWRNYXRjaCA9
IG1hdGNoZXMuY2FsbCggZWwsICIqIiApOworCisgICAgICAgICAgICAvLyBUaGlzIHNob3VsZCBm
YWlsIHdpdGggYW4gZXhjZXB0aW9uCisgICAgICAgICAgICAvLyBHZWNrbyBkb2VzIG5vdCBlcnJv
ciwgcmV0dXJucyBmYWxzZSBpbnN0ZWFkCisgICAgICAgICAgICBtYXRjaGVzLmNhbGwoIGVsLCAi
W3MhPScnXTp4IiApOworICAgICAgICAgICAgcmJ1Z2d5TWF0Y2hlcy5wdXNoKCAiIT0iLCBwc2V1
ZG9zICk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIHJidWdneVFTQSA9IHJidWdneVFTQS5s
ZW5ndGggJiYgbmV3IFJlZ0V4cCggcmJ1Z2d5UVNBLmpvaW4oInwiKSApOworICAgIHJidWdneU1h
dGNoZXMgPSByYnVnZ3lNYXRjaGVzLmxlbmd0aCAmJiBuZXcgUmVnRXhwKCByYnVnZ3lNYXRjaGVz
LmpvaW4oInwiKSApOworCisgICAgLyogQ29udGFpbnMKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisg
ICAgaGFzQ29tcGFyZSA9IHJuYXRpdmUudGVzdCggZG9jRWxlbS5jb21wYXJlRG9jdW1lbnRQb3Np
dGlvbiApOworCisgICAgLy8gRWxlbWVudCBjb250YWlucyBhbm90aGVyCisgICAgLy8gUHVycG9z
ZWZ1bGx5IHNlbGYtZXhjbHVzaXZlCisgICAgLy8gQXMgaW4sIGFuIGVsZW1lbnQgZG9lcyBub3Qg
Y29udGFpbiBpdHNlbGYKKyAgICBjb250YWlucyA9IGhhc0NvbXBhcmUgfHwgcm5hdGl2ZS50ZXN0
KCBkb2NFbGVtLmNvbnRhaW5zICkgPworICAgICAgICBmdW5jdGlvbiggYSwgYiApIHsKKyAgICAg
ICAgICAgIHZhciBhZG93biA9IGEubm9kZVR5cGUgPT09IDkgPyBhLmRvY3VtZW50RWxlbWVudCA6
IGEsCisgICAgICAgICAgICAgICAgYnVwID0gYiAmJiBiLnBhcmVudE5vZGU7CisgICAgICAgICAg
ICByZXR1cm4gYSA9PT0gYnVwIHx8ICEhKCBidXAgJiYgYnVwLm5vZGVUeXBlID09PSAxICYmICgK
KyAgICAgICAgICAgICAgICBhZG93bi5jb250YWlucyA/CisgICAgICAgICAgICAgICAgICAgIGFk
b3duLmNvbnRhaW5zKCBidXAgKSA6CisgICAgICAgICAgICAgICAgICAgIGEuY29tcGFyZURvY3Vt
ZW50UG9zaXRpb24gJiYgYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiggYnVwICkgJiAxNgorICAg
ICAgICAgICAgKSk7CisgICAgICAgIH0gOgorICAgICAgICBmdW5jdGlvbiggYSwgYiApIHsKKyAg
ICAgICAgICAgIGlmICggYiApIHsKKyAgICAgICAgICAgICAgICB3aGlsZSAoIChiID0gYi5wYXJl
bnROb2RlKSApIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCBiID09PSBhICkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIH07CisKKyAgICAvKiBTb3J0aW5nCisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisg
ICAgLy8gRG9jdW1lbnQgb3JkZXIgc29ydGluZworICAgIHNvcnRPcmRlciA9IGhhc0NvbXBhcmUg
PworICAgIGZ1bmN0aW9uKCBhLCBiICkgeworCisgICAgICAgIC8vIEZsYWcgZm9yIGR1cGxpY2F0
ZSByZW1vdmFsCisgICAgICAgIGlmICggYSA9PT0gYiApIHsKKyAgICAgICAgICAgIGhhc0R1cGxp
Y2F0ZSA9IHRydWU7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCisgICAgICAg
IC8vIFNvcnQgb24gbWV0aG9kIGV4aXN0ZW5jZSBpZiBvbmx5IG9uZSBpbnB1dCBoYXMgY29tcGFy
ZURvY3VtZW50UG9zaXRpb24KKyAgICAgICAgdmFyIGNvbXBhcmUgPSAhYS5jb21wYXJlRG9jdW1l
bnRQb3NpdGlvbiAtICFiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uOworICAgICAgICBpZiAoIGNv
bXBhcmUgKSB7CisgICAgICAgICAgICByZXR1cm4gY29tcGFyZTsKKyAgICAgICAgfQorCisgICAg
ICAgIC8vIENhbGN1bGF0ZSBwb3NpdGlvbiBpZiBib3RoIGlucHV0cyBiZWxvbmcgdG8gdGhlIHNh
bWUgZG9jdW1lbnQKKyAgICAgICAgY29tcGFyZSA9ICggYS5vd25lckRvY3VtZW50IHx8IGEgKSA9
PT0gKCBiLm93bmVyRG9jdW1lbnQgfHwgYiApID8KKyAgICAgICAgICAgIGEuY29tcGFyZURvY3Vt
ZW50UG9zaXRpb24oIGIgKSA6CisKKyAgICAgICAgICAgIC8vIE90aGVyd2lzZSB3ZSBrbm93IHRo
ZXkgYXJlIGRpc2Nvbm5lY3RlZAorICAgICAgICAgICAgMTsKKworICAgICAgICAvLyBEaXNjb25u
ZWN0ZWQgbm9kZXMKKyAgICAgICAgaWYgKCBjb21wYXJlICYgMSB8fAorICAgICAgICAgICAgKCFz
dXBwb3J0LnNvcnREZXRhY2hlZCAmJiBiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKCBhICkgPT09
IGNvbXBhcmUpICkgeworCisgICAgICAgICAgICAvLyBDaG9vc2UgdGhlIGZpcnN0IGVsZW1lbnQg
dGhhdCBpcyByZWxhdGVkIHRvIG91ciBwcmVmZXJyZWQgZG9jdW1lbnQKKyAgICAgICAgICAgIGlm
ICggYSA9PT0gZG9jdW1lbnQgfHwgYS5vd25lckRvY3VtZW50ID09PSBwcmVmZXJyZWREb2MgJiYg
Y29udGFpbnMocHJlZmVycmVkRG9jLCBhKSApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIGIgPT09IGRvY3VtZW50IHx8IGIub3du
ZXJEb2N1bWVudCA9PT0gcHJlZmVycmVkRG9jICYmIGNvbnRhaW5zKHByZWZlcnJlZERvYywgYikg
KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIC8vIE1haW50YWluIG9yaWdpbmFsIG9yZGVyCisgICAgICAgICAgICByZXR1cm4gc29ydElu
cHV0ID8KKyAgICAgICAgICAgICAgICAoIGluZGV4T2YoIHNvcnRJbnB1dCwgYSApIC0gaW5kZXhP
Ziggc29ydElucHV0LCBiICkgKSA6CisgICAgICAgICAgICAgICAgMDsKKyAgICAgICAgfQorCisg
ICAgICAgIHJldHVybiBjb21wYXJlICYgNCA/IC0xIDogMTsKKyAgICB9IDoKKyAgICBmdW5jdGlv
biggYSwgYiApIHsKKyAgICAgICAgLy8gRXhpdCBlYXJseSBpZiB0aGUgbm9kZXMgYXJlIGlkZW50
aWNhbAorICAgICAgICBpZiAoIGEgPT09IGIgKSB7CisgICAgICAgICAgICBoYXNEdXBsaWNhdGUg
PSB0cnVlOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKworICAgICAgICB2YXIg
Y3VyLAorICAgICAgICAgICAgaSA9IDAsCisgICAgICAgICAgICBhdXAgPSBhLnBhcmVudE5vZGUs
CisgICAgICAgICAgICBidXAgPSBiLnBhcmVudE5vZGUsCisgICAgICAgICAgICBhcCA9IFsgYSBd
LAorICAgICAgICAgICAgYnAgPSBbIGIgXTsKKworICAgICAgICAvLyBQYXJlbnRsZXNzIG5vZGVz
IGFyZSBlaXRoZXIgZG9jdW1lbnRzIG9yIGRpc2Nvbm5lY3RlZAorICAgICAgICBpZiAoICFhdXAg
fHwgIWJ1cCApIHsKKyAgICAgICAgICAgIHJldHVybiBhID09PSBkb2N1bWVudCA/IC0xIDoKKyAg
ICAgICAgICAgICAgICBiID09PSBkb2N1bWVudCA/IDEgOgorICAgICAgICAgICAgICAgIGF1cCA/
IC0xIDoKKyAgICAgICAgICAgICAgICBidXAgPyAxIDoKKyAgICAgICAgICAgICAgICBzb3J0SW5w
dXQgPworICAgICAgICAgICAgICAgICggaW5kZXhPZiggc29ydElucHV0LCBhICkgLSBpbmRleE9m
KCBzb3J0SW5wdXQsIGIgKSApIDoKKyAgICAgICAgICAgICAgICAwOworCisgICAgICAgIC8vIElm
IHRoZSBub2RlcyBhcmUgc2libGluZ3MsIHdlIGNhbiBkbyBhIHF1aWNrIGNoZWNrCisgICAgICAg
IH0gZWxzZSBpZiAoIGF1cCA9PT0gYnVwICkgeworICAgICAgICAgICAgcmV0dXJuIHNpYmxpbmdD
aGVjayggYSwgYiApOworICAgICAgICB9CisKKyAgICAgICAgLy8gT3RoZXJ3aXNlIHdlIG5lZWQg
ZnVsbCBsaXN0cyBvZiB0aGVpciBhbmNlc3RvcnMgZm9yIGNvbXBhcmlzb24KKyAgICAgICAgY3Vy
ID0gYTsKKyAgICAgICAgd2hpbGUgKCAoY3VyID0gY3VyLnBhcmVudE5vZGUpICkgeworICAgICAg
ICAgICAgYXAudW5zaGlmdCggY3VyICk7CisgICAgICAgIH0KKyAgICAgICAgY3VyID0gYjsKKyAg
ICAgICAgd2hpbGUgKCAoY3VyID0gY3VyLnBhcmVudE5vZGUpICkgeworICAgICAgICAgICAgYnAu
dW5zaGlmdCggY3VyICk7CisgICAgICAgIH0KKworICAgICAgICAvLyBXYWxrIGRvd24gdGhlIHRy
ZWUgbG9va2luZyBmb3IgYSBkaXNjcmVwYW5jeQorICAgICAgICB3aGlsZSAoIGFwW2ldID09PSBi
cFtpXSApIHsKKyAgICAgICAgICAgIGkrKzsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBp
ID8KKyAgICAgICAgICAgIC8vIERvIGEgc2libGluZyBjaGVjayBpZiB0aGUgbm9kZXMgaGF2ZSBh
IGNvbW1vbiBhbmNlc3RvcgorICAgICAgICAgICAgc2libGluZ0NoZWNrKCBhcFtpXSwgYnBbaV0g
KSA6CisKKyAgICAgICAgICAgIC8vIE90aGVyd2lzZSBub2RlcyBpbiBvdXIgZG9jdW1lbnQgc29y
dCBmaXJzdAorICAgICAgICAgICAgYXBbaV0gPT09IHByZWZlcnJlZERvYyA/IC0xIDoKKyAgICAg
ICAgICAgIGJwW2ldID09PSBwcmVmZXJyZWREb2MgPyAxIDoKKyAgICAgICAgICAgIDA7CisgICAg
fTsKKworICAgIHJldHVybiBkb2N1bWVudDsKK307CisKK1NpenpsZS5tYXRjaGVzID0gZnVuY3Rp
b24oIGV4cHIsIGVsZW1lbnRzICkgeworICAgIHJldHVybiBTaXp6bGUoIGV4cHIsIG51bGwsIG51
bGwsIGVsZW1lbnRzICk7Cit9OworCitTaXp6bGUubWF0Y2hlc1NlbGVjdG9yID0gZnVuY3Rpb24o
IGVsZW0sIGV4cHIgKSB7CisgICAgLy8gU2V0IGRvY3VtZW50IHZhcnMgaWYgbmVlZGVkCisgICAg
aWYgKCAoIGVsZW0ub3duZXJEb2N1bWVudCB8fCBlbGVtICkgIT09IGRvY3VtZW50ICkgeworICAg
ICAgICBzZXREb2N1bWVudCggZWxlbSApOworICAgIH0KKworICAgIC8vIE1ha2Ugc3VyZSB0aGF0
IGF0dHJpYnV0ZSBzZWxlY3RvcnMgYXJlIHF1b3RlZAorICAgIGV4cHIgPSBleHByLnJlcGxhY2Uo
IHJhdHRyaWJ1dGVRdW90ZXMsICI9JyQxJ10iICk7CisKKyAgICBpZiAoIHN1cHBvcnQubWF0Y2hl
c1NlbGVjdG9yICYmIGRvY3VtZW50SXNIVE1MICYmCisgICAgICAgICFjb21waWxlckNhY2hlWyBl
eHByICsgIiAiIF0gJiYKKyAgICAgICAgKCAhcmJ1Z2d5TWF0Y2hlcyB8fCAhcmJ1Z2d5TWF0Y2hl
cy50ZXN0KCBleHByICkgKSAmJgorICAgICAgICAoICFyYnVnZ3lRU0EgICAgIHx8ICFyYnVnZ3lR
U0EudGVzdCggZXhwciApICkgKSB7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHZhciBy
ZXQgPSBtYXRjaGVzLmNhbGwoIGVsZW0sIGV4cHIgKTsKKworICAgICAgICAgICAgLy8gSUUgOSdz
IG1hdGNoZXNTZWxlY3RvciByZXR1cm5zIGZhbHNlIG9uIGRpc2Nvbm5lY3RlZCBub2RlcworICAg
ICAgICAgICAgaWYgKCByZXQgfHwgc3VwcG9ydC5kaXNjb25uZWN0ZWRNYXRjaCB8fAorICAgICAg
ICAgICAgICAgICAgICAvLyBBcyB3ZWxsLCBkaXNjb25uZWN0ZWQgbm9kZXMgYXJlIHNhaWQgdG8g
YmUgaW4gYSBkb2N1bWVudAorICAgICAgICAgICAgICAgICAgICAvLyBmcmFnbWVudCBpbiBJRSA5
CisgICAgICAgICAgICAgICAgICAgIGVsZW0uZG9jdW1lbnQgJiYgZWxlbS5kb2N1bWVudC5ub2Rl
VHlwZSAhPT0gMTEgKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfSBjYXRjaCAoZSkge30KKyAgICB9CisKKyAgICByZXR1cm4gU2l6emxlKCBl
eHByLCBkb2N1bWVudCwgbnVsbCwgWyBlbGVtIF0gKS5sZW5ndGggPiAwOworfTsKKworU2l6emxl
LmNvbnRhaW5zID0gZnVuY3Rpb24oIGNvbnRleHQsIGVsZW0gKSB7CisgICAgLy8gU2V0IGRvY3Vt
ZW50IHZhcnMgaWYgbmVlZGVkCisgICAgaWYgKCAoIGNvbnRleHQub3duZXJEb2N1bWVudCB8fCBj
b250ZXh0ICkgIT09IGRvY3VtZW50ICkgeworICAgICAgICBzZXREb2N1bWVudCggY29udGV4dCAp
OworICAgIH0KKyAgICByZXR1cm4gY29udGFpbnMoIGNvbnRleHQsIGVsZW0gKTsKK307CisKK1Np
enpsZS5hdHRyID0gZnVuY3Rpb24oIGVsZW0sIG5hbWUgKSB7CisgICAgLy8gU2V0IGRvY3VtZW50
IHZhcnMgaWYgbmVlZGVkCisgICAgaWYgKCAoIGVsZW0ub3duZXJEb2N1bWVudCB8fCBlbGVtICkg
IT09IGRvY3VtZW50ICkgeworICAgICAgICBzZXREb2N1bWVudCggZWxlbSApOworICAgIH0KKwor
ICAgIHZhciBmbiA9IEV4cHIuYXR0ckhhbmRsZVsgbmFtZS50b0xvd2VyQ2FzZSgpIF0sCisgICAg
ICAgIC8vIERvbid0IGdldCBmb29sZWQgYnkgT2JqZWN0LnByb3RvdHlwZSBwcm9wZXJ0aWVzIChq
UXVlcnkgIzEzODA3KQorICAgICAgICB2YWwgPSBmbiAmJiBoYXNPd24uY2FsbCggRXhwci5hdHRy
SGFuZGxlLCBuYW1lLnRvTG93ZXJDYXNlKCkgKSA/CisgICAgICAgICAgICBmbiggZWxlbSwgbmFt
ZSwgIWRvY3VtZW50SXNIVE1MICkgOgorICAgICAgICAgICAgdW5kZWZpbmVkOworCisgICAgcmV0
dXJuIHZhbCAhPT0gdW5kZWZpbmVkID8KKyAgICAgICAgdmFsIDoKKyAgICAgICAgc3VwcG9ydC5h
dHRyaWJ1dGVzIHx8ICFkb2N1bWVudElzSFRNTCA/CisgICAgICAgICAgICBlbGVtLmdldEF0dHJp
YnV0ZSggbmFtZSApIDoKKyAgICAgICAgICAgICh2YWwgPSBlbGVtLmdldEF0dHJpYnV0ZU5vZGUo
bmFtZSkpICYmIHZhbC5zcGVjaWZpZWQgPworICAgICAgICAgICAgICAgIHZhbC52YWx1ZSA6Cisg
ICAgICAgICAgICAgICAgbnVsbDsKK307CisKK1NpenpsZS5lc2NhcGUgPSBmdW5jdGlvbiggc2Vs
ICkgeworICAgIHJldHVybiAoc2VsICsgIiIpLnJlcGxhY2UoIHJjc3Nlc2NhcGUsIGZjc3Nlc2Nh
cGUgKTsKK307CisKK1NpenpsZS5lcnJvciA9IGZ1bmN0aW9uKCBtc2cgKSB7CisgICAgdGhyb3cg
bmV3IEVycm9yKCAiU3ludGF4IGVycm9yLCB1bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogIiArIG1z
ZyApOworfTsKKworLyoqCisgKiBEb2N1bWVudCBzb3J0aW5nIGFuZCByZW1vdmluZyBkdXBsaWNh
dGVzCisgKiBAcGFyYW0ge0FycmF5TGlrZX0gcmVzdWx0cworICovCitTaXp6bGUudW5pcXVlU29y
dCA9IGZ1bmN0aW9uKCByZXN1bHRzICkgeworICAgIHZhciBlbGVtLAorICAgICAgICBkdXBsaWNh
dGVzID0gW10sCisgICAgICAgIGogPSAwLAorICAgICAgICBpID0gMDsKKworICAgIC8vIFVubGVz
cyB3ZSAqa25vdyogd2UgY2FuIGRldGVjdCBkdXBsaWNhdGVzLCBhc3N1bWUgdGhlaXIgcHJlc2Vu
Y2UKKyAgICBoYXNEdXBsaWNhdGUgPSAhc3VwcG9ydC5kZXRlY3REdXBsaWNhdGVzOworICAgIHNv
cnRJbnB1dCA9ICFzdXBwb3J0LnNvcnRTdGFibGUgJiYgcmVzdWx0cy5zbGljZSggMCApOworICAg
IHJlc3VsdHMuc29ydCggc29ydE9yZGVyICk7CisKKyAgICBpZiAoIGhhc0R1cGxpY2F0ZSApIHsK
KyAgICAgICAgd2hpbGUgKCAoZWxlbSA9IHJlc3VsdHNbaSsrXSkgKSB7CisgICAgICAgICAgICBp
ZiAoIGVsZW0gPT09IHJlc3VsdHNbIGkgXSApIHsKKyAgICAgICAgICAgICAgICBqID0gZHVwbGlj
YXRlcy5wdXNoKCBpICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgd2hpbGUg
KCBqLS0gKSB7CisgICAgICAgICAgICByZXN1bHRzLnNwbGljZSggZHVwbGljYXRlc1sgaiBdLCAx
ICk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBDbGVhciBpbnB1dCBhZnRlciBzb3J0aW5n
IHRvIHJlbGVhc2Ugb2JqZWN0cworICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vanF1ZXJ5
L3NpenpsZS9wdWxsLzIyNQorICAgIHNvcnRJbnB1dCA9IG51bGw7CisKKyAgICByZXR1cm4gcmVz
dWx0czsKK307CisKKy8qKgorICogVXRpbGl0eSBmdW5jdGlvbiBmb3IgcmV0cmlldmluZyB0aGUg
dGV4dCB2YWx1ZSBvZiBhbiBhcnJheSBvZiBET00gbm9kZXMKKyAqIEBwYXJhbSB7QXJyYXl8RWxl
bWVudH0gZWxlbQorICovCitnZXRUZXh0ID0gU2l6emxlLmdldFRleHQgPSBmdW5jdGlvbiggZWxl
bSApIHsKKyAgICB2YXIgbm9kZSwKKyAgICAgICAgcmV0ID0gIiIsCisgICAgICAgIGkgPSAwLAor
ICAgICAgICBub2RlVHlwZSA9IGVsZW0ubm9kZVR5cGU7CisKKyAgICBpZiAoICFub2RlVHlwZSAp
IHsKKyAgICAgICAgLy8gSWYgbm8gbm9kZVR5cGUsIHRoaXMgaXMgZXhwZWN0ZWQgdG8gYmUgYW4g
YXJyYXkKKyAgICAgICAgd2hpbGUgKCAobm9kZSA9IGVsZW1baSsrXSkgKSB7CisgICAgICAgICAg
ICAvLyBEbyBub3QgdHJhdmVyc2UgY29tbWVudCBub2RlcworICAgICAgICAgICAgcmV0ICs9IGdl
dFRleHQoIG5vZGUgKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoIG5vZGVUeXBlID09PSAx
IHx8IG5vZGVUeXBlID09PSA5IHx8IG5vZGVUeXBlID09PSAxMSApIHsKKyAgICAgICAgLy8gVXNl
IHRleHRDb250ZW50IGZvciBlbGVtZW50cworICAgICAgICAvLyBpbm5lclRleHQgdXNhZ2UgcmVt
b3ZlZCBmb3IgY29uc2lzdGVuY3kgb2YgbmV3IGxpbmVzIChqUXVlcnkgIzExMTUzKQorICAgICAg
ICBpZiAoIHR5cGVvZiBlbGVtLnRleHRDb250ZW50ID09PSAic3RyaW5nIiApIHsKKyAgICAgICAg
ICAgIHJldHVybiBlbGVtLnRleHRDb250ZW50OworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgLy8gVHJhdmVyc2UgaXRzIGNoaWxkcmVuCisgICAgICAgICAgICBmb3IgKCBlbGVtID0gZWxl
bS5maXJzdENoaWxkOyBlbGVtOyBlbGVtID0gZWxlbS5uZXh0U2libGluZyApIHsKKyAgICAgICAg
ICAgICAgICByZXQgKz0gZ2V0VGV4dCggZWxlbSApOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfSBlbHNlIGlmICggbm9kZVR5cGUgPT09IDMgfHwgbm9kZVR5cGUgPT09IDQgKSB7Cisg
ICAgICAgIHJldHVybiBlbGVtLm5vZGVWYWx1ZTsKKyAgICB9CisgICAgLy8gRG8gbm90IGluY2x1
ZGUgY29tbWVudCBvciBwcm9jZXNzaW5nIGluc3RydWN0aW9uIG5vZGVzCisKKyAgICByZXR1cm4g
cmV0OworfTsKKworRXhwciA9IFNpenpsZS5zZWxlY3RvcnMgPSB7CisKKyAgICAvLyBDYW4gYmUg
YWRqdXN0ZWQgYnkgdGhlIHVzZXIKKyAgICBjYWNoZUxlbmd0aDogNTAsCisKKyAgICBjcmVhdGVQ
c2V1ZG86IG1hcmtGdW5jdGlvbiwKKworICAgIG1hdGNoOiBtYXRjaEV4cHIsCisKKyAgICBhdHRy
SGFuZGxlOiB7fSwKKworICAgIGZpbmQ6IHt9LAorCisgICAgcmVsYXRpdmU6IHsKKyAgICAgICAg
Ij4iOiB7IGRpcjogInBhcmVudE5vZGUiLCBmaXJzdDogdHJ1ZSB9LAorICAgICAgICAiICI6IHsg
ZGlyOiAicGFyZW50Tm9kZSIgfSwKKyAgICAgICAgIisiOiB7IGRpcjogInByZXZpb3VzU2libGlu
ZyIsIGZpcnN0OiB0cnVlIH0sCisgICAgICAgICJ+IjogeyBkaXI6ICJwcmV2aW91c1NpYmxpbmci
IH0KKyAgICB9LAorCisgICAgcHJlRmlsdGVyOiB7CisgICAgICAgICJBVFRSIjogZnVuY3Rpb24o
IG1hdGNoICkgeworICAgICAgICAgICAgbWF0Y2hbMV0gPSBtYXRjaFsxXS5yZXBsYWNlKCBydW5l
c2NhcGUsIGZ1bmVzY2FwZSApOworCisgICAgICAgICAgICAvLyBNb3ZlIHRoZSBnaXZlbiB2YWx1
ZSB0byBtYXRjaFszXSB3aGV0aGVyIHF1b3RlZCBvciB1bnF1b3RlZAorICAgICAgICAgICAgbWF0
Y2hbM10gPSAoIG1hdGNoWzNdIHx8IG1hdGNoWzRdIHx8IG1hdGNoWzVdIHx8ICIiICkucmVwbGFj
ZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKTsKKworICAgICAgICAgICAgaWYgKCBtYXRjaFsyXSA9
PT0gIn49IiApIHsKKyAgICAgICAgICAgICAgICBtYXRjaFszXSA9ICIgIiArIG1hdGNoWzNdICsg
IiAiOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gbWF0Y2guc2xpY2UoIDAs
IDQgKTsKKyAgICAgICAgfSwKKworICAgICAgICAiQ0hJTEQiOiBmdW5jdGlvbiggbWF0Y2ggKSB7
CisgICAgICAgICAgICAvKiBtYXRjaGVzIGZyb20gbWF0Y2hFeHByWyJDSElMRCJdCisgICAgICAg
ICAgICAgICAgMSB0eXBlIChvbmx5fG50aHwuLi4pCisgICAgICAgICAgICAgICAgMiB3aGF0IChj
aGlsZHxvZi10eXBlKQorICAgICAgICAgICAgICAgIDMgYXJndW1lbnQgKGV2ZW58b2RkfFxkKnxc
ZCpuKFsrLV1cZCspP3wuLi4pCisgICAgICAgICAgICAgICAgNCB4bi1jb21wb25lbnQgb2YgeG4r
eSBhcmd1bWVudCAoWystXT9cZCpufCkKKyAgICAgICAgICAgICAgICA1IHNpZ24gb2YgeG4tY29t
cG9uZW50CisgICAgICAgICAgICAgICAgNiB4IG9mIHhuLWNvbXBvbmVudAorICAgICAgICAgICAg
ICAgIDcgc2lnbiBvZiB5LWNvbXBvbmVudAorICAgICAgICAgICAgICAgIDggeSBvZiB5LWNvbXBv
bmVudAorICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIG1hdGNoWzFdID0gbWF0Y2hbMV0udG9M
b3dlckNhc2UoKTsKKworICAgICAgICAgICAgaWYgKCBtYXRjaFsxXS5zbGljZSggMCwgMyApID09
PSAibnRoIiApIHsKKyAgICAgICAgICAgICAgICAvLyBudGgtKiByZXF1aXJlcyBhcmd1bWVudAor
ICAgICAgICAgICAgICAgIGlmICggIW1hdGNoWzNdICkgeworICAgICAgICAgICAgICAgICAgICBT
aXp6bGUuZXJyb3IoIG1hdGNoWzBdICk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgLy8gbnVtZXJpYyB4IGFuZCB5IHBhcmFtZXRlcnMgZm9yIEV4cHIuZmlsdGVyLkNISUxE
CisgICAgICAgICAgICAgICAgLy8gcmVtZW1iZXIgdGhhdCBmYWxzZS90cnVlIGNhc3QgcmVzcGVj
dGl2ZWx5IHRvIDAvMQorICAgICAgICAgICAgICAgIG1hdGNoWzRdID0gKyggbWF0Y2hbNF0gPyBt
YXRjaFs1XSArIChtYXRjaFs2XSB8fCAxKSA6IDIgKiAoIG1hdGNoWzNdID09PSAiZXZlbiIgfHwg
bWF0Y2hbM10gPT09ICJvZGQiICkgKTsKKyAgICAgICAgICAgICAgICBtYXRjaFs1XSA9ICsoICgg
bWF0Y2hbN10gKyBtYXRjaFs4XSApIHx8IG1hdGNoWzNdID09PSAib2RkIiApOworCisgICAgICAg
ICAgICAvLyBvdGhlciB0eXBlcyBwcm9oaWJpdCBhcmd1bWVudHMKKyAgICAgICAgICAgIH0gZWxz
ZSBpZiAoIG1hdGNoWzNdICkgeworICAgICAgICAgICAgICAgIFNpenpsZS5lcnJvciggbWF0Y2hb
MF0gKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIG1hdGNoOworICAgICAg
ICB9LAorCisgICAgICAgICJQU0VVRE8iOiBmdW5jdGlvbiggbWF0Y2ggKSB7CisgICAgICAgICAg
ICB2YXIgZXhjZXNzLAorICAgICAgICAgICAgICAgIHVucXVvdGVkID0gIW1hdGNoWzZdICYmIG1h
dGNoWzJdOworCisgICAgICAgICAgICBpZiAoIG1hdGNoRXhwclsiQ0hJTEQiXS50ZXN0KCBtYXRj
aFswXSApICkgeworICAgICAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAvLyBBY2NlcHQgcXVvdGVkIGFyZ3VtZW50cyBhcy1pcworICAgICAgICAg
ICAgaWYgKCBtYXRjaFszXSApIHsKKyAgICAgICAgICAgICAgICBtYXRjaFsyXSA9IG1hdGNoWzRd
IHx8IG1hdGNoWzVdIHx8ICIiOworCisgICAgICAgICAgICAvLyBTdHJpcCBleGNlc3MgY2hhcmFj
dGVycyBmcm9tIHVucXVvdGVkIGFyZ3VtZW50cworICAgICAgICAgICAgfSBlbHNlIGlmICggdW5x
dW90ZWQgJiYgcnBzZXVkby50ZXN0KCB1bnF1b3RlZCApICYmCisgICAgICAgICAgICAgICAgLy8g
R2V0IGV4Y2VzcyBmcm9tIHRva2VuaXplIChyZWN1cnNpdmVseSkKKyAgICAgICAgICAgICAgICAo
ZXhjZXNzID0gdG9rZW5pemUoIHVucXVvdGVkLCB0cnVlICkpICYmCisgICAgICAgICAgICAgICAg
Ly8gYWR2YW5jZSB0byB0aGUgbmV4dCBjbG9zaW5nIHBhcmVudGhlc2lzCisgICAgICAgICAgICAg
ICAgKGV4Y2VzcyA9IHVucXVvdGVkLmluZGV4T2YoICIpIiwgdW5xdW90ZWQubGVuZ3RoIC0gZXhj
ZXNzICkgLSB1bnF1b3RlZC5sZW5ndGgpICkgeworCisgICAgICAgICAgICAgICAgLy8gZXhjZXNz
IGlzIGEgbmVnYXRpdmUgaW5kZXgKKyAgICAgICAgICAgICAgICBtYXRjaFswXSA9IG1hdGNoWzBd
LnNsaWNlKCAwLCBleGNlc3MgKTsKKyAgICAgICAgICAgICAgICBtYXRjaFsyXSA9IHVucXVvdGVk
LnNsaWNlKCAwLCBleGNlc3MgKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gUmV0
dXJuIG9ubHkgY2FwdHVyZXMgbmVlZGVkIGJ5IHRoZSBwc2V1ZG8gZmlsdGVyIG1ldGhvZCAodHlw
ZSBhbmQgYXJndW1lbnQpCisgICAgICAgICAgICByZXR1cm4gbWF0Y2guc2xpY2UoIDAsIDMgKTsK
KyAgICAgICAgfQorICAgIH0sCisKKyAgICBmaWx0ZXI6IHsKKworICAgICAgICAiVEFHIjogZnVu
Y3Rpb24oIG5vZGVOYW1lU2VsZWN0b3IgKSB7CisgICAgICAgICAgICB2YXIgbm9kZU5hbWUgPSBu
b2RlTmFtZVNlbGVjdG9yLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICkudG9Mb3dlckNh
c2UoKTsKKyAgICAgICAgICAgIHJldHVybiBub2RlTmFtZVNlbGVjdG9yID09PSAiKiIgPworICAg
ICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyByZXR1cm4gdHJ1ZTsgfSA6CisgICAgICAgICAgICAg
ICAgZnVuY3Rpb24oIGVsZW0gKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbGVtLm5v
ZGVOYW1lICYmIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gbm9kZU5hbWU7CisgICAg
ICAgICAgICAgICAgfTsKKyAgICAgICAgfSwKKworICAgICAgICAiQ0xBU1MiOiBmdW5jdGlvbigg
Y2xhc3NOYW1lICkgeworICAgICAgICAgICAgdmFyIHBhdHRlcm4gPSBjbGFzc0NhY2hlWyBjbGFz
c05hbWUgKyAiICIgXTsKKworICAgICAgICAgICAgcmV0dXJuIHBhdHRlcm4gfHwKKyAgICAgICAg
ICAgICAgICAocGF0dGVybiA9IG5ldyBSZWdFeHAoICIoXnwiICsgd2hpdGVzcGFjZSArICIpIiAr
IGNsYXNzTmFtZSArICIoIiArIHdoaXRlc3BhY2UgKyAifCQpIiApKSAmJgorICAgICAgICAgICAg
ICAgIGNsYXNzQ2FjaGUoIGNsYXNzTmFtZSwgZnVuY3Rpb24oIGVsZW0gKSB7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBwYXR0ZXJuLnRlc3QoIHR5cGVvZiBlbGVtLmNsYXNzTmFtZSA9PT0g
InN0cmluZyIgJiYgZWxlbS5jbGFzc05hbWUgfHwgdHlwZW9mIGVsZW0uZ2V0QXR0cmlidXRlICE9
PSAidW5kZWZpbmVkIiAmJiBlbGVtLmdldEF0dHJpYnV0ZSgiY2xhc3MiKSB8fCAiIiApOworICAg
ICAgICAgICAgICAgIH0pOworICAgICAgICB9LAorCisgICAgICAgICJBVFRSIjogZnVuY3Rpb24o
IG5hbWUsIG9wZXJhdG9yLCBjaGVjayApIHsKKyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbigg
ZWxlbSApIHsKKyAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gU2l6emxlLmF0dHIoIGVsZW0s
IG5hbWUgKTsKKworICAgICAgICAgICAgICAgIGlmICggcmVzdWx0ID09IG51bGwgKSB7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBvcGVyYXRvciA9PT0gIiE9IjsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgaWYgKCAhb3BlcmF0b3IgKSB7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHJl
c3VsdCArPSAiIjsKKworICAgICAgICAgICAgICAgIHJldHVybiBvcGVyYXRvciA9PT0gIj0iID8g
cmVzdWx0ID09PSBjaGVjayA6CisgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yID09PSAiIT0i
ID8gcmVzdWx0ICE9PSBjaGVjayA6CisgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yID09PSAi
Xj0iID8gY2hlY2sgJiYgcmVzdWx0LmluZGV4T2YoIGNoZWNrICkgPT09IDAgOgorICAgICAgICAg
ICAgICAgICAgICBvcGVyYXRvciA9PT0gIio9IiA/IGNoZWNrICYmIHJlc3VsdC5pbmRleE9mKCBj
aGVjayApID4gLTEgOgorICAgICAgICAgICAgICAgICAgICBvcGVyYXRvciA9PT0gIiQ9IiA/IGNo
ZWNrICYmIHJlc3VsdC5zbGljZSggLWNoZWNrLmxlbmd0aCApID09PSBjaGVjayA6CisgICAgICAg
ICAgICAgICAgICAgIG9wZXJhdG9yID09PSAifj0iID8gKCAiICIgKyByZXN1bHQucmVwbGFjZSgg
cndoaXRlc3BhY2UsICIgIiApICsgIiAiICkuaW5kZXhPZiggY2hlY2sgKSA+IC0xIDoKKyAgICAg
ICAgICAgICAgICAgICAgb3BlcmF0b3IgPT09ICJ8PSIgPyByZXN1bHQgPT09IGNoZWNrIHx8IHJl
c3VsdC5zbGljZSggMCwgY2hlY2subGVuZ3RoICsgMSApID09PSBjaGVjayArICItIiA6CisgICAg
ICAgICAgICAgICAgICAgIGZhbHNlOworICAgICAgICAgICAgfTsKKyAgICAgICAgfSwKKworICAg
ICAgICAiQ0hJTEQiOiBmdW5jdGlvbiggdHlwZSwgd2hhdCwgYXJndW1lbnQsIGZpcnN0LCBsYXN0
ICkgeworICAgICAgICAgICAgdmFyIHNpbXBsZSA9IHR5cGUuc2xpY2UoIDAsIDMgKSAhPT0gIm50
aCIsCisgICAgICAgICAgICAgICAgZm9yd2FyZCA9IHR5cGUuc2xpY2UoIC00ICkgIT09ICJsYXN0
IiwKKyAgICAgICAgICAgICAgICBvZlR5cGUgPSB3aGF0ID09PSAib2YtdHlwZSI7CisKKyAgICAg
ICAgICAgIHJldHVybiBmaXJzdCA9PT0gMSAmJiBsYXN0ID09PSAwID8KKworICAgICAgICAgICAg
ICAgIC8vIFNob3J0Y3V0IGZvciA6bnRoLSoobikKKyAgICAgICAgICAgICAgICBmdW5jdGlvbigg
ZWxlbSApIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEhZWxlbS5wYXJlbnROb2RlOwor
ICAgICAgICAgICAgICAgIH0gOgorCisgICAgICAgICAgICAgICAgZnVuY3Rpb24oIGVsZW0sIGNv
bnRleHQsIHhtbCApIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGNhY2hlLCB1bmlxdWVDYWNo
ZSwgb3V0ZXJDYWNoZSwgbm9kZSwgbm9kZUluZGV4LCBzdGFydCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGRpciA9IHNpbXBsZSAhPT0gZm9yd2FyZCA/ICJuZXh0U2libGluZyIgOiAicHJldmlv
dXNTaWJsaW5nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudCA9IGVsZW0ucGFyZW50
Tm9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSBvZlR5cGUgJiYgZWxlbS5ub2Rl
TmFtZS50b0xvd2VyQ2FzZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgdXNlQ2FjaGUgPSAh
eG1sICYmICFvZlR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICBkaWZmID0gZmFsc2U7CisK
KyAgICAgICAgICAgICAgICAgICAgaWYgKCBwYXJlbnQgKSB7CisKKyAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIDooZmlyc3R8bGFzdHxvbmx5KS0oY2hpbGR8b2YtdHlwZSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICggc2ltcGxlICkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHdoaWxlICggZGlyICkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlID0g
ZWxlbTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCAobm9kZSA9IG5v
ZGVbIGRpciBdKSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgg
b2ZUeXBlID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLm5v
ZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IG5hbWUgOgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG5vZGUubm9kZVR5cGUgPT09IDEgKSB7CisKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmV2ZXJzZSBkaXJlY3Rpb24gZm9y
IDpvbmx5LSogKGlmIHdlIGhhdmVuJ3QgeWV0IGRvbmUgc28pCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YXJ0ID0gZGlyID0gdHlwZSA9PT0gIm9ubHkiICYmICFzdGFydCAmJiAi
bmV4dFNpYmxpbmciOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQgPSBbIGZvcndhcmQgPyBwYXJlbnQuZmly
c3RDaGlsZCA6IHBhcmVudC5sYXN0Q2hpbGQgXTsKKworICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gbm9uLXhtbCA6bnRoLWNoaWxkKC4uLikgc3RvcmVzIGNhY2hlIGRhdGEgb24gYHBhcmVudGAK
KyAgICAgICAgICAgICAgICAgICAgICAgIGlmICggZm9yd2FyZCAmJiB1c2VDYWNoZSApIHsKKwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNlZWsgYGVsZW1gIGZyb20gYSBwcmV2aW91
c2x5LWNhY2hlZCBpbmRleAorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLi4uaW4g
YSBnemlwLWZyaWVuZGx5IHdheQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUgPSBw
YXJlbnQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ZXJDYWNoZSA9IG5vZGVbIGV4
cGFuZG8gXSB8fCAobm9kZVsgZXhwYW5kbyBdID0ge30pOworCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gU3VwcG9ydDogSUUgPDkgb25seQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIERlZmVuZCBhZ2FpbnN0IGNsb25lZCBhdHRyb3BlcnRpZXMgKGpRdWVyeSBnaC0xNzA5
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXF1ZUNhY2hlID0gb3V0ZXJDYWNoZVsg
bm9kZS51bmlxdWVJRCBdIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvdXRl
ckNhY2hlWyBub2RlLnVuaXF1ZUlEIF0gPSB7fSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjYWNoZSA9IHVuaXF1ZUNhY2hlWyB0eXBlIF0gfHwgW107CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbm9kZUluZGV4ID0gY2FjaGVbIDAgXSA9PT0gZGlycnVucyAmJiBjYWNoZVsg
MSBdOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZmYgPSBub2RlSW5kZXggJiYgY2Fj
aGVbIDIgXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlID0gbm9kZUluZGV4ICYm
IHBhcmVudC5jaGlsZE5vZGVzWyBub2RlSW5kZXggXTsKKworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHdoaWxlICggKG5vZGUgPSArK25vZGVJbmRleCAmJiBub2RlICYmIG5vZGVbIGRpciBd
IHx8CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRmFsbGJhY2sgdG8gc2Vl
a2luZyBgZWxlbWAgZnJvbSB0aGUgc3RhcnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKGRpZmYgPSBub2RlSW5kZXggPSAwKSB8fCBzdGFydC5wb3AoKSkgKSB7CisKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2hlbiBmb3VuZCwgY2FjaGUgaW5kZXhlcyBvbiBg
cGFyZW50YCBhbmQgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBu
b2RlLm5vZGVUeXBlID09PSAxICYmICsrZGlmZiAmJiBub2RlID09PSBlbGVtICkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pcXVlQ2FjaGVbIHR5cGUgXSA9IFsgZGly
cnVucywgbm9kZUluZGV4LCBkaWZmIF07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBVc2UgcHJldmlvdXNseS1jYWNoZWQgZWxl
bWVudCBpbmRleCBpZiBhdmFpbGFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
IHVzZUNhY2hlICkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAuLi5pbiBh
IGd6aXAtZnJpZW5kbHkgd2F5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUg
PSBlbGVtOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRlckNhY2hlID0gbm9k
ZVsgZXhwYW5kbyBdIHx8IChub2RlWyBleHBhbmRvIF0gPSB7fSk7CisKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gU3VwcG9ydDogSUUgPDkgb25seQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBEZWZlbmQgYWdhaW5zdCBjbG9uZWQgYXR0cm9wZXJ0aWVzIChq
UXVlcnkgZ2gtMTcwOSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pcXVlQ2Fj
aGUgPSBvdXRlckNhY2hlWyBub2RlLnVuaXF1ZUlEIF0gfHwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChvdXRlckNhY2hlWyBub2RlLnVuaXF1ZUlEIF0gPSB7fSk7CisKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGUgPSB1bmlxdWVDYWNoZVsgdHlwZSBd
IHx8IFtdOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlSW5kZXggPSBjYWNo
ZVsgMCBdID09PSBkaXJydW5zICYmIGNhY2hlWyAxIF07CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRpZmYgPSBub2RlSW5kZXg7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8geG1sIDpudGgtY2hpbGQoLi4uKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9yIDpudGgtbGFzdC1jaGlsZCguLi4pIG9y
IDpudGgoLWxhc3QpPy1vZi10eXBlKC4uLikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoIGRpZmYgPT09IGZhbHNlICkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBVc2UgdGhlIHNhbWUgbG9vcCBhcyBhYm92ZSB0byBzZWVrIGBlbGVtYCBmcm9tIHRoZSBzdGFy
dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoIChub2RlID0gKytub2Rl
SW5kZXggJiYgbm9kZSAmJiBub2RlWyBkaXIgXSB8fAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKGRpZmYgPSBub2RlSW5kZXggPSAwKSB8fCBzdGFydC5wb3AoKSkgKSB7CisK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggKCBvZlR5cGUgPworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUubm9kZU5hbWUudG9Mb3dl
ckNhc2UoKSA9PT0gbmFtZSA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbm9kZS5ub2RlVHlwZSA9PT0gMSApICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKytkaWZmICkgeworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gQ2FjaGUgdGhlIGluZGV4IG9mIGVhY2ggZW5jb3VudGVyZWQgZWxlbWVudAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggdXNlQ2FjaGUgKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dGVyQ2FjaGUg
PSBub2RlWyBleHBhbmRvIF0gfHwgKG5vZGVbIGV4cGFuZG8gXSA9IHt9KTsKKworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTdXBwb3J0OiBJRSA8OSBvbmx5
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERlZmVuZCBh
Z2FpbnN0IGNsb25lZCBhdHRyb3BlcnRpZXMgKGpRdWVyeSBnaC0xNzA5KQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlxdWVDYWNoZSA9IG91dGVyQ2FjaGVb
IG5vZGUudW5pcXVlSUQgXSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKG91dGVyQ2FjaGVbIG5vZGUudW5pcXVlSUQgXSA9IHt9KTsKKworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlxdWVDYWNoZVsgdHlwZSBd
ID0gWyBkaXJydW5zLCBkaWZmIF07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBu
b2RlID09PSBlbGVtICkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIEluY29ycG9yYXRl
IHRoZSBvZmZzZXQsIHRoZW4gY2hlY2sgYWdhaW5zdCBjeWNsZSBzaXplCisgICAgICAgICAgICAg
ICAgICAgICAgICBkaWZmIC09IGxhc3Q7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZGlmZiA9PT0gZmlyc3QgfHwgKCBkaWZmICUgZmlyc3QgPT09IDAgJiYgZGlmZiAvIGZpcnN0ID49
IDAgKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH07CisgICAgICAg
IH0sCisKKyAgICAgICAgIlBTRVVETyI6IGZ1bmN0aW9uKCBwc2V1ZG8sIGFyZ3VtZW50ICkgewor
ICAgICAgICAgICAgLy8gcHNldWRvLWNsYXNzIG5hbWVzIGFyZSBjYXNlLWluc2Vuc2l0aXZlCisg
ICAgICAgICAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9zZWxlY3RvcnMvI3BzZXVkby1jbGFz
c2VzCisgICAgICAgICAgICAvLyBQcmlvcml0aXplIGJ5IGNhc2Ugc2Vuc2l0aXZpdHkgaW4gY2Fz
ZSBjdXN0b20gcHNldWRvcyBhcmUgYWRkZWQgd2l0aCB1cHBlcmNhc2UgbGV0dGVycworICAgICAg
ICAgICAgLy8gUmVtZW1iZXIgdGhhdCBzZXRGaWx0ZXJzIGluaGVyaXRzIGZyb20gcHNldWRvcwor
ICAgICAgICAgICAgdmFyIGFyZ3MsCisgICAgICAgICAgICAgICAgZm4gPSBFeHByLnBzZXVkb3Nb
IHBzZXVkbyBdIHx8IEV4cHIuc2V0RmlsdGVyc1sgcHNldWRvLnRvTG93ZXJDYXNlKCkgXSB8fAor
ICAgICAgICAgICAgICAgICAgICBTaXp6bGUuZXJyb3IoICJ1bnN1cHBvcnRlZCBwc2V1ZG86ICIg
KyBwc2V1ZG8gKTsKKworICAgICAgICAgICAgLy8gVGhlIHVzZXIgbWF5IHVzZSBjcmVhdGVQc2V1
ZG8gdG8gaW5kaWNhdGUgdGhhdAorICAgICAgICAgICAgLy8gYXJndW1lbnRzIGFyZSBuZWVkZWQg
dG8gY3JlYXRlIHRoZSBmaWx0ZXIgZnVuY3Rpb24KKyAgICAgICAgICAgIC8vIGp1c3QgYXMgU2l6
emxlIGRvZXMKKyAgICAgICAgICAgIGlmICggZm5bIGV4cGFuZG8gXSApIHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZm4oIGFyZ3VtZW50ICk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IC8vIEJ1dCBtYWludGFpbiBzdXBwb3J0IGZvciBvbGQgc2lnbmF0dXJlcworICAgICAgICAgICAg
aWYgKCBmbi5sZW5ndGggPiAxICkgeworICAgICAgICAgICAgICAgIGFyZ3MgPSBbIHBzZXVkbywg
cHNldWRvLCAiIiwgYXJndW1lbnQgXTsKKyAgICAgICAgICAgICAgICByZXR1cm4gRXhwci5zZXRG
aWx0ZXJzLmhhc093blByb3BlcnR5KCBwc2V1ZG8udG9Mb3dlckNhc2UoKSApID8KKyAgICAgICAg
ICAgICAgICAgICAgbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCBzZWVkLCBtYXRjaGVzICkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgdmFyIGlkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtYXRjaGVkID0gZm4oIHNlZWQsIGFyZ3VtZW50ICksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaSA9IG1hdGNoZWQubGVuZ3RoOworICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUg
KCBpLS0gKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWR4ID0gaW5kZXhPZiggc2Vl
ZCwgbWF0Y2hlZFtpXSApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlZWRbIGlkeCBd
ID0gISggbWF0Y2hlc1sgaWR4IF0gPSBtYXRjaGVkW2ldICk7CisgICAgICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0pIDoKKyAgICAgICAgICAgICAgICAgICAgZnVu
Y3Rpb24oIGVsZW0gKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZm4oIGVsZW0s
IDAsIGFyZ3MgKTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgcmV0dXJuIGZuOworICAgICAgICB9CisgICAgfSwKKworICAgIHBzZXVkb3M6IHsK
KyAgICAgICAgLy8gUG90ZW50aWFsbHkgY29tcGxleCBwc2V1ZG9zCisgICAgICAgICJub3QiOiBt
YXJrRnVuY3Rpb24oZnVuY3Rpb24oIHNlbGVjdG9yICkgeworICAgICAgICAgICAgLy8gVHJpbSB0
aGUgc2VsZWN0b3IgcGFzc2VkIHRvIGNvbXBpbGUKKyAgICAgICAgICAgIC8vIHRvIGF2b2lkIHRy
ZWF0aW5nIGxlYWRpbmcgYW5kIHRyYWlsaW5nCisgICAgICAgICAgICAvLyBzcGFjZXMgYXMgY29t
YmluYXRvcnMKKyAgICAgICAgICAgIHZhciBpbnB1dCA9IFtdLAorICAgICAgICAgICAgICAgIHJl
c3VsdHMgPSBbXSwKKyAgICAgICAgICAgICAgICBtYXRjaGVyID0gY29tcGlsZSggc2VsZWN0b3Iu
cmVwbGFjZSggcnRyaW0sICIkMSIgKSApOworCisgICAgICAgICAgICByZXR1cm4gbWF0Y2hlclsg
ZXhwYW5kbyBdID8KKyAgICAgICAgICAgICAgICBtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIHNlZWQs
IG1hdGNoZXMsIGNvbnRleHQsIHhtbCApIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGVsZW0s
CisgICAgICAgICAgICAgICAgICAgICAgICB1bm1hdGNoZWQgPSBtYXRjaGVyKCBzZWVkLCBudWxs
LCB4bWwsIFtdICksCisgICAgICAgICAgICAgICAgICAgICAgICBpID0gc2VlZC5sZW5ndGg7CisK
KyAgICAgICAgICAgICAgICAgICAgLy8gTWF0Y2ggZWxlbWVudHMgdW5tYXRjaGVkIGJ5IGBtYXRj
aGVyYAorICAgICAgICAgICAgICAgICAgICB3aGlsZSAoIGktLSApIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICggKGVsZW0gPSB1bm1hdGNoZWRbaV0pICkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNlZWRbaV0gPSAhKG1hdGNoZXNbaV0gPSBlbGVtKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0p
IDoKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiggZWxlbSwgY29udGV4dCwgeG1sICkgeworICAg
ICAgICAgICAgICAgICAgICBpbnB1dFswXSA9IGVsZW07CisgICAgICAgICAgICAgICAgICAgIG1h
dGNoZXIoIGlucHV0LCBudWxsLCB4bWwsIHJlc3VsdHMgKTsKKyAgICAgICAgICAgICAgICAgICAg
Ly8gRG9uJ3Qga2VlcCB0aGUgZWxlbWVudCAoaXNzdWUgIzI5OSkKKyAgICAgICAgICAgICAgICAg
ICAgaW5wdXRbMF0gPSBudWxsOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gIXJlc3VsdHMu
cG9wKCk7CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgfSksCisKKyAgICAgICAgImhhcyI6
IG1hcmtGdW5jdGlvbihmdW5jdGlvbiggc2VsZWN0b3IgKSB7CisgICAgICAgICAgICByZXR1cm4g
ZnVuY3Rpb24oIGVsZW0gKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFNpenpsZSggc2VsZWN0
b3IsIGVsZW0gKS5sZW5ndGggPiAwOworICAgICAgICAgICAgfTsKKyAgICAgICAgfSksCisKKyAg
ICAgICAgImNvbnRhaW5zIjogbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCB0ZXh0ICkgeworICAgICAg
ICAgICAgdGV4dCA9IHRleHQucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKTsKKyAgICAg
ICAgICAgIHJldHVybiBmdW5jdGlvbiggZWxlbSApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
KCBlbGVtLnRleHRDb250ZW50IHx8IGVsZW0uaW5uZXJUZXh0IHx8IGdldFRleHQoIGVsZW0gKSAp
LmluZGV4T2YoIHRleHQgKSA+IC0xOworICAgICAgICAgICAgfTsKKyAgICAgICAgfSksCisKKyAg
ICAgICAgLy8gIldoZXRoZXIgYW4gZWxlbWVudCBpcyByZXByZXNlbnRlZCBieSBhIDpsYW5nKCkg
c2VsZWN0b3IKKyAgICAgICAgLy8gaXMgYmFzZWQgc29sZWx5IG9uIHRoZSBlbGVtZW50J3MgbGFu
Z3VhZ2UgdmFsdWUKKyAgICAgICAgLy8gYmVpbmcgZXF1YWwgdG8gdGhlIGlkZW50aWZpZXIgQywK
KyAgICAgICAgLy8gb3IgYmVnaW5uaW5nIHdpdGggdGhlIGlkZW50aWZpZXIgQyBpbW1lZGlhdGVs
eSBmb2xsb3dlZCBieSAiLSIuCisgICAgICAgIC8vIFRoZSBtYXRjaGluZyBvZiBDIGFnYWluc3Qg
dGhlIGVsZW1lbnQncyBsYW5ndWFnZSB2YWx1ZSBpcyBwZXJmb3JtZWQgY2FzZS1pbnNlbnNpdGl2
ZWx5LgorICAgICAgICAvLyBUaGUgaWRlbnRpZmllciBDIGRvZXMgbm90IGhhdmUgdG8gYmUgYSB2
YWxpZCBsYW5ndWFnZSBuYW1lLiIKKyAgICAgICAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIvc2Vs
ZWN0b3JzLyNsYW5nLXBzZXVkbworICAgICAgICAibGFuZyI6IG1hcmtGdW5jdGlvbiggZnVuY3Rp
b24oIGxhbmcgKSB7CisgICAgICAgICAgICAvLyBsYW5nIHZhbHVlIG11c3QgYmUgYSB2YWxpZCBp
ZGVudGlmaWVyCisgICAgICAgICAgICBpZiAoICFyaWRlbnRpZmllci50ZXN0KGxhbmcgfHwgIiIp
ICkgeworICAgICAgICAgICAgICAgIFNpenpsZS5lcnJvciggInVuc3VwcG9ydGVkIGxhbmc6ICIg
KyBsYW5nICk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBsYW5nID0gbGFuZy5yZXBsYWNl
KCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApLnRvTG93ZXJDYXNlKCk7CisgICAgICAgICAgICByZXR1
cm4gZnVuY3Rpb24oIGVsZW0gKSB7CisgICAgICAgICAgICAgICAgdmFyIGVsZW1MYW5nOworICAg
ICAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCAoZWxlbUxhbmcgPSBk
b2N1bWVudElzSFRNTCA/CisgICAgICAgICAgICAgICAgICAgICAgICBlbGVtLmxhbmcgOgorICAg
ICAgICAgICAgICAgICAgICAgICAgZWxlbS5nZXRBdHRyaWJ1dGUoInhtbDpsYW5nIikgfHwgZWxl
bS5nZXRBdHRyaWJ1dGUoImxhbmciKSkgKSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGVs
ZW1MYW5nID0gZWxlbUxhbmcudG9Mb3dlckNhc2UoKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBlbGVtTGFuZyA9PT0gbGFuZyB8fCBlbGVtTGFuZy5pbmRleE9mKCBsYW5nICsgIi0i
ICkgPT09IDA7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IHdoaWxl
ICggKGVsZW0gPSBlbGVtLnBhcmVudE5vZGUpICYmIGVsZW0ubm9kZVR5cGUgPT09IDEgKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9OworICAgICAgICB9KSwK
KworICAgICAgICAvLyBNaXNjZWxsYW5lb3VzCisgICAgICAgICJ0YXJnZXQiOiBmdW5jdGlvbigg
ZWxlbSApIHsKKyAgICAgICAgICAgIHZhciBoYXNoID0gd2luZG93LmxvY2F0aW9uICYmIHdpbmRv
dy5sb2NhdGlvbi5oYXNoOworICAgICAgICAgICAgcmV0dXJuIGhhc2ggJiYgaGFzaC5zbGljZSgg
MSApID09PSBlbGVtLmlkOworICAgICAgICB9LAorCisgICAgICAgICJyb290IjogZnVuY3Rpb24o
IGVsZW0gKSB7CisgICAgICAgICAgICByZXR1cm4gZWxlbSA9PT0gZG9jRWxlbTsKKyAgICAgICAg
fSwKKworICAgICAgICAiZm9jdXMiOiBmdW5jdGlvbiggZWxlbSApIHsKKyAgICAgICAgICAgIHJl
dHVybiBlbGVtID09PSBkb2N1bWVudC5hY3RpdmVFbGVtZW50ICYmICghZG9jdW1lbnQuaGFzRm9j
dXMgfHwgZG9jdW1lbnQuaGFzRm9jdXMoKSkgJiYgISEoZWxlbS50eXBlIHx8IGVsZW0uaHJlZiB8
fCB+ZWxlbS50YWJJbmRleCk7CisgICAgICAgIH0sCisKKyAgICAgICAgLy8gQm9vbGVhbiBwcm9w
ZXJ0aWVzCisgICAgICAgICJlbmFibGVkIjogY3JlYXRlRGlzYWJsZWRQc2V1ZG8oIGZhbHNlICks
CisgICAgICAgICJkaXNhYmxlZCI6IGNyZWF0ZURpc2FibGVkUHNldWRvKCB0cnVlICksCisKKyAg
ICAgICAgImNoZWNrZWQiOiBmdW5jdGlvbiggZWxlbSApIHsKKyAgICAgICAgICAgIC8vIEluIENT
UzMsIDpjaGVja2VkIHNob3VsZCByZXR1cm4gYm90aCBjaGVja2VkIGFuZCBzZWxlY3RlZCBlbGVt
ZW50cworICAgICAgICAgICAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIvMjAxMS9SRUMtY3NzMy1z
ZWxlY3RvcnMtMjAxMTA5MjkvI2NoZWNrZWQKKyAgICAgICAgICAgIHZhciBub2RlTmFtZSA9IGVs
ZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTsKKyAgICAgICAgICAgIHJldHVybiAobm9kZU5hbWUg
PT09ICJpbnB1dCIgJiYgISFlbGVtLmNoZWNrZWQpIHx8IChub2RlTmFtZSA9PT0gIm9wdGlvbiIg
JiYgISFlbGVtLnNlbGVjdGVkKTsKKyAgICAgICAgfSwKKworICAgICAgICAic2VsZWN0ZWQiOiBm
dW5jdGlvbiggZWxlbSApIHsKKyAgICAgICAgICAgIC8vIEFjY2Vzc2luZyB0aGlzIHByb3BlcnR5
IG1ha2VzIHNlbGVjdGVkLWJ5LWRlZmF1bHQKKyAgICAgICAgICAgIC8vIG9wdGlvbnMgaW4gU2Fm
YXJpIHdvcmsgcHJvcGVybHkKKyAgICAgICAgICAgIGlmICggZWxlbS5wYXJlbnROb2RlICkgewor
ICAgICAgICAgICAgICAgIGVsZW0ucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4OworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICByZXR1cm4gZWxlbS5zZWxlY3RlZCA9PT0gdHJ1ZTsKKyAgICAg
ICAgfSwKKworICAgICAgICAvLyBDb250ZW50cworICAgICAgICAiZW1wdHkiOiBmdW5jdGlvbigg
ZWxlbSApIHsKKyAgICAgICAgICAgIC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL3NlbGVjdG9ycy8j
ZW1wdHktcHNldWRvCisgICAgICAgICAgICAvLyA6ZW1wdHkgaXMgbmVnYXRlZCBieSBlbGVtZW50
ICgxKSBvciBjb250ZW50IG5vZGVzICh0ZXh0OiAzOyBjZGF0YTogNDsgZW50aXR5IHJlZjogNSks
CisgICAgICAgICAgICAvLyAgIGJ1dCBub3QgYnkgb3RoZXJzIChjb21tZW50OiA4OyBwcm9jZXNz
aW5nIGluc3RydWN0aW9uOiA3OyBldGMuKQorICAgICAgICAgICAgLy8gbm9kZVR5cGUgPCA2IHdv
cmtzIGJlY2F1c2UgYXR0cmlidXRlcyAoMikgZG8gbm90IGFwcGVhciBhcyBjaGlsZHJlbgorICAg
ICAgICAgICAgZm9yICggZWxlbSA9IGVsZW0uZmlyc3RDaGlsZDsgZWxlbTsgZWxlbSA9IGVsZW0u
bmV4dFNpYmxpbmcgKSB7CisgICAgICAgICAgICAgICAgaWYgKCBlbGVtLm5vZGVUeXBlIDwgNiAp
IHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9LAorCisg
ICAgICAgICJwYXJlbnQiOiBmdW5jdGlvbiggZWxlbSApIHsKKyAgICAgICAgICAgIHJldHVybiAh
RXhwci5wc2V1ZG9zWyJlbXB0eSJdKCBlbGVtICk7CisgICAgICAgIH0sCisKKyAgICAgICAgLy8g
RWxlbWVudC9pbnB1dCB0eXBlcworICAgICAgICAiaGVhZGVyIjogZnVuY3Rpb24oIGVsZW0gKSB7
CisgICAgICAgICAgICByZXR1cm4gcmhlYWRlci50ZXN0KCBlbGVtLm5vZGVOYW1lICk7CisgICAg
ICAgIH0sCisKKyAgICAgICAgImlucHV0IjogZnVuY3Rpb24oIGVsZW0gKSB7CisgICAgICAgICAg
ICByZXR1cm4gcmlucHV0cy50ZXN0KCBlbGVtLm5vZGVOYW1lICk7CisgICAgICAgIH0sCisKKyAg
ICAgICAgImJ1dHRvbiI6IGZ1bmN0aW9uKCBlbGVtICkgeworICAgICAgICAgICAgdmFyIG5hbWUg
PSBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7CisgICAgICAgICAgICByZXR1cm4gbmFtZSA9
PT0gImlucHV0IiAmJiBlbGVtLnR5cGUgPT09ICJidXR0b24iIHx8IG5hbWUgPT09ICJidXR0b24i
OworICAgICAgICB9LAorCisgICAgICAgICJ0ZXh0IjogZnVuY3Rpb24oIGVsZW0gKSB7CisgICAg
ICAgICAgICB2YXIgYXR0cjsKKyAgICAgICAgICAgIHJldHVybiBlbGVtLm5vZGVOYW1lLnRvTG93
ZXJDYXNlKCkgPT09ICJpbnB1dCIgJiYKKyAgICAgICAgICAgICAgICBlbGVtLnR5cGUgPT09ICJ0
ZXh0IiAmJgorCisgICAgICAgICAgICAgICAgLy8gU3VwcG9ydDogSUU8OAorICAgICAgICAgICAg
ICAgIC8vIE5ldyBIVE1MNSBhdHRyaWJ1dGUgdmFsdWVzIChlLmcuLCAic2VhcmNoIikgYXBwZWFy
IHdpdGggZWxlbS50eXBlID09PSAidGV4dCIKKyAgICAgICAgICAgICAgICAoIChhdHRyID0gZWxl
bS5nZXRBdHRyaWJ1dGUoInR5cGUiKSkgPT0gbnVsbCB8fCBhdHRyLnRvTG93ZXJDYXNlKCkgPT09
ICJ0ZXh0IiApOworICAgICAgICB9LAorCisgICAgICAgIC8vIFBvc2l0aW9uLWluLWNvbGxlY3Rp
b24KKyAgICAgICAgImZpcnN0IjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgIHJldHVybiBbIDAgXTsKKyAgICAgICAgfSksCisKKyAgICAgICAgImxhc3Qi
OiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0aCAp
IHsKKyAgICAgICAgICAgIHJldHVybiBbIGxlbmd0aCAtIDEgXTsKKyAgICAgICAgfSksCisKKyAg
ICAgICAgImVxIjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbiggbWF0Y2hJbmRleGVz
LCBsZW5ndGgsIGFyZ3VtZW50ICkgeworICAgICAgICAgICAgcmV0dXJuIFsgYXJndW1lbnQgPCAw
ID8gYXJndW1lbnQgKyBsZW5ndGggOiBhcmd1bWVudCBdOworICAgICAgICB9KSwKKworICAgICAg
ICAiZXZlbiI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24oIG1hdGNoSW5kZXhlcywg
bGVuZ3RoICkgeworICAgICAgICAgICAgdmFyIGkgPSAwOworICAgICAgICAgICAgZm9yICggOyBp
IDwgbGVuZ3RoOyBpICs9IDIgKSB7CisgICAgICAgICAgICAgICAgbWF0Y2hJbmRleGVzLnB1c2go
IGkgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBtYXRjaEluZGV4ZXM7Cisg
ICAgICAgIH0pLAorCisgICAgICAgICJvZGQiOiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0
aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0aCApIHsKKyAgICAgICAgICAgIHZhciBpID0gMTsKKyAg
ICAgICAgICAgIGZvciAoIDsgaSA8IGxlbmd0aDsgaSArPSAyICkgeworICAgICAgICAgICAgICAg
IG1hdGNoSW5kZXhlcy5wdXNoKCBpICk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1
cm4gbWF0Y2hJbmRleGVzOworICAgICAgICB9KSwKKworICAgICAgICAibHQiOiBjcmVhdGVQb3Np
dGlvbmFsUHNldWRvKGZ1bmN0aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0aCwgYXJndW1lbnQgKSB7
CisgICAgICAgICAgICB2YXIgaSA9IGFyZ3VtZW50IDwgMCA/IGFyZ3VtZW50ICsgbGVuZ3RoIDog
YXJndW1lbnQ7CisgICAgICAgICAgICBmb3IgKCA7IC0taSA+PSAwOyApIHsKKyAgICAgICAgICAg
ICAgICBtYXRjaEluZGV4ZXMucHVzaCggaSApOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
cmV0dXJuIG1hdGNoSW5kZXhlczsKKyAgICAgICAgfSksCisKKyAgICAgICAgImd0IjogY3JlYXRl
UG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbiggbWF0Y2hJbmRleGVzLCBsZW5ndGgsIGFyZ3VtZW50
ICkgeworICAgICAgICAgICAgdmFyIGkgPSBhcmd1bWVudCA8IDAgPyBhcmd1bWVudCArIGxlbmd0
aCA6IGFyZ3VtZW50OworICAgICAgICAgICAgZm9yICggOyArK2kgPCBsZW5ndGg7ICkgeworICAg
ICAgICAgICAgICAgIG1hdGNoSW5kZXhlcy5wdXNoKCBpICk7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICByZXR1cm4gbWF0Y2hJbmRleGVzOworICAgICAgICB9KQorICAgIH0KK307CisKK0V4
cHIucHNldWRvc1sibnRoIl0gPSBFeHByLnBzZXVkb3NbImVxIl07CisKKy8vIEFkZCBidXR0b24v
aW5wdXQgdHlwZSBwc2V1ZG9zCitmb3IgKCBpIGluIHsgcmFkaW86IHRydWUsIGNoZWNrYm94OiB0
cnVlLCBmaWxlOiB0cnVlLCBwYXNzd29yZDogdHJ1ZSwgaW1hZ2U6IHRydWUgfSApIHsKKyAgICBF
eHByLnBzZXVkb3NbIGkgXSA9IGNyZWF0ZUlucHV0UHNldWRvKCBpICk7Cit9Citmb3IgKCBpIGlu
IHsgc3VibWl0OiB0cnVlLCByZXNldDogdHJ1ZSB9ICkgeworICAgIEV4cHIucHNldWRvc1sgaSBd
ID0gY3JlYXRlQnV0dG9uUHNldWRvKCBpICk7Cit9CisKKy8vIEVhc3kgQVBJIGZvciBjcmVhdGlu
ZyBuZXcgc2V0RmlsdGVycworZnVuY3Rpb24gc2V0RmlsdGVycygpIHt9CitzZXRGaWx0ZXJzLnBy
b3RvdHlwZSA9IEV4cHIuZmlsdGVycyA9IEV4cHIucHNldWRvczsKK0V4cHIuc2V0RmlsdGVycyA9
IG5ldyBzZXRGaWx0ZXJzKCk7CisKK3Rva2VuaXplID0gU2l6emxlLnRva2VuaXplID0gZnVuY3Rp
b24oIHNlbGVjdG9yLCBwYXJzZU9ubHkgKSB7CisgICAgdmFyIG1hdGNoZWQsIG1hdGNoLCB0b2tl
bnMsIHR5cGUsCisgICAgICAgIHNvRmFyLCBncm91cHMsIHByZUZpbHRlcnMsCisgICAgICAgIGNh
Y2hlZCA9IHRva2VuQ2FjaGVbIHNlbGVjdG9yICsgIiAiIF07CisKKyAgICBpZiAoIGNhY2hlZCAp
IHsKKyAgICAgICAgcmV0dXJuIHBhcnNlT25seSA/IDAgOiBjYWNoZWQuc2xpY2UoIDAgKTsKKyAg
ICB9CisKKyAgICBzb0ZhciA9IHNlbGVjdG9yOworICAgIGdyb3VwcyA9IFtdOworICAgIHByZUZp
bHRlcnMgPSBFeHByLnByZUZpbHRlcjsKKworICAgIHdoaWxlICggc29GYXIgKSB7CisKKyAgICAg
ICAgLy8gQ29tbWEgYW5kIGZpcnN0IHJ1bgorICAgICAgICBpZiAoICFtYXRjaGVkIHx8IChtYXRj
aCA9IHJjb21tYS5leGVjKCBzb0ZhciApKSApIHsKKyAgICAgICAgICAgIGlmICggbWF0Y2ggKSB7
CisgICAgICAgICAgICAgICAgLy8gRG9uJ3QgY29uc3VtZSB0cmFpbGluZyBjb21tYXMgYXMgdmFs
aWQKKyAgICAgICAgICAgICAgICBzb0ZhciA9IHNvRmFyLnNsaWNlKCBtYXRjaFswXS5sZW5ndGgg
KSB8fCBzb0ZhcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGdyb3Vwcy5wdXNoKCAodG9r
ZW5zID0gW10pICk7CisgICAgICAgIH0KKworICAgICAgICBtYXRjaGVkID0gZmFsc2U7CisKKyAg
ICAgICAgLy8gQ29tYmluYXRvcnMKKyAgICAgICAgaWYgKCAobWF0Y2ggPSByY29tYmluYXRvcnMu
ZXhlYyggc29GYXIgKSkgKSB7CisgICAgICAgICAgICBtYXRjaGVkID0gbWF0Y2guc2hpZnQoKTsK
KyAgICAgICAgICAgIHRva2Vucy5wdXNoKHsKKyAgICAgICAgICAgICAgICB2YWx1ZTogbWF0Y2hl
ZCwKKyAgICAgICAgICAgICAgICAvLyBDYXN0IGRlc2NlbmRhbnQgY29tYmluYXRvcnMgdG8gc3Bh
Y2UKKyAgICAgICAgICAgICAgICB0eXBlOiBtYXRjaFswXS5yZXBsYWNlKCBydHJpbSwgIiAiICkK
KyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgc29GYXIgPSBzb0Zhci5zbGljZSggbWF0Y2hl
ZC5sZW5ndGggKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZpbHRlcnMKKyAgICAgICAgZm9y
ICggdHlwZSBpbiBFeHByLmZpbHRlciApIHsKKyAgICAgICAgICAgIGlmICggKG1hdGNoID0gbWF0
Y2hFeHByWyB0eXBlIF0uZXhlYyggc29GYXIgKSkgJiYgKCFwcmVGaWx0ZXJzWyB0eXBlIF0gfHwK
KyAgICAgICAgICAgICAgICAobWF0Y2ggPSBwcmVGaWx0ZXJzWyB0eXBlIF0oIG1hdGNoICkpKSAp
IHsKKyAgICAgICAgICAgICAgICBtYXRjaGVkID0gbWF0Y2guc2hpZnQoKTsKKyAgICAgICAgICAg
ICAgICB0b2tlbnMucHVzaCh7CisgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBtYXRjaGVkLAor
ICAgICAgICAgICAgICAgICAgICB0eXBlOiB0eXBlLAorICAgICAgICAgICAgICAgICAgICBtYXRj
aGVzOiBtYXRjaAorICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIHNvRmFyID0g
c29GYXIuc2xpY2UoIG1hdGNoZWQubGVuZ3RoICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KworICAgICAgICBpZiAoICFtYXRjaGVkICkgeworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICAvLyBSZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgaW52YWxpZCBleGNl
c3MKKyAgICAvLyBpZiB3ZSdyZSBqdXN0IHBhcnNpbmcKKyAgICAvLyBPdGhlcndpc2UsIHRocm93
IGFuIGVycm9yIG9yIHJldHVybiB0b2tlbnMKKyAgICByZXR1cm4gcGFyc2VPbmx5ID8KKyAgICAg
ICAgc29GYXIubGVuZ3RoIDoKKyAgICAgICAgc29GYXIgPworICAgICAgICAgICAgU2l6emxlLmVy
cm9yKCBzZWxlY3RvciApIDoKKyAgICAgICAgICAgIC8vIENhY2hlIHRoZSB0b2tlbnMKKyAgICAg
ICAgICAgIHRva2VuQ2FjaGUoIHNlbGVjdG9yLCBncm91cHMgKS5zbGljZSggMCApOworfTsKKwor
ZnVuY3Rpb24gdG9TZWxlY3RvciggdG9rZW5zICkgeworICAgIHZhciBpID0gMCwKKyAgICAgICAg
bGVuID0gdG9rZW5zLmxlbmd0aCwKKyAgICAgICAgc2VsZWN0b3IgPSAiIjsKKyAgICBmb3IgKCA7
IGkgPCBsZW47IGkrKyApIHsKKyAgICAgICAgc2VsZWN0b3IgKz0gdG9rZW5zW2ldLnZhbHVlOwor
ICAgIH0KKyAgICByZXR1cm4gc2VsZWN0b3I7Cit9CisKK2Z1bmN0aW9uIGFkZENvbWJpbmF0b3Io
IG1hdGNoZXIsIGNvbWJpbmF0b3IsIGJhc2UgKSB7CisgICAgdmFyIGRpciA9IGNvbWJpbmF0b3Iu
ZGlyLAorICAgICAgICBza2lwID0gY29tYmluYXRvci5uZXh0LAorICAgICAgICBrZXkgPSBza2lw
IHx8IGRpciwKKyAgICAgICAgY2hlY2tOb25FbGVtZW50cyA9IGJhc2UgJiYga2V5ID09PSAicGFy
ZW50Tm9kZSIsCisgICAgICAgIGRvbmVOYW1lID0gZG9uZSsrOworCisgICAgcmV0dXJuIGNvbWJp
bmF0b3IuZmlyc3QgPworICAgICAgICAvLyBDaGVjayBhZ2FpbnN0IGNsb3Nlc3QgYW5jZXN0b3Iv
cHJlY2VkaW5nIGVsZW1lbnQKKyAgICAgICAgZnVuY3Rpb24oIGVsZW0sIGNvbnRleHQsIHhtbCAp
IHsKKyAgICAgICAgICAgIHdoaWxlICggKGVsZW0gPSBlbGVtWyBkaXIgXSkgKSB7CisgICAgICAg
ICAgICAgICAgaWYgKCBlbGVtLm5vZGVUeXBlID09PSAxIHx8IGNoZWNrTm9uRWxlbWVudHMgKSB7
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaGVyKCBlbGVtLCBjb250ZXh0LCB4bWwg
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIH0gOgorCisgICAgICAgIC8vIENoZWNrIGFnYWluc3QgYWxsIGFuY2Vz
dG9yL3ByZWNlZGluZyBlbGVtZW50cworICAgICAgICBmdW5jdGlvbiggZWxlbSwgY29udGV4dCwg
eG1sICkgeworICAgICAgICAgICAgdmFyIG9sZENhY2hlLCB1bmlxdWVDYWNoZSwgb3V0ZXJDYWNo
ZSwKKyAgICAgICAgICAgICAgICBuZXdDYWNoZSA9IFsgZGlycnVucywgZG9uZU5hbWUgXTsKKwor
ICAgICAgICAgICAgLy8gV2UgY2FuJ3Qgc2V0IGFyYml0cmFyeSBkYXRhIG9uIFhNTCBub2Rlcywg
c28gdGhleSBkb24ndCBiZW5lZml0IGZyb20gY29tYmluYXRvciBjYWNoaW5nCisgICAgICAgICAg
ICBpZiAoIHhtbCApIHsKKyAgICAgICAgICAgICAgICB3aGlsZSAoIChlbGVtID0gZWxlbVsgZGly
IF0pICkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgfHwg
Y2hlY2tOb25FbGVtZW50cyApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICggbWF0Y2hl
ciggZWxlbSwgY29udGV4dCwgeG1sICkgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIHdoaWxlICggKGVsZW0gPSBlbGVtWyBkaXIgXSkgKSB7CisgICAgICAgICAgICAgICAg
ICAgIGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSB8fCBjaGVja05vbkVsZW1lbnRzICkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgb3V0ZXJDYWNoZSA9IGVsZW1bIGV4cGFuZG8gXSB8fCAoZWxl
bVsgZXhwYW5kbyBdID0ge30pOworCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBTdXBwb3J0
OiBJRSA8OSBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBEZWZlbmQgYWdhaW5zdCBj
bG9uZWQgYXR0cm9wZXJ0aWVzIChqUXVlcnkgZ2gtMTcwOSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHVuaXF1ZUNhY2hlID0gb3V0ZXJDYWNoZVsgZWxlbS51bmlxdWVJRCBdIHx8IChvdXRlckNh
Y2hlWyBlbGVtLnVuaXF1ZUlEIF0gPSB7fSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICggc2tpcCAmJiBza2lwID09PSBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZWxlbSA9IGVsZW1bIGRpciBdIHx8IGVsZW07CisgICAg
ICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCAob2xkQ2FjaGUgPSB1bmlxdWVDYWNoZVsg
a2V5IF0pICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkQ2FjaGVbIDAgXSA9PT0g
ZGlycnVucyAmJiBvbGRDYWNoZVsgMSBdID09PSBkb25lTmFtZSApIHsKKworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIEFzc2lnbiB0byBuZXdDYWNoZSBzbyByZXN1bHRzIGJhY2stcHJv
cGFnYXRlIHRvIHByZXZpb3VzIGVsZW1lbnRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIChuZXdDYWNoZVsgMiBdID0gb2xkQ2FjaGVbIDIgXSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJldXNlIG5l
d2NhY2hlIHNvIHJlc3VsdHMgYmFjay1wcm9wYWdhdGUgdG8gcHJldmlvdXMgZWxlbWVudHMKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlxdWVDYWNoZVsga2V5IF0gPSBuZXdDYWNoZTsK
KworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEEgbWF0Y2ggbWVhbnMgd2UncmUgZG9u
ZTsgYSBmYWlsIG1lYW5zIHdlIGhhdmUgdG8ga2VlcCBjaGVja2luZworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICggKG5ld0NhY2hlWyAyIF0gPSBtYXRjaGVyKCBlbGVtLCBjb250ZXh0
LCB4bWwgKSkgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfTsKK30KKworZnVuY3Rpb24g
ZWxlbWVudE1hdGNoZXIoIG1hdGNoZXJzICkgeworICAgIHJldHVybiBtYXRjaGVycy5sZW5ndGgg
PiAxID8KKyAgICAgICAgZnVuY3Rpb24oIGVsZW0sIGNvbnRleHQsIHhtbCApIHsKKyAgICAgICAg
ICAgIHZhciBpID0gbWF0Y2hlcnMubGVuZ3RoOworICAgICAgICAgICAgd2hpbGUgKCBpLS0gKSB7
CisgICAgICAgICAgICAgICAgaWYgKCAhbWF0Y2hlcnNbaV0oIGVsZW0sIGNvbnRleHQsIHhtbCAp
ICkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0gOgor
ICAgICAgICBtYXRjaGVyc1swXTsKK30KKworZnVuY3Rpb24gbXVsdGlwbGVDb250ZXh0cyggc2Vs
ZWN0b3IsIGNvbnRleHRzLCByZXN1bHRzICkgeworICAgIHZhciBpID0gMCwKKyAgICAgICAgbGVu
ID0gY29udGV4dHMubGVuZ3RoOworICAgIGZvciAoIDsgaSA8IGxlbjsgaSsrICkgeworICAgICAg
ICBTaXp6bGUoIHNlbGVjdG9yLCBjb250ZXh0c1tpXSwgcmVzdWx0cyApOworICAgIH0KKyAgICBy
ZXR1cm4gcmVzdWx0czsKK30KKworZnVuY3Rpb24gY29uZGVuc2UoIHVubWF0Y2hlZCwgbWFwLCBm
aWx0ZXIsIGNvbnRleHQsIHhtbCApIHsKKyAgICB2YXIgZWxlbSwKKyAgICAgICAgbmV3VW5tYXRj
aGVkID0gW10sCisgICAgICAgIGkgPSAwLAorICAgICAgICBsZW4gPSB1bm1hdGNoZWQubGVuZ3Ro
LAorICAgICAgICBtYXBwZWQgPSBtYXAgIT0gbnVsbDsKKworICAgIGZvciAoIDsgaSA8IGxlbjsg
aSsrICkgeworICAgICAgICBpZiAoIChlbGVtID0gdW5tYXRjaGVkW2ldKSApIHsKKyAgICAgICAg
ICAgIGlmICggIWZpbHRlciB8fCBmaWx0ZXIoIGVsZW0sIGNvbnRleHQsIHhtbCApICkgeworICAg
ICAgICAgICAgICAgIG5ld1VubWF0Y2hlZC5wdXNoKCBlbGVtICk7CisgICAgICAgICAgICAgICAg
aWYgKCBtYXBwZWQgKSB7CisgICAgICAgICAgICAgICAgICAgIG1hcC5wdXNoKCBpICk7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcmV0
dXJuIG5ld1VubWF0Y2hlZDsKK30KKworZnVuY3Rpb24gc2V0TWF0Y2hlciggcHJlRmlsdGVyLCBz
ZWxlY3RvciwgbWF0Y2hlciwgcG9zdEZpbHRlciwgcG9zdEZpbmRlciwgcG9zdFNlbGVjdG9yICkg
eworICAgIGlmICggcG9zdEZpbHRlciAmJiAhcG9zdEZpbHRlclsgZXhwYW5kbyBdICkgeworICAg
ICAgICBwb3N0RmlsdGVyID0gc2V0TWF0Y2hlciggcG9zdEZpbHRlciApOworICAgIH0KKyAgICBp
ZiAoIHBvc3RGaW5kZXIgJiYgIXBvc3RGaW5kZXJbIGV4cGFuZG8gXSApIHsKKyAgICAgICAgcG9z
dEZpbmRlciA9IHNldE1hdGNoZXIoIHBvc3RGaW5kZXIsIHBvc3RTZWxlY3RvciApOworICAgIH0K
KyAgICByZXR1cm4gbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCBzZWVkLCByZXN1bHRzLCBjb250ZXh0
LCB4bWwgKSB7CisgICAgICAgIHZhciB0ZW1wLCBpLCBlbGVtLAorICAgICAgICAgICAgcHJlTWFw
ID0gW10sCisgICAgICAgICAgICBwb3N0TWFwID0gW10sCisgICAgICAgICAgICBwcmVleGlzdGlu
ZyA9IHJlc3VsdHMubGVuZ3RoLAorCisgICAgICAgICAgICAvLyBHZXQgaW5pdGlhbCBlbGVtZW50
cyBmcm9tIHNlZWQgb3IgY29udGV4dAorICAgICAgICAgICAgZWxlbXMgPSBzZWVkIHx8IG11bHRp
cGxlQ29udGV4dHMoIHNlbGVjdG9yIHx8ICIqIiwgY29udGV4dC5ub2RlVHlwZSA/IFsgY29udGV4
dCBdIDogY29udGV4dCwgW10gKSwKKworICAgICAgICAgICAgLy8gUHJlZmlsdGVyIHRvIGdldCBt
YXRjaGVyIGlucHV0LCBwcmVzZXJ2aW5nIGEgbWFwIGZvciBzZWVkLXJlc3VsdHMgc3luY2hyb25p
emF0aW9uCisgICAgICAgICAgICBtYXRjaGVySW4gPSBwcmVGaWx0ZXIgJiYgKCBzZWVkIHx8ICFz
ZWxlY3RvciApID8KKyAgICAgICAgICAgICAgICBjb25kZW5zZSggZWxlbXMsIHByZU1hcCwgcHJl
RmlsdGVyLCBjb250ZXh0LCB4bWwgKSA6CisgICAgICAgICAgICAgICAgZWxlbXMsCisKKyAgICAg
ICAgICAgIG1hdGNoZXJPdXQgPSBtYXRjaGVyID8KKyAgICAgICAgICAgICAgICAvLyBJZiB3ZSBo
YXZlIGEgcG9zdEZpbmRlciwgb3IgZmlsdGVyZWQgc2VlZCwgb3Igbm9uLXNlZWQgcG9zdEZpbHRl
ciBvciBwcmVleGlzdGluZyByZXN1bHRzLAorICAgICAgICAgICAgICAgIHBvc3RGaW5kZXIgfHwg
KCBzZWVkID8gcHJlRmlsdGVyIDogcHJlZXhpc3RpbmcgfHwgcG9zdEZpbHRlciApID8KKworICAg
ICAgICAgICAgICAgICAgICAvLyAuLi5pbnRlcm1lZGlhdGUgcHJvY2Vzc2luZyBpcyBuZWNlc3Nh
cnkKKyAgICAgICAgICAgICAgICAgICAgW10gOgorCisgICAgICAgICAgICAgICAgICAgIC8vIC4u
Lm90aGVyd2lzZSB1c2UgcmVzdWx0cyBkaXJlY3RseQorICAgICAgICAgICAgICAgICAgICByZXN1
bHRzIDoKKyAgICAgICAgICAgICAgICBtYXRjaGVySW47CisKKyAgICAgICAgLy8gRmluZCBwcmlt
YXJ5IG1hdGNoZXMKKyAgICAgICAgaWYgKCBtYXRjaGVyICkgeworICAgICAgICAgICAgbWF0Y2hl
ciggbWF0Y2hlckluLCBtYXRjaGVyT3V0LCBjb250ZXh0LCB4bWwgKTsKKyAgICAgICAgfQorCisg
ICAgICAgIC8vIEFwcGx5IHBvc3RGaWx0ZXIKKyAgICAgICAgaWYgKCBwb3N0RmlsdGVyICkgewor
ICAgICAgICAgICAgdGVtcCA9IGNvbmRlbnNlKCBtYXRjaGVyT3V0LCBwb3N0TWFwICk7CisgICAg
ICAgICAgICBwb3N0RmlsdGVyKCB0ZW1wLCBbXSwgY29udGV4dCwgeG1sICk7CisKKyAgICAgICAg
ICAgIC8vIFVuLW1hdGNoIGZhaWxpbmcgZWxlbWVudHMgYnkgbW92aW5nIHRoZW0gYmFjayB0byBt
YXRjaGVySW4KKyAgICAgICAgICAgIGkgPSB0ZW1wLmxlbmd0aDsKKyAgICAgICAgICAgIHdoaWxl
ICggaS0tICkgeworICAgICAgICAgICAgICAgIGlmICggKGVsZW0gPSB0ZW1wW2ldKSApIHsKKyAg
ICAgICAgICAgICAgICAgICAgbWF0Y2hlck91dFsgcG9zdE1hcFtpXSBdID0gIShtYXRjaGVySW5b
IHBvc3RNYXBbaV0gXSA9IGVsZW0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorCisgICAgICAgIGlmICggc2VlZCApIHsKKyAgICAgICAgICAgIGlmICggcG9z
dEZpbmRlciB8fCBwcmVGaWx0ZXIgKSB7CisgICAgICAgICAgICAgICAgaWYgKCBwb3N0RmluZGVy
ICkgeworICAgICAgICAgICAgICAgICAgICAvLyBHZXQgdGhlIGZpbmFsIG1hdGNoZXJPdXQgYnkg
Y29uZGVuc2luZyB0aGlzIGludGVybWVkaWF0ZSBpbnRvIHBvc3RGaW5kZXIgY29udGV4dHMKKyAg
ICAgICAgICAgICAgICAgICAgdGVtcCA9IFtdOworICAgICAgICAgICAgICAgICAgICBpID0gbWF0
Y2hlck91dC5sZW5ndGg7CisgICAgICAgICAgICAgICAgICAgIHdoaWxlICggaS0tICkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCAoZWxlbSA9IG1hdGNoZXJPdXRbaV0pICkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlc3RvcmUgbWF0Y2hlckluIHNpbmNlIGVsZW0g
aXMgbm90IHlldCBhIGZpbmFsIG1hdGNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVt
cC5wdXNoKCAobWF0Y2hlckluW2ldID0gZWxlbSkgKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBwb3N0RmluZGVy
KCBudWxsLCAobWF0Y2hlck91dCA9IFtdKSwgdGVtcCwgeG1sICk7CisgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgLy8gTW92ZSBtYXRjaGVkIGVsZW1lbnRzIGZyb20gc2VlZCB0
byByZXN1bHRzIHRvIGtlZXAgdGhlbSBzeW5jaHJvbml6ZWQKKyAgICAgICAgICAgICAgICBpID0g
bWF0Y2hlck91dC5sZW5ndGg7CisgICAgICAgICAgICAgICAgd2hpbGUgKCBpLS0gKSB7CisgICAg
ICAgICAgICAgICAgICAgIGlmICggKGVsZW0gPSBtYXRjaGVyT3V0W2ldKSAmJgorICAgICAgICAg
ICAgICAgICAgICAgICAgKHRlbXAgPSBwb3N0RmluZGVyID8gaW5kZXhPZiggc2VlZCwgZWxlbSAp
IDogcHJlTWFwW2ldKSA+IC0xICkgeworCisgICAgICAgICAgICAgICAgICAgICAgICBzZWVkW3Rl
bXBdID0gIShyZXN1bHRzW3RlbXBdID0gZWxlbSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgLy8gQWRkIGVsZW1lbnRz
IHRvIHJlc3VsdHMsIHRocm91Z2ggcG9zdEZpbmRlciBpZiBkZWZpbmVkCisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBtYXRjaGVyT3V0ID0gY29uZGVuc2UoCisgICAgICAgICAgICAgICAg
bWF0Y2hlck91dCA9PT0gcmVzdWx0cyA/CisgICAgICAgICAgICAgICAgICAgIG1hdGNoZXJPdXQu
c3BsaWNlKCBwcmVleGlzdGluZywgbWF0Y2hlck91dC5sZW5ndGggKSA6CisgICAgICAgICAgICAg
ICAgICAgIG1hdGNoZXJPdXQKKyAgICAgICAgICAgICk7CisgICAgICAgICAgICBpZiAoIHBvc3RG
aW5kZXIgKSB7CisgICAgICAgICAgICAgICAgcG9zdEZpbmRlciggbnVsbCwgcmVzdWx0cywgbWF0
Y2hlck91dCwgeG1sICk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHB1
c2guYXBwbHkoIHJlc3VsdHMsIG1hdGNoZXJPdXQgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0pOworfQorCitmdW5jdGlvbiBtYXRjaGVyRnJvbVRva2VucyggdG9rZW5zICkgewor
ICAgIHZhciBjaGVja0NvbnRleHQsIG1hdGNoZXIsIGosCisgICAgICAgIGxlbiA9IHRva2Vucy5s
ZW5ndGgsCisgICAgICAgIGxlYWRpbmdSZWxhdGl2ZSA9IEV4cHIucmVsYXRpdmVbIHRva2Vuc1sw
XS50eXBlIF0sCisgICAgICAgIGltcGxpY2l0UmVsYXRpdmUgPSBsZWFkaW5nUmVsYXRpdmUgfHwg
RXhwci5yZWxhdGl2ZVsiICJdLAorICAgICAgICBpID0gbGVhZGluZ1JlbGF0aXZlID8gMSA6IDAs
CisKKyAgICAgICAgLy8gVGhlIGZvdW5kYXRpb25hbCBtYXRjaGVyIGVuc3VyZXMgdGhhdCBlbGVt
ZW50cyBhcmUgcmVhY2hhYmxlIGZyb20gdG9wLWxldmVsIGNvbnRleHQocykKKyAgICAgICAgbWF0
Y2hDb250ZXh0ID0gYWRkQ29tYmluYXRvciggZnVuY3Rpb24oIGVsZW0gKSB7CisgICAgICAgICAg
ICByZXR1cm4gZWxlbSA9PT0gY2hlY2tDb250ZXh0OworICAgICAgICB9LCBpbXBsaWNpdFJlbGF0
aXZlLCB0cnVlICksCisgICAgICAgIG1hdGNoQW55Q29udGV4dCA9IGFkZENvbWJpbmF0b3IoIGZ1
bmN0aW9uKCBlbGVtICkgeworICAgICAgICAgICAgcmV0dXJuIGluZGV4T2YoIGNoZWNrQ29udGV4
dCwgZWxlbSApID4gLTE7CisgICAgICAgIH0sIGltcGxpY2l0UmVsYXRpdmUsIHRydWUgKSwKKyAg
ICAgICAgbWF0Y2hlcnMgPSBbIGZ1bmN0aW9uKCBlbGVtLCBjb250ZXh0LCB4bWwgKSB7CisgICAg
ICAgICAgICB2YXIgcmV0ID0gKCAhbGVhZGluZ1JlbGF0aXZlICYmICggeG1sIHx8IGNvbnRleHQg
IT09IG91dGVybW9zdENvbnRleHQgKSApIHx8ICgKKyAgICAgICAgICAgICAgICAoY2hlY2tDb250
ZXh0ID0gY29udGV4dCkubm9kZVR5cGUgPworICAgICAgICAgICAgICAgICAgICBtYXRjaENvbnRl
eHQoIGVsZW0sIGNvbnRleHQsIHhtbCApIDoKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2hBbnlD
b250ZXh0KCBlbGVtLCBjb250ZXh0LCB4bWwgKSApOworICAgICAgICAgICAgLy8gQXZvaWQgaGFu
Z2luZyBvbnRvIGVsZW1lbnQgKGlzc3VlICMyOTkpCisgICAgICAgICAgICBjaGVja0NvbnRleHQg
PSBudWxsOworICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgICAgfSBdOworCisgICAgZm9y
ICggOyBpIDwgbGVuOyBpKysgKSB7CisgICAgICAgIGlmICggKG1hdGNoZXIgPSBFeHByLnJlbGF0
aXZlWyB0b2tlbnNbaV0udHlwZSBdKSApIHsKKyAgICAgICAgICAgIG1hdGNoZXJzID0gWyBhZGRD
b21iaW5hdG9yKGVsZW1lbnRNYXRjaGVyKCBtYXRjaGVycyApLCBtYXRjaGVyKSBdOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgbWF0Y2hlciA9IEV4cHIuZmlsdGVyWyB0b2tlbnNbaV0u
dHlwZSBdLmFwcGx5KCBudWxsLCB0b2tlbnNbaV0ubWF0Y2hlcyApOworCisgICAgICAgICAgICAv
LyBSZXR1cm4gc3BlY2lhbCB1cG9uIHNlZWluZyBhIHBvc2l0aW9uYWwgbWF0Y2hlcgorICAgICAg
ICAgICAgaWYgKCBtYXRjaGVyWyBleHBhbmRvIF0gKSB7CisgICAgICAgICAgICAgICAgLy8gRmlu
ZCB0aGUgbmV4dCByZWxhdGl2ZSBvcGVyYXRvciAoaWYgYW55KSBmb3IgcHJvcGVyIGhhbmRsaW5n
CisgICAgICAgICAgICAgICAgaiA9ICsraTsKKyAgICAgICAgICAgICAgICBmb3IgKCA7IGogPCBs
ZW47IGorKyApIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCBFeHByLnJlbGF0aXZlWyB0b2tl
bnNbal0udHlwZSBdICkgeworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJu
IHNldE1hdGNoZXIoCisgICAgICAgICAgICAgICAgICAgIGkgPiAxICYmIGVsZW1lbnRNYXRjaGVy
KCBtYXRjaGVycyApLAorICAgICAgICAgICAgICAgICAgICBpID4gMSAmJiB0b1NlbGVjdG9yKAor
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHByZWNlZGluZyB0b2tlbiB3YXMgYSBk
ZXNjZW5kYW50IGNvbWJpbmF0b3IsIGluc2VydCBhbiBpbXBsaWNpdCBhbnktZWxlbWVudCBgKmAK
KyAgICAgICAgICAgICAgICAgICAgICAgIHRva2Vucy5zbGljZSggMCwgaSAtIDEgKS5jb25jYXQo
eyB2YWx1ZTogdG9rZW5zWyBpIC0gMiBdLnR5cGUgPT09ICIgIiA/ICIqIiA6ICIiIH0pCisgICAg
ICAgICAgICAgICAgICAgICkucmVwbGFjZSggcnRyaW0sICIkMSIgKSwKKyAgICAgICAgICAgICAg
ICAgICAgbWF0Y2hlciwKKyAgICAgICAgICAgICAgICAgICAgaSA8IGogJiYgbWF0Y2hlckZyb21U
b2tlbnMoIHRva2Vucy5zbGljZSggaSwgaiApICksCisgICAgICAgICAgICAgICAgICAgIGogPCBs
ZW4gJiYgbWF0Y2hlckZyb21Ub2tlbnMoICh0b2tlbnMgPSB0b2tlbnMuc2xpY2UoIGogKSkgKSwK
KyAgICAgICAgICAgICAgICAgICAgaiA8IGxlbiAmJiB0b1NlbGVjdG9yKCB0b2tlbnMgKQorICAg
ICAgICAgICAgICAgICk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtYXRjaGVycy5wdXNo
KCBtYXRjaGVyICk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gZWxlbWVudE1hdGNo
ZXIoIG1hdGNoZXJzICk7Cit9CisKK2Z1bmN0aW9uIG1hdGNoZXJGcm9tR3JvdXBNYXRjaGVycygg
ZWxlbWVudE1hdGNoZXJzLCBzZXRNYXRjaGVycyApIHsKKyAgICB2YXIgYnlTZXQgPSBzZXRNYXRj
aGVycy5sZW5ndGggPiAwLAorICAgICAgICBieUVsZW1lbnQgPSBlbGVtZW50TWF0Y2hlcnMubGVu
Z3RoID4gMCwKKyAgICAgICAgc3VwZXJNYXRjaGVyID0gZnVuY3Rpb24oIHNlZWQsIGNvbnRleHQs
IHhtbCwgcmVzdWx0cywgb3V0ZXJtb3N0ICkgeworICAgICAgICAgICAgdmFyIGVsZW0sIGosIG1h
dGNoZXIsCisgICAgICAgICAgICAgICAgbWF0Y2hlZENvdW50ID0gMCwKKyAgICAgICAgICAgICAg
ICBpID0gIjAiLAorICAgICAgICAgICAgICAgIHVubWF0Y2hlZCA9IHNlZWQgJiYgW10sCisgICAg
ICAgICAgICAgICAgc2V0TWF0Y2hlZCA9IFtdLAorICAgICAgICAgICAgICAgIGNvbnRleHRCYWNr
dXAgPSBvdXRlcm1vc3RDb250ZXh0LAorICAgICAgICAgICAgICAgIC8vIFdlIG11c3QgYWx3YXlz
IGhhdmUgZWl0aGVyIHNlZWQgZWxlbWVudHMgb3Igb3V0ZXJtb3N0IGNvbnRleHQKKyAgICAgICAg
ICAgICAgICBlbGVtcyA9IHNlZWQgfHwgYnlFbGVtZW50ICYmIEV4cHIuZmluZFsiVEFHIl0oICIq
Iiwgb3V0ZXJtb3N0ICksCisgICAgICAgICAgICAgICAgLy8gVXNlIGludGVnZXIgZGlycnVucyBp
ZmYgdGhpcyBpcyB0aGUgb3V0ZXJtb3N0IG1hdGNoZXIKKyAgICAgICAgICAgICAgICBkaXJydW5z
VW5pcXVlID0gKGRpcnJ1bnMgKz0gY29udGV4dEJhY2t1cCA9PSBudWxsID8gMSA6IE1hdGgucmFu
ZG9tKCkgfHwgMC4xKSwKKyAgICAgICAgICAgICAgICBsZW4gPSBlbGVtcy5sZW5ndGg7CisKKyAg
ICAgICAgICAgIGlmICggb3V0ZXJtb3N0ICkgeworICAgICAgICAgICAgICAgIG91dGVybW9zdENv
bnRleHQgPSBjb250ZXh0ID09PSBkb2N1bWVudCB8fCBjb250ZXh0IHx8IG91dGVybW9zdDsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gQWRkIGVsZW1lbnRzIHBhc3NpbmcgZWxlbWVu
dE1hdGNoZXJzIGRpcmVjdGx5IHRvIHJlc3VsdHMKKyAgICAgICAgICAgIC8vIFN1cHBvcnQ6IElF
PDksIFNhZmFyaQorICAgICAgICAgICAgLy8gVG9sZXJhdGUgTm9kZUxpc3QgcHJvcGVydGllcyAo
SUU6ICJsZW5ndGgiOyBTYWZhcmk6IDxudW1iZXI+KSBtYXRjaGluZyBlbGVtZW50cyBieSBpZAor
ICAgICAgICAgICAgZm9yICggOyBpICE9PSBsZW4gJiYgKGVsZW0gPSBlbGVtc1tpXSkgIT0gbnVs
bDsgaSsrICkgeworICAgICAgICAgICAgICAgIGlmICggYnlFbGVtZW50ICYmIGVsZW0gKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGogPSAwOworICAgICAgICAgICAgICAgICAgICBpZiAoICFjb250
ZXh0ICYmIGVsZW0ub3duZXJEb2N1bWVudCAhPT0gZG9jdW1lbnQgKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBzZXREb2N1bWVudCggZWxlbSApOworICAgICAgICAgICAgICAgICAgICAgICAg
eG1sID0gIWRvY3VtZW50SXNIVE1MOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIHdoaWxlICggKG1hdGNoZXIgPSBlbGVtZW50TWF0Y2hlcnNbaisrXSkgKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoIG1hdGNoZXIoIGVsZW0sIGNvbnRleHQgfHwgZG9j
dW1lbnQsIHhtbCkgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cy5wdXNo
KCBlbGVtICk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgaWYgKCBvdXRlcm1vc3QgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBkaXJydW5zID0g
ZGlycnVuc1VuaXF1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgIC8vIFRyYWNrIHVubWF0Y2hlZCBlbGVtZW50cyBmb3Igc2V0IGZp
bHRlcnMKKyAgICAgICAgICAgICAgICBpZiAoIGJ5U2V0ICkgeworICAgICAgICAgICAgICAgICAg
ICAvLyBUaGV5IHdpbGwgaGF2ZSBnb25lIHRocm91Z2ggYWxsIHBvc3NpYmxlIG1hdGNoZXJzCisg
ICAgICAgICAgICAgICAgICAgIGlmICggKGVsZW0gPSAhbWF0Y2hlciAmJiBlbGVtKSApIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZWRDb3VudC0tOworICAgICAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICAgICAgLy8gTGVuZ3RoZW4gdGhlIGFycmF5IGZvciBldmVy
eSBlbGVtZW50LCBtYXRjaGVkIG9yIG5vdAorICAgICAgICAgICAgICAgICAgICBpZiAoIHNlZWQg
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICB1bm1hdGNoZWQucHVzaCggZWxlbSApOworICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAvLyBgaWAgaXMgbm93IHRoZSBjb3VudCBvZiBlbGVtZW50cyB2aXNpdGVkIGFi
b3ZlLCBhbmQgYWRkaW5nIGl0IHRvIGBtYXRjaGVkQ291bnRgCisgICAgICAgICAgICAvLyBtYWtl
cyB0aGUgbGF0dGVyIG5vbm5lZ2F0aXZlLgorICAgICAgICAgICAgbWF0Y2hlZENvdW50ICs9IGk7
CisKKyAgICAgICAgICAgIC8vIEFwcGx5IHNldCBmaWx0ZXJzIHRvIHVubWF0Y2hlZCBlbGVtZW50
cworICAgICAgICAgICAgLy8gTk9URTogVGhpcyBjYW4gYmUgc2tpcHBlZCBpZiB0aGVyZSBhcmUg
bm8gdW5tYXRjaGVkIGVsZW1lbnRzIChpLmUuLCBgbWF0Y2hlZENvdW50YAorICAgICAgICAgICAg
Ly8gZXF1YWxzIGBpYCksIHVubGVzcyB3ZSBkaWRuJ3QgdmlzaXQgX2FueV8gZWxlbWVudHMgaW4g
dGhlIGFib3ZlIGxvb3AgYmVjYXVzZSB3ZSBoYXZlCisgICAgICAgICAgICAvLyBubyBlbGVtZW50
IG1hdGNoZXJzIGFuZCBubyBzZWVkLgorICAgICAgICAgICAgLy8gSW5jcmVtZW50aW5nIGFuIGlu
aXRpYWxseS1zdHJpbmcgIjAiIGBpYCBhbGxvd3MgYGlgIHRvIHJlbWFpbiBhIHN0cmluZyBvbmx5
IGluIHRoYXQKKyAgICAgICAgICAgIC8vIGNhc2UsIHdoaWNoIHdpbGwgcmVzdWx0IGluIGEgIjAw
IiBgbWF0Y2hlZENvdW50YCB0aGF0IGRpZmZlcnMgZnJvbSBgaWAgYnV0IGlzIGFsc28KKyAgICAg
ICAgICAgIC8vIG51bWVyaWNhbGx5IHplcm8uCisgICAgICAgICAgICBpZiAoIGJ5U2V0ICYmIGkg
IT09IG1hdGNoZWRDb3VudCApIHsKKyAgICAgICAgICAgICAgICBqID0gMDsKKyAgICAgICAgICAg
ICAgICB3aGlsZSAoIChtYXRjaGVyID0gc2V0TWF0Y2hlcnNbaisrXSkgKSB7CisgICAgICAgICAg
ICAgICAgICAgIG1hdGNoZXIoIHVubWF0Y2hlZCwgc2V0TWF0Y2hlZCwgY29udGV4dCwgeG1sICk7
CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKCBzZWVkICkgeworICAg
ICAgICAgICAgICAgICAgICAvLyBSZWludGVncmF0ZSBlbGVtZW50IG1hdGNoZXMgdG8gZWxpbWlu
YXRlIHRoZSBuZWVkIGZvciBzb3J0aW5nCisgICAgICAgICAgICAgICAgICAgIGlmICggbWF0Y2hl
ZENvdW50ID4gMCApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICggaS0tICkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggISh1bm1hdGNoZWRbaV0gfHwgc2V0TWF0
Y2hlZFtpXSkgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1hdGNoZWRb
aV0gPSBwb3AuY2FsbCggcmVzdWx0cyApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgICAgIC8vIERpc2NhcmQgaW5kZXggcGxhY2Vob2xkZXIgdmFsdWVzIHRvIGdl
dCBvbmx5IGFjdHVhbCBtYXRjaGVzCisgICAgICAgICAgICAgICAgICAgIHNldE1hdGNoZWQgPSBj
b25kZW5zZSggc2V0TWF0Y2hlZCApOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ICAgIC8vIEFkZCBtYXRjaGVzIHRvIHJlc3VsdHMKKyAgICAgICAgICAgICAgICBwdXNoLmFwcGx5
KCByZXN1bHRzLCBzZXRNYXRjaGVkICk7CisKKyAgICAgICAgICAgICAgICAvLyBTZWVkbGVzcyBz
ZXQgbWF0Y2hlcyBzdWNjZWVkaW5nIG11bHRpcGxlIHN1Y2Nlc3NmdWwgbWF0Y2hlcnMgc3RpcHVs
YXRlIHNvcnRpbmcKKyAgICAgICAgICAgICAgICBpZiAoIG91dGVybW9zdCAmJiAhc2VlZCAmJiBz
ZXRNYXRjaGVkLmxlbmd0aCA+IDAgJiYKKyAgICAgICAgICAgICAgICAgICAgKCBtYXRjaGVkQ291
bnQgKyBzZXRNYXRjaGVycy5sZW5ndGggKSA+IDEgKSB7CisKKyAgICAgICAgICAgICAgICAgICAg
U2l6emxlLnVuaXF1ZVNvcnQoIHJlc3VsdHMgKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIC8vIE92ZXJyaWRlIG1hbmlwdWxhdGlvbiBvZiBnbG9iYWxz
IGJ5IG5lc3RlZCBtYXRjaGVycworICAgICAgICAgICAgaWYgKCBvdXRlcm1vc3QgKSB7CisgICAg
ICAgICAgICAgICAgZGlycnVucyA9IGRpcnJ1bnNVbmlxdWU7CisgICAgICAgICAgICAgICAgb3V0
ZXJtb3N0Q29udGV4dCA9IGNvbnRleHRCYWNrdXA7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHJldHVybiB1bm1hdGNoZWQ7CisgICAgICAgIH07CisKKyAgICByZXR1cm4gYnlTZXQgPwor
ICAgICAgICBtYXJrRnVuY3Rpb24oIHN1cGVyTWF0Y2hlciApIDoKKyAgICAgICAgc3VwZXJNYXRj
aGVyOworfQorCitjb21waWxlID0gU2l6emxlLmNvbXBpbGUgPSBmdW5jdGlvbiggc2VsZWN0b3Is
IG1hdGNoIC8qIEludGVybmFsIFVzZSBPbmx5ICovICkgeworICAgIHZhciBpLAorICAgICAgICBz
ZXRNYXRjaGVycyA9IFtdLAorICAgICAgICBlbGVtZW50TWF0Y2hlcnMgPSBbXSwKKyAgICAgICAg
Y2FjaGVkID0gY29tcGlsZXJDYWNoZVsgc2VsZWN0b3IgKyAiICIgXTsKKworICAgIGlmICggIWNh
Y2hlZCApIHsKKyAgICAgICAgLy8gR2VuZXJhdGUgYSBmdW5jdGlvbiBvZiByZWN1cnNpdmUgZnVu
Y3Rpb25zIHRoYXQgY2FuIGJlIHVzZWQgdG8gY2hlY2sgZWFjaCBlbGVtZW50CisgICAgICAgIGlm
ICggIW1hdGNoICkgeworICAgICAgICAgICAgbWF0Y2ggPSB0b2tlbml6ZSggc2VsZWN0b3IgKTsK
KyAgICAgICAgfQorICAgICAgICBpID0gbWF0Y2gubGVuZ3RoOworICAgICAgICB3aGlsZSAoIGkt
LSApIHsKKyAgICAgICAgICAgIGNhY2hlZCA9IG1hdGNoZXJGcm9tVG9rZW5zKCBtYXRjaFtpXSAp
OworICAgICAgICAgICAgaWYgKCBjYWNoZWRbIGV4cGFuZG8gXSApIHsKKyAgICAgICAgICAgICAg
ICBzZXRNYXRjaGVycy5wdXNoKCBjYWNoZWQgKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgZWxlbWVudE1hdGNoZXJzLnB1c2goIGNhY2hlZCApOworICAgICAgICAgICAg
fQorICAgICAgICB9CisKKyAgICAgICAgLy8gQ2FjaGUgdGhlIGNvbXBpbGVkIGZ1bmN0aW9uCisg
ICAgICAgIGNhY2hlZCA9IGNvbXBpbGVyQ2FjaGUoIHNlbGVjdG9yLCBtYXRjaGVyRnJvbUdyb3Vw
TWF0Y2hlcnMoIGVsZW1lbnRNYXRjaGVycywgc2V0TWF0Y2hlcnMgKSApOworCisgICAgICAgIC8v
IFNhdmUgc2VsZWN0b3IgYW5kIHRva2VuaXphdGlvbgorICAgICAgICBjYWNoZWQuc2VsZWN0b3Ig
PSBzZWxlY3RvcjsKKyAgICB9CisgICAgcmV0dXJuIGNhY2hlZDsKK307CisKKy8qKgorICogQSBs
b3ctbGV2ZWwgc2VsZWN0aW9uIGZ1bmN0aW9uIHRoYXQgd29ya3Mgd2l0aCBTaXp6bGUncyBjb21w
aWxlZAorICogIHNlbGVjdG9yIGZ1bmN0aW9ucworICogQHBhcmFtIHtTdHJpbmd8RnVuY3Rpb259
IHNlbGVjdG9yIEEgc2VsZWN0b3Igb3IgYSBwcmUtY29tcGlsZWQKKyAqICBzZWxlY3RvciBmdW5j
dGlvbiBidWlsdCB3aXRoIFNpenpsZS5jb21waWxlCisgKiBAcGFyYW0ge0VsZW1lbnR9IGNvbnRl
eHQKKyAqIEBwYXJhbSB7QXJyYXl9IFtyZXN1bHRzXQorICogQHBhcmFtIHtBcnJheX0gW3NlZWRd
IEEgc2V0IG9mIGVsZW1lbnRzIHRvIG1hdGNoIGFnYWluc3QKKyAqLworc2VsZWN0ID0gU2l6emxl
LnNlbGVjdCA9IGZ1bmN0aW9uKCBzZWxlY3RvciwgY29udGV4dCwgcmVzdWx0cywgc2VlZCApIHsK
KyAgICB2YXIgaSwgdG9rZW5zLCB0b2tlbiwgdHlwZSwgZmluZCwKKyAgICAgICAgY29tcGlsZWQg
PSB0eXBlb2Ygc2VsZWN0b3IgPT09ICJmdW5jdGlvbiIgJiYgc2VsZWN0b3IsCisgICAgICAgIG1h
dGNoID0gIXNlZWQgJiYgdG9rZW5pemUoIChzZWxlY3RvciA9IGNvbXBpbGVkLnNlbGVjdG9yIHx8
IHNlbGVjdG9yKSApOworCisgICAgcmVzdWx0cyA9IHJlc3VsdHMgfHwgW107CisKKyAgICAvLyBU
cnkgdG8gbWluaW1pemUgb3BlcmF0aW9ucyBpZiB0aGVyZSBpcyBvbmx5IG9uZSBzZWxlY3RvciBp
biB0aGUgbGlzdCBhbmQgbm8gc2VlZAorICAgIC8vICh0aGUgbGF0dGVyIG9mIHdoaWNoIGd1YXJh
bnRlZXMgdXMgY29udGV4dCkKKyAgICBpZiAoIG1hdGNoLmxlbmd0aCA9PT0gMSApIHsKKworICAg
ICAgICAvLyBSZWR1Y2UgY29udGV4dCBpZiB0aGUgbGVhZGluZyBjb21wb3VuZCBzZWxlY3RvciBp
cyBhbiBJRAorICAgICAgICB0b2tlbnMgPSBtYXRjaFswXSA9IG1hdGNoWzBdLnNsaWNlKCAwICk7
CisgICAgICAgIGlmICggdG9rZW5zLmxlbmd0aCA+IDIgJiYgKHRva2VuID0gdG9rZW5zWzBdKS50
eXBlID09PSAiSUQiICYmCisgICAgICAgICAgICAgICAgY29udGV4dC5ub2RlVHlwZSA9PT0gOSAm
JiBkb2N1bWVudElzSFRNTCAmJiBFeHByLnJlbGF0aXZlWyB0b2tlbnNbMV0udHlwZSBdICkgewor
CisgICAgICAgICAgICBjb250ZXh0ID0gKCBFeHByLmZpbmRbIklEIl0oIHRva2VuLm1hdGNoZXNb
MF0ucmVwbGFjZShydW5lc2NhcGUsIGZ1bmVzY2FwZSksIGNvbnRleHQgKSB8fCBbXSApWzBdOwor
ICAgICAgICAgICAgaWYgKCAhY29udGV4dCApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVz
dWx0czsKKworICAgICAgICAgICAgLy8gUHJlY29tcGlsZWQgbWF0Y2hlcnMgd2lsbCBzdGlsbCB2
ZXJpZnkgYW5jZXN0cnksIHNvIHN0ZXAgdXAgYSBsZXZlbAorICAgICAgICAgICAgfSBlbHNlIGlm
ICggY29tcGlsZWQgKSB7CisgICAgICAgICAgICAgICAgY29udGV4dCA9IGNvbnRleHQucGFyZW50
Tm9kZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc2VsZWN0b3IgPSBzZWxlY3Rvci5z
bGljZSggdG9rZW5zLnNoaWZ0KCkudmFsdWUubGVuZ3RoICk7CisgICAgICAgIH0KKworICAgICAg
ICAvLyBGZXRjaCBhIHNlZWQgc2V0IGZvciByaWdodC10by1sZWZ0IG1hdGNoaW5nCisgICAgICAg
IGkgPSBtYXRjaEV4cHJbIm5lZWRzQ29udGV4dCJdLnRlc3QoIHNlbGVjdG9yICkgPyAwIDogdG9r
ZW5zLmxlbmd0aDsKKyAgICAgICAgd2hpbGUgKCBpLS0gKSB7CisgICAgICAgICAgICB0b2tlbiA9
IHRva2Vuc1tpXTsKKworICAgICAgICAgICAgLy8gQWJvcnQgaWYgd2UgaGl0IGEgY29tYmluYXRv
cgorICAgICAgICAgICAgaWYgKCBFeHByLnJlbGF0aXZlWyAodHlwZSA9IHRva2VuLnR5cGUpIF0g
KSB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBp
ZiAoIChmaW5kID0gRXhwci5maW5kWyB0eXBlIF0pICkgeworICAgICAgICAgICAgICAgIC8vIFNl
YXJjaCwgZXhwYW5kaW5nIGNvbnRleHQgZm9yIGxlYWRpbmcgc2libGluZyBjb21iaW5hdG9ycwor
ICAgICAgICAgICAgICAgIGlmICggKHNlZWQgPSBmaW5kKAorICAgICAgICAgICAgICAgICAgICB0
b2tlbi5tYXRjaGVzWzBdLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICksCisgICAgICAg
ICAgICAgICAgICAgIHJzaWJsaW5nLnRlc3QoIHRva2Vuc1swXS50eXBlICkgJiYgdGVzdENvbnRl
eHQoIGNvbnRleHQucGFyZW50Tm9kZSApIHx8IGNvbnRleHQKKyAgICAgICAgICAgICAgICApKSAp
IHsKKworICAgICAgICAgICAgICAgICAgICAvLyBJZiBzZWVkIGlzIGVtcHR5IG9yIG5vIHRva2Vu
cyByZW1haW4sIHdlIGNhbiByZXR1cm4gZWFybHkKKyAgICAgICAgICAgICAgICAgICAgdG9rZW5z
LnNwbGljZSggaSwgMSApOworICAgICAgICAgICAgICAgICAgICBzZWxlY3RvciA9IHNlZWQubGVu
Z3RoICYmIHRvU2VsZWN0b3IoIHRva2VucyApOworICAgICAgICAgICAgICAgICAgICBpZiAoICFz
ZWxlY3RvciApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2guYXBwbHkoIHJlc3VsdHMs
IHNlZWQgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRzOworICAgICAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLy8gQ29tcGls
ZSBhbmQgZXhlY3V0ZSBhIGZpbHRlcmluZyBmdW5jdGlvbiBpZiBvbmUgaXMgbm90IHByb3ZpZGVk
CisgICAgLy8gUHJvdmlkZSBgbWF0Y2hgIHRvIGF2b2lkIHJldG9rZW5pemF0aW9uIGlmIHdlIG1v
ZGlmaWVkIHRoZSBzZWxlY3RvciBhYm92ZQorICAgICggY29tcGlsZWQgfHwgY29tcGlsZSggc2Vs
ZWN0b3IsIG1hdGNoICkgKSgKKyAgICAgICAgc2VlZCwKKyAgICAgICAgY29udGV4dCwKKyAgICAg
ICAgIWRvY3VtZW50SXNIVE1MLAorICAgICAgICByZXN1bHRzLAorICAgICAgICAhY29udGV4dCB8
fCByc2libGluZy50ZXN0KCBzZWxlY3RvciApICYmIHRlc3RDb250ZXh0KCBjb250ZXh0LnBhcmVu
dE5vZGUgKSB8fCBjb250ZXh0CisgICAgKTsKKyAgICByZXR1cm4gcmVzdWx0czsKK307CisKKy8v
IE9uZS10aW1lIGFzc2lnbm1lbnRzCisKKy8vIFNvcnQgc3RhYmlsaXR5CitzdXBwb3J0LnNvcnRT
dGFibGUgPSBleHBhbmRvLnNwbGl0KCIiKS5zb3J0KCBzb3J0T3JkZXIgKS5qb2luKCIiKSA9PT0g
ZXhwYW5kbzsKKworLy8gU3VwcG9ydDogQ2hyb21lIDE0LTM1KworLy8gQWx3YXlzIGFzc3VtZSBk
dXBsaWNhdGVzIGlmIHRoZXkgYXJlbid0IHBhc3NlZCB0byB0aGUgY29tcGFyaXNvbiBmdW5jdGlv
bgorc3VwcG9ydC5kZXRlY3REdXBsaWNhdGVzID0gISFoYXNEdXBsaWNhdGU7CisKKy8vIEluaXRp
YWxpemUgYWdhaW5zdCB0aGUgZGVmYXVsdCBkb2N1bWVudAorc2V0RG9jdW1lbnQoKTsKKworLy8g
U3VwcG9ydDogV2Via2l0PDUzNy4zMiAtIFNhZmFyaSA2LjAuMy9DaHJvbWUgMjUgKGZpeGVkIGlu
IENocm9tZSAyNykKKy8vIERldGFjaGVkIG5vZGVzIGNvbmZvdW5kaW5nbHkgZm9sbG93ICplYWNo
IG90aGVyKgorc3VwcG9ydC5zb3J0RGV0YWNoZWQgPSBhc3NlcnQoZnVuY3Rpb24oIGVsICkgewor
ICAgIC8vIFNob3VsZCByZXR1cm4gMSwgYnV0IHJldHVybnMgNCAoZm9sbG93aW5nKQorICAgIHJl
dHVybiBlbC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiggZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZmllbGRzZXQiKSApICYgMTsKK30pOworCisvLyBTdXBwb3J0OiBJRTw4CisvLyBQcmV2ZW50IGF0
dHJpYnV0ZS9wcm9wZXJ0eSAiaW50ZXJwb2xhdGlvbiIKKy8vIGh0dHBzOi8vbXNkbi5taWNyb3Nv
ZnQuY29tL2VuLXVzL2xpYnJhcnkvbXM1MzY0MjklMjhWUy44NSUyOS5hc3B4CitpZiAoICFhc3Nl
cnQoZnVuY3Rpb24oIGVsICkgeworICAgIGVsLmlubmVySFRNTCA9ICI8YSBocmVmPScjJz48L2E+
IjsKKyAgICByZXR1cm4gZWwuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoImhyZWYiKSA9PT0gIiMi
IDsKK30pICkgeworICAgIGFkZEhhbmRsZSggInR5cGV8aHJlZnxoZWlnaHR8d2lkdGgiLCBmdW5j
dGlvbiggZWxlbSwgbmFtZSwgaXNYTUwgKSB7CisgICAgICAgIGlmICggIWlzWE1MICkgeworICAg
ICAgICAgICAgcmV0dXJuIGVsZW0uZ2V0QXR0cmlidXRlKCBuYW1lLCBuYW1lLnRvTG93ZXJDYXNl
KCkgPT09ICJ0eXBlIiA/IDEgOiAyICk7CisgICAgICAgIH0KKyAgICB9KTsKK30KKworLy8gU3Vw
cG9ydDogSUU8OQorLy8gVXNlIGRlZmF1bHRWYWx1ZSBpbiBwbGFjZSBvZiBnZXRBdHRyaWJ1dGUo
InZhbHVlIikKK2lmICggIXN1cHBvcnQuYXR0cmlidXRlcyB8fCAhYXNzZXJ0KGZ1bmN0aW9uKCBl
bCApIHsKKyAgICBlbC5pbm5lckhUTUwgPSAiPGlucHV0Lz4iOworICAgIGVsLmZpcnN0Q2hpbGQu
c2V0QXR0cmlidXRlKCAidmFsdWUiLCAiIiApOworICAgIHJldHVybiBlbC5maXJzdENoaWxkLmdl
dEF0dHJpYnV0ZSggInZhbHVlIiApID09PSAiIjsKK30pICkgeworICAgIGFkZEhhbmRsZSggInZh
bHVlIiwgZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGlzWE1MICkgeworICAgICAgICBpZiAoICFpc1hN
TCAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICJpbnB1dCIgKSB7CisgICAgICAg
ICAgICByZXR1cm4gZWxlbS5kZWZhdWx0VmFsdWU7CisgICAgICAgIH0KKyAgICB9KTsKK30KKwor
Ly8gU3VwcG9ydDogSUU8OQorLy8gVXNlIGdldEF0dHJpYnV0ZU5vZGUgdG8gZmV0Y2ggYm9vbGVh
bnMgd2hlbiBnZXRBdHRyaWJ1dGUgbGllcworaWYgKCAhYXNzZXJ0KGZ1bmN0aW9uKCBlbCApIHsK
KyAgICByZXR1cm4gZWwuZ2V0QXR0cmlidXRlKCJkaXNhYmxlZCIpID09IG51bGw7Cit9KSApIHsK
KyAgICBhZGRIYW5kbGUoIGJvb2xlYW5zLCBmdW5jdGlvbiggZWxlbSwgbmFtZSwgaXNYTUwgKSB7
CisgICAgICAgIHZhciB2YWw7CisgICAgICAgIGlmICggIWlzWE1MICkgeworICAgICAgICAgICAg
cmV0dXJuIGVsZW1bIG5hbWUgXSA9PT0gdHJ1ZSA/IG5hbWUudG9Mb3dlckNhc2UoKSA6CisgICAg
ICAgICAgICAgICAgICAgICh2YWwgPSBlbGVtLmdldEF0dHJpYnV0ZU5vZGUoIG5hbWUgKSkgJiYg
dmFsLnNwZWNpZmllZCA/CisgICAgICAgICAgICAgICAgICAgIHZhbC52YWx1ZSA6CisgICAgICAg
ICAgICAgICAgbnVsbDsKKyAgICAgICAgfQorICAgIH0pOworfQorCityZXR1cm4gU2l6emxlOwor
Cit9KSggd2luZG93ICk7CisKKworCitqUXVlcnkuZmluZCA9IFNpenpsZTsKK2pRdWVyeS5leHBy
ID0gU2l6emxlLnNlbGVjdG9yczsKKworLy8gRGVwcmVjYXRlZAoralF1ZXJ5LmV4cHJbICI6IiBd
ID0galF1ZXJ5LmV4cHIucHNldWRvczsKK2pRdWVyeS51bmlxdWVTb3J0ID0galF1ZXJ5LnVuaXF1
ZSA9IFNpenpsZS51bmlxdWVTb3J0OworalF1ZXJ5LnRleHQgPSBTaXp6bGUuZ2V0VGV4dDsKK2pR
dWVyeS5pc1hNTERvYyA9IFNpenpsZS5pc1hNTDsKK2pRdWVyeS5jb250YWlucyA9IFNpenpsZS5j
b250YWluczsKK2pRdWVyeS5lc2NhcGVTZWxlY3RvciA9IFNpenpsZS5lc2NhcGU7CisKKworCisK
K3ZhciBkaXIgPSBmdW5jdGlvbiggZWxlbSwgZGlyLCB1bnRpbCApIHsKKyAgICB2YXIgbWF0Y2hl
ZCA9IFtdLAorICAgICAgICB0cnVuY2F0ZSA9IHVudGlsICE9PSB1bmRlZmluZWQ7CisKKyAgICB3
aGlsZSAoICggZWxlbSA9IGVsZW1bIGRpciBdICkgJiYgZWxlbS5ub2RlVHlwZSAhPT0gOSApIHsK
KyAgICAgICAgaWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICkgeworICAgICAgICAgICAgaWYgKCB0
cnVuY2F0ZSAmJiBqUXVlcnkoIGVsZW0gKS5pcyggdW50aWwgKSApIHsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1hdGNoZWQucHVzaCggZWxlbSAp
OworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBtYXRjaGVkOworfTsKKworCit2YXIgc2li
bGluZ3MgPSBmdW5jdGlvbiggbiwgZWxlbSApIHsKKyAgICB2YXIgbWF0Y2hlZCA9IFtdOworCisg
ICAgZm9yICggOyBuOyBuID0gbi5uZXh0U2libGluZyApIHsKKyAgICAgICAgaWYgKCBuLm5vZGVU
eXBlID09PSAxICYmIG4gIT09IGVsZW0gKSB7CisgICAgICAgICAgICBtYXRjaGVkLnB1c2goIG4g
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBtYXRjaGVkOworfTsKKworCit2YXIg
cm5lZWRzQ29udGV4dCA9IGpRdWVyeS5leHByLm1hdGNoLm5lZWRzQ29udGV4dDsKKwordmFyIHJz
aW5nbGVUYWcgPSAoIC9ePChbYS16XVteXC9cMD46XHgyMFx0XHJcblxmXSopW1x4MjBcdFxyXG5c
Zl0qXC8/Pig/OjxcL1wxPnwpJC9pICk7CisKKworCit2YXIgcmlzU2ltcGxlID0gL14uW146I1xb
XC4sXSokLzsKKworLy8gSW1wbGVtZW50IHRoZSBpZGVudGljYWwgZnVuY3Rpb25hbGl0eSBmb3Ig
ZmlsdGVyIGFuZCBub3QKK2Z1bmN0aW9uIHdpbm5vdyggZWxlbWVudHMsIHF1YWxpZmllciwgbm90
ICkgeworICAgIGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIHF1YWxpZmllciApICkgeworICAgICAg
ICByZXR1cm4galF1ZXJ5LmdyZXAoIGVsZW1lbnRzLCBmdW5jdGlvbiggZWxlbSwgaSApIHsKKyAg
ICAgICAgICAgIHJldHVybiAhIXF1YWxpZmllci5jYWxsKCBlbGVtLCBpLCBlbGVtICkgIT09IG5v
dDsKKyAgICAgICAgfSApOworICAgIH0KKworICAgIC8vIFNpbmdsZSBlbGVtZW50CisgICAgaWYg
KCBxdWFsaWZpZXIubm9kZVR5cGUgKSB7CisgICAgICAgIHJldHVybiBqUXVlcnkuZ3JlcCggZWxl
bWVudHMsIGZ1bmN0aW9uKCBlbGVtICkgeworICAgICAgICAgICAgcmV0dXJuICggZWxlbSA9PT0g
cXVhbGlmaWVyICkgIT09IG5vdDsKKyAgICAgICAgfSApOworICAgIH0KKworICAgIC8vIEFycmF5
bGlrZSBvZiBlbGVtZW50cyAoalF1ZXJ5LCBhcmd1bWVudHMsIEFycmF5KQorICAgIGlmICggdHlw
ZW9mIHF1YWxpZmllciAhPT0gInN0cmluZyIgKSB7CisgICAgICAgIHJldHVybiBqUXVlcnkuZ3Jl
cCggZWxlbWVudHMsIGZ1bmN0aW9uKCBlbGVtICkgeworICAgICAgICAgICAgcmV0dXJuICggaW5k
ZXhPZi5jYWxsKCBxdWFsaWZpZXIsIGVsZW0gKSA+IC0xICkgIT09IG5vdDsKKyAgICAgICAgfSAp
OworICAgIH0KKworICAgIC8vIFNpbXBsZSBzZWxlY3RvciB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBk
aXJlY3RseSwgcmVtb3Zpbmcgbm9uLUVsZW1lbnRzCisgICAgaWYgKCByaXNTaW1wbGUudGVzdCgg
cXVhbGlmaWVyICkgKSB7CisgICAgICAgIHJldHVybiBqUXVlcnkuZmlsdGVyKCBxdWFsaWZpZXIs
IGVsZW1lbnRzLCBub3QgKTsKKyAgICB9CisKKyAgICAvLyBDb21wbGV4IHNlbGVjdG9yLCBjb21w
YXJlIHRoZSB0d28gc2V0cywgcmVtb3Zpbmcgbm9uLUVsZW1lbnRzCisgICAgcXVhbGlmaWVyID0g
alF1ZXJ5LmZpbHRlciggcXVhbGlmaWVyLCBlbGVtZW50cyApOworICAgIHJldHVybiBqUXVlcnku
Z3JlcCggZWxlbWVudHMsIGZ1bmN0aW9uKCBlbGVtICkgeworICAgICAgICByZXR1cm4gKCBpbmRl
eE9mLmNhbGwoIHF1YWxpZmllciwgZWxlbSApID4gLTEgKSAhPT0gbm90ICYmIGVsZW0ubm9kZVR5
cGUgPT09IDE7CisgICAgfSApOworfQorCitqUXVlcnkuZmlsdGVyID0gZnVuY3Rpb24oIGV4cHIs
IGVsZW1zLCBub3QgKSB7CisgICAgdmFyIGVsZW0gPSBlbGVtc1sgMCBdOworCisgICAgaWYgKCBu
b3QgKSB7CisgICAgICAgIGV4cHIgPSAiOm5vdCgiICsgZXhwciArICIpIjsKKyAgICB9CisKKyAg
ICBpZiAoIGVsZW1zLmxlbmd0aCA9PT0gMSAmJiBlbGVtLm5vZGVUeXBlID09PSAxICkgeworICAg
ICAgICByZXR1cm4galF1ZXJ5LmZpbmQubWF0Y2hlc1NlbGVjdG9yKCBlbGVtLCBleHByICkgPyBb
IGVsZW0gXSA6IFtdOworICAgIH0KKworICAgIHJldHVybiBqUXVlcnkuZmluZC5tYXRjaGVzKCBl
eHByLCBqUXVlcnkuZ3JlcCggZWxlbXMsIGZ1bmN0aW9uKCBlbGVtICkgeworICAgICAgICByZXR1
cm4gZWxlbS5ub2RlVHlwZSA9PT0gMTsKKyAgICB9ICkgKTsKK307CisKK2pRdWVyeS5mbi5leHRl
bmQoIHsKKyAgICBmaW5kOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7CisgICAgICAgIHZhciBpLCBy
ZXQsCisgICAgICAgICAgICBsZW4gPSB0aGlzLmxlbmd0aCwKKyAgICAgICAgICAgIHNlbGYgPSB0
aGlzOworCisgICAgICAgIGlmICggdHlwZW9mIHNlbGVjdG9yICE9PSAic3RyaW5nIiApIHsKKyAg
ICAgICAgICAgIHJldHVybiB0aGlzLnB1c2hTdGFjayggalF1ZXJ5KCBzZWxlY3RvciApLmZpbHRl
ciggZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgZm9yICggaSA9IDA7IGkgPCBsZW47IGkr
KyApIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCBqUXVlcnkuY29udGFpbnMoIHNlbGZbIGkg
XSwgdGhpcyApICkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9ICkgKTsK
KyAgICAgICAgfQorCisgICAgICAgIHJldCA9IHRoaXMucHVzaFN0YWNrKCBbXSApOworCisgICAg
ICAgIGZvciAoIGkgPSAwOyBpIDwgbGVuOyBpKysgKSB7CisgICAgICAgICAgICBqUXVlcnkuZmlu
ZCggc2VsZWN0b3IsIHNlbGZbIGkgXSwgcmV0ICk7CisgICAgICAgIH0KKworICAgICAgICByZXR1
cm4gbGVuID4gMSA/IGpRdWVyeS51bmlxdWVTb3J0KCByZXQgKSA6IHJldDsKKyAgICB9LAorICAg
IGZpbHRlcjogZnVuY3Rpb24oIHNlbGVjdG9yICkgeworICAgICAgICByZXR1cm4gdGhpcy5wdXNo
U3RhY2soIHdpbm5vdyggdGhpcywgc2VsZWN0b3IgfHwgW10sIGZhbHNlICkgKTsKKyAgICB9LAor
ICAgIG5vdDogZnVuY3Rpb24oIHNlbGVjdG9yICkgeworICAgICAgICByZXR1cm4gdGhpcy5wdXNo
U3RhY2soIHdpbm5vdyggdGhpcywgc2VsZWN0b3IgfHwgW10sIHRydWUgKSApOworICAgIH0sCisg
ICAgaXM6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHsKKyAgICAgICAgcmV0dXJuICEhd2lubm93KAor
ICAgICAgICAgICAgdGhpcywKKworICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIHBvc2l0aW9u
YWwvcmVsYXRpdmUgc2VsZWN0b3IsIGNoZWNrIG1lbWJlcnNoaXAgaW4gdGhlIHJldHVybmVkIHNl
dAorICAgICAgICAgICAgLy8gc28gJCgicDpmaXJzdCIpLmlzKCJwOmxhc3QiKSB3b24ndCByZXR1
cm4gdHJ1ZSBmb3IgYSBkb2Mgd2l0aCB0d28gInAiLgorICAgICAgICAgICAgdHlwZW9mIHNlbGVj
dG9yID09PSAic3RyaW5nIiAmJiBybmVlZHNDb250ZXh0LnRlc3QoIHNlbGVjdG9yICkgPworICAg
ICAgICAgICAgICAgIGpRdWVyeSggc2VsZWN0b3IgKSA6CisgICAgICAgICAgICAgICAgc2VsZWN0
b3IgfHwgW10sCisgICAgICAgICAgICBmYWxzZQorICAgICAgICApLmxlbmd0aDsKKyAgICB9Cit9
ICk7CisKKworLy8gSW5pdGlhbGl6ZSBhIGpRdWVyeSBvYmplY3QKKworCisvLyBBIGNlbnRyYWwg
cmVmZXJlbmNlIHRvIHRoZSByb290IGpRdWVyeShkb2N1bWVudCkKK3ZhciByb290alF1ZXJ5LAor
CisgICAgLy8gQSBzaW1wbGUgd2F5IHRvIGNoZWNrIGZvciBIVE1MIHN0cmluZ3MKKyAgICAvLyBQ
cmlvcml0aXplICNpZCBvdmVyIDx0YWc+IHRvIGF2b2lkIFhTUyB2aWEgbG9jYXRpb24uaGFzaCAo
Izk1MjEpCisgICAgLy8gU3RyaWN0IEhUTUwgcmVjb2duaXRpb24gKCMxMTI5MDogbXVzdCBzdGFy
dCB3aXRoIDwpCisgICAgLy8gU2hvcnRjdXQgc2ltcGxlICNpZCBjYXNlIGZvciBzcGVlZAorICAg
IHJxdWlja0V4cHIgPSAvXig/OlxzKig8W1x3XFddKz4pW14+XSp8IyhbXHctXSspKSQvLAorCisg
ICAgaW5pdCA9IGpRdWVyeS5mbi5pbml0ID0gZnVuY3Rpb24oIHNlbGVjdG9yLCBjb250ZXh0LCBy
b290ICkgeworICAgICAgICB2YXIgbWF0Y2gsIGVsZW07CisKKyAgICAgICAgLy8gSEFORExFOiAk
KCIiKSwgJChudWxsKSwgJCh1bmRlZmluZWQpLCAkKGZhbHNlKQorICAgICAgICBpZiAoICFzZWxl
Y3RvciApIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICB9CisKKyAgICAgICAg
Ly8gTWV0aG9kIGluaXQoKSBhY2NlcHRzIGFuIGFsdGVybmF0ZSByb290alF1ZXJ5CisgICAgICAg
IC8vIHNvIG1pZ3JhdGUgY2FuIHN1cHBvcnQgalF1ZXJ5LnN1YiAoZ2gtMjEwMSkKKyAgICAgICAg
cm9vdCA9IHJvb3QgfHwgcm9vdGpRdWVyeTsKKworICAgICAgICAvLyBIYW5kbGUgSFRNTCBzdHJp
bmdzCisgICAgICAgIGlmICggdHlwZW9mIHNlbGVjdG9yID09PSAic3RyaW5nIiApIHsKKyAgICAg
ICAgICAgIGlmICggc2VsZWN0b3JbIDAgXSA9PT0gIjwiICYmCisgICAgICAgICAgICAgICAgc2Vs
ZWN0b3JbIHNlbGVjdG9yLmxlbmd0aCAtIDEgXSA9PT0gIj4iICYmCisgICAgICAgICAgICAgICAg
c2VsZWN0b3IubGVuZ3RoID49IDMgKSB7CisKKyAgICAgICAgICAgICAgICAvLyBBc3N1bWUgdGhh
dCBzdHJpbmdzIHRoYXQgc3RhcnQgYW5kIGVuZCB3aXRoIDw+IGFyZSBIVE1MIGFuZCBza2lwIHRo
ZSByZWdleCBjaGVjaworICAgICAgICAgICAgICAgIG1hdGNoID0gWyBudWxsLCBzZWxlY3Rvciwg
bnVsbCBdOworCisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1hdGNoID0g
cnF1aWNrRXhwci5leGVjKCBzZWxlY3RvciApOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAvLyBNYXRjaCBodG1sIG9yIG1ha2Ugc3VyZSBubyBjb250ZXh0IGlzIHNwZWNpZmllZCBmb3Ig
I2lkCisgICAgICAgICAgICBpZiAoIG1hdGNoICYmICggbWF0Y2hbIDEgXSB8fCAhY29udGV4dCAp
ICkgeworCisgICAgICAgICAgICAgICAgLy8gSEFORExFOiAkKGh0bWwpIC0+ICQoYXJyYXkpCisg
ICAgICAgICAgICAgICAgaWYgKCBtYXRjaFsgMSBdICkgeworICAgICAgICAgICAgICAgICAgICBj
b250ZXh0ID0gY29udGV4dCBpbnN0YW5jZW9mIGpRdWVyeSA/IGNvbnRleHRbIDAgXSA6IGNvbnRl
eHQ7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gT3B0aW9uIHRvIHJ1biBzY3JpcHRzIGlzIHRy
dWUgZm9yIGJhY2stY29tcGF0CisgICAgICAgICAgICAgICAgICAgIC8vIEludGVudGlvbmFsbHkg
bGV0IHRoZSBlcnJvciBiZSB0aHJvd24gaWYgcGFyc2VIVE1MIGlzIG5vdCBwcmVzZW50CisgICAg
ICAgICAgICAgICAgICAgIGpRdWVyeS5tZXJnZSggdGhpcywgalF1ZXJ5LnBhcnNlSFRNTCgKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWyAxIF0sCisgICAgICAgICAgICAgICAgICAgICAg
ICBjb250ZXh0ICYmIGNvbnRleHQubm9kZVR5cGUgPyBjb250ZXh0Lm93bmVyRG9jdW1lbnQgfHwg
Y29udGV4dCA6IGRvY3VtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZQorICAgICAg
ICAgICAgICAgICAgICApICk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gSEFORExFOiAkKGh0
bWwsIHByb3BzKQorICAgICAgICAgICAgICAgICAgICBpZiAoIHJzaW5nbGVUYWcudGVzdCggbWF0
Y2hbIDEgXSApICYmIGpRdWVyeS5pc1BsYWluT2JqZWN0KCBjb250ZXh0ICkgKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBmb3IgKCBtYXRjaCBpbiBjb250ZXh0ICkgeworCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gUHJvcGVydGllcyBvZiBjb250ZXh0IGFyZSBjYWxsZWQgYXMg
bWV0aG9kcyBpZiBwb3NzaWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggalF1
ZXJ5LmlzRnVuY3Rpb24oIHRoaXNbIG1hdGNoIF0gKSApIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGhpc1sgbWF0Y2ggXSggY29udGV4dFsgbWF0Y2ggXSApOworCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gLi4uYW5kIG90aGVyd2lzZSBzZXQgYXMgYXR0cmlidXRl
cworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRoaXMuYXR0ciggbWF0Y2gsIGNvbnRleHRbIG1hdGNoIF0gKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsK
KworICAgICAgICAgICAgICAgIC8vIEhBTkRMRTogJCgjaWQpCisgICAgICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZWxlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCBtYXRjaFsgMiBdICk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKCBlbGVtICkgeworCisg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBJbmplY3QgdGhlIGVsZW1lbnQgZGlyZWN0bHkgaW50
byB0aGUgalF1ZXJ5IG9iamVjdAorICAgICAgICAgICAgICAgICAgICAgICAgdGhpc1sgMCBdID0g
ZWxlbTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGVuZ3RoID0gMTsKKyAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEhBTkRMRTogJChleHByLCAkKC4uLikpCisgICAg
ICAgICAgICB9IGVsc2UgaWYgKCAhY29udGV4dCB8fCBjb250ZXh0LmpxdWVyeSApIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gKCBjb250ZXh0IHx8IHJvb3QgKS5maW5kKCBzZWxlY3RvciApOwor
CisgICAgICAgICAgICAvLyBIQU5ETEU6ICQoZXhwciwgY29udGV4dCkKKyAgICAgICAgICAgIC8v
ICh3aGljaCBpcyBqdXN0IGVxdWl2YWxlbnQgdG86ICQoY29udGV4dCkuZmluZChleHByKQorICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb25zdHJ1Y3Rv
ciggY29udGV4dCApLmZpbmQoIHNlbGVjdG9yICk7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
Ly8gSEFORExFOiAkKERPTUVsZW1lbnQpCisgICAgICAgIH0gZWxzZSBpZiAoIHNlbGVjdG9yLm5v
ZGVUeXBlICkgeworICAgICAgICAgICAgdGhpc1sgMCBdID0gc2VsZWN0b3I7CisgICAgICAgICAg
ICB0aGlzLmxlbmd0aCA9IDE7CisgICAgICAgICAgICByZXR1cm4gdGhpczsKKworICAgICAgICAv
LyBIQU5ETEU6ICQoZnVuY3Rpb24pCisgICAgICAgIC8vIFNob3J0Y3V0IGZvciBkb2N1bWVudCBy
ZWFkeQorICAgICAgICB9IGVsc2UgaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggc2VsZWN0b3IgKSAp
IHsKKyAgICAgICAgICAgIHJldHVybiByb290LnJlYWR5ICE9PSB1bmRlZmluZWQgPworICAgICAg
ICAgICAgICAgIHJvb3QucmVhZHkoIHNlbGVjdG9yICkgOgorCisgICAgICAgICAgICAgICAgLy8g
RXhlY3V0ZSBpbW1lZGlhdGVseSBpZiByZWFkeSBpcyBub3QgcHJlc2VudAorICAgICAgICAgICAg
ICAgIHNlbGVjdG9yKCBqUXVlcnkgKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBqUXVl
cnkubWFrZUFycmF5KCBzZWxlY3RvciwgdGhpcyApOworICAgIH07CisKKy8vIEdpdmUgdGhlIGlu
aXQgZnVuY3Rpb24gdGhlIGpRdWVyeSBwcm90b3R5cGUgZm9yIGxhdGVyIGluc3RhbnRpYXRpb24K
K2luaXQucHJvdG90eXBlID0galF1ZXJ5LmZuOworCisvLyBJbml0aWFsaXplIGNlbnRyYWwgcmVm
ZXJlbmNlCityb290alF1ZXJ5ID0galF1ZXJ5KCBkb2N1bWVudCApOworCisKK3ZhciBycGFyZW50
c3ByZXYgPSAvXig/OnBhcmVudHN8cHJldig/OlVudGlsfEFsbCkpLywKKworICAgIC8vIE1ldGhv
ZHMgZ3VhcmFudGVlZCB0byBwcm9kdWNlIGEgdW5pcXVlIHNldCB3aGVuIHN0YXJ0aW5nIGZyb20g
YSB1bmlxdWUgc2V0CisgICAgZ3VhcmFudGVlZFVuaXF1ZSA9IHsKKyAgICAgICAgY2hpbGRyZW46
IHRydWUsCisgICAgICAgIGNvbnRlbnRzOiB0cnVlLAorICAgICAgICBuZXh0OiB0cnVlLAorICAg
ICAgICBwcmV2OiB0cnVlCisgICAgfTsKKworalF1ZXJ5LmZuLmV4dGVuZCggeworICAgIGhhczog
ZnVuY3Rpb24oIHRhcmdldCApIHsKKyAgICAgICAgdmFyIHRhcmdldHMgPSBqUXVlcnkoIHRhcmdl
dCwgdGhpcyApLAorICAgICAgICAgICAgbCA9IHRhcmdldHMubGVuZ3RoOworCisgICAgICAgIHJl
dHVybiB0aGlzLmZpbHRlciggZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB2YXIgaSA9IDA7Cisg
ICAgICAgICAgICBmb3IgKCA7IGkgPCBsOyBpKysgKSB7CisgICAgICAgICAgICAgICAgaWYgKCBq
UXVlcnkuY29udGFpbnMoIHRoaXMsIHRhcmdldHNbIGkgXSApICkgeworICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAg
ICAgIH0gKTsKKyAgICB9LAorCisgICAgY2xvc2VzdDogZnVuY3Rpb24oIHNlbGVjdG9ycywgY29u
dGV4dCApIHsKKyAgICAgICAgdmFyIGN1ciwKKyAgICAgICAgICAgIGkgPSAwLAorICAgICAgICAg
ICAgbCA9IHRoaXMubGVuZ3RoLAorICAgICAgICAgICAgbWF0Y2hlZCA9IFtdLAorICAgICAgICAg
ICAgdGFyZ2V0cyA9IHR5cGVvZiBzZWxlY3RvcnMgIT09ICJzdHJpbmciICYmIGpRdWVyeSggc2Vs
ZWN0b3JzICk7CisKKyAgICAgICAgLy8gUG9zaXRpb25hbCBzZWxlY3RvcnMgbmV2ZXIgbWF0Y2gs
IHNpbmNlIHRoZXJlJ3Mgbm8gX3NlbGVjdGlvbl8gY29udGV4dAorICAgICAgICBpZiAoICFybmVl
ZHNDb250ZXh0LnRlc3QoIHNlbGVjdG9ycyApICkgeworICAgICAgICAgICAgZm9yICggOyBpIDwg
bDsgaSsrICkgeworICAgICAgICAgICAgICAgIGZvciAoIGN1ciA9IHRoaXNbIGkgXTsgY3VyICYm
IGN1ciAhPT0gY29udGV4dDsgY3VyID0gY3VyLnBhcmVudE5vZGUgKSB7CisKKyAgICAgICAgICAg
ICAgICAgICAgLy8gQWx3YXlzIHNraXAgZG9jdW1lbnQgZnJhZ21lbnRzCisgICAgICAgICAgICAg
ICAgICAgIGlmICggY3VyLm5vZGVUeXBlIDwgMTEgJiYgKCB0YXJnZXRzID8KKyAgICAgICAgICAg
ICAgICAgICAgICAgIHRhcmdldHMuaW5kZXgoIGN1ciApID4gLTEgOgorCisgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBEb24ndCBwYXNzIG5vbi1lbGVtZW50cyB0byBTaXp6bGUKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGN1ci5ub2RlVHlwZSA9PT0gMSAmJgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGpRdWVyeS5maW5kLm1hdGNoZXNTZWxlY3RvciggY3VyLCBzZWxlY3RvcnMgKSAp
ICkgeworCisgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVkLnB1c2goIGN1ciApOworICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4g
dGhpcy5wdXNoU3RhY2soIG1hdGNoZWQubGVuZ3RoID4gMSA/IGpRdWVyeS51bmlxdWVTb3J0KCBt
YXRjaGVkICkgOiBtYXRjaGVkICk7CisgICAgfSwKKworICAgIC8vIERldGVybWluZSB0aGUgcG9z
aXRpb24gb2YgYW4gZWxlbWVudCB3aXRoaW4gdGhlIHNldAorICAgIGluZGV4OiBmdW5jdGlvbigg
ZWxlbSApIHsKKworICAgICAgICAvLyBObyBhcmd1bWVudCwgcmV0dXJuIGluZGV4IGluIHBhcmVu
dAorICAgICAgICBpZiAoICFlbGVtICkgeworICAgICAgICAgICAgcmV0dXJuICggdGhpc1sgMCBd
ICYmIHRoaXNbIDAgXS5wYXJlbnROb2RlICkgPyB0aGlzLmZpcnN0KCkucHJldkFsbCgpLmxlbmd0
aCA6IC0xOworICAgICAgICB9CisKKyAgICAgICAgLy8gSW5kZXggaW4gc2VsZWN0b3IKKyAgICAg
ICAgaWYgKCB0eXBlb2YgZWxlbSA9PT0gInN0cmluZyIgKSB7CisgICAgICAgICAgICByZXR1cm4g
aW5kZXhPZi5jYWxsKCBqUXVlcnkoIGVsZW0gKSwgdGhpc1sgMCBdICk7CisgICAgICAgIH0KKwor
ICAgICAgICAvLyBMb2NhdGUgdGhlIHBvc2l0aW9uIG9mIHRoZSBkZXNpcmVkIGVsZW1lbnQKKyAg
ICAgICAgcmV0dXJuIGluZGV4T2YuY2FsbCggdGhpcywKKworICAgICAgICAgICAgLy8gSWYgaXQg
cmVjZWl2ZXMgYSBqUXVlcnkgb2JqZWN0LCB0aGUgZmlyc3QgZWxlbWVudCBpcyB1c2VkCisgICAg
ICAgICAgICBlbGVtLmpxdWVyeSA/IGVsZW1bIDAgXSA6IGVsZW0KKyAgICAgICAgKTsKKyAgICB9
LAorCisgICAgYWRkOiBmdW5jdGlvbiggc2VsZWN0b3IsIGNvbnRleHQgKSB7CisgICAgICAgIHJl
dHVybiB0aGlzLnB1c2hTdGFjaygKKyAgICAgICAgICAgIGpRdWVyeS51bmlxdWVTb3J0KAorICAg
ICAgICAgICAgICAgIGpRdWVyeS5tZXJnZSggdGhpcy5nZXQoKSwgalF1ZXJ5KCBzZWxlY3Rvciwg
Y29udGV4dCApICkKKyAgICAgICAgICAgICkKKyAgICAgICAgKTsKKyAgICB9LAorCisgICAgYWRk
QmFjazogZnVuY3Rpb24oIHNlbGVjdG9yICkgeworICAgICAgICByZXR1cm4gdGhpcy5hZGQoIHNl
bGVjdG9yID09IG51bGwgPworICAgICAgICAgICAgdGhpcy5wcmV2T2JqZWN0IDogdGhpcy5wcmV2
T2JqZWN0LmZpbHRlciggc2VsZWN0b3IgKQorICAgICAgICApOworICAgIH0KK30gKTsKKworZnVu
Y3Rpb24gc2libGluZyggY3VyLCBkaXIgKSB7CisgICAgd2hpbGUgKCAoIGN1ciA9IGN1clsgZGly
IF0gKSAmJiBjdXIubm9kZVR5cGUgIT09IDEgKSB7fQorICAgIHJldHVybiBjdXI7Cit9CisKK2pR
dWVyeS5lYWNoKCB7CisgICAgcGFyZW50OiBmdW5jdGlvbiggZWxlbSApIHsKKyAgICAgICAgdmFy
IHBhcmVudCA9IGVsZW0ucGFyZW50Tm9kZTsKKyAgICAgICAgcmV0dXJuIHBhcmVudCAmJiBwYXJl
bnQubm9kZVR5cGUgIT09IDExID8gcGFyZW50IDogbnVsbDsKKyAgICB9LAorICAgIHBhcmVudHM6
IGZ1bmN0aW9uKCBlbGVtICkgeworICAgICAgICByZXR1cm4gZGlyKCBlbGVtLCAicGFyZW50Tm9k
ZSIgKTsKKyAgICB9LAorICAgIHBhcmVudHNVbnRpbDogZnVuY3Rpb24oIGVsZW0sIGksIHVudGls
ICkgeworICAgICAgICByZXR1cm4gZGlyKCBlbGVtLCAicGFyZW50Tm9kZSIsIHVudGlsICk7Cisg
ICAgfSwKKyAgICBuZXh0OiBmdW5jdGlvbiggZWxlbSApIHsKKyAgICAgICAgcmV0dXJuIHNpYmxp
bmcoIGVsZW0sICJuZXh0U2libGluZyIgKTsKKyAgICB9LAorICAgIHByZXY6IGZ1bmN0aW9uKCBl
bGVtICkgeworICAgICAgICByZXR1cm4gc2libGluZyggZWxlbSwgInByZXZpb3VzU2libGluZyIg
KTsKKyAgICB9LAorICAgIG5leHRBbGw6IGZ1bmN0aW9uKCBlbGVtICkgeworICAgICAgICByZXR1
cm4gZGlyKCBlbGVtLCAibmV4dFNpYmxpbmciICk7CisgICAgfSwKKyAgICBwcmV2QWxsOiBmdW5j
dGlvbiggZWxlbSApIHsKKyAgICAgICAgcmV0dXJuIGRpciggZWxlbSwgInByZXZpb3VzU2libGlu
ZyIgKTsKKyAgICB9LAorICAgIG5leHRVbnRpbDogZnVuY3Rpb24oIGVsZW0sIGksIHVudGlsICkg
eworICAgICAgICByZXR1cm4gZGlyKCBlbGVtLCAibmV4dFNpYmxpbmciLCB1bnRpbCApOworICAg
IH0sCisgICAgcHJldlVudGlsOiBmdW5jdGlvbiggZWxlbSwgaSwgdW50aWwgKSB7CisgICAgICAg
IHJldHVybiBkaXIoIGVsZW0sICJwcmV2aW91c1NpYmxpbmciLCB1bnRpbCApOworICAgIH0sCisg
ICAgc2libGluZ3M6IGZ1bmN0aW9uKCBlbGVtICkgeworICAgICAgICByZXR1cm4gc2libGluZ3Mo
ICggZWxlbS5wYXJlbnROb2RlIHx8IHt9ICkuZmlyc3RDaGlsZCwgZWxlbSApOworICAgIH0sCisg
ICAgY2hpbGRyZW46IGZ1bmN0aW9uKCBlbGVtICkgeworICAgICAgICByZXR1cm4gc2libGluZ3Mo
IGVsZW0uZmlyc3RDaGlsZCApOworICAgIH0sCisgICAgY29udGVudHM6IGZ1bmN0aW9uKCBlbGVt
ICkgeworICAgICAgICByZXR1cm4gZWxlbS5jb250ZW50RG9jdW1lbnQgfHwgalF1ZXJ5Lm1lcmdl
KCBbXSwgZWxlbS5jaGlsZE5vZGVzICk7CisgICAgfQorfSwgZnVuY3Rpb24oIG5hbWUsIGZuICkg
eworICAgIGpRdWVyeS5mblsgbmFtZSBdID0gZnVuY3Rpb24oIHVudGlsLCBzZWxlY3RvciApIHsK
KyAgICAgICAgdmFyIG1hdGNoZWQgPSBqUXVlcnkubWFwKCB0aGlzLCBmbiwgdW50aWwgKTsKKwor
ICAgICAgICBpZiAoIG5hbWUuc2xpY2UoIC01ICkgIT09ICJVbnRpbCIgKSB7CisgICAgICAgICAg
ICBzZWxlY3RvciA9IHVudGlsOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCBzZWxlY3RvciAm
JiB0eXBlb2Ygc2VsZWN0b3IgPT09ICJzdHJpbmciICkgeworICAgICAgICAgICAgbWF0Y2hlZCA9
IGpRdWVyeS5maWx0ZXIoIHNlbGVjdG9yLCBtYXRjaGVkICk7CisgICAgICAgIH0KKworICAgICAg
ICBpZiAoIHRoaXMubGVuZ3RoID4gMSApIHsKKworICAgICAgICAgICAgLy8gUmVtb3ZlIGR1cGxp
Y2F0ZXMKKyAgICAgICAgICAgIGlmICggIWd1YXJhbnRlZWRVbmlxdWVbIG5hbWUgXSApIHsKKyAg
ICAgICAgICAgICAgICBqUXVlcnkudW5pcXVlU29ydCggbWF0Y2hlZCApOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAvLyBSZXZlcnNlIG9yZGVyIGZvciBwYXJlbnRzKiBhbmQgcHJldi1k
ZXJpdmF0aXZlcworICAgICAgICAgICAgaWYgKCBycGFyZW50c3ByZXYudGVzdCggbmFtZSApICkg
eworICAgICAgICAgICAgICAgIG1hdGNoZWQucmV2ZXJzZSgpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisKKyAgICAgICAgcmV0dXJuIHRoaXMucHVzaFN0YWNrKCBtYXRjaGVkICk7CisgICAg
fTsKK30gKTsKK3ZhciBybm90aHRtbHdoaXRlID0gKCAvW15ceDIwXHRcclxuXGZdKy9nICk7CisK
KworCisvLyBDb252ZXJ0IFN0cmluZy1mb3JtYXR0ZWQgb3B0aW9ucyBpbnRvIE9iamVjdC1mb3Jt
YXR0ZWQgb25lcworZnVuY3Rpb24gY3JlYXRlT3B0aW9ucyggb3B0aW9ucyApIHsKKyAgICB2YXIg
b2JqZWN0ID0ge307CisgICAgalF1ZXJ5LmVhY2goIG9wdGlvbnMubWF0Y2goIHJub3RodG1sd2hp
dGUgKSB8fCBbXSwgZnVuY3Rpb24oIF8sIGZsYWcgKSB7CisgICAgICAgIG9iamVjdFsgZmxhZyBd
ID0gdHJ1ZTsKKyAgICB9ICk7CisgICAgcmV0dXJuIG9iamVjdDsKK30KKworLyoKKyAqIENyZWF0
ZSBhIGNhbGxiYWNrIGxpc3QgdXNpbmcgdGhlIGZvbGxvd2luZyBwYXJhbWV0ZXJzOgorICoKKyAq
ICBvcHRpb25zOiBhbiBvcHRpb25hbCBsaXN0IG9mIHNwYWNlLXNlcGFyYXRlZCBvcHRpb25zIHRo
YXQgd2lsbCBjaGFuZ2UgaG93CisgKiAgICAgICAgICB0aGUgY2FsbGJhY2sgbGlzdCBiZWhhdmVz
IG9yIGEgbW9yZSB0cmFkaXRpb25hbCBvcHRpb24gb2JqZWN0CisgKgorICogQnkgZGVmYXVsdCBh
IGNhbGxiYWNrIGxpc3Qgd2lsbCBhY3QgbGlrZSBhbiBldmVudCBjYWxsYmFjayBsaXN0IGFuZCBj
YW4gYmUKKyAqICJmaXJlZCIgbXVsdGlwbGUgdGltZXMuCisgKgorICogUG9zc2libGUgb3B0aW9u
czoKKyAqCisgKiAgb25jZTogICAgICAgICAgIHdpbGwgZW5zdXJlIHRoZSBjYWxsYmFjayBsaXN0
IGNhbiBvbmx5IGJlIGZpcmVkIG9uY2UgKGxpa2UgYSBEZWZlcnJlZCkKKyAqCisgKiAgbWVtb3J5
OiAgICAgICAgIHdpbGwga2VlcCB0cmFjayBvZiBwcmV2aW91cyB2YWx1ZXMgYW5kIHdpbGwgY2Fs
bCBhbnkgY2FsbGJhY2sgYWRkZWQKKyAqICAgICAgICAgICAgICAgICAgYWZ0ZXIgdGhlIGxpc3Qg
aGFzIGJlZW4gZmlyZWQgcmlnaHQgYXdheSB3aXRoIHRoZSBsYXRlc3QgIm1lbW9yaXplZCIKKyAq
ICAgICAgICAgICAgICAgICAgdmFsdWVzIChsaWtlIGEgRGVmZXJyZWQpCisgKgorICogIHVuaXF1
ZTogICAgICAgICB3aWxsIGVuc3VyZSBhIGNhbGxiYWNrIGNhbiBvbmx5IGJlIGFkZGVkIG9uY2Ug
KG5vIGR1cGxpY2F0ZSBpbiB0aGUgbGlzdCkKKyAqCisgKiAgc3RvcE9uRmFsc2U6ICAgIGludGVy
cnVwdCBjYWxsaW5ncyB3aGVuIGEgY2FsbGJhY2sgcmV0dXJucyBmYWxzZQorICoKKyAqLworalF1
ZXJ5LkNhbGxiYWNrcyA9IGZ1bmN0aW9uKCBvcHRpb25zICkgeworCisgICAgLy8gQ29udmVydCBv
cHRpb25zIGZyb20gU3RyaW5nLWZvcm1hdHRlZCB0byBPYmplY3QtZm9ybWF0dGVkIGlmIG5lZWRl
ZAorICAgIC8vICh3ZSBjaGVjayBpbiBjYWNoZSBmaXJzdCkKKyAgICBvcHRpb25zID0gdHlwZW9m
IG9wdGlvbnMgPT09ICJzdHJpbmciID8KKyAgICAgICAgY3JlYXRlT3B0aW9ucyggb3B0aW9ucyAp
IDoKKyAgICAgICAgalF1ZXJ5LmV4dGVuZCgge30sIG9wdGlvbnMgKTsKKworICAgIHZhciAvLyBG
bGFnIHRvIGtub3cgaWYgbGlzdCBpcyBjdXJyZW50bHkgZmlyaW5nCisgICAgICAgIGZpcmluZywK
KworICAgICAgICAvLyBMYXN0IGZpcmUgdmFsdWUgZm9yIG5vbi1mb3JnZXR0YWJsZSBsaXN0cwor
ICAgICAgICBtZW1vcnksCisKKyAgICAgICAgLy8gRmxhZyB0byBrbm93IGlmIGxpc3Qgd2FzIGFs
cmVhZHkgZmlyZWQKKyAgICAgICAgZmlyZWQsCisKKyAgICAgICAgLy8gRmxhZyB0byBwcmV2ZW50
IGZpcmluZworICAgICAgICBsb2NrZWQsCisKKyAgICAgICAgLy8gQWN0dWFsIGNhbGxiYWNrIGxp
c3QKKyAgICAgICAgbGlzdCA9IFtdLAorCisgICAgICAgIC8vIFF1ZXVlIG9mIGV4ZWN1dGlvbiBk
YXRhIGZvciByZXBlYXRhYmxlIGxpc3RzCisgICAgICAgIHF1ZXVlID0gW10sCisKKyAgICAgICAg
Ly8gSW5kZXggb2YgY3VycmVudGx5IGZpcmluZyBjYWxsYmFjayAobW9kaWZpZWQgYnkgYWRkL3Jl
bW92ZSBhcyBuZWVkZWQpCisgICAgICAgIGZpcmluZ0luZGV4ID0gLTEsCisKKyAgICAgICAgLy8g
RmlyZSBjYWxsYmFja3MKKyAgICAgICAgZmlyZSA9IGZ1bmN0aW9uKCkgeworCisgICAgICAgICAg
ICAvLyBFbmZvcmNlIHNpbmdsZS1maXJpbmcKKyAgICAgICAgICAgIGxvY2tlZCA9IG9wdGlvbnMu
b25jZTsKKworICAgICAgICAgICAgLy8gRXhlY3V0ZSBjYWxsYmFja3MgZm9yIGFsbCBwZW5kaW5n
IGV4ZWN1dGlvbnMsCisgICAgICAgICAgICAvLyByZXNwZWN0aW5nIGZpcmluZ0luZGV4IG92ZXJy
aWRlcyBhbmQgcnVudGltZSBjaGFuZ2VzCisgICAgICAgICAgICBmaXJlZCA9IGZpcmluZyA9IHRy
dWU7CisgICAgICAgICAgICBmb3IgKCA7IHF1ZXVlLmxlbmd0aDsgZmlyaW5nSW5kZXggPSAtMSAp
IHsKKyAgICAgICAgICAgICAgICBtZW1vcnkgPSBxdWV1ZS5zaGlmdCgpOworICAgICAgICAgICAg
ICAgIHdoaWxlICggKytmaXJpbmdJbmRleCA8IGxpc3QubGVuZ3RoICkgeworCisgICAgICAgICAg
ICAgICAgICAgIC8vIFJ1biBjYWxsYmFjayBhbmQgY2hlY2sgZm9yIGVhcmx5IHRlcm1pbmF0aW9u
CisgICAgICAgICAgICAgICAgICAgIGlmICggbGlzdFsgZmlyaW5nSW5kZXggXS5hcHBseSggbWVt
b3J5WyAwIF0sIG1lbW9yeVsgMSBdICkgPT09IGZhbHNlICYmCisgICAgICAgICAgICAgICAgICAg
ICAgICBvcHRpb25zLnN0b3BPbkZhbHNlICkgeworCisgICAgICAgICAgICAgICAgICAgICAgICAv
LyBKdW1wIHRvIGVuZCBhbmQgZm9yZ2V0IHRoZSBkYXRhIHNvIC5hZGQgZG9lc24ndCByZS1maXJl
CisgICAgICAgICAgICAgICAgICAgICAgICBmaXJpbmdJbmRleCA9IGxpc3QubGVuZ3RoOworICAg
ICAgICAgICAgICAgICAgICAgICAgbWVtb3J5ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEZv
cmdldCB0aGUgZGF0YSBpZiB3ZSdyZSBkb25lIHdpdGggaXQKKyAgICAgICAgICAgIGlmICggIW9w
dGlvbnMubWVtb3J5ICkgeworICAgICAgICAgICAgICAgIG1lbW9yeSA9IGZhbHNlOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBmaXJpbmcgPSBmYWxzZTsKKworICAgICAgICAgICAgLy8g
Q2xlYW4gdXAgaWYgd2UncmUgZG9uZSBmaXJpbmcgZm9yIGdvb2QKKyAgICAgICAgICAgIGlmICgg
bG9ja2VkICkgeworCisgICAgICAgICAgICAgICAgLy8gS2VlcCBhbiBlbXB0eSBsaXN0IGlmIHdl
IGhhdmUgZGF0YSBmb3IgZnV0dXJlIGFkZCBjYWxscworICAgICAgICAgICAgICAgIGlmICggbWVt
b3J5ICkgeworICAgICAgICAgICAgICAgICAgICBsaXN0ID0gW107CisKKyAgICAgICAgICAgICAg
ICAvLyBPdGhlcndpc2UsIHRoaXMgb2JqZWN0IGlzIHNwZW50CisgICAgICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICAgICAgbGlzdCA9ICIiOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKworICAgICAgICAvLyBBY3R1YWwgQ2FsbGJhY2tz
IG9iamVjdAorICAgICAgICBzZWxmID0geworCisgICAgICAgICAgICAvLyBBZGQgYSBjYWxsYmFj
ayBvciBhIGNvbGxlY3Rpb24gb2YgY2FsbGJhY2tzIHRvIHRoZSBsaXN0CisgICAgICAgICAgICBh
ZGQ6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGlmICggbGlzdCApIHsKKworICAgICAg
ICAgICAgICAgICAgICAvLyBJZiB3ZSBoYXZlIG1lbW9yeSBmcm9tIGEgcGFzdCBydW4sIHdlIHNo
b3VsZCBmaXJlIGFmdGVyIGFkZGluZworICAgICAgICAgICAgICAgICAgICBpZiAoIG1lbW9yeSAm
JiAhZmlyaW5nICkgeworICAgICAgICAgICAgICAgICAgICAgICAgZmlyaW5nSW5kZXggPSBsaXN0
Lmxlbmd0aCAtIDE7CisgICAgICAgICAgICAgICAgICAgICAgICBxdWV1ZS5wdXNoKCBtZW1vcnkg
KTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICggZnVuY3Rp
b24gYWRkKCBhcmdzICkgeworICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmVhY2goIGFy
Z3MsIGZ1bmN0aW9uKCBfLCBhcmcgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCBqUXVlcnkuaXNGdW5jdGlvbiggYXJnICkgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICggIW9wdGlvbnMudW5pcXVlIHx8ICFzZWxmLmhhcyggYXJnICkgKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0LnB1c2goIGFyZyApOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIGlmICggYXJnICYmIGFyZy5sZW5ndGggJiYgalF1ZXJ5LnR5cGUoIGFyZyApICE9PSAi
c3RyaW5nIiApIHsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJbnNwZWN0
IHJlY3Vyc2l2ZWx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZCggYXJnICk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAg
fSApOworICAgICAgICAgICAgICAgICAgICB9ICkoIGFyZ3VtZW50cyApOworCisgICAgICAgICAg
ICAgICAgICAgIGlmICggbWVtb3J5ICYmICFmaXJpbmcgKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBmaXJlKCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgICAgICB9LAorCisgICAgICAgICAg
ICAvLyBSZW1vdmUgYSBjYWxsYmFjayBmcm9tIHRoZSBsaXN0CisgICAgICAgICAgICByZW1vdmU6
IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGpRdWVyeS5lYWNoKCBhcmd1bWVudHMsIGZ1
bmN0aW9uKCBfLCBhcmcgKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBpbmRleDsKKyAgICAg
ICAgICAgICAgICAgICAgd2hpbGUgKCAoIGluZGV4ID0galF1ZXJ5LmluQXJyYXkoIGFyZywgbGlz
dCwgaW5kZXggKSApID4gLTEgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBsaXN0LnNwbGlj
ZSggaW5kZXgsIDEgKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgLy8gSGFuZGxlIGZpcmlu
ZyBpbmRleGVzCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGluZGV4IDw9IGZpcmluZ0lu
ZGV4ICkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcmluZ0luZGV4LS07CisgICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB9ICk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgICAgICB9LAor
CisgICAgICAgICAgICAvLyBDaGVjayBpZiBhIGdpdmVuIGNhbGxiYWNrIGlzIGluIHRoZSBsaXN0
LgorICAgICAgICAgICAgLy8gSWYgbm8gYXJndW1lbnQgaXMgZ2l2ZW4sIHJldHVybiB3aGV0aGVy
IG9yIG5vdCBsaXN0IGhhcyBjYWxsYmFja3MgYXR0YWNoZWQuCisgICAgICAgICAgICBoYXM6IGZ1
bmN0aW9uKCBmbiApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZm4gPworICAgICAgICAgICAg
ICAgICAgICBqUXVlcnkuaW5BcnJheSggZm4sIGxpc3QgKSA+IC0xIDoKKyAgICAgICAgICAgICAg
ICAgICAgbGlzdC5sZW5ndGggPiAwOworICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgLy8g
UmVtb3ZlIGFsbCBjYWxsYmFja3MgZnJvbSB0aGUgbGlzdAorICAgICAgICAgICAgZW1wdHk6IGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGlmICggbGlzdCApIHsKKyAgICAgICAgICAgICAg
ICAgICAgbGlzdCA9IFtdOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1
cm4gdGhpczsKKyAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgIC8vIERpc2FibGUgLmZpcmUg
YW5kIC5hZGQKKyAgICAgICAgICAgIC8vIEFib3J0IGFueSBjdXJyZW50L3BlbmRpbmcgZXhlY3V0
aW9ucworICAgICAgICAgICAgLy8gQ2xlYXIgYWxsIGNhbGxiYWNrcyBhbmQgdmFsdWVzCisgICAg
ICAgICAgICBkaXNhYmxlOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBsb2NrZWQgPSBx
dWV1ZSA9IFtdOworICAgICAgICAgICAgICAgIGxpc3QgPSBtZW1vcnkgPSAiIjsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBkaXNhYmxl
ZDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuICFsaXN0OworICAgICAgICAg
ICAgfSwKKworICAgICAgICAgICAgLy8gRGlzYWJsZSAuZmlyZQorICAgICAgICAgICAgLy8gQWxz
byBkaXNhYmxlIC5hZGQgdW5sZXNzIHdlIGhhdmUgbWVtb3J5IChzaW5jZSBpdCB3b3VsZCBoYXZl
IG5vIGVmZmVjdCkKKyAgICAgICAgICAgIC8vIEFib3J0IGFueSBwZW5kaW5nIGV4ZWN1dGlvbnMK
KyAgICAgICAgICAgIGxvY2s6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGxvY2tlZCA9
IHF1ZXVlID0gW107CisgICAgICAgICAgICAgICAgaWYgKCAhbWVtb3J5ICYmICFmaXJpbmcgKSB7
CisgICAgICAgICAgICAgICAgICAgIGxpc3QgPSBtZW1vcnkgPSAiIjsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgICAgICB9LAorICAgICAg
ICAgICAgbG9ja2VkOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gISFsb2Nr
ZWQ7CisgICAgICAgICAgICB9LAorCisgICAgICAgICAgICAvLyBDYWxsIGFsbCBjYWxsYmFja3Mg
d2l0aCB0aGUgZ2l2ZW4gY29udGV4dCBhbmQgYXJndW1lbnRzCisgICAgICAgICAgICBmaXJlV2l0
aDogZnVuY3Rpb24oIGNvbnRleHQsIGFyZ3MgKSB7CisgICAgICAgICAgICAgICAgaWYgKCAhbG9j
a2VkICkgeworICAgICAgICAgICAgICAgICAgICBhcmdzID0gYXJncyB8fCBbXTsKKyAgICAgICAg
ICAgICAgICAgICAgYXJncyA9IFsgY29udGV4dCwgYXJncy5zbGljZSA/IGFyZ3Muc2xpY2UoKSA6
IGFyZ3MgXTsKKyAgICAgICAgICAgICAgICAgICAgcXVldWUucHVzaCggYXJncyApOworICAgICAg
ICAgICAgICAgICAgICBpZiAoICFmaXJpbmcgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBm
aXJlKCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgICAgICB9LAorCisgICAgICAgICAgICAvLyBD
YWxsIGFsbCB0aGUgY2FsbGJhY2tzIHdpdGggdGhlIGdpdmVuIGFyZ3VtZW50cworICAgICAgICAg
ICAgZmlyZTogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgc2VsZi5maXJlV2l0aCggdGhp
cywgYXJndW1lbnRzICk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgICAg
ICB9LAorCisgICAgICAgICAgICAvLyBUbyBrbm93IGlmIHRoZSBjYWxsYmFja3MgaGF2ZSBhbHJl
YWR5IGJlZW4gY2FsbGVkIGF0IGxlYXN0IG9uY2UKKyAgICAgICAgICAgIGZpcmVkOiBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gISFmaXJlZDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfTsKKworICAgIHJldHVybiBzZWxmOworfTsKKworCitmdW5jdGlvbiBJZGVudGl0eSgg
diApIHsKKyAgICByZXR1cm4gdjsKK30KK2Z1bmN0aW9uIFRocm93ZXIoIGV4ICkgeworICAgIHRo
cm93IGV4OworfQorCitmdW5jdGlvbiBhZG9wdFZhbHVlKCB2YWx1ZSwgcmVzb2x2ZSwgcmVqZWN0
ICkgeworICAgIHZhciBtZXRob2Q7CisKKyAgICB0cnkgeworCisgICAgICAgIC8vIENoZWNrIGZv
ciBwcm9taXNlIGFzcGVjdCBmaXJzdCB0byBwcml2aWxlZ2Ugc3luY2hyb25vdXMgYmVoYXZpb3IK
KyAgICAgICAgaWYgKCB2YWx1ZSAmJiBqUXVlcnkuaXNGdW5jdGlvbiggKCBtZXRob2QgPSB2YWx1
ZS5wcm9taXNlICkgKSApIHsKKyAgICAgICAgICAgIG1ldGhvZC5jYWxsKCB2YWx1ZSApLmRvbmUo
IHJlc29sdmUgKS5mYWlsKCByZWplY3QgKTsKKworICAgICAgICAvLyBPdGhlciB0aGVuYWJsZXMK
KyAgICAgICAgfSBlbHNlIGlmICggdmFsdWUgJiYgalF1ZXJ5LmlzRnVuY3Rpb24oICggbWV0aG9k
ID0gdmFsdWUudGhlbiApICkgKSB7CisgICAgICAgICAgICBtZXRob2QuY2FsbCggdmFsdWUsIHJl
c29sdmUsIHJlamVjdCApOworCisgICAgICAgIC8vIE90aGVyIG5vbi10aGVuYWJsZXMKKyAgICAg
ICAgfSBlbHNlIHsKKworICAgICAgICAgICAgLy8gU3VwcG9ydDogQW5kcm9pZCA0LjAgb25seQor
ICAgICAgICAgICAgLy8gU3RyaWN0IG1vZGUgZnVuY3Rpb25zIGludm9rZWQgd2l0aG91dCAuY2Fs
bC8uYXBwbHkgZ2V0IGdsb2JhbC1vYmplY3QgY29udGV4dAorICAgICAgICAgICAgcmVzb2x2ZS5j
YWxsKCB1bmRlZmluZWQsIHZhbHVlICk7CisgICAgICAgIH0KKworICAgIC8vIEZvciBQcm9taXNl
cy9BKywgY29udmVydCBleGNlcHRpb25zIGludG8gcmVqZWN0aW9ucworICAgIC8vIFNpbmNlIGpR
dWVyeS53aGVuIGRvZXNuJ3QgdW53cmFwIHRoZW5hYmxlcywgd2UgY2FuIHNraXAgdGhlIGV4dHJh
IGNoZWNrcyBhcHBlYXJpbmcgaW4KKyAgICAvLyBEZWZlcnJlZCN0aGVuIHRvIGNvbmRpdGlvbmFs
bHkgc3VwcHJlc3MgcmVqZWN0aW9uLgorICAgIH0gY2F0Y2ggKCB2YWx1ZSApIHsKKworICAgICAg
ICAvLyBTdXBwb3J0OiBBbmRyb2lkIDQuMCBvbmx5CisgICAgICAgIC8vIFN0cmljdCBtb2RlIGZ1
bmN0aW9ucyBpbnZva2VkIHdpdGhvdXQgLmNhbGwvLmFwcGx5IGdldCBnbG9iYWwtb2JqZWN0IGNv
bnRleHQKKyAgICAgICAgcmVqZWN0LmNhbGwoIHVuZGVmaW5lZCwgdmFsdWUgKTsKKyAgICB9Cit9
CisKK2pRdWVyeS5leHRlbmQoIHsKKworICAgIERlZmVycmVkOiBmdW5jdGlvbiggZnVuYyApIHsK
KyAgICAgICAgdmFyIHR1cGxlcyA9IFsKKworICAgICAgICAgICAgICAgIC8vIGFjdGlvbiwgYWRk
IGxpc3RlbmVyLCBjYWxsYmFja3MsCisgICAgICAgICAgICAgICAgLy8gLi4uIC50aGVuIGhhbmRs
ZXJzLCBhcmd1bWVudCBpbmRleCwgW2ZpbmFsIHN0YXRlXQorICAgICAgICAgICAgICAgIFsgIm5v
dGlmeSIsICJwcm9ncmVzcyIsIGpRdWVyeS5DYWxsYmFja3MoICJtZW1vcnkiICksCisgICAgICAg
ICAgICAgICAgICAgIGpRdWVyeS5DYWxsYmFja3MoICJtZW1vcnkiICksIDIgXSwKKyAgICAgICAg
ICAgICAgICBbICJyZXNvbHZlIiwgImRvbmUiLCBqUXVlcnkuQ2FsbGJhY2tzKCAib25jZSBtZW1v
cnkiICksCisgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5DYWxsYmFja3MoICJvbmNlIG1lbW9y
eSIgKSwgMCwgInJlc29sdmVkIiBdLAorICAgICAgICAgICAgICAgIFsgInJlamVjdCIsICJmYWls
IiwgalF1ZXJ5LkNhbGxiYWNrcyggIm9uY2UgbWVtb3J5IiApLAorICAgICAgICAgICAgICAgICAg
ICBqUXVlcnkuQ2FsbGJhY2tzKCAib25jZSBtZW1vcnkiICksIDEsICJyZWplY3RlZCIgXQorICAg
ICAgICAgICAgXSwKKyAgICAgICAgICAgIHN0YXRlID0gInBlbmRpbmciLAorICAgICAgICAgICAg
cHJvbWlzZSA9IHsKKyAgICAgICAgICAgICAgICBzdGF0ZTogZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBzdGF0ZTsKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgICAgIGFsd2F5czogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIGRlZmVycmVk
LmRvbmUoIGFyZ3VtZW50cyApLmZhaWwoIGFyZ3VtZW50cyApOworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdGhpczsKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJjYXRj
aCI6IGZ1bmN0aW9uKCBmbiApIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb21pc2Uu
dGhlbiggbnVsbCwgZm4gKTsKKyAgICAgICAgICAgICAgICB9LAorCisgICAgICAgICAgICAgICAg
Ly8gS2VlcCBwaXBlIGZvciBiYWNrLWNvbXBhdAorICAgICAgICAgICAgICAgIHBpcGU6IGZ1bmN0
aW9uKCAvKiBmbkRvbmUsIGZuRmFpbCwgZm5Qcm9ncmVzcyAqLyApIHsKKyAgICAgICAgICAgICAg
ICAgICAgdmFyIGZucyA9IGFyZ3VtZW50czsKKworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
alF1ZXJ5LkRlZmVycmVkKCBmdW5jdGlvbiggbmV3RGVmZXIgKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBqUXVlcnkuZWFjaCggdHVwbGVzLCBmdW5jdGlvbiggaSwgdHVwbGUgKSB7CisKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNYXAgdHVwbGVzIChwcm9ncmVzcywgZG9uZSwg
ZmFpbCkgdG8gYXJndW1lbnRzIChkb25lLCBmYWlsLCBwcm9ncmVzcykKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2YXIgZm4gPSBqUXVlcnkuaXNGdW5jdGlvbiggZm5zWyB0dXBsZVsgNCBd
IF0gKSAmJiBmbnNbIHR1cGxlWyA0IF0gXTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIGRlZmVycmVkLnByb2dyZXNzKGZ1bmN0aW9uKCkgeyBiaW5kIHRvIG5ld0RlZmVyIG9yIG5l
d0RlZmVyLm5vdGlmeSB9KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRlZmVycmVk
LmRvbmUoZnVuY3Rpb24oKSB7IGJpbmQgdG8gbmV3RGVmZXIgb3IgbmV3RGVmZXIucmVzb2x2ZSB9
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRlZmVycmVkLmZhaWwoZnVuY3Rpb24o
KSB7IGJpbmQgdG8gbmV3RGVmZXIgb3IgbmV3RGVmZXIucmVqZWN0IH0pCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGVmZXJyZWRbIHR1cGxlWyAxIF0gXSggZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXR1cm5lZCA9IGZuICYmIGZuLmFwcGx5
KCB0aGlzLCBhcmd1bWVudHMgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCByZXR1cm5lZCAmJiBqUXVlcnkuaXNGdW5jdGlvbiggcmV0dXJuZWQucHJvbWlzZSApICkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuZWQucHJvbWlzZSgpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnByb2dyZXNzKCBuZXdEZWZl
ci5ub3RpZnkgKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5kb25l
KCBuZXdEZWZlci5yZXNvbHZlICkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAuZmFpbCggbmV3RGVmZXIucmVqZWN0ICk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdE
ZWZlclsgdHVwbGVbIDAgXSArICJXaXRoIiBdKAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRoaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZm4gPyBbIHJldHVybmVkIF0gOiBhcmd1bWVudHMKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9ICk7CisgICAgICAgICAgICAgICAgICAgICAgICB9ICk7
CisgICAgICAgICAgICAgICAgICAgICAgICBmbnMgPSBudWxsOworICAgICAgICAgICAgICAgICAg
ICB9ICkucHJvbWlzZSgpOworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgdGhl
bjogZnVuY3Rpb24oIG9uRnVsZmlsbGVkLCBvblJlamVjdGVkLCBvblByb2dyZXNzICkgeworICAg
ICAgICAgICAgICAgICAgICB2YXIgbWF4RGVwdGggPSAwOworICAgICAgICAgICAgICAgICAgICBm
dW5jdGlvbiByZXNvbHZlKCBkZXB0aCwgZGVmZXJyZWQsIGhhbmRsZXIsIHNwZWNpYWwgKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdmFyIHRoYXQgPSB0aGlzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhcmdzID0gYXJndW1lbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtaWdodFRocm93ID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2YXIgcmV0dXJuZWQsIHRoZW47CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIFN1cHBvcnQ6IFByb21pc2VzL0ErIHNlY3Rpb24gMi4zLjMuMy4zCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBodHRwczovL3Byb21pc2VzYXBsdXMu
Y29tLyNwb2ludC01OQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWdu
b3JlIGRvdWJsZS1yZXNvbHV0aW9uIGF0dGVtcHRzCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoIGRlcHRoIDwgbWF4RGVwdGggKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5l
ZCA9IGhhbmRsZXIuYXBwbHkoIHRoYXQsIGFyZ3MgKTsKKworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gU3VwcG9ydDogUHJvbWlzZXMvQSsgc2VjdGlvbiAyLjMuMQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9wcm9taXNlc2FwbHVz
LmNvbS8jcG9pbnQtNDgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgg
cmV0dXJuZWQgPT09IGRlZmVycmVkLnByb21pc2UoKSApIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCAiVGhlbmFibGUgc2VsZi1y
ZXNvbHV0aW9uIiApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTdXBwb3J0OiBQcm9taXNlcy9B
KyBzZWN0aW9ucyAyLjMuMy4xLCAzLjUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIGh0dHBzOi8vcHJvbWlzZXNhcGx1cy5jb20vI3BvaW50LTU0CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBodHRwczovL3Byb21pc2VzYXBsdXMuY29tLyNwb2lu
dC03NQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmV0cmlldmUgYHRo
ZW5gIG9ubHkgb25jZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiA9
IHJldHVybmVkICYmCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBTdXBwb3J0OiBQcm9taXNlcy9BKyBzZWN0aW9uIDIuMy40CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8jcG9pbnQt
NjQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBPbmx5IGNoZWNr
IG9iamVjdHMgYW5kIGZ1bmN0aW9ucyBmb3IgdGhlbmFiaWxpdHkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoIHR5cGVvZiByZXR1cm5lZCA9PT0gIm9iamVjdCIgfHwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHJldHVy
bmVkID09PSAiZnVuY3Rpb24iICkgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm5lZC50aGVuOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBIYW5kbGUgYSByZXR1cm5lZCB0aGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggdGhlbiApICkgeworCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3BlY2lhbCBwcm9jZXNzb3Jz
IChub3RpZnkpIGp1c3Qgd2FpdCBmb3IgcmVzb2x1dGlvbgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICggc3BlY2lhbCApIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGhlbi5jYWxsKAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuZWQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCBtYXhEZXB0aCwgZGVmZXJyZWQs
IElkZW50aXR5LCBzcGVjaWFsICksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXNvbHZlKCBtYXhEZXB0aCwgZGVmZXJyZWQsIFRocm93ZXIsIHNwZWNp
YWwgKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOworCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm9ybWFsIHByb2Nlc3Nv
cnMgKHJlc29sdmUpIGFsc28gaG9vayBpbnRvIHByb2dyZXNzCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyAuLi5hbmQgZGlzcmVnYXJkIG9sZGVyIHJlc29sdXRpb24g
dmFsdWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heERl
cHRoKys7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhl
bi5jYWxsKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXNvbHZlKCBtYXhEZXB0aCwgZGVmZXJyZWQsIElkZW50aXR5LCBzcGVjaWFsICksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCBtYXhE
ZXB0aCwgZGVmZXJyZWQsIFRocm93ZXIsIHNwZWNpYWwgKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoIG1heERlcHRoLCBkZWZlcnJlZCwg
SWRlbnRpdHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGVmZXJyZWQubm90aWZ5V2l0aCApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBIYW5kbGUgYWxs
IG90aGVyIHJldHVybmVkIHZhbHVlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IE9ubHkgc3Vic3RpdHV0ZSBoYW5kbGVycyBwYXNzIG9uIGNvbnRleHQKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgbXVsdGlwbGUgdmFsdWVzIChub24tc3Bl
YyBiZWhhdmlvcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
IGhhbmRsZXIgIT09IElkZW50aXR5ICkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0aGF0ID0gdW5kZWZpbmVkOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhcmdzID0gWyByZXR1cm5lZCBdOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIFByb2Nlc3MgdGhlIHZhbHVlKHMpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gRGVmYXVsdCBwcm9jZXNzIGlzIHJlc29sdmUKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHNwZWNpYWwgfHwgZGVmZXJyZWQu
cmVzb2x2ZVdpdGggKSggdGhhdCwgYXJncyApOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE9ubHkgbm9ybWFsIHByb2Nlc3NvcnMgKHJlc29s
dmUpIGNhdGNoIGFuZCByZWplY3QgZXhjZXB0aW9ucworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwcm9jZXNzID0gc3BlY2lhbCA/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtaWdodFRocm93IDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRy
eSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pZ2h0VGhy
b3coKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoICgg
ZSApIHsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
IGpRdWVyeS5EZWZlcnJlZC5leGNlcHRpb25Ib29rICkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LkRlZmVycmVkLmV4Y2VwdGlvbkhvb2so
IGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHJvY2Vzcy5zdGFja1RyYWNlICk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBTdXBwb3J0OiBQcm9taXNlcy9BKyBzZWN0aW9uIDIuMy4zLjMuNC4xCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vcHJvbWlzZXNhcGx1
cy5jb20vI3BvaW50LTYxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIElnbm9yZSBwb3N0LXJlc29sdXRpb24gZXhjZXB0aW9ucworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGRlcHRoICsgMSA+PSBtYXhEZXB0aCAp
IHsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
T25seSBzdWJzdGl0dXRlIGhhbmRsZXJzIHBhc3Mgb24gY29udGV4dAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIG11bHRpcGxlIHZhbHVlcyAo
bm9uLXNwZWMgYmVoYXZpb3IpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoIGhhbmRsZXIgIT09IFRocm93ZXIgKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCA9IHVuZGVmaW5lZDsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzID0g
WyBlIF07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVy
cmVkLnJlamVjdFdpdGgoIHRoYXQsIGFyZ3MgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBTdXBwb3J0OiBQcm9taXNlcy9BKyBzZWN0aW9uIDIuMy4z
LjMuMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vcHJvbWlzZXNhcGx1
cy5jb20vI3BvaW50LTU3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmUtcmVzb2x2
ZSBwcm9taXNlcyBpbW1lZGlhdGVseSB0byBkb2RnZSBmYWxzZSByZWplY3Rpb24gZnJvbQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN1YnNlcXVlbnQgZXJyb3JzCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCBkZXB0aCApIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHJvY2VzcygpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7
CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2FsbCBhbiBvcHRpb25hbCBo
b29rIHRvIHJlY29yZCB0aGUgc3RhY2ssIGluIGNhc2Ugb2YgZXhjZXB0aW9uCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIHNpbmNlIGl0J3Mgb3RoZXJ3aXNlIGxvc3Qgd2hlbiBl
eGVjdXRpb24gZ29lcyBhc3luYworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
IGpRdWVyeS5EZWZlcnJlZC5nZXRTdGFja0hvb2sgKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwcm9jZXNzLnN0YWNrVHJhY2UgPSBqUXVlcnkuRGVmZXJyZWQuZ2V0U3Rh
Y2tIb29rKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgd2luZG93LnNldFRpbWVvdXQoIHByb2Nlc3MgKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9OworICAg
ICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpRdWVyeS5E
ZWZlcnJlZCggZnVuY3Rpb24oIG5ld0RlZmVyICkgeworCisgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBwcm9ncmVzc19oYW5kbGVycy5hZGQoIC4uLiApCisgICAgICAgICAgICAgICAgICAgICAg
ICB0dXBsZXNbIDAgXVsgMyBdLmFkZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNv
bHZlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBuZXdEZWZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgalF1ZXJ5LmlzRnVuY3Rpb24oIG9uUHJvZ3Jlc3MgKSA/CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBvblByb2dyZXNzIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIElkZW50aXR5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdE
ZWZlci5ub3RpZnlXaXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAg
ICAgICAgICAgICAgICAgKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgLy8gZnVsZmlsbGVk
X2hhbmRsZXJzLmFkZCggLi4uICkKKyAgICAgICAgICAgICAgICAgICAgICAgIHR1cGxlc1sgMSBd
WyAzIF0uYWRkKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5ld0RlZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkuaXNG
dW5jdGlvbiggb25GdWxmaWxsZWQgKSA/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBvbkZ1bGZpbGxlZCA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJ
ZGVudGl0eQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlamVjdGVkX2hhbmRsZXJz
LmFkZCggLi4uICkKKyAgICAgICAgICAgICAgICAgICAgICAgIHR1cGxlc1sgMiBdWyAzIF0uYWRk
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0Rl
ZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkuaXNGdW5jdGlvbigg
b25SZWplY3RlZCApID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uUmVq
ZWN0ZWQgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhyb3dlcgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgICAgICk7Cisg
ICAgICAgICAgICAgICAgICAgIH0gKS5wcm9taXNlKCk7CisgICAgICAgICAgICAgICAgfSwKKwor
ICAgICAgICAgICAgICAgIC8vIEdldCBhIHByb21pc2UgZm9yIHRoaXMgZGVmZXJyZWQKKyAgICAg
ICAgICAgICAgICAvLyBJZiBvYmogaXMgcHJvdmlkZWQsIHRoZSBwcm9taXNlIGFzcGVjdCBpcyBh
ZGRlZCB0byB0aGUgb2JqZWN0CisgICAgICAgICAgICAgICAgcHJvbWlzZTogZnVuY3Rpb24oIG9i
aiApIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9iaiAhPSBudWxsID8galF1ZXJ5LmV4
dGVuZCggb2JqLCBwcm9taXNlICkgOiBwcm9taXNlOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICBkZWZlcnJlZCA9IHt9OworCisgICAgICAgIC8vIEFkZCBs
aXN0LXNwZWNpZmljIG1ldGhvZHMKKyAgICAgICAgalF1ZXJ5LmVhY2goIHR1cGxlcywgZnVuY3Rp
b24oIGksIHR1cGxlICkgeworICAgICAgICAgICAgdmFyIGxpc3QgPSB0dXBsZVsgMiBdLAorICAg
ICAgICAgICAgICAgIHN0YXRlU3RyaW5nID0gdHVwbGVbIDUgXTsKKworICAgICAgICAgICAgLy8g
cHJvbWlzZS5wcm9ncmVzcyA9IGxpc3QuYWRkCisgICAgICAgICAgICAvLyBwcm9taXNlLmRvbmUg
PSBsaXN0LmFkZAorICAgICAgICAgICAgLy8gcHJvbWlzZS5mYWlsID0gbGlzdC5hZGQKKyAgICAg
ICAgICAgIHByb21pc2VbIHR1cGxlWyAxIF0gXSA9IGxpc3QuYWRkOworCisgICAgICAgICAgICAv
LyBIYW5kbGUgc3RhdGUKKyAgICAgICAgICAgIGlmICggc3RhdGVTdHJpbmcgKSB7CisgICAgICAg
ICAgICAgICAgbGlzdC5hZGQoCisgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeworCisg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGF0ZSA9ICJyZXNvbHZlZCIgKGkuZS4sIGZ1bGZp
bGxlZCkKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YXRlID0gInJlamVjdGVkIgorICAg
ICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBzdGF0ZVN0cmluZzsKKyAgICAgICAgICAgICAg
ICAgICAgfSwKKworICAgICAgICAgICAgICAgICAgICAvLyByZWplY3RlZF9jYWxsYmFja3MuZGlz
YWJsZQorICAgICAgICAgICAgICAgICAgICAvLyBmdWxmaWxsZWRfY2FsbGJhY2tzLmRpc2FibGUK
KyAgICAgICAgICAgICAgICAgICAgdHVwbGVzWyAzIC0gaSBdWyAyIF0uZGlzYWJsZSwKKworICAg
ICAgICAgICAgICAgICAgICAvLyBwcm9ncmVzc19jYWxsYmFja3MubG9jaworICAgICAgICAgICAg
ICAgICAgICB0dXBsZXNbIDAgXVsgMiBdLmxvY2sKKyAgICAgICAgICAgICAgICApOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAvLyBwcm9ncmVzc19oYW5kbGVycy5maXJlCisgICAgICAg
ICAgICAvLyBmdWxmaWxsZWRfaGFuZGxlcnMuZmlyZQorICAgICAgICAgICAgLy8gcmVqZWN0ZWRf
aGFuZGxlcnMuZmlyZQorICAgICAgICAgICAgbGlzdC5hZGQoIHR1cGxlWyAzIF0uZmlyZSApOwor
CisgICAgICAgICAgICAvLyBkZWZlcnJlZC5ub3RpZnkgPSBmdW5jdGlvbigpIHsgZGVmZXJyZWQu
bm90aWZ5V2l0aCguLi4pIH0KKyAgICAgICAgICAgIC8vIGRlZmVycmVkLnJlc29sdmUgPSBmdW5j
dGlvbigpIHsgZGVmZXJyZWQucmVzb2x2ZVdpdGgoLi4uKSB9CisgICAgICAgICAgICAvLyBkZWZl
cnJlZC5yZWplY3QgPSBmdW5jdGlvbigpIHsgZGVmZXJyZWQucmVqZWN0V2l0aCguLi4pIH0KKyAg
ICAgICAgICAgIGRlZmVycmVkWyB0dXBsZVsgMCBdIF0gPSBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgICAgICBkZWZlcnJlZFsgdHVwbGVbIDAgXSArICJXaXRoIiBdKCB0aGlzID09PSBkZWZlcnJl
ZCA/IHVuZGVmaW5lZCA6IHRoaXMsIGFyZ3VtZW50cyApOworICAgICAgICAgICAgICAgIHJldHVy
biB0aGlzOworICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgLy8gZGVmZXJyZWQubm90aWZ5
V2l0aCA9IGxpc3QuZmlyZVdpdGgKKyAgICAgICAgICAgIC8vIGRlZmVycmVkLnJlc29sdmVXaXRo
ID0gbGlzdC5maXJlV2l0aAorICAgICAgICAgICAgLy8gZGVmZXJyZWQucmVqZWN0V2l0aCA9IGxp
c3QuZmlyZVdpdGgKKyAgICAgICAgICAgIGRlZmVycmVkWyB0dXBsZVsgMCBdICsgIldpdGgiIF0g
PSBsaXN0LmZpcmVXaXRoOworICAgICAgICB9ICk7CisKKyAgICAgICAgLy8gTWFrZSB0aGUgZGVm
ZXJyZWQgYSBwcm9taXNlCisgICAgICAgIHByb21pc2UucHJvbWlzZSggZGVmZXJyZWQgKTsKKwor
ICAgICAgICAvLyBDYWxsIGdpdmVuIGZ1bmMgaWYgYW55CisgICAgICAgIGlmICggZnVuYyApIHsK
KyAgICAgICAgICAgIGZ1bmMuY2FsbCggZGVmZXJyZWQsIGRlZmVycmVkICk7CisgICAgICAgIH0K
KworICAgICAgICAvLyBBbGwgZG9uZSEKKyAgICAgICAgcmV0dXJuIGRlZmVycmVkOworICAgIH0s
CisKKyAgICAvLyBEZWZlcnJlZCBoZWxwZXIKKyAgICB3aGVuOiBmdW5jdGlvbiggc2luZ2xlVmFs
dWUgKSB7CisgICAgICAgIHZhcgorCisgICAgICAgICAgICAvLyBjb3VudCBvZiB1bmNvbXBsZXRl
ZCBzdWJvcmRpbmF0ZXMKKyAgICAgICAgICAgIHJlbWFpbmluZyA9IGFyZ3VtZW50cy5sZW5ndGgs
CisKKyAgICAgICAgICAgIC8vIGNvdW50IG9mIHVucHJvY2Vzc2VkIGFyZ3VtZW50cworICAgICAg
ICAgICAgaSA9IHJlbWFpbmluZywKKworICAgICAgICAgICAgLy8gc3Vib3JkaW5hdGUgZnVsZmls
bG1lbnQgZGF0YQorICAgICAgICAgICAgcmVzb2x2ZUNvbnRleHRzID0gQXJyYXkoIGkgKSwKKyAg
ICAgICAgICAgIHJlc29sdmVWYWx1ZXMgPSBzbGljZS5jYWxsKCBhcmd1bWVudHMgKSwKKworICAg
ICAgICAgICAgLy8gdGhlIG1hc3RlciBEZWZlcnJlZAorICAgICAgICAgICAgbWFzdGVyID0galF1
ZXJ5LkRlZmVycmVkKCksCisKKyAgICAgICAgICAgIC8vIHN1Ym9yZGluYXRlIGNhbGxiYWNrIGZh
Y3RvcnkKKyAgICAgICAgICAgIHVwZGF0ZUZ1bmMgPSBmdW5jdGlvbiggaSApIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZnVuY3Rpb24oIHZhbHVlICkgeworICAgICAgICAgICAgICAgICAgICBy
ZXNvbHZlQ29udGV4dHNbIGkgXSA9IHRoaXM7CisgICAgICAgICAgICAgICAgICAgIHJlc29sdmVW
YWx1ZXNbIGkgXSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxID8gc2xpY2UuY2FsbCggYXJndW1lbnRz
ICkgOiB2YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCAhKCAtLXJlbWFpbmluZyApICkg
eworICAgICAgICAgICAgICAgICAgICAgICAgbWFzdGVyLnJlc29sdmVXaXRoKCByZXNvbHZlQ29u
dGV4dHMsIHJlc29sdmVWYWx1ZXMgKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIH07CisgICAgICAgICAgICB9OworCisgICAgICAgIC8vIFNpbmdsZS0gYW5kIGVtcHR5
IGFyZ3VtZW50cyBhcmUgYWRvcHRlZCBsaWtlIFByb21pc2UucmVzb2x2ZQorICAgICAgICBpZiAo
IHJlbWFpbmluZyA8PSAxICkgeworICAgICAgICAgICAgYWRvcHRWYWx1ZSggc2luZ2xlVmFsdWUs
IG1hc3Rlci5kb25lKCB1cGRhdGVGdW5jKCBpICkgKS5yZXNvbHZlLCBtYXN0ZXIucmVqZWN0ICk7
CisKKyAgICAgICAgICAgIC8vIFVzZSAudGhlbigpIHRvIHVud3JhcCBzZWNvbmRhcnkgdGhlbmFi
bGVzIChjZi4gZ2gtMzAwMCkKKyAgICAgICAgICAgIGlmICggbWFzdGVyLnN0YXRlKCkgPT09ICJw
ZW5kaW5nIiB8fAorICAgICAgICAgICAgICAgIGpRdWVyeS5pc0Z1bmN0aW9uKCByZXNvbHZlVmFs
dWVzWyBpIF0gJiYgcmVzb2x2ZVZhbHVlc1sgaSBdLnRoZW4gKSApIHsKKworICAgICAgICAgICAg
ICAgIHJldHVybiBtYXN0ZXIudGhlbigpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAg
ICAgICAgLy8gTXVsdGlwbGUgYXJndW1lbnRzIGFyZSBhZ2dyZWdhdGVkIGxpa2UgUHJvbWlzZS5h
bGwgYXJyYXkgZWxlbWVudHMKKyAgICAgICAgd2hpbGUgKCBpLS0gKSB7CisgICAgICAgICAgICBh
ZG9wdFZhbHVlKCByZXNvbHZlVmFsdWVzWyBpIF0sIHVwZGF0ZUZ1bmMoIGkgKSwgbWFzdGVyLnJl
amVjdCApOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG1hc3Rlci5wcm9taXNlKCk7Cisg
ICAgfQorfSApOworCisKKy8vIFRoZXNlIHVzdWFsbHkgaW5kaWNhdGUgYSBwcm9ncmFtbWVyIG1p
c3Rha2UgZHVyaW5nIGRldmVsb3BtZW50LAorLy8gd2FybiBhYm91dCB0aGVtIEFTQVAgcmF0aGVy
IHRoYW4gc3dhbGxvd2luZyB0aGVtIGJ5IGRlZmF1bHQuCit2YXIgcmVycm9yTmFtZXMgPSAvXihF
dmFsfEludGVybmFsfFJhbmdlfFJlZmVyZW5jZXxTeW50YXh8VHlwZXxVUkkpRXJyb3IkLzsKKwor
alF1ZXJ5LkRlZmVycmVkLmV4Y2VwdGlvbkhvb2sgPSBmdW5jdGlvbiggZXJyb3IsIHN0YWNrICkg
eworCisgICAgLy8gU3VwcG9ydDogSUUgOCAtIDkgb25seQorICAgIC8vIENvbnNvbGUgZXhpc3Rz
IHdoZW4gZGV2IHRvb2xzIGFyZSBvcGVuLCB3aGljaCBjYW4gaGFwcGVuIGF0IGFueSB0aW1lCisg
ICAgaWYgKCB3aW5kb3cuY29uc29sZSAmJiB3aW5kb3cuY29uc29sZS53YXJuICYmIGVycm9yICYm
IHJlcnJvck5hbWVzLnRlc3QoIGVycm9yLm5hbWUgKSApIHsKKyAgICAgICAgd2luZG93LmNvbnNv
bGUud2FybiggImpRdWVyeS5EZWZlcnJlZCBleGNlcHRpb246ICIgKyBlcnJvci5tZXNzYWdlLCBl
cnJvci5zdGFjaywgc3RhY2sgKTsKKyAgICB9Cit9OworCisKKworCitqUXVlcnkucmVhZHlFeGNl
cHRpb24gPSBmdW5jdGlvbiggZXJyb3IgKSB7CisgICAgd2luZG93LnNldFRpbWVvdXQoIGZ1bmN0
aW9uKCkgeworICAgICAgICB0aHJvdyBlcnJvcjsKKyAgICB9ICk7Cit9OworCisKKworCisvLyBU
aGUgZGVmZXJyZWQgdXNlZCBvbiBET00gcmVhZHkKK3ZhciByZWFkeUxpc3QgPSBqUXVlcnkuRGVm
ZXJyZWQoKTsKKworalF1ZXJ5LmZuLnJlYWR5ID0gZnVuY3Rpb24oIGZuICkgeworCisgICAgcmVh
ZHlMaXN0CisgICAgICAgIC50aGVuKCBmbiApCisKKyAgICAgICAgLy8gV3JhcCBqUXVlcnkucmVh
ZHlFeGNlcHRpb24gaW4gYSBmdW5jdGlvbiBzbyB0aGF0IHRoZSBsb29rdXAKKyAgICAgICAgLy8g
aGFwcGVucyBhdCB0aGUgdGltZSBvZiBlcnJvciBoYW5kbGluZyBpbnN0ZWFkIG9mIGNhbGxiYWNr
CisgICAgICAgIC8vIHJlZ2lzdHJhdGlvbi4KKyAgICAgICAgLmNhdGNoKCBmdW5jdGlvbiggZXJy
b3IgKSB7CisgICAgICAgICAgICBqUXVlcnkucmVhZHlFeGNlcHRpb24oIGVycm9yICk7CisgICAg
ICAgIH0gKTsKKworICAgIHJldHVybiB0aGlzOworfTsKKworalF1ZXJ5LmV4dGVuZCggeworCisg
ICAgLy8gSXMgdGhlIERPTSByZWFkeSB0byBiZSB1c2VkPyBTZXQgdG8gdHJ1ZSBvbmNlIGl0IG9j
Y3Vycy4KKyAgICBpc1JlYWR5OiBmYWxzZSwKKworICAgIC8vIEEgY291bnRlciB0byB0cmFjayBo
b3cgbWFueSBpdGVtcyB0byB3YWl0IGZvciBiZWZvcmUKKyAgICAvLyB0aGUgcmVhZHkgZXZlbnQg
ZmlyZXMuIFNlZSAjNjc4MQorICAgIHJlYWR5V2FpdDogMSwKKworICAgIC8vIEhvbGQgKG9yIHJl
bGVhc2UpIHRoZSByZWFkeSBldmVudAorICAgIGhvbGRSZWFkeTogZnVuY3Rpb24oIGhvbGQgKSB7
CisgICAgICAgIGlmICggaG9sZCApIHsKKyAgICAgICAgICAgIGpRdWVyeS5yZWFkeVdhaXQrKzsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGpRdWVyeS5yZWFkeSggdHJ1ZSApOworICAg
ICAgICB9CisgICAgfSwKKworICAgIC8vIEhhbmRsZSB3aGVuIHRoZSBET00gaXMgcmVhZHkKKyAg
ICByZWFkeTogZnVuY3Rpb24oIHdhaXQgKSB7CisKKyAgICAgICAgLy8gQWJvcnQgaWYgdGhlcmUg
YXJlIHBlbmRpbmcgaG9sZHMgb3Igd2UncmUgYWxyZWFkeSByZWFkeQorICAgICAgICBpZiAoIHdh
aXQgPT09IHRydWUgPyAtLWpRdWVyeS5yZWFkeVdhaXQgOiBqUXVlcnkuaXNSZWFkeSApIHsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFJlbWVtYmVyIHRoYXQg
dGhlIERPTSBpcyByZWFkeQorICAgICAgICBqUXVlcnkuaXNSZWFkeSA9IHRydWU7CisKKyAgICAg
ICAgLy8gSWYgYSBub3JtYWwgRE9NIFJlYWR5IGV2ZW50IGZpcmVkLCBkZWNyZW1lbnQsIGFuZCB3
YWl0IGlmIG5lZWQgYmUKKyAgICAgICAgaWYgKCB3YWl0ICE9PSB0cnVlICYmIC0talF1ZXJ5LnJl
YWR5V2FpdCA+IDAgKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICAvLyBJZiB0aGVyZSBhcmUgZnVuY3Rpb25zIGJvdW5kLCB0byBleGVjdXRlCisgICAgICAgIHJl
YWR5TGlzdC5yZXNvbHZlV2l0aCggZG9jdW1lbnQsIFsgalF1ZXJ5IF0gKTsKKyAgICB9Cit9ICk7
CisKK2pRdWVyeS5yZWFkeS50aGVuID0gcmVhZHlMaXN0LnRoZW47CisKKy8vIFRoZSByZWFkeSBl
dmVudCBoYW5kbGVyIGFuZCBzZWxmIGNsZWFudXAgbWV0aG9kCitmdW5jdGlvbiBjb21wbGV0ZWQo
KSB7CisgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lciggIkRPTUNvbnRlbnRMb2FkZWQi
LCBjb21wbGV0ZWQgKTsKKyAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lciggImxvYWQiLCBj
b21wbGV0ZWQgKTsKKyAgICBqUXVlcnkucmVhZHkoKTsKK30KKworLy8gQ2F0Y2ggY2FzZXMgd2hl
cmUgJChkb2N1bWVudCkucmVhZHkoKSBpcyBjYWxsZWQKKy8vIGFmdGVyIHRoZSBicm93c2VyIGV2
ZW50IGhhcyBhbHJlYWR5IG9jY3VycmVkLgorLy8gU3VwcG9ydDogSUUgPD05IC0gMTAgb25seQor
Ly8gT2xkZXIgSUUgc29tZXRpbWVzIHNpZ25hbHMgImludGVyYWN0aXZlIiB0b28gc29vbgoraWYg
KCBkb2N1bWVudC5yZWFkeVN0YXRlID09PSAiY29tcGxldGUiIHx8CisgICAgKCBkb2N1bWVudC5y
ZWFkeVN0YXRlICE9PSAibG9hZGluZyIgJiYgIWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5kb1Nj
cm9sbCApICkgeworCisgICAgLy8gSGFuZGxlIGl0IGFzeW5jaHJvbm91c2x5IHRvIGFsbG93IHNj
cmlwdHMgdGhlIG9wcG9ydHVuaXR5IHRvIGRlbGF5IHJlYWR5CisgICAgd2luZG93LnNldFRpbWVv
dXQoIGpRdWVyeS5yZWFkeSApOworCit9IGVsc2UgeworCisgICAgLy8gVXNlIHRoZSBoYW5keSBl
dmVudCBjYWxsYmFjaworICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoICJET01Db250ZW50
TG9hZGVkIiwgY29tcGxldGVkICk7CisKKyAgICAvLyBBIGZhbGxiYWNrIHRvIHdpbmRvdy5vbmxv
YWQsIHRoYXQgd2lsbCBhbHdheXMgd29yaworICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCAi
bG9hZCIsIGNvbXBsZXRlZCApOworfQorCisKKworCisvLyBNdWx0aWZ1bmN0aW9uYWwgbWV0aG9k
IHRvIGdldCBhbmQgc2V0IHZhbHVlcyBvZiBhIGNvbGxlY3Rpb24KKy8vIFRoZSB2YWx1ZS9zIGNh
biBvcHRpb25hbGx5IGJlIGV4ZWN1dGVkIGlmIGl0J3MgYSBmdW5jdGlvbgordmFyIGFjY2VzcyA9
IGZ1bmN0aW9uKCBlbGVtcywgZm4sIGtleSwgdmFsdWUsIGNoYWluYWJsZSwgZW1wdHlHZXQsIHJh
dyApIHsKKyAgICB2YXIgaSA9IDAsCisgICAgICAgIGxlbiA9IGVsZW1zLmxlbmd0aCwKKyAgICAg
ICAgYnVsayA9IGtleSA9PSBudWxsOworCisgICAgLy8gU2V0cyBtYW55IHZhbHVlcworICAgIGlm
ICggalF1ZXJ5LnR5cGUoIGtleSApID09PSAib2JqZWN0IiApIHsKKyAgICAgICAgY2hhaW5hYmxl
ID0gdHJ1ZTsKKyAgICAgICAgZm9yICggaSBpbiBrZXkgKSB7CisgICAgICAgICAgICBhY2Nlc3Mo
IGVsZW1zLCBmbiwgaSwga2V5WyBpIF0sIHRydWUsIGVtcHR5R2V0LCByYXcgKTsKKyAgICAgICAg
fQorCisgICAgLy8gU2V0cyBvbmUgdmFsdWUKKyAgICB9IGVsc2UgaWYgKCB2YWx1ZSAhPT0gdW5k
ZWZpbmVkICkgeworICAgICAgICBjaGFpbmFibGUgPSB0cnVlOworCisgICAgICAgIGlmICggIWpR
dWVyeS5pc0Z1bmN0aW9uKCB2YWx1ZSApICkgeworICAgICAgICAgICAgcmF3ID0gdHJ1ZTsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmICggYnVsayApIHsKKworICAgICAgICAgICAgLy8gQnVsayBv
cGVyYXRpb25zIHJ1biBhZ2FpbnN0IHRoZSBlbnRpcmUgc2V0CisgICAgICAgICAgICBpZiAoIHJh
dyApIHsKKyAgICAgICAgICAgICAgICBmbi5jYWxsKCBlbGVtcywgdmFsdWUgKTsKKyAgICAgICAg
ICAgICAgICBmbiA9IG51bGw7CisKKyAgICAgICAgICAgIC8vIC4uLmV4Y2VwdCB3aGVuIGV4ZWN1
dGluZyBmdW5jdGlvbiB2YWx1ZXMKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgYnVsayA9IGZuOworICAgICAgICAgICAgICAgIGZuID0gZnVuY3Rpb24oIGVsZW0sIGtleSwg
dmFsdWUgKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBidWxrLmNhbGwoIGpRdWVyeSgg
ZWxlbSApLCB2YWx1ZSApOworICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKworICAgICAgICBpZiAoIGZuICkgeworICAgICAgICAgICAgZm9yICggOyBpIDwgbGVu
OyBpKysgKSB7CisgICAgICAgICAgICAgICAgZm4oCisgICAgICAgICAgICAgICAgICAgIGVsZW1z
WyBpIF0sIGtleSwgcmF3ID8KKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgOgorICAgICAgICAg
ICAgICAgICAgICB2YWx1ZS5jYWxsKCBlbGVtc1sgaSBdLCBpLCBmbiggZWxlbXNbIGkgXSwga2V5
ICkgKQorICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBpZiAoIGNoYWluYWJsZSApIHsKKyAgICAgICAgcmV0dXJuIGVsZW1zOworICAgIH0K
KworICAgIC8vIEdldHMKKyAgICBpZiAoIGJ1bGsgKSB7CisgICAgICAgIHJldHVybiBmbi5jYWxs
KCBlbGVtcyApOworICAgIH0KKworICAgIHJldHVybiBsZW4gPyBmbiggZWxlbXNbIDAgXSwga2V5
ICkgOiBlbXB0eUdldDsKK307Cit2YXIgYWNjZXB0RGF0YSA9IGZ1bmN0aW9uKCBvd25lciApIHsK
KworICAgIC8vIEFjY2VwdHMgb25seToKKyAgICAvLyAgLSBOb2RlCisgICAgLy8gICAgLSBOb2Rl
LkVMRU1FTlRfTk9ERQorICAgIC8vICAgIC0gTm9kZS5ET0NVTUVOVF9OT0RFCisgICAgLy8gIC0g
T2JqZWN0CisgICAgLy8gICAgLSBBbnkKKyAgICByZXR1cm4gb3duZXIubm9kZVR5cGUgPT09IDEg
fHwgb3duZXIubm9kZVR5cGUgPT09IDkgfHwgISggK293bmVyLm5vZGVUeXBlICk7Cit9OworCisK
KworCitmdW5jdGlvbiBEYXRhKCkgeworICAgIHRoaXMuZXhwYW5kbyA9IGpRdWVyeS5leHBhbmRv
ICsgRGF0YS51aWQrKzsKK30KKworRGF0YS51aWQgPSAxOworCitEYXRhLnByb3RvdHlwZSA9IHsK
KworICAgIGNhY2hlOiBmdW5jdGlvbiggb3duZXIgKSB7CisKKyAgICAgICAgLy8gQ2hlY2sgaWYg
dGhlIG93bmVyIG9iamVjdCBhbHJlYWR5IGhhcyBhIGNhY2hlCisgICAgICAgIHZhciB2YWx1ZSA9
IG93bmVyWyB0aGlzLmV4cGFuZG8gXTsKKworICAgICAgICAvLyBJZiBub3QsIGNyZWF0ZSBvbmUK
KyAgICAgICAgaWYgKCAhdmFsdWUgKSB7CisgICAgICAgICAgICB2YWx1ZSA9IHt9OworCisgICAg
ICAgICAgICAvLyBXZSBjYW4gYWNjZXB0IGRhdGEgZm9yIG5vbi1lbGVtZW50IG5vZGVzIGluIG1v
ZGVybiBicm93c2VycywKKyAgICAgICAgICAgIC8vIGJ1dCB3ZSBzaG91bGQgbm90LCBzZWUgIzgz
MzUuCisgICAgICAgICAgICAvLyBBbHdheXMgcmV0dXJuIGFuIGVtcHR5IG9iamVjdC4KKyAgICAg
ICAgICAgIGlmICggYWNjZXB0RGF0YSggb3duZXIgKSApIHsKKworICAgICAgICAgICAgICAgIC8v
IElmIGl0IGlzIGEgbm9kZSB1bmxpa2VseSB0byBiZSBzdHJpbmdpZnktZWQgb3IgbG9vcGVkIG92
ZXIKKyAgICAgICAgICAgICAgICAvLyB1c2UgcGxhaW4gYXNzaWdubWVudAorICAgICAgICAgICAg
ICAgIGlmICggb3duZXIubm9kZVR5cGUgKSB7CisgICAgICAgICAgICAgICAgICAgIG93bmVyWyB0
aGlzLmV4cGFuZG8gXSA9IHZhbHVlOworCisgICAgICAgICAgICAgICAgLy8gT3RoZXJ3aXNlIHNl
Y3VyZSBpdCBpbiBhIG5vbi1lbnVtZXJhYmxlIHByb3BlcnR5CisgICAgICAgICAgICAgICAgLy8g
Y29uZmlndXJhYmxlIG11c3QgYmUgdHJ1ZSB0byBhbGxvdyB0aGUgcHJvcGVydHkgdG8gYmUKKyAg
ICAgICAgICAgICAgICAvLyBkZWxldGVkIHdoZW4gZGF0YSBpcyByZW1vdmVkCisgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5
KCBvd25lciwgdGhpcy5leHBhbmRvLCB7CisgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTog
dmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUKKyAgICAg
ICAgICAgICAgICAgICAgfSApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorCisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICB9LAorICAgIHNldDogZnVuY3Rp
b24oIG93bmVyLCBkYXRhLCB2YWx1ZSApIHsKKyAgICAgICAgdmFyIHByb3AsCisgICAgICAgICAg
ICBjYWNoZSA9IHRoaXMuY2FjaGUoIG93bmVyICk7CisKKyAgICAgICAgLy8gSGFuZGxlOiBbIG93
bmVyLCBrZXksIHZhbHVlIF0gYXJncworICAgICAgICAvLyBBbHdheXMgdXNlIGNhbWVsQ2FzZSBr
ZXkgKGdoLTIyNTcpCisgICAgICAgIGlmICggdHlwZW9mIGRhdGEgPT09ICJzdHJpbmciICkgewor
ICAgICAgICAgICAgY2FjaGVbIGpRdWVyeS5jYW1lbENhc2UoIGRhdGEgKSBdID0gdmFsdWU7CisK
KyAgICAgICAgLy8gSGFuZGxlOiBbIG93bmVyLCB7IHByb3BlcnRpZXMgfSBdIGFyZ3MKKyAgICAg
ICAgfSBlbHNlIHsKKworICAgICAgICAgICAgLy8gQ29weSB0aGUgcHJvcGVydGllcyBvbmUtYnkt
b25lIHRvIHRoZSBjYWNoZSBvYmplY3QKKyAgICAgICAgICAgIGZvciAoIHByb3AgaW4gZGF0YSAp
IHsKKyAgICAgICAgICAgICAgICBjYWNoZVsgalF1ZXJ5LmNhbWVsQ2FzZSggcHJvcCApIF0gPSBk
YXRhWyBwcm9wIF07CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGNh
Y2hlOworICAgIH0sCisgICAgZ2V0OiBmdW5jdGlvbiggb3duZXIsIGtleSApIHsKKyAgICAgICAg
cmV0dXJuIGtleSA9PT0gdW5kZWZpbmVkID8KKyAgICAgICAgICAgIHRoaXMuY2FjaGUoIG93bmVy
ICkgOgorCisgICAgICAgICAgICAvLyBBbHdheXMgdXNlIGNhbWVsQ2FzZSBrZXkgKGdoLTIyNTcp
CisgICAgICAgICAgICBvd25lclsgdGhpcy5leHBhbmRvIF0gJiYgb3duZXJbIHRoaXMuZXhwYW5k
byBdWyBqUXVlcnkuY2FtZWxDYXNlKCBrZXkgKSBdOworICAgIH0sCisgICAgYWNjZXNzOiBmdW5j
dGlvbiggb3duZXIsIGtleSwgdmFsdWUgKSB7CisKKyAgICAgICAgLy8gSW4gY2FzZXMgd2hlcmUg
ZWl0aGVyOgorICAgICAgICAvLworICAgICAgICAvLyAgIDEuIE5vIGtleSB3YXMgc3BlY2lmaWVk
CisgICAgICAgIC8vICAgMi4gQSBzdHJpbmcga2V5IHdhcyBzcGVjaWZpZWQsIGJ1dCBubyB2YWx1
ZSBwcm92aWRlZAorICAgICAgICAvLworICAgICAgICAvLyBUYWtlIHRoZSAicmVhZCIgcGF0aCBh
bmQgYWxsb3cgdGhlIGdldCBtZXRob2QgdG8gZGV0ZXJtaW5lCisgICAgICAgIC8vIHdoaWNoIHZh
bHVlIHRvIHJldHVybiwgcmVzcGVjdGl2ZWx5IGVpdGhlcjoKKyAgICAgICAgLy8KKyAgICAgICAg
Ly8gICAxLiBUaGUgZW50aXJlIGNhY2hlIG9iamVjdAorICAgICAgICAvLyAgIDIuIFRoZSBkYXRh
IHN0b3JlZCBhdCB0aGUga2V5CisgICAgICAgIC8vCisgICAgICAgIGlmICgga2V5ID09PSB1bmRl
ZmluZWQgfHwKKyAgICAgICAgICAgICAgICAoICgga2V5ICYmIHR5cGVvZiBrZXkgPT09ICJzdHJp
bmciICkgJiYgdmFsdWUgPT09IHVuZGVmaW5lZCApICkgeworCisgICAgICAgICAgICByZXR1cm4g
dGhpcy5nZXQoIG93bmVyLCBrZXkgKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFdoZW4gdGhl
IGtleSBpcyBub3QgYSBzdHJpbmcsIG9yIGJvdGggYSBrZXkgYW5kIHZhbHVlCisgICAgICAgIC8v
IGFyZSBzcGVjaWZpZWQsIHNldCBvciBleHRlbmQgKGV4aXN0aW5nIG9iamVjdHMpIHdpdGggZWl0
aGVyOgorICAgICAgICAvLworICAgICAgICAvLyAgIDEuIEFuIG9iamVjdCBvZiBwcm9wZXJ0aWVz
CisgICAgICAgIC8vICAgMi4gQSBrZXkgYW5kIHZhbHVlCisgICAgICAgIC8vCisgICAgICAgIHRo
aXMuc2V0KCBvd25lciwga2V5LCB2YWx1ZSApOworCisgICAgICAgIC8vIFNpbmNlIHRoZSAic2V0
IiBwYXRoIGNhbiBoYXZlIHR3byBwb3NzaWJsZSBlbnRyeSBwb2ludHMKKyAgICAgICAgLy8gcmV0
dXJuIHRoZSBleHBlY3RlZCBkYXRhIGJhc2VkIG9uIHdoaWNoIHBhdGggd2FzIHRha2VuWypdCisg
ICAgICAgIHJldHVybiB2YWx1ZSAhPT0gdW5kZWZpbmVkID8gdmFsdWUgOiBrZXk7CisgICAgfSwK
KyAgICByZW1vdmU6IGZ1bmN0aW9uKCBvd25lciwga2V5ICkgeworICAgICAgICB2YXIgaSwKKyAg
ICAgICAgICAgIGNhY2hlID0gb3duZXJbIHRoaXMuZXhwYW5kbyBdOworCisgICAgICAgIGlmICgg
Y2FjaGUgPT09IHVuZGVmaW5lZCApIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIGlmICgga2V5ICE9PSB1bmRlZmluZWQgKSB7CisKKyAgICAgICAgICAgIC8vIFN1
cHBvcnQgYXJyYXkgb3Igc3BhY2Ugc2VwYXJhdGVkIHN0cmluZyBvZiBrZXlzCisgICAgICAgICAg
ICBpZiAoIGpRdWVyeS5pc0FycmF5KCBrZXkgKSApIHsKKworICAgICAgICAgICAgICAgIC8vIElm
IGtleSBpcyBhbiBhcnJheSBvZiBrZXlzLi4uCisgICAgICAgICAgICAgICAgLy8gV2UgYWx3YXlz
IHNldCBjYW1lbENhc2Uga2V5cywgc28gcmVtb3ZlIHRoYXQuCisgICAgICAgICAgICAgICAga2V5
ID0ga2V5Lm1hcCggalF1ZXJ5LmNhbWVsQ2FzZSApOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBrZXkgPSBqUXVlcnkuY2FtZWxDYXNlKCBrZXkgKTsKKworICAgICAgICAg
ICAgICAgIC8vIElmIGEga2V5IHdpdGggdGhlIHNwYWNlcyBleGlzdHMsIHVzZSBpdC4KKyAgICAg
ICAgICAgICAgICAvLyBPdGhlcndpc2UsIGNyZWF0ZSBhbiBhcnJheSBieSBtYXRjaGluZyBub24t
d2hpdGVzcGFjZQorICAgICAgICAgICAgICAgIGtleSA9IGtleSBpbiBjYWNoZSA/CisgICAgICAg
ICAgICAgICAgICAgIFsga2V5IF0gOgorICAgICAgICAgICAgICAgICAgICAoIGtleS5tYXRjaCgg
cm5vdGh0bWx3aGl0ZSApIHx8IFtdICk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGkg
PSBrZXkubGVuZ3RoOworCisgICAgICAgICAgICB3aGlsZSAoIGktLSApIHsKKyAgICAgICAgICAg
ICAgICBkZWxldGUgY2FjaGVbIGtleVsgaSBdIF07CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KworICAgICAgICAvLyBSZW1vdmUgdGhlIGV4cGFuZG8gaWYgdGhlcmUncyBubyBtb3JlIGRhdGEK
KyAgICAgICAgaWYgKCBrZXkgPT09IHVuZGVmaW5lZCB8fCBqUXVlcnkuaXNFbXB0eU9iamVjdCgg
Y2FjaGUgKSApIHsKKworICAgICAgICAgICAgLy8gU3VwcG9ydDogQ2hyb21lIDw9MzUgLSA0NQor
ICAgICAgICAgICAgLy8gV2Via2l0ICYgQmxpbmsgcGVyZm9ybWFuY2Ugc3VmZmVycyB3aGVuIGRl
bGV0aW5nIHByb3BlcnRpZXMKKyAgICAgICAgICAgIC8vIGZyb20gRE9NIG5vZGVzLCBzbyBzZXQg
dG8gdW5kZWZpbmVkIGluc3RlYWQKKyAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1
bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTM3ODYwNyAoYnVnIHJlc3RyaWN0ZWQp
CisgICAgICAgICAgICBpZiAoIG93bmVyLm5vZGVUeXBlICkgeworICAgICAgICAgICAgICAgIG93
bmVyWyB0aGlzLmV4cGFuZG8gXSA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgZGVsZXRlIG93bmVyWyB0aGlzLmV4cGFuZG8gXTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0sCisgICAgaGFzRGF0YTogZnVuY3Rpb24oIG93bmVyICkgewor
ICAgICAgICB2YXIgY2FjaGUgPSBvd25lclsgdGhpcy5leHBhbmRvIF07CisgICAgICAgIHJldHVy
biBjYWNoZSAhPT0gdW5kZWZpbmVkICYmICFqUXVlcnkuaXNFbXB0eU9iamVjdCggY2FjaGUgKTsK
KyAgICB9Cit9OwordmFyIGRhdGFQcml2ID0gbmV3IERhdGEoKTsKKwordmFyIGRhdGFVc2VyID0g
bmV3IERhdGEoKTsKKworCisKKy8vICBJbXBsZW1lbnRhdGlvbiBTdW1tYXJ5CisvLworLy8gIDEu
IEVuZm9yY2UgQVBJIHN1cmZhY2UgYW5kIHNlbWFudGljIGNvbXBhdGliaWxpdHkgd2l0aCAxLjku
eCBicmFuY2gKKy8vICAyLiBJbXByb3ZlIHRoZSBtb2R1bGUncyBtYWludGFpbmFiaWxpdHkgYnkg
cmVkdWNpbmcgdGhlIHN0b3JhZ2UKKy8vICAgICAgcGF0aHMgdG8gYSBzaW5nbGUgbWVjaGFuaXNt
LgorLy8gIDMuIFVzZSB0aGUgc2FtZSBzaW5nbGUgbWVjaGFuaXNtIHRvIHN1cHBvcnQgInByaXZh
dGUiIGFuZCAidXNlciIgZGF0YS4KKy8vICA0LiBfTmV2ZXJfIGV4cG9zZSAicHJpdmF0ZSIgZGF0
YSB0byB1c2VyIGNvZGUgKFRPRE86IERyb3AgX2RhdGEsIF9yZW1vdmVEYXRhKQorLy8gIDUuIEF2
b2lkIGV4cG9zaW5nIGltcGxlbWVudGF0aW9uIGRldGFpbHMgb24gdXNlciBvYmplY3RzIChlZy4g
ZXhwYW5kbyBwcm9wZXJ0aWVzKQorLy8gIDYuIFByb3ZpZGUgYSBjbGVhciBwYXRoIGZvciBpbXBs
ZW1lbnRhdGlvbiB1cGdyYWRlIHRvIFdlYWtNYXAgaW4gMjAxNAorCit2YXIgcmJyYWNlID0gL14o
Pzpce1tcd1xXXSpcfXxcW1tcd1xXXSpcXSkkLywKKyAgICBybXVsdGlEYXNoID0gL1tBLVpdL2c7
CisKK2Z1bmN0aW9uIGdldERhdGEoIGRhdGEgKSB7CisgICAgaWYgKCBkYXRhID09PSAidHJ1ZSIg
KSB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGlmICggZGF0YSA9PT0gImZh
bHNlIiApIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICggZGF0YSA9
PT0gIm51bGwiICkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICAvLyBPbmx5
IGNvbnZlcnQgdG8gYSBudW1iZXIgaWYgaXQgZG9lc24ndCBjaGFuZ2UgdGhlIHN0cmluZworICAg
IGlmICggZGF0YSA9PT0gK2RhdGEgKyAiIiApIHsKKyAgICAgICAgcmV0dXJuICtkYXRhOworICAg
IH0KKworICAgIGlmICggcmJyYWNlLnRlc3QoIGRhdGEgKSApIHsKKyAgICAgICAgcmV0dXJuIEpT
T04ucGFyc2UoIGRhdGEgKTsKKyAgICB9CisKKyAgICByZXR1cm4gZGF0YTsKK30KKworZnVuY3Rp
b24gZGF0YUF0dHIoIGVsZW0sIGtleSwgZGF0YSApIHsKKyAgICB2YXIgbmFtZTsKKworICAgIC8v
IElmIG5vdGhpbmcgd2FzIGZvdW5kIGludGVybmFsbHksIHRyeSB0byBmZXRjaCBhbnkKKyAgICAv
LyBkYXRhIGZyb20gdGhlIEhUTUw1IGRhdGEtKiBhdHRyaWJ1dGUKKyAgICBpZiAoIGRhdGEgPT09
IHVuZGVmaW5lZCAmJiBlbGVtLm5vZGVUeXBlID09PSAxICkgeworICAgICAgICBuYW1lID0gImRh
dGEtIiArIGtleS5yZXBsYWNlKCBybXVsdGlEYXNoLCAiLSQmIiApLnRvTG93ZXJDYXNlKCk7Cisg
ICAgICAgIGRhdGEgPSBlbGVtLmdldEF0dHJpYnV0ZSggbmFtZSApOworCisgICAgICAgIGlmICgg
dHlwZW9mIGRhdGEgPT09ICJzdHJpbmciICkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAg
ICAgICAgICBkYXRhID0gZ2V0RGF0YSggZGF0YSApOworICAgICAgICAgICAgfSBjYXRjaCAoIGUg
KSB7fQorCisgICAgICAgICAgICAvLyBNYWtlIHN1cmUgd2Ugc2V0IHRoZSBkYXRhIHNvIGl0IGlz
bid0IGNoYW5nZWQgbGF0ZXIKKyAgICAgICAgICAgIGRhdGFVc2VyLnNldCggZWxlbSwga2V5LCBk
YXRhICk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBkYXRhID0gdW5kZWZpbmVkOwor
ICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBkYXRhOworfQorCitqUXVlcnkuZXh0ZW5kKCB7
CisgICAgaGFzRGF0YTogZnVuY3Rpb24oIGVsZW0gKSB7CisgICAgICAgIHJldHVybiBkYXRhVXNl
ci5oYXNEYXRhKCBlbGVtICkgfHwgZGF0YVByaXYuaGFzRGF0YSggZWxlbSApOworICAgIH0sCisK
KyAgICBkYXRhOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgZGF0YSApIHsKKyAgICAgICAgcmV0dXJu
IGRhdGFVc2VyLmFjY2VzcyggZWxlbSwgbmFtZSwgZGF0YSApOworICAgIH0sCisKKyAgICByZW1v
dmVEYXRhOiBmdW5jdGlvbiggZWxlbSwgbmFtZSApIHsKKyAgICAgICAgZGF0YVVzZXIucmVtb3Zl
KCBlbGVtLCBuYW1lICk7CisgICAgfSwKKworICAgIC8vIFRPRE86IE5vdyB0aGF0IGFsbCBjYWxs
cyB0byBfZGF0YSBhbmQgX3JlbW92ZURhdGEgaGF2ZSBiZWVuIHJlcGxhY2VkCisgICAgLy8gd2l0
aCBkaXJlY3QgY2FsbHMgdG8gZGF0YVByaXYgbWV0aG9kcywgdGhlc2UgY2FuIGJlIGRlcHJlY2F0
ZWQuCisgICAgX2RhdGE6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBkYXRhICkgeworICAgICAgICBy
ZXR1cm4gZGF0YVByaXYuYWNjZXNzKCBlbGVtLCBuYW1lLCBkYXRhICk7CisgICAgfSwKKworICAg
IF9yZW1vdmVEYXRhOiBmdW5jdGlvbiggZWxlbSwgbmFtZSApIHsKKyAgICAgICAgZGF0YVByaXYu
cmVtb3ZlKCBlbGVtLCBuYW1lICk7CisgICAgfQorfSApOworCitqUXVlcnkuZm4uZXh0ZW5kKCB7
CisgICAgZGF0YTogZnVuY3Rpb24oIGtleSwgdmFsdWUgKSB7CisgICAgICAgIHZhciBpLCBuYW1l
LCBkYXRhLAorICAgICAgICAgICAgZWxlbSA9IHRoaXNbIDAgXSwKKyAgICAgICAgICAgIGF0dHJz
ID0gZWxlbSAmJiBlbGVtLmF0dHJpYnV0ZXM7CisKKyAgICAgICAgLy8gR2V0cyBhbGwgdmFsdWVz
CisgICAgICAgIGlmICgga2V5ID09PSB1bmRlZmluZWQgKSB7CisgICAgICAgICAgICBpZiAoIHRo
aXMubGVuZ3RoICkgeworICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhVXNlci5nZXQoIGVsZW0g
KTsKKworICAgICAgICAgICAgICAgIGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSAmJiAhZGF0YVBy
aXYuZ2V0KCBlbGVtLCAiaGFzRGF0YUF0dHJzIiApICkgeworICAgICAgICAgICAgICAgICAgICBp
ID0gYXR0cnMubGVuZ3RoOworICAgICAgICAgICAgICAgICAgICB3aGlsZSAoIGktLSApIHsKKwor
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3VwcG9ydDogSUUgMTEgb25seQorICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gVGhlIGF0dHJzIGVsZW1lbnRzIGNhbiBiZSBudWxsICgjMTQ4OTQp
CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGF0dHJzWyBpIF0gKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbmFtZSA9IGF0dHJzWyBpIF0ubmFtZTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoIG5hbWUuaW5kZXhPZiggImRhdGEtIiApID09PSAwICkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0galF1ZXJ5LmNhbWVsQ2FzZSggbmFt
ZS5zbGljZSggNSApICk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFBdHRy
KCBlbGVtLCBuYW1lLCBkYXRhWyBuYW1lIF0gKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgZGF0YVByaXYuc2V0KCBlbGVtLCAiaGFzRGF0YUF0dHJzIiwgdHJ1
ZSApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0
dXJuIGRhdGE7CisgICAgICAgIH0KKworICAgICAgICAvLyBTZXRzIG11bHRpcGxlIHZhbHVlcwor
ICAgICAgICBpZiAoIHR5cGVvZiBrZXkgPT09ICJvYmplY3QiICkgeworICAgICAgICAgICAgcmV0
dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgZGF0YVVzZXIuc2V0
KCB0aGlzLCBrZXkgKTsKKyAgICAgICAgICAgIH0gKTsKKyAgICAgICAgfQorCisgICAgICAgIHJl
dHVybiBhY2Nlc3MoIHRoaXMsIGZ1bmN0aW9uKCB2YWx1ZSApIHsKKyAgICAgICAgICAgIHZhciBk
YXRhOworCisgICAgICAgICAgICAvLyBUaGUgY2FsbGluZyBqUXVlcnkgb2JqZWN0IChlbGVtZW50
IG1hdGNoZXMpIGlzIG5vdCBlbXB0eQorICAgICAgICAgICAgLy8gKGFuZCB0aGVyZWZvcmUgaGFz
IGFuIGVsZW1lbnQgYXBwZWFycyBhdCB0aGlzWyAwIF0pIGFuZCB0aGUKKyAgICAgICAgICAgIC8v
IGB2YWx1ZWAgcGFyYW1ldGVyIHdhcyBub3QgdW5kZWZpbmVkLiBBbiBlbXB0eSBqUXVlcnkgb2Jq
ZWN0CisgICAgICAgICAgICAvLyB3aWxsIHJlc3VsdCBpbiBgdW5kZWZpbmVkYCBmb3IgZWxlbSA9
IHRoaXNbIDAgXSB3aGljaCB3aWxsCisgICAgICAgICAgICAvLyB0aHJvdyBhbiBleGNlcHRpb24g
aWYgYW4gYXR0ZW1wdCB0byByZWFkIGEgZGF0YSBjYWNoZSBpcyBtYWRlLgorICAgICAgICAgICAg
aWYgKCBlbGVtICYmIHZhbHVlID09PSB1bmRlZmluZWQgKSB7CisKKyAgICAgICAgICAgICAgICAv
LyBBdHRlbXB0IHRvIGdldCBkYXRhIGZyb20gdGhlIGNhY2hlCisgICAgICAgICAgICAgICAgLy8g
VGhlIGtleSB3aWxsIGFsd2F5cyBiZSBjYW1lbENhc2VkIGluIERhdGEKKyAgICAgICAgICAgICAg
ICBkYXRhID0gZGF0YVVzZXIuZ2V0KCBlbGVtLCBrZXkgKTsKKyAgICAgICAgICAgICAgICBpZiAo
IGRhdGEgIT09IHVuZGVmaW5lZCApIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGE7
CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gQXR0ZW1wdCB0byAiZGlz
Y292ZXIiIHRoZSBkYXRhIGluCisgICAgICAgICAgICAgICAgLy8gSFRNTDUgY3VzdG9tIGRhdGEt
KiBhdHRycworICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhQXR0ciggZWxlbSwga2V5ICk7Cisg
ICAgICAgICAgICAgICAgaWYgKCBkYXRhICE9PSB1bmRlZmluZWQgKSB7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBkYXRhOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg
IC8vIFdlIHRyaWVkIHJlYWxseSBoYXJkLCBidXQgdGhlIGRhdGEgZG9lc24ndCBleGlzdC4KKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFNl
dCB0aGUgZGF0YS4uLgorICAgICAgICAgICAgdGhpcy5lYWNoKCBmdW5jdGlvbigpIHsKKworICAg
ICAgICAgICAgICAgIC8vIFdlIGFsd2F5cyBzdG9yZSB0aGUgY2FtZWxDYXNlZCBrZXkKKyAgICAg
ICAgICAgICAgICBkYXRhVXNlci5zZXQoIHRoaXMsIGtleSwgdmFsdWUgKTsKKyAgICAgICAgICAg
IH0gKTsKKyAgICAgICAgfSwgbnVsbCwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggPiAxLCBudWxs
LCB0cnVlICk7CisgICAgfSwKKworICAgIHJlbW92ZURhdGE6IGZ1bmN0aW9uKCBrZXkgKSB7Cisg
ICAgICAgIHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZGF0YVVz
ZXIucmVtb3ZlKCB0aGlzLCBrZXkgKTsKKyAgICAgICAgfSApOworICAgIH0KK30gKTsKKworCitq
UXVlcnkuZXh0ZW5kKCB7CisgICAgcXVldWU6IGZ1bmN0aW9uKCBlbGVtLCB0eXBlLCBkYXRhICkg
eworICAgICAgICB2YXIgcXVldWU7CisKKyAgICAgICAgaWYgKCBlbGVtICkgeworICAgICAgICAg
ICAgdHlwZSA9ICggdHlwZSB8fCAiZngiICkgKyAicXVldWUiOworICAgICAgICAgICAgcXVldWUg
PSBkYXRhUHJpdi5nZXQoIGVsZW0sIHR5cGUgKTsKKworICAgICAgICAgICAgLy8gU3BlZWQgdXAg
ZGVxdWV1ZSBieSBnZXR0aW5nIG91dCBxdWlja2x5IGlmIHRoaXMgaXMganVzdCBhIGxvb2t1cAor
ICAgICAgICAgICAgaWYgKCBkYXRhICkgeworICAgICAgICAgICAgICAgIGlmICggIXF1ZXVlIHx8
IGpRdWVyeS5pc0FycmF5KCBkYXRhICkgKSB7CisgICAgICAgICAgICAgICAgICAgIHF1ZXVlID0g
ZGF0YVByaXYuYWNjZXNzKCBlbGVtLCB0eXBlLCBqUXVlcnkubWFrZUFycmF5KCBkYXRhICkgKTsK
KyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBxdWV1ZS5wdXNo
KCBkYXRhICk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAg
cmV0dXJuIHF1ZXVlIHx8IFtdOworICAgICAgICB9CisgICAgfSwKKworICAgIGRlcXVldWU6IGZ1
bmN0aW9uKCBlbGVtLCB0eXBlICkgeworICAgICAgICB0eXBlID0gdHlwZSB8fCAiZngiOworCisg
ICAgICAgIHZhciBxdWV1ZSA9IGpRdWVyeS5xdWV1ZSggZWxlbSwgdHlwZSApLAorICAgICAgICAg
ICAgc3RhcnRMZW5ndGggPSBxdWV1ZS5sZW5ndGgsCisgICAgICAgICAgICBmbiA9IHF1ZXVlLnNo
aWZ0KCksCisgICAgICAgICAgICBob29rcyA9IGpRdWVyeS5fcXVldWVIb29rcyggZWxlbSwgdHlw
ZSApLAorICAgICAgICAgICAgbmV4dCA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGpR
dWVyeS5kZXF1ZXVlKCBlbGVtLCB0eXBlICk7CisgICAgICAgICAgICB9OworCisgICAgICAgIC8v
IElmIHRoZSBmeCBxdWV1ZSBpcyBkZXF1ZXVlZCwgYWx3YXlzIHJlbW92ZSB0aGUgcHJvZ3Jlc3Mg
c2VudGluZWwKKyAgICAgICAgaWYgKCBmbiA9PT0gImlucHJvZ3Jlc3MiICkgeworICAgICAgICAg
ICAgZm4gPSBxdWV1ZS5zaGlmdCgpOworICAgICAgICAgICAgc3RhcnRMZW5ndGgtLTsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmICggZm4gKSB7CisKKyAgICAgICAgICAgIC8vIEFkZCBhIHByb2dy
ZXNzIHNlbnRpbmVsIHRvIHByZXZlbnQgdGhlIGZ4IHF1ZXVlIGZyb20gYmVpbmcKKyAgICAgICAg
ICAgIC8vIGF1dG9tYXRpY2FsbHkgZGVxdWV1ZWQKKyAgICAgICAgICAgIGlmICggdHlwZSA9PT0g
ImZ4IiApIHsKKyAgICAgICAgICAgICAgICBxdWV1ZS51bnNoaWZ0KCAiaW5wcm9ncmVzcyIgKTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gQ2xlYXIgdXAgdGhlIGxhc3QgcXVldWUg
c3RvcCBmdW5jdGlvbgorICAgICAgICAgICAgZGVsZXRlIGhvb2tzLnN0b3A7CisgICAgICAgICAg
ICBmbi5jYWxsKCBlbGVtLCBuZXh0LCBob29rcyApOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KCAhc3RhcnRMZW5ndGggJiYgaG9va3MgKSB7CisgICAgICAgICAgICBob29rcy5lbXB0eS5maXJl
KCk7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgLy8gTm90IHB1YmxpYyAtIGdlbmVyYXRlIGEg
cXVldWVIb29rcyBvYmplY3QsIG9yIHJldHVybiB0aGUgY3VycmVudCBvbmUKKyAgICBfcXVldWVI
b29rczogZnVuY3Rpb24oIGVsZW0sIHR5cGUgKSB7CisgICAgICAgIHZhciBrZXkgPSB0eXBlICsg
InF1ZXVlSG9va3MiOworICAgICAgICByZXR1cm4gZGF0YVByaXYuZ2V0KCBlbGVtLCBrZXkgKSB8
fCBkYXRhUHJpdi5hY2Nlc3MoIGVsZW0sIGtleSwgeworICAgICAgICAgICAgZW1wdHk6IGpRdWVy
eS5DYWxsYmFja3MoICJvbmNlIG1lbW9yeSIgKS5hZGQoIGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgICAgIGRhdGFQcml2LnJlbW92ZSggZWxlbSwgWyB0eXBlICsgInF1ZXVlIiwga2V5IF0gKTsK
KyAgICAgICAgICAgIH0gKQorICAgICAgICB9ICk7CisgICAgfQorfSApOworCitqUXVlcnkuZm4u
ZXh0ZW5kKCB7CisgICAgcXVldWU6IGZ1bmN0aW9uKCB0eXBlLCBkYXRhICkgeworICAgICAgICB2
YXIgc2V0dGVyID0gMjsKKworICAgICAgICBpZiAoIHR5cGVvZiB0eXBlICE9PSAic3RyaW5nIiAp
IHsKKyAgICAgICAgICAgIGRhdGEgPSB0eXBlOworICAgICAgICAgICAgdHlwZSA9ICJmeCI7Cisg
ICAgICAgICAgICBzZXR0ZXItLTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICggYXJndW1lbnRz
Lmxlbmd0aCA8IHNldHRlciApIHsKKyAgICAgICAgICAgIHJldHVybiBqUXVlcnkucXVldWUoIHRo
aXNbIDAgXSwgdHlwZSApOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGRhdGEgPT09IHVu
ZGVmaW5lZCA/CisgICAgICAgICAgICB0aGlzIDoKKyAgICAgICAgICAgIHRoaXMuZWFjaCggZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICAgICAgdmFyIHF1ZXVlID0galF1ZXJ5LnF1ZXVlKCB0aGlz
LCB0eXBlLCBkYXRhICk7CisKKyAgICAgICAgICAgICAgICAvLyBFbnN1cmUgYSBob29rcyBmb3Ig
dGhpcyBxdWV1ZQorICAgICAgICAgICAgICAgIGpRdWVyeS5fcXVldWVIb29rcyggdGhpcywgdHlw
ZSApOworCisgICAgICAgICAgICAgICAgaWYgKCB0eXBlID09PSAiZngiICYmIHF1ZXVlWyAwIF0g
IT09ICJpbnByb2dyZXNzIiApIHsKKyAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmRlcXVldWUo
IHRoaXMsIHR5cGUgKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9ICk7CisgICAg
fSwKKyAgICBkZXF1ZXVlOiBmdW5jdGlvbiggdHlwZSApIHsKKyAgICAgICAgcmV0dXJuIHRoaXMu
ZWFjaCggZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBqUXVlcnkuZGVxdWV1ZSggdGhpcywgdHlw
ZSApOworICAgICAgICB9ICk7CisgICAgfSwKKyAgICBjbGVhclF1ZXVlOiBmdW5jdGlvbiggdHlw
ZSApIHsKKyAgICAgICAgcmV0dXJuIHRoaXMucXVldWUoIHR5cGUgfHwgImZ4IiwgW10gKTsKKyAg
ICB9LAorCisgICAgLy8gR2V0IGEgcHJvbWlzZSByZXNvbHZlZCB3aGVuIHF1ZXVlcyBvZiBhIGNl
cnRhaW4gdHlwZQorICAgIC8vIGFyZSBlbXB0aWVkIChmeCBpcyB0aGUgdHlwZSBieSBkZWZhdWx0
KQorICAgIHByb21pc2U6IGZ1bmN0aW9uKCB0eXBlLCBvYmogKSB7CisgICAgICAgIHZhciB0bXAs
CisgICAgICAgICAgICBjb3VudCA9IDEsCisgICAgICAgICAgICBkZWZlciA9IGpRdWVyeS5EZWZl
cnJlZCgpLAorICAgICAgICAgICAgZWxlbWVudHMgPSB0aGlzLAorICAgICAgICAgICAgaSA9IHRo
aXMubGVuZ3RoLAorICAgICAgICAgICAgcmVzb2x2ZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgICAgIGlmICggISggLS1jb3VudCApICkgeworICAgICAgICAgICAgICAgICAgICBkZWZlci5y
ZXNvbHZlV2l0aCggZWxlbWVudHMsIFsgZWxlbWVudHMgXSApOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH07CisKKyAgICAgICAgaWYgKCB0eXBlb2YgdHlwZSAhPT0gInN0cmluZyIg
KSB7CisgICAgICAgICAgICBvYmogPSB0eXBlOworICAgICAgICAgICAgdHlwZSA9IHVuZGVmaW5l
ZDsKKyAgICAgICAgfQorICAgICAgICB0eXBlID0gdHlwZSB8fCAiZngiOworCisgICAgICAgIHdo
aWxlICggaS0tICkgeworICAgICAgICAgICAgdG1wID0gZGF0YVByaXYuZ2V0KCBlbGVtZW50c1sg
aSBdLCB0eXBlICsgInF1ZXVlSG9va3MiICk7CisgICAgICAgICAgICBpZiAoIHRtcCAmJiB0bXAu
ZW1wdHkgKSB7CisgICAgICAgICAgICAgICAgY291bnQrKzsKKyAgICAgICAgICAgICAgICB0bXAu
ZW1wdHkuYWRkKCByZXNvbHZlICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
cmVzb2x2ZSgpOworICAgICAgICByZXR1cm4gZGVmZXIucHJvbWlzZSggb2JqICk7CisgICAgfQor
fSApOwordmFyIHBudW0gPSAoIC9bKy1dPyg/OlxkKlwufClcZCsoPzpbZUVdWystXT9cZCt8KS8g
KS5zb3VyY2U7CisKK3ZhciByY3NzTnVtID0gbmV3IFJlZ0V4cCggIl4oPzooWystXSk9fCkoIiAr
IHBudW0gKyAiKShbYS16JV0qKSQiLCAiaSIgKTsKKworCit2YXIgY3NzRXhwYW5kID0gWyAiVG9w
IiwgIlJpZ2h0IiwgIkJvdHRvbSIsICJMZWZ0IiBdOworCit2YXIgaXNIaWRkZW5XaXRoaW5UcmVl
ID0gZnVuY3Rpb24oIGVsZW0sIGVsICkgeworCisgICAgICAgIC8vIGlzSGlkZGVuV2l0aGluVHJl
ZSBtaWdodCBiZSBjYWxsZWQgZnJvbSBqUXVlcnkjZmlsdGVyIGZ1bmN0aW9uOworICAgICAgICAv
LyBpbiB0aGF0IGNhc2UsIGVsZW1lbnQgd2lsbCBiZSBzZWNvbmQgYXJndW1lbnQKKyAgICAgICAg
ZWxlbSA9IGVsIHx8IGVsZW07CisKKyAgICAgICAgLy8gSW5saW5lIHN0eWxlIHRydW1wcyBhbGwK
KyAgICAgICAgcmV0dXJuIGVsZW0uc3R5bGUuZGlzcGxheSA9PT0gIm5vbmUiIHx8CisgICAgICAg
ICAgICBlbGVtLnN0eWxlLmRpc3BsYXkgPT09ICIiICYmCisKKyAgICAgICAgICAgIC8vIE90aGVy
d2lzZSwgY2hlY2sgY29tcHV0ZWQgc3R5bGUKKyAgICAgICAgICAgIC8vIFN1cHBvcnQ6IEZpcmVm
b3ggPD00MyAtIDQ1CisgICAgICAgICAgICAvLyBEaXNjb25uZWN0ZWQgZWxlbWVudHMgY2FuIGhh
dmUgY29tcHV0ZWQgZGlzcGxheTogbm9uZSwgc28gZmlyc3QgY29uZmlybSB0aGF0IGVsZW0gaXMK
KyAgICAgICAgICAgIC8vIGluIHRoZSBkb2N1bWVudC4KKyAgICAgICAgICAgIGpRdWVyeS5jb250
YWlucyggZWxlbS5vd25lckRvY3VtZW50LCBlbGVtICkgJiYKKworICAgICAgICAgICAgalF1ZXJ5
LmNzcyggZWxlbSwgImRpc3BsYXkiICkgPT09ICJub25lIjsKKyAgICB9OworCit2YXIgc3dhcCA9
IGZ1bmN0aW9uKCBlbGVtLCBvcHRpb25zLCBjYWxsYmFjaywgYXJncyApIHsKKyAgICB2YXIgcmV0
LCBuYW1lLAorICAgICAgICBvbGQgPSB7fTsKKworICAgIC8vIFJlbWVtYmVyIHRoZSBvbGQgdmFs
dWVzLCBhbmQgaW5zZXJ0IHRoZSBuZXcgb25lcworICAgIGZvciAoIG5hbWUgaW4gb3B0aW9ucyAp
IHsKKyAgICAgICAgb2xkWyBuYW1lIF0gPSBlbGVtLnN0eWxlWyBuYW1lIF07CisgICAgICAgIGVs
ZW0uc3R5bGVbIG5hbWUgXSA9IG9wdGlvbnNbIG5hbWUgXTsKKyAgICB9CisKKyAgICByZXQgPSBj
YWxsYmFjay5hcHBseSggZWxlbSwgYXJncyB8fCBbXSApOworCisgICAgLy8gUmV2ZXJ0IHRoZSBv
bGQgdmFsdWVzCisgICAgZm9yICggbmFtZSBpbiBvcHRpb25zICkgeworICAgICAgICBlbGVtLnN0
eWxlWyBuYW1lIF0gPSBvbGRbIG5hbWUgXTsKKyAgICB9CisKKyAgICByZXR1cm4gcmV0OworfTsK
KworCisKKworZnVuY3Rpb24gYWRqdXN0Q1NTKCBlbGVtLCBwcm9wLCB2YWx1ZVBhcnRzLCB0d2Vl
biApIHsKKyAgICB2YXIgYWRqdXN0ZWQsCisgICAgICAgIHNjYWxlID0gMSwKKyAgICAgICAgbWF4
SXRlcmF0aW9ucyA9IDIwLAorICAgICAgICBjdXJyZW50VmFsdWUgPSB0d2VlbiA/CisgICAgICAg
ICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHdlZW4uY3VyKCk7Cisg
ICAgICAgICAgICB9IDoKKyAgICAgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAg
IHJldHVybiBqUXVlcnkuY3NzKCBlbGVtLCBwcm9wLCAiIiApOworICAgICAgICAgICAgfSwKKyAg
ICAgICAgaW5pdGlhbCA9IGN1cnJlbnRWYWx1ZSgpLAorICAgICAgICB1bml0ID0gdmFsdWVQYXJ0
cyAmJiB2YWx1ZVBhcnRzWyAzIF0gfHwgKCBqUXVlcnkuY3NzTnVtYmVyWyBwcm9wIF0gPyAiIiA6
ICJweCIgKSwKKworICAgICAgICAvLyBTdGFydGluZyB2YWx1ZSBjb21wdXRhdGlvbiBpcyByZXF1
aXJlZCBmb3IgcG90ZW50aWFsIHVuaXQgbWlzbWF0Y2hlcworICAgICAgICBpbml0aWFsSW5Vbml0
ID0gKCBqUXVlcnkuY3NzTnVtYmVyWyBwcm9wIF0gfHwgdW5pdCAhPT0gInB4IiAmJiAraW5pdGlh
bCApICYmCisgICAgICAgICAgICByY3NzTnVtLmV4ZWMoIGpRdWVyeS5jc3MoIGVsZW0sIHByb3Ag
KSApOworCisgICAgaWYgKCBpbml0aWFsSW5Vbml0ICYmIGluaXRpYWxJblVuaXRbIDMgXSAhPT0g
dW5pdCApIHsKKworICAgICAgICAvLyBUcnVzdCB1bml0cyByZXBvcnRlZCBieSBqUXVlcnkuY3Nz
CisgICAgICAgIHVuaXQgPSB1bml0IHx8IGluaXRpYWxJblVuaXRbIDMgXTsKKworICAgICAgICAv
LyBNYWtlIHN1cmUgd2UgdXBkYXRlIHRoZSB0d2VlbiBwcm9wZXJ0aWVzIGxhdGVyIG9uCisgICAg
ICAgIHZhbHVlUGFydHMgPSB2YWx1ZVBhcnRzIHx8IFtdOworCisgICAgICAgIC8vIEl0ZXJhdGl2
ZWx5IGFwcHJveGltYXRlIGZyb20gYSBub256ZXJvIHN0YXJ0aW5nIHBvaW50CisgICAgICAgIGlu
aXRpYWxJblVuaXQgPSAraW5pdGlhbCB8fCAxOworCisgICAgICAgIGRvIHsKKworICAgICAgICAg
ICAgLy8gSWYgcHJldmlvdXMgaXRlcmF0aW9uIHplcm9lZCBvdXQsIGRvdWJsZSB1bnRpbCB3ZSBn
ZXQgKnNvbWV0aGluZyouCisgICAgICAgICAgICAvLyBVc2Ugc3RyaW5nIGZvciBkb3VibGluZyBz
byB3ZSBkb24ndCBhY2NpZGVudGFsbHkgc2VlIHNjYWxlIGFzIHVuY2hhbmdlZCBiZWxvdworICAg
ICAgICAgICAgc2NhbGUgPSBzY2FsZSB8fCAiLjUiOworCisgICAgICAgICAgICAvLyBBZGp1c3Qg
YW5kIGFwcGx5CisgICAgICAgICAgICBpbml0aWFsSW5Vbml0ID0gaW5pdGlhbEluVW5pdCAvIHNj
YWxlOworICAgICAgICAgICAgalF1ZXJ5LnN0eWxlKCBlbGVtLCBwcm9wLCBpbml0aWFsSW5Vbml0
ICsgdW5pdCApOworCisgICAgICAgIC8vIFVwZGF0ZSBzY2FsZSwgdG9sZXJhdGluZyB6ZXJvIG9y
IE5hTiBmcm9tIHR3ZWVuLmN1cigpCisgICAgICAgIC8vIEJyZWFrIHRoZSBsb29wIGlmIHNjYWxl
IGlzIHVuY2hhbmdlZCBvciBwZXJmZWN0LCBvciBpZiB3ZSd2ZSBqdXN0IGhhZCBlbm91Z2guCisg
ICAgICAgIH0gd2hpbGUgKAorICAgICAgICAgICAgc2NhbGUgIT09ICggc2NhbGUgPSBjdXJyZW50
VmFsdWUoKSAvIGluaXRpYWwgKSAmJiBzY2FsZSAhPT0gMSAmJiAtLW1heEl0ZXJhdGlvbnMKKyAg
ICAgICAgKTsKKyAgICB9CisKKyAgICBpZiAoIHZhbHVlUGFydHMgKSB7CisgICAgICAgIGluaXRp
YWxJblVuaXQgPSAraW5pdGlhbEluVW5pdCB8fCAraW5pdGlhbCB8fCAwOworCisgICAgICAgIC8v
IEFwcGx5IHJlbGF0aXZlIG9mZnNldCAoKz0vLT0pIGlmIHNwZWNpZmllZAorICAgICAgICBhZGp1
c3RlZCA9IHZhbHVlUGFydHNbIDEgXSA/CisgICAgICAgICAgICBpbml0aWFsSW5Vbml0ICsgKCB2
YWx1ZVBhcnRzWyAxIF0gKyAxICkgKiB2YWx1ZVBhcnRzWyAyIF0gOgorICAgICAgICAgICAgK3Zh
bHVlUGFydHNbIDIgXTsKKyAgICAgICAgaWYgKCB0d2VlbiApIHsKKyAgICAgICAgICAgIHR3ZWVu
LnVuaXQgPSB1bml0OworICAgICAgICAgICAgdHdlZW4uc3RhcnQgPSBpbml0aWFsSW5Vbml0Owor
ICAgICAgICAgICAgdHdlZW4uZW5kID0gYWRqdXN0ZWQ7CisgICAgICAgIH0KKyAgICB9CisgICAg
cmV0dXJuIGFkanVzdGVkOworfQorCisKK3ZhciBkZWZhdWx0RGlzcGxheU1hcCA9IHt9OworCitm
dW5jdGlvbiBnZXREZWZhdWx0RGlzcGxheSggZWxlbSApIHsKKyAgICB2YXIgdGVtcCwKKyAgICAg
ICAgZG9jID0gZWxlbS5vd25lckRvY3VtZW50LAorICAgICAgICBub2RlTmFtZSA9IGVsZW0ubm9k
ZU5hbWUsCisgICAgICAgIGRpc3BsYXkgPSBkZWZhdWx0RGlzcGxheU1hcFsgbm9kZU5hbWUgXTsK
KworICAgIGlmICggZGlzcGxheSApIHsKKyAgICAgICAgcmV0dXJuIGRpc3BsYXk7CisgICAgfQor
CisgICAgdGVtcCA9IGRvYy5ib2R5LmFwcGVuZENoaWxkKCBkb2MuY3JlYXRlRWxlbWVudCggbm9k
ZU5hbWUgKSApOworICAgIGRpc3BsYXkgPSBqUXVlcnkuY3NzKCB0ZW1wLCAiZGlzcGxheSIgKTsK
KworICAgIHRlbXAucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCggdGVtcCApOworCisgICAgaWYgKCBk
aXNwbGF5ID09PSAibm9uZSIgKSB7CisgICAgICAgIGRpc3BsYXkgPSAiYmxvY2siOworICAgIH0K
KyAgICBkZWZhdWx0RGlzcGxheU1hcFsgbm9kZU5hbWUgXSA9IGRpc3BsYXk7CisKKyAgICByZXR1
cm4gZGlzcGxheTsKK30KKworZnVuY3Rpb24gc2hvd0hpZGUoIGVsZW1lbnRzLCBzaG93ICkgewor
ICAgIHZhciBkaXNwbGF5LCBlbGVtLAorICAgICAgICB2YWx1ZXMgPSBbXSwKKyAgICAgICAgaW5k
ZXggPSAwLAorICAgICAgICBsZW5ndGggPSBlbGVtZW50cy5sZW5ndGg7CisKKyAgICAvLyBEZXRl
cm1pbmUgbmV3IGRpc3BsYXkgdmFsdWUgZm9yIGVsZW1lbnRzIHRoYXQgbmVlZCB0byBjaGFuZ2UK
KyAgICBmb3IgKCA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkgeworICAgICAgICBlbGVtID0g
ZWxlbWVudHNbIGluZGV4IF07CisgICAgICAgIGlmICggIWVsZW0uc3R5bGUgKSB7CisgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGRpc3BsYXkgPSBlbGVtLnN0eWxl
LmRpc3BsYXk7CisgICAgICAgIGlmICggc2hvdyApIHsKKworICAgICAgICAgICAgLy8gU2luY2Ug
d2UgZm9yY2UgdmlzaWJpbGl0eSB1cG9uIGNhc2NhZGUtaGlkZGVuIGVsZW1lbnRzLCBhbiBpbW1l
ZGlhdGUgKGFuZCBzbG93KQorICAgICAgICAgICAgLy8gY2hlY2sgaXMgcmVxdWlyZWQgaW4gdGhp
cyBmaXJzdCBsb29wIHVubGVzcyB3ZSBoYXZlIGEgbm9uZW1wdHkgZGlzcGxheSB2YWx1ZSAoZWl0
aGVyCisgICAgICAgICAgICAvLyBpbmxpbmUgb3IgYWJvdXQtdG8tYmUtcmVzdG9yZWQpCisgICAg
ICAgICAgICBpZiAoIGRpc3BsYXkgPT09ICJub25lIiApIHsKKyAgICAgICAgICAgICAgICB2YWx1
ZXNbIGluZGV4IF0gPSBkYXRhUHJpdi5nZXQoIGVsZW0sICJkaXNwbGF5IiApIHx8IG51bGw7Cisg
ICAgICAgICAgICAgICAgaWYgKCAhdmFsdWVzWyBpbmRleCBdICkgeworICAgICAgICAgICAgICAg
ICAgICBlbGVtLnN0eWxlLmRpc3BsYXkgPSAiIjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBpZiAoIGVsZW0uc3R5bGUuZGlzcGxheSA9PT0gIiIgJiYgaXNI
aWRkZW5XaXRoaW5UcmVlKCBlbGVtICkgKSB7CisgICAgICAgICAgICAgICAgdmFsdWVzWyBpbmRl
eCBdID0gZ2V0RGVmYXVsdERpc3BsYXkoIGVsZW0gKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIGlmICggZGlzcGxheSAhPT0gIm5vbmUiICkgeworICAgICAg
ICAgICAgICAgIHZhbHVlc1sgaW5kZXggXSA9ICJub25lIjsKKworICAgICAgICAgICAgICAgIC8v
IFJlbWVtYmVyIHdoYXQgd2UncmUgb3ZlcndyaXRpbmcKKyAgICAgICAgICAgICAgICBkYXRhUHJp
di5zZXQoIGVsZW0sICJkaXNwbGF5IiwgZGlzcGxheSApOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorCisgICAgLy8gU2V0IHRoZSBkaXNwbGF5IG9mIHRoZSBlbGVtZW50cyBpbiBh
IHNlY29uZCBsb29wIHRvIGF2b2lkIGNvbnN0YW50IHJlZmxvdworICAgIGZvciAoIGluZGV4ID0g
MDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7CisgICAgICAgIGlmICggdmFsdWVzWyBpbmRl
eCBdICE9IG51bGwgKSB7CisgICAgICAgICAgICBlbGVtZW50c1sgaW5kZXggXS5zdHlsZS5kaXNw
bGF5ID0gdmFsdWVzWyBpbmRleCBdOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGVs
ZW1lbnRzOworfQorCitqUXVlcnkuZm4uZXh0ZW5kKCB7CisgICAgc2hvdzogZnVuY3Rpb24oKSB7
CisgICAgICAgIHJldHVybiBzaG93SGlkZSggdGhpcywgdHJ1ZSApOworICAgIH0sCisgICAgaGlk
ZTogZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiBzaG93SGlkZSggdGhpcyApOworICAgIH0s
CisgICAgdG9nZ2xlOiBmdW5jdGlvbiggc3RhdGUgKSB7CisgICAgICAgIGlmICggdHlwZW9mIHN0
YXRlID09PSAiYm9vbGVhbiIgKSB7CisgICAgICAgICAgICByZXR1cm4gc3RhdGUgPyB0aGlzLnNo
b3coKSA6IHRoaXMuaGlkZSgpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHRoaXMuZWFj
aCggZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBpZiAoIGlzSGlkZGVuV2l0aGluVHJlZSggdGhp
cyApICkgeworICAgICAgICAgICAgICAgIGpRdWVyeSggdGhpcyApLnNob3coKTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgalF1ZXJ5KCB0aGlzICkuaGlkZSgpOworICAg
ICAgICAgICAgfQorICAgICAgICB9ICk7CisgICAgfQorfSApOwordmFyIHJjaGVja2FibGVUeXBl
ID0gKCAvXig/OmNoZWNrYm94fHJhZGlvKSQvaSApOworCit2YXIgcnRhZ05hbWUgPSAoIC88KFth
LXpdW15cL1wwPlx4MjBcdFxyXG5cZl0rKS9pICk7CisKK3ZhciByc2NyaXB0VHlwZSA9ICggL14k
fFwvKD86amF2YXxlY21hKXNjcmlwdC9pICk7CisKKworCisvLyBXZSBoYXZlIHRvIGNsb3NlIHRo
ZXNlIHRhZ3MgdG8gc3VwcG9ydCBYSFRNTCAoIzEzMjAwKQordmFyIHdyYXBNYXAgPSB7CisKKyAg
ICAvLyBTdXBwb3J0OiBJRSA8PTkgb25seQorICAgIG9wdGlvbjogWyAxLCAiPHNlbGVjdCBtdWx0
aXBsZT0nbXVsdGlwbGUnPiIsICI8L3NlbGVjdD4iIF0sCisKKyAgICAvLyBYSFRNTCBwYXJzZXJz
IGRvIG5vdCBtYWdpY2FsbHkgaW5zZXJ0IGVsZW1lbnRzIGluIHRoZQorICAgIC8vIHNhbWUgd2F5
IHRoYXQgdGFnIHNvdXAgcGFyc2VycyBkby4gU28gd2UgY2Fubm90IHNob3J0ZW4KKyAgICAvLyB0
aGlzIGJ5IG9taXR0aW5nIDx0Ym9keT4gb3Igb3RoZXIgcmVxdWlyZWQgZWxlbWVudHMuCisgICAg
dGhlYWQ6IFsgMSwgIjx0YWJsZT4iLCAiPC90YWJsZT4iIF0sCisgICAgY29sOiBbIDIsICI8dGFi
bGU+PGNvbGdyb3VwPiIsICI8L2NvbGdyb3VwPjwvdGFibGU+IiBdLAorICAgIHRyOiBbIDIsICI8
dGFibGU+PHRib2R5PiIsICI8L3Rib2R5PjwvdGFibGU+IiBdLAorICAgIHRkOiBbIDMsICI8dGFi
bGU+PHRib2R5Pjx0cj4iLCAiPC90cj48L3Rib2R5PjwvdGFibGU+IiBdLAorCisgICAgX2RlZmF1
bHQ6IFsgMCwgIiIsICIiIF0KK307CisKKy8vIFN1cHBvcnQ6IElFIDw9OSBvbmx5Cit3cmFwTWFw
Lm9wdGdyb3VwID0gd3JhcE1hcC5vcHRpb247CisKK3dyYXBNYXAudGJvZHkgPSB3cmFwTWFwLnRm
b290ID0gd3JhcE1hcC5jb2xncm91cCA9IHdyYXBNYXAuY2FwdGlvbiA9IHdyYXBNYXAudGhlYWQ7
Cit3cmFwTWFwLnRoID0gd3JhcE1hcC50ZDsKKworCitmdW5jdGlvbiBnZXRBbGwoIGNvbnRleHQs
IHRhZyApIHsKKworICAgIC8vIFN1cHBvcnQ6IElFIDw9OSAtIDExIG9ubHkKKyAgICAvLyBVc2Ug
dHlwZW9mIHRvIGF2b2lkIHplcm8tYXJndW1lbnQgbWV0aG9kIGludm9jYXRpb24gb24gaG9zdCBv
YmplY3RzICgjMTUxNTEpCisgICAgdmFyIHJldDsKKworICAgIGlmICggdHlwZW9mIGNvbnRleHQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUgIT09ICJ1bmRlZmluZWQiICkgeworICAgICAgICByZXQgPSBj
b250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lKCB0YWcgfHwgIioiICk7CisKKyAgICB9IGVsc2Ug
aWYgKCB0eXBlb2YgY29udGV4dC5xdWVyeVNlbGVjdG9yQWxsICE9PSAidW5kZWZpbmVkIiApIHsK
KyAgICAgICAgcmV0ID0gY29udGV4dC5xdWVyeVNlbGVjdG9yQWxsKCB0YWcgfHwgIioiICk7CisK
KyAgICB9IGVsc2UgeworICAgICAgICByZXQgPSBbXTsKKyAgICB9CisKKyAgICBpZiAoIHRhZyA9
PT0gdW5kZWZpbmVkIHx8IHRhZyAmJiBqUXVlcnkubm9kZU5hbWUoIGNvbnRleHQsIHRhZyApICkg
eworICAgICAgICByZXR1cm4galF1ZXJ5Lm1lcmdlKCBbIGNvbnRleHQgXSwgcmV0ICk7CisgICAg
fQorCisgICAgcmV0dXJuIHJldDsKK30KKworCisvLyBNYXJrIHNjcmlwdHMgYXMgaGF2aW5nIGFs
cmVhZHkgYmVlbiBldmFsdWF0ZWQKK2Z1bmN0aW9uIHNldEdsb2JhbEV2YWwoIGVsZW1zLCByZWZF
bGVtZW50cyApIHsKKyAgICB2YXIgaSA9IDAsCisgICAgICAgIGwgPSBlbGVtcy5sZW5ndGg7CisK
KyAgICBmb3IgKCA7IGkgPCBsOyBpKysgKSB7CisgICAgICAgIGRhdGFQcml2LnNldCgKKyAgICAg
ICAgICAgIGVsZW1zWyBpIF0sCisgICAgICAgICAgICAiZ2xvYmFsRXZhbCIsCisgICAgICAgICAg
ICAhcmVmRWxlbWVudHMgfHwgZGF0YVByaXYuZ2V0KCByZWZFbGVtZW50c1sgaSBdLCAiZ2xvYmFs
RXZhbCIgKQorICAgICAgICApOworICAgIH0KK30KKworCit2YXIgcmh0bWwgPSAvPHwmIz9cdys7
LzsKKworZnVuY3Rpb24gYnVpbGRGcmFnbWVudCggZWxlbXMsIGNvbnRleHQsIHNjcmlwdHMsIHNl
bGVjdGlvbiwgaWdub3JlZCApIHsKKyAgICB2YXIgZWxlbSwgdG1wLCB0YWcsIHdyYXAsIGNvbnRh
aW5zLCBqLAorICAgICAgICBmcmFnbWVudCA9IGNvbnRleHQuY3JlYXRlRG9jdW1lbnRGcmFnbWVu
dCgpLAorICAgICAgICBub2RlcyA9IFtdLAorICAgICAgICBpID0gMCwKKyAgICAgICAgbCA9IGVs
ZW1zLmxlbmd0aDsKKworICAgIGZvciAoIDsgaSA8IGw7IGkrKyApIHsKKyAgICAgICAgZWxlbSA9
IGVsZW1zWyBpIF07CisKKyAgICAgICAgaWYgKCBlbGVtIHx8IGVsZW0gPT09IDAgKSB7CisKKyAg
ICAgICAgICAgIC8vIEFkZCBub2RlcyBkaXJlY3RseQorICAgICAgICAgICAgaWYgKCBqUXVlcnku
dHlwZSggZWxlbSApID09PSAib2JqZWN0IiApIHsKKworICAgICAgICAgICAgICAgIC8vIFN1cHBv
cnQ6IEFuZHJvaWQgPD00LjAgb25seSwgUGhhbnRvbUpTIDEgb25seQorICAgICAgICAgICAgICAg
IC8vIHB1c2guYXBwbHkoXywgYXJyYXlsaWtlKSB0aHJvd3Mgb24gYW5jaWVudCBXZWJLaXQKKyAg
ICAgICAgICAgICAgICBqUXVlcnkubWVyZ2UoIG5vZGVzLCBlbGVtLm5vZGVUeXBlID8gWyBlbGVt
IF0gOiBlbGVtICk7CisKKyAgICAgICAgICAgIC8vIENvbnZlcnQgbm9uLWh0bWwgaW50byBhIHRl
eHQgbm9kZQorICAgICAgICAgICAgfSBlbHNlIGlmICggIXJodG1sLnRlc3QoIGVsZW0gKSApIHsK
KyAgICAgICAgICAgICAgICBub2Rlcy5wdXNoKCBjb250ZXh0LmNyZWF0ZVRleHROb2RlKCBlbGVt
ICkgKTsKKworICAgICAgICAgICAgLy8gQ29udmVydCBodG1sIGludG8gRE9NIG5vZGVzCisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHRtcCA9IHRtcCB8fCBmcmFnbWVudC5h
cHBlbmRDaGlsZCggY29udGV4dC5jcmVhdGVFbGVtZW50KCAiZGl2IiApICk7CisKKyAgICAgICAg
ICAgICAgICAvLyBEZXNlcmlhbGl6ZSBhIHN0YW5kYXJkIHJlcHJlc2VudGF0aW9uCisgICAgICAg
ICAgICAgICAgdGFnID0gKCBydGFnTmFtZS5leGVjKCBlbGVtICkgfHwgWyAiIiwgIiIgXSApWyAx
IF0udG9Mb3dlckNhc2UoKTsKKyAgICAgICAgICAgICAgICB3cmFwID0gd3JhcE1hcFsgdGFnIF0g
fHwgd3JhcE1hcC5fZGVmYXVsdDsKKyAgICAgICAgICAgICAgICB0bXAuaW5uZXJIVE1MID0gd3Jh
cFsgMSBdICsgalF1ZXJ5Lmh0bWxQcmVmaWx0ZXIoIGVsZW0gKSArIHdyYXBbIDIgXTsKKworICAg
ICAgICAgICAgICAgIC8vIERlc2NlbmQgdGhyb3VnaCB3cmFwcGVycyB0byB0aGUgcmlnaHQgY29u
dGVudAorICAgICAgICAgICAgICAgIGogPSB3cmFwWyAwIF07CisgICAgICAgICAgICAgICAgd2hp
bGUgKCBqLS0gKSB7CisgICAgICAgICAgICAgICAgICAgIHRtcCA9IHRtcC5sYXN0Q2hpbGQ7Cisg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gU3VwcG9ydDogQW5kcm9pZCA8
PTQuMCBvbmx5LCBQaGFudG9tSlMgMSBvbmx5CisgICAgICAgICAgICAgICAgLy8gcHVzaC5hcHBs
eShfLCBhcnJheWxpa2UpIHRocm93cyBvbiBhbmNpZW50IFdlYktpdAorICAgICAgICAgICAgICAg
IGpRdWVyeS5tZXJnZSggbm9kZXMsIHRtcC5jaGlsZE5vZGVzICk7CisKKyAgICAgICAgICAgICAg
ICAvLyBSZW1lbWJlciB0aGUgdG9wLWxldmVsIGNvbnRhaW5lcgorICAgICAgICAgICAgICAgIHRt
cCA9IGZyYWdtZW50LmZpcnN0Q2hpbGQ7CisKKyAgICAgICAgICAgICAgICAvLyBFbnN1cmUgdGhl
IGNyZWF0ZWQgbm9kZXMgYXJlIG9ycGhhbmVkICgjMTIzOTIpCisgICAgICAgICAgICAgICAgdG1w
LnRleHRDb250ZW50ID0gIiI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICAvLyBSZW1vdmUgd3JhcHBlciBmcm9tIGZyYWdtZW50CisgICAgZnJhZ21lbnQudGV4dENvbnRl
bnQgPSAiIjsKKworICAgIGkgPSAwOworICAgIHdoaWxlICggKCBlbGVtID0gbm9kZXNbIGkrKyBd
ICkgKSB7CisKKyAgICAgICAgLy8gU2tpcCBlbGVtZW50cyBhbHJlYWR5IGluIHRoZSBjb250ZXh0
IGNvbGxlY3Rpb24gKHRyYWMtNDA4NykKKyAgICAgICAgaWYgKCBzZWxlY3Rpb24gJiYgalF1ZXJ5
LmluQXJyYXkoIGVsZW0sIHNlbGVjdGlvbiApID4gLTEgKSB7CisgICAgICAgICAgICBpZiAoIGln
bm9yZWQgKSB7CisgICAgICAgICAgICAgICAgaWdub3JlZC5wdXNoKCBlbGVtICk7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnRh
aW5zID0galF1ZXJ5LmNvbnRhaW5zKCBlbGVtLm93bmVyRG9jdW1lbnQsIGVsZW0gKTsKKworICAg
ICAgICAvLyBBcHBlbmQgdG8gZnJhZ21lbnQKKyAgICAgICAgdG1wID0gZ2V0QWxsKCBmcmFnbWVu
dC5hcHBlbmRDaGlsZCggZWxlbSApLCAic2NyaXB0IiApOworCisgICAgICAgIC8vIFByZXNlcnZl
IHNjcmlwdCBldmFsdWF0aW9uIGhpc3RvcnkKKyAgICAgICAgaWYgKCBjb250YWlucyApIHsKKyAg
ICAgICAgICAgIHNldEdsb2JhbEV2YWwoIHRtcCApOworICAgICAgICB9CisKKyAgICAgICAgLy8g
Q2FwdHVyZSBleGVjdXRhYmxlcworICAgICAgICBpZiAoIHNjcmlwdHMgKSB7CisgICAgICAgICAg
ICBqID0gMDsKKyAgICAgICAgICAgIHdoaWxlICggKCBlbGVtID0gdG1wWyBqKysgXSApICkgewor
ICAgICAgICAgICAgICAgIGlmICggcnNjcmlwdFR5cGUudGVzdCggZWxlbS50eXBlIHx8ICIiICkg
KSB7CisgICAgICAgICAgICAgICAgICAgIHNjcmlwdHMucHVzaCggZWxlbSApOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBm
cmFnbWVudDsKK30KKworCisoIGZ1bmN0aW9uKCkgeworICAgIHZhciBmcmFnbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSwKKyAgICAgICAgZGl2ID0gZnJhZ21lbnQuYXBw
ZW5kQ2hpbGQoIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoICJkaXYiICkgKSwKKyAgICAgICAgaW5w
dXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCAiaW5wdXQiICk7CisKKyAgICAvLyBTdXBwb3J0
OiBBbmRyb2lkIDQuMCAtIDQuMyBvbmx5CisgICAgLy8gQ2hlY2sgc3RhdGUgbG9zdCBpZiB0aGUg
bmFtZSBpcyBzZXQgKCMxMTIxNykKKyAgICAvLyBTdXBwb3J0OiBXaW5kb3dzIFdlYiBBcHBzIChX
V0EpCisgICAgLy8gYG5hbWVgIGFuZCBgdHlwZWAgbXVzdCB1c2UgLnNldEF0dHJpYnV0ZSBmb3Ig
V1dBICgjMTQ5MDEpCisgICAgaW5wdXQuc2V0QXR0cmlidXRlKCAidHlwZSIsICJyYWRpbyIgKTsK
KyAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoICJjaGVja2VkIiwgImNoZWNrZWQiICk7CisgICAgaW5w
dXQuc2V0QXR0cmlidXRlKCAibmFtZSIsICJ0IiApOworCisgICAgZGl2LmFwcGVuZENoaWxkKCBp
bnB1dCApOworCisgICAgLy8gU3VwcG9ydDogQW5kcm9pZCA8PTQuMSBvbmx5CisgICAgLy8gT2xk
ZXIgV2ViS2l0IGRvZXNuJ3QgY2xvbmUgY2hlY2tlZCBzdGF0ZSBjb3JyZWN0bHkgaW4gZnJhZ21l
bnRzCisgICAgc3VwcG9ydC5jaGVja0Nsb25lID0gZGl2LmNsb25lTm9kZSggdHJ1ZSApLmNsb25l
Tm9kZSggdHJ1ZSApLmxhc3RDaGlsZC5jaGVja2VkOworCisgICAgLy8gU3VwcG9ydDogSUUgPD0x
MSBvbmx5CisgICAgLy8gTWFrZSBzdXJlIHRleHRhcmVhIChhbmQgY2hlY2tib3gpIGRlZmF1bHRW
YWx1ZSBpcyBwcm9wZXJseSBjbG9uZWQKKyAgICBkaXYuaW5uZXJIVE1MID0gIjx0ZXh0YXJlYT54
PC90ZXh0YXJlYT4iOworICAgIHN1cHBvcnQubm9DbG9uZUNoZWNrZWQgPSAhIWRpdi5jbG9uZU5v
ZGUoIHRydWUgKS5sYXN0Q2hpbGQuZGVmYXVsdFZhbHVlOworfSApKCk7Cit2YXIgZG9jdW1lbnRF
bGVtZW50ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50OworCisKKwordmFyCisgICAgcmtleUV2
ZW50ID0gL15rZXkvLAorICAgIHJtb3VzZUV2ZW50ID0gL14oPzptb3VzZXxwb2ludGVyfGNvbnRl
eHRtZW51fGRyYWd8ZHJvcCl8Y2xpY2svLAorICAgIHJ0eXBlbmFtZXNwYWNlID0gL14oW14uXSop
KD86XC4oLispfCkvOworCitmdW5jdGlvbiByZXR1cm5UcnVlKCkgeworICAgIHJldHVybiB0cnVl
OworfQorCitmdW5jdGlvbiByZXR1cm5GYWxzZSgpIHsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
Ky8vIFN1cHBvcnQ6IElFIDw9OSBvbmx5CisvLyBTZWUgIzEzMzkzIGZvciBtb3JlIGluZm8KK2Z1
bmN0aW9uIHNhZmVBY3RpdmVFbGVtZW50KCkgeworICAgIHRyeSB7CisgICAgICAgIHJldHVybiBk
b2N1bWVudC5hY3RpdmVFbGVtZW50OworICAgIH0gY2F0Y2ggKCBlcnIgKSB7IH0KK30KKworZnVu
Y3Rpb24gb24oIGVsZW0sIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4sIG9uZSApIHsKKyAgICB2
YXIgb3JpZ0ZuLCB0eXBlOworCisgICAgLy8gVHlwZXMgY2FuIGJlIGEgbWFwIG9mIHR5cGVzL2hh
bmRsZXJzCisgICAgaWYgKCB0eXBlb2YgdHlwZXMgPT09ICJvYmplY3QiICkgeworCisgICAgICAg
IC8vICggdHlwZXMtT2JqZWN0LCBzZWxlY3RvciwgZGF0YSApCisgICAgICAgIGlmICggdHlwZW9m
IHNlbGVjdG9yICE9PSAic3RyaW5nIiApIHsKKworICAgICAgICAgICAgLy8gKCB0eXBlcy1PYmpl
Y3QsIGRhdGEgKQorICAgICAgICAgICAgZGF0YSA9IGRhdGEgfHwgc2VsZWN0b3I7CisgICAgICAg
ICAgICBzZWxlY3RvciA9IHVuZGVmaW5lZDsKKyAgICAgICAgfQorICAgICAgICBmb3IgKCB0eXBl
IGluIHR5cGVzICkgeworICAgICAgICAgICAgb24oIGVsZW0sIHR5cGUsIHNlbGVjdG9yLCBkYXRh
LCB0eXBlc1sgdHlwZSBdLCBvbmUgKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZWxlbTsK
KyAgICB9CisKKyAgICBpZiAoIGRhdGEgPT0gbnVsbCAmJiBmbiA9PSBudWxsICkgeworCisgICAg
ICAgIC8vICggdHlwZXMsIGZuICkKKyAgICAgICAgZm4gPSBzZWxlY3RvcjsKKyAgICAgICAgZGF0
YSA9IHNlbGVjdG9yID0gdW5kZWZpbmVkOworICAgIH0gZWxzZSBpZiAoIGZuID09IG51bGwgKSB7
CisgICAgICAgIGlmICggdHlwZW9mIHNlbGVjdG9yID09PSAic3RyaW5nIiApIHsKKworICAgICAg
ICAgICAgLy8gKCB0eXBlcywgc2VsZWN0b3IsIGZuICkKKyAgICAgICAgICAgIGZuID0gZGF0YTsK
KyAgICAgICAgICAgIGRhdGEgPSB1bmRlZmluZWQ7CisgICAgICAgIH0gZWxzZSB7CisKKyAgICAg
ICAgICAgIC8vICggdHlwZXMsIGRhdGEsIGZuICkKKyAgICAgICAgICAgIGZuID0gZGF0YTsKKyAg
ICAgICAgICAgIGRhdGEgPSBzZWxlY3RvcjsKKyAgICAgICAgICAgIHNlbGVjdG9yID0gdW5kZWZp
bmVkOworICAgICAgICB9CisgICAgfQorICAgIGlmICggZm4gPT09IGZhbHNlICkgeworICAgICAg
ICBmbiA9IHJldHVybkZhbHNlOworICAgIH0gZWxzZSBpZiAoICFmbiApIHsKKyAgICAgICAgcmV0
dXJuIGVsZW07CisgICAgfQorCisgICAgaWYgKCBvbmUgPT09IDEgKSB7CisgICAgICAgIG9yaWdG
biA9IGZuOworICAgICAgICBmbiA9IGZ1bmN0aW9uKCBldmVudCApIHsKKworICAgICAgICAgICAg
Ly8gQ2FuIHVzZSBhbiBlbXB0eSBzZXQsIHNpbmNlIGV2ZW50IGNvbnRhaW5zIHRoZSBpbmZvCisg
ICAgICAgICAgICBqUXVlcnkoKS5vZmYoIGV2ZW50ICk7CisgICAgICAgICAgICByZXR1cm4gb3Jp
Z0ZuLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKTsKKyAgICAgICAgfTsKKworICAgICAgICAvLyBV
c2Ugc2FtZSBndWlkIHNvIGNhbGxlciBjYW4gcmVtb3ZlIHVzaW5nIG9yaWdGbgorICAgICAgICBm
bi5ndWlkID0gb3JpZ0ZuLmd1aWQgfHwgKCBvcmlnRm4uZ3VpZCA9IGpRdWVyeS5ndWlkKysgKTsK
KyAgICB9CisgICAgcmV0dXJuIGVsZW0uZWFjaCggZnVuY3Rpb24oKSB7CisgICAgICAgIGpRdWVy
eS5ldmVudC5hZGQoIHRoaXMsIHR5cGVzLCBmbiwgZGF0YSwgc2VsZWN0b3IgKTsKKyAgICB9ICk7
Cit9CisKKy8qCisgKiBIZWxwZXIgZnVuY3Rpb25zIGZvciBtYW5hZ2luZyBldmVudHMgLS0gbm90
IHBhcnQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuCisgKiBQcm9wcyB0byBEZWFuIEVkd2FyZHMn
IGFkZEV2ZW50IGxpYnJhcnkgZm9yIG1hbnkgb2YgdGhlIGlkZWFzLgorICovCitqUXVlcnkuZXZl
bnQgPSB7CisKKyAgICBnbG9iYWw6IHt9LAorCisgICAgYWRkOiBmdW5jdGlvbiggZWxlbSwgdHlw
ZXMsIGhhbmRsZXIsIGRhdGEsIHNlbGVjdG9yICkgeworCisgICAgICAgIHZhciBoYW5kbGVPYmpJ
biwgZXZlbnRIYW5kbGUsIHRtcCwKKyAgICAgICAgICAgIGV2ZW50cywgdCwgaGFuZGxlT2JqLAor
ICAgICAgICAgICAgc3BlY2lhbCwgaGFuZGxlcnMsIHR5cGUsIG5hbWVzcGFjZXMsIG9yaWdUeXBl
LAorICAgICAgICAgICAgZWxlbURhdGEgPSBkYXRhUHJpdi5nZXQoIGVsZW0gKTsKKworICAgICAg
ICAvLyBEb24ndCBhdHRhY2ggZXZlbnRzIHRvIG5vRGF0YSBvciB0ZXh0L2NvbW1lbnQgbm9kZXMg
KGJ1dCBhbGxvdyBwbGFpbiBvYmplY3RzKQorICAgICAgICBpZiAoICFlbGVtRGF0YSApIHsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIENhbGxlciBjYW4gcGFz
cyBpbiBhbiBvYmplY3Qgb2YgY3VzdG9tIGRhdGEgaW4gbGlldSBvZiB0aGUgaGFuZGxlcgorICAg
ICAgICBpZiAoIGhhbmRsZXIuaGFuZGxlciApIHsKKyAgICAgICAgICAgIGhhbmRsZU9iakluID0g
aGFuZGxlcjsKKyAgICAgICAgICAgIGhhbmRsZXIgPSBoYW5kbGVPYmpJbi5oYW5kbGVyOworICAg
ICAgICAgICAgc2VsZWN0b3IgPSBoYW5kbGVPYmpJbi5zZWxlY3RvcjsKKyAgICAgICAgfQorCisg
ICAgICAgIC8vIEVuc3VyZSB0aGF0IGludmFsaWQgc2VsZWN0b3JzIHRocm93IGV4Y2VwdGlvbnMg
YXQgYXR0YWNoIHRpbWUKKyAgICAgICAgLy8gRXZhbHVhdGUgYWdhaW5zdCBkb2N1bWVudEVsZW1l
bnQgaW4gY2FzZSBlbGVtIGlzIGEgbm9uLWVsZW1lbnQgbm9kZSAoZS5nLiwgZG9jdW1lbnQpCisg
ICAgICAgIGlmICggc2VsZWN0b3IgKSB7CisgICAgICAgICAgICBqUXVlcnkuZmluZC5tYXRjaGVz
U2VsZWN0b3IoIGRvY3VtZW50RWxlbWVudCwgc2VsZWN0b3IgKTsKKyAgICAgICAgfQorCisgICAg
ICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBoYW5kbGVyIGhhcyBhIHVuaXF1ZSBJRCwgdXNlZCB0
byBmaW5kL3JlbW92ZSBpdCBsYXRlcgorICAgICAgICBpZiAoICFoYW5kbGVyLmd1aWQgKSB7Cisg
ICAgICAgICAgICBoYW5kbGVyLmd1aWQgPSBqUXVlcnkuZ3VpZCsrOworICAgICAgICB9CisKKyAg
ICAgICAgLy8gSW5pdCB0aGUgZWxlbWVudCdzIGV2ZW50IHN0cnVjdHVyZSBhbmQgbWFpbiBoYW5k
bGVyLCBpZiB0aGlzIGlzIHRoZSBmaXJzdAorICAgICAgICBpZiAoICEoIGV2ZW50cyA9IGVsZW1E
YXRhLmV2ZW50cyApICkgeworICAgICAgICAgICAgZXZlbnRzID0gZWxlbURhdGEuZXZlbnRzID0g
e307CisgICAgICAgIH0KKyAgICAgICAgaWYgKCAhKCBldmVudEhhbmRsZSA9IGVsZW1EYXRhLmhh
bmRsZSApICkgeworICAgICAgICAgICAgZXZlbnRIYW5kbGUgPSBlbGVtRGF0YS5oYW5kbGUgPSBm
dW5jdGlvbiggZSApIHsKKworICAgICAgICAgICAgICAgIC8vIERpc2NhcmQgdGhlIHNlY29uZCBl
dmVudCBvZiBhIGpRdWVyeS5ldmVudC50cmlnZ2VyKCkgYW5kCisgICAgICAgICAgICAgICAgLy8g
d2hlbiBhbiBldmVudCBpcyBjYWxsZWQgYWZ0ZXIgYSBwYWdlIGhhcyB1bmxvYWRlZAorICAgICAg
ICAgICAgICAgIHJldHVybiB0eXBlb2YgalF1ZXJ5ICE9PSAidW5kZWZpbmVkIiAmJiBqUXVlcnku
ZXZlbnQudHJpZ2dlcmVkICE9PSBlLnR5cGUgPworICAgICAgICAgICAgICAgICAgICBqUXVlcnku
ZXZlbnQuZGlzcGF0Y2guYXBwbHkoIGVsZW0sIGFyZ3VtZW50cyApIDogdW5kZWZpbmVkOworICAg
ICAgICAgICAgfTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEhhbmRsZSBtdWx0aXBsZSBldmVu
dHMgc2VwYXJhdGVkIGJ5IGEgc3BhY2UKKyAgICAgICAgdHlwZXMgPSAoIHR5cGVzIHx8ICIiICku
bWF0Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbICIiIF07CisgICAgICAgIHQgPSB0eXBlcy5sZW5n
dGg7CisgICAgICAgIHdoaWxlICggdC0tICkgeworICAgICAgICAgICAgdG1wID0gcnR5cGVuYW1l
c3BhY2UuZXhlYyggdHlwZXNbIHQgXSApIHx8IFtdOworICAgICAgICAgICAgdHlwZSA9IG9yaWdU
eXBlID0gdG1wWyAxIF07CisgICAgICAgICAgICBuYW1lc3BhY2VzID0gKCB0bXBbIDIgXSB8fCAi
IiApLnNwbGl0KCAiLiIgKS5zb3J0KCk7CisKKyAgICAgICAgICAgIC8vIFRoZXJlICptdXN0KiBi
ZSBhIHR5cGUsIG5vIGF0dGFjaGluZyBuYW1lc3BhY2Utb25seSBoYW5kbGVycworICAgICAgICAg
ICAgaWYgKCAhdHlwZSApIHsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgLy8gSWYgZXZlbnQgY2hhbmdlcyBpdHMgdHlwZSwgdXNlIHRoZSBz
cGVjaWFsIGV2ZW50IGhhbmRsZXJzIGZvciB0aGUgY2hhbmdlZCB0eXBlCisgICAgICAgICAgICBz
cGVjaWFsID0galF1ZXJ5LmV2ZW50LnNwZWNpYWxbIHR5cGUgXSB8fCB7fTsKKworICAgICAgICAg
ICAgLy8gSWYgc2VsZWN0b3IgZGVmaW5lZCwgZGV0ZXJtaW5lIHNwZWNpYWwgZXZlbnQgYXBpIHR5
cGUsIG90aGVyd2lzZSBnaXZlbiB0eXBlCisgICAgICAgICAgICB0eXBlID0gKCBzZWxlY3RvciA/
IHNwZWNpYWwuZGVsZWdhdGVUeXBlIDogc3BlY2lhbC5iaW5kVHlwZSApIHx8IHR5cGU7CisKKyAg
ICAgICAgICAgIC8vIFVwZGF0ZSBzcGVjaWFsIGJhc2VkIG9uIG5ld2x5IHJlc2V0IHR5cGUKKyAg
ICAgICAgICAgIHNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgdHlwZSBdIHx8IHt9Owor
CisgICAgICAgICAgICAvLyBoYW5kbGVPYmogaXMgcGFzc2VkIHRvIGFsbCBldmVudCBoYW5kbGVy
cworICAgICAgICAgICAgaGFuZGxlT2JqID0galF1ZXJ5LmV4dGVuZCggeworICAgICAgICAgICAg
ICAgIHR5cGU6IHR5cGUsCisgICAgICAgICAgICAgICAgb3JpZ1R5cGU6IG9yaWdUeXBlLAorICAg
ICAgICAgICAgICAgIGRhdGE6IGRhdGEsCisgICAgICAgICAgICAgICAgaGFuZGxlcjogaGFuZGxl
ciwKKyAgICAgICAgICAgICAgICBndWlkOiBoYW5kbGVyLmd1aWQsCisgICAgICAgICAgICAgICAg
c2VsZWN0b3I6IHNlbGVjdG9yLAorICAgICAgICAgICAgICAgIG5lZWRzQ29udGV4dDogc2VsZWN0
b3IgJiYgalF1ZXJ5LmV4cHIubWF0Y2gubmVlZHNDb250ZXh0LnRlc3QoIHNlbGVjdG9yICksCisg
ICAgICAgICAgICAgICAgbmFtZXNwYWNlOiBuYW1lc3BhY2VzLmpvaW4oICIuIiApCisgICAgICAg
ICAgICB9LCBoYW5kbGVPYmpJbiApOworCisgICAgICAgICAgICAvLyBJbml0IHRoZSBldmVudCBo
YW5kbGVyIHF1ZXVlIGlmIHdlJ3JlIHRoZSBmaXJzdAorICAgICAgICAgICAgaWYgKCAhKCBoYW5k
bGVycyA9IGV2ZW50c1sgdHlwZSBdICkgKSB7CisgICAgICAgICAgICAgICAgaGFuZGxlcnMgPSBl
dmVudHNbIHR5cGUgXSA9IFtdOworICAgICAgICAgICAgICAgIGhhbmRsZXJzLmRlbGVnYXRlQ291
bnQgPSAwOworCisgICAgICAgICAgICAgICAgLy8gT25seSB1c2UgYWRkRXZlbnRMaXN0ZW5lciBp
ZiB0aGUgc3BlY2lhbCBldmVudHMgaGFuZGxlciByZXR1cm5zIGZhbHNlCisgICAgICAgICAgICAg
ICAgaWYgKCAhc3BlY2lhbC5zZXR1cCB8fAorICAgICAgICAgICAgICAgICAgICBzcGVjaWFsLnNl
dHVwLmNhbGwoIGVsZW0sIGRhdGEsIG5hbWVzcGFjZXMsIGV2ZW50SGFuZGxlICkgPT09IGZhbHNl
ICkgeworCisgICAgICAgICAgICAgICAgICAgIGlmICggZWxlbS5hZGRFdmVudExpc3RlbmVyICkg
eworICAgICAgICAgICAgICAgICAgICAgICAgZWxlbS5hZGRFdmVudExpc3RlbmVyKCB0eXBlLCBl
dmVudEhhbmRsZSApOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIHNwZWNpYWwuYWRkICkgeworICAgICAg
ICAgICAgICAgIHNwZWNpYWwuYWRkLmNhbGwoIGVsZW0sIGhhbmRsZU9iaiApOworCisgICAgICAg
ICAgICAgICAgaWYgKCAhaGFuZGxlT2JqLmhhbmRsZXIuZ3VpZCApIHsKKyAgICAgICAgICAgICAg
ICAgICAgaGFuZGxlT2JqLmhhbmRsZXIuZ3VpZCA9IGhhbmRsZXIuZ3VpZDsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEFkZCB0byB0aGUgZWxlbWVu
dCdzIGhhbmRsZXIgbGlzdCwgZGVsZWdhdGVzIGluIGZyb250CisgICAgICAgICAgICBpZiAoIHNl
bGVjdG9yICkgeworICAgICAgICAgICAgICAgIGhhbmRsZXJzLnNwbGljZSggaGFuZGxlcnMuZGVs
ZWdhdGVDb3VudCsrLCAwLCBoYW5kbGVPYmogKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgaGFuZGxlcnMucHVzaCggaGFuZGxlT2JqICk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIC8vIEtlZXAgdHJhY2sgb2Ygd2hpY2ggZXZlbnRzIGhhdmUgZXZlciBiZWVu
IHVzZWQsIGZvciBldmVudCBvcHRpbWl6YXRpb24KKyAgICAgICAgICAgIGpRdWVyeS5ldmVudC5n
bG9iYWxbIHR5cGUgXSA9IHRydWU7CisgICAgICAgIH0KKworICAgIH0sCisKKyAgICAvLyBEZXRh
Y2ggYW4gZXZlbnQgb3Igc2V0IG9mIGV2ZW50cyBmcm9tIGFuIGVsZW1lbnQKKyAgICByZW1vdmU6
IGZ1bmN0aW9uKCBlbGVtLCB0eXBlcywgaGFuZGxlciwgc2VsZWN0b3IsIG1hcHBlZFR5cGVzICkg
eworCisgICAgICAgIHZhciBqLCBvcmlnQ291bnQsIHRtcCwKKyAgICAgICAgICAgIGV2ZW50cywg
dCwgaGFuZGxlT2JqLAorICAgICAgICAgICAgc3BlY2lhbCwgaGFuZGxlcnMsIHR5cGUsIG5hbWVz
cGFjZXMsIG9yaWdUeXBlLAorICAgICAgICAgICAgZWxlbURhdGEgPSBkYXRhUHJpdi5oYXNEYXRh
KCBlbGVtICkgJiYgZGF0YVByaXYuZ2V0KCBlbGVtICk7CisKKyAgICAgICAgaWYgKCAhZWxlbURh
dGEgfHwgISggZXZlbnRzID0gZWxlbURhdGEuZXZlbnRzICkgKSB7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBPbmNlIGZvciBlYWNoIHR5cGUubmFtZXNwYWNl
IGluIHR5cGVzOyB0eXBlIG1heSBiZSBvbWl0dGVkCisgICAgICAgIHR5cGVzID0gKCB0eXBlcyB8
fCAiIiApLm1hdGNoKCBybm90aHRtbHdoaXRlICkgfHwgWyAiIiBdOworICAgICAgICB0ID0gdHlw
ZXMubGVuZ3RoOworICAgICAgICB3aGlsZSAoIHQtLSApIHsKKyAgICAgICAgICAgIHRtcCA9IHJ0
eXBlbmFtZXNwYWNlLmV4ZWMoIHR5cGVzWyB0IF0gKSB8fCBbXTsKKyAgICAgICAgICAgIHR5cGUg
PSBvcmlnVHlwZSA9IHRtcFsgMSBdOworICAgICAgICAgICAgbmFtZXNwYWNlcyA9ICggdG1wWyAy
IF0gfHwgIiIgKS5zcGxpdCggIi4iICkuc29ydCgpOworCisgICAgICAgICAgICAvLyBVbmJpbmQg
YWxsIGV2ZW50cyAob24gdGhpcyBuYW1lc3BhY2UsIGlmIHByb3ZpZGVkKSBmb3IgdGhlIGVsZW1l
bnQKKyAgICAgICAgICAgIGlmICggIXR5cGUgKSB7CisgICAgICAgICAgICAgICAgZm9yICggdHlw
ZSBpbiBldmVudHMgKSB7CisgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5ldmVudC5yZW1vdmUo
IGVsZW0sIHR5cGUgKyB0eXBlc1sgdCBdLCBoYW5kbGVyLCBzZWxlY3RvciwgdHJ1ZSApOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgc3BlY2lhbCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsWyB0eXBlIF0gfHwg
e307CisgICAgICAgICAgICB0eXBlID0gKCBzZWxlY3RvciA/IHNwZWNpYWwuZGVsZWdhdGVUeXBl
IDogc3BlY2lhbC5iaW5kVHlwZSApIHx8IHR5cGU7CisgICAgICAgICAgICBoYW5kbGVycyA9IGV2
ZW50c1sgdHlwZSBdIHx8IFtdOworICAgICAgICAgICAgdG1wID0gdG1wWyAyIF0gJiYKKyAgICAg
ICAgICAgICAgICBuZXcgUmVnRXhwKCAiKF58XFwuKSIgKyBuYW1lc3BhY2VzLmpvaW4oICJcXC4o
PzouKlxcLnwpIiApICsgIihcXC58JCkiICk7CisKKyAgICAgICAgICAgIC8vIFJlbW92ZSBtYXRj
aGluZyBldmVudHMKKyAgICAgICAgICAgIG9yaWdDb3VudCA9IGogPSBoYW5kbGVycy5sZW5ndGg7
CisgICAgICAgICAgICB3aGlsZSAoIGotLSApIHsKKyAgICAgICAgICAgICAgICBoYW5kbGVPYmog
PSBoYW5kbGVyc1sgaiBdOworCisgICAgICAgICAgICAgICAgaWYgKCAoIG1hcHBlZFR5cGVzIHx8
IG9yaWdUeXBlID09PSBoYW5kbGVPYmoub3JpZ1R5cGUgKSAmJgorICAgICAgICAgICAgICAgICAg
ICAoICFoYW5kbGVyIHx8IGhhbmRsZXIuZ3VpZCA9PT0gaGFuZGxlT2JqLmd1aWQgKSAmJgorICAg
ICAgICAgICAgICAgICAgICAoICF0bXAgfHwgdG1wLnRlc3QoIGhhbmRsZU9iai5uYW1lc3BhY2Ug
KSApICYmCisgICAgICAgICAgICAgICAgICAgICggIXNlbGVjdG9yIHx8IHNlbGVjdG9yID09PSBo
YW5kbGVPYmouc2VsZWN0b3IgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yID09
PSAiKioiICYmIGhhbmRsZU9iai5zZWxlY3RvciApICkgeworICAgICAgICAgICAgICAgICAgICBo
YW5kbGVycy5zcGxpY2UoIGosIDEgKTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoIGhhbmRs
ZU9iai5zZWxlY3RvciApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXJzLmRlbGVn
YXRlQ291bnQtLTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBp
ZiAoIHNwZWNpYWwucmVtb3ZlICkgeworICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lhbC5y
ZW1vdmUuY2FsbCggZWxlbSwgaGFuZGxlT2JqICk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFJlbW92ZSBn
ZW5lcmljIGV2ZW50IGhhbmRsZXIgaWYgd2UgcmVtb3ZlZCBzb21ldGhpbmcgYW5kIG5vIG1vcmUg
aGFuZGxlcnMgZXhpc3QKKyAgICAgICAgICAgIC8vIChhdm9pZHMgcG90ZW50aWFsIGZvciBlbmRs
ZXNzIHJlY3Vyc2lvbiBkdXJpbmcgcmVtb3ZhbCBvZiBzcGVjaWFsIGV2ZW50IGhhbmRsZXJzKQor
ICAgICAgICAgICAgaWYgKCBvcmlnQ291bnQgJiYgIWhhbmRsZXJzLmxlbmd0aCApIHsKKyAgICAg
ICAgICAgICAgICBpZiAoICFzcGVjaWFsLnRlYXJkb3duIHx8CisgICAgICAgICAgICAgICAgICAg
IHNwZWNpYWwudGVhcmRvd24uY2FsbCggZWxlbSwgbmFtZXNwYWNlcywgZWxlbURhdGEuaGFuZGxl
ICkgPT09IGZhbHNlICkgeworCisgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5yZW1vdmVFdmVu
dCggZWxlbSwgdHlwZSwgZWxlbURhdGEuaGFuZGxlICk7CisgICAgICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAgICAgZGVsZXRlIGV2ZW50c1sgdHlwZSBdOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisKKyAgICAgICAgLy8gUmVtb3ZlIGRhdGEgYW5kIHRoZSBleHBhbmRvIGlmIGl0J3Mg
bm8gbG9uZ2VyIHVzZWQKKyAgICAgICAgaWYgKCBqUXVlcnkuaXNFbXB0eU9iamVjdCggZXZlbnRz
ICkgKSB7CisgICAgICAgICAgICBkYXRhUHJpdi5yZW1vdmUoIGVsZW0sICJoYW5kbGUgZXZlbnRz
IiApOworICAgICAgICB9CisgICAgfSwKKworICAgIGRpc3BhdGNoOiBmdW5jdGlvbiggbmF0aXZl
RXZlbnQgKSB7CisKKyAgICAgICAgLy8gTWFrZSBhIHdyaXRhYmxlIGpRdWVyeS5FdmVudCBmcm9t
IHRoZSBuYXRpdmUgZXZlbnQgb2JqZWN0CisgICAgICAgIHZhciBldmVudCA9IGpRdWVyeS5ldmVu
dC5maXgoIG5hdGl2ZUV2ZW50ICk7CisKKyAgICAgICAgdmFyIGksIGosIHJldCwgbWF0Y2hlZCwg
aGFuZGxlT2JqLCBoYW5kbGVyUXVldWUsCisgICAgICAgICAgICBhcmdzID0gbmV3IEFycmF5KCBh
cmd1bWVudHMubGVuZ3RoICksCisgICAgICAgICAgICBoYW5kbGVycyA9ICggZGF0YVByaXYuZ2V0
KCB0aGlzLCAiZXZlbnRzIiApIHx8IHt9IClbIGV2ZW50LnR5cGUgXSB8fCBbXSwKKyAgICAgICAg
ICAgIHNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgZXZlbnQudHlwZSBdIHx8IHt9Owor
CisgICAgICAgIC8vIFVzZSB0aGUgZml4LWVkIGpRdWVyeS5FdmVudCByYXRoZXIgdGhhbiB0aGUg
KHJlYWQtb25seSkgbmF0aXZlIGV2ZW50CisgICAgICAgIGFyZ3NbIDAgXSA9IGV2ZW50OworCisg
ICAgICAgIGZvciAoIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrICkgeworICAgICAg
ICAgICAgYXJnc1sgaSBdID0gYXJndW1lbnRzWyBpIF07CisgICAgICAgIH0KKworICAgICAgICBl
dmVudC5kZWxlZ2F0ZVRhcmdldCA9IHRoaXM7CisKKyAgICAgICAgLy8gQ2FsbCB0aGUgcHJlRGlz
cGF0Y2ggaG9vayBmb3IgdGhlIG1hcHBlZCB0eXBlLCBhbmQgbGV0IGl0IGJhaWwgaWYgZGVzaXJl
ZAorICAgICAgICBpZiAoIHNwZWNpYWwucHJlRGlzcGF0Y2ggJiYgc3BlY2lhbC5wcmVEaXNwYXRj
aC5jYWxsKCB0aGlzLCBldmVudCApID09PSBmYWxzZSApIHsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIC8vIERldGVybWluZSBoYW5kbGVycworICAgICAgICBoYW5k
bGVyUXVldWUgPSBqUXVlcnkuZXZlbnQuaGFuZGxlcnMuY2FsbCggdGhpcywgZXZlbnQsIGhhbmRs
ZXJzICk7CisKKyAgICAgICAgLy8gUnVuIGRlbGVnYXRlcyBmaXJzdDsgdGhleSBtYXkgd2FudCB0
byBzdG9wIHByb3BhZ2F0aW9uIGJlbmVhdGggdXMKKyAgICAgICAgaSA9IDA7CisgICAgICAgIHdo
aWxlICggKCBtYXRjaGVkID0gaGFuZGxlclF1ZXVlWyBpKysgXSApICYmICFldmVudC5pc1Byb3Bh
Z2F0aW9uU3RvcHBlZCgpICkgeworICAgICAgICAgICAgZXZlbnQuY3VycmVudFRhcmdldCA9IG1h
dGNoZWQuZWxlbTsKKworICAgICAgICAgICAgaiA9IDA7CisgICAgICAgICAgICB3aGlsZSAoICgg
aGFuZGxlT2JqID0gbWF0Y2hlZC5oYW5kbGVyc1sgaisrIF0gKSAmJgorICAgICAgICAgICAgICAg
ICFldmVudC5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCgpICkgeworCisgICAgICAgICAg
ICAgICAgLy8gVHJpZ2dlcmVkIGV2ZW50IG11c3QgZWl0aGVyIDEpIGhhdmUgbm8gbmFtZXNwYWNl
LCBvciAyKSBoYXZlIG5hbWVzcGFjZShzKQorICAgICAgICAgICAgICAgIC8vIGEgc3Vic2V0IG9y
IGVxdWFsIHRvIHRob3NlIGluIHRoZSBib3VuZCBldmVudCAoYm90aCBjYW4gaGF2ZSBubyBuYW1l
c3BhY2UpLgorICAgICAgICAgICAgICAgIGlmICggIWV2ZW50LnJuYW1lc3BhY2UgfHwgZXZlbnQu
cm5hbWVzcGFjZS50ZXN0KCBoYW5kbGVPYmoubmFtZXNwYWNlICkgKSB7CisKKyAgICAgICAgICAg
ICAgICAgICAgZXZlbnQuaGFuZGxlT2JqID0gaGFuZGxlT2JqOworICAgICAgICAgICAgICAgICAg
ICBldmVudC5kYXRhID0gaGFuZGxlT2JqLmRhdGE7CisKKyAgICAgICAgICAgICAgICAgICAgcmV0
ID0gKCAoIGpRdWVyeS5ldmVudC5zcGVjaWFsWyBoYW5kbGVPYmoub3JpZ1R5cGUgXSB8fCB7fSAp
LmhhbmRsZSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlT2JqLmhhbmRsZXIgKS5h
cHBseSggbWF0Y2hlZC5lbGVtLCBhcmdzICk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKCBy
ZXQgIT09IHVuZGVmaW5lZCApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICggKCBldmVu
dC5yZXN1bHQgPSByZXQgKSA9PT0gZmFsc2UgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
dmVudC5zdG9wUHJvcGFnYXRpb24oKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorCisgICAgICAgIC8vIENhbGwgdGhlIHBvc3REaXNwYXRjaCBob29rIGZvciB0aGUgbWFw
cGVkIHR5cGUKKyAgICAgICAgaWYgKCBzcGVjaWFsLnBvc3REaXNwYXRjaCApIHsKKyAgICAgICAg
ICAgIHNwZWNpYWwucG9zdERpc3BhdGNoLmNhbGwoIHRoaXMsIGV2ZW50ICk7CisgICAgICAgIH0K
KworICAgICAgICByZXR1cm4gZXZlbnQucmVzdWx0OworICAgIH0sCisKKyAgICBoYW5kbGVyczog
ZnVuY3Rpb24oIGV2ZW50LCBoYW5kbGVycyApIHsKKyAgICAgICAgdmFyIGksIGhhbmRsZU9iaiwg
c2VsLCBtYXRjaGVkSGFuZGxlcnMsIG1hdGNoZWRTZWxlY3RvcnMsCisgICAgICAgICAgICBoYW5k
bGVyUXVldWUgPSBbXSwKKyAgICAgICAgICAgIGRlbGVnYXRlQ291bnQgPSBoYW5kbGVycy5kZWxl
Z2F0ZUNvdW50LAorICAgICAgICAgICAgY3VyID0gZXZlbnQudGFyZ2V0OworCisgICAgICAgIC8v
IEZpbmQgZGVsZWdhdGUgaGFuZGxlcnMKKyAgICAgICAgaWYgKCBkZWxlZ2F0ZUNvdW50ICYmCisK
KyAgICAgICAgICAgIC8vIFN1cHBvcnQ6IElFIDw9OQorICAgICAgICAgICAgLy8gQmxhY2staG9s
ZSBTVkcgPHVzZT4gaW5zdGFuY2UgdHJlZXMgKHRyYWMtMTMxODApCisgICAgICAgICAgICBjdXIu
bm9kZVR5cGUgJiYKKworICAgICAgICAgICAgLy8gU3VwcG9ydDogRmlyZWZveCA8PTQyCisgICAg
ICAgICAgICAvLyBTdXBwcmVzcyBzcGVjLXZpb2xhdGluZyBjbGlja3MgaW5kaWNhdGluZyBhIG5v
bi1wcmltYXJ5IHBvaW50ZXIgYnV0dG9uICh0cmFjLTM4NjEpCisgICAgICAgICAgICAvLyBodHRw
czovL3d3dy53My5vcmcvVFIvRE9NLUxldmVsLTMtRXZlbnRzLyNldmVudC10eXBlLWNsaWNrCisg
ICAgICAgICAgICAvLyBTdXBwb3J0OiBJRSAxMSBvbmx5CisgICAgICAgICAgICAvLyAuLi5idXQg
bm90IGFycm93IGtleSAiY2xpY2tzIiBvZiByYWRpbyBpbnB1dHMsIHdoaWNoIGNhbiBoYXZlIGBi
dXR0b25gIC0xIChnaC0yMzQzKQorICAgICAgICAgICAgISggZXZlbnQudHlwZSA9PT0gImNsaWNr
IiAmJiBldmVudC5idXR0b24gPj0gMSApICkgeworCisgICAgICAgICAgICBmb3IgKCA7IGN1ciAh
PT0gdGhpczsgY3VyID0gY3VyLnBhcmVudE5vZGUgfHwgdGhpcyApIHsKKworICAgICAgICAgICAg
ICAgIC8vIERvbid0IGNoZWNrIG5vbi1lbGVtZW50cyAoIzEzMjA4KQorICAgICAgICAgICAgICAg
IC8vIERvbid0IHByb2Nlc3MgY2xpY2tzIG9uIGRpc2FibGVkIGVsZW1lbnRzICgjNjkxMSwgIzgx
NjUsICMxMTM4MiwgIzExNzY0KQorICAgICAgICAgICAgICAgIGlmICggY3VyLm5vZGVUeXBlID09
PSAxICYmICEoIGV2ZW50LnR5cGUgPT09ICJjbGljayIgJiYgY3VyLmRpc2FibGVkID09PSB0cnVl
ICkgKSB7CisgICAgICAgICAgICAgICAgICAgIG1hdGNoZWRIYW5kbGVycyA9IFtdOworICAgICAg
ICAgICAgICAgICAgICBtYXRjaGVkU2VsZWN0b3JzID0ge307CisgICAgICAgICAgICAgICAgICAg
IGZvciAoIGkgPSAwOyBpIDwgZGVsZWdhdGVDb3VudDsgaSsrICkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgaGFuZGxlT2JqID0gaGFuZGxlcnNbIGkgXTsKKworICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gRG9uJ3QgY29uZmxpY3Qgd2l0aCBPYmplY3QucHJvdG90eXBlIHByb3BlcnRpZXMg
KCMxMzIwMykKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbCA9IGhhbmRsZU9iai5zZWxlY3Rv
ciArICIgIjsKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBtYXRjaGVkU2VsZWN0b3Jz
WyBzZWwgXSA9PT0gdW5kZWZpbmVkICkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1h
dGNoZWRTZWxlY3RvcnNbIHNlbCBdID0gaGFuZGxlT2JqLm5lZWRzQ29udGV4dCA/CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeSggc2VsLCB0aGlzICkuaW5kZXgoIGN1ciAp
ID4gLTEgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkuZmluZCggc2Vs
LCB0aGlzLCBudWxsLCBbIGN1ciBdICkubGVuZ3RoOworICAgICAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBtYXRjaGVkU2VsZWN0b3JzWyBzZWwgXSAp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVkSGFuZGxlcnMucHVzaCggaGFu
ZGxlT2JqICk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKCBtYXRjaGVkSGFuZGxlcnMubGVuZ3RoICkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlclF1ZXVlLnB1c2goIHsgZWxlbTogY3VyLCBo
YW5kbGVyczogbWF0Y2hlZEhhbmRsZXJzIH0gKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIEFk
ZCB0aGUgcmVtYWluaW5nIChkaXJlY3RseS1ib3VuZCkgaGFuZGxlcnMKKyAgICAgICAgY3VyID0g
dGhpczsKKyAgICAgICAgaWYgKCBkZWxlZ2F0ZUNvdW50IDwgaGFuZGxlcnMubGVuZ3RoICkgewor
ICAgICAgICAgICAgaGFuZGxlclF1ZXVlLnB1c2goIHsgZWxlbTogY3VyLCBoYW5kbGVyczogaGFu
ZGxlcnMuc2xpY2UoIGRlbGVnYXRlQ291bnQgKSB9ICk7CisgICAgICAgIH0KKworICAgICAgICBy
ZXR1cm4gaGFuZGxlclF1ZXVlOworICAgIH0sCisKKyAgICBhZGRQcm9wOiBmdW5jdGlvbiggbmFt
ZSwgaG9vayApIHsKKyAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KCBqUXVlcnkuRXZlbnQu
cHJvdG90eXBlLCBuYW1lLCB7CisgICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLAorICAgICAg
ICAgICAgY29uZmlndXJhYmxlOiB0cnVlLAorCisgICAgICAgICAgICBnZXQ6IGpRdWVyeS5pc0Z1
bmN0aW9uKCBob29rICkgPworICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgICAgICAgICBpZiAoIHRoaXMub3JpZ2luYWxFdmVudCApIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gaG9vayggdGhpcy5vcmlnaW5hbEV2ZW50ICk7CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IDoKKyAgICAgICAgICAgICAgICBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCB0aGlzLm9yaWdpbmFsRXZlbnQgKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3JpZ2luYWxFdmVudFsgbmFt
ZSBdOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSwKKworICAgICAg
ICAgICAgc2V0OiBmdW5jdGlvbiggdmFsdWUgKSB7CisgICAgICAgICAgICAgICAgT2JqZWN0LmRl
ZmluZVByb3BlcnR5KCB0aGlzLCBuYW1lLCB7CisgICAgICAgICAgICAgICAgICAgIGVudW1lcmFi
bGU6IHRydWUsCisgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSwKKyAgICAg
ICAgICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsCisgICAgICAgICAgICAgICAgICAgIHZhbHVl
OiB2YWx1ZQorICAgICAgICAgICAgICAgIH0gKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSAp
OworICAgIH0sCisKKyAgICBmaXg6IGZ1bmN0aW9uKCBvcmlnaW5hbEV2ZW50ICkgeworICAgICAg
ICByZXR1cm4gb3JpZ2luYWxFdmVudFsgalF1ZXJ5LmV4cGFuZG8gXSA/CisgICAgICAgICAgICBv
cmlnaW5hbEV2ZW50IDoKKyAgICAgICAgICAgIG5ldyBqUXVlcnkuRXZlbnQoIG9yaWdpbmFsRXZl
bnQgKTsKKyAgICB9LAorCisgICAgc3BlY2lhbDogeworICAgICAgICBsb2FkOiB7CisKKyAgICAg
ICAgICAgIC8vIFByZXZlbnQgdHJpZ2dlcmVkIGltYWdlLmxvYWQgZXZlbnRzIGZyb20gYnViYmxp
bmcgdG8gd2luZG93LmxvYWQKKyAgICAgICAgICAgIG5vQnViYmxlOiB0cnVlCisgICAgICAgIH0s
CisgICAgICAgIGZvY3VzOiB7CisKKyAgICAgICAgICAgIC8vIEZpcmUgbmF0aXZlIGV2ZW50IGlm
IHBvc3NpYmxlIHNvIGJsdXIvZm9jdXMgc2VxdWVuY2UgaXMgY29ycmVjdAorICAgICAgICAgICAg
dHJpZ2dlcjogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgaWYgKCB0aGlzICE9PSBzYWZl
QWN0aXZlRWxlbWVudCgpICYmIHRoaXMuZm9jdXMgKSB7CisgICAgICAgICAgICAgICAgICAgIHRo
aXMuZm9jdXMoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBkZWxlZ2F0ZVR5cGU6ICJmb2N1
c2luIgorICAgICAgICB9LAorICAgICAgICBibHVyOiB7CisgICAgICAgICAgICB0cmlnZ2VyOiBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBpZiAoIHRoaXMgPT09IHNhZmVBY3RpdmVFbGVt
ZW50KCkgJiYgdGhpcy5ibHVyICkgeworICAgICAgICAgICAgICAgICAgICB0aGlzLmJsdXIoKTsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0sCisgICAgICAgICAgICBkZWxlZ2F0ZVR5cGU6ICJmb2N1c291dCIKKyAgICAg
ICAgfSwKKyAgICAgICAgY2xpY2s6IHsKKworICAgICAgICAgICAgLy8gRm9yIGNoZWNrYm94LCBm
aXJlIG5hdGl2ZSBldmVudCBzbyBjaGVja2VkIHN0YXRlIHdpbGwgYmUgcmlnaHQKKyAgICAgICAg
ICAgIHRyaWdnZXI6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGlmICggdGhpcy50eXBl
ID09PSAiY2hlY2tib3giICYmIHRoaXMuY2xpY2sgJiYgalF1ZXJ5Lm5vZGVOYW1lKCB0aGlzLCAi
aW5wdXQiICkgKSB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xpY2soKTsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0sCisKKyAgICAgICAgICAgIC8vIEZvciBjcm9zcy1icm93c2VyIGNvbnNpc3RlbmN5LCBkb24n
dCBmaXJlIG5hdGl2ZSAuY2xpY2soKSBvbiBsaW5rcworICAgICAgICAgICAgX2RlZmF1bHQ6IGZ1
bmN0aW9uKCBldmVudCApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4galF1ZXJ5Lm5vZGVOYW1l
KCBldmVudC50YXJnZXQsICJhIiApOworICAgICAgICAgICAgfQorICAgICAgICB9LAorCisgICAg
ICAgIGJlZm9yZXVubG9hZDogeworICAgICAgICAgICAgcG9zdERpc3BhdGNoOiBmdW5jdGlvbigg
ZXZlbnQgKSB7CisKKyAgICAgICAgICAgICAgICAvLyBTdXBwb3J0OiBGaXJlZm94IDIwKworICAg
ICAgICAgICAgICAgIC8vIEZpcmVmb3ggZG9lc24ndCBhbGVydCBpZiB0aGUgcmV0dXJuVmFsdWUg
ZmllbGQgaXMgbm90IHNldC4KKyAgICAgICAgICAgICAgICBpZiAoIGV2ZW50LnJlc3VsdCAhPT0g
dW5kZWZpbmVkICYmIGV2ZW50Lm9yaWdpbmFsRXZlbnQgKSB7CisgICAgICAgICAgICAgICAgICAg
IGV2ZW50Lm9yaWdpbmFsRXZlbnQucmV0dXJuVmFsdWUgPSBldmVudC5yZXN1bHQ7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfTsKKworalF1ZXJ5
LnJlbW92ZUV2ZW50ID0gZnVuY3Rpb24oIGVsZW0sIHR5cGUsIGhhbmRsZSApIHsKKworICAgIC8v
IFRoaXMgImlmIiBpcyBuZWVkZWQgZm9yIHBsYWluIG9iamVjdHMKKyAgICBpZiAoIGVsZW0ucmVt
b3ZlRXZlbnRMaXN0ZW5lciApIHsKKyAgICAgICAgZWxlbS5yZW1vdmVFdmVudExpc3RlbmVyKCB0
eXBlLCBoYW5kbGUgKTsKKyAgICB9Cit9OworCitqUXVlcnkuRXZlbnQgPSBmdW5jdGlvbiggc3Jj
LCBwcm9wcyApIHsKKworICAgIC8vIEFsbG93IGluc3RhbnRpYXRpb24gd2l0aG91dCB0aGUgJ25l
dycga2V5d29yZAorICAgIGlmICggISggdGhpcyBpbnN0YW5jZW9mIGpRdWVyeS5FdmVudCApICkg
eworICAgICAgICByZXR1cm4gbmV3IGpRdWVyeS5FdmVudCggc3JjLCBwcm9wcyApOworICAgIH0K
KworICAgIC8vIEV2ZW50IG9iamVjdAorICAgIGlmICggc3JjICYmIHNyYy50eXBlICkgeworICAg
ICAgICB0aGlzLm9yaWdpbmFsRXZlbnQgPSBzcmM7CisgICAgICAgIHRoaXMudHlwZSA9IHNyYy50
eXBlOworCisgICAgICAgIC8vIEV2ZW50cyBidWJibGluZyB1cCB0aGUgZG9jdW1lbnQgbWF5IGhh
dmUgYmVlbiBtYXJrZWQgYXMgcHJldmVudGVkCisgICAgICAgIC8vIGJ5IGEgaGFuZGxlciBsb3dl
ciBkb3duIHRoZSB0cmVlOyByZWZsZWN0IHRoZSBjb3JyZWN0IHZhbHVlLgorICAgICAgICB0aGlz
LmlzRGVmYXVsdFByZXZlbnRlZCA9IHNyYy5kZWZhdWx0UHJldmVudGVkIHx8CisgICAgICAgICAg
ICAgICAgc3JjLmRlZmF1bHRQcmV2ZW50ZWQgPT09IHVuZGVmaW5lZCAmJgorCisgICAgICAgICAg
ICAgICAgLy8gU3VwcG9ydDogQW5kcm9pZCA8PTIuMyBvbmx5CisgICAgICAgICAgICAgICAgc3Jj
LnJldHVyblZhbHVlID09PSBmYWxzZSA/CisgICAgICAgICAgICByZXR1cm5UcnVlIDoKKyAgICAg
ICAgICAgIHJldHVybkZhbHNlOworCisgICAgICAgIC8vIENyZWF0ZSB0YXJnZXQgcHJvcGVydGll
cworICAgICAgICAvLyBTdXBwb3J0OiBTYWZhcmkgPD02IC0gNyBvbmx5CisgICAgICAgIC8vIFRh
cmdldCBzaG91bGQgbm90IGJlIGEgdGV4dCBub2RlICgjNTA0LCAjMTMxNDMpCisgICAgICAgIHRo
aXMudGFyZ2V0ID0gKCBzcmMudGFyZ2V0ICYmIHNyYy50YXJnZXQubm9kZVR5cGUgPT09IDMgKSA/
CisgICAgICAgICAgICBzcmMudGFyZ2V0LnBhcmVudE5vZGUgOgorICAgICAgICAgICAgc3JjLnRh
cmdldDsKKworICAgICAgICB0aGlzLmN1cnJlbnRUYXJnZXQgPSBzcmMuY3VycmVudFRhcmdldDsK
KyAgICAgICAgdGhpcy5yZWxhdGVkVGFyZ2V0ID0gc3JjLnJlbGF0ZWRUYXJnZXQ7CisKKyAgICAv
LyBFdmVudCB0eXBlCisgICAgfSBlbHNlIHsKKyAgICAgICAgdGhpcy50eXBlID0gc3JjOworICAg
IH0KKworICAgIC8vIFB1dCBleHBsaWNpdGx5IHByb3ZpZGVkIHByb3BlcnRpZXMgb250byB0aGUg
ZXZlbnQgb2JqZWN0CisgICAgaWYgKCBwcm9wcyApIHsKKyAgICAgICAgalF1ZXJ5LmV4dGVuZCgg
dGhpcywgcHJvcHMgKTsKKyAgICB9CisKKyAgICAvLyBDcmVhdGUgYSB0aW1lc3RhbXAgaWYgaW5j
b21pbmcgZXZlbnQgZG9lc24ndCBoYXZlIG9uZQorICAgIHRoaXMudGltZVN0YW1wID0gc3JjICYm
IHNyYy50aW1lU3RhbXAgfHwgalF1ZXJ5Lm5vdygpOworCisgICAgLy8gTWFyayBpdCBhcyBmaXhl
ZAorICAgIHRoaXNbIGpRdWVyeS5leHBhbmRvIF0gPSB0cnVlOworfTsKKworLy8galF1ZXJ5LkV2
ZW50IGlzIGJhc2VkIG9uIERPTTMgRXZlbnRzIGFzIHNwZWNpZmllZCBieSB0aGUgRUNNQVNjcmlw
dCBMYW5ndWFnZSBCaW5kaW5nCisvLyBodHRwczovL3d3dy53My5vcmcvVFIvMjAwMy9XRC1ET00t
TGV2ZWwtMy1FdmVudHMtMjAwMzAzMzEvZWNtYS1zY3JpcHQtYmluZGluZy5odG1sCitqUXVlcnku
RXZlbnQucHJvdG90eXBlID0geworICAgIGNvbnN0cnVjdG9yOiBqUXVlcnkuRXZlbnQsCisgICAg
aXNEZWZhdWx0UHJldmVudGVkOiByZXR1cm5GYWxzZSwKKyAgICBpc1Byb3BhZ2F0aW9uU3RvcHBl
ZDogcmV0dXJuRmFsc2UsCisgICAgaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ6IHJldHVy
bkZhbHNlLAorICAgIGlzU2ltdWxhdGVkOiBmYWxzZSwKKworICAgIHByZXZlbnREZWZhdWx0OiBm
dW5jdGlvbigpIHsKKyAgICAgICAgdmFyIGUgPSB0aGlzLm9yaWdpbmFsRXZlbnQ7CisKKyAgICAg
ICAgdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQgPSByZXR1cm5UcnVlOworCisgICAgICAgIGlmICgg
ZSAmJiAhdGhpcy5pc1NpbXVsYXRlZCApIHsKKyAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQo
KTsKKyAgICAgICAgfQorICAgIH0sCisgICAgc3RvcFByb3BhZ2F0aW9uOiBmdW5jdGlvbigpIHsK
KyAgICAgICAgdmFyIGUgPSB0aGlzLm9yaWdpbmFsRXZlbnQ7CisKKyAgICAgICAgdGhpcy5pc1By
b3BhZ2F0aW9uU3RvcHBlZCA9IHJldHVyblRydWU7CisKKyAgICAgICAgaWYgKCBlICYmICF0aGlz
LmlzU2ltdWxhdGVkICkgeworICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKKyAgICAg
ICAgfQorICAgIH0sCisgICAgc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uOiBmdW5jdGlvbigpIHsK
KyAgICAgICAgdmFyIGUgPSB0aGlzLm9yaWdpbmFsRXZlbnQ7CisKKyAgICAgICAgdGhpcy5pc0lt
bWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCA9IHJldHVyblRydWU7CisKKyAgICAgICAgaWYgKCBl
ICYmICF0aGlzLmlzU2ltdWxhdGVkICkgeworICAgICAgICAgICAgZS5zdG9wSW1tZWRpYXRlUHJv
cGFnYXRpb24oKTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuc3RvcFByb3BhZ2F0aW9uKCk7
CisgICAgfQorfTsKKworLy8gSW5jbHVkZXMgYWxsIGNvbW1vbiBldmVudCBwcm9wcyBpbmNsdWRp
bmcgS2V5RXZlbnQgYW5kIE1vdXNlRXZlbnQgc3BlY2lmaWMgcHJvcHMKK2pRdWVyeS5lYWNoKCB7
CisgICAgYWx0S2V5OiB0cnVlLAorICAgIGJ1YmJsZXM6IHRydWUsCisgICAgY2FuY2VsYWJsZTog
dHJ1ZSwKKyAgICBjaGFuZ2VkVG91Y2hlczogdHJ1ZSwKKyAgICBjdHJsS2V5OiB0cnVlLAorICAg
IGRldGFpbDogdHJ1ZSwKKyAgICBldmVudFBoYXNlOiB0cnVlLAorICAgIG1ldGFLZXk6IHRydWUs
CisgICAgcGFnZVg6IHRydWUsCisgICAgcGFnZVk6IHRydWUsCisgICAgc2hpZnRLZXk6IHRydWUs
CisgICAgdmlldzogdHJ1ZSwKKyAgICAiY2hhciI6IHRydWUsCisgICAgY2hhckNvZGU6IHRydWUs
CisgICAga2V5OiB0cnVlLAorICAgIGtleUNvZGU6IHRydWUsCisgICAgYnV0dG9uOiB0cnVlLAor
ICAgIGJ1dHRvbnM6IHRydWUsCisgICAgY2xpZW50WDogdHJ1ZSwKKyAgICBjbGllbnRZOiB0cnVl
LAorICAgIG9mZnNldFg6IHRydWUsCisgICAgb2Zmc2V0WTogdHJ1ZSwKKyAgICBwb2ludGVySWQ6
IHRydWUsCisgICAgcG9pbnRlclR5cGU6IHRydWUsCisgICAgc2NyZWVuWDogdHJ1ZSwKKyAgICBz
Y3JlZW5ZOiB0cnVlLAorICAgIHRhcmdldFRvdWNoZXM6IHRydWUsCisgICAgdG9FbGVtZW50OiB0
cnVlLAorICAgIHRvdWNoZXM6IHRydWUsCisKKyAgICB3aGljaDogZnVuY3Rpb24oIGV2ZW50ICkg
eworICAgICAgICB2YXIgYnV0dG9uID0gZXZlbnQuYnV0dG9uOworCisgICAgICAgIC8vIEFkZCB3
aGljaCBmb3Iga2V5IGV2ZW50cworICAgICAgICBpZiAoIGV2ZW50LndoaWNoID09IG51bGwgJiYg
cmtleUV2ZW50LnRlc3QoIGV2ZW50LnR5cGUgKSApIHsKKyAgICAgICAgICAgIHJldHVybiBldmVu
dC5jaGFyQ29kZSAhPSBudWxsID8gZXZlbnQuY2hhckNvZGUgOiBldmVudC5rZXlDb2RlOworICAg
ICAgICB9CisKKyAgICAgICAgLy8gQWRkIHdoaWNoIGZvciBjbGljazogMSA9PT0gbGVmdDsgMiA9
PT0gbWlkZGxlOyAzID09PSByaWdodAorICAgICAgICBpZiAoICFldmVudC53aGljaCAmJiBidXR0
b24gIT09IHVuZGVmaW5lZCAmJiBybW91c2VFdmVudC50ZXN0KCBldmVudC50eXBlICkgKSB7Cisg
ICAgICAgICAgICBpZiAoIGJ1dHRvbiAmIDEgKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIDE7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICggYnV0dG9uICYgMiApIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gMzsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCBi
dXR0b24gJiA0ICkgeworICAgICAgICAgICAgICAgIHJldHVybiAyOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBldmVu
dC53aGljaDsKKyAgICB9Cit9LCBqUXVlcnkuZXZlbnQuYWRkUHJvcCApOworCisvLyBDcmVhdGUg
bW91c2VlbnRlci9sZWF2ZSBldmVudHMgdXNpbmcgbW91c2VvdmVyL291dCBhbmQgZXZlbnQtdGlt
ZSBjaGVja3MKKy8vIHNvIHRoYXQgZXZlbnQgZGVsZWdhdGlvbiB3b3JrcyBpbiBqUXVlcnkuCisv
LyBEbyB0aGUgc2FtZSBmb3IgcG9pbnRlcmVudGVyL3BvaW50ZXJsZWF2ZSBhbmQgcG9pbnRlcm92
ZXIvcG9pbnRlcm91dAorLy8KKy8vIFN1cHBvcnQ6IFNhZmFyaSA3IG9ubHkKKy8vIFNhZmFyaSBz
ZW5kcyBtb3VzZWVudGVyIHRvbyBvZnRlbjsgc2VlOgorLy8gaHR0cHM6Ly9idWdzLmNocm9taXVt
Lm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9NDcwMjU4CisvLyBmb3IgdGhlIGRlc2Ny
aXB0aW9uIG9mIHRoZSBidWcgKGl0IGV4aXN0ZWQgaW4gb2xkZXIgQ2hyb21lIHZlcnNpb25zIGFz
IHdlbGwpLgoralF1ZXJ5LmVhY2goIHsKKyAgICBtb3VzZWVudGVyOiAibW91c2VvdmVyIiwKKyAg
ICBtb3VzZWxlYXZlOiAibW91c2VvdXQiLAorICAgIHBvaW50ZXJlbnRlcjogInBvaW50ZXJvdmVy
IiwKKyAgICBwb2ludGVybGVhdmU6ICJwb2ludGVyb3V0IgorfSwgZnVuY3Rpb24oIG9yaWcsIGZp
eCApIHsKKyAgICBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgb3JpZyBdID0geworICAgICAgICBkZWxl
Z2F0ZVR5cGU6IGZpeCwKKyAgICAgICAgYmluZFR5cGU6IGZpeCwKKworICAgICAgICBoYW5kbGU6
IGZ1bmN0aW9uKCBldmVudCApIHsKKyAgICAgICAgICAgIHZhciByZXQsCisgICAgICAgICAgICAg
ICAgdGFyZ2V0ID0gdGhpcywKKyAgICAgICAgICAgICAgICByZWxhdGVkID0gZXZlbnQucmVsYXRl
ZFRhcmdldCwKKyAgICAgICAgICAgICAgICBoYW5kbGVPYmogPSBldmVudC5oYW5kbGVPYmo7CisK
KyAgICAgICAgICAgIC8vIEZvciBtb3VzZWVudGVyL2xlYXZlIGNhbGwgdGhlIGhhbmRsZXIgaWYg
cmVsYXRlZCBpcyBvdXRzaWRlIHRoZSB0YXJnZXQuCisgICAgICAgICAgICAvLyBOQjogTm8gcmVs
YXRlZFRhcmdldCBpZiB0aGUgbW91c2UgbGVmdC9lbnRlcmVkIHRoZSBicm93c2VyIHdpbmRvdwor
ICAgICAgICAgICAgaWYgKCAhcmVsYXRlZCB8fCAoIHJlbGF0ZWQgIT09IHRhcmdldCAmJiAhalF1
ZXJ5LmNvbnRhaW5zKCB0YXJnZXQsIHJlbGF0ZWQgKSApICkgeworICAgICAgICAgICAgICAgIGV2
ZW50LnR5cGUgPSBoYW5kbGVPYmoub3JpZ1R5cGU7CisgICAgICAgICAgICAgICAgcmV0ID0gaGFu
ZGxlT2JqLmhhbmRsZXIuYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApOworICAgICAgICAgICAgICAg
IGV2ZW50LnR5cGUgPSBmaXg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gcmV0
OworICAgICAgICB9CisgICAgfTsKK30gKTsKKworalF1ZXJ5LmZuLmV4dGVuZCggeworCisgICAg
b246IGZ1bmN0aW9uKCB0eXBlcywgc2VsZWN0b3IsIGRhdGEsIGZuICkgeworICAgICAgICByZXR1
cm4gb24oIHRoaXMsIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4gKTsKKyAgICB9LAorICAgIG9u
ZTogZnVuY3Rpb24oIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4gKSB7CisgICAgICAgIHJldHVy
biBvbiggdGhpcywgdHlwZXMsIHNlbGVjdG9yLCBkYXRhLCBmbiwgMSApOworICAgIH0sCisgICAg
b2ZmOiBmdW5jdGlvbiggdHlwZXMsIHNlbGVjdG9yLCBmbiApIHsKKyAgICAgICAgdmFyIGhhbmRs
ZU9iaiwgdHlwZTsKKyAgICAgICAgaWYgKCB0eXBlcyAmJiB0eXBlcy5wcmV2ZW50RGVmYXVsdCAm
JiB0eXBlcy5oYW5kbGVPYmogKSB7CisKKyAgICAgICAgICAgIC8vICggZXZlbnQgKSAgZGlzcGF0
Y2hlZCBqUXVlcnkuRXZlbnQKKyAgICAgICAgICAgIGhhbmRsZU9iaiA9IHR5cGVzLmhhbmRsZU9i
ajsKKyAgICAgICAgICAgIGpRdWVyeSggdHlwZXMuZGVsZWdhdGVUYXJnZXQgKS5vZmYoCisgICAg
ICAgICAgICAgICAgaGFuZGxlT2JqLm5hbWVzcGFjZSA/CisgICAgICAgICAgICAgICAgICAgIGhh
bmRsZU9iai5vcmlnVHlwZSArICIuIiArIGhhbmRsZU9iai5uYW1lc3BhY2UgOgorICAgICAgICAg
ICAgICAgICAgICBoYW5kbGVPYmoub3JpZ1R5cGUsCisgICAgICAgICAgICAgICAgaGFuZGxlT2Jq
LnNlbGVjdG9yLAorICAgICAgICAgICAgICAgIGhhbmRsZU9iai5oYW5kbGVyCisgICAgICAgICAg
ICApOworICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCB0
eXBlb2YgdHlwZXMgPT09ICJvYmplY3QiICkgeworCisgICAgICAgICAgICAvLyAoIHR5cGVzLW9i
amVjdCBbLCBzZWxlY3Rvcl0gKQorICAgICAgICAgICAgZm9yICggdHlwZSBpbiB0eXBlcyApIHsK
KyAgICAgICAgICAgICAgICB0aGlzLm9mZiggdHlwZSwgc2VsZWN0b3IsIHR5cGVzWyB0eXBlIF0g
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICB9Cisg
ICAgICAgIGlmICggc2VsZWN0b3IgPT09IGZhbHNlIHx8IHR5cGVvZiBzZWxlY3RvciA9PT0gImZ1
bmN0aW9uIiApIHsKKworICAgICAgICAgICAgLy8gKCB0eXBlcyBbLCBmbl0gKQorICAgICAgICAg
ICAgZm4gPSBzZWxlY3RvcjsKKyAgICAgICAgICAgIHNlbGVjdG9yID0gdW5kZWZpbmVkOworICAg
ICAgICB9CisgICAgICAgIGlmICggZm4gPT09IGZhbHNlICkgeworICAgICAgICAgICAgZm4gPSBy
ZXR1cm5GYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgIGpRdWVyeS5ldmVudC5yZW1vdmUoIHRoaXMsIHR5cGVzLCBmbiwg
c2VsZWN0b3IgKTsKKyAgICAgICAgfSApOworICAgIH0KK30gKTsKKworCit2YXIKKworICAgIC8q
IGVzbGludC1kaXNhYmxlIG1heC1sZW4gKi8KKworICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5j
b20vZXNsaW50L2VzbGludC9pc3N1ZXMvMzIyOQorICAgIHJ4aHRtbFRhZyA9IC88KD8hYXJlYXxi
cnxjb2x8ZW1iZWR8aHJ8aW1nfGlucHV0fGxpbmt8bWV0YXxwYXJhbSkoKFthLXpdW15cL1wwPlx4
MjBcdFxyXG5cZl0qKVtePl0qKVwvPi9naSwKKworICAgIC8qIGVzbGludC1lbmFibGUgKi8KKwor
ICAgIC8vIFN1cHBvcnQ6IElFIDw9MTAgLSAxMSwgRWRnZSAxMiAtIDEzCisgICAgLy8gSW4gSUUv
RWRnZSB1c2luZyByZWdleCBncm91cHMgaGVyZSBjYXVzZXMgc2V2ZXJlIHNsb3dkb3ducy4KKyAg
ICAvLyBTZWUgaHR0cHM6Ly9jb25uZWN0Lm1pY3Jvc29mdC5jb20vSUUvZmVlZGJhY2svZGV0YWls
cy8xNzM2NTEyLworICAgIHJub0lubmVyaHRtbCA9IC88c2NyaXB0fDxzdHlsZXw8bGluay9pLAor
CisgICAgLy8gY2hlY2tlZD0iY2hlY2tlZCIgb3IgY2hlY2tlZAorICAgIHJjaGVja2VkID0gL2No
ZWNrZWRccyooPzpbXj1dfD1ccyouY2hlY2tlZC4pL2ksCisgICAgcnNjcmlwdFR5cGVNYXNrZWQg
PSAvXnRydWVcLyguKikvLAorICAgIHJjbGVhblNjcmlwdCA9IC9eXHMqPCEoPzpcW0NEQVRBXFt8
LS0pfCg/OlxdXF18LS0pPlxzKiQvZzsKKworZnVuY3Rpb24gbWFuaXB1bGF0aW9uVGFyZ2V0KCBl
bGVtLCBjb250ZW50ICkgeworICAgIGlmICggalF1ZXJ5Lm5vZGVOYW1lKCBlbGVtLCAidGFibGUi
ICkgJiYKKyAgICAgICAgalF1ZXJ5Lm5vZGVOYW1lKCBjb250ZW50Lm5vZGVUeXBlICE9PSAxMSA/
IGNvbnRlbnQgOiBjb250ZW50LmZpcnN0Q2hpbGQsICJ0ciIgKSApIHsKKworICAgICAgICByZXR1
cm4gZWxlbS5nZXRFbGVtZW50c0J5VGFnTmFtZSggInRib2R5IiApWyAwIF0gfHwgZWxlbTsKKyAg
ICB9CisKKyAgICByZXR1cm4gZWxlbTsKK30KKworLy8gUmVwbGFjZS9yZXN0b3JlIHRoZSB0eXBl
IGF0dHJpYnV0ZSBvZiBzY3JpcHQgZWxlbWVudHMgZm9yIHNhZmUgRE9NIG1hbmlwdWxhdGlvbgor
ZnVuY3Rpb24gZGlzYWJsZVNjcmlwdCggZWxlbSApIHsKKyAgICBlbGVtLnR5cGUgPSAoIGVsZW0u
Z2V0QXR0cmlidXRlKCAidHlwZSIgKSAhPT0gbnVsbCApICsgIi8iICsgZWxlbS50eXBlOworICAg
IHJldHVybiBlbGVtOworfQorZnVuY3Rpb24gcmVzdG9yZVNjcmlwdCggZWxlbSApIHsKKyAgICB2
YXIgbWF0Y2ggPSByc2NyaXB0VHlwZU1hc2tlZC5leGVjKCBlbGVtLnR5cGUgKTsKKworICAgIGlm
ICggbWF0Y2ggKSB7CisgICAgICAgIGVsZW0udHlwZSA9IG1hdGNoWyAxIF07CisgICAgfSBlbHNl
IHsKKyAgICAgICAgZWxlbS5yZW1vdmVBdHRyaWJ1dGUoICJ0eXBlIiApOworICAgIH0KKworICAg
IHJldHVybiBlbGVtOworfQorCitmdW5jdGlvbiBjbG9uZUNvcHlFdmVudCggc3JjLCBkZXN0ICkg
eworICAgIHZhciBpLCBsLCB0eXBlLCBwZGF0YU9sZCwgcGRhdGFDdXIsIHVkYXRhT2xkLCB1ZGF0
YUN1ciwgZXZlbnRzOworCisgICAgaWYgKCBkZXN0Lm5vZGVUeXBlICE9PSAxICkgeworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgLy8gMS4gQ29weSBwcml2YXRlIGRhdGE6IGV2ZW50cywg
aGFuZGxlcnMsIGV0Yy4KKyAgICBpZiAoIGRhdGFQcml2Lmhhc0RhdGEoIHNyYyApICkgeworICAg
ICAgICBwZGF0YU9sZCA9IGRhdGFQcml2LmFjY2Vzcyggc3JjICk7CisgICAgICAgIHBkYXRhQ3Vy
ID0gZGF0YVByaXYuc2V0KCBkZXN0LCBwZGF0YU9sZCApOworICAgICAgICBldmVudHMgPSBwZGF0
YU9sZC5ldmVudHM7CisKKyAgICAgICAgaWYgKCBldmVudHMgKSB7CisgICAgICAgICAgICBkZWxl
dGUgcGRhdGFDdXIuaGFuZGxlOworICAgICAgICAgICAgcGRhdGFDdXIuZXZlbnRzID0ge307CisK
KyAgICAgICAgICAgIGZvciAoIHR5cGUgaW4gZXZlbnRzICkgeworICAgICAgICAgICAgICAgIGZv
ciAoIGkgPSAwLCBsID0gZXZlbnRzWyB0eXBlIF0ubGVuZ3RoOyBpIDwgbDsgaSsrICkgeworICAg
ICAgICAgICAgICAgICAgICBqUXVlcnkuZXZlbnQuYWRkKCBkZXN0LCB0eXBlLCBldmVudHNbIHR5
cGUgXVsgaSBdICk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfQorCisgICAgLy8gMi4gQ29weSB1c2VyIGRhdGEKKyAgICBpZiAoIGRhdGFVc2VyLmhh
c0RhdGEoIHNyYyApICkgeworICAgICAgICB1ZGF0YU9sZCA9IGRhdGFVc2VyLmFjY2Vzcyggc3Jj
ICk7CisgICAgICAgIHVkYXRhQ3VyID0galF1ZXJ5LmV4dGVuZCgge30sIHVkYXRhT2xkICk7CisK
KyAgICAgICAgZGF0YVVzZXIuc2V0KCBkZXN0LCB1ZGF0YUN1ciApOworICAgIH0KK30KKworLy8g
Rml4IElFIGJ1Z3MsIHNlZSBzdXBwb3J0IHRlc3RzCitmdW5jdGlvbiBmaXhJbnB1dCggc3JjLCBk
ZXN0ICkgeworICAgIHZhciBub2RlTmFtZSA9IGRlc3Qubm9kZU5hbWUudG9Mb3dlckNhc2UoKTsK
KworICAgIC8vIEZhaWxzIHRvIHBlcnNpc3QgdGhlIGNoZWNrZWQgc3RhdGUgb2YgYSBjbG9uZWQg
Y2hlY2tib3ggb3IgcmFkaW8gYnV0dG9uLgorICAgIGlmICggbm9kZU5hbWUgPT09ICJpbnB1dCIg
JiYgcmNoZWNrYWJsZVR5cGUudGVzdCggc3JjLnR5cGUgKSApIHsKKyAgICAgICAgZGVzdC5jaGVj
a2VkID0gc3JjLmNoZWNrZWQ7CisKKyAgICAvLyBGYWlscyB0byByZXR1cm4gdGhlIHNlbGVjdGVk
IG9wdGlvbiB0byB0aGUgZGVmYXVsdCBzZWxlY3RlZCBzdGF0ZSB3aGVuIGNsb25pbmcgb3B0aW9u
cworICAgIH0gZWxzZSBpZiAoIG5vZGVOYW1lID09PSAiaW5wdXQiIHx8IG5vZGVOYW1lID09PSAi
dGV4dGFyZWEiICkgeworICAgICAgICBkZXN0LmRlZmF1bHRWYWx1ZSA9IHNyYy5kZWZhdWx0VmFs
dWU7CisgICAgfQorfQorCitmdW5jdGlvbiBkb21NYW5pcCggY29sbGVjdGlvbiwgYXJncywgY2Fs
bGJhY2ssIGlnbm9yZWQgKSB7CisKKyAgICAvLyBGbGF0dGVuIGFueSBuZXN0ZWQgYXJyYXlzCisg
ICAgYXJncyA9IGNvbmNhdC5hcHBseSggW10sIGFyZ3MgKTsKKworICAgIHZhciBmcmFnbWVudCwg
Zmlyc3QsIHNjcmlwdHMsIGhhc1NjcmlwdHMsIG5vZGUsIGRvYywKKyAgICAgICAgaSA9IDAsCisg
ICAgICAgIGwgPSBjb2xsZWN0aW9uLmxlbmd0aCwKKyAgICAgICAgaU5vQ2xvbmUgPSBsIC0gMSwK
KyAgICAgICAgdmFsdWUgPSBhcmdzWyAwIF0sCisgICAgICAgIGlzRnVuY3Rpb24gPSBqUXVlcnku
aXNGdW5jdGlvbiggdmFsdWUgKTsKKworICAgIC8vIFdlIGNhbid0IGNsb25lTm9kZSBmcmFnbWVu
dHMgdGhhdCBjb250YWluIGNoZWNrZWQsIGluIFdlYktpdAorICAgIGlmICggaXNGdW5jdGlvbiB8
fAorICAgICAgICAgICAgKCBsID4gMSAmJiB0eXBlb2YgdmFsdWUgPT09ICJzdHJpbmciICYmCisg
ICAgICAgICAgICAgICAgIXN1cHBvcnQuY2hlY2tDbG9uZSAmJiByY2hlY2tlZC50ZXN0KCB2YWx1
ZSApICkgKSB7CisgICAgICAgIHJldHVybiBjb2xsZWN0aW9uLmVhY2goIGZ1bmN0aW9uKCBpbmRl
eCApIHsKKyAgICAgICAgICAgIHZhciBzZWxmID0gY29sbGVjdGlvbi5lcSggaW5kZXggKTsKKyAg
ICAgICAgICAgIGlmICggaXNGdW5jdGlvbiApIHsKKyAgICAgICAgICAgICAgICBhcmdzWyAwIF0g
PSB2YWx1ZS5jYWxsKCB0aGlzLCBpbmRleCwgc2VsZi5odG1sKCkgKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGRvbU1hbmlwKCBzZWxmLCBhcmdzLCBjYWxsYmFjaywgaWdub3JlZCApOwor
ICAgICAgICB9ICk7CisgICAgfQorCisgICAgaWYgKCBsICkgeworICAgICAgICBmcmFnbWVudCA9
IGJ1aWxkRnJhZ21lbnQoIGFyZ3MsIGNvbGxlY3Rpb25bIDAgXS5vd25lckRvY3VtZW50LCBmYWxz
ZSwgY29sbGVjdGlvbiwgaWdub3JlZCApOworICAgICAgICBmaXJzdCA9IGZyYWdtZW50LmZpcnN0
Q2hpbGQ7CisKKyAgICAgICAgaWYgKCBmcmFnbWVudC5jaGlsZE5vZGVzLmxlbmd0aCA9PT0gMSAp
IHsKKyAgICAgICAgICAgIGZyYWdtZW50ID0gZmlyc3Q7CisgICAgICAgIH0KKworICAgICAgICAv
LyBSZXF1aXJlIGVpdGhlciBuZXcgY29udGVudCBvciBhbiBpbnRlcmVzdCBpbiBpZ25vcmVkIGVs
ZW1lbnRzIHRvIGludm9rZSB0aGUgY2FsbGJhY2sKKyAgICAgICAgaWYgKCBmaXJzdCB8fCBpZ25v
cmVkICkgeworICAgICAgICAgICAgc2NyaXB0cyA9IGpRdWVyeS5tYXAoIGdldEFsbCggZnJhZ21l
bnQsICJzY3JpcHQiICksIGRpc2FibGVTY3JpcHQgKTsKKyAgICAgICAgICAgIGhhc1NjcmlwdHMg
PSBzY3JpcHRzLmxlbmd0aDsKKworICAgICAgICAgICAgLy8gVXNlIHRoZSBvcmlnaW5hbCBmcmFn
bWVudCBmb3IgdGhlIGxhc3QgaXRlbQorICAgICAgICAgICAgLy8gaW5zdGVhZCBvZiB0aGUgZmly
c3QgYmVjYXVzZSBpdCBjYW4gZW5kIHVwCisgICAgICAgICAgICAvLyBiZWluZyBlbXB0aWVkIGlu
Y29ycmVjdGx5IGluIGNlcnRhaW4gc2l0dWF0aW9ucyAoIzgwNzApLgorICAgICAgICAgICAgZm9y
ICggOyBpIDwgbDsgaSsrICkgeworICAgICAgICAgICAgICAgIG5vZGUgPSBmcmFnbWVudDsKKwor
ICAgICAgICAgICAgICAgIGlmICggaSAhPT0gaU5vQ2xvbmUgKSB7CisgICAgICAgICAgICAgICAg
ICAgIG5vZGUgPSBqUXVlcnkuY2xvbmUoIG5vZGUsIHRydWUsIHRydWUgKTsKKworICAgICAgICAg
ICAgICAgICAgICAvLyBLZWVwIHJlZmVyZW5jZXMgdG8gY2xvbmVkIHNjcmlwdHMgZm9yIGxhdGVy
IHJlc3RvcmF0aW9uCisgICAgICAgICAgICAgICAgICAgIGlmICggaGFzU2NyaXB0cyApIHsKKwor
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3VwcG9ydDogQW5kcm9pZCA8PTQuMCBvbmx5LCBQ
aGFudG9tSlMgMSBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBwdXNoLmFwcGx5KF8s
IGFycmF5bGlrZSkgdGhyb3dzIG9uIGFuY2llbnQgV2ViS2l0CisgICAgICAgICAgICAgICAgICAg
ICAgICBqUXVlcnkubWVyZ2UoIHNjcmlwdHMsIGdldEFsbCggbm9kZSwgInNjcmlwdCIgKSApOwor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgY2FsbGJhY2suY2FsbCggY29sbGVjdGlvblsgaSBdLCBub2RlLCBpICk7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGlmICggaGFzU2NyaXB0cyApIHsKKyAgICAgICAgICAgICAgICBk
b2MgPSBzY3JpcHRzWyBzY3JpcHRzLmxlbmd0aCAtIDEgXS5vd25lckRvY3VtZW50OworCisgICAg
ICAgICAgICAgICAgLy8gUmVlbmFibGUgc2NyaXB0cworICAgICAgICAgICAgICAgIGpRdWVyeS5t
YXAoIHNjcmlwdHMsIHJlc3RvcmVTY3JpcHQgKTsKKworICAgICAgICAgICAgICAgIC8vIEV2YWx1
YXRlIGV4ZWN1dGFibGUgc2NyaXB0cyBvbiBmaXJzdCBkb2N1bWVudCBpbnNlcnRpb24KKyAgICAg
ICAgICAgICAgICBmb3IgKCBpID0gMDsgaSA8IGhhc1NjcmlwdHM7IGkrKyApIHsKKyAgICAgICAg
ICAgICAgICAgICAgbm9kZSA9IHNjcmlwdHNbIGkgXTsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KCByc2NyaXB0VHlwZS50ZXN0KCBub2RlLnR5cGUgfHwgIiIgKSAmJgorICAgICAgICAgICAgICAg
ICAgICAgICAgIWRhdGFQcml2LmFjY2Vzcyggbm9kZSwgImdsb2JhbEV2YWwiICkgJiYKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGpRdWVyeS5jb250YWlucyggZG9jLCBub2RlICkgKSB7CisKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICggbm9kZS5zcmMgKSB7CisKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBPcHRpb25hbCBBSkFYIGRlcGVuZGVuY3ksIGJ1dCB3b24ndCBydW4g
c2NyaXB0cyBpZiBub3QgcHJlc2VudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgg
alF1ZXJ5Ll9ldmFsVXJsICkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVl
cnkuX2V2YWxVcmwoIG5vZGUuc3JjICk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBET01FdmFsKCBub2RlLnRleHRDb250ZW50LnJlcGxhY2UoIHJjbGVhblNjcmlwdCwgIiIg
KSwgZG9jICk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisK
KyAgICByZXR1cm4gY29sbGVjdGlvbjsKK30KKworZnVuY3Rpb24gcmVtb3ZlKCBlbGVtLCBzZWxl
Y3Rvciwga2VlcERhdGEgKSB7CisgICAgdmFyIG5vZGUsCisgICAgICAgIG5vZGVzID0gc2VsZWN0
b3IgPyBqUXVlcnkuZmlsdGVyKCBzZWxlY3RvciwgZWxlbSApIDogZWxlbSwKKyAgICAgICAgaSA9
IDA7CisKKyAgICBmb3IgKCA7ICggbm9kZSA9IG5vZGVzWyBpIF0gKSAhPSBudWxsOyBpKysgKSB7
CisgICAgICAgIGlmICggIWtlZXBEYXRhICYmIG5vZGUubm9kZVR5cGUgPT09IDEgKSB7CisgICAg
ICAgICAgICBqUXVlcnkuY2xlYW5EYXRhKCBnZXRBbGwoIG5vZGUgKSApOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKCBub2RlLnBhcmVudE5vZGUgKSB7CisgICAgICAgICAgICBpZiAoIGtlZXBE
YXRhICYmIGpRdWVyeS5jb250YWlucyggbm9kZS5vd25lckRvY3VtZW50LCBub2RlICkgKSB7Cisg
ICAgICAgICAgICAgICAgc2V0R2xvYmFsRXZhbCggZ2V0QWxsKCBub2RlLCAic2NyaXB0IiApICk7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBub2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQo
IG5vZGUgKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBlbGVtOworfQorCitqUXVl
cnkuZXh0ZW5kKCB7CisgICAgaHRtbFByZWZpbHRlcjogZnVuY3Rpb24oIGh0bWwgKSB7CisgICAg
ICAgIHJldHVybiBodG1sLnJlcGxhY2UoIHJ4aHRtbFRhZywgIjwkMT48LyQyPiIgKTsKKyAgICB9
LAorCisgICAgY2xvbmU6IGZ1bmN0aW9uKCBlbGVtLCBkYXRhQW5kRXZlbnRzLCBkZWVwRGF0YUFu
ZEV2ZW50cyApIHsKKyAgICAgICAgdmFyIGksIGwsIHNyY0VsZW1lbnRzLCBkZXN0RWxlbWVudHMs
CisgICAgICAgICAgICBjbG9uZSA9IGVsZW0uY2xvbmVOb2RlKCB0cnVlICksCisgICAgICAgICAg
ICBpblBhZ2UgPSBqUXVlcnkuY29udGFpbnMoIGVsZW0ub3duZXJEb2N1bWVudCwgZWxlbSApOwor
CisgICAgICAgIC8vIEZpeCBJRSBjbG9uaW5nIGlzc3VlcworICAgICAgICBpZiAoICFzdXBwb3J0
Lm5vQ2xvbmVDaGVja2VkICYmICggZWxlbS5ub2RlVHlwZSA9PT0gMSB8fCBlbGVtLm5vZGVUeXBl
ID09PSAxMSApICYmCisgICAgICAgICAgICAgICAgIWpRdWVyeS5pc1hNTERvYyggZWxlbSApICkg
eworCisgICAgICAgICAgICAvLyBXZSBlc2NoZXcgU2l6emxlIGhlcmUgZm9yIHBlcmZvcm1hbmNl
IHJlYXNvbnM6IGh0dHBzOi8vanNwZXJmLmNvbS9nZXRhbGwtdnMtc2l6emxlLzIKKyAgICAgICAg
ICAgIGRlc3RFbGVtZW50cyA9IGdldEFsbCggY2xvbmUgKTsKKyAgICAgICAgICAgIHNyY0VsZW1l
bnRzID0gZ2V0QWxsKCBlbGVtICk7CisKKyAgICAgICAgICAgIGZvciAoIGkgPSAwLCBsID0gc3Jj
RWxlbWVudHMubGVuZ3RoOyBpIDwgbDsgaSsrICkgeworICAgICAgICAgICAgICAgIGZpeElucHV0
KCBzcmNFbGVtZW50c1sgaSBdLCBkZXN0RWxlbWVudHNbIGkgXSApOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisKKyAgICAgICAgLy8gQ29weSB0aGUgZXZlbnRzIGZyb20gdGhlIG9yaWdpbmFs
IHRvIHRoZSBjbG9uZQorICAgICAgICBpZiAoIGRhdGFBbmRFdmVudHMgKSB7CisgICAgICAgICAg
ICBpZiAoIGRlZXBEYXRhQW5kRXZlbnRzICkgeworICAgICAgICAgICAgICAgIHNyY0VsZW1lbnRz
ID0gc3JjRWxlbWVudHMgfHwgZ2V0QWxsKCBlbGVtICk7CisgICAgICAgICAgICAgICAgZGVzdEVs
ZW1lbnRzID0gZGVzdEVsZW1lbnRzIHx8IGdldEFsbCggY2xvbmUgKTsKKworICAgICAgICAgICAg
ICAgIGZvciAoIGkgPSAwLCBsID0gc3JjRWxlbWVudHMubGVuZ3RoOyBpIDwgbDsgaSsrICkgewor
ICAgICAgICAgICAgICAgICAgICBjbG9uZUNvcHlFdmVudCggc3JjRWxlbWVudHNbIGkgXSwgZGVz
dEVsZW1lbnRzWyBpIF0gKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGNsb25lQ29weUV2ZW50KCBlbGVtLCBjbG9uZSApOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gUHJlc2VydmUgc2NyaXB0IGV2YWx1YXRp
b24gaGlzdG9yeQorICAgICAgICBkZXN0RWxlbWVudHMgPSBnZXRBbGwoIGNsb25lLCAic2NyaXB0
IiApOworICAgICAgICBpZiAoIGRlc3RFbGVtZW50cy5sZW5ndGggPiAwICkgeworICAgICAgICAg
ICAgc2V0R2xvYmFsRXZhbCggZGVzdEVsZW1lbnRzLCAhaW5QYWdlICYmIGdldEFsbCggZWxlbSwg
InNjcmlwdCIgKSApOworICAgICAgICB9CisKKyAgICAgICAgLy8gUmV0dXJuIHRoZSBjbG9uZWQg
c2V0CisgICAgICAgIHJldHVybiBjbG9uZTsKKyAgICB9LAorCisgICAgY2xlYW5EYXRhOiBmdW5j
dGlvbiggZWxlbXMgKSB7CisgICAgICAgIHZhciBkYXRhLCBlbGVtLCB0eXBlLAorICAgICAgICAg
ICAgc3BlY2lhbCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsLAorICAgICAgICAgICAgaSA9IDA7CisK
KyAgICAgICAgZm9yICggOyAoIGVsZW0gPSBlbGVtc1sgaSBdICkgIT09IHVuZGVmaW5lZDsgaSsr
ICkgeworICAgICAgICAgICAgaWYgKCBhY2NlcHREYXRhKCBlbGVtICkgKSB7CisgICAgICAgICAg
ICAgICAgaWYgKCAoIGRhdGEgPSBlbGVtWyBkYXRhUHJpdi5leHBhbmRvIF0gKSApIHsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKCBkYXRhLmV2ZW50cyApIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGZvciAoIHR5cGUgaW4gZGF0YS5ldmVudHMgKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCBzcGVjaWFsWyB0eXBlIF0gKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGpRdWVyeS5ldmVudC5yZW1vdmUoIGVsZW0sIHR5cGUgKTsKKworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgYSBzaG9ydGN1dCB0byBhdm9pZCBqUXVlcnkuZXZl
bnQucmVtb3ZlJ3Mgb3ZlcmhlYWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkucmVtb3ZlRXZlbnQoIGVs
ZW0sIHR5cGUsIGRhdGEuaGFuZGxlICk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICAgICAgLy8gU3VwcG9ydDogQ2hyb21lIDw9MzUgLSA0NSsKKyAgICAgICAgICAg
ICAgICAgICAgLy8gQXNzaWduIHVuZGVmaW5lZCBpbnN0ZWFkIG9mIHVzaW5nIGRlbGV0ZSwgc2Vl
IERhdGEjcmVtb3ZlCisgICAgICAgICAgICAgICAgICAgIGVsZW1bIGRhdGFQcml2LmV4cGFuZG8g
XSA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKCBl
bGVtWyBkYXRhVXNlci5leHBhbmRvIF0gKSB7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gU3Vw
cG9ydDogQ2hyb21lIDw9MzUgLSA0NSsKKyAgICAgICAgICAgICAgICAgICAgLy8gQXNzaWduIHVu
ZGVmaW5lZCBpbnN0ZWFkIG9mIHVzaW5nIGRlbGV0ZSwgc2VlIERhdGEjcmVtb3ZlCisgICAgICAg
ICAgICAgICAgICAgIGVsZW1bIGRhdGFVc2VyLmV4cGFuZG8gXSA9IHVuZGVmaW5lZDsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9ICk7CisKK2pR
dWVyeS5mbi5leHRlbmQoIHsKKyAgICBkZXRhY2g6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHsKKyAg
ICAgICAgcmV0dXJuIHJlbW92ZSggdGhpcywgc2VsZWN0b3IsIHRydWUgKTsKKyAgICB9LAorCisg
ICAgcmVtb3ZlOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7CisgICAgICAgIHJldHVybiByZW1vdmUo
IHRoaXMsIHNlbGVjdG9yICk7CisgICAgfSwKKworICAgIHRleHQ6IGZ1bmN0aW9uKCB2YWx1ZSAp
IHsKKyAgICAgICAgcmV0dXJuIGFjY2VzcyggdGhpcywgZnVuY3Rpb24oIHZhbHVlICkgeworICAg
ICAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPworICAgICAgICAgICAgICAgIGpR
dWVyeS50ZXh0KCB0aGlzICkgOgorICAgICAgICAgICAgICAgIHRoaXMuZW1wdHkoKS5lYWNoKCBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCB0aGlzLm5vZGVUeXBlID09PSAx
IHx8IHRoaXMubm9kZVR5cGUgPT09IDExIHx8IHRoaXMubm9kZVR5cGUgPT09IDkgKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHRDb250ZW50ID0gdmFsdWU7CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9ICk7CisgICAgICAgIH0sIG51bGwsIHZhbHVl
LCBhcmd1bWVudHMubGVuZ3RoICk7CisgICAgfSwKKworICAgIGFwcGVuZDogZnVuY3Rpb24oKSB7
CisgICAgICAgIHJldHVybiBkb21NYW5pcCggdGhpcywgYXJndW1lbnRzLCBmdW5jdGlvbiggZWxl
bSApIHsKKyAgICAgICAgICAgIGlmICggdGhpcy5ub2RlVHlwZSA9PT0gMSB8fCB0aGlzLm5vZGVU
eXBlID09PSAxMSB8fCB0aGlzLm5vZGVUeXBlID09PSA5ICkgeworICAgICAgICAgICAgICAgIHZh
ciB0YXJnZXQgPSBtYW5pcHVsYXRpb25UYXJnZXQoIHRoaXMsIGVsZW0gKTsKKyAgICAgICAgICAg
ICAgICB0YXJnZXQuYXBwZW5kQ2hpbGQoIGVsZW0gKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fSApOworICAgIH0sCisKKyAgICBwcmVwZW5kOiBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJu
IGRvbU1hbmlwKCB0aGlzLCBhcmd1bWVudHMsIGZ1bmN0aW9uKCBlbGVtICkgeworICAgICAgICAg
ICAgaWYgKCB0aGlzLm5vZGVUeXBlID09PSAxIHx8IHRoaXMubm9kZVR5cGUgPT09IDExIHx8IHRo
aXMubm9kZVR5cGUgPT09IDkgKSB7CisgICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IG1hbmlw
dWxhdGlvblRhcmdldCggdGhpcywgZWxlbSApOworICAgICAgICAgICAgICAgIHRhcmdldC5pbnNl
cnRCZWZvcmUoIGVsZW0sIHRhcmdldC5maXJzdENoaWxkICk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0gKTsKKyAgICB9LAorCisgICAgYmVmb3JlOiBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0
dXJuIGRvbU1hbmlwKCB0aGlzLCBhcmd1bWVudHMsIGZ1bmN0aW9uKCBlbGVtICkgeworICAgICAg
ICAgICAgaWYgKCB0aGlzLnBhcmVudE5vZGUgKSB7CisgICAgICAgICAgICAgICAgdGhpcy5wYXJl
bnROb2RlLmluc2VydEJlZm9yZSggZWxlbSwgdGhpcyApOworICAgICAgICAgICAgfQorICAgICAg
ICB9ICk7CisgICAgfSwKKworICAgIGFmdGVyOiBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJu
IGRvbU1hbmlwKCB0aGlzLCBhcmd1bWVudHMsIGZ1bmN0aW9uKCBlbGVtICkgeworICAgICAgICAg
ICAgaWYgKCB0aGlzLnBhcmVudE5vZGUgKSB7CisgICAgICAgICAgICAgICAgdGhpcy5wYXJlbnRO
b2RlLmluc2VydEJlZm9yZSggZWxlbSwgdGhpcy5uZXh0U2libGluZyApOworICAgICAgICAgICAg
fQorICAgICAgICB9ICk7CisgICAgfSwKKworICAgIGVtcHR5OiBmdW5jdGlvbigpIHsKKyAgICAg
ICAgdmFyIGVsZW0sCisgICAgICAgICAgICBpID0gMDsKKworICAgICAgICBmb3IgKCA7ICggZWxl
bSA9IHRoaXNbIGkgXSApICE9IG51bGw7IGkrKyApIHsKKyAgICAgICAgICAgIGlmICggZWxlbS5u
b2RlVHlwZSA9PT0gMSApIHsKKworICAgICAgICAgICAgICAgIC8vIFByZXZlbnQgbWVtb3J5IGxl
YWtzCisgICAgICAgICAgICAgICAgalF1ZXJ5LmNsZWFuRGF0YSggZ2V0QWxsKCBlbGVtLCBmYWxz
ZSApICk7CisKKyAgICAgICAgICAgICAgICAvLyBSZW1vdmUgYW55IHJlbWFpbmluZyBub2Rlcwor
ICAgICAgICAgICAgICAgIGVsZW0udGV4dENvbnRlbnQgPSAiIjsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorCisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0sCisKKyAgICBjbG9uZTogZnVu
Y3Rpb24oIGRhdGFBbmRFdmVudHMsIGRlZXBEYXRhQW5kRXZlbnRzICkgeworICAgICAgICBkYXRh
QW5kRXZlbnRzID0gZGF0YUFuZEV2ZW50cyA9PSBudWxsID8gZmFsc2UgOiBkYXRhQW5kRXZlbnRz
OworICAgICAgICBkZWVwRGF0YUFuZEV2ZW50cyA9IGRlZXBEYXRhQW5kRXZlbnRzID09IG51bGwg
PyBkYXRhQW5kRXZlbnRzIDogZGVlcERhdGFBbmRFdmVudHM7CisKKyAgICAgICAgcmV0dXJuIHRo
aXMubWFwKCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHJldHVybiBqUXVlcnkuY2xvbmUoIHRo
aXMsIGRhdGFBbmRFdmVudHMsIGRlZXBEYXRhQW5kRXZlbnRzICk7CisgICAgICAgIH0gKTsKKyAg
ICB9LAorCisgICAgaHRtbDogZnVuY3Rpb24oIHZhbHVlICkgeworICAgICAgICByZXR1cm4gYWNj
ZXNzKCB0aGlzLCBmdW5jdGlvbiggdmFsdWUgKSB7CisgICAgICAgICAgICB2YXIgZWxlbSA9IHRo
aXNbIDAgXSB8fCB7fSwKKyAgICAgICAgICAgICAgICBpID0gMCwKKyAgICAgICAgICAgICAgICBs
ID0gdGhpcy5sZW5ndGg7CisKKyAgICAgICAgICAgIGlmICggdmFsdWUgPT09IHVuZGVmaW5lZCAm
JiBlbGVtLm5vZGVUeXBlID09PSAxICkgeworICAgICAgICAgICAgICAgIHJldHVybiBlbGVtLmlu
bmVySFRNTDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gU2VlIGlmIHdlIGNhbiB0
YWtlIGEgc2hvcnRjdXQgYW5kIGp1c3QgdXNlIGlubmVySFRNTAorICAgICAgICAgICAgaWYgKCB0
eXBlb2YgdmFsdWUgPT09ICJzdHJpbmciICYmICFybm9Jbm5lcmh0bWwudGVzdCggdmFsdWUgKSAm
JgorICAgICAgICAgICAgICAgICF3cmFwTWFwWyAoIHJ0YWdOYW1lLmV4ZWMoIHZhbHVlICkgfHwg
WyAiIiwgIiIgXSApWyAxIF0udG9Mb3dlckNhc2UoKSBdICkgeworCisgICAgICAgICAgICAgICAg
dmFsdWUgPSBqUXVlcnkuaHRtbFByZWZpbHRlciggdmFsdWUgKTsKKworICAgICAgICAgICAgICAg
IHRyeSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAoIDsgaSA8IGw7IGkrKyApIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGVsZW0gPSB0aGlzWyBpIF0gfHwge307CisKKyAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIFJlbW92ZSBlbGVtZW50IG5vZGVzIGFuZCBwcmV2ZW50IG1lbW9yeSBs
ZWFrcworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICkg
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5jbGVhbkRhdGEoIGdldEFsbCgg
ZWxlbSwgZmFsc2UgKSApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0uaW5uZXJI
VE1MID0gdmFsdWU7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgICAgICAgICBlbGVtID0gMDsKKworICAgICAgICAgICAgICAg
IC8vIElmIHVzaW5nIGlubmVySFRNTCB0aHJvd3MgYW4gZXhjZXB0aW9uLCB1c2UgdGhlIGZhbGxi
YWNrIG1ldGhvZAorICAgICAgICAgICAgICAgIH0gY2F0Y2ggKCBlICkge30KKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgaWYgKCBlbGVtICkgeworICAgICAgICAgICAgICAgIHRoaXMuZW1w
dHkoKS5hcHBlbmQoIHZhbHVlICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0sIG51bGwsIHZh
bHVlLCBhcmd1bWVudHMubGVuZ3RoICk7CisgICAgfSwKKworICAgIHJlcGxhY2VXaXRoOiBmdW5j
dGlvbigpIHsKKyAgICAgICAgdmFyIGlnbm9yZWQgPSBbXTsKKworICAgICAgICAvLyBNYWtlIHRo
ZSBjaGFuZ2VzLCByZXBsYWNpbmcgZWFjaCBub24taWdub3JlZCBjb250ZXh0IGVsZW1lbnQgd2l0
aCB0aGUgbmV3IGNvbnRlbnQKKyAgICAgICAgcmV0dXJuIGRvbU1hbmlwKCB0aGlzLCBhcmd1bWVu
dHMsIGZ1bmN0aW9uKCBlbGVtICkgeworICAgICAgICAgICAgdmFyIHBhcmVudCA9IHRoaXMucGFy
ZW50Tm9kZTsKKworICAgICAgICAgICAgaWYgKCBqUXVlcnkuaW5BcnJheSggdGhpcywgaWdub3Jl
ZCApIDwgMCApIHsKKyAgICAgICAgICAgICAgICBqUXVlcnkuY2xlYW5EYXRhKCBnZXRBbGwoIHRo
aXMgKSApOworICAgICAgICAgICAgICAgIGlmICggcGFyZW50ICkgeworICAgICAgICAgICAgICAg
ICAgICBwYXJlbnQucmVwbGFjZUNoaWxkKCBlbGVtLCB0aGlzICk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorCisgICAgICAgIC8vIEZvcmNlIGNhbGxiYWNrIGludm9jYXRpb24K
KyAgICAgICAgfSwgaWdub3JlZCApOworICAgIH0KK30gKTsKKworalF1ZXJ5LmVhY2goIHsKKyAg
ICBhcHBlbmRUbzogImFwcGVuZCIsCisgICAgcHJlcGVuZFRvOiAicHJlcGVuZCIsCisgICAgaW5z
ZXJ0QmVmb3JlOiAiYmVmb3JlIiwKKyAgICBpbnNlcnRBZnRlcjogImFmdGVyIiwKKyAgICByZXBs
YWNlQWxsOiAicmVwbGFjZVdpdGgiCit9LCBmdW5jdGlvbiggbmFtZSwgb3JpZ2luYWwgKSB7Cisg
ICAgalF1ZXJ5LmZuWyBuYW1lIF0gPSBmdW5jdGlvbiggc2VsZWN0b3IgKSB7CisgICAgICAgIHZh
ciBlbGVtcywKKyAgICAgICAgICAgIHJldCA9IFtdLAorICAgICAgICAgICAgaW5zZXJ0ID0galF1
ZXJ5KCBzZWxlY3RvciApLAorICAgICAgICAgICAgbGFzdCA9IGluc2VydC5sZW5ndGggLSAxLAor
ICAgICAgICAgICAgaSA9IDA7CisKKyAgICAgICAgZm9yICggOyBpIDw9IGxhc3Q7IGkrKyApIHsK
KyAgICAgICAgICAgIGVsZW1zID0gaSA9PT0gbGFzdCA/IHRoaXMgOiB0aGlzLmNsb25lKCB0cnVl
ICk7CisgICAgICAgICAgICBqUXVlcnkoIGluc2VydFsgaSBdIClbIG9yaWdpbmFsIF0oIGVsZW1z
ICk7CisKKyAgICAgICAgICAgIC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00LjAgb25seSwgUGhhbnRv
bUpTIDEgb25seQorICAgICAgICAgICAgLy8gLmdldCgpIGJlY2F1c2UgcHVzaC5hcHBseShfLCBh
cnJheWxpa2UpIHRocm93cyBvbiBhbmNpZW50IFdlYktpdAorICAgICAgICAgICAgcHVzaC5hcHBs
eSggcmV0LCBlbGVtcy5nZXQoKSApOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHRoaXMu
cHVzaFN0YWNrKCByZXQgKTsKKyAgICB9OworfSApOwordmFyIHJtYXJnaW4gPSAoIC9ebWFyZ2lu
LyApOworCit2YXIgcm51bW5vbnB4ID0gbmV3IFJlZ0V4cCggIl4oIiArIHBudW0gKyAiKSg/IXB4
KVthLXolXSskIiwgImkiICk7CisKK3ZhciBnZXRTdHlsZXMgPSBmdW5jdGlvbiggZWxlbSApIHsK
KworICAgICAgICAvLyBTdXBwb3J0OiBJRSA8PTExIG9ubHksIEZpcmVmb3ggPD0zMCAoIzE1MDk4
LCAjMTQxNTApCisgICAgICAgIC8vIElFIHRocm93cyBvbiBlbGVtZW50cyBjcmVhdGVkIGluIHBv
cHVwcworICAgICAgICAvLyBGRiBtZWFud2hpbGUgdGhyb3dzIG9uIGZyYW1lIGVsZW1lbnRzIHRo
cm91Z2ggImRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUiCisgICAgICAgIHZhciB2aWV3ID0g
ZWxlbS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3OworCisgICAgICAgIGlmICggIXZpZXcgfHwg
IXZpZXcub3BlbmVyICkgeworICAgICAgICAgICAgdmlldyA9IHdpbmRvdzsKKyAgICAgICAgfQor
CisgICAgICAgIHJldHVybiB2aWV3LmdldENvbXB1dGVkU3R5bGUoIGVsZW0gKTsKKyAgICB9Owor
CisKKworKCBmdW5jdGlvbigpIHsKKworICAgIC8vIEV4ZWN1dGluZyBib3RoIHBpeGVsUG9zaXRp
b24gJiBib3hTaXppbmdSZWxpYWJsZSB0ZXN0cyByZXF1aXJlIG9ubHkgb25lIGxheW91dAorICAg
IC8vIHNvIHRoZXkncmUgZXhlY3V0ZWQgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHRoZSBzZWNv
bmQgY29tcHV0YXRpb24uCisgICAgZnVuY3Rpb24gY29tcHV0ZVN0eWxlVGVzdHMoKSB7CisKKyAg
ICAgICAgLy8gVGhpcyBpcyBhIHNpbmdsZXRvbiwgd2UgbmVlZCB0byBleGVjdXRlIGl0IG9ubHkg
b25jZQorICAgICAgICBpZiAoICFkaXYgKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKworICAgICAgICBkaXYuc3R5bGUuY3NzVGV4dCA9CisgICAgICAgICAgICAiYm94LXNpemlu
Zzpib3JkZXItYm94OyIgKworICAgICAgICAgICAgInBvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6
YmxvY2s7IiArCisgICAgICAgICAgICAibWFyZ2luOmF1dG87Ym9yZGVyOjFweDtwYWRkaW5nOjFw
eDsiICsKKyAgICAgICAgICAgICJ0b3A6MSU7d2lkdGg6NTAlIjsKKyAgICAgICAgZGl2LmlubmVy
SFRNTCA9ICIiOworICAgICAgICBkb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoIGNvbnRhaW5l
ciApOworCisgICAgICAgIHZhciBkaXZTdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKCBk
aXYgKTsKKyAgICAgICAgcGl4ZWxQb3NpdGlvblZhbCA9IGRpdlN0eWxlLnRvcCAhPT0gIjElIjsK
KworICAgICAgICAvLyBTdXBwb3J0OiBBbmRyb2lkIDQuMCAtIDQuMyBvbmx5LCBGaXJlZm94IDw9
MyAtIDQ0CisgICAgICAgIHJlbGlhYmxlTWFyZ2luTGVmdFZhbCA9IGRpdlN0eWxlLm1hcmdpbkxl
ZnQgPT09ICIycHgiOworICAgICAgICBib3hTaXppbmdSZWxpYWJsZVZhbCA9IGRpdlN0eWxlLndp
ZHRoID09PSAiNHB4IjsKKworICAgICAgICAvLyBTdXBwb3J0OiBBbmRyb2lkIDQuMCAtIDQuMyBv
bmx5CisgICAgICAgIC8vIFNvbWUgc3R5bGVzIGNvbWUgYmFjayB3aXRoIHBlcmNlbnRhZ2UgdmFs
dWVzLCBldmVuIHRob3VnaCB0aGV5IHNob3VsZG4ndAorICAgICAgICBkaXYuc3R5bGUubWFyZ2lu
UmlnaHQgPSAiNTAlIjsKKyAgICAgICAgcGl4ZWxNYXJnaW5SaWdodFZhbCA9IGRpdlN0eWxlLm1h
cmdpblJpZ2h0ID09PSAiNHB4IjsKKworICAgICAgICBkb2N1bWVudEVsZW1lbnQucmVtb3ZlQ2hp
bGQoIGNvbnRhaW5lciApOworCisgICAgICAgIC8vIE51bGxpZnkgdGhlIGRpdiBzbyBpdCB3b3Vs
ZG4ndCBiZSBzdG9yZWQgaW4gdGhlIG1lbW9yeSBhbmQKKyAgICAgICAgLy8gaXQgd2lsbCBhbHNv
IGJlIGEgc2lnbiB0aGF0IGNoZWNrcyBhbHJlYWR5IHBlcmZvcm1lZAorICAgICAgICBkaXYgPSBu
dWxsOworICAgIH0KKworICAgIHZhciBwaXhlbFBvc2l0aW9uVmFsLCBib3hTaXppbmdSZWxpYWJs
ZVZhbCwgcGl4ZWxNYXJnaW5SaWdodFZhbCwgcmVsaWFibGVNYXJnaW5MZWZ0VmFsLAorICAgICAg
ICBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCAiZGl2IiApLAorICAgICAgICBk
aXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCAiZGl2IiApOworCisgICAgLy8gRmluaXNoIGVh
cmx5IGluIGxpbWl0ZWQgKG5vbi1icm93c2VyKSBlbnZpcm9ubWVudHMKKyAgICBpZiAoICFkaXYu
c3R5bGUgKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBTdXBwb3J0OiBJRSA8
PTkgLSAxMSBvbmx5CisgICAgLy8gU3R5bGUgb2YgY2xvbmVkIGVsZW1lbnQgYWZmZWN0cyBzb3Vy
Y2UgZWxlbWVudCBjbG9uZWQgKCM4OTA4KQorICAgIGRpdi5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCA9
ICJjb250ZW50LWJveCI7CisgICAgZGl2LmNsb25lTm9kZSggdHJ1ZSApLnN0eWxlLmJhY2tncm91
bmRDbGlwID0gIiI7CisgICAgc3VwcG9ydC5jbGVhckNsb25lU3R5bGUgPSBkaXYuc3R5bGUuYmFj
a2dyb3VuZENsaXAgPT09ICJjb250ZW50LWJveCI7CisKKyAgICBjb250YWluZXIuc3R5bGUuY3Nz
VGV4dCA9ICJib3JkZXI6MDt3aWR0aDo4cHg7aGVpZ2h0OjA7dG9wOjA7bGVmdDotOTk5OXB4OyIg
KworICAgICAgICAicGFkZGluZzowO21hcmdpbi10b3A6MXB4O3Bvc2l0aW9uOmFic29sdXRlIjsK
KyAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoIGRpdiApOworCisgICAgalF1ZXJ5LmV4dGVuZCgg
c3VwcG9ydCwgeworICAgICAgICBwaXhlbFBvc2l0aW9uOiBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgIGNvbXB1dGVTdHlsZVRlc3RzKCk7CisgICAgICAgICAgICByZXR1cm4gcGl4ZWxQb3NpdGlv
blZhbDsKKyAgICAgICAgfSwKKyAgICAgICAgYm94U2l6aW5nUmVsaWFibGU6IGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgY29tcHV0ZVN0eWxlVGVzdHMoKTsKKyAgICAgICAgICAgIHJldHVybiBi
b3hTaXppbmdSZWxpYWJsZVZhbDsKKyAgICAgICAgfSwKKyAgICAgICAgcGl4ZWxNYXJnaW5SaWdo
dDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBjb21wdXRlU3R5bGVUZXN0cygpOworICAgICAg
ICAgICAgcmV0dXJuIHBpeGVsTWFyZ2luUmlnaHRWYWw7CisgICAgICAgIH0sCisgICAgICAgIHJl
bGlhYmxlTWFyZ2luTGVmdDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBjb21wdXRlU3R5bGVU
ZXN0cygpOworICAgICAgICAgICAgcmV0dXJuIHJlbGlhYmxlTWFyZ2luTGVmdFZhbDsKKyAgICAg
ICAgfQorICAgIH0gKTsKK30gKSgpOworCisKK2Z1bmN0aW9uIGN1ckNTUyggZWxlbSwgbmFtZSwg
Y29tcHV0ZWQgKSB7CisgICAgdmFyIHdpZHRoLCBtaW5XaWR0aCwgbWF4V2lkdGgsIHJldCwKKyAg
ICAgICAgc3R5bGUgPSBlbGVtLnN0eWxlOworCisgICAgY29tcHV0ZWQgPSBjb21wdXRlZCB8fCBn
ZXRTdHlsZXMoIGVsZW0gKTsKKworICAgIC8vIFN1cHBvcnQ6IElFIDw9OSBvbmx5CisgICAgLy8g
Z2V0UHJvcGVydHlWYWx1ZSBpcyBvbmx5IG5lZWRlZCBmb3IgLmNzcygnZmlsdGVyJykgKCMxMjUz
NykKKyAgICBpZiAoIGNvbXB1dGVkICkgeworICAgICAgICByZXQgPSBjb21wdXRlZC5nZXRQcm9w
ZXJ0eVZhbHVlKCBuYW1lICkgfHwgY29tcHV0ZWRbIG5hbWUgXTsKKworICAgICAgICBpZiAoIHJl
dCA9PT0gIiIgJiYgIWpRdWVyeS5jb250YWlucyggZWxlbS5vd25lckRvY3VtZW50LCBlbGVtICkg
KSB7CisgICAgICAgICAgICByZXQgPSBqUXVlcnkuc3R5bGUoIGVsZW0sIG5hbWUgKTsKKyAgICAg
ICAgfQorCisgICAgICAgIC8vIEEgdHJpYnV0ZSB0byB0aGUgImF3ZXNvbWUgaGFjayBieSBEZWFu
IEVkd2FyZHMiCisgICAgICAgIC8vIEFuZHJvaWQgQnJvd3NlciByZXR1cm5zIHBlcmNlbnRhZ2Ug
Zm9yIHNvbWUgdmFsdWVzLAorICAgICAgICAvLyBidXQgd2lkdGggc2VlbXMgdG8gYmUgcmVsaWFi
bHkgcGl4ZWxzLgorICAgICAgICAvLyBUaGlzIGlzIGFnYWluc3QgdGhlIENTU09NIGRyYWZ0IHNw
ZWM6CisgICAgICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3NvbS8jcmVzb2x2ZWQt
dmFsdWVzCisgICAgICAgIGlmICggIXN1cHBvcnQucGl4ZWxNYXJnaW5SaWdodCgpICYmIHJudW1u
b25weC50ZXN0KCByZXQgKSAmJiBybWFyZ2luLnRlc3QoIG5hbWUgKSApIHsKKworICAgICAgICAg
ICAgLy8gUmVtZW1iZXIgdGhlIG9yaWdpbmFsIHZhbHVlcworICAgICAgICAgICAgd2lkdGggPSBz
dHlsZS53aWR0aDsKKyAgICAgICAgICAgIG1pbldpZHRoID0gc3R5bGUubWluV2lkdGg7CisgICAg
ICAgICAgICBtYXhXaWR0aCA9IHN0eWxlLm1heFdpZHRoOworCisgICAgICAgICAgICAvLyBQdXQg
aW4gdGhlIG5ldyB2YWx1ZXMgdG8gZ2V0IGEgY29tcHV0ZWQgdmFsdWUgb3V0CisgICAgICAgICAg
ICBzdHlsZS5taW5XaWR0aCA9IHN0eWxlLm1heFdpZHRoID0gc3R5bGUud2lkdGggPSByZXQ7Cisg
ICAgICAgICAgICByZXQgPSBjb21wdXRlZC53aWR0aDsKKworICAgICAgICAgICAgLy8gUmV2ZXJ0
IHRoZSBjaGFuZ2VkIHZhbHVlcworICAgICAgICAgICAgc3R5bGUud2lkdGggPSB3aWR0aDsKKyAg
ICAgICAgICAgIHN0eWxlLm1pbldpZHRoID0gbWluV2lkdGg7CisgICAgICAgICAgICBzdHlsZS5t
YXhXaWR0aCA9IG1heFdpZHRoOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHJldCAh
PT0gdW5kZWZpbmVkID8KKworICAgICAgICAvLyBTdXBwb3J0OiBJRSA8PTkgLSAxMSBvbmx5Cisg
ICAgICAgIC8vIElFIHJldHVybnMgekluZGV4IHZhbHVlIGFzIGFuIGludGVnZXIuCisgICAgICAg
IHJldCArICIiIDoKKyAgICAgICAgcmV0OworfQorCisKK2Z1bmN0aW9uIGFkZEdldEhvb2tJZigg
Y29uZGl0aW9uRm4sIGhvb2tGbiApIHsKKworICAgIC8vIERlZmluZSB0aGUgaG9vaywgd2UnbGwg
Y2hlY2sgb24gdGhlIGZpcnN0IHJ1biBpZiBpdCdzIHJlYWxseSBuZWVkZWQuCisgICAgcmV0dXJu
IHsKKyAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGlmICggY29uZGl0aW9u
Rm4oKSApIHsKKworICAgICAgICAgICAgICAgIC8vIEhvb2sgbm90IG5lZWRlZCAob3IgaXQncyBu
b3QgcG9zc2libGUgdG8gdXNlIGl0IGR1ZQorICAgICAgICAgICAgICAgIC8vIHRvIG1pc3Npbmcg
ZGVwZW5kZW5jeSksIHJlbW92ZSBpdC4KKyAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5nZXQ7
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAv
LyBIb29rIG5lZWRlZDsgcmVkZWZpbmUgaXQgc28gdGhhdCB0aGUgc3VwcG9ydCB0ZXN0IGlzIG5v
dCBleGVjdXRlZCBhZ2Fpbi4KKyAgICAgICAgICAgIHJldHVybiAoIHRoaXMuZ2V0ID0gaG9va0Zu
ICkuYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApOworICAgICAgICB9CisgICAgfTsKK30KKworCit2
YXIKKworICAgIC8vIFN3YXBwYWJsZSBpZiBkaXNwbGF5IGlzIG5vbmUgb3Igc3RhcnRzIHdpdGgg
dGFibGUKKyAgICAvLyBleGNlcHQgInRhYmxlIiwgInRhYmxlLWNlbGwiLCBvciAidGFibGUtY2Fw
dGlvbiIKKyAgICAvLyBTZWUgaGVyZSBmb3IgZGlzcGxheSB2YWx1ZXM6IGh0dHBzOi8vZGV2ZWxv
cGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvQ1NTL2Rpc3BsYXkKKyAgICByZGlzcGxheXN3YXAg
PSAvXihub25lfHRhYmxlKD8hLWNbZWFdKS4rKS8sCisgICAgY3NzU2hvdyA9IHsgcG9zaXRpb246
ICJhYnNvbHV0ZSIsIHZpc2liaWxpdHk6ICJoaWRkZW4iLCBkaXNwbGF5OiAiYmxvY2siIH0sCisg
ICAgY3NzTm9ybWFsVHJhbnNmb3JtID0geworICAgICAgICBsZXR0ZXJTcGFjaW5nOiAiMCIsCisg
ICAgICAgIGZvbnRXZWlnaHQ6ICI0MDAiCisgICAgfSwKKworICAgIGNzc1ByZWZpeGVzID0gWyAi
V2Via2l0IiwgIk1veiIsICJtcyIgXSwKKyAgICBlbXB0eVN0eWxlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCggImRpdiIgKS5zdHlsZTsKKworLy8gUmV0dXJuIGEgY3NzIHByb3BlcnR5IG1hcHBl
ZCB0byBhIHBvdGVudGlhbGx5IHZlbmRvciBwcmVmaXhlZCBwcm9wZXJ0eQorZnVuY3Rpb24gdmVu
ZG9yUHJvcE5hbWUoIG5hbWUgKSB7CisKKyAgICAvLyBTaG9ydGN1dCBmb3IgbmFtZXMgdGhhdCBh
cmUgbm90IHZlbmRvciBwcmVmaXhlZAorICAgIGlmICggbmFtZSBpbiBlbXB0eVN0eWxlICkgewor
ICAgICAgICByZXR1cm4gbmFtZTsKKyAgICB9CisKKyAgICAvLyBDaGVjayBmb3IgdmVuZG9yIHBy
ZWZpeGVkIG5hbWVzCisgICAgdmFyIGNhcE5hbWUgPSBuYW1lWyAwIF0udG9VcHBlckNhc2UoKSAr
IG5hbWUuc2xpY2UoIDEgKSwKKyAgICAgICAgaSA9IGNzc1ByZWZpeGVzLmxlbmd0aDsKKworICAg
IHdoaWxlICggaS0tICkgeworICAgICAgICBuYW1lID0gY3NzUHJlZml4ZXNbIGkgXSArIGNhcE5h
bWU7CisgICAgICAgIGlmICggbmFtZSBpbiBlbXB0eVN0eWxlICkgeworICAgICAgICAgICAgcmV0
dXJuIG5hbWU7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIHNldFBvc2l0aXZlTnVt
YmVyKCBlbGVtLCB2YWx1ZSwgc3VidHJhY3QgKSB7CisKKyAgICAvLyBBbnkgcmVsYXRpdmUgKCsv
LSkgdmFsdWVzIGhhdmUgYWxyZWFkeSBiZWVuCisgICAgLy8gbm9ybWFsaXplZCBhdCB0aGlzIHBv
aW50CisgICAgdmFyIG1hdGNoZXMgPSByY3NzTnVtLmV4ZWMoIHZhbHVlICk7CisgICAgcmV0dXJu
IG1hdGNoZXMgPworCisgICAgICAgIC8vIEd1YXJkIGFnYWluc3QgdW5kZWZpbmVkICJzdWJ0cmFj
dCIsIGUuZy4sIHdoZW4gdXNlZCBhcyBpbiBjc3NIb29rcworICAgICAgICBNYXRoLm1heCggMCwg
bWF0Y2hlc1sgMiBdIC0gKCBzdWJ0cmFjdCB8fCAwICkgKSArICggbWF0Y2hlc1sgMyBdIHx8ICJw
eCIgKSA6CisgICAgICAgIHZhbHVlOworfQorCitmdW5jdGlvbiBhdWdtZW50V2lkdGhPckhlaWdo
dCggZWxlbSwgbmFtZSwgZXh0cmEsIGlzQm9yZGVyQm94LCBzdHlsZXMgKSB7CisgICAgdmFyIGks
CisgICAgICAgIHZhbCA9IDA7CisKKyAgICAvLyBJZiB3ZSBhbHJlYWR5IGhhdmUgdGhlIHJpZ2h0
IG1lYXN1cmVtZW50LCBhdm9pZCBhdWdtZW50YXRpb24KKyAgICBpZiAoIGV4dHJhID09PSAoIGlz
Qm9yZGVyQm94ID8gImJvcmRlciIgOiAiY29udGVudCIgKSApIHsKKyAgICAgICAgaSA9IDQ7CisK
KyAgICAvLyBPdGhlcndpc2UgaW5pdGlhbGl6ZSBmb3IgaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCBw
cm9wZXJ0aWVzCisgICAgfSBlbHNlIHsKKyAgICAgICAgaSA9IG5hbWUgPT09ICJ3aWR0aCIgPyAx
IDogMDsKKyAgICB9CisKKyAgICBmb3IgKCA7IGkgPCA0OyBpICs9IDIgKSB7CisKKyAgICAgICAg
Ly8gQm90aCBib3ggbW9kZWxzIGV4Y2x1ZGUgbWFyZ2luLCBzbyBhZGQgaXQgaWYgd2Ugd2FudCBp
dAorICAgICAgICBpZiAoIGV4dHJhID09PSAibWFyZ2luIiApIHsKKyAgICAgICAgICAgIHZhbCAr
PSBqUXVlcnkuY3NzKCBlbGVtLCBleHRyYSArIGNzc0V4cGFuZFsgaSBdLCB0cnVlLCBzdHlsZXMg
KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICggaXNCb3JkZXJCb3ggKSB7CisKKyAgICAgICAg
ICAgIC8vIGJvcmRlci1ib3ggaW5jbHVkZXMgcGFkZGluZywgc28gcmVtb3ZlIGl0IGlmIHdlIHdh
bnQgY29udGVudAorICAgICAgICAgICAgaWYgKCBleHRyYSA9PT0gImNvbnRlbnQiICkgeworICAg
ICAgICAgICAgICAgIHZhbCAtPSBqUXVlcnkuY3NzKCBlbGVtLCAicGFkZGluZyIgKyBjc3NFeHBh
bmRbIGkgXSwgdHJ1ZSwgc3R5bGVzICk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8v
IEF0IHRoaXMgcG9pbnQsIGV4dHJhIGlzbid0IGJvcmRlciBub3IgbWFyZ2luLCBzbyByZW1vdmUg
Ym9yZGVyCisgICAgICAgICAgICBpZiAoIGV4dHJhICE9PSAibWFyZ2luIiApIHsKKyAgICAgICAg
ICAgICAgICB2YWwgLT0galF1ZXJ5LmNzcyggZWxlbSwgImJvcmRlciIgKyBjc3NFeHBhbmRbIGkg
XSArICJXaWR0aCIsIHRydWUsIHN0eWxlcyApOworICAgICAgICAgICAgfQorICAgICAgICB9IGVs
c2UgeworCisgICAgICAgICAgICAvLyBBdCB0aGlzIHBvaW50LCBleHRyYSBpc24ndCBjb250ZW50
LCBzbyBhZGQgcGFkZGluZworICAgICAgICAgICAgdmFsICs9IGpRdWVyeS5jc3MoIGVsZW0sICJw
YWRkaW5nIiArIGNzc0V4cGFuZFsgaSBdLCB0cnVlLCBzdHlsZXMgKTsKKworICAgICAgICAgICAg
Ly8gQXQgdGhpcyBwb2ludCwgZXh0cmEgaXNuJ3QgY29udGVudCBub3IgcGFkZGluZywgc28gYWRk
IGJvcmRlcgorICAgICAgICAgICAgaWYgKCBleHRyYSAhPT0gInBhZGRpbmciICkgeworICAgICAg
ICAgICAgICAgIHZhbCArPSBqUXVlcnkuY3NzKCBlbGVtLCAiYm9yZGVyIiArIGNzc0V4cGFuZFsg
aSBdICsgIldpZHRoIiwgdHJ1ZSwgc3R5bGVzICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9CisKKyAgICByZXR1cm4gdmFsOworfQorCitmdW5jdGlvbiBnZXRXaWR0aE9ySGVpZ2h0
KCBlbGVtLCBuYW1lLCBleHRyYSApIHsKKworICAgIC8vIFN0YXJ0IHdpdGggb2Zmc2V0IHByb3Bl
cnR5LCB3aGljaCBpcyBlcXVpdmFsZW50IHRvIHRoZSBib3JkZXItYm94IHZhbHVlCisgICAgdmFy
IHZhbCwKKyAgICAgICAgdmFsdWVJc0JvcmRlckJveCA9IHRydWUsCisgICAgICAgIHN0eWxlcyA9
IGdldFN0eWxlcyggZWxlbSApLAorICAgICAgICBpc0JvcmRlckJveCA9IGpRdWVyeS5jc3MoIGVs
ZW0sICJib3hTaXppbmciLCBmYWxzZSwgc3R5bGVzICkgPT09ICJib3JkZXItYm94IjsKKworICAg
IC8vIFN1cHBvcnQ6IElFIDw9MTEgb25seQorICAgIC8vIFJ1bm5pbmcgZ2V0Qm91bmRpbmdDbGll
bnRSZWN0IG9uIGEgZGlzY29ubmVjdGVkIG5vZGUKKyAgICAvLyBpbiBJRSB0aHJvd3MgYW4gZXJy
b3IuCisgICAgaWYgKCBlbGVtLmdldENsaWVudFJlY3RzKCkubGVuZ3RoICkgeworICAgICAgICB2
YWwgPSBlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpWyBuYW1lIF07CisgICAgfQorCisgICAg
Ly8gU29tZSBub24taHRtbCBlbGVtZW50cyByZXR1cm4gdW5kZWZpbmVkIGZvciBvZmZzZXRXaWR0
aCwgc28gY2hlY2sgZm9yIG51bGwvdW5kZWZpbmVkCisgICAgLy8gc3ZnIC0gaHR0cHM6Ly9idWd6
aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQ5Mjg1CisgICAgLy8gTWF0aE1MIC0g
aHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDkxNjY4CisgICAg
aWYgKCB2YWwgPD0gMCB8fCB2YWwgPT0gbnVsbCApIHsKKworICAgICAgICAvLyBGYWxsIGJhY2sg
dG8gY29tcHV0ZWQgdGhlbiB1bmNvbXB1dGVkIGNzcyBpZiBuZWNlc3NhcnkKKyAgICAgICAgdmFs
ID0gY3VyQ1NTKCBlbGVtLCBuYW1lLCBzdHlsZXMgKTsKKyAgICAgICAgaWYgKCB2YWwgPCAwIHx8
IHZhbCA9PSBudWxsICkgeworICAgICAgICAgICAgdmFsID0gZWxlbS5zdHlsZVsgbmFtZSBdOwor
ICAgICAgICB9CisKKyAgICAgICAgLy8gQ29tcHV0ZWQgdW5pdCBpcyBub3QgcGl4ZWxzLiBTdG9w
IGhlcmUgYW5kIHJldHVybi4KKyAgICAgICAgaWYgKCBybnVtbm9ucHgudGVzdCggdmFsICkgKSB7
CisgICAgICAgICAgICByZXR1cm4gdmFsOworICAgICAgICB9CisKKyAgICAgICAgLy8gQ2hlY2sg
Zm9yIHN0eWxlIGluIGNhc2UgYSBicm93c2VyIHdoaWNoIHJldHVybnMgdW5yZWxpYWJsZSB2YWx1
ZXMKKyAgICAgICAgLy8gZm9yIGdldENvbXB1dGVkU3R5bGUgc2lsZW50bHkgZmFsbHMgYmFjayB0
byB0aGUgcmVsaWFibGUgZWxlbS5zdHlsZQorICAgICAgICB2YWx1ZUlzQm9yZGVyQm94ID0gaXNC
b3JkZXJCb3ggJiYKKyAgICAgICAgICAgICggc3VwcG9ydC5ib3hTaXppbmdSZWxpYWJsZSgpIHx8
IHZhbCA9PT0gZWxlbS5zdHlsZVsgbmFtZSBdICk7CisKKyAgICAgICAgLy8gTm9ybWFsaXplICIi
LCBhdXRvLCBhbmQgcHJlcGFyZSBmb3IgZXh0cmEKKyAgICAgICAgdmFsID0gcGFyc2VGbG9hdCgg
dmFsICkgfHwgMDsKKyAgICB9CisKKyAgICAvLyBVc2UgdGhlIGFjdGl2ZSBib3gtc2l6aW5nIG1v
ZGVsIHRvIGFkZC9zdWJ0cmFjdCBpcnJlbGV2YW50IHN0eWxlcworICAgIHJldHVybiAoIHZhbCAr
CisgICAgICAgIGF1Z21lbnRXaWR0aE9ySGVpZ2h0KAorICAgICAgICAgICAgZWxlbSwKKyAgICAg
ICAgICAgIG5hbWUsCisgICAgICAgICAgICBleHRyYSB8fCAoIGlzQm9yZGVyQm94ID8gImJvcmRl
ciIgOiAiY29udGVudCIgKSwKKyAgICAgICAgICAgIHZhbHVlSXNCb3JkZXJCb3gsCisgICAgICAg
ICAgICBzdHlsZXMKKyAgICAgICAgKQorICAgICkgKyAicHgiOworfQorCitqUXVlcnkuZXh0ZW5k
KCB7CisKKyAgICAvLyBBZGQgaW4gc3R5bGUgcHJvcGVydHkgaG9va3MgZm9yIG92ZXJyaWRpbmcg
dGhlIGRlZmF1bHQKKyAgICAvLyBiZWhhdmlvciBvZiBnZXR0aW5nIGFuZCBzZXR0aW5nIGEgc3R5
bGUgcHJvcGVydHkKKyAgICBjc3NIb29rczogeworICAgICAgICBvcGFjaXR5OiB7CisgICAgICAg
ICAgICBnZXQ6IGZ1bmN0aW9uKCBlbGVtLCBjb21wdXRlZCApIHsKKyAgICAgICAgICAgICAgICBp
ZiAoIGNvbXB1dGVkICkgeworCisgICAgICAgICAgICAgICAgICAgIC8vIFdlIHNob3VsZCBhbHdh
eXMgZ2V0IGEgbnVtYmVyIGJhY2sgZnJvbSBvcGFjaXR5CisgICAgICAgICAgICAgICAgICAgIHZh
ciByZXQgPSBjdXJDU1MoIGVsZW0sICJvcGFjaXR5IiApOworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gcmV0ID09PSAiIiA/ICIxIiA6IHJldDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9LAorCisgICAgLy8gRG9uJ3QgYXV0b21hdGljYWxseSBh
ZGQgInB4IiB0byB0aGVzZSBwb3NzaWJseS11bml0bGVzcyBwcm9wZXJ0aWVzCisgICAgY3NzTnVt
YmVyOiB7CisgICAgICAgICJhbmltYXRpb25JdGVyYXRpb25Db3VudCI6IHRydWUsCisgICAgICAg
ICJjb2x1bW5Db3VudCI6IHRydWUsCisgICAgICAgICJmaWxsT3BhY2l0eSI6IHRydWUsCisgICAg
ICAgICJmbGV4R3JvdyI6IHRydWUsCisgICAgICAgICJmbGV4U2hyaW5rIjogdHJ1ZSwKKyAgICAg
ICAgImZvbnRXZWlnaHQiOiB0cnVlLAorICAgICAgICAibGluZUhlaWdodCI6IHRydWUsCisgICAg
ICAgICJvcGFjaXR5IjogdHJ1ZSwKKyAgICAgICAgIm9yZGVyIjogdHJ1ZSwKKyAgICAgICAgIm9y
cGhhbnMiOiB0cnVlLAorICAgICAgICAid2lkb3dzIjogdHJ1ZSwKKyAgICAgICAgInpJbmRleCI6
IHRydWUsCisgICAgICAgICJ6b29tIjogdHJ1ZQorICAgIH0sCisKKyAgICAvLyBBZGQgaW4gcHJv
cGVydGllcyB3aG9zZSBuYW1lcyB5b3Ugd2lzaCB0byBmaXggYmVmb3JlCisgICAgLy8gc2V0dGlu
ZyBvciBnZXR0aW5nIHRoZSB2YWx1ZQorICAgIGNzc1Byb3BzOiB7CisgICAgICAgICJmbG9hdCI6
ICJjc3NGbG9hdCIKKyAgICB9LAorCisgICAgLy8gR2V0IGFuZCBzZXQgdGhlIHN0eWxlIHByb3Bl
cnR5IG9uIGEgRE9NIE5vZGUKKyAgICBzdHlsZTogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIHZhbHVl
LCBleHRyYSApIHsKKworICAgICAgICAvLyBEb24ndCBzZXQgc3R5bGVzIG9uIHRleHQgYW5kIGNv
bW1lbnQgbm9kZXMKKyAgICAgICAgaWYgKCAhZWxlbSB8fCBlbGVtLm5vZGVUeXBlID09PSAzIHx8
IGVsZW0ubm9kZVR5cGUgPT09IDggfHwgIWVsZW0uc3R5bGUgKSB7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCB3ZSdyZSB3b3JraW5n
IHdpdGggdGhlIHJpZ2h0IG5hbWUKKyAgICAgICAgdmFyIHJldCwgdHlwZSwgaG9va3MsCisgICAg
ICAgICAgICBvcmlnTmFtZSA9IGpRdWVyeS5jYW1lbENhc2UoIG5hbWUgKSwKKyAgICAgICAgICAg
IHN0eWxlID0gZWxlbS5zdHlsZTsKKworICAgICAgICBuYW1lID0galF1ZXJ5LmNzc1Byb3BzWyBv
cmlnTmFtZSBdIHx8CisgICAgICAgICAgICAoIGpRdWVyeS5jc3NQcm9wc1sgb3JpZ05hbWUgXSA9
IHZlbmRvclByb3BOYW1lKCBvcmlnTmFtZSApIHx8IG9yaWdOYW1lICk7CisKKyAgICAgICAgLy8g
R2V0cyBob29rIGZvciB0aGUgcHJlZml4ZWQgdmVyc2lvbiwgdGhlbiB1bnByZWZpeGVkIHZlcnNp
b24KKyAgICAgICAgaG9va3MgPSBqUXVlcnkuY3NzSG9va3NbIG5hbWUgXSB8fCBqUXVlcnkuY3Nz
SG9va3NbIG9yaWdOYW1lIF07CisKKyAgICAgICAgLy8gQ2hlY2sgaWYgd2UncmUgc2V0dGluZyBh
IHZhbHVlCisgICAgICAgIGlmICggdmFsdWUgIT09IHVuZGVmaW5lZCApIHsKKyAgICAgICAgICAg
IHR5cGUgPSB0eXBlb2YgdmFsdWU7CisKKyAgICAgICAgICAgIC8vIENvbnZlcnQgIis9IiBvciAi
LT0iIHRvIHJlbGF0aXZlIG51bWJlcnMgKCM3MzQ1KQorICAgICAgICAgICAgaWYgKCB0eXBlID09
PSAic3RyaW5nIiAmJiAoIHJldCA9IHJjc3NOdW0uZXhlYyggdmFsdWUgKSApICYmIHJldFsgMSBd
ICkgeworICAgICAgICAgICAgICAgIHZhbHVlID0gYWRqdXN0Q1NTKCBlbGVtLCBuYW1lLCByZXQg
KTsKKworICAgICAgICAgICAgICAgIC8vIEZpeGVzIGJ1ZyAjOTIzNworICAgICAgICAgICAgICAg
IHR5cGUgPSAibnVtYmVyIjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gTWFrZSBz
dXJlIHRoYXQgbnVsbCBhbmQgTmFOIHZhbHVlcyBhcmVuJ3Qgc2V0ICgjNzExNikKKyAgICAgICAg
ICAgIGlmICggdmFsdWUgPT0gbnVsbCB8fCB2YWx1ZSAhPT0gdmFsdWUgKSB7CisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBJZiBhIG51bWJl
ciB3YXMgcGFzc2VkIGluLCBhZGQgdGhlIHVuaXQgKGV4Y2VwdCBmb3IgY2VydGFpbiBDU1MgcHJv
cGVydGllcykKKyAgICAgICAgICAgIGlmICggdHlwZSA9PT0gIm51bWJlciIgKSB7CisgICAgICAg
ICAgICAgICAgdmFsdWUgKz0gcmV0ICYmIHJldFsgMyBdIHx8ICggalF1ZXJ5LmNzc051bWJlclsg
b3JpZ05hbWUgXSA/ICIiIDogInB4IiApOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAv
LyBiYWNrZ3JvdW5kLSogcHJvcHMgYWZmZWN0IG9yaWdpbmFsIGNsb25lJ3MgdmFsdWVzCisgICAg
ICAgICAgICBpZiAoICFzdXBwb3J0LmNsZWFyQ2xvbmVTdHlsZSAmJiB2YWx1ZSA9PT0gIiIgJiYg
bmFtZS5pbmRleE9mKCAiYmFja2dyb3VuZCIgKSA9PT0gMCApIHsKKyAgICAgICAgICAgICAgICBz
dHlsZVsgbmFtZSBdID0gImluaGVyaXQiOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAv
LyBJZiBhIGhvb2sgd2FzIHByb3ZpZGVkLCB1c2UgdGhhdCB2YWx1ZSwgb3RoZXJ3aXNlIGp1c3Qg
c2V0IHRoZSBzcGVjaWZpZWQgdmFsdWUKKyAgICAgICAgICAgIGlmICggIWhvb2tzIHx8ICEoICJz
ZXQiIGluIGhvb2tzICkgfHwKKyAgICAgICAgICAgICAgICAoIHZhbHVlID0gaG9va3Muc2V0KCBl
bGVtLCB2YWx1ZSwgZXh0cmEgKSApICE9PSB1bmRlZmluZWQgKSB7CisKKyAgICAgICAgICAgICAg
ICBzdHlsZVsgbmFtZSBdID0gdmFsdWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgfSBlbHNl
IHsKKworICAgICAgICAgICAgLy8gSWYgYSBob29rIHdhcyBwcm92aWRlZCBnZXQgdGhlIG5vbi1j
b21wdXRlZCB2YWx1ZSBmcm9tIHRoZXJlCisgICAgICAgICAgICBpZiAoIGhvb2tzICYmICJnZXQi
IGluIGhvb2tzICYmCisgICAgICAgICAgICAgICAgKCByZXQgPSBob29rcy5nZXQoIGVsZW0sIGZh
bHNlLCBleHRyYSApICkgIT09IHVuZGVmaW5lZCApIHsKKworICAgICAgICAgICAgICAgIHJldHVy
biByZXQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIE90aGVyd2lzZSBqdXN0IGdl
dCB0aGUgdmFsdWUgZnJvbSB0aGUgc3R5bGUgb2JqZWN0CisgICAgICAgICAgICByZXR1cm4gc3R5
bGVbIG5hbWUgXTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICBjc3M6IGZ1bmN0aW9uKCBlbGVt
LCBuYW1lLCBleHRyYSwgc3R5bGVzICkgeworICAgICAgICB2YXIgdmFsLCBudW0sIGhvb2tzLAor
ICAgICAgICAgICAgb3JpZ05hbWUgPSBqUXVlcnkuY2FtZWxDYXNlKCBuYW1lICk7CisKKyAgICAg
ICAgLy8gTWFrZSBzdXJlIHRoYXQgd2UncmUgd29ya2luZyB3aXRoIHRoZSByaWdodCBuYW1lCisg
ICAgICAgIG5hbWUgPSBqUXVlcnkuY3NzUHJvcHNbIG9yaWdOYW1lIF0gfHwKKyAgICAgICAgICAg
ICggalF1ZXJ5LmNzc1Byb3BzWyBvcmlnTmFtZSBdID0gdmVuZG9yUHJvcE5hbWUoIG9yaWdOYW1l
ICkgfHwgb3JpZ05hbWUgKTsKKworICAgICAgICAvLyBUcnkgcHJlZml4ZWQgbmFtZSBmb2xsb3dl
ZCBieSB0aGUgdW5wcmVmaXhlZCBuYW1lCisgICAgICAgIGhvb2tzID0galF1ZXJ5LmNzc0hvb2tz
WyBuYW1lIF0gfHwgalF1ZXJ5LmNzc0hvb2tzWyBvcmlnTmFtZSBdOworCisgICAgICAgIC8vIElm
IGEgaG9vayB3YXMgcHJvdmlkZWQgZ2V0IHRoZSBjb21wdXRlZCB2YWx1ZSBmcm9tIHRoZXJlCisg
ICAgICAgIGlmICggaG9va3MgJiYgImdldCIgaW4gaG9va3MgKSB7CisgICAgICAgICAgICB2YWwg
PSBob29rcy5nZXQoIGVsZW0sIHRydWUsIGV4dHJhICk7CisgICAgICAgIH0KKworICAgICAgICAv
LyBPdGhlcndpc2UsIGlmIGEgd2F5IHRvIGdldCB0aGUgY29tcHV0ZWQgdmFsdWUgZXhpc3RzLCB1
c2UgdGhhdAorICAgICAgICBpZiAoIHZhbCA9PT0gdW5kZWZpbmVkICkgeworICAgICAgICAgICAg
dmFsID0gY3VyQ1NTKCBlbGVtLCBuYW1lLCBzdHlsZXMgKTsKKyAgICAgICAgfQorCisgICAgICAg
IC8vIENvbnZlcnQgIm5vcm1hbCIgdG8gY29tcHV0ZWQgdmFsdWUKKyAgICAgICAgaWYgKCB2YWwg
PT09ICJub3JtYWwiICYmIG5hbWUgaW4gY3NzTm9ybWFsVHJhbnNmb3JtICkgeworICAgICAgICAg
ICAgdmFsID0gY3NzTm9ybWFsVHJhbnNmb3JtWyBuYW1lIF07CisgICAgICAgIH0KKworICAgICAg
ICAvLyBNYWtlIG51bWVyaWMgaWYgZm9yY2VkIG9yIGEgcXVhbGlmaWVyIHdhcyBwcm92aWRlZCBh
bmQgdmFsIGxvb2tzIG51bWVyaWMKKyAgICAgICAgaWYgKCBleHRyYSA9PT0gIiIgfHwgZXh0cmEg
KSB7CisgICAgICAgICAgICBudW0gPSBwYXJzZUZsb2F0KCB2YWwgKTsKKyAgICAgICAgICAgIHJl
dHVybiBleHRyYSA9PT0gdHJ1ZSB8fCBpc0Zpbml0ZSggbnVtICkgPyBudW0gfHwgMCA6IHZhbDsK
KyAgICAgICAgfQorICAgICAgICByZXR1cm4gdmFsOworICAgIH0KK30gKTsKKworalF1ZXJ5LmVh
Y2goIFsgImhlaWdodCIsICJ3aWR0aCIgXSwgZnVuY3Rpb24oIGksIG5hbWUgKSB7CisgICAgalF1
ZXJ5LmNzc0hvb2tzWyBuYW1lIF0gPSB7CisgICAgICAgIGdldDogZnVuY3Rpb24oIGVsZW0sIGNv
bXB1dGVkLCBleHRyYSApIHsKKyAgICAgICAgICAgIGlmICggY29tcHV0ZWQgKSB7CisKKyAgICAg
ICAgICAgICAgICAvLyBDZXJ0YWluIGVsZW1lbnRzIGNhbiBoYXZlIGRpbWVuc2lvbiBpbmZvIGlm
IHdlIGludmlzaWJseSBzaG93IHRoZW0KKyAgICAgICAgICAgICAgICAvLyBidXQgaXQgbXVzdCBo
YXZlIGEgY3VycmVudCBkaXNwbGF5IHN0eWxlIHRoYXQgd291bGQgYmVuZWZpdAorICAgICAgICAg
ICAgICAgIHJldHVybiByZGlzcGxheXN3YXAudGVzdCggalF1ZXJ5LmNzcyggZWxlbSwgImRpc3Bs
YXkiICkgKSAmJgorCisgICAgICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6IFNhZmFyaSA4Kwor
ICAgICAgICAgICAgICAgICAgICAvLyBUYWJsZSBjb2x1bW5zIGluIFNhZmFyaSBoYXZlIG5vbi16
ZXJvIG9mZnNldFdpZHRoICYgemVybworICAgICAgICAgICAgICAgICAgICAvLyBnZXRCb3VuZGlu
Z0NsaWVudFJlY3QoKS53aWR0aCB1bmxlc3MgZGlzcGxheSBpcyBjaGFuZ2VkLgorICAgICAgICAg
ICAgICAgICAgICAvLyBTdXBwb3J0OiBJRSA8PTExIG9ubHkKKyAgICAgICAgICAgICAgICAgICAg
Ly8gUnVubmluZyBnZXRCb3VuZGluZ0NsaWVudFJlY3Qgb24gYSBkaXNjb25uZWN0ZWQgbm9kZQor
ICAgICAgICAgICAgICAgICAgICAvLyBpbiBJRSB0aHJvd3MgYW4gZXJyb3IuCisgICAgICAgICAg
ICAgICAgICAgICggIWVsZW0uZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGggfHwgIWVsZW0uZ2V0Qm91
bmRpbmdDbGllbnRSZWN0KCkud2lkdGggKSA/CisgICAgICAgICAgICAgICAgICAgICAgICBzd2Fw
KCBlbGVtLCBjc3NTaG93LCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZ2V0V2lkdGhPckhlaWdodCggZWxlbSwgbmFtZSwgZXh0cmEgKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0gKSA6CisgICAgICAgICAgICAgICAgICAgICAgICBnZXRXaWR0aE9y
SGVpZ2h0KCBlbGVtLCBuYW1lLCBleHRyYSApOworICAgICAgICAgICAgfQorICAgICAgICB9LAor
CisgICAgICAgIHNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlLCBleHRyYSApIHsKKyAgICAgICAg
ICAgIHZhciBtYXRjaGVzLAorICAgICAgICAgICAgICAgIHN0eWxlcyA9IGV4dHJhICYmIGdldFN0
eWxlcyggZWxlbSApLAorICAgICAgICAgICAgICAgIHN1YnRyYWN0ID0gZXh0cmEgJiYgYXVnbWVu
dFdpZHRoT3JIZWlnaHQoCisgICAgICAgICAgICAgICAgICAgIGVsZW0sCisgICAgICAgICAgICAg
ICAgICAgIG5hbWUsCisgICAgICAgICAgICAgICAgICAgIGV4dHJhLAorICAgICAgICAgICAgICAg
ICAgICBqUXVlcnkuY3NzKCBlbGVtLCAiYm94U2l6aW5nIiwgZmFsc2UsIHN0eWxlcyApID09PSAi
Ym9yZGVyLWJveCIsCisgICAgICAgICAgICAgICAgICAgIHN0eWxlcworICAgICAgICAgICAgICAg
ICk7CisKKyAgICAgICAgICAgIC8vIENvbnZlcnQgdG8gcGl4ZWxzIGlmIHZhbHVlIGFkanVzdG1l
bnQgaXMgbmVlZGVkCisgICAgICAgICAgICBpZiAoIHN1YnRyYWN0ICYmICggbWF0Y2hlcyA9IHJj
c3NOdW0uZXhlYyggdmFsdWUgKSApICYmCisgICAgICAgICAgICAgICAgKCBtYXRjaGVzWyAzIF0g
fHwgInB4IiApICE9PSAicHgiICkgeworCisgICAgICAgICAgICAgICAgZWxlbS5zdHlsZVsgbmFt
ZSBdID0gdmFsdWU7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBqUXVlcnkuY3NzKCBlbGVtLCBu
YW1lICk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBzZXRQb3NpdGl2ZU51
bWJlciggZWxlbSwgdmFsdWUsIHN1YnRyYWN0ICk7CisgICAgICAgIH0KKyAgICB9OworfSApOwor
CitqUXVlcnkuY3NzSG9va3MubWFyZ2luTGVmdCA9IGFkZEdldEhvb2tJZiggc3VwcG9ydC5yZWxp
YWJsZU1hcmdpbkxlZnQsCisgICAgZnVuY3Rpb24oIGVsZW0sIGNvbXB1dGVkICkgeworICAgICAg
ICBpZiAoIGNvbXB1dGVkICkgeworICAgICAgICAgICAgcmV0dXJuICggcGFyc2VGbG9hdCggY3Vy
Q1NTKCBlbGVtLCAibWFyZ2luTGVmdCIgKSApIHx8CisgICAgICAgICAgICAgICAgZWxlbS5nZXRC
b3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0IC0KKyAgICAgICAgICAgICAgICAgICAgc3dhcCggZWxl
bSwgeyBtYXJnaW5MZWZ0OiAwIH0sIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDsKKyAgICAgICAgICAg
ICAgICAgICAgfSApCisgICAgICAgICAgICAgICAgKSArICJweCI7CisgICAgICAgIH0KKyAgICB9
CispOworCisvLyBUaGVzZSBob29rcyBhcmUgdXNlZCBieSBhbmltYXRlIHRvIGV4cGFuZCBwcm9w
ZXJ0aWVzCitqUXVlcnkuZWFjaCggeworICAgIG1hcmdpbjogIiIsCisgICAgcGFkZGluZzogIiIs
CisgICAgYm9yZGVyOiAiV2lkdGgiCit9LCBmdW5jdGlvbiggcHJlZml4LCBzdWZmaXggKSB7Cisg
ICAgalF1ZXJ5LmNzc0hvb2tzWyBwcmVmaXggKyBzdWZmaXggXSA9IHsKKyAgICAgICAgZXhwYW5k
OiBmdW5jdGlvbiggdmFsdWUgKSB7CisgICAgICAgICAgICB2YXIgaSA9IDAsCisgICAgICAgICAg
ICAgICAgZXhwYW5kZWQgPSB7fSwKKworICAgICAgICAgICAgICAgIC8vIEFzc3VtZXMgYSBzaW5n
bGUgbnVtYmVyIGlmIG5vdCBhIHN0cmluZworICAgICAgICAgICAgICAgIHBhcnRzID0gdHlwZW9m
IHZhbHVlID09PSAic3RyaW5nIiA/IHZhbHVlLnNwbGl0KCAiICIgKSA6IFsgdmFsdWUgXTsKKwor
ICAgICAgICAgICAgZm9yICggOyBpIDwgNDsgaSsrICkgeworICAgICAgICAgICAgICAgIGV4cGFu
ZGVkWyBwcmVmaXggKyBjc3NFeHBhbmRbIGkgXSArIHN1ZmZpeCBdID0KKyAgICAgICAgICAgICAg
ICAgICAgcGFydHNbIGkgXSB8fCBwYXJ0c1sgaSAtIDIgXSB8fCBwYXJ0c1sgMCBdOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gZXhwYW5kZWQ7CisgICAgICAgIH0KKyAgICB9
OworCisgICAgaWYgKCAhcm1hcmdpbi50ZXN0KCBwcmVmaXggKSApIHsKKyAgICAgICAgalF1ZXJ5
LmNzc0hvb2tzWyBwcmVmaXggKyBzdWZmaXggXS5zZXQgPSBzZXRQb3NpdGl2ZU51bWJlcjsKKyAg
ICB9Cit9ICk7CisKK2pRdWVyeS5mbi5leHRlbmQoIHsKKyAgICBjc3M6IGZ1bmN0aW9uKCBuYW1l
LCB2YWx1ZSApIHsKKyAgICAgICAgcmV0dXJuIGFjY2VzcyggdGhpcywgZnVuY3Rpb24oIGVsZW0s
IG5hbWUsIHZhbHVlICkgeworICAgICAgICAgICAgdmFyIHN0eWxlcywgbGVuLAorICAgICAgICAg
ICAgICAgIG1hcCA9IHt9LAorICAgICAgICAgICAgICAgIGkgPSAwOworCisgICAgICAgICAgICBp
ZiAoIGpRdWVyeS5pc0FycmF5KCBuYW1lICkgKSB7CisgICAgICAgICAgICAgICAgc3R5bGVzID0g
Z2V0U3R5bGVzKCBlbGVtICk7CisgICAgICAgICAgICAgICAgbGVuID0gbmFtZS5sZW5ndGg7CisK
KyAgICAgICAgICAgICAgICBmb3IgKCA7IGkgPCBsZW47IGkrKyApIHsKKyAgICAgICAgICAgICAg
ICAgICAgbWFwWyBuYW1lWyBpIF0gXSA9IGpRdWVyeS5jc3MoIGVsZW0sIG5hbWVbIGkgXSwgZmFs
c2UsIHN0eWxlcyApOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHJldHVy
biBtYXA7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZSAhPT0gdW5k
ZWZpbmVkID8KKyAgICAgICAgICAgICAgICBqUXVlcnkuc3R5bGUoIGVsZW0sIG5hbWUsIHZhbHVl
ICkgOgorICAgICAgICAgICAgICAgIGpRdWVyeS5jc3MoIGVsZW0sIG5hbWUgKTsKKyAgICAgICAg
fSwgbmFtZSwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggPiAxICk7CisgICAgfQorfSApOworCisK
Ky8vIEJhc2VkIG9mZiBvZiB0aGUgcGx1Z2luIGJ5IENsaW50IEhlbGZlcnMsIHdpdGggcGVybWlz
c2lvbi4KKy8vIGh0dHBzOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8yMDEwMDMyNDAxNDc0Ny9odHRw
Oi8vYmxpbmRzaWduYWxzLmNvbS9pbmRleC5waHAvMjAwOS8wNy9qcXVlcnktZGVsYXkvCitqUXVl
cnkuZm4uZGVsYXkgPSBmdW5jdGlvbiggdGltZSwgdHlwZSApIHsKKyAgICB0aW1lID0galF1ZXJ5
LmZ4ID8galF1ZXJ5LmZ4LnNwZWVkc1sgdGltZSBdIHx8IHRpbWUgOiB0aW1lOworICAgIHR5cGUg
PSB0eXBlIHx8ICJmeCI7CisKKyAgICByZXR1cm4gdGhpcy5xdWV1ZSggdHlwZSwgZnVuY3Rpb24o
IG5leHQsIGhvb2tzICkgeworICAgICAgICB2YXIgdGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0
KCBuZXh0LCB0aW1lICk7CisgICAgICAgIGhvb2tzLnN0b3AgPSBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQoIHRpbWVvdXQgKTsKKyAgICAgICAgfTsKKyAgICB9
ICk7Cit9OworCisKKyggZnVuY3Rpb24oKSB7CisgICAgdmFyIGlucHV0ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCggImlucHV0IiApLAorICAgICAgICBzZWxlY3QgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCAic2VsZWN0IiApLAorICAgICAgICBvcHQgPSBzZWxlY3QuYXBwZW5kQ2hpbGQoIGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoICJvcHRpb24iICkgKTsKKworICAgIGlucHV0LnR5cGUgPSAi
Y2hlY2tib3giOworCisgICAgLy8gU3VwcG9ydDogQW5kcm9pZCA8PTQuMyBvbmx5CisgICAgLy8g
RGVmYXVsdCB2YWx1ZSBmb3IgYSBjaGVja2JveCBzaG91bGQgYmUgIm9uIgorICAgIHN1cHBvcnQu
Y2hlY2tPbiA9IGlucHV0LnZhbHVlICE9PSAiIjsKKworICAgIC8vIFN1cHBvcnQ6IElFIDw9MTEg
b25seQorICAgIC8vIE11c3QgYWNjZXNzIHNlbGVjdGVkSW5kZXggdG8gbWFrZSBkZWZhdWx0IG9w
dGlvbnMgc2VsZWN0CisgICAgc3VwcG9ydC5vcHRTZWxlY3RlZCA9IG9wdC5zZWxlY3RlZDsKKwor
ICAgIC8vIFN1cHBvcnQ6IElFIDw9MTEgb25seQorICAgIC8vIEFuIGlucHV0IGxvc2VzIGl0cyB2
YWx1ZSBhZnRlciBiZWNvbWluZyBhIHJhZGlvCisgICAgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCAiaW5wdXQiICk7CisgICAgaW5wdXQudmFsdWUgPSAidCI7CisgICAgaW5wdXQudHlw
ZSA9ICJyYWRpbyI7CisgICAgc3VwcG9ydC5yYWRpb1ZhbHVlID0gaW5wdXQudmFsdWUgPT09ICJ0
IjsKK30gKSgpOworCisKK3ZhciBib29sSG9vaywKKyAgICBhdHRySGFuZGxlID0galF1ZXJ5LmV4
cHIuYXR0ckhhbmRsZTsKKworalF1ZXJ5LmZuLmV4dGVuZCggeworICAgIGF0dHI6IGZ1bmN0aW9u
KCBuYW1lLCB2YWx1ZSApIHsKKyAgICAgICAgcmV0dXJuIGFjY2VzcyggdGhpcywgalF1ZXJ5LmF0
dHIsIG5hbWUsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoID4gMSApOworICAgIH0sCisKKyAgICBy
ZW1vdmVBdHRyOiBmdW5jdGlvbiggbmFtZSApIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZWFjaCgg
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBqUXVlcnkucmVtb3ZlQXR0ciggdGhpcywgbmFtZSAp
OworICAgICAgICB9ICk7CisgICAgfQorfSApOworCitqUXVlcnkuZXh0ZW5kKCB7CisgICAgYXR0
cjogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIHZhbHVlICkgeworICAgICAgICB2YXIgcmV0LCBob29r
cywKKyAgICAgICAgICAgIG5UeXBlID0gZWxlbS5ub2RlVHlwZTsKKworICAgICAgICAvLyBEb24n
dCBnZXQvc2V0IGF0dHJpYnV0ZXMgb24gdGV4dCwgY29tbWVudCBhbmQgYXR0cmlidXRlIG5vZGVz
CisgICAgICAgIGlmICggblR5cGUgPT09IDMgfHwgblR5cGUgPT09IDggfHwgblR5cGUgPT09IDIg
KSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBGYWxsYmFj
ayB0byBwcm9wIHdoZW4gYXR0cmlidXRlcyBhcmUgbm90IHN1cHBvcnRlZAorICAgICAgICBpZiAo
IHR5cGVvZiBlbGVtLmdldEF0dHJpYnV0ZSA9PT0gInVuZGVmaW5lZCIgKSB7CisgICAgICAgICAg
ICByZXR1cm4galF1ZXJ5LnByb3AoIGVsZW0sIG5hbWUsIHZhbHVlICk7CisgICAgICAgIH0KKwor
ICAgICAgICAvLyBBdHRyaWJ1dGUgaG9va3MgYXJlIGRldGVybWluZWQgYnkgdGhlIGxvd2VyY2Fz
ZSB2ZXJzaW9uCisgICAgICAgIC8vIEdyYWIgbmVjZXNzYXJ5IGhvb2sgaWYgb25lIGlzIGRlZmlu
ZWQKKyAgICAgICAgaWYgKCBuVHlwZSAhPT0gMSB8fCAhalF1ZXJ5LmlzWE1MRG9jKCBlbGVtICkg
KSB7CisgICAgICAgICAgICBob29rcyA9IGpRdWVyeS5hdHRySG9va3NbIG5hbWUudG9Mb3dlckNh
c2UoKSBdIHx8CisgICAgICAgICAgICAgICAgKCBqUXVlcnkuZXhwci5tYXRjaC5ib29sLnRlc3Qo
IG5hbWUgKSA/IGJvb2xIb29rIDogdW5kZWZpbmVkICk7CisgICAgICAgIH0KKworICAgICAgICBp
ZiAoIHZhbHVlICE9PSB1bmRlZmluZWQgKSB7CisgICAgICAgICAgICBpZiAoIHZhbHVlID09PSBu
dWxsICkgeworICAgICAgICAgICAgICAgIGpRdWVyeS5yZW1vdmVBdHRyKCBlbGVtLCBuYW1lICk7
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBp
ZiAoIGhvb2tzICYmICJzZXQiIGluIGhvb2tzICYmCisgICAgICAgICAgICAgICAgKCByZXQgPSBo
b29rcy5zZXQoIGVsZW0sIHZhbHVlLCBuYW1lICkgKSAhPT0gdW5kZWZpbmVkICkgeworICAgICAg
ICAgICAgICAgIHJldHVybiByZXQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGVsZW0u
c2V0QXR0cmlidXRlKCBuYW1lLCB2YWx1ZSArICIiICk7CisgICAgICAgICAgICByZXR1cm4gdmFs
dWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIGhvb2tzICYmICJnZXQiIGluIGhvb2tzICYm
ICggcmV0ID0gaG9va3MuZ2V0KCBlbGVtLCBuYW1lICkgKSAhPT0gbnVsbCApIHsKKyAgICAgICAg
ICAgIHJldHVybiByZXQ7CisgICAgICAgIH0KKworICAgICAgICByZXQgPSBqUXVlcnkuZmluZC5h
dHRyKCBlbGVtLCBuYW1lICk7CisKKyAgICAgICAgLy8gTm9uLWV4aXN0ZW50IGF0dHJpYnV0ZXMg
cmV0dXJuIG51bGwsIHdlIG5vcm1hbGl6ZSB0byB1bmRlZmluZWQKKyAgICAgICAgcmV0dXJuIHJl
dCA9PSBudWxsID8gdW5kZWZpbmVkIDogcmV0OworICAgIH0sCisKKyAgICBhdHRySG9va3M6IHsK
KyAgICAgICAgdHlwZTogeworICAgICAgICAgICAgc2V0OiBmdW5jdGlvbiggZWxlbSwgdmFsdWUg
KSB7CisgICAgICAgICAgICAgICAgaWYgKCAhc3VwcG9ydC5yYWRpb1ZhbHVlICYmIHZhbHVlID09
PSAicmFkaW8iICYmCisgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5ub2RlTmFtZSggZWxlbSwg
ImlucHV0IiApICkgeworICAgICAgICAgICAgICAgICAgICB2YXIgdmFsID0gZWxlbS52YWx1ZTsK
KyAgICAgICAgICAgICAgICAgICAgZWxlbS5zZXRBdHRyaWJ1dGUoICJ0eXBlIiwgdmFsdWUgKTsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKCB2YWwgKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBlbGVtLnZhbHVlID0gdmFsOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9LAorCisgICAgcmVtb3ZlQXR0cjogZnVuY3Rpb24oIGVsZW0sIHZhbHVl
ICkgeworICAgICAgICB2YXIgbmFtZSwKKyAgICAgICAgICAgIGkgPSAwLAorCisgICAgICAgICAg
ICAvLyBBdHRyaWJ1dGUgbmFtZXMgY2FuIGNvbnRhaW4gbm9uLUhUTUwgd2hpdGVzcGFjZSBjaGFy
YWN0ZXJzCisgICAgICAgICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRp
cGFnZS9zeW50YXguaHRtbCNhdHRyaWJ1dGVzLTIKKyAgICAgICAgICAgIGF0dHJOYW1lcyA9IHZh
bHVlICYmIHZhbHVlLm1hdGNoKCBybm90aHRtbHdoaXRlICk7CisKKyAgICAgICAgaWYgKCBhdHRy
TmFtZXMgJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSApIHsKKyAgICAgICAgICAgIHdoaWxlICggKCBu
YW1lID0gYXR0ck5hbWVzWyBpKysgXSApICkgeworICAgICAgICAgICAgICAgIGVsZW0ucmVtb3Zl
QXR0cmlidXRlKCBuYW1lICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9ICk7
CisKKy8vIEhvb2tzIGZvciBib29sZWFuIGF0dHJpYnV0ZXMKK2Jvb2xIb29rID0geworICAgIHNl
dDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlLCBuYW1lICkgeworICAgICAgICBpZiAoIHZhbHVlID09
PSBmYWxzZSApIHsKKworICAgICAgICAgICAgLy8gUmVtb3ZlIGJvb2xlYW4gYXR0cmlidXRlcyB3
aGVuIHNldCB0byBmYWxzZQorICAgICAgICAgICAgalF1ZXJ5LnJlbW92ZUF0dHIoIGVsZW0sIG5h
bWUgKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGVsZW0uc2V0QXR0cmlidXRlKCBu
YW1lLCBuYW1lICk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG5hbWU7CisgICAgfQorfTsK
KworalF1ZXJ5LmVhY2goIGpRdWVyeS5leHByLm1hdGNoLmJvb2wuc291cmNlLm1hdGNoKCAvXHcr
L2cgKSwgZnVuY3Rpb24oIGksIG5hbWUgKSB7CisgICAgdmFyIGdldHRlciA9IGF0dHJIYW5kbGVb
IG5hbWUgXSB8fCBqUXVlcnkuZmluZC5hdHRyOworCisgICAgYXR0ckhhbmRsZVsgbmFtZSBdID0g
ZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGlzWE1MICkgeworICAgICAgICB2YXIgcmV0LCBoYW5kbGUs
CisgICAgICAgICAgICBsb3dlcmNhc2VOYW1lID0gbmFtZS50b0xvd2VyQ2FzZSgpOworCisgICAg
ICAgIGlmICggIWlzWE1MICkgeworCisgICAgICAgICAgICAvLyBBdm9pZCBhbiBpbmZpbml0ZSBs
b29wIGJ5IHRlbXBvcmFyaWx5IHJlbW92aW5nIHRoaXMgZnVuY3Rpb24gZnJvbSB0aGUgZ2V0dGVy
CisgICAgICAgICAgICBoYW5kbGUgPSBhdHRySGFuZGxlWyBsb3dlcmNhc2VOYW1lIF07CisgICAg
ICAgICAgICBhdHRySGFuZGxlWyBsb3dlcmNhc2VOYW1lIF0gPSByZXQ7CisgICAgICAgICAgICBy
ZXQgPSBnZXR0ZXIoIGVsZW0sIG5hbWUsIGlzWE1MICkgIT0gbnVsbCA/CisgICAgICAgICAgICAg
ICAgbG93ZXJjYXNlTmFtZSA6CisgICAgICAgICAgICAgICAgbnVsbDsKKyAgICAgICAgICAgIGF0
dHJIYW5kbGVbIGxvd2VyY2FzZU5hbWUgXSA9IGhhbmRsZTsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm4gcmV0OworICAgIH07Cit9ICk7CisKKworCisKK3ZhciByZm9jdXNhYmxlID0gL14oPzpp
bnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaSwKKyAgICByY2xpY2thYmxlID0gL14oPzph
fGFyZWEpJC9pOworCitqUXVlcnkuZm4uZXh0ZW5kKCB7CisgICAgcHJvcDogZnVuY3Rpb24oIG5h
bWUsIHZhbHVlICkgeworICAgICAgICByZXR1cm4gYWNjZXNzKCB0aGlzLCBqUXVlcnkucHJvcCwg
bmFtZSwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggPiAxICk7CisgICAgfSwKKworICAgIHJlbW92
ZVByb3A6IGZ1bmN0aW9uKCBuYW1lICkgeworICAgICAgICByZXR1cm4gdGhpcy5lYWNoKCBmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgIGRlbGV0ZSB0aGlzWyBqUXVlcnkucHJvcEZpeFsgbmFtZSBd
IHx8IG5hbWUgXTsKKyAgICAgICAgfSApOworICAgIH0KK30gKTsKKworalF1ZXJ5LmV4dGVuZCgg
eworICAgIHByb3A6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCB2YWx1ZSApIHsKKyAgICAgICAgdmFy
IHJldCwgaG9va3MsCisgICAgICAgICAgICBuVHlwZSA9IGVsZW0ubm9kZVR5cGU7CisKKyAgICAg
ICAgLy8gRG9uJ3QgZ2V0L3NldCBwcm9wZXJ0aWVzIG9uIHRleHQsIGNvbW1lbnQgYW5kIGF0dHJp
YnV0ZSBub2RlcworICAgICAgICBpZiAoIG5UeXBlID09PSAzIHx8IG5UeXBlID09PSA4IHx8IG5U
eXBlID09PSAyICkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKCBuVHlwZSAhPT0gMSB8fCAhalF1ZXJ5LmlzWE1MRG9jKCBlbGVtICkgKSB7CisKKyAgICAg
ICAgICAgIC8vIEZpeCBuYW1lIGFuZCBhdHRhY2ggaG9va3MKKyAgICAgICAgICAgIG5hbWUgPSBq
UXVlcnkucHJvcEZpeFsgbmFtZSBdIHx8IG5hbWU7CisgICAgICAgICAgICBob29rcyA9IGpRdWVy
eS5wcm9wSG9va3NbIG5hbWUgXTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICggdmFsdWUgIT09
IHVuZGVmaW5lZCApIHsKKyAgICAgICAgICAgIGlmICggaG9va3MgJiYgInNldCIgaW4gaG9va3Mg
JiYKKyAgICAgICAgICAgICAgICAoIHJldCA9IGhvb2tzLnNldCggZWxlbSwgdmFsdWUsIG5hbWUg
KSApICE9PSB1bmRlZmluZWQgKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuICggZWxlbVsgbmFtZSBdID0gdmFsdWUgKTsK
KyAgICAgICAgfQorCisgICAgICAgIGlmICggaG9va3MgJiYgImdldCIgaW4gaG9va3MgJiYgKCBy
ZXQgPSBob29rcy5nZXQoIGVsZW0sIG5hbWUgKSApICE9PSBudWxsICkgeworICAgICAgICAgICAg
cmV0dXJuIHJldDsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBlbGVtWyBuYW1lIF07Cisg
ICAgfSwKKworICAgIHByb3BIb29rczogeworICAgICAgICB0YWJJbmRleDogeworICAgICAgICAg
ICAgZ2V0OiBmdW5jdGlvbiggZWxlbSApIHsKKworICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6
IElFIDw9OSAtIDExIG9ubHkKKyAgICAgICAgICAgICAgICAvLyBlbGVtLnRhYkluZGV4IGRvZXNu
J3QgYWx3YXlzIHJldHVybiB0aGUKKyAgICAgICAgICAgICAgICAvLyBjb3JyZWN0IHZhbHVlIHdo
ZW4gaXQgaGFzbid0IGJlZW4gZXhwbGljaXRseSBzZXQKKyAgICAgICAgICAgICAgICAvLyBodHRw
czovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAxNDExMTYyMzMzNDcvaHR0cDovL2ZsdWlkcHJvamVj
dC5vcmcvYmxvZy8yMDA4LzAxLzA5L2dldHRpbmctc2V0dGluZy1hbmQtcmVtb3ZpbmctdGFiaW5k
ZXgtdmFsdWVzLXdpdGgtamF2YXNjcmlwdC8KKyAgICAgICAgICAgICAgICAvLyBVc2UgcHJvcGVy
IGF0dHJpYnV0ZSByZXRyaWV2YWwoIzEyMDcyKQorICAgICAgICAgICAgICAgIHZhciB0YWJpbmRl
eCA9IGpRdWVyeS5maW5kLmF0dHIoIGVsZW0sICJ0YWJpbmRleCIgKTsKKworICAgICAgICAgICAg
ICAgIGlmICggdGFiaW5kZXggKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUlu
dCggdGFiaW5kZXgsIDEwICk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
aWYgKAorICAgICAgICAgICAgICAgICAgICByZm9jdXNhYmxlLnRlc3QoIGVsZW0ubm9kZU5hbWUg
KSB8fAorICAgICAgICAgICAgICAgICAgICByY2xpY2thYmxlLnRlc3QoIGVsZW0ubm9kZU5hbWUg
KSAmJgorICAgICAgICAgICAgICAgICAgICBlbGVtLmhyZWYKKyAgICAgICAgICAgICAgICApIHsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSwK
KworICAgIHByb3BGaXg6IHsKKyAgICAgICAgImZvciI6ICJodG1sRm9yIiwKKyAgICAgICAgImNs
YXNzIjogImNsYXNzTmFtZSIKKyAgICB9Cit9ICk7CisKKy8vIFN1cHBvcnQ6IElFIDw9MTEgb25s
eQorLy8gQWNjZXNzaW5nIHRoZSBzZWxlY3RlZEluZGV4IHByb3BlcnR5CisvLyBmb3JjZXMgdGhl
IGJyb3dzZXIgdG8gcmVzcGVjdCBzZXR0aW5nIHNlbGVjdGVkCisvLyBvbiB0aGUgb3B0aW9uCisv
LyBUaGUgZ2V0dGVyIGVuc3VyZXMgYSBkZWZhdWx0IG9wdGlvbiBpcyBzZWxlY3RlZAorLy8gd2hl
biBpbiBhbiBvcHRncm91cAorLy8gZXNsaW50IHJ1bGUgIm5vLXVudXNlZC1leHByZXNzaW9ucyIg
aXMgZGlzYWJsZWQgZm9yIHRoaXMgY29kZQorLy8gc2luY2UgaXQgY29uc2lkZXJzIHN1Y2ggYWNj
ZXNzaW9ucyBub29wCitpZiAoICFzdXBwb3J0Lm9wdFNlbGVjdGVkICkgeworICAgIGpRdWVyeS5w
cm9wSG9va3Muc2VsZWN0ZWQgPSB7CisgICAgICAgIGdldDogZnVuY3Rpb24oIGVsZW0gKSB7CisK
KyAgICAgICAgICAgIC8qIGVzbGludCBuby11bnVzZWQtZXhwcmVzc2lvbnM6ICJvZmYiICovCisK
KyAgICAgICAgICAgIHZhciBwYXJlbnQgPSBlbGVtLnBhcmVudE5vZGU7CisgICAgICAgICAgICBp
ZiAoIHBhcmVudCAmJiBwYXJlbnQucGFyZW50Tm9kZSApIHsKKyAgICAgICAgICAgICAgICBwYXJl
bnQucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4OworICAgICAgICAgICAgfQorICAgICAgICAgICAg
cmV0dXJuIG51bGw7CisgICAgICAgIH0sCisgICAgICAgIHNldDogZnVuY3Rpb24oIGVsZW0gKSB7
CisKKyAgICAgICAgICAgIC8qIGVzbGludCBuby11bnVzZWQtZXhwcmVzc2lvbnM6ICJvZmYiICov
CisKKyAgICAgICAgICAgIHZhciBwYXJlbnQgPSBlbGVtLnBhcmVudE5vZGU7CisgICAgICAgICAg
ICBpZiAoIHBhcmVudCApIHsKKyAgICAgICAgICAgICAgICBwYXJlbnQuc2VsZWN0ZWRJbmRleDsK
KworICAgICAgICAgICAgICAgIGlmICggcGFyZW50LnBhcmVudE5vZGUgKSB7CisgICAgICAgICAg
ICAgICAgICAgIHBhcmVudC5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXg7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfTsKK30KKworalF1ZXJ5LmVhY2go
IFsKKyAgICAidGFiSW5kZXgiLAorICAgICJyZWFkT25seSIsCisgICAgIm1heExlbmd0aCIsCisg
ICAgImNlbGxTcGFjaW5nIiwKKyAgICAiY2VsbFBhZGRpbmciLAorICAgICJyb3dTcGFuIiwKKyAg
ICAiY29sU3BhbiIsCisgICAgInVzZU1hcCIsCisgICAgImZyYW1lQm9yZGVyIiwKKyAgICAiY29u
dGVudEVkaXRhYmxlIgorXSwgZnVuY3Rpb24oKSB7CisgICAgalF1ZXJ5LnByb3BGaXhbIHRoaXMu
dG9Mb3dlckNhc2UoKSBdID0gdGhpczsKK30gKTsKKworCisKKworICAgIC8vIFN0cmlwIGFuZCBj
b2xsYXBzZSB3aGl0ZXNwYWNlIGFjY29yZGluZyB0byBIVE1MIHNwZWMKKyAgICAvLyBodHRwczov
L2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9pbmZyYXN0cnVjdHVyZS5odG1sI3N0cmlw
LWFuZC1jb2xsYXBzZS13aGl0ZXNwYWNlCisgICAgZnVuY3Rpb24gc3RyaXBBbmRDb2xsYXBzZSgg
dmFsdWUgKSB7CisgICAgICAgIHZhciB0b2tlbnMgPSB2YWx1ZS5tYXRjaCggcm5vdGh0bWx3aGl0
ZSApIHx8IFtdOworICAgICAgICByZXR1cm4gdG9rZW5zLmpvaW4oICIgIiApOworICAgIH0KKwor
CitmdW5jdGlvbiBnZXRDbGFzcyggZWxlbSApIHsKKyAgICByZXR1cm4gZWxlbS5nZXRBdHRyaWJ1
dGUgJiYgZWxlbS5nZXRBdHRyaWJ1dGUoICJjbGFzcyIgKSB8fCAiIjsKK30KKworalF1ZXJ5LmZu
LmV4dGVuZCggeworICAgIGFkZENsYXNzOiBmdW5jdGlvbiggdmFsdWUgKSB7CisgICAgICAgIHZh
ciBjbGFzc2VzLCBlbGVtLCBjdXIsIGN1clZhbHVlLCBjbGF6eiwgaiwgZmluYWxWYWx1ZSwKKyAg
ICAgICAgICAgIGkgPSAwOworCisgICAgICAgIGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIHZhbHVl
ICkgKSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbiggaiApIHsKKyAg
ICAgICAgICAgICAgICBqUXVlcnkoIHRoaXMgKS5hZGRDbGFzcyggdmFsdWUuY2FsbCggdGhpcywg
aiwgZ2V0Q2xhc3MoIHRoaXMgKSApICk7CisgICAgICAgICAgICB9ICk7CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAoIHR5cGVvZiB2YWx1ZSA9PT0gInN0cmluZyIgJiYgdmFsdWUgKSB7CisgICAg
ICAgICAgICBjbGFzc2VzID0gdmFsdWUubWF0Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbXTsKKwor
ICAgICAgICAgICAgd2hpbGUgKCAoIGVsZW0gPSB0aGlzWyBpKysgXSApICkgeworICAgICAgICAg
ICAgICAgIGN1clZhbHVlID0gZ2V0Q2xhc3MoIGVsZW0gKTsKKyAgICAgICAgICAgICAgICBjdXIg
PSBlbGVtLm5vZGVUeXBlID09PSAxICYmICggIiAiICsgc3RyaXBBbmRDb2xsYXBzZSggY3VyVmFs
dWUgKSArICIgIiApOworCisgICAgICAgICAgICAgICAgaWYgKCBjdXIgKSB7CisgICAgICAgICAg
ICAgICAgICAgIGogPSAwOworICAgICAgICAgICAgICAgICAgICB3aGlsZSAoICggY2xhenogPSBj
bGFzc2VzWyBqKysgXSApICkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBjdXIuaW5k
ZXhPZiggIiAiICsgY2xhenogKyAiICIgKSA8IDAgKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY3VyICs9IGNsYXp6ICsgIiAiOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgLy8gT25seSBhc3NpZ24g
aWYgZGlmZmVyZW50IHRvIGF2b2lkIHVubmVlZGVkIHJlbmRlcmluZy4KKyAgICAgICAgICAgICAg
ICAgICAgZmluYWxWYWx1ZSA9IHN0cmlwQW5kQ29sbGFwc2UoIGN1ciApOworICAgICAgICAgICAg
ICAgICAgICBpZiAoIGN1clZhbHVlICE9PSBmaW5hbFZhbHVlICkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgZWxlbS5zZXRBdHRyaWJ1dGUoICJjbGFzcyIsIGZpbmFsVmFsdWUgKTsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorCisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0sCisKKyAgICByZW1vdmVDbGFzczog
ZnVuY3Rpb24oIHZhbHVlICkgeworICAgICAgICB2YXIgY2xhc3NlcywgZWxlbSwgY3VyLCBjdXJW
YWx1ZSwgY2xhenosIGosIGZpbmFsVmFsdWUsCisgICAgICAgICAgICBpID0gMDsKKworICAgICAg
ICBpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCB2YWx1ZSApICkgeworICAgICAgICAgICAgcmV0dXJu
IHRoaXMuZWFjaCggZnVuY3Rpb24oIGogKSB7CisgICAgICAgICAgICAgICAgalF1ZXJ5KCB0aGlz
ICkucmVtb3ZlQ2xhc3MoIHZhbHVlLmNhbGwoIHRoaXMsIGosIGdldENsYXNzKCB0aGlzICkgKSAp
OworICAgICAgICAgICAgfSApOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCAhYXJndW1lbnRz
Lmxlbmd0aCApIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLmF0dHIoICJjbGFzcyIsICIiICk7
CisgICAgICAgIH0KKworICAgICAgICBpZiAoIHR5cGVvZiB2YWx1ZSA9PT0gInN0cmluZyIgJiYg
dmFsdWUgKSB7CisgICAgICAgICAgICBjbGFzc2VzID0gdmFsdWUubWF0Y2goIHJub3RodG1sd2hp
dGUgKSB8fCBbXTsKKworICAgICAgICAgICAgd2hpbGUgKCAoIGVsZW0gPSB0aGlzWyBpKysgXSAp
ICkgeworICAgICAgICAgICAgICAgIGN1clZhbHVlID0gZ2V0Q2xhc3MoIGVsZW0gKTsKKworICAg
ICAgICAgICAgICAgIC8vIFRoaXMgZXhwcmVzc2lvbiBpcyBoZXJlIGZvciBiZXR0ZXIgY29tcHJl
c3NpYmlsaXR5IChzZWUgYWRkQ2xhc3MpCisgICAgICAgICAgICAgICAgY3VyID0gZWxlbS5ub2Rl
VHlwZSA9PT0gMSAmJiAoICIgIiArIHN0cmlwQW5kQ29sbGFwc2UoIGN1clZhbHVlICkgKyAiICIg
KTsKKworICAgICAgICAgICAgICAgIGlmICggY3VyICkgeworICAgICAgICAgICAgICAgICAgICBq
ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCAoIGNsYXp6ID0gY2xhc3Nlc1sgaisr
IF0gKSApIHsKKworICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVtb3ZlICphbGwqIGluc3Rh
bmNlcworICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCBjdXIuaW5kZXhPZiggIiAiICsg
Y2xhenogKyAiICIgKSA+IC0xICkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1ciA9
IGN1ci5yZXBsYWNlKCAiICIgKyBjbGF6eiArICIgIiwgIiAiICk7CisgICAgICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAv
LyBPbmx5IGFzc2lnbiBpZiBkaWZmZXJlbnQgdG8gYXZvaWQgdW5uZWVkZWQgcmVuZGVyaW5nLgor
ICAgICAgICAgICAgICAgICAgICBmaW5hbFZhbHVlID0gc3RyaXBBbmRDb2xsYXBzZSggY3VyICk7
CisgICAgICAgICAgICAgICAgICAgIGlmICggY3VyVmFsdWUgIT09IGZpbmFsVmFsdWUgKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBlbGVtLnNldEF0dHJpYnV0ZSggImNsYXNzIiwgZmluYWxW
YWx1ZSApOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfSwKKworICAg
IHRvZ2dsZUNsYXNzOiBmdW5jdGlvbiggdmFsdWUsIHN0YXRlVmFsICkgeworICAgICAgICB2YXIg
dHlwZSA9IHR5cGVvZiB2YWx1ZTsKKworICAgICAgICBpZiAoIHR5cGVvZiBzdGF0ZVZhbCA9PT0g
ImJvb2xlYW4iICYmIHR5cGUgPT09ICJzdHJpbmciICkgeworICAgICAgICAgICAgcmV0dXJuIHN0
YXRlVmFsID8gdGhpcy5hZGRDbGFzcyggdmFsdWUgKSA6IHRoaXMucmVtb3ZlQ2xhc3MoIHZhbHVl
ICk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCB2YWx1ZSAp
ICkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oIGkgKSB7CisgICAg
ICAgICAgICAgICAgalF1ZXJ5KCB0aGlzICkudG9nZ2xlQ2xhc3MoCisgICAgICAgICAgICAgICAg
ICAgIHZhbHVlLmNhbGwoIHRoaXMsIGksIGdldENsYXNzKCB0aGlzICksIHN0YXRlVmFsICksCisg
ICAgICAgICAgICAgICAgICAgIHN0YXRlVmFsCisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAg
ICAgIH0gKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgdmFyIGNsYXNzTmFtZSwgaSwgc2VsZiwgY2xhc3NOYW1lczsKKwor
ICAgICAgICAgICAgaWYgKCB0eXBlID09PSAic3RyaW5nIiApIHsKKworICAgICAgICAgICAgICAg
IC8vIFRvZ2dsZSBpbmRpdmlkdWFsIGNsYXNzIG5hbWVzCisgICAgICAgICAgICAgICAgaSA9IDA7
CisgICAgICAgICAgICAgICAgc2VsZiA9IGpRdWVyeSggdGhpcyApOworICAgICAgICAgICAgICAg
IGNsYXNzTmFtZXMgPSB2YWx1ZS5tYXRjaCggcm5vdGh0bWx3aGl0ZSApIHx8IFtdOworCisgICAg
ICAgICAgICAgICAgd2hpbGUgKCAoIGNsYXNzTmFtZSA9IGNsYXNzTmFtZXNbIGkrKyBdICkgKSB7
CisKKyAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgZWFjaCBjbGFzc05hbWUgZ2l2ZW4sIHNw
YWNlIHNlcGFyYXRlZCBsaXN0CisgICAgICAgICAgICAgICAgICAgIGlmICggc2VsZi5oYXNDbGFz
cyggY2xhc3NOYW1lICkgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJlbW92ZUNs
YXNzKCBjbGFzc05hbWUgKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHNlbGYuYWRkQ2xhc3MoIGNsYXNzTmFtZSApOworICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUb2dnbGUgd2hv
bGUgY2xhc3MgbmFtZQorICAgICAgICAgICAgfSBlbHNlIGlmICggdmFsdWUgPT09IHVuZGVmaW5l
ZCB8fCB0eXBlID09PSAiYm9vbGVhbiIgKSB7CisgICAgICAgICAgICAgICAgY2xhc3NOYW1lID0g
Z2V0Q2xhc3MoIHRoaXMgKTsKKyAgICAgICAgICAgICAgICBpZiAoIGNsYXNzTmFtZSApIHsKKwor
ICAgICAgICAgICAgICAgICAgICAvLyBTdG9yZSBjbGFzc05hbWUgaWYgc2V0CisgICAgICAgICAg
ICAgICAgICAgIGRhdGFQcml2LnNldCggdGhpcywgIl9fY2xhc3NOYW1lX18iLCBjbGFzc05hbWUg
KTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBJZiB0aGUgZWxlbWVu
dCBoYXMgYSBjbGFzcyBuYW1lIG9yIGlmIHdlJ3JlIHBhc3NlZCBgZmFsc2VgLAorICAgICAgICAg
ICAgICAgIC8vIHRoZW4gcmVtb3ZlIHRoZSB3aG9sZSBjbGFzc25hbWUgKGlmIHRoZXJlIHdhcyBv
bmUsIHRoZSBhYm92ZSBzYXZlZCBpdCkuCisgICAgICAgICAgICAgICAgLy8gT3RoZXJ3aXNlIGJy
aW5nIGJhY2sgd2hhdGV2ZXIgd2FzIHByZXZpb3VzbHkgc2F2ZWQgKGlmIGFueXRoaW5nKSwKKyAg
ICAgICAgICAgICAgICAvLyBmYWxsaW5nIGJhY2sgdG8gdGhlIGVtcHR5IHN0cmluZyBpZiBub3Ro
aW5nIHdhcyBzdG9yZWQuCisgICAgICAgICAgICAgICAgaWYgKCB0aGlzLnNldEF0dHJpYnV0ZSAp
IHsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoICJjbGFzcyIsCisgICAg
ICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWUgfHwgdmFsdWUgPT09IGZhbHNlID8KKyAgICAg
ICAgICAgICAgICAgICAgICAgICIiIDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFQcml2
LmdldCggdGhpcywgIl9fY2xhc3NOYW1lX18iICkgfHwgIiIKKyAgICAgICAgICAgICAgICAgICAg
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0gKTsKKyAgICB9
LAorCisgICAgaGFzQ2xhc3M6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHsKKyAgICAgICAgdmFyIGNs
YXNzTmFtZSwgZWxlbSwKKyAgICAgICAgICAgIGkgPSAwOworCisgICAgICAgIGNsYXNzTmFtZSA9
ICIgIiArIHNlbGVjdG9yICsgIiAiOworICAgICAgICB3aGlsZSAoICggZWxlbSA9IHRoaXNbIGkr
KyBdICkgKSB7CisgICAgICAgICAgICBpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgJiYKKyAgICAg
ICAgICAgICAgICAoICIgIiArIHN0cmlwQW5kQ29sbGFwc2UoIGdldENsYXNzKCBlbGVtICkgKSAr
ICIgIiApLmluZGV4T2YoIGNsYXNzTmFtZSApID4gLTEgKSB7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KK30gKTsKKworCisKKwordmFyIHJyZXR1cm4gPSAvXHIvZzsKKworalF1
ZXJ5LmZuLmV4dGVuZCggeworICAgIHZhbDogZnVuY3Rpb24oIHZhbHVlICkgeworICAgICAgICB2
YXIgaG9va3MsIHJldCwgaXNGdW5jdGlvbiwKKyAgICAgICAgICAgIGVsZW0gPSB0aGlzWyAwIF07
CisKKyAgICAgICAgaWYgKCAhYXJndW1lbnRzLmxlbmd0aCApIHsKKyAgICAgICAgICAgIGlmICgg
ZWxlbSApIHsKKyAgICAgICAgICAgICAgICBob29rcyA9IGpRdWVyeS52YWxIb29rc1sgZWxlbS50
eXBlIF0gfHwKKyAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LnZhbEhvb2tzWyBlbGVtLm5vZGVO
YW1lLnRvTG93ZXJDYXNlKCkgXTsKKworICAgICAgICAgICAgICAgIGlmICggaG9va3MgJiYKKyAg
ICAgICAgICAgICAgICAgICAgImdldCIgaW4gaG9va3MgJiYKKyAgICAgICAgICAgICAgICAgICAg
KCByZXQgPSBob29rcy5nZXQoIGVsZW0sICJ2YWx1ZSIgKSApICE9PSB1bmRlZmluZWQKKyAgICAg
ICAgICAgICAgICApIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICByZXQgPSBlbGVtLnZhbHVlOworCisgICAgICAg
ICAgICAgICAgLy8gSGFuZGxlIG1vc3QgY29tbW9uIHN0cmluZyBjYXNlcworICAgICAgICAgICAg
ICAgIGlmICggdHlwZW9mIHJldCA9PT0gInN0cmluZyIgKSB7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiByZXQucmVwbGFjZSggcnJldHVybiwgIiIgKTsKKyAgICAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICAvLyBIYW5kbGUgY2FzZXMgd2hlcmUgdmFsdWUgaXMgbnVsbC91bmRl
ZiBvciBudW1iZXIKKyAgICAgICAgICAgICAgICByZXR1cm4gcmV0ID09IG51bGwgPyAiIiA6IHJl
dDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAg
ICAgICAgaXNGdW5jdGlvbiA9IGpRdWVyeS5pc0Z1bmN0aW9uKCB2YWx1ZSApOworCisgICAgICAg
IHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCBpICkgeworICAgICAgICAgICAgdmFyIHZhbDsK
KworICAgICAgICAgICAgaWYgKCB0aGlzLm5vZGVUeXBlICE9PSAxICkgeworICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCBpc0Z1bmN0aW9u
ICkgeworICAgICAgICAgICAgICAgIHZhbCA9IHZhbHVlLmNhbGwoIHRoaXMsIGksIGpRdWVyeSgg
dGhpcyApLnZhbCgpICk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHZh
bCA9IHZhbHVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUcmVhdCBudWxsL3Vu
ZGVmaW5lZCBhcyAiIjsgY29udmVydCBudW1iZXJzIHRvIHN0cmluZworICAgICAgICAgICAgaWYg
KCB2YWwgPT0gbnVsbCApIHsKKyAgICAgICAgICAgICAgICB2YWwgPSAiIjsKKworICAgICAgICAg
ICAgfSBlbHNlIGlmICggdHlwZW9mIHZhbCA9PT0gIm51bWJlciIgKSB7CisgICAgICAgICAgICAg
ICAgdmFsICs9ICIiOworCisgICAgICAgICAgICB9IGVsc2UgaWYgKCBqUXVlcnkuaXNBcnJheSgg
dmFsICkgKSB7CisgICAgICAgICAgICAgICAgdmFsID0galF1ZXJ5Lm1hcCggdmFsLCBmdW5jdGlv
biggdmFsdWUgKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZSA9PSBudWxsID8g
IiIgOiB2YWx1ZSArICIiOworICAgICAgICAgICAgICAgIH0gKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgaG9va3MgPSBqUXVlcnkudmFsSG9va3NbIHRoaXMudHlwZSBdIHx8IGpRdWVy
eS52YWxIb29rc1sgdGhpcy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpIF07CisKKyAgICAgICAgICAg
IC8vIElmIHNldCByZXR1cm5zIHVuZGVmaW5lZCwgZmFsbCBiYWNrIHRvIG5vcm1hbCBzZXR0aW5n
CisgICAgICAgICAgICBpZiAoICFob29rcyB8fCAhKCAic2V0IiBpbiBob29rcyApIHx8IGhvb2tz
LnNldCggdGhpcywgdmFsLCAidmFsdWUiICkgPT09IHVuZGVmaW5lZCApIHsKKyAgICAgICAgICAg
ICAgICB0aGlzLnZhbHVlID0gdmFsOworICAgICAgICAgICAgfQorICAgICAgICB9ICk7CisgICAg
fQorfSApOworCitqUXVlcnkuZXh0ZW5kKCB7CisgICAgdmFsSG9va3M6IHsKKyAgICAgICAgb3B0
aW9uOiB7CisgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCBlbGVtICkgeworCisgICAgICAgICAg
ICAgICAgdmFyIHZhbCA9IGpRdWVyeS5maW5kLmF0dHIoIGVsZW0sICJ2YWx1ZSIgKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gdmFsICE9IG51bGwgPworICAgICAgICAgICAgICAgICAgICB2YWwg
OgorCisgICAgICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6IElFIDw9MTAgLSAxMSBvbmx5Cisg
ICAgICAgICAgICAgICAgICAgIC8vIG9wdGlvbi50ZXh0IHRocm93cyBleGNlcHRpb25zICgjMTQ2
ODYsICMxNDg1OCkKKyAgICAgICAgICAgICAgICAgICAgLy8gU3RyaXAgYW5kIGNvbGxhcHNlIHdo
aXRlc3BhY2UKKyAgICAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdn
Lm9yZy8jc3RyaXAtYW5kLWNvbGxhcHNlLXdoaXRlc3BhY2UKKyAgICAgICAgICAgICAgICAgICAg
c3RyaXBBbmRDb2xsYXBzZSggalF1ZXJ5LnRleHQoIGVsZW0gKSApOworICAgICAgICAgICAgfQor
ICAgICAgICB9LAorICAgICAgICBzZWxlY3Q6IHsKKyAgICAgICAgICAgIGdldDogZnVuY3Rpb24o
IGVsZW0gKSB7CisgICAgICAgICAgICAgICAgdmFyIHZhbHVlLCBvcHRpb24sIGksCisgICAgICAg
ICAgICAgICAgICAgIG9wdGlvbnMgPSBlbGVtLm9wdGlvbnMsCisgICAgICAgICAgICAgICAgICAg
IGluZGV4ID0gZWxlbS5zZWxlY3RlZEluZGV4LAorICAgICAgICAgICAgICAgICAgICBvbmUgPSBl
bGVtLnR5cGUgPT09ICJzZWxlY3Qtb25lIiwKKyAgICAgICAgICAgICAgICAgICAgdmFsdWVzID0g
b25lID8gbnVsbCA6IFtdLAorICAgICAgICAgICAgICAgICAgICBtYXggPSBvbmUgPyBpbmRleCAr
IDEgOiBvcHRpb25zLmxlbmd0aDsKKworICAgICAgICAgICAgICAgIGlmICggaW5kZXggPCAwICkg
eworICAgICAgICAgICAgICAgICAgICBpID0gbWF4OworCisgICAgICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgaSA9IG9uZSA/IGluZGV4IDogMDsKKyAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBMb29wIHRocm91Z2ggYWxsIHRoZSBzZWxlY3Rl
ZCBvcHRpb25zCisgICAgICAgICAgICAgICAgZm9yICggOyBpIDwgbWF4OyBpKysgKSB7CisgICAg
ICAgICAgICAgICAgICAgIG9wdGlvbiA9IG9wdGlvbnNbIGkgXTsKKworICAgICAgICAgICAgICAg
ICAgICAvLyBTdXBwb3J0OiBJRSA8PTkgb25seQorICAgICAgICAgICAgICAgICAgICAvLyBJRTgt
OSBkb2Vzbid0IHVwZGF0ZSBzZWxlY3RlZCBhZnRlciBmb3JtIHJlc2V0ICgjMjU1MSkKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKCAoIG9wdGlvbi5zZWxlY3RlZCB8fCBpID09PSBpbmRleCApICYm
CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEb24ndCByZXR1cm4gb3B0aW9ucyB0
aGF0IGFyZSBkaXNhYmxlZCBvciBpbiBhIGRpc2FibGVkIG9wdGdyb3VwCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIW9wdGlvbi5kaXNhYmxlZCAmJgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICggIW9wdGlvbi5wYXJlbnROb2RlLmRpc2FibGVkIHx8CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICFqUXVlcnkubm9kZU5hbWUoIG9wdGlvbi5wYXJlbnROb2RlLCAib3B0
Z3JvdXAiICkgKSApIHsKKworICAgICAgICAgICAgICAgICAgICAgICAgLy8gR2V0IHRoZSBzcGVj
aWZpYyB2YWx1ZSBmb3IgdGhlIG9wdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUg
PSBqUXVlcnkoIG9wdGlvbiApLnZhbCgpOworCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBX
ZSBkb24ndCBuZWVkIGFuIGFycmF5IGZvciBvbmUgc2VsZWN0cworICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCBvbmUgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZh
bHVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBNdWx0aS1TZWxlY3RzIHJldHVybiBhbiBhcnJheQorICAgICAgICAgICAgICAgICAgICAg
ICAgdmFsdWVzLnB1c2goIHZhbHVlICk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWVzOworICAgICAgICAgICAg
fSwKKworICAgICAgICAgICAgc2V0OiBmdW5jdGlvbiggZWxlbSwgdmFsdWUgKSB7CisgICAgICAg
ICAgICAgICAgdmFyIG9wdGlvblNldCwgb3B0aW9uLAorICAgICAgICAgICAgICAgICAgICBvcHRp
b25zID0gZWxlbS5vcHRpb25zLAorICAgICAgICAgICAgICAgICAgICB2YWx1ZXMgPSBqUXVlcnku
bWFrZUFycmF5KCB2YWx1ZSApLAorICAgICAgICAgICAgICAgICAgICBpID0gb3B0aW9ucy5sZW5n
dGg7CisKKyAgICAgICAgICAgICAgICB3aGlsZSAoIGktLSApIHsKKyAgICAgICAgICAgICAgICAg
ICAgb3B0aW9uID0gb3B0aW9uc1sgaSBdOworCisgICAgICAgICAgICAgICAgICAgIC8qIGVzbGlu
dC1kaXNhYmxlIG5vLWNvbmQtYXNzaWduICovCisKKyAgICAgICAgICAgICAgICAgICAgaWYgKCBv
cHRpb24uc2VsZWN0ZWQgPQorICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmluQXJyYXko
IGpRdWVyeS52YWxIb29rcy5vcHRpb24uZ2V0KCBvcHRpb24gKSwgdmFsdWVzICkgPiAtMQorICAg
ICAgICAgICAgICAgICAgICApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvblNldCA9
IHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAvKiBl
c2xpbnQtZW5hYmxlIG5vLWNvbmQtYXNzaWduICovCisgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgLy8gRm9yY2UgYnJvd3NlcnMgdG8gYmVoYXZlIGNvbnNpc3RlbnRseSB3aGVu
IG5vbi1tYXRjaGluZyB2YWx1ZSBpcyBzZXQKKyAgICAgICAgICAgICAgICBpZiAoICFvcHRpb25T
ZXQgKSB7CisgICAgICAgICAgICAgICAgICAgIGVsZW0uc2VsZWN0ZWRJbmRleCA9IC0xOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWVzOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfQorfSApOworCisvLyBSYWRpb3MgYW5kIGNoZWNrYm94ZXMg
Z2V0dGVyL3NldHRlcgoralF1ZXJ5LmVhY2goIFsgInJhZGlvIiwgImNoZWNrYm94IiBdLCBmdW5j
dGlvbigpIHsKKyAgICBqUXVlcnkudmFsSG9va3NbIHRoaXMgXSA9IHsKKyAgICAgICAgc2V0OiBm
dW5jdGlvbiggZWxlbSwgdmFsdWUgKSB7CisgICAgICAgICAgICBpZiAoIGpRdWVyeS5pc0FycmF5
KCB2YWx1ZSApICkgeworICAgICAgICAgICAgICAgIHJldHVybiAoIGVsZW0uY2hlY2tlZCA9IGpR
dWVyeS5pbkFycmF5KCBqUXVlcnkoIGVsZW0gKS52YWwoKSwgdmFsdWUgKSA+IC0xICk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9OworICAgIGlmICggIXN1cHBvcnQuY2hlY2tPbiAp
IHsKKyAgICAgICAgalF1ZXJ5LnZhbEhvb2tzWyB0aGlzIF0uZ2V0ID0gZnVuY3Rpb24oIGVsZW0g
KSB7CisgICAgICAgICAgICByZXR1cm4gZWxlbS5nZXRBdHRyaWJ1dGUoICJ2YWx1ZSIgKSA9PT0g
bnVsbCA/ICJvbiIgOiBlbGVtLnZhbHVlOworICAgICAgICB9OworICAgIH0KK30gKTsKKworCisK
KworLy8gUmV0dXJuIGpRdWVyeSBmb3IgYXR0cmlidXRlcy1vbmx5IGluY2x1c2lvbgorCisKK3Zh
ciByZm9jdXNNb3JwaCA9IC9eKD86Zm9jdXNpbmZvY3VzfGZvY3Vzb3V0Ymx1cikkLzsKKworalF1
ZXJ5LmV4dGVuZCggalF1ZXJ5LmV2ZW50LCB7CisKKyAgICB0cmlnZ2VyOiBmdW5jdGlvbiggZXZl
bnQsIGRhdGEsIGVsZW0sIG9ubHlIYW5kbGVycyApIHsKKworICAgICAgICB2YXIgaSwgY3VyLCB0
bXAsIGJ1YmJsZVR5cGUsIG9udHlwZSwgaGFuZGxlLCBzcGVjaWFsLAorICAgICAgICAgICAgZXZl
bnRQYXRoID0gWyBlbGVtIHx8IGRvY3VtZW50IF0sCisgICAgICAgICAgICB0eXBlID0gaGFzT3du
LmNhbGwoIGV2ZW50LCAidHlwZSIgKSA/IGV2ZW50LnR5cGUgOiBldmVudCwKKyAgICAgICAgICAg
IG5hbWVzcGFjZXMgPSBoYXNPd24uY2FsbCggZXZlbnQsICJuYW1lc3BhY2UiICkgPyBldmVudC5u
YW1lc3BhY2Uuc3BsaXQoICIuIiApIDogW107CisKKyAgICAgICAgY3VyID0gdG1wID0gZWxlbSA9
IGVsZW0gfHwgZG9jdW1lbnQ7CisKKyAgICAgICAgLy8gRG9uJ3QgZG8gZXZlbnRzIG9uIHRleHQg
YW5kIGNvbW1lbnQgbm9kZXMKKyAgICAgICAgaWYgKCBlbGVtLm5vZGVUeXBlID09PSAzIHx8IGVs
ZW0ubm9kZVR5cGUgPT09IDggKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICAvLyBmb2N1cy9ibHVyIG1vcnBocyB0byBmb2N1c2luL291dDsgZW5zdXJlIHdlJ3Jl
IG5vdCBmaXJpbmcgdGhlbSByaWdodCBub3cKKyAgICAgICAgaWYgKCByZm9jdXNNb3JwaC50ZXN0
KCB0eXBlICsgalF1ZXJ5LmV2ZW50LnRyaWdnZXJlZCApICkgeworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKCB0eXBlLmluZGV4T2YoICIuIiApID4gLTEgKSB7
CisKKyAgICAgICAgICAgIC8vIE5hbWVzcGFjZWQgdHJpZ2dlcjsgY3JlYXRlIGEgcmVnZXhwIHRv
IG1hdGNoIGV2ZW50IHR5cGUgaW4gaGFuZGxlKCkKKyAgICAgICAgICAgIG5hbWVzcGFjZXMgPSB0
eXBlLnNwbGl0KCAiLiIgKTsKKyAgICAgICAgICAgIHR5cGUgPSBuYW1lc3BhY2VzLnNoaWZ0KCk7
CisgICAgICAgICAgICBuYW1lc3BhY2VzLnNvcnQoKTsKKyAgICAgICAgfQorICAgICAgICBvbnR5
cGUgPSB0eXBlLmluZGV4T2YoICI6IiApIDwgMCAmJiAib24iICsgdHlwZTsKKworICAgICAgICAv
LyBDYWxsZXIgY2FuIHBhc3MgaW4gYSBqUXVlcnkuRXZlbnQgb2JqZWN0LCBPYmplY3QsIG9yIGp1
c3QgYW4gZXZlbnQgdHlwZSBzdHJpbmcKKyAgICAgICAgZXZlbnQgPSBldmVudFsgalF1ZXJ5LmV4
cGFuZG8gXSA/CisgICAgICAgICAgICBldmVudCA6CisgICAgICAgICAgICBuZXcgalF1ZXJ5LkV2
ZW50KCB0eXBlLCB0eXBlb2YgZXZlbnQgPT09ICJvYmplY3QiICYmIGV2ZW50ICk7CisKKyAgICAg
ICAgLy8gVHJpZ2dlciBiaXRtYXNrOiAmIDEgZm9yIG5hdGl2ZSBoYW5kbGVyczsgJiAyIGZvciBq
UXVlcnkgKGFsd2F5cyB0cnVlKQorICAgICAgICBldmVudC5pc1RyaWdnZXIgPSBvbmx5SGFuZGxl
cnMgPyAyIDogMzsKKyAgICAgICAgZXZlbnQubmFtZXNwYWNlID0gbmFtZXNwYWNlcy5qb2luKCAi
LiIgKTsKKyAgICAgICAgZXZlbnQucm5hbWVzcGFjZSA9IGV2ZW50Lm5hbWVzcGFjZSA/CisgICAg
ICAgICAgICBuZXcgUmVnRXhwKCAiKF58XFwuKSIgKyBuYW1lc3BhY2VzLmpvaW4oICJcXC4oPzou
KlxcLnwpIiApICsgIihcXC58JCkiICkgOgorICAgICAgICAgICAgbnVsbDsKKworICAgICAgICAv
LyBDbGVhbiB1cCB0aGUgZXZlbnQgaW4gY2FzZSBpdCBpcyBiZWluZyByZXVzZWQKKyAgICAgICAg
ZXZlbnQucmVzdWx0ID0gdW5kZWZpbmVkOworICAgICAgICBpZiAoICFldmVudC50YXJnZXQgKSB7
CisgICAgICAgICAgICBldmVudC50YXJnZXQgPSBlbGVtOworICAgICAgICB9CisKKyAgICAgICAg
Ly8gQ2xvbmUgYW55IGluY29taW5nIGRhdGEgYW5kIHByZXBlbmQgdGhlIGV2ZW50LCBjcmVhdGlu
ZyB0aGUgaGFuZGxlciBhcmcgbGlzdAorICAgICAgICBkYXRhID0gZGF0YSA9PSBudWxsID8KKyAg
ICAgICAgICAgIFsgZXZlbnQgXSA6CisgICAgICAgICAgICBqUXVlcnkubWFrZUFycmF5KCBkYXRh
LCBbIGV2ZW50IF0gKTsKKworICAgICAgICAvLyBBbGxvdyBzcGVjaWFsIGV2ZW50cyB0byBkcmF3
IG91dHNpZGUgdGhlIGxpbmVzCisgICAgICAgIHNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lh
bFsgdHlwZSBdIHx8IHt9OworICAgICAgICBpZiAoICFvbmx5SGFuZGxlcnMgJiYgc3BlY2lhbC50
cmlnZ2VyICYmIHNwZWNpYWwudHJpZ2dlci5hcHBseSggZWxlbSwgZGF0YSApID09PSBmYWxzZSAp
IHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIERldGVybWlu
ZSBldmVudCBwcm9wYWdhdGlvbiBwYXRoIGluIGFkdmFuY2UsIHBlciBXM0MgZXZlbnRzIHNwZWMg
KCM5OTUxKQorICAgICAgICAvLyBCdWJibGUgdXAgdG8gZG9jdW1lbnQsIHRoZW4gdG8gd2luZG93
OyB3YXRjaCBmb3IgYSBnbG9iYWwgb3duZXJEb2N1bWVudCB2YXIgKCM5NzI0KQorICAgICAgICBp
ZiAoICFvbmx5SGFuZGxlcnMgJiYgIXNwZWNpYWwubm9CdWJibGUgJiYgIWpRdWVyeS5pc1dpbmRv
dyggZWxlbSApICkgeworCisgICAgICAgICAgICBidWJibGVUeXBlID0gc3BlY2lhbC5kZWxlZ2F0
ZVR5cGUgfHwgdHlwZTsKKyAgICAgICAgICAgIGlmICggIXJmb2N1c01vcnBoLnRlc3QoIGJ1YmJs
ZVR5cGUgKyB0eXBlICkgKSB7CisgICAgICAgICAgICAgICAgY3VyID0gY3VyLnBhcmVudE5vZGU7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmb3IgKCA7IGN1cjsgY3VyID0gY3VyLnBhcmVu
dE5vZGUgKSB7CisgICAgICAgICAgICAgICAgZXZlbnRQYXRoLnB1c2goIGN1ciApOworICAgICAg
ICAgICAgICAgIHRtcCA9IGN1cjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gT25s
eSBhZGQgd2luZG93IGlmIHdlIGdvdCB0byBkb2N1bWVudCAoZS5nLiwgbm90IHBsYWluIG9iaiBv
ciBkZXRhY2hlZCBET00pCisgICAgICAgICAgICBpZiAoIHRtcCA9PT0gKCBlbGVtLm93bmVyRG9j
dW1lbnQgfHwgZG9jdW1lbnQgKSApIHsKKyAgICAgICAgICAgICAgICBldmVudFBhdGgucHVzaCgg
dG1wLmRlZmF1bHRWaWV3IHx8IHRtcC5wYXJlbnRXaW5kb3cgfHwgd2luZG93ICk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBGaXJlIGhhbmRsZXJzIG9uIHRoZSBldmVu
dCBwYXRoCisgICAgICAgIGkgPSAwOworICAgICAgICB3aGlsZSAoICggY3VyID0gZXZlbnRQYXRo
WyBpKysgXSApICYmICFldmVudC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpICkgeworCisgICAgICAg
ICAgICBldmVudC50eXBlID0gaSA+IDEgPworICAgICAgICAgICAgICAgIGJ1YmJsZVR5cGUgOgor
ICAgICAgICAgICAgICAgIHNwZWNpYWwuYmluZFR5cGUgfHwgdHlwZTsKKworICAgICAgICAgICAg
Ly8galF1ZXJ5IGhhbmRsZXIKKyAgICAgICAgICAgIGhhbmRsZSA9ICggZGF0YVByaXYuZ2V0KCBj
dXIsICJldmVudHMiICkgfHwge30gKVsgZXZlbnQudHlwZSBdICYmCisgICAgICAgICAgICAgICAg
ZGF0YVByaXYuZ2V0KCBjdXIsICJoYW5kbGUiICk7CisgICAgICAgICAgICBpZiAoIGhhbmRsZSAp
IHsKKyAgICAgICAgICAgICAgICBoYW5kbGUuYXBwbHkoIGN1ciwgZGF0YSApOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAvLyBOYXRpdmUgaGFuZGxlcgorICAgICAgICAgICAgaGFuZGxl
ID0gb250eXBlICYmIGN1clsgb250eXBlIF07CisgICAgICAgICAgICBpZiAoIGhhbmRsZSAmJiBo
YW5kbGUuYXBwbHkgJiYgYWNjZXB0RGF0YSggY3VyICkgKSB7CisgICAgICAgICAgICAgICAgZXZl
bnQucmVzdWx0ID0gaGFuZGxlLmFwcGx5KCBjdXIsIGRhdGEgKTsKKyAgICAgICAgICAgICAgICBp
ZiAoIGV2ZW50LnJlc3VsdCA9PT0gZmFsc2UgKSB7CisgICAgICAgICAgICAgICAgICAgIGV2ZW50
LnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIGV2ZW50LnR5cGUgPSB0eXBlOworCisgICAgICAgIC8vIElmIG5vYm9k
eSBwcmV2ZW50ZWQgdGhlIGRlZmF1bHQgYWN0aW9uLCBkbyBpdCBub3cKKyAgICAgICAgaWYgKCAh
b25seUhhbmRsZXJzICYmICFldmVudC5pc0RlZmF1bHRQcmV2ZW50ZWQoKSApIHsKKworICAgICAg
ICAgICAgaWYgKCAoICFzcGVjaWFsLl9kZWZhdWx0IHx8CisgICAgICAgICAgICAgICAgc3BlY2lh
bC5fZGVmYXVsdC5hcHBseSggZXZlbnRQYXRoLnBvcCgpLCBkYXRhICkgPT09IGZhbHNlICkgJiYK
KyAgICAgICAgICAgICAgICBhY2NlcHREYXRhKCBlbGVtICkgKSB7CisKKyAgICAgICAgICAgICAg
ICAvLyBDYWxsIGEgbmF0aXZlIERPTSBtZXRob2Qgb24gdGhlIHRhcmdldCB3aXRoIHRoZSBzYW1l
IG5hbWUgYXMgdGhlIGV2ZW50LgorICAgICAgICAgICAgICAgIC8vIERvbid0IGRvIGRlZmF1bHQg
YWN0aW9ucyBvbiB3aW5kb3csIHRoYXQncyB3aGVyZSBnbG9iYWwgdmFyaWFibGVzIGJlICgjNjE3
MCkKKyAgICAgICAgICAgICAgICBpZiAoIG9udHlwZSAmJiBqUXVlcnkuaXNGdW5jdGlvbiggZWxl
bVsgdHlwZSBdICkgJiYgIWpRdWVyeS5pc1dpbmRvdyggZWxlbSApICkgeworCisgICAgICAgICAg
ICAgICAgICAgIC8vIERvbid0IHJlLXRyaWdnZXIgYW4gb25GT08gZXZlbnQgd2hlbiB3ZSBjYWxs
IGl0cyBGT08oKSBtZXRob2QKKyAgICAgICAgICAgICAgICAgICAgdG1wID0gZWxlbVsgb250eXBl
IF07CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKCB0bXAgKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBlbGVtWyBvbnR5cGUgXSA9IG51bGw7CisgICAgICAgICAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgICAgICAgICAvLyBQcmV2ZW50IHJlLXRyaWdnZXJpbmcgb2YgdGhlIHNhbWUg
ZXZlbnQsIHNpbmNlIHdlIGFscmVhZHkgYnViYmxlZCBpdCBhYm92ZQorICAgICAgICAgICAgICAg
ICAgICBqUXVlcnkuZXZlbnQudHJpZ2dlcmVkID0gdHlwZTsKKyAgICAgICAgICAgICAgICAgICAg
ZWxlbVsgdHlwZSBdKCk7CisgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5ldmVudC50cmlnZ2Vy
ZWQgPSB1bmRlZmluZWQ7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKCB0bXAgKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBlbGVtWyBvbnR5cGUgXSA9IHRtcDsKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisg
ICAgICAgIHJldHVybiBldmVudC5yZXN1bHQ7CisgICAgfSwKKworICAgIC8vIFBpZ2d5YmFjayBv
biBhIGRvbm9yIGV2ZW50IHRvIHNpbXVsYXRlIGEgZGlmZmVyZW50IG9uZQorICAgIC8vIFVzZWQg
b25seSBmb3IgYGZvY3VzKGluIHwgb3V0KWAgZXZlbnRzCisgICAgc2ltdWxhdGU6IGZ1bmN0aW9u
KCB0eXBlLCBlbGVtLCBldmVudCApIHsKKyAgICAgICAgdmFyIGUgPSBqUXVlcnkuZXh0ZW5kKAor
ICAgICAgICAgICAgbmV3IGpRdWVyeS5FdmVudCgpLAorICAgICAgICAgICAgZXZlbnQsCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgdHlwZTogdHlwZSwKKyAgICAgICAgICAgICAgICBp
c1NpbXVsYXRlZDogdHJ1ZQorICAgICAgICAgICAgfQorICAgICAgICApOworCisgICAgICAgIGpR
dWVyeS5ldmVudC50cmlnZ2VyKCBlLCBudWxsLCBlbGVtICk7CisgICAgfQorCit9ICk7CisKK2pR
dWVyeS5mbi5leHRlbmQoIHsKKworICAgIHRyaWdnZXI6IGZ1bmN0aW9uKCB0eXBlLCBkYXRhICkg
eworICAgICAgICByZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGpR
dWVyeS5ldmVudC50cmlnZ2VyKCB0eXBlLCBkYXRhLCB0aGlzICk7CisgICAgICAgIH0gKTsKKyAg
ICB9LAorICAgIHRyaWdnZXJIYW5kbGVyOiBmdW5jdGlvbiggdHlwZSwgZGF0YSApIHsKKyAgICAg
ICAgdmFyIGVsZW0gPSB0aGlzWyAwIF07CisgICAgICAgIGlmICggZWxlbSApIHsKKyAgICAgICAg
ICAgIHJldHVybiBqUXVlcnkuZXZlbnQudHJpZ2dlciggdHlwZSwgZGF0YSwgZWxlbSwgdHJ1ZSAp
OworICAgICAgICB9CisgICAgfQorfSApOworCisKK2pRdWVyeS5lYWNoKCAoICJibHVyIGZvY3Vz
IGZvY3VzaW4gZm9jdXNvdXQgcmVzaXplIHNjcm9sbCBjbGljayBkYmxjbGljayAiICsKKyAgICAi
bW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVy
IG1vdXNlbGVhdmUgIiArCisgICAgImNoYW5nZSBzZWxlY3Qgc3VibWl0IGtleWRvd24ga2V5cHJl
c3Mga2V5dXAgY29udGV4dG1lbnUiICkuc3BsaXQoICIgIiApLAorICAgIGZ1bmN0aW9uKCBpLCBu
YW1lICkgeworCisgICAgLy8gSGFuZGxlIGV2ZW50IGJpbmRpbmcKKyAgICBqUXVlcnkuZm5bIG5h
bWUgXSA9IGZ1bmN0aW9uKCBkYXRhLCBmbiApIHsKKyAgICAgICAgcmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGggPiAwID8KKyAgICAgICAgICAgIHRoaXMub24oIG5hbWUsIG51bGwsIGRhdGEsIGZuICkg
OgorICAgICAgICAgICAgdGhpcy50cmlnZ2VyKCBuYW1lICk7CisgICAgfTsKK30gKTsKKworalF1
ZXJ5LmZuLmV4dGVuZCggeworICAgIGhvdmVyOiBmdW5jdGlvbiggZm5PdmVyLCBmbk91dCApIHsK
KyAgICAgICAgcmV0dXJuIHRoaXMubW91c2VlbnRlciggZm5PdmVyICkubW91c2VsZWF2ZSggZm5P
dXQgfHwgZm5PdmVyICk7CisgICAgfQorfSApOworCisKKworCitzdXBwb3J0LmZvY3VzaW4gPSAi
b25mb2N1c2luIiBpbiB3aW5kb3c7CisKKworLy8gU3VwcG9ydDogRmlyZWZveCA8PTQ0CisvLyBG
aXJlZm94IGRvZXNuJ3QgaGF2ZSBmb2N1cyhpbiB8IG91dCkgZXZlbnRzCisvLyBSZWxhdGVkIHRp
Y2tldCAtIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTY4Nzc4
NworLy8KKy8vIFN1cHBvcnQ6IENocm9tZSA8PTQ4IC0gNDksIFNhZmFyaSA8PTkuMCAtIDkuMQor
Ly8gZm9jdXMoaW4gfCBvdXQpIGV2ZW50cyBmaXJlIGFmdGVyIGZvY3VzICYgYmx1ciBldmVudHMs
CisvLyB3aGljaCBpcyBzcGVjIHZpb2xhdGlvbiAtIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1M
ZXZlbC0zLUV2ZW50cy8jZXZlbnRzLWZvY3VzZXZlbnQtZXZlbnQtb3JkZXIKKy8vIFJlbGF0ZWQg
dGlja2V0IC0gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRh
aWw/aWQ9NDQ5ODU3CitpZiAoICFzdXBwb3J0LmZvY3VzaW4gKSB7CisgICAgalF1ZXJ5LmVhY2go
IHsgZm9jdXM6ICJmb2N1c2luIiwgYmx1cjogImZvY3Vzb3V0IiB9LCBmdW5jdGlvbiggb3JpZywg
Zml4ICkgeworCisgICAgICAgIC8vIEF0dGFjaCBhIHNpbmdsZSBjYXB0dXJpbmcgaGFuZGxlciBv
biB0aGUgZG9jdW1lbnQgd2hpbGUgc29tZW9uZSB3YW50cyBmb2N1c2luL2ZvY3Vzb3V0CisgICAg
ICAgIHZhciBoYW5kbGVyID0gZnVuY3Rpb24oIGV2ZW50ICkgeworICAgICAgICAgICAgalF1ZXJ5
LmV2ZW50LnNpbXVsYXRlKCBmaXgsIGV2ZW50LnRhcmdldCwgalF1ZXJ5LmV2ZW50LmZpeCggZXZl
bnQgKSApOworICAgICAgICB9OworCisgICAgICAgIGpRdWVyeS5ldmVudC5zcGVjaWFsWyBmaXgg
XSA9IHsKKyAgICAgICAgICAgIHNldHVwOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICB2
YXIgZG9jID0gdGhpcy5vd25lckRvY3VtZW50IHx8IHRoaXMsCisgICAgICAgICAgICAgICAgICAg
IGF0dGFjaGVzID0gZGF0YVByaXYuYWNjZXNzKCBkb2MsIGZpeCApOworCisgICAgICAgICAgICAg
ICAgaWYgKCAhYXR0YWNoZXMgKSB7CisgICAgICAgICAgICAgICAgICAgIGRvYy5hZGRFdmVudExp
c3RlbmVyKCBvcmlnLCBoYW5kbGVyLCB0cnVlICk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGRhdGFQcml2LmFjY2VzcyggZG9jLCBmaXgsICggYXR0YWNoZXMgfHwgMCApICsg
MSApOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHRlYXJkb3duOiBmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgICAgICB2YXIgZG9jID0gdGhpcy5vd25lckRvY3VtZW50IHx8IHRoaXMsCisg
ICAgICAgICAgICAgICAgICAgIGF0dGFjaGVzID0gZGF0YVByaXYuYWNjZXNzKCBkb2MsIGZpeCAp
IC0gMTsKKworICAgICAgICAgICAgICAgIGlmICggIWF0dGFjaGVzICkgeworICAgICAgICAgICAg
ICAgICAgICBkb2MucmVtb3ZlRXZlbnRMaXN0ZW5lciggb3JpZywgaGFuZGxlciwgdHJ1ZSApOwor
ICAgICAgICAgICAgICAgICAgICBkYXRhUHJpdi5yZW1vdmUoIGRvYywgZml4ICk7CisKKyAgICAg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBkYXRhUHJpdi5hY2Nlc3Mo
IGRvYywgZml4LCBhdHRhY2hlcyApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KyAgICAgICAgfTsKKyAgICB9ICk7Cit9CisKKwordmFyCisgICAgcmJyYWNrZXQgPSAvXFtcXSQv
LAorICAgIHJDUkxGID0gL1xyP1xuL2csCisgICAgcnN1Ym1pdHRlclR5cGVzID0gL14oPzpzdWJt
aXR8YnV0dG9ufGltYWdlfHJlc2V0fGZpbGUpJC9pLAorICAgIHJzdWJtaXR0YWJsZSA9IC9eKD86
aW5wdXR8c2VsZWN0fHRleHRhcmVhfGtleWdlbikvaTsKKworZnVuY3Rpb24gYnVpbGRQYXJhbXMo
IHByZWZpeCwgb2JqLCB0cmFkaXRpb25hbCwgYWRkICkgeworICAgIHZhciBuYW1lOworCisgICAg
aWYgKCBqUXVlcnkuaXNBcnJheSggb2JqICkgKSB7CisKKyAgICAgICAgLy8gU2VyaWFsaXplIGFy
cmF5IGl0ZW0uCisgICAgICAgIGpRdWVyeS5lYWNoKCBvYmosIGZ1bmN0aW9uKCBpLCB2ICkgewor
ICAgICAgICAgICAgaWYgKCB0cmFkaXRpb25hbCB8fCByYnJhY2tldC50ZXN0KCBwcmVmaXggKSAp
IHsKKworICAgICAgICAgICAgICAgIC8vIFRyZWF0IGVhY2ggYXJyYXkgaXRlbSBhcyBhIHNjYWxh
ci4KKyAgICAgICAgICAgICAgICBhZGQoIHByZWZpeCwgdiApOworCisgICAgICAgICAgICB9IGVs
c2UgeworCisgICAgICAgICAgICAgICAgLy8gSXRlbSBpcyBub24tc2NhbGFyIChhcnJheSBvciBv
YmplY3QpLCBlbmNvZGUgaXRzIG51bWVyaWMgaW5kZXguCisgICAgICAgICAgICAgICAgYnVpbGRQ
YXJhbXMoCisgICAgICAgICAgICAgICAgICAgIHByZWZpeCArICJbIiArICggdHlwZW9mIHYgPT09
ICJvYmplY3QiICYmIHYgIT0gbnVsbCA/IGkgOiAiIiApICsgIl0iLAorICAgICAgICAgICAgICAg
ICAgICB2LAorICAgICAgICAgICAgICAgICAgICB0cmFkaXRpb25hbCwKKyAgICAgICAgICAgICAg
ICAgICAgYWRkCisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSAp
OworCisgICAgfSBlbHNlIGlmICggIXRyYWRpdGlvbmFsICYmIGpRdWVyeS50eXBlKCBvYmogKSA9
PT0gIm9iamVjdCIgKSB7CisKKyAgICAgICAgLy8gU2VyaWFsaXplIG9iamVjdCBpdGVtLgorICAg
ICAgICBmb3IgKCBuYW1lIGluIG9iaiApIHsKKyAgICAgICAgICAgIGJ1aWxkUGFyYW1zKCBwcmVm
aXggKyAiWyIgKyBuYW1lICsgIl0iLCBvYmpbIG5hbWUgXSwgdHJhZGl0aW9uYWwsIGFkZCApOwor
ICAgICAgICB9CisKKyAgICB9IGVsc2UgeworCisgICAgICAgIC8vIFNlcmlhbGl6ZSBzY2FsYXIg
aXRlbS4KKyAgICAgICAgYWRkKCBwcmVmaXgsIG9iaiApOworICAgIH0KK30KKworLy8gU2VyaWFs
aXplIGFuIGFycmF5IG9mIGZvcm0gZWxlbWVudHMgb3IgYSBzZXQgb2YKKy8vIGtleS92YWx1ZXMg
aW50byBhIHF1ZXJ5IHN0cmluZworalF1ZXJ5LnBhcmFtID0gZnVuY3Rpb24oIGEsIHRyYWRpdGlv
bmFsICkgeworICAgIHZhciBwcmVmaXgsCisgICAgICAgIHMgPSBbXSwKKyAgICAgICAgYWRkID0g
ZnVuY3Rpb24oIGtleSwgdmFsdWVPckZ1bmN0aW9uICkgeworCisgICAgICAgICAgICAvLyBJZiB2
YWx1ZSBpcyBhIGZ1bmN0aW9uLCBpbnZva2UgaXQgYW5kIHVzZSBpdHMgcmV0dXJuIHZhbHVlCisg
ICAgICAgICAgICB2YXIgdmFsdWUgPSBqUXVlcnkuaXNGdW5jdGlvbiggdmFsdWVPckZ1bmN0aW9u
ICkgPworICAgICAgICAgICAgICAgIHZhbHVlT3JGdW5jdGlvbigpIDoKKyAgICAgICAgICAgICAg
ICB2YWx1ZU9yRnVuY3Rpb247CisKKyAgICAgICAgICAgIHNbIHMubGVuZ3RoIF0gPSBlbmNvZGVV
UklDb21wb25lbnQoIGtleSApICsgIj0iICsKKyAgICAgICAgICAgICAgICBlbmNvZGVVUklDb21w
b25lbnQoIHZhbHVlID09IG51bGwgPyAiIiA6IHZhbHVlICk7CisgICAgICAgIH07CisKKyAgICAv
LyBJZiBhbiBhcnJheSB3YXMgcGFzc2VkIGluLCBhc3N1bWUgdGhhdCBpdCBpcyBhbiBhcnJheSBv
ZiBmb3JtIGVsZW1lbnRzLgorICAgIGlmICggalF1ZXJ5LmlzQXJyYXkoIGEgKSB8fCAoIGEuanF1
ZXJ5ICYmICFqUXVlcnkuaXNQbGFpbk9iamVjdCggYSApICkgKSB7CisKKyAgICAgICAgLy8gU2Vy
aWFsaXplIHRoZSBmb3JtIGVsZW1lbnRzCisgICAgICAgIGpRdWVyeS5lYWNoKCBhLCBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgIGFkZCggdGhpcy5uYW1lLCB0aGlzLnZhbHVlICk7CisgICAgICAg
IH0gKTsKKworICAgIH0gZWxzZSB7CisKKyAgICAgICAgLy8gSWYgdHJhZGl0aW9uYWwsIGVuY29k
ZSB0aGUgIm9sZCIgd2F5ICh0aGUgd2F5IDEuMy4yIG9yIG9sZGVyCisgICAgICAgIC8vIGRpZCBp
dCksIG90aGVyd2lzZSBlbmNvZGUgcGFyYW1zIHJlY3Vyc2l2ZWx5LgorICAgICAgICBmb3IgKCBw
cmVmaXggaW4gYSApIHsKKyAgICAgICAgICAgIGJ1aWxkUGFyYW1zKCBwcmVmaXgsIGFbIHByZWZp
eCBdLCB0cmFkaXRpb25hbCwgYWRkICk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBSZXR1
cm4gdGhlIHJlc3VsdGluZyBzZXJpYWxpemF0aW9uCisgICAgcmV0dXJuIHMuam9pbiggIiYiICk7
Cit9OworCitqUXVlcnkuZm4uZXh0ZW5kKCB7CisgICAgc2VyaWFsaXplOiBmdW5jdGlvbigpIHsK
KyAgICAgICAgcmV0dXJuIGpRdWVyeS5wYXJhbSggdGhpcy5zZXJpYWxpemVBcnJheSgpICk7Cisg
ICAgfSwKKyAgICBzZXJpYWxpemVBcnJheTogZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiB0
aGlzLm1hcCggZnVuY3Rpb24oKSB7CisKKyAgICAgICAgICAgIC8vIENhbiBhZGQgcHJvcEhvb2sg
Zm9yICJlbGVtZW50cyIgdG8gZmlsdGVyIG9yIGFkZCBmb3JtIGVsZW1lbnRzCisgICAgICAgICAg
ICB2YXIgZWxlbWVudHMgPSBqUXVlcnkucHJvcCggdGhpcywgImVsZW1lbnRzIiApOworICAgICAg
ICAgICAgcmV0dXJuIGVsZW1lbnRzID8galF1ZXJ5Lm1ha2VBcnJheSggZWxlbWVudHMgKSA6IHRo
aXM7CisgICAgICAgIH0gKQorICAgICAgICAuZmlsdGVyKCBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgIHZhciB0eXBlID0gdGhpcy50eXBlOworCisgICAgICAgICAgICAvLyBVc2UgLmlzKCAiOmRp
c2FibGVkIiApIHNvIHRoYXQgZmllbGRzZXRbZGlzYWJsZWRdIHdvcmtzCisgICAgICAgICAgICBy
ZXR1cm4gdGhpcy5uYW1lICYmICFqUXVlcnkoIHRoaXMgKS5pcyggIjpkaXNhYmxlZCIgKSAmJgor
ICAgICAgICAgICAgICAgIHJzdWJtaXR0YWJsZS50ZXN0KCB0aGlzLm5vZGVOYW1lICkgJiYgIXJz
dWJtaXR0ZXJUeXBlcy50ZXN0KCB0eXBlICkgJiYKKyAgICAgICAgICAgICAgICAoIHRoaXMuY2hl
Y2tlZCB8fCAhcmNoZWNrYWJsZVR5cGUudGVzdCggdHlwZSApICk7CisgICAgICAgIH0gKQorICAg
ICAgICAubWFwKCBmdW5jdGlvbiggaSwgZWxlbSApIHsKKyAgICAgICAgICAgIHZhciB2YWwgPSBq
UXVlcnkoIHRoaXMgKS52YWwoKTsKKworICAgICAgICAgICAgaWYgKCB2YWwgPT0gbnVsbCApIHsK
KyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgaWYgKCBqUXVlcnkuaXNBcnJheSggdmFsICkgKSB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IGpRdWVyeS5tYXAoIHZhbCwgZnVuY3Rpb24oIHZhbCApIHsKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHsgbmFtZTogZWxlbS5uYW1lLCB2YWx1ZTogdmFsLnJlcGxhY2UoIHJDUkxGLCAiXHJc
biIgKSB9OworICAgICAgICAgICAgICAgIH0gKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgcmV0dXJuIHsgbmFtZTogZWxlbS5uYW1lLCB2YWx1ZTogdmFsLnJlcGxhY2UoIHJDUkxGLCAi
XHJcbiIgKSB9OworICAgICAgICB9ICkuZ2V0KCk7CisgICAgfQorfSApOworCisKK2pRdWVyeS5m
bi5leHRlbmQoIHsKKyAgICB3cmFwQWxsOiBmdW5jdGlvbiggaHRtbCApIHsKKyAgICAgICAgdmFy
IHdyYXA7CisKKyAgICAgICAgaWYgKCB0aGlzWyAwIF0gKSB7CisgICAgICAgICAgICBpZiAoIGpR
dWVyeS5pc0Z1bmN0aW9uKCBodG1sICkgKSB7CisgICAgICAgICAgICAgICAgaHRtbCA9IGh0bWwu
Y2FsbCggdGhpc1sgMCBdICk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBl
bGVtZW50cyB0byB3cmFwIHRoZSB0YXJnZXQgYXJvdW5kCisgICAgICAgICAgICB3cmFwID0galF1
ZXJ5KCBodG1sLCB0aGlzWyAwIF0ub3duZXJEb2N1bWVudCApLmVxKCAwICkuY2xvbmUoIHRydWUg
KTsKKworICAgICAgICAgICAgaWYgKCB0aGlzWyAwIF0ucGFyZW50Tm9kZSApIHsKKyAgICAgICAg
ICAgICAgICB3cmFwLmluc2VydEJlZm9yZSggdGhpc1sgMCBdICk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHdyYXAubWFwKCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICB2YXIg
ZWxlbSA9IHRoaXM7CisKKyAgICAgICAgICAgICAgICB3aGlsZSAoIGVsZW0uZmlyc3RFbGVtZW50
Q2hpbGQgKSB7CisgICAgICAgICAgICAgICAgICAgIGVsZW0gPSBlbGVtLmZpcnN0RWxlbWVudENo
aWxkOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHJldHVybiBlbGVtOwor
ICAgICAgICAgICAgfSApLmFwcGVuZCggdGhpcyApOworICAgICAgICB9CisKKyAgICAgICAgcmV0
dXJuIHRoaXM7CisgICAgfSwKKworICAgIHdyYXBJbm5lcjogZnVuY3Rpb24oIGh0bWwgKSB7Cisg
ICAgICAgIGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIGh0bWwgKSApIHsKKyAgICAgICAgICAgIHJl
dHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCBpICkgeworICAgICAgICAgICAgICAgIGpRdWVyeSgg
dGhpcyApLndyYXBJbm5lciggaHRtbC5jYWxsKCB0aGlzLCBpICkgKTsKKyAgICAgICAgICAgIH0g
KTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgdmFyIHNlbGYgPSBqUXVlcnkoIHRoaXMgKSwKKyAgICAgICAgICAgICAgICBj
b250ZW50cyA9IHNlbGYuY29udGVudHMoKTsKKworICAgICAgICAgICAgaWYgKCBjb250ZW50cy5s
ZW5ndGggKSB7CisgICAgICAgICAgICAgICAgY29udGVudHMud3JhcEFsbCggaHRtbCApOworCisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHNlbGYuYXBwZW5kKCBodG1sICk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0gKTsKKyAgICB9LAorCisgICAgd3JhcDogZnVuY3Rp
b24oIGh0bWwgKSB7CisgICAgICAgIHZhciBpc0Z1bmN0aW9uID0galF1ZXJ5LmlzRnVuY3Rpb24o
IGh0bWwgKTsKKworICAgICAgICByZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbiggaSApIHsKKyAg
ICAgICAgICAgIGpRdWVyeSggdGhpcyApLndyYXBBbGwoIGlzRnVuY3Rpb24gPyBodG1sLmNhbGwo
IHRoaXMsIGkgKSA6IGh0bWwgKTsKKyAgICAgICAgfSApOworICAgIH0sCisKKyAgICB1bndyYXA6
IGZ1bmN0aW9uKCBzZWxlY3RvciApIHsKKyAgICAgICAgdGhpcy5wYXJlbnQoIHNlbGVjdG9yICku
bm90KCAiYm9keSIgKS5lYWNoKCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGpRdWVyeSggdGhp
cyApLnJlcGxhY2VXaXRoKCB0aGlzLmNoaWxkTm9kZXMgKTsKKyAgICAgICAgfSApOworICAgICAg
ICByZXR1cm4gdGhpczsKKyAgICB9Cit9ICk7CisKKworalF1ZXJ5LmV4cHIucHNldWRvcy5oaWRk
ZW4gPSBmdW5jdGlvbiggZWxlbSApIHsKKyAgICByZXR1cm4gIWpRdWVyeS5leHByLnBzZXVkb3Mu
dmlzaWJsZSggZWxlbSApOworfTsKK2pRdWVyeS5leHByLnBzZXVkb3MudmlzaWJsZSA9IGZ1bmN0
aW9uKCBlbGVtICkgeworICAgIHJldHVybiAhISggZWxlbS5vZmZzZXRXaWR0aCB8fCBlbGVtLm9m
ZnNldEhlaWdodCB8fCBlbGVtLmdldENsaWVudFJlY3RzKCkubGVuZ3RoICk7Cit9OworCisKKwor
CisvLyBTdXBwb3J0OiBTYWZhcmkgOCBvbmx5CisvLyBJbiBTYWZhcmkgOCBkb2N1bWVudHMgY3Jl
YXRlZCB2aWEgZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50CisvLyBj
b2xsYXBzZSBzaWJsaW5nIGZvcm1zOiB0aGUgc2Vjb25kIG9uZSBiZWNvbWVzIGEgY2hpbGQgb2Yg
dGhlIGZpcnN0IG9uZS4KKy8vIEJlY2F1c2Ugb2YgdGhhdCwgdGhpcyBzZWN1cml0eSBtZWFzdXJl
IGhhcyB0byBiZSBkaXNhYmxlZCBpbiBTYWZhcmkgOC4KKy8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzczMzcKK3N1cHBvcnQuY3JlYXRlSFRNTERvY3VtZW50ID0g
KCBmdW5jdGlvbigpIHsKKyAgICB2YXIgYm9keSA9IGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNy
ZWF0ZUhUTUxEb2N1bWVudCggIiIgKS5ib2R5OworICAgIGJvZHkuaW5uZXJIVE1MID0gIjxmb3Jt
PjwvZm9ybT48Zm9ybT48L2Zvcm0+IjsKKyAgICByZXR1cm4gYm9keS5jaGlsZE5vZGVzLmxlbmd0
aCA9PT0gMjsKK30gKSgpOworCisKKy8vIEFyZ3VtZW50ICJkYXRhIiBzaG91bGQgYmUgc3RyaW5n
IG9mIGh0bWwKKy8vIGNvbnRleHQgKG9wdGlvbmFsKTogSWYgc3BlY2lmaWVkLCB0aGUgZnJhZ21l
bnQgd2lsbCBiZSBjcmVhdGVkIGluIHRoaXMgY29udGV4dCwKKy8vIGRlZmF1bHRzIHRvIGRvY3Vt
ZW50CisvLyBrZWVwU2NyaXB0cyAob3B0aW9uYWwpOiBJZiB0cnVlLCB3aWxsIGluY2x1ZGUgc2Ny
aXB0cyBwYXNzZWQgaW4gdGhlIGh0bWwgc3RyaW5nCitqUXVlcnkucGFyc2VIVE1MID0gZnVuY3Rp
b24oIGRhdGEsIGNvbnRleHQsIGtlZXBTY3JpcHRzICkgeworICAgIGlmICggdHlwZW9mIGRhdGEg
IT09ICJzdHJpbmciICkgeworICAgICAgICByZXR1cm4gW107CisgICAgfQorICAgIGlmICggdHlw
ZW9mIGNvbnRleHQgPT09ICJib29sZWFuIiApIHsKKyAgICAgICAga2VlcFNjcmlwdHMgPSBjb250
ZXh0OworICAgICAgICBjb250ZXh0ID0gZmFsc2U7CisgICAgfQorCisgICAgdmFyIGJhc2UsIHBh
cnNlZCwgc2NyaXB0czsKKworICAgIGlmICggIWNvbnRleHQgKSB7CisKKyAgICAgICAgLy8gU3Rv
cCBzY3JpcHRzIG9yIGlubGluZSBldmVudCBoYW5kbGVycyBmcm9tIGJlaW5nIGV4ZWN1dGVkIGlt
bWVkaWF0ZWx5CisgICAgICAgIC8vIGJ5IHVzaW5nIGRvY3VtZW50LmltcGxlbWVudGF0aW9uCisg
ICAgICAgIGlmICggc3VwcG9ydC5jcmVhdGVIVE1MRG9jdW1lbnQgKSB7CisgICAgICAgICAgICBj
b250ZXh0ID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCAiIiAp
OworCisgICAgICAgICAgICAvLyBTZXQgdGhlIGJhc2UgaHJlZiBmb3IgdGhlIGNyZWF0ZWQgZG9j
dW1lbnQKKyAgICAgICAgICAgIC8vIHNvIGFueSBwYXJzZWQgZWxlbWVudHMgd2l0aCBVUkxzCisg
ICAgICAgICAgICAvLyBhcmUgYmFzZWQgb24gdGhlIGRvY3VtZW50J3MgVVJMIChnaC0yOTY1KQor
ICAgICAgICAgICAgYmFzZSA9IGNvbnRleHQuY3JlYXRlRWxlbWVudCggImJhc2UiICk7CisgICAg
ICAgICAgICBiYXNlLmhyZWYgPSBkb2N1bWVudC5sb2NhdGlvbi5ocmVmOworICAgICAgICAgICAg
Y29udGV4dC5oZWFkLmFwcGVuZENoaWxkKCBiYXNlICk7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBjb250ZXh0ID0gZG9jdW1lbnQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwYXJz
ZWQgPSByc2luZ2xlVGFnLmV4ZWMoIGRhdGEgKTsKKyAgICBzY3JpcHRzID0gIWtlZXBTY3JpcHRz
ICYmIFtdOworCisgICAgLy8gU2luZ2xlIHRhZworICAgIGlmICggcGFyc2VkICkgeworICAgICAg
ICByZXR1cm4gWyBjb250ZXh0LmNyZWF0ZUVsZW1lbnQoIHBhcnNlZFsgMSBdICkgXTsKKyAgICB9
CisKKyAgICBwYXJzZWQgPSBidWlsZEZyYWdtZW50KCBbIGRhdGEgXSwgY29udGV4dCwgc2NyaXB0
cyApOworCisgICAgaWYgKCBzY3JpcHRzICYmIHNjcmlwdHMubGVuZ3RoICkgeworICAgICAgICBq
UXVlcnkoIHNjcmlwdHMgKS5yZW1vdmUoKTsKKyAgICB9CisKKyAgICByZXR1cm4galF1ZXJ5Lm1l
cmdlKCBbXSwgcGFyc2VkLmNoaWxkTm9kZXMgKTsKK307CisKKworLyoqCisgKiBHZXRzIGEgd2lu
ZG93IGZyb20gYW4gZWxlbWVudAorICovCitmdW5jdGlvbiBnZXRXaW5kb3coIGVsZW0gKSB7Cisg
ICAgcmV0dXJuIGpRdWVyeS5pc1dpbmRvdyggZWxlbSApID8gZWxlbSA6IGVsZW0ubm9kZVR5cGUg
PT09IDkgJiYgZWxlbS5kZWZhdWx0VmlldzsKK30KKworalF1ZXJ5Lm9mZnNldCA9IHsKKyAgICBz
ZXRPZmZzZXQ6IGZ1bmN0aW9uKCBlbGVtLCBvcHRpb25zLCBpICkgeworICAgICAgICB2YXIgY3Vy
UG9zaXRpb24sIGN1ckxlZnQsIGN1ckNTU1RvcCwgY3VyVG9wLCBjdXJPZmZzZXQsIGN1ckNTU0xl
ZnQsIGNhbGN1bGF0ZVBvc2l0aW9uLAorICAgICAgICAgICAgcG9zaXRpb24gPSBqUXVlcnkuY3Nz
KCBlbGVtLCAicG9zaXRpb24iICksCisgICAgICAgICAgICBjdXJFbGVtID0galF1ZXJ5KCBlbGVt
ICksCisgICAgICAgICAgICBwcm9wcyA9IHt9OworCisgICAgICAgIC8vIFNldCBwb3NpdGlvbiBm
aXJzdCwgaW4tY2FzZSB0b3AvbGVmdCBhcmUgc2V0IGV2ZW4gb24gc3RhdGljIGVsZW0KKyAgICAg
ICAgaWYgKCBwb3NpdGlvbiA9PT0gInN0YXRpYyIgKSB7CisgICAgICAgICAgICBlbGVtLnN0eWxl
LnBvc2l0aW9uID0gInJlbGF0aXZlIjsKKyAgICAgICAgfQorCisgICAgICAgIGN1ck9mZnNldCA9
IGN1ckVsZW0ub2Zmc2V0KCk7CisgICAgICAgIGN1ckNTU1RvcCA9IGpRdWVyeS5jc3MoIGVsZW0s
ICJ0b3AiICk7CisgICAgICAgIGN1ckNTU0xlZnQgPSBqUXVlcnkuY3NzKCBlbGVtLCAibGVmdCIg
KTsKKyAgICAgICAgY2FsY3VsYXRlUG9zaXRpb24gPSAoIHBvc2l0aW9uID09PSAiYWJzb2x1dGUi
IHx8IHBvc2l0aW9uID09PSAiZml4ZWQiICkgJiYKKyAgICAgICAgICAgICggY3VyQ1NTVG9wICsg
Y3VyQ1NTTGVmdCApLmluZGV4T2YoICJhdXRvIiApID4gLTE7CisKKyAgICAgICAgLy8gTmVlZCB0
byBiZSBhYmxlIHRvIGNhbGN1bGF0ZSBwb3NpdGlvbiBpZiBlaXRoZXIKKyAgICAgICAgLy8gdG9w
IG9yIGxlZnQgaXMgYXV0byBhbmQgcG9zaXRpb24gaXMgZWl0aGVyIGFic29sdXRlIG9yIGZpeGVk
CisgICAgICAgIGlmICggY2FsY3VsYXRlUG9zaXRpb24gKSB7CisgICAgICAgICAgICBjdXJQb3Np
dGlvbiA9IGN1ckVsZW0ucG9zaXRpb24oKTsKKyAgICAgICAgICAgIGN1clRvcCA9IGN1clBvc2l0
aW9uLnRvcDsKKyAgICAgICAgICAgIGN1ckxlZnQgPSBjdXJQb3NpdGlvbi5sZWZ0OworCisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjdXJUb3AgPSBwYXJzZUZsb2F0KCBjdXJDU1NUb3Ag
KSB8fCAwOworICAgICAgICAgICAgY3VyTGVmdCA9IHBhcnNlRmxvYXQoIGN1ckNTU0xlZnQgKSB8
fCAwOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggb3B0aW9u
cyApICkgeworCisgICAgICAgICAgICAvLyBVc2UgalF1ZXJ5LmV4dGVuZCBoZXJlIHRvIGFsbG93
IG1vZGlmaWNhdGlvbiBvZiBjb29yZGluYXRlcyBhcmd1bWVudCAoZ2gtMTg0OCkKKyAgICAgICAg
ICAgIG9wdGlvbnMgPSBvcHRpb25zLmNhbGwoIGVsZW0sIGksIGpRdWVyeS5leHRlbmQoIHt9LCBj
dXJPZmZzZXQgKSApOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCBvcHRpb25zLnRvcCAhPSBu
dWxsICkgeworICAgICAgICAgICAgcHJvcHMudG9wID0gKCBvcHRpb25zLnRvcCAtIGN1ck9mZnNl
dC50b3AgKSArIGN1clRvcDsKKyAgICAgICAgfQorICAgICAgICBpZiAoIG9wdGlvbnMubGVmdCAh
PSBudWxsICkgeworICAgICAgICAgICAgcHJvcHMubGVmdCA9ICggb3B0aW9ucy5sZWZ0IC0gY3Vy
T2Zmc2V0LmxlZnQgKSArIGN1ckxlZnQ7CisgICAgICAgIH0KKworICAgICAgICBpZiAoICJ1c2lu
ZyIgaW4gb3B0aW9ucyApIHsKKyAgICAgICAgICAgIG9wdGlvbnMudXNpbmcuY2FsbCggZWxlbSwg
cHJvcHMgKTsKKworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgY3VyRWxlbS5jc3MoIHBy
b3BzICk7CisgICAgICAgIH0KKyAgICB9Cit9OworCitqUXVlcnkuZm4uZXh0ZW5kKCB7CisgICAg
b2Zmc2V0OiBmdW5jdGlvbiggb3B0aW9ucyApIHsKKworICAgICAgICAvLyBQcmVzZXJ2ZSBjaGFp
bmluZyBmb3Igc2V0dGVyCisgICAgICAgIGlmICggYXJndW1lbnRzLmxlbmd0aCApIHsKKyAgICAg
ICAgICAgIHJldHVybiBvcHRpb25zID09PSB1bmRlZmluZWQgPworICAgICAgICAgICAgICAgIHRo
aXMgOgorICAgICAgICAgICAgICAgIHRoaXMuZWFjaCggZnVuY3Rpb24oIGkgKSB7CisgICAgICAg
ICAgICAgICAgICAgIGpRdWVyeS5vZmZzZXQuc2V0T2Zmc2V0KCB0aGlzLCBvcHRpb25zLCBpICk7
CisgICAgICAgICAgICAgICAgfSApOworICAgICAgICB9CisKKyAgICAgICAgdmFyIGRvY0VsZW0s
IHdpbiwgcmVjdCwgZG9jLAorICAgICAgICAgICAgZWxlbSA9IHRoaXNbIDAgXTsKKworICAgICAg
ICBpZiAoICFlbGVtICkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgLy8gU3VwcG9ydDogSUUgPD0xMSBvbmx5CisgICAgICAgIC8vIFJ1bm5pbmcgZ2V0Qm91bmRp
bmdDbGllbnRSZWN0IG9uIGEKKyAgICAgICAgLy8gZGlzY29ubmVjdGVkIG5vZGUgaW4gSUUgdGhy
b3dzIGFuIGVycm9yCisgICAgICAgIGlmICggIWVsZW0uZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGgg
KSB7CisgICAgICAgICAgICByZXR1cm4geyB0b3A6IDAsIGxlZnQ6IDAgfTsKKyAgICAgICAgfQor
CisgICAgICAgIHJlY3QgPSBlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworCisgICAgICAg
IC8vIE1ha2Ugc3VyZSBlbGVtZW50IGlzIG5vdCBoaWRkZW4gKGRpc3BsYXk6IG5vbmUpCisgICAg
ICAgIGlmICggcmVjdC53aWR0aCB8fCByZWN0LmhlaWdodCApIHsKKyAgICAgICAgICAgIGRvYyA9
IGVsZW0ub3duZXJEb2N1bWVudDsKKyAgICAgICAgICAgIHdpbiA9IGdldFdpbmRvdyggZG9jICk7
CisgICAgICAgICAgICBkb2NFbGVtID0gZG9jLmRvY3VtZW50RWxlbWVudDsKKworICAgICAgICAg
ICAgcmV0dXJuIHsKKyAgICAgICAgICAgICAgICB0b3A6IHJlY3QudG9wICsgd2luLnBhZ2VZT2Zm
c2V0IC0gZG9jRWxlbS5jbGllbnRUb3AsCisgICAgICAgICAgICAgICAgbGVmdDogcmVjdC5sZWZ0
ICsgd2luLnBhZ2VYT2Zmc2V0IC0gZG9jRWxlbS5jbGllbnRMZWZ0CisgICAgICAgICAgICB9Owor
ICAgICAgICB9CisKKyAgICAgICAgLy8gUmV0dXJuIHplcm9zIGZvciBkaXNjb25uZWN0ZWQgYW5k
IGhpZGRlbiBlbGVtZW50cyAoZ2gtMjMxMCkKKyAgICAgICAgcmV0dXJuIHJlY3Q7CisgICAgfSwK
KworICAgIHBvc2l0aW9uOiBmdW5jdGlvbigpIHsKKyAgICAgICAgaWYgKCAhdGhpc1sgMCBdICkg
eworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdmFyIG9mZnNldFBh
cmVudCwgb2Zmc2V0LAorICAgICAgICAgICAgZWxlbSA9IHRoaXNbIDAgXSwKKyAgICAgICAgICAg
IHBhcmVudE9mZnNldCA9IHsgdG9wOiAwLCBsZWZ0OiAwIH07CisKKyAgICAgICAgLy8gRml4ZWQg
ZWxlbWVudHMgYXJlIG9mZnNldCBmcm9tIHdpbmRvdyAocGFyZW50T2Zmc2V0ID0ge3RvcDowLCBs
ZWZ0OiAwfSwKKyAgICAgICAgLy8gYmVjYXVzZSBpdCBpcyBpdHMgb25seSBvZmZzZXQgcGFyZW50
CisgICAgICAgIGlmICggalF1ZXJ5LmNzcyggZWxlbSwgInBvc2l0aW9uIiApID09PSAiZml4ZWQi
ICkgeworCisgICAgICAgICAgICAvLyBBc3N1bWUgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGlzIHRo
ZXJlIHdoZW4gY29tcHV0ZWQgcG9zaXRpb24gaXMgZml4ZWQKKyAgICAgICAgICAgIG9mZnNldCA9
IGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CisKKyAgICAgICAgfSBlbHNlIHsKKworICAg
ICAgICAgICAgLy8gR2V0ICpyZWFsKiBvZmZzZXRQYXJlbnQKKyAgICAgICAgICAgIG9mZnNldFBh
cmVudCA9IHRoaXMub2Zmc2V0UGFyZW50KCk7CisKKyAgICAgICAgICAgIC8vIEdldCBjb3JyZWN0
IG9mZnNldHMKKyAgICAgICAgICAgIG9mZnNldCA9IHRoaXMub2Zmc2V0KCk7CisgICAgICAgICAg
ICBpZiAoICFqUXVlcnkubm9kZU5hbWUoIG9mZnNldFBhcmVudFsgMCBdLCAiaHRtbCIgKSApIHsK
KyAgICAgICAgICAgICAgICBwYXJlbnRPZmZzZXQgPSBvZmZzZXRQYXJlbnQub2Zmc2V0KCk7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEFkZCBvZmZzZXRQYXJlbnQgYm9yZGVycwor
ICAgICAgICAgICAgcGFyZW50T2Zmc2V0ID0geworICAgICAgICAgICAgICAgIHRvcDogcGFyZW50
T2Zmc2V0LnRvcCArIGpRdWVyeS5jc3MoIG9mZnNldFBhcmVudFsgMCBdLCAiYm9yZGVyVG9wV2lk
dGgiLCB0cnVlICksCisgICAgICAgICAgICAgICAgbGVmdDogcGFyZW50T2Zmc2V0LmxlZnQgKyBq
UXVlcnkuY3NzKCBvZmZzZXRQYXJlbnRbIDAgXSwgImJvcmRlckxlZnRXaWR0aCIsIHRydWUgKQor
ICAgICAgICAgICAgfTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFN1YnRyYWN0IHBhcmVudCBv
ZmZzZXRzIGFuZCBlbGVtZW50IG1hcmdpbnMKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAg
IHRvcDogb2Zmc2V0LnRvcCAtIHBhcmVudE9mZnNldC50b3AgLSBqUXVlcnkuY3NzKCBlbGVtLCAi
bWFyZ2luVG9wIiwgdHJ1ZSApLAorICAgICAgICAgICAgbGVmdDogb2Zmc2V0LmxlZnQgLSBwYXJl
bnRPZmZzZXQubGVmdCAtIGpRdWVyeS5jc3MoIGVsZW0sICJtYXJnaW5MZWZ0IiwgdHJ1ZSApCisg
ICAgICAgIH07CisgICAgfSwKKworICAgIC8vIFRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuIGRvY3Vt
ZW50RWxlbWVudCBpbiB0aGUgZm9sbG93aW5nIGNhc2VzOgorICAgIC8vIDEpIEZvciB0aGUgZWxl
bWVudCBpbnNpZGUgdGhlIGlmcmFtZSB3aXRob3V0IG9mZnNldFBhcmVudCwgdGhpcyBtZXRob2Qg
d2lsbCByZXR1cm4KKyAgICAvLyAgICBkb2N1bWVudEVsZW1lbnQgb2YgdGhlIHBhcmVudCB3aW5k
b3cKKyAgICAvLyAyKSBGb3IgdGhlIGhpZGRlbiBvciBkZXRhY2hlZCBlbGVtZW50CisgICAgLy8g
MykgRm9yIGJvZHkgb3IgaHRtbCBlbGVtZW50LCBpLmUuIGluIGNhc2Ugb2YgdGhlIGh0bWwgbm9k
ZSAtIGl0IHdpbGwgcmV0dXJuIGl0c2VsZgorICAgIC8vCisgICAgLy8gYnV0IHRob3NlIGV4Y2Vw
dGlvbnMgd2VyZSBuZXZlciBwcmVzZW50ZWQgYXMgYSByZWFsIGxpZmUgdXNlLWNhc2VzCisgICAg
Ly8gYW5kIG1pZ2h0IGJlIGNvbnNpZGVyZWQgYXMgbW9yZSBwcmVmZXJhYmxlIHJlc3VsdHMuCisg
ICAgLy8KKyAgICAvLyBUaGlzIGxvZ2ljLCBob3dldmVyLCBpcyBub3QgZ3VhcmFudGVlZCBhbmQg
Y2FuIGNoYW5nZSBhdCBhbnkgcG9pbnQgaW4gdGhlIGZ1dHVyZQorICAgIG9mZnNldFBhcmVudDog
ZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiB0aGlzLm1hcCggZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICB2YXIgb2Zmc2V0UGFyZW50ID0gdGhpcy5vZmZzZXRQYXJlbnQ7CisKKyAgICAgICAg
ICAgIHdoaWxlICggb2Zmc2V0UGFyZW50ICYmIGpRdWVyeS5jc3MoIG9mZnNldFBhcmVudCwgInBv
c2l0aW9uIiApID09PSAic3RhdGljIiApIHsKKyAgICAgICAgICAgICAgICBvZmZzZXRQYXJlbnQg
PSBvZmZzZXRQYXJlbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICByZXR1cm4gb2Zmc2V0UGFyZW50IHx8IGRvY3VtZW50RWxlbWVudDsKKyAgICAgICAgfSApOwor
ICAgIH0KK30gKTsKKworLy8gQ3JlYXRlIHNjcm9sbExlZnQgYW5kIHNjcm9sbFRvcCBtZXRob2Rz
CitqUXVlcnkuZWFjaCggeyBzY3JvbGxMZWZ0OiAicGFnZVhPZmZzZXQiLCBzY3JvbGxUb3A6ICJw
YWdlWU9mZnNldCIgfSwgZnVuY3Rpb24oIG1ldGhvZCwgcHJvcCApIHsKKyAgICB2YXIgdG9wID0g
InBhZ2VZT2Zmc2V0IiA9PT0gcHJvcDsKKworICAgIGpRdWVyeS5mblsgbWV0aG9kIF0gPSBmdW5j
dGlvbiggdmFsICkgeworICAgICAgICByZXR1cm4gYWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggZWxl
bSwgbWV0aG9kLCB2YWwgKSB7CisgICAgICAgICAgICB2YXIgd2luID0gZ2V0V2luZG93KCBlbGVt
ICk7CisKKyAgICAgICAgICAgIGlmICggdmFsID09PSB1bmRlZmluZWQgKSB7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHdpbiA/IHdpblsgcHJvcCBdIDogZWxlbVsgbWV0aG9kIF07CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGlmICggd2luICkgeworICAgICAgICAgICAgICAgIHdpbi5z
Y3JvbGxUbygKKyAgICAgICAgICAgICAgICAgICAgIXRvcCA/IHZhbCA6IHdpbi5wYWdlWE9mZnNl
dCwKKyAgICAgICAgICAgICAgICAgICAgdG9wID8gdmFsIDogd2luLnBhZ2VZT2Zmc2V0CisgICAg
ICAgICAgICAgICAgKTsKKworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBl
bGVtWyBtZXRob2QgXSA9IHZhbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwgbWV0aG9kLCB2
YWwsIGFyZ3VtZW50cy5sZW5ndGggKTsKKyAgICB9OworfSApOworCisvLyBTdXBwb3J0OiBTYWZh
cmkgPD03IC0gOS4xLCBDaHJvbWUgPD0zNyAtIDQ5CisvLyBBZGQgdGhlIHRvcC9sZWZ0IGNzc0hv
b2tzIHVzaW5nIGpRdWVyeS5mbi5wb3NpdGlvbgorLy8gV2Via2l0IGJ1ZzogaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5MDg0CisvLyBCbGluayBidWc6IGh0dHBzOi8v
YnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTU4OTM0NworLy8g
Z2V0Q29tcHV0ZWRTdHlsZSByZXR1cm5zIHBlcmNlbnQgd2hlbiBzcGVjaWZpZWQgZm9yIHRvcC9s
ZWZ0L2JvdHRvbS9yaWdodDsKKy8vIHJhdGhlciB0aGFuIG1ha2UgdGhlIGNzcyBtb2R1bGUgZGVw
ZW5kIG9uIHRoZSBvZmZzZXQgbW9kdWxlLCBqdXN0IGNoZWNrIGZvciBpdCBoZXJlCitqUXVlcnku
ZWFjaCggWyAidG9wIiwgImxlZnQiIF0sIGZ1bmN0aW9uKCBpLCBwcm9wICkgeworICAgIGpRdWVy
eS5jc3NIb29rc1sgcHJvcCBdID0gYWRkR2V0SG9va0lmKCBzdXBwb3J0LnBpeGVsUG9zaXRpb24s
CisgICAgICAgIGZ1bmN0aW9uKCBlbGVtLCBjb21wdXRlZCApIHsKKyAgICAgICAgICAgIGlmICgg
Y29tcHV0ZWQgKSB7CisgICAgICAgICAgICAgICAgY29tcHV0ZWQgPSBjdXJDU1MoIGVsZW0sIHBy
b3AgKTsKKworICAgICAgICAgICAgICAgIC8vIElmIGN1ckNTUyByZXR1cm5zIHBlcmNlbnRhZ2Us
IGZhbGxiYWNrIHRvIG9mZnNldAorICAgICAgICAgICAgICAgIHJldHVybiBybnVtbm9ucHgudGVz
dCggY29tcHV0ZWQgKSA/CisgICAgICAgICAgICAgICAgICAgIGpRdWVyeSggZWxlbSApLnBvc2l0
aW9uKClbIHByb3AgXSArICJweCIgOgorICAgICAgICAgICAgICAgICAgICBjb21wdXRlZDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICk7Cit9ICk7CisKKworLy8gQ3JlYXRlIGlubmVy
SGVpZ2h0LCBpbm5lcldpZHRoLCBoZWlnaHQsIHdpZHRoLCBvdXRlckhlaWdodCBhbmQgb3V0ZXJX
aWR0aCBtZXRob2RzCitqUXVlcnkuZWFjaCggeyBIZWlnaHQ6ICJoZWlnaHQiLCBXaWR0aDogIndp
ZHRoIiB9LCBmdW5jdGlvbiggbmFtZSwgdHlwZSApIHsKKyAgICBqUXVlcnkuZWFjaCggeyBwYWRk
aW5nOiAiaW5uZXIiICsgbmFtZSwgY29udGVudDogdHlwZSwgIiI6ICJvdXRlciIgKyBuYW1lIH0s
CisgICAgICAgIGZ1bmN0aW9uKCBkZWZhdWx0RXh0cmEsIGZ1bmNOYW1lICkgeworCisgICAgICAg
IC8vIE1hcmdpbiBpcyBvbmx5IGZvciBvdXRlckhlaWdodCwgb3V0ZXJXaWR0aAorICAgICAgICBq
UXVlcnkuZm5bIGZ1bmNOYW1lIF0gPSBmdW5jdGlvbiggbWFyZ2luLCB2YWx1ZSApIHsKKyAgICAg
ICAgICAgIHZhciBjaGFpbmFibGUgPSBhcmd1bWVudHMubGVuZ3RoICYmICggZGVmYXVsdEV4dHJh
IHx8IHR5cGVvZiBtYXJnaW4gIT09ICJib29sZWFuIiApLAorICAgICAgICAgICAgICAgIGV4dHJh
ID0gZGVmYXVsdEV4dHJhIHx8ICggbWFyZ2luID09PSB0cnVlIHx8IHZhbHVlID09PSB0cnVlID8g
Im1hcmdpbiIgOiAiYm9yZGVyIiApOworCisgICAgICAgICAgICByZXR1cm4gYWNjZXNzKCB0aGlz
LCBmdW5jdGlvbiggZWxlbSwgdHlwZSwgdmFsdWUgKSB7CisgICAgICAgICAgICAgICAgdmFyIGRv
YzsKKworICAgICAgICAgICAgICAgIGlmICggalF1ZXJ5LmlzV2luZG93KCBlbGVtICkgKSB7CisK
KyAgICAgICAgICAgICAgICAgICAgLy8gJCggd2luZG93ICkub3V0ZXJXaWR0aC9IZWlnaHQgcmV0
dXJuIHcvaCBpbmNsdWRpbmcgc2Nyb2xsYmFycyAoZ2gtMTcyOSkKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZ1bmNOYW1lLmluZGV4T2YoICJvdXRlciIgKSA9PT0gMCA/CisgICAgICAgICAg
ICAgICAgICAgICAgICBlbGVtWyAiaW5uZXIiICsgbmFtZSBdIDoKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGVsZW0uZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50WyAiY2xpZW50IiArIG5hbWUgXTsK
KyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBHZXQgZG9jdW1lbnQgd2lk
dGggb3IgaGVpZ2h0CisgICAgICAgICAgICAgICAgaWYgKCBlbGVtLm5vZGVUeXBlID09PSA5ICkg
eworICAgICAgICAgICAgICAgICAgICBkb2MgPSBlbGVtLmRvY3VtZW50RWxlbWVudDsKKworICAg
ICAgICAgICAgICAgICAgICAvLyBFaXRoZXIgc2Nyb2xsW1dpZHRoL0hlaWdodF0gb3Igb2Zmc2V0
W1dpZHRoL0hlaWdodF0gb3IgY2xpZW50W1dpZHRoL0hlaWdodF0sCisgICAgICAgICAgICAgICAg
ICAgIC8vIHdoaWNoZXZlciBpcyBncmVhdGVzdAorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
TWF0aC5tYXgoCisgICAgICAgICAgICAgICAgICAgICAgICBlbGVtLmJvZHlbICJzY3JvbGwiICsg
bmFtZSBdLCBkb2NbICJzY3JvbGwiICsgbmFtZSBdLAorICAgICAgICAgICAgICAgICAgICAgICAg
ZWxlbS5ib2R5WyAib2Zmc2V0IiArIG5hbWUgXSwgZG9jWyAib2Zmc2V0IiArIG5hbWUgXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGRvY1sgImNsaWVudCIgKyBuYW1lIF0KKyAgICAgICAgICAg
ICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICByZXR1cm4g
dmFsdWUgPT09IHVuZGVmaW5lZCA/CisKKyAgICAgICAgICAgICAgICAgICAgLy8gR2V0IHdpZHRo
IG9yIGhlaWdodCBvbiB0aGUgZWxlbWVudCwgcmVxdWVzdGluZyBidXQgbm90IGZvcmNpbmcgcGFy
c2VGbG9hdAorICAgICAgICAgICAgICAgICAgICBqUXVlcnkuY3NzKCBlbGVtLCB0eXBlLCBleHRy
YSApIDoKKworICAgICAgICAgICAgICAgICAgICAvLyBTZXQgd2lkdGggb3IgaGVpZ2h0IG9uIHRo
ZSBlbGVtZW50CisgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5zdHlsZSggZWxlbSwgdHlwZSwg
dmFsdWUsIGV4dHJhICk7CisgICAgICAgICAgICB9LCB0eXBlLCBjaGFpbmFibGUgPyBtYXJnaW4g
OiB1bmRlZmluZWQsIGNoYWluYWJsZSApOworICAgICAgICB9OworICAgIH0gKTsKK30gKTsKKwor
CisvLyBSZWdpc3RlciBhcyBhIG5hbWVkIEFNRCBtb2R1bGUsIHNpbmNlIGpRdWVyeSBjYW4gYmUg
Y29uY2F0ZW5hdGVkIHdpdGggb3RoZXIKKy8vIGZpbGVzIHRoYXQgbWF5IHVzZSBkZWZpbmUsIGJ1
dCBub3QgdmlhIGEgcHJvcGVyIGNvbmNhdGVuYXRpb24gc2NyaXB0IHRoYXQKKy8vIHVuZGVyc3Rh
bmRzIGFub255bW91cyBBTUQgbW9kdWxlcy4gQSBuYW1lZCBBTUQgaXMgc2FmZXN0IGFuZCBtb3N0
IHJvYnVzdAorLy8gd2F5IHRvIHJlZ2lzdGVyLiBMb3dlcmNhc2UganF1ZXJ5IGlzIHVzZWQgYmVj
YXVzZSBBTUQgbW9kdWxlIG5hbWVzIGFyZQorLy8gZGVyaXZlZCBmcm9tIGZpbGUgbmFtZXMsIGFu
ZCBqUXVlcnkgaXMgbm9ybWFsbHkgZGVsaXZlcmVkIGluIGEgbG93ZXJjYXNlCisvLyBmaWxlIG5h
bWUuIERvIHRoaXMgYWZ0ZXIgY3JlYXRpbmcgdGhlIGdsb2JhbCBzbyB0aGF0IGlmIGFuIEFNRCBt
b2R1bGUgd2FudHMKKy8vIHRvIGNhbGwgbm9Db25mbGljdCB0byBoaWRlIHRoaXMgdmVyc2lvbiBv
ZiBqUXVlcnksIGl0IHdpbGwgd29yay4KKworLy8gTm90ZSB0aGF0IGZvciBtYXhpbXVtIHBvcnRh
YmlsaXR5LCBsaWJyYXJpZXMgdGhhdCBhcmUgbm90IGpRdWVyeSBzaG91bGQKKy8vIGRlY2xhcmUg
dGhlbXNlbHZlcyBhcyBhbm9ueW1vdXMgbW9kdWxlcywgYW5kIGF2b2lkIHNldHRpbmcgYSBnbG9i
YWwgaWYgYW4KKy8vIEFNRCBsb2FkZXIgaXMgcHJlc2VudC4galF1ZXJ5IGlzIGEgc3BlY2lhbCBj
YXNlLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlCisvLyBodHRwczovL2dpdGh1Yi5jb20vanJi
dXJrZS9yZXF1aXJlanMvd2lraS9VcGRhdGluZy1leGlzdGluZy1saWJyYXJpZXMjd2lraS1hbm9u
CisKK2lmICggdHlwZW9mIGRlZmluZSA9PT0gImZ1bmN0aW9uIiAmJiBkZWZpbmUuYW1kICkgewor
ICAgIGRlZmluZSggImpxdWVyeSIsIFtdLCBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIGpR
dWVyeTsKKyAgICB9ICk7Cit9CisKKworCisKK3ZhcgorCisgICAgLy8gTWFwIG92ZXIgalF1ZXJ5
IGluIGNhc2Ugb2Ygb3ZlcndyaXRlCisgICAgX2pRdWVyeSA9IHdpbmRvdy5qUXVlcnksCisKKyAg
ICAvLyBNYXAgb3ZlciB0aGUgJCBpbiBjYXNlIG9mIG92ZXJ3cml0ZQorICAgIF8kID0gd2luZG93
LiQ7CisKK2pRdWVyeS5ub0NvbmZsaWN0ID0gZnVuY3Rpb24oIGRlZXAgKSB7CisgICAgaWYgKCB3
aW5kb3cuJCA9PT0galF1ZXJ5ICkgeworICAgICAgICB3aW5kb3cuJCA9IF8kOworICAgIH0KKwor
ICAgIGlmICggZGVlcCAmJiB3aW5kb3cualF1ZXJ5ID09PSBqUXVlcnkgKSB7CisgICAgICAgIHdp
bmRvdy5qUXVlcnkgPSBfalF1ZXJ5OworICAgIH0KKworICAgIHJldHVybiBqUXVlcnk7Cit9Owor
CisvLyBFeHBvc2UgalF1ZXJ5IGFuZCAkIGlkZW50aWZpZXJzLCBldmVuIGluIEFNRAorLy8gKCM3
MTAyI2NvbW1lbnQ6MTAsIGh0dHBzOi8vZ2l0aHViLmNvbS9qcXVlcnkvanF1ZXJ5L3B1bGwvNTU3
KQorLy8gYW5kIENvbW1vbkpTIGZvciBicm93c2VyIGVtdWxhdG9ycyAoIzEzNTY2KQoraWYgKCAh
bm9HbG9iYWwgKSB7CisgICAgd2luZG93LmpRdWVyeSA9IHdpbmRvdy4kID0galF1ZXJ5OworfQor
CisKKworCisKK3JldHVybiBqUXVlcnk7Cit9ICk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9q
cXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9kaXN0L2pxdWVyeS5zbGltLm1pbi5qcyBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L2Rpc3QvanF1ZXJ5LnNsaW0ubWluLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmEyNDBjYTliMmRjNmExMGMxZDlmMjFhN2NkYTQ3N2ZkNzhhNjBmODMKLS0t
IC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9k
aXN0L2pxdWVyeS5zbGltLm1pbi5qcwpAQCAtMCwwICsxLDQgQEAKKy8qISBqUXVlcnkgdjMuMS4x
IC1hamF4LC1hamF4L2pzb25wLC1hamF4L2xvYWQsLWFqYXgvcGFyc2VYTUwsLWFqYXgvc2NyaXB0
LC1hamF4L3Zhci9sb2NhdGlvbiwtYWpheC92YXIvbm9uY2UsLWFqYXgvdmFyL3JxdWVyeSwtYWph
eC94aHIsLW1hbmlwdWxhdGlvbi9fZXZhbFVybCwtZXZlbnQvYWpheCwtZWZmZWN0cywtZWZmZWN0
cy9hbmltYXRlZFNlbGVjdG9yLC1lZmZlY3RzL1R3ZWVuLC1kZXByZWNhdGVkIHwgKGMpIGpRdWVy
eSBGb3VuZGF0aW9uIHwganF1ZXJ5Lm9yZy9saWNlbnNlICovCishZnVuY3Rpb24oYSxiKXsidXNl
IHN0cmljdCI7Im9iamVjdCI9PXR5cGVvZiBtb2R1bGUmJiJvYmplY3QiPT10eXBlb2YgbW9kdWxl
LmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9YS5kb2N1bWVudD9iKGEsITApOmZ1bmN0aW9uKGEpe2lm
KCFhLmRvY3VtZW50KXRocm93IG5ldyBFcnJvcigialF1ZXJ5IHJlcXVpcmVzIGEgd2luZG93IHdp
dGggYSBkb2N1bWVudCIpO3JldHVybiBiKGEpfTpiKGEpfSgidW5kZWZpbmVkIiE9dHlwZW9mIHdp
bmRvdz93aW5kb3c6dGhpcyxmdW5jdGlvbihhLGIpeyJ1c2Ugc3RyaWN0Ijt2YXIgYz1bXSxkPWEu
ZG9jdW1lbnQsZT1PYmplY3QuZ2V0UHJvdG90eXBlT2YsZj1jLnNsaWNlLGc9Yy5jb25jYXQsaD1j
LnB1c2gsaT1jLmluZGV4T2Ysaj17fSxrPWoudG9TdHJpbmcsbD1qLmhhc093blByb3BlcnR5LG09
bC50b1N0cmluZyxuPW0uY2FsbChPYmplY3QpLG89e307ZnVuY3Rpb24gcChhLGIpe2I9Ynx8ZDt2
YXIgYz1iLmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO2MudGV4dD1hLGIuaGVhZC5hcHBlbmRDaGls
ZChjKS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGMpfXZhciBxPSIzLjEuMSAtYWpheCwtYWpheC9q
c29ucCwtYWpheC9sb2FkLC1hamF4L3BhcnNlWE1MLC1hamF4L3NjcmlwdCwtYWpheC92YXIvbG9j
YXRpb24sLWFqYXgvdmFyL25vbmNlLC1hamF4L3Zhci9ycXVlcnksLWFqYXgveGhyLC1tYW5pcHVs
YXRpb24vX2V2YWxVcmwsLWV2ZW50L2FqYXgsLWVmZmVjdHMsLWVmZmVjdHMvYW5pbWF0ZWRTZWxl
Y3RvciwtZWZmZWN0cy9Ud2VlbiwtZGVwcmVjYXRlZCIscj1mdW5jdGlvbihhLGIpe3JldHVybiBu
ZXcgci5mbi5pbml0KGEsYil9LHM9L15bXHNcdUZFRkZceEEwXSt8W1xzXHVGRUZGXHhBMF0rJC9n
LHQ9L14tbXMtLyx1PS8tKFthLXpdKS9nLHY9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYi50b1VwcGVy
Q2FzZSgpfTtyLmZuPXIucHJvdG90eXBlPXtqcXVlcnk6cSxjb25zdHJ1Y3RvcjpyLGxlbmd0aDow
LHRvQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gZi5jYWxsKHRoaXMpfSxnZXQ6ZnVuY3Rpb24oYSl7
cmV0dXJuIG51bGw9PWE/Zi5jYWxsKHRoaXMpOmE8MD90aGlzW2ErdGhpcy5sZW5ndGhdOnRoaXNb
YV19LHB1c2hTdGFjazpmdW5jdGlvbihhKXt2YXIgYj1yLm1lcmdlKHRoaXMuY29uc3RydWN0b3Io
KSxhKTtyZXR1cm4gYi5wcmV2T2JqZWN0PXRoaXMsYn0sZWFjaDpmdW5jdGlvbihhKXtyZXR1cm4g
ci5lYWNoKHRoaXMsYSl9LG1hcDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soci5t
YXAodGhpcyxmdW5jdGlvbihiLGMpe3JldHVybiBhLmNhbGwoYixjLGIpfSkpfSxzbGljZTpmdW5j
dGlvbigpe3JldHVybiB0aGlzLnB1c2hTdGFjayhmLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9LGZp
cnN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXEoMCl9LGxhc3Q6ZnVuY3Rpb24oKXtyZXR1cm4g
dGhpcy5lcSgtMSl9LGVxOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMubGVuZ3RoLGM9K2ErKGE8MD9i
OjApO3JldHVybiB0aGlzLnB1c2hTdGFjayhjPj0wJiZjPGI/W3RoaXNbY11dOltdKX0sZW5kOmZ1
bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJldk9iamVjdHx8dGhpcy5jb25zdHJ1Y3RvcigpfSxwdXNo
Omgsc29ydDpjLnNvcnQsc3BsaWNlOmMuc3BsaWNlfSxyLmV4dGVuZD1yLmZuLmV4dGVuZD1mdW5j
dGlvbigpe3ZhciBhLGIsYyxkLGUsZixnPWFyZ3VtZW50c1swXXx8e30saD0xLGk9YXJndW1lbnRz
Lmxlbmd0aCxqPSExO2ZvcigiYm9vbGVhbiI9PXR5cGVvZiBnJiYoaj1nLGc9YXJndW1lbnRzW2hd
fHx7fSxoKyspLCJvYmplY3QiPT10eXBlb2YgZ3x8ci5pc0Z1bmN0aW9uKGcpfHwoZz17fSksaD09
PWkmJihnPXRoaXMsaC0tKTtoPGk7aCsrKWlmKG51bGwhPShhPWFyZ3VtZW50c1toXSkpZm9yKGIg
aW4gYSljPWdbYl0sZD1hW2JdLGchPT1kJiYoaiYmZCYmKHIuaXNQbGFpbk9iamVjdChkKXx8KGU9
ci5pc0FycmF5KGQpKSk/KGU/KGU9ITEsZj1jJiZyLmlzQXJyYXkoYyk/YzpbXSk6Zj1jJiZyLmlz
UGxhaW5PYmplY3QoYyk/Yzp7fSxnW2JdPXIuZXh0ZW5kKGosZixkKSk6dm9pZCAwIT09ZCYmKGdb
Yl09ZCkpO3JldHVybiBnfSxyLmV4dGVuZCh7ZXhwYW5kbzoialF1ZXJ5IisocStNYXRoLnJhbmRv
bSgpKS5yZXBsYWNlKC9cRC9nLCIiKSxpc1JlYWR5OiEwLGVycm9yOmZ1bmN0aW9uKGEpe3Rocm93
IG5ldyBFcnJvcihhKX0sbm9vcDpmdW5jdGlvbigpe30saXNGdW5jdGlvbjpmdW5jdGlvbihhKXty
ZXR1cm4iZnVuY3Rpb24iPT09ci50eXBlKGEpfSxpc0FycmF5OkFycmF5LmlzQXJyYXksaXNXaW5k
b3c6ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGwhPWEmJmE9PT1hLndpbmRvd30saXNOdW1lcmljOmZ1
bmN0aW9uKGEpe3ZhciBiPXIudHlwZShhKTtyZXR1cm4oIm51bWJlciI9PT1ifHwic3RyaW5nIj09
PWIpJiYhaXNOYU4oYS1wYXJzZUZsb2F0KGEpKX0saXNQbGFpbk9iamVjdDpmdW5jdGlvbihhKXt2
YXIgYixjO3JldHVybiEoIWF8fCJbb2JqZWN0IE9iamVjdF0iIT09ay5jYWxsKGEpKSYmKCEoYj1l
KGEpKXx8KGM9bC5jYWxsKGIsImNvbnN0cnVjdG9yIikmJmIuY29uc3RydWN0b3IsImZ1bmN0aW9u
Ij09dHlwZW9mIGMmJm0uY2FsbChjKT09PW4pKX0saXNFbXB0eU9iamVjdDpmdW5jdGlvbihhKXt2
YXIgYjtmb3IoYiBpbiBhKXJldHVybiExO3JldHVybiEwfSx0eXBlOmZ1bmN0aW9uKGEpe3JldHVy
biBudWxsPT1hP2ErIiI6Im9iamVjdCI9PXR5cGVvZiBhfHwiZnVuY3Rpb24iPT10eXBlb2YgYT9q
W2suY2FsbChhKV18fCJvYmplY3QiOnR5cGVvZiBhfSxnbG9iYWxFdmFsOmZ1bmN0aW9uKGEpe3Ao
YSl9LGNhbWVsQ2FzZTpmdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKHQsIm1zLSIpLnJlcGxh
Y2UodSx2KX0sbm9kZU5hbWU6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5ub2RlTmFtZSYmYS5ub2Rl
TmFtZS50b0xvd2VyQ2FzZSgpPT09Yi50b0xvd2VyQ2FzZSgpfSxlYWNoOmZ1bmN0aW9uKGEsYil7
dmFyIGMsZD0wO2lmKHcoYSkpe2ZvcihjPWEubGVuZ3RoO2Q8YztkKyspaWYoYi5jYWxsKGFbZF0s
ZCxhW2RdKT09PSExKWJyZWFrfWVsc2UgZm9yKGQgaW4gYSlpZihiLmNhbGwoYVtkXSxkLGFbZF0p
PT09ITEpYnJlYWs7cmV0dXJuIGF9LHRyaW06ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWE/IiI6
KGErIiIpLnJlcGxhY2UocywiIil9LG1ha2VBcnJheTpmdW5jdGlvbihhLGIpe3ZhciBjPWJ8fFtd
O3JldHVybiBudWxsIT1hJiYodyhPYmplY3QoYSkpP3IubWVyZ2UoYywic3RyaW5nIj09dHlwZW9m
IGE/W2FdOmEpOmguY2FsbChjLGEpKSxjfSxpbkFycmF5OmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4g
bnVsbD09Yj8tMTppLmNhbGwoYixhLGMpfSxtZXJnZTpmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0r
Yi5sZW5ndGgsZD0wLGU9YS5sZW5ndGg7ZDxjO2QrKylhW2UrK109YltkXTtyZXR1cm4gYS5sZW5n
dGg9ZSxhfSxncmVwOmZ1bmN0aW9uKGEsYixjKXtmb3IodmFyIGQsZT1bXSxmPTAsZz1hLmxlbmd0
aCxoPSFjO2Y8ZztmKyspZD0hYihhW2ZdLGYpLGQhPT1oJiZlLnB1c2goYVtmXSk7cmV0dXJuIGV9
LG1hcDpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmPTAsaD1bXTtpZih3KGEpKWZvcihkPWEubGVu
Z3RoO2Y8ZDtmKyspZT1iKGFbZl0sZixjKSxudWxsIT1lJiZoLnB1c2goZSk7ZWxzZSBmb3IoZiBp
biBhKWU9YihhW2ZdLGYsYyksbnVsbCE9ZSYmaC5wdXNoKGUpO3JldHVybiBnLmFwcGx5KFtdLGgp
fSxndWlkOjEscHJveHk6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGU7aWYoInN0cmluZyI9PXR5cGVv
ZiBiJiYoYz1hW2JdLGI9YSxhPWMpLHIuaXNGdW5jdGlvbihhKSlyZXR1cm4gZD1mLmNhbGwoYXJn
dW1lbnRzLDIpLGU9ZnVuY3Rpb24oKXtyZXR1cm4gYS5hcHBseShifHx0aGlzLGQuY29uY2F0KGYu
Y2FsbChhcmd1bWVudHMpKSl9LGUuZ3VpZD1hLmd1aWQ9YS5ndWlkfHxyLmd1aWQrKyxlfSxub3c6
RGF0ZS5ub3csc3VwcG9ydDpvfSksImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKHIuZm5bU3lt
Ym9sLml0ZXJhdG9yXT1jW1N5bWJvbC5pdGVyYXRvcl0pLHIuZWFjaCgiQm9vbGVhbiBOdW1iZXIg
U3RyaW5nIEZ1bmN0aW9uIEFycmF5IERhdGUgUmVnRXhwIE9iamVjdCBFcnJvciBTeW1ib2wiLnNw
bGl0KCIgIiksZnVuY3Rpb24oYSxiKXtqWyJbb2JqZWN0ICIrYisiXSJdPWIudG9Mb3dlckNhc2Uo
KX0pO2Z1bmN0aW9uIHcoYSl7dmFyIGI9ISFhJiYibGVuZ3RoImluIGEmJmEubGVuZ3RoLGM9ci50
eXBlKGEpO3JldHVybiJmdW5jdGlvbiIhPT1jJiYhci5pc1dpbmRvdyhhKSYmKCJhcnJheSI9PT1j
fHwwPT09Ynx8Im51bWJlciI9PXR5cGVvZiBiJiZiPjAmJmItMSBpbiBhKX12YXIgeD1mdW5jdGlv
bihhKXt2YXIgYixjLGQsZSxmLGcsaCxpLGosayxsLG0sbixvLHAscSxyLHMsdCx1PSJzaXp6bGUi
KzEqbmV3IERhdGUsdj1hLmRvY3VtZW50LHc9MCx4PTAseT1oYSgpLHo9aGEoKSxBPWhhKCksQj1m
dW5jdGlvbihhLGIpe3JldHVybiBhPT09YiYmKGw9ITApLDB9LEM9e30uaGFzT3duUHJvcGVydHks
RD1bXSxFPUQucG9wLEY9RC5wdXNoLEc9RC5wdXNoLEg9RC5zbGljZSxJPWZ1bmN0aW9uKGEsYil7
Zm9yKHZhciBjPTAsZD1hLmxlbmd0aDtjPGQ7YysrKWlmKGFbY109PT1iKXJldHVybiBjO3JldHVy
bi0xfSxKPSJjaGVja2VkfHNlbGVjdGVkfGFzeW5jfGF1dG9mb2N1c3xhdXRvcGxheXxjb250cm9s
c3xkZWZlcnxkaXNhYmxlZHxoaWRkZW58aXNtYXB8bG9vcHxtdWx0aXBsZXxvcGVufHJlYWRvbmx5
fHJlcXVpcmVkfHNjb3BlZCIsSz0iW1xceDIwXFx0XFxyXFxuXFxmXSIsTD0iKD86XFxcXC58W1xc
dy1dfFteXDAtXFx4YTBdKSsiLE09IlxcWyIrSysiKigiK0wrIikoPzoiK0srIiooWypeJHwhfl0/
PSkiK0srIiooPzonKCg/OlxcXFwufFteXFxcXCddKSopJ3xcIigoPzpcXFxcLnxbXlxcXFxcIl0p
KilcInwoIitMKyIpKXwpIitLKyIqXFxdIixOPSI6KCIrTCsiKSg/OlxcKCgoJygoPzpcXFxcLnxb
XlxcXFwnXSkqKSd8XCIoKD86XFxcXC58W15cXFxcXCJdKSopXCIpfCgoPzpcXFxcLnxbXlxcXFwo
KVtcXF1dfCIrTSsiKSopfC4qKVxcKXwpIixPPW5ldyBSZWdFeHAoSysiKyIsImciKSxQPW5ldyBS
ZWdFeHAoIl4iK0srIit8KCg/Ol58W15cXFxcXSkoPzpcXFxcLikqKSIrSysiKyQiLCJnIiksUT1u
ZXcgUmVnRXhwKCJeIitLKyIqLCIrSysiKiIpLFI9bmV3IFJlZ0V4cCgiXiIrSysiKihbPit+XXwi
K0srIikiK0srIioiKSxTPW5ldyBSZWdFeHAoIj0iK0srIiooW15cXF0nXCJdKj8pIitLKyIqXFxd
IiwiZyIpLFQ9bmV3IFJlZ0V4cChOKSxVPW5ldyBSZWdFeHAoIl4iK0wrIiQiKSxWPXtJRDpuZXcg
UmVnRXhwKCJeIygiK0wrIikiKSxDTEFTUzpuZXcgUmVnRXhwKCJeXFwuKCIrTCsiKSIpLFRBRzpu
ZXcgUmVnRXhwKCJeKCIrTCsifFsqXSkiKSxBVFRSOm5ldyBSZWdFeHAoIl4iK00pLFBTRVVETzpu
ZXcgUmVnRXhwKCJeIitOKSxDSElMRDpuZXcgUmVnRXhwKCJeOihvbmx5fGZpcnN0fGxhc3R8bnRo
fG50aC1sYXN0KS0oY2hpbGR8b2YtdHlwZSkoPzpcXCgiK0srIiooZXZlbnxvZGR8KChbKy1dfCko
XFxkKilufCkiK0srIiooPzooWystXXwpIitLKyIqKFxcZCspfCkpIitLKyIqXFwpfCkiLCJpIiks
Ym9vbDpuZXcgUmVnRXhwKCJeKD86IitKKyIpJCIsImkiKSxuZWVkc0NvbnRleHQ6bmV3IFJlZ0V4
cCgiXiIrSysiKls+K35dfDooZXZlbnxvZGR8ZXF8Z3R8bHR8bnRofGZpcnN0fGxhc3QpKD86XFwo
IitLKyIqKCg/Oi1cXGQpP1xcZCopIitLKyIqXFwpfCkoPz1bXi1dfCQpIiwiaSIpfSxXPS9eKD86
aW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbikkL2ksWD0vXmhcZCQvaSxZPS9eW157XStce1xz
KlxbbmF0aXZlIFx3LyxaPS9eKD86IyhbXHctXSspfChcdyspfFwuKFtcdy1dKykpJC8sJD0vWyt+
XS8sXz1uZXcgUmVnRXhwKCJcXFxcKFtcXGRhLWZdezEsNn0iK0srIj98KCIrSysiKXwuKSIsImln
IiksYWE9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPSIweCIrYi02NTUzNjtyZXR1cm4gZCE9PWR8fGM/
YjpkPDA/U3RyaW5nLmZyb21DaGFyQ29kZShkKzY1NTM2KTpTdHJpbmcuZnJvbUNoYXJDb2RlKGQ+
PjEwfDU1Mjk2LDEwMjMmZHw1NjMyMCl9LGJhPS8oW1wwLVx4MWZceDdmXXxeLT9cZCl8Xi0kfFte
XDAtXHgxZlx4N2YtXHVGRkZGXHctXS9nLGNhPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGI/IlwwIj09
PWE/Ilx1ZmZmZCI6YS5zbGljZSgwLC0xKSsiXFwiK2EuY2hhckNvZGVBdChhLmxlbmd0aC0xKS50
b1N0cmluZygxNikrIiAiOiJcXCIrYX0sZGE9ZnVuY3Rpb24oKXttKCl9LGVhPXRhKGZ1bmN0aW9u
KGEpe3JldHVybiBhLmRpc2FibGVkPT09ITAmJigiZm9ybSJpbiBhfHwibGFiZWwiaW4gYSl9LHtk
aXI6InBhcmVudE5vZGUiLG5leHQ6ImxlZ2VuZCJ9KTt0cnl7Ry5hcHBseShEPUguY2FsbCh2LmNo
aWxkTm9kZXMpLHYuY2hpbGROb2RlcyksRFt2LmNoaWxkTm9kZXMubGVuZ3RoXS5ub2RlVHlwZX1j
YXRjaChmYSl7Rz17YXBwbHk6RC5sZW5ndGg/ZnVuY3Rpb24oYSxiKXtGLmFwcGx5KGEsSC5jYWxs
KGIpKX06ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmxlbmd0aCxkPTA7d2hpbGUoYVtjKytdPWJbZCsr
XSk7YS5sZW5ndGg9Yy0xfX19ZnVuY3Rpb24gZ2EoYSxiLGQsZSl7dmFyIGYsaCxqLGssbCxvLHIs
cz1iJiZiLm93bmVyRG9jdW1lbnQsdz1iP2Iubm9kZVR5cGU6OTtpZihkPWR8fFtdLCJzdHJpbmci
IT10eXBlb2YgYXx8IWF8fDEhPT13JiY5IT09dyYmMTEhPT13KXJldHVybiBkO2lmKCFlJiYoKGI/
Yi5vd25lckRvY3VtZW50fHxiOnYpIT09biYmbShiKSxiPWJ8fG4scCkpe2lmKDExIT09dyYmKGw9
Wi5leGVjKGEpKSlpZihmPWxbMV0pe2lmKDk9PT13KXtpZighKGo9Yi5nZXRFbGVtZW50QnlJZChm
KSkpcmV0dXJuIGQ7aWYoai5pZD09PWYpcmV0dXJuIGQucHVzaChqKSxkfWVsc2UgaWYocyYmKGo9
cy5nZXRFbGVtZW50QnlJZChmKSkmJnQoYixqKSYmai5pZD09PWYpcmV0dXJuIGQucHVzaChqKSxk
fWVsc2V7aWYobFsyXSlyZXR1cm4gRy5hcHBseShkLGIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYSkp
LGQ7aWYoKGY9bFszXSkmJmMuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSYmYi5nZXRFbGVtZW50c0J5
Q2xhc3NOYW1lKXJldHVybiBHLmFwcGx5KGQsYi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGYpKSxk
fWlmKGMucXNhJiYhQVthKyIgIl0mJighcXx8IXEudGVzdChhKSkpe2lmKDEhPT13KXM9YixyPWE7
ZWxzZSBpZigib2JqZWN0IiE9PWIubm9kZU5hbWUudG9Mb3dlckNhc2UoKSl7KGs9Yi5nZXRBdHRy
aWJ1dGUoImlkIikpP2s9ay5yZXBsYWNlKGJhLGNhKTpiLnNldEF0dHJpYnV0ZSgiaWQiLGs9dSks
bz1nKGEpLGg9by5sZW5ndGg7d2hpbGUoaC0tKW9baF09IiMiK2srIiAiK3NhKG9baF0pO3I9by5q
b2luKCIsIikscz0kLnRlc3QoYSkmJnFhKGIucGFyZW50Tm9kZSl8fGJ9aWYocil0cnl7cmV0dXJu
IEcuYXBwbHkoZCxzLnF1ZXJ5U2VsZWN0b3JBbGwocikpLGR9Y2F0Y2goeCl7fWZpbmFsbHl7az09
PXUmJmIucmVtb3ZlQXR0cmlidXRlKCJpZCIpfX19cmV0dXJuIGkoYS5yZXBsYWNlKFAsIiQxIiks
YixkLGUpfWZ1bmN0aW9uIGhhKCl7dmFyIGE9W107ZnVuY3Rpb24gYihjLGUpe3JldHVybiBhLnB1
c2goYysiICIpPmQuY2FjaGVMZW5ndGgmJmRlbGV0ZSBiW2Euc2hpZnQoKV0sYltjKyIgIl09ZX1y
ZXR1cm4gYn1mdW5jdGlvbiBpYShhKXtyZXR1cm4gYVt1XT0hMCxhfWZ1bmN0aW9uIGphKGEpe3Zh
ciBiPW4uY3JlYXRlRWxlbWVudCgiZmllbGRzZXQiKTt0cnl7cmV0dXJuISFhKGIpfWNhdGNoKGMp
e3JldHVybiExfWZpbmFsbHl7Yi5wYXJlbnROb2RlJiZiLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQo
YiksYj1udWxsfX1mdW5jdGlvbiBrYShhLGIpe3ZhciBjPWEuc3BsaXQoInwiKSxlPWMubGVuZ3Ro
O3doaWxlKGUtLSlkLmF0dHJIYW5kbGVbY1tlXV09Yn1mdW5jdGlvbiBsYShhLGIpe3ZhciBjPWIm
JmEsZD1jJiYxPT09YS5ub2RlVHlwZSYmMT09PWIubm9kZVR5cGUmJmEuc291cmNlSW5kZXgtYi5z
b3VyY2VJbmRleDtpZihkKXJldHVybiBkO2lmKGMpd2hpbGUoYz1jLm5leHRTaWJsaW5nKWlmKGM9
PT1iKXJldHVybi0xO3JldHVybiBhPzE6LTF9ZnVuY3Rpb24gbWEoYSl7cmV0dXJuIGZ1bmN0aW9u
KGIpe3ZhciBjPWIubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4iaW5wdXQiPT09YyYmYi50
eXBlPT09YX19ZnVuY3Rpb24gbmEoYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe3ZhciBjPWIubm9kZU5h
bWUudG9Mb3dlckNhc2UoKTtyZXR1cm4oImlucHV0Ij09PWN8fCJidXR0b24iPT09YykmJmIudHlw
ZT09PWF9fWZ1bmN0aW9uIG9hKGEpe3JldHVybiBmdW5jdGlvbihiKXtyZXR1cm4iZm9ybSJpbiBi
P2IucGFyZW50Tm9kZSYmYi5kaXNhYmxlZD09PSExPyJsYWJlbCJpbiBiPyJsYWJlbCJpbiBiLnBh
cmVudE5vZGU/Yi5wYXJlbnROb2RlLmRpc2FibGVkPT09YTpiLmRpc2FibGVkPT09YTpiLmlzRGlz
YWJsZWQ9PT1hfHxiLmlzRGlzYWJsZWQhPT0hYSYmZWEoYik9PT1hOmIuZGlzYWJsZWQ9PT1hOiJs
YWJlbCJpbiBiJiZiLmRpc2FibGVkPT09YX19ZnVuY3Rpb24gcGEoYSl7cmV0dXJuIGlhKGZ1bmN0
aW9uKGIpe3JldHVybiBiPStiLGlhKGZ1bmN0aW9uKGMsZCl7dmFyIGUsZj1hKFtdLGMubGVuZ3Ro
LGIpLGc9Zi5sZW5ndGg7d2hpbGUoZy0tKWNbZT1mW2ddXSYmKGNbZV09IShkW2VdPWNbZV0pKX0p
fSl9ZnVuY3Rpb24gcWEoYSl7cmV0dXJuIGEmJiJ1bmRlZmluZWQiIT10eXBlb2YgYS5nZXRFbGVt
ZW50c0J5VGFnTmFtZSYmYX1jPWdhLnN1cHBvcnQ9e30sZj1nYS5pc1hNTD1mdW5jdGlvbihhKXt2
YXIgYj1hJiYoYS5vd25lckRvY3VtZW50fHxhKS5kb2N1bWVudEVsZW1lbnQ7cmV0dXJuISFiJiYi
SFRNTCIhPT1iLm5vZGVOYW1lfSxtPWdhLnNldERvY3VtZW50PWZ1bmN0aW9uKGEpe3ZhciBiLGUs
Zz1hP2Eub3duZXJEb2N1bWVudHx8YTp2O3JldHVybiBnIT09biYmOT09PWcubm9kZVR5cGUmJmcu
ZG9jdW1lbnRFbGVtZW50PyhuPWcsbz1uLmRvY3VtZW50RWxlbWVudCxwPSFmKG4pLHYhPT1uJiYo
ZT1uLmRlZmF1bHRWaWV3KSYmZS50b3AhPT1lJiYoZS5hZGRFdmVudExpc3RlbmVyP2UuYWRkRXZl
bnRMaXN0ZW5lcigidW5sb2FkIixkYSwhMSk6ZS5hdHRhY2hFdmVudCYmZS5hdHRhY2hFdmVudCgi
b251bmxvYWQiLGRhKSksYy5hdHRyaWJ1dGVzPWphKGZ1bmN0aW9uKGEpe3JldHVybiBhLmNsYXNz
TmFtZT0iaSIsIWEuZ2V0QXR0cmlidXRlKCJjbGFzc05hbWUiKX0pLGMuZ2V0RWxlbWVudHNCeVRh
Z05hbWU9amEoZnVuY3Rpb24oYSl7cmV0dXJuIGEuYXBwZW5kQ2hpbGQobi5jcmVhdGVDb21tZW50
KCIiKSksIWEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKS5sZW5ndGh9KSxjLmdldEVsZW1lbnRz
QnlDbGFzc05hbWU9WS50ZXN0KG4uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSksYy5nZXRCeUlkPWph
KGZ1bmN0aW9uKGEpe3JldHVybiBvLmFwcGVuZENoaWxkKGEpLmlkPXUsIW4uZ2V0RWxlbWVudHNC
eU5hbWV8fCFuLmdldEVsZW1lbnRzQnlOYW1lKHUpLmxlbmd0aH0pLGMuZ2V0QnlJZD8oZC5maWx0
ZXIuSUQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS5yZXBsYWNlKF8sYWEpO3JldHVybiBmdW5jdGlvbihh
KXtyZXR1cm4gYS5nZXRBdHRyaWJ1dGUoImlkIik9PT1ifX0sZC5maW5kLklEPWZ1bmN0aW9uKGEs
Yil7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBiLmdldEVsZW1lbnRCeUlkJiZwKXt2YXIgYz1iLmdl
dEVsZW1lbnRCeUlkKGEpO3JldHVybiBjP1tjXTpbXX19KTooZC5maWx0ZXIuSUQ9ZnVuY3Rpb24o
YSl7dmFyIGI9YS5yZXBsYWNlKF8sYWEpO3JldHVybiBmdW5jdGlvbihhKXt2YXIgYz0idW5kZWZp
bmVkIiE9dHlwZW9mIGEuZ2V0QXR0cmlidXRlTm9kZSYmYS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIp
O3JldHVybiBjJiZjLnZhbHVlPT09Yn19LGQuZmluZC5JRD1mdW5jdGlvbihhLGIpe2lmKCJ1bmRl
ZmluZWQiIT10eXBlb2YgYi5nZXRFbGVtZW50QnlJZCYmcCl7dmFyIGMsZCxlLGY9Yi5nZXRFbGVt
ZW50QnlJZChhKTtpZihmKXtpZihjPWYuZ2V0QXR0cmlidXRlTm9kZSgiaWQiKSxjJiZjLnZhbHVl
PT09YSlyZXR1cm5bZl07ZT1iLmdldEVsZW1lbnRzQnlOYW1lKGEpLGQ9MDt3aGlsZShmPWVbZCsr
XSlpZihjPWYuZ2V0QXR0cmlidXRlTm9kZSgiaWQiKSxjJiZjLnZhbHVlPT09YSlyZXR1cm5bZl19
cmV0dXJuW119fSksZC5maW5kLlRBRz1jLmdldEVsZW1lbnRzQnlUYWdOYW1lP2Z1bmN0aW9uKGEs
Yil7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBiLmdldEVsZW1lbnRzQnlUYWdOYW1lP2IuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoYSk6Yy5xc2E/Yi5xdWVyeVNlbGVjdG9yQWxsKGEpOnZvaWQgMH06
ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPVtdLGU9MCxmPWIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYSk7
aWYoIioiPT09YSl7d2hpbGUoYz1mW2UrK10pMT09PWMubm9kZVR5cGUmJmQucHVzaChjKTtyZXR1
cm4gZH1yZXR1cm4gZn0sZC5maW5kLkNMQVNTPWMuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSYmZnVu
Y3Rpb24oYSxiKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGIuZ2V0RWxlbWVudHNCeUNsYXNzTmFt
ZSYmcClyZXR1cm4gYi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGEpfSxyPVtdLHE9W10sKGMucXNh
PVkudGVzdChuLnF1ZXJ5U2VsZWN0b3JBbGwpKSYmKGphKGZ1bmN0aW9uKGEpe28uYXBwZW5kQ2hp
bGQoYSkuaW5uZXJIVE1MPSI8YSBpZD0nIit1KyInPjwvYT48c2VsZWN0IGlkPSciK3UrIi1cclxc
JyBtc2FsbG93Y2FwdHVyZT0nJz48b3B0aW9uIHNlbGVjdGVkPScnPjwvb3B0aW9uPjwvc2VsZWN0
PiIsYS5xdWVyeVNlbGVjdG9yQWxsKCJbbXNhbGxvd2NhcHR1cmVePScnXSIpLmxlbmd0aCYmcS5w
dXNoKCJbKl4kXT0iK0srIiooPzonJ3xcIlwiKSIpLGEucXVlcnlTZWxlY3RvckFsbCgiW3NlbGVj
dGVkXSIpLmxlbmd0aHx8cS5wdXNoKCJcXFsiK0srIiooPzp2YWx1ZXwiK0orIikiKSxhLnF1ZXJ5
U2VsZWN0b3JBbGwoIltpZH49Iit1KyItXSIpLmxlbmd0aHx8cS5wdXNoKCJ+PSIpLGEucXVlcnlT
ZWxlY3RvckFsbCgiOmNoZWNrZWQiKS5sZW5ndGh8fHEucHVzaCgiOmNoZWNrZWQiKSxhLnF1ZXJ5
U2VsZWN0b3JBbGwoImEjIit1KyIrKiIpLmxlbmd0aHx8cS5wdXNoKCIuIy4rWyt+XSIpfSksamEo
ZnVuY3Rpb24oYSl7YS5pbm5lckhUTUw9IjxhIGhyZWY9JycgZGlzYWJsZWQ9J2Rpc2FibGVkJz48
L2E+PHNlbGVjdCBkaXNhYmxlZD0nZGlzYWJsZWQnPjxvcHRpb24vPjwvc2VsZWN0PiI7dmFyIGI9
bi5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO2Iuc2V0QXR0cmlidXRlKCJ0eXBlIiwiaGlkZGVuIiks
YS5hcHBlbmRDaGlsZChiKS5zZXRBdHRyaWJ1dGUoIm5hbWUiLCJEIiksYS5xdWVyeVNlbGVjdG9y
QWxsKCJbbmFtZT1kXSIpLmxlbmd0aCYmcS5wdXNoKCJuYW1lIitLKyIqWypeJHwhfl0/PSIpLDIh
PT1hLnF1ZXJ5U2VsZWN0b3JBbGwoIjplbmFibGVkIikubGVuZ3RoJiZxLnB1c2goIjplbmFibGVk
IiwiOmRpc2FibGVkIiksby5hcHBlbmRDaGlsZChhKS5kaXNhYmxlZD0hMCwyIT09YS5xdWVyeVNl
bGVjdG9yQWxsKCI6ZGlzYWJsZWQiKS5sZW5ndGgmJnEucHVzaCgiOmVuYWJsZWQiLCI6ZGlzYWJs
ZWQiKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoIiosOngiKSxxLnB1c2goIiwuKjoiKX0pKSwoYy5tYXRj
aGVzU2VsZWN0b3I9WS50ZXN0KHM9by5tYXRjaGVzfHxvLndlYmtpdE1hdGNoZXNTZWxlY3Rvcnx8
by5tb3pNYXRjaGVzU2VsZWN0b3J8fG8ub01hdGNoZXNTZWxlY3Rvcnx8by5tc01hdGNoZXNTZWxl
Y3RvcikpJiZqYShmdW5jdGlvbihhKXtjLmRpc2Nvbm5lY3RlZE1hdGNoPXMuY2FsbChhLCIqIiks
cy5jYWxsKGEsIltzIT0nJ106eCIpLHIucHVzaCgiIT0iLE4pfSkscT1xLmxlbmd0aCYmbmV3IFJl
Z0V4cChxLmpvaW4oInwiKSkscj1yLmxlbmd0aCYmbmV3IFJlZ0V4cChyLmpvaW4oInwiKSksYj1Z
LnRlc3Qoby5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiksdD1ifHxZLnRlc3Qoby5jb250YWlucyk/
ZnVuY3Rpb24oYSxiKXt2YXIgYz05PT09YS5ub2RlVHlwZT9hLmRvY3VtZW50RWxlbWVudDphLGQ9
YiYmYi5wYXJlbnROb2RlO3JldHVybiBhPT09ZHx8ISghZHx8MSE9PWQubm9kZVR5cGV8fCEoYy5j
b250YWlucz9jLmNvbnRhaW5zKGQpOmEuY29tcGFyZURvY3VtZW50UG9zaXRpb24mJjE2JmEuY29t
cGFyZURvY3VtZW50UG9zaXRpb24oZCkpKX06ZnVuY3Rpb24oYSxiKXtpZihiKXdoaWxlKGI9Yi5w
YXJlbnROb2RlKWlmKGI9PT1hKXJldHVybiEwO3JldHVybiExfSxCPWI/ZnVuY3Rpb24oYSxiKXtp
ZihhPT09YilyZXR1cm4gbD0hMCwwO3ZhciBkPSFhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uLSFi
LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uO3JldHVybiBkP2Q6KGQ9KGEub3duZXJEb2N1bWVudHx8
YSk9PT0oYi5vd25lckRvY3VtZW50fHxiKT9hLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGIpOjEs
MSZkfHwhYy5zb3J0RGV0YWNoZWQmJmIuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYSk9PT1kP2E9
PT1ufHxhLm93bmVyRG9jdW1lbnQ9PT12JiZ0KHYsYSk/LTE6Yj09PW58fGIub3duZXJEb2N1bWVu
dD09PXYmJnQodixiKT8xOms/SShrLGEpLUkoayxiKTowOjQmZD8tMToxKX06ZnVuY3Rpb24oYSxi
KXtpZihhPT09YilyZXR1cm4gbD0hMCwwO3ZhciBjLGQ9MCxlPWEucGFyZW50Tm9kZSxmPWIucGFy
ZW50Tm9kZSxnPVthXSxoPVtiXTtpZighZXx8IWYpcmV0dXJuIGE9PT1uPy0xOmI9PT1uPzE6ZT8t
MTpmPzE6az9JKGssYSktSShrLGIpOjA7aWYoZT09PWYpcmV0dXJuIGxhKGEsYik7Yz1hO3doaWxl
KGM9Yy5wYXJlbnROb2RlKWcudW5zaGlmdChjKTtjPWI7d2hpbGUoYz1jLnBhcmVudE5vZGUpaC51
bnNoaWZ0KGMpO3doaWxlKGdbZF09PT1oW2RdKWQrKztyZXR1cm4gZD9sYShnW2RdLGhbZF0pOmdb
ZF09PT12Py0xOmhbZF09PT12PzE6MH0sbik6bn0sZ2EubWF0Y2hlcz1mdW5jdGlvbihhLGIpe3Jl
dHVybiBnYShhLG51bGwsbnVsbCxiKX0sZ2EubWF0Y2hlc1NlbGVjdG9yPWZ1bmN0aW9uKGEsYil7
aWYoKGEub3duZXJEb2N1bWVudHx8YSkhPT1uJiZtKGEpLGI9Yi5yZXBsYWNlKFMsIj0nJDEnXSIp
LGMubWF0Y2hlc1NlbGVjdG9yJiZwJiYhQVtiKyIgIl0mJighcnx8IXIudGVzdChiKSkmJighcXx8
IXEudGVzdChiKSkpdHJ5e3ZhciBkPXMuY2FsbChhLGIpO2lmKGR8fGMuZGlzY29ubmVjdGVkTWF0
Y2h8fGEuZG9jdW1lbnQmJjExIT09YS5kb2N1bWVudC5ub2RlVHlwZSlyZXR1cm4gZH1jYXRjaChl
KXt9cmV0dXJuIGdhKGIsbixudWxsLFthXSkubGVuZ3RoPjB9LGdhLmNvbnRhaW5zPWZ1bmN0aW9u
KGEsYil7cmV0dXJuKGEub3duZXJEb2N1bWVudHx8YSkhPT1uJiZtKGEpLHQoYSxiKX0sZ2EuYXR0
cj1mdW5jdGlvbihhLGIpeyhhLm93bmVyRG9jdW1lbnR8fGEpIT09biYmbShhKTt2YXIgZT1kLmF0
dHJIYW5kbGVbYi50b0xvd2VyQ2FzZSgpXSxmPWUmJkMuY2FsbChkLmF0dHJIYW5kbGUsYi50b0xv
d2VyQ2FzZSgpKT9lKGEsYiwhcCk6dm9pZCAwO3JldHVybiB2b2lkIDAhPT1mP2Y6Yy5hdHRyaWJ1
dGVzfHwhcD9hLmdldEF0dHJpYnV0ZShiKTooZj1hLmdldEF0dHJpYnV0ZU5vZGUoYikpJiZmLnNw
ZWNpZmllZD9mLnZhbHVlOm51bGx9LGdhLmVzY2FwZT1mdW5jdGlvbihhKXtyZXR1cm4oYSsiIiku
cmVwbGFjZShiYSxjYSl9LGdhLmVycm9yPWZ1bmN0aW9uKGEpe3Rocm93IG5ldyBFcnJvcigiU3lu
dGF4IGVycm9yLCB1bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogIithKX0sZ2EudW5pcXVlU29ydD1m
dW5jdGlvbihhKXt2YXIgYixkPVtdLGU9MCxmPTA7aWYobD0hYy5kZXRlY3REdXBsaWNhdGVzLGs9
IWMuc29ydFN0YWJsZSYmYS5zbGljZSgwKSxhLnNvcnQoQiksbCl7d2hpbGUoYj1hW2YrK10pYj09
PWFbZl0mJihlPWQucHVzaChmKSk7d2hpbGUoZS0tKWEuc3BsaWNlKGRbZV0sMSl9cmV0dXJuIGs9
bnVsbCxhfSxlPWdhLmdldFRleHQ9ZnVuY3Rpb24oYSl7dmFyIGIsYz0iIixkPTAsZj1hLm5vZGVU
eXBlO2lmKGYpe2lmKDE9PT1mfHw5PT09Znx8MTE9PT1mKXtpZigic3RyaW5nIj09dHlwZW9mIGEu
dGV4dENvbnRlbnQpcmV0dXJuIGEudGV4dENvbnRlbnQ7Zm9yKGE9YS5maXJzdENoaWxkO2E7YT1h
Lm5leHRTaWJsaW5nKWMrPWUoYSl9ZWxzZSBpZigzPT09Znx8ND09PWYpcmV0dXJuIGEubm9kZVZh
bHVlfWVsc2Ugd2hpbGUoYj1hW2QrK10pYys9ZShiKTtyZXR1cm4gY30sZD1nYS5zZWxlY3RvcnM9
e2NhY2hlTGVuZ3RoOjUwLGNyZWF0ZVBzZXVkbzppYSxtYXRjaDpWLGF0dHJIYW5kbGU6e30sZmlu
ZDp7fSxyZWxhdGl2ZTp7Ij4iOntkaXI6InBhcmVudE5vZGUiLGZpcnN0OiEwfSwiICI6e2Rpcjoi
cGFyZW50Tm9kZSJ9LCIrIjp7ZGlyOiJwcmV2aW91c1NpYmxpbmciLGZpcnN0OiEwfSwifiI6e2Rp
cjoicHJldmlvdXNTaWJsaW5nIn19LHByZUZpbHRlcjp7QVRUUjpmdW5jdGlvbihhKXtyZXR1cm4g
YVsxXT1hWzFdLnJlcGxhY2UoXyxhYSksYVszXT0oYVszXXx8YVs0XXx8YVs1XXx8IiIpLnJlcGxh
Y2UoXyxhYSksIn49Ij09PWFbMl0mJihhWzNdPSIgIithWzNdKyIgIiksYS5zbGljZSgwLDQpfSxD
SElMRDpmdW5jdGlvbihhKXtyZXR1cm4gYVsxXT1hWzFdLnRvTG93ZXJDYXNlKCksIm50aCI9PT1h
WzFdLnNsaWNlKDAsMyk/KGFbM118fGdhLmVycm9yKGFbMF0pLGFbNF09KyhhWzRdP2FbNV0rKGFb
Nl18fDEpOjIqKCJldmVuIj09PWFbM118fCJvZGQiPT09YVszXSkpLGFbNV09KyhhWzddK2FbOF18
fCJvZGQiPT09YVszXSkpOmFbM10mJmdhLmVycm9yKGFbMF0pLGF9LFBTRVVETzpmdW5jdGlvbihh
KXt2YXIgYixjPSFhWzZdJiZhWzJdO3JldHVybiBWLkNISUxELnRlc3QoYVswXSk/bnVsbDooYVsz
XT9hWzJdPWFbNF18fGFbNV18fCIiOmMmJlQudGVzdChjKSYmKGI9ZyhjLCEwKSkmJihiPWMuaW5k
ZXhPZigiKSIsYy5sZW5ndGgtYiktYy5sZW5ndGgpJiYoYVswXT1hWzBdLnNsaWNlKDAsYiksYVsy
XT1jLnNsaWNlKDAsYikpLGEuc2xpY2UoMCwzKSl9fSxmaWx0ZXI6e1RBRzpmdW5jdGlvbihhKXt2
YXIgYj1hLnJlcGxhY2UoXyxhYSkudG9Mb3dlckNhc2UoKTtyZXR1cm4iKiI9PT1hP2Z1bmN0aW9u
KCl7cmV0dXJuITB9OmZ1bmN0aW9uKGEpe3JldHVybiBhLm5vZGVOYW1lJiZhLm5vZGVOYW1lLnRv
TG93ZXJDYXNlKCk9PT1ifX0sQ0xBU1M6ZnVuY3Rpb24oYSl7dmFyIGI9eVthKyIgIl07cmV0dXJu
IGJ8fChiPW5ldyBSZWdFeHAoIihefCIrSysiKSIrYSsiKCIrSysifCQpIikpJiZ5KGEsZnVuY3Rp
b24oYSl7cmV0dXJuIGIudGVzdCgic3RyaW5nIj09dHlwZW9mIGEuY2xhc3NOYW1lJiZhLmNsYXNz
TmFtZXx8InVuZGVmaW5lZCIhPXR5cGVvZiBhLmdldEF0dHJpYnV0ZSYmYS5nZXRBdHRyaWJ1dGUo
ImNsYXNzIil8fCIiKX0pfSxBVFRSOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gZnVuY3Rpb24oZCl7
dmFyIGU9Z2EuYXR0cihkLGEpO3JldHVybiBudWxsPT1lPyIhPSI9PT1iOiFifHwoZSs9IiIsIj0i
PT09Yj9lPT09YzoiIT0iPT09Yj9lIT09YzoiXj0iPT09Yj9jJiYwPT09ZS5pbmRleE9mKGMpOiIq
PSI9PT1iP2MmJmUuaW5kZXhPZihjKT4tMToiJD0iPT09Yj9jJiZlLnNsaWNlKC1jLmxlbmd0aCk9
PT1jOiJ+PSI9PT1iPygiICIrZS5yZXBsYWNlKE8sIiAiKSsiICIpLmluZGV4T2YoYyk+LTE6Inw9
Ij09PWImJihlPT09Y3x8ZS5zbGljZSgwLGMubGVuZ3RoKzEpPT09YysiLSIpKX19LENISUxEOmZ1
bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9Im50aCIhPT1hLnNsaWNlKDAsMyksZz0ibGFzdCIhPT1h
LnNsaWNlKC00KSxoPSJvZi10eXBlIj09PWI7cmV0dXJuIDE9PT1kJiYwPT09ZT9mdW5jdGlvbihh
KXtyZXR1cm4hIWEucGFyZW50Tm9kZX06ZnVuY3Rpb24oYixjLGkpe3ZhciBqLGssbCxtLG4sbyxw
PWYhPT1nPyJuZXh0U2libGluZyI6InByZXZpb3VzU2libGluZyIscT1iLnBhcmVudE5vZGUscj1o
JiZiLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkscz0haSYmIWgsdD0hMTtpZihxKXtpZihmKXt3aGls
ZShwKXttPWI7d2hpbGUobT1tW3BdKWlmKGg/bS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09cjox
PT09bS5ub2RlVHlwZSlyZXR1cm4hMTtvPXA9Im9ubHkiPT09YSYmIW8mJiJuZXh0U2libGluZyJ9
cmV0dXJuITB9aWYobz1bZz9xLmZpcnN0Q2hpbGQ6cS5sYXN0Q2hpbGRdLGcmJnMpe209cSxsPW1b
dV18fChtW3VdPXt9KSxrPWxbbS51bmlxdWVJRF18fChsW20udW5pcXVlSURdPXt9KSxqPWtbYV18
fFtdLG49alswXT09PXcmJmpbMV0sdD1uJiZqWzJdLG09biYmcS5jaGlsZE5vZGVzW25dO3doaWxl
KG09KytuJiZtJiZtW3BdfHwodD1uPTApfHxvLnBvcCgpKWlmKDE9PT1tLm5vZGVUeXBlJiYrK3Qm
Jm09PT1iKXtrW2FdPVt3LG4sdF07YnJlYWt9fWVsc2UgaWYocyYmKG09YixsPW1bdV18fChtW3Vd
PXt9KSxrPWxbbS51bmlxdWVJRF18fChsW20udW5pcXVlSURdPXt9KSxqPWtbYV18fFtdLG49alsw
XT09PXcmJmpbMV0sdD1uKSx0PT09ITEpd2hpbGUobT0rK24mJm0mJm1bcF18fCh0PW49MCl8fG8u
cG9wKCkpaWYoKGg/bS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09cjoxPT09bS5ub2RlVHlwZSkm
JisrdCYmKHMmJihsPW1bdV18fChtW3VdPXt9KSxrPWxbbS51bmlxdWVJRF18fChsW20udW5pcXVl
SURdPXt9KSxrW2FdPVt3LHRdKSxtPT09YikpYnJlYWs7cmV0dXJuIHQtPWUsdD09PWR8fHQlZD09
PTAmJnQvZD49MH19fSxQU0VVRE86ZnVuY3Rpb24oYSxiKXt2YXIgYyxlPWQucHNldWRvc1thXXx8
ZC5zZXRGaWx0ZXJzW2EudG9Mb3dlckNhc2UoKV18fGdhLmVycm9yKCJ1bnN1cHBvcnRlZCBwc2V1
ZG86ICIrYSk7cmV0dXJuIGVbdV0/ZShiKTplLmxlbmd0aD4xPyhjPVthLGEsIiIsYl0sZC5zZXRG
aWx0ZXJzLmhhc093blByb3BlcnR5KGEudG9Mb3dlckNhc2UoKSk/aWEoZnVuY3Rpb24oYSxjKXt2
YXIgZCxmPWUoYSxiKSxnPWYubGVuZ3RoO3doaWxlKGctLSlkPUkoYSxmW2ddKSxhW2RdPSEoY1tk
XT1mW2ddKX0pOmZ1bmN0aW9uKGEpe3JldHVybiBlKGEsMCxjKX0pOmV9fSxwc2V1ZG9zOntub3Q6
aWEoZnVuY3Rpb24oYSl7dmFyIGI9W10sYz1bXSxkPWgoYS5yZXBsYWNlKFAsIiQxIikpO3JldHVy
biBkW3VdP2lhKGZ1bmN0aW9uKGEsYixjLGUpe3ZhciBmLGc9ZChhLG51bGwsZSxbXSksaD1hLmxl
bmd0aDt3aGlsZShoLS0pKGY9Z1toXSkmJihhW2hdPSEoYltoXT1mKSl9KTpmdW5jdGlvbihhLGUs
Zil7cmV0dXJuIGJbMF09YSxkKGIsbnVsbCxmLGMpLGJbMF09bnVsbCwhYy5wb3AoKX19KSxoYXM6
aWEoZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe3JldHVybiBnYShhLGIpLmxlbmd0aD4w
fX0pLGNvbnRhaW5zOmlhKGZ1bmN0aW9uKGEpe3JldHVybiBhPWEucmVwbGFjZShfLGFhKSxmdW5j
dGlvbihiKXtyZXR1cm4oYi50ZXh0Q29udGVudHx8Yi5pbm5lclRleHR8fGUoYikpLmluZGV4T2Yo
YSk+LTF9fSksbGFuZzppYShmdW5jdGlvbihhKXtyZXR1cm4gVS50ZXN0KGF8fCIiKXx8Z2EuZXJy
b3IoInVuc3VwcG9ydGVkIGxhbmc6ICIrYSksYT1hLnJlcGxhY2UoXyxhYSkudG9Mb3dlckNhc2Uo
KSxmdW5jdGlvbihiKXt2YXIgYztkbyBpZihjPXA/Yi5sYW5nOmIuZ2V0QXR0cmlidXRlKCJ4bWw6
bGFuZyIpfHxiLmdldEF0dHJpYnV0ZSgibGFuZyIpKXJldHVybiBjPWMudG9Mb3dlckNhc2UoKSxj
PT09YXx8MD09PWMuaW5kZXhPZihhKyItIik7d2hpbGUoKGI9Yi5wYXJlbnROb2RlKSYmMT09PWIu
bm9kZVR5cGUpO3JldHVybiExfX0pLHRhcmdldDpmdW5jdGlvbihiKXt2YXIgYz1hLmxvY2F0aW9u
JiZhLmxvY2F0aW9uLmhhc2g7cmV0dXJuIGMmJmMuc2xpY2UoMSk9PT1iLmlkfSxyb290OmZ1bmN0
aW9uKGEpe3JldHVybiBhPT09b30sZm9jdXM6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1uLmFjdGl2
ZUVsZW1lbnQmJighbi5oYXNGb2N1c3x8bi5oYXNGb2N1cygpKSYmISEoYS50eXBlfHxhLmhyZWZ8
fH5hLnRhYkluZGV4KX0sZW5hYmxlZDpvYSghMSksZGlzYWJsZWQ6b2EoITApLGNoZWNrZWQ6ZnVu
Y3Rpb24oYSl7dmFyIGI9YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiJpbnB1dCI9PT1i
JiYhIWEuY2hlY2tlZHx8Im9wdGlvbiI9PT1iJiYhIWEuc2VsZWN0ZWR9LHNlbGVjdGVkOmZ1bmN0
aW9uKGEpe3JldHVybiBhLnBhcmVudE5vZGUmJmEucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4LGEu
c2VsZWN0ZWQ9PT0hMH0sZW1wdHk6ZnVuY3Rpb24oYSl7Zm9yKGE9YS5maXJzdENoaWxkO2E7YT1h
Lm5leHRTaWJsaW5nKWlmKGEubm9kZVR5cGU8NilyZXR1cm4hMTtyZXR1cm4hMH0scGFyZW50OmZ1
bmN0aW9uKGEpe3JldHVybiFkLnBzZXVkb3MuZW1wdHkoYSl9LGhlYWRlcjpmdW5jdGlvbihhKXty
ZXR1cm4gWC50ZXN0KGEubm9kZU5hbWUpfSxpbnB1dDpmdW5jdGlvbihhKXtyZXR1cm4gVy50ZXN0
KGEubm9kZU5hbWUpfSxidXR0b246ZnVuY3Rpb24oYSl7dmFyIGI9YS5ub2RlTmFtZS50b0xvd2Vy
Q2FzZSgpO3JldHVybiJpbnB1dCI9PT1iJiYiYnV0dG9uIj09PWEudHlwZXx8ImJ1dHRvbiI9PT1i
fSx0ZXh0OmZ1bmN0aW9uKGEpe3ZhciBiO3JldHVybiJpbnB1dCI9PT1hLm5vZGVOYW1lLnRvTG93
ZXJDYXNlKCkmJiJ0ZXh0Ij09PWEudHlwZSYmKG51bGw9PShiPWEuZ2V0QXR0cmlidXRlKCJ0eXBl
IikpfHwidGV4dCI9PT1iLnRvTG93ZXJDYXNlKCkpfSxmaXJzdDpwYShmdW5jdGlvbigpe3JldHVy
blswXX0pLGxhc3Q6cGEoZnVuY3Rpb24oYSxiKXtyZXR1cm5bYi0xXX0pLGVxOnBhKGZ1bmN0aW9u
KGEsYixjKXtyZXR1cm5bYzwwP2MrYjpjXX0pLGV2ZW46cGEoZnVuY3Rpb24oYSxiKXtmb3IodmFy
IGM9MDtjPGI7Yys9MilhLnB1c2goYyk7cmV0dXJuIGF9KSxvZGQ6cGEoZnVuY3Rpb24oYSxiKXtm
b3IodmFyIGM9MTtjPGI7Yys9MilhLnB1c2goYyk7cmV0dXJuIGF9KSxsdDpwYShmdW5jdGlvbihh
LGIsYyl7Zm9yKHZhciBkPWM8MD9jK2I6YzstLWQ+PTA7KWEucHVzaChkKTtyZXR1cm4gYX0pLGd0
OnBhKGZ1bmN0aW9uKGEsYixjKXtmb3IodmFyIGQ9YzwwP2MrYjpjOysrZDxiOylhLnB1c2goZCk7
cmV0dXJuIGF9KX19LGQucHNldWRvcy5udGg9ZC5wc2V1ZG9zLmVxO2ZvcihiIGlue3JhZGlvOiEw
LGNoZWNrYm94OiEwLGZpbGU6ITAscGFzc3dvcmQ6ITAsaW1hZ2U6ITB9KWQucHNldWRvc1tiXT1t
YShiKTtmb3IoYiBpbntzdWJtaXQ6ITAscmVzZXQ6ITB9KWQucHNldWRvc1tiXT1uYShiKTtmdW5j
dGlvbiByYSgpe31yYS5wcm90b3R5cGU9ZC5maWx0ZXJzPWQucHNldWRvcyxkLnNldEZpbHRlcnM9
bmV3IHJhLGc9Z2EudG9rZW5pemU9ZnVuY3Rpb24oYSxiKXt2YXIgYyxlLGYsZyxoLGksaixrPXpb
YSsiICJdO2lmKGspcmV0dXJuIGI/MDprLnNsaWNlKDApO2g9YSxpPVtdLGo9ZC5wcmVGaWx0ZXI7
d2hpbGUoaCl7YyYmIShlPVEuZXhlYyhoKSl8fChlJiYoaD1oLnNsaWNlKGVbMF0ubGVuZ3RoKXx8
aCksaS5wdXNoKGY9W10pKSxjPSExLChlPVIuZXhlYyhoKSkmJihjPWUuc2hpZnQoKSxmLnB1c2go
e3ZhbHVlOmMsdHlwZTplWzBdLnJlcGxhY2UoUCwiICIpfSksaD1oLnNsaWNlKGMubGVuZ3RoKSk7
Zm9yKGcgaW4gZC5maWx0ZXIpIShlPVZbZ10uZXhlYyhoKSl8fGpbZ10mJiEoZT1qW2ddKGUpKXx8
KGM9ZS5zaGlmdCgpLGYucHVzaCh7dmFsdWU6Yyx0eXBlOmcsbWF0Y2hlczplfSksaD1oLnNsaWNl
KGMubGVuZ3RoKSk7aWYoIWMpYnJlYWt9cmV0dXJuIGI/aC5sZW5ndGg6aD9nYS5lcnJvcihhKTp6
KGEsaSkuc2xpY2UoMCl9O2Z1bmN0aW9uIHNhKGEpe2Zvcih2YXIgYj0wLGM9YS5sZW5ndGgsZD0i
IjtiPGM7YisrKWQrPWFbYl0udmFsdWU7cmV0dXJuIGR9ZnVuY3Rpb24gdGEoYSxiLGMpe3ZhciBk
PWIuZGlyLGU9Yi5uZXh0LGY9ZXx8ZCxnPWMmJiJwYXJlbnROb2RlIj09PWYsaD14Kys7cmV0dXJu
IGIuZmlyc3Q/ZnVuY3Rpb24oYixjLGUpe3doaWxlKGI9YltkXSlpZigxPT09Yi5ub2RlVHlwZXx8
ZylyZXR1cm4gYShiLGMsZSk7cmV0dXJuITF9OmZ1bmN0aW9uKGIsYyxpKXt2YXIgaixrLGwsbT1b
dyxoXTtpZihpKXt3aGlsZShiPWJbZF0paWYoKDE9PT1iLm5vZGVUeXBlfHxnKSYmYShiLGMsaSkp
cmV0dXJuITB9ZWxzZSB3aGlsZShiPWJbZF0paWYoMT09PWIubm9kZVR5cGV8fGcpaWYobD1iW3Vd
fHwoYlt1XT17fSksaz1sW2IudW5pcXVlSURdfHwobFtiLnVuaXF1ZUlEXT17fSksZSYmZT09PWIu
bm9kZU5hbWUudG9Mb3dlckNhc2UoKSliPWJbZF18fGI7ZWxzZXtpZigoaj1rW2ZdKSYmalswXT09
PXcmJmpbMV09PT1oKXJldHVybiBtWzJdPWpbMl07aWYoa1tmXT1tLG1bMl09YShiLGMsaSkpcmV0
dXJuITB9cmV0dXJuITF9fWZ1bmN0aW9uIHVhKGEpe3JldHVybiBhLmxlbmd0aD4xP2Z1bmN0aW9u
KGIsYyxkKXt2YXIgZT1hLmxlbmd0aDt3aGlsZShlLS0paWYoIWFbZV0oYixjLGQpKXJldHVybiEx
O3JldHVybiEwfTphWzBdfWZ1bmN0aW9uIHZhKGEsYixjKXtmb3IodmFyIGQ9MCxlPWIubGVuZ3Ro
O2Q8ZTtkKyspZ2EoYSxiW2RdLGMpO3JldHVybiBjfWZ1bmN0aW9uIHdhKGEsYixjLGQsZSl7Zm9y
KHZhciBmLGc9W10saD0wLGk9YS5sZW5ndGgsaj1udWxsIT1iO2g8aTtoKyspKGY9YVtoXSkmJihj
JiYhYyhmLGQsZSl8fChnLnB1c2goZiksaiYmYi5wdXNoKGgpKSk7cmV0dXJuIGd9ZnVuY3Rpb24g
eGEoYSxiLGMsZCxlLGYpe3JldHVybiBkJiYhZFt1XSYmKGQ9eGEoZCkpLGUmJiFlW3VdJiYoZT14
YShlLGYpKSxpYShmdW5jdGlvbihmLGcsaCxpKXt2YXIgaixrLGwsbT1bXSxuPVtdLG89Zy5sZW5n
dGgscD1mfHx2YShifHwiKiIsaC5ub2RlVHlwZT9baF06aCxbXSkscT0hYXx8IWYmJmI/cDp3YShw
LG0sYSxoLGkpLHI9Yz9lfHwoZj9hOm98fGQpP1tdOmc6cTtpZihjJiZjKHEscixoLGkpLGQpe2o9
d2EocixuKSxkKGosW10saCxpKSxrPWoubGVuZ3RoO3doaWxlKGstLSkobD1qW2tdKSYmKHJbbltr
XV09IShxW25ba11dPWwpKX1pZihmKXtpZihlfHxhKXtpZihlKXtqPVtdLGs9ci5sZW5ndGg7d2hp
bGUoay0tKShsPXJba10pJiZqLnB1c2gocVtrXT1sKTtlKG51bGwscj1bXSxqLGkpfWs9ci5sZW5n
dGg7d2hpbGUoay0tKShsPXJba10pJiYoaj1lP0koZixsKTptW2tdKT4tMSYmKGZbal09IShnW2pd
PWwpKX19ZWxzZSByPXdhKHI9PT1nP3Iuc3BsaWNlKG8sci5sZW5ndGgpOnIpLGU/ZShudWxsLGcs
cixpKTpHLmFwcGx5KGcscil9KX1mdW5jdGlvbiB5YShhKXtmb3IodmFyIGIsYyxlLGY9YS5sZW5n
dGgsZz1kLnJlbGF0aXZlW2FbMF0udHlwZV0saD1nfHxkLnJlbGF0aXZlWyIgIl0saT1nPzE6MCxr
PXRhKGZ1bmN0aW9uKGEpe3JldHVybiBhPT09Yn0saCwhMCksbD10YShmdW5jdGlvbihhKXtyZXR1
cm4gSShiLGEpPi0xfSxoLCEwKSxtPVtmdW5jdGlvbihhLGMsZCl7dmFyIGU9IWcmJihkfHxjIT09
ail8fCgoYj1jKS5ub2RlVHlwZT9rKGEsYyxkKTpsKGEsYyxkKSk7cmV0dXJuIGI9bnVsbCxlfV07
aTxmO2krKylpZihjPWQucmVsYXRpdmVbYVtpXS50eXBlXSltPVt0YSh1YShtKSxjKV07ZWxzZXtp
ZihjPWQuZmlsdGVyW2FbaV0udHlwZV0uYXBwbHkobnVsbCxhW2ldLm1hdGNoZXMpLGNbdV0pe2Zv
cihlPSsraTtlPGY7ZSsrKWlmKGQucmVsYXRpdmVbYVtlXS50eXBlXSlicmVhaztyZXR1cm4geGEo
aT4xJiZ1YShtKSxpPjEmJnNhKGEuc2xpY2UoMCxpLTEpLmNvbmNhdCh7dmFsdWU6IiAiPT09YVtp
LTJdLnR5cGU/IioiOiIifSkpLnJlcGxhY2UoUCwiJDEiKSxjLGk8ZSYmeWEoYS5zbGljZShpLGUp
KSxlPGYmJnlhKGE9YS5zbGljZShlKSksZTxmJiZzYShhKSl9bS5wdXNoKGMpfXJldHVybiB1YSht
KX1mdW5jdGlvbiB6YShhLGIpe3ZhciBjPWIubGVuZ3RoPjAsZT1hLmxlbmd0aD4wLGY9ZnVuY3Rp
b24oZixnLGgsaSxrKXt2YXIgbCxvLHEscj0wLHM9IjAiLHQ9ZiYmW10sdT1bXSx2PWoseD1mfHxl
JiZkLmZpbmQuVEFHKCIqIixrKSx5PXcrPW51bGw9PXY/MTpNYXRoLnJhbmRvbSgpfHwuMSx6PXgu
bGVuZ3RoO2ZvcihrJiYoaj1nPT09bnx8Z3x8ayk7cyE9PXomJm51bGwhPShsPXhbc10pO3MrKyl7
aWYoZSYmbCl7bz0wLGd8fGwub3duZXJEb2N1bWVudD09PW58fChtKGwpLGg9IXApO3doaWxlKHE9
YVtvKytdKWlmKHEobCxnfHxuLGgpKXtpLnB1c2gobCk7YnJlYWt9ayYmKHc9eSl9YyYmKChsPSFx
JiZsKSYmci0tLGYmJnQucHVzaChsKSl9aWYocis9cyxjJiZzIT09cil7bz0wO3doaWxlKHE9Yltv
KytdKXEodCx1LGcsaCk7aWYoZil7aWYocj4wKXdoaWxlKHMtLSl0W3NdfHx1W3NdfHwodVtzXT1F
LmNhbGwoaSkpO3U9d2EodSl9Ry5hcHBseShpLHUpLGsmJiFmJiZ1Lmxlbmd0aD4wJiZyK2IubGVu
Z3RoPjEmJmdhLnVuaXF1ZVNvcnQoaSl9cmV0dXJuIGsmJih3PXksaj12KSx0fTtyZXR1cm4gYz9p
YShmKTpmfXJldHVybiBoPWdhLmNvbXBpbGU9ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPVtdLGU9W10s
Zj1BW2ErIiAiXTtpZighZil7Ynx8KGI9ZyhhKSksYz1iLmxlbmd0aDt3aGlsZShjLS0pZj15YShi
W2NdKSxmW3VdP2QucHVzaChmKTplLnB1c2goZik7Zj1BKGEsemEoZSxkKSksZi5zZWxlY3Rvcj1h
fXJldHVybiBmfSxpPWdhLnNlbGVjdD1mdW5jdGlvbihhLGIsYyxlKXt2YXIgZixpLGosayxsLG09
ImZ1bmN0aW9uIj09dHlwZW9mIGEmJmEsbj0hZSYmZyhhPW0uc2VsZWN0b3J8fGEpO2lmKGM9Y3x8
W10sMT09PW4ubGVuZ3RoKXtpZihpPW5bMF09blswXS5zbGljZSgwKSxpLmxlbmd0aD4yJiYiSUQi
PT09KGo9aVswXSkudHlwZSYmOT09PWIubm9kZVR5cGUmJnAmJmQucmVsYXRpdmVbaVsxXS50eXBl
XSl7aWYoYj0oZC5maW5kLklEKGoubWF0Y2hlc1swXS5yZXBsYWNlKF8sYWEpLGIpfHxbXSlbMF0s
IWIpcmV0dXJuIGM7bSYmKGI9Yi5wYXJlbnROb2RlKSxhPWEuc2xpY2UoaS5zaGlmdCgpLnZhbHVl
Lmxlbmd0aCl9Zj1WLm5lZWRzQ29udGV4dC50ZXN0KGEpPzA6aS5sZW5ndGg7d2hpbGUoZi0tKXtp
ZihqPWlbZl0sZC5yZWxhdGl2ZVtrPWoudHlwZV0pYnJlYWs7aWYoKGw9ZC5maW5kW2tdKSYmKGU9
bChqLm1hdGNoZXNbMF0ucmVwbGFjZShfLGFhKSwkLnRlc3QoaVswXS50eXBlKSYmcWEoYi5wYXJl
bnROb2RlKXx8YikpKXtpZihpLnNwbGljZShmLDEpLGE9ZS5sZW5ndGgmJnNhKGkpLCFhKXJldHVy
biBHLmFwcGx5KGMsZSksYzticmVha319fXJldHVybihtfHxoKGEsbikpKGUsYiwhcCxjLCFifHwk
LnRlc3QoYSkmJnFhKGIucGFyZW50Tm9kZSl8fGIpLGN9LGMuc29ydFN0YWJsZT11LnNwbGl0KCIi
KS5zb3J0KEIpLmpvaW4oIiIpPT09dSxjLmRldGVjdER1cGxpY2F0ZXM9ISFsLG0oKSxjLnNvcnRE
ZXRhY2hlZD1qYShmdW5jdGlvbihhKXtyZXR1cm4gMSZhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9u
KG4uY3JlYXRlRWxlbWVudCgiZmllbGRzZXQiKSl9KSxqYShmdW5jdGlvbihhKXtyZXR1cm4gYS5p
bm5lckhUTUw9IjxhIGhyZWY9JyMnPjwvYT4iLCIjIj09PWEuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1
dGUoImhyZWYiKX0pfHxrYSgidHlwZXxocmVmfGhlaWdodHx3aWR0aCIsZnVuY3Rpb24oYSxiLGMp
e2lmKCFjKXJldHVybiBhLmdldEF0dHJpYnV0ZShiLCJ0eXBlIj09PWIudG9Mb3dlckNhc2UoKT8x
OjIpfSksYy5hdHRyaWJ1dGVzJiZqYShmdW5jdGlvbihhKXtyZXR1cm4gYS5pbm5lckhUTUw9Ijxp
bnB1dC8+IixhLmZpcnN0Q2hpbGQuc2V0QXR0cmlidXRlKCJ2YWx1ZSIsIiIpLCIiPT09YS5maXJz
dENoaWxkLmdldEF0dHJpYnV0ZSgidmFsdWUiKX0pfHxrYSgidmFsdWUiLGZ1bmN0aW9uKGEsYixj
KXtpZighYyYmImlucHV0Ij09PWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKSlyZXR1cm4gYS5kZWZh
dWx0VmFsdWV9KSxqYShmdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09YS5nZXRBdHRyaWJ1dGUoImRp
c2FibGVkIil9KXx8a2EoSixmdW5jdGlvbihhLGIsYyl7dmFyIGQ7aWYoIWMpcmV0dXJuIGFbYl09
PT0hMD9iLnRvTG93ZXJDYXNlKCk6KGQ9YS5nZXRBdHRyaWJ1dGVOb2RlKGIpKSYmZC5zcGVjaWZp
ZWQ/ZC52YWx1ZTpudWxsfSksZ2F9KGEpO3IuZmluZD14LHIuZXhwcj14LnNlbGVjdG9ycyxyLmV4
cHJbIjoiXT1yLmV4cHIucHNldWRvcyxyLnVuaXF1ZVNvcnQ9ci51bmlxdWU9eC51bmlxdWVTb3J0
LHIudGV4dD14LmdldFRleHQsci5pc1hNTERvYz14LmlzWE1MLHIuY29udGFpbnM9eC5jb250YWlu
cyxyLmVzY2FwZVNlbGVjdG9yPXguZXNjYXBlO3ZhciB5PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1b
XSxlPXZvaWQgMCE9PWM7d2hpbGUoKGE9YVtiXSkmJjkhPT1hLm5vZGVUeXBlKWlmKDE9PT1hLm5v
ZGVUeXBlKXtpZihlJiZyKGEpLmlzKGMpKWJyZWFrO2QucHVzaChhKX1yZXR1cm4gZH0sej1mdW5j
dGlvbihhLGIpe2Zvcih2YXIgYz1bXTthO2E9YS5uZXh0U2libGluZykxPT09YS5ub2RlVHlwZSYm
YSE9PWImJmMucHVzaChhKTtyZXR1cm4gY30sQT1yLmV4cHIubWF0Y2gubmVlZHNDb250ZXh0LEI9
L148KFthLXpdW15cL1wwPjpceDIwXHRcclxuXGZdKilbXHgyMFx0XHJcblxmXSpcLz8+KD86PFwv
XDE+fCkkL2ksQz0vXi5bXjojXFtcLixdKiQvO2Z1bmN0aW9uIEQoYSxiLGMpe3JldHVybiByLmlz
RnVuY3Rpb24oYik/ci5ncmVwKGEsZnVuY3Rpb24oYSxkKXtyZXR1cm4hIWIuY2FsbChhLGQsYSkh
PT1jfSk6Yi5ub2RlVHlwZT9yLmdyZXAoYSxmdW5jdGlvbihhKXtyZXR1cm4gYT09PWIhPT1jfSk6
InN0cmluZyIhPXR5cGVvZiBiP3IuZ3JlcChhLGZ1bmN0aW9uKGEpe3JldHVybiBpLmNhbGwoYixh
KT4tMSE9PWN9KTpDLnRlc3QoYik/ci5maWx0ZXIoYixhLGMpOihiPXIuZmlsdGVyKGIsYSksci5n
cmVwKGEsZnVuY3Rpb24oYSl7cmV0dXJuIGkuY2FsbChiLGEpPi0xIT09YyYmMT09PWEubm9kZVR5
cGV9KSl9ci5maWx0ZXI9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWJbMF07cmV0dXJuIGMmJihhPSI6
bm90KCIrYSsiKSIpLDE9PT1iLmxlbmd0aCYmMT09PWQubm9kZVR5cGU/ci5maW5kLm1hdGNoZXNT
ZWxlY3RvcihkLGEpP1tkXTpbXTpyLmZpbmQubWF0Y2hlcyhhLHIuZ3JlcChiLGZ1bmN0aW9uKGEp
e3JldHVybiAxPT09YS5ub2RlVHlwZX0pKX0sci5mbi5leHRlbmQoe2ZpbmQ6ZnVuY3Rpb24oYSl7
dmFyIGIsYyxkPXRoaXMubGVuZ3RoLGU9dGhpcztpZigic3RyaW5nIiE9dHlwZW9mIGEpcmV0dXJu
IHRoaXMucHVzaFN0YWNrKHIoYSkuZmlsdGVyKGZ1bmN0aW9uKCl7Zm9yKGI9MDtiPGQ7YisrKWlm
KHIuY29udGFpbnMoZVtiXSx0aGlzKSlyZXR1cm4hMH0pKTtmb3IoYz10aGlzLnB1c2hTdGFjayhb
XSksYj0wO2I8ZDtiKyspci5maW5kKGEsZVtiXSxjKTtyZXR1cm4gZD4xP3IudW5pcXVlU29ydChj
KTpjfSxmaWx0ZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKEQodGhpcyxhfHxb
XSwhMSkpfSxub3Q6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKEQodGhpcyxhfHxb
XSwhMCkpfSxpczpmdW5jdGlvbihhKXtyZXR1cm4hIUQodGhpcywic3RyaW5nIj09dHlwZW9mIGEm
JkEudGVzdChhKT9yKGEpOmF8fFtdLCExKS5sZW5ndGh9fSk7dmFyIEUsRj0vXig/OlxzKig8W1x3
XFddKz4pW14+XSp8IyhbXHctXSspKSQvLEc9ci5mbi5pbml0PWZ1bmN0aW9uKGEsYixjKXt2YXIg
ZSxmO2lmKCFhKXJldHVybiB0aGlzO2lmKGM9Y3x8RSwic3RyaW5nIj09dHlwZW9mIGEpe2lmKGU9
IjwiPT09YVswXSYmIj4iPT09YVthLmxlbmd0aC0xXSYmYS5sZW5ndGg+PTM/W251bGwsYSxudWxs
XTpGLmV4ZWMoYSksIWV8fCFlWzFdJiZiKXJldHVybiFifHxiLmpxdWVyeT8oYnx8YykuZmluZChh
KTp0aGlzLmNvbnN0cnVjdG9yKGIpLmZpbmQoYSk7aWYoZVsxXSl7aWYoYj1iIGluc3RhbmNlb2Yg
cj9iWzBdOmIsci5tZXJnZSh0aGlzLHIucGFyc2VIVE1MKGVbMV0sYiYmYi5ub2RlVHlwZT9iLm93
bmVyRG9jdW1lbnR8fGI6ZCwhMCkpLEIudGVzdChlWzFdKSYmci5pc1BsYWluT2JqZWN0KGIpKWZv
cihlIGluIGIpci5pc0Z1bmN0aW9uKHRoaXNbZV0pP3RoaXNbZV0oYltlXSk6dGhpcy5hdHRyKGUs
YltlXSk7cmV0dXJuIHRoaXN9cmV0dXJuIGY9ZC5nZXRFbGVtZW50QnlJZChlWzJdKSxmJiYodGhp
c1swXT1mLHRoaXMubGVuZ3RoPTEpLHRoaXN9cmV0dXJuIGEubm9kZVR5cGU/KHRoaXNbMF09YSx0
aGlzLmxlbmd0aD0xLHRoaXMpOnIuaXNGdW5jdGlvbihhKT92b2lkIDAhPT1jLnJlYWR5P2MucmVh
ZHkoYSk6YShyKTpyLm1ha2VBcnJheShhLHRoaXMpfTtHLnByb3RvdHlwZT1yLmZuLEU9cihkKTt2
YXIgSD0vXig/OnBhcmVudHN8cHJldig/OlVudGlsfEFsbCkpLyxJPXtjaGlsZHJlbjohMCxjb250
ZW50czohMCxuZXh0OiEwLHByZXY6ITB9O3IuZm4uZXh0ZW5kKHtoYXM6ZnVuY3Rpb24oYSl7dmFy
IGI9cihhLHRoaXMpLGM9Yi5sZW5ndGg7cmV0dXJuIHRoaXMuZmlsdGVyKGZ1bmN0aW9uKCl7Zm9y
KHZhciBhPTA7YTxjO2ErKylpZihyLmNvbnRhaW5zKHRoaXMsYlthXSkpcmV0dXJuITB9KX0sY2xv
c2VzdDpmdW5jdGlvbihhLGIpe3ZhciBjLGQ9MCxlPXRoaXMubGVuZ3RoLGY9W10sZz0ic3RyaW5n
IiE9dHlwZW9mIGEmJnIoYSk7aWYoIUEudGVzdChhKSlmb3IoO2Q8ZTtkKyspZm9yKGM9dGhpc1tk
XTtjJiZjIT09YjtjPWMucGFyZW50Tm9kZSlpZihjLm5vZGVUeXBlPDExJiYoZz9nLmluZGV4KGMp
Pi0xOjE9PT1jLm5vZGVUeXBlJiZyLmZpbmQubWF0Y2hlc1NlbGVjdG9yKGMsYSkpKXtmLnB1c2go
Yyk7YnJlYWt9cmV0dXJuIHRoaXMucHVzaFN0YWNrKGYubGVuZ3RoPjE/ci51bmlxdWVTb3J0KGYp
OmYpfSxpbmRleDpmdW5jdGlvbihhKXtyZXR1cm4gYT8ic3RyaW5nIj09dHlwZW9mIGE/aS5jYWxs
KHIoYSksdGhpc1swXSk6aS5jYWxsKHRoaXMsYS5qcXVlcnk/YVswXTphKTp0aGlzWzBdJiZ0aGlz
WzBdLnBhcmVudE5vZGU/dGhpcy5maXJzdCgpLnByZXZBbGwoKS5sZW5ndGg6LTF9LGFkZDpmdW5j
dGlvbihhLGIpe3JldHVybiB0aGlzLnB1c2hTdGFjayhyLnVuaXF1ZVNvcnQoci5tZXJnZSh0aGlz
LmdldCgpLHIoYSxiKSkpKX0sYWRkQmFjazpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5hZGQobnVs
bD09YT90aGlzLnByZXZPYmplY3Q6dGhpcy5wcmV2T2JqZWN0LmZpbHRlcihhKSl9fSk7ZnVuY3Rp
b24gSihhLGIpe3doaWxlKChhPWFbYl0pJiYxIT09YS5ub2RlVHlwZSk7cmV0dXJuIGF9ci5lYWNo
KHtwYXJlbnQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5wYXJlbnROb2RlO3JldHVybiBiJiYxMSE9PWIu
bm9kZVR5cGU/YjpudWxsfSxwYXJlbnRzOmZ1bmN0aW9uKGEpe3JldHVybiB5KGEsInBhcmVudE5v
ZGUiKX0scGFyZW50c1VudGlsOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4geShhLCJwYXJlbnROb2Rl
IixjKX0sbmV4dDpmdW5jdGlvbihhKXtyZXR1cm4gSihhLCJuZXh0U2libGluZyIpfSxwcmV2OmZ1
bmN0aW9uKGEpe3JldHVybiBKKGEsInByZXZpb3VzU2libGluZyIpfSxuZXh0QWxsOmZ1bmN0aW9u
KGEpe3JldHVybiB5KGEsIm5leHRTaWJsaW5nIil9LHByZXZBbGw6ZnVuY3Rpb24oYSl7cmV0dXJu
IHkoYSwicHJldmlvdXNTaWJsaW5nIil9LG5leHRVbnRpbDpmdW5jdGlvbihhLGIsYyl7cmV0dXJu
IHkoYSwibmV4dFNpYmxpbmciLGMpfSxwcmV2VW50aWw6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiB5
KGEsInByZXZpb3VzU2libGluZyIsYyl9LHNpYmxpbmdzOmZ1bmN0aW9uKGEpe3JldHVybiB6KChh
LnBhcmVudE5vZGV8fHt9KS5maXJzdENoaWxkLGEpfSxjaGlsZHJlbjpmdW5jdGlvbihhKXtyZXR1
cm4geihhLmZpcnN0Q2hpbGQpfSxjb250ZW50czpmdW5jdGlvbihhKXtyZXR1cm4gYS5jb250ZW50
RG9jdW1lbnR8fHIubWVyZ2UoW10sYS5jaGlsZE5vZGVzKX19LGZ1bmN0aW9uKGEsYil7ci5mblth
XT1mdW5jdGlvbihjLGQpe3ZhciBlPXIubWFwKHRoaXMsYixjKTtyZXR1cm4iVW50aWwiIT09YS5z
bGljZSgtNSkmJihkPWMpLGQmJiJzdHJpbmciPT10eXBlb2YgZCYmKGU9ci5maWx0ZXIoZCxlKSks
dGhpcy5sZW5ndGg+MSYmKElbYV18fHIudW5pcXVlU29ydChlKSxILnRlc3QoYSkmJmUucmV2ZXJz
ZSgpKSx0aGlzLnB1c2hTdGFjayhlKX19KTt2YXIgSz0vW15ceDIwXHRcclxuXGZdKy9nO2Z1bmN0
aW9uIEwoYSl7dmFyIGI9e307cmV0dXJuIHIuZWFjaChhLm1hdGNoKEspfHxbXSxmdW5jdGlvbihh
LGMpe2JbY109ITB9KSxifXIuQ2FsbGJhY2tzPWZ1bmN0aW9uKGEpe2E9InN0cmluZyI9PXR5cGVv
ZiBhP0woYSk6ci5leHRlbmQoe30sYSk7dmFyIGIsYyxkLGUsZj1bXSxnPVtdLGg9LTEsaT1mdW5j
dGlvbigpe2ZvcihlPWEub25jZSxkPWI9ITA7Zy5sZW5ndGg7aD0tMSl7Yz1nLnNoaWZ0KCk7d2hp
bGUoKytoPGYubGVuZ3RoKWZbaF0uYXBwbHkoY1swXSxjWzFdKT09PSExJiZhLnN0b3BPbkZhbHNl
JiYoaD1mLmxlbmd0aCxjPSExKX1hLm1lbW9yeXx8KGM9ITEpLGI9ITEsZSYmKGY9Yz9bXToiIil9
LGo9e2FkZDpmdW5jdGlvbigpe3JldHVybiBmJiYoYyYmIWImJihoPWYubGVuZ3RoLTEsZy5wdXNo
KGMpKSxmdW5jdGlvbiBkKGIpe3IuZWFjaChiLGZ1bmN0aW9uKGIsYyl7ci5pc0Z1bmN0aW9uKGMp
P2EudW5pcXVlJiZqLmhhcyhjKXx8Zi5wdXNoKGMpOmMmJmMubGVuZ3RoJiYic3RyaW5nIiE9PXIu
dHlwZShjKSYmZChjKX0pfShhcmd1bWVudHMpLGMmJiFiJiZpKCkpLHRoaXN9LHJlbW92ZTpmdW5j
dGlvbigpe3JldHVybiByLmVhY2goYXJndW1lbnRzLGZ1bmN0aW9uKGEsYil7dmFyIGM7d2hpbGUo
KGM9ci5pbkFycmF5KGIsZixjKSk+LTEpZi5zcGxpY2UoYywxKSxjPD1oJiZoLS19KSx0aGlzfSxo
YXM6ZnVuY3Rpb24oYSl7cmV0dXJuIGE/ci5pbkFycmF5KGEsZik+LTE6Zi5sZW5ndGg+MH0sZW1w
dHk6ZnVuY3Rpb24oKXtyZXR1cm4gZiYmKGY9W10pLHRoaXN9LGRpc2FibGU6ZnVuY3Rpb24oKXty
ZXR1cm4gZT1nPVtdLGY9Yz0iIix0aGlzfSxkaXNhYmxlZDpmdW5jdGlvbigpe3JldHVybiFmfSxs
b2NrOmZ1bmN0aW9uKCl7cmV0dXJuIGU9Zz1bXSxjfHxifHwoZj1jPSIiKSx0aGlzfSxsb2NrZWQ6
ZnVuY3Rpb24oKXtyZXR1cm4hIWV9LGZpcmVXaXRoOmZ1bmN0aW9uKGEsYyl7cmV0dXJuIGV8fChj
PWN8fFtdLGM9W2EsYy5zbGljZT9jLnNsaWNlKCk6Y10sZy5wdXNoKGMpLGJ8fGkoKSksdGhpc30s
ZmlyZTpmdW5jdGlvbigpe3JldHVybiBqLmZpcmVXaXRoKHRoaXMsYXJndW1lbnRzKSx0aGlzfSxm
aXJlZDpmdW5jdGlvbigpe3JldHVybiEhZH19O3JldHVybiBqfTtmdW5jdGlvbiBNKGEpe3JldHVy
biBhfWZ1bmN0aW9uIE4oYSl7dGhyb3cgYX1mdW5jdGlvbiBPKGEsYixjKXt2YXIgZDt0cnl7YSYm
ci5pc0Z1bmN0aW9uKGQ9YS5wcm9taXNlKT9kLmNhbGwoYSkuZG9uZShiKS5mYWlsKGMpOmEmJnIu
aXNGdW5jdGlvbihkPWEudGhlbik/ZC5jYWxsKGEsYixjKTpiLmNhbGwodm9pZCAwLGEpfWNhdGNo
KGEpe2MuY2FsbCh2b2lkIDAsYSl9fXIuZXh0ZW5kKHtEZWZlcnJlZDpmdW5jdGlvbihiKXt2YXIg
Yz1bWyJub3RpZnkiLCJwcm9ncmVzcyIsci5DYWxsYmFja3MoIm1lbW9yeSIpLHIuQ2FsbGJhY2tz
KCJtZW1vcnkiKSwyXSxbInJlc29sdmUiLCJkb25lIixyLkNhbGxiYWNrcygib25jZSBtZW1vcnki
KSxyLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwwLCJyZXNvbHZlZCJdLFsicmVqZWN0IiwiZmFp
bCIsci5DYWxsYmFja3MoIm9uY2UgbWVtb3J5Iiksci5DYWxsYmFja3MoIm9uY2UgbWVtb3J5Iiks
MSwicmVqZWN0ZWQiXV0sZD0icGVuZGluZyIsZT17c3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gZH0s
YWx3YXlzOmZ1bmN0aW9uKCl7cmV0dXJuIGYuZG9uZShhcmd1bWVudHMpLmZhaWwoYXJndW1lbnRz
KSx0aGlzfSwiY2F0Y2giOmZ1bmN0aW9uKGEpe3JldHVybiBlLnRoZW4obnVsbCxhKX0scGlwZTpm
dW5jdGlvbigpe3ZhciBhPWFyZ3VtZW50cztyZXR1cm4gci5EZWZlcnJlZChmdW5jdGlvbihiKXty
LmVhY2goYyxmdW5jdGlvbihjLGQpe3ZhciBlPXIuaXNGdW5jdGlvbihhW2RbNF1dKSYmYVtkWzRd
XTtmW2RbMV1dKGZ1bmN0aW9uKCl7dmFyIGE9ZSYmZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7YSYm
ci5pc0Z1bmN0aW9uKGEucHJvbWlzZSk/YS5wcm9taXNlKCkucHJvZ3Jlc3MoYi5ub3RpZnkpLmRv
bmUoYi5yZXNvbHZlKS5mYWlsKGIucmVqZWN0KTpiW2RbMF0rIldpdGgiXSh0aGlzLGU/W2FdOmFy
Z3VtZW50cyl9KX0pLGE9bnVsbH0pLnByb21pc2UoKX0sdGhlbjpmdW5jdGlvbihiLGQsZSl7dmFy
IGY9MDtmdW5jdGlvbiBnKGIsYyxkLGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciBoPXRoaXMsaT1h
cmd1bWVudHMsaj1mdW5jdGlvbigpe3ZhciBhLGo7aWYoIShiPGYpKXtpZihhPWQuYXBwbHkoaCxp
KSxhPT09Yy5wcm9taXNlKCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiVGhlbmFibGUgc2VsZi1yZXNv
bHV0aW9uIik7aj1hJiYoIm9iamVjdCI9PXR5cGVvZiBhfHwiZnVuY3Rpb24iPT10eXBlb2YgYSkm
JmEudGhlbixyLmlzRnVuY3Rpb24oaik/ZT9qLmNhbGwoYSxnKGYsYyxNLGUpLGcoZixjLE4sZSkp
OihmKyssai5jYWxsKGEsZyhmLGMsTSxlKSxnKGYsYyxOLGUpLGcoZixjLE0sYy5ub3RpZnlXaXRo
KSkpOihkIT09TSYmKGg9dm9pZCAwLGk9W2FdKSwoZXx8Yy5yZXNvbHZlV2l0aCkoaCxpKSl9fSxr
PWU/ajpmdW5jdGlvbigpe3RyeXtqKCl9Y2F0Y2goYSl7ci5EZWZlcnJlZC5leGNlcHRpb25Ib29r
JiZyLkRlZmVycmVkLmV4Y2VwdGlvbkhvb2soYSxrLnN0YWNrVHJhY2UpLGIrMT49ZiYmKGQhPT1O
JiYoaD12b2lkIDAsaT1bYV0pLGMucmVqZWN0V2l0aChoLGkpKX19O2I/aygpOihyLkRlZmVycmVk
LmdldFN0YWNrSG9vayYmKGsuc3RhY2tUcmFjZT1yLkRlZmVycmVkLmdldFN0YWNrSG9vaygpKSxh
LnNldFRpbWVvdXQoaykpfX1yZXR1cm4gci5EZWZlcnJlZChmdW5jdGlvbihhKXtjWzBdWzNdLmFk
ZChnKDAsYSxyLmlzRnVuY3Rpb24oZSk/ZTpNLGEubm90aWZ5V2l0aCkpLGNbMV1bM10uYWRkKGco
MCxhLHIuaXNGdW5jdGlvbihiKT9iOk0pKSxjWzJdWzNdLmFkZChnKDAsYSxyLmlzRnVuY3Rpb24o
ZCk/ZDpOKSl9KS5wcm9taXNlKCl9LHByb21pc2U6ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGwhPWE/
ci5leHRlbmQoYSxlKTplfX0sZj17fTtyZXR1cm4gci5lYWNoKGMsZnVuY3Rpb24oYSxiKXt2YXIg
Zz1iWzJdLGg9Yls1XTtlW2JbMV1dPWcuYWRkLGgmJmcuYWRkKGZ1bmN0aW9uKCl7ZD1ofSxjWzMt
YV1bMl0uZGlzYWJsZSxjWzBdWzJdLmxvY2spLGcuYWRkKGJbM10uZmlyZSksZltiWzBdXT1mdW5j
dGlvbigpe3JldHVybiBmW2JbMF0rIldpdGgiXSh0aGlzPT09Zj92b2lkIDA6dGhpcyxhcmd1bWVu
dHMpLHRoaXN9LGZbYlswXSsiV2l0aCJdPWcuZmlyZVdpdGh9KSxlLnByb21pc2UoZiksYiYmYi5j
YWxsKGYsZiksZn0sd2hlbjpmdW5jdGlvbihhKXt2YXIgYj1hcmd1bWVudHMubGVuZ3RoLGM9Yixk
PUFycmF5KGMpLGU9Zi5jYWxsKGFyZ3VtZW50cyksZz1yLkRlZmVycmVkKCksaD1mdW5jdGlvbihh
KXtyZXR1cm4gZnVuY3Rpb24oYyl7ZFthXT10aGlzLGVbYV09YXJndW1lbnRzLmxlbmd0aD4xP2Yu
Y2FsbChhcmd1bWVudHMpOmMsLS1ifHxnLnJlc29sdmVXaXRoKGQsZSl9fTtpZihiPD0xJiYoTyhh
LGcuZG9uZShoKGMpKS5yZXNvbHZlLGcucmVqZWN0KSwicGVuZGluZyI9PT1nLnN0YXRlKCl8fHIu
aXNGdW5jdGlvbihlW2NdJiZlW2NdLnRoZW4pKSlyZXR1cm4gZy50aGVuKCk7d2hpbGUoYy0tKU8o
ZVtjXSxoKGMpLGcucmVqZWN0KTtyZXR1cm4gZy5wcm9taXNlKCl9fSk7dmFyIFA9L14oRXZhbHxJ
bnRlcm5hbHxSYW5nZXxSZWZlcmVuY2V8U3ludGF4fFR5cGV8VVJJKUVycm9yJC87ci5EZWZlcnJl
ZC5leGNlcHRpb25Ib29rPWZ1bmN0aW9uKGIsYyl7YS5jb25zb2xlJiZhLmNvbnNvbGUud2FybiYm
YiYmUC50ZXN0KGIubmFtZSkmJmEuY29uc29sZS53YXJuKCJqUXVlcnkuRGVmZXJyZWQgZXhjZXB0
aW9uOiAiK2IubWVzc2FnZSxiLnN0YWNrLGMpfSxyLnJlYWR5RXhjZXB0aW9uPWZ1bmN0aW9uKGIp
e2Euc2V0VGltZW91dChmdW5jdGlvbigpe3Rocm93IGJ9KX07dmFyIFE9ci5EZWZlcnJlZCgpO3Iu
Zm4ucmVhZHk9ZnVuY3Rpb24oYSl7cmV0dXJuIFEudGhlbihhKVsiY2F0Y2giXShmdW5jdGlvbihh
KXtyLnJlYWR5RXhjZXB0aW9uKGEpfSksdGhpc30sci5leHRlbmQoe2lzUmVhZHk6ITEscmVhZHlX
YWl0OjEsCitob2xkUmVhZHk6ZnVuY3Rpb24oYSl7YT9yLnJlYWR5V2FpdCsrOnIucmVhZHkoITAp
fSxyZWFkeTpmdW5jdGlvbihhKXsoYT09PSEwPy0tci5yZWFkeVdhaXQ6ci5pc1JlYWR5KXx8KHIu
aXNSZWFkeT0hMCxhIT09ITAmJi0tci5yZWFkeVdhaXQ+MHx8US5yZXNvbHZlV2l0aChkLFtyXSkp
fX0pLHIucmVhZHkudGhlbj1RLnRoZW47ZnVuY3Rpb24gUigpe2QucmVtb3ZlRXZlbnRMaXN0ZW5l
cigiRE9NQ29udGVudExvYWRlZCIsUiksYS5yZW1vdmVFdmVudExpc3RlbmVyKCJsb2FkIixSKSxy
LnJlYWR5KCl9ImNvbXBsZXRlIj09PWQucmVhZHlTdGF0ZXx8ImxvYWRpbmciIT09ZC5yZWFkeVN0
YXRlJiYhZC5kb2N1bWVudEVsZW1lbnQuZG9TY3JvbGw/YS5zZXRUaW1lb3V0KHIucmVhZHkpOihk
LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLFIpLGEuYWRkRXZlbnRMaXN0ZW5l
cigibG9hZCIsUikpO3ZhciBTPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcpe3ZhciBoPTAsaT1hLmxl
bmd0aCxqPW51bGw9PWM7aWYoIm9iamVjdCI9PT1yLnR5cGUoYykpe2U9ITA7Zm9yKGggaW4gYylT
KGEsYixoLGNbaF0sITAsZixnKX1lbHNlIGlmKHZvaWQgMCE9PWQmJihlPSEwLHIuaXNGdW5jdGlv
bihkKXx8KGc9ITApLGomJihnPyhiLmNhbGwoYSxkKSxiPW51bGwpOihqPWIsYj1mdW5jdGlvbihh
LGIsYyl7cmV0dXJuIGouY2FsbChyKGEpLGMpfSkpLGIpKWZvcig7aDxpO2grKyliKGFbaF0sYyxn
P2Q6ZC5jYWxsKGFbaF0saCxiKGFbaF0sYykpKTtyZXR1cm4gZT9hOmo/Yi5jYWxsKGEpOmk/Yihh
WzBdLGMpOmZ9LFQ9ZnVuY3Rpb24oYSl7cmV0dXJuIDE9PT1hLm5vZGVUeXBlfHw5PT09YS5ub2Rl
VHlwZXx8ISthLm5vZGVUeXBlfTtmdW5jdGlvbiBVKCl7dGhpcy5leHBhbmRvPXIuZXhwYW5kbytV
LnVpZCsrfVUudWlkPTEsVS5wcm90b3R5cGU9e2NhY2hlOmZ1bmN0aW9uKGEpe3ZhciBiPWFbdGhp
cy5leHBhbmRvXTtyZXR1cm4gYnx8KGI9e30sVChhKSYmKGEubm9kZVR5cGU/YVt0aGlzLmV4cGFu
ZG9dPWI6T2JqZWN0LmRlZmluZVByb3BlcnR5KGEsdGhpcy5leHBhbmRvLHt2YWx1ZTpiLGNvbmZp
Z3VyYWJsZTohMH0pKSksYn0sc2V0OmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlPXRoaXMuY2FjaGUo
YSk7aWYoInN0cmluZyI9PXR5cGVvZiBiKWVbci5jYW1lbENhc2UoYildPWM7ZWxzZSBmb3IoZCBp
biBiKWVbci5jYW1lbENhc2UoZCldPWJbZF07cmV0dXJuIGV9LGdldDpmdW5jdGlvbihhLGIpe3Jl
dHVybiB2b2lkIDA9PT1iP3RoaXMuY2FjaGUoYSk6YVt0aGlzLmV4cGFuZG9dJiZhW3RoaXMuZXhw
YW5kb11bci5jYW1lbENhc2UoYildfSxhY2Nlc3M6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiB2b2lk
IDA9PT1ifHxiJiYic3RyaW5nIj09dHlwZW9mIGImJnZvaWQgMD09PWM/dGhpcy5nZXQoYSxiKToo
dGhpcy5zZXQoYSxiLGMpLHZvaWQgMCE9PWM/YzpiKX0scmVtb3ZlOmZ1bmN0aW9uKGEsYil7dmFy
IGMsZD1hW3RoaXMuZXhwYW5kb107aWYodm9pZCAwIT09ZCl7aWYodm9pZCAwIT09Yil7ci5pc0Fy
cmF5KGIpP2I9Yi5tYXAoci5jYW1lbENhc2UpOihiPXIuY2FtZWxDYXNlKGIpLGI9YiBpbiBkP1ti
XTpiLm1hdGNoKEspfHxbXSksYz1iLmxlbmd0aDt3aGlsZShjLS0pZGVsZXRlIGRbYltjXV19KHZv
aWQgMD09PWJ8fHIuaXNFbXB0eU9iamVjdChkKSkmJihhLm5vZGVUeXBlP2FbdGhpcy5leHBhbmRv
XT12b2lkIDA6ZGVsZXRlIGFbdGhpcy5leHBhbmRvXSl9fSxoYXNEYXRhOmZ1bmN0aW9uKGEpe3Zh
ciBiPWFbdGhpcy5leHBhbmRvXTtyZXR1cm4gdm9pZCAwIT09YiYmIXIuaXNFbXB0eU9iamVjdChi
KX19O3ZhciBWPW5ldyBVLFc9bmV3IFUsWD0vXig/Olx7W1x3XFddKlx9fFxbW1x3XFddKlxdKSQv
LFk9L1tBLVpdL2c7ZnVuY3Rpb24gWihhKXtyZXR1cm4idHJ1ZSI9PT1hfHwiZmFsc2UiIT09YSYm
KCJudWxsIj09PWE/bnVsbDphPT09K2ErIiI/K2E6WC50ZXN0KGEpP0pTT04ucGFyc2UoYSk6YSl9
ZnVuY3Rpb24gJChhLGIsYyl7dmFyIGQ7aWYodm9pZCAwPT09YyYmMT09PWEubm9kZVR5cGUpaWYo
ZD0iZGF0YS0iK2IucmVwbGFjZShZLCItJCYiKS50b0xvd2VyQ2FzZSgpLGM9YS5nZXRBdHRyaWJ1
dGUoZCksInN0cmluZyI9PXR5cGVvZiBjKXt0cnl7Yz1aKGMpfWNhdGNoKGUpe31XLnNldChhLGIs
Yyl9ZWxzZSBjPXZvaWQgMDtyZXR1cm4gY31yLmV4dGVuZCh7aGFzRGF0YTpmdW5jdGlvbihhKXty
ZXR1cm4gVy5oYXNEYXRhKGEpfHxWLmhhc0RhdGEoYSl9LGRhdGE6ZnVuY3Rpb24oYSxiLGMpe3Jl
dHVybiBXLmFjY2VzcyhhLGIsYyl9LHJlbW92ZURhdGE6ZnVuY3Rpb24oYSxiKXtXLnJlbW92ZShh
LGIpfSxfZGF0YTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIFYuYWNjZXNzKGEsYixjKX0sX3JlbW92
ZURhdGE6ZnVuY3Rpb24oYSxiKXtWLnJlbW92ZShhLGIpfX0pLHIuZm4uZXh0ZW5kKHtkYXRhOmZ1
bmN0aW9uKGEsYil7dmFyIGMsZCxlLGY9dGhpc1swXSxnPWYmJmYuYXR0cmlidXRlcztpZih2b2lk
IDA9PT1hKXtpZih0aGlzLmxlbmd0aCYmKGU9Vy5nZXQoZiksMT09PWYubm9kZVR5cGUmJiFWLmdl
dChmLCJoYXNEYXRhQXR0cnMiKSkpe2M9Zy5sZW5ndGg7d2hpbGUoYy0tKWdbY10mJihkPWdbY10u
bmFtZSwwPT09ZC5pbmRleE9mKCJkYXRhLSIpJiYoZD1yLmNhbWVsQ2FzZShkLnNsaWNlKDUpKSwk
KGYsZCxlW2RdKSkpO1Yuc2V0KGYsImhhc0RhdGFBdHRycyIsITApfXJldHVybiBlfXJldHVybiJv
YmplY3QiPT10eXBlb2YgYT90aGlzLmVhY2goZnVuY3Rpb24oKXtXLnNldCh0aGlzLGEpfSk6Uyh0
aGlzLGZ1bmN0aW9uKGIpe3ZhciBjO2lmKGYmJnZvaWQgMD09PWIpe2lmKGM9Vy5nZXQoZixhKSx2
b2lkIDAhPT1jKXJldHVybiBjO2lmKGM9JChmLGEpLHZvaWQgMCE9PWMpcmV0dXJuIGN9ZWxzZSB0
aGlzLmVhY2goZnVuY3Rpb24oKXtXLnNldCh0aGlzLGEsYil9KX0sbnVsbCxiLGFyZ3VtZW50cy5s
ZW5ndGg+MSxudWxsLCEwKX0scmVtb3ZlRGF0YTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNo
KGZ1bmN0aW9uKCl7Vy5yZW1vdmUodGhpcyxhKX0pfX0pLHIuZXh0ZW5kKHtxdWV1ZTpmdW5jdGlv
bihhLGIsYyl7dmFyIGQ7aWYoYSlyZXR1cm4gYj0oYnx8ImZ4IikrInF1ZXVlIixkPVYuZ2V0KGEs
YiksYyYmKCFkfHxyLmlzQXJyYXkoYyk/ZD1WLmFjY2VzcyhhLGIsci5tYWtlQXJyYXkoYykpOmQu
cHVzaChjKSksZHx8W119LGRlcXVldWU6ZnVuY3Rpb24oYSxiKXtiPWJ8fCJmeCI7dmFyIGM9ci5x
dWV1ZShhLGIpLGQ9Yy5sZW5ndGgsZT1jLnNoaWZ0KCksZj1yLl9xdWV1ZUhvb2tzKGEsYiksZz1m
dW5jdGlvbigpe3IuZGVxdWV1ZShhLGIpfTsiaW5wcm9ncmVzcyI9PT1lJiYoZT1jLnNoaWZ0KCks
ZC0tKSxlJiYoImZ4Ij09PWImJmMudW5zaGlmdCgiaW5wcm9ncmVzcyIpLGRlbGV0ZSBmLnN0b3As
ZS5jYWxsKGEsZyxmKSksIWQmJmYmJmYuZW1wdHkuZmlyZSgpfSxfcXVldWVIb29rczpmdW5jdGlv
bihhLGIpe3ZhciBjPWIrInF1ZXVlSG9va3MiO3JldHVybiBWLmdldChhLGMpfHxWLmFjY2Vzcyhh
LGMse2VtcHR5OnIuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLmFkZChmdW5jdGlvbigpe1YucmVt
b3ZlKGEsW2IrInF1ZXVlIixjXSl9KX0pfX0pLHIuZm4uZXh0ZW5kKHtxdWV1ZTpmdW5jdGlvbihh
LGIpe3ZhciBjPTI7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBhJiYoYj1hLGE9ImZ4IixjLS0pLGFy
Z3VtZW50cy5sZW5ndGg8Yz9yLnF1ZXVlKHRoaXNbMF0sYSk6dm9pZCAwPT09Yj90aGlzOnRoaXMu
ZWFjaChmdW5jdGlvbigpe3ZhciBjPXIucXVldWUodGhpcyxhLGIpO3IuX3F1ZXVlSG9va3ModGhp
cyxhKSwiZngiPT09YSYmImlucHJvZ3Jlc3MiIT09Y1swXSYmci5kZXF1ZXVlKHRoaXMsYSl9KX0s
ZGVxdWV1ZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ci5kZXF1ZXVl
KHRoaXMsYSl9KX0sY2xlYXJRdWV1ZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5xdWV1ZShhfHwi
ZngiLFtdKX0scHJvbWlzZTpmdW5jdGlvbihhLGIpe3ZhciBjLGQ9MSxlPXIuRGVmZXJyZWQoKSxm
PXRoaXMsZz10aGlzLmxlbmd0aCxoPWZ1bmN0aW9uKCl7LS1kfHxlLnJlc29sdmVXaXRoKGYsW2Zd
KX07InN0cmluZyIhPXR5cGVvZiBhJiYoYj1hLGE9dm9pZCAwKSxhPWF8fCJmeCI7d2hpbGUoZy0t
KWM9Vi5nZXQoZltnXSxhKyJxdWV1ZUhvb2tzIiksYyYmYy5lbXB0eSYmKGQrKyxjLmVtcHR5LmFk
ZChoKSk7cmV0dXJuIGgoKSxlLnByb21pc2UoYil9fSk7dmFyIF89L1srLV0/KD86XGQqXC58KVxk
Kyg/OltlRV1bKy1dP1xkK3wpLy5zb3VyY2UsYWE9bmV3IFJlZ0V4cCgiXig/OihbKy1dKT18KSgi
K18rIikoW2EteiVdKikkIiwiaSIpLGJhPVsiVG9wIiwiUmlnaHQiLCJCb3R0b20iLCJMZWZ0Il0s
Y2E9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT1ifHxhLCJub25lIj09PWEuc3R5bGUuZGlzcGxheXx8
IiI9PT1hLnN0eWxlLmRpc3BsYXkmJnIuY29udGFpbnMoYS5vd25lckRvY3VtZW50LGEpJiYibm9u
ZSI9PT1yLmNzcyhhLCJkaXNwbGF5Iil9LGRhPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlLGYsZz17
fTtmb3IoZiBpbiBiKWdbZl09YS5zdHlsZVtmXSxhLnN0eWxlW2ZdPWJbZl07ZT1jLmFwcGx5KGEs
ZHx8W10pO2ZvcihmIGluIGIpYS5zdHlsZVtmXT1nW2ZdO3JldHVybiBlfTtmdW5jdGlvbiBlYShh
LGIsYyxkKXt2YXIgZSxmPTEsZz0yMCxoPWQ/ZnVuY3Rpb24oKXtyZXR1cm4gZC5jdXIoKX06ZnVu
Y3Rpb24oKXtyZXR1cm4gci5jc3MoYSxiLCIiKX0saT1oKCksaj1jJiZjWzNdfHwoci5jc3NOdW1i
ZXJbYl0/IiI6InB4Iiksaz0oci5jc3NOdW1iZXJbYl18fCJweCIhPT1qJiYraSkmJmFhLmV4ZWMo
ci5jc3MoYSxiKSk7aWYoayYma1szXSE9PWope2o9anx8a1szXSxjPWN8fFtdLGs9K2l8fDE7ZG8g
Zj1mfHwiLjUiLGsvPWYsci5zdHlsZShhLGIsaytqKTt3aGlsZShmIT09KGY9aCgpL2kpJiYxIT09
ZiYmLS1nKX1yZXR1cm4gYyYmKGs9K2t8fCtpfHwwLGU9Y1sxXT9rKyhjWzFdKzEpKmNbMl06K2Nb
Ml0sZCYmKGQudW5pdD1qLGQuc3RhcnQ9ayxkLmVuZD1lKSksZX12YXIgZmE9e307ZnVuY3Rpb24g
Z2EoYSl7dmFyIGIsYz1hLm93bmVyRG9jdW1lbnQsZD1hLm5vZGVOYW1lLGU9ZmFbZF07cmV0dXJu
IGU/ZTooYj1jLmJvZHkuYXBwZW5kQ2hpbGQoYy5jcmVhdGVFbGVtZW50KGQpKSxlPXIuY3NzKGIs
ImRpc3BsYXkiKSxiLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYiksIm5vbmUiPT09ZSYmKGU9ImJs
b2NrIiksZmFbZF09ZSxlKX1mdW5jdGlvbiBoYShhLGIpe2Zvcih2YXIgYyxkLGU9W10sZj0wLGc9
YS5sZW5ndGg7ZjxnO2YrKylkPWFbZl0sZC5zdHlsZSYmKGM9ZC5zdHlsZS5kaXNwbGF5LGI/KCJu
b25lIj09PWMmJihlW2ZdPVYuZ2V0KGQsImRpc3BsYXkiKXx8bnVsbCxlW2ZdfHwoZC5zdHlsZS5k
aXNwbGF5PSIiKSksIiI9PT1kLnN0eWxlLmRpc3BsYXkmJmNhKGQpJiYoZVtmXT1nYShkKSkpOiJu
b25lIiE9PWMmJihlW2ZdPSJub25lIixWLnNldChkLCJkaXNwbGF5IixjKSkpO2ZvcihmPTA7Zjxn
O2YrKyludWxsIT1lW2ZdJiYoYVtmXS5zdHlsZS5kaXNwbGF5PWVbZl0pO3JldHVybiBhfXIuZm4u
ZXh0ZW5kKHtzaG93OmZ1bmN0aW9uKCl7cmV0dXJuIGhhKHRoaXMsITApfSxoaWRlOmZ1bmN0aW9u
KCl7cmV0dXJuIGhhKHRoaXMpfSx0b2dnbGU6ZnVuY3Rpb24oYSl7cmV0dXJuImJvb2xlYW4iPT10
eXBlb2YgYT9hP3RoaXMuc2hvdygpOnRoaXMuaGlkZSgpOnRoaXMuZWFjaChmdW5jdGlvbigpe2Nh
KHRoaXMpP3IodGhpcykuc2hvdygpOnIodGhpcykuaGlkZSgpfSl9fSk7dmFyIGlhPS9eKD86Y2hl
Y2tib3h8cmFkaW8pJC9pLGphPS88KFthLXpdW15cL1wwPlx4MjBcdFxyXG5cZl0rKS9pLGthPS9e
JHxcLyg/OmphdmF8ZWNtYSlzY3JpcHQvaSxsYT17b3B0aW9uOlsxLCI8c2VsZWN0IG11bHRpcGxl
PSdtdWx0aXBsZSc+IiwiPC9zZWxlY3Q+Il0sdGhlYWQ6WzEsIjx0YWJsZT4iLCI8L3RhYmxlPiJd
LGNvbDpbMiwiPHRhYmxlPjxjb2xncm91cD4iLCI8L2NvbGdyb3VwPjwvdGFibGU+Il0sdHI6WzIs
Ijx0YWJsZT48dGJvZHk+IiwiPC90Ym9keT48L3RhYmxlPiJdLHRkOlszLCI8dGFibGU+PHRib2R5
Pjx0cj4iLCI8L3RyPjwvdGJvZHk+PC90YWJsZT4iXSxfZGVmYXVsdDpbMCwiIiwiIl19O2xhLm9w
dGdyb3VwPWxhLm9wdGlvbixsYS50Ym9keT1sYS50Zm9vdD1sYS5jb2xncm91cD1sYS5jYXB0aW9u
PWxhLnRoZWFkLGxhLnRoPWxhLnRkO2Z1bmN0aW9uIG1hKGEsYil7dmFyIGM7cmV0dXJuIGM9InVu
ZGVmaW5lZCIhPXR5cGVvZiBhLmdldEVsZW1lbnRzQnlUYWdOYW1lP2EuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoYnx8IioiKToidW5kZWZpbmVkIiE9dHlwZW9mIGEucXVlcnlTZWxlY3RvckFsbD9hLnF1
ZXJ5U2VsZWN0b3JBbGwoYnx8IioiKTpbXSx2b2lkIDA9PT1ifHxiJiZyLm5vZGVOYW1lKGEsYik/
ci5tZXJnZShbYV0sYyk6Y31mdW5jdGlvbiBuYShhLGIpe2Zvcih2YXIgYz0wLGQ9YS5sZW5ndGg7
YzxkO2MrKylWLnNldChhW2NdLCJnbG9iYWxFdmFsIiwhYnx8Vi5nZXQoYltjXSwiZ2xvYmFsRXZh
bCIpKX12YXIgb2E9Lzx8JiM/XHcrOy87ZnVuY3Rpb24gcGEoYSxiLGMsZCxlKXtmb3IodmFyIGYs
ZyxoLGksaixrLGw9Yi5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksbT1bXSxuPTAsbz1hLmxlbmd0
aDtuPG87bisrKWlmKGY9YVtuXSxmfHwwPT09ZilpZigib2JqZWN0Ij09PXIudHlwZShmKSlyLm1l
cmdlKG0sZi5ub2RlVHlwZT9bZl06Zik7ZWxzZSBpZihvYS50ZXN0KGYpKXtnPWd8fGwuYXBwZW5k
Q2hpbGQoYi5jcmVhdGVFbGVtZW50KCJkaXYiKSksaD0oamEuZXhlYyhmKXx8WyIiLCIiXSlbMV0u
dG9Mb3dlckNhc2UoKSxpPWxhW2hdfHxsYS5fZGVmYXVsdCxnLmlubmVySFRNTD1pWzFdK3IuaHRt
bFByZWZpbHRlcihmKStpWzJdLGs9aVswXTt3aGlsZShrLS0pZz1nLmxhc3RDaGlsZDtyLm1lcmdl
KG0sZy5jaGlsZE5vZGVzKSxnPWwuZmlyc3RDaGlsZCxnLnRleHRDb250ZW50PSIifWVsc2UgbS5w
dXNoKGIuY3JlYXRlVGV4dE5vZGUoZikpO2wudGV4dENvbnRlbnQ9IiIsbj0wO3doaWxlKGY9bVtu
KytdKWlmKGQmJnIuaW5BcnJheShmLGQpPi0xKWUmJmUucHVzaChmKTtlbHNlIGlmKGo9ci5jb250
YWlucyhmLm93bmVyRG9jdW1lbnQsZiksZz1tYShsLmFwcGVuZENoaWxkKGYpLCJzY3JpcHQiKSxq
JiZuYShnKSxjKXtrPTA7d2hpbGUoZj1nW2srK10pa2EudGVzdChmLnR5cGV8fCIiKSYmYy5wdXNo
KGYpfXJldHVybiBsfSFmdW5jdGlvbigpe3ZhciBhPWQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgp
LGI9YS5hcHBlbmRDaGlsZChkLmNyZWF0ZUVsZW1lbnQoImRpdiIpKSxjPWQuY3JlYXRlRWxlbWVu
dCgiaW5wdXQiKTtjLnNldEF0dHJpYnV0ZSgidHlwZSIsInJhZGlvIiksYy5zZXRBdHRyaWJ1dGUo
ImNoZWNrZWQiLCJjaGVja2VkIiksYy5zZXRBdHRyaWJ1dGUoIm5hbWUiLCJ0IiksYi5hcHBlbmRD
aGlsZChjKSxvLmNoZWNrQ2xvbmU9Yi5jbG9uZU5vZGUoITApLmNsb25lTm9kZSghMCkubGFzdENo
aWxkLmNoZWNrZWQsYi5pbm5lckhUTUw9Ijx0ZXh0YXJlYT54PC90ZXh0YXJlYT4iLG8ubm9DbG9u
ZUNoZWNrZWQ9ISFiLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmRlZmF1bHRWYWx1ZX0oKTt2YXIg
cWE9ZC5kb2N1bWVudEVsZW1lbnQscmE9L15rZXkvLHNhPS9eKD86bW91c2V8cG9pbnRlcnxjb250
ZXh0bWVudXxkcmFnfGRyb3ApfGNsaWNrLyx0YT0vXihbXi5dKikoPzpcLiguKyl8KS87ZnVuY3Rp
b24gdWEoKXtyZXR1cm4hMH1mdW5jdGlvbiB2YSgpe3JldHVybiExfWZ1bmN0aW9uIHdhKCl7dHJ5
e3JldHVybiBkLmFjdGl2ZUVsZW1lbnR9Y2F0Y2goYSl7fX1mdW5jdGlvbiB4YShhLGIsYyxkLGUs
Zil7dmFyIGcsaDtpZigib2JqZWN0Ij09dHlwZW9mIGIpeyJzdHJpbmciIT10eXBlb2YgYyYmKGQ9
ZHx8YyxjPXZvaWQgMCk7Zm9yKGggaW4gYil4YShhLGgsYyxkLGJbaF0sZik7cmV0dXJuIGF9aWYo
bnVsbD09ZCYmbnVsbD09ZT8oZT1jLGQ9Yz12b2lkIDApOm51bGw9PWUmJigic3RyaW5nIj09dHlw
ZW9mIGM/KGU9ZCxkPXZvaWQgMCk6KGU9ZCxkPWMsYz12b2lkIDApKSxlPT09ITEpZT12YTtlbHNl
IGlmKCFlKXJldHVybiBhO3JldHVybiAxPT09ZiYmKGc9ZSxlPWZ1bmN0aW9uKGEpe3JldHVybiBy
KCkub2ZmKGEpLGcuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxlLmd1aWQ9Zy5ndWlkfHwoZy5ndWlk
PXIuZ3VpZCsrKSksYS5lYWNoKGZ1bmN0aW9uKCl7ci5ldmVudC5hZGQodGhpcyxiLGUsZCxjKX0p
fXIuZXZlbnQ9e2dsb2JhbDp7fSxhZGQ6ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZixnLGgsaSxq
LGssbCxtLG4sbyxwLHE9Vi5nZXQoYSk7aWYocSl7Yy5oYW5kbGVyJiYoZj1jLGM9Zi5oYW5kbGVy
LGU9Zi5zZWxlY3RvciksZSYmci5maW5kLm1hdGNoZXNTZWxlY3RvcihxYSxlKSxjLmd1aWR8fChj
Lmd1aWQ9ci5ndWlkKyspLChpPXEuZXZlbnRzKXx8KGk9cS5ldmVudHM9e30pLChnPXEuaGFuZGxl
KXx8KGc9cS5oYW5kbGU9ZnVuY3Rpb24oYil7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiByJiZy
LmV2ZW50LnRyaWdnZXJlZCE9PWIudHlwZT9yLmV2ZW50LmRpc3BhdGNoLmFwcGx5KGEsYXJndW1l
bnRzKTp2b2lkIDB9KSxiPShifHwiIikubWF0Y2goSyl8fFsiIl0saj1iLmxlbmd0aDt3aGlsZShq
LS0paD10YS5leGVjKGJbal0pfHxbXSxuPXA9aFsxXSxvPShoWzJdfHwiIikuc3BsaXQoIi4iKS5z
b3J0KCksbiYmKGw9ci5ldmVudC5zcGVjaWFsW25dfHx7fSxuPShlP2wuZGVsZWdhdGVUeXBlOmwu
YmluZFR5cGUpfHxuLGw9ci5ldmVudC5zcGVjaWFsW25dfHx7fSxrPXIuZXh0ZW5kKHt0eXBlOm4s
b3JpZ1R5cGU6cCxkYXRhOmQsaGFuZGxlcjpjLGd1aWQ6Yy5ndWlkLHNlbGVjdG9yOmUsbmVlZHND
b250ZXh0OmUmJnIuZXhwci5tYXRjaC5uZWVkc0NvbnRleHQudGVzdChlKSxuYW1lc3BhY2U6by5q
b2luKCIuIil9LGYpLChtPWlbbl0pfHwobT1pW25dPVtdLG0uZGVsZWdhdGVDb3VudD0wLGwuc2V0
dXAmJmwuc2V0dXAuY2FsbChhLGQsbyxnKSE9PSExfHxhLmFkZEV2ZW50TGlzdGVuZXImJmEuYWRk
RXZlbnRMaXN0ZW5lcihuLGcpKSxsLmFkZCYmKGwuYWRkLmNhbGwoYSxrKSxrLmhhbmRsZXIuZ3Vp
ZHx8KGsuaGFuZGxlci5ndWlkPWMuZ3VpZCkpLGU/bS5zcGxpY2UobS5kZWxlZ2F0ZUNvdW50Kyss
MCxrKTptLnB1c2goayksci5ldmVudC5nbG9iYWxbbl09ITApfX0scmVtb3ZlOmZ1bmN0aW9uKGEs
YixjLGQsZSl7dmFyIGYsZyxoLGksaixrLGwsbSxuLG8scCxxPVYuaGFzRGF0YShhKSYmVi5nZXQo
YSk7aWYocSYmKGk9cS5ldmVudHMpKXtiPShifHwiIikubWF0Y2goSyl8fFsiIl0saj1iLmxlbmd0
aDt3aGlsZShqLS0paWYoaD10YS5leGVjKGJbal0pfHxbXSxuPXA9aFsxXSxvPShoWzJdfHwiIiku
c3BsaXQoIi4iKS5zb3J0KCksbil7bD1yLmV2ZW50LnNwZWNpYWxbbl18fHt9LG49KGQ/bC5kZWxl
Z2F0ZVR5cGU6bC5iaW5kVHlwZSl8fG4sbT1pW25dfHxbXSxoPWhbMl0mJm5ldyBSZWdFeHAoIihe
fFxcLikiK28uam9pbigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIiksZz1mPW0ubGVuZ3RoO3do
aWxlKGYtLSlrPW1bZl0sIWUmJnAhPT1rLm9yaWdUeXBlfHxjJiZjLmd1aWQhPT1rLmd1aWR8fGgm
JiFoLnRlc3Qoay5uYW1lc3BhY2UpfHxkJiZkIT09ay5zZWxlY3RvciYmKCIqKiIhPT1kfHwhay5z
ZWxlY3Rvcil8fChtLnNwbGljZShmLDEpLGsuc2VsZWN0b3ImJm0uZGVsZWdhdGVDb3VudC0tLGwu
cmVtb3ZlJiZsLnJlbW92ZS5jYWxsKGEsaykpO2cmJiFtLmxlbmd0aCYmKGwudGVhcmRvd24mJmwu
dGVhcmRvd24uY2FsbChhLG8scS5oYW5kbGUpIT09ITF8fHIucmVtb3ZlRXZlbnQoYSxuLHEuaGFu
ZGxlKSxkZWxldGUgaVtuXSl9ZWxzZSBmb3IobiBpbiBpKXIuZXZlbnQucmVtb3ZlKGEsbitiW2pd
LGMsZCwhMCk7ci5pc0VtcHR5T2JqZWN0KGkpJiZWLnJlbW92ZShhLCJoYW5kbGUgZXZlbnRzIil9
fSxkaXNwYXRjaDpmdW5jdGlvbihhKXt2YXIgYj1yLmV2ZW50LmZpeChhKSxjLGQsZSxmLGcsaCxp
PW5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoKSxqPShWLmdldCh0aGlzLCJldmVudHMiKXx8e30p
W2IudHlwZV18fFtdLGs9ci5ldmVudC5zcGVjaWFsW2IudHlwZV18fHt9O2ZvcihpWzBdPWIsYz0x
O2M8YXJndW1lbnRzLmxlbmd0aDtjKyspaVtjXT1hcmd1bWVudHNbY107aWYoYi5kZWxlZ2F0ZVRh
cmdldD10aGlzLCFrLnByZURpc3BhdGNofHxrLnByZURpc3BhdGNoLmNhbGwodGhpcyxiKSE9PSEx
KXtoPXIuZXZlbnQuaGFuZGxlcnMuY2FsbCh0aGlzLGIsaiksYz0wO3doaWxlKChmPWhbYysrXSkm
JiFiLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpe2IuY3VycmVudFRhcmdldD1mLmVsZW0sZD0wO3do
aWxlKChnPWYuaGFuZGxlcnNbZCsrXSkmJiFiLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVk
KCkpYi5ybmFtZXNwYWNlJiYhYi5ybmFtZXNwYWNlLnRlc3QoZy5uYW1lc3BhY2UpfHwoYi5oYW5k
bGVPYmo9ZyxiLmRhdGE9Zy5kYXRhLGU9KChyLmV2ZW50LnNwZWNpYWxbZy5vcmlnVHlwZV18fHt9
KS5oYW5kbGV8fGcuaGFuZGxlcikuYXBwbHkoZi5lbGVtLGkpLHZvaWQgMCE9PWUmJihiLnJlc3Vs
dD1lKT09PSExJiYoYi5wcmV2ZW50RGVmYXVsdCgpLGIuc3RvcFByb3BhZ2F0aW9uKCkpKX1yZXR1
cm4gay5wb3N0RGlzcGF0Y2gmJmsucG9zdERpc3BhdGNoLmNhbGwodGhpcyxiKSxiLnJlc3VsdH19
LGhhbmRsZXJzOmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlLGYsZyxoPVtdLGk9Yi5kZWxlZ2F0ZUNv
dW50LGo9YS50YXJnZXQ7aWYoaSYmai5ub2RlVHlwZSYmISgiY2xpY2siPT09YS50eXBlJiZhLmJ1
dHRvbj49MSkpZm9yKDtqIT09dGhpcztqPWoucGFyZW50Tm9kZXx8dGhpcylpZigxPT09ai5ub2Rl
VHlwZSYmKCJjbGljayIhPT1hLnR5cGV8fGouZGlzYWJsZWQhPT0hMCkpe2ZvcihmPVtdLGc9e30s
Yz0wO2M8aTtjKyspZD1iW2NdLGU9ZC5zZWxlY3RvcisiICIsdm9pZCAwPT09Z1tlXSYmKGdbZV09
ZC5uZWVkc0NvbnRleHQ/cihlLHRoaXMpLmluZGV4KGopPi0xOnIuZmluZChlLHRoaXMsbnVsbCxb
al0pLmxlbmd0aCksZ1tlXSYmZi5wdXNoKGQpO2YubGVuZ3RoJiZoLnB1c2goe2VsZW06aixoYW5k
bGVyczpmfSl9cmV0dXJuIGo9dGhpcyxpPGIubGVuZ3RoJiZoLnB1c2goe2VsZW06aixoYW5kbGVy
czpiLnNsaWNlKGkpfSksaH0sYWRkUHJvcDpmdW5jdGlvbihhLGIpe09iamVjdC5kZWZpbmVQcm9w
ZXJ0eShyLkV2ZW50LnByb3RvdHlwZSxhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxn
ZXQ6ci5pc0Z1bmN0aW9uKGIpP2Z1bmN0aW9uKCl7aWYodGhpcy5vcmlnaW5hbEV2ZW50KXJldHVy
biBiKHRoaXMub3JpZ2luYWxFdmVudCl9OmZ1bmN0aW9uKCl7aWYodGhpcy5vcmlnaW5hbEV2ZW50
KXJldHVybiB0aGlzLm9yaWdpbmFsRXZlbnRbYV19LHNldDpmdW5jdGlvbihiKXtPYmplY3QuZGVm
aW5lUHJvcGVydHkodGhpcyxhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJs
ZTohMCx2YWx1ZTpifSl9fSl9LGZpeDpmdW5jdGlvbihhKXtyZXR1cm4gYVtyLmV4cGFuZG9dP2E6
bmV3IHIuRXZlbnQoYSl9LHNwZWNpYWw6e2xvYWQ6e25vQnViYmxlOiEwfSxmb2N1czp7dHJpZ2dl
cjpmdW5jdGlvbigpe2lmKHRoaXMhPT13YSgpJiZ0aGlzLmZvY3VzKXJldHVybiB0aGlzLmZvY3Vz
KCksITF9LGRlbGVnYXRlVHlwZToiZm9jdXNpbiJ9LGJsdXI6e3RyaWdnZXI6ZnVuY3Rpb24oKXtp
Zih0aGlzPT09d2EoKSYmdGhpcy5ibHVyKXJldHVybiB0aGlzLmJsdXIoKSwhMX0sZGVsZWdhdGVU
eXBlOiJmb2N1c291dCJ9LGNsaWNrOnt0cmlnZ2VyOmZ1bmN0aW9uKCl7aWYoImNoZWNrYm94Ij09
PXRoaXMudHlwZSYmdGhpcy5jbGljayYmci5ub2RlTmFtZSh0aGlzLCJpbnB1dCIpKXJldHVybiB0
aGlzLmNsaWNrKCksITF9LF9kZWZhdWx0OmZ1bmN0aW9uKGEpe3JldHVybiByLm5vZGVOYW1lKGEu
dGFyZ2V0LCJhIil9fSxiZWZvcmV1bmxvYWQ6e3Bvc3REaXNwYXRjaDpmdW5jdGlvbihhKXt2b2lk
IDAhPT1hLnJlc3VsdCYmYS5vcmlnaW5hbEV2ZW50JiYoYS5vcmlnaW5hbEV2ZW50LnJldHVyblZh
bHVlPWEucmVzdWx0KX19fX0sci5yZW1vdmVFdmVudD1mdW5jdGlvbihhLGIsYyl7YS5yZW1vdmVF
dmVudExpc3RlbmVyJiZhLnJlbW92ZUV2ZW50TGlzdGVuZXIoYixjKX0sci5FdmVudD1mdW5jdGlv
bihhLGIpe3JldHVybiB0aGlzIGluc3RhbmNlb2Ygci5FdmVudD8oYSYmYS50eXBlPyh0aGlzLm9y
aWdpbmFsRXZlbnQ9YSx0aGlzLnR5cGU9YS50eXBlLHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPWEu
ZGVmYXVsdFByZXZlbnRlZHx8dm9pZCAwPT09YS5kZWZhdWx0UHJldmVudGVkJiZhLnJldHVyblZh
bHVlPT09ITE/dWE6dmEsdGhpcy50YXJnZXQ9YS50YXJnZXQmJjM9PT1hLnRhcmdldC5ub2RlVHlw
ZT9hLnRhcmdldC5wYXJlbnROb2RlOmEudGFyZ2V0LHRoaXMuY3VycmVudFRhcmdldD1hLmN1cnJl
bnRUYXJnZXQsdGhpcy5yZWxhdGVkVGFyZ2V0PWEucmVsYXRlZFRhcmdldCk6dGhpcy50eXBlPWEs
YiYmci5leHRlbmQodGhpcyxiKSx0aGlzLnRpbWVTdGFtcD1hJiZhLnRpbWVTdGFtcHx8ci5ub3co
KSx2b2lkKHRoaXNbci5leHBhbmRvXT0hMCkpOm5ldyByLkV2ZW50KGEsYil9LHIuRXZlbnQucHJv
dG90eXBlPXtjb25zdHJ1Y3RvcjpyLkV2ZW50LGlzRGVmYXVsdFByZXZlbnRlZDp2YSxpc1Byb3Bh
Z2F0aW9uU3RvcHBlZDp2YSxpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZDp2YSxpc1NpbXVs
YXRlZDohMSxwcmV2ZW50RGVmYXVsdDpmdW5jdGlvbigpe3ZhciBhPXRoaXMub3JpZ2luYWxFdmVu
dDt0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD11YSxhJiYhdGhpcy5pc1NpbXVsYXRlZCYmYS5wcmV2
ZW50RGVmYXVsdCgpfSxzdG9wUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9yaWdp
bmFsRXZlbnQ7dGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD11YSxhJiYhdGhpcy5pc1NpbXVsYXRl
ZCYmYS5zdG9wUHJvcGFnYXRpb24oKX0sc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uOmZ1bmN0aW9u
KCl7dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0
b3BwZWQ9dWEsYSYmIXRoaXMuaXNTaW11bGF0ZWQmJmEuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9u
KCksdGhpcy5zdG9wUHJvcGFnYXRpb24oKX19LHIuZWFjaCh7YWx0S2V5OiEwLGJ1YmJsZXM6ITAs
Y2FuY2VsYWJsZTohMCxjaGFuZ2VkVG91Y2hlczohMCxjdHJsS2V5OiEwLGRldGFpbDohMCxldmVu
dFBoYXNlOiEwLG1ldGFLZXk6ITAscGFnZVg6ITAscGFnZVk6ITAsc2hpZnRLZXk6ITAsdmlldzoh
MCwiY2hhciI6ITAsY2hhckNvZGU6ITAsa2V5OiEwLGtleUNvZGU6ITAsYnV0dG9uOiEwLGJ1dHRv
bnM6ITAsY2xpZW50WDohMCxjbGllbnRZOiEwLG9mZnNldFg6ITAsb2Zmc2V0WTohMCxwb2ludGVy
SWQ6ITAscG9pbnRlclR5cGU6ITAsc2NyZWVuWDohMCxzY3JlZW5ZOiEwLHRhcmdldFRvdWNoZXM6
ITAsdG9FbGVtZW50OiEwLHRvdWNoZXM6ITAsd2hpY2g6ZnVuY3Rpb24oYSl7dmFyIGI9YS5idXR0
b247cmV0dXJuIG51bGw9PWEud2hpY2gmJnJhLnRlc3QoYS50eXBlKT9udWxsIT1hLmNoYXJDb2Rl
P2EuY2hhckNvZGU6YS5rZXlDb2RlOiFhLndoaWNoJiZ2b2lkIDAhPT1iJiZzYS50ZXN0KGEudHlw
ZSk/MSZiPzE6MiZiPzM6NCZiPzI6MDphLndoaWNofX0sci5ldmVudC5hZGRQcm9wKSxyLmVhY2go
e21vdXNlZW50ZXI6Im1vdXNlb3ZlciIsbW91c2VsZWF2ZToibW91c2VvdXQiLHBvaW50ZXJlbnRl
cjoicG9pbnRlcm92ZXIiLHBvaW50ZXJsZWF2ZToicG9pbnRlcm91dCJ9LGZ1bmN0aW9uKGEsYil7
ci5ldmVudC5zcGVjaWFsW2FdPXtkZWxlZ2F0ZVR5cGU6YixiaW5kVHlwZTpiLGhhbmRsZTpmdW5j
dGlvbihhKXt2YXIgYyxkPXRoaXMsZT1hLnJlbGF0ZWRUYXJnZXQsZj1hLmhhbmRsZU9iajtyZXR1
cm4gZSYmKGU9PT1kfHxyLmNvbnRhaW5zKGQsZSkpfHwoYS50eXBlPWYub3JpZ1R5cGUsYz1mLmhh
bmRsZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpLGEudHlwZT1iKSxjfX19KSxyLmZuLmV4dGVuZCh7
b246ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIHhhKHRoaXMsYSxiLGMsZCl9LG9uZTpmdW5jdGlv
bihhLGIsYyxkKXtyZXR1cm4geGEodGhpcyxhLGIsYyxkLDEpfSxvZmY6ZnVuY3Rpb24oYSxiLGMp
e3ZhciBkLGU7aWYoYSYmYS5wcmV2ZW50RGVmYXVsdCYmYS5oYW5kbGVPYmopcmV0dXJuIGQ9YS5o
YW5kbGVPYmoscihhLmRlbGVnYXRlVGFyZ2V0KS5vZmYoZC5uYW1lc3BhY2U/ZC5vcmlnVHlwZSsi
LiIrZC5uYW1lc3BhY2U6ZC5vcmlnVHlwZSxkLnNlbGVjdG9yLGQuaGFuZGxlciksdGhpcztpZigi
b2JqZWN0Ij09dHlwZW9mIGEpe2ZvcihlIGluIGEpdGhpcy5vZmYoZSxiLGFbZV0pO3JldHVybiB0
aGlzfXJldHVybiBiIT09ITEmJiJmdW5jdGlvbiIhPXR5cGVvZiBifHwoYz1iLGI9dm9pZCAwKSxj
PT09ITEmJihjPXZhKSx0aGlzLmVhY2goZnVuY3Rpb24oKXtyLmV2ZW50LnJlbW92ZSh0aGlzLGEs
YyxiKX0pfX0pO3ZhciB5YT0vPCg/IWFyZWF8YnJ8Y29sfGVtYmVkfGhyfGltZ3xpbnB1dHxsaW5r
fG1ldGF8cGFyYW0pKChbYS16XVteXC9cMD5ceDIwXHRcclxuXGZdKilbXj5dKilcLz4vZ2ksemE9
LzxzY3JpcHR8PHN0eWxlfDxsaW5rL2ksQWE9L2NoZWNrZWRccyooPzpbXj1dfD1ccyouY2hlY2tl
ZC4pL2ksQmE9L150cnVlXC8oLiopLyxDYT0vXlxzKjwhKD86XFtDREFUQVxbfC0tKXwoPzpcXVxd
fC0tKT5ccyokL2c7ZnVuY3Rpb24gRGEoYSxiKXtyZXR1cm4gci5ub2RlTmFtZShhLCJ0YWJsZSIp
JiZyLm5vZGVOYW1lKDExIT09Yi5ub2RlVHlwZT9iOmIuZmlyc3RDaGlsZCwidHIiKT9hLmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJ0Ym9keSIpWzBdfHxhOmF9ZnVuY3Rpb24gRWEoYSl7cmV0dXJuIGEu
dHlwZT0obnVsbCE9PWEuZ2V0QXR0cmlidXRlKCJ0eXBlIikpKyIvIithLnR5cGUsYX1mdW5jdGlv
biBGYShhKXt2YXIgYj1CYS5leGVjKGEudHlwZSk7cmV0dXJuIGI/YS50eXBlPWJbMV06YS5yZW1v
dmVBdHRyaWJ1dGUoInR5cGUiKSxhfWZ1bmN0aW9uIEdhKGEsYil7dmFyIGMsZCxlLGYsZyxoLGks
ajtpZigxPT09Yi5ub2RlVHlwZSl7aWYoVi5oYXNEYXRhKGEpJiYoZj1WLmFjY2VzcyhhKSxnPVYu
c2V0KGIsZiksaj1mLmV2ZW50cykpe2RlbGV0ZSBnLmhhbmRsZSxnLmV2ZW50cz17fTtmb3IoZSBp
biBqKWZvcihjPTAsZD1qW2VdLmxlbmd0aDtjPGQ7YysrKXIuZXZlbnQuYWRkKGIsZSxqW2VdW2Nd
KX1XLmhhc0RhdGEoYSkmJihoPVcuYWNjZXNzKGEpLGk9ci5leHRlbmQoe30saCksVy5zZXQoYixp
KSl9fWZ1bmN0aW9uIEhhKGEsYil7dmFyIGM9Yi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOyJpbnB1
dCI9PT1jJiZpYS50ZXN0KGEudHlwZSk/Yi5jaGVja2VkPWEuY2hlY2tlZDoiaW5wdXQiIT09YyYm
InRleHRhcmVhIiE9PWN8fChiLmRlZmF1bHRWYWx1ZT1hLmRlZmF1bHRWYWx1ZSl9ZnVuY3Rpb24g
SWEoYSxiLGMsZCl7Yj1nLmFwcGx5KFtdLGIpO3ZhciBlLGYsaCxpLGosayxsPTAsbT1hLmxlbmd0
aCxuPW0tMSxxPWJbMF0scz1yLmlzRnVuY3Rpb24ocSk7aWYoc3x8bT4xJiYic3RyaW5nIj09dHlw
ZW9mIHEmJiFvLmNoZWNrQ2xvbmUmJkFhLnRlc3QocSkpcmV0dXJuIGEuZWFjaChmdW5jdGlvbihl
KXt2YXIgZj1hLmVxKGUpO3MmJihiWzBdPXEuY2FsbCh0aGlzLGUsZi5odG1sKCkpKSxJYShmLGIs
YyxkKX0pO2lmKG0mJihlPXBhKGIsYVswXS5vd25lckRvY3VtZW50LCExLGEsZCksZj1lLmZpcnN0
Q2hpbGQsMT09PWUuY2hpbGROb2Rlcy5sZW5ndGgmJihlPWYpLGZ8fGQpKXtmb3IoaD1yLm1hcCht
YShlLCJzY3JpcHQiKSxFYSksaT1oLmxlbmd0aDtsPG07bCsrKWo9ZSxsIT09biYmKGo9ci5jbG9u
ZShqLCEwLCEwKSxpJiZyLm1lcmdlKGgsbWEoaiwic2NyaXB0IikpKSxjLmNhbGwoYVtsXSxqLGwp
O2lmKGkpZm9yKGs9aFtoLmxlbmd0aC0xXS5vd25lckRvY3VtZW50LHIubWFwKGgsRmEpLGw9MDts
PGk7bCsrKWo9aFtsXSxrYS50ZXN0KGoudHlwZXx8IiIpJiYhVi5hY2Nlc3MoaiwiZ2xvYmFsRXZh
bCIpJiZyLmNvbnRhaW5zKGssaikmJihqLnNyYz9yLl9ldmFsVXJsJiZyLl9ldmFsVXJsKGouc3Jj
KTpwKGoudGV4dENvbnRlbnQucmVwbGFjZShDYSwiIiksaykpfXJldHVybiBhfWZ1bmN0aW9uIEph
KGEsYixjKXtmb3IodmFyIGQsZT1iP3IuZmlsdGVyKGIsYSk6YSxmPTA7bnVsbCE9KGQ9ZVtmXSk7
ZisrKWN8fDEhPT1kLm5vZGVUeXBlfHxyLmNsZWFuRGF0YShtYShkKSksZC5wYXJlbnROb2RlJiYo
YyYmci5jb250YWlucyhkLm93bmVyRG9jdW1lbnQsZCkmJm5hKG1hKGQsInNjcmlwdCIpKSxkLnBh
cmVudE5vZGUucmVtb3ZlQ2hpbGQoZCkpO3JldHVybiBhfXIuZXh0ZW5kKHtodG1sUHJlZmlsdGVy
OmZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoeWEsIjwkMT48LyQyPiIpfSxjbG9uZTpmdW5j
dGlvbihhLGIsYyl7dmFyIGQsZSxmLGcsaD1hLmNsb25lTm9kZSghMCksaT1yLmNvbnRhaW5zKGEu
b3duZXJEb2N1bWVudCxhKTtpZighKG8ubm9DbG9uZUNoZWNrZWR8fDEhPT1hLm5vZGVUeXBlJiYx
MSE9PWEubm9kZVR5cGV8fHIuaXNYTUxEb2MoYSkpKWZvcihnPW1hKGgpLGY9bWEoYSksZD0wLGU9
Zi5sZW5ndGg7ZDxlO2QrKylIYShmW2RdLGdbZF0pO2lmKGIpaWYoYylmb3IoZj1mfHxtYShhKSxn
PWd8fG1hKGgpLGQ9MCxlPWYubGVuZ3RoO2Q8ZTtkKyspR2EoZltkXSxnW2RdKTtlbHNlIEdhKGEs
aCk7cmV0dXJuIGc9bWEoaCwic2NyaXB0IiksZy5sZW5ndGg+MCYmbmEoZywhaSYmbWEoYSwic2Ny
aXB0IikpLGh9LGNsZWFuRGF0YTpmdW5jdGlvbihhKXtmb3IodmFyIGIsYyxkLGU9ci5ldmVudC5z
cGVjaWFsLGY9MDt2b2lkIDAhPT0oYz1hW2ZdKTtmKyspaWYoVChjKSl7aWYoYj1jW1YuZXhwYW5k
b10pe2lmKGIuZXZlbnRzKWZvcihkIGluIGIuZXZlbnRzKWVbZF0/ci5ldmVudC5yZW1vdmUoYyxk
KTpyLnJlbW92ZUV2ZW50KGMsZCxiLmhhbmRsZSk7Y1tWLmV4cGFuZG9dPXZvaWQgMH1jW1cuZXhw
YW5kb10mJihjW1cuZXhwYW5kb109dm9pZCAwKX19fSksci5mbi5leHRlbmQoe2RldGFjaDpmdW5j
dGlvbihhKXtyZXR1cm4gSmEodGhpcyxhLCEwKX0scmVtb3ZlOmZ1bmN0aW9uKGEpe3JldHVybiBK
YSh0aGlzLGEpfSx0ZXh0OmZ1bmN0aW9uKGEpe3JldHVybiBTKHRoaXMsZnVuY3Rpb24oYSl7cmV0
dXJuIHZvaWQgMD09PWE/ci50ZXh0KHRoaXMpOnRoaXMuZW1wdHkoKS5lYWNoKGZ1bmN0aW9uKCl7
MSE9PXRoaXMubm9kZVR5cGUmJjExIT09dGhpcy5ub2RlVHlwZSYmOSE9PXRoaXMubm9kZVR5cGV8
fCh0aGlzLnRleHRDb250ZW50PWEpfSl9LG51bGwsYSxhcmd1bWVudHMubGVuZ3RoKX0sYXBwZW5k
OmZ1bmN0aW9uKCl7cmV0dXJuIElhKHRoaXMsYXJndW1lbnRzLGZ1bmN0aW9uKGEpe2lmKDE9PT10
aGlzLm5vZGVUeXBlfHwxMT09PXRoaXMubm9kZVR5cGV8fDk9PT10aGlzLm5vZGVUeXBlKXt2YXIg
Yj1EYSh0aGlzLGEpO2IuYXBwZW5kQ2hpbGQoYSl9fSl9LHByZXBlbmQ6ZnVuY3Rpb24oKXtyZXR1
cm4gSWEodGhpcyxhcmd1bWVudHMsZnVuY3Rpb24oYSl7aWYoMT09PXRoaXMubm9kZVR5cGV8fDEx
PT09dGhpcy5ub2RlVHlwZXx8OT09PXRoaXMubm9kZVR5cGUpe3ZhciBiPURhKHRoaXMsYSk7Yi5p
bnNlcnRCZWZvcmUoYSxiLmZpcnN0Q2hpbGQpfX0pfSxiZWZvcmU6ZnVuY3Rpb24oKXtyZXR1cm4g
SWEodGhpcyxhcmd1bWVudHMsZnVuY3Rpb24oYSl7dGhpcy5wYXJlbnROb2RlJiZ0aGlzLnBhcmVu
dE5vZGUuaW5zZXJ0QmVmb3JlKGEsdGhpcyl9KX0sYWZ0ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gSWEo
dGhpcyxhcmd1bWVudHMsZnVuY3Rpb24oYSl7dGhpcy5wYXJlbnROb2RlJiZ0aGlzLnBhcmVudE5v
ZGUuaW5zZXJ0QmVmb3JlKGEsdGhpcy5uZXh0U2libGluZyl9KX0sZW1wdHk6ZnVuY3Rpb24oKXtm
b3IodmFyIGEsYj0wO251bGwhPShhPXRoaXNbYl0pO2IrKykxPT09YS5ub2RlVHlwZSYmKHIuY2xl
YW5EYXRhKG1hKGEsITEpKSxhLnRleHRDb250ZW50PSIiKTtyZXR1cm4gdGhpc30sY2xvbmU6ZnVu
Y3Rpb24oYSxiKXtyZXR1cm4gYT1udWxsIT1hJiZhLGI9bnVsbD09Yj9hOmIsdGhpcy5tYXAoZnVu
Y3Rpb24oKXtyZXR1cm4gci5jbG9uZSh0aGlzLGEsYil9KX0saHRtbDpmdW5jdGlvbihhKXtyZXR1
cm4gUyh0aGlzLGZ1bmN0aW9uKGEpe3ZhciBiPXRoaXNbMF18fHt9LGM9MCxkPXRoaXMubGVuZ3Ro
O2lmKHZvaWQgMD09PWEmJjE9PT1iLm5vZGVUeXBlKXJldHVybiBiLmlubmVySFRNTDtpZigic3Ry
aW5nIj09dHlwZW9mIGEmJiF6YS50ZXN0KGEpJiYhbGFbKGphLmV4ZWMoYSl8fFsiIiwiIl0pWzFd
LnRvTG93ZXJDYXNlKCldKXthPXIuaHRtbFByZWZpbHRlcihhKTt0cnl7Zm9yKDtjPGQ7YysrKWI9
dGhpc1tjXXx8e30sMT09PWIubm9kZVR5cGUmJihyLmNsZWFuRGF0YShtYShiLCExKSksYi5pbm5l
ckhUTUw9YSk7Yj0wfWNhdGNoKGUpe319YiYmdGhpcy5lbXB0eSgpLmFwcGVuZChhKX0sbnVsbCxh
LGFyZ3VtZW50cy5sZW5ndGgpfSxyZXBsYWNlV2l0aDpmdW5jdGlvbigpe3ZhciBhPVtdO3JldHVy
biBJYSh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihiKXt2YXIgYz10aGlzLnBhcmVudE5vZGU7ci5p
bkFycmF5KHRoaXMsYSk8MCYmKHIuY2xlYW5EYXRhKG1hKHRoaXMpKSxjJiZjLnJlcGxhY2VDaGls
ZChiLHRoaXMpKX0sYSl9fSksci5lYWNoKHthcHBlbmRUbzoiYXBwZW5kIixwcmVwZW5kVG86InBy
ZXBlbmQiLGluc2VydEJlZm9yZToiYmVmb3JlIixpbnNlcnRBZnRlcjoiYWZ0ZXIiLHJlcGxhY2VB
bGw6InJlcGxhY2VXaXRoIn0sZnVuY3Rpb24oYSxiKXtyLmZuW2FdPWZ1bmN0aW9uKGEpe2Zvcih2
YXIgYyxkPVtdLGU9cihhKSxmPWUubGVuZ3RoLTEsZz0wO2c8PWY7ZysrKWM9Zz09PWY/dGhpczp0
aGlzLmNsb25lKCEwKSxyKGVbZ10pW2JdKGMpLGguYXBwbHkoZCxjLmdldCgpKTtyZXR1cm4gdGhp
cy5wdXNoU3RhY2soZCl9fSk7dmFyIEthPS9ebWFyZ2luLyxMYT1uZXcgUmVnRXhwKCJeKCIrXysi
KSg/IXB4KVthLXolXSskIiwiaSIpLE1hPWZ1bmN0aW9uKGIpe3ZhciBjPWIub3duZXJEb2N1bWVu
dC5kZWZhdWx0VmlldztyZXR1cm4gYyYmYy5vcGVuZXJ8fChjPWEpLGMuZ2V0Q29tcHV0ZWRTdHls
ZShiKX07IWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYigpe2lmKGkpe2kuc3R5bGUuY3NzVGV4dD0iYm94
LXNpemluZzpib3JkZXItYm94O3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6YmxvY2s7bWFyZ2lu
OmF1dG87Ym9yZGVyOjFweDtwYWRkaW5nOjFweDt0b3A6MSU7d2lkdGg6NTAlIixpLmlubmVySFRN
TD0iIixxYS5hcHBlbmRDaGlsZChoKTt2YXIgYj1hLmdldENvbXB1dGVkU3R5bGUoaSk7Yz0iMSUi
IT09Yi50b3AsZz0iMnB4Ij09PWIubWFyZ2luTGVmdCxlPSI0cHgiPT09Yi53aWR0aCxpLnN0eWxl
Lm1hcmdpblJpZ2h0PSI1MCUiLGY9IjRweCI9PT1iLm1hcmdpblJpZ2h0LHFhLnJlbW92ZUNoaWxk
KGgpLGk9bnVsbH19dmFyIGMsZSxmLGcsaD1kLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGk9ZC5jcmVh
dGVFbGVtZW50KCJkaXYiKTtpLnN0eWxlJiYoaS5zdHlsZS5iYWNrZ3JvdW5kQ2xpcD0iY29udGVu
dC1ib3giLGkuY2xvbmVOb2RlKCEwKS5zdHlsZS5iYWNrZ3JvdW5kQ2xpcD0iIixvLmNsZWFyQ2xv
bmVTdHlsZT0iY29udGVudC1ib3giPT09aS5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCxoLnN0eWxlLmNz
c1RleHQ9ImJvcmRlcjowO3dpZHRoOjhweDtoZWlnaHQ6MDt0b3A6MDtsZWZ0Oi05OTk5cHg7cGFk
ZGluZzowO21hcmdpbi10b3A6MXB4O3Bvc2l0aW9uOmFic29sdXRlIixoLmFwcGVuZENoaWxkKGkp
LHIuZXh0ZW5kKG8se3BpeGVsUG9zaXRpb246ZnVuY3Rpb24oKXtyZXR1cm4gYigpLGN9LGJveFNp
emluZ1JlbGlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIGIoKSxlfSxwaXhlbE1hcmdpblJpZ2h0OmZ1
bmN0aW9uKCl7cmV0dXJuIGIoKSxmfSxyZWxpYWJsZU1hcmdpbkxlZnQ6ZnVuY3Rpb24oKXtyZXR1
cm4gYigpLGd9fSkpfSgpO2Z1bmN0aW9uIE5hKGEsYixjKXt2YXIgZCxlLGYsZyxoPWEuc3R5bGU7
cmV0dXJuIGM9Y3x8TWEoYSksYyYmKGc9Yy5nZXRQcm9wZXJ0eVZhbHVlKGIpfHxjW2JdLCIiIT09
Z3x8ci5jb250YWlucyhhLm93bmVyRG9jdW1lbnQsYSl8fChnPXIuc3R5bGUoYSxiKSksIW8ucGl4
ZWxNYXJnaW5SaWdodCgpJiZMYS50ZXN0KGcpJiZLYS50ZXN0KGIpJiYoZD1oLndpZHRoLGU9aC5t
aW5XaWR0aCxmPWgubWF4V2lkdGgsaC5taW5XaWR0aD1oLm1heFdpZHRoPWgud2lkdGg9ZyxnPWMu
d2lkdGgsaC53aWR0aD1kLGgubWluV2lkdGg9ZSxoLm1heFdpZHRoPWYpKSx2b2lkIDAhPT1nP2cr
IiI6Z31mdW5jdGlvbiBPYShhLGIpe3JldHVybntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYSgpP3Zv
aWQgZGVsZXRlIHRoaXMuZ2V0Oih0aGlzLmdldD1iKS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fX12
YXIgUGE9L14obm9uZXx0YWJsZSg/IS1jW2VhXSkuKykvLFFhPXtwb3NpdGlvbjoiYWJzb2x1dGUi
LHZpc2liaWxpdHk6ImhpZGRlbiIsZGlzcGxheToiYmxvY2sifSxSYT17bGV0dGVyU3BhY2luZzoi
MCIsZm9udFdlaWdodDoiNDAwIn0sU2E9WyJXZWJraXQiLCJNb3oiLCJtcyJdLFRhPWQuY3JlYXRl
RWxlbWVudCgiZGl2Iikuc3R5bGU7ZnVuY3Rpb24gVWEoYSl7aWYoYSBpbiBUYSlyZXR1cm4gYTt2
YXIgYj1hWzBdLnRvVXBwZXJDYXNlKCkrYS5zbGljZSgxKSxjPVNhLmxlbmd0aDt3aGlsZShjLS0p
aWYoYT1TYVtjXStiLGEgaW4gVGEpcmV0dXJuIGF9ZnVuY3Rpb24gVmEoYSxiLGMpe3ZhciBkPWFh
LmV4ZWMoYik7cmV0dXJuIGQ/TWF0aC5tYXgoMCxkWzJdLShjfHwwKSkrKGRbM118fCJweCIpOmJ9
ZnVuY3Rpb24gV2EoYSxiLGMsZCxlKXt2YXIgZixnPTA7Zm9yKGY9Yz09PShkPyJib3JkZXIiOiJj
b250ZW50Iik/NDoid2lkdGgiPT09Yj8xOjA7Zjw0O2YrPTIpIm1hcmdpbiI9PT1jJiYoZys9ci5j
c3MoYSxjK2JhW2ZdLCEwLGUpKSxkPygiY29udGVudCI9PT1jJiYoZy09ci5jc3MoYSwicGFkZGlu
ZyIrYmFbZl0sITAsZSkpLCJtYXJnaW4iIT09YyYmKGctPXIuY3NzKGEsImJvcmRlciIrYmFbZl0r
IldpZHRoIiwhMCxlKSkpOihnKz1yLmNzcyhhLCJwYWRkaW5nIitiYVtmXSwhMCxlKSwicGFkZGlu
ZyIhPT1jJiYoZys9ci5jc3MoYSwiYm9yZGVyIitiYVtmXSsiV2lkdGgiLCEwLGUpKSk7cmV0dXJu
IGd9ZnVuY3Rpb24gWGEoYSxiLGMpe3ZhciBkLGU9ITAsZj1NYShhKSxnPSJib3JkZXItYm94Ij09
PXIuY3NzKGEsImJveFNpemluZyIsITEsZik7aWYoYS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCYm
KGQ9YS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVtiXSksZDw9MHx8bnVsbD09ZCl7aWYoZD1OYShh
LGIsZiksKGQ8MHx8bnVsbD09ZCkmJihkPWEuc3R5bGVbYl0pLExhLnRlc3QoZCkpcmV0dXJuIGQ7
ZT1nJiYoby5ib3hTaXppbmdSZWxpYWJsZSgpfHxkPT09YS5zdHlsZVtiXSksZD1wYXJzZUZsb2F0
KGQpfHwwfXJldHVybiBkK1dhKGEsYixjfHwoZz8iYm9yZGVyIjoiY29udGVudCIpLGUsZikrInB4
In1yLmV4dGVuZCh7Y3NzSG9va3M6e29wYWNpdHk6e2dldDpmdW5jdGlvbihhLGIpe2lmKGIpe3Zh
ciBjPU5hKGEsIm9wYWNpdHkiKTtyZXR1cm4iIj09PWM/IjEiOmN9fX19LGNzc051bWJlcjp7YW5p
bWF0aW9uSXRlcmF0aW9uQ291bnQ6ITAsY29sdW1uQ291bnQ6ITAsZmlsbE9wYWNpdHk6ITAsZmxl
eEdyb3c6ITAsZmxleFNocmluazohMCxmb250V2VpZ2h0OiEwLGxpbmVIZWlnaHQ6ITAsb3BhY2l0
eTohMCxvcmRlcjohMCxvcnBoYW5zOiEwLHdpZG93czohMCx6SW5kZXg6ITAsem9vbTohMH0sY3Nz
UHJvcHM6eyJmbG9hdCI6ImNzc0Zsb2F0In0sc3R5bGU6ZnVuY3Rpb24oYSxiLGMsZCl7aWYoYSYm
MyE9PWEubm9kZVR5cGUmJjghPT1hLm5vZGVUeXBlJiZhLnN0eWxlKXt2YXIgZSxmLGcsaD1yLmNh
bWVsQ2FzZShiKSxpPWEuc3R5bGU7cmV0dXJuIGI9ci5jc3NQcm9wc1toXXx8KHIuY3NzUHJvcHNb
aF09VWEoaCl8fGgpLGc9ci5jc3NIb29rc1tiXXx8ci5jc3NIb29rc1toXSx2b2lkIDA9PT1jP2cm
JiJnZXQiaW4gZyYmdm9pZCAwIT09KGU9Zy5nZXQoYSwhMSxkKSk/ZTppW2JdOihmPXR5cGVvZiBj
LCJzdHJpbmciPT09ZiYmKGU9YWEuZXhlYyhjKSkmJmVbMV0mJihjPWVhKGEsYixlKSxmPSJudW1i
ZXIiKSxudWxsIT1jJiZjPT09YyYmKCJudW1iZXIiPT09ZiYmKGMrPWUmJmVbM118fChyLmNzc051
bWJlcltoXT8iIjoicHgiKSksby5jbGVhckNsb25lU3R5bGV8fCIiIT09Y3x8MCE9PWIuaW5kZXhP
ZigiYmFja2dyb3VuZCIpfHwoaVtiXT0iaW5oZXJpdCIpLGcmJiJzZXQiaW4gZyYmdm9pZCAwPT09
KGM9Zy5zZXQoYSxjLGQpKXx8KGlbYl09YykpLHZvaWQgMCl9fSxjc3M6ZnVuY3Rpb24oYSxiLGMs
ZCl7dmFyIGUsZixnLGg9ci5jYW1lbENhc2UoYik7cmV0dXJuIGI9ci5jc3NQcm9wc1toXXx8KHIu
Y3NzUHJvcHNbaF09VWEoaCl8fGgpLGc9ci5jc3NIb29rc1tiXXx8ci5jc3NIb29rc1toXSxnJiYi
Z2V0ImluIGcmJihlPWcuZ2V0KGEsITAsYykpLHZvaWQgMD09PWUmJihlPU5hKGEsYixkKSksIm5v
cm1hbCI9PT1lJiZiIGluIFJhJiYoZT1SYVtiXSksIiI9PT1jfHxjPyhmPXBhcnNlRmxvYXQoZSks
Yz09PSEwfHxpc0Zpbml0ZShmKT9mfHwwOmUpOmV9fSksci5lYWNoKFsiaGVpZ2h0Iiwid2lkdGgi
XSxmdW5jdGlvbihhLGIpe3IuY3NzSG9va3NbYl09e2dldDpmdW5jdGlvbihhLGMsZCl7aWYoYyly
ZXR1cm4hUGEudGVzdChyLmNzcyhhLCJkaXNwbGF5IikpfHxhLmdldENsaWVudFJlY3RzKCkubGVu
Z3RoJiZhLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoP1hhKGEsYixkKTpkYShhLFFhLGZ1
bmN0aW9uKCl7cmV0dXJuIFhhKGEsYixkKX0pfSxzZXQ6ZnVuY3Rpb24oYSxjLGQpe3ZhciBlLGY9
ZCYmTWEoYSksZz1kJiZXYShhLGIsZCwiYm9yZGVyLWJveCI9PT1yLmNzcyhhLCJib3hTaXppbmci
LCExLGYpLGYpO3JldHVybiBnJiYoZT1hYS5leGVjKGMpKSYmInB4IiE9PShlWzNdfHwicHgiKSYm
KGEuc3R5bGVbYl09YyxjPXIuY3NzKGEsYikpLFZhKGEsYyxnKX19fSksci5jc3NIb29rcy5tYXJn
aW5MZWZ0PU9hKG8ucmVsaWFibGVNYXJnaW5MZWZ0LGZ1bmN0aW9uKGEsYil7aWYoYilyZXR1cm4o
cGFyc2VGbG9hdChOYShhLCJtYXJnaW5MZWZ0IikpfHxhLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgp
LmxlZnQtZGEoYSx7bWFyZ2luTGVmdDowfSxmdW5jdGlvbigpe3JldHVybiBhLmdldEJvdW5kaW5n
Q2xpZW50UmVjdCgpLmxlZnR9KSkrInB4In0pLHIuZWFjaCh7bWFyZ2luOiIiLHBhZGRpbmc6IiIs
Ym9yZGVyOiJXaWR0aCJ9LGZ1bmN0aW9uKGEsYil7ci5jc3NIb29rc1thK2JdPXtleHBhbmQ6ZnVu
Y3Rpb24oYyl7Zm9yKHZhciBkPTAsZT17fSxmPSJzdHJpbmciPT10eXBlb2YgYz9jLnNwbGl0KCIg
Iik6W2NdO2Q8NDtkKyspZVthK2JhW2RdK2JdPWZbZF18fGZbZC0yXXx8ZlswXTtyZXR1cm4gZX19
LEthLnRlc3QoYSl8fChyLmNzc0hvb2tzW2ErYl0uc2V0PVZhKX0pLHIuZm4uZXh0ZW5kKHtjc3M6
ZnVuY3Rpb24oYSxiKXtyZXR1cm4gUyh0aGlzLGZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGY9e30s
Zz0wO2lmKHIuaXNBcnJheShiKSl7Zm9yKGQ9TWEoYSksZT1iLmxlbmd0aDtnPGU7ZysrKWZbYltn
XV09ci5jc3MoYSxiW2ddLCExLGQpO3JldHVybiBmfXJldHVybiB2b2lkIDAhPT1jP3Iuc3R5bGUo
YSxiLGMpOnIuY3NzKGEsYil9LGEsYixhcmd1bWVudHMubGVuZ3RoPjEpfX0pLHIuZm4uZGVsYXk9
ZnVuY3Rpb24oYixjKXtyZXR1cm4gYj1yLmZ4P3IuZnguc3BlZWRzW2JdfHxiOmIsYz1jfHwiZngi
LHRoaXMucXVldWUoYyxmdW5jdGlvbihjLGQpe3ZhciBlPWEuc2V0VGltZW91dChjLGIpO2Quc3Rv
cD1mdW5jdGlvbigpe2EuY2xlYXJUaW1lb3V0KGUpfX0pfSxmdW5jdGlvbigpe3ZhciBhPWQuY3Jl
YXRlRWxlbWVudCgiaW5wdXQiKSxiPWQuY3JlYXRlRWxlbWVudCgic2VsZWN0IiksYz1iLmFwcGVu
ZENoaWxkKGQuY3JlYXRlRWxlbWVudCgib3B0aW9uIikpO2EudHlwZT0iY2hlY2tib3giLG8uY2hl
Y2tPbj0iIiE9PWEudmFsdWUsby5vcHRTZWxlY3RlZD1jLnNlbGVjdGVkLGE9ZC5jcmVhdGVFbGVt
ZW50KCJpbnB1dCIpLGEudmFsdWU9InQiLGEudHlwZT0icmFkaW8iLG8ucmFkaW9WYWx1ZT0idCI9
PT1hLnZhbHVlfSgpO3ZhciBZYSxaYT1yLmV4cHIuYXR0ckhhbmRsZTtyLmZuLmV4dGVuZCh7YXR0
cjpmdW5jdGlvbihhLGIpe3JldHVybiBTKHRoaXMsci5hdHRyLGEsYixhcmd1bWVudHMubGVuZ3Ro
PjEpfSxyZW1vdmVBdHRyOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXty
LnJlbW92ZUF0dHIodGhpcyxhKX0pfX0pLHIuZXh0ZW5kKHthdHRyOmZ1bmN0aW9uKGEsYixjKXt2
YXIgZCxlLGY9YS5ub2RlVHlwZTtpZigzIT09ZiYmOCE9PWYmJjIhPT1mKXJldHVybiJ1bmRlZmlu
ZWQiPT10eXBlb2YgYS5nZXRBdHRyaWJ1dGU/ci5wcm9wKGEsYixjKTooMT09PWYmJnIuaXNYTUxE
b2MoYSl8fChlPXIuYXR0ckhvb2tzW2IudG9Mb3dlckNhc2UoKV18fChyLmV4cHIubWF0Y2guYm9v
bC50ZXN0KGIpP1lhOnZvaWQgMCkpLHZvaWQgMCE9PWM/bnVsbD09PWM/dm9pZCByLnJlbW92ZUF0
dHIoYSxiKTplJiYic2V0ImluIGUmJnZvaWQgMCE9PShkPWUuc2V0KGEsYyxiKSk/ZDooYS5zZXRB
dHRyaWJ1dGUoYixjKyIiKSxjKTplJiYiZ2V0ImluIGUmJm51bGwhPT0oZD1lLmdldChhLGIpKT9k
OihkPXIuZmluZC5hdHRyKGEsYiksbnVsbD09ZD92b2lkIDA6ZCkpfSxhdHRySG9va3M6e3R5cGU6
e3NldDpmdW5jdGlvbihhLGIpe2lmKCFvLnJhZGlvVmFsdWUmJiJyYWRpbyI9PT1iJiZyLm5vZGVO
YW1lKGEsImlucHV0Iikpe3ZhciBjPWEudmFsdWU7cmV0dXJuIGEuc2V0QXR0cmlidXRlKCJ0eXBl
IixiKSxjJiYoYS52YWx1ZT1jKSxifX19fSxyZW1vdmVBdHRyOmZ1bmN0aW9uKGEsYil7dmFyIGMs
ZD0wLGU9YiYmYi5tYXRjaChLKTtpZihlJiYxPT09YS5ub2RlVHlwZSl3aGlsZShjPWVbZCsrXSlh
LnJlbW92ZUF0dHJpYnV0ZShjKX19KSxZYT17c2V0OmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYj09
PSExP3IucmVtb3ZlQXR0cihhLGMpOmEuc2V0QXR0cmlidXRlKGMsYyksY319LHIuZWFjaChyLmV4
cHIubWF0Y2guYm9vbC5zb3VyY2UubWF0Y2goL1x3Ky9nKSxmdW5jdGlvbihhLGIpe3ZhciBjPVph
W2JdfHxyLmZpbmQuYXR0cjtaYVtiXT1mdW5jdGlvbihhLGIsZCl7dmFyIGUsZixnPWIudG9Mb3dl
ckNhc2UoKTtyZXR1cm4gZHx8KGY9WmFbZ10sWmFbZ109ZSxlPW51bGwhPWMoYSxiLGQpP2c6bnVs
bCxaYVtnXT1mKSxlfX0pO3ZhciAkYT0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24p
JC9pLF9hPS9eKD86YXxhcmVhKSQvaTtyLmZuLmV4dGVuZCh7cHJvcDpmdW5jdGlvbihhLGIpe3Jl
dHVybiBTKHRoaXMsci5wcm9wLGEsYixhcmd1bWVudHMubGVuZ3RoPjEpfSxyZW1vdmVQcm9wOmZ1
bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtkZWxldGUgdGhpc1tyLnByb3BG
aXhbYV18fGFdfSl9fSksci5leHRlbmQoe3Byb3A6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZj1h
Lm5vZGVUeXBlO2lmKDMhPT1mJiY4IT09ZiYmMiE9PWYpcmV0dXJuIDE9PT1mJiZyLmlzWE1MRG9j
KGEpfHwoYj1yLnByb3BGaXhbYl18fGIsZT1yLnByb3BIb29rc1tiXSksdm9pZCAwIT09Yz9lJiYi
c2V0ImluIGUmJnZvaWQgMCE9PShkPWUuc2V0KGEsYyxiKSk/ZDphW2JdPWM6ZSYmImdldCJpbiBl
JiZudWxsIT09KGQ9ZS5nZXQoYSxiKSk/ZDphW2JdfSxwcm9wSG9va3M6e3RhYkluZGV4OntnZXQ6
ZnVuY3Rpb24oYSl7dmFyIGI9ci5maW5kLmF0dHIoYSwidGFiaW5kZXgiKTtyZXR1cm4gYj9wYXJz
ZUludChiLDEwKTokYS50ZXN0KGEubm9kZU5hbWUpfHxfYS50ZXN0KGEubm9kZU5hbWUpJiZhLmhy
ZWY/MDotMX19fSxwcm9wRml4OnsiZm9yIjoiaHRtbEZvciIsImNsYXNzIjoiY2xhc3NOYW1lIn19
KSxvLm9wdFNlbGVjdGVkfHwoci5wcm9wSG9va3Muc2VsZWN0ZWQ9e2dldDpmdW5jdGlvbihhKXt2
YXIgYj1hLnBhcmVudE5vZGU7cmV0dXJuIGImJmIucGFyZW50Tm9kZSYmYi5wYXJlbnROb2RlLnNl
bGVjdGVkSW5kZXgsbnVsbH0sc2V0OmZ1bmN0aW9uKGEpe3ZhciBiPWEucGFyZW50Tm9kZTtiJiYo
Yi5zZWxlY3RlZEluZGV4LGIucGFyZW50Tm9kZSYmYi5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXgp
fX0pLHIuZWFjaChbInRhYkluZGV4IiwicmVhZE9ubHkiLCJtYXhMZW5ndGgiLCJjZWxsU3BhY2lu
ZyIsImNlbGxQYWRkaW5nIiwicm93U3BhbiIsImNvbFNwYW4iLCJ1c2VNYXAiLCJmcmFtZUJvcmRl
ciIsImNvbnRlbnRFZGl0YWJsZSJdLGZ1bmN0aW9uKCl7ci5wcm9wRml4W3RoaXMudG9Mb3dlckNh
c2UoKV09dGhpc30pO2Z1bmN0aW9uIGFiKGEpe3ZhciBiPWEubWF0Y2goSyl8fFtdO3JldHVybiBi
LmpvaW4oIiAiKX1mdW5jdGlvbiBiYihhKXtyZXR1cm4gYS5nZXRBdHRyaWJ1dGUmJmEuZ2V0QXR0
cmlidXRlKCJjbGFzcyIpfHwiIn1yLmZuLmV4dGVuZCh7YWRkQ2xhc3M6ZnVuY3Rpb24oYSl7dmFy
IGIsYyxkLGUsZixnLGgsaT0wO2lmKHIuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1
bmN0aW9uKGIpe3IodGhpcykuYWRkQ2xhc3MoYS5jYWxsKHRoaXMsYixiYih0aGlzKSkpfSk7aWYo
InN0cmluZyI9PXR5cGVvZiBhJiZhKXtiPWEubWF0Y2goSyl8fFtdO3doaWxlKGM9dGhpc1tpKytd
KWlmKGU9YmIoYyksZD0xPT09Yy5ub2RlVHlwZSYmIiAiK2FiKGUpKyIgIil7Zz0wO3doaWxlKGY9
YltnKytdKWQuaW5kZXhPZigiICIrZisiICIpPDAmJihkKz1mKyIgIik7aD1hYihkKSxlIT09aCYm
Yy5zZXRBdHRyaWJ1dGUoImNsYXNzIixoKX19cmV0dXJuIHRoaXN9LHJlbW92ZUNsYXNzOmZ1bmN0
aW9uKGEpe3ZhciBiLGMsZCxlLGYsZyxoLGk9MDtpZihyLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRo
aXMuZWFjaChmdW5jdGlvbihiKXtyKHRoaXMpLnJlbW92ZUNsYXNzKGEuY2FsbCh0aGlzLGIsYmIo
dGhpcykpKX0pO2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiB0aGlzLmF0dHIoImNsYXNzIiwi
Iik7aWYoInN0cmluZyI9PXR5cGVvZiBhJiZhKXtiPWEubWF0Y2goSyl8fFtdO3doaWxlKGM9dGhp
c1tpKytdKWlmKGU9YmIoYyksZD0xPT09Yy5ub2RlVHlwZSYmIiAiK2FiKGUpKyIgIil7Zz0wO3do
aWxlKGY9YltnKytdKXdoaWxlKGQuaW5kZXhPZigiICIrZisiICIpPi0xKWQ9ZC5yZXBsYWNlKCIg
IitmKyIgIiwiICIpO2g9YWIoZCksZSE9PWgmJmMuc2V0QXR0cmlidXRlKCJjbGFzcyIsaCl9fXJl
dHVybiB0aGlzfSx0b2dnbGVDbGFzczpmdW5jdGlvbihhLGIpe3ZhciBjPXR5cGVvZiBhO3JldHVy
biJib29sZWFuIj09dHlwZW9mIGImJiJzdHJpbmciPT09Yz9iP3RoaXMuYWRkQ2xhc3MoYSk6dGhp
cy5yZW1vdmVDbGFzcyhhKTpyLmlzRnVuY3Rpb24oYSk/dGhpcy5lYWNoKGZ1bmN0aW9uKGMpe3Io
dGhpcykudG9nZ2xlQ2xhc3MoYS5jYWxsKHRoaXMsYyxiYih0aGlzKSxiKSxiKX0pOnRoaXMuZWFj
aChmdW5jdGlvbigpe3ZhciBiLGQsZSxmO2lmKCJzdHJpbmciPT09Yyl7ZD0wLGU9cih0aGlzKSxm
PWEubWF0Y2goSyl8fFtdO3doaWxlKGI9ZltkKytdKWUuaGFzQ2xhc3MoYik/ZS5yZW1vdmVDbGFz
cyhiKTplLmFkZENsYXNzKGIpfWVsc2Ugdm9pZCAwIT09YSYmImJvb2xlYW4iIT09Y3x8KGI9YmIo
dGhpcyksYiYmVi5zZXQodGhpcywiX19jbGFzc05hbWVfXyIsYiksdGhpcy5zZXRBdHRyaWJ1dGUm
JnRoaXMuc2V0QXR0cmlidXRlKCJjbGFzcyIsYnx8YT09PSExPyIiOlYuZ2V0KHRoaXMsIl9fY2xh
c3NOYW1lX18iKXx8IiIpKX0pfSxoYXNDbGFzczpmdW5jdGlvbihhKXt2YXIgYixjLGQ9MDtiPSIg
IithKyIgIjt3aGlsZShjPXRoaXNbZCsrXSlpZigxPT09Yy5ub2RlVHlwZSYmKCIgIithYihiYihj
KSkrIiAiKS5pbmRleE9mKGIpPi0xKXJldHVybiEwO3JldHVybiExfX0pO3ZhciBjYj0vXHIvZzty
LmZuLmV4dGVuZCh7dmFsOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlPXRoaXNbMF07e2lmKGFyZ3Vt
ZW50cy5sZW5ndGgpcmV0dXJuIGQ9ci5pc0Z1bmN0aW9uKGEpLHRoaXMuZWFjaChmdW5jdGlvbihj
KXt2YXIgZTsxPT09dGhpcy5ub2RlVHlwZSYmKGU9ZD9hLmNhbGwodGhpcyxjLHIodGhpcykudmFs
KCkpOmEsbnVsbD09ZT9lPSIiOiJudW1iZXIiPT10eXBlb2YgZT9lKz0iIjpyLmlzQXJyYXkoZSkm
JihlPXIubWFwKGUsZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWE/IiI6YSsiIn0pKSxiPXIudmFs
SG9va3NbdGhpcy50eXBlXXx8ci52YWxIb29rc1t0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCld
LGImJiJzZXQiaW4gYiYmdm9pZCAwIT09Yi5zZXQodGhpcyxlLCJ2YWx1ZSIpfHwodGhpcy52YWx1
ZT1lKSl9KTtpZihlKXJldHVybiBiPXIudmFsSG9va3NbZS50eXBlXXx8ci52YWxIb29rc1tlLm5v
ZGVOYW1lLnRvTG93ZXJDYXNlKCldLGImJiJnZXQiaW4gYiYmdm9pZCAwIT09KGM9Yi5nZXQoZSwi
dmFsdWUiKSk/YzooYz1lLnZhbHVlLCJzdHJpbmciPT10eXBlb2YgYz9jLnJlcGxhY2UoY2IsIiIp
Om51bGw9PWM/IiI6Yyl9fX0pLHIuZXh0ZW5kKHt2YWxIb29rczp7b3B0aW9uOntnZXQ6ZnVuY3Rp
b24oYSl7dmFyIGI9ci5maW5kLmF0dHIoYSwidmFsdWUiKTtyZXR1cm4gbnVsbCE9Yj9iOmFiKHIu
dGV4dChhKSl9fSxzZWxlY3Q6e2dldDpmdW5jdGlvbihhKXt2YXIgYixjLGQsZT1hLm9wdGlvbnMs
Zj1hLnNlbGVjdGVkSW5kZXgsZz0ic2VsZWN0LW9uZSI9PT1hLnR5cGUsaD1nP251bGw6W10saT1n
P2YrMTplLmxlbmd0aDtmb3IoZD1mPDA/aTpnP2Y6MDtkPGk7ZCsrKWlmKGM9ZVtkXSwoYy5zZWxl
Y3RlZHx8ZD09PWYpJiYhYy5kaXNhYmxlZCYmKCFjLnBhcmVudE5vZGUuZGlzYWJsZWR8fCFyLm5v
ZGVOYW1lKGMucGFyZW50Tm9kZSwib3B0Z3JvdXAiKSkpe2lmKGI9cihjKS52YWwoKSxnKXJldHVy
biBiO2gucHVzaChiKX1yZXR1cm4gaH0sc2V0OmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlPWEub3B0
aW9ucyxmPXIubWFrZUFycmF5KGIpLGc9ZS5sZW5ndGg7d2hpbGUoZy0tKWQ9ZVtnXSwoZC5zZWxl
Y3RlZD1yLmluQXJyYXkoci52YWxIb29rcy5vcHRpb24uZ2V0KGQpLGYpPi0xKSYmKGM9ITApO3Jl
dHVybiBjfHwoYS5zZWxlY3RlZEluZGV4PS0xKSxmfX19fSksci5lYWNoKFsicmFkaW8iLCJjaGVj
a2JveCJdLGZ1bmN0aW9uKCl7ci52YWxIb29rc1t0aGlzXT17c2V0OmZ1bmN0aW9uKGEsYil7aWYo
ci5pc0FycmF5KGIpKXJldHVybiBhLmNoZWNrZWQ9ci5pbkFycmF5KHIoYSkudmFsKCksYik+LTF9
fSxvLmNoZWNrT258fChyLnZhbEhvb2tzW3RoaXNdLmdldD1mdW5jdGlvbihhKXtyZXR1cm4gbnVs
bD09PWEuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpPyJvbiI6YS52YWx1ZX0pfSk7dmFyIGRiPS9eKD86
Zm9jdXNpbmZvY3VzfGZvY3Vzb3V0Ymx1cikkLztyLmV4dGVuZChyLmV2ZW50LHt0cmlnZ2VyOmZ1
bmN0aW9uKGIsYyxlLGYpe3ZhciBnLGgsaSxqLGssbSxuLG89W2V8fGRdLHA9bC5jYWxsKGIsInR5
cGUiKT9iLnR5cGU6YixxPWwuY2FsbChiLCJuYW1lc3BhY2UiKT9iLm5hbWVzcGFjZS5zcGxpdCgi
LiIpOltdO2lmKGg9aT1lPWV8fGQsMyE9PWUubm9kZVR5cGUmJjghPT1lLm5vZGVUeXBlJiYhZGIu
dGVzdChwK3IuZXZlbnQudHJpZ2dlcmVkKSYmKHAuaW5kZXhPZigiLiIpPi0xJiYocT1wLnNwbGl0
KCIuIikscD1xLnNoaWZ0KCkscS5zb3J0KCkpLGs9cC5pbmRleE9mKCI6Iik8MCYmIm9uIitwLGI9
YltyLmV4cGFuZG9dP2I6bmV3IHIuRXZlbnQocCwib2JqZWN0Ij09dHlwZW9mIGImJmIpLGIuaXNU
cmlnZ2VyPWY/MjozLGIubmFtZXNwYWNlPXEuam9pbigiLiIpLGIucm5hbWVzcGFjZT1iLm5hbWVz
cGFjZT9uZXcgUmVnRXhwKCIoXnxcXC4pIitxLmpvaW4oIlxcLig/Oi4qXFwufCkiKSsiKFxcLnwk
KSIpOm51bGwsYi5yZXN1bHQ9dm9pZCAwLGIudGFyZ2V0fHwoYi50YXJnZXQ9ZSksYz1udWxsPT1j
P1tiXTpyLm1ha2VBcnJheShjLFtiXSksbj1yLmV2ZW50LnNwZWNpYWxbcF18fHt9LGZ8fCFuLnRy
aWdnZXJ8fG4udHJpZ2dlci5hcHBseShlLGMpIT09ITEpKXtpZighZiYmIW4ubm9CdWJibGUmJiFy
LmlzV2luZG93KGUpKXtmb3Ioaj1uLmRlbGVnYXRlVHlwZXx8cCxkYi50ZXN0KGorcCl8fChoPWgu
cGFyZW50Tm9kZSk7aDtoPWgucGFyZW50Tm9kZSlvLnB1c2goaCksaT1oO2k9PT0oZS5vd25lckRv
Y3VtZW50fHxkKSYmby5wdXNoKGkuZGVmYXVsdFZpZXd8fGkucGFyZW50V2luZG93fHxhKX1nPTA7
d2hpbGUoKGg9b1tnKytdKSYmIWIuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSliLnR5cGU9Zz4xP2o6
bi5iaW5kVHlwZXx8cCxtPShWLmdldChoLCJldmVudHMiKXx8e30pW2IudHlwZV0mJlYuZ2V0KGgs
ImhhbmRsZSIpLG0mJm0uYXBwbHkoaCxjKSxtPWsmJmhba10sbSYmbS5hcHBseSYmVChoKSYmKGIu
cmVzdWx0PW0uYXBwbHkoaCxjKSxiLnJlc3VsdD09PSExJiZiLnByZXZlbnREZWZhdWx0KCkpO3Jl
dHVybiBiLnR5cGU9cCxmfHxiLmlzRGVmYXVsdFByZXZlbnRlZCgpfHxuLl9kZWZhdWx0JiZuLl9k
ZWZhdWx0LmFwcGx5KG8ucG9wKCksYykhPT0hMXx8IVQoZSl8fGsmJnIuaXNGdW5jdGlvbihlW3Bd
KSYmIXIuaXNXaW5kb3coZSkmJihpPWVba10saSYmKGVba109bnVsbCksci5ldmVudC50cmlnZ2Vy
ZWQ9cCxlW3BdKCksci5ldmVudC50cmlnZ2VyZWQ9dm9pZCAwLGkmJihlW2tdPWkpKSxiLnJlc3Vs
dH19LHNpbXVsYXRlOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1yLmV4dGVuZChuZXcgci5FdmVudCxj
LHt0eXBlOmEsaXNTaW11bGF0ZWQ6ITB9KTtyLmV2ZW50LnRyaWdnZXIoZCxudWxsLGIpfX0pLHIu
Zm4uZXh0ZW5kKHt0cmlnZ2VyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlv
bigpe3IuZXZlbnQudHJpZ2dlcihhLGIsdGhpcyl9KX0sdHJpZ2dlckhhbmRsZXI6ZnVuY3Rpb24o
YSxiKXt2YXIgYz10aGlzWzBdO2lmKGMpcmV0dXJuIHIuZXZlbnQudHJpZ2dlcihhLGIsYywhMCl9
fSksci5lYWNoKCJibHVyIGZvY3VzIGZvY3VzaW4gZm9jdXNvdXQgcmVzaXplIHNjcm9sbCBjbGlj
ayBkYmxjbGljayBtb3VzZWRvd24gbW91c2V1cCBtb3VzZW1vdmUgbW91c2VvdmVyIG1vdXNlb3V0
IG1vdXNlZW50ZXIgbW91c2VsZWF2ZSBjaGFuZ2Ugc2VsZWN0IHN1Ym1pdCBrZXlkb3duIGtleXBy
ZXNzIGtleXVwIGNvbnRleHRtZW51Ii5zcGxpdCgiICIpLGZ1bmN0aW9uKGEsYil7ci5mbltiXT1m
dW5jdGlvbihhLGMpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjA/dGhpcy5vbihiLG51bGwsYSxj
KTp0aGlzLnRyaWdnZXIoYil9fSksci5mbi5leHRlbmQoe2hvdmVyOmZ1bmN0aW9uKGEsYil7cmV0
dXJuIHRoaXMubW91c2VlbnRlcihhKS5tb3VzZWxlYXZlKGJ8fGEpfX0pLG8uZm9jdXNpbj0ib25m
b2N1c2luImluIGEsby5mb2N1c2lufHxyLmVhY2goe2ZvY3VzOiJmb2N1c2luIixibHVyOiJmb2N1
c291dCJ9LGZ1bmN0aW9uKGEsYil7dmFyIGM9ZnVuY3Rpb24oYSl7ci5ldmVudC5zaW11bGF0ZShi
LGEudGFyZ2V0LHIuZXZlbnQuZml4KGEpKX07ci5ldmVudC5zcGVjaWFsW2JdPXtzZXR1cDpmdW5j
dGlvbigpe3ZhciBkPXRoaXMub3duZXJEb2N1bWVudHx8dGhpcyxlPVYuYWNjZXNzKGQsYik7ZXx8
ZC5hZGRFdmVudExpc3RlbmVyKGEsYywhMCksVi5hY2Nlc3MoZCxiLChlfHwwKSsxKX0sdGVhcmRv
d246ZnVuY3Rpb24oKXt2YXIgZD10aGlzLm93bmVyRG9jdW1lbnR8fHRoaXMsZT1WLmFjY2Vzcyhk
LGIpLTE7ZT9WLmFjY2VzcyhkLGIsZSk6KGQucmVtb3ZlRXZlbnRMaXN0ZW5lcihhLGMsITApLFYu
cmVtb3ZlKGQsYikpfX19KTt2YXIgZWI9L1xbXF0kLyxmYj0vXHI/XG4vZyxnYj0vXig/OnN1Ym1p
dHxidXR0b258aW1hZ2V8cmVzZXR8ZmlsZSkkL2ksaGI9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFy
ZWF8a2V5Z2VuKS9pO2Z1bmN0aW9uIGliKGEsYixjLGQpe3ZhciBlO2lmKHIuaXNBcnJheShiKSly
LmVhY2goYixmdW5jdGlvbihiLGUpe2N8fGViLnRlc3QoYSk/ZChhLGUpOmliKGErIlsiKygib2Jq
ZWN0Ij09dHlwZW9mIGUmJm51bGwhPWU/YjoiIikrIl0iLGUsYyxkKTsKK30pO2Vsc2UgaWYoY3x8
Im9iamVjdCIhPT1yLnR5cGUoYikpZChhLGIpO2Vsc2UgZm9yKGUgaW4gYilpYihhKyJbIitlKyJd
IixiW2VdLGMsZCl9ci5wYXJhbT1mdW5jdGlvbihhLGIpe3ZhciBjLGQ9W10sZT1mdW5jdGlvbihh
LGIpe3ZhciBjPXIuaXNGdW5jdGlvbihiKT9iKCk6YjtkW2QubGVuZ3RoXT1lbmNvZGVVUklDb21w
b25lbnQoYSkrIj0iK2VuY29kZVVSSUNvbXBvbmVudChudWxsPT1jPyIiOmMpfTtpZihyLmlzQXJy
YXkoYSl8fGEuanF1ZXJ5JiYhci5pc1BsYWluT2JqZWN0KGEpKXIuZWFjaChhLGZ1bmN0aW9uKCl7
ZSh0aGlzLm5hbWUsdGhpcy52YWx1ZSl9KTtlbHNlIGZvcihjIGluIGEpaWIoYyxhW2NdLGIsZSk7
cmV0dXJuIGQuam9pbigiJiIpfSxyLmZuLmV4dGVuZCh7c2VyaWFsaXplOmZ1bmN0aW9uKCl7cmV0
dXJuIHIucGFyYW0odGhpcy5zZXJpYWxpemVBcnJheSgpKX0sc2VyaWFsaXplQXJyYXk6ZnVuY3Rp
b24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXt2YXIgYT1yLnByb3AodGhpcywiZWxlbWVu
dHMiKTtyZXR1cm4gYT9yLm1ha2VBcnJheShhKTp0aGlzfSkuZmlsdGVyKGZ1bmN0aW9uKCl7dmFy
IGE9dGhpcy50eXBlO3JldHVybiB0aGlzLm5hbWUmJiFyKHRoaXMpLmlzKCI6ZGlzYWJsZWQiKSYm
aGIudGVzdCh0aGlzLm5vZGVOYW1lKSYmIWdiLnRlc3QoYSkmJih0aGlzLmNoZWNrZWR8fCFpYS50
ZXN0KGEpKX0pLm1hcChmdW5jdGlvbihhLGIpe3ZhciBjPXIodGhpcykudmFsKCk7cmV0dXJuIG51
bGw9PWM/bnVsbDpyLmlzQXJyYXkoYyk/ci5tYXAoYyxmdW5jdGlvbihhKXtyZXR1cm57bmFtZTpi
Lm5hbWUsdmFsdWU6YS5yZXBsYWNlKGZiLCJcclxuIil9fSk6e25hbWU6Yi5uYW1lLHZhbHVlOmMu
cmVwbGFjZShmYiwiXHJcbiIpfX0pLmdldCgpfX0pLHIuZm4uZXh0ZW5kKHt3cmFwQWxsOmZ1bmN0
aW9uKGEpe3ZhciBiO3JldHVybiB0aGlzWzBdJiYoci5pc0Z1bmN0aW9uKGEpJiYoYT1hLmNhbGwo
dGhpc1swXSkpLGI9cihhLHRoaXNbMF0ub3duZXJEb2N1bWVudCkuZXEoMCkuY2xvbmUoITApLHRo
aXNbMF0ucGFyZW50Tm9kZSYmYi5pbnNlcnRCZWZvcmUodGhpc1swXSksYi5tYXAoZnVuY3Rpb24o
KXt2YXIgYT10aGlzO3doaWxlKGEuZmlyc3RFbGVtZW50Q2hpbGQpYT1hLmZpcnN0RWxlbWVudENo
aWxkO3JldHVybiBhfSkuYXBwZW5kKHRoaXMpKSx0aGlzfSx3cmFwSW5uZXI6ZnVuY3Rpb24oYSl7
cmV0dXJuIHIuaXNGdW5jdGlvbihhKT90aGlzLmVhY2goZnVuY3Rpb24oYil7cih0aGlzKS53cmFw
SW5uZXIoYS5jYWxsKHRoaXMsYikpfSk6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGI9cih0aGlz
KSxjPWIuY29udGVudHMoKTtjLmxlbmd0aD9jLndyYXBBbGwoYSk6Yi5hcHBlbmQoYSl9KX0sd3Jh
cDpmdW5jdGlvbihhKXt2YXIgYj1yLmlzRnVuY3Rpb24oYSk7cmV0dXJuIHRoaXMuZWFjaChmdW5j
dGlvbihjKXtyKHRoaXMpLndyYXBBbGwoYj9hLmNhbGwodGhpcyxjKTphKX0pfSx1bndyYXA6ZnVu
Y3Rpb24oYSl7cmV0dXJuIHRoaXMucGFyZW50KGEpLm5vdCgiYm9keSIpLmVhY2goZnVuY3Rpb24o
KXtyKHRoaXMpLnJlcGxhY2VXaXRoKHRoaXMuY2hpbGROb2Rlcyl9KSx0aGlzfX0pLHIuZXhwci5w
c2V1ZG9zLmhpZGRlbj1mdW5jdGlvbihhKXtyZXR1cm4hci5leHByLnBzZXVkb3MudmlzaWJsZShh
KX0sci5leHByLnBzZXVkb3MudmlzaWJsZT1mdW5jdGlvbihhKXtyZXR1cm4hIShhLm9mZnNldFdp
ZHRofHxhLm9mZnNldEhlaWdodHx8YS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCl9LG8uY3JlYXRl
SFRNTERvY3VtZW50PWZ1bmN0aW9uKCl7dmFyIGE9ZC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1M
RG9jdW1lbnQoIiIpLmJvZHk7cmV0dXJuIGEuaW5uZXJIVE1MPSI8Zm9ybT48L2Zvcm0+PGZvcm0+
PC9mb3JtPiIsMj09PWEuY2hpbGROb2Rlcy5sZW5ndGh9KCksci5wYXJzZUhUTUw9ZnVuY3Rpb24o
YSxiLGMpe2lmKCJzdHJpbmciIT10eXBlb2YgYSlyZXR1cm5bXTsiYm9vbGVhbiI9PXR5cGVvZiBi
JiYoYz1iLGI9ITEpO3ZhciBlLGYsZztyZXR1cm4gYnx8KG8uY3JlYXRlSFRNTERvY3VtZW50Pyhi
PWQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCIiKSxlPWIuY3JlYXRlRWxlbWVu
dCgiYmFzZSIpLGUuaHJlZj1kLmxvY2F0aW9uLmhyZWYsYi5oZWFkLmFwcGVuZENoaWxkKGUpKTpi
PWQpLGY9Qi5leGVjKGEpLGc9IWMmJltdLGY/W2IuY3JlYXRlRWxlbWVudChmWzFdKV06KGY9cGEo
W2FdLGIsZyksZyYmZy5sZW5ndGgmJnIoZykucmVtb3ZlKCksci5tZXJnZShbXSxmLmNoaWxkTm9k
ZXMpKX07ZnVuY3Rpb24gamIoYSl7cmV0dXJuIHIuaXNXaW5kb3coYSk/YTo5PT09YS5ub2RlVHlw
ZSYmYS5kZWZhdWx0Vmlld31yLm9mZnNldD17c2V0T2Zmc2V0OmZ1bmN0aW9uKGEsYixjKXt2YXIg
ZCxlLGYsZyxoLGksaixrPXIuY3NzKGEsInBvc2l0aW9uIiksbD1yKGEpLG09e307InN0YXRpYyI9
PT1rJiYoYS5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiKSxoPWwub2Zmc2V0KCksZj1yLmNzcyhh
LCJ0b3AiKSxpPXIuY3NzKGEsImxlZnQiKSxqPSgiYWJzb2x1dGUiPT09a3x8ImZpeGVkIj09PWsp
JiYoZitpKS5pbmRleE9mKCJhdXRvIik+LTEsaj8oZD1sLnBvc2l0aW9uKCksZz1kLnRvcCxlPWQu
bGVmdCk6KGc9cGFyc2VGbG9hdChmKXx8MCxlPXBhcnNlRmxvYXQoaSl8fDApLHIuaXNGdW5jdGlv
bihiKSYmKGI9Yi5jYWxsKGEsYyxyLmV4dGVuZCh7fSxoKSkpLG51bGwhPWIudG9wJiYobS50b3A9
Yi50b3AtaC50b3ArZyksbnVsbCE9Yi5sZWZ0JiYobS5sZWZ0PWIubGVmdC1oLmxlZnQrZSksInVz
aW5nImluIGI/Yi51c2luZy5jYWxsKGEsbSk6bC5jc3MobSl9fSxyLmZuLmV4dGVuZCh7b2Zmc2V0
OmZ1bmN0aW9uKGEpe2lmKGFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHZvaWQgMD09PWE/dGhpczp0
aGlzLmVhY2goZnVuY3Rpb24oYil7ci5vZmZzZXQuc2V0T2Zmc2V0KHRoaXMsYSxiKX0pO3ZhciBi
LGMsZCxlLGY9dGhpc1swXTtpZihmKXJldHVybiBmLmdldENsaWVudFJlY3RzKCkubGVuZ3RoPyhk
PWYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksZC53aWR0aHx8ZC5oZWlnaHQ/KGU9Zi5vd25lckRv
Y3VtZW50LGM9amIoZSksYj1lLmRvY3VtZW50RWxlbWVudCx7dG9wOmQudG9wK2MucGFnZVlPZmZz
ZXQtYi5jbGllbnRUb3AsbGVmdDpkLmxlZnQrYy5wYWdlWE9mZnNldC1iLmNsaWVudExlZnR9KTpk
KTp7dG9wOjAsbGVmdDowfX0scG9zaXRpb246ZnVuY3Rpb24oKXtpZih0aGlzWzBdKXt2YXIgYSxi
LGM9dGhpc1swXSxkPXt0b3A6MCxsZWZ0OjB9O3JldHVybiJmaXhlZCI9PT1yLmNzcyhjLCJwb3Np
dGlvbiIpP2I9Yy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTooYT10aGlzLm9mZnNldFBhcmVudCgp
LGI9dGhpcy5vZmZzZXQoKSxyLm5vZGVOYW1lKGFbMF0sImh0bWwiKXx8KGQ9YS5vZmZzZXQoKSks
ZD17dG9wOmQudG9wK3IuY3NzKGFbMF0sImJvcmRlclRvcFdpZHRoIiwhMCksbGVmdDpkLmxlZnQr
ci5jc3MoYVswXSwiYm9yZGVyTGVmdFdpZHRoIiwhMCl9KSx7dG9wOmIudG9wLWQudG9wLXIuY3Nz
KGMsIm1hcmdpblRvcCIsITApLGxlZnQ6Yi5sZWZ0LWQubGVmdC1yLmNzcyhjLCJtYXJnaW5MZWZ0
IiwhMCl9fX0sb2Zmc2V0UGFyZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9u
KCl7dmFyIGE9dGhpcy5vZmZzZXRQYXJlbnQ7d2hpbGUoYSYmInN0YXRpYyI9PT1yLmNzcyhhLCJw
b3NpdGlvbiIpKWE9YS5vZmZzZXRQYXJlbnQ7cmV0dXJuIGF8fHFhfSl9fSksci5lYWNoKHtzY3Jv
bGxMZWZ0OiJwYWdlWE9mZnNldCIsc2Nyb2xsVG9wOiJwYWdlWU9mZnNldCJ9LGZ1bmN0aW9uKGEs
Yil7dmFyIGM9InBhZ2VZT2Zmc2V0Ij09PWI7ci5mblthXT1mdW5jdGlvbihkKXtyZXR1cm4gUyh0
aGlzLGZ1bmN0aW9uKGEsZCxlKXt2YXIgZj1qYihhKTtyZXR1cm4gdm9pZCAwPT09ZT9mP2ZbYl06
YVtkXTp2b2lkKGY/Zi5zY3JvbGxUbyhjP2YucGFnZVhPZmZzZXQ6ZSxjP2U6Zi5wYWdlWU9mZnNl
dCk6YVtkXT1lKX0sYSxkLGFyZ3VtZW50cy5sZW5ndGgpfX0pLHIuZWFjaChbInRvcCIsImxlZnQi
XSxmdW5jdGlvbihhLGIpe3IuY3NzSG9va3NbYl09T2Eoby5waXhlbFBvc2l0aW9uLGZ1bmN0aW9u
KGEsYyl7aWYoYylyZXR1cm4gYz1OYShhLGIpLExhLnRlc3QoYyk/cihhKS5wb3NpdGlvbigpW2Jd
KyJweCI6Y30pfSksci5lYWNoKHtIZWlnaHQ6ImhlaWdodCIsV2lkdGg6IndpZHRoIn0sZnVuY3Rp
b24oYSxiKXtyLmVhY2goe3BhZGRpbmc6ImlubmVyIithLGNvbnRlbnQ6YiwiIjoib3V0ZXIiK2F9
LGZ1bmN0aW9uKGMsZCl7ci5mbltkXT1mdW5jdGlvbihlLGYpe3ZhciBnPWFyZ3VtZW50cy5sZW5n
dGgmJihjfHwiYm9vbGVhbiIhPXR5cGVvZiBlKSxoPWN8fChlPT09ITB8fGY9PT0hMD8ibWFyZ2lu
IjoiYm9yZGVyIik7cmV0dXJuIFModGhpcyxmdW5jdGlvbihiLGMsZSl7dmFyIGY7cmV0dXJuIHIu
aXNXaW5kb3coYik/MD09PWQuaW5kZXhPZigib3V0ZXIiKT9iWyJpbm5lciIrYV06Yi5kb2N1bWVu
dC5kb2N1bWVudEVsZW1lbnRbImNsaWVudCIrYV06OT09PWIubm9kZVR5cGU/KGY9Yi5kb2N1bWVu
dEVsZW1lbnQsTWF0aC5tYXgoYi5ib2R5WyJzY3JvbGwiK2FdLGZbInNjcm9sbCIrYV0sYi5ib2R5
WyJvZmZzZXQiK2FdLGZbIm9mZnNldCIrYV0sZlsiY2xpZW50IithXSkpOnZvaWQgMD09PWU/ci5j
c3MoYixjLGgpOnIuc3R5bGUoYixjLGUsaCl9LGIsZz9lOnZvaWQgMCxnKX19KX0pLCJmdW5jdGlv
biI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQmJmRlZmluZSgianF1ZXJ5IixbXSxmdW5jdGlv
bigpe3JldHVybiByfSk7dmFyIGtiPWEualF1ZXJ5LGxiPWEuJDtyZXR1cm4gci5ub0NvbmZsaWN0
PWZ1bmN0aW9uKGIpe3JldHVybiBhLiQ9PT1yJiYoYS4kPWxiKSxiJiZhLmpRdWVyeT09PXImJihh
LmpRdWVyeT1rYikscn0sYnx8KGEualF1ZXJ5PWEuJD1yKSxyfSk7CmRpZmYgLS1naXQgYS9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9kaXN0L2pxdWVyeS5zbGltLm1pbi5t
YXAgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9kaXN0L2pxdWVyeS5z
bGltLm1pbi5tYXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODA1NGI5OTg4ZGNiYWE1OThkY2I3NTgzZWQ3YTExODg0
NzVjM2VjOAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVs
ZXMvanF1ZXJ5L2Rpc3QvanF1ZXJ5LnNsaW0ubWluLm1hcApAQCAtMCwwICsxIEBACit7InZlcnNp
b24iOjMsInNvdXJjZXMiOlsianF1ZXJ5LnNsaW0uanMiXSwibmFtZXMiOlsiZ2xvYmFsIiwiZmFj
dG9yeSIsIm1vZHVsZSIsImV4cG9ydHMiLCJkb2N1bWVudCIsInciLCJFcnJvciIsIndpbmRvdyIs
InRoaXMiLCJub0dsb2JhbCIsImFyciIsImdldFByb3RvIiwiT2JqZWN0IiwiZ2V0UHJvdG90eXBl
T2YiLCJzbGljZSIsImNvbmNhdCIsInB1c2giLCJpbmRleE9mIiwiY2xhc3MydHlwZSIsInRvU3Ry
aW5nIiwiaGFzT3duIiwiaGFzT3duUHJvcGVydHkiLCJmblRvU3RyaW5nIiwiT2JqZWN0RnVuY3Rp
b25TdHJpbmciLCJjYWxsIiwic3VwcG9ydCIsIkRPTUV2YWwiLCJjb2RlIiwiZG9jIiwic2NyaXB0
IiwiY3JlYXRlRWxlbWVudCIsInRleHQiLCJoZWFkIiwiYXBwZW5kQ2hpbGQiLCJwYXJlbnROb2Rl
IiwicmVtb3ZlQ2hpbGQiLCJ2ZXJzaW9uIiwialF1ZXJ5Iiwic2VsZWN0b3IiLCJjb250ZXh0Iiwi
Zm4iLCJpbml0IiwicnRyaW0iLCJybXNQcmVmaXgiLCJyZGFzaEFscGhhIiwiZmNhbWVsQ2FzZSIs
ImFsbCIsImxldHRlciIsInRvVXBwZXJDYXNlIiwicHJvdG90eXBlIiwianF1ZXJ5IiwiY29uc3Ry
dWN0b3IiLCJsZW5ndGgiLCJ0b0FycmF5IiwiZ2V0IiwibnVtIiwicHVzaFN0YWNrIiwiZWxlbXMi
LCJyZXQiLCJtZXJnZSIsInByZXZPYmplY3QiLCJlYWNoIiwiY2FsbGJhY2siLCJtYXAiLCJlbGVt
IiwiaSIsImFwcGx5IiwiYXJndW1lbnRzIiwiZmlyc3QiLCJlcSIsImxhc3QiLCJsZW4iLCJqIiwi
ZW5kIiwic29ydCIsInNwbGljZSIsImV4dGVuZCIsIm9wdGlvbnMiLCJuYW1lIiwic3JjIiwiY29w
eSIsImNvcHlJc0FycmF5IiwiY2xvbmUiLCJ0YXJnZXQiLCJkZWVwIiwiaXNGdW5jdGlvbiIsImlz
UGxhaW5PYmplY3QiLCJpc0FycmF5IiwidW5kZWZpbmVkIiwiZXhwYW5kbyIsIk1hdGgiLCJyYW5k
b20iLCJyZXBsYWNlIiwiaXNSZWFkeSIsImVycm9yIiwibXNnIiwibm9vcCIsIm9iaiIsInR5cGUi
LCJBcnJheSIsImlzV2luZG93IiwiaXNOdW1lcmljIiwiaXNOYU4iLCJwYXJzZUZsb2F0IiwicHJv
dG8iLCJDdG9yIiwiaXNFbXB0eU9iamVjdCIsImdsb2JhbEV2YWwiLCJjYW1lbENhc2UiLCJzdHJp
bmciLCJub2RlTmFtZSIsInRvTG93ZXJDYXNlIiwiaXNBcnJheUxpa2UiLCJ0cmltIiwibWFrZUFy
cmF5IiwicmVzdWx0cyIsImluQXJyYXkiLCJzZWNvbmQiLCJncmVwIiwiaW52ZXJ0IiwiY2FsbGJh
Y2tJbnZlcnNlIiwibWF0Y2hlcyIsImNhbGxiYWNrRXhwZWN0IiwiYXJnIiwidmFsdWUiLCJndWlk
IiwicHJveHkiLCJ0bXAiLCJhcmdzIiwibm93IiwiRGF0ZSIsIlN5bWJvbCIsIml0ZXJhdG9yIiwi
c3BsaXQiLCJTaXp6bGUiLCJFeHByIiwiZ2V0VGV4dCIsImlzWE1MIiwidG9rZW5pemUiLCJjb21w
aWxlIiwic2VsZWN0Iiwib3V0ZXJtb3N0Q29udGV4dCIsInNvcnRJbnB1dCIsImhhc0R1cGxpY2F0
ZSIsInNldERvY3VtZW50IiwiZG9jRWxlbSIsImRvY3VtZW50SXNIVE1MIiwicmJ1Z2d5UVNBIiwi
cmJ1Z2d5TWF0Y2hlcyIsImNvbnRhaW5zIiwicHJlZmVycmVkRG9jIiwiZGlycnVucyIsImRvbmUi
LCJjbGFzc0NhY2hlIiwiY3JlYXRlQ2FjaGUiLCJ0b2tlbkNhY2hlIiwiY29tcGlsZXJDYWNoZSIs
InNvcnRPcmRlciIsImEiLCJiIiwicG9wIiwicHVzaF9uYXRpdmUiLCJsaXN0IiwiYm9vbGVhbnMi
LCJ3aGl0ZXNwYWNlIiwiaWRlbnRpZmllciIsImF0dHJpYnV0ZXMiLCJwc2V1ZG9zIiwicndoaXRl
c3BhY2UiLCJSZWdFeHAiLCJyY29tbWEiLCJyY29tYmluYXRvcnMiLCJyYXR0cmlidXRlUXVvdGVz
IiwicnBzZXVkbyIsInJpZGVudGlmaWVyIiwibWF0Y2hFeHByIiwiSUQiLCJDTEFTUyIsIlRBRyIs
IkFUVFIiLCJQU0VVRE8iLCJDSElMRCIsImJvb2wiLCJuZWVkc0NvbnRleHQiLCJyaW5wdXRzIiwi
cmhlYWRlciIsInJuYXRpdmUiLCJycXVpY2tFeHByIiwicnNpYmxpbmciLCJydW5lc2NhcGUiLCJm
dW5lc2NhcGUiLCJfIiwiZXNjYXBlZCIsImVzY2FwZWRXaGl0ZXNwYWNlIiwiaGlnaCIsIlN0cmlu
ZyIsImZyb21DaGFyQ29kZSIsInJjc3Nlc2NhcGUiLCJmY3NzZXNjYXBlIiwiY2giLCJhc0NvZGVQ
b2ludCIsImNoYXJDb2RlQXQiLCJ1bmxvYWRIYW5kbGVyIiwiZGlzYWJsZWRBbmNlc3RvciIsImFk
ZENvbWJpbmF0b3IiLCJkaXNhYmxlZCIsImRpciIsIm5leHQiLCJjaGlsZE5vZGVzIiwibm9kZVR5
cGUiLCJlIiwiZWxzIiwic2VlZCIsIm0iLCJuaWQiLCJtYXRjaCIsImdyb3VwcyIsIm5ld1NlbGVj
dG9yIiwibmV3Q29udGV4dCIsIm93bmVyRG9jdW1lbnQiLCJleGVjIiwiZ2V0RWxlbWVudEJ5SWQi
LCJpZCIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwiZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSIsInFz
YSIsInRlc3QiLCJnZXRBdHRyaWJ1dGUiLCJzZXRBdHRyaWJ1dGUiLCJ0b1NlbGVjdG9yIiwiam9p
biIsInRlc3RDb250ZXh0IiwicXVlcnlTZWxlY3RvckFsbCIsInFzYUVycm9yIiwicmVtb3ZlQXR0
cmlidXRlIiwia2V5cyIsImNhY2hlIiwia2V5IiwiY2FjaGVMZW5ndGgiLCJzaGlmdCIsIm1hcmtG
dW5jdGlvbiIsImFzc2VydCIsImVsIiwiYWRkSGFuZGxlIiwiYXR0cnMiLCJoYW5kbGVyIiwiYXR0
ckhhbmRsZSIsInNpYmxpbmdDaGVjayIsImN1ciIsImRpZmYiLCJzb3VyY2VJbmRleCIsIm5leHRT
aWJsaW5nIiwiY3JlYXRlSW5wdXRQc2V1ZG8iLCJjcmVhdGVCdXR0b25Qc2V1ZG8iLCJjcmVhdGVE
aXNhYmxlZFBzZXVkbyIsImlzRGlzYWJsZWQiLCJjcmVhdGVQb3NpdGlvbmFsUHNldWRvIiwiYXJn
dW1lbnQiLCJtYXRjaEluZGV4ZXMiLCJkb2N1bWVudEVsZW1lbnQiLCJub2RlIiwiaGFzQ29tcGFy
ZSIsInN1YldpbmRvdyIsImRlZmF1bHRWaWV3IiwidG9wIiwiYWRkRXZlbnRMaXN0ZW5lciIsImF0
dGFjaEV2ZW50IiwiY2xhc3NOYW1lIiwiY3JlYXRlQ29tbWVudCIsImdldEJ5SWQiLCJnZXRFbGVt
ZW50c0J5TmFtZSIsImZpbHRlciIsImF0dHJJZCIsImZpbmQiLCJnZXRBdHRyaWJ1dGVOb2RlIiwi
dGFnIiwiaW5uZXJIVE1MIiwiaW5wdXQiLCJtYXRjaGVzU2VsZWN0b3IiLCJ3ZWJraXRNYXRjaGVz
U2VsZWN0b3IiLCJtb3pNYXRjaGVzU2VsZWN0b3IiLCJvTWF0Y2hlc1NlbGVjdG9yIiwibXNNYXRj
aGVzU2VsZWN0b3IiLCJkaXNjb25uZWN0ZWRNYXRjaCIsImNvbXBhcmVEb2N1bWVudFBvc2l0aW9u
IiwiYWRvd24iLCJidXAiLCJjb21wYXJlIiwic29ydERldGFjaGVkIiwiYXVwIiwiYXAiLCJicCIs
InVuc2hpZnQiLCJleHByIiwiZWxlbWVudHMiLCJhdHRyIiwidmFsIiwic3BlY2lmaWVkIiwiZXNj
YXBlIiwic2VsIiwidW5pcXVlU29ydCIsImR1cGxpY2F0ZXMiLCJkZXRlY3REdXBsaWNhdGVzIiwi
c29ydFN0YWJsZSIsInRleHRDb250ZW50IiwiZmlyc3RDaGlsZCIsIm5vZGVWYWx1ZSIsInNlbGVj
dG9ycyIsImNyZWF0ZVBzZXVkbyIsInJlbGF0aXZlIiwiPiIsIiAiLCIrIiwifiIsInByZUZpbHRl
ciIsImV4Y2VzcyIsInVucXVvdGVkIiwibm9kZU5hbWVTZWxlY3RvciIsInBhdHRlcm4iLCJvcGVy
YXRvciIsImNoZWNrIiwicmVzdWx0Iiwid2hhdCIsInNpbXBsZSIsImZvcndhcmQiLCJvZlR5cGUi
LCJ4bWwiLCJ1bmlxdWVDYWNoZSIsIm91dGVyQ2FjaGUiLCJub2RlSW5kZXgiLCJzdGFydCIsInBh
cmVudCIsInVzZUNhY2hlIiwibGFzdENoaWxkIiwidW5pcXVlSUQiLCJwc2V1ZG8iLCJzZXRGaWx0
ZXJzIiwiaWR4IiwibWF0Y2hlZCIsIm5vdCIsIm1hdGNoZXIiLCJ1bm1hdGNoZWQiLCJoYXMiLCJp
bm5lclRleHQiLCJsYW5nIiwiZWxlbUxhbmciLCJoYXNoIiwibG9jYXRpb24iLCJyb290IiwiZm9j
dXMiLCJhY3RpdmVFbGVtZW50IiwiaGFzRm9jdXMiLCJocmVmIiwidGFiSW5kZXgiLCJlbmFibGVk
IiwiY2hlY2tlZCIsInNlbGVjdGVkIiwic2VsZWN0ZWRJbmRleCIsImVtcHR5IiwiaGVhZGVyIiwi
YnV0dG9uIiwiZXZlbiIsIm9kZCIsImx0IiwiZ3QiLCJyYWRpbyIsImNoZWNrYm94IiwiZmlsZSIs
InBhc3N3b3JkIiwiaW1hZ2UiLCJzdWJtaXQiLCJyZXNldCIsImZpbHRlcnMiLCJwYXJzZU9ubHki
LCJ0b2tlbnMiLCJzb0ZhciIsInByZUZpbHRlcnMiLCJjYWNoZWQiLCJjb21iaW5hdG9yIiwiYmFz
ZSIsInNraXAiLCJjaGVja05vbkVsZW1lbnRzIiwiZG9uZU5hbWUiLCJvbGRDYWNoZSIsIm5ld0Nh
Y2hlIiwiZWxlbWVudE1hdGNoZXIiLCJtYXRjaGVycyIsIm11bHRpcGxlQ29udGV4dHMiLCJjb250
ZXh0cyIsImNvbmRlbnNlIiwibmV3VW5tYXRjaGVkIiwibWFwcGVkIiwic2V0TWF0Y2hlciIsInBv
c3RGaWx0ZXIiLCJwb3N0RmluZGVyIiwicG9zdFNlbGVjdG9yIiwidGVtcCIsInByZU1hcCIsInBv
c3RNYXAiLCJwcmVleGlzdGluZyIsIm1hdGNoZXJJbiIsIm1hdGNoZXJPdXQiLCJtYXRjaGVyRnJv
bVRva2VucyIsImNoZWNrQ29udGV4dCIsImxlYWRpbmdSZWxhdGl2ZSIsImltcGxpY2l0UmVsYXRp
dmUiLCJtYXRjaENvbnRleHQiLCJtYXRjaEFueUNvbnRleHQiLCJtYXRjaGVyRnJvbUdyb3VwTWF0
Y2hlcnMiLCJlbGVtZW50TWF0Y2hlcnMiLCJzZXRNYXRjaGVycyIsImJ5U2V0IiwiYnlFbGVtZW50
Iiwic3VwZXJNYXRjaGVyIiwib3V0ZXJtb3N0IiwibWF0Y2hlZENvdW50Iiwic2V0TWF0Y2hlZCIs
ImNvbnRleHRCYWNrdXAiLCJkaXJydW5zVW5pcXVlIiwidG9rZW4iLCJjb21waWxlZCIsImRlZmF1
bHRWYWx1ZSIsInVuaXF1ZSIsImlzWE1MRG9jIiwiZXNjYXBlU2VsZWN0b3IiLCJ1bnRpbCIsInRy
dW5jYXRlIiwiaXMiLCJzaWJsaW5ncyIsIm4iLCJybmVlZHNDb250ZXh0IiwicnNpbmdsZVRhZyIs
InJpc1NpbXBsZSIsIndpbm5vdyIsInF1YWxpZmllciIsInNlbGYiLCJyb290alF1ZXJ5IiwicGFy
c2VIVE1MIiwicmVhZHkiLCJycGFyZW50c3ByZXYiLCJndWFyYW50ZWVkVW5pcXVlIiwiY2hpbGRy
ZW4iLCJjb250ZW50cyIsInByZXYiLCJ0YXJnZXRzIiwibCIsImNsb3Nlc3QiLCJpbmRleCIsInBy
ZXZBbGwiLCJhZGQiLCJhZGRCYWNrIiwic2libGluZyIsInBhcmVudHMiLCJwYXJlbnRzVW50aWwi
LCJuZXh0QWxsIiwibmV4dFVudGlsIiwicHJldlVudGlsIiwiY29udGVudERvY3VtZW50IiwicmV2
ZXJzZSIsInJub3RodG1sd2hpdGUiLCJjcmVhdGVPcHRpb25zIiwib2JqZWN0IiwiZmxhZyIsIkNh
bGxiYWNrcyIsImZpcmluZyIsIm1lbW9yeSIsImZpcmVkIiwibG9ja2VkIiwicXVldWUiLCJmaXJp
bmdJbmRleCIsImZpcmUiLCJvbmNlIiwic3RvcE9uRmFsc2UiLCJyZW1vdmUiLCJkaXNhYmxlIiwi
bG9jayIsImZpcmVXaXRoIiwiSWRlbnRpdHkiLCJ2IiwiVGhyb3dlciIsImV4IiwiYWRvcHRWYWx1
ZSIsInJlc29sdmUiLCJyZWplY3QiLCJtZXRob2QiLCJwcm9taXNlIiwiZmFpbCIsInRoZW4iLCJE
ZWZlcnJlZCIsImZ1bmMiLCJ0dXBsZXMiLCJzdGF0ZSIsImFsd2F5cyIsImRlZmVycmVkIiwiY2F0
Y2giLCJwaXBlIiwiZm5zIiwibmV3RGVmZXIiLCJ0dXBsZSIsInJldHVybmVkIiwicHJvZ3Jlc3Mi
LCJub3RpZnkiLCJvbkZ1bGZpbGxlZCIsIm9uUmVqZWN0ZWQiLCJvblByb2dyZXNzIiwibWF4RGVw
dGgiLCJkZXB0aCIsInNwZWNpYWwiLCJ0aGF0IiwibWlnaHRUaHJvdyIsIlR5cGVFcnJvciIsIm5v
dGlmeVdpdGgiLCJyZXNvbHZlV2l0aCIsInByb2Nlc3MiLCJleGNlcHRpb25Ib29rIiwic3RhY2tU
cmFjZSIsInJlamVjdFdpdGgiLCJnZXRTdGFja0hvb2siLCJzZXRUaW1lb3V0Iiwic3RhdGVTdHJp
bmciLCJ3aGVuIiwic2luZ2xlVmFsdWUiLCJyZW1haW5pbmciLCJyZXNvbHZlQ29udGV4dHMiLCJy
ZXNvbHZlVmFsdWVzIiwibWFzdGVyIiwidXBkYXRlRnVuYyIsInJlcnJvck5hbWVzIiwic3RhY2si
LCJjb25zb2xlIiwid2FybiIsIm1lc3NhZ2UiLCJyZWFkeUV4Y2VwdGlvbiIsInJlYWR5TGlzdCIs
InJlYWR5V2FpdCIsImhvbGRSZWFkeSIsImhvbGQiLCJ3YWl0IiwiY29tcGxldGVkIiwicmVtb3Zl
RXZlbnRMaXN0ZW5lciIsInJlYWR5U3RhdGUiLCJkb1Njcm9sbCIsImFjY2VzcyIsImNoYWluYWJs
ZSIsImVtcHR5R2V0IiwicmF3IiwiYnVsayIsImFjY2VwdERhdGEiLCJvd25lciIsIkRhdGEiLCJ1
aWQiLCJkZWZpbmVQcm9wZXJ0eSIsImNvbmZpZ3VyYWJsZSIsInNldCIsImRhdGEiLCJwcm9wIiwi
aGFzRGF0YSIsImRhdGFQcml2IiwiZGF0YVVzZXIiLCJyYnJhY2UiLCJybXVsdGlEYXNoIiwiZ2V0
RGF0YSIsIkpTT04iLCJwYXJzZSIsImRhdGFBdHRyIiwicmVtb3ZlRGF0YSIsIl9kYXRhIiwiX3Jl
bW92ZURhdGEiLCJkZXF1ZXVlIiwic3RhcnRMZW5ndGgiLCJob29rcyIsIl9xdWV1ZUhvb2tzIiwi
c3RvcCIsInNldHRlciIsImNsZWFyUXVldWUiLCJjb3VudCIsImRlZmVyIiwicG51bSIsInNvdXJj
ZSIsInJjc3NOdW0iLCJjc3NFeHBhbmQiLCJpc0hpZGRlbldpdGhpblRyZWUiLCJzdHlsZSIsImRp
c3BsYXkiLCJjc3MiLCJzd2FwIiwib2xkIiwiYWRqdXN0Q1NTIiwidmFsdWVQYXJ0cyIsInR3ZWVu
IiwiYWRqdXN0ZWQiLCJzY2FsZSIsIm1heEl0ZXJhdGlvbnMiLCJjdXJyZW50VmFsdWUiLCJpbml0
aWFsIiwidW5pdCIsImNzc051bWJlciIsImluaXRpYWxJblVuaXQiLCJkZWZhdWx0RGlzcGxheU1h
cCIsImdldERlZmF1bHREaXNwbGF5IiwiYm9keSIsInNob3dIaWRlIiwic2hvdyIsInZhbHVlcyIs
ImhpZGUiLCJ0b2dnbGUiLCJyY2hlY2thYmxlVHlwZSIsInJ0YWdOYW1lIiwicnNjcmlwdFR5cGUi
LCJ3cmFwTWFwIiwib3B0aW9uIiwidGhlYWQiLCJjb2wiLCJ0ciIsInRkIiwiX2RlZmF1bHQiLCJv
cHRncm91cCIsInRib2R5IiwidGZvb3QiLCJjb2xncm91cCIsImNhcHRpb24iLCJ0aCIsImdldEFs
bCIsInNldEdsb2JhbEV2YWwiLCJyZWZFbGVtZW50cyIsInJodG1sIiwiYnVpbGRGcmFnbWVudCIs
InNjcmlwdHMiLCJzZWxlY3Rpb24iLCJpZ25vcmVkIiwid3JhcCIsImZyYWdtZW50IiwiY3JlYXRl
RG9jdW1lbnRGcmFnbWVudCIsIm5vZGVzIiwiaHRtbFByZWZpbHRlciIsImNyZWF0ZVRleHROb2Rl
IiwiZGl2IiwiY2hlY2tDbG9uZSIsImNsb25lTm9kZSIsIm5vQ2xvbmVDaGVja2VkIiwicmtleUV2
ZW50Iiwicm1vdXNlRXZlbnQiLCJydHlwZW5hbWVzcGFjZSIsInJldHVyblRydWUiLCJyZXR1cm5G
YWxzZSIsInNhZmVBY3RpdmVFbGVtZW50IiwiZXJyIiwib24iLCJ0eXBlcyIsIm9uZSIsIm9yaWdG
biIsImV2ZW50Iiwib2ZmIiwiaGFuZGxlT2JqSW4iLCJldmVudEhhbmRsZSIsImV2ZW50cyIsInQi
LCJoYW5kbGVPYmoiLCJoYW5kbGVycyIsIm5hbWVzcGFjZXMiLCJvcmlnVHlwZSIsImVsZW1EYXRh
IiwiaGFuZGxlIiwidHJpZ2dlcmVkIiwiZGlzcGF0Y2giLCJkZWxlZ2F0ZVR5cGUiLCJiaW5kVHlw
ZSIsIm5hbWVzcGFjZSIsImRlbGVnYXRlQ291bnQiLCJzZXR1cCIsIm1hcHBlZFR5cGVzIiwib3Jp
Z0NvdW50IiwidGVhcmRvd24iLCJyZW1vdmVFdmVudCIsIm5hdGl2ZUV2ZW50IiwiZml4IiwiaGFu
ZGxlclF1ZXVlIiwiZGVsZWdhdGVUYXJnZXQiLCJwcmVEaXNwYXRjaCIsImlzUHJvcGFnYXRpb25T
dG9wcGVkIiwiY3VycmVudFRhcmdldCIsImlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkIiwi
cm5hbWVzcGFjZSIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwicG9zdERpc3Bh
dGNoIiwibWF0Y2hlZEhhbmRsZXJzIiwibWF0Y2hlZFNlbGVjdG9ycyIsImFkZFByb3AiLCJob29r
IiwiRXZlbnQiLCJlbnVtZXJhYmxlIiwib3JpZ2luYWxFdmVudCIsIndyaXRhYmxlIiwibG9hZCIs
Im5vQnViYmxlIiwidHJpZ2dlciIsImJsdXIiLCJjbGljayIsImJlZm9yZXVubG9hZCIsInJldHVy
blZhbHVlIiwicHJvcHMiLCJpc0RlZmF1bHRQcmV2ZW50ZWQiLCJkZWZhdWx0UHJldmVudGVkIiwi
cmVsYXRlZFRhcmdldCIsInRpbWVTdGFtcCIsImlzU2ltdWxhdGVkIiwic3RvcEltbWVkaWF0ZVBy
b3BhZ2F0aW9uIiwiYWx0S2V5IiwiYnViYmxlcyIsImNhbmNlbGFibGUiLCJjaGFuZ2VkVG91Y2hl
cyIsImN0cmxLZXkiLCJkZXRhaWwiLCJldmVudFBoYXNlIiwibWV0YUtleSIsInBhZ2VYIiwicGFn
ZVkiLCJzaGlmdEtleSIsInZpZXciLCJjaGFyIiwiY2hhckNvZGUiLCJrZXlDb2RlIiwiYnV0dG9u
cyIsImNsaWVudFgiLCJjbGllbnRZIiwib2Zmc2V0WCIsIm9mZnNldFkiLCJwb2ludGVySWQiLCJw
b2ludGVyVHlwZSIsInNjcmVlblgiLCJzY3JlZW5ZIiwidGFyZ2V0VG91Y2hlcyIsInRvRWxlbWVu
dCIsInRvdWNoZXMiLCJ3aGljaCIsIm1vdXNlZW50ZXIiLCJtb3VzZWxlYXZlIiwicG9pbnRlcmVu
dGVyIiwicG9pbnRlcmxlYXZlIiwib3JpZyIsInJlbGF0ZWQiLCJyeGh0bWxUYWciLCJybm9Jbm5l
cmh0bWwiLCJyY2hlY2tlZCIsInJzY3JpcHRUeXBlTWFza2VkIiwicmNsZWFuU2NyaXB0IiwibWFu
aXB1bGF0aW9uVGFyZ2V0IiwiY29udGVudCIsImRpc2FibGVTY3JpcHQiLCJyZXN0b3JlU2NyaXB0
IiwiY2xvbmVDb3B5RXZlbnQiLCJkZXN0IiwicGRhdGFPbGQiLCJwZGF0YUN1ciIsInVkYXRhT2xk
IiwidWRhdGFDdXIiLCJmaXhJbnB1dCIsImRvbU1hbmlwIiwiY29sbGVjdGlvbiIsImhhc1Njcmlw
dHMiLCJpTm9DbG9uZSIsImh0bWwiLCJfZXZhbFVybCIsImtlZXBEYXRhIiwiY2xlYW5EYXRhIiwi
ZGF0YUFuZEV2ZW50cyIsImRlZXBEYXRhQW5kRXZlbnRzIiwic3JjRWxlbWVudHMiLCJkZXN0RWxl
bWVudHMiLCJpblBhZ2UiLCJkZXRhY2giLCJhcHBlbmQiLCJwcmVwZW5kIiwiaW5zZXJ0QmVmb3Jl
IiwiYmVmb3JlIiwiYWZ0ZXIiLCJyZXBsYWNlV2l0aCIsInJlcGxhY2VDaGlsZCIsImFwcGVuZFRv
IiwicHJlcGVuZFRvIiwiaW5zZXJ0QWZ0ZXIiLCJyZXBsYWNlQWxsIiwib3JpZ2luYWwiLCJpbnNl
cnQiLCJybWFyZ2luIiwicm51bW5vbnB4IiwiZ2V0U3R5bGVzIiwib3BlbmVyIiwiZ2V0Q29tcHV0
ZWRTdHlsZSIsImNvbXB1dGVTdHlsZVRlc3RzIiwiY3NzVGV4dCIsImNvbnRhaW5lciIsImRpdlN0
eWxlIiwicGl4ZWxQb3NpdGlvblZhbCIsInJlbGlhYmxlTWFyZ2luTGVmdFZhbCIsIm1hcmdpbkxl
ZnQiLCJib3hTaXppbmdSZWxpYWJsZVZhbCIsIndpZHRoIiwibWFyZ2luUmlnaHQiLCJwaXhlbE1h
cmdpblJpZ2h0VmFsIiwiYmFja2dyb3VuZENsaXAiLCJjbGVhckNsb25lU3R5bGUiLCJwaXhlbFBv
c2l0aW9uIiwiYm94U2l6aW5nUmVsaWFibGUiLCJwaXhlbE1hcmdpblJpZ2h0IiwicmVsaWFibGVN
YXJnaW5MZWZ0IiwiY3VyQ1NTIiwiY29tcHV0ZWQiLCJtaW5XaWR0aCIsIm1heFdpZHRoIiwiZ2V0
UHJvcGVydHlWYWx1ZSIsImFkZEdldEhvb2tJZiIsImNvbmRpdGlvbkZuIiwiaG9va0ZuIiwicmRp
c3BsYXlzd2FwIiwiY3NzU2hvdyIsInBvc2l0aW9uIiwidmlzaWJpbGl0eSIsImNzc05vcm1hbFRy
YW5zZm9ybSIsImxldHRlclNwYWNpbmciLCJmb250V2VpZ2h0IiwiY3NzUHJlZml4ZXMiLCJlbXB0
eVN0eWxlIiwidmVuZG9yUHJvcE5hbWUiLCJjYXBOYW1lIiwic2V0UG9zaXRpdmVOdW1iZXIiLCJz
dWJ0cmFjdCIsIm1heCIsImF1Z21lbnRXaWR0aE9ySGVpZ2h0IiwiZXh0cmEiLCJpc0JvcmRlckJv
eCIsInN0eWxlcyIsImdldFdpZHRoT3JIZWlnaHQiLCJ2YWx1ZUlzQm9yZGVyQm94IiwiZ2V0Q2xp
ZW50UmVjdHMiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJjc3NIb29rcyIsIm9wYWNpdHkiLCJh
bmltYXRpb25JdGVyYXRpb25Db3VudCIsImNvbHVtbkNvdW50IiwiZmlsbE9wYWNpdHkiLCJmbGV4
R3JvdyIsImZsZXhTaHJpbmsiLCJsaW5lSGVpZ2h0Iiwib3JkZXIiLCJvcnBoYW5zIiwid2lkb3dz
IiwiekluZGV4Iiwiem9vbSIsImNzc1Byb3BzIiwiZmxvYXQiLCJvcmlnTmFtZSIsImlzRmluaXRl
IiwibGVmdCIsIm1hcmdpbiIsInBhZGRpbmciLCJib3JkZXIiLCJwcmVmaXgiLCJzdWZmaXgiLCJl
eHBhbmQiLCJleHBhbmRlZCIsInBhcnRzIiwiZGVsYXkiLCJ0aW1lIiwiZngiLCJzcGVlZHMiLCJ0
aW1lb3V0IiwiY2xlYXJUaW1lb3V0Iiwib3B0IiwiY2hlY2tPbiIsIm9wdFNlbGVjdGVkIiwicmFk
aW9WYWx1ZSIsImJvb2xIb29rIiwicmVtb3ZlQXR0ciIsIm5UeXBlIiwiYXR0ckhvb2tzIiwiYXR0
ck5hbWVzIiwiZ2V0dGVyIiwibG93ZXJjYXNlTmFtZSIsInJmb2N1c2FibGUiLCJyY2xpY2thYmxl
IiwicmVtb3ZlUHJvcCIsInByb3BGaXgiLCJwcm9wSG9va3MiLCJ0YWJpbmRleCIsInBhcnNlSW50
IiwiZm9yIiwiY2xhc3MiLCJzdHJpcEFuZENvbGxhcHNlIiwiZ2V0Q2xhc3MiLCJhZGRDbGFzcyIs
ImNsYXNzZXMiLCJjdXJWYWx1ZSIsImNsYXp6IiwiZmluYWxWYWx1ZSIsInJlbW92ZUNsYXNzIiwi
dG9nZ2xlQ2xhc3MiLCJzdGF0ZVZhbCIsImNsYXNzTmFtZXMiLCJoYXNDbGFzcyIsInJyZXR1cm4i
LCJ2YWxIb29rcyIsIm9wdGlvblNldCIsInJmb2N1c01vcnBoIiwib25seUhhbmRsZXJzIiwiYnVi
YmxlVHlwZSIsIm9udHlwZSIsImV2ZW50UGF0aCIsImlzVHJpZ2dlciIsInBhcmVudFdpbmRvdyIs
InNpbXVsYXRlIiwidHJpZ2dlckhhbmRsZXIiLCJob3ZlciIsImZuT3ZlciIsImZuT3V0IiwiZm9j
dXNpbiIsImF0dGFjaGVzIiwicmJyYWNrZXQiLCJyQ1JMRiIsInJzdWJtaXR0ZXJUeXBlcyIsInJz
dWJtaXR0YWJsZSIsImJ1aWxkUGFyYW1zIiwidHJhZGl0aW9uYWwiLCJwYXJhbSIsInMiLCJ2YWx1
ZU9yRnVuY3Rpb24iLCJlbmNvZGVVUklDb21wb25lbnQiLCJzZXJpYWxpemUiLCJzZXJpYWxpemVB
cnJheSIsIndyYXBBbGwiLCJmaXJzdEVsZW1lbnRDaGlsZCIsIndyYXBJbm5lciIsInVud3JhcCIs
ImhpZGRlbiIsInZpc2libGUiLCJvZmZzZXRXaWR0aCIsIm9mZnNldEhlaWdodCIsImNyZWF0ZUhU
TUxEb2N1bWVudCIsImltcGxlbWVudGF0aW9uIiwia2VlcFNjcmlwdHMiLCJwYXJzZWQiLCJnZXRX
aW5kb3ciLCJvZmZzZXQiLCJzZXRPZmZzZXQiLCJjdXJQb3NpdGlvbiIsImN1ckxlZnQiLCJjdXJD
U1NUb3AiLCJjdXJUb3AiLCJjdXJPZmZzZXQiLCJjdXJDU1NMZWZ0IiwiY2FsY3VsYXRlUG9zaXRp
b24iLCJjdXJFbGVtIiwidXNpbmciLCJ3aW4iLCJyZWN0IiwiaGVpZ2h0IiwicGFnZVlPZmZzZXQi
LCJjbGllbnRUb3AiLCJwYWdlWE9mZnNldCIsImNsaWVudExlZnQiLCJvZmZzZXRQYXJlbnQiLCJw
YXJlbnRPZmZzZXQiLCJzY3JvbGxMZWZ0Iiwic2Nyb2xsVG9wIiwic2Nyb2xsVG8iLCJIZWlnaHQi
LCJXaWR0aCIsIiIsImRlZmF1bHRFeHRyYSIsImZ1bmNOYW1lIiwiZGVmaW5lIiwiYW1kIiwiX2pR
dWVyeSIsIl8kIiwiJCIsIm5vQ29uZmxpY3QiXSwibWFwcGluZ3MiOiI7Q0FhQSxTQUFZQSxFQUFR
QyxHQUVuQixZQUV1QixpQkFBWEMsU0FBaUQsZ0JBQW5CQSxRQUFPQyxRQVNoREQsT0FBT0MsUUFB
VUgsRUFBT0ksU0FDdkJILEVBQVNELEdBQVEsR0FDakIsU0FBVUssR0FDVCxJQUFNQSxFQUFFRCxT
QUNQLEtBQU0sSUFBSUUsT0FBTywyQ0FFbEIsT0FBT0wsR0FBU0ksSUFHbEJKLEVBQVNELElBSVks
bUJBQVhPLFFBQXlCQSxPQUFTQyxLQUFNLFNBQVVELEVBQVFFLEdBTXRFLFlBRUEsSUFBSUMsTUFF
QU4sRUFBV0csRUFBT0gsU0FFbEJPLEVBQVdDLE9BQU9DLGVBRWxCQyxFQUFRSixFQUFJSSxNQUVa
QyxFQUFTTCxFQUFJSyxPQUViQyxFQUFPTixFQUFJTSxLQUVYQyxFQUFVUCxFQUFJTyxRQUVkQyxL
QUVBQyxFQUFXRCxFQUFXQyxTQUV0QkMsRUFBU0YsRUFBV0csZUFFcEJDLEVBQWFGLEVBQU9ELFNB
RXBCSSxFQUF1QkQsRUFBV0UsS0FBTVosUUFFeENhLElBSUgsU0FBU0MsR0FBU0MsRUFBTUMsR0FD
dkJBLEVBQU1BLEdBQU94QixDQUViLElBQUl5QixHQUFTRCxFQUFJRSxjQUFlLFNBRWhDRCxHQUFP
RSxLQUFPSixFQUNkQyxFQUFJSSxLQUFLQyxZQUFhSixHQUFTSyxXQUFXQyxZQUFhTixHQVF6RCxH
QUNDTyxHQUFVLGdPQUdWQyxFQUFTLFNBQVVDLEVBQVVDLEdBSTVCLE1BQU8sSUFBSUYsR0FBT0cs
R0FBR0MsS0FBTUgsRUFBVUMsSUFLdENHLEVBQVEscUNBR1JDLEVBQVksUUFDWkMsRUFBYSxZQUdi
QyxFQUFhLFNBQVVDLEVBQUtDLEdBQzNCLE1BQU9BLEdBQU9DLGNBR2hCWCxHQUFPRyxHQUFLSCxF
QUFPWSxXQUdsQkMsT0FBUWQsRUFFUmUsWUFBYWQsRUFHYmUsT0FBUSxFQUVSQyxRQUFTLFdBQ1Is
TUFBT3ZDLEdBQU1VLEtBQU1oQixPQUtwQjhDLElBQUssU0FBVUMsR0FHZCxNQUFZLE9BQVBBLEVB
Q0d6QyxFQUFNVSxLQUFNaEIsTUFJYitDLEVBQU0sRUFBSS9DLEtBQU0rQyxFQUFNL0MsS0FBSzRD
LFFBQVc1QyxLQUFNK0MsSUFLcERDLFVBQVcsU0FBVUMsR0FHcEIsR0FBSUMsR0FBTXJCLEVBQU9z
QixNQUFPbkQsS0FBSzJDLGNBQWVNLEVBTTVDLE9BSEFDLEdBQUlFLFdBQWFwRCxLQUdWa0QsR0FJ
UkcsS0FBTSxTQUFVQyxHQUNmLE1BQU96QixHQUFPd0IsS0FBTXJELEtBQU1zRCxJQUczQkMsSUFB
SyxTQUFVRCxHQUNkLE1BQU90RCxNQUFLZ0QsVUFBV25CLEVBQU8wQixJQUFLdkQsS0FBTSxTQUFV
d0QsRUFBTUMsR0FDeEQsTUFBT0gsR0FBU3RDLEtBQU13QyxFQUFNQyxFQUFHRCxPQUlqQ2xELE1B
QU8sV0FDTixNQUFPTixNQUFLZ0QsVUFBVzFDLEVBQU1vRCxNQUFPMUQsS0FBTTJELGFBRzNDQyxN
QUFPLFdBQ04sTUFBTzVELE1BQUs2RCxHQUFJLElBR2pCQyxLQUFNLFdBQ0wsTUFBTzlELE1BQUs2
RCxRQUdiQSxHQUFJLFNBQVVKLEdBQ2IsR0FBSU0sR0FBTS9ELEtBQUs0QyxPQUNkb0IsR0FBS1As
R0FBTUEsRUFBSSxFQUFJTSxFQUFNLEVBQzFCLE9BQU8vRCxNQUFLZ0QsVUFBV2dCLEdBQUssR0FB
S0EsRUFBSUQsR0FBUS9ELEtBQU1nRSxTQUdwREMsSUFBSyxXQUNKLE1BQU9qRSxNQUFLb0QsWUFB
Y3BELEtBQUsyQyxlQUtoQ25DLEtBQU1BLEVBQ04wRCxLQUFNaEUsRUFBSWdFLEtBQ1ZDLE9BQVFq
RSxFQUFJaUUsUUFHYnRDLEVBQU91QyxPQUFTdkMsRUFBT0csR0FBR29DLE9BQVMsV0FDbEMsR0FB
SUMsR0FBU0MsRUFBTUMsRUFBS0MsRUFBTUMsRUFBYUMsRUFDMUNDLEVBQVNoQixVQUFXLE9BQ3BC
RixFQUFJLEVBQ0piLEVBQVNlLFVBQVVmLE9BQ25CZ0MsR0FBTyxDQXNCUixLQW5CdUIsaUJBQVhE
LEtBQ1hDLEVBQU9ELEVBR1BBLEVBQVNoQixVQUFXRixPQUNwQkEsS0FJc0IsZ0JBQVhrQixJQUF3
QjlDLEVBQU9nRCxXQUFZRixLQUN0REEsTUFJSWxCLElBQU1iLElBQ1YrQixFQUFTM0UsS0FDVHlE
LEtBR09BLEVBQUliLEVBQVFhLElBR25CLEdBQXFDLE9BQTlCWSxFQUFVVixVQUFXRixJQUczQixJ
QUFNYSxJQUFRRCxHQUNiRSxFQUFNSSxFQUFRTCxHQUNkRSxFQUFPSCxFQUFTQyxHQUdYSyxJQUFX
SCxJQUtYSSxHQUFRSixJQUFVM0MsRUFBT2lELGNBQWVOLEtBQzFDQyxFQUFjNUMsRUFBT2tELFFB
QVNQLE1BRTNCQyxHQUNKQSxHQUFjLEVBQ2RDLEVBQVFILEdBQU8xQyxFQUFPa0QsUUFBU1IsR0FB
UUEsTUFHdkNHLEVBQVFILEdBQU8xQyxFQUFPaUQsY0FBZVAsR0FBUUEsS0FJOUNJLEVBQVFMLEdB
QVN6QyxFQUFPdUMsT0FBUVEsRUFBTUYsRUFBT0YsSUFHekJRLFNBQVRSLElBQ1hHLEVBQVFMLEdB
QVNFLEdBT3JCLE9BQU9HLElBR1I5QyxFQUFPdUMsUUFHTmEsUUFBUyxVQUFhckQsRUFBVXNELEtB
QUtDLFVBQVdDLFFBQVMsTUFBTyxJQUdoRUMsU0FBUyxFQUVUQyxNQUFPLFNBQVVDLEdBQ2hCLEtB
QU0sSUFBSXpGLE9BQU95RixJQUdsQkMsS0FBTSxhQUVOWCxXQUFZLFNBQVVZLEdBQ3JCLE1BQThC
LGFBQXZCNUQsRUFBTzZELEtBQU1ELElBR3JCVixRQUFTWSxNQUFNWixRQUVmYSxTQUFVLFNBQVVI
LEdBQ25CLE1BQWMsT0FBUEEsR0FBZUEsSUFBUUEsRUFBSTFGLFFBR25DOEYsVUFBVyxTQUFVSixH
QUtwQixHQUFJQyxHQUFPN0QsRUFBTzZELEtBQU1ELEVBQ3hCLFFBQWtCLFdBQVRDLEdBQThCLFdB
QVRBLEtBSzVCSSxNQUFPTCxFQUFNTSxXQUFZTixLQUc1QlgsY0FBZSxTQUFVVyxHQUN4QixHQUFJ
TyxHQUFPQyxDQUlYLFVBQU1SLEdBQWdDLG9CQUF6QjlFLEVBQVNLLEtBQU15RSxRQUk1Qk8sRUFB
UTdGLEVBQVVzRixNQVFsQlEsRUFBT3JGLEVBQU9JLEtBQU1nRixFQUFPLGdCQUFtQkEsRUFBTXJE
LFlBQzdCLGtCQUFUc0QsSUFBdUJuRixFQUFXRSxLQUFNaUYsS0FBV2xGLEtBR2xFbUYsY0FBZSxT
QUFVVCxHQUl4QixHQUFJbkIsRUFFSixLQUFNQSxJQUFRbUIsR0FDYixPQUFPLENBRVIsUUFBTyxH
QUdSQyxLQUFNLFNBQVVELEdBQ2YsTUFBWSxPQUFQQSxFQUNHQSxFQUFNLEdBSVEsZ0JBQVJBLElB
QW1DLGtCQUFSQSxHQUN4Qy9FLEVBQVlDLEVBQVNLLEtBQU15RSxLQUFXLGVBQy9CQSxJQUlUVSxX
QUFZLFNBQVVoRixHQUNyQkQsRUFBU0MsSUFNVmlGLFVBQVcsU0FBVUMsR0FDcEIsTUFBT0EsR0FB
T2pCLFFBQVNqRCxFQUFXLE9BQVFpRCxRQUFTaEQsRUFBWUMsSUFHaEVpRSxTQUFVLFNBQVU5QyxF
QUFNYyxHQUN6QixNQUFPZCxHQUFLOEMsVUFBWTlDLEVBQUs4QyxTQUFTQyxnQkFBa0JqQyxFQUFL
aUMsZUFHOURsRCxLQUFNLFNBQVVvQyxFQUFLbkMsR0FDcEIsR0FBSVYsR0FBUWEsRUFBSSxDQUVo
QixJQUFLK0MsRUFBYWYsSUFFakIsSUFEQTdDLEVBQVM2QyxFQUFJN0MsT0FDTGEsRUFBSWIsRUFB
UWEsSUFDbkIsR0FBS0gsRUFBU3RDLEtBQU15RSxFQUFLaEMsR0FBS0EsRUFBR2dDLEVBQUtoQyxP
QUFVLEVBQy9DLFVBSUYsS0FBTUEsSUFBS2dDLEdBQ1YsR0FBS25DLEVBQVN0QyxLQUFNeUUsRUFB
S2hDLEdBQUtBLEVBQUdnQyxFQUFLaEMsT0FBVSxFQUMvQyxLQUtILE9BQU9nQyxJQUlSZ0IsS0FB
TSxTQUFVbEYsR0FDZixNQUFlLE9BQVJBLEVBQ04sSUFDRUEsRUFBTyxJQUFLNkQsUUFBU2xELEVB
QU8sS0FJaEN3RSxVQUFXLFNBQVV4RyxFQUFLeUcsR0FDekIsR0FBSXpELEdBQU15RCxLQWFWLE9B
WFksT0FBUHpHLElBQ0NzRyxFQUFhcEcsT0FBUUYsSUFDekIyQixFQUFPc0IsTUFBT0QsRUFDRSxn
QkFBUmhELElBQ0xBLEdBQVFBLEdBR1hNLEVBQUtRLEtBQU1rQyxFQUFLaEQsSUFJWGdELEdBR1Iw
RCxRQUFTLFNBQVVwRCxFQUFNdEQsRUFBS3VELEdBQzdCLE1BQWMsT0FBUHZELEtBQW1CTyxFQUFR
TyxLQUFNZCxFQUFLc0QsRUFBTUMsSUFLcEROLE1BQU8sU0FBVVMsRUFBT2lELEdBS3ZCLElBSkEs
R0FBSTlDLElBQU84QyxFQUFPakUsT0FDakJvQixFQUFJLEVBQ0pQLEVBQUlHLEVBQU1oQixPQUVI
b0IsRUFBSUQsRUFBS0MsSUFDaEJKLEVBQU9ILEtBQVFvRCxFQUFRN0MsRUFLeEIsT0FGQUosR0FB
TWhCLE9BQVNhLEVBRVJHLEdBR1JrRCxLQUFNLFNBQVU3RCxFQUFPSyxFQUFVeUQsR0FTaEMsSUFS
QSxHQUFJQyxHQUNIQyxLQUNBeEQsRUFBSSxFQUNKYixFQUFTSyxFQUFNTCxPQUNmc0UsR0FBa0JI
LEVBSVh0RCxFQUFJYixFQUFRYSxJQUNuQnVELEdBQW1CMUQsRUFBVUwsRUFBT1EsR0FBS0EsR0FD
cEN1RCxJQUFvQkUsR0FDeEJELEVBQVF6RyxLQUFNeUMsRUFBT1EsR0FJdkIsT0FBT3dELElBSVIx
RCxJQUFLLFNBQVVOLEVBQU9LLEVBQVU2RCxHQUMvQixHQUFJdkUsR0FBUXdFLEVBQ1gzRCxFQUFJ
LEVBQ0pQLElBR0QsSUFBS3NELEVBQWF2RCxHQUVqQixJQURBTCxFQUFTSyxFQUFNTCxPQUNQYSxF
QUFJYixFQUFRYSxJQUNuQjJELEVBQVE5RCxFQUFVTCxFQUFPUSxHQUFLQSxFQUFHMEQsR0FFbkIs
TUFBVEMsR0FDSmxFLEVBQUkxQyxLQUFNNEcsT0FNWixLQUFNM0QsSUFBS1IsR0FDVm1FLEVBQVE5
RCxFQUFVTCxFQUFPUSxHQUFLQSxFQUFHMEQsR0FFbkIsTUFBVEMsR0FDSmxFLEVBQUkxQyxLQUFN
NEcsRUFNYixPQUFPN0csR0FBT21ELFNBQVdSLElBSTFCbUUsS0FBTSxFQUlOQyxNQUFPLFNBQVV0
RixFQUFJRCxHQUNwQixHQUFJd0YsR0FBS0MsRUFBTUYsQ0FVZixJQVJ3QixnQkFBWnZGLEtBQ1h3
RixFQUFNdkYsRUFBSUQsR0FDVkEsRUFBVUMsRUFDVkEsRUFBS3VGLEdBS0ExRixFQUFPZ0QsV0FB
WTdDLEdBYXpCLE1BUkF3RixHQUFPbEgsRUFBTVUsS0FBTTJDLFVBQVcsR0FDOUIyRCxFQUFRLFdB
Q1AsTUFBT3RGLEdBQUcwQixNQUFPM0IsR0FBVy9CLEtBQU13SCxFQUFLakgsT0FBUUQsRUFBTVUs
S0FBTTJDLGNBSTVEMkQsRUFBTUQsS0FBT3JGLEVBQUdxRixLQUFPckYsRUFBR3FGLE1BQVF4RixF
QUFPd0YsT0FFbENDLEdBR1JHLElBQUtDLEtBQUtELElBSVZ4RyxRQUFTQSxJQUdhLGtCQUFYMEcs
VUFDWDlGLEVBQU9HLEdBQUkyRixPQUFPQyxVQUFhMUgsRUFBS3lILE9BQU9DLFdBSTVDL0YsRUFB
T3dCLEtBQU0sdUVBQXVFd0UsTUFBTyxLQUMzRixTQUFVcEUsRUFBR2EsR0FDWjVELEVBQVksV0FB
YTRELEVBQU8sS0FBUUEsRUFBS2lDLGVBRzlDLFNBQVNDLEdBQWFmLEdBTXJCLEdBQUk3QyxLQUFX
NkMsR0FBTyxVQUFZQSxJQUFPQSxFQUFJN0MsT0FDNUM4QyxFQUFPN0QsRUFBTzZELEtBQU1ELEVB
RXJCLE9BQWMsYUFBVEMsSUFBdUI3RCxFQUFPK0QsU0FBVUgsS0FJN0IsVUFBVEMsR0FBK0IsSUFB
WDlDLEdBQ1IsZ0JBQVhBLElBQXVCQSxFQUFTLEdBQU9BLEVBQVMsSUFBTzZDLElBRWhFLEdBQUlx
QyxHQVdKLFNBQVcvSCxHQUVYLEdBQUkwRCxHQUNIeEMsRUFDQThHLEVBQ0FDLEVBQ0FDLEVBQ0FD
LEVBQ0FDLEVBQ0FDLEVBQ0FDLEVBQ0FDLEVBQ0FDLEVBR0FDLEVBQ0E1SSxFQUNBNkksRUFDQUMs
RUFDQUMsRUFDQUMsRUFDQTNCLEVBQ0E0QixFQUdBNUQsRUFBVSxTQUFXLEVBQUksR0FBSXlDLE1B
QzdCb0IsRUFBZS9JLEVBQU9ILFNBQ3RCbUosRUFBVSxFQUNWQyxFQUFPLEVBQ1BDLEVBQWFDLEtB
Q2JDLEVBQWFELEtBQ2JFLEVBQWdCRixLQUNoQkcsRUFBWSxTQUFVQyxFQUFHQyxHQUl4QixNQUhL
RCxLQUFNQyxJQUNWaEIsR0FBZSxHQUVULEdBSVIzSCxLQUFjQyxlQUNkWCxLQUNBc0osRUFBTXRK
LEVBQUlzSixJQUNWQyxFQUFjdkosRUFBSU0sS0FDbEJBLEVBQU9OLEVBQUlNLEtBQ1hGLEVBQVFK
LEVBQUlJLE1BR1pHLEVBQVUsU0FBVWlKLEVBQU1sRyxHQUd6QixJQUZBLEdBQUlDLEdBQUksRUFD
UE0sRUFBTTJGLEVBQUs5RyxPQUNKYSxFQUFJTSxFQUFLTixJQUNoQixHQUFLaUcsRUFBS2pHLEtB
QU9ELEVBQ2hCLE1BQU9DLEVBR1QsV0FHRGtHLEVBQVcsNkhBS1hDLEVBQWEsc0JBR2JDLEVBQWEs
Z0NBR2JDLEVBQWEsTUFBUUYsRUFBYSxLQUFPQyxFQUFhLE9BQVNELEVBRTlELGdCQUFrQkEsRUFF
bEIsMkRBQTZEQyxFQUFhLE9BQVNELEVBQ25GLE9BRURHLEVBQVUsS0FBT0YsRUFBYSx3RkFLQUMs
RUFBYSxlQU0zQ0UsRUFBYyxHQUFJQyxRQUFRTCxFQUFhLElBQUssS0FDNUMxSCxFQUFRLEdBQUkr
SCxRQUFRLElBQU1MLEVBQWEsOEJBQWdDQSxFQUFhLEtBQU0sS0FFMUZNLEVBQVMsR0FBSUQsUUFB
USxJQUFNTCxFQUFhLEtBQU9BLEVBQWEsS0FDNURPLEVBQWUsR0FBSUYsUUFBUSxJQUFNTCxFQUFh
LFdBQWFBLEVBQWEsSUFBTUEsRUFBYSxLQUUzRlEsRUFBbUIsR0FBSUgsUUFBUSxJQUFNTCxFQUFh
LGlCQUFtQkEsRUFBYSxPQUFRLEtBRTFGUyxFQUFVLEdBQUlKLFFBQVFGLEdBQ3RCTyxFQUFjLEdB
QUlMLFFBQVEsSUFBTUosRUFBYSxLQUU3Q1UsR0FDQ0MsR0FBTSxHQUFJUCxRQUFRLE1BQVFKLEVB
QWEsS0FDdkNZLE1BQVMsR0FBSVIsUUFBUSxRQUFVSixFQUFhLEtBQzVDYSxJQUFPLEdBQUlULFFB
QVEsS0FBT0osRUFBYSxTQUN2Q2MsS0FBUSxHQUFJVixRQUFRLElBQU1ILEdBQzFCYyxPQUFVLEdB
QUlYLFFBQVEsSUFBTUYsR0FDNUJjLE1BQVMsR0FBSVosUUFBUSx5REFBMkRMLEVBQy9FLCtCQUFp
Q0EsRUFBYSxjQUFnQkEsRUFDOUQsYUFBZUEsRUFBYSxTQUFVLEtBQ3ZDa0IsS0FBUSxHQUFJYixR
QUFRLE9BQVNOLEVBQVcsS0FBTSxLQUc5Q29CLGFBQWdCLEdBQUlkLFFBQVEsSUFBTUwsRUFBYSxt
REFDOUNBLEVBQWEsbUJBQXFCQSxFQUFhLG1CQUFvQixNQUdyRW9CLEVBQVUsc0NBQ1ZDLEVBQVUs
U0FFVkMsRUFBVSx5QkFHVkMsRUFBYSxtQ0FFYkMsRUFBVyxPQUlYQyxFQUFZLEdBQUlwQixRQUFR
LHFCQUF1QkwsRUFBYSxNQUFRQSxFQUFhLE9BQVEsTUFDekYwQixHQUFZLFNBQVVDLEVBQUdDLEVB
QVNDLEdBQ2pDLEdBQUlDLEdBQU8sS0FBT0YsRUFBVSxLQUk1QixPQUFPRSxLQUFTQSxHQUFRRCxF
QUN2QkQsRUFDQUUsRUFBTyxFQUVOQyxPQUFPQyxhQUFjRixFQUFPLE9BRTVCQyxPQUFPQyxhQUFj
RixHQUFRLEdBQUssTUFBZSxLQUFQQSxFQUFlLFFBSzVERyxHQUFhLHNEQUNiQyxHQUFhLFNBQVVD
LEVBQUlDLEdBQzFCLE1BQUtBLEdBR1EsT0FBUEQsRUFDRyxTQUlEQSxFQUFHekwsTUFBTyxNQUFV
LEtBQU95TCxFQUFHRSxXQUFZRixFQUFHbkosT0FBUyxHQUFJakMsU0FBVSxJQUFPLElBSTVFLEtB
QU9vTCxHQU9mRyxHQUFnQixXQUNmMUQsS0FHRDJELEdBQW1CQyxHQUNsQixTQUFVNUksR0FDVCxN
QUFPQSxHQUFLNkksWUFBYSxJQUFTLFFBQVU3SSxJQUFRLFNBQVdBLE1BRTlEOEksSUFBSyxhQUFj
QyxLQUFNLFVBSTdCLEtBQ0MvTCxFQUFLa0QsTUFDSHhELEVBQU1JLEVBQU1VLEtBQU04SCxFQUFh
MEQsWUFDaEMxRCxFQUFhMEQsWUFJZHRNLEVBQUs0SSxFQUFhMEQsV0FBVzVKLFFBQVM2SixTQUNy
QyxNQUFRQyxJQUNUbE0sR0FBU2tELE1BQU94RCxFQUFJMEMsT0FHbkIsU0FBVStCLEVBQVFnSSxH
QUNqQmxELEVBQVkvRixNQUFPaUIsRUFBUXJFLEVBQU1VLEtBQUsyTCxLQUt2QyxTQUFVaEksRUFB
UWdJLEdBQ2pCLEdBQUkzSSxHQUFJVyxFQUFPL0IsT0FDZGEsRUFBSSxDQUVMLE9BQVNrQixFQUFP
WCxLQUFPMkksRUFBSWxKLE1BQzNCa0IsRUFBTy9CLE9BQVNvQixFQUFJLElBS3ZCLFFBQVM4RCxJ
QUFRaEcsRUFBVUMsRUFBUzRFLEVBQVNpRyxHQUM1QyxHQUFJQyxHQUFHcEosRUFBR0QsRUFBTXNK
LEVBQUtDLEVBQU9DLEVBQVFDLEVBQ25DQyxFQUFhbkwsR0FBV0EsRUFBUW9MLGNBR2hDVixFQUFX
MUssRUFBVUEsRUFBUTBLLFNBQVcsQ0FLekMsSUFIQTlGLEVBQVVBLE1BR2UsZ0JBQWI3RSxLQUEw
QkEsR0FDeEIsSUFBYjJLLEdBQStCLElBQWJBLEdBQStCLEtBQWJBLEVBRXBDLE1BQU85RixFQUlS
LEtBQU1pRyxLQUVFN0ssRUFBVUEsRUFBUW9MLGVBQWlCcEwsRUFBVStHLEtBQW1CbEosR0FDdEU0
SSxFQUFhekcsR0FFZEEsRUFBVUEsR0FBV25DLEVBRWhCOEksR0FBaUIsQ0FJckIsR0FBa0IsS0FB
YitELElBQW9CTSxFQUFRNUIsRUFBV2lDLEtBQU10TCxJQUdqRCxHQUFNK0ssRUFBSUUsRUFBTSxJ
QUdmLEdBQWtCLElBQWJOLEVBQWlCLENBQ3JCLEtBQU1qSixFQUFPekIsRUFBUXNMLGVBQWdCUixJ
QVVwQyxNQUFPbEcsRUFMUCxJQUFLbkQsRUFBSzhKLEtBQU9ULEVBRWhCLE1BREFsRyxHQUFRbkcs
S0FBTWdELEdBQ1BtRCxNQVlULElBQUt1RyxJQUFlMUosRUFBTzBKLEVBQVdHLGVBQWdCUixLQUNy
RGhFLEVBQVU5RyxFQUFTeUIsSUFDbkJBLEVBQUs4SixLQUFPVCxFQUdaLE1BREFsRyxHQUFRbkcs
S0FBTWdELEdBQ1BtRCxNQUtILENBQUEsR0FBS29HLEVBQU0sR0FFakIsTUFEQXZNLEdBQUtrRCxN
QUFPaUQsRUFBUzVFLEVBQVF3TCxxQkFBc0J6TCxJQUM1QzZFLENBR0QsS0FBTWtHLEVBQUlFLEVB
QU0sS0FBTzlMLEVBQVF1TSx3QkFDckN6TCxFQUFReUwsdUJBR1IsTUFEQWhOLEdBQUtrRCxNQUFP
aUQsRUFBUzVFLEVBQVF5TCx1QkFBd0JYLElBQzlDbEcsRUFLVCxHQUFLMUYsRUFBUXdNLE1BQ1hy
RSxFQUFldEgsRUFBVyxRQUN6QjZHLElBQWNBLEVBQVUrRSxLQUFNNUwsSUFBYyxDQUU5QyxHQUFr
QixJQUFiMkssRUFDSlMsRUFBYW5MLEVBQ2JrTCxFQUFjbkwsTUFNUixJQUF3QyxXQUFuQ0MsRUFB
UXVFLFNBQVNDLGNBQTZCLEVBR25EdUcsRUFBTS9LLEVBQVE0TCxhQUFjLE9BQ2pDYixFQUFNQSxF
QUFJMUgsUUFBU3lHLEdBQVlDLElBRS9CL0osRUFBUTZMLGFBQWMsS0FBT2QsRUFBTTdILEdBSXBD
K0gsRUFBUzlFLEVBQVVwRyxHQUNuQjJCLEVBQUl1SixFQUFPcEssTUFDWCxPQUFRYSxJQUNQdUos
RUFBT3ZKLEdBQUssSUFBTXFKLEVBQU0sSUFBTWUsR0FBWWIsRUFBT3ZKLEdBRWxEd0osR0FBY0Qs
RUFBT2MsS0FBTSxLQUczQlosRUFBYTlCLEVBQVNzQyxLQUFNNUwsSUFBY2lNLEdBQWFoTSxFQUFR
TCxhQUM5REssRUFHRixHQUFLa0wsRUFDSixJQUlDLE1BSEF6TSxHQUFLa0QsTUFBT2lELEVBQ1h1
RyxFQUFXYyxpQkFBa0JmLElBRXZCdEcsRUFDTixNQUFRc0gsSUFDUixRQUNJbkIsSUFBUTdILEdB
Q1psRCxFQUFRbU0sZ0JBQWlCLFFBUy9CLE1BQU85RixHQUFRdEcsRUFBU3NELFFBQVNsRCxFQUFP
LE1BQVFILEVBQVM0RSxFQUFTaUcsR0FTbkUsUUFBUzFELE1BQ1IsR0FBSWlGLEtBRUosU0FBU0Ms
R0FBT0MsRUFBS2pILEdBTXBCLE1BSksrRyxHQUFLM04sS0FBTTZOLEVBQU0sS0FBUXRHLEVBQUt1
RyxtQkFFM0JGLEdBQU9ELEVBQUtJLFNBRVpILEVBQU9DLEVBQU0sS0FBUWpILEVBRTlCLE1BQU9n
SCxHQU9SLFFBQVNJLElBQWN4TSxHQUV0QixNQURBQSxHQUFJaUQsSUFBWSxFQUNUakQsRUFPUixR
QUFTeU0sSUFBUXpNLEdBQ2hCLEdBQUkwTSxHQUFLOU8sRUFBUzBCLGNBQWMsV0FFaEMsS0FDQyxR
QUFTVSxFQUFJME0sR0FDWixNQUFPaEMsR0FDUixPQUFPLEVBQ04sUUFFSWdDLEVBQUdoTixZQUNQ
Z04sRUFBR2hOLFdBQVdDLFlBQWErTSxHQUc1QkEsRUFBSyxNQVNQLFFBQVNDLElBQVdDLEVBQU9D
LEdBQzFCLEdBQUkzTyxHQUFNME8sRUFBTS9HLE1BQU0sS0FDckJwRSxFQUFJdkQsRUFBSTBDLE1B
RVQsT0FBUWEsSUFDUHNFLEVBQUsrRyxXQUFZNU8sRUFBSXVELElBQU9vTCxFQVU5QixRQUFTRSxJ
QUFjekYsRUFBR0MsR0FDekIsR0FBSXlGLEdBQU16RixHQUFLRCxFQUNkMkYsRUFBT0QsR0FBc0Is
SUFBZjFGLEVBQUVtRCxVQUFpQyxJQUFmbEQsRUFBRWtELFVBQ25DbkQsRUFBRTRGLFlBQWMzRixF
QUFFMkYsV0FHcEIsSUFBS0QsRUFDSixNQUFPQSxFQUlSLElBQUtELEVBQ0osTUFBU0EsRUFBTUEs
RUFBSUcsWUFDbEIsR0FBS0gsSUFBUXpGLEVBQ1osUUFLSCxPQUFPRCxHQUFJLEtBT1osUUFBUzhG
LElBQW1CMUosR0FDM0IsTUFBTyxVQUFVbEMsR0FDaEIsR0FBSWMsR0FBT2QsRUFBSzhDLFNBQVND
LGFBQ3pCLE9BQWdCLFVBQVRqQyxHQUFvQmQsRUFBS2tDLE9BQVNBLEdBUTNDLFFBQVMySixJQUFv
QjNKLEdBQzVCLE1BQU8sVUFBVWxDLEdBQ2hCLEdBQUljLEdBQU9kLEVBQUs4QyxTQUFTQyxhQUN6
QixRQUFpQixVQUFUakMsR0FBNkIsV0FBVEEsSUFBc0JkLEVBQUtrQyxPQUFTQSxHQVFsRSxRQUFT
NEosSUFBc0JqRCxHQUc5QixNQUFPLFVBQVU3SSxHQUtoQixNQUFLLFFBQVVBLEdBU1RBLEVBQUs5
QixZQUFjOEIsRUFBSzZJLFlBQWEsRUFHcEMsU0FBVzdJLEdBQ1YsU0FBV0EsR0FBSzlCLFdBQ2I4
QixFQUFLOUIsV0FBVzJLLFdBQWFBLEVBRTdCN0ksRUFBSzZJLFdBQWFBLEVBTXBCN0ksRUFBSytM
LGFBQWVsRCxHQUkxQjdJLEVBQUsrTCxjQUFnQmxELEdBQ3BCRixHQUFrQjNJLEtBQVc2SSxFQUd6
QjdJLEVBQUs2SSxXQUFhQSxFQUtkLFNBQVc3SSxJQUNmQSxFQUFLNkksV0FBYUEsR0FZNUIsUUFB
U21ELElBQXdCeE4sR0FDaEMsTUFBT3dNLElBQWEsU0FBVWlCLEdBRTdCLE1BREFBLElBQVlBLEVB
Q0xqQixHQUFhLFNBQVU1QixFQUFNM0YsR0FDbkMsR0FBSWpELEdBQ0gwTCxFQUFlMU4sS0FBUTRL
LEVBQUtoSyxPQUFRNk0sR0FDcENoTSxFQUFJaU0sRUFBYTlNLE1BR2xCLE9BQVFhLElBQ0ZtSixF
QUFPNUksRUFBSTBMLEVBQWFqTSxNQUM1Qm1KLEVBQUs1SSxLQUFPaUQsRUFBUWpELEdBQUs0SSxF
QUFLNUksU0FZbkMsUUFBUytKLElBQWFoTSxHQUNyQixNQUFPQSxJQUFtRCxtQkFBakNBLEdBQVF3
TCxzQkFBd0N4TCxFQUkxRWQsRUFBVTZHLEdBQU83RyxXQU9qQmdILEVBQVFILEdBQU9HLE1BQVEs
U0FBVXpFLEdBR2hDLEdBQUltTSxHQUFrQm5NLElBQVNBLEVBQUsySixlQUFpQjNKLEdBQU1tTSxl
QUMzRCxTQUFPQSxHQUErQyxTQUE3QkEsRUFBZ0JySixVQVExQ2tDLEVBQWNWLEdBQU9VLFlBQWMs
U0FBVW9ILEdBQzVDLEdBQUlDLEdBQVlDLEVBQ2YxTyxFQUFNd08sRUFBT0EsRUFBS3pDLGVBQWlC
eUMsRUFBTzlHLENBRzNDLE9BQUsxSCxLQUFReEIsR0FBNkIsSUFBakJ3QixFQUFJcUwsVUFBbUJy
TCxFQUFJdU8saUJBS3BEL1AsRUFBV3dCLEVBQ1hxSCxFQUFVN0ksRUFBUytQLGdCQUNuQmpILEdB
QWtCVCxFQUFPckksR0FJcEJrSixJQUFpQmxKLElBQ3BCa1EsRUFBWWxRLEVBQVNtUSxjQUFnQkQs
RUFBVUUsTUFBUUYsSUFHbkRBLEVBQVVHLGlCQUNkSCxFQUFVRyxpQkFBa0IsU0FBVS9ELElBQWUs
R0FHMUM0RCxFQUFVSSxhQUNyQkosRUFBVUksWUFBYSxXQUFZaEUsS0FVckNqTCxFQUFRNkksV0FB
YTJFLEdBQU8sU0FBVUMsR0FFckMsTUFEQUEsR0FBR3lCLFVBQVksS0FDUHpCLEVBQUdmLGFBQWEs
ZUFPekIxTSxFQUFRc00scUJBQXVCa0IsR0FBTyxTQUFVQyxHQUUvQyxNQURBQSxHQUFHak4sWUFB
YTdCLEVBQVN3USxjQUFjLE1BQy9CMUIsRUFBR25CLHFCQUFxQixLQUFLM0ssU0FJdEMzQixFQUFR
dU0sdUJBQXlCdEMsRUFBUXdDLEtBQU05TixFQUFTNE4sd0JBTXhEdk0sRUFBUW9QLFFBQVU1QixH
QUFPLFNBQVVDLEdBRWxDLE1BREFqRyxHQUFRaEgsWUFBYWlOLEdBQUtwQixHQUFLckksR0FDdkJy
RixFQUFTMFEsb0JBQXNCMVEsRUFBUzBRLGtCQUFtQnJMLEdBQVVyQyxTQUl6RTNCLEVBQVFvUCxT
QUNadEksRUFBS3dJLE9BQVcsR0FBSSxTQUFVakQsR0FDN0IsR0FBSWtELEdBQVNsRCxFQUFHbEks
UUFBU2lHLEVBQVdDLEdBQ3BDLE9BQU8sVUFBVTlILEdBQ2hCLE1BQU9BLEdBQUttSyxhQUFhLFFB
QVU2QyxJQUdyQ3pJLEVBQUswSSxLQUFTLEdBQUksU0FBVW5ELEVBQUl2TCxHQUMvQixHQUF1Qyxt
QkFBM0JBLEdBQVFzTCxnQkFBa0MzRSxFQUFpQixDQUN0RSxHQUFJbEYsR0FBT3pCLEVBQVFzTCxl
QUFnQkMsRUFDbkMsT0FBTzlKLElBQVNBLFVBSWxCdUUsRUFBS3dJLE9BQVcsR0FBSyxTQUFVakQs
R0FDOUIsR0FBSWtELEdBQVNsRCxFQUFHbEksUUFBU2lHLEVBQVdDLEdBQ3BDLE9BQU8sVUFBVTlI
LEdBQ2hCLEdBQUlvTSxHQUF3QyxtQkFBMUJwTSxHQUFLa04sa0JBQ3RCbE4sRUFBS2tOLGlCQUFp
QixLQUN2QixPQUFPZCxJQUFRQSxFQUFLeEksUUFBVW9KLElBTWhDekksRUFBSzBJLEtBQVMsR0FB
SSxTQUFVbkQsRUFBSXZMLEdBQy9CLEdBQXVDLG1CQUEzQkEsR0FBUXNMLGdCQUFrQzNFLEVBQWlC
LENBQ3RFLEdBQUlrSCxHQUFNbk0sRUFBR1IsRUFDWk8sRUFBT3pCLEVBQVFzTCxlQUFnQkMsRUFF
aEMsSUFBSzlKLEVBQU8sQ0FJWCxHQURBb00sRUFBT3BNLEVBQUtrTixpQkFBaUIsTUFDeEJkLEdB
QVFBLEVBQUt4SSxRQUFVa0csRUFDM0IsT0FBUzlKLEVBSVZQLEdBQVFsQixFQUFRdU8sa0JBQW1C
aEQsR0FDbkM3SixFQUFJLENBQ0osT0FBU0QsRUFBT1AsRUFBTVEsS0FFckIsR0FEQW1NLEVBQU9w
TSxFQUFLa04saUJBQWlCLE1BQ3hCZCxHQUFRQSxFQUFLeEksUUFBVWtHLEVBQzNCLE9BQVM5SixH
QUtaLFlBTUh1RSxFQUFLMEksS0FBVSxJQUFJeFAsRUFBUXNNLHFCQUMxQixTQUFVb0QsRUFBSzVP
LEdBQ2QsTUFBNkMsbUJBQWpDQSxHQUFRd0wscUJBQ1p4TCxFQUFRd0wscUJBQXNCb0QsR0FHMUIx
UCxFQUFRd00sSUFDWjFMLEVBQVFpTSxpQkFBa0IyQyxHQUQzQixRQUtSLFNBQVVBLEVBQUs1TyxH
QUNkLEdBQUl5QixHQUNIK0QsS0FDQTlELEVBQUksRUFFSmtELEVBQVU1RSxFQUFRd0wscUJBQXNC
b0QsRUFHekMsSUFBYSxNQUFSQSxFQUFjLENBQ2xCLE1BQVNuTixFQUFPbUQsRUFBUWxELEtBQ0Es
SUFBbEJELEVBQUtpSixVQUNUbEYsRUFBSS9HLEtBQU1nRCxFQUlaLE9BQU8rRCxHQUVSLE1BQU9a
LElBSVRvQixFQUFLMEksS0FBWSxNQUFJeFAsRUFBUXVNLHdCQUEwQixTQUFVMkMsRUFBV3BPLEdB
QzNFLEdBQStDLG1CQUFuQ0EsR0FBUXlMLHdCQUEwQzlFLEVBQzdELE1BQU8zRyxHQUFReUwsdUJB
QXdCMkMsSUFVekN2SCxLQU9BRCxNQUVNMUgsRUFBUXdNLElBQU12QyxFQUFRd0MsS0FBTTlOLEVB
QVNvTyxxQkFHMUNTLEdBQU8sU0FBVUMsR0FNaEJqRyxFQUFRaEgsWUFBYWlOLEdBQUtrQyxVQUFZ
LFVBQVkzTCxFQUFVLHFCQUMxQ0EsRUFBVSxrRUFPdkJ5SixFQUFHVixpQkFBaUIsd0JBQXdCcEws
UUFDaEQrRixFQUFVbkksS0FBTSxTQUFXb0osRUFBYSxnQkFLbkM4RSxFQUFHVixpQkFBaUIsY0FB
Y3BMLFFBQ3ZDK0YsRUFBVW5JLEtBQU0sTUFBUW9KLEVBQWEsYUFBZUQsRUFBVyxLQUkxRCtFLEVB
QUdWLGlCQUFrQixRQUFVL0ksRUFBVSxNQUFPckMsUUFDckQrRixFQUFVbkksS0FBSyxNQU1Wa08s
RUFBR1YsaUJBQWlCLFlBQVlwTCxRQUNyQytGLEVBQVVuSSxLQUFLLFlBTVZrTyxFQUFHVixpQkFB
a0IsS0FBTy9JLEVBQVUsTUFBT3JDLFFBQ2xEK0YsRUFBVW5JLEtBQUssY0FJakJpTyxHQUFPLFNB
QVVDLEdBQ2hCQSxFQUFHa0MsVUFBWSxtRkFLZixJQUFJQyxHQUFRalIsRUFBUzBCLGNBQWMsUUFD
bkN1UCxHQUFNakQsYUFBYyxPQUFRLFVBQzVCYyxFQUFHak4sWUFBYW9QLEdBQVFqRCxhQUFjLE9B
QVEsS0FJekNjLEVBQUdWLGlCQUFpQixZQUFZcEwsUUFDcEMrRixFQUFVbkksS0FBTSxPQUFTb0os
RUFBYSxlQUtTLElBQTNDOEUsRUFBR1YsaUJBQWlCLFlBQVlwTCxRQUNwQytGLEVBQVVuSSxLQUFN
LFdBQVksYUFLN0JpSSxFQUFRaEgsWUFBYWlOLEdBQUtyQyxVQUFXLEVBQ1ksSUFBNUNxQyxFQUFH
VixpQkFBaUIsYUFBYXBMLFFBQ3JDK0YsRUFBVW5JLEtBQU0sV0FBWSxhQUk3QmtPLEVBQUdWLGlC
QUFpQixRQUNwQnJGLEVBQVVuSSxLQUFLLFlBSVhTLEVBQVE2UCxnQkFBa0I1RixFQUFRd0MsS0FB
T3pHLEVBQVV3QixFQUFReEIsU0FDaEV3QixFQUFRc0ksdUJBQ1J0SSxFQUFRdUksb0JBQ1J2SSxF
QUFRd0ksa0JBQ1J4SSxFQUFReUkscUJBRVJ6QyxHQUFPLFNBQVVDLEdBR2hCek4sRUFBUWtRLGtC
QUFvQmxLLEVBQVFqRyxLQUFNME4sRUFBSSxLQUk5Q3pILEVBQVFqRyxLQUFNME4sRUFBSSxhQUNs
QjlGLEVBQWNwSSxLQUFNLEtBQU11SixLQUk1QnBCLEVBQVlBLEVBQVUvRixRQUFVLEdBQUlxSCxR
QUFRdEIsRUFBVW1GLEtBQUssTUFDM0RsRixFQUFnQkEsRUFBY2hHLFFBQVUsR0FBSXFILFFBQVFy
QixFQUFja0YsS0FBSyxNQUl2RStCLEVBQWEzRSxFQUFRd0MsS0FBTWpGLEVBQVEySSx5QkFLbkN2
SSxFQUFXZ0gsR0FBYzNFLEVBQVF3QyxLQUFNakYsRUFBUUksVUFDOUMsU0FBVVMsRUFBR0MsR0FD
WixHQUFJOEgsR0FBdUIsSUFBZi9ILEVBQUVtRCxTQUFpQm5ELEVBQUVxRyxnQkFBa0JyRyxFQUNs
RGdJLEVBQU0vSCxHQUFLQSxFQUFFN0gsVUFDZCxPQUFPNEgsS0FBTWdJLE1BQVdBLEdBQXdCLElB
QWpCQSxFQUFJN0UsWUFDbEM0RSxFQUFNeEksU0FDTHdJLEVBQU14SSxTQUFVeUksR0FDaEJoSSxF
QUFFOEgseUJBQThELEdBQW5DOUgsRUFBRThILHdCQUF5QkUsTUFHM0QsU0FBVWhJLEVBQUdDLEdB
Q1osR0FBS0EsRUFDSixNQUFTQSxFQUFJQSxFQUFFN0gsV0FDZCxHQUFLNkgsSUFBTUQsRUFDVixP
QUFPLENBSVYsUUFBTyxHQU9URCxFQUFZd0csRUFDWixTQUFVdkcsRUFBR0MsR0FHWixHQUFLRCxJ
QUFNQyxFQUVWLE1BREFoQixJQUFlLEVBQ1IsQ0FJUixJQUFJZ0osSUFBV2pJLEVBQUU4SCx5QkFB
MkI3SCxFQUFFNkgsdUJBQzlDLE9BQUtHLEdBQ0dBLEdBSVJBLEdBQVlqSSxFQUFFNkQsZUFBaUI3
RCxNQUFVQyxFQUFFNEQsZUFBaUI1RCxHQUMzREQsRUFBRThILHdCQUF5QjdILEdBRzNCLEVBR2Ms
RUFBVmdJLElBQ0Z0USxFQUFRdVEsY0FBZ0JqSSxFQUFFNkgsd0JBQXlCOUgsS0FBUWlJLEVBR3hE
akksSUFBTTFKLEdBQVkwSixFQUFFNkQsZ0JBQWtCckUsR0FBZ0JELEVBQVNDLEVBQWNRLE1BRzdF
QyxJQUFNM0osR0FBWTJKLEVBQUU0RCxnQkFBa0JyRSxHQUFnQkQsRUFBU0MsRUFBY1MsR0FDMUUs
RUFJRGpCLEVBQ0o3SCxFQUFTNkgsRUFBV2dCLEdBQU03SSxFQUFTNkgsRUFBV2lCLEdBQ2hELEVB
R2UsRUFBVmdJLEtBQW1CLElBRTNCLFNBQVVqSSxFQUFHQyxHQUVaLEdBQUtELElBQU1DLEVBRVYs
TUFEQWhCLElBQWUsRUFDUixDQUdSLElBQUl5RyxHQUNIdkwsRUFBSSxFQUNKZ08sRUFBTW5JLEVB
QUU1SCxXQUNSNFAsRUFBTS9ILEVBQUU3SCxXQUNSZ1EsR0FBT3BJLEdBQ1BxSSxHQUFPcEksRUFH
UixLQUFNa0ksSUFBUUgsRUFDYixNQUFPaEksS0FBTTFKLEtBQ1oySixJQUFNM0osRUFBVyxFQUNq
QjZSLEtBQ0FILEVBQU0sRUFDTmhKLEVBQ0U3SCxFQUFTNkgsRUFBV2dCLEdBQU03SSxFQUFTNkgs
RUFBV2lCLEdBQ2hELENBR0ssSUFBS2tJLElBQVFILEVBQ25CLE1BQU92QyxJQUFjekYsRUFBR0Ms
RUFJekJ5RixHQUFNMUYsQ0FDTixPQUFTMEYsRUFBTUEsRUFBSXROLFdBQ2xCZ1EsRUFBR0UsUUFB
UzVDLEVBRWJBLEdBQU16RixDQUNOLE9BQVN5RixFQUFNQSxFQUFJdE4sV0FDbEJpUSxFQUFHQyxR
QUFTNUMsRUFJYixPQUFRMEMsRUFBR2pPLEtBQU9rTyxFQUFHbE8sR0FDcEJBLEdBR0QsT0FBT0Es
R0FFTnNMLEdBQWMyQyxFQUFHak8sR0FBSWtPLEVBQUdsTyxJQUd4QmlPLEVBQUdqTyxLQUFPcUYs
S0FDVjZJLEVBQUdsTyxLQUFPcUYsRUFBZSxFQUN6QixHQUdLbEosR0EzWUNBLEdBOFlUa0ksR0FB
T2IsUUFBVSxTQUFVNEssRUFBTUMsR0FDaEMsTUFBT2hLLElBQVErSixFQUFNLEtBQU0sS0FBTUMs
SUFHbENoSyxHQUFPZ0osZ0JBQWtCLFNBQVV0TixFQUFNcU8sR0FTeEMsSUFQT3JPLEVBQUsySixl
QUFpQjNKLEtBQVc1RCxHQUN2QzRJLEVBQWFoRixHQUlkcU8sRUFBT0EsRUFBS3pNLFFBQVNnRixF
QUFrQixVQUVsQ25KLEVBQVE2UCxpQkFBbUJwSSxJQUM5QlUsRUFBZXlJLEVBQU8sUUFDcEJqSixJ
QUFrQkEsRUFBYzhFLEtBQU1tRSxPQUN0Q2xKLElBQWtCQSxFQUFVK0UsS0FBTW1FLElBRXJDLElB
Q0MsR0FBSTNPLEdBQU0rRCxFQUFRakcsS0FBTXdDLEVBQU1xTyxFQUc5QixJQUFLM08sR0FBT2pD
LEVBQVFrUSxtQkFHbEIzTixFQUFLNUQsVUFBdUMsS0FBM0I0RCxFQUFLNUQsU0FBUzZNLFNBQ2hD
LE1BQU92SixHQUVQLE1BQU93SixJQUdWLE1BQU81RSxJQUFRK0osRUFBTWpTLEVBQVUsTUFBUTRE
LElBQVNaLE9BQVMsR0FHMURrRixHQUFPZSxTQUFXLFNBQVU5RyxFQUFTeUIsR0FLcEMsT0FIT3pC
LEVBQVFvTCxlQUFpQnBMLEtBQWNuQyxHQUM3QzRJLEVBQWF6RyxHQUVQOEcsRUFBVTlHLEVBQVN5
QixJQUczQnNFLEdBQU9pSyxLQUFPLFNBQVV2TyxFQUFNYyxJQUV0QmQsRUFBSzJKLGVBQWlCM0os
S0FBVzVELEdBQ3ZDNEksRUFBYWhGLEVBR2QsSUFBSXhCLEdBQUsrRixFQUFLK0csV0FBWXhLLEVB
QUtpQyxlQUU5QnlMLEVBQU1oUSxHQUFNcEIsRUFBT0ksS0FBTStHLEVBQUsrRyxXQUFZeEssRUFB
S2lDLGVBQzlDdkUsRUFBSXdCLEVBQU1jLEdBQU9vRSxHQUNqQjFELE1BRUYsT0FBZUEsVUFBUmdO
LEVBQ05BLEVBQ0EvUSxFQUFRNkksYUFBZXBCLEVBQ3RCbEYsRUFBS21LLGFBQWNySixJQUNsQjBO
LEVBQU14TyxFQUFLa04saUJBQWlCcE0sS0FBVTBOLEVBQUlDLFVBQzFDRCxFQUFJNUssTUFDSixN
QUdKVSxHQUFPb0ssT0FBUyxTQUFVQyxHQUN6QixPQUFRQSxFQUFNLElBQUkvTSxRQUFTeUcsR0FB
WUMsS0FHeENoRSxHQUFPeEMsTUFBUSxTQUFVQyxHQUN4QixLQUFNLElBQUl6RixPQUFPLDBDQUE0
Q3lGLElBTzlEdUMsR0FBT3NLLFdBQWEsU0FBVXpMLEdBQzdCLEdBQUluRCxHQUNINk8sS0FDQXJP
LEVBQUksRUFDSlAsRUFBSSxDQU9MLElBSkE4RSxHQUFnQnRILEVBQVFxUixpQkFDeEJoSyxHQUFh
ckgsRUFBUXNSLFlBQWM1TCxFQUFRckcsTUFBTyxHQUNsRHFHLEVBQVF6QyxLQUFNbUYsR0FFVGQs
RUFBZSxDQUNuQixNQUFTL0UsRUFBT21ELEVBQVFsRCxLQUNsQkQsSUFBU21ELEVBQVNsRCxLQUN0
Qk8sRUFBSXFPLEVBQVc3UixLQUFNaUQsR0FHdkIsT0FBUU8sSUFDUDJDLEVBQVF4QyxPQUFRa08s
RUFBWXJPLEdBQUssR0FRbkMsTUFGQXNFLEdBQVksS0FFTDNCLEdBT1JxQixFQUFVRixHQUFPRSxR
QUFVLFNBQVV4RSxHQUNwQyxHQUFJb00sR0FDSDFNLEVBQU0sR0FDTk8sRUFBSSxFQUNKZ0osRUFB
V2pKLEVBQUtpSixRQUVqQixJQUFNQSxHQU1DLEdBQWtCLElBQWJBLEdBQStCLElBQWJBLEdBQStC
LEtBQWJBLEVBQWtCLENBR2pFLEdBQWlDLGdCQUFyQmpKLEdBQUtnUCxZQUNoQixNQUFPaFAsR0FB
S2dQLFdBR1osS0FBTWhQLEVBQU9BLEVBQUtpUCxXQUFZalAsRUFBTUEsRUFBT0EsRUFBSzJMLFlB
Qy9Dak0sR0FBTzhFLEVBQVN4RSxPQUdaLElBQWtCLElBQWJpSixHQUErQixJQUFiQSxFQUM3QixN
QUFPakosR0FBS2tQLGNBaEJaLE9BQVM5QyxFQUFPcE0sRUFBS0MsS0FFcEJQLEdBQU84RSxFQUFT
NEgsRUFrQmxCLE9BQU8xTSxJQUdSNkUsRUFBT0QsR0FBTzZLLFdBR2JyRSxZQUFhLEdBRWJzRSxh
QUFjcEUsR0FFZHpCLE1BQU94QyxFQUVQdUUsY0FFQTJCLFFBRUFvQyxVQUNDQyxLQUFPeEcsSUFB
SyxhQUFjMUksT0FBTyxHQUNqQ21QLEtBQU96RyxJQUFLLGNBQ1owRyxLQUFPMUcsSUFBSyxrQkFB
bUIxSSxPQUFPLEdBQ3RDcVAsS0FBTzNHLElBQUssb0JBR2I0RyxXQUNDdkksS0FBUSxTQUFVb0Ms
R0FVakIsTUFUQUEsR0FBTSxHQUFLQSxFQUFNLEdBQUczSCxRQUFTaUcsRUFBV0MsSUFHeEN5QixF
QUFNLElBQU9BLEVBQU0sSUFBTUEsRUFBTSxJQUFNQSxFQUFNLElBQU0sSUFBSzNILFFBQVNpRyxF
QUFXQyxJQUV4RCxPQUFieUIsRUFBTSxLQUNWQSxFQUFNLEdBQUssSUFBTUEsRUFBTSxHQUFLLEtB
R3RCQSxFQUFNek0sTUFBTyxFQUFHLElBR3hCdUssTUFBUyxTQUFVa0MsR0E2QmxCLE1BbEJBQSxH
QUFNLEdBQUtBLEVBQU0sR0FBR3hHLGNBRVksUUFBM0J3RyxFQUFNLEdBQUd6TSxNQUFPLEVBQUcs
SUFFakJ5TSxFQUFNLElBQ1hqRixHQUFPeEMsTUFBT3lILEVBQU0sSUFLckJBLEVBQU0sS0FBUUEs
RUFBTSxHQUFLQSxFQUFNLElBQU1BLEVBQU0sSUFBTSxHQUFLLEdBQW1CLFNBQWJBLEVBQU0sSUFB
OEIsUUFBYkEsRUFBTSxLQUN6RkEsRUFBTSxLQUFVQSxFQUFNLEdBQUtBLEVBQU0sSUFBcUIsUUFB
YkEsRUFBTSxLQUdwQ0EsRUFBTSxJQUNqQmpGLEdBQU94QyxNQUFPeUgsRUFBTSxJQUdkQSxHQUdS
bkMsT0FBVSxTQUFVbUMsR0FDbkIsR0FBSW9HLEdBQ0hDLEdBQVlyRyxFQUFNLElBQU1BLEVBQU0s
RUFFL0IsT0FBS3hDLEdBQWlCLE1BQUVtRCxLQUFNWCxFQUFNLElBQzVCLE1BSUhBLEVBQU0sR0FD
VkEsRUFBTSxHQUFLQSxFQUFNLElBQU1BLEVBQU0sSUFBTSxHQUd4QnFHLEdBQVkvSSxFQUFRcUQs
S0FBTTBGLEtBRXBDRCxFQUFTakwsRUFBVWtMLEdBQVUsTUFFN0JELEVBQVNDLEVBQVMzUyxRQUFT
LElBQUsyUyxFQUFTeFEsT0FBU3VRLEdBQVdDLEVBQVN4USxVQUd2RW1LLEVBQU0sR0FBS0EsRUFB
TSxHQUFHek0sTUFBTyxFQUFHNlMsR0FDOUJwRyxFQUFNLEdBQUtxRyxFQUFTOVMsTUFBTyxFQUFH
NlMsSUFJeEJwRyxFQUFNek0sTUFBTyxFQUFHLE1BSXpCaVEsUUFFQzdGLElBQU8sU0FBVTJJLEdB
Q2hCLEdBQUkvTSxHQUFXK00sRUFBaUJqTyxRQUFTaUcsRUFBV0MsSUFBWS9FLGFBQ2hFLE9BQTRC
LE1BQXJCOE0sRUFDTixXQUFhLE9BQU8sR0FDcEIsU0FBVTdQLEdBQ1QsTUFBT0EsR0FBSzhDLFVB
QVk5QyxFQUFLOEMsU0FBU0MsZ0JBQWtCRCxJQUkzRG1FLE1BQVMsU0FBVTBGLEdBQ2xCLEdBQUlt
RCxHQUFVckssRUFBWWtILEVBQVksSUFFdEMsT0FBT21ELEtBQ0xBLEVBQVUsR0FBSXJKLFFBQVEs
TUFBUUwsRUFBYSxJQUFNdUcsRUFBWSxJQUFNdkcsRUFBYSxTQUNqRlgsRUFBWWtILEVBQVcsU0FB
VTNNLEdBQ2hDLE1BQU84UCxHQUFRNUYsS0FBZ0MsZ0JBQW5CbEssR0FBSzJNLFdBQTBCM00sRUFB
SzJNLFdBQTBDLG1CQUF0QjNNLEdBQUttSyxjQUFnQ25LLEVBQUttSyxhQUFhLFVBQVksT0FJMUpo
RCxLQUFRLFNBQVVyRyxFQUFNaVAsRUFBVUMsR0FDakMsTUFBTyxVQUFVaFEsR0FDaEIsR0FBSWlR
LEdBQVMzTCxHQUFPaUssS0FBTXZPLEVBQU1jLEVBRWhDLE9BQWUsT0FBVm1QLEVBQ2dCLE9BQWJG
LEdBRUZBLElBSU5FLEdBQVUsR0FFVSxNQUFiRixFQUFtQkUsSUFBV0QsRUFDdkIsT0FBYkQsRUFB
b0JFLElBQVdELEVBQ2xCLE9BQWJELEVBQW9CQyxHQUFxQyxJQUE1QkMsRUFBT2hULFFBQVMrUyxH
QUNoQyxPQUFiRCxFQUFvQkMsR0FBU0MsRUFBT2hULFFBQVMrUyxNQUNoQyxPQUFiRCxFQUFvQkMs
R0FBU0MsRUFBT25ULE9BQVFrVCxFQUFNNVEsVUFBYTRRLEVBQ2xELE9BQWJELEdBQXNCLElBQU1F
LEVBQU9yTyxRQUFTNEUsRUFBYSxLQUFRLEtBQU12SixRQUFTK1MsTUFDbkUsT0FBYkQsSUFBb0JF
LElBQVdELEdBQVNDLEVBQU9uVCxNQUFPLEVBQUdrVCxFQUFNNVEsT0FBUyxLQUFRNFEsRUFBUSxR
QUszRjNJLE1BQVMsU0FBVW5GLEVBQU1nTyxFQUFNakUsRUFBVTdMLEVBQU9FLEdBQy9DLEdBQUk2
UCxHQUFnQyxRQUF2QmpPLEVBQUtwRixNQUFPLEVBQUcsR0FDM0JzVCxFQUErQixTQUFyQmxPLEVB
QUtwRixVQUNmdVQsRUFBa0IsWUFBVEgsQ0FFVixPQUFpQixLQUFWOVAsR0FBd0IsSUFBVEUsRUFH
ckIsU0FBVU4sR0FDVCxRQUFTQSxFQUFLOUIsWUFHZixTQUFVOEIsRUFBTXpCLEVBQVMrUixHQUN4
QixHQUFJMUYsR0FBTzJGLEVBQWFDLEVBQVlwRSxFQUFNcUUsRUFBV0MsRUFDcEQ1SCxFQUFNcUgs
SUFBV0MsRUFBVSxjQUFnQixrQkFDM0NPLEVBQVMzUSxFQUFLOUIsV0FDZDRDLEVBQU91UCxHQUFV
clEsRUFBSzhDLFNBQVNDLGNBQy9CNk4sR0FBWU4sSUFBUUQsRUFDcEI1RSxHQUFPLENBRVIsSUFB
S2tGLEVBQVMsQ0FHYixHQUFLUixFQUFTLENBQ2IsTUFBUXJILEVBQU0sQ0FDYnNELEVBQU9wTSxD
QUNQLE9BQVNvTSxFQUFPQSxFQUFNdEQsR0FDckIsR0FBS3VILEVBQ0pqRSxFQUFLdEosU0FBU0Ms
Z0JBQWtCakMsRUFDZCxJQUFsQnNMLEVBQUtuRCxTQUVMLE9BQU8sQ0FJVHlILEdBQVE1SCxFQUFl
LFNBQVQ1RyxJQUFvQndPLEdBQVMsY0FFNUMsT0FBTyxFQU1SLEdBSEFBLEdBQVVOLEVBQVVPLEVB
QU8xQixXQUFhMEIsRUFBT0UsV0FHMUNULEdBQVdRLEVBQVcsQ0FLMUJ4RSxFQUFPdUUsRUFDUEgs
RUFBYXBFLEVBQU0zSyxLQUFjMkssRUFBTTNLLE9BSXZDOE8sRUFBY0MsRUFBWXBFLEVBQUswRSxZ
QUM3Qk4sRUFBWXBFLEVBQUswRSxjQUVuQmxHLEVBQVEyRixFQUFhck8sT0FDckJ1TyxFQUFZN0Ys
RUFBTyxLQUFRckYsR0FBV3FGLEVBQU8sR0FDN0NhLEVBQU9nRixHQUFhN0YsRUFBTyxHQUMzQndC
LEVBQU9xRSxHQUFhRSxFQUFPM0gsV0FBWXlILEVBRXZDLE9BQVNyRSxJQUFTcUUsR0FBYXJFLEdB
QVFBLEVBQU10RCxLQUczQzJDLEVBQU9nRixFQUFZLElBQU1DLEVBQU0xSyxNQUdoQyxHQUF1QixJ
QUFsQm9HLEVBQUtuRCxZQUFvQndDLEdBQVFXLElBQVNwTSxFQUFPLENBQ3JEdVEsRUFBYXJPLElB
QVdxRCxFQUFTa0wsRUFBV2hGLEVBQzVDLFlBdUJGLElBakJLbUYsSUFFSnhFLEVBQU9wTSxFQUNQ
d1EsRUFBYXBFLEVBQU0zSyxLQUFjMkssRUFBTTNLLE9BSXZDOE8sRUFBY0MsRUFBWXBFLEVBQUsw
RSxZQUM3Qk4sRUFBWXBFLEVBQUswRSxjQUVuQmxHLEVBQVEyRixFQUFhck8sT0FDckJ1TyxFQUFZ
N0YsRUFBTyxLQUFRckYsR0FBV3FGLEVBQU8sR0FDN0NhLEVBQU9nRixHQUtIaEYsS0FBUyxFQUVi
LE1BQVNXLElBQVNxRSxHQUFhckUsR0FBUUEsRUFBTXRELEtBQzNDMkMsRUFBT2dGLEVBQVksSUFB
TUMsRUFBTTFLLE1BRWhDLElBQU9xSyxFQUNOakUsRUFBS3RKLFNBQVNDLGdCQUFrQmpDLEVBQ2Qs
SUFBbEJzTCxFQUFLbkQsYUFDSHdDLElBR0dtRixJQUNKSixFQUFhcEUsRUFBTTNLLEtBQWMySyxF
QUFNM0ssT0FJdkM4TyxFQUFjQyxFQUFZcEUsRUFBSzBFLFlBQzdCTixFQUFZcEUsRUFBSzBFLGNB
RW5CUCxFQUFhck8sSUFBV3FELEVBQVNrRyxJQUc3QlcsSUFBU3BNLEdBQ2IsS0FTTCxPQURBeUws
SUFBUW5MLEVBQ0RtTCxJQUFTckwsR0FBV3FMLEVBQU9yTCxJQUFVLEdBQUtxTCxFQUFPckwsR0FB
UyxLQUtyRWdILE9BQVUsU0FBVTJKLEVBQVE5RSxHQUszQixHQUFJakksR0FDSHhGLEVBQUsrRixF
QUFLZ0MsUUFBU3dLLElBQVl4TSxFQUFLeU0sV0FBWUQsRUFBT2hPLGdCQUN0RHVCLEdBQU94QyxN
QUFPLHVCQUF5QmlQLEVBS3pDLE9BQUt2UyxHQUFJaUQsR0FDRGpELEVBQUl5TixHQUlQek4sRUFB
R1ksT0FBUyxHQUNoQjRFLEdBQVMrTSxFQUFRQSxFQUFRLEdBQUk5RSxHQUN0QjFILEVBQUt5TSxX
QUFXM1QsZUFBZ0IwVCxFQUFPaE8sZUFDN0NpSSxHQUFhLFNBQVU1QixFQUFNM0YsR0FDNUIsR0FB
SXdOLEdBQ0hDLEVBQVUxUyxFQUFJNEssRUFBTTZDLEdBQ3BCaE0sRUFBSWlSLEVBQVE5UixNQUNi
LE9BQVFhLElBQ1BnUixFQUFNaFUsRUFBU21NLEVBQU04SCxFQUFRalIsSUFDN0JtSixFQUFNNkgs
S0FBV3hOLEVBQVN3TixHQUFRQyxFQUFRalIsTUFHNUMsU0FBVUQsR0FDVCxNQUFPeEIsR0FBSXdC
LEVBQU0sRUFBR2dFLEtBSWhCeEYsSUFJVCtILFNBRUM0SyxJQUFPbkcsR0FBYSxTQUFVMU0sR0FJ
N0IsR0FBSStPLE1BQ0hsSyxLQUNBaU8sRUFBVXpNLEVBQVNyRyxFQUFTc0QsUUFBU2xELEVBQU8s
TUFFN0MsT0FBTzBTLEdBQVMzUCxHQUNmdUosR0FBYSxTQUFVNUIsRUFBTTNGLEVBQVNsRixFQUFT
K1IsR0FDOUMsR0FBSXRRLEdBQ0hxUixFQUFZRCxFQUFTaEksRUFBTSxLQUFNa0gsTUFDakNyUSxF
QUFJbUosRUFBS2hLLE1BR1YsT0FBUWEsS0FDREQsRUFBT3FSLEVBQVVwUixNQUN0Qm1KLEVBQUtu
SixLQUFPd0QsRUFBUXhELEdBQUtELE1BSTVCLFNBQVVBLEVBQU16QixFQUFTK1IsR0FLeEIsTUFK
QWpELEdBQU0sR0FBS3JOLEVBQ1hvUixFQUFTL0QsRUFBTyxLQUFNaUQsRUFBS25OLEdBRTNCa0ss
RUFBTSxHQUFLLE1BQ0hsSyxFQUFRNkMsU0FJbkJzTCxJQUFPdEcsR0FBYSxTQUFVMU0sR0FDN0Is
TUFBTyxVQUFVMEIsR0FDaEIsTUFBT3NFLElBQVFoRyxFQUFVMEIsR0FBT1osT0FBUyxLQUkzQ2lH
LFNBQVkyRixHQUFhLFNBQVVqTixHQUVsQyxNQURBQSxHQUFPQSxFQUFLNkQsUUFBU2lHLEVBQVdD
LElBQ3pCLFNBQVU5SCxHQUNoQixPQUFTQSxFQUFLZ1AsYUFBZWhQLEVBQUt1UixXQUFhL00sRUFB
U3hFLElBQVMvQyxRQUFTYyxTQVc1RXlULEtBQVF4RyxHQUFjLFNBQVV3RyxHQU0vQixNQUpNMUss
R0FBWW9ELEtBQUtzSCxHQUFRLEtBQzlCbE4sR0FBT3hDLE1BQU8scUJBQXVCMFAsR0FFdENBLEVB
QU9BLEVBQUs1UCxRQUFTaUcsRUFBV0MsSUFBWS9FLGNBQ3JDLFNBQVUvQyxHQUNoQixHQUFJeVIs
RUFDSixHQUNDLElBQU1BLEVBQVd2TSxFQUNoQmxGLEVBQUt3UixLQUNMeFIsRUFBS21LLGFBQWEs
YUFBZW5LLEVBQUttSyxhQUFhLFFBR25ELE1BREFzSCxHQUFXQSxFQUFTMU8sY0FDYjBPLElBQWFE
LEdBQTJDLElBQW5DQyxFQUFTeFUsUUFBU3VVLEVBQU8sWUFFNUN4UixFQUFPQSxFQUFLOUIsYUFB
aUMsSUFBbEI4QixFQUFLaUosU0FDM0MsUUFBTyxLQUtUOUgsT0FBVSxTQUFVbkIsR0FDbkIsR0FB
STBSLEdBQU9uVixFQUFPb1YsVUFBWXBWLEVBQU9vVixTQUFTRCxJQUM5QyxPQUFPQSxJQUFRQSxF
QUFLNVUsTUFBTyxLQUFRa0QsRUFBSzhKLElBR3pDOEgsS0FBUSxTQUFVNVIsR0FDakIsTUFBT0Es
S0FBU2lGLEdBR2pCNE0sTUFBUyxTQUFVN1IsR0FDbEIsTUFBT0EsS0FBUzVELEVBQVMwVixpQkFB
bUIxVixFQUFTMlYsVUFBWTNWLEVBQVMyVixnQkFBa0IvUixFQUFLa0MsTUFBUWxDLEVBQUtnUyxP
QUFTaFMsRUFBS2lTLFdBSTdIQyxRQUFXcEcsSUFBc0IsR0FDakNqRCxTQUFZaUQsSUFBc0IsR0FF
bENxRyxRQUFXLFNBQVVuUyxHQUdwQixHQUFJOEMsR0FBVzlDLEVBQUs4QyxTQUFTQyxhQUM3QixP
QUFxQixVQUFiRCxLQUEwQjlDLEVBQUttUyxTQUEwQixXQUFiclAsS0FBMkI5QyxFQUFLb1MsVUFH
ckZBLFNBQVksU0FBVXBTLEdBT3JCLE1BSktBLEdBQUs5QixZQUNUOEIsRUFBSzlCLFdBQVdtVSxj
QUdWclMsRUFBS29TLFlBQWEsR0FJMUJFLE1BQVMsU0FBVXRTLEdBS2xCLElBQU1BLEVBQU9BLEVB
QUtpUCxXQUFZalAsRUFBTUEsRUFBT0EsRUFBSzJMLFlBQy9DLEdBQUszTCxFQUFLaUosU0FBVyxF
QUNwQixPQUFPLENBR1QsUUFBTyxHQUdSMEgsT0FBVSxTQUFVM1EsR0FDbkIsT0FBUXVFLEVBQUtn
QyxRQUFlLE1BQUd2RyxJQUloQ3VTLE9BQVUsU0FBVXZTLEdBQ25CLE1BQU95SCxHQUFReUMsS0FB
TWxLLEVBQUs4QyxXQUczQnVLLE1BQVMsU0FBVXJOLEdBQ2xCLE1BQU93SCxHQUFRMEMsS0FBTWxL
LEVBQUs4QyxXQUczQjBQLE9BQVUsU0FBVXhTLEdBQ25CLEdBQUljLEdBQU9kLEVBQUs4QyxTQUFT
QyxhQUN6QixPQUFnQixVQUFUakMsR0FBa0MsV0FBZGQsRUFBS2tDLE1BQThCLFdBQVRwQixHQUd0
RC9DLEtBQVEsU0FBVWlDLEdBQ2pCLEdBQUl1TyxFQUNKLE9BQXVDLFVBQWhDdk8sRUFBSzhDLFNB
QVNDLGVBQ04sU0FBZC9DLEVBQUtrQyxPQUltQyxPQUFyQ3FNLEVBQU92TyxFQUFLbUssYUFBYSxV
QUEyQyxTQUF2Qm9FLEVBQUt4TCxnQkFJdkQzQyxNQUFTNEwsR0FBdUIsV0FDL0IsT0FBUyxLQUdW
MUwsS0FBUTBMLEdBQXVCLFNBQVVFLEVBQWM5TSxHQUN0RCxPQUFTQSxFQUFTLEtBR25CaUIsR0FB
TTJMLEdBQXVCLFNBQVVFLEVBQWM5TSxFQUFRNk0sR0FDNUQsT0FBU0EsRUFBVyxFQUFJQSxFQUFX
N00sRUFBUzZNLEtBRzdDd0csS0FBUXpHLEdBQXVCLFNBQVVFLEVBQWM5TSxHQUV0RCxJQURBLEdB
QUlhLEdBQUksRUFDQUEsRUFBSWIsRUFBUWEsR0FBSyxFQUN4QmlNLEVBQWFsUCxLQUFNaUQsRUFF
cEIsT0FBT2lNLEtBR1J3RyxJQUFPMUcsR0FBdUIsU0FBVUUsRUFBYzlNLEdBRXJELElBREEsR0FB
SWEsR0FBSSxFQUNBQSxFQUFJYixFQUFRYSxHQUFLLEVBQ3hCaU0sRUFBYWxQLEtBQU1pRCxFQUVw
QixPQUFPaU0sS0FHUnlHLEdBQU0zRyxHQUF1QixTQUFVRSxFQUFjOU0sRUFBUTZNLEdBRTVELElB
REEsR0FBSWhNLEdBQUlnTSxFQUFXLEVBQUlBLEVBQVc3TSxFQUFTNk0sSUFDakNoTSxHQUFLLEdB
Q2RpTSxFQUFhbFAsS0FBTWlELEVBRXBCLE9BQU9pTSxLQUdSMEcsR0FBTTVHLEdBQXVCLFNBQVVF
LEVBQWM5TSxFQUFRNk0sR0FFNUQsSUFEQSxHQUFJaE0sR0FBSWdNLEVBQVcsRUFBSUEsRUFBVzdN
LEVBQVM2TSxJQUNqQ2hNLEVBQUliLEdBQ2I4TSxFQUFhbFAsS0FBTWlELEVBRXBCLE9BQU9pTSxP
QUtWM0gsRUFBS2dDLFFBQWEsSUFBSWhDLEVBQUtnQyxRQUFZLEVBR3ZDLEtBQU10RyxLQUFPNFMs
T0FBTyxFQUFNQyxVQUFVLEVBQU1DLE1BQU0sRUFBTUMsVUFBVSxFQUFNQyxPQUFPLEdBQzVFMU8s
RUFBS2dDLFFBQVN0RyxHQUFNMkwsR0FBbUIzTCxFQUV4QyxLQUFNQSxLQUFPaVQsUUFBUSxFQUFN
QyxPQUFPLEdBQ2pDNU8sRUFBS2dDLFFBQVN0RyxHQUFNNEwsR0FBb0I1TCxFQUl6QyxTQUFTK1Es
T0FDVEEsR0FBVy9SLFVBQVlzRixFQUFLNk8sUUFBVTdPLEVBQUtnQyxRQUMzQ2hDLEVBQUt5TSxX
QUFhLEdBQUlBLElBRXRCdE0sRUFBV0osR0FBT0ksU0FBVyxTQUFVcEcsRUFBVStVLEdBQ2hELEdB
QUluQyxHQUFTM0gsRUFBTytKLEVBQVFwUixFQUMzQnFSLEVBQU8vSixFQUFRZ0ssRUFDZkMsRUFB
UzlOLEVBQVlySCxFQUFXLElBRWpDLElBQUttVixFQUNKLE1BQU9KLEdBQVksRUFBSUksRUFBTzNX
LE1BQU8sRUFHdEN5VyxHQUFRalYsRUFDUmtMLEtBQ0FnSyxFQUFhalAsRUFBS21MLFNBRWxCLE9B
QVE2RCxFQUFRLENBR1RyQyxLQUFZM0gsRUFBUTdDLEVBQU9rRCxLQUFNMkosTUFDakNoSyxJQUVK
Z0ssRUFBUUEsRUFBTXpXLE1BQU95TSxFQUFNLEdBQUduSyxTQUFZbVUsR0FFM0MvSixFQUFPeE0s
S0FBT3NXLE9BR2ZwQyxHQUFVLEdBR0ozSCxFQUFRNUMsRUFBYWlELEtBQU0ySixNQUNoQ3JDLEVB
QVUzSCxFQUFNd0IsUUFDaEJ1SSxFQUFPdFcsTUFDTjRHLE1BQU9zTixFQUVQaFAsS0FBTXFILEVB
QU0sR0FBRzNILFFBQVNsRCxFQUFPLE9BRWhDNlUsRUFBUUEsRUFBTXpXLE1BQU9vVSxFQUFROVIs
UUFJOUIsS0FBTThDLElBQVFxQyxHQUFLd0ksU0FDWnhELEVBQVF4QyxFQUFXN0UsR0FBTzBILEtB
QU0ySixLQUFjQyxFQUFZdFIsTUFDOURxSCxFQUFRaUssRUFBWXRSLEdBQVFxSCxNQUM3QjJILEVB
QVUzSCxFQUFNd0IsUUFDaEJ1SSxFQUFPdFcsTUFDTjRHLE1BQU9zTixFQUNQaFAsS0FBTUEsRUFD
TnVCLFFBQVM4RixJQUVWZ0ssRUFBUUEsRUFBTXpXLE1BQU9vVSxFQUFROVIsUUFJL0IsS0FBTThS
LEVBQ0wsTUFPRixNQUFPbUMsR0FDTkUsRUFBTW5VLE9BQ05tVSxFQUNDalAsR0FBT3hDLE1BQU94
RCxHQUVkcUgsRUFBWXJILEVBQVVrTCxHQUFTMU0sTUFBTyxHQUd6QyxTQUFTdU4sSUFBWWlKLEdB
SXBCLElBSEEsR0FBSXJULEdBQUksRUFDUE0sRUFBTStTLEVBQU9sVSxPQUNiZCxFQUFXLEdBQ0oy
QixFQUFJTSxFQUFLTixJQUNoQjNCLEdBQVlnVixFQUFPclQsR0FBRzJELEtBRXZCLE9BQU90RixH
QUdSLFFBQVNzSyxJQUFld0ksRUFBU3NDLEVBQVlDLEdBQzVDLEdBQUk3SyxHQUFNNEssRUFBVzVL
LElBQ3BCOEssRUFBT0YsRUFBVzNLLEtBQ2xCOEIsRUFBTStJLEdBQVE5SyxFQUNkK0ssRUFBbUJG
LEdBQWdCLGVBQVI5SSxFQUMzQmlKLEVBQVd0TyxHQUVaLE9BQU9rTyxHQUFXdFQsTUFFakIsU0FB
VUosRUFBTXpCLEVBQVMrUixHQUN4QixNQUFTdFEsRUFBT0EsRUFBTThJLEdBQ3JCLEdBQXVCLElB
QWxCOUksRUFBS2lKLFVBQWtCNEssRUFDM0IsTUFBT3pDLEdBQVNwUixFQUFNekIsRUFBUytSLEVB
R2pDLFFBQU8sR0FJUixTQUFVdFEsRUFBTXpCLEVBQVMrUixHQUN4QixHQUFJeUQsR0FBVXhELEVB
QWFDLEVBQzFCd0QsR0FBYXpPLEVBQVN1TyxFQUd2QixJQUFLeEQsR0FDSixNQUFTdFEsRUFBT0Es
RUFBTThJLEdBQ3JCLElBQXVCLElBQWxCOUksRUFBS2lKLFVBQWtCNEssSUFDdEJ6QyxFQUFTcFIs
RUFBTXpCLEVBQVMrUixHQUM1QixPQUFPLE1BS1YsT0FBU3RRLEVBQU9BLEVBQU04SSxHQUNyQixH
QUF1QixJQUFsQjlJLEVBQUtpSixVQUFrQjRLLEVBTzNCLEdBTkFyRCxFQUFheFEsRUFBTXlCLEtB
QWN6QixFQUFNeUIsT0FJdkM4TyxFQUFjQyxFQUFZeFEsRUFBSzhRLFlBQWVOLEVBQVl4USxFQUFL
OFEsY0FFMUQ4QyxHQUFRQSxJQUFTNVQsRUFBSzhDLFNBQVNDLGNBQ25DL0MsRUFBT0EsRUFBTThJ
LElBQVM5SSxNQUNoQixDQUFBLElBQU0rVCxFQUFXeEQsRUFBYTFGLEtBQ3BDa0osRUFBVSxLQUFR
eE8sR0FBV3dPLEVBQVUsS0FBUUQsRUFHL0MsTUFBUUUsR0FBVSxHQUFNRCxFQUFVLEVBTWxDLElB
SEF4RCxFQUFhMUYsR0FBUW1KLEVBR2ZBLEVBQVUsR0FBTTVDLEVBQVNwUixFQUFNekIsRUFBUytS
LEdBQzdDLE9BQU8sRUFNWixPQUFPLEdBSVYsUUFBUzJELElBQWdCQyxHQUN4QixNQUFPQSxHQUFT
OVUsT0FBUyxFQUN4QixTQUFVWSxFQUFNekIsRUFBUytSLEdBQ3hCLEdBQUlyUSxHQUFJaVUsRUFB
UzlVLE1BQ2pCLE9BQVFhLElBQ1AsSUFBTWlVLEVBQVNqVSxHQUFJRCxFQUFNekIsRUFBUytSLEdB
Q2pDLE9BQU8sQ0FHVCxRQUFPLEdBRVI0RCxFQUFTLEdBR1gsUUFBU0MsSUFBa0I3VixFQUFVOFYs
RUFBVWpSLEdBRzlDLElBRkEsR0FBSWxELEdBQUksRUFDUE0sRUFBTTZULEVBQVNoVixPQUNSYSxF
QUFJTSxFQUFLTixJQUNoQnFFLEdBQVFoRyxFQUFVOFYsRUFBU25VLEdBQUlrRCxFQUVoQyxPQUFP
QSxHQUdSLFFBQVNrUixJQUFVaEQsRUFBV3RSLEVBQUtnTixFQUFReE8sRUFBUytSLEdBT25ELElB
TkEsR0FBSXRRLEdBQ0hzVSxLQUNBclUsRUFBSSxFQUNKTSxFQUFNOFEsRUFBVWpTLE9BQ2hCbVYs
RUFBZ0IsTUFBUHhVLEVBRUZFLEVBQUlNLEVBQUtOLEtBQ1ZELEVBQU9xUixFQUFVcFIsTUFDaEI4
TSxJQUFVQSxFQUFRL00sRUFBTXpCLEVBQVMrUixLQUN0Q2dFLEVBQWF0WCxLQUFNZ0QsR0FDZHVV
LEdBQ0p4VSxFQUFJL0MsS0FBTWlELElBTWQsT0FBT3FVLEdBR1IsUUFBU0UsSUFBWTlFLEVBQVdw
UixFQUFVOFMsRUFBU3FELEVBQVlDLEVBQVlDLEdBTzFFLE1BTktGLEtBQWVBLEVBQVloVCxLQUMv
QmdULEVBQWFELEdBQVlDLElBRXJCQyxJQUFlQSxFQUFZalQsS0FDL0JpVCxFQUFhRixHQUFZRSxF
QUFZQyxJQUUvQjNKLEdBQWEsU0FBVTVCLEVBQU1qRyxFQUFTNUUsRUFBUytSLEdBQ3JELEdBQUlz
RSxHQUFNM1UsRUFBR0QsRUFDWjZVLEtBQ0FDLEtBQ0FDLEVBQWM1UixFQUFRL0QsT0FHdEJLLEVB
QVEySixHQUFRK0ssR0FBa0I3VixHQUFZLElBQUtDLEVBQVEwSyxVQUFhMUssR0FBWUEsTUFHcEZ5
VyxHQUFZdEYsSUFBZXRHLEdBQVM5SyxFQUVuQ21CLEVBREE0VSxHQUFVNVUsRUFBT29WLEVBQVFu
RixFQUFXblIsRUFBUytSLEdBRzlDMkUsRUFBYTdELEVBRVpzRCxJQUFnQnRMLEVBQU9zRyxFQUFZ
cUYsR0FBZU4sTUFNakR0UixFQUNENlIsQ0FRRixJQUxLNUQsR0FDSkEsRUFBUzRELEVBQVdDLEVB
QVkxVyxFQUFTK1IsR0FJckNtRSxFQUFhLENBQ2pCRyxFQUFPUCxHQUFVWSxFQUFZSCxHQUM3Qkws
RUFBWUcsS0FBVXJXLEVBQVMrUixHQUcvQnJRLEVBQUkyVSxFQUFLeFYsTUFDVCxPQUFRYSxLQUNE
RCxFQUFPNFUsRUFBSzNVLE1BQ2pCZ1YsRUFBWUgsRUFBUTdVLE1BQVMrVSxFQUFXRixFQUFRN1Us
SUFBT0QsSUFLMUQsR0FBS29KLEdBQ0osR0FBS3NMLEdBQWNoRixFQUFZLENBQzlCLEdBQUtnRixF
QUFhLENBRWpCRSxLQUNBM1UsRUFBSWdWLEVBQVc3VixNQUNmLE9BQVFhLEtBQ0RELEVBQU9pVixF
QUFXaFYsS0FFdkIyVSxFQUFLNVgsS0FBT2dZLEVBQVUvVSxHQUFLRCxFQUc3QjBVLEdBQVksS0FB
T08sS0FBa0JMLEVBQU10RSxHQUk1Q3JRLEVBQUlnVixFQUFXN1YsTUFDZixPQUFRYSxLQUNERCxF
QUFPaVYsRUFBV2hWLE1BQ3RCMlUsRUFBT0YsRUFBYXpYLEVBQVNtTSxFQUFNcEosR0FBUzZVLEVB
QU81VSxTQUVwRG1KLEVBQUt3TCxLQUFVelIsRUFBUXlSLEdBQVE1VSxTQU9sQ2lWLEdBQWFaLEdB
Q1pZLElBQWU5UixFQUNkOFIsRUFBV3RVLE9BQVFvVSxFQUFhRSxFQUFXN1YsUUFDM0M2VixHQUVH
UCxFQUNKQSxFQUFZLEtBQU12UixFQUFTOFIsRUFBWTNFLEdBRXZDdFQsRUFBS2tELE1BQU9pRCxF
QUFTOFIsS0FNekIsUUFBU0MsSUFBbUI1QixHQXdCM0IsSUF2QkEsR0FBSTZCLEdBQWMvRCxFQUFT
NVEsRUFDMUJELEVBQU0rUyxFQUFPbFUsT0FDYmdXLEVBQWtCN1EsRUFBSzhLLFNBQVVpRSxFQUFP
LEdBQUdwUixNQUMzQ21ULEVBQW1CRCxHQUFtQjdRLEVBQUs4SyxTQUFTLEtBQ3BEcFAsRUFBSW1W
LEVBQWtCLEVBQUksRUFHMUJFLEVBQWUxTSxHQUFlLFNBQVU1SSxHQUN2QyxNQUFPQSxLQUFTbVYs
R0FDZEUsR0FBa0IsR0FDckJFLEVBQWtCM00sR0FBZSxTQUFVNUksR0FDMUMsTUFBTy9DLEdBQVNr
WSxFQUFjblYsT0FDNUJxVixHQUFrQixHQUNyQm5CLEdBQWEsU0FBVWxVLEVBQU16QixFQUFTK1Is
R0FDckMsR0FBSTVRLElBQVMwVixJQUFxQjlFLEdBQU8vUixJQUFZc0csTUFDbkRzUSxFQUFlNVcs
R0FBUzBLLFNBQ3hCcU0sRUFBY3RWLEVBQU16QixFQUFTK1IsR0FDN0JpRixFQUFpQnZWLEVBQU16
QixFQUFTK1IsR0FHbEMsT0FEQTZFLEdBQWUsS0FDUnpWLElBR0RPLEVBQUlNLEVBQUtOLElBQ2hC
LEdBQU1tUixFQUFVN00sRUFBSzhLLFNBQVVpRSxFQUFPclQsR0FBR2lDLE1BQ3hDZ1MsR0FBYXRM
LEdBQWNxTCxHQUFnQkMsR0FBWTlDLFFBQ2pELENBSU4sR0FIQUEsRUFBVTdNLEVBQUt3SSxPQUFR
dUcsRUFBT3JULEdBQUdpQyxNQUFPaEMsTUFBTyxLQUFNb1QsRUFBT3JULEdBQUd3RCxTQUcxRDJO
LEVBQVMzUCxHQUFZLENBR3pCLElBREFqQixJQUFNUCxFQUNFTyxFQUFJRCxFQUFLQyxJQUNoQixH
QUFLK0QsRUFBSzhLLFNBQVVpRSxFQUFPOVMsR0FBRzBCLE1BQzdCLEtBR0YsT0FBT3NTLElBQ052
VSxFQUFJLEdBQUtnVSxHQUFnQkMsR0FDekJqVSxFQUFJLEdBQUtvSyxHQUVSaUosRUFBT3hXLE1B
QU8sRUFBR21ELEVBQUksR0FBSWxELFFBQVM2RyxNQUFnQyxNQUF6QjBQLEVBQVFyVCxFQUFJLEdB
QUlpQyxLQUFlLElBQU0sTUFDN0VOLFFBQVNsRCxFQUFPLE1BQ2xCMFMsRUFDQW5SLEVBQUlPLEdB
QUswVSxHQUFtQjVCLEVBQU94VyxNQUFPbUQsRUFBR08sSUFDN0NBLEVBQUlELEdBQU8yVSxHQUFv
QjVCLEVBQVNBLEVBQU94VyxNQUFPMEQsSUFDdERBLEVBQUlELEdBQU84SixHQUFZaUosSUFHekJZ
LEVBQVNsWCxLQUFNb1UsR0FJakIsTUFBTzZDLElBQWdCQyxHQUd4QixRQUFTc0IsSUFBMEJDLEVB
QWlCQyxHQUNuRCxHQUFJQyxHQUFRRCxFQUFZdFcsT0FBUyxFQUNoQ3dXLEVBQVlILEVBQWdCclcs
T0FBUyxFQUNyQ3lXLEVBQWUsU0FBVXpNLEVBQU03SyxFQUFTK1IsRUFBS25OLEVBQVMyUyxHQUNy
RCxHQUFJOVYsR0FBTVEsRUFBRzRRLEVBQ1oyRSxFQUFlLEVBQ2Y5VixFQUFJLElBQ0pvUixFQUFZ
akksTUFDWjRNLEtBQ0FDLEVBQWdCcFIsRUFFaEJwRixFQUFRMkosR0FBUXdNLEdBQWFyUixFQUFL
MEksS0FBVSxJQUFHLElBQUs2SSxHQUVwREksRUFBaUIzUSxHQUE0QixNQUFqQjBRLEVBQXdCLEVB
QUl2VSxLQUFLQyxVQUFZLEdBQ3pFcEIsRUFBTWQsRUFBTUwsTUFTYixLQVBLMFcsSUFDSmpSLEVB
QW1CdEcsSUFBWW5DLEdBQVltQyxHQUFXdVgsR0FNL0M3VixJQUFNTSxHQUE0QixPQUFwQlAsRUFB
T1AsRUFBTVEsSUFBYUEsSUFBTSxDQUNyRCxHQUFLMlYsR0FBYTVWLEVBQU8sQ0FDeEJRLEVBQUks
RUFDRWpDLEdBQVd5QixFQUFLMkosZ0JBQWtCdk4sSUFDdkM0SSxFQUFhaEYsR0FDYnNRLEdBQU9w
TCxFQUVSLE9BQVNrTSxFQUFVcUUsRUFBZ0JqVixLQUNsQyxHQUFLNFEsRUFBU3BSLEVBQU16QixH
QUFXbkMsRUFBVWtVLEdBQU8sQ0FDL0NuTixFQUFRbkcsS0FBTWdELEVBQ2QsT0FHRzhWLElBQ0p2
USxFQUFVMlEsR0FLUFAsS0FFRTNWLEdBQVFvUixHQUFXcFIsSUFDeEIrVixJQUlJM00sR0FDSmlJ
LEVBQVVyVSxLQUFNZ0QsSUFnQm5CLEdBVEErVixHQUFnQjlWLEVBU1gwVixHQUFTMVYsSUFBTThW
LEVBQWUsQ0FDbEN2VixFQUFJLENBQ0osT0FBUzRRLEVBQVVzRSxFQUFZbFYsS0FDOUI0USxFQUFT
QyxFQUFXMkUsRUFBWXpYLEVBQVMrUixFQUcxQyxJQUFLbEgsRUFBTyxDQUVYLEdBQUsyTSxFQUFl
LEVBQ25CLE1BQVE5VixJQUNBb1IsRUFBVXBSLElBQU0rVixFQUFXL1YsS0FDakMrVixFQUFXL1Ys
R0FBSytGLEVBQUl4SSxLQUFNMkYsR0FNN0I2UyxHQUFhM0IsR0FBVTJCLEdBSXhCaFosRUFBS2tE
LE1BQU9pRCxFQUFTNlMsR0FHaEJGLElBQWMxTSxHQUFRNE0sRUFBVzVXLE9BQVMsR0FDNUMyVyxF
QUFlTCxFQUFZdFcsT0FBVyxHQUV4Q2tGLEdBQU9zSyxXQUFZekwsR0FVckIsTUFMSzJTLEtBQ0p2
USxFQUFVMlEsRUFDVnJSLEVBQW1Cb1IsR0FHYjVFLEVBR1QsT0FBT3NFLEdBQ04zSyxHQUFjNkss
R0FDZEEsRUErS0YsTUE1S0FsUixHQUFVTCxHQUFPSyxRQUFVLFNBQVVyRyxFQUFVaUwsR0FDOUMs
R0FBSXRKLEdBQ0h5VixLQUNBRCxLQUNBaEMsRUFBUzdOLEVBQWV0SCxFQUFXLElBRXBDLEtBQU1t
VixFQUFTLENBRVJsSyxJQUNMQSxFQUFRN0UsRUFBVXBHLElBRW5CMkIsRUFBSXNKLEVBQU1uSyxN
QUNWLE9BQVFhLElBQ1B3VCxFQUFTeUIsR0FBbUIzTCxFQUFNdEosSUFDN0J3VCxFQUFRaFMsR0FD
WmlVLEVBQVkxWSxLQUFNeVcsR0FFbEJnQyxFQUFnQnpZLEtBQU15VyxFQUt4QkEsR0FBUzdOLEVB
QWV0SCxFQUFVa1gsR0FBMEJDLEVBQWlCQyxJQUc3RWpDLEVBQU9uVixTQUFXQSxFQUVuQixNQUFP
bVYsSUFZUjdPLEVBQVNOLEdBQU9NLE9BQVMsU0FBVXRHLEVBQVVDLEVBQVM0RSxFQUFTaUcsR0FD
OUQsR0FBSW5KLEdBQUdxVCxFQUFRNkMsRUFBT2pVLEVBQU0rSyxFQUMzQm1KLEVBQStCLGtCQUFi
OVgsSUFBMkJBLEVBQzdDaUwsR0FBU0gsR0FBUTFFLEVBQVdwRyxFQUFXOFgsRUFBUzlYLFVBQVlB
LEVBTTdELElBSkE2RSxFQUFVQSxNQUlZLElBQWpCb0csRUFBTW5LLE9BQWUsQ0FJekIsR0FEQWtV
LEVBQVMvSixFQUFNLEdBQUtBLEVBQU0sR0FBR3pNLE1BQU8sR0FDL0J3VyxFQUFPbFUsT0FBUyxH
QUFrQyxRQUE1QitXLEVBQVE3QyxFQUFPLElBQUlwUixNQUN2QixJQUFyQjNELEVBQVEwSyxVQUFr
Qi9ELEdBQWtCWCxFQUFLOEssU0FBVWlFLEVBQU8sR0FBR3BSLE1BQVMsQ0FHL0UsR0FEQTNELEdB
QVlnRyxFQUFLMEksS0FBUyxHQUFHa0osRUFBTTFTLFFBQVEsR0FBRzdCLFFBQVFpRyxFQUFXQyxJ
QUFZdkosUUFBa0IsSUFDekZBLEVBQ0wsTUFBTzRFLEVBR0lpVCxLQUNYN1gsRUFBVUEsRUFBUUws
WUFHbkJJLEVBQVdBLEVBQVN4QixNQUFPd1csRUFBT3ZJLFFBQVFuSCxNQUFNeEUsUUFJakRhLEVB
QUk4RyxFQUF3QixhQUFFbUQsS0FBTTVMLEdBQWEsRUFBSWdWLEVBQU9sVSxNQUM1RCxPQUFRYSxJ
QUFNLENBSWIsR0FIQWtXLEVBQVE3QyxFQUFPclQsR0FHVnNFLEVBQUs4SyxTQUFXbk4sRUFBT2lV
LEVBQU1qVSxNQUNqQyxLQUVELEtBQU0rSyxFQUFPMUksRUFBSzBJLEtBQU0vSyxNQUVqQmtILEVB
QU82RCxFQUNaa0osRUFBTTFTLFFBQVEsR0FBRzdCLFFBQVNpRyxFQUFXQyxJQUNyQ0YsRUFBU3ND
LEtBQU1vSixFQUFPLEdBQUdwUixPQUFVcUksR0FBYWhNLEVBQVFMLGFBQWdCSyxJQUNwRSxDQUtK
LEdBRkErVSxFQUFPM1MsT0FBUVYsRUFBRyxHQUNsQjNCLEVBQVc4SyxFQUFLaEssUUFBVWlMLEdB
QVlpSixJQUNoQ2hWLEVBRUwsTUFEQXRCLEdBQUtrRCxNQUFPaUQsRUFBU2lHLEdBQ2RqRyxDQUdS
LFNBZUosT0FQRWlULEdBQVl6UixFQUFTckcsRUFBVWlMLElBQ2hDSCxFQUNBN0ssR0FDQzJHLEVB
Q0QvQixHQUNDNUUsR0FBV3FKLEVBQVNzQyxLQUFNNUwsSUFBY2lNLEdBQWFoTSxFQUFRTCxhQUFn
QkssR0FFeEU0RSxHQU1SMUYsRUFBUXNSLFdBQWF0TixFQUFRNEMsTUFBTSxJQUFJM0QsS0FBTW1G
LEdBQVl5RSxLQUFLLE1BQVE3SSxFQUl0RWhFLEVBQVFxUixtQkFBcUIvSixFQUc3QkMsSUFJQXZI
LEVBQVF1USxhQUFlL0MsR0FBTyxTQUFVQyxHQUV2QyxNQUEwRSxHQUFuRUEsRUFBRzBDLHdCQUF5
QnhSLEVBQVMwQixjQUFjLGVBTXJEbU4sR0FBTyxTQUFVQyxHQUV0QixNQURBQSxHQUFHa0MsVUFB
WSxtQkFDK0IsTUFBdkNsQyxFQUFHK0QsV0FBVzlFLGFBQWEsV0FFbENnQixHQUFXLHlCQUEwQixT
QUFVbkwsRUFBTWMsRUFBTTJELEdBQzFELElBQU1BLEVBQ0wsTUFBT3pFLEdBQUttSyxhQUFjckos
RUFBNkIsU0FBdkJBLEVBQUtpQyxjQUEyQixFQUFJLEtBT2pFdEYsRUFBUTZJLFlBQWUyRSxHQUFP
LFNBQVVDLEdBRzdDLE1BRkFBLEdBQUdrQyxVQUFZLFdBQ2ZsQyxFQUFHK0QsV0FBVzdFLGFBQWMs
UUFBUyxJQUNZLEtBQTFDYyxFQUFHK0QsV0FBVzlFLGFBQWMsWUFFbkNnQixHQUFXLFFBQVMsU0FB
VW5MLEVBQU1jLEVBQU0yRCxHQUN6QyxJQUFNQSxHQUF5QyxVQUFoQ3pFLEVBQUs4QyxTQUFTQyxj
QUM1QixNQUFPL0MsR0FBS3FXLGVBT1RwTCxHQUFPLFNBQVVDLEdBQ3RCLE1BQXNDLE9BQS9CQSxF
QUFHZixhQUFhLGVBRXZCZ0IsR0FBV2hGLEVBQVUsU0FBVW5HLEVBQU1jLEVBQU0yRCxHQUMxQyxH
QUFJK0osRUFDSixLQUFNL0osRUFDTCxNQUFPekUsR0FBTWMsTUFBVyxFQUFPQSxFQUFLaUMsZUFD
akN5TCxFQUFNeE8sRUFBS2tOLGlCQUFrQnBNLEtBQVcwTixFQUFJQyxVQUM3Q0QsRUFBSTVLLE1B
Q0wsT0FLR1UsSUFFSC9ILEVBSUo4QixHQUFPNE8sS0FBTzNJLEVBQ2RqRyxFQUFPZ1EsS0FBTy9K
LEVBQU82SyxVQUdyQjlRLEVBQU9nUSxLQUFNLEtBQVFoUSxFQUFPZ1EsS0FBSzlILFFBQ2pDbEks
RUFBT3VRLFdBQWF2USxFQUFPaVksT0FBU2hTLEVBQU9zSyxXQUMzQ3ZRLEVBQU9OLEtBQU91RyxF
QUFPRSxRQUNyQm5HLEVBQU9rWSxTQUFXalMsRUFBT0csTUFDekJwRyxFQUFPZ0gsU0FBV2YsRUFB
T2UsU0FDekJoSCxFQUFPbVksZUFBaUJsUyxFQUFPb0ssTUFLL0IsSUFBSTVGLEdBQU0sU0FBVTlJ
LEVBQU04SSxFQUFLMk4sR0FDOUIsR0FBSXZGLE1BQ0h3RixFQUFxQmxWLFNBQVZpVixDQUVaLFFB
QVV6VyxFQUFPQSxFQUFNOEksS0FBNkIsSUFBbEI5SSxFQUFLaUosU0FDdEMsR0FBdUIsSUFBbEJq
SixFQUFLaUosU0FBaUIsQ0FDMUIsR0FBS3lOLEdBQVlyWSxFQUFRMkIsR0FBTzJXLEdBQUlGLEdB
Q25DLEtBRUR2RixHQUFRbFUsS0FBTWdELEdBR2hCLE1BQU9rUixJQUlKMEYsRUFBVyxTQUFVQyxF
QUFHN1csR0FHM0IsSUFGQSxHQUFJa1IsTUFFSTJGLEVBQUdBLEVBQUlBLEVBQUVsTCxZQUNJLElB
QWZrTCxFQUFFNU4sVUFBa0I0TixJQUFNN1csR0FDOUJrUixFQUFRbFUsS0FBTTZaLEVBSWhCLE9B
QU8zRixJQUlKNEYsRUFBZ0J6WSxFQUFPZ1EsS0FBSzlFLE1BQU1oQyxhQUVsQ3dQLEVBQWEsa0VB
SWJDLEVBQVksZ0JBR2hCLFNBQVNDLEdBQVEzSSxFQUFVNEksRUFBVy9GLEdBQ3JDLE1BQUs5UyxH
QUFPZ0QsV0FBWTZWLEdBQ2hCN1ksRUFBT2lGLEtBQU1nTCxFQUFVLFNBQVV0TyxFQUFNQyxHQUM3
QyxRQUFTaVgsRUFBVTFaLEtBQU13QyxFQUFNQyxFQUFHRCxLQUFXbVIsSUFLMUMrRixFQUFVak8s
U0FDUDVLLEVBQU9pRixLQUFNZ0wsRUFBVSxTQUFVdE8sR0FDdkMsTUFBU0EsS0FBU2tYLElBQWdC
L0YsSUFLVixnQkFBZCtGLEdBQ0o3WSxFQUFPaUYsS0FBTWdMLEVBQVUsU0FBVXRPLEdBQ3ZDLE1B
QVMvQyxHQUFRTyxLQUFNMFosRUFBV2xYLFFBQWtCbVIsSUFLakQ2RixFQUFVOU0sS0FBTWdOLEdB
Q2I3WSxFQUFPME8sT0FBUW1LLEVBQVc1SSxFQUFVNkMsSUFJNUMrRixFQUFZN1ksRUFBTzBPLE9B
QVFtSyxFQUFXNUksR0FDL0JqUSxFQUFPaUYsS0FBTWdMLEVBQVUsU0FBVXRPLEdBQ3ZDLE1BQVMv
QyxHQUFRTyxLQUFNMFosRUFBV2xYLFFBQWtCbVIsR0FBeUIsSUFBbEJuUixFQUFLaUosWUFJbEU1
SyxFQUFPME8sT0FBUyxTQUFVc0IsRUFBTTVPLEVBQU8wUixHQUN0QyxHQUFJblIsR0FBT1AsRUFB
TyxFQU1sQixPQUpLMFIsS0FDSjlDLEVBQU8sUUFBVUEsRUFBTyxLQUdILElBQWpCNU8sRUFBTUws
UUFBa0MsSUFBbEJZLEVBQUtpSixTQUN4QjVLLEVBQU80TyxLQUFLSyxnQkFBaUJ0TixFQUFNcU8s
SUFBV3JPLE1BRy9DM0IsRUFBTzRPLEtBQUt4SixRQUFTNEssRUFBTWhRLEVBQU9pRixLQUFNN0Qs
RUFBTyxTQUFVTyxHQUMvRCxNQUF5QixLQUFsQkEsRUFBS2lKLGFBSWQ1SyxFQUFPRyxHQUFHb0Ms
UUFDVHFNLEtBQU0sU0FBVTNPLEdBQ2YsR0FBSTJCLEdBQUdQLEVBQ05hLEVBQU0vRCxLQUFLNEMs
T0FDWCtYLEVBQU8zYSxJQUVSLElBQXlCLGdCQUFiOEIsR0FDWCxNQUFPOUIsTUFBS2dELFVBQVdu
QixFQUFRQyxHQUFXeU8sT0FBUSxXQUNqRCxJQUFNOU0sRUFBSSxFQUFHQSxFQUFJTSxFQUFLTixJ
QUNyQixHQUFLNUIsRUFBT2dILFNBQVU4UixFQUFNbFgsR0FBS3pELE1BQ2hDLE9BQU8sSUFRWCxL
QUZBa0QsRUFBTWxELEtBQUtnRCxjQUVMUyxFQUFJLEVBQUdBLEVBQUlNLEVBQUtOLElBQ3JCNUIs
RUFBTzRPLEtBQU0zTyxFQUFVNlksRUFBTWxYLEdBQUtQLEVBR25DLE9BQU9hLEdBQU0sRUFBSWxD
LEVBQU91USxXQUFZbFAsR0FBUUEsR0FFN0NxTixPQUFRLFNBQVV6TyxHQUNqQixNQUFPOUIsTUFB
S2dELFVBQVd5WCxFQUFRemEsS0FBTThCLE9BQWdCLEtBRXRENlMsSUFBSyxTQUFVN1MsR0FDZCxN
QUFPOUIsTUFBS2dELFVBQVd5WCxFQUFRemEsS0FBTThCLE9BQWdCLEtBRXREcVksR0FBSSxTQUFV
clksR0FDYixRQUFTMlksRUFDUnphLEtBSW9CLGdCQUFiOEIsSUFBeUJ3WSxFQUFjNU0sS0FBTTVM
LEdBQ25ERCxFQUFRQyxHQUNSQSxPQUNELEdBQ0NjLFNBU0osSUFBSWdZLEdBTUh6UCxFQUFhLHND
QUVibEosRUFBT0osRUFBT0csR0FBR0MsS0FBTyxTQUFVSCxFQUFVQyxFQUFTcVQsR0FDcEQsR0FB
SXJJLEdBQU92SixDQUdYLEtBQU0xQixFQUNMLE1BQU85QixLQVFSLElBSEFvVixFQUFPQSxHQUFR
d0YsRUFHVSxnQkFBYjlZLEdBQXdCLENBYW5DLEdBUENpTCxFQUxzQixNQUFsQmpMLEVBQVUsSUFD
c0IsTUFBcENBLEVBQVVBLEVBQVNjLE9BQVMsSUFDNUJkLEVBQVNjLFFBQVUsR0FHVCxLQUFNZCxF
QUFVLE1BR2xCcUosRUFBV2lDLEtBQU10TCxJQUlyQmlMLElBQVdBLEVBQU8sSUFBUWhMLEVBNkN4
QixPQUFNQSxHQUFXQSxFQUFRVyxRQUN0QlgsR0FBV3FULEdBQU8zRSxLQUFNM08sR0FLMUI5QixL
QUFLMkMsWUFBYVosR0FBVTBPLEtBQU0zTyxFQWhEekMsSUFBS2lMLEVBQU8sR0FBTSxDQVlqQixH
QVhBaEwsRUFBVUEsWUFBbUJGLEdBQVNFLEVBQVMsR0FBTUEsRUFJckRGLEVBQU9zQixNQUFPbkQs
S0FBTTZCLEVBQU9nWixVQUMxQjlOLEVBQU8sR0FDUGhMLEdBQVdBLEVBQVEwSyxTQUFXMUssRUFB
UW9MLGVBQWlCcEwsRUFBVW5DLEdBQ2pFLElBSUkyYSxFQUFXN00sS0FBTVgsRUFBTyxLQUFTbEws
RUFBT2lELGNBQWUvQyxHQUMzRCxJQUFNZ0wsSUFBU2hMLEdBR1RGLEVBQU9nRCxXQUFZN0UsS0FB
TStNLElBQzdCL00sS0FBTStNLEdBQVNoTCxFQUFTZ0wsSUFJeEIvTSxLQUFLK1IsS0FBTWhGLEVB
QU9oTCxFQUFTZ0wsR0FLOUIsT0FBTy9NLE1BWVAsTUFSQXdELEdBQU81RCxFQUFTeU4sZUFBZ0JO
LEVBQU8sSUFFbEN2SixJQUdKeEQsS0FBTSxHQUFNd0QsRUFDWnhELEtBQUs0QyxPQUFTLEdBRVI1
QyxLQWNILE1BQUs4QixHQUFTMkssVUFDcEJ6TSxLQUFNLEdBQU04QixFQUNaOUIsS0FBSzRDLE9B
QVMsRUFDUDVDLE1BSUk2QixFQUFPZ0QsV0FBWS9DLEdBQ1JrRCxTQUFmb1EsRUFBSzBGLE1BQ1gx
RixFQUFLMEYsTUFBT2haLEdBR1pBLEVBQVVELEdBR0xBLEVBQU82RSxVQUFXNUUsRUFBVTlCLE1B
SXJDaUMsR0FBS1EsVUFBWVosRUFBT0csR0FHeEI0WSxFQUFhL1ksRUFBUWpDLEVBR3JCLElBQUlt
YixHQUFlLGlDQUdsQkMsR0FDQ0MsVUFBVSxFQUNWQyxVQUFVLEVBQ1YzTyxNQUFNLEVBQ040TyxN
QUFNLEVBR1J0WixHQUFPRyxHQUFHb0MsUUFDVDBRLElBQUssU0FBVW5RLEdBQ2QsR0FBSXlXLEdB
QVV2WixFQUFROEMsRUFBUTNFLE1BQzdCcWIsRUFBSUQsRUFBUXhZLE1BRWIsT0FBTzVDLE1BQUt1
USxPQUFRLFdBRW5CLElBREEsR0FBSTlNLEdBQUksRUFDQUEsRUFBSTRYLEVBQUc1WCxJQUNkLEdB
QUs1QixFQUFPZ0gsU0FBVTdJLEtBQU1vYixFQUFTM1gsSUFDcEMsT0FBTyxLQU1YNlgsUUFBUyxT
QUFVM0ksRUFBVzVRLEdBQzdCLEdBQUlpTixHQUNIdkwsRUFBSSxFQUNKNFgsRUFBSXJiLEtBQUs0
QyxPQUNUOFIsS0FDQTBHLEVBQStCLGdCQUFkekksSUFBMEI5USxFQUFROFEsRUFHcEQsS0FBTTJI
LEVBQWM1TSxLQUFNaUYsR0FDekIsS0FBUWxQLEVBQUk0WCxFQUFHNVgsSUFDZCxJQUFNdUwsRUFB
TWhQLEtBQU15RCxHQUFLdUwsR0FBT0EsSUFBUWpOLEVBQVNpTixFQUFNQSxFQUFJdE4sV0FHeEQs
R0FBS3NOLEVBQUl2QyxTQUFXLEtBQVEyTyxFQUMzQkEsRUFBUUcsTUFBT3ZNLE1BR0UsSUFBakJB
LEVBQUl2QyxVQUNINUssRUFBTzRPLEtBQUtLLGdCQUFpQjlCLEVBQUsyRCxJQUFnQixDQUVuRCtC
LEVBQVFsVSxLQUFNd08sRUFDZCxPQU1KLE1BQU9oUCxNQUFLZ0QsVUFBVzBSLEVBQVE5UixPQUFT
LEVBQUlmLEVBQU91USxXQUFZc0MsR0FBWUEsSUFJNUU2RyxNQUFPLFNBQVUvWCxHQUdoQixNQUFN
QSxHQUtlLGdCQUFUQSxHQUNKL0MsRUFBUU8sS0FBTWEsRUFBUTJCLEdBQVF4RCxLQUFNLElBSXJD
UyxFQUFRTyxLQUFNaEIsS0FHcEJ3RCxFQUFLZCxPQUFTYyxFQUFNLEdBQU1BLEdBWmpCeEQsS0FB
TSxJQUFPQSxLQUFNLEdBQUkwQixXQUFlMUIsS0FBSzRELFFBQVE0WCxVQUFVNVksV0FnQnhFNlks
SUFBSyxTQUFVM1osRUFBVUMsR0FDeEIsTUFBTy9CLE1BQUtnRCxVQUNYbkIsRUFBT3VRLFdBQ052
USxFQUFPc0IsTUFBT25ELEtBQUs4QyxNQUFPakIsRUFBUUMsRUFBVUMsT0FLL0MyWixRQUFTLFNB
QVU1WixHQUNsQixNQUFPOUIsTUFBS3liLElBQWlCLE1BQVozWixFQUNoQjlCLEtBQUtvRCxXQUFh
cEQsS0FBS29ELFdBQVdtTixPQUFRek8sTUFLN0MsU0FBUzZaLEdBQVMzTSxFQUFLMUMsR0FDdEIs
T0FBVTBDLEVBQU1BLEVBQUsxQyxLQUE0QixJQUFqQjBDLEVBQUl2QyxVQUNwQyxNQUFPdUMsR0FH
Um5OLEVBQU93QixNQUNOOFEsT0FBUSxTQUFVM1EsR0FDakIsR0FBSTJRLEdBQVMzUSxFQUFLOUIs
VUFDbEIsT0FBT3lTLElBQThCLEtBQXBCQSxFQUFPMUgsU0FBa0IwSCxFQUFTLE1BRXBEeUgsUUFB
UyxTQUFVcFksR0FDbEIsTUFBTzhJLEdBQUs5SSxFQUFNLGVBRW5CcVksYUFBYyxTQUFVclksRUFB
TUMsRUFBR3dXLEdBQ2hDLE1BQU8zTixHQUFLOUksRUFBTSxhQUFjeVcsSUFFakMxTixLQUFNLFNB
QVUvSSxHQUNmLE1BQU9tWSxHQUFTblksRUFBTSxnQkFFdkIyWCxLQUFNLFNBQVUzWCxHQUNmLE1B
QU9tWSxHQUFTblksRUFBTSxvQkFFdkJzWSxRQUFTLFNBQVV0WSxHQUNsQixNQUFPOEksR0FBSzlJ
LEVBQU0sZ0JBRW5CZ1ksUUFBUyxTQUFVaFksR0FDbEIsTUFBTzhJLEdBQUs5SSxFQUFNLG9CQUVu
QnVZLFVBQVcsU0FBVXZZLEVBQU1DLEVBQUd3VyxHQUM3QixNQUFPM04sR0FBSzlJLEVBQU0sY0FB
ZXlXLElBRWxDK0IsVUFBVyxTQUFVeFksRUFBTUMsRUFBR3dXLEdBQzdCLE1BQU8zTixHQUFLOUks
RUFBTSxrQkFBbUJ5VyxJQUV0Q0csU0FBVSxTQUFVNVcsR0FDbkIsTUFBTzRXLElBQVk1VyxFQUFL
OUIsZ0JBQW1CK1EsV0FBWWpQLElBRXhEeVgsU0FBVSxTQUFVelgsR0FDbkIsTUFBTzRXLEdBQVU1
VyxFQUFLaVAsYUFFdkJ5SSxTQUFVLFNBQVUxWCxHQUNuQixNQUFPQSxHQUFLeVksaUJBQW1CcGEs
RUFBT3NCLFNBQVdLLEVBQUtnSixjQUVyRCxTQUFVbEksRUFBTXRDLEdBQ2xCSCxFQUFPRyxHQUFJ
c0MsR0FBUyxTQUFVMlYsRUFBT25ZLEdBQ3BDLEdBQUk0UyxHQUFVN1MsRUFBTzBCLElBQUt2RCxL
QUFNZ0MsRUFBSWlZLEVBdUJwQyxPQXJCMEIsVUFBckIzVixFQUFLaEUsWUFDVHdCLEVBQVdtWSxH
QUdQblksR0FBZ0MsZ0JBQWJBLEtBQ3ZCNFMsRUFBVTdTLEVBQU8wTyxPQUFRek8sRUFBVTRTLElB
Ry9CMVUsS0FBSzRDLE9BQVMsSUFHWm9ZLEVBQWtCMVcsSUFDdkJ6QyxFQUFPdVEsV0FBWXNDLEdB
SWZxRyxFQUFhck4sS0FBTXBKLElBQ3ZCb1EsRUFBUXdILFdBSUhsYyxLQUFLZ0QsVUFBVzBSLEtB
R3pCLElBQUl5SCxHQUFnQixtQkFLcEIsU0FBU0MsR0FBZS9YLEdBQ3ZCLEdBQUlnWSxLQUlKLE9B
SEF4YSxHQUFPd0IsS0FBTWdCLEVBQVEwSSxNQUFPb1AsT0FBdUIsU0FBVTVRLEVBQUcrUSxHQUMv
REQsRUFBUUMsSUFBUyxJQUVYRCxFQXlCUnhhLEVBQU8wYSxVQUFZLFNBQVVsWSxHQUk1QkEsRUFB
NkIsZ0JBQVpBLEdBQ2hCK1gsRUFBZS9YLEdBQ2Z4QyxFQUFPdUMsVUFBWUMsRUFFcEIsSUFDQ21Z
LEdBR0FDLEVBR0FDLEVBR0FDLEVBR0FqVCxLQUdBa1QsS0FHQUMsS0FHQUMsRUFBTyxXQVFOLElB
TEFILEVBQVN0WSxFQUFRMFksS0FJakJMLEVBQVFGLEdBQVMsRUFDVEksRUFBTWhhLE9BQVFpYSxL
QUFtQixDQUN4Q0osRUFBU0csRUFBTXJPLE9BQ2YsU0FBVXNPLEVBQWNuVCxFQUFLOUcsT0FHdkI4
RyxFQUFNbVQsR0FBY25aLE1BQU8rWSxFQUFRLEdBQUtBLEVBQVEsT0FBVSxHQUM5RHBZLEVBQVEy
WSxjQUdSSCxFQUFjblQsRUFBSzlHLE9BQ25CNlosR0FBUyxHQU1OcFksRUFBUW9ZLFNBQ2JBLEdB
QVMsR0FHVkQsR0FBUyxFQUdKRyxJQUlIalQsRUFESStTLEtBS0csS0FNVjlCLEdBR0NjLElBQUss
V0EyQkosTUExQksvUixLQUdDK1MsSUFBV0QsSUFDZkssRUFBY25ULEVBQUs5RyxPQUFTLEVBQzVC
Z2EsRUFBTXBjLEtBQU1pYyxJQUdiLFFBQVdoQixHQUFLalUsR0FDZjNGLEVBQU93QixLQUFNbUUs
RUFBTSxTQUFVK0QsRUFBR3BFLEdBQzFCdEYsRUFBT2dELFdBQVlzQyxHQUNqQjlDLEVBQVF5VixR
QUFXYSxFQUFLN0YsSUFBSzNOLElBQ2xDdUMsRUFBS2xKLEtBQU0yRyxHQUVEQSxHQUFPQSxFQUFJ
dkUsUUFBaUMsV0FBdkJmLEVBQU82RCxLQUFNeUIsSUFHN0NzVSxFQUFLdFUsTUFHSHhELFdBRUE4
WSxJQUFXRCxHQUNmTSxLQUdLOWMsTUFJUmlkLE9BQVEsV0FZUCxNQVhBcGIsR0FBT3dCLEtBQU1N
LFVBQVcsU0FBVTRILEVBQUdwRSxHQUNwQyxHQUFJb1UsRUFDSixRQUFVQSxFQUFRMVosRUFBTytF
LFFBQVNPLEVBQUt1QyxFQUFNNlIsT0FDNUM3UixFQUFLdkYsT0FBUW9YLEVBQU8sR0FHZkEsR0FB
U3NCLEdBQ2JBLE1BSUk3YyxNQUtSOFUsSUFBSyxTQUFVOVMsR0FDZCxNQUFPQSxHQUNOSCxFQUFP
K0UsUUFBUzVFLEVBQUkwSCxNQUNwQkEsRUFBSzlHLE9BQVMsR0FJaEJrVCxNQUFPLFdBSU4sTUFI
S3BNLEtBQ0pBLE1BRU0xSixNQU1Sa2QsUUFBUyxXQUdSLE1BRkFQLEdBQVNDLEtBQ1RsVCxFQUFP
K1MsRUFBUyxHQUNUemMsTUFFUnFNLFNBQVUsV0FDVCxPQUFRM0MsR0FNVHlULEtBQU0sV0FLTCxN
QUpBUixHQUFTQyxLQUNISCxHQUFXRCxJQUNoQjlTLEVBQU8rUyxFQUFTLElBRVZ6YyxNQUVSMmMs
T0FBUSxXQUNQLFFBQVNBLEdBSVZTLFNBQVUsU0FBVXJiLEVBQVN5RixHQVM1QixNQVJNbVYsS0FD
TG5WLEVBQU9BLE1BQ1BBLEdBQVN6RixFQUFTeUYsRUFBS2xILE1BQVFrSCxFQUFLbEgsUUFBVWtI
LEdBQzlDb1YsRUFBTXBjLEtBQU1nSCxHQUNOZ1YsR0FDTE0sS0FHSzljLE1BSVI4YyxLQUFNLFdB
RUwsTUFEQW5DLEdBQUt5QyxTQUFVcGQsS0FBTTJELFdBQ2QzRCxNQUlSMGMsTUFBTyxXQUNOLFFB
QVNBLEdBSVosT0FBTy9CLEdBSVIsU0FBUzBDLEdBQVVDLEdBQ2xCLE1BQU9BLEdBRVIsUUFBU0Ms
R0FBU0MsR0FDakIsS0FBTUEsR0FHUCxRQUFTQyxHQUFZclcsRUFBT3NXLEVBQVNDLEdBQ3BDLEdB
QUlDLEVBRUosS0FHTXhXLEdBQVN2RixFQUFPZ0QsV0FBYytZLEVBQVN4VyxFQUFNeVcsU0FDakRE
LEVBQU81YyxLQUFNb0csR0FBUTRCLEtBQU0wVSxHQUFVSSxLQUFNSCxHQUdoQ3ZXLEdBQVN2RixF
QUFPZ0QsV0FBYytZLEVBQVN4VyxFQUFNMlcsTUFDeERILEVBQU81YyxLQUFNb0csRUFBT3NXLEVB
QVNDLEdBTzdCRCxFQUFRMWMsS0FBTWdFLE9BQVdvQyxHQU16QixNQUFRQSxHQUlUdVcsRUFBTzNj
LEtBQU1nRSxPQUFXb0MsSUFJMUJ2RixFQUFPdUMsUUFFTjRaLFNBQVUsU0FBVUMsR0FDbkIsR0FB
SUMsS0FJQSxTQUFVLFdBQVlyYyxFQUFPMGEsVUFBVyxVQUN6QzFhLEVBQU8wYSxVQUFXLFVBQVks
SUFDN0IsVUFBVyxPQUFRMWEsRUFBTzBhLFVBQVcsZUFDdEMxYSxFQUFPMGEsVUFBVyxlQUFpQixF
QUFHLGFBQ3JDLFNBQVUsT0FBUTFhLEVBQU8wYSxVQUFXLGVBQ3JDMWEsRUFBTzBhLFVBQVcsZUFB
aUIsRUFBRyxhQUV4QzRCLEVBQVEsVUFDUk4sR0FDQ00sTUFBTyxXQUNOLE1BQU9BLElBRVJDLE9B
QVEsV0FFUCxNQURBQyxHQUFTclYsS0FBTXJGLFdBQVltYSxLQUFNbmEsV0FDMUIzRCxNQUVSc2Us
UUFBUyxTQUFVdGMsR0FDbEIsTUFBTzZiLEdBQVFFLEtBQU0sS0FBTS9iLElBSTVCdWMsS0FBTSxX
QUNMLEdBQUlDLEdBQU03YSxTQUVWLE9BQU85QixHQUFPbWMsU0FBVSxTQUFVUyxHQUNqQzVjLEVB
QU93QixLQUFNNmEsRUFBUSxTQUFVemEsRUFBR2liLEdBR2pDLEdBQUkxYyxHQUFLSCxFQUFPZ0Qs
V0FBWTJaLEVBQUtFLEVBQU8sTUFBV0YsRUFBS0UsRUFBTyxHQUsvREwsR0FBVUssRUFBTyxJQUFP
LFdBQ3ZCLEdBQUlDLEdBQVczYyxHQUFNQSxFQUFHMEIsTUFBTzFELEtBQU0yRCxVQUNoQ2diLElB
QVk5YyxFQUFPZ0QsV0FBWThaLEVBQVNkLFNBQzVDYyxFQUFTZCxVQUNQZSxTQUFVSCxFQUFTSSxR
QUNuQjdWLEtBQU15VixFQUFTZixTQUNmSSxLQUFNVyxFQUFTZCxRQUVqQmMsRUFBVUMsRUFBTyxH
QUFNLFFBQ3RCMWUsS0FDQWdDLEdBQU8yYyxHQUFhaGIsZUFLeEI2YSxFQUFNLE9BQ0hYLFdBRUxF
LEtBQU0sU0FBVWUsRUFBYUMsRUFBWUMsR0FDeEMsR0FBSUMsR0FBVyxDQUNmLFNBQVN2QixHQUFT
d0IsRUFBT2IsRUFBVXhQLEVBQVNzUSxHQUMzQyxNQUFPLFlBQ04sR0FBSUMsR0FBT3BmLEtBQ1Z3
SCxFQUFPN0QsVUFDUDBiLEVBQWEsV0FDWixHQUFJVixHQUFVWixDQUtkLE1BQUttQixFQUFRRCxH
QUFiLENBUUEsR0FKQU4sRUFBVzlQLEVBQVFuTCxNQUFPMGIsRUFBTTVYLEdBSTNCbVgsSUFBYU4s
RUFBU1IsVUFDMUIsS0FBTSxJQUFJeUIsV0FBVywyQkFPdEJ2QixHQUFPWSxJQUtnQixnQkFBYkEs
SUFDWSxrQkFBYkEsS0FDUkEsRUFBU1osS0FHTGxjLEVBQU9nRCxXQUFZa1osR0FHbEJvQixFQUNK
cEIsRUFBSy9jLEtBQ0oyZCxFQUNBakIsRUFBU3VCLEVBQVVaLEVBQVVoQixFQUFVOEIsR0FDdkN6
QixFQUFTdUIsRUFBVVosRUFBVWQsRUFBUzRCLEtBT3ZDRixJQUVBbEIsRUFBSy9jLEtBQ0oyZCxF
QUNBakIsRUFBU3VCLEVBQVVaLEVBQVVoQixFQUFVOEIsR0FDdkN6QixFQUFTdUIsRUFBVVosRUFB
VWQsRUFBUzRCLEdBQ3RDekIsRUFBU3VCLEVBQVVaLEVBQVVoQixFQUM1QmdCLEVBQVNrQixlQVNQ
MVEsSUFBWXdPLElBQ2hCK0IsRUFBT3BhLE9BQ1B3QyxHQUFTbVgsS0FLUlEsR0FBV2QsRUFBU21C
LGFBQWVKLEVBQU01WCxNQUs3Q2lZLEVBQVVOLEVBQ1RFLEVBQ0EsV0FDQyxJQUNDQSxJQUNDLE1B
QVEzUyxHQUVKN0ssRUFBT21jLFNBQVMwQixlQUNwQjdkLEVBQU9tYyxTQUFTMEIsY0FBZWhULEVB
QzlCK1MsRUFBUUUsWUFNTFQsRUFBUSxHQUFLRCxJQUlacFEsSUFBWTBPLElBQ2hCNkIsRUFBT3Bh
LE9BQ1B3QyxHQUFTa0YsSUFHVjJSLEVBQVN1QixXQUFZUixFQUFNNVgsS0FTM0IwWCxHQUNKTyxL
QUtLNWQsRUFBT21jLFNBQVM2QixlQUNwQkosRUFBUUUsV0FBYTlkLEVBQU9tYyxTQUFTNkIsZ0JB
RXRDOWYsRUFBTytmLFdBQVlMLEtBS3RCLE1BQU81ZCxHQUFPbWMsU0FBVSxTQUFVUyxHQUdqQ1As
RUFBUSxHQUFLLEdBQUl6QyxJQUNoQmlDLEVBQ0MsRUFDQWUsRUFDQTVjLEVBQU9nRCxXQUFZbWEs
R0FDbEJBLEVBQ0EzQixFQUNEb0IsRUFBU2MsYUFLWHJCLEVBQVEsR0FBSyxHQUFJekMsSUFDaEJp
QyxFQUNDLEVBQ0FlLEVBQ0E1YyxFQUFPZ0QsV0FBWWlhLEdBQ2xCQSxFQUNBekIsSUFLSGEsRUFB
USxHQUFLLEdBQUl6QyxJQUNoQmlDLEVBQ0MsRUFDQWUsRUFDQTVjLEVBQU9nRCxXQUFZa2EsR0FD
bEJBLEVBQ0F4QixNQUdBTSxXQUtMQSxRQUFTLFNBQVVwWSxHQUNsQixNQUFjLE9BQVBBLEVBQWM1
RCxFQUFPdUMsT0FBUXFCLEVBQUtvWSxHQUFZQSxJQUd2RFEsSUEyREQsT0F4REF4YyxHQUFPd0Is
S0FBTTZhLEVBQVEsU0FBVXphLEVBQUdpYixHQUNqQyxHQUFJaFYsR0FBT2dWLEVBQU8sR0FDakJx
QixFQUFjckIsRUFBTyxFQUt0QmIsR0FBU2EsRUFBTyxJQUFRaFYsRUFBSytSLElBR3hCc0UsR0FD
SnJXLEVBQUsrUixJQUNKLFdBSUMwQyxFQUFRNEIsR0FLVDdCLEVBQVEsRUFBSXphLEdBQUssR0FB
SXlaLFFBR3JCZ0IsRUFBUSxHQUFLLEdBQUlmLE1BT25CelQsRUFBSytSLElBQUtpRCxFQUFPLEdB
QUk1QixNQUtyQnVCLEVBQVVLLEVBQU8sSUFBUSxXQUV4QixNQURBTCxHQUFVSyxFQUFPLEdBQU0s
UUFBVTFlLE9BQVNxZSxFQUFXclosT0FBWWhGLEtBQU0yRCxXQUNoRTNELE1BTVJxZSxFQUFVSyxF
QUFPLEdBQU0sUUFBV2hWLEVBQUswVCxXQUl4Q1MsRUFBUUEsUUFBU1EsR0FHWkosR0FDSkEsRUFB
S2pkLEtBQU1xZCxFQUFVQSxHQUlmQSxHQUlSMkIsS0FBTSxTQUFVQyxHQUNmLEdBR0NDLEdBQVl2
YyxVQUFVZixPQUd0QmEsRUFBSXljLEVBR0pDLEVBQWtCeGEsTUFBT2xDLEdBQ3pCMmMsRUFBZ0I5
ZixFQUFNVSxLQUFNMkMsV0FHNUIwYyxFQUFTeGUsRUFBT21jLFdBR2hCc0MsRUFBYSxTQUFVN2Ms
R0FDdEIsTUFBTyxVQUFVMkQsR0FDaEIrWSxFQUFpQjFjLEdBQU16RCxLQUN2Qm9nQixFQUFlM2Ms
R0FBTUUsVUFBVWYsT0FBUyxFQUFJdEMsRUFBTVUsS0FBTTJDLFdBQWN5RCxJQUM1RDhZLEdBQ1RH
LEVBQU9iLFlBQWFXLEVBQWlCQyxJQU16QyxJQUFLRixHQUFhLElBQ2pCekMsRUFBWXdDLEVBQWFJ
LEVBQU9yWCxLQUFNc1gsRUFBWTdjLElBQU1pYSxRQUFTMkMsRUFBTzFDLFFBR2hELFlBQW5CMEMs
RUFBT2xDLFNBQ1h0YyxFQUFPZ0QsV0FBWXViLEVBQWUzYyxJQUFPMmMsRUFBZTNjLEdBQUlzYSxP
QUU1RCxNQUFPc0MsR0FBT3RDLE1BS2hCLE9BQVF0YSxJQUNQZ2EsRUFBWTJDLEVBQWUzYyxHQUFL
NmMsRUFBWTdjLEdBQUs0YyxFQUFPMUMsT0FHekQsT0FBTzBDLEdBQU94QyxZQU9oQixJQUFJMEMs
R0FBYyx3REFFbEIxZSxHQUFPbWMsU0FBUzBCLGNBQWdCLFNBQVVwYSxFQUFPa2IsR0FJM0N6Z0Is
RUFBTzBnQixTQUFXMWdCLEVBQU8wZ0IsUUFBUUMsTUFBUXBiLEdBQVNpYixFQUFZN1MsS0FBTXBJ
LEVBQU1oQixPQUM5RXZFLEVBQU8wZ0IsUUFBUUMsS0FBTSw4QkFBZ0NwYixFQUFNcWIsUUFBU3Ji
LEVBQU1rYixNQUFPQSxJQU9uRjNlLEVBQU8rZSxlQUFpQixTQUFVdGIsR0FDakN2RixFQUFPK2Ys
V0FBWSxXQUNsQixLQUFNeGEsS0FRUixJQUFJdWIsR0FBWWhmLEVBQU9tYyxVQUV2Qm5jLEdBQU9H
LEdBQUc4WSxNQUFRLFNBQVU5WSxHQVkzQixNQVZBNmUsR0FDRTlDLEtBQU0vYixHQURSNmUsU0FN
UyxTQUFVdmIsR0FDakJ6RCxFQUFPK2UsZUFBZ0J0YixLQUdsQnRGLE1BR1I2QixFQUFPdUMsUUFH
TmlCLFNBQVMsRUFJVHliLFVBQVc7QUFHWEMsVUFBVyxTQUFVQyxHQUNmQSxFQUNKbmYsRUFBT2lm
LFlBRVBqZixFQUFPaVosT0FBTyxJQUtoQkEsTUFBTyxTQUFVbUcsSUFHWEEsS0FBUyxJQUFTcGYs
RUFBT2lmLFVBQVlqZixFQUFPd0QsV0FLakR4RCxFQUFPd0QsU0FBVSxFQUdaNGIsS0FBUyxLQUFV
cGYsRUFBT2lmLFVBQVksR0FLM0NELEVBQVVyQixZQUFhNWYsR0FBWWlDLFFBSXJDQSxFQUFPaVos
TUFBTWlELEtBQU84QyxFQUFVOUMsSUFHOUIsU0FBU21ELEtBQ1J0aEIsRUFBU3VoQixvQkFBcUIs
bUJBQW9CRCxHQUNsRG5oQixFQUFPb2hCLG9CQUFxQixPQUFRRCxHQUNwQ3JmLEVBQU9pWixRQU9x
QixhQUF4QmxiLEVBQVN3aEIsWUFDYSxZQUF4QnhoQixFQUFTd2hCLGFBQTZCeGhCLEVBQVMrUCxn
QkFBZ0IwUixTQUdqRXRoQixFQUFPK2YsV0FBWWplLEVBQU9pWixRQUsxQmxiLEVBQVNxUSxpQkFB
a0IsbUJBQW9CaVIsR0FHL0NuaEIsRUFBT2tRLGlCQUFrQixPQUFRaVIsR0FRbEMsSUFBSUksR0FB
UyxTQUFVcmUsRUFBT2pCLEVBQUlxTSxFQUFLakgsRUFBT21hLEVBQVdDLEVBQVVDLEdBQ2xFLEdB
QUloZSxHQUFJLEVBQ1BNLEVBQU1kLEVBQU1MLE9BQ1o4ZSxFQUFjLE1BQVByVCxDQUdSLElBQTRC
LFdBQXZCeE0sRUFBTzZELEtBQU0ySSxHQUFxQixDQUN0Q2tULEdBQVksQ0FDWixLQUFNOWQsSUFB
SzRLLEdBQ1ZpVCxFQUFRcmUsRUFBT2pCLEVBQUl5QixFQUFHNEssRUFBSzVLLElBQUssRUFBTStk
LEVBQVVDLE9BSTNDLElBQWV6YyxTQUFWb0MsSUFDWG1hLEdBQVksRUFFTjFmLEVBQU9nRCxXQUFZ
dUMsS0FDeEJxYSxHQUFNLEdBR0ZDLElBR0NELEdBQ0p6ZixFQUFHaEIsS0FBTWlDLEVBQU9tRSxH
QUNoQnBGLEVBQUssT0FJTDBmLEVBQU8xZixFQUNQQSxFQUFLLFNBQVV3QixFQUFNNkssRUFBS2pI
LEdBQ3pCLE1BQU9zYSxHQUFLMWdCLEtBQU1hLEVBQVEyQixHQUFRNEQsTUFLaENwRixHQUNKLEtB
QVF5QixFQUFJTSxFQUFLTixJQUNoQnpCLEVBQ0NpQixFQUFPUSxHQUFLNEssRUFBS29ULEVBQ2pC
cmEsRUFDQUEsRUFBTXBHLEtBQU1pQyxFQUFPUSxHQUFLQSxFQUFHekIsRUFBSWlCLEVBQU9RLEdB
QUs0SyxJQU0vQyxPQUFLa1QsR0FDR3RlLEVBSUh5ZSxFQUNHMWYsRUFBR2hCLEtBQU1pQyxHQUdW
YyxFQUFNL0IsRUFBSWlCLEVBQU8sR0FBS29MLEdBQVFtVCxHQUVsQ0csRUFBYSxTQUFVQyxHQVEx
QixNQUEwQixLQUFuQkEsRUFBTW5WLFVBQXFDLElBQW5CbVYsRUFBTW5WLFlBQXNCbVYsRUFBTW5W
LFNBTWxFLFNBQVNvVixLQUNSN2hCLEtBQUtpRixRQUFVcEQsRUFBT29ELFFBQVU0YyxFQUFLQyxN
QUd0Q0QsRUFBS0MsSUFBTSxFQUVYRCxFQUFLcGYsV0FFSjJMLE1BQU8sU0FBVXdULEdBR2hCLEdB
QUl4YSxHQUFRd2EsRUFBTzVoQixLQUFLaUYsUUE0QnhCLE9BekJNbUMsS0FDTEEsS0FLS3VhLEVB
QVlDLEtBSVhBLEVBQU1uVixTQUNWbVYsRUFBTzVoQixLQUFLaUYsU0FBWW1DLEVBTXhCaEgsT0FB
TzJoQixlQUFnQkgsRUFBTzVoQixLQUFLaUYsU0FDbENtQyxNQUFPQSxFQUNQNGEsY0FBYyxNQU1Y
NWEsR0FFUjZhLElBQUssU0FBVUwsRUFBT00sRUFBTTlhLEdBQzNCLEdBQUkrYSxHQUNIL1QsRUFB
UXBPLEtBQUtvTyxNQUFPd1QsRUFJckIsSUFBcUIsZ0JBQVRNLEdBQ1g5VCxFQUFPdk0sRUFBT3VF
LFVBQVc4YixJQUFXOWEsTUFNcEMsS0FBTSthLElBQVFELEdBQ2I5VCxFQUFPdk0sRUFBT3VFLFVB
QVcrYixJQUFXRCxFQUFNQyxFQUc1QyxPQUFPL1QsSUFFUnRMLElBQUssU0FBVThlLEVBQU92VCxH
QUNyQixNQUFlckosVUFBUnFKLEVBQ05yTyxLQUFLb08sTUFBT3dULEdBR1pBLEVBQU81aEIsS0FB
S2lGLFVBQWEyYyxFQUFPNWhCLEtBQUtpRixTQUFXcEQsRUFBT3VFLFVBQVdpSSxLQUVwRWlULE9B
QVEsU0FBVU0sRUFBT3ZULEVBQUtqSCxHQWE3QixNQUFhcEMsVUFBUnFKLEdBQ0NBLEdBQXNCLGdC
QUFSQSxJQUFnQ3JKLFNBQVZvQyxFQUVsQ3BILEtBQUs4QyxJQUFLOGUsRUFBT3ZULElBU3pCck8s
S0FBS2lpQixJQUFLTCxFQUFPdlQsRUFBS2pILEdBSUxwQyxTQUFWb0MsRUFBc0JBLEVBQVFpSCxJ
QUV0QzRPLE9BQVEsU0FBVTJFLEVBQU92VCxHQUN4QixHQUFJNUssR0FDSDJLLEVBQVF3VCxFQUFP
NWhCLEtBQUtpRixRQUVyQixJQUFlRCxTQUFWb0osRUFBTCxDQUlBLEdBQWFwSixTQUFScUosRUFB
b0IsQ0FHbkJ4TSxFQUFPa0QsUUFBU3NKLEdBSXBCQSxFQUFNQSxFQUFJOUssSUFBSzFCLEVBQU91
RSxZQUV0QmlJLEVBQU14TSxFQUFPdUUsVUFBV2lJLEdBSXhCQSxFQUFNQSxJQUFPRCxJQUNWQyxH
QUNBQSxFQUFJdEIsTUFBT29QLFFBR2YxWSxFQUFJNEssRUFBSXpMLE1BRVIsT0FBUWEsVUFDQTJL
LEdBQU9DLEVBQUs1SyxLQUtSdUIsU0FBUnFKLEdBQXFCeE0sRUFBT3FFLGNBQWVrSSxNQU0xQ3dU
LEVBQU1uVixTQUNWbVYsRUFBTzVoQixLQUFLaUYsU0FBWUQsYUFFakI0YyxHQUFPNWhCLEtBQUtp
RixZQUl0Qm1kLFFBQVMsU0FBVVIsR0FDbEIsR0FBSXhULEdBQVF3VCxFQUFPNWhCLEtBQUtpRixR
QUN4QixPQUFpQkQsVUFBVm9KLElBQXdCdk0sRUFBT3FFLGNBQWVrSSxJQUd2RCxJQUFJaVUsR0FB
VyxHQUFJUixHQUVmUyxFQUFXLEdBQUlULEdBY2ZVLEVBQVMsZ0NBQ1pDLEVBQWEsUUFFZCxTQUFT
QyxHQUFTUCxHQUNqQixNQUFjLFNBQVRBLEdBSVMsVUFBVEEsSUFJUyxTQUFUQSxFQUNHLEtBSUhB
LEtBQVVBLEVBQU8sSUFDYkEsRUFHSkssRUFBTzdVLEtBQU13VSxHQUNWUSxLQUFLQyxNQUFPVCxH
QUdiQSxHQUdSLFFBQVNVLEdBQVVwZixFQUFNNkssRUFBSzZULEdBQzdCLEdBQUk1ZCxFQUlKLElB
QWNVLFNBQVRrZCxHQUF3QyxJQUFsQjFlLEVBQUtpSixTQUkvQixHQUhBbkksRUFBTyxRQUFVK0os
RUFBSWpKLFFBQVNvZCxFQUFZLE9BQVFqYyxjQUNsRDJiLEVBQU8xZSxFQUFLbUssYUFBY3JKLEdB
RUwsZ0JBQVQ0ZCxHQUFvQixDQUMvQixJQUNDQSxFQUFPTyxFQUFTUCxHQUNmLE1BQVF4VixJQUdW
NFYsRUFBU0wsSUFBS3plLEVBQU02SyxFQUFLNlQsT0FFekJBLEdBQU9sZCxNQUdULE9BQU9rZCxH
QUdScmdCLEVBQU91QyxRQUNOZ2UsUUFBUyxTQUFVNWUsR0FDbEIsTUFBTzhlLEdBQVNGLFFBQVM1
ZSxJQUFVNmUsRUFBU0QsUUFBUzVlLElBR3REMGUsS0FBTSxTQUFVMWUsRUFBTWMsRUFBTTRkLEdB
QzNCLE1BQU9JLEdBQVNoQixPQUFROWQsRUFBTWMsRUFBTTRkLElBR3JDVyxXQUFZLFNBQVVyZixF
QUFNYyxHQUMzQmdlLEVBQVNyRixPQUFRelosRUFBTWMsSUFLeEJ3ZSxNQUFPLFNBQVV0ZixFQUFN
YyxFQUFNNGQsR0FDNUIsTUFBT0csR0FBU2YsT0FBUTlkLEVBQU1jLEVBQU00ZCxJQUdyQ2EsWUFB
YSxTQUFVdmYsRUFBTWMsR0FDNUIrZCxFQUFTcEYsT0FBUXpaLEVBQU1jLE1BSXpCekMsRUFBT0cs
R0FBR29DLFFBQ1Q4ZCxLQUFNLFNBQVU3VCxFQUFLakgsR0FDcEIsR0FBSTNELEdBQUdhLEVBQU00
ZCxFQUNaMWUsRUFBT3hELEtBQU0sR0FDYjRPLEVBQVFwTCxHQUFRQSxFQUFLc0csVUFHdEIsSUFB
YTlFLFNBQVJxSixFQUFvQixDQUN4QixHQUFLck8sS0FBSzRDLFNBQ1RzZixFQUFPSSxFQUFTeGYs
SUFBS1UsR0FFRSxJQUFsQkEsRUFBS2lKLFdBQW1CNFYsRUFBU3ZmLElBQUtVLEVBQU0saUJBQW1C
LENBQ25FQyxFQUFJbUwsRUFBTWhNLE1BQ1YsT0FBUWEsSUFJRm1MLEVBQU9uTCxLQUNYYSxFQUFP
c0ssRUFBT25MLEdBQUlhLEtBQ2UsSUFBNUJBLEVBQUs3RCxRQUFTLFdBQ2xCNkQsRUFBT3pDLEVB
QU91RSxVQUFXOUIsRUFBS2hFLE1BQU8sSUFDckNzaUIsRUFBVXBmLEVBQU1jLEVBQU00ZCxFQUFN
NWQsS0FJL0IrZCxHQUFTSixJQUFLemUsRUFBTSxnQkFBZ0IsR0FJdEMsTUFBTzBlLEdBSVIsTUFB
b0IsZ0JBQVI3VCxHQUNKck8sS0FBS3FELEtBQU0sV0FDakJpZixFQUFTTCxJQUFLamlCLEtBQU1x
TyxLQUlmaVQsRUFBUXRoQixLQUFNLFNBQVVvSCxHQUM5QixHQUFJOGEsRUFPSixJQUFLMWUsR0FB
a0J3QixTQUFWb0MsRUFBYixDQUtDLEdBREE4YSxFQUFPSSxFQUFTeGYsSUFBS1UsRUFBTTZLLEdB
Q2JySixTQUFUa2QsRUFDSixNQUFPQSxFQU1SLElBREFBLEVBQU9VLEVBQVVwZixFQUFNNkssR0FD
VHJKLFNBQVRrZCxFQUNKLE1BQU9BLE9BUVRsaUIsTUFBS3FELEtBQU0sV0FHVmlmLEVBQVNMLElB
QUtqaUIsS0FBTXFPLEVBQUtqSCxNQUV4QixLQUFNQSxFQUFPekQsVUFBVWYsT0FBUyxFQUFHLE1B
QU0sSUFHN0NpZ0IsV0FBWSxTQUFVeFUsR0FDckIsTUFBT3JPLE1BQUtxRCxLQUFNLFdBQ2pCaWYs
RUFBU3JGLE9BQVFqZCxLQUFNcU8sUUFNMUJ4TSxFQUFPdUMsUUFDTndZLE1BQU8sU0FBVXBaLEVB
QU1rQyxFQUFNd2MsR0FDNUIsR0FBSXRGLEVBRUosSUFBS3BaLEVBWUosTUFYQWtDLElBQVNBLEdB
QVEsTUFBUyxRQUMxQmtYLEVBQVF5RixFQUFTdmYsSUFBS1UsRUFBTWtDLEdBR3ZCd2MsS0FDRXRG
LEdBQVMvYSxFQUFPa0QsUUFBU21kLEdBQzlCdEYsRUFBUXlGLEVBQVNmLE9BQVE5ZCxFQUFNa0Ms
RUFBTTdELEVBQU82RSxVQUFXd2IsSUFFdkR0RixFQUFNcGMsS0FBTTBoQixJQUdQdEYsT0FJVG9H
LFFBQVMsU0FBVXhmLEVBQU1rQyxHQUN4QkEsRUFBT0EsR0FBUSxJQUVmLElBQUlrWCxHQUFRL2Es
RUFBTythLE1BQU9wWixFQUFNa0MsR0FDL0J1ZCxFQUFjckcsRUFBTWhhLE9BQ3BCWixFQUFLNGEs
RUFBTXJPLFFBQ1gyVSxFQUFRcmhCLEVBQU9zaEIsWUFBYTNmLEVBQU1rQyxHQUNsQzZHLEVBQU8s
V0FDTjFLLEVBQU9taEIsUUFBU3hmLEVBQU1rQyxHQUlaLGdCQUFQMUQsSUFDSkEsRUFBSzRhLEVB
QU1yTyxRQUNYMFUsS0FHSWpoQixJQUlVLE9BQVQwRCxHQUNKa1gsRUFBTWhMLFFBQVMsb0JBSVRz
UixHQUFNRSxLQUNicGhCLEVBQUdoQixLQUFNd0MsRUFBTStJLEVBQU0yVyxLQUdoQkQsR0FBZUMs
R0FDcEJBLEVBQU1wTixNQUFNZ0gsUUFLZHFHLFlBQWEsU0FBVTNmLEVBQU1rQyxHQUM1QixHQUFJ
MkksR0FBTTNJLEVBQU8sWUFDakIsT0FBTzJjLEdBQVN2ZixJQUFLVSxFQUFNNkssSUFBU2dVLEVB
QVNmLE9BQVE5ZCxFQUFNNkssR0FDMUR5SCxNQUFPalUsRUFBTzBhLFVBQVcsZUFBZ0JkLElBQUss
V0FDN0M0RyxFQUFTcEYsT0FBUXpaLEdBQVFrQyxFQUFPLFFBQVMySSxXQU03Q3hNLEVBQU9HLEdB
QUdvQyxRQUNUd1ksTUFBTyxTQUFVbFgsRUFBTXdjLEdBQ3RCLEdBQUltQixHQUFTLENBUWIsT0FO
cUIsZ0JBQVQzZCxLQUNYd2MsRUFBT3hjLEVBQ1BBLEVBQU8sS0FDUDJkLEtBR0kxZixVQUFVZixP
QUFTeWdCLEVBQ2hCeGhCLEVBQU8rYSxNQUFPNWMsS0FBTSxHQUFLMEYsR0FHakJWLFNBQVRrZCxF
QUNObGlCLEtBQ0FBLEtBQUtxRCxLQUFNLFdBQ1YsR0FBSXVaLEdBQVEvYSxFQUFPK2EsTUFBTzVj
LEtBQU0wRixFQUFNd2MsRUFHdENyZ0IsR0FBT3NoQixZQUFhbmpCLEtBQU0wRixHQUVaLE9BQVRB
LEdBQWdDLGVBQWZrWCxFQUFPLElBQzVCL2EsRUFBT21oQixRQUFTaGpCLEtBQU0wRixNQUkxQnNk
LFFBQVMsU0FBVXRkLEdBQ2xCLE1BQU8xRixNQUFLcUQsS0FBTSxXQUNqQnhCLEVBQU9taEIsUUFB
U2hqQixLQUFNMEYsTUFHeEI0ZCxXQUFZLFNBQVU1ZCxHQUNyQixNQUFPMUYsTUFBSzRjLE1BQU9s
WCxHQUFRLFVBSzVCbVksUUFBUyxTQUFVblksRUFBTUQsR0FDeEIsR0FBSThCLEdBQ0hnYyxFQUFR
LEVBQ1JDLEVBQVEzaEIsRUFBT21jLFdBQ2ZsTSxFQUFXOVIsS0FDWHlELEVBQUl6RCxLQUFLNEMs
T0FDVDhhLEVBQVUsYUFDQzZGLEdBQ1RDLEVBQU1oRSxZQUFhMU4sR0FBWUEsSUFJYixpQkFBVHBN
LEtBQ1hELEVBQU1DLEVBQ05BLEVBQU9WLFFBRVJVLEVBQU9BLEdBQVEsSUFFZixPQUFRakMsSUFD
UDhELEVBQU04YSxFQUFTdmYsSUFBS2dQLEVBQVVyTyxHQUFLaUMsRUFBTyxjQUNyQzZCLEdBQU9B
LEVBQUl1TyxRQUNmeU4sSUFDQWhjLEVBQUl1TyxNQUFNMkYsSUFBS2lDLEdBSWpCLE9BREFBLEtB
Q084RixFQUFNM0YsUUFBU3BZLEtBR3hCLElBQUlnZSxHQUFPLHNDQUEwQ0MsT0FFakRDLEdBQVUs
R0FBSTFaLFFBQVEsaUJBQW1Cd1osRUFBTyxjQUFlLEtBRy9ERyxJQUFjLE1BQU8sUUFBUyxTQUFV
LFFBRXhDQyxHQUFxQixTQUFVcmdCLEVBQU1rTCxHQU92QyxNQUhBbEwsR0FBT2tMLEdBQU1sTCxF
QUdpQixTQUF2QkEsRUFBS3NnQixNQUFNQyxTQUNNLEtBQXZCdmdCLEVBQUtzZ0IsTUFBTUMsU0FN
WGxpQixFQUFPZ0gsU0FBVXJGLEVBQUsySixjQUFlM0osSUFFSCxTQUFsQzNCLEVBQU9taUIsSUFB
S3hnQixFQUFNLFlBR2pCeWdCLEdBQU8sU0FBVXpnQixFQUFNYSxFQUFTZixFQUFVa0UsR0FDN0Ms
R0FBSXRFLEdBQUtvQixFQUNSNGYsSUFHRCxLQUFNNWYsSUFBUUQsR0FDYjZmLEVBQUs1ZixHQUFT
ZCxFQUFLc2dCLE1BQU94ZixHQUMxQmQsRUFBS3NnQixNQUFPeGYsR0FBU0QsRUFBU0MsRUFHL0Jw
QixHQUFNSSxFQUFTSSxNQUFPRixFQUFNZ0UsTUFHNUIsS0FBTWxELElBQVFELEdBQ2JiLEVBQUtz
Z0IsTUFBT3hmLEdBQVM0ZixFQUFLNWYsRUFHM0IsT0FBT3BCLEdBTVIsU0FBU2loQixJQUFXM2dC
LEVBQU0yZSxFQUFNaUMsRUFBWUMsR0FDM0MsR0FBSUMsR0FDSEMsRUFBUSxFQUNSQyxFQUFnQixH
QUNoQkMsRUFBZUosRUFDZCxXQUNDLE1BQU9BLEdBQU1yVixPQUVkLFdBQ0MsTUFBT25OLEdBQU9t
aUIsSUFBS3hnQixFQUFNMmUsRUFBTSxLQUVqQ3VDLEVBQVVELElBQ1ZFLEVBQU9QLEdBQWNBLEVB
QVksS0FBU3ZpQixFQUFPK2lCLFVBQVd6QyxHQUFTLEdBQUssTUFHMUUwQyxHQUFrQmhqQixFQUFP
K2lCLFVBQVd6QyxJQUFtQixPQUFUd0MsSUFBa0JELElBQy9EZixHQUFRdlcsS0FBTXZMLEVBQU9t
aUIsSUFBS3hnQixFQUFNMmUsR0FFbEMsSUFBSzBDLEdBQWlCQSxFQUFlLEtBQVFGLEVBQU8sQ0FH
bkRBLEVBQU9BLEdBQVFFLEVBQWUsR0FHOUJULEVBQWFBLE1BR2JTLEdBQWlCSCxHQUFXLENBRTVC
LEdBSUNILEdBQVFBLEdBQVMsS0FHakJNLEdBQWdDTixFQUNoQzFpQixFQUFPaWlCLE1BQU90Z0Is
RUFBTTJlLEVBQU0wQyxFQUFnQkYsU0FLMUNKLEtBQVlBLEVBQVFFLElBQWlCQyxJQUF1QixJQUFW
SCxLQUFpQkMsR0FpQnJFLE1BYktKLEtBQ0pTLEdBQWlCQSxJQUFrQkgsR0FBVyxFQUc5Q0osRUFB
V0YsRUFBWSxHQUN0QlMsR0FBa0JULEVBQVksR0FBTSxHQUFNQSxFQUFZLElBQ3JEQSxFQUFZLEdB
Q1RDLElBQ0pBLEVBQU1NLEtBQU9BLEVBQ2JOLEVBQU1uUSxNQUFRMlEsRUFDZFIsRUFBTXBnQixJ
QUFNcWdCLElBR1BBLEVBSVIsR0FBSVEsTUFFSixTQUFTQyxJQUFtQnZoQixHQUMzQixHQUFJNFUs
R0FDSGhYLEVBQU1vQyxFQUFLMkosY0FDWDdHLEVBQVc5QyxFQUFLOEMsU0FDaEJ5ZCxFQUFVZSxH
QUFtQnhlLEVBRTlCLE9BQUt5ZCxHQUNHQSxHQUdSM0wsRUFBT2hYLEVBQUk0akIsS0FBS3ZqQixZ
QUFhTCxFQUFJRSxjQUFlZ0YsSUFDaER5ZCxFQUFVbGlCLEVBQU9taUIsSUFBSzVMLEVBQU0sV0FF
NUJBLEVBQUsxVyxXQUFXQyxZQUFheVcsR0FFWixTQUFaMkwsSUFDSkEsRUFBVSxTQUVYZSxHQUFt
QnhlLEdBQWF5ZCxFQUV6QkEsR0FHUixRQUFTa0IsSUFBVW5ULEVBQVVvVCxHQU81QixJQU5BLEdB
QUluQixHQUFTdmdCLEVBQ1oyaEIsS0FDQTVKLEVBQVEsRUFDUjNZLEVBQVNrUCxFQUFTbFAsT0FH
WDJZLEVBQVEzWSxFQUFRMlksSUFDdkIvWCxFQUFPc08sRUFBVXlKLEdBQ1gvWCxFQUFLc2dCLFFB
SVhDLEVBQVV2Z0IsRUFBS3NnQixNQUFNQyxRQUNoQm1CLEdBS2EsU0FBWm5CLElBQ0pvQixFQUFR
NUosR0FBVThHLEVBQVN2ZixJQUFLVSxFQUFNLFlBQWUsS0FDL0MyaEIsRUFBUTVKLEtBQ2IvWCxF
QUFLc2dCLE1BQU1DLFFBQVUsS0FHSyxLQUF2QnZnQixFQUFLc2dCLE1BQU1DLFNBQWtCRixHQUFv
QnJnQixLQUNyRDJoQixFQUFRNUosR0FBVXdKLEdBQW1CdmhCLEtBR3JCLFNBQVp1Z0IsSUFDSm9C
LEVBQVE1SixHQUFVLE9BR2xCOEcsRUFBU0osSUFBS3plLEVBQU0sVUFBV3VnQixJQU1sQyxLQUFN
eEksRUFBUSxFQUFHQSxFQUFRM1ksRUFBUTJZLElBQ1IsTUFBbkI0SixFQUFRNUosS0FDWnpKLEVB
QVV5SixHQUFRdUksTUFBTUMsUUFBVW9CLEVBQVE1SixHQUk1QyxPQUFPekosR0FHUmpRLEVBQU9H
LEdBQUdvQyxRQUNUOGdCLEtBQU0sV0FDTCxNQUFPRCxJQUFVamxCLE1BQU0sSUFFeEJvbEIsS0FB
TSxXQUNMLE1BQU9ILElBQVVqbEIsT0FFbEJxbEIsT0FBUSxTQUFVbEgsR0FDakIsTUFBc0IsaUJB
QVZBLEdBQ0pBLEVBQVFuZSxLQUFLa2xCLE9BQVNsbEIsS0FBS29sQixPQUc1QnBsQixLQUFLcUQs
S0FBTSxXQUNad2dCLEdBQW9CN2pCLE1BQ3hCNkIsRUFBUTdCLE1BQU9rbEIsT0FFZnJqQixFQUFR
N0IsTUFBT29sQixXQUtuQixJQUFJRSxJQUFpQix3QkFFakJDLEdBQVcsaUNBRVhDLEdBQWMsNEJB
S2RDLElBR0hDLFFBQVUsRUFBRywrQkFBZ0MsYUFLN0NDLE9BQVMsRUFBRyxVQUFXLFlBQ3ZCQyxL
QUFPLEVBQUcsb0JBQXFCLHVCQUMvQkMsSUFBTSxFQUFHLGlCQUFrQixvQkFDM0JDLElBQU0sRUFB
RyxxQkFBc0IseUJBRS9CQyxVQUFZLEVBQUcsR0FBSSxJQUlwQk4sSUFBUU8sU0FBV1AsR0FBUUMs
T0FFM0JELEdBQVFRLE1BQVFSLEdBQVFTLE1BQVFULEdBQVFVLFNBQVdWLEdBQVFXLFFBQVVYLEdB
QVFFLE1BQzdFRixHQUFRWSxHQUFLWixHQUFRSyxFQUdyQixTQUFTUSxJQUFRdmtCLEVBQVM0TyxH
QUl6QixHQUFJek4sRUFZSixPQVRDQSxHQUQ0QyxtQkFBakNuQixHQUFRd0wscUJBQ2J4TCxFQUFR
d0wscUJBQXNCb0QsR0FBTyxLQUVJLG1CQUE3QjVPLEdBQVFpTSxpQkFDcEJqTSxFQUFRaU0saUJB
QWtCMkMsR0FBTyxRQU0zQjNMLFNBQVIyTCxHQUFxQkEsR0FBTzlPLEVBQU95RSxTQUFVdkUsRUFB
UzRPLEdBQ25EOU8sRUFBT3NCLE9BQVNwQixHQUFXbUIsR0FHNUJBLEVBS1IsUUFBU3FqQixJQUFl
dGpCLEVBQU91akIsR0FJOUIsSUFIQSxHQUFJL2lCLEdBQUksRUFDUDRYLEVBQUlwWSxFQUFNTCxP
QUVIYSxFQUFJNFgsRUFBRzVYLElBQ2Q0ZSxFQUFTSixJQUNSaGYsRUFBT1EsR0FDUCxjQUNDK2lC
LEdBQWVuRSxFQUFTdmYsSUFBSzBqQixFQUFhL2lCLEdBQUssZUFNbkQsR0FBSWdqQixJQUFRLFdB
RVosU0FBU0MsSUFBZXpqQixFQUFPbEIsRUFBUzRrQixFQUFTQyxFQUFXQyxHQU8zRCxJQU5BLEdB
QUlyakIsR0FBTStELEVBQUtvSixFQUFLbVcsRUFBTWplLEVBQVU3RSxFQUNuQytpQixFQUFXaGxC
LEVBQVFpbEIseUJBQ25CQyxLQUNBeGpCLEVBQUksRUFDSjRYLEVBQUlwWSxFQUFNTCxPQUVIYSxF
QUFJNFgsRUFBRzVYLElBR2QsR0FGQUQsRUFBT1AsRUFBT1EsR0FFVEQsR0FBaUIsSUFBVEEsRUFH
WixHQUE2QixXQUF4QjNCLEVBQU82RCxLQUFNbEMsR0FJakIzQixFQUFPc0IsTUFBTzhqQixFQUFP
empCLEVBQUtpSixVQUFhakosR0FBU0EsT0FHMUMsSUFBTWlqQixHQUFNL1ksS0FBTWxLLEdBSWxC
LENBQ04rRCxFQUFNQSxHQUFPd2YsRUFBU3RsQixZQUFhTSxFQUFRVCxjQUFlLFFBRzFEcVAsR0FB
UTRVLEdBQVNuWSxLQUFNNUosS0FBWSxHQUFJLEtBQVEsR0FBSStDLGNBQ25EdWdCLEVBQU9yQixH
QUFTOVUsSUFBUzhVLEdBQVFNLFNBQ2pDeGUsRUFBSXFKLFVBQVlrVyxFQUFNLEdBQU1qbEIsRUFB
T3FsQixjQUFlMWpCLEdBQVNzakIsRUFBTSxHQUdqRTlpQixFQUFJOGlCLEVBQU0sRUFDVixPQUFR
OWlCLElBQ1B1RCxFQUFNQSxFQUFJOE0sU0FLWHhTLEdBQU9zQixNQUFPOGpCLEVBQU8xZixFQUFJ
aUYsWUFHekJqRixFQUFNd2YsRUFBU3RVLFdBR2ZsTCxFQUFJaUwsWUFBYyxPQXpCbEJ5VSxHQUFN
em1CLEtBQU11QixFQUFRb2xCLGVBQWdCM2pCLEdBK0J2Q3VqQixHQUFTdlUsWUFBYyxHQUV2Qi9P
LEVBQUksQ0FDSixPQUFVRCxFQUFPeWpCLEVBQU94akIsS0FHdkIsR0FBS21qQixHQUFhL2tCLEVB
QU8rRSxRQUFTcEQsRUFBTW9qQixNQUNsQ0MsR0FDSkEsRUFBUXJtQixLQUFNZ0QsT0FnQmhCLElB
WEFxRixFQUFXaEgsRUFBT2dILFNBQVVyRixFQUFLMkosY0FBZTNKLEdBR2hEK0QsRUFBTStlLEdB
QVFTLEVBQVN0bEIsWUFBYStCLEdBQVEsVUFHdkNxRixHQUNKMGQsR0FBZWhmLEdBSVhvZixFQUFV
LENBQ2QzaUIsRUFBSSxDQUNKLE9BQVVSLEVBQU8rRCxFQUFLdkQsS0FDaEJ3aEIsR0FBWTlYLEtB
QU1sSyxFQUFLa0MsTUFBUSxLQUNuQ2loQixFQUFRbm1CLEtBQU1nRCxHQU1sQixNQUFPdWpCLElB
SVIsV0FDQyxHQUFJQSxHQUFXbm5CLEVBQVNvbkIseUJBQ3ZCSSxFQUFNTCxFQUFTdGxCLFlBQWE3
QixFQUFTMEIsY0FBZSxRQUNwRHVQLEVBQVFqUixFQUFTMEIsY0FBZSxRQU1qQ3VQLEdBQU1qRCxh
QUFjLE9BQVEsU0FDNUJpRCxFQUFNakQsYUFBYyxVQUFXLFdBQy9CaUQsRUFBTWpELGFBQWMsT0FB
USxLQUU1QndaLEVBQUkzbEIsWUFBYW9QLEdBSWpCNVAsRUFBUW9tQixXQUFhRCxFQUFJRSxXQUFX
LEdBQU9BLFdBQVcsR0FBT2pULFVBQVVzQixRQUl2RXlSLEVBQUl4VyxVQUFZLHlCQUNoQjNQLEVB
QVFzbUIsaUJBQW1CSCxFQUFJRSxXQUFXLEdBQU9qVCxVQUFVd0YsZUFFNUQsSUFBSWxLLElBQWtC
L1AsRUFBUytQLGdCQUs5QjZYLEdBQVksT0FDWkMsR0FBYyxpREFDZEMsR0FBaUIscUJBRWxCLFNB
QVNDLE1BQ1IsT0FBTyxFQUdSLFFBQVNDLE1BQ1IsT0FBTyxFQUtSLFFBQVNDLE1BQ1IsSUFDQyxN
QUFPam9CLEdBQVMwVixjQUNmLE1BQVF3UyxLQUdYLFFBQVNDLElBQUl2a0IsRUFBTXdrQixFQUFP
bG1CLEVBQVVvZ0IsRUFBTWxnQixFQUFJaW1CLEdBQzdDLEdBQUlDLEdBQVF4aUIsQ0FHWixJQUFz
QixnQkFBVnNpQixHQUFxQixDQUdQLGdCQUFibG1CLEtBR1hvZ0IsRUFBT0EsR0FBUXBnQixFQUNm
QSxFQUFXa0QsT0FFWixLQUFNVSxJQUFRc2lCLEdBQ2JELEdBQUl2a0IsRUFBTWtDLEVBQU01RCxF
QUFVb2dCLEVBQU04RixFQUFPdGlCLEdBQVF1aUIsRUFFaEQsT0FBT3prQixHQXNCUixHQW5CYSxN
QUFSMGUsR0FBc0IsTUFBTmxnQixHQUdwQkEsRUFBS0YsRUFDTG9nQixFQUFPcGdCLEVBQVdrRCxR
QUNELE1BQU5oRCxJQUNjLGdCQUFiRixJQUdYRSxFQUFLa2dCLEVBQ0xBLEVBQU9sZCxTQUlQaEQs
RUFBS2tnQixFQUNMQSxFQUFPcGdCLEVBQ1BBLEVBQVdrRCxTQUdSaEQsS0FBTyxFQUNYQSxFQUFL
NGxCLE9BQ0MsS0FBTTVsQixFQUNaLE1BQU93QixFQWVSLE9BWmEsS0FBUnlrQixJQUNKQyxFQUFT
bG1CLEVBQ1RBLEVBQUssU0FBVW1tQixHQUlkLE1BREF0bUIsS0FBU3VtQixJQUFLRCxHQUNQRCxF
QUFPeGtCLE1BQU8xRCxLQUFNMkQsWUFJNUIzQixFQUFHcUYsS0FBTzZnQixFQUFPN2dCLE9BQVU2
Z0IsRUFBTzdnQixLQUFPeEYsRUFBT3dGLFNBRTFDN0QsRUFBS0gsS0FBTSxXQUNqQnhCLEVBQU9z
bUIsTUFBTTFNLElBQUt6YixLQUFNZ29CLEVBQU9obUIsRUFBSWtnQixFQUFNcGdCLEtBUTNDRCxF
QUFPc21CLE9BRU4zb0IsVUFFQWljLElBQUssU0FBVWpZLEVBQU13a0IsRUFBT25aLEVBQVNxVCxF
QUFNcGdCLEdBRTFDLEdBQUl1bUIsR0FBYUMsRUFBYS9nQixFQUM3QmdoQixFQUFRQyxFQUFHQyxF
QUNYdEosRUFBU3VKLEVBQVVoakIsRUFBTWlqQixFQUFZQyxFQUNyQ0MsRUFBV3hHLEVBQVN2ZixJ
QUFLVSxFQUcxQixJQUFNcWxCLEVBQU4sQ0FLS2hhLEVBQVFBLFVBQ1p3WixFQUFjeFosRUFDZEEs
RUFBVXdaLEVBQVl4WixRQUN0Qi9NLEVBQVd1bUIsRUFBWXZtQixVQUtuQkEsR0FDSkQsRUFBTzRP
LEtBQUtLLGdCQUFpQm5CLEdBQWlCN04sR0FJekMrTSxFQUFReEgsT0FDYndILEVBQVF4SCxLQUFP
eEYsRUFBT3dGLFNBSWZraEIsRUFBU00sRUFBU04sVUFDekJBLEVBQVNNLEVBQVNOLFlBRVhELEVB
QWNPLEVBQVNDLFVBQzlCUixFQUFjTyxFQUFTQyxPQUFTLFNBQVVwYyxHQUl6QyxNQUF5QixtQkFB
WDdLLElBQTBCQSxFQUFPc21CLE1BQU1ZLFlBQWNyYyxFQUFFaEgsS0FDcEU3RCxFQUFPc21CLE1B
QU1hLFNBQVN0bEIsTUFBT0YsRUFBTUcsV0FBY3FCLFNBS3BEZ2pCLEdBQVVBLEdBQVMsSUFBS2pi
LE1BQU9vUCxLQUFxQixJQUNwRHFNLEVBQUlSLEVBQU1wbEIsTUFDVixPQUFRNGxCLElBQ1BqaEIs
RUFBTW1nQixHQUFldGEsS0FBTTRhLEVBQU9RLFFBQ2xDOWlCLEVBQU9rakIsRUFBV3JoQixFQUFL
LEdBQ3ZCb2hCLEdBQWVwaEIsRUFBSyxJQUFPLElBQUtNLE1BQU8sS0FBTTNELE9BR3ZDd0IsSUFL
TnlaLEVBQVV0ZCxFQUFPc21CLE1BQU1oSixRQUFTelosT0FHaENBLEdBQVM1RCxFQUFXcWQsRUFB
UThKLGFBQWU5SixFQUFRK0osV0FBY3hqQixFQUdqRXlaLEVBQVV0ZCxFQUFPc21CLE1BQU1oSixR
QUFTelosT0FHaEMraUIsRUFBWTVtQixFQUFPdUMsUUFDbEJzQixLQUFNQSxFQUNOa2pCLFNBQVVB
LEVBQ1YxRyxLQUFNQSxFQUNOclQsUUFBU0EsRUFDVHhILEtBQU13SCxFQUFReEgsS0FDZHZGLFNB
QVVBLEVBQ1ZpSixhQUFjakosR0FBWUQsRUFBT2dRLEtBQUs5RSxNQUFNaEMsYUFBYTJDLEtBQU01
TCxHQUMvRHFuQixVQUFXUixFQUFXN2EsS0FBTSxNQUMxQnVhLElBR0tLLEVBQVdILEVBQVE3aUIs
TUFDMUJnakIsRUFBV0gsRUFBUTdpQixNQUNuQmdqQixFQUFTVSxjQUFnQixFQUduQmpLLEVBQVFr
SyxPQUNibEssRUFBUWtLLE1BQU1yb0IsS0FBTXdDLEVBQU0wZSxFQUFNeUcsRUFBWUwsTUFBa0Is
R0FFekQ5a0IsRUFBS3lNLGtCQUNUek0sRUFBS3lNLGlCQUFrQnZLLEVBQU00aUIsSUFLM0JuSixF
QUFRMUQsTUFDWjBELEVBQVExRCxJQUFJemEsS0FBTXdDLEVBQU1pbEIsR0FFbEJBLEVBQVU1WixR
QUFReEgsT0FDdkJvaEIsRUFBVTVaLFFBQVF4SCxLQUFPd0gsRUFBUXhILE9BSzlCdkYsRUFDSjRt
QixFQUFTdmtCLE9BQVF1a0IsRUFBU1UsZ0JBQWlCLEVBQUdYLEdBRTlDQyxFQUFTbG9CLEtBQU1p
b0IsR0FJaEI1bUIsRUFBT3NtQixNQUFNM29CLE9BQVFrRyxJQUFTLEtBTWhDdVgsT0FBUSxTQUFV
elosRUFBTXdrQixFQUFPblosRUFBUy9NLEVBQVV3bkIsR0FFakQsR0FBSXRsQixHQUFHdWxCLEVB
QVdoaUIsRUFDakJnaEIsRUFBUUMsRUFBR0MsRUFDWHRKLEVBQVN1SixFQUFVaGpCLEVBQU1pakIs
RUFBWUMsRUFDckNDLEVBQVd4RyxFQUFTRCxRQUFTNWUsSUFBVTZlLEVBQVN2ZixJQUFLVSxFQUV0
RCxJQUFNcWxCLElBQWVOLEVBQVNNLEVBQVNOLFFBQXZDLENBS0FQLEdBQVVBLEdBQVMsSUFBS2pi
LE1BQU9vUCxLQUFxQixJQUNwRHFNLEVBQUlSLEVBQU1wbEIsTUFDVixPQUFRNGxCLElBTVAsR0FM
QWpoQixFQUFNbWdCLEdBQWV0YSxLQUFNNGEsRUFBT1EsUUFDbEM5aUIsRUFBT2tqQixFQUFXcmhC
LEVBQUssR0FDdkJvaEIsR0FBZXBoQixFQUFLLElBQU8sSUFBS00sTUFBTyxLQUFNM0QsT0FHdkN3
QixFQUFOLENBT0F5WixFQUFVdGQsRUFBT3NtQixNQUFNaEosUUFBU3paLE9BQ2hDQSxHQUFTNUQs
RUFBV3FkLEVBQVE4SixhQUFlOUosRUFBUStKLFdBQWN4akIsRUFDakVnakIsRUFBV0gsRUFBUTdp
QixPQUNuQjZCLEVBQU1BLEVBQUssSUFDVixHQUFJMEMsUUFBUSxVQUFZMGUsRUFBVzdhLEtBQU0s
aUJBQW9CLFdBRzlEeWIsRUFBWXZsQixFQUFJMGtCLEVBQVM5bEIsTUFDekIsT0FBUW9CLElBQ1B5
a0IsRUFBWUMsRUFBVTFrQixJQUVmc2xCLEdBQWVWLElBQWFILEVBQVVHLFVBQ3pDL1osR0FBV0Es
RUFBUXhILE9BQVNvaEIsRUFBVXBoQixNQUN0Q0UsSUFBT0EsRUFBSW1HLEtBQU0rYSxFQUFVVSxZ
QUMzQnJuQixHQUFZQSxJQUFhMm1CLEVBQVUzbUIsV0FDeEIsT0FBYkEsSUFBcUIybUIsRUFBVTNt
QixZQUNoQzRtQixFQUFTdmtCLE9BQVFILEVBQUcsR0FFZnlrQixFQUFVM21CLFVBQ2Q0bUIsRUFB
U1UsZ0JBRUxqSyxFQUFRbEMsUUFDWmtDLEVBQVFsQyxPQUFPamMsS0FBTXdDLEVBQU1pbEIsR0FP
ekJjLEtBQWNiLEVBQVM5bEIsU0FDckJ1YyxFQUFRcUssVUFDYnJLLEVBQVFxSyxTQUFTeG9CLEtB
QU13QyxFQUFNbWxCLEVBQVlFLEVBQVNDLFdBQWEsR0FFL0RqbkIsRUFBTzRuQixZQUFham1CLEVB
QU1rQyxFQUFNbWpCLEVBQVNDLGNBR25DUCxHQUFRN2lCLFFBMUNmLEtBQU1BLElBQVE2aUIsR0FD
YjFtQixFQUFPc21CLE1BQU1sTCxPQUFRelosRUFBTWtDLEVBQU9zaUIsRUFBT1EsR0FBSzNaLEVB
QVMvTSxHQUFVLEVBOEMvREQsR0FBT3FFLGNBQWVxaUIsSUFDMUJsRyxFQUFTcEYsT0FBUXpaLEVB
QU0sbUJBSXpCd2xCLFNBQVUsU0FBVVUsR0FHbkIsR0FBSXZCLEdBQVF0bUIsRUFBT3NtQixNQUFN
d0IsSUFBS0QsR0FFMUJqbUIsRUFBR08sRUFBR2QsRUFBS3dSLEVBQVMrVCxFQUFXbUIsRUFDbENw
aUIsRUFBTyxHQUFJN0IsT0FBT2hDLFVBQVVmLFFBQzVCOGxCLEdBQWFyRyxFQUFTdmYsSUFBSzlD
LEtBQU0sZUFBb0Jtb0IsRUFBTXppQixVQUMzRHlaLEVBQVV0ZCxFQUFPc21CLE1BQU1oSixRQUFT
Z0osRUFBTXppQixTQUt2QyxLQUZBOEIsRUFBTSxHQUFNMmdCLEVBRU4xa0IsRUFBSSxFQUFHQSxF
QUFJRSxVQUFVZixPQUFRYSxJQUNsQytELEVBQU0vRCxHQUFNRSxVQUFXRixFQU14QixJQUhBMGtC
LEVBQU0wQixlQUFpQjdwQixNQUdsQm1mLEVBQVEySyxhQUFlM0ssRUFBUTJLLFlBQVk5b0IsS0FB
TWhCLEtBQU1tb0IsTUFBWSxFQUF4RSxDQUtBeUIsRUFBZS9uQixFQUFPc21CLE1BQU1PLFNBQVMx
bkIsS0FBTWhCLEtBQU1tb0IsRUFBT08sR0FHeERqbEIsRUFBSSxDQUNKLFFBQVVpUixFQUFVa1Ys
RUFBY25tQixRQUFZMGtCLEVBQU00Qix1QkFBeUIsQ0FDNUU1QixFQUFNNkIsY0FBZ0J0VixFQUFR
bFIsS0FFOUJRLEVBQUksQ0FDSixRQUFVeWtCLEVBQVkvVCxFQUFRZ1UsU0FBVTFrQixRQUN0Q21r
QixFQUFNOEIsZ0NBSUQ5QixFQUFNK0IsYUFBYy9CLEVBQU0rQixXQUFXeGMsS0FBTSthLEVBQVVV
LGFBRTFEaEIsRUFBTU0sVUFBWUEsRUFDbEJOLEVBQU1qRyxLQUFPdUcsRUFBVXZHLEtBRXZCaGYs
SUFBVXJCLEVBQU9zbUIsTUFBTWhKLFFBQVNzSixFQUFVRyxlQUFtQkUsUUFDNURMLEVBQVU1WixT
QUFVbkwsTUFBT2dSLEVBQVFsUixLQUFNZ0UsR0FFN0J4QyxTQUFSOUIsSUFDR2lsQixFQUFNMVUs
T0FBU3ZRLE1BQVUsSUFDL0JpbEIsRUFBTWdDLGlCQUNOaEMsRUFBTWlDLG9CQVlYLE1BSktqTCxH
QUFRa0wsY0FDWmxMLEVBQVFrTCxhQUFhcnBCLEtBQU1oQixLQUFNbW9CLEdBRzNCQSxFQUFNMVUs
U0FHZGlWLFNBQVUsU0FBVVAsRUFBT08sR0FDMUIsR0FBSWpsQixHQUFHZ2xCLEVBQVd0VyxFQUFL
bVksRUFBaUJDLEVBQ3ZDWCxLQUNBUixFQUFnQlYsRUFBU1UsY0FDekJwYSxFQUFNbVosRUFBTXhq
QixNQUdiLElBQUt5a0IsR0FJSnBhLEVBQUl2QyxZQU9jLFVBQWYwYixFQUFNemlCLE1BQW9CeWlC
LEVBQU1uUyxRQUFVLEdBRTdDLEtBQVFoSCxJQUFRaFAsS0FBTWdQLEVBQU1BLEVBQUl0TixZQUFj
MUIsS0FJN0MsR0FBc0IsSUFBakJnUCxFQUFJdkMsV0FBb0MsVUFBZjBiLEVBQU16aUIsTUFBb0Jz
SixFQUFJM0MsWUFBYSxHQUFTLENBR2pGLElBRkFpZSxLQUNBQyxLQUNNOW1CLEVBQUksRUFBR0Es
RUFBSTJsQixFQUFlM2xCLElBQy9CZ2xCLEVBQVlDLEVBQVVqbEIsR0FHdEIwTyxFQUFNc1csRUFB
VTNtQixTQUFXLElBRU1rRCxTQUE1QnVsQixFQUFrQnBZLEtBQ3RCb1ksRUFBa0JwWSxHQUFRc1cs
RUFBVTFkLGFBQ25DbEosRUFBUXNRLEVBQUtuUyxNQUFPdWIsTUFBT3ZNLE1BQzNCbk4sRUFBTzRP
LEtBQU0wQixFQUFLblMsS0FBTSxNQUFRZ1AsSUFBUXBNLFFBRXJDMm5CLEVBQWtCcFksSUFDdEJt
WSxFQUFnQjlwQixLQUFNaW9CLEVBR25CNkIsR0FBZ0IxbkIsUUFDcEJnbkIsRUFBYXBwQixNQUFR
Z0QsS0FBTXdMLEVBQUswWixTQUFVNEIsSUFZOUMsTUFMQXRiLEdBQU1oUCxLQUNEb3BCLEVBQWdC
VixFQUFTOWxCLFFBQzdCZ25CLEVBQWFwcEIsTUFBUWdELEtBQU13TCxFQUFLMFosU0FBVUEsRUFB
U3BvQixNQUFPOG9CLEtBR3BEUSxHQUdSWSxRQUFTLFNBQVVsbUIsRUFBTW1tQixHQUN4QnJxQixP
QUFPMmhCLGVBQWdCbGdCLEVBQU82b0IsTUFBTWpvQixVQUFXNkIsR0FDOUNxbUIsWUFBWSxFQUNa
M0ksY0FBYyxFQUVkbGYsSUFBS2pCLEVBQU9nRCxXQUFZNGxCLEdBQ3ZCLFdBQ0MsR0FBS3pxQixL
QUFLNHFCLGNBQ1IsTUFBT0gsR0FBTXpxQixLQUFLNHFCLGdCQUdyQixXQUNDLEdBQUs1cUIsS0FB
SzRxQixjQUNSLE1BQU81cUIsTUFBSzRxQixjQUFldG1CLElBSS9CMmQsSUFBSyxTQUFVN2EsR0FD
ZGhILE9BQU8yaEIsZUFBZ0IvaEIsS0FBTXNFLEdBQzVCcW1CLFlBQVksRUFDWjNJLGNBQWMsRUFD
ZDZJLFVBQVUsRUFDVnpqQixNQUFPQSxRQU1YdWlCLElBQUssU0FBVWlCLEdBQ2QsTUFBT0EsR0FB
ZS9vQixFQUFPb0QsU0FDNUIybEIsRUFDQSxHQUFJL29CLEdBQU82b0IsTUFBT0UsSUFHcEJ6TCxT
QUNDMkwsTUFHQ0MsVUFBVSxHQUVYMVYsT0FHQzJWLFFBQVMsV0FDUixHQUFLaHJCLE9BQVM2bkIs
TUFBdUI3bkIsS0FBS3FWLE1BRXpDLE1BREFyVixNQUFLcVYsU0FDRSxHQUdUNFQsYUFBYyxXQUVm
Z0MsTUFDQ0QsUUFBUyxXQUNSLEdBQUtockIsT0FBUzZuQixNQUF1QjduQixLQUFLaXJCLEtBRXpD
LE1BREFqckIsTUFBS2lyQixRQUNFLEdBR1RoQyxhQUFjLFlBRWZpQyxPQUdDRixRQUFTLFdBQ1Is
R0FBbUIsYUFBZGhyQixLQUFLMEYsTUFBdUIxRixLQUFLa3JCLE9BQVNycEIsRUFBT3lFLFNBQVV0
RyxLQUFNLFNBRXJFLE1BREFBLE1BQUtrckIsU0FDRSxHQUtUbkYsU0FBVSxTQUFVb0MsR0FDbkIs
TUFBT3RtQixHQUFPeUUsU0FBVTZoQixFQUFNeGpCLE9BQVEsT0FJeEN3bUIsY0FDQ2QsYUFBYyxT
QUFVbEMsR0FJRG5qQixTQUFqQm1qQixFQUFNMVUsUUFBd0IwVSxFQUFNeUMsZ0JBQ3hDekMsRUFB
TXlDLGNBQWNRLFlBQWNqRCxFQUFNMVUsWUFPN0M1UixFQUFPNG5CLFlBQWMsU0FBVWptQixFQUFN
a0MsRUFBTW9qQixHQUdyQ3RsQixFQUFLMmQscUJBQ1QzZCxFQUFLMmQsb0JBQXFCemIsRUFBTW9q
QixJQUlsQ2puQixFQUFPNm9CLE1BQVEsU0FBVW5tQixFQUFLOG1CLEdBRzdCLE1BQVFyckIsZ0JB
QWdCNkIsR0FBTzZvQixPQUsxQm5tQixHQUFPQSxFQUFJbUIsTUFDZjFGLEtBQUs0cUIsY0FBZ0Jy
bUIsRUFDckJ2RSxLQUFLMEYsS0FBT25CLEVBQUltQixLQUloQjFGLEtBQUtzckIsbUJBQXFCL21C
LEVBQUlnbkIsa0JBQ0h2bUIsU0FBekJULEVBQUlnbkIsa0JBR0pobkIsRUFBSTZtQixlQUFnQixF
QUNyQnpELEdBQ0FDLEdBS0Q1bkIsS0FBSzJFLE9BQVdKLEVBQUlJLFFBQWtDLElBQXhCSixFQUFJ
SSxPQUFPOEgsU0FDeENsSSxFQUFJSSxPQUFPakQsV0FDWDZDLEVBQUlJLE9BRUwzRSxLQUFLZ3FC
LGNBQWdCemxCLEVBQUl5bEIsY0FDekJocUIsS0FBS3dyQixjQUFnQmpuQixFQUFJaW5CLGVBSXpC
eHJCLEtBQUswRixLQUFPbkIsRUFJUjhtQixHQUNKeHBCLEVBQU91QyxPQUFRcEUsS0FBTXFyQixH
QUl0QnJyQixLQUFLeXJCLFVBQVlsbkIsR0FBT0EsRUFBSWtuQixXQUFhNXBCLEVBQU80RixXQUdo
RHpILEtBQU02QixFQUFPb0QsVUFBWSxJQTFDakIsR0FBSXBELEdBQU82b0IsTUFBT25tQixFQUFL
OG1CLElBK0NoQ3hwQixFQUFPNm9CLE1BQU1qb0IsV0FDWkUsWUFBYWQsRUFBTzZvQixNQUNwQlks
bUJBQW9CMUQsR0FDcEJtQyxxQkFBc0JuQyxHQUN0QnFDLDhCQUErQnJDLEdBQy9COEQsYUFBYSxF
QUVidkIsZUFBZ0IsV0FDZixHQUFJemQsR0FBSTFNLEtBQUs0cUIsYUFFYjVxQixNQUFLc3JCLG1C
QUFxQjNELEdBRXJCamIsSUFBTTFNLEtBQUswckIsYUFDZmhmLEVBQUV5ZCxrQkFHSkMsZ0JBQWlC
LFdBQ2hCLEdBQUkxZCxHQUFJMU0sS0FBSzRxQixhQUViNXFCLE1BQUsrcEIscUJBQXVCcEMsR0FF
dkJqYixJQUFNMU0sS0FBSzByQixhQUNmaGYsRUFBRTBkLG1CQUdKdUIseUJBQTBCLFdBQ3pCLEdB
QUlqZixHQUFJMU0sS0FBSzRxQixhQUViNXFCLE1BQUtpcUIsOEJBQWdDdEMsR0FFaENqYixJQUFN
MU0sS0FBSzByQixhQUNmaGYsRUFBRWlmLDJCQUdIM3JCLEtBQUtvcUIsb0JBS1B2b0IsRUFBT3dC
LE1BQ051b0IsUUFBUSxFQUNSQyxTQUFTLEVBQ1RDLFlBQVksRUFDWkMsZ0JBQWdCLEVBQ2hCQyxT
QUFTLEVBQ1RDLFFBQVEsRUFDUkMsWUFBWSxFQUNaQyxTQUFTLEVBQ1RDLE9BQU8sRUFDUEMsT0FB
TyxFQUNQQyxVQUFVLEVBQ1ZDLE1BQU0sRUFDTkMsUUFBUSxFQUNSQyxVQUFVLEVBQ1ZwZSxLQUFL
LEVBQ0xxZSxTQUFTLEVBQ1QxVyxRQUFRLEVBQ1IyVyxTQUFTLEVBQ1RDLFNBQVMsRUFDVEMsU0FB
UyxFQUNUQyxTQUFTLEVBQ1RDLFNBQVMsRUFDVEMsV0FBVyxFQUNYQyxhQUFhLEVBQ2JDLFNBQVMs
RUFDVEMsU0FBUyxFQUNUQyxlQUFlLEVBQ2ZDLFdBQVcsRUFDWEMsU0FBUyxFQUVUQyxNQUFPLFNB
QVVwRixHQUNoQixHQUFJblMsR0FBU21TLEVBQU1uUyxNQUduQixPQUFvQixPQUFmbVMsRUFBTW9G
LE9BQWlCL0YsR0FBVTlaLEtBQU15YSxFQUFNemlCLE1BQ3hCLE1BQWxCeWlCLEVBQU1zRSxTQUFt
QnRFLEVBQU1zRSxTQUFXdEUsRUFBTXVFLFNBSWxEdkUsRUFBTW9GLE9BQW9Cdm9CLFNBQVhnUixH
QUF3QnlSLEdBQVkvWixLQUFNeWEsRUFBTXppQixNQUN0RCxFQUFUc1EsRUFDRyxFQUdNLEVBQVRB
LEVBQ0csRUFHTSxFQUFUQSxFQUNHLEVBR0QsRUFHRG1TLEVBQU1vRixRQUVaMXJCLEVBQU9zbUIs
TUFBTXFDLFNBVWhCM29CLEVBQU93QixNQUNObXFCLFdBQVksWUFDWkMsV0FBWSxXQUNaQyxhQUFj
LGNBQ2RDLGFBQWMsY0FDWixTQUFVQyxFQUFNakUsR0FDbEI5bkIsRUFBT3NtQixNQUFNaEosUUFB
U3lPLElBQ3JCM0UsYUFBY1UsRUFDZFQsU0FBVVMsRUFFVmIsT0FBUSxTQUFVWCxHQUNqQixHQUFJ
amxCLEdBQ0h5QixFQUFTM0UsS0FDVDZ0QixFQUFVMUYsRUFBTXFELGNBQ2hCL0MsRUFBWU4sRUFB
TU0sU0FTbkIsT0FMTW9GLEtBQWFBLElBQVlscEIsR0FBVzlDLEVBQU9nSCxTQUFVbEUsRUFBUWtw
QixNQUNsRTFGLEVBQU16aUIsS0FBTytpQixFQUFVRyxTQUN2QjFsQixFQUFNdWxCLEVBQVU1WixR
QUFRbkwsTUFBTzFELEtBQU0yRCxXQUNyQ3drQixFQUFNemlCLEtBQU9pa0IsR0FFUHptQixNQUtW
ckIsRUFBT0csR0FBR29DLFFBRVQyakIsR0FBSSxTQUFVQyxFQUFPbG1CLEVBQVVvZ0IsRUFBTWxn
QixHQUNwQyxNQUFPK2xCLElBQUkvbkIsS0FBTWdvQixFQUFPbG1CLEVBQVVvZ0IsRUFBTWxnQixJ
QUV6Q2ltQixJQUFLLFNBQVVELEVBQU9sbUIsRUFBVW9nQixFQUFNbGdCLEdBQ3JDLE1BQU8rbEIs
SUFBSS9uQixLQUFNZ29CLEVBQU9sbUIsRUFBVW9nQixFQUFNbGdCLEVBQUksSUFFN0NvbUIsSUFB
SyxTQUFVSixFQUFPbG1CLEVBQVVFLEdBQy9CLEdBQUl5bUIsR0FBVy9pQixDQUNmLElBQUtzaUIs
R0FBU0EsRUFBTW1DLGdCQUFrQm5DLEVBQU1TLFVBVzNDLE1BUkFBLEdBQVlULEVBQU1TLFVBQ2xC
NW1CLEVBQVFtbUIsRUFBTTZCLGdCQUFpQnpCLElBQzlCSyxFQUFVVSxVQUNUVixFQUFVRyxTQUFX
LElBQU1ILEVBQVVVLFVBQ3JDVixFQUFVRyxTQUNYSCxFQUFVM21CLFNBQ1YybUIsRUFBVTVaLFNB
RUo3TyxJQUVSLElBQXNCLGdCQUFWZ29CLEdBQXFCLENBR2hDLElBQU10aUIsSUFBUXNpQixHQUNi
aG9CLEtBQUtvb0IsSUFBSzFpQixFQUFNNUQsRUFBVWttQixFQUFPdGlCLEdBRWxDLE9BQU8xRixN
QVdSLE1BVEs4QixNQUFhLEdBQTZCLGtCQUFiQSxLQUdqQ0UsRUFBS0YsRUFDTEEsRUFBV2tELFFB
RVBoRCxLQUFPLElBQ1hBLEVBQUs0bEIsSUFFQzVuQixLQUFLcUQsS0FBTSxXQUNqQnhCLEVBQU9z
bUIsTUFBTWxMLE9BQVFqZCxLQUFNZ29CLEVBQU9obUIsRUFBSUYsT0FNekMsSUFLQ2dzQixJQUFZ
LDhGQU9aQyxHQUFlLHdCQUdmQyxHQUFXLG9DQUNYQyxHQUFvQixjQUNwQkMsR0FBZSwwQ0FFaEIs
U0FBU0MsSUFBb0IzcUIsRUFBTTRxQixHQUNsQyxNQUFLdnNCLEdBQU95RSxTQUFVOUMsRUFBTSxV
QUMzQjNCLEVBQU95RSxTQUErQixLQUFyQjhuQixFQUFRM2hCLFNBQWtCMmhCLEVBQVVBLEVBQVEz
YixXQUFZLE1BRWxFalAsRUFBSytKLHFCQUFzQixTQUFXLElBQU8vSixFQUc5Q0EsRUFJUixRQUFT
NnFCLElBQWU3cUIsR0FFdkIsTUFEQUEsR0FBS2tDLE1BQXlDLE9BQWhDbEMsRUFBS21LLGFBQWMs
U0FBc0IsSUFBTW5LLEVBQUtrQyxLQUMzRGxDLEVBRVIsUUFBUzhxQixJQUFlOXFCLEdBQ3ZCLEdB
QUl1SixHQUFRa2hCLEdBQWtCN2dCLEtBQU01SixFQUFLa0MsS0FRekMsT0FOS3FILEdBQ0p2SixF
QUFLa0MsS0FBT3FILEVBQU8sR0FFbkJ2SixFQUFLMEssZ0JBQWlCLFFBR2hCMUssRUFHUixRQUFT
K3FCLElBQWdCaHFCLEVBQUtpcUIsR0FDN0IsR0FBSS9xQixHQUFHNFgsRUFBRzNWLEVBQU0rb0Is
RUFBVUMsRUFBVUMsRUFBVUMsRUFBVXJHLENBRXhELElBQXVCLElBQWxCaUcsRUFBSy9oQixTQUFW
LENBS0EsR0FBSzRWLEVBQVNELFFBQVM3ZCxLQUN0QmtxQixFQUFXcE0sRUFBU2YsT0FBUS9jLEdB
QzVCbXFCLEVBQVdyTSxFQUFTSixJQUFLdU0sRUFBTUMsR0FDL0JsRyxFQUFTa0csRUFBU2xHLFFB
RUosT0FDTm1HLEdBQVM1RixPQUNoQjRGLEVBQVNuRyxTQUVULEtBQU03aUIsSUFBUTZpQixHQUNi
LElBQU05a0IsRUFBSSxFQUFHNFgsRUFBSWtOLEVBQVE3aUIsR0FBTzlDLE9BQVFhLEVBQUk0WCxF
QUFHNVgsSUFDOUM1QixFQUFPc21CLE1BQU0xTSxJQUFLK1MsRUFBTTlvQixFQUFNNmlCLEVBQVE3
aUIsR0FBUWpDLElBTzdDNmUsRUFBU0YsUUFBUzdkLEtBQ3RCb3FCLEVBQVdyTSxFQUFTaEIsT0FB
US9jLEdBQzVCcXFCLEVBQVcvc0IsRUFBT3VDLFVBQVl1cUIsR0FFOUJyTSxFQUFTTCxJQUFLdU0s
RUFBTUksS0FLdEIsUUFBU0MsSUFBVXRxQixFQUFLaXFCLEdBQ3ZCLEdBQUlsb0IsR0FBV2tvQixF
QUFLbG9CLFNBQVNDLGFBR1gsV0FBYkQsR0FBd0JnZixHQUFlNVgsS0FBTW5KLEVBQUltQixNQUNy
RDhvQixFQUFLN1ksUUFBVXBSLEVBQUlvUixRQUdLLFVBQWJyUCxHQUFxQyxhQUFiQSxJQUNuQ2tv
QixFQUFLM1UsYUFBZXRWLEVBQUlzVixjQUkxQixRQUFTaVYsSUFBVUMsRUFBWXZuQixFQUFNbEUs
RUFBVXVqQixHQUc5Q3JmLEVBQU9qSCxFQUFPbUQsU0FBVzhELEVBRXpCLElBQUl1ZixHQUFVbmpC
LEVBQU8raUIsRUFBU3FJLEVBQVlwZixFQUFNeE8sRUFDL0NxQyxFQUFJLEVBQ0o0WCxFQUFJMFQs
RUFBV25zQixPQUNmcXNCLEVBQVc1VCxFQUFJLEVBQ2ZqVSxFQUFRSSxFQUFNLEdBQ2QzQyxFQUFh
aEQsRUFBT2dELFdBQVl1QyxFQUdqQyxJQUFLdkMsR0FDRHdXLEVBQUksR0FBc0IsZ0JBQVZqVSxL
QUNoQm5HLEVBQVFvbUIsWUFBYzJHLEdBQVN0Z0IsS0FBTXRHLEdBQ3hDLE1BQU8ybkIsR0FBVzFy
QixLQUFNLFNBQVVrWSxHQUNqQyxHQUFJWixHQUFPb1UsRUFBV2xyQixHQUFJMFgsRUFDckIxVyxL
QUNKMkMsRUFBTSxHQUFNSixFQUFNcEcsS0FBTWhCLEtBQU11YixFQUFPWixFQUFLdVUsU0FFM0NK
LEdBQVVuVSxFQUFNblQsRUFBTWxFLEVBQVV1akIsSUFJbEMsSUFBS3hMLElBQ0owTCxFQUFXTCxH
QUFlbGYsRUFBTXVuQixFQUFZLEdBQUk1aEIsZUFBZSxFQUFPNGhCLEVBQVlsSSxHQUNsRmpqQixF
QUFRbWpCLEVBQVN0VSxXQUVtQixJQUEvQnNVLEVBQVN2YSxXQUFXNUosU0FDeEJta0IsRUFBV25q
QixHQUlQQSxHQUFTaWpCLEdBQVUsQ0FPdkIsSUFOQUYsRUFBVTlrQixFQUFPMEIsSUFBSytpQixH
QUFRUyxFQUFVLFVBQVlzSCxJQUNwRFcsRUFBYXJJLEVBQVEvakIsT0FLYmEsRUFBSTRYLEVBQUc1
WCxJQUNkbU0sRUFBT21YLEVBRUZ0akIsSUFBTXdyQixJQUNWcmYsRUFBTy9OLEVBQU82QyxNQUFP
a0wsR0FBTSxHQUFNLEdBRzVCb2YsR0FJSm50QixFQUFPc0IsTUFBT3dqQixFQUFTTCxHQUFRMVcs
RUFBTSxZQUl2Q3RNLEVBQVN0QyxLQUFNK3RCLEVBQVl0ckIsR0FBS21NLEVBQU1uTSxFQUd2QyxJ
QUFLdXJCLEVBT0osSUFOQTV0QixFQUFNdWxCLEVBQVNBLEVBQVEvakIsT0FBUyxHQUFJdUssY0FH
cEN0TCxFQUFPMEIsSUFBS29qQixFQUFTMkgsSUFHZjdxQixFQUFJLEVBQUdBLEVBQUl1ckIsRUFB
WXZyQixJQUM1Qm1NLEVBQU8rVyxFQUFTbGpCLEdBQ1graEIsR0FBWTlYLEtBQU1rQyxFQUFLbEss
TUFBUSxNQUNsQzJjLEVBQVNmLE9BQVExUixFQUFNLGVBQ3hCL04sRUFBT2dILFNBQVV6SCxFQUFL
d08sS0FFakJBLEVBQUtyTCxJQUdKMUMsRUFBT3N0QixVQUNYdHRCLEVBQU9zdEIsU0FBVXZmLEVB
QUtyTCxLQUd2QnJELEVBQVMwTyxFQUFLNEMsWUFBWXBOLFFBQVM4b0IsR0FBYyxJQUFNOXNCLElB
UTdELE1BQU8ydEIsR0FHUixRQUFTOVIsSUFBUXpaLEVBQU0xQixFQUFVc3RCLEdBS2hDLElBSkEs
R0FBSXhmLEdBQ0hxWCxFQUFRbmxCLEVBQVdELEVBQU8wTyxPQUFRek8sRUFBVTBCLEdBQVNBLEVB
Q3JEQyxFQUFJLEVBRTRCLE9BQXZCbU0sRUFBT3FYLEVBQU94akIsSUFBZUEsSUFDaEMyckIsR0FB
OEIsSUFBbEJ4ZixFQUFLbkQsVUFDdEI1SyxFQUFPd3RCLFVBQVcvSSxHQUFRMVcsSUFHdEJBLEVB
QUtsTyxhQUNKMHRCLEdBQVl2dEIsRUFBT2dILFNBQVUrRyxFQUFLekMsY0FBZXlDLElBQ3JEMlcs
R0FBZUQsR0FBUTFXLEVBQU0sV0FFOUJBLEVBQUtsTyxXQUFXQyxZQUFhaU8sR0FJL0IsT0FBT3BN
LEdBR1IzQixFQUFPdUMsUUFDTjhpQixjQUFlLFNBQVVnSSxHQUN4QixNQUFPQSxHQUFLOXBCLFFB
QVMwb0IsR0FBVyxjQUdqQ3BwQixNQUFPLFNBQVVsQixFQUFNOHJCLEVBQWVDLEdBQ3JDLEdBQUk5
ckIsR0FBRzRYLEVBQUdtVSxFQUFhQyxFQUN0Qi9xQixFQUFRbEIsRUFBSzhqQixXQUFXLEdBQ3hC
b0ksRUFBUzd0QixFQUFPZ0gsU0FBVXJGLEVBQUsySixjQUFlM0osRUFHL0MsTUFBTXZDLEVBQVFz
bUIsZ0JBQXNDLElBQWxCL2pCLEVBQUtpSixVQUFvQyxLQUFsQmpKLEVBQUtpSixVQUMzRDVLLEVB
QU9rWSxTQUFVdlcsSUFNbkIsSUFIQWlzQixFQUFlbkosR0FBUTVoQixHQUN2QjhxQixFQUFjbEos
R0FBUTlpQixHQUVoQkMsRUFBSSxFQUFHNFgsRUFBSW1VLEVBQVk1c0IsT0FBUWEsRUFBSTRYLEVB
QUc1WCxJQUMzQ29yQixHQUFVVyxFQUFhL3JCLEdBQUtnc0IsRUFBY2hzQixHQUs1QyxJQUFLNnJC
LEVBQ0osR0FBS0MsRUFJSixJQUhBQyxFQUFjQSxHQUFlbEosR0FBUTlpQixHQUNyQ2lzQixFQUFl
QSxHQUFnQm5KLEdBQVE1aEIsR0FFakNqQixFQUFJLEVBQUc0WCxFQUFJbVUsRUFBWTVzQixPQUFR
YSxFQUFJNFgsRUFBRzVYLElBQzNDOHFCLEdBQWdCaUIsRUFBYS9yQixHQUFLZ3NCLEVBQWNoc0Is
UUFHakQ4cUIsSUFBZ0IvcUIsRUFBTWtCLEVBV3hCLE9BTkErcUIsR0FBZW5KLEdBQVE1aEIsRUFB
TyxVQUN6QitxQixFQUFhN3NCLE9BQVMsR0FDMUIyakIsR0FBZWtKLEdBQWVDLEdBQVVwSixHQUFR
OWlCLEVBQU0sV0FJaERrQixHQUdSMnFCLFVBQVcsU0FBVXBzQixHQUtwQixJQUpBLEdBQUlpZixH
QUFNMWUsRUFBTWtDLEVBQ2Z5WixFQUFVdGQsRUFBT3NtQixNQUFNaEosUUFDdkIxYixFQUFJLEVB
RTZCdUIsVUFBeEJ4QixFQUFPUCxFQUFPUSxJQUFxQkEsSUFDNUMsR0FBS2tlLEVBQVluZSxHQUFT
LENBQ3pCLEdBQU8wZSxFQUFPMWUsRUFBTTZlLEVBQVNwZCxTQUFjLENBQzFDLEdBQUtpZCxFQUFL
cUcsT0FDVCxJQUFNN2lCLElBQVF3YyxHQUFLcUcsT0FDYnBKLEVBQVN6WixHQUNiN0QsRUFBT3Nt
QixNQUFNbEwsT0FBUXpaLEVBQU1rQyxHQUkzQjdELEVBQU80bkIsWUFBYWptQixFQUFNa0MsRUFB
TXdjLEVBQUs0RyxPQU94Q3RsQixHQUFNNmUsRUFBU3BkLFNBQVlELE9BRXZCeEIsRUFBTThlLEVB
QVNyZCxXQUluQnpCLEVBQU04ZSxFQUFTcmQsU0FBWUQsWUFPaENuRCxFQUFPRyxHQUFHb0MsUUFD
VHVyQixPQUFRLFNBQVU3dEIsR0FDakIsTUFBT21iLElBQVFqZCxLQUFNOEIsR0FBVSxJQUdoQ21i
LE9BQVEsU0FBVW5iLEdBQ2pCLE1BQU9tYixJQUFRamQsS0FBTThCLElBR3RCUCxLQUFNLFNBQVU2
RixHQUNmLE1BQU9rYSxHQUFRdGhCLEtBQU0sU0FBVW9ILEdBQzlCLE1BQWlCcEMsVUFBVm9DLEVB
Q052RixFQUFPTixLQUFNdkIsTUFDYkEsS0FBSzhWLFFBQVF6UyxLQUFNLFdBQ0ssSUFBbEJyRCxL
QUFLeU0sVUFBb0MsS0FBbEJ6TSxLQUFLeU0sVUFBcUMsSUFBbEJ6TSxLQUFLeU0sV0FDeER6TSxL
QUFLd1MsWUFBY3BMLE1BR3BCLEtBQU1BLEVBQU96RCxVQUFVZixTQUczQmd0QixPQUFRLFdBQ1As
TUFBT2QsSUFBVTl1QixLQUFNMkQsVUFBVyxTQUFVSCxHQUMzQyxHQUF1QixJQUFsQnhELEtBQUt5
TSxVQUFvQyxLQUFsQnpNLEtBQUt5TSxVQUFxQyxJQUFsQnpNLEtBQUt5TSxTQUFpQixDQUN6RSxH
QUFJOUgsR0FBU3dwQixHQUFvQm51QixLQUFNd0QsRUFDdkNtQixHQUFPbEQsWUFBYStCLE9BS3ZC
cXNCLFFBQVMsV0FDUixNQUFPZixJQUFVOXVCLEtBQU0yRCxVQUFXLFNBQVVILEdBQzNDLEdBQXVC
LElBQWxCeEQsS0FBS3lNLFVBQW9DLEtBQWxCek0sS0FBS3lNLFVBQXFDLElBQWxCek0sS0FBS3lN
LFNBQWlCLENBQ3pFLEdBQUk5SCxHQUFTd3BCLEdBQW9CbnVCLEtBQU13RCxFQUN2Q21CLEdBQU9t
ckIsYUFBY3RzQixFQUFNbUIsRUFBTzhOLGdCQUtyQ3NkLE9BQVEsV0FDUCxNQUFPakIsSUFBVTl1
QixLQUFNMkQsVUFBVyxTQUFVSCxHQUN0Q3hELEtBQUswQixZQUNUMUIsS0FBSzBCLFdBQVdvdUIs
YUFBY3RzQixFQUFNeEQsU0FLdkNnd0IsTUFBTyxXQUNOLE1BQU9sQixJQUFVOXVCLEtBQU0yRCxV
QUFXLFNBQVVILEdBQ3RDeEQsS0FBSzBCLFlBQ1QxQixLQUFLMEIsV0FBV291QixhQUFjdHNCLEVB
QU14RCxLQUFLbVAsZ0JBSzVDMkcsTUFBTyxXQUlOLElBSEEsR0FBSXRTLEdBQ0hDLEVBQUksRUFF
MkIsT0FBdEJELEVBQU94RCxLQUFNeUQsSUFBZUEsSUFDZCxJQUFsQkQsRUFBS2lKLFdBR1Q1SyxF
QUFPd3RCLFVBQVcvSSxHQUFROWlCLEdBQU0sSUFHaENBLEVBQUtnUCxZQUFjLEdBSXJCLE9BQU94
UyxPQUdSMEUsTUFBTyxTQUFVNHFCLEVBQWVDLEdBSS9CLE1BSEFELEdBQWlDLE1BQWpCQSxHQUFn
Q0EsRUFDaERDLEVBQXlDLE1BQXJCQSxFQUE0QkQsRUFBZ0JDLEVBRXpEdnZCLEtBQUt1RCxJQUFL
LFdBQ2hCLE1BQU8xQixHQUFPNkMsTUFBTzFFLEtBQU1zdkIsRUFBZUMsTUFJNUNMLEtBQU0sU0FB
VTluQixHQUNmLE1BQU9rYSxHQUFRdGhCLEtBQU0sU0FBVW9ILEdBQzlCLEdBQUk1RCxHQUFPeEQs
S0FBTSxPQUNoQnlELEVBQUksRUFDSjRYLEVBQUlyYixLQUFLNEMsTUFFVixJQUFlb0MsU0FBVm9D
LEdBQXlDLElBQWxCNUQsRUFBS2lKLFNBQ2hDLE1BQU9qSixHQUFLb04sU0FJYixJQUFzQixnQkFB
VnhKLEtBQXVCMm1CLEdBQWFyZ0IsS0FBTXRHLEtBQ3BEcWUsSUFBV0YsR0FBU25ZLEtBQU1oRyxL
QUFhLEdBQUksS0FBUSxHQUFJYixlQUFrQixDQUUxRWEsRUFBUXZGLEVBQU9xbEIsY0FBZTlmLEVB
RTlCLEtBQ0MsS0FBUTNELEVBQUk0WCxFQUFHNVgsSUFDZEQsRUFBT3hELEtBQU15RCxPQUdVLElB
QWxCRCxFQUFLaUosV0FDVDVLLEVBQU93dEIsVUFBVy9JLEdBQVE5aUIsR0FBTSxJQUNoQ0EsRUFB
S29OLFVBQVl4SixFQUluQjVELEdBQU8sRUFHTixNQUFRa0osS0FHTmxKLEdBQ0p4RCxLQUFLOFYs
UUFBUThaLE9BQVF4b0IsSUFFcEIsS0FBTUEsRUFBT3pELFVBQVVmLFNBRzNCcXRCLFlBQWEsV0FD
WixHQUFJcEosS0FHSixPQUFPaUksSUFBVTl1QixLQUFNMkQsVUFBVyxTQUFVSCxHQUMzQyxHQUFJ
MlEsR0FBU25VLEtBQUswQixVQUViRyxHQUFPK0UsUUFBUzVHLEtBQU02bUIsR0FBWSxJQUN0Q2hs
QixFQUFPd3RCLFVBQVcvSSxHQUFRdG1CLE9BQ3JCbVUsR0FDSkEsRUFBTytiLGFBQWMxc0IsRUFB
TXhELFFBSzNCNm1CLE1BSUxobEIsRUFBT3dCLE1BQ044c0IsU0FBVSxTQUNWQyxVQUFXLFVBQ1hO
LGFBQWMsU0FDZE8sWUFBYSxRQUNiQyxXQUFZLGVBQ1YsU0FBVWhzQixFQUFNaXNCLEdBQ2xCMXVC
LEVBQU9HLEdBQUlzQyxHQUFTLFNBQVV4QyxHQU83QixJQU5BLEdBQUltQixHQUNIQyxLQUNBc3RC
LEVBQVMzdUIsRUFBUUMsR0FDakJnQyxFQUFPMHNCLEVBQU81dEIsT0FBUyxFQUN2QmEsRUFBSSxF
QUVHQSxHQUFLSyxFQUFNTCxJQUNsQlIsRUFBUVEsSUFBTUssRUFBTzlELEtBQU9BLEtBQUswRSxP
QUFPLEdBQ3hDN0MsRUFBUTJ1QixFQUFRL3NCLElBQU84c0IsR0FBWXR0QixHQUluQ3pDLEVBQUtr
RCxNQUFPUixFQUFLRCxFQUFNSCxNQUd4QixPQUFPOUMsTUFBS2dELFVBQVdFLEtBR3pCLElBQUl1
dEIsSUFBVSxVQUVWQyxHQUFZLEdBQUl6bUIsUUFBUSxLQUFPd1osRUFBTyxrQkFBbUIsS0FFekRr
TixHQUFZLFNBQVVudEIsR0FLeEIsR0FBSStvQixHQUFPL29CLEVBQUsySixjQUFjNEMsV0FNOUIs
T0FKTXdjLElBQVNBLEVBQUtxRSxTQUNuQnJFLEVBQU94c0IsR0FHRHdzQixFQUFLc0UsaUJBQWtC
cnRCLEtBS2hDLFdBSUMsUUFBU3N0QixLQUdSLEdBQU0xSixFQUFOLENBSUFBLEVBQUl0RCxNQUFN
aU4sUUFDVCw0R0FJRDNKLEVBQUl4VyxVQUFZLEdBQ2hCakIsR0FBZ0JsTyxZQUFhdXZCLEVBRTdC
LElBQUlDLEdBQVdseEIsRUFBTzh3QixpQkFBa0J6SixFQUN4QzhKLEdBQW9DLE9BQWpCRCxFQUFT
amhCLElBRzVCbWhCLEVBQWdELFFBQXhCRixFQUFTRyxXQUNqQ0MsRUFBMEMsUUFBbkJKLEVBQVNL
LE1BSWhDbEssRUFBSXRELE1BQU15TixZQUFjLE1BQ3hCQyxFQUErQyxRQUF6QlAsRUFBU00sWUFF
L0I1aEIsR0FBZ0JoTyxZQUFhcXZCLEdBSTdCNUosRUFBTSxNQUdQLEdBQUk4SixHQUFrQkcsRUFB
c0JHLEVBQXFCTCxFQUNoRUgsRUFBWXB4QixFQUFTMEIsY0FBZSxPQUNwQzhsQixFQUFNeG5CLEVB
QVMwQixjQUFlLE1BR3pCOGxCLEdBQUl0RCxRQU1Wc0QsRUFBSXRELE1BQU0yTixlQUFpQixjQUMz
QnJLLEVBQUlFLFdBQVcsR0FBT3hELE1BQU0yTixlQUFpQixHQUM3Q3h3QixFQUFReXdCLGdCQUEr
QyxnQkFBN0J0SyxFQUFJdEQsTUFBTTJOLGVBRXBDVCxFQUFVbE4sTUFBTWlOLFFBQVUsNEZBRTFC
QyxFQUFVdnZCLFlBQWEybEIsR0FFdkJ2bEIsRUFBT3VDLE9BQVFuRCxHQUNkMHdCLGNBQWUsV0FF
ZCxNQURBYixLQUNPSSxHQUVSVSxrQkFBbUIsV0FFbEIsTUFEQWQsS0FDT08sR0FFUlEsaUJBQWtC
LFdBRWpCLE1BREFmLEtBQ09VLEdBRVJNLG1CQUFvQixXQUVuQixNQURBaEIsS0FDT0ssUUFNVixT
QUFTWSxJQUFRdnVCLEVBQU1jLEVBQU0wdEIsR0FDNUIsR0FBSVYsR0FBT1csRUFBVUMsRUFBVWh2
QixFQUM5QjRnQixFQUFRdGdCLEVBQUtzZ0IsS0FvQ2QsT0FsQ0FrTyxHQUFXQSxHQUFZckIsR0FB
V250QixHQUk3Qnd1QixJQUNKOXVCLEVBQU04dUIsRUFBU0csaUJBQWtCN3RCLElBQVUwdEIsRUFB
VTF0QixHQUV4QyxLQUFScEIsR0FBZXJCLEVBQU9nSCxTQUFVckYsRUFBSzJKLGNBQWUzSixLQUN4
RE4sRUFBTXJCLEVBQU9paUIsTUFBT3RnQixFQUFNYyxLQVFyQnJELEVBQVE0d0Isb0JBQXNCbkIs
R0FBVWhqQixLQUFNeEssSUFBU3V0QixHQUFRL2lCLEtBQU1wSixLQUcxRWd0QixFQUFReE4sRUFB
TXdOLE1BQ2RXLEVBQVduTyxFQUFNbU8sU0FDakJDLEVBQVdwTyxFQUFNb08sU0FHakJwTyxFQUFN
bU8sU0FBV25PLEVBQU1vTyxTQUFXcE8sRUFBTXdOLE1BQVFwdUIsRUFDaERBLEVBQU04dUIsRUFB
U1YsTUFHZnhOLEVBQU13TixNQUFRQSxFQUNkeE4sRUFBTW1PLFNBQVdBLEVBQ2pCbk8sRUFBTW9P
LFNBQVdBLElBSUpsdEIsU0FBUjlCLEVBSU5BLEVBQU0sR0FDTkEsRUFJRixRQUFTa3ZCLElBQWND
LEVBQWFDLEdBR25DLE9BQ0N4dkIsSUFBSyxXQUNKLE1BQUt1dkIsZ0JBSUdyeUIsTUFBSzhDLEtB
S0o5QyxLQUFLOEMsSUFBTXd2QixHQUFTNXVCLE1BQU8xRCxLQUFNMkQsYUFNN0MsR0FLQzR1QixJ
QUFlLDRCQUNmQyxJQUFZQyxTQUFVLFdBQVlDLFdBQVksU0FBVTNPLFFBQVMsU0FDakU0TyxJQUND
QyxjQUFlLElBQ2ZDLFdBQVksT0FHYkMsSUFBZ0IsU0FBVSxNQUFPLE1BQ2pDQyxHQUFhbnpCLEVB
QVMwQixjQUFlLE9BQVF3aUIsS0FHOUMsU0FBU2tQLElBQWdCMXVCLEdBR3hCLEdBQUtBLElBQVF5
dUIsSUFDWixNQUFPenVCLEVBSVIsSUFBSTJ1QixHQUFVM3VCLEVBQU0sR0FBSTlCLGNBQWdCOEIs
RUFBS2hFLE1BQU8sR0FDbkRtRCxFQUFJcXZCLEdBQVlsd0IsTUFFakIsT0FBUWEsSUFFUCxHQURB
YSxFQUFPd3VCLEdBQWFydkIsR0FBTXd2QixFQUNyQjN1QixJQUFReXVCLElBQ1osTUFBT3p1QixH
QUtWLFFBQVM0dUIsSUFBbUIxdkIsRUFBTTRELEVBQU8rckIsR0FJeEMsR0FBSWxzQixHQUFVMGMs
R0FBUXZXLEtBQU1oRyxFQUM1QixPQUFPSCxHQUdOL0IsS0FBS2t1QixJQUFLLEVBQUduc0IsRUFB
UyxJQUFRa3NCLEdBQVksS0FBVWxzQixFQUFTLElBQU8sTUFDcEVHLEVBR0YsUUFBU2lzQixJQUFz
Qjd2QixFQUFNYyxFQUFNZ3ZCLEVBQU9DLEVBQWFDLEdBQzlELEdBQUkvdkIsR0FDSHVPLEVBQU0s
Q0FXUCxLQVBDdk8sRUFESTZ2QixLQUFZQyxFQUFjLFNBQVcsV0FDckMsRUFJUyxVQUFUanZCLEVB
QW1CLEVBQUksRUFHcEJiLEVBQUksRUFBR0EsR0FBSyxFQUdKLFdBQVY2dkIsSUFDSnRoQixHQUFP
blEsRUFBT21pQixJQUFLeGdCLEVBQU04dkIsRUFBUTFQLEdBQVduZ0IsSUFBSyxFQUFNK3ZCLElB
R25ERCxHQUdXLFlBQVZELElBQ0p0aEIsR0FBT25RLEVBQU9taUIsSUFBS3hnQixFQUFNLFVBQVlv
Z0IsR0FBV25nQixJQUFLLEVBQU0rdkIsSUFJN0MsV0FBVkYsSUFDSnRoQixHQUFPblEsRUFBT21p
QixJQUFLeGdCLEVBQU0sU0FBV29nQixHQUFXbmdCLEdBQU0sU0FBUyxFQUFNK3ZCLE1BS3JFeGhC
LEdBQU9uUSxFQUFPbWlCLElBQUt4Z0IsRUFBTSxVQUFZb2dCLEdBQVduZ0IsSUFBSyxFQUFNK3ZC
LEdBRzVDLFlBQVZGLElBQ0p0aEIsR0FBT25RLEVBQU9taUIsSUFBS3hnQixFQUFNLFNBQVdvZ0Is
R0FBV25nQixHQUFNLFNBQVMsRUFBTSt2QixJQUt2RSxPQUFPeGhCLEdBR1IsUUFBU3loQixJQUFr
Qmp3QixFQUFNYyxFQUFNZ3ZCLEdBR3RDLEdBQUl0aEIsR0FDSDBoQixHQUFtQixFQUNuQkYsRUFB
UzdDLEdBQVdudEIsR0FDcEIrdkIsRUFBaUUsZUFBbkQxeEIsRUFBT21pQixJQUFLeGdCLEVBQU0s
YUFBYSxFQUFPZ3dCLEVBWXJELElBUEtod0IsRUFBS213QixpQkFBaUIvd0IsU0FDMUJvUCxFQUFN
eE8sRUFBS293Qix3QkFBeUJ0dkIsSUFNaEMwTixHQUFPLEdBQVksTUFBUEEsRUFBYyxDQVM5QixH
QU5BQSxFQUFNK2YsR0FBUXZ1QixFQUFNYyxFQUFNa3ZCLElBQ3JCeGhCLEVBQU0sR0FBWSxNQUFQ
QSxLQUNmQSxFQUFNeE8sRUFBS3NnQixNQUFPeGYsSUFJZG9zQixHQUFVaGpCLEtBQU1zRSxHQUNw
QixNQUFPQSxFQUtSMGhCLEdBQW1CSCxJQUNoQnR5QixFQUFRMndCLHFCQUF1QjVmLElBQVF4TyxF
QUFLc2dCLE1BQU94ZixJQUd0RDBOLEVBQU1qTSxXQUFZaU0sSUFBUyxFQUk1QixNQUFTQSxHQUNS
cWhCLEdBQ0M3dkIsRUFDQWMsRUFDQWd2QixJQUFXQyxFQUFjLFNBQVcsV0FDcENHLEVBQ0FGLEdB
RUUsS0FHTDN4QixFQUFPdUMsUUFJTnl2QixVQUNDQyxTQUNDaHhCLElBQUssU0FBVVUsRUFBTXd1
QixHQUNwQixHQUFLQSxFQUFXLENBR2YsR0FBSTl1QixHQUFNNnVCLEdBQVF2dUIsRUFBTSxVQUN4
QixPQUFlLEtBQVJOLEVBQWEsSUFBTUEsTUFPOUIwaEIsV0FDQ21QLHlCQUEyQixFQUMzQkMsYUFB
ZSxFQUNmQyxhQUFlLEVBQ2ZDLFVBQVksRUFDWkMsWUFBYyxFQUNkdEIsWUFBYyxFQUNkdUIsWUFB
YyxFQUNkTixTQUFXLEVBQ1hPLE9BQVMsRUFDVEMsU0FBVyxFQUNYQyxRQUFVLEVBQ1ZDLFFBQVUs
RUFDVkMsTUFBUSxHQUtUQyxVQUNDQyxRQUFTLFlBSVY3USxNQUFPLFNBQVV0Z0IsRUFBTWMsRUFB
TThDLEVBQU9rc0IsR0FHbkMsR0FBTTl2QixHQUEwQixJQUFsQkEsRUFBS2lKLFVBQW9DLElBQWxC
akosRUFBS2lKLFVBQW1CakosRUFBS3NnQixNQUFsRSxDQUtBLEdBQUk1Z0IsR0FBS3dDLEVBQU13
ZCxFQUNkMFIsRUFBVy95QixFQUFPdUUsVUFBVzlCLEdBQzdCd2YsRUFBUXRnQixFQUFLc2dCLEtB
U2QsT0FQQXhmLEdBQU96QyxFQUFPNnlCLFNBQVVFLEtBQ3JCL3lCLEVBQU82eUIsU0FBVUUsR0FB
YTVCLEdBQWdCNEIsSUFBY0EsR0FHL0QxUixFQUFRcmhCLEVBQU9neUIsU0FBVXZ2QixJQUFVekMs
RUFBT2d5QixTQUFVZSxHQUdyQzV2QixTQUFWb0MsRUFvQ0M4YixHQUFTLE9BQVNBLElBQ3dCbGUs
VUFBNUM5QixFQUFNZ2dCLEVBQU1wZ0IsSUFBS1UsR0FBTSxFQUFPOHZCLElBRXpCcHdCLEVBSUQ0
Z0IsRUFBT3hmLElBMUNkb0IsUUFBYzBCLEdBR0EsV0FBVDFCLElBQXVCeEMsRUFBTXlnQixHQUFR
dlcsS0FBTWhHLEtBQWFsRSxFQUFLLEtBQ2pFa0UsRUFBUStjLEdBQVczZ0IsRUFBTWMsRUFBTXBC
LEdBRy9Cd0MsRUFBTyxVQUlNLE1BQVQwQixHQUFpQkEsSUFBVUEsSUFLbEIsV0FBVDFCLElBQ0ow
QixHQUFTbEUsR0FBT0EsRUFBSyxLQUFTckIsRUFBTytpQixVQUFXZ1EsR0FBYSxHQUFLLE9BSTdE
M3pCLEVBQVF5d0IsaUJBQTZCLEtBQVZ0cUIsR0FBaUQsSUFBakM5QyxFQUFLN0QsUUFBUyxnQkFD
OURxakIsRUFBT3hmLEdBQVMsV0FJWDRlLEdBQVksT0FBU0EsSUFDc0JsZSxVQUE5Q29DLEVBQVE4
YixFQUFNakIsSUFBS3plLEVBQU00RCxFQUFPa3NCLE1BRWxDeFAsRUFBT3hmLEdBQVM4QyxJQWxC
akIsVUFtQ0Y0YyxJQUFLLFNBQVV4Z0IsRUFBTWMsRUFBTWd2QixFQUFPRSxHQUNqQyxHQUFJeGhC
LEdBQUtqUCxFQUFLbWdCLEVBQ2IwUixFQUFXL3lCLEVBQU91RSxVQUFXOUIsRUF5QjlCLE9BdEJB
QSxHQUFPekMsRUFBTzZ5QixTQUFVRSxLQUNyQi95QixFQUFPNnlCLFNBQVVFLEdBQWE1QixHQUFn
QjRCLElBQWNBLEdBRy9EMVIsRUFBUXJoQixFQUFPZ3lCLFNBQVV2dkIsSUFBVXpDLEVBQU9neUIs
U0FBVWUsR0FHL0MxUixHQUFTLE9BQVNBLEtBQ3RCbFIsRUFBTWtSLEVBQU1wZ0IsSUFBS1UsR0FB
TSxFQUFNOHZCLElBSWpCdHVCLFNBQVJnTixJQUNKQSxFQUFNK2YsR0FBUXZ1QixFQUFNYyxFQUFN
a3ZCLElBSWQsV0FBUnhoQixHQUFvQjFOLElBQVFxdUIsTUFDaEMzZ0IsRUFBTTJnQixHQUFvQnJ1
QixJQUlaLEtBQVZndkIsR0FBZ0JBLEdBQ3BCdndCLEVBQU1nRCxXQUFZaU0sR0FDWHNoQixLQUFV
LEdBQVF1QixTQUFVOXhCLEdBQVFBLEdBQU8sRUFBSWlQLEdBRWhEQSxLQUlUblEsRUFBT3dCLE1B
QVEsU0FBVSxTQUFXLFNBQVVJLEVBQUdhLEdBQ2hEekMsRUFBT2d5QixTQUFVdnZCLElBQ2hCeEIs
SUFBSyxTQUFVVSxFQUFNd3VCLEVBQVVzQixHQUM5QixHQUFLdEIsRUFJSixPQUFPTyxHQUFhN2tC
LEtBQU03TCxFQUFPbWlCLElBQUt4Z0IsRUFBTSxhQVF4Q0EsRUFBS213QixpQkFBaUIvd0IsUUFB
V1ksRUFBS293Qix3QkFBd0J0QyxNQUloRW1DLEdBQWtCandCLEVBQU1jLEVBQU1ndkIsR0FIOUJy
UCxHQUFNemdCLEVBQU1ndkIsR0FBUyxXQUNwQixNQUFPaUIsSUFBa0Jqd0IsRUFBTWMsRUFBTWd2
QixNQU0xQ3JSLElBQUssU0FBVXplLEVBQU00RCxFQUFPa3NCLEdBQzNCLEdBQUlyc0IsR0FDSHVz
QixFQUFTRixHQUFTM0MsR0FBV250QixHQUM3QjJ2QixFQUFXRyxHQUFTRCxHQUNuQjd2QixFQUNB
YyxFQUNBZ3ZCLEVBQ21ELGVBQW5EenhCLEVBQU9taUIsSUFBS3hnQixFQUFNLGFBQWEsRUFBT2d3
QixHQUN0Q0EsRUFXRixPQVBLTCxLQUFjbHNCLEVBQVUwYyxHQUFRdlcsS0FBTWhHLEtBQ2IsUUFB
M0JILEVBQVMsSUFBTyxRQUVsQnpELEVBQUtzZ0IsTUFBT3hmLEdBQVM4QyxFQUNyQkEsRUFBUXZG
LEVBQU9taUIsSUFBS3hnQixFQUFNYyxJQUdwQjR1QixHQUFtQjF2QixFQUFNNEQsRUFBTytyQixP
QUsxQ3R4QixFQUFPZ3lCLFNBQVN6QyxXQUFhZ0IsR0FBY254QixFQUFRNndCLG1CQUNsRCxTQUFV
dHVCLEVBQU13dUIsR0FDZixHQUFLQSxFQUNKLE9BQVNqc0IsV0FBWWdzQixHQUFRdnVCLEVBQU0s
Z0JBQ2xDQSxFQUFLb3dCLHdCQUF3QmtCLEtBQzVCN1EsR0FBTXpnQixHQUFRNHRCLFdBQVksR0FB
SyxXQUM5QixNQUFPNXRCLEdBQUtvd0Isd0JBQXdCa0IsUUFFbEMsT0FNUmp6QixFQUFPd0IsTUFD
TjB4QixPQUFRLEdBQ1JDLFFBQVMsR0FDVEMsT0FBUSxTQUNOLFNBQVVDLEVBQVFDLEdBQ3BCdHpC
LEVBQU9neUIsU0FBVXFCLEVBQVNDLElBQ3pCQyxPQUFRLFNBQVVodUIsR0FPakIsSUFOQSxHQUFJ
M0QsR0FBSSxFQUNQNHhCLEtBR0FDLEVBQXlCLGdCQUFWbHVCLEdBQXFCQSxFQUFNUyxNQUFPLE1B
QVVULEdBRXBEM0QsRUFBSSxFQUFHQSxJQUNkNHhCLEVBQVVILEVBQVN0UixHQUFXbmdCLEdBQU0w
eEIsR0FDbkNHLEVBQU83eEIsSUFBTzZ4QixFQUFPN3hCLEVBQUksSUFBTzZ4QixFQUFPLEVBR3pD
LE9BQU9ELEtBSUg1RSxHQUFRL2lCLEtBQU13bkIsS0FDbkJyekIsRUFBT2d5QixTQUFVcUIsRUFB
U0MsR0FBU2xULElBQU1pUixNQUkzQ3J4QixFQUFPRyxHQUFHb0MsUUFDVDRmLElBQUssU0FBVTFm
LEVBQU04QyxHQUNwQixNQUFPa2EsR0FBUXRoQixLQUFNLFNBQVV3RCxFQUFNYyxFQUFNOEMsR0FD
MUMsR0FBSW9zQixHQUFRenZCLEVBQ1hSLEtBQ0FFLEVBQUksQ0FFTCxJQUFLNUIsRUFBT2tELFFB
QVNULEdBQVMsQ0FJN0IsSUFIQWt2QixFQUFTN0MsR0FBV250QixHQUNwQk8sRUFBTU8sRUFBSzFC
LE9BRUhhLEVBQUlNLEVBQUtOLElBQ2hCRixFQUFLZSxFQUFNYixJQUFRNUIsRUFBT21pQixJQUFL
eGdCLEVBQU1jLEVBQU1iLElBQUssRUFBTyt2QixFQUd4RCxPQUFPandCLEdBR1IsTUFBaUJ5QixV
QUFWb0MsRUFDTnZGLEVBQU9paUIsTUFBT3RnQixFQUFNYyxFQUFNOEMsR0FDMUJ2RixFQUFPbWlC
LElBQUt4Z0IsRUFBTWMsSUFDakJBLEVBQU04QyxFQUFPekQsVUFBVWYsT0FBUyxNQU9yQ2YsRUFB
T0csR0FBR3V6QixNQUFRLFNBQVVDLEVBQU05dkIsR0FJakMsTUFIQTh2QixHQUFPM3pCLEVBQU80
ekIsR0FBSzV6QixFQUFPNHpCLEdBQUdDLE9BQVFGLElBQVVBLEVBQU9BLEVBQ3REOXZCLEVBQU9B
LEdBQVEsS0FFUjFGLEtBQUs0YyxNQUFPbFgsRUFBTSxTQUFVNkcsRUFBTTJXLEdBQ3hDLEdBQUl5
UyxHQUFVNTFCLEVBQU8rZixXQUFZdlQsRUFBTWlwQixFQUN2Q3RTLEdBQU1FLEtBQU8sV0FDWnJq
QixFQUFPNjFCLGFBQWNELE9BTXhCLFdBQ0MsR0FBSTlrQixHQUFRalIsRUFBUzBCLGNBQWUsU0FD
bkM4RyxFQUFTeEksRUFBUzBCLGNBQWUsVUFDakN1MEIsRUFBTXp0QixFQUFPM0csWUFBYTdCLEVB
QVMwQixjQUFlLFVBRW5EdVAsR0FBTW5MLEtBQU8sV0FJYnpFLEVBQVE2MEIsUUFBMEIsS0FBaEJq
bEIsRUFBTXpKLE1BSXhCbkcsRUFBUTgwQixZQUFjRixFQUFJamdCLFNBSTFCL0UsRUFBUWpSLEVB
QVMwQixjQUFlLFNBQ2hDdVAsRUFBTXpKLE1BQVEsSUFDZHlKLEVBQU1uTCxLQUFPLFFBQ2J6RSxF
QUFRKzBCLFdBQTZCLE1BQWhCbmxCLEVBQU16SixRQUk1QixJQUFJNnVCLElBQ0hubkIsR0FBYWpO
LEVBQU9nUSxLQUFLL0MsVUFFMUJqTixHQUFPRyxHQUFHb0MsUUFDVDJOLEtBQU0sU0FBVXpOLEVB
QU04QyxHQUNyQixNQUFPa2EsR0FBUXRoQixLQUFNNkIsRUFBT2tRLEtBQU16TixFQUFNOEMsRUFB
T3pELFVBQVVmLE9BQVMsSUFHbkVzekIsV0FBWSxTQUFVNXhCLEdBQ3JCLE1BQU90RSxNQUFLcUQs
S0FBTSxXQUNqQnhCLEVBQU9xMEIsV0FBWWwyQixLQUFNc0UsUUFLNUJ6QyxFQUFPdUMsUUFDTjJO
LEtBQU0sU0FBVXZPLEVBQU1jLEVBQU04QyxHQUMzQixHQUFJbEUsR0FBS2dnQixFQUNSaVQsRUFB
UTN5QixFQUFLaUosUUFHZCxJQUFlLElBQVYwcEIsR0FBeUIsSUFBVkEsR0FBeUIsSUFBVkEsRUFL
bkMsTUFBa0MsbUJBQXRCM3lCLEdBQUttSyxhQUNUOUwsRUFBT3NnQixLQUFNM2UsRUFBTWMsRUFB
TThDLElBS2xCLElBQVYrdUIsR0FBZ0J0MEIsRUFBT2tZLFNBQVV2VyxLQUNyQzBmLEVBQVFyaEIs
RUFBT3UwQixVQUFXOXhCLEVBQUtpQyxpQkFDNUIxRSxFQUFPZ1EsS0FBSzlFLE1BQU1qQyxLQUFL
NEMsS0FBTXBKLEdBQVMyeEIsR0FBV2p4QixTQUd0Q0EsU0FBVm9DLEVBQ1csT0FBVkEsTUFDSnZG
LEdBQU9xMEIsV0FBWTF5QixFQUFNYyxHQUlyQjRlLEdBQVMsT0FBU0EsSUFDdUJsZSxVQUEzQzlC
LEVBQU1nZ0IsRUFBTWpCLElBQUt6ZSxFQUFNNEQsRUFBTzlDLElBQ3pCcEIsR0FHUk0sRUFBS29L
LGFBQWN0SixFQUFNOEMsRUFBUSxJQUMxQkEsR0FHSDhiLEdBQVMsT0FBU0EsSUFBK0MsUUFBcENo
Z0IsRUFBTWdnQixFQUFNcGdCLElBQUtVLEVBQU1jLElBQ2pEcEIsR0FHUkEsRUFBTXJCLEVBQU80
TyxLQUFLc0IsS0FBTXZPLEVBQU1jLEdBR2hCLE1BQVBwQixFQUFjOEIsT0FBWTlCLEtBR2xDa3pC
LFdBQ0Mxd0IsTUFDQ3VjLElBQUssU0FBVXplLEVBQU00RCxHQUNwQixJQUFNbkcsRUFBUSswQixZ
QUF3QixVQUFWNXVCLEdBQzNCdkYsRUFBT3lFLFNBQVU5QyxFQUFNLFNBQVksQ0FDbkMsR0FBSXdP
LEdBQU14TyxFQUFLNEQsS0FLZixPQUpBNUQsR0FBS29LLGFBQWMsT0FBUXhHLEdBQ3RCNEssSUFD
SnhPLEVBQUs0RCxNQUFRNEssR0FFUDVLLE1BTVg4dUIsV0FBWSxTQUFVMXlCLEVBQU00RCxHQUMz
QixHQUFJOUMsR0FDSGIsRUFBSSxFQUlKNHlCLEVBQVlqdkIsR0FBU0EsRUFBTTJGLE1BQU9vUCxF
QUVuQyxJQUFLa2EsR0FBK0IsSUFBbEI3eUIsRUFBS2lKLFNBQ3RCLE1BQVVuSSxFQUFPK3hCLEVB
QVc1eUIsS0FDM0JELEVBQUswSyxnQkFBaUI1SixNQU8xQjJ4QixJQUNDaFUsSUFBSyxTQUFVemUs
RUFBTTRELEVBQU85QyxHQVEzQixNQVBLOEMsTUFBVSxFQUdkdkYsRUFBT3EwQixXQUFZMXlCLEVB
QU1jLEdBRXpCZCxFQUFLb0ssYUFBY3RKLEVBQU1BLEdBRW5CQSxJQUlUekMsRUFBT3dCLEtBQU14
QixFQUFPZ1EsS0FBSzlFLE1BQU1qQyxLQUFLNFksT0FBTzNXLE1BQU8sUUFBVSxTQUFVdEosRUFB
R2EsR0FDeEUsR0FBSWd5QixHQUFTeG5CLEdBQVl4SyxJQUFVekMsRUFBTzRPLEtBQUtzQixJQUUv
Q2pELElBQVl4SyxHQUFTLFNBQVVkLEVBQU1jLEVBQU0yRCxHQUMxQyxHQUFJL0UsR0FBSzRsQixF
QUNSeU4sRUFBZ0JqeUIsRUFBS2lDLGFBWXRCLE9BVk0wQixLQUdMNmdCLEVBQVNoYSxHQUFZeW5C
LEdBQ3JCem5CLEdBQVl5bkIsR0FBa0JyekIsRUFDOUJBLEVBQXFDLE1BQS9Cb3pCLEVBQVE5eUIs
RUFBTWMsRUFBTTJELEdBQ3pCc3VCLEVBQ0EsS0FDRHpuQixHQUFZeW5CLEdBQWtCek4sR0FFeEI1
bEIsSUFPVCxJQUFJc3pCLElBQWEsc0NBQ2hCQyxHQUFhLGVBRWQ1MEIsR0FBT0csR0FBR29DLFFB
Q1QrZCxLQUFNLFNBQVU3ZCxFQUFNOEMsR0FDckIsTUFBT2thLEdBQVF0aEIsS0FBTTZCLEVBQU9z
Z0IsS0FBTTdkLEVBQU04QyxFQUFPekQsVUFBVWYsT0FBUyxJQUduRTh6QixXQUFZLFNBQVVweUIs
R0FDckIsTUFBT3RFLE1BQUtxRCxLQUFNLGlCQUNWckQsTUFBTTZCLEVBQU84MEIsUUFBU3J5QixJ
QUFVQSxRQUsxQ3pDLEVBQU91QyxRQUNOK2QsS0FBTSxTQUFVM2UsRUFBTWMsRUFBTThDLEdBQzNC
LEdBQUlsRSxHQUFLZ2dCLEVBQ1JpVCxFQUFRM3lCLEVBQUtpSixRQUdkLElBQWUsSUFBVjBwQixH
QUF5QixJQUFWQSxHQUF5QixJQUFWQSxFQVduQyxNQVBlLEtBQVZBLEdBQWdCdDBCLEVBQU9rWSxT
QUFVdlcsS0FHckNjLEVBQU96QyxFQUFPODBCLFFBQVNyeUIsSUFBVUEsRUFDakM0ZSxFQUFRcmhC
LEVBQU8rMEIsVUFBV3R5QixJQUdaVSxTQUFWb0MsRUFDQzhiLEdBQVMsT0FBU0EsSUFDdUJsZSxV
QUEzQzlCLEVBQU1nZ0IsRUFBTWpCLElBQUt6ZSxFQUFNNEQsRUFBTzlDLElBQ3pCcEIsRUFHQ00s
RUFBTWMsR0FBUzhDLEVBR3BCOGIsR0FBUyxPQUFTQSxJQUErQyxRQUFwQ2hnQixFQUFNZ2dCLEVB
QU1wZ0IsSUFBS1UsRUFBTWMsSUFDakRwQixFQUdETSxFQUFNYyxJQUdkc3lCLFdBQ0NuaEIsVUFD
QzNTLElBQUssU0FBVVUsR0FPZCxHQUFJcXpCLEdBQVdoMUIsRUFBTzRPLEtBQUtzQixLQUFNdk8s
RUFBTSxXQUV2QyxPQUFLcXpCLEdBQ0dDLFNBQVVELEVBQVUsSUFJM0JMLEdBQVc5b0IsS0FBTWxL
LEVBQUs4QyxXQUN0Qm13QixHQUFXL29CLEtBQU1sSyxFQUFLOEMsV0FDdEI5QyxFQUFLZ1MsS0FF
RSxRQVFYbWhCLFNBQ0NJLE1BQU8sVUFDUEMsUUFBUyxlQVlMLzFCLEVBQVE4MEIsY0FDYmwwQixF
QUFPKzBCLFVBQVVoaEIsVUFDaEI5UyxJQUFLLFNBQVVVLEdBSWQsR0FBSTJRLEdBQVMzUSxFQUFL
OUIsVUFJbEIsT0FIS3lTLElBQVVBLEVBQU96UyxZQUNyQnlTLEVBQU96UyxXQUFXbVUsY0FFWixN
QUVSb00sSUFBSyxTQUFVemUsR0FJZCxHQUFJMlEsR0FBUzNRLEVBQUs5QixVQUNieVMsS0FDSkEs
RUFBTzBCLGNBRUYxQixFQUFPelMsWUFDWHlTLEVBQU96UyxXQUFXbVUsa0JBT3ZCaFUsRUFBT3dC
LE1BQ04sV0FDQSxXQUNBLFlBQ0EsY0FDQSxjQUNBLFVBQ0EsVUFDQSxTQUNBLGNBQ0EsbUJBQ0Us
V0FDRnhCLEVBQU84MEIsUUFBUzMyQixLQUFLdUcsZUFBa0J2RyxNQVF2QyxTQUFTaTNCLElBQWtC
N3ZCLEdBQzFCLEdBQUkwUCxHQUFTMVAsRUFBTTJGLE1BQU9vUCxNQUMxQixPQUFPckYsR0FBT2hK
LEtBQU0sS0FJdEIsUUFBU29wQixJQUFVMXpCLEdBQ2xCLE1BQU9BLEdBQUttSyxjQUFnQm5LLEVB
QUttSyxhQUFjLFVBQWEsR0FHN0Q5TCxFQUFPRyxHQUFHb0MsUUFDVCt5QixTQUFVLFNBQVUvdkIs
R0FDbkIsR0FBSWd3QixHQUFTNXpCLEVBQU13TCxFQUFLcW9CLEVBQVVDLEVBQU90ekIsRUFBR3V6
QixFQUMzQzl6QixFQUFJLENBRUwsSUFBSzVCLEVBQU9nRCxXQUFZdUMsR0FDdkIsTUFBT3BILE1B
QUtxRCxLQUFNLFNBQVVXLEdBQzNCbkMsRUFBUTdCLE1BQU9tM0IsU0FBVS92QixFQUFNcEcsS0FB
TWhCLEtBQU1nRSxFQUFHa3pCLEdBQVVsM0IsU0FJMUQsSUFBc0IsZ0JBQVZvSCxJQUFzQkEsRUFB
USxDQUN6Q2d3QixFQUFVaHdCLEVBQU0yRixNQUFPb1AsTUFFdkIsT0FBVTNZLEVBQU94RCxLQUFN
eUQsS0FJdEIsR0FIQTR6QixFQUFXSCxHQUFVMXpCLEdBQ3JCd0wsRUFBd0IsSUFBbEJ4TCxFQUFL
aUosVUFBb0IsSUFBTXdxQixHQUFrQkksR0FBYSxJQUV6RCxDQUNWcnpCLEVBQUksQ0FDSixPQUFV
c3pCLEVBQVFGLEVBQVNwekIsS0FDckJnTCxFQUFJdk8sUUFBUyxJQUFNNjJCLEVBQVEsS0FBUSxJ
QUN2Q3RvQixHQUFPc29CLEVBQVEsSUFLakJDLEdBQWFOLEdBQWtCam9CLEdBQzFCcW9CLElBQWFF
LEdBQ2pCL3pCLEVBQUtvSyxhQUFjLFFBQVMycEIsSUFNaEMsTUFBT3YzQixPQUdSdzNCLFlBQWEs
U0FBVXB3QixHQUN0QixHQUFJZ3dCLEdBQVM1ekIsRUFBTXdMLEVBQUtxb0IsRUFBVUMsRUFBT3R6
QixFQUFHdXpCLEVBQzNDOXpCLEVBQUksQ0FFTCxJQUFLNUIsRUFBT2dELFdBQVl1QyxHQUN2QixN
QUFPcEgsTUFBS3FELEtBQU0sU0FBVVcsR0FDM0JuQyxFQUFRN0IsTUFBT3czQixZQUFhcHdCLEVB
QU1wRyxLQUFNaEIsS0FBTWdFLEVBQUdrekIsR0FBVWwzQixTQUk3RCxLQUFNMkQsVUFBVWYsT0FD
ZixNQUFPNUMsTUFBSytSLEtBQU0sUUFBUyxHQUc1QixJQUFzQixnQkFBVjNLLElBQXNCQSxFQUFR
LENBQ3pDZ3dCLEVBQVVod0IsRUFBTTJGLE1BQU9vUCxNQUV2QixPQUFVM1ksRUFBT3hELEtBQU15
RCxLQU10QixHQUxBNHpCLEVBQVdILEdBQVUxekIsR0FHckJ3TCxFQUF3QixJQUFsQnhMLEVBQUtp
SixVQUFvQixJQUFNd3FCLEdBQWtCSSxHQUFhLElBRXpELENBQ1ZyekIsRUFBSSxDQUNKLE9BQVVz
ekIsRUFBUUYsRUFBU3B6QixLQUcxQixNQUFRZ0wsRUFBSXZPLFFBQVMsSUFBTTYyQixFQUFRLFFB
Q2xDdG9CLEVBQU1BLEVBQUk1SixRQUFTLElBQU1reUIsRUFBUSxJQUFLLElBS3hDQyxHQUFhTixH
QUFrQmpvQixHQUMxQnFvQixJQUFhRSxHQUNqQi96QixFQUFLb0ssYUFBYyxRQUFTMnBCLElBTWhD
LE1BQU92M0IsT0FHUnkzQixZQUFhLFNBQVVyd0IsRUFBT3N3QixHQUM3QixHQUFJaHlCLFNBQWMw
QixFQUVsQixPQUF5QixpQkFBYnN3QixJQUFtQyxXQUFUaHlCLEVBQzlCZ3lCLEVBQVcxM0IsS0FB
S20zQixTQUFVL3ZCLEdBQVVwSCxLQUFLdzNCLFlBQWFwd0IsR0FHekR2RixFQUFPZ0QsV0FBWXVD
LEdBQ2hCcEgsS0FBS3FELEtBQU0sU0FBVUksR0FDM0I1QixFQUFRN0IsTUFBT3kzQixZQUNkcndC
LEVBQU1wRyxLQUFNaEIsS0FBTXlELEVBQUd5ekIsR0FBVWwzQixNQUFRMDNCLEdBQ3ZDQSxLQUtJ
MTNCLEtBQUtxRCxLQUFNLFdBQ2pCLEdBQUk4TSxHQUFXMU0sRUFBR2tYLEVBQU1nZCxDQUV4QixJ
QUFjLFdBQVRqeUIsRUFBb0IsQ0FHeEJqQyxFQUFJLEVBQ0prWCxFQUFPOVksRUFBUTdCLE1BQ2Yy
M0IsRUFBYXZ3QixFQUFNMkYsTUFBT29QLE1BRTFCLE9BQVVoTSxFQUFZd25CLEVBQVlsMEIsS0FH
NUJrWCxFQUFLaWQsU0FBVXpuQixHQUNuQndLLEVBQUs2YyxZQUFhcm5CLEdBRWxCd0ssRUFBS3dj
LFNBQVVobkIsT0FLSW5MLFVBQVZvQyxHQUFnQyxZQUFUMUIsSUFDbEN5SyxFQUFZK21CLEdBQVVs
M0IsTUFDakJtUSxHQUdKa1MsRUFBU0osSUFBS2ppQixLQUFNLGdCQUFpQm1RLEdBT2pDblEsS0FB
SzROLGNBQ1Q1TixLQUFLNE4sYUFBYyxRQUNsQnVDLEdBQWEvSSxLQUFVLEVBQ3ZCLEdBQ0FpYixF
QUFTdmYsSUFBSzlDLEtBQU0sa0JBQXFCLFFBTzlDNDNCLFNBQVUsU0FBVTkxQixHQUNuQixHQUFJ
cU8sR0FBVzNNLEVBQ2RDLEVBQUksQ0FFTDBNLEdBQVksSUFBTXJPLEVBQVcsR0FDN0IsT0FBVTBC
LEVBQU94RCxLQUFNeUQsS0FDdEIsR0FBdUIsSUFBbEJELEVBQUtpSixXQUNQLElBQU13cUIsR0FB
a0JDLEdBQVUxekIsSUFBVyxLQUFNL0MsUUFBUzBQLE1BQzdELE9BQU8sQ0FJVixRQUFPLElBT1Qs
SUFBSTBuQixJQUFVLEtBRWRoMkIsR0FBT0csR0FBR29DLFFBQ1Q0TixJQUFLLFNBQVU1SyxHQUNk
LEdBQUk4YixHQUFPaGdCLEVBQUsyQixFQUNmckIsRUFBT3hELEtBQU0sRUFFZCxFQUFBLEdBQU0y
RCxVQUFVZixPQTRCaEIsTUFGQWlDLEdBQWFoRCxFQUFPZ0QsV0FBWXVDLEdBRXpCcEgsS0FBS3FE
LEtBQU0sU0FBVUksR0FDM0IsR0FBSXVPLEVBRW1CLEtBQWxCaFMsS0FBS3lNLFdBS1R1RixFQURJ
bk4sRUFDRXVDLEVBQU1wRyxLQUFNaEIsS0FBTXlELEVBQUc1QixFQUFRN0IsTUFBT2dTLE9BRXBD
NUssRUFJSyxNQUFQNEssRUFDSkEsRUFBTSxHQUVvQixnQkFBUkEsR0FDbEJBLEdBQU8sR0FFSW5R
LEVBQU9rRCxRQUFTaU4sS0FDM0JBLEVBQU1uUSxFQUFPMEIsSUFBS3lPLEVBQUssU0FBVTVLLEdB
Q2hDLE1BQWdCLE9BQVRBLEVBQWdCLEdBQUtBLEVBQVEsTUFJdEM4YixFQUFRcmhCLEVBQU9pMkIs
U0FBVTkzQixLQUFLMEYsT0FBVTdELEVBQU9pMkIsU0FBVTkzQixLQUFLc0csU0FBU0MsZUFHakUy
YyxHQUFZLE9BQVNBLElBQStDbGUsU0FBcENrZSxFQUFNakIsSUFBS2ppQixLQUFNZ1MsRUFBSyxX
QUMzRGhTLEtBQUtvSCxNQUFRNEssS0F6RGQsSUFBS3hPLEVBSUosTUFIQTBmLEdBQVFyaEIsRUFB
T2kyQixTQUFVdDBCLEVBQUtrQyxPQUM3QjdELEVBQU9pMkIsU0FBVXQwQixFQUFLOEMsU0FBU0Ms
ZUFFM0IyYyxHQUNKLE9BQVNBLElBQ2dDbGUsVUFBdkM5QixFQUFNZ2dCLEVBQU1wZ0IsSUFBS1Us
RUFBTSxVQUVsQk4sR0FHUkEsRUFBTU0sRUFBSzRELE1BR1MsZ0JBQVJsRSxHQUNKQSxFQUFJa0Ms
UUFBU3l5QixHQUFTLElBSWhCLE1BQVAzMEIsRUFBYyxHQUFLQSxPQTRDOUJyQixFQUFPdUMsUUFD
TjB6QixVQUNDcFMsUUFDQzVpQixJQUFLLFNBQVVVLEdBRWQsR0FBSXdPLEdBQU1uUSxFQUFPNE8s
S0FBS3NCLEtBQU12TyxFQUFNLFFBQ2xDLE9BQWMsT0FBUHdPLEVBQ05BLEVBTUFpbEIsR0FBa0Jw
MUIsRUFBT04sS0FBTWlDLE1BR2xDNEUsUUFDQ3RGLElBQUssU0FBVVUsR0FDZCxHQUFJNEQsR0FB
T3NlLEVBQVFqaUIsRUFDbEJZLEVBQVViLEVBQUthLFFBQ2ZrWCxFQUFRL1gsRUFBS3FTLGNBQ2Jv
UyxFQUFvQixlQUFkemtCLEVBQUtrQyxLQUNYeWYsRUFBUzhDLEVBQU0sUUFDZm1MLEVBQU1uTCxF
QUFNMU0sRUFBUSxFQUFJbFgsRUFBUXpCLE1BVWpDLEtBUENhLEVBREk4WCxFQUFRLEVBQ1I2WCxF
QUdBbkwsRUFBTTFNLEVBQVEsRUFJWDlYLEVBQUkydkIsRUFBSzN2QixJQUtoQixHQUpBaWlCLEVB
QVNyaEIsRUFBU1osSUFJWGlpQixFQUFPOVAsVUFBWW5TLElBQU04WCxLQUc3Qm1LLEVBQU9yWixZ
QUNMcVosRUFBT2hrQixXQUFXMkssV0FDbkJ4SyxFQUFPeUUsU0FBVW9mLEVBQU9oa0IsV0FBWSxh
QUFpQixDQU14RCxHQUhBMEYsRUFBUXZGLEVBQVE2akIsR0FBUzFULE1BR3BCaVcsRUFDSixNQUFP
N2dCLEVBSVIrZCxHQUFPM2tCLEtBQU00RyxHQUlmLE1BQU8rZCxJQUdSbEQsSUFBSyxTQUFVemUs
RUFBTTRELEdBQ3BCLEdBQUkyd0IsR0FBV3JTLEVBQ2RyaEIsRUFBVWIsRUFBS2EsUUFDZjhnQixF
QUFTdGpCLEVBQU82RSxVQUFXVSxHQUMzQjNELEVBQUlZLEVBQVF6QixNQUViLE9BQVFhLElBQ1Bp
aUIsRUFBU3JoQixFQUFTWixJQUliaWlCLEVBQU85UCxTQUNYL1QsRUFBTytFLFFBQVMvRSxFQUFP
aTJCLFNBQVNwUyxPQUFPNWlCLElBQUs0aUIsR0FBVVAsU0FFdEQ0UyxHQUFZLEVBVWQsT0FITUEs
S0FDTHYwQixFQUFLcVMsa0JBRUNzUCxPQU9YdGpCLEVBQU93QixNQUFRLFFBQVMsWUFBYyxXQUNy
Q3hCLEVBQU9pMkIsU0FBVTkzQixPQUNoQmlpQixJQUFLLFNBQVV6ZSxFQUFNNEQsR0FDcEIsR0FB
S3ZGLEVBQU9rRCxRQUFTcUMsR0FDcEIsTUFBUzVELEdBQUttUyxRQUFVOVQsRUFBTytFLFFBQVMv
RSxFQUFRMkIsR0FBT3dPLE1BQU81SyxRQUkzRG5HLEVBQVE2MEIsVUFDYmowQixFQUFPaTJCLFNB
QVU5M0IsTUFBTzhDLElBQU0sU0FBVVUsR0FDdkMsTUFBd0MsUUFBakNBLEVBQUttSyxhQUFjLFNB
QXFCLEtBQU9uSyxFQUFLNEQsU0FXOUQsSUFBSTR3QixJQUFjLGlDQUVsQm4yQixHQUFPdUMsT0FB
UXZDLEVBQU9zbUIsT0FFckI2QyxRQUFTLFNBQVU3QyxFQUFPakcsRUFBTTFlLEVBQU15MEIsR0FF
ckMsR0FBSXgwQixHQUFHdUwsRUFBS3pILEVBQUsyd0IsRUFBWUMsRUFBUXJQLEVBQVEzSixFQUM1
Q2laLEdBQWM1MEIsR0FBUTVELEdBQ3RCOEYsRUFBTzlFLEVBQU9JLEtBQU1tbkIsRUFBTyxRQUFX
QSxFQUFNemlCLEtBQU95aUIsRUFDbkRRLEVBQWEvbkIsRUFBT0ksS0FBTW1uQixFQUFPLGFBQWdC
QSxFQUFNZ0IsVUFBVXRoQixNQUFPLE9BS3pFLElBSEFtSCxFQUFNekgsRUFBTS9ELEVBQU9BLEdB
QVE1RCxFQUdKLElBQWxCNEQsRUFBS2lKLFVBQW9DLElBQWxCakosRUFBS2lKLFdBSzVCdXJCLEdB
QVl0cUIsS0FBTWhJLEVBQU83RCxFQUFPc21CLE1BQU1ZLGFBSXRDcmpCLEVBQUtqRixRQUFTLFVB
R2xCa29CLEVBQWFqakIsRUFBS21DLE1BQU8sS0FDekJuQyxFQUFPaWpCLEVBQVdwYSxRQUNsQm9h
LEVBQVd6a0IsUUFFWmkwQixFQUFTenlCLEVBQUtqRixRQUFTLEtBQVEsR0FBSyxLQUFPaUYsRUFH
M0N5aUIsRUFBUUEsRUFBT3RtQixFQUFPb0QsU0FDckJrakIsRUFDQSxHQUFJdG1CLEdBQU82b0Is
TUFBT2hsQixFQUF1QixnQkFBVnlpQixJQUFzQkEsR0FHdERBLEVBQU1rUSxVQUFZSixFQUFlLEVB
QUksRUFDckM5UCxFQUFNZ0IsVUFBWVIsRUFBVzdhLEtBQU0sS0FDbkNxYSxFQUFNK0IsV0FBYS9C
LEVBQU1nQixVQUN4QixHQUFJbGYsUUFBUSxVQUFZMGUsRUFBVzdhLEtBQU0saUJBQW9CLFdBQzdE
LEtBR0RxYSxFQUFNMVUsT0FBU3pPLE9BQ1RtakIsRUFBTXhqQixTQUNYd2pCLEVBQU14akIsT0FB
U25CLEdBSWhCMGUsRUFBZSxNQUFSQSxHQUNKaUcsR0FDRnRtQixFQUFPNkUsVUFBV3diLEdBQVFp
RyxJQUczQmhKLEVBQVV0ZCxFQUFPc21CLE1BQU1oSixRQUFTelosT0FDMUJ1eUIsSUFBZ0I5WSxF
QUFRNkwsU0FBVzdMLEVBQVE2TCxRQUFRdG5CLE1BQU9GLEVBQU0wZSxNQUFXLEdBQWpGLENBTUEs
SUFBTStWLElBQWlCOVksRUFBUTRMLFdBQWFscEIsRUFBTytELFNBQVVwQyxHQUFTLENBTXJFLElB
SkEwMEIsRUFBYS9ZLEVBQVE4SixjQUFnQnZqQixFQUMvQnN5QixHQUFZdHFCLEtBQU13cUIsRUFB
YXh5QixLQUNwQ3NKLEVBQU1BLEVBQUl0TixZQUVIc04sRUFBS0EsRUFBTUEsRUFBSXROLFdBQ3RC
MDJCLEVBQVU1M0IsS0FBTXdPLEdBQ2hCekgsRUFBTXlILENBSUZ6SCxNQUFVL0QsRUFBSzJKLGVB
QWlCdk4sSUFDcEN3NEIsRUFBVTUzQixLQUFNK0csRUFBSXdJLGFBQWV4SSxFQUFJK3dCLGNBQWdC
djRCLEdBS3pEMEQsRUFBSSxDQUNKLFFBQVV1TCxFQUFNb3BCLEVBQVczMEIsUUFBWTBrQixFQUFN
NEIsdUJBRTVDNUIsRUFBTXppQixLQUFPakMsRUFBSSxFQUNoQnkwQixFQUNBL1ksRUFBUStKLFVB
QVl4akIsRUFHckJvakIsR0FBV3pHLEVBQVN2ZixJQUFLa00sRUFBSyxlQUFvQm1aLEVBQU16aUIs
T0FDdkQyYyxFQUFTdmYsSUFBS2tNLEVBQUssVUFDZjhaLEdBQ0pBLEVBQU9wbEIsTUFBT3NMLEVB
QUtrVCxHQUlwQjRHLEVBQVNxUCxHQUFVbnBCLEVBQUttcEIsR0FDbkJyUCxHQUFVQSxFQUFPcGxC
LE9BQVNpZSxFQUFZM1MsS0FDMUNtWixFQUFNMVUsT0FBU3FWLEVBQU9wbEIsTUFBT3NMLEVBQUtr
VCxHQUM3QmlHLEVBQU0xVSxVQUFXLEdBQ3JCMFUsRUFBTWdDLGlCQW9DVCxPQWhDQWhDLEdBQU16
aUIsS0FBT0EsRUFHUHV5QixHQUFpQjlQLEVBQU1tRCxzQkFFcEJuTSxFQUFRNEcsVUFDZjVHLEVB
QVE0RyxTQUFTcmlCLE1BQU8wMEIsRUFBVTV1QixNQUFPMFksTUFBVyxJQUNwRFAsRUFBWW5lLElB
SVAyMEIsR0FBVXQyQixFQUFPZ0QsV0FBWXJCLEVBQU1rQyxNQUFhN0QsRUFBTytELFNBQVVwQyxL
QUdyRStELEVBQU0vRCxFQUFNMjBCLEdBRVA1d0IsSUFDSi9ELEVBQU0yMEIsR0FBVyxNQUlsQnQy
QixFQUFPc21CLE1BQU1ZLFVBQVlyakIsRUFDekJsQyxFQUFNa0MsS0FDTjdELEVBQU9zbUIsTUFB
TVksVUFBWS9qQixPQUVwQnVDLElBQ0ovRCxFQUFNMjBCLEdBQVc1d0IsSUFNZDRnQixFQUFNMVUs
U0FLZDhrQixTQUFVLFNBQVU3eUIsRUFBTWxDLEVBQU0ya0IsR0FDL0IsR0FBSXpiLEdBQUk3SyxF
QUFPdUMsT0FDZCxHQUFJdkMsR0FBTzZvQixNQUNYdkMsR0FFQ3ppQixLQUFNQSxFQUNOZ21CLGFB
QWEsR0FJZjdwQixHQUFPc21CLE1BQU02QyxRQUFTdGUsRUFBRyxLQUFNbEosTUFLakMzQixFQUFP
RyxHQUFHb0MsUUFFVDRtQixRQUFTLFNBQVV0bEIsRUFBTXdjLEdBQ3hCLE1BQU9saUIsTUFBS3FE
LEtBQU0sV0FDakJ4QixFQUFPc21CLE1BQU02QyxRQUFTdGxCLEVBQU13YyxFQUFNbGlCLFNBR3BD
dzRCLGVBQWdCLFNBQVU5eUIsRUFBTXdjLEdBQy9CLEdBQUkxZSxHQUFPeEQsS0FBTSxFQUNqQixJ
QUFLd0QsRUFDSixNQUFPM0IsR0FBT3NtQixNQUFNNkMsUUFBU3RsQixFQUFNd2MsRUFBTTFlLEdB
QU0sTUFNbEQzQixFQUFPd0IsS0FBTSx3TEFFZ0R3RSxNQUFPLEtBQ25FLFNBQVVwRSxFQUFHYSxH
QUdiekMsRUFBT0csR0FBSXNDLEdBQVMsU0FBVTRkLEVBQU1sZ0IsR0FDbkMsTUFBTzJCLFdBQVVm
LE9BQVMsRUFDekI1QyxLQUFLK25CLEdBQUl6akIsRUFBTSxLQUFNNGQsRUFBTWxnQixHQUMzQmhD
LEtBQUtnckIsUUFBUzFtQixNQUlqQnpDLEVBQU9HLEdBQUdvQyxRQUNUcTBCLE1BQU8sU0FBVUMs
RUFBUUMsR0FDeEIsTUFBTzM0QixNQUFLd3RCLFdBQVlrTCxHQUFTakwsV0FBWWtMLEdBQVNELE1B
T3hEejNCLEVBQVEyM0IsUUFBVSxhQUFlNzRCLEdBVzNCa0IsRUFBUTIzQixTQUNiLzJCLEVBQU93
QixNQUFRZ1MsTUFBTyxVQUFXNFYsS0FBTSxZQUFjLFNBQVUyQyxFQUFNakUsR0FHcEUsR0FBSTlh
LEdBQVUsU0FBVXNaLEdBQ3ZCdG1CLEVBQU9zbUIsTUFBTW9RLFNBQVU1TyxFQUFLeEIsRUFBTXhq
QixPQUFROUMsRUFBT3NtQixNQUFNd0IsSUFBS3hCLElBRzdEdG1CLEdBQU9zbUIsTUFBTWhKLFFB
QVN3SyxJQUNyQk4sTUFBTyxXQUNOLEdBQUlqb0IsR0FBTXBCLEtBQUttTixlQUFpQm5OLEtBQy9C
NjRCLEVBQVd4VyxFQUFTZixPQUFRbGdCLEVBQUt1b0IsRUFFNUJrUCxJQUNMejNCLEVBQUk2Tyxp
QkFBa0IyZCxFQUFNL2UsR0FBUyxHQUV0Q3dULEVBQVNmLE9BQVFsZ0IsRUFBS3VvQixHQUFPa1As
R0FBWSxHQUFNLElBRWhEclAsU0FBVSxXQUNULEdBQUlwb0IsR0FBTXBCLEtBQUttTixlQUFpQm5O
LEtBQy9CNjRCLEVBQVd4VyxFQUFTZixPQUFRbGdCLEVBQUt1b0IsR0FBUSxDQUVwQ2tQLEdBS0x4
VyxFQUFTZixPQUFRbGdCLEVBQUt1b0IsRUFBS2tQLElBSjNCejNCLEVBQUkrZixvQkFBcUJ5TSxF
QUFNL2UsR0FBUyxHQUN4Q3dULEVBQVNwRixPQUFRN2IsRUFBS3VvQixPQVczQixJQUNDbVAsSUFB
VyxRQUNYQyxHQUFRLFNBQ1JDLEdBQWtCLHdDQUNsQkMsR0FBZSxvQ0FFaEIsU0FBU0MsSUFBYWhF
LEVBQVF6dkIsRUFBSzB6QixFQUFhMWQsR0FDL0MsR0FBSW5YLEVBRUosSUFBS3pDLEVBQU9rRCxR
QUFTVSxHQUdwQjVELEVBQU93QixLQUFNb0MsRUFBSyxTQUFVaEMsRUFBRzZaLEdBQ3pCNmIsR0FB
ZUwsR0FBU3ByQixLQUFNd25CLEdBR2xDelosRUFBS3laLEVBQVE1WCxHQUtiNGIsR0FDQ2hFLEVB
QVMsS0FBcUIsZ0JBQU41WCxJQUF1QixNQUFMQSxFQUFZN1osRUFBSSxJQUFPLElBQ2pFNlosRUFD
QTZiLEVBQ0ExZDtPQUtHLElBQU0wZCxHQUFzQyxXQUF2QnQzQixFQUFPNkQsS0FBTUQsR0FVeENn
VyxFQUFLeVosRUFBUXp2QixPQVBiLEtBQU1uQixJQUFRbUIsR0FDYnl6QixHQUFhaEUsRUFBUyxJ
QUFNNXdCLEVBQU8sSUFBS21CLEVBQUtuQixHQUFRNjBCLEVBQWExZCxHQVlyRTVaLEVBQU91M0Is
TUFBUSxTQUFVOXZCLEVBQUc2dkIsR0FDM0IsR0FBSWpFLEdBQ0htRSxLQUNBNWQsRUFBTSxTQUFV
cE4sRUFBS2lyQixHQUdwQixHQUFJbHlCLEdBQVF2RixFQUFPZ0QsV0FBWXkwQixHQUM5QkEsSUFD
QUEsQ0FFREQsR0FBR0EsRUFBRXoyQixRQUFXMjJCLG1CQUFvQmxyQixHQUFRLElBQzNDa3JCLG1C
QUE2QixNQUFUbnlCLEVBQWdCLEdBQUtBLEdBSTVDLElBQUt2RixFQUFPa0QsUUFBU3VFLElBQVNB
LEVBQUU1RyxTQUFXYixFQUFPaUQsY0FBZXdFLEdBR2hFekgsRUFBT3dCLEtBQU1pRyxFQUFHLFdB
Q2ZtUyxFQUFLemIsS0FBS3NFLEtBQU10RSxLQUFLb0gsYUFPdEIsS0FBTTh0QixJQUFVNXJCLEdB
Q2Y0dkIsR0FBYWhFLEVBQVE1ckIsRUFBRzRyQixHQUFVaUUsRUFBYTFkLEVBS2pELE9BQU80ZCxH
QUFFdnJCLEtBQU0sTUFHaEJqTSxFQUFPRyxHQUFHb0MsUUFDVG8xQixVQUFXLFdBQ1YsTUFBTzMz
QixHQUFPdTNCLE1BQU9wNUIsS0FBS3k1QixtQkFFM0JBLGVBQWdCLFdBQ2YsTUFBT3o1QixNQUFL
dUQsSUFBSyxXQUdoQixHQUFJdU8sR0FBV2pRLEVBQU9zZ0IsS0FBTW5pQixLQUFNLFdBQ2xDLE9B
QU84UixHQUFXalEsRUFBTzZFLFVBQVdvTCxHQUFhOVIsT0FFakR1USxPQUFRLFdBQ1IsR0FBSTdL
LEdBQU8xRixLQUFLMEYsSUFHaEIsT0FBTzFGLE1BQUtzRSxPQUFTekMsRUFBUTdCLE1BQU9tYSxH
QUFJLGNBQ3ZDOGUsR0FBYXZyQixLQUFNMU4sS0FBS3NHLFlBQWUweUIsR0FBZ0J0ckIsS0FBTWhJ
LEtBQzNEMUYsS0FBSzJWLFVBQVkyUCxHQUFlNVgsS0FBTWhJLE1BRXpDbkMsSUFBSyxTQUFVRSxF
QUFHRCxHQUNsQixHQUFJd08sR0FBTW5RLEVBQVE3QixNQUFPZ1MsS0FFekIsT0FBWSxPQUFQQSxF
QUNHLEtBR0huUSxFQUFPa0QsUUFBU2lOLEdBQ2JuUSxFQUFPMEIsSUFBS3lPLEVBQUssU0FBVUEs
R0FDakMsT0FBUzFOLEtBQU1kLEVBQUtjLEtBQU04QyxNQUFPNEssRUFBSTVNLFFBQVMyekIsR0FB
TyxZQUk5Q3owQixLQUFNZCxFQUFLYyxLQUFNOEMsTUFBTzRLLEVBQUk1TSxRQUFTMnpCLEdBQU8s
V0FDbERqMkIsU0FLTmpCLEVBQU9HLEdBQUdvQyxRQUNUczFCLFFBQVMsU0FBVXhLLEdBQ2xCLEdB
QUlwSSxFQXlCSixPQXZCSzltQixNQUFNLEtBQ0w2QixFQUFPZ0QsV0FBWXFxQixLQUN2QkEsRUFB
T0EsRUFBS2x1QixLQUFNaEIsS0FBTSxLQUl6QjhtQixFQUFPamxCLEVBQVFxdEIsRUFBTWx2QixL
QUFNLEdBQUltTixlQUFnQnRKLEdBQUksR0FBSWEsT0FBTyxHQUV6RDFFLEtBQU0sR0FBSTBCLFlB
Q2RvbEIsRUFBS2dKLGFBQWM5dkIsS0FBTSxJQUcxQjhtQixFQUFLdmpCLElBQUssV0FDVCxHQUFJ
QyxHQUFPeEQsSUFFWCxPQUFRd0QsRUFBS20yQixrQkFDWm4yQixFQUFPQSxFQUFLbTJCLGlCQUdi
LE9BQU9uMkIsS0FDSm9zQixPQUFRNXZCLE9BR05BLE1BR1I0NUIsVUFBVyxTQUFVMUssR0FDcEIs
TUFBS3J0QixHQUFPZ0QsV0FBWXFxQixHQUNoQmx2QixLQUFLcUQsS0FBTSxTQUFVSSxHQUMzQjVC
LEVBQVE3QixNQUFPNDVCLFVBQVcxSyxFQUFLbHVCLEtBQU1oQixLQUFNeUQsTUFJdEN6RCxLQUFL
cUQsS0FBTSxXQUNqQixHQUFJc1gsR0FBTzlZLEVBQVE3QixNQUNsQmtiLEVBQVdQLEVBQUtPLFVB
RVpBLEdBQVN0WSxPQUNic1ksRUFBU3dlLFFBQVN4SyxHQUdsQnZVLEVBQUtpVixPQUFRVixNQUto
QnBJLEtBQU0sU0FBVW9JLEdBQ2YsR0FBSXJxQixHQUFhaEQsRUFBT2dELFdBQVlxcUIsRUFFcEMs
T0FBT2x2QixNQUFLcUQsS0FBTSxTQUFVSSxHQUMzQjVCLEVBQVE3QixNQUFPMDVCLFFBQVM3MEIs
RUFBYXFxQixFQUFLbHVCLEtBQU1oQixLQUFNeUQsR0FBTXlyQixNQUk5RDJLLE9BQVEsU0FBVS8z
QixHQUlqQixNQUhBOUIsTUFBS21VLE9BQVFyUyxHQUFXNlMsSUFBSyxRQUFTdFIsS0FBTSxXQUMz
Q3hCLEVBQVE3QixNQUFPaXdCLFlBQWFqd0IsS0FBS3dNLGNBRTNCeE0sUUFLVDZCLEVBQU9nUSxL
QUFLOUgsUUFBUSt2QixPQUFTLFNBQVV0MkIsR0FDdEMsT0FBUTNCLEVBQU9nUSxLQUFLOUgsUUFB
UWd3QixRQUFTdjJCLElBRXRDM0IsRUFBT2dRLEtBQUs5SCxRQUFRZ3dCLFFBQVUsU0FBVXYyQixH
QUN2QyxTQUFXQSxFQUFLdzJCLGFBQWV4MkIsRUFBS3kyQixjQUFnQnoyQixFQUFLbXdCLGlCQUFp
Qi93QixTQVczRTNCLEVBQVFpNUIsbUJBQXFCLFdBQzVCLEdBQUlsVixHQUFPcGxCLEVBQVN1NkIs
ZUFBZUQsbUJBQW9CLElBQUtsVixJQUU1RCxPQURBQSxHQUFLcFUsVUFBWSw2QkFDaUIsSUFBM0Jv
VSxFQUFLeFksV0FBVzVKLFVBUXhCZixFQUFPZ1osVUFBWSxTQUFVcUgsRUFBTW5nQixFQUFTcTRC
LEdBQzNDLEdBQXFCLGdCQUFUbFksR0FDWCxRQUV1QixrQkFBWm5nQixLQUNYcTRCLEVBQWNyNEIs
RUFDZEEsR0FBVSxFQUdYLElBQUlvVixHQUFNa2pCLEVBQVExVCxDQXdCbEIsT0F0Qk01a0IsS0FJ
QWQsRUFBUWk1QixvQkFDWm40QixFQUFVbkMsRUFBU3U2QixlQUFlRCxtQkFBb0IsSUFLdEQvaUIs
RUFBT3BWLEVBQVFULGNBQWUsUUFDOUI2VixFQUFLM0IsS0FBTzVWLEVBQVN1VixTQUFTSyxLQUM5
QnpULEVBQVFQLEtBQUtDLFlBQWEwVixJQUUxQnBWLEVBQVVuQyxHQUlaeTZCLEVBQVM5ZixFQUFX
bk4sS0FBTThVLEdBQzFCeUUsR0FBV3lULE1BR05DLEdBQ0t0NEIsRUFBUVQsY0FBZSs0QixFQUFR
LE1BR3pDQSxFQUFTM1QsSUFBaUJ4RSxHQUFRbmdCLEVBQVM0a0IsR0FFdENBLEdBQVdBLEVBQVEv
akIsUUFDdkJmLEVBQVE4a0IsR0FBVTFKLFNBR1pwYixFQUFPc0IsU0FBV2szQixFQUFPN3RCLGFB
T2pDLFNBQVM4dEIsSUFBVzkyQixHQUNuQixNQUFPM0IsR0FBTytELFNBQVVwQyxHQUFTQSxFQUF5
QixJQUFsQkEsRUFBS2lKLFVBQWtCakosRUFBS3VNLFlBR3JFbE8sRUFBTzA0QixRQUNOQyxVQUFX
LFNBQVVoM0IsRUFBTWEsRUFBU1osR0FDbkMsR0FBSWczQixHQUFhQyxFQUFTQyxFQUFXQyxFQUFR
QyxFQUFXQyxFQUFZQyxFQUNuRXRJLEVBQVc1d0IsRUFBT21pQixJQUFLeGdCLEVBQU0sWUFDN0J3
M0IsRUFBVW41QixFQUFRMkIsR0FDbEI2bkIsSUFHaUIsWUFBYm9ILElBQ0pqdkIsRUFBS3NnQixN
QUFNMk8sU0FBVyxZQUd2Qm9JLEVBQVlHLEVBQVFULFNBQ3BCSSxFQUFZOTRCLEVBQU9taUIsSUFB
S3hnQixFQUFNLE9BQzlCczNCLEVBQWFqNUIsRUFBT21pQixJQUFLeGdCLEVBQU0sUUFDL0J1M0Is
R0FBbUMsYUFBYnRJLEdBQXdDLFVBQWJBLEtBQzlDa0ksRUFBWUcsR0FBYXI2QixRQUFTLFdBSWhD
czZCLEdBQ0pOLEVBQWNPLEVBQVF2SSxXQUN0Qm1JLEVBQVNILEVBQVl6cUIsSUFDckIwcUIsRUFB
VUQsRUFBWTNGLE9BR3RCOEYsRUFBUzcwQixXQUFZNDBCLElBQWUsRUFDcENELEVBQVUzMEIsV0FB
WSswQixJQUFnQixHQUdsQ2o1QixFQUFPZ0QsV0FBWVIsS0FHdkJBLEVBQVVBLEVBQVFyRCxLQUFN
d0MsRUFBTUMsRUFBRzVCLEVBQU91QyxVQUFZeTJCLEtBR2pDLE1BQWZ4MkIsRUFBUTJMLE1BQ1px
YixFQUFNcmIsSUFBUTNMLEVBQVEyTCxJQUFNNnFCLEVBQVU3cUIsSUFBUTRxQixHQUUxQixNQUFo
QnYyQixFQUFReXdCLE9BQ1p6SixFQUFNeUosS0FBU3p3QixFQUFReXdCLEtBQU8rRixFQUFVL0Ys
S0FBUzRGLEdBRzdDLFNBQVdyMkIsR0FDZkEsRUFBUTQyQixNQUFNajZCLEtBQU13QyxFQUFNNm5C
LEdBRzFCMlAsRUFBUWhYLElBQUtxSCxLQUtoQnhwQixFQUFPRyxHQUFHb0MsUUFDVG0yQixPQUFR
LFNBQVVsMkIsR0FHakIsR0FBS1YsVUFBVWYsT0FDZCxNQUFtQm9DLFVBQVpYLEVBQ05yRSxLQUNB
QSxLQUFLcUQsS0FBTSxTQUFVSSxHQUNwQjVCLEVBQU8wNEIsT0FBT0MsVUFBV3g2QixLQUFNcUUs
RUFBU1osSUFJM0MsSUFBSWdGLEdBQVN5eUIsRUFBS0MsRUFBTS81QixFQUN2Qm9DLEVBQU94RCxL
QUFNLEVBRWQsSUFBTXdELEVBT04sTUFBTUEsR0FBS213QixpQkFBaUIvd0IsUUFJNUJ1NEIsRUFB
TzMzQixFQUFLb3dCLHdCQUdQdUgsRUFBSzdKLE9BQVM2SixFQUFLQyxRQUN2Qmg2QixFQUFNb0Ms
RUFBSzJKLGNBQ1grdEIsRUFBTVosR0FBV2w1QixHQUNqQnFILEVBQVVySCxFQUFJdU8saUJBR2JL
LElBQUttckIsRUFBS25yQixJQUFNa3JCLEVBQUlHLFlBQWM1eUIsRUFBUTZ5QixVQUMxQ3hHLEtB
QU1xRyxFQUFLckcsS0FBT29HLEVBQUlLLFlBQWM5eUIsRUFBUSt5QixhQUt2Q0wsSUFsQkduckIs
SUFBSyxFQUFHOGtCLEtBQU0sSUFxQnpCckMsU0FBVSxXQUNULEdBQU16eUIsS0FBTSxHQUFaLENB
SUEsR0FBSXk3QixHQUFjbEIsRUFDakIvMkIsRUFBT3hELEtBQU0sR0FDYjA3QixHQUFpQjFyQixJ
QUFLLEVBQUc4a0IsS0FBTSxFQTRCaEMsT0F4QndDLFVBQW5DanpCLEVBQU9taUIsSUFBS3hnQixF
QUFNLFlBR3RCKzJCLEVBQVMvMkIsRUFBS293Qix5QkFLZDZILEVBQWV6N0IsS0FBS3k3QixlQUdw
QmxCLEVBQVN2NkIsS0FBS3U2QixTQUNSMTRCLEVBQU95RSxTQUFVbTFCLEVBQWMsR0FBSyxVQUN6
Q0MsRUFBZUQsRUFBYWxCLFVBSTdCbUIsR0FDQzFyQixJQUFLMHJCLEVBQWExckIsSUFBTW5PLEVB
QU9taUIsSUFBS3lYLEVBQWMsR0FBSyxrQkFBa0IsR0FDekUzRyxLQUFNNEcsRUFBYTVHLEtBQU9q
ekIsRUFBT21pQixJQUFLeVgsRUFBYyxHQUFLLG1CQUFtQixNQU03RXpyQixJQUFLdXFCLEVBQU92
cUIsSUFBTTByQixFQUFhMXJCLElBQU1uTyxFQUFPbWlCLElBQUt4Z0IsRUFBTSxhQUFhLEdBQ3BF
c3hCLEtBQU15RixFQUFPekYsS0FBTzRHLEVBQWE1RyxLQUFPanpCLEVBQU9taUIsSUFBS3hnQixF
QUFNLGNBQWMsTUFjMUVpNEIsYUFBYyxXQUNiLE1BQU96N0IsTUFBS3VELElBQUssV0FDaEIsR0FB
SWs0QixHQUFlejdCLEtBQUt5N0IsWUFFeEIsT0FBUUEsR0FBMkQsV0FBM0M1NUIsRUFBT21pQixJ
QUFLeVgsRUFBYyxZQUNqREEsRUFBZUEsRUFBYUEsWUFHN0IsT0FBT0EsSUFBZ0I5ckIsUUFNMUI5
TixFQUFPd0IsTUFBUXM0QixXQUFZLGNBQWVDLFVBQVcsZUFBaUIsU0FBVWhlLEVBQVF1RSxHQUN2
RixHQUFJblMsR0FBTSxnQkFBa0JtUyxDQUU1QnRnQixHQUFPRyxHQUFJNGIsR0FBVyxTQUFVNUws
R0FDL0IsTUFBT3NQLEdBQVF0aEIsS0FBTSxTQUFVd0QsRUFBTW9hLEVBQVE1TCxHQUM1QyxHQUFJ
a3BCLEdBQU1aLEdBQVc5MkIsRUFFckIsT0FBYXdCLFVBQVJnTixFQUNHa3BCLEVBQU1BLEVBQUsv
WSxHQUFTM2UsRUFBTW9hLFFBRzdCc2QsRUFDSkEsRUFBSVcsU0FDRjdyQixFQUFZa3JCLEVBQUlL
LFlBQVZ2cEIsRUFDUGhDLEVBQU1nQyxFQUFNa3BCLEVBQUlHLGFBSWpCNzNCLEVBQU1vYSxHQUFX
NUwsSUFFaEI0TCxFQUFRNUwsRUFBS3JPLFVBQVVmLFdBVTVCZixFQUFPd0IsTUFBUSxNQUFPLFFB
QVUsU0FBVUksRUFBRzBlLEdBQzVDdGdCLEVBQU9neUIsU0FBVTFSLEdBQVNpUSxHQUFjbnhCLEVB
QVEwd0IsY0FDL0MsU0FBVW51QixFQUFNd3VCLEdBQ2YsR0FBS0EsRUFJSixNQUhBQSxHQUFXRCxH
QUFRdnVCLEVBQU0yZSxHQUdsQnVPLEdBQVVoakIsS0FBTXNrQixHQUN0Qm53QixFQUFRMkIsR0FB
T2l2QixXQUFZdFEsR0FBUyxLQUNwQzZQLE1BUUxud0IsRUFBT3dCLE1BQVF5NEIsT0FBUSxTQUFV
QyxNQUFPLFNBQVcsU0FBVXozQixFQUFNb0IsR0FDbEU3RCxFQUFPd0IsTUFBUTJ4QixRQUFTLFFB
QVUxd0IsRUFBTThwQixRQUFTMW9CLEVBQU1zMkIsR0FBSSxRQUFVMTNCLEdBQ3BFLFNBQVUyM0Is
RUFBY0MsR0FHeEJyNkIsRUFBT0csR0FBSWs2QixHQUFhLFNBQVVuSCxFQUFRM3RCLEdBQ3pDLEdB
QUltYSxHQUFZNWQsVUFBVWYsU0FBWXE1QixHQUFrQyxpQkFBWGxILElBQzVEekIsRUFBUTJJLElB
QWtCbEgsS0FBVyxHQUFRM3RCLEtBQVUsRUFBTyxTQUFXLFNBRTFFLE9BQU9rYSxHQUFRdGhCLEtB
QU0sU0FBVXdELEVBQU1rQyxFQUFNMEIsR0FDMUMsR0FBSWhHLEVBRUosT0FBS1MsR0FBTytELFNB
QVVwQyxHQUdrQixJQUFoQzA0QixFQUFTejdCLFFBQVMsU0FDeEIrQyxFQUFNLFFBQVVjLEdBQ2hC
ZCxFQUFLNUQsU0FBUytQLGdCQUFpQixTQUFXckwsR0FJckIsSUFBbEJkLEVBQUtpSixVQUNUckws
RUFBTW9DLEVBQUttTSxnQkFJSnpLLEtBQUtrdUIsSUFDWDV2QixFQUFLd2hCLEtBQU0sU0FBVzFn
QixHQUFRbEQsRUFBSyxTQUFXa0QsR0FDOUNkLEVBQUt3aEIsS0FBTSxTQUFXMWdCLEdBQVFsRCxF
QUFLLFNBQVdrRCxHQUM5Q2xELEVBQUssU0FBV2tELEtBSURVLFNBQVZvQyxFQUdOdkYsRUFBT21p
QixJQUFLeGdCLEVBQU1rQyxFQUFNNHRCLEdBR3hCenhCLEVBQU9paUIsTUFBT3RnQixFQUFNa0Ms
RUFBTTBCLEVBQU9rc0IsSUFDaEM1dEIsRUFBTTZiLEVBQVl3VCxFQUFTL3ZCLE9BQVd1YyxRQW1C
ckIsa0JBQVg0YSxTQUF5QkEsT0FBT0MsS0FDM0NELE9BQVEsWUFBYyxXQUNyQixNQUFPdDZCLElB
T1QsSUFHQ3c2QixJQUFVdDhCLEVBQU84QixPQUdqQnk2QixHQUFLdjhCLEVBQU93OEIsQ0F5QmIs
T0F2QkExNkIsR0FBTzI2QixXQUFhLFNBQVU1M0IsR0FTN0IsTUFSSzdFLEdBQU93OEIsSUFBTTE2
QixJQUNqQjlCLEVBQU93OEIsRUFBSUQsSUFHUDEzQixHQUFRN0UsRUFBTzhCLFNBQVdBLElBQzlC
OUIsRUFBTzhCLE9BQVN3NkIsSUFHVng2QixHQU1GNUIsSUFDTEYsRUFBTzhCLE9BQVM5QixFQUFP
dzhCLEVBQUkxNkIsR0FPckJBIiwiZmlsZSI6ImpxdWVyeS5zbGltLm1pbi5qcyJ9ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVf
bW9kdWxlcy9qcXVlcnkvZXh0ZXJuYWwvc2l6emxlL0xJQ0VOU0UudHh0IGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
anF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvZXh0ZXJuYWwvc2l6emxlL0xJQ0VOU0UudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmRkN2NlOTQwMmNjYjhhYmQzMTVmZGUzNmQ3ZDY4N2Q4OWRjNWQ5MDAKLS0tIC9k
ZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9leHRl
cm5hbC9zaXp6bGUvTElDRU5TRS50eHQKQEAgLTAsMCArMSwzNiBAQAorQ29weXJpZ2h0IGpRdWVy
eSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnMsIGh0dHBzOi8vanF1ZXJ5Lm9yZy8K
KworVGhpcyBzb2Z0d2FyZSBjb25zaXN0cyBvZiB2b2x1bnRhcnkgY29udHJpYnV0aW9ucyBtYWRl
IGJ5IG1hbnkKK2luZGl2aWR1YWxzLiBGb3IgZXhhY3QgY29udHJpYnV0aW9uIGhpc3RvcnksIHNl
ZSB0aGUgcmV2aXNpb24gaGlzdG9yeQorYXZhaWxhYmxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9q
cXVlcnkvc2l6emxlCisKK1RoZSBmb2xsb3dpbmcgbGljZW5zZSBhcHBsaWVzIHRvIGFsbCBwYXJ0
cyBvZiB0aGlzIHNvZnR3YXJlIGV4Y2VwdCBhcworZG9jdW1lbnRlZCBiZWxvdzoKKworPT09PQor
CitQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBl
cnNvbiBvYnRhaW5pbmcKK2EgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRv
Y3VtZW50YXRpb24gZmlsZXMgKHRoZQorIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3
YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZword2l0aG91dCBsaW1pdGF0aW9uIHRo
ZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAorZGlzdHJpYnV0
ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRv
CitwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8g
c28sIHN1YmplY3QgdG8KK3RoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKworVGhlIGFib3ZlIGNv
cHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUKK2luY2x1
ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJl
LgorCitUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBP
RiBBTlkgS0lORCwKK0VYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRF
RCBUTyBUSEUgV0FSUkFOVElFUyBPRgorTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBTkQKK05PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUKK0xJQUJMRSBGT1IgQU5ZIENMQUlN
LCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04KK09GIENP
TlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09O
TkVDVElPTgorV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJ
TiBUSEUgU09GVFdBUkUuCisKKz09PT0KKworQWxsIGZpbGVzIGxvY2F0ZWQgaW4gdGhlIG5vZGVf
bW9kdWxlcyBhbmQgZXh0ZXJuYWwgZGlyZWN0b3JpZXMgYXJlCitleHRlcm5hbGx5IG1haW50YWlu
ZWQgbGlicmFyaWVzIHVzZWQgYnkgdGhpcyBzb2Z0d2FyZSB3aGljaCBoYXZlIHRoZWlyCitvd24g
bGljZW5zZXM7IHdlIHJlY29tbWVuZCB5b3UgcmVhZCB0aGVtLCBhcyB0aGVpciB0ZXJtcyBtYXkg
ZGlmZmVyIGZyb20KK3RoZSB0ZXJtcyBhYm92ZS4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2px
dWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L2V4dGVybmFsL3NpenpsZS9kaXN0L3NpenpsZS5qcyBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L2V4dGVybmFsL3NpenpsZS9k
aXN0L3NpenpsZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YWI5NDg1YWI2NTc5ZTgwNGQwNDE5YWQ3ZDhlNGFi
ODBkNWE5MmU3Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9k
dWxlcy9qcXVlcnkvZXh0ZXJuYWwvc2l6emxlL2Rpc3Qvc2l6emxlLmpzCkBAIC0wLDAgKzEsMjI3
MiBAQAorLyohCisgKiBTaXp6bGUgQ1NTIFNlbGVjdG9yIEVuZ2luZSB2Mi4zLjMKKyAqIGh0dHBz
Oi8vc2l6emxlanMuY29tLworICoKKyAqIENvcHlyaWdodCBqUXVlcnkgRm91bmRhdGlvbiBhbmQg
b3RoZXIgY29udHJpYnV0b3JzCisgKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UKKyAq
IGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2UKKyAqCisgKiBEYXRlOiAyMDE2LTA4LTA4CisgKi8K
KyhmdW5jdGlvbiggd2luZG93ICkgeworCit2YXIgaSwKKyAgICBzdXBwb3J0LAorICAgIEV4cHIs
CisgICAgZ2V0VGV4dCwKKyAgICBpc1hNTCwKKyAgICB0b2tlbml6ZSwKKyAgICBjb21waWxlLAor
ICAgIHNlbGVjdCwKKyAgICBvdXRlcm1vc3RDb250ZXh0LAorICAgIHNvcnRJbnB1dCwKKyAgICBo
YXNEdXBsaWNhdGUsCisKKyAgICAvLyBMb2NhbCBkb2N1bWVudCB2YXJzCisgICAgc2V0RG9jdW1l
bnQsCisgICAgZG9jdW1lbnQsCisgICAgZG9jRWxlbSwKKyAgICBkb2N1bWVudElzSFRNTCwKKyAg
ICByYnVnZ3lRU0EsCisgICAgcmJ1Z2d5TWF0Y2hlcywKKyAgICBtYXRjaGVzLAorICAgIGNvbnRh
aW5zLAorCisgICAgLy8gSW5zdGFuY2Utc3BlY2lmaWMgZGF0YQorICAgIGV4cGFuZG8gPSAic2l6
emxlIiArIDEgKiBuZXcgRGF0ZSgpLAorICAgIHByZWZlcnJlZERvYyA9IHdpbmRvdy5kb2N1bWVu
dCwKKyAgICBkaXJydW5zID0gMCwKKyAgICBkb25lID0gMCwKKyAgICBjbGFzc0NhY2hlID0gY3Jl
YXRlQ2FjaGUoKSwKKyAgICB0b2tlbkNhY2hlID0gY3JlYXRlQ2FjaGUoKSwKKyAgICBjb21waWxl
ckNhY2hlID0gY3JlYXRlQ2FjaGUoKSwKKyAgICBzb3J0T3JkZXIgPSBmdW5jdGlvbiggYSwgYiAp
IHsKKyAgICAgICAgaWYgKCBhID09PSBiICkgeworICAgICAgICAgICAgaGFzRHVwbGljYXRlID0g
dHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gMDsKKyAgICB9LAorCisgICAgLy8gSW5z
dGFuY2UgbWV0aG9kcworICAgIGhhc093biA9ICh7fSkuaGFzT3duUHJvcGVydHksCisgICAgYXJy
ID0gW10sCisgICAgcG9wID0gYXJyLnBvcCwKKyAgICBwdXNoX25hdGl2ZSA9IGFyci5wdXNoLAor
ICAgIHB1c2ggPSBhcnIucHVzaCwKKyAgICBzbGljZSA9IGFyci5zbGljZSwKKyAgICAvLyBVc2Ug
YSBzdHJpcHBlZC1kb3duIGluZGV4T2YgYXMgaXQncyBmYXN0ZXIgdGhhbiBuYXRpdmUKKyAgICAv
LyBodHRwczovL2pzcGVyZi5jb20vdGhvci1pbmRleG9mLXZzLWZvci81CisgICAgaW5kZXhPZiA9
IGZ1bmN0aW9uKCBsaXN0LCBlbGVtICkgeworICAgICAgICB2YXIgaSA9IDAsCisgICAgICAgICAg
ICBsZW4gPSBsaXN0Lmxlbmd0aDsKKyAgICAgICAgZm9yICggOyBpIDwgbGVuOyBpKysgKSB7Cisg
ICAgICAgICAgICBpZiAoIGxpc3RbaV0gPT09IGVsZW0gKSB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIC0xOworICAg
IH0sCisKKyAgICBib29sZWFucyA9ICJjaGVja2VkfHNlbGVjdGVkfGFzeW5jfGF1dG9mb2N1c3xh
dXRvcGxheXxjb250cm9sc3xkZWZlcnxkaXNhYmxlZHxoaWRkZW58aXNtYXB8bG9vcHxtdWx0aXBs
ZXxvcGVufHJlYWRvbmx5fHJlcXVpcmVkfHNjb3BlZCIsCisKKyAgICAvLyBSZWd1bGFyIGV4cHJl
c3Npb25zCisKKyAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLXNlbGVjdG9ycy8jd2hp
dGVzcGFjZQorICAgIHdoaXRlc3BhY2UgPSAiW1xceDIwXFx0XFxyXFxuXFxmXSIsCisKKyAgICAv
LyBodHRwOi8vd3d3LnczLm9yZy9UUi9DU1MyMS9zeW5kYXRhLmh0bWwjdmFsdWUtZGVmLWlkZW50
aWZpZXIKKyAgICBpZGVudGlmaWVyID0gIig/OlxcXFwufFtcXHctXXxbXlwwLVxceGEwXSkrIiwK
KworICAgIC8vIEF0dHJpYnV0ZSBzZWxlY3RvcnM6IGh0dHA6Ly93d3cudzMub3JnL1RSL3NlbGVj
dG9ycy8jYXR0cmlidXRlLXNlbGVjdG9ycworICAgIGF0dHJpYnV0ZXMgPSAiXFxbIiArIHdoaXRl
c3BhY2UgKyAiKigiICsgaWRlbnRpZmllciArICIpKD86IiArIHdoaXRlc3BhY2UgKworICAgICAg
ICAvLyBPcGVyYXRvciAoY2FwdHVyZSAyKQorICAgICAgICAiKihbKl4kfCF+XT89KSIgKyB3aGl0
ZXNwYWNlICsKKyAgICAgICAgLy8gIkF0dHJpYnV0ZSB2YWx1ZXMgbXVzdCBiZSBDU1MgaWRlbnRp
ZmllcnMgW2NhcHR1cmUgNV0gb3Igc3RyaW5ncyBbY2FwdHVyZSAzIG9yIGNhcHR1cmUgNF0iCisg
ICAgICAgICIqKD86JygoPzpcXFxcLnxbXlxcXFwnXSkqKSd8XCIoKD86XFxcXC58W15cXFxcXCJd
KSopXCJ8KCIgKyBpZGVudGlmaWVyICsgIikpfCkiICsgd2hpdGVzcGFjZSArCisgICAgICAgICIq
XFxdIiwKKworICAgIHBzZXVkb3MgPSAiOigiICsgaWRlbnRpZmllciArICIpKD86XFwoKCIgKwor
ICAgICAgICAvLyBUbyByZWR1Y2UgdGhlIG51bWJlciBvZiBzZWxlY3RvcnMgbmVlZGluZyB0b2tl
bml6ZSBpbiB0aGUgcHJlRmlsdGVyLCBwcmVmZXIgYXJndW1lbnRzOgorICAgICAgICAvLyAxLiBx
dW90ZWQgKGNhcHR1cmUgMzsgY2FwdHVyZSA0IG9yIGNhcHR1cmUgNSkKKyAgICAgICAgIignKCg/
OlxcXFwufFteXFxcXCddKSopJ3xcIigoPzpcXFxcLnxbXlxcXFxcIl0pKilcIil8IiArCisgICAg
ICAgIC8vIDIuIHNpbXBsZSAoY2FwdHVyZSA2KQorICAgICAgICAiKCg/OlxcXFwufFteXFxcXCgp
W1xcXV18IiArIGF0dHJpYnV0ZXMgKyAiKSopfCIgKworICAgICAgICAvLyAzLiBhbnl0aGluZyBl
bHNlIChjYXB0dXJlIDIpCisgICAgICAgICIuKiIgKworICAgICAgICAiKVxcKXwpIiwKKworICAg
IC8vIExlYWRpbmcgYW5kIG5vbi1lc2NhcGVkIHRyYWlsaW5nIHdoaXRlc3BhY2UsIGNhcHR1cmlu
ZyBzb21lIG5vbi13aGl0ZXNwYWNlIGNoYXJhY3RlcnMgcHJlY2VkaW5nIHRoZSBsYXR0ZXIKKyAg
ICByd2hpdGVzcGFjZSA9IG5ldyBSZWdFeHAoIHdoaXRlc3BhY2UgKyAiKyIsICJnIiApLAorICAg
IHJ0cmltID0gbmV3IFJlZ0V4cCggIl4iICsgd2hpdGVzcGFjZSArICIrfCgoPzpefFteXFxcXF0p
KD86XFxcXC4pKikiICsgd2hpdGVzcGFjZSArICIrJCIsICJnIiApLAorCisgICAgcmNvbW1hID0g
bmV3IFJlZ0V4cCggIl4iICsgd2hpdGVzcGFjZSArICIqLCIgKyB3aGl0ZXNwYWNlICsgIioiICks
CisgICAgcmNvbWJpbmF0b3JzID0gbmV3IFJlZ0V4cCggIl4iICsgd2hpdGVzcGFjZSArICIqKFs+
K35dfCIgKyB3aGl0ZXNwYWNlICsgIikiICsgd2hpdGVzcGFjZSArICIqIiApLAorCisgICAgcmF0
dHJpYnV0ZVF1b3RlcyA9IG5ldyBSZWdFeHAoICI9IiArIHdoaXRlc3BhY2UgKyAiKihbXlxcXSdc
Il0qPykiICsgd2hpdGVzcGFjZSArICIqXFxdIiwgImciICksCisKKyAgICBycHNldWRvID0gbmV3
IFJlZ0V4cCggcHNldWRvcyApLAorICAgIHJpZGVudGlmaWVyID0gbmV3IFJlZ0V4cCggIl4iICsg
aWRlbnRpZmllciArICIkIiApLAorCisgICAgbWF0Y2hFeHByID0geworICAgICAgICAiSUQiOiBu
ZXcgUmVnRXhwKCAiXiMoIiArIGlkZW50aWZpZXIgKyAiKSIgKSwKKyAgICAgICAgIkNMQVNTIjog
bmV3IFJlZ0V4cCggIl5cXC4oIiArIGlkZW50aWZpZXIgKyAiKSIgKSwKKyAgICAgICAgIlRBRyI6
IG5ldyBSZWdFeHAoICJeKCIgKyBpZGVudGlmaWVyICsgInxbKl0pIiApLAorICAgICAgICAiQVRU
UiI6IG5ldyBSZWdFeHAoICJeIiArIGF0dHJpYnV0ZXMgKSwKKyAgICAgICAgIlBTRVVETyI6IG5l
dyBSZWdFeHAoICJeIiArIHBzZXVkb3MgKSwKKyAgICAgICAgIkNISUxEIjogbmV3IFJlZ0V4cCgg
Il46KG9ubHl8Zmlyc3R8bGFzdHxudGh8bnRoLWxhc3QpLShjaGlsZHxvZi10eXBlKSg/OlxcKCIg
KyB3aGl0ZXNwYWNlICsKKyAgICAgICAgICAgICIqKGV2ZW58b2RkfCgoWystXXwpKFxcZCopbnwp
IiArIHdoaXRlc3BhY2UgKyAiKig/OihbKy1dfCkiICsgd2hpdGVzcGFjZSArCisgICAgICAgICAg
ICAiKihcXGQrKXwpKSIgKyB3aGl0ZXNwYWNlICsgIipcXCl8KSIsICJpIiApLAorICAgICAgICAi
Ym9vbCI6IG5ldyBSZWdFeHAoICJeKD86IiArIGJvb2xlYW5zICsgIikkIiwgImkiICksCisgICAg
ICAgIC8vIEZvciB1c2UgaW4gbGlicmFyaWVzIGltcGxlbWVudGluZyAuaXMoKQorICAgICAgICAv
LyBXZSB1c2UgdGhpcyBmb3IgUE9TIG1hdGNoaW5nIGluIGBzZWxlY3RgCisgICAgICAgICJuZWVk
c0NvbnRleHQiOiBuZXcgUmVnRXhwKCAiXiIgKyB3aGl0ZXNwYWNlICsgIipbPit+XXw6KGV2ZW58
b2RkfGVxfGd0fGx0fG50aHxmaXJzdHxsYXN0KSg/OlxcKCIgKworICAgICAgICAgICAgd2hpdGVz
cGFjZSArICIqKCg/Oi1cXGQpP1xcZCopIiArIHdoaXRlc3BhY2UgKyAiKlxcKXwpKD89W14tXXwk
KSIsICJpIiApCisgICAgfSwKKworICAgIHJpbnB1dHMgPSAvXig/OmlucHV0fHNlbGVjdHx0ZXh0
YXJlYXxidXR0b24pJC9pLAorICAgIHJoZWFkZXIgPSAvXmhcZCQvaSwKKworICAgIHJuYXRpdmUg
PSAvXltee10rXHtccypcW25hdGl2ZSBcdy8sCisKKyAgICAvLyBFYXNpbHktcGFyc2VhYmxlL3Jl
dHJpZXZhYmxlIElEIG9yIFRBRyBvciBDTEFTUyBzZWxlY3RvcnMKKyAgICBycXVpY2tFeHByID0g
L14oPzojKFtcdy1dKyl8KFx3Kyl8XC4oW1x3LV0rKSkkLywKKworICAgIHJzaWJsaW5nID0gL1sr
fl0vLAorCisgICAgLy8gQ1NTIGVzY2FwZXMKKyAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9D
U1MyMS9zeW5kYXRhLmh0bWwjZXNjYXBlZC1jaGFyYWN0ZXJzCisgICAgcnVuZXNjYXBlID0gbmV3
IFJlZ0V4cCggIlxcXFwoW1xcZGEtZl17MSw2fSIgKyB3aGl0ZXNwYWNlICsgIj98KCIgKyB3aGl0
ZXNwYWNlICsgIil8LikiLCAiaWciICksCisgICAgZnVuZXNjYXBlID0gZnVuY3Rpb24oIF8sIGVz
Y2FwZWQsIGVzY2FwZWRXaGl0ZXNwYWNlICkgeworICAgICAgICB2YXIgaGlnaCA9ICIweCIgKyBl
c2NhcGVkIC0gMHgxMDAwMDsKKyAgICAgICAgLy8gTmFOIG1lYW5zIG5vbi1jb2RlcG9pbnQKKyAg
ICAgICAgLy8gU3VwcG9ydDogRmlyZWZveDwyNAorICAgICAgICAvLyBXb3JrYXJvdW5kIGVycm9u
ZW91cyBudW1lcmljIGludGVycHJldGF0aW9uIG9mICsiMHgiCisgICAgICAgIHJldHVybiBoaWdo
ICE9PSBoaWdoIHx8IGVzY2FwZWRXaGl0ZXNwYWNlID8KKyAgICAgICAgICAgIGVzY2FwZWQgOgor
ICAgICAgICAgICAgaGlnaCA8IDAgPworICAgICAgICAgICAgICAgIC8vIEJNUCBjb2RlcG9pbnQK
KyAgICAgICAgICAgICAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKCBoaWdoICsgMHgxMDAwMCApIDoK
KyAgICAgICAgICAgICAgICAvLyBTdXBwbGVtZW50YWwgUGxhbmUgY29kZXBvaW50IChzdXJyb2dh
dGUgcGFpcikKKyAgICAgICAgICAgICAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKCBoaWdoID4+IDEw
IHwgMHhEODAwLCBoaWdoICYgMHgzRkYgfCAweERDMDAgKTsKKyAgICB9LAorCisgICAgLy8gQ1NT
IHN0cmluZy9pZGVudGlmaWVyIHNlcmlhbGl6YXRpb24KKyAgICAvLyBodHRwczovL2RyYWZ0cy5j
c3N3Zy5vcmcvY3Nzb20vI2NvbW1vbi1zZXJpYWxpemluZy1pZGlvbXMKKyAgICByY3NzZXNjYXBl
ID0gLyhbXDAtXHgxZlx4N2ZdfF4tP1xkKXxeLSR8W15cMC1ceDFmXHg3Zi1cdUZGRkZcdy1dL2cs
CisgICAgZmNzc2VzY2FwZSA9IGZ1bmN0aW9uKCBjaCwgYXNDb2RlUG9pbnQgKSB7CisgICAgICAg
IGlmICggYXNDb2RlUG9pbnQgKSB7CisKKyAgICAgICAgICAgIC8vIFUrMDAwMCBOVUxMIGJlY29t
ZXMgVStGRkZEIFJFUExBQ0VNRU5UIENIQVJBQ1RFUgorICAgICAgICAgICAgaWYgKCBjaCA9PT0g
IlwwIiApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gIlx1RkZGRCI7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIC8vIENvbnRyb2wgY2hhcmFjdGVycyBhbmQgKGRlcGVuZGVudCB1cG9u
IHBvc2l0aW9uKSBudW1iZXJzIGdldCBlc2NhcGVkIGFzIGNvZGUgcG9pbnRzCisgICAgICAgICAg
ICByZXR1cm4gY2guc2xpY2UoIDAsIC0xICkgKyAiXFwiICsgY2guY2hhckNvZGVBdCggY2gubGVu
Z3RoIC0gMSApLnRvU3RyaW5nKCAxNiApICsgIiAiOworICAgICAgICB9CisKKyAgICAgICAgLy8g
T3RoZXIgcG90ZW50aWFsbHktc3BlY2lhbCBBU0NJSSBjaGFyYWN0ZXJzIGdldCBiYWNrc2xhc2gt
ZXNjYXBlZAorICAgICAgICByZXR1cm4gIlxcIiArIGNoOworICAgIH0sCisKKyAgICAvLyBVc2Vk
IGZvciBpZnJhbWVzCisgICAgLy8gU2VlIHNldERvY3VtZW50KCkKKyAgICAvLyBSZW1vdmluZyB0
aGUgZnVuY3Rpb24gd3JhcHBlciBjYXVzZXMgYSAiUGVybWlzc2lvbiBEZW5pZWQiCisgICAgLy8g
ZXJyb3IgaW4gSUUKKyAgICB1bmxvYWRIYW5kbGVyID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHNl
dERvY3VtZW50KCk7CisgICAgfSwKKworICAgIGRpc2FibGVkQW5jZXN0b3IgPSBhZGRDb21iaW5h
dG9yKAorICAgICAgICBmdW5jdGlvbiggZWxlbSApIHsKKyAgICAgICAgICAgIHJldHVybiBlbGVt
LmRpc2FibGVkID09PSB0cnVlICYmICgiZm9ybSIgaW4gZWxlbSB8fCAibGFiZWwiIGluIGVsZW0p
OworICAgICAgICB9LAorICAgICAgICB7IGRpcjogInBhcmVudE5vZGUiLCBuZXh0OiAibGVnZW5k
IiB9CisgICAgKTsKKworLy8gT3B0aW1pemUgZm9yIHB1c2guYXBwbHkoIF8sIE5vZGVMaXN0ICkK
K3RyeSB7CisgICAgcHVzaC5hcHBseSgKKyAgICAgICAgKGFyciA9IHNsaWNlLmNhbGwoIHByZWZl
cnJlZERvYy5jaGlsZE5vZGVzICkpLAorICAgICAgICBwcmVmZXJyZWREb2MuY2hpbGROb2Rlcwor
ICAgICk7CisgICAgLy8gU3VwcG9ydDogQW5kcm9pZDw0LjAKKyAgICAvLyBEZXRlY3Qgc2lsZW50
bHkgZmFpbGluZyBwdXNoLmFwcGx5CisgICAgYXJyWyBwcmVmZXJyZWREb2MuY2hpbGROb2Rlcy5s
ZW5ndGggXS5ub2RlVHlwZTsKK30gY2F0Y2ggKCBlICkgeworICAgIHB1c2ggPSB7IGFwcGx5OiBh
cnIubGVuZ3RoID8KKworICAgICAgICAvLyBMZXZlcmFnZSBzbGljZSBpZiBwb3NzaWJsZQorICAg
ICAgICBmdW5jdGlvbiggdGFyZ2V0LCBlbHMgKSB7CisgICAgICAgICAgICBwdXNoX25hdGl2ZS5h
cHBseSggdGFyZ2V0LCBzbGljZS5jYWxsKGVscykgKTsKKyAgICAgICAgfSA6CisKKyAgICAgICAg
Ly8gU3VwcG9ydDogSUU8OQorICAgICAgICAvLyBPdGhlcndpc2UgYXBwZW5kIGRpcmVjdGx5Cisg
ICAgICAgIGZ1bmN0aW9uKCB0YXJnZXQsIGVscyApIHsKKyAgICAgICAgICAgIHZhciBqID0gdGFy
Z2V0Lmxlbmd0aCwKKyAgICAgICAgICAgICAgICBpID0gMDsKKyAgICAgICAgICAgIC8vIENhbid0
IHRydXN0IE5vZGVMaXN0Lmxlbmd0aAorICAgICAgICAgICAgd2hpbGUgKCAodGFyZ2V0W2orK10g
PSBlbHNbaSsrXSkgKSB7fQorICAgICAgICAgICAgdGFyZ2V0Lmxlbmd0aCA9IGogLSAxOworICAg
ICAgICB9CisgICAgfTsKK30KKworZnVuY3Rpb24gU2l6emxlKCBzZWxlY3RvciwgY29udGV4dCwg
cmVzdWx0cywgc2VlZCApIHsKKyAgICB2YXIgbSwgaSwgZWxlbSwgbmlkLCBtYXRjaCwgZ3JvdXBz
LCBuZXdTZWxlY3RvciwKKyAgICAgICAgbmV3Q29udGV4dCA9IGNvbnRleHQgJiYgY29udGV4dC5v
d25lckRvY3VtZW50LAorCisgICAgICAgIC8vIG5vZGVUeXBlIGRlZmF1bHRzIHRvIDksIHNpbmNl
IGNvbnRleHQgZGVmYXVsdHMgdG8gZG9jdW1lbnQKKyAgICAgICAgbm9kZVR5cGUgPSBjb250ZXh0
ID8gY29udGV4dC5ub2RlVHlwZSA6IDk7CisKKyAgICByZXN1bHRzID0gcmVzdWx0cyB8fCBbXTsK
KworICAgIC8vIFJldHVybiBlYXJseSBmcm9tIGNhbGxzIHdpdGggaW52YWxpZCBzZWxlY3RvciBv
ciBjb250ZXh0CisgICAgaWYgKCB0eXBlb2Ygc2VsZWN0b3IgIT09ICJzdHJpbmciIHx8ICFzZWxl
Y3RvciB8fAorICAgICAgICBub2RlVHlwZSAhPT0gMSAmJiBub2RlVHlwZSAhPT0gOSAmJiBub2Rl
VHlwZSAhPT0gMTEgKSB7CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdHM7CisgICAgfQorCisgICAg
Ly8gVHJ5IHRvIHNob3J0Y3V0IGZpbmQgb3BlcmF0aW9ucyAoYXMgb3Bwb3NlZCB0byBmaWx0ZXJz
KSBpbiBIVE1MIGRvY3VtZW50cworICAgIGlmICggIXNlZWQgKSB7CisKKyAgICAgICAgaWYgKCAo
IGNvbnRleHQgPyBjb250ZXh0Lm93bmVyRG9jdW1lbnQgfHwgY29udGV4dCA6IHByZWZlcnJlZERv
YyApICE9PSBkb2N1bWVudCApIHsKKyAgICAgICAgICAgIHNldERvY3VtZW50KCBjb250ZXh0ICk7
CisgICAgICAgIH0KKyAgICAgICAgY29udGV4dCA9IGNvbnRleHQgfHwgZG9jdW1lbnQ7CisKKyAg
ICAgICAgaWYgKCBkb2N1bWVudElzSFRNTCApIHsKKworICAgICAgICAgICAgLy8gSWYgdGhlIHNl
bGVjdG9yIGlzIHN1ZmZpY2llbnRseSBzaW1wbGUsIHRyeSB1c2luZyBhICJnZXQqQnkqIiBET00g
bWV0aG9kCisgICAgICAgICAgICAvLyAoZXhjZXB0aW5nIERvY3VtZW50RnJhZ21lbnQgY29udGV4
dCwgd2hlcmUgdGhlIG1ldGhvZHMgZG9uJ3QgZXhpc3QpCisgICAgICAgICAgICBpZiAoIG5vZGVU
eXBlICE9PSAxMSAmJiAobWF0Y2ggPSBycXVpY2tFeHByLmV4ZWMoIHNlbGVjdG9yICkpICkgewor
CisgICAgICAgICAgICAgICAgLy8gSUQgc2VsZWN0b3IKKyAgICAgICAgICAgICAgICBpZiAoICht
ID0gbWF0Y2hbMV0pICkgeworCisgICAgICAgICAgICAgICAgICAgIC8vIERvY3VtZW50IGNvbnRl
eHQKKyAgICAgICAgICAgICAgICAgICAgaWYgKCBub2RlVHlwZSA9PT0gOSApIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICggKGVsZW0gPSBjb250ZXh0LmdldEVsZW1lbnRCeUlkKCBtICkp
ICkgeworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3VwcG9ydDogSUUsIE9wZXJh
LCBXZWJraXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiBpZGVudGlmeSB2
ZXJzaW9ucworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdldEVsZW1lbnRCeUlkIGNh
biBtYXRjaCBlbGVtZW50cyBieSBuYW1lIGluc3RlYWQgb2YgSUQKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoIGVsZW0uaWQgPT09IG0gKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlc3VsdHMucHVzaCggZWxlbSApOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0czsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiByZXN1bHRzOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgICAgICAgIC8vIEVsZW1lbnQgY29udGV4dAorICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgeworCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBTdXBwb3J0OiBJRSwgT3BlcmEsIFdl
YmtpdAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gVE9ETzogaWRlbnRpZnkgdmVyc2lvbnMK
KyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdldEVsZW1lbnRCeUlkIGNhbiBtYXRjaCBlbGVt
ZW50cyBieSBuYW1lIGluc3RlYWQgb2YgSUQKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgg
bmV3Q29udGV4dCAmJiAoZWxlbSA9IG5ld0NvbnRleHQuZ2V0RWxlbWVudEJ5SWQoIG0gKSkgJiYK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWlucyggY29udGV4dCwgZWxlbSApICYm
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbS5pZCA9PT0gbSApIHsKKworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMucHVzaCggZWxlbSApOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRzOworICAgICAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBUeXBlIHNlbGVj
dG9yCisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICggbWF0Y2hbMl0gKSB7CisgICAgICAgICAg
ICAgICAgICAgIHB1c2guYXBwbHkoIHJlc3VsdHMsIGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoIHNlbGVjdG9yICkgKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdHM7CisK
KyAgICAgICAgICAgICAgICAvLyBDbGFzcyBzZWxlY3RvcgorICAgICAgICAgICAgICAgIH0gZWxz
ZSBpZiAoIChtID0gbWF0Y2hbM10pICYmIHN1cHBvcnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSAm
JgorICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUgKSB7
CisKKyAgICAgICAgICAgICAgICAgICAgcHVzaC5hcHBseSggcmVzdWx0cywgY29udGV4dC5nZXRF
bGVtZW50c0J5Q2xhc3NOYW1lKCBtICkgKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdHM7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICAv
LyBUYWtlIGFkdmFudGFnZSBvZiBxdWVyeVNlbGVjdG9yQWxsCisgICAgICAgICAgICBpZiAoIHN1
cHBvcnQucXNhICYmCisgICAgICAgICAgICAgICAgIWNvbXBpbGVyQ2FjaGVbIHNlbGVjdG9yICsg
IiAiIF0gJiYKKyAgICAgICAgICAgICAgICAoIXJidWdneVFTQSB8fCAhcmJ1Z2d5UVNBLnRlc3Qo
IHNlbGVjdG9yICkpICkgeworCisgICAgICAgICAgICAgICAgaWYgKCBub2RlVHlwZSAhPT0gMSAp
IHsKKyAgICAgICAgICAgICAgICAgICAgbmV3Q29udGV4dCA9IGNvbnRleHQ7CisgICAgICAgICAg
ICAgICAgICAgIG5ld1NlbGVjdG9yID0gc2VsZWN0b3I7CisKKyAgICAgICAgICAgICAgICAvLyBx
U0EgbG9va3Mgb3V0c2lkZSBFbGVtZW50IGNvbnRleHQsIHdoaWNoIGlzIG5vdCB3aGF0IHdlIHdh
bnQKKyAgICAgICAgICAgICAgICAvLyBUaGFua3MgdG8gQW5kcmV3IER1cG9udCBmb3IgdGhpcyB3
b3JrYXJvdW5kIHRlY2huaXF1ZQorICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6IElFIDw9OAor
ICAgICAgICAgICAgICAgIC8vIEV4Y2x1ZGUgb2JqZWN0IGVsZW1lbnRzCisgICAgICAgICAgICAg
ICAgfSBlbHNlIGlmICggY29udGV4dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpICE9PSAib2JqZWN0
IiApIHsKKworICAgICAgICAgICAgICAgICAgICAvLyBDYXB0dXJlIHRoZSBjb250ZXh0IElELCBz
ZXR0aW5nIGl0IGZpcnN0IGlmIG5lY2Vzc2FyeQorICAgICAgICAgICAgICAgICAgICBpZiAoIChu
aWQgPSBjb250ZXh0LmdldEF0dHJpYnV0ZSggImlkIiApKSApIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG5pZCA9IG5pZC5yZXBsYWNlKCByY3NzZXNjYXBlLCBmY3NzZXNjYXBlICk7CisgICAg
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0
LnNldEF0dHJpYnV0ZSggImlkIiwgKG5pZCA9IGV4cGFuZG8pICk7CisgICAgICAgICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgICAgICAgICAvLyBQcmVmaXggZXZlcnkgc2VsZWN0b3IgaW4g
dGhlIGxpc3QKKyAgICAgICAgICAgICAgICAgICAgZ3JvdXBzID0gdG9rZW5pemUoIHNlbGVjdG9y
ICk7CisgICAgICAgICAgICAgICAgICAgIGkgPSBncm91cHMubGVuZ3RoOworICAgICAgICAgICAg
ICAgICAgICB3aGlsZSAoIGktLSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdyb3Vwc1tp
XSA9ICIjIiArIG5pZCArICIgIiArIHRvU2VsZWN0b3IoIGdyb3Vwc1tpXSApOworICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIG5ld1NlbGVjdG9yID0gZ3JvdXBzLmpv
aW4oICIsIiApOworCisgICAgICAgICAgICAgICAgICAgIC8vIEV4cGFuZCBjb250ZXh0IGZvciBz
aWJsaW5nIHNlbGVjdG9ycworICAgICAgICAgICAgICAgICAgICBuZXdDb250ZXh0ID0gcnNpYmxp
bmcudGVzdCggc2VsZWN0b3IgKSAmJiB0ZXN0Q29udGV4dCggY29udGV4dC5wYXJlbnROb2RlICkg
fHwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ7CisgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgaWYgKCBuZXdTZWxlY3RvciApIHsKKyAgICAgICAgICAgICAgICAg
ICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2guYXBwbHkoIHJlc3VsdHMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3Q29udGV4dC5xdWVyeVNlbGVjdG9yQWxsKCBu
ZXdTZWxlY3RvciApCisgICAgICAgICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdHM7CisgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKCBx
c2FFcnJvciApIHsKKyAgICAgICAgICAgICAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICggbmlkID09PSBleHBhbmRvICkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnRleHQucmVtb3ZlQXR0cmlidXRlKCAiaWQiICk7CisgICAgICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBBbGwgb3RoZXJzCisgICAg
cmV0dXJuIHNlbGVjdCggc2VsZWN0b3IucmVwbGFjZSggcnRyaW0sICIkMSIgKSwgY29udGV4dCwg
cmVzdWx0cywgc2VlZCApOworfQorCisvKioKKyAqIENyZWF0ZSBrZXktdmFsdWUgY2FjaGVzIG9m
IGxpbWl0ZWQgc2l6ZQorICogQHJldHVybnMge2Z1bmN0aW9uKHN0cmluZywgb2JqZWN0KX0gUmV0
dXJucyB0aGUgT2JqZWN0IGRhdGEgYWZ0ZXIgc3RvcmluZyBpdCBvbiBpdHNlbGYgd2l0aAorICog
IHByb3BlcnR5IG5hbWUgdGhlIChzcGFjZS1zdWZmaXhlZCkgc3RyaW5nIGFuZCAoaWYgdGhlIGNh
Y2hlIGlzIGxhcmdlciB0aGFuIEV4cHIuY2FjaGVMZW5ndGgpCisgKiAgZGVsZXRpbmcgdGhlIG9s
ZGVzdCBlbnRyeQorICovCitmdW5jdGlvbiBjcmVhdGVDYWNoZSgpIHsKKyAgICB2YXIga2V5cyA9
IFtdOworCisgICAgZnVuY3Rpb24gY2FjaGUoIGtleSwgdmFsdWUgKSB7CisgICAgICAgIC8vIFVz
ZSAoa2V5ICsgIiAiKSB0byBhdm9pZCBjb2xsaXNpb24gd2l0aCBuYXRpdmUgcHJvdG90eXBlIHBy
b3BlcnRpZXMgKHNlZSBJc3N1ZSAjMTU3KQorICAgICAgICBpZiAoIGtleXMucHVzaCgga2V5ICsg
IiAiICkgPiBFeHByLmNhY2hlTGVuZ3RoICkgeworICAgICAgICAgICAgLy8gT25seSBrZWVwIHRo
ZSBtb3N0IHJlY2VudCBlbnRyaWVzCisgICAgICAgICAgICBkZWxldGUgY2FjaGVbIGtleXMuc2hp
ZnQoKSBdOworICAgICAgICB9CisgICAgICAgIHJldHVybiAoY2FjaGVbIGtleSArICIgIiBdID0g
dmFsdWUpOworICAgIH0KKyAgICByZXR1cm4gY2FjaGU7Cit9CisKKy8qKgorICogTWFyayBhIGZ1
bmN0aW9uIGZvciBzcGVjaWFsIHVzZSBieSBTaXp6bGUKKyAqIEBwYXJhbSB7RnVuY3Rpb259IGZu
IFRoZSBmdW5jdGlvbiB0byBtYXJrCisgKi8KK2Z1bmN0aW9uIG1hcmtGdW5jdGlvbiggZm4gKSB7
CisgICAgZm5bIGV4cGFuZG8gXSA9IHRydWU7CisgICAgcmV0dXJuIGZuOworfQorCisvKioKKyAq
IFN1cHBvcnQgdGVzdGluZyB1c2luZyBhbiBlbGVtZW50CisgKiBAcGFyYW0ge0Z1bmN0aW9ufSBm
biBQYXNzZWQgdGhlIGNyZWF0ZWQgZWxlbWVudCBhbmQgcmV0dXJucyBhIGJvb2xlYW4gcmVzdWx0
CisgKi8KK2Z1bmN0aW9uIGFzc2VydCggZm4gKSB7CisgICAgdmFyIGVsID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZmllbGRzZXQiKTsKKworICAgIHRyeSB7CisgICAgICAgIHJldHVybiAhIWZu
KCBlbCApOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0g
ZmluYWxseSB7CisgICAgICAgIC8vIFJlbW92ZSBmcm9tIGl0cyBwYXJlbnQgYnkgZGVmYXVsdAor
ICAgICAgICBpZiAoIGVsLnBhcmVudE5vZGUgKSB7CisgICAgICAgICAgICBlbC5wYXJlbnROb2Rl
LnJlbW92ZUNoaWxkKCBlbCApOworICAgICAgICB9CisgICAgICAgIC8vIHJlbGVhc2UgbWVtb3J5
IGluIElFCisgICAgICAgIGVsID0gbnVsbDsKKyAgICB9Cit9CisKKy8qKgorICogQWRkcyB0aGUg
c2FtZSBoYW5kbGVyIGZvciBhbGwgb2YgdGhlIHNwZWNpZmllZCBhdHRycworICogQHBhcmFtIHtT
dHJpbmd9IGF0dHJzIFBpcGUtc2VwYXJhdGVkIGxpc3Qgb2YgYXR0cmlidXRlcworICogQHBhcmFt
IHtGdW5jdGlvbn0gaGFuZGxlciBUaGUgbWV0aG9kIHRoYXQgd2lsbCBiZSBhcHBsaWVkCisgKi8K
K2Z1bmN0aW9uIGFkZEhhbmRsZSggYXR0cnMsIGhhbmRsZXIgKSB7CisgICAgdmFyIGFyciA9IGF0
dHJzLnNwbGl0KCJ8IiksCisgICAgICAgIGkgPSBhcnIubGVuZ3RoOworCisgICAgd2hpbGUgKCBp
LS0gKSB7CisgICAgICAgIEV4cHIuYXR0ckhhbmRsZVsgYXJyW2ldIF0gPSBoYW5kbGVyOworICAg
IH0KK30KKworLyoqCisgKiBDaGVja3MgZG9jdW1lbnQgb3JkZXIgb2YgdHdvIHNpYmxpbmdzCisg
KiBAcGFyYW0ge0VsZW1lbnR9IGEKKyAqIEBwYXJhbSB7RWxlbWVudH0gYgorICogQHJldHVybnMg
e051bWJlcn0gUmV0dXJucyBsZXNzIHRoYW4gMCBpZiBhIHByZWNlZGVzIGIsIGdyZWF0ZXIgdGhh
biAwIGlmIGEgZm9sbG93cyBiCisgKi8KK2Z1bmN0aW9uIHNpYmxpbmdDaGVjayggYSwgYiApIHsK
KyAgICB2YXIgY3VyID0gYiAmJiBhLAorICAgICAgICBkaWZmID0gY3VyICYmIGEubm9kZVR5cGUg
PT09IDEgJiYgYi5ub2RlVHlwZSA9PT0gMSAmJgorICAgICAgICAgICAgYS5zb3VyY2VJbmRleCAt
IGIuc291cmNlSW5kZXg7CisKKyAgICAvLyBVc2UgSUUgc291cmNlSW5kZXggaWYgYXZhaWxhYmxl
IG9uIGJvdGggbm9kZXMKKyAgICBpZiAoIGRpZmYgKSB7CisgICAgICAgIHJldHVybiBkaWZmOwor
ICAgIH0KKworICAgIC8vIENoZWNrIGlmIGIgZm9sbG93cyBhCisgICAgaWYgKCBjdXIgKSB7Cisg
ICAgICAgIHdoaWxlICggKGN1ciA9IGN1ci5uZXh0U2libGluZykgKSB7CisgICAgICAgICAgICBp
ZiAoIGN1ciA9PT0gYiApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gYSA/IDEgOiAtMTsKK30KKworLyoq
CisgKiBSZXR1cm5zIGEgZnVuY3Rpb24gdG8gdXNlIGluIHBzZXVkb3MgZm9yIGlucHV0IHR5cGVz
CisgKiBAcGFyYW0ge1N0cmluZ30gdHlwZQorICovCitmdW5jdGlvbiBjcmVhdGVJbnB1dFBzZXVk
byggdHlwZSApIHsKKyAgICByZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7CisgICAgICAgIHZhciBu
YW1lID0gZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOworICAgICAgICByZXR1cm4gbmFtZSA9
PT0gImlucHV0IiAmJiBlbGVtLnR5cGUgPT09IHR5cGU7CisgICAgfTsKK30KKworLyoqCisgKiBS
ZXR1cm5zIGEgZnVuY3Rpb24gdG8gdXNlIGluIHBzZXVkb3MgZm9yIGJ1dHRvbnMKKyAqIEBwYXJh
bSB7U3RyaW5nfSB0eXBlCisgKi8KK2Z1bmN0aW9uIGNyZWF0ZUJ1dHRvblBzZXVkbyggdHlwZSAp
IHsKKyAgICByZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7CisgICAgICAgIHZhciBuYW1lID0gZWxl
bS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOworICAgICAgICByZXR1cm4gKG5hbWUgPT09ICJpbnB1
dCIgfHwgbmFtZSA9PT0gImJ1dHRvbiIpICYmIGVsZW0udHlwZSA9PT0gdHlwZTsKKyAgICB9Owor
fQorCisvKioKKyAqIFJldHVybnMgYSBmdW5jdGlvbiB0byB1c2UgaW4gcHNldWRvcyBmb3IgOmVu
YWJsZWQvOmRpc2FibGVkCisgKiBAcGFyYW0ge0Jvb2xlYW59IGRpc2FibGVkIHRydWUgZm9yIDpk
aXNhYmxlZDsgZmFsc2UgZm9yIDplbmFibGVkCisgKi8KK2Z1bmN0aW9uIGNyZWF0ZURpc2FibGVk
UHNldWRvKCBkaXNhYmxlZCApIHsKKworICAgIC8vIEtub3duIDpkaXNhYmxlZCBmYWxzZSBwb3Np
dGl2ZXM6IGZpZWxkc2V0W2Rpc2FibGVkXSA+IGxlZ2VuZDpudGgtb2YtdHlwZShuKzIpIDpjYW4t
ZGlzYWJsZQorICAgIHJldHVybiBmdW5jdGlvbiggZWxlbSApIHsKKworICAgICAgICAvLyBPbmx5
IGNlcnRhaW4gZWxlbWVudHMgY2FuIG1hdGNoIDplbmFibGVkIG9yIDpkaXNhYmxlZAorICAgICAg
ICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zY3JpcHRpbmcuaHRt
bCNzZWxlY3Rvci1lbmFibGVkCisgICAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5v
cmcvbXVsdGlwYWdlL3NjcmlwdGluZy5odG1sI3NlbGVjdG9yLWRpc2FibGVkCisgICAgICAgIGlm
ICggImZvcm0iIGluIGVsZW0gKSB7CisKKyAgICAgICAgICAgIC8vIENoZWNrIGZvciBpbmhlcml0
ZWQgZGlzYWJsZWRuZXNzIG9uIHJlbGV2YW50IG5vbi1kaXNhYmxlZCBlbGVtZW50czoKKyAgICAg
ICAgICAgIC8vICogbGlzdGVkIGZvcm0tYXNzb2NpYXRlZCBlbGVtZW50cyBpbiBhIGRpc2FibGVk
IGZpZWxkc2V0CisgICAgICAgICAgICAvLyAgIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcv
bXVsdGlwYWdlL2Zvcm1zLmh0bWwjY2F0ZWdvcnktbGlzdGVkCisgICAgICAgICAgICAvLyAgIGh0
dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2Zvcm1zLmh0bWwjY29uY2VwdC1m
ZS1kaXNhYmxlZAorICAgICAgICAgICAgLy8gKiBvcHRpb24gZWxlbWVudHMgaW4gYSBkaXNhYmxl
ZCBvcHRncm91cAorICAgICAgICAgICAgLy8gICBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3Jn
L211bHRpcGFnZS9mb3Jtcy5odG1sI2NvbmNlcHQtb3B0aW9uLWRpc2FibGVkCisgICAgICAgICAg
ICAvLyBBbGwgc3VjaCBlbGVtZW50cyBoYXZlIGEgImZvcm0iIHByb3BlcnR5LgorICAgICAgICAg
ICAgaWYgKCBlbGVtLnBhcmVudE5vZGUgJiYgZWxlbS5kaXNhYmxlZCA9PT0gZmFsc2UgKSB7CisK
KyAgICAgICAgICAgICAgICAvLyBPcHRpb24gZWxlbWVudHMgZGVmZXIgdG8gYSBwYXJlbnQgb3B0
Z3JvdXAgaWYgcHJlc2VudAorICAgICAgICAgICAgICAgIGlmICggImxhYmVsIiBpbiBlbGVtICkg
eworICAgICAgICAgICAgICAgICAgICBpZiAoICJsYWJlbCIgaW4gZWxlbS5wYXJlbnROb2RlICkg
eworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW0ucGFyZW50Tm9kZS5kaXNhYmxl
ZCA9PT0gZGlzYWJsZWQ7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZWxlbS5kaXNhYmxlZCA9PT0gZGlzYWJsZWQ7CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBT
dXBwb3J0OiBJRSA2IC0gMTEKKyAgICAgICAgICAgICAgICAvLyBVc2UgdGhlIGlzRGlzYWJsZWQg
c2hvcnRjdXQgcHJvcGVydHkgdG8gY2hlY2sgZm9yIGRpc2FibGVkIGZpZWxkc2V0IGFuY2VzdG9y
cworICAgICAgICAgICAgICAgIHJldHVybiBlbGVtLmlzRGlzYWJsZWQgPT09IGRpc2FibGVkIHx8
CisKKyAgICAgICAgICAgICAgICAgICAgLy8gV2hlcmUgdGhlcmUgaXMgbm8gaXNEaXNhYmxlZCwg
Y2hlY2sgbWFudWFsbHkKKyAgICAgICAgICAgICAgICAgICAgLyoganNoaW50IC1XMDE4ICovCisg
ICAgICAgICAgICAgICAgICAgIGVsZW0uaXNEaXNhYmxlZCAhPT0gIWRpc2FibGVkICYmCisgICAg
ICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZEFuY2VzdG9yKCBlbGVtICkgPT09IGRpc2FibGVk
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gZWxlbS5kaXNhYmxlZCA9PT0g
ZGlzYWJsZWQ7CisKKyAgICAgICAgLy8gVHJ5IHRvIHdpbm5vdyBvdXQgZWxlbWVudHMgdGhhdCBj
YW4ndCBiZSBkaXNhYmxlZCBiZWZvcmUgdHJ1c3RpbmcgdGhlIGRpc2FibGVkIHByb3BlcnR5Lgor
ICAgICAgICAvLyBTb21lIHZpY3RpbXMgZ2V0IGNhdWdodCBpbiBvdXIgbmV0IChsYWJlbCwgbGVn
ZW5kLCBtZW51LCB0cmFjayksIGJ1dCBpdCBzaG91bGRuJ3QKKyAgICAgICAgLy8gZXZlbiBleGlz
dCBvbiB0aGVtLCBsZXQgYWxvbmUgaGF2ZSBhIGJvb2xlYW4gdmFsdWUuCisgICAgICAgIH0gZWxz
ZSBpZiAoICJsYWJlbCIgaW4gZWxlbSApIHsKKyAgICAgICAgICAgIHJldHVybiBlbGVtLmRpc2Fi
bGVkID09PSBkaXNhYmxlZDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFJlbWFpbmluZyBlbGVt
ZW50cyBhcmUgbmVpdGhlciA6ZW5hYmxlZCBub3IgOmRpc2FibGVkCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9OworfQorCisvKioKKyAqIFJldHVybnMgYSBmdW5jdGlvbiB0byB1c2UgaW4g
cHNldWRvcyBmb3IgcG9zaXRpb25hbHMKKyAqIEBwYXJhbSB7RnVuY3Rpb259IGZuCisgKi8KK2Z1
bmN0aW9uIGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oIGZuICkgeworICAgIHJldHVybiBtYXJrRnVu
Y3Rpb24oZnVuY3Rpb24oIGFyZ3VtZW50ICkgeworICAgICAgICBhcmd1bWVudCA9ICthcmd1bWVu
dDsKKyAgICAgICAgcmV0dXJuIG1hcmtGdW5jdGlvbihmdW5jdGlvbiggc2VlZCwgbWF0Y2hlcyAp
IHsKKyAgICAgICAgICAgIHZhciBqLAorICAgICAgICAgICAgICAgIG1hdGNoSW5kZXhlcyA9IGZu
KCBbXSwgc2VlZC5sZW5ndGgsIGFyZ3VtZW50ICksCisgICAgICAgICAgICAgICAgaSA9IG1hdGNo
SW5kZXhlcy5sZW5ndGg7CisKKyAgICAgICAgICAgIC8vIE1hdGNoIGVsZW1lbnRzIGZvdW5kIGF0
IHRoZSBzcGVjaWZpZWQgaW5kZXhlcworICAgICAgICAgICAgd2hpbGUgKCBpLS0gKSB7CisgICAg
ICAgICAgICAgICAgaWYgKCBzZWVkWyAoaiA9IG1hdGNoSW5kZXhlc1tpXSkgXSApIHsKKyAgICAg
ICAgICAgICAgICAgICAgc2VlZFtqXSA9ICEobWF0Y2hlc1tqXSA9IHNlZWRbal0pOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKKy8q
KgorICogQ2hlY2tzIGEgbm9kZSBmb3IgdmFsaWRpdHkgYXMgYSBTaXp6bGUgY29udGV4dAorICog
QHBhcmFtIHtFbGVtZW50fE9iamVjdD19IGNvbnRleHQKKyAqIEByZXR1cm5zIHtFbGVtZW50fE9i
amVjdHxCb29sZWFufSBUaGUgaW5wdXQgbm9kZSBpZiBhY2NlcHRhYmxlLCBvdGhlcndpc2UgYSBm
YWxzeSB2YWx1ZQorICovCitmdW5jdGlvbiB0ZXN0Q29udGV4dCggY29udGV4dCApIHsKKyAgICBy
ZXR1cm4gY29udGV4dCAmJiB0eXBlb2YgY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSAhPT0g
InVuZGVmaW5lZCIgJiYgY29udGV4dDsKK30KKworLy8gRXhwb3NlIHN1cHBvcnQgdmFycyBmb3Ig
Y29udmVuaWVuY2UKK3N1cHBvcnQgPSBTaXp6bGUuc3VwcG9ydCA9IHt9OworCisvKioKKyAqIERl
dGVjdHMgWE1MIG5vZGVzCisgKiBAcGFyYW0ge0VsZW1lbnR8T2JqZWN0fSBlbGVtIEFuIGVsZW1l
bnQgb3IgYSBkb2N1bWVudAorICogQHJldHVybnMge0Jvb2xlYW59IFRydWUgaWZmIGVsZW0gaXMg
YSBub24tSFRNTCBYTUwgbm9kZQorICovCitpc1hNTCA9IFNpenpsZS5pc1hNTCA9IGZ1bmN0aW9u
KCBlbGVtICkgeworICAgIC8vIGRvY3VtZW50RWxlbWVudCBpcyB2ZXJpZmllZCBmb3IgY2FzZXMg
d2hlcmUgaXQgZG9lc24ndCB5ZXQgZXhpc3QKKyAgICAvLyAoc3VjaCBhcyBsb2FkaW5nIGlmcmFt
ZXMgaW4gSUUgLSAjNDgzMykKKyAgICB2YXIgZG9jdW1lbnRFbGVtZW50ID0gZWxlbSAmJiAoZWxl
bS5vd25lckRvY3VtZW50IHx8IGVsZW0pLmRvY3VtZW50RWxlbWVudDsKKyAgICByZXR1cm4gZG9j
dW1lbnRFbGVtZW50ID8gZG9jdW1lbnRFbGVtZW50Lm5vZGVOYW1lICE9PSAiSFRNTCIgOiBmYWxz
ZTsKK307CisKKy8qKgorICogU2V0cyBkb2N1bWVudC1yZWxhdGVkIHZhcmlhYmxlcyBvbmNlIGJh
c2VkIG9uIHRoZSBjdXJyZW50IGRvY3VtZW50CisgKiBAcGFyYW0ge0VsZW1lbnR8T2JqZWN0fSBb
ZG9jXSBBbiBlbGVtZW50IG9yIGRvY3VtZW50IG9iamVjdCB0byB1c2UgdG8gc2V0IHRoZSBkb2N1
bWVudAorICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY3VycmVudCBkb2N1bWVudAor
ICovCitzZXREb2N1bWVudCA9IFNpenpsZS5zZXREb2N1bWVudCA9IGZ1bmN0aW9uKCBub2RlICkg
eworICAgIHZhciBoYXNDb21wYXJlLCBzdWJXaW5kb3csCisgICAgICAgIGRvYyA9IG5vZGUgPyBu
b2RlLm93bmVyRG9jdW1lbnQgfHwgbm9kZSA6IHByZWZlcnJlZERvYzsKKworICAgIC8vIFJldHVy
biBlYXJseSBpZiBkb2MgaXMgaW52YWxpZCBvciBhbHJlYWR5IHNlbGVjdGVkCisgICAgaWYgKCBk
b2MgPT09IGRvY3VtZW50IHx8IGRvYy5ub2RlVHlwZSAhPT0gOSB8fCAhZG9jLmRvY3VtZW50RWxl
bWVudCApIHsKKyAgICAgICAgcmV0dXJuIGRvY3VtZW50OworICAgIH0KKworICAgIC8vIFVwZGF0
ZSBnbG9iYWwgdmFyaWFibGVzCisgICAgZG9jdW1lbnQgPSBkb2M7CisgICAgZG9jRWxlbSA9IGRv
Y3VtZW50LmRvY3VtZW50RWxlbWVudDsKKyAgICBkb2N1bWVudElzSFRNTCA9ICFpc1hNTCggZG9j
dW1lbnQgKTsKKworICAgIC8vIFN1cHBvcnQ6IElFIDktMTEsIEVkZ2UKKyAgICAvLyBBY2Nlc3Np
bmcgaWZyYW1lIGRvY3VtZW50cyBhZnRlciB1bmxvYWQgdGhyb3dzICJwZXJtaXNzaW9uIGRlbmll
ZCIgZXJyb3JzIChqUXVlcnkgIzEzOTM2KQorICAgIGlmICggcHJlZmVycmVkRG9jICE9PSBkb2N1
bWVudCAmJgorICAgICAgICAoc3ViV2luZG93ID0gZG9jdW1lbnQuZGVmYXVsdFZpZXcpICYmIHN1
YldpbmRvdy50b3AgIT09IHN1YldpbmRvdyApIHsKKworICAgICAgICAvLyBTdXBwb3J0OiBJRSAx
MSwgRWRnZQorICAgICAgICBpZiAoIHN1YldpbmRvdy5hZGRFdmVudExpc3RlbmVyICkgeworICAg
ICAgICAgICAgc3ViV2luZG93LmFkZEV2ZW50TGlzdGVuZXIoICJ1bmxvYWQiLCB1bmxvYWRIYW5k
bGVyLCBmYWxzZSApOworCisgICAgICAgIC8vIFN1cHBvcnQ6IElFIDkgLSAxMCBvbmx5CisgICAg
ICAgIH0gZWxzZSBpZiAoIHN1YldpbmRvdy5hdHRhY2hFdmVudCApIHsKKyAgICAgICAgICAgIHN1
YldpbmRvdy5hdHRhY2hFdmVudCggIm9udW5sb2FkIiwgdW5sb2FkSGFuZGxlciApOworICAgICAg
ICB9CisgICAgfQorCisgICAgLyogQXR0cmlidXRlcworICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwor
ICAgIC8vIFN1cHBvcnQ6IElFPDgKKyAgICAvLyBWZXJpZnkgdGhhdCBnZXRBdHRyaWJ1dGUgcmVh
bGx5IHJldHVybnMgYXR0cmlidXRlcyBhbmQgbm90IHByb3BlcnRpZXMKKyAgICAvLyAoZXhjZXB0
aW5nIElFOCBib29sZWFucykKKyAgICBzdXBwb3J0LmF0dHJpYnV0ZXMgPSBhc3NlcnQoZnVuY3Rp
b24oIGVsICkgeworICAgICAgICBlbC5jbGFzc05hbWUgPSAiaSI7CisgICAgICAgIHJldHVybiAh
ZWwuZ2V0QXR0cmlidXRlKCJjbGFzc05hbWUiKTsKKyAgICB9KTsKKworICAgIC8qIGdldEVsZW1l
bnQocylCeSoKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKyAgICAvLyBDaGVjayBpZiBnZXRFbGVt
ZW50c0J5VGFnTmFtZSgiKiIpIHJldHVybnMgb25seSBlbGVtZW50cworICAgIHN1cHBvcnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUgPSBhc3NlcnQoZnVuY3Rpb24oIGVsICkgeworICAgICAgICBlbC5h
cHBlbmRDaGlsZCggZG9jdW1lbnQuY3JlYXRlQ29tbWVudCgiIikgKTsKKyAgICAgICAgcmV0dXJu
ICFlbC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLmxlbmd0aDsKKyAgICB9KTsKKworICAgIC8v
IFN1cHBvcnQ6IElFPDkKKyAgICBzdXBwb3J0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUgPSBybmF0
aXZlLnRlc3QoIGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUgKTsKKworICAgIC8vIFN1
cHBvcnQ6IElFPDEwCisgICAgLy8gQ2hlY2sgaWYgZ2V0RWxlbWVudEJ5SWQgcmV0dXJucyBlbGVt
ZW50cyBieSBuYW1lCisgICAgLy8gVGhlIGJyb2tlbiBnZXRFbGVtZW50QnlJZCBtZXRob2RzIGRv
bid0IHBpY2sgdXAgcHJvZ3JhbW1hdGljYWxseS1zZXQgbmFtZXMsCisgICAgLy8gc28gdXNlIGEg
cm91bmRhYm91dCBnZXRFbGVtZW50c0J5TmFtZSB0ZXN0CisgICAgc3VwcG9ydC5nZXRCeUlkID0g
YXNzZXJ0KGZ1bmN0aW9uKCBlbCApIHsKKyAgICAgICAgZG9jRWxlbS5hcHBlbmRDaGlsZCggZWwg
KS5pZCA9IGV4cGFuZG87CisgICAgICAgIHJldHVybiAhZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5h
bWUgfHwgIWRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCBleHBhbmRvICkubGVuZ3RoOworICAg
IH0pOworCisgICAgLy8gSUQgZmlsdGVyIGFuZCBmaW5kCisgICAgaWYgKCBzdXBwb3J0LmdldEJ5
SWQgKSB7CisgICAgICAgIEV4cHIuZmlsdGVyWyJJRCJdID0gZnVuY3Rpb24oIGlkICkgeworICAg
ICAgICAgICAgdmFyIGF0dHJJZCA9IGlkLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICk7
CisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7CisgICAgICAgICAgICAgICAg
cmV0dXJuIGVsZW0uZ2V0QXR0cmlidXRlKCJpZCIpID09PSBhdHRySWQ7CisgICAgICAgICAgICB9
OworICAgICAgICB9OworICAgICAgICBFeHByLmZpbmRbIklEIl0gPSBmdW5jdGlvbiggaWQsIGNv
bnRleHQgKSB7CisgICAgICAgICAgICBpZiAoIHR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRCeUlk
ICE9PSAidW5kZWZpbmVkIiAmJiBkb2N1bWVudElzSFRNTCApIHsKKyAgICAgICAgICAgICAgICB2
YXIgZWxlbSA9IGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQoIGlkICk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIGVsZW0gPyBbIGVsZW0gXSA6IFtdOworICAgICAgICAgICAgfQorICAgICAgICB9Owor
ICAgIH0gZWxzZSB7CisgICAgICAgIEV4cHIuZmlsdGVyWyJJRCJdID0gIGZ1bmN0aW9uKCBpZCAp
IHsKKyAgICAgICAgICAgIHZhciBhdHRySWQgPSBpZC5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVz
Y2FwZSApOworICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkgeworICAgICAgICAg
ICAgICAgIHZhciBub2RlID0gdHlwZW9mIGVsZW0uZ2V0QXR0cmlidXRlTm9kZSAhPT0gInVuZGVm
aW5lZCIgJiYKKyAgICAgICAgICAgICAgICAgICAgZWxlbS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIp
OworICAgICAgICAgICAgICAgIHJldHVybiBub2RlICYmIG5vZGUudmFsdWUgPT09IGF0dHJJZDsK
KyAgICAgICAgICAgIH07CisgICAgICAgIH07CisKKyAgICAgICAgLy8gU3VwcG9ydDogSUUgNiAt
IDcgb25seQorICAgICAgICAvLyBnZXRFbGVtZW50QnlJZCBpcyBub3QgcmVsaWFibGUgYXMgYSBm
aW5kIHNob3J0Y3V0CisgICAgICAgIEV4cHIuZmluZFsiSUQiXSA9IGZ1bmN0aW9uKCBpZCwgY29u
dGV4dCApIHsKKyAgICAgICAgICAgIGlmICggdHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQg
IT09ICJ1bmRlZmluZWQiICYmIGRvY3VtZW50SXNIVE1MICkgeworICAgICAgICAgICAgICAgIHZh
ciBub2RlLCBpLCBlbGVtcywKKyAgICAgICAgICAgICAgICAgICAgZWxlbSA9IGNvbnRleHQuZ2V0
RWxlbWVudEJ5SWQoIGlkICk7CisKKyAgICAgICAgICAgICAgICBpZiAoIGVsZW0gKSB7CisKKyAg
ICAgICAgICAgICAgICAgICAgLy8gVmVyaWZ5IHRoZSBpZCBhdHRyaWJ1dGUKKyAgICAgICAgICAg
ICAgICAgICAgbm9kZSA9IGVsZW0uZ2V0QXR0cmlidXRlTm9kZSgiaWQiKTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKCBub2RlICYmIG5vZGUudmFsdWUgPT09IGlkICkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIFsgZWxlbSBdOworICAgICAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICAgICAgLy8gRmFsbCBiYWNrIG9uIGdldEVsZW1lbnRzQnlOYW1lCisgICAg
ICAgICAgICAgICAgICAgIGVsZW1zID0gY29udGV4dC5nZXRFbGVtZW50c0J5TmFtZSggaWQgKTsK
KyAgICAgICAgICAgICAgICAgICAgaSA9IDA7CisgICAgICAgICAgICAgICAgICAgIHdoaWxlICgg
KGVsZW0gPSBlbGVtc1tpKytdKSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUgPSBl
bGVtLmdldEF0dHJpYnV0ZU5vZGUoImlkIik7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
IG5vZGUgJiYgbm9kZS52YWx1ZSA9PT0gaWQgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIFsgZWxlbSBdOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgcmV0dXJu
IFtdOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0KKworICAgIC8vIFRhZworICAg
IEV4cHIuZmluZFsiVEFHIl0gPSBzdXBwb3J0LmdldEVsZW1lbnRzQnlUYWdOYW1lID8KKyAgICAg
ICAgZnVuY3Rpb24oIHRhZywgY29udGV4dCApIHsKKyAgICAgICAgICAgIGlmICggdHlwZW9mIGNv
bnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUgIT09ICJ1bmRlZmluZWQiICkgeworICAgICAgICAg
ICAgICAgIHJldHVybiBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lKCB0YWcgKTsKKworICAg
ICAgICAgICAgLy8gRG9jdW1lbnRGcmFnbWVudCBub2RlcyBkb24ndCBoYXZlIGdFQlROCisgICAg
ICAgICAgICB9IGVsc2UgaWYgKCBzdXBwb3J0LnFzYSApIHsKKyAgICAgICAgICAgICAgICByZXR1
cm4gY29udGV4dC5xdWVyeVNlbGVjdG9yQWxsKCB0YWcgKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfSA6CisKKyAgICAgICAgZnVuY3Rpb24oIHRhZywgY29udGV4dCApIHsKKyAgICAgICAgICAg
IHZhciBlbGVtLAorICAgICAgICAgICAgICAgIHRtcCA9IFtdLAorICAgICAgICAgICAgICAgIGkg
PSAwLAorICAgICAgICAgICAgICAgIC8vIEJ5IGhhcHB5IGNvaW5jaWRlbmNlLCBhIChicm9rZW4p
IGdFQlROIGFwcGVhcnMgb24gRG9jdW1lbnRGcmFnbWVudCBub2RlcyB0b28KKyAgICAgICAgICAg
ICAgICByZXN1bHRzID0gY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSggdGFnICk7CisKKyAg
ICAgICAgICAgIC8vIEZpbHRlciBvdXQgcG9zc2libGUgY29tbWVudHMKKyAgICAgICAgICAgIGlm
ICggdGFnID09PSAiKiIgKSB7CisgICAgICAgICAgICAgICAgd2hpbGUgKCAoZWxlbSA9IHJlc3Vs
dHNbaSsrXSkgKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICggZWxlbS5ub2RlVHlwZSA9PT0g
MSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcC5wdXNoKCBlbGVtICk7CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICByZXR1
cm4gdG1wOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdHM7CisgICAg
ICAgIH07CisKKyAgICAvLyBDbGFzcworICAgIEV4cHIuZmluZFsiQ0xBU1MiXSA9IHN1cHBvcnQu
Z2V0RWxlbWVudHNCeUNsYXNzTmFtZSAmJiBmdW5jdGlvbiggY2xhc3NOYW1lLCBjb250ZXh0ICkg
eworICAgICAgICBpZiAoIHR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUgIT09
ICJ1bmRlZmluZWQiICYmIGRvY3VtZW50SXNIVE1MICkgeworICAgICAgICAgICAgcmV0dXJuIGNv
bnRleHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSggY2xhc3NOYW1lICk7CisgICAgICAgIH0KKyAg
ICB9OworCisgICAgLyogUVNBL21hdGNoZXNTZWxlY3RvcgorICAgIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8K
KworICAgIC8vIFFTQSBhbmQgbWF0Y2hlc1NlbGVjdG9yIHN1cHBvcnQKKworICAgIC8vIG1hdGNo
ZXNTZWxlY3Rvcig6YWN0aXZlKSByZXBvcnRzIGZhbHNlIHdoZW4gdHJ1ZSAoSUU5L09wZXJhIDEx
LjUpCisgICAgcmJ1Z2d5TWF0Y2hlcyA9IFtdOworCisgICAgLy8gcVNhKDpmb2N1cykgcmVwb3J0
cyBmYWxzZSB3aGVuIHRydWUgKENocm9tZSAyMSkKKyAgICAvLyBXZSBhbGxvdyB0aGlzIGJlY2F1
c2Ugb2YgYSBidWcgaW4gSUU4LzkgdGhhdCB0aHJvd3MgYW4gZXJyb3IKKyAgICAvLyB3aGVuZXZl
ciBgZG9jdW1lbnQuYWN0aXZlRWxlbWVudGAgaXMgYWNjZXNzZWQgb24gYW4gaWZyYW1lCisgICAg
Ly8gU28sIHdlIGFsbG93IDpmb2N1cyB0byBwYXNzIHRocm91Z2ggUVNBIGFsbCB0aGUgdGltZSB0
byBhdm9pZCB0aGUgSUUgZXJyb3IKKyAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLmpxdWVyeS5jb20v
dGlja2V0LzEzMzc4CisgICAgcmJ1Z2d5UVNBID0gW107CisKKyAgICBpZiAoIChzdXBwb3J0LnFz
YSA9IHJuYXRpdmUudGVzdCggZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCApKSApIHsKKyAgICAg
ICAgLy8gQnVpbGQgUVNBIHJlZ2V4CisgICAgICAgIC8vIFJlZ2V4IHN0cmF0ZWd5IGFkb3B0ZWQg
ZnJvbSBEaWVnbyBQZXJpbmkKKyAgICAgICAgYXNzZXJ0KGZ1bmN0aW9uKCBlbCApIHsKKyAgICAg
ICAgICAgIC8vIFNlbGVjdCBpcyBzZXQgdG8gZW1wdHkgc3RyaW5nIG9uIHB1cnBvc2UKKyAgICAg
ICAgICAgIC8vIFRoaXMgaXMgdG8gdGVzdCBJRSdzIHRyZWF0bWVudCBvZiBub3QgZXhwbGljaXRs
eQorICAgICAgICAgICAgLy8gc2V0dGluZyBhIGJvb2xlYW4gY29udGVudCBhdHRyaWJ1dGUsCisg
ICAgICAgICAgICAvLyBzaW5jZSBpdHMgcHJlc2VuY2Ugc2hvdWxkIGJlIGVub3VnaAorICAgICAg
ICAgICAgLy8gaHR0cHM6Ly9idWdzLmpxdWVyeS5jb20vdGlja2V0LzEyMzU5CisgICAgICAgICAg
ICBkb2NFbGVtLmFwcGVuZENoaWxkKCBlbCApLmlubmVySFRNTCA9ICI8YSBpZD0nIiArIGV4cGFu
ZG8gKyAiJz48L2E+IiArCisgICAgICAgICAgICAgICAgIjxzZWxlY3QgaWQ9JyIgKyBleHBhbmRv
ICsgIi1cclxcJyBtc2FsbG93Y2FwdHVyZT0nJz4iICsKKyAgICAgICAgICAgICAgICAiPG9wdGlv
biBzZWxlY3RlZD0nJz48L29wdGlvbj48L3NlbGVjdD4iOworCisgICAgICAgICAgICAvLyBTdXBw
b3J0OiBJRTgsIE9wZXJhIDExLTEyLjE2CisgICAgICAgICAgICAvLyBOb3RoaW5nIHNob3VsZCBi
ZSBzZWxlY3RlZCB3aGVuIGVtcHR5IHN0cmluZ3MgZm9sbG93IF49IG9yICQ9IG9yICo9CisgICAg
ICAgICAgICAvLyBUaGUgdGVzdCBhdHRyaWJ1dGUgbXVzdCBiZSB1bmtub3duIGluIE9wZXJhIGJ1
dCAic2FmZSIgZm9yIFdpblJUCisgICAgICAgICAgICAvLyBodHRwczovL21zZG4ubWljcm9zb2Z0
LmNvbS9lbi11cy9saWJyYXJ5L2llL2hoNDY1Mzg4LmFzcHgjYXR0cmlidXRlX3NlY3Rpb24KKyAg
ICAgICAgICAgIGlmICggZWwucXVlcnlTZWxlY3RvckFsbCgiW21zYWxsb3djYXB0dXJlXj0nJ10i
KS5sZW5ndGggKSB7CisgICAgICAgICAgICAgICAgcmJ1Z2d5UVNBLnB1c2goICJbKl4kXT0iICsg
d2hpdGVzcGFjZSArICIqKD86Jyd8XCJcIikiICk7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIC8vIFN1cHBvcnQ6IElFOAorICAgICAgICAgICAgLy8gQm9vbGVhbiBhdHRyaWJ1dGVzIGFu
ZCAidmFsdWUiIGFyZSBub3QgdHJlYXRlZCBjb3JyZWN0bHkKKyAgICAgICAgICAgIGlmICggIWVs
LnF1ZXJ5U2VsZWN0b3JBbGwoIltzZWxlY3RlZF0iKS5sZW5ndGggKSB7CisgICAgICAgICAgICAg
ICAgcmJ1Z2d5UVNBLnB1c2goICJcXFsiICsgd2hpdGVzcGFjZSArICIqKD86dmFsdWV8IiArIGJv
b2xlYW5zICsgIikiICk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFN1cHBvcnQ6
IENocm9tZTwyOSwgQW5kcm9pZDw0LjQsIFNhZmFyaTw3LjArLCBpT1M8Ny4wKywgUGhhbnRvbUpT
PDEuOS44KworICAgICAgICAgICAgaWYgKCAhZWwucXVlcnlTZWxlY3RvckFsbCggIltpZH49IiAr
IGV4cGFuZG8gKyAiLV0iICkubGVuZ3RoICkgeworICAgICAgICAgICAgICAgIHJidWdneVFTQS5w
dXNoKCJ+PSIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBXZWJraXQvT3BlcmEg
LSA6Y2hlY2tlZCBzaG91bGQgcmV0dXJuIHNlbGVjdGVkIG9wdGlvbiBlbGVtZW50cworICAgICAg
ICAgICAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIvMjAxMS9SRUMtY3NzMy1zZWxlY3RvcnMtMjAx
MTA5MjkvI2NoZWNrZWQKKyAgICAgICAgICAgIC8vIElFOCB0aHJvd3MgZXJyb3IgaGVyZSBhbmQg
d2lsbCBub3Qgc2VlIGxhdGVyIHRlc3RzCisgICAgICAgICAgICBpZiAoICFlbC5xdWVyeVNlbGVj
dG9yQWxsKCI6Y2hlY2tlZCIpLmxlbmd0aCApIHsKKyAgICAgICAgICAgICAgICByYnVnZ3lRU0Eu
cHVzaCgiOmNoZWNrZWQiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gU3VwcG9y
dDogU2FmYXJpIDgrLCBpT1MgOCsKKyAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzY4NTEKKyAgICAgICAgICAgIC8vIEluLXBhZ2UgYHNlbGVj
dG9yI2lkIHNpYmxpbmctY29tYmluYXRvciBzZWxlY3RvcmAgZmFpbHMKKyAgICAgICAgICAgIGlm
ICggIWVsLnF1ZXJ5U2VsZWN0b3JBbGwoICJhIyIgKyBleHBhbmRvICsgIisqIiApLmxlbmd0aCAp
IHsKKyAgICAgICAgICAgICAgICByYnVnZ3lRU0EucHVzaCgiLiMuK1srfl0iKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfSk7CisKKyAgICAgICAgYXNzZXJ0KGZ1bmN0aW9uKCBlbCApIHsKKyAg
ICAgICAgICAgIGVsLmlubmVySFRNTCA9ICI8YSBocmVmPScnIGRpc2FibGVkPSdkaXNhYmxlZCc+
PC9hPiIgKworICAgICAgICAgICAgICAgICI8c2VsZWN0IGRpc2FibGVkPSdkaXNhYmxlZCc+PG9w
dGlvbi8+PC9zZWxlY3Q+IjsKKworICAgICAgICAgICAgLy8gU3VwcG9ydDogV2luZG93cyA4IE5h
dGl2ZSBBcHBzCisgICAgICAgICAgICAvLyBUaGUgdHlwZSBhbmQgbmFtZSBhdHRyaWJ1dGVzIGFy
ZSByZXN0cmljdGVkIGR1cmluZyAuaW5uZXJIVE1MIGFzc2lnbm1lbnQKKyAgICAgICAgICAgIHZh
ciBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7CisgICAgICAgICAgICBp
bnB1dC5zZXRBdHRyaWJ1dGUoICJ0eXBlIiwgImhpZGRlbiIgKTsKKyAgICAgICAgICAgIGVsLmFw
cGVuZENoaWxkKCBpbnB1dCApLnNldEF0dHJpYnV0ZSggIm5hbWUiLCAiRCIgKTsKKworICAgICAg
ICAgICAgLy8gU3VwcG9ydDogSUU4CisgICAgICAgICAgICAvLyBFbmZvcmNlIGNhc2Utc2Vuc2l0
aXZpdHkgb2YgbmFtZSBhdHRyaWJ1dGUKKyAgICAgICAgICAgIGlmICggZWwucXVlcnlTZWxlY3Rv
ckFsbCgiW25hbWU9ZF0iKS5sZW5ndGggKSB7CisgICAgICAgICAgICAgICAgcmJ1Z2d5UVNBLnB1
c2goICJuYW1lIiArIHdoaXRlc3BhY2UgKyAiKlsqXiR8IX5dPz0iICk7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIC8vIEZGIDMuNSAtIDplbmFibGVkLzpkaXNhYmxlZCBhbmQgaGlkZGVu
IGVsZW1lbnRzIChoaWRkZW4gZWxlbWVudHMgYXJlIHN0aWxsIGVuYWJsZWQpCisgICAgICAgICAg
ICAvLyBJRTggdGhyb3dzIGVycm9yIGhlcmUgYW5kIHdpbGwgbm90IHNlZSBsYXRlciB0ZXN0cwor
ICAgICAgICAgICAgaWYgKCBlbC5xdWVyeVNlbGVjdG9yQWxsKCI6ZW5hYmxlZCIpLmxlbmd0aCAh
PT0gMiApIHsKKyAgICAgICAgICAgICAgICByYnVnZ3lRU0EucHVzaCggIjplbmFibGVkIiwgIjpk
aXNhYmxlZCIgKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gU3VwcG9ydDogSUU5
LTExKworICAgICAgICAgICAgLy8gSUUncyA6ZGlzYWJsZWQgc2VsZWN0b3IgZG9lcyBub3QgcGlj
ayB1cCB0aGUgY2hpbGRyZW4gb2YgZGlzYWJsZWQgZmllbGRzZXRzCisgICAgICAgICAgICBkb2NF
bGVtLmFwcGVuZENoaWxkKCBlbCApLmRpc2FibGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmICgg
ZWwucXVlcnlTZWxlY3RvckFsbCgiOmRpc2FibGVkIikubGVuZ3RoICE9PSAyICkgeworICAgICAg
ICAgICAgICAgIHJidWdneVFTQS5wdXNoKCAiOmVuYWJsZWQiLCAiOmRpc2FibGVkIiApOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBPcGVyYSAxMC0xMSBkb2VzIG5vdCB0aHJvdyBv
biBwb3N0LWNvbW1hIGludmFsaWQgcHNldWRvcworICAgICAgICAgICAgZWwucXVlcnlTZWxlY3Rv
ckFsbCgiKiw6eCIpOworICAgICAgICAgICAgcmJ1Z2d5UVNBLnB1c2goIiwuKjoiKTsKKyAgICAg
ICAgfSk7CisgICAgfQorCisgICAgaWYgKCAoc3VwcG9ydC5tYXRjaGVzU2VsZWN0b3IgPSBybmF0
aXZlLnRlc3QoIChtYXRjaGVzID0gZG9jRWxlbS5tYXRjaGVzIHx8CisgICAgICAgIGRvY0VsZW0u
d2Via2l0TWF0Y2hlc1NlbGVjdG9yIHx8CisgICAgICAgIGRvY0VsZW0ubW96TWF0Y2hlc1NlbGVj
dG9yIHx8CisgICAgICAgIGRvY0VsZW0ub01hdGNoZXNTZWxlY3RvciB8fAorICAgICAgICBkb2NF
bGVtLm1zTWF0Y2hlc1NlbGVjdG9yKSApKSApIHsKKworICAgICAgICBhc3NlcnQoZnVuY3Rpb24o
IGVsICkgeworICAgICAgICAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIGl0J3MgcG9zc2libGUgdG8g
ZG8gbWF0Y2hlc1NlbGVjdG9yCisgICAgICAgICAgICAvLyBvbiBhIGRpc2Nvbm5lY3RlZCBub2Rl
IChJRSA5KQorICAgICAgICAgICAgc3VwcG9ydC5kaXNjb25uZWN0ZWRNYXRjaCA9IG1hdGNoZXMu
Y2FsbCggZWwsICIqIiApOworCisgICAgICAgICAgICAvLyBUaGlzIHNob3VsZCBmYWlsIHdpdGgg
YW4gZXhjZXB0aW9uCisgICAgICAgICAgICAvLyBHZWNrbyBkb2VzIG5vdCBlcnJvciwgcmV0dXJu
cyBmYWxzZSBpbnN0ZWFkCisgICAgICAgICAgICBtYXRjaGVzLmNhbGwoIGVsLCAiW3MhPScnXTp4
IiApOworICAgICAgICAgICAgcmJ1Z2d5TWF0Y2hlcy5wdXNoKCAiIT0iLCBwc2V1ZG9zICk7Cisg
ICAgICAgIH0pOworICAgIH0KKworICAgIHJidWdneVFTQSA9IHJidWdneVFTQS5sZW5ndGggJiYg
bmV3IFJlZ0V4cCggcmJ1Z2d5UVNBLmpvaW4oInwiKSApOworICAgIHJidWdneU1hdGNoZXMgPSBy
YnVnZ3lNYXRjaGVzLmxlbmd0aCAmJiBuZXcgUmVnRXhwKCByYnVnZ3lNYXRjaGVzLmpvaW4oInwi
KSApOworCisgICAgLyogQ29udGFpbnMKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgICAgaGFzQ29t
cGFyZSA9IHJuYXRpdmUudGVzdCggZG9jRWxlbS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiApOwor
CisgICAgLy8gRWxlbWVudCBjb250YWlucyBhbm90aGVyCisgICAgLy8gUHVycG9zZWZ1bGx5IHNl
bGYtZXhjbHVzaXZlCisgICAgLy8gQXMgaW4sIGFuIGVsZW1lbnQgZG9lcyBub3QgY29udGFpbiBp
dHNlbGYKKyAgICBjb250YWlucyA9IGhhc0NvbXBhcmUgfHwgcm5hdGl2ZS50ZXN0KCBkb2NFbGVt
LmNvbnRhaW5zICkgPworICAgICAgICBmdW5jdGlvbiggYSwgYiApIHsKKyAgICAgICAgICAgIHZh
ciBhZG93biA9IGEubm9kZVR5cGUgPT09IDkgPyBhLmRvY3VtZW50RWxlbWVudCA6IGEsCisgICAg
ICAgICAgICAgICAgYnVwID0gYiAmJiBiLnBhcmVudE5vZGU7CisgICAgICAgICAgICByZXR1cm4g
YSA9PT0gYnVwIHx8ICEhKCBidXAgJiYgYnVwLm5vZGVUeXBlID09PSAxICYmICgKKyAgICAgICAg
ICAgICAgICBhZG93bi5jb250YWlucyA/CisgICAgICAgICAgICAgICAgICAgIGFkb3duLmNvbnRh
aW5zKCBidXAgKSA6CisgICAgICAgICAgICAgICAgICAgIGEuY29tcGFyZURvY3VtZW50UG9zaXRp
b24gJiYgYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiggYnVwICkgJiAxNgorICAgICAgICAgICAg
KSk7CisgICAgICAgIH0gOgorICAgICAgICBmdW5jdGlvbiggYSwgYiApIHsKKyAgICAgICAgICAg
IGlmICggYiApIHsKKyAgICAgICAgICAgICAgICB3aGlsZSAoIChiID0gYi5wYXJlbnROb2RlKSAp
IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCBiID09PSBhICkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IH07CisKKyAgICAvKiBTb3J0aW5nCisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisgICAgLy8gRG9j
dW1lbnQgb3JkZXIgc29ydGluZworICAgIHNvcnRPcmRlciA9IGhhc0NvbXBhcmUgPworICAgIGZ1
bmN0aW9uKCBhLCBiICkgeworCisgICAgICAgIC8vIEZsYWcgZm9yIGR1cGxpY2F0ZSByZW1vdmFs
CisgICAgICAgIGlmICggYSA9PT0gYiApIHsKKyAgICAgICAgICAgIGhhc0R1cGxpY2F0ZSA9IHRy
dWU7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFNvcnQg
b24gbWV0aG9kIGV4aXN0ZW5jZSBpZiBvbmx5IG9uZSBpbnB1dCBoYXMgY29tcGFyZURvY3VtZW50
UG9zaXRpb24KKyAgICAgICAgdmFyIGNvbXBhcmUgPSAhYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlv
biAtICFiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uOworICAgICAgICBpZiAoIGNvbXBhcmUgKSB7
CisgICAgICAgICAgICByZXR1cm4gY29tcGFyZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIENh
bGN1bGF0ZSBwb3NpdGlvbiBpZiBib3RoIGlucHV0cyBiZWxvbmcgdG8gdGhlIHNhbWUgZG9jdW1l
bnQKKyAgICAgICAgY29tcGFyZSA9ICggYS5vd25lckRvY3VtZW50IHx8IGEgKSA9PT0gKCBiLm93
bmVyRG9jdW1lbnQgfHwgYiApID8KKyAgICAgICAgICAgIGEuY29tcGFyZURvY3VtZW50UG9zaXRp
b24oIGIgKSA6CisKKyAgICAgICAgICAgIC8vIE90aGVyd2lzZSB3ZSBrbm93IHRoZXkgYXJlIGRp
c2Nvbm5lY3RlZAorICAgICAgICAgICAgMTsKKworICAgICAgICAvLyBEaXNjb25uZWN0ZWQgbm9k
ZXMKKyAgICAgICAgaWYgKCBjb21wYXJlICYgMSB8fAorICAgICAgICAgICAgKCFzdXBwb3J0LnNv
cnREZXRhY2hlZCAmJiBiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKCBhICkgPT09IGNvbXBhcmUp
ICkgeworCisgICAgICAgICAgICAvLyBDaG9vc2UgdGhlIGZpcnN0IGVsZW1lbnQgdGhhdCBpcyBy
ZWxhdGVkIHRvIG91ciBwcmVmZXJyZWQgZG9jdW1lbnQKKyAgICAgICAgICAgIGlmICggYSA9PT0g
ZG9jdW1lbnQgfHwgYS5vd25lckRvY3VtZW50ID09PSBwcmVmZXJyZWREb2MgJiYgY29udGFpbnMo
cHJlZmVycmVkRG9jLCBhKSApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBpZiAoIGIgPT09IGRvY3VtZW50IHx8IGIub3duZXJEb2N1bWVu
dCA9PT0gcHJlZmVycmVkRG9jICYmIGNvbnRhaW5zKHByZWZlcnJlZERvYywgYikgKSB7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIE1h
aW50YWluIG9yaWdpbmFsIG9yZGVyCisgICAgICAgICAgICByZXR1cm4gc29ydElucHV0ID8KKyAg
ICAgICAgICAgICAgICAoIGluZGV4T2YoIHNvcnRJbnB1dCwgYSApIC0gaW5kZXhPZiggc29ydElu
cHV0LCBiICkgKSA6CisgICAgICAgICAgICAgICAgMDsKKyAgICAgICAgfQorCisgICAgICAgIHJl
dHVybiBjb21wYXJlICYgNCA/IC0xIDogMTsKKyAgICB9IDoKKyAgICBmdW5jdGlvbiggYSwgYiAp
IHsKKyAgICAgICAgLy8gRXhpdCBlYXJseSBpZiB0aGUgbm9kZXMgYXJlIGlkZW50aWNhbAorICAg
ICAgICBpZiAoIGEgPT09IGIgKSB7CisgICAgICAgICAgICBoYXNEdXBsaWNhdGUgPSB0cnVlOwor
ICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKworICAgICAgICB2YXIgY3VyLAorICAg
ICAgICAgICAgaSA9IDAsCisgICAgICAgICAgICBhdXAgPSBhLnBhcmVudE5vZGUsCisgICAgICAg
ICAgICBidXAgPSBiLnBhcmVudE5vZGUsCisgICAgICAgICAgICBhcCA9IFsgYSBdLAorICAgICAg
ICAgICAgYnAgPSBbIGIgXTsKKworICAgICAgICAvLyBQYXJlbnRsZXNzIG5vZGVzIGFyZSBlaXRo
ZXIgZG9jdW1lbnRzIG9yIGRpc2Nvbm5lY3RlZAorICAgICAgICBpZiAoICFhdXAgfHwgIWJ1cCAp
IHsKKyAgICAgICAgICAgIHJldHVybiBhID09PSBkb2N1bWVudCA/IC0xIDoKKyAgICAgICAgICAg
ICAgICBiID09PSBkb2N1bWVudCA/IDEgOgorICAgICAgICAgICAgICAgIGF1cCA/IC0xIDoKKyAg
ICAgICAgICAgICAgICBidXAgPyAxIDoKKyAgICAgICAgICAgICAgICBzb3J0SW5wdXQgPworICAg
ICAgICAgICAgICAgICggaW5kZXhPZiggc29ydElucHV0LCBhICkgLSBpbmRleE9mKCBzb3J0SW5w
dXQsIGIgKSApIDoKKyAgICAgICAgICAgICAgICAwOworCisgICAgICAgIC8vIElmIHRoZSBub2Rl
cyBhcmUgc2libGluZ3MsIHdlIGNhbiBkbyBhIHF1aWNrIGNoZWNrCisgICAgICAgIH0gZWxzZSBp
ZiAoIGF1cCA9PT0gYnVwICkgeworICAgICAgICAgICAgcmV0dXJuIHNpYmxpbmdDaGVjayggYSwg
YiApOworICAgICAgICB9CisKKyAgICAgICAgLy8gT3RoZXJ3aXNlIHdlIG5lZWQgZnVsbCBsaXN0
cyBvZiB0aGVpciBhbmNlc3RvcnMgZm9yIGNvbXBhcmlzb24KKyAgICAgICAgY3VyID0gYTsKKyAg
ICAgICAgd2hpbGUgKCAoY3VyID0gY3VyLnBhcmVudE5vZGUpICkgeworICAgICAgICAgICAgYXAu
dW5zaGlmdCggY3VyICk7CisgICAgICAgIH0KKyAgICAgICAgY3VyID0gYjsKKyAgICAgICAgd2hp
bGUgKCAoY3VyID0gY3VyLnBhcmVudE5vZGUpICkgeworICAgICAgICAgICAgYnAudW5zaGlmdCgg
Y3VyICk7CisgICAgICAgIH0KKworICAgICAgICAvLyBXYWxrIGRvd24gdGhlIHRyZWUgbG9va2lu
ZyBmb3IgYSBkaXNjcmVwYW5jeQorICAgICAgICB3aGlsZSAoIGFwW2ldID09PSBicFtpXSApIHsK
KyAgICAgICAgICAgIGkrKzsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBpID8KKyAgICAg
ICAgICAgIC8vIERvIGEgc2libGluZyBjaGVjayBpZiB0aGUgbm9kZXMgaGF2ZSBhIGNvbW1vbiBh
bmNlc3RvcgorICAgICAgICAgICAgc2libGluZ0NoZWNrKCBhcFtpXSwgYnBbaV0gKSA6CisKKyAg
ICAgICAgICAgIC8vIE90aGVyd2lzZSBub2RlcyBpbiBvdXIgZG9jdW1lbnQgc29ydCBmaXJzdAor
ICAgICAgICAgICAgYXBbaV0gPT09IHByZWZlcnJlZERvYyA/IC0xIDoKKyAgICAgICAgICAgIGJw
W2ldID09PSBwcmVmZXJyZWREb2MgPyAxIDoKKyAgICAgICAgICAgIDA7CisgICAgfTsKKworICAg
IHJldHVybiBkb2N1bWVudDsKK307CisKK1NpenpsZS5tYXRjaGVzID0gZnVuY3Rpb24oIGV4cHIs
IGVsZW1lbnRzICkgeworICAgIHJldHVybiBTaXp6bGUoIGV4cHIsIG51bGwsIG51bGwsIGVsZW1l
bnRzICk7Cit9OworCitTaXp6bGUubWF0Y2hlc1NlbGVjdG9yID0gZnVuY3Rpb24oIGVsZW0sIGV4
cHIgKSB7CisgICAgLy8gU2V0IGRvY3VtZW50IHZhcnMgaWYgbmVlZGVkCisgICAgaWYgKCAoIGVs
ZW0ub3duZXJEb2N1bWVudCB8fCBlbGVtICkgIT09IGRvY3VtZW50ICkgeworICAgICAgICBzZXRE
b2N1bWVudCggZWxlbSApOworICAgIH0KKworICAgIC8vIE1ha2Ugc3VyZSB0aGF0IGF0dHJpYnV0
ZSBzZWxlY3RvcnMgYXJlIHF1b3RlZAorICAgIGV4cHIgPSBleHByLnJlcGxhY2UoIHJhdHRyaWJ1
dGVRdW90ZXMsICI9JyQxJ10iICk7CisKKyAgICBpZiAoIHN1cHBvcnQubWF0Y2hlc1NlbGVjdG9y
ICYmIGRvY3VtZW50SXNIVE1MICYmCisgICAgICAgICFjb21waWxlckNhY2hlWyBleHByICsgIiAi
IF0gJiYKKyAgICAgICAgKCAhcmJ1Z2d5TWF0Y2hlcyB8fCAhcmJ1Z2d5TWF0Y2hlcy50ZXN0KCBl
eHByICkgKSAmJgorICAgICAgICAoICFyYnVnZ3lRU0EgICAgIHx8ICFyYnVnZ3lRU0EudGVzdCgg
ZXhwciApICkgKSB7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHZhciByZXQgPSBtYXRj
aGVzLmNhbGwoIGVsZW0sIGV4cHIgKTsKKworICAgICAgICAgICAgLy8gSUUgOSdzIG1hdGNoZXNT
ZWxlY3RvciByZXR1cm5zIGZhbHNlIG9uIGRpc2Nvbm5lY3RlZCBub2RlcworICAgICAgICAgICAg
aWYgKCByZXQgfHwgc3VwcG9ydC5kaXNjb25uZWN0ZWRNYXRjaCB8fAorICAgICAgICAgICAgICAg
ICAgICAvLyBBcyB3ZWxsLCBkaXNjb25uZWN0ZWQgbm9kZXMgYXJlIHNhaWQgdG8gYmUgaW4gYSBk
b2N1bWVudAorICAgICAgICAgICAgICAgICAgICAvLyBmcmFnbWVudCBpbiBJRSA5CisgICAgICAg
ICAgICAgICAgICAgIGVsZW0uZG9jdW1lbnQgJiYgZWxlbS5kb2N1bWVudC5ub2RlVHlwZSAhPT0g
MTEgKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfSBjYXRjaCAoZSkge30KKyAgICB9CisKKyAgICByZXR1cm4gU2l6emxlKCBleHByLCBkb2N1
bWVudCwgbnVsbCwgWyBlbGVtIF0gKS5sZW5ndGggPiAwOworfTsKKworU2l6emxlLmNvbnRhaW5z
ID0gZnVuY3Rpb24oIGNvbnRleHQsIGVsZW0gKSB7CisgICAgLy8gU2V0IGRvY3VtZW50IHZhcnMg
aWYgbmVlZGVkCisgICAgaWYgKCAoIGNvbnRleHQub3duZXJEb2N1bWVudCB8fCBjb250ZXh0ICkg
IT09IGRvY3VtZW50ICkgeworICAgICAgICBzZXREb2N1bWVudCggY29udGV4dCApOworICAgIH0K
KyAgICByZXR1cm4gY29udGFpbnMoIGNvbnRleHQsIGVsZW0gKTsKK307CisKK1NpenpsZS5hdHRy
ID0gZnVuY3Rpb24oIGVsZW0sIG5hbWUgKSB7CisgICAgLy8gU2V0IGRvY3VtZW50IHZhcnMgaWYg
bmVlZGVkCisgICAgaWYgKCAoIGVsZW0ub3duZXJEb2N1bWVudCB8fCBlbGVtICkgIT09IGRvY3Vt
ZW50ICkgeworICAgICAgICBzZXREb2N1bWVudCggZWxlbSApOworICAgIH0KKworICAgIHZhciBm
biA9IEV4cHIuYXR0ckhhbmRsZVsgbmFtZS50b0xvd2VyQ2FzZSgpIF0sCisgICAgICAgIC8vIERv
bid0IGdldCBmb29sZWQgYnkgT2JqZWN0LnByb3RvdHlwZSBwcm9wZXJ0aWVzIChqUXVlcnkgIzEz
ODA3KQorICAgICAgICB2YWwgPSBmbiAmJiBoYXNPd24uY2FsbCggRXhwci5hdHRySGFuZGxlLCBu
YW1lLnRvTG93ZXJDYXNlKCkgKSA/CisgICAgICAgICAgICBmbiggZWxlbSwgbmFtZSwgIWRvY3Vt
ZW50SXNIVE1MICkgOgorICAgICAgICAgICAgdW5kZWZpbmVkOworCisgICAgcmV0dXJuIHZhbCAh
PT0gdW5kZWZpbmVkID8KKyAgICAgICAgdmFsIDoKKyAgICAgICAgc3VwcG9ydC5hdHRyaWJ1dGVz
IHx8ICFkb2N1bWVudElzSFRNTCA/CisgICAgICAgICAgICBlbGVtLmdldEF0dHJpYnV0ZSggbmFt
ZSApIDoKKyAgICAgICAgICAgICh2YWwgPSBlbGVtLmdldEF0dHJpYnV0ZU5vZGUobmFtZSkpICYm
IHZhbC5zcGVjaWZpZWQgPworICAgICAgICAgICAgICAgIHZhbC52YWx1ZSA6CisgICAgICAgICAg
ICAgICAgbnVsbDsKK307CisKK1NpenpsZS5lc2NhcGUgPSBmdW5jdGlvbiggc2VsICkgeworICAg
IHJldHVybiAoc2VsICsgIiIpLnJlcGxhY2UoIHJjc3Nlc2NhcGUsIGZjc3Nlc2NhcGUgKTsKK307
CisKK1NpenpsZS5lcnJvciA9IGZ1bmN0aW9uKCBtc2cgKSB7CisgICAgdGhyb3cgbmV3IEVycm9y
KCAiU3ludGF4IGVycm9yLCB1bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogIiArIG1zZyApOworfTsK
KworLyoqCisgKiBEb2N1bWVudCBzb3J0aW5nIGFuZCByZW1vdmluZyBkdXBsaWNhdGVzCisgKiBA
cGFyYW0ge0FycmF5TGlrZX0gcmVzdWx0cworICovCitTaXp6bGUudW5pcXVlU29ydCA9IGZ1bmN0
aW9uKCByZXN1bHRzICkgeworICAgIHZhciBlbGVtLAorICAgICAgICBkdXBsaWNhdGVzID0gW10s
CisgICAgICAgIGogPSAwLAorICAgICAgICBpID0gMDsKKworICAgIC8vIFVubGVzcyB3ZSAqa25v
dyogd2UgY2FuIGRldGVjdCBkdXBsaWNhdGVzLCBhc3N1bWUgdGhlaXIgcHJlc2VuY2UKKyAgICBo
YXNEdXBsaWNhdGUgPSAhc3VwcG9ydC5kZXRlY3REdXBsaWNhdGVzOworICAgIHNvcnRJbnB1dCA9
ICFzdXBwb3J0LnNvcnRTdGFibGUgJiYgcmVzdWx0cy5zbGljZSggMCApOworICAgIHJlc3VsdHMu
c29ydCggc29ydE9yZGVyICk7CisKKyAgICBpZiAoIGhhc0R1cGxpY2F0ZSApIHsKKyAgICAgICAg
d2hpbGUgKCAoZWxlbSA9IHJlc3VsdHNbaSsrXSkgKSB7CisgICAgICAgICAgICBpZiAoIGVsZW0g
PT09IHJlc3VsdHNbIGkgXSApIHsKKyAgICAgICAgICAgICAgICBqID0gZHVwbGljYXRlcy5wdXNo
KCBpICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgd2hpbGUgKCBqLS0gKSB7
CisgICAgICAgICAgICByZXN1bHRzLnNwbGljZSggZHVwbGljYXRlc1sgaiBdLCAxICk7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICAvLyBDbGVhciBpbnB1dCBhZnRlciBzb3J0aW5nIHRvIHJlbGVh
c2Ugb2JqZWN0cworICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vanF1ZXJ5L3NpenpsZS9w
dWxsLzIyNQorICAgIHNvcnRJbnB1dCA9IG51bGw7CisKKyAgICByZXR1cm4gcmVzdWx0czsKK307
CisKKy8qKgorICogVXRpbGl0eSBmdW5jdGlvbiBmb3IgcmV0cmlldmluZyB0aGUgdGV4dCB2YWx1
ZSBvZiBhbiBhcnJheSBvZiBET00gbm9kZXMKKyAqIEBwYXJhbSB7QXJyYXl8RWxlbWVudH0gZWxl
bQorICovCitnZXRUZXh0ID0gU2l6emxlLmdldFRleHQgPSBmdW5jdGlvbiggZWxlbSApIHsKKyAg
ICB2YXIgbm9kZSwKKyAgICAgICAgcmV0ID0gIiIsCisgICAgICAgIGkgPSAwLAorICAgICAgICBu
b2RlVHlwZSA9IGVsZW0ubm9kZVR5cGU7CisKKyAgICBpZiAoICFub2RlVHlwZSApIHsKKyAgICAg
ICAgLy8gSWYgbm8gbm9kZVR5cGUsIHRoaXMgaXMgZXhwZWN0ZWQgdG8gYmUgYW4gYXJyYXkKKyAg
ICAgICAgd2hpbGUgKCAobm9kZSA9IGVsZW1baSsrXSkgKSB7CisgICAgICAgICAgICAvLyBEbyBu
b3QgdHJhdmVyc2UgY29tbWVudCBub2RlcworICAgICAgICAgICAgcmV0ICs9IGdldFRleHQoIG5v
ZGUgKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoIG5vZGVUeXBlID09PSAxIHx8IG5vZGVU
eXBlID09PSA5IHx8IG5vZGVUeXBlID09PSAxMSApIHsKKyAgICAgICAgLy8gVXNlIHRleHRDb250
ZW50IGZvciBlbGVtZW50cworICAgICAgICAvLyBpbm5lclRleHQgdXNhZ2UgcmVtb3ZlZCBmb3Ig
Y29uc2lzdGVuY3kgb2YgbmV3IGxpbmVzIChqUXVlcnkgIzExMTUzKQorICAgICAgICBpZiAoIHR5
cGVvZiBlbGVtLnRleHRDb250ZW50ID09PSAic3RyaW5nIiApIHsKKyAgICAgICAgICAgIHJldHVy
biBlbGVtLnRleHRDb250ZW50OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gVHJh
dmVyc2UgaXRzIGNoaWxkcmVuCisgICAgICAgICAgICBmb3IgKCBlbGVtID0gZWxlbS5maXJzdENo
aWxkOyBlbGVtOyBlbGVtID0gZWxlbS5uZXh0U2libGluZyApIHsKKyAgICAgICAgICAgICAgICBy
ZXQgKz0gZ2V0VGV4dCggZWxlbSApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSBl
bHNlIGlmICggbm9kZVR5cGUgPT09IDMgfHwgbm9kZVR5cGUgPT09IDQgKSB7CisgICAgICAgIHJl
dHVybiBlbGVtLm5vZGVWYWx1ZTsKKyAgICB9CisgICAgLy8gRG8gbm90IGluY2x1ZGUgY29tbWVu
dCBvciBwcm9jZXNzaW5nIGluc3RydWN0aW9uIG5vZGVzCisKKyAgICByZXR1cm4gcmV0OworfTsK
KworRXhwciA9IFNpenpsZS5zZWxlY3RvcnMgPSB7CisKKyAgICAvLyBDYW4gYmUgYWRqdXN0ZWQg
YnkgdGhlIHVzZXIKKyAgICBjYWNoZUxlbmd0aDogNTAsCisKKyAgICBjcmVhdGVQc2V1ZG86IG1h
cmtGdW5jdGlvbiwKKworICAgIG1hdGNoOiBtYXRjaEV4cHIsCisKKyAgICBhdHRySGFuZGxlOiB7
fSwKKworICAgIGZpbmQ6IHt9LAorCisgICAgcmVsYXRpdmU6IHsKKyAgICAgICAgIj4iOiB7IGRp
cjogInBhcmVudE5vZGUiLCBmaXJzdDogdHJ1ZSB9LAorICAgICAgICAiICI6IHsgZGlyOiAicGFy
ZW50Tm9kZSIgfSwKKyAgICAgICAgIisiOiB7IGRpcjogInByZXZpb3VzU2libGluZyIsIGZpcnN0
OiB0cnVlIH0sCisgICAgICAgICJ+IjogeyBkaXI6ICJwcmV2aW91c1NpYmxpbmciIH0KKyAgICB9
LAorCisgICAgcHJlRmlsdGVyOiB7CisgICAgICAgICJBVFRSIjogZnVuY3Rpb24oIG1hdGNoICkg
eworICAgICAgICAgICAgbWF0Y2hbMV0gPSBtYXRjaFsxXS5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1
bmVzY2FwZSApOworCisgICAgICAgICAgICAvLyBNb3ZlIHRoZSBnaXZlbiB2YWx1ZSB0byBtYXRj
aFszXSB3aGV0aGVyIHF1b3RlZCBvciB1bnF1b3RlZAorICAgICAgICAgICAgbWF0Y2hbM10gPSAo
IG1hdGNoWzNdIHx8IG1hdGNoWzRdIHx8IG1hdGNoWzVdIHx8ICIiICkucmVwbGFjZSggcnVuZXNj
YXBlLCBmdW5lc2NhcGUgKTsKKworICAgICAgICAgICAgaWYgKCBtYXRjaFsyXSA9PT0gIn49IiAp
IHsKKyAgICAgICAgICAgICAgICBtYXRjaFszXSA9ICIgIiArIG1hdGNoWzNdICsgIiAiOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gbWF0Y2guc2xpY2UoIDAsIDQgKTsKKyAg
ICAgICAgfSwKKworICAgICAgICAiQ0hJTEQiOiBmdW5jdGlvbiggbWF0Y2ggKSB7CisgICAgICAg
ICAgICAvKiBtYXRjaGVzIGZyb20gbWF0Y2hFeHByWyJDSElMRCJdCisgICAgICAgICAgICAgICAg
MSB0eXBlIChvbmx5fG50aHwuLi4pCisgICAgICAgICAgICAgICAgMiB3aGF0IChjaGlsZHxvZi10
eXBlKQorICAgICAgICAgICAgICAgIDMgYXJndW1lbnQgKGV2ZW58b2RkfFxkKnxcZCpuKFsrLV1c
ZCspP3wuLi4pCisgICAgICAgICAgICAgICAgNCB4bi1jb21wb25lbnQgb2YgeG4reSBhcmd1bWVu
dCAoWystXT9cZCpufCkKKyAgICAgICAgICAgICAgICA1IHNpZ24gb2YgeG4tY29tcG9uZW50Cisg
ICAgICAgICAgICAgICAgNiB4IG9mIHhuLWNvbXBvbmVudAorICAgICAgICAgICAgICAgIDcgc2ln
biBvZiB5LWNvbXBvbmVudAorICAgICAgICAgICAgICAgIDggeSBvZiB5LWNvbXBvbmVudAorICAg
ICAgICAgICAgKi8KKyAgICAgICAgICAgIG1hdGNoWzFdID0gbWF0Y2hbMV0udG9Mb3dlckNhc2Uo
KTsKKworICAgICAgICAgICAgaWYgKCBtYXRjaFsxXS5zbGljZSggMCwgMyApID09PSAibnRoIiAp
IHsKKyAgICAgICAgICAgICAgICAvLyBudGgtKiByZXF1aXJlcyBhcmd1bWVudAorICAgICAgICAg
ICAgICAgIGlmICggIW1hdGNoWzNdICkgeworICAgICAgICAgICAgICAgICAgICBTaXp6bGUuZXJy
b3IoIG1hdGNoWzBdICk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8g
bnVtZXJpYyB4IGFuZCB5IHBhcmFtZXRlcnMgZm9yIEV4cHIuZmlsdGVyLkNISUxECisgICAgICAg
ICAgICAgICAgLy8gcmVtZW1iZXIgdGhhdCBmYWxzZS90cnVlIGNhc3QgcmVzcGVjdGl2ZWx5IHRv
IDAvMQorICAgICAgICAgICAgICAgIG1hdGNoWzRdID0gKyggbWF0Y2hbNF0gPyBtYXRjaFs1XSAr
IChtYXRjaFs2XSB8fCAxKSA6IDIgKiAoIG1hdGNoWzNdID09PSAiZXZlbiIgfHwgbWF0Y2hbM10g
PT09ICJvZGQiICkgKTsKKyAgICAgICAgICAgICAgICBtYXRjaFs1XSA9ICsoICggbWF0Y2hbN10g
KyBtYXRjaFs4XSApIHx8IG1hdGNoWzNdID09PSAib2RkIiApOworCisgICAgICAgICAgICAvLyBv
dGhlciB0eXBlcyBwcm9oaWJpdCBhcmd1bWVudHMKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoIG1h
dGNoWzNdICkgeworICAgICAgICAgICAgICAgIFNpenpsZS5lcnJvciggbWF0Y2hbMF0gKTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIG1hdGNoOworICAgICAgICB9LAorCisg
ICAgICAgICJQU0VVRE8iOiBmdW5jdGlvbiggbWF0Y2ggKSB7CisgICAgICAgICAgICB2YXIgZXhj
ZXNzLAorICAgICAgICAgICAgICAgIHVucXVvdGVkID0gIW1hdGNoWzZdICYmIG1hdGNoWzJdOwor
CisgICAgICAgICAgICBpZiAoIG1hdGNoRXhwclsiQ0hJTEQiXS50ZXN0KCBtYXRjaFswXSApICkg
eworICAgICAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAvLyBBY2NlcHQgcXVvdGVkIGFyZ3VtZW50cyBhcy1pcworICAgICAgICAgICAgaWYgKCBt
YXRjaFszXSApIHsKKyAgICAgICAgICAgICAgICBtYXRjaFsyXSA9IG1hdGNoWzRdIHx8IG1hdGNo
WzVdIHx8ICIiOworCisgICAgICAgICAgICAvLyBTdHJpcCBleGNlc3MgY2hhcmFjdGVycyBmcm9t
IHVucXVvdGVkIGFyZ3VtZW50cworICAgICAgICAgICAgfSBlbHNlIGlmICggdW5xdW90ZWQgJiYg
cnBzZXVkby50ZXN0KCB1bnF1b3RlZCApICYmCisgICAgICAgICAgICAgICAgLy8gR2V0IGV4Y2Vz
cyBmcm9tIHRva2VuaXplIChyZWN1cnNpdmVseSkKKyAgICAgICAgICAgICAgICAoZXhjZXNzID0g
dG9rZW5pemUoIHVucXVvdGVkLCB0cnVlICkpICYmCisgICAgICAgICAgICAgICAgLy8gYWR2YW5j
ZSB0byB0aGUgbmV4dCBjbG9zaW5nIHBhcmVudGhlc2lzCisgICAgICAgICAgICAgICAgKGV4Y2Vz
cyA9IHVucXVvdGVkLmluZGV4T2YoICIpIiwgdW5xdW90ZWQubGVuZ3RoIC0gZXhjZXNzICkgLSB1
bnF1b3RlZC5sZW5ndGgpICkgeworCisgICAgICAgICAgICAgICAgLy8gZXhjZXNzIGlzIGEgbmVn
YXRpdmUgaW5kZXgKKyAgICAgICAgICAgICAgICBtYXRjaFswXSA9IG1hdGNoWzBdLnNsaWNlKCAw
LCBleGNlc3MgKTsKKyAgICAgICAgICAgICAgICBtYXRjaFsyXSA9IHVucXVvdGVkLnNsaWNlKCAw
LCBleGNlc3MgKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gUmV0dXJuIG9ubHkg
Y2FwdHVyZXMgbmVlZGVkIGJ5IHRoZSBwc2V1ZG8gZmlsdGVyIG1ldGhvZCAodHlwZSBhbmQgYXJn
dW1lbnQpCisgICAgICAgICAgICByZXR1cm4gbWF0Y2guc2xpY2UoIDAsIDMgKTsKKyAgICAgICAg
fQorICAgIH0sCisKKyAgICBmaWx0ZXI6IHsKKworICAgICAgICAiVEFHIjogZnVuY3Rpb24oIG5v
ZGVOYW1lU2VsZWN0b3IgKSB7CisgICAgICAgICAgICB2YXIgbm9kZU5hbWUgPSBub2RlTmFtZVNl
bGVjdG9yLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICkudG9Mb3dlckNhc2UoKTsKKyAg
ICAgICAgICAgIHJldHVybiBub2RlTmFtZVNlbGVjdG9yID09PSAiKiIgPworICAgICAgICAgICAg
ICAgIGZ1bmN0aW9uKCkgeyByZXR1cm4gdHJ1ZTsgfSA6CisgICAgICAgICAgICAgICAgZnVuY3Rp
b24oIGVsZW0gKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbGVtLm5vZGVOYW1lICYm
IGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gbm9kZU5hbWU7CisgICAgICAgICAgICAg
ICAgfTsKKyAgICAgICAgfSwKKworICAgICAgICAiQ0xBU1MiOiBmdW5jdGlvbiggY2xhc3NOYW1l
ICkgeworICAgICAgICAgICAgdmFyIHBhdHRlcm4gPSBjbGFzc0NhY2hlWyBjbGFzc05hbWUgKyAi
ICIgXTsKKworICAgICAgICAgICAgcmV0dXJuIHBhdHRlcm4gfHwKKyAgICAgICAgICAgICAgICAo
cGF0dGVybiA9IG5ldyBSZWdFeHAoICIoXnwiICsgd2hpdGVzcGFjZSArICIpIiArIGNsYXNzTmFt
ZSArICIoIiArIHdoaXRlc3BhY2UgKyAifCQpIiApKSAmJgorICAgICAgICAgICAgICAgIGNsYXNz
Q2FjaGUoIGNsYXNzTmFtZSwgZnVuY3Rpb24oIGVsZW0gKSB7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBwYXR0ZXJuLnRlc3QoIHR5cGVvZiBlbGVtLmNsYXNzTmFtZSA9PT0gInN0cmluZyIg
JiYgZWxlbS5jbGFzc05hbWUgfHwgdHlwZW9mIGVsZW0uZ2V0QXR0cmlidXRlICE9PSAidW5kZWZp
bmVkIiAmJiBlbGVtLmdldEF0dHJpYnV0ZSgiY2xhc3MiKSB8fCAiIiApOworICAgICAgICAgICAg
ICAgIH0pOworICAgICAgICB9LAorCisgICAgICAgICJBVFRSIjogZnVuY3Rpb24oIG5hbWUsIG9w
ZXJhdG9yLCBjaGVjayApIHsKKyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiggZWxlbSApIHsK
KyAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gU2l6emxlLmF0dHIoIGVsZW0sIG5hbWUgKTsK
KworICAgICAgICAgICAgICAgIGlmICggcmVzdWx0ID09IG51bGwgKSB7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBvcGVyYXRvciA9PT0gIiE9IjsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgaWYgKCAhb3BlcmF0b3IgKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHJlc3VsdCArPSAi
IjsKKworICAgICAgICAgICAgICAgIHJldHVybiBvcGVyYXRvciA9PT0gIj0iID8gcmVzdWx0ID09
PSBjaGVjayA6CisgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yID09PSAiIT0iID8gcmVzdWx0
ICE9PSBjaGVjayA6CisgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yID09PSAiXj0iID8gY2hl
Y2sgJiYgcmVzdWx0LmluZGV4T2YoIGNoZWNrICkgPT09IDAgOgorICAgICAgICAgICAgICAgICAg
ICBvcGVyYXRvciA9PT0gIio9IiA/IGNoZWNrICYmIHJlc3VsdC5pbmRleE9mKCBjaGVjayApID4g
LTEgOgorICAgICAgICAgICAgICAgICAgICBvcGVyYXRvciA9PT0gIiQ9IiA/IGNoZWNrICYmIHJl
c3VsdC5zbGljZSggLWNoZWNrLmxlbmd0aCApID09PSBjaGVjayA6CisgICAgICAgICAgICAgICAg
ICAgIG9wZXJhdG9yID09PSAifj0iID8gKCAiICIgKyByZXN1bHQucmVwbGFjZSggcndoaXRlc3Bh
Y2UsICIgIiApICsgIiAiICkuaW5kZXhPZiggY2hlY2sgKSA+IC0xIDoKKyAgICAgICAgICAgICAg
ICAgICAgb3BlcmF0b3IgPT09ICJ8PSIgPyByZXN1bHQgPT09IGNoZWNrIHx8IHJlc3VsdC5zbGlj
ZSggMCwgY2hlY2subGVuZ3RoICsgMSApID09PSBjaGVjayArICItIiA6CisgICAgICAgICAgICAg
ICAgICAgIGZhbHNlOworICAgICAgICAgICAgfTsKKyAgICAgICAgfSwKKworICAgICAgICAiQ0hJ
TEQiOiBmdW5jdGlvbiggdHlwZSwgd2hhdCwgYXJndW1lbnQsIGZpcnN0LCBsYXN0ICkgeworICAg
ICAgICAgICAgdmFyIHNpbXBsZSA9IHR5cGUuc2xpY2UoIDAsIDMgKSAhPT0gIm50aCIsCisgICAg
ICAgICAgICAgICAgZm9yd2FyZCA9IHR5cGUuc2xpY2UoIC00ICkgIT09ICJsYXN0IiwKKyAgICAg
ICAgICAgICAgICBvZlR5cGUgPSB3aGF0ID09PSAib2YtdHlwZSI7CisKKyAgICAgICAgICAgIHJl
dHVybiBmaXJzdCA9PT0gMSAmJiBsYXN0ID09PSAwID8KKworICAgICAgICAgICAgICAgIC8vIFNo
b3J0Y3V0IGZvciA6bnRoLSoobikKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiggZWxlbSApIHsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEhZWxlbS5wYXJlbnROb2RlOworICAgICAgICAg
ICAgICAgIH0gOgorCisgICAgICAgICAgICAgICAgZnVuY3Rpb24oIGVsZW0sIGNvbnRleHQsIHht
bCApIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGNhY2hlLCB1bmlxdWVDYWNoZSwgb3V0ZXJD
YWNoZSwgbm9kZSwgbm9kZUluZGV4LCBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRp
ciA9IHNpbXBsZSAhPT0gZm9yd2FyZCA/ICJuZXh0U2libGluZyIgOiAicHJldmlvdXNTaWJsaW5n
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudCA9IGVsZW0ucGFyZW50Tm9kZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSBvZlR5cGUgJiYgZWxlbS5ub2RlTmFtZS50b0xv
d2VyQ2FzZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgdXNlQ2FjaGUgPSAheG1sICYmICFv
ZlR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICBkaWZmID0gZmFsc2U7CisKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKCBwYXJlbnQgKSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8v
IDooZmlyc3R8bGFzdHxvbmx5KS0oY2hpbGR8b2YtdHlwZSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICggc2ltcGxlICkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgg
ZGlyICkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlID0gZWxlbTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCAobm9kZSA9IG5vZGVbIGRpciBd
KSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggb2ZUeXBlID8K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLm5vZGVOYW1lLnRv
TG93ZXJDYXNlKCkgPT09IG5hbWUgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG5vZGUubm9kZVR5cGUgPT09IDEgKSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmV2ZXJzZSBkaXJlY3Rpb24gZm9yIDpvbmx5LSog
KGlmIHdlIGhhdmVuJ3QgeWV0IGRvbmUgc28pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0YXJ0ID0gZGlyID0gdHlwZSA9PT0gIm9ubHkiICYmICFzdGFydCAmJiAibmV4dFNpYmxp
bmciOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgICAgICAgICAgc3RhcnQgPSBbIGZvcndhcmQgPyBwYXJlbnQuZmlyc3RDaGlsZCA6
IHBhcmVudC5sYXN0Q2hpbGQgXTsKKworICAgICAgICAgICAgICAgICAgICAgICAgLy8gbm9uLXht
bCA6bnRoLWNoaWxkKC4uLikgc3RvcmVzIGNhY2hlIGRhdGEgb24gYHBhcmVudGAKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICggZm9yd2FyZCAmJiB1c2VDYWNoZSApIHsKKworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIFNlZWsgYGVsZW1gIGZyb20gYSBwcmV2aW91c2x5LWNhY2hl
ZCBpbmRleAorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLi4uaW4gYSBnemlwLWZy
aWVuZGx5IHdheQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUgPSBwYXJlbnQ7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ZXJDYWNoZSA9IG5vZGVbIGV4cGFuZG8gXSB8
fCAobm9kZVsgZXhwYW5kbyBdID0ge30pOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gU3VwcG9ydDogSUUgPDkgb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERl
ZmVuZCBhZ2FpbnN0IGNsb25lZCBhdHRyb3BlcnRpZXMgKGpRdWVyeSBnaC0xNzA5KQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuaXF1ZUNhY2hlID0gb3V0ZXJDYWNoZVsgbm9kZS51bmlx
dWVJRCBdIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvdXRlckNhY2hlWyBu
b2RlLnVuaXF1ZUlEIF0gPSB7fSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWNo
ZSA9IHVuaXF1ZUNhY2hlWyB0eXBlIF0gfHwgW107CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbm9kZUluZGV4ID0gY2FjaGVbIDAgXSA9PT0gZGlycnVucyAmJiBjYWNoZVsgMSBdOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRpZmYgPSBub2RlSW5kZXggJiYgY2FjaGVbIDIgXTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlID0gbm9kZUluZGV4ICYmIHBhcmVudC5j
aGlsZE5vZGVzWyBub2RlSW5kZXggXTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdo
aWxlICggKG5vZGUgPSArK25vZGVJbmRleCAmJiBub2RlICYmIG5vZGVbIGRpciBdIHx8CisKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRmFsbGJhY2sgdG8gc2Vla2luZyBgZWxl
bWAgZnJvbSB0aGUgc3RhcnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRpZmYg
PSBub2RlSW5kZXggPSAwKSB8fCBzdGFydC5wb3AoKSkgKSB7CisKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gV2hlbiBmb3VuZCwgY2FjaGUgaW5kZXhlcyBvbiBgcGFyZW50YCBh
bmQgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBub2RlLm5vZGVU
eXBlID09PSAxICYmICsrZGlmZiAmJiBub2RlID09PSBlbGVtICkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5pcXVlQ2FjaGVbIHR5cGUgXSA9IFsgZGlycnVucywgbm9k
ZUluZGV4LCBkaWZmIF07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBVc2UgcHJldmlvdXNseS1jYWNoZWQgZWxlbWVudCBpbmRl
eCBpZiBhdmFpbGFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHVzZUNhY2hl
ICkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAuLi5pbiBhIGd6aXAtZnJp
ZW5kbHkgd2F5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUgPSBlbGVtOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRlckNhY2hlID0gbm9kZVsgZXhwYW5k
byBdIHx8IChub2RlWyBleHBhbmRvIF0gPSB7fSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gU3VwcG9ydDogSUUgPDkgb25seQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBEZWZlbmQgYWdhaW5zdCBjbG9uZWQgYXR0cm9wZXJ0aWVzIChqUXVlcnkgZ2gt
MTcwOSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pcXVlQ2FjaGUgPSBvdXRl
ckNhY2hlWyBub2RlLnVuaXF1ZUlEIF0gfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChvdXRlckNhY2hlWyBub2RlLnVuaXF1ZUlEIF0gPSB7fSk7CisKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2FjaGUgPSB1bmlxdWVDYWNoZVsgdHlwZSBdIHx8IFtdOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlSW5kZXggPSBjYWNoZVsgMCBdID09
PSBkaXJydW5zICYmIGNhY2hlWyAxIF07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRpZmYgPSBub2RlSW5kZXg7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8geG1sIDpudGgtY2hpbGQoLi4uKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIG9yIDpudGgtbGFzdC1jaGlsZCguLi4pIG9yIDpudGgoLWxh
c3QpPy1vZi10eXBlKC4uLikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGRpZmYg
PT09IGZhbHNlICkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBVc2UgdGhl
IHNhbWUgbG9vcCBhcyBhYm92ZSB0byBzZWVrIGBlbGVtYCBmcm9tIHRoZSBzdGFydAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoIChub2RlID0gKytub2RlSW5kZXggJiYg
bm9kZSAmJiBub2RlWyBkaXIgXSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKGRpZmYgPSBub2RlSW5kZXggPSAwKSB8fCBzdGFydC5wb3AoKSkgKSB7CisKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggKCBvZlR5cGUgPworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9
PT0gbmFtZSA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5u
b2RlVHlwZSA9PT0gMSApICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKytkaWZmICkgeworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gQ2FjaGUgdGhlIGluZGV4IG9mIGVhY2ggZW5jb3VudGVyZWQgZWxlbWVudAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggdXNlQ2FjaGUgKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dGVyQ2FjaGUgPSBub2RlWyBl
eHBhbmRvIF0gfHwgKG5vZGVbIGV4cGFuZG8gXSA9IHt9KTsKKworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTdXBwb3J0OiBJRSA8OSBvbmx5CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERlZmVuZCBhZ2FpbnN0IGNs
b25lZCBhdHRyb3BlcnRpZXMgKGpRdWVyeSBnaC0xNzA5KQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bmlxdWVDYWNoZSA9IG91dGVyQ2FjaGVbIG5vZGUudW5p
cXVlSUQgXSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKG91dGVyQ2FjaGVbIG5vZGUudW5pcXVlSUQgXSA9IHt9KTsKKworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlxdWVDYWNoZVsgdHlwZSBdID0gWyBkaXJy
dW5zLCBkaWZmIF07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBub2RlID09PSBl
bGVtICkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIEluY29ycG9yYXRlIHRoZSBvZmZz
ZXQsIHRoZW4gY2hlY2sgYWdhaW5zdCBjeWNsZSBzaXplCisgICAgICAgICAgICAgICAgICAgICAg
ICBkaWZmIC09IGxhc3Q7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGlmZiA9PT0g
Zmlyc3QgfHwgKCBkaWZmICUgZmlyc3QgPT09IDAgJiYgZGlmZiAvIGZpcnN0ID49IDAgKTsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH07CisgICAgICAgIH0sCisKKyAg
ICAgICAgIlBTRVVETyI6IGZ1bmN0aW9uKCBwc2V1ZG8sIGFyZ3VtZW50ICkgeworICAgICAgICAg
ICAgLy8gcHNldWRvLWNsYXNzIG5hbWVzIGFyZSBjYXNlLWluc2Vuc2l0aXZlCisgICAgICAgICAg
ICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9zZWxlY3RvcnMvI3BzZXVkby1jbGFzc2VzCisgICAg
ICAgICAgICAvLyBQcmlvcml0aXplIGJ5IGNhc2Ugc2Vuc2l0aXZpdHkgaW4gY2FzZSBjdXN0b20g
cHNldWRvcyBhcmUgYWRkZWQgd2l0aCB1cHBlcmNhc2UgbGV0dGVycworICAgICAgICAgICAgLy8g
UmVtZW1iZXIgdGhhdCBzZXRGaWx0ZXJzIGluaGVyaXRzIGZyb20gcHNldWRvcworICAgICAgICAg
ICAgdmFyIGFyZ3MsCisgICAgICAgICAgICAgICAgZm4gPSBFeHByLnBzZXVkb3NbIHBzZXVkbyBd
IHx8IEV4cHIuc2V0RmlsdGVyc1sgcHNldWRvLnRvTG93ZXJDYXNlKCkgXSB8fAorICAgICAgICAg
ICAgICAgICAgICBTaXp6bGUuZXJyb3IoICJ1bnN1cHBvcnRlZCBwc2V1ZG86ICIgKyBwc2V1ZG8g
KTsKKworICAgICAgICAgICAgLy8gVGhlIHVzZXIgbWF5IHVzZSBjcmVhdGVQc2V1ZG8gdG8gaW5k
aWNhdGUgdGhhdAorICAgICAgICAgICAgLy8gYXJndW1lbnRzIGFyZSBuZWVkZWQgdG8gY3JlYXRl
IHRoZSBmaWx0ZXIgZnVuY3Rpb24KKyAgICAgICAgICAgIC8vIGp1c3QgYXMgU2l6emxlIGRvZXMK
KyAgICAgICAgICAgIGlmICggZm5bIGV4cGFuZG8gXSApIHsKKyAgICAgICAgICAgICAgICByZXR1
cm4gZm4oIGFyZ3VtZW50ICk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEJ1dCBt
YWludGFpbiBzdXBwb3J0IGZvciBvbGQgc2lnbmF0dXJlcworICAgICAgICAgICAgaWYgKCBmbi5s
ZW5ndGggPiAxICkgeworICAgICAgICAgICAgICAgIGFyZ3MgPSBbIHBzZXVkbywgcHNldWRvLCAi
IiwgYXJndW1lbnQgXTsKKyAgICAgICAgICAgICAgICByZXR1cm4gRXhwci5zZXRGaWx0ZXJzLmhh
c093blByb3BlcnR5KCBwc2V1ZG8udG9Mb3dlckNhc2UoKSApID8KKyAgICAgICAgICAgICAgICAg
ICAgbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCBzZWVkLCBtYXRjaGVzICkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgdmFyIGlkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVk
ID0gZm4oIHNlZWQsIGFyZ3VtZW50ICksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9
IG1hdGNoZWQubGVuZ3RoOworICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCBpLS0gKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWR4ID0gaW5kZXhPZiggc2VlZCwgbWF0Y2hl
ZFtpXSApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlZWRbIGlkeCBdID0gISggbWF0
Y2hlc1sgaWR4IF0gPSBtYXRjaGVkW2ldICk7CisgICAgICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgIH0pIDoKKyAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oIGVs
ZW0gKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZm4oIGVsZW0sIDAsIGFyZ3Mg
KTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
cmV0dXJuIGZuOworICAgICAgICB9CisgICAgfSwKKworICAgIHBzZXVkb3M6IHsKKyAgICAgICAg
Ly8gUG90ZW50aWFsbHkgY29tcGxleCBwc2V1ZG9zCisgICAgICAgICJub3QiOiBtYXJrRnVuY3Rp
b24oZnVuY3Rpb24oIHNlbGVjdG9yICkgeworICAgICAgICAgICAgLy8gVHJpbSB0aGUgc2VsZWN0
b3IgcGFzc2VkIHRvIGNvbXBpbGUKKyAgICAgICAgICAgIC8vIHRvIGF2b2lkIHRyZWF0aW5nIGxl
YWRpbmcgYW5kIHRyYWlsaW5nCisgICAgICAgICAgICAvLyBzcGFjZXMgYXMgY29tYmluYXRvcnMK
KyAgICAgICAgICAgIHZhciBpbnB1dCA9IFtdLAorICAgICAgICAgICAgICAgIHJlc3VsdHMgPSBb
XSwKKyAgICAgICAgICAgICAgICBtYXRjaGVyID0gY29tcGlsZSggc2VsZWN0b3IucmVwbGFjZSgg
cnRyaW0sICIkMSIgKSApOworCisgICAgICAgICAgICByZXR1cm4gbWF0Y2hlclsgZXhwYW5kbyBd
ID8KKyAgICAgICAgICAgICAgICBtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIHNlZWQsIG1hdGNoZXMs
IGNvbnRleHQsIHhtbCApIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGVsZW0sCisgICAgICAg
ICAgICAgICAgICAgICAgICB1bm1hdGNoZWQgPSBtYXRjaGVyKCBzZWVkLCBudWxsLCB4bWwsIFtd
ICksCisgICAgICAgICAgICAgICAgICAgICAgICBpID0gc2VlZC5sZW5ndGg7CisKKyAgICAgICAg
ICAgICAgICAgICAgLy8gTWF0Y2ggZWxlbWVudHMgdW5tYXRjaGVkIGJ5IGBtYXRjaGVyYAorICAg
ICAgICAgICAgICAgICAgICB3aGlsZSAoIGktLSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGlmICggKGVsZW0gPSB1bm1hdGNoZWRbaV0pICkgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNlZWRbaV0gPSAhKG1hdGNoZXNbaV0gPSBlbGVtKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0pIDoKKyAgICAg
ICAgICAgICAgICBmdW5jdGlvbiggZWxlbSwgY29udGV4dCwgeG1sICkgeworICAgICAgICAgICAg
ICAgICAgICBpbnB1dFswXSA9IGVsZW07CisgICAgICAgICAgICAgICAgICAgIG1hdGNoZXIoIGlu
cHV0LCBudWxsLCB4bWwsIHJlc3VsdHMgKTsKKyAgICAgICAgICAgICAgICAgICAgLy8gRG9uJ3Qg
a2VlcCB0aGUgZWxlbWVudCAoaXNzdWUgIzI5OSkKKyAgICAgICAgICAgICAgICAgICAgaW5wdXRb
MF0gPSBudWxsOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gIXJlc3VsdHMucG9wKCk7Cisg
ICAgICAgICAgICAgICAgfTsKKyAgICAgICAgfSksCisKKyAgICAgICAgImhhcyI6IG1hcmtGdW5j
dGlvbihmdW5jdGlvbiggc2VsZWN0b3IgKSB7CisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24o
IGVsZW0gKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFNpenpsZSggc2VsZWN0b3IsIGVsZW0g
KS5sZW5ndGggPiAwOworICAgICAgICAgICAgfTsKKyAgICAgICAgfSksCisKKyAgICAgICAgImNv
bnRhaW5zIjogbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCB0ZXh0ICkgeworICAgICAgICAgICAgdGV4
dCA9IHRleHQucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKTsKKyAgICAgICAgICAgIHJl
dHVybiBmdW5jdGlvbiggZWxlbSApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gKCBlbGVtLnRl
eHRDb250ZW50IHx8IGVsZW0uaW5uZXJUZXh0IHx8IGdldFRleHQoIGVsZW0gKSApLmluZGV4T2Yo
IHRleHQgKSA+IC0xOworICAgICAgICAgICAgfTsKKyAgICAgICAgfSksCisKKyAgICAgICAgLy8g
IldoZXRoZXIgYW4gZWxlbWVudCBpcyByZXByZXNlbnRlZCBieSBhIDpsYW5nKCkgc2VsZWN0b3IK
KyAgICAgICAgLy8gaXMgYmFzZWQgc29sZWx5IG9uIHRoZSBlbGVtZW50J3MgbGFuZ3VhZ2UgdmFs
dWUKKyAgICAgICAgLy8gYmVpbmcgZXF1YWwgdG8gdGhlIGlkZW50aWZpZXIgQywKKyAgICAgICAg
Ly8gb3IgYmVnaW5uaW5nIHdpdGggdGhlIGlkZW50aWZpZXIgQyBpbW1lZGlhdGVseSBmb2xsb3dl
ZCBieSAiLSIuCisgICAgICAgIC8vIFRoZSBtYXRjaGluZyBvZiBDIGFnYWluc3QgdGhlIGVsZW1l
bnQncyBsYW5ndWFnZSB2YWx1ZSBpcyBwZXJmb3JtZWQgY2FzZS1pbnNlbnNpdGl2ZWx5LgorICAg
ICAgICAvLyBUaGUgaWRlbnRpZmllciBDIGRvZXMgbm90IGhhdmUgdG8gYmUgYSB2YWxpZCBsYW5n
dWFnZSBuYW1lLiIKKyAgICAgICAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIvc2VsZWN0b3JzLyNs
YW5nLXBzZXVkbworICAgICAgICAibGFuZyI6IG1hcmtGdW5jdGlvbiggZnVuY3Rpb24oIGxhbmcg
KSB7CisgICAgICAgICAgICAvLyBsYW5nIHZhbHVlIG11c3QgYmUgYSB2YWxpZCBpZGVudGlmaWVy
CisgICAgICAgICAgICBpZiAoICFyaWRlbnRpZmllci50ZXN0KGxhbmcgfHwgIiIpICkgeworICAg
ICAgICAgICAgICAgIFNpenpsZS5lcnJvciggInVuc3VwcG9ydGVkIGxhbmc6ICIgKyBsYW5nICk7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBsYW5nID0gbGFuZy5yZXBsYWNlKCBydW5lc2Nh
cGUsIGZ1bmVzY2FwZSApLnRvTG93ZXJDYXNlKCk7CisgICAgICAgICAgICByZXR1cm4gZnVuY3Rp
b24oIGVsZW0gKSB7CisgICAgICAgICAgICAgICAgdmFyIGVsZW1MYW5nOworICAgICAgICAgICAg
ICAgIGRvIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCAoZWxlbUxhbmcgPSBkb2N1bWVudElz
SFRNTCA/CisgICAgICAgICAgICAgICAgICAgICAgICBlbGVtLmxhbmcgOgorICAgICAgICAgICAg
ICAgICAgICAgICAgZWxlbS5nZXRBdHRyaWJ1dGUoInhtbDpsYW5nIikgfHwgZWxlbS5nZXRBdHRy
aWJ1dGUoImxhbmciKSkgKSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1MYW5nID0g
ZWxlbUxhbmcudG9Mb3dlckNhc2UoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBl
bGVtTGFuZyA9PT0gbGFuZyB8fCBlbGVtTGFuZy5pbmRleE9mKCBsYW5nICsgIi0iICkgPT09IDA7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IHdoaWxlICggKGVsZW0g
PSBlbGVtLnBhcmVudE5vZGUpICYmIGVsZW0ubm9kZVR5cGUgPT09IDEgKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9OworICAgICAgICB9KSwKKworICAgICAg
ICAvLyBNaXNjZWxsYW5lb3VzCisgICAgICAgICJ0YXJnZXQiOiBmdW5jdGlvbiggZWxlbSApIHsK
KyAgICAgICAgICAgIHZhciBoYXNoID0gd2luZG93LmxvY2F0aW9uICYmIHdpbmRvdy5sb2NhdGlv
bi5oYXNoOworICAgICAgICAgICAgcmV0dXJuIGhhc2ggJiYgaGFzaC5zbGljZSggMSApID09PSBl
bGVtLmlkOworICAgICAgICB9LAorCisgICAgICAgICJyb290IjogZnVuY3Rpb24oIGVsZW0gKSB7
CisgICAgICAgICAgICByZXR1cm4gZWxlbSA9PT0gZG9jRWxlbTsKKyAgICAgICAgfSwKKworICAg
ICAgICAiZm9jdXMiOiBmdW5jdGlvbiggZWxlbSApIHsKKyAgICAgICAgICAgIHJldHVybiBlbGVt
ID09PSBkb2N1bWVudC5hY3RpdmVFbGVtZW50ICYmICghZG9jdW1lbnQuaGFzRm9jdXMgfHwgZG9j
dW1lbnQuaGFzRm9jdXMoKSkgJiYgISEoZWxlbS50eXBlIHx8IGVsZW0uaHJlZiB8fCB+ZWxlbS50
YWJJbmRleCk7CisgICAgICAgIH0sCisKKyAgICAgICAgLy8gQm9vbGVhbiBwcm9wZXJ0aWVzCisg
ICAgICAgICJlbmFibGVkIjogY3JlYXRlRGlzYWJsZWRQc2V1ZG8oIGZhbHNlICksCisgICAgICAg
ICJkaXNhYmxlZCI6IGNyZWF0ZURpc2FibGVkUHNldWRvKCB0cnVlICksCisKKyAgICAgICAgImNo
ZWNrZWQiOiBmdW5jdGlvbiggZWxlbSApIHsKKyAgICAgICAgICAgIC8vIEluIENTUzMsIDpjaGVj
a2VkIHNob3VsZCByZXR1cm4gYm90aCBjaGVja2VkIGFuZCBzZWxlY3RlZCBlbGVtZW50cworICAg
ICAgICAgICAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIvMjAxMS9SRUMtY3NzMy1zZWxlY3RvcnMt
MjAxMTA5MjkvI2NoZWNrZWQKKyAgICAgICAgICAgIHZhciBub2RlTmFtZSA9IGVsZW0ubm9kZU5h
bWUudG9Mb3dlckNhc2UoKTsKKyAgICAgICAgICAgIHJldHVybiAobm9kZU5hbWUgPT09ICJpbnB1
dCIgJiYgISFlbGVtLmNoZWNrZWQpIHx8IChub2RlTmFtZSA9PT0gIm9wdGlvbiIgJiYgISFlbGVt
LnNlbGVjdGVkKTsKKyAgICAgICAgfSwKKworICAgICAgICAic2VsZWN0ZWQiOiBmdW5jdGlvbigg
ZWxlbSApIHsKKyAgICAgICAgICAgIC8vIEFjY2Vzc2luZyB0aGlzIHByb3BlcnR5IG1ha2VzIHNl
bGVjdGVkLWJ5LWRlZmF1bHQKKyAgICAgICAgICAgIC8vIG9wdGlvbnMgaW4gU2FmYXJpIHdvcmsg
cHJvcGVybHkKKyAgICAgICAgICAgIGlmICggZWxlbS5wYXJlbnROb2RlICkgeworICAgICAgICAg
ICAgICAgIGVsZW0ucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4OworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICByZXR1cm4gZWxlbS5zZWxlY3RlZCA9PT0gdHJ1ZTsKKyAgICAgICAgfSwKKwor
ICAgICAgICAvLyBDb250ZW50cworICAgICAgICAiZW1wdHkiOiBmdW5jdGlvbiggZWxlbSApIHsK
KyAgICAgICAgICAgIC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL3NlbGVjdG9ycy8jZW1wdHktcHNl
dWRvCisgICAgICAgICAgICAvLyA6ZW1wdHkgaXMgbmVnYXRlZCBieSBlbGVtZW50ICgxKSBvciBj
b250ZW50IG5vZGVzICh0ZXh0OiAzOyBjZGF0YTogNDsgZW50aXR5IHJlZjogNSksCisgICAgICAg
ICAgICAvLyAgIGJ1dCBub3QgYnkgb3RoZXJzIChjb21tZW50OiA4OyBwcm9jZXNzaW5nIGluc3Ry
dWN0aW9uOiA3OyBldGMuKQorICAgICAgICAgICAgLy8gbm9kZVR5cGUgPCA2IHdvcmtzIGJlY2F1
c2UgYXR0cmlidXRlcyAoMikgZG8gbm90IGFwcGVhciBhcyBjaGlsZHJlbgorICAgICAgICAgICAg
Zm9yICggZWxlbSA9IGVsZW0uZmlyc3RDaGlsZDsgZWxlbTsgZWxlbSA9IGVsZW0ubmV4dFNpYmxp
bmcgKSB7CisgICAgICAgICAgICAgICAgaWYgKCBlbGVtLm5vZGVUeXBlIDwgNiApIHsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9LAorCisgICAgICAgICJw
YXJlbnQiOiBmdW5jdGlvbiggZWxlbSApIHsKKyAgICAgICAgICAgIHJldHVybiAhRXhwci5wc2V1
ZG9zWyJlbXB0eSJdKCBlbGVtICk7CisgICAgICAgIH0sCisKKyAgICAgICAgLy8gRWxlbWVudC9p
bnB1dCB0eXBlcworICAgICAgICAiaGVhZGVyIjogZnVuY3Rpb24oIGVsZW0gKSB7CisgICAgICAg
ICAgICByZXR1cm4gcmhlYWRlci50ZXN0KCBlbGVtLm5vZGVOYW1lICk7CisgICAgICAgIH0sCisK
KyAgICAgICAgImlucHV0IjogZnVuY3Rpb24oIGVsZW0gKSB7CisgICAgICAgICAgICByZXR1cm4g
cmlucHV0cy50ZXN0KCBlbGVtLm5vZGVOYW1lICk7CisgICAgICAgIH0sCisKKyAgICAgICAgImJ1
dHRvbiI6IGZ1bmN0aW9uKCBlbGVtICkgeworICAgICAgICAgICAgdmFyIG5hbWUgPSBlbGVtLm5v
ZGVOYW1lLnRvTG93ZXJDYXNlKCk7CisgICAgICAgICAgICByZXR1cm4gbmFtZSA9PT0gImlucHV0
IiAmJiBlbGVtLnR5cGUgPT09ICJidXR0b24iIHx8IG5hbWUgPT09ICJidXR0b24iOworICAgICAg
ICB9LAorCisgICAgICAgICJ0ZXh0IjogZnVuY3Rpb24oIGVsZW0gKSB7CisgICAgICAgICAgICB2
YXIgYXR0cjsKKyAgICAgICAgICAgIHJldHVybiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkg
PT09ICJpbnB1dCIgJiYKKyAgICAgICAgICAgICAgICBlbGVtLnR5cGUgPT09ICJ0ZXh0IiAmJgor
CisgICAgICAgICAgICAgICAgLy8gU3VwcG9ydDogSUU8OAorICAgICAgICAgICAgICAgIC8vIE5l
dyBIVE1MNSBhdHRyaWJ1dGUgdmFsdWVzIChlLmcuLCAic2VhcmNoIikgYXBwZWFyIHdpdGggZWxl
bS50eXBlID09PSAidGV4dCIKKyAgICAgICAgICAgICAgICAoIChhdHRyID0gZWxlbS5nZXRBdHRy
aWJ1dGUoInR5cGUiKSkgPT0gbnVsbCB8fCBhdHRyLnRvTG93ZXJDYXNlKCkgPT09ICJ0ZXh0IiAp
OworICAgICAgICB9LAorCisgICAgICAgIC8vIFBvc2l0aW9uLWluLWNvbGxlY3Rpb24KKyAgICAg
ICAgImZpcnN0IjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgIHJldHVybiBbIDAgXTsKKyAgICAgICAgfSksCisKKyAgICAgICAgImxhc3QiOiBjcmVhdGVQ
b3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0aCApIHsKKyAgICAg
ICAgICAgIHJldHVybiBbIGxlbmd0aCAtIDEgXTsKKyAgICAgICAgfSksCisKKyAgICAgICAgImVx
IjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbiggbWF0Y2hJbmRleGVzLCBsZW5ndGgs
IGFyZ3VtZW50ICkgeworICAgICAgICAgICAgcmV0dXJuIFsgYXJndW1lbnQgPCAwID8gYXJndW1l
bnQgKyBsZW5ndGggOiBhcmd1bWVudCBdOworICAgICAgICB9KSwKKworICAgICAgICAiZXZlbiI6
IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24oIG1hdGNoSW5kZXhlcywgbGVuZ3RoICkg
eworICAgICAgICAgICAgdmFyIGkgPSAwOworICAgICAgICAgICAgZm9yICggOyBpIDwgbGVuZ3Ro
OyBpICs9IDIgKSB7CisgICAgICAgICAgICAgICAgbWF0Y2hJbmRleGVzLnB1c2goIGkgKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBtYXRjaEluZGV4ZXM7CisgICAgICAgIH0p
LAorCisgICAgICAgICJvZGQiOiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9uKCBtYXRj
aEluZGV4ZXMsIGxlbmd0aCApIHsKKyAgICAgICAgICAgIHZhciBpID0gMTsKKyAgICAgICAgICAg
IGZvciAoIDsgaSA8IGxlbmd0aDsgaSArPSAyICkgeworICAgICAgICAgICAgICAgIG1hdGNoSW5k
ZXhlcy5wdXNoKCBpICk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gbWF0Y2hJ
bmRleGVzOworICAgICAgICB9KSwKKworICAgICAgICAibHQiOiBjcmVhdGVQb3NpdGlvbmFsUHNl
dWRvKGZ1bmN0aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0aCwgYXJndW1lbnQgKSB7CisgICAgICAg
ICAgICB2YXIgaSA9IGFyZ3VtZW50IDwgMCA/IGFyZ3VtZW50ICsgbGVuZ3RoIDogYXJndW1lbnQ7
CisgICAgICAgICAgICBmb3IgKCA7IC0taSA+PSAwOyApIHsKKyAgICAgICAgICAgICAgICBtYXRj
aEluZGV4ZXMucHVzaCggaSApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG1h
dGNoSW5kZXhlczsKKyAgICAgICAgfSksCisKKyAgICAgICAgImd0IjogY3JlYXRlUG9zaXRpb25h
bFBzZXVkbyhmdW5jdGlvbiggbWF0Y2hJbmRleGVzLCBsZW5ndGgsIGFyZ3VtZW50ICkgeworICAg
ICAgICAgICAgdmFyIGkgPSBhcmd1bWVudCA8IDAgPyBhcmd1bWVudCArIGxlbmd0aCA6IGFyZ3Vt
ZW50OworICAgICAgICAgICAgZm9yICggOyArK2kgPCBsZW5ndGg7ICkgeworICAgICAgICAgICAg
ICAgIG1hdGNoSW5kZXhlcy5wdXNoKCBpICk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBy
ZXR1cm4gbWF0Y2hJbmRleGVzOworICAgICAgICB9KQorICAgIH0KK307CisKK0V4cHIucHNldWRv
c1sibnRoIl0gPSBFeHByLnBzZXVkb3NbImVxIl07CisKKy8vIEFkZCBidXR0b24vaW5wdXQgdHlw
ZSBwc2V1ZG9zCitmb3IgKCBpIGluIHsgcmFkaW86IHRydWUsIGNoZWNrYm94OiB0cnVlLCBmaWxl
OiB0cnVlLCBwYXNzd29yZDogdHJ1ZSwgaW1hZ2U6IHRydWUgfSApIHsKKyAgICBFeHByLnBzZXVk
b3NbIGkgXSA9IGNyZWF0ZUlucHV0UHNldWRvKCBpICk7Cit9Citmb3IgKCBpIGluIHsgc3VibWl0
OiB0cnVlLCByZXNldDogdHJ1ZSB9ICkgeworICAgIEV4cHIucHNldWRvc1sgaSBdID0gY3JlYXRl
QnV0dG9uUHNldWRvKCBpICk7Cit9CisKKy8vIEVhc3kgQVBJIGZvciBjcmVhdGluZyBuZXcgc2V0
RmlsdGVycworZnVuY3Rpb24gc2V0RmlsdGVycygpIHt9CitzZXRGaWx0ZXJzLnByb3RvdHlwZSA9
IEV4cHIuZmlsdGVycyA9IEV4cHIucHNldWRvczsKK0V4cHIuc2V0RmlsdGVycyA9IG5ldyBzZXRG
aWx0ZXJzKCk7CisKK3Rva2VuaXplID0gU2l6emxlLnRva2VuaXplID0gZnVuY3Rpb24oIHNlbGVj
dG9yLCBwYXJzZU9ubHkgKSB7CisgICAgdmFyIG1hdGNoZWQsIG1hdGNoLCB0b2tlbnMsIHR5cGUs
CisgICAgICAgIHNvRmFyLCBncm91cHMsIHByZUZpbHRlcnMsCisgICAgICAgIGNhY2hlZCA9IHRv
a2VuQ2FjaGVbIHNlbGVjdG9yICsgIiAiIF07CisKKyAgICBpZiAoIGNhY2hlZCApIHsKKyAgICAg
ICAgcmV0dXJuIHBhcnNlT25seSA/IDAgOiBjYWNoZWQuc2xpY2UoIDAgKTsKKyAgICB9CisKKyAg
ICBzb0ZhciA9IHNlbGVjdG9yOworICAgIGdyb3VwcyA9IFtdOworICAgIHByZUZpbHRlcnMgPSBF
eHByLnByZUZpbHRlcjsKKworICAgIHdoaWxlICggc29GYXIgKSB7CisKKyAgICAgICAgLy8gQ29t
bWEgYW5kIGZpcnN0IHJ1bgorICAgICAgICBpZiAoICFtYXRjaGVkIHx8IChtYXRjaCA9IHJjb21t
YS5leGVjKCBzb0ZhciApKSApIHsKKyAgICAgICAgICAgIGlmICggbWF0Y2ggKSB7CisgICAgICAg
ICAgICAgICAgLy8gRG9uJ3QgY29uc3VtZSB0cmFpbGluZyBjb21tYXMgYXMgdmFsaWQKKyAgICAg
ICAgICAgICAgICBzb0ZhciA9IHNvRmFyLnNsaWNlKCBtYXRjaFswXS5sZW5ndGggKSB8fCBzb0Zh
cjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGdyb3Vwcy5wdXNoKCAodG9rZW5zID0gW10p
ICk7CisgICAgICAgIH0KKworICAgICAgICBtYXRjaGVkID0gZmFsc2U7CisKKyAgICAgICAgLy8g
Q29tYmluYXRvcnMKKyAgICAgICAgaWYgKCAobWF0Y2ggPSByY29tYmluYXRvcnMuZXhlYyggc29G
YXIgKSkgKSB7CisgICAgICAgICAgICBtYXRjaGVkID0gbWF0Y2guc2hpZnQoKTsKKyAgICAgICAg
ICAgIHRva2Vucy5wdXNoKHsKKyAgICAgICAgICAgICAgICB2YWx1ZTogbWF0Y2hlZCwKKyAgICAg
ICAgICAgICAgICAvLyBDYXN0IGRlc2NlbmRhbnQgY29tYmluYXRvcnMgdG8gc3BhY2UKKyAgICAg
ICAgICAgICAgICB0eXBlOiBtYXRjaFswXS5yZXBsYWNlKCBydHJpbSwgIiAiICkKKyAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgc29GYXIgPSBzb0Zhci5zbGljZSggbWF0Y2hlZC5sZW5ndGgg
KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZpbHRlcnMKKyAgICAgICAgZm9yICggdHlwZSBp
biBFeHByLmZpbHRlciApIHsKKyAgICAgICAgICAgIGlmICggKG1hdGNoID0gbWF0Y2hFeHByWyB0
eXBlIF0uZXhlYyggc29GYXIgKSkgJiYgKCFwcmVGaWx0ZXJzWyB0eXBlIF0gfHwKKyAgICAgICAg
ICAgICAgICAobWF0Y2ggPSBwcmVGaWx0ZXJzWyB0eXBlIF0oIG1hdGNoICkpKSApIHsKKyAgICAg
ICAgICAgICAgICBtYXRjaGVkID0gbWF0Y2guc2hpZnQoKTsKKyAgICAgICAgICAgICAgICB0b2tl
bnMucHVzaCh7CisgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBtYXRjaGVkLAorICAgICAgICAg
ICAgICAgICAgICB0eXBlOiB0eXBlLAorICAgICAgICAgICAgICAgICAgICBtYXRjaGVzOiBtYXRj
aAorICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIHNvRmFyID0gc29GYXIuc2xp
Y2UoIG1hdGNoZWQubGVuZ3RoICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAg
ICBpZiAoICFtYXRjaGVkICkgeworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICAvLyBSZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgaW52YWxpZCBleGNlc3MKKyAgICAv
LyBpZiB3ZSdyZSBqdXN0IHBhcnNpbmcKKyAgICAvLyBPdGhlcndpc2UsIHRocm93IGFuIGVycm9y
IG9yIHJldHVybiB0b2tlbnMKKyAgICByZXR1cm4gcGFyc2VPbmx5ID8KKyAgICAgICAgc29GYXIu
bGVuZ3RoIDoKKyAgICAgICAgc29GYXIgPworICAgICAgICAgICAgU2l6emxlLmVycm9yKCBzZWxl
Y3RvciApIDoKKyAgICAgICAgICAgIC8vIENhY2hlIHRoZSB0b2tlbnMKKyAgICAgICAgICAgIHRv
a2VuQ2FjaGUoIHNlbGVjdG9yLCBncm91cHMgKS5zbGljZSggMCApOworfTsKKworZnVuY3Rpb24g
dG9TZWxlY3RvciggdG9rZW5zICkgeworICAgIHZhciBpID0gMCwKKyAgICAgICAgbGVuID0gdG9r
ZW5zLmxlbmd0aCwKKyAgICAgICAgc2VsZWN0b3IgPSAiIjsKKyAgICBmb3IgKCA7IGkgPCBsZW47
IGkrKyApIHsKKyAgICAgICAgc2VsZWN0b3IgKz0gdG9rZW5zW2ldLnZhbHVlOworICAgIH0KKyAg
ICByZXR1cm4gc2VsZWN0b3I7Cit9CisKK2Z1bmN0aW9uIGFkZENvbWJpbmF0b3IoIG1hdGNoZXIs
IGNvbWJpbmF0b3IsIGJhc2UgKSB7CisgICAgdmFyIGRpciA9IGNvbWJpbmF0b3IuZGlyLAorICAg
ICAgICBza2lwID0gY29tYmluYXRvci5uZXh0LAorICAgICAgICBrZXkgPSBza2lwIHx8IGRpciwK
KyAgICAgICAgY2hlY2tOb25FbGVtZW50cyA9IGJhc2UgJiYga2V5ID09PSAicGFyZW50Tm9kZSIs
CisgICAgICAgIGRvbmVOYW1lID0gZG9uZSsrOworCisgICAgcmV0dXJuIGNvbWJpbmF0b3IuZmly
c3QgPworICAgICAgICAvLyBDaGVjayBhZ2FpbnN0IGNsb3Nlc3QgYW5jZXN0b3IvcHJlY2VkaW5n
IGVsZW1lbnQKKyAgICAgICAgZnVuY3Rpb24oIGVsZW0sIGNvbnRleHQsIHhtbCApIHsKKyAgICAg
ICAgICAgIHdoaWxlICggKGVsZW0gPSBlbGVtWyBkaXIgXSkgKSB7CisgICAgICAgICAgICAgICAg
aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxIHx8IGNoZWNrTm9uRWxlbWVudHMgKSB7CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBtYXRjaGVyKCBlbGVtLCBjb250ZXh0LCB4bWwgKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIH0gOgorCisgICAgICAgIC8vIENoZWNrIGFnYWluc3QgYWxsIGFuY2VzdG9yL3ByZWNl
ZGluZyBlbGVtZW50cworICAgICAgICBmdW5jdGlvbiggZWxlbSwgY29udGV4dCwgeG1sICkgewor
ICAgICAgICAgICAgdmFyIG9sZENhY2hlLCB1bmlxdWVDYWNoZSwgb3V0ZXJDYWNoZSwKKyAgICAg
ICAgICAgICAgICBuZXdDYWNoZSA9IFsgZGlycnVucywgZG9uZU5hbWUgXTsKKworICAgICAgICAg
ICAgLy8gV2UgY2FuJ3Qgc2V0IGFyYml0cmFyeSBkYXRhIG9uIFhNTCBub2Rlcywgc28gdGhleSBk
b24ndCBiZW5lZml0IGZyb20gY29tYmluYXRvciBjYWNoaW5nCisgICAgICAgICAgICBpZiAoIHht
bCApIHsKKyAgICAgICAgICAgICAgICB3aGlsZSAoIChlbGVtID0gZWxlbVsgZGlyIF0pICkgewor
ICAgICAgICAgICAgICAgICAgICBpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgfHwgY2hlY2tOb25F
bGVtZW50cyApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICggbWF0Y2hlciggZWxlbSwg
Y29udGV4dCwgeG1sICkgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHdo
aWxlICggKGVsZW0gPSBlbGVtWyBkaXIgXSkgKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICgg
ZWxlbS5ub2RlVHlwZSA9PT0gMSB8fCBjaGVja05vbkVsZW1lbnRzICkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgb3V0ZXJDYWNoZSA9IGVsZW1bIGV4cGFuZG8gXSB8fCAoZWxlbVsgZXhwYW5k
byBdID0ge30pOworCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBTdXBwb3J0OiBJRSA8OSBv
bmx5CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBEZWZlbmQgYWdhaW5zdCBjbG9uZWQgYXR0
cm9wZXJ0aWVzIChqUXVlcnkgZ2gtMTcwOSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuaXF1
ZUNhY2hlID0gb3V0ZXJDYWNoZVsgZWxlbS51bmlxdWVJRCBdIHx8IChvdXRlckNhY2hlWyBlbGVt
LnVuaXF1ZUlEIF0gPSB7fSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICggc2tpcCAm
JiBza2lwID09PSBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZWxlbSA9IGVsZW1bIGRpciBdIHx8IGVsZW07CisgICAgICAgICAgICAg
ICAgICAgICAgICB9IGVsc2UgaWYgKCAob2xkQ2FjaGUgPSB1bmlxdWVDYWNoZVsga2V5IF0pICYm
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkQ2FjaGVbIDAgXSA9PT0gZGlycnVucyAm
JiBvbGRDYWNoZVsgMSBdID09PSBkb25lTmFtZSApIHsKKworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIEFzc2lnbiB0byBuZXdDYWNoZSBzbyByZXN1bHRzIGJhY2stcHJvcGFnYXRlIHRv
IHByZXZpb3VzIGVsZW1lbnRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChu
ZXdDYWNoZVsgMiBdID0gb2xkQ2FjaGVbIDIgXSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJldXNlIG5ld2NhY2hlIHNv
IHJlc3VsdHMgYmFjay1wcm9wYWdhdGUgdG8gcHJldmlvdXMgZWxlbWVudHMKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bmlxdWVDYWNoZVsga2V5IF0gPSBuZXdDYWNoZTsKKworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIEEgbWF0Y2ggbWVhbnMgd2UncmUgZG9uZTsgYSBmYWls
IG1lYW5zIHdlIGhhdmUgdG8ga2VlcCBjaGVja2luZworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICggKG5ld0NhY2hlWyAyIF0gPSBtYXRjaGVyKCBlbGVtLCBjb250ZXh0LCB4bWwgKSkg
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfTsKK30KKworZnVuY3Rpb24gZWxlbWVudE1h
dGNoZXIoIG1hdGNoZXJzICkgeworICAgIHJldHVybiBtYXRjaGVycy5sZW5ndGggPiAxID8KKyAg
ICAgICAgZnVuY3Rpb24oIGVsZW0sIGNvbnRleHQsIHhtbCApIHsKKyAgICAgICAgICAgIHZhciBp
ID0gbWF0Y2hlcnMubGVuZ3RoOworICAgICAgICAgICAgd2hpbGUgKCBpLS0gKSB7CisgICAgICAg
ICAgICAgICAgaWYgKCAhbWF0Y2hlcnNbaV0oIGVsZW0sIGNvbnRleHQsIHhtbCApICkgeworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0gOgorICAgICAgICBt
YXRjaGVyc1swXTsKK30KKworZnVuY3Rpb24gbXVsdGlwbGVDb250ZXh0cyggc2VsZWN0b3IsIGNv
bnRleHRzLCByZXN1bHRzICkgeworICAgIHZhciBpID0gMCwKKyAgICAgICAgbGVuID0gY29udGV4
dHMubGVuZ3RoOworICAgIGZvciAoIDsgaSA8IGxlbjsgaSsrICkgeworICAgICAgICBTaXp6bGUo
IHNlbGVjdG9yLCBjb250ZXh0c1tpXSwgcmVzdWx0cyApOworICAgIH0KKyAgICByZXR1cm4gcmVz
dWx0czsKK30KKworZnVuY3Rpb24gY29uZGVuc2UoIHVubWF0Y2hlZCwgbWFwLCBmaWx0ZXIsIGNv
bnRleHQsIHhtbCApIHsKKyAgICB2YXIgZWxlbSwKKyAgICAgICAgbmV3VW5tYXRjaGVkID0gW10s
CisgICAgICAgIGkgPSAwLAorICAgICAgICBsZW4gPSB1bm1hdGNoZWQubGVuZ3RoLAorICAgICAg
ICBtYXBwZWQgPSBtYXAgIT0gbnVsbDsKKworICAgIGZvciAoIDsgaSA8IGxlbjsgaSsrICkgewor
ICAgICAgICBpZiAoIChlbGVtID0gdW5tYXRjaGVkW2ldKSApIHsKKyAgICAgICAgICAgIGlmICgg
IWZpbHRlciB8fCBmaWx0ZXIoIGVsZW0sIGNvbnRleHQsIHhtbCApICkgeworICAgICAgICAgICAg
ICAgIG5ld1VubWF0Y2hlZC5wdXNoKCBlbGVtICk7CisgICAgICAgICAgICAgICAgaWYgKCBtYXBw
ZWQgKSB7CisgICAgICAgICAgICAgICAgICAgIG1hcC5wdXNoKCBpICk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIG5ld1Vu
bWF0Y2hlZDsKK30KKworZnVuY3Rpb24gc2V0TWF0Y2hlciggcHJlRmlsdGVyLCBzZWxlY3Rvciwg
bWF0Y2hlciwgcG9zdEZpbHRlciwgcG9zdEZpbmRlciwgcG9zdFNlbGVjdG9yICkgeworICAgIGlm
ICggcG9zdEZpbHRlciAmJiAhcG9zdEZpbHRlclsgZXhwYW5kbyBdICkgeworICAgICAgICBwb3N0
RmlsdGVyID0gc2V0TWF0Y2hlciggcG9zdEZpbHRlciApOworICAgIH0KKyAgICBpZiAoIHBvc3RG
aW5kZXIgJiYgIXBvc3RGaW5kZXJbIGV4cGFuZG8gXSApIHsKKyAgICAgICAgcG9zdEZpbmRlciA9
IHNldE1hdGNoZXIoIHBvc3RGaW5kZXIsIHBvc3RTZWxlY3RvciApOworICAgIH0KKyAgICByZXR1
cm4gbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCBzZWVkLCByZXN1bHRzLCBjb250ZXh0LCB4bWwgKSB7
CisgICAgICAgIHZhciB0ZW1wLCBpLCBlbGVtLAorICAgICAgICAgICAgcHJlTWFwID0gW10sCisg
ICAgICAgICAgICBwb3N0TWFwID0gW10sCisgICAgICAgICAgICBwcmVleGlzdGluZyA9IHJlc3Vs
dHMubGVuZ3RoLAorCisgICAgICAgICAgICAvLyBHZXQgaW5pdGlhbCBlbGVtZW50cyBmcm9tIHNl
ZWQgb3IgY29udGV4dAorICAgICAgICAgICAgZWxlbXMgPSBzZWVkIHx8IG11bHRpcGxlQ29udGV4
dHMoIHNlbGVjdG9yIHx8ICIqIiwgY29udGV4dC5ub2RlVHlwZSA/IFsgY29udGV4dCBdIDogY29u
dGV4dCwgW10gKSwKKworICAgICAgICAgICAgLy8gUHJlZmlsdGVyIHRvIGdldCBtYXRjaGVyIGlu
cHV0LCBwcmVzZXJ2aW5nIGEgbWFwIGZvciBzZWVkLXJlc3VsdHMgc3luY2hyb25pemF0aW9uCisg
ICAgICAgICAgICBtYXRjaGVySW4gPSBwcmVGaWx0ZXIgJiYgKCBzZWVkIHx8ICFzZWxlY3RvciAp
ID8KKyAgICAgICAgICAgICAgICBjb25kZW5zZSggZWxlbXMsIHByZU1hcCwgcHJlRmlsdGVyLCBj
b250ZXh0LCB4bWwgKSA6CisgICAgICAgICAgICAgICAgZWxlbXMsCisKKyAgICAgICAgICAgIG1h
dGNoZXJPdXQgPSBtYXRjaGVyID8KKyAgICAgICAgICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgcG9z
dEZpbmRlciwgb3IgZmlsdGVyZWQgc2VlZCwgb3Igbm9uLXNlZWQgcG9zdEZpbHRlciBvciBwcmVl
eGlzdGluZyByZXN1bHRzLAorICAgICAgICAgICAgICAgIHBvc3RGaW5kZXIgfHwgKCBzZWVkID8g
cHJlRmlsdGVyIDogcHJlZXhpc3RpbmcgfHwgcG9zdEZpbHRlciApID8KKworICAgICAgICAgICAg
ICAgICAgICAvLyAuLi5pbnRlcm1lZGlhdGUgcHJvY2Vzc2luZyBpcyBuZWNlc3NhcnkKKyAgICAg
ICAgICAgICAgICAgICAgW10gOgorCisgICAgICAgICAgICAgICAgICAgIC8vIC4uLm90aGVyd2lz
ZSB1c2UgcmVzdWx0cyBkaXJlY3RseQorICAgICAgICAgICAgICAgICAgICByZXN1bHRzIDoKKyAg
ICAgICAgICAgICAgICBtYXRjaGVySW47CisKKyAgICAgICAgLy8gRmluZCBwcmltYXJ5IG1hdGNo
ZXMKKyAgICAgICAgaWYgKCBtYXRjaGVyICkgeworICAgICAgICAgICAgbWF0Y2hlciggbWF0Y2hl
ckluLCBtYXRjaGVyT3V0LCBjb250ZXh0LCB4bWwgKTsKKyAgICAgICAgfQorCisgICAgICAgIC8v
IEFwcGx5IHBvc3RGaWx0ZXIKKyAgICAgICAgaWYgKCBwb3N0RmlsdGVyICkgeworICAgICAgICAg
ICAgdGVtcCA9IGNvbmRlbnNlKCBtYXRjaGVyT3V0LCBwb3N0TWFwICk7CisgICAgICAgICAgICBw
b3N0RmlsdGVyKCB0ZW1wLCBbXSwgY29udGV4dCwgeG1sICk7CisKKyAgICAgICAgICAgIC8vIFVu
LW1hdGNoIGZhaWxpbmcgZWxlbWVudHMgYnkgbW92aW5nIHRoZW0gYmFjayB0byBtYXRjaGVySW4K
KyAgICAgICAgICAgIGkgPSB0ZW1wLmxlbmd0aDsKKyAgICAgICAgICAgIHdoaWxlICggaS0tICkg
eworICAgICAgICAgICAgICAgIGlmICggKGVsZW0gPSB0ZW1wW2ldKSApIHsKKyAgICAgICAgICAg
ICAgICAgICAgbWF0Y2hlck91dFsgcG9zdE1hcFtpXSBdID0gIShtYXRjaGVySW5bIHBvc3RNYXBb
aV0gXSA9IGVsZW0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorCisgICAgICAgIGlmICggc2VlZCApIHsKKyAgICAgICAgICAgIGlmICggcG9zdEZpbmRlciB8
fCBwcmVGaWx0ZXIgKSB7CisgICAgICAgICAgICAgICAgaWYgKCBwb3N0RmluZGVyICkgeworICAg
ICAgICAgICAgICAgICAgICAvLyBHZXQgdGhlIGZpbmFsIG1hdGNoZXJPdXQgYnkgY29uZGVuc2lu
ZyB0aGlzIGludGVybWVkaWF0ZSBpbnRvIHBvc3RGaW5kZXIgY29udGV4dHMKKyAgICAgICAgICAg
ICAgICAgICAgdGVtcCA9IFtdOworICAgICAgICAgICAgICAgICAgICBpID0gbWF0Y2hlck91dC5s
ZW5ndGg7CisgICAgICAgICAgICAgICAgICAgIHdoaWxlICggaS0tICkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCAoZWxlbSA9IG1hdGNoZXJPdXRbaV0pICkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIFJlc3RvcmUgbWF0Y2hlckluIHNpbmNlIGVsZW0gaXMgbm90IHll
dCBhIGZpbmFsIG1hdGNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcC5wdXNoKCAo
bWF0Y2hlckluW2ldID0gZWxlbSkgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBwb3N0RmluZGVyKCBudWxsLCAo
bWF0Y2hlck91dCA9IFtdKSwgdGVtcCwgeG1sICk7CisgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgLy8gTW92ZSBtYXRjaGVkIGVsZW1lbnRzIGZyb20gc2VlZCB0byByZXN1bHRz
IHRvIGtlZXAgdGhlbSBzeW5jaHJvbml6ZWQKKyAgICAgICAgICAgICAgICBpID0gbWF0Y2hlck91
dC5sZW5ndGg7CisgICAgICAgICAgICAgICAgd2hpbGUgKCBpLS0gKSB7CisgICAgICAgICAgICAg
ICAgICAgIGlmICggKGVsZW0gPSBtYXRjaGVyT3V0W2ldKSAmJgorICAgICAgICAgICAgICAgICAg
ICAgICAgKHRlbXAgPSBwb3N0RmluZGVyID8gaW5kZXhPZiggc2VlZCwgZWxlbSApIDogcHJlTWFw
W2ldKSA+IC0xICkgeworCisgICAgICAgICAgICAgICAgICAgICAgICBzZWVkW3RlbXBdID0gIShy
ZXN1bHRzW3RlbXBdID0gZWxlbSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgLy8gQWRkIGVsZW1lbnRzIHRvIHJlc3Vs
dHMsIHRocm91Z2ggcG9zdEZpbmRlciBpZiBkZWZpbmVkCisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBtYXRjaGVyT3V0ID0gY29uZGVuc2UoCisgICAgICAgICAgICAgICAgbWF0Y2hlck91
dCA9PT0gcmVzdWx0cyA/CisgICAgICAgICAgICAgICAgICAgIG1hdGNoZXJPdXQuc3BsaWNlKCBw
cmVleGlzdGluZywgbWF0Y2hlck91dC5sZW5ndGggKSA6CisgICAgICAgICAgICAgICAgICAgIG1h
dGNoZXJPdXQKKyAgICAgICAgICAgICk7CisgICAgICAgICAgICBpZiAoIHBvc3RGaW5kZXIgKSB7
CisgICAgICAgICAgICAgICAgcG9zdEZpbmRlciggbnVsbCwgcmVzdWx0cywgbWF0Y2hlck91dCwg
eG1sICk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHB1c2guYXBwbHko
IHJlc3VsdHMsIG1hdGNoZXJPdXQgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0p
OworfQorCitmdW5jdGlvbiBtYXRjaGVyRnJvbVRva2VucyggdG9rZW5zICkgeworICAgIHZhciBj
aGVja0NvbnRleHQsIG1hdGNoZXIsIGosCisgICAgICAgIGxlbiA9IHRva2Vucy5sZW5ndGgsCisg
ICAgICAgIGxlYWRpbmdSZWxhdGl2ZSA9IEV4cHIucmVsYXRpdmVbIHRva2Vuc1swXS50eXBlIF0s
CisgICAgICAgIGltcGxpY2l0UmVsYXRpdmUgPSBsZWFkaW5nUmVsYXRpdmUgfHwgRXhwci5yZWxh
dGl2ZVsiICJdLAorICAgICAgICBpID0gbGVhZGluZ1JlbGF0aXZlID8gMSA6IDAsCisKKyAgICAg
ICAgLy8gVGhlIGZvdW5kYXRpb25hbCBtYXRjaGVyIGVuc3VyZXMgdGhhdCBlbGVtZW50cyBhcmUg
cmVhY2hhYmxlIGZyb20gdG9wLWxldmVsIGNvbnRleHQocykKKyAgICAgICAgbWF0Y2hDb250ZXh0
ID0gYWRkQ29tYmluYXRvciggZnVuY3Rpb24oIGVsZW0gKSB7CisgICAgICAgICAgICByZXR1cm4g
ZWxlbSA9PT0gY2hlY2tDb250ZXh0OworICAgICAgICB9LCBpbXBsaWNpdFJlbGF0aXZlLCB0cnVl
ICksCisgICAgICAgIG1hdGNoQW55Q29udGV4dCA9IGFkZENvbWJpbmF0b3IoIGZ1bmN0aW9uKCBl
bGVtICkgeworICAgICAgICAgICAgcmV0dXJuIGluZGV4T2YoIGNoZWNrQ29udGV4dCwgZWxlbSAp
ID4gLTE7CisgICAgICAgIH0sIGltcGxpY2l0UmVsYXRpdmUsIHRydWUgKSwKKyAgICAgICAgbWF0
Y2hlcnMgPSBbIGZ1bmN0aW9uKCBlbGVtLCBjb250ZXh0LCB4bWwgKSB7CisgICAgICAgICAgICB2
YXIgcmV0ID0gKCAhbGVhZGluZ1JlbGF0aXZlICYmICggeG1sIHx8IGNvbnRleHQgIT09IG91dGVy
bW9zdENvbnRleHQgKSApIHx8ICgKKyAgICAgICAgICAgICAgICAoY2hlY2tDb250ZXh0ID0gY29u
dGV4dCkubm9kZVR5cGUgPworICAgICAgICAgICAgICAgICAgICBtYXRjaENvbnRleHQoIGVsZW0s
IGNvbnRleHQsIHhtbCApIDoKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2hBbnlDb250ZXh0KCBl
bGVtLCBjb250ZXh0LCB4bWwgKSApOworICAgICAgICAgICAgLy8gQXZvaWQgaGFuZ2luZyBvbnRv
IGVsZW1lbnQgKGlzc3VlICMyOTkpCisgICAgICAgICAgICBjaGVja0NvbnRleHQgPSBudWxsOwor
ICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgICAgfSBdOworCisgICAgZm9yICggOyBpIDwg
bGVuOyBpKysgKSB7CisgICAgICAgIGlmICggKG1hdGNoZXIgPSBFeHByLnJlbGF0aXZlWyB0b2tl
bnNbaV0udHlwZSBdKSApIHsKKyAgICAgICAgICAgIG1hdGNoZXJzID0gWyBhZGRDb21iaW5hdG9y
KGVsZW1lbnRNYXRjaGVyKCBtYXRjaGVycyApLCBtYXRjaGVyKSBdOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgbWF0Y2hlciA9IEV4cHIuZmlsdGVyWyB0b2tlbnNbaV0udHlwZSBdLmFw
cGx5KCBudWxsLCB0b2tlbnNbaV0ubWF0Y2hlcyApOworCisgICAgICAgICAgICAvLyBSZXR1cm4g
c3BlY2lhbCB1cG9uIHNlZWluZyBhIHBvc2l0aW9uYWwgbWF0Y2hlcgorICAgICAgICAgICAgaWYg
KCBtYXRjaGVyWyBleHBhbmRvIF0gKSB7CisgICAgICAgICAgICAgICAgLy8gRmluZCB0aGUgbmV4
dCByZWxhdGl2ZSBvcGVyYXRvciAoaWYgYW55KSBmb3IgcHJvcGVyIGhhbmRsaW5nCisgICAgICAg
ICAgICAgICAgaiA9ICsraTsKKyAgICAgICAgICAgICAgICBmb3IgKCA7IGogPCBsZW47IGorKyAp
IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCBFeHByLnJlbGF0aXZlWyB0b2tlbnNbal0udHlw
ZSBdICkgeworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIHNldE1hdGNo
ZXIoCisgICAgICAgICAgICAgICAgICAgIGkgPiAxICYmIGVsZW1lbnRNYXRjaGVyKCBtYXRjaGVy
cyApLAorICAgICAgICAgICAgICAgICAgICBpID4gMSAmJiB0b1NlbGVjdG9yKAorICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gSWYgdGhlIHByZWNlZGluZyB0b2tlbiB3YXMgYSBkZXNjZW5kYW50
IGNvbWJpbmF0b3IsIGluc2VydCBhbiBpbXBsaWNpdCBhbnktZWxlbWVudCBgKmAKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHRva2Vucy5zbGljZSggMCwgaSAtIDEgKS5jb25jYXQoeyB2YWx1ZTog
dG9rZW5zWyBpIC0gMiBdLnR5cGUgPT09ICIgIiA/ICIqIiA6ICIiIH0pCisgICAgICAgICAgICAg
ICAgICAgICkucmVwbGFjZSggcnRyaW0sICIkMSIgKSwKKyAgICAgICAgICAgICAgICAgICAgbWF0
Y2hlciwKKyAgICAgICAgICAgICAgICAgICAgaSA8IGogJiYgbWF0Y2hlckZyb21Ub2tlbnMoIHRv
a2Vucy5zbGljZSggaSwgaiApICksCisgICAgICAgICAgICAgICAgICAgIGogPCBsZW4gJiYgbWF0
Y2hlckZyb21Ub2tlbnMoICh0b2tlbnMgPSB0b2tlbnMuc2xpY2UoIGogKSkgKSwKKyAgICAgICAg
ICAgICAgICAgICAgaiA8IGxlbiAmJiB0b1NlbGVjdG9yKCB0b2tlbnMgKQorICAgICAgICAgICAg
ICAgICk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtYXRjaGVycy5wdXNoKCBtYXRjaGVy
ICk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gZWxlbWVudE1hdGNoZXIoIG1hdGNo
ZXJzICk7Cit9CisKK2Z1bmN0aW9uIG1hdGNoZXJGcm9tR3JvdXBNYXRjaGVycyggZWxlbWVudE1h
dGNoZXJzLCBzZXRNYXRjaGVycyApIHsKKyAgICB2YXIgYnlTZXQgPSBzZXRNYXRjaGVycy5sZW5n
dGggPiAwLAorICAgICAgICBieUVsZW1lbnQgPSBlbGVtZW50TWF0Y2hlcnMubGVuZ3RoID4gMCwK
KyAgICAgICAgc3VwZXJNYXRjaGVyID0gZnVuY3Rpb24oIHNlZWQsIGNvbnRleHQsIHhtbCwgcmVz
dWx0cywgb3V0ZXJtb3N0ICkgeworICAgICAgICAgICAgdmFyIGVsZW0sIGosIG1hdGNoZXIsCisg
ICAgICAgICAgICAgICAgbWF0Y2hlZENvdW50ID0gMCwKKyAgICAgICAgICAgICAgICBpID0gIjAi
LAorICAgICAgICAgICAgICAgIHVubWF0Y2hlZCA9IHNlZWQgJiYgW10sCisgICAgICAgICAgICAg
ICAgc2V0TWF0Y2hlZCA9IFtdLAorICAgICAgICAgICAgICAgIGNvbnRleHRCYWNrdXAgPSBvdXRl
cm1vc3RDb250ZXh0LAorICAgICAgICAgICAgICAgIC8vIFdlIG11c3QgYWx3YXlzIGhhdmUgZWl0
aGVyIHNlZWQgZWxlbWVudHMgb3Igb3V0ZXJtb3N0IGNvbnRleHQKKyAgICAgICAgICAgICAgICBl
bGVtcyA9IHNlZWQgfHwgYnlFbGVtZW50ICYmIEV4cHIuZmluZFsiVEFHIl0oICIqIiwgb3V0ZXJt
b3N0ICksCisgICAgICAgICAgICAgICAgLy8gVXNlIGludGVnZXIgZGlycnVucyBpZmYgdGhpcyBp
cyB0aGUgb3V0ZXJtb3N0IG1hdGNoZXIKKyAgICAgICAgICAgICAgICBkaXJydW5zVW5pcXVlID0g
KGRpcnJ1bnMgKz0gY29udGV4dEJhY2t1cCA9PSBudWxsID8gMSA6IE1hdGgucmFuZG9tKCkgfHwg
MC4xKSwKKyAgICAgICAgICAgICAgICBsZW4gPSBlbGVtcy5sZW5ndGg7CisKKyAgICAgICAgICAg
IGlmICggb3V0ZXJtb3N0ICkgeworICAgICAgICAgICAgICAgIG91dGVybW9zdENvbnRleHQgPSBj
b250ZXh0ID09PSBkb2N1bWVudCB8fCBjb250ZXh0IHx8IG91dGVybW9zdDsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgLy8gQWRkIGVsZW1lbnRzIHBhc3NpbmcgZWxlbWVudE1hdGNoZXJz
IGRpcmVjdGx5IHRvIHJlc3VsdHMKKyAgICAgICAgICAgIC8vIFN1cHBvcnQ6IElFPDksIFNhZmFy
aQorICAgICAgICAgICAgLy8gVG9sZXJhdGUgTm9kZUxpc3QgcHJvcGVydGllcyAoSUU6ICJsZW5n
dGgiOyBTYWZhcmk6IDxudW1iZXI+KSBtYXRjaGluZyBlbGVtZW50cyBieSBpZAorICAgICAgICAg
ICAgZm9yICggOyBpICE9PSBsZW4gJiYgKGVsZW0gPSBlbGVtc1tpXSkgIT0gbnVsbDsgaSsrICkg
eworICAgICAgICAgICAgICAgIGlmICggYnlFbGVtZW50ICYmIGVsZW0gKSB7CisgICAgICAgICAg
ICAgICAgICAgIGogPSAwOworICAgICAgICAgICAgICAgICAgICBpZiAoICFjb250ZXh0ICYmIGVs
ZW0ub3duZXJEb2N1bWVudCAhPT0gZG9jdW1lbnQgKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBzZXREb2N1bWVudCggZWxlbSApOworICAgICAgICAgICAgICAgICAgICAgICAgeG1sID0gIWRv
Y3VtZW50SXNIVE1MOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
IHdoaWxlICggKG1hdGNoZXIgPSBlbGVtZW50TWF0Y2hlcnNbaisrXSkgKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoIG1hdGNoZXIoIGVsZW0sIGNvbnRleHQgfHwgZG9jdW1lbnQsIHht
bCkgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cy5wdXNoKCBlbGVtICk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKCBv
dXRlcm1vc3QgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBkaXJydW5zID0gZGlycnVuc1Vu
aXF1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgIC8vIFRyYWNrIHVubWF0Y2hlZCBlbGVtZW50cyBmb3Igc2V0IGZpbHRlcnMKKyAg
ICAgICAgICAgICAgICBpZiAoIGJ5U2V0ICkgeworICAgICAgICAgICAgICAgICAgICAvLyBUaGV5
IHdpbGwgaGF2ZSBnb25lIHRocm91Z2ggYWxsIHBvc3NpYmxlIG1hdGNoZXJzCisgICAgICAgICAg
ICAgICAgICAgIGlmICggKGVsZW0gPSAhbWF0Y2hlciAmJiBlbGVtKSApIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1hdGNoZWRDb3VudC0tOworICAgICAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICAgICAgLy8gTGVuZ3RoZW4gdGhlIGFycmF5IGZvciBldmVyeSBlbGVtZW50
LCBtYXRjaGVkIG9yIG5vdAorICAgICAgICAgICAgICAgICAgICBpZiAoIHNlZWQgKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICB1bm1hdGNoZWQucHVzaCggZWxlbSApOworICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAvLyBgaWAgaXMgbm93IHRoZSBjb3VudCBvZiBlbGVtZW50cyB2aXNpdGVkIGFib3ZlLCBhbmQg
YWRkaW5nIGl0IHRvIGBtYXRjaGVkQ291bnRgCisgICAgICAgICAgICAvLyBtYWtlcyB0aGUgbGF0
dGVyIG5vbm5lZ2F0aXZlLgorICAgICAgICAgICAgbWF0Y2hlZENvdW50ICs9IGk7CisKKyAgICAg
ICAgICAgIC8vIEFwcGx5IHNldCBmaWx0ZXJzIHRvIHVubWF0Y2hlZCBlbGVtZW50cworICAgICAg
ICAgICAgLy8gTk9URTogVGhpcyBjYW4gYmUgc2tpcHBlZCBpZiB0aGVyZSBhcmUgbm8gdW5tYXRj
aGVkIGVsZW1lbnRzIChpLmUuLCBgbWF0Y2hlZENvdW50YAorICAgICAgICAgICAgLy8gZXF1YWxz
IGBpYCksIHVubGVzcyB3ZSBkaWRuJ3QgdmlzaXQgX2FueV8gZWxlbWVudHMgaW4gdGhlIGFib3Zl
IGxvb3AgYmVjYXVzZSB3ZSBoYXZlCisgICAgICAgICAgICAvLyBubyBlbGVtZW50IG1hdGNoZXJz
IGFuZCBubyBzZWVkLgorICAgICAgICAgICAgLy8gSW5jcmVtZW50aW5nIGFuIGluaXRpYWxseS1z
dHJpbmcgIjAiIGBpYCBhbGxvd3MgYGlgIHRvIHJlbWFpbiBhIHN0cmluZyBvbmx5IGluIHRoYXQK
KyAgICAgICAgICAgIC8vIGNhc2UsIHdoaWNoIHdpbGwgcmVzdWx0IGluIGEgIjAwIiBgbWF0Y2hl
ZENvdW50YCB0aGF0IGRpZmZlcnMgZnJvbSBgaWAgYnV0IGlzIGFsc28KKyAgICAgICAgICAgIC8v
IG51bWVyaWNhbGx5IHplcm8uCisgICAgICAgICAgICBpZiAoIGJ5U2V0ICYmIGkgIT09IG1hdGNo
ZWRDb3VudCApIHsKKyAgICAgICAgICAgICAgICBqID0gMDsKKyAgICAgICAgICAgICAgICB3aGls
ZSAoIChtYXRjaGVyID0gc2V0TWF0Y2hlcnNbaisrXSkgKSB7CisgICAgICAgICAgICAgICAgICAg
IG1hdGNoZXIoIHVubWF0Y2hlZCwgc2V0TWF0Y2hlZCwgY29udGV4dCwgeG1sICk7CisgICAgICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKCBzZWVkICkgeworICAgICAgICAgICAg
ICAgICAgICAvLyBSZWludGVncmF0ZSBlbGVtZW50IG1hdGNoZXMgdG8gZWxpbWluYXRlIHRoZSBu
ZWVkIGZvciBzb3J0aW5nCisgICAgICAgICAgICAgICAgICAgIGlmICggbWF0Y2hlZENvdW50ID4g
MCApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICggaS0tICkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICggISh1bm1hdGNoZWRbaV0gfHwgc2V0TWF0Y2hlZFtpXSkg
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1hdGNoZWRbaV0gPSBwb3Au
Y2FsbCggcmVzdWx0cyApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgICAgIC8vIERpc2NhcmQgaW5kZXggcGxhY2Vob2xkZXIgdmFsdWVzIHRvIGdldCBvbmx5IGFj
dHVhbCBtYXRjaGVzCisgICAgICAgICAgICAgICAgICAgIHNldE1hdGNoZWQgPSBjb25kZW5zZSgg
c2V0TWF0Y2hlZCApOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIEFk
ZCBtYXRjaGVzIHRvIHJlc3VsdHMKKyAgICAgICAgICAgICAgICBwdXNoLmFwcGx5KCByZXN1bHRz
LCBzZXRNYXRjaGVkICk7CisKKyAgICAgICAgICAgICAgICAvLyBTZWVkbGVzcyBzZXQgbWF0Y2hl
cyBzdWNjZWVkaW5nIG11bHRpcGxlIHN1Y2Nlc3NmdWwgbWF0Y2hlcnMgc3RpcHVsYXRlIHNvcnRp
bmcKKyAgICAgICAgICAgICAgICBpZiAoIG91dGVybW9zdCAmJiAhc2VlZCAmJiBzZXRNYXRjaGVk
Lmxlbmd0aCA+IDAgJiYKKyAgICAgICAgICAgICAgICAgICAgKCBtYXRjaGVkQ291bnQgKyBzZXRN
YXRjaGVycy5sZW5ndGggKSA+IDEgKSB7CisKKyAgICAgICAgICAgICAgICAgICAgU2l6emxlLnVu
aXF1ZVNvcnQoIHJlc3VsdHMgKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIC8vIE92ZXJyaWRlIG1hbmlwdWxhdGlvbiBvZiBnbG9iYWxzIGJ5IG5lc3Rl
ZCBtYXRjaGVycworICAgICAgICAgICAgaWYgKCBvdXRlcm1vc3QgKSB7CisgICAgICAgICAgICAg
ICAgZGlycnVucyA9IGRpcnJ1bnNVbmlxdWU7CisgICAgICAgICAgICAgICAgb3V0ZXJtb3N0Q29u
dGV4dCA9IGNvbnRleHRCYWNrdXA7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVy
biB1bm1hdGNoZWQ7CisgICAgICAgIH07CisKKyAgICByZXR1cm4gYnlTZXQgPworICAgICAgICBt
YXJrRnVuY3Rpb24oIHN1cGVyTWF0Y2hlciApIDoKKyAgICAgICAgc3VwZXJNYXRjaGVyOworfQor
Citjb21waWxlID0gU2l6emxlLmNvbXBpbGUgPSBmdW5jdGlvbiggc2VsZWN0b3IsIG1hdGNoIC8q
IEludGVybmFsIFVzZSBPbmx5ICovICkgeworICAgIHZhciBpLAorICAgICAgICBzZXRNYXRjaGVy
cyA9IFtdLAorICAgICAgICBlbGVtZW50TWF0Y2hlcnMgPSBbXSwKKyAgICAgICAgY2FjaGVkID0g
Y29tcGlsZXJDYWNoZVsgc2VsZWN0b3IgKyAiICIgXTsKKworICAgIGlmICggIWNhY2hlZCApIHsK
KyAgICAgICAgLy8gR2VuZXJhdGUgYSBmdW5jdGlvbiBvZiByZWN1cnNpdmUgZnVuY3Rpb25zIHRo
YXQgY2FuIGJlIHVzZWQgdG8gY2hlY2sgZWFjaCBlbGVtZW50CisgICAgICAgIGlmICggIW1hdGNo
ICkgeworICAgICAgICAgICAgbWF0Y2ggPSB0b2tlbml6ZSggc2VsZWN0b3IgKTsKKyAgICAgICAg
fQorICAgICAgICBpID0gbWF0Y2gubGVuZ3RoOworICAgICAgICB3aGlsZSAoIGktLSApIHsKKyAg
ICAgICAgICAgIGNhY2hlZCA9IG1hdGNoZXJGcm9tVG9rZW5zKCBtYXRjaFtpXSApOworICAgICAg
ICAgICAgaWYgKCBjYWNoZWRbIGV4cGFuZG8gXSApIHsKKyAgICAgICAgICAgICAgICBzZXRNYXRj
aGVycy5wdXNoKCBjYWNoZWQgKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgZWxlbWVudE1hdGNoZXJzLnB1c2goIGNhY2hlZCApOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisKKyAgICAgICAgLy8gQ2FjaGUgdGhlIGNvbXBpbGVkIGZ1bmN0aW9uCisgICAgICAgIGNh
Y2hlZCA9IGNvbXBpbGVyQ2FjaGUoIHNlbGVjdG9yLCBtYXRjaGVyRnJvbUdyb3VwTWF0Y2hlcnMo
IGVsZW1lbnRNYXRjaGVycywgc2V0TWF0Y2hlcnMgKSApOworCisgICAgICAgIC8vIFNhdmUgc2Vs
ZWN0b3IgYW5kIHRva2VuaXphdGlvbgorICAgICAgICBjYWNoZWQuc2VsZWN0b3IgPSBzZWxlY3Rv
cjsKKyAgICB9CisgICAgcmV0dXJuIGNhY2hlZDsKK307CisKKy8qKgorICogQSBsb3ctbGV2ZWwg
c2VsZWN0aW9uIGZ1bmN0aW9uIHRoYXQgd29ya3Mgd2l0aCBTaXp6bGUncyBjb21waWxlZAorICog
IHNlbGVjdG9yIGZ1bmN0aW9ucworICogQHBhcmFtIHtTdHJpbmd8RnVuY3Rpb259IHNlbGVjdG9y
IEEgc2VsZWN0b3Igb3IgYSBwcmUtY29tcGlsZWQKKyAqICBzZWxlY3RvciBmdW5jdGlvbiBidWls
dCB3aXRoIFNpenpsZS5jb21waWxlCisgKiBAcGFyYW0ge0VsZW1lbnR9IGNvbnRleHQKKyAqIEBw
YXJhbSB7QXJyYXl9IFtyZXN1bHRzXQorICogQHBhcmFtIHtBcnJheX0gW3NlZWRdIEEgc2V0IG9m
IGVsZW1lbnRzIHRvIG1hdGNoIGFnYWluc3QKKyAqLworc2VsZWN0ID0gU2l6emxlLnNlbGVjdCA9
IGZ1bmN0aW9uKCBzZWxlY3RvciwgY29udGV4dCwgcmVzdWx0cywgc2VlZCApIHsKKyAgICB2YXIg
aSwgdG9rZW5zLCB0b2tlbiwgdHlwZSwgZmluZCwKKyAgICAgICAgY29tcGlsZWQgPSB0eXBlb2Yg
c2VsZWN0b3IgPT09ICJmdW5jdGlvbiIgJiYgc2VsZWN0b3IsCisgICAgICAgIG1hdGNoID0gIXNl
ZWQgJiYgdG9rZW5pemUoIChzZWxlY3RvciA9IGNvbXBpbGVkLnNlbGVjdG9yIHx8IHNlbGVjdG9y
KSApOworCisgICAgcmVzdWx0cyA9IHJlc3VsdHMgfHwgW107CisKKyAgICAvLyBUcnkgdG8gbWlu
aW1pemUgb3BlcmF0aW9ucyBpZiB0aGVyZSBpcyBvbmx5IG9uZSBzZWxlY3RvciBpbiB0aGUgbGlz
dCBhbmQgbm8gc2VlZAorICAgIC8vICh0aGUgbGF0dGVyIG9mIHdoaWNoIGd1YXJhbnRlZXMgdXMg
Y29udGV4dCkKKyAgICBpZiAoIG1hdGNoLmxlbmd0aCA9PT0gMSApIHsKKworICAgICAgICAvLyBS
ZWR1Y2UgY29udGV4dCBpZiB0aGUgbGVhZGluZyBjb21wb3VuZCBzZWxlY3RvciBpcyBhbiBJRAor
ICAgICAgICB0b2tlbnMgPSBtYXRjaFswXSA9IG1hdGNoWzBdLnNsaWNlKCAwICk7CisgICAgICAg
IGlmICggdG9rZW5zLmxlbmd0aCA+IDIgJiYgKHRva2VuID0gdG9rZW5zWzBdKS50eXBlID09PSAi
SUQiICYmCisgICAgICAgICAgICAgICAgY29udGV4dC5ub2RlVHlwZSA9PT0gOSAmJiBkb2N1bWVu
dElzSFRNTCAmJiBFeHByLnJlbGF0aXZlWyB0b2tlbnNbMV0udHlwZSBdICkgeworCisgICAgICAg
ICAgICBjb250ZXh0ID0gKCBFeHByLmZpbmRbIklEIl0oIHRva2VuLm1hdGNoZXNbMF0ucmVwbGFj
ZShydW5lc2NhcGUsIGZ1bmVzY2FwZSksIGNvbnRleHQgKSB8fCBbXSApWzBdOworICAgICAgICAg
ICAgaWYgKCAhY29udGV4dCApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0czsKKwor
ICAgICAgICAgICAgLy8gUHJlY29tcGlsZWQgbWF0Y2hlcnMgd2lsbCBzdGlsbCB2ZXJpZnkgYW5j
ZXN0cnksIHNvIHN0ZXAgdXAgYSBsZXZlbAorICAgICAgICAgICAgfSBlbHNlIGlmICggY29tcGls
ZWQgKSB7CisgICAgICAgICAgICAgICAgY29udGV4dCA9IGNvbnRleHQucGFyZW50Tm9kZTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgc2VsZWN0b3IgPSBzZWxlY3Rvci5zbGljZSggdG9r
ZW5zLnNoaWZ0KCkudmFsdWUubGVuZ3RoICk7CisgICAgICAgIH0KKworICAgICAgICAvLyBGZXRj
aCBhIHNlZWQgc2V0IGZvciByaWdodC10by1sZWZ0IG1hdGNoaW5nCisgICAgICAgIGkgPSBtYXRj
aEV4cHJbIm5lZWRzQ29udGV4dCJdLnRlc3QoIHNlbGVjdG9yICkgPyAwIDogdG9rZW5zLmxlbmd0
aDsKKyAgICAgICAgd2hpbGUgKCBpLS0gKSB7CisgICAgICAgICAgICB0b2tlbiA9IHRva2Vuc1tp
XTsKKworICAgICAgICAgICAgLy8gQWJvcnQgaWYgd2UgaGl0IGEgY29tYmluYXRvcgorICAgICAg
ICAgICAgaWYgKCBFeHByLnJlbGF0aXZlWyAodHlwZSA9IHRva2VuLnR5cGUpIF0gKSB7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIChmaW5k
ID0gRXhwci5maW5kWyB0eXBlIF0pICkgeworICAgICAgICAgICAgICAgIC8vIFNlYXJjaCwgZXhw
YW5kaW5nIGNvbnRleHQgZm9yIGxlYWRpbmcgc2libGluZyBjb21iaW5hdG9ycworICAgICAgICAg
ICAgICAgIGlmICggKHNlZWQgPSBmaW5kKAorICAgICAgICAgICAgICAgICAgICB0b2tlbi5tYXRj
aGVzWzBdLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICksCisgICAgICAgICAgICAgICAg
ICAgIHJzaWJsaW5nLnRlc3QoIHRva2Vuc1swXS50eXBlICkgJiYgdGVzdENvbnRleHQoIGNvbnRl
eHQucGFyZW50Tm9kZSApIHx8IGNvbnRleHQKKyAgICAgICAgICAgICAgICApKSApIHsKKworICAg
ICAgICAgICAgICAgICAgICAvLyBJZiBzZWVkIGlzIGVtcHR5IG9yIG5vIHRva2VucyByZW1haW4s
IHdlIGNhbiByZXR1cm4gZWFybHkKKyAgICAgICAgICAgICAgICAgICAgdG9rZW5zLnNwbGljZSgg
aSwgMSApOworICAgICAgICAgICAgICAgICAgICBzZWxlY3RvciA9IHNlZWQubGVuZ3RoICYmIHRv
U2VsZWN0b3IoIHRva2VucyApOworICAgICAgICAgICAgICAgICAgICBpZiAoICFzZWxlY3RvciAp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2guYXBwbHkoIHJlc3VsdHMsIHNlZWQgKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRzOworICAgICAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLy8gQ29tcGlsZSBhbmQgZXhl
Y3V0ZSBhIGZpbHRlcmluZyBmdW5jdGlvbiBpZiBvbmUgaXMgbm90IHByb3ZpZGVkCisgICAgLy8g
UHJvdmlkZSBgbWF0Y2hgIHRvIGF2b2lkIHJldG9rZW5pemF0aW9uIGlmIHdlIG1vZGlmaWVkIHRo
ZSBzZWxlY3RvciBhYm92ZQorICAgICggY29tcGlsZWQgfHwgY29tcGlsZSggc2VsZWN0b3IsIG1h
dGNoICkgKSgKKyAgICAgICAgc2VlZCwKKyAgICAgICAgY29udGV4dCwKKyAgICAgICAgIWRvY3Vt
ZW50SXNIVE1MLAorICAgICAgICByZXN1bHRzLAorICAgICAgICAhY29udGV4dCB8fCByc2libGlu
Zy50ZXN0KCBzZWxlY3RvciApICYmIHRlc3RDb250ZXh0KCBjb250ZXh0LnBhcmVudE5vZGUgKSB8
fCBjb250ZXh0CisgICAgKTsKKyAgICByZXR1cm4gcmVzdWx0czsKK307CisKKy8vIE9uZS10aW1l
IGFzc2lnbm1lbnRzCisKKy8vIFNvcnQgc3RhYmlsaXR5CitzdXBwb3J0LnNvcnRTdGFibGUgPSBl
eHBhbmRvLnNwbGl0KCIiKS5zb3J0KCBzb3J0T3JkZXIgKS5qb2luKCIiKSA9PT0gZXhwYW5kbzsK
KworLy8gU3VwcG9ydDogQ2hyb21lIDE0LTM1KworLy8gQWx3YXlzIGFzc3VtZSBkdXBsaWNhdGVz
IGlmIHRoZXkgYXJlbid0IHBhc3NlZCB0byB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbgorc3VwcG9y
dC5kZXRlY3REdXBsaWNhdGVzID0gISFoYXNEdXBsaWNhdGU7CisKKy8vIEluaXRpYWxpemUgYWdh
aW5zdCB0aGUgZGVmYXVsdCBkb2N1bWVudAorc2V0RG9jdW1lbnQoKTsKKworLy8gU3VwcG9ydDog
V2Via2l0PDUzNy4zMiAtIFNhZmFyaSA2LjAuMy9DaHJvbWUgMjUgKGZpeGVkIGluIENocm9tZSAy
NykKKy8vIERldGFjaGVkIG5vZGVzIGNvbmZvdW5kaW5nbHkgZm9sbG93ICplYWNoIG90aGVyKgor
c3VwcG9ydC5zb3J0RGV0YWNoZWQgPSBhc3NlcnQoZnVuY3Rpb24oIGVsICkgeworICAgIC8vIFNo
b3VsZCByZXR1cm4gMSwgYnV0IHJldHVybnMgNCAoZm9sbG93aW5nKQorICAgIHJldHVybiBlbC5j
b21wYXJlRG9jdW1lbnRQb3NpdGlvbiggZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZmllbGRzZXQi
KSApICYgMTsKK30pOworCisvLyBTdXBwb3J0OiBJRTw4CisvLyBQcmV2ZW50IGF0dHJpYnV0ZS9w
cm9wZXJ0eSAiaW50ZXJwb2xhdGlvbiIKKy8vIGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2Vu
LXVzL2xpYnJhcnkvbXM1MzY0MjklMjhWUy44NSUyOS5hc3B4CitpZiAoICFhc3NlcnQoZnVuY3Rp
b24oIGVsICkgeworICAgIGVsLmlubmVySFRNTCA9ICI8YSBocmVmPScjJz48L2E+IjsKKyAgICBy
ZXR1cm4gZWwuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoImhyZWYiKSA9PT0gIiMiIDsKK30pICkg
eworICAgIGFkZEhhbmRsZSggInR5cGV8aHJlZnxoZWlnaHR8d2lkdGgiLCBmdW5jdGlvbiggZWxl
bSwgbmFtZSwgaXNYTUwgKSB7CisgICAgICAgIGlmICggIWlzWE1MICkgeworICAgICAgICAgICAg
cmV0dXJuIGVsZW0uZ2V0QXR0cmlidXRlKCBuYW1lLCBuYW1lLnRvTG93ZXJDYXNlKCkgPT09ICJ0
eXBlIiA/IDEgOiAyICk7CisgICAgICAgIH0KKyAgICB9KTsKK30KKworLy8gU3VwcG9ydDogSUU8
OQorLy8gVXNlIGRlZmF1bHRWYWx1ZSBpbiBwbGFjZSBvZiBnZXRBdHRyaWJ1dGUoInZhbHVlIikK
K2lmICggIXN1cHBvcnQuYXR0cmlidXRlcyB8fCAhYXNzZXJ0KGZ1bmN0aW9uKCBlbCApIHsKKyAg
ICBlbC5pbm5lckhUTUwgPSAiPGlucHV0Lz4iOworICAgIGVsLmZpcnN0Q2hpbGQuc2V0QXR0cmli
dXRlKCAidmFsdWUiLCAiIiApOworICAgIHJldHVybiBlbC5maXJzdENoaWxkLmdldEF0dHJpYnV0
ZSggInZhbHVlIiApID09PSAiIjsKK30pICkgeworICAgIGFkZEhhbmRsZSggInZhbHVlIiwgZnVu
Y3Rpb24oIGVsZW0sIG5hbWUsIGlzWE1MICkgeworICAgICAgICBpZiAoICFpc1hNTCAmJiBlbGVt
Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICJpbnB1dCIgKSB7CisgICAgICAgICAgICByZXR1
cm4gZWxlbS5kZWZhdWx0VmFsdWU7CisgICAgICAgIH0KKyAgICB9KTsKK30KKworLy8gU3VwcG9y
dDogSUU8OQorLy8gVXNlIGdldEF0dHJpYnV0ZU5vZGUgdG8gZmV0Y2ggYm9vbGVhbnMgd2hlbiBn
ZXRBdHRyaWJ1dGUgbGllcworaWYgKCAhYXNzZXJ0KGZ1bmN0aW9uKCBlbCApIHsKKyAgICByZXR1
cm4gZWwuZ2V0QXR0cmlidXRlKCJkaXNhYmxlZCIpID09IG51bGw7Cit9KSApIHsKKyAgICBhZGRI
YW5kbGUoIGJvb2xlYW5zLCBmdW5jdGlvbiggZWxlbSwgbmFtZSwgaXNYTUwgKSB7CisgICAgICAg
IHZhciB2YWw7CisgICAgICAgIGlmICggIWlzWE1MICkgeworICAgICAgICAgICAgcmV0dXJuIGVs
ZW1bIG5hbWUgXSA9PT0gdHJ1ZSA/IG5hbWUudG9Mb3dlckNhc2UoKSA6CisgICAgICAgICAgICAg
ICAgICAgICh2YWwgPSBlbGVtLmdldEF0dHJpYnV0ZU5vZGUoIG5hbWUgKSkgJiYgdmFsLnNwZWNp
ZmllZCA/CisgICAgICAgICAgICAgICAgICAgIHZhbC52YWx1ZSA6CisgICAgICAgICAgICAgICAg
bnVsbDsKKyAgICAgICAgfQorICAgIH0pOworfQorCisvLyBFWFBPU0UKK3ZhciBfc2l6emxlID0g
d2luZG93LlNpenpsZTsKKworU2l6emxlLm5vQ29uZmxpY3QgPSBmdW5jdGlvbigpIHsKKyAgICBp
ZiAoIHdpbmRvdy5TaXp6bGUgPT09IFNpenpsZSApIHsKKyAgICAgICAgd2luZG93LlNpenpsZSA9
IF9zaXp6bGU7CisgICAgfQorCisgICAgcmV0dXJuIFNpenpsZTsKK307CisKK2lmICggdHlwZW9m
IGRlZmluZSA9PT0gImZ1bmN0aW9uIiAmJiBkZWZpbmUuYW1kICkgeworICAgIGRlZmluZShmdW5j
dGlvbigpIHsgcmV0dXJuIFNpenpsZTsgfSk7CisvLyBTaXp6bGUgcmVxdWlyZXMgdGhhdCB0aGVy
ZSBiZSBhIGdsb2JhbCB3aW5kb3cgaW4gQ29tbW9uLUpTIGxpa2UgZW52aXJvbm1lbnRzCit9IGVs
c2UgaWYgKCB0eXBlb2YgbW9kdWxlICE9PSAidW5kZWZpbmVkIiAmJiBtb2R1bGUuZXhwb3J0cyAp
IHsKKyAgICBtb2R1bGUuZXhwb3J0cyA9IFNpenpsZTsKK30gZWxzZSB7CisgICAgd2luZG93LlNp
enpsZSA9IFNpenpsZTsKK30KKy8vIEVYUE9TRQorCit9KSggd2luZG93ICk7CmRpZmYgLS1naXQg
YS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9leHRlcm5hbC9zaXp6bGUv
ZGlzdC9zaXp6bGUubWluLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVl
cnkvZXh0ZXJuYWwvc2l6emxlL2Rpc3Qvc2l6emxlLm1pbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZTAzMjc4
OGI2NTlkZTc0M2RmYzA5OTI2ZmFjOWUxMGZhOGQwYjgyCi0tLSAvZGV2L251bGwKKysrIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvZXh0ZXJuYWwvc2l6emxlL2Rpc3Qv
c2l6emxlLm1pbi5qcwpAQCAtMCwwICsxLDMgQEAKKy8qISBTaXp6bGUgdjIuMy4zIHwgKGMpIGpR
dWVyeSBGb3VuZGF0aW9uLCBJbmMuIHwganF1ZXJ5Lm9yZy9saWNlbnNlICovCishZnVuY3Rpb24o
YSl7dmFyIGIsYyxkLGUsZixnLGgsaSxqLGssbCxtLG4sbyxwLHEscixzLHQsdT0ic2l6emxlIisx
Km5ldyBEYXRlLHY9YS5kb2N1bWVudCx3PTAseD0wLHk9aGEoKSx6PWhhKCksQT1oYSgpLEI9ZnVu
Y3Rpb24oYSxiKXtyZXR1cm4gYT09PWImJihsPSEwKSwwfSxDPXt9Lmhhc093blByb3BlcnR5LEQ9
W10sRT1ELnBvcCxGPUQucHVzaCxHPUQucHVzaCxIPUQuc2xpY2UsST1mdW5jdGlvbihhLGIpe2Zv
cih2YXIgYz0wLGQ9YS5sZW5ndGg7YzxkO2MrKylpZihhW2NdPT09YilyZXR1cm4gYztyZXR1cm4t
MX0sSj0iY2hlY2tlZHxzZWxlY3RlZHxhc3luY3xhdXRvZm9jdXN8YXV0b3BsYXl8Y29udHJvbHN8
ZGVmZXJ8ZGlzYWJsZWR8aGlkZGVufGlzbWFwfGxvb3B8bXVsdGlwbGV8b3BlbnxyZWFkb25seXxy
ZXF1aXJlZHxzY29wZWQiLEs9IltcXHgyMFxcdFxcclxcblxcZl0iLEw9Iig/OlxcXFwufFtcXHct
XXxbXlwwLVxceGEwXSkrIixNPSJcXFsiK0srIiooIitMKyIpKD86IitLKyIqKFsqXiR8IX5dPz0p
IitLKyIqKD86JygoPzpcXFxcLnxbXlxcXFwnXSkqKSd8XCIoKD86XFxcXC58W15cXFxcXCJdKSop
XCJ8KCIrTCsiKSl8KSIrSysiKlxcXSIsTj0iOigiK0wrIikoPzpcXCgoKCcoKD86XFxcXC58W15c
XFxcJ10pKiknfFwiKCg/OlxcXFwufFteXFxcXFwiXSkqKVwiKXwoKD86XFxcXC58W15cXFxcKClb
XFxdXXwiK00rIikqKXwuKilcXCl8KSIsTz1uZXcgUmVnRXhwKEsrIisiLCJnIiksUD1uZXcgUmVn
RXhwKCJeIitLKyIrfCgoPzpefFteXFxcXF0pKD86XFxcXC4pKikiK0srIiskIiwiZyIpLFE9bmV3
IFJlZ0V4cCgiXiIrSysiKiwiK0srIioiKSxSPW5ldyBSZWdFeHAoIl4iK0srIiooWz4rfl18IitL
KyIpIitLKyIqIiksUz1uZXcgUmVnRXhwKCI9IitLKyIqKFteXFxdJ1wiXSo/KSIrSysiKlxcXSIs
ImciKSxUPW5ldyBSZWdFeHAoTiksVT1uZXcgUmVnRXhwKCJeIitMKyIkIiksVj17SUQ6bmV3IFJl
Z0V4cCgiXiMoIitMKyIpIiksQ0xBU1M6bmV3IFJlZ0V4cCgiXlxcLigiK0wrIikiKSxUQUc6bmV3
IFJlZ0V4cCgiXigiK0wrInxbKl0pIiksQVRUUjpuZXcgUmVnRXhwKCJeIitNKSxQU0VVRE86bmV3
IFJlZ0V4cCgiXiIrTiksQ0hJTEQ6bmV3IFJlZ0V4cCgiXjoob25seXxmaXJzdHxsYXN0fG50aHxu
dGgtbGFzdCktKGNoaWxkfG9mLXR5cGUpKD86XFwoIitLKyIqKGV2ZW58b2RkfCgoWystXXwpKFxc
ZCopbnwpIitLKyIqKD86KFsrLV18KSIrSysiKihcXGQrKXwpKSIrSysiKlxcKXwpIiwiaSIpLGJv
b2w6bmV3IFJlZ0V4cCgiXig/OiIrSisiKSQiLCJpIiksbmVlZHNDb250ZXh0Om5ldyBSZWdFeHAo
Il4iK0srIipbPit+XXw6KGV2ZW58b2RkfGVxfGd0fGx0fG50aHxmaXJzdHxsYXN0KSg/OlxcKCIr
SysiKigoPzotXFxkKT9cXGQqKSIrSysiKlxcKXwpKD89W14tXXwkKSIsImkiKX0sVz0vXig/Omlu
cHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pLFg9L15oXGQkL2ksWT0vXltee10rXHtccypc
W25hdGl2ZSBcdy8sWj0vXig/OiMoW1x3LV0rKXwoXHcrKXxcLihbXHctXSspKSQvLCQ9L1srfl0v
LF89bmV3IFJlZ0V4cCgiXFxcXChbXFxkYS1mXXsxLDZ9IitLKyI/fCgiK0srIil8LikiLCJpZyIp
LGFhPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD0iMHgiK2ItNjU1MzY7cmV0dXJuIGQhPT1kfHxjP2I6
ZDwwP1N0cmluZy5mcm9tQ2hhckNvZGUoZCs2NTUzNik6U3RyaW5nLmZyb21DaGFyQ29kZShkPj4x
MHw1NTI5NiwxMDIzJmR8NTYzMjApfSxiYT0vKFtcMC1ceDFmXHg3Zl18Xi0/XGQpfF4tJHxbXlww
LVx4MWZceDdmLVx1RkZGRlx3LV0vZyxjYT1mdW5jdGlvbihhLGIpe3JldHVybiBiPyJcMCI9PT1h
PyJcdWZmZmQiOmEuc2xpY2UoMCwtMSkrIlxcIithLmNoYXJDb2RlQXQoYS5sZW5ndGgtMSkudG9T
dHJpbmcoMTYpKyIgIjoiXFwiK2F9LGRhPWZ1bmN0aW9uKCl7bSgpfSxlYT10YShmdW5jdGlvbihh
KXtyZXR1cm4gYS5kaXNhYmxlZD09PSEwJiYoImZvcm0iaW4gYXx8ImxhYmVsImluIGEpfSx7ZGly
OiJwYXJlbnROb2RlIixuZXh0OiJsZWdlbmQifSk7dHJ5e0cuYXBwbHkoRD1ILmNhbGwodi5jaGls
ZE5vZGVzKSx2LmNoaWxkTm9kZXMpLERbdi5jaGlsZE5vZGVzLmxlbmd0aF0ubm9kZVR5cGV9Y2F0
Y2goZmEpe0c9e2FwcGx5OkQubGVuZ3RoP2Z1bmN0aW9uKGEsYil7Ri5hcHBseShhLEguY2FsbChi
KSl9OmZ1bmN0aW9uKGEsYil7dmFyIGM9YS5sZW5ndGgsZD0wO3doaWxlKGFbYysrXT1iW2QrK10p
O2EubGVuZ3RoPWMtMX19fWZ1bmN0aW9uIGdhKGEsYixkLGUpe3ZhciBmLGgsaixrLGwsbyxyLHM9
YiYmYi5vd25lckRvY3VtZW50LHc9Yj9iLm5vZGVUeXBlOjk7aWYoZD1kfHxbXSwic3RyaW5nIiE9
dHlwZW9mIGF8fCFhfHwxIT09dyYmOSE9PXcmJjExIT09dylyZXR1cm4gZDtpZighZSYmKChiP2Iu
b3duZXJEb2N1bWVudHx8Yjp2KSE9PW4mJm0oYiksYj1ifHxuLHApKXtpZigxMSE9PXcmJihsPVou
ZXhlYyhhKSkpaWYoZj1sWzFdKXtpZig5PT09dyl7aWYoIShqPWIuZ2V0RWxlbWVudEJ5SWQoZikp
KXJldHVybiBkO2lmKGouaWQ9PT1mKXJldHVybiBkLnB1c2goaiksZH1lbHNlIGlmKHMmJihqPXMu
Z2V0RWxlbWVudEJ5SWQoZikpJiZ0KGIsaikmJmouaWQ9PT1mKXJldHVybiBkLnB1c2goaiksZH1l
bHNle2lmKGxbMl0pcmV0dXJuIEcuYXBwbHkoZCxiLmdldEVsZW1lbnRzQnlUYWdOYW1lKGEpKSxk
O2lmKChmPWxbM10pJiZjLmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJmIuZ2V0RWxlbWVudHNCeUNs
YXNzTmFtZSlyZXR1cm4gRy5hcHBseShkLGIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShmKSksZH1p
ZihjLnFzYSYmIUFbYSsiICJdJiYoIXF8fCFxLnRlc3QoYSkpKXtpZigxIT09dylzPWIscj1hO2Vs
c2UgaWYoIm9iamVjdCIhPT1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpeyhrPWIuZ2V0QXR0cmli
dXRlKCJpZCIpKT9rPWsucmVwbGFjZShiYSxjYSk6Yi5zZXRBdHRyaWJ1dGUoImlkIixrPXUpLG89
ZyhhKSxoPW8ubGVuZ3RoO3doaWxlKGgtLSlvW2hdPSIjIitrKyIgIitzYShvW2hdKTtyPW8uam9p
bigiLCIpLHM9JC50ZXN0KGEpJiZxYShiLnBhcmVudE5vZGUpfHxifWlmKHIpdHJ5e3JldHVybiBH
LmFwcGx5KGQscy5xdWVyeVNlbGVjdG9yQWxsKHIpKSxkfWNhdGNoKHgpe31maW5hbGx5e2s9PT11
JiZiLnJlbW92ZUF0dHJpYnV0ZSgiaWQiKX19fXJldHVybiBpKGEucmVwbGFjZShQLCIkMSIpLGIs
ZCxlKX1mdW5jdGlvbiBoYSgpe3ZhciBhPVtdO2Z1bmN0aW9uIGIoYyxlKXtyZXR1cm4gYS5wdXNo
KGMrIiAiKT5kLmNhY2hlTGVuZ3RoJiZkZWxldGUgYlthLnNoaWZ0KCldLGJbYysiICJdPWV9cmV0
dXJuIGJ9ZnVuY3Rpb24gaWEoYSl7cmV0dXJuIGFbdV09ITAsYX1mdW5jdGlvbiBqYShhKXt2YXIg
Yj1uLmNyZWF0ZUVsZW1lbnQoImZpZWxkc2V0Iik7dHJ5e3JldHVybiEhYShiKX1jYXRjaChjKXty
ZXR1cm4hMX1maW5hbGx5e2IucGFyZW50Tm9kZSYmYi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGIp
LGI9bnVsbH19ZnVuY3Rpb24ga2EoYSxiKXt2YXIgYz1hLnNwbGl0KCJ8IiksZT1jLmxlbmd0aDt3
aGlsZShlLS0pZC5hdHRySGFuZGxlW2NbZV1dPWJ9ZnVuY3Rpb24gbGEoYSxiKXt2YXIgYz1iJiZh
LGQ9YyYmMT09PWEubm9kZVR5cGUmJjE9PT1iLm5vZGVUeXBlJiZhLnNvdXJjZUluZGV4LWIuc291
cmNlSW5kZXg7aWYoZClyZXR1cm4gZDtpZihjKXdoaWxlKGM9Yy5uZXh0U2libGluZylpZihjPT09
YilyZXR1cm4tMTtyZXR1cm4gYT8xOi0xfWZ1bmN0aW9uIG1hKGEpe3JldHVybiBmdW5jdGlvbihi
KXt2YXIgYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PWMmJmIudHlw
ZT09PWF9fWZ1bmN0aW9uIG5hKGEpe3JldHVybiBmdW5jdGlvbihiKXt2YXIgYz1iLm5vZGVOYW1l
LnRvTG93ZXJDYXNlKCk7cmV0dXJuKCJpbnB1dCI9PT1jfHwiYnV0dG9uIj09PWMpJiZiLnR5cGU9
PT1hfX1mdW5jdGlvbiBvYShhKXtyZXR1cm4gZnVuY3Rpb24oYil7cmV0dXJuImZvcm0iaW4gYj9i
LnBhcmVudE5vZGUmJmIuZGlzYWJsZWQ9PT0hMT8ibGFiZWwiaW4gYj8ibGFiZWwiaW4gYi5wYXJl
bnROb2RlP2IucGFyZW50Tm9kZS5kaXNhYmxlZD09PWE6Yi5kaXNhYmxlZD09PWE6Yi5pc0Rpc2Fi
bGVkPT09YXx8Yi5pc0Rpc2FibGVkIT09IWEmJmVhKGIpPT09YTpiLmRpc2FibGVkPT09YToibGFi
ZWwiaW4gYiYmYi5kaXNhYmxlZD09PWF9fWZ1bmN0aW9uIHBhKGEpe3JldHVybiBpYShmdW5jdGlv
bihiKXtyZXR1cm4gYj0rYixpYShmdW5jdGlvbihjLGQpe3ZhciBlLGY9YShbXSxjLmxlbmd0aCxi
KSxnPWYubGVuZ3RoO3doaWxlKGctLSljW2U9ZltnXV0mJihjW2VdPSEoZFtlXT1jW2VdKSl9KX0p
fWZ1bmN0aW9uIHFhKGEpe3JldHVybiBhJiYidW5kZWZpbmVkIiE9dHlwZW9mIGEuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUmJmF9Yz1nYS5zdXBwb3J0PXt9LGY9Z2EuaXNYTUw9ZnVuY3Rpb24oYSl7dmFy
IGI9YSYmKGEub3duZXJEb2N1bWVudHx8YSkuZG9jdW1lbnRFbGVtZW50O3JldHVybiEhYiYmIkhU
TUwiIT09Yi5ub2RlTmFtZX0sbT1nYS5zZXREb2N1bWVudD1mdW5jdGlvbihhKXt2YXIgYixlLGc9
YT9hLm93bmVyRG9jdW1lbnR8fGE6djtyZXR1cm4gZyE9PW4mJjk9PT1nLm5vZGVUeXBlJiZnLmRv
Y3VtZW50RWxlbWVudD8obj1nLG89bi5kb2N1bWVudEVsZW1lbnQscD0hZihuKSx2IT09biYmKGU9
bi5kZWZhdWx0VmlldykmJmUudG9wIT09ZSYmKGUuYWRkRXZlbnRMaXN0ZW5lcj9lLmFkZEV2ZW50
TGlzdGVuZXIoInVubG9hZCIsZGEsITEpOmUuYXR0YWNoRXZlbnQmJmUuYXR0YWNoRXZlbnQoIm9u
dW5sb2FkIixkYSkpLGMuYXR0cmlidXRlcz1qYShmdW5jdGlvbihhKXtyZXR1cm4gYS5jbGFzc05h
bWU9ImkiLCFhLmdldEF0dHJpYnV0ZSgiY2xhc3NOYW1lIil9KSxjLmdldEVsZW1lbnRzQnlUYWdO
YW1lPWphKGZ1bmN0aW9uKGEpe3JldHVybiBhLmFwcGVuZENoaWxkKG4uY3JlYXRlQ29tbWVudCgi
IikpLCFhLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikubGVuZ3RofSksYy5nZXRFbGVtZW50c0J5
Q2xhc3NOYW1lPVkudGVzdChuLmdldEVsZW1lbnRzQnlDbGFzc05hbWUpLGMuZ2V0QnlJZD1qYShm
dW5jdGlvbihhKXtyZXR1cm4gby5hcHBlbmRDaGlsZChhKS5pZD11LCFuLmdldEVsZW1lbnRzQnlO
YW1lfHwhbi5nZXRFbGVtZW50c0J5TmFtZSh1KS5sZW5ndGh9KSxjLmdldEJ5SWQ/KGQuZmlsdGVy
LklEPWZ1bmN0aW9uKGEpe3ZhciBiPWEucmVwbGFjZShfLGFhKTtyZXR1cm4gZnVuY3Rpb24oYSl7
cmV0dXJuIGEuZ2V0QXR0cmlidXRlKCJpZCIpPT09Yn19LGQuZmluZC5JRD1mdW5jdGlvbihhLGIp
e2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgYi5nZXRFbGVtZW50QnlJZCYmcCl7dmFyIGM9Yi5nZXRF
bGVtZW50QnlJZChhKTtyZXR1cm4gYz9bY106W119fSk6KGQuZmlsdGVyLklEPWZ1bmN0aW9uKGEp
e3ZhciBiPWEucmVwbGFjZShfLGFhKTtyZXR1cm4gZnVuY3Rpb24oYSl7dmFyIGM9InVuZGVmaW5l
ZCIhPXR5cGVvZiBhLmdldEF0dHJpYnV0ZU5vZGUmJmEuZ2V0QXR0cmlidXRlTm9kZSgiaWQiKTty
ZXR1cm4gYyYmYy52YWx1ZT09PWJ9fSxkLmZpbmQuSUQ9ZnVuY3Rpb24oYSxiKXtpZigidW5kZWZp
bmVkIiE9dHlwZW9mIGIuZ2V0RWxlbWVudEJ5SWQmJnApe3ZhciBjLGQsZSxmPWIuZ2V0RWxlbWVu
dEJ5SWQoYSk7aWYoZil7aWYoYz1mLmdldEF0dHJpYnV0ZU5vZGUoImlkIiksYyYmYy52YWx1ZT09
PWEpcmV0dXJuW2ZdO2U9Yi5nZXRFbGVtZW50c0J5TmFtZShhKSxkPTA7d2hpbGUoZj1lW2QrK10p
aWYoYz1mLmdldEF0dHJpYnV0ZU5vZGUoImlkIiksYyYmYy52YWx1ZT09PWEpcmV0dXJuW2ZdfXJl
dHVybltdfX0pLGQuZmluZC5UQUc9Yy5nZXRFbGVtZW50c0J5VGFnTmFtZT9mdW5jdGlvbihhLGIp
e3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgYi5nZXRFbGVtZW50c0J5VGFnTmFtZT9iLmdldEVs
ZW1lbnRzQnlUYWdOYW1lKGEpOmMucXNhP2IucXVlcnlTZWxlY3RvckFsbChhKTp2b2lkIDB9OmZ1
bmN0aW9uKGEsYil7dmFyIGMsZD1bXSxlPTAsZj1iLmdldEVsZW1lbnRzQnlUYWdOYW1lKGEpO2lm
KCIqIj09PWEpe3doaWxlKGM9ZltlKytdKTE9PT1jLm5vZGVUeXBlJiZkLnB1c2goYyk7cmV0dXJu
IGR9cmV0dXJuIGZ9LGQuZmluZC5DTEFTUz1jLmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJmZ1bmN0
aW9uKGEsYil7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBiLmdldEVsZW1lbnRzQnlDbGFzc05hbWUm
JnApcmV0dXJuIGIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShhKX0scj1bXSxxPVtdLChjLnFzYT1Z
LnRlc3Qobi5xdWVyeVNlbGVjdG9yQWxsKSkmJihqYShmdW5jdGlvbihhKXtvLmFwcGVuZENoaWxk
KGEpLmlubmVySFRNTD0iPGEgaWQ9JyIrdSsiJz48L2E+PHNlbGVjdCBpZD0nIit1KyItXHJcXCcg
bXNhbGxvd2NhcHR1cmU9Jyc+PG9wdGlvbiBzZWxlY3RlZD0nJz48L29wdGlvbj48L3NlbGVjdD4i
LGEucXVlcnlTZWxlY3RvckFsbCgiW21zYWxsb3djYXB0dXJlXj0nJ10iKS5sZW5ndGgmJnEucHVz
aCgiWypeJF09IitLKyIqKD86Jyd8XCJcIikiKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoIltzZWxlY3Rl
ZF0iKS5sZW5ndGh8fHEucHVzaCgiXFxbIitLKyIqKD86dmFsdWV8IitKKyIpIiksYS5xdWVyeVNl
bGVjdG9yQWxsKCJbaWR+PSIrdSsiLV0iKS5sZW5ndGh8fHEucHVzaCgifj0iKSxhLnF1ZXJ5U2Vs
ZWN0b3JBbGwoIjpjaGVja2VkIikubGVuZ3RofHxxLnB1c2goIjpjaGVja2VkIiksYS5xdWVyeVNl
bGVjdG9yQWxsKCJhIyIrdSsiKyoiKS5sZW5ndGh8fHEucHVzaCgiLiMuK1srfl0iKX0pLGphKGZ1
bmN0aW9uKGEpe2EuaW5uZXJIVE1MPSI8YSBocmVmPScnIGRpc2FibGVkPSdkaXNhYmxlZCc+PC9h
PjxzZWxlY3QgZGlzYWJsZWQ9J2Rpc2FibGVkJz48b3B0aW9uLz48L3NlbGVjdD4iO3ZhciBiPW4u
Y3JlYXRlRWxlbWVudCgiaW5wdXQiKTtiLnNldEF0dHJpYnV0ZSgidHlwZSIsImhpZGRlbiIpLGEu
YXBwZW5kQ2hpbGQoYikuc2V0QXR0cmlidXRlKCJuYW1lIiwiRCIpLGEucXVlcnlTZWxlY3RvckFs
bCgiW25hbWU9ZF0iKS5sZW5ndGgmJnEucHVzaCgibmFtZSIrSysiKlsqXiR8IX5dPz0iKSwyIT09
YS5xdWVyeVNlbGVjdG9yQWxsKCI6ZW5hYmxlZCIpLmxlbmd0aCYmcS5wdXNoKCI6ZW5hYmxlZCIs
IjpkaXNhYmxlZCIpLG8uYXBwZW5kQ2hpbGQoYSkuZGlzYWJsZWQ9ITAsMiE9PWEucXVlcnlTZWxl
Y3RvckFsbCgiOmRpc2FibGVkIikubGVuZ3RoJiZxLnB1c2goIjplbmFibGVkIiwiOmRpc2FibGVk
IiksYS5xdWVyeVNlbGVjdG9yQWxsKCIqLDp4IikscS5wdXNoKCIsLio6Iil9KSksKGMubWF0Y2hl
c1NlbGVjdG9yPVkudGVzdChzPW8ubWF0Y2hlc3x8by53ZWJraXRNYXRjaGVzU2VsZWN0b3J8fG8u
bW96TWF0Y2hlc1NlbGVjdG9yfHxvLm9NYXRjaGVzU2VsZWN0b3J8fG8ubXNNYXRjaGVzU2VsZWN0
b3IpKSYmamEoZnVuY3Rpb24oYSl7Yy5kaXNjb25uZWN0ZWRNYXRjaD1zLmNhbGwoYSwiKiIpLHMu
Y2FsbChhLCJbcyE9JyddOngiKSxyLnB1c2goIiE9IixOKX0pLHE9cS5sZW5ndGgmJm5ldyBSZWdF
eHAocS5qb2luKCJ8IikpLHI9ci5sZW5ndGgmJm5ldyBSZWdFeHAoci5qb2luKCJ8IikpLGI9WS50
ZXN0KG8uY29tcGFyZURvY3VtZW50UG9zaXRpb24pLHQ9Ynx8WS50ZXN0KG8uY29udGFpbnMpP2Z1
bmN0aW9uKGEsYil7dmFyIGM9OT09PWEubm9kZVR5cGU/YS5kb2N1bWVudEVsZW1lbnQ6YSxkPWIm
JmIucGFyZW50Tm9kZTtyZXR1cm4gYT09PWR8fCEoIWR8fDEhPT1kLm5vZGVUeXBlfHwhKGMuY29u
dGFpbnM/Yy5jb250YWlucyhkKTphLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uJiYxNiZhLmNvbXBh
cmVEb2N1bWVudFBvc2l0aW9uKGQpKSl9OmZ1bmN0aW9uKGEsYil7aWYoYil3aGlsZShiPWIucGFy
ZW50Tm9kZSlpZihiPT09YSlyZXR1cm4hMDtyZXR1cm4hMX0sQj1iP2Z1bmN0aW9uKGEsYil7aWYo
YT09PWIpcmV0dXJuIGw9ITAsMDt2YXIgZD0hYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbi0hYi5j
b21wYXJlRG9jdW1lbnRQb3NpdGlvbjtyZXR1cm4gZD9kOihkPShhLm93bmVyRG9jdW1lbnR8fGEp
PT09KGIub3duZXJEb2N1bWVudHx8Yik/YS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihiKToxLDEm
ZHx8IWMuc29ydERldGFjaGVkJiZiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGEpPT09ZD9hPT09
bnx8YS5vd25lckRvY3VtZW50PT09diYmdCh2LGEpPy0xOmI9PT1ufHxiLm93bmVyRG9jdW1lbnQ9
PT12JiZ0KHYsYik/MTprP0koayxhKS1JKGssYik6MDo0JmQ/LTE6MSl9OmZ1bmN0aW9uKGEsYil7
aWYoYT09PWIpcmV0dXJuIGw9ITAsMDt2YXIgYyxkPTAsZT1hLnBhcmVudE5vZGUsZj1iLnBhcmVu
dE5vZGUsZz1bYV0saD1bYl07aWYoIWV8fCFmKXJldHVybiBhPT09bj8tMTpiPT09bj8xOmU/LTE6
Zj8xOms/SShrLGEpLUkoayxiKTowO2lmKGU9PT1mKXJldHVybiBsYShhLGIpO2M9YTt3aGlsZShj
PWMucGFyZW50Tm9kZSlnLnVuc2hpZnQoYyk7Yz1iO3doaWxlKGM9Yy5wYXJlbnROb2RlKWgudW5z
aGlmdChjKTt3aGlsZShnW2RdPT09aFtkXSlkKys7cmV0dXJuIGQ/bGEoZ1tkXSxoW2RdKTpnW2Rd
PT09dj8tMTpoW2RdPT09dj8xOjB9LG4pOm59LGdhLm1hdGNoZXM9ZnVuY3Rpb24oYSxiKXtyZXR1
cm4gZ2EoYSxudWxsLG51bGwsYil9LGdhLm1hdGNoZXNTZWxlY3Rvcj1mdW5jdGlvbihhLGIpe2lm
KChhLm93bmVyRG9jdW1lbnR8fGEpIT09biYmbShhKSxiPWIucmVwbGFjZShTLCI9JyQxJ10iKSxj
Lm1hdGNoZXNTZWxlY3RvciYmcCYmIUFbYisiICJdJiYoIXJ8fCFyLnRlc3QoYikpJiYoIXF8fCFx
LnRlc3QoYikpKXRyeXt2YXIgZD1zLmNhbGwoYSxiKTtpZihkfHxjLmRpc2Nvbm5lY3RlZE1hdGNo
fHxhLmRvY3VtZW50JiYxMSE9PWEuZG9jdW1lbnQubm9kZVR5cGUpcmV0dXJuIGR9Y2F0Y2goZSl7
fXJldHVybiBnYShiLG4sbnVsbCxbYV0pLmxlbmd0aD4wfSxnYS5jb250YWlucz1mdW5jdGlvbihh
LGIpe3JldHVybihhLm93bmVyRG9jdW1lbnR8fGEpIT09biYmbShhKSx0KGEsYil9LGdhLmF0dHI9
ZnVuY3Rpb24oYSxiKXsoYS5vd25lckRvY3VtZW50fHxhKSE9PW4mJm0oYSk7dmFyIGU9ZC5hdHRy
SGFuZGxlW2IudG9Mb3dlckNhc2UoKV0sZj1lJiZDLmNhbGwoZC5hdHRySGFuZGxlLGIudG9Mb3dl
ckNhc2UoKSk/ZShhLGIsIXApOnZvaWQgMDtyZXR1cm4gdm9pZCAwIT09Zj9mOmMuYXR0cmlidXRl
c3x8IXA/YS5nZXRBdHRyaWJ1dGUoYik6KGY9YS5nZXRBdHRyaWJ1dGVOb2RlKGIpKSYmZi5zcGVj
aWZpZWQ/Zi52YWx1ZTpudWxsfSxnYS5lc2NhcGU9ZnVuY3Rpb24oYSl7cmV0dXJuKGErIiIpLnJl
cGxhY2UoYmEsY2EpfSxnYS5lcnJvcj1mdW5jdGlvbihhKXt0aHJvdyBuZXcgRXJyb3IoIlN5bnRh
eCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246ICIrYSl9LGdhLnVuaXF1ZVNvcnQ9ZnVu
Y3Rpb24oYSl7dmFyIGIsZD1bXSxlPTAsZj0wO2lmKGw9IWMuZGV0ZWN0RHVwbGljYXRlcyxrPSFj
LnNvcnRTdGFibGUmJmEuc2xpY2UoMCksYS5zb3J0KEIpLGwpe3doaWxlKGI9YVtmKytdKWI9PT1h
W2ZdJiYoZT1kLnB1c2goZikpO3doaWxlKGUtLSlhLnNwbGljZShkW2VdLDEpfXJldHVybiBrPW51
bGwsYX0sZT1nYS5nZXRUZXh0PWZ1bmN0aW9uKGEpe3ZhciBiLGM9IiIsZD0wLGY9YS5ub2RlVHlw
ZTtpZihmKXtpZigxPT09Znx8OT09PWZ8fDExPT09Zil7aWYoInN0cmluZyI9PXR5cGVvZiBhLnRl
eHRDb250ZW50KXJldHVybiBhLnRleHRDb250ZW50O2ZvcihhPWEuZmlyc3RDaGlsZDthO2E9YS5u
ZXh0U2libGluZyljKz1lKGEpfWVsc2UgaWYoMz09PWZ8fDQ9PT1mKXJldHVybiBhLm5vZGVWYWx1
ZX1lbHNlIHdoaWxlKGI9YVtkKytdKWMrPWUoYik7cmV0dXJuIGN9LGQ9Z2Euc2VsZWN0b3JzPXtj
YWNoZUxlbmd0aDo1MCxjcmVhdGVQc2V1ZG86aWEsbWF0Y2g6VixhdHRySGFuZGxlOnt9LGZpbmQ6
e30scmVsYXRpdmU6eyI+Ijp7ZGlyOiJwYXJlbnROb2RlIixmaXJzdDohMH0sIiAiOntkaXI6InBh
cmVudE5vZGUifSwiKyI6e2RpcjoicHJldmlvdXNTaWJsaW5nIixmaXJzdDohMH0sIn4iOntkaXI6
InByZXZpb3VzU2libGluZyJ9fSxwcmVGaWx0ZXI6e0FUVFI6ZnVuY3Rpb24oYSl7cmV0dXJuIGFb
MV09YVsxXS5yZXBsYWNlKF8sYWEpLGFbM109KGFbM118fGFbNF18fGFbNV18fCIiKS5yZXBsYWNl
KF8sYWEpLCJ+PSI9PT1hWzJdJiYoYVszXT0iICIrYVszXSsiICIpLGEuc2xpY2UoMCw0KX0sQ0hJ
TEQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGFbMV09YVsxXS50b0xvd2VyQ2FzZSgpLCJudGgiPT09YVsx
XS5zbGljZSgwLDMpPyhhWzNdfHxnYS5lcnJvcihhWzBdKSxhWzRdPSsoYVs0XT9hWzVdKyhhWzZd
fHwxKToyKigiZXZlbiI9PT1hWzNdfHwib2RkIj09PWFbM10pKSxhWzVdPSsoYVs3XSthWzhdfHwi
b2RkIj09PWFbM10pKTphWzNdJiZnYS5lcnJvcihhWzBdKSxhfSxQU0VVRE86ZnVuY3Rpb24oYSl7
dmFyIGIsYz0hYVs2XSYmYVsyXTtyZXR1cm4gVi5DSElMRC50ZXN0KGFbMF0pP251bGw6KGFbM10/
YVsyXT1hWzRdfHxhWzVdfHwiIjpjJiZULnRlc3QoYykmJihiPWcoYywhMCkpJiYoYj1jLmluZGV4
T2YoIikiLGMubGVuZ3RoLWIpLWMubGVuZ3RoKSYmKGFbMF09YVswXS5zbGljZSgwLGIpLGFbMl09
Yy5zbGljZSgwLGIpKSxhLnNsaWNlKDAsMykpfX0sZmlsdGVyOntUQUc6ZnVuY3Rpb24oYSl7dmFy
IGI9YS5yZXBsYWNlKF8sYWEpLnRvTG93ZXJDYXNlKCk7cmV0dXJuIioiPT09YT9mdW5jdGlvbigp
e3JldHVybiEwfTpmdW5jdGlvbihhKXtyZXR1cm4gYS5ub2RlTmFtZSYmYS5ub2RlTmFtZS50b0xv
d2VyQ2FzZSgpPT09Yn19LENMQVNTOmZ1bmN0aW9uKGEpe3ZhciBiPXlbYSsiICJdO3JldHVybiBi
fHwoYj1uZXcgUmVnRXhwKCIoXnwiK0srIikiK2ErIigiK0srInwkKSIpKSYmeShhLGZ1bmN0aW9u
KGEpe3JldHVybiBiLnRlc3QoInN0cmluZyI9PXR5cGVvZiBhLmNsYXNzTmFtZSYmYS5jbGFzc05h
bWV8fCJ1bmRlZmluZWQiIT10eXBlb2YgYS5nZXRBdHRyaWJ1dGUmJmEuZ2V0QXR0cmlidXRlKCJj
bGFzcyIpfHwiIil9KX0sQVRUUjpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGZ1bmN0aW9uKGQpe3Zh
ciBlPWdhLmF0dHIoZCxhKTtyZXR1cm4gbnVsbD09ZT8iIT0iPT09YjohYnx8KGUrPSIiLCI9Ij09
PWI/ZT09PWM6IiE9Ij09PWI/ZSE9PWM6Il49Ij09PWI/YyYmMD09PWUuaW5kZXhPZihjKToiKj0i
PT09Yj9jJiZlLmluZGV4T2YoYyk+LTE6IiQ9Ij09PWI/YyYmZS5zbGljZSgtYy5sZW5ndGgpPT09
Yzoifj0iPT09Yj8oIiAiK2UucmVwbGFjZShPLCIgIikrIiAiKS5pbmRleE9mKGMpPi0xOiJ8PSI9
PT1iJiYoZT09PWN8fGUuc2xpY2UoMCxjLmxlbmd0aCsxKT09PWMrIi0iKSl9fSxDSElMRDpmdW5j
dGlvbihhLGIsYyxkLGUpe3ZhciBmPSJudGgiIT09YS5zbGljZSgwLDMpLGc9Imxhc3QiIT09YS5z
bGljZSgtNCksaD0ib2YtdHlwZSI9PT1iO3JldHVybiAxPT09ZCYmMD09PWU/ZnVuY3Rpb24oYSl7
cmV0dXJuISFhLnBhcmVudE5vZGV9OmZ1bmN0aW9uKGIsYyxpKXt2YXIgaixrLGwsbSxuLG8scD1m
IT09Zz8ibmV4dFNpYmxpbmciOiJwcmV2aW91c1NpYmxpbmciLHE9Yi5wYXJlbnROb2RlLHI9aCYm
Yi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLHM9IWkmJiFoLHQ9ITE7aWYocSl7aWYoZil7d2hpbGUo
cCl7bT1iO3doaWxlKG09bVtwXSlpZihoP20ubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PXI6MT09
PW0ubm9kZVR5cGUpcmV0dXJuITE7bz1wPSJvbmx5Ij09PWEmJiFvJiYibmV4dFNpYmxpbmcifXJl
dHVybiEwfWlmKG89W2c/cS5maXJzdENoaWxkOnEubGFzdENoaWxkXSxnJiZzKXttPXEsbD1tW3Vd
fHwobVt1XT17fSksaz1sW20udW5pcXVlSURdfHwobFttLnVuaXF1ZUlEXT17fSksaj1rW2FdfHxb
XSxuPWpbMF09PT13JiZqWzFdLHQ9biYmalsyXSxtPW4mJnEuY2hpbGROb2Rlc1tuXTt3aGlsZSht
PSsrbiYmbSYmbVtwXXx8KHQ9bj0wKXx8by5wb3AoKSlpZigxPT09bS5ub2RlVHlwZSYmKyt0JiZt
PT09Yil7a1thXT1bdyxuLHRdO2JyZWFrfX1lbHNlIGlmKHMmJihtPWIsbD1tW3VdfHwobVt1XT17
fSksaz1sW20udW5pcXVlSURdfHwobFttLnVuaXF1ZUlEXT17fSksaj1rW2FdfHxbXSxuPWpbMF09
PT13JiZqWzFdLHQ9biksdD09PSExKXdoaWxlKG09KytuJiZtJiZtW3BdfHwodD1uPTApfHxvLnBv
cCgpKWlmKChoP20ubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PXI6MT09PW0ubm9kZVR5cGUpJiYr
K3QmJihzJiYobD1tW3VdfHwobVt1XT17fSksaz1sW20udW5pcXVlSURdfHwobFttLnVuaXF1ZUlE
XT17fSksa1thXT1bdyx0XSksbT09PWIpKWJyZWFrO3JldHVybiB0LT1lLHQ9PT1kfHx0JWQ9PT0w
JiZ0L2Q+PTB9fX0sUFNFVURPOmZ1bmN0aW9uKGEsYil7dmFyIGMsZT1kLnBzZXVkb3NbYV18fGQu
c2V0RmlsdGVyc1thLnRvTG93ZXJDYXNlKCldfHxnYS5lcnJvcigidW5zdXBwb3J0ZWQgcHNldWRv
OiAiK2EpO3JldHVybiBlW3VdP2UoYik6ZS5sZW5ndGg+MT8oYz1bYSxhLCIiLGJdLGQuc2V0Rmls
dGVycy5oYXNPd25Qcm9wZXJ0eShhLnRvTG93ZXJDYXNlKCkpP2lhKGZ1bmN0aW9uKGEsYyl7dmFy
IGQsZj1lKGEsYiksZz1mLmxlbmd0aDt3aGlsZShnLS0pZD1JKGEsZltnXSksYVtkXT0hKGNbZF09
ZltnXSl9KTpmdW5jdGlvbihhKXtyZXR1cm4gZShhLDAsYyl9KTplfX0scHNldWRvczp7bm90Omlh
KGZ1bmN0aW9uKGEpe3ZhciBiPVtdLGM9W10sZD1oKGEucmVwbGFjZShQLCIkMSIpKTtyZXR1cm4g
ZFt1XT9pYShmdW5jdGlvbihhLGIsYyxlKXt2YXIgZixnPWQoYSxudWxsLGUsW10pLGg9YS5sZW5n
dGg7d2hpbGUoaC0tKShmPWdbaF0pJiYoYVtoXT0hKGJbaF09ZikpfSk6ZnVuY3Rpb24oYSxlLGYp
e3JldHVybiBiWzBdPWEsZChiLG51bGwsZixjKSxiWzBdPW51bGwsIWMucG9wKCl9fSksaGFzOmlh
KGZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbihiKXtyZXR1cm4gZ2EoYSxiKS5sZW5ndGg+MH19
KSxjb250YWluczppYShmdW5jdGlvbihhKXtyZXR1cm4gYT1hLnJlcGxhY2UoXyxhYSksZnVuY3Rp
b24oYil7cmV0dXJuKGIudGV4dENvbnRlbnR8fGIuaW5uZXJUZXh0fHxlKGIpKS5pbmRleE9mKGEp
Pi0xfX0pLGxhbmc6aWEoZnVuY3Rpb24oYSl7cmV0dXJuIFUudGVzdChhfHwiIil8fGdhLmVycm9y
KCJ1bnN1cHBvcnRlZCBsYW5nOiAiK2EpLGE9YS5yZXBsYWNlKF8sYWEpLnRvTG93ZXJDYXNlKCks
ZnVuY3Rpb24oYil7dmFyIGM7ZG8gaWYoYz1wP2IubGFuZzpiLmdldEF0dHJpYnV0ZSgieG1sOmxh
bmciKXx8Yi5nZXRBdHRyaWJ1dGUoImxhbmciKSlyZXR1cm4gYz1jLnRvTG93ZXJDYXNlKCksYz09
PWF8fDA9PT1jLmluZGV4T2YoYSsiLSIpO3doaWxlKChiPWIucGFyZW50Tm9kZSkmJjE9PT1iLm5v
ZGVUeXBlKTtyZXR1cm4hMX19KSx0YXJnZXQ6ZnVuY3Rpb24oYil7dmFyIGM9YS5sb2NhdGlvbiYm
YS5sb2NhdGlvbi5oYXNoO3JldHVybiBjJiZjLnNsaWNlKDEpPT09Yi5pZH0scm9vdDpmdW5jdGlv
bihhKXtyZXR1cm4gYT09PW99LGZvY3VzOmZ1bmN0aW9uKGEpe3JldHVybiBhPT09bi5hY3RpdmVF
bGVtZW50JiYoIW4uaGFzRm9jdXN8fG4uaGFzRm9jdXMoKSkmJiEhKGEudHlwZXx8YS5ocmVmfHx+
YS50YWJJbmRleCl9LGVuYWJsZWQ6b2EoITEpLGRpc2FibGVkOm9hKCEwKSxjaGVja2VkOmZ1bmN0
aW9uKGEpe3ZhciBiPWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4iaW5wdXQiPT09YiYm
ISFhLmNoZWNrZWR8fCJvcHRpb24iPT09YiYmISFhLnNlbGVjdGVkfSxzZWxlY3RlZDpmdW5jdGlv
bihhKXtyZXR1cm4gYS5wYXJlbnROb2RlJiZhLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCxhLnNl
bGVjdGVkPT09ITB9LGVtcHR5OmZ1bmN0aW9uKGEpe2ZvcihhPWEuZmlyc3RDaGlsZDthO2E9YS5u
ZXh0U2libGluZylpZihhLm5vZGVUeXBlPDYpcmV0dXJuITE7cmV0dXJuITB9LHBhcmVudDpmdW5j
dGlvbihhKXtyZXR1cm4hZC5wc2V1ZG9zLmVtcHR5KGEpfSxoZWFkZXI6ZnVuY3Rpb24oYSl7cmV0
dXJuIFgudGVzdChhLm5vZGVOYW1lKX0saW5wdXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIFcudGVzdChh
Lm5vZGVOYW1lKX0sYnV0dG9uOmZ1bmN0aW9uKGEpe3ZhciBiPWEubm9kZU5hbWUudG9Mb3dlckNh
c2UoKTtyZXR1cm4iaW5wdXQiPT09YiYmImJ1dHRvbiI9PT1hLnR5cGV8fCJidXR0b24iPT09Yn0s
dGV4dDpmdW5jdGlvbihhKXt2YXIgYjtyZXR1cm4iaW5wdXQiPT09YS5ub2RlTmFtZS50b0xvd2Vy
Q2FzZSgpJiYidGV4dCI9PT1hLnR5cGUmJihudWxsPT0oYj1hLmdldEF0dHJpYnV0ZSgidHlwZSIp
KXx8InRleHQiPT09Yi50b0xvd2VyQ2FzZSgpKX0sZmlyc3Q6cGEoZnVuY3Rpb24oKXtyZXR1cm5b
MF19KSxsYXN0OnBhKGZ1bmN0aW9uKGEsYil7cmV0dXJuW2ItMV19KSxlcTpwYShmdW5jdGlvbihh
LGIsYyl7cmV0dXJuW2M8MD9jK2I6Y119KSxldmVuOnBhKGZ1bmN0aW9uKGEsYil7Zm9yKHZhciBj
PTA7YzxiO2MrPTIpYS5wdXNoKGMpO3JldHVybiBhfSksb2RkOnBhKGZ1bmN0aW9uKGEsYil7Zm9y
KHZhciBjPTE7YzxiO2MrPTIpYS5wdXNoKGMpO3JldHVybiBhfSksbHQ6cGEoZnVuY3Rpb24oYSxi
LGMpe2Zvcih2YXIgZD1jPDA/YytiOmM7LS1kPj0wOylhLnB1c2goZCk7cmV0dXJuIGF9KSxndDpw
YShmdW5jdGlvbihhLGIsYyl7Zm9yKHZhciBkPWM8MD9jK2I6YzsrK2Q8YjspYS5wdXNoKGQpO3Jl
dHVybiBhfSl9fSxkLnBzZXVkb3MubnRoPWQucHNldWRvcy5lcTtmb3IoYiBpbntyYWRpbzohMCxj
aGVja2JveDohMCxmaWxlOiEwLHBhc3N3b3JkOiEwLGltYWdlOiEwfSlkLnBzZXVkb3NbYl09bWEo
Yik7Zm9yKGIgaW57c3VibWl0OiEwLHJlc2V0OiEwfSlkLnBzZXVkb3NbYl09bmEoYik7ZnVuY3Rp
b24gcmEoKXt9cmEucHJvdG90eXBlPWQuZmlsdGVycz1kLnBzZXVkb3MsZC5zZXRGaWx0ZXJzPW5l
dyByYSxnPWdhLnRva2VuaXplPWZ1bmN0aW9uKGEsYil7dmFyIGMsZSxmLGcsaCxpLGosaz16W2Er
IiAiXTtpZihrKXJldHVybiBiPzA6ay5zbGljZSgwKTtoPWEsaT1bXSxqPWQucHJlRmlsdGVyO3do
aWxlKGgpe2MmJiEoZT1RLmV4ZWMoaCkpfHwoZSYmKGg9aC5zbGljZShlWzBdLmxlbmd0aCl8fGgp
LGkucHVzaChmPVtdKSksYz0hMSwoZT1SLmV4ZWMoaCkpJiYoYz1lLnNoaWZ0KCksZi5wdXNoKHt2
YWx1ZTpjLHR5cGU6ZVswXS5yZXBsYWNlKFAsIiAiKX0pLGg9aC5zbGljZShjLmxlbmd0aCkpO2Zv
cihnIGluIGQuZmlsdGVyKSEoZT1WW2ddLmV4ZWMoaCkpfHxqW2ddJiYhKGU9altnXShlKSl8fChj
PWUuc2hpZnQoKSxmLnB1c2goe3ZhbHVlOmMsdHlwZTpnLG1hdGNoZXM6ZX0pLGg9aC5zbGljZShj
Lmxlbmd0aCkpO2lmKCFjKWJyZWFrfXJldHVybiBiP2gubGVuZ3RoOmg/Z2EuZXJyb3IoYSk6eihh
LGkpLnNsaWNlKDApfTtmdW5jdGlvbiBzYShhKXtmb3IodmFyIGI9MCxjPWEubGVuZ3RoLGQ9IiI7
YjxjO2IrKylkKz1hW2JdLnZhbHVlO3JldHVybiBkfWZ1bmN0aW9uIHRhKGEsYixjKXt2YXIgZD1i
LmRpcixlPWIubmV4dCxmPWV8fGQsZz1jJiYicGFyZW50Tm9kZSI9PT1mLGg9eCsrO3JldHVybiBi
LmZpcnN0P2Z1bmN0aW9uKGIsYyxlKXt3aGlsZShiPWJbZF0paWYoMT09PWIubm9kZVR5cGV8fGcp
cmV0dXJuIGEoYixjLGUpO3JldHVybiExfTpmdW5jdGlvbihiLGMsaSl7dmFyIGosayxsLG09W3cs
aF07aWYoaSl7d2hpbGUoYj1iW2RdKWlmKCgxPT09Yi5ub2RlVHlwZXx8ZykmJmEoYixjLGkpKXJl
dHVybiEwfWVsc2Ugd2hpbGUoYj1iW2RdKWlmKDE9PT1iLm5vZGVUeXBlfHxnKWlmKGw9Ylt1XXx8
KGJbdV09e30pLGs9bFtiLnVuaXF1ZUlEXXx8KGxbYi51bmlxdWVJRF09e30pLGUmJmU9PT1iLm5v
ZGVOYW1lLnRvTG93ZXJDYXNlKCkpYj1iW2RdfHxiO2Vsc2V7aWYoKGo9a1tmXSkmJmpbMF09PT13
JiZqWzFdPT09aClyZXR1cm4gbVsyXT1qWzJdO2lmKGtbZl09bSxtWzJdPWEoYixjLGkpKXJldHVy
biEwfXJldHVybiExfX1mdW5jdGlvbiB1YShhKXtyZXR1cm4gYS5sZW5ndGg+MT9mdW5jdGlvbihi
LGMsZCl7dmFyIGU9YS5sZW5ndGg7d2hpbGUoZS0tKWlmKCFhW2VdKGIsYyxkKSlyZXR1cm4hMTty
ZXR1cm4hMH06YVswXX1mdW5jdGlvbiB2YShhLGIsYyl7Zm9yKHZhciBkPTAsZT1iLmxlbmd0aDtk
PGU7ZCsrKWdhKGEsYltkXSxjKTtyZXR1cm4gY31mdW5jdGlvbiB3YShhLGIsYyxkLGUpe2Zvcih2
YXIgZixnPVtdLGg9MCxpPWEubGVuZ3RoLGo9bnVsbCE9YjtoPGk7aCsrKShmPWFbaF0pJiYoYyYm
IWMoZixkLGUpfHwoZy5wdXNoKGYpLGomJmIucHVzaChoKSkpO3JldHVybiBnfWZ1bmN0aW9uIHhh
KGEsYixjLGQsZSxmKXtyZXR1cm4gZCYmIWRbdV0mJihkPXhhKGQpKSxlJiYhZVt1XSYmKGU9eGEo
ZSxmKSksaWEoZnVuY3Rpb24oZixnLGgsaSl7dmFyIGosayxsLG09W10sbj1bXSxvPWcubGVuZ3Ro
LHA9Znx8dmEoYnx8IioiLGgubm9kZVR5cGU/W2hdOmgsW10pLHE9IWF8fCFmJiZiP3A6d2EocCxt
LGEsaCxpKSxyPWM/ZXx8KGY/YTpvfHxkKT9bXTpnOnE7aWYoYyYmYyhxLHIsaCxpKSxkKXtqPXdh
KHIsbiksZChqLFtdLGgsaSksaz1qLmxlbmd0aDt3aGlsZShrLS0pKGw9altrXSkmJihyW25ba11d
PSEocVtuW2tdXT1sKSl9aWYoZil7aWYoZXx8YSl7aWYoZSl7aj1bXSxrPXIubGVuZ3RoO3doaWxl
KGstLSkobD1yW2tdKSYmai5wdXNoKHFba109bCk7ZShudWxsLHI9W10saixpKX1rPXIubGVuZ3Ro
O3doaWxlKGstLSkobD1yW2tdKSYmKGo9ZT9JKGYsbCk6bVtrXSk+LTEmJihmW2pdPSEoZ1tqXT1s
KSl9fWVsc2Ugcj13YShyPT09Zz9yLnNwbGljZShvLHIubGVuZ3RoKTpyKSxlP2UobnVsbCxnLHIs
aSk6Ry5hcHBseShnLHIpfSl9ZnVuY3Rpb24geWEoYSl7Zm9yKHZhciBiLGMsZSxmPWEubGVuZ3Ro
LGc9ZC5yZWxhdGl2ZVthWzBdLnR5cGVdLGg9Z3x8ZC5yZWxhdGl2ZVsiICJdLGk9Zz8xOjAsaz10
YShmdW5jdGlvbihhKXtyZXR1cm4gYT09PWJ9LGgsITApLGw9dGEoZnVuY3Rpb24oYSl7cmV0dXJu
IEkoYixhKT4tMX0saCwhMCksbT1bZnVuY3Rpb24oYSxjLGQpe3ZhciBlPSFnJiYoZHx8YyE9PWop
fHwoKGI9Yykubm9kZVR5cGU/ayhhLGMsZCk6bChhLGMsZCkpO3JldHVybiBiPW51bGwsZX1dO2k8
ZjtpKyspaWYoYz1kLnJlbGF0aXZlW2FbaV0udHlwZV0pbT1bdGEodWEobSksYyldO2Vsc2V7aWYo
Yz1kLmZpbHRlclthW2ldLnR5cGVdLmFwcGx5KG51bGwsYVtpXS5tYXRjaGVzKSxjW3VdKXtmb3Io
ZT0rK2k7ZTxmO2UrKylpZihkLnJlbGF0aXZlW2FbZV0udHlwZV0pYnJlYWs7cmV0dXJuIHhhKGk+
MSYmdWEobSksaT4xJiZzYShhLnNsaWNlKDAsaS0xKS5jb25jYXQoe3ZhbHVlOiIgIj09PWFbaS0y
XS50eXBlPyIqIjoiIn0pKS5yZXBsYWNlKFAsIiQxIiksYyxpPGUmJnlhKGEuc2xpY2UoaSxlKSks
ZTxmJiZ5YShhPWEuc2xpY2UoZSkpLGU8ZiYmc2EoYSkpfW0ucHVzaChjKX1yZXR1cm4gdWEobSl9
ZnVuY3Rpb24gemEoYSxiKXt2YXIgYz1iLmxlbmd0aD4wLGU9YS5sZW5ndGg+MCxmPWZ1bmN0aW9u
KGYsZyxoLGksayl7dmFyIGwsbyxxLHI9MCxzPSIwIix0PWYmJltdLHU9W10sdj1qLHg9Znx8ZSYm
ZC5maW5kLlRBRygiKiIsaykseT13Kz1udWxsPT12PzE6TWF0aC5yYW5kb20oKXx8LjEsej14Lmxl
bmd0aDtmb3IoayYmKGo9Zz09PW58fGd8fGspO3MhPT16JiZudWxsIT0obD14W3NdKTtzKyspe2lm
KGUmJmwpe289MCxnfHxsLm93bmVyRG9jdW1lbnQ9PT1ufHwobShsKSxoPSFwKTt3aGlsZShxPWFb
bysrXSlpZihxKGwsZ3x8bixoKSl7aS5wdXNoKGwpO2JyZWFrfWsmJih3PXkpfWMmJigobD0hcSYm
bCkmJnItLSxmJiZ0LnB1c2gobCkpfWlmKHIrPXMsYyYmcyE9PXIpe289MDt3aGlsZShxPWJbbysr
XSlxKHQsdSxnLGgpO2lmKGYpe2lmKHI+MCl3aGlsZShzLS0pdFtzXXx8dVtzXXx8KHVbc109RS5j
YWxsKGkpKTt1PXdhKHUpfUcuYXBwbHkoaSx1KSxrJiYhZiYmdS5sZW5ndGg+MCYmcitiLmxlbmd0
aD4xJiZnYS51bmlxdWVTb3J0KGkpfXJldHVybiBrJiYodz15LGo9diksdH07cmV0dXJuIGM/aWEo
Zik6Zn1oPWdhLmNvbXBpbGU9ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPVtdLGU9W10sZj1BW2ErIiAi
XTtpZighZil7Ynx8KGI9ZyhhKSksYz1iLmxlbmd0aDt3aGlsZShjLS0pZj15YShiW2NdKSxmW3Vd
P2QucHVzaChmKTplLnB1c2goZik7Zj1BKGEsemEoZSxkKSksZi5zZWxlY3Rvcj1hfXJldHVybiBm
fSxpPWdhLnNlbGVjdD1mdW5jdGlvbihhLGIsYyxlKXt2YXIgZixpLGosayxsLG09ImZ1bmN0aW9u
Ij09dHlwZW9mIGEmJmEsbj0hZSYmZyhhPW0uc2VsZWN0b3J8fGEpO2lmKGM9Y3x8W10sMT09PW4u
bGVuZ3RoKXtpZihpPW5bMF09blswXS5zbGljZSgwKSxpLmxlbmd0aD4yJiYiSUQiPT09KGo9aVsw
XSkudHlwZSYmOT09PWIubm9kZVR5cGUmJnAmJmQucmVsYXRpdmVbaVsxXS50eXBlXSl7aWYoYj0o
ZC5maW5kLklEKGoubWF0Y2hlc1swXS5yZXBsYWNlKF8sYWEpLGIpfHxbXSlbMF0sIWIpcmV0dXJu
IGM7bSYmKGI9Yi5wYXJlbnROb2RlKSxhPWEuc2xpY2UoaS5zaGlmdCgpLnZhbHVlLmxlbmd0aCl9
Zj1WLm5lZWRzQ29udGV4dC50ZXN0KGEpPzA6aS5sZW5ndGg7d2hpbGUoZi0tKXtpZihqPWlbZl0s
ZC5yZWxhdGl2ZVtrPWoudHlwZV0pYnJlYWs7aWYoKGw9ZC5maW5kW2tdKSYmKGU9bChqLm1hdGNo
ZXNbMF0ucmVwbGFjZShfLGFhKSwkLnRlc3QoaVswXS50eXBlKSYmcWEoYi5wYXJlbnROb2RlKXx8
YikpKXtpZihpLnNwbGljZShmLDEpLGE9ZS5sZW5ndGgmJnNhKGkpLCFhKXJldHVybiBHLmFwcGx5
KGMsZSksYzticmVha319fXJldHVybihtfHxoKGEsbikpKGUsYiwhcCxjLCFifHwkLnRlc3QoYSkm
JnFhKGIucGFyZW50Tm9kZSl8fGIpLGN9LGMuc29ydFN0YWJsZT11LnNwbGl0KCIiKS5zb3J0KEIp
LmpvaW4oIiIpPT09dSxjLmRldGVjdER1cGxpY2F0ZXM9ISFsLG0oKSxjLnNvcnREZXRhY2hlZD1q
YShmdW5jdGlvbihhKXtyZXR1cm4gMSZhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKG4uY3JlYXRl
RWxlbWVudCgiZmllbGRzZXQiKSl9KSxqYShmdW5jdGlvbihhKXtyZXR1cm4gYS5pbm5lckhUTUw9
IjxhIGhyZWY9JyMnPjwvYT4iLCIjIj09PWEuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoImhyZWYi
KX0pfHxrYSgidHlwZXxocmVmfGhlaWdodHx3aWR0aCIsZnVuY3Rpb24oYSxiLGMpe2lmKCFjKXJl
dHVybiBhLmdldEF0dHJpYnV0ZShiLCJ0eXBlIj09PWIudG9Mb3dlckNhc2UoKT8xOjIpfSksYy5h
dHRyaWJ1dGVzJiZqYShmdW5jdGlvbihhKXtyZXR1cm4gYS5pbm5lckhUTUw9IjxpbnB1dC8+Iixh
LmZpcnN0Q2hpbGQuc2V0QXR0cmlidXRlKCJ2YWx1ZSIsIiIpLCIiPT09YS5maXJzdENoaWxkLmdl
dEF0dHJpYnV0ZSgidmFsdWUiKX0pfHxrYSgidmFsdWUiLGZ1bmN0aW9uKGEsYixjKXtpZighYyYm
ImlucHV0Ij09PWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKSlyZXR1cm4gYS5kZWZhdWx0VmFsdWV9
KSxqYShmdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09YS5nZXRBdHRyaWJ1dGUoImRpc2FibGVkIil9
KXx8a2EoSixmdW5jdGlvbihhLGIsYyl7dmFyIGQ7aWYoIWMpcmV0dXJuIGFbYl09PT0hMD9iLnRv
TG93ZXJDYXNlKCk6KGQ9YS5nZXRBdHRyaWJ1dGVOb2RlKGIpKSYmZC5zcGVjaWZpZWQ/ZC52YWx1
ZTpudWxsfSk7dmFyIEFhPWEuU2l6emxlO2dhLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oKXtyZXR1cm4g
YS5TaXp6bGU9PT1nYSYmKGEuU2l6emxlPUFhKSxnYX0sImZ1bmN0aW9uIj09dHlwZW9mIGRlZmlu
ZSYmZGVmaW5lLmFtZD9kZWZpbmUoZnVuY3Rpb24oKXtyZXR1cm4gZ2F9KToidW5kZWZpbmVkIiE9
dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9Z2E6YS5TaXp6bGU9
Z2F9KHdpbmRvdyk7CisvLyMgc291cmNlTWFwcGluZ1VSTD1zaXp6bGUubWluLm1hcApcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2Rl
X21vZHVsZXMvanF1ZXJ5L2V4dGVybmFsL3NpenpsZS9kaXN0L3NpenpsZS5taW4ubWFwIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvZXh0ZXJuYWwvc2l6emxlL2Rpc3Qv
c2l6emxlLm1pbi5tYXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDMxYzFiNzhmYTYyMzI1MjBiMTZiOWUwZWQ2YzIz
ZThjYWRhZTFhNAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21v
ZHVsZXMvanF1ZXJ5L2V4dGVybmFsL3NpenpsZS9kaXN0L3NpenpsZS5taW4ubWFwCkBAIC0wLDAg
KzEgQEAKK3sidmVyc2lvbiI6Mywic291cmNlcyI6WyJzaXp6bGUuanMiXSwibmFtZXMiOlsid2lu
ZG93IiwiaSIsInN1cHBvcnQiLCJFeHByIiwiZ2V0VGV4dCIsImlzWE1MIiwidG9rZW5pemUiLCJj
b21waWxlIiwic2VsZWN0Iiwib3V0ZXJtb3N0Q29udGV4dCIsInNvcnRJbnB1dCIsImhhc0R1cGxp
Y2F0ZSIsInNldERvY3VtZW50IiwiZG9jdW1lbnQiLCJkb2NFbGVtIiwiZG9jdW1lbnRJc0hUTUwi
LCJyYnVnZ3lRU0EiLCJyYnVnZ3lNYXRjaGVzIiwibWF0Y2hlcyIsImNvbnRhaW5zIiwiZXhwYW5k
byIsIkRhdGUiLCJwcmVmZXJyZWREb2MiLCJkaXJydW5zIiwiZG9uZSIsImNsYXNzQ2FjaGUiLCJj
cmVhdGVDYWNoZSIsInRva2VuQ2FjaGUiLCJjb21waWxlckNhY2hlIiwic29ydE9yZGVyIiwiYSIs
ImIiLCJoYXNPd24iLCJoYXNPd25Qcm9wZXJ0eSIsImFyciIsInBvcCIsInB1c2hfbmF0aXZlIiwi
cHVzaCIsInNsaWNlIiwiaW5kZXhPZiIsImxpc3QiLCJlbGVtIiwibGVuIiwibGVuZ3RoIiwiYm9v
bGVhbnMiLCJ3aGl0ZXNwYWNlIiwiaWRlbnRpZmllciIsImF0dHJpYnV0ZXMiLCJwc2V1ZG9zIiwi
cndoaXRlc3BhY2UiLCJSZWdFeHAiLCJydHJpbSIsInJjb21tYSIsInJjb21iaW5hdG9ycyIsInJh
dHRyaWJ1dGVRdW90ZXMiLCJycHNldWRvIiwicmlkZW50aWZpZXIiLCJtYXRjaEV4cHIiLCJJRCIs
IkNMQVNTIiwiVEFHIiwiQVRUUiIsIlBTRVVETyIsIkNISUxEIiwiYm9vbCIsIm5lZWRzQ29udGV4
dCIsInJpbnB1dHMiLCJyaGVhZGVyIiwicm5hdGl2ZSIsInJxdWlja0V4cHIiLCJyc2libGluZyIs
InJ1bmVzY2FwZSIsImZ1bmVzY2FwZSIsIl8iLCJlc2NhcGVkIiwiZXNjYXBlZFdoaXRlc3BhY2Ui
LCJoaWdoIiwiU3RyaW5nIiwiZnJvbUNoYXJDb2RlIiwicmNzc2VzY2FwZSIsImZjc3Nlc2NhcGUi
LCJjaCIsImFzQ29kZVBvaW50IiwiY2hhckNvZGVBdCIsInRvU3RyaW5nIiwidW5sb2FkSGFuZGxl
ciIsImRpc2FibGVkQW5jZXN0b3IiLCJhZGRDb21iaW5hdG9yIiwiZGlzYWJsZWQiLCJkaXIiLCJu
ZXh0IiwiYXBwbHkiLCJjYWxsIiwiY2hpbGROb2RlcyIsIm5vZGVUeXBlIiwiZSIsInRhcmdldCIs
ImVscyIsImoiLCJTaXp6bGUiLCJzZWxlY3RvciIsImNvbnRleHQiLCJyZXN1bHRzIiwic2VlZCIs
Im0iLCJuaWQiLCJtYXRjaCIsImdyb3VwcyIsIm5ld1NlbGVjdG9yIiwibmV3Q29udGV4dCIsIm93
bmVyRG9jdW1lbnQiLCJleGVjIiwiZ2V0RWxlbWVudEJ5SWQiLCJpZCIsImdldEVsZW1lbnRzQnlU
YWdOYW1lIiwiZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSIsInFzYSIsInRlc3QiLCJub2RlTmFtZSIs
InRvTG93ZXJDYXNlIiwiZ2V0QXR0cmlidXRlIiwicmVwbGFjZSIsInNldEF0dHJpYnV0ZSIsInRv
U2VsZWN0b3IiLCJqb2luIiwidGVzdENvbnRleHQiLCJwYXJlbnROb2RlIiwicXVlcnlTZWxlY3Rv
ckFsbCIsInFzYUVycm9yIiwicmVtb3ZlQXR0cmlidXRlIiwia2V5cyIsImNhY2hlIiwia2V5Iiwi
dmFsdWUiLCJjYWNoZUxlbmd0aCIsInNoaWZ0IiwibWFya0Z1bmN0aW9uIiwiZm4iLCJhc3NlcnQi
LCJlbCIsImNyZWF0ZUVsZW1lbnQiLCJyZW1vdmVDaGlsZCIsImFkZEhhbmRsZSIsImF0dHJzIiwi
aGFuZGxlciIsInNwbGl0IiwiYXR0ckhhbmRsZSIsInNpYmxpbmdDaGVjayIsImN1ciIsImRpZmYi
LCJzb3VyY2VJbmRleCIsIm5leHRTaWJsaW5nIiwiY3JlYXRlSW5wdXRQc2V1ZG8iLCJ0eXBlIiwi
bmFtZSIsImNyZWF0ZUJ1dHRvblBzZXVkbyIsImNyZWF0ZURpc2FibGVkUHNldWRvIiwiaXNEaXNh
YmxlZCIsImNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8iLCJhcmd1bWVudCIsIm1hdGNoSW5kZXhlcyIs
ImRvY3VtZW50RWxlbWVudCIsIm5vZGUiLCJoYXNDb21wYXJlIiwic3ViV2luZG93IiwiZG9jIiwi
ZGVmYXVsdFZpZXciLCJ0b3AiLCJhZGRFdmVudExpc3RlbmVyIiwiYXR0YWNoRXZlbnQiLCJjbGFz
c05hbWUiLCJhcHBlbmRDaGlsZCIsImNyZWF0ZUNvbW1lbnQiLCJnZXRCeUlkIiwiZ2V0RWxlbWVu
dHNCeU5hbWUiLCJmaWx0ZXIiLCJhdHRySWQiLCJmaW5kIiwiZ2V0QXR0cmlidXRlTm9kZSIsImVs
ZW1zIiwidGFnIiwidG1wIiwiaW5uZXJIVE1MIiwiaW5wdXQiLCJtYXRjaGVzU2VsZWN0b3IiLCJ3
ZWJraXRNYXRjaGVzU2VsZWN0b3IiLCJtb3pNYXRjaGVzU2VsZWN0b3IiLCJvTWF0Y2hlc1NlbGVj
dG9yIiwibXNNYXRjaGVzU2VsZWN0b3IiLCJkaXNjb25uZWN0ZWRNYXRjaCIsImNvbXBhcmVEb2N1
bWVudFBvc2l0aW9uIiwiYWRvd24iLCJidXAiLCJjb21wYXJlIiwic29ydERldGFjaGVkIiwiYXVw
IiwiYXAiLCJicCIsInVuc2hpZnQiLCJleHByIiwiZWxlbWVudHMiLCJyZXQiLCJhdHRyIiwidmFs
IiwidW5kZWZpbmVkIiwic3BlY2lmaWVkIiwiZXNjYXBlIiwic2VsIiwiZXJyb3IiLCJtc2ciLCJF
cnJvciIsInVuaXF1ZVNvcnQiLCJkdXBsaWNhdGVzIiwiZGV0ZWN0RHVwbGljYXRlcyIsInNvcnRT
dGFibGUiLCJzb3J0Iiwic3BsaWNlIiwidGV4dENvbnRlbnQiLCJmaXJzdENoaWxkIiwibm9kZVZh
bHVlIiwic2VsZWN0b3JzIiwiY3JlYXRlUHNldWRvIiwicmVsYXRpdmUiLCI+IiwiZmlyc3QiLCIg
IiwiKyIsIn4iLCJwcmVGaWx0ZXIiLCJleGNlc3MiLCJ1bnF1b3RlZCIsIm5vZGVOYW1lU2VsZWN0
b3IiLCJwYXR0ZXJuIiwib3BlcmF0b3IiLCJjaGVjayIsInJlc3VsdCIsIndoYXQiLCJsYXN0Iiwi
c2ltcGxlIiwiZm9yd2FyZCIsIm9mVHlwZSIsInhtbCIsInVuaXF1ZUNhY2hlIiwib3V0ZXJDYWNo
ZSIsIm5vZGVJbmRleCIsInN0YXJ0IiwicGFyZW50IiwidXNlQ2FjaGUiLCJsYXN0Q2hpbGQiLCJ1
bmlxdWVJRCIsInBzZXVkbyIsImFyZ3MiLCJzZXRGaWx0ZXJzIiwiaWR4IiwibWF0Y2hlZCIsIm5v
dCIsIm1hdGNoZXIiLCJ1bm1hdGNoZWQiLCJoYXMiLCJ0ZXh0IiwiaW5uZXJUZXh0IiwibGFuZyIs
ImVsZW1MYW5nIiwiaGFzaCIsImxvY2F0aW9uIiwicm9vdCIsImZvY3VzIiwiYWN0aXZlRWxlbWVu
dCIsImhhc0ZvY3VzIiwiaHJlZiIsInRhYkluZGV4IiwiZW5hYmxlZCIsImNoZWNrZWQiLCJzZWxl
Y3RlZCIsInNlbGVjdGVkSW5kZXgiLCJlbXB0eSIsImhlYWRlciIsImJ1dHRvbiIsImVxIiwiZXZl
biIsIm9kZCIsImx0IiwiZ3QiLCJyYWRpbyIsImNoZWNrYm94IiwiZmlsZSIsInBhc3N3b3JkIiwi
aW1hZ2UiLCJzdWJtaXQiLCJyZXNldCIsInByb3RvdHlwZSIsImZpbHRlcnMiLCJwYXJzZU9ubHki
LCJ0b2tlbnMiLCJzb0ZhciIsInByZUZpbHRlcnMiLCJjYWNoZWQiLCJjb21iaW5hdG9yIiwiYmFz
ZSIsInNraXAiLCJjaGVja05vbkVsZW1lbnRzIiwiZG9uZU5hbWUiLCJvbGRDYWNoZSIsIm5ld0Nh
Y2hlIiwiZWxlbWVudE1hdGNoZXIiLCJtYXRjaGVycyIsIm11bHRpcGxlQ29udGV4dHMiLCJjb250
ZXh0cyIsImNvbmRlbnNlIiwibWFwIiwibmV3VW5tYXRjaGVkIiwibWFwcGVkIiwic2V0TWF0Y2hl
ciIsInBvc3RGaWx0ZXIiLCJwb3N0RmluZGVyIiwicG9zdFNlbGVjdG9yIiwidGVtcCIsInByZU1h
cCIsInBvc3RNYXAiLCJwcmVleGlzdGluZyIsIm1hdGNoZXJJbiIsIm1hdGNoZXJPdXQiLCJtYXRj
aGVyRnJvbVRva2VucyIsImNoZWNrQ29udGV4dCIsImxlYWRpbmdSZWxhdGl2ZSIsImltcGxpY2l0
UmVsYXRpdmUiLCJtYXRjaENvbnRleHQiLCJtYXRjaEFueUNvbnRleHQiLCJjb25jYXQiLCJtYXRj
aGVyRnJvbUdyb3VwTWF0Y2hlcnMiLCJlbGVtZW50TWF0Y2hlcnMiLCJzZXRNYXRjaGVycyIsImJ5
U2V0IiwiYnlFbGVtZW50Iiwic3VwZXJNYXRjaGVyIiwib3V0ZXJtb3N0IiwibWF0Y2hlZENvdW50
Iiwic2V0TWF0Y2hlZCIsImNvbnRleHRCYWNrdXAiLCJkaXJydW5zVW5pcXVlIiwiTWF0aCIsInJh
bmRvbSIsInRva2VuIiwiY29tcGlsZWQiLCJkZWZhdWx0VmFsdWUiLCJfc2l6emxlIiwibm9Db25m
bGljdCIsImRlZmluZSIsImFtZCIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiI7Q0FV
QSxTQUFXQSxHQUVYLEdBQUlDLEdBQ0hDLEVBQ0FDLEVBQ0FDLEVBQ0FDLEVBQ0FDLEVBQ0FDLEVB
Q0FDLEVBQ0FDLEVBQ0FDLEVBQ0FDLEVBR0FDLEVBQ0FDLEVBQ0FDLEVBQ0FDLEVBQ0FDLEVBQ0FD
LEVBQ0FDLEVBQ0FDLEVBR0FDLEVBQVUsU0FBVyxFQUFJLEdBQUlDLE1BQzdCQyxFQUFldEIsRUFB
T2EsU0FDdEJVLEVBQVUsRUFDVkMsRUFBTyxFQUNQQyxFQUFhQyxLQUNiQyxFQUFhRCxLQUNiRSxF
QUFnQkYsS0FDaEJHLEVBQVksU0FBVUMsRUFBR0MsR0FJeEIsTUFIS0QsS0FBTUMsSUFDVnBCLEdB
QWUsR0FFVCxHQUlScUIsS0FBY0MsZUFDZEMsS0FDQUMsRUFBTUQsRUFBSUMsSUFDVkMsRUFBY0Ys
RUFBSUcsS0FDbEJBLEVBQU9ILEVBQUlHLEtBQ1hDLEVBQVFKLEVBQUlJLE1BR1pDLEVBQVUsU0FB
VUMsRUFBTUMsR0FHekIsSUFGQSxHQUFJeEMsR0FBSSxFQUNQeUMsRUFBTUYsRUFBS0csT0FDSjFD
LEVBQUl5QyxFQUFLekMsSUFDaEIsR0FBS3VDLEVBQUt2QyxLQUFPd0MsRUFDaEIsTUFBT3hDLEVB
R1QsV0FHRDJDLEVBQVcsNkhBS1hDLEVBQWEsc0JBR2JDLEVBQWEsZ0NBR2JDLEVBQWEsTUFBUUYs
RUFBYSxLQUFPQyxFQUFhLE9BQVNELEVBRTlELGdCQUFrQkEsRUFFbEIsMkRBQTZEQyxFQUFhLE9B
QVNELEVBQ25GLE9BRURHLEVBQVUsS0FBT0YsRUFBYSx3RkFLQUMsRUFBYSxlQU0zQ0UsRUFBYyxH
QUFJQyxRQUFRTCxFQUFhLElBQUssS0FDNUNNLEVBQVEsR0FBSUQsUUFBUSxJQUFNTCxFQUFhLDhC
QUFnQ0EsRUFBYSxLQUFNLEtBRTFGTyxFQUFTLEdBQUlGLFFBQVEsSUFBTUwsRUFBYSxLQUFPQSxF
QUFhLEtBQzVEUSxFQUFlLEdBQUlILFFBQVEsSUFBTUwsRUFBYSxXQUFhQSxFQUFhLElBQU1BLEVB
QWEsS0FFM0ZTLEVBQW1CLEdBQUlKLFFBQVEsSUFBTUwsRUFBYSxpQkFBbUJBLEVBQWEsT0FBUSxL
QUUxRlUsRUFBVSxHQUFJTCxRQUFRRixHQUN0QlEsRUFBYyxHQUFJTixRQUFRLElBQU1KLEVBQWEs
S0FFN0NXLEdBQ0NDLEdBQU0sR0FBSVIsUUFBUSxNQUFRSixFQUFhLEtBQ3ZDYSxNQUFTLEdBQUlU
LFFBQVEsUUFBVUosRUFBYSxLQUM1Q2MsSUFBTyxHQUFJVixRQUFRLEtBQU9KLEVBQWEsU0FDdkNl
LEtBQVEsR0FBSVgsUUFBUSxJQUFNSCxHQUMxQmUsT0FBVSxHQUFJWixRQUFRLElBQU1GLEdBQzVC
ZSxNQUFTLEdBQUliLFFBQVEseURBQTJETCxFQUMvRSwrQkFBaUNBLEVBQWEsY0FBZ0JBLEVBQzlE
LGFBQWVBLEVBQWEsU0FBVSxLQUN2Q21CLEtBQVEsR0FBSWQsUUFBUSxPQUFTTixFQUFXLEtBQU0s
S0FHOUNxQixhQUFnQixHQUFJZixRQUFRLElBQU1MLEVBQWEsbURBQzlDQSxFQUFhLG1CQUFxQkEs
RUFBYSxtQkFBb0IsTUFHckVxQixFQUFVLHNDQUNWQyxFQUFVLFNBRVZDLEVBQVUseUJBR1ZDLEVB
QWEsbUNBRWJDLEVBQVcsT0FJWEMsRUFBWSxHQUFJckIsUUFBUSxxQkFBdUJMLEVBQWEsTUFBUUEs
RUFBYSxPQUFRLE1BQ3pGMkIsR0FBWSxTQUFVQyxFQUFHQyxFQUFTQyxHQUNqQyxHQUFJQyxHQUFP
LEtBQU9GLEVBQVUsS0FJNUIsT0FBT0UsS0FBU0EsR0FBUUQsRUFDdkJELEVBQ0FFLEVBQU8sRUFF
TkMsT0FBT0MsYUFBY0YsRUFBTyxPQUU1QkMsT0FBT0MsYUFBY0YsR0FBUSxHQUFLLE1BQWUsS0FB
UEEsRUFBZSxRQUs1REcsR0FBYSxzREFDYkMsR0FBYSxTQUFVQyxFQUFJQyxHQUMxQixNQUFLQSxH
QUdRLE9BQVBELEVBQ0csU0FJREEsRUFBRzNDLE1BQU8sTUFBVSxLQUFPMkMsRUFBR0UsV0FBWUYs
RUFBR3RDLE9BQVMsR0FBSXlDLFNBQVUsSUFBTyxJQUk1RSxLQUFPSCxHQU9mSSxHQUFnQixXQUNm
ekUsS0FHRDBFLEdBQW1CQyxHQUNsQixTQUFVOUMsR0FDVCxNQUFPQSxHQUFLK0MsWUFBYSxJQUFT
LFFBQVUvQyxJQUFRLFNBQVdBLE1BRTlEZ0QsSUFBSyxhQUFjQyxLQUFNLFVBSTdCLEtBQ0NyRCxF
QUFLc0QsTUFDSHpELEVBQU1JLEVBQU1zRCxLQUFNdEUsRUFBYXVFLFlBQ2hDdkUsRUFBYXVFLFlB
SWQzRCxFQUFLWixFQUFhdUUsV0FBV2xELFFBQVNtRCxTQUNyQyxNQUFRQyxJQUNUMUQsR0FBU3NE
LE1BQU96RCxFQUFJUyxPQUduQixTQUFVcUQsRUFBUUMsR0FDakI3RCxFQUFZdUQsTUFBT0ssRUFB
UTFELEVBQU1zRCxLQUFLSyxLQUt2QyxTQUFVRCxFQUFRQyxHQUNqQixHQUFJQyxHQUFJRixFQUFP
ckQsT0FDZDFDLEVBQUksQ0FFTCxPQUFTK0YsRUFBT0UsS0FBT0QsRUFBSWhHLE1BQzNCK0YsRUFB
T3JELE9BQVN1RCxFQUFJLElBS3ZCLFFBQVNDLElBQVFDLEVBQVVDLEVBQVNDLEVBQVNDLEdBQzVD
LEdBQUlDLEdBQUd2RyxFQUFHd0MsRUFBTWdFLEVBQUtDLEVBQU9DLEVBQVFDLEVBQ25DQyxFQUFh
UixHQUFXQSxFQUFRUyxjQUdoQ2hCLEVBQVdPLEVBQVVBLEVBQVFQLFNBQVcsQ0FLekMsSUFIQVEs
RUFBVUEsTUFHZSxnQkFBYkYsS0FBMEJBLEdBQ3hCLElBQWJOLEdBQStCLElBQWJBLEdBQStCLEtB
QWJBLEVBRXBDLE1BQU9RLEVBSVIsS0FBTUMsS0FFRUYsRUFBVUEsRUFBUVMsZUFBaUJULEVBQVUv
RSxLQUFtQlQsR0FDdEVELEVBQWF5RixHQUVkQSxFQUFVQSxHQUFXeEYsRUFFaEJFLEdBQWlCLENB
SXJCLEdBQWtCLEtBQWIrRSxJQUFvQlksRUFBUXJDLEVBQVcwQyxLQUFNWCxJQUdqRCxHQUFNSSxF
QUFJRSxFQUFNLElBR2YsR0FBa0IsSUFBYlosRUFBaUIsQ0FDckIsS0FBTXJELEVBQU80RCxFQUFR
VyxlQUFnQlIsSUFVcEMsTUFBT0YsRUFMUCxJQUFLN0QsRUFBS3dFLEtBQU9ULEVBRWhCLE1BREFG
LEdBQVFqRSxLQUFNSSxHQUNQNkQsTUFZVCxJQUFLTyxJQUFlcEUsRUFBT29FLEVBQVdHLGVBQWdC
UixLQUNyRHJGLEVBQVVrRixFQUFTNUQsSUFDbkJBLEVBQUt3RSxLQUFPVCxFQUdaLE1BREFGLEdB
QVFqRSxLQUFNSSxHQUNQNkQsTUFLSCxDQUFBLEdBQUtJLEVBQU0sR0FFakIsTUFEQXJFLEdBQUtz
RCxNQUFPVyxFQUFTRCxFQUFRYSxxQkFBc0JkLElBQzVDRSxDQUdELEtBQU1FLEVBQUlFLEVBQU0s
S0FBT3hHLEVBQVFpSCx3QkFDckNkLEVBQVFjLHVCQUdSLE1BREE5RSxHQUFLc0QsTUFBT1csRUFB
U0QsRUFBUWMsdUJBQXdCWCxJQUM5Q0YsRUFLVCxHQUFLcEcsRUFBUWtILE1BQ1h4RixFQUFld0Us
RUFBVyxRQUN6QnBGLElBQWNBLEVBQVVxRyxLQUFNakIsSUFBYyxDQUU5QyxHQUFrQixJQUFiTixF
QUNKZSxFQUFhUixFQUNiTyxFQUFjUixNQU1SLElBQXdDLFdBQW5DQyxFQUFRaUIsU0FBU0MsY0FB
NkIsRUFHbkRkLEVBQU1KLEVBQVFtQixhQUFjLE9BQ2pDZixFQUFNQSxFQUFJZ0IsUUFBUzFDLEdB
QVlDLElBRS9CcUIsRUFBUXFCLGFBQWMsS0FBT2pCLEVBQU1yRixHQUlwQ3VGLEVBQVNyRyxFQUFV
OEYsR0FDbkJuRyxFQUFJMEcsRUFBT2hFLE1BQ1gsT0FBUTFDLElBQ1AwRyxFQUFPMUcsR0FBSyxJ
QUFNd0csRUFBTSxJQUFNa0IsR0FBWWhCLEVBQU8xRyxHQUVsRDJHLEdBQWNELEVBQU9pQixLQUFN
LEtBRzNCZixFQUFhdkMsRUFBUytDLEtBQU1qQixJQUFjeUIsR0FBYXhCLEVBQVF5QixhQUM5RHpC
LEVBR0YsR0FBS08sRUFDSixJQUlDLE1BSEF2RSxHQUFLc0QsTUFBT1csRUFDWE8sRUFBV2tCLGlC
QUFrQm5CLElBRXZCTixFQUNOLE1BQVEwQixJQUNSLFFBQ0l2QixJQUFRckYsR0FDWmlGLEVBQVE0
QixnQkFBaUIsUUFTL0IsTUFBT3pILEdBQVE0RixFQUFTcUIsUUFBU3RFLEVBQU8sTUFBUWtELEVB
QVNDLEVBQVNDLEdBU25FLFFBQVM3RSxNQUNSLEdBQUl3RyxLQUVKLFNBQVNDLEdBQU9DLEVBQUtD
LEdBTXBCLE1BSktILEdBQUs3RixLQUFNK0YsRUFBTSxLQUFRakksRUFBS21JLG1CQUUzQkgsR0FB
T0QsRUFBS0ssU0FFWkosRUFBT0MsRUFBTSxLQUFRQyxFQUU5QixNQUFPRixHQU9SLFFBQVNLLElB
QWNDLEdBRXRCLE1BREFBLEdBQUlySCxJQUFZLEVBQ1RxSCxFQU9SLFFBQVNDLElBQVFELEdBQ2hC
LEdBQUlFLEdBQUs5SCxFQUFTK0gsY0FBYyxXQUVoQyxLQUNDLFFBQVNILEVBQUlFLEdBQ1osTUFB
TzVDLEdBQ1IsT0FBTyxFQUNOLFFBRUk0QyxFQUFHYixZQUNQYSxFQUFHYixXQUFXZSxZQUFhRixH
QUc1QkEsRUFBSyxNQVNQLFFBQVNHLElBQVdDLEVBQU9DLEdBQzFCLEdBQUk5RyxHQUFNNkcsRUFB
TUUsTUFBTSxLQUNyQmhKLEVBQUlpQyxFQUFJUyxNQUVULE9BQVExQyxJQUNQRSxFQUFLK0ksV0FB
WWhILEVBQUlqQyxJQUFPK0ksRUFVOUIsUUFBU0csSUFBY3JILEVBQUdDLEdBQ3pCLEdBQUlxSCxH
QUFNckgsR0FBS0QsRUFDZHVILEVBQU9ELEdBQXNCLElBQWZ0SCxFQUFFZ0UsVUFBaUMsSUFBZi9E
LEVBQUUrRCxVQUNuQ2hFLEVBQUV3SCxZQUFjdkgsRUFBRXVILFdBR3BCLElBQUtELEVBQ0osTUFB
T0EsRUFJUixJQUFLRCxFQUNKLE1BQVNBLEVBQU1BLEVBQUlHLFlBQ2xCLEdBQUtILElBQVFySCxF
QUNaLFFBS0gsT0FBT0QsR0FBSSxLQU9aLFFBQVMwSCxJQUFtQkMsR0FDM0IsTUFBTyxVQUFVaEgs
R0FDaEIsR0FBSWlILEdBQU9qSCxFQUFLNkUsU0FBU0MsYUFDekIsT0FBZ0IsVUFBVG1DLEdBQW9C
akgsRUFBS2dILE9BQVNBLEdBUTNDLFFBQVNFLElBQW9CRixHQUM1QixNQUFPLFVBQVVoSCxHQUNo
QixHQUFJaUgsR0FBT2pILEVBQUs2RSxTQUFTQyxhQUN6QixRQUFpQixVQUFUbUMsR0FBNkIsV0FB
VEEsSUFBc0JqSCxFQUFLZ0gsT0FBU0EsR0FRbEUsUUFBU0csSUFBc0JwRSxHQUc5QixNQUFPLFVB
QVUvQyxHQUtoQixNQUFLLFFBQVVBLEdBU1RBLEVBQUtxRixZQUFjckYsRUFBSytDLFlBQWEsRUFH
cEMsU0FBVy9DLEdBQ1YsU0FBV0EsR0FBS3FGLFdBQ2JyRixFQUFLcUYsV0FBV3RDLFdBQWFBLEVB
RTdCL0MsRUFBSytDLFdBQWFBLEVBTXBCL0MsRUFBS29ILGFBQWVyRSxHQUkxQi9DLEVBQUtvSCxj
QUFnQnJFLEdBQ3BCRixHQUFrQjdDLEtBQVcrQyxFQUd6Qi9DLEVBQUsrQyxXQUFhQSxFQUtkLFNB
QVcvQyxJQUNmQSxFQUFLK0MsV0FBYUEsR0FZNUIsUUFBU3NFLElBQXdCckIsR0FDaEMsTUFBT0Qs
SUFBYSxTQUFVdUIsR0FFN0IsTUFEQUEsSUFBWUEsRUFDTHZCLEdBQWEsU0FBVWpDLEVBQU1yRixH
QUNuQyxHQUFJZ0YsR0FDSDhELEVBQWV2QixLQUFRbEMsRUFBSzVELE9BQVFvSCxHQUNwQzlKLEVB
QUkrSixFQUFhckgsTUFHbEIsT0FBUTFDLElBQ0ZzRyxFQUFPTCxFQUFJOEQsRUFBYS9KLE1BQzVC
c0csRUFBS0wsS0FBT2hGLEVBQVFnRixHQUFLSyxFQUFLTCxTQVluQyxRQUFTMkIsSUFBYXhCLEdB
Q3JCLE1BQU9BLElBQW1ELG1CQUFqQ0EsR0FBUWEsc0JBQXdDYixFQUkxRW5HLEVBQVVpRyxHQUFP
akcsV0FPakJHLEVBQVE4RixHQUFPOUYsTUFBUSxTQUFVb0MsR0FHaEMsR0FBSXdILEdBQWtCeEgs
SUFBU0EsRUFBS3FFLGVBQWlCckUsR0FBTXdILGVBQzNELFNBQU9BLEdBQStDLFNBQTdCQSxFQUFn
QjNDLFVBUTFDMUcsRUFBY3VGLEdBQU92RixZQUFjLFNBQVVzSixHQUM1QyxHQUFJQyxHQUFZQyxF
QUNmQyxFQUFNSCxFQUFPQSxFQUFLcEQsZUFBaUJvRCxFQUFPNUksQ0FHM0MsT0FBSytJLEtBQVF4
SixHQUE2QixJQUFqQndKLEVBQUl2RSxVQUFtQnVFLEVBQUlKLGlCQUtwRHBKLEVBQVd3SixFQUNY
dkosRUFBVUQsRUFBU29KLGdCQUNuQmxKLEdBQWtCVixFQUFPUSxHQUlwQlMsSUFBaUJULElBQ3BC
dUosRUFBWXZKLEVBQVN5SixjQUFnQkYsRUFBVUcsTUFBUUgsSUFHbkRBLEVBQVVJLGlCQUNkSixF
QUFVSSxpQkFBa0IsU0FBVW5GLElBQWUsR0FHMUMrRSxFQUFVSyxhQUNyQkwsRUFBVUssWUFBYSxX
QUFZcEYsS0FVckNuRixFQUFRNkMsV0FBYTJGLEdBQU8sU0FBVUMsR0FFckMsTUFEQUEsR0FBRytC
LFVBQVksS0FDUC9CLEVBQUduQixhQUFhLGVBT3pCdEgsRUFBUWdILHFCQUF1QndCLEdBQU8sU0FB
VUMsR0FFL0MsTUFEQUEsR0FBR2dDLFlBQWE5SixFQUFTK0osY0FBYyxNQUMvQmpDLEVBQUd6Qixx
QkFBcUIsS0FBS3ZFLFNBSXRDekMsRUFBUWlILHVCQUF5Qi9DLEVBQVFpRCxLQUFNeEcsRUFBU3NH
LHdCQU14RGpILEVBQVEySyxRQUFVbkMsR0FBTyxTQUFVQyxHQUVsQyxNQURBN0gsR0FBUTZKLFlB
QWFoQyxHQUFLMUIsR0FBSzdGLEdBQ3ZCUCxFQUFTaUssb0JBQXNCakssRUFBU2lLLGtCQUFtQjFK
LEdBQVV1QixTQUl6RXpDLEVBQVEySyxTQUNaMUssRUFBSzRLLE9BQVcsR0FBSSxTQUFVOUQsR0FD
N0IsR0FBSStELEdBQVMvRCxFQUFHUSxRQUFTbEQsRUFBV0MsR0FDcEMsT0FBTyxVQUFVL0IsR0FD
aEIsTUFBT0EsR0FBSytFLGFBQWEsUUFBVXdELElBR3JDN0ssRUFBSzhLLEtBQVMsR0FBSSxTQUFV
aEUsRUFBSVosR0FDL0IsR0FBdUMsbUJBQTNCQSxHQUFRVyxnQkFBa0NqRyxFQUFpQixDQUN0RSxH
QUFJMEIsR0FBTzRELEVBQVFXLGVBQWdCQyxFQUNuQyxPQUFPeEUsSUFBU0EsVUFJbEJ0QyxFQUFL
NEssT0FBVyxHQUFLLFNBQVU5RCxHQUM5QixHQUFJK0QsR0FBUy9ELEVBQUdRLFFBQVNsRCxFQUFX
QyxHQUNwQyxPQUFPLFVBQVUvQixHQUNoQixHQUFJeUgsR0FBd0MsbUJBQTFCekgsR0FBS3lJLGtC
QUN0QnpJLEVBQUt5SSxpQkFBaUIsS0FDdkIsT0FBT2hCLElBQVFBLEVBQUs3QixRQUFVMkMsSUFN
aEM3SyxFQUFLOEssS0FBUyxHQUFJLFNBQVVoRSxFQUFJWixHQUMvQixHQUF1QyxtQkFBM0JBLEdB
QVFXLGdCQUFrQ2pHLEVBQWlCLENBQ3RFLEdBQUltSixHQUFNakssRUFBR2tMLEVBQ1oxSSxFQUFP
NEQsRUFBUVcsZUFBZ0JDLEVBRWhDLElBQUt4RSxFQUFPLENBSVgsR0FEQXlILEVBQU96SCxFQUFL
eUksaUJBQWlCLE1BQ3hCaEIsR0FBUUEsRUFBSzdCLFFBQVVwQixFQUMzQixPQUFTeEUsRUFJVjBJ
LEdBQVE5RSxFQUFReUUsa0JBQW1CN0QsR0FDbkNoSCxFQUFJLENBQ0osT0FBU3dDLEVBQU8wSSxF
QUFNbEwsS0FFckIsR0FEQWlLLEVBQU96SCxFQUFLeUksaUJBQWlCLE1BQ3hCaEIsR0FBUUEsRUFB
SzdCLFFBQVVwQixFQUMzQixPQUFTeEUsR0FLWixZQU1IdEMsRUFBSzhLLEtBQVUsSUFBSS9LLEVB
QVFnSCxxQkFDMUIsU0FBVWtFLEVBQUsvRSxHQUNkLE1BQTZDLG1CQUFqQ0EsR0FBUWEscUJBQ1pi
LEVBQVFhLHFCQUFzQmtFLEdBRzFCbEwsRUFBUWtILElBQ1pmLEVBQVEwQixpQkFBa0JxRCxHQUQz
QixRQUtSLFNBQVVBLEVBQUsvRSxHQUNkLEdBQUk1RCxHQUNINEksS0FDQXBMLEVBQUksRUFFSnFH
LEVBQVVELEVBQVFhLHFCQUFzQmtFLEVBR3pDLElBQWEsTUFBUkEsRUFBYyxDQUNsQixNQUFTM0ks
RUFBTzZELEVBQVFyRyxLQUNBLElBQWxCd0MsRUFBS3FELFVBQ1R1RixFQUFJaEosS0FBTUksRUFJ
WixPQUFPNEksR0FFUixNQUFPL0UsSUFJVG5HLEVBQUs4SyxLQUFZLE1BQUkvSyxFQUFRaUgsd0JB
QTBCLFNBQVV1RCxFQUFXckUsR0FDM0UsR0FBK0MsbUJBQW5DQSxHQUFRYyx3QkFBMENwRyxFQUM3
RCxNQUFPc0YsR0FBUWMsdUJBQXdCdUQsSUFVekN6SixLQU9BRCxNQUVNZCxFQUFRa0gsSUFBTWhE
LEVBQVFpRCxLQUFNeEcsRUFBU2tILHFCQUcxQ1csR0FBTyxTQUFVQyxHQU1oQjdILEVBQVE2SixZ
QUFhaEMsR0FBSzJDLFVBQVksVUFBWWxLLEVBQVUscUJBQzFDQSxFQUFVLGtFQU92QnVILEVBQUda
LGlCQUFpQix3QkFBd0JwRixRQUNoRDNCLEVBQVVxQixLQUFNLFNBQVdRLEVBQWEsZ0JBS25DOEYs
RUFBR1osaUJBQWlCLGNBQWNwRixRQUN2QzNCLEVBQVVxQixLQUFNLE1BQVFRLEVBQWEsYUFBZUQs
RUFBVyxLQUkxRCtGLEVBQUdaLGlCQUFrQixRQUFVM0csRUFBVSxNQUFPdUIsUUFDckQzQixFQUFV
cUIsS0FBSyxNQU1Wc0csRUFBR1osaUJBQWlCLFlBQVlwRixRQUNyQzNCLEVBQVVxQixLQUFLLFlB
TVZzRyxFQUFHWixpQkFBa0IsS0FBTzNHLEVBQVUsTUFBT3VCLFFBQ2xEM0IsRUFBVXFCLEtBQUss
Y0FJakJxRyxHQUFPLFNBQVVDLEdBQ2hCQSxFQUFHMkMsVUFBWSxtRkFLZixJQUFJQyxHQUFRMUss
RUFBUytILGNBQWMsUUFDbkMyQyxHQUFNN0QsYUFBYyxPQUFRLFVBQzVCaUIsRUFBR2dDLFlBQWFZ
LEdBQVE3RCxhQUFjLE9BQVEsS0FJekNpQixFQUFHWixpQkFBaUIsWUFBWXBGLFFBQ3BDM0IsRUFB
VXFCLEtBQU0sT0FBU1EsRUFBYSxlQUtTLElBQTNDOEYsRUFBR1osaUJBQWlCLFlBQVlwRixRQUNw
QzNCLEVBQVVxQixLQUFNLFdBQVksYUFLN0J2QixFQUFRNkosWUFBYWhDLEdBQUtuRCxVQUFXLEVB
Q1ksSUFBNUNtRCxFQUFHWixpQkFBaUIsYUFBYXBGLFFBQ3JDM0IsRUFBVXFCLEtBQU0sV0FBWSxh
QUk3QnNHLEVBQUdaLGlCQUFpQixRQUNwQi9HLEVBQVVxQixLQUFLLFlBSVhuQyxFQUFRc0wsZ0JB
QWtCcEgsRUFBUWlELEtBQU9uRyxFQUFVSixFQUFRSSxTQUNoRUosRUFBUTJLLHVCQUNSM0ssRUFB
UTRLLG9CQUNSNUssRUFBUTZLLGtCQUNSN0ssRUFBUThLLHFCQUVSbEQsR0FBTyxTQUFVQyxHQUdo
QnpJLEVBQVEyTCxrQkFBb0IzSyxFQUFRMEUsS0FBTStDLEVBQUksS0FJOUN6SCxFQUFRMEUsS0FB
TStDLEVBQUksYUFDbEIxSCxFQUFjb0IsS0FBTSxLQUFNVyxLQUk1QmhDLEVBQVlBLEVBQVUyQixR
QUFVLEdBQUlPLFFBQVFsQyxFQUFVNEcsS0FBSyxNQUMzRDNHLEVBQWdCQSxFQUFjMEIsUUFBVSxH
QUFJTyxRQUFRakMsRUFBYzJHLEtBQUssTUFJdkV1QyxFQUFhL0YsRUFBUWlELEtBQU12RyxFQUFR
Z0wseUJBS25DM0ssRUFBV2dKLEdBQWMvRixFQUFRaUQsS0FBTXZHLEVBQVFLLFVBQzlDLFNBQVVX
LEVBQUdDLEdBQ1osR0FBSWdLLEdBQXVCLElBQWZqSyxFQUFFZ0UsU0FBaUJoRSxFQUFFbUksZ0JB
QWtCbkksRUFDbERrSyxFQUFNakssR0FBS0EsRUFBRStGLFVBQ2QsT0FBT2hHLEtBQU1rSyxNQUFX
QSxHQUF3QixJQUFqQkEsRUFBSWxHLFlBQ2xDaUcsRUFBTTVLLFNBQ0w0SyxFQUFNNUssU0FBVTZL
LEdBQ2hCbEssRUFBRWdLLHlCQUE4RCxHQUFuQ2hLLEVBQUVnSyx3QkFBeUJFLE1BRzNELFNBQVVs
SyxFQUFHQyxHQUNaLEdBQUtBLEVBQ0osTUFBU0EsRUFBSUEsRUFBRStGLFdBQ2QsR0FBSy9GLElB
QU1ELEVBQ1YsT0FBTyxDQUlWLFFBQU8sR0FPVEQsRUFBWXNJLEVBQ1osU0FBVXJJLEVBQUdDLEdB
R1osR0FBS0QsSUFBTUMsRUFFVixNQURBcEIsSUFBZSxFQUNSLENBSVIsSUFBSXNMLElBQVduSyxF
QUFFZ0sseUJBQTJCL0osRUFBRStKLHVCQUM5QyxPQUFLRyxHQUNHQSxHQUlSQSxHQUFZbkssRUFB
RWdGLGVBQWlCaEYsTUFBVUMsRUFBRStFLGVBQWlCL0UsR0FDM0RELEVBQUVnSyx3QkFBeUIvSixH
QUczQixFQUdjLEVBQVZrSyxJQUNGL0wsRUFBUWdNLGNBQWdCbkssRUFBRStKLHdCQUF5QmhLLEtB
QVFtSyxFQUd4RG5LLElBQU1qQixHQUFZaUIsRUFBRWdGLGdCQUFrQnhGLEdBQWdCSCxFQUFTRyxF
QUFjUSxNQUc3RUMsSUFBTWxCLEdBQVlrQixFQUFFK0UsZ0JBQWtCeEYsR0FBZ0JILEVBQVNHLEVB
QWNTLEdBQzFFLEVBSURyQixFQUNKNkIsRUFBUzdCLEVBQVdvQixHQUFNUyxFQUFTN0IsRUFBV3FC
LEdBQ2hELEVBR2UsRUFBVmtLLEtBQW1CLElBRTNCLFNBQVVuSyxFQUFHQyxHQUVaLEdBQUtELElB
QU1DLEVBRVYsTUFEQXBCLElBQWUsRUFDUixDQUdSLElBQUl5SSxHQUNIbkosRUFBSSxFQUNKa00s
RUFBTXJLLEVBQUVnRyxXQUNSa0UsRUFBTWpLLEVBQUUrRixXQUNSc0UsR0FBT3RLLEdBQ1B1SyxH
QUFPdEssRUFHUixLQUFNb0ssSUFBUUgsRUFDYixNQUFPbEssS0FBTWpCLEtBQ1prQixJQUFNbEIs
RUFBVyxFQUNqQnNMLEtBQ0FILEVBQU0sRUFDTnRMLEVBQ0U2QixFQUFTN0IsRUFBV29CLEdBQU1T
LEVBQVM3QixFQUFXcUIsR0FDaEQsQ0FHSyxJQUFLb0ssSUFBUUgsRUFDbkIsTUFBTzdDLElBQWNy
SCxFQUFHQyxFQUl6QnFILEdBQU10SCxDQUNOLE9BQVNzSCxFQUFNQSxFQUFJdEIsV0FDbEJzRSxF
QUFHRSxRQUFTbEQsRUFFYkEsR0FBTXJILENBQ04sT0FBU3FILEVBQU1BLEVBQUl0QixXQUNsQnVF
LEVBQUdDLFFBQVNsRCxFQUliLE9BQVFnRCxFQUFHbk0sS0FBT29NLEVBQUdwTSxHQUNwQkEsR0FH
RCxPQUFPQSxHQUVOa0osR0FBY2lELEVBQUduTSxHQUFJb00sRUFBR3BNLElBR3hCbU0sRUFBR25N
LEtBQU9xQixLQUNWK0ssRUFBR3BNLEtBQU9xQixFQUFlLEVBQ3pCLEdBR0tULEdBM1lDQSxHQThZ
VHNGLEdBQU9qRixRQUFVLFNBQVVxTCxFQUFNQyxHQUNoQyxNQUFPckcsSUFBUW9HLEVBQU0sS0FB
TSxLQUFNQyxJQUdsQ3JHLEdBQU9xRixnQkFBa0IsU0FBVS9JLEVBQU04SixHQVN4QyxJQVBPOUos
RUFBS3FFLGVBQWlCckUsS0FBVzVCLEdBQ3ZDRCxFQUFhNkIsR0FJZDhKLEVBQU9BLEVBQUs5RSxR
QUFTbkUsRUFBa0IsVUFFbENwRCxFQUFRc0wsaUJBQW1CekssSUFDOUJhLEVBQWUySyxFQUFPLFFB
Q3BCdEwsSUFBa0JBLEVBQWNvRyxLQUFNa0YsT0FDdEN2TCxJQUFrQkEsRUFBVXFHLEtBQU1rRixJ
QUVyQyxJQUNDLEdBQUlFLEdBQU12TCxFQUFRMEUsS0FBTW5ELEVBQU04SixFQUc5QixJQUFLRSxH
QUFPdk0sRUFBUTJMLG1CQUdsQnBKLEVBQUs1QixVQUF1QyxLQUEzQjRCLEVBQUs1QixTQUFTaUYs
U0FDaEMsTUFBTzJHLEdBRVAsTUFBTzFHLElBR1YsTUFBT0ksSUFBUW9HLEVBQU0xTCxFQUFVLE1B
QVE0QixJQUFTRSxPQUFTLEdBRzFEd0QsR0FBT2hGLFNBQVcsU0FBVWtGLEVBQVM1RCxHQUtwQyxP
QUhPNEQsRUFBUVMsZUFBaUJULEtBQWN4RixHQUM3Q0QsRUFBYXlGLEdBRVBsRixFQUFVa0YsRUFB
UzVELElBRzNCMEQsR0FBT3VHLEtBQU8sU0FBVWpLLEVBQU1pSCxJQUV0QmpILEVBQUtxRSxlQUFp
QnJFLEtBQVc1QixHQUN2Q0QsRUFBYTZCLEVBR2QsSUFBSWdHLEdBQUt0SSxFQUFLK0ksV0FBWVEs
RUFBS25DLGVBRTlCb0YsRUFBTWxFLEdBQU16RyxFQUFPNEQsS0FBTXpGLEVBQUsrSSxXQUFZUSxF
QUFLbkMsZUFDOUNrQixFQUFJaEcsRUFBTWlILEdBQU8zSSxHQUNqQjZMLE1BRUYsT0FBZUEsVUFB
UkQsRUFDTkEsRUFDQXpNLEVBQVE2QyxhQUFlaEMsRUFDdEIwQixFQUFLK0UsYUFBY2tDLElBQ2xC
aUQsRUFBTWxLLEVBQUt5SSxpQkFBaUJ4QixLQUFVaUQsRUFBSUUsVUFDMUNGLEVBQUl0RSxNQUNK
LE1BR0psQyxHQUFPMkcsT0FBUyxTQUFVQyxHQUN6QixPQUFRQSxFQUFNLElBQUl0RixRQUFTMUMs
R0FBWUMsS0FHeENtQixHQUFPNkcsTUFBUSxTQUFVQyxHQUN4QixLQUFNLElBQUlDLE9BQU8sMENB
QTRDRCxJQU85RDlHLEdBQU9nSCxXQUFhLFNBQVU3RyxHQUM3QixHQUFJN0QsR0FDSDJLLEtBQ0Fs
SCxFQUFJLEVBQ0pqRyxFQUFJLENBT0wsSUFKQVUsR0FBZ0JULEVBQVFtTixpQkFDeEIzTSxHQUFh
UixFQUFRb04sWUFBY2hILEVBQVFoRSxNQUFPLEdBQ2xEZ0UsRUFBUWlILEtBQU0xTCxHQUVUbEIs
RUFBZSxDQUNuQixNQUFTOEIsRUFBTzZELEVBQVFyRyxLQUNsQndDLElBQVM2RCxFQUFTckcsS0FD
dEJpRyxFQUFJa0gsRUFBVy9LLEtBQU1wQyxHQUd2QixPQUFRaUcsSUFDUEksRUFBUWtILE9BQVFK
LEVBQVlsSCxHQUFLLEdBUW5DLE1BRkF4RixHQUFZLEtBRUw0RixHQU9SbEcsRUFBVStGLEdBQU8v
RixRQUFVLFNBQVVxQyxHQUNwQyxHQUFJeUgsR0FDSHVDLEVBQU0sR0FDTnhNLEVBQUksRUFDSjZG
LEVBQVdyRCxFQUFLcUQsUUFFakIsSUFBTUEsR0FNQyxHQUFrQixJQUFiQSxHQUErQixJQUFiQSxH
QUErQixLQUFiQSxFQUFrQixDQUdqRSxHQUFpQyxnQkFBckJyRCxHQUFLZ0wsWUFDaEIsTUFBT2hM
LEdBQUtnTCxXQUdaLEtBQU1oTCxFQUFPQSxFQUFLaUwsV0FBWWpMLEVBQU1BLEVBQU9BLEVBQUs4
RyxZQUMvQ2tELEdBQU9yTSxFQUFTcUMsT0FHWixJQUFrQixJQUFicUQsR0FBK0IsSUFBYkEsRUFD
N0IsTUFBT3JELEdBQUtrTCxjQWhCWixPQUFTekQsRUFBT3pILEVBQUt4QyxLQUVwQndNLEdBQU9y
TSxFQUFTOEosRUFrQmxCLE9BQU91QyxJQUdSdE0sRUFBT2dHLEdBQU95SCxXQUdidEYsWUFBYSxH
QUVidUYsYUFBY3JGLEdBRWQ5QixNQUFPakQsRUFFUHlGLGNBRUErQixRQUVBNkMsVUFDQ0MsS0FB
T3RJLElBQUssYUFBY3VJLE9BQU8sR0FDakNDLEtBQU94SSxJQUFLLGNBQ1p5SSxLQUFPekksSUFB
SyxrQkFBbUJ1SSxPQUFPLEdBQ3RDRyxLQUFPMUksSUFBSyxvQkFHYjJJLFdBQ0N2SyxLQUFRLFNB
QVU2QyxHQVVqQixNQVRBQSxHQUFNLEdBQUtBLEVBQU0sR0FBR2UsUUFBU2xELEVBQVdDLElBR3hD
a0MsRUFBTSxJQUFPQSxFQUFNLElBQU1BLEVBQU0sSUFBTUEsRUFBTSxJQUFNLElBQUtlLFFBQVNs
RCxFQUFXQyxJQUV4RCxPQUFia0MsRUFBTSxLQUNWQSxFQUFNLEdBQUssSUFBTUEsRUFBTSxHQUFL
LEtBR3RCQSxFQUFNcEUsTUFBTyxFQUFHLElBR3hCeUIsTUFBUyxTQUFVMkMsR0E2QmxCLE1BbEJB
QSxHQUFNLEdBQUtBLEVBQU0sR0FBR2EsY0FFWSxRQUEzQmIsRUFBTSxHQUFHcEUsTUFBTyxFQUFH
LElBRWpCb0UsRUFBTSxJQUNYUCxHQUFPNkcsTUFBT3RHLEVBQU0sSUFLckJBLEVBQU0sS0FBUUEs
RUFBTSxHQUFLQSxFQUFNLElBQU1BLEVBQU0sSUFBTSxHQUFLLEdBQW1CLFNBQWJBLEVBQU0sSUFB
OEIsUUFBYkEsRUFBTSxLQUN6RkEsRUFBTSxLQUFVQSxFQUFNLEdBQUtBLEVBQU0sSUFBcUIsUUFB
YkEsRUFBTSxLQUdwQ0EsRUFBTSxJQUNqQlAsR0FBTzZHLE1BQU90RyxFQUFNLElBR2RBLEdBR1I1
QyxPQUFVLFNBQVU0QyxHQUNuQixHQUFJMkgsR0FDSEMsR0FBWTVILEVBQU0sSUFBTUEsRUFBTSxF
QUUvQixPQUFLakQsR0FBaUIsTUFBRTRELEtBQU1YLEVBQU0sSUFDNUIsTUFJSEEsRUFBTSxHQUNW
QSxFQUFNLEdBQUtBLEVBQU0sSUFBTUEsRUFBTSxJQUFNLEdBR3hCNEgsR0FBWS9LLEVBQVE4RCxL
QUFNaUgsS0FFcENELEVBQVMvTixFQUFVZ08sR0FBVSxNQUU3QkQsRUFBU0MsRUFBUy9MLFFBQVMs
SUFBSytMLEVBQVMzTCxPQUFTMEwsR0FBV0MsRUFBUzNMLFVBR3ZFK0QsRUFBTSxHQUFLQSxFQUFN
LEdBQUdwRSxNQUFPLEVBQUcrTCxHQUM5QjNILEVBQU0sR0FBSzRILEVBQVNoTSxNQUFPLEVBQUcr
TCxJQUl4QjNILEVBQU1wRSxNQUFPLEVBQUcsTUFJekJ5SSxRQUVDbkgsSUFBTyxTQUFVMkssR0FD
aEIsR0FBSWpILEdBQVdpSCxFQUFpQjlHLFFBQVNsRCxFQUFXQyxJQUFZK0MsYUFDaEUsT0FBNEIs
TUFBckJnSCxFQUNOLFdBQWEsT0FBTyxHQUNwQixTQUFVOUwsR0FDVCxNQUFPQSxHQUFLNkUsVUFB
WTdFLEVBQUs2RSxTQUFTQyxnQkFBa0JELElBSTNEM0QsTUFBUyxTQUFVK0csR0FDbEIsR0FBSThE
LEdBQVUvTSxFQUFZaUosRUFBWSxJQUV0QyxPQUFPOEQsS0FDTEEsRUFBVSxHQUFJdEwsUUFBUSxN
QUFRTCxFQUFhLElBQU02SCxFQUFZLElBQU03SCxFQUFhLFNBQ2pGcEIsRUFBWWlKLEVBQVcsU0FB
VWpJLEdBQ2hDLE1BQU8rTCxHQUFRbkgsS0FBZ0MsZ0JBQW5CNUUsR0FBS2lJLFdBQTBCakksRUFB
S2lJLFdBQTBDLG1CQUF0QmpJLEdBQUsrRSxjQUFnQy9FLEVBQUsrRSxhQUFhLFVBQVksT0FJMUoz
RCxLQUFRLFNBQVU2RixFQUFNK0UsRUFBVUMsR0FDakMsTUFBTyxVQUFVak0sR0FDaEIsR0FBSWtN
LEdBQVN4SSxHQUFPdUcsS0FBTWpLLEVBQU1pSCxFQUVoQyxPQUFlLE9BQVZpRixFQUNnQixPQUFi
RixHQUVGQSxJQUlORSxHQUFVLEdBRVUsTUFBYkYsRUFBbUJFLElBQVdELEVBQ3ZCLE9BQWJELEVB
QW9CRSxJQUFXRCxFQUNsQixPQUFiRCxFQUFvQkMsR0FBcUMsSUFBNUJDLEVBQU9wTSxRQUFTbU0s
R0FDaEMsT0FBYkQsRUFBb0JDLEdBQVNDLEVBQU9wTSxRQUFTbU0sTUFDaEMsT0FBYkQsRUFBb0JD
LEdBQVNDLEVBQU9yTSxPQUFRb00sRUFBTS9MLFVBQWErTCxFQUNsRCxPQUFiRCxHQUFzQixJQUFN
RSxFQUFPbEgsUUFBU3hFLEVBQWEsS0FBUSxLQUFNVixRQUFTbU0sTUFDbkUsT0FBYkQsSUFBb0JF
LElBQVdELEdBQVNDLEVBQU9yTSxNQUFPLEVBQUdvTSxFQUFNL0wsT0FBUyxLQUFRK0wsRUFBUSxR
QUszRjNLLE1BQVMsU0FBVTBGLEVBQU1tRixFQUFNN0UsRUFBVWlFLEVBQU9hLEdBQy9DLEdBQUlD
LEdBQWdDLFFBQXZCckYsRUFBS25ILE1BQU8sRUFBRyxHQUMzQnlNLEVBQStCLFNBQXJCdEYsRUFB
S25ILFVBQ2YwTSxFQUFrQixZQUFUSixDQUVWLE9BQWlCLEtBQVZaLEdBQXdCLElBQVRhLEVBR3JC
LFNBQVVwTSxHQUNULFFBQVNBLEVBQUtxRixZQUdmLFNBQVVyRixFQUFNNEQsRUFBUzRJLEdBQ3hC
LEdBQUk5RyxHQUFPK0csRUFBYUMsRUFBWWpGLEVBQU1rRixFQUFXQyxFQUNwRDVKLEVBQU1xSixJ
QUFXQyxFQUFVLGNBQWdCLGtCQUMzQ08sRUFBUzdNLEVBQUtxRixXQUNkNEIsRUFBT3NGLEdBQVV2
TSxFQUFLNkUsU0FBU0MsY0FDL0JnSSxHQUFZTixJQUFRRCxFQUNwQjNGLEdBQU8sQ0FFUixJQUFL
aUcsRUFBUyxDQUdiLEdBQUtSLEVBQVMsQ0FDYixNQUFRckosRUFBTSxDQUNieUUsRUFBT3pILENB
Q1AsT0FBU3lILEVBQU9BLEVBQU16RSxHQUNyQixHQUFLdUosRUFDSjlFLEVBQUs1QyxTQUFTQyxn
QkFBa0JtQyxFQUNkLElBQWxCUSxFQUFLcEUsU0FFTCxPQUFPLENBSVR1SixHQUFRNUosRUFBZSxT
QUFUZ0UsSUFBb0I0RixHQUFTLGNBRTVDLE9BQU8sRUFNUixHQUhBQSxHQUFVTixFQUFVTyxFQUFP
NUIsV0FBYTRCLEVBQU9FLFdBRzFDVCxHQUFXUSxFQUFXLENBSzFCckYsRUFBT29GLEVBQ1BILEVB
QWFqRixFQUFNOUksS0FBYzhJLEVBQU05SSxPQUl2QzhOLEVBQWNDLEVBQVlqRixFQUFLdUYsWUFD
N0JOLEVBQVlqRixFQUFLdUYsY0FFbkJ0SCxFQUFRK0csRUFBYXpGLE9BQ3JCMkYsRUFBWWpILEVB
QU8sS0FBUTVHLEdBQVc0RyxFQUFPLEdBQzdDa0IsRUFBTytGLEdBQWFqSCxFQUFPLEdBQzNCK0Is
RUFBT2tGLEdBQWFFLEVBQU96SixXQUFZdUosRUFFdkMsT0FBU2xGLElBQVNrRixHQUFhbEYsR0FB
UUEsRUFBTXpFLEtBRzNDNEQsRUFBTytGLEVBQVksSUFBTUMsRUFBTWxOLE1BR2hDLEdBQXVCLElB
QWxCK0gsRUFBS3BFLFlBQW9CdUQsR0FBUWEsSUFBU3pILEVBQU8sQ0FDckR5TSxFQUFhekYsSUFB
V2xJLEVBQVM2TixFQUFXL0YsRUFDNUMsWUF1QkYsSUFqQktrRyxJQUVKckYsRUFBT3pILEVBQ1Aw
TSxFQUFhakYsRUFBTTlJLEtBQWM4SSxFQUFNOUksT0FJdkM4TixFQUFjQyxFQUFZakYsRUFBS3VG
LFlBQzdCTixFQUFZakYsRUFBS3VGLGNBRW5CdEgsRUFBUStHLEVBQWF6RixPQUNyQjJGLEVBQVlq
SCxFQUFPLEtBQVE1RyxHQUFXNEcsRUFBTyxHQUM3Q2tCLEVBQU8rRixHQUtIL0YsS0FBUyxFQUVi
LE1BQVNhLElBQVNrRixHQUFhbEYsR0FBUUEsRUFBTXpFLEtBQzNDNEQsRUFBTytGLEVBQVksSUFB
TUMsRUFBTWxOLE1BRWhDLElBQU82TSxFQUNOOUUsRUFBSzVDLFNBQVNDLGdCQUFrQm1DLEVBQ2Qs
SUFBbEJRLEVBQUtwRSxhQUNIdUQsSUFHR2tHLElBQ0pKLEVBQWFqRixFQUFNOUksS0FBYzhJLEVB
QU05SSxPQUl2QzhOLEVBQWNDLEVBQVlqRixFQUFLdUYsWUFDN0JOLEVBQVlqRixFQUFLdUYsY0FF
bkJQLEVBQWF6RixJQUFXbEksRUFBUzhILElBRzdCYSxJQUFTekgsR0FDYixLQVNMLE9BREE0RyxJ
QUFRd0YsRUFDRHhGLElBQVMyRSxHQUFXM0UsRUFBTzJFLElBQVUsR0FBSzNFLEVBQU8yRSxHQUFT
LEtBS3JFbEssT0FBVSxTQUFVNEwsRUFBUTNGLEdBSzNCLEdBQUk0RixHQUNIbEgsRUFBS3RJLEVB
QUs2QyxRQUFTME0sSUFBWXZQLEVBQUt5UCxXQUFZRixFQUFPbkksZ0JBQ3REcEIsR0FBTzZHLE1B
QU8sdUJBQXlCMEMsRUFLekMsT0FBS2pILEdBQUlySCxHQUNEcUgsRUFBSXNCLEdBSVB0QixFQUFH
OUYsT0FBUyxHQUNoQmdOLEdBQVNELEVBQVFBLEVBQVEsR0FBSTNGLEdBQ3RCNUosRUFBS3lQLFdB
QVczTixlQUFnQnlOLEVBQU9uSSxlQUM3Q2lCLEdBQWEsU0FBVWpDLEVBQU1yRixHQUM1QixHQUFJ
Mk8sR0FDSEMsRUFBVXJILEVBQUlsQyxFQUFNd0QsR0FDcEI5SixFQUFJNlAsRUFBUW5OLE1BQ2Is
T0FBUTFDLElBQ1A0UCxFQUFNdE4sRUFBU2dFLEVBQU11SixFQUFRN1AsSUFDN0JzRyxFQUFNc0os
S0FBVzNPLEVBQVMyTyxHQUFRQyxFQUFRN1AsTUFHNUMsU0FBVXdDLEdBQ1QsTUFBT2dHLEdBQUlo
RyxFQUFNLEVBQUdrTixLQUloQmxILElBSVR6RixTQUVDK00sSUFBT3ZILEdBQWEsU0FBVXBDLEdB
STdCLEdBQUltRixNQUNIakYsS0FDQTBKLEVBQVV6UCxFQUFTNkYsRUFBU3FCLFFBQVN0RSxFQUFP
LE1BRTdDLE9BQU82TSxHQUFTNU8sR0FDZm9ILEdBQWEsU0FBVWpDLEVBQU1yRixFQUFTbUYsRUFB
UzRJLEdBQzlDLEdBQUl4TSxHQUNId04sRUFBWUQsRUFBU3pKLEVBQU0sS0FBTTBJLE1BQ2pDaFAs
RUFBSXNHLEVBQUs1RCxNQUdWLE9BQVExQyxLQUNEd0MsRUFBT3dOLEVBQVVoUSxNQUN0QnNHLEVB
QUt0RyxLQUFPaUIsRUFBUWpCLEdBQUt3QyxNQUk1QixTQUFVQSxFQUFNNEQsRUFBUzRJLEdBS3hC
LE1BSkExRCxHQUFNLEdBQUs5SSxFQUNYdU4sRUFBU3pFLEVBQU8sS0FBTTBELEVBQUszSSxHQUUz
QmlGLEVBQU0sR0FBSyxNQUNIakYsRUFBUW5FLFNBSW5CK04sSUFBTzFILEdBQWEsU0FBVXBDLEdB
QzdCLE1BQU8sVUFBVTNELEdBQ2hCLE1BQU8wRCxJQUFRQyxFQUFVM0QsR0FBT0UsT0FBUyxLQUkz
Q3hCLFNBQVlxSCxHQUFhLFNBQVUySCxHQUVsQyxNQURBQSxHQUFPQSxFQUFLMUksUUFBU2xELEVB
QVdDLElBQ3pCLFNBQVUvQixHQUNoQixPQUFTQSxFQUFLZ0wsYUFBZWhMLEVBQUsyTixXQUFhaFEs
RUFBU3FDLElBQVNGLFFBQVM0TixTQVc1RUUsS0FBUTdILEdBQWMsU0FBVTZILEdBTS9CLE1BSk03
TSxHQUFZNkQsS0FBS2dKLEdBQVEsS0FDOUJsSyxHQUFPNkcsTUFBTyxxQkFBdUJxRCxHQUV0Q0Es
RUFBT0EsRUFBSzVJLFFBQVNsRCxFQUFXQyxJQUFZK0MsY0FDckMsU0FBVTlFLEdBQ2hCLEdBQUk2
TixFQUNKLEdBQ0MsSUFBTUEsRUFBV3ZQLEVBQ2hCMEIsRUFBSzROLEtBQ0w1TixFQUFLK0UsYUFB
YSxhQUFlL0UsRUFBSytFLGFBQWEsUUFHbkQsTUFEQThJLEdBQVdBLEVBQVMvSSxjQUNiK0ksSUFB
YUQsR0FBMkMsSUFBbkNDLEVBQVMvTixRQUFTOE4sRUFBTyxZQUU1QzVOLEVBQU9BLEVBQUtxRixh
QUFpQyxJQUFsQnJGLEVBQUtxRCxTQUMzQyxRQUFPLEtBS1RFLE9BQVUsU0FBVXZELEdBQ25CLEdB
QUk4TixHQUFPdlEsRUFBT3dRLFVBQVl4USxFQUFPd1EsU0FBU0QsSUFDOUMsT0FBT0EsSUFBUUEs
RUFBS2pPLE1BQU8sS0FBUUcsRUFBS3dFLElBR3pDd0osS0FBUSxTQUFVaE8sR0FDakIsTUFBT0Es
S0FBUzNCLEdBR2pCNFAsTUFBUyxTQUFVak8sR0FDbEIsTUFBT0EsS0FBUzVCLEVBQVM4UCxpQkFB
bUI5UCxFQUFTK1AsVUFBWS9QLEVBQVMrUCxnQkFBa0JuTyxFQUFLZ0gsTUFBUWhILEVBQUtvTyxP
QUFTcE8sRUFBS3FPLFdBSTdIQyxRQUFXbkgsSUFBc0IsR0FDakNwRSxTQUFZb0UsSUFBc0IsR0FF
bENvSCxRQUFXLFNBQVV2TyxHQUdwQixHQUFJNkUsR0FBVzdFLEVBQUs2RSxTQUFTQyxhQUM3QixP
QUFxQixVQUFiRCxLQUEwQjdFLEVBQUt1TyxTQUEwQixXQUFiMUosS0FBMkI3RSxFQUFLd08sVUFH
ckZBLFNBQVksU0FBVXhPLEdBT3JCLE1BSktBLEdBQUtxRixZQUNUckYsRUFBS3FGLFdBQVdvSixj
QUdWek8sRUFBS3dPLFlBQWEsR0FJMUJFLE1BQVMsU0FBVTFPLEdBS2xCLElBQU1BLEVBQU9BLEVB
QUtpTCxXQUFZakwsRUFBTUEsRUFBT0EsRUFBSzhHLFlBQy9DLEdBQUs5RyxFQUFLcUQsU0FBVyxF
QUNwQixPQUFPLENBR1QsUUFBTyxHQUdSd0osT0FBVSxTQUFVN00sR0FDbkIsT0FBUXRDLEVBQUs2
QyxRQUFlLE1BQUdQLElBSWhDMk8sT0FBVSxTQUFVM08sR0FDbkIsTUFBTzBCLEdBQVFrRCxLQUFN
NUUsRUFBSzZFLFdBRzNCaUUsTUFBUyxTQUFVOUksR0FDbEIsTUFBT3lCLEdBQVFtRCxLQUFNNUUs
RUFBSzZFLFdBRzNCK0osT0FBVSxTQUFVNU8sR0FDbkIsR0FBSWlILEdBQU9qSCxFQUFLNkUsU0FB
U0MsYUFDekIsT0FBZ0IsVUFBVG1DLEdBQWtDLFdBQWRqSCxFQUFLZ0gsTUFBOEIsV0FBVEMsR0FH
dER5RyxLQUFRLFNBQVUxTixHQUNqQixHQUFJaUssRUFDSixPQUF1QyxVQUFoQ2pLLEVBQUs2RSxT
QUFTQyxlQUNOLFNBQWQ5RSxFQUFLZ0gsT0FJbUMsT0FBckNpRCxFQUFPakssRUFBSytFLGFBQWEs
VUFBMkMsU0FBdkJrRixFQUFLbkYsZ0JBSXZEeUcsTUFBU2xFLEdBQXVCLFdBQy9CLE9BQVMsS0FH
VitFLEtBQVEvRSxHQUF1QixTQUFVRSxFQUFjckgsR0FDdEQsT0FBU0EsRUFBUyxLQUduQjJPLEdB
QU14SCxHQUF1QixTQUFVRSxFQUFjckgsRUFBUW9ILEdBQzVELE9BQVNBLEVBQVcsRUFBSUEsRUFB
V3BILEVBQVNvSCxLQUc3Q3dILEtBQVF6SCxHQUF1QixTQUFVRSxFQUFjckgsR0FFdEQsSUFEQSxH
QUFJMUMsR0FBSSxFQUNBQSxFQUFJMEMsRUFBUTFDLEdBQUssRUFDeEIrSixFQUFhM0gsS0FBTXBD
LEVBRXBCLE9BQU8rSixLQUdSd0gsSUFBTzFILEdBQXVCLFNBQVVFLEVBQWNySCxHQUVyRCxJQURB
LEdBQUkxQyxHQUFJLEVBQ0FBLEVBQUkwQyxFQUFRMUMsR0FBSyxFQUN4QitKLEVBQWEzSCxLQUFN
cEMsRUFFcEIsT0FBTytKLEtBR1J5SCxHQUFNM0gsR0FBdUIsU0FBVUUsRUFBY3JILEVBQVFvSCxH
QUU1RCxJQURBLEdBQUk5SixHQUFJOEosRUFBVyxFQUFJQSxFQUFXcEgsRUFBU29ILElBQ2pDOUos
R0FBSyxHQUNkK0osRUFBYTNILEtBQU1wQyxFQUVwQixPQUFPK0osS0FHUjBILEdBQU01SCxHQUF1
QixTQUFVRSxFQUFjckgsRUFBUW9ILEdBRTVELElBREEsR0FBSTlKLEdBQUk4SixFQUFXLEVBQUlB
LEVBQVdwSCxFQUFTb0gsSUFDakM5SixFQUFJMEMsR0FDYnFILEVBQWEzSCxLQUFNcEMsRUFFcEIs
T0FBTytKLE9BS1Y3SixFQUFLNkMsUUFBYSxJQUFJN0MsRUFBSzZDLFFBQVksRUFHdkMsS0FBTS9D
LEtBQU8wUixPQUFPLEVBQU1DLFVBQVUsRUFBTUMsTUFBTSxFQUFNQyxVQUFVLEVBQU1DLE9BQU8s
R0FDNUU1UixFQUFLNkMsUUFBUy9DLEdBQU11SixHQUFtQnZKLEVBRXhDLEtBQU1BLEtBQU8rUixR
QUFRLEVBQU1DLE9BQU8sR0FDakM5UixFQUFLNkMsUUFBUy9DLEdBQU0wSixHQUFvQjFKLEVBSXpD
LFNBQVMyUCxPQUNUQSxHQUFXc0MsVUFBWS9SLEVBQUtnUyxRQUFVaFMsRUFBSzZDLFFBQzNDN0Ms
RUFBS3lQLFdBQWEsR0FBSUEsSUFFdEJ0UCxFQUFXNkYsR0FBTzdGLFNBQVcsU0FBVThGLEVBQVVn
TSxHQUNoRCxHQUFJdEMsR0FBU3BKLEVBQU8yTCxFQUFRNUksRUFDM0I2SSxFQUFPM0wsRUFBUTRM
LEVBQ2ZDLEVBQVM3USxFQUFZeUUsRUFBVyxJQUVqQyxJQUFLb00sRUFDSixNQUFPSixHQUFZLEVB
QUlJLEVBQU9sUSxNQUFPLEVBR3RDZ1EsR0FBUWxNLEVBQ1JPLEtBQ0E0TCxFQUFhcFMsRUFBS2lP
LFNBRWxCLE9BQVFrRSxFQUFRLENBR1R4QyxLQUFZcEosRUFBUXRELEVBQU8yRCxLQUFNdUwsTUFD
akM1TCxJQUVKNEwsRUFBUUEsRUFBTWhRLE1BQU9vRSxFQUFNLEdBQUcvRCxTQUFZMlAsR0FFM0Mz
TCxFQUFPdEUsS0FBT2dRLE9BR2Z2QyxHQUFVLEdBR0pwSixFQUFRckQsRUFBYTBELEtBQU11TCxN
QUNoQ3hDLEVBQVVwSixFQUFNNkIsUUFDaEI4SixFQUFPaFEsTUFDTmdHLE1BQU95SCxFQUVQckcs
S0FBTS9DLEVBQU0sR0FBR2UsUUFBU3RFLEVBQU8sT0FFaENtUCxFQUFRQSxFQUFNaFEsTUFBT3dO
LEVBQVFuTixRQUk5QixLQUFNOEcsSUFBUXRKLEdBQUs0SyxTQUNackUsRUFBUWpELEVBQVdnRyxH
QUFPMUMsS0FBTXVMLEtBQWNDLEVBQVk5SSxNQUM5RC9DLEVBQVE2TCxFQUFZOUksR0FBUS9DLE1B
QzdCb0osRUFBVXBKLEVBQU02QixRQUNoQjhKLEVBQU9oUSxNQUNOZ0csTUFBT3lILEVBQ1ByRyxL
QUFNQSxFQUNOdkksUUFBU3dGLElBRVY0TCxFQUFRQSxFQUFNaFEsTUFBT3dOLEVBQVFuTixRQUkv
QixLQUFNbU4sRUFDTCxNQU9GLE1BQU9zQyxHQUNORSxFQUFNM1AsT0FDTjJQLEVBQ0NuTSxHQUFP
NkcsTUFBTzVHLEdBRWR6RSxFQUFZeUUsRUFBVU8sR0FBU3JFLE1BQU8sR0FHekMsU0FBU3FGLElB
QVkwSyxHQUlwQixJQUhBLEdBQUlwUyxHQUFJLEVBQ1B5QyxFQUFNMlAsRUFBTzFQLE9BQ2J5RCxF
QUFXLEdBQ0puRyxFQUFJeUMsRUFBS3pDLElBQ2hCbUcsR0FBWWlNLEVBQU9wUyxHQUFHb0ksS0FF
dkIsT0FBT2pDLEdBR1IsUUFBU2IsSUFBZXlLLEVBQVN5QyxFQUFZQyxHQUM1QyxHQUFJak4sR0FB
TWdOLEVBQVdoTixJQUNwQmtOLEVBQU9GLEVBQVcvTSxLQUNsQjBDLEVBQU11SyxHQUFRbE4sRUFD
ZG1OLEVBQW1CRixHQUFnQixlQUFSdEssRUFDM0J5SyxFQUFXclIsR0FFWixPQUFPaVIsR0FBV3pF
LE1BRWpCLFNBQVV2TCxFQUFNNEQsRUFBUzRJLEdBQ3hCLE1BQVN4TSxFQUFPQSxFQUFNZ0QsR0FD
ckIsR0FBdUIsSUFBbEJoRCxFQUFLcUQsVUFBa0I4TSxFQUMzQixNQUFPNUMsR0FBU3ZOLEVBQU00
RCxFQUFTNEksRUFHakMsUUFBTyxHQUlSLFNBQVV4TSxFQUFNNEQsRUFBUzRJLEdBQ3hCLEdBQUk2
RCxHQUFVNUQsRUFBYUMsRUFDMUI0RCxHQUFheFIsRUFBU3NSLEVBR3ZCLElBQUs1RCxHQUNKLE1B
QVN4TSxFQUFPQSxFQUFNZ0QsR0FDckIsSUFBdUIsSUFBbEJoRCxFQUFLcUQsVUFBa0I4TSxJQUN0
QjVDLEVBQVN2TixFQUFNNEQsRUFBUzRJLEdBQzVCLE9BQU8sTUFLVixPQUFTeE0sRUFBT0EsRUFB
TWdELEdBQ3JCLEdBQXVCLElBQWxCaEQsRUFBS3FELFVBQWtCOE0sRUFPM0IsR0FOQXpELEVBQWEx
TSxFQUFNckIsS0FBY3FCLEVBQU1yQixPQUl2QzhOLEVBQWNDLEVBQVkxTSxFQUFLZ04sWUFBZU4s
RUFBWTFNLEVBQUtnTixjQUUxRGtELEdBQVFBLElBQVNsUSxFQUFLNkUsU0FBU0MsY0FDbkM5RSxF
QUFPQSxFQUFNZ0QsSUFBU2hELE1BQ2hCLENBQUEsSUFBTXFRLEVBQVc1RCxFQUFhOUcsS0FDcEMw
SyxFQUFVLEtBQVF2UixHQUFXdVIsRUFBVSxLQUFRRCxFQUcvQyxNQUFRRSxHQUFVLEdBQU1ELEVB
QVUsRUFNbEMsSUFIQTVELEVBQWE5RyxHQUFRMkssRUFHZkEsRUFBVSxHQUFNL0MsRUFBU3ZOLEVB
QU00RCxFQUFTNEksR0FDN0MsT0FBTyxFQU1aLE9BQU8sR0FJVixRQUFTK0QsSUFBZ0JDLEdBQ3hC
LE1BQU9BLEdBQVN0USxPQUFTLEVBQ3hCLFNBQVVGLEVBQU00RCxFQUFTNEksR0FDeEIsR0FBSWhQ
LEdBQUlnVCxFQUFTdFEsTUFDakIsT0FBUTFDLElBQ1AsSUFBTWdULEVBQVNoVCxHQUFJd0MsRUFB
TTRELEVBQVM0SSxHQUNqQyxPQUFPLENBR1QsUUFBTyxHQUVSZ0UsRUFBUyxHQUdYLFFBQVNDLElB
QWtCOU0sRUFBVStNLEVBQVU3TSxHQUc5QyxJQUZBLEdBQUlyRyxHQUFJLEVBQ1B5QyxFQUFNeVEs
RUFBU3hRLE9BQ1IxQyxFQUFJeUMsRUFBS3pDLElBQ2hCa0csR0FBUUMsRUFBVStNLEVBQVNsVCxH
QUFJcUcsRUFFaEMsT0FBT0EsR0FHUixRQUFTOE0sSUFBVW5ELEVBQVdvRCxFQUFLdEksRUFBUTFF
LEVBQVM0SSxHQU9uRCxJQU5BLEdBQUl4TSxHQUNINlEsS0FDQXJULEVBQUksRUFDSnlDLEVBQU11
TixFQUFVdE4sT0FDaEI0USxFQUFnQixNQUFQRixFQUVGcFQsRUFBSXlDLEVBQUt6QyxLQUNWd0Ms
RUFBT3dOLEVBQVVoUSxNQUNoQjhLLElBQVVBLEVBQVF0SSxFQUFNNEQsRUFBUzRJLEtBQ3RDcUUs
RUFBYWpSLEtBQU1JLEdBQ2Q4USxHQUNKRixFQUFJaFIsS0FBTXBDLElBTWQsT0FBT3FULEdBR1Is
UUFBU0UsSUFBWXBGLEVBQVdoSSxFQUFVNEosRUFBU3lELEVBQVlDLEVBQVlDLEdBTzFFLE1BTktG
LEtBQWVBLEVBQVlyUyxLQUMvQnFTLEVBQWFELEdBQVlDLElBRXJCQyxJQUFlQSxFQUFZdFMsS0FD
L0JzUyxFQUFhRixHQUFZRSxFQUFZQyxJQUUvQm5MLEdBQWEsU0FBVWpDLEVBQU1ELEVBQVNELEVB
QVM0SSxHQUNyRCxHQUFJMkUsR0FBTTNULEVBQUd3QyxFQUNab1IsS0FDQUMsS0FDQUMsRUFBY3pO
LEVBQVEzRCxPQUd0QndJLEVBQVE1RSxHQUFRMk0sR0FBa0I5TSxHQUFZLElBQUtDLEVBQVFQLFVB
QWFPLEdBQVlBLE1BR3BGMk4sR0FBWTVGLElBQWU3SCxHQUFTSCxFQUVuQytFLEVBREFpSSxHQUFV
akksRUFBTzBJLEVBQVF6RixFQUFXL0gsRUFBUzRJLEdBRzlDZ0YsRUFBYWpFLEVBRVowRCxJQUFn
Qm5OLEVBQU82SCxFQUFZMkYsR0FBZU4sTUFNakRuTixFQUNEME4sQ0FRRixJQUxLaEUsR0FDSkEs
RUFBU2dFLEVBQVdDLEVBQVk1TixFQUFTNEksR0FJckN3RSxFQUFhLENBQ2pCRyxFQUFPUixHQUFV
YSxFQUFZSCxHQUM3QkwsRUFBWUcsS0FBVXZOLEVBQVM0SSxHQUcvQmhQLEVBQUkyVCxFQUFLalIs
TUFDVCxPQUFRMUMsS0FDRHdDLEVBQU9tUixFQUFLM1QsTUFDakJnVSxFQUFZSCxFQUFRN1QsTUFB
UytULEVBQVdGLEVBQVE3VCxJQUFPd0MsSUFLMUQsR0FBSzhELEdBQ0osR0FBS21OLEdBQWN0RixF
QUFZLENBQzlCLEdBQUtzRixFQUFhLENBRWpCRSxLQUNBM1QsRUFBSWdVLEVBQVd0UixNQUNmLE9B
QVExQyxLQUNEd0MsRUFBT3dSLEVBQVdoVSxLQUV2QjJULEVBQUt2UixLQUFPMlIsRUFBVS9ULEdB
QUt3QyxFQUc3QmlSLEdBQVksS0FBT08sS0FBa0JMLEVBQU0zRSxHQUk1Q2hQLEVBQUlnVSxFQUFX
dFIsTUFDZixPQUFRMUMsS0FDRHdDLEVBQU93UixFQUFXaFUsTUFDdEIyVCxFQUFPRixFQUFhblIs
RUFBU2dFLEVBQU05RCxHQUFTb1IsRUFBTzVULFNBRXBEc0csRUFBS3FOLEtBQVV0TixFQUFRc04s
R0FBUW5SLFNBT2xDd1IsR0FBYWIsR0FDWmEsSUFBZTNOLEVBQ2QyTixFQUFXekcsT0FBUXVHLEVB
QWFFLEVBQVd0UixRQUMzQ3NSLEdBRUdQLEVBQ0pBLEVBQVksS0FBTXBOLEVBQVMyTixFQUFZaEYs
R0FFdkM1TSxFQUFLc0QsTUFBT1csRUFBUzJOLEtBTXpCLFFBQVNDLElBQW1CN0IsR0F3QjNCLElB
dkJBLEdBQUk4QixHQUFjbkUsRUFBUzlKLEVBQzFCeEQsRUFBTTJQLEVBQU8xUCxPQUNieVIsRUFB
a0JqVSxFQUFLMk4sU0FBVXVFLEVBQU8sR0FBRzVJLE1BQzNDNEssRUFBbUJELEdBQW1CalUsRUFB
SzJOLFNBQVMsS0FDcEQ3TixFQUFJbVUsRUFBa0IsRUFBSSxFQUcxQkUsRUFBZS9PLEdBQWUsU0FB
VTlDLEdBQ3ZDLE1BQU9BLEtBQVMwUixHQUNkRSxHQUFrQixHQUNyQkUsRUFBa0JoUCxHQUFlLFNB
QVU5QyxHQUMxQyxNQUFPRixHQUFTNFIsRUFBYzFSLE9BQzVCNFIsR0FBa0IsR0FDckJwQixHQUFh
LFNBQVV4USxFQUFNNEQsRUFBUzRJLEdBQ3JDLEdBQUl4QyxJQUFTMkgsSUFBcUJuRixHQUFPNUks
SUFBWTVGLE1BQ25EMFQsRUFBZTlOLEdBQVNQLFNBQ3hCd08sRUFBYzdSLEVBQU00RCxFQUFTNEks
R0FDN0JzRixFQUFpQjlSLEVBQU00RCxFQUFTNEksR0FHbEMsT0FEQWtGLEdBQWUsS0FDUjFILElB
R0R4TSxFQUFJeUMsRUFBS3pDLElBQ2hCLEdBQU0rUCxFQUFVN1AsRUFBSzJOLFNBQVV1RSxFQUFP
cFMsR0FBR3dKLE1BQ3hDd0osR0FBYTFOLEdBQWN5TixHQUFnQkMsR0FBWWpELFFBQ2pELENBSU4s
R0FIQUEsRUFBVTdQLEVBQUs0SyxPQUFRc0gsRUFBT3BTLEdBQUd3SixNQUFPOUQsTUFBTyxLQUFN
ME0sRUFBT3BTLEdBQUdpQixTQUcxRDhPLEVBQVM1TyxHQUFZLENBR3pCLElBREE4RSxJQUFNakcs
RUFDRWlHLEVBQUl4RCxFQUFLd0QsSUFDaEIsR0FBSy9GLEVBQUsyTixTQUFVdUUsRUFBT25NLEdB
QUd1RCxNQUM3QixLQUdGLE9BQU8rSixJQUNOdlQsRUFBSSxHQUFLK1MsR0FBZ0JDLEdBQ3pCaFQs
RUFBSSxHQUFLMEgsR0FFUjBLLEVBQU8vUCxNQUFPLEVBQUdyQyxFQUFJLEdBQUl1VSxRQUFTbk0s
TUFBZ0MsTUFBekJnSyxFQUFRcFMsRUFBSSxHQUFJd0osS0FBZSxJQUFNLE1BQzdFaEMsUUFBU3RF
LEVBQU8sTUFDbEI2TSxFQUNBL1AsRUFBSWlHLEdBQUtnTyxHQUFtQjdCLEVBQU8vUCxNQUFPckMs
RUFBR2lHLElBQzdDQSxFQUFJeEQsR0FBT3dSLEdBQW9CN0IsRUFBU0EsRUFBTy9QLE1BQU80RCxJ
QUN0REEsRUFBSXhELEdBQU9pRixHQUFZMEssSUFHekJZLEVBQVM1USxLQUFNMk4sR0FJakIsTUFB
T2dELElBQWdCQyxHQUd4QixRQUFTd0IsSUFBMEJDLEVBQWlCQyxHQUNuRCxHQUFJQyxHQUFRRCxF
QUFZaFMsT0FBUyxFQUNoQ2tTLEVBQVlILEVBQWdCL1IsT0FBUyxFQUNyQ21TLEVBQWUsU0FBVXZP
LEVBQU1GLEVBQVM0SSxFQUFLM0ksRUFBU3lPLEdBQ3JELEdBQUl0UyxHQUFNeUQsRUFBRzhKLEVB
Q1pnRixFQUFlLEVBQ2YvVSxFQUFJLElBQ0pnUSxFQUFZMUosTUFDWjBPLEtBQ0FDLEVBQWdCelUs
RUFFaEIwSyxFQUFRNUUsR0FBUXNPLEdBQWExVSxFQUFLOEssS0FBVSxJQUFHLElBQUs4SixHQUVw
REksRUFBaUI1VCxHQUE0QixNQUFqQjJULEVBQXdCLEVBQUlFLEtBQUtDLFVBQVksR0FDekUzUyxF
QUFNeUksRUFBTXhJLE1BU2IsS0FQS29TLElBQ0p0VSxFQUFtQjRGLElBQVl4RixHQUFZd0YsR0FB
VzBPLEdBTS9DOVUsSUFBTXlDLEdBQTRCLE9BQXBCRCxFQUFPMEksRUFBTWxMLElBQWFBLElBQU0s
Q0FDckQsR0FBSzRVLEdBQWFwUyxFQUFPLENBQ3hCeUQsRUFBSSxFQUNFRyxHQUFXNUQsRUFBS3FF
LGdCQUFrQmpHLElBQ3ZDRCxFQUFhNkIsR0FDYndNLEdBQU9sTyxFQUVSLE9BQVNpUCxFQUFVMEUs
RUFBZ0J4TyxLQUNsQyxHQUFLOEosRUFBU3ZOLEVBQU00RCxHQUFXeEYsRUFBVW9PLEdBQU8sQ0FD
L0MzSSxFQUFRakUsS0FBTUksRUFDZCxPQUdHc1MsSUFDSnhULEVBQVU0VCxHQUtQUCxLQUVFblMs
R0FBUXVOLEdBQVd2TixJQUN4QnVTLElBSUl6TyxHQUNKMEosRUFBVTVOLEtBQU1JLElBZ0JuQixH
QVRBdVMsR0FBZ0IvVSxFQVNYMlUsR0FBUzNVLElBQU0rVSxFQUFlLENBQ2xDOU8sRUFBSSxDQUNK
LE9BQVM4SixFQUFVMkUsRUFBWXpPLEtBQzlCOEosRUFBU0MsRUFBV2dGLEVBQVk1TyxFQUFTNEks
RUFHMUMsSUFBSzFJLEVBQU8sQ0FFWCxHQUFLeU8sRUFBZSxFQUNuQixNQUFRL1UsSUFDQWdRLEVB
QVVoUSxJQUFNZ1YsRUFBV2hWLEtBQ2pDZ1YsRUFBV2hWLEdBQUtrQyxFQUFJeUQsS0FBTVUsR0FN
N0IyTyxHQUFhN0IsR0FBVTZCLEdBSXhCNVMsRUFBS3NELE1BQU9XLEVBQVMyTyxHQUdoQkYsSUFB
Y3hPLEdBQVEwTyxFQUFXdFMsT0FBUyxHQUM1Q3FTLEVBQWVMLEVBQVloUyxPQUFXLEdBRXhDd0Qs
R0FBT2dILFdBQVk3RyxHQVVyQixNQUxLeU8sS0FDSnhULEVBQVU0VCxFQUNWMVUsRUFBbUJ5VSxH
QUdiakYsRUFHVCxPQUFPMkUsR0FDTnBNLEdBQWNzTSxHQUNkQSxFQUdGdlUsRUFBVTRGLEdBQU81
RixRQUFVLFNBQVU2RixFQUFVTSxHQUM5QyxHQUFJekcsR0FDSDBVLEtBQ0FELEtBQ0FsQyxFQUFT
NVEsRUFBZXdFLEVBQVcsSUFFcEMsS0FBTW9NLEVBQVMsQ0FFUjlMLElBQ0xBLEVBQVFwRyxFQUFV
OEYsSUFFbkJuRyxFQUFJeUcsRUFBTS9ELE1BQ1YsT0FBUTFDLElBQ1B1UyxFQUFTMEIsR0FBbUJ4
TixFQUFNekcsSUFDN0J1UyxFQUFRcFIsR0FDWnVULEVBQVl0UyxLQUFNbVEsR0FFbEJrQyxFQUFn
QnJTLEtBQU1tUSxFQUt4QkEsR0FBUzVRLEVBQWV3RSxFQUFVcU8sR0FBMEJDLEVBQWlCQyxJQUc3
RW5DLEVBQU9wTSxTQUFXQSxFQUVuQixNQUFPb00sSUFZUmhTLEVBQVMyRixHQUFPM0YsT0FBUyxT
QUFVNEYsRUFBVUMsRUFBU0MsRUFBU0MsR0FDOUQsR0FBSXRHLEdBQUdvUyxFQUFRaUQsRUFBTzdM
LEVBQU13QixFQUMzQnNLLEVBQStCLGtCQUFiblAsSUFBMkJBLEVBQzdDTSxHQUFTSCxHQUFRakcs
RUFBVzhGLEVBQVdtUCxFQUFTblAsVUFBWUEsRUFNN0QsSUFKQUUsRUFBVUEsTUFJWSxJQUFqQkks
RUFBTS9ELE9BQWUsQ0FJekIsR0FEQTBQLEVBQVMzTCxFQUFNLEdBQUtBLEVBQU0sR0FBR3BFLE1B
QU8sR0FDL0IrUCxFQUFPMVAsT0FBUyxHQUFrQyxRQUE1QjJTLEVBQVFqRCxFQUFPLElBQUk1SSxN
QUN2QixJQUFyQnBELEVBQVFQLFVBQWtCL0UsR0FBa0JaLEVBQUsyTixTQUFVdUUsRUFBTyxHQUFH
NUksTUFBUyxDQUcvRSxHQURBcEQsR0FBWWxHLEVBQUs4SyxLQUFTLEdBQUdxSyxFQUFNcFUsUUFB
USxHQUFHdUcsUUFBUWxELEVBQVdDLElBQVk2QixRQUFrQixJQUN6RkEsRUFDTCxNQUFPQyxFQUdJ
aVAsS0FDWGxQLEVBQVVBLEVBQVF5QixZQUduQjFCLEVBQVdBLEVBQVM5RCxNQUFPK1AsRUFBTzlK
LFFBQVFGLE1BQU0xRixRQUlqRDFDLEVBQUl3RCxFQUF3QixhQUFFNEQsS0FBTWpCLEdBQWEsRUFB
SWlNLEVBQU8xUCxNQUM1RCxPQUFRMUMsSUFBTSxDQUliLEdBSEFxVixFQUFRakQsRUFBT3BTLEdB
R1ZFLEVBQUsyTixTQUFXckUsRUFBTzZMLEVBQU03TCxNQUNqQyxLQUVELEtBQU13QixFQUFPOUss
RUFBSzhLLEtBQU14QixNQUVqQmxELEVBQU8wRSxFQUNacUssRUFBTXBVLFFBQVEsR0FBR3VHLFFB
QVNsRCxFQUFXQyxJQUNyQ0YsRUFBUytDLEtBQU1nTCxFQUFPLEdBQUc1SSxPQUFVNUIsR0FBYXhC
LEVBQVF5QixhQUFnQnpCLElBQ3BFLENBS0osR0FGQWdNLEVBQU83RSxPQUFRdk4sRUFBRyxHQUNs
Qm1HLEVBQVdHLEVBQUs1RCxRQUFVZ0YsR0FBWTBLLElBQ2hDak0sRUFFTCxNQURBL0QsR0FBS3NE
LE1BQU9XLEVBQVNDLEdBQ2RELENBR1IsU0FlSixPQVBFaVAsR0FBWWhWLEVBQVM2RixFQUFVTSxJ
QUNoQ0gsRUFDQUYsR0FDQ3RGLEVBQ0R1RixHQUNDRCxHQUFXL0IsRUFBUytDLEtBQU1qQixJQUFj
eUIsR0FBYXhCLEVBQVF5QixhQUFnQnpCLEdBRXhFQyxHQU1ScEcsRUFBUW9OLFdBQWFsTSxFQUFR
NkgsTUFBTSxJQUFJc0UsS0FBTTFMLEdBQVkrRixLQUFLLE1BQVF4RyxFQUl0RWxCLEVBQVFtTixt
QkFBcUIxTSxFQUc3QkMsSUFJQVYsRUFBUWdNLGFBQWV4RCxHQUFPLFNBQVVDLEdBRXZDLE1BQTBF
LEdBQW5FQSxFQUFHbUQsd0JBQXlCakwsRUFBUytILGNBQWMsZUFNckRGLEdBQU8sU0FBVUMsR0FF
dEIsTUFEQUEsR0FBRzJDLFVBQVksbUJBQytCLE1BQXZDM0MsRUFBRytFLFdBQVdsRyxhQUFhLFdB
RWxDc0IsR0FBVyx5QkFBMEIsU0FBVXJHLEVBQU1pSCxFQUFNckosR0FDMUQsSUFBTUEsRUFDTCxN
QUFPb0MsR0FBSytFLGFBQWNrQyxFQUE2QixTQUF2QkEsRUFBS25DLGNBQTJCLEVBQUksS0FPakVy
SCxFQUFRNkMsWUFBZTJGLEdBQU8sU0FBVUMsR0FHN0MsTUFGQUEsR0FBRzJDLFVBQVksV0FDZjND
LEVBQUcrRSxXQUFXaEcsYUFBYyxRQUFTLElBQ1ksS0FBMUNpQixFQUFHK0UsV0FBV2xHLGFBQWMs
WUFFbkNzQixHQUFXLFFBQVMsU0FBVXJHLEVBQU1pSCxFQUFNckosR0FDekMsSUFBTUEsR0FBeUMs
VUFBaENvQyxFQUFLNkUsU0FBU0MsY0FDNUIsTUFBTzlFLEdBQUsrUyxlQU9UOU0sR0FBTyxTQUFV
QyxHQUN0QixNQUFzQyxPQUEvQkEsRUFBR25CLGFBQWEsZUFFdkJzQixHQUFXbEcsRUFBVSxTQUFV
SCxFQUFNaUgsRUFBTXJKLEdBQzFDLEdBQUlzTSxFQUNKLEtBQU10TSxFQUNMLE1BQU9vQyxHQUFN
aUgsTUFBVyxFQUFPQSxFQUFLbkMsZUFDakNvRixFQUFNbEssRUFBS3lJLGlCQUFrQnhCLEtBQVdp
RCxFQUFJRSxVQUM3Q0YsRUFBSXRFLE1BQ0wsTUFNSixJQUFJb04sSUFBVXpWLEVBQU9tRyxNQUVy
QkEsSUFBT3VQLFdBQWEsV0FLbkIsTUFKSzFWLEdBQU9tRyxTQUFXQSxLQUN0Qm5HLEVBQU9tRyxP
QUFTc1AsSUFHVnRQLElBR2Usa0JBQVh3UCxTQUF5QkEsT0FBT0MsSUFDM0NELE9BQU8sV0FBYSxN
QUFPeFAsTUFFRSxtQkFBWDBQLFNBQTBCQSxPQUFPQyxRQUNuREQsT0FBT0MsUUFBVTNQLEdBRWpC
bkcsRUFBT21HLE9BQVNBLElBSWJuRyIsImZpbGUiOiJzaXp6bGUubWluLmpzIn0KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9t
b2R1bGVzL2pxdWVyeS9wYWNrYWdlLmpzb24gYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1
bGVzL2pxdWVyeS9wYWNrYWdlLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDQ1Yzk4NDUzZGFlMzc4MTI4ODg1
YTU2YjY5Mzg4MDgxMTkzNzg4ZgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVy
eS9ub2RlX21vZHVsZXMvanF1ZXJ5L3BhY2thZ2UuanNvbgpAQCAtMCwwICsxLDE3MCBAQAorewor
ICAiX2FyZ3MiOiBbCisgICAgWworICAgICAgeworICAgICAgICAicmF3IjogImpxdWVyeUAzLjEu
MSIsCisgICAgICAgICJzY29wZSI6IG51bGwsCisgICAgICAgICJlc2NhcGVkTmFtZSI6ICJqcXVl
cnkiLAorICAgICAgICAibmFtZSI6ICJqcXVlcnkiLAorICAgICAgICAicmF3U3BlYyI6ICIzLjEu
MSIsCisgICAgICAgICJzcGVjIjogIjMuMS4xIiwKKyAgICAgICAgInR5cGUiOiAidmVyc2lvbiIK
KyAgICAgIH0sCisgICAgICAiL1VzZXJzL2FkZHlvL3Byb2plY3RzL3NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkiCisgICAgXQorICBdLAor
ICAiX2Zyb20iOiAianF1ZXJ5QDMuMS4xIiwKKyAgIl9pZCI6ICJqcXVlcnlAMy4xLjEiLAorICAi
X2luQ2FjaGUiOiB0cnVlLAorICAiX2xvY2F0aW9uIjogIi9qcXVlcnkiLAorICAiX25vZGVWZXJz
aW9uIjogIjYuNi4wIiwKKyAgIl9ucG1PcGVyYXRpb25hbEludGVybmFsIjogeworICAgICJob3N0
IjogInBhY2thZ2VzLTEyLXdlc3QuaW50ZXJuYWwubnBtanMuY29tIiwKKyAgICAidG1wIjogInRt
cC9qcXVlcnktMy4xLjEudGd6XzE0NzQ1ODM1NjY5NTdfMC4xNTQ3MzQyMDE5NjIxMjgyOCIKKyAg
fSwKKyAgIl9ucG1Vc2VyIjogeworICAgICJuYW1lIjogInRpbW15d2lsIiwKKyAgICAiZW1haWwi
OiAiNHRpbW15d2lsQGdtYWlsLmNvbSIKKyAgfSwKKyAgIl9ucG1WZXJzaW9uIjogIjMuMTAuMyIs
CisgICJfcGhhbnRvbUNoaWxkcmVuIjoge30sCisgICJfcmVxdWVzdGVkIjogeworICAgICJyYXci
OiAianF1ZXJ5QDMuMS4xIiwKKyAgICAic2NvcGUiOiBudWxsLAorICAgICJlc2NhcGVkTmFtZSI6
ICJqcXVlcnkiLAorICAgICJuYW1lIjogImpxdWVyeSIsCisgICAgInJhd1NwZWMiOiAiMy4xLjEi
LAorICAgICJzcGVjIjogIjMuMS4xIiwKKyAgICAidHlwZSI6ICJ2ZXJzaW9uIgorICB9LAorICAi
X3JlcXVpcmVkQnkiOiBbCisgICAgIiNVU0VSIiwKKyAgICAiLyIKKyAgXSwKKyAgIl9yZXNvbHZl
ZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9qcXVlcnkvLS9qcXVlcnktMy4xLjEudGd6
IiwKKyAgIl9zaGFzdW0iOiAiMzQ3YzFjMjFjN2UwMDQxMTVlMGE0ZGEzMmNlY2UwNDFmYWQzYzhh
MyIsCisgICJfc2hyaW5rd3JhcCI6IG51bGwsCisgICJfc3BlYyI6ICJqcXVlcnlAMy4xLjEiLAor
ICAiX3doZXJlIjogIi9Vc2Vycy9hZGR5by9wcm9qZWN0cy9zcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5IiwKKyAgImF1dGhvciI6IHsKKyAg
ICAibmFtZSI6ICJqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzIiwKKyAg
ICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9qcXVlcnkvanF1ZXJ5L2Jsb2IvMy4xLjEvQVVU
SE9SUy50eHQiCisgIH0sCisgICJidWdzIjogeworICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIu
Y29tL2pxdWVyeS9qcXVlcnkvaXNzdWVzIgorICB9LAorICAiY29tbWl0cGxlYXNlIjogeworICAg
ICJub2hvb2siOiB0cnVlLAorICAgICJjb21wb25lbnRzIjogWworICAgICAgIkRvY3MiLAorICAg
ICAgIlRlc3RzIiwKKyAgICAgICJCdWlsZCIsCisgICAgICAiU3VwcG9ydCIsCisgICAgICAiUmVs
ZWFzZSIsCisgICAgICAiQ29yZSIsCisgICAgICAiQWpheCIsCisgICAgICAiQXR0cmlidXRlcyIs
CisgICAgICAiQ2FsbGJhY2tzIiwKKyAgICAgICJDU1MiLAorICAgICAgIkRhdGEiLAorICAgICAg
IkRlZmVycmVkIiwKKyAgICAgICJEZXByZWNhdGVkIiwKKyAgICAgICJEaW1lbnNpb25zIiwKKyAg
ICAgICJFZmZlY3RzIiwKKyAgICAgICJFdmVudCIsCisgICAgICAiTWFuaXB1bGF0aW9uIiwKKyAg
ICAgICJPZmZzZXQiLAorICAgICAgIlF1ZXVlIiwKKyAgICAgICJTZWxlY3RvciIsCisgICAgICAi
U2VyaWFsaXplIiwKKyAgICAgICJUcmF2ZXJzaW5nIiwKKyAgICAgICJXcmFwIgorICAgIF0sCisg
ICAgIm1hcmtlclBhdHRlcm4iOiAiXigoY2xvc3xmaXh8cmVzb2x2KShlW3NkXXxpbmcpKXwocmVm
cz8pIiwKKyAgICAidGlja2V0UGF0dGVybiI6ICJeKChDbG9zZXN8Rml4ZXMpIChbYS16QS1aXXsy
LH0tKVswLTldKyl8KFJlZnM/IFteI10pIgorICB9LAorICAiZGVwZW5kZW5jaWVzIjoge30sCisg
ICJkZXNjcmlwdGlvbiI6ICJKYXZhU2NyaXB0IGxpYnJhcnkgZm9yIERPTSBvcGVyYXRpb25zIiwK
KyAgImRldkRlcGVuZGVuY2llcyI6IHsKKyAgICAiYmFiZWwtcHJlc2V0LWVzMjAxNSI6ICI2LjYu
MCIsCisgICAgImNvbW1pdHBsZWFzZSI6ICIyLjYuMSIsCisgICAgImNvcmUtanMiOiAiMi4yLjIi
LAorICAgICJjcm9zcy1zcGF3biI6ICIyLjIuMyIsCisgICAgImVzbGludC1jb25maWctanF1ZXJ5
IjogIjEuMC4wIiwKKyAgICAiZ3J1bnQiOiAiMS4wLjEiLAorICAgICJncnVudC1iYWJlbCI6ICI2
LjAuMCIsCisgICAgImdydW50LWNsaSI6ICIxLjIuMCIsCisgICAgImdydW50LWNvbXBhcmUtc2l6
ZSI6ICIwLjQuMiIsCisgICAgImdydW50LWNvbnRyaWItdWdsaWZ5IjogIjEuMC4xIiwKKyAgICAi
Z3J1bnQtY29udHJpYi13YXRjaCI6ICIxLjAuMCIsCisgICAgImdydW50LWVzbGludCI6ICIxOS4w
LjAiLAorICAgICJncnVudC1naXQtYXV0aG9ycyI6ICIzLjIuMCIsCisgICAgImdydW50LWpzb25s
aW50IjogIjEuMC43IiwKKyAgICAiZ3J1bnQtbmV3ZXIiOiAiMS4yLjAiLAorICAgICJncnVudC1u
cG1jb3B5IjogIjAuMS4wIiwKKyAgICAiZ3ppcC1qcyI6ICIwLjMuMiIsCisgICAgImh1c2t5Ijog
IjAuMTEuNCIsCisgICAgImluc2lnaHQiOiAiMC44LjEiLAorICAgICJqc2RvbSI6ICI1LjYuMSIs
CisgICAgImxvYWQtZ3J1bnQtdGFza3MiOiAiMy41LjAiLAorICAgICJuYXRpdmUtcHJvbWlzZS1v
bmx5IjogIjAuOC4xIiwKKyAgICAicHJvbWlzZXMtYXBsdXMtdGVzdHMiOiAiMi4xLjIiLAorICAg
ICJxIjogIjEuNC4xIiwKKyAgICAicXVuaXQtYXNzZXJ0LXN0ZXAiOiAiMS4wLjMiLAorICAgICJx
dW5pdGpzIjogIjEuMjMuMSIsCisgICAgInJlcXVpcmVqcyI6ICIyLjIuMCIsCisgICAgInNpbm9u
IjogIjEuMTcuMyIsCisgICAgInNpenpsZSI6ICIyLjMuMyIsCisgICAgInN0cmlwLWpzb24tY29t
bWVudHMiOiAiMi4wLjEiLAorICAgICJ0ZXN0c3dhcm0iOiAiMS4xLjAiCisgIH0sCisgICJkaXJl
Y3RvcmllcyI6IHt9LAorICAiZGlzdCI6IHsKKyAgICAic2hhc3VtIjogIjM0N2MxYzIxYzdlMDA0
MTE1ZTBhNGRhMzJjZWNlMDQxZmFkM2M4YTMiLAorICAgICJ0YXJiYWxsIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL2pxdWVyeS8tL2pxdWVyeS0zLjEuMS50Z3oiCisgIH0sCisgICJnaXRI
ZWFkIjogIjFiMzBmM2FkNDY2ZWJmMjcxNGQ0N2VkYTM0ZGJkN2ZkZjY4NDlmZTMiLAorICAiaG9t
ZXBhZ2UiOiAiaHR0cHM6Ly9qcXVlcnkuY29tIiwKKyAgImtleXdvcmRzIjogWworICAgICJqcXVl
cnkiLAorICAgICJqYXZhc2NyaXB0IiwKKyAgICAiYnJvd3NlciIsCisgICAgImxpYnJhcnkiCisg
IF0sCisgICJsaWNlbnNlIjogIk1JVCIsCisgICJtYWluIjogImRpc3QvanF1ZXJ5LmpzIiwKKyAg
Im1haW50YWluZXJzIjogWworICAgIHsKKyAgICAgICJuYW1lIjogImRtZXRodmluIiwKKyAgICAg
ICJlbWFpbCI6ICJkYXZlLm1ldGh2aW5AZ21haWwuY29tIgorICAgIH0sCisgICAgeworICAgICAg
Im5hbWUiOiAic2NvdHQuZ29uemFsZXoiLAorICAgICAgImVtYWlsIjogInNjb3R0LmdvbnphbGV6
QGdtYWlsLmNvbSIKKyAgICB9LAorICAgIHsKKyAgICAgICJuYW1lIjogIm1fZ29sIiwKKyAgICAg
ICJlbWFpbCI6ICJtLmdvbGViQGdtYWlsLmNvbSIKKyAgICB9LAorICAgIHsKKyAgICAgICJuYW1l
IjogInRpbW15d2lsIiwKKyAgICAgICJlbWFpbCI6ICJ0aW1teXdpbGxpc25AZ21haWwuY29tIgor
ICAgIH0KKyAgXSwKKyAgIm5hbWUiOiAianF1ZXJ5IiwKKyAgIm9wdGlvbmFsRGVwZW5kZW5jaWVz
Ijoge30sCisgICJyZWFkbWUiOiAiRVJST1I6IE5vIFJFQURNRSBkYXRhIGZvdW5kISIsCisgICJy
ZXBvc2l0b3J5IjogeworICAgICJ0eXBlIjogImdpdCIsCisgICAgInVybCI6ICJnaXQraHR0cHM6
Ly9naXRodWIuY29tL2pxdWVyeS9qcXVlcnkuZ2l0IgorICB9LAorICAic2NyaXB0cyI6IHsKKyAg
ICAiYnVpbGQiOiAibnBtIGluc3RhbGwgJiYgZ3J1bnQiLAorICAgICJjb21taXRtc2ciOiAibm9k
ZSBub2RlX21vZHVsZXMvY29tbWl0cGxlYXNlIiwKKyAgICAicHJlY29tbWl0IjogImdydW50IGxp
bnQ6bmV3ZXIiLAorICAgICJzdGFydCI6ICJncnVudCB3YXRjaCIsCisgICAgInRlc3QiOiAiZ3J1
bnQgJiYgZ3J1bnQgdGVzdDpzbG93IgorICB9LAorICAidGl0bGUiOiAialF1ZXJ5IiwKKyAgInZl
cnNpb24iOiAiMy4xLjEiCit9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9t
b2R1bGVzL2pxdWVyeS9zcmMvYWpheC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVs
ZXMvanF1ZXJ5L3NyYy9hamF4LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU2NjMyZTY5NGVjMzhhMWRiNjJiOWI5
Yzc3ZjM1OGIzZGU2MmM1M2YKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkv
bm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvYWpheC5qcwpAQCAtMCwwICsxLDg1NSBAQAorZGVmaW5l
KCBbCisgICAgIi4vY29yZSIsCisgICAgIi4vdmFyL2RvY3VtZW50IiwKKyAgICAiLi92YXIvcm5v
dGh0bWx3aGl0ZSIsCisgICAgIi4vYWpheC92YXIvbG9jYXRpb24iLAorICAgICIuL2FqYXgvdmFy
L25vbmNlIiwKKyAgICAiLi9hamF4L3Zhci9ycXVlcnkiLAorCisgICAgIi4vY29yZS9pbml0IiwK
KyAgICAiLi9hamF4L3BhcnNlWE1MIiwKKyAgICAiLi9ldmVudC90cmlnZ2VyIiwKKyAgICAiLi9k
ZWZlcnJlZCIsCisgICAgIi4vc2VyaWFsaXplIiAvLyBqUXVlcnkucGFyYW0KK10sIGZ1bmN0aW9u
KCBqUXVlcnksIGRvY3VtZW50LCBybm90aHRtbHdoaXRlLCBsb2NhdGlvbiwgbm9uY2UsIHJxdWVy
eSApIHsKKworInVzZSBzdHJpY3QiOworCit2YXIKKyAgICByMjAgPSAvJTIwL2csCisgICAgcmhh
c2ggPSAvIy4qJC8sCisgICAgcmFudGlDYWNoZSA9IC8oWz8mXSlfPVteJl0qLywKKyAgICByaGVh
ZGVycyA9IC9eKC4qPyk6WyBcdF0qKFteXHJcbl0qKSQvbWcsCisKKyAgICAvLyAjNzY1MywgIzgx
MjUsICM4MTUyOiBsb2NhbCBwcm90b2NvbCBkZXRlY3Rpb24KKyAgICBybG9jYWxQcm90b2NvbCA9
IC9eKD86YWJvdXR8YXBwfGFwcC1zdG9yYWdlfC4rLWV4dGVuc2lvbnxmaWxlfHJlc3x3aWRnZXQp
OiQvLAorICAgIHJub0NvbnRlbnQgPSAvXig/OkdFVHxIRUFEKSQvLAorICAgIHJwcm90b2NvbCA9
IC9eXC9cLy8sCisKKyAgICAvKiBQcmVmaWx0ZXJzCisgICAgICogMSkgVGhleSBhcmUgdXNlZnVs
IHRvIGludHJvZHVjZSBjdXN0b20gZGF0YVR5cGVzIChzZWUgYWpheC9qc29ucC5qcyBmb3IgYW4g
ZXhhbXBsZSkKKyAgICAgKiAyKSBUaGVzZSBhcmUgY2FsbGVkOgorICAgICAqICAgIC0gQkVGT1JF
IGFza2luZyBmb3IgYSB0cmFuc3BvcnQKKyAgICAgKiAgICAtIEFGVEVSIHBhcmFtIHNlcmlhbGl6
YXRpb24gKHMuZGF0YSBpcyBhIHN0cmluZyBpZiBzLnByb2Nlc3NEYXRhIGlzIHRydWUpCisgICAg
ICogMykga2V5IGlzIHRoZSBkYXRhVHlwZQorICAgICAqIDQpIHRoZSBjYXRjaGFsbCBzeW1ib2wg
IioiIGNhbiBiZSB1c2VkCisgICAgICogNSkgZXhlY3V0aW9uIHdpbGwgc3RhcnQgd2l0aCB0cmFu
c3BvcnQgZGF0YVR5cGUgYW5kIFRIRU4gY29udGludWUgZG93biB0byAiKiIgaWYgbmVlZGVkCisg
ICAgICovCisgICAgcHJlZmlsdGVycyA9IHt9LAorCisgICAgLyogVHJhbnNwb3J0cyBiaW5kaW5n
cworICAgICAqIDEpIGtleSBpcyB0aGUgZGF0YVR5cGUKKyAgICAgKiAyKSB0aGUgY2F0Y2hhbGwg
c3ltYm9sICIqIiBjYW4gYmUgdXNlZAorICAgICAqIDMpIHNlbGVjdGlvbiB3aWxsIHN0YXJ0IHdp
dGggdHJhbnNwb3J0IGRhdGFUeXBlIGFuZCBUSEVOIGdvIHRvICIqIiBpZiBuZWVkZWQKKyAgICAg
Ki8KKyAgICB0cmFuc3BvcnRzID0ge30sCisKKyAgICAvLyBBdm9pZCBjb21tZW50LXByb2xvZyBj
aGFyIHNlcXVlbmNlICgjMTAwOTgpOyBtdXN0IGFwcGVhc2UgbGludCBhbmQgZXZhZGUgY29tcHJl
c3Npb24KKyAgICBhbGxUeXBlcyA9ICIqLyIuY29uY2F0KCAiKiIgKSwKKworICAgIC8vIEFuY2hv
ciB0YWcgZm9yIHBhcnNpbmcgdGhlIGRvY3VtZW50IG9yaWdpbgorICAgIG9yaWdpbkFuY2hvciA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoICJhIiApOworICAgIG9yaWdpbkFuY2hvci5ocmVmID0g
bG9jYXRpb24uaHJlZjsKKworLy8gQmFzZSAiY29uc3RydWN0b3IiIGZvciBqUXVlcnkuYWpheFBy
ZWZpbHRlciBhbmQgalF1ZXJ5LmFqYXhUcmFuc3BvcnQKK2Z1bmN0aW9uIGFkZFRvUHJlZmlsdGVy
c09yVHJhbnNwb3J0cyggc3RydWN0dXJlICkgeworCisgICAgLy8gZGF0YVR5cGVFeHByZXNzaW9u
IGlzIG9wdGlvbmFsIGFuZCBkZWZhdWx0cyB0byAiKiIKKyAgICByZXR1cm4gZnVuY3Rpb24oIGRh
dGFUeXBlRXhwcmVzc2lvbiwgZnVuYyApIHsKKworICAgICAgICBpZiAoIHR5cGVvZiBkYXRhVHlw
ZUV4cHJlc3Npb24gIT09ICJzdHJpbmciICkgeworICAgICAgICAgICAgZnVuYyA9IGRhdGFUeXBl
RXhwcmVzc2lvbjsKKyAgICAgICAgICAgIGRhdGFUeXBlRXhwcmVzc2lvbiA9ICIqIjsKKyAgICAg
ICAgfQorCisgICAgICAgIHZhciBkYXRhVHlwZSwKKyAgICAgICAgICAgIGkgPSAwLAorICAgICAg
ICAgICAgZGF0YVR5cGVzID0gZGF0YVR5cGVFeHByZXNzaW9uLnRvTG93ZXJDYXNlKCkubWF0Y2go
IHJub3RodG1sd2hpdGUgKSB8fCBbXTsKKworICAgICAgICBpZiAoIGpRdWVyeS5pc0Z1bmN0aW9u
KCBmdW5jICkgKSB7CisKKyAgICAgICAgICAgIC8vIEZvciBlYWNoIGRhdGFUeXBlIGluIHRoZSBk
YXRhVHlwZUV4cHJlc3Npb24KKyAgICAgICAgICAgIHdoaWxlICggKCBkYXRhVHlwZSA9IGRhdGFU
eXBlc1sgaSsrIF0gKSApIHsKKworICAgICAgICAgICAgICAgIC8vIFByZXBlbmQgaWYgcmVxdWVz
dGVkCisgICAgICAgICAgICAgICAgaWYgKCBkYXRhVHlwZVsgMCBdID09PSAiKyIgKSB7CisgICAg
ICAgICAgICAgICAgICAgIGRhdGFUeXBlID0gZGF0YVR5cGUuc2xpY2UoIDEgKSB8fCAiKiI7Cisg
ICAgICAgICAgICAgICAgICAgICggc3RydWN0dXJlWyBkYXRhVHlwZSBdID0gc3RydWN0dXJlWyBk
YXRhVHlwZSBdIHx8IFtdICkudW5zaGlmdCggZnVuYyApOworCisgICAgICAgICAgICAgICAgLy8g
T3RoZXJ3aXNlIGFwcGVuZAorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgICAgICggc3RydWN0dXJlWyBkYXRhVHlwZSBdID0gc3RydWN0dXJlWyBkYXRhVHlwZSBdIHx8
IFtdICkucHVzaCggZnVuYyApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH07Cit9CisKKy8vIEJhc2UgaW5zcGVjdGlvbiBmdW5jdGlvbiBmb3IgcHJl
ZmlsdGVycyBhbmQgdHJhbnNwb3J0cworZnVuY3Rpb24gaW5zcGVjdFByZWZpbHRlcnNPclRyYW5z
cG9ydHMoIHN0cnVjdHVyZSwgb3B0aW9ucywgb3JpZ2luYWxPcHRpb25zLCBqcVhIUiApIHsKKwor
ICAgIHZhciBpbnNwZWN0ZWQgPSB7fSwKKyAgICAgICAgc2Vla2luZ1RyYW5zcG9ydCA9ICggc3Ry
dWN0dXJlID09PSB0cmFuc3BvcnRzICk7CisKKyAgICBmdW5jdGlvbiBpbnNwZWN0KCBkYXRhVHlw
ZSApIHsKKyAgICAgICAgdmFyIHNlbGVjdGVkOworICAgICAgICBpbnNwZWN0ZWRbIGRhdGFUeXBl
IF0gPSB0cnVlOworICAgICAgICBqUXVlcnkuZWFjaCggc3RydWN0dXJlWyBkYXRhVHlwZSBdIHx8
IFtdLCBmdW5jdGlvbiggXywgcHJlZmlsdGVyT3JGYWN0b3J5ICkgeworICAgICAgICAgICAgdmFy
IGRhdGFUeXBlT3JUcmFuc3BvcnQgPSBwcmVmaWx0ZXJPckZhY3RvcnkoIG9wdGlvbnMsIG9yaWdp
bmFsT3B0aW9ucywganFYSFIgKTsKKyAgICAgICAgICAgIGlmICggdHlwZW9mIGRhdGFUeXBlT3JU
cmFuc3BvcnQgPT09ICJzdHJpbmciICYmCisgICAgICAgICAgICAgICAgIXNlZWtpbmdUcmFuc3Bv
cnQgJiYgIWluc3BlY3RlZFsgZGF0YVR5cGVPclRyYW5zcG9ydCBdICkgeworCisgICAgICAgICAg
ICAgICAgb3B0aW9ucy5kYXRhVHlwZXMudW5zaGlmdCggZGF0YVR5cGVPclRyYW5zcG9ydCApOwor
ICAgICAgICAgICAgICAgIGluc3BlY3QoIGRhdGFUeXBlT3JUcmFuc3BvcnQgKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9IGVsc2UgaWYgKCBzZWVraW5nVHJh
bnNwb3J0ICkgeworICAgICAgICAgICAgICAgIHJldHVybiAhKCBzZWxlY3RlZCA9IGRhdGFUeXBl
T3JUcmFuc3BvcnQgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSApOworICAgICAgICByZXR1
cm4gc2VsZWN0ZWQ7CisgICAgfQorCisgICAgcmV0dXJuIGluc3BlY3QoIG9wdGlvbnMuZGF0YVR5
cGVzWyAwIF0gKSB8fCAhaW5zcGVjdGVkWyAiKiIgXSAmJiBpbnNwZWN0KCAiKiIgKTsKK30KKwor
Ly8gQSBzcGVjaWFsIGV4dGVuZCBmb3IgYWpheCBvcHRpb25zCisvLyB0aGF0IHRha2VzICJmbGF0
IiBvcHRpb25zIChub3QgdG8gYmUgZGVlcCBleHRlbmRlZCkKKy8vIEZpeGVzICM5ODg3CitmdW5j
dGlvbiBhamF4RXh0ZW5kKCB0YXJnZXQsIHNyYyApIHsKKyAgICB2YXIga2V5LCBkZWVwLAorICAg
ICAgICBmbGF0T3B0aW9ucyA9IGpRdWVyeS5hamF4U2V0dGluZ3MuZmxhdE9wdGlvbnMgfHwge307
CisKKyAgICBmb3IgKCBrZXkgaW4gc3JjICkgeworICAgICAgICBpZiAoIHNyY1sga2V5IF0gIT09
IHVuZGVmaW5lZCApIHsKKyAgICAgICAgICAgICggZmxhdE9wdGlvbnNbIGtleSBdID8gdGFyZ2V0
IDogKCBkZWVwIHx8ICggZGVlcCA9IHt9ICkgKSApWyBrZXkgXSA9IHNyY1sga2V5IF07CisgICAg
ICAgIH0KKyAgICB9CisgICAgaWYgKCBkZWVwICkgeworICAgICAgICBqUXVlcnkuZXh0ZW5kKCB0
cnVlLCB0YXJnZXQsIGRlZXAgKTsKKyAgICB9CisKKyAgICByZXR1cm4gdGFyZ2V0OworfQorCisv
KiBIYW5kbGVzIHJlc3BvbnNlcyB0byBhbiBhamF4IHJlcXVlc3Q6CisgKiAtIGZpbmRzIHRoZSBy
aWdodCBkYXRhVHlwZSAobWVkaWF0ZXMgYmV0d2VlbiBjb250ZW50LXR5cGUgYW5kIGV4cGVjdGVk
IGRhdGFUeXBlKQorICogLSByZXR1cm5zIHRoZSBjb3JyZXNwb25kaW5nIHJlc3BvbnNlCisgKi8K
K2Z1bmN0aW9uIGFqYXhIYW5kbGVSZXNwb25zZXMoIHMsIGpxWEhSLCByZXNwb25zZXMgKSB7CisK
KyAgICB2YXIgY3QsIHR5cGUsIGZpbmFsRGF0YVR5cGUsIGZpcnN0RGF0YVR5cGUsCisgICAgICAg
IGNvbnRlbnRzID0gcy5jb250ZW50cywKKyAgICAgICAgZGF0YVR5cGVzID0gcy5kYXRhVHlwZXM7
CisKKyAgICAvLyBSZW1vdmUgYXV0byBkYXRhVHlwZSBhbmQgZ2V0IGNvbnRlbnQtdHlwZSBpbiB0
aGUgcHJvY2VzcworICAgIHdoaWxlICggZGF0YVR5cGVzWyAwIF0gPT09ICIqIiApIHsKKyAgICAg
ICAgZGF0YVR5cGVzLnNoaWZ0KCk7CisgICAgICAgIGlmICggY3QgPT09IHVuZGVmaW5lZCApIHsK
KyAgICAgICAgICAgIGN0ID0gcy5taW1lVHlwZSB8fCBqcVhIUi5nZXRSZXNwb25zZUhlYWRlcigg
IkNvbnRlbnQtVHlwZSIgKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIENoZWNrIGlmIHdl
J3JlIGRlYWxpbmcgd2l0aCBhIGtub3duIGNvbnRlbnQtdHlwZQorICAgIGlmICggY3QgKSB7Cisg
ICAgICAgIGZvciAoIHR5cGUgaW4gY29udGVudHMgKSB7CisgICAgICAgICAgICBpZiAoIGNvbnRl
bnRzWyB0eXBlIF0gJiYgY29udGVudHNbIHR5cGUgXS50ZXN0KCBjdCApICkgeworICAgICAgICAg
ICAgICAgIGRhdGFUeXBlcy51bnNoaWZ0KCB0eXBlICk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBDaGVjayB0byBzZWUg
aWYgd2UgaGF2ZSBhIHJlc3BvbnNlIGZvciB0aGUgZXhwZWN0ZWQgZGF0YVR5cGUKKyAgICBpZiAo
IGRhdGFUeXBlc1sgMCBdIGluIHJlc3BvbnNlcyApIHsKKyAgICAgICAgZmluYWxEYXRhVHlwZSA9
IGRhdGFUeXBlc1sgMCBdOworICAgIH0gZWxzZSB7CisKKyAgICAgICAgLy8gVHJ5IGNvbnZlcnRp
YmxlIGRhdGFUeXBlcworICAgICAgICBmb3IgKCB0eXBlIGluIHJlc3BvbnNlcyApIHsKKyAgICAg
ICAgICAgIGlmICggIWRhdGFUeXBlc1sgMCBdIHx8IHMuY29udmVydGVyc1sgdHlwZSArICIgIiAr
IGRhdGFUeXBlc1sgMCBdIF0gKSB7CisgICAgICAgICAgICAgICAgZmluYWxEYXRhVHlwZSA9IHR5
cGU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBp
ZiAoICFmaXJzdERhdGFUeXBlICkgeworICAgICAgICAgICAgICAgIGZpcnN0RGF0YVR5cGUgPSB0
eXBlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gT3IganVzdCB1c2Ug
Zmlyc3Qgb25lCisgICAgICAgIGZpbmFsRGF0YVR5cGUgPSBmaW5hbERhdGFUeXBlIHx8IGZpcnN0
RGF0YVR5cGU7CisgICAgfQorCisgICAgLy8gSWYgd2UgZm91bmQgYSBkYXRhVHlwZQorICAgIC8v
IFdlIGFkZCB0aGUgZGF0YVR5cGUgdG8gdGhlIGxpc3QgaWYgbmVlZGVkCisgICAgLy8gYW5kIHJl
dHVybiB0aGUgY29ycmVzcG9uZGluZyByZXNwb25zZQorICAgIGlmICggZmluYWxEYXRhVHlwZSAp
IHsKKyAgICAgICAgaWYgKCBmaW5hbERhdGFUeXBlICE9PSBkYXRhVHlwZXNbIDAgXSApIHsKKyAg
ICAgICAgICAgIGRhdGFUeXBlcy51bnNoaWZ0KCBmaW5hbERhdGFUeXBlICk7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIHJlc3BvbnNlc1sgZmluYWxEYXRhVHlwZSBdOworICAgIH0KK30KKwor
LyogQ2hhaW4gY29udmVyc2lvbnMgZ2l2ZW4gdGhlIHJlcXVlc3QgYW5kIHRoZSBvcmlnaW5hbCBy
ZXNwb25zZQorICogQWxzbyBzZXRzIHRoZSByZXNwb25zZVhYWCBmaWVsZHMgb24gdGhlIGpxWEhS
IGluc3RhbmNlCisgKi8KK2Z1bmN0aW9uIGFqYXhDb252ZXJ0KCBzLCByZXNwb25zZSwganFYSFIs
IGlzU3VjY2VzcyApIHsKKyAgICB2YXIgY29udjIsIGN1cnJlbnQsIGNvbnYsIHRtcCwgcHJldiwK
KyAgICAgICAgY29udmVydGVycyA9IHt9LAorCisgICAgICAgIC8vIFdvcmsgd2l0aCBhIGNvcHkg
b2YgZGF0YVR5cGVzIGluIGNhc2Ugd2UgbmVlZCB0byBtb2RpZnkgaXQgZm9yIGNvbnZlcnNpb24K
KyAgICAgICAgZGF0YVR5cGVzID0gcy5kYXRhVHlwZXMuc2xpY2UoKTsKKworICAgIC8vIENyZWF0
ZSBjb252ZXJ0ZXJzIG1hcCB3aXRoIGxvd2VyY2FzZWQga2V5cworICAgIGlmICggZGF0YVR5cGVz
WyAxIF0gKSB7CisgICAgICAgIGZvciAoIGNvbnYgaW4gcy5jb252ZXJ0ZXJzICkgeworICAgICAg
ICAgICAgY29udmVydGVyc1sgY29udi50b0xvd2VyQ2FzZSgpIF0gPSBzLmNvbnZlcnRlcnNbIGNv
bnYgXTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGN1cnJlbnQgPSBkYXRhVHlwZXMuc2hpZnQo
KTsKKworICAgIC8vIENvbnZlcnQgdG8gZWFjaCBzZXF1ZW50aWFsIGRhdGFUeXBlCisgICAgd2hp
bGUgKCBjdXJyZW50ICkgeworCisgICAgICAgIGlmICggcy5yZXNwb25zZUZpZWxkc1sgY3VycmVu
dCBdICkgeworICAgICAgICAgICAganFYSFJbIHMucmVzcG9uc2VGaWVsZHNbIGN1cnJlbnQgXSBd
ID0gcmVzcG9uc2U7CisgICAgICAgIH0KKworICAgICAgICAvLyBBcHBseSB0aGUgZGF0YUZpbHRl
ciBpZiBwcm92aWRlZAorICAgICAgICBpZiAoICFwcmV2ICYmIGlzU3VjY2VzcyAmJiBzLmRhdGFG
aWx0ZXIgKSB7CisgICAgICAgICAgICByZXNwb25zZSA9IHMuZGF0YUZpbHRlciggcmVzcG9uc2Us
IHMuZGF0YVR5cGUgKTsKKyAgICAgICAgfQorCisgICAgICAgIHByZXYgPSBjdXJyZW50OworICAg
ICAgICBjdXJyZW50ID0gZGF0YVR5cGVzLnNoaWZ0KCk7CisKKyAgICAgICAgaWYgKCBjdXJyZW50
ICkgeworCisgICAgICAgICAgICAvLyBUaGVyZSdzIG9ubHkgd29yayB0byBkbyBpZiBjdXJyZW50
IGRhdGFUeXBlIGlzIG5vbi1hdXRvCisgICAgICAgICAgICBpZiAoIGN1cnJlbnQgPT09ICIqIiAp
IHsKKworICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBwcmV2OworCisgICAgICAgICAgICAvLyBD
b252ZXJ0IHJlc3BvbnNlIGlmIHByZXYgZGF0YVR5cGUgaXMgbm9uLWF1dG8gYW5kIGRpZmZlcnMg
ZnJvbSBjdXJyZW50CisgICAgICAgICAgICB9IGVsc2UgaWYgKCBwcmV2ICE9PSAiKiIgJiYgcHJl
diAhPT0gY3VycmVudCApIHsKKworICAgICAgICAgICAgICAgIC8vIFNlZWsgYSBkaXJlY3QgY29u
dmVydGVyCisgICAgICAgICAgICAgICAgY29udiA9IGNvbnZlcnRlcnNbIHByZXYgKyAiICIgKyBj
dXJyZW50IF0gfHwgY29udmVydGVyc1sgIiogIiArIGN1cnJlbnQgXTsKKworICAgICAgICAgICAg
ICAgIC8vIElmIG5vbmUgZm91bmQsIHNlZWsgYSBwYWlyCisgICAgICAgICAgICAgICAgaWYgKCAh
Y29udiApIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yICggY29udjIgaW4gY29udmVydGVycyAp
IHsKKworICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgY29udjIgb3V0cHV0cyBjdXJyZW50
CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBjb252Mi5zcGxpdCggIiAiICk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoIHRtcFsgMSBdID09PSBjdXJyZW50ICkgeworCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgcHJldiBjYW4gYmUgY29udmVydGVkIHRvIGFj
Y2VwdGVkIGlucHV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udiA9IGNvbnZlcnRl
cnNbIHByZXYgKyAiICIgKyB0bXBbIDAgXSBdIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnZlcnRlcnNbICIqICIgKyB0bXBbIDAgXSBdOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICggY29udiApIHsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBDb25kZW5zZSBlcXVpdmFsZW5jZSBjb252ZXJ0ZXJzCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICggY29udiA9PT0gdHJ1ZSApIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnYgPSBjb252ZXJ0ZXJzWyBjb252MiBdOworCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgaW5zZXJ0IHRoZSBpbnRlcm1lZGlh
dGUgZGF0YVR5cGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgg
Y29udmVydGVyc1sgY29udjIgXSAhPT0gdHJ1ZSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGN1cnJlbnQgPSB0bXBbIDAgXTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRhdGFUeXBlcy51bnNoaWZ0KCB0bXBbIDEgXSApOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgIC8vIEFwcGx5IGNvbnZlcnRlciAoaWYgbm90IGFuIGVxdWl2YWxlbmNlKQorICAg
ICAgICAgICAgICAgIGlmICggY29udiAhPT0gdHJ1ZSApIHsKKworICAgICAgICAgICAgICAgICAg
ICAvLyBVbmxlc3MgZXJyb3JzIGFyZSBhbGxvd2VkIHRvIGJ1YmJsZSwgY2F0Y2ggYW5kIHJldHVy
biB0aGVtCisgICAgICAgICAgICAgICAgICAgIGlmICggY29udiAmJiBzLnRocm93cyApIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gY29udiggcmVzcG9uc2UgKTsKKyAgICAg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBjb252KCByZXNwb25zZSApOwor
ICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoIGUgKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rh
dGU6ICJwYXJzZXJlcnJvciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9y
OiBjb252ID8gZSA6ICJObyBjb252ZXJzaW9uIGZyb20gIiArIHByZXYgKyAiIHRvICIgKyBjdXJy
ZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiB7IHN0YXRlOiAic3VjY2VzcyIs
IGRhdGE6IHJlc3BvbnNlIH07Cit9CisKK2pRdWVyeS5leHRlbmQoIHsKKworICAgIC8vIENvdW50
ZXIgZm9yIGhvbGRpbmcgdGhlIG51bWJlciBvZiBhY3RpdmUgcXVlcmllcworICAgIGFjdGl2ZTog
MCwKKworICAgIC8vIExhc3QtTW9kaWZpZWQgaGVhZGVyIGNhY2hlIGZvciBuZXh0IHJlcXVlc3QK
KyAgICBsYXN0TW9kaWZpZWQ6IHt9LAorICAgIGV0YWc6IHt9LAorCisgICAgYWpheFNldHRpbmdz
OiB7CisgICAgICAgIHVybDogbG9jYXRpb24uaHJlZiwKKyAgICAgICAgdHlwZTogIkdFVCIsCisg
ICAgICAgIGlzTG9jYWw6IHJsb2NhbFByb3RvY29sLnRlc3QoIGxvY2F0aW9uLnByb3RvY29sICks
CisgICAgICAgIGdsb2JhbDogdHJ1ZSwKKyAgICAgICAgcHJvY2Vzc0RhdGE6IHRydWUsCisgICAg
ICAgIGFzeW5jOiB0cnVlLAorICAgICAgICBjb250ZW50VHlwZTogImFwcGxpY2F0aW9uL3gtd3d3
LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD1VVEYtOCIsCisKKyAgICAgICAgLyoKKyAgICAgICAg
dGltZW91dDogMCwKKyAgICAgICAgZGF0YTogbnVsbCwKKyAgICAgICAgZGF0YVR5cGU6IG51bGws
CisgICAgICAgIHVzZXJuYW1lOiBudWxsLAorICAgICAgICBwYXNzd29yZDogbnVsbCwKKyAgICAg
ICAgY2FjaGU6IG51bGwsCisgICAgICAgIHRocm93czogZmFsc2UsCisgICAgICAgIHRyYWRpdGlv
bmFsOiBmYWxzZSwKKyAgICAgICAgaGVhZGVyczoge30sCisgICAgICAgICovCisKKyAgICAgICAg
YWNjZXB0czogeworICAgICAgICAgICAgIioiOiBhbGxUeXBlcywKKyAgICAgICAgICAgIHRleHQ6
ICJ0ZXh0L3BsYWluIiwKKyAgICAgICAgICAgIGh0bWw6ICJ0ZXh0L2h0bWwiLAorICAgICAgICAg
ICAgeG1sOiAiYXBwbGljYXRpb24veG1sLCB0ZXh0L3htbCIsCisgICAgICAgICAgICBqc29uOiAi
YXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZhc2NyaXB0IgorICAgICAgICB9LAorCisgICAgICAg
IGNvbnRlbnRzOiB7CisgICAgICAgICAgICB4bWw6IC9cYnhtbFxiLywKKyAgICAgICAgICAgIGh0
bWw6IC9cYmh0bWwvLAorICAgICAgICAgICAganNvbjogL1xianNvblxiLworICAgICAgICB9LAor
CisgICAgICAgIHJlc3BvbnNlRmllbGRzOiB7CisgICAgICAgICAgICB4bWw6ICJyZXNwb25zZVhN
TCIsCisgICAgICAgICAgICB0ZXh0OiAicmVzcG9uc2VUZXh0IiwKKyAgICAgICAgICAgIGpzb246
ICJyZXNwb25zZUpTT04iCisgICAgICAgIH0sCisKKyAgICAgICAgLy8gRGF0YSBjb252ZXJ0ZXJz
CisgICAgICAgIC8vIEtleXMgc2VwYXJhdGUgc291cmNlIChvciBjYXRjaGFsbCAiKiIpIGFuZCBk
ZXN0aW5hdGlvbiB0eXBlcyB3aXRoIGEgc2luZ2xlIHNwYWNlCisgICAgICAgIGNvbnZlcnRlcnM6
IHsKKworICAgICAgICAgICAgLy8gQ29udmVydCBhbnl0aGluZyB0byB0ZXh0CisgICAgICAgICAg
ICAiKiB0ZXh0IjogU3RyaW5nLAorCisgICAgICAgICAgICAvLyBUZXh0IHRvIGh0bWwgKHRydWUg
PSBubyB0cmFuc2Zvcm1hdGlvbikKKyAgICAgICAgICAgICJ0ZXh0IGh0bWwiOiB0cnVlLAorCisg
ICAgICAgICAgICAvLyBFdmFsdWF0ZSB0ZXh0IGFzIGEganNvbiBleHByZXNzaW9uCisgICAgICAg
ICAgICAidGV4dCBqc29uIjogSlNPTi5wYXJzZSwKKworICAgICAgICAgICAgLy8gUGFyc2UgdGV4
dCBhcyB4bWwKKyAgICAgICAgICAgICJ0ZXh0IHhtbCI6IGpRdWVyeS5wYXJzZVhNTAorICAgICAg
ICB9LAorCisgICAgICAgIC8vIEZvciBvcHRpb25zIHRoYXQgc2hvdWxkbid0IGJlIGRlZXAgZXh0
ZW5kZWQ6CisgICAgICAgIC8vIHlvdSBjYW4gYWRkIHlvdXIgb3duIGN1c3RvbSBvcHRpb25zIGhl
cmUgaWYKKyAgICAgICAgLy8gYW5kIHdoZW4geW91IGNyZWF0ZSBvbmUgdGhhdCBzaG91bGRuJ3Qg
YmUKKyAgICAgICAgLy8gZGVlcCBleHRlbmRlZCAoc2VlIGFqYXhFeHRlbmQpCisgICAgICAgIGZs
YXRPcHRpb25zOiB7CisgICAgICAgICAgICB1cmw6IHRydWUsCisgICAgICAgICAgICBjb250ZXh0
OiB0cnVlCisgICAgICAgIH0KKyAgICB9LAorCisgICAgLy8gQ3JlYXRlcyBhIGZ1bGwgZmxlZGdl
ZCBzZXR0aW5ncyBvYmplY3QgaW50byB0YXJnZXQKKyAgICAvLyB3aXRoIGJvdGggYWpheFNldHRp
bmdzIGFuZCBzZXR0aW5ncyBmaWVsZHMuCisgICAgLy8gSWYgdGFyZ2V0IGlzIG9taXR0ZWQsIHdy
aXRlcyBpbnRvIGFqYXhTZXR0aW5ncy4KKyAgICBhamF4U2V0dXA6IGZ1bmN0aW9uKCB0YXJnZXQs
IHNldHRpbmdzICkgeworICAgICAgICByZXR1cm4gc2V0dGluZ3MgPworCisgICAgICAgICAgICAv
LyBCdWlsZGluZyBhIHNldHRpbmdzIG9iamVjdAorICAgICAgICAgICAgYWpheEV4dGVuZCggYWph
eEV4dGVuZCggdGFyZ2V0LCBqUXVlcnkuYWpheFNldHRpbmdzICksIHNldHRpbmdzICkgOgorCisg
ICAgICAgICAgICAvLyBFeHRlbmRpbmcgYWpheFNldHRpbmdzCisgICAgICAgICAgICBhamF4RXh0
ZW5kKCBqUXVlcnkuYWpheFNldHRpbmdzLCB0YXJnZXQgKTsKKyAgICB9LAorCisgICAgYWpheFBy
ZWZpbHRlcjogYWRkVG9QcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCBwcmVmaWx0ZXJzICksCisgICAg
YWpheFRyYW5zcG9ydDogYWRkVG9QcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCB0cmFuc3BvcnRzICks
CisKKyAgICAvLyBNYWluIG1ldGhvZAorICAgIGFqYXg6IGZ1bmN0aW9uKCB1cmwsIG9wdGlvbnMg
KSB7CisKKyAgICAgICAgLy8gSWYgdXJsIGlzIGFuIG9iamVjdCwgc2ltdWxhdGUgcHJlLTEuNSBz
aWduYXR1cmUKKyAgICAgICAgaWYgKCB0eXBlb2YgdXJsID09PSAib2JqZWN0IiApIHsKKyAgICAg
ICAgICAgIG9wdGlvbnMgPSB1cmw7CisgICAgICAgICAgICB1cmwgPSB1bmRlZmluZWQ7CisgICAg
ICAgIH0KKworICAgICAgICAvLyBGb3JjZSBvcHRpb25zIHRvIGJlIGFuIG9iamVjdAorICAgICAg
ICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKKworICAgICAgICB2YXIgdHJhbnNwb3J0LAorCisg
ICAgICAgICAgICAvLyBVUkwgd2l0aG91dCBhbnRpLWNhY2hlIHBhcmFtCisgICAgICAgICAgICBj
YWNoZVVSTCwKKworICAgICAgICAgICAgLy8gUmVzcG9uc2UgaGVhZGVycworICAgICAgICAgICAg
cmVzcG9uc2VIZWFkZXJzU3RyaW5nLAorICAgICAgICAgICAgcmVzcG9uc2VIZWFkZXJzLAorCisg
ICAgICAgICAgICAvLyB0aW1lb3V0IGhhbmRsZQorICAgICAgICAgICAgdGltZW91dFRpbWVyLAor
CisgICAgICAgICAgICAvLyBVcmwgY2xlYW51cCB2YXIKKyAgICAgICAgICAgIHVybEFuY2hvciwK
KworICAgICAgICAgICAgLy8gUmVxdWVzdCBzdGF0ZSAoYmVjb21lcyBmYWxzZSB1cG9uIHNlbmQg
YW5kIHRydWUgdXBvbiBjb21wbGV0aW9uKQorICAgICAgICAgICAgY29tcGxldGVkLAorCisgICAg
ICAgICAgICAvLyBUbyBrbm93IGlmIGdsb2JhbCBldmVudHMgYXJlIHRvIGJlIGRpc3BhdGNoZWQK
KyAgICAgICAgICAgIGZpcmVHbG9iYWxzLAorCisgICAgICAgICAgICAvLyBMb29wIHZhcmlhYmxl
CisgICAgICAgICAgICBpLAorCisgICAgICAgICAgICAvLyB1bmNhY2hlZCBwYXJ0IG9mIHRoZSB1
cmwKKyAgICAgICAgICAgIHVuY2FjaGVkLAorCisgICAgICAgICAgICAvLyBDcmVhdGUgdGhlIGZp
bmFsIG9wdGlvbnMgb2JqZWN0CisgICAgICAgICAgICBzID0galF1ZXJ5LmFqYXhTZXR1cCgge30s
IG9wdGlvbnMgKSwKKworICAgICAgICAgICAgLy8gQ2FsbGJhY2tzIGNvbnRleHQKKyAgICAgICAg
ICAgIGNhbGxiYWNrQ29udGV4dCA9IHMuY29udGV4dCB8fCBzLAorCisgICAgICAgICAgICAvLyBD
b250ZXh0IGZvciBnbG9iYWwgZXZlbnRzIGlzIGNhbGxiYWNrQ29udGV4dCBpZiBpdCBpcyBhIERP
TSBub2RlIG9yIGpRdWVyeSBjb2xsZWN0aW9uCisgICAgICAgICAgICBnbG9iYWxFdmVudENvbnRl
eHQgPSBzLmNvbnRleHQgJiYKKyAgICAgICAgICAgICAgICAoIGNhbGxiYWNrQ29udGV4dC5ub2Rl
VHlwZSB8fCBjYWxsYmFja0NvbnRleHQuanF1ZXJ5ICkgPworICAgICAgICAgICAgICAgICAgICBq
UXVlcnkoIGNhbGxiYWNrQ29udGV4dCApIDoKKyAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmV2
ZW50LAorCisgICAgICAgICAgICAvLyBEZWZlcnJlZHMKKyAgICAgICAgICAgIGRlZmVycmVkID0g
alF1ZXJ5LkRlZmVycmVkKCksCisgICAgICAgICAgICBjb21wbGV0ZURlZmVycmVkID0galF1ZXJ5
LkNhbGxiYWNrcyggIm9uY2UgbWVtb3J5IiApLAorCisgICAgICAgICAgICAvLyBTdGF0dXMtZGVw
ZW5kZW50IGNhbGxiYWNrcworICAgICAgICAgICAgc3RhdHVzQ29kZSA9IHMuc3RhdHVzQ29kZSB8
fCB7fSwKKworICAgICAgICAgICAgLy8gSGVhZGVycyAodGhleSBhcmUgc2VudCBhbGwgYXQgb25j
ZSkKKyAgICAgICAgICAgIHJlcXVlc3RIZWFkZXJzID0ge30sCisgICAgICAgICAgICByZXF1ZXN0
SGVhZGVyc05hbWVzID0ge30sCisKKyAgICAgICAgICAgIC8vIERlZmF1bHQgYWJvcnQgbWVzc2Fn
ZQorICAgICAgICAgICAgc3RyQWJvcnQgPSAiY2FuY2VsZWQiLAorCisgICAgICAgICAgICAvLyBG
YWtlIHhocgorICAgICAgICAgICAganFYSFIgPSB7CisgICAgICAgICAgICAgICAgcmVhZHlTdGF0
ZTogMCwKKworICAgICAgICAgICAgICAgIC8vIEJ1aWxkcyBoZWFkZXJzIGhhc2h0YWJsZSBpZiBu
ZWVkZWQKKyAgICAgICAgICAgICAgICBnZXRSZXNwb25zZUhlYWRlcjogZnVuY3Rpb24oIGtleSAp
IHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIG1hdGNoOworICAgICAgICAgICAgICAgICAgICBp
ZiAoIGNvbXBsZXRlZCApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICggIXJlc3BvbnNl
SGVhZGVycyApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZUhlYWRlcnMg
PSB7fTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoICggbWF0Y2ggPSByaGVh
ZGVycy5leGVjKCByZXNwb25zZUhlYWRlcnNTdHJpbmcgKSApICkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXNwb25zZUhlYWRlcnNbIG1hdGNoWyAxIF0udG9Mb3dlckNhc2Uo
KSBdID0gbWF0Y2hbIDIgXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCA9IHJlc3Bv
bnNlSGVhZGVyc1sga2V5LnRvTG93ZXJDYXNlKCkgXTsKKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWF0Y2ggPT0gbnVsbCA/IG51bGwgOiBtYXRjaDsK
KyAgICAgICAgICAgICAgICB9LAorCisgICAgICAgICAgICAgICAgLy8gUmF3IHN0cmluZworICAg
ICAgICAgICAgICAgIGdldEFsbFJlc3BvbnNlSGVhZGVyczogZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBjb21wbGV0ZWQgPyByZXNwb25zZUhlYWRlcnNTdHJpbmcgOiBu
dWxsOworICAgICAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgICAgICAvLyBDYWNoZXMgdGhl
IGhlYWRlcgorICAgICAgICAgICAgICAgIHNldFJlcXVlc3RIZWFkZXI6IGZ1bmN0aW9uKCBuYW1l
LCB2YWx1ZSApIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCBjb21wbGV0ZWQgPT0gbnVsbCAp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSByZXF1ZXN0SGVhZGVyc05hbWVzWyBu
YW1lLnRvTG93ZXJDYXNlKCkgXSA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVz
dEhlYWRlcnNOYW1lc1sgbmFtZS50b0xvd2VyQ2FzZSgpIF0gfHwgbmFtZTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJlcXVlc3RIZWFkZXJzWyBuYW1lIF0gPSB2YWx1ZTsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgICAg
ICAgICB9LAorCisgICAgICAgICAgICAgICAgLy8gT3ZlcnJpZGVzIHJlc3BvbnNlIGNvbnRlbnQt
dHlwZSBoZWFkZXIKKyAgICAgICAgICAgICAgICBvdmVycmlkZU1pbWVUeXBlOiBmdW5jdGlvbigg
dHlwZSApIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCBjb21wbGV0ZWQgPT0gbnVsbCApIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHMubWltZVR5cGUgPSB0eXBlOworICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICAgICAg
ICAgIH0sCisKKyAgICAgICAgICAgICAgICAvLyBTdGF0dXMtZGVwZW5kZW50IGNhbGxiYWNrcwor
ICAgICAgICAgICAgICAgIHN0YXR1c0NvZGU6IGZ1bmN0aW9uKCBtYXAgKSB7CisgICAgICAgICAg
ICAgICAgICAgIHZhciBjb2RlOworICAgICAgICAgICAgICAgICAgICBpZiAoIG1hcCApIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICggY29tcGxldGVkICkgeworCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gRXhlY3V0ZSB0aGUgYXBwcm9wcmlhdGUgY2FsbGJhY2tzCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAganFYSFIuYWx3YXlzKCBtYXBbIGpxWEhSLnN0YXR1cyBd
ICk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gTGF6eS1hZGQgdGhlIG5ldyBjYWxsYmFja3MgaW4gYSB3YXkgdGhhdCBw
cmVzZXJ2ZXMgb2xkIG9uZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKCBjb2Rl
IGluIG1hcCApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzQ29kZVsg
Y29kZSBdID0gWyBzdGF0dXNDb2RlWyBjb2RlIF0sIG1hcFsgY29kZSBdIF07CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICAg
ICAgICAgIH0sCisKKyAgICAgICAgICAgICAgICAvLyBDYW5jZWwgdGhlIHJlcXVlc3QKKyAgICAg
ICAgICAgICAgICBhYm9ydDogZnVuY3Rpb24oIHN0YXR1c1RleHQgKSB7CisgICAgICAgICAgICAg
ICAgICAgIHZhciBmaW5hbFRleHQgPSBzdGF0dXNUZXh0IHx8IHN0ckFib3J0OworICAgICAgICAg
ICAgICAgICAgICBpZiAoIHRyYW5zcG9ydCApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRy
YW5zcG9ydC5hYm9ydCggZmluYWxUZXh0ICk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgZG9uZSggMCwgZmluYWxUZXh0ICk7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiB0aGlzOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH07CisKKyAgICAg
ICAgLy8gQXR0YWNoIGRlZmVycmVkcworICAgICAgICBkZWZlcnJlZC5wcm9taXNlKCBqcVhIUiAp
OworCisgICAgICAgIC8vIEFkZCBwcm90b2NvbCBpZiBub3QgcHJvdmlkZWQgKHByZWZpbHRlcnMg
bWlnaHQgZXhwZWN0IGl0KQorICAgICAgICAvLyBIYW5kbGUgZmFsc3kgdXJsIGluIHRoZSBzZXR0
aW5ncyBvYmplY3QgKCMxMDA5MzogY29uc2lzdGVuY3kgd2l0aCBvbGQgc2lnbmF0dXJlKQorICAg
ICAgICAvLyBXZSBhbHNvIHVzZSB0aGUgdXJsIHBhcmFtZXRlciBpZiBhdmFpbGFibGUKKyAgICAg
ICAgcy51cmwgPSAoICggdXJsIHx8IHMudXJsIHx8IGxvY2F0aW9uLmhyZWYgKSArICIiICkKKyAg
ICAgICAgICAgIC5yZXBsYWNlKCBycHJvdG9jb2wsIGxvY2F0aW9uLnByb3RvY29sICsgIi8vIiAp
OworCisgICAgICAgIC8vIEFsaWFzIG1ldGhvZCBvcHRpb24gdG8gdHlwZSBhcyBwZXIgdGlja2V0
ICMxMjAwNAorICAgICAgICBzLnR5cGUgPSBvcHRpb25zLm1ldGhvZCB8fCBvcHRpb25zLnR5cGUg
fHwgcy5tZXRob2QgfHwgcy50eXBlOworCisgICAgICAgIC8vIEV4dHJhY3QgZGF0YVR5cGVzIGxp
c3QKKyAgICAgICAgcy5kYXRhVHlwZXMgPSAoIHMuZGF0YVR5cGUgfHwgIioiICkudG9Mb3dlckNh
c2UoKS5tYXRjaCggcm5vdGh0bWx3aGl0ZSApIHx8IFsgIiIgXTsKKworICAgICAgICAvLyBBIGNy
b3NzLWRvbWFpbiByZXF1ZXN0IGlzIGluIG9yZGVyIHdoZW4gdGhlIG9yaWdpbiBkb2Vzbid0IG1h
dGNoIHRoZSBjdXJyZW50IG9yaWdpbi4KKyAgICAgICAgaWYgKCBzLmNyb3NzRG9tYWluID09IG51
bGwgKSB7CisgICAgICAgICAgICB1cmxBbmNob3IgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCAi
YSIgKTsKKworICAgICAgICAgICAgLy8gU3VwcG9ydDogSUUgPD04IC0gMTEsIEVkZ2UgMTIgLSAx
MworICAgICAgICAgICAgLy8gSUUgdGhyb3dzIGV4Y2VwdGlvbiBvbiBhY2Nlc3NpbmcgdGhlIGhy
ZWYgcHJvcGVydHkgaWYgdXJsIGlzIG1hbGZvcm1lZCwKKyAgICAgICAgICAgIC8vIGUuZy4gaHR0
cDovL2V4YW1wbGUuY29tOjgweC8KKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAg
dXJsQW5jaG9yLmhyZWYgPSBzLnVybDsKKworICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6IElF
IDw9OCAtIDExIG9ubHkKKyAgICAgICAgICAgICAgICAvLyBBbmNob3IncyBob3N0IHByb3BlcnR5
IGlzbid0IGNvcnJlY3RseSBzZXQgd2hlbiBzLnVybCBpcyByZWxhdGl2ZQorICAgICAgICAgICAg
ICAgIHVybEFuY2hvci5ocmVmID0gdXJsQW5jaG9yLmhyZWY7CisgICAgICAgICAgICAgICAgcy5j
cm9zc0RvbWFpbiA9IG9yaWdpbkFuY2hvci5wcm90b2NvbCArICIvLyIgKyBvcmlnaW5BbmNob3Iu
aG9zdCAhPT0KKyAgICAgICAgICAgICAgICAgICAgdXJsQW5jaG9yLnByb3RvY29sICsgIi8vIiAr
IHVybEFuY2hvci5ob3N0OworICAgICAgICAgICAgfSBjYXRjaCAoIGUgKSB7CisKKyAgICAgICAg
ICAgICAgICAvLyBJZiB0aGVyZSBpcyBhbiBlcnJvciBwYXJzaW5nIHRoZSBVUkwsIGFzc3VtZSBp
dCBpcyBjcm9zc0RvbWFpbiwKKyAgICAgICAgICAgICAgICAvLyBpdCBjYW4gYmUgcmVqZWN0ZWQg
YnkgdGhlIHRyYW5zcG9ydCBpZiBpdCBpcyBpbnZhbGlkCisgICAgICAgICAgICAgICAgcy5jcm9z
c0RvbWFpbiA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBD
b252ZXJ0IGRhdGEgaWYgbm90IGFscmVhZHkgYSBzdHJpbmcKKyAgICAgICAgaWYgKCBzLmRhdGEg
JiYgcy5wcm9jZXNzRGF0YSAmJiB0eXBlb2Ygcy5kYXRhICE9PSAic3RyaW5nIiApIHsKKyAgICAg
ICAgICAgIHMuZGF0YSA9IGpRdWVyeS5wYXJhbSggcy5kYXRhLCBzLnRyYWRpdGlvbmFsICk7Cisg
ICAgICAgIH0KKworICAgICAgICAvLyBBcHBseSBwcmVmaWx0ZXJzCisgICAgICAgIGluc3BlY3RQ
cmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCBwcmVmaWx0ZXJzLCBzLCBvcHRpb25zLCBqcVhIUiApOwor
CisgICAgICAgIC8vIElmIHJlcXVlc3Qgd2FzIGFib3J0ZWQgaW5zaWRlIGEgcHJlZmlsdGVyLCBz
dG9wIHRoZXJlCisgICAgICAgIGlmICggY29tcGxldGVkICkgeworICAgICAgICAgICAgcmV0dXJu
IGpxWEhSOworICAgICAgICB9CisKKyAgICAgICAgLy8gV2UgY2FuIGZpcmUgZ2xvYmFsIGV2ZW50
cyBhcyBvZiBub3cgaWYgYXNrZWQgdG8KKyAgICAgICAgLy8gRG9uJ3QgZmlyZSBldmVudHMgaWYg
alF1ZXJ5LmV2ZW50IGlzIHVuZGVmaW5lZCBpbiBhbiBBTUQtdXNhZ2Ugc2NlbmFyaW8gKCMxNTEx
OCkKKyAgICAgICAgZmlyZUdsb2JhbHMgPSBqUXVlcnkuZXZlbnQgJiYgcy5nbG9iYWw7CisKKyAg
ICAgICAgLy8gV2F0Y2ggZm9yIGEgbmV3IHNldCBvZiByZXF1ZXN0cworICAgICAgICBpZiAoIGZp
cmVHbG9iYWxzICYmIGpRdWVyeS5hY3RpdmUrKyA9PT0gMCApIHsKKyAgICAgICAgICAgIGpRdWVy
eS5ldmVudC50cmlnZ2VyKCAiYWpheFN0YXJ0IiApOworICAgICAgICB9CisKKyAgICAgICAgLy8g
VXBwZXJjYXNlIHRoZSB0eXBlCisgICAgICAgIHMudHlwZSA9IHMudHlwZS50b1VwcGVyQ2FzZSgp
OworCisgICAgICAgIC8vIERldGVybWluZSBpZiByZXF1ZXN0IGhhcyBjb250ZW50CisgICAgICAg
IHMuaGFzQ29udGVudCA9ICFybm9Db250ZW50LnRlc3QoIHMudHlwZSApOworCisgICAgICAgIC8v
IFNhdmUgdGhlIFVSTCBpbiBjYXNlIHdlJ3JlIHRveWluZyB3aXRoIHRoZSBJZi1Nb2RpZmllZC1T
aW5jZQorICAgICAgICAvLyBhbmQvb3IgSWYtTm9uZS1NYXRjaCBoZWFkZXIgbGF0ZXIgb24KKyAg
ICAgICAgLy8gUmVtb3ZlIGhhc2ggdG8gc2ltcGxpZnkgdXJsIG1hbmlwdWxhdGlvbgorICAgICAg
ICBjYWNoZVVSTCA9IHMudXJsLnJlcGxhY2UoIHJoYXNoLCAiIiApOworCisgICAgICAgIC8vIE1v
cmUgb3B0aW9ucyBoYW5kbGluZyBmb3IgcmVxdWVzdHMgd2l0aCBubyBjb250ZW50CisgICAgICAg
IGlmICggIXMuaGFzQ29udGVudCApIHsKKworICAgICAgICAgICAgLy8gUmVtZW1iZXIgdGhlIGhh
c2ggc28gd2UgY2FuIHB1dCBpdCBiYWNrCisgICAgICAgICAgICB1bmNhY2hlZCA9IHMudXJsLnNs
aWNlKCBjYWNoZVVSTC5sZW5ndGggKTsKKworICAgICAgICAgICAgLy8gSWYgZGF0YSBpcyBhdmFp
bGFibGUsIGFwcGVuZCBkYXRhIHRvIHVybAorICAgICAgICAgICAgaWYgKCBzLmRhdGEgKSB7Cisg
ICAgICAgICAgICAgICAgY2FjaGVVUkwgKz0gKCBycXVlcnkudGVzdCggY2FjaGVVUkwgKSA/ICIm
IiA6ICI/IiApICsgcy5kYXRhOworCisgICAgICAgICAgICAgICAgLy8gIzk2ODI6IHJlbW92ZSBk
YXRhIHNvIHRoYXQgaXQncyBub3QgdXNlZCBpbiBhbiBldmVudHVhbCByZXRyeQorICAgICAgICAg
ICAgICAgIGRlbGV0ZSBzLmRhdGE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEFk
ZCBvciB1cGRhdGUgYW50aS1jYWNoZSBwYXJhbSBpZiBuZWVkZWQKKyAgICAgICAgICAgIGlmICgg
cy5jYWNoZSA9PT0gZmFsc2UgKSB7CisgICAgICAgICAgICAgICAgY2FjaGVVUkwgPSBjYWNoZVVS
TC5yZXBsYWNlKCByYW50aUNhY2hlLCAiJDEiICk7CisgICAgICAgICAgICAgICAgdW5jYWNoZWQg
PSAoIHJxdWVyeS50ZXN0KCBjYWNoZVVSTCApID8gIiYiIDogIj8iICkgKyAiXz0iICsgKCBub25j
ZSsrICkgKyB1bmNhY2hlZDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gUHV0IGhh
c2ggYW5kIGFudGktY2FjaGUgb24gdGhlIFVSTCB0aGF0IHdpbGwgYmUgcmVxdWVzdGVkIChnaC0x
NzMyKQorICAgICAgICAgICAgcy51cmwgPSBjYWNoZVVSTCArIHVuY2FjaGVkOworCisgICAgICAg
IC8vIENoYW5nZSAnJTIwJyB0byAnKycgaWYgdGhpcyBpcyBlbmNvZGVkIGZvcm0gYm9keSBjb250
ZW50IChnaC0yNjU4KQorICAgICAgICB9IGVsc2UgaWYgKCBzLmRhdGEgJiYgcy5wcm9jZXNzRGF0
YSAmJgorICAgICAgICAgICAgKCBzLmNvbnRlbnRUeXBlIHx8ICIiICkuaW5kZXhPZiggImFwcGxp
Y2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIgKSA9PT0gMCApIHsKKyAgICAgICAgICAgIHMu
ZGF0YSA9IHMuZGF0YS5yZXBsYWNlKCByMjAsICIrIiApOworICAgICAgICB9CisKKyAgICAgICAg
Ly8gU2V0IHRoZSBJZi1Nb2RpZmllZC1TaW5jZSBhbmQvb3IgSWYtTm9uZS1NYXRjaCBoZWFkZXIs
IGlmIGluIGlmTW9kaWZpZWQgbW9kZS4KKyAgICAgICAgaWYgKCBzLmlmTW9kaWZpZWQgKSB7Cisg
ICAgICAgICAgICBpZiAoIGpRdWVyeS5sYXN0TW9kaWZpZWRbIGNhY2hlVVJMIF0gKSB7CisgICAg
ICAgICAgICAgICAganFYSFIuc2V0UmVxdWVzdEhlYWRlciggIklmLU1vZGlmaWVkLVNpbmNlIiwg
alF1ZXJ5Lmxhc3RNb2RpZmllZFsgY2FjaGVVUkwgXSApOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgaWYgKCBqUXVlcnkuZXRhZ1sgY2FjaGVVUkwgXSApIHsKKyAgICAgICAgICAgICAgICBq
cVhIUi5zZXRSZXF1ZXN0SGVhZGVyKCAiSWYtTm9uZS1NYXRjaCIsIGpRdWVyeS5ldGFnWyBjYWNo
ZVVSTCBdICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBTZXQgdGhl
IGNvcnJlY3QgaGVhZGVyLCBpZiBkYXRhIGlzIGJlaW5nIHNlbnQKKyAgICAgICAgaWYgKCBzLmRh
dGEgJiYgcy5oYXNDb250ZW50ICYmIHMuY29udGVudFR5cGUgIT09IGZhbHNlIHx8IG9wdGlvbnMu
Y29udGVudFR5cGUgKSB7CisgICAgICAgICAgICBqcVhIUi5zZXRSZXF1ZXN0SGVhZGVyKCAiQ29u
dGVudC1UeXBlIiwgcy5jb250ZW50VHlwZSApOworICAgICAgICB9CisKKyAgICAgICAgLy8gU2V0
IHRoZSBBY2NlcHRzIGhlYWRlciBmb3IgdGhlIHNlcnZlciwgZGVwZW5kaW5nIG9uIHRoZSBkYXRh
VHlwZQorICAgICAgICBqcVhIUi5zZXRSZXF1ZXN0SGVhZGVyKAorICAgICAgICAgICAgIkFjY2Vw
dCIsCisgICAgICAgICAgICBzLmRhdGFUeXBlc1sgMCBdICYmIHMuYWNjZXB0c1sgcy5kYXRhVHlw
ZXNbIDAgXSBdID8KKyAgICAgICAgICAgICAgICBzLmFjY2VwdHNbIHMuZGF0YVR5cGVzWyAwIF0g
XSArCisgICAgICAgICAgICAgICAgICAgICggcy5kYXRhVHlwZXNbIDAgXSAhPT0gIioiID8gIiwg
IiArIGFsbFR5cGVzICsgIjsgcT0wLjAxIiA6ICIiICkgOgorICAgICAgICAgICAgICAgIHMuYWNj
ZXB0c1sgIioiIF0KKyAgICAgICAgKTsKKworICAgICAgICAvLyBDaGVjayBmb3IgaGVhZGVycyBv
cHRpb24KKyAgICAgICAgZm9yICggaSBpbiBzLmhlYWRlcnMgKSB7CisgICAgICAgICAgICBqcVhI
Ui5zZXRSZXF1ZXN0SGVhZGVyKCBpLCBzLmhlYWRlcnNbIGkgXSApOworICAgICAgICB9CisKKyAg
ICAgICAgLy8gQWxsb3cgY3VzdG9tIGhlYWRlcnMvbWltZXR5cGVzIGFuZCBlYXJseSBhYm9ydAor
ICAgICAgICBpZiAoIHMuYmVmb3JlU2VuZCAmJgorICAgICAgICAgICAgKCBzLmJlZm9yZVNlbmQu
Y2FsbCggY2FsbGJhY2tDb250ZXh0LCBqcVhIUiwgcyApID09PSBmYWxzZSB8fCBjb21wbGV0ZWQg
KSApIHsKKworICAgICAgICAgICAgLy8gQWJvcnQgaWYgbm90IGRvbmUgYWxyZWFkeSBhbmQgcmV0
dXJuCisgICAgICAgICAgICByZXR1cm4ganFYSFIuYWJvcnQoKTsKKyAgICAgICAgfQorCisgICAg
ICAgIC8vIEFib3J0aW5nIGlzIG5vIGxvbmdlciBhIGNhbmNlbGxhdGlvbgorICAgICAgICBzdHJB
Ym9ydCA9ICJhYm9ydCI7CisKKyAgICAgICAgLy8gSW5zdGFsbCBjYWxsYmFja3Mgb24gZGVmZXJy
ZWRzCisgICAgICAgIGNvbXBsZXRlRGVmZXJyZWQuYWRkKCBzLmNvbXBsZXRlICk7CisgICAgICAg
IGpxWEhSLmRvbmUoIHMuc3VjY2VzcyApOworICAgICAgICBqcVhIUi5mYWlsKCBzLmVycm9yICk7
CisKKyAgICAgICAgLy8gR2V0IHRyYW5zcG9ydAorICAgICAgICB0cmFuc3BvcnQgPSBpbnNwZWN0
UHJlZmlsdGVyc09yVHJhbnNwb3J0cyggdHJhbnNwb3J0cywgcywgb3B0aW9ucywganFYSFIgKTsK
KworICAgICAgICAvLyBJZiBubyB0cmFuc3BvcnQsIHdlIGF1dG8tYWJvcnQKKyAgICAgICAgaWYg
KCAhdHJhbnNwb3J0ICkgeworICAgICAgICAgICAgZG9uZSggLTEsICJObyBUcmFuc3BvcnQiICk7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBqcVhIUi5yZWFkeVN0YXRlID0gMTsKKwor
ICAgICAgICAgICAgLy8gU2VuZCBnbG9iYWwgZXZlbnQKKyAgICAgICAgICAgIGlmICggZmlyZUds
b2JhbHMgKSB7CisgICAgICAgICAgICAgICAgZ2xvYmFsRXZlbnRDb250ZXh0LnRyaWdnZXIoICJh
amF4U2VuZCIsIFsganFYSFIsIHMgXSApOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAv
LyBJZiByZXF1ZXN0IHdhcyBhYm9ydGVkIGluc2lkZSBhamF4U2VuZCwgc3RvcCB0aGVyZQorICAg
ICAgICAgICAgaWYgKCBjb21wbGV0ZWQgKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGpxWEhS
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaW1lb3V0CisgICAgICAgICAgICBp
ZiAoIHMuYXN5bmMgJiYgcy50aW1lb3V0ID4gMCApIHsKKyAgICAgICAgICAgICAgICB0aW1lb3V0
VGltZXIgPSB3aW5kb3cuc2V0VGltZW91dCggZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAg
ICAgIGpxWEhSLmFib3J0KCAidGltZW91dCIgKTsKKyAgICAgICAgICAgICAgICB9LCBzLnRpbWVv
dXQgKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAg
ICBjb21wbGV0ZWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICB0cmFuc3BvcnQuc2VuZCggcmVx
dWVzdEhlYWRlcnMsIGRvbmUgKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKCBlICkgeworCisgICAg
ICAgICAgICAgICAgLy8gUmV0aHJvdyBwb3N0LWNvbXBsZXRpb24gZXhjZXB0aW9ucworICAgICAg
ICAgICAgICAgIGlmICggY29tcGxldGVkICkgeworICAgICAgICAgICAgICAgICAgICB0aHJvdyBl
OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIFByb3BhZ2F0ZSBvdGhl
cnMgYXMgcmVzdWx0cworICAgICAgICAgICAgICAgIGRvbmUoIC0xLCBlICk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBDYWxsYmFjayBmb3Igd2hlbiBldmVyeXRoaW5n
IGlzIGRvbmUKKyAgICAgICAgZnVuY3Rpb24gZG9uZSggc3RhdHVzLCBuYXRpdmVTdGF0dXNUZXh0
LCByZXNwb25zZXMsIGhlYWRlcnMgKSB7CisgICAgICAgICAgICB2YXIgaXNTdWNjZXNzLCBzdWNj
ZXNzLCBlcnJvciwgcmVzcG9uc2UsIG1vZGlmaWVkLAorICAgICAgICAgICAgICAgIHN0YXR1c1Rl
eHQgPSBuYXRpdmVTdGF0dXNUZXh0OworCisgICAgICAgICAgICAvLyBJZ25vcmUgcmVwZWF0IGlu
dm9jYXRpb25zCisgICAgICAgICAgICBpZiAoIGNvbXBsZXRlZCApIHsKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNvbXBsZXRlZCA9IHRydWU7
CisKKyAgICAgICAgICAgIC8vIENsZWFyIHRpbWVvdXQgaWYgaXQgZXhpc3RzCisgICAgICAgICAg
ICBpZiAoIHRpbWVvdXRUaW1lciApIHsKKyAgICAgICAgICAgICAgICB3aW5kb3cuY2xlYXJUaW1l
b3V0KCB0aW1lb3V0VGltZXIgKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gRGVy
ZWZlcmVuY2UgdHJhbnNwb3J0IGZvciBlYXJseSBnYXJiYWdlIGNvbGxlY3Rpb24KKyAgICAgICAg
ICAgIC8vIChubyBtYXR0ZXIgaG93IGxvbmcgdGhlIGpxWEhSIG9iamVjdCB3aWxsIGJlIHVzZWQp
CisgICAgICAgICAgICB0cmFuc3BvcnQgPSB1bmRlZmluZWQ7CisKKyAgICAgICAgICAgIC8vIENh
Y2hlIHJlc3BvbnNlIGhlYWRlcnMKKyAgICAgICAgICAgIHJlc3BvbnNlSGVhZGVyc1N0cmluZyA9
IGhlYWRlcnMgfHwgIiI7CisKKyAgICAgICAgICAgIC8vIFNldCByZWFkeVN0YXRlCisgICAgICAg
ICAgICBqcVhIUi5yZWFkeVN0YXRlID0gc3RhdHVzID4gMCA/IDQgOiAwOworCisgICAgICAgICAg
ICAvLyBEZXRlcm1pbmUgaWYgc3VjY2Vzc2Z1bAorICAgICAgICAgICAgaXNTdWNjZXNzID0gc3Rh
dHVzID49IDIwMCAmJiBzdGF0dXMgPCAzMDAgfHwgc3RhdHVzID09PSAzMDQ7CisKKyAgICAgICAg
ICAgIC8vIEdldCByZXNwb25zZSBkYXRhCisgICAgICAgICAgICBpZiAoIHJlc3BvbnNlcyApIHsK
KyAgICAgICAgICAgICAgICByZXNwb25zZSA9IGFqYXhIYW5kbGVSZXNwb25zZXMoIHMsIGpxWEhS
LCByZXNwb25zZXMgKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gQ29udmVydCBu
byBtYXR0ZXIgd2hhdCAodGhhdCB3YXkgcmVzcG9uc2VYWFggZmllbGRzIGFyZSBhbHdheXMgc2V0
KQorICAgICAgICAgICAgcmVzcG9uc2UgPSBhamF4Q29udmVydCggcywgcmVzcG9uc2UsIGpxWEhS
LCBpc1N1Y2Nlc3MgKTsKKworICAgICAgICAgICAgLy8gSWYgc3VjY2Vzc2Z1bCwgaGFuZGxlIHR5
cGUgY2hhaW5pbmcKKyAgICAgICAgICAgIGlmICggaXNTdWNjZXNzICkgeworCisgICAgICAgICAg
ICAgICAgLy8gU2V0IHRoZSBJZi1Nb2RpZmllZC1TaW5jZSBhbmQvb3IgSWYtTm9uZS1NYXRjaCBo
ZWFkZXIsIGlmIGluIGlmTW9kaWZpZWQgbW9kZS4KKyAgICAgICAgICAgICAgICBpZiAoIHMuaWZN
b2RpZmllZCApIHsKKyAgICAgICAgICAgICAgICAgICAgbW9kaWZpZWQgPSBqcVhIUi5nZXRSZXNw
b25zZUhlYWRlciggIkxhc3QtTW9kaWZpZWQiICk7CisgICAgICAgICAgICAgICAgICAgIGlmICgg
bW9kaWZpZWQgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkubGFzdE1vZGlmaWVk
WyBjYWNoZVVSTCBdID0gbW9kaWZpZWQ7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgbW9kaWZpZWQgPSBqcVhIUi5nZXRSZXNwb25zZUhlYWRlciggImV0YWciICk7
CisgICAgICAgICAgICAgICAgICAgIGlmICggbW9kaWZpZWQgKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBqUXVlcnkuZXRhZ1sgY2FjaGVVUkwgXSA9IG1vZGlmaWVkOworICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gaWYgbm8g
Y29udGVudAorICAgICAgICAgICAgICAgIGlmICggc3RhdHVzID09PSAyMDQgfHwgcy50eXBlID09
PSAiSEVBRCIgKSB7CisgICAgICAgICAgICAgICAgICAgIHN0YXR1c1RleHQgPSAibm9jb250ZW50
IjsKKworICAgICAgICAgICAgICAgIC8vIGlmIG5vdCBtb2RpZmllZAorICAgICAgICAgICAgICAg
IH0gZWxzZSBpZiAoIHN0YXR1cyA9PT0gMzA0ICkgeworICAgICAgICAgICAgICAgICAgICBzdGF0
dXNUZXh0ID0gIm5vdG1vZGlmaWVkIjsKKworICAgICAgICAgICAgICAgIC8vIElmIHdlIGhhdmUg
ZGF0YSwgbGV0J3MgY29udmVydCBpdAorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgICAgIHN0YXR1c1RleHQgPSByZXNwb25zZS5zdGF0ZTsKKyAgICAgICAgICAgICAg
ICAgICAgc3VjY2VzcyA9IHJlc3BvbnNlLmRhdGE7CisgICAgICAgICAgICAgICAgICAgIGVycm9y
ID0gcmVzcG9uc2UuZXJyb3I7CisgICAgICAgICAgICAgICAgICAgIGlzU3VjY2VzcyA9ICFlcnJv
cjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworCisgICAgICAgICAg
ICAgICAgLy8gRXh0cmFjdCBlcnJvciBmcm9tIHN0YXR1c1RleHQgYW5kIG5vcm1hbGl6ZSBmb3Ig
bm9uLWFib3J0cworICAgICAgICAgICAgICAgIGVycm9yID0gc3RhdHVzVGV4dDsKKyAgICAgICAg
ICAgICAgICBpZiAoIHN0YXR1cyB8fCAhc3RhdHVzVGV4dCApIHsKKyAgICAgICAgICAgICAgICAg
ICAgc3RhdHVzVGV4dCA9ICJlcnJvciI7CisgICAgICAgICAgICAgICAgICAgIGlmICggc3RhdHVz
IDwgMCApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IDA7CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIC8vIFNldCBkYXRhIGZvciB0aGUgZmFrZSB4aHIgb2JqZWN0CisgICAgICAgICAgICBqcVhI
Ui5zdGF0dXMgPSBzdGF0dXM7CisgICAgICAgICAgICBqcVhIUi5zdGF0dXNUZXh0ID0gKCBuYXRp
dmVTdGF0dXNUZXh0IHx8IHN0YXR1c1RleHQgKSArICIiOworCisgICAgICAgICAgICAvLyBTdWNj
ZXNzL0Vycm9yCisgICAgICAgICAgICBpZiAoIGlzU3VjY2VzcyApIHsKKyAgICAgICAgICAgICAg
ICBkZWZlcnJlZC5yZXNvbHZlV2l0aCggY2FsbGJhY2tDb250ZXh0LCBbIHN1Y2Nlc3MsIHN0YXR1
c1RleHQsIGpxWEhSIF0gKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
ZGVmZXJyZWQucmVqZWN0V2l0aCggY2FsbGJhY2tDb250ZXh0LCBbIGpxWEhSLCBzdGF0dXNUZXh0
LCBlcnJvciBdICk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFN0YXR1cy1kZXBl
bmRlbnQgY2FsbGJhY2tzCisgICAgICAgICAgICBqcVhIUi5zdGF0dXNDb2RlKCBzdGF0dXNDb2Rl
ICk7CisgICAgICAgICAgICBzdGF0dXNDb2RlID0gdW5kZWZpbmVkOworCisgICAgICAgICAgICBp
ZiAoIGZpcmVHbG9iYWxzICkgeworICAgICAgICAgICAgICAgIGdsb2JhbEV2ZW50Q29udGV4dC50
cmlnZ2VyKCBpc1N1Y2Nlc3MgPyAiYWpheFN1Y2Nlc3MiIDogImFqYXhFcnJvciIsCisgICAgICAg
ICAgICAgICAgICAgIFsganFYSFIsIHMsIGlzU3VjY2VzcyA/IHN1Y2Nlc3MgOiBlcnJvciBdICk7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIENvbXBsZXRlCisgICAgICAgICAgICBj
b21wbGV0ZURlZmVycmVkLmZpcmVXaXRoKCBjYWxsYmFja0NvbnRleHQsIFsganFYSFIsIHN0YXR1
c1RleHQgXSApOworCisgICAgICAgICAgICBpZiAoIGZpcmVHbG9iYWxzICkgeworICAgICAgICAg
ICAgICAgIGdsb2JhbEV2ZW50Q29udGV4dC50cmlnZ2VyKCAiYWpheENvbXBsZXRlIiwgWyBqcVhI
UiwgcyBdICk7CisKKyAgICAgICAgICAgICAgICAvLyBIYW5kbGUgdGhlIGdsb2JhbCBBSkFYIGNv
dW50ZXIKKyAgICAgICAgICAgICAgICBpZiAoICEoIC0talF1ZXJ5LmFjdGl2ZSApICkgeworICAg
ICAgICAgICAgICAgICAgICBqUXVlcnkuZXZlbnQudHJpZ2dlciggImFqYXhTdG9wIiApOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVy
biBqcVhIUjsKKyAgICB9LAorCisgICAgZ2V0SlNPTjogZnVuY3Rpb24oIHVybCwgZGF0YSwgY2Fs
bGJhY2sgKSB7CisgICAgICAgIHJldHVybiBqUXVlcnkuZ2V0KCB1cmwsIGRhdGEsIGNhbGxiYWNr
LCAianNvbiIgKTsKKyAgICB9LAorCisgICAgZ2V0U2NyaXB0OiBmdW5jdGlvbiggdXJsLCBjYWxs
YmFjayApIHsKKyAgICAgICAgcmV0dXJuIGpRdWVyeS5nZXQoIHVybCwgdW5kZWZpbmVkLCBjYWxs
YmFjaywgInNjcmlwdCIgKTsKKyAgICB9Cit9ICk7CisKK2pRdWVyeS5lYWNoKCBbICJnZXQiLCAi
cG9zdCIgXSwgZnVuY3Rpb24oIGksIG1ldGhvZCApIHsKKyAgICBqUXVlcnlbIG1ldGhvZCBdID0g
ZnVuY3Rpb24oIHVybCwgZGF0YSwgY2FsbGJhY2ssIHR5cGUgKSB7CisKKyAgICAgICAgLy8gU2hp
ZnQgYXJndW1lbnRzIGlmIGRhdGEgYXJndW1lbnQgd2FzIG9taXR0ZWQKKyAgICAgICAgaWYgKCBq
UXVlcnkuaXNGdW5jdGlvbiggZGF0YSApICkgeworICAgICAgICAgICAgdHlwZSA9IHR5cGUgfHwg
Y2FsbGJhY2s7CisgICAgICAgICAgICBjYWxsYmFjayA9IGRhdGE7CisgICAgICAgICAgICBkYXRh
ID0gdW5kZWZpbmVkOworICAgICAgICB9CisKKyAgICAgICAgLy8gVGhlIHVybCBjYW4gYmUgYW4g
b3B0aW9ucyBvYmplY3QgKHdoaWNoIHRoZW4gbXVzdCBoYXZlIC51cmwpCisgICAgICAgIHJldHVy
biBqUXVlcnkuYWpheCggalF1ZXJ5LmV4dGVuZCggeworICAgICAgICAgICAgdXJsOiB1cmwsCisg
ICAgICAgICAgICB0eXBlOiBtZXRob2QsCisgICAgICAgICAgICBkYXRhVHlwZTogdHlwZSwKKyAg
ICAgICAgICAgIGRhdGE6IGRhdGEsCisgICAgICAgICAgICBzdWNjZXNzOiBjYWxsYmFjaworICAg
ICAgICB9LCBqUXVlcnkuaXNQbGFpbk9iamVjdCggdXJsICkgJiYgdXJsICkgKTsKKyAgICB9Owor
fSApOworCityZXR1cm4galF1ZXJ5OworfSApOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1
ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2FqYXgvanNvbnAuanMgYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9q
cXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvYWpheC9qc29ucC5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
YzQ3ZTE4MDhlZDEwOTQ5Y2VhMTczNGZiMjI5MmRkMWZhMTMyZDhhCi0tLSAvZGV2L251bGwKKysr
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2FqYXgvanNvbnAu
anMKQEAgLTAsMCArMSwxMDIgQEAKK2RlZmluZSggWworICAgICIuLi9jb3JlIiwKKyAgICAiLi92
YXIvbm9uY2UiLAorICAgICIuL3Zhci9ycXVlcnkiLAorICAgICIuLi9hamF4IgorXSwgZnVuY3Rp
b24oIGpRdWVyeSwgbm9uY2UsIHJxdWVyeSApIHsKKworInVzZSBzdHJpY3QiOworCit2YXIgb2xk
Q2FsbGJhY2tzID0gW10sCisgICAgcmpzb25wID0gLyg9KVw/KD89JnwkKXxcP1w/LzsKKworLy8g
RGVmYXVsdCBqc29ucCBzZXR0aW5ncworalF1ZXJ5LmFqYXhTZXR1cCggeworICAgIGpzb25wOiAi
Y2FsbGJhY2siLAorICAgIGpzb25wQ2FsbGJhY2s6IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIg
Y2FsbGJhY2sgPSBvbGRDYWxsYmFja3MucG9wKCkgfHwgKCBqUXVlcnkuZXhwYW5kbyArICJfIiAr
ICggbm9uY2UrKyApICk7CisgICAgICAgIHRoaXNbIGNhbGxiYWNrIF0gPSB0cnVlOworICAgICAg
ICByZXR1cm4gY2FsbGJhY2s7CisgICAgfQorfSApOworCisvLyBEZXRlY3QsIG5vcm1hbGl6ZSBv
cHRpb25zIGFuZCBpbnN0YWxsIGNhbGxiYWNrcyBmb3IganNvbnAgcmVxdWVzdHMKK2pRdWVyeS5h
amF4UHJlZmlsdGVyKCAianNvbiBqc29ucCIsIGZ1bmN0aW9uKCBzLCBvcmlnaW5hbFNldHRpbmdz
LCBqcVhIUiApIHsKKworICAgIHZhciBjYWxsYmFja05hbWUsIG92ZXJ3cml0dGVuLCByZXNwb25z
ZUNvbnRhaW5lciwKKyAgICAgICAganNvblByb3AgPSBzLmpzb25wICE9PSBmYWxzZSAmJiAoIHJq
c29ucC50ZXN0KCBzLnVybCApID8KKyAgICAgICAgICAgICJ1cmwiIDoKKyAgICAgICAgICAgIHR5
cGVvZiBzLmRhdGEgPT09ICJzdHJpbmciICYmCisgICAgICAgICAgICAgICAgKCBzLmNvbnRlbnRU
eXBlIHx8ICIiICkKKyAgICAgICAgICAgICAgICAgICAgLmluZGV4T2YoICJhcHBsaWNhdGlvbi94
LXd3dy1mb3JtLXVybGVuY29kZWQiICkgPT09IDAgJiYKKyAgICAgICAgICAgICAgICByanNvbnAu
dGVzdCggcy5kYXRhICkgJiYgImRhdGEiCisgICAgICAgICk7CisKKyAgICAvLyBIYW5kbGUgaWZm
IHRoZSBleHBlY3RlZCBkYXRhIHR5cGUgaXMgImpzb25wIiBvciB3ZSBoYXZlIGEgcGFyYW1ldGVy
IHRvIHNldAorICAgIGlmICgganNvblByb3AgfHwgcy5kYXRhVHlwZXNbIDAgXSA9PT0gImpzb25w
IiApIHsKKworICAgICAgICAvLyBHZXQgY2FsbGJhY2sgbmFtZSwgcmVtZW1iZXJpbmcgcHJlZXhp
c3RpbmcgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIGl0CisgICAgICAgIGNhbGxiYWNrTmFtZSA9IHMu
anNvbnBDYWxsYmFjayA9IGpRdWVyeS5pc0Z1bmN0aW9uKCBzLmpzb25wQ2FsbGJhY2sgKSA/Cisg
ICAgICAgICAgICBzLmpzb25wQ2FsbGJhY2soKSA6CisgICAgICAgICAgICBzLmpzb25wQ2FsbGJh
Y2s7CisKKyAgICAgICAgLy8gSW5zZXJ0IGNhbGxiYWNrIGludG8gdXJsIG9yIGZvcm0gZGF0YQor
ICAgICAgICBpZiAoIGpzb25Qcm9wICkgeworICAgICAgICAgICAgc1sganNvblByb3AgXSA9IHNb
IGpzb25Qcm9wIF0ucmVwbGFjZSggcmpzb25wLCAiJDEiICsgY2FsbGJhY2tOYW1lICk7CisgICAg
ICAgIH0gZWxzZSBpZiAoIHMuanNvbnAgIT09IGZhbHNlICkgeworICAgICAgICAgICAgcy51cmwg
Kz0gKCBycXVlcnkudGVzdCggcy51cmwgKSA/ICImIiA6ICI/IiApICsgcy5qc29ucCArICI9IiAr
IGNhbGxiYWNrTmFtZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFVzZSBkYXRhIGNvbnZlcnRl
ciB0byByZXRyaWV2ZSBqc29uIGFmdGVyIHNjcmlwdCBleGVjdXRpb24KKyAgICAgICAgcy5jb252
ZXJ0ZXJzWyAic2NyaXB0IGpzb24iIF0gPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGlmICgg
IXJlc3BvbnNlQ29udGFpbmVyICkgeworICAgICAgICAgICAgICAgIGpRdWVyeS5lcnJvciggY2Fs
bGJhY2tOYW1lICsgIiB3YXMgbm90IGNhbGxlZCIgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIHJldHVybiByZXNwb25zZUNvbnRhaW5lclsgMCBdOworICAgICAgICB9OworCisgICAgICAg
IC8vIEZvcmNlIGpzb24gZGF0YVR5cGUKKyAgICAgICAgcy5kYXRhVHlwZXNbIDAgXSA9ICJqc29u
IjsKKworICAgICAgICAvLyBJbnN0YWxsIGNhbGxiYWNrCisgICAgICAgIG92ZXJ3cml0dGVuID0g
d2luZG93WyBjYWxsYmFja05hbWUgXTsKKyAgICAgICAgd2luZG93WyBjYWxsYmFja05hbWUgXSA9
IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcmVzcG9uc2VDb250YWluZXIgPSBhcmd1bWVudHM7
CisgICAgICAgIH07CisKKyAgICAgICAgLy8gQ2xlYW4tdXAgZnVuY3Rpb24gKGZpcmVzIGFmdGVy
IGNvbnZlcnRlcnMpCisgICAgICAgIGpxWEhSLmFsd2F5cyggZnVuY3Rpb24oKSB7CisKKyAgICAg
ICAgICAgIC8vIElmIHByZXZpb3VzIHZhbHVlIGRpZG4ndCBleGlzdCAtIHJlbW92ZSBpdAorICAg
ICAgICAgICAgaWYgKCBvdmVyd3JpdHRlbiA9PT0gdW5kZWZpbmVkICkgeworICAgICAgICAgICAg
ICAgIGpRdWVyeSggd2luZG93ICkucmVtb3ZlUHJvcCggY2FsbGJhY2tOYW1lICk7CisKKyAgICAg
ICAgICAgIC8vIE90aGVyd2lzZSByZXN0b3JlIHByZWV4aXN0aW5nIHZhbHVlCisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHdpbmRvd1sgY2FsbGJhY2tOYW1lIF0gPSBvdmVy
d3JpdHRlbjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gU2F2ZSBiYWNrIGFzIGZy
ZWUKKyAgICAgICAgICAgIGlmICggc1sgY2FsbGJhY2tOYW1lIF0gKSB7CisKKyAgICAgICAgICAg
ICAgICAvLyBNYWtlIHN1cmUgdGhhdCByZS11c2luZyB0aGUgb3B0aW9ucyBkb2Vzbid0IHNjcmV3
IHRoaW5ncyBhcm91bmQKKyAgICAgICAgICAgICAgICBzLmpzb25wQ2FsbGJhY2sgPSBvcmlnaW5h
bFNldHRpbmdzLmpzb25wQ2FsbGJhY2s7CisKKyAgICAgICAgICAgICAgICAvLyBTYXZlIHRoZSBj
YWxsYmFjayBuYW1lIGZvciBmdXR1cmUgdXNlCisgICAgICAgICAgICAgICAgb2xkQ2FsbGJhY2tz
LnB1c2goIGNhbGxiYWNrTmFtZSApOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBD
YWxsIGlmIGl0IHdhcyBhIGZ1bmN0aW9uIGFuZCB3ZSBoYXZlIGEgcmVzcG9uc2UKKyAgICAgICAg
ICAgIGlmICggcmVzcG9uc2VDb250YWluZXIgJiYgalF1ZXJ5LmlzRnVuY3Rpb24oIG92ZXJ3cml0
dGVuICkgKSB7CisgICAgICAgICAgICAgICAgb3ZlcndyaXR0ZW4oIHJlc3BvbnNlQ29udGFpbmVy
WyAwIF0gKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmVzcG9uc2VDb250YWluZXIg
PSBvdmVyd3JpdHRlbiA9IHVuZGVmaW5lZDsKKyAgICAgICAgfSApOworCisgICAgICAgIC8vIERl
bGVnYXRlIHRvIHNjcmlwdAorICAgICAgICByZXR1cm4gInNjcmlwdCI7CisgICAgfQorfSApOwor
Cit9ICk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVy
eS9zcmMvYWpheC9sb2FkLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVl
cnkvc3JjL2FqYXgvbG9hZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMzZmZjllMTU4MjA5YjkwNWU5NmE5ZTJl
ZTc1ZjZmY2QwNGNiZWI1Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25v
ZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2FqYXgvbG9hZC5qcwpAQCAtMCwwICsxLDc2IEBACitkZWZp
bmUoIFsKKyAgICAiLi4vY29yZSIsCisgICAgIi4uL2NvcmUvc3RyaXBBbmRDb2xsYXBzZSIsCisg
ICAgIi4uL2NvcmUvcGFyc2VIVE1MIiwKKyAgICAiLi4vYWpheCIsCisgICAgIi4uL3RyYXZlcnNp
bmciLAorICAgICIuLi9tYW5pcHVsYXRpb24iLAorICAgICIuLi9zZWxlY3RvciIKK10sIGZ1bmN0
aW9uKCBqUXVlcnksIHN0cmlwQW5kQ29sbGFwc2UgKSB7CisKKyJ1c2Ugc3RyaWN0IjsKKworLyoq
CisgKiBMb2FkIGEgdXJsIGludG8gYSBwYWdlCisgKi8KK2pRdWVyeS5mbi5sb2FkID0gZnVuY3Rp
b24oIHVybCwgcGFyYW1zLCBjYWxsYmFjayApIHsKKyAgICB2YXIgc2VsZWN0b3IsIHR5cGUsIHJl
c3BvbnNlLAorICAgICAgICBzZWxmID0gdGhpcywKKyAgICAgICAgb2ZmID0gdXJsLmluZGV4T2Yo
ICIgIiApOworCisgICAgaWYgKCBvZmYgPiAtMSApIHsKKyAgICAgICAgc2VsZWN0b3IgPSBzdHJp
cEFuZENvbGxhcHNlKCB1cmwuc2xpY2UoIG9mZiApICk7CisgICAgICAgIHVybCA9IHVybC5zbGlj
ZSggMCwgb2ZmICk7CisgICAgfQorCisgICAgLy8gSWYgaXQncyBhIGZ1bmN0aW9uCisgICAgaWYg
KCBqUXVlcnkuaXNGdW5jdGlvbiggcGFyYW1zICkgKSB7CisKKyAgICAgICAgLy8gV2UgYXNzdW1l
IHRoYXQgaXQncyB0aGUgY2FsbGJhY2sKKyAgICAgICAgY2FsbGJhY2sgPSBwYXJhbXM7CisgICAg
ICAgIHBhcmFtcyA9IHVuZGVmaW5lZDsKKworICAgIC8vIE90aGVyd2lzZSwgYnVpbGQgYSBwYXJh
bSBzdHJpbmcKKyAgICB9IGVsc2UgaWYgKCBwYXJhbXMgJiYgdHlwZW9mIHBhcmFtcyA9PT0gIm9i
amVjdCIgKSB7CisgICAgICAgIHR5cGUgPSAiUE9TVCI7CisgICAgfQorCisgICAgLy8gSWYgd2Ug
aGF2ZSBlbGVtZW50cyB0byBtb2RpZnksIG1ha2UgdGhlIHJlcXVlc3QKKyAgICBpZiAoIHNlbGYu
bGVuZ3RoID4gMCApIHsKKyAgICAgICAgalF1ZXJ5LmFqYXgoIHsKKyAgICAgICAgICAgIHVybDog
dXJsLAorCisgICAgICAgICAgICAvLyBJZiAidHlwZSIgdmFyaWFibGUgaXMgdW5kZWZpbmVkLCB0
aGVuICJHRVQiIG1ldGhvZCB3aWxsIGJlIHVzZWQuCisgICAgICAgICAgICAvLyBNYWtlIHZhbHVl
IG9mIHRoaXMgZmllbGQgZXhwbGljaXQgc2luY2UKKyAgICAgICAgICAgIC8vIHVzZXIgY2FuIG92
ZXJyaWRlIGl0IHRocm91Z2ggYWpheFNldHVwIG1ldGhvZAorICAgICAgICAgICAgdHlwZTogdHlw
ZSB8fCAiR0VUIiwKKyAgICAgICAgICAgIGRhdGFUeXBlOiAiaHRtbCIsCisgICAgICAgICAgICBk
YXRhOiBwYXJhbXMKKyAgICAgICAgfSApLmRvbmUoIGZ1bmN0aW9uKCByZXNwb25zZVRleHQgKSB7
CisKKyAgICAgICAgICAgIC8vIFNhdmUgcmVzcG9uc2UgZm9yIHVzZSBpbiBjb21wbGV0ZSBjYWxs
YmFjaworICAgICAgICAgICAgcmVzcG9uc2UgPSBhcmd1bWVudHM7CisKKyAgICAgICAgICAgIHNl
bGYuaHRtbCggc2VsZWN0b3IgPworCisgICAgICAgICAgICAgICAgLy8gSWYgYSBzZWxlY3RvciB3
YXMgc3BlY2lmaWVkLCBsb2NhdGUgdGhlIHJpZ2h0IGVsZW1lbnRzIGluIGEgZHVtbXkgZGl2Cisg
ICAgICAgICAgICAgICAgLy8gRXhjbHVkZSBzY3JpcHRzIHRvIGF2b2lkIElFICdQZXJtaXNzaW9u
IERlbmllZCcgZXJyb3JzCisgICAgICAgICAgICAgICAgalF1ZXJ5KCAiPGRpdj4iICkuYXBwZW5k
KCBqUXVlcnkucGFyc2VIVE1MKCByZXNwb25zZVRleHQgKSApLmZpbmQoIHNlbGVjdG9yICkgOgor
CisgICAgICAgICAgICAgICAgLy8gT3RoZXJ3aXNlIHVzZSB0aGUgZnVsbCByZXN1bHQKKyAgICAg
ICAgICAgICAgICByZXNwb25zZVRleHQgKTsKKworICAgICAgICAvLyBJZiB0aGUgcmVxdWVzdCBz
dWNjZWVkcywgdGhpcyBmdW5jdGlvbiBnZXRzICJkYXRhIiwgInN0YXR1cyIsICJqcVhIUiIKKyAg
ICAgICAgLy8gYnV0IHRoZXkgYXJlIGlnbm9yZWQgYmVjYXVzZSByZXNwb25zZSB3YXMgc2V0IGFi
b3ZlLgorICAgICAgICAvLyBJZiBpdCBmYWlscywgdGhpcyBmdW5jdGlvbiBnZXRzICJqcVhIUiIs
ICJzdGF0dXMiLCAiZXJyb3IiCisgICAgICAgIH0gKS5hbHdheXMoIGNhbGxiYWNrICYmIGZ1bmN0
aW9uKCBqcVhIUiwgc3RhdHVzICkgeworICAgICAgICAgICAgc2VsZi5lYWNoKCBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgICAgICBjYWxsYmFjay5hcHBseSggdGhpcywgcmVzcG9uc2UgfHwgWyBq
cVhIUi5yZXNwb25zZVRleHQsIHN0YXR1cywganFYSFIgXSApOworICAgICAgICAgICAgfSApOwor
ICAgICAgICB9ICk7CisgICAgfQorCisgICAgcmV0dXJuIHRoaXM7Cit9OworCit9ICk7CmRpZmYg
LS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvYWpheC9w
YXJzZVhNTC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9h
amF4L3BhcnNlWE1MLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRkZmEzZWI2N2RkNzA1ZDUwNGJlMjQwYzFjOTM1
MzgwY2E2NDllMGYKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9t
b2R1bGVzL2pxdWVyeS9zcmMvYWpheC9wYXJzZVhNTC5qcwpAQCAtMCwwICsxLDMwIEBACitkZWZp
bmUoIFsKKyAgICAiLi4vY29yZSIKK10sIGZ1bmN0aW9uKCBqUXVlcnkgKSB7CisKKyJ1c2Ugc3Ry
aWN0IjsKKworLy8gQ3Jvc3MtYnJvd3NlciB4bWwgcGFyc2luZworalF1ZXJ5LnBhcnNlWE1MID0g
ZnVuY3Rpb24oIGRhdGEgKSB7CisgICAgdmFyIHhtbDsKKyAgICBpZiAoICFkYXRhIHx8IHR5cGVv
ZiBkYXRhICE9PSAic3RyaW5nIiApIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisg
ICAgLy8gU3VwcG9ydDogSUUgOSAtIDExIG9ubHkKKyAgICAvLyBJRSB0aHJvd3Mgb24gcGFyc2VG
cm9tU3RyaW5nIHdpdGggaW52YWxpZCBpbnB1dC4KKyAgICB0cnkgeworICAgICAgICB4bWwgPSAo
IG5ldyB3aW5kb3cuRE9NUGFyc2VyKCkgKS5wYXJzZUZyb21TdHJpbmcoIGRhdGEsICJ0ZXh0L3ht
bCIgKTsKKyAgICB9IGNhdGNoICggZSApIHsKKyAgICAgICAgeG1sID0gdW5kZWZpbmVkOworICAg
IH0KKworICAgIGlmICggIXhtbCB8fCB4bWwuZ2V0RWxlbWVudHNCeVRhZ05hbWUoICJwYXJzZXJl
cnJvciIgKS5sZW5ndGggKSB7CisgICAgICAgIGpRdWVyeS5lcnJvciggIkludmFsaWQgWE1MOiAi
ICsgZGF0YSApOworICAgIH0KKyAgICByZXR1cm4geG1sOworfTsKKworcmV0dXJuIGpRdWVyeS5w
YXJzZVhNTDsKKworfSApOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9k
dWxlcy9qcXVlcnkvc3JjL2FqYXgvc2NyaXB0LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVf
bW9kdWxlcy9qcXVlcnkvc3JjL2FqYXgvc2NyaXB0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdhMTAwYjJhMTVi
NzEyYWJkMWViZWUxYjc0Zjk1YjRkNDUyYjQ1YWEKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvYWpheC9zY3JpcHQuanMKQEAgLTAs
MCArMSw3NyBAQAorZGVmaW5lKCBbCisgICAgIi4uL2NvcmUiLAorICAgICIuLi92YXIvZG9jdW1l
bnQiLAorICAgICIuLi9hamF4IgorXSwgZnVuY3Rpb24oIGpRdWVyeSwgZG9jdW1lbnQgKSB7CisK
KyJ1c2Ugc3RyaWN0IjsKKworLy8gUHJldmVudCBhdXRvLWV4ZWN1dGlvbiBvZiBzY3JpcHRzIHdo
ZW4gbm8gZXhwbGljaXQgZGF0YVR5cGUgd2FzIHByb3ZpZGVkIChTZWUgZ2gtMjQzMikKK2pRdWVy
eS5hamF4UHJlZmlsdGVyKCBmdW5jdGlvbiggcyApIHsKKyAgICBpZiAoIHMuY3Jvc3NEb21haW4g
KSB7CisgICAgICAgIHMuY29udGVudHMuc2NyaXB0ID0gZmFsc2U7CisgICAgfQorfSApOworCisv
LyBJbnN0YWxsIHNjcmlwdCBkYXRhVHlwZQoralF1ZXJ5LmFqYXhTZXR1cCggeworICAgIGFjY2Vw
dHM6IHsKKyAgICAgICAgc2NyaXB0OiAidGV4dC9qYXZhc2NyaXB0LCBhcHBsaWNhdGlvbi9qYXZh
c2NyaXB0LCAiICsKKyAgICAgICAgICAgICJhcHBsaWNhdGlvbi9lY21hc2NyaXB0LCBhcHBsaWNh
dGlvbi94LWVjbWFzY3JpcHQiCisgICAgfSwKKyAgICBjb250ZW50czogeworICAgICAgICBzY3Jp
cHQ6IC9cYig/OmphdmF8ZWNtYSlzY3JpcHRcYi8KKyAgICB9LAorICAgIGNvbnZlcnRlcnM6IHsK
KyAgICAgICAgInRleHQgc2NyaXB0IjogZnVuY3Rpb24oIHRleHQgKSB7CisgICAgICAgICAgICBq
UXVlcnkuZ2xvYmFsRXZhbCggdGV4dCApOworICAgICAgICAgICAgcmV0dXJuIHRleHQ7CisgICAg
ICAgIH0KKyAgICB9Cit9ICk7CisKKy8vIEhhbmRsZSBjYWNoZSdzIHNwZWNpYWwgY2FzZSBhbmQg
Y3Jvc3NEb21haW4KK2pRdWVyeS5hamF4UHJlZmlsdGVyKCAic2NyaXB0IiwgZnVuY3Rpb24oIHMg
KSB7CisgICAgaWYgKCBzLmNhY2hlID09PSB1bmRlZmluZWQgKSB7CisgICAgICAgIHMuY2FjaGUg
PSBmYWxzZTsKKyAgICB9CisgICAgaWYgKCBzLmNyb3NzRG9tYWluICkgeworICAgICAgICBzLnR5
cGUgPSAiR0VUIjsKKyAgICB9Cit9ICk7CisKKy8vIEJpbmQgc2NyaXB0IHRhZyBoYWNrIHRyYW5z
cG9ydAoralF1ZXJ5LmFqYXhUcmFuc3BvcnQoICJzY3JpcHQiLCBmdW5jdGlvbiggcyApIHsKKwor
ICAgIC8vIFRoaXMgdHJhbnNwb3J0IG9ubHkgZGVhbHMgd2l0aCBjcm9zcyBkb21haW4gcmVxdWVz
dHMKKyAgICBpZiAoIHMuY3Jvc3NEb21haW4gKSB7CisgICAgICAgIHZhciBzY3JpcHQsIGNhbGxi
YWNrOworICAgICAgICByZXR1cm4geworICAgICAgICAgICAgc2VuZDogZnVuY3Rpb24oIF8sIGNv
bXBsZXRlICkgeworICAgICAgICAgICAgICAgIHNjcmlwdCA9IGpRdWVyeSggIjxzY3JpcHQ+IiAp
LnByb3AoIHsKKyAgICAgICAgICAgICAgICAgICAgY2hhcnNldDogcy5zY3JpcHRDaGFyc2V0LAor
ICAgICAgICAgICAgICAgICAgICBzcmM6IHMudXJsCisgICAgICAgICAgICAgICAgfSApLm9uKAor
ICAgICAgICAgICAgICAgICAgICAibG9hZCBlcnJvciIsCisgICAgICAgICAgICAgICAgICAgIGNh
bGxiYWNrID0gZnVuY3Rpb24oIGV2dCApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlw
dC5yZW1vdmUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrID0gbnVsbDsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICggZXZ0ICkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbXBsZXRlKCBldnQudHlwZSA9PT0gImVycm9yIiA/IDQwNCA6IDIwMCwgZXZ0LnR5
cGUgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICk7CisKKyAgICAgICAgICAgICAgICAvLyBVc2UgbmF0aXZlIERPTSBt
YW5pcHVsYXRpb24gdG8gYXZvaWQgb3VyIGRvbU1hbmlwIEFKQVggdHJpY2tlcnkKKyAgICAgICAg
ICAgICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKCBzY3JpcHRbIDAgXSApOworICAgICAg
ICAgICAgfSwKKyAgICAgICAgICAgIGFib3J0OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoIGNhbGxiYWNrICkgeworICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaygpOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9Cit9ICk7CisK
K30gKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5
L3NyYy9hamF4L3Zhci9sb2NhdGlvbi5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVs
ZXMvanF1ZXJ5L3NyYy9hamF4L3Zhci9sb2NhdGlvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYTljZTUyOGQ3
NTEwMzM2YTU5YTBhMTc5ZTJmZGJhOTBhYTc3NmU4Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2FqYXgvdmFyL2xvY2F0aW9uLmpz
CkBAIC0wLDAgKzEsNSBAQAorZGVmaW5lKCBmdW5jdGlvbigpIHsKKyAgICAidXNlIHN0cmljdCI7
CisKKyAgICByZXR1cm4gd2luZG93LmxvY2F0aW9uOworfSApOwpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2FqYXgvdmFyL25vbmNlLmpzIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2FqYXgvdmFyL25vbmNl
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmRmYmJmMzY1MGJiZTcxODRlNmI5NWZjNzcxOWVlYmRmYWQ5MWVhZWYK
LS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVy
eS9zcmMvYWpheC92YXIvbm9uY2UuanMKQEAgLTAsMCArMSw3IEBACitkZWZpbmUoIFsKKyAgICAi
Li4vLi4vY29yZSIKK10sIGZ1bmN0aW9uKCBqUXVlcnkgKSB7CisgICAgInVzZSBzdHJpY3QiOwor
CisgICAgcmV0dXJuIGpRdWVyeS5ub3coKTsKK30gKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9hamF4L3Zhci9ycXVlcnkuanMgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvYWpheC92YXIvcnF1ZXJ5Lmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjdmNDQ0YmYwZDY3YTdlZDdmZWI3NThlNWU0NTEyMTQwZjg1OWVhYmYKLS0t
IC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9z
cmMvYWpheC92YXIvcnF1ZXJ5LmpzCkBAIC0wLDAgKzEsNSBAQAorZGVmaW5lKCBmdW5jdGlvbigp
IHsKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICByZXR1cm4gKCAvXD8vICk7Cit9ICk7CmRpZmYg
LS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvYWpheC94
aHIuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvYWpheC94
aHIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNjEzMjkzYTg4ZTM0MjVlNjk5MjI2ZjM4ZWZiMTlhNzc1OGE1YzEz
MAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1
ZXJ5L3NyYy9hamF4L3hoci5qcwpAQCAtMCwwICsxLDE2OSBAQAorZGVmaW5lKCBbCisgICAgIi4u
L2NvcmUiLAorICAgICIuLi92YXIvc3VwcG9ydCIsCisgICAgIi4uL2FqYXgiCitdLCBmdW5jdGlv
biggalF1ZXJ5LCBzdXBwb3J0ICkgeworCisidXNlIHN0cmljdCI7CisKK2pRdWVyeS5hamF4U2V0
dGluZ3MueGhyID0gZnVuY3Rpb24oKSB7CisgICAgdHJ5IHsKKyAgICAgICAgcmV0dXJuIG5ldyB3
aW5kb3cuWE1MSHR0cFJlcXVlc3QoKTsKKyAgICB9IGNhdGNoICggZSApIHt9Cit9OworCit2YXIg
eGhyU3VjY2Vzc1N0YXR1cyA9IHsKKworICAgICAgICAvLyBGaWxlIHByb3RvY29sIGFsd2F5cyB5
aWVsZHMgc3RhdHVzIGNvZGUgMCwgYXNzdW1lIDIwMAorICAgICAgICAwOiAyMDAsCisKKyAgICAg
ICAgLy8gU3VwcG9ydDogSUUgPD05IG9ubHkKKyAgICAgICAgLy8gIzE0NTA6IHNvbWV0aW1lcyBJ
RSByZXR1cm5zIDEyMjMgd2hlbiBpdCBzaG91bGQgYmUgMjA0CisgICAgICAgIDEyMjM6IDIwNAor
ICAgIH0sCisgICAgeGhyU3VwcG9ydGVkID0galF1ZXJ5LmFqYXhTZXR0aW5ncy54aHIoKTsKKwor
c3VwcG9ydC5jb3JzID0gISF4aHJTdXBwb3J0ZWQgJiYgKCAid2l0aENyZWRlbnRpYWxzIiBpbiB4
aHJTdXBwb3J0ZWQgKTsKK3N1cHBvcnQuYWpheCA9IHhoclN1cHBvcnRlZCA9ICEheGhyU3VwcG9y
dGVkOworCitqUXVlcnkuYWpheFRyYW5zcG9ydCggZnVuY3Rpb24oIG9wdGlvbnMgKSB7CisgICAg
dmFyIGNhbGxiYWNrLCBlcnJvckNhbGxiYWNrOworCisgICAgLy8gQ3Jvc3MgZG9tYWluIG9ubHkg
YWxsb3dlZCBpZiBzdXBwb3J0ZWQgdGhyb3VnaCBYTUxIdHRwUmVxdWVzdAorICAgIGlmICggc3Vw
cG9ydC5jb3JzIHx8IHhoclN1cHBvcnRlZCAmJiAhb3B0aW9ucy5jcm9zc0RvbWFpbiApIHsKKyAg
ICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIHNlbmQ6IGZ1bmN0aW9uKCBoZWFkZXJzLCBjb21w
bGV0ZSApIHsKKyAgICAgICAgICAgICAgICB2YXIgaSwKKyAgICAgICAgICAgICAgICAgICAgeGhy
ID0gb3B0aW9ucy54aHIoKTsKKworICAgICAgICAgICAgICAgIHhoci5vcGVuKAorICAgICAgICAg
ICAgICAgICAgICBvcHRpb25zLnR5cGUsCisgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMudXJs
LAorICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmFzeW5jLAorICAgICAgICAgICAgICAgICAg
ICBvcHRpb25zLnVzZXJuYW1lLAorICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnBhc3N3b3Jk
CisgICAgICAgICAgICAgICAgKTsKKworICAgICAgICAgICAgICAgIC8vIEFwcGx5IGN1c3RvbSBm
aWVsZHMgaWYgcHJvdmlkZWQKKyAgICAgICAgICAgICAgICBpZiAoIG9wdGlvbnMueGhyRmllbGRz
ICkgeworICAgICAgICAgICAgICAgICAgICBmb3IgKCBpIGluIG9wdGlvbnMueGhyRmllbGRzICkg
eworICAgICAgICAgICAgICAgICAgICAgICAgeGhyWyBpIF0gPSBvcHRpb25zLnhockZpZWxkc1sg
aSBdOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgICAgLy8gT3ZlcnJpZGUgbWltZSB0eXBlIGlmIG5lZWRlZAorICAgICAgICAgICAgICAg
IGlmICggb3B0aW9ucy5taW1lVHlwZSAmJiB4aHIub3ZlcnJpZGVNaW1lVHlwZSApIHsKKyAgICAg
ICAgICAgICAgICAgICAgeGhyLm92ZXJyaWRlTWltZVR5cGUoIG9wdGlvbnMubWltZVR5cGUgKTsK
KyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBYLVJlcXVlc3RlZC1XaXRo
IGhlYWRlcgorICAgICAgICAgICAgICAgIC8vIEZvciBjcm9zcy1kb21haW4gcmVxdWVzdHMsIHNl
ZWluZyBhcyBjb25kaXRpb25zIGZvciBhIHByZWZsaWdodCBhcmUKKyAgICAgICAgICAgICAgICAv
LyBha2luIHRvIGEgamlnc2F3IHB1enpsZSwgd2Ugc2ltcGx5IG5ldmVyIHNldCBpdCB0byBiZSBz
dXJlLgorICAgICAgICAgICAgICAgIC8vIChpdCBjYW4gYWx3YXlzIGJlIHNldCBvbiBhIHBlci1y
ZXF1ZXN0IGJhc2lzIG9yIGV2ZW4gdXNpbmcgYWpheFNldHVwKQorICAgICAgICAgICAgICAgIC8v
IEZvciBzYW1lLWRvbWFpbiByZXF1ZXN0cywgd29uJ3QgY2hhbmdlIGhlYWRlciBpZiBhbHJlYWR5
IHByb3ZpZGVkLgorICAgICAgICAgICAgICAgIGlmICggIW9wdGlvbnMuY3Jvc3NEb21haW4gJiYg
IWhlYWRlcnNbICJYLVJlcXVlc3RlZC1XaXRoIiBdICkgeworICAgICAgICAgICAgICAgICAgICBo
ZWFkZXJzWyAiWC1SZXF1ZXN0ZWQtV2l0aCIgXSA9ICJYTUxIdHRwUmVxdWVzdCI7CisgICAgICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gU2V0IGhlYWRlcnMKKyAgICAgICAgICAg
ICAgICBmb3IgKCBpIGluIGhlYWRlcnMgKSB7CisgICAgICAgICAgICAgICAgICAgIHhoci5zZXRS
ZXF1ZXN0SGVhZGVyKCBpLCBoZWFkZXJzWyBpIF0gKTsKKyAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICAvLyBDYWxsYmFjaworICAgICAgICAgICAgICAgIGNhbGxiYWNrID0gZnVu
Y3Rpb24oIHR5cGUgKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGlmICggY2FsbGJhY2sgKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2FsbGJhY2sgPSBlcnJvckNhbGxiYWNrID0geGhyLm9ubG9hZCA9Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhoci5vbmVycm9yID0geGhyLm9uYWJvcnQg
PSB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gbnVsbDsKKworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICggdHlwZSA9PT0gImFib3J0IiApIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgeGhyLmFib3J0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IGlmICggdHlwZSA9PT0gImVycm9yIiApIHsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBTdXBwb3J0OiBJRSA8PTkgb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBPbiBhIG1hbnVhbCBuYXRpdmUgYWJvcnQsIElFOSB0aHJvd3MKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gZXJyb3JzIG9uIGFueSBwcm9wZXJ0eSBhY2Nlc3MgdGhh
dCBpcyBub3QgcmVhZHlTdGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
IHR5cGVvZiB4aHIuc3RhdHVzICE9PSAibnVtYmVyIiApIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbXBsZXRlKCAwLCAiZXJyb3IiICk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb21wbGV0ZSgKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIEZpbGU6IHByb3RvY29sIGFsd2F5cyB5aWVsZHMgc3RhdHVzIDA7IHNlZSAjODYwNSwgIzE0
MjA3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGhyLnN0YXR1cywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4aHIuc3RhdHVzVGV4dAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlKAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgeGhyU3VjY2Vzc1N0YXR1c1sgeGhyLnN0YXR1cyBdIHx8IHho
ci5zdGF0dXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4aHIuc3RhdHVz
VGV4dCwKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3VwcG9ydDog
SUUgPD05IG9ubHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElFOSBo
YXMgbm8gWEhSMiBidXQgdGhyb3dzIG9uIGJpbmFyeSAodHJhYy0xMTQyNikKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZvciBYSFIyIG5vbi10ZXh0LCBsZXQgdGhlIGNh
bGxlciBoYW5kbGUgaXQgKGdoLTI0OTgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoIHhoci5yZXNwb25zZVR5cGUgfHwgInRleHQiICkgIT09ICJ0ZXh0IiAgfHwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiB4aHIucmVzcG9uc2VUZXh0ICE9
PSAic3RyaW5nIiA/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBi
aW5hcnk6IHhoci5yZXNwb25zZSB9IDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB7IHRleHQ6IHhoci5yZXNwb25zZVRleHQgfSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHhoci5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAg
ICAgICAgICB9OworCisgICAgICAgICAgICAgICAgLy8gTGlzdGVuIHRvIGV2ZW50cworICAgICAg
ICAgICAgICAgIHhoci5vbmxvYWQgPSBjYWxsYmFjaygpOworICAgICAgICAgICAgICAgIGVycm9y
Q2FsbGJhY2sgPSB4aHIub25lcnJvciA9IGNhbGxiYWNrKCAiZXJyb3IiICk7CisKKyAgICAgICAg
ICAgICAgICAvLyBTdXBwb3J0OiBJRSA5IG9ubHkKKyAgICAgICAgICAgICAgICAvLyBVc2Ugb25y
ZWFkeXN0YXRlY2hhbmdlIHRvIHJlcGxhY2Ugb25hYm9ydAorICAgICAgICAgICAgICAgIC8vIHRv
IGhhbmRsZSB1bmNhdWdodCBhYm9ydHMKKyAgICAgICAgICAgICAgICBpZiAoIHhoci5vbmFib3J0
ICE9PSB1bmRlZmluZWQgKSB7CisgICAgICAgICAgICAgICAgICAgIHhoci5vbmFib3J0ID0gZXJy
b3JDYWxsYmFjazsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAg
ICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKSB7CisKKyAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIENoZWNrIHJlYWR5U3RhdGUgYmVmb3JlIHRpbWVvdXQgYXMgaXQgY2hhbmdl
cworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCB4aHIucmVhZHlTdGF0ZSA9PT0gNCApIHsK
KworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFsbG93IG9uZXJyb3IgdG8gYmUgY2Fs
bGVkIGZpcnN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ1dCB0aGF0IHdpbGwg
bm90IGhhbmRsZSBhIG5hdGl2ZSBhYm9ydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IEFsc28sIHNhdmUgZXJyb3JDYWxsYmFjayB0byBhIHZhcmlhYmxlCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gYXMgeGhyLm9uZXJyb3IgY2Fubm90IGJlIGFjY2Vzc2VkCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgd2luZG93LnNldFRpbWVvdXQoIGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGNhbGxiYWNrICkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JDYWxsYmFjaygpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApOwor
ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9OworICAgICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIENyZWF0ZSB0aGUgYWJvcnQgY2FsbGJh
Y2sKKyAgICAgICAgICAgICAgICBjYWxsYmFjayA9IGNhbGxiYWNrKCAiYWJvcnQiICk7CisKKyAg
ICAgICAgICAgICAgICB0cnkgeworCisgICAgICAgICAgICAgICAgICAgIC8vIERvIHNlbmQgdGhl
IHJlcXVlc3QgKHRoaXMgbWF5IHJhaXNlIGFuIGV4Y2VwdGlvbikKKyAgICAgICAgICAgICAgICAg
ICAgeGhyLnNlbmQoIG9wdGlvbnMuaGFzQ29udGVudCAmJiBvcHRpb25zLmRhdGEgfHwgbnVsbCAp
OworICAgICAgICAgICAgICAgIH0gY2F0Y2ggKCBlICkgeworCisgICAgICAgICAgICAgICAgICAg
IC8vICMxNDY4MzogT25seSByZXRocm93IGlmIHRoaXMgaGFzbid0IGJlZW4gbm90aWZpZWQgYXMg
YW4gZXJyb3IgeWV0CisgICAgICAgICAgICAgICAgICAgIGlmICggY2FsbGJhY2sgKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICB0aHJvdyBlOworICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgYWJvcnQ6IGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgICAgIGlmICggY2FsbGJhY2sgKSB7CisgICAgICAgICAgICAg
ICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICB9OworICAgIH0KK30gKTsKKworfSApOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1
ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2F0dHJpYnV0ZXMuanMgYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9q
cXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvYXR0cmlidXRlcy5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
M2FiMzhlZjA5Y2NjNzZhYTA2YmFlYWRmYjAyZTYyMWYyMjQwZDdjCi0tLSAvZGV2L251bGwKKysr
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2F0dHJpYnV0ZXMu
anMKQEAgLTAsMCArMSwxMyBAQAorZGVmaW5lKCBbCisgICAgIi4vY29yZSIsCisgICAgIi4vYXR0
cmlidXRlcy9hdHRyIiwKKyAgICAiLi9hdHRyaWJ1dGVzL3Byb3AiLAorICAgICIuL2F0dHJpYnV0
ZXMvY2xhc3NlcyIsCisgICAgIi4vYXR0cmlidXRlcy92YWwiCitdLCBmdW5jdGlvbiggalF1ZXJ5
ICkgeworCisidXNlIHN0cmljdCI7CisKKy8vIFJldHVybiBqUXVlcnkgZm9yIGF0dHJpYnV0ZXMt
b25seSBpbmNsdXNpb24KK3JldHVybiBqUXVlcnk7Cit9ICk7CmRpZmYgLS1naXQgYS9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvYXR0cmlidXRlcy9hdHRyLmpzIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2F0dHJpYnV0ZXMvYXR0
ci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45NDQ2OGMxN2QyNWU2OGE0N2FkMjIxZWI1OTk2ZDZmZjgyZGRmZDM1
Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVl
cnkvc3JjL2F0dHJpYnV0ZXMvYXR0ci5qcwpAQCAtMCwwICsxLDE0MCBAQAorZGVmaW5lKCBbCisg
ICAgIi4uL2NvcmUiLAorICAgICIuLi9jb3JlL2FjY2VzcyIsCisgICAgIi4vc3VwcG9ydCIsCisg
ICAgIi4uL3Zhci9ybm90aHRtbHdoaXRlIiwKKyAgICAiLi4vc2VsZWN0b3IiCitdLCBmdW5jdGlv
biggalF1ZXJ5LCBhY2Nlc3MsIHN1cHBvcnQsIHJub3RodG1sd2hpdGUgKSB7CisKKyJ1c2Ugc3Ry
aWN0IjsKKwordmFyIGJvb2xIb29rLAorICAgIGF0dHJIYW5kbGUgPSBqUXVlcnkuZXhwci5hdHRy
SGFuZGxlOworCitqUXVlcnkuZm4uZXh0ZW5kKCB7CisgICAgYXR0cjogZnVuY3Rpb24oIG5hbWUs
IHZhbHVlICkgeworICAgICAgICByZXR1cm4gYWNjZXNzKCB0aGlzLCBqUXVlcnkuYXR0ciwgbmFt
ZSwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggPiAxICk7CisgICAgfSwKKworICAgIHJlbW92ZUF0
dHI6IGZ1bmN0aW9uKCBuYW1lICkgeworICAgICAgICByZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgIGpRdWVyeS5yZW1vdmVBdHRyKCB0aGlzLCBuYW1lICk7CisgICAg
ICAgIH0gKTsKKyAgICB9Cit9ICk7CisKK2pRdWVyeS5leHRlbmQoIHsKKyAgICBhdHRyOiBmdW5j
dGlvbiggZWxlbSwgbmFtZSwgdmFsdWUgKSB7CisgICAgICAgIHZhciByZXQsIGhvb2tzLAorICAg
ICAgICAgICAgblR5cGUgPSBlbGVtLm5vZGVUeXBlOworCisgICAgICAgIC8vIERvbid0IGdldC9z
ZXQgYXR0cmlidXRlcyBvbiB0ZXh0LCBjb21tZW50IGFuZCBhdHRyaWJ1dGUgbm9kZXMKKyAgICAg
ICAgaWYgKCBuVHlwZSA9PT0gMyB8fCBuVHlwZSA9PT0gOCB8fCBuVHlwZSA9PT0gMiApIHsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZhbGxiYWNrIHRvIHBy
b3Agd2hlbiBhdHRyaWJ1dGVzIGFyZSBub3Qgc3VwcG9ydGVkCisgICAgICAgIGlmICggdHlwZW9m
IGVsZW0uZ2V0QXR0cmlidXRlID09PSAidW5kZWZpbmVkIiApIHsKKyAgICAgICAgICAgIHJldHVy
biBqUXVlcnkucHJvcCggZWxlbSwgbmFtZSwgdmFsdWUgKTsKKyAgICAgICAgfQorCisgICAgICAg
IC8vIEF0dHJpYnV0ZSBob29rcyBhcmUgZGV0ZXJtaW5lZCBieSB0aGUgbG93ZXJjYXNlIHZlcnNp
b24KKyAgICAgICAgLy8gR3JhYiBuZWNlc3NhcnkgaG9vayBpZiBvbmUgaXMgZGVmaW5lZAorICAg
ICAgICBpZiAoIG5UeXBlICE9PSAxIHx8ICFqUXVlcnkuaXNYTUxEb2MoIGVsZW0gKSApIHsKKyAg
ICAgICAgICAgIGhvb2tzID0galF1ZXJ5LmF0dHJIb29rc1sgbmFtZS50b0xvd2VyQ2FzZSgpIF0g
fHwKKyAgICAgICAgICAgICAgICAoIGpRdWVyeS5leHByLm1hdGNoLmJvb2wudGVzdCggbmFtZSAp
ID8gYm9vbEhvb2sgOiB1bmRlZmluZWQgKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICggdmFs
dWUgIT09IHVuZGVmaW5lZCApIHsKKyAgICAgICAgICAgIGlmICggdmFsdWUgPT09IG51bGwgKSB7
CisgICAgICAgICAgICAgICAgalF1ZXJ5LnJlbW92ZUF0dHIoIGVsZW0sIG5hbWUgKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICggaG9v
a3MgJiYgInNldCIgaW4gaG9va3MgJiYKKyAgICAgICAgICAgICAgICAoIHJldCA9IGhvb2tzLnNl
dCggZWxlbSwgdmFsdWUsIG5hbWUgKSApICE9PSB1bmRlZmluZWQgKSB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHJldDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZWxlbS5zZXRBdHRy
aWJ1dGUoIG5hbWUsIHZhbHVlICsgIiIgKTsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmICggaG9va3MgJiYgImdldCIgaW4gaG9va3MgJiYgKCByZXQg
PSBob29rcy5nZXQoIGVsZW0sIG5hbWUgKSApICE9PSBudWxsICkgeworICAgICAgICAgICAgcmV0
dXJuIHJldDsKKyAgICAgICAgfQorCisgICAgICAgIHJldCA9IGpRdWVyeS5maW5kLmF0dHIoIGVs
ZW0sIG5hbWUgKTsKKworICAgICAgICAvLyBOb24tZXhpc3RlbnQgYXR0cmlidXRlcyByZXR1cm4g
bnVsbCwgd2Ugbm9ybWFsaXplIHRvIHVuZGVmaW5lZAorICAgICAgICByZXR1cm4gcmV0ID09IG51
bGwgPyB1bmRlZmluZWQgOiByZXQ7CisgICAgfSwKKworICAgIGF0dHJIb29rczogeworICAgICAg
ICB0eXBlOiB7CisgICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSApIHsKKyAg
ICAgICAgICAgICAgICBpZiAoICFzdXBwb3J0LnJhZGlvVmFsdWUgJiYgdmFsdWUgPT09ICJyYWRp
byIgJiYKKyAgICAgICAgICAgICAgICAgICAgalF1ZXJ5Lm5vZGVOYW1lKCBlbGVtLCAiaW5wdXQi
ICkgKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciB2YWwgPSBlbGVtLnZhbHVlOworICAgICAg
ICAgICAgICAgICAgICBlbGVtLnNldEF0dHJpYnV0ZSggInR5cGUiLCB2YWx1ZSApOworICAgICAg
ICAgICAgICAgICAgICBpZiAoIHZhbCApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0u
dmFsdWUgPSB2YWw7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHZhbHVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0sCisKKyAgICByZW1vdmVBdHRyOiBmdW5jdGlvbiggZWxlbSwgdmFsdWUgKSB7Cisg
ICAgICAgIHZhciBuYW1lLAorICAgICAgICAgICAgaSA9IDAsCisKKyAgICAgICAgICAgIC8vIEF0
dHJpYnV0ZSBuYW1lcyBjYW4gY29udGFpbiBub24tSFRNTCB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMK
KyAgICAgICAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5
bnRheC5odG1sI2F0dHJpYnV0ZXMtMgorICAgICAgICAgICAgYXR0ck5hbWVzID0gdmFsdWUgJiYg
dmFsdWUubWF0Y2goIHJub3RodG1sd2hpdGUgKTsKKworICAgICAgICBpZiAoIGF0dHJOYW1lcyAm
JiBlbGVtLm5vZGVUeXBlID09PSAxICkgeworICAgICAgICAgICAgd2hpbGUgKCAoIG5hbWUgPSBh
dHRyTmFtZXNbIGkrKyBdICkgKSB7CisgICAgICAgICAgICAgICAgZWxlbS5yZW1vdmVBdHRyaWJ1
dGUoIG5hbWUgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30gKTsKKworLy8g
SG9va3MgZm9yIGJvb2xlYW4gYXR0cmlidXRlcworYm9vbEhvb2sgPSB7CisgICAgc2V0OiBmdW5j
dGlvbiggZWxlbSwgdmFsdWUsIG5hbWUgKSB7CisgICAgICAgIGlmICggdmFsdWUgPT09IGZhbHNl
ICkgeworCisgICAgICAgICAgICAvLyBSZW1vdmUgYm9vbGVhbiBhdHRyaWJ1dGVzIHdoZW4gc2V0
IHRvIGZhbHNlCisgICAgICAgICAgICBqUXVlcnkucmVtb3ZlQXR0ciggZWxlbSwgbmFtZSApOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZWxlbS5zZXRBdHRyaWJ1dGUoIG5hbWUsIG5h
bWUgKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbmFtZTsKKyAgICB9Cit9OworCitqUXVl
cnkuZWFjaCggalF1ZXJ5LmV4cHIubWF0Y2guYm9vbC5zb3VyY2UubWF0Y2goIC9cdysvZyApLCBm
dW5jdGlvbiggaSwgbmFtZSApIHsKKyAgICB2YXIgZ2V0dGVyID0gYXR0ckhhbmRsZVsgbmFtZSBd
IHx8IGpRdWVyeS5maW5kLmF0dHI7CisKKyAgICBhdHRySGFuZGxlWyBuYW1lIF0gPSBmdW5jdGlv
biggZWxlbSwgbmFtZSwgaXNYTUwgKSB7CisgICAgICAgIHZhciByZXQsIGhhbmRsZSwKKyAgICAg
ICAgICAgIGxvd2VyY2FzZU5hbWUgPSBuYW1lLnRvTG93ZXJDYXNlKCk7CisKKyAgICAgICAgaWYg
KCAhaXNYTUwgKSB7CisKKyAgICAgICAgICAgIC8vIEF2b2lkIGFuIGluZmluaXRlIGxvb3AgYnkg
dGVtcG9yYXJpbHkgcmVtb3ZpbmcgdGhpcyBmdW5jdGlvbiBmcm9tIHRoZSBnZXR0ZXIKKyAgICAg
ICAgICAgIGhhbmRsZSA9IGF0dHJIYW5kbGVbIGxvd2VyY2FzZU5hbWUgXTsKKyAgICAgICAgICAg
IGF0dHJIYW5kbGVbIGxvd2VyY2FzZU5hbWUgXSA9IHJldDsKKyAgICAgICAgICAgIHJldCA9IGdl
dHRlciggZWxlbSwgbmFtZSwgaXNYTUwgKSAhPSBudWxsID8KKyAgICAgICAgICAgICAgICBsb3dl
cmNhc2VOYW1lIDoKKyAgICAgICAgICAgICAgICBudWxsOworICAgICAgICAgICAgYXR0ckhhbmRs
ZVsgbG93ZXJjYXNlTmFtZSBdID0gaGFuZGxlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBy
ZXQ7CisgICAgfTsKK30gKTsKKworfSApOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5
L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2F0dHJpYnV0ZXMvY2xhc3Nlcy5qcyBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9hdHRyaWJ1dGVzL2NsYXNzZXMuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNDlkYjE1MThmM2I0YjIxMDYyODI1N2JhYTVmYmEwYzY1MjQ1MjQ1YwotLS0g
L2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3Ny
Yy9hdHRyaWJ1dGVzL2NsYXNzZXMuanMKQEAgLTAsMCArMSwxNzQgQEAKK2RlZmluZSggWworICAg
ICIuLi9jb3JlIiwKKyAgICAiLi4vY29yZS9zdHJpcEFuZENvbGxhcHNlIiwKKyAgICAiLi4vdmFy
L3Jub3RodG1sd2hpdGUiLAorICAgICIuLi9kYXRhL3Zhci9kYXRhUHJpdiIsCisgICAgIi4uL2Nv
cmUvaW5pdCIKK10sIGZ1bmN0aW9uKCBqUXVlcnksIHN0cmlwQW5kQ29sbGFwc2UsIHJub3RodG1s
d2hpdGUsIGRhdGFQcml2ICkgeworCisidXNlIHN0cmljdCI7CisKK2Z1bmN0aW9uIGdldENsYXNz
KCBlbGVtICkgeworICAgIHJldHVybiBlbGVtLmdldEF0dHJpYnV0ZSAmJiBlbGVtLmdldEF0dHJp
YnV0ZSggImNsYXNzIiApIHx8ICIiOworfQorCitqUXVlcnkuZm4uZXh0ZW5kKCB7CisgICAgYWRk
Q2xhc3M6IGZ1bmN0aW9uKCB2YWx1ZSApIHsKKyAgICAgICAgdmFyIGNsYXNzZXMsIGVsZW0sIGN1
ciwgY3VyVmFsdWUsIGNsYXp6LCBqLCBmaW5hbFZhbHVlLAorICAgICAgICAgICAgaSA9IDA7CisK
KyAgICAgICAgaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggdmFsdWUgKSApIHsKKyAgICAgICAgICAg
IHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCBqICkgeworICAgICAgICAgICAgICAgIGpRdWVy
eSggdGhpcyApLmFkZENsYXNzKCB2YWx1ZS5jYWxsKCB0aGlzLCBqLCBnZXRDbGFzcyggdGhpcyAp
ICkgKTsKKyAgICAgICAgICAgIH0gKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICggdHlwZW9m
IHZhbHVlID09PSAic3RyaW5nIiAmJiB2YWx1ZSApIHsKKyAgICAgICAgICAgIGNsYXNzZXMgPSB2
YWx1ZS5tYXRjaCggcm5vdGh0bWx3aGl0ZSApIHx8IFtdOworCisgICAgICAgICAgICB3aGlsZSAo
ICggZWxlbSA9IHRoaXNbIGkrKyBdICkgKSB7CisgICAgICAgICAgICAgICAgY3VyVmFsdWUgPSBn
ZXRDbGFzcyggZWxlbSApOworICAgICAgICAgICAgICAgIGN1ciA9IGVsZW0ubm9kZVR5cGUgPT09
IDEgJiYgKCAiICIgKyBzdHJpcEFuZENvbGxhcHNlKCBjdXJWYWx1ZSApICsgIiAiICk7CisKKyAg
ICAgICAgICAgICAgICBpZiAoIGN1ciApIHsKKyAgICAgICAgICAgICAgICAgICAgaiA9IDA7Cisg
ICAgICAgICAgICAgICAgICAgIHdoaWxlICggKCBjbGF6eiA9IGNsYXNzZXNbIGorKyBdICkgKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGN1ci5pbmRleE9mKCAiICIgKyBjbGF6eiAr
ICIgIiApIDwgMCApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXIgKz0gY2xhenog
KyAiICI7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgICAgICAvLyBPbmx5IGFzc2lnbiBpZiBkaWZmZXJlbnQgdG8gYXZv
aWQgdW5uZWVkZWQgcmVuZGVyaW5nLgorICAgICAgICAgICAgICAgICAgICBmaW5hbFZhbHVlID0g
c3RyaXBBbmRDb2xsYXBzZSggY3VyICk7CisgICAgICAgICAgICAgICAgICAgIGlmICggY3VyVmFs
dWUgIT09IGZpbmFsVmFsdWUgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBlbGVtLnNldEF0
dHJpYnV0ZSggImNsYXNzIiwgZmluYWxWYWx1ZSApOworICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0
dXJuIHRoaXM7CisgICAgfSwKKworICAgIHJlbW92ZUNsYXNzOiBmdW5jdGlvbiggdmFsdWUgKSB7
CisgICAgICAgIHZhciBjbGFzc2VzLCBlbGVtLCBjdXIsIGN1clZhbHVlLCBjbGF6eiwgaiwgZmlu
YWxWYWx1ZSwKKyAgICAgICAgICAgIGkgPSAwOworCisgICAgICAgIGlmICggalF1ZXJ5LmlzRnVu
Y3Rpb24oIHZhbHVlICkgKSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlv
biggaiApIHsKKyAgICAgICAgICAgICAgICBqUXVlcnkoIHRoaXMgKS5yZW1vdmVDbGFzcyggdmFs
dWUuY2FsbCggdGhpcywgaiwgZ2V0Q2xhc3MoIHRoaXMgKSApICk7CisgICAgICAgICAgICB9ICk7
CisgICAgICAgIH0KKworICAgICAgICBpZiAoICFhcmd1bWVudHMubGVuZ3RoICkgeworICAgICAg
ICAgICAgcmV0dXJuIHRoaXMuYXR0ciggImNsYXNzIiwgIiIgKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmICggdHlwZW9mIHZhbHVlID09PSAic3RyaW5nIiAmJiB2YWx1ZSApIHsKKyAgICAgICAg
ICAgIGNsYXNzZXMgPSB2YWx1ZS5tYXRjaCggcm5vdGh0bWx3aGl0ZSApIHx8IFtdOworCisgICAg
ICAgICAgICB3aGlsZSAoICggZWxlbSA9IHRoaXNbIGkrKyBdICkgKSB7CisgICAgICAgICAgICAg
ICAgY3VyVmFsdWUgPSBnZXRDbGFzcyggZWxlbSApOworCisgICAgICAgICAgICAgICAgLy8gVGhp
cyBleHByZXNzaW9uIGlzIGhlcmUgZm9yIGJldHRlciBjb21wcmVzc2liaWxpdHkgKHNlZSBhZGRD
bGFzcykKKyAgICAgICAgICAgICAgICBjdXIgPSBlbGVtLm5vZGVUeXBlID09PSAxICYmICggIiAi
ICsgc3RyaXBBbmRDb2xsYXBzZSggY3VyVmFsdWUgKSArICIgIiApOworCisgICAgICAgICAgICAg
ICAgaWYgKCBjdXIgKSB7CisgICAgICAgICAgICAgICAgICAgIGogPSAwOworICAgICAgICAgICAg
ICAgICAgICB3aGlsZSAoICggY2xhenogPSBjbGFzc2VzWyBqKysgXSApICkgeworCisgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBSZW1vdmUgKmFsbCogaW5zdGFuY2VzCisgICAgICAgICAgICAg
ICAgICAgICAgICB3aGlsZSAoIGN1ci5pbmRleE9mKCAiICIgKyBjbGF6eiArICIgIiApID4gLTEg
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyID0gY3VyLnJlcGxhY2UoICIgIiAr
IGNsYXp6ICsgIiAiLCAiICIgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIC8vIE9ubHkgYXNzaWduIGlmIGRp
ZmZlcmVudCB0byBhdm9pZCB1bm5lZWRlZCByZW5kZXJpbmcuCisgICAgICAgICAgICAgICAgICAg
IGZpbmFsVmFsdWUgPSBzdHJpcEFuZENvbGxhcHNlKCBjdXIgKTsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKCBjdXJWYWx1ZSAhPT0gZmluYWxWYWx1ZSApIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGVsZW0uc2V0QXR0cmlidXRlKCAiY2xhc3MiLCBmaW5hbFZhbHVlICk7CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KworICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9LAorCisgICAgdG9nZ2xlQ2xhc3M6IGZ1bmN0
aW9uKCB2YWx1ZSwgc3RhdGVWYWwgKSB7CisgICAgICAgIHZhciB0eXBlID0gdHlwZW9mIHZhbHVl
OworCisgICAgICAgIGlmICggdHlwZW9mIHN0YXRlVmFsID09PSAiYm9vbGVhbiIgJiYgdHlwZSA9
PT0gInN0cmluZyIgKSB7CisgICAgICAgICAgICByZXR1cm4gc3RhdGVWYWwgPyB0aGlzLmFkZENs
YXNzKCB2YWx1ZSApIDogdGhpcy5yZW1vdmVDbGFzcyggdmFsdWUgKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIHZhbHVlICkgKSB7CisgICAgICAgICAgICBy
ZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbiggaSApIHsKKyAgICAgICAgICAgICAgICBqUXVlcnko
IHRoaXMgKS50b2dnbGVDbGFzcygKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUuY2FsbCggdGhp
cywgaSwgZ2V0Q2xhc3MoIHRoaXMgKSwgc3RhdGVWYWwgKSwKKyAgICAgICAgICAgICAgICAgICAg
c3RhdGVWYWwKKyAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgfSApOworICAgICAgICB9
CisKKyAgICAgICAgcmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB2
YXIgY2xhc3NOYW1lLCBpLCBzZWxmLCBjbGFzc05hbWVzOworCisgICAgICAgICAgICBpZiAoIHR5
cGUgPT09ICJzdHJpbmciICkgeworCisgICAgICAgICAgICAgICAgLy8gVG9nZ2xlIGluZGl2aWR1
YWwgY2xhc3MgbmFtZXMKKyAgICAgICAgICAgICAgICBpID0gMDsKKyAgICAgICAgICAgICAgICBz
ZWxmID0galF1ZXJ5KCB0aGlzICk7CisgICAgICAgICAgICAgICAgY2xhc3NOYW1lcyA9IHZhbHVl
Lm1hdGNoKCBybm90aHRtbHdoaXRlICkgfHwgW107CisKKyAgICAgICAgICAgICAgICB3aGlsZSAo
ICggY2xhc3NOYW1lID0gY2xhc3NOYW1lc1sgaSsrIF0gKSApIHsKKworICAgICAgICAgICAgICAg
ICAgICAvLyBDaGVjayBlYWNoIGNsYXNzTmFtZSBnaXZlbiwgc3BhY2Ugc2VwYXJhdGVkIGxpc3QK
KyAgICAgICAgICAgICAgICAgICAgaWYgKCBzZWxmLmhhc0NsYXNzKCBjbGFzc05hbWUgKSApIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVtb3ZlQ2xhc3MoIGNsYXNzTmFtZSApOwor
ICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5hZGRDbGFzcyggY2xhc3NOYW1lICk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRvZ2dsZSB3aG9sZSBjbGFzcyBuYW1lCisgICAg
ICAgICAgICB9IGVsc2UgaWYgKCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHR5cGUgPT09ICJib29s
ZWFuIiApIHsKKyAgICAgICAgICAgICAgICBjbGFzc05hbWUgPSBnZXRDbGFzcyggdGhpcyApOwor
ICAgICAgICAgICAgICAgIGlmICggY2xhc3NOYW1lICkgeworCisgICAgICAgICAgICAgICAgICAg
IC8vIFN0b3JlIGNsYXNzTmFtZSBpZiBzZXQKKyAgICAgICAgICAgICAgICAgICAgZGF0YVByaXYu
c2V0KCB0aGlzLCAiX19jbGFzc05hbWVfXyIsIGNsYXNzTmFtZSApOworICAgICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgICAgIC8vIElmIHRoZSBlbGVtZW50IGhhcyBhIGNsYXNzIG5hbWUg
b3IgaWYgd2UncmUgcGFzc2VkIGBmYWxzZWAsCisgICAgICAgICAgICAgICAgLy8gdGhlbiByZW1v
dmUgdGhlIHdob2xlIGNsYXNzbmFtZSAoaWYgdGhlcmUgd2FzIG9uZSwgdGhlIGFib3ZlIHNhdmVk
IGl0KS4KKyAgICAgICAgICAgICAgICAvLyBPdGhlcndpc2UgYnJpbmcgYmFjayB3aGF0ZXZlciB3
YXMgcHJldmlvdXNseSBzYXZlZCAoaWYgYW55dGhpbmcpLAorICAgICAgICAgICAgICAgIC8vIGZh
bGxpbmcgYmFjayB0byB0aGUgZW1wdHkgc3RyaW5nIGlmIG5vdGhpbmcgd2FzIHN0b3JlZC4KKyAg
ICAgICAgICAgICAgICBpZiAoIHRoaXMuc2V0QXR0cmlidXRlICkgeworICAgICAgICAgICAgICAg
ICAgICB0aGlzLnNldEF0dHJpYnV0ZSggImNsYXNzIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNsYXNzTmFtZSB8fCB2YWx1ZSA9PT0gZmFsc2UgPworICAgICAgICAgICAgICAgICAgICAgICAg
IiIgOgorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVByaXYuZ2V0KCB0aGlzLCAiX19jbGFz
c05hbWVfXyIgKSB8fCAiIgorICAgICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSApOworICAgIH0sCisKKyAgICBoYXNDbGFzczog
ZnVuY3Rpb24oIHNlbGVjdG9yICkgeworICAgICAgICB2YXIgY2xhc3NOYW1lLCBlbGVtLAorICAg
ICAgICAgICAgaSA9IDA7CisKKyAgICAgICAgY2xhc3NOYW1lID0gIiAiICsgc2VsZWN0b3IgKyAi
ICI7CisgICAgICAgIHdoaWxlICggKCBlbGVtID0gdGhpc1sgaSsrIF0gKSApIHsKKyAgICAgICAg
ICAgIGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSAmJgorICAgICAgICAgICAgICAgICggIiAiICsg
c3RyaXBBbmRDb2xsYXBzZSggZ2V0Q2xhc3MoIGVsZW0gKSApICsgIiAiICkuaW5kZXhPZiggY2xh
c3NOYW1lICkgPiAtMSApIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfSAp
OworCit9ICk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2px
dWVyeS9zcmMvYXR0cmlidXRlcy9wcm9wLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9k
dWxlcy9qcXVlcnkvc3JjL2F0dHJpYnV0ZXMvcHJvcC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iODZlZmNiOGQz
YTYyODZhMzcyNDU2NWNkYWJhYTMzNmJkYzJhYmQ2Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2F0dHJpYnV0ZXMvcHJvcC5qcwpA
QCAtMCwwICsxLDE0MyBAQAorZGVmaW5lKCBbCisgICAgIi4uL2NvcmUiLAorICAgICIuLi9jb3Jl
L2FjY2VzcyIsCisgICAgIi4vc3VwcG9ydCIsCisgICAgIi4uL3NlbGVjdG9yIgorXSwgZnVuY3Rp
b24oIGpRdWVyeSwgYWNjZXNzLCBzdXBwb3J0ICkgeworCisidXNlIHN0cmljdCI7CisKK3ZhciBy
Zm9jdXNhYmxlID0gL14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaSwKKyAgICBy
Y2xpY2thYmxlID0gL14oPzphfGFyZWEpJC9pOworCitqUXVlcnkuZm4uZXh0ZW5kKCB7CisgICAg
cHJvcDogZnVuY3Rpb24oIG5hbWUsIHZhbHVlICkgeworICAgICAgICByZXR1cm4gYWNjZXNzKCB0
aGlzLCBqUXVlcnkucHJvcCwgbmFtZSwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggPiAxICk7Cisg
ICAgfSwKKworICAgIHJlbW92ZVByb3A6IGZ1bmN0aW9uKCBuYW1lICkgeworICAgICAgICByZXR1
cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGRlbGV0ZSB0aGlzWyBqUXVl
cnkucHJvcEZpeFsgbmFtZSBdIHx8IG5hbWUgXTsKKyAgICAgICAgfSApOworICAgIH0KK30gKTsK
KworalF1ZXJ5LmV4dGVuZCggeworICAgIHByb3A6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCB2YWx1
ZSApIHsKKyAgICAgICAgdmFyIHJldCwgaG9va3MsCisgICAgICAgICAgICBuVHlwZSA9IGVsZW0u
bm9kZVR5cGU7CisKKyAgICAgICAgLy8gRG9uJ3QgZ2V0L3NldCBwcm9wZXJ0aWVzIG9uIHRleHQs
IGNvbW1lbnQgYW5kIGF0dHJpYnV0ZSBub2RlcworICAgICAgICBpZiAoIG5UeXBlID09PSAzIHx8
IG5UeXBlID09PSA4IHx8IG5UeXBlID09PSAyICkgeworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgaWYgKCBuVHlwZSAhPT0gMSB8fCAhalF1ZXJ5LmlzWE1MRG9jKCBl
bGVtICkgKSB7CisKKyAgICAgICAgICAgIC8vIEZpeCBuYW1lIGFuZCBhdHRhY2ggaG9va3MKKyAg
ICAgICAgICAgIG5hbWUgPSBqUXVlcnkucHJvcEZpeFsgbmFtZSBdIHx8IG5hbWU7CisgICAgICAg
ICAgICBob29rcyA9IGpRdWVyeS5wcm9wSG9va3NbIG5hbWUgXTsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmICggdmFsdWUgIT09IHVuZGVmaW5lZCApIHsKKyAgICAgICAgICAgIGlmICggaG9va3Mg
JiYgInNldCIgaW4gaG9va3MgJiYKKyAgICAgICAgICAgICAgICAoIHJldCA9IGhvb2tzLnNldCgg
ZWxlbSwgdmFsdWUsIG5hbWUgKSApICE9PSB1bmRlZmluZWQgKSB7CisgICAgICAgICAgICAgICAg
cmV0dXJuIHJldDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuICggZWxlbVsg
bmFtZSBdID0gdmFsdWUgKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICggaG9va3MgJiYgImdl
dCIgaW4gaG9va3MgJiYgKCByZXQgPSBob29rcy5nZXQoIGVsZW0sIG5hbWUgKSApICE9PSBudWxs
ICkgeworICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVy
biBlbGVtWyBuYW1lIF07CisgICAgfSwKKworICAgIHByb3BIb29rczogeworICAgICAgICB0YWJJ
bmRleDogeworICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiggZWxlbSApIHsKKworICAgICAgICAg
ICAgICAgIC8vIFN1cHBvcnQ6IElFIDw9OSAtIDExIG9ubHkKKyAgICAgICAgICAgICAgICAvLyBl
bGVtLnRhYkluZGV4IGRvZXNuJ3QgYWx3YXlzIHJldHVybiB0aGUKKyAgICAgICAgICAgICAgICAv
LyBjb3JyZWN0IHZhbHVlIHdoZW4gaXQgaGFzbid0IGJlZW4gZXhwbGljaXRseSBzZXQKKyAgICAg
ICAgICAgICAgICAvLyBodHRwczovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAxNDExMTYyMzMzNDcv
aHR0cDovL2ZsdWlkcHJvamVjdC5vcmcvYmxvZy8yMDA4LzAxLzA5L2dldHRpbmctc2V0dGluZy1h
bmQtcmVtb3ZpbmctdGFiaW5kZXgtdmFsdWVzLXdpdGgtamF2YXNjcmlwdC8KKyAgICAgICAgICAg
ICAgICAvLyBVc2UgcHJvcGVyIGF0dHJpYnV0ZSByZXRyaWV2YWwoIzEyMDcyKQorICAgICAgICAg
ICAgICAgIHZhciB0YWJpbmRleCA9IGpRdWVyeS5maW5kLmF0dHIoIGVsZW0sICJ0YWJpbmRleCIg
KTsKKworICAgICAgICAgICAgICAgIGlmICggdGFiaW5kZXggKSB7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBwYXJzZUludCggdGFiaW5kZXgsIDEwICk7CisgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgaWYgKAorICAgICAgICAgICAgICAgICAgICByZm9jdXNhYmxlLnRl
c3QoIGVsZW0ubm9kZU5hbWUgKSB8fAorICAgICAgICAgICAgICAgICAgICByY2xpY2thYmxlLnRl
c3QoIGVsZW0ubm9kZU5hbWUgKSAmJgorICAgICAgICAgICAgICAgICAgICBlbGVtLmhyZWYKKyAg
ICAgICAgICAgICAgICApIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfSwKKworICAgIHByb3BGaXg6IHsKKyAgICAgICAgImZvciI6ICJodG1s
Rm9yIiwKKyAgICAgICAgImNsYXNzIjogImNsYXNzTmFtZSIKKyAgICB9Cit9ICk7CisKKy8vIFN1
cHBvcnQ6IElFIDw9MTEgb25seQorLy8gQWNjZXNzaW5nIHRoZSBzZWxlY3RlZEluZGV4IHByb3Bl
cnR5CisvLyBmb3JjZXMgdGhlIGJyb3dzZXIgdG8gcmVzcGVjdCBzZXR0aW5nIHNlbGVjdGVkCisv
LyBvbiB0aGUgb3B0aW9uCisvLyBUaGUgZ2V0dGVyIGVuc3VyZXMgYSBkZWZhdWx0IG9wdGlvbiBp
cyBzZWxlY3RlZAorLy8gd2hlbiBpbiBhbiBvcHRncm91cAorLy8gZXNsaW50IHJ1bGUgIm5vLXVu
dXNlZC1leHByZXNzaW9ucyIgaXMgZGlzYWJsZWQgZm9yIHRoaXMgY29kZQorLy8gc2luY2UgaXQg
Y29uc2lkZXJzIHN1Y2ggYWNjZXNzaW9ucyBub29wCitpZiAoICFzdXBwb3J0Lm9wdFNlbGVjdGVk
ICkgeworICAgIGpRdWVyeS5wcm9wSG9va3Muc2VsZWN0ZWQgPSB7CisgICAgICAgIGdldDogZnVu
Y3Rpb24oIGVsZW0gKSB7CisKKyAgICAgICAgICAgIC8qIGVzbGludCBuby11bnVzZWQtZXhwcmVz
c2lvbnM6ICJvZmYiICovCisKKyAgICAgICAgICAgIHZhciBwYXJlbnQgPSBlbGVtLnBhcmVudE5v
ZGU7CisgICAgICAgICAgICBpZiAoIHBhcmVudCAmJiBwYXJlbnQucGFyZW50Tm9kZSApIHsKKyAg
ICAgICAgICAgICAgICBwYXJlbnQucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4OworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0sCisgICAgICAgIHNldDog
ZnVuY3Rpb24oIGVsZW0gKSB7CisKKyAgICAgICAgICAgIC8qIGVzbGludCBuby11bnVzZWQtZXhw
cmVzc2lvbnM6ICJvZmYiICovCisKKyAgICAgICAgICAgIHZhciBwYXJlbnQgPSBlbGVtLnBhcmVu
dE5vZGU7CisgICAgICAgICAgICBpZiAoIHBhcmVudCApIHsKKyAgICAgICAgICAgICAgICBwYXJl
bnQuc2VsZWN0ZWRJbmRleDsKKworICAgICAgICAgICAgICAgIGlmICggcGFyZW50LnBhcmVudE5v
ZGUgKSB7CisgICAgICAgICAgICAgICAgICAgIHBhcmVudC5wYXJlbnROb2RlLnNlbGVjdGVkSW5k
ZXg7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfTsK
K30KKworalF1ZXJ5LmVhY2goIFsKKyAgICAidGFiSW5kZXgiLAorICAgICJyZWFkT25seSIsCisg
ICAgIm1heExlbmd0aCIsCisgICAgImNlbGxTcGFjaW5nIiwKKyAgICAiY2VsbFBhZGRpbmciLAor
ICAgICJyb3dTcGFuIiwKKyAgICAiY29sU3BhbiIsCisgICAgInVzZU1hcCIsCisgICAgImZyYW1l
Qm9yZGVyIiwKKyAgICAiY29udGVudEVkaXRhYmxlIgorXSwgZnVuY3Rpb24oKSB7CisgICAgalF1
ZXJ5LnByb3BGaXhbIHRoaXMudG9Mb3dlckNhc2UoKSBdID0gdGhpczsKK30gKTsKKworfSApOwpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2F0
dHJpYnV0ZXMvc3VwcG9ydC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1
ZXJ5L3NyYy9hdHRyaWJ1dGVzL3N1cHBvcnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTY3ZDQ5YWZiN2FlZDNk
Nzk5ZGMwMzQwODYwMmI1ZTFkMGZjM2Q0NwotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9hdHRyaWJ1dGVzL3N1cHBvcnQuanMKQEAg
LTAsMCArMSwzMyBAQAorZGVmaW5lKCBbCisgICAgIi4uL3Zhci9kb2N1bWVudCIsCisgICAgIi4u
L3Zhci9zdXBwb3J0IgorXSwgZnVuY3Rpb24oIGRvY3VtZW50LCBzdXBwb3J0ICkgeworCisidXNl
IHN0cmljdCI7CisKKyggZnVuY3Rpb24oKSB7CisgICAgdmFyIGlucHV0ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCggImlucHV0IiApLAorICAgICAgICBzZWxlY3QgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCAic2VsZWN0IiApLAorICAgICAgICBvcHQgPSBzZWxlY3QuYXBwZW5kQ2hpbGQoIGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoICJvcHRpb24iICkgKTsKKworICAgIGlucHV0LnR5cGUgPSAi
Y2hlY2tib3giOworCisgICAgLy8gU3VwcG9ydDogQW5kcm9pZCA8PTQuMyBvbmx5CisgICAgLy8g
RGVmYXVsdCB2YWx1ZSBmb3IgYSBjaGVja2JveCBzaG91bGQgYmUgIm9uIgorICAgIHN1cHBvcnQu
Y2hlY2tPbiA9IGlucHV0LnZhbHVlICE9PSAiIjsKKworICAgIC8vIFN1cHBvcnQ6IElFIDw9MTEg
b25seQorICAgIC8vIE11c3QgYWNjZXNzIHNlbGVjdGVkSW5kZXggdG8gbWFrZSBkZWZhdWx0IG9w
dGlvbnMgc2VsZWN0CisgICAgc3VwcG9ydC5vcHRTZWxlY3RlZCA9IG9wdC5zZWxlY3RlZDsKKwor
ICAgIC8vIFN1cHBvcnQ6IElFIDw9MTEgb25seQorICAgIC8vIEFuIGlucHV0IGxvc2VzIGl0cyB2
YWx1ZSBhZnRlciBiZWNvbWluZyBhIHJhZGlvCisgICAgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCAiaW5wdXQiICk7CisgICAgaW5wdXQudmFsdWUgPSAidCI7CisgICAgaW5wdXQudHlw
ZSA9ICJyYWRpbyI7CisgICAgc3VwcG9ydC5yYWRpb1ZhbHVlID0gaW5wdXQudmFsdWUgPT09ICJ0
IjsKK30gKSgpOworCityZXR1cm4gc3VwcG9ydDsKKworfSApOwpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2F0dHJpYnV0ZXMvdmFsLmpzIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2F0dHJpYnV0ZXMvdmFs
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjhkZjc4Mzc4MDg3YThjOWU2OGNhMTI3MjE2NDU2NTVmNzA5OGVmNjkK
LS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVy
eS9zcmMvYXR0cmlidXRlcy92YWwuanMKQEAgLTAsMCArMSwxODggQEAKK2RlZmluZSggWworICAg
ICIuLi9jb3JlIiwKKyAgICAiLi4vY29yZS9zdHJpcEFuZENvbGxhcHNlIiwKKyAgICAiLi9zdXBw
b3J0IiwKKyAgICAiLi4vY29yZS9pbml0IgorXSwgZnVuY3Rpb24oIGpRdWVyeSwgc3RyaXBBbmRD
b2xsYXBzZSwgc3VwcG9ydCApIHsKKworInVzZSBzdHJpY3QiOworCit2YXIgcnJldHVybiA9IC9c
ci9nOworCitqUXVlcnkuZm4uZXh0ZW5kKCB7CisgICAgdmFsOiBmdW5jdGlvbiggdmFsdWUgKSB7
CisgICAgICAgIHZhciBob29rcywgcmV0LCBpc0Z1bmN0aW9uLAorICAgICAgICAgICAgZWxlbSA9
IHRoaXNbIDAgXTsKKworICAgICAgICBpZiAoICFhcmd1bWVudHMubGVuZ3RoICkgeworICAgICAg
ICAgICAgaWYgKCBlbGVtICkgeworICAgICAgICAgICAgICAgIGhvb2tzID0galF1ZXJ5LnZhbEhv
b2tzWyBlbGVtLnR5cGUgXSB8fAorICAgICAgICAgICAgICAgICAgICBqUXVlcnkudmFsSG9va3Nb
IGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSBdOworCisgICAgICAgICAgICAgICAgaWYgKCBo
b29rcyAmJgorICAgICAgICAgICAgICAgICAgICAiZ2V0IiBpbiBob29rcyAmJgorICAgICAgICAg
ICAgICAgICAgICAoIHJldCA9IGhvb2tzLmdldCggZWxlbSwgInZhbHVlIiApICkgIT09IHVuZGVm
aW5lZAorICAgICAgICAgICAgICAgICkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0
OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHJldCA9IGVsZW0udmFsdWU7
CisKKyAgICAgICAgICAgICAgICAvLyBIYW5kbGUgbW9zdCBjb21tb24gc3RyaW5nIGNhc2VzCisg
ICAgICAgICAgICAgICAgaWYgKCB0eXBlb2YgcmV0ID09PSAic3RyaW5nIiApIHsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHJldC5yZXBsYWNlKCBycmV0dXJuLCAiIiApOworICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIEhhbmRsZSBjYXNlcyB3aGVyZSB2YWx1ZSBp
cyBudWxsL3VuZGVmIG9yIG51bWJlcgorICAgICAgICAgICAgICAgIHJldHVybiByZXQgPT0gbnVs
bCA/ICIiIDogcmV0OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICBpc0Z1bmN0aW9uID0galF1ZXJ5LmlzRnVuY3Rpb24oIHZhbHVlICk7
CisKKyAgICAgICAgcmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oIGkgKSB7CisgICAgICAgICAg
ICB2YXIgdmFsOworCisgICAgICAgICAgICBpZiAoIHRoaXMubm9kZVR5cGUgIT09IDEgKSB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAo
IGlzRnVuY3Rpb24gKSB7CisgICAgICAgICAgICAgICAgdmFsID0gdmFsdWUuY2FsbCggdGhpcywg
aSwgalF1ZXJ5KCB0aGlzICkudmFsKCkgKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgdmFsID0gdmFsdWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRy
ZWF0IG51bGwvdW5kZWZpbmVkIGFzICIiOyBjb252ZXJ0IG51bWJlcnMgdG8gc3RyaW5nCisgICAg
ICAgICAgICBpZiAoIHZhbCA9PSBudWxsICkgeworICAgICAgICAgICAgICAgIHZhbCA9ICIiOwor
CisgICAgICAgICAgICB9IGVsc2UgaWYgKCB0eXBlb2YgdmFsID09PSAibnVtYmVyIiApIHsKKyAg
ICAgICAgICAgICAgICB2YWwgKz0gIiI7CisKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoIGpRdWVy
eS5pc0FycmF5KCB2YWwgKSApIHsKKyAgICAgICAgICAgICAgICB2YWwgPSBqUXVlcnkubWFwKCB2
YWwsIGZ1bmN0aW9uKCB2YWx1ZSApIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVl
ID09IG51bGwgPyAiIiA6IHZhbHVlICsgIiI7CisgICAgICAgICAgICAgICAgfSApOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBob29rcyA9IGpRdWVyeS52YWxIb29rc1sgdGhpcy50eXBl
IF0gfHwgalF1ZXJ5LnZhbEhvb2tzWyB0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgXTsKKwor
ICAgICAgICAgICAgLy8gSWYgc2V0IHJldHVybnMgdW5kZWZpbmVkLCBmYWxsIGJhY2sgdG8gbm9y
bWFsIHNldHRpbmcKKyAgICAgICAgICAgIGlmICggIWhvb2tzIHx8ICEoICJzZXQiIGluIGhvb2tz
ICkgfHwgaG9va3Muc2V0KCB0aGlzLCB2YWwsICJ2YWx1ZSIgKSA9PT0gdW5kZWZpbmVkICkgewor
ICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSB2YWw7CisgICAgICAgICAgICB9CisgICAgICAg
IH0gKTsKKyAgICB9Cit9ICk7CisKK2pRdWVyeS5leHRlbmQoIHsKKyAgICB2YWxIb29rczogewor
ICAgICAgICBvcHRpb246IHsKKyAgICAgICAgICAgIGdldDogZnVuY3Rpb24oIGVsZW0gKSB7CisK
KyAgICAgICAgICAgICAgICB2YXIgdmFsID0galF1ZXJ5LmZpbmQuYXR0ciggZWxlbSwgInZhbHVl
IiApOworICAgICAgICAgICAgICAgIHJldHVybiB2YWwgIT0gbnVsbCA/CisgICAgICAgICAgICAg
ICAgICAgIHZhbCA6CisKKyAgICAgICAgICAgICAgICAgICAgLy8gU3VwcG9ydDogSUUgPD0xMCAt
IDExIG9ubHkKKyAgICAgICAgICAgICAgICAgICAgLy8gb3B0aW9uLnRleHQgdGhyb3dzIGV4Y2Vw
dGlvbnMgKCMxNDY4NiwgIzE0ODU4KQorICAgICAgICAgICAgICAgICAgICAvLyBTdHJpcCBhbmQg
Y29sbGFwc2Ugd2hpdGVzcGFjZQorICAgICAgICAgICAgICAgICAgICAvLyBodHRwczovL2h0bWwu
c3BlYy53aGF0d2cub3JnLyNzdHJpcC1hbmQtY29sbGFwc2Utd2hpdGVzcGFjZQorICAgICAgICAg
ICAgICAgICAgICBzdHJpcEFuZENvbGxhcHNlKCBqUXVlcnkudGV4dCggZWxlbSApICk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgIHNlbGVjdDogeworICAgICAgICAgICAgZ2V0
OiBmdW5jdGlvbiggZWxlbSApIHsKKyAgICAgICAgICAgICAgICB2YXIgdmFsdWUsIG9wdGlvbiwg
aSwKKyAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyA9IGVsZW0ub3B0aW9ucywKKyAgICAgICAg
ICAgICAgICAgICAgaW5kZXggPSBlbGVtLnNlbGVjdGVkSW5kZXgsCisgICAgICAgICAgICAgICAg
ICAgIG9uZSA9IGVsZW0udHlwZSA9PT0gInNlbGVjdC1vbmUiLAorICAgICAgICAgICAgICAgICAg
ICB2YWx1ZXMgPSBvbmUgPyBudWxsIDogW10sCisgICAgICAgICAgICAgICAgICAgIG1heCA9IG9u
ZSA/IGluZGV4ICsgMSA6IG9wdGlvbnMubGVuZ3RoOworCisgICAgICAgICAgICAgICAgaWYgKCBp
bmRleCA8IDAgKSB7CisgICAgICAgICAgICAgICAgICAgIGkgPSBtYXg7CisKKyAgICAgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpID0gb25lID8gaW5kZXggOiAwOwor
ICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIExvb3AgdGhyb3VnaCBhbGwg
dGhlIHNlbGVjdGVkIG9wdGlvbnMKKyAgICAgICAgICAgICAgICBmb3IgKCA7IGkgPCBtYXg7IGkr
KyApIHsKKyAgICAgICAgICAgICAgICAgICAgb3B0aW9uID0gb3B0aW9uc1sgaSBdOworCisgICAg
ICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6IElFIDw9OSBvbmx5CisgICAgICAgICAgICAgICAg
ICAgIC8vIElFOC05IGRvZXNuJ3QgdXBkYXRlIHNlbGVjdGVkIGFmdGVyIGZvcm0gcmVzZXQgKCMy
NTUxKQorICAgICAgICAgICAgICAgICAgICBpZiAoICggb3B0aW9uLnNlbGVjdGVkIHx8IGkgPT09
IGluZGV4ICkgJiYKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERvbid0IHJldHVy
biBvcHRpb25zIHRoYXQgYXJlIGRpc2FibGVkIG9yIGluIGEgZGlzYWJsZWQgb3B0Z3JvdXAKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkICYmCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKCAhb3B0aW9uLnBhcmVudE5vZGUuZGlzYWJsZWQgfHwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIWpRdWVyeS5ub2RlTmFtZSggb3B0aW9uLnBhcmVu
dE5vZGUsICJvcHRncm91cCIgKSApICkgeworCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBH
ZXQgdGhlIHNwZWNpZmljIHZhbHVlIGZvciB0aGUgb3B0aW9uCisgICAgICAgICAgICAgICAgICAg
ICAgICB2YWx1ZSA9IGpRdWVyeSggb3B0aW9uICkudmFsKCk7CisKKyAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIFdlIGRvbid0IG5lZWQgYW4gYXJyYXkgZm9yIG9uZSBzZWxlY3RzCisgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoIG9uZSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdmFsdWU7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIE11bHRpLVNlbGVjdHMgcmV0dXJuIGFuIGFycmF5CisgICAgICAgICAg
ICAgICAgICAgICAgICB2YWx1ZXMucHVzaCggdmFsdWUgKTsKKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZXM7Cisg
ICAgICAgICAgICB9LAorCisgICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSAp
IHsKKyAgICAgICAgICAgICAgICB2YXIgb3B0aW9uU2V0LCBvcHRpb24sCisgICAgICAgICAgICAg
ICAgICAgIG9wdGlvbnMgPSBlbGVtLm9wdGlvbnMsCisgICAgICAgICAgICAgICAgICAgIHZhbHVl
cyA9IGpRdWVyeS5tYWtlQXJyYXkoIHZhbHVlICksCisgICAgICAgICAgICAgICAgICAgIGkgPSBv
cHRpb25zLmxlbmd0aDsKKworICAgICAgICAgICAgICAgIHdoaWxlICggaS0tICkgeworICAgICAg
ICAgICAgICAgICAgICBvcHRpb24gPSBvcHRpb25zWyBpIF07CisKKyAgICAgICAgICAgICAgICAg
ICAgLyogZXNsaW50LWRpc2FibGUgbm8tY29uZC1hc3NpZ24gKi8KKworICAgICAgICAgICAgICAg
ICAgICBpZiAoIG9wdGlvbi5zZWxlY3RlZCA9CisgICAgICAgICAgICAgICAgICAgICAgICBqUXVl
cnkuaW5BcnJheSggalF1ZXJ5LnZhbEhvb2tzLm9wdGlvbi5nZXQoIG9wdGlvbiApLCB2YWx1ZXMg
KSA+IC0xCisgICAgICAgICAgICAgICAgICAgICkgeworICAgICAgICAgICAgICAgICAgICAgICAg
b3B0aW9uU2V0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgICAgIC8qIGVzbGludC1lbmFibGUgbm8tY29uZC1hc3NpZ24gKi8KKyAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICAvLyBGb3JjZSBicm93c2VycyB0byBiZWhhdmUgY29uc2lz
dGVudGx5IHdoZW4gbm9uLW1hdGNoaW5nIHZhbHVlIGlzIHNldAorICAgICAgICAgICAgICAgIGlm
ICggIW9wdGlvblNldCApIHsKKyAgICAgICAgICAgICAgICAgICAgZWxlbS5zZWxlY3RlZEluZGV4
ID0gLTE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZXM7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9ICk7CisKKy8vIFJhZGlvcyBhbmQg
Y2hlY2tib3hlcyBnZXR0ZXIvc2V0dGVyCitqUXVlcnkuZWFjaCggWyAicmFkaW8iLCAiY2hlY2ti
b3giIF0sIGZ1bmN0aW9uKCkgeworICAgIGpRdWVyeS52YWxIb29rc1sgdGhpcyBdID0geworICAg
ICAgICBzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSApIHsKKyAgICAgICAgICAgIGlmICggalF1
ZXJ5LmlzQXJyYXkoIHZhbHVlICkgKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuICggZWxlbS5j
aGVja2VkID0galF1ZXJ5LmluQXJyYXkoIGpRdWVyeSggZWxlbSApLnZhbCgpLCB2YWx1ZSApID4g
LTEgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH07CisgICAgaWYgKCAhc3VwcG9y
dC5jaGVja09uICkgeworICAgICAgICBqUXVlcnkudmFsSG9va3NbIHRoaXMgXS5nZXQgPSBmdW5j
dGlvbiggZWxlbSApIHsKKyAgICAgICAgICAgIHJldHVybiBlbGVtLmdldEF0dHJpYnV0ZSggInZh
bHVlIiApID09PSBudWxsID8gIm9uIiA6IGVsZW0udmFsdWU7CisgICAgICAgIH07CisgICAgfQor
fSApOworCit9ICk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVz
L2pxdWVyeS9zcmMvY2FsbGJhY2tzLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxl
cy9qcXVlcnkvc3JjL2NhbGxiYWNrcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MzUwNWE1NjA2NzVlNjQyNmY0
NjgzYWU2OTRhOTM2ODY2Y2JiYjhiCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1
ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2NhbGxiYWNrcy5qcwpAQCAtMCwwICsxLDIzNCBA
QAorZGVmaW5lKCBbCisgICAgIi4vY29yZSIsCisgICAgIi4vdmFyL3Jub3RodG1sd2hpdGUiCitd
LCBmdW5jdGlvbiggalF1ZXJ5LCBybm90aHRtbHdoaXRlICkgeworCisidXNlIHN0cmljdCI7CisK
Ky8vIENvbnZlcnQgU3RyaW5nLWZvcm1hdHRlZCBvcHRpb25zIGludG8gT2JqZWN0LWZvcm1hdHRl
ZCBvbmVzCitmdW5jdGlvbiBjcmVhdGVPcHRpb25zKCBvcHRpb25zICkgeworICAgIHZhciBvYmpl
Y3QgPSB7fTsKKyAgICBqUXVlcnkuZWFjaCggb3B0aW9ucy5tYXRjaCggcm5vdGh0bWx3aGl0ZSAp
IHx8IFtdLCBmdW5jdGlvbiggXywgZmxhZyApIHsKKyAgICAgICAgb2JqZWN0WyBmbGFnIF0gPSB0
cnVlOworICAgIH0gKTsKKyAgICByZXR1cm4gb2JqZWN0OworfQorCisvKgorICogQ3JlYXRlIGEg
Y2FsbGJhY2sgbGlzdCB1c2luZyB0aGUgZm9sbG93aW5nIHBhcmFtZXRlcnM6CisgKgorICogIG9w
dGlvbnM6IGFuIG9wdGlvbmFsIGxpc3Qgb2Ygc3BhY2Utc2VwYXJhdGVkIG9wdGlvbnMgdGhhdCB3
aWxsIGNoYW5nZSBob3cKKyAqICAgICAgICAgIHRoZSBjYWxsYmFjayBsaXN0IGJlaGF2ZXMgb3Ig
YSBtb3JlIHRyYWRpdGlvbmFsIG9wdGlvbiBvYmplY3QKKyAqCisgKiBCeSBkZWZhdWx0IGEgY2Fs
bGJhY2sgbGlzdCB3aWxsIGFjdCBsaWtlIGFuIGV2ZW50IGNhbGxiYWNrIGxpc3QgYW5kIGNhbiBi
ZQorICogImZpcmVkIiBtdWx0aXBsZSB0aW1lcy4KKyAqCisgKiBQb3NzaWJsZSBvcHRpb25zOgor
ICoKKyAqICBvbmNlOiAgICAgICAgICAgd2lsbCBlbnN1cmUgdGhlIGNhbGxiYWNrIGxpc3QgY2Fu
IG9ubHkgYmUgZmlyZWQgb25jZSAobGlrZSBhIERlZmVycmVkKQorICoKKyAqICBtZW1vcnk6ICAg
ICAgICAgd2lsbCBrZWVwIHRyYWNrIG9mIHByZXZpb3VzIHZhbHVlcyBhbmQgd2lsbCBjYWxsIGFu
eSBjYWxsYmFjayBhZGRlZAorICogICAgICAgICAgICAgICAgICBhZnRlciB0aGUgbGlzdCBoYXMg
YmVlbiBmaXJlZCByaWdodCBhd2F5IHdpdGggdGhlIGxhdGVzdCAibWVtb3JpemVkIgorICogICAg
ICAgICAgICAgICAgICB2YWx1ZXMgKGxpa2UgYSBEZWZlcnJlZCkKKyAqCisgKiAgdW5pcXVlOiAg
ICAgICAgIHdpbGwgZW5zdXJlIGEgY2FsbGJhY2sgY2FuIG9ubHkgYmUgYWRkZWQgb25jZSAobm8g
ZHVwbGljYXRlIGluIHRoZSBsaXN0KQorICoKKyAqICBzdG9wT25GYWxzZTogICAgaW50ZXJydXB0
IGNhbGxpbmdzIHdoZW4gYSBjYWxsYmFjayByZXR1cm5zIGZhbHNlCisgKgorICovCitqUXVlcnku
Q2FsbGJhY2tzID0gZnVuY3Rpb24oIG9wdGlvbnMgKSB7CisKKyAgICAvLyBDb252ZXJ0IG9wdGlv
bnMgZnJvbSBTdHJpbmctZm9ybWF0dGVkIHRvIE9iamVjdC1mb3JtYXR0ZWQgaWYgbmVlZGVkCisg
ICAgLy8gKHdlIGNoZWNrIGluIGNhY2hlIGZpcnN0KQorICAgIG9wdGlvbnMgPSB0eXBlb2Ygb3B0
aW9ucyA9PT0gInN0cmluZyIgPworICAgICAgICBjcmVhdGVPcHRpb25zKCBvcHRpb25zICkgOgor
ICAgICAgICBqUXVlcnkuZXh0ZW5kKCB7fSwgb3B0aW9ucyApOworCisgICAgdmFyIC8vIEZsYWcg
dG8ga25vdyBpZiBsaXN0IGlzIGN1cnJlbnRseSBmaXJpbmcKKyAgICAgICAgZmlyaW5nLAorCisg
ICAgICAgIC8vIExhc3QgZmlyZSB2YWx1ZSBmb3Igbm9uLWZvcmdldHRhYmxlIGxpc3RzCisgICAg
ICAgIG1lbW9yeSwKKworICAgICAgICAvLyBGbGFnIHRvIGtub3cgaWYgbGlzdCB3YXMgYWxyZWFk
eSBmaXJlZAorICAgICAgICBmaXJlZCwKKworICAgICAgICAvLyBGbGFnIHRvIHByZXZlbnQgZmly
aW5nCisgICAgICAgIGxvY2tlZCwKKworICAgICAgICAvLyBBY3R1YWwgY2FsbGJhY2sgbGlzdAor
ICAgICAgICBsaXN0ID0gW10sCisKKyAgICAgICAgLy8gUXVldWUgb2YgZXhlY3V0aW9uIGRhdGEg
Zm9yIHJlcGVhdGFibGUgbGlzdHMKKyAgICAgICAgcXVldWUgPSBbXSwKKworICAgICAgICAvLyBJ
bmRleCBvZiBjdXJyZW50bHkgZmlyaW5nIGNhbGxiYWNrIChtb2RpZmllZCBieSBhZGQvcmVtb3Zl
IGFzIG5lZWRlZCkKKyAgICAgICAgZmlyaW5nSW5kZXggPSAtMSwKKworICAgICAgICAvLyBGaXJl
IGNhbGxiYWNrcworICAgICAgICBmaXJlID0gZnVuY3Rpb24oKSB7CisKKyAgICAgICAgICAgIC8v
IEVuZm9yY2Ugc2luZ2xlLWZpcmluZworICAgICAgICAgICAgbG9ja2VkID0gb3B0aW9ucy5vbmNl
OworCisgICAgICAgICAgICAvLyBFeGVjdXRlIGNhbGxiYWNrcyBmb3IgYWxsIHBlbmRpbmcgZXhl
Y3V0aW9ucywKKyAgICAgICAgICAgIC8vIHJlc3BlY3RpbmcgZmlyaW5nSW5kZXggb3ZlcnJpZGVz
IGFuZCBydW50aW1lIGNoYW5nZXMKKyAgICAgICAgICAgIGZpcmVkID0gZmlyaW5nID0gdHJ1ZTsK
KyAgICAgICAgICAgIGZvciAoIDsgcXVldWUubGVuZ3RoOyBmaXJpbmdJbmRleCA9IC0xICkgewor
ICAgICAgICAgICAgICAgIG1lbW9yeSA9IHF1ZXVlLnNoaWZ0KCk7CisgICAgICAgICAgICAgICAg
d2hpbGUgKCArK2ZpcmluZ0luZGV4IDwgbGlzdC5sZW5ndGggKSB7CisKKyAgICAgICAgICAgICAg
ICAgICAgLy8gUnVuIGNhbGxiYWNrIGFuZCBjaGVjayBmb3IgZWFybHkgdGVybWluYXRpb24KKyAg
ICAgICAgICAgICAgICAgICAgaWYgKCBsaXN0WyBmaXJpbmdJbmRleCBdLmFwcGx5KCBtZW1vcnlb
IDAgXSwgbWVtb3J5WyAxIF0gKSA9PT0gZmFsc2UgJiYKKyAgICAgICAgICAgICAgICAgICAgICAg
IG9wdGlvbnMuc3RvcE9uRmFsc2UgKSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIEp1
bXAgdG8gZW5kIGFuZCBmb3JnZXQgdGhlIGRhdGEgc28gLmFkZCBkb2Vzbid0IHJlLWZpcmUKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGZpcmluZ0luZGV4ID0gbGlzdC5sZW5ndGg7CisgICAgICAg
ICAgICAgICAgICAgICAgICBtZW1vcnkgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gRm9yZ2V0
IHRoZSBkYXRhIGlmIHdlJ3JlIGRvbmUgd2l0aCBpdAorICAgICAgICAgICAgaWYgKCAhb3B0aW9u
cy5tZW1vcnkgKSB7CisgICAgICAgICAgICAgICAgbWVtb3J5ID0gZmFsc2U7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGZpcmluZyA9IGZhbHNlOworCisgICAgICAgICAgICAvLyBDbGVh
biB1cCBpZiB3ZSdyZSBkb25lIGZpcmluZyBmb3IgZ29vZAorICAgICAgICAgICAgaWYgKCBsb2Nr
ZWQgKSB7CisKKyAgICAgICAgICAgICAgICAvLyBLZWVwIGFuIGVtcHR5IGxpc3QgaWYgd2UgaGF2
ZSBkYXRhIGZvciBmdXR1cmUgYWRkIGNhbGxzCisgICAgICAgICAgICAgICAgaWYgKCBtZW1vcnkg
KSB7CisgICAgICAgICAgICAgICAgICAgIGxpc3QgPSBbXTsKKworICAgICAgICAgICAgICAgIC8v
IE90aGVyd2lzZSwgdGhpcyBvYmplY3QgaXMgc3BlbnQKKyAgICAgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgICAgICBsaXN0ID0gIiI7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorICAgICAgICB9LAorCisgICAgICAgIC8vIEFjdHVhbCBDYWxsYmFja3Mgb2Jq
ZWN0CisgICAgICAgIHNlbGYgPSB7CisKKyAgICAgICAgICAgIC8vIEFkZCBhIGNhbGxiYWNrIG9y
IGEgY29sbGVjdGlvbiBvZiBjYWxsYmFja3MgdG8gdGhlIGxpc3QKKyAgICAgICAgICAgIGFkZDog
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgaWYgKCBsaXN0ICkgeworCisgICAgICAgICAg
ICAgICAgICAgIC8vIElmIHdlIGhhdmUgbWVtb3J5IGZyb20gYSBwYXN0IHJ1biwgd2Ugc2hvdWxk
IGZpcmUgYWZ0ZXIgYWRkaW5nCisgICAgICAgICAgICAgICAgICAgIGlmICggbWVtb3J5ICYmICFm
aXJpbmcgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmaXJpbmdJbmRleCA9IGxpc3QubGVu
Z3RoIC0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXVlLnB1c2goIG1lbW9yeSApOwor
ICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgKCBmdW5jdGlvbiBh
ZGQoIGFyZ3MgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkuZWFjaCggYXJncywg
ZnVuY3Rpb24oIF8sIGFyZyApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGpR
dWVyeS5pc0Z1bmN0aW9uKCBhcmcgKSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCAhb3B0aW9ucy51bmlxdWUgfHwgIXNlbGYuaGFzKCBhcmcgKSApIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QucHVzaCggYXJnICk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgaWYgKCBhcmcgJiYgYXJnLmxlbmd0aCAmJiBqUXVlcnkudHlwZSggYXJnICkgIT09ICJzdHJp
bmciICkgeworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEluc3BlY3QgcmVj
dXJzaXZlbHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkKCBhcmcgKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9ICk7
CisgICAgICAgICAgICAgICAgICAgIH0gKSggYXJndW1lbnRzICk7CisKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKCBtZW1vcnkgJiYgIWZpcmluZyApIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGZpcmUoKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgIC8v
IFJlbW92ZSBhIGNhbGxiYWNrIGZyb20gdGhlIGxpc3QKKyAgICAgICAgICAgIHJlbW92ZTogZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICAgICAgalF1ZXJ5LmVhY2goIGFyZ3VtZW50cywgZnVuY3Rp
b24oIF8sIGFyZyApIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGluZGV4OworICAgICAgICAg
ICAgICAgICAgICB3aGlsZSAoICggaW5kZXggPSBqUXVlcnkuaW5BcnJheSggYXJnLCBsaXN0LCBp
bmRleCApICkgPiAtMSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Quc3BsaWNlKCBp
bmRleCwgMSApOworCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBIYW5kbGUgZmlyaW5nIGlu
ZGV4ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICggaW5kZXggPD0gZmlyaW5nSW5kZXgg
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyaW5nSW5kZXgtLTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IH0gKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgICAgIH0sCisKKyAg
ICAgICAgICAgIC8vIENoZWNrIGlmIGEgZ2l2ZW4gY2FsbGJhY2sgaXMgaW4gdGhlIGxpc3QuCisg
ICAgICAgICAgICAvLyBJZiBubyBhcmd1bWVudCBpcyBnaXZlbiwgcmV0dXJuIHdoZXRoZXIgb3Ig
bm90IGxpc3QgaGFzIGNhbGxiYWNrcyBhdHRhY2hlZC4KKyAgICAgICAgICAgIGhhczogZnVuY3Rp
b24oIGZuICkgeworICAgICAgICAgICAgICAgIHJldHVybiBmbiA/CisgICAgICAgICAgICAgICAg
ICAgIGpRdWVyeS5pbkFycmF5KCBmbiwgbGlzdCApID4gLTEgOgorICAgICAgICAgICAgICAgICAg
ICBsaXN0Lmxlbmd0aCA+IDA7CisgICAgICAgICAgICB9LAorCisgICAgICAgICAgICAvLyBSZW1v
dmUgYWxsIGNhbGxiYWNrcyBmcm9tIHRoZSBsaXN0CisgICAgICAgICAgICBlbXB0eTogZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICAgICAgaWYgKCBsaXN0ICkgeworICAgICAgICAgICAgICAgICAg
ICBsaXN0ID0gW107CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiB0
aGlzOworICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgLy8gRGlzYWJsZSAuZmlyZSBhbmQg
LmFkZAorICAgICAgICAgICAgLy8gQWJvcnQgYW55IGN1cnJlbnQvcGVuZGluZyBleGVjdXRpb25z
CisgICAgICAgICAgICAvLyBDbGVhciBhbGwgY2FsbGJhY2tzIGFuZCB2YWx1ZXMKKyAgICAgICAg
ICAgIGRpc2FibGU6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGxvY2tlZCA9IHF1ZXVl
ID0gW107CisgICAgICAgICAgICAgICAgbGlzdCA9IG1lbW9yeSA9ICIiOworICAgICAgICAgICAg
ICAgIHJldHVybiB0aGlzOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGRpc2FibGVkOiBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gIWxpc3Q7CisgICAgICAgICAgICB9
LAorCisgICAgICAgICAgICAvLyBEaXNhYmxlIC5maXJlCisgICAgICAgICAgICAvLyBBbHNvIGRp
c2FibGUgLmFkZCB1bmxlc3Mgd2UgaGF2ZSBtZW1vcnkgKHNpbmNlIGl0IHdvdWxkIGhhdmUgbm8g
ZWZmZWN0KQorICAgICAgICAgICAgLy8gQWJvcnQgYW55IHBlbmRpbmcgZXhlY3V0aW9ucworICAg
ICAgICAgICAgbG9jazogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgbG9ja2VkID0gcXVl
dWUgPSBbXTsKKyAgICAgICAgICAgICAgICBpZiAoICFtZW1vcnkgJiYgIWZpcmluZyApIHsKKyAg
ICAgICAgICAgICAgICAgICAgbGlzdCA9IG1lbW9yeSA9ICIiOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICBsb2NrZWQ6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHJldHVybiAhIWxvY2tlZDsK
KyAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgIC8vIENhbGwgYWxsIGNhbGxiYWNrcyB3aXRo
IHRoZSBnaXZlbiBjb250ZXh0IGFuZCBhcmd1bWVudHMKKyAgICAgICAgICAgIGZpcmVXaXRoOiBm
dW5jdGlvbiggY29udGV4dCwgYXJncyApIHsKKyAgICAgICAgICAgICAgICBpZiAoICFsb2NrZWQg
KSB7CisgICAgICAgICAgICAgICAgICAgIGFyZ3MgPSBhcmdzIHx8IFtdOworICAgICAgICAgICAg
ICAgICAgICBhcmdzID0gWyBjb250ZXh0LCBhcmdzLnNsaWNlID8gYXJncy5zbGljZSgpIDogYXJn
cyBdOworICAgICAgICAgICAgICAgICAgICBxdWV1ZS5wdXNoKCBhcmdzICk7CisgICAgICAgICAg
ICAgICAgICAgIGlmICggIWZpcmluZyApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpcmUo
KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgIC8vIENhbGwg
YWxsIHRoZSBjYWxsYmFja3Mgd2l0aCB0aGUgZ2l2ZW4gYXJndW1lbnRzCisgICAgICAgICAgICBm
aXJlOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBzZWxmLmZpcmVXaXRoKCB0aGlzLCBh
cmd1bWVudHMgKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgICAgIH0s
CisKKyAgICAgICAgICAgIC8vIFRvIGtub3cgaWYgdGhlIGNhbGxiYWNrcyBoYXZlIGFscmVhZHkg
YmVlbiBjYWxsZWQgYXQgbGVhc3Qgb25jZQorICAgICAgICAgICAgZmlyZWQ6IGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgICAgIHJldHVybiAhIWZpcmVkOworICAgICAgICAgICAgfQorICAgICAg
ICB9OworCisgICAgcmV0dXJuIHNlbGY7Cit9OworCityZXR1cm4galF1ZXJ5OworfSApOwpkaWZm
IC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2NvcmUu
anMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvY29yZS5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42OTAwYjJlNGJlNDE2YWQzZDRjYWJjNDAzMjVjNzQ5MDE3ZjcxNDM2Ci0tLSAv
ZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3Jj
L2NvcmUuanMKQEAgLTAsMCArMSw0ODIgQEAKKy8qIGdsb2JhbCBTeW1ib2wgKi8KKy8vIERlZmlu
aW5nIHRoaXMgZ2xvYmFsIGluIC5lc2xpbnRyYy5qc29uIHdvdWxkIGNyZWF0ZSBhIGRhbmdlciBv
ZiB1c2luZyB0aGUgZ2xvYmFsCisvLyB1bmd1YXJkZWQgaW4gYW5vdGhlciBwbGFjZSwgaXQgc2Vl
bXMgc2FmZXIgdG8gZGVmaW5lIGdsb2JhbCBvbmx5IGZvciB0aGlzIG1vZHVsZQorCitkZWZpbmUo
IFsKKyAgICAiLi92YXIvYXJyIiwKKyAgICAiLi92YXIvZG9jdW1lbnQiLAorICAgICIuL3Zhci9n
ZXRQcm90byIsCisgICAgIi4vdmFyL3NsaWNlIiwKKyAgICAiLi92YXIvY29uY2F0IiwKKyAgICAi
Li92YXIvcHVzaCIsCisgICAgIi4vdmFyL2luZGV4T2YiLAorICAgICIuL3Zhci9jbGFzczJ0eXBl
IiwKKyAgICAiLi92YXIvdG9TdHJpbmciLAorICAgICIuL3Zhci9oYXNPd24iLAorICAgICIuL3Zh
ci9mblRvU3RyaW5nIiwKKyAgICAiLi92YXIvT2JqZWN0RnVuY3Rpb25TdHJpbmciLAorICAgICIu
L3Zhci9zdXBwb3J0IiwKKyAgICAiLi9jb3JlL0RPTUV2YWwiCitdLCBmdW5jdGlvbiggYXJyLCBk
b2N1bWVudCwgZ2V0UHJvdG8sIHNsaWNlLCBjb25jYXQsIHB1c2gsIGluZGV4T2YsCisgICAgY2xh
c3MydHlwZSwgdG9TdHJpbmcsIGhhc093biwgZm5Ub1N0cmluZywgT2JqZWN0RnVuY3Rpb25TdHJp
bmcsCisgICAgc3VwcG9ydCwgRE9NRXZhbCApIHsKKworInVzZSBzdHJpY3QiOworCit2YXIKKyAg
ICB2ZXJzaW9uID0gIjMuMS4xIiwKKworICAgIC8vIERlZmluZSBhIGxvY2FsIGNvcHkgb2YgalF1
ZXJ5CisgICAgalF1ZXJ5ID0gZnVuY3Rpb24oIHNlbGVjdG9yLCBjb250ZXh0ICkgeworCisgICAg
ICAgIC8vIFRoZSBqUXVlcnkgb2JqZWN0IGlzIGFjdHVhbGx5IGp1c3QgdGhlIGluaXQgY29uc3Ry
dWN0b3IgJ2VuaGFuY2VkJworICAgICAgICAvLyBOZWVkIGluaXQgaWYgalF1ZXJ5IGlzIGNhbGxl
ZCAoanVzdCBhbGxvdyBlcnJvciB0byBiZSB0aHJvd24gaWYgbm90IGluY2x1ZGVkKQorICAgICAg
ICByZXR1cm4gbmV3IGpRdWVyeS5mbi5pbml0KCBzZWxlY3RvciwgY29udGV4dCApOworICAgIH0s
CisKKyAgICAvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4wIG9ubHkKKyAgICAvLyBNYWtlIHN1cmUg
d2UgdHJpbSBCT00gYW5kIE5CU1AKKyAgICBydHJpbSA9IC9eW1xzXHVGRUZGXHhBMF0rfFtcc1x1
RkVGRlx4QTBdKyQvZywKKworICAgIC8vIE1hdGNoZXMgZGFzaGVkIHN0cmluZyBmb3IgY2FtZWxp
emluZworICAgIHJtc1ByZWZpeCA9IC9eLW1zLS8sCisgICAgcmRhc2hBbHBoYSA9IC8tKFthLXpd
KS9nLAorCisgICAgLy8gVXNlZCBieSBqUXVlcnkuY2FtZWxDYXNlIGFzIGNhbGxiYWNrIHRvIHJl
cGxhY2UoKQorICAgIGZjYW1lbENhc2UgPSBmdW5jdGlvbiggYWxsLCBsZXR0ZXIgKSB7CisgICAg
ICAgIHJldHVybiBsZXR0ZXIudG9VcHBlckNhc2UoKTsKKyAgICB9OworCitqUXVlcnkuZm4gPSBq
UXVlcnkucHJvdG90eXBlID0geworCisgICAgLy8gVGhlIGN1cnJlbnQgdmVyc2lvbiBvZiBqUXVl
cnkgYmVpbmcgdXNlZAorICAgIGpxdWVyeTogdmVyc2lvbiwKKworICAgIGNvbnN0cnVjdG9yOiBq
UXVlcnksCisKKyAgICAvLyBUaGUgZGVmYXVsdCBsZW5ndGggb2YgYSBqUXVlcnkgb2JqZWN0IGlz
IDAKKyAgICBsZW5ndGg6IDAsCisKKyAgICB0b0FycmF5OiBmdW5jdGlvbigpIHsKKyAgICAgICAg
cmV0dXJuIHNsaWNlLmNhbGwoIHRoaXMgKTsKKyAgICB9LAorCisgICAgLy8gR2V0IHRoZSBOdGgg
ZWxlbWVudCBpbiB0aGUgbWF0Y2hlZCBlbGVtZW50IHNldCBPUgorICAgIC8vIEdldCB0aGUgd2hv
bGUgbWF0Y2hlZCBlbGVtZW50IHNldCBhcyBhIGNsZWFuIGFycmF5CisgICAgZ2V0OiBmdW5jdGlv
biggbnVtICkgeworCisgICAgICAgIC8vIFJldHVybiBhbGwgdGhlIGVsZW1lbnRzIGluIGEgY2xl
YW4gYXJyYXkKKyAgICAgICAgaWYgKCBudW0gPT0gbnVsbCApIHsKKyAgICAgICAgICAgIHJldHVy
biBzbGljZS5jYWxsKCB0aGlzICk7CisgICAgICAgIH0KKworICAgICAgICAvLyBSZXR1cm4ganVz
dCB0aGUgb25lIGVsZW1lbnQgZnJvbSB0aGUgc2V0CisgICAgICAgIHJldHVybiBudW0gPCAwID8g
dGhpc1sgbnVtICsgdGhpcy5sZW5ndGggXSA6IHRoaXNbIG51bSBdOworICAgIH0sCisKKyAgICAv
LyBUYWtlIGFuIGFycmF5IG9mIGVsZW1lbnRzIGFuZCBwdXNoIGl0IG9udG8gdGhlIHN0YWNrCisg
ICAgLy8gKHJldHVybmluZyB0aGUgbmV3IG1hdGNoZWQgZWxlbWVudCBzZXQpCisgICAgcHVzaFN0
YWNrOiBmdW5jdGlvbiggZWxlbXMgKSB7CisKKyAgICAgICAgLy8gQnVpbGQgYSBuZXcgalF1ZXJ5
IG1hdGNoZWQgZWxlbWVudCBzZXQKKyAgICAgICAgdmFyIHJldCA9IGpRdWVyeS5tZXJnZSggdGhp
cy5jb25zdHJ1Y3RvcigpLCBlbGVtcyApOworCisgICAgICAgIC8vIEFkZCB0aGUgb2xkIG9iamVj
dCBvbnRvIHRoZSBzdGFjayAoYXMgYSByZWZlcmVuY2UpCisgICAgICAgIHJldC5wcmV2T2JqZWN0
ID0gdGhpczsKKworICAgICAgICAvLyBSZXR1cm4gdGhlIG5ld2x5LWZvcm1lZCBlbGVtZW50IHNl
dAorICAgICAgICByZXR1cm4gcmV0OworICAgIH0sCisKKyAgICAvLyBFeGVjdXRlIGEgY2FsbGJh
Y2sgZm9yIGV2ZXJ5IGVsZW1lbnQgaW4gdGhlIG1hdGNoZWQgc2V0LgorICAgIGVhY2g6IGZ1bmN0
aW9uKCBjYWxsYmFjayApIHsKKyAgICAgICAgcmV0dXJuIGpRdWVyeS5lYWNoKCB0aGlzLCBjYWxs
YmFjayApOworICAgIH0sCisKKyAgICBtYXA6IGZ1bmN0aW9uKCBjYWxsYmFjayApIHsKKyAgICAg
ICAgcmV0dXJuIHRoaXMucHVzaFN0YWNrKCBqUXVlcnkubWFwKCB0aGlzLCBmdW5jdGlvbiggZWxl
bSwgaSApIHsKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjay5jYWxsKCBlbGVtLCBpLCBlbGVt
ICk7CisgICAgICAgIH0gKSApOworICAgIH0sCisKKyAgICBzbGljZTogZnVuY3Rpb24oKSB7Cisg
ICAgICAgIHJldHVybiB0aGlzLnB1c2hTdGFjayggc2xpY2UuYXBwbHkoIHRoaXMsIGFyZ3VtZW50
cyApICk7CisgICAgfSwKKworICAgIGZpcnN0OiBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJu
IHRoaXMuZXEoIDAgKTsKKyAgICB9LAorCisgICAgbGFzdDogZnVuY3Rpb24oKSB7CisgICAgICAg
IHJldHVybiB0aGlzLmVxKCAtMSApOworICAgIH0sCisKKyAgICBlcTogZnVuY3Rpb24oIGkgKSB7
CisgICAgICAgIHZhciBsZW4gPSB0aGlzLmxlbmd0aCwKKyAgICAgICAgICAgIGogPSAraSArICgg
aSA8IDAgPyBsZW4gOiAwICk7CisgICAgICAgIHJldHVybiB0aGlzLnB1c2hTdGFjayggaiA+PSAw
ICYmIGogPCBsZW4gPyBbIHRoaXNbIGogXSBdIDogW10gKTsKKyAgICB9LAorCisgICAgZW5kOiBm
dW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMucHJldk9iamVjdCB8fCB0aGlzLmNvbnN0
cnVjdG9yKCk7CisgICAgfSwKKworICAgIC8vIEZvciBpbnRlcm5hbCB1c2Ugb25seS4KKyAgICAv
LyBCZWhhdmVzIGxpa2UgYW4gQXJyYXkncyBtZXRob2QsIG5vdCBsaWtlIGEgalF1ZXJ5IG1ldGhv
ZC4KKyAgICBwdXNoOiBwdXNoLAorICAgIHNvcnQ6IGFyci5zb3J0LAorICAgIHNwbGljZTogYXJy
LnNwbGljZQorfTsKKworalF1ZXJ5LmV4dGVuZCA9IGpRdWVyeS5mbi5leHRlbmQgPSBmdW5jdGlv
bigpIHsKKyAgICB2YXIgb3B0aW9ucywgbmFtZSwgc3JjLCBjb3B5LCBjb3B5SXNBcnJheSwgY2xv
bmUsCisgICAgICAgIHRhcmdldCA9IGFyZ3VtZW50c1sgMCBdIHx8IHt9LAorICAgICAgICBpID0g
MSwKKyAgICAgICAgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aCwKKyAgICAgICAgZGVlcCA9IGZh
bHNlOworCisgICAgLy8gSGFuZGxlIGEgZGVlcCBjb3B5IHNpdHVhdGlvbgorICAgIGlmICggdHlw
ZW9mIHRhcmdldCA9PT0gImJvb2xlYW4iICkgeworICAgICAgICBkZWVwID0gdGFyZ2V0OworCisg
ICAgICAgIC8vIFNraXAgdGhlIGJvb2xlYW4gYW5kIHRoZSB0YXJnZXQKKyAgICAgICAgdGFyZ2V0
ID0gYXJndW1lbnRzWyBpIF0gfHwge307CisgICAgICAgIGkrKzsKKyAgICB9CisKKyAgICAvLyBI
YW5kbGUgY2FzZSB3aGVuIHRhcmdldCBpcyBhIHN0cmluZyBvciBzb21ldGhpbmcgKHBvc3NpYmxl
IGluIGRlZXAgY29weSkKKyAgICBpZiAoIHR5cGVvZiB0YXJnZXQgIT09ICJvYmplY3QiICYmICFq
UXVlcnkuaXNGdW5jdGlvbiggdGFyZ2V0ICkgKSB7CisgICAgICAgIHRhcmdldCA9IHt9OworICAg
IH0KKworICAgIC8vIEV4dGVuZCBqUXVlcnkgaXRzZWxmIGlmIG9ubHkgb25lIGFyZ3VtZW50IGlz
IHBhc3NlZAorICAgIGlmICggaSA9PT0gbGVuZ3RoICkgeworICAgICAgICB0YXJnZXQgPSB0aGlz
OworICAgICAgICBpLS07CisgICAgfQorCisgICAgZm9yICggOyBpIDwgbGVuZ3RoOyBpKysgKSB7
CisKKyAgICAgICAgLy8gT25seSBkZWFsIHdpdGggbm9uLW51bGwvdW5kZWZpbmVkIHZhbHVlcwor
ICAgICAgICBpZiAoICggb3B0aW9ucyA9IGFyZ3VtZW50c1sgaSBdICkgIT0gbnVsbCApIHsKKwor
ICAgICAgICAgICAgLy8gRXh0ZW5kIHRoZSBiYXNlIG9iamVjdAorICAgICAgICAgICAgZm9yICgg
bmFtZSBpbiBvcHRpb25zICkgeworICAgICAgICAgICAgICAgIHNyYyA9IHRhcmdldFsgbmFtZSBd
OworICAgICAgICAgICAgICAgIGNvcHkgPSBvcHRpb25zWyBuYW1lIF07CisKKyAgICAgICAgICAg
ICAgICAvLyBQcmV2ZW50IG5ldmVyLWVuZGluZyBsb29wCisgICAgICAgICAgICAgICAgaWYgKCB0
YXJnZXQgPT09IGNvcHkgKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIFJlY3Vyc2UgaWYgd2UncmUgbWVyZ2lu
ZyBwbGFpbiBvYmplY3RzIG9yIGFycmF5cworICAgICAgICAgICAgICAgIGlmICggZGVlcCAmJiBj
b3B5ICYmICggalF1ZXJ5LmlzUGxhaW5PYmplY3QoIGNvcHkgKSB8fAorICAgICAgICAgICAgICAg
ICAgICAoIGNvcHlJc0FycmF5ID0galF1ZXJ5LmlzQXJyYXkoIGNvcHkgKSApICkgKSB7CisKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKCBjb3B5SXNBcnJheSApIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNvcHlJc0FycmF5ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBjbG9u
ZSA9IHNyYyAmJiBqUXVlcnkuaXNBcnJheSggc3JjICkgPyBzcmMgOiBbXTsKKworICAgICAgICAg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgY2xvbmUgPSBzcmMg
JiYgalF1ZXJ5LmlzUGxhaW5PYmplY3QoIHNyYyApID8gc3JjIDoge307CisgICAgICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAvLyBOZXZlciBtb3ZlIG9yaWdpbmFsIG9i
amVjdHMsIGNsb25lIHRoZW0KKyAgICAgICAgICAgICAgICAgICAgdGFyZ2V0WyBuYW1lIF0gPSBq
UXVlcnkuZXh0ZW5kKCBkZWVwLCBjbG9uZSwgY29weSApOworCisgICAgICAgICAgICAgICAgLy8g
RG9uJ3QgYnJpbmcgaW4gdW5kZWZpbmVkIHZhbHVlcworICAgICAgICAgICAgICAgIH0gZWxzZSBp
ZiAoIGNvcHkgIT09IHVuZGVmaW5lZCApIHsKKyAgICAgICAgICAgICAgICAgICAgdGFyZ2V0WyBu
YW1lIF0gPSBjb3B5OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KKworICAgIC8vIFJldHVybiB0aGUgbW9kaWZpZWQgb2JqZWN0CisgICAgcmV0dXJu
IHRhcmdldDsKK307CisKK2pRdWVyeS5leHRlbmQoIHsKKworICAgIC8vIFVuaXF1ZSBmb3IgZWFj
aCBjb3B5IG9mIGpRdWVyeSBvbiB0aGUgcGFnZQorICAgIGV4cGFuZG86ICJqUXVlcnkiICsgKCB2
ZXJzaW9uICsgTWF0aC5yYW5kb20oKSApLnJlcGxhY2UoIC9cRC9nLCAiIiApLAorCisgICAgLy8g
QXNzdW1lIGpRdWVyeSBpcyByZWFkeSB3aXRob3V0IHRoZSByZWFkeSBtb2R1bGUKKyAgICBpc1Jl
YWR5OiB0cnVlLAorCisgICAgZXJyb3I6IGZ1bmN0aW9uKCBtc2cgKSB7CisgICAgICAgIHRocm93
IG5ldyBFcnJvciggbXNnICk7CisgICAgfSwKKworICAgIG5vb3A6IGZ1bmN0aW9uKCkge30sCisK
KyAgICBpc0Z1bmN0aW9uOiBmdW5jdGlvbiggb2JqICkgeworICAgICAgICByZXR1cm4galF1ZXJ5
LnR5cGUoIG9iaiApID09PSAiZnVuY3Rpb24iOworICAgIH0sCisKKyAgICBpc0FycmF5OiBBcnJh
eS5pc0FycmF5LAorCisgICAgaXNXaW5kb3c6IGZ1bmN0aW9uKCBvYmogKSB7CisgICAgICAgIHJl
dHVybiBvYmogIT0gbnVsbCAmJiBvYmogPT09IG9iai53aW5kb3c7CisgICAgfSwKKworICAgIGlz
TnVtZXJpYzogZnVuY3Rpb24oIG9iaiApIHsKKworICAgICAgICAvLyBBcyBvZiBqUXVlcnkgMy4w
LCBpc051bWVyaWMgaXMgbGltaXRlZCB0bworICAgICAgICAvLyBzdHJpbmdzIGFuZCBudW1iZXJz
IChwcmltaXRpdmVzIG9yIG9iamVjdHMpCisgICAgICAgIC8vIHRoYXQgY2FuIGJlIGNvZXJjZWQg
dG8gZmluaXRlIG51bWJlcnMgKGdoLTI2NjIpCisgICAgICAgIHZhciB0eXBlID0galF1ZXJ5LnR5
cGUoIG9iaiApOworICAgICAgICByZXR1cm4gKCB0eXBlID09PSAibnVtYmVyIiB8fCB0eXBlID09
PSAic3RyaW5nIiApICYmCisKKyAgICAgICAgICAgIC8vIHBhcnNlRmxvYXQgTmFOcyBudW1lcmlj
LWNhc3QgZmFsc2UgcG9zaXRpdmVzICgiIikKKyAgICAgICAgICAgIC8vIC4uLmJ1dCBtaXNpbnRl
cnByZXRzIGxlYWRpbmctbnVtYmVyIHN0cmluZ3MsIHBhcnRpY3VsYXJseSBoZXggbGl0ZXJhbHMg
KCIweC4uLiIpCisgICAgICAgICAgICAvLyBzdWJ0cmFjdGlvbiBmb3JjZXMgaW5maW5pdGllcyB0
byBOYU4KKyAgICAgICAgICAgICFpc05hTiggb2JqIC0gcGFyc2VGbG9hdCggb2JqICkgKTsKKyAg
ICB9LAorCisgICAgaXNQbGFpbk9iamVjdDogZnVuY3Rpb24oIG9iaiApIHsKKyAgICAgICAgdmFy
IHByb3RvLCBDdG9yOworCisgICAgICAgIC8vIERldGVjdCBvYnZpb3VzIG5lZ2F0aXZlcworICAg
ICAgICAvLyBVc2UgdG9TdHJpbmcgaW5zdGVhZCBvZiBqUXVlcnkudHlwZSB0byBjYXRjaCBob3N0
IG9iamVjdHMKKyAgICAgICAgaWYgKCAhb2JqIHx8IHRvU3RyaW5nLmNhbGwoIG9iaiApICE9PSAi
W29iamVjdCBPYmplY3RdIiApIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
fQorCisgICAgICAgIHByb3RvID0gZ2V0UHJvdG8oIG9iaiApOworCisgICAgICAgIC8vIE9iamVj
dHMgd2l0aCBubyBwcm90b3R5cGUgKGUuZy4sIGBPYmplY3QuY3JlYXRlKCBudWxsIClgKSBhcmUg
cGxhaW4KKyAgICAgICAgaWYgKCAhcHJvdG8gKSB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgfQorCisgICAgICAgIC8vIE9iamVjdHMgd2l0aCBwcm90b3R5cGUgYXJlIHBsYWlu
IGlmZiB0aGV5IHdlcmUgY29uc3RydWN0ZWQgYnkgYSBnbG9iYWwgT2JqZWN0IGZ1bmN0aW9uCisg
ICAgICAgIEN0b3IgPSBoYXNPd24uY2FsbCggcHJvdG8sICJjb25zdHJ1Y3RvciIgKSAmJiBwcm90
by5jb25zdHJ1Y3RvcjsKKyAgICAgICAgcmV0dXJuIHR5cGVvZiBDdG9yID09PSAiZnVuY3Rpb24i
ICYmIGZuVG9TdHJpbmcuY2FsbCggQ3RvciApID09PSBPYmplY3RGdW5jdGlvblN0cmluZzsKKyAg
ICB9LAorCisgICAgaXNFbXB0eU9iamVjdDogZnVuY3Rpb24oIG9iaiApIHsKKworICAgICAgICAv
KiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqLworICAgICAgICAvLyBTZWUgaHR0cHM6
Ly9naXRodWIuY29tL2VzbGludC9lc2xpbnQvaXNzdWVzLzYxMjUKKyAgICAgICAgdmFyIG5hbWU7
CisKKyAgICAgICAgZm9yICggbmFtZSBpbiBvYmogKSB7CisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSwKKworICAgIHR5cGU6
IGZ1bmN0aW9uKCBvYmogKSB7CisgICAgICAgIGlmICggb2JqID09IG51bGwgKSB7CisgICAgICAg
ICAgICByZXR1cm4gb2JqICsgIiI7CisgICAgICAgIH0KKworICAgICAgICAvLyBTdXBwb3J0OiBB
bmRyb2lkIDw9Mi4zIG9ubHkgKGZ1bmN0aW9uaXNoIFJlZ0V4cCkKKyAgICAgICAgcmV0dXJuIHR5
cGVvZiBvYmogPT09ICJvYmplY3QiIHx8IHR5cGVvZiBvYmogPT09ICJmdW5jdGlvbiIgPworICAg
ICAgICAgICAgY2xhc3MydHlwZVsgdG9TdHJpbmcuY2FsbCggb2JqICkgXSB8fCAib2JqZWN0IiA6
CisgICAgICAgICAgICB0eXBlb2Ygb2JqOworICAgIH0sCisKKyAgICAvLyBFdmFsdWF0ZXMgYSBz
Y3JpcHQgaW4gYSBnbG9iYWwgY29udGV4dAorICAgIGdsb2JhbEV2YWw6IGZ1bmN0aW9uKCBjb2Rl
ICkgeworICAgICAgICBET01FdmFsKCBjb2RlICk7CisgICAgfSwKKworICAgIC8vIENvbnZlcnQg
ZGFzaGVkIHRvIGNhbWVsQ2FzZTsgdXNlZCBieSB0aGUgY3NzIGFuZCBkYXRhIG1vZHVsZXMKKyAg
ICAvLyBTdXBwb3J0OiBJRSA8PTkgLSAxMSwgRWRnZSAxMiAtIDEzCisgICAgLy8gTWljcm9zb2Z0
IGZvcmdvdCB0byBodW1wIHRoZWlyIHZlbmRvciBwcmVmaXggKCM5NTcyKQorICAgIGNhbWVsQ2Fz
ZTogZnVuY3Rpb24oIHN0cmluZyApIHsKKyAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKCBy
bXNQcmVmaXgsICJtcy0iICkucmVwbGFjZSggcmRhc2hBbHBoYSwgZmNhbWVsQ2FzZSApOworICAg
IH0sCisKKyAgICBub2RlTmFtZTogZnVuY3Rpb24oIGVsZW0sIG5hbWUgKSB7CisgICAgICAgIHJl
dHVybiBlbGVtLm5vZGVOYW1lICYmIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gbmFt
ZS50b0xvd2VyQ2FzZSgpOworICAgIH0sCisKKyAgICBlYWNoOiBmdW5jdGlvbiggb2JqLCBjYWxs
YmFjayApIHsKKyAgICAgICAgdmFyIGxlbmd0aCwgaSA9IDA7CisKKyAgICAgICAgaWYgKCBpc0Fy
cmF5TGlrZSggb2JqICkgKSB7CisgICAgICAgICAgICBsZW5ndGggPSBvYmoubGVuZ3RoOworICAg
ICAgICAgICAgZm9yICggOyBpIDwgbGVuZ3RoOyBpKysgKSB7CisgICAgICAgICAgICAgICAgaWYg
KCBjYWxsYmFjay5jYWxsKCBvYmpbIGkgXSwgaSwgb2JqWyBpIF0gKSA9PT0gZmFsc2UgKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGZvciAoIGkgaW4gb2JqICkgeworICAg
ICAgICAgICAgICAgIGlmICggY2FsbGJhY2suY2FsbCggb2JqWyBpIF0sIGksIG9ialsgaSBdICkg
PT09IGZhbHNlICkgeworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gb2JqOworICAg
IH0sCisKKyAgICAvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4wIG9ubHkKKyAgICB0cmltOiBmdW5j
dGlvbiggdGV4dCApIHsKKyAgICAgICAgcmV0dXJuIHRleHQgPT0gbnVsbCA/CisgICAgICAgICAg
ICAiIiA6CisgICAgICAgICAgICAoIHRleHQgKyAiIiApLnJlcGxhY2UoIHJ0cmltLCAiIiApOwor
ICAgIH0sCisKKyAgICAvLyByZXN1bHRzIGlzIGZvciBpbnRlcm5hbCB1c2FnZSBvbmx5CisgICAg
bWFrZUFycmF5OiBmdW5jdGlvbiggYXJyLCByZXN1bHRzICkgeworICAgICAgICB2YXIgcmV0ID0g
cmVzdWx0cyB8fCBbXTsKKworICAgICAgICBpZiAoIGFyciAhPSBudWxsICkgeworICAgICAgICAg
ICAgaWYgKCBpc0FycmF5TGlrZSggT2JqZWN0KCBhcnIgKSApICkgeworICAgICAgICAgICAgICAg
IGpRdWVyeS5tZXJnZSggcmV0LAorICAgICAgICAgICAgICAgICAgICB0eXBlb2YgYXJyID09PSAi
c3RyaW5nIiA/CisgICAgICAgICAgICAgICAgICAgIFsgYXJyIF0gOiBhcnIKKyAgICAgICAgICAg
ICAgICApOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBwdXNoLmNhbGwo
IHJldCwgYXJyICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4g
cmV0OworICAgIH0sCisKKyAgICBpbkFycmF5OiBmdW5jdGlvbiggZWxlbSwgYXJyLCBpICkgewor
ICAgICAgICByZXR1cm4gYXJyID09IG51bGwgPyAtMSA6IGluZGV4T2YuY2FsbCggYXJyLCBlbGVt
LCBpICk7CisgICAgfSwKKworICAgIC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00LjAgb25seSwgUGhh
bnRvbUpTIDEgb25seQorICAgIC8vIHB1c2guYXBwbHkoXywgYXJyYXlsaWtlKSB0aHJvd3Mgb24g
YW5jaWVudCBXZWJLaXQKKyAgICBtZXJnZTogZnVuY3Rpb24oIGZpcnN0LCBzZWNvbmQgKSB7Cisg
ICAgICAgIHZhciBsZW4gPSArc2Vjb25kLmxlbmd0aCwKKyAgICAgICAgICAgIGogPSAwLAorICAg
ICAgICAgICAgaSA9IGZpcnN0Lmxlbmd0aDsKKworICAgICAgICBmb3IgKCA7IGogPCBsZW47IGor
KyApIHsKKyAgICAgICAgICAgIGZpcnN0WyBpKysgXSA9IHNlY29uZFsgaiBdOworICAgICAgICB9
CisKKyAgICAgICAgZmlyc3QubGVuZ3RoID0gaTsKKworICAgICAgICByZXR1cm4gZmlyc3Q7Cisg
ICAgfSwKKworICAgIGdyZXA6IGZ1bmN0aW9uKCBlbGVtcywgY2FsbGJhY2ssIGludmVydCApIHsK
KyAgICAgICAgdmFyIGNhbGxiYWNrSW52ZXJzZSwKKyAgICAgICAgICAgIG1hdGNoZXMgPSBbXSwK
KyAgICAgICAgICAgIGkgPSAwLAorICAgICAgICAgICAgbGVuZ3RoID0gZWxlbXMubGVuZ3RoLAor
ICAgICAgICAgICAgY2FsbGJhY2tFeHBlY3QgPSAhaW52ZXJ0OworCisgICAgICAgIC8vIEdvIHRo
cm91Z2ggdGhlIGFycmF5LCBvbmx5IHNhdmluZyB0aGUgaXRlbXMKKyAgICAgICAgLy8gdGhhdCBw
YXNzIHRoZSB2YWxpZGF0b3IgZnVuY3Rpb24KKyAgICAgICAgZm9yICggOyBpIDwgbGVuZ3RoOyBp
KysgKSB7CisgICAgICAgICAgICBjYWxsYmFja0ludmVyc2UgPSAhY2FsbGJhY2soIGVsZW1zWyBp
IF0sIGkgKTsKKyAgICAgICAgICAgIGlmICggY2FsbGJhY2tJbnZlcnNlICE9PSBjYWxsYmFja0V4
cGVjdCApIHsKKyAgICAgICAgICAgICAgICBtYXRjaGVzLnB1c2goIGVsZW1zWyBpIF0gKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBtYXRjaGVzOworICAgIH0s
CisKKyAgICAvLyBhcmcgaXMgZm9yIGludGVybmFsIHVzYWdlIG9ubHkKKyAgICBtYXA6IGZ1bmN0
aW9uKCBlbGVtcywgY2FsbGJhY2ssIGFyZyApIHsKKyAgICAgICAgdmFyIGxlbmd0aCwgdmFsdWUs
CisgICAgICAgICAgICBpID0gMCwKKyAgICAgICAgICAgIHJldCA9IFtdOworCisgICAgICAgIC8v
IEdvIHRocm91Z2ggdGhlIGFycmF5LCB0cmFuc2xhdGluZyBlYWNoIG9mIHRoZSBpdGVtcyB0byB0
aGVpciBuZXcgdmFsdWVzCisgICAgICAgIGlmICggaXNBcnJheUxpa2UoIGVsZW1zICkgKSB7Cisg
ICAgICAgICAgICBsZW5ndGggPSBlbGVtcy5sZW5ndGg7CisgICAgICAgICAgICBmb3IgKCA7IGkg
PCBsZW5ndGg7IGkrKyApIHsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IGNhbGxiYWNrKCBlbGVt
c1sgaSBdLCBpLCBhcmcgKTsKKworICAgICAgICAgICAgICAgIGlmICggdmFsdWUgIT0gbnVsbCAp
IHsKKyAgICAgICAgICAgICAgICAgICAgcmV0LnB1c2goIHZhbHVlICk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgIC8vIEdvIHRocm91Z2ggZXZlcnkga2V5IG9u
IHRoZSBvYmplY3QsCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBmb3IgKCBpIGluIGVs
ZW1zICkgeworICAgICAgICAgICAgICAgIHZhbHVlID0gY2FsbGJhY2soIGVsZW1zWyBpIF0sIGks
IGFyZyApOworCisgICAgICAgICAgICAgICAgaWYgKCB2YWx1ZSAhPSBudWxsICkgeworICAgICAg
ICAgICAgICAgICAgICByZXQucHVzaCggdmFsdWUgKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBGbGF0dGVuIGFueSBuZXN0ZWQgYXJy
YXlzCisgICAgICAgIHJldHVybiBjb25jYXQuYXBwbHkoIFtdLCByZXQgKTsKKyAgICB9LAorCisg
ICAgLy8gQSBnbG9iYWwgR1VJRCBjb3VudGVyIGZvciBvYmplY3RzCisgICAgZ3VpZDogMSwKKwor
ICAgIC8vIEJpbmQgYSBmdW5jdGlvbiB0byBhIGNvbnRleHQsIG9wdGlvbmFsbHkgcGFydGlhbGx5
IGFwcGx5aW5nIGFueQorICAgIC8vIGFyZ3VtZW50cy4KKyAgICBwcm94eTogZnVuY3Rpb24oIGZu
LCBjb250ZXh0ICkgeworICAgICAgICB2YXIgdG1wLCBhcmdzLCBwcm94eTsKKworICAgICAgICBp
ZiAoIHR5cGVvZiBjb250ZXh0ID09PSAic3RyaW5nIiApIHsKKyAgICAgICAgICAgIHRtcCA9IGZu
WyBjb250ZXh0IF07CisgICAgICAgICAgICBjb250ZXh0ID0gZm47CisgICAgICAgICAgICBmbiA9
IHRtcDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFF1aWNrIGNoZWNrIHRvIGRldGVybWluZSBp
ZiB0YXJnZXQgaXMgY2FsbGFibGUsIGluIHRoZSBzcGVjCisgICAgICAgIC8vIHRoaXMgdGhyb3dz
IGEgVHlwZUVycm9yLCBidXQgd2Ugd2lsbCBqdXN0IHJldHVybiB1bmRlZmluZWQuCisgICAgICAg
IGlmICggIWpRdWVyeS5pc0Z1bmN0aW9uKCBmbiApICkgeworICAgICAgICAgICAgcmV0dXJuIHVu
ZGVmaW5lZDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFNpbXVsYXRlZCBiaW5kCisgICAgICAg
IGFyZ3MgPSBzbGljZS5jYWxsKCBhcmd1bWVudHMsIDIgKTsKKyAgICAgICAgcHJveHkgPSBmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgIHJldHVybiBmbi5hcHBseSggY29udGV4dCB8fCB0aGlzLCBh
cmdzLmNvbmNhdCggc2xpY2UuY2FsbCggYXJndW1lbnRzICkgKSApOworICAgICAgICB9OworCisg
ICAgICAgIC8vIFNldCB0aGUgZ3VpZCBvZiB1bmlxdWUgaGFuZGxlciB0byB0aGUgc2FtZSBvZiBv
cmlnaW5hbCBoYW5kbGVyLCBzbyBpdCBjYW4gYmUgcmVtb3ZlZAorICAgICAgICBwcm94eS5ndWlk
ID0gZm4uZ3VpZCA9IGZuLmd1aWQgfHwgalF1ZXJ5Lmd1aWQrKzsKKworICAgICAgICByZXR1cm4g
cHJveHk7CisgICAgfSwKKworICAgIG5vdzogRGF0ZS5ub3csCisKKyAgICAvLyBqUXVlcnkuc3Vw
cG9ydCBpcyBub3QgdXNlZCBpbiBDb3JlIGJ1dCBvdGhlciBwcm9qZWN0cyBhdHRhY2ggdGhlaXIK
KyAgICAvLyBwcm9wZXJ0aWVzIHRvIGl0IHNvIGl0IG5lZWRzIHRvIGV4aXN0LgorICAgIHN1cHBv
cnQ6IHN1cHBvcnQKK30gKTsKKworaWYgKCB0eXBlb2YgU3ltYm9sID09PSAiZnVuY3Rpb24iICkg
eworICAgIGpRdWVyeS5mblsgU3ltYm9sLml0ZXJhdG9yIF0gPSBhcnJbIFN5bWJvbC5pdGVyYXRv
ciBdOworfQorCisvLyBQb3B1bGF0ZSB0aGUgY2xhc3MydHlwZSBtYXAKK2pRdWVyeS5lYWNoKCAi
Qm9vbGVhbiBOdW1iZXIgU3RyaW5nIEZ1bmN0aW9uIEFycmF5IERhdGUgUmVnRXhwIE9iamVjdCBF
cnJvciBTeW1ib2wiLnNwbGl0KCAiICIgKSwKK2Z1bmN0aW9uKCBpLCBuYW1lICkgeworICAgIGNs
YXNzMnR5cGVbICJbb2JqZWN0ICIgKyBuYW1lICsgIl0iIF0gPSBuYW1lLnRvTG93ZXJDYXNlKCk7
Cit9ICk7CisKK2Z1bmN0aW9uIGlzQXJyYXlMaWtlKCBvYmogKSB7CisKKyAgICAvLyBTdXBwb3J0
OiByZWFsIGlPUyA4LjIgb25seSAobm90IHJlcHJvZHVjaWJsZSBpbiBzaW11bGF0b3IpCisgICAg
Ly8gYGluYCBjaGVjayB1c2VkIHRvIHByZXZlbnQgSklUIGVycm9yIChnaC0yMTQ1KQorICAgIC8v
IGhhc093biBpc24ndCB1c2VkIGhlcmUgZHVlIHRvIGZhbHNlIG5lZ2F0aXZlcworICAgIC8vIHJl
Z2FyZGluZyBOb2RlbGlzdCBsZW5ndGggaW4gSUUKKyAgICB2YXIgbGVuZ3RoID0gISFvYmogJiYg
Imxlbmd0aCIgaW4gb2JqICYmIG9iai5sZW5ndGgsCisgICAgICAgIHR5cGUgPSBqUXVlcnkudHlw
ZSggb2JqICk7CisKKyAgICBpZiAoIHR5cGUgPT09ICJmdW5jdGlvbiIgfHwgalF1ZXJ5LmlzV2lu
ZG93KCBvYmogKSApIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVy
biB0eXBlID09PSAiYXJyYXkiIHx8IGxlbmd0aCA9PT0gMCB8fAorICAgICAgICB0eXBlb2YgbGVu
Z3RoID09PSAibnVtYmVyIiAmJiBsZW5ndGggPiAwICYmICggbGVuZ3RoIC0gMSApIGluIG9iajsK
K30KKworcmV0dXJuIGpRdWVyeTsKK30gKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVy
eS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9jb3JlL0RPTUV2YWwuanMgYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9q
cXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvY29yZS9ET01FdmFsLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjY2MzAxMDEyNjA2YWEyNWEzZWFmMzVjZTNkZDdhMDkyZDM2OGFkMTUKLS0tIC9kZXYvbnVsbAor
KysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvY29yZS9ET01F
dmFsLmpzCkBAIC0wLDAgKzEsMTYgQEAKK2RlZmluZSggWworICAgICIuLi92YXIvZG9jdW1lbnQi
CitdLCBmdW5jdGlvbiggZG9jdW1lbnQgKSB7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgZnVu
Y3Rpb24gRE9NRXZhbCggY29kZSwgZG9jICkgeworICAgICAgICBkb2MgPSBkb2MgfHwgZG9jdW1l
bnQ7CisKKyAgICAgICAgdmFyIHNjcmlwdCA9IGRvYy5jcmVhdGVFbGVtZW50KCAic2NyaXB0IiAp
OworCisgICAgICAgIHNjcmlwdC50ZXh0ID0gY29kZTsKKyAgICAgICAgZG9jLmhlYWQuYXBwZW5k
Q2hpbGQoIHNjcmlwdCApLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoIHNjcmlwdCApOworICAgIH0K
KworICAgIHJldHVybiBET01FdmFsOworfSApOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1
ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2NvcmUvYWNjZXNzLmpzIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
anF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2NvcmUvYWNjZXNzLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljk3NDYzNTI1MzAxMmI1NjE5OWExOTI0OGE1MDkxZGRlM2EwYjM4OGEKLS0tIC9kZXYvbnVsbAor
KysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvY29yZS9hY2Nl
c3MuanMKQEAgLTAsMCArMSw3MCBAQAorZGVmaW5lKCBbCisgICAgIi4uL2NvcmUiCitdLCBmdW5j
dGlvbiggalF1ZXJ5ICkgeworCisidXNlIHN0cmljdCI7CisKKy8vIE11bHRpZnVuY3Rpb25hbCBt
ZXRob2QgdG8gZ2V0IGFuZCBzZXQgdmFsdWVzIG9mIGEgY29sbGVjdGlvbgorLy8gVGhlIHZhbHVl
L3MgY2FuIG9wdGlvbmFsbHkgYmUgZXhlY3V0ZWQgaWYgaXQncyBhIGZ1bmN0aW9uCit2YXIgYWNj
ZXNzID0gZnVuY3Rpb24oIGVsZW1zLCBmbiwga2V5LCB2YWx1ZSwgY2hhaW5hYmxlLCBlbXB0eUdl
dCwgcmF3ICkgeworICAgIHZhciBpID0gMCwKKyAgICAgICAgbGVuID0gZWxlbXMubGVuZ3RoLAor
ICAgICAgICBidWxrID0ga2V5ID09IG51bGw7CisKKyAgICAvLyBTZXRzIG1hbnkgdmFsdWVzCisg
ICAgaWYgKCBqUXVlcnkudHlwZSgga2V5ICkgPT09ICJvYmplY3QiICkgeworICAgICAgICBjaGFp
bmFibGUgPSB0cnVlOworICAgICAgICBmb3IgKCBpIGluIGtleSApIHsKKyAgICAgICAgICAgIGFj
Y2VzcyggZWxlbXMsIGZuLCBpLCBrZXlbIGkgXSwgdHJ1ZSwgZW1wdHlHZXQsIHJhdyApOworICAg
ICAgICB9CisKKyAgICAvLyBTZXRzIG9uZSB2YWx1ZQorICAgIH0gZWxzZSBpZiAoIHZhbHVlICE9
PSB1bmRlZmluZWQgKSB7CisgICAgICAgIGNoYWluYWJsZSA9IHRydWU7CisKKyAgICAgICAgaWYg
KCAhalF1ZXJ5LmlzRnVuY3Rpb24oIHZhbHVlICkgKSB7CisgICAgICAgICAgICByYXcgPSB0cnVl
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKCBidWxrICkgeworCisgICAgICAgICAgICAvLyBC
dWxrIG9wZXJhdGlvbnMgcnVuIGFnYWluc3QgdGhlIGVudGlyZSBzZXQKKyAgICAgICAgICAgIGlm
ICggcmF3ICkgeworICAgICAgICAgICAgICAgIGZuLmNhbGwoIGVsZW1zLCB2YWx1ZSApOworICAg
ICAgICAgICAgICAgIGZuID0gbnVsbDsKKworICAgICAgICAgICAgLy8gLi4uZXhjZXB0IHdoZW4g
ZXhlY3V0aW5nIGZ1bmN0aW9uIHZhbHVlcworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBidWxrID0gZm47CisgICAgICAgICAgICAgICAgZm4gPSBmdW5jdGlvbiggZWxlbSwg
a2V5LCB2YWx1ZSApIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJ1bGsuY2FsbCggalF1
ZXJ5KCBlbGVtICksIHZhbHVlICk7CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorCisgICAgICAgIGlmICggZm4gKSB7CisgICAgICAgICAgICBmb3IgKCA7IGkg
PCBsZW47IGkrKyApIHsKKyAgICAgICAgICAgICAgICBmbigKKyAgICAgICAgICAgICAgICAgICAg
ZWxlbXNbIGkgXSwga2V5LCByYXcgPworICAgICAgICAgICAgICAgICAgICB2YWx1ZSA6CisgICAg
ICAgICAgICAgICAgICAgIHZhbHVlLmNhbGwoIGVsZW1zWyBpIF0sIGksIGZuKCBlbGVtc1sgaSBd
LCBrZXkgKSApCisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0KKworICAgIGlmICggY2hhaW5hYmxlICkgeworICAgICAgICByZXR1cm4gZWxlbXM7Cisg
ICAgfQorCisgICAgLy8gR2V0cworICAgIGlmICggYnVsayApIHsKKyAgICAgICAgcmV0dXJuIGZu
LmNhbGwoIGVsZW1zICk7CisgICAgfQorCisgICAgcmV0dXJuIGxlbiA/IGZuKCBlbGVtc1sgMCBd
LCBrZXkgKSA6IGVtcHR5R2V0OworfTsKKworcmV0dXJuIGFjY2VzczsKKworfSApOwpkaWZmIC0t
Z2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2NvcmUvaW5p
dC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9jb3JlL2lu
aXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZWM0ZmMxZmZlODU2ZmU4YzM2YzZjOTdhZWE1YmFmYjVhN2E3ZjIx
NgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1
ZXJ5L3NyYy9jb3JlL2luaXQuanMKQEAgLTAsMCArMSwxMjcgQEAKKy8vIEluaXRpYWxpemUgYSBq
UXVlcnkgb2JqZWN0CitkZWZpbmUoIFsKKyAgICAiLi4vY29yZSIsCisgICAgIi4uL3Zhci9kb2N1
bWVudCIsCisgICAgIi4vdmFyL3JzaW5nbGVUYWciLAorICAgICIuLi90cmF2ZXJzaW5nL2ZpbmRG
aWx0ZXIiCitdLCBmdW5jdGlvbiggalF1ZXJ5LCBkb2N1bWVudCwgcnNpbmdsZVRhZyApIHsKKwor
InVzZSBzdHJpY3QiOworCisvLyBBIGNlbnRyYWwgcmVmZXJlbmNlIHRvIHRoZSByb290IGpRdWVy
eShkb2N1bWVudCkKK3ZhciByb290alF1ZXJ5LAorCisgICAgLy8gQSBzaW1wbGUgd2F5IHRvIGNo
ZWNrIGZvciBIVE1MIHN0cmluZ3MKKyAgICAvLyBQcmlvcml0aXplICNpZCBvdmVyIDx0YWc+IHRv
IGF2b2lkIFhTUyB2aWEgbG9jYXRpb24uaGFzaCAoIzk1MjEpCisgICAgLy8gU3RyaWN0IEhUTUwg
cmVjb2duaXRpb24gKCMxMTI5MDogbXVzdCBzdGFydCB3aXRoIDwpCisgICAgLy8gU2hvcnRjdXQg
c2ltcGxlICNpZCBjYXNlIGZvciBzcGVlZAorICAgIHJxdWlja0V4cHIgPSAvXig/OlxzKig8W1x3
XFddKz4pW14+XSp8IyhbXHctXSspKSQvLAorCisgICAgaW5pdCA9IGpRdWVyeS5mbi5pbml0ID0g
ZnVuY3Rpb24oIHNlbGVjdG9yLCBjb250ZXh0LCByb290ICkgeworICAgICAgICB2YXIgbWF0Y2gs
IGVsZW07CisKKyAgICAgICAgLy8gSEFORExFOiAkKCIiKSwgJChudWxsKSwgJCh1bmRlZmluZWQp
LCAkKGZhbHNlKQorICAgICAgICBpZiAoICFzZWxlY3RvciApIHsKKyAgICAgICAgICAgIHJldHVy
biB0aGlzOworICAgICAgICB9CisKKyAgICAgICAgLy8gTWV0aG9kIGluaXQoKSBhY2NlcHRzIGFu
IGFsdGVybmF0ZSByb290alF1ZXJ5CisgICAgICAgIC8vIHNvIG1pZ3JhdGUgY2FuIHN1cHBvcnQg
alF1ZXJ5LnN1YiAoZ2gtMjEwMSkKKyAgICAgICAgcm9vdCA9IHJvb3QgfHwgcm9vdGpRdWVyeTsK
KworICAgICAgICAvLyBIYW5kbGUgSFRNTCBzdHJpbmdzCisgICAgICAgIGlmICggdHlwZW9mIHNl
bGVjdG9yID09PSAic3RyaW5nIiApIHsKKyAgICAgICAgICAgIGlmICggc2VsZWN0b3JbIDAgXSA9
PT0gIjwiICYmCisgICAgICAgICAgICAgICAgc2VsZWN0b3JbIHNlbGVjdG9yLmxlbmd0aCAtIDEg
XSA9PT0gIj4iICYmCisgICAgICAgICAgICAgICAgc2VsZWN0b3IubGVuZ3RoID49IDMgKSB7CisK
KyAgICAgICAgICAgICAgICAvLyBBc3N1bWUgdGhhdCBzdHJpbmdzIHRoYXQgc3RhcnQgYW5kIGVu
ZCB3aXRoIDw+IGFyZSBIVE1MIGFuZCBza2lwIHRoZSByZWdleCBjaGVjaworICAgICAgICAgICAg
ICAgIG1hdGNoID0gWyBudWxsLCBzZWxlY3RvciwgbnVsbCBdOworCisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIG1hdGNoID0gcnF1aWNrRXhwci5leGVjKCBzZWxlY3RvciAp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBNYXRjaCBodG1sIG9yIG1ha2Ugc3Vy
ZSBubyBjb250ZXh0IGlzIHNwZWNpZmllZCBmb3IgI2lkCisgICAgICAgICAgICBpZiAoIG1hdGNo
ICYmICggbWF0Y2hbIDEgXSB8fCAhY29udGV4dCApICkgeworCisgICAgICAgICAgICAgICAgLy8g
SEFORExFOiAkKGh0bWwpIC0+ICQoYXJyYXkpCisgICAgICAgICAgICAgICAgaWYgKCBtYXRjaFsg
MSBdICkgeworICAgICAgICAgICAgICAgICAgICBjb250ZXh0ID0gY29udGV4dCBpbnN0YW5jZW9m
IGpRdWVyeSA/IGNvbnRleHRbIDAgXSA6IGNvbnRleHQ7CisKKyAgICAgICAgICAgICAgICAgICAg
Ly8gT3B0aW9uIHRvIHJ1biBzY3JpcHRzIGlzIHRydWUgZm9yIGJhY2stY29tcGF0CisgICAgICAg
ICAgICAgICAgICAgIC8vIEludGVudGlvbmFsbHkgbGV0IHRoZSBlcnJvciBiZSB0aHJvd24gaWYg
cGFyc2VIVE1MIGlzIG5vdCBwcmVzZW50CisgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5tZXJn
ZSggdGhpcywgalF1ZXJ5LnBhcnNlSFRNTCgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNo
WyAxIF0sCisgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0ICYmIGNvbnRleHQubm9kZVR5
cGUgPyBjb250ZXh0Lm93bmVyRG9jdW1lbnQgfHwgY29udGV4dCA6IGRvY3VtZW50LAorICAgICAg
ICAgICAgICAgICAgICAgICAgdHJ1ZQorICAgICAgICAgICAgICAgICAgICApICk7CisKKyAgICAg
ICAgICAgICAgICAgICAgLy8gSEFORExFOiAkKGh0bWwsIHByb3BzKQorICAgICAgICAgICAgICAg
ICAgICBpZiAoIHJzaW5nbGVUYWcudGVzdCggbWF0Y2hbIDEgXSApICYmIGpRdWVyeS5pc1BsYWlu
T2JqZWN0KCBjb250ZXh0ICkgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKCBtYXRj
aCBpbiBjb250ZXh0ICkgeworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUHJvcGVy
dGllcyBvZiBjb250ZXh0IGFyZSBjYWxsZWQgYXMgbWV0aG9kcyBpZiBwb3NzaWJsZQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIHRoaXNbIG1hdGNo
IF0gKSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpc1sgbWF0Y2ggXSgg
Y29udGV4dFsgbWF0Y2ggXSApOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLi4u
YW5kIG90aGVyd2lzZSBzZXQgYXMgYXR0cmlidXRlcworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXR0cigg
bWF0Y2gsIGNvbnRleHRbIG1hdGNoIF0gKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsKKworICAgICAgICAgICAgICAgIC8vIEhBTkRM
RTogJCgjaWQpCisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAg
ZWxlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCBtYXRjaFsgMiBdICk7CisKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKCBlbGVtICkgeworCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBJ
bmplY3QgdGhlIGVsZW1lbnQgZGlyZWN0bHkgaW50byB0aGUgalF1ZXJ5IG9iamVjdAorICAgICAg
ICAgICAgICAgICAgICAgICAgdGhpc1sgMCBdID0gZWxlbTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHRoaXMubGVuZ3RoID0gMTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8v
IEhBTkRMRTogJChleHByLCAkKC4uLikpCisgICAgICAgICAgICB9IGVsc2UgaWYgKCAhY29udGV4
dCB8fCBjb250ZXh0LmpxdWVyeSApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gKCBjb250ZXh0
IHx8IHJvb3QgKS5maW5kKCBzZWxlY3RvciApOworCisgICAgICAgICAgICAvLyBIQU5ETEU6ICQo
ZXhwciwgY29udGV4dCkKKyAgICAgICAgICAgIC8vICh3aGljaCBpcyBqdXN0IGVxdWl2YWxlbnQg
dG86ICQoY29udGV4dCkuZmluZChleHByKQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gdGhpcy5jb25zdHJ1Y3RvciggY29udGV4dCApLmZpbmQoIHNlbGVjdG9y
ICk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgLy8gSEFORExFOiAkKERPTUVsZW1lbnQpCisg
ICAgICAgIH0gZWxzZSBpZiAoIHNlbGVjdG9yLm5vZGVUeXBlICkgeworICAgICAgICAgICAgdGhp
c1sgMCBdID0gc2VsZWN0b3I7CisgICAgICAgICAgICB0aGlzLmxlbmd0aCA9IDE7CisgICAgICAg
ICAgICByZXR1cm4gdGhpczsKKworICAgICAgICAvLyBIQU5ETEU6ICQoZnVuY3Rpb24pCisgICAg
ICAgIC8vIFNob3J0Y3V0IGZvciBkb2N1bWVudCByZWFkeQorICAgICAgICB9IGVsc2UgaWYgKCBq
UXVlcnkuaXNGdW5jdGlvbiggc2VsZWN0b3IgKSApIHsKKyAgICAgICAgICAgIHJldHVybiByb290
LnJlYWR5ICE9PSB1bmRlZmluZWQgPworICAgICAgICAgICAgICAgIHJvb3QucmVhZHkoIHNlbGVj
dG9yICkgOgorCisgICAgICAgICAgICAgICAgLy8gRXhlY3V0ZSBpbW1lZGlhdGVseSBpZiByZWFk
eSBpcyBub3QgcHJlc2VudAorICAgICAgICAgICAgICAgIHNlbGVjdG9yKCBqUXVlcnkgKTsKKyAg
ICAgICAgfQorCisgICAgICAgIHJldHVybiBqUXVlcnkubWFrZUFycmF5KCBzZWxlY3RvciwgdGhp
cyApOworICAgIH07CisKKy8vIEdpdmUgdGhlIGluaXQgZnVuY3Rpb24gdGhlIGpRdWVyeSBwcm90
b3R5cGUgZm9yIGxhdGVyIGluc3RhbnRpYXRpb24KK2luaXQucHJvdG90eXBlID0galF1ZXJ5LmZu
OworCisvLyBJbml0aWFsaXplIGNlbnRyYWwgcmVmZXJlbmNlCityb290alF1ZXJ5ID0galF1ZXJ5
KCBkb2N1bWVudCApOworCityZXR1cm4gaW5pdDsKKworfSApOwpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2NvcmUvcGFyc2VIVE1MLmpzIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2NvcmUvcGFyc2VIVE1M
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjBkOGU3ZjFlZWQwZmQ4MTI3ODRhOTY0MmJlMGRhN2YwZjcxMDgwMDkK
LS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVy
eS9zcmMvY29yZS9wYXJzZUhUTUwuanMKQEAgLTAsMCArMSw2NSBAQAorZGVmaW5lKCBbCisgICAg
Ii4uL2NvcmUiLAorICAgICIuLi92YXIvZG9jdW1lbnQiLAorICAgICIuL3Zhci9yc2luZ2xlVGFn
IiwKKyAgICAiLi4vbWFuaXB1bGF0aW9uL2J1aWxkRnJhZ21lbnQiLAorCisgICAgLy8gVGhpcyBp
cyB0aGUgb25seSBtb2R1bGUgdGhhdCBuZWVkcyBjb3JlL3N1cHBvcnQKKyAgICAiLi9zdXBwb3J0
IgorXSwgZnVuY3Rpb24oIGpRdWVyeSwgZG9jdW1lbnQsIHJzaW5nbGVUYWcsIGJ1aWxkRnJhZ21l
bnQsIHN1cHBvcnQgKSB7CisKKyJ1c2Ugc3RyaWN0IjsKKworLy8gQXJndW1lbnQgImRhdGEiIHNo
b3VsZCBiZSBzdHJpbmcgb2YgaHRtbAorLy8gY29udGV4dCAob3B0aW9uYWwpOiBJZiBzcGVjaWZp
ZWQsIHRoZSBmcmFnbWVudCB3aWxsIGJlIGNyZWF0ZWQgaW4gdGhpcyBjb250ZXh0LAorLy8gZGVm
YXVsdHMgdG8gZG9jdW1lbnQKKy8vIGtlZXBTY3JpcHRzIChvcHRpb25hbCk6IElmIHRydWUsIHdp
bGwgaW5jbHVkZSBzY3JpcHRzIHBhc3NlZCBpbiB0aGUgaHRtbCBzdHJpbmcKK2pRdWVyeS5wYXJz
ZUhUTUwgPSBmdW5jdGlvbiggZGF0YSwgY29udGV4dCwga2VlcFNjcmlwdHMgKSB7CisgICAgaWYg
KCB0eXBlb2YgZGF0YSAhPT0gInN0cmluZyIgKSB7CisgICAgICAgIHJldHVybiBbXTsKKyAgICB9
CisgICAgaWYgKCB0eXBlb2YgY29udGV4dCA9PT0gImJvb2xlYW4iICkgeworICAgICAgICBrZWVw
U2NyaXB0cyA9IGNvbnRleHQ7CisgICAgICAgIGNvbnRleHQgPSBmYWxzZTsKKyAgICB9CisKKyAg
ICB2YXIgYmFzZSwgcGFyc2VkLCBzY3JpcHRzOworCisgICAgaWYgKCAhY29udGV4dCApIHsKKwor
ICAgICAgICAvLyBTdG9wIHNjcmlwdHMgb3IgaW5saW5lIGV2ZW50IGhhbmRsZXJzIGZyb20gYmVp
bmcgZXhlY3V0ZWQgaW1tZWRpYXRlbHkKKyAgICAgICAgLy8gYnkgdXNpbmcgZG9jdW1lbnQuaW1w
bGVtZW50YXRpb24KKyAgICAgICAgaWYgKCBzdXBwb3J0LmNyZWF0ZUhUTUxEb2N1bWVudCApIHsK
KyAgICAgICAgICAgIGNvbnRleHQgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1M
RG9jdW1lbnQoICIiICk7CisKKyAgICAgICAgICAgIC8vIFNldCB0aGUgYmFzZSBocmVmIGZvciB0
aGUgY3JlYXRlZCBkb2N1bWVudAorICAgICAgICAgICAgLy8gc28gYW55IHBhcnNlZCBlbGVtZW50
cyB3aXRoIFVSTHMKKyAgICAgICAgICAgIC8vIGFyZSBiYXNlZCBvbiB0aGUgZG9jdW1lbnQncyBV
UkwgKGdoLTI5NjUpCisgICAgICAgICAgICBiYXNlID0gY29udGV4dC5jcmVhdGVFbGVtZW50KCAi
YmFzZSIgKTsKKyAgICAgICAgICAgIGJhc2UuaHJlZiA9IGRvY3VtZW50LmxvY2F0aW9uLmhyZWY7
CisgICAgICAgICAgICBjb250ZXh0LmhlYWQuYXBwZW5kQ2hpbGQoIGJhc2UgKTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIGNvbnRleHQgPSBkb2N1bWVudDsKKyAgICAgICAgfQorICAg
IH0KKworICAgIHBhcnNlZCA9IHJzaW5nbGVUYWcuZXhlYyggZGF0YSApOworICAgIHNjcmlwdHMg
PSAha2VlcFNjcmlwdHMgJiYgW107CisKKyAgICAvLyBTaW5nbGUgdGFnCisgICAgaWYgKCBwYXJz
ZWQgKSB7CisgICAgICAgIHJldHVybiBbIGNvbnRleHQuY3JlYXRlRWxlbWVudCggcGFyc2VkWyAx
IF0gKSBdOworICAgIH0KKworICAgIHBhcnNlZCA9IGJ1aWxkRnJhZ21lbnQoIFsgZGF0YSBdLCBj
b250ZXh0LCBzY3JpcHRzICk7CisKKyAgICBpZiAoIHNjcmlwdHMgJiYgc2NyaXB0cy5sZW5ndGgg
KSB7CisgICAgICAgIGpRdWVyeSggc2NyaXB0cyApLnJlbW92ZSgpOworICAgIH0KKworICAgIHJl
dHVybiBqUXVlcnkubWVyZ2UoIFtdLCBwYXJzZWQuY2hpbGROb2RlcyApOworfTsKKworcmV0dXJu
IGpRdWVyeS5wYXJzZUhUTUw7CisKK30gKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVy
eS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9jb3JlL3JlYWR5LW5vLWRlZmVycmVkLmpzIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2NvcmUvcmVhZHktbm8tZGVm
ZXJyZWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYjI2ZTc3ZTUyYmRlZTI5NjViYzhkOTM4M2IzMDk3NjY0NTli
ZDc5ZgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMv
anF1ZXJ5L3NyYy9jb3JlL3JlYWR5LW5vLWRlZmVycmVkLmpzCkBAIC0wLDAgKzEsMTA1IEBACitk
ZWZpbmUoIFsKKyAgICAiLi4vY29yZSIsCisgICAgIi4uL3Zhci9kb2N1bWVudCIKK10sIGZ1bmN0
aW9uKCBqUXVlcnksIGRvY3VtZW50ICkgeworCisidXNlIHN0cmljdCI7CisKK3ZhciByZWFkeUNh
bGxiYWNrcyA9IFtdLAorICAgIHdoZW5SZWFkeSA9IGZ1bmN0aW9uKCBmbiApIHsKKyAgICAgICAg
cmVhZHlDYWxsYmFja3MucHVzaCggZm4gKTsKKyAgICB9LAorICAgIGV4ZWN1dGVSZWFkeSA9IGZ1
bmN0aW9uKCBmbiApIHsKKworICAgICAgICAvLyBQcmV2ZW50IGVycm9ycyBmcm9tIGZyZWV6aW5n
IGZ1dHVyZSBjYWxsYmFjayBleGVjdXRpb24gKGdoLTE4MjMpCisgICAgICAgIC8vIE5vdCBiYWNr
d2FyZHMtY29tcGF0aWJsZSBhcyB0aGlzIGRvZXMgbm90IGV4ZWN1dGUgc3luYworICAgICAgICB3
aW5kb3cuc2V0VGltZW91dCggZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBmbi5jYWxsKCBkb2N1
bWVudCwgalF1ZXJ5ICk7CisgICAgICAgIH0gKTsKKyAgICB9OworCitqUXVlcnkuZm4ucmVhZHkg
PSBmdW5jdGlvbiggZm4gKSB7CisgICAgd2hlblJlYWR5KCBmbiApOworICAgIHJldHVybiB0aGlz
OworfTsKKworalF1ZXJ5LmV4dGVuZCggeworCisgICAgLy8gSXMgdGhlIERPTSByZWFkeSB0byBi
ZSB1c2VkPyBTZXQgdG8gdHJ1ZSBvbmNlIGl0IG9jY3Vycy4KKyAgICBpc1JlYWR5OiBmYWxzZSwK
KworICAgIC8vIEEgY291bnRlciB0byB0cmFjayBob3cgbWFueSBpdGVtcyB0byB3YWl0IGZvciBi
ZWZvcmUKKyAgICAvLyB0aGUgcmVhZHkgZXZlbnQgZmlyZXMuIFNlZSAjNjc4MQorICAgIHJlYWR5
V2FpdDogMSwKKworICAgIC8vIEhvbGQgKG9yIHJlbGVhc2UpIHRoZSByZWFkeSBldmVudAorICAg
IGhvbGRSZWFkeTogZnVuY3Rpb24oIGhvbGQgKSB7CisgICAgICAgIGlmICggaG9sZCApIHsKKyAg
ICAgICAgICAgIGpRdWVyeS5yZWFkeVdhaXQrKzsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIGpRdWVyeS5yZWFkeSggdHJ1ZSApOworICAgICAgICB9CisgICAgfSwKKworICAgIHJlYWR5
OiBmdW5jdGlvbiggd2FpdCApIHsKKworICAgICAgICAvLyBBYm9ydCBpZiB0aGVyZSBhcmUgcGVu
ZGluZyBob2xkcyBvciB3ZSdyZSBhbHJlYWR5IHJlYWR5CisgICAgICAgIGlmICggd2FpdCA9PT0g
dHJ1ZSA/IC0talF1ZXJ5LnJlYWR5V2FpdCA6IGpRdWVyeS5pc1JlYWR5ICkgeworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gUmVtZW1iZXIgdGhhdCB0aGUgRE9N
IGlzIHJlYWR5CisgICAgICAgIGpRdWVyeS5pc1JlYWR5ID0gdHJ1ZTsKKworICAgICAgICAvLyBJ
ZiBhIG5vcm1hbCBET00gUmVhZHkgZXZlbnQgZmlyZWQsIGRlY3JlbWVudCwgYW5kIHdhaXQgaWYg
bmVlZCBiZQorICAgICAgICBpZiAoIHdhaXQgIT09IHRydWUgJiYgLS1qUXVlcnkucmVhZHlXYWl0
ID4gMCApIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHdoZW5S
ZWFkeSA9IGZ1bmN0aW9uKCBmbiApIHsKKyAgICAgICAgICAgIHJlYWR5Q2FsbGJhY2tzLnB1c2go
IGZuICk7CisKKyAgICAgICAgICAgIHdoaWxlICggcmVhZHlDYWxsYmFja3MubGVuZ3RoICkgewor
ICAgICAgICAgICAgICAgIGZuID0gcmVhZHlDYWxsYmFja3Muc2hpZnQoKTsKKyAgICAgICAgICAg
ICAgICBpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBmbiApICkgeworICAgICAgICAgICAgICAgICAg
ICBleGVjdXRlUmVhZHkoIGZuICk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
ICAgICAgICB9OworCisgICAgICAgIHdoZW5SZWFkeSgpOworICAgIH0KK30gKTsKKworLy8gTWFr
ZSBqUXVlcnkucmVhZHkgUHJvbWlzZSBjb25zdW1hYmxlIChnaC0xNzc4KQoralF1ZXJ5LnJlYWR5
LnRoZW4gPSBqUXVlcnkuZm4ucmVhZHk7CisKKy8qKgorICogVGhlIHJlYWR5IGV2ZW50IGhhbmRs
ZXIgYW5kIHNlbGYgY2xlYW51cCBtZXRob2QKKyAqLworZnVuY3Rpb24gY29tcGxldGVkKCkgewor
ICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoICJET01Db250ZW50TG9hZGVkIiwgY29t
cGxldGVkICk7CisgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoICJsb2FkIiwgY29tcGxl
dGVkICk7CisgICAgalF1ZXJ5LnJlYWR5KCk7Cit9CisKKy8vIENhdGNoIGNhc2VzIHdoZXJlICQo
ZG9jdW1lbnQpLnJlYWR5KCkgaXMgY2FsbGVkCisvLyBhZnRlciB0aGUgYnJvd3NlciBldmVudCBo
YXMgYWxyZWFkeSBvY2N1cnJlZC4KKy8vIFN1cHBvcnQ6IElFOS0xMCBvbmx5CisvLyBPbGRlciBJ
RSBzb21ldGltZXMgc2lnbmFscyAiaW50ZXJhY3RpdmUiIHRvbyBzb29uCitpZiAoIGRvY3VtZW50
LnJlYWR5U3RhdGUgPT09ICJjb21wbGV0ZSIgfHwKKyAgICAoIGRvY3VtZW50LnJlYWR5U3RhdGUg
IT09ICJsb2FkaW5nIiAmJiAhZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmRvU2Nyb2xsICkgKSB7
CisKKyAgICAvLyBIYW5kbGUgaXQgYXN5bmNocm9ub3VzbHkgdG8gYWxsb3cgc2NyaXB0cyB0aGUg
b3Bwb3J0dW5pdHkgdG8gZGVsYXkgcmVhZHkKKyAgICB3aW5kb3cuc2V0VGltZW91dCggalF1ZXJ5
LnJlYWR5ICk7CisKK30gZWxzZSB7CisKKyAgICAvLyBVc2UgdGhlIGhhbmR5IGV2ZW50IGNhbGxi
YWNrCisgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lciggIkRPTUNvbnRlbnRMb2FkZWQiLCBj
b21wbGV0ZWQgKTsKKworICAgIC8vIEEgZmFsbGJhY2sgdG8gd2luZG93Lm9ubG9hZCwgdGhhdCB3
aWxsIGFsd2F5cyB3b3JrCisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoICJsb2FkIiwgY29t
cGxldGVkICk7Cit9CisKK30gKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2Rl
X21vZHVsZXMvanF1ZXJ5L3NyYy9jb3JlL3JlYWR5LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25v
ZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2NvcmUvcmVhZHkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVjYjc0NDYx
MGNkZDFhZDMzMGM5NmJlYjk5YWFhNDJmODkwMWMwYgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9jb3JlL3JlYWR5LmpzCkBAIC0w
LDAgKzEsOTUgQEAKK2RlZmluZSggWworICAgICIuLi9jb3JlIiwKKyAgICAiLi4vdmFyL2RvY3Vt
ZW50IiwKKyAgICAiLi4vY29yZS9yZWFkeUV4Y2VwdGlvbiIsCisgICAgIi4uL2RlZmVycmVkIgor
XSwgZnVuY3Rpb24oIGpRdWVyeSwgZG9jdW1lbnQgKSB7CisKKyJ1c2Ugc3RyaWN0IjsKKworLy8g
VGhlIGRlZmVycmVkIHVzZWQgb24gRE9NIHJlYWR5Cit2YXIgcmVhZHlMaXN0ID0galF1ZXJ5LkRl
ZmVycmVkKCk7CisKK2pRdWVyeS5mbi5yZWFkeSA9IGZ1bmN0aW9uKCBmbiApIHsKKworICAgIHJl
YWR5TGlzdAorICAgICAgICAudGhlbiggZm4gKQorCisgICAgICAgIC8vIFdyYXAgalF1ZXJ5LnJl
YWR5RXhjZXB0aW9uIGluIGEgZnVuY3Rpb24gc28gdGhhdCB0aGUgbG9va3VwCisgICAgICAgIC8v
IGhhcHBlbnMgYXQgdGhlIHRpbWUgb2YgZXJyb3IgaGFuZGxpbmcgaW5zdGVhZCBvZiBjYWxsYmFj
aworICAgICAgICAvLyByZWdpc3RyYXRpb24uCisgICAgICAgIC5jYXRjaCggZnVuY3Rpb24oIGVy
cm9yICkgeworICAgICAgICAgICAgalF1ZXJ5LnJlYWR5RXhjZXB0aW9uKCBlcnJvciApOworICAg
ICAgICB9ICk7CisKKyAgICByZXR1cm4gdGhpczsKK307CisKK2pRdWVyeS5leHRlbmQoIHsKKwor
ICAgIC8vIElzIHRoZSBET00gcmVhZHkgdG8gYmUgdXNlZD8gU2V0IHRvIHRydWUgb25jZSBpdCBv
Y2N1cnMuCisgICAgaXNSZWFkeTogZmFsc2UsCisKKyAgICAvLyBBIGNvdW50ZXIgdG8gdHJhY2sg
aG93IG1hbnkgaXRlbXMgdG8gd2FpdCBmb3IgYmVmb3JlCisgICAgLy8gdGhlIHJlYWR5IGV2ZW50
IGZpcmVzLiBTZWUgIzY3ODEKKyAgICByZWFkeVdhaXQ6IDEsCisKKyAgICAvLyBIb2xkIChvciBy
ZWxlYXNlKSB0aGUgcmVhZHkgZXZlbnQKKyAgICBob2xkUmVhZHk6IGZ1bmN0aW9uKCBob2xkICkg
eworICAgICAgICBpZiAoIGhvbGQgKSB7CisgICAgICAgICAgICBqUXVlcnkucmVhZHlXYWl0Kys7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBqUXVlcnkucmVhZHkoIHRydWUgKTsKKyAg
ICAgICAgfQorICAgIH0sCisKKyAgICAvLyBIYW5kbGUgd2hlbiB0aGUgRE9NIGlzIHJlYWR5Cisg
ICAgcmVhZHk6IGZ1bmN0aW9uKCB3YWl0ICkgeworCisgICAgICAgIC8vIEFib3J0IGlmIHRoZXJl
IGFyZSBwZW5kaW5nIGhvbGRzIG9yIHdlJ3JlIGFscmVhZHkgcmVhZHkKKyAgICAgICAgaWYgKCB3
YWl0ID09PSB0cnVlID8gLS1qUXVlcnkucmVhZHlXYWl0IDogalF1ZXJ5LmlzUmVhZHkgKSB7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBSZW1lbWJlciB0aGF0
IHRoZSBET00gaXMgcmVhZHkKKyAgICAgICAgalF1ZXJ5LmlzUmVhZHkgPSB0cnVlOworCisgICAg
ICAgIC8vIElmIGEgbm9ybWFsIERPTSBSZWFkeSBldmVudCBmaXJlZCwgZGVjcmVtZW50LCBhbmQg
d2FpdCBpZiBuZWVkIGJlCisgICAgICAgIGlmICggd2FpdCAhPT0gdHJ1ZSAmJiAtLWpRdWVyeS5y
ZWFkeVdhaXQgPiAwICkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgLy8gSWYgdGhlcmUgYXJlIGZ1bmN0aW9ucyBib3VuZCwgdG8gZXhlY3V0ZQorICAgICAgICBy
ZWFkeUxpc3QucmVzb2x2ZVdpdGgoIGRvY3VtZW50LCBbIGpRdWVyeSBdICk7CisgICAgfQorfSAp
OworCitqUXVlcnkucmVhZHkudGhlbiA9IHJlYWR5TGlzdC50aGVuOworCisvLyBUaGUgcmVhZHkg
ZXZlbnQgaGFuZGxlciBhbmQgc2VsZiBjbGVhbnVwIG1ldGhvZAorZnVuY3Rpb24gY29tcGxldGVk
KCkgeworICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoICJET01Db250ZW50TG9hZGVk
IiwgY29tcGxldGVkICk7CisgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoICJsb2FkIiwg
Y29tcGxldGVkICk7CisgICAgalF1ZXJ5LnJlYWR5KCk7Cit9CisKKy8vIENhdGNoIGNhc2VzIHdo
ZXJlICQoZG9jdW1lbnQpLnJlYWR5KCkgaXMgY2FsbGVkCisvLyBhZnRlciB0aGUgYnJvd3NlciBl
dmVudCBoYXMgYWxyZWFkeSBvY2N1cnJlZC4KKy8vIFN1cHBvcnQ6IElFIDw9OSAtIDEwIG9ubHkK
Ky8vIE9sZGVyIElFIHNvbWV0aW1lcyBzaWduYWxzICJpbnRlcmFjdGl2ZSIgdG9vIHNvb24KK2lm
ICggZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gImNvbXBsZXRlIiB8fAorICAgICggZG9jdW1lbnQu
cmVhZHlTdGF0ZSAhPT0gImxvYWRpbmciICYmICFkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZG9T
Y3JvbGwgKSApIHsKKworICAgIC8vIEhhbmRsZSBpdCBhc3luY2hyb25vdXNseSB0byBhbGxvdyBz
Y3JpcHRzIHRoZSBvcHBvcnR1bml0eSB0byBkZWxheSByZWFkeQorICAgIHdpbmRvdy5zZXRUaW1l
b3V0KCBqUXVlcnkucmVhZHkgKTsKKworfSBlbHNlIHsKKworICAgIC8vIFVzZSB0aGUgaGFuZHkg
ZXZlbnQgY2FsbGJhY2sKKyAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCAiRE9NQ29udGVu
dExvYWRlZCIsIGNvbXBsZXRlZCApOworCisgICAgLy8gQSBmYWxsYmFjayB0byB3aW5kb3cub25s
b2FkLCB0aGF0IHdpbGwgYWx3YXlzIHdvcmsKKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigg
ImxvYWQiLCBjb21wbGV0ZWQgKTsKK30KKworfSApOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
anF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2NvcmUvcmVhZHlFeGNlcHRpb24uanMgYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvY29yZS9yZWFkeUV4Y2Vw
dGlvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45NGMzZTQzYzUxY2IyYWVkMTgzZWM1NmNhMjUyNDZjZGVhZjdk
YjAzCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9q
cXVlcnkvc3JjL2NvcmUvcmVhZHlFeGNlcHRpb24uanMKQEAgLTAsMCArMSwxMyBAQAorZGVmaW5l
KCBbCisgICAgIi4uL2NvcmUiCitdLCBmdW5jdGlvbiggalF1ZXJ5ICkgeworCisidXNlIHN0cmlj
dCI7CisKK2pRdWVyeS5yZWFkeUV4Y2VwdGlvbiA9IGZ1bmN0aW9uKCBlcnJvciApIHsKKyAgICB3
aW5kb3cuc2V0VGltZW91dCggZnVuY3Rpb24oKSB7CisgICAgICAgIHRocm93IGVycm9yOworICAg
IH0gKTsKK307CisKK30gKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21v
ZHVsZXMvanF1ZXJ5L3NyYy9jb3JlL3N0cmlwQW5kQ29sbGFwc2UuanMgYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9q
cXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvY29yZS9zdHJpcEFuZENvbGxhcHNlLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjQzNWY1MmZhN2RmMjhhMjIwNzRkZDMyMDAwOGE0MDViZmZkYjQ2NzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMv
Y29yZS9zdHJpcEFuZENvbGxhcHNlLmpzCkBAIC0wLDAgKzEsMTQgQEAKK2RlZmluZSggWworICAg
ICIuLi92YXIvcm5vdGh0bWx3aGl0ZSIKK10sIGZ1bmN0aW9uKCBybm90aHRtbHdoaXRlICkgewor
ICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIC8vIFN0cmlwIGFuZCBjb2xsYXBzZSB3aGl0ZXNwYWNl
IGFjY29yZGluZyB0byBIVE1MIHNwZWMKKyAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cu
b3JnL211bHRpcGFnZS9pbmZyYXN0cnVjdHVyZS5odG1sI3N0cmlwLWFuZC1jb2xsYXBzZS13aGl0
ZXNwYWNlCisgICAgZnVuY3Rpb24gc3RyaXBBbmRDb2xsYXBzZSggdmFsdWUgKSB7CisgICAgICAg
IHZhciB0b2tlbnMgPSB2YWx1ZS5tYXRjaCggcm5vdGh0bWx3aGl0ZSApIHx8IFtdOworICAgICAg
ICByZXR1cm4gdG9rZW5zLmpvaW4oICIgIiApOworICAgIH0KKworICAgIHJldHVybiBzdHJpcEFu
ZENvbGxhcHNlOworfSApOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9k
dWxlcy9qcXVlcnkvc3JjL2NvcmUvc3VwcG9ydC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2Rl
X21vZHVsZXMvanF1ZXJ5L3NyYy9jb3JlL3N1cHBvcnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTA3MTlhYjlj
YmE5YWEyNThhNmQxMmNiMzRlMjVlM2RiODE2M2U1NQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9jb3JlL3N1cHBvcnQuanMKQEAg
LTAsMCArMSwyMCBAQAorZGVmaW5lKCBbCisgICAgIi4uL3Zhci9kb2N1bWVudCIsCisgICAgIi4u
L3Zhci9zdXBwb3J0IgorXSwgZnVuY3Rpb24oIGRvY3VtZW50LCBzdXBwb3J0ICkgeworCisidXNl
IHN0cmljdCI7CisKKy8vIFN1cHBvcnQ6IFNhZmFyaSA4IG9ubHkKKy8vIEluIFNhZmFyaSA4IGRv
Y3VtZW50cyBjcmVhdGVkIHZpYSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9j
dW1lbnQKKy8vIGNvbGxhcHNlIHNpYmxpbmcgZm9ybXM6IHRoZSBzZWNvbmQgb25lIGJlY29tZXMg
YSBjaGlsZCBvZiB0aGUgZmlyc3Qgb25lLgorLy8gQmVjYXVzZSBvZiB0aGF0LCB0aGlzIHNlY3Vy
aXR5IG1lYXN1cmUgaGFzIHRvIGJlIGRpc2FibGVkIGluIFNhZmFyaSA4LgorLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzMzNworc3VwcG9ydC5jcmVhdGVIVE1M
RG9jdW1lbnQgPSAoIGZ1bmN0aW9uKCkgeworICAgIHZhciBib2R5ID0gZG9jdW1lbnQuaW1wbGVt
ZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCAiIiApLmJvZHk7CisgICAgYm9keS5pbm5lckhU
TUwgPSAiPGZvcm0+PC9mb3JtPjxmb3JtPjwvZm9ybT4iOworICAgIHJldHVybiBib2R5LmNoaWxk
Tm9kZXMubGVuZ3RoID09PSAyOworfSApKCk7CisKK3JldHVybiBzdXBwb3J0OworfSApOwpkaWZm
IC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2NvcmUv
dmFyL3JzaW5nbGVUYWcuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVy
eS9zcmMvY29yZS92YXIvcnNpbmdsZVRhZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZWY4MGI0OTFjMjI5YjRj
ZDE0MDEwMDhhZmEyMjE3YWM1NjRkZjQwCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
anF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2NvcmUvdmFyL3JzaW5nbGVUYWcuanMKQEAg
LTAsMCArMSw2IEBACitkZWZpbmUoIGZ1bmN0aW9uKCkgeworICAgICJ1c2Ugc3RyaWN0IjsKKwor
ICAgIC8vIE1hdGNoIGEgc3RhbmRhbG9uZSB0YWcKKyAgICByZXR1cm4gKCAvXjwoW2Etel1bXlwv
XDA+Olx4MjBcdFxyXG5cZl0qKVtceDIwXHRcclxuXGZdKlwvPz4oPzo8XC9cMT58KSQvaSApOwor
fSApOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkv
c3JjL2Nzcy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9j
c3MuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZWM0MmFmOWJmZDdiMDYzNjQ4NmIxNjRkNzM2NjQ4ZjM4NDhkZDBk
MQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1
ZXJ5L3NyYy9jc3MuanMKQEAgLTAsMCArMSw0MjYgQEAKK2RlZmluZSggWworICAgICIuL2NvcmUi
LAorICAgICIuL3Zhci9wbnVtIiwKKyAgICAiLi9jb3JlL2FjY2VzcyIsCisgICAgIi4vY3NzL3Zh
ci9ybWFyZ2luIiwKKyAgICAiLi92YXIvZG9jdW1lbnQiLAorICAgICIuL3Zhci9yY3NzTnVtIiwK
KyAgICAiLi9jc3MvdmFyL3JudW1ub25weCIsCisgICAgIi4vY3NzL3Zhci9jc3NFeHBhbmQiLAor
ICAgICIuL2Nzcy92YXIvZ2V0U3R5bGVzIiwKKyAgICAiLi9jc3MvdmFyL3N3YXAiLAorICAgICIu
L2Nzcy9jdXJDU1MiLAorICAgICIuL2Nzcy9hZGp1c3RDU1MiLAorICAgICIuL2Nzcy9hZGRHZXRI
b29rSWYiLAorICAgICIuL2Nzcy9zdXBwb3J0IiwKKworICAgICIuL2NvcmUvaW5pdCIsCisgICAg
Ii4vY29yZS9yZWFkeSIsCisgICAgIi4vc2VsZWN0b3IiIC8vIGNvbnRhaW5zCitdLCBmdW5jdGlv
biggalF1ZXJ5LCBwbnVtLCBhY2Nlc3MsIHJtYXJnaW4sIGRvY3VtZW50LCByY3NzTnVtLCBybnVt
bm9ucHgsIGNzc0V4cGFuZCwKKyAgICBnZXRTdHlsZXMsIHN3YXAsIGN1ckNTUywgYWRqdXN0Q1NT
LCBhZGRHZXRIb29rSWYsIHN1cHBvcnQgKSB7CisKKyJ1c2Ugc3RyaWN0IjsKKwordmFyCisKKyAg
ICAvLyBTd2FwcGFibGUgaWYgZGlzcGxheSBpcyBub25lIG9yIHN0YXJ0cyB3aXRoIHRhYmxlCisg
ICAgLy8gZXhjZXB0ICJ0YWJsZSIsICJ0YWJsZS1jZWxsIiwgb3IgInRhYmxlLWNhcHRpb24iCisg
ICAgLy8gU2VlIGhlcmUgZm9yIGRpc3BsYXkgdmFsdWVzOiBodHRwczovL2RldmVsb3Blci5tb3pp
bGxhLm9yZy9lbi1VUy9kb2NzL0NTUy9kaXNwbGF5CisgICAgcmRpc3BsYXlzd2FwID0gL14obm9u
ZXx0YWJsZSg/IS1jW2VhXSkuKykvLAorICAgIGNzc1Nob3cgPSB7IHBvc2l0aW9uOiAiYWJzb2x1
dGUiLCB2aXNpYmlsaXR5OiAiaGlkZGVuIiwgZGlzcGxheTogImJsb2NrIiB9LAorICAgIGNzc05v
cm1hbFRyYW5zZm9ybSA9IHsKKyAgICAgICAgbGV0dGVyU3BhY2luZzogIjAiLAorICAgICAgICBm
b250V2VpZ2h0OiAiNDAwIgorICAgIH0sCisKKyAgICBjc3NQcmVmaXhlcyA9IFsgIldlYmtpdCIs
ICJNb3oiLCAibXMiIF0sCisgICAgZW1wdHlTdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ICJkaXYiICkuc3R5bGU7CisKKy8vIFJldHVybiBhIGNzcyBwcm9wZXJ0eSBtYXBwZWQgdG8gYSBw
b3RlbnRpYWxseSB2ZW5kb3IgcHJlZml4ZWQgcHJvcGVydHkKK2Z1bmN0aW9uIHZlbmRvclByb3BO
YW1lKCBuYW1lICkgeworCisgICAgLy8gU2hvcnRjdXQgZm9yIG5hbWVzIHRoYXQgYXJlIG5vdCB2
ZW5kb3IgcHJlZml4ZWQKKyAgICBpZiAoIG5hbWUgaW4gZW1wdHlTdHlsZSApIHsKKyAgICAgICAg
cmV0dXJuIG5hbWU7CisgICAgfQorCisgICAgLy8gQ2hlY2sgZm9yIHZlbmRvciBwcmVmaXhlZCBu
YW1lcworICAgIHZhciBjYXBOYW1lID0gbmFtZVsgMCBdLnRvVXBwZXJDYXNlKCkgKyBuYW1lLnNs
aWNlKCAxICksCisgICAgICAgIGkgPSBjc3NQcmVmaXhlcy5sZW5ndGg7CisKKyAgICB3aGlsZSAo
IGktLSApIHsKKyAgICAgICAgbmFtZSA9IGNzc1ByZWZpeGVzWyBpIF0gKyBjYXBOYW1lOworICAg
ICAgICBpZiAoIG5hbWUgaW4gZW1wdHlTdHlsZSApIHsKKyAgICAgICAgICAgIHJldHVybiBuYW1l
OworICAgICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiBzZXRQb3NpdGl2ZU51bWJlciggZWxl
bSwgdmFsdWUsIHN1YnRyYWN0ICkgeworCisgICAgLy8gQW55IHJlbGF0aXZlICgrLy0pIHZhbHVl
cyBoYXZlIGFscmVhZHkgYmVlbgorICAgIC8vIG5vcm1hbGl6ZWQgYXQgdGhpcyBwb2ludAorICAg
IHZhciBtYXRjaGVzID0gcmNzc051bS5leGVjKCB2YWx1ZSApOworICAgIHJldHVybiBtYXRjaGVz
ID8KKworICAgICAgICAvLyBHdWFyZCBhZ2FpbnN0IHVuZGVmaW5lZCAic3VidHJhY3QiLCBlLmcu
LCB3aGVuIHVzZWQgYXMgaW4gY3NzSG9va3MKKyAgICAgICAgTWF0aC5tYXgoIDAsIG1hdGNoZXNb
IDIgXSAtICggc3VidHJhY3QgfHwgMCApICkgKyAoIG1hdGNoZXNbIDMgXSB8fCAicHgiICkgOgor
ICAgICAgICB2YWx1ZTsKK30KKworZnVuY3Rpb24gYXVnbWVudFdpZHRoT3JIZWlnaHQoIGVsZW0s
IG5hbWUsIGV4dHJhLCBpc0JvcmRlckJveCwgc3R5bGVzICkgeworICAgIHZhciBpLAorICAgICAg
ICB2YWwgPSAwOworCisgICAgLy8gSWYgd2UgYWxyZWFkeSBoYXZlIHRoZSByaWdodCBtZWFzdXJl
bWVudCwgYXZvaWQgYXVnbWVudGF0aW9uCisgICAgaWYgKCBleHRyYSA9PT0gKCBpc0JvcmRlckJv
eCA/ICJib3JkZXIiIDogImNvbnRlbnQiICkgKSB7CisgICAgICAgIGkgPSA0OworCisgICAgLy8g
T3RoZXJ3aXNlIGluaXRpYWxpemUgZm9yIGhvcml6b250YWwgb3IgdmVydGljYWwgcHJvcGVydGll
cworICAgIH0gZWxzZSB7CisgICAgICAgIGkgPSBuYW1lID09PSAid2lkdGgiID8gMSA6IDA7Cisg
ICAgfQorCisgICAgZm9yICggOyBpIDwgNDsgaSArPSAyICkgeworCisgICAgICAgIC8vIEJvdGgg
Ym94IG1vZGVscyBleGNsdWRlIG1hcmdpbiwgc28gYWRkIGl0IGlmIHdlIHdhbnQgaXQKKyAgICAg
ICAgaWYgKCBleHRyYSA9PT0gIm1hcmdpbiIgKSB7CisgICAgICAgICAgICB2YWwgKz0galF1ZXJ5
LmNzcyggZWxlbSwgZXh0cmEgKyBjc3NFeHBhbmRbIGkgXSwgdHJ1ZSwgc3R5bGVzICk7CisgICAg
ICAgIH0KKworICAgICAgICBpZiAoIGlzQm9yZGVyQm94ICkgeworCisgICAgICAgICAgICAvLyBi
b3JkZXItYm94IGluY2x1ZGVzIHBhZGRpbmcsIHNvIHJlbW92ZSBpdCBpZiB3ZSB3YW50IGNvbnRl
bnQKKyAgICAgICAgICAgIGlmICggZXh0cmEgPT09ICJjb250ZW50IiApIHsKKyAgICAgICAgICAg
ICAgICB2YWwgLT0galF1ZXJ5LmNzcyggZWxlbSwgInBhZGRpbmciICsgY3NzRXhwYW5kWyBpIF0s
IHRydWUsIHN0eWxlcyApOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBBdCB0aGlz
IHBvaW50LCBleHRyYSBpc24ndCBib3JkZXIgbm9yIG1hcmdpbiwgc28gcmVtb3ZlIGJvcmRlcgor
ICAgICAgICAgICAgaWYgKCBleHRyYSAhPT0gIm1hcmdpbiIgKSB7CisgICAgICAgICAgICAgICAg
dmFsIC09IGpRdWVyeS5jc3MoIGVsZW0sICJib3JkZXIiICsgY3NzRXhwYW5kWyBpIF0gKyAiV2lk
dGgiLCB0cnVlLCBzdHlsZXMgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKwor
ICAgICAgICAgICAgLy8gQXQgdGhpcyBwb2ludCwgZXh0cmEgaXNuJ3QgY29udGVudCwgc28gYWRk
IHBhZGRpbmcKKyAgICAgICAgICAgIHZhbCArPSBqUXVlcnkuY3NzKCBlbGVtLCAicGFkZGluZyIg
KyBjc3NFeHBhbmRbIGkgXSwgdHJ1ZSwgc3R5bGVzICk7CisKKyAgICAgICAgICAgIC8vIEF0IHRo
aXMgcG9pbnQsIGV4dHJhIGlzbid0IGNvbnRlbnQgbm9yIHBhZGRpbmcsIHNvIGFkZCBib3JkZXIK
KyAgICAgICAgICAgIGlmICggZXh0cmEgIT09ICJwYWRkaW5nIiApIHsKKyAgICAgICAgICAgICAg
ICB2YWwgKz0galF1ZXJ5LmNzcyggZWxlbSwgImJvcmRlciIgKyBjc3NFeHBhbmRbIGkgXSArICJX
aWR0aCIsIHRydWUsIHN0eWxlcyApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
CisgICAgcmV0dXJuIHZhbDsKK30KKworZnVuY3Rpb24gZ2V0V2lkdGhPckhlaWdodCggZWxlbSwg
bmFtZSwgZXh0cmEgKSB7CisKKyAgICAvLyBTdGFydCB3aXRoIG9mZnNldCBwcm9wZXJ0eSwgd2hp
Y2ggaXMgZXF1aXZhbGVudCB0byB0aGUgYm9yZGVyLWJveCB2YWx1ZQorICAgIHZhciB2YWwsCisg
ICAgICAgIHZhbHVlSXNCb3JkZXJCb3ggPSB0cnVlLAorICAgICAgICBzdHlsZXMgPSBnZXRTdHls
ZXMoIGVsZW0gKSwKKyAgICAgICAgaXNCb3JkZXJCb3ggPSBqUXVlcnkuY3NzKCBlbGVtLCAiYm94
U2l6aW5nIiwgZmFsc2UsIHN0eWxlcyApID09PSAiYm9yZGVyLWJveCI7CisKKyAgICAvLyBTdXBw
b3J0OiBJRSA8PTExIG9ubHkKKyAgICAvLyBSdW5uaW5nIGdldEJvdW5kaW5nQ2xpZW50UmVjdCBv
biBhIGRpc2Nvbm5lY3RlZCBub2RlCisgICAgLy8gaW4gSUUgdGhyb3dzIGFuIGVycm9yLgorICAg
IGlmICggZWxlbS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCApIHsKKyAgICAgICAgdmFsID0gZWxl
bS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVsgbmFtZSBdOworICAgIH0KKworICAgIC8vIFNvbWUg
bm9uLWh0bWwgZWxlbWVudHMgcmV0dXJuIHVuZGVmaW5lZCBmb3Igb2Zmc2V0V2lkdGgsIHNvIGNo
ZWNrIGZvciBudWxsL3VuZGVmaW5lZAorICAgIC8vIHN2ZyAtIGh0dHBzOi8vYnVnemlsbGEubW96
aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTY0OTI4NQorICAgIC8vIE1hdGhNTCAtIGh0dHBzOi8v
YnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTQ5MTY2OAorICAgIGlmICggdmFs
IDw9IDAgfHwgdmFsID09IG51bGwgKSB7CisKKyAgICAgICAgLy8gRmFsbCBiYWNrIHRvIGNvbXB1
dGVkIHRoZW4gdW5jb21wdXRlZCBjc3MgaWYgbmVjZXNzYXJ5CisgICAgICAgIHZhbCA9IGN1ckNT
UyggZWxlbSwgbmFtZSwgc3R5bGVzICk7CisgICAgICAgIGlmICggdmFsIDwgMCB8fCB2YWwgPT0g
bnVsbCApIHsKKyAgICAgICAgICAgIHZhbCA9IGVsZW0uc3R5bGVbIG5hbWUgXTsKKyAgICAgICAg
fQorCisgICAgICAgIC8vIENvbXB1dGVkIHVuaXQgaXMgbm90IHBpeGVscy4gU3RvcCBoZXJlIGFu
ZCByZXR1cm4uCisgICAgICAgIGlmICggcm51bW5vbnB4LnRlc3QoIHZhbCApICkgeworICAgICAg
ICAgICAgcmV0dXJuIHZhbDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIENoZWNrIGZvciBzdHls
ZSBpbiBjYXNlIGEgYnJvd3NlciB3aGljaCByZXR1cm5zIHVucmVsaWFibGUgdmFsdWVzCisgICAg
ICAgIC8vIGZvciBnZXRDb21wdXRlZFN0eWxlIHNpbGVudGx5IGZhbGxzIGJhY2sgdG8gdGhlIHJl
bGlhYmxlIGVsZW0uc3R5bGUKKyAgICAgICAgdmFsdWVJc0JvcmRlckJveCA9IGlzQm9yZGVyQm94
ICYmCisgICAgICAgICAgICAoIHN1cHBvcnQuYm94U2l6aW5nUmVsaWFibGUoKSB8fCB2YWwgPT09
IGVsZW0uc3R5bGVbIG5hbWUgXSApOworCisgICAgICAgIC8vIE5vcm1hbGl6ZSAiIiwgYXV0bywg
YW5kIHByZXBhcmUgZm9yIGV4dHJhCisgICAgICAgIHZhbCA9IHBhcnNlRmxvYXQoIHZhbCApIHx8
IDA7CisgICAgfQorCisgICAgLy8gVXNlIHRoZSBhY3RpdmUgYm94LXNpemluZyBtb2RlbCB0byBh
ZGQvc3VidHJhY3QgaXJyZWxldmFudCBzdHlsZXMKKyAgICByZXR1cm4gKCB2YWwgKworICAgICAg
ICBhdWdtZW50V2lkdGhPckhlaWdodCgKKyAgICAgICAgICAgIGVsZW0sCisgICAgICAgICAgICBu
YW1lLAorICAgICAgICAgICAgZXh0cmEgfHwgKCBpc0JvcmRlckJveCA/ICJib3JkZXIiIDogImNv
bnRlbnQiICksCisgICAgICAgICAgICB2YWx1ZUlzQm9yZGVyQm94LAorICAgICAgICAgICAgc3R5
bGVzCisgICAgICAgICkKKyAgICApICsgInB4IjsKK30KKworalF1ZXJ5LmV4dGVuZCggeworCisg
ICAgLy8gQWRkIGluIHN0eWxlIHByb3BlcnR5IGhvb2tzIGZvciBvdmVycmlkaW5nIHRoZSBkZWZh
dWx0CisgICAgLy8gYmVoYXZpb3Igb2YgZ2V0dGluZyBhbmQgc2V0dGluZyBhIHN0eWxlIHByb3Bl
cnR5CisgICAgY3NzSG9va3M6IHsKKyAgICAgICAgb3BhY2l0eTogeworICAgICAgICAgICAgZ2V0
OiBmdW5jdGlvbiggZWxlbSwgY29tcHV0ZWQgKSB7CisgICAgICAgICAgICAgICAgaWYgKCBjb21w
dXRlZCApIHsKKworICAgICAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgYWx3YXlzIGdldCBh
IG51bWJlciBiYWNrIGZyb20gb3BhY2l0eQorICAgICAgICAgICAgICAgICAgICB2YXIgcmV0ID0g
Y3VyQ1NTKCBlbGVtLCAib3BhY2l0eSIgKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJl
dCA9PT0gIiIgPyAiMSIgOiByZXQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfSwKKworICAgIC8vIERvbid0IGF1dG9tYXRpY2FsbHkgYWRkICJweCIg
dG8gdGhlc2UgcG9zc2libHktdW5pdGxlc3MgcHJvcGVydGllcworICAgIGNzc051bWJlcjogewor
ICAgICAgICAiYW5pbWF0aW9uSXRlcmF0aW9uQ291bnQiOiB0cnVlLAorICAgICAgICAiY29sdW1u
Q291bnQiOiB0cnVlLAorICAgICAgICAiZmlsbE9wYWNpdHkiOiB0cnVlLAorICAgICAgICAiZmxl
eEdyb3ciOiB0cnVlLAorICAgICAgICAiZmxleFNocmluayI6IHRydWUsCisgICAgICAgICJmb250
V2VpZ2h0IjogdHJ1ZSwKKyAgICAgICAgImxpbmVIZWlnaHQiOiB0cnVlLAorICAgICAgICAib3Bh
Y2l0eSI6IHRydWUsCisgICAgICAgICJvcmRlciI6IHRydWUsCisgICAgICAgICJvcnBoYW5zIjog
dHJ1ZSwKKyAgICAgICAgIndpZG93cyI6IHRydWUsCisgICAgICAgICJ6SW5kZXgiOiB0cnVlLAor
ICAgICAgICAiem9vbSI6IHRydWUKKyAgICB9LAorCisgICAgLy8gQWRkIGluIHByb3BlcnRpZXMg
d2hvc2UgbmFtZXMgeW91IHdpc2ggdG8gZml4IGJlZm9yZQorICAgIC8vIHNldHRpbmcgb3IgZ2V0
dGluZyB0aGUgdmFsdWUKKyAgICBjc3NQcm9wczogeworICAgICAgICAiZmxvYXQiOiAiY3NzRmxv
YXQiCisgICAgfSwKKworICAgIC8vIEdldCBhbmQgc2V0IHRoZSBzdHlsZSBwcm9wZXJ0eSBvbiBh
IERPTSBOb2RlCisgICAgc3R5bGU6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCB2YWx1ZSwgZXh0cmEg
KSB7CisKKyAgICAgICAgLy8gRG9uJ3Qgc2V0IHN0eWxlcyBvbiB0ZXh0IGFuZCBjb21tZW50IG5v
ZGVzCisgICAgICAgIGlmICggIWVsZW0gfHwgZWxlbS5ub2RlVHlwZSA9PT0gMyB8fCBlbGVtLm5v
ZGVUeXBlID09PSA4IHx8ICFlbGVtLnN0eWxlICkgeworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgd2UncmUgd29ya2luZyB3aXRoIHRo
ZSByaWdodCBuYW1lCisgICAgICAgIHZhciByZXQsIHR5cGUsIGhvb2tzLAorICAgICAgICAgICAg
b3JpZ05hbWUgPSBqUXVlcnkuY2FtZWxDYXNlKCBuYW1lICksCisgICAgICAgICAgICBzdHlsZSA9
IGVsZW0uc3R5bGU7CisKKyAgICAgICAgbmFtZSA9IGpRdWVyeS5jc3NQcm9wc1sgb3JpZ05hbWUg
XSB8fAorICAgICAgICAgICAgKCBqUXVlcnkuY3NzUHJvcHNbIG9yaWdOYW1lIF0gPSB2ZW5kb3JQ
cm9wTmFtZSggb3JpZ05hbWUgKSB8fCBvcmlnTmFtZSApOworCisgICAgICAgIC8vIEdldHMgaG9v
ayBmb3IgdGhlIHByZWZpeGVkIHZlcnNpb24sIHRoZW4gdW5wcmVmaXhlZCB2ZXJzaW9uCisgICAg
ICAgIGhvb2tzID0galF1ZXJ5LmNzc0hvb2tzWyBuYW1lIF0gfHwgalF1ZXJ5LmNzc0hvb2tzWyBv
cmlnTmFtZSBdOworCisgICAgICAgIC8vIENoZWNrIGlmIHdlJ3JlIHNldHRpbmcgYSB2YWx1ZQor
ICAgICAgICBpZiAoIHZhbHVlICE9PSB1bmRlZmluZWQgKSB7CisgICAgICAgICAgICB0eXBlID0g
dHlwZW9mIHZhbHVlOworCisgICAgICAgICAgICAvLyBDb252ZXJ0ICIrPSIgb3IgIi09IiB0byBy
ZWxhdGl2ZSBudW1iZXJzICgjNzM0NSkKKyAgICAgICAgICAgIGlmICggdHlwZSA9PT0gInN0cmlu
ZyIgJiYgKCByZXQgPSByY3NzTnVtLmV4ZWMoIHZhbHVlICkgKSAmJiByZXRbIDEgXSApIHsKKyAg
ICAgICAgICAgICAgICB2YWx1ZSA9IGFkanVzdENTUyggZWxlbSwgbmFtZSwgcmV0ICk7CisKKyAg
ICAgICAgICAgICAgICAvLyBGaXhlcyBidWcgIzkyMzcKKyAgICAgICAgICAgICAgICB0eXBlID0g
Im51bWJlciI7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0
IG51bGwgYW5kIE5hTiB2YWx1ZXMgYXJlbid0IHNldCAoIzcxMTYpCisgICAgICAgICAgICBpZiAo
IHZhbHVlID09IG51bGwgfHwgdmFsdWUgIT09IHZhbHVlICkgeworICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gSWYgYSBudW1iZXIgd2FzIHBh
c3NlZCBpbiwgYWRkIHRoZSB1bml0IChleGNlcHQgZm9yIGNlcnRhaW4gQ1NTIHByb3BlcnRpZXMp
CisgICAgICAgICAgICBpZiAoIHR5cGUgPT09ICJudW1iZXIiICkgeworICAgICAgICAgICAgICAg
IHZhbHVlICs9IHJldCAmJiByZXRbIDMgXSB8fCAoIGpRdWVyeS5jc3NOdW1iZXJbIG9yaWdOYW1l
IF0gPyAiIiA6ICJweCIgKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gYmFja2dy
b3VuZC0qIHByb3BzIGFmZmVjdCBvcmlnaW5hbCBjbG9uZSdzIHZhbHVlcworICAgICAgICAgICAg
aWYgKCAhc3VwcG9ydC5jbGVhckNsb25lU3R5bGUgJiYgdmFsdWUgPT09ICIiICYmIG5hbWUuaW5k
ZXhPZiggImJhY2tncm91bmQiICkgPT09IDAgKSB7CisgICAgICAgICAgICAgICAgc3R5bGVbIG5h
bWUgXSA9ICJpbmhlcml0IjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gSWYgYSBo
b29rIHdhcyBwcm92aWRlZCwgdXNlIHRoYXQgdmFsdWUsIG90aGVyd2lzZSBqdXN0IHNldCB0aGUg
c3BlY2lmaWVkIHZhbHVlCisgICAgICAgICAgICBpZiAoICFob29rcyB8fCAhKCAic2V0IiBpbiBo
b29rcyApIHx8CisgICAgICAgICAgICAgICAgKCB2YWx1ZSA9IGhvb2tzLnNldCggZWxlbSwgdmFs
dWUsIGV4dHJhICkgKSAhPT0gdW5kZWZpbmVkICkgeworCisgICAgICAgICAgICAgICAgc3R5bGVb
IG5hbWUgXSA9IHZhbHVlOworICAgICAgICAgICAgfQorCisgICAgICAgIH0gZWxzZSB7CisKKyAg
ICAgICAgICAgIC8vIElmIGEgaG9vayB3YXMgcHJvdmlkZWQgZ2V0IHRoZSBub24tY29tcHV0ZWQg
dmFsdWUgZnJvbSB0aGVyZQorICAgICAgICAgICAgaWYgKCBob29rcyAmJiAiZ2V0IiBpbiBob29r
cyAmJgorICAgICAgICAgICAgICAgICggcmV0ID0gaG9va3MuZ2V0KCBlbGVtLCBmYWxzZSwgZXh0
cmEgKSApICE9PSB1bmRlZmluZWQgKSB7CisKKyAgICAgICAgICAgICAgICByZXR1cm4gcmV0Owor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBPdGhlcndpc2UganVzdCBnZXQgdGhlIHZh
bHVlIGZyb20gdGhlIHN0eWxlIG9iamVjdAorICAgICAgICAgICAgcmV0dXJuIHN0eWxlWyBuYW1l
IF07CisgICAgICAgIH0KKyAgICB9LAorCisgICAgY3NzOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwg
ZXh0cmEsIHN0eWxlcyApIHsKKyAgICAgICAgdmFyIHZhbCwgbnVtLCBob29rcywKKyAgICAgICAg
ICAgIG9yaWdOYW1lID0galF1ZXJ5LmNhbWVsQ2FzZSggbmFtZSApOworCisgICAgICAgIC8vIE1h
a2Ugc3VyZSB0aGF0IHdlJ3JlIHdvcmtpbmcgd2l0aCB0aGUgcmlnaHQgbmFtZQorICAgICAgICBu
YW1lID0galF1ZXJ5LmNzc1Byb3BzWyBvcmlnTmFtZSBdIHx8CisgICAgICAgICAgICAoIGpRdWVy
eS5jc3NQcm9wc1sgb3JpZ05hbWUgXSA9IHZlbmRvclByb3BOYW1lKCBvcmlnTmFtZSApIHx8IG9y
aWdOYW1lICk7CisKKyAgICAgICAgLy8gVHJ5IHByZWZpeGVkIG5hbWUgZm9sbG93ZWQgYnkgdGhl
IHVucHJlZml4ZWQgbmFtZQorICAgICAgICBob29rcyA9IGpRdWVyeS5jc3NIb29rc1sgbmFtZSBd
IHx8IGpRdWVyeS5jc3NIb29rc1sgb3JpZ05hbWUgXTsKKworICAgICAgICAvLyBJZiBhIGhvb2sg
d2FzIHByb3ZpZGVkIGdldCB0aGUgY29tcHV0ZWQgdmFsdWUgZnJvbSB0aGVyZQorICAgICAgICBp
ZiAoIGhvb2tzICYmICJnZXQiIGluIGhvb2tzICkgeworICAgICAgICAgICAgdmFsID0gaG9va3Mu
Z2V0KCBlbGVtLCB0cnVlLCBleHRyYSApOworICAgICAgICB9CisKKyAgICAgICAgLy8gT3RoZXJ3
aXNlLCBpZiBhIHdheSB0byBnZXQgdGhlIGNvbXB1dGVkIHZhbHVlIGV4aXN0cywgdXNlIHRoYXQK
KyAgICAgICAgaWYgKCB2YWwgPT09IHVuZGVmaW5lZCApIHsKKyAgICAgICAgICAgIHZhbCA9IGN1
ckNTUyggZWxlbSwgbmFtZSwgc3R5bGVzICk7CisgICAgICAgIH0KKworICAgICAgICAvLyBDb252
ZXJ0ICJub3JtYWwiIHRvIGNvbXB1dGVkIHZhbHVlCisgICAgICAgIGlmICggdmFsID09PSAibm9y
bWFsIiAmJiBuYW1lIGluIGNzc05vcm1hbFRyYW5zZm9ybSApIHsKKyAgICAgICAgICAgIHZhbCA9
IGNzc05vcm1hbFRyYW5zZm9ybVsgbmFtZSBdOworICAgICAgICB9CisKKyAgICAgICAgLy8gTWFr
ZSBudW1lcmljIGlmIGZvcmNlZCBvciBhIHF1YWxpZmllciB3YXMgcHJvdmlkZWQgYW5kIHZhbCBs
b29rcyBudW1lcmljCisgICAgICAgIGlmICggZXh0cmEgPT09ICIiIHx8IGV4dHJhICkgeworICAg
ICAgICAgICAgbnVtID0gcGFyc2VGbG9hdCggdmFsICk7CisgICAgICAgICAgICByZXR1cm4gZXh0
cmEgPT09IHRydWUgfHwgaXNGaW5pdGUoIG51bSApID8gbnVtIHx8IDAgOiB2YWw7CisgICAgICAg
IH0KKyAgICAgICAgcmV0dXJuIHZhbDsKKyAgICB9Cit9ICk7CisKK2pRdWVyeS5lYWNoKCBbICJo
ZWlnaHQiLCAid2lkdGgiIF0sIGZ1bmN0aW9uKCBpLCBuYW1lICkgeworICAgIGpRdWVyeS5jc3NI
b29rc1sgbmFtZSBdID0geworICAgICAgICBnZXQ6IGZ1bmN0aW9uKCBlbGVtLCBjb21wdXRlZCwg
ZXh0cmEgKSB7CisgICAgICAgICAgICBpZiAoIGNvbXB1dGVkICkgeworCisgICAgICAgICAgICAg
ICAgLy8gQ2VydGFpbiBlbGVtZW50cyBjYW4gaGF2ZSBkaW1lbnNpb24gaW5mbyBpZiB3ZSBpbnZp
c2libHkgc2hvdyB0aGVtCisgICAgICAgICAgICAgICAgLy8gYnV0IGl0IG11c3QgaGF2ZSBhIGN1
cnJlbnQgZGlzcGxheSBzdHlsZSB0aGF0IHdvdWxkIGJlbmVmaXQKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gcmRpc3BsYXlzd2FwLnRlc3QoIGpRdWVyeS5jc3MoIGVsZW0sICJkaXNwbGF5IiApICkg
JiYKKworICAgICAgICAgICAgICAgICAgICAvLyBTdXBwb3J0OiBTYWZhcmkgOCsKKyAgICAgICAg
ICAgICAgICAgICAgLy8gVGFibGUgY29sdW1ucyBpbiBTYWZhcmkgaGF2ZSBub24temVybyBvZmZz
ZXRXaWR0aCAmIHplcm8KKyAgICAgICAgICAgICAgICAgICAgLy8gZ2V0Qm91bmRpbmdDbGllbnRS
ZWN0KCkud2lkdGggdW5sZXNzIGRpc3BsYXkgaXMgY2hhbmdlZC4KKyAgICAgICAgICAgICAgICAg
ICAgLy8gU3VwcG9ydDogSUUgPD0xMSBvbmx5CisgICAgICAgICAgICAgICAgICAgIC8vIFJ1bm5p
bmcgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IG9uIGEgZGlzY29ubmVjdGVkIG5vZGUKKyAgICAgICAg
ICAgICAgICAgICAgLy8gaW4gSUUgdGhyb3dzIGFuIGVycm9yLgorICAgICAgICAgICAgICAgICAg
ICAoICFlbGVtLmdldENsaWVudFJlY3RzKCkubGVuZ3RoIHx8ICFlbGVtLmdldEJvdW5kaW5nQ2xp
ZW50UmVjdCgpLndpZHRoICkgPworICAgICAgICAgICAgICAgICAgICAgICAgc3dhcCggZWxlbSwg
Y3NzU2hvdywgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGdldFdpZHRoT3JIZWlnaHQoIGVsZW0sIG5hbWUsIGV4dHJhICk7CisgICAgICAgICAgICAgICAg
ICAgICAgICB9ICkgOgorICAgICAgICAgICAgICAgICAgICAgICAgZ2V0V2lkdGhPckhlaWdodCgg
ZWxlbSwgbmFtZSwgZXh0cmEgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKworICAgICAg
ICBzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSwgZXh0cmEgKSB7CisgICAgICAgICAgICB2YXIg
bWF0Y2hlcywKKyAgICAgICAgICAgICAgICBzdHlsZXMgPSBleHRyYSAmJiBnZXRTdHlsZXMoIGVs
ZW0gKSwKKyAgICAgICAgICAgICAgICBzdWJ0cmFjdCA9IGV4dHJhICYmIGF1Z21lbnRXaWR0aE9y
SGVpZ2h0KAorICAgICAgICAgICAgICAgICAgICBlbGVtLAorICAgICAgICAgICAgICAgICAgICBu
YW1lLAorICAgICAgICAgICAgICAgICAgICBleHRyYSwKKyAgICAgICAgICAgICAgICAgICAgalF1
ZXJ5LmNzcyggZWxlbSwgImJveFNpemluZyIsIGZhbHNlLCBzdHlsZXMgKSA9PT0gImJvcmRlci1i
b3giLAorICAgICAgICAgICAgICAgICAgICBzdHlsZXMKKyAgICAgICAgICAgICAgICApOworCisg
ICAgICAgICAgICAvLyBDb252ZXJ0IHRvIHBpeGVscyBpZiB2YWx1ZSBhZGp1c3RtZW50IGlzIG5l
ZWRlZAorICAgICAgICAgICAgaWYgKCBzdWJ0cmFjdCAmJiAoIG1hdGNoZXMgPSByY3NzTnVtLmV4
ZWMoIHZhbHVlICkgKSAmJgorICAgICAgICAgICAgICAgICggbWF0Y2hlc1sgMyBdIHx8ICJweCIg
KSAhPT0gInB4IiApIHsKKworICAgICAgICAgICAgICAgIGVsZW0uc3R5bGVbIG5hbWUgXSA9IHZh
bHVlOworICAgICAgICAgICAgICAgIHZhbHVlID0galF1ZXJ5LmNzcyggZWxlbSwgbmFtZSApOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gc2V0UG9zaXRpdmVOdW1iZXIoIGVs
ZW0sIHZhbHVlLCBzdWJ0cmFjdCApOworICAgICAgICB9CisgICAgfTsKK30gKTsKKworalF1ZXJ5
LmNzc0hvb2tzLm1hcmdpbkxlZnQgPSBhZGRHZXRIb29rSWYoIHN1cHBvcnQucmVsaWFibGVNYXJn
aW5MZWZ0LAorICAgIGZ1bmN0aW9uKCBlbGVtLCBjb21wdXRlZCApIHsKKyAgICAgICAgaWYgKCBj
b21wdXRlZCApIHsKKyAgICAgICAgICAgIHJldHVybiAoIHBhcnNlRmxvYXQoIGN1ckNTUyggZWxl
bSwgIm1hcmdpbkxlZnQiICkgKSB8fAorICAgICAgICAgICAgICAgIGVsZW0uZ2V0Qm91bmRpbmdD
bGllbnRSZWN0KCkubGVmdCAtCisgICAgICAgICAgICAgICAgICAgIHN3YXAoIGVsZW0sIHsgbWFy
Z2luTGVmdDogMCB9LCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQ7CisgICAgICAgICAgICAgICAgICAg
IH0gKQorICAgICAgICAgICAgICAgICkgKyAicHgiOworICAgICAgICB9CisgICAgfQorKTsKKwor
Ly8gVGhlc2UgaG9va3MgYXJlIHVzZWQgYnkgYW5pbWF0ZSB0byBleHBhbmQgcHJvcGVydGllcwor
alF1ZXJ5LmVhY2goIHsKKyAgICBtYXJnaW46ICIiLAorICAgIHBhZGRpbmc6ICIiLAorICAgIGJv
cmRlcjogIldpZHRoIgorfSwgZnVuY3Rpb24oIHByZWZpeCwgc3VmZml4ICkgeworICAgIGpRdWVy
eS5jc3NIb29rc1sgcHJlZml4ICsgc3VmZml4IF0gPSB7CisgICAgICAgIGV4cGFuZDogZnVuY3Rp
b24oIHZhbHVlICkgeworICAgICAgICAgICAgdmFyIGkgPSAwLAorICAgICAgICAgICAgICAgIGV4
cGFuZGVkID0ge30sCisKKyAgICAgICAgICAgICAgICAvLyBBc3N1bWVzIGEgc2luZ2xlIG51bWJl
ciBpZiBub3QgYSBzdHJpbmcKKyAgICAgICAgICAgICAgICBwYXJ0cyA9IHR5cGVvZiB2YWx1ZSA9
PT0gInN0cmluZyIgPyB2YWx1ZS5zcGxpdCggIiAiICkgOiBbIHZhbHVlIF07CisKKyAgICAgICAg
ICAgIGZvciAoIDsgaSA8IDQ7IGkrKyApIHsKKyAgICAgICAgICAgICAgICBleHBhbmRlZFsgcHJl
Zml4ICsgY3NzRXhwYW5kWyBpIF0gKyBzdWZmaXggXSA9CisgICAgICAgICAgICAgICAgICAgIHBh
cnRzWyBpIF0gfHwgcGFydHNbIGkgLSAyIF0gfHwgcGFydHNbIDAgXTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgcmV0dXJuIGV4cGFuZGVkOworICAgICAgICB9CisgICAgfTsKKworICAg
IGlmICggIXJtYXJnaW4udGVzdCggcHJlZml4ICkgKSB7CisgICAgICAgIGpRdWVyeS5jc3NIb29r
c1sgcHJlZml4ICsgc3VmZml4IF0uc2V0ID0gc2V0UG9zaXRpdmVOdW1iZXI7CisgICAgfQorfSAp
OworCitqUXVlcnkuZm4uZXh0ZW5kKCB7CisgICAgY3NzOiBmdW5jdGlvbiggbmFtZSwgdmFsdWUg
KSB7CisgICAgICAgIHJldHVybiBhY2Nlc3MoIHRoaXMsIGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCB2
YWx1ZSApIHsKKyAgICAgICAgICAgIHZhciBzdHlsZXMsIGxlbiwKKyAgICAgICAgICAgICAgICBt
YXAgPSB7fSwKKyAgICAgICAgICAgICAgICBpID0gMDsKKworICAgICAgICAgICAgaWYgKCBqUXVl
cnkuaXNBcnJheSggbmFtZSApICkgeworICAgICAgICAgICAgICAgIHN0eWxlcyA9IGdldFN0eWxl
cyggZWxlbSApOworICAgICAgICAgICAgICAgIGxlbiA9IG5hbWUubGVuZ3RoOworCisgICAgICAg
ICAgICAgICAgZm9yICggOyBpIDwgbGVuOyBpKysgKSB7CisgICAgICAgICAgICAgICAgICAgIG1h
cFsgbmFtZVsgaSBdIF0gPSBqUXVlcnkuY3NzKCBlbGVtLCBuYW1lWyBpIF0sIGZhbHNlLCBzdHls
ZXMgKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFwOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gdmFsdWUgIT09IHVuZGVmaW5lZCA/
CisgICAgICAgICAgICAgICAgalF1ZXJ5LnN0eWxlKCBlbGVtLCBuYW1lLCB2YWx1ZSApIDoKKyAg
ICAgICAgICAgICAgICBqUXVlcnkuY3NzKCBlbGVtLCBuYW1lICk7CisgICAgICAgIH0sIG5hbWUs
IHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoID4gMSApOworICAgIH0KK30gKTsKKworcmV0dXJuIGpR
dWVyeTsKK30gKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMv
anF1ZXJ5L3NyYy9jc3MvYWRkR2V0SG9va0lmLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVf
bW9kdWxlcy9qcXVlcnkvc3JjL2Nzcy9hZGRHZXRIb29rSWYuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODM1MmVl
MTM3NTJmOGRjMzY0ODQ5M2FlNWUzNWNmN2ZlYmNlMWRmMQotLS0gL2Rldi9udWxsCisrKyBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9jc3MvYWRkR2V0SG9va0lm
LmpzCkBAIC0wLDAgKzEsMjYgQEAKK2RlZmluZSggZnVuY3Rpb24oKSB7CisKKyJ1c2Ugc3RyaWN0
IjsKKworZnVuY3Rpb24gYWRkR2V0SG9va0lmKCBjb25kaXRpb25GbiwgaG9va0ZuICkgeworCisg
ICAgLy8gRGVmaW5lIHRoZSBob29rLCB3ZSdsbCBjaGVjayBvbiB0aGUgZmlyc3QgcnVuIGlmIGl0
J3MgcmVhbGx5IG5lZWRlZC4KKyAgICByZXR1cm4geworICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgaWYgKCBjb25kaXRpb25GbigpICkgeworCisgICAgICAgICAgICAgICAg
Ly8gSG9vayBub3QgbmVlZGVkIChvciBpdCdzIG5vdCBwb3NzaWJsZSB0byB1c2UgaXQgZHVlCisg
ICAgICAgICAgICAgICAgLy8gdG8gbWlzc2luZyBkZXBlbmRlbmN5KSwgcmVtb3ZlIGl0LgorICAg
ICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLmdldDsKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEhvb2sgbmVlZGVkOyByZWRlZmluZSBpdCBz
byB0aGF0IHRoZSBzdXBwb3J0IHRlc3QgaXMgbm90IGV4ZWN1dGVkIGFnYWluLgorICAgICAgICAg
ICAgcmV0dXJuICggdGhpcy5nZXQgPSBob29rRm4gKS5hcHBseSggdGhpcywgYXJndW1lbnRzICk7
CisgICAgICAgIH0KKyAgICB9OworfQorCityZXR1cm4gYWRkR2V0SG9va0lmOworCit9ICk7CmRp
ZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvY3Nz
L2FkanVzdENTUy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3Ny
Yy9jc3MvYWRqdXN0Q1NTLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEwZjlkODFlOGM3MDM5MWI3MGU4NzE5MzBm
Y2MyMTQ3OTQ2NDY3NDYKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9k
ZV9tb2R1bGVzL2pxdWVyeS9zcmMvY3NzL2FkanVzdENTUy5qcwpAQCAtMCwwICsxLDcxIEBACitk
ZWZpbmUoIFsKKyAgICAiLi4vY29yZSIsCisgICAgIi4uL3Zhci9yY3NzTnVtIgorXSwgZnVuY3Rp
b24oIGpRdWVyeSwgcmNzc051bSApIHsKKworInVzZSBzdHJpY3QiOworCitmdW5jdGlvbiBhZGp1
c3RDU1MoIGVsZW0sIHByb3AsIHZhbHVlUGFydHMsIHR3ZWVuICkgeworICAgIHZhciBhZGp1c3Rl
ZCwKKyAgICAgICAgc2NhbGUgPSAxLAorICAgICAgICBtYXhJdGVyYXRpb25zID0gMjAsCisgICAg
ICAgIGN1cnJlbnRWYWx1ZSA9IHR3ZWVuID8KKyAgICAgICAgICAgIGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgICAgIHJldHVybiB0d2Vlbi5jdXIoKTsKKyAgICAgICAgICAgIH0gOgorICAgICAg
ICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGpRdWVyeS5jc3MoIGVs
ZW0sIHByb3AsICIiICk7CisgICAgICAgICAgICB9LAorICAgICAgICBpbml0aWFsID0gY3VycmVu
dFZhbHVlKCksCisgICAgICAgIHVuaXQgPSB2YWx1ZVBhcnRzICYmIHZhbHVlUGFydHNbIDMgXSB8
fCAoIGpRdWVyeS5jc3NOdW1iZXJbIHByb3AgXSA/ICIiIDogInB4IiApLAorCisgICAgICAgIC8v
IFN0YXJ0aW5nIHZhbHVlIGNvbXB1dGF0aW9uIGlzIHJlcXVpcmVkIGZvciBwb3RlbnRpYWwgdW5p
dCBtaXNtYXRjaGVzCisgICAgICAgIGluaXRpYWxJblVuaXQgPSAoIGpRdWVyeS5jc3NOdW1iZXJb
IHByb3AgXSB8fCB1bml0ICE9PSAicHgiICYmICtpbml0aWFsICkgJiYKKyAgICAgICAgICAgIHJj
c3NOdW0uZXhlYyggalF1ZXJ5LmNzcyggZWxlbSwgcHJvcCApICk7CisKKyAgICBpZiAoIGluaXRp
YWxJblVuaXQgJiYgaW5pdGlhbEluVW5pdFsgMyBdICE9PSB1bml0ICkgeworCisgICAgICAgIC8v
IFRydXN0IHVuaXRzIHJlcG9ydGVkIGJ5IGpRdWVyeS5jc3MKKyAgICAgICAgdW5pdCA9IHVuaXQg
fHwgaW5pdGlhbEluVW5pdFsgMyBdOworCisgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSB1cGRhdGUg
dGhlIHR3ZWVuIHByb3BlcnRpZXMgbGF0ZXIgb24KKyAgICAgICAgdmFsdWVQYXJ0cyA9IHZhbHVl
UGFydHMgfHwgW107CisKKyAgICAgICAgLy8gSXRlcmF0aXZlbHkgYXBwcm94aW1hdGUgZnJvbSBh
IG5vbnplcm8gc3RhcnRpbmcgcG9pbnQKKyAgICAgICAgaW5pdGlhbEluVW5pdCA9ICtpbml0aWFs
IHx8IDE7CisKKyAgICAgICAgZG8geworCisgICAgICAgICAgICAvLyBJZiBwcmV2aW91cyBpdGVy
YXRpb24gemVyb2VkIG91dCwgZG91YmxlIHVudGlsIHdlIGdldCAqc29tZXRoaW5nKi4KKyAgICAg
ICAgICAgIC8vIFVzZSBzdHJpbmcgZm9yIGRvdWJsaW5nIHNvIHdlIGRvbid0IGFjY2lkZW50YWxs
eSBzZWUgc2NhbGUgYXMgdW5jaGFuZ2VkIGJlbG93CisgICAgICAgICAgICBzY2FsZSA9IHNjYWxl
IHx8ICIuNSI7CisKKyAgICAgICAgICAgIC8vIEFkanVzdCBhbmQgYXBwbHkKKyAgICAgICAgICAg
IGluaXRpYWxJblVuaXQgPSBpbml0aWFsSW5Vbml0IC8gc2NhbGU7CisgICAgICAgICAgICBqUXVl
cnkuc3R5bGUoIGVsZW0sIHByb3AsIGluaXRpYWxJblVuaXQgKyB1bml0ICk7CisKKyAgICAgICAg
Ly8gVXBkYXRlIHNjYWxlLCB0b2xlcmF0aW5nIHplcm8gb3IgTmFOIGZyb20gdHdlZW4uY3VyKCkK
KyAgICAgICAgLy8gQnJlYWsgdGhlIGxvb3AgaWYgc2NhbGUgaXMgdW5jaGFuZ2VkIG9yIHBlcmZl
Y3QsIG9yIGlmIHdlJ3ZlIGp1c3QgaGFkIGVub3VnaC4KKyAgICAgICAgfSB3aGlsZSAoCisgICAg
ICAgICAgICBzY2FsZSAhPT0gKCBzY2FsZSA9IGN1cnJlbnRWYWx1ZSgpIC8gaW5pdGlhbCApICYm
IHNjYWxlICE9PSAxICYmIC0tbWF4SXRlcmF0aW9ucworICAgICAgICApOworICAgIH0KKworICAg
IGlmICggdmFsdWVQYXJ0cyApIHsKKyAgICAgICAgaW5pdGlhbEluVW5pdCA9ICtpbml0aWFsSW5V
bml0IHx8ICtpbml0aWFsIHx8IDA7CisKKyAgICAgICAgLy8gQXBwbHkgcmVsYXRpdmUgb2Zmc2V0
ICgrPS8tPSkgaWYgc3BlY2lmaWVkCisgICAgICAgIGFkanVzdGVkID0gdmFsdWVQYXJ0c1sgMSBd
ID8KKyAgICAgICAgICAgIGluaXRpYWxJblVuaXQgKyAoIHZhbHVlUGFydHNbIDEgXSArIDEgKSAq
IHZhbHVlUGFydHNbIDIgXSA6CisgICAgICAgICAgICArdmFsdWVQYXJ0c1sgMiBdOworICAgICAg
ICBpZiAoIHR3ZWVuICkgeworICAgICAgICAgICAgdHdlZW4udW5pdCA9IHVuaXQ7CisgICAgICAg
ICAgICB0d2Vlbi5zdGFydCA9IGluaXRpYWxJblVuaXQ7CisgICAgICAgICAgICB0d2Vlbi5lbmQg
PSBhZGp1c3RlZDsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gYWRqdXN0ZWQ7Cit9CisK
K3JldHVybiBhZGp1c3RDU1M7Cit9ICk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkv
bm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvY3NzL2N1ckNTUy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVy
eS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9jc3MvY3VyQ1NTLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3Mzli
N2ViOTE3MmUwNjI2OTljODc4MjY5MjgzZmE3MzI0N2NiMDgKLS0tIC9kZXYvbnVsbAorKysgYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvY3NzL2N1ckNTUy5qcwpA
QCAtMCwwICsxLDU5IEBACitkZWZpbmUoIFsKKyAgICAiLi4vY29yZSIsCisgICAgIi4vdmFyL3Ju
dW1ub25weCIsCisgICAgIi4vdmFyL3JtYXJnaW4iLAorICAgICIuL3Zhci9nZXRTdHlsZXMiLAor
ICAgICIuL3N1cHBvcnQiLAorICAgICIuLi9zZWxlY3RvciIgLy8gR2V0IGpRdWVyeS5jb250YWlu
cworXSwgZnVuY3Rpb24oIGpRdWVyeSwgcm51bW5vbnB4LCBybWFyZ2luLCBnZXRTdHlsZXMsIHN1
cHBvcnQgKSB7CisKKyJ1c2Ugc3RyaWN0IjsKKworZnVuY3Rpb24gY3VyQ1NTKCBlbGVtLCBuYW1l
LCBjb21wdXRlZCApIHsKKyAgICB2YXIgd2lkdGgsIG1pbldpZHRoLCBtYXhXaWR0aCwgcmV0LAor
ICAgICAgICBzdHlsZSA9IGVsZW0uc3R5bGU7CisKKyAgICBjb21wdXRlZCA9IGNvbXB1dGVkIHx8
IGdldFN0eWxlcyggZWxlbSApOworCisgICAgLy8gU3VwcG9ydDogSUUgPD05IG9ubHkKKyAgICAv
LyBnZXRQcm9wZXJ0eVZhbHVlIGlzIG9ubHkgbmVlZGVkIGZvciAuY3NzKCdmaWx0ZXInKSAoIzEy
NTM3KQorICAgIGlmICggY29tcHV0ZWQgKSB7CisgICAgICAgIHJldCA9IGNvbXB1dGVkLmdldFBy
b3BlcnR5VmFsdWUoIG5hbWUgKSB8fCBjb21wdXRlZFsgbmFtZSBdOworCisgICAgICAgIGlmICgg
cmV0ID09PSAiIiAmJiAhalF1ZXJ5LmNvbnRhaW5zKCBlbGVtLm93bmVyRG9jdW1lbnQsIGVsZW0g
KSApIHsKKyAgICAgICAgICAgIHJldCA9IGpRdWVyeS5zdHlsZSggZWxlbSwgbmFtZSApOworICAg
ICAgICB9CisKKyAgICAgICAgLy8gQSB0cmlidXRlIHRvIHRoZSAiYXdlc29tZSBoYWNrIGJ5IERl
YW4gRWR3YXJkcyIKKyAgICAgICAgLy8gQW5kcm9pZCBCcm93c2VyIHJldHVybnMgcGVyY2VudGFn
ZSBmb3Igc29tZSB2YWx1ZXMsCisgICAgICAgIC8vIGJ1dCB3aWR0aCBzZWVtcyB0byBiZSByZWxp
YWJseSBwaXhlbHMuCisgICAgICAgIC8vIFRoaXMgaXMgYWdhaW5zdCB0aGUgQ1NTT00gZHJhZnQg
c3BlYzoKKyAgICAgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzc29tLyNyZXNvbHZl
ZC12YWx1ZXMKKyAgICAgICAgaWYgKCAhc3VwcG9ydC5waXhlbE1hcmdpblJpZ2h0KCkgJiYgcm51
bW5vbnB4LnRlc3QoIHJldCApICYmIHJtYXJnaW4udGVzdCggbmFtZSApICkgeworCisgICAgICAg
ICAgICAvLyBSZW1lbWJlciB0aGUgb3JpZ2luYWwgdmFsdWVzCisgICAgICAgICAgICB3aWR0aCA9
IHN0eWxlLndpZHRoOworICAgICAgICAgICAgbWluV2lkdGggPSBzdHlsZS5taW5XaWR0aDsKKyAg
ICAgICAgICAgIG1heFdpZHRoID0gc3R5bGUubWF4V2lkdGg7CisKKyAgICAgICAgICAgIC8vIFB1
dCBpbiB0aGUgbmV3IHZhbHVlcyB0byBnZXQgYSBjb21wdXRlZCB2YWx1ZSBvdXQKKyAgICAgICAg
ICAgIHN0eWxlLm1pbldpZHRoID0gc3R5bGUubWF4V2lkdGggPSBzdHlsZS53aWR0aCA9IHJldDsK
KyAgICAgICAgICAgIHJldCA9IGNvbXB1dGVkLndpZHRoOworCisgICAgICAgICAgICAvLyBSZXZl
cnQgdGhlIGNoYW5nZWQgdmFsdWVzCisgICAgICAgICAgICBzdHlsZS53aWR0aCA9IHdpZHRoOwor
ICAgICAgICAgICAgc3R5bGUubWluV2lkdGggPSBtaW5XaWR0aDsKKyAgICAgICAgICAgIHN0eWxl
Lm1heFdpZHRoID0gbWF4V2lkdGg7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gcmV0
ICE9PSB1bmRlZmluZWQgPworCisgICAgICAgIC8vIFN1cHBvcnQ6IElFIDw9OSAtIDExIG9ubHkK
KyAgICAgICAgLy8gSUUgcmV0dXJucyB6SW5kZXggdmFsdWUgYXMgYW4gaW50ZWdlci4KKyAgICAg
ICAgcmV0ICsgIiIgOgorICAgICAgICByZXQ7Cit9CisKK3JldHVybiBjdXJDU1M7Cit9ICk7CmRp
ZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvY3Nz
L2hpZGRlblZpc2libGVTZWxlY3RvcnMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1
bGVzL2pxdWVyeS9zcmMvY3NzL2hpZGRlblZpc2libGVTZWxlY3RvcnMuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YmVjZGQ1Mzk3Y2IxZGI4NDA2MTU3M2ZhYWI3ZTY4OTAyZjFkMWRkMwotLS0gL2Rldi9udWxsCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9jc3MvaGlkZGVu
VmlzaWJsZVNlbGVjdG9ycy5qcwpAQCAtMCwwICsxLDE1IEBACitkZWZpbmUoIFsKKyAgICAiLi4v
Y29yZSIsCisgICAgIi4uL3NlbGVjdG9yIgorXSwgZnVuY3Rpb24oIGpRdWVyeSApIHsKKworInVz
ZSBzdHJpY3QiOworCitqUXVlcnkuZXhwci5wc2V1ZG9zLmhpZGRlbiA9IGZ1bmN0aW9uKCBlbGVt
ICkgeworICAgIHJldHVybiAhalF1ZXJ5LmV4cHIucHNldWRvcy52aXNpYmxlKCBlbGVtICk7Cit9
OworalF1ZXJ5LmV4cHIucHNldWRvcy52aXNpYmxlID0gZnVuY3Rpb24oIGVsZW0gKSB7CisgICAg
cmV0dXJuICEhKCBlbGVtLm9mZnNldFdpZHRoIHx8IGVsZW0ub2Zmc2V0SGVpZ2h0IHx8IGVsZW0u
Z2V0Q2xpZW50UmVjdHMoKS5sZW5ndGggKTsKK307CisKK30gKTsKZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9jc3Mvc2hvd0hpZGUuanMgYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvY3NzL3Nob3dIaWRlLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjczMWUwMjYwZGIxZjU2OTFkOGQzMGY2NzczMmE1ODUxZTE0YzAzN2IKLS0t
IC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9z
cmMvY3NzL3Nob3dIaWRlLmpzCkBAIC0wLDAgKzEsMTA1IEBACitkZWZpbmUoIFsKKyAgICAiLi4v
Y29yZSIsCisgICAgIi4uL2RhdGEvdmFyL2RhdGFQcml2IiwKKyAgICAiLi4vY3NzL3Zhci9pc0hp
ZGRlbldpdGhpblRyZWUiCitdLCBmdW5jdGlvbiggalF1ZXJ5LCBkYXRhUHJpdiwgaXNIaWRkZW5X
aXRoaW5UcmVlICkgeworCisidXNlIHN0cmljdCI7CisKK3ZhciBkZWZhdWx0RGlzcGxheU1hcCA9
IHt9OworCitmdW5jdGlvbiBnZXREZWZhdWx0RGlzcGxheSggZWxlbSApIHsKKyAgICB2YXIgdGVt
cCwKKyAgICAgICAgZG9jID0gZWxlbS5vd25lckRvY3VtZW50LAorICAgICAgICBub2RlTmFtZSA9
IGVsZW0ubm9kZU5hbWUsCisgICAgICAgIGRpc3BsYXkgPSBkZWZhdWx0RGlzcGxheU1hcFsgbm9k
ZU5hbWUgXTsKKworICAgIGlmICggZGlzcGxheSApIHsKKyAgICAgICAgcmV0dXJuIGRpc3BsYXk7
CisgICAgfQorCisgICAgdGVtcCA9IGRvYy5ib2R5LmFwcGVuZENoaWxkKCBkb2MuY3JlYXRlRWxl
bWVudCggbm9kZU5hbWUgKSApOworICAgIGRpc3BsYXkgPSBqUXVlcnkuY3NzKCB0ZW1wLCAiZGlz
cGxheSIgKTsKKworICAgIHRlbXAucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCggdGVtcCApOworCisg
ICAgaWYgKCBkaXNwbGF5ID09PSAibm9uZSIgKSB7CisgICAgICAgIGRpc3BsYXkgPSAiYmxvY2si
OworICAgIH0KKyAgICBkZWZhdWx0RGlzcGxheU1hcFsgbm9kZU5hbWUgXSA9IGRpc3BsYXk7CisK
KyAgICByZXR1cm4gZGlzcGxheTsKK30KKworZnVuY3Rpb24gc2hvd0hpZGUoIGVsZW1lbnRzLCBz
aG93ICkgeworICAgIHZhciBkaXNwbGF5LCBlbGVtLAorICAgICAgICB2YWx1ZXMgPSBbXSwKKyAg
ICAgICAgaW5kZXggPSAwLAorICAgICAgICBsZW5ndGggPSBlbGVtZW50cy5sZW5ndGg7CisKKyAg
ICAvLyBEZXRlcm1pbmUgbmV3IGRpc3BsYXkgdmFsdWUgZm9yIGVsZW1lbnRzIHRoYXQgbmVlZCB0
byBjaGFuZ2UKKyAgICBmb3IgKCA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkgeworICAgICAg
ICBlbGVtID0gZWxlbWVudHNbIGluZGV4IF07CisgICAgICAgIGlmICggIWVsZW0uc3R5bGUgKSB7
CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGRpc3BsYXkgPSBl
bGVtLnN0eWxlLmRpc3BsYXk7CisgICAgICAgIGlmICggc2hvdyApIHsKKworICAgICAgICAgICAg
Ly8gU2luY2Ugd2UgZm9yY2UgdmlzaWJpbGl0eSB1cG9uIGNhc2NhZGUtaGlkZGVuIGVsZW1lbnRz
LCBhbiBpbW1lZGlhdGUgKGFuZCBzbG93KQorICAgICAgICAgICAgLy8gY2hlY2sgaXMgcmVxdWly
ZWQgaW4gdGhpcyBmaXJzdCBsb29wIHVubGVzcyB3ZSBoYXZlIGEgbm9uZW1wdHkgZGlzcGxheSB2
YWx1ZSAoZWl0aGVyCisgICAgICAgICAgICAvLyBpbmxpbmUgb3IgYWJvdXQtdG8tYmUtcmVzdG9y
ZWQpCisgICAgICAgICAgICBpZiAoIGRpc3BsYXkgPT09ICJub25lIiApIHsKKyAgICAgICAgICAg
ICAgICB2YWx1ZXNbIGluZGV4IF0gPSBkYXRhUHJpdi5nZXQoIGVsZW0sICJkaXNwbGF5IiApIHx8
IG51bGw7CisgICAgICAgICAgICAgICAgaWYgKCAhdmFsdWVzWyBpbmRleCBdICkgeworICAgICAg
ICAgICAgICAgICAgICBlbGVtLnN0eWxlLmRpc3BsYXkgPSAiIjsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIGVsZW0uc3R5bGUuZGlzcGxheSA9PT0g
IiIgJiYgaXNIaWRkZW5XaXRoaW5UcmVlKCBlbGVtICkgKSB7CisgICAgICAgICAgICAgICAgdmFs
dWVzWyBpbmRleCBdID0gZ2V0RGVmYXVsdERpc3BsYXkoIGVsZW0gKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmICggZGlzcGxheSAhPT0gIm5vbmUiICkg
eworICAgICAgICAgICAgICAgIHZhbHVlc1sgaW5kZXggXSA9ICJub25lIjsKKworICAgICAgICAg
ICAgICAgIC8vIFJlbWVtYmVyIHdoYXQgd2UncmUgb3ZlcndyaXRpbmcKKyAgICAgICAgICAgICAg
ICBkYXRhUHJpdi5zZXQoIGVsZW0sICJkaXNwbGF5IiwgZGlzcGxheSApOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQorCisgICAgLy8gU2V0IHRoZSBkaXNwbGF5IG9mIHRoZSBlbGVt
ZW50cyBpbiBhIHNlY29uZCBsb29wIHRvIGF2b2lkIGNvbnN0YW50IHJlZmxvdworICAgIGZvciAo
IGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7CisgICAgICAgIGlmICggdmFs
dWVzWyBpbmRleCBdICE9IG51bGwgKSB7CisgICAgICAgICAgICBlbGVtZW50c1sgaW5kZXggXS5z
dHlsZS5kaXNwbGF5ID0gdmFsdWVzWyBpbmRleCBdOworICAgICAgICB9CisgICAgfQorCisgICAg
cmV0dXJuIGVsZW1lbnRzOworfQorCitqUXVlcnkuZm4uZXh0ZW5kKCB7CisgICAgc2hvdzogZnVu
Y3Rpb24oKSB7CisgICAgICAgIHJldHVybiBzaG93SGlkZSggdGhpcywgdHJ1ZSApOworICAgIH0s
CisgICAgaGlkZTogZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiBzaG93SGlkZSggdGhpcyAp
OworICAgIH0sCisgICAgdG9nZ2xlOiBmdW5jdGlvbiggc3RhdGUgKSB7CisgICAgICAgIGlmICgg
dHlwZW9mIHN0YXRlID09PSAiYm9vbGVhbiIgKSB7CisgICAgICAgICAgICByZXR1cm4gc3RhdGUg
PyB0aGlzLnNob3coKSA6IHRoaXMuaGlkZSgpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJu
IHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBpZiAoIGlzSGlkZGVuV2l0aGlu
VHJlZSggdGhpcyApICkgeworICAgICAgICAgICAgICAgIGpRdWVyeSggdGhpcyApLnNob3coKTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgalF1ZXJ5KCB0aGlzICkuaGlk
ZSgpOworICAgICAgICAgICAgfQorICAgICAgICB9ICk7CisgICAgfQorfSApOworCityZXR1cm4g
c2hvd0hpZGU7Cit9ICk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1
bGVzL2pxdWVyeS9zcmMvY3NzL3N1cHBvcnQuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9t
b2R1bGVzL2pxdWVyeS9zcmMvY3NzL3N1cHBvcnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjk5OWVjOWE2YzQ3
YmM1ODcyNzdkMThlYjM2YzMwNjNiYzg5MTkwYgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9jc3Mvc3VwcG9ydC5qcwpAQCAtMCww
ICsxLDg5IEBACitkZWZpbmUoIFsKKyAgICAiLi4vY29yZSIsCisgICAgIi4uL3Zhci9kb2N1bWVu
dCIsCisgICAgIi4uL3Zhci9kb2N1bWVudEVsZW1lbnQiLAorICAgICIuLi92YXIvc3VwcG9ydCIK
K10sIGZ1bmN0aW9uKCBqUXVlcnksIGRvY3VtZW50LCBkb2N1bWVudEVsZW1lbnQsIHN1cHBvcnQg
KSB7CisKKyJ1c2Ugc3RyaWN0IjsKKworKCBmdW5jdGlvbigpIHsKKworICAgIC8vIEV4ZWN1dGlu
ZyBib3RoIHBpeGVsUG9zaXRpb24gJiBib3hTaXppbmdSZWxpYWJsZSB0ZXN0cyByZXF1aXJlIG9u
bHkgb25lIGxheW91dAorICAgIC8vIHNvIHRoZXkncmUgZXhlY3V0ZWQgYXQgdGhlIHNhbWUgdGlt
ZSB0byBzYXZlIHRoZSBzZWNvbmQgY29tcHV0YXRpb24uCisgICAgZnVuY3Rpb24gY29tcHV0ZVN0
eWxlVGVzdHMoKSB7CisKKyAgICAgICAgLy8gVGhpcyBpcyBhIHNpbmdsZXRvbiwgd2UgbmVlZCB0
byBleGVjdXRlIGl0IG9ubHkgb25jZQorICAgICAgICBpZiAoICFkaXYgKSB7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBkaXYuc3R5bGUuY3NzVGV4dCA9CisgICAg
ICAgICAgICAiYm94LXNpemluZzpib3JkZXItYm94OyIgKworICAgICAgICAgICAgInBvc2l0aW9u
OnJlbGF0aXZlO2Rpc3BsYXk6YmxvY2s7IiArCisgICAgICAgICAgICAibWFyZ2luOmF1dG87Ym9y
ZGVyOjFweDtwYWRkaW5nOjFweDsiICsKKyAgICAgICAgICAgICJ0b3A6MSU7d2lkdGg6NTAlIjsK
KyAgICAgICAgZGl2LmlubmVySFRNTCA9ICIiOworICAgICAgICBkb2N1bWVudEVsZW1lbnQuYXBw
ZW5kQ2hpbGQoIGNvbnRhaW5lciApOworCisgICAgICAgIHZhciBkaXZTdHlsZSA9IHdpbmRvdy5n
ZXRDb21wdXRlZFN0eWxlKCBkaXYgKTsKKyAgICAgICAgcGl4ZWxQb3NpdGlvblZhbCA9IGRpdlN0
eWxlLnRvcCAhPT0gIjElIjsKKworICAgICAgICAvLyBTdXBwb3J0OiBBbmRyb2lkIDQuMCAtIDQu
MyBvbmx5LCBGaXJlZm94IDw9MyAtIDQ0CisgICAgICAgIHJlbGlhYmxlTWFyZ2luTGVmdFZhbCA9
IGRpdlN0eWxlLm1hcmdpbkxlZnQgPT09ICIycHgiOworICAgICAgICBib3hTaXppbmdSZWxpYWJs
ZVZhbCA9IGRpdlN0eWxlLndpZHRoID09PSAiNHB4IjsKKworICAgICAgICAvLyBTdXBwb3J0OiBB
bmRyb2lkIDQuMCAtIDQuMyBvbmx5CisgICAgICAgIC8vIFNvbWUgc3R5bGVzIGNvbWUgYmFjayB3
aXRoIHBlcmNlbnRhZ2UgdmFsdWVzLCBldmVuIHRob3VnaCB0aGV5IHNob3VsZG4ndAorICAgICAg
ICBkaXYuc3R5bGUubWFyZ2luUmlnaHQgPSAiNTAlIjsKKyAgICAgICAgcGl4ZWxNYXJnaW5SaWdo
dFZhbCA9IGRpdlN0eWxlLm1hcmdpblJpZ2h0ID09PSAiNHB4IjsKKworICAgICAgICBkb2N1bWVu
dEVsZW1lbnQucmVtb3ZlQ2hpbGQoIGNvbnRhaW5lciApOworCisgICAgICAgIC8vIE51bGxpZnkg
dGhlIGRpdiBzbyBpdCB3b3VsZG4ndCBiZSBzdG9yZWQgaW4gdGhlIG1lbW9yeSBhbmQKKyAgICAg
ICAgLy8gaXQgd2lsbCBhbHNvIGJlIGEgc2lnbiB0aGF0IGNoZWNrcyBhbHJlYWR5IHBlcmZvcm1l
ZAorICAgICAgICBkaXYgPSBudWxsOworICAgIH0KKworICAgIHZhciBwaXhlbFBvc2l0aW9uVmFs
LCBib3hTaXppbmdSZWxpYWJsZVZhbCwgcGl4ZWxNYXJnaW5SaWdodFZhbCwgcmVsaWFibGVNYXJn
aW5MZWZ0VmFsLAorICAgICAgICBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCAi
ZGl2IiApLAorICAgICAgICBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCAiZGl2IiApOwor
CisgICAgLy8gRmluaXNoIGVhcmx5IGluIGxpbWl0ZWQgKG5vbi1icm93c2VyKSBlbnZpcm9ubWVu
dHMKKyAgICBpZiAoICFkaXYuc3R5bGUgKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICAvLyBTdXBwb3J0OiBJRSA8PTkgLSAxMSBvbmx5CisgICAgLy8gU3R5bGUgb2YgY2xvbmVkIGVs
ZW1lbnQgYWZmZWN0cyBzb3VyY2UgZWxlbWVudCBjbG9uZWQgKCM4OTA4KQorICAgIGRpdi5zdHls
ZS5iYWNrZ3JvdW5kQ2xpcCA9ICJjb250ZW50LWJveCI7CisgICAgZGl2LmNsb25lTm9kZSggdHJ1
ZSApLnN0eWxlLmJhY2tncm91bmRDbGlwID0gIiI7CisgICAgc3VwcG9ydC5jbGVhckNsb25lU3R5
bGUgPSBkaXYuc3R5bGUuYmFja2dyb3VuZENsaXAgPT09ICJjb250ZW50LWJveCI7CisKKyAgICBj
b250YWluZXIuc3R5bGUuY3NzVGV4dCA9ICJib3JkZXI6MDt3aWR0aDo4cHg7aGVpZ2h0OjA7dG9w
OjA7bGVmdDotOTk5OXB4OyIgKworICAgICAgICAicGFkZGluZzowO21hcmdpbi10b3A6MXB4O3Bv
c2l0aW9uOmFic29sdXRlIjsKKyAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoIGRpdiApOworCisg
ICAgalF1ZXJ5LmV4dGVuZCggc3VwcG9ydCwgeworICAgICAgICBwaXhlbFBvc2l0aW9uOiBmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgIGNvbXB1dGVTdHlsZVRlc3RzKCk7CisgICAgICAgICAgICBy
ZXR1cm4gcGl4ZWxQb3NpdGlvblZhbDsKKyAgICAgICAgfSwKKyAgICAgICAgYm94U2l6aW5nUmVs
aWFibGU6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgY29tcHV0ZVN0eWxlVGVzdHMoKTsKKyAg
ICAgICAgICAgIHJldHVybiBib3hTaXppbmdSZWxpYWJsZVZhbDsKKyAgICAgICAgfSwKKyAgICAg
ICAgcGl4ZWxNYXJnaW5SaWdodDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBjb21wdXRlU3R5
bGVUZXN0cygpOworICAgICAgICAgICAgcmV0dXJuIHBpeGVsTWFyZ2luUmlnaHRWYWw7CisgICAg
ICAgIH0sCisgICAgICAgIHJlbGlhYmxlTWFyZ2luTGVmdDogZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICBjb21wdXRlU3R5bGVUZXN0cygpOworICAgICAgICAgICAgcmV0dXJuIHJlbGlhYmxlTWFy
Z2luTGVmdFZhbDsKKyAgICAgICAgfQorICAgIH0gKTsKK30gKSgpOworCityZXR1cm4gc3VwcG9y
dDsKKworfSApOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9q
cXVlcnkvc3JjL2Nzcy92YXIvY3NzRXhwYW5kLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVf
bW9kdWxlcy9qcXVlcnkvc3JjL2Nzcy92YXIvY3NzRXhwYW5kLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYzY2Vj
NzIwMzBiNDRjNTI0NjM3ZmJjNjBhZGE1NWZjZmE5NzVmYjIKLS0tIC9kZXYvbnVsbAorKysgYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvY3NzL3Zhci9jc3NFeHBh
bmQuanMKQEAgLTAsMCArMSw1IEBACitkZWZpbmUoIGZ1bmN0aW9uKCkgeworICAgICJ1c2Ugc3Ry
aWN0IjsKKworICAgIHJldHVybiBbICJUb3AiLCAiUmlnaHQiLCAiQm90dG9tIiwgIkxlZnQiIF07
Cit9ICk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVy
eS9zcmMvY3NzL3Zhci9nZXRTdHlsZXMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1
bGVzL2pxdWVyeS9zcmMvY3NzL3Zhci9nZXRTdHlsZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGQyOTI4MzRm
NGZlY2NhMDMxOTMyYjc4ZDk0NGJhYWRiZTFkMDIxNQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9jc3MvdmFyL2dldFN0eWxlcy5q
cwpAQCAtMCwwICsxLDE3IEBACitkZWZpbmUoIGZ1bmN0aW9uKCkgeworICAgICJ1c2Ugc3RyaWN0
IjsKKworICAgIHJldHVybiBmdW5jdGlvbiggZWxlbSApIHsKKworICAgICAgICAvLyBTdXBwb3J0
OiBJRSA8PTExIG9ubHksIEZpcmVmb3ggPD0zMCAoIzE1MDk4LCAjMTQxNTApCisgICAgICAgIC8v
IElFIHRocm93cyBvbiBlbGVtZW50cyBjcmVhdGVkIGluIHBvcHVwcworICAgICAgICAvLyBGRiBt
ZWFud2hpbGUgdGhyb3dzIG9uIGZyYW1lIGVsZW1lbnRzIHRocm91Z2ggImRlZmF1bHRWaWV3Lmdl
dENvbXB1dGVkU3R5bGUiCisgICAgICAgIHZhciB2aWV3ID0gZWxlbS5vd25lckRvY3VtZW50LmRl
ZmF1bHRWaWV3OworCisgICAgICAgIGlmICggIXZpZXcgfHwgIXZpZXcub3BlbmVyICkgeworICAg
ICAgICAgICAgdmlldyA9IHdpbmRvdzsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB2aWV3
LmdldENvbXB1dGVkU3R5bGUoIGVsZW0gKTsKKyAgICB9OworfSApOwpkaWZmIC0tZ2l0IGEvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2Nzcy92YXIvaXNIaWRkZW5X
aXRoaW5UcmVlLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3Jj
L2Nzcy92YXIvaXNIaWRkZW5XaXRoaW5UcmVlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdkYzYwNmJhYjU3ZmQ2
Nzc1NGM5NWIxNzk4ZjJlZDgyMjUyYzFjMzQKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvY3NzL3Zhci9pc0hpZGRlbldpdGhpblRy
ZWUuanMKQEAgLTAsMCArMSwzNCBAQAorZGVmaW5lKCBbCisgICAgIi4uLy4uL2NvcmUiLAorICAg
ICIuLi8uLi9zZWxlY3RvciIKKworICAgIC8vIGNzcyBpcyBhc3N1bWVkCitdLCBmdW5jdGlvbigg
alF1ZXJ5ICkgeworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIC8vIGlzSGlkZGVuV2l0aGluVHJl
ZSByZXBvcnRzIGlmIGFuIGVsZW1lbnQgaGFzIGEgbm9uLSJub25lIiBkaXNwbGF5IHN0eWxlIChp
bmxpbmUgYW5kL29yCisgICAgLy8gdGhyb3VnaCB0aGUgQ1NTIGNhc2NhZGUpLCB3aGljaCBpcyB1
c2VmdWwgaW4gZGVjaWRpbmcgd2hldGhlciBvciBub3QgdG8gbWFrZSBpdCB2aXNpYmxlLgorICAg
IC8vIEl0IGRpZmZlcnMgZnJvbSB0aGUgOmhpZGRlbiBzZWxlY3RvciAoalF1ZXJ5LmV4cHIucHNl
dWRvcy5oaWRkZW4pIGluIHR3byBpbXBvcnRhbnQgd2F5czoKKyAgICAvLyAqIEEgaGlkZGVuIGFu
Y2VzdG9yIGRvZXMgbm90IGZvcmNlIGFuIGVsZW1lbnQgdG8gYmUgY2xhc3NpZmllZCBhcyBoaWRk
ZW4uCisgICAgLy8gKiBCZWluZyBkaXNjb25uZWN0ZWQgZnJvbSB0aGUgZG9jdW1lbnQgZG9lcyBu
b3QgZm9yY2UgYW4gZWxlbWVudCB0byBiZSBjbGFzc2lmaWVkIGFzIGhpZGRlbi4KKyAgICAvLyBU
aGVzZSBkaWZmZXJlbmNlcyBpbXByb3ZlIHRoZSBiZWhhdmlvciBvZiAudG9nZ2xlKCkgZXQgYWwu
IHdoZW4gYXBwbGllZCB0byBlbGVtZW50cyB0aGF0IGFyZQorICAgIC8vIGRldGFjaGVkIG9yIGNv
bnRhaW5lZCB3aXRoaW4gaGlkZGVuIGFuY2VzdG9ycyAoZ2gtMjQwNCwgZ2gtMjg2MykuCisgICAg
cmV0dXJuIGZ1bmN0aW9uKCBlbGVtLCBlbCApIHsKKworICAgICAgICAvLyBpc0hpZGRlbldpdGhp
blRyZWUgbWlnaHQgYmUgY2FsbGVkIGZyb20galF1ZXJ5I2ZpbHRlciBmdW5jdGlvbjsKKyAgICAg
ICAgLy8gaW4gdGhhdCBjYXNlLCBlbGVtZW50IHdpbGwgYmUgc2Vjb25kIGFyZ3VtZW50CisgICAg
ICAgIGVsZW0gPSBlbCB8fCBlbGVtOworCisgICAgICAgIC8vIElubGluZSBzdHlsZSB0cnVtcHMg
YWxsCisgICAgICAgIHJldHVybiBlbGVtLnN0eWxlLmRpc3BsYXkgPT09ICJub25lIiB8fAorICAg
ICAgICAgICAgZWxlbS5zdHlsZS5kaXNwbGF5ID09PSAiIiAmJgorCisgICAgICAgICAgICAvLyBP
dGhlcndpc2UsIGNoZWNrIGNvbXB1dGVkIHN0eWxlCisgICAgICAgICAgICAvLyBTdXBwb3J0OiBG
aXJlZm94IDw9NDMgLSA0NQorICAgICAgICAgICAgLy8gRGlzY29ubmVjdGVkIGVsZW1lbnRzIGNh
biBoYXZlIGNvbXB1dGVkIGRpc3BsYXk6IG5vbmUsIHNvIGZpcnN0IGNvbmZpcm0gdGhhdCBlbGVt
IGlzCisgICAgICAgICAgICAvLyBpbiB0aGUgZG9jdW1lbnQuCisgICAgICAgICAgICBqUXVlcnku
Y29udGFpbnMoIGVsZW0ub3duZXJEb2N1bWVudCwgZWxlbSApICYmCisKKyAgICAgICAgICAgIGpR
dWVyeS5jc3MoIGVsZW0sICJkaXNwbGF5IiApID09PSAibm9uZSI7CisgICAgfTsKK30gKTsKZGlm
ZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9jc3Mv
dmFyL3JtYXJnaW4uanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9z
cmMvY3NzL3Zhci9ybWFyZ2luLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI0MDhhNGI2NDQxZTg1YTZiNGRlY2Nk
YmQ2NDdhNDMzZDQ4NDRkZDIKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkv
bm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvY3NzL3Zhci9ybWFyZ2luLmpzCkBAIC0wLDAgKzEsNSBA
QAorZGVmaW5lKCBmdW5jdGlvbigpIHsKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICByZXR1cm4g
KCAvXm1hcmdpbi8gKTsKK30gKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2Rl
X21vZHVsZXMvanF1ZXJ5L3NyYy9jc3MvdmFyL3JudW1ub25weC5qcyBiL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2px
dWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9jc3MvdmFyL3JudW1ub25weC5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43NWZlYzI2YjkzMWQ4NDZiOTYwNzEwM2NiNjc3ODc0ODcwNTA4ZjU4Ci0tLSAvZGV2L251
bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2Nzcy92
YXIvcm51bW5vbnB4LmpzCkBAIC0wLDAgKzEsNyBAQAorZGVmaW5lKCBbCisgICAgIi4uLy4uL3Zh
ci9wbnVtIgorXSwgZnVuY3Rpb24oIHBudW0gKSB7CisgICAgInVzZSBzdHJpY3QiOworCisgICAg
cmV0dXJuIG5ldyBSZWdFeHAoICJeKCIgKyBwbnVtICsgIikoPyFweClbYS16JV0rJCIsICJpIiAp
OworfSApOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVl
cnkvc3JjL2Nzcy92YXIvc3dhcC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMv
anF1ZXJ5L3NyYy9jc3MvdmFyL3N3YXAuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjA0MzM5NWFmMDY1ZmEyOWYx
ZjBhM2Y4OWQ5OTliMzVhZDExMTNiOAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2px
dWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9jc3MvdmFyL3N3YXAuanMKQEAgLTAsMCArMSwy
NiBAQAorZGVmaW5lKCBmdW5jdGlvbigpIHsKKworInVzZSBzdHJpY3QiOworCisvLyBBIG1ldGhv
ZCBmb3IgcXVpY2tseSBzd2FwcGluZyBpbi9vdXQgQ1NTIHByb3BlcnRpZXMgdG8gZ2V0IGNvcnJl
Y3QgY2FsY3VsYXRpb25zLgorcmV0dXJuIGZ1bmN0aW9uKCBlbGVtLCBvcHRpb25zLCBjYWxsYmFj
aywgYXJncyApIHsKKyAgICB2YXIgcmV0LCBuYW1lLAorICAgICAgICBvbGQgPSB7fTsKKworICAg
IC8vIFJlbWVtYmVyIHRoZSBvbGQgdmFsdWVzLCBhbmQgaW5zZXJ0IHRoZSBuZXcgb25lcworICAg
IGZvciAoIG5hbWUgaW4gb3B0aW9ucyApIHsKKyAgICAgICAgb2xkWyBuYW1lIF0gPSBlbGVtLnN0
eWxlWyBuYW1lIF07CisgICAgICAgIGVsZW0uc3R5bGVbIG5hbWUgXSA9IG9wdGlvbnNbIG5hbWUg
XTsKKyAgICB9CisKKyAgICByZXQgPSBjYWxsYmFjay5hcHBseSggZWxlbSwgYXJncyB8fCBbXSAp
OworCisgICAgLy8gUmV2ZXJ0IHRoZSBvbGQgdmFsdWVzCisgICAgZm9yICggbmFtZSBpbiBvcHRp
b25zICkgeworICAgICAgICBlbGVtLnN0eWxlWyBuYW1lIF0gPSBvbGRbIG5hbWUgXTsKKyAgICB9
CisKKyAgICByZXR1cm4gcmV0OworfTsKKworfSApOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
anF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2RhdGEuanMgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVl
cnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvZGF0YS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mM2UyMjE2OWQx
OWI4YjI4ZDE5YWUxNjcwMWIxNmNhMjNhNmUxZjcwCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2RhdGEuanMKQEAgLTAsMCArMSwx
NzkgQEAKK2RlZmluZSggWworICAgICIuL2NvcmUiLAorICAgICIuL2NvcmUvYWNjZXNzIiwKKyAg
ICAiLi9kYXRhL3Zhci9kYXRhUHJpdiIsCisgICAgIi4vZGF0YS92YXIvZGF0YVVzZXIiCitdLCBm
dW5jdGlvbiggalF1ZXJ5LCBhY2Nlc3MsIGRhdGFQcml2LCBkYXRhVXNlciApIHsKKworInVzZSBz
dHJpY3QiOworCisvLyAgSW1wbGVtZW50YXRpb24gU3VtbWFyeQorLy8KKy8vICAxLiBFbmZvcmNl
IEFQSSBzdXJmYWNlIGFuZCBzZW1hbnRpYyBjb21wYXRpYmlsaXR5IHdpdGggMS45LnggYnJhbmNo
CisvLyAgMi4gSW1wcm92ZSB0aGUgbW9kdWxlJ3MgbWFpbnRhaW5hYmlsaXR5IGJ5IHJlZHVjaW5n
IHRoZSBzdG9yYWdlCisvLyAgICAgIHBhdGhzIHRvIGEgc2luZ2xlIG1lY2hhbmlzbS4KKy8vICAz
LiBVc2UgdGhlIHNhbWUgc2luZ2xlIG1lY2hhbmlzbSB0byBzdXBwb3J0ICJwcml2YXRlIiBhbmQg
InVzZXIiIGRhdGEuCisvLyAgNC4gX05ldmVyXyBleHBvc2UgInByaXZhdGUiIGRhdGEgdG8gdXNl
ciBjb2RlIChUT0RPOiBEcm9wIF9kYXRhLCBfcmVtb3ZlRGF0YSkKKy8vICA1LiBBdm9pZCBleHBv
c2luZyBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIG9uIHVzZXIgb2JqZWN0cyAoZWcuIGV4cGFuZG8g
cHJvcGVydGllcykKKy8vICA2LiBQcm92aWRlIGEgY2xlYXIgcGF0aCBmb3IgaW1wbGVtZW50YXRp
b24gdXBncmFkZSB0byBXZWFrTWFwIGluIDIwMTQKKwordmFyIHJicmFjZSA9IC9eKD86XHtbXHdc
V10qXH18XFtbXHdcV10qXF0pJC8sCisgICAgcm11bHRpRGFzaCA9IC9bQS1aXS9nOworCitmdW5j
dGlvbiBnZXREYXRhKCBkYXRhICkgeworICAgIGlmICggZGF0YSA9PT0gInRydWUiICkgeworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAoIGRhdGEgPT09ICJmYWxzZSIgKSB7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIGRhdGEgPT09ICJudWxs
IiApIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgLy8gT25seSBjb252ZXJ0
IHRvIGEgbnVtYmVyIGlmIGl0IGRvZXNuJ3QgY2hhbmdlIHRoZSBzdHJpbmcKKyAgICBpZiAoIGRh
dGEgPT09ICtkYXRhICsgIiIgKSB7CisgICAgICAgIHJldHVybiArZGF0YTsKKyAgICB9CisKKyAg
ICBpZiAoIHJicmFjZS50ZXN0KCBkYXRhICkgKSB7CisgICAgICAgIHJldHVybiBKU09OLnBhcnNl
KCBkYXRhICk7CisgICAgfQorCisgICAgcmV0dXJuIGRhdGE7Cit9CisKK2Z1bmN0aW9uIGRhdGFB
dHRyKCBlbGVtLCBrZXksIGRhdGEgKSB7CisgICAgdmFyIG5hbWU7CisKKyAgICAvLyBJZiBub3Ro
aW5nIHdhcyBmb3VuZCBpbnRlcm5hbGx5LCB0cnkgdG8gZmV0Y2ggYW55CisgICAgLy8gZGF0YSBm
cm9tIHRoZSBIVE1MNSBkYXRhLSogYXR0cmlidXRlCisgICAgaWYgKCBkYXRhID09PSB1bmRlZmlu
ZWQgJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSApIHsKKyAgICAgICAgbmFtZSA9ICJkYXRhLSIgKyBr
ZXkucmVwbGFjZSggcm11bHRpRGFzaCwgIi0kJiIgKS50b0xvd2VyQ2FzZSgpOworICAgICAgICBk
YXRhID0gZWxlbS5nZXRBdHRyaWJ1dGUoIG5hbWUgKTsKKworICAgICAgICBpZiAoIHR5cGVvZiBk
YXRhID09PSAic3RyaW5nIiApIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAg
ZGF0YSA9IGdldERhdGEoIGRhdGEgKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKCBlICkge30KKwor
ICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHdlIHNldCB0aGUgZGF0YSBzbyBpdCBpc24ndCBjaGFu
Z2VkIGxhdGVyCisgICAgICAgICAgICBkYXRhVXNlci5zZXQoIGVsZW0sIGtleSwgZGF0YSApOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZGF0YSA9IHVuZGVmaW5lZDsKKyAgICAgICAg
fQorICAgIH0KKyAgICByZXR1cm4gZGF0YTsKK30KKworalF1ZXJ5LmV4dGVuZCggeworICAgIGhh
c0RhdGE6IGZ1bmN0aW9uKCBlbGVtICkgeworICAgICAgICByZXR1cm4gZGF0YVVzZXIuaGFzRGF0
YSggZWxlbSApIHx8IGRhdGFQcml2Lmhhc0RhdGEoIGVsZW0gKTsKKyAgICB9LAorCisgICAgZGF0
YTogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGRhdGEgKSB7CisgICAgICAgIHJldHVybiBkYXRhVXNl
ci5hY2Nlc3MoIGVsZW0sIG5hbWUsIGRhdGEgKTsKKyAgICB9LAorCisgICAgcmVtb3ZlRGF0YTog
ZnVuY3Rpb24oIGVsZW0sIG5hbWUgKSB7CisgICAgICAgIGRhdGFVc2VyLnJlbW92ZSggZWxlbSwg
bmFtZSApOworICAgIH0sCisKKyAgICAvLyBUT0RPOiBOb3cgdGhhdCBhbGwgY2FsbHMgdG8gX2Rh
dGEgYW5kIF9yZW1vdmVEYXRhIGhhdmUgYmVlbiByZXBsYWNlZAorICAgIC8vIHdpdGggZGlyZWN0
IGNhbGxzIHRvIGRhdGFQcml2IG1ldGhvZHMsIHRoZXNlIGNhbiBiZSBkZXByZWNhdGVkLgorICAg
IF9kYXRhOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgZGF0YSApIHsKKyAgICAgICAgcmV0dXJuIGRh
dGFQcml2LmFjY2VzcyggZWxlbSwgbmFtZSwgZGF0YSApOworICAgIH0sCisKKyAgICBfcmVtb3Zl
RGF0YTogZnVuY3Rpb24oIGVsZW0sIG5hbWUgKSB7CisgICAgICAgIGRhdGFQcml2LnJlbW92ZSgg
ZWxlbSwgbmFtZSApOworICAgIH0KK30gKTsKKworalF1ZXJ5LmZuLmV4dGVuZCggeworICAgIGRh
dGE6IGZ1bmN0aW9uKCBrZXksIHZhbHVlICkgeworICAgICAgICB2YXIgaSwgbmFtZSwgZGF0YSwK
KyAgICAgICAgICAgIGVsZW0gPSB0aGlzWyAwIF0sCisgICAgICAgICAgICBhdHRycyA9IGVsZW0g
JiYgZWxlbS5hdHRyaWJ1dGVzOworCisgICAgICAgIC8vIEdldHMgYWxsIHZhbHVlcworICAgICAg
ICBpZiAoIGtleSA9PT0gdW5kZWZpbmVkICkgeworICAgICAgICAgICAgaWYgKCB0aGlzLmxlbmd0
aCApIHsKKyAgICAgICAgICAgICAgICBkYXRhID0gZGF0YVVzZXIuZ2V0KCBlbGVtICk7CisKKyAg
ICAgICAgICAgICAgICBpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgJiYgIWRhdGFQcml2LmdldCgg
ZWxlbSwgImhhc0RhdGFBdHRycyIgKSApIHsKKyAgICAgICAgICAgICAgICAgICAgaSA9IGF0dHJz
Lmxlbmd0aDsKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCBpLS0gKSB7CisKKyAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6IElFIDExIG9ubHkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIFRoZSBhdHRycyBlbGVtZW50cyBjYW4gYmUgbnVsbCAoIzE0ODk0KQorICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCBhdHRyc1sgaSBdICkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG5hbWUgPSBhdHRyc1sgaSBdLm5hbWU7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCBuYW1lLmluZGV4T2YoICJkYXRhLSIgKSA9PT0gMCApIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IGpRdWVyeS5jYW1lbENhc2UoIG5hbWUuc2xpY2Uo
IDUgKSApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhQXR0ciggZWxlbSwg
bmFtZSwgZGF0YVsgbmFtZSBdICk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIGRhdGFQcml2LnNldCggZWxlbSwgImhhc0RhdGFBdHRycyIsIHRydWUgKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBkYXRh
OworICAgICAgICB9CisKKyAgICAgICAgLy8gU2V0cyBtdWx0aXBsZSB2YWx1ZXMKKyAgICAgICAg
aWYgKCB0eXBlb2Yga2V5ID09PSAib2JqZWN0IiApIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlz
LmVhY2goIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGRhdGFVc2VyLnNldCggdGhpcywg
a2V5ICk7CisgICAgICAgICAgICB9ICk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gYWNj
ZXNzKCB0aGlzLCBmdW5jdGlvbiggdmFsdWUgKSB7CisgICAgICAgICAgICB2YXIgZGF0YTsKKwor
ICAgICAgICAgICAgLy8gVGhlIGNhbGxpbmcgalF1ZXJ5IG9iamVjdCAoZWxlbWVudCBtYXRjaGVz
KSBpcyBub3QgZW1wdHkKKyAgICAgICAgICAgIC8vIChhbmQgdGhlcmVmb3JlIGhhcyBhbiBlbGVt
ZW50IGFwcGVhcnMgYXQgdGhpc1sgMCBdKSBhbmQgdGhlCisgICAgICAgICAgICAvLyBgdmFsdWVg
IHBhcmFtZXRlciB3YXMgbm90IHVuZGVmaW5lZC4gQW4gZW1wdHkgalF1ZXJ5IG9iamVjdAorICAg
ICAgICAgICAgLy8gd2lsbCByZXN1bHQgaW4gYHVuZGVmaW5lZGAgZm9yIGVsZW0gPSB0aGlzWyAw
IF0gd2hpY2ggd2lsbAorICAgICAgICAgICAgLy8gdGhyb3cgYW4gZXhjZXB0aW9uIGlmIGFuIGF0
dGVtcHQgdG8gcmVhZCBhIGRhdGEgY2FjaGUgaXMgbWFkZS4KKyAgICAgICAgICAgIGlmICggZWxl
bSAmJiB2YWx1ZSA9PT0gdW5kZWZpbmVkICkgeworCisgICAgICAgICAgICAgICAgLy8gQXR0ZW1w
dCB0byBnZXQgZGF0YSBmcm9tIHRoZSBjYWNoZQorICAgICAgICAgICAgICAgIC8vIFRoZSBrZXkg
d2lsbCBhbHdheXMgYmUgY2FtZWxDYXNlZCBpbiBEYXRhCisgICAgICAgICAgICAgICAgZGF0YSA9
IGRhdGFVc2VyLmdldCggZWxlbSwga2V5ICk7CisgICAgICAgICAgICAgICAgaWYgKCBkYXRhICE9
PSB1bmRlZmluZWQgKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhOworICAgICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIEF0dGVtcHQgdG8gImRpc2NvdmVyIiB0
aGUgZGF0YSBpbgorICAgICAgICAgICAgICAgIC8vIEhUTUw1IGN1c3RvbSBkYXRhLSogYXR0cnMK
KyAgICAgICAgICAgICAgICBkYXRhID0gZGF0YUF0dHIoIGVsZW0sIGtleSApOworICAgICAgICAg
ICAgICAgIGlmICggZGF0YSAhPT0gdW5kZWZpbmVkICkgeworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZGF0YTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBXZSB0
cmllZCByZWFsbHkgaGFyZCwgYnV0IHRoZSBkYXRhIGRvZXNuJ3QgZXhpc3QuCisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBTZXQgdGhlIGRh
dGEuLi4KKyAgICAgICAgICAgIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7CisKKyAgICAgICAgICAg
ICAgICAvLyBXZSBhbHdheXMgc3RvcmUgdGhlIGNhbWVsQ2FzZWQga2V5CisgICAgICAgICAgICAg
ICAgZGF0YVVzZXIuc2V0KCB0aGlzLCBrZXksIHZhbHVlICk7CisgICAgICAgICAgICB9ICk7Cisg
ICAgICAgIH0sIG51bGwsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoID4gMSwgbnVsbCwgdHJ1ZSAp
OworICAgIH0sCisKKyAgICByZW1vdmVEYXRhOiBmdW5jdGlvbigga2V5ICkgeworICAgICAgICBy
ZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGRhdGFVc2VyLnJlbW92
ZSggdGhpcywga2V5ICk7CisgICAgICAgIH0gKTsKKyAgICB9Cit9ICk7CisKK3JldHVybiBqUXVl
cnk7Cit9ICk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2px
dWVyeS9zcmMvZGF0YS9EYXRhLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9q
cXVlcnkvc3JjL2RhdGEvRGF0YS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZWI4MmY2NTJiYWRmZmNhY2QzZTYy
MGVkOWFhMmZkMjg4NzQwYWY0Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5
L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2RhdGEvRGF0YS5qcwpAQCAtMCwwICsxLDE2MSBAQAor
ZGVmaW5lKCBbCisgICAgIi4uL2NvcmUiLAorICAgICIuLi92YXIvcm5vdGh0bWx3aGl0ZSIsCisg
ICAgIi4vdmFyL2FjY2VwdERhdGEiCitdLCBmdW5jdGlvbiggalF1ZXJ5LCBybm90aHRtbHdoaXRl
LCBhY2NlcHREYXRhICkgeworCisidXNlIHN0cmljdCI7CisKK2Z1bmN0aW9uIERhdGEoKSB7Cisg
ICAgdGhpcy5leHBhbmRvID0galF1ZXJ5LmV4cGFuZG8gKyBEYXRhLnVpZCsrOworfQorCitEYXRh
LnVpZCA9IDE7CisKK0RhdGEucHJvdG90eXBlID0geworCisgICAgY2FjaGU6IGZ1bmN0aW9uKCBv
d25lciApIHsKKworICAgICAgICAvLyBDaGVjayBpZiB0aGUgb3duZXIgb2JqZWN0IGFscmVhZHkg
aGFzIGEgY2FjaGUKKyAgICAgICAgdmFyIHZhbHVlID0gb3duZXJbIHRoaXMuZXhwYW5kbyBdOwor
CisgICAgICAgIC8vIElmIG5vdCwgY3JlYXRlIG9uZQorICAgICAgICBpZiAoICF2YWx1ZSApIHsK
KyAgICAgICAgICAgIHZhbHVlID0ge307CisKKyAgICAgICAgICAgIC8vIFdlIGNhbiBhY2NlcHQg
ZGF0YSBmb3Igbm9uLWVsZW1lbnQgbm9kZXMgaW4gbW9kZXJuIGJyb3dzZXJzLAorICAgICAgICAg
ICAgLy8gYnV0IHdlIHNob3VsZCBub3QsIHNlZSAjODMzNS4KKyAgICAgICAgICAgIC8vIEFsd2F5
cyByZXR1cm4gYW4gZW1wdHkgb2JqZWN0LgorICAgICAgICAgICAgaWYgKCBhY2NlcHREYXRhKCBv
d25lciApICkgeworCisgICAgICAgICAgICAgICAgLy8gSWYgaXQgaXMgYSBub2RlIHVubGlrZWx5
IHRvIGJlIHN0cmluZ2lmeS1lZCBvciBsb29wZWQgb3ZlcgorICAgICAgICAgICAgICAgIC8vIHVz
ZSBwbGFpbiBhc3NpZ25tZW50CisgICAgICAgICAgICAgICAgaWYgKCBvd25lci5ub2RlVHlwZSAp
IHsKKyAgICAgICAgICAgICAgICAgICAgb3duZXJbIHRoaXMuZXhwYW5kbyBdID0gdmFsdWU7CisK
KyAgICAgICAgICAgICAgICAvLyBPdGhlcndpc2Ugc2VjdXJlIGl0IGluIGEgbm9uLWVudW1lcmFi
bGUgcHJvcGVydHkKKyAgICAgICAgICAgICAgICAvLyBjb25maWd1cmFibGUgbXVzdCBiZSB0cnVl
IHRvIGFsbG93IHRoZSBwcm9wZXJ0eSB0byBiZQorICAgICAgICAgICAgICAgIC8vIGRlbGV0ZWQg
d2hlbiBkYXRhIGlzIHJlbW92ZWQKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoIG93bmVyLCB0aGlzLmV4cGFuZG8sIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZQorICAgICAgICAgICAgICAgICAgICB9ICk7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJu
IHZhbHVlOworICAgIH0sCisgICAgc2V0OiBmdW5jdGlvbiggb3duZXIsIGRhdGEsIHZhbHVlICkg
eworICAgICAgICB2YXIgcHJvcCwKKyAgICAgICAgICAgIGNhY2hlID0gdGhpcy5jYWNoZSggb3du
ZXIgKTsKKworICAgICAgICAvLyBIYW5kbGU6IFsgb3duZXIsIGtleSwgdmFsdWUgXSBhcmdzCisg
ICAgICAgIC8vIEFsd2F5cyB1c2UgY2FtZWxDYXNlIGtleSAoZ2gtMjI1NykKKyAgICAgICAgaWYg
KCB0eXBlb2YgZGF0YSA9PT0gInN0cmluZyIgKSB7CisgICAgICAgICAgICBjYWNoZVsgalF1ZXJ5
LmNhbWVsQ2FzZSggZGF0YSApIF0gPSB2YWx1ZTsKKworICAgICAgICAvLyBIYW5kbGU6IFsgb3du
ZXIsIHsgcHJvcGVydGllcyB9IF0gYXJncworICAgICAgICB9IGVsc2UgeworCisgICAgICAgICAg
ICAvLyBDb3B5IHRoZSBwcm9wZXJ0aWVzIG9uZS1ieS1vbmUgdG8gdGhlIGNhY2hlIG9iamVjdAor
ICAgICAgICAgICAgZm9yICggcHJvcCBpbiBkYXRhICkgeworICAgICAgICAgICAgICAgIGNhY2hl
WyBqUXVlcnkuY2FtZWxDYXNlKCBwcm9wICkgXSA9IGRhdGFbIHByb3AgXTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gY2FjaGU7CisgICAgfSwKKyAgICBnZXQ6IGZ1
bmN0aW9uKCBvd25lciwga2V5ICkgeworICAgICAgICByZXR1cm4ga2V5ID09PSB1bmRlZmluZWQg
PworICAgICAgICAgICAgdGhpcy5jYWNoZSggb3duZXIgKSA6CisKKyAgICAgICAgICAgIC8vIEFs
d2F5cyB1c2UgY2FtZWxDYXNlIGtleSAoZ2gtMjI1NykKKyAgICAgICAgICAgIG93bmVyWyB0aGlz
LmV4cGFuZG8gXSAmJiBvd25lclsgdGhpcy5leHBhbmRvIF1bIGpRdWVyeS5jYW1lbENhc2UoIGtl
eSApIF07CisgICAgfSwKKyAgICBhY2Nlc3M6IGZ1bmN0aW9uKCBvd25lciwga2V5LCB2YWx1ZSAp
IHsKKworICAgICAgICAvLyBJbiBjYXNlcyB3aGVyZSBlaXRoZXI6CisgICAgICAgIC8vCisgICAg
ICAgIC8vICAgMS4gTm8ga2V5IHdhcyBzcGVjaWZpZWQKKyAgICAgICAgLy8gICAyLiBBIHN0cmlu
ZyBrZXkgd2FzIHNwZWNpZmllZCwgYnV0IG5vIHZhbHVlIHByb3ZpZGVkCisgICAgICAgIC8vCisg
ICAgICAgIC8vIFRha2UgdGhlICJyZWFkIiBwYXRoIGFuZCBhbGxvdyB0aGUgZ2V0IG1ldGhvZCB0
byBkZXRlcm1pbmUKKyAgICAgICAgLy8gd2hpY2ggdmFsdWUgdG8gcmV0dXJuLCByZXNwZWN0aXZl
bHkgZWl0aGVyOgorICAgICAgICAvLworICAgICAgICAvLyAgIDEuIFRoZSBlbnRpcmUgY2FjaGUg
b2JqZWN0CisgICAgICAgIC8vICAgMi4gVGhlIGRhdGEgc3RvcmVkIGF0IHRoZSBrZXkKKyAgICAg
ICAgLy8KKyAgICAgICAgaWYgKCBrZXkgPT09IHVuZGVmaW5lZCB8fAorICAgICAgICAgICAgICAg
ICggKCBrZXkgJiYgdHlwZW9mIGtleSA9PT0gInN0cmluZyIgKSAmJiB2YWx1ZSA9PT0gdW5kZWZp
bmVkICkgKSB7CisKKyAgICAgICAgICAgIHJldHVybiB0aGlzLmdldCggb3duZXIsIGtleSApOwor
ICAgICAgICB9CisKKyAgICAgICAgLy8gV2hlbiB0aGUga2V5IGlzIG5vdCBhIHN0cmluZywgb3Ig
Ym90aCBhIGtleSBhbmQgdmFsdWUKKyAgICAgICAgLy8gYXJlIHNwZWNpZmllZCwgc2V0IG9yIGV4
dGVuZCAoZXhpc3Rpbmcgb2JqZWN0cykgd2l0aCBlaXRoZXI6CisgICAgICAgIC8vCisgICAgICAg
IC8vICAgMS4gQW4gb2JqZWN0IG9mIHByb3BlcnRpZXMKKyAgICAgICAgLy8gICAyLiBBIGtleSBh
bmQgdmFsdWUKKyAgICAgICAgLy8KKyAgICAgICAgdGhpcy5zZXQoIG93bmVyLCBrZXksIHZhbHVl
ICk7CisKKyAgICAgICAgLy8gU2luY2UgdGhlICJzZXQiIHBhdGggY2FuIGhhdmUgdHdvIHBvc3Np
YmxlIGVudHJ5IHBvaW50cworICAgICAgICAvLyByZXR1cm4gdGhlIGV4cGVjdGVkIGRhdGEgYmFz
ZWQgb24gd2hpY2ggcGF0aCB3YXMgdGFrZW5bKl0KKyAgICAgICAgcmV0dXJuIHZhbHVlICE9PSB1
bmRlZmluZWQgPyB2YWx1ZSA6IGtleTsKKyAgICB9LAorICAgIHJlbW92ZTogZnVuY3Rpb24oIG93
bmVyLCBrZXkgKSB7CisgICAgICAgIHZhciBpLAorICAgICAgICAgICAgY2FjaGUgPSBvd25lclsg
dGhpcy5leHBhbmRvIF07CisKKyAgICAgICAgaWYgKCBjYWNoZSA9PT0gdW5kZWZpbmVkICkgewor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCBrZXkgIT09IHVu
ZGVmaW5lZCApIHsKKworICAgICAgICAgICAgLy8gU3VwcG9ydCBhcnJheSBvciBzcGFjZSBzZXBh
cmF0ZWQgc3RyaW5nIG9mIGtleXMKKyAgICAgICAgICAgIGlmICggalF1ZXJ5LmlzQXJyYXkoIGtl
eSApICkgeworCisgICAgICAgICAgICAgICAgLy8gSWYga2V5IGlzIGFuIGFycmF5IG9mIGtleXMu
Li4KKyAgICAgICAgICAgICAgICAvLyBXZSBhbHdheXMgc2V0IGNhbWVsQ2FzZSBrZXlzLCBzbyBy
ZW1vdmUgdGhhdC4KKyAgICAgICAgICAgICAgICBrZXkgPSBrZXkubWFwKCBqUXVlcnkuY2FtZWxD
YXNlICk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGtleSA9IGpRdWVy
eS5jYW1lbENhc2UoIGtleSApOworCisgICAgICAgICAgICAgICAgLy8gSWYgYSBrZXkgd2l0aCB0
aGUgc3BhY2VzIGV4aXN0cywgdXNlIGl0LgorICAgICAgICAgICAgICAgIC8vIE90aGVyd2lzZSwg
Y3JlYXRlIGFuIGFycmF5IGJ5IG1hdGNoaW5nIG5vbi13aGl0ZXNwYWNlCisgICAgICAgICAgICAg
ICAga2V5ID0ga2V5IGluIGNhY2hlID8KKyAgICAgICAgICAgICAgICAgICAgWyBrZXkgXSA6Cisg
ICAgICAgICAgICAgICAgICAgICgga2V5Lm1hdGNoKCBybm90aHRtbHdoaXRlICkgfHwgW10gKTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaSA9IGtleS5sZW5ndGg7CisKKyAgICAgICAg
ICAgIHdoaWxlICggaS0tICkgeworICAgICAgICAgICAgICAgIGRlbGV0ZSBjYWNoZVsga2V5WyBp
IF0gXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIFJlbW92ZSB0aGUg
ZXhwYW5kbyBpZiB0aGVyZSdzIG5vIG1vcmUgZGF0YQorICAgICAgICBpZiAoIGtleSA9PT0gdW5k
ZWZpbmVkIHx8IGpRdWVyeS5pc0VtcHR5T2JqZWN0KCBjYWNoZSApICkgeworCisgICAgICAgICAg
ICAvLyBTdXBwb3J0OiBDaHJvbWUgPD0zNSAtIDQ1CisgICAgICAgICAgICAvLyBXZWJraXQgJiBC
bGluayBwZXJmb3JtYW5jZSBzdWZmZXJzIHdoZW4gZGVsZXRpbmcgcHJvcGVydGllcworICAgICAg
ICAgICAgLy8gZnJvbSBET00gbm9kZXMsIHNvIHNldCB0byB1bmRlZmluZWQgaW5zdGVhZAorICAg
ICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9k
ZXRhaWw/aWQ9Mzc4NjA3IChidWcgcmVzdHJpY3RlZCkKKyAgICAgICAgICAgIGlmICggb3duZXIu
bm9kZVR5cGUgKSB7CisgICAgICAgICAgICAgICAgb3duZXJbIHRoaXMuZXhwYW5kbyBdID0gdW5k
ZWZpbmVkOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkZWxldGUgb3du
ZXJbIHRoaXMuZXhwYW5kbyBdOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSwKKyAg
ICBoYXNEYXRhOiBmdW5jdGlvbiggb3duZXIgKSB7CisgICAgICAgIHZhciBjYWNoZSA9IG93bmVy
WyB0aGlzLmV4cGFuZG8gXTsKKyAgICAgICAgcmV0dXJuIGNhY2hlICE9PSB1bmRlZmluZWQgJiYg
IWpRdWVyeS5pc0VtcHR5T2JqZWN0KCBjYWNoZSApOworICAgIH0KK307CisKK3JldHVybiBEYXRh
OworfSApOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVl
cnkvc3JjL2RhdGEvdmFyL2FjY2VwdERhdGEuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9t
b2R1bGVzL2pxdWVyeS9zcmMvZGF0YS92YXIvYWNjZXB0RGF0YS5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MGY4
YmZjYTk4NWZmMWM2YzVkZDRiYjFkZGYzYjZmZWM3YzY3NjdjCi0tLSAvZGV2L251bGwKKysrIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2RhdGEvdmFyL2FjY2Vw
dERhdGEuanMKQEAgLTAsMCArMSwxOSBAQAorZGVmaW5lKCBmdW5jdGlvbigpIHsKKworInVzZSBz
dHJpY3QiOworCisvKioKKyAqIERldGVybWluZXMgd2hldGhlciBhbiBvYmplY3QgY2FuIGhhdmUg
ZGF0YQorICovCityZXR1cm4gZnVuY3Rpb24oIG93bmVyICkgeworCisgICAgLy8gQWNjZXB0cyBv
bmx5OgorICAgIC8vICAtIE5vZGUKKyAgICAvLyAgICAtIE5vZGUuRUxFTUVOVF9OT0RFCisgICAg
Ly8gICAgLSBOb2RlLkRPQ1VNRU5UX05PREUKKyAgICAvLyAgLSBPYmplY3QKKyAgICAvLyAgICAt
IEFueQorICAgIHJldHVybiBvd25lci5ub2RlVHlwZSA9PT0gMSB8fCBvd25lci5ub2RlVHlwZSA9
PT0gOSB8fCAhKCArb3duZXIubm9kZVR5cGUgKTsKK307CisKK30gKTsKZGlmZiAtLWdpdCBhL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9kYXRhL3Zhci9kYXRhUHJp
di5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9kYXRhL3Zh
ci9kYXRhUHJpdi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YmY1MzdiMTA3MmY4MWYzNTljZmNiY2FmODk3OTI2
ODQ3MWNkNWViCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9k
dWxlcy9qcXVlcnkvc3JjL2RhdGEvdmFyL2RhdGFQcml2LmpzCkBAIC0wLDAgKzEsNyBAQAorZGVm
aW5lKCBbCisgICAgIi4uL0RhdGEiCitdLCBmdW5jdGlvbiggRGF0YSApIHsKKyAgICAidXNlIHN0
cmljdCI7CisKKyAgICByZXR1cm4gbmV3IERhdGEoKTsKK30gKTsKZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9kYXRhL3Zhci9kYXRhVXNlci5q
cyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9kYXRhL3Zhci9k
YXRhVXNlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YmY1MzdiMTA3MmY4MWYzNTljZmNiY2FmODk3OTI2ODQ3
MWNkNWViCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxl
cy9qcXVlcnkvc3JjL2RhdGEvdmFyL2RhdGFVc2VyLmpzCkBAIC0wLDAgKzEsNyBAQAorZGVmaW5l
KCBbCisgICAgIi4uL0RhdGEiCitdLCBmdW5jdGlvbiggRGF0YSApIHsKKyAgICAidXNlIHN0cmlj
dCI7CisKKyAgICByZXR1cm4gbmV3IERhdGEoKTsKK30gKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9kZWZlcnJlZC5qcyBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9kZWZlcnJlZC5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lODRmNDgwYzE0NWJkMDRkMzJjNTUzNmQ4YWMzZDczYmM2ZDUxZDE5Ci0tLSAvZGV2L251bGwK
KysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2RlZmVycmVk
LmpzCkBAIC0wLDAgKzEsMzg5IEBACitkZWZpbmUoIFsKKyAgICAiLi9jb3JlIiwKKyAgICAiLi92
YXIvc2xpY2UiLAorICAgICIuL2NhbGxiYWNrcyIKK10sIGZ1bmN0aW9uKCBqUXVlcnksIHNsaWNl
ICkgeworCisidXNlIHN0cmljdCI7CisKK2Z1bmN0aW9uIElkZW50aXR5KCB2ICkgeworICAgIHJl
dHVybiB2OworfQorZnVuY3Rpb24gVGhyb3dlciggZXggKSB7CisgICAgdGhyb3cgZXg7Cit9CisK
K2Z1bmN0aW9uIGFkb3B0VmFsdWUoIHZhbHVlLCByZXNvbHZlLCByZWplY3QgKSB7CisgICAgdmFy
IG1ldGhvZDsKKworICAgIHRyeSB7CisKKyAgICAgICAgLy8gQ2hlY2sgZm9yIHByb21pc2UgYXNw
ZWN0IGZpcnN0IHRvIHByaXZpbGVnZSBzeW5jaHJvbm91cyBiZWhhdmlvcgorICAgICAgICBpZiAo
IHZhbHVlICYmIGpRdWVyeS5pc0Z1bmN0aW9uKCAoIG1ldGhvZCA9IHZhbHVlLnByb21pc2UgKSAp
ICkgeworICAgICAgICAgICAgbWV0aG9kLmNhbGwoIHZhbHVlICkuZG9uZSggcmVzb2x2ZSApLmZh
aWwoIHJlamVjdCApOworCisgICAgICAgIC8vIE90aGVyIHRoZW5hYmxlcworICAgICAgICB9IGVs
c2UgaWYgKCB2YWx1ZSAmJiBqUXVlcnkuaXNGdW5jdGlvbiggKCBtZXRob2QgPSB2YWx1ZS50aGVu
ICkgKSApIHsKKyAgICAgICAgICAgIG1ldGhvZC5jYWxsKCB2YWx1ZSwgcmVzb2x2ZSwgcmVqZWN0
ICk7CisKKyAgICAgICAgLy8gT3RoZXIgbm9uLXRoZW5hYmxlcworICAgICAgICB9IGVsc2Ugewor
CisgICAgICAgICAgICAvLyBTdXBwb3J0OiBBbmRyb2lkIDQuMCBvbmx5CisgICAgICAgICAgICAv
LyBTdHJpY3QgbW9kZSBmdW5jdGlvbnMgaW52b2tlZCB3aXRob3V0IC5jYWxsLy5hcHBseSBnZXQg
Z2xvYmFsLW9iamVjdCBjb250ZXh0CisgICAgICAgICAgICByZXNvbHZlLmNhbGwoIHVuZGVmaW5l
ZCwgdmFsdWUgKTsKKyAgICAgICAgfQorCisgICAgLy8gRm9yIFByb21pc2VzL0ErLCBjb252ZXJ0
IGV4Y2VwdGlvbnMgaW50byByZWplY3Rpb25zCisgICAgLy8gU2luY2UgalF1ZXJ5LndoZW4gZG9l
c24ndCB1bndyYXAgdGhlbmFibGVzLCB3ZSBjYW4gc2tpcCB0aGUgZXh0cmEgY2hlY2tzIGFwcGVh
cmluZyBpbgorICAgIC8vIERlZmVycmVkI3RoZW4gdG8gY29uZGl0aW9uYWxseSBzdXBwcmVzcyBy
ZWplY3Rpb24uCisgICAgfSBjYXRjaCAoIHZhbHVlICkgeworCisgICAgICAgIC8vIFN1cHBvcnQ6
IEFuZHJvaWQgNC4wIG9ubHkKKyAgICAgICAgLy8gU3RyaWN0IG1vZGUgZnVuY3Rpb25zIGludm9r
ZWQgd2l0aG91dCAuY2FsbC8uYXBwbHkgZ2V0IGdsb2JhbC1vYmplY3QgY29udGV4dAorICAgICAg
ICByZWplY3QuY2FsbCggdW5kZWZpbmVkLCB2YWx1ZSApOworICAgIH0KK30KKworalF1ZXJ5LmV4
dGVuZCggeworCisgICAgRGVmZXJyZWQ6IGZ1bmN0aW9uKCBmdW5jICkgeworICAgICAgICB2YXIg
dHVwbGVzID0gWworCisgICAgICAgICAgICAgICAgLy8gYWN0aW9uLCBhZGQgbGlzdGVuZXIsIGNh
bGxiYWNrcywKKyAgICAgICAgICAgICAgICAvLyAuLi4gLnRoZW4gaGFuZGxlcnMsIGFyZ3VtZW50
IGluZGV4LCBbZmluYWwgc3RhdGVdCisgICAgICAgICAgICAgICAgWyAibm90aWZ5IiwgInByb2dy
ZXNzIiwgalF1ZXJ5LkNhbGxiYWNrcyggIm1lbW9yeSIgKSwKKyAgICAgICAgICAgICAgICAgICAg
alF1ZXJ5LkNhbGxiYWNrcyggIm1lbW9yeSIgKSwgMiBdLAorICAgICAgICAgICAgICAgIFsgInJl
c29sdmUiLCAiZG9uZSIsIGpRdWVyeS5DYWxsYmFja3MoICJvbmNlIG1lbW9yeSIgKSwKKyAgICAg
ICAgICAgICAgICAgICAgalF1ZXJ5LkNhbGxiYWNrcyggIm9uY2UgbWVtb3J5IiApLCAwLCAicmVz
b2x2ZWQiIF0sCisgICAgICAgICAgICAgICAgWyAicmVqZWN0IiwgImZhaWwiLCBqUXVlcnkuQ2Fs
bGJhY2tzKCAib25jZSBtZW1vcnkiICksCisgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5DYWxs
YmFja3MoICJvbmNlIG1lbW9yeSIgKSwgMSwgInJlamVjdGVkIiBdCisgICAgICAgICAgICBdLAor
ICAgICAgICAgICAgc3RhdGUgPSAicGVuZGluZyIsCisgICAgICAgICAgICBwcm9taXNlID0gewor
ICAgICAgICAgICAgICAgIHN0YXRlOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHN0YXRlOworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgYWx3YXlz
OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQuZG9uZSggYXJndW1l
bnRzICkuZmFpbCggYXJndW1lbnRzICk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlz
OworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImNhdGNoIjogZnVuY3Rpb24o
IGZuICkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJvbWlzZS50aGVuKCBudWxsLCBm
biApOworICAgICAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgICAgICAvLyBLZWVwIHBpcGUg
Zm9yIGJhY2stY29tcGF0CisgICAgICAgICAgICAgICAgcGlwZTogZnVuY3Rpb24oIC8qIGZuRG9u
ZSwgZm5GYWlsLCBmblByb2dyZXNzICovICkgeworICAgICAgICAgICAgICAgICAgICB2YXIgZm5z
ID0gYXJndW1lbnRzOworCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBqUXVlcnkuRGVmZXJy
ZWQoIGZ1bmN0aW9uKCBuZXdEZWZlciApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVy
eS5lYWNoKCB0dXBsZXMsIGZ1bmN0aW9uKCBpLCB0dXBsZSApIHsKKworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIE1hcCB0dXBsZXMgKHByb2dyZXNzLCBkb25lLCBmYWlsKSB0byBhcmd1
bWVudHMgKGRvbmUsIGZhaWwsIHByb2dyZXNzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZhciBmbiA9IGpRdWVyeS5pc0Z1bmN0aW9uKCBmbnNbIHR1cGxlWyA0IF0gXSApICYmIGZuc1sg
dHVwbGVbIDQgXSBdOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGVmZXJyZWQu
cHJvZ3Jlc3MoZnVuY3Rpb24oKSB7IGJpbmQgdG8gbmV3RGVmZXIgb3IgbmV3RGVmZXIubm90aWZ5
IH0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGVmZXJyZWQuZG9uZShmdW5jdGlv
bigpIHsgYmluZCB0byBuZXdEZWZlciBvciBuZXdEZWZlci5yZXNvbHZlIH0pCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gZGVmZXJyZWQuZmFpbChmdW5jdGlvbigpIHsgYmluZCB0byBu
ZXdEZWZlciBvciBuZXdEZWZlci5yZWplY3QgfSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkZWZlcnJlZFsgdHVwbGVbIDEgXSBdKCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdmFyIHJldHVybmVkID0gZm4gJiYgZm4uYXBwbHkoIHRoaXMsIGFyZ3Vt
ZW50cyApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHJldHVybmVkICYm
IGpRdWVyeS5pc0Z1bmN0aW9uKCByZXR1cm5lZC5wcm9taXNlICkgKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5lZC5wcm9taXNlKCkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAucHJvZ3Jlc3MoIG5ld0RlZmVyLm5vdGlmeSApCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmRvbmUoIG5ld0RlZmVyLnJl
c29sdmUgKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mYWlsKCBu
ZXdEZWZlci5yZWplY3QgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0RlZmVyWyB0dXBsZVsg
MCBdICsgIldpdGgiIF0oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dGhpcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbiA/IFsgcmV0
dXJuZWQgXSA6IGFyZ3VtZW50cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0gKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGZucyA9IG51bGw7CisgICAgICAgICAgICAgICAgICAgIH0gKS5wcm9taXNl
KCk7CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB0aGVuOiBmdW5jdGlvbigg
b25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQsIG9uUHJvZ3Jlc3MgKSB7CisgICAgICAgICAgICAgICAg
ICAgIHZhciBtYXhEZXB0aCA9IDA7CisgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHJlc29s
dmUoIGRlcHRoLCBkZWZlcnJlZCwgaGFuZGxlciwgc3BlY2lhbCApIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2YXIgdGhhdCA9IHRoaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3Mg
PSBhcmd1bWVudHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pZ2h0VGhyb3cg
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBy
ZXR1cm5lZCwgdGhlbjsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
U3VwcG9ydDogUHJvbWlzZXMvQSsgc2VjdGlvbiAyLjMuMy4zLjMKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vcHJvbWlzZXNhcGx1cy5jb20vI3BvaW50LTU5
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZ25vcmUgZG91YmxlLXJl
c29sdXRpb24gYXR0ZW1wdHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICggZGVwdGggPCBtYXhEZXB0aCApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybmVkID0gaGFuZGxlci5h
cHBseSggdGhhdCwgYXJncyApOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBTdXBwb3J0OiBQcm9taXNlcy9BKyBzZWN0aW9uIDIuMy4xCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBodHRwczovL3Byb21pc2VzYXBsdXMuY29tLyNwb2ludC00
OAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCByZXR1cm5lZCA9PT0g
ZGVmZXJyZWQucHJvbWlzZSgpICkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoICJUaGVuYWJsZSBzZWxmLXJlc29sdXRpb24iICk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6IFByb21pc2VzL0ErIHNlY3Rpb25zIDIu
My4zLjEsIDMuNQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaHR0cHM6
Ly9wcm9taXNlc2FwbHVzLmNvbS8jcG9pbnQtNTQKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGh0dHBzOi8vcHJvbWlzZXNhcGx1cy5jb20vI3BvaW50LTc1CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXRyaWV2ZSBgdGhlbmAgb25seSBvbmNl
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuID0gcmV0dXJuZWQgJiYK
KworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6IFBy
b21pc2VzL0ErIHNlY3Rpb24gMi4zLjQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBodHRwczovL3Byb21pc2VzYXBsdXMuY29tLyNwb2ludC02NAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE9ubHkgY2hlY2sgb2JqZWN0cyBhbmQg
ZnVuY3Rpb25zIGZvciB0aGVuYWJpbGl0eQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICggdHlwZW9mIHJldHVybmVkID09PSAib2JqZWN0IiB8fAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgcmV0dXJuZWQgPT09ICJmdW5j
dGlvbiIgKSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
bmVkLnRoZW47CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEhhbmRs
ZSBhIHJldHVybmVkIHRoZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCB0aGVuICkgKSB7CisKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBTcGVjaWFsIHByb2Nlc3NvcnMgKG5vdGlmeSkganVz
dCB3YWl0IGZvciByZXNvbHV0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCBzcGVjaWFsICkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0aGVuLmNhbGwoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm5lZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlc29sdmUoIG1heERlcHRoLCBkZWZlcnJlZCwgSWRlbnRpdHksIHNw
ZWNpYWwgKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlc29sdmUoIG1heERlcHRoLCBkZWZlcnJlZCwgVGhyb3dlciwgc3BlY2lhbCApCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CisKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOb3JtYWwgcHJvY2Vzc29ycyAocmVzb2x2ZSkg
YWxzbyBob29rIGludG8gcHJvZ3Jlc3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UgeworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIC4uLmFuZCBkaXNyZWdhcmQgb2xkZXIgcmVzb2x1dGlvbiB2YWx1ZXMKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4RGVwdGgrKzsKKworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuLmNhbGwoCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5lZCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoIG1h
eERlcHRoLCBkZWZlcnJlZCwgSWRlbnRpdHksIHNwZWNpYWwgKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoIG1heERlcHRoLCBkZWZlcnJl
ZCwgVGhyb3dlciwgc3BlY2lhbCApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVzb2x2ZSggbWF4RGVwdGgsIGRlZmVycmVkLCBJZGVudGl0eSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJl
ZC5ub3RpZnlXaXRoICkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEhhbmRsZSBhbGwgb3RoZXIgcmV0dXJu
ZWQgdmFsdWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugewor
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gT25seSBzdWJzdGl0
dXRlIGhhbmRsZXJzIHBhc3Mgb24gY29udGV4dAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGFuZCBtdWx0aXBsZSB2YWx1ZXMgKG5vbi1zcGVjIGJlaGF2aW9yKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggaGFuZGxlciAhPT0g
SWRlbnRpdHkgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRoYXQgPSB1bmRlZmluZWQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFyZ3MgPSBbIHJldHVybmVkIF07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gUHJvY2VzcyB0aGUgdmFsdWUocykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBEZWZhdWx0IHByb2Nlc3MgaXMgcmVzb2x2ZQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICggc3BlY2lhbCB8fCBkZWZlcnJlZC5yZXNvbHZlV2l0aCAp
KCB0aGF0LCBhcmdzICk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gT25seSBub3JtYWwgcHJvY2Vzc29ycyAocmVzb2x2ZSkgY2F0Y2ggYW5k
IHJlamVjdCBleGNlcHRpb25zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nl
c3MgPSBzcGVjaWFsID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pZ2h0
VGhyb3cgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlnaHRUaHJvdygpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKCBlICkgeworCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggalF1ZXJ5LkRlZmVy
cmVkLmV4Y2VwdGlvbkhvb2sgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBqUXVlcnkuRGVmZXJyZWQuZXhjZXB0aW9uSG9vayggZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzLnN0YWNr
VHJhY2UgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQ6
IFByb21pc2VzL0ErIHNlY3Rpb24gMi4zLjMuMy40LjEKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8jcG9pbnQt
NjEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWdub3Jl
IHBvc3QtcmVzb2x1dGlvbiBleGNlcHRpb25zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICggZGVwdGggKyAxID49IG1heERlcHRoICkgeworCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBPbmx5IHN1YnN0aXR1
dGUgaGFuZGxlcnMgcGFzcyBvbiBjb250ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBhbmQgbXVsdGlwbGUgdmFsdWVzIChub24tc3BlYyBiZWhh
dmlvcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICggaGFuZGxlciAhPT0gVGhyb3dlciApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0aGF0ID0gdW5kZWZpbmVkOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MgPSBbIGUgXTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0V2l0
aCggdGhhdCwgYXJncyApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIFN1cHBvcnQ6IFByb21pc2VzL0ErIHNlY3Rpb24gMi4zLjMuMy4xCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8jcG9pbnQt
NTcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZS1yZXNvbHZlIHByb21pc2VzIGlt
bWVkaWF0ZWx5IHRvIGRvZGdlIGZhbHNlIHJlamVjdGlvbiBmcm9tCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gc3Vic2VxdWVudCBlcnJvcnMKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoIGRlcHRoICkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9j
ZXNzKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBDYWxsIGFuIG9wdGlvbmFsIGhvb2sgdG8gcmVjb3Jk
IHRoZSBzdGFjaywgaW4gY2FzZSBvZiBleGNlcHRpb24KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gc2luY2UgaXQncyBvdGhlcndpc2UgbG9zdCB3aGVuIGV4ZWN1dGlvbiBnb2Vz
IGFzeW5jCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggalF1ZXJ5LkRlZmVy
cmVkLmdldFN0YWNrSG9vayApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHByb2Nlc3Muc3RhY2tUcmFjZSA9IGpRdWVyeS5EZWZlcnJlZC5nZXRTdGFja0hvb2soKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB3aW5kb3cuc2V0VGltZW91dCggcHJvY2VzcyApOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgICAgICAgICByZXR1cm4galF1ZXJ5LkRlZmVycmVkKCBmdW5j
dGlvbiggbmV3RGVmZXIgKSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHByb2dyZXNz
X2hhbmRsZXJzLmFkZCggLi4uICkKKyAgICAgICAgICAgICAgICAgICAgICAgIHR1cGxlc1sgMCBd
WyAzIF0uYWRkKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5ld0RlZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkuaXNG
dW5jdGlvbiggb25Qcm9ncmVzcyApID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG9uUHJvZ3Jlc3MgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWRl
bnRpdHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0RlZmVyLm5vdGlmeVdp
dGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgICAg
ICApOworCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBmdWxmaWxsZWRfaGFuZGxlcnMuYWRk
KCAuLi4gKQorICAgICAgICAgICAgICAgICAgICAgICAgdHVwbGVzWyAxIF1bIDMgXS5hZGQoCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3RGVmZXIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5pc0Z1bmN0aW9uKCBvbkZ1
bGZpbGxlZCApID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRnVsZmls
bGVkIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElkZW50aXR5CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICAgICAgKTsKKwor
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVqZWN0ZWRfaGFuZGxlcnMuYWRkKCAuLi4gKQor
ICAgICAgICAgICAgICAgICAgICAgICAgdHVwbGVzWyAyIF1bIDMgXS5hZGQoCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3RGVmZXIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5pc0Z1bmN0aW9uKCBvblJlamVjdGVkICkg
PworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25SZWplY3RlZCA6CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaHJvd2VyCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAg
ICAgICAgfSApLnByb21pc2UoKTsKKyAgICAgICAgICAgICAgICB9LAorCisgICAgICAgICAgICAg
ICAgLy8gR2V0IGEgcHJvbWlzZSBmb3IgdGhpcyBkZWZlcnJlZAorICAgICAgICAgICAgICAgIC8v
IElmIG9iaiBpcyBwcm92aWRlZCwgdGhlIHByb21pc2UgYXNwZWN0IGlzIGFkZGVkIHRvIHRoZSBv
YmplY3QKKyAgICAgICAgICAgICAgICBwcm9taXNlOiBmdW5jdGlvbiggb2JqICkgeworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gb2JqICE9IG51bGwgPyBqUXVlcnkuZXh0ZW5kKCBvYmosIHBy
b21pc2UgKSA6IHByb21pc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgIGRlZmVycmVkID0ge307CisKKyAgICAgICAgLy8gQWRkIGxpc3Qtc3BlY2lmaWMg
bWV0aG9kcworICAgICAgICBqUXVlcnkuZWFjaCggdHVwbGVzLCBmdW5jdGlvbiggaSwgdHVwbGUg
KSB7CisgICAgICAgICAgICB2YXIgbGlzdCA9IHR1cGxlWyAyIF0sCisgICAgICAgICAgICAgICAg
c3RhdGVTdHJpbmcgPSB0dXBsZVsgNSBdOworCisgICAgICAgICAgICAvLyBwcm9taXNlLnByb2dy
ZXNzID0gbGlzdC5hZGQKKyAgICAgICAgICAgIC8vIHByb21pc2UuZG9uZSA9IGxpc3QuYWRkCisg
ICAgICAgICAgICAvLyBwcm9taXNlLmZhaWwgPSBsaXN0LmFkZAorICAgICAgICAgICAgcHJvbWlz
ZVsgdHVwbGVbIDEgXSBdID0gbGlzdC5hZGQ7CisKKyAgICAgICAgICAgIC8vIEhhbmRsZSBzdGF0
ZQorICAgICAgICAgICAgaWYgKCBzdGF0ZVN0cmluZyApIHsKKyAgICAgICAgICAgICAgICBsaXN0
LmFkZCgKKyAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7CisKKyAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIHN0YXRlID0gInJlc29sdmVkIiAoaS5lLiwgZnVsZmlsbGVkKQorICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gc3RhdGUgPSAicmVqZWN0ZWQiCisgICAgICAgICAgICAgICAg
ICAgICAgICBzdGF0ZSA9IHN0YXRlU3RyaW5nOworICAgICAgICAgICAgICAgICAgICB9LAorCisg
ICAgICAgICAgICAgICAgICAgIC8vIHJlamVjdGVkX2NhbGxiYWNrcy5kaXNhYmxlCisgICAgICAg
ICAgICAgICAgICAgIC8vIGZ1bGZpbGxlZF9jYWxsYmFja3MuZGlzYWJsZQorICAgICAgICAgICAg
ICAgICAgICB0dXBsZXNbIDMgLSBpIF1bIDIgXS5kaXNhYmxlLAorCisgICAgICAgICAgICAgICAg
ICAgIC8vIHByb2dyZXNzX2NhbGxiYWNrcy5sb2NrCisgICAgICAgICAgICAgICAgICAgIHR1cGxl
c1sgMCBdWyAyIF0ubG9jaworICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIC8vIHByb2dyZXNzX2hhbmRsZXJzLmZpcmUKKyAgICAgICAgICAgIC8vIGZ1bGZp
bGxlZF9oYW5kbGVycy5maXJlCisgICAgICAgICAgICAvLyByZWplY3RlZF9oYW5kbGVycy5maXJl
CisgICAgICAgICAgICBsaXN0LmFkZCggdHVwbGVbIDMgXS5maXJlICk7CisKKyAgICAgICAgICAg
IC8vIGRlZmVycmVkLm5vdGlmeSA9IGZ1bmN0aW9uKCkgeyBkZWZlcnJlZC5ub3RpZnlXaXRoKC4u
LikgfQorICAgICAgICAgICAgLy8gZGVmZXJyZWQucmVzb2x2ZSA9IGZ1bmN0aW9uKCkgeyBkZWZl
cnJlZC5yZXNvbHZlV2l0aCguLi4pIH0KKyAgICAgICAgICAgIC8vIGRlZmVycmVkLnJlamVjdCA9
IGZ1bmN0aW9uKCkgeyBkZWZlcnJlZC5yZWplY3RXaXRoKC4uLikgfQorICAgICAgICAgICAgZGVm
ZXJyZWRbIHR1cGxlWyAwIF0gXSA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGRlZmVy
cmVkWyB0dXBsZVsgMCBdICsgIldpdGgiIF0oIHRoaXMgPT09IGRlZmVycmVkID8gdW5kZWZpbmVk
IDogdGhpcywgYXJndW1lbnRzICk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAg
ICAgICAgICB9OworCisgICAgICAgICAgICAvLyBkZWZlcnJlZC5ub3RpZnlXaXRoID0gbGlzdC5m
aXJlV2l0aAorICAgICAgICAgICAgLy8gZGVmZXJyZWQucmVzb2x2ZVdpdGggPSBsaXN0LmZpcmVX
aXRoCisgICAgICAgICAgICAvLyBkZWZlcnJlZC5yZWplY3RXaXRoID0gbGlzdC5maXJlV2l0aAor
ICAgICAgICAgICAgZGVmZXJyZWRbIHR1cGxlWyAwIF0gKyAiV2l0aCIgXSA9IGxpc3QuZmlyZVdp
dGg7CisgICAgICAgIH0gKTsKKworICAgICAgICAvLyBNYWtlIHRoZSBkZWZlcnJlZCBhIHByb21p
c2UKKyAgICAgICAgcHJvbWlzZS5wcm9taXNlKCBkZWZlcnJlZCApOworCisgICAgICAgIC8vIENh
bGwgZ2l2ZW4gZnVuYyBpZiBhbnkKKyAgICAgICAgaWYgKCBmdW5jICkgeworICAgICAgICAgICAg
ZnVuYy5jYWxsKCBkZWZlcnJlZCwgZGVmZXJyZWQgKTsKKyAgICAgICAgfQorCisgICAgICAgIC8v
IEFsbCBkb25lIQorICAgICAgICByZXR1cm4gZGVmZXJyZWQ7CisgICAgfSwKKworICAgIC8vIERl
ZmVycmVkIGhlbHBlcgorICAgIHdoZW46IGZ1bmN0aW9uKCBzaW5nbGVWYWx1ZSApIHsKKyAgICAg
ICAgdmFyCisKKyAgICAgICAgICAgIC8vIGNvdW50IG9mIHVuY29tcGxldGVkIHN1Ym9yZGluYXRl
cworICAgICAgICAgICAgcmVtYWluaW5nID0gYXJndW1lbnRzLmxlbmd0aCwKKworICAgICAgICAg
ICAgLy8gY291bnQgb2YgdW5wcm9jZXNzZWQgYXJndW1lbnRzCisgICAgICAgICAgICBpID0gcmVt
YWluaW5nLAorCisgICAgICAgICAgICAvLyBzdWJvcmRpbmF0ZSBmdWxmaWxsbWVudCBkYXRhCisg
ICAgICAgICAgICByZXNvbHZlQ29udGV4dHMgPSBBcnJheSggaSApLAorICAgICAgICAgICAgcmVz
b2x2ZVZhbHVlcyA9IHNsaWNlLmNhbGwoIGFyZ3VtZW50cyApLAorCisgICAgICAgICAgICAvLyB0
aGUgbWFzdGVyIERlZmVycmVkCisgICAgICAgICAgICBtYXN0ZXIgPSBqUXVlcnkuRGVmZXJyZWQo
KSwKKworICAgICAgICAgICAgLy8gc3Vib3JkaW5hdGUgY2FsbGJhY2sgZmFjdG9yeQorICAgICAg
ICAgICAgdXBkYXRlRnVuYyA9IGZ1bmN0aW9uKCBpICkgeworICAgICAgICAgICAgICAgIHJldHVy
biBmdW5jdGlvbiggdmFsdWUgKSB7CisgICAgICAgICAgICAgICAgICAgIHJlc29sdmVDb250ZXh0
c1sgaSBdID0gdGhpczsKKyAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZVZhbHVlc1sgaSBdID0g
YXJndW1lbnRzLmxlbmd0aCA+IDEgPyBzbGljZS5jYWxsKCBhcmd1bWVudHMgKSA6IHZhbHVlOwor
ICAgICAgICAgICAgICAgICAgICBpZiAoICEoIC0tcmVtYWluaW5nICkgKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBtYXN0ZXIucmVzb2x2ZVdpdGgoIHJlc29sdmVDb250ZXh0cywgcmVzb2x2
ZVZhbHVlcyApOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfTsKKyAg
ICAgICAgICAgIH07CisKKyAgICAgICAgLy8gU2luZ2xlLSBhbmQgZW1wdHkgYXJndW1lbnRzIGFy
ZSBhZG9wdGVkIGxpa2UgUHJvbWlzZS5yZXNvbHZlCisgICAgICAgIGlmICggcmVtYWluaW5nIDw9
IDEgKSB7CisgICAgICAgICAgICBhZG9wdFZhbHVlKCBzaW5nbGVWYWx1ZSwgbWFzdGVyLmRvbmUo
IHVwZGF0ZUZ1bmMoIGkgKSApLnJlc29sdmUsIG1hc3Rlci5yZWplY3QgKTsKKworICAgICAgICAg
ICAgLy8gVXNlIC50aGVuKCkgdG8gdW53cmFwIHNlY29uZGFyeSB0aGVuYWJsZXMgKGNmLiBnaC0z
MDAwKQorICAgICAgICAgICAgaWYgKCBtYXN0ZXIuc3RhdGUoKSA9PT0gInBlbmRpbmciIHx8Cisg
ICAgICAgICAgICAgICAgalF1ZXJ5LmlzRnVuY3Rpb24oIHJlc29sdmVWYWx1ZXNbIGkgXSAmJiBy
ZXNvbHZlVmFsdWVzWyBpIF0udGhlbiApICkgeworCisgICAgICAgICAgICAgICAgcmV0dXJuIG1h
c3Rlci50aGVuKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBNdWx0
aXBsZSBhcmd1bWVudHMgYXJlIGFnZ3JlZ2F0ZWQgbGlrZSBQcm9taXNlLmFsbCBhcnJheSBlbGVt
ZW50cworICAgICAgICB3aGlsZSAoIGktLSApIHsKKyAgICAgICAgICAgIGFkb3B0VmFsdWUoIHJl
c29sdmVWYWx1ZXNbIGkgXSwgdXBkYXRlRnVuYyggaSApLCBtYXN0ZXIucmVqZWN0ICk7CisgICAg
ICAgIH0KKworICAgICAgICByZXR1cm4gbWFzdGVyLnByb21pc2UoKTsKKyAgICB9Cit9ICk7CisK
K3JldHVybiBqUXVlcnk7Cit9ICk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9k
ZV9tb2R1bGVzL2pxdWVyeS9zcmMvZGVmZXJyZWQvZXhjZXB0aW9uSG9vay5qcyBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9kZWZlcnJlZC9leGNlcHRpb25Ib29r
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjlhMWIzODY2ZjMxM2Y3Mjk5ZTRjZDFmYzhiMDRjMmE2ZGVkNDFmMzgK
LS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVy
eS9zcmMvZGVmZXJyZWQvZXhjZXB0aW9uSG9vay5qcwpAQCAtMCwwICsxLDIxIEBACitkZWZpbmUo
IFsKKyAgICAiLi4vY29yZSIsCisgICAgIi4uL2RlZmVycmVkIgorXSwgZnVuY3Rpb24oIGpRdWVy
eSApIHsKKworInVzZSBzdHJpY3QiOworCisvLyBUaGVzZSB1c3VhbGx5IGluZGljYXRlIGEgcHJv
Z3JhbW1lciBtaXN0YWtlIGR1cmluZyBkZXZlbG9wbWVudCwKKy8vIHdhcm4gYWJvdXQgdGhlbSBB
U0FQIHJhdGhlciB0aGFuIHN3YWxsb3dpbmcgdGhlbSBieSBkZWZhdWx0LgordmFyIHJlcnJvck5h
bWVzID0gL14oRXZhbHxJbnRlcm5hbHxSYW5nZXxSZWZlcmVuY2V8U3ludGF4fFR5cGV8VVJJKUVy
cm9yJC87CisKK2pRdWVyeS5EZWZlcnJlZC5leGNlcHRpb25Ib29rID0gZnVuY3Rpb24oIGVycm9y
LCBzdGFjayApIHsKKworICAgIC8vIFN1cHBvcnQ6IElFIDggLSA5IG9ubHkKKyAgICAvLyBDb25z
b2xlIGV4aXN0cyB3aGVuIGRldiB0b29scyBhcmUgb3Blbiwgd2hpY2ggY2FuIGhhcHBlbiBhdCBh
bnkgdGltZQorICAgIGlmICggd2luZG93LmNvbnNvbGUgJiYgd2luZG93LmNvbnNvbGUud2FybiAm
JiBlcnJvciAmJiByZXJyb3JOYW1lcy50ZXN0KCBlcnJvci5uYW1lICkgKSB7CisgICAgICAgIHdp
bmRvdy5jb25zb2xlLndhcm4oICJqUXVlcnkuRGVmZXJyZWQgZXhjZXB0aW9uOiAiICsgZXJyb3Iu
bWVzc2FnZSwgZXJyb3Iuc3RhY2ssIHN0YWNrICk7CisgICAgfQorfTsKKworfSApOwpkaWZmIC0t
Z2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2RlcHJlY2F0
ZWQuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvZGVwcmVj
YXRlZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wN2FkODA1ZThiZDUzZjU1MWM1YjY4NDQ1M2I0ZjNlMjI2ODUx
YjA1Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9q
cXVlcnkvc3JjL2RlcHJlY2F0ZWQuanMKQEAgLTAsMCArMSwzMCBAQAorZGVmaW5lKCBbCisgICAg
Ii4vY29yZSIKK10sIGZ1bmN0aW9uKCBqUXVlcnkgKSB7CisKKyJ1c2Ugc3RyaWN0IjsKKworalF1
ZXJ5LmZuLmV4dGVuZCggeworCisgICAgYmluZDogZnVuY3Rpb24oIHR5cGVzLCBkYXRhLCBmbiAp
IHsKKyAgICAgICAgcmV0dXJuIHRoaXMub24oIHR5cGVzLCBudWxsLCBkYXRhLCBmbiApOworICAg
IH0sCisgICAgdW5iaW5kOiBmdW5jdGlvbiggdHlwZXMsIGZuICkgeworICAgICAgICByZXR1cm4g
dGhpcy5vZmYoIHR5cGVzLCBudWxsLCBmbiApOworICAgIH0sCisKKyAgICBkZWxlZ2F0ZTogZnVu
Y3Rpb24oIHNlbGVjdG9yLCB0eXBlcywgZGF0YSwgZm4gKSB7CisgICAgICAgIHJldHVybiB0aGlz
Lm9uKCB0eXBlcywgc2VsZWN0b3IsIGRhdGEsIGZuICk7CisgICAgfSwKKyAgICB1bmRlbGVnYXRl
OiBmdW5jdGlvbiggc2VsZWN0b3IsIHR5cGVzLCBmbiApIHsKKworICAgICAgICAvLyAoIG5hbWVz
cGFjZSApIG9yICggc2VsZWN0b3IsIHR5cGVzIFssIGZuXSApCisgICAgICAgIHJldHVybiBhcmd1
bWVudHMubGVuZ3RoID09PSAxID8KKyAgICAgICAgICAgIHRoaXMub2ZmKCBzZWxlY3RvciwgIioq
IiApIDoKKyAgICAgICAgICAgIHRoaXMub2ZmKCB0eXBlcywgc2VsZWN0b3IgfHwgIioqIiwgZm4g
KTsKKyAgICB9Cit9ICk7CisKK2pRdWVyeS5wYXJzZUpTT04gPSBKU09OLnBhcnNlOworCit9ICk7
CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMv
ZGltZW5zaW9ucy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3Ny
Yy9kaW1lbnNpb25zLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdjMmM4NzFlYWIwYWQ5M2I4MTU4ZGM3NjBkZDBl
NDY3MWM3ZTE2NzEKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9t
b2R1bGVzL2pxdWVyeS9zcmMvZGltZW5zaW9ucy5qcwpAQCAtMCwwICsxLDU2IEBACitkZWZpbmUo
IFsKKyAgICAiLi9jb3JlIiwKKyAgICAiLi9jb3JlL2FjY2VzcyIsCisgICAgIi4vY3NzIgorXSwg
ZnVuY3Rpb24oIGpRdWVyeSwgYWNjZXNzICkgeworCisidXNlIHN0cmljdCI7CisKKy8vIENyZWF0
ZSBpbm5lckhlaWdodCwgaW5uZXJXaWR0aCwgaGVpZ2h0LCB3aWR0aCwgb3V0ZXJIZWlnaHQgYW5k
IG91dGVyV2lkdGggbWV0aG9kcworalF1ZXJ5LmVhY2goIHsgSGVpZ2h0OiAiaGVpZ2h0IiwgV2lk
dGg6ICJ3aWR0aCIgfSwgZnVuY3Rpb24oIG5hbWUsIHR5cGUgKSB7CisgICAgalF1ZXJ5LmVhY2go
IHsgcGFkZGluZzogImlubmVyIiArIG5hbWUsIGNvbnRlbnQ6IHR5cGUsICIiOiAib3V0ZXIiICsg
bmFtZSB9LAorICAgICAgICBmdW5jdGlvbiggZGVmYXVsdEV4dHJhLCBmdW5jTmFtZSApIHsKKwor
ICAgICAgICAvLyBNYXJnaW4gaXMgb25seSBmb3Igb3V0ZXJIZWlnaHQsIG91dGVyV2lkdGgKKyAg
ICAgICAgalF1ZXJ5LmZuWyBmdW5jTmFtZSBdID0gZnVuY3Rpb24oIG1hcmdpbiwgdmFsdWUgKSB7
CisgICAgICAgICAgICB2YXIgY2hhaW5hYmxlID0gYXJndW1lbnRzLmxlbmd0aCAmJiAoIGRlZmF1
bHRFeHRyYSB8fCB0eXBlb2YgbWFyZ2luICE9PSAiYm9vbGVhbiIgKSwKKyAgICAgICAgICAgICAg
ICBleHRyYSA9IGRlZmF1bHRFeHRyYSB8fCAoIG1hcmdpbiA9PT0gdHJ1ZSB8fCB2YWx1ZSA9PT0g
dHJ1ZSA/ICJtYXJnaW4iIDogImJvcmRlciIgKTsKKworICAgICAgICAgICAgcmV0dXJuIGFjY2Vz
cyggdGhpcywgZnVuY3Rpb24oIGVsZW0sIHR5cGUsIHZhbHVlICkgeworICAgICAgICAgICAgICAg
IHZhciBkb2M7CisKKyAgICAgICAgICAgICAgICBpZiAoIGpRdWVyeS5pc1dpbmRvdyggZWxlbSAp
ICkgeworCisgICAgICAgICAgICAgICAgICAgIC8vICQoIHdpbmRvdyApLm91dGVyV2lkdGgvSGVp
Z2h0IHJldHVybiB3L2ggaW5jbHVkaW5nIHNjcm9sbGJhcnMgKGdoLTE3MjkpCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmdW5jTmFtZS5pbmRleE9mKCAib3V0ZXIiICkgPT09IDAgPworICAg
ICAgICAgICAgICAgICAgICAgICAgZWxlbVsgImlubmVyIiArIG5hbWUgXSA6CisgICAgICAgICAg
ICAgICAgICAgICAgICBlbGVtLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFsgImNsaWVudCIgKyBu
YW1lIF07CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gR2V0IGRvY3Vt
ZW50IHdpZHRoIG9yIGhlaWdodAorICAgICAgICAgICAgICAgIGlmICggZWxlbS5ub2RlVHlwZSA9
PT0gOSApIHsKKyAgICAgICAgICAgICAgICAgICAgZG9jID0gZWxlbS5kb2N1bWVudEVsZW1lbnQ7
CisKKyAgICAgICAgICAgICAgICAgICAgLy8gRWl0aGVyIHNjcm9sbFtXaWR0aC9IZWlnaHRdIG9y
IG9mZnNldFtXaWR0aC9IZWlnaHRdIG9yIGNsaWVudFtXaWR0aC9IZWlnaHRdLAorICAgICAgICAg
ICAgICAgICAgICAvLyB3aGljaGV2ZXIgaXMgZ3JlYXRlc3QKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIE1hdGgubWF4KAorICAgICAgICAgICAgICAgICAgICAgICAgZWxlbS5ib2R5WyAic2Ny
b2xsIiArIG5hbWUgXSwgZG9jWyAic2Nyb2xsIiArIG5hbWUgXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGVsZW0uYm9keVsgIm9mZnNldCIgKyBuYW1lIF0sIGRvY1sgIm9mZnNldCIgKyBuYW1l
IF0sCisgICAgICAgICAgICAgICAgICAgICAgICBkb2NbICJjbGllbnQiICsgbmFtZSBdCisgICAg
ICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
cmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPworCisgICAgICAgICAgICAgICAgICAgIC8vIEdl
dCB3aWR0aCBvciBoZWlnaHQgb24gdGhlIGVsZW1lbnQsIHJlcXVlc3RpbmcgYnV0IG5vdCBmb3Jj
aW5nIHBhcnNlRmxvYXQKKyAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmNzcyggZWxlbSwgdHlw
ZSwgZXh0cmEgKSA6CisKKyAgICAgICAgICAgICAgICAgICAgLy8gU2V0IHdpZHRoIG9yIGhlaWdo
dCBvbiB0aGUgZWxlbWVudAorICAgICAgICAgICAgICAgICAgICBqUXVlcnkuc3R5bGUoIGVsZW0s
IHR5cGUsIHZhbHVlLCBleHRyYSApOworICAgICAgICAgICAgfSwgdHlwZSwgY2hhaW5hYmxlID8g
bWFyZ2luIDogdW5kZWZpbmVkLCBjaGFpbmFibGUgKTsKKyAgICAgICAgfTsKKyAgICB9ICk7Cit9
ICk7CisKK3JldHVybiBqUXVlcnk7Cit9ICk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVl
cnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvZWZmZWN0cy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVy
eS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9lZmZlY3RzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQzZjJhMDQ5
MTMyZGM4Y2Y2MmFlYThmYzU2ODJjMTEyZjJhNDQ3NGIKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvZWZmZWN0cy5qcwpAQCAtMCww
ICsxLDY5MyBAQAorZGVmaW5lKCBbCisgICAgIi4vY29yZSIsCisgICAgIi4vdmFyL2RvY3VtZW50
IiwKKyAgICAiLi92YXIvcmNzc051bSIsCisgICAgIi4vdmFyL3Jub3RodG1sd2hpdGUiLAorICAg
ICIuL2Nzcy92YXIvY3NzRXhwYW5kIiwKKyAgICAiLi9jc3MvdmFyL2lzSGlkZGVuV2l0aGluVHJl
ZSIsCisgICAgIi4vY3NzL3Zhci9zd2FwIiwKKyAgICAiLi9jc3MvYWRqdXN0Q1NTIiwKKyAgICAi
Li9kYXRhL3Zhci9kYXRhUHJpdiIsCisgICAgIi4vY3NzL3Nob3dIaWRlIiwKKworICAgICIuL2Nv
cmUvaW5pdCIsCisgICAgIi4vcXVldWUiLAorICAgICIuL2RlZmVycmVkIiwKKyAgICAiLi90cmF2
ZXJzaW5nIiwKKyAgICAiLi9tYW5pcHVsYXRpb24iLAorICAgICIuL2NzcyIsCisgICAgIi4vZWZm
ZWN0cy9Ud2VlbiIKK10sIGZ1bmN0aW9uKCBqUXVlcnksIGRvY3VtZW50LCByY3NzTnVtLCBybm90
aHRtbHdoaXRlLCBjc3NFeHBhbmQsIGlzSGlkZGVuV2l0aGluVHJlZSwgc3dhcCwKKyAgICBhZGp1
c3RDU1MsIGRhdGFQcml2LCBzaG93SGlkZSApIHsKKworInVzZSBzdHJpY3QiOworCit2YXIKKyAg
ICBmeE5vdywgdGltZXJJZCwKKyAgICByZnh0eXBlcyA9IC9eKD86dG9nZ2xlfHNob3d8aGlkZSkk
LywKKyAgICBycnVuID0gL3F1ZXVlSG9va3MkLzsKKworZnVuY3Rpb24gcmFmKCkgeworICAgIGlm
ICggdGltZXJJZCApIHsKKyAgICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSggcmFm
ICk7CisgICAgICAgIGpRdWVyeS5meC50aWNrKCk7CisgICAgfQorfQorCisvLyBBbmltYXRpb25z
IGNyZWF0ZWQgc3luY2hyb25vdXNseSB3aWxsIHJ1biBzeW5jaHJvbm91c2x5CitmdW5jdGlvbiBj
cmVhdGVGeE5vdygpIHsKKyAgICB3aW5kb3cuc2V0VGltZW91dCggZnVuY3Rpb24oKSB7CisgICAg
ICAgIGZ4Tm93ID0gdW5kZWZpbmVkOworICAgIH0gKTsKKyAgICByZXR1cm4gKCBmeE5vdyA9IGpR
dWVyeS5ub3coKSApOworfQorCisvLyBHZW5lcmF0ZSBwYXJhbWV0ZXJzIHRvIGNyZWF0ZSBhIHN0
YW5kYXJkIGFuaW1hdGlvbgorZnVuY3Rpb24gZ2VuRngoIHR5cGUsIGluY2x1ZGVXaWR0aCApIHsK
KyAgICB2YXIgd2hpY2gsCisgICAgICAgIGkgPSAwLAorICAgICAgICBhdHRycyA9IHsgaGVpZ2h0
OiB0eXBlIH07CisKKyAgICAvLyBJZiB3ZSBpbmNsdWRlIHdpZHRoLCBzdGVwIHZhbHVlIGlzIDEg
dG8gZG8gYWxsIGNzc0V4cGFuZCB2YWx1ZXMsCisgICAgLy8gb3RoZXJ3aXNlIHN0ZXAgdmFsdWUg
aXMgMiB0byBza2lwIG92ZXIgTGVmdCBhbmQgUmlnaHQKKyAgICBpbmNsdWRlV2lkdGggPSBpbmNs
dWRlV2lkdGggPyAxIDogMDsKKyAgICBmb3IgKCA7IGkgPCA0OyBpICs9IDIgLSBpbmNsdWRlV2lk
dGggKSB7CisgICAgICAgIHdoaWNoID0gY3NzRXhwYW5kWyBpIF07CisgICAgICAgIGF0dHJzWyAi
bWFyZ2luIiArIHdoaWNoIF0gPSBhdHRyc1sgInBhZGRpbmciICsgd2hpY2ggXSA9IHR5cGU7Cisg
ICAgfQorCisgICAgaWYgKCBpbmNsdWRlV2lkdGggKSB7CisgICAgICAgIGF0dHJzLm9wYWNpdHkg
PSBhdHRycy53aWR0aCA9IHR5cGU7CisgICAgfQorCisgICAgcmV0dXJuIGF0dHJzOworfQorCitm
dW5jdGlvbiBjcmVhdGVUd2VlbiggdmFsdWUsIHByb3AsIGFuaW1hdGlvbiApIHsKKyAgICB2YXIg
dHdlZW4sCisgICAgICAgIGNvbGxlY3Rpb24gPSAoIEFuaW1hdGlvbi50d2VlbmVyc1sgcHJvcCBd
IHx8IFtdICkuY29uY2F0KCBBbmltYXRpb24udHdlZW5lcnNbICIqIiBdICksCisgICAgICAgIGlu
ZGV4ID0gMCwKKyAgICAgICAgbGVuZ3RoID0gY29sbGVjdGlvbi5sZW5ndGg7CisgICAgZm9yICgg
OyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHsKKyAgICAgICAgaWYgKCAoIHR3ZWVuID0gY29s
bGVjdGlvblsgaW5kZXggXS5jYWxsKCBhbmltYXRpb24sIHByb3AsIHZhbHVlICkgKSApIHsKKwor
ICAgICAgICAgICAgLy8gV2UncmUgZG9uZSB3aXRoIHRoaXMgcHJvcGVydHkKKyAgICAgICAgICAg
IHJldHVybiB0d2VlbjsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gZGVmYXVsdFBy
ZWZpbHRlciggZWxlbSwgcHJvcHMsIG9wdHMgKSB7CisgICAgdmFyIHByb3AsIHZhbHVlLCB0b2dn
bGUsIGhvb2tzLCBvbGRmaXJlLCBwcm9wVHdlZW4sIHJlc3RvcmVEaXNwbGF5LCBkaXNwbGF5LAor
ICAgICAgICBpc0JveCA9ICJ3aWR0aCIgaW4gcHJvcHMgfHwgImhlaWdodCIgaW4gcHJvcHMsCisg
ICAgICAgIGFuaW0gPSB0aGlzLAorICAgICAgICBvcmlnID0ge30sCisgICAgICAgIHN0eWxlID0g
ZWxlbS5zdHlsZSwKKyAgICAgICAgaGlkZGVuID0gZWxlbS5ub2RlVHlwZSAmJiBpc0hpZGRlbldp
dGhpblRyZWUoIGVsZW0gKSwKKyAgICAgICAgZGF0YVNob3cgPSBkYXRhUHJpdi5nZXQoIGVsZW0s
ICJmeHNob3ciICk7CisKKyAgICAvLyBRdWV1ZS1za2lwcGluZyBhbmltYXRpb25zIGhpamFjayB0
aGUgZnggaG9va3MKKyAgICBpZiAoICFvcHRzLnF1ZXVlICkgeworICAgICAgICBob29rcyA9IGpR
dWVyeS5fcXVldWVIb29rcyggZWxlbSwgImZ4IiApOworICAgICAgICBpZiAoIGhvb2tzLnVucXVl
dWVkID09IG51bGwgKSB7CisgICAgICAgICAgICBob29rcy51bnF1ZXVlZCA9IDA7CisgICAgICAg
ICAgICBvbGRmaXJlID0gaG9va3MuZW1wdHkuZmlyZTsKKyAgICAgICAgICAgIGhvb2tzLmVtcHR5
LmZpcmUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBpZiAoICFob29rcy51bnF1ZXVl
ZCApIHsKKyAgICAgICAgICAgICAgICAgICAgb2xkZmlyZSgpOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH07CisgICAgICAgIH0KKyAgICAgICAgaG9va3MudW5xdWV1ZWQrKzsKKwor
ICAgICAgICBhbmltLmFsd2F5cyggZnVuY3Rpb24oKSB7CisKKyAgICAgICAgICAgIC8vIEVuc3Vy
ZSB0aGUgY29tcGxldGUgaGFuZGxlciBpcyBjYWxsZWQgYmVmb3JlIHRoaXMgY29tcGxldGVzCisg
ICAgICAgICAgICBhbmltLmFsd2F5cyggZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgaG9v
a3MudW5xdWV1ZWQtLTsKKyAgICAgICAgICAgICAgICBpZiAoICFqUXVlcnkucXVldWUoIGVsZW0s
ICJmeCIgKS5sZW5ndGggKSB7CisgICAgICAgICAgICAgICAgICAgIGhvb2tzLmVtcHR5LmZpcmUo
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9ICk7CisgICAgICAgIH0gKTsKKyAg
ICB9CisKKyAgICAvLyBEZXRlY3Qgc2hvdy9oaWRlIGFuaW1hdGlvbnMKKyAgICBmb3IgKCBwcm9w
IGluIHByb3BzICkgeworICAgICAgICB2YWx1ZSA9IHByb3BzWyBwcm9wIF07CisgICAgICAgIGlm
ICggcmZ4dHlwZXMudGVzdCggdmFsdWUgKSApIHsKKyAgICAgICAgICAgIGRlbGV0ZSBwcm9wc1sg
cHJvcCBdOworICAgICAgICAgICAgdG9nZ2xlID0gdG9nZ2xlIHx8IHZhbHVlID09PSAidG9nZ2xl
IjsKKyAgICAgICAgICAgIGlmICggdmFsdWUgPT09ICggaGlkZGVuID8gImhpZGUiIDogInNob3ci
ICkgKSB7CisKKyAgICAgICAgICAgICAgICAvLyBQcmV0ZW5kIHRvIGJlIGhpZGRlbiBpZiB0aGlz
IGlzIGEgInNob3ciIGFuZAorICAgICAgICAgICAgICAgIC8vIHRoZXJlIGlzIHN0aWxsIGRhdGEg
ZnJvbSBhIHN0b3BwZWQgc2hvdy9oaWRlCisgICAgICAgICAgICAgICAgaWYgKCB2YWx1ZSA9PT0g
InNob3ciICYmIGRhdGFTaG93ICYmIGRhdGFTaG93WyBwcm9wIF0gIT09IHVuZGVmaW5lZCApIHsK
KyAgICAgICAgICAgICAgICAgICAgaGlkZGVuID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgIC8v
IElnbm9yZSBhbGwgb3RoZXIgbm8tb3Agc2hvdy9oaWRlIGRhdGEKKyAgICAgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBvcmlnWyBwcm9wIF0gPSBkYXRhU2hvdyAmJiBk
YXRhU2hvd1sgcHJvcCBdIHx8IGpRdWVyeS5zdHlsZSggZWxlbSwgcHJvcCApOworICAgICAgICB9
CisgICAgfQorCisgICAgLy8gQmFpbCBvdXQgaWYgdGhpcyBpcyBhIG5vLW9wIGxpa2UgLmhpZGUo
KS5oaWRlKCkKKyAgICBwcm9wVHdlZW4gPSAhalF1ZXJ5LmlzRW1wdHlPYmplY3QoIHByb3BzICk7
CisgICAgaWYgKCAhcHJvcFR3ZWVuICYmIGpRdWVyeS5pc0VtcHR5T2JqZWN0KCBvcmlnICkgKSB7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBSZXN0cmljdCAib3ZlcmZsb3ciIGFu
ZCAiZGlzcGxheSIgc3R5bGVzIGR1cmluZyBib3ggYW5pbWF0aW9ucworICAgIGlmICggaXNCb3gg
JiYgZWxlbS5ub2RlVHlwZSA9PT0gMSApIHsKKworICAgICAgICAvLyBTdXBwb3J0OiBJRSA8PTkg
LSAxMSwgRWRnZSAxMiAtIDEzCisgICAgICAgIC8vIFJlY29yZCBhbGwgMyBvdmVyZmxvdyBhdHRy
aWJ1dGVzIGJlY2F1c2UgSUUgZG9lcyBub3QgaW5mZXIgdGhlIHNob3J0aGFuZAorICAgICAgICAv
LyBmcm9tIGlkZW50aWNhbGx5LXZhbHVlZCBvdmVyZmxvd1ggYW5kIG92ZXJmbG93WQorICAgICAg
ICBvcHRzLm92ZXJmbG93ID0gWyBzdHlsZS5vdmVyZmxvdywgc3R5bGUub3ZlcmZsb3dYLCBzdHls
ZS5vdmVyZmxvd1kgXTsKKworICAgICAgICAvLyBJZGVudGlmeSBhIGRpc3BsYXkgdHlwZSwgcHJl
ZmVycmluZyBvbGQgc2hvdy9oaWRlIGRhdGEgb3ZlciB0aGUgQ1NTIGNhc2NhZGUKKyAgICAgICAg
cmVzdG9yZURpc3BsYXkgPSBkYXRhU2hvdyAmJiBkYXRhU2hvdy5kaXNwbGF5OworICAgICAgICBp
ZiAoIHJlc3RvcmVEaXNwbGF5ID09IG51bGwgKSB7CisgICAgICAgICAgICByZXN0b3JlRGlzcGxh
eSA9IGRhdGFQcml2LmdldCggZWxlbSwgImRpc3BsYXkiICk7CisgICAgICAgIH0KKyAgICAgICAg
ZGlzcGxheSA9IGpRdWVyeS5jc3MoIGVsZW0sICJkaXNwbGF5IiApOworICAgICAgICBpZiAoIGRp
c3BsYXkgPT09ICJub25lIiApIHsKKyAgICAgICAgICAgIGlmICggcmVzdG9yZURpc3BsYXkgKSB7
CisgICAgICAgICAgICAgICAgZGlzcGxheSA9IHJlc3RvcmVEaXNwbGF5OworICAgICAgICAgICAg
fSBlbHNlIHsKKworICAgICAgICAgICAgICAgIC8vIEdldCBub25lbXB0eSB2YWx1ZShzKSBieSB0
ZW1wb3JhcmlseSBmb3JjaW5nIHZpc2liaWxpdHkKKyAgICAgICAgICAgICAgICBzaG93SGlkZSgg
WyBlbGVtIF0sIHRydWUgKTsKKyAgICAgICAgICAgICAgICByZXN0b3JlRGlzcGxheSA9IGVsZW0u
c3R5bGUuZGlzcGxheSB8fCByZXN0b3JlRGlzcGxheTsKKyAgICAgICAgICAgICAgICBkaXNwbGF5
ID0galF1ZXJ5LmNzcyggZWxlbSwgImRpc3BsYXkiICk7CisgICAgICAgICAgICAgICAgc2hvd0hp
ZGUoIFsgZWxlbSBdICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBB
bmltYXRlIGlubGluZSBlbGVtZW50cyBhcyBpbmxpbmUtYmxvY2sKKyAgICAgICAgaWYgKCBkaXNw
bGF5ID09PSAiaW5saW5lIiB8fCBkaXNwbGF5ID09PSAiaW5saW5lLWJsb2NrIiAmJiByZXN0b3Jl
RGlzcGxheSAhPSBudWxsICkgeworICAgICAgICAgICAgaWYgKCBqUXVlcnkuY3NzKCBlbGVtLCAi
ZmxvYXQiICkgPT09ICJub25lIiApIHsKKworICAgICAgICAgICAgICAgIC8vIFJlc3RvcmUgdGhl
IG9yaWdpbmFsIGRpc3BsYXkgdmFsdWUgYXQgdGhlIGVuZCBvZiBwdXJlIHNob3cvaGlkZSBhbmlt
YXRpb25zCisgICAgICAgICAgICAgICAgaWYgKCAhcHJvcFR3ZWVuICkgeworICAgICAgICAgICAg
ICAgICAgICBhbmltLmRvbmUoIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICAgICAg
c3R5bGUuZGlzcGxheSA9IHJlc3RvcmVEaXNwbGF5OworICAgICAgICAgICAgICAgICAgICB9ICk7
CisgICAgICAgICAgICAgICAgICAgIGlmICggcmVzdG9yZURpc3BsYXkgPT0gbnVsbCApIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXkgPSBzdHlsZS5kaXNwbGF5OworICAgICAgICAg
ICAgICAgICAgICAgICAgcmVzdG9yZURpc3BsYXkgPSBkaXNwbGF5ID09PSAibm9uZSIgPyAiIiA6
IGRpc3BsYXk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgc3R5bGUuZGlzcGxheSA9ICJpbmxpbmUtYmxvY2siOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCBvcHRzLm92ZXJmbG93ICkgeworICAgICAg
ICBzdHlsZS5vdmVyZmxvdyA9ICJoaWRkZW4iOworICAgICAgICBhbmltLmFsd2F5cyggZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICBzdHlsZS5vdmVyZmxvdyA9IG9wdHMub3ZlcmZsb3dbIDAgXTsK
KyAgICAgICAgICAgIHN0eWxlLm92ZXJmbG93WCA9IG9wdHMub3ZlcmZsb3dbIDEgXTsKKyAgICAg
ICAgICAgIHN0eWxlLm92ZXJmbG93WSA9IG9wdHMub3ZlcmZsb3dbIDIgXTsKKyAgICAgICAgfSAp
OworICAgIH0KKworICAgIC8vIEltcGxlbWVudCBzaG93L2hpZGUgYW5pbWF0aW9ucworICAgIHBy
b3BUd2VlbiA9IGZhbHNlOworICAgIGZvciAoIHByb3AgaW4gb3JpZyApIHsKKworICAgICAgICAv
LyBHZW5lcmFsIHNob3cvaGlkZSBzZXR1cCBmb3IgdGhpcyBlbGVtZW50IGFuaW1hdGlvbgorICAg
ICAgICBpZiAoICFwcm9wVHdlZW4gKSB7CisgICAgICAgICAgICBpZiAoIGRhdGFTaG93ICkgewor
ICAgICAgICAgICAgICAgIGlmICggImhpZGRlbiIgaW4gZGF0YVNob3cgKSB7CisgICAgICAgICAg
ICAgICAgICAgIGhpZGRlbiA9IGRhdGFTaG93LmhpZGRlbjsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRhdGFTaG93ID0gZGF0YVByaXYu
YWNjZXNzKCBlbGVtLCAiZnhzaG93IiwgeyBkaXNwbGF5OiByZXN0b3JlRGlzcGxheSB9ICk7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFN0b3JlIGhpZGRlbi92aXNpYmxlIGZvciB0
b2dnbGUgc28gYC5zdG9wKCkudG9nZ2xlKClgICJyZXZlcnNlcyIKKyAgICAgICAgICAgIGlmICgg
dG9nZ2xlICkgeworICAgICAgICAgICAgICAgIGRhdGFTaG93LmhpZGRlbiA9ICFoaWRkZW47Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFNob3cgZWxlbWVudHMgYmVmb3JlIGFuaW1h
dGluZyB0aGVtCisgICAgICAgICAgICBpZiAoIGhpZGRlbiApIHsKKyAgICAgICAgICAgICAgICBz
aG93SGlkZSggWyBlbGVtIF0sIHRydWUgKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
LyogZXNsaW50LWRpc2FibGUgbm8tbG9vcC1mdW5jICovCisKKyAgICAgICAgICAgIGFuaW0uZG9u
ZSggZnVuY3Rpb24oKSB7CisKKyAgICAgICAgICAgIC8qIGVzbGludC1lbmFibGUgbm8tbG9vcC1m
dW5jICovCisKKyAgICAgICAgICAgICAgICAvLyBUaGUgZmluYWwgc3RlcCBvZiBhICJoaWRlIiBh
bmltYXRpb24gaXMgYWN0dWFsbHkgaGlkaW5nIHRoZSBlbGVtZW50CisgICAgICAgICAgICAgICAg
aWYgKCAhaGlkZGVuICkgeworICAgICAgICAgICAgICAgICAgICBzaG93SGlkZSggWyBlbGVtIF0g
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZGF0YVByaXYucmVtb3ZlKCBl
bGVtLCAiZnhzaG93IiApOworICAgICAgICAgICAgICAgIGZvciAoIHByb3AgaW4gb3JpZyApIHsK
KyAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LnN0eWxlKCBlbGVtLCBwcm9wLCBvcmlnWyBwcm9w
IF0gKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9ICk7CisgICAgICAgIH0KKwor
ICAgICAgICAvLyBQZXItcHJvcGVydHkgc2V0dXAKKyAgICAgICAgcHJvcFR3ZWVuID0gY3JlYXRl
VHdlZW4oIGhpZGRlbiA/IGRhdGFTaG93WyBwcm9wIF0gOiAwLCBwcm9wLCBhbmltICk7CisgICAg
ICAgIGlmICggISggcHJvcCBpbiBkYXRhU2hvdyApICkgeworICAgICAgICAgICAgZGF0YVNob3db
IHByb3AgXSA9IHByb3BUd2Vlbi5zdGFydDsKKyAgICAgICAgICAgIGlmICggaGlkZGVuICkgewor
ICAgICAgICAgICAgICAgIHByb3BUd2Vlbi5lbmQgPSBwcm9wVHdlZW4uc3RhcnQ7CisgICAgICAg
ICAgICAgICAgcHJvcFR3ZWVuLnN0YXJ0ID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0KK30KKworZnVuY3Rpb24gcHJvcEZpbHRlciggcHJvcHMsIHNwZWNpYWxFYXNpbmcgKSB7
CisgICAgdmFyIGluZGV4LCBuYW1lLCBlYXNpbmcsIHZhbHVlLCBob29rczsKKworICAgIC8vIGNh
bWVsQ2FzZSwgc3BlY2lhbEVhc2luZyBhbmQgZXhwYW5kIGNzc0hvb2sgcGFzcworICAgIGZvciAo
IGluZGV4IGluIHByb3BzICkgeworICAgICAgICBuYW1lID0galF1ZXJ5LmNhbWVsQ2FzZSggaW5k
ZXggKTsKKyAgICAgICAgZWFzaW5nID0gc3BlY2lhbEVhc2luZ1sgbmFtZSBdOworICAgICAgICB2
YWx1ZSA9IHByb3BzWyBpbmRleCBdOworICAgICAgICBpZiAoIGpRdWVyeS5pc0FycmF5KCB2YWx1
ZSApICkgeworICAgICAgICAgICAgZWFzaW5nID0gdmFsdWVbIDEgXTsKKyAgICAgICAgICAgIHZh
bHVlID0gcHJvcHNbIGluZGV4IF0gPSB2YWx1ZVsgMCBdOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKCBpbmRleCAhPT0gbmFtZSApIHsKKyAgICAgICAgICAgIHByb3BzWyBuYW1lIF0gPSB2YWx1
ZTsKKyAgICAgICAgICAgIGRlbGV0ZSBwcm9wc1sgaW5kZXggXTsKKyAgICAgICAgfQorCisgICAg
ICAgIGhvb2tzID0galF1ZXJ5LmNzc0hvb2tzWyBuYW1lIF07CisgICAgICAgIGlmICggaG9va3Mg
JiYgImV4cGFuZCIgaW4gaG9va3MgKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGhvb2tzLmV4cGFu
ZCggdmFsdWUgKTsKKyAgICAgICAgICAgIGRlbGV0ZSBwcm9wc1sgbmFtZSBdOworCisgICAgICAg
ICAgICAvLyBOb3QgcXVpdGUgJC5leHRlbmQsIHRoaXMgd29uJ3Qgb3ZlcndyaXRlIGV4aXN0aW5n
IGtleXMuCisgICAgICAgICAgICAvLyBSZXVzaW5nICdpbmRleCcgYmVjYXVzZSB3ZSBoYXZlIHRo
ZSBjb3JyZWN0ICJuYW1lIgorICAgICAgICAgICAgZm9yICggaW5kZXggaW4gdmFsdWUgKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKCAhKCBpbmRleCBpbiBwcm9wcyApICkgeworICAgICAgICAgICAg
ICAgICAgICBwcm9wc1sgaW5kZXggXSA9IHZhbHVlWyBpbmRleCBdOworICAgICAgICAgICAgICAg
ICAgICBzcGVjaWFsRWFzaW5nWyBpbmRleCBdID0gZWFzaW5nOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNwZWNpYWxFYXNp
bmdbIG5hbWUgXSA9IGVhc2luZzsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gQW5p
bWF0aW9uKCBlbGVtLCBwcm9wZXJ0aWVzLCBvcHRpb25zICkgeworICAgIHZhciByZXN1bHQsCisg
ICAgICAgIHN0b3BwZWQsCisgICAgICAgIGluZGV4ID0gMCwKKyAgICAgICAgbGVuZ3RoID0gQW5p
bWF0aW9uLnByZWZpbHRlcnMubGVuZ3RoLAorICAgICAgICBkZWZlcnJlZCA9IGpRdWVyeS5EZWZl
cnJlZCgpLmFsd2F5cyggZnVuY3Rpb24oKSB7CisKKyAgICAgICAgICAgIC8vIERvbid0IG1hdGNo
IGVsZW0gaW4gdGhlIDphbmltYXRlZCBzZWxlY3RvcgorICAgICAgICAgICAgZGVsZXRlIHRpY2su
ZWxlbTsKKyAgICAgICAgfSApLAorICAgICAgICB0aWNrID0gZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICBpZiAoIHN0b3BwZWQgKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgdmFyIGN1cnJlbnRUaW1lID0gZnhOb3cgfHwgY3JlYXRl
RnhOb3coKSwKKyAgICAgICAgICAgICAgICByZW1haW5pbmcgPSBNYXRoLm1heCggMCwgYW5pbWF0
aW9uLnN0YXJ0VGltZSArIGFuaW1hdGlvbi5kdXJhdGlvbiAtIGN1cnJlbnRUaW1lICksCisKKyAg
ICAgICAgICAgICAgICAvLyBTdXBwb3J0OiBBbmRyb2lkIDIuMyBvbmx5CisgICAgICAgICAgICAg
ICAgLy8gQXJjaGFpYyBjcmFzaCBidWcgd29uJ3QgYWxsb3cgdXMgdG8gdXNlIGAxIC0gKCAwLjUg
fHwgMCApYCAoIzEyNDk3KQorICAgICAgICAgICAgICAgIHRlbXAgPSByZW1haW5pbmcgLyBhbmlt
YXRpb24uZHVyYXRpb24gfHwgMCwKKyAgICAgICAgICAgICAgICBwZXJjZW50ID0gMSAtIHRlbXAs
CisgICAgICAgICAgICAgICAgaW5kZXggPSAwLAorICAgICAgICAgICAgICAgIGxlbmd0aCA9IGFu
aW1hdGlvbi50d2VlbnMubGVuZ3RoOworCisgICAgICAgICAgICBmb3IgKCA7IGluZGV4IDwgbGVu
Z3RoOyBpbmRleCsrICkgeworICAgICAgICAgICAgICAgIGFuaW1hdGlvbi50d2VlbnNbIGluZGV4
IF0ucnVuKCBwZXJjZW50ICk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGRlZmVycmVk
Lm5vdGlmeVdpdGgoIGVsZW0sIFsgYW5pbWF0aW9uLCBwZXJjZW50LCByZW1haW5pbmcgXSApOwor
CisgICAgICAgICAgICBpZiAoIHBlcmNlbnQgPCAxICYmIGxlbmd0aCApIHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gcmVtYWluaW5nOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBkZWZlcnJlZC5yZXNvbHZlV2l0aCggZWxlbSwgWyBhbmltYXRpb24gXSApOworICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAg
ICAgYW5pbWF0aW9uID0gZGVmZXJyZWQucHJvbWlzZSggeworICAgICAgICAgICAgZWxlbTogZWxl
bSwKKyAgICAgICAgICAgIHByb3BzOiBqUXVlcnkuZXh0ZW5kKCB7fSwgcHJvcGVydGllcyApLAor
ICAgICAgICAgICAgb3B0czogalF1ZXJ5LmV4dGVuZCggdHJ1ZSwgeworICAgICAgICAgICAgICAg
IHNwZWNpYWxFYXNpbmc6IHt9LAorICAgICAgICAgICAgICAgIGVhc2luZzogalF1ZXJ5LmVhc2lu
Zy5fZGVmYXVsdAorICAgICAgICAgICAgfSwgb3B0aW9ucyApLAorICAgICAgICAgICAgb3JpZ2lu
YWxQcm9wZXJ0aWVzOiBwcm9wZXJ0aWVzLAorICAgICAgICAgICAgb3JpZ2luYWxPcHRpb25zOiBv
cHRpb25zLAorICAgICAgICAgICAgc3RhcnRUaW1lOiBmeE5vdyB8fCBjcmVhdGVGeE5vdygpLAor
ICAgICAgICAgICAgZHVyYXRpb246IG9wdGlvbnMuZHVyYXRpb24sCisgICAgICAgICAgICB0d2Vl
bnM6IFtdLAorICAgICAgICAgICAgY3JlYXRlVHdlZW46IGZ1bmN0aW9uKCBwcm9wLCBlbmQgKSB7
CisgICAgICAgICAgICAgICAgdmFyIHR3ZWVuID0galF1ZXJ5LlR3ZWVuKCBlbGVtLCBhbmltYXRp
b24ub3B0cywgcHJvcCwgZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLm9w
dHMuc3BlY2lhbEVhc2luZ1sgcHJvcCBdIHx8IGFuaW1hdGlvbi5vcHRzLmVhc2luZyApOworICAg
ICAgICAgICAgICAgIGFuaW1hdGlvbi50d2VlbnMucHVzaCggdHdlZW4gKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gdHdlZW47CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgc3RvcDogZnVu
Y3Rpb24oIGdvdG9FbmQgKSB7CisgICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gMCwKKworICAg
ICAgICAgICAgICAgICAgICAvLyBJZiB3ZSBhcmUgZ29pbmcgdG8gdGhlIGVuZCwgd2Ugd2FudCB0
byBydW4gYWxsIHRoZSB0d2VlbnMKKyAgICAgICAgICAgICAgICAgICAgLy8gb3RoZXJ3aXNlIHdl
IHNraXAgdGhpcyBwYXJ0CisgICAgICAgICAgICAgICAgICAgIGxlbmd0aCA9IGdvdG9FbmQgPyBh
bmltYXRpb24udHdlZW5zLmxlbmd0aCA6IDA7CisgICAgICAgICAgICAgICAgaWYgKCBzdG9wcGVk
ICkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgc3RvcHBlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgZm9yICgg
OyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHsKKyAgICAgICAgICAgICAgICAgICAgYW5pbWF0
aW9uLnR3ZWVuc1sgaW5kZXggXS5ydW4oIDEgKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICAvLyBSZXNvbHZlIHdoZW4gd2UgcGxheWVkIHRoZSBsYXN0IGZyYW1lOyBvdGhl
cndpc2UsIHJlamVjdAorICAgICAgICAgICAgICAgIGlmICggZ290b0VuZCApIHsKKyAgICAgICAg
ICAgICAgICAgICAgZGVmZXJyZWQubm90aWZ5V2l0aCggZWxlbSwgWyBhbmltYXRpb24sIDEsIDAg
XSApOworICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlV2l0aCggZWxlbSwgWyBh
bmltYXRpb24sIGdvdG9FbmQgXSApOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdFdpdGgoIGVsZW0sIFsgYW5pbWF0aW9uLCBnb3Rv
RW5kIF0gKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7
CisgICAgICAgICAgICB9CisgICAgICAgIH0gKSwKKyAgICAgICAgcHJvcHMgPSBhbmltYXRpb24u
cHJvcHM7CisKKyAgICBwcm9wRmlsdGVyKCBwcm9wcywgYW5pbWF0aW9uLm9wdHMuc3BlY2lhbEVh
c2luZyApOworCisgICAgZm9yICggOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHsKKyAgICAg
ICAgcmVzdWx0ID0gQW5pbWF0aW9uLnByZWZpbHRlcnNbIGluZGV4IF0uY2FsbCggYW5pbWF0aW9u
LCBlbGVtLCBwcm9wcywgYW5pbWF0aW9uLm9wdHMgKTsKKyAgICAgICAgaWYgKCByZXN1bHQgKSB7
CisgICAgICAgICAgICBpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCByZXN1bHQuc3RvcCApICkgewor
ICAgICAgICAgICAgICAgIGpRdWVyeS5fcXVldWVIb29rcyggYW5pbWF0aW9uLmVsZW0sIGFuaW1h
dGlvbi5vcHRzLnF1ZXVlICkuc3RvcCA9CisgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5wcm94
eSggcmVzdWx0LnN0b3AsIHJlc3VsdCApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGpRdWVyeS5tYXAoIHByb3BzLCBj
cmVhdGVUd2VlbiwgYW5pbWF0aW9uICk7CisKKyAgICBpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBh
bmltYXRpb24ub3B0cy5zdGFydCApICkgeworICAgICAgICBhbmltYXRpb24ub3B0cy5zdGFydC5j
YWxsKCBlbGVtLCBhbmltYXRpb24gKTsKKyAgICB9CisKKyAgICBqUXVlcnkuZngudGltZXIoCisg
ICAgICAgIGpRdWVyeS5leHRlbmQoIHRpY2ssIHsKKyAgICAgICAgICAgIGVsZW06IGVsZW0sCisg
ICAgICAgICAgICBhbmltOiBhbmltYXRpb24sCisgICAgICAgICAgICBxdWV1ZTogYW5pbWF0aW9u
Lm9wdHMucXVldWUKKyAgICAgICAgfSApCisgICAgKTsKKworICAgIC8vIGF0dGFjaCBjYWxsYmFj
a3MgZnJvbSBvcHRpb25zCisgICAgcmV0dXJuIGFuaW1hdGlvbi5wcm9ncmVzcyggYW5pbWF0aW9u
Lm9wdHMucHJvZ3Jlc3MgKQorICAgICAgICAuZG9uZSggYW5pbWF0aW9uLm9wdHMuZG9uZSwgYW5p
bWF0aW9uLm9wdHMuY29tcGxldGUgKQorICAgICAgICAuZmFpbCggYW5pbWF0aW9uLm9wdHMuZmFp
bCApCisgICAgICAgIC5hbHdheXMoIGFuaW1hdGlvbi5vcHRzLmFsd2F5cyApOworfQorCitqUXVl
cnkuQW5pbWF0aW9uID0galF1ZXJ5LmV4dGVuZCggQW5pbWF0aW9uLCB7CisKKyAgICB0d2VlbmVy
czogeworICAgICAgICAiKiI6IFsgZnVuY3Rpb24oIHByb3AsIHZhbHVlICkgeworICAgICAgICAg
ICAgdmFyIHR3ZWVuID0gdGhpcy5jcmVhdGVUd2VlbiggcHJvcCwgdmFsdWUgKTsKKyAgICAgICAg
ICAgIGFkanVzdENTUyggdHdlZW4uZWxlbSwgcHJvcCwgcmNzc051bS5leGVjKCB2YWx1ZSApLCB0
d2VlbiApOworICAgICAgICAgICAgcmV0dXJuIHR3ZWVuOworICAgICAgICB9IF0KKyAgICB9LAor
CisgICAgdHdlZW5lcjogZnVuY3Rpb24oIHByb3BzLCBjYWxsYmFjayApIHsKKyAgICAgICAgaWYg
KCBqUXVlcnkuaXNGdW5jdGlvbiggcHJvcHMgKSApIHsKKyAgICAgICAgICAgIGNhbGxiYWNrID0g
cHJvcHM7CisgICAgICAgICAgICBwcm9wcyA9IFsgIioiIF07CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBwcm9wcyA9IHByb3BzLm1hdGNoKCBybm90aHRtbHdoaXRlICk7CisgICAgICAg
IH0KKworICAgICAgICB2YXIgcHJvcCwKKyAgICAgICAgICAgIGluZGV4ID0gMCwKKyAgICAgICAg
ICAgIGxlbmd0aCA9IHByb3BzLmxlbmd0aDsKKworICAgICAgICBmb3IgKCA7IGluZGV4IDwgbGVu
Z3RoOyBpbmRleCsrICkgeworICAgICAgICAgICAgcHJvcCA9IHByb3BzWyBpbmRleCBdOworICAg
ICAgICAgICAgQW5pbWF0aW9uLnR3ZWVuZXJzWyBwcm9wIF0gPSBBbmltYXRpb24udHdlZW5lcnNb
IHByb3AgXSB8fCBbXTsKKyAgICAgICAgICAgIEFuaW1hdGlvbi50d2VlbmVyc1sgcHJvcCBdLnVu
c2hpZnQoIGNhbGxiYWNrICk7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgcHJlZmlsdGVyczog
WyBkZWZhdWx0UHJlZmlsdGVyIF0sCisKKyAgICBwcmVmaWx0ZXI6IGZ1bmN0aW9uKCBjYWxsYmFj
aywgcHJlcGVuZCApIHsKKyAgICAgICAgaWYgKCBwcmVwZW5kICkgeworICAgICAgICAgICAgQW5p
bWF0aW9uLnByZWZpbHRlcnMudW5zaGlmdCggY2FsbGJhY2sgKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIEFuaW1hdGlvbi5wcmVmaWx0ZXJzLnB1c2goIGNhbGxiYWNrICk7CisgICAg
ICAgIH0KKyAgICB9Cit9ICk7CisKK2pRdWVyeS5zcGVlZCA9IGZ1bmN0aW9uKCBzcGVlZCwgZWFz
aW5nLCBmbiApIHsKKyAgICB2YXIgb3B0ID0gc3BlZWQgJiYgdHlwZW9mIHNwZWVkID09PSAib2Jq
ZWN0IiA/IGpRdWVyeS5leHRlbmQoIHt9LCBzcGVlZCApIDogeworICAgICAgICBjb21wbGV0ZTog
Zm4gfHwgIWZuICYmIGVhc2luZyB8fAorICAgICAgICAgICAgalF1ZXJ5LmlzRnVuY3Rpb24oIHNw
ZWVkICkgJiYgc3BlZWQsCisgICAgICAgIGR1cmF0aW9uOiBzcGVlZCwKKyAgICAgICAgZWFzaW5n
OiBmbiAmJiBlYXNpbmcgfHwgZWFzaW5nICYmICFqUXVlcnkuaXNGdW5jdGlvbiggZWFzaW5nICkg
JiYgZWFzaW5nCisgICAgfTsKKworICAgIC8vIEdvIHRvIHRoZSBlbmQgc3RhdGUgaWYgZnggYXJl
IG9mZiBvciBpZiBkb2N1bWVudCBpcyBoaWRkZW4KKyAgICBpZiAoIGpRdWVyeS5meC5vZmYgfHwg
ZG9jdW1lbnQuaGlkZGVuICkgeworICAgICAgICBvcHQuZHVyYXRpb24gPSAwOworCisgICAgfSBl
bHNlIHsKKyAgICAgICAgaWYgKCB0eXBlb2Ygb3B0LmR1cmF0aW9uICE9PSAibnVtYmVyIiApIHsK
KyAgICAgICAgICAgIGlmICggb3B0LmR1cmF0aW9uIGluIGpRdWVyeS5meC5zcGVlZHMgKSB7Cisg
ICAgICAgICAgICAgICAgb3B0LmR1cmF0aW9uID0galF1ZXJ5LmZ4LnNwZWVkc1sgb3B0LmR1cmF0
aW9uIF07CisKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgb3B0LmR1cmF0
aW9uID0galF1ZXJ5LmZ4LnNwZWVkcy5fZGVmYXVsdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KKworICAgIC8vIE5vcm1hbGl6ZSBvcHQucXVldWUgLSB0cnVlL3VuZGVmaW5lZC9u
dWxsIC0+ICJmeCIKKyAgICBpZiAoIG9wdC5xdWV1ZSA9PSBudWxsIHx8IG9wdC5xdWV1ZSA9PT0g
dHJ1ZSApIHsKKyAgICAgICAgb3B0LnF1ZXVlID0gImZ4IjsKKyAgICB9CisKKyAgICAvLyBRdWV1
ZWluZworICAgIG9wdC5vbGQgPSBvcHQuY29tcGxldGU7CisKKyAgICBvcHQuY29tcGxldGUgPSBm
dW5jdGlvbigpIHsKKyAgICAgICAgaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggb3B0Lm9sZCApICkg
eworICAgICAgICAgICAgb3B0Lm9sZC5jYWxsKCB0aGlzICk7CisgICAgICAgIH0KKworICAgICAg
ICBpZiAoIG9wdC5xdWV1ZSApIHsKKyAgICAgICAgICAgIGpRdWVyeS5kZXF1ZXVlKCB0aGlzLCBv
cHQucXVldWUgKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICByZXR1cm4gb3B0OworfTsKKwor
alF1ZXJ5LmZuLmV4dGVuZCggeworICAgIGZhZGVUbzogZnVuY3Rpb24oIHNwZWVkLCB0bywgZWFz
aW5nLCBjYWxsYmFjayApIHsKKworICAgICAgICAvLyBTaG93IGFueSBoaWRkZW4gZWxlbWVudHMg
YWZ0ZXIgc2V0dGluZyBvcGFjaXR5IHRvIDAKKyAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyKCBp
c0hpZGRlbldpdGhpblRyZWUgKS5jc3MoICJvcGFjaXR5IiwgMCApLnNob3coKQorCisgICAgICAg
ICAgICAvLyBBbmltYXRlIHRvIHRoZSB2YWx1ZSBzcGVjaWZpZWQKKyAgICAgICAgICAgIC5lbmQo
KS5hbmltYXRlKCB7IG9wYWNpdHk6IHRvIH0sIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICk7Cisg
ICAgfSwKKyAgICBhbmltYXRlOiBmdW5jdGlvbiggcHJvcCwgc3BlZWQsIGVhc2luZywgY2FsbGJh
Y2sgKSB7CisgICAgICAgIHZhciBlbXB0eSA9IGpRdWVyeS5pc0VtcHR5T2JqZWN0KCBwcm9wICks
CisgICAgICAgICAgICBvcHRhbGwgPSBqUXVlcnkuc3BlZWQoIHNwZWVkLCBlYXNpbmcsIGNhbGxi
YWNrICksCisgICAgICAgICAgICBkb0FuaW1hdGlvbiA9IGZ1bmN0aW9uKCkgeworCisgICAgICAg
ICAgICAgICAgLy8gT3BlcmF0ZSBvbiBhIGNvcHkgb2YgcHJvcCBzbyBwZXItcHJvcGVydHkgZWFz
aW5nIHdvbid0IGJlIGxvc3QKKyAgICAgICAgICAgICAgICB2YXIgYW5pbSA9IEFuaW1hdGlvbigg
dGhpcywgalF1ZXJ5LmV4dGVuZCgge30sIHByb3AgKSwgb3B0YWxsICk7CisKKyAgICAgICAgICAg
ICAgICAvLyBFbXB0eSBhbmltYXRpb25zLCBvciBmaW5pc2hpbmcgcmVzb2x2ZXMgaW1tZWRpYXRl
bHkKKyAgICAgICAgICAgICAgICBpZiAoIGVtcHR5IHx8IGRhdGFQcml2LmdldCggdGhpcywgImZp
bmlzaCIgKSApIHsKKyAgICAgICAgICAgICAgICAgICAgYW5pbS5zdG9wKCB0cnVlICk7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIGRvQW5pbWF0aW9uLmZp
bmlzaCA9IGRvQW5pbWF0aW9uOworCisgICAgICAgIHJldHVybiBlbXB0eSB8fCBvcHRhbGwucXVl
dWUgPT09IGZhbHNlID8KKyAgICAgICAgICAgIHRoaXMuZWFjaCggZG9BbmltYXRpb24gKSA6Cisg
ICAgICAgICAgICB0aGlzLnF1ZXVlKCBvcHRhbGwucXVldWUsIGRvQW5pbWF0aW9uICk7CisgICAg
fSwKKyAgICBzdG9wOiBmdW5jdGlvbiggdHlwZSwgY2xlYXJRdWV1ZSwgZ290b0VuZCApIHsKKyAg
ICAgICAgdmFyIHN0b3BRdWV1ZSA9IGZ1bmN0aW9uKCBob29rcyApIHsKKyAgICAgICAgICAgIHZh
ciBzdG9wID0gaG9va3Muc3RvcDsKKyAgICAgICAgICAgIGRlbGV0ZSBob29rcy5zdG9wOworICAg
ICAgICAgICAgc3RvcCggZ290b0VuZCApOworICAgICAgICB9OworCisgICAgICAgIGlmICggdHlw
ZW9mIHR5cGUgIT09ICJzdHJpbmciICkgeworICAgICAgICAgICAgZ290b0VuZCA9IGNsZWFyUXVl
dWU7CisgICAgICAgICAgICBjbGVhclF1ZXVlID0gdHlwZTsKKyAgICAgICAgICAgIHR5cGUgPSB1
bmRlZmluZWQ7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCBjbGVhclF1ZXVlICYmIHR5cGUgIT09
IGZhbHNlICkgeworICAgICAgICAgICAgdGhpcy5xdWV1ZSggdHlwZSB8fCAiZngiLCBbXSApOwor
ICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICB2YXIgZGVxdWV1ZSA9IHRydWUsCisgICAgICAgICAgICAgICAgaW5kZXggPSB0eXBl
ICE9IG51bGwgJiYgdHlwZSArICJxdWV1ZUhvb2tzIiwKKyAgICAgICAgICAgICAgICB0aW1lcnMg
PSBqUXVlcnkudGltZXJzLAorICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhUHJpdi5nZXQoIHRo
aXMgKTsKKworICAgICAgICAgICAgaWYgKCBpbmRleCApIHsKKyAgICAgICAgICAgICAgICBpZiAo
IGRhdGFbIGluZGV4IF0gJiYgZGF0YVsgaW5kZXggXS5zdG9wICkgeworICAgICAgICAgICAgICAg
ICAgICBzdG9wUXVldWUoIGRhdGFbIGluZGV4IF0gKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGZvciAoIGluZGV4IGluIGRhdGEgKSB7
CisgICAgICAgICAgICAgICAgICAgIGlmICggZGF0YVsgaW5kZXggXSAmJiBkYXRhWyBpbmRleCBd
LnN0b3AgJiYgcnJ1bi50ZXN0KCBpbmRleCApICkgeworICAgICAgICAgICAgICAgICAgICAgICAg
c3RvcFF1ZXVlKCBkYXRhWyBpbmRleCBdICk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZvciAoIGluZGV4ID0g
dGltZXJzLmxlbmd0aDsgaW5kZXgtLTsgKSB7CisgICAgICAgICAgICAgICAgaWYgKCB0aW1lcnNb
IGluZGV4IF0uZWxlbSA9PT0gdGhpcyAmJgorICAgICAgICAgICAgICAgICAgICAoIHR5cGUgPT0g
bnVsbCB8fCB0aW1lcnNbIGluZGV4IF0ucXVldWUgPT09IHR5cGUgKSApIHsKKworICAgICAgICAg
ICAgICAgICAgICB0aW1lcnNbIGluZGV4IF0uYW5pbS5zdG9wKCBnb3RvRW5kICk7CisgICAgICAg
ICAgICAgICAgICAgIGRlcXVldWUgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgdGltZXJz
LnNwbGljZSggaW5kZXgsIDEgKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIC8vIFN0YXJ0IHRoZSBuZXh0IGluIHRoZSBxdWV1ZSBpZiB0aGUgbGFzdCBz
dGVwIHdhc24ndCBmb3JjZWQuCisgICAgICAgICAgICAvLyBUaW1lcnMgY3VycmVudGx5IHdpbGwg
Y2FsbCB0aGVpciBjb21wbGV0ZSBjYWxsYmFja3MsIHdoaWNoCisgICAgICAgICAgICAvLyB3aWxs
IGRlcXVldWUgYnV0IG9ubHkgaWYgdGhleSB3ZXJlIGdvdG9FbmQuCisgICAgICAgICAgICBpZiAo
IGRlcXVldWUgfHwgIWdvdG9FbmQgKSB7CisgICAgICAgICAgICAgICAgalF1ZXJ5LmRlcXVldWUo
IHRoaXMsIHR5cGUgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSApOworICAgIH0sCisgICAg
ZmluaXNoOiBmdW5jdGlvbiggdHlwZSApIHsKKyAgICAgICAgaWYgKCB0eXBlICE9PSBmYWxzZSAp
IHsKKyAgICAgICAgICAgIHR5cGUgPSB0eXBlIHx8ICJmeCI7CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB2YXIgaW5kZXgsCisg
ICAgICAgICAgICAgICAgZGF0YSA9IGRhdGFQcml2LmdldCggdGhpcyApLAorICAgICAgICAgICAg
ICAgIHF1ZXVlID0gZGF0YVsgdHlwZSArICJxdWV1ZSIgXSwKKyAgICAgICAgICAgICAgICBob29r
cyA9IGRhdGFbIHR5cGUgKyAicXVldWVIb29rcyIgXSwKKyAgICAgICAgICAgICAgICB0aW1lcnMg
PSBqUXVlcnkudGltZXJzLAorICAgICAgICAgICAgICAgIGxlbmd0aCA9IHF1ZXVlID8gcXVldWUu
bGVuZ3RoIDogMDsKKworICAgICAgICAgICAgLy8gRW5hYmxlIGZpbmlzaGluZyBmbGFnIG9uIHBy
aXZhdGUgZGF0YQorICAgICAgICAgICAgZGF0YS5maW5pc2ggPSB0cnVlOworCisgICAgICAgICAg
ICAvLyBFbXB0eSB0aGUgcXVldWUgZmlyc3QKKyAgICAgICAgICAgIGpRdWVyeS5xdWV1ZSggdGhp
cywgdHlwZSwgW10gKTsKKworICAgICAgICAgICAgaWYgKCBob29rcyAmJiBob29rcy5zdG9wICkg
eworICAgICAgICAgICAgICAgIGhvb2tzLnN0b3AuY2FsbCggdGhpcywgdHJ1ZSApOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAvLyBMb29rIGZvciBhbnkgYWN0aXZlIGFuaW1hdGlvbnMs
IGFuZCBmaW5pc2ggdGhlbQorICAgICAgICAgICAgZm9yICggaW5kZXggPSB0aW1lcnMubGVuZ3Ro
OyBpbmRleC0tOyApIHsKKyAgICAgICAgICAgICAgICBpZiAoIHRpbWVyc1sgaW5kZXggXS5lbGVt
ID09PSB0aGlzICYmIHRpbWVyc1sgaW5kZXggXS5xdWV1ZSA9PT0gdHlwZSApIHsKKyAgICAgICAg
ICAgICAgICAgICAgdGltZXJzWyBpbmRleCBdLmFuaW0uc3RvcCggdHJ1ZSApOworICAgICAgICAg
ICAgICAgICAgICB0aW1lcnMuc3BsaWNlKCBpbmRleCwgMSApOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gTG9vayBmb3IgYW55IGFuaW1hdGlvbnMg
aW4gdGhlIG9sZCBxdWV1ZSBhbmQgZmluaXNoIHRoZW0KKyAgICAgICAgICAgIGZvciAoIGluZGV4
ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7CisgICAgICAgICAgICAgICAgaWYgKCBx
dWV1ZVsgaW5kZXggXSAmJiBxdWV1ZVsgaW5kZXggXS5maW5pc2ggKSB7CisgICAgICAgICAgICAg
ICAgICAgIHF1ZXVlWyBpbmRleCBdLmZpbmlzaC5jYWxsKCB0aGlzICk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUdXJuIG9mZiBmaW5pc2hpbmcg
ZmxhZworICAgICAgICAgICAgZGVsZXRlIGRhdGEuZmluaXNoOworICAgICAgICB9ICk7CisgICAg
fQorfSApOworCitqUXVlcnkuZWFjaCggWyAidG9nZ2xlIiwgInNob3ciLCAiaGlkZSIgXSwgZnVu
Y3Rpb24oIGksIG5hbWUgKSB7CisgICAgdmFyIGNzc0ZuID0galF1ZXJ5LmZuWyBuYW1lIF07Cisg
ICAgalF1ZXJ5LmZuWyBuYW1lIF0gPSBmdW5jdGlvbiggc3BlZWQsIGVhc2luZywgY2FsbGJhY2sg
KSB7CisgICAgICAgIHJldHVybiBzcGVlZCA9PSBudWxsIHx8IHR5cGVvZiBzcGVlZCA9PT0gImJv
b2xlYW4iID8KKyAgICAgICAgICAgIGNzc0ZuLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKSA6Cisg
ICAgICAgICAgICB0aGlzLmFuaW1hdGUoIGdlbkZ4KCBuYW1lLCB0cnVlICksIHNwZWVkLCBlYXNp
bmcsIGNhbGxiYWNrICk7CisgICAgfTsKK30gKTsKKworLy8gR2VuZXJhdGUgc2hvcnRjdXRzIGZv
ciBjdXN0b20gYW5pbWF0aW9ucworalF1ZXJ5LmVhY2goIHsKKyAgICBzbGlkZURvd246IGdlbkZ4
KCAic2hvdyIgKSwKKyAgICBzbGlkZVVwOiBnZW5GeCggImhpZGUiICksCisgICAgc2xpZGVUb2dn
bGU6IGdlbkZ4KCAidG9nZ2xlIiApLAorICAgIGZhZGVJbjogeyBvcGFjaXR5OiAic2hvdyIgfSwK
KyAgICBmYWRlT3V0OiB7IG9wYWNpdHk6ICJoaWRlIiB9LAorICAgIGZhZGVUb2dnbGU6IHsgb3Bh
Y2l0eTogInRvZ2dsZSIgfQorfSwgZnVuY3Rpb24oIG5hbWUsIHByb3BzICkgeworICAgIGpRdWVy
eS5mblsgbmFtZSBdID0gZnVuY3Rpb24oIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICkgeworICAg
ICAgICByZXR1cm4gdGhpcy5hbmltYXRlKCBwcm9wcywgc3BlZWQsIGVhc2luZywgY2FsbGJhY2sg
KTsKKyAgICB9OworfSApOworCitqUXVlcnkudGltZXJzID0gW107CitqUXVlcnkuZngudGljayA9
IGZ1bmN0aW9uKCkgeworICAgIHZhciB0aW1lciwKKyAgICAgICAgaSA9IDAsCisgICAgICAgIHRp
bWVycyA9IGpRdWVyeS50aW1lcnM7CisKKyAgICBmeE5vdyA9IGpRdWVyeS5ub3coKTsKKworICAg
IGZvciAoIDsgaSA8IHRpbWVycy5sZW5ndGg7IGkrKyApIHsKKyAgICAgICAgdGltZXIgPSB0aW1l
cnNbIGkgXTsKKworICAgICAgICAvLyBDaGVja3MgdGhlIHRpbWVyIGhhcyBub3QgYWxyZWFkeSBi
ZWVuIHJlbW92ZWQKKyAgICAgICAgaWYgKCAhdGltZXIoKSAmJiB0aW1lcnNbIGkgXSA9PT0gdGlt
ZXIgKSB7CisgICAgICAgICAgICB0aW1lcnMuc3BsaWNlKCBpLS0sIDEgKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGlmICggIXRpbWVycy5sZW5ndGggKSB7CisgICAgICAgIGpRdWVyeS5meC5z
dG9wKCk7CisgICAgfQorICAgIGZ4Tm93ID0gdW5kZWZpbmVkOworfTsKKworalF1ZXJ5LmZ4LnRp
bWVyID0gZnVuY3Rpb24oIHRpbWVyICkgeworICAgIGpRdWVyeS50aW1lcnMucHVzaCggdGltZXIg
KTsKKyAgICBpZiAoIHRpbWVyKCkgKSB7CisgICAgICAgIGpRdWVyeS5meC5zdGFydCgpOworICAg
IH0gZWxzZSB7CisgICAgICAgIGpRdWVyeS50aW1lcnMucG9wKCk7CisgICAgfQorfTsKKworalF1
ZXJ5LmZ4LmludGVydmFsID0gMTM7CitqUXVlcnkuZnguc3RhcnQgPSBmdW5jdGlvbigpIHsKKyAg
ICBpZiAoICF0aW1lcklkICkgeworICAgICAgICB0aW1lcklkID0gd2luZG93LnJlcXVlc3RBbmlt
YXRpb25GcmFtZSA/CisgICAgICAgICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCBy
YWYgKSA6CisgICAgICAgICAgICB3aW5kb3cuc2V0SW50ZXJ2YWwoIGpRdWVyeS5meC50aWNrLCBq
UXVlcnkuZnguaW50ZXJ2YWwgKTsKKyAgICB9Cit9OworCitqUXVlcnkuZnguc3RvcCA9IGZ1bmN0
aW9uKCkgeworICAgIGlmICggd2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lICkgeworICAgICAg
ICB3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUoIHRpbWVySWQgKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbCggdGltZXJJZCApOworICAgIH0KKworICAgIHRp
bWVySWQgPSBudWxsOworfTsKKworalF1ZXJ5LmZ4LnNwZWVkcyA9IHsKKyAgICBzbG93OiA2MDAs
CisgICAgZmFzdDogMjAwLAorCisgICAgLy8gRGVmYXVsdCBzcGVlZAorICAgIF9kZWZhdWx0OiA0
MDAKK307CisKK3JldHVybiBqUXVlcnk7Cit9ICk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9q
cXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvZWZmZWN0cy9Ud2Vlbi5qcyBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9lZmZlY3RzL1R3ZWVuLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjM3MDY1Y2EzMTViNGQ0YzBjNzRmOTA4YTg2NmMxMTk3ZGUxZmI2ZjQKLS0tIC9kZXYv
bnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvZWZm
ZWN0cy9Ud2Vlbi5qcwpAQCAtMCwwICsxLDEyMyBAQAorZGVmaW5lKCBbCisgICAgIi4uL2NvcmUi
LAorICAgICIuLi9jc3MiCitdLCBmdW5jdGlvbiggalF1ZXJ5ICkgeworCisidXNlIHN0cmljdCI7
CisKK2Z1bmN0aW9uIFR3ZWVuKCBlbGVtLCBvcHRpb25zLCBwcm9wLCBlbmQsIGVhc2luZyApIHsK
KyAgICByZXR1cm4gbmV3IFR3ZWVuLnByb3RvdHlwZS5pbml0KCBlbGVtLCBvcHRpb25zLCBwcm9w
LCBlbmQsIGVhc2luZyApOworfQoralF1ZXJ5LlR3ZWVuID0gVHdlZW47CisKK1R3ZWVuLnByb3Rv
dHlwZSA9IHsKKyAgICBjb25zdHJ1Y3RvcjogVHdlZW4sCisgICAgaW5pdDogZnVuY3Rpb24oIGVs
ZW0sIG9wdGlvbnMsIHByb3AsIGVuZCwgZWFzaW5nLCB1bml0ICkgeworICAgICAgICB0aGlzLmVs
ZW0gPSBlbGVtOworICAgICAgICB0aGlzLnByb3AgPSBwcm9wOworICAgICAgICB0aGlzLmVhc2lu
ZyA9IGVhc2luZyB8fCBqUXVlcnkuZWFzaW5nLl9kZWZhdWx0OworICAgICAgICB0aGlzLm9wdGlv
bnMgPSBvcHRpb25zOworICAgICAgICB0aGlzLnN0YXJ0ID0gdGhpcy5ub3cgPSB0aGlzLmN1cigp
OworICAgICAgICB0aGlzLmVuZCA9IGVuZDsKKyAgICAgICAgdGhpcy51bml0ID0gdW5pdCB8fCAo
IGpRdWVyeS5jc3NOdW1iZXJbIHByb3AgXSA/ICIiIDogInB4IiApOworICAgIH0sCisgICAgY3Vy
OiBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIGhvb2tzID0gVHdlZW4ucHJvcEhvb2tzWyB0aGlz
LnByb3AgXTsKKworICAgICAgICByZXR1cm4gaG9va3MgJiYgaG9va3MuZ2V0ID8KKyAgICAgICAg
ICAgIGhvb2tzLmdldCggdGhpcyApIDoKKyAgICAgICAgICAgIFR3ZWVuLnByb3BIb29rcy5fZGVm
YXVsdC5nZXQoIHRoaXMgKTsKKyAgICB9LAorICAgIHJ1bjogZnVuY3Rpb24oIHBlcmNlbnQgKSB7
CisgICAgICAgIHZhciBlYXNlZCwKKyAgICAgICAgICAgIGhvb2tzID0gVHdlZW4ucHJvcEhvb2tz
WyB0aGlzLnByb3AgXTsKKworICAgICAgICBpZiAoIHRoaXMub3B0aW9ucy5kdXJhdGlvbiApIHsK
KyAgICAgICAgICAgIHRoaXMucG9zID0gZWFzZWQgPSBqUXVlcnkuZWFzaW5nWyB0aGlzLmVhc2lu
ZyBdKAorICAgICAgICAgICAgICAgIHBlcmNlbnQsIHRoaXMub3B0aW9ucy5kdXJhdGlvbiAqIHBl
cmNlbnQsIDAsIDEsIHRoaXMub3B0aW9ucy5kdXJhdGlvbgorICAgICAgICAgICAgKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMucG9zID0gZWFzZWQgPSBwZXJjZW50OworICAg
ICAgICB9CisgICAgICAgIHRoaXMubm93ID0gKCB0aGlzLmVuZCAtIHRoaXMuc3RhcnQgKSAqIGVh
c2VkICsgdGhpcy5zdGFydDsKKworICAgICAgICBpZiAoIHRoaXMub3B0aW9ucy5zdGVwICkgewor
ICAgICAgICAgICAgdGhpcy5vcHRpb25zLnN0ZXAuY2FsbCggdGhpcy5lbGVtLCB0aGlzLm5vdywg
dGhpcyApOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCBob29rcyAmJiBob29rcy5zZXQgKSB7
CisgICAgICAgICAgICBob29rcy5zZXQoIHRoaXMgKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIFR3ZWVuLnByb3BIb29rcy5fZGVmYXVsdC5zZXQoIHRoaXMgKTsKKyAgICAgICAgfQor
ICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9Cit9OworCitUd2Vlbi5wcm90b3R5cGUuaW5pdC5w
cm90b3R5cGUgPSBUd2Vlbi5wcm90b3R5cGU7CisKK1R3ZWVuLnByb3BIb29rcyA9IHsKKyAgICBf
ZGVmYXVsdDogeworICAgICAgICBnZXQ6IGZ1bmN0aW9uKCB0d2VlbiApIHsKKyAgICAgICAgICAg
IHZhciByZXN1bHQ7CisKKyAgICAgICAgICAgIC8vIFVzZSBhIHByb3BlcnR5IG9uIHRoZSBlbGVt
ZW50IGRpcmVjdGx5IHdoZW4gaXQgaXMgbm90IGEgRE9NIGVsZW1lbnQsCisgICAgICAgICAgICAv
LyBvciB3aGVuIHRoZXJlIGlzIG5vIG1hdGNoaW5nIHN0eWxlIHByb3BlcnR5IHRoYXQgZXhpc3Rz
LgorICAgICAgICAgICAgaWYgKCB0d2Vlbi5lbGVtLm5vZGVUeXBlICE9PSAxIHx8CisgICAgICAg
ICAgICAgICAgdHdlZW4uZWxlbVsgdHdlZW4ucHJvcCBdICE9IG51bGwgJiYgdHdlZW4uZWxlbS5z
dHlsZVsgdHdlZW4ucHJvcCBdID09IG51bGwgKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHR3
ZWVuLmVsZW1bIHR3ZWVuLnByb3AgXTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8g
UGFzc2luZyBhbiBlbXB0eSBzdHJpbmcgYXMgYSAzcmQgcGFyYW1ldGVyIHRvIC5jc3Mgd2lsbCBh
dXRvbWF0aWNhbGx5CisgICAgICAgICAgICAvLyBhdHRlbXB0IGEgcGFyc2VGbG9hdCBhbmQgZmFs
bGJhY2sgdG8gYSBzdHJpbmcgaWYgdGhlIHBhcnNlIGZhaWxzLgorICAgICAgICAgICAgLy8gU2lt
cGxlIHZhbHVlcyBzdWNoIGFzICIxMHB4IiBhcmUgcGFyc2VkIHRvIEZsb2F0OworICAgICAgICAg
ICAgLy8gY29tcGxleCB2YWx1ZXMgc3VjaCBhcyAicm90YXRlKDFyYWQpIiBhcmUgcmV0dXJuZWQg
YXMtaXMuCisgICAgICAgICAgICByZXN1bHQgPSBqUXVlcnkuY3NzKCB0d2Vlbi5lbGVtLCB0d2Vl
bi5wcm9wLCAiIiApOworCisgICAgICAgICAgICAvLyBFbXB0eSBzdHJpbmdzLCBudWxsLCB1bmRl
ZmluZWQgYW5kICJhdXRvIiBhcmUgY29udmVydGVkIHRvIDAuCisgICAgICAgICAgICByZXR1cm4g
IXJlc3VsdCB8fCByZXN1bHQgPT09ICJhdXRvIiA/IDAgOiByZXN1bHQ7CisgICAgICAgIH0sCisg
ICAgICAgIHNldDogZnVuY3Rpb24oIHR3ZWVuICkgeworCisgICAgICAgICAgICAvLyBVc2Ugc3Rl
cCBob29rIGZvciBiYWNrIGNvbXBhdC4KKyAgICAgICAgICAgIC8vIFVzZSBjc3NIb29rIGlmIGl0
cyB0aGVyZS4KKyAgICAgICAgICAgIC8vIFVzZSAuc3R5bGUgaWYgYXZhaWxhYmxlIGFuZCB1c2Ug
cGxhaW4gcHJvcGVydGllcyB3aGVyZSBhdmFpbGFibGUuCisgICAgICAgICAgICBpZiAoIGpRdWVy
eS5meC5zdGVwWyB0d2Vlbi5wcm9wIF0gKSB7CisgICAgICAgICAgICAgICAgalF1ZXJ5LmZ4LnN0
ZXBbIHR3ZWVuLnByb3AgXSggdHdlZW4gKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoIHR3ZWVu
LmVsZW0ubm9kZVR5cGUgPT09IDEgJiYKKyAgICAgICAgICAgICAgICAoIHR3ZWVuLmVsZW0uc3R5
bGVbIGpRdWVyeS5jc3NQcm9wc1sgdHdlZW4ucHJvcCBdIF0gIT0gbnVsbCB8fAorICAgICAgICAg
ICAgICAgICAgICBqUXVlcnkuY3NzSG9va3NbIHR3ZWVuLnByb3AgXSApICkgeworICAgICAgICAg
ICAgICAgIGpRdWVyeS5zdHlsZSggdHdlZW4uZWxlbSwgdHdlZW4ucHJvcCwgdHdlZW4ubm93ICsg
dHdlZW4udW5pdCApOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB0d2Vl
bi5lbGVtWyB0d2Vlbi5wcm9wIF0gPSB0d2Vlbi5ub3c7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9Cit9OworCisvLyBTdXBwb3J0OiBJRSA8PTkgb25seQorLy8gUGFuaWMgYmFzZWQg
YXBwcm9hY2ggdG8gc2V0dGluZyB0aGluZ3Mgb24gZGlzY29ubmVjdGVkIG5vZGVzCitUd2Vlbi5w
cm9wSG9va3Muc2Nyb2xsVG9wID0gVHdlZW4ucHJvcEhvb2tzLnNjcm9sbExlZnQgPSB7CisgICAg
c2V0OiBmdW5jdGlvbiggdHdlZW4gKSB7CisgICAgICAgIGlmICggdHdlZW4uZWxlbS5ub2RlVHlw
ZSAmJiB0d2Vlbi5lbGVtLnBhcmVudE5vZGUgKSB7CisgICAgICAgICAgICB0d2Vlbi5lbGVtWyB0
d2Vlbi5wcm9wIF0gPSB0d2Vlbi5ub3c7CisgICAgICAgIH0KKyAgICB9Cit9OworCitqUXVlcnku
ZWFzaW5nID0geworICAgIGxpbmVhcjogZnVuY3Rpb24oIHAgKSB7CisgICAgICAgIHJldHVybiBw
OworICAgIH0sCisgICAgc3dpbmc6IGZ1bmN0aW9uKCBwICkgeworICAgICAgICByZXR1cm4gMC41
IC0gTWF0aC5jb3MoIHAgKiBNYXRoLlBJICkgLyAyOworICAgIH0sCisgICAgX2RlZmF1bHQ6ICJz
d2luZyIKK307CisKK2pRdWVyeS5meCA9IFR3ZWVuLnByb3RvdHlwZS5pbml0OworCisvLyBCYWNr
IGNvbXBhdCA8MS44IGV4dGVuc2lvbiBwb2ludAoralF1ZXJ5LmZ4LnN0ZXAgPSB7fTsKKworfSAp
OwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3Jj
L2VmZmVjdHMvYW5pbWF0ZWRTZWxlY3Rvci5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21v
ZHVsZXMvanF1ZXJ5L3NyYy9lZmZlY3RzL2FuaW1hdGVkU2VsZWN0b3IuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
N2YyYWRmN2M5OGZlZmEzZGFhNDk5NmI2M2YyMzRiM2M5MmJhMzM3NwotLS0gL2Rldi9udWxsCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9lZmZlY3RzL2Fu
aW1hdGVkU2VsZWN0b3IuanMKQEAgLTAsMCArMSwxNSBAQAorZGVmaW5lKCBbCisgICAgIi4uL2Nv
cmUiLAorICAgICIuLi9zZWxlY3RvciIsCisgICAgIi4uL2VmZmVjdHMiCitdLCBmdW5jdGlvbigg
alF1ZXJ5ICkgeworCisidXNlIHN0cmljdCI7CisKK2pRdWVyeS5leHByLnBzZXVkb3MuYW5pbWF0
ZWQgPSBmdW5jdGlvbiggZWxlbSApIHsKKyAgICByZXR1cm4galF1ZXJ5LmdyZXAoIGpRdWVyeS50
aW1lcnMsIGZ1bmN0aW9uKCBmbiApIHsKKyAgICAgICAgcmV0dXJuIGVsZW0gPT09IGZuLmVsZW07
CisgICAgfSApLmxlbmd0aDsKK307CisKK30gKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2px
dWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9ldmVudC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVy
eS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9ldmVudC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZGJiZDYxNTc0
NmUwNzg5NDZjYjJiNDA0NmRhZjAwNDJkNDQ1MjEzCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2V2ZW50LmpzCkBAIC0wLDAgKzEs
NzQ1IEBACitkZWZpbmUoIFsKKyAgICAiLi9jb3JlIiwKKyAgICAiLi92YXIvZG9jdW1lbnQiLAor
ICAgICIuL3Zhci9kb2N1bWVudEVsZW1lbnQiLAorICAgICIuL3Zhci9ybm90aHRtbHdoaXRlIiwK
KyAgICAiLi92YXIvc2xpY2UiLAorICAgICIuL2RhdGEvdmFyL2RhdGFQcml2IiwKKworICAgICIu
L2NvcmUvaW5pdCIsCisgICAgIi4vc2VsZWN0b3IiCitdLCBmdW5jdGlvbiggalF1ZXJ5LCBkb2N1
bWVudCwgZG9jdW1lbnRFbGVtZW50LCBybm90aHRtbHdoaXRlLCBzbGljZSwgZGF0YVByaXYgKSB7
CisKKyJ1c2Ugc3RyaWN0IjsKKwordmFyCisgICAgcmtleUV2ZW50ID0gL15rZXkvLAorICAgIHJt
b3VzZUV2ZW50ID0gL14oPzptb3VzZXxwb2ludGVyfGNvbnRleHRtZW51fGRyYWd8ZHJvcCl8Y2xp
Y2svLAorICAgIHJ0eXBlbmFtZXNwYWNlID0gL14oW14uXSopKD86XC4oLispfCkvOworCitmdW5j
dGlvbiByZXR1cm5UcnVlKCkgeworICAgIHJldHVybiB0cnVlOworfQorCitmdW5jdGlvbiByZXR1
cm5GYWxzZSgpIHsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKy8vIFN1cHBvcnQ6IElFIDw9OSBv
bmx5CisvLyBTZWUgIzEzMzkzIGZvciBtb3JlIGluZm8KK2Z1bmN0aW9uIHNhZmVBY3RpdmVFbGVt
ZW50KCkgeworICAgIHRyeSB7CisgICAgICAgIHJldHVybiBkb2N1bWVudC5hY3RpdmVFbGVtZW50
OworICAgIH0gY2F0Y2ggKCBlcnIgKSB7IH0KK30KKworZnVuY3Rpb24gb24oIGVsZW0sIHR5cGVz
LCBzZWxlY3RvciwgZGF0YSwgZm4sIG9uZSApIHsKKyAgICB2YXIgb3JpZ0ZuLCB0eXBlOworCisg
ICAgLy8gVHlwZXMgY2FuIGJlIGEgbWFwIG9mIHR5cGVzL2hhbmRsZXJzCisgICAgaWYgKCB0eXBl
b2YgdHlwZXMgPT09ICJvYmplY3QiICkgeworCisgICAgICAgIC8vICggdHlwZXMtT2JqZWN0LCBz
ZWxlY3RvciwgZGF0YSApCisgICAgICAgIGlmICggdHlwZW9mIHNlbGVjdG9yICE9PSAic3RyaW5n
IiApIHsKKworICAgICAgICAgICAgLy8gKCB0eXBlcy1PYmplY3QsIGRhdGEgKQorICAgICAgICAg
ICAgZGF0YSA9IGRhdGEgfHwgc2VsZWN0b3I7CisgICAgICAgICAgICBzZWxlY3RvciA9IHVuZGVm
aW5lZDsKKyAgICAgICAgfQorICAgICAgICBmb3IgKCB0eXBlIGluIHR5cGVzICkgeworICAgICAg
ICAgICAgb24oIGVsZW0sIHR5cGUsIHNlbGVjdG9yLCBkYXRhLCB0eXBlc1sgdHlwZSBdLCBvbmUg
KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZWxlbTsKKyAgICB9CisKKyAgICBpZiAoIGRh
dGEgPT0gbnVsbCAmJiBmbiA9PSBudWxsICkgeworCisgICAgICAgIC8vICggdHlwZXMsIGZuICkK
KyAgICAgICAgZm4gPSBzZWxlY3RvcjsKKyAgICAgICAgZGF0YSA9IHNlbGVjdG9yID0gdW5kZWZp
bmVkOworICAgIH0gZWxzZSBpZiAoIGZuID09IG51bGwgKSB7CisgICAgICAgIGlmICggdHlwZW9m
IHNlbGVjdG9yID09PSAic3RyaW5nIiApIHsKKworICAgICAgICAgICAgLy8gKCB0eXBlcywgc2Vs
ZWN0b3IsIGZuICkKKyAgICAgICAgICAgIGZuID0gZGF0YTsKKyAgICAgICAgICAgIGRhdGEgPSB1
bmRlZmluZWQ7CisgICAgICAgIH0gZWxzZSB7CisKKyAgICAgICAgICAgIC8vICggdHlwZXMsIGRh
dGEsIGZuICkKKyAgICAgICAgICAgIGZuID0gZGF0YTsKKyAgICAgICAgICAgIGRhdGEgPSBzZWxl
Y3RvcjsKKyAgICAgICAgICAgIHNlbGVjdG9yID0gdW5kZWZpbmVkOworICAgICAgICB9CisgICAg
fQorICAgIGlmICggZm4gPT09IGZhbHNlICkgeworICAgICAgICBmbiA9IHJldHVybkZhbHNlOwor
ICAgIH0gZWxzZSBpZiAoICFmbiApIHsKKyAgICAgICAgcmV0dXJuIGVsZW07CisgICAgfQorCisg
ICAgaWYgKCBvbmUgPT09IDEgKSB7CisgICAgICAgIG9yaWdGbiA9IGZuOworICAgICAgICBmbiA9
IGZ1bmN0aW9uKCBldmVudCApIHsKKworICAgICAgICAgICAgLy8gQ2FuIHVzZSBhbiBlbXB0eSBz
ZXQsIHNpbmNlIGV2ZW50IGNvbnRhaW5zIHRoZSBpbmZvCisgICAgICAgICAgICBqUXVlcnkoKS5v
ZmYoIGV2ZW50ICk7CisgICAgICAgICAgICByZXR1cm4gb3JpZ0ZuLmFwcGx5KCB0aGlzLCBhcmd1
bWVudHMgKTsKKyAgICAgICAgfTsKKworICAgICAgICAvLyBVc2Ugc2FtZSBndWlkIHNvIGNhbGxl
ciBjYW4gcmVtb3ZlIHVzaW5nIG9yaWdGbgorICAgICAgICBmbi5ndWlkID0gb3JpZ0ZuLmd1aWQg
fHwgKCBvcmlnRm4uZ3VpZCA9IGpRdWVyeS5ndWlkKysgKTsKKyAgICB9CisgICAgcmV0dXJuIGVs
ZW0uZWFjaCggZnVuY3Rpb24oKSB7CisgICAgICAgIGpRdWVyeS5ldmVudC5hZGQoIHRoaXMsIHR5
cGVzLCBmbiwgZGF0YSwgc2VsZWN0b3IgKTsKKyAgICB9ICk7Cit9CisKKy8qCisgKiBIZWxwZXIg
ZnVuY3Rpb25zIGZvciBtYW5hZ2luZyBldmVudHMgLS0gbm90IHBhcnQgb2YgdGhlIHB1YmxpYyBp
bnRlcmZhY2UuCisgKiBQcm9wcyB0byBEZWFuIEVkd2FyZHMnIGFkZEV2ZW50IGxpYnJhcnkgZm9y
IG1hbnkgb2YgdGhlIGlkZWFzLgorICovCitqUXVlcnkuZXZlbnQgPSB7CisKKyAgICBnbG9iYWw6
IHt9LAorCisgICAgYWRkOiBmdW5jdGlvbiggZWxlbSwgdHlwZXMsIGhhbmRsZXIsIGRhdGEsIHNl
bGVjdG9yICkgeworCisgICAgICAgIHZhciBoYW5kbGVPYmpJbiwgZXZlbnRIYW5kbGUsIHRtcCwK
KyAgICAgICAgICAgIGV2ZW50cywgdCwgaGFuZGxlT2JqLAorICAgICAgICAgICAgc3BlY2lhbCwg
aGFuZGxlcnMsIHR5cGUsIG5hbWVzcGFjZXMsIG9yaWdUeXBlLAorICAgICAgICAgICAgZWxlbURh
dGEgPSBkYXRhUHJpdi5nZXQoIGVsZW0gKTsKKworICAgICAgICAvLyBEb24ndCBhdHRhY2ggZXZl
bnRzIHRvIG5vRGF0YSBvciB0ZXh0L2NvbW1lbnQgbm9kZXMgKGJ1dCBhbGxvdyBwbGFpbiBvYmpl
Y3RzKQorICAgICAgICBpZiAoICFlbGVtRGF0YSApIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIC8vIENhbGxlciBjYW4gcGFzcyBpbiBhbiBvYmplY3Qgb2YgY3Vz
dG9tIGRhdGEgaW4gbGlldSBvZiB0aGUgaGFuZGxlcgorICAgICAgICBpZiAoIGhhbmRsZXIuaGFu
ZGxlciApIHsKKyAgICAgICAgICAgIGhhbmRsZU9iakluID0gaGFuZGxlcjsKKyAgICAgICAgICAg
IGhhbmRsZXIgPSBoYW5kbGVPYmpJbi5oYW5kbGVyOworICAgICAgICAgICAgc2VsZWN0b3IgPSBo
YW5kbGVPYmpJbi5zZWxlY3RvcjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEVuc3VyZSB0aGF0
IGludmFsaWQgc2VsZWN0b3JzIHRocm93IGV4Y2VwdGlvbnMgYXQgYXR0YWNoIHRpbWUKKyAgICAg
ICAgLy8gRXZhbHVhdGUgYWdhaW5zdCBkb2N1bWVudEVsZW1lbnQgaW4gY2FzZSBlbGVtIGlzIGEg
bm9uLWVsZW1lbnQgbm9kZSAoZS5nLiwgZG9jdW1lbnQpCisgICAgICAgIGlmICggc2VsZWN0b3Ig
KSB7CisgICAgICAgICAgICBqUXVlcnkuZmluZC5tYXRjaGVzU2VsZWN0b3IoIGRvY3VtZW50RWxl
bWVudCwgc2VsZWN0b3IgKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0
IHRoZSBoYW5kbGVyIGhhcyBhIHVuaXF1ZSBJRCwgdXNlZCB0byBmaW5kL3JlbW92ZSBpdCBsYXRl
cgorICAgICAgICBpZiAoICFoYW5kbGVyLmd1aWQgKSB7CisgICAgICAgICAgICBoYW5kbGVyLmd1
aWQgPSBqUXVlcnkuZ3VpZCsrOworICAgICAgICB9CisKKyAgICAgICAgLy8gSW5pdCB0aGUgZWxl
bWVudCdzIGV2ZW50IHN0cnVjdHVyZSBhbmQgbWFpbiBoYW5kbGVyLCBpZiB0aGlzIGlzIHRoZSBm
aXJzdAorICAgICAgICBpZiAoICEoIGV2ZW50cyA9IGVsZW1EYXRhLmV2ZW50cyApICkgeworICAg
ICAgICAgICAgZXZlbnRzID0gZWxlbURhdGEuZXZlbnRzID0ge307CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKCAhKCBldmVudEhhbmRsZSA9IGVsZW1EYXRhLmhhbmRsZSApICkgeworICAgICAgICAg
ICAgZXZlbnRIYW5kbGUgPSBlbGVtRGF0YS5oYW5kbGUgPSBmdW5jdGlvbiggZSApIHsKKworICAg
ICAgICAgICAgICAgIC8vIERpc2NhcmQgdGhlIHNlY29uZCBldmVudCBvZiBhIGpRdWVyeS5ldmVu
dC50cmlnZ2VyKCkgYW5kCisgICAgICAgICAgICAgICAgLy8gd2hlbiBhbiBldmVudCBpcyBjYWxs
ZWQgYWZ0ZXIgYSBwYWdlIGhhcyB1bmxvYWRlZAorICAgICAgICAgICAgICAgIHJldHVybiB0eXBl
b2YgalF1ZXJ5ICE9PSAidW5kZWZpbmVkIiAmJiBqUXVlcnkuZXZlbnQudHJpZ2dlcmVkICE9PSBl
LnR5cGUgPworICAgICAgICAgICAgICAgICAgICBqUXVlcnkuZXZlbnQuZGlzcGF0Y2guYXBwbHko
IGVsZW0sIGFyZ3VtZW50cyApIDogdW5kZWZpbmVkOworICAgICAgICAgICAgfTsKKyAgICAgICAg
fQorCisgICAgICAgIC8vIEhhbmRsZSBtdWx0aXBsZSBldmVudHMgc2VwYXJhdGVkIGJ5IGEgc3Bh
Y2UKKyAgICAgICAgdHlwZXMgPSAoIHR5cGVzIHx8ICIiICkubWF0Y2goIHJub3RodG1sd2hpdGUg
KSB8fCBbICIiIF07CisgICAgICAgIHQgPSB0eXBlcy5sZW5ndGg7CisgICAgICAgIHdoaWxlICgg
dC0tICkgeworICAgICAgICAgICAgdG1wID0gcnR5cGVuYW1lc3BhY2UuZXhlYyggdHlwZXNbIHQg
XSApIHx8IFtdOworICAgICAgICAgICAgdHlwZSA9IG9yaWdUeXBlID0gdG1wWyAxIF07CisgICAg
ICAgICAgICBuYW1lc3BhY2VzID0gKCB0bXBbIDIgXSB8fCAiIiApLnNwbGl0KCAiLiIgKS5zb3J0
KCk7CisKKyAgICAgICAgICAgIC8vIFRoZXJlICptdXN0KiBiZSBhIHR5cGUsIG5vIGF0dGFjaGlu
ZyBuYW1lc3BhY2Utb25seSBoYW5kbGVycworICAgICAgICAgICAgaWYgKCAhdHlwZSApIHsKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8g
SWYgZXZlbnQgY2hhbmdlcyBpdHMgdHlwZSwgdXNlIHRoZSBzcGVjaWFsIGV2ZW50IGhhbmRsZXJz
IGZvciB0aGUgY2hhbmdlZCB0eXBlCisgICAgICAgICAgICBzcGVjaWFsID0galF1ZXJ5LmV2ZW50
LnNwZWNpYWxbIHR5cGUgXSB8fCB7fTsKKworICAgICAgICAgICAgLy8gSWYgc2VsZWN0b3IgZGVm
aW5lZCwgZGV0ZXJtaW5lIHNwZWNpYWwgZXZlbnQgYXBpIHR5cGUsIG90aGVyd2lzZSBnaXZlbiB0
eXBlCisgICAgICAgICAgICB0eXBlID0gKCBzZWxlY3RvciA/IHNwZWNpYWwuZGVsZWdhdGVUeXBl
IDogc3BlY2lhbC5iaW5kVHlwZSApIHx8IHR5cGU7CisKKyAgICAgICAgICAgIC8vIFVwZGF0ZSBz
cGVjaWFsIGJhc2VkIG9uIG5ld2x5IHJlc2V0IHR5cGUKKyAgICAgICAgICAgIHNwZWNpYWwgPSBq
UXVlcnkuZXZlbnQuc3BlY2lhbFsgdHlwZSBdIHx8IHt9OworCisgICAgICAgICAgICAvLyBoYW5k
bGVPYmogaXMgcGFzc2VkIHRvIGFsbCBldmVudCBoYW5kbGVycworICAgICAgICAgICAgaGFuZGxl
T2JqID0galF1ZXJ5LmV4dGVuZCggeworICAgICAgICAgICAgICAgIHR5cGU6IHR5cGUsCisgICAg
ICAgICAgICAgICAgb3JpZ1R5cGU6IG9yaWdUeXBlLAorICAgICAgICAgICAgICAgIGRhdGE6IGRh
dGEsCisgICAgICAgICAgICAgICAgaGFuZGxlcjogaGFuZGxlciwKKyAgICAgICAgICAgICAgICBn
dWlkOiBoYW5kbGVyLmd1aWQsCisgICAgICAgICAgICAgICAgc2VsZWN0b3I6IHNlbGVjdG9yLAor
ICAgICAgICAgICAgICAgIG5lZWRzQ29udGV4dDogc2VsZWN0b3IgJiYgalF1ZXJ5LmV4cHIubWF0
Y2gubmVlZHNDb250ZXh0LnRlc3QoIHNlbGVjdG9yICksCisgICAgICAgICAgICAgICAgbmFtZXNw
YWNlOiBuYW1lc3BhY2VzLmpvaW4oICIuIiApCisgICAgICAgICAgICB9LCBoYW5kbGVPYmpJbiAp
OworCisgICAgICAgICAgICAvLyBJbml0IHRoZSBldmVudCBoYW5kbGVyIHF1ZXVlIGlmIHdlJ3Jl
IHRoZSBmaXJzdAorICAgICAgICAgICAgaWYgKCAhKCBoYW5kbGVycyA9IGV2ZW50c1sgdHlwZSBd
ICkgKSB7CisgICAgICAgICAgICAgICAgaGFuZGxlcnMgPSBldmVudHNbIHR5cGUgXSA9IFtdOwor
ICAgICAgICAgICAgICAgIGhhbmRsZXJzLmRlbGVnYXRlQ291bnQgPSAwOworCisgICAgICAgICAg
ICAgICAgLy8gT25seSB1c2UgYWRkRXZlbnRMaXN0ZW5lciBpZiB0aGUgc3BlY2lhbCBldmVudHMg
aGFuZGxlciByZXR1cm5zIGZhbHNlCisgICAgICAgICAgICAgICAgaWYgKCAhc3BlY2lhbC5zZXR1
cCB8fAorICAgICAgICAgICAgICAgICAgICBzcGVjaWFsLnNldHVwLmNhbGwoIGVsZW0sIGRhdGEs
IG5hbWVzcGFjZXMsIGV2ZW50SGFuZGxlICkgPT09IGZhbHNlICkgeworCisgICAgICAgICAgICAg
ICAgICAgIGlmICggZWxlbS5hZGRFdmVudExpc3RlbmVyICkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgZWxlbS5hZGRFdmVudExpc3RlbmVyKCB0eXBlLCBldmVudEhhbmRsZSApOworICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBpZiAoIHNwZWNpYWwuYWRkICkgeworICAgICAgICAgICAgICAgIHNwZWNpYWwuYWRk
LmNhbGwoIGVsZW0sIGhhbmRsZU9iaiApOworCisgICAgICAgICAgICAgICAgaWYgKCAhaGFuZGxl
T2JqLmhhbmRsZXIuZ3VpZCApIHsKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlT2JqLmhhbmRs
ZXIuZ3VpZCA9IGhhbmRsZXIuZ3VpZDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIC8vIEFkZCB0byB0aGUgZWxlbWVudCdzIGhhbmRsZXIgbGlzdCwgZGVs
ZWdhdGVzIGluIGZyb250CisgICAgICAgICAgICBpZiAoIHNlbGVjdG9yICkgeworICAgICAgICAg
ICAgICAgIGhhbmRsZXJzLnNwbGljZSggaGFuZGxlcnMuZGVsZWdhdGVDb3VudCsrLCAwLCBoYW5k
bGVPYmogKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaGFuZGxlcnMu
cHVzaCggaGFuZGxlT2JqICk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEtlZXAg
dHJhY2sgb2Ygd2hpY2ggZXZlbnRzIGhhdmUgZXZlciBiZWVuIHVzZWQsIGZvciBldmVudCBvcHRp
bWl6YXRpb24KKyAgICAgICAgICAgIGpRdWVyeS5ldmVudC5nbG9iYWxbIHR5cGUgXSA9IHRydWU7
CisgICAgICAgIH0KKworICAgIH0sCisKKyAgICAvLyBEZXRhY2ggYW4gZXZlbnQgb3Igc2V0IG9m
IGV2ZW50cyBmcm9tIGFuIGVsZW1lbnQKKyAgICByZW1vdmU6IGZ1bmN0aW9uKCBlbGVtLCB0eXBl
cywgaGFuZGxlciwgc2VsZWN0b3IsIG1hcHBlZFR5cGVzICkgeworCisgICAgICAgIHZhciBqLCBv
cmlnQ291bnQsIHRtcCwKKyAgICAgICAgICAgIGV2ZW50cywgdCwgaGFuZGxlT2JqLAorICAgICAg
ICAgICAgc3BlY2lhbCwgaGFuZGxlcnMsIHR5cGUsIG5hbWVzcGFjZXMsIG9yaWdUeXBlLAorICAg
ICAgICAgICAgZWxlbURhdGEgPSBkYXRhUHJpdi5oYXNEYXRhKCBlbGVtICkgJiYgZGF0YVByaXYu
Z2V0KCBlbGVtICk7CisKKyAgICAgICAgaWYgKCAhZWxlbURhdGEgfHwgISggZXZlbnRzID0gZWxl
bURhdGEuZXZlbnRzICkgKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICAvLyBPbmNlIGZvciBlYWNoIHR5cGUubmFtZXNwYWNlIGluIHR5cGVzOyB0eXBlIG1heSBi
ZSBvbWl0dGVkCisgICAgICAgIHR5cGVzID0gKCB0eXBlcyB8fCAiIiApLm1hdGNoKCBybm90aHRt
bHdoaXRlICkgfHwgWyAiIiBdOworICAgICAgICB0ID0gdHlwZXMubGVuZ3RoOworICAgICAgICB3
aGlsZSAoIHQtLSApIHsKKyAgICAgICAgICAgIHRtcCA9IHJ0eXBlbmFtZXNwYWNlLmV4ZWMoIHR5
cGVzWyB0IF0gKSB8fCBbXTsKKyAgICAgICAgICAgIHR5cGUgPSBvcmlnVHlwZSA9IHRtcFsgMSBd
OworICAgICAgICAgICAgbmFtZXNwYWNlcyA9ICggdG1wWyAyIF0gfHwgIiIgKS5zcGxpdCggIi4i
ICkuc29ydCgpOworCisgICAgICAgICAgICAvLyBVbmJpbmQgYWxsIGV2ZW50cyAob24gdGhpcyBu
YW1lc3BhY2UsIGlmIHByb3ZpZGVkKSBmb3IgdGhlIGVsZW1lbnQKKyAgICAgICAgICAgIGlmICgg
IXR5cGUgKSB7CisgICAgICAgICAgICAgICAgZm9yICggdHlwZSBpbiBldmVudHMgKSB7CisgICAg
ICAgICAgICAgICAgICAgIGpRdWVyeS5ldmVudC5yZW1vdmUoIGVsZW0sIHR5cGUgKyB0eXBlc1sg
dCBdLCBoYW5kbGVyLCBzZWxlY3RvciwgdHJ1ZSApOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc3BlY2lh
bCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsWyB0eXBlIF0gfHwge307CisgICAgICAgICAgICB0eXBl
ID0gKCBzZWxlY3RvciA/IHNwZWNpYWwuZGVsZWdhdGVUeXBlIDogc3BlY2lhbC5iaW5kVHlwZSAp
IHx8IHR5cGU7CisgICAgICAgICAgICBoYW5kbGVycyA9IGV2ZW50c1sgdHlwZSBdIHx8IFtdOwor
ICAgICAgICAgICAgdG1wID0gdG1wWyAyIF0gJiYKKyAgICAgICAgICAgICAgICBuZXcgUmVnRXhw
KCAiKF58XFwuKSIgKyBuYW1lc3BhY2VzLmpvaW4oICJcXC4oPzouKlxcLnwpIiApICsgIihcXC58
JCkiICk7CisKKyAgICAgICAgICAgIC8vIFJlbW92ZSBtYXRjaGluZyBldmVudHMKKyAgICAgICAg
ICAgIG9yaWdDb3VudCA9IGogPSBoYW5kbGVycy5sZW5ndGg7CisgICAgICAgICAgICB3aGlsZSAo
IGotLSApIHsKKyAgICAgICAgICAgICAgICBoYW5kbGVPYmogPSBoYW5kbGVyc1sgaiBdOworCisg
ICAgICAgICAgICAgICAgaWYgKCAoIG1hcHBlZFR5cGVzIHx8IG9yaWdUeXBlID09PSBoYW5kbGVP
Ymoub3JpZ1R5cGUgKSAmJgorICAgICAgICAgICAgICAgICAgICAoICFoYW5kbGVyIHx8IGhhbmRs
ZXIuZ3VpZCA9PT0gaGFuZGxlT2JqLmd1aWQgKSAmJgorICAgICAgICAgICAgICAgICAgICAoICF0
bXAgfHwgdG1wLnRlc3QoIGhhbmRsZU9iai5uYW1lc3BhY2UgKSApICYmCisgICAgICAgICAgICAg
ICAgICAgICggIXNlbGVjdG9yIHx8IHNlbGVjdG9yID09PSBoYW5kbGVPYmouc2VsZWN0b3IgfHwK
KyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yID09PSAiKioiICYmIGhhbmRsZU9iai5z
ZWxlY3RvciApICkgeworICAgICAgICAgICAgICAgICAgICBoYW5kbGVycy5zcGxpY2UoIGosIDEg
KTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoIGhhbmRsZU9iai5zZWxlY3RvciApIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXJzLmRlbGVnYXRlQ291bnQtLTsKKyAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoIHNwZWNpYWwucmVtb3ZlICkg
eworICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lhbC5yZW1vdmUuY2FsbCggZWxlbSwgaGFu
ZGxlT2JqICk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFJlbW92ZSBnZW5lcmljIGV2ZW50IGhhbmRsZXIg
aWYgd2UgcmVtb3ZlZCBzb21ldGhpbmcgYW5kIG5vIG1vcmUgaGFuZGxlcnMgZXhpc3QKKyAgICAg
ICAgICAgIC8vIChhdm9pZHMgcG90ZW50aWFsIGZvciBlbmRsZXNzIHJlY3Vyc2lvbiBkdXJpbmcg
cmVtb3ZhbCBvZiBzcGVjaWFsIGV2ZW50IGhhbmRsZXJzKQorICAgICAgICAgICAgaWYgKCBvcmln
Q291bnQgJiYgIWhhbmRsZXJzLmxlbmd0aCApIHsKKyAgICAgICAgICAgICAgICBpZiAoICFzcGVj
aWFsLnRlYXJkb3duIHx8CisgICAgICAgICAgICAgICAgICAgIHNwZWNpYWwudGVhcmRvd24uY2Fs
bCggZWxlbSwgbmFtZXNwYWNlcywgZWxlbURhdGEuaGFuZGxlICkgPT09IGZhbHNlICkgeworCisg
ICAgICAgICAgICAgICAgICAgIGpRdWVyeS5yZW1vdmVFdmVudCggZWxlbSwgdHlwZSwgZWxlbURh
dGEuaGFuZGxlICk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZGVsZXRl
IGV2ZW50c1sgdHlwZSBdOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8g
UmVtb3ZlIGRhdGEgYW5kIHRoZSBleHBhbmRvIGlmIGl0J3Mgbm8gbG9uZ2VyIHVzZWQKKyAgICAg
ICAgaWYgKCBqUXVlcnkuaXNFbXB0eU9iamVjdCggZXZlbnRzICkgKSB7CisgICAgICAgICAgICBk
YXRhUHJpdi5yZW1vdmUoIGVsZW0sICJoYW5kbGUgZXZlbnRzIiApOworICAgICAgICB9CisgICAg
fSwKKworICAgIGRpc3BhdGNoOiBmdW5jdGlvbiggbmF0aXZlRXZlbnQgKSB7CisKKyAgICAgICAg
Ly8gTWFrZSBhIHdyaXRhYmxlIGpRdWVyeS5FdmVudCBmcm9tIHRoZSBuYXRpdmUgZXZlbnQgb2Jq
ZWN0CisgICAgICAgIHZhciBldmVudCA9IGpRdWVyeS5ldmVudC5maXgoIG5hdGl2ZUV2ZW50ICk7
CisKKyAgICAgICAgdmFyIGksIGosIHJldCwgbWF0Y2hlZCwgaGFuZGxlT2JqLCBoYW5kbGVyUXVl
dWUsCisgICAgICAgICAgICBhcmdzID0gbmV3IEFycmF5KCBhcmd1bWVudHMubGVuZ3RoICksCisg
ICAgICAgICAgICBoYW5kbGVycyA9ICggZGF0YVByaXYuZ2V0KCB0aGlzLCAiZXZlbnRzIiApIHx8
IHt9IClbIGV2ZW50LnR5cGUgXSB8fCBbXSwKKyAgICAgICAgICAgIHNwZWNpYWwgPSBqUXVlcnku
ZXZlbnQuc3BlY2lhbFsgZXZlbnQudHlwZSBdIHx8IHt9OworCisgICAgICAgIC8vIFVzZSB0aGUg
Zml4LWVkIGpRdWVyeS5FdmVudCByYXRoZXIgdGhhbiB0aGUgKHJlYWQtb25seSkgbmF0aXZlIGV2
ZW50CisgICAgICAgIGFyZ3NbIDAgXSA9IGV2ZW50OworCisgICAgICAgIGZvciAoIGkgPSAxOyBp
IDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrICkgeworICAgICAgICAgICAgYXJnc1sgaSBdID0gYXJn
dW1lbnRzWyBpIF07CisgICAgICAgIH0KKworICAgICAgICBldmVudC5kZWxlZ2F0ZVRhcmdldCA9
IHRoaXM7CisKKyAgICAgICAgLy8gQ2FsbCB0aGUgcHJlRGlzcGF0Y2ggaG9vayBmb3IgdGhlIG1h
cHBlZCB0eXBlLCBhbmQgbGV0IGl0IGJhaWwgaWYgZGVzaXJlZAorICAgICAgICBpZiAoIHNwZWNp
YWwucHJlRGlzcGF0Y2ggJiYgc3BlY2lhbC5wcmVEaXNwYXRjaC5jYWxsKCB0aGlzLCBldmVudCAp
ID09PSBmYWxzZSApIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IC8vIERldGVybWluZSBoYW5kbGVycworICAgICAgICBoYW5kbGVyUXVldWUgPSBqUXVlcnkuZXZl
bnQuaGFuZGxlcnMuY2FsbCggdGhpcywgZXZlbnQsIGhhbmRsZXJzICk7CisKKyAgICAgICAgLy8g
UnVuIGRlbGVnYXRlcyBmaXJzdDsgdGhleSBtYXkgd2FudCB0byBzdG9wIHByb3BhZ2F0aW9uIGJl
bmVhdGggdXMKKyAgICAgICAgaSA9IDA7CisgICAgICAgIHdoaWxlICggKCBtYXRjaGVkID0gaGFu
ZGxlclF1ZXVlWyBpKysgXSApICYmICFldmVudC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpICkgewor
ICAgICAgICAgICAgZXZlbnQuY3VycmVudFRhcmdldCA9IG1hdGNoZWQuZWxlbTsKKworICAgICAg
ICAgICAgaiA9IDA7CisgICAgICAgICAgICB3aGlsZSAoICggaGFuZGxlT2JqID0gbWF0Y2hlZC5o
YW5kbGVyc1sgaisrIF0gKSAmJgorICAgICAgICAgICAgICAgICFldmVudC5pc0ltbWVkaWF0ZVBy
b3BhZ2F0aW9uU3RvcHBlZCgpICkgeworCisgICAgICAgICAgICAgICAgLy8gVHJpZ2dlcmVkIGV2
ZW50IG11c3QgZWl0aGVyIDEpIGhhdmUgbm8gbmFtZXNwYWNlLCBvciAyKSBoYXZlIG5hbWVzcGFj
ZShzKQorICAgICAgICAgICAgICAgIC8vIGEgc3Vic2V0IG9yIGVxdWFsIHRvIHRob3NlIGluIHRo
ZSBib3VuZCBldmVudCAoYm90aCBjYW4gaGF2ZSBubyBuYW1lc3BhY2UpLgorICAgICAgICAgICAg
ICAgIGlmICggIWV2ZW50LnJuYW1lc3BhY2UgfHwgZXZlbnQucm5hbWVzcGFjZS50ZXN0KCBoYW5k
bGVPYmoubmFtZXNwYWNlICkgKSB7CisKKyAgICAgICAgICAgICAgICAgICAgZXZlbnQuaGFuZGxl
T2JqID0gaGFuZGxlT2JqOworICAgICAgICAgICAgICAgICAgICBldmVudC5kYXRhID0gaGFuZGxl
T2JqLmRhdGE7CisKKyAgICAgICAgICAgICAgICAgICAgcmV0ID0gKCAoIGpRdWVyeS5ldmVudC5z
cGVjaWFsWyBoYW5kbGVPYmoub3JpZ1R5cGUgXSB8fCB7fSApLmhhbmRsZSB8fAorICAgICAgICAg
ICAgICAgICAgICAgICAgaGFuZGxlT2JqLmhhbmRsZXIgKS5hcHBseSggbWF0Y2hlZC5lbGVtLCBh
cmdzICk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKCByZXQgIT09IHVuZGVmaW5lZCApIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGlmICggKCBldmVudC5yZXN1bHQgPSByZXQgKSA9PT0g
ZmFsc2UgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1
bHQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24o
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIENh
bGwgdGhlIHBvc3REaXNwYXRjaCBob29rIGZvciB0aGUgbWFwcGVkIHR5cGUKKyAgICAgICAgaWYg
KCBzcGVjaWFsLnBvc3REaXNwYXRjaCApIHsKKyAgICAgICAgICAgIHNwZWNpYWwucG9zdERpc3Bh
dGNoLmNhbGwoIHRoaXMsIGV2ZW50ICk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZXZl
bnQucmVzdWx0OworICAgIH0sCisKKyAgICBoYW5kbGVyczogZnVuY3Rpb24oIGV2ZW50LCBoYW5k
bGVycyApIHsKKyAgICAgICAgdmFyIGksIGhhbmRsZU9iaiwgc2VsLCBtYXRjaGVkSGFuZGxlcnMs
IG1hdGNoZWRTZWxlY3RvcnMsCisgICAgICAgICAgICBoYW5kbGVyUXVldWUgPSBbXSwKKyAgICAg
ICAgICAgIGRlbGVnYXRlQ291bnQgPSBoYW5kbGVycy5kZWxlZ2F0ZUNvdW50LAorICAgICAgICAg
ICAgY3VyID0gZXZlbnQudGFyZ2V0OworCisgICAgICAgIC8vIEZpbmQgZGVsZWdhdGUgaGFuZGxl
cnMKKyAgICAgICAgaWYgKCBkZWxlZ2F0ZUNvdW50ICYmCisKKyAgICAgICAgICAgIC8vIFN1cHBv
cnQ6IElFIDw9OQorICAgICAgICAgICAgLy8gQmxhY2staG9sZSBTVkcgPHVzZT4gaW5zdGFuY2Ug
dHJlZXMgKHRyYWMtMTMxODApCisgICAgICAgICAgICBjdXIubm9kZVR5cGUgJiYKKworICAgICAg
ICAgICAgLy8gU3VwcG9ydDogRmlyZWZveCA8PTQyCisgICAgICAgICAgICAvLyBTdXBwcmVzcyBz
cGVjLXZpb2xhdGluZyBjbGlja3MgaW5kaWNhdGluZyBhIG5vbi1wcmltYXJ5IHBvaW50ZXIgYnV0
dG9uICh0cmFjLTM4NjEpCisgICAgICAgICAgICAvLyBodHRwczovL3d3dy53My5vcmcvVFIvRE9N
LUxldmVsLTMtRXZlbnRzLyNldmVudC10eXBlLWNsaWNrCisgICAgICAgICAgICAvLyBTdXBwb3J0
OiBJRSAxMSBvbmx5CisgICAgICAgICAgICAvLyAuLi5idXQgbm90IGFycm93IGtleSAiY2xpY2tz
IiBvZiByYWRpbyBpbnB1dHMsIHdoaWNoIGNhbiBoYXZlIGBidXR0b25gIC0xIChnaC0yMzQzKQor
ICAgICAgICAgICAgISggZXZlbnQudHlwZSA9PT0gImNsaWNrIiAmJiBldmVudC5idXR0b24gPj0g
MSApICkgeworCisgICAgICAgICAgICBmb3IgKCA7IGN1ciAhPT0gdGhpczsgY3VyID0gY3VyLnBh
cmVudE5vZGUgfHwgdGhpcyApIHsKKworICAgICAgICAgICAgICAgIC8vIERvbid0IGNoZWNrIG5v
bi1lbGVtZW50cyAoIzEzMjA4KQorICAgICAgICAgICAgICAgIC8vIERvbid0IHByb2Nlc3MgY2xp
Y2tzIG9uIGRpc2FibGVkIGVsZW1lbnRzICgjNjkxMSwgIzgxNjUsICMxMTM4MiwgIzExNzY0KQor
ICAgICAgICAgICAgICAgIGlmICggY3VyLm5vZGVUeXBlID09PSAxICYmICEoIGV2ZW50LnR5cGUg
PT09ICJjbGljayIgJiYgY3VyLmRpc2FibGVkID09PSB0cnVlICkgKSB7CisgICAgICAgICAgICAg
ICAgICAgIG1hdGNoZWRIYW5kbGVycyA9IFtdOworICAgICAgICAgICAgICAgICAgICBtYXRjaGVk
U2VsZWN0b3JzID0ge307CisgICAgICAgICAgICAgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgZGVs
ZWdhdGVDb3VudDsgaSsrICkgeworICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlT2JqID0g
aGFuZGxlcnNbIGkgXTsKKworICAgICAgICAgICAgICAgICAgICAgICAgLy8gRG9uJ3QgY29uZmxp
Y3Qgd2l0aCBPYmplY3QucHJvdG90eXBlIHByb3BlcnRpZXMgKCMxMzIwMykKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHNlbCA9IGhhbmRsZU9iai5zZWxlY3RvciArICIgIjsKKworICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKCBtYXRjaGVkU2VsZWN0b3JzWyBzZWwgXSA9PT0gdW5kZWZpbmVk
ICkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZWRTZWxlY3RvcnNbIHNlbCBd
ID0gaGFuZGxlT2JqLm5lZWRzQ29udGV4dCA/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGpRdWVyeSggc2VsLCB0aGlzICkuaW5kZXgoIGN1ciApID4gLTEgOgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBqUXVlcnkuZmluZCggc2VsLCB0aGlzLCBudWxsLCBbIGN1ciBd
ICkubGVuZ3RoOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCBtYXRjaGVkU2VsZWN0b3JzWyBzZWwgXSApIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtYXRjaGVkSGFuZGxlcnMucHVzaCggaGFuZGxlT2JqICk7CisgICAgICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgaWYgKCBtYXRjaGVkSGFuZGxlcnMubGVuZ3RoICkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgaGFuZGxlclF1ZXVlLnB1c2goIHsgZWxlbTogY3VyLCBoYW5kbGVyczogbWF0Y2hlZEhhbmRs
ZXJzIH0gKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIEFkZCB0aGUgcmVtYWluaW5nIChkaXJl
Y3RseS1ib3VuZCkgaGFuZGxlcnMKKyAgICAgICAgY3VyID0gdGhpczsKKyAgICAgICAgaWYgKCBk
ZWxlZ2F0ZUNvdW50IDwgaGFuZGxlcnMubGVuZ3RoICkgeworICAgICAgICAgICAgaGFuZGxlclF1
ZXVlLnB1c2goIHsgZWxlbTogY3VyLCBoYW5kbGVyczogaGFuZGxlcnMuc2xpY2UoIGRlbGVnYXRl
Q291bnQgKSB9ICk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gaGFuZGxlclF1ZXVlOwor
ICAgIH0sCisKKyAgICBhZGRQcm9wOiBmdW5jdGlvbiggbmFtZSwgaG9vayApIHsKKyAgICAgICAg
T2JqZWN0LmRlZmluZVByb3BlcnR5KCBqUXVlcnkuRXZlbnQucHJvdG90eXBlLCBuYW1lLCB7Cisg
ICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLAorICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0
cnVlLAorCisgICAgICAgICAgICBnZXQ6IGpRdWVyeS5pc0Z1bmN0aW9uKCBob29rICkgPworICAg
ICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIHRoaXMu
b3JpZ2luYWxFdmVudCApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaG9v
ayggdGhpcy5vcmlnaW5hbEV2ZW50ICk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICB9IDoKKyAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKCB0aGlzLm9yaWdpbmFsRXZlbnQgKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRoaXMub3JpZ2luYWxFdmVudFsgbmFtZSBdOworICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgc2V0OiBmdW5jdGlvbigg
dmFsdWUgKSB7CisgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KCB0aGlzLCBu
YW1lLCB7CisgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsCisgICAgICAgICAg
ICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgd3JpdGFi
bGU6IHRydWUsCisgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZQorICAgICAgICAgICAg
ICAgIH0gKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSApOworICAgIH0sCisKKyAgICBmaXg6
IGZ1bmN0aW9uKCBvcmlnaW5hbEV2ZW50ICkgeworICAgICAgICByZXR1cm4gb3JpZ2luYWxFdmVu
dFsgalF1ZXJ5LmV4cGFuZG8gXSA/CisgICAgICAgICAgICBvcmlnaW5hbEV2ZW50IDoKKyAgICAg
ICAgICAgIG5ldyBqUXVlcnkuRXZlbnQoIG9yaWdpbmFsRXZlbnQgKTsKKyAgICB9LAorCisgICAg
c3BlY2lhbDogeworICAgICAgICBsb2FkOiB7CisKKyAgICAgICAgICAgIC8vIFByZXZlbnQgdHJp
Z2dlcmVkIGltYWdlLmxvYWQgZXZlbnRzIGZyb20gYnViYmxpbmcgdG8gd2luZG93LmxvYWQKKyAg
ICAgICAgICAgIG5vQnViYmxlOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgIGZvY3VzOiB7CisK
KyAgICAgICAgICAgIC8vIEZpcmUgbmF0aXZlIGV2ZW50IGlmIHBvc3NpYmxlIHNvIGJsdXIvZm9j
dXMgc2VxdWVuY2UgaXMgY29ycmVjdAorICAgICAgICAgICAgdHJpZ2dlcjogZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICAgICAgaWYgKCB0aGlzICE9PSBzYWZlQWN0aXZlRWxlbWVudCgpICYmIHRo
aXMuZm9jdXMgKSB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9jdXMoKTsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0sCisgICAgICAgICAgICBkZWxlZ2F0ZVR5cGU6ICJmb2N1c2luIgorICAgICAgICB9LAorICAg
ICAgICBibHVyOiB7CisgICAgICAgICAgICB0cmlnZ2VyOiBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoIHRoaXMgPT09IHNhZmVBY3RpdmVFbGVtZW50KCkgJiYgdGhpcy5ibHVyICkg
eworICAgICAgICAgICAgICAgICAgICB0aGlzLmJsdXIoKTsKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAg
ICAgICBkZWxlZ2F0ZVR5cGU6ICJmb2N1c291dCIKKyAgICAgICAgfSwKKyAgICAgICAgY2xpY2s6
IHsKKworICAgICAgICAgICAgLy8gRm9yIGNoZWNrYm94LCBmaXJlIG5hdGl2ZSBldmVudCBzbyBj
aGVja2VkIHN0YXRlIHdpbGwgYmUgcmlnaHQKKyAgICAgICAgICAgIHRyaWdnZXI6IGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgICAgIGlmICggdGhpcy50eXBlID09PSAiY2hlY2tib3giICYmIHRo
aXMuY2xpY2sgJiYgalF1ZXJ5Lm5vZGVOYW1lKCB0aGlzLCAiaW5wdXQiICkgKSB7CisgICAgICAg
ICAgICAgICAgICAgIHRoaXMuY2xpY2soKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgIC8v
IEZvciBjcm9zcy1icm93c2VyIGNvbnNpc3RlbmN5LCBkb24ndCBmaXJlIG5hdGl2ZSAuY2xpY2so
KSBvbiBsaW5rcworICAgICAgICAgICAgX2RlZmF1bHQ6IGZ1bmN0aW9uKCBldmVudCApIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4galF1ZXJ5Lm5vZGVOYW1lKCBldmVudC50YXJnZXQsICJhIiAp
OworICAgICAgICAgICAgfQorICAgICAgICB9LAorCisgICAgICAgIGJlZm9yZXVubG9hZDogewor
ICAgICAgICAgICAgcG9zdERpc3BhdGNoOiBmdW5jdGlvbiggZXZlbnQgKSB7CisKKyAgICAgICAg
ICAgICAgICAvLyBTdXBwb3J0OiBGaXJlZm94IDIwKworICAgICAgICAgICAgICAgIC8vIEZpcmVm
b3ggZG9lc24ndCBhbGVydCBpZiB0aGUgcmV0dXJuVmFsdWUgZmllbGQgaXMgbm90IHNldC4KKyAg
ICAgICAgICAgICAgICBpZiAoIGV2ZW50LnJlc3VsdCAhPT0gdW5kZWZpbmVkICYmIGV2ZW50Lm9y
aWdpbmFsRXZlbnQgKSB7CisgICAgICAgICAgICAgICAgICAgIGV2ZW50Lm9yaWdpbmFsRXZlbnQu
cmV0dXJuVmFsdWUgPSBldmVudC5yZXN1bHQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfQorfTsKKworalF1ZXJ5LnJlbW92ZUV2ZW50ID0gZnVuY3Rp
b24oIGVsZW0sIHR5cGUsIGhhbmRsZSApIHsKKworICAgIC8vIFRoaXMgImlmIiBpcyBuZWVkZWQg
Zm9yIHBsYWluIG9iamVjdHMKKyAgICBpZiAoIGVsZW0ucmVtb3ZlRXZlbnRMaXN0ZW5lciApIHsK
KyAgICAgICAgZWxlbS5yZW1vdmVFdmVudExpc3RlbmVyKCB0eXBlLCBoYW5kbGUgKTsKKyAgICB9
Cit9OworCitqUXVlcnkuRXZlbnQgPSBmdW5jdGlvbiggc3JjLCBwcm9wcyApIHsKKworICAgIC8v
IEFsbG93IGluc3RhbnRpYXRpb24gd2l0aG91dCB0aGUgJ25ldycga2V5d29yZAorICAgIGlmICgg
ISggdGhpcyBpbnN0YW5jZW9mIGpRdWVyeS5FdmVudCApICkgeworICAgICAgICByZXR1cm4gbmV3
IGpRdWVyeS5FdmVudCggc3JjLCBwcm9wcyApOworICAgIH0KKworICAgIC8vIEV2ZW50IG9iamVj
dAorICAgIGlmICggc3JjICYmIHNyYy50eXBlICkgeworICAgICAgICB0aGlzLm9yaWdpbmFsRXZl
bnQgPSBzcmM7CisgICAgICAgIHRoaXMudHlwZSA9IHNyYy50eXBlOworCisgICAgICAgIC8vIEV2
ZW50cyBidWJibGluZyB1cCB0aGUgZG9jdW1lbnQgbWF5IGhhdmUgYmVlbiBtYXJrZWQgYXMgcHJl
dmVudGVkCisgICAgICAgIC8vIGJ5IGEgaGFuZGxlciBsb3dlciBkb3duIHRoZSB0cmVlOyByZWZs
ZWN0IHRoZSBjb3JyZWN0IHZhbHVlLgorICAgICAgICB0aGlzLmlzRGVmYXVsdFByZXZlbnRlZCA9
IHNyYy5kZWZhdWx0UHJldmVudGVkIHx8CisgICAgICAgICAgICAgICAgc3JjLmRlZmF1bHRQcmV2
ZW50ZWQgPT09IHVuZGVmaW5lZCAmJgorCisgICAgICAgICAgICAgICAgLy8gU3VwcG9ydDogQW5k
cm9pZCA8PTIuMyBvbmx5CisgICAgICAgICAgICAgICAgc3JjLnJldHVyblZhbHVlID09PSBmYWxz
ZSA/CisgICAgICAgICAgICByZXR1cm5UcnVlIDoKKyAgICAgICAgICAgIHJldHVybkZhbHNlOwor
CisgICAgICAgIC8vIENyZWF0ZSB0YXJnZXQgcHJvcGVydGllcworICAgICAgICAvLyBTdXBwb3J0
OiBTYWZhcmkgPD02IC0gNyBvbmx5CisgICAgICAgIC8vIFRhcmdldCBzaG91bGQgbm90IGJlIGEg
dGV4dCBub2RlICgjNTA0LCAjMTMxNDMpCisgICAgICAgIHRoaXMudGFyZ2V0ID0gKCBzcmMudGFy
Z2V0ICYmIHNyYy50YXJnZXQubm9kZVR5cGUgPT09IDMgKSA/CisgICAgICAgICAgICBzcmMudGFy
Z2V0LnBhcmVudE5vZGUgOgorICAgICAgICAgICAgc3JjLnRhcmdldDsKKworICAgICAgICB0aGlz
LmN1cnJlbnRUYXJnZXQgPSBzcmMuY3VycmVudFRhcmdldDsKKyAgICAgICAgdGhpcy5yZWxhdGVk
VGFyZ2V0ID0gc3JjLnJlbGF0ZWRUYXJnZXQ7CisKKyAgICAvLyBFdmVudCB0eXBlCisgICAgfSBl
bHNlIHsKKyAgICAgICAgdGhpcy50eXBlID0gc3JjOworICAgIH0KKworICAgIC8vIFB1dCBleHBs
aWNpdGx5IHByb3ZpZGVkIHByb3BlcnRpZXMgb250byB0aGUgZXZlbnQgb2JqZWN0CisgICAgaWYg
KCBwcm9wcyApIHsKKyAgICAgICAgalF1ZXJ5LmV4dGVuZCggdGhpcywgcHJvcHMgKTsKKyAgICB9
CisKKyAgICAvLyBDcmVhdGUgYSB0aW1lc3RhbXAgaWYgaW5jb21pbmcgZXZlbnQgZG9lc24ndCBo
YXZlIG9uZQorICAgIHRoaXMudGltZVN0YW1wID0gc3JjICYmIHNyYy50aW1lU3RhbXAgfHwgalF1
ZXJ5Lm5vdygpOworCisgICAgLy8gTWFyayBpdCBhcyBmaXhlZAorICAgIHRoaXNbIGpRdWVyeS5l
eHBhbmRvIF0gPSB0cnVlOworfTsKKworLy8galF1ZXJ5LkV2ZW50IGlzIGJhc2VkIG9uIERPTTMg
RXZlbnRzIGFzIHNwZWNpZmllZCBieSB0aGUgRUNNQVNjcmlwdCBMYW5ndWFnZSBCaW5kaW5nCisv
LyBodHRwczovL3d3dy53My5vcmcvVFIvMjAwMy9XRC1ET00tTGV2ZWwtMy1FdmVudHMtMjAwMzAz
MzEvZWNtYS1zY3JpcHQtYmluZGluZy5odG1sCitqUXVlcnkuRXZlbnQucHJvdG90eXBlID0gewor
ICAgIGNvbnN0cnVjdG9yOiBqUXVlcnkuRXZlbnQsCisgICAgaXNEZWZhdWx0UHJldmVudGVkOiBy
ZXR1cm5GYWxzZSwKKyAgICBpc1Byb3BhZ2F0aW9uU3RvcHBlZDogcmV0dXJuRmFsc2UsCisgICAg
aXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ6IHJldHVybkZhbHNlLAorICAgIGlzU2ltdWxh
dGVkOiBmYWxzZSwKKworICAgIHByZXZlbnREZWZhdWx0OiBmdW5jdGlvbigpIHsKKyAgICAgICAg
dmFyIGUgPSB0aGlzLm9yaWdpbmFsRXZlbnQ7CisKKyAgICAgICAgdGhpcy5pc0RlZmF1bHRQcmV2
ZW50ZWQgPSByZXR1cm5UcnVlOworCisgICAgICAgIGlmICggZSAmJiAhdGhpcy5pc1NpbXVsYXRl
ZCApIHsKKyAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgfQorICAgIH0s
CisgICAgc3RvcFByb3BhZ2F0aW9uOiBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIGUgPSB0aGlz
Lm9yaWdpbmFsRXZlbnQ7CisKKyAgICAgICAgdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZCA9IHJl
dHVyblRydWU7CisKKyAgICAgICAgaWYgKCBlICYmICF0aGlzLmlzU2ltdWxhdGVkICkgeworICAg
ICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKKyAgICAgICAgfQorICAgIH0sCisgICAgc3Rv
cEltbWVkaWF0ZVByb3BhZ2F0aW9uOiBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIGUgPSB0aGlz
Lm9yaWdpbmFsRXZlbnQ7CisKKyAgICAgICAgdGhpcy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3Rv
cHBlZCA9IHJldHVyblRydWU7CisKKyAgICAgICAgaWYgKCBlICYmICF0aGlzLmlzU2ltdWxhdGVk
ICkgeworICAgICAgICAgICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTsKKyAgICAgICAg
fQorCisgICAgICAgIHRoaXMuc3RvcFByb3BhZ2F0aW9uKCk7CisgICAgfQorfTsKKworLy8gSW5j
bHVkZXMgYWxsIGNvbW1vbiBldmVudCBwcm9wcyBpbmNsdWRpbmcgS2V5RXZlbnQgYW5kIE1vdXNl
RXZlbnQgc3BlY2lmaWMgcHJvcHMKK2pRdWVyeS5lYWNoKCB7CisgICAgYWx0S2V5OiB0cnVlLAor
ICAgIGJ1YmJsZXM6IHRydWUsCisgICAgY2FuY2VsYWJsZTogdHJ1ZSwKKyAgICBjaGFuZ2VkVG91
Y2hlczogdHJ1ZSwKKyAgICBjdHJsS2V5OiB0cnVlLAorICAgIGRldGFpbDogdHJ1ZSwKKyAgICBl
dmVudFBoYXNlOiB0cnVlLAorICAgIG1ldGFLZXk6IHRydWUsCisgICAgcGFnZVg6IHRydWUsCisg
ICAgcGFnZVk6IHRydWUsCisgICAgc2hpZnRLZXk6IHRydWUsCisgICAgdmlldzogdHJ1ZSwKKyAg
ICAiY2hhciI6IHRydWUsCisgICAgY2hhckNvZGU6IHRydWUsCisgICAga2V5OiB0cnVlLAorICAg
IGtleUNvZGU6IHRydWUsCisgICAgYnV0dG9uOiB0cnVlLAorICAgIGJ1dHRvbnM6IHRydWUsCisg
ICAgY2xpZW50WDogdHJ1ZSwKKyAgICBjbGllbnRZOiB0cnVlLAorICAgIG9mZnNldFg6IHRydWUs
CisgICAgb2Zmc2V0WTogdHJ1ZSwKKyAgICBwb2ludGVySWQ6IHRydWUsCisgICAgcG9pbnRlclR5
cGU6IHRydWUsCisgICAgc2NyZWVuWDogdHJ1ZSwKKyAgICBzY3JlZW5ZOiB0cnVlLAorICAgIHRh
cmdldFRvdWNoZXM6IHRydWUsCisgICAgdG9FbGVtZW50OiB0cnVlLAorICAgIHRvdWNoZXM6IHRy
dWUsCisKKyAgICB3aGljaDogZnVuY3Rpb24oIGV2ZW50ICkgeworICAgICAgICB2YXIgYnV0dG9u
ID0gZXZlbnQuYnV0dG9uOworCisgICAgICAgIC8vIEFkZCB3aGljaCBmb3Iga2V5IGV2ZW50cwor
ICAgICAgICBpZiAoIGV2ZW50LndoaWNoID09IG51bGwgJiYgcmtleUV2ZW50LnRlc3QoIGV2ZW50
LnR5cGUgKSApIHsKKyAgICAgICAgICAgIHJldHVybiBldmVudC5jaGFyQ29kZSAhPSBudWxsID8g
ZXZlbnQuY2hhckNvZGUgOiBldmVudC5rZXlDb2RlOworICAgICAgICB9CisKKyAgICAgICAgLy8g
QWRkIHdoaWNoIGZvciBjbGljazogMSA9PT0gbGVmdDsgMiA9PT0gbWlkZGxlOyAzID09PSByaWdo
dAorICAgICAgICBpZiAoICFldmVudC53aGljaCAmJiBidXR0b24gIT09IHVuZGVmaW5lZCAmJiBy
bW91c2VFdmVudC50ZXN0KCBldmVudC50eXBlICkgKSB7CisgICAgICAgICAgICBpZiAoIGJ1dHRv
biAmIDEgKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGlmICggYnV0dG9uICYgMiApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gMzsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCBidXR0b24gJiA0ICkgeworICAgICAg
ICAgICAgICAgIHJldHVybiAyOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBldmVudC53aGljaDsKKyAgICB9Cit9LCBq
UXVlcnkuZXZlbnQuYWRkUHJvcCApOworCisvLyBDcmVhdGUgbW91c2VlbnRlci9sZWF2ZSBldmVu
dHMgdXNpbmcgbW91c2VvdmVyL291dCBhbmQgZXZlbnQtdGltZSBjaGVja3MKKy8vIHNvIHRoYXQg
ZXZlbnQgZGVsZWdhdGlvbiB3b3JrcyBpbiBqUXVlcnkuCisvLyBEbyB0aGUgc2FtZSBmb3IgcG9p
bnRlcmVudGVyL3BvaW50ZXJsZWF2ZSBhbmQgcG9pbnRlcm92ZXIvcG9pbnRlcm91dAorLy8KKy8v
IFN1cHBvcnQ6IFNhZmFyaSA3IG9ubHkKKy8vIFNhZmFyaSBzZW5kcyBtb3VzZWVudGVyIHRvbyBv
ZnRlbjsgc2VlOgorLy8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vl
cy9kZXRhaWw/aWQ9NDcwMjU4CisvLyBmb3IgdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBidWcgKGl0
IGV4aXN0ZWQgaW4gb2xkZXIgQ2hyb21lIHZlcnNpb25zIGFzIHdlbGwpLgoralF1ZXJ5LmVhY2go
IHsKKyAgICBtb3VzZWVudGVyOiAibW91c2VvdmVyIiwKKyAgICBtb3VzZWxlYXZlOiAibW91c2Vv
dXQiLAorICAgIHBvaW50ZXJlbnRlcjogInBvaW50ZXJvdmVyIiwKKyAgICBwb2ludGVybGVhdmU6
ICJwb2ludGVyb3V0IgorfSwgZnVuY3Rpb24oIG9yaWcsIGZpeCApIHsKKyAgICBqUXVlcnkuZXZl
bnQuc3BlY2lhbFsgb3JpZyBdID0geworICAgICAgICBkZWxlZ2F0ZVR5cGU6IGZpeCwKKyAgICAg
ICAgYmluZFR5cGU6IGZpeCwKKworICAgICAgICBoYW5kbGU6IGZ1bmN0aW9uKCBldmVudCApIHsK
KyAgICAgICAgICAgIHZhciByZXQsCisgICAgICAgICAgICAgICAgdGFyZ2V0ID0gdGhpcywKKyAg
ICAgICAgICAgICAgICByZWxhdGVkID0gZXZlbnQucmVsYXRlZFRhcmdldCwKKyAgICAgICAgICAg
ICAgICBoYW5kbGVPYmogPSBldmVudC5oYW5kbGVPYmo7CisKKyAgICAgICAgICAgIC8vIEZvciBt
b3VzZWVudGVyL2xlYXZlIGNhbGwgdGhlIGhhbmRsZXIgaWYgcmVsYXRlZCBpcyBvdXRzaWRlIHRo
ZSB0YXJnZXQuCisgICAgICAgICAgICAvLyBOQjogTm8gcmVsYXRlZFRhcmdldCBpZiB0aGUgbW91
c2UgbGVmdC9lbnRlcmVkIHRoZSBicm93c2VyIHdpbmRvdworICAgICAgICAgICAgaWYgKCAhcmVs
YXRlZCB8fCAoIHJlbGF0ZWQgIT09IHRhcmdldCAmJiAhalF1ZXJ5LmNvbnRhaW5zKCB0YXJnZXQs
IHJlbGF0ZWQgKSApICkgeworICAgICAgICAgICAgICAgIGV2ZW50LnR5cGUgPSBoYW5kbGVPYmou
b3JpZ1R5cGU7CisgICAgICAgICAgICAgICAgcmV0ID0gaGFuZGxlT2JqLmhhbmRsZXIuYXBwbHko
IHRoaXMsIGFyZ3VtZW50cyApOworICAgICAgICAgICAgICAgIGV2ZW50LnR5cGUgPSBmaXg7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gcmV0OworICAgICAgICB9CisgICAgfTsK
K30gKTsKKworalF1ZXJ5LmZuLmV4dGVuZCggeworCisgICAgb246IGZ1bmN0aW9uKCB0eXBlcywg
c2VsZWN0b3IsIGRhdGEsIGZuICkgeworICAgICAgICByZXR1cm4gb24oIHRoaXMsIHR5cGVzLCBz
ZWxlY3RvciwgZGF0YSwgZm4gKTsKKyAgICB9LAorICAgIG9uZTogZnVuY3Rpb24oIHR5cGVzLCBz
ZWxlY3RvciwgZGF0YSwgZm4gKSB7CisgICAgICAgIHJldHVybiBvbiggdGhpcywgdHlwZXMsIHNl
bGVjdG9yLCBkYXRhLCBmbiwgMSApOworICAgIH0sCisgICAgb2ZmOiBmdW5jdGlvbiggdHlwZXMs
IHNlbGVjdG9yLCBmbiApIHsKKyAgICAgICAgdmFyIGhhbmRsZU9iaiwgdHlwZTsKKyAgICAgICAg
aWYgKCB0eXBlcyAmJiB0eXBlcy5wcmV2ZW50RGVmYXVsdCAmJiB0eXBlcy5oYW5kbGVPYmogKSB7
CisKKyAgICAgICAgICAgIC8vICggZXZlbnQgKSAgZGlzcGF0Y2hlZCBqUXVlcnkuRXZlbnQKKyAg
ICAgICAgICAgIGhhbmRsZU9iaiA9IHR5cGVzLmhhbmRsZU9iajsKKyAgICAgICAgICAgIGpRdWVy
eSggdHlwZXMuZGVsZWdhdGVUYXJnZXQgKS5vZmYoCisgICAgICAgICAgICAgICAgaGFuZGxlT2Jq
Lm5hbWVzcGFjZSA/CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZU9iai5vcmlnVHlwZSArICIu
IiArIGhhbmRsZU9iai5uYW1lc3BhY2UgOgorICAgICAgICAgICAgICAgICAgICBoYW5kbGVPYmou
b3JpZ1R5cGUsCisgICAgICAgICAgICAgICAgaGFuZGxlT2JqLnNlbGVjdG9yLAorICAgICAgICAg
ICAgICAgIGhhbmRsZU9iai5oYW5kbGVyCisgICAgICAgICAgICApOworICAgICAgICAgICAgcmV0
dXJuIHRoaXM7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCB0eXBlb2YgdHlwZXMgPT09ICJvYmpl
Y3QiICkgeworCisgICAgICAgICAgICAvLyAoIHR5cGVzLW9iamVjdCBbLCBzZWxlY3Rvcl0gKQor
ICAgICAgICAgICAgZm9yICggdHlwZSBpbiB0eXBlcyApIHsKKyAgICAgICAgICAgICAgICB0aGlz
Lm9mZiggdHlwZSwgc2VsZWN0b3IsIHR5cGVzWyB0eXBlIF0gKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICB9CisgICAgICAgIGlmICggc2VsZWN0b3Ig
PT09IGZhbHNlIHx8IHR5cGVvZiBzZWxlY3RvciA9PT0gImZ1bmN0aW9uIiApIHsKKworICAgICAg
ICAgICAgLy8gKCB0eXBlcyBbLCBmbl0gKQorICAgICAgICAgICAgZm4gPSBzZWxlY3RvcjsKKyAg
ICAgICAgICAgIHNlbGVjdG9yID0gdW5kZWZpbmVkOworICAgICAgICB9CisgICAgICAgIGlmICgg
Zm4gPT09IGZhbHNlICkgeworICAgICAgICAgICAgZm4gPSByZXR1cm5GYWxzZTsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGpR
dWVyeS5ldmVudC5yZW1vdmUoIHRoaXMsIHR5cGVzLCBmbiwgc2VsZWN0b3IgKTsKKyAgICAgICAg
fSApOworICAgIH0KK30gKTsKKworcmV0dXJuIGpRdWVyeTsKK30gKTsKZGlmZiAtLWdpdCBhL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9ldmVudC9hamF4LmpzIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2V2ZW50L2FqYXguanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZDAwYjE1NzdhZjcxYjU3MmYyM2QzYmNlNGU0OTc5ZTBhZDM3MDU4MAotLS0g
L2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3Ny
Yy9ldmVudC9hamF4LmpzCkBAIC0wLDAgKzEsMjIgQEAKK2RlZmluZSggWworICAgICIuLi9jb3Jl
IiwKKyAgICAiLi4vZXZlbnQiCitdLCBmdW5jdGlvbiggalF1ZXJ5ICkgeworCisidXNlIHN0cmlj
dCI7CisKKy8vIEF0dGFjaCBhIGJ1bmNoIG9mIGZ1bmN0aW9ucyBmb3IgaGFuZGxpbmcgY29tbW9u
IEFKQVggZXZlbnRzCitqUXVlcnkuZWFjaCggWworICAgICJhamF4U3RhcnQiLAorICAgICJhamF4
U3RvcCIsCisgICAgImFqYXhDb21wbGV0ZSIsCisgICAgImFqYXhFcnJvciIsCisgICAgImFqYXhT
dWNjZXNzIiwKKyAgICAiYWpheFNlbmQiCitdLCBmdW5jdGlvbiggaSwgdHlwZSApIHsKKyAgICBq
UXVlcnkuZm5bIHR5cGUgXSA9IGZ1bmN0aW9uKCBmbiApIHsKKyAgICAgICAgcmV0dXJuIHRoaXMu
b24oIHR5cGUsIGZuICk7CisgICAgfTsKK30gKTsKKworfSApOwpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2V2ZW50L2FsaWFzLmpzIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2V2ZW50L2FsaWFzLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjE1YmQ5NjA0ZDdmOTQxZDBlNmEyN2ExYjUyMjViNDJjYWI5YzJlOTcKLS0tIC9k
ZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMv
ZXZlbnQvYWxpYXMuanMKQEAgLTAsMCArMSwyOSBAQAorZGVmaW5lKCBbCisgICAgIi4uL2NvcmUi
LAorCisgICAgIi4uL2V2ZW50IiwKKyAgICAiLi90cmlnZ2VyIgorXSwgZnVuY3Rpb24oIGpRdWVy
eSApIHsKKworInVzZSBzdHJpY3QiOworCitqUXVlcnkuZWFjaCggKCAiYmx1ciBmb2N1cyBmb2N1
c2luIGZvY3Vzb3V0IHJlc2l6ZSBzY3JvbGwgY2xpY2sgZGJsY2xpY2sgIiArCisgICAgIm1vdXNl
ZG93biBtb3VzZXVwIG1vdXNlbW92ZSBtb3VzZW92ZXIgbW91c2VvdXQgbW91c2VlbnRlciBtb3Vz
ZWxlYXZlICIgKworICAgICJjaGFuZ2Ugc2VsZWN0IHN1Ym1pdCBrZXlkb3duIGtleXByZXNzIGtl
eXVwIGNvbnRleHRtZW51IiApLnNwbGl0KCAiICIgKSwKKyAgICBmdW5jdGlvbiggaSwgbmFtZSAp
IHsKKworICAgIC8vIEhhbmRsZSBldmVudCBiaW5kaW5nCisgICAgalF1ZXJ5LmZuWyBuYW1lIF0g
PSBmdW5jdGlvbiggZGF0YSwgZm4gKSB7CisgICAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3Ro
ID4gMCA/CisgICAgICAgICAgICB0aGlzLm9uKCBuYW1lLCBudWxsLCBkYXRhLCBmbiApIDoKKyAg
ICAgICAgICAgIHRoaXMudHJpZ2dlciggbmFtZSApOworICAgIH07Cit9ICk7CisKK2pRdWVyeS5m
bi5leHRlbmQoIHsKKyAgICBob3ZlcjogZnVuY3Rpb24oIGZuT3ZlciwgZm5PdXQgKSB7CisgICAg
ICAgIHJldHVybiB0aGlzLm1vdXNlZW50ZXIoIGZuT3ZlciApLm1vdXNlbGVhdmUoIGZuT3V0IHx8
IGZuT3ZlciApOworICAgIH0KK30gKTsKKworfSApOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
anF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2V2ZW50L2ZvY3VzaW4uanMgYi9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvZXZlbnQvZm9jdXNpbi5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mNWU5NTA3ZTFjZWQ5YWNjNjc3OWU3MGUzMTc4YmU0ZjNkZjgxNDEyCi0tLSAvZGV2
L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2V2
ZW50L2ZvY3VzaW4uanMKQEAgLTAsMCArMSw1NSBAQAorZGVmaW5lKCBbCisgICAgIi4uL2NvcmUi
LAorICAgICIuLi9kYXRhL3Zhci9kYXRhUHJpdiIsCisgICAgIi4vc3VwcG9ydCIsCisKKyAgICAi
Li4vZXZlbnQiLAorICAgICIuL3RyaWdnZXIiCitdLCBmdW5jdGlvbiggalF1ZXJ5LCBkYXRhUHJp
diwgc3VwcG9ydCApIHsKKworInVzZSBzdHJpY3QiOworCisvLyBTdXBwb3J0OiBGaXJlZm94IDw9
NDQKKy8vIEZpcmVmb3ggZG9lc24ndCBoYXZlIGZvY3VzKGluIHwgb3V0KSBldmVudHMKKy8vIFJl
bGF0ZWQgdGlja2V0IC0gaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Njg3Nzg3CisvLworLy8gU3VwcG9ydDogQ2hyb21lIDw9NDggLSA0OSwgU2FmYXJpIDw9OS4w
IC0gOS4xCisvLyBmb2N1cyhpbiB8IG91dCkgZXZlbnRzIGZpcmUgYWZ0ZXIgZm9jdXMgJiBibHVy
IGV2ZW50cywKKy8vIHdoaWNoIGlzIHNwZWMgdmlvbGF0aW9uIC0gaHR0cDovL3d3dy53My5vcmcv
VFIvRE9NLUxldmVsLTMtRXZlbnRzLyNldmVudHMtZm9jdXNldmVudC1ldmVudC1vcmRlcgorLy8g
UmVsYXRlZCB0aWNrZXQgLSBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNz
dWVzL2RldGFpbD9pZD00NDk4NTcKK2lmICggIXN1cHBvcnQuZm9jdXNpbiApIHsKKyAgICBqUXVl
cnkuZWFjaCggeyBmb2N1czogImZvY3VzaW4iLCBibHVyOiAiZm9jdXNvdXQiIH0sIGZ1bmN0aW9u
KCBvcmlnLCBmaXggKSB7CisKKyAgICAgICAgLy8gQXR0YWNoIGEgc2luZ2xlIGNhcHR1cmluZyBo
YW5kbGVyIG9uIHRoZSBkb2N1bWVudCB3aGlsZSBzb21lb25lIHdhbnRzIGZvY3VzaW4vZm9jdXNv
dXQKKyAgICAgICAgdmFyIGhhbmRsZXIgPSBmdW5jdGlvbiggZXZlbnQgKSB7CisgICAgICAgICAg
ICBqUXVlcnkuZXZlbnQuc2ltdWxhdGUoIGZpeCwgZXZlbnQudGFyZ2V0LCBqUXVlcnkuZXZlbnQu
Zml4KCBldmVudCApICk7CisgICAgICAgIH07CisKKyAgICAgICAgalF1ZXJ5LmV2ZW50LnNwZWNp
YWxbIGZpeCBdID0geworICAgICAgICAgICAgc2V0dXA6IGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgICAgIHZhciBkb2MgPSB0aGlzLm93bmVyRG9jdW1lbnQgfHwgdGhpcywKKyAgICAgICAgICAg
ICAgICAgICAgYXR0YWNoZXMgPSBkYXRhUHJpdi5hY2Nlc3MoIGRvYywgZml4ICk7CisKKyAgICAg
ICAgICAgICAgICBpZiAoICFhdHRhY2hlcyApIHsKKyAgICAgICAgICAgICAgICAgICAgZG9jLmFk
ZEV2ZW50TGlzdGVuZXIoIG9yaWcsIGhhbmRsZXIsIHRydWUgKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgZGF0YVByaXYuYWNjZXNzKCBkb2MsIGZpeCwgKCBhdHRhY2hlcyB8
fCAwICkgKyAxICk7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgdGVhcmRvd246IGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgICAgIHZhciBkb2MgPSB0aGlzLm93bmVyRG9jdW1lbnQgfHwg
dGhpcywKKyAgICAgICAgICAgICAgICAgICAgYXR0YWNoZXMgPSBkYXRhUHJpdi5hY2Nlc3MoIGRv
YywgZml4ICkgLSAxOworCisgICAgICAgICAgICAgICAgaWYgKCAhYXR0YWNoZXMgKSB7CisgICAg
ICAgICAgICAgICAgICAgIGRvYy5yZW1vdmVFdmVudExpc3RlbmVyKCBvcmlnLCBoYW5kbGVyLCB0
cnVlICk7CisgICAgICAgICAgICAgICAgICAgIGRhdGFQcml2LnJlbW92ZSggZG9jLCBmaXggKTsK
KworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGRhdGFQcml2
LmFjY2VzcyggZG9jLCBmaXgsIGF0dGFjaGVzICk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorICAgICAgICB9OworICAgIH0gKTsKK30KKworcmV0dXJuIGpRdWVyeTsKK30gKTsK
ZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9l
dmVudC9zdXBwb3J0LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkv
c3JjL2V2ZW50L3N1cHBvcnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzAxMzAyYjUwYmUwNDg1M2UzZjUwZTI4
MjkxMDNjMjllYjBjZTNlMgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9u
b2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9ldmVudC9zdXBwb3J0LmpzCkBAIC0wLDAgKzEsMTEgQEAK
K2RlZmluZSggWworICAgICIuLi92YXIvc3VwcG9ydCIKK10sIGZ1bmN0aW9uKCBzdXBwb3J0ICkg
eworCisidXNlIHN0cmljdCI7CisKK3N1cHBvcnQuZm9jdXNpbiA9ICJvbmZvY3VzaW4iIGluIHdp
bmRvdzsKKworcmV0dXJuIHN1cHBvcnQ7CisKK30gKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9ldmVudC90cmlnZ2VyLmpzIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2V2ZW50L3RyaWdnZXIuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYWY4MzkwYWI4NTQwZDE4MDcwYmQ4ZWViYjUxOWQ2Y2I2NTU5ZDY2MQotLS0gL2Rl
di9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9l
dmVudC90cmlnZ2VyLmpzCkBAIC0wLDAgKzEsMTg1IEBACitkZWZpbmUoIFsKKyAgICAiLi4vY29y
ZSIsCisgICAgIi4uL3Zhci9kb2N1bWVudCIsCisgICAgIi4uL2RhdGEvdmFyL2RhdGFQcml2IiwK
KyAgICAiLi4vZGF0YS92YXIvYWNjZXB0RGF0YSIsCisgICAgIi4uL3Zhci9oYXNPd24iLAorCisg
ICAgIi4uL2V2ZW50IgorXSwgZnVuY3Rpb24oIGpRdWVyeSwgZG9jdW1lbnQsIGRhdGFQcml2LCBh
Y2NlcHREYXRhLCBoYXNPd24gKSB7CisKKyJ1c2Ugc3RyaWN0IjsKKwordmFyIHJmb2N1c01vcnBo
ID0gL14oPzpmb2N1c2luZm9jdXN8Zm9jdXNvdXRibHVyKSQvOworCitqUXVlcnkuZXh0ZW5kKCBq
UXVlcnkuZXZlbnQsIHsKKworICAgIHRyaWdnZXI6IGZ1bmN0aW9uKCBldmVudCwgZGF0YSwgZWxl
bSwgb25seUhhbmRsZXJzICkgeworCisgICAgICAgIHZhciBpLCBjdXIsIHRtcCwgYnViYmxlVHlw
ZSwgb250eXBlLCBoYW5kbGUsIHNwZWNpYWwsCisgICAgICAgICAgICBldmVudFBhdGggPSBbIGVs
ZW0gfHwgZG9jdW1lbnQgXSwKKyAgICAgICAgICAgIHR5cGUgPSBoYXNPd24uY2FsbCggZXZlbnQs
ICJ0eXBlIiApID8gZXZlbnQudHlwZSA6IGV2ZW50LAorICAgICAgICAgICAgbmFtZXNwYWNlcyA9
IGhhc093bi5jYWxsKCBldmVudCwgIm5hbWVzcGFjZSIgKSA/IGV2ZW50Lm5hbWVzcGFjZS5zcGxp
dCggIi4iICkgOiBbXTsKKworICAgICAgICBjdXIgPSB0bXAgPSBlbGVtID0gZWxlbSB8fCBkb2N1
bWVudDsKKworICAgICAgICAvLyBEb24ndCBkbyBldmVudHMgb24gdGV4dCBhbmQgY29tbWVudCBu
b2RlcworICAgICAgICBpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDMgfHwgZWxlbS5ub2RlVHlwZSA9
PT0gOCApIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIGZv
Y3VzL2JsdXIgbW9ycGhzIHRvIGZvY3VzaW4vb3V0OyBlbnN1cmUgd2UncmUgbm90IGZpcmluZyB0
aGVtIHJpZ2h0IG5vdworICAgICAgICBpZiAoIHJmb2N1c01vcnBoLnRlc3QoIHR5cGUgKyBqUXVl
cnkuZXZlbnQudHJpZ2dlcmVkICkgKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBpZiAoIHR5cGUuaW5kZXhPZiggIi4iICkgPiAtMSApIHsKKworICAgICAgICAg
ICAgLy8gTmFtZXNwYWNlZCB0cmlnZ2VyOyBjcmVhdGUgYSByZWdleHAgdG8gbWF0Y2ggZXZlbnQg
dHlwZSBpbiBoYW5kbGUoKQorICAgICAgICAgICAgbmFtZXNwYWNlcyA9IHR5cGUuc3BsaXQoICIu
IiApOworICAgICAgICAgICAgdHlwZSA9IG5hbWVzcGFjZXMuc2hpZnQoKTsKKyAgICAgICAgICAg
IG5hbWVzcGFjZXMuc29ydCgpOworICAgICAgICB9CisgICAgICAgIG9udHlwZSA9IHR5cGUuaW5k
ZXhPZiggIjoiICkgPCAwICYmICJvbiIgKyB0eXBlOworCisgICAgICAgIC8vIENhbGxlciBjYW4g
cGFzcyBpbiBhIGpRdWVyeS5FdmVudCBvYmplY3QsIE9iamVjdCwgb3IganVzdCBhbiBldmVudCB0
eXBlIHN0cmluZworICAgICAgICBldmVudCA9IGV2ZW50WyBqUXVlcnkuZXhwYW5kbyBdID8KKyAg
ICAgICAgICAgIGV2ZW50IDoKKyAgICAgICAgICAgIG5ldyBqUXVlcnkuRXZlbnQoIHR5cGUsIHR5
cGVvZiBldmVudCA9PT0gIm9iamVjdCIgJiYgZXZlbnQgKTsKKworICAgICAgICAvLyBUcmlnZ2Vy
IGJpdG1hc2s6ICYgMSBmb3IgbmF0aXZlIGhhbmRsZXJzOyAmIDIgZm9yIGpRdWVyeSAoYWx3YXlz
IHRydWUpCisgICAgICAgIGV2ZW50LmlzVHJpZ2dlciA9IG9ubHlIYW5kbGVycyA/IDIgOiAzOwor
ICAgICAgICBldmVudC5uYW1lc3BhY2UgPSBuYW1lc3BhY2VzLmpvaW4oICIuIiApOworICAgICAg
ICBldmVudC5ybmFtZXNwYWNlID0gZXZlbnQubmFtZXNwYWNlID8KKyAgICAgICAgICAgIG5ldyBS
ZWdFeHAoICIoXnxcXC4pIiArIG5hbWVzcGFjZXMuam9pbiggIlxcLig/Oi4qXFwufCkiICkgKyAi
KFxcLnwkKSIgKSA6CisgICAgICAgICAgICBudWxsOworCisgICAgICAgIC8vIENsZWFuIHVwIHRo
ZSBldmVudCBpbiBjYXNlIGl0IGlzIGJlaW5nIHJldXNlZAorICAgICAgICBldmVudC5yZXN1bHQg
PSB1bmRlZmluZWQ7CisgICAgICAgIGlmICggIWV2ZW50LnRhcmdldCApIHsKKyAgICAgICAgICAg
IGV2ZW50LnRhcmdldCA9IGVsZW07CisgICAgICAgIH0KKworICAgICAgICAvLyBDbG9uZSBhbnkg
aW5jb21pbmcgZGF0YSBhbmQgcHJlcGVuZCB0aGUgZXZlbnQsIGNyZWF0aW5nIHRoZSBoYW5kbGVy
IGFyZyBsaXN0CisgICAgICAgIGRhdGEgPSBkYXRhID09IG51bGwgPworICAgICAgICAgICAgWyBl
dmVudCBdIDoKKyAgICAgICAgICAgIGpRdWVyeS5tYWtlQXJyYXkoIGRhdGEsIFsgZXZlbnQgXSAp
OworCisgICAgICAgIC8vIEFsbG93IHNwZWNpYWwgZXZlbnRzIHRvIGRyYXcgb3V0c2lkZSB0aGUg
bGluZXMKKyAgICAgICAgc3BlY2lhbCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsWyB0eXBlIF0gfHwg
e307CisgICAgICAgIGlmICggIW9ubHlIYW5kbGVycyAmJiBzcGVjaWFsLnRyaWdnZXIgJiYgc3Bl
Y2lhbC50cmlnZ2VyLmFwcGx5KCBlbGVtLCBkYXRhICkgPT09IGZhbHNlICkgeworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gRGV0ZXJtaW5lIGV2ZW50IHByb3Bh
Z2F0aW9uIHBhdGggaW4gYWR2YW5jZSwgcGVyIFczQyBldmVudHMgc3BlYyAoIzk5NTEpCisgICAg
ICAgIC8vIEJ1YmJsZSB1cCB0byBkb2N1bWVudCwgdGhlbiB0byB3aW5kb3c7IHdhdGNoIGZvciBh
IGdsb2JhbCBvd25lckRvY3VtZW50IHZhciAoIzk3MjQpCisgICAgICAgIGlmICggIW9ubHlIYW5k
bGVycyAmJiAhc3BlY2lhbC5ub0J1YmJsZSAmJiAhalF1ZXJ5LmlzV2luZG93KCBlbGVtICkgKSB7
CisKKyAgICAgICAgICAgIGJ1YmJsZVR5cGUgPSBzcGVjaWFsLmRlbGVnYXRlVHlwZSB8fCB0eXBl
OworICAgICAgICAgICAgaWYgKCAhcmZvY3VzTW9ycGgudGVzdCggYnViYmxlVHlwZSArIHR5cGUg
KSApIHsKKyAgICAgICAgICAgICAgICBjdXIgPSBjdXIucGFyZW50Tm9kZTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGZvciAoIDsgY3VyOyBjdXIgPSBjdXIucGFyZW50Tm9kZSApIHsKKyAg
ICAgICAgICAgICAgICBldmVudFBhdGgucHVzaCggY3VyICk7CisgICAgICAgICAgICAgICAgdG1w
ID0gY3VyOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBPbmx5IGFkZCB3aW5kb3cg
aWYgd2UgZ290IHRvIGRvY3VtZW50IChlLmcuLCBub3QgcGxhaW4gb2JqIG9yIGRldGFjaGVkIERP
TSkKKyAgICAgICAgICAgIGlmICggdG1wID09PSAoIGVsZW0ub3duZXJEb2N1bWVudCB8fCBkb2N1
bWVudCApICkgeworICAgICAgICAgICAgICAgIGV2ZW50UGF0aC5wdXNoKCB0bXAuZGVmYXVsdFZp
ZXcgfHwgdG1wLnBhcmVudFdpbmRvdyB8fCB3aW5kb3cgKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorCisgICAgICAgIC8vIEZpcmUgaGFuZGxlcnMgb24gdGhlIGV2ZW50IHBhdGgKKyAgICAg
ICAgaSA9IDA7CisgICAgICAgIHdoaWxlICggKCBjdXIgPSBldmVudFBhdGhbIGkrKyBdICkgJiYg
IWV2ZW50LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkgKSB7CisKKyAgICAgICAgICAgIGV2ZW50LnR5
cGUgPSBpID4gMSA/CisgICAgICAgICAgICAgICAgYnViYmxlVHlwZSA6CisgICAgICAgICAgICAg
ICAgc3BlY2lhbC5iaW5kVHlwZSB8fCB0eXBlOworCisgICAgICAgICAgICAvLyBqUXVlcnkgaGFu
ZGxlcgorICAgICAgICAgICAgaGFuZGxlID0gKCBkYXRhUHJpdi5nZXQoIGN1ciwgImV2ZW50cyIg
KSB8fCB7fSApWyBldmVudC50eXBlIF0gJiYKKyAgICAgICAgICAgICAgICBkYXRhUHJpdi5nZXQo
IGN1ciwgImhhbmRsZSIgKTsKKyAgICAgICAgICAgIGlmICggaGFuZGxlICkgeworICAgICAgICAg
ICAgICAgIGhhbmRsZS5hcHBseSggY3VyLCBkYXRhICk7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIC8vIE5hdGl2ZSBoYW5kbGVyCisgICAgICAgICAgICBoYW5kbGUgPSBvbnR5cGUgJiYg
Y3VyWyBvbnR5cGUgXTsKKyAgICAgICAgICAgIGlmICggaGFuZGxlICYmIGhhbmRsZS5hcHBseSAm
JiBhY2NlcHREYXRhKCBjdXIgKSApIHsKKyAgICAgICAgICAgICAgICBldmVudC5yZXN1bHQgPSBo
YW5kbGUuYXBwbHkoIGN1ciwgZGF0YSApOworICAgICAgICAgICAgICAgIGlmICggZXZlbnQucmVz
dWx0ID09PSBmYWxzZSApIHsKKyAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1
bHQoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgZXZlbnQudHlwZSA9IHR5cGU7CisKKyAgICAgICAgLy8gSWYgbm9ib2R5IHByZXZlbnRlZCB0
aGUgZGVmYXVsdCBhY3Rpb24sIGRvIGl0IG5vdworICAgICAgICBpZiAoICFvbmx5SGFuZGxlcnMg
JiYgIWV2ZW50LmlzRGVmYXVsdFByZXZlbnRlZCgpICkgeworCisgICAgICAgICAgICBpZiAoICgg
IXNwZWNpYWwuX2RlZmF1bHQgfHwKKyAgICAgICAgICAgICAgICBzcGVjaWFsLl9kZWZhdWx0LmFw
cGx5KCBldmVudFBhdGgucG9wKCksIGRhdGEgKSA9PT0gZmFsc2UgKSAmJgorICAgICAgICAgICAg
ICAgIGFjY2VwdERhdGEoIGVsZW0gKSApIHsKKworICAgICAgICAgICAgICAgIC8vIENhbGwgYSBu
YXRpdmUgRE9NIG1ldGhvZCBvbiB0aGUgdGFyZ2V0IHdpdGggdGhlIHNhbWUgbmFtZSBhcyB0aGUg
ZXZlbnQuCisgICAgICAgICAgICAgICAgLy8gRG9uJ3QgZG8gZGVmYXVsdCBhY3Rpb25zIG9uIHdp
bmRvdywgdGhhdCdzIHdoZXJlIGdsb2JhbCB2YXJpYWJsZXMgYmUgKCM2MTcwKQorICAgICAgICAg
ICAgICAgIGlmICggb250eXBlICYmIGpRdWVyeS5pc0Z1bmN0aW9uKCBlbGVtWyB0eXBlIF0gKSAm
JiAhalF1ZXJ5LmlzV2luZG93KCBlbGVtICkgKSB7CisKKyAgICAgICAgICAgICAgICAgICAgLy8g
RG9uJ3QgcmUtdHJpZ2dlciBhbiBvbkZPTyBldmVudCB3aGVuIHdlIGNhbGwgaXRzIEZPTygpIG1l
dGhvZAorICAgICAgICAgICAgICAgICAgICB0bXAgPSBlbGVtWyBvbnR5cGUgXTsKKworICAgICAg
ICAgICAgICAgICAgICBpZiAoIHRtcCApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1b
IG9udHlwZSBdID0gbnVsbDsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgICAgIC8vIFByZXZlbnQgcmUtdHJpZ2dlcmluZyBvZiB0aGUgc2FtZSBldmVudCwgc2luY2Ug
d2UgYWxyZWFkeSBidWJibGVkIGl0IGFib3ZlCisgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5l
dmVudC50cmlnZ2VyZWQgPSB0eXBlOworICAgICAgICAgICAgICAgICAgICBlbGVtWyB0eXBlIF0o
KTsKKyAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmV2ZW50LnRyaWdnZXJlZCA9IHVuZGVmaW5l
ZDsKKworICAgICAgICAgICAgICAgICAgICBpZiAoIHRtcCApIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGVsZW1bIG9udHlwZSBdID0gdG1wOworICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJu
IGV2ZW50LnJlc3VsdDsKKyAgICB9LAorCisgICAgLy8gUGlnZ3liYWNrIG9uIGEgZG9ub3IgZXZl
bnQgdG8gc2ltdWxhdGUgYSBkaWZmZXJlbnQgb25lCisgICAgLy8gVXNlZCBvbmx5IGZvciBgZm9j
dXMoaW4gfCBvdXQpYCBldmVudHMKKyAgICBzaW11bGF0ZTogZnVuY3Rpb24oIHR5cGUsIGVsZW0s
IGV2ZW50ICkgeworICAgICAgICB2YXIgZSA9IGpRdWVyeS5leHRlbmQoCisgICAgICAgICAgICBu
ZXcgalF1ZXJ5LkV2ZW50KCksCisgICAgICAgICAgICBldmVudCwKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICB0eXBlOiB0eXBlLAorICAgICAgICAgICAgICAgIGlzU2ltdWxhdGVkOiB0
cnVlCisgICAgICAgICAgICB9CisgICAgICAgICk7CisKKyAgICAgICAgalF1ZXJ5LmV2ZW50LnRy
aWdnZXIoIGUsIG51bGwsIGVsZW0gKTsKKyAgICB9CisKK30gKTsKKworalF1ZXJ5LmZuLmV4dGVu
ZCggeworCisgICAgdHJpZ2dlcjogZnVuY3Rpb24oIHR5cGUsIGRhdGEgKSB7CisgICAgICAgIHJl
dHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgalF1ZXJ5LmV2ZW50LnRy
aWdnZXIoIHR5cGUsIGRhdGEsIHRoaXMgKTsKKyAgICAgICAgfSApOworICAgIH0sCisgICAgdHJp
Z2dlckhhbmRsZXI6IGZ1bmN0aW9uKCB0eXBlLCBkYXRhICkgeworICAgICAgICB2YXIgZWxlbSA9
IHRoaXNbIDAgXTsKKyAgICAgICAgaWYgKCBlbGVtICkgeworICAgICAgICAgICAgcmV0dXJuIGpR
dWVyeS5ldmVudC50cmlnZ2VyKCB0eXBlLCBkYXRhLCBlbGVtLCB0cnVlICk7CisgICAgICAgIH0K
KyAgICB9Cit9ICk7CisKK3JldHVybiBqUXVlcnk7Cit9ICk7CmRpZmYgLS1naXQgYS9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvZXhwb3J0cy9hbWQuanMgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvZXhwb3J0cy9hbWQuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uODRkMjBkODE4ZTYzMzNkNDg4MDRiMWVmY2Y3ZDQ4OWUyZDMzZjY2NgotLS0gL2Rl
di9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9l
eHBvcnRzL2FtZC5qcwpAQCAtMCwwICsxLDI2IEBACitkZWZpbmUoIFsKKyAgICAiLi4vY29yZSIK
K10sIGZ1bmN0aW9uKCBqUXVlcnkgKSB7CisKKyJ1c2Ugc3RyaWN0IjsKKworLy8gUmVnaXN0ZXIg
YXMgYSBuYW1lZCBBTUQgbW9kdWxlLCBzaW5jZSBqUXVlcnkgY2FuIGJlIGNvbmNhdGVuYXRlZCB3
aXRoIG90aGVyCisvLyBmaWxlcyB0aGF0IG1heSB1c2UgZGVmaW5lLCBidXQgbm90IHZpYSBhIHBy
b3BlciBjb25jYXRlbmF0aW9uIHNjcmlwdCB0aGF0CisvLyB1bmRlcnN0YW5kcyBhbm9ueW1vdXMg
QU1EIG1vZHVsZXMuIEEgbmFtZWQgQU1EIGlzIHNhZmVzdCBhbmQgbW9zdCByb2J1c3QKKy8vIHdh
eSB0byByZWdpc3Rlci4gTG93ZXJjYXNlIGpxdWVyeSBpcyB1c2VkIGJlY2F1c2UgQU1EIG1vZHVs
ZSBuYW1lcyBhcmUKKy8vIGRlcml2ZWQgZnJvbSBmaWxlIG5hbWVzLCBhbmQgalF1ZXJ5IGlzIG5v
cm1hbGx5IGRlbGl2ZXJlZCBpbiBhIGxvd2VyY2FzZQorLy8gZmlsZSBuYW1lLiBEbyB0aGlzIGFm
dGVyIGNyZWF0aW5nIHRoZSBnbG9iYWwgc28gdGhhdCBpZiBhbiBBTUQgbW9kdWxlIHdhbnRzCisv
LyB0byBjYWxsIG5vQ29uZmxpY3QgdG8gaGlkZSB0aGlzIHZlcnNpb24gb2YgalF1ZXJ5LCBpdCB3
aWxsIHdvcmsuCisKKy8vIE5vdGUgdGhhdCBmb3IgbWF4aW11bSBwb3J0YWJpbGl0eSwgbGlicmFy
aWVzIHRoYXQgYXJlIG5vdCBqUXVlcnkgc2hvdWxkCisvLyBkZWNsYXJlIHRoZW1zZWx2ZXMgYXMg
YW5vbnltb3VzIG1vZHVsZXMsIGFuZCBhdm9pZCBzZXR0aW5nIGEgZ2xvYmFsIGlmIGFuCisvLyBB
TUQgbG9hZGVyIGlzIHByZXNlbnQuIGpRdWVyeSBpcyBhIHNwZWNpYWwgY2FzZS4gRm9yIG1vcmUg
aW5mb3JtYXRpb24sIHNlZQorLy8gaHR0cHM6Ly9naXRodWIuY29tL2pyYnVya2UvcmVxdWlyZWpz
L3dpa2kvVXBkYXRpbmctZXhpc3RpbmctbGlicmFyaWVzI3dpa2ktYW5vbgorCitpZiAoIHR5cGVv
ZiBkZWZpbmUgPT09ICJmdW5jdGlvbiIgJiYgZGVmaW5lLmFtZCApIHsKKyAgICBkZWZpbmUoICJq
cXVlcnkiLCBbXSwgZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiBqUXVlcnk7CisgICAgfSAp
OworfQorCit9ICk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVz
L2pxdWVyeS9zcmMvZXhwb3J0cy9nbG9iYWwuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9t
b2R1bGVzL2pxdWVyeS9zcmMvZXhwb3J0cy9nbG9iYWwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmE4ZjA1YWM3
NDNiM2Q0MTA3Y2RlNDA0YzQxNGVhODg3MzVmZjg4ZgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9leHBvcnRzL2dsb2JhbC5qcwpA
QCAtMCwwICsxLDM0IEBACitkZWZpbmUoIFsKKyAgICAiLi4vY29yZSIKK10sIGZ1bmN0aW9uKCBq
UXVlcnksIG5vR2xvYmFsICkgeworCisidXNlIHN0cmljdCI7CisKK3ZhcgorCisgICAgLy8gTWFw
IG92ZXIgalF1ZXJ5IGluIGNhc2Ugb2Ygb3ZlcndyaXRlCisgICAgX2pRdWVyeSA9IHdpbmRvdy5q
UXVlcnksCisKKyAgICAvLyBNYXAgb3ZlciB0aGUgJCBpbiBjYXNlIG9mIG92ZXJ3cml0ZQorICAg
IF8kID0gd2luZG93LiQ7CisKK2pRdWVyeS5ub0NvbmZsaWN0ID0gZnVuY3Rpb24oIGRlZXAgKSB7
CisgICAgaWYgKCB3aW5kb3cuJCA9PT0galF1ZXJ5ICkgeworICAgICAgICB3aW5kb3cuJCA9IF8k
OworICAgIH0KKworICAgIGlmICggZGVlcCAmJiB3aW5kb3cualF1ZXJ5ID09PSBqUXVlcnkgKSB7
CisgICAgICAgIHdpbmRvdy5qUXVlcnkgPSBfalF1ZXJ5OworICAgIH0KKworICAgIHJldHVybiBq
UXVlcnk7Cit9OworCisvLyBFeHBvc2UgalF1ZXJ5IGFuZCAkIGlkZW50aWZpZXJzLCBldmVuIGlu
IEFNRAorLy8gKCM3MTAyI2NvbW1lbnQ6MTAsIGh0dHBzOi8vZ2l0aHViLmNvbS9qcXVlcnkvanF1
ZXJ5L3B1bGwvNTU3KQorLy8gYW5kIENvbW1vbkpTIGZvciBicm93c2VyIGVtdWxhdG9ycyAoIzEz
NTY2KQoraWYgKCAhbm9HbG9iYWwgKSB7CisgICAgd2luZG93LmpRdWVyeSA9IHdpbmRvdy4kID0g
alF1ZXJ5OworfQorCit9ICk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9t
b2R1bGVzL2pxdWVyeS9zcmMvanF1ZXJ5LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9k
dWxlcy9qcXVlcnkvc3JjL2pxdWVyeS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMTRmNmI1MzM3NWRjZDFhNzM3
NTk5ZWRhODIzYjU4Njc0MDViZjc5Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1
ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL2pxdWVyeS5qcwpAQCAtMCwwICsxLDQxIEBACitk
ZWZpbmUoIFsKKyAgICAiLi9jb3JlIiwKKyAgICAiLi9zZWxlY3RvciIsCisgICAgIi4vdHJhdmVy
c2luZyIsCisgICAgIi4vY2FsbGJhY2tzIiwKKyAgICAiLi9kZWZlcnJlZCIsCisgICAgIi4vZGVm
ZXJyZWQvZXhjZXB0aW9uSG9vayIsCisgICAgIi4vY29yZS9yZWFkeSIsCisgICAgIi4vZGF0YSIs
CisgICAgIi4vcXVldWUiLAorICAgICIuL3F1ZXVlL2RlbGF5IiwKKyAgICAiLi9hdHRyaWJ1dGVz
IiwKKyAgICAiLi9ldmVudCIsCisgICAgIi4vZXZlbnQvYWxpYXMiLAorICAgICIuL2V2ZW50L2Zv
Y3VzaW4iLAorICAgICIuL21hbmlwdWxhdGlvbiIsCisgICAgIi4vbWFuaXB1bGF0aW9uL19ldmFs
VXJsIiwKKyAgICAiLi93cmFwIiwKKyAgICAiLi9jc3MiLAorICAgICIuL2Nzcy9oaWRkZW5WaXNp
YmxlU2VsZWN0b3JzIiwKKyAgICAiLi9zZXJpYWxpemUiLAorICAgICIuL2FqYXgiLAorICAgICIu
L2FqYXgveGhyIiwKKyAgICAiLi9hamF4L3NjcmlwdCIsCisgICAgIi4vYWpheC9qc29ucCIsCisg
ICAgIi4vYWpheC9sb2FkIiwKKyAgICAiLi9ldmVudC9hamF4IiwKKyAgICAiLi9lZmZlY3RzIiwK
KyAgICAiLi9lZmZlY3RzL2FuaW1hdGVkU2VsZWN0b3IiLAorICAgICIuL29mZnNldCIsCisgICAg
Ii4vZGltZW5zaW9ucyIsCisgICAgIi4vZGVwcmVjYXRlZCIsCisgICAgIi4vZXhwb3J0cy9hbWQi
LAorICAgICIuL2V4cG9ydHMvZ2xvYmFsIgorXSwgZnVuY3Rpb24oIGpRdWVyeSApIHsKKworInVz
ZSBzdHJpY3QiOworCityZXR1cm4galF1ZXJ5OworCit9ICk7CmRpZmYgLS1naXQgYS9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvbWFuaXB1bGF0aW9uLmpzIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL21hbmlwdWxhdGlvbi5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40NGQ5NDBiMDY5OWI2YTkxODJjMzg1NTQ0YmQ3ZWM2M2FmYmZjOTI5Ci0tLSAv
ZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3Jj
L21hbmlwdWxhdGlvbi5qcwpAQCAtMCwwICsxLDQ4NiBAQAorZGVmaW5lKCBbCisgICAgIi4vY29y
ZSIsCisgICAgIi4vdmFyL2NvbmNhdCIsCisgICAgIi4vdmFyL3B1c2giLAorICAgICIuL2NvcmUv
YWNjZXNzIiwKKyAgICAiLi9tYW5pcHVsYXRpb24vdmFyL3JjaGVja2FibGVUeXBlIiwKKyAgICAi
Li9tYW5pcHVsYXRpb24vdmFyL3J0YWdOYW1lIiwKKyAgICAiLi9tYW5pcHVsYXRpb24vdmFyL3Jz
Y3JpcHRUeXBlIiwKKyAgICAiLi9tYW5pcHVsYXRpb24vd3JhcE1hcCIsCisgICAgIi4vbWFuaXB1
bGF0aW9uL2dldEFsbCIsCisgICAgIi4vbWFuaXB1bGF0aW9uL3NldEdsb2JhbEV2YWwiLAorICAg
ICIuL21hbmlwdWxhdGlvbi9idWlsZEZyYWdtZW50IiwKKyAgICAiLi9tYW5pcHVsYXRpb24vc3Vw
cG9ydCIsCisKKyAgICAiLi9kYXRhL3Zhci9kYXRhUHJpdiIsCisgICAgIi4vZGF0YS92YXIvZGF0
YVVzZXIiLAorICAgICIuL2RhdGEvdmFyL2FjY2VwdERhdGEiLAorICAgICIuL2NvcmUvRE9NRXZh
bCIsCisKKyAgICAiLi9jb3JlL2luaXQiLAorICAgICIuL3RyYXZlcnNpbmciLAorICAgICIuL3Nl
bGVjdG9yIiwKKyAgICAiLi9ldmVudCIKK10sIGZ1bmN0aW9uKCBqUXVlcnksIGNvbmNhdCwgcHVz
aCwgYWNjZXNzLAorICAgIHJjaGVja2FibGVUeXBlLCBydGFnTmFtZSwgcnNjcmlwdFR5cGUsCisg
ICAgd3JhcE1hcCwgZ2V0QWxsLCBzZXRHbG9iYWxFdmFsLCBidWlsZEZyYWdtZW50LCBzdXBwb3J0
LAorICAgIGRhdGFQcml2LCBkYXRhVXNlciwgYWNjZXB0RGF0YSwgRE9NRXZhbCApIHsKKworInVz
ZSBzdHJpY3QiOworCit2YXIKKworICAgIC8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4gKi8KKwor
ICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZXNsaW50L2VzbGludC9pc3N1ZXMvMzIyOQor
ICAgIHJ4aHRtbFRhZyA9IC88KD8hYXJlYXxicnxjb2x8ZW1iZWR8aHJ8aW1nfGlucHV0fGxpbmt8
bWV0YXxwYXJhbSkoKFthLXpdW15cL1wwPlx4MjBcdFxyXG5cZl0qKVtePl0qKVwvPi9naSwKKwor
ICAgIC8qIGVzbGludC1lbmFibGUgKi8KKworICAgIC8vIFN1cHBvcnQ6IElFIDw9MTAgLSAxMSwg
RWRnZSAxMiAtIDEzCisgICAgLy8gSW4gSUUvRWRnZSB1c2luZyByZWdleCBncm91cHMgaGVyZSBj
YXVzZXMgc2V2ZXJlIHNsb3dkb3ducy4KKyAgICAvLyBTZWUgaHR0cHM6Ly9jb25uZWN0Lm1pY3Jv
c29mdC5jb20vSUUvZmVlZGJhY2svZGV0YWlscy8xNzM2NTEyLworICAgIHJub0lubmVyaHRtbCA9
IC88c2NyaXB0fDxzdHlsZXw8bGluay9pLAorCisgICAgLy8gY2hlY2tlZD0iY2hlY2tlZCIgb3Ig
Y2hlY2tlZAorICAgIHJjaGVja2VkID0gL2NoZWNrZWRccyooPzpbXj1dfD1ccyouY2hlY2tlZC4p
L2ksCisgICAgcnNjcmlwdFR5cGVNYXNrZWQgPSAvXnRydWVcLyguKikvLAorICAgIHJjbGVhblNj
cmlwdCA9IC9eXHMqPCEoPzpcW0NEQVRBXFt8LS0pfCg/OlxdXF18LS0pPlxzKiQvZzsKKworZnVu
Y3Rpb24gbWFuaXB1bGF0aW9uVGFyZ2V0KCBlbGVtLCBjb250ZW50ICkgeworICAgIGlmICggalF1
ZXJ5Lm5vZGVOYW1lKCBlbGVtLCAidGFibGUiICkgJiYKKyAgICAgICAgalF1ZXJ5Lm5vZGVOYW1l
KCBjb250ZW50Lm5vZGVUeXBlICE9PSAxMSA/IGNvbnRlbnQgOiBjb250ZW50LmZpcnN0Q2hpbGQs
ICJ0ciIgKSApIHsKKworICAgICAgICByZXR1cm4gZWxlbS5nZXRFbGVtZW50c0J5VGFnTmFtZSgg
InRib2R5IiApWyAwIF0gfHwgZWxlbTsKKyAgICB9CisKKyAgICByZXR1cm4gZWxlbTsKK30KKwor
Ly8gUmVwbGFjZS9yZXN0b3JlIHRoZSB0eXBlIGF0dHJpYnV0ZSBvZiBzY3JpcHQgZWxlbWVudHMg
Zm9yIHNhZmUgRE9NIG1hbmlwdWxhdGlvbgorZnVuY3Rpb24gZGlzYWJsZVNjcmlwdCggZWxlbSAp
IHsKKyAgICBlbGVtLnR5cGUgPSAoIGVsZW0uZ2V0QXR0cmlidXRlKCAidHlwZSIgKSAhPT0gbnVs
bCApICsgIi8iICsgZWxlbS50eXBlOworICAgIHJldHVybiBlbGVtOworfQorZnVuY3Rpb24gcmVz
dG9yZVNjcmlwdCggZWxlbSApIHsKKyAgICB2YXIgbWF0Y2ggPSByc2NyaXB0VHlwZU1hc2tlZC5l
eGVjKCBlbGVtLnR5cGUgKTsKKworICAgIGlmICggbWF0Y2ggKSB7CisgICAgICAgIGVsZW0udHlw
ZSA9IG1hdGNoWyAxIF07CisgICAgfSBlbHNlIHsKKyAgICAgICAgZWxlbS5yZW1vdmVBdHRyaWJ1
dGUoICJ0eXBlIiApOworICAgIH0KKworICAgIHJldHVybiBlbGVtOworfQorCitmdW5jdGlvbiBj
bG9uZUNvcHlFdmVudCggc3JjLCBkZXN0ICkgeworICAgIHZhciBpLCBsLCB0eXBlLCBwZGF0YU9s
ZCwgcGRhdGFDdXIsIHVkYXRhT2xkLCB1ZGF0YUN1ciwgZXZlbnRzOworCisgICAgaWYgKCBkZXN0
Lm5vZGVUeXBlICE9PSAxICkgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gMS4g
Q29weSBwcml2YXRlIGRhdGE6IGV2ZW50cywgaGFuZGxlcnMsIGV0Yy4KKyAgICBpZiAoIGRhdGFQ
cml2Lmhhc0RhdGEoIHNyYyApICkgeworICAgICAgICBwZGF0YU9sZCA9IGRhdGFQcml2LmFjY2Vz
cyggc3JjICk7CisgICAgICAgIHBkYXRhQ3VyID0gZGF0YVByaXYuc2V0KCBkZXN0LCBwZGF0YU9s
ZCApOworICAgICAgICBldmVudHMgPSBwZGF0YU9sZC5ldmVudHM7CisKKyAgICAgICAgaWYgKCBl
dmVudHMgKSB7CisgICAgICAgICAgICBkZWxldGUgcGRhdGFDdXIuaGFuZGxlOworICAgICAgICAg
ICAgcGRhdGFDdXIuZXZlbnRzID0ge307CisKKyAgICAgICAgICAgIGZvciAoIHR5cGUgaW4gZXZl
bnRzICkgeworICAgICAgICAgICAgICAgIGZvciAoIGkgPSAwLCBsID0gZXZlbnRzWyB0eXBlIF0u
bGVuZ3RoOyBpIDwgbDsgaSsrICkgeworICAgICAgICAgICAgICAgICAgICBqUXVlcnkuZXZlbnQu
YWRkKCBkZXN0LCB0eXBlLCBldmVudHNbIHR5cGUgXVsgaSBdICk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLy8gMi4gQ29weSB1c2Vy
IGRhdGEKKyAgICBpZiAoIGRhdGFVc2VyLmhhc0RhdGEoIHNyYyApICkgeworICAgICAgICB1ZGF0
YU9sZCA9IGRhdGFVc2VyLmFjY2Vzcyggc3JjICk7CisgICAgICAgIHVkYXRhQ3VyID0galF1ZXJ5
LmV4dGVuZCgge30sIHVkYXRhT2xkICk7CisKKyAgICAgICAgZGF0YVVzZXIuc2V0KCBkZXN0LCB1
ZGF0YUN1ciApOworICAgIH0KK30KKworLy8gRml4IElFIGJ1Z3MsIHNlZSBzdXBwb3J0IHRlc3Rz
CitmdW5jdGlvbiBmaXhJbnB1dCggc3JjLCBkZXN0ICkgeworICAgIHZhciBub2RlTmFtZSA9IGRl
c3Qubm9kZU5hbWUudG9Mb3dlckNhc2UoKTsKKworICAgIC8vIEZhaWxzIHRvIHBlcnNpc3QgdGhl
IGNoZWNrZWQgc3RhdGUgb2YgYSBjbG9uZWQgY2hlY2tib3ggb3IgcmFkaW8gYnV0dG9uLgorICAg
IGlmICggbm9kZU5hbWUgPT09ICJpbnB1dCIgJiYgcmNoZWNrYWJsZVR5cGUudGVzdCggc3JjLnR5
cGUgKSApIHsKKyAgICAgICAgZGVzdC5jaGVja2VkID0gc3JjLmNoZWNrZWQ7CisKKyAgICAvLyBG
YWlscyB0byByZXR1cm4gdGhlIHNlbGVjdGVkIG9wdGlvbiB0byB0aGUgZGVmYXVsdCBzZWxlY3Rl
ZCBzdGF0ZSB3aGVuIGNsb25pbmcgb3B0aW9ucworICAgIH0gZWxzZSBpZiAoIG5vZGVOYW1lID09
PSAiaW5wdXQiIHx8IG5vZGVOYW1lID09PSAidGV4dGFyZWEiICkgeworICAgICAgICBkZXN0LmRl
ZmF1bHRWYWx1ZSA9IHNyYy5kZWZhdWx0VmFsdWU7CisgICAgfQorfQorCitmdW5jdGlvbiBkb21N
YW5pcCggY29sbGVjdGlvbiwgYXJncywgY2FsbGJhY2ssIGlnbm9yZWQgKSB7CisKKyAgICAvLyBG
bGF0dGVuIGFueSBuZXN0ZWQgYXJyYXlzCisgICAgYXJncyA9IGNvbmNhdC5hcHBseSggW10sIGFy
Z3MgKTsKKworICAgIHZhciBmcmFnbWVudCwgZmlyc3QsIHNjcmlwdHMsIGhhc1NjcmlwdHMsIG5v
ZGUsIGRvYywKKyAgICAgICAgaSA9IDAsCisgICAgICAgIGwgPSBjb2xsZWN0aW9uLmxlbmd0aCwK
KyAgICAgICAgaU5vQ2xvbmUgPSBsIC0gMSwKKyAgICAgICAgdmFsdWUgPSBhcmdzWyAwIF0sCisg
ICAgICAgIGlzRnVuY3Rpb24gPSBqUXVlcnkuaXNGdW5jdGlvbiggdmFsdWUgKTsKKworICAgIC8v
IFdlIGNhbid0IGNsb25lTm9kZSBmcmFnbWVudHMgdGhhdCBjb250YWluIGNoZWNrZWQsIGluIFdl
YktpdAorICAgIGlmICggaXNGdW5jdGlvbiB8fAorICAgICAgICAgICAgKCBsID4gMSAmJiB0eXBl
b2YgdmFsdWUgPT09ICJzdHJpbmciICYmCisgICAgICAgICAgICAgICAgIXN1cHBvcnQuY2hlY2tD
bG9uZSAmJiByY2hlY2tlZC50ZXN0KCB2YWx1ZSApICkgKSB7CisgICAgICAgIHJldHVybiBjb2xs
ZWN0aW9uLmVhY2goIGZ1bmN0aW9uKCBpbmRleCApIHsKKyAgICAgICAgICAgIHZhciBzZWxmID0g
Y29sbGVjdGlvbi5lcSggaW5kZXggKTsKKyAgICAgICAgICAgIGlmICggaXNGdW5jdGlvbiApIHsK
KyAgICAgICAgICAgICAgICBhcmdzWyAwIF0gPSB2YWx1ZS5jYWxsKCB0aGlzLCBpbmRleCwgc2Vs
Zi5odG1sKCkgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRvbU1hbmlwKCBzZWxmLCBh
cmdzLCBjYWxsYmFjaywgaWdub3JlZCApOworICAgICAgICB9ICk7CisgICAgfQorCisgICAgaWYg
KCBsICkgeworICAgICAgICBmcmFnbWVudCA9IGJ1aWxkRnJhZ21lbnQoIGFyZ3MsIGNvbGxlY3Rp
b25bIDAgXS5vd25lckRvY3VtZW50LCBmYWxzZSwgY29sbGVjdGlvbiwgaWdub3JlZCApOworICAg
ICAgICBmaXJzdCA9IGZyYWdtZW50LmZpcnN0Q2hpbGQ7CisKKyAgICAgICAgaWYgKCBmcmFnbWVu
dC5jaGlsZE5vZGVzLmxlbmd0aCA9PT0gMSApIHsKKyAgICAgICAgICAgIGZyYWdtZW50ID0gZmly
c3Q7CisgICAgICAgIH0KKworICAgICAgICAvLyBSZXF1aXJlIGVpdGhlciBuZXcgY29udGVudCBv
ciBhbiBpbnRlcmVzdCBpbiBpZ25vcmVkIGVsZW1lbnRzIHRvIGludm9rZSB0aGUgY2FsbGJhY2sK
KyAgICAgICAgaWYgKCBmaXJzdCB8fCBpZ25vcmVkICkgeworICAgICAgICAgICAgc2NyaXB0cyA9
IGpRdWVyeS5tYXAoIGdldEFsbCggZnJhZ21lbnQsICJzY3JpcHQiICksIGRpc2FibGVTY3JpcHQg
KTsKKyAgICAgICAgICAgIGhhc1NjcmlwdHMgPSBzY3JpcHRzLmxlbmd0aDsKKworICAgICAgICAg
ICAgLy8gVXNlIHRoZSBvcmlnaW5hbCBmcmFnbWVudCBmb3IgdGhlIGxhc3QgaXRlbQorICAgICAg
ICAgICAgLy8gaW5zdGVhZCBvZiB0aGUgZmlyc3QgYmVjYXVzZSBpdCBjYW4gZW5kIHVwCisgICAg
ICAgICAgICAvLyBiZWluZyBlbXB0aWVkIGluY29ycmVjdGx5IGluIGNlcnRhaW4gc2l0dWF0aW9u
cyAoIzgwNzApLgorICAgICAgICAgICAgZm9yICggOyBpIDwgbDsgaSsrICkgeworICAgICAgICAg
ICAgICAgIG5vZGUgPSBmcmFnbWVudDsKKworICAgICAgICAgICAgICAgIGlmICggaSAhPT0gaU5v
Q2xvbmUgKSB7CisgICAgICAgICAgICAgICAgICAgIG5vZGUgPSBqUXVlcnkuY2xvbmUoIG5vZGUs
IHRydWUsIHRydWUgKTsKKworICAgICAgICAgICAgICAgICAgICAvLyBLZWVwIHJlZmVyZW5jZXMg
dG8gY2xvbmVkIHNjcmlwdHMgZm9yIGxhdGVyIHJlc3RvcmF0aW9uCisgICAgICAgICAgICAgICAg
ICAgIGlmICggaGFzU2NyaXB0cyApIHsKKworICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3Vw
cG9ydDogQW5kcm9pZCA8PTQuMCBvbmx5LCBQaGFudG9tSlMgMSBvbmx5CisgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBwdXNoLmFwcGx5KF8sIGFycmF5bGlrZSkgdGhyb3dzIG9uIGFuY2llbnQg
V2ViS2l0CisgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkubWVyZ2UoIHNjcmlwdHMsIGdl
dEFsbCggbm9kZSwgInNjcmlwdCIgKSApOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgY2FsbGJhY2suY2FsbCggY29sbGVjdGlvblsg
aSBdLCBub2RlLCBpICk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICggaGFzU2Ny
aXB0cyApIHsKKyAgICAgICAgICAgICAgICBkb2MgPSBzY3JpcHRzWyBzY3JpcHRzLmxlbmd0aCAt
IDEgXS5vd25lckRvY3VtZW50OworCisgICAgICAgICAgICAgICAgLy8gUmVlbmFibGUgc2NyaXB0
cworICAgICAgICAgICAgICAgIGpRdWVyeS5tYXAoIHNjcmlwdHMsIHJlc3RvcmVTY3JpcHQgKTsK
KworICAgICAgICAgICAgICAgIC8vIEV2YWx1YXRlIGV4ZWN1dGFibGUgc2NyaXB0cyBvbiBmaXJz
dCBkb2N1bWVudCBpbnNlcnRpb24KKyAgICAgICAgICAgICAgICBmb3IgKCBpID0gMDsgaSA8IGhh
c1NjcmlwdHM7IGkrKyApIHsKKyAgICAgICAgICAgICAgICAgICAgbm9kZSA9IHNjcmlwdHNbIGkg
XTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCByc2NyaXB0VHlwZS50ZXN0KCBub2RlLnR5cGUg
fHwgIiIgKSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgIWRhdGFQcml2LmFjY2Vzcyggbm9k
ZSwgImdsb2JhbEV2YWwiICkgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5jb250
YWlucyggZG9jLCBub2RlICkgKSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICggbm9k
ZS5zcmMgKSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBPcHRpb25hbCBBSkFY
IGRlcGVuZGVuY3ksIGJ1dCB3b24ndCBydW4gc2NyaXB0cyBpZiBub3QgcHJlc2VudAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICggalF1ZXJ5Ll9ldmFsVXJsICkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkuX2V2YWxVcmwoIG5vZGUuc3JjICk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBET01FdmFsKCBub2RlLnRleHRDb250ZW50
LnJlcGxhY2UoIHJjbGVhblNjcmlwdCwgIiIgKSwgZG9jICk7CisgICAgICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gY29sbGVjdGlvbjsKK30KKwor
ZnVuY3Rpb24gcmVtb3ZlKCBlbGVtLCBzZWxlY3Rvciwga2VlcERhdGEgKSB7CisgICAgdmFyIG5v
ZGUsCisgICAgICAgIG5vZGVzID0gc2VsZWN0b3IgPyBqUXVlcnkuZmlsdGVyKCBzZWxlY3Rvciwg
ZWxlbSApIDogZWxlbSwKKyAgICAgICAgaSA9IDA7CisKKyAgICBmb3IgKCA7ICggbm9kZSA9IG5v
ZGVzWyBpIF0gKSAhPSBudWxsOyBpKysgKSB7CisgICAgICAgIGlmICggIWtlZXBEYXRhICYmIG5v
ZGUubm9kZVR5cGUgPT09IDEgKSB7CisgICAgICAgICAgICBqUXVlcnkuY2xlYW5EYXRhKCBnZXRB
bGwoIG5vZGUgKSApOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCBub2RlLnBhcmVudE5vZGUg
KSB7CisgICAgICAgICAgICBpZiAoIGtlZXBEYXRhICYmIGpRdWVyeS5jb250YWlucyggbm9kZS5v
d25lckRvY3VtZW50LCBub2RlICkgKSB7CisgICAgICAgICAgICAgICAgc2V0R2xvYmFsRXZhbCgg
Z2V0QWxsKCBub2RlLCAic2NyaXB0IiApICk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBu
b2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoIG5vZGUgKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIHJldHVybiBlbGVtOworfQorCitqUXVlcnkuZXh0ZW5kKCB7CisgICAgaHRtbFByZWZpbHRl
cjogZnVuY3Rpb24oIGh0bWwgKSB7CisgICAgICAgIHJldHVybiBodG1sLnJlcGxhY2UoIHJ4aHRt
bFRhZywgIjwkMT48LyQyPiIgKTsKKyAgICB9LAorCisgICAgY2xvbmU6IGZ1bmN0aW9uKCBlbGVt
LCBkYXRhQW5kRXZlbnRzLCBkZWVwRGF0YUFuZEV2ZW50cyApIHsKKyAgICAgICAgdmFyIGksIGws
IHNyY0VsZW1lbnRzLCBkZXN0RWxlbWVudHMsCisgICAgICAgICAgICBjbG9uZSA9IGVsZW0uY2xv
bmVOb2RlKCB0cnVlICksCisgICAgICAgICAgICBpblBhZ2UgPSBqUXVlcnkuY29udGFpbnMoIGVs
ZW0ub3duZXJEb2N1bWVudCwgZWxlbSApOworCisgICAgICAgIC8vIEZpeCBJRSBjbG9uaW5nIGlz
c3VlcworICAgICAgICBpZiAoICFzdXBwb3J0Lm5vQ2xvbmVDaGVja2VkICYmICggZWxlbS5ub2Rl
VHlwZSA9PT0gMSB8fCBlbGVtLm5vZGVUeXBlID09PSAxMSApICYmCisgICAgICAgICAgICAgICAg
IWpRdWVyeS5pc1hNTERvYyggZWxlbSApICkgeworCisgICAgICAgICAgICAvLyBXZSBlc2NoZXcg
U2l6emxlIGhlcmUgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnM6IGh0dHBzOi8vanNwZXJmLmNvbS9n
ZXRhbGwtdnMtc2l6emxlLzIKKyAgICAgICAgICAgIGRlc3RFbGVtZW50cyA9IGdldEFsbCggY2xv
bmUgKTsKKyAgICAgICAgICAgIHNyY0VsZW1lbnRzID0gZ2V0QWxsKCBlbGVtICk7CisKKyAgICAg
ICAgICAgIGZvciAoIGkgPSAwLCBsID0gc3JjRWxlbWVudHMubGVuZ3RoOyBpIDwgbDsgaSsrICkg
eworICAgICAgICAgICAgICAgIGZpeElucHV0KCBzcmNFbGVtZW50c1sgaSBdLCBkZXN0RWxlbWVu
dHNbIGkgXSApOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gQ29weSB0
aGUgZXZlbnRzIGZyb20gdGhlIG9yaWdpbmFsIHRvIHRoZSBjbG9uZQorICAgICAgICBpZiAoIGRh
dGFBbmRFdmVudHMgKSB7CisgICAgICAgICAgICBpZiAoIGRlZXBEYXRhQW5kRXZlbnRzICkgewor
ICAgICAgICAgICAgICAgIHNyY0VsZW1lbnRzID0gc3JjRWxlbWVudHMgfHwgZ2V0QWxsKCBlbGVt
ICk7CisgICAgICAgICAgICAgICAgZGVzdEVsZW1lbnRzID0gZGVzdEVsZW1lbnRzIHx8IGdldEFs
bCggY2xvbmUgKTsKKworICAgICAgICAgICAgICAgIGZvciAoIGkgPSAwLCBsID0gc3JjRWxlbWVu
dHMubGVuZ3RoOyBpIDwgbDsgaSsrICkgeworICAgICAgICAgICAgICAgICAgICBjbG9uZUNvcHlF
dmVudCggc3JjRWxlbWVudHNbIGkgXSwgZGVzdEVsZW1lbnRzWyBpIF0gKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGNsb25lQ29weUV2
ZW50KCBlbGVtLCBjbG9uZSApOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAg
Ly8gUHJlc2VydmUgc2NyaXB0IGV2YWx1YXRpb24gaGlzdG9yeQorICAgICAgICBkZXN0RWxlbWVu
dHMgPSBnZXRBbGwoIGNsb25lLCAic2NyaXB0IiApOworICAgICAgICBpZiAoIGRlc3RFbGVtZW50
cy5sZW5ndGggPiAwICkgeworICAgICAgICAgICAgc2V0R2xvYmFsRXZhbCggZGVzdEVsZW1lbnRz
LCAhaW5QYWdlICYmIGdldEFsbCggZWxlbSwgInNjcmlwdCIgKSApOworICAgICAgICB9CisKKyAg
ICAgICAgLy8gUmV0dXJuIHRoZSBjbG9uZWQgc2V0CisgICAgICAgIHJldHVybiBjbG9uZTsKKyAg
ICB9LAorCisgICAgY2xlYW5EYXRhOiBmdW5jdGlvbiggZWxlbXMgKSB7CisgICAgICAgIHZhciBk
YXRhLCBlbGVtLCB0eXBlLAorICAgICAgICAgICAgc3BlY2lhbCA9IGpRdWVyeS5ldmVudC5zcGVj
aWFsLAorICAgICAgICAgICAgaSA9IDA7CisKKyAgICAgICAgZm9yICggOyAoIGVsZW0gPSBlbGVt
c1sgaSBdICkgIT09IHVuZGVmaW5lZDsgaSsrICkgeworICAgICAgICAgICAgaWYgKCBhY2NlcHRE
YXRhKCBlbGVtICkgKSB7CisgICAgICAgICAgICAgICAgaWYgKCAoIGRhdGEgPSBlbGVtWyBkYXRh
UHJpdi5leHBhbmRvIF0gKSApIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCBkYXRhLmV2ZW50
cyApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoIHR5cGUgaW4gZGF0YS5ldmVudHMg
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBzcGVjaWFsWyB0eXBlIF0gKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5ldmVudC5yZW1vdmUoIGVs
ZW0sIHR5cGUgKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgYSBz
aG9ydGN1dCB0byBhdm9pZCBqUXVlcnkuZXZlbnQucmVtb3ZlJ3Mgb3ZlcmhlYWQKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBqUXVlcnkucmVtb3ZlRXZlbnQoIGVsZW0sIHR5cGUsIGRhdGEuaGFuZGxlICk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgLy8gU3VwcG9ydDogQ2hy
b21lIDw9MzUgLSA0NSsKKyAgICAgICAgICAgICAgICAgICAgLy8gQXNzaWduIHVuZGVmaW5lZCBp
bnN0ZWFkIG9mIHVzaW5nIGRlbGV0ZSwgc2VlIERhdGEjcmVtb3ZlCisgICAgICAgICAgICAgICAg
ICAgIGVsZW1bIGRhdGFQcml2LmV4cGFuZG8gXSA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgaWYgKCBlbGVtWyBkYXRhVXNlci5leHBhbmRvIF0gKSB7CisK
KyAgICAgICAgICAgICAgICAgICAgLy8gU3VwcG9ydDogQ2hyb21lIDw9MzUgLSA0NSsKKyAgICAg
ICAgICAgICAgICAgICAgLy8gQXNzaWduIHVuZGVmaW5lZCBpbnN0ZWFkIG9mIHVzaW5nIGRlbGV0
ZSwgc2VlIERhdGEjcmVtb3ZlCisgICAgICAgICAgICAgICAgICAgIGVsZW1bIGRhdGFVc2VyLmV4
cGFuZG8gXSA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9Cit9ICk7CisKK2pRdWVyeS5mbi5leHRlbmQoIHsKKyAgICBkZXRhY2g6
IGZ1bmN0aW9uKCBzZWxlY3RvciApIHsKKyAgICAgICAgcmV0dXJuIHJlbW92ZSggdGhpcywgc2Vs
ZWN0b3IsIHRydWUgKTsKKyAgICB9LAorCisgICAgcmVtb3ZlOiBmdW5jdGlvbiggc2VsZWN0b3Ig
KSB7CisgICAgICAgIHJldHVybiByZW1vdmUoIHRoaXMsIHNlbGVjdG9yICk7CisgICAgfSwKKwor
ICAgIHRleHQ6IGZ1bmN0aW9uKCB2YWx1ZSApIHsKKyAgICAgICAgcmV0dXJuIGFjY2VzcyggdGhp
cywgZnVuY3Rpb24oIHZhbHVlICkgeworICAgICAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRl
ZmluZWQgPworICAgICAgICAgICAgICAgIGpRdWVyeS50ZXh0KCB0aGlzICkgOgorICAgICAgICAg
ICAgICAgIHRoaXMuZW1wdHkoKS5lYWNoKCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKCB0aGlzLm5vZGVUeXBlID09PSAxIHx8IHRoaXMubm9kZVR5cGUgPT09IDExIHx8IHRo
aXMubm9kZVR5cGUgPT09IDkgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHRD
b250ZW50ID0gdmFsdWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9
ICk7CisgICAgICAgIH0sIG51bGwsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoICk7CisgICAgfSwK
KworICAgIGFwcGVuZDogZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiBkb21NYW5pcCggdGhp
cywgYXJndW1lbnRzLCBmdW5jdGlvbiggZWxlbSApIHsKKyAgICAgICAgICAgIGlmICggdGhpcy5u
b2RlVHlwZSA9PT0gMSB8fCB0aGlzLm5vZGVUeXBlID09PSAxMSB8fCB0aGlzLm5vZGVUeXBlID09
PSA5ICkgeworICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSBtYW5pcHVsYXRpb25UYXJnZXQo
IHRoaXMsIGVsZW0gKTsKKyAgICAgICAgICAgICAgICB0YXJnZXQuYXBwZW5kQ2hpbGQoIGVsZW0g
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSApOworICAgIH0sCisKKyAgICBwcmVwZW5kOiBm
dW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIGRvbU1hbmlwKCB0aGlzLCBhcmd1bWVudHMsIGZ1
bmN0aW9uKCBlbGVtICkgeworICAgICAgICAgICAgaWYgKCB0aGlzLm5vZGVUeXBlID09PSAxIHx8
IHRoaXMubm9kZVR5cGUgPT09IDExIHx8IHRoaXMubm9kZVR5cGUgPT09IDkgKSB7CisgICAgICAg
ICAgICAgICAgdmFyIHRhcmdldCA9IG1hbmlwdWxhdGlvblRhcmdldCggdGhpcywgZWxlbSApOwor
ICAgICAgICAgICAgICAgIHRhcmdldC5pbnNlcnRCZWZvcmUoIGVsZW0sIHRhcmdldC5maXJzdENo
aWxkICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gKTsKKyAgICB9LAorCisgICAgYmVmb3Jl
OiBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIGRvbU1hbmlwKCB0aGlzLCBhcmd1bWVudHMs
IGZ1bmN0aW9uKCBlbGVtICkgeworICAgICAgICAgICAgaWYgKCB0aGlzLnBhcmVudE5vZGUgKSB7
CisgICAgICAgICAgICAgICAgdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSggZWxlbSwgdGhp
cyApOworICAgICAgICAgICAgfQorICAgICAgICB9ICk7CisgICAgfSwKKworICAgIGFmdGVyOiBm
dW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIGRvbU1hbmlwKCB0aGlzLCBhcmd1bWVudHMsIGZ1
bmN0aW9uKCBlbGVtICkgeworICAgICAgICAgICAgaWYgKCB0aGlzLnBhcmVudE5vZGUgKSB7Cisg
ICAgICAgICAgICAgICAgdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSggZWxlbSwgdGhpcy5u
ZXh0U2libGluZyApOworICAgICAgICAgICAgfQorICAgICAgICB9ICk7CisgICAgfSwKKworICAg
IGVtcHR5OiBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIGVsZW0sCisgICAgICAgICAgICBpID0g
MDsKKworICAgICAgICBmb3IgKCA7ICggZWxlbSA9IHRoaXNbIGkgXSApICE9IG51bGw7IGkrKyAp
IHsKKyAgICAgICAgICAgIGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSApIHsKKworICAgICAgICAg
ICAgICAgIC8vIFByZXZlbnQgbWVtb3J5IGxlYWtzCisgICAgICAgICAgICAgICAgalF1ZXJ5LmNs
ZWFuRGF0YSggZ2V0QWxsKCBlbGVtLCBmYWxzZSApICk7CisKKyAgICAgICAgICAgICAgICAvLyBS
ZW1vdmUgYW55IHJlbWFpbmluZyBub2RlcworICAgICAgICAgICAgICAgIGVsZW0udGV4dENvbnRl
bnQgPSAiIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0aGlz
OworICAgIH0sCisKKyAgICBjbG9uZTogZnVuY3Rpb24oIGRhdGFBbmRFdmVudHMsIGRlZXBEYXRh
QW5kRXZlbnRzICkgeworICAgICAgICBkYXRhQW5kRXZlbnRzID0gZGF0YUFuZEV2ZW50cyA9PSBu
dWxsID8gZmFsc2UgOiBkYXRhQW5kRXZlbnRzOworICAgICAgICBkZWVwRGF0YUFuZEV2ZW50cyA9
IGRlZXBEYXRhQW5kRXZlbnRzID09IG51bGwgPyBkYXRhQW5kRXZlbnRzIDogZGVlcERhdGFBbmRF
dmVudHM7CisKKyAgICAgICAgcmV0dXJuIHRoaXMubWFwKCBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgIHJldHVybiBqUXVlcnkuY2xvbmUoIHRoaXMsIGRhdGFBbmRFdmVudHMsIGRlZXBEYXRhQW5k
RXZlbnRzICk7CisgICAgICAgIH0gKTsKKyAgICB9LAorCisgICAgaHRtbDogZnVuY3Rpb24oIHZh
bHVlICkgeworICAgICAgICByZXR1cm4gYWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggdmFsdWUgKSB7
CisgICAgICAgICAgICB2YXIgZWxlbSA9IHRoaXNbIDAgXSB8fCB7fSwKKyAgICAgICAgICAgICAg
ICBpID0gMCwKKyAgICAgICAgICAgICAgICBsID0gdGhpcy5sZW5ndGg7CisKKyAgICAgICAgICAg
IGlmICggdmFsdWUgPT09IHVuZGVmaW5lZCAmJiBlbGVtLm5vZGVUeXBlID09PSAxICkgeworICAg
ICAgICAgICAgICAgIHJldHVybiBlbGVtLmlubmVySFRNTDsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgLy8gU2VlIGlmIHdlIGNhbiB0YWtlIGEgc2hvcnRjdXQgYW5kIGp1c3QgdXNlIGlu
bmVySFRNTAorICAgICAgICAgICAgaWYgKCB0eXBlb2YgdmFsdWUgPT09ICJzdHJpbmciICYmICFy
bm9Jbm5lcmh0bWwudGVzdCggdmFsdWUgKSAmJgorICAgICAgICAgICAgICAgICF3cmFwTWFwWyAo
IHJ0YWdOYW1lLmV4ZWMoIHZhbHVlICkgfHwgWyAiIiwgIiIgXSApWyAxIF0udG9Mb3dlckNhc2Uo
KSBdICkgeworCisgICAgICAgICAgICAgICAgdmFsdWUgPSBqUXVlcnkuaHRtbFByZWZpbHRlcigg
dmFsdWUgKTsKKworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIGZv
ciAoIDsgaSA8IGw7IGkrKyApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0gPSB0aGlz
WyBpIF0gfHwge307CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlbW92ZSBlbGVtZW50
IG5vZGVzIGFuZCBwcmV2ZW50IG1lbW9yeSBsZWFrcworICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGpRdWVyeS5jbGVhbkRhdGEoIGdldEFsbCggZWxlbSwgZmFsc2UgKSApOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGVsZW0uaW5uZXJIVE1MID0gdmFsdWU7CisgICAgICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBl
bGVtID0gMDsKKworICAgICAgICAgICAgICAgIC8vIElmIHVzaW5nIGlubmVySFRNTCB0aHJvd3Mg
YW4gZXhjZXB0aW9uLCB1c2UgdGhlIGZhbGxiYWNrIG1ldGhvZAorICAgICAgICAgICAgICAgIH0g
Y2F0Y2ggKCBlICkge30KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCBlbGVtICkg
eworICAgICAgICAgICAgICAgIHRoaXMuZW1wdHkoKS5hcHBlbmQoIHZhbHVlICk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0sIG51bGwsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoICk7CisgICAg
fSwKKworICAgIHJlcGxhY2VXaXRoOiBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIGlnbm9yZWQg
PSBbXTsKKworICAgICAgICAvLyBNYWtlIHRoZSBjaGFuZ2VzLCByZXBsYWNpbmcgZWFjaCBub24t
aWdub3JlZCBjb250ZXh0IGVsZW1lbnQgd2l0aCB0aGUgbmV3IGNvbnRlbnQKKyAgICAgICAgcmV0
dXJuIGRvbU1hbmlwKCB0aGlzLCBhcmd1bWVudHMsIGZ1bmN0aW9uKCBlbGVtICkgeworICAgICAg
ICAgICAgdmFyIHBhcmVudCA9IHRoaXMucGFyZW50Tm9kZTsKKworICAgICAgICAgICAgaWYgKCBq
UXVlcnkuaW5BcnJheSggdGhpcywgaWdub3JlZCApIDwgMCApIHsKKyAgICAgICAgICAgICAgICBq
UXVlcnkuY2xlYW5EYXRhKCBnZXRBbGwoIHRoaXMgKSApOworICAgICAgICAgICAgICAgIGlmICgg
cGFyZW50ICkgeworICAgICAgICAgICAgICAgICAgICBwYXJlbnQucmVwbGFjZUNoaWxkKCBlbGVt
LCB0aGlzICk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgIC8v
IEZvcmNlIGNhbGxiYWNrIGludm9jYXRpb24KKyAgICAgICAgfSwgaWdub3JlZCApOworICAgIH0K
K30gKTsKKworalF1ZXJ5LmVhY2goIHsKKyAgICBhcHBlbmRUbzogImFwcGVuZCIsCisgICAgcHJl
cGVuZFRvOiAicHJlcGVuZCIsCisgICAgaW5zZXJ0QmVmb3JlOiAiYmVmb3JlIiwKKyAgICBpbnNl
cnRBZnRlcjogImFmdGVyIiwKKyAgICByZXBsYWNlQWxsOiAicmVwbGFjZVdpdGgiCit9LCBmdW5j
dGlvbiggbmFtZSwgb3JpZ2luYWwgKSB7CisgICAgalF1ZXJ5LmZuWyBuYW1lIF0gPSBmdW5jdGlv
biggc2VsZWN0b3IgKSB7CisgICAgICAgIHZhciBlbGVtcywKKyAgICAgICAgICAgIHJldCA9IFtd
LAorICAgICAgICAgICAgaW5zZXJ0ID0galF1ZXJ5KCBzZWxlY3RvciApLAorICAgICAgICAgICAg
bGFzdCA9IGluc2VydC5sZW5ndGggLSAxLAorICAgICAgICAgICAgaSA9IDA7CisKKyAgICAgICAg
Zm9yICggOyBpIDw9IGxhc3Q7IGkrKyApIHsKKyAgICAgICAgICAgIGVsZW1zID0gaSA9PT0gbGFz
dCA/IHRoaXMgOiB0aGlzLmNsb25lKCB0cnVlICk7CisgICAgICAgICAgICBqUXVlcnkoIGluc2Vy
dFsgaSBdIClbIG9yaWdpbmFsIF0oIGVsZW1zICk7CisKKyAgICAgICAgICAgIC8vIFN1cHBvcnQ6
IEFuZHJvaWQgPD00LjAgb25seSwgUGhhbnRvbUpTIDEgb25seQorICAgICAgICAgICAgLy8gLmdl
dCgpIGJlY2F1c2UgcHVzaC5hcHBseShfLCBhcnJheWxpa2UpIHRocm93cyBvbiBhbmNpZW50IFdl
YktpdAorICAgICAgICAgICAgcHVzaC5hcHBseSggcmV0LCBlbGVtcy5nZXQoKSApOworICAgICAg
ICB9CisKKyAgICAgICAgcmV0dXJuIHRoaXMucHVzaFN0YWNrKCByZXQgKTsKKyAgICB9OworfSAp
OworCityZXR1cm4galF1ZXJ5OworfSApOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5
L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL21hbmlwdWxhdGlvbi9fZXZhbFVybC5qcyBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9tYW5pcHVsYXRpb24vX2V2YWxV
cmwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOTVjNTE3N2Q5ODE0YzI2ZDlkM2YwYmRhM2NiODgwZTUyYTljNWE0
NgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1
ZXJ5L3NyYy9tYW5pcHVsYXRpb24vX2V2YWxVcmwuanMKQEAgLTAsMCArMSwyMyBAQAorZGVmaW5l
KCBbCisgICAgIi4uL2FqYXgiCitdLCBmdW5jdGlvbiggalF1ZXJ5ICkgeworCisidXNlIHN0cmlj
dCI7CisKK2pRdWVyeS5fZXZhbFVybCA9IGZ1bmN0aW9uKCB1cmwgKSB7CisgICAgcmV0dXJuIGpR
dWVyeS5hamF4KCB7CisgICAgICAgIHVybDogdXJsLAorCisgICAgICAgIC8vIE1ha2UgdGhpcyBl
eHBsaWNpdCwgc2luY2UgdXNlciBjYW4gb3ZlcnJpZGUgdGhpcyB0aHJvdWdoIGFqYXhTZXR1cCAo
IzExMjY0KQorICAgICAgICB0eXBlOiAiR0VUIiwKKyAgICAgICAgZGF0YVR5cGU6ICJzY3JpcHQi
LAorICAgICAgICBjYWNoZTogdHJ1ZSwKKyAgICAgICAgYXN5bmM6IGZhbHNlLAorICAgICAgICBn
bG9iYWw6IGZhbHNlLAorICAgICAgICAidGhyb3dzIjogdHJ1ZQorICAgIH0gKTsKK307CisKK3Jl
dHVybiBqUXVlcnkuX2V2YWxVcmw7CisKK30gKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2px
dWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9tYW5pcHVsYXRpb24vYnVpbGRGcmFnbWVudC5q
cyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9tYW5pcHVsYXRp
b24vYnVpbGRGcmFnbWVudC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NDlmZmZhZGY3YWFjNWVmOTM0NjBiYTM2
ZjMzNDlmMmZjOTI3M2FkCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25v
ZGVfbW9kdWxlcy9qcXVlcnkvc3JjL21hbmlwdWxhdGlvbi9idWlsZEZyYWdtZW50LmpzCkBAIC0w
LDAgKzEsMTA0IEBACitkZWZpbmUoIFsKKyAgICAiLi4vY29yZSIsCisgICAgIi4vdmFyL3J0YWdO
YW1lIiwKKyAgICAiLi92YXIvcnNjcmlwdFR5cGUiLAorICAgICIuL3dyYXBNYXAiLAorICAgICIu
L2dldEFsbCIsCisgICAgIi4vc2V0R2xvYmFsRXZhbCIKK10sIGZ1bmN0aW9uKCBqUXVlcnksIHJ0
YWdOYW1lLCByc2NyaXB0VHlwZSwgd3JhcE1hcCwgZ2V0QWxsLCBzZXRHbG9iYWxFdmFsICkgewor
CisidXNlIHN0cmljdCI7CisKK3ZhciByaHRtbCA9IC88fCYjP1x3KzsvOworCitmdW5jdGlvbiBi
dWlsZEZyYWdtZW50KCBlbGVtcywgY29udGV4dCwgc2NyaXB0cywgc2VsZWN0aW9uLCBpZ25vcmVk
ICkgeworICAgIHZhciBlbGVtLCB0bXAsIHRhZywgd3JhcCwgY29udGFpbnMsIGosCisgICAgICAg
IGZyYWdtZW50ID0gY29udGV4dC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksCisgICAgICAgIG5v
ZGVzID0gW10sCisgICAgICAgIGkgPSAwLAorICAgICAgICBsID0gZWxlbXMubGVuZ3RoOworCisg
ICAgZm9yICggOyBpIDwgbDsgaSsrICkgeworICAgICAgICBlbGVtID0gZWxlbXNbIGkgXTsKKwor
ICAgICAgICBpZiAoIGVsZW0gfHwgZWxlbSA9PT0gMCApIHsKKworICAgICAgICAgICAgLy8gQWRk
IG5vZGVzIGRpcmVjdGx5CisgICAgICAgICAgICBpZiAoIGpRdWVyeS50eXBlKCBlbGVtICkgPT09
ICJvYmplY3QiICkgeworCisgICAgICAgICAgICAgICAgLy8gU3VwcG9ydDogQW5kcm9pZCA8PTQu
MCBvbmx5LCBQaGFudG9tSlMgMSBvbmx5CisgICAgICAgICAgICAgICAgLy8gcHVzaC5hcHBseShf
LCBhcnJheWxpa2UpIHRocm93cyBvbiBhbmNpZW50IFdlYktpdAorICAgICAgICAgICAgICAgIGpR
dWVyeS5tZXJnZSggbm9kZXMsIGVsZW0ubm9kZVR5cGUgPyBbIGVsZW0gXSA6IGVsZW0gKTsKKwor
ICAgICAgICAgICAgLy8gQ29udmVydCBub24taHRtbCBpbnRvIGEgdGV4dCBub2RlCisgICAgICAg
ICAgICB9IGVsc2UgaWYgKCAhcmh0bWwudGVzdCggZWxlbSApICkgeworICAgICAgICAgICAgICAg
IG5vZGVzLnB1c2goIGNvbnRleHQuY3JlYXRlVGV4dE5vZGUoIGVsZW0gKSApOworCisgICAgICAg
ICAgICAvLyBDb252ZXJ0IGh0bWwgaW50byBET00gbm9kZXMKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgdG1wID0gdG1wIHx8IGZyYWdtZW50LmFwcGVuZENoaWxkKCBjb250
ZXh0LmNyZWF0ZUVsZW1lbnQoICJkaXYiICkgKTsKKworICAgICAgICAgICAgICAgIC8vIERlc2Vy
aWFsaXplIGEgc3RhbmRhcmQgcmVwcmVzZW50YXRpb24KKyAgICAgICAgICAgICAgICB0YWcgPSAo
IHJ0YWdOYW1lLmV4ZWMoIGVsZW0gKSB8fCBbICIiLCAiIiBdIClbIDEgXS50b0xvd2VyQ2FzZSgp
OworICAgICAgICAgICAgICAgIHdyYXAgPSB3cmFwTWFwWyB0YWcgXSB8fCB3cmFwTWFwLl9kZWZh
dWx0OworICAgICAgICAgICAgICAgIHRtcC5pbm5lckhUTUwgPSB3cmFwWyAxIF0gKyBqUXVlcnku
aHRtbFByZWZpbHRlciggZWxlbSApICsgd3JhcFsgMiBdOworCisgICAgICAgICAgICAgICAgLy8g
RGVzY2VuZCB0aHJvdWdoIHdyYXBwZXJzIHRvIHRoZSByaWdodCBjb250ZW50CisgICAgICAgICAg
ICAgICAgaiA9IHdyYXBbIDAgXTsKKyAgICAgICAgICAgICAgICB3aGlsZSAoIGotLSApIHsKKyAg
ICAgICAgICAgICAgICAgICAgdG1wID0gdG1wLmxhc3RDaGlsZDsKKyAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICAvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4wIG9ubHksIFBoYW50
b21KUyAxIG9ubHkKKyAgICAgICAgICAgICAgICAvLyBwdXNoLmFwcGx5KF8sIGFycmF5bGlrZSkg
dGhyb3dzIG9uIGFuY2llbnQgV2ViS2l0CisgICAgICAgICAgICAgICAgalF1ZXJ5Lm1lcmdlKCBu
b2RlcywgdG1wLmNoaWxkTm9kZXMgKTsKKworICAgICAgICAgICAgICAgIC8vIFJlbWVtYmVyIHRo
ZSB0b3AtbGV2ZWwgY29udGFpbmVyCisgICAgICAgICAgICAgICAgdG1wID0gZnJhZ21lbnQuZmly
c3RDaGlsZDsKKworICAgICAgICAgICAgICAgIC8vIEVuc3VyZSB0aGUgY3JlYXRlZCBub2RlcyBh
cmUgb3JwaGFuZWQgKCMxMjM5MikKKyAgICAgICAgICAgICAgICB0bXAudGV4dENvbnRlbnQgPSAi
IjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFJlbW92ZSB3cmFw
cGVyIGZyb20gZnJhZ21lbnQKKyAgICBmcmFnbWVudC50ZXh0Q29udGVudCA9ICIiOworCisgICAg
aSA9IDA7CisgICAgd2hpbGUgKCAoIGVsZW0gPSBub2Rlc1sgaSsrIF0gKSApIHsKKworICAgICAg
ICAvLyBTa2lwIGVsZW1lbnRzIGFscmVhZHkgaW4gdGhlIGNvbnRleHQgY29sbGVjdGlvbiAodHJh
Yy00MDg3KQorICAgICAgICBpZiAoIHNlbGVjdGlvbiAmJiBqUXVlcnkuaW5BcnJheSggZWxlbSwg
c2VsZWN0aW9uICkgPiAtMSApIHsKKyAgICAgICAgICAgIGlmICggaWdub3JlZCApIHsKKyAgICAg
ICAgICAgICAgICBpZ25vcmVkLnB1c2goIGVsZW0gKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgY29udGFpbnMgPSBqUXVlcnkuY29u
dGFpbnMoIGVsZW0ub3duZXJEb2N1bWVudCwgZWxlbSApOworCisgICAgICAgIC8vIEFwcGVuZCB0
byBmcmFnbWVudAorICAgICAgICB0bXAgPSBnZXRBbGwoIGZyYWdtZW50LmFwcGVuZENoaWxkKCBl
bGVtICksICJzY3JpcHQiICk7CisKKyAgICAgICAgLy8gUHJlc2VydmUgc2NyaXB0IGV2YWx1YXRp
b24gaGlzdG9yeQorICAgICAgICBpZiAoIGNvbnRhaW5zICkgeworICAgICAgICAgICAgc2V0R2xv
YmFsRXZhbCggdG1wICk7CisgICAgICAgIH0KKworICAgICAgICAvLyBDYXB0dXJlIGV4ZWN1dGFi
bGVzCisgICAgICAgIGlmICggc2NyaXB0cyApIHsKKyAgICAgICAgICAgIGogPSAwOworICAgICAg
ICAgICAgd2hpbGUgKCAoIGVsZW0gPSB0bXBbIGorKyBdICkgKSB7CisgICAgICAgICAgICAgICAg
aWYgKCByc2NyaXB0VHlwZS50ZXN0KCBlbGVtLnR5cGUgfHwgIiIgKSApIHsKKyAgICAgICAgICAg
ICAgICAgICAgc2NyaXB0cy5wdXNoKCBlbGVtICk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGZyYWdtZW50OworfQorCity
ZXR1cm4gYnVpbGRGcmFnbWVudDsKK30gKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVy
eS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9tYW5pcHVsYXRpb24vZ2V0QWxsLmpzIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL21hbmlwdWxhdGlvbi9nZXRBbGwu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZjc1ZTYxNGFmMmI1ODZlNDkyNjI3NTI1YmY3MTlmOWE4YThjYWU5Zgot
LS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5
L3NyYy9tYW5pcHVsYXRpb24vZ2V0QWxsLmpzCkBAIC0wLDAgKzEsMzEgQEAKK2RlZmluZSggWwor
ICAgICIuLi9jb3JlIgorXSwgZnVuY3Rpb24oIGpRdWVyeSApIHsKKworInVzZSBzdHJpY3QiOwor
CitmdW5jdGlvbiBnZXRBbGwoIGNvbnRleHQsIHRhZyApIHsKKworICAgIC8vIFN1cHBvcnQ6IElF
IDw9OSAtIDExIG9ubHkKKyAgICAvLyBVc2UgdHlwZW9mIHRvIGF2b2lkIHplcm8tYXJndW1lbnQg
bWV0aG9kIGludm9jYXRpb24gb24gaG9zdCBvYmplY3RzICgjMTUxNTEpCisgICAgdmFyIHJldDsK
KworICAgIGlmICggdHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUgIT09ICJ1bmRl
ZmluZWQiICkgeworICAgICAgICByZXQgPSBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lKCB0
YWcgfHwgIioiICk7CisKKyAgICB9IGVsc2UgaWYgKCB0eXBlb2YgY29udGV4dC5xdWVyeVNlbGVj
dG9yQWxsICE9PSAidW5kZWZpbmVkIiApIHsKKyAgICAgICAgcmV0ID0gY29udGV4dC5xdWVyeVNl
bGVjdG9yQWxsKCB0YWcgfHwgIioiICk7CisKKyAgICB9IGVsc2UgeworICAgICAgICByZXQgPSBb
XTsKKyAgICB9CisKKyAgICBpZiAoIHRhZyA9PT0gdW5kZWZpbmVkIHx8IHRhZyAmJiBqUXVlcnku
bm9kZU5hbWUoIGNvbnRleHQsIHRhZyApICkgeworICAgICAgICByZXR1cm4galF1ZXJ5Lm1lcmdl
KCBbIGNvbnRleHQgXSwgcmV0ICk7CisgICAgfQorCisgICAgcmV0dXJuIHJldDsKK30KKworcmV0
dXJuIGdldEFsbDsKK30gKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21v
ZHVsZXMvanF1ZXJ5L3NyYy9tYW5pcHVsYXRpb24vc2V0R2xvYmFsRXZhbC5qcyBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9tYW5pcHVsYXRpb24vc2V0R2xvYmFs
RXZhbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hMWYxYzdiYjAxYmZiMDE4YWRjYzdkOGQ4MWQxNzZmYjI2MDcw
MTg5Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9q
cXVlcnkvc3JjL21hbmlwdWxhdGlvbi9zZXRHbG9iYWxFdmFsLmpzCkBAIC0wLDAgKzEsMjIgQEAK
K2RlZmluZSggWworICAgICIuLi9kYXRhL3Zhci9kYXRhUHJpdiIKK10sIGZ1bmN0aW9uKCBkYXRh
UHJpdiApIHsKKworInVzZSBzdHJpY3QiOworCisvLyBNYXJrIHNjcmlwdHMgYXMgaGF2aW5nIGFs
cmVhZHkgYmVlbiBldmFsdWF0ZWQKK2Z1bmN0aW9uIHNldEdsb2JhbEV2YWwoIGVsZW1zLCByZWZF
bGVtZW50cyApIHsKKyAgICB2YXIgaSA9IDAsCisgICAgICAgIGwgPSBlbGVtcy5sZW5ndGg7CisK
KyAgICBmb3IgKCA7IGkgPCBsOyBpKysgKSB7CisgICAgICAgIGRhdGFQcml2LnNldCgKKyAgICAg
ICAgICAgIGVsZW1zWyBpIF0sCisgICAgICAgICAgICAiZ2xvYmFsRXZhbCIsCisgICAgICAgICAg
ICAhcmVmRWxlbWVudHMgfHwgZGF0YVByaXYuZ2V0KCByZWZFbGVtZW50c1sgaSBdLCAiZ2xvYmFs
RXZhbCIgKQorICAgICAgICApOworICAgIH0KK30KKworcmV0dXJuIHNldEdsb2JhbEV2YWw7Cit9
ICk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9z
cmMvbWFuaXB1bGF0aW9uL3N1cHBvcnQuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1
bGVzL2pxdWVyeS9zcmMvbWFuaXB1bGF0aW9uL3N1cHBvcnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2M5NjJl
ZjkwOTI3M2MyMTFmOGE0ZjU5NjYxZWZlNjU4ZTIwNDZlNgotLS0gL2Rldi9udWxsCisrKyBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9tYW5pcHVsYXRpb24vc3Vw
cG9ydC5qcwpAQCAtMCwwICsxLDM1IEBACitkZWZpbmUoIFsKKyAgICAiLi4vdmFyL2RvY3VtZW50
IiwKKyAgICAiLi4vdmFyL3N1cHBvcnQiCitdLCBmdW5jdGlvbiggZG9jdW1lbnQsIHN1cHBvcnQg
KSB7CisKKyJ1c2Ugc3RyaWN0IjsKKworKCBmdW5jdGlvbigpIHsKKyAgICB2YXIgZnJhZ21lbnQg
PSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksCisgICAgICAgIGRpdiA9IGZyYWdt
ZW50LmFwcGVuZENoaWxkKCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCAiZGl2IiApICksCisgICAg
ICAgIGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggImlucHV0IiApOworCisgICAgLy8g
U3VwcG9ydDogQW5kcm9pZCA0LjAgLSA0LjMgb25seQorICAgIC8vIENoZWNrIHN0YXRlIGxvc3Qg
aWYgdGhlIG5hbWUgaXMgc2V0ICgjMTEyMTcpCisgICAgLy8gU3VwcG9ydDogV2luZG93cyBXZWIg
QXBwcyAoV1dBKQorICAgIC8vIGBuYW1lYCBhbmQgYHR5cGVgIG11c3QgdXNlIC5zZXRBdHRyaWJ1
dGUgZm9yIFdXQSAoIzE0OTAxKQorICAgIGlucHV0LnNldEF0dHJpYnV0ZSggInR5cGUiLCAicmFk
aW8iICk7CisgICAgaW5wdXQuc2V0QXR0cmlidXRlKCAiY2hlY2tlZCIsICJjaGVja2VkIiApOwor
ICAgIGlucHV0LnNldEF0dHJpYnV0ZSggIm5hbWUiLCAidCIgKTsKKworICAgIGRpdi5hcHBlbmRD
aGlsZCggaW5wdXQgKTsKKworICAgIC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00LjEgb25seQorICAg
IC8vIE9sZGVyIFdlYktpdCBkb2Vzbid0IGNsb25lIGNoZWNrZWQgc3RhdGUgY29ycmVjdGx5IGlu
IGZyYWdtZW50cworICAgIHN1cHBvcnQuY2hlY2tDbG9uZSA9IGRpdi5jbG9uZU5vZGUoIHRydWUg
KS5jbG9uZU5vZGUoIHRydWUgKS5sYXN0Q2hpbGQuY2hlY2tlZDsKKworICAgIC8vIFN1cHBvcnQ6
IElFIDw9MTEgb25seQorICAgIC8vIE1ha2Ugc3VyZSB0ZXh0YXJlYSAoYW5kIGNoZWNrYm94KSBk
ZWZhdWx0VmFsdWUgaXMgcHJvcGVybHkgY2xvbmVkCisgICAgZGl2LmlubmVySFRNTCA9ICI8dGV4
dGFyZWE+eDwvdGV4dGFyZWE+IjsKKyAgICBzdXBwb3J0Lm5vQ2xvbmVDaGVja2VkID0gISFkaXYu
Y2xvbmVOb2RlKCB0cnVlICkubGFzdENoaWxkLmRlZmF1bHRWYWx1ZTsKK30gKSgpOworCityZXR1
cm4gc3VwcG9ydDsKKworfSApOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVf
bW9kdWxlcy9qcXVlcnkvc3JjL21hbmlwdWxhdGlvbi92YXIvcmNoZWNrYWJsZVR5cGUuanMgYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvbWFuaXB1bGF0aW9uL3Zh
ci9yY2hlY2thYmxlVHlwZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMmE5NDA4N2E4MTI2ODRkNzJjMDFmNDIw
OWE2NDE0NTk1OGU3YTVkCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25v
ZGVfbW9kdWxlcy9qcXVlcnkvc3JjL21hbmlwdWxhdGlvbi92YXIvcmNoZWNrYWJsZVR5cGUuanMK
QEAgLTAsMCArMSw1IEBACitkZWZpbmUoIGZ1bmN0aW9uKCkgeworICAgICJ1c2Ugc3RyaWN0IjsK
KworICAgIHJldHVybiAoIC9eKD86Y2hlY2tib3h8cmFkaW8pJC9pICk7Cit9ICk7CmRpZmYgLS1n
aXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvbWFuaXB1bGF0
aW9uL3Zhci9yc2NyaXB0VHlwZS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMv
anF1ZXJ5L3NyYy9tYW5pcHVsYXRpb24vdmFyL3JzY3JpcHRUeXBlLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUx
ZDMyN2IyOWRhMzBmZWQ0YmMxMGY4NzJhNGFjMzk4Yjk1ZjI3NjMKLS0tIC9kZXYvbnVsbAorKysg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvbWFuaXB1bGF0aW9u
L3Zhci9yc2NyaXB0VHlwZS5qcwpAQCAtMCwwICsxLDUgQEAKK2RlZmluZSggZnVuY3Rpb24oKSB7
CisgICAgInVzZSBzdHJpY3QiOworCisgICAgcmV0dXJuICggL14kfFwvKD86amF2YXxlY21hKXNj
cmlwdC9pICk7Cit9ICk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1
bGVzL2pxdWVyeS9zcmMvbWFuaXB1bGF0aW9uL3Zhci9ydGFnTmFtZS5qcyBiL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9tYW5pcHVsYXRpb24vdmFyL3J0YWdOYW1l
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRiOWYwNzZkNjE0ZTRiMTRlZjgyMzkwMTRlODFlNDRmOWE2ZWYwNTMK
LS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVy
eS9zcmMvbWFuaXB1bGF0aW9uL3Zhci9ydGFnTmFtZS5qcwpAQCAtMCwwICsxLDUgQEAKK2RlZmlu
ZSggZnVuY3Rpb24oKSB7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgcmV0dXJuICggLzwoW2Et
el1bXlwvXDA+XHgyMFx0XHJcblxmXSspL2kgKTsKK30gKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9tYW5pcHVsYXRpb24vd3JhcE1hcC5q
cyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9tYW5pcHVsYXRp
b24vd3JhcE1hcC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNTY3NzJkOTlmZDYzZjJmZjdkYzFmMmRmZmZkOWI5
MDRlYTg0Y2RkCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9k
dWxlcy9qcXVlcnkvc3JjL21hbmlwdWxhdGlvbi93cmFwTWFwLmpzCkBAIC0wLDAgKzEsMjkgQEAK
K2RlZmluZSggZnVuY3Rpb24oKSB7CisKKyJ1c2Ugc3RyaWN0IjsKKworLy8gV2UgaGF2ZSB0byBj
bG9zZSB0aGVzZSB0YWdzIHRvIHN1cHBvcnQgWEhUTUwgKCMxMzIwMCkKK3ZhciB3cmFwTWFwID0g
eworCisgICAgLy8gU3VwcG9ydDogSUUgPD05IG9ubHkKKyAgICBvcHRpb246IFsgMSwgIjxzZWxl
Y3QgbXVsdGlwbGU9J211bHRpcGxlJz4iLCAiPC9zZWxlY3Q+IiBdLAorCisgICAgLy8gWEhUTUwg
cGFyc2VycyBkbyBub3QgbWFnaWNhbGx5IGluc2VydCBlbGVtZW50cyBpbiB0aGUKKyAgICAvLyBz
YW1lIHdheSB0aGF0IHRhZyBzb3VwIHBhcnNlcnMgZG8uIFNvIHdlIGNhbm5vdCBzaG9ydGVuCisg
ICAgLy8gdGhpcyBieSBvbWl0dGluZyA8dGJvZHk+IG9yIG90aGVyIHJlcXVpcmVkIGVsZW1lbnRz
LgorICAgIHRoZWFkOiBbIDEsICI8dGFibGU+IiwgIjwvdGFibGU+IiBdLAorICAgIGNvbDogWyAy
LCAiPHRhYmxlPjxjb2xncm91cD4iLCAiPC9jb2xncm91cD48L3RhYmxlPiIgXSwKKyAgICB0cjog
WyAyLCAiPHRhYmxlPjx0Ym9keT4iLCAiPC90Ym9keT48L3RhYmxlPiIgXSwKKyAgICB0ZDogWyAz
LCAiPHRhYmxlPjx0Ym9keT48dHI+IiwgIjwvdHI+PC90Ym9keT48L3RhYmxlPiIgXSwKKworICAg
IF9kZWZhdWx0OiBbIDAsICIiLCAiIiBdCit9OworCisvLyBTdXBwb3J0OiBJRSA8PTkgb25seQor
d3JhcE1hcC5vcHRncm91cCA9IHdyYXBNYXAub3B0aW9uOworCit3cmFwTWFwLnRib2R5ID0gd3Jh
cE1hcC50Zm9vdCA9IHdyYXBNYXAuY29sZ3JvdXAgPSB3cmFwTWFwLmNhcHRpb24gPSB3cmFwTWFw
LnRoZWFkOword3JhcE1hcC50aCA9IHdyYXBNYXAudGQ7CisKK3JldHVybiB3cmFwTWFwOworfSAp
OwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3Jj
L29mZnNldC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9v
ZmZzZXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYWEyZWNlODVkNWE3ZTNhMmZhODQ1ZTkwMzlhZDM4YWZhZmYz
MmNiMwotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMv
anF1ZXJ5L3NyYy9vZmZzZXQuanMKQEAgLTAsMCArMSwyMzIgQEAKK2RlZmluZSggWworICAgICIu
L2NvcmUiLAorICAgICIuL2NvcmUvYWNjZXNzIiwKKyAgICAiLi92YXIvZG9jdW1lbnQiLAorICAg
ICIuL3Zhci9kb2N1bWVudEVsZW1lbnQiLAorICAgICIuL2Nzcy92YXIvcm51bW5vbnB4IiwKKyAg
ICAiLi9jc3MvY3VyQ1NTIiwKKyAgICAiLi9jc3MvYWRkR2V0SG9va0lmIiwKKyAgICAiLi9jc3Mv
c3VwcG9ydCIsCisKKyAgICAiLi9jb3JlL2luaXQiLAorICAgICIuL2NzcyIsCisgICAgIi4vc2Vs
ZWN0b3IiIC8vIGNvbnRhaW5zCitdLCBmdW5jdGlvbiggalF1ZXJ5LCBhY2Nlc3MsIGRvY3VtZW50
LCBkb2N1bWVudEVsZW1lbnQsIHJudW1ub25weCwgY3VyQ1NTLCBhZGRHZXRIb29rSWYsIHN1cHBv
cnQgKSB7CisKKyJ1c2Ugc3RyaWN0IjsKKworLyoqCisgKiBHZXRzIGEgd2luZG93IGZyb20gYW4g
ZWxlbWVudAorICovCitmdW5jdGlvbiBnZXRXaW5kb3coIGVsZW0gKSB7CisgICAgcmV0dXJuIGpR
dWVyeS5pc1dpbmRvdyggZWxlbSApID8gZWxlbSA6IGVsZW0ubm9kZVR5cGUgPT09IDkgJiYgZWxl
bS5kZWZhdWx0VmlldzsKK30KKworalF1ZXJ5Lm9mZnNldCA9IHsKKyAgICBzZXRPZmZzZXQ6IGZ1
bmN0aW9uKCBlbGVtLCBvcHRpb25zLCBpICkgeworICAgICAgICB2YXIgY3VyUG9zaXRpb24sIGN1
ckxlZnQsIGN1ckNTU1RvcCwgY3VyVG9wLCBjdXJPZmZzZXQsIGN1ckNTU0xlZnQsIGNhbGN1bGF0
ZVBvc2l0aW9uLAorICAgICAgICAgICAgcG9zaXRpb24gPSBqUXVlcnkuY3NzKCBlbGVtLCAicG9z
aXRpb24iICksCisgICAgICAgICAgICBjdXJFbGVtID0galF1ZXJ5KCBlbGVtICksCisgICAgICAg
ICAgICBwcm9wcyA9IHt9OworCisgICAgICAgIC8vIFNldCBwb3NpdGlvbiBmaXJzdCwgaW4tY2Fz
ZSB0b3AvbGVmdCBhcmUgc2V0IGV2ZW4gb24gc3RhdGljIGVsZW0KKyAgICAgICAgaWYgKCBwb3Np
dGlvbiA9PT0gInN0YXRpYyIgKSB7CisgICAgICAgICAgICBlbGVtLnN0eWxlLnBvc2l0aW9uID0g
InJlbGF0aXZlIjsKKyAgICAgICAgfQorCisgICAgICAgIGN1ck9mZnNldCA9IGN1ckVsZW0ub2Zm
c2V0KCk7CisgICAgICAgIGN1ckNTU1RvcCA9IGpRdWVyeS5jc3MoIGVsZW0sICJ0b3AiICk7Cisg
ICAgICAgIGN1ckNTU0xlZnQgPSBqUXVlcnkuY3NzKCBlbGVtLCAibGVmdCIgKTsKKyAgICAgICAg
Y2FsY3VsYXRlUG9zaXRpb24gPSAoIHBvc2l0aW9uID09PSAiYWJzb2x1dGUiIHx8IHBvc2l0aW9u
ID09PSAiZml4ZWQiICkgJiYKKyAgICAgICAgICAgICggY3VyQ1NTVG9wICsgY3VyQ1NTTGVmdCAp
LmluZGV4T2YoICJhdXRvIiApID4gLTE7CisKKyAgICAgICAgLy8gTmVlZCB0byBiZSBhYmxlIHRv
IGNhbGN1bGF0ZSBwb3NpdGlvbiBpZiBlaXRoZXIKKyAgICAgICAgLy8gdG9wIG9yIGxlZnQgaXMg
YXV0byBhbmQgcG9zaXRpb24gaXMgZWl0aGVyIGFic29sdXRlIG9yIGZpeGVkCisgICAgICAgIGlm
ICggY2FsY3VsYXRlUG9zaXRpb24gKSB7CisgICAgICAgICAgICBjdXJQb3NpdGlvbiA9IGN1ckVs
ZW0ucG9zaXRpb24oKTsKKyAgICAgICAgICAgIGN1clRvcCA9IGN1clBvc2l0aW9uLnRvcDsKKyAg
ICAgICAgICAgIGN1ckxlZnQgPSBjdXJQb3NpdGlvbi5sZWZ0OworCisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBjdXJUb3AgPSBwYXJzZUZsb2F0KCBjdXJDU1NUb3AgKSB8fCAwOworICAg
ICAgICAgICAgY3VyTGVmdCA9IHBhcnNlRmxvYXQoIGN1ckNTU0xlZnQgKSB8fCAwOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggb3B0aW9ucyApICkgeworCisg
ICAgICAgICAgICAvLyBVc2UgalF1ZXJ5LmV4dGVuZCBoZXJlIHRvIGFsbG93IG1vZGlmaWNhdGlv
biBvZiBjb29yZGluYXRlcyBhcmd1bWVudCAoZ2gtMTg0OCkKKyAgICAgICAgICAgIG9wdGlvbnMg
PSBvcHRpb25zLmNhbGwoIGVsZW0sIGksIGpRdWVyeS5leHRlbmQoIHt9LCBjdXJPZmZzZXQgKSAp
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKCBvcHRpb25zLnRvcCAhPSBudWxsICkgeworICAg
ICAgICAgICAgcHJvcHMudG9wID0gKCBvcHRpb25zLnRvcCAtIGN1ck9mZnNldC50b3AgKSArIGN1
clRvcDsKKyAgICAgICAgfQorICAgICAgICBpZiAoIG9wdGlvbnMubGVmdCAhPSBudWxsICkgewor
ICAgICAgICAgICAgcHJvcHMubGVmdCA9ICggb3B0aW9ucy5sZWZ0IC0gY3VyT2Zmc2V0LmxlZnQg
KSArIGN1ckxlZnQ7CisgICAgICAgIH0KKworICAgICAgICBpZiAoICJ1c2luZyIgaW4gb3B0aW9u
cyApIHsKKyAgICAgICAgICAgIG9wdGlvbnMudXNpbmcuY2FsbCggZWxlbSwgcHJvcHMgKTsKKwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgY3VyRWxlbS5jc3MoIHByb3BzICk7CisgICAg
ICAgIH0KKyAgICB9Cit9OworCitqUXVlcnkuZm4uZXh0ZW5kKCB7CisgICAgb2Zmc2V0OiBmdW5j
dGlvbiggb3B0aW9ucyApIHsKKworICAgICAgICAvLyBQcmVzZXJ2ZSBjaGFpbmluZyBmb3Igc2V0
dGVyCisgICAgICAgIGlmICggYXJndW1lbnRzLmxlbmd0aCApIHsKKyAgICAgICAgICAgIHJldHVy
biBvcHRpb25zID09PSB1bmRlZmluZWQgPworICAgICAgICAgICAgICAgIHRoaXMgOgorICAgICAg
ICAgICAgICAgIHRoaXMuZWFjaCggZnVuY3Rpb24oIGkgKSB7CisgICAgICAgICAgICAgICAgICAg
IGpRdWVyeS5vZmZzZXQuc2V0T2Zmc2V0KCB0aGlzLCBvcHRpb25zLCBpICk7CisgICAgICAgICAg
ICAgICAgfSApOworICAgICAgICB9CisKKyAgICAgICAgdmFyIGRvY0VsZW0sIHdpbiwgcmVjdCwg
ZG9jLAorICAgICAgICAgICAgZWxlbSA9IHRoaXNbIDAgXTsKKworICAgICAgICBpZiAoICFlbGVt
ICkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gU3VwcG9y
dDogSUUgPD0xMSBvbmx5CisgICAgICAgIC8vIFJ1bm5pbmcgZ2V0Qm91bmRpbmdDbGllbnRSZWN0
IG9uIGEKKyAgICAgICAgLy8gZGlzY29ubmVjdGVkIG5vZGUgaW4gSUUgdGhyb3dzIGFuIGVycm9y
CisgICAgICAgIGlmICggIWVsZW0uZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGggKSB7CisgICAgICAg
ICAgICByZXR1cm4geyB0b3A6IDAsIGxlZnQ6IDAgfTsKKyAgICAgICAgfQorCisgICAgICAgIHJl
Y3QgPSBlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworCisgICAgICAgIC8vIE1ha2Ugc3Vy
ZSBlbGVtZW50IGlzIG5vdCBoaWRkZW4gKGRpc3BsYXk6IG5vbmUpCisgICAgICAgIGlmICggcmVj
dC53aWR0aCB8fCByZWN0LmhlaWdodCApIHsKKyAgICAgICAgICAgIGRvYyA9IGVsZW0ub3duZXJE
b2N1bWVudDsKKyAgICAgICAgICAgIHdpbiA9IGdldFdpbmRvdyggZG9jICk7CisgICAgICAgICAg
ICBkb2NFbGVtID0gZG9jLmRvY3VtZW50RWxlbWVudDsKKworICAgICAgICAgICAgcmV0dXJuIHsK
KyAgICAgICAgICAgICAgICB0b3A6IHJlY3QudG9wICsgd2luLnBhZ2VZT2Zmc2V0IC0gZG9jRWxl
bS5jbGllbnRUb3AsCisgICAgICAgICAgICAgICAgbGVmdDogcmVjdC5sZWZ0ICsgd2luLnBhZ2VY
T2Zmc2V0IC0gZG9jRWxlbS5jbGllbnRMZWZ0CisgICAgICAgICAgICB9OworICAgICAgICB9CisK
KyAgICAgICAgLy8gUmV0dXJuIHplcm9zIGZvciBkaXNjb25uZWN0ZWQgYW5kIGhpZGRlbiBlbGVt
ZW50cyAoZ2gtMjMxMCkKKyAgICAgICAgcmV0dXJuIHJlY3Q7CisgICAgfSwKKworICAgIHBvc2l0
aW9uOiBmdW5jdGlvbigpIHsKKyAgICAgICAgaWYgKCAhdGhpc1sgMCBdICkgeworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdmFyIG9mZnNldFBhcmVudCwgb2Zmc2V0
LAorICAgICAgICAgICAgZWxlbSA9IHRoaXNbIDAgXSwKKyAgICAgICAgICAgIHBhcmVudE9mZnNl
dCA9IHsgdG9wOiAwLCBsZWZ0OiAwIH07CisKKyAgICAgICAgLy8gRml4ZWQgZWxlbWVudHMgYXJl
IG9mZnNldCBmcm9tIHdpbmRvdyAocGFyZW50T2Zmc2V0ID0ge3RvcDowLCBsZWZ0OiAwfSwKKyAg
ICAgICAgLy8gYmVjYXVzZSBpdCBpcyBpdHMgb25seSBvZmZzZXQgcGFyZW50CisgICAgICAgIGlm
ICggalF1ZXJ5LmNzcyggZWxlbSwgInBvc2l0aW9uIiApID09PSAiZml4ZWQiICkgeworCisgICAg
ICAgICAgICAvLyBBc3N1bWUgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGlzIHRoZXJlIHdoZW4gY29t
cHV0ZWQgcG9zaXRpb24gaXMgZml4ZWQKKyAgICAgICAgICAgIG9mZnNldCA9IGVsZW0uZ2V0Qm91
bmRpbmdDbGllbnRSZWN0KCk7CisKKyAgICAgICAgfSBlbHNlIHsKKworICAgICAgICAgICAgLy8g
R2V0ICpyZWFsKiBvZmZzZXRQYXJlbnQKKyAgICAgICAgICAgIG9mZnNldFBhcmVudCA9IHRoaXMu
b2Zmc2V0UGFyZW50KCk7CisKKyAgICAgICAgICAgIC8vIEdldCBjb3JyZWN0IG9mZnNldHMKKyAg
ICAgICAgICAgIG9mZnNldCA9IHRoaXMub2Zmc2V0KCk7CisgICAgICAgICAgICBpZiAoICFqUXVl
cnkubm9kZU5hbWUoIG9mZnNldFBhcmVudFsgMCBdLCAiaHRtbCIgKSApIHsKKyAgICAgICAgICAg
ICAgICBwYXJlbnRPZmZzZXQgPSBvZmZzZXRQYXJlbnQub2Zmc2V0KCk7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIC8vIEFkZCBvZmZzZXRQYXJlbnQgYm9yZGVycworICAgICAgICAgICAg
cGFyZW50T2Zmc2V0ID0geworICAgICAgICAgICAgICAgIHRvcDogcGFyZW50T2Zmc2V0LnRvcCAr
IGpRdWVyeS5jc3MoIG9mZnNldFBhcmVudFsgMCBdLCAiYm9yZGVyVG9wV2lkdGgiLCB0cnVlICks
CisgICAgICAgICAgICAgICAgbGVmdDogcGFyZW50T2Zmc2V0LmxlZnQgKyBqUXVlcnkuY3NzKCBv
ZmZzZXRQYXJlbnRbIDAgXSwgImJvcmRlckxlZnRXaWR0aCIsIHRydWUgKQorICAgICAgICAgICAg
fTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFN1YnRyYWN0IHBhcmVudCBvZmZzZXRzIGFuZCBl
bGVtZW50IG1hcmdpbnMKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIHRvcDogb2Zmc2V0
LnRvcCAtIHBhcmVudE9mZnNldC50b3AgLSBqUXVlcnkuY3NzKCBlbGVtLCAibWFyZ2luVG9wIiwg
dHJ1ZSApLAorICAgICAgICAgICAgbGVmdDogb2Zmc2V0LmxlZnQgLSBwYXJlbnRPZmZzZXQubGVm
dCAtIGpRdWVyeS5jc3MoIGVsZW0sICJtYXJnaW5MZWZ0IiwgdHJ1ZSApCisgICAgICAgIH07Cisg
ICAgfSwKKworICAgIC8vIFRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuIGRvY3VtZW50RWxlbWVudCBp
biB0aGUgZm9sbG93aW5nIGNhc2VzOgorICAgIC8vIDEpIEZvciB0aGUgZWxlbWVudCBpbnNpZGUg
dGhlIGlmcmFtZSB3aXRob3V0IG9mZnNldFBhcmVudCwgdGhpcyBtZXRob2Qgd2lsbCByZXR1cm4K
KyAgICAvLyAgICBkb2N1bWVudEVsZW1lbnQgb2YgdGhlIHBhcmVudCB3aW5kb3cKKyAgICAvLyAy
KSBGb3IgdGhlIGhpZGRlbiBvciBkZXRhY2hlZCBlbGVtZW50CisgICAgLy8gMykgRm9yIGJvZHkg
b3IgaHRtbCBlbGVtZW50LCBpLmUuIGluIGNhc2Ugb2YgdGhlIGh0bWwgbm9kZSAtIGl0IHdpbGwg
cmV0dXJuIGl0c2VsZgorICAgIC8vCisgICAgLy8gYnV0IHRob3NlIGV4Y2VwdGlvbnMgd2VyZSBu
ZXZlciBwcmVzZW50ZWQgYXMgYSByZWFsIGxpZmUgdXNlLWNhc2VzCisgICAgLy8gYW5kIG1pZ2h0
IGJlIGNvbnNpZGVyZWQgYXMgbW9yZSBwcmVmZXJhYmxlIHJlc3VsdHMuCisgICAgLy8KKyAgICAv
LyBUaGlzIGxvZ2ljLCBob3dldmVyLCBpcyBub3QgZ3VhcmFudGVlZCBhbmQgY2FuIGNoYW5nZSBh
dCBhbnkgcG9pbnQgaW4gdGhlIGZ1dHVyZQorICAgIG9mZnNldFBhcmVudDogZnVuY3Rpb24oKSB7
CisgICAgICAgIHJldHVybiB0aGlzLm1hcCggZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB2YXIg
b2Zmc2V0UGFyZW50ID0gdGhpcy5vZmZzZXRQYXJlbnQ7CisKKyAgICAgICAgICAgIHdoaWxlICgg
b2Zmc2V0UGFyZW50ICYmIGpRdWVyeS5jc3MoIG9mZnNldFBhcmVudCwgInBvc2l0aW9uIiApID09
PSAic3RhdGljIiApIHsKKyAgICAgICAgICAgICAgICBvZmZzZXRQYXJlbnQgPSBvZmZzZXRQYXJl
bnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gb2Zm
c2V0UGFyZW50IHx8IGRvY3VtZW50RWxlbWVudDsKKyAgICAgICAgfSApOworICAgIH0KK30gKTsK
KworLy8gQ3JlYXRlIHNjcm9sbExlZnQgYW5kIHNjcm9sbFRvcCBtZXRob2RzCitqUXVlcnkuZWFj
aCggeyBzY3JvbGxMZWZ0OiAicGFnZVhPZmZzZXQiLCBzY3JvbGxUb3A6ICJwYWdlWU9mZnNldCIg
fSwgZnVuY3Rpb24oIG1ldGhvZCwgcHJvcCApIHsKKyAgICB2YXIgdG9wID0gInBhZ2VZT2Zmc2V0
IiA9PT0gcHJvcDsKKworICAgIGpRdWVyeS5mblsgbWV0aG9kIF0gPSBmdW5jdGlvbiggdmFsICkg
eworICAgICAgICByZXR1cm4gYWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggZWxlbSwgbWV0aG9kLCB2
YWwgKSB7CisgICAgICAgICAgICB2YXIgd2luID0gZ2V0V2luZG93KCBlbGVtICk7CisKKyAgICAg
ICAgICAgIGlmICggdmFsID09PSB1bmRlZmluZWQgKSB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHdpbiA/IHdpblsgcHJvcCBdIDogZWxlbVsgbWV0aG9kIF07CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGlmICggd2luICkgeworICAgICAgICAgICAgICAgIHdpbi5zY3JvbGxUbygKKyAg
ICAgICAgICAgICAgICAgICAgIXRvcCA/IHZhbCA6IHdpbi5wYWdlWE9mZnNldCwKKyAgICAgICAg
ICAgICAgICAgICAgdG9wID8gdmFsIDogd2luLnBhZ2VZT2Zmc2V0CisgICAgICAgICAgICAgICAg
KTsKKworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBlbGVtWyBtZXRob2Qg
XSA9IHZhbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwgbWV0aG9kLCB2YWwsIGFyZ3VtZW50
cy5sZW5ndGggKTsKKyAgICB9OworfSApOworCisvLyBTdXBwb3J0OiBTYWZhcmkgPD03IC0gOS4x
LCBDaHJvbWUgPD0zNyAtIDQ5CisvLyBBZGQgdGhlIHRvcC9sZWZ0IGNzc0hvb2tzIHVzaW5nIGpR
dWVyeS5mbi5wb3NpdGlvbgorLy8gV2Via2l0IGJ1ZzogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTI5MDg0CisvLyBCbGluayBidWc6IGh0dHBzOi8vYnVncy5jaHJvbWl1
bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTU4OTM0NworLy8gZ2V0Q29tcHV0ZWRT
dHlsZSByZXR1cm5zIHBlcmNlbnQgd2hlbiBzcGVjaWZpZWQgZm9yIHRvcC9sZWZ0L2JvdHRvbS9y
aWdodDsKKy8vIHJhdGhlciB0aGFuIG1ha2UgdGhlIGNzcyBtb2R1bGUgZGVwZW5kIG9uIHRoZSBv
ZmZzZXQgbW9kdWxlLCBqdXN0IGNoZWNrIGZvciBpdCBoZXJlCitqUXVlcnkuZWFjaCggWyAidG9w
IiwgImxlZnQiIF0sIGZ1bmN0aW9uKCBpLCBwcm9wICkgeworICAgIGpRdWVyeS5jc3NIb29rc1sg
cHJvcCBdID0gYWRkR2V0SG9va0lmKCBzdXBwb3J0LnBpeGVsUG9zaXRpb24sCisgICAgICAgIGZ1
bmN0aW9uKCBlbGVtLCBjb21wdXRlZCApIHsKKyAgICAgICAgICAgIGlmICggY29tcHV0ZWQgKSB7
CisgICAgICAgICAgICAgICAgY29tcHV0ZWQgPSBjdXJDU1MoIGVsZW0sIHByb3AgKTsKKworICAg
ICAgICAgICAgICAgIC8vIElmIGN1ckNTUyByZXR1cm5zIHBlcmNlbnRhZ2UsIGZhbGxiYWNrIHRv
IG9mZnNldAorICAgICAgICAgICAgICAgIHJldHVybiBybnVtbm9ucHgudGVzdCggY29tcHV0ZWQg
KSA/CisgICAgICAgICAgICAgICAgICAgIGpRdWVyeSggZWxlbSApLnBvc2l0aW9uKClbIHByb3Ag
XSArICJweCIgOgorICAgICAgICAgICAgICAgICAgICBjb21wdXRlZDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICk7Cit9ICk7CisKK3JldHVybiBqUXVlcnk7Cit9ICk7CmRpZmYgLS1n
aXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvcXVldWUuanMg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvcXVldWUuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZmJhZjJjOGVlZGMxM2Q3MTg5Yjg2NjY0Njg1NTZkMzY5OTA1ZmE3MAotLS0gL2Rl
di9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9x
dWV1ZS5qcwpAQCAtMCwwICsxLDE0NSBAQAorZGVmaW5lKCBbCisgICAgIi4vY29yZSIsCisgICAg
Ii4vZGF0YS92YXIvZGF0YVByaXYiLAorICAgICIuL2RlZmVycmVkIiwKKyAgICAiLi9jYWxsYmFj
a3MiCitdLCBmdW5jdGlvbiggalF1ZXJ5LCBkYXRhUHJpdiApIHsKKworInVzZSBzdHJpY3QiOwor
CitqUXVlcnkuZXh0ZW5kKCB7CisgICAgcXVldWU6IGZ1bmN0aW9uKCBlbGVtLCB0eXBlLCBkYXRh
ICkgeworICAgICAgICB2YXIgcXVldWU7CisKKyAgICAgICAgaWYgKCBlbGVtICkgeworICAgICAg
ICAgICAgdHlwZSA9ICggdHlwZSB8fCAiZngiICkgKyAicXVldWUiOworICAgICAgICAgICAgcXVl
dWUgPSBkYXRhUHJpdi5nZXQoIGVsZW0sIHR5cGUgKTsKKworICAgICAgICAgICAgLy8gU3BlZWQg
dXAgZGVxdWV1ZSBieSBnZXR0aW5nIG91dCBxdWlja2x5IGlmIHRoaXMgaXMganVzdCBhIGxvb2t1
cAorICAgICAgICAgICAgaWYgKCBkYXRhICkgeworICAgICAgICAgICAgICAgIGlmICggIXF1ZXVl
IHx8IGpRdWVyeS5pc0FycmF5KCBkYXRhICkgKSB7CisgICAgICAgICAgICAgICAgICAgIHF1ZXVl
ID0gZGF0YVByaXYuYWNjZXNzKCBlbGVtLCB0eXBlLCBqUXVlcnkubWFrZUFycmF5KCBkYXRhICkg
KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBxdWV1ZS5w
dXNoKCBkYXRhICk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAg
ICAgcmV0dXJuIHF1ZXVlIHx8IFtdOworICAgICAgICB9CisgICAgfSwKKworICAgIGRlcXVldWU6
IGZ1bmN0aW9uKCBlbGVtLCB0eXBlICkgeworICAgICAgICB0eXBlID0gdHlwZSB8fCAiZngiOwor
CisgICAgICAgIHZhciBxdWV1ZSA9IGpRdWVyeS5xdWV1ZSggZWxlbSwgdHlwZSApLAorICAgICAg
ICAgICAgc3RhcnRMZW5ndGggPSBxdWV1ZS5sZW5ndGgsCisgICAgICAgICAgICBmbiA9IHF1ZXVl
LnNoaWZ0KCksCisgICAgICAgICAgICBob29rcyA9IGpRdWVyeS5fcXVldWVIb29rcyggZWxlbSwg
dHlwZSApLAorICAgICAgICAgICAgbmV4dCA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAg
IGpRdWVyeS5kZXF1ZXVlKCBlbGVtLCB0eXBlICk7CisgICAgICAgICAgICB9OworCisgICAgICAg
IC8vIElmIHRoZSBmeCBxdWV1ZSBpcyBkZXF1ZXVlZCwgYWx3YXlzIHJlbW92ZSB0aGUgcHJvZ3Jl
c3Mgc2VudGluZWwKKyAgICAgICAgaWYgKCBmbiA9PT0gImlucHJvZ3Jlc3MiICkgeworICAgICAg
ICAgICAgZm4gPSBxdWV1ZS5zaGlmdCgpOworICAgICAgICAgICAgc3RhcnRMZW5ndGgtLTsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmICggZm4gKSB7CisKKyAgICAgICAgICAgIC8vIEFkZCBhIHBy
b2dyZXNzIHNlbnRpbmVsIHRvIHByZXZlbnQgdGhlIGZ4IHF1ZXVlIGZyb20gYmVpbmcKKyAgICAg
ICAgICAgIC8vIGF1dG9tYXRpY2FsbHkgZGVxdWV1ZWQKKyAgICAgICAgICAgIGlmICggdHlwZSA9
PT0gImZ4IiApIHsKKyAgICAgICAgICAgICAgICBxdWV1ZS51bnNoaWZ0KCAiaW5wcm9ncmVzcyIg
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gQ2xlYXIgdXAgdGhlIGxhc3QgcXVl
dWUgc3RvcCBmdW5jdGlvbgorICAgICAgICAgICAgZGVsZXRlIGhvb2tzLnN0b3A7CisgICAgICAg
ICAgICBmbi5jYWxsKCBlbGVtLCBuZXh0LCBob29rcyApOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKCAhc3RhcnRMZW5ndGggJiYgaG9va3MgKSB7CisgICAgICAgICAgICBob29rcy5lbXB0eS5m
aXJlKCk7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgLy8gTm90IHB1YmxpYyAtIGdlbmVyYXRl
IGEgcXVldWVIb29rcyBvYmplY3QsIG9yIHJldHVybiB0aGUgY3VycmVudCBvbmUKKyAgICBfcXVl
dWVIb29rczogZnVuY3Rpb24oIGVsZW0sIHR5cGUgKSB7CisgICAgICAgIHZhciBrZXkgPSB0eXBl
ICsgInF1ZXVlSG9va3MiOworICAgICAgICByZXR1cm4gZGF0YVByaXYuZ2V0KCBlbGVtLCBrZXkg
KSB8fCBkYXRhUHJpdi5hY2Nlc3MoIGVsZW0sIGtleSwgeworICAgICAgICAgICAgZW1wdHk6IGpR
dWVyeS5DYWxsYmFja3MoICJvbmNlIG1lbW9yeSIgKS5hZGQoIGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgICAgIGRhdGFQcml2LnJlbW92ZSggZWxlbSwgWyB0eXBlICsgInF1ZXVlIiwga2V5IF0g
KTsKKyAgICAgICAgICAgIH0gKQorICAgICAgICB9ICk7CisgICAgfQorfSApOworCitqUXVlcnku
Zm4uZXh0ZW5kKCB7CisgICAgcXVldWU6IGZ1bmN0aW9uKCB0eXBlLCBkYXRhICkgeworICAgICAg
ICB2YXIgc2V0dGVyID0gMjsKKworICAgICAgICBpZiAoIHR5cGVvZiB0eXBlICE9PSAic3RyaW5n
IiApIHsKKyAgICAgICAgICAgIGRhdGEgPSB0eXBlOworICAgICAgICAgICAgdHlwZSA9ICJmeCI7
CisgICAgICAgICAgICBzZXR0ZXItLTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICggYXJndW1l
bnRzLmxlbmd0aCA8IHNldHRlciApIHsKKyAgICAgICAgICAgIHJldHVybiBqUXVlcnkucXVldWUo
IHRoaXNbIDAgXSwgdHlwZSApOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGRhdGEgPT09
IHVuZGVmaW5lZCA/CisgICAgICAgICAgICB0aGlzIDoKKyAgICAgICAgICAgIHRoaXMuZWFjaCgg
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgdmFyIHF1ZXVlID0galF1ZXJ5LnF1ZXVlKCB0
aGlzLCB0eXBlLCBkYXRhICk7CisKKyAgICAgICAgICAgICAgICAvLyBFbnN1cmUgYSBob29rcyBm
b3IgdGhpcyBxdWV1ZQorICAgICAgICAgICAgICAgIGpRdWVyeS5fcXVldWVIb29rcyggdGhpcywg
dHlwZSApOworCisgICAgICAgICAgICAgICAgaWYgKCB0eXBlID09PSAiZngiICYmIHF1ZXVlWyAw
IF0gIT09ICJpbnByb2dyZXNzIiApIHsKKyAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmRlcXVl
dWUoIHRoaXMsIHR5cGUgKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9ICk7Cisg
ICAgfSwKKyAgICBkZXF1ZXVlOiBmdW5jdGlvbiggdHlwZSApIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMuZWFjaCggZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBqUXVlcnkuZGVxdWV1ZSggdGhpcywg
dHlwZSApOworICAgICAgICB9ICk7CisgICAgfSwKKyAgICBjbGVhclF1ZXVlOiBmdW5jdGlvbigg
dHlwZSApIHsKKyAgICAgICAgcmV0dXJuIHRoaXMucXVldWUoIHR5cGUgfHwgImZ4IiwgW10gKTsK
KyAgICB9LAorCisgICAgLy8gR2V0IGEgcHJvbWlzZSByZXNvbHZlZCB3aGVuIHF1ZXVlcyBvZiBh
IGNlcnRhaW4gdHlwZQorICAgIC8vIGFyZSBlbXB0aWVkIChmeCBpcyB0aGUgdHlwZSBieSBkZWZh
dWx0KQorICAgIHByb21pc2U6IGZ1bmN0aW9uKCB0eXBlLCBvYmogKSB7CisgICAgICAgIHZhciB0
bXAsCisgICAgICAgICAgICBjb3VudCA9IDEsCisgICAgICAgICAgICBkZWZlciA9IGpRdWVyeS5E
ZWZlcnJlZCgpLAorICAgICAgICAgICAgZWxlbWVudHMgPSB0aGlzLAorICAgICAgICAgICAgaSA9
IHRoaXMubGVuZ3RoLAorICAgICAgICAgICAgcmVzb2x2ZSA9IGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgICAgIGlmICggISggLS1jb3VudCApICkgeworICAgICAgICAgICAgICAgICAgICBkZWZl
ci5yZXNvbHZlV2l0aCggZWxlbWVudHMsIFsgZWxlbWVudHMgXSApOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH07CisKKyAgICAgICAgaWYgKCB0eXBlb2YgdHlwZSAhPT0gInN0cmlu
ZyIgKSB7CisgICAgICAgICAgICBvYmogPSB0eXBlOworICAgICAgICAgICAgdHlwZSA9IHVuZGVm
aW5lZDsKKyAgICAgICAgfQorICAgICAgICB0eXBlID0gdHlwZSB8fCAiZngiOworCisgICAgICAg
IHdoaWxlICggaS0tICkgeworICAgICAgICAgICAgdG1wID0gZGF0YVByaXYuZ2V0KCBlbGVtZW50
c1sgaSBdLCB0eXBlICsgInF1ZXVlSG9va3MiICk7CisgICAgICAgICAgICBpZiAoIHRtcCAmJiB0
bXAuZW1wdHkgKSB7CisgICAgICAgICAgICAgICAgY291bnQrKzsKKyAgICAgICAgICAgICAgICB0
bXAuZW1wdHkuYWRkKCByZXNvbHZlICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgcmVzb2x2ZSgpOworICAgICAgICByZXR1cm4gZGVmZXIucHJvbWlzZSggb2JqICk7CisgICAg
fQorfSApOworCityZXR1cm4galF1ZXJ5OworfSApOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
anF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL3F1ZXVlL2RlbGF5LmpzIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL3F1ZXVlL2RlbGF5LmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmFjOTczM2FlMGJlMzhmZjZlNmVjYjU0OWRjMjNlMmE3ODQyODhhMTIKLS0tIC9kZXYvbnVs
bAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvcXVldWUv
ZGVsYXkuanMKQEAgLTAsMCArMSwyNCBAQAorZGVmaW5lKCBbCisgICAgIi4uL2NvcmUiLAorICAg
ICIuLi9xdWV1ZSIsCisgICAgIi4uL2VmZmVjdHMiIC8vIERlbGF5IGlzIG9wdGlvbmFsIGJlY2F1
c2Ugb2YgdGhpcyBkZXBlbmRlbmN5CitdLCBmdW5jdGlvbiggalF1ZXJ5ICkgeworCisidXNlIHN0
cmljdCI7CisKKy8vIEJhc2VkIG9mZiBvZiB0aGUgcGx1Z2luIGJ5IENsaW50IEhlbGZlcnMsIHdp
dGggcGVybWlzc2lvbi4KKy8vIGh0dHBzOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8yMDEwMDMyNDAx
NDc0Ny9odHRwOi8vYmxpbmRzaWduYWxzLmNvbS9pbmRleC5waHAvMjAwOS8wNy9qcXVlcnktZGVs
YXkvCitqUXVlcnkuZm4uZGVsYXkgPSBmdW5jdGlvbiggdGltZSwgdHlwZSApIHsKKyAgICB0aW1l
ID0galF1ZXJ5LmZ4ID8galF1ZXJ5LmZ4LnNwZWVkc1sgdGltZSBdIHx8IHRpbWUgOiB0aW1lOwor
ICAgIHR5cGUgPSB0eXBlIHx8ICJmeCI7CisKKyAgICByZXR1cm4gdGhpcy5xdWV1ZSggdHlwZSwg
ZnVuY3Rpb24oIG5leHQsIGhvb2tzICkgeworICAgICAgICB2YXIgdGltZW91dCA9IHdpbmRvdy5z
ZXRUaW1lb3V0KCBuZXh0LCB0aW1lICk7CisgICAgICAgIGhvb2tzLnN0b3AgPSBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQoIHRpbWVvdXQgKTsKKyAgICAgICAg
fTsKKyAgICB9ICk7Cit9OworCityZXR1cm4galF1ZXJ5LmZuLmRlbGF5OworfSApOwpkaWZmIC0t
Z2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL3NlbGVjdG9y
LW5hdGl2ZS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy9z
ZWxlY3Rvci1uYXRpdmUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzY2NjMyNDBmMmM5YjM4NWY3NzdjNmE5MWEx
OGIyZWJiY2NhZjk2NQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2Rl
X21vZHVsZXMvanF1ZXJ5L3NyYy9zZWxlY3Rvci1uYXRpdmUuanMKQEAgLTAsMCArMSwyMzcgQEAK
K2RlZmluZSggWworICAgICIuL2NvcmUiLAorICAgICIuL3Zhci9kb2N1bWVudCIsCisgICAgIi4v
dmFyL2RvY3VtZW50RWxlbWVudCIsCisgICAgIi4vdmFyL2hhc093biIsCisgICAgIi4vdmFyL2lu
ZGV4T2YiCitdLCBmdW5jdGlvbiggalF1ZXJ5LCBkb2N1bWVudCwgZG9jdW1lbnRFbGVtZW50LCBo
YXNPd24sIGluZGV4T2YgKSB7CisKKyJ1c2Ugc3RyaWN0IjsKKworLyoKKyAqIE9wdGlvbmFsIChu
b24tU2l6emxlKSBzZWxlY3RvciBtb2R1bGUgZm9yIGN1c3RvbSBidWlsZHMuCisgKgorICogTm90
ZSB0aGF0IHRoaXMgRE9FUyBOT1QgU1VQUE9SVCBtYW55IGRvY3VtZW50ZWQgalF1ZXJ5CisgKiBm
ZWF0dXJlcyBpbiBleGNoYW5nZSBmb3IgaXRzIHNtYWxsZXIgc2l6ZToKKyAqCisgKiBBdHRyaWJ1
dGUgbm90IGVxdWFsIHNlbGVjdG9yCisgKiBQb3NpdGlvbmFsIHNlbGVjdG9ycyAoOmZpcnN0OyA6
ZXEobik7IDpvZGQ7IGV0Yy4pCisgKiBUeXBlIHNlbGVjdG9ycyAoOmlucHV0OyA6Y2hlY2tib3g7
IDpidXR0b247IGV0Yy4pCisgKiBTdGF0ZS1iYXNlZCBzZWxlY3RvcnMgKDphbmltYXRlZDsgOnZp
c2libGU7IDpoaWRkZW47IGV0Yy4pCisgKiA6aGFzKHNlbGVjdG9yKQorICogOm5vdChjb21wbGV4
IHNlbGVjdG9yKQorICogY3VzdG9tIHNlbGVjdG9ycyB2aWEgU2l6emxlIGV4dGVuc2lvbnMKKyAq
IExlYWRpbmcgY29tYmluYXRvcnMgKGUuZy4sICRjb2xsZWN0aW9uLmZpbmQoIj4gKiIpKQorICog
UmVsaWFibGUgZnVuY3Rpb25hbGl0eSBvbiBYTUwgZnJhZ21lbnRzCisgKiBSZXF1aXJpbmcgYWxs
IHBhcnRzIG9mIGEgc2VsZWN0b3IgdG8gbWF0Y2ggZWxlbWVudHMgdW5kZXIgY29udGV4dAorICog
ICAoZS5nLiwgJGRpdi5maW5kKCJkaXYgPiAqIikgbm93IG1hdGNoZXMgY2hpbGRyZW4gb2YgJGRp
dikKKyAqIE1hdGNoaW5nIGFnYWluc3Qgbm9uLWVsZW1lbnRzCisgKiBSZWxpYWJsZSBzb3J0aW5n
IG9mIGRpc2Nvbm5lY3RlZCBub2RlcworICogcXVlcnlTZWxlY3RvckFsbCBidWcgZml4ZXMgKGUu
Zy4sIHVucmVsaWFibGUgOmZvY3VzIG9uIFdlYktpdCkKKyAqCisgKiBJZiBhbnkgb2YgdGhlc2Ug
YXJlIHVuYWNjZXB0YWJsZSB0cmFkZW9mZnMsIGVpdGhlciB1c2UgU2l6emxlIG9yCisgKiBjdXN0
b21pemUgdGhpcyBzdHViIGZvciB0aGUgcHJvamVjdCdzIHNwZWNpZmljIG5lZWRzLgorICovCisK
K3ZhciBoYXNEdXBsaWNhdGUsIHNvcnRJbnB1dCwKKyAgICBzb3J0U3RhYmxlID0galF1ZXJ5LmV4
cGFuZG8uc3BsaXQoICIiICkuc29ydCggc29ydE9yZGVyICkuam9pbiggIiIgKSA9PT0galF1ZXJ5
LmV4cGFuZG8sCisgICAgbWF0Y2hlcyA9IGRvY3VtZW50RWxlbWVudC5tYXRjaGVzIHx8CisgICAg
ICAgIGRvY3VtZW50RWxlbWVudC53ZWJraXRNYXRjaGVzU2VsZWN0b3IgfHwKKyAgICAgICAgZG9j
dW1lbnRFbGVtZW50Lm1vek1hdGNoZXNTZWxlY3RvciB8fAorICAgICAgICBkb2N1bWVudEVsZW1l
bnQub01hdGNoZXNTZWxlY3RvciB8fAorICAgICAgICBkb2N1bWVudEVsZW1lbnQubXNNYXRjaGVz
U2VsZWN0b3IsCisKKyAgICAvLyBDU1Mgc3RyaW5nL2lkZW50aWZpZXIgc2VyaWFsaXphdGlvbgor
ICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3NvbS8jY29tbW9uLXNlcmlhbGl6aW5n
LWlkaW9tcworICAgIHJjc3Nlc2NhcGUgPSAvKFtcMC1ceDFmXHg3Zl18Xi0/XGQpfF4tJHxbXlx4
ODAtXHVGRkZGXHctXS9nLAorICAgIGZjc3Nlc2NhcGUgPSBmdW5jdGlvbiggY2gsIGFzQ29kZVBv
aW50ICkgeworICAgICAgICBpZiAoIGFzQ29kZVBvaW50ICkgeworCisgICAgICAgICAgICAvLyBV
KzAwMDAgTlVMTCBiZWNvbWVzIFUrRkZGRCBSRVBMQUNFTUVOVCBDSEFSQUNURVIKKyAgICAgICAg
ICAgIGlmICggY2ggPT09ICJcMCIgKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuICJcdUZGRkQi
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBDb250cm9sIGNoYXJhY3RlcnMgYW5k
IChkZXBlbmRlbnQgdXBvbiBwb3NpdGlvbikgbnVtYmVycyBnZXQgZXNjYXBlZCBhcyBjb2RlIHBv
aW50cworICAgICAgICAgICAgcmV0dXJuIGNoLnNsaWNlKCAwLCAtMSApICsgIlxcIiArIGNoLmNo
YXJDb2RlQXQoIGNoLmxlbmd0aCAtIDEgKS50b1N0cmluZyggMTYgKSArICIgIjsKKyAgICAgICAg
fQorCisgICAgICAgIC8vIE90aGVyIHBvdGVudGlhbGx5LXNwZWNpYWwgQVNDSUkgY2hhcmFjdGVy
cyBnZXQgYmFja3NsYXNoLWVzY2FwZWQKKyAgICAgICAgcmV0dXJuICJcXCIgKyBjaDsKKyAgICB9
OworCitmdW5jdGlvbiBzb3J0T3JkZXIoIGEsIGIgKSB7CisKKyAgICAvLyBGbGFnIGZvciBkdXBs
aWNhdGUgcmVtb3ZhbAorICAgIGlmICggYSA9PT0gYiApIHsKKyAgICAgICAgaGFzRHVwbGljYXRl
ID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLy8gU29ydCBvbiBtZXRo
b2QgZXhpc3RlbmNlIGlmIG9ubHkgb25lIGlucHV0IGhhcyBjb21wYXJlRG9jdW1lbnRQb3NpdGlv
bgorICAgIHZhciBjb21wYXJlID0gIWEuY29tcGFyZURvY3VtZW50UG9zaXRpb24gLSAhYi5jb21w
YXJlRG9jdW1lbnRQb3NpdGlvbjsKKyAgICBpZiAoIGNvbXBhcmUgKSB7CisgICAgICAgIHJldHVy
biBjb21wYXJlOworICAgIH0KKworICAgIC8vIENhbGN1bGF0ZSBwb3NpdGlvbiBpZiBib3RoIGlu
cHV0cyBiZWxvbmcgdG8gdGhlIHNhbWUgZG9jdW1lbnQKKyAgICBjb21wYXJlID0gKCBhLm93bmVy
RG9jdW1lbnQgfHwgYSApID09PSAoIGIub3duZXJEb2N1bWVudCB8fCBiICkgPworICAgICAgICBh
LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKCBiICkgOgorCisgICAgICAgIC8vIE90aGVyd2lzZSB3
ZSBrbm93IHRoZXkgYXJlIGRpc2Nvbm5lY3RlZAorICAgICAgICAxOworCisgICAgLy8gRGlzY29u
bmVjdGVkIG5vZGVzCisgICAgaWYgKCBjb21wYXJlICYgMSApIHsKKworICAgICAgICAvLyBDaG9v
c2UgdGhlIGZpcnN0IGVsZW1lbnQgdGhhdCBpcyByZWxhdGVkIHRvIG91ciBwcmVmZXJyZWQgZG9j
dW1lbnQKKyAgICAgICAgaWYgKCBhID09PSBkb2N1bWVudCB8fCBhLm93bmVyRG9jdW1lbnQgPT09
IGRvY3VtZW50ICYmCisgICAgICAgICAgICBqUXVlcnkuY29udGFpbnMoIGRvY3VtZW50LCBhICkg
KSB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCBiID09
PSBkb2N1bWVudCB8fCBiLm93bmVyRG9jdW1lbnQgPT09IGRvY3VtZW50ICYmCisgICAgICAgICAg
ICBqUXVlcnkuY29udGFpbnMoIGRvY3VtZW50LCBiICkgKSB7CisgICAgICAgICAgICByZXR1cm4g
MTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIE1haW50YWluIG9yaWdpbmFsIG9yZGVyCisgICAg
ICAgIHJldHVybiBzb3J0SW5wdXQgPworICAgICAgICAgICAgKCBpbmRleE9mLmNhbGwoIHNvcnRJ
bnB1dCwgYSApIC0gaW5kZXhPZi5jYWxsKCBzb3J0SW5wdXQsIGIgKSApIDoKKyAgICAgICAgICAg
IDA7CisgICAgfQorCisgICAgcmV0dXJuIGNvbXBhcmUgJiA0ID8gLTEgOiAxOworfQorCitmdW5j
dGlvbiB1bmlxdWVTb3J0KCByZXN1bHRzICkgeworICAgIHZhciBlbGVtLAorICAgICAgICBkdXBs
aWNhdGVzID0gW10sCisgICAgICAgIGogPSAwLAorICAgICAgICBpID0gMDsKKworICAgIGhhc0R1
cGxpY2F0ZSA9IGZhbHNlOworICAgIHNvcnRJbnB1dCA9ICFzb3J0U3RhYmxlICYmIHJlc3VsdHMu
c2xpY2UoIDAgKTsKKyAgICByZXN1bHRzLnNvcnQoIHNvcnRPcmRlciApOworCisgICAgaWYgKCBo
YXNEdXBsaWNhdGUgKSB7CisgICAgICAgIHdoaWxlICggKCBlbGVtID0gcmVzdWx0c1sgaSsrIF0g
KSApIHsKKyAgICAgICAgICAgIGlmICggZWxlbSA9PT0gcmVzdWx0c1sgaSBdICkgeworICAgICAg
ICAgICAgICAgIGogPSBkdXBsaWNhdGVzLnB1c2goIGkgKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICB3aGlsZSAoIGotLSApIHsKKyAgICAgICAgICAgIHJlc3VsdHMuc3BsaWNl
KCBkdXBsaWNhdGVzWyBqIF0sIDEgKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIENsZWFy
IGlucHV0IGFmdGVyIHNvcnRpbmcgdG8gcmVsZWFzZSBvYmplY3RzCisgICAgLy8gU2VlIGh0dHBz
Oi8vZ2l0aHViLmNvbS9qcXVlcnkvc2l6emxlL3B1bGwvMjI1CisgICAgc29ydElucHV0ID0gbnVs
bDsKKworICAgIHJldHVybiByZXN1bHRzOworfQorCitmdW5jdGlvbiBlc2NhcGUoIHNlbCApIHsK
KyAgICByZXR1cm4gKCBzZWwgKyAiIiApLnJlcGxhY2UoIHJjc3Nlc2NhcGUsIGZjc3Nlc2NhcGUg
KTsKK30KKworalF1ZXJ5LmV4dGVuZCggeworICAgIHVuaXF1ZVNvcnQ6IHVuaXF1ZVNvcnQsCisg
ICAgdW5pcXVlOiB1bmlxdWVTb3J0LAorICAgIGVzY2FwZVNlbGVjdG9yOiBlc2NhcGUsCisgICAg
ZmluZDogZnVuY3Rpb24oIHNlbGVjdG9yLCBjb250ZXh0LCByZXN1bHRzLCBzZWVkICkgeworICAg
ICAgICB2YXIgZWxlbSwgbm9kZVR5cGUsCisgICAgICAgICAgICBpID0gMDsKKworICAgICAgICBy
ZXN1bHRzID0gcmVzdWx0cyB8fCBbXTsKKyAgICAgICAgY29udGV4dCA9IGNvbnRleHQgfHwgZG9j
dW1lbnQ7CisKKyAgICAgICAgLy8gU2FtZSBiYXNpYyBzYWZlZ3VhcmQgYXMgU2l6emxlCisgICAg
ICAgIGlmICggIXNlbGVjdG9yIHx8IHR5cGVvZiBzZWxlY3RvciAhPT0gInN0cmluZyIgKSB7Cisg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0czsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEVhcmx5
IHJldHVybiBpZiBjb250ZXh0IGlzIG5vdCBhbiBlbGVtZW50IG9yIGRvY3VtZW50CisgICAgICAg
IGlmICggKCBub2RlVHlwZSA9IGNvbnRleHQubm9kZVR5cGUgKSAhPT0gMSAmJiBub2RlVHlwZSAh
PT0gOSApIHsKKyAgICAgICAgICAgIHJldHVybiBbXTsKKyAgICAgICAgfQorCisgICAgICAgIGlm
ICggc2VlZCApIHsKKyAgICAgICAgICAgIHdoaWxlICggKCBlbGVtID0gc2VlZFsgaSsrIF0gKSAp
IHsKKyAgICAgICAgICAgICAgICBpZiAoIGpRdWVyeS5maW5kLm1hdGNoZXNTZWxlY3RvciggZWxl
bSwgc2VsZWN0b3IgKSApIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0cy5wdXNoKCBlbGVt
ICk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgalF1ZXJ5Lm1lcmdlKCByZXN1bHRzLCBjb250ZXh0LnF1ZXJ5U2VsZWN0b3JB
bGwoIHNlbGVjdG9yICkgKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiByZXN1bHRzOwor
ICAgIH0sCisgICAgdGV4dDogZnVuY3Rpb24oIGVsZW0gKSB7CisgICAgICAgIHZhciBub2RlLAor
ICAgICAgICAgICAgcmV0ID0gIiIsCisgICAgICAgICAgICBpID0gMCwKKyAgICAgICAgICAgIG5v
ZGVUeXBlID0gZWxlbS5ub2RlVHlwZTsKKworICAgICAgICBpZiAoICFub2RlVHlwZSApIHsKKwor
ICAgICAgICAgICAgLy8gSWYgbm8gbm9kZVR5cGUsIHRoaXMgaXMgZXhwZWN0ZWQgdG8gYmUgYW4g
YXJyYXkKKyAgICAgICAgICAgIHdoaWxlICggKCBub2RlID0gZWxlbVsgaSsrIF0gKSApIHsKKwor
ICAgICAgICAgICAgICAgIC8vIERvIG5vdCB0cmF2ZXJzZSBjb21tZW50IG5vZGVzCisgICAgICAg
ICAgICAgICAgcmV0ICs9IGpRdWVyeS50ZXh0KCBub2RlICk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0gZWxzZSBpZiAoIG5vZGVUeXBlID09PSAxIHx8IG5vZGVUeXBlID09PSA5IHx8IG5vZGVU
eXBlID09PSAxMSApIHsKKworICAgICAgICAgICAgLy8gVXNlIHRleHRDb250ZW50IGZvciBlbGVt
ZW50cworICAgICAgICAgICAgcmV0dXJuIGVsZW0udGV4dENvbnRlbnQ7CisgICAgICAgIH0gZWxz
ZSBpZiAoIG5vZGVUeXBlID09PSAzIHx8IG5vZGVUeXBlID09PSA0ICkgeworICAgICAgICAgICAg
cmV0dXJuIGVsZW0ubm9kZVZhbHVlOworICAgICAgICB9CisKKyAgICAgICAgLy8gRG8gbm90IGlu
Y2x1ZGUgY29tbWVudCBvciBwcm9jZXNzaW5nIGluc3RydWN0aW9uIG5vZGVzCisKKyAgICAgICAg
cmV0dXJuIHJldDsKKyAgICB9LAorICAgIGNvbnRhaW5zOiBmdW5jdGlvbiggYSwgYiApIHsKKyAg
ICAgICAgdmFyIGFkb3duID0gYS5ub2RlVHlwZSA9PT0gOSA/IGEuZG9jdW1lbnRFbGVtZW50IDog
YSwKKyAgICAgICAgICAgIGJ1cCA9IGIgJiYgYi5wYXJlbnROb2RlOworICAgICAgICByZXR1cm4g
YSA9PT0gYnVwIHx8ICEhKCBidXAgJiYgYnVwLm5vZGVUeXBlID09PSAxICYmIGFkb3duLmNvbnRh
aW5zKCBidXAgKSApOworICAgIH0sCisgICAgaXNYTUxEb2M6IGZ1bmN0aW9uKCBlbGVtICkgewor
CisgICAgICAgIC8vIGRvY3VtZW50RWxlbWVudCBpcyB2ZXJpZmllZCBmb3IgY2FzZXMgd2hlcmUg
aXQgZG9lc24ndCB5ZXQgZXhpc3QKKyAgICAgICAgLy8gKHN1Y2ggYXMgbG9hZGluZyBpZnJhbWVz
IGluIElFIC0gIzQ4MzMpCisgICAgICAgIHZhciBkb2N1bWVudEVsZW1lbnQgPSBlbGVtICYmICgg
ZWxlbS5vd25lckRvY3VtZW50IHx8IGVsZW0gKS5kb2N1bWVudEVsZW1lbnQ7CisgICAgICAgIHJl
dHVybiBkb2N1bWVudEVsZW1lbnQgPyBkb2N1bWVudEVsZW1lbnQubm9kZU5hbWUgIT09ICJIVE1M
IiA6IGZhbHNlOworICAgIH0sCisgICAgZXhwcjogeworICAgICAgICBhdHRySGFuZGxlOiB7fSwK
KyAgICAgICAgbWF0Y2g6IHsKKyAgICAgICAgICAgIGJvb2w6IG5ldyBSZWdFeHAoICJeKD86Y2hl
Y2tlZHxzZWxlY3RlZHxhc3luY3xhdXRvZm9jdXN8YXV0b3BsYXl8Y29udHJvbHN8ZGVmZXIiICsK
KyAgICAgICAgICAgICAgICAifGRpc2FibGVkfGhpZGRlbnxpc21hcHxsb29wfG11bHRpcGxlfG9w
ZW58cmVhZG9ubHl8cmVxdWlyZWR8c2NvcGVkKSQiLCAiaSIgKSwKKyAgICAgICAgICAgIG5lZWRz
Q29udGV4dDogL15bXHgyMFx0XHJcblxmXSpbPit+XS8KKyAgICAgICAgfQorICAgIH0KK30gKTsK
KworalF1ZXJ5LmV4dGVuZCggalF1ZXJ5LmZpbmQsIHsKKyAgICBtYXRjaGVzOiBmdW5jdGlvbigg
ZXhwciwgZWxlbWVudHMgKSB7CisgICAgICAgIHJldHVybiBqUXVlcnkuZmluZCggZXhwciwgbnVs
bCwgbnVsbCwgZWxlbWVudHMgKTsKKyAgICB9LAorICAgIG1hdGNoZXNTZWxlY3RvcjogZnVuY3Rp
b24oIGVsZW0sIGV4cHIgKSB7CisgICAgICAgIHJldHVybiBtYXRjaGVzLmNhbGwoIGVsZW0sIGV4
cHIgKTsKKyAgICB9LAorICAgIGF0dHI6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lICkgeworICAgICAg
ICB2YXIgZm4gPSBqUXVlcnkuZXhwci5hdHRySGFuZGxlWyBuYW1lLnRvTG93ZXJDYXNlKCkgXSwK
KworICAgICAgICAgICAgLy8gRG9uJ3QgZ2V0IGZvb2xlZCBieSBPYmplY3QucHJvdG90eXBlIHBy
b3BlcnRpZXMgKGpRdWVyeSAjMTM4MDcpCisgICAgICAgICAgICB2YWx1ZSA9IGZuICYmIGhhc093
bi5jYWxsKCBqUXVlcnkuZXhwci5hdHRySGFuZGxlLCBuYW1lLnRvTG93ZXJDYXNlKCkgKSA/Cisg
ICAgICAgICAgICAgICAgZm4oIGVsZW0sIG5hbWUsIGpRdWVyeS5pc1hNTERvYyggZWxlbSApICkg
OgorICAgICAgICAgICAgICAgIHVuZGVmaW5lZDsKKyAgICAgICAgcmV0dXJuIHZhbHVlICE9PSB1
bmRlZmluZWQgPyB2YWx1ZSA6IGVsZW0uZ2V0QXR0cmlidXRlKCBuYW1lICk7CisgICAgfQorfSAp
OworCit9ICk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2px
dWVyeS9zcmMvc2VsZWN0b3Itc2l6emxlLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9k
dWxlcy9qcXVlcnkvc3JjL3NlbGVjdG9yLXNpenpsZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZGMxYjc0OTAw
MGI1NTg4NTJmYzcxZWFmNGE1MTk2NGZiODI2ZTUyCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL3NlbGVjdG9yLXNpenpsZS5qcwpA
QCAtMCwwICsxLDE5IEBACitkZWZpbmUoIFsKKyAgICAiLi9jb3JlIiwKKyAgICAiLi4vZXh0ZXJu
YWwvc2l6emxlL2Rpc3Qvc2l6emxlIgorXSwgZnVuY3Rpb24oIGpRdWVyeSwgU2l6emxlICkgewor
CisidXNlIHN0cmljdCI7CisKK2pRdWVyeS5maW5kID0gU2l6emxlOworalF1ZXJ5LmV4cHIgPSBT
aXp6bGUuc2VsZWN0b3JzOworCisvLyBEZXByZWNhdGVkCitqUXVlcnkuZXhwclsgIjoiIF0gPSBq
UXVlcnkuZXhwci5wc2V1ZG9zOworalF1ZXJ5LnVuaXF1ZVNvcnQgPSBqUXVlcnkudW5pcXVlID0g
U2l6emxlLnVuaXF1ZVNvcnQ7CitqUXVlcnkudGV4dCA9IFNpenpsZS5nZXRUZXh0OworalF1ZXJ5
LmlzWE1MRG9jID0gU2l6emxlLmlzWE1MOworalF1ZXJ5LmNvbnRhaW5zID0gU2l6emxlLmNvbnRh
aW5zOworalF1ZXJ5LmVzY2FwZVNlbGVjdG9yID0gU2l6emxlLmVzY2FwZTsKKworfSApOwpkaWZm
IC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL3NlbGVj
dG9yLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL3NlbGVj
dG9yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmFkMzk3YjBlOTRmMjk2ZGIwNzkxODY2ZjY4NjU3MWEzYzA3Njgy
OTkKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2px
dWVyeS9zcmMvc2VsZWN0b3IuanMKQEAgLTAsMCArMSwzIEBACitkZWZpbmUoIFsgIi4vc2VsZWN0
b3Itc2l6emxlIiBdLCBmdW5jdGlvbigpIHsKKyAgICAidXNlIHN0cmljdCI7Cit9ICk7CmRpZmYg
LS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvc2VyaWFs
aXplLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL3Nlcmlh
bGl6ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43MjZlOGJiNjA4ODRjMmUyODNiMTM3NTgyMzhjOWQxNTcxMmRm
MDYwCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9q
cXVlcnkvc3JjL3NlcmlhbGl6ZS5qcwpAQCAtMCwwICsxLDEzMCBAQAorZGVmaW5lKCBbCisgICAg
Ii4vY29yZSIsCisgICAgIi4vbWFuaXB1bGF0aW9uL3Zhci9yY2hlY2thYmxlVHlwZSIsCisgICAg
Ii4vY29yZS9pbml0IiwKKyAgICAiLi90cmF2ZXJzaW5nIiwgLy8gZmlsdGVyCisgICAgIi4vYXR0
cmlidXRlcy9wcm9wIgorXSwgZnVuY3Rpb24oIGpRdWVyeSwgcmNoZWNrYWJsZVR5cGUgKSB7CisK
KyJ1c2Ugc3RyaWN0IjsKKwordmFyCisgICAgcmJyYWNrZXQgPSAvXFtcXSQvLAorICAgIHJDUkxG
ID0gL1xyP1xuL2csCisgICAgcnN1Ym1pdHRlclR5cGVzID0gL14oPzpzdWJtaXR8YnV0dG9ufGlt
YWdlfHJlc2V0fGZpbGUpJC9pLAorICAgIHJzdWJtaXR0YWJsZSA9IC9eKD86aW5wdXR8c2VsZWN0
fHRleHRhcmVhfGtleWdlbikvaTsKKworZnVuY3Rpb24gYnVpbGRQYXJhbXMoIHByZWZpeCwgb2Jq
LCB0cmFkaXRpb25hbCwgYWRkICkgeworICAgIHZhciBuYW1lOworCisgICAgaWYgKCBqUXVlcnku
aXNBcnJheSggb2JqICkgKSB7CisKKyAgICAgICAgLy8gU2VyaWFsaXplIGFycmF5IGl0ZW0uCisg
ICAgICAgIGpRdWVyeS5lYWNoKCBvYmosIGZ1bmN0aW9uKCBpLCB2ICkgeworICAgICAgICAgICAg
aWYgKCB0cmFkaXRpb25hbCB8fCByYnJhY2tldC50ZXN0KCBwcmVmaXggKSApIHsKKworICAgICAg
ICAgICAgICAgIC8vIFRyZWF0IGVhY2ggYXJyYXkgaXRlbSBhcyBhIHNjYWxhci4KKyAgICAgICAg
ICAgICAgICBhZGQoIHByZWZpeCwgdiApOworCisgICAgICAgICAgICB9IGVsc2UgeworCisgICAg
ICAgICAgICAgICAgLy8gSXRlbSBpcyBub24tc2NhbGFyIChhcnJheSBvciBvYmplY3QpLCBlbmNv
ZGUgaXRzIG51bWVyaWMgaW5kZXguCisgICAgICAgICAgICAgICAgYnVpbGRQYXJhbXMoCisgICAg
ICAgICAgICAgICAgICAgIHByZWZpeCArICJbIiArICggdHlwZW9mIHYgPT09ICJvYmplY3QiICYm
IHYgIT0gbnVsbCA/IGkgOiAiIiApICsgIl0iLAorICAgICAgICAgICAgICAgICAgICB2LAorICAg
ICAgICAgICAgICAgICAgICB0cmFkaXRpb25hbCwKKyAgICAgICAgICAgICAgICAgICAgYWRkCisg
ICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSApOworCisgICAgfSBl
bHNlIGlmICggIXRyYWRpdGlvbmFsICYmIGpRdWVyeS50eXBlKCBvYmogKSA9PT0gIm9iamVjdCIg
KSB7CisKKyAgICAgICAgLy8gU2VyaWFsaXplIG9iamVjdCBpdGVtLgorICAgICAgICBmb3IgKCBu
YW1lIGluIG9iaiApIHsKKyAgICAgICAgICAgIGJ1aWxkUGFyYW1zKCBwcmVmaXggKyAiWyIgKyBu
YW1lICsgIl0iLCBvYmpbIG5hbWUgXSwgdHJhZGl0aW9uYWwsIGFkZCApOworICAgICAgICB9CisK
KyAgICB9IGVsc2UgeworCisgICAgICAgIC8vIFNlcmlhbGl6ZSBzY2FsYXIgaXRlbS4KKyAgICAg
ICAgYWRkKCBwcmVmaXgsIG9iaiApOworICAgIH0KK30KKworLy8gU2VyaWFsaXplIGFuIGFycmF5
IG9mIGZvcm0gZWxlbWVudHMgb3IgYSBzZXQgb2YKKy8vIGtleS92YWx1ZXMgaW50byBhIHF1ZXJ5
IHN0cmluZworalF1ZXJ5LnBhcmFtID0gZnVuY3Rpb24oIGEsIHRyYWRpdGlvbmFsICkgeworICAg
IHZhciBwcmVmaXgsCisgICAgICAgIHMgPSBbXSwKKyAgICAgICAgYWRkID0gZnVuY3Rpb24oIGtl
eSwgdmFsdWVPckZ1bmN0aW9uICkgeworCisgICAgICAgICAgICAvLyBJZiB2YWx1ZSBpcyBhIGZ1
bmN0aW9uLCBpbnZva2UgaXQgYW5kIHVzZSBpdHMgcmV0dXJuIHZhbHVlCisgICAgICAgICAgICB2
YXIgdmFsdWUgPSBqUXVlcnkuaXNGdW5jdGlvbiggdmFsdWVPckZ1bmN0aW9uICkgPworICAgICAg
ICAgICAgICAgIHZhbHVlT3JGdW5jdGlvbigpIDoKKyAgICAgICAgICAgICAgICB2YWx1ZU9yRnVu
Y3Rpb247CisKKyAgICAgICAgICAgIHNbIHMubGVuZ3RoIF0gPSBlbmNvZGVVUklDb21wb25lbnQo
IGtleSApICsgIj0iICsKKyAgICAgICAgICAgICAgICBlbmNvZGVVUklDb21wb25lbnQoIHZhbHVl
ID09IG51bGwgPyAiIiA6IHZhbHVlICk7CisgICAgICAgIH07CisKKyAgICAvLyBJZiBhbiBhcnJh
eSB3YXMgcGFzc2VkIGluLCBhc3N1bWUgdGhhdCBpdCBpcyBhbiBhcnJheSBvZiBmb3JtIGVsZW1l
bnRzLgorICAgIGlmICggalF1ZXJ5LmlzQXJyYXkoIGEgKSB8fCAoIGEuanF1ZXJ5ICYmICFqUXVl
cnkuaXNQbGFpbk9iamVjdCggYSApICkgKSB7CisKKyAgICAgICAgLy8gU2VyaWFsaXplIHRoZSBm
b3JtIGVsZW1lbnRzCisgICAgICAgIGpRdWVyeS5lYWNoKCBhLCBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgIGFkZCggdGhpcy5uYW1lLCB0aGlzLnZhbHVlICk7CisgICAgICAgIH0gKTsKKworICAg
IH0gZWxzZSB7CisKKyAgICAgICAgLy8gSWYgdHJhZGl0aW9uYWwsIGVuY29kZSB0aGUgIm9sZCIg
d2F5ICh0aGUgd2F5IDEuMy4yIG9yIG9sZGVyCisgICAgICAgIC8vIGRpZCBpdCksIG90aGVyd2lz
ZSBlbmNvZGUgcGFyYW1zIHJlY3Vyc2l2ZWx5LgorICAgICAgICBmb3IgKCBwcmVmaXggaW4gYSAp
IHsKKyAgICAgICAgICAgIGJ1aWxkUGFyYW1zKCBwcmVmaXgsIGFbIHByZWZpeCBdLCB0cmFkaXRp
b25hbCwgYWRkICk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBSZXR1cm4gdGhlIHJlc3Vs
dGluZyBzZXJpYWxpemF0aW9uCisgICAgcmV0dXJuIHMuam9pbiggIiYiICk7Cit9OworCitqUXVl
cnkuZm4uZXh0ZW5kKCB7CisgICAgc2VyaWFsaXplOiBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0
dXJuIGpRdWVyeS5wYXJhbSggdGhpcy5zZXJpYWxpemVBcnJheSgpICk7CisgICAgfSwKKyAgICBz
ZXJpYWxpemVBcnJheTogZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiB0aGlzLm1hcCggZnVu
Y3Rpb24oKSB7CisKKyAgICAgICAgICAgIC8vIENhbiBhZGQgcHJvcEhvb2sgZm9yICJlbGVtZW50
cyIgdG8gZmlsdGVyIG9yIGFkZCBmb3JtIGVsZW1lbnRzCisgICAgICAgICAgICB2YXIgZWxlbWVu
dHMgPSBqUXVlcnkucHJvcCggdGhpcywgImVsZW1lbnRzIiApOworICAgICAgICAgICAgcmV0dXJu
IGVsZW1lbnRzID8galF1ZXJ5Lm1ha2VBcnJheSggZWxlbWVudHMgKSA6IHRoaXM7CisgICAgICAg
IH0gKQorICAgICAgICAuZmlsdGVyKCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHZhciB0eXBl
ID0gdGhpcy50eXBlOworCisgICAgICAgICAgICAvLyBVc2UgLmlzKCAiOmRpc2FibGVkIiApIHNv
IHRoYXQgZmllbGRzZXRbZGlzYWJsZWRdIHdvcmtzCisgICAgICAgICAgICByZXR1cm4gdGhpcy5u
YW1lICYmICFqUXVlcnkoIHRoaXMgKS5pcyggIjpkaXNhYmxlZCIgKSAmJgorICAgICAgICAgICAg
ICAgIHJzdWJtaXR0YWJsZS50ZXN0KCB0aGlzLm5vZGVOYW1lICkgJiYgIXJzdWJtaXR0ZXJUeXBl
cy50ZXN0KCB0eXBlICkgJiYKKyAgICAgICAgICAgICAgICAoIHRoaXMuY2hlY2tlZCB8fCAhcmNo
ZWNrYWJsZVR5cGUudGVzdCggdHlwZSApICk7CisgICAgICAgIH0gKQorICAgICAgICAubWFwKCBm
dW5jdGlvbiggaSwgZWxlbSApIHsKKyAgICAgICAgICAgIHZhciB2YWwgPSBqUXVlcnkoIHRoaXMg
KS52YWwoKTsKKworICAgICAgICAgICAgaWYgKCB2YWwgPT0gbnVsbCApIHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCBqUXVl
cnkuaXNBcnJheSggdmFsICkgKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGpRdWVyeS5tYXAo
IHZhbCwgZnVuY3Rpb24oIHZhbCApIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgbmFt
ZTogZWxlbS5uYW1lLCB2YWx1ZTogdmFsLnJlcGxhY2UoIHJDUkxGLCAiXHJcbiIgKSB9OworICAg
ICAgICAgICAgICAgIH0gKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHsg
bmFtZTogZWxlbS5uYW1lLCB2YWx1ZTogdmFsLnJlcGxhY2UoIHJDUkxGLCAiXHJcbiIgKSB9Owor
ICAgICAgICB9ICkuZ2V0KCk7CisgICAgfQorfSApOworCityZXR1cm4galF1ZXJ5OworfSApOwpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL3Ry
YXZlcnNpbmcuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMv
dHJhdmVyc2luZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYTIyNWIwMTgzZjhjNDUzODRlMDhjODFiMzRkNDZi
YWRkNzI4MGUxCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9k
dWxlcy9qcXVlcnkvc3JjL3RyYXZlcnNpbmcuanMKQEAgLTAsMCArMSwxNzggQEAKK2RlZmluZSgg
WworICAgICIuL2NvcmUiLAorICAgICIuL3Zhci9pbmRleE9mIiwKKyAgICAiLi90cmF2ZXJzaW5n
L3Zhci9kaXIiLAorICAgICIuL3RyYXZlcnNpbmcvdmFyL3NpYmxpbmdzIiwKKyAgICAiLi90cmF2
ZXJzaW5nL3Zhci9ybmVlZHNDb250ZXh0IiwKKyAgICAiLi9jb3JlL2luaXQiLAorICAgICIuL3Ry
YXZlcnNpbmcvZmluZEZpbHRlciIsCisgICAgIi4vc2VsZWN0b3IiCitdLCBmdW5jdGlvbiggalF1
ZXJ5LCBpbmRleE9mLCBkaXIsIHNpYmxpbmdzLCBybmVlZHNDb250ZXh0ICkgeworCisidXNlIHN0
cmljdCI7CisKK3ZhciBycGFyZW50c3ByZXYgPSAvXig/OnBhcmVudHN8cHJldig/OlVudGlsfEFs
bCkpLywKKworICAgIC8vIE1ldGhvZHMgZ3VhcmFudGVlZCB0byBwcm9kdWNlIGEgdW5pcXVlIHNl
dCB3aGVuIHN0YXJ0aW5nIGZyb20gYSB1bmlxdWUgc2V0CisgICAgZ3VhcmFudGVlZFVuaXF1ZSA9
IHsKKyAgICAgICAgY2hpbGRyZW46IHRydWUsCisgICAgICAgIGNvbnRlbnRzOiB0cnVlLAorICAg
ICAgICBuZXh0OiB0cnVlLAorICAgICAgICBwcmV2OiB0cnVlCisgICAgfTsKKworalF1ZXJ5LmZu
LmV4dGVuZCggeworICAgIGhhczogZnVuY3Rpb24oIHRhcmdldCApIHsKKyAgICAgICAgdmFyIHRh
cmdldHMgPSBqUXVlcnkoIHRhcmdldCwgdGhpcyApLAorICAgICAgICAgICAgbCA9IHRhcmdldHMu
bGVuZ3RoOworCisgICAgICAgIHJldHVybiB0aGlzLmZpbHRlciggZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICB2YXIgaSA9IDA7CisgICAgICAgICAgICBmb3IgKCA7IGkgPCBsOyBpKysgKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKCBqUXVlcnkuY29udGFpbnMoIHRoaXMsIHRhcmdldHNbIGkgXSAp
ICkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgIH0gKTsKKyAgICB9LAorCisgICAgY2xvc2VzdDogZnVu
Y3Rpb24oIHNlbGVjdG9ycywgY29udGV4dCApIHsKKyAgICAgICAgdmFyIGN1ciwKKyAgICAgICAg
ICAgIGkgPSAwLAorICAgICAgICAgICAgbCA9IHRoaXMubGVuZ3RoLAorICAgICAgICAgICAgbWF0
Y2hlZCA9IFtdLAorICAgICAgICAgICAgdGFyZ2V0cyA9IHR5cGVvZiBzZWxlY3RvcnMgIT09ICJz
dHJpbmciICYmIGpRdWVyeSggc2VsZWN0b3JzICk7CisKKyAgICAgICAgLy8gUG9zaXRpb25hbCBz
ZWxlY3RvcnMgbmV2ZXIgbWF0Y2gsIHNpbmNlIHRoZXJlJ3Mgbm8gX3NlbGVjdGlvbl8gY29udGV4
dAorICAgICAgICBpZiAoICFybmVlZHNDb250ZXh0LnRlc3QoIHNlbGVjdG9ycyApICkgeworICAg
ICAgICAgICAgZm9yICggOyBpIDwgbDsgaSsrICkgeworICAgICAgICAgICAgICAgIGZvciAoIGN1
ciA9IHRoaXNbIGkgXTsgY3VyICYmIGN1ciAhPT0gY29udGV4dDsgY3VyID0gY3VyLnBhcmVudE5v
ZGUgKSB7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gQWx3YXlzIHNraXAgZG9jdW1lbnQgZnJh
Z21lbnRzCisgICAgICAgICAgICAgICAgICAgIGlmICggY3VyLm5vZGVUeXBlIDwgMTEgJiYgKCB0
YXJnZXRzID8KKyAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldHMuaW5kZXgoIGN1ciApID4g
LTEgOgorCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBEb24ndCBwYXNzIG5vbi1lbGVtZW50
cyB0byBTaXp6bGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1ci5ub2RlVHlwZSA9PT0gMSAm
JgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5maW5kLm1hdGNoZXNTZWxlY3Rv
ciggY3VyLCBzZWxlY3RvcnMgKSApICkgeworCisgICAgICAgICAgICAgICAgICAgICAgICBtYXRj
aGVkLnB1c2goIGN1ciApOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKworICAgICAgICByZXR1cm4gdGhpcy5wdXNoU3RhY2soIG1hdGNoZWQubGVuZ3RoID4gMSA/
IGpRdWVyeS51bmlxdWVTb3J0KCBtYXRjaGVkICkgOiBtYXRjaGVkICk7CisgICAgfSwKKworICAg
IC8vIERldGVybWluZSB0aGUgcG9zaXRpb24gb2YgYW4gZWxlbWVudCB3aXRoaW4gdGhlIHNldAor
ICAgIGluZGV4OiBmdW5jdGlvbiggZWxlbSApIHsKKworICAgICAgICAvLyBObyBhcmd1bWVudCwg
cmV0dXJuIGluZGV4IGluIHBhcmVudAorICAgICAgICBpZiAoICFlbGVtICkgeworICAgICAgICAg
ICAgcmV0dXJuICggdGhpc1sgMCBdICYmIHRoaXNbIDAgXS5wYXJlbnROb2RlICkgPyB0aGlzLmZp
cnN0KCkucHJldkFsbCgpLmxlbmd0aCA6IC0xOworICAgICAgICB9CisKKyAgICAgICAgLy8gSW5k
ZXggaW4gc2VsZWN0b3IKKyAgICAgICAgaWYgKCB0eXBlb2YgZWxlbSA9PT0gInN0cmluZyIgKSB7
CisgICAgICAgICAgICByZXR1cm4gaW5kZXhPZi5jYWxsKCBqUXVlcnkoIGVsZW0gKSwgdGhpc1sg
MCBdICk7CisgICAgICAgIH0KKworICAgICAgICAvLyBMb2NhdGUgdGhlIHBvc2l0aW9uIG9mIHRo
ZSBkZXNpcmVkIGVsZW1lbnQKKyAgICAgICAgcmV0dXJuIGluZGV4T2YuY2FsbCggdGhpcywKKwor
ICAgICAgICAgICAgLy8gSWYgaXQgcmVjZWl2ZXMgYSBqUXVlcnkgb2JqZWN0LCB0aGUgZmlyc3Qg
ZWxlbWVudCBpcyB1c2VkCisgICAgICAgICAgICBlbGVtLmpxdWVyeSA/IGVsZW1bIDAgXSA6IGVs
ZW0KKyAgICAgICAgKTsKKyAgICB9LAorCisgICAgYWRkOiBmdW5jdGlvbiggc2VsZWN0b3IsIGNv
bnRleHQgKSB7CisgICAgICAgIHJldHVybiB0aGlzLnB1c2hTdGFjaygKKyAgICAgICAgICAgIGpR
dWVyeS51bmlxdWVTb3J0KAorICAgICAgICAgICAgICAgIGpRdWVyeS5tZXJnZSggdGhpcy5nZXQo
KSwgalF1ZXJ5KCBzZWxlY3RvciwgY29udGV4dCApICkKKyAgICAgICAgICAgICkKKyAgICAgICAg
KTsKKyAgICB9LAorCisgICAgYWRkQmFjazogZnVuY3Rpb24oIHNlbGVjdG9yICkgeworICAgICAg
ICByZXR1cm4gdGhpcy5hZGQoIHNlbGVjdG9yID09IG51bGwgPworICAgICAgICAgICAgdGhpcy5w
cmV2T2JqZWN0IDogdGhpcy5wcmV2T2JqZWN0LmZpbHRlciggc2VsZWN0b3IgKQorICAgICAgICAp
OworICAgIH0KK30gKTsKKworZnVuY3Rpb24gc2libGluZyggY3VyLCBkaXIgKSB7CisgICAgd2hp
bGUgKCAoIGN1ciA9IGN1clsgZGlyIF0gKSAmJiBjdXIubm9kZVR5cGUgIT09IDEgKSB7fQorICAg
IHJldHVybiBjdXI7Cit9CisKK2pRdWVyeS5lYWNoKCB7CisgICAgcGFyZW50OiBmdW5jdGlvbigg
ZWxlbSApIHsKKyAgICAgICAgdmFyIHBhcmVudCA9IGVsZW0ucGFyZW50Tm9kZTsKKyAgICAgICAg
cmV0dXJuIHBhcmVudCAmJiBwYXJlbnQubm9kZVR5cGUgIT09IDExID8gcGFyZW50IDogbnVsbDsK
KyAgICB9LAorICAgIHBhcmVudHM6IGZ1bmN0aW9uKCBlbGVtICkgeworICAgICAgICByZXR1cm4g
ZGlyKCBlbGVtLCAicGFyZW50Tm9kZSIgKTsKKyAgICB9LAorICAgIHBhcmVudHNVbnRpbDogZnVu
Y3Rpb24oIGVsZW0sIGksIHVudGlsICkgeworICAgICAgICByZXR1cm4gZGlyKCBlbGVtLCAicGFy
ZW50Tm9kZSIsIHVudGlsICk7CisgICAgfSwKKyAgICBuZXh0OiBmdW5jdGlvbiggZWxlbSApIHsK
KyAgICAgICAgcmV0dXJuIHNpYmxpbmcoIGVsZW0sICJuZXh0U2libGluZyIgKTsKKyAgICB9LAor
ICAgIHByZXY6IGZ1bmN0aW9uKCBlbGVtICkgeworICAgICAgICByZXR1cm4gc2libGluZyggZWxl
bSwgInByZXZpb3VzU2libGluZyIgKTsKKyAgICB9LAorICAgIG5leHRBbGw6IGZ1bmN0aW9uKCBl
bGVtICkgeworICAgICAgICByZXR1cm4gZGlyKCBlbGVtLCAibmV4dFNpYmxpbmciICk7CisgICAg
fSwKKyAgICBwcmV2QWxsOiBmdW5jdGlvbiggZWxlbSApIHsKKyAgICAgICAgcmV0dXJuIGRpcigg
ZWxlbSwgInByZXZpb3VzU2libGluZyIgKTsKKyAgICB9LAorICAgIG5leHRVbnRpbDogZnVuY3Rp
b24oIGVsZW0sIGksIHVudGlsICkgeworICAgICAgICByZXR1cm4gZGlyKCBlbGVtLCAibmV4dFNp
YmxpbmciLCB1bnRpbCApOworICAgIH0sCisgICAgcHJldlVudGlsOiBmdW5jdGlvbiggZWxlbSwg
aSwgdW50aWwgKSB7CisgICAgICAgIHJldHVybiBkaXIoIGVsZW0sICJwcmV2aW91c1NpYmxpbmci
LCB1bnRpbCApOworICAgIH0sCisgICAgc2libGluZ3M6IGZ1bmN0aW9uKCBlbGVtICkgeworICAg
ICAgICByZXR1cm4gc2libGluZ3MoICggZWxlbS5wYXJlbnROb2RlIHx8IHt9ICkuZmlyc3RDaGls
ZCwgZWxlbSApOworICAgIH0sCisgICAgY2hpbGRyZW46IGZ1bmN0aW9uKCBlbGVtICkgeworICAg
ICAgICByZXR1cm4gc2libGluZ3MoIGVsZW0uZmlyc3RDaGlsZCApOworICAgIH0sCisgICAgY29u
dGVudHM6IGZ1bmN0aW9uKCBlbGVtICkgeworICAgICAgICByZXR1cm4gZWxlbS5jb250ZW50RG9j
dW1lbnQgfHwgalF1ZXJ5Lm1lcmdlKCBbXSwgZWxlbS5jaGlsZE5vZGVzICk7CisgICAgfQorfSwg
ZnVuY3Rpb24oIG5hbWUsIGZuICkgeworICAgIGpRdWVyeS5mblsgbmFtZSBdID0gZnVuY3Rpb24o
IHVudGlsLCBzZWxlY3RvciApIHsKKyAgICAgICAgdmFyIG1hdGNoZWQgPSBqUXVlcnkubWFwKCB0
aGlzLCBmbiwgdW50aWwgKTsKKworICAgICAgICBpZiAoIG5hbWUuc2xpY2UoIC01ICkgIT09ICJV
bnRpbCIgKSB7CisgICAgICAgICAgICBzZWxlY3RvciA9IHVudGlsOworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKCBzZWxlY3RvciAmJiB0eXBlb2Ygc2VsZWN0b3IgPT09ICJzdHJpbmciICkgewor
ICAgICAgICAgICAgbWF0Y2hlZCA9IGpRdWVyeS5maWx0ZXIoIHNlbGVjdG9yLCBtYXRjaGVkICk7
CisgICAgICAgIH0KKworICAgICAgICBpZiAoIHRoaXMubGVuZ3RoID4gMSApIHsKKworICAgICAg
ICAgICAgLy8gUmVtb3ZlIGR1cGxpY2F0ZXMKKyAgICAgICAgICAgIGlmICggIWd1YXJhbnRlZWRV
bmlxdWVbIG5hbWUgXSApIHsKKyAgICAgICAgICAgICAgICBqUXVlcnkudW5pcXVlU29ydCggbWF0
Y2hlZCApOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBSZXZlcnNlIG9yZGVyIGZv
ciBwYXJlbnRzKiBhbmQgcHJldi1kZXJpdmF0aXZlcworICAgICAgICAgICAgaWYgKCBycGFyZW50
c3ByZXYudGVzdCggbmFtZSApICkgeworICAgICAgICAgICAgICAgIG1hdGNoZWQucmV2ZXJzZSgp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHRoaXMucHVzaFN0
YWNrKCBtYXRjaGVkICk7CisgICAgfTsKK30gKTsKKworcmV0dXJuIGpRdWVyeTsKK30gKTsKZGlm
ZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy90cmF2
ZXJzaW5nL2ZpbmRGaWx0ZXIuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2px
dWVyeS9zcmMvdHJhdmVyc2luZy9maW5kRmlsdGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ5NWM4NzVjODk3
MDRhNGE4NTlkNGNjODc5OWVjZDZjMjA0Y2I4NmYKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvdHJhdmVyc2luZy9maW5kRmlsdGVy
LmpzCkBAIC0wLDAgKzEsMTA2IEBACitkZWZpbmUoIFsKKyAgICAiLi4vY29yZSIsCisgICAgIi4u
L3Zhci9pbmRleE9mIiwKKyAgICAiLi92YXIvcm5lZWRzQ29udGV4dCIsCisgICAgIi4uL3NlbGVj
dG9yIgorXSwgZnVuY3Rpb24oIGpRdWVyeSwgaW5kZXhPZiwgcm5lZWRzQ29udGV4dCApIHsKKwor
InVzZSBzdHJpY3QiOworCit2YXIgcmlzU2ltcGxlID0gL14uW146I1xbXC4sXSokLzsKKworLy8g
SW1wbGVtZW50IHRoZSBpZGVudGljYWwgZnVuY3Rpb25hbGl0eSBmb3IgZmlsdGVyIGFuZCBub3QK
K2Z1bmN0aW9uIHdpbm5vdyggZWxlbWVudHMsIHF1YWxpZmllciwgbm90ICkgeworICAgIGlmICgg
alF1ZXJ5LmlzRnVuY3Rpb24oIHF1YWxpZmllciApICkgeworICAgICAgICByZXR1cm4galF1ZXJ5
LmdyZXAoIGVsZW1lbnRzLCBmdW5jdGlvbiggZWxlbSwgaSApIHsKKyAgICAgICAgICAgIHJldHVy
biAhIXF1YWxpZmllci5jYWxsKCBlbGVtLCBpLCBlbGVtICkgIT09IG5vdDsKKyAgICAgICAgfSAp
OworICAgIH0KKworICAgIC8vIFNpbmdsZSBlbGVtZW50CisgICAgaWYgKCBxdWFsaWZpZXIubm9k
ZVR5cGUgKSB7CisgICAgICAgIHJldHVybiBqUXVlcnkuZ3JlcCggZWxlbWVudHMsIGZ1bmN0aW9u
KCBlbGVtICkgeworICAgICAgICAgICAgcmV0dXJuICggZWxlbSA9PT0gcXVhbGlmaWVyICkgIT09
IG5vdDsKKyAgICAgICAgfSApOworICAgIH0KKworICAgIC8vIEFycmF5bGlrZSBvZiBlbGVtZW50
cyAoalF1ZXJ5LCBhcmd1bWVudHMsIEFycmF5KQorICAgIGlmICggdHlwZW9mIHF1YWxpZmllciAh
PT0gInN0cmluZyIgKSB7CisgICAgICAgIHJldHVybiBqUXVlcnkuZ3JlcCggZWxlbWVudHMsIGZ1
bmN0aW9uKCBlbGVtICkgeworICAgICAgICAgICAgcmV0dXJuICggaW5kZXhPZi5jYWxsKCBxdWFs
aWZpZXIsIGVsZW0gKSA+IC0xICkgIT09IG5vdDsKKyAgICAgICAgfSApOworICAgIH0KKworICAg
IC8vIFNpbXBsZSBzZWxlY3RvciB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBkaXJlY3RseSwgcmVtb3Zp
bmcgbm9uLUVsZW1lbnRzCisgICAgaWYgKCByaXNTaW1wbGUudGVzdCggcXVhbGlmaWVyICkgKSB7
CisgICAgICAgIHJldHVybiBqUXVlcnkuZmlsdGVyKCBxdWFsaWZpZXIsIGVsZW1lbnRzLCBub3Qg
KTsKKyAgICB9CisKKyAgICAvLyBDb21wbGV4IHNlbGVjdG9yLCBjb21wYXJlIHRoZSB0d28gc2V0
cywgcmVtb3Zpbmcgbm9uLUVsZW1lbnRzCisgICAgcXVhbGlmaWVyID0galF1ZXJ5LmZpbHRlcigg
cXVhbGlmaWVyLCBlbGVtZW50cyApOworICAgIHJldHVybiBqUXVlcnkuZ3JlcCggZWxlbWVudHMs
IGZ1bmN0aW9uKCBlbGVtICkgeworICAgICAgICByZXR1cm4gKCBpbmRleE9mLmNhbGwoIHF1YWxp
ZmllciwgZWxlbSApID4gLTEgKSAhPT0gbm90ICYmIGVsZW0ubm9kZVR5cGUgPT09IDE7CisgICAg
fSApOworfQorCitqUXVlcnkuZmlsdGVyID0gZnVuY3Rpb24oIGV4cHIsIGVsZW1zLCBub3QgKSB7
CisgICAgdmFyIGVsZW0gPSBlbGVtc1sgMCBdOworCisgICAgaWYgKCBub3QgKSB7CisgICAgICAg
IGV4cHIgPSAiOm5vdCgiICsgZXhwciArICIpIjsKKyAgICB9CisKKyAgICBpZiAoIGVsZW1zLmxl
bmd0aCA9PT0gMSAmJiBlbGVtLm5vZGVUeXBlID09PSAxICkgeworICAgICAgICByZXR1cm4galF1
ZXJ5LmZpbmQubWF0Y2hlc1NlbGVjdG9yKCBlbGVtLCBleHByICkgPyBbIGVsZW0gXSA6IFtdOwor
ICAgIH0KKworICAgIHJldHVybiBqUXVlcnkuZmluZC5tYXRjaGVzKCBleHByLCBqUXVlcnkuZ3Jl
cCggZWxlbXMsIGZ1bmN0aW9uKCBlbGVtICkgeworICAgICAgICByZXR1cm4gZWxlbS5ub2RlVHlw
ZSA9PT0gMTsKKyAgICB9ICkgKTsKK307CisKK2pRdWVyeS5mbi5leHRlbmQoIHsKKyAgICBmaW5k
OiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7CisgICAgICAgIHZhciBpLCByZXQsCisgICAgICAgICAg
ICBsZW4gPSB0aGlzLmxlbmd0aCwKKyAgICAgICAgICAgIHNlbGYgPSB0aGlzOworCisgICAgICAg
IGlmICggdHlwZW9mIHNlbGVjdG9yICE9PSAic3RyaW5nIiApIHsKKyAgICAgICAgICAgIHJldHVy
biB0aGlzLnB1c2hTdGFjayggalF1ZXJ5KCBzZWxlY3RvciApLmZpbHRlciggZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICAgICAgZm9yICggaSA9IDA7IGkgPCBsZW47IGkrKyApIHsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKCBqUXVlcnkuY29udGFpbnMoIHNlbGZbIGkgXSwgdGhpcyApICkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9ICkgKTsKKyAgICAgICAgfQorCisg
ICAgICAgIHJldCA9IHRoaXMucHVzaFN0YWNrKCBbXSApOworCisgICAgICAgIGZvciAoIGkgPSAw
OyBpIDwgbGVuOyBpKysgKSB7CisgICAgICAgICAgICBqUXVlcnkuZmluZCggc2VsZWN0b3IsIHNl
bGZbIGkgXSwgcmV0ICk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbGVuID4gMSA/IGpR
dWVyeS51bmlxdWVTb3J0KCByZXQgKSA6IHJldDsKKyAgICB9LAorICAgIGZpbHRlcjogZnVuY3Rp
b24oIHNlbGVjdG9yICkgeworICAgICAgICByZXR1cm4gdGhpcy5wdXNoU3RhY2soIHdpbm5vdygg
dGhpcywgc2VsZWN0b3IgfHwgW10sIGZhbHNlICkgKTsKKyAgICB9LAorICAgIG5vdDogZnVuY3Rp
b24oIHNlbGVjdG9yICkgeworICAgICAgICByZXR1cm4gdGhpcy5wdXNoU3RhY2soIHdpbm5vdygg
dGhpcywgc2VsZWN0b3IgfHwgW10sIHRydWUgKSApOworICAgIH0sCisgICAgaXM6IGZ1bmN0aW9u
KCBzZWxlY3RvciApIHsKKyAgICAgICAgcmV0dXJuICEhd2lubm93KAorICAgICAgICAgICAgdGhp
cywKKworICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIHBvc2l0aW9uYWwvcmVsYXRpdmUgc2Vs
ZWN0b3IsIGNoZWNrIG1lbWJlcnNoaXAgaW4gdGhlIHJldHVybmVkIHNldAorICAgICAgICAgICAg
Ly8gc28gJCgicDpmaXJzdCIpLmlzKCJwOmxhc3QiKSB3b24ndCByZXR1cm4gdHJ1ZSBmb3IgYSBk
b2Mgd2l0aCB0d28gInAiLgorICAgICAgICAgICAgdHlwZW9mIHNlbGVjdG9yID09PSAic3RyaW5n
IiAmJiBybmVlZHNDb250ZXh0LnRlc3QoIHNlbGVjdG9yICkgPworICAgICAgICAgICAgICAgIGpR
dWVyeSggc2VsZWN0b3IgKSA6CisgICAgICAgICAgICAgICAgc2VsZWN0b3IgfHwgW10sCisgICAg
ICAgICAgICBmYWxzZQorICAgICAgICApLmxlbmd0aDsKKyAgICB9Cit9ICk7CisKK30gKTsKZGlm
ZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy90cmF2
ZXJzaW5nL3Zhci9kaXIuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVy
eS9zcmMvdHJhdmVyc2luZy92YXIvZGlyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNlMDI1MWI5OGRlOTczZmI3
OGQ0NjczNzUwYWVkNzQyNGY3YzI5NTAKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9q
cXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvdHJhdmVyc2luZy92YXIvZGlyLmpzCkBAIC0w
LDAgKzEsMjIgQEAKK2RlZmluZSggWworICAgICIuLi8uLi9jb3JlIgorXSwgZnVuY3Rpb24oIGpR
dWVyeSApIHsKKworInVzZSBzdHJpY3QiOworCityZXR1cm4gZnVuY3Rpb24oIGVsZW0sIGRpciwg
dW50aWwgKSB7CisgICAgdmFyIG1hdGNoZWQgPSBbXSwKKyAgICAgICAgdHJ1bmNhdGUgPSB1bnRp
bCAhPT0gdW5kZWZpbmVkOworCisgICAgd2hpbGUgKCAoIGVsZW0gPSBlbGVtWyBkaXIgXSApICYm
IGVsZW0ubm9kZVR5cGUgIT09IDkgKSB7CisgICAgICAgIGlmICggZWxlbS5ub2RlVHlwZSA9PT0g
MSApIHsKKyAgICAgICAgICAgIGlmICggdHJ1bmNhdGUgJiYgalF1ZXJ5KCBlbGVtICkuaXMoIHVu
dGlsICkgKSB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBtYXRjaGVkLnB1c2goIGVsZW0gKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4g
bWF0Y2hlZDsKK307CisKK30gKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2Rl
X21vZHVsZXMvanF1ZXJ5L3NyYy90cmF2ZXJzaW5nL3Zhci9ybmVlZHNDb250ZXh0LmpzIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL3RyYXZlcnNpbmcvdmFyL3Ju
ZWVkc0NvbnRleHQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2NlNDVjOWE0NmE4YTI0ZmU1OWMzZDI2ZDg4YmU4
M2I1MWQ4YWFkNwotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21v
ZHVsZXMvanF1ZXJ5L3NyYy90cmF2ZXJzaW5nL3Zhci9ybmVlZHNDb250ZXh0LmpzCkBAIC0wLDAg
KzEsOCBAQAorZGVmaW5lKCBbCisgICAgIi4uLy4uL2NvcmUiLAorICAgICIuLi8uLi9zZWxlY3Rv
ciIKK10sIGZ1bmN0aW9uKCBqUXVlcnkgKSB7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgcmV0
dXJuIGpRdWVyeS5leHByLm1hdGNoLm5lZWRzQ29udGV4dDsKK30gKTsKZGlmZiAtLWdpdCBhL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy90cmF2ZXJzaW5nL3Zhci9z
aWJsaW5ncy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy90
cmF2ZXJzaW5nL3Zhci9zaWJsaW5ncy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YzdhNDE0MTVmOTQxMzgyOTY3
NDg4MDE1NmMyZTU4ZDVhNDlkZmY1Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1
ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL3RyYXZlcnNpbmcvdmFyL3NpYmxpbmdzLmpzCkBA
IC0wLDAgKzEsMTcgQEAKK2RlZmluZSggZnVuY3Rpb24oKSB7CisKKyJ1c2Ugc3RyaWN0IjsKKwor
cmV0dXJuIGZ1bmN0aW9uKCBuLCBlbGVtICkgeworICAgIHZhciBtYXRjaGVkID0gW107CisKKyAg
ICBmb3IgKCA7IG47IG4gPSBuLm5leHRTaWJsaW5nICkgeworICAgICAgICBpZiAoIG4ubm9kZVR5
cGUgPT09IDEgJiYgbiAhPT0gZWxlbSApIHsKKyAgICAgICAgICAgIG1hdGNoZWQucHVzaCggbiAp
OworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIG1hdGNoZWQ7Cit9OworCit9ICk7CmRp
ZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvdmFy
L09iamVjdEZ1bmN0aW9uU3RyaW5nLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxl
cy9qcXVlcnkvc3JjL3Zhci9PYmplY3RGdW5jdGlvblN0cmluZy5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NGU1
OTBmYTVhNGIyNGJhMThhODlhNmJiNGVkNWRkNmEwN2FkNjI4Ci0tLSAvZGV2L251bGwKKysrIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL3Zhci9PYmplY3RGdW5j
dGlvblN0cmluZy5qcwpAQCAtMCwwICsxLDcgQEAKK2RlZmluZSggWworICAgICIuL2ZuVG9TdHJp
bmciCitdLCBmdW5jdGlvbiggZm5Ub1N0cmluZyApIHsKKyAgICAidXNlIHN0cmljdCI7CisKKyAg
ICByZXR1cm4gZm5Ub1N0cmluZy5jYWxsKCBPYmplY3QgKTsKK30gKTsKZGlmZiAtLWdpdCBhL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy92YXIvYXJyLmpzIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL3Zhci9hcnIuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMmM5N2E3YmVlMTY2ZDM2ODE5NGMxZDQ1YTZiZjZkNmE3NDdjMWMwZgotLS0gL2Rldi9u
dWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy92YXIv
YXJyLmpzCkBAIC0wLDAgKzEsNSBAQAorZGVmaW5lKCBmdW5jdGlvbigpIHsKKyAgICAidXNlIHN0
cmljdCI7CisKKyAgICByZXR1cm4gW107Cit9ICk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9q
cXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvdmFyL2NsYXNzMnR5cGUuanMgYi9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvdmFyL2NsYXNzMnR5cGUuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNWI0NWM2MDM0MDNmYmQ1OTUyMWE4ZDhiMWU1NGE5MzM5NDk2ZDJhYwotLS0gL2Rl
di9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy92
YXIvY2xhc3MydHlwZS5qcwpAQCAtMCwwICsxLDYgQEAKK2RlZmluZSggZnVuY3Rpb24oKSB7Cisg
ICAgInVzZSBzdHJpY3QiOworCisgICAgLy8gW1tDbGFzc11dIC0+IHR5cGUgcGFpcnMKKyAgICBy
ZXR1cm4ge307Cit9ICk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1
bGVzL2pxdWVyeS9zcmMvdmFyL2NvbmNhdC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21v
ZHVsZXMvanF1ZXJ5L3NyYy92YXIvY29uY2F0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ0ZDZiM2U2NGE1OTk0
NzBhZTQ2YjUxMjBkNWFkOGU1MzExYWU2YTQKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvdmFyL2NvbmNhdC5qcwpAQCAtMCwwICsx
LDcgQEAKK2RlZmluZSggWworICAgICIuL2FyciIKK10sIGZ1bmN0aW9uKCBhcnIgKSB7CisgICAg
InVzZSBzdHJpY3QiOworCisgICAgcmV0dXJuIGFyci5jb25jYXQ7Cit9ICk7CmRpZmYgLS1naXQg
YS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvdmFyL2RvY3VtZW50
LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL3Zhci9kb2N1
bWVudC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zM2VhOTYzYTZhOGEwMmMyZjcwZmUzYmQ4YjNhN2M1MWM0YjY0
YjhjCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9q
cXVlcnkvc3JjL3Zhci9kb2N1bWVudC5qcwpAQCAtMCwwICsxLDUgQEAKK2RlZmluZSggZnVuY3Rp
b24oKSB7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgcmV0dXJuIHdpbmRvdy5kb2N1bWVudDsK
K30gKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5
L3NyYy92YXIvZG9jdW1lbnRFbGVtZW50LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9k
dWxlcy9qcXVlcnkvc3JjL3Zhci9kb2N1bWVudEVsZW1lbnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDdmNzQy
NjUzNWM5YTliODYyZWE0OGYwOTE3YTExZjI4YTNmMWVmYgotLS0gL2Rldi9udWxsCisrKyBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy92YXIvZG9jdW1lbnRFbGVt
ZW50LmpzCkBAIC0wLDAgKzEsNyBAQAorZGVmaW5lKCBbCisgICAgIi4vZG9jdW1lbnQiCitdLCBm
dW5jdGlvbiggZG9jdW1lbnQgKSB7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgcmV0dXJuIGRv
Y3VtZW50LmRvY3VtZW50RWxlbWVudDsKK30gKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2px
dWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy92YXIvZm5Ub1N0cmluZy5qcyBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy92YXIvZm5Ub1N0cmluZy5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wNGM5ODI0Yjg1NzAxYjQ5OWYzYmQxZDkwZTkyYTdkYTAxNjk3YzdkCi0tLSAvZGV2
L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL3Zh
ci9mblRvU3RyaW5nLmpzCkBAIC0wLDAgKzEsNyBAQAorZGVmaW5lKCBbCisgICAgIi4vaGFzT3du
IgorXSwgZnVuY3Rpb24oIGhhc093biApIHsKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICByZXR1
cm4gaGFzT3duLnRvU3RyaW5nOworfSApOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5
L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL3Zhci9nZXRQcm90by5qcyBiL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2px
dWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy92YXIvZ2V0UHJvdG8uanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YzExNzA4NWUzMmVkNWRmODM2MTZlYjgyMjFiYTE3N2EyZTlkMjhlNgotLS0gL2Rldi9udWxsCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy92YXIvZ2V0UHJv
dG8uanMKQEAgLTAsMCArMSw1IEBACitkZWZpbmUoIGZ1bmN0aW9uKCkgeworICAgICJ1c2Ugc3Ry
aWN0IjsKKworICAgIHJldHVybiBPYmplY3QuZ2V0UHJvdG90eXBlT2Y7Cit9ICk7CmRpZmYgLS1n
aXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvdmFyL2hhc093
bi5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy92YXIvaGFz
T3duLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjg2YjBkYzMyNWEyNzEwYjgxOTA2ODQ3MjYzZTc4ZTVhYWNmMWVi
MTcKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2px
dWVyeS9zcmMvdmFyL2hhc093bi5qcwpAQCAtMCwwICsxLDcgQEAKK2RlZmluZSggWworICAgICIu
L2NsYXNzMnR5cGUiCitdLCBmdW5jdGlvbiggY2xhc3MydHlwZSApIHsKKyAgICAidXNlIHN0cmlj
dCI7CisKKyAgICByZXR1cm4gY2xhc3MydHlwZS5oYXNPd25Qcm9wZXJ0eTsKK30gKTsKZGlmZiAt
LWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy92YXIvaW5k
ZXhPZi5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy92YXIv
aW5kZXhPZi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYTBiNzMyYmRjMGEyOWMyNmZmNzJkMjdmZGQ1ZWJmMjBi
NjE4N2IyCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxl
cy9qcXVlcnkvc3JjL3Zhci9pbmRleE9mLmpzCkBAIC0wLDAgKzEsNyBAQAorZGVmaW5lKCBbCisg
ICAgIi4vYXJyIgorXSwgZnVuY3Rpb24oIGFyciApIHsKKyAgICAidXNlIHN0cmljdCI7CisKKyAg
ICByZXR1cm4gYXJyLmluZGV4T2Y7Cit9ICk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVl
cnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvdmFyL3BudW0uanMgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVl
cnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvdmFyL3BudW0uanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTRjYzQ5
OGNkZDVkYzMyN2QzYTE4YTU0ZWE4MWQyMGEwMzkyNWYzYQotLS0gL2Rldi9udWxsCisrKyBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy92YXIvcG51bS5qcwpAQCAt
MCwwICsxLDUgQEAKK2RlZmluZSggZnVuY3Rpb24oKSB7CisgICAgInVzZSBzdHJpY3QiOworCisg
ICAgcmV0dXJuICggL1srLV0/KD86XGQqXC58KVxkKyg/OltlRV1bKy1dP1xkK3wpLyApLnNvdXJj
ZTsKK30gKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1
ZXJ5L3NyYy92YXIvcHVzaC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1
ZXJ5L3NyYy92YXIvcHVzaC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NmYyOWQxNzNmYTU4OTlhMDRiZTI3MjFh
ZTk2MjA4Y2EzM2MwNThmCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25v
ZGVfbW9kdWxlcy9qcXVlcnkvc3JjL3Zhci9wdXNoLmpzCkBAIC0wLDAgKzEsNyBAQAorZGVmaW5l
KCBbCisgICAgIi4vYXJyIgorXSwgZnVuY3Rpb24oIGFyciApIHsKKyAgICAidXNlIHN0cmljdCI7
CisKKyAgICByZXR1cm4gYXJyLnB1c2g7Cit9ICk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9q
cXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvdmFyL3Jjc3NOdW0uanMgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvdmFyL3Jjc3NOdW0uanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGMwNDU4NDVlMzg2YzdiNTA1OGE2NTZhZmVkNmEzYmUyNDZkMjNjYQotLS0gL2Rldi9udWxs
CisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy92YXIvcmNz
c051bS5qcwpAQCAtMCwwICsxLDkgQEAKK2RlZmluZSggWworICAgICIuLi92YXIvcG51bSIKK10s
IGZ1bmN0aW9uKCBwbnVtICkgeworCisidXNlIHN0cmljdCI7CisKK3JldHVybiBuZXcgUmVnRXhw
KCAiXig/OihbKy1dKT18KSgiICsgcG51bSArICIpKFthLXolXSopJCIsICJpIiApOworCit9ICk7
CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMv
dmFyL3Jub3RodG1sd2hpdGUuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2px
dWVyeS9zcmMvdmFyL3Jub3RodG1sd2hpdGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzJlNjY5ZjIxNTZlNDdm
MWM1YTAzNDVmOTVhNzgzMDU1MGI2NTIyMgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy92YXIvcm5vdGh0bWx3aGl0ZS5qcwpAQCAt
MCwwICsxLDggQEAKK2RlZmluZSggZnVuY3Rpb24oKSB7CisgICAgInVzZSBzdHJpY3QiOworCisg
ICAgLy8gT25seSBjb3VudCBIVE1MIHdoaXRlc3BhY2UKKyAgICAvLyBPdGhlciB3aGl0ZXNwYWNl
IHNob3VsZCBjb3VudCBpbiB2YWx1ZXMKKyAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cu
b3JnL211bHRpcGFnZS9pbmZyYXN0cnVjdHVyZS5odG1sI3NwYWNlLWNoYXJhY3RlcgorICAgIHJl
dHVybiAoIC9bXlx4MjBcdFxyXG5cZl0rL2cgKTsKK30gKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvanF1ZXJ5L3NyYy92YXIvc2xpY2UuanMgYi9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvdmFyL3NsaWNlLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjMyNDk4NGM1NTc0NDE5MTE4MWExMzY3NDQ0OGU5OTQ3YTE2ZTUxNWMKLS0tIC9kZXYvbnVs
bAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvdmFyL3Ns
aWNlLmpzCkBAIC0wLDAgKzEsNyBAQAorZGVmaW5lKCBbCisgICAgIi4vYXJyIgorXSwgZnVuY3Rp
b24oIGFyciApIHsKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICByZXR1cm4gYXJyLnNsaWNlOwor
fSApOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkv
c3JjL3Zhci9zdXBwb3J0LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVl
cnkvc3JjL3Zhci9zdXBwb3J0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRlNWE0NzdmZWM1NTNkY2E2NDQ0Nzdm
MTc3MTZmNzkxYmQwZGY1ZmIKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkv
bm9kZV9tb2R1bGVzL2pxdWVyeS9zcmMvdmFyL3N1cHBvcnQuanMKQEAgLTAsMCArMSw2IEBACitk
ZWZpbmUoIGZ1bmN0aW9uKCkgeworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIC8vIEFsbCBzdXBw
b3J0IHRlc3RzIGFyZSBkZWZpbmVkIGluIHRoZWlyIHJlc3BlY3RpdmUgbW9kdWxlcy4KKyAgICBy
ZXR1cm4ge307Cit9ICk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1
bGVzL2pxdWVyeS9zcmMvdmFyL3RvU3RyaW5nLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVf
bW9kdWxlcy9qcXVlcnkvc3JjL3Zhci90b1N0cmluZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNWY5ZWI3MjE2
NGM1M2VmZTg2ZTQ1NTUxMjBkMDgzNGE1NTc0MzliCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9qcXVlcnkvc3JjL3Zhci90b1N0cmluZy5qcwpAQCAt
MCwwICsxLDcgQEAKK2RlZmluZSggWworICAgICIuL2NsYXNzMnR5cGUiCitdLCBmdW5jdGlvbigg
Y2xhc3MydHlwZSApIHsKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICByZXR1cm4gY2xhc3MydHlw
ZS50b1N0cmluZzsKK30gKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21v
ZHVsZXMvanF1ZXJ5L3NyYy93cmFwLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxl
cy9qcXVlcnkvc3JjL3dyYXAuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWVjMTEyMWQ2YTg3ZDY1ZjNjMmY3MjBm
NWU2MGQ1YzYxY2U0ZjUzMAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9u
b2RlX21vZHVsZXMvanF1ZXJ5L3NyYy93cmFwLmpzCkBAIC0wLDAgKzEsNzcgQEAKK2RlZmluZSgg
WworICAgICIuL2NvcmUiLAorICAgICIuL2NvcmUvaW5pdCIsCisgICAgIi4vbWFuaXB1bGF0aW9u
IiwgLy8gY2xvbmUKKyAgICAiLi90cmF2ZXJzaW5nIiAvLyBwYXJlbnQsIGNvbnRlbnRzCitdLCBm
dW5jdGlvbiggalF1ZXJ5ICkgeworCisidXNlIHN0cmljdCI7CisKK2pRdWVyeS5mbi5leHRlbmQo
IHsKKyAgICB3cmFwQWxsOiBmdW5jdGlvbiggaHRtbCApIHsKKyAgICAgICAgdmFyIHdyYXA7CisK
KyAgICAgICAgaWYgKCB0aGlzWyAwIF0gKSB7CisgICAgICAgICAgICBpZiAoIGpRdWVyeS5pc0Z1
bmN0aW9uKCBodG1sICkgKSB7CisgICAgICAgICAgICAgICAgaHRtbCA9IGh0bWwuY2FsbCggdGhp
c1sgMCBdICk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBlbGVtZW50cyB0
byB3cmFwIHRoZSB0YXJnZXQgYXJvdW5kCisgICAgICAgICAgICB3cmFwID0galF1ZXJ5KCBodG1s
LCB0aGlzWyAwIF0ub3duZXJEb2N1bWVudCApLmVxKCAwICkuY2xvbmUoIHRydWUgKTsKKworICAg
ICAgICAgICAgaWYgKCB0aGlzWyAwIF0ucGFyZW50Tm9kZSApIHsKKyAgICAgICAgICAgICAgICB3
cmFwLmluc2VydEJlZm9yZSggdGhpc1sgMCBdICk7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHdyYXAubWFwKCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICB2YXIgZWxlbSA9IHRo
aXM7CisKKyAgICAgICAgICAgICAgICB3aGlsZSAoIGVsZW0uZmlyc3RFbGVtZW50Q2hpbGQgKSB7
CisgICAgICAgICAgICAgICAgICAgIGVsZW0gPSBlbGVtLmZpcnN0RWxlbWVudENoaWxkOworICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHJldHVybiBlbGVtOworICAgICAgICAg
ICAgfSApLmFwcGVuZCggdGhpcyApOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHRoaXM7
CisgICAgfSwKKworICAgIHdyYXBJbm5lcjogZnVuY3Rpb24oIGh0bWwgKSB7CisgICAgICAgIGlm
ICggalF1ZXJ5LmlzRnVuY3Rpb24oIGh0bWwgKSApIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlz
LmVhY2goIGZ1bmN0aW9uKCBpICkgeworICAgICAgICAgICAgICAgIGpRdWVyeSggdGhpcyApLndy
YXBJbm5lciggaHRtbC5jYWxsKCB0aGlzLCBpICkgKTsKKyAgICAgICAgICAgIH0gKTsKKyAgICAg
ICAgfQorCisgICAgICAgIHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgdmFyIHNlbGYgPSBqUXVlcnkoIHRoaXMgKSwKKyAgICAgICAgICAgICAgICBjb250ZW50cyA9
IHNlbGYuY29udGVudHMoKTsKKworICAgICAgICAgICAgaWYgKCBjb250ZW50cy5sZW5ndGggKSB7
CisgICAgICAgICAgICAgICAgY29udGVudHMud3JhcEFsbCggaHRtbCApOworCisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHNlbGYuYXBwZW5kKCBodG1sICk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0gKTsKKyAgICB9LAorCisgICAgd3JhcDogZnVuY3Rpb24oIGh0bWwg
KSB7CisgICAgICAgIHZhciBpc0Z1bmN0aW9uID0galF1ZXJ5LmlzRnVuY3Rpb24oIGh0bWwgKTsK
KworICAgICAgICByZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbiggaSApIHsKKyAgICAgICAgICAg
IGpRdWVyeSggdGhpcyApLndyYXBBbGwoIGlzRnVuY3Rpb24gPyBodG1sLmNhbGwoIHRoaXMsIGkg
KSA6IGh0bWwgKTsKKyAgICAgICAgfSApOworICAgIH0sCisKKyAgICB1bndyYXA6IGZ1bmN0aW9u
KCBzZWxlY3RvciApIHsKKyAgICAgICAgdGhpcy5wYXJlbnQoIHNlbGVjdG9yICkubm90KCAiYm9k
eSIgKS5lYWNoKCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGpRdWVyeSggdGhpcyApLnJlcGxh
Y2VXaXRoKCB0aGlzLmNoaWxkTm9kZXMgKTsKKyAgICAgICAgfSApOworICAgICAgICByZXR1cm4g
dGhpczsKKyAgICB9Cit9ICk7CisKK3JldHVybiBqUXVlcnk7Cit9ICk7CmRpZmYgLS1naXQgYS9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL3RvZG9tdmMtYXBwLWNzcy9pbmRleC5jc3Mg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL3RvZG9tdmMtYXBwLWNzcy9pbmRleC5j
c3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTdlYTE4MDE2MTIxMjZmMWRiNjVjZTA1NjhmMmEwMjM3M2I5M2I1NQot
LS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvdG9kb212
Yy1hcHAtY3NzL2luZGV4LmNzcwpAQCAtMCwwICsxLDM3OCBAQAoraHRtbCwKK2JvZHkgeworICAg
IG1hcmdpbjogMDsKKyAgICBwYWRkaW5nOiAwOworfQorCitidXR0b24geworICAgIG1hcmdpbjog
MDsKKyAgICBwYWRkaW5nOiAwOworICAgIGJvcmRlcjogMDsKKyAgICBiYWNrZ3JvdW5kOiBub25l
OworICAgIGZvbnQtc2l6ZTogMTAwJTsKKyAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7Cisg
ICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7CisgICAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7CisgICAg
Y29sb3I6IGluaGVyaXQ7CisgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOworICAgIGFwcGVh
cmFuY2U6IG5vbmU7CisgICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7Cisg
ICAgLW1vei1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CisgICAgZm9udC1zbW9vdGhpbmc6
IGFudGlhbGlhc2VkOworfQorCitib2R5IHsKKyAgICBmb250OiAxNHB4ICdIZWx2ZXRpY2EgTmV1
ZScsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7CisgICAgbGluZS1oZWlnaHQ6IDEuNGVt
OworICAgIGJhY2tncm91bmQ6ICNmNWY1ZjU7CisgICAgY29sb3I6ICM0ZDRkNGQ7CisgICAgbWlu
LXdpZHRoOiAyMzBweDsKKyAgICBtYXgtd2lkdGg6IDU1MHB4OworICAgIG1hcmdpbjogMCBhdXRv
OworICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOworICAgIC1tb3otZm9u
dC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOworICAgIGZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNl
ZDsKKyAgICBmb250LXdlaWdodDogMzAwOworfQorCitidXR0b24sCitpbnB1dFt0eXBlPSJjaGVj
a2JveCJdIHsKKyAgICBvdXRsaW5lOiBub25lOworfQorCisuaGlkZGVuIHsKKyAgICBkaXNwbGF5
OiBub25lOworfQorCisjdG9kb2FwcCB7CisgICAgYmFja2dyb3VuZDogI2ZmZjsKKyAgICBtYXJn
aW46IDEzMHB4IDAgNDBweCAwOworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICBib3gtc2hh
ZG93OiAwIDJweCA0cHggMCByZ2JhKDAsIDAsIDAsIDAuMiksCisgICAgICAgICAgICAgICAgMCAy
NXB4IDUwcHggMCByZ2JhKDAsIDAsIDAsIDAuMSk7Cit9CisKKyN0b2RvYXBwIGlucHV0Ojotd2Vi
a2l0LWlucHV0LXBsYWNlaG9sZGVyIHsKKyAgICBmb250LXN0eWxlOiBpdGFsaWM7CisgICAgZm9u
dC13ZWlnaHQ6IDMwMDsKKyAgICBjb2xvcjogI2U2ZTZlNjsKK30KKworI3RvZG9hcHAgaW5wdXQ6
Oi1tb3otcGxhY2Vob2xkZXIgeworICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKKyAgICBmb250LXdl
aWdodDogMzAwOworICAgIGNvbG9yOiAjZTZlNmU2OworfQorCisjdG9kb2FwcCBpbnB1dDo6aW5w
dXQtcGxhY2Vob2xkZXIgeworICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKKyAgICBmb250LXdlaWdo
dDogMzAwOworICAgIGNvbG9yOiAjZTZlNmU2OworfQorCisjdG9kb2FwcCBoMSB7CisgICAgcG9z
aXRpb246IGFic29sdXRlOworICAgIHRvcDogLTE1NXB4OworICAgIHdpZHRoOiAxMDAlOworICAg
IGZvbnQtc2l6ZTogMTAwcHg7CisgICAgZm9udC13ZWlnaHQ6IDEwMDsKKyAgICB0ZXh0LWFsaWdu
OiBjZW50ZXI7CisgICAgY29sb3I6IHJnYmEoMTc1LCA0NywgNDcsIDAuMTUpOworICAgIC13ZWJr
aXQtdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTsKKyAgICAtbW96LXRleHQtcmVu
ZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7CisgICAgdGV4dC1yZW5kZXJpbmc6IG9wdGltaXpl
TGVnaWJpbGl0eTsKK30KKworI25ldy10b2RvLAorLmVkaXQgeworICAgIHBvc2l0aW9uOiByZWxh
dGl2ZTsKKyAgICBtYXJnaW46IDA7CisgICAgd2lkdGg6IDEwMCU7CisgICAgZm9udC1zaXplOiAy
NHB4OworICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0OworICAgIGZvbnQtd2VpZ2h0OiBpbmhlcml0
OworICAgIGxpbmUtaGVpZ2h0OiAxLjRlbTsKKyAgICBib3JkZXI6IDA7CisgICAgb3V0bGluZTog
bm9uZTsKKyAgICBjb2xvcjogaW5oZXJpdDsKKyAgICBwYWRkaW5nOiA2cHg7CisgICAgYm9yZGVy
OiAxcHggc29saWQgIzk5OTsKKyAgICBib3gtc2hhZG93OiBpbnNldCAwIC0xcHggNXB4IDAgcmdi
YSgwLCAwLCAwLCAwLjIpOworICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CisgICAgLXdlYmtp
dC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CisgICAgLW1vei1mb250LXNtb290aGluZzog
YW50aWFsaWFzZWQ7CisgICAgZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOworfQorCisjbmV3
LXRvZG8geworICAgIHBhZGRpbmc6IDE2cHggMTZweCAxNnB4IDYwcHg7CisgICAgYm9yZGVyOiBu
b25lOworICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4wMDMpOworICAgIGJveC1zaGFk
b3c6IGluc2V0IDAgLTJweCAxcHggcmdiYSgwLDAsMCwwLjAzKTsKK30KKworI21haW4geworICAg
IHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICB6LWluZGV4OiAyOworICAgIGJvcmRlci10b3A6IDFw
eCBzb2xpZCAjZTZlNmU2OworfQorCitsYWJlbFtmb3I9J3RvZ2dsZS1hbGwnXSB7CisgICAgZGlz
cGxheTogbm9uZTsKK30KKworI3RvZ2dsZS1hbGwgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsK
KyAgICB0b3A6IC01NXB4OworICAgIGxlZnQ6IC0xMnB4OworICAgIHdpZHRoOiA2MHB4OworICAg
IGhlaWdodDogMzRweDsKKyAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CisgICAgYm9yZGVyOiBub25l
OyAvKiBNb2JpbGUgU2FmYXJpICovCit9CisKKyN0b2dnbGUtYWxsOmJlZm9yZSB7CisgICAgY29u
dGVudDogJ+Kdryc7CisgICAgZm9udC1zaXplOiAyMnB4OworICAgIGNvbG9yOiAjZTZlNmU2Owor
ICAgIHBhZGRpbmc6IDEwcHggMjdweCAxMHB4IDI3cHg7Cit9CisKKyN0b2dnbGUtYWxsOmNoZWNr
ZWQ6YmVmb3JlIHsKKyAgICBjb2xvcjogIzczNzM3MzsKK30KKworI3RvZG8tbGlzdCB7CisgICAg
bWFyZ2luOiAwOworICAgIHBhZGRpbmc6IDA7CisgICAgbGlzdC1zdHlsZTogbm9uZTsKK30KKwor
I3RvZG8tbGlzdCBsaSB7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgIGZvbnQtc2l6ZTog
MjRweDsKKyAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2VkZWRlZDsKK30KKworI3RvZG8t
bGlzdCBsaTpsYXN0LWNoaWxkIHsKKyAgICBib3JkZXItYm90dG9tOiBub25lOworfQorCisjdG9k
by1saXN0IGxpLmVkaXRpbmcgeworICAgIGJvcmRlci1ib3R0b206IG5vbmU7CisgICAgcGFkZGlu
ZzogMDsKK30KKworI3RvZG8tbGlzdCBsaS5lZGl0aW5nIC5lZGl0IHsKKyAgICBkaXNwbGF5OiBi
bG9jazsKKyAgICB3aWR0aDogNTA2cHg7CisgICAgcGFkZGluZzogMTNweCAxN3B4IDEycHggMTdw
eDsKKyAgICBtYXJnaW46IDAgMCAwIDQzcHg7Cit9CisKKyN0b2RvLWxpc3QgbGkuZWRpdGluZyAu
dmlldyB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKworI3RvZG8tbGlzdCBsaSAudG9nZ2xlIHsK
KyAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CisgICAgd2lkdGg6IDQwcHg7CisgICAgLyogYXV0bywg
c2luY2Ugbm9uLVdlYktpdCBicm93c2VycyBkb2Vzbid0IHN1cHBvcnQgaW5wdXQgc3R5bGluZyAq
LworICAgIGhlaWdodDogYXV0bzsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiAw
OworICAgIGJvdHRvbTogMDsKKyAgICBtYXJnaW46IGF1dG8gMDsKKyAgICBib3JkZXI6IG5vbmU7
IC8qIE1vYmlsZSBTYWZhcmkgKi8KKyAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CisgICAg
YXBwZWFyYW5jZTogbm9uZTsKK30KKworI3RvZG8tbGlzdCBsaSAudG9nZ2xlOmFmdGVyIHsKKyAg
ICBjb250ZW50OiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9Ii0x
MCAtMTggMTAwIDEzNSI+PGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgcj0iNTAiIGZpbGw9Im5vbmUi
IHN0cm9rZT0iI2VkZWRlZCIgc3Ryb2tlLXdpZHRoPSIzIi8+PC9zdmc+Jyk7Cit9CisKKyN0b2Rv
LWxpc3QgbGkgLnRvZ2dsZTpjaGVja2VkOmFmdGVyIHsKKyAgICBjb250ZW50OiB1cmwoJ2RhdGE6
aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9Ii0xMCAtMTggMTAwIDEzNSI+PGNpcmNs
ZSBjeD0iNTAiIGN5PSI1MCIgcj0iNTAiIGZpbGw9Im5vbmUiIHN0cm9rZT0iI2JkZGFkNSIgc3Ry
b2tlLXdpZHRoPSIzIi8+PHBhdGggZmlsbD0iIzVkYzJhZiIgZD0iTTcyIDI1TDQyIDcxIDI3IDU2
bC00IDQgMjAgMjAgMzQtNTJ6Ii8+PC9zdmc+Jyk7Cit9CisKKyN0b2RvLWxpc3QgbGkgbGFiZWwg
eworICAgIHdoaXRlLXNwYWNlOiBwcmU7CisgICAgd29yZC1icmVhazogYnJlYWstd29yZDsKKyAg
ICBwYWRkaW5nOiAxNXB4IDYwcHggMTVweCAxNXB4OworICAgIG1hcmdpbi1sZWZ0OiA0NXB4Owor
ICAgIGRpc3BsYXk6IGJsb2NrOworICAgIGxpbmUtaGVpZ2h0OiAxLjI7CisgICAgdHJhbnNpdGlv
bjogY29sb3IgMC40czsKK30KKworI3RvZG8tbGlzdCBsaS5jb21wbGV0ZWQgbGFiZWwgeworICAg
IGNvbG9yOiAjZDlkOWQ5OworICAgIHRleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdoOworfQor
CisjdG9kby1saXN0IGxpIC5kZXN0cm95IHsKKyAgICBkaXNwbGF5OiBub25lOworICAgIHBvc2l0
aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IDA7CisgICAgcmlnaHQ6IDEwcHg7CisgICAgYm90dG9t
OiAwOworICAgIHdpZHRoOiA0MHB4OworICAgIGhlaWdodDogNDBweDsKKyAgICBtYXJnaW46IGF1
dG8gMDsKKyAgICBmb250LXNpemU6IDMwcHg7CisgICAgY29sb3I6ICNjYzlhOWE7CisgICAgbWFy
Z2luLWJvdHRvbTogMTFweDsKKyAgICB0cmFuc2l0aW9uOiBjb2xvciAwLjJzIGVhc2Utb3V0Owor
fQorCisjdG9kby1saXN0IGxpIC5kZXN0cm95OmhvdmVyIHsKKyAgICBjb2xvcjogI2FmNWI1ZTsK
K30KKworI3RvZG8tbGlzdCBsaSAuZGVzdHJveTphZnRlciB7CisgICAgY29udGVudDogJ8OXJzsK
K30KKworI3RvZG8tbGlzdCBsaTpob3ZlciAuZGVzdHJveSB7CisgICAgZGlzcGxheTogYmxvY2s7
Cit9CisKKyN0b2RvLWxpc3QgbGkgLmVkaXQgeworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKKyN0
b2RvLWxpc3QgbGkuZWRpdGluZzpsYXN0LWNoaWxkIHsKKyAgICBtYXJnaW4tYm90dG9tOiAtMXB4
OworfQorCisjZm9vdGVyIHsKKyAgICBjb2xvcjogIzc3NzsKKyAgICBwYWRkaW5nOiAxMHB4IDE1
cHg7CisgICAgaGVpZ2h0OiAyMHB4OworICAgIHRleHQtYWxpZ246IGNlbnRlcjsKKyAgICBib3Jk
ZXItdG9wOiAxcHggc29saWQgI2U2ZTZlNjsKK30KKworI2Zvb3RlcjpiZWZvcmUgeworICAgIGNv
bnRlbnQ6ICcnOworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICByaWdodDogMDsKKyAgICBi
b3R0b206IDA7CisgICAgbGVmdDogMDsKKyAgICBoZWlnaHQ6IDUwcHg7CisgICAgb3ZlcmZsb3c6
IGhpZGRlbjsKKyAgICBib3gtc2hhZG93OiAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjIpLAor
ICAgICAgICAgICAgICAgIDAgOHB4IDAgLTNweCAjZjZmNmY2LAorICAgICAgICAgICAgICAgIDAg
OXB4IDFweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwKKyAgICAgICAgICAgICAgICAwIDE2cHgg
MCAtNnB4ICNmNmY2ZjYsCisgICAgICAgICAgICAgICAgMCAxN3B4IDJweCAtNnB4IHJnYmEoMCwg
MCwgMCwgMC4yKTsKK30KKworI3RvZG8tY291bnQgeworICAgIGZsb2F0OiBsZWZ0OworICAgIHRl
eHQtYWxpZ246IGxlZnQ7Cit9CisKKyN0b2RvLWNvdW50IHN0cm9uZyB7CisgICAgZm9udC13ZWln
aHQ6IDMwMDsKK30KKworI2ZpbHRlcnMgeworICAgIG1hcmdpbjogMDsKKyAgICBwYWRkaW5nOiAw
OworICAgIGxpc3Qtc3R5bGU6IG5vbmU7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHJp
Z2h0OiAwOworICAgIGxlZnQ6IDA7Cit9CisKKyNmaWx0ZXJzIGxpIHsKKyAgICBkaXNwbGF5OiBp
bmxpbmU7Cit9CisKKyNmaWx0ZXJzIGxpIGEgeworICAgIGNvbG9yOiBpbmhlcml0OworICAgIG1h
cmdpbjogM3B4OworICAgIHBhZGRpbmc6IDNweCA3cHg7CisgICAgdGV4dC1kZWNvcmF0aW9uOiBu
b25lOworICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50OworICAgIGJvcmRlci1yYWRp
dXM6IDNweDsKK30KKworI2ZpbHRlcnMgbGkgYS5zZWxlY3RlZCwKKyNmaWx0ZXJzIGxpIGE6aG92
ZXIgeworICAgIGJvcmRlci1jb2xvcjogcmdiYSgxNzUsIDQ3LCA0NywgMC4xKTsKK30KKworI2Zp
bHRlcnMgbGkgYS5zZWxlY3RlZCB7CisgICAgYm9yZGVyLWNvbG9yOiByZ2JhKDE3NSwgNDcsIDQ3
LCAwLjIpOworfQorCisjY2xlYXItY29tcGxldGVkLAoraHRtbCAjY2xlYXItY29tcGxldGVkOmFj
dGl2ZSB7CisgICAgZmxvYXQ6IHJpZ2h0OworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICBs
aW5lLWhlaWdodDogMjBweDsKKyAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CisgICAgY3Vyc29y
OiBwb2ludGVyOworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKK30KKworI2NsZWFyLWNvbXBsZXRl
ZDpob3ZlciB7CisgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Cit9CisKKyNpbmZvIHsK
KyAgICBtYXJnaW46IDY1cHggYXV0byAwOworICAgIGNvbG9yOiAjYmZiZmJmOworICAgIGZvbnQt
c2l6ZTogMTBweDsKKyAgICB0ZXh0LXNoYWRvdzogMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUs
IDAuNSk7CisgICAgdGV4dC1hbGlnbjogY2VudGVyOworfQorCisjaW5mbyBwIHsKKyAgICBsaW5l
LWhlaWdodDogMTsKK30KKworI2luZm8gYSB7CisgICAgY29sb3I6IGluaGVyaXQ7CisgICAgdGV4
dC1kZWNvcmF0aW9uOiBub25lOworICAgIGZvbnQtd2VpZ2h0OiA0MDA7Cit9CisKKyNpbmZvIGE6
aG92ZXIgeworICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOworfQorCisvKgorICAgIEhh
Y2sgdG8gcmVtb3ZlIGJhY2tncm91bmQgZnJvbSBNb2JpbGUgU2FmYXJpLgorICAgIENhbid0IHVz
ZSBpdCBnbG9iYWxseSBzaW5jZSBpdCBkZXN0cm95cyBjaGVja2JveGVzIGluIEZpcmVmb3gKKyov
CitAbWVkaWEgc2NyZWVuIGFuZCAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOjApIHsK
KyAgICAjdG9nZ2xlLWFsbCwKKyAgICAjdG9kby1saXN0IGxpIC50b2dnbGUgeworICAgICAgICBi
YWNrZ3JvdW5kOiBub25lOworICAgIH0KKworICAgICN0b2RvLWxpc3QgbGkgLnRvZ2dsZSB7Cisg
ICAgICAgIGhlaWdodDogNDBweDsKKyAgICB9CisKKyAgICAjdG9nZ2xlLWFsbCB7CisgICAgICAg
IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpOworICAgICAgICB0cmFuc2Zvcm06IHJv
dGF0ZSg5MGRlZyk7CisgICAgICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKKyAgICAgICAg
YXBwZWFyYW5jZTogbm9uZTsKKyAgICB9Cit9CisKK0BtZWRpYSAobWF4LXdpZHRoOiA0MzBweCkg
eworICAgICNmb290ZXIgeworICAgICAgICBoZWlnaHQ6IDUwcHg7CisgICAgfQorCisgICAgI2Zp
bHRlcnMgeworICAgICAgICBib3R0b206IDEwcHg7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy90b2RvbXZjLWFwcC1jc3MvcGFja2FnZS5qc29u
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy90b2RvbXZjLWFwcC1jc3MvcGFja2Fn
ZS5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjU1MGVmYTYzZjhmMTk0OGU0NGI4YjVmOGIwN2Y3MTUyMzY3Njc4
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL3Rv
ZG9tdmMtYXBwLWNzcy9wYWNrYWdlLmpzb24KQEAgLTAsMCArMSwxMDMgQEAKK3sKKyAgIl9hcmdz
IjogWworICAgIFsKKyAgICAgIHsKKyAgICAgICAgInJhdyI6ICJ0b2RvbXZjLWFwcC1jc3NAfjEu
MC4xIiwKKyAgICAgICAgInNjb3BlIjogbnVsbCwKKyAgICAgICAgImVzY2FwZWROYW1lIjogInRv
ZG9tdmMtYXBwLWNzcyIsCisgICAgICAgICJuYW1lIjogInRvZG9tdmMtYXBwLWNzcyIsCisgICAg
ICAgICJyYXdTcGVjIjogIn4xLjAuMSIsCisgICAgICAgICJzcGVjIjogIj49MS4wLjEgPDEuMS4w
IiwKKyAgICAgICAgInR5cGUiOiAicmFuZ2UiCisgICAgICB9LAorICAgICAgIi9Vc2Vycy9hZGR5
by9wcm9qZWN0cy9zcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvanF1ZXJ5IgorICAgIF0KKyAgXSwKKyAgIl9mcm9tIjogInRvZG9tdmMtYXBwLWNzc0A+
PTEuMC4xIDwxLjEuMCIsCisgICJfaWQiOiAidG9kb212Yy1hcHAtY3NzQDEuMC40IiwKKyAgIl9p
bkNhY2hlIjogdHJ1ZSwKKyAgIl9sb2NhdGlvbiI6ICIvdG9kb212Yy1hcHAtY3NzIiwKKyAgIl9u
b2RlVmVyc2lvbiI6ICIwLjEyLjAiLAorICAiX25wbVVzZXIiOiB7CisgICAgIm5hbWUiOiAic2lu
ZHJlc29yaHVzIiwKKyAgICAiZW1haWwiOiAic2luZHJlc29yaHVzQGdtYWlsLmNvbSIKKyAgfSwK
KyAgIl9ucG1WZXJzaW9uIjogIjIuNS4xIiwKKyAgIl9waGFudG9tQ2hpbGRyZW4iOiB7fSwKKyAg
Il9yZXF1ZXN0ZWQiOiB7CisgICAgInJhdyI6ICJ0b2RvbXZjLWFwcC1jc3NAfjEuMC4xIiwKKyAg
ICAic2NvcGUiOiBudWxsLAorICAgICJlc2NhcGVkTmFtZSI6ICJ0b2RvbXZjLWFwcC1jc3MiLAor
ICAgICJuYW1lIjogInRvZG9tdmMtYXBwLWNzcyIsCisgICAgInJhd1NwZWMiOiAifjEuMC4xIiwK
KyAgICAic3BlYyI6ICI+PTEuMC4xIDwxLjEuMCIsCisgICAgInR5cGUiOiAicmFuZ2UiCisgIH0s
CisgICJfcmVxdWlyZWRCeSI6IFsKKyAgICAiLyIKKyAgXSwKKyAgIl9yZXNvbHZlZCI6ICJodHRw
czovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy90b2RvbXZjLWFwcC1jc3MvLS90b2RvbXZjLWFwcC1jc3Mt
MS4wLjQudGd6IiwKKyAgIl9zaGFzdW0iOiAiZDI1MjkyNzlhNmRhNWJlZmIwNmI1NWMwYzMyNGM1
ZmNmZDk0ZDY1NiIsCisgICJfc2hyaW5rd3JhcCI6IG51bGwsCisgICJfc3BlYyI6ICJ0b2RvbXZj
LWFwcC1jc3NAfjEuMC4xIiwKKyAgIl93aGVyZSI6ICIvVXNlcnMvYWRkeW8vcHJvamVjdHMvc3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeSIs
CisgICJhdXRob3IiOiB7CisgICAgIm5hbWUiOiAiU2luZHJlIFNvcmh1cyIsCisgICAgImVtYWls
IjogInNpbmRyZXNvcmh1c0BnbWFpbC5jb20iLAorICAgICJ1cmwiOiAic2luZHJlc29yaHVzLmNv
bSIKKyAgfSwKKyAgImJ1Z3MiOiB7CisgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vdGFz
dGVqcy90b2RvbXZjLWFwcC1jc3MvaXNzdWVzIgorICB9LAorICAiZGVwZW5kZW5jaWVzIjoge30s
CisgICJkZXNjcmlwdGlvbiI6ICJDU1MgZm9yIFRvZG9NVkMgYXBwcyIsCisgICJkZXZEZXBlbmRl
bmNpZXMiOiB7fSwKKyAgImRpcmVjdG9yaWVzIjoge30sCisgICJkaXN0IjogeworICAgICJzaGFz
dW0iOiAiZDI1MjkyNzlhNmRhNWJlZmIwNmI1NWMwYzMyNGM1ZmNmZDk0ZDY1NiIsCisgICAgInRh
cmJhbGwiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvdG9kb212Yy1hcHAtY3NzLy0vdG9k
b212Yy1hcHAtY3NzLTEuMC40LnRneiIKKyAgfSwKKyAgImZpbGVzIjogWworICAgICJpbmRleC5j
c3MiCisgIF0sCisgICJnaXRIZWFkIjogIjFlNGUzODg4NGEzNTE5M2VhZjE4MDhhNWJhNDQ0MjE4
MzI4NjcxODQiLAorICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3Rhc3RlanMvdG9k
b212Yy1hcHAtY3NzIiwKKyAgImtleXdvcmRzIjogWworICAgICJ0b2RvbXZjIiwKKyAgICAidGFz
dGVqcyIsCisgICAgImFwcCIsCisgICAgInRvZG8iLAorICAgICJ0ZW1wbGF0ZSIsCisgICAgImNz
cyIsCisgICAgInN0eWxlIiwKKyAgICAic3R5bGVzaGVldCIKKyAgXSwKKyAgImxpY2Vuc2UiOiAi
Q0MtQlktNC4wIiwKKyAgIm1haW50YWluZXJzIjogWworICAgIHsKKyAgICAgICJuYW1lIjogInNp
bmRyZXNvcmh1cyIsCisgICAgICAiZW1haWwiOiAic2luZHJlc29yaHVzQGdtYWlsLmNvbSIKKyAg
ICB9LAorICAgIHsKKyAgICAgICJuYW1lIjogImFkZHlvc21hbmkiLAorICAgICAgImVtYWlsIjog
ImFkZHlvc21hbmlAZ21haWwuY29tIgorICAgIH0sCisgICAgeworICAgICAgIm5hbWUiOiAicGFz
c3kiLAorICAgICAgImVtYWlsIjogInBoYXJ0aWdAcmRyZWkubmV0IgorICAgIH0sCisgICAgewor
ICAgICAgIm5hbWUiOiAic3RlcGhlbnBsdXNwbHVzIiwKKyAgICAgICJlbWFpbCI6ICJzYXdjaHVr
QGdtYWlsLmNvbSIKKyAgICB9CisgIF0sCisgICJuYW1lIjogInRvZG9tdmMtYXBwLWNzcyIsCisg
ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHt9LAorICAicmVhZG1lIjogIkVSUk9SOiBObyBSRUFE
TUUgZGF0YSBmb3VuZCEiLAorICAicmVwb3NpdG9yeSI6IHsKKyAgICAidHlwZSI6ICJnaXQiLAor
ICAgICJ1cmwiOiAiZ2l0K2h0dHBzOi8vZ2l0aHViLmNvbS90YXN0ZWpzL3RvZG9tdmMtYXBwLWNz
cy5naXQiCisgIH0sCisgICJzY3JpcHRzIjoge30sCisgICJ2ZXJzaW9uIjogIjEuMC40IgorfQpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy90b2RvbXZjLWFwcC1j
c3MvcmVhZG1lLm1kIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy90b2RvbXZjLWFw
cC1jc3MvcmVhZG1lLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZkZGJlYmYwMjRjMDRhZWI2MDIwY2FmMTMxYTJl
ZDAzMTg5MDgwYTUKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9t
b2R1bGVzL3RvZG9tdmMtYXBwLWNzcy9yZWFkbWUubWQKQEAgLTAsMCArMSwyOCBAQAorIyB0b2Rv
bXZjLWFwcC1jc3MKKworPiBDU1MgZm9yIFRvZG9NVkMgYXBwcworCishW10oc2NyZWVuc2hvdC5w
bmcpCisKKworIyMgSW5zdGFsbAorCisKK2BgYAorJCBucG0gaW5zdGFsbCAtLXNhdmUgdG9kb212
Yy1hcHAtY3NzCitgYGAKKworCisjIyBHZXR0aW5nIHN0YXJ0ZWQKKworYGBgaHRtbAorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSJub2RlX21vZHVsZXMvdG9kb212Yy1hcHAtY3NzL2luZGV4
LmNzcyI+CitgYGAKKworU2VlIHRoZSBbVG9kb01WQyBhcHAgdGVtcGxhdGVdKGh0dHBzOi8vZ2l0
aHViLmNvbS90YXN0ZWpzL3RvZG9tdmMtYXBwLXRlbXBsYXRlKS4KKworCisKKyMjIExpY2Vuc2UK
KworPGEgcmVsPSJsaWNlbnNlIiBocmVmPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNl
bnNlcy9ieS80LjAvZGVlZC5lbl9VUyI+PGltZyBhbHQ9IkNyZWF0aXZlIENvbW1vbnMgTGljZW5z
ZSIgc3R5bGU9ImJvcmRlci13aWR0aDowIiBzcmM9Imh0dHA6Ly9pLmNyZWF0aXZlY29tbW9ucy5v
cmcvbC9ieS80LjAvODB4MTUucG5nIiAvPjwvYT48YnIgLz5UaGlzIDxzcGFuIHhtbG5zOmRjdD0i
aHR0cDovL3B1cmwub3JnL2RjL3Rlcm1zLyIgaHJlZj0iaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0
eXBlL0ludGVyYWN0aXZlUmVzb3VyY2UiIHJlbD0iZGN0OnR5cGUiPndvcms8L3NwYW4+IGJ5IDxh
IHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiIGhyZWY9Imh0dHA6Ly9z
aW5kcmVzb3JodXMuY29tIiBwcm9wZXJ0eT0iY2M6YXR0cmlidXRpb25OYW1lIiByZWw9ImNjOmF0
dHJpYnV0aW9uVVJMIj5TaW5kcmUgU29yaHVzPC9hPiBpcyBsaWNlbnNlZCB1bmRlciBhIDxhIHJl
bD0ibGljZW5zZSIgaHJlZj0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnkv
NC4wL2RlZWQuZW5fVVMiPkNyZWF0aXZlIENvbW1vbnMgQXR0cmlidXRpb24gNC4wIEludGVybmF0
aW9uYWwgTGljZW5zZTwvYT4uCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9t
b2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jhc2UuY3NzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVf
bW9kdWxlcy90b2RvbXZjLWNvbW1vbi9iYXNlLmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDI1ZDNjODRhYzZj
NmFlZjI2Yjk2ODNhMmJjMTBjNjFmOTYwYzhmCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1vbi9iYXNlLmNzcwpAQCAtMCwwICsx
LDE0MSBAQAoraHIgeworICAgIG1hcmdpbjogMjBweCAwOworICAgIGJvcmRlcjogMDsKKyAgICBi
b3JkZXItdG9wOiAxcHggZGFzaGVkICNjNWM1YzU7CisgICAgYm9yZGVyLWJvdHRvbTogMXB4IGRh
c2hlZCAjZjdmN2Y3OworfQorCisubGVhcm4gYSB7CisgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsK
KyAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CisgICAgY29sb3I6ICNiODNmNDU7Cit9CisKKy5s
ZWFybiBhOmhvdmVyIHsKKyAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKKyAgICBjb2xv
cjogIzc4N2U3ZTsKK30KKworLmxlYXJuIGgzLAorLmxlYXJuIGg0LAorLmxlYXJuIGg1IHsKKyAg
ICBtYXJnaW46IDEwcHggMDsKKyAgICBmb250LXdlaWdodDogNTAwOworICAgIGxpbmUtaGVpZ2h0
OiAxLjI7CisgICAgY29sb3I6ICMwMDA7Cit9CisKKy5sZWFybiBoMyB7CisgICAgZm9udC1zaXpl
OiAyNHB4OworfQorCisubGVhcm4gaDQgeworICAgIGZvbnQtc2l6ZTogMThweDsKK30KKworLmxl
YXJuIGg1IHsKKyAgICBtYXJnaW4tYm90dG9tOiAwOworICAgIGZvbnQtc2l6ZTogMTRweDsKK30K
KworLmxlYXJuIHVsIHsKKyAgICBwYWRkaW5nOiAwOworICAgIG1hcmdpbjogMCAwIDMwcHggMjVw
eDsKK30KKworLmxlYXJuIGxpIHsKKyAgICBsaW5lLWhlaWdodDogMjBweDsKK30KKworLmxlYXJu
IHAgeworICAgIGZvbnQtc2l6ZTogMTVweDsKKyAgICBmb250LXdlaWdodDogMzAwOworICAgIGxp
bmUtaGVpZ2h0OiAxLjM7CisgICAgbWFyZ2luLXRvcDogMDsKKyAgICBtYXJnaW4tYm90dG9tOiAw
OworfQorCisjaXNzdWUtY291bnQgeworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKKy5xdW90ZSB7
CisgICAgYm9yZGVyOiBub25lOworICAgIG1hcmdpbjogMjBweCAwIDYwcHggMDsKK30KKworLnF1
b3RlIHAgeworICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKK30KKworLnF1b3RlIHA6YmVmb3JlIHsK
KyAgICBjb250ZW50OiAn4oCcJzsKKyAgICBmb250LXNpemU6IDUwcHg7CisgICAgb3BhY2l0eTog
LjE1OworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IC0yMHB4OworICAgIGxlZnQ6
IDNweDsKK30KKworLnF1b3RlIHA6YWZ0ZXIgeworICAgIGNvbnRlbnQ6ICfigJ0nOworICAgIGZv
bnQtc2l6ZTogNTBweDsKKyAgICBvcGFjaXR5OiAuMTU7CisgICAgcG9zaXRpb246IGFic29sdXRl
OworICAgIGJvdHRvbTogLTQycHg7CisgICAgcmlnaHQ6IDNweDsKK30KKworLnF1b3RlIGZvb3Rl
ciB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIGJvdHRvbTogLTQwcHg7CisgICAgcmln
aHQ6IDA7Cit9CisKKy5xdW90ZSBmb290ZXIgaW1nIHsKKyAgICBib3JkZXItcmFkaXVzOiAzcHg7
Cit9CisKKy5xdW90ZSBmb290ZXIgYSB7CisgICAgbWFyZ2luLWxlZnQ6IDVweDsKKyAgICB2ZXJ0
aWNhbC1hbGlnbjogbWlkZGxlOworfQorCisuc3BlZWNoLWJ1YmJsZSB7CisgICAgcG9zaXRpb246
IHJlbGF0aXZlOworICAgIHBhZGRpbmc6IDEwcHg7CisgICAgYmFja2dyb3VuZDogcmdiYSgwLCAw
LCAwLCAuMDQpOworICAgIGJvcmRlci1yYWRpdXM6IDVweDsKK30KKworLnNwZWVjaC1idWJibGU6
YWZ0ZXIgeworICAgIGNvbnRlbnQ6ICcnOworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0
b3A6IDEwMCU7CisgICAgcmlnaHQ6IDMwcHg7CisgICAgYm9yZGVyOiAxM3B4IHNvbGlkIHRyYW5z
cGFyZW50OworICAgIGJvcmRlci10b3AtY29sb3I6IHJnYmEoMCwgMCwgMCwgLjA0KTsKK30KKwor
LmxlYXJuLWJhciA+IC5sZWFybiB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHdpZHRo
OiAyNzJweDsKKyAgICB0b3A6IDhweDsKKyAgICBsZWZ0OiAtMzAwcHg7CisgICAgcGFkZGluZzog
MTBweDsKKyAgICBib3JkZXItcmFkaXVzOiA1cHg7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdi
YSgyNTUsIDI1NSwgMjU1LCAuNik7CisgICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogbGVmdDsKKyAg
ICB0cmFuc2l0aW9uLWR1cmF0aW9uOiA1MDBtczsKK30KKworQG1lZGlhIChtaW4td2lkdGg6IDg5
OXB4KSB7CisgICAgLmxlYXJuLWJhciB7CisgICAgICAgIHdpZHRoOiBhdXRvOworICAgICAgICBw
YWRkaW5nLWxlZnQ6IDMwMHB4OworICAgIH0KKworICAgIC5sZWFybi1iYXIgPiAubGVhcm4gewor
ICAgICAgICBsZWZ0OiA4cHg7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1
ZXJ5L25vZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1vbi9iYXNlLmpzIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1
ZXJ5L25vZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1vbi9iYXNlLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxZTAw
NmJjNTAyZGRjNGM3NGY0N2JkMTNhODM5MjI3N2Y4MzBkYjgKLS0tIC9kZXYvbnVsbAorKysgYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jhc2UuanMKQEAg
LTAsMCArMSwyNDkgQEAKKy8qIGdsb2JhbCBfICovCisoZnVuY3Rpb24gKCkgeworICAgICd1c2Ug
c3RyaWN0JzsKKworICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi8KKyAgICAvLyBVbmRlcnNj
b3JlJ3MgVGVtcGxhdGUgTW9kdWxlCisgICAgLy8gQ291cnRlc3kgb2YgdW5kZXJzY29yZWpzLm9y
ZworICAgIHZhciBfID0gKGZ1bmN0aW9uIChfKSB7CisgICAgICAgIF8uZGVmYXVsdHMgPSBmdW5j
dGlvbiAob2JqZWN0KSB7CisgICAgICAgICAgICBpZiAoIW9iamVjdCkgeworICAgICAgICAgICAg
ICAgIHJldHVybiBvYmplY3Q7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmb3IgKHZhciBh
cmdzSW5kZXggPSAxLCBhcmdzTGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDsgYXJnc0luZGV4IDwg
YXJnc0xlbmd0aDsgYXJnc0luZGV4KyspIHsKKyAgICAgICAgICAgICAgICB2YXIgaXRlcmFibGUg
PSBhcmd1bWVudHNbYXJnc0luZGV4XTsKKyAgICAgICAgICAgICAgICBpZiAoaXRlcmFibGUpIHsK
KyAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIGl0ZXJhYmxlKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAob2JqZWN0W2tleV0gPT0gbnVsbCkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG9iamVjdFtrZXldID0gaXRlcmFibGVba2V5XTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBvYmplY3Q7CisgICAgICAgIH0KKwor
ICAgICAgICAvLyBCeSBkZWZhdWx0LCBVbmRlcnNjb3JlIHVzZXMgRVJCLXN0eWxlIHRlbXBsYXRl
IGRlbGltaXRlcnMsIGNoYW5nZSB0aGUKKyAgICAgICAgLy8gZm9sbG93aW5nIHRlbXBsYXRlIHNl
dHRpbmdzIHRvIHVzZSBhbHRlcm5hdGl2ZSBkZWxpbWl0ZXJzLgorICAgICAgICBfLnRlbXBsYXRl
U2V0dGluZ3MgPSB7CisgICAgICAgICAgICBldmFsdWF0ZSAgICA6IC88JShbXHNcU10rPyklPi9n
LAorICAgICAgICAgICAgaW50ZXJwb2xhdGUgOiAvPCU9KFtcc1xTXSs/KSU+L2csCisgICAgICAg
ICAgICBlc2NhcGUgICAgICA6IC88JS0oW1xzXFNdKz8pJT4vZworICAgICAgICB9OworCisgICAg
ICAgIC8vIFdoZW4gY3VzdG9taXppbmcgYHRlbXBsYXRlU2V0dGluZ3NgLCBpZiB5b3UgZG9uJ3Qg
d2FudCB0byBkZWZpbmUgYW4KKyAgICAgICAgLy8gaW50ZXJwb2xhdGlvbiwgZXZhbHVhdGlvbiBv
ciBlc2NhcGluZyByZWdleCwgd2UgbmVlZCBvbmUgdGhhdCBpcworICAgICAgICAvLyBndWFyYW50
ZWVkIG5vdCB0byBtYXRjaC4KKyAgICAgICAgdmFyIG5vTWF0Y2ggPSAvKC4pXi87CisKKyAgICAg
ICAgLy8gQ2VydGFpbiBjaGFyYWN0ZXJzIG5lZWQgdG8gYmUgZXNjYXBlZCBzbyB0aGF0IHRoZXkg
Y2FuIGJlIHB1dCBpbnRvIGEKKyAgICAgICAgLy8gc3RyaW5nIGxpdGVyYWwuCisgICAgICAgIHZh
ciBlc2NhcGVzID0geworICAgICAgICAgICAgIiciOiAgICAgICInIiwKKyAgICAgICAgICAgICdc
XCc6ICAgICAnXFwnLAorICAgICAgICAgICAgJ1xyJzogICAgICdyJywKKyAgICAgICAgICAgICdc
bic6ICAgICAnbicsCisgICAgICAgICAgICAnXHQnOiAgICAgJ3QnLAorICAgICAgICAgICAgJ1x1
MjAyOCc6ICd1MjAyOCcsCisgICAgICAgICAgICAnXHUyMDI5JzogJ3UyMDI5JworICAgICAgICB9
OworCisgICAgICAgIHZhciBlc2NhcGVyID0gL1xcfCd8XHJ8XG58XHR8XHUyMDI4fFx1MjAyOS9n
OworCisgICAgICAgIC8vIEphdmFTY3JpcHQgbWljcm8tdGVtcGxhdGluZywgc2ltaWxhciB0byBK
b2huIFJlc2lnJ3MgaW1wbGVtZW50YXRpb24uCisgICAgICAgIC8vIFVuZGVyc2NvcmUgdGVtcGxh
dGluZyBoYW5kbGVzIGFyYml0cmFyeSBkZWxpbWl0ZXJzLCBwcmVzZXJ2ZXMgd2hpdGVzcGFjZSwK
KyAgICAgICAgLy8gYW5kIGNvcnJlY3RseSBlc2NhcGVzIHF1b3RlcyB3aXRoaW4gaW50ZXJwb2xh
dGVkIGNvZGUuCisgICAgICAgIF8udGVtcGxhdGUgPSBmdW5jdGlvbih0ZXh0LCBkYXRhLCBzZXR0
aW5ncykgeworICAgICAgICAgICAgdmFyIHJlbmRlcjsKKyAgICAgICAgICAgIHNldHRpbmdzID0g
Xy5kZWZhdWx0cyh7fSwgc2V0dGluZ3MsIF8udGVtcGxhdGVTZXR0aW5ncyk7CisKKyAgICAgICAg
ICAgIC8vIENvbWJpbmUgZGVsaW1pdGVycyBpbnRvIG9uZSByZWd1bGFyIGV4cHJlc3Npb24gdmlh
IGFsdGVybmF0aW9uLgorICAgICAgICAgICAgdmFyIG1hdGNoZXIgPSBuZXcgUmVnRXhwKFsKKyAg
ICAgICAgICAgICAgICAoc2V0dGluZ3MuZXNjYXBlIHx8IG5vTWF0Y2gpLnNvdXJjZSwKKyAgICAg
ICAgICAgICAgICAoc2V0dGluZ3MuaW50ZXJwb2xhdGUgfHwgbm9NYXRjaCkuc291cmNlLAorICAg
ICAgICAgICAgICAgIChzZXR0aW5ncy5ldmFsdWF0ZSB8fCBub01hdGNoKS5zb3VyY2UKKyAgICAg
ICAgICAgIF0uam9pbignfCcpICsgJ3wkJywgJ2cnKTsKKworICAgICAgICAgICAgLy8gQ29tcGls
ZSB0aGUgdGVtcGxhdGUgc291cmNlLCBlc2NhcGluZyBzdHJpbmcgbGl0ZXJhbHMgYXBwcm9wcmlh
dGVseS4KKyAgICAgICAgICAgIHZhciBpbmRleCA9IDA7CisgICAgICAgICAgICB2YXIgc291cmNl
ID0gIl9fcCs9JyI7CisgICAgICAgICAgICB0ZXh0LnJlcGxhY2UobWF0Y2hlciwgZnVuY3Rpb24o
bWF0Y2gsIGVzY2FwZSwgaW50ZXJwb2xhdGUsIGV2YWx1YXRlLCBvZmZzZXQpIHsKKyAgICAgICAg
ICAgICAgICBzb3VyY2UgKz0gdGV4dC5zbGljZShpbmRleCwgb2Zmc2V0KQorICAgICAgICAgICAg
ICAgICAgICAucmVwbGFjZShlc2NhcGVyLCBmdW5jdGlvbihtYXRjaCkgeyByZXR1cm4gJ1xcJyAr
IGVzY2FwZXNbbWF0Y2hdOyB9KTsKKworICAgICAgICAgICAgICAgIGlmIChlc2NhcGUpIHsKKyAg
ICAgICAgICAgICAgICAgICAgc291cmNlICs9ICInK1xuKChfX3Q9KCIgKyBlc2NhcGUgKyAiKSk9
PW51bGw/Jyc6Xy5lc2NhcGUoX190KSkrXG4nIjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgaWYgKGludGVycG9sYXRlKSB7CisgICAgICAgICAgICAgICAgICAgIHNvdXJjZSAr
PSAiJytcbigoX190PSgiICsgaW50ZXJwb2xhdGUgKyAiKSk9PW51bGw/Jyc6X190KStcbiciOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoZXZhbHVhdGUpIHsKKyAgICAg
ICAgICAgICAgICAgICAgc291cmNlICs9ICInO1xuIiArIGV2YWx1YXRlICsgIlxuX19wKz0nIjsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaW5kZXggPSBvZmZzZXQgKyBtYXRj
aC5sZW5ndGg7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoOworICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICBzb3VyY2UgKz0gIic7XG4iOworCisgICAgICAgICAgICAvLyBJZiBhIHZh
cmlhYmxlIGlzIG5vdCBzcGVjaWZpZWQsIHBsYWNlIGRhdGEgdmFsdWVzIGluIGxvY2FsIHNjb3Bl
LgorICAgICAgICAgICAgaWYgKCFzZXR0aW5ncy52YXJpYWJsZSkgc291cmNlID0gJ3dpdGgob2Jq
fHx7fSl7XG4nICsgc291cmNlICsgJ31cbic7CisKKyAgICAgICAgICAgIHNvdXJjZSA9ICJ2YXIg
X190LF9fcD0nJyxfX2o9QXJyYXkucHJvdG90eXBlLmpvaW4sIiArCisgICAgICAgICAgICAgICAg
InByaW50PWZ1bmN0aW9uKCl7X19wKz1fX2ouY2FsbChhcmd1bWVudHMsJycpO307XG4iICsKKyAg
ICAgICAgICAgICAgICBzb3VyY2UgKyAicmV0dXJuIF9fcDtcbiI7CisKKyAgICAgICAgICAgIHRy
eSB7CisgICAgICAgICAgICAgICAgcmVuZGVyID0gbmV3IEZ1bmN0aW9uKHNldHRpbmdzLnZhcmlh
YmxlIHx8ICdvYmonLCAnXycsIHNvdXJjZSk7CisgICAgICAgICAgICB9IGNhdGNoIChlKSB7Cisg
ICAgICAgICAgICAgICAgZS5zb3VyY2UgPSBzb3VyY2U7CisgICAgICAgICAgICAgICAgdGhyb3cg
ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGRhdGEpIHJldHVybiByZW5kZXIo
ZGF0YSwgXyk7CisgICAgICAgICAgICB2YXIgdGVtcGxhdGUgPSBmdW5jdGlvbihkYXRhKSB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHJlbmRlci5jYWxsKHRoaXMsIGRhdGEsIF8pOworICAgICAg
ICAgICAgfTsKKworICAgICAgICAgICAgLy8gUHJvdmlkZSB0aGUgY29tcGlsZWQgZnVuY3Rpb24g
c291cmNlIGFzIGEgY29udmVuaWVuY2UgZm9yIHByZWNvbXBpbGF0aW9uLgorICAgICAgICAgICAg
dGVtcGxhdGUuc291cmNlID0gJ2Z1bmN0aW9uKCcgKyAoc2V0dGluZ3MudmFyaWFibGUgfHwgJ29i
aicpICsgJyl7XG4nICsgc291cmNlICsgJ30nOworCisgICAgICAgICAgICByZXR1cm4gdGVtcGxh
dGU7CisgICAgICAgIH07CisKKyAgICAgICAgcmV0dXJuIF87CisgICAgfSkoe30pOworCisgICAg
aWYgKGxvY2F0aW9uLmhvc3RuYW1lID09PSAndG9kb212Yy5jb20nKSB7CisgICAgICAgIChmdW5j
dGlvbihpLHMsbyxnLHIsYSxtKXtpWydHb29nbGVBbmFseXRpY3NPYmplY3QnXT1yO2lbcl09aVty
XXx8ZnVuY3Rpb24oKXsKKyAgICAgICAgKGlbcl0ucT1pW3JdLnF8fFtdKS5wdXNoKGFyZ3VtZW50
cyl9LGlbcl0ubD0xKm5ldyBEYXRlKCk7YT1zLmNyZWF0ZUVsZW1lbnQobyksCisgICAgICAgIG09
cy5nZXRFbGVtZW50c0J5VGFnTmFtZShvKVswXTthLmFzeW5jPTE7YS5zcmM9ZzttLnBhcmVudE5v
ZGUuaW5zZXJ0QmVmb3JlKGEsbSkKKyAgICAgICAgfSkod2luZG93LGRvY3VtZW50LCdzY3JpcHQn
LCdodHRwczovL3d3dy5nb29nbGUtYW5hbHl0aWNzLmNvbS9hbmFseXRpY3MuanMnLCdnYScpOwor
ICAgICAgICBnYSgnY3JlYXRlJywgJ1VBLTMxMDgxMDYyLTEnLCAnYXV0bycpOworICAgICAgICBn
YSgnc2VuZCcsICdwYWdldmlldycpOworICAgIH0KKyAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAq
LworCisgICAgZnVuY3Rpb24gcmVkaXJlY3QoKSB7CisgICAgICAgIGlmIChsb2NhdGlvbi5ob3N0
bmFtZSA9PT0gJ3Rhc3RlanMuZ2l0aHViLmlvJykgeworICAgICAgICAgICAgbG9jYXRpb24uaHJl
ZiA9IGxvY2F0aW9uLmhyZWYucmVwbGFjZSgndGFzdGVqcy5naXRodWIuaW8vdG9kb212YycsICd0
b2RvbXZjLmNvbScpOworICAgICAgICB9CisgICAgfQorCisgICAgZnVuY3Rpb24gZmluZFJvb3Qo
KSB7CisgICAgICAgIHZhciBiYXNlID0gbG9jYXRpb24uaHJlZi5pbmRleE9mKCdleGFtcGxlcy8n
KTsKKyAgICAgICAgcmV0dXJuIGxvY2F0aW9uLmhyZWYuc3Vic3RyKDAsIGJhc2UpOworICAgIH0K
KworICAgIGZ1bmN0aW9uIGdldEZpbGUoZmlsZSwgY2FsbGJhY2spIHsKKyAgICAgICAgaWYgKCFs
b2NhdGlvbi5ob3N0KSB7CisgICAgICAgICAgICByZXR1cm4gY29uc29sZS5pbmZvKCdNaXNzIHRo
ZSBpbmZvIGJhcj8gUnVuIFRvZG9NVkMgZnJvbSBhIHNlcnZlciB0byBhdm9pZCBhIGNyb3NzLW9y
aWdpbiBlcnJvci4nKTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0
cFJlcXVlc3QoKTsKKworICAgICAgICB4aHIub3BlbignR0VUJywgZmluZFJvb3QoKSArIGZpbGUs
IHRydWUpOworICAgICAgICB4aHIuc2VuZCgpOworCisgICAgICAgIHhoci5vbmxvYWQgPSBmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICBpZiAoeGhyLnN0YXR1cyA9PT0gMjAwICYmIGNhbGxiYWNr
KSB7CisgICAgICAgICAgICAgICAgY2FsbGJhY2soeGhyLnJlc3BvbnNlVGV4dCk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH07CisgICAgfQorCisgICAgZnVuY3Rpb24gTGVhcm4obGVhcm5KU09O
LCBjb25maWcpIHsKKyAgICAgICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIExlYXJuKSkgeworICAg
ICAgICAgICAgcmV0dXJuIG5ldyBMZWFybihsZWFybkpTT04sIGNvbmZpZyk7CisgICAgICAgIH0K
KworICAgICAgICB2YXIgdGVtcGxhdGUsIGZyYW1ld29yazsKKworICAgICAgICBpZiAodHlwZW9m
IGxlYXJuSlNPTiAhPT0gJ29iamVjdCcpIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAg
ICAgICAgbGVhcm5KU09OID0gSlNPTi5wYXJzZShsZWFybkpTT04pOworICAgICAgICAgICAgfSBj
YXRjaCAoZSkgeworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorCisgICAgICAgIGlmIChjb25maWcpIHsKKyAgICAgICAgICAgIHRlbXBsYXRlID0gY29u
ZmlnLnRlbXBsYXRlOworICAgICAgICAgICAgZnJhbWV3b3JrID0gY29uZmlnLmZyYW1ld29yazsK
KyAgICAgICAgfQorCisgICAgICAgIGlmICghdGVtcGxhdGUgJiYgbGVhcm5KU09OLnRlbXBsYXRl
cykgeworICAgICAgICAgICAgdGVtcGxhdGUgPSBsZWFybkpTT04udGVtcGxhdGVzLnRvZG9tdmM7
CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWZyYW1ld29yayAmJiBkb2N1bWVudC5xdWVyeVNl
bGVjdG9yKCdbZGF0YS1mcmFtZXdvcmtdJykpIHsKKyAgICAgICAgICAgIGZyYW1ld29yayA9IGRv
Y3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLWZyYW1ld29ya10nKS5kYXRhc2V0LmZyYW1ld29y
azsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMudGVtcGxhdGUgPSB0ZW1wbGF0ZTsKKworICAg
ICAgICBpZiAobGVhcm5KU09OLmJhY2tlbmQpIHsKKyAgICAgICAgICAgIHRoaXMuZnJhbWV3b3Jr
SlNPTiA9IGxlYXJuSlNPTi5iYWNrZW5kOworICAgICAgICAgICAgdGhpcy5mcmFtZXdvcmtKU09O
Lmlzc3VlTGFiZWwgPSBmcmFtZXdvcms7CisgICAgICAgICAgICB0aGlzLmFwcGVuZCh7CisgICAg
ICAgICAgICAgICAgYmFja2VuZDogdHJ1ZQorICAgICAgICAgICAgfSk7CisgICAgICAgIH0gZWxz
ZSBpZiAobGVhcm5KU09OW2ZyYW1ld29ya10pIHsKKyAgICAgICAgICAgIHRoaXMuZnJhbWV3b3Jr
SlNPTiA9IGxlYXJuSlNPTltmcmFtZXdvcmtdOworICAgICAgICAgICAgdGhpcy5mcmFtZXdvcmtK
U09OLmlzc3VlTGFiZWwgPSBmcmFtZXdvcms7CisgICAgICAgICAgICB0aGlzLmFwcGVuZCgpOwor
ICAgICAgICB9CisKKyAgICAgICAgdGhpcy5mZXRjaElzc3VlQ291bnQoKTsKKyAgICB9CisKKyAg
ICBMZWFybi5wcm90b3R5cGUuYXBwZW5kID0gZnVuY3Rpb24gKG9wdHMpIHsKKyAgICAgICAgdmFy
IGFzaWRlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYXNpZGUnKTsKKyAgICAgICAgYXNpZGUu
aW5uZXJIVE1MID0gXy50ZW1wbGF0ZSh0aGlzLnRlbXBsYXRlLCB0aGlzLmZyYW1ld29ya0pTT04p
OworICAgICAgICBhc2lkZS5jbGFzc05hbWUgPSAnbGVhcm4nOworCisgICAgICAgIGlmIChvcHRz
ICYmIG9wdHMuYmFja2VuZCkgeworICAgICAgICAgICAgLy8gUmVtb3ZlIGRlbW8gbGluaworICAg
ICAgICAgICAgdmFyIHNvdXJjZUxpbmtzID0gYXNpZGUucXVlcnlTZWxlY3RvcignLnNvdXJjZS1s
aW5rcycpOworICAgICAgICAgICAgdmFyIGhlYWRpbmcgPSBzb3VyY2VMaW5rcy5maXJzdEVsZW1l
bnRDaGlsZDsKKyAgICAgICAgICAgIHZhciBzb3VyY2VMaW5rID0gc291cmNlTGlua3MubGFzdEVs
ZW1lbnRDaGlsZDsKKyAgICAgICAgICAgIC8vIENvcnJlY3QgbGluayBwYXRoCisgICAgICAgICAg
ICB2YXIgaHJlZiA9IHNvdXJjZUxpbmsuZ2V0QXR0cmlidXRlKCdocmVmJyk7CisgICAgICAgICAg
ICBzb3VyY2VMaW5rLnNldEF0dHJpYnV0ZSgnaHJlZicsIGhyZWYuc3Vic3RyKGhyZWYubGFzdElu
ZGV4T2YoJ2h0dHAnKSkpOworICAgICAgICAgICAgc291cmNlTGlua3MuaW5uZXJIVE1MID0gaGVh
ZGluZy5vdXRlckhUTUwgKyBzb3VyY2VMaW5rLm91dGVySFRNTDsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIC8vIExvY2FsaXplIGRlbW8gbGlua3MKKyAgICAgICAgICAgIHZhciBkZW1v
TGlua3MgPSBhc2lkZS5xdWVyeVNlbGVjdG9yQWxsKCcuZGVtby1saW5rJyk7CisgICAgICAgICAg
ICBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGRlbW9MaW5rcywgZnVuY3Rpb24gKGRlbW9M
aW5rKSB7CisgICAgICAgICAgICAgICAgaWYgKGRlbW9MaW5rLmdldEF0dHJpYnV0ZSgnaHJlZicp
LnN1YnN0cigwLCA0KSAhPT0gJ2h0dHAnKSB7CisgICAgICAgICAgICAgICAgICAgIGRlbW9MaW5r
LnNldEF0dHJpYnV0ZSgnaHJlZicsIGZpbmRSb290KCkgKyBkZW1vTGluay5nZXRBdHRyaWJ1dGUo
J2hyZWYnKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSk7CisgICAgICAgIH0K
KworICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSA9IChkb2N1bWVudC5ib2R5LmNsYXNz
TmFtZSArICcgbGVhcm4tYmFyJykudHJpbSgpOworICAgICAgICBkb2N1bWVudC5ib2R5Lmluc2Vy
dEFkamFjZW50SFRNTCgnYWZ0ZXJCZWdpbicsIGFzaWRlLm91dGVySFRNTCk7CisgICAgfTsKKwor
ICAgIExlYXJuLnByb3RvdHlwZS5mZXRjaElzc3VlQ291bnQgPSBmdW5jdGlvbiAoKSB7CisgICAg
ICAgIHZhciBpc3N1ZUxpbmsgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaXNzdWUtY291bnQt
bGluaycpOworICAgICAgICBpZiAoaXNzdWVMaW5rKSB7CisgICAgICAgICAgICB2YXIgdXJsID0g
aXNzdWVMaW5rLmhyZWYucmVwbGFjZSgnaHR0cHM6Ly9naXRodWIuY29tJywgJ2h0dHBzOi8vYXBp
LmdpdGh1Yi5jb20vcmVwb3MnKTsKKyAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJl
cXVlc3QoKTsKKyAgICAgICAgICAgIHhoci5vcGVuKCdHRVQnLCB1cmwsIHRydWUpOworICAgICAg
ICAgICAgeGhyLm9ubG9hZCA9IGZ1bmN0aW9uIChlKSB7CisgICAgICAgICAgICAgICAgdmFyIHBh
cnNlZFJlc3BvbnNlID0gSlNPTi5wYXJzZShlLnRhcmdldC5yZXNwb25zZVRleHQpOworICAgICAg
ICAgICAgICAgIGlmIChwYXJzZWRSZXNwb25zZSBpbnN0YW5jZW9mIEFycmF5KSB7CisgICAgICAg
ICAgICAgICAgICAgIHZhciBjb3VudCA9IHBhcnNlZFJlc3BvbnNlLmxlbmd0aDsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKGNvdW50ICE9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBp
c3N1ZUxpbmsuaW5uZXJIVE1MID0gJ1RoaXMgYXBwIGhhcyAnICsgY291bnQgKyAnIG9wZW4gaXNz
dWVzJzsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdp
c3N1ZS1jb3VudCcpLnN0eWxlLmRpc3BsYXkgPSAnaW5saW5lJzsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH07CisgICAgICAgICAgICB4aHIu
c2VuZCgpOworICAgICAgICB9CisgICAgfTsKKworICAgIHJlZGlyZWN0KCk7CisgICAgZ2V0Rmls
ZSgnbGVhcm4uanNvbicsIExlYXJuKTsKK30pKCk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9q
cXVlcnkvbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL3BhY2thZ2UuanNvbiBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvdG9kb212Yy1jb21tb24vcGFja2FnZS5qc29uCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjU1MjVkNDMyZDFlMTE0NTc0ZWI4NDEwNWRiZWIyZDAyM2M2NWI3ZTcKLS0tIC9kZXYv
bnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9u
L3BhY2thZ2UuanNvbgpAQCAtMCwwICsxLDEwNCBAQAoreworICAiX2FyZ3MiOiBbCisgICAgWwor
ICAgICAgeworICAgICAgICAicmF3IjogInRvZG9tdmMtY29tbW9uQH4xLjAuMSIsCisgICAgICAg
ICJzY29wZSI6IG51bGwsCisgICAgICAgICJlc2NhcGVkTmFtZSI6ICJ0b2RvbXZjLWNvbW1vbiIs
CisgICAgICAgICJuYW1lIjogInRvZG9tdmMtY29tbW9uIiwKKyAgICAgICAgInJhd1NwZWMiOiAi
fjEuMC4xIiwKKyAgICAgICAgInNwZWMiOiAiPj0xLjAuMSA8MS4xLjAiLAorICAgICAgICAidHlw
ZSI6ICJyYW5nZSIKKyAgICAgIH0sCisgICAgICAiL1VzZXJzL2FkZHlvL3Byb2plY3RzL3NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkiCisg
ICAgXQorICBdLAorICAiX2Zyb20iOiAidG9kb212Yy1jb21tb25APj0xLjAuMSA8MS4xLjAiLAor
ICAiX2lkIjogInRvZG9tdmMtY29tbW9uQDEuMC4zIiwKKyAgIl9pbkNhY2hlIjogdHJ1ZSwKKyAg
Il9sb2NhdGlvbiI6ICIvdG9kb212Yy1jb21tb24iLAorICAiX25vZGVWZXJzaW9uIjogIjcuMS4w
IiwKKyAgIl9ucG1PcGVyYXRpb25hbEludGVybmFsIjogeworICAgICJob3N0IjogInBhY2thZ2Vz
LTE4LWVhc3QuaW50ZXJuYWwubnBtanMuY29tIiwKKyAgICAidG1wIjogInRtcC90b2RvbXZjLWNv
bW1vbi0xLjAuMy50Z3pfMTQ3OTI3NjM2MTIyN18wLjUxMTI0ODgwMTM2OTIyIgorICB9LAorICAi
X25wbVVzZXIiOiB7CisgICAgIm5hbWUiOiAic2luZHJlc29yaHVzIiwKKyAgICAiZW1haWwiOiAi
c2luZHJlc29yaHVzQGdtYWlsLmNvbSIKKyAgfSwKKyAgIl9ucG1WZXJzaW9uIjogIjMuMTAuOSIs
CisgICJfcGhhbnRvbUNoaWxkcmVuIjoge30sCisgICJfcmVxdWVzdGVkIjogeworICAgICJyYXci
OiAidG9kb212Yy1jb21tb25AfjEuMC4xIiwKKyAgICAic2NvcGUiOiBudWxsLAorICAgICJlc2Nh
cGVkTmFtZSI6ICJ0b2RvbXZjLWNvbW1vbiIsCisgICAgIm5hbWUiOiAidG9kb212Yy1jb21tb24i
LAorICAgICJyYXdTcGVjIjogIn4xLjAuMSIsCisgICAgInNwZWMiOiAiPj0xLjAuMSA8MS4xLjAi
LAorICAgICJ0eXBlIjogInJhbmdlIgorICB9LAorICAiX3JlcXVpcmVkQnkiOiBbCisgICAgIi8i
CisgIF0sCisgICJfcmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvdG9kb212
Yy1jb21tb24vLS90b2RvbXZjLWNvbW1vbi0xLjAuMy50Z3oiLAorICAiX3NoYXN1bSI6ICJjYmEx
ODY4MTA5Y2FhNDAxYjkwOGViZjc3Nzk0Y2MxMDE0Yjc0ODczIiwKKyAgIl9zaHJpbmt3cmFwIjog
bnVsbCwKKyAgIl9zcGVjIjogInRvZG9tdmMtY29tbW9uQH4xLjAuMSIsCisgICJfd2hlcmUiOiAi
L1VzZXJzL2FkZHlvL3Byb2plY3RzL3NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9qcXVlcnkiLAorICAiYXV0aG9yIjogeworICAgICJuYW1lIjogIlRh
c3RlSlMiCisgIH0sCisgICJidWdzIjogeworICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29t
L3Rhc3RlanMvdG9kb212Yy1jb21tb24vaXNzdWVzIgorICB9LAorICAiZGVwZW5kZW5jaWVzIjog
e30sCisgICJkZXNjcmlwdGlvbiI6ICJDb21tb24gVG9kb01WQyB1dGlsaXRpZXMgdXNlZCBieSBv
dXIgYXBwcyIsCisgICJkZXZEZXBlbmRlbmNpZXMiOiB7fSwKKyAgImRpcmVjdG9yaWVzIjoge30s
CisgICJkaXN0IjogeworICAgICJzaGFzdW0iOiAiY2JhMTg2ODEwOWNhYTQwMWI5MDhlYmY3Nzc5
NGNjMTAxNGI3NDg3MyIsCisgICAgInRhcmJhbGwiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5v
cmcvdG9kb212Yy1jb21tb24vLS90b2RvbXZjLWNvbW1vbi0xLjAuMy50Z3oiCisgIH0sCisgICJm
aWxlcyI6IFsKKyAgICAiYmFzZS5qcyIsCisgICAgImJhc2UuY3NzIgorICBdLAorICAiZ2l0SGVh
ZCI6ICJlNzQyNWJhZmI5NTYxZDc2NmI3Njk4NDQ4MTBlMDQ5NjczNGZmZThjIiwKKyAgImhvbWVw
YWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS90YXN0ZWpzL3RvZG9tdmMtY29tbW9uI3JlYWRtZSIs
CisgICJrZXl3b3JkcyI6IFsKKyAgICAidG9kb212YyIsCisgICAgInRhc3RlanMiLAorICAgICJ1
dGlsIiwKKyAgICAidXRpbGl0aWVzIgorICBdLAorICAibGljZW5zZSI6ICJNSVQiLAorICAibWFp
biI6ICJiYXNlLmpzIiwKKyAgIm1haW50YWluZXJzIjogWworICAgIHsKKyAgICAgICJuYW1lIjog
InNpbmRyZXNvcmh1cyIsCisgICAgICAiZW1haWwiOiAic2luZHJlc29yaHVzQGdtYWlsLmNvbSIK
KyAgICB9LAorICAgIHsKKyAgICAgICJuYW1lIjogImFkZHlvc21hbmkiLAorICAgICAgImVtYWls
IjogImFkZHlvc21hbmlAZ21haWwuY29tIgorICAgIH0sCisgICAgeworICAgICAgIm5hbWUiOiAi
cGFzc3kiLAorICAgICAgImVtYWlsIjogInBoYXJ0aWdAcmRyZWkubmV0IgorICAgIH0sCisgICAg
eworICAgICAgIm5hbWUiOiAic3RlcGhlbnBsdXNwbHVzIiwKKyAgICAgICJlbWFpbCI6ICJzYXdj
aHVrQGdtYWlsLmNvbSIKKyAgICB9CisgIF0sCisgICJuYW1lIjogInRvZG9tdmMtY29tbW9uIiwK
KyAgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjoge30sCisgICJyZWFkbWUiOiAiRVJST1I6IE5vIFJF
QURNRSBkYXRhIGZvdW5kISIsCisgICJyZXBvc2l0b3J5IjogeworICAgICJ0eXBlIjogImdpdCIs
CisgICAgInVybCI6ICJnaXQraHR0cHM6Ly9naXRodWIuY29tL3Rhc3RlanMvdG9kb212Yy1jb21t
b24uZ2l0IgorICB9LAorICAic2NyaXB0cyI6IHt9LAorICAic3R5bGUiOiAiYmFzZS5jc3MiLAor
ICAidmVyc2lvbiI6ICIxLjAuMyIKK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9u
b2RlX21vZHVsZXMvdG9kb212Yy1jb21tb24vcmVhZG1lLm1kIGIvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5
L25vZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1vbi9yZWFkbWUubWQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2E1ZGU1
MTE4ZjNmYzc3NThlOGRkYzBhNjg2ODc0OWNlZTljYWY5NQotLS0gL2Rldi9udWxsCisrKyBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvdG9kb212Yy1jb21tb24vcmVhZG1lLm1kCkBA
IC0wLDAgKzEsMTUgQEAKKyMgdG9kb212Yy1jb21tb24KKworPiBDb21tb24gVG9kb01WQyB1dGls
aXRpZXMgdXNlZCBieSBvdXIgYXBwcworCisKKyMjIEluc3RhbGwKKworYGBgCiskIG5wbSBpbnN0
YWxsIC0tc2F2ZSB0b2RvbXZjLWNvbW1vbgorYGBgCisKKworIyMgTGljZW5zZQorCitNSVQgwqkg
W1Rhc3RlSlNdKGh0dHA6Ly90YXN0ZWpzLmNvbSkKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2px
dWVyeS9wYWNrYWdlLmpzb24gYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvcGFja2FnZS5qc29uCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjA5N2M4NWZjM2E1NjJjMDJjMzc3ODk2MGJmNWI4MTBkZjgxZGY3NTUKLS0tIC9kZXYv
bnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvcGFja2FnZS5qc29uCkBAIC0wLDAgKzEsMTAg
QEAKK3sKKyAgInByaXZhdGUiOiB0cnVlLAorICAiZGVwZW5kZW5jaWVzIjogeworICAgICJkaXJl
Y3RvciI6ICJ+MS4yLjIiLAorICAgICJoYW5kbGViYXJzIjogIl40LjAuNiIsCisgICAgImpxdWVy
eSI6ICJeMy4xLjEiLAorICAgICJ0b2RvbXZjLWFwcC1jc3MiOiAifjEuMC4xIiwKKyAgICAidG9k
b212Yy1jb21tb24iOiAifjEuMC4xIgorICB9Cit9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9q
cXVlcnkvcmVhZG1lLm1kIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L3JlYWRtZS5tZAppbmRleCA2Mzc0
NjkwYjIzM2FlNmRkMDhkODUyOTg1N2JjOTMyZWZmZDM0NjRlLi5kYWI2Y2YwZTYyMGMyZTZkMjg2
OGVkNjQ0YjllY2JmNjMwYmU5Mjg2IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvcmVh
ZG1lLm1kCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9yZWFkbWUubWQKQEAgLTExLDEwICsxMSwx
MCBAQCBUaGUgW2pRdWVyeSB3ZWJzaXRlXShodHRwOi8vanF1ZXJ5LmNvbSkgaXMgYSBncmVhdCBy
ZXNvdXJjZSBmb3IgZ2V0dGluZyBzdGFydGVkLgogCiBIZXJlIGFyZSBzb21lIGxpbmtzIHlvdSBt
YXkgZmluZCBoZWxwZnVsOgogCi0qIFtIb3cgalF1ZXJ5IFdvcmtzXShodHRwOi8vbGVhcm4uanF1
ZXJ5LmNvbS9hYm91dC1qcXVlcnkvaG93LWpxdWVyeS13b3JrcykKKyogW0xlYXJuaW5nIENlbnRl
cl0oaHR0cDovL2xlYXJuLmpxdWVyeS5jb20vKQogKiBbQVBJIFJlZmVyZW5jZV0oaHR0cDovL2Fw
aS5qcXVlcnkuY29tKQogKiBbUGx1Z2luc10oaHR0cDovL3BsdWdpbnMuanF1ZXJ5LmNvbSkKLSog
W0Jyb3dlciBTdXBwb3J0XShodHRwOi8vanF1ZXJ5LmNvbS9icm93c2VyLXN1cHBvcnQpCisqIFtC
cm93c2VyIFN1cHBvcnRdKGh0dHA6Ly9qcXVlcnkuY29tL2Jyb3dzZXItc3VwcG9ydCkKICogW0Js
b2ddKGh0dHA6Ly9ibG9nLmpxdWVyeS5jb20pCiAKIEFydGljbGVzIGFuZCBndWlkZXMgZnJvbSB0
aGUgY29tbXVuaXR5OgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcHJlYWN0Ly5iYWJlbHJjIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvcHJlYWN0Ly5iYWJlbHJjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiNzJlZDE5ODZkZWI3Nzcw
YjI0NDJkZjNlYTg2MTA5NTZhZWFmMzEKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9w
cmVhY3QvLmJhYmVscmMKQEAgLTAsMCArMSw5IEBACit7CisgICJwcmVzZXRzIjogWworICAgICJl
czIwMTUtbG9vc2UiLAorICAgICJzdGFnZS0wIgorICBdLAorICAicGx1Z2lucyI6IFsKKyAgICBb
InRyYW5zZm9ybS1yZWFjdC1qc3giLCB7ICJwcmFnbWEiOiJoIiB9XQorICBdCit9CmRpZmYgLS1n
aXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9wcmVhY3QvLnRyYXZpcy55bWwgYi9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9wcmVhY3Qv
LnRyYXZpcy55bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTE5MGQzMTgzOTNkMTFlYmY5MmE3YjM1NTRjMzExOWJl
NmFlZGQ5MwotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3ByZWFjdC8udHJhdmlzLnlt
bApAQCAtMCwwICsxLDcgQEAKK2xhbmd1YWdlOiBub2RlX2pzCitub2RlX2pzOgorICAtIDYKK3N1
ZG86IGZhbHNlCitzY3JpcHQ6IG5wbSBydW4gYnVpbGQKK2FmdGVyX3N1Y2Nlc3M6CisgIC0gaWYg
W1sgIiR7VFJBVklTX1BVTExfUkVRVUVTVH0iID09ICJmYWxzZSIgXV07IHRoZW4gbnBtIHJ1biBk
ZXBsb3kgLXM7IGZpCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9wcmVhY3QvUkVBRE1FLm1kIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvcHJlYWN0L1JFQURNRS5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOGJhNjdiODRmNTY3NzM5
YzQyYTRjMzFlZDZjNTdlY2I1NTUxNzI5Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
cHJlYWN0L1JFQURNRS5tZApAQCAtMCwwICsxLDkgQEAKKyMgUHJlYWN0IFRvZG9NVkMKKworWyoq
RGVtbyoqXShodHRwczovL3ByZWFjdC10b2RvbXZjLnN1cmdlLnNoKQorCitUb2RvTVZDIGRvbmUg
aW4gW1ByZWFjdF0uIFRoZSBhcHAgaXMgNmtiIG9mIG1pbmlmaWVkICsgZ3ppcHBlZCBKYXZhU2Ny
aXB0LgorCitUaGlzIGlzIGFuIEVTNiArIFByZWFjdCBwb3J0IG9mIHRoZSBbRVM1ICsgUmVhY3Qg
VG9kb01WQyBleGFtcGxlXShodHRwczovL2dpdGh1Yi5jb20vdGFzdGVqcy90b2RvbXZjL3RyZWUv
Z2gtcGFnZXMvZXhhbXBsZXMvcmVhY3QpLgorCitbcHJlYWN0XTogaHR0cHM6Ly9naXRodWIuY29t
L2RldmVsb3BpdC9wcmVhY3QKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3ByZWFjdC9wYWNrYWdl
Lmpzb24gYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9wcmVhY3QvcGFja2FnZS5qc29uCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQyMTc3
MzliY2FlNzZiMGExNTExODUyMWJjZGFkZTZlYjA2ODcwYzMKLS0tIC9kZXYvbnVsbAorKysgYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9wcmVhY3QvcGFja2FnZS5qc29uCkBAIC0wLDAgKzEsNTIgQEAKK3sKKyAgIm5h
bWUiOiAicHJlYWN0LXRvZG9tdmMiLAorICAidmVyc2lvbiI6ICIwLjIuMCIsCisgICJkZXNjcmlw
dGlvbiI6ICJUb2RvTVZDIGRvbmUgaW4gUHJlYWN0IiwKKyAgIm1haW4iOiAiaW5kZXguanMiLAor
ICAic2NyaXB0cyI6IHsKKyAgICAiZGV2IjogIndlYnBhY2stZGV2LXNlcnZlciIsCisgICAgInN0
YXJ0IjogImh0dHAtc2VydmVyIGJ1aWxkIC1wICR7UE9SVDotODA4MH0iLAorICAgICJwcmVzdGFy
dCI6ICJucG0gcnVuIGJ1aWxkIiwKKyAgICAiYnVpbGQiOiAibnBtIHJ1biAtcyBidWlsZDpyb2xs
dXAiLAorICAgICJidWlsZDp3ZWJwYWNrIjogIm1rZGlycCBidWlsZCAmJiBuY3Agc3JjL2luZGV4
Lmh0bWwgYnVpbGQvaW5kZXguaHRtbCAmJiB3ZWJwYWNrIC1wIiwKKyAgICAiYnVpbGQ6cm9sbHVw
IjogInJtIC1yZiBidWlsZCAmJiBta2RpcnAgYnVpbGQvdG9kb212Yy1jb21tb24gJiYgbmNwIHNy
Yy9pbmRleC5odG1sIGJ1aWxkL2luZGV4Lmh0bWwgJiYgcm9sbHVwIC1jIHJvbGx1cC5jb25maWcu
anMgJiYgY3Agbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jhc2Uue2pzLGNzc30gYnVpbGQv
dG9kb212Yy1jb21tb24vICYmIGNwIG5vZGVfbW9kdWxlcy90b2RvbXZjLWFwcC1jc3MvaW5kZXgu
Y3NzIGJ1aWxkL3RvZG9tdmMuY3NzICYmIG5wbSBydW4gcG9zdGJ1aWxkIiwKKyAgICAicG9zdGJ1
aWxkIjogInVnbGlmeWpzIGJ1aWxkL2FwcC5qcyAtLXB1cmUtZnVuY3MgY2xhc3NDYWxsQ2hlY2sg
T2JqZWN0LmRlZmluZVByb3BlcnR5IE9iamVjdC5mcmVlemUgaW52YXJpYW50IHdhcm5pbmcgLWMg
dW5zYWZlLGNvbGxhcHNlX3ZhcnMsZXZhbHVhdGUsc2NyZXdfaWU4LGxvb3BzLGtlZXBfZmFyZ3M9
ZmFsc2UscHVyZV9nZXR0ZXJzLHVudXNlZCxkZWFkX2NvZGUgLW0gLW8gYnVpbGQvYXBwLmpzIC1w
IHJlbGF0aXZlIC0taW4tc291cmNlLW1hcCBidWlsZC9hcHAuanMubWFwIC0tc291cmNlLW1hcCBi
dWlsZC9hcHAuanMubWFwIiwKKyAgICAiZGVwbG95IjogImdoLXBhZ2VzIC1kIGJ1aWxkIgorICB9
LAorICAia2V5d29yZHMiOiBbCisgICAgInByZWFjdCIKKyAgXSwKKyAgImF1dGhvciI6ICJKYXNv
biBNaWxsZXIgPGphc29uQGRldmVsb3BpdC5jYT4iLAorICAibGljZW5zZSI6ICJNSVQiLAorICAi
ZGV2RGVwZW5kZW5jaWVzIjogeworICAgICJiYWJlbC1jb3JlIjogIl42LjUuMiIsCisgICAgImJh
YmVsLWxvYWRlciI6ICJeNi4yLjMiLAorICAgICJiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWNsYXNz
LXByb3BlcnRpZXMiOiAiXjYuNS4yIiwKKyAgICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1kZWNv
cmF0b3JzLWxlZ2FjeSI6ICJeMS4zLjQiLAorICAgICJiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLXJl
YWN0LWpzeCI6ICJeNi41LjIiLAorICAgICJiYWJlbC1wcmVzZXQtYmFiaWxpIjogIjAuMC45IiwK
KyAgICAiYmFiZWwtcHJlc2V0LWVzMjAxNSI6ICJeNi41LjAiLAorICAgICJiYWJlbC1wcmVzZXQt
ZXMyMDE1LWxvb3NlIjogIl44LjAuMCIsCisgICAgImJhYmVsLXByZXNldC1zdGFnZS0wIjogIl42
LjUuMCIsCisgICAgImNzcy1sb2FkZXIiOiAiXjAuMjYuMCIsCisgICAgImV4dHJhY3QtdGV4dC13
ZWJwYWNrLXBsdWdpbiI6ICJeMS4wLjEiLAorICAgICJnaC1wYWdlcyI6ICJeMC4xMi4wIiwKKyAg
ICAiaHR0cC1zZXJ2ZXIiOiAiXjAuOS4wIiwKKyAgICAibWtkaXJwIjogIl4wLjUuMSIsCisgICAg
Im5jcCI6ICJeMi4wLjAiLAorICAgICJyZXBsYWNlLWJ1bmRsZS13ZWJwYWNrLXBsdWdpbiI6ICJe
MS4wLjAiLAorICAgICJyb2xsdXAiOiAiXjAuMzYuNCIsCisgICAgInJvbGx1cC1wbHVnaW4tYmFi
ZWwiOiAiXjIuNi4xIiwKKyAgICAicm9sbHVwLXBsdWdpbi1jb21tb25qcyI6ICJeNS4wLjUiLAor
ICAgICJyb2xsdXAtcGx1Z2luLW5vZGUtcmVzb2x2ZSI6ICJeMi4wLjAiLAorICAgICJzdHlsZS1s
b2FkZXIiOiAiXjAuMTMuMCIsCisgICAgIndlYnBhY2siOiAiXjEuMTIuMTQiLAorICAgICJ3ZWJw
YWNrLWRldi1zZXJ2ZXIiOiAiXjEuMTQuMSIKKyAgfSwKKyAgImRlcGVuZGVuY2llcyI6IHsKKyAg
ICAicHJlYWN0IjogIl43LjEuMCIsCisgICAgInByZWFjdC1yb3V0ZXIiOiAiXjIuMy4yIiwKKyAg
ICAidG9kb212Yy1hcHAtY3NzIjogIl4yLjAuMyIsCisgICAgInRvZG9tdmMtY29tbW9uIjogIl4x
LjAuMiIKKyAgfQorfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcHJlYWN0L3JvbGx1cC5jb25m
aWcuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9wcmVhY3Qvcm9sbHVwLmNvbmZpZy5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
OGM1OWFhZDU4NThjMGRiMjM0OTVmZjM5ZGRlNWJmM2UyZmE3ODhkCi0tLSAvZGV2L251bGwKKysr
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvcHJlYWN0L3JvbGx1cC5jb25maWcuanMKQEAgLTAsMCArMSwyNyBAQAor
aW1wb3J0IG5vZGVSZXNvbHZlIGZyb20gJ3JvbGx1cC1wbHVnaW4tbm9kZS1yZXNvbHZlJzsKK2lt
cG9ydCBjb21tb25qcyBmcm9tICdyb2xsdXAtcGx1Z2luLWNvbW1vbmpzJzsKK2ltcG9ydCBiYWJl
bCBmcm9tICdyb2xsdXAtcGx1Z2luLWJhYmVsJzsKKworZXhwb3J0IGRlZmF1bHQgeworICAgIGVu
dHJ5OiAnc3JjL2luZGV4LmpzJywKKyAgICBkZXN0OiAnYnVpbGQvYXBwLmpzJywKKyAgICBmb3Jt
YXQ6ICdpaWZlJywKKyAgICBzb3VyY2VNYXA6IHRydWUsCisgICAgZXh0ZXJuYWw6IFtdLAorICAg
IHBsdWdpbnM6IFsKKyAgICAgICAgYmFiZWwoeworICAgICAgICAgICAgYmFiZWxyYzogZmFsc2Us
CisgICAgICAgICAgICBwcmVzZXRzOiBbCisgICAgICAgICAgICAgICAgWydlczIwMTUnLCB7IGxv
b3NlOnRydWUsIG1vZHVsZXM6ZmFsc2UgfV0sCisgICAgICAgICAgICAgICAgJ3N0YWdlLTAnCisg
ICAgICAgICAgICBdLAorICAgICAgICAgICAgcGx1Z2luczogWworICAgICAgICAgICAgICAgIFsn
dHJhbnNmb3JtLXJlYWN0LWpzeCcsIHsgcHJhZ21hOidoJyB9XQorICAgICAgICAgICAgXQorICAg
ICAgICB9KSwKKyAgICAgICAgbm9kZVJlc29sdmUoeworICAgICAgICAgICAganNuZXh0OiB0cnVl
CisgICAgICAgIH0pLAorICAgICAgICBjb21tb25qcygpCisgICAgXQorfTsKZGlmZiAtLWdpdCBh
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL3ByZWFjdC9zcmMvYXBwL2Zvb3Rlci5qcyBiL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3ByZWFj
dC9zcmMvYXBwL2Zvb3Rlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41Y2IwZmY1ZDA5ZjljMjY5N2UxNmI2NWE2
MDVhMDc2NjZmYzg5NmMzCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcHJlYWN0L3Ny
Yy9hcHAvZm9vdGVyLmpzCkBAIC0wLDAgKzEsMzIgQEAKK2ltcG9ydCB7IGgsIENvbXBvbmVudCB9
IGZyb20gJ3ByZWFjdCc7CitpbXBvcnQgeyBwbHVyYWxpemUgfSBmcm9tICcuL3V0aWwnOworCitl
eHBvcnQgZGVmYXVsdCBjbGFzcyBUb2RvRm9vdGVyIGV4dGVuZHMgQ29tcG9uZW50IHsKKyAgICBy
ZW5kZXIoeyBub3dTaG93aW5nLCBjb3VudCwgY29tcGxldGVkQ291bnQsIG9uQ2xlYXJDb21wbGV0
ZWQgfSkgeworICAgICAgICByZXR1cm4gKAorICAgICAgICAgICAgPGZvb3RlciBjbGFzcz0iZm9v
dGVyIj4KKyAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idG9kby1jb3VudCI+CisgICAgICAg
ICAgICAgICAgICAgIDxzdHJvbmc+e2NvdW50fTwvc3Ryb25nPiB7cGx1cmFsaXplKGNvdW50LCAn
aXRlbScpfSBsZWZ0CisgICAgICAgICAgICAgICAgPC9zcGFuPgorICAgICAgICAgICAgICAgIDx1
bCBjbGFzcz0iZmlsdGVycyI+CisgICAgICAgICAgICAgICAgICAgIDxsaT4KKyAgICAgICAgICAg
ICAgICAgICAgICAgIDxhIGhyZWY9IiMvIiBjbGFzcz17bm93U2hvd2luZz09J2FsbCcgJiYgJ3Nl
bGVjdGVkJ30+QWxsPC9hPgorICAgICAgICAgICAgICAgICAgICA8L2xpPgorICAgICAgICAgICAg
ICAgICAgICB7JyAnfQorICAgICAgICAgICAgICAgICAgICA8bGk+CisgICAgICAgICAgICAgICAg
ICAgICAgICA8YSBocmVmPSIjL2FjdGl2ZSIgY2xhc3M9e25vd1Nob3dpbmc9PSdhY3RpdmUnICYm
ICdzZWxlY3RlZCd9PkFjdGl2ZTwvYT4KKyAgICAgICAgICAgICAgICAgICAgPC9saT4KKyAgICAg
ICAgICAgICAgICAgICAgeycgJ30KKyAgICAgICAgICAgICAgICAgICAgPGxpPgorICAgICAgICAg
ICAgICAgICAgICAgICAgPGEgaHJlZj0iIy9jb21wbGV0ZWQiIGNsYXNzPXtub3dTaG93aW5nPT0n
Y29tcGxldGVkJyAmJiAnc2VsZWN0ZWQnfT5Db21wbGV0ZWQ8L2E+CisgICAgICAgICAgICAgICAg
ICAgIDwvbGk+CisgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICB7IGNvbXBs
ZXRlZENvdW50ID4gMCAmJiAoCisgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImNs
ZWFyLWNvbXBsZXRlZCIgb25DbGljaz17b25DbGVhckNvbXBsZXRlZH0+CisgICAgICAgICAgICAg
ICAgICAgICAgICBDbGVhciBjb21wbGV0ZWQKKyAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+
CisgICAgICAgICAgICAgICAgKSB9CisgICAgICAgICAgICA8L2Zvb3Rlcj4KKyAgICAgICAgKTsK
KyAgICB9Cit9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9wcmVhY3Qvc3JjL2FwcC9pbmRleC5q
cyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL3ByZWFjdC9zcmMvYXBwL2luZGV4LmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc2Zjg3
Y2UyOGFiMTYzZTVkM2ZhZDc1ODgzYmJkZWZlNTM4YmY4MjMKLS0tIC9kZXYvbnVsbAorKysgYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9wcmVhY3Qvc3JjL2FwcC9pbmRleC5qcwpAQCAtMCwwICsxLDEzMiBAQAoraW1w
b3J0IHsgaCwgQ29tcG9uZW50IH0gZnJvbSAncHJlYWN0JzsKK2ltcG9ydCBUb2RvTW9kZWwgZnJv
bSAnLi9tb2RlbCc7CitpbXBvcnQgVG9kb0Zvb3RlciBmcm9tICcuL2Zvb3Rlcic7CitpbXBvcnQg
VG9kb0l0ZW0gZnJvbSAnLi9pdGVtJzsKKworY29uc3QgRU5URVJfS0VZID0gMTM7CisKK2NvbnN0
IEZJTFRFUlMgPSB7CisgICAgYWxsOiB0b2RvID0+IHRydWUsCisgICAgYWN0aXZlOiB0b2RvID0+
ICF0b2RvLmNvbXBsZXRlZCwKKyAgICBjb21wbGV0ZWQ6IHRvZG8gPT4gdG9kby5jb21wbGV0ZWQK
K307CisKK2V4cG9ydCBkZWZhdWx0IGNsYXNzIEFwcCBleHRlbmRzIENvbXBvbmVudCB7CisgICAg
Y29uc3RydWN0b3IoKSB7CisgICAgICAgIHN1cGVyKCk7CisgICAgICAgIHRoaXMubW9kZWwgPSBu
ZXcgVG9kb01vZGVsKCdwcmVhY3QtdG9kb3MnLCAoKSA9PiB0aGlzLnNldFN0YXRlKHt9KSApOwor
ICAgICAgICBhZGRFdmVudExpc3RlbmVyKCdoYXNoY2hhbmdlJywgdGhpcy5oYW5kbGVSb3V0ZS5i
aW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5oYW5kbGVSb3V0ZSgpOworICAgIH0KKworICAgIGhh
bmRsZVJvdXRlKCkgeworICAgICAgICBsZXQgbm93U2hvd2luZyA9IFN0cmluZyhsb2NhdGlvbi5o
YXNofHwnJykuc3BsaXQoJy8nKS5wb3AoKTsKKyAgICAgICAgaWYgKCFGSUxURVJTW25vd1Nob3dp
bmddKSB7CisgICAgICAgICAgICBub3dTaG93aW5nID0gJ2FsbCc7CisgICAgICAgIH0KKyAgICAg
ICAgdGhpcy5zZXRTdGF0ZSh7IG5vd1Nob3dpbmcgfSk7CisgICAgfQorCisgICAgaGFuZGxlTmV3
VG9kb0tleURvd24gPSBlID0+IHsKKyAgICAgICAgaWYgKGUua2V5Q29kZSE9PUVOVEVSX0tFWSkg
cmV0dXJuOworICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CisKKyAgICAgICAgLy8gbGV0IHZh
bCA9ICcnOworICAgICAgICAvLyBpZiAodGhpcy5zdGF0ZS5uZXdUb2RvID09PSB1bmRlZmluZWQp
IHsKKyAgICAgICAgLy8gIHZhbCA9IGUudGFyZ2V0LnZhbHVlLnRyaW0oKTsKKyAgICAgICAgLy8g
fQorCisgICAgICAgIGxldCB2YWwgPSBlLnRhcmdldC52YWx1ZS50cmltKCk7CisKKyAgICAgICAg
aWYgKHZhbCkgeworICAgICAgICAgICAgdGhpcy5tb2RlbC5hZGRUb2RvKHZhbCk7CisgICAgICAg
ICAgICB0aGlzLnNldFN0YXRlKHsgbmV3VG9kbzogJycgfSk7CisgICAgICAgIH0KKyAgICB9Owor
CisgICAgdG9nZ2xlQWxsID0gZXZlbnQgPT4geworICAgICAgICBsZXQgY2hlY2tlZCA9IGV2ZW50
LnRhcmdldC5jaGVja2VkOworICAgICAgICB0aGlzLm1vZGVsLnRvZ2dsZUFsbChjaGVja2VkKTsK
KyAgICB9OworCisgICAgdG9nZ2xlID0gdG9kbyA9PiB7CisgICAgICAgIHRoaXMubW9kZWwudG9n
Z2xlKHRvZG8pOworICAgIH07CisKKyAgICBkZXN0cm95ID0gdG9kbyA9PiB7CisgICAgICAgIHRo
aXMubW9kZWwuZGVzdHJveSh0b2RvKTsKKyAgICB9OworCisgICAgZWRpdCA9IHRvZG8gPT4gewor
ICAgICAgICB0aGlzLnNldFN0YXRlKHsgZWRpdGluZzogdG9kby5pZCB9KTsKKyAgICB9OworCisg
ICAgc2F2ZSA9ICh0b2RvVG9TYXZlLCB0ZXh0KSA9PiB7CisgICAgICAgIHRoaXMubW9kZWwuc2F2
ZSh0b2RvVG9TYXZlLCB0ZXh0KTsKKyAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGVkaXRpbmc6IG51
bGwgfSk7CisgICAgfTsKKworICAgIGNhbmNlbCA9ICgpID0+IHsKKyAgICAgICAgdGhpcy5zZXRT
dGF0ZSh7IGVkaXRpbmc6IG51bGwgfSk7CisgICAgfTsKKworICAgIGNsZWFyQ29tcGxldGVkID0g
KCkgPT4geworICAgICAgICB0aGlzLm1vZGVsLmNsZWFyQ29tcGxldGVkKCk7CisgICAgfTsKKwor
ICAgIHJlbmRlcih7IH0sIHsgbm93U2hvd2luZz1BTExfVE9ET1MsIG5ld1RvZG8sIGVkaXRpbmcg
fSkgeworICAgICAgICBsZXQgeyB0b2RvcyB9ID0gdGhpcy5tb2RlbCwKKyAgICAgICAgICAgIHNo
b3duVG9kb3MgPSB0b2Rvcy5maWx0ZXIoIEZJTFRFUlNbbm93U2hvd2luZ10gKSwKKyAgICAgICAg
ICAgIGFjdGl2ZVRvZG9Db3VudCA9IHRvZG9zLnJlZHVjZSggKGEsIHRvZG8pID0+IGEgKyAodG9k
by5jb21wbGV0ZWQgPyAwIDogMSksIDApLAorICAgICAgICAgICAgY29tcGxldGVkQ291bnQgPSB0
b2Rvcy5sZW5ndGggLSBhY3RpdmVUb2RvQ291bnQ7CisKKyAgICAgICAgcmV0dXJuICgKKyAgICAg
ICAgICAgIDxkaXY+CisgICAgICAgICAgICAgICAgPGhlYWRlciBjbGFzcz0iaGVhZGVyIj4KKyAg
ICAgICAgICAgICAgICAgICAgPGgxPnRvZG9zPC9oMT4KKyAgICAgICAgICAgICAgICAgICAgPGlu
cHV0CisgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0ibmV3LXRvZG8iCisgICAgICAgICAg
ICAgICAgICAgICAgICBwbGFjZWhvbGRlcj0iV2hhdCBuZWVkcyB0byBiZSBkb25lPyIKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHZhbHVlPXtuZXdUb2RvfQorICAgICAgICAgICAgICAgICAgICAg
ICAgb25LZXlEb3duPXt0aGlzLmhhbmRsZU5ld1RvZG9LZXlEb3dufQorICAgICAgICAgICAgICAg
ICAgICAgICAgb25JbnB1dD17dGhpcy5saW5rU3RhdGUoJ25ld1RvZG8nKX0KKyAgICAgICAgICAg
ICAgICAgICAgICAgIGF1dG9Gb2N1cz17dHJ1ZX0KKyAgICAgICAgICAgICAgICAgICAgLz4KKyAg
ICAgICAgICAgICAgICA8L2hlYWRlcj4KKworICAgICAgICAgICAgICAgIHsgdG9kb3MubGVuZ3Ro
ID8gKAorICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ibWFpbiI+CisgICAgICAg
ICAgICAgICAgICAgICAgICA8aW5wdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFz
cz0idG9nZ2xlLWFsbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSJjaGVja2Jv
eCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17dGhpcy50b2dnbGVBbGx9
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17YWN0aXZlVG9kb0NvdW50ID09
PSAwfQorICAgICAgICAgICAgICAgICAgICAgICAgLz4KKyAgICAgICAgICAgICAgICAgICAgICAg
IDx1bCBjbGFzcz0idG9kby1saXN0Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNo
b3duVG9kb3MubWFwKCB0b2RvID0+ICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PFRvZG9JdGVtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvPXt0b2Rv
fQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Ub2dnbGU9e3RoaXMudG9n
Z2xlfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25EZXN0cm95PXt0aGlz
LmRlc3Ryb3l9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkVkaXQ9e3Ro
aXMuZWRpdH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRpbmc9e2Vk
aXRpbmcgPT09IHRvZG8uaWR9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBv
blNhdmU9e3RoaXMuc2F2ZX0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9u
Q2FuY2VsPXt0aGlzLmNhbmNlbH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz4K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICApKSB9CisgICAgICAgICAgICAgICAgICAgICAg
ICA8L3VsPgorICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CisgICAgICAgICAgICAgICAg
KSA6IG51bGwgfQorCisgICAgICAgICAgICAgICAgeyAoYWN0aXZlVG9kb0NvdW50IHx8IGNvbXBs
ZXRlZENvdW50KSA/ICgKKyAgICAgICAgICAgICAgICAgICAgPFRvZG9Gb290ZXIKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNvdW50PXthY3RpdmVUb2RvQ291bnR9CisgICAgICAgICAgICAgICAg
ICAgICAgICBjb21wbGV0ZWRDb3VudD17Y29tcGxldGVkQ291bnR9CisgICAgICAgICAgICAgICAg
ICAgICAgICBub3dTaG93aW5nPXtub3dTaG93aW5nfQorICAgICAgICAgICAgICAgICAgICAgICAg
b25DbGVhckNvbXBsZXRlZD17dGhpcy5jbGVhckNvbXBsZXRlZH0KKyAgICAgICAgICAgICAgICAg
ICAgLz4KKyAgICAgICAgICAgICAgICApIDogbnVsbCB9CisgICAgICAgICAgICA8L2Rpdj4KKyAg
ICAgICAgKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9wcmVhY3Qvc3JjL2Fw
cC9pdGVtLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcHJlYWN0L3NyYy9hcHAvaXRlbS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45ODU0MDIyZGFmOTMzMGZmMGE4NGY5NjMxM2Y4OWM3NWE5NWMyODNhCi0tLSAvZGV2L251bGwK
KysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvcHJlYWN0L3NyYy9hcHAvaXRlbS5qcwpAQCAtMCwwICsxLDg0IEBA
CitpbXBvcnQgeyBoLCBDb21wb25lbnQgfSBmcm9tICdwcmVhY3QnOworCitjb25zdCBFU0NBUEVf
S0VZID0gMjc7Citjb25zdCBFTlRFUl9LRVkgPSAxMzsKKworZXhwb3J0IGRlZmF1bHQgY2xhc3Mg
VG9kb0l0ZW0gZXh0ZW5kcyBDb21wb25lbnQgeworICAgIGhhbmRsZVN1Ym1pdCA9ICgpID0+IHsK
KyAgICAgICAgbGV0IHsgb25TYXZlLCBvbkRlc3Ryb3ksIHRvZG8gfSA9IHRoaXMucHJvcHMsCisg
ICAgICAgICAgICB2YWwgPSB0aGlzLnN0YXRlLmVkaXRUZXh0LnRyaW0oKTsKKyAgICAgICAgaWYg
KHZhbCkgeworICAgICAgICAgICAgb25TYXZlKHRvZG8sIHZhbCk7CisgICAgICAgICAgICB0aGlz
LnNldFN0YXRlKHsgZWRpdFRleHQ6IHZhbCB9KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgIG9uRGVzdHJveSh0b2RvKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICBo
YW5kbGVFZGl0ID0gKCkgPT4geworICAgICAgICBsZXQgeyBvbkVkaXQsIHRvZG8gfSA9IHRoaXMu
cHJvcHM7CisgICAgICAgIG9uRWRpdCh0b2RvKTsKKyAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGVk
aXRUZXh0OiB0b2RvLnRpdGxlIH0pOworICAgIH07CisKKyAgICB0b2dnbGUgPSBlID0+IHsKKyAg
ICAgICAgbGV0IHsgb25Ub2dnbGUsIHRvZG8gfSA9IHRoaXMucHJvcHM7CisgICAgICAgIG9uVG9n
Z2xlKHRvZG8pOworICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CisgICAgfTsKKworICAgIGhh
bmRsZUtleURvd24gPSBlID0+IHsKKyAgICAgICAgaWYgKGUud2hpY2g9PT1FU0NBUEVfS0VZKSB7
CisgICAgICAgICAgICBsZXQgeyB0b2RvIH0gPSB0aGlzLnByb3BzOworICAgICAgICAgICAgdGhp
cy5zZXRTdGF0ZSh7IGVkaXRUZXh0OiB0b2RvLnRpdGxlIH0pOworICAgICAgICAgICAgdGhpcy5w
cm9wcy5vbkNhbmNlbCh0b2RvKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChlLndoaWNo
PT09RU5URVJfS0VZKSB7CisgICAgICAgICAgICB0aGlzLmhhbmRsZVN1Ym1pdCgpOworICAgICAg
ICB9CisgICAgfTsKKyAgICAKKyAgICBoYW5kbGVEZXN0cm95ID0gKCkgPT4geworICAgICAgICB0
aGlzLnByb3BzLm9uRGVzdHJveSh0aGlzLnByb3BzLnRvZG8pOworICAgIH07CisKKyAgICAvLyBz
aG91bGRDb21wb25lbnRVcGRhdGUoeyB0b2RvLCBlZGl0aW5nLCBlZGl0VGV4dCB9KSB7CisgICAg
Ly8gIHJldHVybiAoCisgICAgLy8gICAgICB0b2RvICE9PSB0aGlzLnByb3BzLnRvZG8gfHwKKyAg
ICAvLyAgICAgIGVkaXRpbmcgIT09IHRoaXMucHJvcHMuZWRpdGluZyB8fAorICAgIC8vICAgICAg
ZWRpdFRleHQgIT09IHRoaXMuc3RhdGUuZWRpdFRleHQKKyAgICAvLyAgKTsKKyAgICAvLyB9CisK
KyAgICBjb21wb25lbnREaWRVcGRhdGUoKSB7CisgICAgICAgIGxldCBub2RlID0gdGhpcy5iYXNl
ICYmIHRoaXMuYmFzZS5xdWVyeVNlbGVjdG9yKCcuZWRpdCcpOworICAgICAgICBpZiAobm9kZSkg
bm9kZS5mb2N1cygpOworICAgIH0KKworICAgIHJlbmRlcih7IHRvZG86eyB0aXRsZSwgY29tcGxl
dGVkIH0sIG9uVG9nZ2xlLCBvbkRlc3Ryb3ksIGVkaXRpbmcgfSwgeyBlZGl0VGV4dCB9KSB7Cisg
ICAgICAgIHJldHVybiAoCisgICAgICAgICAgICA8bGkgY2xhc3M9e3sgY29tcGxldGVkLCBlZGl0
aW5nIH19PgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InZpZXciPgorICAgICAgICAgICAg
ICAgICAgICA8aW5wdXQKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJ0b2dnbGUiCisg
ICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSJjaGVja2JveCIKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNoZWNrZWQ9e2NvbXBsZXRlZH0KKyAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hh
bmdlPXt0aGlzLnRvZ2dsZX0KKyAgICAgICAgICAgICAgICAgICAgLz4KKyAgICAgICAgICAgICAg
ICAgICAgPGxhYmVsIG9uRGJsQ2xpY2s9e3RoaXMuaGFuZGxlRWRpdH0+e3RpdGxlfTwvbGFiZWw+
CisgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImRlc3Ryb3kiIG9uQ2xpY2s9e3Ro
aXMuaGFuZGxlRGVzdHJveX0gLz4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAg
ICAgICB7IGVkaXRpbmcgJiYgKAorICAgICAgICAgICAgICAgICAgICA8aW5wdXQKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNsYXNzPSJlZGl0IgorICAgICAgICAgICAgICAgICAgICAgICAgdmFs
dWU9e2VkaXRUZXh0fQorICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyPXt0aGlzLmhhbmRs
ZVN1Ym1pdH0KKyAgICAgICAgICAgICAgICAgICAgICAgIG9uSW5wdXQ9e3RoaXMubGlua1N0YXRl
KCdlZGl0VGV4dCcpfQorICAgICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXt0aGlzLmhh
bmRsZUtleURvd259CisgICAgICAgICAgICAgICAgICAgIC8+CisgICAgICAgICAgICAgICAgKSB9
CisgICAgICAgICAgICA8L2xpPgorICAgICAgICApOworICAgIH0KK30KZGlmZiAtLWdpdCBhL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL3ByZWFjdC9zcmMvYXBwL21vZGVsLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcHJlYWN0L3Ny
Yy9hcHAvbW9kZWwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmM4YWFlMWQ1MWEwYzQzMWI4YmYyODQ4ZGM0OTlh
YjQzNzc2OTQzNQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3ByZWFjdC9zcmMvYXBw
L21vZGVsLmpzCkBAIC0wLDAgKzEsNTQgQEAKK2ltcG9ydCB7IHV1aWQsIHN0b3JlIH0gZnJvbSAn
Li91dGlsJzsKKworZXhwb3J0IGRlZmF1bHQgY2xhc3MgVG9kb01vZGVsIHsKKyAgICBjb25zdHJ1
Y3RvcihrZXksIHN1YikgeworICAgICAgICB0aGlzLmtleSA9IGtleTsKKyAgICAgICAgdGhpcy50
b2RvcyA9IHN0b3JlKGtleSkgfHwgW107CisgICAgICAgIHRoaXMub25DaGFuZ2VzID0gW3N1Yl07
CisgICAgfQorCisgICAgaW5mb3JtKCkgeworICAgICAgICBzdG9yZSh0aGlzLmtleSwgdGhpcy50
b2Rvcyk7CisgICAgICAgIHRoaXMub25DaGFuZ2VzLmZvckVhY2goIGNiID0+IGNiKCkgKTsKKyAg
ICB9CisKKyAgICBhZGRUb2RvKHRpdGxlKSB7CisgICAgICAgIHRoaXMudG9kb3MgPSB0aGlzLnRv
ZG9zLmNvbmNhdCh7CisgICAgICAgICAgICBpZDogdXVpZCgpLAorICAgICAgICAgICAgdGl0bGUs
CisgICAgICAgICAgICBjb21wbGV0ZWQ6IGZhbHNlCisgICAgICAgIH0pOworICAgICAgICB0aGlz
LmluZm9ybSgpOworICAgIH0KKworICAgIHRvZ2dsZUFsbChjb21wbGV0ZWQpIHsKKyAgICAgICAg
dGhpcy50b2RvcyA9IHRoaXMudG9kb3MubWFwKAorICAgICAgICAgICAgdG9kbyA9PiAoeyAuLi50
b2RvLCBjb21wbGV0ZWQgfSkKKyAgICAgICAgKTsKKyAgICAgICAgdGhpcy5pbmZvcm0oKTsKKyAg
ICB9CisKKyAgICB0b2dnbGUodG9kb1RvVG9nZ2xlKSB7CisgICAgICAgIHRoaXMudG9kb3MgPSB0
aGlzLnRvZG9zLm1hcCggdG9kbyA9PiAoCisgICAgICAgICAgICB0b2RvICE9PSB0b2RvVG9Ub2dn
bGUgPyB0b2RvIDogKHsgLi4udG9kbywgY29tcGxldGVkOiAhdG9kby5jb21wbGV0ZWQgfSkKKyAg
ICAgICAgKSApOworICAgICAgICB0aGlzLmluZm9ybSgpOworICAgIH0KKworICAgIGRlc3Ryb3ko
dG9kbykgeworICAgICAgICB0aGlzLnRvZG9zID0gdGhpcy50b2Rvcy5maWx0ZXIoIHQgPT4gdCAh
PT0gdG9kbyApOworICAgICAgICB0aGlzLmluZm9ybSgpOworICAgIH0KKworICAgIHNhdmUodG9k
b1RvU2F2ZSwgdGl0bGUpIHsKKyAgICAgICAgdGhpcy50b2RvcyA9IHRoaXMudG9kb3MubWFwKCB0
b2RvID0+ICgKKyAgICAgICAgICAgIHRvZG8gIT09IHRvZG9Ub1NhdmUgPyB0b2RvIDogKHsgLi4u
dG9kbywgdGl0bGUgfSkKKyAgICAgICAgKSk7CisgICAgICAgIHRoaXMuaW5mb3JtKCk7CisgICAg
fQorCisgICAgY2xlYXJDb21wbGV0ZWQoKSB7CisgICAgICAgIHRoaXMudG9kb3MgPSB0aGlzLnRv
ZG9zLmZpbHRlciggdG9kbyA9PiAhdG9kby5jb21wbGV0ZWQgKTsKKyAgICAgICAgdGhpcy5pbmZv
cm0oKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9wcmVhY3Qvc3JjL2FwcC91
dGlsLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvcHJlYWN0L3NyYy9hcHAvdXRpbC5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45
MmUyNzE2YjIyMTBiMGVlYmI1MjYwODk5ZjQxMThkOTQ3MWRlNDk4Ci0tLSAvZGV2L251bGwKKysr
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvcHJlYWN0L3NyYy9hcHAvdXRpbC5qcwpAQCAtMCwwICsxLDIzIEBACitl
eHBvcnQgZnVuY3Rpb24gdXVpZCgpIHsKKyAgICBsZXQgdXVpZCA9ICcnOworICAgIGZvciAobGV0
IGk9MDsgaTwzMjsgaSsrKSB7CisgICAgICAgIGxldCByYW5kb20gPSBNYXRoLnJhbmRvbSgpICog
MTYgfCAwOworICAgICAgICBpZiAoaSA9PT0gOCB8fCBpID09PSAxMiB8fCBpID09PSAxNiB8fCBp
ID09PSAyMCkgeworICAgICAgICAgICAgdXVpZCArPSAnLSc7CisgICAgICAgIH0KKyAgICAgICAg
dXVpZCArPSAoaSA9PT0gMTIgPyA0IDogKGkgPT09IDE2ID8gKHJhbmRvbSAmIDMgfCA4KSA6IHJh
bmRvbSkpLnRvU3RyaW5nKDE2KTsKKyAgICB9CisgICAgcmV0dXJuIHV1aWQ7Cit9CisKK2V4cG9y
dCBmdW5jdGlvbiBwbHVyYWxpemUoY291bnQsIHdvcmQpIHsKKyAgICByZXR1cm4gY291bnQgPT09
IDEgPyB3b3JkIDogd29yZCArICdzJzsKK30KKworZXhwb3J0IGZ1bmN0aW9uIHN0b3JlKG5hbWVz
cGFjZSwgZGF0YSkgeworICAgIC8vIGlmIChkYXRhKSByZXR1cm4gbG9jYWxTdG9yYWdlW25hbWVz
cGFjZV0gPSBKU09OLnN0cmluZ2lmeShkYXRhKTsKKworICAgIC8vIGxldCBzdG9yZSA9IGxvY2Fs
U3RvcmFnZVtuYW1lc3BhY2VdOworICAgIC8vIHJldHVybiBzdG9yZSAmJiBKU09OLnBhcnNlKHN0
b3JlKSB8fCBbXTsKKyAgICByZXR1cm4gW107Cit9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9w
cmVhY3Qvc3JjL2luZGV4Lmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9wcmVhY3Qvc3JjL2luZGV4Lmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNzhlNWRmZjgwN2E1ZDQ4NzdkMWJmYTRmYTVmM2Y4ODBlOGRhNjQyMgotLS0g
L2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3ByZWFjdC9zcmMvaW5kZXguaHRtbApAQCAtMCww
ICsxLDE4IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sIGxhbmc9ImVuIiBkYXRhLWZyYW1ld29y
az0icHJlYWN0Ij4KKyAgICA8aGVhZD4KKyAgICAgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgor
ICAgICAgICA8dGl0bGU+UHJlYWN0IOKAoiBUb2RvTVZDPC90aXRsZT4KKyAgICAgICAgPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSJ0b2RvbXZjLWNvbW1vbi9iYXNlLmNzcyI+CisgICAgICAg
IDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0idG9kb212Yy5jc3MiPgorICAgIDwvaGVhZD4K
KyAgICA8Ym9keT4KKyAgICAgICAgPHNlY3Rpb24gY2xhc3M9InRvZG9hcHAiPjwvc2VjdGlvbj4K
KyAgICAgICAgPGZvb3RlciBjbGFzcz0iaW5mbyI+CisgICAgICAgICAgICA8cD5Eb3VibGUtY2xp
Y2sgdG8gZWRpdCBhIHRvZG88L3A+CisgICAgICAgICAgICA8cD5DcmVhdGVkIGJ5IDxhIGhyZWY9
Imh0dHA6Ly9naXRodWIuY29tL3BldGVodW50LyI+cGV0ZWh1bnQ8L2E+PC9wPgorICAgICAgICAg
ICAgPHA+UGFydCBvZiA8YSBocmVmPSJodHRwOi8vdG9kb212Yy5jb20iPlRvZG9NVkM8L2E+PC9w
PgorICAgICAgICA8L2Zvb3Rlcj4KKyAgICAgICAgPHNjcmlwdCBzcmM9ImFwcC5qcyI+PC9zY3Jp
cHQ+CisgICAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcHJlYWN0
L3NyYy9pbmRleC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3ByZWFjdC9zcmMvaW5kZXguanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNTZiYzUxZmRmMTYwZmYyNmViMTVhMDMyMGRhM2NiNmZjNTNjMDMxMwotLS0gL2Rldi9udWxs
CisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL3ByZWFjdC9zcmMvaW5kZXguanMKQEAgLTAsMCArMSw2IEBACitp
bXBvcnQgeyBoLCByZW5kZXIgfSBmcm9tICdwcmVhY3QnOworaW1wb3J0IEFwcCBmcm9tICcuL2Fw
cCc7CisvLyBpbXBvcnQgJ3RvZG9tdmMtY29tbW9uJzsKKy8vIGltcG9ydCAndG9kb212Yy1jb21t
b24vYmFzZS5jc3MnOworLy8gaW1wb3J0ICd0b2RvbXZjLWFwcC1jc3MvaW5kZXguY3NzJzsKK3Jl
bmRlcig8QXBwIC8+LCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcudG9kb2FwcCcpKTsKZGlmZiAt
LWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL3ByZWFjdC93ZWJwYWNrLmNvbmZpZy5iYWJlbC5qcyBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL3ByZWFjdC93ZWJwYWNrLmNvbmZpZy5iYWJlbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYTcyZTRj
NzA5NmE0NjhjNWM4OTM3MTA2ZWUxMjUyYzQyMmI4NjNiCi0tLSAvZGV2L251bGwKKysrIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvcHJlYWN0L3dlYnBhY2suY29uZmlnLmJhYmVsLmpzCkBAIC0wLDAgKzEsMzkgQEAK
K2ltcG9ydCBFeHRyYWN0VGV4dFBsdWdpbiBmcm9tICdleHRyYWN0LXRleHQtd2VicGFjay1wbHVn
aW4nOworaW1wb3J0IFJlcGxhY2VQbHVnaW4gZnJvbSAncmVwbGFjZS1idW5kbGUtd2VicGFjay1w
bHVnaW4nOworCittb2R1bGUuZXhwb3J0cyA9IHsKKyAgICBlbnRyeTogeworICAgICAgICBhcHA6
ICcuL3NyYy9pbmRleC5qcycsCisgICAgICAgICd0b2RvbXZjLWNvbW1vbic6ICd0b2RvbXZjLWNv
bW1vbicKKyAgICB9LAorICAgIG91dHB1dDogeworICAgICAgICBwYXRoOiAnLi9idWlsZCcsCisg
ICAgICAgIGZpbGVuYW1lOiAnW25hbWVdLmpzJworICAgIH0sCisgICAgbW9kdWxlOiB7CisgICAg
ICAgIGxvYWRlcnM6IFsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0ZXN0OiAvXC5q
c3g/JC8sCisgICAgICAgICAgICAgICAgZXhjbHVkZTogL25vZGVfbW9kdWxlcy8sCisgICAgICAg
ICAgICAgICAgbG9hZGVyOiAnYmFiZWwnCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIHRlc3Q6IC9cLmNzcyQvLAorICAgICAgICAgICAgICAgIGxvYWRlcjog
RXh0cmFjdFRleHRQbHVnaW4uZXh0cmFjdCgnc3R5bGUnLCAnY3NzP3NvdXJjZU1hcCcpCisgICAg
ICAgICAgICB9CisgICAgICAgIF0KKyAgICB9LAorICAgIHBsdWdpbnM6IFsKKyAgICAgICAgbmV3
IEV4dHJhY3RUZXh0UGx1Z2luKCdzdHlsZS5jc3MnLCB7IGFsbENodW5rczogdHJ1ZSB9KSwKKyAg
ICAgICAgbmV3IFJlcGxhY2VQbHVnaW4oW3sKKyAgICAgICAgICAgIC8vIHRoaXMgaXMgYWN0dWFs
bHkgdGhlIHByb3BlcnR5IG5hbWUgaHR0cHM6Ly9naXRodWIuY29tL2tpbWhvdS9yZXBsYWNlLWJ1
bmRsZS13ZWJwYWNrLXBsdWdpbi9pc3N1ZXMvMQorICAgICAgICAgICAgcGFydHRlbjogL3Rocm93
XHMrKG5ld1xzKyk/W2EtekEtWl0rRXJyb3JccypcKC9nLAorICAgICAgICAgICAgcmVwbGFjZW1l
bnQ6ICgpID0+ICdyZXR1cm47KCcKKyAgICAgICAgfV0pCisgICAgXSwKKyAgICBkZXZ0b29sOiAn
c291cmNlLW1hcCcsCisgICAgZGV2U2VydmVyOiB7CisgICAgICAgIHBvcnQ6IHByb2Nlc3MuZW52
LlBPUlQgfHwgODA4MCwKKyAgICAgICAgY29udGVudEJhc2U6ICcuL3NyYycKKyAgICB9Cit9Owpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgvUkVBRE1FLm1kIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvcmVhY3QtcmVkdXgvUkVBRE1FLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmViZDBhYzUwYjJlYzYzZmNmNGUw
NGU2YzMzODQ2MmY5NzE0MDQ5MmQKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFj
dC1yZWR1eC9SRUFETUUubWQKQEAgLTAsMCArMSwzMyBAQAorIyBSZWR1eCBUb2RvTVZDIEV4YW1w
bGUKKworVGhpcyBwcm9qZWN0IHRlbXBsYXRlIHdhcyBidWlsdCB3aXRoIFtDcmVhdGUgUmVhY3Qg
QXBwXShodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2tpbmN1YmF0b3IvY3JlYXRlLXJlYWN0LWFw
cCkuCisKKyMjIEF2YWlsYWJsZSBTY3JpcHRzCisKK0luIHRoZSBwcm9qZWN0IGRpcmVjdG9yeSwg
eW91IGNhbiBydW46CisKKyMjIyBgbnBtIHN0YXJ0YAorCitSdW5zIHRoZSBhcHAgaW4gdGhlIGRl
dmVsb3BtZW50IG1vZGUuPGJyPgorT3BlbiBbaHR0cDovL2xvY2FsaG9zdDozMDAwXShodHRwOi8v
bG9jYWxob3N0OjMwMDApIHRvIHZpZXcgaXQgaW4gdGhlIGJyb3dzZXIuCisKK1RoZSBwYWdlIHdp
bGwgcmVsb2FkIGlmIHlvdSBtYWtlIGVkaXRzLjxicj4KK1lvdSB3aWxsIGFsc28gc2VlIGFueSBs
aW50IGVycm9ycyBpbiB0aGUgY29uc29sZS4KKworIyMjIGBucG0gcnVuIGJ1aWxkYAorCitCdWls
ZHMgdGhlIGFwcCBmb3IgcHJvZHVjdGlvbiB0byB0aGUgYGJ1aWxkYCBmb2xkZXIuPGJyPgorSXQg
Y29ycmVjdGx5IGJ1bmRsZXMgUmVhY3QgaW4gcHJvZHVjdGlvbiBtb2RlIGFuZCBvcHRpbWl6ZXMg
dGhlIGJ1aWxkIGZvciB0aGUgYmVzdCBwZXJmb3JtYW5jZS4KKworVGhlIGJ1aWxkIGlzIG1pbmlm
aWVkIGFuZCB0aGUgZmlsZW5hbWVzIGluY2x1ZGUgdGhlIGhhc2hlcy48YnI+CitZb3VyIGFwcCBp
cyByZWFkeSB0byBiZSBkZXBsb3llZCEKKworIyMjIGBucG0gcnVuIGVqZWN0YAorCisqKk5vdGU6
IHRoaXMgaXMgYSBvbmUtd2F5IG9wZXJhdGlvbi4gT25jZSB5b3UgYGVqZWN0YCwgeW91IGNhbuKA
mXQgZ28gYmFjayEqKgorCitJZiB5b3UgYXJlbuKAmXQgc2F0aXNmaWVkIHdpdGggdGhlIGJ1aWxk
IHRvb2wgYW5kIGNvbmZpZ3VyYXRpb24gY2hvaWNlcywgeW91IGNhbiBgZWplY3RgIGF0IGFueSB0
aW1lLiBUaGlzIGNvbW1hbmQgd2lsbCByZW1vdmUgdGhlIHNpbmdsZSBidWlsZCBkZXBlbmRlbmN5
IGZyb20geW91ciBwcm9qZWN0LgorCitJbnN0ZWFkLCBpdCB3aWxsIGNvcHkgYWxsIHRoZSBjb25m
aWd1cmF0aW9uIGZpbGVzIGFuZCB0aGUgdHJhbnNpdGl2ZSBkZXBlbmRlbmNpZXMgKFdlYnBhY2ss
IEJhYmVsLCBFU0xpbnQsIGV0YykgcmlnaHQgaW50byB5b3VyIHByb2plY3Qgc28geW91IGhhdmUg
ZnVsbCBjb250cm9sIG92ZXIgdGhlbS4gQWxsIG9mIHRoZSBjb21tYW5kcyBleGNlcHQgYGVqZWN0
YCB3aWxsIHN0aWxsIHdvcmssIGJ1dCB0aGV5IHdpbGwgcG9pbnQgdG8gdGhlIGNvcGllZCBzY3Jp
cHRzIHNvIHlvdSBjYW4gdHdlYWsgdGhlbS4gQXQgdGhpcyBwb2ludCB5b3XigJlyZSBvbiB5b3Vy
IG93bi4KKworWW91IGRvbuKAmXQgaGF2ZSB0byBldmVyIHVzZSBgZWplY3RgLiBUaGUgY3VyYXRl
ZCBmZWF0dXJlIHNldCBpcyBzdWl0YWJsZSBmb3Igc21hbGwgYW5kIG1pZGRsZSBkZXBsb3ltZW50
cywgYW5kIHlvdSBzaG91bGRu4oCZdCBmZWVsIG9ibGlnYXRlZCB0byB1c2UgdGhpcyBmZWF0dXJl
LiBIb3dldmVyIHdlIHVuZGVyc3RhbmQgdGhhdCB0aGlzIHRvb2wgd291bGRu4oCZdCBiZSB1c2Vm
dWwgaWYgeW91IGNvdWxkbuKAmXQgY3VzdG9taXplIGl0IHdoZW4geW91IGFyZSByZWFkeSBmb3Ig
aXQuCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9wYWNrYWdlLmpzb24gYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9wYWNrYWdlLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmYwN2MxMzU4
MzZiZTExNzlkNjYzNjIzNjI2MDJmNGMzYTMyOGZlYgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL3JlYWN0LXJlZHV4L3BhY2thZ2UuanNvbgpAQCAtMCwwICsxLDI0IEBACit7CisgICJu
YW1lIjogInRvZG9tdmMiLAorICAidmVyc2lvbiI6ICIwLjAuMSIsCisgICJwcml2YXRlIjogdHJ1
ZSwKKyAgImRldkRlcGVuZGVuY2llcyI6IHsKKyAgICAiZW56eW1lIjogIl4yLjQuMSIsCisgICAg
InJlYWN0LWFkZG9ucy10ZXN0LXV0aWxzIjogIl4xNS4zLjAiLAorICAgICJyZWFjdC1zY3JpcHRz
IjogIl4wLjYuMCIKKyAgfSwKKyAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAiY2xhc3NuYW1lcyI6
ICJeMi4yLjUiLAorICAgICJyZWFjdCI6ICJeMTUuMy4wIiwKKyAgICAicmVhY3QtZG9tIjogIl4x
NS4zLjAiLAorICAgICJyZWFjdC1yZWR1eCI6ICJeNC40LjUiLAorICAgICJyZWR1eCI6ICJeMy41
LjIiLAorICAgICJ0b2RvbXZjLWFwcC1jc3MiOiAiXjIuMC42IgorICB9LAorICAic2NyaXB0cyI6
IHsKKyAgICAic3RhcnQiOiAicmVhY3Qtc2NyaXB0cyBzdGFydCIsCisgICAgImJ1aWxkIjogInJl
YWN0LXNjcmlwdHMgYnVpbGQiLAorICAgICJlamVjdCI6ICJyZWFjdC1zY3JpcHRzIGVqZWN0IiwK
KyAgICAidGVzdCI6ICJyZWFjdC1zY3JpcHRzIHRlc3QiCisgIH0KK30KZGlmZiAtLWdpdCBhL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL3JlYWN0LXJlZHV4L3B1YmxpYy9pbmRleC5odG1sIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVh
Y3QtcmVkdXgvcHVibGljL2luZGV4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzhiY2NmZWVjYTJlMjI5YzI2
NjBiYjc4NWE2Mjg1YTQ5NzA4Yjg0MQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Jl
YWN0LXJlZHV4L3B1YmxpYy9pbmRleC5odG1sCkBAIC0wLDAgKzEsMjEgQEAKKzwhZG9jdHlwZSBo
dG1sPgorPGh0bWwgbGFuZz0iZW4iPgorICA8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+CisgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0
aCwgaW5pdGlhbC1zY2FsZT0xIj4KKyAgICA8dGl0bGU+UmVkdXggVG9kb01WQyBFeGFtcGxlPC90
aXRsZT4KKyAgPC9oZWFkPgorICA8Ym9keT4KKyAgICA8ZGl2IGNsYXNzPSJ0b2RvYXBwIiBpZD0i
cm9vdCI+PC9kaXY+CisgICAgPCEtLQorICAgICAgVGhpcyBIVE1MIGZpbGUgaXMgYSB0ZW1wbGF0
ZS4KKyAgICAgIElmIHlvdSBvcGVuIGl0IGRpcmVjdGx5IGluIHRoZSBicm93c2VyLCB5b3Ugd2ls
bCBzZWUgYW4gZW1wdHkgcGFnZS4KKworICAgICAgWW91IGNhbiBhZGQgd2ViZm9udHMsIG1ldGEg
dGFncywgb3IgYW5hbHl0aWNzIHRvIHRoaXMgZmlsZS4KKyAgICAgIFRoZSBidWlsZCBzdGVwIHdp
bGwgcGxhY2UgdGhlIGJ1bmRsZWQgc2NyaXB0cyBpbnRvIHRoZSA8Ym9keT4gdGFnLgorCisgICAg
ICBUbyBiZWdpbiB0aGUgZGV2ZWxvcG1lbnQsIHJ1biBgbnBtIHN0YXJ0YCBpbiB0aGlzIGZvbGRl
ci4KKyAgICAgIFRvIGNyZWF0ZSBhIHByb2R1Y3Rpb24gYnVuZGxlLCB1c2UgYG5wbSBydW4gYnVp
bGRgLgorICAgIC0tPgorICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9yZWFjdC1yZWR1eC9zcmMvYWN0aW9ucy9pbmRleC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJl
ZHV4L3NyYy9hY3Rpb25zL2luZGV4LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdkMDIzYjQ2ZGZlN2ZiOTBiZDY2
OTUwZTA0OGQzNzEzYTQ2MjU0OTMKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFj
dC1yZWR1eC9zcmMvYWN0aW9ucy9pbmRleC5qcwpAQCAtMCwwICsxLDggQEAKK2ltcG9ydCAqIGFz
IHR5cGVzIGZyb20gJy4uL2NvbnN0YW50cy9BY3Rpb25UeXBlcycKKworZXhwb3J0IGNvbnN0IGFk
ZFRvZG8gPSB0ZXh0ID0+ICh7IHR5cGU6IHR5cGVzLkFERF9UT0RPLCB0ZXh0IH0pCitleHBvcnQg
Y29uc3QgZGVsZXRlVG9kbyA9IGlkID0+ICh7IHR5cGU6IHR5cGVzLkRFTEVURV9UT0RPLCBpZCB9
KQorZXhwb3J0IGNvbnN0IGVkaXRUb2RvID0gKGlkLCB0ZXh0KSA9PiAoeyB0eXBlOiB0eXBlcy5F
RElUX1RPRE8sIGlkLCB0ZXh0IH0pCitleHBvcnQgY29uc3QgY29tcGxldGVUb2RvID0gaWQgPT4g
KHsgdHlwZTogdHlwZXMuQ09NUExFVEVfVE9ETywgaWQgfSkKK2V4cG9ydCBjb25zdCBjb21wbGV0
ZUFsbCA9ICgpID0+ICh7IHR5cGU6IHR5cGVzLkNPTVBMRVRFX0FMTCB9KQorZXhwb3J0IGNvbnN0
IGNsZWFyQ29tcGxldGVkID0gKCkgPT4gKHsgdHlwZTogdHlwZXMuQ0xFQVJfQ09NUExFVEVEIH0p
CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9zcmMvYWN0aW9ucy9pbmRleC5z
cGVjLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgvc3JjL2FjdGlvbnMvaW5kZXguc3BlYy5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wNmM4OTRjMWE1ZmE1OTQxYTY3YjIyMmY2NDU1YTkxNjAyNzc5YTQ3Ci0t
LSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgvc3JjL2FjdGlvbnMvaW5k
ZXguc3BlYy5qcwpAQCAtMCwwICsxLDQ1IEBACitpbXBvcnQgKiBhcyB0eXBlcyBmcm9tICcuLi9j
b25zdGFudHMvQWN0aW9uVHlwZXMnCitpbXBvcnQgKiBhcyBhY3Rpb25zIGZyb20gJy4vaW5kZXgn
CisKK2Rlc2NyaWJlKCd0b2RvIGFjdGlvbnMnLCAoKSA9PiB7CisgIGl0KCdhZGRUb2RvIHNob3Vs
ZCBjcmVhdGUgQUREX1RPRE8gYWN0aW9uJywgKCkgPT4geworICAgIGV4cGVjdChhY3Rpb25zLmFk
ZFRvZG8oJ1VzZSBSZWR1eCcpKS50b0VxdWFsKHsKKyAgICAgIHR5cGU6IHR5cGVzLkFERF9UT0RP
LAorICAgICAgdGV4dDogJ1VzZSBSZWR1eCcKKyAgICB9KQorICB9KQorCisgIGl0KCdkZWxldGVU
b2RvIHNob3VsZCBjcmVhdGUgREVMRVRFX1RPRE8gYWN0aW9uJywgKCkgPT4geworICAgIGV4cGVj
dChhY3Rpb25zLmRlbGV0ZVRvZG8oMSkpLnRvRXF1YWwoeworICAgICAgdHlwZTogdHlwZXMuREVM
RVRFX1RPRE8sCisgICAgICBpZDogMQorICAgIH0pCisgIH0pCisKKyAgaXQoJ2VkaXRUb2RvIHNo
b3VsZCBjcmVhdGUgRURJVF9UT0RPIGFjdGlvbicsICgpID0+IHsKKyAgICBleHBlY3QoYWN0aW9u
cy5lZGl0VG9kbygxLCAnVXNlIFJlZHV4IGV2ZXJ5d2hlcmUnKSkudG9FcXVhbCh7CisgICAgICB0
eXBlOiB0eXBlcy5FRElUX1RPRE8sCisgICAgICBpZDogMSwKKyAgICAgIHRleHQ6ICdVc2UgUmVk
dXggZXZlcnl3aGVyZScKKyAgICB9KQorICB9KQorCisgIGl0KCdjb21wbGV0ZVRvZG8gc2hvdWxk
IGNyZWF0ZSBDT01QTEVURV9UT0RPIGFjdGlvbicsICgpID0+IHsKKyAgICBleHBlY3QoYWN0aW9u
cy5jb21wbGV0ZVRvZG8oMSkpLnRvRXF1YWwoeworICAgICAgdHlwZTogdHlwZXMuQ09NUExFVEVf
VE9ETywKKyAgICAgIGlkOiAxCisgICAgfSkKKyAgfSkKKworICBpdCgnY29tcGxldGVBbGwgc2hv
dWxkIGNyZWF0ZSBDT01QTEVURV9BTEwgYWN0aW9uJywgKCkgPT4geworICAgIGV4cGVjdChhY3Rp
b25zLmNvbXBsZXRlQWxsKCkpLnRvRXF1YWwoeworICAgICAgdHlwZTogdHlwZXMuQ09NUExFVEVf
QUxMCisgICAgfSkKKyAgfSkKKworICBpdCgnY2xlYXJDb21wbGV0ZWQgc2hvdWxkIGNyZWF0ZSBD
TEVBUl9DT01QTEVURUQgYWN0aW9uJywgKCkgPT4geworICAgIGV4cGVjdChhY3Rpb25zLmNsZWFy
Q29tcGxldGVkKCkpLnRvRXF1YWwoeworICAgICAgdHlwZTogdHlwZXMuQ0xFQVJfQ09NUExFVEVE
CisgICAgfSkKKyAgfSkKK30pCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9z
cmMvY29tcG9uZW50cy9Gb290ZXIuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9zcmMvY29t
cG9uZW50cy9Gb290ZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTI3MmMwOGE1NGNlOWQ3MjM2Y2NkYjJiMmM5
NDVhMzZiZTlmMTlmNwotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4
L3NyYy9jb21wb25lbnRzL0Zvb3Rlci5qcwpAQCAtMCwwICsxLDcxIEBACitpbXBvcnQgUmVhY3Qs
IHsgUHJvcFR5cGVzLCBDb21wb25lbnQgfSBmcm9tICdyZWFjdCcKK2ltcG9ydCBjbGFzc25hbWVz
IGZyb20gJ2NsYXNzbmFtZXMnCitpbXBvcnQgeyBTSE9XX0FMTCwgU0hPV19DT01QTEVURUQsIFNI
T1dfQUNUSVZFIH0gZnJvbSAnLi4vY29uc3RhbnRzL1RvZG9GaWx0ZXJzJworCitjb25zdCBGSUxU
RVJfVElUTEVTID0geworICBbU0hPV19BTExdOiAnQWxsJywKKyAgW1NIT1dfQUNUSVZFXTogJ0Fj
dGl2ZScsCisgIFtTSE9XX0NPTVBMRVRFRF06ICdDb21wbGV0ZWQnCit9CisKK2V4cG9ydCBkZWZh
dWx0IGNsYXNzIEZvb3RlciBleHRlbmRzIENvbXBvbmVudCB7CisgIHN0YXRpYyBwcm9wVHlwZXMg
PSB7CisgICAgY29tcGxldGVkQ291bnQ6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCwKKyAg
ICBhY3RpdmVDb3VudDogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLAorICAgIGZpbHRlcjog
UHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLAorICAgIG9uQ2xlYXJDb21wbGV0ZWQ6IFByb3BU
eXBlcy5mdW5jLmlzUmVxdWlyZWQsCisgICAgb25TaG93OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVp
cmVkCisgIH0KKworICByZW5kZXJUb2RvQ291bnQoKSB7CisgICAgY29uc3QgeyBhY3RpdmVDb3Vu
dCB9ID0gdGhpcy5wcm9wcworICAgIGNvbnN0IGl0ZW1Xb3JkID0gYWN0aXZlQ291bnQgPT09IDEg
PyAnaXRlbScgOiAnaXRlbXMnCisKKyAgICByZXR1cm4gKAorICAgICAgPHNwYW4gY2xhc3NOYW1l
PSJ0b2RvLWNvdW50Ij4KKyAgICAgICAgPHN0cm9uZz57YWN0aXZlQ291bnQgfHwgJ05vJ308L3N0
cm9uZz4ge2l0ZW1Xb3JkfSBsZWZ0CisgICAgICA8L3NwYW4+CisgICAgKQorICB9CisKKyAgcmVu
ZGVyRmlsdGVyTGluayhmaWx0ZXIpIHsKKyAgICBjb25zdCB0aXRsZSA9IEZJTFRFUl9USVRMRVNb
ZmlsdGVyXQorICAgIGNvbnN0IHsgZmlsdGVyOiBzZWxlY3RlZEZpbHRlciwgb25TaG93IH0gPSB0
aGlzLnByb3BzCisKKyAgICByZXR1cm4gKAorICAgICAgPGEgY2xhc3NOYW1lPXtjbGFzc25hbWVz
KHsgc2VsZWN0ZWQ6IGZpbHRlciA9PT0gc2VsZWN0ZWRGaWx0ZXIgfSl9CisgICAgICAgICBzdHls
ZT17eyBjdXJzb3I6ICdwb2ludGVyJyB9fQorICAgICAgICAgb25DbGljaz17KCkgPT4gb25TaG93
KGZpbHRlcil9PgorICAgICAgICB7dGl0bGV9CisgICAgICA8L2E+CisgICAgKQorICB9CisKKyAg
cmVuZGVyQ2xlYXJCdXR0b24oKSB7CisgICAgY29uc3QgeyBjb21wbGV0ZWRDb3VudCwgb25DbGVh
ckNvbXBsZXRlZCB9ID0gdGhpcy5wcm9wcworICAgIGlmIChjb21wbGV0ZWRDb3VudCA+IDApIHsK
KyAgICAgIHJldHVybiAoCisgICAgICAgIDxidXR0b24gY2xhc3NOYW1lPSJjbGVhci1jb21wbGV0
ZWQiCisgICAgICAgICAgICAgICAgb25DbGljaz17b25DbGVhckNvbXBsZXRlZH0gPgorICAgICAg
ICAgIENsZWFyIGNvbXBsZXRlZAorICAgICAgICA8L2J1dHRvbj4KKyAgICAgICkKKyAgICB9Cisg
IH0KKworICByZW5kZXIoKSB7CisgICAgcmV0dXJuICgKKyAgICAgIDxmb290ZXIgY2xhc3NOYW1l
PSJmb290ZXIiPgorICAgICAgICB7dGhpcy5yZW5kZXJUb2RvQ291bnQoKX0KKyAgICAgICAgPHVs
IGNsYXNzTmFtZT0iZmlsdGVycyI+CisgICAgICAgICAge1sgU0hPV19BTEwsIFNIT1dfQUNUSVZF
LCBTSE9XX0NPTVBMRVRFRCBdLm1hcChmaWx0ZXIgPT4KKyAgICAgICAgICAgIDxsaSBrZXk9e2Zp
bHRlcn0+CisgICAgICAgICAgICAgIHt0aGlzLnJlbmRlckZpbHRlckxpbmsoZmlsdGVyKX0KKyAg
ICAgICAgICAgIDwvbGk+CisgICAgICAgICAgKX0KKyAgICAgICAgPC91bD4KKyAgICAgICAge3Ro
aXMucmVuZGVyQ2xlYXJCdXR0b24oKX0KKyAgICAgIDwvZm9vdGVyPgorICAgICkKKyAgfQorfQpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgvc3JjL2NvbXBvbmVudHMvRm9vdGVy
LnNwZWMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9zcmMvY29tcG9uZW50cy9Gb290ZXIu
c3BlYy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hMGZhODMwZTRjNmQzNGVkNzIxMWNjNDdkNGY4MWVkYjM5Mjkz
ZGM1Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgvc3JjL2NvbXBv
bmVudHMvRm9vdGVyLnNwZWMuanMKQEAgLTAsMCArMSwxMDIgQEAKK2ltcG9ydCBSZWFjdCBmcm9t
ICdyZWFjdCcKK2ltcG9ydCBUZXN0VXRpbHMgZnJvbSAncmVhY3QtYWRkb25zLXRlc3QtdXRpbHMn
CitpbXBvcnQgRm9vdGVyIGZyb20gJy4vRm9vdGVyJworaW1wb3J0IHsgU0hPV19BTEwsIFNIT1df
QUNUSVZFIH0gZnJvbSAnLi4vY29uc3RhbnRzL1RvZG9GaWx0ZXJzJworCitjb25zdCBzZXR1cCA9
IHByb3BPdmVycmlkZXMgPT4geworICBjb25zdCBwcm9wcyA9IE9iamVjdC5hc3NpZ24oeworICAg
IGNvbXBsZXRlZENvdW50OiAwLAorICAgIGFjdGl2ZUNvdW50OiAwLAorICAgIGZpbHRlcjogU0hP
V19BTEwsCisgICAgb25DbGVhckNvbXBsZXRlZDogamVzdC5mbigpLAorICAgIG9uU2hvdzogamVz
dC5mbigpCisgIH0sIHByb3BPdmVycmlkZXMpCisKKyAgY29uc3QgcmVuZGVyZXIgPSBUZXN0VXRp
bHMuY3JlYXRlUmVuZGVyZXIoKQorICByZW5kZXJlci5yZW5kZXIoPEZvb3RlciB7Li4ucHJvcHN9
IC8+KQorICBjb25zdCBvdXRwdXQgPSByZW5kZXJlci5nZXRSZW5kZXJPdXRwdXQoKQorCisgIHJl
dHVybiB7CisgICAgcHJvcHM6IHByb3BzLAorICAgIG91dHB1dDogb3V0cHV0CisgIH0KK30KKwor
Y29uc3QgZ2V0VGV4dENvbnRlbnQgPSBlbGVtID0+IHsKKyAgY29uc3QgY2hpbGRyZW4gPSBBcnJh
eS5pc0FycmF5KGVsZW0ucHJvcHMuY2hpbGRyZW4pID8KKyAgICBlbGVtLnByb3BzLmNoaWxkcmVu
IDogWyBlbGVtLnByb3BzLmNoaWxkcmVuIF0KKworICByZXR1cm4gY2hpbGRyZW4ucmVkdWNlKChv
dXQsIGNoaWxkKSA9PgorICAgIC8vIENvbmNhdGVuYXRlIHRoZSB0ZXh0CisgICAgLy8gQ2hpbGRy
ZW4gYXJlIGVpdGhlciBlbGVtZW50cyBvciB0ZXh0IHN0cmluZ3MKKyAgICBvdXQgKyAoY2hpbGQu
cHJvcHMgPyBnZXRUZXh0Q29udGVudChjaGlsZCkgOiBjaGlsZCkKKyAgLCAnJykKK30KKworZGVz
Y3JpYmUoJ2NvbXBvbmVudHMnLCAoKSA9PiB7CisgIGRlc2NyaWJlKCdGb290ZXInLCAoKSA9PiB7
CisgICAgaXQoJ3Nob3VsZCByZW5kZXIgY29udGFpbmVyJywgKCkgPT4geworICAgICAgY29uc3Qg
eyBvdXRwdXQgfSA9IHNldHVwKCkKKyAgICAgIGV4cGVjdChvdXRwdXQudHlwZSkudG9CZSgnZm9v
dGVyJykKKyAgICAgIGV4cGVjdChvdXRwdXQucHJvcHMuY2xhc3NOYW1lKS50b0JlKCdmb290ZXIn
KQorICAgIH0pCisKKyAgICBpdCgnc2hvdWxkIGRpc3BsYXkgYWN0aXZlIGNvdW50IHdoZW4gMCcs
ICgpID0+IHsKKyAgICAgIGNvbnN0IHsgb3V0cHV0IH0gPSBzZXR1cCh7IGFjdGl2ZUNvdW50OiAw
IH0pCisgICAgICBjb25zdCBbIGNvdW50IF0gPSBvdXRwdXQucHJvcHMuY2hpbGRyZW4KKyAgICAg
IGV4cGVjdChnZXRUZXh0Q29udGVudChjb3VudCkpLnRvQmUoJ05vIGl0ZW1zIGxlZnQnKQorICAg
IH0pCisKKyAgICBpdCgnc2hvdWxkIGRpc3BsYXkgYWN0aXZlIGNvdW50IHdoZW4gYWJvdmUgMCcs
ICgpID0+IHsKKyAgICAgIGNvbnN0IHsgb3V0cHV0IH0gPSBzZXR1cCh7IGFjdGl2ZUNvdW50OiAx
IH0pCisgICAgICBjb25zdCBbIGNvdW50IF0gPSBvdXRwdXQucHJvcHMuY2hpbGRyZW4KKyAgICAg
IGV4cGVjdChnZXRUZXh0Q29udGVudChjb3VudCkpLnRvQmUoJzEgaXRlbSBsZWZ0JykKKyAgICB9
KQorCisgICAgaXQoJ3Nob3VsZCByZW5kZXIgZmlsdGVycycsICgpID0+IHsKKyAgICAgIGNvbnN0
IHsgb3V0cHV0IH0gPSBzZXR1cCgpCisgICAgICBjb25zdCBbICwgZmlsdGVycyBdID0gb3V0cHV0
LnByb3BzLmNoaWxkcmVuCisgICAgICBleHBlY3QoZmlsdGVycy50eXBlKS50b0JlKCd1bCcpCisg
ICAgICBleHBlY3QoZmlsdGVycy5wcm9wcy5jbGFzc05hbWUpLnRvQmUoJ2ZpbHRlcnMnKQorICAg
ICAgZXhwZWN0KGZpbHRlcnMucHJvcHMuY2hpbGRyZW4ubGVuZ3RoKS50b0JlKDMpCisgICAgICBm
aWx0ZXJzLnByb3BzLmNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24gY2hlY2tGaWx0ZXIoZmlsdGVy
LCBpKSB7CisgICAgICAgIGV4cGVjdChmaWx0ZXIudHlwZSkudG9CZSgnbGknKQorICAgICAgICBj
b25zdCBhID0gZmlsdGVyLnByb3BzLmNoaWxkcmVuCisgICAgICAgIGV4cGVjdChhLnByb3BzLmNs
YXNzTmFtZSkudG9CZShpID09PSAwID8gJ3NlbGVjdGVkJyA6ICcnKQorICAgICAgICBleHBlY3Qo
YS5wcm9wcy5jaGlsZHJlbikudG9CZSh7CisgICAgICAgICAgMDogJ0FsbCcsCisgICAgICAgICAg
MTogJ0FjdGl2ZScsCisgICAgICAgICAgMjogJ0NvbXBsZXRlZCcKKyAgICAgICAgfVtpXSkKKyAg
ICAgIH0pCisgICAgfSkKKworICAgIGl0KCdzaG91bGQgY2FsbCBvblNob3cgd2hlbiBhIGZpbHRl
ciBpcyBjbGlja2VkJywgKCkgPT4geworICAgICAgY29uc3QgeyBvdXRwdXQsIHByb3BzIH0gPSBz
ZXR1cCgpCisgICAgICBjb25zdCBbICwgZmlsdGVycyBdID0gb3V0cHV0LnByb3BzLmNoaWxkcmVu
CisgICAgICBjb25zdCBmaWx0ZXJMaW5rID0gZmlsdGVycy5wcm9wcy5jaGlsZHJlblsxXS5wcm9w
cy5jaGlsZHJlbgorICAgICAgZmlsdGVyTGluay5wcm9wcy5vbkNsaWNrKHt9KQorICAgICAgZXhw
ZWN0KHByb3BzLm9uU2hvdykudG9CZUNhbGxlZFdpdGgoU0hPV19BQ1RJVkUpCisgICAgfSkKKwor
ICAgIGl0KCdzaG91bGRudCBzaG93IGNsZWFyIGJ1dHRvbiB3aGVuIG5vIGNvbXBsZXRlZCB0b2Rv
cycsICgpID0+IHsKKyAgICAgIGNvbnN0IHsgb3V0cHV0IH0gPSBzZXR1cCh7IGNvbXBsZXRlZENv
dW50OiAwIH0pCisgICAgICBjb25zdCBbICwgLCBjbGVhciBdID0gb3V0cHV0LnByb3BzLmNoaWxk
cmVuCisgICAgICBleHBlY3QoY2xlYXIpLnRvQmUodW5kZWZpbmVkKQorICAgIH0pCisKKyAgICBp
dCgnc2hvdWxkIHJlbmRlciBjbGVhciBidXR0b24gd2hlbiBjb21wbGV0ZWQgdG9kb3MnLCAoKSA9
PiB7CisgICAgICBjb25zdCB7IG91dHB1dCB9ID0gc2V0dXAoeyBjb21wbGV0ZWRDb3VudDogMSB9
KQorICAgICAgY29uc3QgWyAsICwgY2xlYXIgXSA9IG91dHB1dC5wcm9wcy5jaGlsZHJlbgorICAg
ICAgZXhwZWN0KGNsZWFyLnR5cGUpLnRvQmUoJ2J1dHRvbicpCisgICAgICBleHBlY3QoY2xlYXIu
cHJvcHMuY2hpbGRyZW4pLnRvQmUoJ0NsZWFyIGNvbXBsZXRlZCcpCisgICAgfSkKKworICAgIGl0
KCdzaG91bGQgY2FsbCBvbkNsZWFyQ29tcGxldGVkIG9uIGNsZWFyIGJ1dHRvbiBjbGljaycsICgp
ID0+IHsKKyAgICAgIGNvbnN0IHsgb3V0cHV0LCBwcm9wcyB9ID0gc2V0dXAoeyBjb21wbGV0ZWRD
b3VudDogMSB9KQorICAgICAgY29uc3QgWyAsICwgY2xlYXIgXSA9IG91dHB1dC5wcm9wcy5jaGls
ZHJlbgorICAgICAgY2xlYXIucHJvcHMub25DbGljayh7fSkKKyAgICAgIGV4cGVjdChwcm9wcy5v
bkNsZWFyQ29tcGxldGVkKS50b0JlQ2FsbGVkKCkKKyAgICB9KQorICB9KQorfSkKZGlmZiAtLWdp
dCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L3NyYy9jb21wb25lbnRzL0hlYWRlci5qcyBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL3JlYWN0LXJlZHV4L3NyYy9jb21wb25lbnRzL0hlYWRlci5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45ZjE5MjM5OWQ5NTk1MDI4YmI3N2E5MjI3MTkyNjllYWE2NDQwZWUwCi0tLSAvZGV2L251bGwK
KysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgvc3JjL2NvbXBvbmVudHMvSGVhZGVyLmpzCkBA
IC0wLDAgKzEsMjUgQEAKK2ltcG9ydCBSZWFjdCwgeyBQcm9wVHlwZXMsIENvbXBvbmVudCB9IGZy
b20gJ3JlYWN0JworaW1wb3J0IFRvZG9UZXh0SW5wdXQgZnJvbSAnLi9Ub2RvVGV4dElucHV0Jwor
CitleHBvcnQgZGVmYXVsdCBjbGFzcyBIZWFkZXIgZXh0ZW5kcyBDb21wb25lbnQgeworICBzdGF0
aWMgcHJvcFR5cGVzID0geworICAgIGFkZFRvZG86IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQK
KyAgfQorCisgIGhhbmRsZVNhdmUgPSB0ZXh0ID0+IHsKKyAgICBpZiAodGV4dC5sZW5ndGggIT09
IDApIHsKKyAgICAgIHRoaXMucHJvcHMuYWRkVG9kbyh0ZXh0KQorICAgIH0KKyAgfQorCisgIHJl
bmRlcigpIHsKKyAgICByZXR1cm4gKAorICAgICAgPGhlYWRlciBjbGFzc05hbWU9ImhlYWRlciI+
CisgICAgICAgIDxoMT50b2RvczwvaDE+CisgICAgICAgIDxUb2RvVGV4dElucHV0IG5ld1RvZG8K
KyAgICAgICAgICAgICAgICAgICAgICAgb25TYXZlPXt0aGlzLmhhbmRsZVNhdmV9CisgICAgICAg
ICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPSJXaGF0IG5lZWRzIHRvIGJlIGRvbmU/IiAvPgor
ICAgICAgPC9oZWFkZXI+CisgICAgKQorICB9Cit9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9y
ZWFjdC1yZWR1eC9zcmMvY29tcG9uZW50cy9IZWFkZXIuc3BlYy5qcyBiL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Jl
YWN0LXJlZHV4L3NyYy9jb21wb25lbnRzL0hlYWRlci5zcGVjLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZiNjNk
ZjJhMzQ2ZTM3N2Y0YzhiODEwYzM0ZjVlYWQ4MWRmY2Y5NGMKLS0tIC9kZXYvbnVsbAorKysgYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9zcmMvY29tcG9uZW50cy9IZWFkZXIuc3BlYy5qcwpAQCAt
MCwwICsxLDQ5IEBACitpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnCitpbXBvcnQgVGVzdFV0aWxz
IGZyb20gJ3JlYWN0LWFkZG9ucy10ZXN0LXV0aWxzJworaW1wb3J0IEhlYWRlciBmcm9tICcuL0hl
YWRlcicKK2ltcG9ydCBUb2RvVGV4dElucHV0IGZyb20gJy4vVG9kb1RleHRJbnB1dCcKKworY29u
c3Qgc2V0dXAgPSAoKSA9PiB7CisgIGNvbnN0IHByb3BzID0geworICAgIGFkZFRvZG86IGplc3Qu
Zm4oKQorICB9CisKKyAgY29uc3QgcmVuZGVyZXIgPSBUZXN0VXRpbHMuY3JlYXRlUmVuZGVyZXIo
KQorICByZW5kZXJlci5yZW5kZXIoPEhlYWRlciB7Li4ucHJvcHN9IC8+KQorICBjb25zdCBvdXRw
dXQgPSByZW5kZXJlci5nZXRSZW5kZXJPdXRwdXQoKQorCisgIHJldHVybiB7CisgICAgcHJvcHM6
IHByb3BzLAorICAgIG91dHB1dDogb3V0cHV0LAorICAgIHJlbmRlcmVyOiByZW5kZXJlcgorICB9
Cit9CisKK2Rlc2NyaWJlKCdjb21wb25lbnRzJywgKCkgPT4geworICBkZXNjcmliZSgnSGVhZGVy
JywgKCkgPT4geworICAgIGl0KCdzaG91bGQgcmVuZGVyIGNvcnJlY3RseScsICgpID0+IHsKKyAg
ICAgIGNvbnN0IHsgb3V0cHV0IH0gPSBzZXR1cCgpCisKKyAgICAgIGV4cGVjdChvdXRwdXQudHlw
ZSkudG9CZSgnaGVhZGVyJykKKyAgICAgIGV4cGVjdChvdXRwdXQucHJvcHMuY2xhc3NOYW1lKS50
b0JlKCdoZWFkZXInKQorCisgICAgICBjb25zdCBbIGgxLCBpbnB1dCBdID0gb3V0cHV0LnByb3Bz
LmNoaWxkcmVuCisKKyAgICAgIGV4cGVjdChoMS50eXBlKS50b0JlKCdoMScpCisgICAgICBleHBl
Y3QoaDEucHJvcHMuY2hpbGRyZW4pLnRvQmUoJ3RvZG9zJykKKworICAgICAgZXhwZWN0KGlucHV0
LnR5cGUpLnRvQmUoVG9kb1RleHRJbnB1dCkKKyAgICAgIGV4cGVjdChpbnB1dC5wcm9wcy5uZXdU
b2RvKS50b0JlKHRydWUpCisgICAgICBleHBlY3QoaW5wdXQucHJvcHMucGxhY2Vob2xkZXIpLnRv
QmUoJ1doYXQgbmVlZHMgdG8gYmUgZG9uZT8nKQorICAgIH0pCisKKyAgICBpdCgnc2hvdWxkIGNh
bGwgYWRkVG9kbyBpZiBsZW5ndGggb2YgdGV4dCBpcyBncmVhdGVyIHRoYW4gMCcsICgpID0+IHsK
KyAgICAgIGNvbnN0IHsgb3V0cHV0LCBwcm9wcyB9ID0gc2V0dXAoKQorICAgICAgY29uc3QgaW5w
dXQgPSBvdXRwdXQucHJvcHMuY2hpbGRyZW5bMV0KKyAgICAgIGlucHV0LnByb3BzLm9uU2F2ZSgn
JykKKyAgICAgIGV4cGVjdChwcm9wcy5hZGRUb2RvKS5ub3QudG9CZUNhbGxlZCgpCisgICAgICBp
bnB1dC5wcm9wcy5vblNhdmUoJ1VzZSBSZWR1eCcpCisgICAgICBleHBlY3QocHJvcHMuYWRkVG9k
bykudG9CZUNhbGxlZCgpCisgICAgfSkKKyAgfSkKK30pCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9yZWFjdC1yZWR1eC9zcmMvY29tcG9uZW50cy9NYWluU2VjdGlvbi5qcyBiL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L3JlYWN0LXJlZHV4L3NyYy9jb21wb25lbnRzL01haW5TZWN0aW9uLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVj
MjNiNTE2YjhkODc0NDFlMzljNGJiNTg0OTUyN2Q1MDg5ZGM1NDQKLS0tIC9kZXYvbnVsbAorKysg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9zcmMvY29tcG9uZW50cy9NYWluU2VjdGlvbi5qcwpA
QCAtMCwwICsxLDc4IEBACitpbXBvcnQgUmVhY3QsIHsgQ29tcG9uZW50LCBQcm9wVHlwZXMgfSBm
cm9tICdyZWFjdCcKK2ltcG9ydCBUb2RvSXRlbSBmcm9tICcuL1RvZG9JdGVtJworaW1wb3J0IEZv
b3RlciBmcm9tICcuL0Zvb3RlcicKK2ltcG9ydCB7IFNIT1dfQUxMLCBTSE9XX0NPTVBMRVRFRCwg
U0hPV19BQ1RJVkUgfSBmcm9tICcuLi9jb25zdGFudHMvVG9kb0ZpbHRlcnMnCisKK2NvbnN0IFRP
RE9fRklMVEVSUyA9IHsKKyAgW1NIT1dfQUxMXTogKCkgPT4gdHJ1ZSwKKyAgW1NIT1dfQUNUSVZF
XTogdG9kbyA9PiAhdG9kby5jb21wbGV0ZWQsCisgIFtTSE9XX0NPTVBMRVRFRF06IHRvZG8gPT4g
dG9kby5jb21wbGV0ZWQKK30KKworZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWFpblNlY3Rpb24gZXh0
ZW5kcyBDb21wb25lbnQgeworICBzdGF0aWMgcHJvcFR5cGVzID0geworICAgIHRvZG9zOiBQcm9w
VHlwZXMuYXJyYXkuaXNSZXF1aXJlZCwKKyAgICBhY3Rpb25zOiBQcm9wVHlwZXMub2JqZWN0Lmlz
UmVxdWlyZWQKKyAgfQorCisgIHN0YXRlID0geyBmaWx0ZXI6IFNIT1dfQUxMIH0KKworICBoYW5k
bGVDbGVhckNvbXBsZXRlZCA9ICgpID0+IHsKKyAgICB0aGlzLnByb3BzLmFjdGlvbnMuY2xlYXJD
b21wbGV0ZWQoKQorICB9CisKKyAgaGFuZGxlU2hvdyA9IGZpbHRlciA9PiB7CisgICAgdGhpcy5z
ZXRTdGF0ZSh7IGZpbHRlciB9KQorICB9CisKKyAgcmVuZGVyVG9nZ2xlQWxsKGNvbXBsZXRlZENv
dW50KSB7CisgICAgY29uc3QgeyB0b2RvcywgYWN0aW9ucyB9ID0gdGhpcy5wcm9wcworICAgIGlm
ICh0b2Rvcy5sZW5ndGggPiAwKSB7CisgICAgICByZXR1cm4gKAorICAgICAgICA8aW5wdXQgY2xh
c3NOYW1lPSJ0b2dnbGUtYWxsIgorICAgICAgICAgICAgICAgdHlwZT0iY2hlY2tib3giCisgICAg
ICAgICAgICAgICBjaGVja2VkPXtjb21wbGV0ZWRDb3VudCA9PT0gdG9kb3MubGVuZ3RofQorICAg
ICAgICAgICAgICAgb25DaGFuZ2U9e2FjdGlvbnMuY29tcGxldGVBbGx9IC8+CisgICAgICApCisg
ICAgfQorICB9CisKKyAgcmVuZGVyRm9vdGVyKGNvbXBsZXRlZENvdW50KSB7CisgICAgY29uc3Qg
eyB0b2RvcyB9ID0gdGhpcy5wcm9wcworICAgIGNvbnN0IHsgZmlsdGVyIH0gPSB0aGlzLnN0YXRl
CisgICAgY29uc3QgYWN0aXZlQ291bnQgPSB0b2Rvcy5sZW5ndGggLSBjb21wbGV0ZWRDb3VudAor
CisgICAgaWYgKHRvZG9zLmxlbmd0aCkgeworICAgICAgcmV0dXJuICgKKyAgICAgICAgPEZvb3Rl
ciBjb21wbGV0ZWRDb3VudD17Y29tcGxldGVkQ291bnR9CisgICAgICAgICAgICAgICAgYWN0aXZl
Q291bnQ9e2FjdGl2ZUNvdW50fQorICAgICAgICAgICAgICAgIGZpbHRlcj17ZmlsdGVyfQorICAg
ICAgICAgICAgICAgIG9uQ2xlYXJDb21wbGV0ZWQ9e3RoaXMuaGFuZGxlQ2xlYXJDb21wbGV0ZWQu
YmluZCh0aGlzKX0KKyAgICAgICAgICAgICAgICBvblNob3c9e3RoaXMuaGFuZGxlU2hvdy5iaW5k
KHRoaXMpfSAvPgorICAgICAgKQorICAgIH0KKyAgfQorCisgIHJlbmRlcigpIHsKKyAgICBjb25z
dCB7IHRvZG9zLCBhY3Rpb25zIH0gPSB0aGlzLnByb3BzCisgICAgY29uc3QgeyBmaWx0ZXIgfSA9
IHRoaXMuc3RhdGUKKworICAgIGNvbnN0IGZpbHRlcmVkVG9kb3MgPSB0b2Rvcy5maWx0ZXIoVE9E
T19GSUxURVJTW2ZpbHRlcl0pCisgICAgY29uc3QgY29tcGxldGVkQ291bnQgPSB0b2Rvcy5yZWR1
Y2UoKGNvdW50LCB0b2RvKSA9PgorICAgICAgdG9kby5jb21wbGV0ZWQgPyBjb3VudCArIDEgOiBj
b3VudCwKKyAgICAgIDAKKyAgICApCisKKyAgICByZXR1cm4gKAorICAgICAgPHNlY3Rpb24gY2xh
c3NOYW1lPSJtYWluIj4KKyAgICAgICAge3RoaXMucmVuZGVyVG9nZ2xlQWxsKGNvbXBsZXRlZENv
dW50KX0KKyAgICAgICAgPHVsIGNsYXNzTmFtZT0idG9kby1saXN0Ij4KKyAgICAgICAgICB7Zmls
dGVyZWRUb2Rvcy5tYXAodG9kbyA9PgorICAgICAgICAgICAgPFRvZG9JdGVtIGtleT17dG9kby5p
ZH0gdG9kbz17dG9kb30gey4uLmFjdGlvbnN9IC8+CisgICAgICAgICAgKX0KKyAgICAgICAgPC91
bD4KKyAgICAgICAge3RoaXMucmVuZGVyRm9vdGVyKGNvbXBsZXRlZENvdW50KX0KKyAgICAgIDwv
c2VjdGlvbj4KKyAgICApCisgIH0KK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJl
ZHV4L3NyYy9jb21wb25lbnRzL01haW5TZWN0aW9uLnNwZWMuanMgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFj
dC1yZWR1eC9zcmMvY29tcG9uZW50cy9NYWluU2VjdGlvbi5zcGVjLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY1
OTI0NTQ4YmI5MTQwNDk3MzM5MDY1MTBjNWNmNzkyY2IzZTU5YTQKLS0tIC9kZXYvbnVsbAorKysg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9zcmMvY29tcG9uZW50cy9NYWluU2VjdGlvbi5zcGVj
LmpzCkBAIC0wLDAgKzEsMTI5IEBACitpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnCitpbXBvcnQg
VGVzdFV0aWxzIGZyb20gJ3JlYWN0LWFkZG9ucy10ZXN0LXV0aWxzJworaW1wb3J0IE1haW5TZWN0
aW9uIGZyb20gJy4vTWFpblNlY3Rpb24nCitpbXBvcnQgVG9kb0l0ZW0gZnJvbSAnLi9Ub2RvSXRl
bScKK2ltcG9ydCBGb290ZXIgZnJvbSAnLi9Gb290ZXInCitpbXBvcnQgeyBTSE9XX0FMTCwgU0hP
V19DT01QTEVURUQgfSBmcm9tICcuLi9jb25zdGFudHMvVG9kb0ZpbHRlcnMnCisKK2NvbnN0IHNl
dHVwID0gcHJvcE92ZXJyaWRlcyA9PiB7CisgIGNvbnN0IHByb3BzID0gT2JqZWN0LmFzc2lnbih7
CisgICAgdG9kb3M6IFsKKyAgICAgIHsKKyAgICAgICAgdGV4dDogJ1VzZSBSZWR1eCcsCisgICAg
ICAgIGNvbXBsZXRlZDogZmFsc2UsCisgICAgICAgIGlkOiAwCisgICAgICB9LCB7CisgICAgICAg
IHRleHQ6ICdSdW4gdGhlIHRlc3RzJywKKyAgICAgICAgY29tcGxldGVkOiB0cnVlLAorICAgICAg
ICBpZDogMQorICAgICAgfQorICAgIF0sCisgICAgYWN0aW9uczogeworICAgICAgZWRpdFRvZG86
IGplc3QuZm4oKSwKKyAgICAgIGRlbGV0ZVRvZG86IGplc3QuZm4oKSwKKyAgICAgIGNvbXBsZXRl
VG9kbzogamVzdC5mbigpLAorICAgICAgY29tcGxldGVBbGw6IGplc3QuZm4oKSwKKyAgICAgIGNs
ZWFyQ29tcGxldGVkOiBqZXN0LmZuKCkKKyAgICB9CisgIH0sIHByb3BPdmVycmlkZXMpCisKKyAg
Y29uc3QgcmVuZGVyZXIgPSBUZXN0VXRpbHMuY3JlYXRlUmVuZGVyZXIoKQorICByZW5kZXJlci5y
ZW5kZXIoPE1haW5TZWN0aW9uIHsuLi5wcm9wc30gLz4pCisgIGNvbnN0IG91dHB1dCA9IHJlbmRl
cmVyLmdldFJlbmRlck91dHB1dCgpCisKKyAgcmV0dXJuIHsKKyAgICBwcm9wczogcHJvcHMsCisg
ICAgb3V0cHV0OiBvdXRwdXQsCisgICAgcmVuZGVyZXI6IHJlbmRlcmVyCisgIH0KK30KKworZGVz
Y3JpYmUoJ2NvbXBvbmVudHMnLCAoKSA9PiB7CisgIGRlc2NyaWJlKCdNYWluU2VjdGlvbicsICgp
ID0+IHsKKyAgICBpdCgnc2hvdWxkIHJlbmRlciBjb250YWluZXInLCAoKSA9PiB7CisgICAgICBj
b25zdCB7IG91dHB1dCB9ID0gc2V0dXAoKQorICAgICAgZXhwZWN0KG91dHB1dC50eXBlKS50b0Jl
KCdzZWN0aW9uJykKKyAgICAgIGV4cGVjdChvdXRwdXQucHJvcHMuY2xhc3NOYW1lKS50b0JlKCdt
YWluJykKKyAgICB9KQorCisgICAgZGVzY3JpYmUoJ3RvZ2dsZSBhbGwgaW5wdXQnLCAoKSA9PiB7
CisgICAgICBpdCgnc2hvdWxkIHJlbmRlcicsICgpID0+IHsKKyAgICAgICAgY29uc3QgeyBvdXRw
dXQgfSA9IHNldHVwKCkKKyAgICAgICAgY29uc3QgWyB0b2dnbGUgXSA9IG91dHB1dC5wcm9wcy5j
aGlsZHJlbgorICAgICAgICBleHBlY3QodG9nZ2xlLnR5cGUpLnRvQmUoJ2lucHV0JykKKyAgICAg
ICAgZXhwZWN0KHRvZ2dsZS5wcm9wcy50eXBlKS50b0JlKCdjaGVja2JveCcpCisgICAgICAgIGV4
cGVjdCh0b2dnbGUucHJvcHMuY2hlY2tlZCkudG9CZShmYWxzZSkKKyAgICAgIH0pCisKKyAgICAg
IGl0KCdzaG91bGQgYmUgY2hlY2tlZCBpZiBhbGwgdG9kb3MgY29tcGxldGVkJywgKCkgPT4gewor
ICAgICAgICBjb25zdCB7IG91dHB1dCB9ID0gc2V0dXAoeyB0b2RvczogWworICAgICAgICAgIHsK
KyAgICAgICAgICAgIHRleHQ6ICdVc2UgUmVkdXgnLAorICAgICAgICAgICAgY29tcGxldGVkOiB0
cnVlLAorICAgICAgICAgICAgaWQ6IDAKKyAgICAgICAgICB9CisgICAgICAgIF0KKyAgICAgICAg
fSkKKyAgICAgICAgY29uc3QgWyB0b2dnbGUgXSA9IG91dHB1dC5wcm9wcy5jaGlsZHJlbgorICAg
ICAgICBleHBlY3QodG9nZ2xlLnByb3BzLmNoZWNrZWQpLnRvQmUodHJ1ZSkKKyAgICAgIH0pCisK
KyAgICAgIGl0KCdzaG91bGQgY2FsbCBjb21wbGV0ZUFsbCBvbiBjaGFuZ2UnLCAoKSA9PiB7Cisg
ICAgICAgIGNvbnN0IHsgb3V0cHV0LCBwcm9wcyB9ID0gc2V0dXAoKQorICAgICAgICBjb25zdCBb
IHRvZ2dsZSBdID0gb3V0cHV0LnByb3BzLmNoaWxkcmVuCisgICAgICAgIHRvZ2dsZS5wcm9wcy5v
bkNoYW5nZSh7fSkKKyAgICAgICAgZXhwZWN0KHByb3BzLmFjdGlvbnMuY29tcGxldGVBbGwpLnRv
QmVDYWxsZWQoKQorICAgICAgfSkKKyAgICB9KQorCisgICAgZGVzY3JpYmUoJ2Zvb3RlcicsICgp
ID0+IHsKKyAgICAgIGl0KCdzaG91bGQgcmVuZGVyJywgKCkgPT4geworICAgICAgICBjb25zdCB7
IG91dHB1dCB9ID0gc2V0dXAoKQorICAgICAgICBjb25zdCBbICwgLCBmb290ZXIgXSA9IG91dHB1
dC5wcm9wcy5jaGlsZHJlbgorICAgICAgICBleHBlY3QoZm9vdGVyLnR5cGUpLnRvQmUoRm9vdGVy
KQorICAgICAgICBleHBlY3QoZm9vdGVyLnByb3BzLmNvbXBsZXRlZENvdW50KS50b0JlKDEpCisg
ICAgICAgIGV4cGVjdChmb290ZXIucHJvcHMuYWN0aXZlQ291bnQpLnRvQmUoMSkKKyAgICAgICAg
ZXhwZWN0KGZvb3Rlci5wcm9wcy5maWx0ZXIpLnRvQmUoU0hPV19BTEwpCisgICAgICB9KQorCisg
ICAgICBpdCgnb25TaG93IHNob3VsZCBzZXQgdGhlIGZpbHRlcicsICgpID0+IHsKKyAgICAgICAg
Y29uc3QgeyBvdXRwdXQsIHJlbmRlcmVyIH0gPSBzZXR1cCgpCisgICAgICAgIGNvbnN0IFsgLCAs
IGZvb3RlciBdID0gb3V0cHV0LnByb3BzLmNoaWxkcmVuCisgICAgICAgIGZvb3Rlci5wcm9wcy5v
blNob3coU0hPV19DT01QTEVURUQpCisgICAgICAgIGNvbnN0IHVwZGF0ZWQgPSByZW5kZXJlci5n
ZXRSZW5kZXJPdXRwdXQoKQorICAgICAgICBjb25zdCBbICwgLCB1cGRhdGVkRm9vdGVyIF0gPSB1
cGRhdGVkLnByb3BzLmNoaWxkcmVuCisgICAgICAgIGV4cGVjdCh1cGRhdGVkRm9vdGVyLnByb3Bz
LmZpbHRlcikudG9CZShTSE9XX0NPTVBMRVRFRCkKKyAgICAgIH0pCisKKyAgICAgIGl0KCdvbkNs
ZWFyQ29tcGxldGVkIHNob3VsZCBjYWxsIGNsZWFyQ29tcGxldGVkJywgKCkgPT4geworICAgICAg
ICBjb25zdCB7IG91dHB1dCwgcHJvcHMgfSA9IHNldHVwKCkKKyAgICAgICAgY29uc3QgWyAsICwg
Zm9vdGVyIF0gPSBvdXRwdXQucHJvcHMuY2hpbGRyZW4KKyAgICAgICAgZm9vdGVyLnByb3BzLm9u
Q2xlYXJDb21wbGV0ZWQoKQorICAgICAgICBleHBlY3QocHJvcHMuYWN0aW9ucy5jbGVhckNvbXBs
ZXRlZCkudG9CZUNhbGxlZCgpCisgICAgICB9KQorICAgIH0pCisKKyAgICBkZXNjcmliZSgndG9k
byBsaXN0JywgKCkgPT4geworICAgICAgaXQoJ3Nob3VsZCByZW5kZXInLCAoKSA9PiB7CisgICAg
ICAgIGNvbnN0IHsgb3V0cHV0LCBwcm9wcyB9ID0gc2V0dXAoKQorICAgICAgICBjb25zdCBbICwg
bGlzdCBdID0gb3V0cHV0LnByb3BzLmNoaWxkcmVuCisgICAgICAgIGV4cGVjdChsaXN0LnR5cGUp
LnRvQmUoJ3VsJykKKyAgICAgICAgZXhwZWN0KGxpc3QucHJvcHMuY2hpbGRyZW4ubGVuZ3RoKS50
b0JlKDIpCisgICAgICAgIGxpc3QucHJvcHMuY2hpbGRyZW4uZm9yRWFjaCgoaXRlbSwgaSkgPT4g
eworICAgICAgICAgIGV4cGVjdChpdGVtLnR5cGUpLnRvQmUoVG9kb0l0ZW0pCisgICAgICAgICAg
ZXhwZWN0KGl0ZW0ucHJvcHMudG9kbykudG9CZShwcm9wcy50b2Rvc1tpXSkKKyAgICAgICAgfSkK
KyAgICAgIH0pCisKKyAgICAgIGl0KCdzaG91bGQgZmlsdGVyIGl0ZW1zJywgKCkgPT4geworICAg
ICAgICBjb25zdCB7IG91dHB1dCwgcmVuZGVyZXIsIHByb3BzIH0gPSBzZXR1cCgpCisgICAgICAg
IGNvbnN0IFsgLCAsIGZvb3RlciBdID0gb3V0cHV0LnByb3BzLmNoaWxkcmVuCisgICAgICAgIGZv
b3Rlci5wcm9wcy5vblNob3coU0hPV19DT01QTEVURUQpCisgICAgICAgIGNvbnN0IHVwZGF0ZWQg
PSByZW5kZXJlci5nZXRSZW5kZXJPdXRwdXQoKQorICAgICAgICBjb25zdCBbICwgdXBkYXRlZExp
c3QgXSA9IHVwZGF0ZWQucHJvcHMuY2hpbGRyZW4KKyAgICAgICAgZXhwZWN0KHVwZGF0ZWRMaXN0
LnByb3BzLmNoaWxkcmVuLmxlbmd0aCkudG9CZSgxKQorICAgICAgICBleHBlY3QodXBkYXRlZExp
c3QucHJvcHMuY2hpbGRyZW5bMF0ucHJvcHMudG9kbykudG9CZShwcm9wcy50b2Rvc1sxXSkKKyAg
ICAgIH0pCisgICAgfSkKKyAgfSkKK30pCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1y
ZWR1eC9zcmMvY29tcG9uZW50cy9Ub2RvSXRlbS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4
L3NyYy9jb21wb25lbnRzL1RvZG9JdGVtLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ5MDkyMWQ1NDNkOGYzOGZl
MTllZmRjOTNjY2UwMDgzOWM2NWE4ZmIKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9y
ZWFjdC1yZWR1eC9zcmMvY29tcG9uZW50cy9Ub2RvSXRlbS5qcwpAQCAtMCwwICsxLDY1IEBACitp
bXBvcnQgUmVhY3QsIHsgQ29tcG9uZW50LCBQcm9wVHlwZXMgfSBmcm9tICdyZWFjdCcKK2ltcG9y
dCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnCitpbXBvcnQgVG9kb1RleHRJbnB1dCBmcm9t
ICcuL1RvZG9UZXh0SW5wdXQnCisKK2V4cG9ydCBkZWZhdWx0IGNsYXNzIFRvZG9JdGVtIGV4dGVu
ZHMgQ29tcG9uZW50IHsKKyAgc3RhdGljIHByb3BUeXBlcyA9IHsKKyAgICB0b2RvOiBQcm9wVHlw
ZXMub2JqZWN0LmlzUmVxdWlyZWQsCisgICAgZWRpdFRvZG86IFByb3BUeXBlcy5mdW5jLmlzUmVx
dWlyZWQsCisgICAgZGVsZXRlVG9kbzogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCwKKyAgICBj
b21wbGV0ZVRvZG86IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQKKyAgfQorCisgIHN0YXRlID0g
eworICAgIGVkaXRpbmc6IGZhbHNlCisgIH0KKworICBoYW5kbGVEb3VibGVDbGljayA9ICgpID0+
IHsKKyAgICB0aGlzLnNldFN0YXRlKHsgZWRpdGluZzogdHJ1ZSB9KQorICB9CisKKyAgaGFuZGxl
U2F2ZSA9IChpZCwgdGV4dCkgPT4geworICAgIGlmICh0ZXh0Lmxlbmd0aCA9PT0gMCkgeworICAg
ICAgdGhpcy5wcm9wcy5kZWxldGVUb2RvKGlkKQorICAgIH0gZWxzZSB7CisgICAgICB0aGlzLnBy
b3BzLmVkaXRUb2RvKGlkLCB0ZXh0KQorICAgIH0KKyAgICB0aGlzLnNldFN0YXRlKHsgZWRpdGlu
ZzogZmFsc2UgfSkKKyAgfQorCisgIHJlbmRlcigpIHsKKyAgICBjb25zdCB7IHRvZG8sIGNvbXBs
ZXRlVG9kbywgZGVsZXRlVG9kbyB9ID0gdGhpcy5wcm9wcworCisgICAgbGV0IGVsZW1lbnQKKyAg
ICBpZiAodGhpcy5zdGF0ZS5lZGl0aW5nKSB7CisgICAgICBlbGVtZW50ID0gKAorICAgICAgICA8
VG9kb1RleHRJbnB1dCB0ZXh0PXt0b2RvLnRleHR9CisgICAgICAgICAgICAgICAgICAgICAgIGVk
aXRpbmc9e3RoaXMuc3RhdGUuZWRpdGluZ30KKyAgICAgICAgICAgICAgICAgICAgICAgb25TYXZl
PXsodGV4dCkgPT4gdGhpcy5oYW5kbGVTYXZlKHRvZG8uaWQsIHRleHQpfSAvPgorICAgICAgKQor
ICAgIH0gZWxzZSB7CisgICAgICBlbGVtZW50ID0gKAorICAgICAgICA8ZGl2IGNsYXNzTmFtZT0i
dmlldyI+CisgICAgICAgICAgPGlucHV0IGNsYXNzTmFtZT0idG9nZ2xlIgorICAgICAgICAgICAg
ICAgICB0eXBlPSJjaGVja2JveCIKKyAgICAgICAgICAgICAgICAgY2hlY2tlZD17dG9kby5jb21w
bGV0ZWR9CisgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiBjb21wbGV0ZVRvZG8odG9k
by5pZCl9IC8+CisgICAgICAgICAgPGxhYmVsIG9uRG91YmxlQ2xpY2s9e3RoaXMuaGFuZGxlRG91
YmxlQ2xpY2t9PgorICAgICAgICAgICAge3RvZG8udGV4dH0KKyAgICAgICAgICA8L2xhYmVsPgor
ICAgICAgICAgIDxidXR0b24gY2xhc3NOYW1lPSJkZXN0cm95IgorICAgICAgICAgICAgICAgICAg
b25DbGljaz17KCkgPT4gZGVsZXRlVG9kbyh0b2RvLmlkKX0gLz4KKyAgICAgICAgPC9kaXY+Cisg
ICAgICApCisgICAgfQorCisgICAgcmV0dXJuICgKKyAgICAgIDxsaSBjbGFzc05hbWU9e2NsYXNz
bmFtZXMoeworICAgICAgICBjb21wbGV0ZWQ6IHRvZG8uY29tcGxldGVkLAorICAgICAgICBlZGl0
aW5nOiB0aGlzLnN0YXRlLmVkaXRpbmcKKyAgICAgIH0pfT4KKyAgICAgICAge2VsZW1lbnR9Cisg
ICAgICA8L2xpPgorICAgICkKKyAgfQorfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qt
cmVkdXgvc3JjL2NvbXBvbmVudHMvVG9kb0l0ZW0uc3BlYy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0
LXJlZHV4L3NyYy9jb21wb25lbnRzL1RvZG9JdGVtLnNwZWMuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGMzNjRm
NWIxOTRhNGRhNmY5YWEwZTVkZDRhZDRmYzdhZTM4YTAxOQotLS0gL2Rldi9udWxsCisrKyBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL3JlYWN0LXJlZHV4L3NyYy9jb21wb25lbnRzL1RvZG9JdGVtLnNwZWMuanMKQEAg
LTAsMCArMSwxMTkgQEAKK2ltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCcKK2ltcG9ydCBUZXN0VXRp
bHMgZnJvbSAncmVhY3QtYWRkb25zLXRlc3QtdXRpbHMnCitpbXBvcnQgVG9kb0l0ZW0gZnJvbSAn
Li9Ub2RvSXRlbScKK2ltcG9ydCBUb2RvVGV4dElucHV0IGZyb20gJy4vVG9kb1RleHRJbnB1dCcK
KworY29uc3Qgc2V0dXAgPSAoIGVkaXRpbmcgPSBmYWxzZSApID0+IHsKKyAgY29uc3QgcHJvcHMg
PSB7CisgICAgdG9kbzogeworICAgICAgaWQ6IDAsCisgICAgICB0ZXh0OiAnVXNlIFJlZHV4JywK
KyAgICAgIGNvbXBsZXRlZDogZmFsc2UKKyAgICB9LAorICAgIGVkaXRUb2RvOiBqZXN0LmZuKCks
CisgICAgZGVsZXRlVG9kbzogamVzdC5mbigpLAorICAgIGNvbXBsZXRlVG9kbzogamVzdC5mbigp
CisgIH0KKworICBjb25zdCByZW5kZXJlciA9IFRlc3RVdGlscy5jcmVhdGVSZW5kZXJlcigpCisK
KyAgcmVuZGVyZXIucmVuZGVyKAorICAgIDxUb2RvSXRlbSB7Li4ucHJvcHN9IC8+CisgICkKKwor
ICBsZXQgb3V0cHV0ID0gcmVuZGVyZXIuZ2V0UmVuZGVyT3V0cHV0KCkKKworICBpZiAoZWRpdGlu
ZykgeworICAgIGNvbnN0IGxhYmVsID0gb3V0cHV0LnByb3BzLmNoaWxkcmVuLnByb3BzLmNoaWxk
cmVuWzFdCisgICAgbGFiZWwucHJvcHMub25Eb3VibGVDbGljayh7fSkKKyAgICBvdXRwdXQgPSBy
ZW5kZXJlci5nZXRSZW5kZXJPdXRwdXQoKQorICB9CisKKyAgcmV0dXJuIHsKKyAgICBwcm9wczog
cHJvcHMsCisgICAgb3V0cHV0OiBvdXRwdXQsCisgICAgcmVuZGVyZXI6IHJlbmRlcmVyCisgIH0K
K30KKworZGVzY3JpYmUoJ2NvbXBvbmVudHMnLCAoKSA9PiB7CisgIGRlc2NyaWJlKCdUb2RvSXRl
bScsICgpID0+IHsKKyAgICBpdCgnaW5pdGlhbCByZW5kZXInLCAoKSA9PiB7CisgICAgICBjb25z
dCB7IG91dHB1dCB9ID0gc2V0dXAoKQorCisgICAgICBleHBlY3Qob3V0cHV0LnR5cGUpLnRvQmUo
J2xpJykKKyAgICAgIGV4cGVjdChvdXRwdXQucHJvcHMuY2xhc3NOYW1lKS50b0JlKCcnKQorCisg
ICAgICBjb25zdCBkaXYgPSBvdXRwdXQucHJvcHMuY2hpbGRyZW4KKworICAgICAgZXhwZWN0KGRp
di50eXBlKS50b0JlKCdkaXYnKQorICAgICAgZXhwZWN0KGRpdi5wcm9wcy5jbGFzc05hbWUpLnRv
QmUoJ3ZpZXcnKQorCisgICAgICBjb25zdCBbIGlucHV0LCBsYWJlbCwgYnV0dG9uIF0gPSBkaXYu
cHJvcHMuY2hpbGRyZW4KKworICAgICAgZXhwZWN0KGlucHV0LnR5cGUpLnRvQmUoJ2lucHV0JykK
KyAgICAgIGV4cGVjdChpbnB1dC5wcm9wcy5jaGVja2VkKS50b0JlKGZhbHNlKQorCisgICAgICBl
eHBlY3QobGFiZWwudHlwZSkudG9CZSgnbGFiZWwnKQorICAgICAgZXhwZWN0KGxhYmVsLnByb3Bz
LmNoaWxkcmVuKS50b0JlKCdVc2UgUmVkdXgnKQorCisgICAgICBleHBlY3QoYnV0dG9uLnR5cGUp
LnRvQmUoJ2J1dHRvbicpCisgICAgICBleHBlY3QoYnV0dG9uLnByb3BzLmNsYXNzTmFtZSkudG9C
ZSgnZGVzdHJveScpCisgICAgfSkKKworICAgIGl0KCdpbnB1dCBvbkNoYW5nZSBzaG91bGQgY2Fs
bCBjb21wbGV0ZVRvZG8nLCAoKSA9PiB7CisgICAgICBjb25zdCB7IG91dHB1dCwgcHJvcHMgfSA9
IHNldHVwKCkKKyAgICAgIGNvbnN0IGlucHV0ID0gb3V0cHV0LnByb3BzLmNoaWxkcmVuLnByb3Bz
LmNoaWxkcmVuWzBdCisgICAgICBpbnB1dC5wcm9wcy5vbkNoYW5nZSh7fSkKKyAgICAgIGV4cGVj
dChwcm9wcy5jb21wbGV0ZVRvZG8pLnRvQmVDYWxsZWRXaXRoKDApCisgICAgfSkKKworICAgIGl0
KCdidXR0b24gb25DbGljayBzaG91bGQgY2FsbCBkZWxldGVUb2RvJywgKCkgPT4geworICAgICAg
Y29uc3QgeyBvdXRwdXQsIHByb3BzIH0gPSBzZXR1cCgpCisgICAgICBjb25zdCBidXR0b24gPSBv
dXRwdXQucHJvcHMuY2hpbGRyZW4ucHJvcHMuY2hpbGRyZW5bMl0KKyAgICAgIGJ1dHRvbi5wcm9w
cy5vbkNsaWNrKHt9KQorICAgICAgZXhwZWN0KHByb3BzLmRlbGV0ZVRvZG8pLnRvQmVDYWxsZWRX
aXRoKDApCisgICAgfSkKKworICAgIGl0KCdsYWJlbCBvbkRvdWJsZUNsaWNrIHNob3VsZCBwdXQg
Y29tcG9uZW50IGluIGVkaXQgc3RhdGUnLCAoKSA9PiB7CisgICAgICBjb25zdCB7IG91dHB1dCwg
cmVuZGVyZXIgfSA9IHNldHVwKCkKKyAgICAgIGNvbnN0IGxhYmVsID0gb3V0cHV0LnByb3BzLmNo
aWxkcmVuLnByb3BzLmNoaWxkcmVuWzFdCisgICAgICBsYWJlbC5wcm9wcy5vbkRvdWJsZUNsaWNr
KHt9KQorICAgICAgY29uc3QgdXBkYXRlZCA9IHJlbmRlcmVyLmdldFJlbmRlck91dHB1dCgpCisg
ICAgICBleHBlY3QodXBkYXRlZC50eXBlKS50b0JlKCdsaScpCisgICAgICBleHBlY3QodXBkYXRl
ZC5wcm9wcy5jbGFzc05hbWUpLnRvQmUoJ2VkaXRpbmcnKQorICAgIH0pCisKKyAgICBpdCgnZWRp
dCBzdGF0ZSByZW5kZXInLCAoKSA9PiB7CisgICAgICBjb25zdCB7IG91dHB1dCB9ID0gc2V0dXAo
dHJ1ZSkKKworICAgICAgZXhwZWN0KG91dHB1dC50eXBlKS50b0JlKCdsaScpCisgICAgICBleHBl
Y3Qob3V0cHV0LnByb3BzLmNsYXNzTmFtZSkudG9CZSgnZWRpdGluZycpCisKKyAgICAgIGNvbnN0
IGlucHV0ID0gb3V0cHV0LnByb3BzLmNoaWxkcmVuCisgICAgICBleHBlY3QoaW5wdXQudHlwZSku
dG9CZShUb2RvVGV4dElucHV0KQorICAgICAgZXhwZWN0KGlucHV0LnByb3BzLnRleHQpLnRvQmUo
J1VzZSBSZWR1eCcpCisgICAgICBleHBlY3QoaW5wdXQucHJvcHMuZWRpdGluZykudG9CZSh0cnVl
KQorICAgIH0pCisKKyAgICBpdCgnVG9kb1RleHRJbnB1dCBvblNhdmUgc2hvdWxkIGNhbGwgZWRp
dFRvZG8nLCAoKSA9PiB7CisgICAgICBjb25zdCB7IG91dHB1dCwgcHJvcHMgfSA9IHNldHVwKHRy
dWUpCisgICAgICBvdXRwdXQucHJvcHMuY2hpbGRyZW4ucHJvcHMub25TYXZlKCdVc2UgUmVkdXgn
KQorICAgICAgZXhwZWN0KHByb3BzLmVkaXRUb2RvKS50b0JlQ2FsbGVkV2l0aCgwLCAnVXNlIFJl
ZHV4JykKKyAgICB9KQorCisgICAgaXQoJ1RvZG9UZXh0SW5wdXQgb25TYXZlIHNob3VsZCBjYWxs
IGRlbGV0ZVRvZG8gaWYgdGV4dCBpcyBlbXB0eScsICgpID0+IHsKKyAgICAgIGNvbnN0IHsgb3V0
cHV0LCBwcm9wcyB9ID0gc2V0dXAodHJ1ZSkKKyAgICAgIG91dHB1dC5wcm9wcy5jaGlsZHJlbi5w
cm9wcy5vblNhdmUoJycpCisgICAgICBleHBlY3QocHJvcHMuZGVsZXRlVG9kbykudG9CZUNhbGxl
ZFdpdGgoMCkKKyAgICB9KQorCisgICAgaXQoJ1RvZG9UZXh0SW5wdXQgb25TYXZlIHNob3VsZCBl
eGl0IGNvbXBvbmVudCBmcm9tIGVkaXQgc3RhdGUnLCAoKSA9PiB7CisgICAgICBjb25zdCB7IG91
dHB1dCwgcmVuZGVyZXIgfSA9IHNldHVwKHRydWUpCisgICAgICBvdXRwdXQucHJvcHMuY2hpbGRy
ZW4ucHJvcHMub25TYXZlKCdVc2UgUmVkdXgnKQorICAgICAgY29uc3QgdXBkYXRlZCA9IHJlbmRl
cmVyLmdldFJlbmRlck91dHB1dCgpCisgICAgICBleHBlY3QodXBkYXRlZC50eXBlKS50b0JlKCds
aScpCisgICAgICBleHBlY3QodXBkYXRlZC5wcm9wcy5jbGFzc05hbWUpLnRvQmUoJycpCisgICAg
fSkKKyAgfSkKK30pCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9zcmMvY29t
cG9uZW50cy9Ub2RvVGV4dElucHV0LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgvc3JjL2Nv
bXBvbmVudHMvVG9kb1RleHRJbnB1dC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYzA5YTNiMGJiOTdiNmU5Yzlj
ZWI0MzZhZTRkZDU1ZmY1MWFkZjg5Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVh
Y3QtcmVkdXgvc3JjL2NvbXBvbmVudHMvVG9kb1RleHRJbnB1dC5qcwpAQCAtMCwwICsxLDUzIEBA
CitpbXBvcnQgUmVhY3QsIHsgQ29tcG9uZW50LCBQcm9wVHlwZXMgfSBmcm9tICdyZWFjdCcKK2lt
cG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnCisKK2V4cG9ydCBkZWZhdWx0IGNsYXNz
IFRvZG9UZXh0SW5wdXQgZXh0ZW5kcyBDb21wb25lbnQgeworICBzdGF0aWMgcHJvcFR5cGVzID0g
eworICAgIG9uU2F2ZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCwKKyAgICB0ZXh0OiBQcm9w
VHlwZXMuc3RyaW5nLAorICAgIHBsYWNlaG9sZGVyOiBQcm9wVHlwZXMuc3RyaW5nLAorICAgIGVk
aXRpbmc6IFByb3BUeXBlcy5ib29sLAorICAgIG5ld1RvZG86IFByb3BUeXBlcy5ib29sCisgIH0K
KworICBzdGF0ZSA9IHsKKyAgICB0ZXh0OiB0aGlzLnByb3BzLnRleHQgfHwgJycKKyAgfQorCisg
IGhhbmRsZVN1Ym1pdCA9IGUgPT4geworICAgIGNvbnN0IHRleHQgPSBlLnRhcmdldC52YWx1ZS50
cmltKCkKKyAgICBpZiAoZS53aGljaCA9PT0gMTMpIHsKKyAgICAgIHRoaXMucHJvcHMub25TYXZl
KHRleHQpCisgICAgICBpZiAodGhpcy5wcm9wcy5uZXdUb2RvKSB7CisgICAgICAgIHRoaXMuc2V0
U3RhdGUoeyB0ZXh0OiAnJyB9KQorICAgICAgfQorICAgIH0KKyAgfQorCisgIGhhbmRsZUNoYW5n
ZSA9IGUgPT4geworICAgIHRoaXMuc2V0U3RhdGUoeyB0ZXh0OiBlLnRhcmdldC52YWx1ZSB9KQor
ICB9CisKKyAgaGFuZGxlQmx1ciA9IGUgPT4geworICAgIGlmICghdGhpcy5wcm9wcy5uZXdUb2Rv
KSB7CisgICAgICB0aGlzLnByb3BzLm9uU2F2ZShlLnRhcmdldC52YWx1ZSkKKyAgICB9CisgIH0K
KworICByZW5kZXIoKSB7CisgICAgcmV0dXJuICgKKyAgICAgIDxpbnB1dCBjbGFzc05hbWU9ewor
ICAgICAgICBjbGFzc25hbWVzKHsKKyAgICAgICAgICBlZGl0OiB0aGlzLnByb3BzLmVkaXRpbmcs
CisgICAgICAgICAgJ25ldy10b2RvJzogdGhpcy5wcm9wcy5uZXdUb2RvCisgICAgICAgIH0pfQor
ICAgICAgICB0eXBlPSJ0ZXh0IgorICAgICAgICBwbGFjZWhvbGRlcj17dGhpcy5wcm9wcy5wbGFj
ZWhvbGRlcn0KKyAgICAgICAgYXV0b0ZvY3VzPSJ0cnVlIgorICAgICAgICB2YWx1ZT17dGhpcy5z
dGF0ZS50ZXh0fQorICAgICAgICBvbkJsdXI9e3RoaXMuaGFuZGxlQmx1cn0KKyAgICAgICAgb25D
aGFuZ2U9e3RoaXMuaGFuZGxlQ2hhbmdlfQorICAgICAgICBvbktleURvd249e3RoaXMuaGFuZGxl
U3VibWl0fSAvPgorICAgICkKKyAgfQorfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qt
cmVkdXgvc3JjL2NvbXBvbmVudHMvVG9kb1RleHRJbnB1dC5zcGVjLmpzIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
cmVhY3QtcmVkdXgvc3JjL2NvbXBvbmVudHMvVG9kb1RleHRJbnB1dC5zcGVjLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmVmY2E3OWE5MDg1ODQ0NjViZDg0NmM2NjZkNzQyZDE0NWIwN2M0ZjAKLS0tIC9kZXYvbnVs
bAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9zcmMvY29tcG9uZW50cy9Ub2RvVGV4dElu
cHV0LnNwZWMuanMKQEAgLTAsMCArMSw4MCBAQAoraW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0Jwor
aW1wb3J0IFRlc3RVdGlscyBmcm9tICdyZWFjdC1hZGRvbnMtdGVzdC11dGlscycKK2ltcG9ydCBU
b2RvVGV4dElucHV0IGZyb20gJy4vVG9kb1RleHRJbnB1dCcKKworY29uc3Qgc2V0dXAgPSBwcm9w
T3ZlcnJpZGVzID0+IHsKKyAgY29uc3QgcHJvcHMgPSBPYmplY3QuYXNzaWduKHsKKyAgICBvblNh
dmU6IGplc3QuZm4oKSwKKyAgICB0ZXh0OiAnVXNlIFJlZHV4JywKKyAgICBwbGFjZWhvbGRlcjog
J1doYXQgbmVlZHMgdG8gYmUgZG9uZT8nLAorICAgIGVkaXRpbmc6IGZhbHNlLAorICAgIG5ld1Rv
ZG86IGZhbHNlCisgIH0sIHByb3BPdmVycmlkZXMpCisKKyAgY29uc3QgcmVuZGVyZXIgPSBUZXN0
VXRpbHMuY3JlYXRlUmVuZGVyZXIoKQorCisgIHJlbmRlcmVyLnJlbmRlcigKKyAgICA8VG9kb1Rl
eHRJbnB1dCB7Li4ucHJvcHN9IC8+CisgICkKKworICBjb25zdCBvdXRwdXQgPSByZW5kZXJlci5n
ZXRSZW5kZXJPdXRwdXQoKQorCisgIHJldHVybiB7CisgICAgcHJvcHM6IHByb3BzLAorICAgIG91
dHB1dDogb3V0cHV0LAorICAgIHJlbmRlcmVyOiByZW5kZXJlcgorICB9Cit9CisKK2Rlc2NyaWJl
KCdjb21wb25lbnRzJywgKCkgPT4geworICBkZXNjcmliZSgnVG9kb1RleHRJbnB1dCcsICgpID0+
IHsKKyAgICBpdCgnc2hvdWxkIHJlbmRlciBjb3JyZWN0bHknLCAoKSA9PiB7CisgICAgICBjb25z
dCB7IG91dHB1dCB9ID0gc2V0dXAoKQorICAgICAgZXhwZWN0KG91dHB1dC5wcm9wcy5wbGFjZWhv
bGRlcikudG9FcXVhbCgnV2hhdCBuZWVkcyB0byBiZSBkb25lPycpCisgICAgICBleHBlY3Qob3V0
cHV0LnByb3BzLnZhbHVlKS50b0VxdWFsKCdVc2UgUmVkdXgnKQorICAgICAgZXhwZWN0KG91dHB1
dC5wcm9wcy5jbGFzc05hbWUpLnRvRXF1YWwoJycpCisgICAgfSkKKworICAgIGl0KCdzaG91bGQg
cmVuZGVyIGNvcnJlY3RseSB3aGVuIGVkaXRpbmc9dHJ1ZScsICgpID0+IHsKKyAgICAgIGNvbnN0
IHsgb3V0cHV0IH0gPSBzZXR1cCh7IGVkaXRpbmc6IHRydWUgfSkKKyAgICAgIGV4cGVjdChvdXRw
dXQucHJvcHMuY2xhc3NOYW1lKS50b0VxdWFsKCdlZGl0JykKKyAgICB9KQorCisgICAgaXQoJ3No
b3VsZCByZW5kZXIgY29ycmVjdGx5IHdoZW4gbmV3VG9kbz10cnVlJywgKCkgPT4geworICAgICAg
Y29uc3QgeyBvdXRwdXQgfSA9IHNldHVwKHsgbmV3VG9kbzogdHJ1ZSB9KQorICAgICAgZXhwZWN0
KG91dHB1dC5wcm9wcy5jbGFzc05hbWUpLnRvRXF1YWwoJ25ldy10b2RvJykKKyAgICB9KQorCisg
ICAgaXQoJ3Nob3VsZCB1cGRhdGUgdmFsdWUgb24gY2hhbmdlJywgKCkgPT4geworICAgICAgY29u
c3QgeyBvdXRwdXQsIHJlbmRlcmVyIH0gPSBzZXR1cCgpCisgICAgICBvdXRwdXQucHJvcHMub25D
aGFuZ2UoeyB0YXJnZXQ6IHsgdmFsdWU6ICdVc2UgUmFkb3gnIH0gfSkKKyAgICAgIGNvbnN0IHVw
ZGF0ZWQgPSByZW5kZXJlci5nZXRSZW5kZXJPdXRwdXQoKQorICAgICAgZXhwZWN0KHVwZGF0ZWQu
cHJvcHMudmFsdWUpLnRvRXF1YWwoJ1VzZSBSYWRveCcpCisgICAgfSkKKworICAgIGl0KCdzaG91
bGQgY2FsbCBvblNhdmUgb24gcmV0dXJuIGtleSBwcmVzcycsICgpID0+IHsKKyAgICAgIGNvbnN0
IHsgb3V0cHV0LCBwcm9wcyB9ID0gc2V0dXAoKQorICAgICAgb3V0cHV0LnByb3BzLm9uS2V5RG93
bih7IHdoaWNoOiAxMywgdGFyZ2V0OiB7IHZhbHVlOiAnVXNlIFJlZHV4JyB9IH0pCisgICAgICBl
eHBlY3QocHJvcHMub25TYXZlKS50b0JlQ2FsbGVkV2l0aCgnVXNlIFJlZHV4JykKKyAgICB9KQor
CisgICAgaXQoJ3Nob3VsZCByZXNldCBzdGF0ZSBvbiByZXR1cm4ga2V5IHByZXNzIGlmIG5ld1Rv
ZG8nLCAoKSA9PiB7CisgICAgICBjb25zdCB7IG91dHB1dCwgcmVuZGVyZXIgfSA9IHNldHVwKHsg
bmV3VG9kbzogdHJ1ZSB9KQorICAgICAgb3V0cHV0LnByb3BzLm9uS2V5RG93bih7IHdoaWNoOiAx
MywgdGFyZ2V0OiB7IHZhbHVlOiAnVXNlIFJlZHV4JyB9IH0pCisgICAgICBjb25zdCB1cGRhdGVk
ID0gcmVuZGVyZXIuZ2V0UmVuZGVyT3V0cHV0KCkKKyAgICAgIGV4cGVjdCh1cGRhdGVkLnByb3Bz
LnZhbHVlKS50b0VxdWFsKCcnKQorICAgIH0pCisKKyAgICBpdCgnc2hvdWxkIGNhbGwgb25TYXZl
IG9uIGJsdXInLCAoKSA9PiB7CisgICAgICBjb25zdCB7IG91dHB1dCwgcHJvcHMgfSA9IHNldHVw
KCkKKyAgICAgIG91dHB1dC5wcm9wcy5vbkJsdXIoeyB0YXJnZXQ6IHsgdmFsdWU6ICdVc2UgUmVk
dXgnIH0gfSkKKyAgICAgIGV4cGVjdChwcm9wcy5vblNhdmUpLnRvQmVDYWxsZWRXaXRoKCdVc2Ug
UmVkdXgnKQorICAgIH0pCisKKyAgICBpdCgnc2hvdWxkbnQgY2FsbCBvblNhdmUgb24gYmx1ciBp
ZiBuZXdUb2RvJywgKCkgPT4geworICAgICAgY29uc3QgeyBvdXRwdXQsIHByb3BzIH0gPSBzZXR1
cCh7IG5ld1RvZG86IHRydWUgfSkKKyAgICAgIG91dHB1dC5wcm9wcy5vbkJsdXIoeyB0YXJnZXQ6
IHsgdmFsdWU6ICdVc2UgUmVkdXgnIH0gfSkKKyAgICAgIGV4cGVjdChwcm9wcy5vblNhdmUpLm5v
dC50b0JlQ2FsbGVkKCkKKyAgICB9KQorICB9KQorfSkKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L3JlYWN0LXJlZHV4L3NyYy9jb25zdGFudHMvQWN0aW9uVHlwZXMuanMgYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9y
ZWFjdC1yZWR1eC9zcmMvY29uc3RhbnRzL0FjdGlvblR5cGVzLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE3Y2Rk
MDJkOTNhZmJlOTZiNWZlMTBlMzU0NTFiMGFmZmJmZGNkMTEKLS0tIC9kZXYvbnVsbAorKysgYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9zcmMvY29uc3RhbnRzL0FjdGlvblR5cGVzLmpzCkBAIC0w
LDAgKzEsNiBAQAorZXhwb3J0IGNvbnN0IEFERF9UT0RPID0gJ0FERF9UT0RPJworZXhwb3J0IGNv
bnN0IERFTEVURV9UT0RPID0gJ0RFTEVURV9UT0RPJworZXhwb3J0IGNvbnN0IEVESVRfVE9ETyA9
ICdFRElUX1RPRE8nCitleHBvcnQgY29uc3QgQ09NUExFVEVfVE9ETyA9ICdDT01QTEVURV9UT0RP
JworZXhwb3J0IGNvbnN0IENPTVBMRVRFX0FMTCA9ICdDT01QTEVURV9BTEwnCitleHBvcnQgY29u
c3QgQ0xFQVJfQ09NUExFVEVEID0gJ0NMRUFSX0NPTVBMRVRFRCcKZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL3JlYWN0LXJlZHV4L3NyYy9jb25zdGFudHMvVG9kb0ZpbHRlcnMuanMgYi9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9yZWFjdC1yZWR1eC9zcmMvY29uc3RhbnRzL1RvZG9GaWx0ZXJzLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjcyNjg3ODVkNTZhYWFmMmI5ZmZkYjE5ZjMyNDMxOWE0MDQzNjE1OWMKLS0tIC9kZXYvbnVsbAor
KysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9zcmMvY29uc3RhbnRzL1RvZG9GaWx0ZXJzLmpz
CkBAIC0wLDAgKzEsMyBAQAorZXhwb3J0IGNvbnN0IFNIT1dfQUxMID0gJ3Nob3dfYWxsJworZXhw
b3J0IGNvbnN0IFNIT1dfQ09NUExFVEVEID0gJ3Nob3dfY29tcGxldGVkJworZXhwb3J0IGNvbnN0
IFNIT1dfQUNUSVZFID0gJ3Nob3dfYWN0aXZlJwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVh
Y3QtcmVkdXgvc3JjL2NvbnRhaW5lcnMvQXBwLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgv
c3JjL2NvbnRhaW5lcnMvQXBwLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhkYjdjNzEzYmQ0N2M1NDU2N2I2YzU4
MzE5OTgzZDliMGVlNzJjZWEKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1y
ZWR1eC9zcmMvY29udGFpbmVycy9BcHAuanMKQEAgLTAsMCArMSwzMSBAQAoraW1wb3J0IFJlYWN0
LCB7IFByb3BUeXBlcyB9IGZyb20gJ3JlYWN0JworaW1wb3J0IHsgYmluZEFjdGlvbkNyZWF0b3Jz
IH0gZnJvbSAncmVkdXgnCitpbXBvcnQgeyBjb25uZWN0IH0gZnJvbSAncmVhY3QtcmVkdXgnCitp
bXBvcnQgSGVhZGVyIGZyb20gJy4uL2NvbXBvbmVudHMvSGVhZGVyJworaW1wb3J0IE1haW5TZWN0
aW9uIGZyb20gJy4uL2NvbXBvbmVudHMvTWFpblNlY3Rpb24nCitpbXBvcnQgKiBhcyBUb2RvQWN0
aW9ucyBmcm9tICcuLi9hY3Rpb25zJworCitjb25zdCBBcHAgPSAoe3RvZG9zLCBhY3Rpb25zfSkg
PT4gKAorICA8ZGl2PgorICAgIDxIZWFkZXIgYWRkVG9kbz17YWN0aW9ucy5hZGRUb2RvfSAvPgor
ICAgIDxNYWluU2VjdGlvbiB0b2Rvcz17dG9kb3N9IGFjdGlvbnM9e2FjdGlvbnN9IC8+CisgIDwv
ZGl2PgorKQorCitBcHAucHJvcFR5cGVzID0geworICB0b2RvczogUHJvcFR5cGVzLmFycmF5Lmlz
UmVxdWlyZWQsCisgIGFjdGlvbnM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZAorfQorCitj
b25zdCBtYXBTdGF0ZVRvUHJvcHMgPSBzdGF0ZSA9PiAoeworICB0b2Rvczogc3RhdGUudG9kb3MK
K30pCisKK2NvbnN0IG1hcERpc3BhdGNoVG9Qcm9wcyA9IGRpc3BhdGNoID0+ICh7CisgICAgYWN0
aW9uczogYmluZEFjdGlvbkNyZWF0b3JzKFRvZG9BY3Rpb25zLCBkaXNwYXRjaCkKK30pCisKK2V4
cG9ydCBkZWZhdWx0IGNvbm5lY3QoCisgIG1hcFN0YXRlVG9Qcm9wcywKKyAgbWFwRGlzcGF0Y2hU
b1Byb3BzCispKEFwcCkKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L3NyYy9p
bmRleC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L3NyYy9pbmRleC5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40NGY1MGFiMjY5ZDg4YjA0MmU1Mzc1NGQyNjZlMmE5NWQyOTYyOTcwCi0tLSAvZGV2L251bGwK
KysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgvc3JjL2luZGV4LmpzCkBAIC0wLDAgKzEsMTYg
QEAKK2ltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCcKK2ltcG9ydCB7IHJlbmRlciB9IGZyb20gJ3Jl
YWN0LWRvbScKK2ltcG9ydCB7IGNyZWF0ZVN0b3JlIH0gZnJvbSAncmVkdXgnCitpbXBvcnQgeyBQ
cm92aWRlciB9IGZyb20gJ3JlYWN0LXJlZHV4JworaW1wb3J0IEFwcCBmcm9tICcuL2NvbnRhaW5l
cnMvQXBwJworaW1wb3J0IHJlZHVjZXIgZnJvbSAnLi9yZWR1Y2VycycKK2ltcG9ydCAndG9kb212
Yy1hcHAtY3NzL2luZGV4LmNzcycKKworY29uc3Qgc3RvcmUgPSBjcmVhdGVTdG9yZShyZWR1Y2Vy
KQorCityZW5kZXIoCisgIDxQcm92aWRlciBzdG9yZT17c3RvcmV9PgorICAgIDxBcHAgLz4KKyAg
PC9Qcm92aWRlcj4sCisgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyb290JykKKykKZGlmZiAt
LWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L3NyYy9yZWR1Y2Vycy9pbmRleC5qcyBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL3JlYWN0LXJlZHV4L3NyYy9yZWR1Y2Vycy9pbmRleC5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
OTRhY2UzNmI5ODExOTc1NzljNGNlMmI1ZGZiM2U5ZTYzODIzZjE0Ci0tLSAvZGV2L251bGwKKysr
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgvc3JjL3JlZHVjZXJzL2luZGV4LmpzCkBAIC0wLDAg
KzEsOCBAQAoraW1wb3J0IHsgY29tYmluZVJlZHVjZXJzIH0gZnJvbSAncmVkdXgnCitpbXBvcnQg
dG9kb3MgZnJvbSAnLi90b2RvcycKKworY29uc3Qgcm9vdFJlZHVjZXIgPSBjb21iaW5lUmVkdWNl
cnMoeworICB0b2RvcworfSkKKworZXhwb3J0IGRlZmF1bHQgcm9vdFJlZHVjZXIKZGlmZiAtLWdp
dCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L3NyYy9yZWR1Y2Vycy90b2Rvcy5qcyBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL3JlYWN0LXJlZHV4L3NyYy9yZWR1Y2Vycy90b2Rvcy5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NjE0
NTI1MzRhNjI1OGM5ZGVjY2M2ZDJkOTBjMzQ1NWQ0OTUyYjAxCi0tLSAvZGV2L251bGwKKysrIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgvc3JjL3JlZHVjZXJzL3RvZG9zLmpzCkBAIC0wLDAgKzEs
NDkgQEAKK2ltcG9ydCB7IEFERF9UT0RPLCBERUxFVEVfVE9ETywgRURJVF9UT0RPLCBDT01QTEVU
RV9UT0RPLCBDT01QTEVURV9BTEwsIENMRUFSX0NPTVBMRVRFRCB9IGZyb20gJy4uL2NvbnN0YW50
cy9BY3Rpb25UeXBlcycKKworY29uc3QgaW5pdGlhbFN0YXRlID0gW10KKworZXhwb3J0IGRlZmF1
bHQgZnVuY3Rpb24gdG9kb3Moc3RhdGUgPSBpbml0aWFsU3RhdGUsIGFjdGlvbikgeworICBzd2l0
Y2ggKGFjdGlvbi50eXBlKSB7CisgICAgY2FzZSBBRERfVE9ETzoKKyAgICAgIHJldHVybiBbCisg
ICAgICAgIHsKKyAgICAgICAgICBpZDogc3RhdGUucmVkdWNlKChtYXhJZCwgdG9kbykgPT4gTWF0
aC5tYXgodG9kby5pZCwgbWF4SWQpLCAtMSkgKyAxLAorICAgICAgICAgIGNvbXBsZXRlZDogZmFs
c2UsCisgICAgICAgICAgdGV4dDogYWN0aW9uLnRleHQKKyAgICAgICAgfSwKKyAgICAgICAgLi4u
c3RhdGUKKyAgICAgIF0KKworICAgIGNhc2UgREVMRVRFX1RPRE86CisgICAgICByZXR1cm4gc3Rh
dGUuZmlsdGVyKHRvZG8gPT4KKyAgICAgICAgdG9kby5pZCAhPT0gYWN0aW9uLmlkCisgICAgICAp
CisKKyAgICBjYXNlIEVESVRfVE9ETzoKKyAgICAgIHJldHVybiBzdGF0ZS5tYXAodG9kbyA9Pgor
ICAgICAgICB0b2RvLmlkID09PSBhY3Rpb24uaWQgPworICAgICAgICAgIHsgLi4udG9kbywgdGV4
dDogYWN0aW9uLnRleHQgfSA6CisgICAgICAgICAgdG9kbworICAgICAgKQorCisgICAgY2FzZSBD
T01QTEVURV9UT0RPOgorICAgICAgcmV0dXJuIHN0YXRlLm1hcCh0b2RvID0+CisgICAgICAgIHRv
ZG8uaWQgPT09IGFjdGlvbi5pZCA/CisgICAgICAgICAgeyAuLi50b2RvLCBjb21wbGV0ZWQ6ICF0
b2RvLmNvbXBsZXRlZCB9IDoKKyAgICAgICAgICB0b2RvCisgICAgICApCisKKyAgICBjYXNlIENP
TVBMRVRFX0FMTDoKKyAgICAgIGNvbnN0IGFyZUFsbE1hcmtlZCA9IHN0YXRlLmV2ZXJ5KHRvZG8g
PT4gdG9kby5jb21wbGV0ZWQpCisgICAgICByZXR1cm4gc3RhdGUubWFwKHRvZG8gPT4gKHsKKyAg
ICAgICAgLi4udG9kbywKKyAgICAgICAgY29tcGxldGVkOiAhYXJlQWxsTWFya2VkCisgICAgICB9
KSkKKworICAgIGNhc2UgQ0xFQVJfQ09NUExFVEVEOgorICAgICAgcmV0dXJuIHN0YXRlLmZpbHRl
cih0b2RvID0+IHRvZG8uY29tcGxldGVkID09PSBmYWxzZSkKKworICAgIGRlZmF1bHQ6CisgICAg
ICByZXR1cm4gc3RhdGUKKyAgfQorfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVk
dXgvc3JjL3JlZHVjZXJzL3RvZG9zLnNwZWMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9z
cmMvcmVkdWNlcnMvdG9kb3Muc3BlYy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZGRkZWQzNmZiNDU2ODliNGVk
ZDZiMmE5ZTBhOWFjNmIyNGY4NWM1Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVh
Y3QtcmVkdXgvc3JjL3JlZHVjZXJzL3RvZG9zLnNwZWMuanMKQEAgLTAsMCArMSwyODQgQEAKK2lt
cG9ydCB0b2RvcyBmcm9tICcuL3RvZG9zJworaW1wb3J0ICogYXMgdHlwZXMgZnJvbSAnLi4vY29u
c3RhbnRzL0FjdGlvblR5cGVzJworCitkZXNjcmliZSgndG9kb3MgcmVkdWNlcicsICgpID0+IHsK
KyAgaXQoJ3Nob3VsZCBoYW5kbGUgaW5pdGlhbCBzdGF0ZScsICgpID0+IHsKKyAgICBleHBlY3Qo
CisgICAgICB0b2Rvcyh1bmRlZmluZWQsIHt9KQorICAgICkudG9FcXVhbChbCisgICAgICB7Cisg
ICAgICAgIHRleHQ6ICdVc2UgUmVkdXgnLAorICAgICAgICBjb21wbGV0ZWQ6IGZhbHNlLAorICAg
ICAgICBpZDogMAorICAgICAgfQorICAgIF0pCisgIH0pCisKKyAgaXQoJ3Nob3VsZCBoYW5kbGUg
QUREX1RPRE8nLCAoKSA9PiB7CisgICAgZXhwZWN0KAorICAgICAgdG9kb3MoW10sIHsKKyAgICAg
ICAgdHlwZTogdHlwZXMuQUREX1RPRE8sCisgICAgICAgIHRleHQ6ICdSdW4gdGhlIHRlc3RzJwor
ICAgICAgfSkKKyAgICApLnRvRXF1YWwoWworICAgICAgeworICAgICAgICB0ZXh0OiAnUnVuIHRo
ZSB0ZXN0cycsCisgICAgICAgIGNvbXBsZXRlZDogZmFsc2UsCisgICAgICAgIGlkOiAwCisgICAg
ICB9CisgICAgXSkKKworICAgIGV4cGVjdCgKKyAgICAgIHRvZG9zKFsKKyAgICAgICAgeworICAg
ICAgICAgIHRleHQ6ICdVc2UgUmVkdXgnLAorICAgICAgICAgIGNvbXBsZXRlZDogZmFsc2UsCisg
ICAgICAgICAgaWQ6IDAKKyAgICAgICAgfQorICAgICAgXSwgeworICAgICAgICB0eXBlOiB0eXBl
cy5BRERfVE9ETywKKyAgICAgICAgdGV4dDogJ1J1biB0aGUgdGVzdHMnCisgICAgICB9KQorICAg
ICkudG9FcXVhbChbCisgICAgICB7CisgICAgICAgIHRleHQ6ICdSdW4gdGhlIHRlc3RzJywKKyAg
ICAgICAgY29tcGxldGVkOiBmYWxzZSwKKyAgICAgICAgaWQ6IDEKKyAgICAgIH0sIHsKKyAgICAg
ICAgdGV4dDogJ1VzZSBSZWR1eCcsCisgICAgICAgIGNvbXBsZXRlZDogZmFsc2UsCisgICAgICAg
IGlkOiAwCisgICAgICB9CisgICAgXSkKKworICAgIGV4cGVjdCgKKyAgICAgIHRvZG9zKFsKKyAg
ICAgICAgeworICAgICAgICAgIHRleHQ6ICdSdW4gdGhlIHRlc3RzJywKKyAgICAgICAgICBjb21w
bGV0ZWQ6IGZhbHNlLAorICAgICAgICAgIGlkOiAxCisgICAgICAgIH0sIHsKKyAgICAgICAgICB0
ZXh0OiAnVXNlIFJlZHV4JywKKyAgICAgICAgICBjb21wbGV0ZWQ6IGZhbHNlLAorICAgICAgICAg
IGlkOiAwCisgICAgICAgIH0KKyAgICAgIF0sIHsKKyAgICAgICAgdHlwZTogdHlwZXMuQUREX1RP
RE8sCisgICAgICAgIHRleHQ6ICdGaXggdGhlIHRlc3RzJworICAgICAgfSkKKyAgICApLnRvRXF1
YWwoWworICAgICAgeworICAgICAgICB0ZXh0OiAnRml4IHRoZSB0ZXN0cycsCisgICAgICAgIGNv
bXBsZXRlZDogZmFsc2UsCisgICAgICAgIGlkOiAyCisgICAgICB9LCB7CisgICAgICAgIHRleHQ6
ICdSdW4gdGhlIHRlc3RzJywKKyAgICAgICAgY29tcGxldGVkOiBmYWxzZSwKKyAgICAgICAgaWQ6
IDEKKyAgICAgIH0sIHsKKyAgICAgICAgdGV4dDogJ1VzZSBSZWR1eCcsCisgICAgICAgIGNvbXBs
ZXRlZDogZmFsc2UsCisgICAgICAgIGlkOiAwCisgICAgICB9CisgICAgXSkKKyAgfSkKKworICBp
dCgnc2hvdWxkIGhhbmRsZSBERUxFVEVfVE9ETycsICgpID0+IHsKKyAgICBleHBlY3QoCisgICAg
ICB0b2RvcyhbCisgICAgICAgIHsKKyAgICAgICAgICB0ZXh0OiAnUnVuIHRoZSB0ZXN0cycsCisg
ICAgICAgICAgY29tcGxldGVkOiBmYWxzZSwKKyAgICAgICAgICBpZDogMQorICAgICAgICB9LCB7
CisgICAgICAgICAgdGV4dDogJ1VzZSBSZWR1eCcsCisgICAgICAgICAgY29tcGxldGVkOiBmYWxz
ZSwKKyAgICAgICAgICBpZDogMAorICAgICAgICB9CisgICAgICBdLCB7CisgICAgICAgIHR5cGU6
IHR5cGVzLkRFTEVURV9UT0RPLAorICAgICAgICBpZDogMQorICAgICAgfSkKKyAgICApLnRvRXF1
YWwoWworICAgICAgeworICAgICAgICB0ZXh0OiAnVXNlIFJlZHV4JywKKyAgICAgICAgY29tcGxl
dGVkOiBmYWxzZSwKKyAgICAgICAgaWQ6IDAKKyAgICAgIH0KKyAgICBdKQorICB9KQorCisgIGl0
KCdzaG91bGQgaGFuZGxlIEVESVRfVE9ETycsICgpID0+IHsKKyAgICBleHBlY3QoCisgICAgICB0
b2RvcyhbCisgICAgICAgIHsKKyAgICAgICAgICB0ZXh0OiAnUnVuIHRoZSB0ZXN0cycsCisgICAg
ICAgICAgY29tcGxldGVkOiBmYWxzZSwKKyAgICAgICAgICBpZDogMQorICAgICAgICB9LCB7Cisg
ICAgICAgICAgdGV4dDogJ1VzZSBSZWR1eCcsCisgICAgICAgICAgY29tcGxldGVkOiBmYWxzZSwK
KyAgICAgICAgICBpZDogMAorICAgICAgICB9CisgICAgICBdLCB7CisgICAgICAgIHR5cGU6IHR5
cGVzLkVESVRfVE9ETywKKyAgICAgICAgdGV4dDogJ0ZpeCB0aGUgdGVzdHMnLAorICAgICAgICBp
ZDogMQorICAgICAgfSkKKyAgICApLnRvRXF1YWwoWworICAgICAgeworICAgICAgICB0ZXh0OiAn
Rml4IHRoZSB0ZXN0cycsCisgICAgICAgIGNvbXBsZXRlZDogZmFsc2UsCisgICAgICAgIGlkOiAx
CisgICAgICB9LCB7CisgICAgICAgIHRleHQ6ICdVc2UgUmVkdXgnLAorICAgICAgICBjb21wbGV0
ZWQ6IGZhbHNlLAorICAgICAgICBpZDogMAorICAgICAgfQorICAgIF0pCisgIH0pCisKKyAgaXQo
J3Nob3VsZCBoYW5kbGUgQ09NUExFVEVfVE9ETycsICgpID0+IHsKKyAgICBleHBlY3QoCisgICAg
ICB0b2RvcyhbCisgICAgICAgIHsKKyAgICAgICAgICB0ZXh0OiAnUnVuIHRoZSB0ZXN0cycsCisg
ICAgICAgICAgY29tcGxldGVkOiBmYWxzZSwKKyAgICAgICAgICBpZDogMQorICAgICAgICB9LCB7
CisgICAgICAgICAgdGV4dDogJ1VzZSBSZWR1eCcsCisgICAgICAgICAgY29tcGxldGVkOiBmYWxz
ZSwKKyAgICAgICAgICBpZDogMAorICAgICAgICB9CisgICAgICBdLCB7CisgICAgICAgIHR5cGU6
IHR5cGVzLkNPTVBMRVRFX1RPRE8sCisgICAgICAgIGlkOiAxCisgICAgICB9KQorICAgICkudG9F
cXVhbChbCisgICAgICB7CisgICAgICAgIHRleHQ6ICdSdW4gdGhlIHRlc3RzJywKKyAgICAgICAg
Y29tcGxldGVkOiB0cnVlLAorICAgICAgICBpZDogMQorICAgICAgfSwgeworICAgICAgICB0ZXh0
OiAnVXNlIFJlZHV4JywKKyAgICAgICAgY29tcGxldGVkOiBmYWxzZSwKKyAgICAgICAgaWQ6IDAK
KyAgICAgIH0KKyAgICBdKQorICB9KQorCisgIGl0KCdzaG91bGQgaGFuZGxlIENPTVBMRVRFX0FM
TCcsICgpID0+IHsKKyAgICBleHBlY3QoCisgICAgICB0b2RvcyhbCisgICAgICAgIHsKKyAgICAg
ICAgICB0ZXh0OiAnUnVuIHRoZSB0ZXN0cycsCisgICAgICAgICAgY29tcGxldGVkOiB0cnVlLAor
ICAgICAgICAgIGlkOiAxCisgICAgICAgIH0sIHsKKyAgICAgICAgICB0ZXh0OiAnVXNlIFJlZHV4
JywKKyAgICAgICAgICBjb21wbGV0ZWQ6IGZhbHNlLAorICAgICAgICAgIGlkOiAwCisgICAgICAg
IH0KKyAgICAgIF0sIHsKKyAgICAgICAgdHlwZTogdHlwZXMuQ09NUExFVEVfQUxMCisgICAgICB9
KQorICAgICkudG9FcXVhbChbCisgICAgICB7CisgICAgICAgIHRleHQ6ICdSdW4gdGhlIHRlc3Rz
JywKKyAgICAgICAgY29tcGxldGVkOiB0cnVlLAorICAgICAgICBpZDogMQorICAgICAgfSwgewor
ICAgICAgICB0ZXh0OiAnVXNlIFJlZHV4JywKKyAgICAgICAgY29tcGxldGVkOiB0cnVlLAorICAg
ICAgICBpZDogMAorICAgICAgfQorICAgIF0pCisKKyAgICAvLyBVbm1hcmsgaWYgYWxsIHRvZG9z
IGFyZSBjdXJyZW50bHkgY29tcGxldGVkCisgICAgZXhwZWN0KAorICAgICAgdG9kb3MoWworICAg
ICAgICB7CisgICAgICAgICAgdGV4dDogJ1J1biB0aGUgdGVzdHMnLAorICAgICAgICAgIGNvbXBs
ZXRlZDogdHJ1ZSwKKyAgICAgICAgICBpZDogMQorICAgICAgICB9LCB7CisgICAgICAgICAgdGV4
dDogJ1VzZSBSZWR1eCcsCisgICAgICAgICAgY29tcGxldGVkOiB0cnVlLAorICAgICAgICAgIGlk
OiAwCisgICAgICAgIH0KKyAgICAgIF0sIHsKKyAgICAgICAgdHlwZTogdHlwZXMuQ09NUExFVEVf
QUxMCisgICAgICB9KQorICAgICkudG9FcXVhbChbCisgICAgICB7CisgICAgICAgIHRleHQ6ICdS
dW4gdGhlIHRlc3RzJywKKyAgICAgICAgY29tcGxldGVkOiBmYWxzZSwKKyAgICAgICAgaWQ6IDEK
KyAgICAgIH0sIHsKKyAgICAgICAgdGV4dDogJ1VzZSBSZWR1eCcsCisgICAgICAgIGNvbXBsZXRl
ZDogZmFsc2UsCisgICAgICAgIGlkOiAwCisgICAgICB9CisgICAgXSkKKyAgfSkKKworICBpdCgn
c2hvdWxkIGhhbmRsZSBDTEVBUl9DT01QTEVURUQnLCAoKSA9PiB7CisgICAgZXhwZWN0KAorICAg
ICAgdG9kb3MoWworICAgICAgICB7CisgICAgICAgICAgdGV4dDogJ1J1biB0aGUgdGVzdHMnLAor
ICAgICAgICAgIGNvbXBsZXRlZDogdHJ1ZSwKKyAgICAgICAgICBpZDogMQorICAgICAgICB9LCB7
CisgICAgICAgICAgdGV4dDogJ1VzZSBSZWR1eCcsCisgICAgICAgICAgY29tcGxldGVkOiBmYWxz
ZSwKKyAgICAgICAgICBpZDogMAorICAgICAgICB9CisgICAgICBdLCB7CisgICAgICAgIHR5cGU6
IHR5cGVzLkNMRUFSX0NPTVBMRVRFRAorICAgICAgfSkKKyAgICApLnRvRXF1YWwoWworICAgICAg
eworICAgICAgICB0ZXh0OiAnVXNlIFJlZHV4JywKKyAgICAgICAgY29tcGxldGVkOiBmYWxzZSwK
KyAgICAgICAgaWQ6IDAKKyAgICAgIH0KKyAgICBdKQorICB9KQorCisgIGl0KCdzaG91bGQgbm90
IGdlbmVyYXRlIGR1cGxpY2F0ZSBpZHMgYWZ0ZXIgQ0xFQVJfQ09NUExFVEVEJywgKCkgPT4gewor
ICAgIGV4cGVjdCgKKyAgICAgIFsKKyAgICAgICAgeworICAgICAgICAgIHR5cGU6IHR5cGVzLkNP
TVBMRVRFX1RPRE8sCisgICAgICAgICAgaWQ6IDAKKyAgICAgICAgfSwgeworICAgICAgICAgIHR5
cGU6IHR5cGVzLkNMRUFSX0NPTVBMRVRFRAorICAgICAgICB9LCB7CisgICAgICAgICAgdHlwZTog
dHlwZXMuQUREX1RPRE8sCisgICAgICAgICAgdGV4dDogJ1dyaXRlIG1vcmUgdGVzdHMnCisgICAg
ICAgIH0KKyAgICAgIF0ucmVkdWNlKHRvZG9zLCBbCisgICAgICAgIHsKKyAgICAgICAgICBpZDog
MCwKKyAgICAgICAgICBjb21wbGV0ZWQ6IGZhbHNlLAorICAgICAgICAgIHRleHQ6ICdVc2UgUmVk
dXgnCisgICAgICAgIH0sIHsKKyAgICAgICAgICBpZDogMSwKKyAgICAgICAgICBjb21wbGV0ZWQ6
IGZhbHNlLAorICAgICAgICAgIHRleHQ6ICdXcml0ZSB0ZXN0cycKKyAgICAgICAgfQorICAgICAg
XSkKKyAgICApLnRvRXF1YWwoWworICAgICAgeworICAgICAgICB0ZXh0OiAnV3JpdGUgbW9yZSB0
ZXN0cycsCisgICAgICAgIGNvbXBsZXRlZDogZmFsc2UsCisgICAgICAgIGlkOiAyCisgICAgICB9
LCB7CisgICAgICAgIHRleHQ6ICdXcml0ZSB0ZXN0cycsCisgICAgICAgIGNvbXBsZXRlZDogZmFs
c2UsCisgICAgICAgIGlkOiAxCisgICAgICB9CisgICAgXSkKKyAgfSkKK30pCmRpZmYgLS1naXQg
YS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC95YXJuLmxvY2sgYi9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1y
ZWR1eC95YXJuLmxvY2sKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjQ0ZmU5NmNlZTMwZDRlYmU4ODc0Y2QxNjcxNWVi
Zjc4ZGY4Yjg3YQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L3lh
cm4ubG9jawpAQCAtMCwwICsxLDU1MjkgQEAKKyMgVEhJUyBJUyBBTiBBVVRPR0VORVJBVEVEIEZJ
TEUuIERPIE5PVCBFRElUIFRISVMgRklMRSBESVJFQ1RMWS4KKyMgeWFybiBsb2NrZmlsZSB2MQor
YWJhYkBeMS4wLjA6CisgIHZlcnNpb24gIjEuMC4zIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9hYmFiLy0vYWJhYi0xLjAuMy50Z3ojYjgxZGU1ZjcyNzRlYzRlNzU2
ZDc5N2NkODM0ZjMwMzY0MjcyNGU1ZCIKKworYWJicmV2QDEsIGFiYnJldkAxLjAueDoKKyAgdmVy
c2lvbiAiMS4wLjkiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Fi
YnJldi8tL2FiYnJldi0xLjAuOS50Z3ojOTFiNDc5MjU4OGE3NzM4YzI1ZjM1ZGQ2ZjYzNzUyYTJm
ODc3NjEzNSIKKworYWNjZXB0c0B+MS4zLjM6CisgIHZlcnNpb24gIjEuMy4zIgorICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9hY2NlcHRzLy0vYWNjZXB0cy0xLjMuMy50
Z3ojYzNjYTc0MzQ5Mzg2NDhjM2UwZDljMWUzMjhkZDY4YjYyMmMyODRjYSIKKyAgZGVwZW5kZW5j
aWVzOgorICAgIG1pbWUtdHlwZXMgIn4yLjEuMTEiCisgICAgbmVnb3RpYXRvciAiMC42LjEiCisK
K2Fjb3JuLWdsb2JhbHNAXjEuMC40OgorICB2ZXJzaW9uICIxLjAuOSIKKyAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYWNvcm4tZ2xvYmFscy8tL2Fjb3JuLWdsb2JhbHMt
MS4wLjkudGd6IzU1YmI1ZTk4NjkxNTA3Yjc0NTc5ZDA1MTM0MTMyMTdjMzgwYzU0Y2YiCisgIGRl
cGVuZGVuY2llczoKKyAgICBhY29ybiAiXjIuMS4wIgorCithY29ybi1qc3hAXjMuMC4wOgorICB2
ZXJzaW9uICIzLjAuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
YWNvcm4tanN4Ly0vYWNvcm4tanN4LTMuMC4xLnRneiNhZmRmOTQ4OGZiMWVjZWZjODM0OGY2ZmIy
MmY0NjRlMzJhNThiMzZiIgorICBkZXBlbmRlbmNpZXM6CisgICAgYWNvcm4gIl4zLjAuNCIKKwor
YWNvcm5AXjIuMS4wLCBhY29ybkBeMi40LjA6CisgIHZlcnNpb24gIjIuNy4wIgorICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9hY29ybi8tL2Fjb3JuLTIuNy4wLnRneiNh
YjZlN2Q5ZDg4NmFhY2E4YjA4NWJjMzMxMmI3OWExOTg0MzNmMGU3IgorCithY29ybkBeMy4wLjAs
IGFjb3JuQF4zLjAuNDoKKyAgdmVyc2lvbiAiMy4zLjAiCisgIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL2Fjb3JuLy0vYWNvcm4tMy4zLjAudGd6IzQ1ZTM3ZmIzOWU4ZGEz
ZjI1YmFlZTNmZjUzNjllMmJiNWYyMjAxN2EiCisKK2Fjb3JuQF40LjAuMToKKyAgdmVyc2lvbiAi
NC4wLjMiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Fjb3JuLy0v
YWNvcm4tNC4wLjMudGd6IzFhM2U4NTBiNDI4ZTczYmE2YjA5ZDFjYzUyN2Y1YWFhZDRkMDNlZjEi
CisKK2Fqdi1rZXl3b3Jkc0BeMS4wLjA6CisgIHZlcnNpb24gIjEuMS4xIgorICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9hanYta2V5d29yZHMvLS9hanYta2V5d29yZHMt
MS4xLjEudGd6IzAyNTUwYmM2MDVhM2U1NzYwNDE1NjU2MjhhZjk3MmUwNmM1NDlkNTAiCisKK2Fq
dkBeNC43LjA6CisgIHZlcnNpb24gIjQuNy43IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9hanYvLS9hanYtNC43LjcudGd6IzQ5ODBkNWY2NWNlOTBhMjU3OTUzMmVl
YzY2NDI5ZjMyMGRlYTAzMjEiCisgIGRlcGVuZGVuY2llczoKKyAgICBjbyAiXjQuNi4wIgorICAg
IGpzb24tc3RhYmxlLXN0cmluZ2lmeSAiXjEuMC4xIgorCithbGlnbi10ZXh0QF4wLjEuMSwgYWxp
Z24tdGV4dEBeMC4xLjM6CisgIHZlcnNpb24gIjAuMS40IgorICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9hbGlnbi10ZXh0Ly0vYWxpZ24tdGV4dC0wLjEuNC50Z3ojMGNk
OTBhNTYxMDkzZjM1ZDBhOTkyNTZjMjJiNzA2OTQzM2ZhZDExNyIKKyAgZGVwZW5kZW5jaWVzOgor
ICAgIGtpbmQtb2YgIl4zLjAuMiIKKyAgICBsb25nZXN0ICJeMS4wLjEiCisgICAgcmVwZWF0LXN0
cmluZyAiXjEuNS4yIgorCithbHBoYW51bS1zb3J0QF4xLjAuMSwgYWxwaGFudW0tc29ydEBeMS4w
LjI6CisgIHZlcnNpb24gIjEuMC4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9hbHBoYW51bS1zb3J0Ly0vYWxwaGFudW0tc29ydC0xLjAuMi50Z3ojOTdhMTExOTY0
OWIyMTFhZDMzNjkxZDlmOWY0ODZhOGVjOWZiZTBhMyIKKworYW1kZWZpbmVAPj0wLjAuNDoKKyAg
dmVyc2lvbiAiMS4wLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L2FtZGVmaW5lLy0vYW1kZWZpbmUtMS4wLjAudGd6I2ZkMTc0NzQ3MDBjYjVjYzljMmI3MDlmMGJl
OWQyM2NlM2MxOThjMzMiCisKK2Fuc2ktZXNjYXBlc0BeMS4xLjAsIGFuc2ktZXNjYXBlc0BeMS40
LjA6CisgIHZlcnNpb24gIjEuNC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9hbnNpLWVzY2FwZXMvLS9hbnNpLWVzY2FwZXMtMS40LjAudGd6I2QzYThhODNiMzE5
YWE2Nzc5MzY2MmIxM2U3NjFjNzkxMTQyMjMwNmUiCisKK2Fuc2ktaHRtbEAwLjAuNToKKyAgdmVy
c2lvbiAiMC4wLjUiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Fu
c2ktaHRtbC8tL2Fuc2ktaHRtbC0wLjAuNS50Z3ojMGRjYWE1YTA4MTIwNjg2NmJjMjQwYTNiNzcz
YTE4NGVhM2I4OGI2NCIKKworYW5zaS1yZWdleEBeMi4wLjA6CisgIHZlcnNpb24gIjIuMC4wIgor
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9hbnNpLXJlZ2V4Ly0vYW5z
aS1yZWdleC0yLjAuMC50Z3ojYzUwNjFiNmUwZWY4YTgxNzc1ZTUwZjVkNjYxNTFiZjZiZjM3MTEw
NyIKKworYW5zaS1zdHlsZXNAXjIuMi4xOgorICB2ZXJzaW9uICIyLjIuMSIKKyAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYW5zaS1zdHlsZXMvLS9hbnNpLXN0eWxlcy0y
LjIuMS50Z3ojYjQzMmRkMzM1OGI2MzRjZjc1ZTFlNDY2NDM2ODI0MDUzM2MxZGRiZSIKKworYW5z
aWNvbG9yc0B+MC4yLjE6CisgIHZlcnNpb24gIjAuMi4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9hbnNpY29sb3JzLy0vYW5zaWNvbG9ycy0wLjIuMS50Z3ojYmUw
ODk1OTkwOTdiNzRhNWM5YzRhODRhMGNkYmNkYjYyYmQ4N2FlZiIKKworYW55bWF0Y2hAXjEuMy4w
OgorICB2ZXJzaW9uICIxLjMuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vYW55bWF0Y2gvLS9hbnltYXRjaC0xLjMuMC50Z3ojYTNlNTJmYTM5MTY4YzgyNWZmNTdi
MDI0ODEyNmNlNWE4ZmY5NTUwNyIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGFycmlmeSAiXjEuMC4w
IgorICAgIG1pY3JvbWF0Y2ggIl4yLjEuNSIKKworYXBwZW5kLXRyYW5zZm9ybUBeMC4zLjA6Cisg
IHZlcnNpb24gIjAuMy4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9hcHBlbmQtdHJhbnNmb3JtLy0vYXBwZW5kLXRyYW5zZm9ybS0wLjMuMC50Z3ojZDY5MzNjZTRh
ODVmMDk0NDVkOWNjYzRjYzExOTA1MWI3MzgxYTgxMyIKKworYXByb2JhQF4xLjAuMzoKKyAgdmVy
c2lvbiAiMS4wLjQiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Fw
cm9iYS8tL2Fwcm9iYS0xLjAuNC50Z3ojMjcxMzY4MDc3NWU3NjE0YzhiYTE4NmMwNjVkNGUyZTUy
ZDEwNzJjMCIKKworYXJlLXdlLXRoZXJlLXlldEB+MS4xLjI6CisgIHZlcnNpb24gIjEuMS4yIgor
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9hcmUtd2UtdGhlcmUteWV0
Ly0vYXJlLXdlLXRoZXJlLXlldC0xLjEuMi50Z3ojODBlNDcwZTk1YTA4NDc5NGZlMTg5OTI2MmM1
NjY3YzZlODhkZTFiMyIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGRlbGVnYXRlcyAiXjEuMC4wIgor
ICAgIHJlYWRhYmxlLXN0cmVhbSAiXjIuMC4wIHx8IF4xLjEuMTMiCisKK2FyZ3BhcnNlQF4xLjAu
NzoKKyAgdmVyc2lvbiAiMS4wLjkiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w
a2cuY29tL2FyZ3BhcnNlLy0vYXJncGFyc2UtMS4wLjkudGd6IzczZDgzYmMyNjNmODZlOTdmOGNj
NGY2YmFlMWIwZTkwYTdkMjJjODYiCisgIGRlcGVuZGVuY2llczoKKyAgICBzcHJpbnRmLWpzICJ+
MS4wLjIiCisKK2Fyci1kaWZmQF4yLjAuMDoKKyAgdmVyc2lvbiAiMi4wLjAiCisgIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Fyci1kaWZmLy0vYXJyLWRpZmYtMi4wLjAu
dGd6IzhmM2I4MjdmOTU1YThiZDY2OTY5N2U0YTQyNTZhYzNjZWFlMzU2Y2YiCisgIGRlcGVuZGVu
Y2llczoKKyAgICBhcnItZmxhdHRlbiAiXjEuMC4xIgorCithcnItZmxhdHRlbkBeMS4wLjE6Cisg
IHZlcnNpb24gIjEuMC4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9hcnItZmxhdHRlbi8tL2Fyci1mbGF0dGVuLTEuMC4xLnRneiNlNWZmZTU0ZDQ1ZTE5ZjMyZjIx
NmU5MWViOTljOGNlODkyYmI2MDRiIgorCithcnJheS1kaWZmZXJAXjEuMC4wOgorICB2ZXJzaW9u
ICIxLjAuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYXJyYXkt
ZGlmZmVyLy0vYXJyYXktZGlmZmVyLTEuMC4wLnRneiNlZmY1MmUzNzU4MjQ5ZDMzYmU0MDJiOGJi
OGU1NjRiYjJiNWQ0MDMxIgorCithcnJheS1lcXVhbEBeMS4wLjA6CisgIHZlcnNpb24gIjEuMC4w
IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9hcnJheS1lcXVhbC8t
L2FycmF5LWVxdWFsLTEuMC4wLnRneiM4YzJhNWVmMjQ3MmZkOWVhNzQyYjA0Yzc3YTc1MDkzYmEy
NzU3YzkzIgorCithcnJheS1mbGF0dGVuQDEuMS4xOgorICB2ZXJzaW9uICIxLjEuMSIKKyAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYXJyYXktZmxhdHRlbi8tL2FycmF5
LWZsYXR0ZW4tMS4xLjEudGd6IzlhNWY2OTkwNTFiMWU3MDczMzI4ZjJhMDA4OTY4YjY0ZWEyOTU1
ZDIiCisKK2FycmF5LXVuaW9uQF4xLjAuMToKKyAgdmVyc2lvbiAiMS4wLjIiCisgIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2FycmF5LXVuaW9uLy0vYXJyYXktdW5pb24t
MS4wLjIudGd6IzlhMzQ0MTBlNGY0ZTNkYTIzZGVhMzc1YmU1YmU3MGYyNDc3OGVjMzkiCisgIGRl
cGVuZGVuY2llczoKKyAgICBhcnJheS11bmlxICJeMS4wLjEiCisKK2FycmF5LXVuaXFAXjEuMC4x
OgorICB2ZXJzaW9uICIxLjAuMyIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vYXJyYXktdW5pcS8tL2FycmF5LXVuaXEtMS4wLjMudGd6I2FmNmFjODc3YTI1Y2M3Zjc0
ZTA1ODg5NDc1Mzg1OGRmZGIyNGZkYjYiCisKK2FycmF5LXVuaXF1ZUBeMC4yLjE6CisgIHZlcnNp
b24gIjAuMi4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9hcnJh
eS11bmlxdWUvLS9hcnJheS11bmlxdWUtMC4yLjEudGd6I2ExZDk3Y2NhZmNiYzI2MjVjYzcwZmFk
Y2ViMzZhNTBjNThiMDFhNTMiCisKK2FycmlmeUBeMS4wLjAsIGFycmlmeUBeMS4wLjE6CisgIHZl
cnNpb24gIjEuMC4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9h
cnJpZnkvLS9hcnJpZnktMS4wLjEudGd6Izg5ODUwOGRhMjIyNmYzODBkZjkwNDcyODQ1Njg0OWMx
NTAxYTRiMGQiCisKK2FzYXBAfjIuMC4zOgorICB2ZXJzaW9uICIyLjAuNSIKKyAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYXNhcC8tL2FzYXAtMi4wLjUudGd6IzUyMjc2
NWI1MGMzNTEwNDkwZTUyZDdkY2ZlMDg1ZWY5YmE5Njk1OGYiCisKK2FzbjFAfjAuMi4zOgorICB2
ZXJzaW9uICIwLjIuMyIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
YXNuMS8tL2FzbjEtMC4yLjMudGd6I2RhYzg3ODc3MTNjOTk2Njg0OWZjODE4MDc3N2ViZTljMWRk
ZjNiODYiCisKK2Fzc2VydC1wbHVzQF4wLjIuMDoKKyAgdmVyc2lvbiAiMC4yLjAiCisgIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Fzc2VydC1wbHVzLy0vYXNzZXJ0LXBs
dXMtMC4yLjAudGd6I2Q3NGUxYjg3ZTdhZmZjMGRiOGFhZGI3MDIxZjNmZTQ4MTAxYWIyMzQiCisK
K2Fzc2VydC1wbHVzQF4xLjAuMDoKKyAgdmVyc2lvbiAiMS4wLjAiCisgIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Fzc2VydC1wbHVzLy0vYXNzZXJ0LXBsdXMtMS4wLjAu
dGd6I2YxMmUwZjNjNWQ3N2IwYjFjZGQ5MTQ2OTQyZTRlOTZjMWU0ZGQ1MjUiCisKK2Fzc2VydEBe
MS4xLjE6CisgIHZlcnNpb24gIjEuNC4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9hc3NlcnQvLS9hc3NlcnQtMS40LjEudGd6Izk5OTEyZDU5MTgzNmI1YTZmNWIz
NDVjMGYwN2VlZmMwOGZjNjVkOTEiCisgIGRlcGVuZGVuY2llczoKKyAgICB1dGlsICIwLjEwLjMi
CisKK2FzeW5jLWVhY2hAXjEuMC4wOgorICB2ZXJzaW9uICIxLjAuMSIKKyAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYXN5bmMtZWFjaC8tL2FzeW5jLWVhY2gtMS4wLjEu
dGd6IzE5ZDM4NmExZDllZGM2ZTdjMWM4NWQzODhhZWRiY2M1NmQzMzYwMmQiCisKK2FzeW5jQF4w
LjkuMDoKKyAgdmVyc2lvbiAiMC45LjIiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL2FzeW5jLy0vYXN5bmMtMC45LjIudGd6I2FlYTc0ZDVlNjFjMWY4OTk2MTNiZjY0
YmRhNjZkNGM3OGYyZmQxN2QiCisKK2FzeW5jQF4xLjMuMCwgYXN5bmNAXjEuNC4wLCBhc3luY0Be
MS40LjIsIGFzeW5jQF4xLjUuMCwgYXN5bmNAMS54OgorICB2ZXJzaW9uICIxLjUuMiIKKyAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYXN5bmMvLS9hc3luYy0xLjUuMi50
Z3ojZWM2YTYxYWU1NjQ4MGMwYzNjYjI0MWM5NTYxOGUyMDg5MmY5NjcyYSIKKworYXN5bmNAfjAu
Mi42OgorICB2ZXJzaW9uICIwLjIuMTAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL2FzeW5jLy0vYXN5bmMtMC4yLjEwLnRneiNiNmJiZTBiMDY3NGI5ZDcxOTcwOGNh
MzhkZThjMjM3Y2I1MjZjM2QxIgorCithc3luY2tpdEBeMC40LjA6CisgIHZlcnNpb24gIjAuNC4w
IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9hc3luY2tpdC8tL2Fz
eW5ja2l0LTAuNC4wLnRneiNjNzllZDk3ZjdmMzRjYjhmMmJhMWJjOTc5MGJjYzM2NjQ3NGI0Yjc5
IgorCithdXRvcHJlZml4ZXJAXjYuMy4xOgorICB2ZXJzaW9uICI2LjUuMCIKKyAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYXV0b3ByZWZpeGVyLy0vYXV0b3ByZWZpeGVy
LTYuNS4wLnRneiM5MTBkZTBhYTBmMjJhZjRjN2Q1MDM2N2NiYzlkNGQ0MTI5NDUxNjJmIgorICBk
ZXBlbmRlbmNpZXM6CisgICAgYnJvd3NlcnNsaXN0ICJ+MS40LjAiCisgICAgY2FuaXVzZS1kYiAi
XjEuMC4zMDAwMDU0MCIKKyAgICBub3JtYWxpemUtcmFuZ2UgIl4wLjEuMiIKKyAgICBudW0yZnJh
Y3Rpb24gIl4xLjIuMiIKKyAgICBwb3N0Y3NzICJeNS4yLjIiCisgICAgcG9zdGNzcy12YWx1ZS1w
YXJzZXIgIl4zLjIuMyIKKworYXV0b3ByZWZpeGVyQDYuNC4xOgorICB2ZXJzaW9uICI2LjQuMSIK
KyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYXV0b3ByZWZpeGVyLy0v
YXV0b3ByZWZpeGVyLTYuNC4xLnRneiNjMWJhODQ2MTc1OWZhZjVmYjc3MzdkYmRiZTVlYTQ2YTc4
YzY4YTZmIgorICBkZXBlbmRlbmNpZXM6CisgICAgYnJvd3NlcnNsaXN0ICJ+MS4zLjYiCisgICAg
Y2FuaXVzZS1kYiAiXjEuMC4zMDAwMDUyNyIKKyAgICBub3JtYWxpemUtcmFuZ2UgIl4wLjEuMiIK
KyAgICBudW0yZnJhY3Rpb24gIl4xLjIuMiIKKyAgICBwb3N0Y3NzICJeNS4xLjIiCisgICAgcG9z
dGNzcy12YWx1ZS1wYXJzZXIgIl4zLjIuMyIKKworYXdzLXNpZ24yQH4wLjYuMDoKKyAgdmVyc2lv
biAiMC42LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2F3cy1z
aWduMi8tL2F3cy1zaWduMi0wLjYuMC50Z3ojMTQzNDJkZDM4ZGJjYzk0ZDBlNWI4N2Q3NjNjZDYz
NjEyYzBlNzk0ZiIKKworYXdzNEBeMS4yLjE6CisgIHZlcnNpb24gIjEuNC4xIgorICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9hd3M0Ly0vYXdzNC0xLjQuMS50Z3ojZmRl
N2Q1MjkyNDY2ZDIzMGU1ZWUwZjRlMDM4ZDlkZmFhYjA4ZmM2MSIKKworYmFiZWwtY29kZS1mcmFt
ZUBeNi4xMS4wLCBiYWJlbC1jb2RlLWZyYW1lQF42LjE2LjAsIGJhYmVsLWNvZGUtZnJhbWVAXjYu
OC4wOgorICB2ZXJzaW9uICI2LjE2LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL2JhYmVsLWNvZGUtZnJhbWUvLS9iYWJlbC1jb2RlLWZyYW1lLTYuMTYuMC50Z3oj
ZjkwZTYwZGEwODYyOTA5ZDNjZTA5ODczM2I1ZDM5ODdjOTdjYjhkZSIKKyAgZGVwZW5kZW5jaWVz
OgorICAgIGNoYWxrICJeMS4xLjAiCisgICAgZXN1dGlscyAiXjIuMC4yIgorICAgIGpzLXRva2Vu
cyAiXjIuMC4wIgorCitiYWJlbC1jb3JlQF42LjAuMCwgYmFiZWwtY29yZUBeNi4xMS40LCBiYWJl
bC1jb3JlQF42LjE0LjAsIGJhYmVsLWNvcmVAXjYuMTYuMDoKKyAgdmVyc2lvbiAiNi4xNy4wIgor
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1jb3JlLy0vYmFi
ZWwtY29yZS02LjE3LjAudGd6IzZjNDU3NjQ0N2RmNDc5ZTI0MWU1OGM4MDdlNGJjN2RhNGRiN2Y0
MjUiCisgIGRlcGVuZGVuY2llczoKKyAgICBiYWJlbC1jb2RlLWZyYW1lICJeNi4xNi4wIgorICAg
IGJhYmVsLWdlbmVyYXRvciAiXjYuMTcuMCIKKyAgICBiYWJlbC1oZWxwZXJzICJeNi4xNi4wIgor
ICAgIGJhYmVsLW1lc3NhZ2VzICJeNi44LjAiCisgICAgYmFiZWwtcmVnaXN0ZXIgIl42LjE2LjAi
CisgICAgYmFiZWwtcnVudGltZSAiXjYuOS4xIgorICAgIGJhYmVsLXRlbXBsYXRlICJeNi4xNi4w
IgorICAgIGJhYmVsLXRyYXZlcnNlICJeNi4xNi4wIgorICAgIGJhYmVsLXR5cGVzICJeNi4xNi4w
IgorICAgIGJhYnlsb24gIl42LjExLjAiCisgICAgY29udmVydC1zb3VyY2UtbWFwICJeMS4xLjAi
CisgICAgZGVidWcgIl4yLjEuMSIKKyAgICBqc29uNSAiXjAuNC4wIgorICAgIGxvZGFzaCAiXjQu
Mi4wIgorICAgIG1pbmltYXRjaCAiXjMuMC4yIgorICAgIHBhdGgtZXhpc3RzICJeMS4wLjAiCisg
ICAgcGF0aC1pcy1hYnNvbHV0ZSAiXjEuMC4wIgorICAgIHByaXZhdGUgIl4wLjEuNiIKKyAgICBz
aGViYW5nLXJlZ2V4ICJeMS4wLjAiCisgICAgc2xhc2ggIl4xLjAuMCIKKyAgICBzb3VyY2UtbWFw
ICJeMC41LjAiCisKK2JhYmVsLWNvcmVANi4xNC4wOgorICB2ZXJzaW9uICI2LjE0LjAiCisgIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLWNvcmUvLS9iYWJlbC1j
b3JlLTYuMTQuMC50Z3ojYzllMTNlZDRlMmY5NzMyOTIxNTQ5NmZkOWZiNDhmMmIzYmNiOWI0MiIK
KyAgZGVwZW5kZW5jaWVzOgorICAgIGJhYmVsLWNvZGUtZnJhbWUgIl42LjguMCIKKyAgICBiYWJl
bC1nZW5lcmF0b3IgIl42LjE0LjAiCisgICAgYmFiZWwtaGVscGVycyAiXjYuOC4wIgorICAgIGJh
YmVsLW1lc3NhZ2VzICJeNi44LjAiCisgICAgYmFiZWwtcmVnaXN0ZXIgIl42LjE0LjAiCisgICAg
YmFiZWwtcnVudGltZSAiXjYuOS4xIgorICAgIGJhYmVsLXRlbXBsYXRlICJeNi4xNC4wIgorICAg
IGJhYmVsLXRyYXZlcnNlICJeNi4xNC4wIgorICAgIGJhYmVsLXR5cGVzICJeNi4xNC4wIgorICAg
IGJhYnlsb24gIl42LjkuMCIKKyAgICBjb252ZXJ0LXNvdXJjZS1tYXAgIl4xLjEuMCIKKyAgICBk
ZWJ1ZyAiXjIuMS4xIgorICAgIGpzb241ICJeMC40LjAiCisgICAgbG9kYXNoICJeNC4yLjAiCisg
ICAgbWluaW1hdGNoICJeMy4wLjIiCisgICAgcGF0aC1leGlzdHMgIl4xLjAuMCIKKyAgICBwYXRo
LWlzLWFic29sdXRlICJeMS4wLjAiCisgICAgcHJpdmF0ZSAiXjAuMS42IgorICAgIHNoZWJhbmct
cmVnZXggIl4xLjAuMCIKKyAgICBzbGFzaCAiXjEuMC4wIgorICAgIHNvdXJjZS1tYXAgIl4wLjUu
MCIKKworYmFiZWwtZXNsaW50QDYuMS4yOgorICB2ZXJzaW9uICI2LjEuMiIKKyAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtZXNsaW50Ly0vYmFiZWwtZXNsaW50
LTYuMS4yLnRneiM1MjkzNDE5ZmUzNjcyZDY2NTk4ZDMyN2RhOTY5NDU2N2JhNmE1ZjJmIgorICBk
ZXBlbmRlbmNpZXM6CisgICAgYmFiZWwtdHJhdmVyc2UgIl42LjAuMjAiCisgICAgYmFiZWwtdHlw
ZXMgIl42LjAuMTkiCisgICAgYmFieWxvbiAiXjYuMC4xOCIKKyAgICBsb2Rhc2guYXNzaWduICJe
NC4wLjAiCisgICAgbG9kYXNoLnBpY2tieSAiXjQuMC4wIgorCitiYWJlbC1nZW5lcmF0b3JAXjYu
MTEuMywgYmFiZWwtZ2VuZXJhdG9yQF42LjE0LjAsIGJhYmVsLWdlbmVyYXRvckBeNi4xNy4wOgor
ICB2ZXJzaW9uICI2LjE3LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL2JhYmVsLWdlbmVyYXRvci8tL2JhYmVsLWdlbmVyYXRvci02LjE3LjAudGd6I2I4OTRlMzgw
OGJlZWY3ODAwZjI1NTA2MzViZmUwMjRiNjIyNmNmMzMiCisgIGRlcGVuZGVuY2llczoKKyAgICBi
YWJlbC1tZXNzYWdlcyAiXjYuOC4wIgorICAgIGJhYmVsLXJ1bnRpbWUgIl42LjkuMCIKKyAgICBi
YWJlbC10eXBlcyAiXjYuMTYuMCIKKyAgICBkZXRlY3QtaW5kZW50ICJeMy4wLjEiCisgICAganNl
c2MgIl4xLjMuMCIKKyAgICBsb2Rhc2ggIl40LjIuMCIKKyAgICBzb3VyY2UtbWFwICJeMC41LjAi
CisKK2JhYmVsLWhlbHBlci1idWlsZGVyLWJpbmFyeS1hc3NpZ25tZW50LW9wZXJhdG9yLXZpc2l0
b3JAXjYuOC4wOgorICB2ZXJzaW9uICI2LjE1LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL2JhYmVsLWhlbHBlci1idWlsZGVyLWJpbmFyeS1hc3NpZ25tZW50LW9w
ZXJhdG9yLXZpc2l0b3IvLS9iYWJlbC1oZWxwZXItYnVpbGRlci1iaW5hcnktYXNzaWdubWVudC1v
cGVyYXRvci12aXNpdG9yLTYuMTUuMC50Z3ojMzllOWVlMTQzZjc5N2I2NDIyNjJlNDY0NmM2ODFj
MzIwODllZjFhYiIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGJhYmVsLWhlbHBlci1leHBsb2RlLWFz
c2lnbmFibGUtZXhwcmVzc2lvbiAiXjYuOC4wIgorICAgIGJhYmVsLXJ1bnRpbWUgIl42LjAuMCIK
KyAgICBiYWJlbC10eXBlcyAiXjYuMTUuMCIKKworYmFiZWwtaGVscGVyLWJ1aWxkZXItcmVhY3Qt
anN4QF42LjguMDoKKyAgdmVyc2lvbiAiNi45LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL2JhYmVsLWhlbHBlci1idWlsZGVyLXJlYWN0LWpzeC8tL2JhYmVsLWhl
bHBlci1idWlsZGVyLXJlYWN0LWpzeC02LjkuMC50Z3ojYTYzMzk3OGQ2NjljNGM5ZGNhZDcxNmNj
NTc3ZWUzZTBiYjhhZTcyMyIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGJhYmVsLXJ1bnRpbWUgIl42
LjkuMCIKKyAgICBiYWJlbC10eXBlcyAiXjYuOS4wIgorICAgIGVzdXRpbHMgIl4yLjAuMCIKKyAg
ICBsb2Rhc2ggIl40LjIuMCIKKworYmFiZWwtaGVscGVyLWNhbGwtZGVsZWdhdGVAXjYuOC4wOgor
ICB2ZXJzaW9uICI2LjguMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vYmFiZWwtaGVscGVyLWNhbGwtZGVsZWdhdGUvLS9iYWJlbC1oZWxwZXItY2FsbC1kZWxlZ2F0
ZS02LjguMC50Z3ojOWQyODNlNzQ4Njc3OWI2YjA0ODE4NjRhMTFiMzcxZWE1YzAxZmE2NCIKKyAg
ZGVwZW5kZW5jaWVzOgorICAgIGJhYmVsLWhlbHBlci1ob2lzdC12YXJpYWJsZXMgIl42LjguMCIK
KyAgICBiYWJlbC1ydW50aW1lICJeNi4wLjAiCisgICAgYmFiZWwtdHJhdmVyc2UgIl42LjguMCIK
KyAgICBiYWJlbC10eXBlcyAiXjYuOC4wIgorCitiYWJlbC1oZWxwZXItZGVmaW5lLW1hcEBeNi44
LjAsIGJhYmVsLWhlbHBlci1kZWZpbmUtbWFwQF42LjkuMDoKKyAgdmVyc2lvbiAiNi45LjAiCisg
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLWhlbHBlci1kZWZp
bmUtbWFwLy0vYmFiZWwtaGVscGVyLWRlZmluZS1tYXAtNi45LjAudGd6IzY2MjlmOWIyYTdlNThl
MThlODM3OWE1N2QxZTZmYmIyOTY5OTAyZmIiCisgIGRlcGVuZGVuY2llczoKKyAgICBiYWJlbC1o
ZWxwZXItZnVuY3Rpb24tbmFtZSAiXjYuOC4wIgorICAgIGJhYmVsLXJ1bnRpbWUgIl42LjkuMCIK
KyAgICBiYWJlbC10eXBlcyAiXjYuOS4wIgorICAgIGxvZGFzaCAiXjQuMi4wIgorCitiYWJlbC1o
ZWxwZXItZXhwbG9kZS1hc3NpZ25hYmxlLWV4cHJlc3Npb25AXjYuOC4wOgorICB2ZXJzaW9uICI2
LjguMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtaGVs
cGVyLWV4cGxvZGUtYXNzaWduYWJsZS1leHByZXNzaW9uLy0vYmFiZWwtaGVscGVyLWV4cGxvZGUt
YXNzaWduYWJsZS1leHByZXNzaW9uLTYuOC4wLnRneiM5YjM1MjVlMDViNzYxYzNiODg5MTlkNzMw
YTI4YmFkMTk2N2U2NTU2IgorICBkZXBlbmRlbmNpZXM6CisgICAgYmFiZWwtcnVudGltZSAiXjYu
MC4wIgorICAgIGJhYmVsLXRyYXZlcnNlICJeNi44LjAiCisgICAgYmFiZWwtdHlwZXMgIl42Ljgu
MCIKKworYmFiZWwtaGVscGVyLWZ1bmN0aW9uLW5hbWVAXjYuOC4wOgorICB2ZXJzaW9uICI2Ljgu
MCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtaGVscGVy
LWZ1bmN0aW9uLW5hbWUvLS9iYWJlbC1oZWxwZXItZnVuY3Rpb24tbmFtZS02LjguMC50Z3ojYTAz
MzZiYTE0NTI2YTA3NWNkZjUwMmZjNTJkM2ZlODRiMTJmN2EzNCIKKyAgZGVwZW5kZW5jaWVzOgor
ICAgIGJhYmVsLWhlbHBlci1nZXQtZnVuY3Rpb24tYXJpdHkgIl42LjguMCIKKyAgICBiYWJlbC1y
dW50aW1lICJeNi4wLjAiCisgICAgYmFiZWwtdGVtcGxhdGUgIl42LjguMCIKKyAgICBiYWJlbC10
cmF2ZXJzZSAiXjYuOC4wIgorICAgIGJhYmVsLXR5cGVzICJeNi44LjAiCisKK2JhYmVsLWhlbHBl
ci1nZXQtZnVuY3Rpb24tYXJpdHlAXjYuOC4wOgorICB2ZXJzaW9uICI2LjguMCIKKyAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtaGVscGVyLWdldC1mdW5jdGlv
bi1hcml0eS8tL2JhYmVsLWhlbHBlci1nZXQtZnVuY3Rpb24tYXJpdHktNi44LjAudGd6Izg4Mjc2
YzI0YmQyNTFjZGY2ZjYxYjZmODlmNzQ1ZjQ4NmNlZDkyYWYiCisgIGRlcGVuZGVuY2llczoKKyAg
ICBiYWJlbC1ydW50aW1lICJeNi4wLjAiCisgICAgYmFiZWwtdHlwZXMgIl42LjguMCIKKworYmFi
ZWwtaGVscGVyLWhvaXN0LXZhcmlhYmxlc0BeNi44LjA6CisgIHZlcnNpb24gIjYuOC4wIgorICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1oZWxwZXItaG9pc3Qt
dmFyaWFibGVzLy0vYmFiZWwtaGVscGVyLWhvaXN0LXZhcmlhYmxlcy02LjguMC50Z3ojOGIwNzY2
ZGMwMjZlYTllYTQyM2JjMmIzNGU2NjVhNGRhNzM3M2FhZiIKKyAgZGVwZW5kZW5jaWVzOgorICAg
IGJhYmVsLXJ1bnRpbWUgIl42LjAuMCIKKyAgICBiYWJlbC10eXBlcyAiXjYuOC4wIgorCitiYWJl
bC1oZWxwZXItb3B0aW1pc2UtY2FsbC1leHByZXNzaW9uQF42LjguMDoKKyAgdmVyc2lvbiAiNi44
LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLWhlbHBl
ci1vcHRpbWlzZS1jYWxsLWV4cHJlc3Npb24vLS9iYWJlbC1oZWxwZXItb3B0aW1pc2UtY2FsbC1l
eHByZXNzaW9uLTYuOC4wLnRneiM0MTc1NjI4ZTljODlmYzM2MTc0OTA0ZjI3MDcwZjI5ZDM4NTY3
ZjA2IgorICBkZXBlbmRlbmNpZXM6CisgICAgYmFiZWwtcnVudGltZSAiXjYuMC4wIgorICAgIGJh
YmVsLXR5cGVzICJeNi44LjAiCisKK2JhYmVsLWhlbHBlci1yZWdleEBeNi44LjA6CisgIHZlcnNp
b24gIjYuOS4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJl
bC1oZWxwZXItcmVnZXgvLS9iYWJlbC1oZWxwZXItcmVnZXgtNi45LjAudGd6I2M3NDI2NWZkZTE4
MGZmOWExNjczNWZlZTA1ZTYzY2FkYjllMGIwNTciCisgIGRlcGVuZGVuY2llczoKKyAgICBiYWJl
bC1ydW50aW1lICJeNi45LjAiCisgICAgYmFiZWwtdHlwZXMgIl42LjkuMCIKKyAgICBsb2Rhc2gg
Il40LjIuMCIKKworYmFiZWwtaGVscGVyLXJlbWFwLWFzeW5jLXRvLWdlbmVyYXRvckBeNi4xNi4w
OgorICB2ZXJzaW9uICI2LjE2LjIiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w
a2cuY29tL2JhYmVsLWhlbHBlci1yZW1hcC1hc3luYy10by1nZW5lcmF0b3IvLS9iYWJlbC1oZWxw
ZXItcmVtYXAtYXN5bmMtdG8tZ2VuZXJhdG9yLTYuMTYuMi50Z3ojMjQzMTViZGU4MzI2YzYwMDIy
ZGMwNTNjY2U4NGNmZTM4ZDcyNGI4MiIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGJhYmVsLWhlbHBl
ci1mdW5jdGlvbi1uYW1lICJeNi44LjAiCisgICAgYmFiZWwtcnVudGltZSAiXjYuMC4wIgorICAg
IGJhYmVsLXRlbXBsYXRlICJeNi4xNi4wIgorICAgIGJhYmVsLXRyYXZlcnNlICJeNi4xNi4wIgor
ICAgIGJhYmVsLXR5cGVzICJeNi4xNi4wIgorCitiYWJlbC1oZWxwZXItcmVwbGFjZS1zdXBlcnNA
XjYuMTQuMCwgYmFiZWwtaGVscGVyLXJlcGxhY2Utc3VwZXJzQF42LjguMDoKKyAgdmVyc2lvbiAi
Ni4xNi4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1o
ZWxwZXItcmVwbGFjZS1zdXBlcnMvLS9iYWJlbC1oZWxwZXItcmVwbGFjZS1zdXBlcnMtNi4xNi4w
LnRneiMyMWM5NzYyM2NjN2U0MzA4NTU3NTNmMjUyNzQwMTIyNjI2YTM5ZTZiIgorICBkZXBlbmRl
bmNpZXM6CisgICAgYmFiZWwtaGVscGVyLW9wdGltaXNlLWNhbGwtZXhwcmVzc2lvbiAiXjYuOC4w
IgorICAgIGJhYmVsLW1lc3NhZ2VzICJeNi44LjAiCisgICAgYmFiZWwtcnVudGltZSAiXjYuMC4w
IgorICAgIGJhYmVsLXRlbXBsYXRlICJeNi4xNi4wIgorICAgIGJhYmVsLXRyYXZlcnNlICJeNi4x
Ni4wIgorICAgIGJhYmVsLXR5cGVzICJeNi4xNi4wIgorCitiYWJlbC1oZWxwZXJzQF42LjE2LjAs
IGJhYmVsLWhlbHBlcnNAXjYuOC4wOgorICB2ZXJzaW9uICI2LjE2LjAiCisgIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLWhlbHBlcnMvLS9iYWJlbC1oZWxwZXJz
LTYuMTYuMC50Z3ojMTA5NWVjMTBkOTkyNzk0NjA1NTNlNjdlYjNlZWU5OTczZDM4NjdlMyIKKyAg
ZGVwZW5kZW5jaWVzOgorICAgIGJhYmVsLXJ1bnRpbWUgIl42LjAuMCIKKyAgICBiYWJlbC10ZW1w
bGF0ZSAiXjYuMTYuMCIKKworYmFiZWwtamVzdEBeMTUuMC4wLCBiYWJlbC1qZXN0QDE1LjAuMDoK
KyAgdmVyc2lvbiAiMTUuMC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9iYWJlbC1qZXN0Ly0vYmFiZWwtamVzdC0xNS4wLjAudGd6IzZhOWUyZTM5OTlmMjQxMzgz
ZGI5YWIxZTJlZjY3MDQ0MDFkNzQyNDIiCisgIGRlcGVuZGVuY2llczoKKyAgICBiYWJlbC1jb3Jl
ICJeNi4wLjAiCisgICAgYmFiZWwtcGx1Z2luLWlzdGFuYnVsICJeMi4wLjAiCisgICAgYmFiZWwt
cHJlc2V0LWplc3QgIl4xNS4wLjAiCisKK2JhYmVsLWxvYWRlckA2LjIuNToKKyAgdmVyc2lvbiAi
Ni4yLjUiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLWxv
YWRlci8tL2JhYmVsLWxvYWRlci02LjIuNS50Z3ojNTc2ZDU0ODUyMDY4OWE1ZTZiNzBjNjViODVk
NzZhZjFmZmVkZDAwNSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGxvYWRlci11dGlscyAiXjAuMi4x
MSIKKyAgICBta2RpcnAgIl4wLjUuMSIKKyAgICBvYmplY3QtYXNzaWduICJeNC4wLjEiCisKK2Jh
YmVsLW1lc3NhZ2VzQF42LjguMDoKKyAgdmVyc2lvbiAiNi44LjAiCisgIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLW1lc3NhZ2VzLy0vYmFiZWwtbWVzc2FnZXMt
Ni44LjAudGd6I2JmNTA0NzM2Y2E5NjdlNmQ2NWVmMGFkYjVhMmE1Zjk0N2M4ZTBlYjkiCisgIGRl
cGVuZGVuY2llczoKKyAgICBiYWJlbC1ydW50aW1lICJeNi4wLjAiCisKK2JhYmVsLXBsdWdpbi1j
aGVjay1lczIwMTUtY29uc3RhbnRzQF42LjMuMTM6CisgIHZlcnNpb24gIjYuOC4wIgorICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1wbHVnaW4tY2hlY2stZXMy
MDE1LWNvbnN0YW50cy8tL2JhYmVsLXBsdWdpbi1jaGVjay1lczIwMTUtY29uc3RhbnRzLTYuOC4w
LnRneiNkYmYwMjRjMzJlZDM3YmZkYThkZWUxZTc2ZGEwMjM4NmE4ZDI2ZmU3IgorICBkZXBlbmRl
bmNpZXM6CisgICAgYmFiZWwtcnVudGltZSAiXjYuMC4wIgorCitiYWJlbC1wbHVnaW4taXN0YW5i
dWxAXjIuMC4wOgorICB2ZXJzaW9uICIyLjAuMiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vYmFiZWwtcGx1Z2luLWlzdGFuYnVsLy0vYmFiZWwtcGx1Z2luLWlzdGFu
YnVsLTIuMC4yLnRneiM2NmM5NTdmZDNiMmFjZTY5MjE1OTU1YzBlYTU5MjA5ODA5NThjYmYzIgor
ICBkZXBlbmRlbmNpZXM6CisgICAgZmluZC11cCAiXjEuMS4yIgorICAgIGlzdGFuYnVsLWxpYi1p
bnN0cnVtZW50ICJeMS4xLjEiCisgICAgbG9kYXNoLmFzc2lnbiAiXjQuMi4wIgorICAgIHRlc3Qt
ZXhjbHVkZSAiXjIuMS4xIgorCitiYWJlbC1wbHVnaW4tamVzdC1ob2lzdEBeMTUuMC4wOgorICB2
ZXJzaW9uICIxNS4wLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L2JhYmVsLXBsdWdpbi1qZXN0LWhvaXN0Ly0vYmFiZWwtcGx1Z2luLWplc3QtaG9pc3QtMTUuMC4w
LnRneiM3YjJmZGJkMGNkMTJmYzM2YTg0ZDNmNWZmMDAxZWM1MDQyNjJiYjU5IgorCitiYWJlbC1w
bHVnaW4tc3ludGF4LWFzeW5jLWZ1bmN0aW9uc0BeNi44LjA6CisgIHZlcnNpb24gIjYuMTMuMCIK
KyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtcGx1Z2luLXN5
bnRheC1hc3luYy1mdW5jdGlvbnMvLS9iYWJlbC1wbHVnaW4tc3ludGF4LWFzeW5jLWZ1bmN0aW9u
cy02LjEzLjAudGd6I2NhZDljYWQxMTkxYjVhZDYzNGJmMzBhZTA4NzIzOTFlMDY0N2JlOTUiCisK
K2JhYmVsLXBsdWdpbi1zeW50YXgtY2xhc3MtcHJvcGVydGllc0BeNi44LjA6CisgIHZlcnNpb24g
IjYuMTMuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwt
cGx1Z2luLXN5bnRheC1jbGFzcy1wcm9wZXJ0aWVzLy0vYmFiZWwtcGx1Z2luLXN5bnRheC1jbGFz
cy1wcm9wZXJ0aWVzLTYuMTMuMC50Z3ojZDdlYjIzYjc5YTMxN2Y4NTQzOTYyYzUwNWI4MjdjN2Q2
Y2FjMjdkZSIKKworYmFiZWwtcGx1Z2luLXN5bnRheC1leHBvbmVudGlhdGlvbi1vcGVyYXRvckBe
Ni44LjA6CisgIHZlcnNpb24gIjYuMTMuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vYmFiZWwtcGx1Z2luLXN5bnRheC1leHBvbmVudGlhdGlvbi1vcGVyYXRvci8t
L2JhYmVsLXBsdWdpbi1zeW50YXgtZXhwb25lbnRpYXRpb24tb3BlcmF0b3ItNi4xMy4wLnRneiM5
ZWU3ZTgzMzcyOTBkYTk1Mjg4MjAxYTZhNTdmNDE3MDMxNzgzMGRlIgorCitiYWJlbC1wbHVnaW4t
c3ludGF4LWZsb3dAXjYuMy4xMywgYmFiZWwtcGx1Z2luLXN5bnRheC1mbG93QF42LjguMDoKKyAg
dmVyc2lvbiAiNi4xMy4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9iYWJlbC1wbHVnaW4tc3ludGF4LWZsb3cvLS9iYWJlbC1wbHVnaW4tc3ludGF4LWZsb3ctNi4x
My4wLnRneiM5YWYwY2QzOTYwODdiZjc2NzcwNTNlMWFmYTUyZjIwNmMwNDE2ZjE3IgorCitiYWJl
bC1wbHVnaW4tc3ludGF4LWpzeEBeNi4zLjEzLCBiYWJlbC1wbHVnaW4tc3ludGF4LWpzeEBeNi44
LjA6CisgIHZlcnNpb24gIjYuMTMuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vYmFiZWwtcGx1Z2luLXN5bnRheC1qc3gvLS9iYWJlbC1wbHVnaW4tc3ludGF4LWpz
eC02LjEzLjAudGd6I2U3NDFmZjM5OTJjNTc4MzEwYmU0NWM1NzFiY2Q5MGEyZjljNTU4NmUiCisK
K2JhYmVsLXBsdWdpbi1zeW50YXgtb2JqZWN0LXJlc3Qtc3ByZWFkQF42LjguMDoKKyAgdmVyc2lv
biAiNi4xMy4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJl
bC1wbHVnaW4tc3ludGF4LW9iamVjdC1yZXN0LXNwcmVhZC8tL2JhYmVsLXBsdWdpbi1zeW50YXgt
b2JqZWN0LXJlc3Qtc3ByZWFkLTYuMTMuMC50Z3ojZmQ2NTM2ZjJiY2UxMzgzNmZmYTNhNTQ1OGM0
OTAzYTU5N2JiM2JmNSIKKworYmFiZWwtcGx1Z2luLXN5bnRheC10cmFpbGluZy1mdW5jdGlvbi1j
b21tYXNAXjYuOC4wOgorICB2ZXJzaW9uICI2LjEzLjAiCisgIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdpbi1zeW50YXgtdHJhaWxpbmctZnVuY3Rpb24t
Y29tbWFzLy0vYmFiZWwtcGx1Z2luLXN5bnRheC10cmFpbGluZy1mdW5jdGlvbi1jb21tYXMtNi4x
My4wLnRneiMyYjg0YjdkNTNkZDc0NGY5NGZmMWZhZDc2Njk0MDYyNzRiMjNmNTQxIgorCitiYWJl
bC1wbHVnaW4tdHJhbnNmb3JtLWFzeW5jLXRvLWdlbmVyYXRvckBeNi4xNi4wOgorICB2ZXJzaW9u
ICI2LjE2LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVs
LXBsdWdpbi10cmFuc2Zvcm0tYXN5bmMtdG8tZ2VuZXJhdG9yLy0vYmFiZWwtcGx1Z2luLXRyYW5z
Zm9ybS1hc3luYy10by1nZW5lcmF0b3ItNi4xNi4wLnRneiMxOWVjMzZjYjE0ODZiNTlmOWY0Njhh
ZGZhNDJjZTEzOTA4Y2EyOTk5IgorICBkZXBlbmRlbmNpZXM6CisgICAgYmFiZWwtaGVscGVyLXJl
bWFwLWFzeW5jLXRvLWdlbmVyYXRvciAiXjYuMTYuMCIKKyAgICBiYWJlbC1wbHVnaW4tc3ludGF4
LWFzeW5jLWZ1bmN0aW9ucyAiXjYuOC4wIgorICAgIGJhYmVsLXJ1bnRpbWUgIl42LjAuMCIKKwor
YmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1jbGFzcy1wcm9wZXJ0aWVzQDYuMTEuNToKKyAgdmVyc2lv
biAiNi4xMS41IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJl
bC1wbHVnaW4tdHJhbnNmb3JtLWNsYXNzLXByb3BlcnRpZXMvLS9iYWJlbC1wbHVnaW4tdHJhbnNm
b3JtLWNsYXNzLXByb3BlcnRpZXMtNi4xMS41LnRneiM0MjljN2E0ZTdkOGFjNTAwNDQ4ZWIxNGVj
NTAyNjA0YmM1NjhjOTFjIgorICBkZXBlbmRlbmNpZXM6CisgICAgYmFiZWwtaGVscGVyLWZ1bmN0
aW9uLW5hbWUgIl42LjguMCIKKyAgICBiYWJlbC1wbHVnaW4tc3ludGF4LWNsYXNzLXByb3BlcnRp
ZXMgIl42LjguMCIKKyAgICBiYWJlbC1ydW50aW1lICJeNi45LjEiCisKK2JhYmVsLXBsdWdpbi10
cmFuc2Zvcm0tZXMyMDE1LWFycm93LWZ1bmN0aW9uc0BeNi4zLjEzOgorICB2ZXJzaW9uICI2Ljgu
MCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtcGx1Z2lu
LXRyYW5zZm9ybS1lczIwMTUtYXJyb3ctZnVuY3Rpb25zLy0vYmFiZWwtcGx1Z2luLXRyYW5zZm9y
bS1lczIwMTUtYXJyb3ctZnVuY3Rpb25zLTYuOC4wLnRneiM1YjYzYWZjMzE4MWJkYzlhOGM0ZDQ4
MWI1YTRmM2Y3ZDdmZWYzZDlkIgorICBkZXBlbmRlbmNpZXM6CisgICAgYmFiZWwtcnVudGltZSAi
XjYuMC4wIgorCitiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1ibG9jay1zY29wZWQtZnVu
Y3Rpb25zQF42LjMuMTM6CisgIHZlcnNpb24gIjYuOC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1ibG9jay1z
Y29wZWQtZnVuY3Rpb25zLy0vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtYmxvY2stc2Nv
cGVkLWZ1bmN0aW9ucy02LjguMC50Z3ojZWQ5NWQ2MjljNGI1YTcxYWUyOTY4MmI5OThmNzBkOTgz
M2ViMzY2ZCIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGJhYmVsLXJ1bnRpbWUgIl42LjAuMCIKKwor
YmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtYmxvY2stc2NvcGluZ0BeNi4xNC4wOgorICB2
ZXJzaW9uICI2LjE1LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LWJsb2NrLXNjb3BpbmcvLS9iYWJlbC1wbHVn
aW4tdHJhbnNmb3JtLWVzMjAxNS1ibG9jay1zY29waW5nLTYuMTUuMC50Z3ojNWI0NDNjYTE0MmJl
OGQxZGI2YThjMmFlNDJmNTE5NThiNjZiNzBmNiIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGJhYmVs
LXJ1bnRpbWUgIl42LjkuMCIKKyAgICBiYWJlbC10ZW1wbGF0ZSAiXjYuMTUuMCIKKyAgICBiYWJl
bC10cmF2ZXJzZSAiXjYuMTUuMCIKKyAgICBiYWJlbC10eXBlcyAiXjYuMTUuMCIKKyAgICBsb2Rh
c2ggIl40LjIuMCIKKworYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtY2xhc3Nlc0BeNi4x
NC4wOgorICB2ZXJzaW9uICI2LjE0LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LWNsYXNzZXMvLS9iYWJlbC1w
bHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1jbGFzc2VzLTYuMTQuMC50Z3ojODdkNTE0OWVlOTFmYjQ3
NTkyMjQwOWY5YWY1YjJiYTVkMWUzOTI4NyIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGJhYmVsLWhl
bHBlci1kZWZpbmUtbWFwICJeNi45LjAiCisgICAgYmFiZWwtaGVscGVyLWZ1bmN0aW9uLW5hbWUg
Il42LjguMCIKKyAgICBiYWJlbC1oZWxwZXItb3B0aW1pc2UtY2FsbC1leHByZXNzaW9uICJeNi44
LjAiCisgICAgYmFiZWwtaGVscGVyLXJlcGxhY2Utc3VwZXJzICJeNi4xNC4wIgorICAgIGJhYmVs
LW1lc3NhZ2VzICJeNi44LjAiCisgICAgYmFiZWwtcnVudGltZSAiXjYuOS4wIgorICAgIGJhYmVs
LXRlbXBsYXRlICJeNi4xNC4wIgorICAgIGJhYmVsLXRyYXZlcnNlICJeNi4xNC4wIgorICAgIGJh
YmVsLXR5cGVzICJeNi4xNC4wIgorCitiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1jb21w
dXRlZC1wcm9wZXJ0aWVzQF42LjMuMTM6CisgIHZlcnNpb24gIjYuOC4wIgorICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAx
NS1jb21wdXRlZC1wcm9wZXJ0aWVzLy0vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtY29t
cHV0ZWQtcHJvcGVydGllcy02LjguMC50Z3ojZjUxMDEwZmQ2MWIzYmQ3YjZiNjBhNWZkZmQzMDdi
YjdhNTI3OTg3MCIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGJhYmVsLWhlbHBlci1kZWZpbmUtbWFw
ICJeNi44LjAiCisgICAgYmFiZWwtcnVudGltZSAiXjYuMC4wIgorICAgIGJhYmVsLXRlbXBsYXRl
ICJeNi44LjAiCisKK2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LWRlc3RydWN0dXJpbmdA
XjYuMTYuMDoKKyAgdmVyc2lvbiAiNi4xNi4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1kZXN0cnVjdHVyaW5n
Ly0vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtZGVzdHJ1Y3R1cmluZy02LjE2LjAudGd6
IzA1MGZlMDg2NmY1ZDUzYjM2MDYyZWUxMGNkZjViZmU2NGY5Mjk2MjciCisgIGRlcGVuZGVuY2ll
czoKKyAgICBiYWJlbC1ydW50aW1lICJeNi45LjAiCisKK2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0t
ZXMyMDE1LWR1cGxpY2F0ZS1rZXlzQF42LjYuMDoKKyAgdmVyc2lvbiAiNi44LjAiCisgIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0t
ZXMyMDE1LWR1cGxpY2F0ZS1rZXlzLy0vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtZHVw
bGljYXRlLWtleXMtNi44LjAudGd6I2ZkOGY3ZjcxNzFmYzEwOGNjMWM3MGMzMTY0YjlmMTVhODFj
MjVmN2QiCisgIGRlcGVuZGVuY2llczoKKyAgICBiYWJlbC1ydW50aW1lICJeNi4wLjAiCisgICAg
YmFiZWwtdHlwZXMgIl42LjguMCIKKworYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtZm9y
LW9mQF42LjYuMCwgYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtZm9yLW9mQF42LjguMDoK
KyAgdmVyc2lvbiAiNi44LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LWZvci1vZi8tL2JhYmVsLXBsdWdpbi10
cmFuc2Zvcm0tZXMyMDE1LWZvci1vZi02LjguMC50Z3ojODJlZGExMzliYTQyNzBkZGExMzVjM2Vj
MWIxZjI4MTNmYTYyZjIzYyIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGJhYmVsLXJ1bnRpbWUgIl42
LjAuMCIKKworYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtZnVuY3Rpb24tbmFtZUBeNi45
LjA6CisgIHZlcnNpb24gIjYuOS4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1mdW5jdGlvbi1uYW1lLy0vYmFi
ZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtZnVuY3Rpb24tbmFtZS02LjkuMC50Z3ojOGMxMzVi
MTdkYmQwNjRlNWJiYTU2ZWM1MTFiYWFlZTJmY2E4MjcxOSIKKyAgZGVwZW5kZW5jaWVzOgorICAg
IGJhYmVsLWhlbHBlci1mdW5jdGlvbi1uYW1lICJeNi44LjAiCisgICAgYmFiZWwtcnVudGltZSAi
XjYuOS4wIgorICAgIGJhYmVsLXR5cGVzICJeNi45LjAiCisKK2JhYmVsLXBsdWdpbi10cmFuc2Zv
cm0tZXMyMDE1LWxpdGVyYWxzQF42LjMuMTM6CisgIHZlcnNpb24gIjYuOC4wIgorICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVz
MjAxNS1saXRlcmFscy8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LWxpdGVyYWxzLTYu
OC4wLnRneiM1MGFhMmU1Yzc5NThmYzJhYjI1ZDc0ZWMxMTdlMGNjOThmMDQ2NDY4IgorICBkZXBl
bmRlbmNpZXM6CisgICAgYmFiZWwtcnVudGltZSAiXjYuMC4wIgorCitiYWJlbC1wbHVnaW4tdHJh
bnNmb3JtLWVzMjAxNS1tb2R1bGVzLWFtZEBeNi44LjA6CisgIHZlcnNpb24gIjYuOC4wIgorICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1wbHVnaW4tdHJhbnNm
b3JtLWVzMjAxNS1tb2R1bGVzLWFtZC8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LW1v
ZHVsZXMtYW1kLTYuOC4wLnRneiMyNWQ5NTRhYTBiZjA0MDMxZmM0NmQyYThlNjIzMGJiMWFiYmRl
NGEzIgorICBkZXBlbmRlbmNpZXM6CisgICAgYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUt
bW9kdWxlcy1jb21tb25qcyAiXjYuOC4wIgorICAgIGJhYmVsLXJ1bnRpbWUgIl42LjAuMCIKKyAg
ICBiYWJlbC10ZW1wbGF0ZSAiXjYuOC4wIgorCitiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAx
NS1tb2R1bGVzLWNvbW1vbmpzQF42LjE2LjAsIGJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1
LW1vZHVsZXMtY29tbW9uanNAXjYuOC4wOgorICB2ZXJzaW9uICI2LjE2LjAiCisgIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMy
MDE1LW1vZHVsZXMtY29tbW9uanMvLS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1tb2R1
bGVzLWNvbW1vbmpzLTYuMTYuMC50Z3ojMGEzNGI0NDdiYzg4YWQxYTcwOTg4YjZkMTk5Y2NhNmQw
Yjk2Yzg5MiIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tc3Ry
aWN0LW1vZGUgIl42LjguMCIKKyAgICBiYWJlbC1ydW50aW1lICJeNi4wLjAiCisgICAgYmFiZWwt
dGVtcGxhdGUgIl42LjE2LjAiCisgICAgYmFiZWwtdHlwZXMgIl42LjE2LjAiCisKK2JhYmVsLXBs
dWdpbi10cmFuc2Zvcm0tZXMyMDE1LW1vZHVsZXMtc3lzdGVtanNAXjYuMTQuMDoKKyAgdmVyc2lv
biAiNi4xNC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJl
bC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1tb2R1bGVzLXN5c3RlbWpzLy0vYmFiZWwtcGx1Z2lu
LXRyYW5zZm9ybS1lczIwMTUtbW9kdWxlcy1zeXN0ZW1qcy02LjE0LjAudGd6I2M1MTliNWM3M2Uz
MjM4OGU2NzljOWIxZWRmNDFiMmZjMjNkYzMzMDMiCisgIGRlcGVuZGVuY2llczoKKyAgICBiYWJl
bC1oZWxwZXItaG9pc3QtdmFyaWFibGVzICJeNi44LjAiCisgICAgYmFiZWwtcnVudGltZSAiXjYu
MTEuNiIKKyAgICBiYWJlbC10ZW1wbGF0ZSAiXjYuMTQuMCIKKworYmFiZWwtcGx1Z2luLXRyYW5z
Zm9ybS1lczIwMTUtbW9kdWxlcy11bWRAXjYuMTIuMDoKKyAgdmVyc2lvbiAiNi4xMi4wIgorICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1wbHVnaW4tdHJhbnNm
b3JtLWVzMjAxNS1tb2R1bGVzLXVtZC8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LW1v
ZHVsZXMtdW1kLTYuMTIuMC50Z3ojNWQ3MzU1OWViNDkyNjY3NzVlZDI4MWM0MGJlODhhNDIxYmQz
NzFhMyIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1
LW1vZHVsZXMtYW1kICJeNi44LjAiCisgICAgYmFiZWwtcnVudGltZSAiXjYuMC4wIgorICAgIGJh
YmVsLXRlbXBsYXRlICJeNi44LjAiCisKK2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LW9i
amVjdC1zdXBlckBeNi4zLjEzOgorICB2ZXJzaW9uICI2LjguMCIKKyAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtb2Jq
ZWN0LXN1cGVyLy0vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtb2JqZWN0LXN1cGVyLTYu
OC4wLnRneiMxYjg1ODc0MGE1YTQ0MDA4ODdjMjNkY2ZmNmY0ZDU2ZWVhNGEyNGM1IgorICBkZXBl
bmRlbmNpZXM6CisgICAgYmFiZWwtaGVscGVyLXJlcGxhY2Utc3VwZXJzICJeNi44LjAiCisgICAg
YmFiZWwtcnVudGltZSAiXjYuMC4wIgorCitiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1w
YXJhbWV0ZXJzQF42LjE2LjA6CisgIHZlcnNpb24gIjYuMTcuMCIKKyAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtcGFy
YW1ldGVycy8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LXBhcmFtZXRlcnMtNi4xNy4w
LnRneiNlMDZkMzBjZWY4OTdmNDZhZGI0NzM0NzA3YmJlMTI4YTBkNDI3ZDU4IgorICBkZXBlbmRl
bmNpZXM6CisgICAgYmFiZWwtaGVscGVyLWNhbGwtZGVsZWdhdGUgIl42LjguMCIKKyAgICBiYWJl
bC1oZWxwZXItZ2V0LWZ1bmN0aW9uLWFyaXR5ICJeNi44LjAiCisgICAgYmFiZWwtcnVudGltZSAi
XjYuOS4wIgorICAgIGJhYmVsLXRlbXBsYXRlICJeNi4xNi4wIgorICAgIGJhYmVsLXRyYXZlcnNl
ICJeNi4xNi4wIgorICAgIGJhYmVsLXR5cGVzICJeNi4xNi4wIgorCitiYWJlbC1wbHVnaW4tdHJh
bnNmb3JtLWVzMjAxNS1zaG9ydGhhbmQtcHJvcGVydGllc0BeNi4zLjEzOgorICB2ZXJzaW9uICI2
LjguMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtcGx1
Z2luLXRyYW5zZm9ybS1lczIwMTUtc2hvcnRoYW5kLXByb3BlcnRpZXMvLS9iYWJlbC1wbHVnaW4t
dHJhbnNmb3JtLWVzMjAxNS1zaG9ydGhhbmQtcHJvcGVydGllcy02LjguMC50Z3ojZjBhNGM1ZmQ0
NzE2MzBhY2YzMzNjMmQ5OWMzZDY3N2JmMDk1MjE0OSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGJh
YmVsLXJ1bnRpbWUgIl42LjAuMCIKKyAgICBiYWJlbC10eXBlcyAiXjYuOC4wIgorCitiYWJlbC1w
bHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1zcHJlYWRAXjYuMy4xMzoKKyAgdmVyc2lvbiAiNi44LjAi
CisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdpbi10
cmFuc2Zvcm0tZXMyMDE1LXNwcmVhZC8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LXNw
cmVhZC02LjguMC50Z3ojMDIxN2Y3MzdlM2I4MjFmYTVhNjY5ZjE4N2M2ZWQ1OTIwNWYwNWU5YyIK
KyAgZGVwZW5kZW5jaWVzOgorICAgIGJhYmVsLXJ1bnRpbWUgIl42LjAuMCIKKworYmFiZWwtcGx1
Z2luLXRyYW5zZm9ybS1lczIwMTUtc3RpY2t5LXJlZ2V4QF42LjMuMTM6CisgIHZlcnNpb24gIjYu
OC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1wbHVn
aW4tdHJhbnNmb3JtLWVzMjAxNS1zdGlja3ktcmVnZXgvLS9iYWJlbC1wbHVnaW4tdHJhbnNmb3Jt
LWVzMjAxNS1zdGlja3ktcmVnZXgtNi44LjAudGd6I2U3M2QzMDBhNDQwYTM1ZDVjNjRmNWMyYTM0
NGRjMjM2ZTNkZjQ3YmUiCisgIGRlcGVuZGVuY2llczoKKyAgICBiYWJlbC1oZWxwZXItcmVnZXgg
Il42LjguMCIKKyAgICBiYWJlbC1ydW50aW1lICJeNi4wLjAiCisgICAgYmFiZWwtdHlwZXMgIl42
LjguMCIKKworYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtdGVtcGxhdGUtbGl0ZXJhbHNA
XjYuNi4wOgorICB2ZXJzaW9uICI2LjguMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtdGVtcGxhdGUtbGl0ZXJh
bHMvLS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS10ZW1wbGF0ZS1saXRlcmFscy02Ljgu
MC50Z3ojODZlYjg3NmQwYTJjNjM1ZGE0ZWMwNDhiNGY3ZGU5ZGZjODk3ZTY2YiIKKyAgZGVwZW5k
ZW5jaWVzOgorICAgIGJhYmVsLXJ1bnRpbWUgIl42LjAuMCIKKworYmFiZWwtcGx1Z2luLXRyYW5z
Zm9ybS1lczIwMTUtdHlwZW9mLXN5bWJvbEBeNi42LjA6CisgIHZlcnNpb24gIjYuOC4wIgorICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1wbHVnaW4tdHJhbnNm
b3JtLWVzMjAxNS10eXBlb2Ytc3ltYm9sLy0vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUt
dHlwZW9mLXN5bWJvbC02LjguMC50Z3ojODRjMjllYjEyMTkzNzI0ODA5NTVhMDIwZmVmN2E2NWM0
NGYzMDUzMyIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGJhYmVsLXJ1bnRpbWUgIl42LjAuMCIKKwor
YmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtdW5pY29kZS1yZWdleEBeNi4zLjEzOgorICB2
ZXJzaW9uICI2LjExLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LXVuaWNvZGUtcmVnZXgvLS9iYWJlbC1wbHVn
aW4tdHJhbnNmb3JtLWVzMjAxNS11bmljb2RlLXJlZ2V4LTYuMTEuMC50Z3ojNjI5OGNlYWJhYWQ4
OGQ1MGEzZjRmMzkyZDhkZTk5NzI2MGY2ZWYyYyIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGJhYmVs
LWhlbHBlci1yZWdleCAiXjYuOC4wIgorICAgIGJhYmVsLXJ1bnRpbWUgIl42LjAuMCIKKyAgICBy
ZWdleHB1LWNvcmUgIl4yLjAuMCIKKworYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1leHBvbmVudGlh
dGlvbi1vcGVyYXRvckBeNi4zLjEzOgorICB2ZXJzaW9uICI2LjguMCIKKyAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1leHBvbmVu
dGlhdGlvbi1vcGVyYXRvci8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXhwb25lbnRpYXRpb24t
b3BlcmF0b3ItNi44LjAudGd6I2RiMjU3NDJlOTMzOWVhZGU2NzZjYTlhY2VjNDZmOTU1NTk5YTY4
YTQiCisgIGRlcGVuZGVuY2llczoKKyAgICBiYWJlbC1oZWxwZXItYnVpbGRlci1iaW5hcnktYXNz
aWdubWVudC1vcGVyYXRvci12aXNpdG9yICJeNi44LjAiCisgICAgYmFiZWwtcGx1Z2luLXN5bnRh
eC1leHBvbmVudGlhdGlvbi1vcGVyYXRvciAiXjYuOC4wIgorICAgIGJhYmVsLXJ1bnRpbWUgIl42
LjAuMCIKKworYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1mbG93LXN0cmlwLXR5cGVzQF42LjMuMTM6
CisgIHZlcnNpb24gIjYuMTQuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1mbG93LXN0cmlwLXR5cGVzLy0vYmFiZWwtcGx1
Z2luLXRyYW5zZm9ybS1mbG93LXN0cmlwLXR5cGVzLTYuMTQuMC50Z3ojMzVjZWIwM2Y4NzcwOTM0
MDQ0YmFiMWE3NmY3ZTRlZTBhYTkyMjBmOSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGJhYmVsLXBs
dWdpbi1zeW50YXgtZmxvdyAiXjYuOC4wIgorICAgIGJhYmVsLXJ1bnRpbWUgIl42LjAuMCIKKwor
YmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1vYmplY3QtcmVzdC1zcHJlYWRANi44LjA6CisgIHZlcnNp
b24gIjYuOC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJl
bC1wbHVnaW4tdHJhbnNmb3JtLW9iamVjdC1yZXN0LXNwcmVhZC8tL2JhYmVsLXBsdWdpbi10cmFu
c2Zvcm0tb2JqZWN0LXJlc3Qtc3ByZWFkLTYuOC4wLnRneiMwM2QxMzA4ZTI1N2E5ZDhlMWE4MTVh
ZTFmZDNkYjIxYmRlYmYwOGQ5IgorICBkZXBlbmRlbmNpZXM6CisgICAgYmFiZWwtcGx1Z2luLXN5
bnRheC1vYmplY3QtcmVzdC1zcHJlYWQgIl42LjguMCIKKyAgICBiYWJlbC1ydW50aW1lICJeNi4w
LjAiCisKK2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tcmVhY3QtY29uc3RhbnQtZWxlbWVudHNANi45
LjE6CisgIHZlcnNpb24gIjYuOS4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLXJlYWN0LWNvbnN0YW50LWVsZW1lbnRzLy0v
YmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1yZWFjdC1jb25zdGFudC1lbGVtZW50cy02LjkuMS50Z3oj
MTI1Yjg2ZDk2Y2IzMjJlMjEzOWI2MDdmZDc0OWFkNWZiYjE3ZjAwNSIKKyAgZGVwZW5kZW5jaWVz
OgorICAgIGJhYmVsLXJ1bnRpbWUgIl42LjkuMSIKKworYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1y
ZWFjdC1kaXNwbGF5LW5hbWVAXjYuMy4xMzoKKyAgdmVyc2lvbiAiNi44LjAiCisgIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tcmVh
Y3QtZGlzcGxheS1uYW1lLy0vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1yZWFjdC1kaXNwbGF5LW5h
bWUtNi44LjAudGd6I2Y3YTA4NDk3NzM4M2Q3MjhiZGJkYzI4MzViYmEwMTU5NTc3ZjY2MGUiCisg
IGRlcGVuZGVuY2llczoKKyAgICBiYWJlbC1ydW50aW1lICJeNi4wLjAiCisKK2JhYmVsLXBsdWdp
bi10cmFuc2Zvcm0tcmVhY3QtanN4LXNlbGZAXjYuMTEuMCwgYmFiZWwtcGx1Z2luLXRyYW5zZm9y
bS1yZWFjdC1qc3gtc2VsZkA2LjExLjA6CisgIHZlcnNpb24gIjYuMTEuMCIKKyAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1yZWFj
dC1qc3gtc2VsZi8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tcmVhY3QtanN4LXNlbGYtNi4xMS4w
LnRneiM2MDVjOTQ1MGMxNDI5Zjk3YTkzMGY3ZTFkZmUzZjBkOWQwZGJkMGY0IgorICBkZXBlbmRl
bmNpZXM6CisgICAgYmFiZWwtcGx1Z2luLXN5bnRheC1qc3ggIl42LjguMCIKKyAgICBiYWJlbC1y
dW50aW1lICJeNi45LjAiCisKK2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tcmVhY3QtanN4LXNvdXJj
ZUBeNi4zLjEzLCBiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLXJlYWN0LWpzeC1zb3VyY2VANi45LjA6
CisgIHZlcnNpb24gIjYuOS4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLXJlYWN0LWpzeC1zb3VyY2UvLS9iYWJlbC1wbHVn
aW4tdHJhbnNmb3JtLXJlYWN0LWpzeC1zb3VyY2UtNi45LjAudGd6I2FmNjg0YTA1YzIwNjdhODZl
MDk1N2Q0ZjM0MzI5NWNjZjVkY2NmMDAiCisgIGRlcGVuZGVuY2llczoKKyAgICBiYWJlbC1wbHVn
aW4tc3ludGF4LWpzeCAiXjYuOC4wIgorICAgIGJhYmVsLXJ1bnRpbWUgIl42LjkuMCIKKworYmFi
ZWwtcGx1Z2luLXRyYW5zZm9ybS1yZWFjdC1qc3hAXjYuMy4xMzoKKyAgdmVyc2lvbiAiNi44LjAi
CisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdpbi10
cmFuc2Zvcm0tcmVhY3QtanN4Ly0vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1yZWFjdC1qc3gtNi44
LjAudGd6Izk0NzU5OTQyZjcwYWYxOGM2MTcxODlhYTdmMzU5M2YxNjQ0YTcxYWIiCisgIGRlcGVu
ZGVuY2llczoKKyAgICBiYWJlbC1oZWxwZXItYnVpbGRlci1yZWFjdC1qc3ggIl42LjguMCIKKyAg
ICBiYWJlbC1wbHVnaW4tc3ludGF4LWpzeCAiXjYuOC4wIgorICAgIGJhYmVsLXJ1bnRpbWUgIl42
LjAuMCIKKworYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1yZWdlbmVyYXRvckBeNi4xNi4wOgorICB2
ZXJzaW9uICI2LjE2LjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tcmVnZW5lcmF0b3IvLS9iYWJlbC1wbHVnaW4tdHJhbnNm
b3JtLXJlZ2VuZXJhdG9yLTYuMTYuMS50Z3ojYTc1ZGU2YjA0OGExNDE1NGFhZTE0YjAxMjI3NTZj
NWJlZDM5MmY1OSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGJhYmVsLXJ1bnRpbWUgIl42LjkuMCIK
KyAgICBiYWJlbC10eXBlcyAiXjYuMTYuMCIKKyAgICBwcml2YXRlICJ+MC4xLjUiCisKK2JhYmVs
LXBsdWdpbi10cmFuc2Zvcm0tcmVnZW5lcmF0b3JANi4xNC4wOgorICB2ZXJzaW9uICI2LjE0LjAi
CisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdpbi10
cmFuc2Zvcm0tcmVnZW5lcmF0b3IvLS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLXJlZ2VuZXJhdG9y
LTYuMTQuMC50Z3ojMTE5MTE5YjIwYzhiNDI4M2Y2Yzc3ZjAxNzBkNDA0YzNjNjU0YmVjOCIKKyAg
ZGVwZW5kZW5jaWVzOgorICAgIGJhYmVsLWNvcmUgIl42LjE0LjAiCisgICAgYmFiZWwtcGx1Z2lu
LXN5bnRheC1hc3luYy1mdW5jdGlvbnMgIl42LjguMCIKKyAgICBiYWJlbC1wbHVnaW4tdHJhbnNm
b3JtLWVzMjAxNS1ibG9jay1zY29waW5nICJeNi4xNC4wIgorICAgIGJhYmVsLXBsdWdpbi10cmFu
c2Zvcm0tZXMyMDE1LWZvci1vZiAiXjYuOC4wIgorICAgIGJhYmVsLXJ1bnRpbWUgIl42LjkuMCIK
KyAgICBiYWJlbC10cmF2ZXJzZSAiXjYuMTQuMCIKKyAgICBiYWJlbC10eXBlcyAiXjYuMTQuMCIK
KyAgICBiYWJ5bG9uICJeNi45LjAiCisgICAgcHJpdmF0ZSAifjAuMS41IgorCitiYWJlbC1wbHVn
aW4tdHJhbnNmb3JtLXJ1bnRpbWVANi4xNS4wOgorICB2ZXJzaW9uICI2LjE1LjAiCisgIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0t
cnVudGltZS8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tcnVudGltZS02LjE1LjAudGd6IzNkNzVi
NGQ5NDlhZDgxYWYxNTc1NzAyNzM4NDZmYjU5YWViMGQ1N2MiCisgIGRlcGVuZGVuY2llczoKKyAg
ICBiYWJlbC1ydW50aW1lICJeNi45LjAiCisKK2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tc3RyaWN0
LW1vZGVAXjYuOC4wOgorICB2ZXJzaW9uICI2LjExLjMiCisgIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tc3RyaWN0LW1vZGUvLS9i
YWJlbC1wbHVnaW4tdHJhbnNmb3JtLXN0cmljdC1tb2RlLTYuMTEuMy50Z3ojMTgzNzQxMzI1MTI2
YmM3ZWM5Y2Y0YzBmYzI1N2QzZTdjYTVhZmQ0MCIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGJhYmVs
LXJ1bnRpbWUgIl42LjAuMCIKKyAgICBiYWJlbC10eXBlcyAiXjYuOC4wIgorCitiYWJlbC1wcmVz
ZXQtZXMyMDE1QF42LjE0LjA6CisgIHZlcnNpb24gIjYuMTYuMCIKKyAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtcHJlc2V0LWVzMjAxNS8tL2JhYmVsLXByZXNl
dC1lczIwMTUtNi4xNi4wLnRneiM1OWFjZWNkMWVmYmViYWY0OGY4OTQwNDg0MGYyZmU3OGM0ZDJh
ZDVjIgorICBkZXBlbmRlbmNpZXM6CisgICAgYmFiZWwtcGx1Z2luLWNoZWNrLWVzMjAxNS1jb25z
dGFudHMgIl42LjMuMTMiCisgICAgYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtYXJyb3ct
ZnVuY3Rpb25zICJeNi4zLjEzIgorICAgIGJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LWJs
b2NrLXNjb3BlZC1mdW5jdGlvbnMgIl42LjMuMTMiCisgICAgYmFiZWwtcGx1Z2luLXRyYW5zZm9y
bS1lczIwMTUtYmxvY2stc2NvcGluZyAiXjYuMTQuMCIKKyAgICBiYWJlbC1wbHVnaW4tdHJhbnNm
b3JtLWVzMjAxNS1jbGFzc2VzICJeNi4xNC4wIgorICAgIGJhYmVsLXBsdWdpbi10cmFuc2Zvcm0t
ZXMyMDE1LWNvbXB1dGVkLXByb3BlcnRpZXMgIl42LjMuMTMiCisgICAgYmFiZWwtcGx1Z2luLXRy
YW5zZm9ybS1lczIwMTUtZGVzdHJ1Y3R1cmluZyAiXjYuMTYuMCIKKyAgICBiYWJlbC1wbHVnaW4t
dHJhbnNmb3JtLWVzMjAxNS1kdXBsaWNhdGUta2V5cyAiXjYuNi4wIgorICAgIGJhYmVsLXBsdWdp
bi10cmFuc2Zvcm0tZXMyMDE1LWZvci1vZiAiXjYuNi4wIgorICAgIGJhYmVsLXBsdWdpbi10cmFu
c2Zvcm0tZXMyMDE1LWZ1bmN0aW9uLW5hbWUgIl42LjkuMCIKKyAgICBiYWJlbC1wbHVnaW4tdHJh
bnNmb3JtLWVzMjAxNS1saXRlcmFscyAiXjYuMy4xMyIKKyAgICBiYWJlbC1wbHVnaW4tdHJhbnNm
b3JtLWVzMjAxNS1tb2R1bGVzLWFtZCAiXjYuOC4wIgorICAgIGJhYmVsLXBsdWdpbi10cmFuc2Zv
cm0tZXMyMDE1LW1vZHVsZXMtY29tbW9uanMgIl42LjE2LjAiCisgICAgYmFiZWwtcGx1Z2luLXRy
YW5zZm9ybS1lczIwMTUtbW9kdWxlcy1zeXN0ZW1qcyAiXjYuMTQuMCIKKyAgICBiYWJlbC1wbHVn
aW4tdHJhbnNmb3JtLWVzMjAxNS1tb2R1bGVzLXVtZCAiXjYuMTIuMCIKKyAgICBiYWJlbC1wbHVn
aW4tdHJhbnNmb3JtLWVzMjAxNS1vYmplY3Qtc3VwZXIgIl42LjMuMTMiCisgICAgYmFiZWwtcGx1
Z2luLXRyYW5zZm9ybS1lczIwMTUtcGFyYW1ldGVycyAiXjYuMTYuMCIKKyAgICBiYWJlbC1wbHVn
aW4tdHJhbnNmb3JtLWVzMjAxNS1zaG9ydGhhbmQtcHJvcGVydGllcyAiXjYuMy4xMyIKKyAgICBi
YWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1zcHJlYWQgIl42LjMuMTMiCisgICAgYmFiZWwt
cGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtc3RpY2t5LXJlZ2V4ICJeNi4zLjEzIgorICAgIGJhYmVs
LXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LXRlbXBsYXRlLWxpdGVyYWxzICJeNi42LjAiCisgICAg
YmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtdHlwZW9mLXN5bWJvbCAiXjYuNi4wIgorICAg
IGJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LXVuaWNvZGUtcmVnZXggIl42LjMuMTMiCisg
ICAgYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1yZWdlbmVyYXRvciAiXjYuMTYuMCIKKworYmFiZWwt
cHJlc2V0LWVzMjAxNkBeNi4xMS4zOgorICB2ZXJzaW9uICI2LjE2LjAiCisgIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXByZXNldC1lczIwMTYvLS9iYWJlbC1w
cmVzZXQtZXMyMDE2LTYuMTYuMC50Z3ojYzdkYWY1ZmVlZGVlZTk5Yzg2NzgxM2JkZjBkNTczZDk0
Y2ExMjgxMiIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXhw
b25lbnRpYXRpb24tb3BlcmF0b3IgIl42LjMuMTMiCisKK2JhYmVsLXByZXNldC1lczIwMTdAXjYu
MTQuMDoKKyAgdmVyc2lvbiAiNi4xNi4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9iYWJlbC1wcmVzZXQtZXMyMDE3Ly0vYmFiZWwtcHJlc2V0LWVzMjAxNy02LjE2
LjAudGd6IzUzNmM2Mjg3Nzc4YTc1ODk0OGRkZDA5MmI0NjZiNmVmNTBiNzg2ZmEiCisgIGRlcGVu
ZGVuY2llczoKKyAgICBiYWJlbC1wbHVnaW4tc3ludGF4LXRyYWlsaW5nLWZ1bmN0aW9uLWNvbW1h
cyAiXjYuOC4wIgorICAgIGJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tYXN5bmMtdG8tZ2VuZXJhdG9y
ICJeNi4xNi4wIgorCitiYWJlbC1wcmVzZXQtamVzdEBeMTUuMC4wOgorICB2ZXJzaW9uICIxNS4w
LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXByZXNl
dC1qZXN0Ly0vYmFiZWwtcHJlc2V0LWplc3QtMTUuMC4wLnRneiNmMjM5ODhmMWY5MTg2NzNmZjli
NDcwZmRmZDYwZmNjMTliYzYxOGY1IgorICBkZXBlbmRlbmNpZXM6CisgICAgYmFiZWwtcGx1Z2lu
LWplc3QtaG9pc3QgIl4xNS4wLjAiCisKK2JhYmVsLXByZXNldC1sYXRlc3RANi4xNC4wOgorICB2
ZXJzaW9uICI2LjE0LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L2JhYmVsLXByZXNldC1sYXRlc3QvLS9iYWJlbC1wcmVzZXQtbGF0ZXN0LTYuMTQuMC50Z3ojMTY4
NGFjZTgxNmM5OThjZTcyZDIwZTVjNWY3MTAzMjlkNDBmOTI0NiIKKyAgZGVwZW5kZW5jaWVzOgor
ICAgIGJhYmVsLXByZXNldC1lczIwMTUgIl42LjE0LjAiCisgICAgYmFiZWwtcHJlc2V0LWVzMjAx
NiAiXjYuMTEuMyIKKyAgICBiYWJlbC1wcmVzZXQtZXMyMDE3ICJeNi4xNC4wIgorCitiYWJlbC1w
cmVzZXQtcmVhY3QtYXBwQF4wLjIuMToKKyAgdmVyc2lvbiAiMC4yLjEiCisgIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXByZXNldC1yZWFjdC1hcHAvLS9iYWJl
bC1wcmVzZXQtcmVhY3QtYXBwLTAuMi4xLnRneiNiZjk0NjIzMzgyYWRjMmM0YzdlMDk4YTY2MjI5
YzY2NzFhNzlmODQyIgorICBkZXBlbmRlbmNpZXM6CisgICAgYmFiZWwtcGx1Z2luLXRyYW5zZm9y
bS1jbGFzcy1wcm9wZXJ0aWVzICI2LjExLjUiCisgICAgYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1v
YmplY3QtcmVzdC1zcHJlYWQgIjYuOC4wIgorICAgIGJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tcmVh
Y3QtY29uc3RhbnQtZWxlbWVudHMgIjYuOS4xIgorICAgIGJhYmVsLXBsdWdpbi10cmFuc2Zvcm0t
cmVhY3QtanN4LXNlbGYgIjYuMTEuMCIKKyAgICBiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLXJlYWN0
LWpzeC1zb3VyY2UgIjYuOS4wIgorICAgIGJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tcmVnZW5lcmF0
b3IgIjYuMTQuMCIKKyAgICBiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLXJ1bnRpbWUgIjYuMTUuMCIK
KyAgICBiYWJlbC1wcmVzZXQtbGF0ZXN0ICI2LjE0LjAiCisgICAgYmFiZWwtcHJlc2V0LXJlYWN0
ICI2LjExLjEiCisgICAgYmFiZWwtcnVudGltZSAiNi4xMS42IgorCitiYWJlbC1wcmVzZXQtcmVh
Y3RANi4xMS4xOgorICB2ZXJzaW9uICI2LjExLjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXByZXNldC1yZWFjdC8tL2JhYmVsLXByZXNldC1yZWFjdC02
LjExLjEudGd6Izk4YWMyYmQzYzFiNzZmMzA2MmFlMDgyNTgwZWFkZTE1NGExOWI1OTAiCisgIGRl
cGVuZGVuY2llczoKKyAgICBiYWJlbC1wbHVnaW4tc3ludGF4LWZsb3cgIl42LjMuMTMiCisgICAg
YmFiZWwtcGx1Z2luLXN5bnRheC1qc3ggIl42LjMuMTMiCisgICAgYmFiZWwtcGx1Z2luLXRyYW5z
Zm9ybS1mbG93LXN0cmlwLXR5cGVzICJeNi4zLjEzIgorICAgIGJhYmVsLXBsdWdpbi10cmFuc2Zv
cm0tcmVhY3QtZGlzcGxheS1uYW1lICJeNi4zLjEzIgorICAgIGJhYmVsLXBsdWdpbi10cmFuc2Zv
cm0tcmVhY3QtanN4ICJeNi4zLjEzIgorICAgIGJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tcmVhY3Qt
anN4LXNlbGYgIl42LjExLjAiCisgICAgYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1yZWFjdC1qc3gt
c291cmNlICJeNi4zLjEzIgorCitiYWJlbC1yZWdpc3RlckBeNi4xNC4wLCBiYWJlbC1yZWdpc3Rl
ckBeNi4xNi4wOgorICB2ZXJzaW9uICI2LjE2LjMiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXJlZ2lzdGVyLy0vYmFiZWwtcmVnaXN0ZXItNi4xNi4zLnRn
eiM3YjBjMGNhN2JmZGViOTE4OGJhNGMyN2U1ZmNiNzU5OWE0OTdjNjI0IgorICBkZXBlbmRlbmNp
ZXM6CisgICAgYmFiZWwtY29yZSAiXjYuMTYuMCIKKyAgICBiYWJlbC1ydW50aW1lICJeNi4xMS42
IgorICAgIGNvcmUtanMgIl4yLjQuMCIKKyAgICBob21lLW9yLXRtcCAiXjEuMC4wIgorICAgIGxv
ZGFzaCAiXjQuMi4wIgorICAgIG1rZGlycCAiXjAuNS4xIgorICAgIHBhdGgtZXhpc3RzICJeMS4w
LjAiCisgICAgc291cmNlLW1hcC1zdXBwb3J0ICJeMC40LjIiCisKK2JhYmVsLXJ1bnRpbWVAXjYu
MC4wLCBiYWJlbC1ydW50aW1lQF42LjExLjYsIGJhYmVsLXJ1bnRpbWVAXjYuOS4wLCBiYWJlbC1y
dW50aW1lQF42LjkuMSwgYmFiZWwtcnVudGltZUA2LjExLjY6CisgIHZlcnNpb24gIjYuMTEuNiIK
KyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtcnVudGltZS8t
L2JhYmVsLXJ1bnRpbWUtNi4xMS42LnRneiM2ZGI3MDdmZWYyZDQ5YzQ5YmZhM2NiNjRlZmRiNDM2
YjUxOGI4MjIyIgorICBkZXBlbmRlbmNpZXM6CisgICAgY29yZS1qcyAiXjIuNC4wIgorICAgIHJl
Z2VuZXJhdG9yLXJ1bnRpbWUgIl4wLjkuNSIKKworYmFiZWwtdGVtcGxhdGVAXjYuMTQuMCwgYmFi
ZWwtdGVtcGxhdGVAXjYuMTUuMCwgYmFiZWwtdGVtcGxhdGVAXjYuMTYuMCwgYmFiZWwtdGVtcGxh
dGVAXjYuOC4wLCBiYWJlbC10ZW1wbGF0ZUBeNi45LjA6CisgIHZlcnNpb24gIjYuMTYuMCIKKyAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtdGVtcGxhdGUvLS9i
YWJlbC10ZW1wbGF0ZS02LjE2LjAudGd6I2UxNDlkZDFhOWYwM2EzNWY4MTdkZGJjNGQwNDgxOTg4
ZTdlYmM4Y2EiCisgIGRlcGVuZGVuY2llczoKKyAgICBiYWJlbC1ydW50aW1lICJeNi45LjAiCisg
ICAgYmFiZWwtdHJhdmVyc2UgIl42LjE2LjAiCisgICAgYmFiZWwtdHlwZXMgIl42LjE2LjAiCisg
ICAgYmFieWxvbiAiXjYuMTEuMCIKKyAgICBsb2Rhc2ggIl40LjIuMCIKKworYmFiZWwtdHJhdmVy
c2VAXjYuMC4yMCwgYmFiZWwtdHJhdmVyc2VAXjYuMTQuMCwgYmFiZWwtdHJhdmVyc2VAXjYuMTUu
MCwgYmFiZWwtdHJhdmVyc2VAXjYuMTYuMCwgYmFiZWwtdHJhdmVyc2VAXjYuOC4wLCBiYWJlbC10
cmF2ZXJzZUBeNi45LjA6CisgIHZlcnNpb24gIjYuMTYuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtdHJhdmVyc2UvLS9iYWJlbC10cmF2ZXJzZS02LjE2
LjAudGd6I2ZiYTg1YWUxZmQ0ZDEwN2RlOWNlMDAzMTQ5Y2M1N2Y1M2JlZjBjNGYiCisgIGRlcGVu
ZGVuY2llczoKKyAgICBiYWJlbC1jb2RlLWZyYW1lICJeNi4xNi4wIgorICAgIGJhYmVsLW1lc3Nh
Z2VzICJeNi44LjAiCisgICAgYmFiZWwtcnVudGltZSAiXjYuOS4wIgorICAgIGJhYmVsLXR5cGVz
ICJeNi4xNi4wIgorICAgIGJhYnlsb24gIl42LjExLjAiCisgICAgZGVidWcgIl4yLjIuMCIKKyAg
ICBnbG9iYWxzICJeOC4zLjAiCisgICAgaW52YXJpYW50ICJeMi4yLjAiCisgICAgbG9kYXNoICJe
NC4yLjAiCisKK2JhYmVsLXR5cGVzQF42LjAuMTksIGJhYmVsLXR5cGVzQF42LjEwLjIsIGJhYmVs
LXR5cGVzQF42LjE0LjAsIGJhYmVsLXR5cGVzQF42LjE1LjAsIGJhYmVsLXR5cGVzQF42LjE2LjAs
IGJhYmVsLXR5cGVzQF42LjguMCwgYmFiZWwtdHlwZXNAXjYuOS4wOgorICB2ZXJzaW9uICI2LjE2
LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXR5cGVz
Ly0vYmFiZWwtdHlwZXMtNi4xNi4wLnRneiM3MWNjYTFkYmU1MzM3NzY2MjI1YzVjMTkzMDcxZThl
YmNiY2ZmY2ZlIgorICBkZXBlbmRlbmNpZXM6CisgICAgYmFiZWwtcnVudGltZSAiXjYuOS4xIgor
ICAgIGVzdXRpbHMgIl4yLjAuMiIKKyAgICBsb2Rhc2ggIl40LjIuMCIKKyAgICB0by1mYXN0LXBy
b3BlcnRpZXMgIl4xLjAuMSIKKworYmFieWxvbkBeNi4wLjE4LCBiYWJ5bG9uQF42LjExLjAsIGJh
Ynlsb25AXjYuOC4xLCBiYWJ5bG9uQF42LjkuMDoKKyAgdmVyc2lvbiAiNi4xMS40IgorICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJ5bG9uLy0vYmFieWxvbi02LjEx
LjQudGd6Izc1ZTFmNTIxODdlZmEwY2RlNWE1NDFhN2Y3ZmRkYTM4ZjZlYjViZDIiCisKK2JhbGFu
Y2VkLW1hdGNoQF4wLjQuMSwgYmFsYW5jZWQtbWF0Y2hAXjAuNC4yOgorICB2ZXJzaW9uICIwLjQu
MiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFsYW5jZWQtbWF0
Y2gvLS9iYWxhbmNlZC1tYXRjaC0wLjQuMi50Z3ojY2IzZjNlM2M3MzJkYzBmMDFlZTcwYjQwM2Yz
MDJlNjFkNzcwOTgzOCIKKworYmFsYW5jZWQtbWF0Y2hAfjAuMS4wOgorICB2ZXJzaW9uICIwLjEu
MCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFsYW5jZWQtbWF0
Y2gvLS9iYWxhbmNlZC1tYXRjaC0wLjEuMC50Z3ojYjUwNGJkMDU4NjliMzkyNTlkZDBjNWVmYzM1
ZDg0MzE3NmRjY2M0YSIKKworYmFzZTY0LWpzQF4xLjAuMjoKKyAgdmVyc2lvbiAiMS4yLjAiCisg
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Jhc2U2NC1qcy8tL2Jhc2U2
NC1qcy0xLjIuMC50Z3ojYTM5OTkyZDcyMzU4NDgxMTk4MmJlNWUyOTBiYjZhNTNkODY3MDBmMSIK
KworQmFzZTY0QH4wLjIuMDoKKyAgdmVyc2lvbiAiMC4yLjEiCisgIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL0Jhc2U2NC8tL0Jhc2U2NC0wLjIuMS50Z3ojYmEzYTQyMzA3
MDhlMTg2NzA1MDY1ZTY2YmFiZGQ0YzM1Y2Y2MDAyOCIKKworYmF0Y2hAMC41LjM6CisgIHZlcnNp
b24gIjAuNS4zIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYXRj
aC8tL2JhdGNoLTAuNS4zLnRneiMzZjM0MTRmMzgwMzIxNzQzYmZjMTA0MmY5YTgzZmYxZDU4MjRk
NDY0IgorCitiY3J5cHQtcGJrZGZAXjEuMC4wOgorICB2ZXJzaW9uICIxLjAuMCIKKyAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmNyeXB0LXBia2RmLy0vYmNyeXB0LXBi
a2RmLTEuMC4wLnRneiMzY2E3NmI4NTI0MWM3MTcwYmY3ZDk3MDNlN2I5YWE3NDYzMDA0MGQ0Igor
ICBkZXBlbmRlbmNpZXM6CisgICAgdHdlZXRuYWNsICJeMC4xNC4zIgorCitiaWcuanNAXjMuMS4z
OgorICB2ZXJzaW9uICIzLjEuMyIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vYmlnLmpzLy0vYmlnLmpzLTMuMS4zLnRneiM0Y2FkYTIxOTM2NTJlYjNjYTllYzhlNTVj
OTAxNTY2OWM5ODA2OTc4IgorCitiaW5hcnktZXh0ZW5zaW9uc0BeMS4wLjA6CisgIHZlcnNpb24g
IjEuNy4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iaW5hcnkt
ZXh0ZW5zaW9ucy8tL2JpbmFyeS1leHRlbnNpb25zLTEuNy4wLnRneiM2YzE2MTBkYjE2M2FiZmIz
NGVkZmU0MmZhNDIzMzQzYTFlMDExODVkIgorCitibEB+MS4xLjI6CisgIHZlcnNpb24gIjEuMS4y
IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9ibC8tL2JsLTEuMS4y
LnRneiNmZGNhODcxYTk5NzEzYWEwMGQxOWUzYmJiYTQxYzQ0Nzg3YTY1Mzk4IgorICBkZXBlbmRl
bmNpZXM6CisgICAgcmVhZGFibGUtc3RyZWFtICJ+Mi4wLjUiCisKK2Jsb2NrLXN0cmVhbUAqOgor
ICB2ZXJzaW9uICIwLjAuOSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vYmxvY2stc3RyZWFtLy0vYmxvY2stc3RyZWFtLTAuMC45LnRneiMxM2ViZmU3NzhhMDMyMDVj
ZmUwMzc1MTQ4MWViYjRiMzMwMGMxMjZhIgorICBkZXBlbmRlbmNpZXM6CisgICAgaW5oZXJpdHMg
In4yLjAuMCIKKworYmx1ZWJpcmRAXjMuNC4xOgorICB2ZXJzaW9uICIzLjQuNiIKKyAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmx1ZWJpcmQvLS9ibHVlYmlyZC0zLjQu
Ni50Z3ojMDFkYThkODIxZDg3ODEzZDE1ODk2N2U3NDNkNWZlNmM2MmNmOGMwZiIKKworYm9vbGJh
c2VAfjEuMC4wOgorICB2ZXJzaW9uICIxLjAuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vYm9vbGJhc2UvLS9ib29sYmFzZS0xLjAuMC50Z3ojNjhkZmY1ZmJlNjBj
NTFlYjM3NzI1ZWE5ZTNlZDMxMGRjYzFlNzc2ZSIKKworYm9vbUAyLngueDoKKyAgdmVyc2lvbiAi
Mi4xMC4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9ib29tLy0v
Ym9vbS0yLjEwLjEudGd6IzM5Yzg5MThjZWZmNTc5OWY4M2Y5NDkyYTg0OGY2MjVhZGQwYzc2NmYi
CisgIGRlcGVuZGVuY2llczoKKyAgICBob2VrICIyLngueCIKKworYnJhY2UtZXhwYW5zaW9uQF4x
LjAuMDoKKyAgdmVyc2lvbiAiMS4xLjYiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL2JyYWNlLWV4cGFuc2lvbi8tL2JyYWNlLWV4cGFuc2lvbi0xLjEuNi50Z3ojNzE5
N2Q3ZWFhOWI4N2U2NDgzOTBlYTYxZmM2NmM4NDQyNzQyMGRmOSIKKyAgZGVwZW5kZW5jaWVzOgor
ICAgIGJhbGFuY2VkLW1hdGNoICJeMC40LjEiCisgICAgY29uY2F0LW1hcCAiMC4wLjEiCisKK2Jy
YWNlc0BeMS44LjI6CisgIHZlcnNpb24gIjEuOC41IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9icmFjZXMvLS9icmFjZXMtMS44LjUudGd6I2JhNzc5NjJlMTJkZmY5
NjlkNmI3NjcxMWU5MTRiNzM3ODU3YmY2YTciCisgIGRlcGVuZGVuY2llczoKKyAgICBleHBhbmQt
cmFuZ2UgIl4xLjguMSIKKyAgICBwcmVzZXJ2ZSAiXjAuMi4wIgorICAgIHJlcGVhdC1lbGVtZW50
ICJeMS4xLjIiCisKK2Jyb3dzZXItcmVzb2x2ZUBeMS4xMS4yOgorICB2ZXJzaW9uICIxLjExLjIi
CisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Jyb3dzZXItcmVzb2x2
ZS8tL2Jyb3dzZXItcmVzb2x2ZS0xLjExLjIudGd6IzhmZjA5YjBhMmM0MjE3MThhMTA1MWMyNjBi
MzJlNDhmNDQyOTM4Y2UiCisgIGRlcGVuZGVuY2llczoKKyAgICByZXNvbHZlICIxLjEuNyIKKwor
YnJvd3NlcmlmeS16bGliQH4wLjEuNDoKKyAgdmVyc2lvbiAiMC4xLjQiCisgIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Jyb3dzZXJpZnktemxpYi8tL2Jyb3dzZXJpZnkt
emxpYi0wLjEuNC50Z3ojYmIzNWY4YTUxOWY2MDBlMGZhNmI4NDg1MjQxYzk3OWQwMTQxZmIyZCIK
KyAgZGVwZW5kZW5jaWVzOgorICAgIHBha28gIn4wLjIuMCIKKworYnJvd3NlcnNsaXN0QH4xLjMu
NjoKKyAgdmVyc2lvbiAiMS4zLjYiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w
a2cuY29tL2Jyb3dzZXJzbGlzdC8tL2Jyb3dzZXJzbGlzdC0xLjMuNi50Z3ojOTUyZmY0OGQ1NjQ2
M2QzYjUzOGY4NWVmMmY4ZWFkZGZkMjg0YjEzMyIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGNhbml1
c2UtZGIgIl4xLjAuMzAwMDA1MjUiCisKK2Jyb3dzZXJzbGlzdEB+MS40LjA6CisgIHZlcnNpb24g
IjEuNC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9icm93c2Vy
c2xpc3QvLS9icm93c2Vyc2xpc3QtMS40LjAudGd6IzljZmRjZjUzODRkOTE1OGY1YjcwZGEyYWEw
MGIzMGU4ZmYwMTkwNDkiCisgIGRlcGVuZGVuY2llczoKKyAgICBjYW5pdXNlLWRiICJeMS4wLjMw
MDAwNTM5IgorCitic2VyQF4xLjAuMjoKKyAgdmVyc2lvbiAiMS4wLjIiCisgIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JzZXIvLS9ic2VyLTEuMC4yLnRneiMzODExMTY5
NzBiMmE2ZGVlYTU2NDZkZDE1ZGQ3Mjc4NDQ0YjU2MTY5IgorICBkZXBlbmRlbmNpZXM6CisgICAg
bm9kZS1pbnQ2NCAiXjAuNC4wIgorCitidWZmZXItc2hpbXNAXjEuMC4wOgorICB2ZXJzaW9uICIx
LjAuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYnVmZmVyLXNo
aW1zLy0vYnVmZmVyLXNoaW1zLTEuMC4wLnRneiM5OTc4Y2UzMTczODhjNjQ5YWQ4NzkzMDI4YzM0
NzdlZjA0NGE4YjUxIgorCitidWZmZXJAXjQuOS4wOgorICB2ZXJzaW9uICI0LjkuMSIKKyAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYnVmZmVyLy0vYnVmZmVyLTQuOS4x
LnRneiM2ZDFiYjYwMWIwN2E0ZWZjZWQ5NzA5NDEzMjA5MzAyN2M5NWJjMjk4IgorICBkZXBlbmRl
bmNpZXM6CisgICAgYmFzZTY0LWpzICJeMS4wLjIiCisgICAgaWVlZTc1NCAiXjEuMS40IgorICAg
IGlzYXJyYXkgIl4xLjAuMCIKKworYnVpbHRpbi1tb2R1bGVzQF4xLjAuMCwgYnVpbHRpbi1tb2R1
bGVzQF4xLjEuMToKKyAgdmVyc2lvbiAiMS4xLjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL2J1aWx0aW4tbW9kdWxlcy8tL2J1aWx0aW4tbW9kdWxlcy0xLjEuMS50
Z3ojMjcwZjA3NmM1YTcyYzAyZjViNjVhNDdkZjk0YzVmZTNhMjc4ODkyZiIKKworYnl0ZXNAMi4z
LjA6CisgIHZlcnNpb24gIjIuMy4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9ieXRlcy8tL2J5dGVzLTIuMy4wLnRneiNkNWI2ODBhMTY1YjYyMDE3MzlhY2I2MTE1
NDJhYWJjMmQ4Y2ViMDcwIgorCitjYWxsZXItcGF0aEBeMC4xLjA6CisgIHZlcnNpb24gIjAuMS4w
IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jYWxsZXItcGF0aC8t
L2NhbGxlci1wYXRoLTAuMS4wLnRneiM5NDA4NWVmNjM1ODFlY2QzZGFhOTI0NDRhOGZlOTRlODI1
Nzc3NTFmIgorICBkZXBlbmRlbmNpZXM6CisgICAgY2FsbHNpdGVzICJeMC4yLjAiCisKK2NhbGxz
aXRlc0BeMC4yLjA6CisgIHZlcnNpb24gIjAuMi4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9jYWxsc2l0ZXMvLS9jYWxsc2l0ZXMtMC4yLjAudGd6I2FmYWI5NjI2
MjkxMGE3ZjMzYzE5YTU3NzU4MjVjNjlmMzRlMzUwY2EiCisKK2NhbGxzaXRlc0BeMi4wLjA6Cisg
IHZlcnNpb24gIjIuMC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9jYWxsc2l0ZXMvLS9jYWxsc2l0ZXMtMi4wLjAudGd6IzA2ZWI4NGYwMGVlYTQxM2RhODZhZmZl
ZmFjYmZmYjM2MDkzYjNjNTAiCisKK2NhbWVsLWNhc2VAXjMuMC4wOgorICB2ZXJzaW9uICIzLjAu
MCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY2FtZWwtY2FzZS8t
L2NhbWVsLWNhc2UtMy4wLjAudGd6I2NhM2MzNjg4YTRlOWNmM2E0Y2RhNzc3ZGM0ZGNiYzcxMzI0
OWNmNzMiCisgIGRlcGVuZGVuY2llczoKKyAgICBuby1jYXNlICJeMi4yLjAiCisgICAgdXBwZXIt
Y2FzZSAiXjEuMS4xIgorCitjYW1lbGNhc2VAXjEuMC4yOgorICB2ZXJzaW9uICIxLjIuMSIKKyAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY2FtZWxjYXNlLy0vY2FtZWxj
YXNlLTEuMi4xLnRneiM5YmI1MzA0ZDJlMGI1NjY5OGIyYzc1OGIwOGEzZWFhOWRhYTU4YTM5Igor
CitjYW1lbGNhc2VAXjMuMC4wOgorICB2ZXJzaW9uICIzLjAuMCIKKyAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vY2FtZWxjYXNlLy0vY2FtZWxjYXNlLTMuMC4wLnRneiMz
MmZjNGI5ZmNkYWY4NDVmY2RmN2U3M2JiOTdjYWMyMjYxZjBhYjBhIgorCitjYW5pdXNlLWRiQF4x
LjAuMzAwMDA1MjUsIGNhbml1c2UtZGJAXjEuMC4zMDAwMDUyNywgY2FuaXVzZS1kYkBeMS4wLjMw
MDAwNTM5LCBjYW5pdXNlLWRiQF4xLjAuMzAwMDA1NDA6CisgIHZlcnNpb24gIjEuMC4zMDAwMDU1
MyIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY2FuaXVzZS1kYi8t
L2Nhbml1c2UtZGItMS4wLjMwMDAwNTUzLnRneiNlN2U5MDhmNDNiNzg4ZTZhYzc4ZmMxNjFmZWRj
NDYyNmQ2YTM5ZjI0IgorCitjYXJkaW5hbEBeMS4wLjA6CisgIHZlcnNpb24gIjEuMC4wIgorICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jYXJkaW5hbC8tL2NhcmRpbmFs
LTEuMC4wLnRneiM1MGUyMWMxYjBhYTM3NzI5ZjkzNzdkZWYxOTZiNWE5Y2VjOTMyZWU5IgorICBk
ZXBlbmRlbmNpZXM6CisgICAgYW5zaWNvbG9ycyAifjAuMi4xIgorICAgIHJlZGV5ZWQgIn4xLjAu
MCIKKworY2FzZS1zZW5zaXRpdmUtcGF0aHMtd2VicGFjay1wbHVnaW5AMS4xLjQ6CisgIHZlcnNp
b24gIjEuMS40IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jYXNl
LXNlbnNpdGl2ZS1wYXRocy13ZWJwYWNrLXBsdWdpbi8tL2Nhc2Utc2Vuc2l0aXZlLXBhdGhzLXdl
YnBhY2stcGx1Z2luLTEuMS40LnRneiM4YWFlZGQ1Njk5YTg2Y2FjMmIzNGNmNDBkOWI0MTQ1NzU4
OTc4NDcyIgorCitjYXNlbGVzc0B+MC4xMS4wOgorICB2ZXJzaW9uICIwLjExLjAiCisgIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Nhc2VsZXNzLy0vY2FzZWxlc3MtMC4x
MS4wLnRneiM3MTViOTZlYTk4NDE1OTNjYzMzMDY3OTIzZjVlYzYwZWJkYTRmN2Q3IgorCitjZW50
ZXItYWxpZ25AXjAuMS4xOgorICB2ZXJzaW9uICIwLjEuMyIKKyAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vY2VudGVyLWFsaWduLy0vY2VudGVyLWFsaWduLTAuMS4zLnRn
eiNhYTBkMzI2MjliNmVlOTcyMjAwNDExY2JkNDQ2MWM5MDdiYzJiN2FkIgorICBkZXBlbmRlbmNp
ZXM6CisgICAgYWxpZ24tdGV4dCAiXjAuMS4zIgorICAgIGxhenktY2FjaGUgIl4xLjAuMyIKKwor
Y2hhbGtAXjEuMC4wLCBjaGFsa0BeMS4xLjAsIGNoYWxrQF4xLjEuMSwgY2hhbGtAXjEuMS4zLCBj
aGFsa0AxLjEuMzoKKyAgdmVyc2lvbiAiMS4xLjMiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL2NoYWxrLy0vY2hhbGstMS4xLjMudGd6I2E4MTE1YzU1ZTRhNzAyZmU0
ZDE1MGFiZDM4NzI4MjJhN2UwOWZjOTgiCisgIGRlcGVuZGVuY2llczoKKyAgICBhbnNpLXN0eWxl
cyAiXjIuMi4xIgorICAgIGVzY2FwZS1zdHJpbmctcmVnZXhwICJeMS4wLjIiCisgICAgaGFzLWFu
c2kgIl4yLjAuMCIKKyAgICBzdHJpcC1hbnNpICJeMy4wLjAiCisgICAgc3VwcG9ydHMtY29sb3Ig
Il4yLjAuMCIKKworY2hhbmdlLWNhc2VAMy4wLng6CisgIHZlcnNpb24gIjMuMC4wIgorICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jaGFuZ2UtY2FzZS8tL2NoYW5nZS1j
YXNlLTMuMC4wLnRneiM2YzljOGUzNWY4NzkwODcwYTgyYjZiMDc0NWJlOGMzY2JlZjliMDgxIgor
ICBkZXBlbmRlbmNpZXM6CisgICAgY2FtZWwtY2FzZSAiXjMuMC4wIgorICAgIGNvbnN0YW50LWNh
c2UgIl4yLjAuMCIKKyAgICBkb3QtY2FzZSAiXjIuMS4wIgorICAgIGhlYWRlci1jYXNlICJeMS4w
LjAiCisgICAgaXMtbG93ZXItY2FzZSAiXjEuMS4wIgorICAgIGlzLXVwcGVyLWNhc2UgIl4xLjEu
MCIKKyAgICBsb3dlci1jYXNlICJeMS4xLjEiCisgICAgbG93ZXItY2FzZS1maXJzdCAiXjEuMC4w
IgorICAgIG5vLWNhc2UgIl4yLjIuMCIKKyAgICBwYXJhbS1jYXNlICJeMi4xLjAiCisgICAgcGFz
Y2FsLWNhc2UgIl4yLjAuMCIKKyAgICBwYXRoLWNhc2UgIl4yLjEuMCIKKyAgICBzZW50ZW5jZS1j
YXNlICJeMi4xLjAiCisgICAgc25ha2UtY2FzZSAiXjIuMS4wIgorICAgIHN3YXAtY2FzZSAiXjEu
MS4wIgorICAgIHRpdGxlLWNhc2UgIl4yLjEuMCIKKyAgICB1cHBlci1jYXNlICJeMS4xLjEiCisg
ICAgdXBwZXItY2FzZS1maXJzdCAiXjEuMS4wIgorCitjaGVlcmlvQF4wLjIwLjA6CisgIHZlcnNp
b24gIjAuMjAuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY2hl
ZXJpby8tL2NoZWVyaW8tMC4yMC4wLnRneiM1YzcxMGYyYmFiOTU2NTMyNzI4NDJiYTAxYzZlYTYx
YjM1NDVlYzM1IgorICBkZXBlbmRlbmNpZXM6CisgICAgY3NzLXNlbGVjdCAifjEuMi4wIgorICAg
IGRvbS1zZXJpYWxpemVyICJ+MC4xLjAiCisgICAgZW50aXRpZXMgIn4xLjEuMSIKKyAgICBodG1s
cGFyc2VyMiAifjMuOC4xIgorICAgIGxvZGFzaCAiXjQuMS4wIgorICBvcHRpb25hbERlcGVuZGVu
Y2llczoKKyAgICBqc2RvbSAiXjcuMC4yIgorCitjaG9raWRhckBeMS4wLjA6CisgIHZlcnNpb24g
IjEuNi4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jaG9raWRh
ci8tL2Nob2tpZGFyLTEuNi4wLnRneiM5MGMzMmFkNDgwMjkwMWQ3NzEzZGU1MzJkYzI4NGU5NmE2
M2FkMDU4IgorICBkZXBlbmRlbmNpZXM6CisgICAgYW55bWF0Y2ggIl4xLjMuMCIKKyAgICBhc3lu
Yy1lYWNoICJeMS4wLjAiCisgICAgZ2xvYi1wYXJlbnQgIl4yLjAuMCIKKyAgICBpbmhlcml0cyAi
XjIuMC4xIgorICAgIGlzLWJpbmFyeS1wYXRoICJeMS4wLjAiCisgICAgaXMtZ2xvYiAiXjIuMC4w
IgorICAgIHBhdGgtaXMtYWJzb2x1dGUgIl4xLjAuMCIKKyAgICByZWFkZGlycCAiXjIuMC4wIgor
ICBvcHRpb25hbERlcGVuZGVuY2llczoKKyAgICBmc2V2ZW50cyAiXjEuMC4wIgorCitjaXJjdWxh
ci1qc29uQF4wLjMuMDoKKyAgdmVyc2lvbiAiMC4zLjEiCisgIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL2NpcmN1bGFyLWpzb24vLS9jaXJjdWxhci1qc29uLTAuMy4xLnRn
eiNiZThiMzZhZWZjY2RlOGIzY2E3YWEyZDZhZmMwN2EzNzI0MmMwZDJkIgorCitjbGFwQF4xLjAu
OToKKyAgdmVyc2lvbiAiMS4xLjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w
a2cuY29tL2NsYXAvLS9jbGFwLTEuMS4xLnRneiNhOGE5M2UwYmZiNzU4MWFjMTk5YzRmMDAxYTU1
MjVhNzI0Y2U2OTZkIgorICBkZXBlbmRlbmNpZXM6CisgICAgY2hhbGsgIl4xLjEuMyIKKworY2xh
c3NuYW1lc0BeMi4yLjU6CisgIHZlcnNpb24gIjIuMi41IgorICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9jbGFzc25hbWVzLy0vY2xhc3NuYW1lcy0yLjIuNS50Z3ojZmIz
ODAxZDQ1MzQ2NzY0OWVmMzYwM2M3ZDYxYTAyYmQxMjliZGU2ZCIKKworY2xlYW4tY3NzQDMuNC54
OgorICB2ZXJzaW9uICIzLjQuMjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w
a2cuY29tL2NsZWFuLWNzcy8tL2NsZWFuLWNzcy0zLjQuMjAudGd6I2MwZDg5NjNiNTQ0OGUwMzBm
MGJjZDNkZGQwZGFjNGRmZTNkZWE1MDEiCisgIGRlcGVuZGVuY2llczoKKyAgICBjb21tYW5kZXIg
IjIuOC54IgorICAgIHNvdXJjZS1tYXAgIjAuNC54IgorCitjbGktY3Vyc29yQF4xLjAuMToKKyAg
dmVyc2lvbiAiMS4wLjIiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L2NsaS1jdXJzb3IvLS9jbGktY3Vyc29yLTEuMC4yLnRneiM2NGRhM2Y3ZDU2YTU0NDEyZTU5Nzk0
YmQ2MmRjMzUyOTVlOGYyOTg3IgorICBkZXBlbmRlbmNpZXM6CisgICAgcmVzdG9yZS1jdXJzb3Ig
Il4xLjAuMSIKKworY2xpLXRhYmxlQF4wLjMuMToKKyAgdmVyc2lvbiAiMC4zLjEiCisgIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NsaS10YWJsZS8tL2NsaS10YWJsZS0w
LjMuMS50Z3ojZjUzYjA1MjY2YThiMWEwYjkzNGIzZDA4MjFlNmUyZGM1OTE0YWUyMyIKKyAgZGVw
ZW5kZW5jaWVzOgorICAgIGNvbG9ycyAiMS4wLjMiCisKK2NsaS11c2FnZUBeMC4xLjE6CisgIHZl
cnNpb24gIjAuMS40IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9j
bGktdXNhZ2UvLS9jbGktdXNhZ2UtMC4xLjQudGd6IzdjMDFlMGRjNzA2YzIzNGIzOWM5MzM4Mzhj
OGUyMGIyMTc1Nzc2ZTIiCisgIGRlcGVuZGVuY2llczoKKyAgICBtYXJrZWQgIl4wLjMuNiIKKyAg
ICBtYXJrZWQtdGVybWluYWwgIl4xLjYuMiIKKworY2xpLXdpZHRoQF4yLjAuMDoKKyAgdmVyc2lv
biAiMi4xLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NsaS13
aWR0aC8tL2NsaS13aWR0aC0yLjEuMC50Z3ojYjIzNGNhMjA5YjI5ZWY2NmZjNTE4ZDliOThkNTg0
N2IwMGVkZjAwYSIKKworY2xpdWlAXjIuMS4wOgorICB2ZXJzaW9uICIyLjEuMCIKKyAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY2xpdWkvLS9jbGl1aS0yLjEuMC50Z3oj
NGI0NzU3NjBmZjgwMjY0Yzc2MmMzYTE3MTkwMzJlOTFjN2ZlYTBkMSIKKyAgZGVwZW5kZW5jaWVz
OgorICAgIGNlbnRlci1hbGlnbiAiXjAuMS4xIgorICAgIHJpZ2h0LWFsaWduICJeMC4xLjEiCisg
ICAgd29yZHdyYXAgIjAuMC4yIgorCitjbGl1aUBeMy4yLjA6CisgIHZlcnNpb24gIjMuMi4wIgor
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jbGl1aS8tL2NsaXVpLTMu
Mi4wLnRneiMxMjA2MDE1MzdhOTE2ZDI5OTQwZjkzNGRhM2I0OGQ1ODVhMzkyMTNkIgorICBkZXBl
bmRlbmNpZXM6CisgICAgc3RyaW5nLXdpZHRoICJeMS4wLjEiCisgICAgc3RyaXAtYW5zaSAiXjMu
MC4xIgorICAgIHdyYXAtYW5zaSAiXjIuMC4wIgorCitjbG9uZUBeMS4wLjI6CisgIHZlcnNpb24g
IjEuMC4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jbG9uZS8t
L2Nsb25lLTEuMC4yLnRneiMyNjBiN2E5OWViYjFlZGZlMjQ3NTM4MTc1Zjc4MzI0M2NiMTlkMTQ5
IgorCitjb0BeNC42LjA6CisgIHZlcnNpb24gIjQuNi4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9jby8tL2NvLTQuNi4wLnRneiM2ZWE2YmRmM2Q4NTNhZTU0Y2Ni
OGU0N2JmYTBiZjNmOTAzMWZiMTg0IgorCitjb2FAfjEuMC4xOgorICB2ZXJzaW9uICIxLjAuMSIK
KyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY29hLy0vY29hLTEuMC4x
LnRneiM3Zjk1OTM0NmNmYzg3MTllM2Y3MjMzY2Q2ODUyODU0YTdjNjdkOGEzIgorICBkZXBlbmRl
bmNpZXM6CisgICAgcSAiXjEuMS4yIgorCitjb2RlLXBvaW50LWF0QF4xLjAuMDoKKyAgdmVyc2lv
biAiMS4wLjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NvZGUt
cG9pbnQtYXQvLS9jb2RlLXBvaW50LWF0LTEuMC4xLnRneiMxMTA0Y2QzNGY5YjViNDVkM2ViYTg4
ZjFiYWJjMTkyNGUxY2UzNWZiIgorICBkZXBlbmRlbmNpZXM6CisgICAgbnVtYmVyLWlzLW5hbiAi
XjEuMC4wIgorCitjb2xvci1jb252ZXJ0QF4xLjMuMDoKKyAgdmVyc2lvbiAiMS41LjAiCisgIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NvbG9yLWNvbnZlcnQvLS9jb2xv
ci1jb252ZXJ0LTEuNS4wLnRneiM3YTJiNGVmYjQ0ODhkZjg1YmNhNjQ0M2NiMDM4YjcxMDBmYmU3
ZGUxIgorCitjb2xvci1uYW1lQF4xLjAuMDoKKyAgdmVyc2lvbiAiMS4xLjEiCisgIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NvbG9yLW5hbWUvLS9jb2xvci1uYW1lLTEu
MS4xLnRneiM0YjE0MTUzMDRjZjUwMDI4ZWE4MTY0MzY0M2JkODJlYTA1ODAzNjg5IgorCitjb2xv
ci1zdHJpbmdAXjAuMy4wOgorICB2ZXJzaW9uICIwLjMuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vY29sb3Itc3RyaW5nLy0vY29sb3Itc3RyaW5nLTAuMy4wLnRn
eiMyN2Q0NmZiNjcwMjVjNWMyZmEyNTk5M2JmYmY1NzllNDc4NDFiOTkxIgorICBkZXBlbmRlbmNp
ZXM6CisgICAgY29sb3ItbmFtZSAiXjEuMC4wIgorCitjb2xvckBeMC4xMS4wOgorICB2ZXJzaW9u
ICIwLjExLjMiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NvbG9y
Ly0vY29sb3ItMC4xMS4zLnRneiM0YmFkMWQwZDUyNDk5ZGQwMGRiZDZmMDg2ODQ0MjQ2N2U0OTM5
NGU2IgorICBkZXBlbmRlbmNpZXM6CisgICAgY2xvbmUgIl4xLjAuMiIKKyAgICBjb2xvci1jb252
ZXJ0ICJeMS4zLjAiCisgICAgY29sb3Itc3RyaW5nICJeMC4zLjAiCisKK2NvbG9ybWluQF4xLjAu
NToKKyAgdmVyc2lvbiAiMS4xLjIiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w
a2cuY29tL2NvbG9ybWluLy0vY29sb3JtaW4tMS4xLjIudGd6I2VhMmY3NDIwYTcyYjk2ODgxYTM4
YWFlNTllYzEyNGE2ZjcyOTgxMzMiCisgIGRlcGVuZGVuY2llczoKKyAgICBjb2xvciAiXjAuMTEu
MCIKKyAgICBjc3MtY29sb3ItbmFtZXMgIjAuMC40IgorICAgIGhhcyAiXjEuMC4xIgorCitjb2xv
cnNAfjEuMS4yOgorICB2ZXJzaW9uICIxLjEuMiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vY29sb3JzLy0vY29sb3JzLTEuMS4yLnRneiMxNjhhNDcwMTc1NmI2YTdm
NTFhMTJjZTBjOTdiZmEyOGMwODRlZDYzIgorCitjb2xvcnNAMS4wLjM6CisgIHZlcnNpb24gIjEu
MC4zIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jb2xvcnMvLS9j
b2xvcnMtMS4wLjMudGd6IzA0MzNmNDRkODA5NjgwZmRlYjYwZWQyNjBmMWIwYzI2MmU4MmE0MGIi
CisKK2NvbWJpbmVkLXN0cmVhbUBeMS4wLjUsIGNvbWJpbmVkLXN0cmVhbUB+MS4wLjU6CisgIHZl
cnNpb24gIjEuMC41IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9j
b21iaW5lZC1zdHJlYW0vLS9jb21iaW5lZC1zdHJlYW0tMS4wLjUudGd6IzkzODM3MGE1N2I0YTUx
ZGVhMmM3N2MxNWQ1YzVmZGY4OTUxNjQwMDkiCisgIGRlcGVuZGVuY2llczoKKyAgICBkZWxheWVk
LXN0cmVhbSAifjEuMC4wIgorCitjb21tYW5kZXJAXjIuOS4wLCBjb21tYW5kZXJAMi45Lng6Cisg
IHZlcnNpb24gIjIuOS4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9jb21tYW5kZXIvLS9jb21tYW5kZXItMi45LjAudGd6IzljOTkwOTQxNzZlMTIyNDBjYjIyZDZj
NTE0NjA5ODQwMGZlMGY3ZDQiCisgIGRlcGVuZGVuY2llczoKKyAgICBncmFjZWZ1bC1yZWFkbGlu
ayAiPj0gMS4wLjAiCisKK2NvbW1hbmRlckB+Mi44LjEsIGNvbW1hbmRlckAyLjgueDoKKyAgdmVy
c2lvbiAiMi44LjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Nv
bW1hbmRlci8tL2NvbW1hbmRlci0yLjguMS50Z3ojMDZiZTM2N2ZlYmZkYTBjMzMwYWExZTJhMDcy
ZDNkYzk3NjI0MjVkNCIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGdyYWNlZnVsLXJlYWRsaW5rICI+
PSAxLjAuMCIKKworY29tbW9uZGlyQF4xLjAuMToKKyAgdmVyc2lvbiAiMS4wLjEiCisgIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NvbW1vbmRpci8tL2NvbW1vbmRpci0x
LjAuMS50Z3ojZGRkODAwZGEwYzY2MTI3MzkzY2NhNTk1MGVhOTY4YTNhYWYxMjUzYiIKKworY29t
cHJlc3NpYmxlQH4yLjAuODoKKyAgdmVyc2lvbiAiMi4wLjgiCisgIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NvbXByZXNzaWJsZS8tL2NvbXByZXNzaWJsZS0yLjAuOC50
Z3ojNzE2MmU2YzQ2ZDNiOWQyMDBmZmI0NWNiNGU0YTBmNzgzMjczMjUwMyIKKyAgZGVwZW5kZW5j
aWVzOgorICAgIG1pbWUtZGIgIj49IDEuMjMuMCA8IDIiCisKK2NvbXByZXNzaW9uQF4xLjUuMjoK
KyAgdmVyc2lvbiAiMS42LjIiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL2NvbXByZXNzaW9uLy0vY29tcHJlc3Npb24tMS42LjIudGd6I2NjZWIxMjFlY2M5ZDA5YzUy
ZDdhZDBjMzM1MGVhOTNkZGQ0MDJiYzMiCisgIGRlcGVuZGVuY2llczoKKyAgICBhY2NlcHRzICJ+
MS4zLjMiCisgICAgYnl0ZXMgIjIuMy4wIgorICAgIGNvbXByZXNzaWJsZSAifjIuMC44IgorICAg
IGRlYnVnICJ+Mi4yLjAiCisgICAgb24taGVhZGVycyAifjEuMC4xIgorICAgIHZhcnkgIn4xLjEu
MCIKKworY29uY2F0LW1hcEAwLjAuMToKKyAgdmVyc2lvbiAiMC4wLjEiCisgIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NvbmNhdC1tYXAvLS9jb25jYXQtbWFwLTAuMC4x
LnRneiNkOGE5NmJkNzdmZDY4ZGY3NzkzYTczMDM2YTNiYTBkNTQwNWQ0NzdiIgorCitjb25jYXQt
c3RyZWFtQF4xLjQuNjoKKyAgdmVyc2lvbiAiMS41LjIiCisgIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL2NvbmNhdC1zdHJlYW0vLS9jb25jYXQtc3RyZWFtLTEuNS4yLnRn
eiM3MDg5Nzg2MjRkODU2YWY0MWE1YTc0MWRlZmRkMjYxZGE3NTJjMjY2IgorICBkZXBlbmRlbmNp
ZXM6CisgICAgaW5oZXJpdHMgIn4yLjAuMSIKKyAgICByZWFkYWJsZS1zdHJlYW0gIn4yLjAuMCIK
KyAgICB0eXBlZGFycmF5ICJ+MC4wLjUiCisKK2Nvbm5lY3QtaGlzdG9yeS1hcGktZmFsbGJhY2tA
XjEuMy4wLCBjb25uZWN0LWhpc3RvcnktYXBpLWZhbGxiYWNrQDEuMy4wOgorICB2ZXJzaW9uICIx
LjMuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY29ubmVjdC1o
aXN0b3J5LWFwaS1mYWxsYmFjay8tL2Nvbm5lY3QtaGlzdG9yeS1hcGktZmFsbGJhY2stMS4zLjAu
dGd6I2U1MWQxN2Y4ZjBlZjBkYjkwYTY0ZmRiNDdkZTMwNTE1NTZlOWYxNjkiCisKK2NvbnNvbGUt
YnJvd3NlcmlmeUBeMS4xLjA6CisgIHZlcnNpb24gIjEuMS4wIgorICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jb25zb2xlLWJyb3dzZXJpZnkvLS9jb25zb2xlLWJyb3dz
ZXJpZnktMS4xLjAudGd6I2YwMjQxYzQ1NzMwYTlmYzYzMjNiMjA2ZGJmMzhlZGM3NDFkMGJiMTAi
CisgIGRlcGVuZGVuY2llczoKKyAgICBkYXRlLW5vdyAiXjAuMS40IgorCitjb25zb2xlLWNvbnRy
b2wtc3RyaW5nc0BeMS4wLjAsIGNvbnNvbGUtY29udHJvbC1zdHJpbmdzQH4xLjEuMDoKKyAgdmVy
c2lvbiAiMS4xLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Nv
bnNvbGUtY29udHJvbC1zdHJpbmdzLy0vY29uc29sZS1jb250cm9sLXN0cmluZ3MtMS4xLjAudGd6
IzNkN2NmNDQ2NGRiNjQ0NmVhNjQ0YmY0YjM5NTA3Zjk4NTEwMDhlOGUiCisKK2NvbnN0YW50LWNh
c2VAXjIuMC4wOgorICB2ZXJzaW9uICIyLjAuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vY29uc3RhbnQtY2FzZS8tL2NvbnN0YW50LWNhc2UtMi4wLjAudGd6IzQx
NzU3NjRkMzg5ZDNmYTljOGVjZDI5MTg2ZWQ2MDA1MjQzYjZhNDYiCisgIGRlcGVuZGVuY2llczoK
KyAgICBzbmFrZS1jYXNlICJeMi4xLjAiCisgICAgdXBwZXItY2FzZSAiXjEuMS4xIgorCitjb25z
dGFudHMtYnJvd3NlcmlmeUAwLjAuMToKKyAgdmVyc2lvbiAiMC4wLjEiCisgIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NvbnN0YW50cy1icm93c2VyaWZ5Ly0vY29uc3Rh
bnRzLWJyb3dzZXJpZnktMC4wLjEudGd6IzkyNTc3ZGI1MjdiYTZjNGNmMGE0NTY4ZDg0YmMwMzFm
NDQxZTIxZjIiCisKK2NvbnRhaW5zLXBhdGhAXjAuMS4wOgorICB2ZXJzaW9uICIwLjEuMCIKKyAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY29udGFpbnMtcGF0aC8tL2Nv
bnRhaW5zLXBhdGgtMC4xLjAudGd6I2ZlOGNmMTg0ZmY2NjcwYjZiYWVmMDFhOWQ0ODYxYTVjYmVj
NDEyMGEiCisKK2NvbnRlbnQtZGlzcG9zaXRpb25AMC41LjE6CisgIHZlcnNpb24gIjAuNS4xIgor
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jb250ZW50LWRpc3Bvc2l0
aW9uLy0vY29udGVudC1kaXNwb3NpdGlvbi0wLjUuMS50Z3ojODc0NzZjNmE2N2M4ZGFhODdlMzJl
ODc2MTZkZjg4M2JhN2ZiMDcxYiIKKworY29udGVudC10eXBlQH4xLjAuMjoKKyAgdmVyc2lvbiAi
MS4wLjIiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NvbnRlbnQt
dHlwZS8tL2NvbnRlbnQtdHlwZS0xLjAuMi50Z3ojYjdkMTEzYWVlN2E4ZGQyN2JkMjExMzNjNGRj
MjUyOWRmMTcyMWVlZCIKKworY29udmVydC1zb3VyY2UtbWFwQF4xLjEuMDoKKyAgdmVyc2lvbiAi
MS4zLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NvbnZlcnQt
c291cmNlLW1hcC8tL2NvbnZlcnQtc291cmNlLW1hcC0xLjMuMC50Z3ojZTlmM2U5YzZlMjcyOGVm
YzI2NzY2OTZhNzBlYjM4MmY3MzEwNmE2NyIKKworY29va2llLXNpZ25hdHVyZUAxLjAuNjoKKyAg
dmVyc2lvbiAiMS4wLjYiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L2Nvb2tpZS1zaWduYXR1cmUvLS9jb29raWUtc2lnbmF0dXJlLTEuMC42LnRneiNlMzAzYTg4MmIz
NDJjYzNlZThjYTUxM2E3OTk5OTczNGRhYjNhZTJjIgorCitjb29raWVAMC4zLjE6CisgIHZlcnNp
b24gIjAuMy4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jb29r
aWUvLS9jb29raWUtMC4zLjEudGd6I2U3ZTBhMWY5ZWY0M2I0YzhiYTkyNWM1YzVhOTZlODA2ZDE2
ODczYmIiCisKK2NvcmUtanNAXjEuMC4wOgorICB2ZXJzaW9uICIxLjIuNyIKKyAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY29yZS1qcy8tL2NvcmUtanMtMS4yLjcudGd6
IzY1MjI5NGMxNDY1MWRiMjhmYTkzYmQyZDVmZjI5ODNhNGYwOGM2MzYiCisKK2NvcmUtanNAXjIu
NC4wOgorICB2ZXJzaW9uICIyLjQuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vY29yZS1qcy8tL2NvcmUtanMtMi40LjEudGd6IzRkZTkxMWU2NjdiMGVhZTkxMjRl
MzQyNTRiNTNhZWE2ZmM2MThkM2UiCisKK2NvcmUtdXRpbC1pc0B+MS4wLjA6CisgIHZlcnNpb24g
IjEuMC4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jb3JlLXV0
aWwtaXMvLS9jb3JlLXV0aWwtaXMtMS4wLjIudGd6I2I1ZmQ1NDIyMGFhMmJjNWFiNTdhYWI3MTQw
Yzk0MDc1NDUwM2MxYTciCisKK2Nyb3NzLXNwYXduQDQuMC4wOgorICB2ZXJzaW9uICI0LjAuMCIK
KyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY3Jvc3Mtc3Bhd24vLS9j
cm9zcy1zcGF3bi00LjAuMC50Z3ojODI1NDc3NGFiNDc4NmI4YzViM2NmNGRmYmE2NmNlNTYzOTMy
YzI1MiIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGxydS1jYWNoZSAiXjQuMC4xIgorICAgIHdoaWNo
ICJeMS4yLjkiCisKK2NyeXB0aWxlc0AyLngueDoKKyAgdmVyc2lvbiAiMi4wLjUiCisgIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NyeXB0aWxlcy8tL2NyeXB0aWxlcy0y
LjAuNS50Z3ojM2JkZmVjZGM2MDgxNDdjMWM2NzIwMmZhMjkxZTdkY2E1OWVhYTNiOCIKKyAgZGVw
ZW5kZW5jaWVzOgorICAgIGJvb20gIjIueC54IgorCitjcnlwdG8tYnJvd3NlcmlmeUB+My4yLjY6
CisgIHZlcnNpb24gIjMuMi44IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9jcnlwdG8tYnJvd3NlcmlmeS8tL2NyeXB0by1icm93c2VyaWZ5LTMuMi44LnRneiNiOWIx
MWRiZTZkOTY1MWRkODgyYTAxZTZjYzQ2N2RmNzE4ZWNmMTg5IgorICBkZXBlbmRlbmNpZXM6Cisg
ICAgcGJrZGYyLWNvbXBhdCAiMi4wLjEiCisgICAgcmlwZW1kMTYwICIwLjIuMCIKKyAgICBzaGEu
anMgIjIuMi42IgorCitjc3MtY29sb3ItbmFtZXNAMC4wLjQ6CisgIHZlcnNpb24gIjAuMC40Igor
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jc3MtY29sb3ItbmFtZXMv
LS9jc3MtY29sb3ItbmFtZXMtMC4wLjQudGd6IzgwOGFkYzJlNzljZjg0NzM4MDY5YjY0NmNiMjBl
YzI3YmViNjI5ZTAiCisKK2Nzcy1sb2FkZXJAMC4yNC4wOgorICB2ZXJzaW9uICIwLjI0LjAiCisg
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Nzcy1sb2FkZXIvLS9jc3Mt
bG9hZGVyLTAuMjQuMC50Z3ojN2FmYWFmYjRjMGZiMmY5MGIzMzVlZDEwYTFjNzdiMzRkNjQ4NDNm
ZSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGJhYmVsLWNvZGUtZnJhbWUgIl42LjExLjAiCisgICAg
Y3NzLXNlbGVjdG9yLXRva2VuaXplciAiXjAuNi4wIgorICAgIGNzc25hbm8gIj49Mi42LjEgPDQi
CisgICAgbG9hZGVyLXV0aWxzICJ+MC4yLjIiCisgICAgbG9kYXNoLmNhbWVsY2FzZSAiXjMuMC4x
IgorICAgIG9iamVjdC1hc3NpZ24gIl40LjAuMSIKKyAgICBwb3N0Y3NzICJeNS4wLjYiCisgICAg
cG9zdGNzcy1tb2R1bGVzLWV4dHJhY3QtaW1wb3J0cyAiXjEuMC4wIgorICAgIHBvc3Rjc3MtbW9k
dWxlcy1sb2NhbC1ieS1kZWZhdWx0ICJeMS4wLjEiCisgICAgcG9zdGNzcy1tb2R1bGVzLXNjb3Bl
ICJeMS4wLjAiCisgICAgcG9zdGNzcy1tb2R1bGVzLXZhbHVlcyAiXjEuMS4wIgorICAgIHNvdXJj
ZS1saXN0LW1hcCAiXjAuMS40IgorCitjc3Mtc2VsZWN0QF4xLjEuMCwgY3NzLXNlbGVjdEB+MS4y
LjA6CisgIHZlcnNpb24gIjEuMi4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9jc3Mtc2VsZWN0Ly0vY3NzLXNlbGVjdC0xLjIuMC50Z3ojMmIzYTExMDUzOWM1MzU1
ZjFjZDhkMzE0NjIzZTg3MGIxMjFlYzg1OCIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGJvb2xiYXNl
ICJ+MS4wLjAiCisgICAgY3NzLXdoYXQgIjIuMSIKKyAgICBkb211dGlscyAiMS41LjEiCisgICAg
bnRoLWNoZWNrICJ+MS4wLjEiCisKK2Nzcy1zZWxlY3Rvci10b2tlbml6ZXJAXjAuNi4wOgorICB2
ZXJzaW9uICIwLjYuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
Y3NzLXNlbGVjdG9yLXRva2VuaXplci8tL2Nzcy1zZWxlY3Rvci10b2tlbml6ZXItMC42LjAudGd6
IzY0NDVmNTgyYzc5MzBkMjQxZGNjNTAwN2E0M2Q2ZmNiOGYwNzMxNTIiCisgIGRlcGVuZGVuY2ll
czoKKyAgICBjc3Nlc2MgIl4wLjEuMCIKKyAgICBmYXN0cGFyc2UgIl4xLjEuMSIKKyAgICByZWdl
eHB1LWNvcmUgIl4xLjAuMCIKKworY3NzLXdoYXRAMi4xOgorICB2ZXJzaW9uICIyLjEuMCIKKyAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY3NzLXdoYXQvLS9jc3Mtd2hh
dC0yLjEuMC50Z3ojOTQ2N2QwMzJjMzhjZmFlZmI5ZjJkNzk1MDEyNTMwNjJmODdmYTFiZCIKKwor
Y3NzZXNjQF4wLjEuMDoKKyAgdmVyc2lvbiAiMC4xLjAiCisgIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL2Nzc2VzYy8tL2Nzc2VzYy0wLjEuMC50Z3ojYzgxNDkwM2U0NTYy
MzM3MWEwNDc3YjQwMTA5YWFhZmJlZWFkZGJiNCIKKworImNzc25hbm9APj0yLjYuMSA8NCI6Cisg
IHZlcnNpb24gIjMuNy43IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9jc3NuYW5vLy0vY3NzbmFuby0zLjcuNy50Z3ojMjdmYWM2MTEzODBjNmE0OWQ2ZjcyMmMwNTM3
ZTVhOTg4YTc4NTAxMCIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGF1dG9wcmVmaXhlciAiXjYuMy4x
IgorICAgIGRlY2FtZWxpemUgIl4xLjEuMiIKKyAgICBkZWZpbmVkICJeMS4wLjAiCisgICAgaGFz
ICJeMS4wLjEiCisgICAgb2JqZWN0LWFzc2lnbiAiXjQuMC4xIgorICAgIHBvc3Rjc3MgIl41LjAu
MTQiCisgICAgcG9zdGNzcy1jYWxjICJeNS4yLjAiCisgICAgcG9zdGNzcy1jb2xvcm1pbiAiXjIu
MS44IgorICAgIHBvc3Rjc3MtY29udmVydC12YWx1ZXMgIl4yLjMuNCIKKyAgICBwb3N0Y3NzLWRp
c2NhcmQtY29tbWVudHMgIl4yLjAuNCIKKyAgICBwb3N0Y3NzLWRpc2NhcmQtZHVwbGljYXRlcyAi
XjIuMC4xIgorICAgIHBvc3Rjc3MtZGlzY2FyZC1lbXB0eSAiXjIuMC4xIgorICAgIHBvc3Rjc3Mt
ZGlzY2FyZC1vdmVycmlkZGVuICJeMC4xLjEiCisgICAgcG9zdGNzcy1kaXNjYXJkLXVudXNlZCAi
XjIuMi4xIgorICAgIHBvc3Rjc3MtZmlsdGVyLXBsdWdpbnMgIl4yLjAuMCIKKyAgICBwb3N0Y3Nz
LW1lcmdlLWlkZW50cyAiXjIuMS41IgorICAgIHBvc3Rjc3MtbWVyZ2UtbG9uZ2hhbmQgIl4yLjAu
MSIKKyAgICBwb3N0Y3NzLW1lcmdlLXJ1bGVzICJeMi4wLjMiCisgICAgcG9zdGNzcy1taW5pZnkt
Zm9udC12YWx1ZXMgIl4xLjAuMiIKKyAgICBwb3N0Y3NzLW1pbmlmeS1ncmFkaWVudHMgIl4xLjAu
MSIKKyAgICBwb3N0Y3NzLW1pbmlmeS1wYXJhbXMgIl4xLjAuNCIKKyAgICBwb3N0Y3NzLW1pbmlm
eS1zZWxlY3RvcnMgIl4yLjAuNCIKKyAgICBwb3N0Y3NzLW5vcm1hbGl6ZS1jaGFyc2V0ICJeMS4x
LjAiCisgICAgcG9zdGNzcy1ub3JtYWxpemUtdXJsICJeMy4wLjciCisgICAgcG9zdGNzcy1vcmRl
cmVkLXZhbHVlcyAiXjIuMS4wIgorICAgIHBvc3Rjc3MtcmVkdWNlLWlkZW50cyAiXjIuMi4yIgor
ICAgIHBvc3Rjc3MtcmVkdWNlLWluaXRpYWwgIl4xLjAuMCIKKyAgICBwb3N0Y3NzLXJlZHVjZS10
cmFuc2Zvcm1zICJeMS4wLjMiCisgICAgcG9zdGNzcy1zdmdvICJeMi4xLjEiCisgICAgcG9zdGNz
cy11bmlxdWUtc2VsZWN0b3JzICJeMi4wLjIiCisgICAgcG9zdGNzcy12YWx1ZS1wYXJzZXIgIl4z
LjIuMyIKKyAgICBwb3N0Y3NzLXppbmRleCAiXjIuMC4xIgorCitjc3NvQH4yLjIuMToKKyAgdmVy
c2lvbiAiMi4yLjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Nz
c28vLS9jc3NvLTIuMi4xLnRneiM1MWZiYjUzNDdlNTBlODFlNmVkNTE2NjhhNDg0OTBhZTZmZTJh
ZmUyIgorICBkZXBlbmRlbmNpZXM6CisgICAgY2xhcCAiXjEuMC45IgorICAgIHNvdXJjZS1tYXAg
Il4wLjUuMyIKKworImNzc29tQD49IDAuMy4wIDwgMC40LjAiLCBjc3NvbUAwLjMueDoKKyAgdmVy
c2lvbiAiMC4zLjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Nz
c29tLy0vY3Nzb20tMC4zLjEudGd6I2M5ZTM3ZWYyNDkwZTY0ZjZkMWJhYTEwZmRhODUyMjU3MDgy
YzI1ZDMiCisKKyJjc3NzdHlsZUA+PSAwLjIuMjkgPCAwLjMuMCIsICJjc3NzdHlsZUA+PSAwLjIu
MzYgPCAwLjMuMCI6CisgIHZlcnNpb24gIjAuMi4zNyIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vY3Nzc3R5bGUvLS9jc3NzdHlsZS0wLjIuMzcudGd6IzU0MTA5NzIz
NGNiMjUxM2M4M2NlZWQzYWNkZGMyN2ZmMjc5ODdkNTQiCisgIGRlcGVuZGVuY2llczoKKyAgICBj
c3NvbSAiMC4zLngiCisKK2RAXjAuMS4xLCBkQH4wLjEuMToKKyAgdmVyc2lvbiAiMC4xLjEiCisg
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2QvLS9kLTAuMS4xLnRneiNk
YTE4NGM1MzVkMThkOGVlN2JhMmFhMjI5YjkxNDAwOWZhZTExMzA5IgorICBkZXBlbmRlbmNpZXM6
CisgICAgZXM1LWV4dCAifjAuMTAuMiIKKworZGFtZXJhdS1sZXZlbnNodGVpbkBeMS4wLjA6Cisg
IHZlcnNpb24gIjEuMC4zIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9kYW1lcmF1LWxldmVuc2h0ZWluLy0vZGFtZXJhdS1sZXZlbnNodGVpbi0xLjAuMy50Z3ojYWU0
ZjRjZTBiNjJhY2FlMTBmZjYzYTAxYmIwOGY2NTJmNTIxM2FmMiIKKworZGFzaGRhc2hAXjEuMTIu
MDoKKyAgdmVyc2lvbiAiMS4xNC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9kYXNoZGFzaC8tL2Rhc2hkYXNoLTEuMTQuMC50Z3ojMjllNDg2YzU0MThiZjBmMzU2
MDM0YTk5M2Q1MTY4NmEzM2U4NDE0MSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGFzc2VydC1wbHVz
ICJeMS4wLjAiCisKK2RhdGUtbm93QF4wLjEuNDoKKyAgdmVyc2lvbiAiMC4xLjQiCisgIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2RhdGUtbm93Ly0vZGF0ZS1ub3ctMC4x
LjQudGd6I2VhZjQzOWZkNGQ0ODQ4YWQ3NGU1Y2M3ZGJlZjIwMDY3MmI5ZTM0NWIiCisKK2RlYnVn
QF4yLjEuMCwgZGVidWdAXjIuMS4xLCBkZWJ1Z0BeMi4yLjAsIGRlYnVnQH4yLjIuMDoKKyAgdmVy
c2lvbiAiMi4yLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Rl
YnVnLy0vZGVidWctMi4yLjAudGd6I2Y4NzA1N2U5OTViMWExZjZhZTZhNDk2MDY2NDEzN2JjNTZm
MDM5ZGEiCisgIGRlcGVuZGVuY2llczoKKyAgICBtcyAiMC43LjEiCisKK2RlY2FtZWxpemVAXjEu
MC4wLCBkZWNhbWVsaXplQF4xLjEuMSwgZGVjYW1lbGl6ZUBeMS4xLjI6CisgIHZlcnNpb24gIjEu
Mi4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9kZWNhbWVsaXpl
Ly0vZGVjYW1lbGl6ZS0xLjIuMC50Z3ojZjY1MzRkMTUxNDgyNjliMjAzNTJlN2JlZTI2ZjUwMWY5
YTE5MTI5MCIKKworZGVlcC1leHRlbmRAfjAuNC4wOgorICB2ZXJzaW9uICIwLjQuMSIKKyAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZGVlcC1leHRlbmQvLS9kZWVwLWV4
dGVuZC0wLjQuMS50Z3ojZWZlNDExM2QwODA4NWY0ZTZmOTY4Nzc1OTgxMGY4MDc0NjllMjI1MyIK
KworZGVlcC1pc0B+MC4xLjM6CisgIHZlcnNpb24gIjAuMS4zIgorICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9kZWVwLWlzLy0vZGVlcC1pcy0wLjEuMy50Z3ojYjM2OWQ2
ZmI1ZGJjMTNlZWNmNTI0ZjkxYjA3MGZlZWRjMzU3Y2YzNCIKKworZGVmaW5lLXByb3BlcnRpZXNA
XjEuMS4xLCBkZWZpbmUtcHJvcGVydGllc0BeMS4xLjI6CisgIHZlcnNpb24gIjEuMS4yIgorICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9kZWZpbmUtcHJvcGVydGllcy8t
L2RlZmluZS1wcm9wZXJ0aWVzLTEuMS4yLnRneiM4M2E3M2YyZmVhNTY5ODk4ZmI3MzcxOTNjOGY4
NzNjYWY2ZDQ1Yzk0IgorICBkZXBlbmRlbmNpZXM6CisgICAgZm9yZWFjaCAiXjIuMC41IgorICAg
IG9iamVjdC1rZXlzICJeMS4wLjgiCisKK2RlZmluZWRAXjEuMC4wOgorICB2ZXJzaW9uICIxLjAu
MCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZGVmaW5lZC8tL2Rl
ZmluZWQtMS4wLjAudGd6I2M5OGQ5YmNlZjc1Njc0MTg4ZTExMDk2OTE1MTE5OWUzOWIxZmE2OTMi
CisKK2RlbEBeMi4wLjI6CisgIHZlcnNpb24gIjIuMi4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9kZWwvLS9kZWwtMi4yLjIudGd6I2MxMmM5ODFkMDY3ODQ2Yzg0
YmNhZjg2MmNmZjkzMGQ5MDdmZmQxYTgiCisgIGRlcGVuZGVuY2llczoKKyAgICBnbG9iYnkgIl41
LjAuMCIKKyAgICBpcy1wYXRoLWN3ZCAiXjEuMC4wIgorICAgIGlzLXBhdGgtaW4tY3dkICJeMS4w
LjAiCisgICAgb2JqZWN0LWFzc2lnbiAiXjQuMC4xIgorICAgIHBpZnkgIl4yLjAuMCIKKyAgICBw
aW5raWUtcHJvbWlzZSAiXjIuMC4wIgorICAgIHJpbXJhZiAiXjIuMi44IgorCitkZWxheWVkLXN0
cmVhbUB+MS4wLjA6CisgIHZlcnNpb24gIjEuMC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9kZWxheWVkLXN0cmVhbS8tL2RlbGF5ZWQtc3RyZWFtLTEuMC4wLnRn
eiNkZjNhZTE5OWFjYWRmYjdkNDQwYWFhZTBiMjllMjI3MmIyNGVjNjE5IgorCitkZWxlZ2F0ZXNA
XjEuMC4wOgorICB2ZXJzaW9uICIxLjAuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vZGVsZWdhdGVzLy0vZGVsZWdhdGVzLTEuMC4wLnRneiM4NGM2ZTE1OWI4MTkw
NGZkY2E1OWEwZWY0NGNkODcwZDMxMjUwZjlhIgorCitkZXBkQH4xLjEuMDoKKyAgdmVyc2lvbiAi
MS4xLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2RlcGQvLS9k
ZXBkLTEuMS4wLnRneiNlMWJkODJjNmFhYjZjZWQ5NjViOTdiODhiMTdlZDNlNTI4Y2ExOGMzIgor
CitkZXN0cm95QH4xLjAuNDoKKyAgdmVyc2lvbiAiMS4wLjQiCisgIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Rlc3Ryb3kvLS9kZXN0cm95LTEuMC40LnRneiM5Nzg4NTc0
NDJjNDQ3NDllNDIwNjYxM2UzNzk0NjIwNTgyNmFiZDgwIgorCitkZXRlY3QtaW5kZW50QF4zLjAu
MToKKyAgdmVyc2lvbiAiMy4wLjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w
a2cuY29tL2RldGVjdC1pbmRlbnQvLS9kZXRlY3QtaW5kZW50LTMuMC4xLnRneiM5ZGM1ZTVkZGJj
ZWVmODMyNTc2NGI5NDUxYjAyYmM2ZDU0MDg0Zjc1IgorICBkZXBlbmRlbmNpZXM6CisgICAgZ2V0
LXN0ZGluICJeNC4wLjEiCisgICAgbWluaW1pc3QgIl4xLjEuMCIKKyAgICByZXBlYXRpbmcgIl4x
LjEuMCIKKworZGV0ZWN0LXBvcnRAMS4wLjA6CisgIHZlcnNpb24gIjEuMC4wIgorICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9kZXRlY3QtcG9ydC8tL2RldGVjdC1wb3J0
LTEuMC4wLnRneiMxMGQwZTBiZjAxNzk4NjJjNTUzMTg3MjczZjdhM2I0NWU3YTkwNjA3IgorICBk
ZXBlbmRlbmNpZXM6CisgICAgY29tbWFuZGVyICJ+Mi44LjEiCisKK2RpZmZAXjMuMC4wOgorICB2
ZXJzaW9uICIzLjAuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
ZGlmZi8tL2RpZmYtMy4wLjEudGd6I2E1MmQ5MGNjMDg5NTY5OTRiZTAwODc3YmZmOTcxMTAwNjI1
ODJjMzUiCisKK2RvY3RyaW5lQF4xLjIuMjoKKyAgdmVyc2lvbiAiMS40LjAiCisgIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2RvY3RyaW5lLy0vZG9jdHJpbmUtMS40LjAu
dGd6I2UyZGIzMmRlZmE3NTI0MDdiOTM1YjM4MWU4OWYzNzQwZTQ2OWU1OTkiCisgIGRlcGVuZGVu
Y2llczoKKyAgICBlc3V0aWxzICJeMi4wLjIiCisgICAgaXNhcnJheSAiXjEuMC4wIgorCitkb2N0
cmluZUAxLjIueDoKKyAgdmVyc2lvbiAiMS4yLjMiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL2RvY3RyaW5lLy0vZG9jdHJpbmUtMS4yLjMudGd6IzZhZWM2YmJkNjJj
Zjg5ZGQ0OThjYWU3MGMwZWQ5ZjQ5ZGE4NzNhNmEiCisgIGRlcGVuZGVuY2llczoKKyAgICBlc3V0
aWxzICJeMi4wLjIiCisgICAgaXNhcnJheSAiXjEuMC4wIgorCitkb20tY29udmVydGVyQH4wLjE6
CisgIHZlcnNpb24gIjAuMS40IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9kb20tY29udmVydGVyLy0vZG9tLWNvbnZlcnRlci0wLjEuNC50Z3ojYTQ1ZWY1NzI3Yjg5
MGM5YmZmZTZkN2M4NzZlN2IxOWNiMGUxN2YzYiIKKyAgZGVwZW5kZW5jaWVzOgorICAgIHV0aWxh
ICJ+MC4zIgorCitkb20tc2VyaWFsaXplckB+MC4xLjAsIGRvbS1zZXJpYWxpemVyQDA6CisgIHZl
cnNpb24gIjAuMS4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9k
b20tc2VyaWFsaXplci8tL2RvbS1zZXJpYWxpemVyLTAuMS4wLnRneiMwNzNjNjk3NTQ2Y2UwNzgw
Y2UyM2JlNGEyOGUyOTNlNDBiYzMwYzgyIgorICBkZXBlbmRlbmNpZXM6CisgICAgZG9tZWxlbWVu
dHR5cGUgIn4xLjEuMSIKKyAgICBlbnRpdGllcyAifjEuMS4xIgorCitkb21haW4tYnJvd3NlckBe
MS4xLjE6CisgIHZlcnNpb24gIjEuMS43IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9kb21haW4tYnJvd3Nlci8tL2RvbWFpbi1icm93c2VyLTEuMS43LnRneiM4Njdh
YTRiMDkzZmFhMDVmMWRlMDhjMDZmNGQ3YjIxZmRmODY5OGJjIgorCitkb21lbGVtZW50dHlwZUB+
MS4xLjE6CisgIHZlcnNpb24gIjEuMS4zIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9kb21lbGVtZW50dHlwZS8tL2RvbWVsZW1lbnR0eXBlLTEuMS4zLnRneiNiZDI4
NzczZTI2NDI4ODFhZWM1MTU0NDkyNDI5OWM1Y2Q4MjIxODViIgorCitkb21lbGVtZW50dHlwZUAx
OgorICB2ZXJzaW9uICIxLjMuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vZG9tZWxlbWVudHR5cGUvLS9kb21lbGVtZW50dHlwZS0xLjMuMC50Z3ojYjE3YWVkODJl
OGFiNTllNTJkZDljMTliMTc1NmUwZmMxODcyMDRjMiIKKworZG9taGFuZGxlckAyLjE6CisgIHZl
cnNpb24gIjIuMS4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9k
b21oYW5kbGVyLy0vZG9taGFuZGxlci0yLjEuMC50Z3ojZDI2NDZmNWU1N2Y2YzNiYWIxMWNmNmNi
MDVkM2MwYWNmNzQxMjU5NCIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGRvbWVsZW1lbnR0eXBlICIx
IgorCitkb21oYW5kbGVyQDIuMzoKKyAgdmVyc2lvbiAiMi4zLjAiCisgIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2RvbWhhbmRsZXIvLS9kb21oYW5kbGVyLTIuMy4wLnRn
eiMyZGU1OWEwODIyZDUwMjdmYWJmZjZmMDMyYzJiMjVhMmE4YWJlNzM4IgorICBkZXBlbmRlbmNp
ZXM6CisgICAgZG9tZWxlbWVudHR5cGUgIjEiCisKK2RvbXV0aWxzQDEuMToKKyAgdmVyc2lvbiAi
MS4xLjYiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2RvbXV0aWxz
Ly0vZG9tdXRpbHMtMS4xLjYudGd6I2JkZGMzZGUwOTliOWEyZWZhY2M1MWM2MjNmMjhmNDE2ZWNj
NTc0ODUiCisgIGRlcGVuZGVuY2llczoKKyAgICBkb21lbGVtZW50dHlwZSAiMSIKKworZG9tdXRp
bHNAMS41LCBkb211dGlsc0AxLjUuMToKKyAgdmVyc2lvbiAiMS41LjEiCisgIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2RvbXV0aWxzLy0vZG9tdXRpbHMtMS41LjEudGd6
I2RjZDg0ODhhMjZmNTYzZDYxMDc5ZTQ4YzlmN2I3ZTMyMzczNjgyY2YiCisgIGRlcGVuZGVuY2ll
czoKKyAgICBkb20tc2VyaWFsaXplciAiMCIKKyAgICBkb21lbGVtZW50dHlwZSAiMSIKKworZG90
LWNhc2VAXjIuMS4wOgorICB2ZXJzaW9uICIyLjEuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vZG90LWNhc2UvLS9kb3QtY2FzZS0yLjEuMC50Z3ojNGI0M2RkMGQ3
NDAzYzM0Y2I2NDU0MjRhZGQzOTdlODBiZmU4NWNhNiIKKyAgZGVwZW5kZW5jaWVzOgorICAgIG5v
LWNhc2UgIl4yLjIuMCIKKworZG90ZW52QDIuMC4wOgorICB2ZXJzaW9uICIyLjAuMCIKKyAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZG90ZW52Ly0vZG90ZW52LTIuMC4w
LnRneiNiZDc1OWMzNTdhYWE3MDM2NWUwMWM5NmI3YjBiZWMwOGE2ZTBkOTQ5IgorCitkdXBsZXhl
ckBeMC4xLjE6CisgIHZlcnNpb24gIjAuMS4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9kdXBsZXhlci8tL2R1cGxleGVyLTAuMS4xLnRneiNhY2U2ZmY4MDhjMWNl
NjZiNTdkMWViZjk3OTc3YWNiMDIzMzRjZmMxIgorCitlY2MtanNibkB+MC4xLjE6CisgIHZlcnNp
b24gIjAuMS4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9lY2Mt
anNibi8tL2VjYy1qc2JuLTAuMS4xLnRneiMwZmM3M2E5ZWQ1ZjBkNTNjMzgxOTMzOTg1MjNlZjdl
NTQzNzc3NTA1IgorICBkZXBlbmRlbmNpZXM6CisgICAganNibiAifjAuMS4wIgorCitlZS1maXJz
dEAxLjEuMToKKyAgdmVyc2lvbiAiMS4xLjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL2VlLWZpcnN0Ly0vZWUtZmlyc3QtMS4xLjEudGd6IzU5MGM2MTE1NmIwYWUy
ZjRmMDI1NTczMmExNThiMjY2YmM1NmIyMWQiCisKK2Vtb2ppcy1saXN0QF4yLjAuMDoKKyAgdmVy
c2lvbiAiMi4xLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Vt
b2ppcy1saXN0Ly0vZW1vamlzLWxpc3QtMi4xLjAudGd6IzRkYWE0ZDlkYjAwZjk4MTk4ODBjNzlm
YTQ1N2FlNWIwOWExZmQzODkiCisKK2VuY29kZXVybEB+MS4wLjE6CisgIHZlcnNpb24gIjEuMC4x
IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9lbmNvZGV1cmwvLS9l
bmNvZGV1cmwtMS4wLjEudGd6Izc5ZTNkNTg2NTUzNDY5MDlmZTZmMGY0NWE1ZGU2ODEwM2IyOTRk
MjAiCisKK2VuY29kaW5nQF4wLjEuMTE6CisgIHZlcnNpb24gIjAuMS4xMiIKKyAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZW5jb2RpbmcvLS9lbmNvZGluZy0wLjEuMTIu
dGd6IzUzOGI2NmYzZWU2MmNkMWFiNTFlYzMyMzgyOWQxZjk0ODBjNzRiZWIiCisgIGRlcGVuZGVu
Y2llczoKKyAgICBpY29udi1saXRlICJ+MC40LjEzIgorCitlbmhhbmNlZC1yZXNvbHZlQH4wLjku
MDoKKyAgdmVyc2lvbiAiMC45LjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w
a2cuY29tL2VuaGFuY2VkLXJlc29sdmUvLS9lbmhhbmNlZC1yZXNvbHZlLTAuOS4xLnRneiM0ZDZl
Njg5YjM3MjVmODYwOTA5MjdjY2M4NmNkOWYxNjM1Yjg5ZTJlIgorICBkZXBlbmRlbmNpZXM6Cisg
ICAgZ3JhY2VmdWwtZnMgIl40LjEuMiIKKyAgICBtZW1vcnktZnMgIl4wLjIuMCIKKyAgICB0YXBh
YmxlICJeMC4xLjgiCisKK2VudGl0aWVzQH4xLjEuMToKKyAgdmVyc2lvbiAiMS4xLjEiCisgIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2VudGl0aWVzLy0vZW50aXRpZXMt
MS4xLjEudGd6IzZlNWMyZDBhNTYyMWI1ZGFkYWVjZWY4MGI5MGVkZmI1Y2Q3NzcyZjAiCisKK2Vu
dGl0aWVzQDEuMDoKKyAgdmVyc2lvbiAiMS4wLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL2VudGl0aWVzLy0vZW50aXRpZXMtMS4wLjAudGd6I2IyOTg3YWEzODIx
MzQ3ZmNkZTY0MmIyNGZkZmM5ZTRmYjcxMmJmMjYiCisKK2VuenltZUBeMi40LjE6CisgIHZlcnNp
b24gIjIuNC4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9lbnp5
bWUvLS9lbnp5bWUtMi40LjEudGd6IzkwZmE5ODYxZDk4MmQwY2ViOTJhOWZkNTdlMzg0MjZhMmY3
NGQzYjEiCisgIGRlcGVuZGVuY2llczoKKyAgICBjaGVlcmlvICJeMC4yMC4wIgorICAgIGlzLXN1
YnNldCAiXjAuMS4xIgorICAgIGxvZGFzaCAiXjQuMTMuMSIKKyAgICBvYmplY3QtaXMgIl4xLjAu
MSIKKyAgICBvYmplY3QuYXNzaWduICJeNC4wLjMiCisgICAgb2JqZWN0LnZhbHVlcyAiXjEuMC4z
IgorCitlcnJub0BeMC4xLjMsICJlcnJub0A+PTAuMS4xIDwwLjIuMC0wIjoKKyAgdmVyc2lvbiAi
MC4xLjQiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Vycm5vLy0v
ZXJybm8tMC4xLjQudGd6I2I4OTZlMjNhOWU1ZThiYTMzODcxZmM5OTZhYmQzNjM1ZmM5YTFjN2Qi
CisgIGRlcGVuZGVuY2llczoKKyAgICBwcnIgIn4wLjAuMCIKKworZXJyb3ItZXhAXjEuMi4wOgor
ICB2ZXJzaW9uICIxLjMuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vZXJyb3ItZXgvLS9lcnJvci1leC0xLjMuMC50Z3ojZTY3YjQzZjNlODJjOTZlYTNhNTg0ZmZl
ZTBiOWZjMzMyNWQ4MDJkOSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGlzLWFycmF5aXNoICJeMC4y
LjEiCisKK2VzLWFic3RyYWN0QF4xLjMuMjoKKyAgdmVyc2lvbiAiMS42LjEiCisgIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2VzLWFic3RyYWN0Ly0vZXMtYWJzdHJhY3Qt
MS42LjEudGd6I2JiOGEyMDY0MTIwYWJjZjkyOGEwODZlYTNkOTA0MzExNDI4NWVjOTkiCisgIGRl
cGVuZGVuY2llczoKKyAgICBlcy10by1wcmltaXRpdmUgIl4xLjEuMSIKKyAgICBmdW5jdGlvbi1i
aW5kICJeMS4xLjAiCisgICAgaXMtY2FsbGFibGUgIl4xLjEuMyIKKyAgICBpcy1yZWdleCAiXjEu
MC4zIgorCitlcy10by1wcmltaXRpdmVAXjEuMS4xOgorICB2ZXJzaW9uICIxLjEuMSIKKyAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZXMtdG8tcHJpbWl0aXZlLy0vZXMt
dG8tcHJpbWl0aXZlLTEuMS4xLnRneiM0NTM1NTI0OGE4ODk3OTAzNGI2NzkyZTE5YmI4MWYyYjc5
NzVkZDBkIgorICBkZXBlbmRlbmNpZXM6CisgICAgaXMtY2FsbGFibGUgIl4xLjEuMSIKKyAgICBp
cy1kYXRlLW9iamVjdCAiXjEuMC4xIgorICAgIGlzLXN5bWJvbCAiXjEuMC4xIgorCitlczUtZXh0
QF4wLjEwLjcsIGVzNS1leHRAXjAuMTAuOCwgZXM1LWV4dEB+MC4xMC4xMSwgZXM1LWV4dEB+MC4x
MC4yLCBlczUtZXh0QH4wLjEwLjc6CisgIHZlcnNpb24gIjAuMTAuMTIiCisgIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2VzNS1leHQvLS9lczUtZXh0LTAuMTAuMTIudGd6
I2FhODQ2NDFkNGRiNzZiNjJhYmJhNWU0NWZkODA1ZWNiYWIxNDAwNDciCisgIGRlcGVuZGVuY2ll
czoKKyAgICBlczYtaXRlcmF0b3IgIjIiCisgICAgZXM2LXN5bWJvbCAifjMuMSIKKworZXM2LWl0
ZXJhdG9yQDI6CisgIHZlcnNpb24gIjIuMC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9lczYtaXRlcmF0b3IvLS9lczYtaXRlcmF0b3ItMi4wLjAudGd6I2JkOTY4
NTY3ZDYxNjM1ZTMzYzBiODA3Mjc2MTNjOWNiNGIwOTZiYWMiCisgIGRlcGVuZGVuY2llczoKKyAg
ICBkICJeMC4xLjEiCisgICAgZXM1LWV4dCAiXjAuMTAuNyIKKyAgICBlczYtc3ltYm9sICIzIgor
CitlczYtbWFwQF4wLjEuMzoKKyAgdmVyc2lvbiAiMC4xLjQiCisgIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2VzNi1tYXAvLS9lczYtbWFwLTAuMS40LnRneiNhMzRiMTQ3
YmUyMjQ3NzNhNGQ3ZGE4MDcyNzk0Y2VmYTM2MzJiODk3IgorICBkZXBlbmRlbmNpZXM6CisgICAg
ZCAifjAuMS4xIgorICAgIGVzNS1leHQgIn4wLjEwLjExIgorICAgIGVzNi1pdGVyYXRvciAiMiIK
KyAgICBlczYtc2V0ICJ+MC4xLjMiCisgICAgZXM2LXN5bWJvbCAifjMuMS4wIgorICAgIGV2ZW50
LWVtaXR0ZXIgIn4wLjMuNCIKKworZXM2LXNldEBeMC4xLjQsIGVzNi1zZXRAfjAuMS4zOgorICB2
ZXJzaW9uICIwLjEuNCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
ZXM2LXNldC8tL2VzNi1zZXQtMC4xLjQudGd6Izk1MTZiNjc2MWMyOTY0YjkyZmY0Nzk0NTYyMzNh
MjQ3ZGM3MDdjZTgiCisgIGRlcGVuZGVuY2llczoKKyAgICBkICJ+MC4xLjEiCisgICAgZXM1LWV4
dCAifjAuMTAuMTEiCisgICAgZXM2LWl0ZXJhdG9yICIyIgorICAgIGVzNi1zeW1ib2wgIjMiCisg
ICAgZXZlbnQtZW1pdHRlciAifjAuMy40IgorCitlczYtc3ltYm9sQH4zLjEsIGVzNi1zeW1ib2xA
fjMuMS4wLCBlczYtc3ltYm9sQDM6CisgIHZlcnNpb24gIjMuMS4wIgorICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9lczYtc3ltYm9sLy0vZXM2LXN5bWJvbC0zLjEuMC50
Z3ojOTQ0ODFjNjU1ZTdhN2NhZDgyZWJhODMyZDk3ZDU0MzM0OTZkN2ZmYSIKKyAgZGVwZW5kZW5j
aWVzOgorICAgIGQgIn4wLjEuMSIKKyAgICBlczUtZXh0ICJ+MC4xMC4xMSIKKworZXM2LXdlYWst
bWFwQF4yLjAuMToKKyAgdmVyc2lvbiAiMi4wLjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL2VzNi13ZWFrLW1hcC8tL2VzNi13ZWFrLW1hcC0yLjAuMS50Z3ojMGQy
YmJkODgyN2ViNWZiNGJhOGY5N2ZiZmVhNTBkNDNkYjIxZWE4MSIKKyAgZGVwZW5kZW5jaWVzOgor
ICAgIGQgIl4wLjEuMSIKKyAgICBlczUtZXh0ICJeMC4xMC44IgorICAgIGVzNi1pdGVyYXRvciAi
MiIKKyAgICBlczYtc3ltYm9sICIzIgorCitlc2NhcGUtaHRtbEB+MS4wLjM6CisgIHZlcnNpb24g
IjEuMC4zIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9lc2NhcGUt
aHRtbC8tL2VzY2FwZS1odG1sLTEuMC4zLnRneiMwMjU4ZWFlNGQzZDBjMDk3NGRlMWMxNjkxODhl
ZjAwNTFkMWQxOTg4IgorCitlc2NhcGUtc3RyaW5nLXJlZ2V4cEBeMS4wLjIsIGVzY2FwZS1zdHJp
bmctcmVnZXhwQF4xLjAuNSwgZXNjYXBlLXN0cmluZy1yZWdleHBAMS4wLjU6CisgIHZlcnNpb24g
IjEuMC41IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9lc2NhcGUt
c3RyaW5nLXJlZ2V4cC8tL2VzY2FwZS1zdHJpbmctcmVnZXhwLTEuMC41LnRneiMxYjYxYzA1NjIx
OTBhOGRmZjZhZTNiYjJjZjAyMDBjYTEzMGI4NmQ0IgorCitlc2NvZGVnZW5AXjEuNi4xLCBlc2Nv
ZGVnZW5AMS44Lng6CisgIHZlcnNpb24gIjEuOC4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9lc2NvZGVnZW4vLS9lc2NvZGVnZW4tMS44LjEudGd6IzVhNWI1M2Fm
NDY5MzExMGJlYmIwODY3YWEzNDMwZGQzYjcwYTEwMTgiCisgIGRlcGVuZGVuY2llczoKKyAgICBl
c3ByaW1hICJeMi43LjEiCisgICAgZXN0cmF2ZXJzZSAiXjEuOS4xIgorICAgIGVzdXRpbHMgIl4y
LjAuMiIKKyAgICBvcHRpb25hdG9yICJeMC44LjEiCisgIG9wdGlvbmFsRGVwZW5kZW5jaWVzOgor
ICAgIHNvdXJjZS1tYXAgIn4wLjIuMCIKKworZXNjb3BlQF4zLjYuMDoKKyAgdmVyc2lvbiAiMy42
LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2VzY29wZS8tL2Vz
Y29wZS0zLjYuMC50Z3ojZTAxOTc1ZTgxMjc4MWExNjNhNmRhZGZkZDgwMzk4ZGM2NGM4ODljMyIK
KyAgZGVwZW5kZW5jaWVzOgorICAgIGVzNi1tYXAgIl4wLjEuMyIKKyAgICBlczYtd2Vhay1tYXAg
Il4yLjAuMSIKKyAgICBlc3JlY3Vyc2UgIl40LjEuMCIKKyAgICBlc3RyYXZlcnNlICJeNC4xLjEi
CisKK2VzbGludC1jb25maWctcmVhY3QtYXBwQF4wLjIuMToKKyAgdmVyc2lvbiAiMC4yLjEiCisg
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2VzbGludC1jb25maWctcmVh
Y3QtYXBwLy0vZXNsaW50LWNvbmZpZy1yZWFjdC1hcHAtMC4yLjEudGd6I2FkNTEwZDBkMGFlMTE1
NzVkMGVhYmU1NDkzYmE2ZTY2ZmI5M2U2OGUiCisKK2VzbGludC1pbXBvcnQtcmVzb2x2ZXItbm9k
ZUBeMC4yLjA6CisgIHZlcnNpb24gIjAuMi4zIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9lc2xpbnQtaW1wb3J0LXJlc29sdmVyLW5vZGUvLS9lc2xpbnQtaW1wb3J0
LXJlc29sdmVyLW5vZGUtMC4yLjMudGd6IzVhZGQ4MTA2ZThjOTI4ZGIyY2JhMjMyYmNkOWVmYTg0
NmUzZGExNmMiCisgIGRlcGVuZGVuY2llczoKKyAgICBkZWJ1ZyAiXjIuMi4wIgorICAgIG9iamVj
dC1hc3NpZ24gIl40LjAuMSIKKyAgICByZXNvbHZlICJeMS4xLjYiCisKK2VzbGludC1sb2FkZXJA
MS41LjA6CisgIHZlcnNpb24gIjEuNS4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9lc2xpbnQtbG9hZGVyLy0vZXNsaW50LWxvYWRlci0xLjUuMC50Z3ojODI0Yjdj
OTkxMWE2MzNmYzEyNjBmODYzYzZlYTU3MTIyNGQxMDQxMiIKKyAgZGVwZW5kZW5jaWVzOgorICAg
IGZpbmQtY2FjaGUtZGlyICJeMC4xLjEiCisgICAgbG9hZGVyLXV0aWxzICJeMC4yLjciCisgICAg
b2JqZWN0LWFzc2lnbiAiXjQuMC4xIgorCitlc2xpbnQtcGx1Z2luLWZsb3d0eXBlQDIuMTguMToK
KyAgdmVyc2lvbiAiMi4xOC4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9lc2xpbnQtcGx1Z2luLWZsb3d0eXBlLy0vZXNsaW50LXBsdWdpbi1mbG93dHlwZS0yLjE4
LjEudGd6I2YwMjc1MjRjNThiOTBkMjdhMDU0NGU3NGMwODJmYmEwNzBhZmQ5YzgiCisgIGRlcGVu
ZGVuY2llczoKKyAgICBsb2Rhc2ggIl40LjE1LjAiCisKK2VzbGludC1wbHVnaW4taW1wb3J0QDEu
MTIuMDoKKyAgdmVyc2lvbiAiMS4xMi4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9lc2xpbnQtcGx1Z2luLWltcG9ydC8tL2VzbGludC1wbHVnaW4taW1wb3J0LTEu
MTIuMC50Z3ojMTEzMDdlYjA4MTc5ZjQzNjkyZmE4NDViYTg1NDJlODJmYTMzM2UyMSIKKyAgZGVw
ZW5kZW5jaWVzOgorICAgIGJ1aWx0aW4tbW9kdWxlcyAiXjEuMS4xIgorICAgIGNvbnRhaW5zLXBh
dGggIl4wLjEuMCIKKyAgICBkZWJ1ZyAiXjIuMi4wIgorICAgIGRvY3RyaW5lICIxLjIueCIKKyAg
ICBlczYtbWFwICJeMC4xLjMiCisgICAgZXM2LXNldCAiXjAuMS40IgorICAgIGVzbGludC1pbXBv
cnQtcmVzb2x2ZXItbm9kZSAiXjAuMi4wIgorICAgIGxvZGFzaC5jb25kICJeNC4zLjAiCisgICAg
bG9kYXNoLmVuZHN3aXRoICJeNC4wLjEiCisgICAgbG9kYXNoLmZpbmQgIl40LjMuMCIKKyAgICBs
b2Rhc2guZmluZGluZGV4ICJeNC4zLjAiCisgICAgb2JqZWN0LWFzc2lnbiAiXjQuMC4xIgorICAg
IHBrZy1kaXIgIl4xLjAuMCIKKyAgICBwa2ctdXAgIl4xLjAuMCIKKworZXNsaW50LXBsdWdpbi1q
c3gtYTExeUAyLjIuMjoKKyAgdmVyc2lvbiAiMi4yLjIiCisgIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL2VzbGludC1wbHVnaW4tanN4LWExMXkvLS9lc2xpbnQtcGx1Z2lu
LWpzeC1hMTF5LTIuMi4yLnRneiNhYzg5M2I0ZjllY2I3NTM0YmMwMzczZmY2YTQ3Mzg4ODM1ZDNh
ODU5IgorICBkZXBlbmRlbmNpZXM6CisgICAgZGFtZXJhdS1sZXZlbnNodGVpbiAiXjEuMC4wIgor
ICAgIGpzeC1hc3QtdXRpbHMgIl4xLjAuMCIKKyAgICBvYmplY3QtYXNzaWduICJeNC4wLjEiCisK
K2VzbGludC1wbHVnaW4tcmVhY3RANi4zLjA6CisgIHZlcnNpb24gIjYuMy4wIgorICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9lc2xpbnQtcGx1Z2luLXJlYWN0Ly0vZXNs
aW50LXBsdWdpbi1yZWFjdC02LjMuMC50Z3ojZmFjMzUwNGEwMjkxN2ZjOGIxNWY3ZjI4NTE0MDU4
Y2ZmZGU5Y2I3NiIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGRvY3RyaW5lICJeMS4yLjIiCisgICAg
anN4LWFzdC11dGlscyAiXjEuMy4xIgorCitlc2xpbnRAMy41LjA6CisgIHZlcnNpb24gIjMuNS4w
IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9lc2xpbnQvLS9lc2xp
bnQtMy41LjAudGd6IzIyZmM5Zjc4MGVhNWJjYTEzMDZmYWIyYjZkMzMzNmIwZmE2MmM3NTQiCisg
IGRlcGVuZGVuY2llczoKKyAgICBjaGFsayAiXjEuMS4zIgorICAgIGNvbmNhdC1zdHJlYW0gIl4x
LjQuNiIKKyAgICBkZWJ1ZyAiXjIuMS4xIgorICAgIGRvY3RyaW5lICJeMS4yLjIiCisgICAgZXNj
b3BlICJeMy42LjAiCisgICAgZXNwcmVlICJeMy4xLjYiCisgICAgZXN0cmF2ZXJzZSAiXjQuMi4w
IgorICAgIGVzdXRpbHMgIl4yLjAuMiIKKyAgICBmaWxlLWVudHJ5LWNhY2hlICJeMi4wLjAiCisg
ICAgZ2xvYiAiXjcuMC4zIgorICAgIGdsb2JhbHMgIl45LjIuMCIKKyAgICBpZ25vcmUgIl4zLjEu
NSIKKyAgICBpbXVybXVyaGFzaCAiXjAuMS40IgorICAgIGlucXVpcmVyICJeMC4xMi4wIgorICAg
IGlzLW15LWpzb24tdmFsaWQgIl4yLjEwLjAiCisgICAgaXMtcmVzb2x2YWJsZSAiXjEuMC4wIgor
ICAgIGpzLXlhbWwgIl4zLjUuMSIKKyAgICBqc29uLXN0YWJsZS1zdHJpbmdpZnkgIl4xLjAuMCIK
KyAgICBsZXZuICJeMC4zLjAiCisgICAgbG9kYXNoICJeNC4wLjAiCisgICAgbWtkaXJwICJeMC41
LjAiCisgICAgbmF0dXJhbC1jb21wYXJlICJeMS40LjAiCisgICAgb3B0aW9uYXRvciAiXjAuOC4x
IgorICAgIHBhdGgtaXMtaW5zaWRlICJeMS4wLjEiCisgICAgcGx1cmFsaXplICJeMS4yLjEiCisg
ICAgcHJvZ3Jlc3MgIl4xLjEuOCIKKyAgICByZXF1aXJlLXVuY2FjaGVkICJeMS4wLjIiCisgICAg
c2hlbGxqcyAiXjAuNi4wIgorICAgIHN0cmlwLWJvbSAiXjMuMC4wIgorICAgIHN0cmlwLWpzb24t
Y29tbWVudHMgIn4xLjAuMSIKKyAgICB0YWJsZSAiXjMuNy44IgorICAgIHRleHQtdGFibGUgIn4w
LjIuMCIKKyAgICB1c2VyLWhvbWUgIl4yLjAuMCIKKworZXNwcmVlQF4zLjEuNjoKKyAgdmVyc2lv
biAiMy4zLjIiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2VzcHJl
ZS8tL2VzcHJlZS0zLjMuMi50Z3ojZGJmM2ZhZGViNGVjYjRkNDc3ODMwM2U1MDEwM2IzZDM2Yzg4
Yjg5YyIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGFjb3JuICJeNC4wLjEiCisgICAgYWNvcm4tanN4
ICJeMy4wLjAiCisKK2VzcHJpbWFAXjIuNi4wLCBlc3ByaW1hQF4yLjcuMSwgZXNwcmltYUB+Mi43
LjAsIGVzcHJpbWFAMi43Lng6CisgIHZlcnNpb24gIjIuNy4zIgorICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9lc3ByaW1hLy0vZXNwcmltYS0yLjcuMy50Z3ojOTZlM2I3
MGQ1Nzc5ZjZhZDQ5Y2QwMzI2NzNkMWMzMTI3NjdiYTU4MSIKKworZXNyZWN1cnNlQF40LjEuMDoK
KyAgdmVyc2lvbiAiNC4xLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL2VzcmVjdXJzZS8tL2VzcmVjdXJzZS00LjEuMC50Z3ojNDcxM2I2NTM2YWRmN2YyYWM0ZjMy
N2Q1NTllNzc1NmJmZjY0ODIyMCIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGVzdHJhdmVyc2UgIn40
LjEuMCIKKyAgICBvYmplY3QtYXNzaWduICJeNC4wLjEiCisKK2VzdHJhdmVyc2VAXjEuOS4xOgor
ICB2ZXJzaW9uICIxLjkuMyIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vZXN0cmF2ZXJzZS8tL2VzdHJhdmVyc2UtMS45LjMudGd6I2FmNjdmMmRjOTIyNTgyNDE1OTUw
OTI2MDkxYTQwMDVkMjljOWJiNDQiCisKK2VzdHJhdmVyc2VAXjQuMS4xLCBlc3RyYXZlcnNlQF40
LjIuMDoKKyAgdmVyc2lvbiAiNC4yLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL2VzdHJhdmVyc2UvLS9lc3RyYXZlcnNlLTQuMi4wLnRneiMwZGVlM2ZlZDMxZmNk
NDY5NjE4Y2U3MzQyMDk5ZmMxYWZhMGJkYjEzIgorCitlc3RyYXZlcnNlQH40LjEuMDoKKyAgdmVy
c2lvbiAiNC4xLjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Vz
dHJhdmVyc2UvLS9lc3RyYXZlcnNlLTQuMS4xLnRneiNmNmNhY2E3Mjg5MzNhODUwZWY5MDY2MWQw
ZTE3OTgyYmE0NzExMWEyIgorCitlc3V0aWxzQF4yLjAuMCwgZXN1dGlsc0BeMi4wLjI6CisgIHZl
cnNpb24gIjIuMC4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9l
c3V0aWxzLy0vZXN1dGlscy0yLjAuMi50Z3ojMGFiZjRmMWNhYTViY2IxZjdhOWQ4YWNjNmRlYTRm
YWFhMDRiYWM5YiIKKworZXRhZ0B+MS43LjA6CisgIHZlcnNpb24gIjEuNy4wIgorICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9ldGFnLy0vZXRhZy0xLjcuMC50Z3ojMDNk
MzBiNWY2N2RkNmU2MzJkMjk0NWQzMGQ2NjUyNzMxYTM0ZDVkOCIKKworZXZlbnQtZW1pdHRlckB+
MC4zLjQ6CisgIHZlcnNpb24gIjAuMy40IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9ldmVudC1lbWl0dGVyLy0vZXZlbnQtZW1pdHRlci0wLjMuNC50Z3ojOGQ2M2Rk
ZmI0Y2ZlMWZhZTNiMzJjYTI2NWM0YzcyMDIyMjA4MGJiNSIKKyAgZGVwZW5kZW5jaWVzOgorICAg
IGQgIn4wLjEuMSIKKyAgICBlczUtZXh0ICJ+MC4xMC43IgorCitldmVudGVtaXR0ZXIzQDEueC54
OgorICB2ZXJzaW9uICIxLjIuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vZXZlbnRlbWl0dGVyMy8tL2V2ZW50ZW1pdHRlcjMtMS4yLjAudGd6IzFjODY5OTFkODE2
YWQxZTUwNDc1MGU3Mzg3NDIyNGVjZjNiZWM1MDgiCisKK2V2ZW50c0BeMS4wLjA6CisgIHZlcnNp
b24gIjEuMS4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9ldmVu
dHMvLS9ldmVudHMtMS4xLjEudGd6IzllYmRiNzYzNWFkMDk5YzcwZGNjNGMyYTFmNTAwNDI4OGU4
YmQ5MjQiCisKK2V2ZW50c291cmNlQF4wLjEuMywgZXZlbnRzb3VyY2VAfjAuMS42OgorICB2ZXJz
aW9uICIwLjEuNiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZXZl
bnRzb3VyY2UvLS9ldmVudHNvdXJjZS0wLjEuNi50Z3ojMGFjZWRlODQ5ZWQ3ZGQxY2NjMzJjODEx
YmIxMWI5NDRkNGYyOTIzMiIKKyAgZGVwZW5kZW5jaWVzOgorICAgIG9yaWdpbmFsICI+PTAuMC41
IgorCitleGVjLXNoQF4wLjIuMDoKKyAgdmVyc2lvbiAiMC4yLjAiCisgIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2V4ZWMtc2gvLS9leGVjLXNoLTAuMi4wLnRneiMxNGY3
NWRlM2YyMGQyODZlZjkzMzA5OWIyY2U1MGE5MDM1OWNlZjEwIgorICBkZXBlbmRlbmNpZXM6Cisg
ICAgbWVyZ2UgIl4xLjEuMyIKKworZXhpdC1ob29rQF4xLjAuMDoKKyAgdmVyc2lvbiAiMS4xLjEi
CisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2V4aXQtaG9vay8tL2V4
aXQtaG9vay0xLjEuMS50Z3ojZjA1Y2EyMzNiNDhjMDVkNTRmZmYwNzc2NWRmODUwN2U5NWMwMmZm
OCIKKworZXhwYW5kLWJyYWNrZXRzQF4wLjEuNDoKKyAgdmVyc2lvbiAiMC4xLjUiCisgIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2V4cGFuZC1icmFja2V0cy8tL2V4cGFu
ZC1icmFja2V0cy0wLjEuNS50Z3ojZGYwNzI4NGUzNDJhODA3Y2Q3MzNhYzVhZjcyNDExZTU4MWQx
MTc3YiIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGlzLXBvc2l4LWJyYWNrZXQgIl4wLjEuMCIKKwor
ZXhwYW5kLXJhbmdlQF4xLjguMToKKyAgdmVyc2lvbiAiMS44LjIiCisgIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2V4cGFuZC1yYW5nZS8tL2V4cGFuZC1yYW5nZS0xLjgu
Mi50Z3ojYTI5OWVmZmQzMzVmZTI3MjFlYmFlOGUyNTdlYzc5NjQ0ZmM4NTMzNyIKKyAgZGVwZW5k
ZW5jaWVzOgorICAgIGZpbGwtcmFuZ2UgIl4yLjEuMCIKKworZXhwcmVzc0BeNC4xMy4zOgorICB2
ZXJzaW9uICI0LjE0LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L2V4cHJlc3MvLS9leHByZXNzLTQuMTQuMC50Z3ojYzFlZTNmNDJjZGM4OTFmYjNkYzY1MGE4OTIy
ZDUxZWM4NDdkMGQ2NiIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGFjY2VwdHMgIn4xLjMuMyIKKyAg
ICBhcnJheS1mbGF0dGVuICIxLjEuMSIKKyAgICBjb250ZW50LWRpc3Bvc2l0aW9uICIwLjUuMSIK
KyAgICBjb250ZW50LXR5cGUgIn4xLjAuMiIKKyAgICBjb29raWUgIjAuMy4xIgorICAgIGNvb2tp
ZS1zaWduYXR1cmUgIjEuMC42IgorICAgIGRlYnVnICJ+Mi4yLjAiCisgICAgZGVwZCAifjEuMS4w
IgorICAgIGVuY29kZXVybCAifjEuMC4xIgorICAgIGVzY2FwZS1odG1sICJ+MS4wLjMiCisgICAg
ZXRhZyAifjEuNy4wIgorICAgIGZpbmFsaGFuZGxlciAiMC41LjAiCisgICAgZnJlc2ggIjAuMy4w
IgorICAgIG1lcmdlLWRlc2NyaXB0b3JzICIxLjAuMSIKKyAgICBtZXRob2RzICJ+MS4xLjIiCisg
ICAgb24tZmluaXNoZWQgIn4yLjMuMCIKKyAgICBwYXJzZXVybCAifjEuMy4xIgorICAgIHBhdGgt
dG8tcmVnZXhwICIwLjEuNyIKKyAgICBwcm94eS1hZGRyICJ+MS4xLjIiCisgICAgcXMgIjYuMi4w
IgorICAgIHJhbmdlLXBhcnNlciAifjEuMi4wIgorICAgIHNlbmQgIjAuMTQuMSIKKyAgICBzZXJ2
ZS1zdGF0aWMgIn4xLjExLjEiCisgICAgdHlwZS1pcyAifjEuNi4xMyIKKyAgICB1dGlscy1tZXJn
ZSAiMS4wLjAiCisgICAgdmFyeSAifjEuMS4wIgorCitleHRlbmRAfjMuMC4wOgorICB2ZXJzaW9u
ICIzLjAuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZXh0ZW5k
Ly0vZXh0ZW5kLTMuMC4wLnRneiM1YTQ3NDM1M2I5ZjMzNTNkZGQ4MTc2ZGZkMzdiOTFjODNhNDZm
MWQ0IgorCitleHRnbG9iQF4wLjMuMToKKyAgdmVyc2lvbiAiMC4zLjIiCisgIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2V4dGdsb2IvLS9leHRnbG9iLTAuMy4yLnRneiMy
ZTE4ZmYzZDJmNDlhYjI3NjVjZWM5MDIzZjAxMWRhYThkODM0OWExIgorICBkZXBlbmRlbmNpZXM6
CisgICAgaXMtZXh0Z2xvYiAiXjEuMC4wIgorCitleHRyYWN0LXRleHQtd2VicGFjay1wbHVnaW5A
MS4wLjE6CisgIHZlcnNpb24gIjEuMC4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9leHRyYWN0LXRleHQtd2VicGFjay1wbHVnaW4vLS9leHRyYWN0LXRleHQtd2Vi
cGFjay1wbHVnaW4tMS4wLjEudGd6I2M5NWJmM2NiYWFjNDlkYzk2ZjFkYzZlMDcyNTQ5ZmJiNjU0
Y2NkMmMiCisgIGRlcGVuZGVuY2llczoKKyAgICBhc3luYyAiXjEuNS4wIgorICAgIGxvYWRlci11
dGlscyAiXjAuMi4zIgorICAgIHdlYnBhY2stc291cmNlcyAiXjAuMS4wIgorCitleHRzcHJpbnRm
QDEuMC4yOgorICB2ZXJzaW9uICIxLjAuMiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vZXh0c3ByaW50Zi8tL2V4dHNwcmludGYtMS4wLjIudGd6I2UxMDgwZTA2NThl
MzAwYjA2Mjk0OTkwY2M3MGUxNTAyMjM1ZmQ1NTAiCisKK2Zhc3QtbGV2ZW5zaHRlaW5AfjIuMC40
OgorICB2ZXJzaW9uICIyLjAuNSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vZmFzdC1sZXZlbnNodGVpbi8tL2Zhc3QtbGV2ZW5zaHRlaW4tMi4wLjUudGd6I2JkMzMx
NDU3NDQ1MTlhYjFjMzZjM2VlOWYzMWYwOGU5MDc5YjY3ZjIiCisKK2Zhc3RwYXJzZUBeMS4xLjE6
CisgIHZlcnNpb24gIjEuMS4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9mYXN0cGFyc2UvLS9mYXN0cGFyc2UtMS4xLjEudGd6I2QxZTI2NDNiMzhhOTRkNzU4M2I0
NzkwNjBlNmM0YWZmYzk0MDcxZjgiCisKK2ZheWUtd2Vic29ja2V0QF4wLjEwLjA6CisgIHZlcnNp
b24gIjAuMTAuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZmF5
ZS13ZWJzb2NrZXQvLS9mYXllLXdlYnNvY2tldC0wLjEwLjAudGd6IzRlNDkyZjhkMDRkZmI2Zjg5
MDAzNTA3ZjZlZGJmMmQ1MDFlN2M2ZjQiCisgIGRlcGVuZGVuY2llczoKKyAgICB3ZWJzb2NrZXQt
ZHJpdmVyICI+PTAuNS4xIgorCitmYXllLXdlYnNvY2tldEB+MC4xMS4wOgorICB2ZXJzaW9uICIw
LjExLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2ZheWUtd2Vi
c29ja2V0Ly0vZmF5ZS13ZWJzb2NrZXQtMC4xMS4wLnRneiNkOWNjZjBlNzg5ZTdkYjcyNWQ3NGJj
NDg3N2QyM2FhNDI5NzJhYzUwIgorICBkZXBlbmRlbmNpZXM6CisgICAgd2Vic29ja2V0LWRyaXZl
ciAiPj0wLjUuMSIKKworZmF5ZS13ZWJzb2NrZXRAfjAuNy4zOgorICB2ZXJzaW9uICIwLjcuMyIK
KyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZmF5ZS13ZWJzb2NrZXQv
LS9mYXllLXdlYnNvY2tldC0wLjcuMy50Z3ojY2M0MDc0YzdmNGE0ZGZkMDNhZjU0ZGQ2NWMzNTRi
MTM1MTMyY2UxMSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIHdlYnNvY2tldC1kcml2ZXIgIj49MC4z
LjYiCisKK2ZiLXdhdGNobWFuQF4xLjguMCwgZmItd2F0Y2htYW5AXjEuOS4wOgorICB2ZXJzaW9u
ICIxLjkuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZmItd2F0
Y2htYW4vLS9mYi13YXRjaG1hbi0xLjkuMC50Z3ojNmYyNjhmMWYzNDdhNmIzYzg3NWQxZTg5ZGE3
ZTFlZDc5YWRmYzBlYyIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGJzZXIgIl4xLjAuMiIKKworZmJq
c0BeMC44LjQ6CisgIHZlcnNpb24gIjAuOC41IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9mYmpzLy0vZmJqcy0wLjguNS50Z3ojZjY5YmE4YTg3NjA5NmNiMWI5YmZm
ZTRkN2MxZTcxYzE5ZDM5ZDAwOCIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGNvcmUtanMgIl4xLjAu
MCIKKyAgICBpbW11dGFibGUgIl4zLjcuNiIKKyAgICBpc29tb3JwaGljLWZldGNoICJeMi4xLjEi
CisgICAgbG9vc2UtZW52aWZ5ICJeMS4wLjAiCisgICAgb2JqZWN0LWFzc2lnbiAiXjQuMS4wIgor
ICAgIHByb21pc2UgIl43LjEuMSIKKyAgICB1YS1wYXJzZXItanMgIl4wLjcuOSIKKworZmlndXJl
c0BeMS4zLjU6CisgIHZlcnNpb24gIjEuNy4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9maWd1cmVzLy0vZmlndXJlcy0xLjcuMC50Z3ojY2JlMWUzYWZmY2YxY2Q0
NGI4MGNhZGZlZDI4ZGM3OTNhOTcwMWQyZSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGVzY2FwZS1z
dHJpbmctcmVnZXhwICJeMS4wLjUiCisgICAgb2JqZWN0LWFzc2lnbiAiXjQuMS4wIgorCitmaWxl
LWVudHJ5LWNhY2hlQF4yLjAuMDoKKyAgdmVyc2lvbiAiMi4wLjAiCisgIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2ZpbGUtZW50cnktY2FjaGUvLS9maWxlLWVudHJ5LWNh
Y2hlLTIuMC4wLnRneiNjMzkyOTkwYzNlNjg0NzgzZDgzOGI4Yzg0YTQ1ZDhhMDQ4NDU4MzYxIgor
ICBkZXBlbmRlbmNpZXM6CisgICAgZmxhdC1jYWNoZSAiXjEuMi4xIgorICAgIG9iamVjdC1hc3Np
Z24gIl40LjAuMSIKKworZmlsZS1sb2FkZXJAMC45LjA6CisgIHZlcnNpb24gIjAuOS4wIgorICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9maWxlLWxvYWRlci8tL2ZpbGUt
bG9hZGVyLTAuOS4wLnRneiMxZDJkYWRkZDQyNGNlNmQxYjA3Y2ZlM2Y3OTczMWJlZDM2MTdhYjQy
IgorICBkZXBlbmRlbmNpZXM6CisgICAgbG9hZGVyLXV0aWxzICJ+MC4yLjUiCisKK2ZpbGVuYW1l
LXJlZ2V4QF4yLjAuMDoKKyAgdmVyc2lvbiAiMi4wLjAiCisgIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL2ZpbGVuYW1lLXJlZ2V4Ly0vZmlsZW5hbWUtcmVnZXgtMi4wLjAu
dGd6Izk5NmUzZTgwNDc5Yjk4Yjk4OTdmMTVhOGE1OGIzZDA4NGU5MjY3NzUiCisKK2ZpbGVzZXRA
MC4yLng6CisgIHZlcnNpb24gIjAuMi4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9maWxlc2V0Ly0vZmlsZXNldC0wLjIuMS50Z3ojNTg4ZWY4OTczYzY2MjNiMmE3
NmRmNDY1MTA1Njk2Yjk2YWFjODA2NyIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGdsb2IgIjUueCIK
KyAgICBtaW5pbWF0Y2ggIjIueCIKKworZmlsZXNpemVAMy4zLjA6CisgIHZlcnNpb24gIjMuMy4w
IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9maWxlc2l6ZS8tL2Zp
bGVzaXplLTMuMy4wLnRneiM1MzE0OWVhMzQ2MGUzYjJlMDI0OTYyYTUxNjQ4YWE1NzJjZjk4MTIy
IgorCitmaWxsLXJhbmdlQF4yLjEuMDoKKyAgdmVyc2lvbiAiMi4yLjMiCisgIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2ZpbGwtcmFuZ2UvLS9maWxsLXJhbmdlLTIuMi4z
LnRneiM1MGI3N2RmZDdlNDY5YmM3NDkyNDcwOTYzNjk5ZmU3YTg0ODVhNzIzIgorICBkZXBlbmRl
bmNpZXM6CisgICAgaXMtbnVtYmVyICJeMi4xLjAiCisgICAgaXNvYmplY3QgIl4yLjAuMCIKKyAg
ICByYW5kb21hdGljICJeMS4xLjMiCisgICAgcmVwZWF0LWVsZW1lbnQgIl4xLjEuMiIKKyAgICBy
ZXBlYXQtc3RyaW5nICJeMS41LjIiCisKK2ZpbmFsaGFuZGxlckAwLjUuMDoKKyAgdmVyc2lvbiAi
MC41LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2ZpbmFsaGFu
ZGxlci8tL2ZpbmFsaGFuZGxlci0wLjUuMC50Z3ojZTk1MDhhYmVjZTliNmRiYTg3MWE2OTQyYTFk
NzkxMWI5MTkxMWFjNyIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGRlYnVnICJ+Mi4yLjAiCisgICAg
ZXNjYXBlLWh0bWwgIn4xLjAuMyIKKyAgICBvbi1maW5pc2hlZCAifjIuMy4wIgorICAgIHN0YXR1
c2VzICJ+MS4zLjAiCisgICAgdW5waXBlICJ+MS4wLjAiCisKK2ZpbmQtY2FjaGUtZGlyQF4wLjEu
MSwgZmluZC1jYWNoZS1kaXJAMC4xLjE6CisgIHZlcnNpb24gIjAuMS4xIgorICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9maW5kLWNhY2hlLWRpci8tL2ZpbmQtY2FjaGUt
ZGlyLTAuMS4xLnRneiNjOGRlZmFlNTdjOGE1MmE4YTc4NGY5ZTMxYzU3Yzc0MmU5OTNhMGI5Igor
ICBkZXBlbmRlbmNpZXM6CisgICAgY29tbW9uZGlyICJeMS4wLjEiCisgICAgbWtkaXJwICJeMC41
LjEiCisgICAgcGtnLWRpciAiXjEuMC4wIgorCitmaW5kLXVwQF4xLjAuMCwgZmluZC11cEBeMS4x
LjI6CisgIHZlcnNpb24gIjEuMS4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9maW5kLXVwLy0vZmluZC11cC0xLjEuMi50Z3ojNmIyZTk4MjJiMWEyY2UwYTYwYWI2
NGQ2MTBlY2NhZDUzY2IyNGQwZiIKKyAgZGVwZW5kZW5jaWVzOgorICAgIHBhdGgtZXhpc3RzICJe
Mi4wLjAiCisgICAgcGlua2llLXByb21pc2UgIl4yLjAuMCIKKworZmxhdC1jYWNoZUBeMS4yLjE6
CisgIHZlcnNpb24gIjEuMi4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9mbGF0LWNhY2hlLy0vZmxhdC1jYWNoZS0xLjIuMS50Z3ojNmM4MzdkNjIyNWE3ZGU1NjU5
MzIzNzQwYjM2ZDUzNjFmNzE2OTFmZiIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGNpcmN1bGFyLWpz
b24gIl4wLjMuMCIKKyAgICBkZWwgIl4yLjAuMiIKKyAgICBncmFjZWZ1bC1mcyAiXjQuMS4yIgor
ICAgIHdyaXRlICJeMC4yLjEiCisKK2ZsYXR0ZW5AXjEuMC4yLCBmbGF0dGVuQDEuMC4yOgorICB2
ZXJzaW9uICIxLjAuMiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
ZmxhdHRlbi8tL2ZsYXR0ZW4tMS4wLjIudGd6I2RhZTQ2YTlkNzhmYmUyNTI5MjI1OGNjMWU3ODBh
NDFkOTVjMDM3ODIiCisKK2Zvci1pbkBeMC4xLjU6CisgIHZlcnNpb24gIjAuMS42IgorICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9mb3ItaW4vLS9mb3ItaW4tMC4xLjYu
dGd6I2M5Zjk2ZTg5YmZhZDE4YTU0NWFmNWVjM2VkMzUyYTFkOWU1YjRkYzgiCisKK2Zvci1vd25A
XjAuMS4zOgorICB2ZXJzaW9uICIwLjEuNCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vZm9yLW93bi8tL2Zvci1vd24tMC4xLjQudGd6IzAxNDliNDFhMzkwODhjNzUx
NWY1MWViZTFjMTM4NmQ0NWY5MzUwNzIiCisgIGRlcGVuZGVuY2llczoKKyAgICBmb3ItaW4gIl4w
LjEuNSIKKworZm9yZWFjaEBeMi4wLjU6CisgIHZlcnNpb24gIjIuMC41IgorICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9mb3JlYWNoLy0vZm9yZWFjaC0yLjAuNS50Z3oj
MGJlZTAwNTAxOGFlYjI2MGQwYTNhZjNhZTY1OGRkMDEzNmVjMWI5OSIKKworZm9yZXZlci1hZ2Vu
dEB+MC42LjE6CisgIHZlcnNpb24gIjAuNi4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9mb3JldmVyLWFnZW50Ly0vZm9yZXZlci1hZ2VudC0wLjYuMS50Z3ojZmJj
NzFmMGM0MWFkZWIzN2Y5NmM1NzdhZDFlZDQyZDhmZGFjY2E5MSIKKworZm9ybS1kYXRhQH4yLjAu
MDoKKyAgdmVyc2lvbiAiMi4wLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w
a2cuY29tL2Zvcm0tZGF0YS8tL2Zvcm0tZGF0YS0yLjAuMC50Z3ojNmYwYWViYWRjYzVkYTE2YzEz
ZTFlY2MxMTEzN2Q4NWY5Yjg4M2IyNSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGFzeW5ja2l0ICJe
MC40LjAiCisgICAgY29tYmluZWQtc3RyZWFtICJeMS4wLjUiCisgICAgbWltZS10eXBlcyAiXjIu
MS4xMSIKKworZm9yd2FyZGVkQH4wLjEuMDoKKyAgdmVyc2lvbiAiMC4xLjAiCisgIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2ZvcndhcmRlZC8tL2ZvcndhcmRlZC0wLjEu
MC50Z3ojMTllZjk4NzRjNGFlMWMyOTdiY2YwNzhmZGU2M2EwOWI2NmE4NDM2MyIKKworZnJlc2hA
MC4zLjA6CisgIHZlcnNpb24gIjAuMy4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9mcmVzaC8tL2ZyZXNoLTAuMy4wLnRneiM2NTFmODM4ZTIyNDI0ZTc1NjZkZTE2
MWQ4MzU4Y2FhMTk5ZjgzZDRmIgorCitmcy1leHRyYUAwLjMwLjA6CisgIHZlcnNpb24gIjAuMzAu
MCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZnMtZXh0cmEvLS9m
cy1leHRyYS0wLjMwLjAudGd6I2YyMzNmZmNjMDhkNGRhN2Q0MzJkYWE0NDk3NzY5ODlkYjFkZjkz
ZjAiCisgIGRlcGVuZGVuY2llczoKKyAgICBncmFjZWZ1bC1mcyAiXjQuMS4yIgorICAgIGpzb25m
aWxlICJeMi4xLjAiCisgICAga2xhdyAiXjEuMC4wIgorICAgIHBhdGgtaXMtYWJzb2x1dGUgIl4x
LjAuMCIKKyAgICByaW1yYWYgIl4yLjIuOCIKKworZnMucmVhbHBhdGhAXjEuMC4wOgorICB2ZXJz
aW9uICIxLjAuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZnMu
cmVhbHBhdGgvLS9mcy5yZWFscGF0aC0xLjAuMC50Z3ojMTUwNGFkMjUyMzE1OGNhYTQwZGI0YTI3
ODdjYjAxNDExOTk0ZWE0ZiIKKworZnNldmVudHNAXjEuMC4wLCBmc2V2ZW50c0AxLjAuMTQ6Cisg
IHZlcnNpb24gIjEuMC4xNCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vZnNldmVudHMvLS9mc2V2ZW50cy0xLjAuMTQudGd6IzU1OGU4Y2MzODY0M2Q4ZWY0MGZlNDUx
NTg0ODZkMGQyNTc1OGVlZTQiCisgIGRlcGVuZGVuY2llczoKKyAgICBuYW4gIl4yLjMuMCIKKyAg
ICBub2RlLXByZS1neXAgIl4wLjYuMjkiCisKK2ZzdHJlYW0taWdub3JlQH4xLjAuNToKKyAgdmVy
c2lvbiAiMS4wLjUiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Zz
dHJlYW0taWdub3JlLy0vZnN0cmVhbS1pZ25vcmUtMS4wLjUudGd6IzljMzFkYWUzNDc2NzAxOGZl
MWQyNDliMjRkYWRhNjdkMDkyZGExMDUiCisgIGRlcGVuZGVuY2llczoKKyAgICBmc3RyZWFtICJe
MS4wLjAiCisgICAgaW5oZXJpdHMgIjIiCisgICAgbWluaW1hdGNoICJeMy4wLjAiCisKK2ZzdHJl
YW1AXjEuMC4wLCBmc3RyZWFtQF4xLjAuMiwgZnN0cmVhbUB+MS4wLjEwOgorICB2ZXJzaW9uICIx
LjAuMTAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2ZzdHJlYW0v
LS9mc3RyZWFtLTEuMC4xMC50Z3ojNjA0ZThhOTJmZTI2ZmZkOWY2ZmFlMzAzOTlkNDk4NGUxYWIy
MjgyMiIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGdyYWNlZnVsLWZzICJeNC4xLjIiCisgICAgaW5o
ZXJpdHMgIn4yLjAuMCIKKyAgICBta2RpcnAgIj49MC41IDAiCisgICAgcmltcmFmICIyIgorCitm
dW5jdGlvbi1iaW5kQF4xLjAuMiwgZnVuY3Rpb24tYmluZEBeMS4xLjA6CisgIHZlcnNpb24gIjEu
MS4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9mdW5jdGlvbi1i
aW5kLy0vZnVuY3Rpb24tYmluZC0xLjEuMC50Z3ojMTYxNzY3MTRjODAxNzk4ZTRlOGYyY2Y3Zjc1
Mjk0NjdiYjRhNTc3MSIKKworZ2F1Z2VAfjIuNi4wOgorICB2ZXJzaW9uICIyLjYuMCIKKyAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZ2F1Z2UvLS9nYXVnZS0yLjYuMC50
Z3ojZDM1MzAxYWQxOGU5NjkwMmI0NzUxZGNiYmU0MGY0MjE4Yjk0MmE0NiIKKyAgZGVwZW5kZW5j
aWVzOgorICAgIGFwcm9iYSAiXjEuMC4zIgorICAgIGNvbnNvbGUtY29udHJvbC1zdHJpbmdzICJe
MS4wLjAiCisgICAgaGFzLWNvbG9yICJeMC4xLjciCisgICAgaGFzLXVuaWNvZGUgIl4yLjAuMCIK
KyAgICBvYmplY3QtYXNzaWduICJeNC4xLjAiCisgICAgc2lnbmFsLWV4aXQgIl4zLjAuMCIKKyAg
ICBzdHJpbmctd2lkdGggIl4xLjAuMSIKKyAgICBzdHJpcC1hbnNpICJeMy4wLjEiCisgICAgd2lk
ZS1hbGlnbiAiXjEuMS4wIgorCitnZW5lcmF0ZS1mdW5jdGlvbkBeMi4wLjA6CisgIHZlcnNpb24g
IjIuMC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9nZW5lcmF0
ZS1mdW5jdGlvbi8tL2dlbmVyYXRlLWZ1bmN0aW9uLTIuMC4wLnRneiM2ODU4ZmU3YzA5NjliN2Q0
ZTkwOTMzMzc2NDdhYzc5ZjYwZGZiZTc0IgorCitnZW5lcmF0ZS1vYmplY3QtcHJvcGVydHlAXjEu
MS4wOgorICB2ZXJzaW9uICIxLjIuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vZ2VuZXJhdGUtb2JqZWN0LXByb3BlcnR5Ly0vZ2VuZXJhdGUtb2JqZWN0LXByb3Bl
cnR5LTEuMi4wLnRneiM5YzBlMWM0MDMwOGNlODA0ZjQ3ODM2MThiOTM3ZmE4OGY5OWQ1MGQwIgor
ICBkZXBlbmRlbmNpZXM6CisgICAgaXMtcHJvcGVydHkgIl4xLjAuMCIKKworZ2V0LWNhbGxlci1m
aWxlQF4xLjAuMToKKyAgdmVyc2lvbiAiMS4wLjIiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL2dldC1jYWxsZXItZmlsZS8tL2dldC1jYWxsZXItZmlsZS0xLjAuMi50
Z3ojZjcwMmU2MzEyN2U3ZTIzMWMxNjBhODBjMTU1NGFjYjcwZDUwNDdlNSIKKworZ2V0LXN0ZGlu
QF40LjAuMToKKyAgdmVyc2lvbiAiNC4wLjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL2dldC1zdGRpbi8tL2dldC1zdGRpbi00LjAuMS50Z3ojYjk2OGM2YjBhMDQz
ODQzMjQ5MDJlOGJmMWE1ZGYzMjU3OWE0NTBmZSIKKworZ2V0cGFzc0BeMC4xLjE6CisgIHZlcnNp
b24gIjAuMS42IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9nZXRw
YXNzLy0vZ2V0cGFzcy0wLjEuNi50Z3ojMjgzZmZkOWZjMTI1Njg0MDg3NTMxMWMxYjYwZThjNDAx
ODcxMTBlNiIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGFzc2VydC1wbHVzICJeMS4wLjAiCisKK2ds
b2ItYmFzZUBeMC4zLjA6CisgIHZlcnNpb24gIjAuMy4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9nbG9iLWJhc2UvLS9nbG9iLWJhc2UtMC4zLjAudGd6I2RiYjE2
NGY2MjIxYjFjMGIxY2NmODJhZWEzMjhiNDk3ZGYwZWEzYzQiCisgIGRlcGVuZGVuY2llczoKKyAg
ICBnbG9iLXBhcmVudCAiXjIuMC4wIgorICAgIGlzLWdsb2IgIl4yLjAuMCIKKworZ2xvYi1wYXJl
bnRAXjIuMC4wOgorICB2ZXJzaW9uICIyLjAuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vZ2xvYi1wYXJlbnQvLS9nbG9iLXBhcmVudC0yLjAuMC50Z3ojODEzODNk
NzJkYjA1NGZjY2NmNTMzNmRhYTkwMmYxODJmNmVkYmIyOCIKKyAgZGVwZW5kZW5jaWVzOgorICAg
IGlzLWdsb2IgIl4yLjAuMCIKKworZ2xvYkBeNS4wLjE1LCBnbG9iQDUueDoKKyAgdmVyc2lvbiAi
NS4wLjE1IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9nbG9iLy0v
Z2xvYi01LjAuMTUudGd6IzFiYzkzNmI5ZTAyZjRhNjAzZmNjMjIyZWNmNzYzM2QzMGI4YjkzYjEi
CisgIGRlcGVuZGVuY2llczoKKyAgICBpbmZsaWdodCAiXjEuMC40IgorICAgIGluaGVyaXRzICIy
IgorICAgIG1pbmltYXRjaCAiMiB8fCAzIgorICAgIG9uY2UgIl4xLjMuMCIKKyAgICBwYXRoLWlz
LWFic29sdXRlICJeMS4wLjAiCisKK2dsb2JAXjcuMC4zLCBnbG9iQF43LjAuNToKKyAgdmVyc2lv
biAiNy4xLjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2dsb2Iv
LS9nbG9iLTcuMS4xLnRneiM4MDUyMTFkZjA0ZmFhZjFjNjNhMzYwMDMwNmNkZjVhZGU1MGIyZWM4
IgorICBkZXBlbmRlbmNpZXM6CisgICAgZnMucmVhbHBhdGggIl4xLjAuMCIKKyAgICBpbmZsaWdo
dCAiXjEuMC40IgorICAgIGluaGVyaXRzICIyIgorICAgIG1pbmltYXRjaCAiXjMuMC4yIgorICAg
IG9uY2UgIl4xLjMuMCIKKyAgICBwYXRoLWlzLWFic29sdXRlICJeMS4wLjAiCisKK2dsb2JhbHNA
XjguMy4wOgorICB2ZXJzaW9uICI4LjE4LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL2dsb2JhbHMvLS9nbG9iYWxzLTguMTguMC50Z3ojOTNkNGE2MmJkY2FjMzhj
ZmFmYWZjNDdkNmIwMzQ3NjhjYjBmZmNiNCIKKworZ2xvYmFsc0BeOS4yLjA6CisgIHZlcnNpb24g
IjkuMTIuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZ2xvYmFs
cy8tL2dsb2JhbHMtOS4xMi4wLnRneiM5OTJjZTkwODI4YzNhNTVmYThmMTZmYWRhMTc3YWRiNjQ2
NjRjZjlkIgorCitnbG9iYnlAXjUuMC4wOgorICB2ZXJzaW9uICI1LjAuMCIKKyAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZ2xvYmJ5Ly0vZ2xvYmJ5LTUuMC4wLnRneiNl
YmQ4NDY2N2NhMGRiYjMzMGI5OWJjZmM2OGVhYzJiYzU0MzcwZTBkIgorICBkZXBlbmRlbmNpZXM6
CisgICAgYXJyYXktdW5pb24gIl4xLjAuMSIKKyAgICBhcnJpZnkgIl4xLjAuMCIKKyAgICBnbG9i
ICJeNy4wLjMiCisgICAgb2JqZWN0LWFzc2lnbiAiXjQuMC4xIgorICAgIHBpZnkgIl4yLjAuMCIK
KyAgICBwaW5raWUtcHJvbWlzZSAiXjIuMC4wIgorCitncmFjZWZ1bC1mc0BeNC4xLjIsIGdyYWNl
ZnVsLWZzQF40LjEuNjoKKyAgdmVyc2lvbiAiNC4xLjkiCisgIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL2dyYWNlZnVsLWZzLy0vZ3JhY2VmdWwtZnMtNC4xLjkudGd6I2Jh
YWNiYTM3ZDE5ZDExZjlkMTQ2ZDM1NzhiYzk5OTU4YzM3ODdlMjkiCisKKyJncmFjZWZ1bC1yZWFk
bGlua0A+PSAxLjAuMCI6CisgIHZlcnNpb24gIjEuMC4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9ncmFjZWZ1bC1yZWFkbGluay8tL2dyYWNlZnVsLXJlYWRsaW5r
LTEuMC4xLnRneiM0Y2FmYWQ3NmJjNjJmMDJmYTAzOWIyZjk0ZTlhM2RkM2EzOTFhNzI1IgorCitn
cm93bHlAXjEuMi4wOgorICB2ZXJzaW9uICIxLjMuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vZ3Jvd2x5Ly0vZ3Jvd2x5LTEuMy4wLnRneiNmMTA3NDhjYmU3NmFm
OTY0YjdjOTZjOTNjNmJjYzI4YWYxMjBjMDgxIgorCitnemlwLXNpemVAMy4wLjA6CisgIHZlcnNp
b24gIjMuMC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9nemlw
LXNpemUvLS9nemlwLXNpemUtMy4wLjAudGd6IzU0NjE4OGU5YmRjMzM3ZjY3Mzc3MmY4MTY2MDQ2
NGIzODlkY2U1MjAiCisgIGRlcGVuZGVuY2llczoKKyAgICBkdXBsZXhlciAiXjAuMS4xIgorCito
YW5kbGViYXJzQF40LjAuMSwgaGFuZGxlYmFyc0BeNC4wLjM6CisgIHZlcnNpb24gIjQuMC41Igor
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9oYW5kbGViYXJzLy0vaGFu
ZGxlYmFycy00LjAuNS50Z3ojOTJjNmVkNmJiMTY0MTEwYzUwZDRkOGQwZmJkZGM3MDgwNmM2Zjhl
NyIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGFzeW5jICJeMS40LjAiCisgICAgb3B0aW1pc3QgIl4w
LjYuMSIKKyAgICBzb3VyY2UtbWFwICJeMC40LjQiCisgIG9wdGlvbmFsRGVwZW5kZW5jaWVzOgor
ICAgIHVnbGlmeS1qcyAiXjIuNiIKKworaGFyLXZhbGlkYXRvckB+Mi4wLjY6CisgIHZlcnNpb24g
IjIuMC42IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9oYXItdmFs
aWRhdG9yLy0vaGFyLXZhbGlkYXRvci0yLjAuNi50Z3ojY2RjYmMwODE4ODI2NWFkMTE5YjZhNWE3
YzhhYjcwZWVjZmI1ZDI3ZCIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGNoYWxrICJeMS4xLjEiCisg
ICAgY29tbWFuZGVyICJeMi45LjAiCisgICAgaXMtbXktanNvbi12YWxpZCAiXjIuMTIuNCIKKyAg
ICBwaW5raWUtcHJvbWlzZSAiXjIuMC4wIgorCitoYXMtYW5zaUBeMi4wLjA6CisgIHZlcnNpb24g
IjIuMC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9oYXMtYW5z
aS8tL2hhcy1hbnNpLTIuMC4wLnRneiMzNGY1MDQ5Y2UxZWNkZjJiMDY0OWFmM2VmMjRlNDVlZDM1
NDE2ZDkxIgorICBkZXBlbmRlbmNpZXM6CisgICAgYW5zaS1yZWdleCAiXjIuMC4wIgorCitoYXMt
Y29sb3JAXjAuMS43OgorICB2ZXJzaW9uICIwLjEuNyIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vaGFzLWNvbG9yLy0vaGFzLWNvbG9yLTAuMS43LnRneiM2NzE0NGE1
MjYwYzM0ZmMzY2NhNjc3ZDA0MWRhZjUyZmU3Yjc4YjJmIgorCitoYXMtZmxhZ0BeMS4wLjA6Cisg
IHZlcnNpb24gIjEuMC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9oYXMtZmxhZy8tL2hhcy1mbGFnLTEuMC4wLnRneiM5ZDllNzkzMTY1Y2UwMTdhMDBmMDA0MThj
NDNmOTQyYTdiMWQxMWZhIgorCitoYXMtdW5pY29kZUBeMi4wLjA6CisgIHZlcnNpb24gIjIuMC4x
IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9oYXMtdW5pY29kZS8t
L2hhcy11bmljb2RlLTIuMC4xLnRneiNlMGU2ZmU2YTI4Y2Y1MTEzODg1NWUwODZkMTY5MWU3NzFk
ZTJhOGI5IgorCitoYXNAXjEuMC4xOgorICB2ZXJzaW9uICIxLjAuMSIKKyAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaGFzLy0vaGFzLTEuMC4xLnRneiM4NDYxNzMzZjUz
OGIwODM3YzkzNjFlMzlhOWFiOWU5NzA0ZGMyZjI4IgorICBkZXBlbmRlbmNpZXM6CisgICAgZnVu
Y3Rpb24tYmluZCAiXjEuMC4yIgorCitoYXdrQH4zLjEuMzoKKyAgdmVyc2lvbiAiMy4xLjMiCisg
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2hhd2svLS9oYXdrLTMuMS4z
LnRneiMwNzg0NDRiZDdjMTY0MGIwZmU1NDBkMmM5YjczZDU5Njc4ZThlMWM0IgorICBkZXBlbmRl
bmNpZXM6CisgICAgYm9vbSAiMi54LngiCisgICAgY3J5cHRpbGVzICIyLngueCIKKyAgICBob2Vr
ICIyLngueCIKKyAgICBzbnRwICIxLngueCIKKworaGVAMS4xLng6CisgIHZlcnNpb24gIjEuMS4w
IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9oZS8tL2hlLTEuMS4w
LnRneiMyOTMxOWQ0OWJlZWMxM2E5YjFmM2M0ZjliMmE2ZGRlNDg1OWJiMmE3IgorCitoZWFkZXIt
Y2FzZUBeMS4wLjA6CisgIHZlcnNpb24gIjEuMC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9oZWFkZXItY2FzZS8tL2hlYWRlci1jYXNlLTEuMC4wLnRneiNkOWUz
MzU5MDk1MDVkNTYwNTFlYzE2YTAxMDY4MjE4ODllOTEwNzgxIgorICBkZXBlbmRlbmNpZXM6Cisg
ICAgbm8tY2FzZSAiXjIuMi4wIgorICAgIHVwcGVyLWNhc2UgIl4xLjEuMyIKKworaG9la0AyLngu
eDoKKyAgdmVyc2lvbiAiMi4xNi4zIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9ob2VrLy0vaG9lay0yLjE2LjMudGd6IzIwYmI3NDAzZDNjZWEzOThlOTFkYzQ3MTBh
OGZmMWI4Mjc0YTI1ZWQiCisKK2hvaXN0LW5vbi1yZWFjdC1zdGF0aWNzQF4xLjAuMzoKKyAgdmVy
c2lvbiAiMS4yLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2hv
aXN0LW5vbi1yZWFjdC1zdGF0aWNzLy0vaG9pc3Qtbm9uLXJlYWN0LXN0YXRpY3MtMS4yLjAudGd6
I2FhNDQ4Y2YwOTg2ZDU1Y2M0MDc3M2IxNzE3NGI3ZGQwNjZjYjdjZmIiCisKK2hvbWUtb3ItdG1w
QF4xLjAuMDoKKyAgdmVyc2lvbiAiMS4wLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL2hvbWUtb3ItdG1wLy0vaG9tZS1vci10bXAtMS4wLjAudGd6IzRiOWYxZTQw
ODAwYzNlNTBjNmMyN2Y3ODE2NzZhZmNjZTcxZjM5ODUiCisgIGRlcGVuZGVuY2llczoKKyAgICBv
cy10bXBkaXIgIl4xLjAuMSIKKyAgICB1c2VyLWhvbWUgIl4xLjEuMSIKKworaG9zdGVkLWdpdC1p
bmZvQF4yLjEuNDoKKyAgdmVyc2lvbiAiMi4xLjUiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL2hvc3RlZC1naXQtaW5mby8tL2hvc3RlZC1naXQtaW5mby0yLjEuNS50
Z3ojMGJhODFkOTBkYTJlMjVhYjM0YTMzMmU2ZWM3NzkzNmUxNTk4MTE4YiIKKworaHRtbC1jb21t
ZW50LXJlZ2V4QF4xLjEuMDoKKyAgdmVyc2lvbiAiMS4xLjEiCisgIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2h0bWwtY29tbWVudC1yZWdleC8tL2h0bWwtY29tbWVudC1y
ZWdleC0xLjEuMS50Z3ojNjY4YjkzNzc2ZWFhZTU1ZWJkZThmM2FkNDY0YjMwN2E0OTYzNjI1ZSIK
KworaHRtbC1lbnRpdGllc0AxLjIuMDoKKyAgdmVyc2lvbiAiMS4yLjAiCisgIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2h0bWwtZW50aXRpZXMvLS9odG1sLWVudGl0aWVz
LTEuMi4wLnRneiM0MTk0OGNhZjg1Y2U4MmZlZDM2ZTRlNmEwZWQzNzFhNjY2NDM3OWUyIgorCito
dG1sLW1pbmlmaWVyQF4yLjEuNjoKKyAgdmVyc2lvbiAiMi4xLjciCisgIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2h0bWwtbWluaWZpZXIvLS9odG1sLW1pbmlmaWVyLTIu
MS43LnRneiM5MDUxZDZmY2JiY2YyMTRlZDMwN2UxYWQ3NGY0MzJiYjlhZDY1NWNjIgorICBkZXBl
bmRlbmNpZXM6CisgICAgY2hhbmdlLWNhc2UgIjMuMC54IgorICAgIGNsZWFuLWNzcyAiMy40Lngi
CisgICAgY29tbWFuZGVyICIyLjkueCIKKyAgICBoZSAiMS4xLngiCisgICAgbmNuYW1lICIxLjAu
eCIKKyAgICByZWxhdGV1cmwgIjAuMi54IgorICAgIHVnbGlmeS1qcyAiMi42LngiCisKK2h0bWwt
d2VicGFjay1wbHVnaW5AMi4yMi4wOgorICB2ZXJzaW9uICIyLjIyLjAiCisgIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2h0bWwtd2VicGFjay1wbHVnaW4vLS9odG1sLXdl
YnBhY2stcGx1Z2luLTIuMjIuMC50Z3ojN2ViMDJmZjkwMzlkYTg0ZTViYTcxMDA0ZDQ2OTNjMDRi
OTJkMjkwNSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGJsdWViaXJkICJeMy40LjEiCisgICAgaHRt
bC1taW5pZmllciAiXjIuMS42IgorICAgIGxvYWRlci11dGlscyAiXjAuMi4xNSIKKyAgICBsb2Rh
c2ggIl40LjEzLjEiCisgICAgcHJldHR5LWVycm9yICJeMi4wLjAiCisgICAgdG9wb3NvcnQgIl4x
LjAuMCIKKworaHRtbHBhcnNlcjJAfjMuMy4wOgorICB2ZXJzaW9uICIzLjMuMCIKKyAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaHRtbHBhcnNlcjIvLS9odG1scGFyc2Vy
Mi0zLjMuMC50Z3ojY2M3MGQwNWE1OWY2NTQyZTQzZjBlNjg1Yzk4MmUxNGM5MjRhOWVmZSIKKyAg
ZGVwZW5kZW5jaWVzOgorICAgIGRvbWVsZW1lbnR0eXBlICIxIgorICAgIGRvbWhhbmRsZXIgIjIu
MSIKKyAgICBkb211dGlscyAiMS4xIgorICAgIHJlYWRhYmxlLXN0cmVhbSAiMS4wIgorCitodG1s
cGFyc2VyMkB+My44LjE6CisgIHZlcnNpb24gIjMuOC4zIgorICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9odG1scGFyc2VyMi8tL2h0bWxwYXJzZXIyLTMuOC4zLnRneiM5
OTZjMjhiMTkxNTE2YThiZTg2NTAxYTdkNzk3NTdlNWM3MGMxMDY4IgorICBkZXBlbmRlbmNpZXM6
CisgICAgZG9tZWxlbWVudHR5cGUgIjEiCisgICAgZG9taGFuZGxlciAiMi4zIgorICAgIGRvbXV0
aWxzICIxLjUiCisgICAgZW50aXRpZXMgIjEuMCIKKyAgICByZWFkYWJsZS1zdHJlYW0gIjEuMSIK
KworaHR0cC1icm93c2VyaWZ5QF4xLjMuMjoKKyAgdmVyc2lvbiAiMS43LjAiCisgIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2h0dHAtYnJvd3NlcmlmeS8tL2h0dHAtYnJv
d3NlcmlmeS0xLjcuMC50Z3ojMzM3OTVhZGU3MmRmODhhY2ZiZmQzNjc3M2NlZmVkYTc2NDczNWIy
MCIKKyAgZGVwZW5kZW5jaWVzOgorICAgIEJhc2U2NCAifjAuMi4wIgorICAgIGluaGVyaXRzICJ+
Mi4wLjEiCisKK2h0dHAtZXJyb3JzQH4xLjUuMDoKKyAgdmVyc2lvbiAiMS41LjAiCisgIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2h0dHAtZXJyb3JzLy0vaHR0cC1lcnJv
cnMtMS41LjAudGd6I2IxY2IzZDgyNjBmZDhlMjM4NmNhZDMxODkwNDU5NDMzNzJkNDgyMTEiCisg
IGRlcGVuZGVuY2llczoKKyAgICBpbmhlcml0cyAiMi4wLjEiCisgICAgc2V0cHJvdG90eXBlb2Yg
IjEuMC4xIgorICAgIHN0YXR1c2VzICI+PSAxLjMuMCA8IDIiCisKK2h0dHAtcHJveHktbWlkZGxl
d2FyZUB+MC4xNy4xOgorICB2ZXJzaW9uICIwLjE3LjIiCisgIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL2h0dHAtcHJveHktbWlkZGxld2FyZS8tL2h0dHAtcHJveHktbWlk
ZGxld2FyZS0wLjE3LjIudGd6IzU3MmQ1MTdhNmQyZmIxMDYzYTQ2OWRlMjk0ZWVkOTYwNjYzNTIw
MDciCisgIGRlcGVuZGVuY2llczoKKyAgICBodHRwLXByb3h5ICJeMS4xNS4xIgorICAgIGlzLWds
b2IgIl4zLjAuMCIKKyAgICBsb2Rhc2ggIl40LjE2LjIiCisgICAgbWljcm9tYXRjaCAiXjIuMy4x
MSIKKworaHR0cC1wcm94eS1taWRkbGV3YXJlQDAuMTcuMToKKyAgdmVyc2lvbiAiMC4xNy4xIgor
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9odHRwLXByb3h5LW1pZGRs
ZXdhcmUvLS9odHRwLXByb3h5LW1pZGRsZXdhcmUtMC4xNy4xLnRneiNlMmI4NDdhYTk5NjJkOGNl
MzEyY2M4MmEzZjQ0M2Q1MDM5Y2YxOTdhIgorICBkZXBlbmRlbmNpZXM6CisgICAgaHR0cC1wcm94
eSAiXjEuMTQuMCIKKyAgICBpcy1nbG9iICJeMi4wLjEiCisgICAgbG9kYXNoICJeNC4xNC4yIgor
ICAgIG1pY3JvbWF0Y2ggIl4yLjMuMTEiCisKK2h0dHAtcHJveHlAXjEuMTQuMCwgaHR0cC1wcm94
eUBeMS4xNS4xOgorICB2ZXJzaW9uICIxLjE1LjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL2h0dHAtcHJveHkvLS9odHRwLXByb3h5LTEuMTUuMS50Z3ojOTFhNjA4
ODE3MmU3OWJjMGU4MjFkNWViMDRjZTcwMmYzMjQ0NjM5MyIKKyAgZGVwZW5kZW5jaWVzOgorICAg
IGV2ZW50ZW1pdHRlcjMgIjEueC54IgorICAgIHJlcXVpcmVzLXBvcnQgIjEueC54IgorCitodHRw
LXNpZ25hdHVyZUB+MS4xLjA6CisgIHZlcnNpb24gIjEuMS4xIgorICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9odHRwLXNpZ25hdHVyZS8tL2h0dHAtc2lnbmF0dXJlLTEu
MS4xLnRneiNkZjcyZTI2NzA2NmNkMGFjNjdmYjc2YWRmOGUxMzRhOGZiY2Y5MWJmIgorICBkZXBl
bmRlbmNpZXM6CisgICAgYXNzZXJ0LXBsdXMgIl4wLjIuMCIKKyAgICBqc3ByaW0gIl4xLjIuMiIK
KyAgICBzc2hwayAiXjEuNy4wIgorCitodHRwcy1icm93c2VyaWZ5QDAuMC4wOgorICB2ZXJzaW9u
ICIwLjAuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaHR0cHMt
YnJvd3NlcmlmeS8tL2h0dHBzLWJyb3dzZXJpZnktMC4wLjAudGd6I2IzZmZkZmU3MzRiMmEzZDRh
OWVmZDU4ZTg2NTRjOTFmY2U4NmVhZmQiCisKK2ljb252LWxpdGVAXjAuNC4xMywgaWNvbnYtbGl0
ZUB+MC40LjEzOgorICB2ZXJzaW9uICIwLjQuMTMiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL2ljb252LWxpdGUvLS9pY29udi1saXRlLTAuNC4xMy50Z3ojMWY4OGFi
YTRhYjBiMTUwOGU4MzEyYWNjMzkzNDVmMzZlOTkyZTJmMiIKKworaWNzcy1yZXBsYWNlLXN5bWJv
bHNAXjEuMC4yOgorICB2ZXJzaW9uICIxLjAuMiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vaWNzcy1yZXBsYWNlLXN5bWJvbHMvLS9pY3NzLXJlcGxhY2Utc3ltYm9s
cy0xLjAuMi50Z3ojY2IwYjYwNTRlYjNhZjZlZGM5YWIxZDYyZDAxOTMzZTJkNGM4YmZhNSIKKwor
aWVlZTc1NEBeMS4xLjQ6CisgIHZlcnNpb24gIjEuMS44IgorICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9pZWVlNzU0Ly0vaWVlZTc1NC0xLjEuOC50Z3ojYmUzM2Q0MGFj
MTBlZjE5MjY3MDFmNmYwOGEyZDg2ZmJmZDFhZDNlNCIKKworaWdub3JlQF4zLjEuNToKKyAgdmVy
c2lvbiAiMy4yLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2ln
bm9yZS8tL2lnbm9yZS0zLjIuMC50Z3ojOGQ4OGYwM2MzMDAyYTBhYzUyMTE0ZGIyNWQyYzY3M2Iw
YmYxZTQzNSIKKworaW1tdXRhYmxlQF4zLjcuNjoKKyAgdmVyc2lvbiAiMy44LjEiCisgIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2ltbXV0YWJsZS8tL2ltbXV0YWJsZS0z
LjguMS50Z3ojMjAwODA3ZjExYWIwZjcyNzEwZWE0ODU1NDJkZTA4ODA3NWY2OGNkMiIKKworaW11
cm11cmhhc2hAXjAuMS40OgorICB2ZXJzaW9uICIwLjEuNCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vaW11cm11cmhhc2gvLS9pbXVybXVyaGFzaC0wLjEuNC50Z3oj
OTIxOGI5YjJiOTI4YTIzOGIxM2RjNGZiNmI2ZDU3NmYyMzE0NTNlYSIKKworaW5kZXhlcy1vZkBe
MS4wLjE6CisgIHZlcnNpb24gIjEuMC4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9pbmRleGVzLW9mLy0vaW5kZXhlcy1vZi0xLjAuMS50Z3ojZjMwZjcxNmM4ZTJi
ZDM0NmM3YjY3ZDNkZjM5MTU1NjZhN2MwNTYwNyIKKworaW5kZXhvZkAwLjAuMToKKyAgdmVyc2lv
biAiMC4wLjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2luZGV4
b2YvLS9pbmRleG9mLTAuMC4xLnRneiM4MmRjMzM2ZDIzMmI5MDYyMTc5ZDA1YWIzMjkzYTY2MDU5
ZmQ0MzVkIgorCitpbmZsaWdodEBeMS4wLjQ6CisgIHZlcnNpb24gIjEuMC41IgorICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pbmZsaWdodC8tL2luZmxpZ2h0LTEuMC41
LnRneiNkYjMyMDRjZDVhOWRlMmU2Y2Q4OTBiODVjNmUyZjY2YmNmNGY2MjBhIgorICBkZXBlbmRl
bmNpZXM6CisgICAgb25jZSAiXjEuMy4wIgorICAgIHdyYXBweSAiMSIKKworaW5oZXJpdHNAXjIu
MC4xLCBpbmhlcml0c0B+Mi4wLjAsIGluaGVyaXRzQH4yLjAuMSwgaW5oZXJpdHNAMjoKKyAgdmVy
c2lvbiAiMi4wLjMiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lu
aGVyaXRzLy0vaW5oZXJpdHMtMi4wLjMudGd6IzYzM2MyYzgzZTNkYTQyYTUwMmY1MjQ2NjAyMjQ4
MGY0MjA4MjYxZGUiCisKK2luaGVyaXRzQDIuMC4xOgorICB2ZXJzaW9uICIyLjAuMSIKKyAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaW5oZXJpdHMvLS9pbmhlcml0cy0y
LjAuMS50Z3ojYjE3ZDA4ZDMyNmI0NDIzZTU2OGVmZjcxOWY5MWIwYjFjYmRmNjlmMSIKKworaW5p
QH4xLjMuMDoKKyAgdmVyc2lvbiAiMS4zLjQiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL2luaS8tL2luaS0xLjMuNC50Z3ojMDUzN2NiNzlkYWY1OWI1OWExYTUxN2Rm
ZjcwNmM4NmVjMDM5MTYyZSIKKworaW5xdWlyZXJAXjAuMTIuMDoKKyAgdmVyc2lvbiAiMC4xMi4w
IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pbnF1aXJlci8tL2lu
cXVpcmVyLTAuMTIuMC50Z3ojMWVmMmJmZDYzNTA0ZGYwYmM3NTc4NWZmZjhjMmM0MWRmMTJmMDc3
ZSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGFuc2ktZXNjYXBlcyAiXjEuMS4wIgorICAgIGFuc2kt
cmVnZXggIl4yLjAuMCIKKyAgICBjaGFsayAiXjEuMC4wIgorICAgIGNsaS1jdXJzb3IgIl4xLjAu
MSIKKyAgICBjbGktd2lkdGggIl4yLjAuMCIKKyAgICBmaWd1cmVzICJeMS4zLjUiCisgICAgbG9k
YXNoICJeNC4zLjAiCisgICAgcmVhZGxpbmUyICJeMS4wLjEiCisgICAgcnVuLWFzeW5jICJeMC4x
LjAiCisgICAgcngtbGl0ZSAiXjMuMS4yIgorICAgIHN0cmluZy13aWR0aCAiXjEuMC4xIgorICAg
IHN0cmlwLWFuc2kgIl4zLjAuMCIKKyAgICB0aHJvdWdoICJeMi4zLjYiCisKK2ludGVycHJldEBe
MC42LjQ6CisgIHZlcnNpb24gIjAuNi42IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9pbnRlcnByZXQvLS9pbnRlcnByZXQtMC42LjYudGd6I2ZlY2Q3YTE4ZTdjZTVj
YTZhYmZiOTUzZTFmODYyMTNhNDlmMTYyNWIiCisKK2ludmFyaWFudEBeMi4wLjAsIGludmFyaWFu
dEBeMi4yLjA6CisgIHZlcnNpb24gIjIuMi4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9pbnZhcmlhbnQvLS9pbnZhcmlhbnQtMi4yLjEudGd6I2IwOTcwMTA1NDc2
NjhjN2UzMzcwMjhlYmU4MTZlYmUzNmM4YThkNTQiCisgIGRlcGVuZGVuY2llczoKKyAgICBsb29z
ZS1lbnZpZnkgIl4xLjAuMCIKKworaW52ZXJ0LWt2QF4xLjAuMDoKKyAgdmVyc2lvbiAiMS4wLjAi
CisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2ludmVydC1rdi8tL2lu
dmVydC1rdi0xLjAuMC50Z3ojMTA0YThlNGFhY2E2ZDNkOGNkMTU3YThlZjhiZmFiMmQ3YTNmZmRi
NiIKKworaXBhZGRyLmpzQDEuMS4xOgorICB2ZXJzaW9uICIxLjEuMSIKKyAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXBhZGRyLmpzLy0vaXBhZGRyLmpzLTEuMS4xLnRn
eiNjNzkxZDk1ZjUyYjI5YzEyNDdkNWRmODBhZGEzOWI4YTczNjQ3MjMwIgorCitpcy1hYnNvbHV0
ZS11cmxAXjIuMC4wOgorICB2ZXJzaW9uICIyLjAuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vaXMtYWJzb2x1dGUtdXJsLy0vaXMtYWJzb2x1dGUtdXJsLTIuMC4w
LnRneiM5YzRiMjBiMGU1YzBjYmVmOWE0NzlhMzY3ZWRlNmY5OTE2NzlmMzU5IgorCitpcy1hcnJh
eWlzaEBeMC4yLjE6CisgIHZlcnNpb24gIjAuMi4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9pcy1hcnJheWlzaC8tL2lzLWFycmF5aXNoLTAuMi4xLnRneiM3N2M5
OTg0MDUyN2FhOGVjYjFhOGJhNjk3YjgwNjQ1YTdhOTI2YTlkIgorCitpcy1iaW5hcnktcGF0aEBe
MS4wLjA6CisgIHZlcnNpb24gIjEuMC4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9pcy1iaW5hcnktcGF0aC8tL2lzLWJpbmFyeS1wYXRoLTEuMC4xLnRneiM3NWYx
NjY0MmI0ODBmMTg3YTcxMWM4MTQxNjFmZDNhNGE3NjU1ODk4IgorICBkZXBlbmRlbmNpZXM6Cisg
ICAgYmluYXJ5LWV4dGVuc2lvbnMgIl4xLjAuMCIKKworaXMtYnVmZmVyQF4xLjAuMjoKKyAgdmVy
c2lvbiAiMS4xLjQiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lz
LWJ1ZmZlci8tL2lzLWJ1ZmZlci0xLjEuNC50Z3ojY2ZjODZjY2Q1ZGM1YTUyZmE4MDQ4OTExMWM2
OTIwYzQ1N2UyZDk4YiIKKworaXMtYnVpbHRpbi1tb2R1bGVAXjEuMC4wOgorICB2ZXJzaW9uICIx
LjAuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXMtYnVpbHRp
bi1tb2R1bGUvLS9pcy1idWlsdGluLW1vZHVsZS0xLjAuMC50Z3ojNTQwNTcyZDM0ZjdhYzMxMTlm
OGY3NmMzMGNiYzFiMWUwMzdhZmZiZSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGJ1aWx0aW4tbW9k
dWxlcyAiXjEuMC4wIgorCitpcy1jYWxsYWJsZUBeMS4xLjEsIGlzLWNhbGxhYmxlQF4xLjEuMzoK
KyAgdmVyc2lvbiAiMS4xLjMiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL2lzLWNhbGxhYmxlLy0vaXMtY2FsbGFibGUtMS4xLjMudGd6Izg2ZWI3NTM5MjgwNWRkYzMz
YWY3MWM5MmEwZWVkZjc0ZWU3NjA0YjIiCisKK2lzLWRhdGUtb2JqZWN0QF4xLjAuMToKKyAgdmVy
c2lvbiAiMS4wLjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lz
LWRhdGUtb2JqZWN0Ly0vaXMtZGF0ZS1vYmplY3QtMS4wLjEudGd6IzlhYTIwZWI2YWVlYmJmZjc3
ZmJkMzNlNzRjYTAxYjMzNTgxZDNhMTYiCisKK2lzLWRvdGZpbGVAXjEuMC4wOgorICB2ZXJzaW9u
ICIxLjAuMiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXMtZG90
ZmlsZS8tL2lzLWRvdGZpbGUtMS4wLjIudGd6IzJjMTMyMzgzZjM5MTk5ZjhlZGMyNjhjYTAxYjli
MDA3ZDIwNWNjNGQiCisKK2lzLWVxdWFsLXNoYWxsb3dAXjAuMS4zOgorICB2ZXJzaW9uICIwLjEu
MyIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXMtZXF1YWwtc2hh
bGxvdy8tL2lzLWVxdWFsLXNoYWxsb3ctMC4xLjMudGd6IzIyMzgwOThmYzIyMWRlMGJjZmE1ZDll
YWM0YzQ1ZDYzOGFhMWM1MzQiCisgIGRlcGVuZGVuY2llczoKKyAgICBpcy1wcmltaXRpdmUgIl4y
LjAuMCIKKworaXMtZXh0ZW5kYWJsZUBeMC4xLjE6CisgIHZlcnNpb24gIjAuMS4xIgorICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy1leHRlbmRhYmxlLy0vaXMtZXh0
ZW5kYWJsZS0wLjEuMS50Z3ojNjJiMTEwZTI4OWE0NzE0MThlM2VjMzZhNjE3ZDQ3MmUzMDFkZmM4
OSIKKworaXMtZXh0Z2xvYkBeMS4wLjA6CisgIHZlcnNpb24gIjEuMC4wIgorICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy1leHRnbG9iLy0vaXMtZXh0Z2xvYi0xLjAu
MC50Z3ojYWM0NjgxNzdjNDk0MzQwNWEwOTJmYzhmMjk3NjBjNmZmYzYyMDZjMCIKKworaXMtZXh0
Z2xvYkBeMi4wLjA6CisgIHZlcnNpb24gIjIuMC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9pcy1leHRnbG9iLy0vaXMtZXh0Z2xvYi0yLjAuMC50Z3ojYTliOTJj
MWFlMmQ3YTk3NWFkMzA3YmUwNzIyMDQ5YzdlNGVhMmYxMyIKKworaXMtZmluaXRlQF4xLjAuMDoK
KyAgdmVyc2lvbiAiMS4wLjIiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL2lzLWZpbml0ZS8tL2lzLWZpbml0ZS0xLjAuMi50Z3ojY2M2Njc3Njk1NjAyYmU1NTBlZjEx
ZThiNGFhNjMwNTM0MmI2ZDBhYSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIG51bWJlci1pcy1uYW4g
Il4xLjAuMCIKKworaXMtZnVsbHdpZHRoLWNvZGUtcG9pbnRAXjEuMC4wOgorICB2ZXJzaW9uICIx
LjAuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXMtZnVsbHdp
ZHRoLWNvZGUtcG9pbnQvLS9pcy1mdWxsd2lkdGgtY29kZS1wb2ludC0xLjAuMC50Z3ojZWY5ZTMx
Mzg2ZjAzMWE3ZjBkNjQzYWY4MmZkZTUwYzQ1N2VmMDBjYiIKKyAgZGVwZW5kZW5jaWVzOgorICAg
IG51bWJlci1pcy1uYW4gIl4xLjAuMCIKKworaXMtZ2xvYkBeMi4wLjAsIGlzLWdsb2JAXjIuMC4x
OgorICB2ZXJzaW9uICIyLjAuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vaXMtZ2xvYi8tL2lzLWdsb2ItMi4wLjEudGd6I2QwOTZmOTI2YTNkZWQ1NjAwZjNmZGZk
OTExOThjYjA4ODhjMmQ4NjMiCisgIGRlcGVuZGVuY2llczoKKyAgICBpcy1leHRnbG9iICJeMS4w
LjAiCisKK2lzLWdsb2JAXjMuMC4wOgorICB2ZXJzaW9uICIzLjAuMCIKKyAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXMtZ2xvYi8tL2lzLWdsb2ItMy4wLjAudGd6I2U0
MzNjMjIyZGI5ZDc3ODQ0MDg0ZDcyZGIxZWZmMDQ3ODQ1OTg1YzEiCisgIGRlcGVuZGVuY2llczoK
KyAgICBpcy1leHRnbG9iICJeMi4wLjAiCisKK2lzLWxvd2VyLWNhc2VAXjEuMS4wOgorICB2ZXJz
aW9uICIxLjEuMyIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXMt
bG93ZXItY2FzZS8tL2lzLWxvd2VyLWNhc2UtMS4xLjMudGd6IzdlMTQ3YmU0NzY4ZGM0NjZkYjNi
ZmIyMWNjNjBiMzFlNmFkNjkzOTMiCisgIGRlcGVuZGVuY2llczoKKyAgICBsb3dlci1jYXNlICJe
MS4xLjAiCisKK2lzLW15LWpzb24tdmFsaWRAXjIuMTAuMCwgaXMtbXktanNvbi12YWxpZEBeMi4x
Mi40OgorICB2ZXJzaW9uICIyLjE1LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL2lzLW15LWpzb24tdmFsaWQvLS9pcy1teS1qc29uLXZhbGlkLTIuMTUuMC50Z3oj
OTM2ZWRkYTNjYTNjMjExZmQ5OGYzYjJkM2UwOGRhNDNmN2IyOTE1YiIKKyAgZGVwZW5kZW5jaWVz
OgorICAgIGdlbmVyYXRlLWZ1bmN0aW9uICJeMi4wLjAiCisgICAgZ2VuZXJhdGUtb2JqZWN0LXBy
b3BlcnR5ICJeMS4xLjAiCisgICAganNvbnBvaW50ZXIgIl40LjAuMCIKKyAgICB4dGVuZCAiXjQu
MC4wIgorCitpcy1udW1iZXJAXjIuMC4yLCBpcy1udW1iZXJAXjIuMS4wOgorICB2ZXJzaW9uICIy
LjEuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXMtbnVtYmVy
Ly0vaXMtbnVtYmVyLTIuMS4wLnRneiMwMWZjYmJiMzkzNDYzYTU0OGYyZjQ2NmNjZTE2ZGVjZTQ5
ZGI5MDhmIgorICBkZXBlbmRlbmNpZXM6CisgICAga2luZC1vZiAiXjMuMC4yIgorCitpcy1wYXRo
LWN3ZEBeMS4wLjA6CisgIHZlcnNpb24gIjEuMC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9pcy1wYXRoLWN3ZC8tL2lzLXBhdGgtY3dkLTEuMC4wLnRneiNkMjI1
ZWMyMzEzMmU4OWVkZDM4ZmRhNzY3NDcyZTYyZTY1ZjExMDZkIgorCitpcy1wYXRoLWluLWN3ZEBe
MS4wLjA6CisgIHZlcnNpb24gIjEuMC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9pcy1wYXRoLWluLWN3ZC8tL2lzLXBhdGgtaW4tY3dkLTEuMC4wLnRneiM2NDc3
NTgyYjgyMTRkNjAyMzQ2MDk0NTY3MDAzYmU4YTllYWMwNGRjIgorICBkZXBlbmRlbmNpZXM6Cisg
ICAgaXMtcGF0aC1pbnNpZGUgIl4xLjAuMCIKKworaXMtcGF0aC1pbnNpZGVAXjEuMC4wOgorICB2
ZXJzaW9uICIxLjAuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
aXMtcGF0aC1pbnNpZGUvLS9pcy1wYXRoLWluc2lkZS0xLjAuMC50Z3ojZmMwNmU1YTE2ODNmYmRh
MTNkZTY2N2FmZjcxN2JiYzEwYTQ4ZjM3ZiIKKyAgZGVwZW5kZW5jaWVzOgorICAgIHBhdGgtaXMt
aW5zaWRlICJeMS4wLjEiCisKK2lzLXBsYWluLW9iakBeMS4wLjA6CisgIHZlcnNpb24gIjEuMS4w
IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy1wbGFpbi1vYmov
LS9pcy1wbGFpbi1vYmotMS4xLjAudGd6IzcxYTUwYzg0MjlkZmNhNzczYzkyYTM5MGE0YTAzYjM5
ZmNkNTFkM2UiCisKK2lzLXBvc2l4LWJyYWNrZXRAXjAuMS4wOgorICB2ZXJzaW9uICIwLjEuMSIK
KyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXMtcG9zaXgtYnJhY2tl
dC8tL2lzLXBvc2l4LWJyYWNrZXQtMC4xLjEudGd6IzMzMzRkYzc5Nzc0MzY4ZTkyZjAxNmU2ZmJj
MGE4OGY1Y2Q2ZTZiYzQiCisKK2lzLXByaW1pdGl2ZUBeMi4wLjA6CisgIHZlcnNpb24gIjIuMC4w
IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy1wcmltaXRpdmUv
LS9pcy1wcmltaXRpdmUtMi4wLjAudGd6IzIwN2JhYjkxNjM4NDk5YzA3YjJhZGYyNDBhNDFhODcy
MTAwMzQ1NzUiCisKK2lzLXByb3BlcnR5QF4xLjAuMDoKKyAgdmVyc2lvbiAiMS4wLjIiCisgIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lzLXByb3BlcnR5Ly0vaXMtcHJv
cGVydHktMS4wLjIudGd6IzU3ZmUxYzRlNDg0NzRlZGQ2NWIwOTkxMWYyNmIxY2Q0MDk1ZGRhODQi
CisKK2lzLXJlZ2V4QF4xLjAuMzoKKyAgdmVyc2lvbiAiMS4wLjMiCisgIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lzLXJlZ2V4Ly0vaXMtcmVnZXgtMS4wLjMudGd6IzBk
NTUxODJiZGRmOWYyZmRlMjc4MjIwYWVjM2E3NTY0MmM5MDg2MzciCisKK2lzLXJlc29sdmFibGVA
XjEuMC4wOgorICB2ZXJzaW9uICIxLjAuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vaXMtcmVzb2x2YWJsZS8tL2lzLXJlc29sdmFibGUtMS4wLjAudGd6IzhkZjU3
YzYxZWEyZTNjNTAxNDA4ZDEwMGZiMDEzY2Y4ZDZlMGNjNjIiCisgIGRlcGVuZGVuY2llczoKKyAg
ICB0cnlpdCAiXjEuMC4xIgorCitpcy1zdHJlYW1AXjEuMC4xOgorICB2ZXJzaW9uICIxLjEuMCIK
KyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXMtc3RyZWFtLy0vaXMt
c3RyZWFtLTEuMS4wLnRneiMxMmQ0YTNkZDRlNjhlMGI3OWNlYjhkYmM4NDE3M2FlODBkOTFjYTQ0
IgorCitpcy1zdWJzZXRAXjAuMS4xOgorICB2ZXJzaW9uICIwLjEuMSIKKyAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXMtc3Vic2V0Ly0vaXMtc3Vic2V0LTAuMS4xLnRn
eiM4YTU5MTE3ZDkzMmRlMWRlMDBmMjQ1ZmNkZDM5Y2U0M2YxZTkzOWE2IgorCitpcy1zdmdAXjIu
MC4wOgorICB2ZXJzaW9uICIyLjAuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vaXMtc3ZnLy0vaXMtc3ZnLTIuMC4xLnRneiNmOTNhYjNiZjFkNmJiY2EzMGU5NzUz
Y2QzNDg1YjEzMDBlZWJjMDEzIgorICBkZXBlbmRlbmNpZXM6CisgICAgaHRtbC1jb21tZW50LXJl
Z2V4ICJeMS4xLjAiCisKK2lzLXN5bWJvbEBeMS4wLjE6CisgIHZlcnNpb24gIjEuMC4xIgorICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy1zeW1ib2wvLS9pcy1zeW1i
b2wtMS4wLjEudGd6IzNjYzU5ZjAwMDI1MTk0YjZhYjJlMzhkYmFlNjY4OTI1NmI2NjA1NzIiCisK
K2lzLXR5cGVkYXJyYXlAfjEuMC4wOgorICB2ZXJzaW9uICIxLjAuMCIKKyAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXMtdHlwZWRhcnJheS8tL2lzLXR5cGVkYXJyYXkt
MS4wLjAudGd6I2U0NzljODA4NThkZjBjMWIxMWRkZGE2OTQwZjk2MDExZmNkYTRhOWEiCisKK2lz
LXVwcGVyLWNhc2VAXjEuMS4wOgorICB2ZXJzaW9uICIxLjEuMiIKKyAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXMtdXBwZXItY2FzZS8tL2lzLXVwcGVyLWNhc2UtMS4x
LjIudGd6IzhkMGIxZmE3ZTc5MzNhMWU1ODQ4MzYwMGVjN2Q5NjYxY2JhZjc1NmYiCisgIGRlcGVu
ZGVuY2llczoKKyAgICB1cHBlci1jYXNlICJeMS4xLjAiCisKK2lzLXV0ZjhAXjAuMi4wOgorICB2
ZXJzaW9uICIwLjIuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
aXMtdXRmOC8tL2lzLXV0ZjgtMC4yLjEudGd6IzRiMGRhMTQ0MjEwNGQxYjMzNjM0MGU4MDc5N2U4
NjVjZjM5ZjdkNzIiCisKK2lzYXJyYXlAXjEuMC4wLCBpc2FycmF5QH4xLjAuMCwgaXNhcnJheUAx
LjAuMDoKKyAgdmVyc2lvbiAiMS4wLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL2lzYXJyYXkvLS9pc2FycmF5LTEuMC4wLnRneiNiYjkzNWQ0ODU4MmNiYTE2OGMw
NjgzNDk1N2E1NGEzZTA3MTI0ZjExIgorCitpc2FycmF5QDAuMC4xOgorICB2ZXJzaW9uICIwLjAu
MSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXNhcnJheS8tL2lz
YXJyYXktMC4wLjEudGd6IzhhMThhY2ZjYTlhOGY0MTc3ZTA5YWJmYzYwMzg5MzliMDVkMWVlZGYi
CisKK2lzZXhlQF4xLjEuMToKKyAgdmVyc2lvbiAiMS4xLjIiCisgIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lzZXhlLy0vaXNleGUtMS4xLjIudGd6IzM2ZjNlMjJlNjA3
NTA5MjBmNWU3MjQxYTQ3NmE4YzZhNDIyNzVhZDAiCisKK2lzb2JqZWN0QF4yLjAuMDoKKyAgdmVy
c2lvbiAiMi4xLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lz
b2JqZWN0Ly0vaXNvYmplY3QtMi4xLjAudGd6I2YwNjU1NjEwOTZhM2YxZGEyZWY0NjI3MmY4MTVj
ODQwZDg3ZTBjODkiCisgIGRlcGVuZGVuY2llczoKKyAgICBpc2FycmF5ICIxLjAuMCIKKworaXNv
bW9ycGhpYy1mZXRjaEBeMi4xLjE6CisgIHZlcnNpb24gIjIuMi4xIgorICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pc29tb3JwaGljLWZldGNoLy0vaXNvbW9ycGhpYy1m
ZXRjaC0yLjIuMS50Z3ojNjExYWUxYWNmMTRmNWU4MWY3Mjk1MDc0NzI4MTlmZTk3MzM1NThhOSIK
KyAgZGVwZW5kZW5jaWVzOgorICAgIG5vZGUtZmV0Y2ggIl4xLjAuMSIKKyAgICB3aGF0d2ctZmV0
Y2ggIj49MC4xMC4wIgorCitpc3N0cmVhbUB+MC4xLjI6CisgIHZlcnNpb24gIjAuMS4yIgorICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pc3N0cmVhbS8tL2lzc3RyZWFt
LTAuMS4yLnRneiM0N2U2M2Y3YWY1NWFmYTZmOTJlMTUwMGU2OTBlYjhiODUyOWMwOTlhIgorCitp
c3RhbmJ1bC1hcGlAXjEuMC4wLWFwbGhhLjEwOgorICB2ZXJzaW9uICIxLjAuMC1hcGxoYS4xMCIK
KyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXN0YW5idWwtYXBpLy0v
aXN0YW5idWwtYXBpLTEuMC4wLWFwbGhhLjEwLnRneiM5MDJlZGY1Y2Y1NDA0ZTBlYmE3ZTAwZWY0
NjQwODQ4OGEwZDNlMzM3IgorICBkZXBlbmRlbmNpZXM6CisgICAgYXN5bmMgIjEueCIKKyAgICBj
bG9uZSAiXjEuMC4yIgorICAgIGZpbGVzZXQgIjAuMi54IgorICAgIGlzdGFuYnVsLWxpYi1jb3Zl
cmFnZSAiXjEuMC4wLWFscGhhIgorICAgIGlzdGFuYnVsLWxpYi1ob29rICJeMS4wLjAtYWxwaGEi
CisgICAgaXN0YW5idWwtbGliLWluc3RydW1lbnQgIl4xLjAuMC1hbHBoYSIKKyAgICBpc3RhbmJ1
bC1saWItcmVwb3J0ICJeMS4wLjAtYWxwaGEiCisgICAgaXN0YW5idWwtbGliLXNvdXJjZS1tYXBz
ICJeMS4wLjAtYWxwaGEiCisgICAgaXN0YW5idWwtcmVwb3J0cyAiXjEuMC4wLWFscGhhIgorICAg
IGpzLXlhbWwgIjMueCIKKyAgICBta2RpcnAgIjAuNS54IgorICAgIG9uY2UgIjEueCIKKworaXN0
YW5idWwtbGliLWNvdmVyYWdlQF4xLjAuMCwgaXN0YW5idWwtbGliLWNvdmVyYWdlQF4xLjAuMC1h
bHBoYSwgaXN0YW5idWwtbGliLWNvdmVyYWdlQF4xLjAuMC1hbHBoYS4wOgorICB2ZXJzaW9uICIx
LjAuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXN0YW5idWwt
bGliLWNvdmVyYWdlLy0vaXN0YW5idWwtbGliLWNvdmVyYWdlLTEuMC4wLnRneiNjM2Y5YjZkMjI2
ZGExMjQyNDA2NGNjZTg3ZmNlMGZiNTdmZGZhN2EyIgorCitpc3RhbmJ1bC1saWItaG9va0BeMS4w
LjAtYWxwaGE6CisgIHZlcnNpb24gIjEuMC4wLWFscGhhLjQiCisgIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lzdGFuYnVsLWxpYi1ob29rLy0vaXN0YW5idWwtbGliLWhv
b2stMS4wLjAtYWxwaGEuNC50Z3ojOGM1YmI5ZjZmYmQ4NTI2ZTBhZTZjZjYzOWFmMjgyNjY5MDZi
OTM4ZiIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGFwcGVuZC10cmFuc2Zvcm0gIl4wLjMuMCIKKwor
aXN0YW5idWwtbGliLWluc3RydW1lbnRAXjEuMC4wLWFscGhhLCBpc3RhbmJ1bC1saWItaW5zdHJ1
bWVudEBeMS4xLjE6CisgIHZlcnNpb24gIjEuMS4zIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9pc3RhbmJ1bC1saWItaW5zdHJ1bWVudC8tL2lzdGFuYnVsLWxpYi1p
bnN0cnVtZW50LTEuMS4zLnRneiM2NmQ1MzUzZDFmNTkyYjllMzRkMWNmOWFjZGE5YzNmMWFiNTA5
Njk2IgorICBkZXBlbmRlbmNpZXM6CisgICAgYmFiZWwtZ2VuZXJhdG9yICJeNi4xMS4zIgorICAg
IGJhYmVsLXRlbXBsYXRlICJeNi45LjAiCisgICAgYmFiZWwtdHJhdmVyc2UgIl42LjkuMCIKKyAg
ICBiYWJlbC10eXBlcyAiXjYuMTAuMiIKKyAgICBiYWJ5bG9uICJeNi44LjEiCisgICAgaXN0YW5i
dWwtbGliLWNvdmVyYWdlICJeMS4wLjAiCisKK2lzdGFuYnVsLWxpYi1yZXBvcnRAXjEuMC4wLWFs
cGhhOgorICB2ZXJzaW9uICIxLjAuMC1hbHBoYS4zIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9pc3RhbmJ1bC1saWItcmVwb3J0Ly0vaXN0YW5idWwtbGliLXJlcG9y
dC0xLjAuMC1hbHBoYS4zLnRneiMzMmQ1ZjZlYzdmMzNjYTNhNjAyMjA5ZTI3OGIyZTZmZjE0MzQ5
OGFmIgorICBkZXBlbmRlbmNpZXM6CisgICAgYXN5bmMgIl4xLjQuMiIKKyAgICBpc3RhbmJ1bC1s
aWItY292ZXJhZ2UgIl4xLjAuMC1hbHBoYSIKKyAgICBta2RpcnAgIl4wLjUuMSIKKyAgICBwYXRo
LXBhcnNlICJeMS4wLjUiCisgICAgcmltcmFmICJeMi40LjMiCisgICAgc3VwcG9ydHMtY29sb3Ig
Il4zLjEuMiIKKworaXN0YW5idWwtbGliLXNvdXJjZS1tYXBzQF4xLjAuMC1hbHBoYToKKyAgdmVy
c2lvbiAiMS4wLjIiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lz
dGFuYnVsLWxpYi1zb3VyY2UtbWFwcy8tL2lzdGFuYnVsLWxpYi1zb3VyY2UtbWFwcy0xLjAuMi50
Z3ojOWU5MWIwZTVhZTZlZDIwM2Y2N2M2OWEzNGU2ZTk4YjEwYmI2OWE0OSIKKyAgZGVwZW5kZW5j
aWVzOgorICAgIGlzdGFuYnVsLWxpYi1jb3ZlcmFnZSAiXjEuMC4wLWFscGhhLjAiCisgICAgbWtk
aXJwICJeMC41LjEiCisgICAgcmltcmFmICJeMi40LjQiCisgICAgc291cmNlLW1hcCAiXjAuNS4z
IgorCitpc3RhbmJ1bC1yZXBvcnRzQF4xLjAuMC1hbHBoYToKKyAgdmVyc2lvbiAiMS4wLjAtYWxw
aGEuOCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXN0YW5idWwt
cmVwb3J0cy8tL2lzdGFuYnVsLXJlcG9ydHMtMS4wLjAtYWxwaGEuOC50Z3ojMDk0ODMwZjRjN2Yz
ZDQ4MmU0NjZhYWM4YWJkYTI0OTVmOWFlNDY4OSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGhhbmRs
ZWJhcnMgIl40LjAuMyIKKworaXN0YW5idWxAXjAuNC41OgorICB2ZXJzaW9uICIwLjQuNSIKKyAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXN0YW5idWwvLS9pc3RhbmJ1
bC0wLjQuNS50Z3ojNjVjN2Q3M2Q0YzRkYTg0ZDRmM2FjMzEwYjkxOGZiMGI4MDMzNzMzYiIKKyAg
ZGVwZW5kZW5jaWVzOgorICAgIGFiYnJldiAiMS4wLngiCisgICAgYXN5bmMgIjEueCIKKyAgICBl
c2NvZGVnZW4gIjEuOC54IgorICAgIGVzcHJpbWEgIjIuNy54IgorICAgIGdsb2IgIl41LjAuMTUi
CisgICAgaGFuZGxlYmFycyAiXjQuMC4xIgorICAgIGpzLXlhbWwgIjMueCIKKyAgICBta2RpcnAg
IjAuNS54IgorICAgIG5vcHQgIjMueCIKKyAgICBvbmNlICIxLngiCisgICAgcmVzb2x2ZSAiMS4x
LngiCisgICAgc3VwcG9ydHMtY29sb3IgIl4zLjEuMCIKKyAgICB3aGljaCAiXjEuMS4xIgorICAg
IHdvcmR3cmFwICJeMS4wLjAiCisKK2phc21pbmUtY2hlY2tAXjAuMS40OgorICB2ZXJzaW9uICIw
LjEuNSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vamFzbWluZS1j
aGVjay8tL2phc21pbmUtY2hlY2stMC4xLjUudGd6I2RiYWQ3ZWVjNTYyNjFjNGIzZDE3NWFkYTU1
ZmU1OWIwOWFjOWU0MTUiCisgIGRlcGVuZGVuY2llczoKKyAgICB0ZXN0Y2hlY2sgIl4wLjEuMCIK
KworamVzdC1jaGFuZ2VkLWZpbGVzQF4xNS4wLjA6CisgIHZlcnNpb24gIjE1LjAuMCIKKyAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vamVzdC1jaGFuZ2VkLWZpbGVzLy0v
amVzdC1jaGFuZ2VkLWZpbGVzLTE1LjAuMC50Z3ojM2FjOTlkOTdkYzRhYzA0NWFkNGFkYWU4ZDk2
N2NjMTMxNzM4MjU3MSIKKworamVzdC1jbGlAXjE1LjEuMToKKyAgdmVyc2lvbiAiMTUuMS4xIgor
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9qZXN0LWNsaS8tL2plc3Qt
Y2xpLTE1LjEuMS50Z3ojNTNmMjcxMjgxZjkwZDNiNDA0M2VjYTljZTlhZjY5ZGQwNGJiZGEzZSIK
KyAgZGVwZW5kZW5jaWVzOgorICAgIGFuc2ktZXNjYXBlcyAiXjEuNC4wIgorICAgIGNhbGxzaXRl
cyAiXjIuMC4wIgorICAgIGNoYWxrICJeMS4xLjEiCisgICAgZ3JhY2VmdWwtZnMgIl40LjEuNiIK
KyAgICBpc3RhbmJ1bC1hcGkgIl4xLjAuMC1hcGxoYS4xMCIKKyAgICBpc3RhbmJ1bC1saWItY292
ZXJhZ2UgIl4xLjAuMCIKKyAgICBpc3RhbmJ1bC1saWItaW5zdHJ1bWVudCAiXjEuMS4xIgorICAg
IGplc3QtY2hhbmdlZC1maWxlcyAiXjE1LjAuMCIKKyAgICBqZXN0LWNvbmZpZyAiXjE1LjEuMSIK
KyAgICBqZXN0LWVudmlyb25tZW50LWpzZG9tICJeMTUuMS4xIgorICAgIGplc3QtZmlsZS1leGlz
dHMgIl4xNS4wLjAiCisgICAgamVzdC1oYXN0ZS1tYXAgIl4xNS4wLjEiCisgICAgamVzdC1qYXNt
aW5lMiAiXjE1LjEuMSIKKyAgICBqZXN0LW1vY2sgIl4xNS4wLjAiCisgICAgamVzdC1yZXNvbHZl
ICJeMTUuMC4xIgorICAgIGplc3QtcmVzb2x2ZS1kZXBlbmRlbmNpZXMgIl4xNS4wLjEiCisgICAg
amVzdC1ydW50aW1lICJeMTUuMS4xIgorICAgIGplc3Qtc25hcHNob3QgIl4xNS4xLjEiCisgICAg
amVzdC11dGlsICJeMTUuMS4xIgorICAgIGpzb24tc3RhYmxlLXN0cmluZ2lmeSAiXjEuMC4wIgor
ICAgIG5vZGUtbm90aWZpZXIgIl40LjYuMSIKKyAgICBzYW5lICJ+MS40LjEiCisgICAgd2hpY2gg
Il4xLjEuMSIKKyAgICB3b3JrZXItZmFybSAiXjEuMy4xIgorICAgIHlhcmdzICJeNS4wLjAiCisK
K2plc3QtY29uZmlnQF4xNS4xLjE6CisgIHZlcnNpb24gIjE1LjEuMSIKKyAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vamVzdC1jb25maWcvLS9qZXN0LWNvbmZpZy0xNS4x
LjEudGd6I2FiZGJlNWI0YTQ5YTQwNGQwNDc1NGQ0MmQ3ZDg4Yjk0ZTU4MDA5ZjciCisgIGRlcGVu
ZGVuY2llczoKKyAgICBjaGFsayAiXjEuMS4xIgorICAgIGlzdGFuYnVsICJeMC40LjUiCisgICAg
amVzdC1lbnZpcm9ubWVudC1qc2RvbSAiXjE1LjEuMSIKKyAgICBqZXN0LWVudmlyb25tZW50LW5v
ZGUgIl4xNS4xLjEiCisgICAgamVzdC1qYXNtaW5lMiAiXjE1LjEuMSIKKyAgICBqZXN0LW1vY2sg
Il4xNS4wLjAiCisgICAgamVzdC1yZXNvbHZlICJeMTUuMC4xIgorICAgIGplc3QtdXRpbCAiXjE1
LjEuMSIKKyAgICBqc29uLXN0YWJsZS1zdHJpbmdpZnkgIl4xLjAuMCIKKworamVzdC1kaWZmQF4x
NS4xLjA6CisgIHZlcnNpb24gIjE1LjEuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vamVzdC1kaWZmLy0vamVzdC1kaWZmLTE1LjEuMC50Z3ojYmRhNDBhZDc3YzZi
ZWVjMWU2YjhiNWU0NmUzYmJhZWQ2ZTgxYzlmNCIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGNoYWxr
ICJeMS4xLjMiCisgICAgZGlmZiAiXjMuMC4wIgorICAgIGplc3QtbWF0Y2hlci11dGlscyAiXjE1
LjEuMCIKKyAgICBwcmV0dHktZm9ybWF0ICJeMy43LjAiCisKK2plc3QtZW52aXJvbm1lbnQtanNk
b21AXjE1LjEuMToKKyAgdmVyc2lvbiAiMTUuMS4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9qZXN0LWVudmlyb25tZW50LWpzZG9tLy0vamVzdC1lbnZpcm9ubWVu
dC1qc2RvbS0xNS4xLjEudGd6I2YwMzY4YzEzZThlMGI4MWFkYWQxMjNhMDUxYjk0Mjk0MzM4Yjk3
ZTAiCisgIGRlcGVuZGVuY2llczoKKyAgICBqZXN0LXV0aWwgIl4xNS4xLjEiCisgICAganNkb20g
Il45LjQuMCIKKworamVzdC1lbnZpcm9ubWVudC1ub2RlQF4xNS4xLjE6CisgIHZlcnNpb24gIjE1
LjEuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vamVzdC1lbnZp
cm9ubWVudC1ub2RlLy0vamVzdC1lbnZpcm9ubWVudC1ub2RlLTE1LjEuMS50Z3ojN2E4ZDQ4Njhl
MDI3ZTVkMTYwMjY0NjhlMjQ4ZGQ1OTQ2ZmU0M2MwNCIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGpl
c3QtdXRpbCAiXjE1LjEuMSIKKworamVzdC1maWxlLWV4aXN0c0BeMTUuMC4wOgorICB2ZXJzaW9u
ICIxNS4wLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2plc3Qt
ZmlsZS1leGlzdHMvLS9qZXN0LWZpbGUtZXhpc3RzLTE1LjAuMC50Z3ojYjdmZWZkZDNmNGIyMjdj
YjY4NmJiMTU2ZWNjNzY2MWVlNjkzNWE4OCIKKworamVzdC1oYXN0ZS1tYXBAXjE1LjAuMToKKyAg
dmVyc2lvbiAiMTUuMC4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9qZXN0LWhhc3RlLW1hcC8tL2plc3QtaGFzdGUtbWFwLTE1LjAuMS50Z3ojMWQxYzM0MmZhNmY2
ZDYyZDliYzJhZjc2NDI4ZDJlMjBmNzRhNDRkMyIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGZiLXdh
dGNobWFuICJeMS45LjAiCisgICAgZ3JhY2VmdWwtZnMgIl40LjEuNiIKKyAgICBtdWx0aW1hdGNo
ICJeMi4xLjAiCisgICAgd29ya2VyLWZhcm0gIl4xLjMuMSIKKworamVzdC1qYXNtaW5lMkBeMTUu
MS4xOgorICB2ZXJzaW9uICIxNS4xLjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL2plc3QtamFzbWluZTIvLS9qZXN0LWphc21pbmUyLTE1LjEuMS50Z3ojY2FjOGIw
MTZhYjZjZTE2ZDk1YjI5MTg3NTc3M2MyNDk0YTFiNDY3MiIKKyAgZGVwZW5kZW5jaWVzOgorICAg
IGdyYWNlZnVsLWZzICJeNC4xLjYiCisgICAgamFzbWluZS1jaGVjayAiXjAuMS40IgorICAgIGpl
c3QtbWF0Y2hlcnMgIl4xNS4xLjEiCisgICAgamVzdC1zbmFwc2hvdCAiXjE1LjEuMSIKKyAgICBq
ZXN0LXV0aWwgIl4xNS4xLjEiCisKK2plc3QtbWF0Y2hlci11dGlsc0BeMTUuMS4wOgorICB2ZXJz
aW9uICIxNS4xLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2pl
c3QtbWF0Y2hlci11dGlscy8tL2plc3QtbWF0Y2hlci11dGlscy0xNS4xLjAudGd6IzJjNTA2YWI5
ZjM5NmQyODZhZmE3NDg3MmYyYTNhZmUzZmY0NTQ5ODYiCisgIGRlcGVuZGVuY2llczoKKyAgICBj
aGFsayAiXjEuMS4zIgorCitqZXN0LW1hdGNoZXJzQF4xNS4xLjE6CisgIHZlcnNpb24gIjE1LjEu
MSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vamVzdC1tYXRjaGVy
cy8tL2plc3QtbWF0Y2hlcnMtMTUuMS4xLnRneiNmYWZmNTBhY2JiZjk3NDMzMjNlYzIyNzBhMjQ3
NDNjYjU5ZDYzOGYwIgorICBkZXBlbmRlbmNpZXM6CisgICAgamVzdC1kaWZmICJeMTUuMS4wIgor
ICAgIGplc3QtbWF0Y2hlci11dGlscyAiXjE1LjEuMCIKKyAgICBqZXN0LXV0aWwgIl4xNS4xLjEi
CisKK2plc3QtbW9ja0BeMTUuMC4wOgorICB2ZXJzaW9uICIxNS4wLjAiCisgIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2plc3QtbW9jay8tL2plc3QtbW9jay0xNS4wLjAu
dGd6I2I2NjM5Njk5ZWIwZjAyMWFhMzY0ODgwMzQzMmViZDk1MGY3NWRjMDIiCisKK2plc3QtcmVz
b2x2ZS1kZXBlbmRlbmNpZXNAXjE1LjAuMToKKyAgdmVyc2lvbiAiMTUuMC4xIgorICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9qZXN0LXJlc29sdmUtZGVwZW5kZW5jaWVz
Ly0vamVzdC1yZXNvbHZlLWRlcGVuZGVuY2llcy0xNS4wLjEudGd6IzQzZWJjNjliN2Q4MWQyY2Rj
NzA0NzRkNGJmNjM0MzA0YjA2ZWE0MTEiCisgIGRlcGVuZGVuY2llczoKKyAgICBqZXN0LWZpbGUt
ZXhpc3RzICJeMTUuMC4wIgorICAgIGplc3QtcmVzb2x2ZSAiXjE1LjAuMSIKKworamVzdC1yZXNv
bHZlQF4xNS4wLjE6CisgIHZlcnNpb24gIjE1LjAuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vamVzdC1yZXNvbHZlLy0vamVzdC1yZXNvbHZlLTE1LjAuMS50Z3oj
MThhMzJkNWViZmI3ODgzYzJlYWMxNjgzMDkxN2EzN2M1MTAyZmZhMSIKKyAgZGVwZW5kZW5jaWVz
OgorICAgIGJyb3dzZXItcmVzb2x2ZSAiXjEuMTEuMiIKKyAgICBqZXN0LWZpbGUtZXhpc3RzICJe
MTUuMC4wIgorICAgIGplc3QtaGFzdGUtbWFwICJeMTUuMC4xIgorICAgIHJlc29sdmUgIl4xLjEu
NiIKKworamVzdC1ydW50aW1lQF4xNS4xLjE6CisgIHZlcnNpb24gIjE1LjEuMSIKKyAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vamVzdC1ydW50aW1lLy0vamVzdC1ydW50
aW1lLTE1LjEuMS50Z3ojMzkwN2I4ZDQ2ZTVmZTIxYjQzOTVmM2Y4ODQwMzFmYWUyMjI2NzE5MSIK
KyAgZGVwZW5kZW5jaWVzOgorICAgIGJhYmVsLWNvcmUgIl42LjExLjQiCisgICAgYmFiZWwtamVz
dCAiXjE1LjAuMCIKKyAgICBiYWJlbC1wbHVnaW4taXN0YW5idWwgIl4yLjAuMCIKKyAgICBjaGFs
ayAiXjEuMS4zIgorICAgIGdyYWNlZnVsLWZzICJeNC4xLjYiCisgICAgamVzdC1jb25maWcgIl4x
NS4xLjEiCisgICAgamVzdC1maWxlLWV4aXN0cyAiXjE1LjAuMCIKKyAgICBqZXN0LWhhc3RlLW1h
cCAiXjE1LjAuMSIKKyAgICBqZXN0LW1vY2sgIl4xNS4wLjAiCisgICAgamVzdC1yZXNvbHZlICJe
MTUuMC4xIgorICAgIGplc3Qtc25hcHNob3QgIl4xNS4xLjEiCisgICAgamVzdC11dGlsICJeMTUu
MS4xIgorICAgIGpzb24tc3RhYmxlLXN0cmluZ2lmeSAiXjEuMC4wIgorICAgIG11bHRpbWF0Y2gg
Il4yLjEuMCIKKyAgICB5YXJncyAiXjUuMC4wIgorCitqZXN0LXNuYXBzaG90QF4xNS4xLjE6Cisg
IHZlcnNpb24gIjE1LjEuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vamVzdC1zbmFwc2hvdC8tL2plc3Qtc25hcHNob3QtMTUuMS4xLnRneiM5NWQwZDI3Mjk1MTJk
NjRkMWExYTQyNzI0Y2E1NTFjMWQyMDc5YTcxIgorICBkZXBlbmRlbmNpZXM6CisgICAgamVzdC1k
aWZmICJeMTUuMS4wIgorICAgIGplc3QtZmlsZS1leGlzdHMgIl4xNS4wLjAiCisgICAgamVzdC11
dGlsICJeMTUuMS4xIgorICAgIHByZXR0eS1mb3JtYXQgIl4zLjcuMCIKKworamVzdC11dGlsQF4x
NS4xLjE6CisgIHZlcnNpb24gIjE1LjEuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vamVzdC11dGlsLy0vamVzdC11dGlsLTE1LjEuMS50Z3ojNWUxOWVkYWIyYzU3
M2Y5OTJjOWQ0NWJhMTE4ZmE4ZDkwZjlkMjIwZSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGNoYWxr
ICJeMS4xLjEiCisgICAgZGlmZiAiXjMuMC4wIgorICAgIGdyYWNlZnVsLWZzICJeNC4xLjYiCisg
ICAgamVzdC1maWxlLWV4aXN0cyAiXjE1LjAuMCIKKyAgICBqZXN0LW1vY2sgIl4xNS4wLjAiCisg
ICAgbWtkaXJwICJeMC41LjEiCisKK2plc3RAMTUuMS4xOgorICB2ZXJzaW9uICIxNS4xLjEiCisg
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2plc3QvLS9qZXN0LTE1LjEu
MS50Z3ojZDAyOTcyYjNiYTI3MDY3Yjc3MTNlNDQyMTliNDczMWFhNDg1NDBhNiIKKyAgZGVwZW5k
ZW5jaWVzOgorICAgIGplc3QtY2xpICJeMTUuMS4xIgorCitqb2RpZDI1NTE5QF4xLjAuMDoKKyAg
dmVyc2lvbiAiMS4wLjIiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L2pvZGlkMjU1MTkvLS9qb2RpZDI1NTE5LTEuMC4yLnRneiMwNmQ0OTEyMjU1MDkzNDE5NDc3ZDQy
NTYzMzYwNmUwZTkwNzgyOTY3IgorICBkZXBlbmRlbmNpZXM6CisgICAganNibiAifjAuMS4wIgor
Citqcy1iYXNlNjRAXjIuMS45OgorICB2ZXJzaW9uICIyLjEuOSIKKyAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vanMtYmFzZTY0Ly0vanMtYmFzZTY0LTIuMS45LnRneiNm
MGU4MGFlMDM5YTRiZDY1NGI1ZjI4MWZjOTNmMDRhOTE0YTdmY2NlIgorCitqcy10b2tlbnNAXjEu
MC4xOgorICB2ZXJzaW9uICIxLjAuMyIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vanMtdG9rZW5zLy0vanMtdG9rZW5zLTEuMC4zLnRneiMxNGU1NmViNjhjOGYxYTky
YzQzZDU5ZjUwMTRlYzI5ZGMyMGYyYWUxIgorCitqcy10b2tlbnNAXjIuMC4wOgorICB2ZXJzaW9u
ICIyLjAuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vanMtdG9r
ZW5zLy0vanMtdG9rZW5zLTIuMC4wLnRneiM3OTkwM2Y1NTYzZWU3NzhjYzExNjJlNmRjZjFhMDAy
N2M5N2Y5Y2I1IgorCitqcy15YW1sQF4zLjUuMSwganMteWFtbEB+My42LjEsIGpzLXlhbWxAMy54
OgorICB2ZXJzaW9uICIzLjYuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vanMteWFtbC8tL2pzLXlhbWwtMy42LjEudGd6IzZlNWZlNjdkOGIyMDVjZTRkMjJmYWQw
NWI3NzgxZThkYWRjYzRiMzAiCisgIGRlcGVuZGVuY2llczoKKyAgICBhcmdwYXJzZSAiXjEuMC43
IgorICAgIGVzcHJpbWEgIl4yLjYuMCIKKworanNibkB+MC4xLjA6CisgIHZlcnNpb24gIjAuMS4w
IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9qc2JuLy0vanNibi0w
LjEuMC50Z3ojNjUwOTg3ZGEwZGQ3NGY0ZWJmNWExMTM3N2EyYWEyZDI3M2U5N2RmZCIKKworanNk
b21AXjcuMC4yOgorICB2ZXJzaW9uICI3LjIuMiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vanNkb20vLS9qc2RvbS03LjIuMi50Z3ojNDBiNDAyNzcwYzJiZGEyMzQ2
OTA5NmJlZTkxYWI2NzVlM2IxZmM2ZSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGFiYWIgIl4xLjAu
MCIKKyAgICBhY29ybiAiXjIuNC4wIgorICAgIGFjb3JuLWdsb2JhbHMgIl4xLjAuNCIKKyAgICBj
c3NvbSAiPj0gMC4zLjAgPCAwLjQuMCIKKyAgICBjc3NzdHlsZSAiPj0gMC4yLjI5IDwgMC4zLjAi
CisgICAgZXNjb2RlZ2VuICJeMS42LjEiCisgICAgbndtYXRjaGVyICI+PSAxLjMuNyA8IDIuMC4w
IgorICAgIHBhcnNlNSAiXjEuNS4xIgorICAgIHJlcXVlc3QgIl4yLjU1LjAiCisgICAgc2F4ICJe
MS4xLjQiCisgICAgc3ltYm9sLXRyZWUgIj49IDMuMS4wIDwgNC4wLjAiCisgICAgdG91Z2gtY29v
a2llICJeMi4yLjAiCisgICAgd2ViaWRsLWNvbnZlcnNpb25zICJeMi4wLjAiCisgICAgd2hhdHdn
LXVybC1jb21wYXQgIn4wLjYuNSIKKyAgICB4bWwtbmFtZS12YWxpZGF0b3IgIj49IDIuMC4xIDwg
My4wLjAiCisKK2pzZG9tQF45LjQuMDoKKyAgdmVyc2lvbiAiOS42LjAiCisgIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2pzZG9tLy0vanNkb20tOS42LjAudGd6I2UwZTli
MTViYTA3ZTkwYjFkOWVjMDgzZjliZWRlZTBmNjgwMGE0ZmIiCisgIGRlcGVuZGVuY2llczoKKyAg
ICBhYmFiICJeMS4wLjAiCisgICAgYWNvcm4gIl4yLjQuMCIKKyAgICBhY29ybi1nbG9iYWxzICJe
MS4wLjQiCisgICAgYXJyYXktZXF1YWwgIl4xLjAuMCIKKyAgICBjc3NvbSAiPj0gMC4zLjAgPCAw
LjQuMCIKKyAgICBjc3NzdHlsZSAiPj0gMC4yLjM2IDwgMC4zLjAiCisgICAgZXNjb2RlZ2VuICJe
MS42LjEiCisgICAgaWNvbnYtbGl0ZSAiXjAuNC4xMyIKKyAgICBud21hdGNoZXIgIj49IDEuMy43
IDwgMi4wLjAiCisgICAgcGFyc2U1ICJeMS41LjEiCisgICAgcmVxdWVzdCAiXjIuNTUuMCIKKyAg
ICBzYXggIl4xLjEuNCIKKyAgICBzeW1ib2wtdHJlZSAiPj0gMy4xLjAgPCA0LjAuMCIKKyAgICB0
b3VnaC1jb29raWUgIl4yLjMuMSIKKyAgICB3ZWJpZGwtY29udmVyc2lvbnMgIl4zLjAuMSIKKyAg
ICB3aGF0d2ctdXJsICJeMy4wLjAiCisgICAgeG1sLW5hbWUtdmFsaWRhdG9yICI+PSAyLjAuMSA8
IDMuMC4wIgorCitqc2VzY0BeMS4zLjA6CisgIHZlcnNpb24gIjEuMy4wIgorICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9qc2VzYy8tL2pzZXNjLTEuMy4wLnRneiM0NmMz
ZmVjOGMxODkyYjEyYjA4MzNkYjliYzc2MjIxNzZkYmFiMzRiIgorCitqc2VzY0B+MC41LjA6Cisg
IHZlcnNpb24gIjAuNS4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9qc2VzYy8tL2pzZXNjLTAuNS4wLnRneiNlN2RlZTY2ZTM1ZDZmYzE2ZjcxMGZlOTFkNWNmNjlm
NzBmMDg5MTFkIgorCitqc29uLWxvYWRlckAwLjUuNDoKKyAgdmVyc2lvbiAiMC41LjQiCisgIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2pzb24tbG9hZGVyLy0vanNvbi1s
b2FkZXItMC41LjQudGd6IzhiYWExMzY1YTYzMmY1OGEzYzQ2ZDIwMTc1ZmM2MDAyYzk2ZTM3ZGUi
CisKK2pzb24tc2NoZW1hQDAuMi4zOgorICB2ZXJzaW9uICIwLjIuMyIKKyAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vanNvbi1zY2hlbWEvLS9qc29uLXNjaGVtYS0wLjIu
My50Z3ojYjQ4MGM4OTJlNTlhMmYwNTk1NGNlNzI3YmQzZjJhNGU4ODJmOWUxMyIKKworanNvbi1z
dGFibGUtc3RyaW5naWZ5QF4xLjAuMCwganNvbi1zdGFibGUtc3RyaW5naWZ5QF4xLjAuMToKKyAg
dmVyc2lvbiAiMS4wLjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L2pzb24tc3RhYmxlLXN0cmluZ2lmeS8tL2pzb24tc3RhYmxlLXN0cmluZ2lmeS0xLjAuMS50Z3oj
OWE3NTlkMzljNWYyZmY1MDNmZDUzMDA2NDZlZDQ0NWY4OGM0ZjlhZiIKKyAgZGVwZW5kZW5jaWVz
OgorICAgIGpzb25pZnkgIn4wLjAuMCIKKworanNvbi1zdHJpbmdpZnktc2FmZUB+NS4wLjE6Cisg
IHZlcnNpb24gIjUuMC4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9qc29uLXN0cmluZ2lmeS1zYWZlLy0vanNvbi1zdHJpbmdpZnktc2FmZS01LjAuMS50Z3ojMTI5
NmEyZDU4ZmQ0NWYxOWEwZjZjZTAxZDY1NzAxZTJjNzM1YjZlYiIKKworanNvbjNAXjMuMy4yOgor
ICB2ZXJzaW9uICIzLjMuMiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vanNvbjMvLS9qc29uMy0zLjMuMi50Z3ojM2MwNDM0NzQzZGY5M2UyZjVjNDJhZWU3YjE5YmNi
NDgzNTc1ZjRlMSIKKworanNvbjVAXjAuNC4wOgorICB2ZXJzaW9uICIwLjQuMCIKKyAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vanNvbjUvLS9qc29uNS0wLjQuMC50Z3oj
MDU0MzUyZTRjNGM4MGM4NmMwOTIzODc3ZDQ0OWRlMTc2YTczMmM4ZCIKKworanNvbjVAXjAuNS4w
OgorICB2ZXJzaW9uICIwLjUuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vanNvbjUvLS9qc29uNS0wLjUuMC50Z3ojOWIyMDcxNWIwMjZjYmUzNzc4ZmQ3NjllZGNj
ZDgyMmQ4MzMyYTViMiIKKworanNvbmZpbGVAXjIuMS4wOgorICB2ZXJzaW9uICIyLjQuMCIKKyAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vanNvbmZpbGUvLS9qc29uZmls
ZS0yLjQuMC50Z3ojMzczNmEyYjQyOGI4N2JiZGEwY2M4M2I1M2ZhM2Q2MzNhMzVjMmFlOCIKKyAg
b3B0aW9uYWxEZXBlbmRlbmNpZXM6CisgICAgZ3JhY2VmdWwtZnMgIl40LjEuNiIKKworanNvbmlm
eUB+MC4wLjA6CisgIHZlcnNpb24gIjAuMC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9qc29uaWZ5Ly0vanNvbmlmeS0wLjAuMC50Z3ojMmM3NGI2ZWU0MWQ5M2Nh
NTFiN2I1YWFlZThmNTAzNjMxZDI1MmE3MyIKKworanNvbnBvaW50ZXJAXjQuMC4wOgorICB2ZXJz
aW9uICI0LjAuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vanNv
bnBvaW50ZXIvLS9qc29ucG9pbnRlci00LjAuMC50Z3ojNjY2MWUxNjFkMmZjNDQ1ZjE5Zjk4NDMw
MjMxMzQzNzIyZTFmY2JkNSIKKworanNwcmltQF4xLjIuMjoKKyAgdmVyc2lvbiAiMS4zLjEiCisg
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2pzcHJpbS8tL2pzcHJpbS0x
LjMuMS50Z3ojMmE3MjU2ZjcwNDEyYTI5ZWUzNjcwYWFjYTYyNTk5NGM0ZGNmZjI1MiIKKyAgZGVw
ZW5kZW5jaWVzOgorICAgIGV4dHNwcmludGYgIjEuMC4yIgorICAgIGpzb24tc2NoZW1hICIwLjIu
MyIKKyAgICB2ZXJyb3IgIjEuMy42IgorCitqc3gtYXN0LXV0aWxzQF4xLjAuMCwganN4LWFzdC11
dGlsc0BeMS4zLjE6CisgIHZlcnNpb24gIjEuMy4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9qc3gtYXN0LXV0aWxzLy0vanN4LWFzdC11dGlscy0xLjMuMS50Z3oj
MTQzMTNjNWM1MGRhNWIwYzQ3MDIwYWY1ZDE1NjBjMTdlNzgxYTA1YSIKKyAgZGVwZW5kZW5jaWVz
OgorICAgIG9iamVjdC1hc3NpZ24gIl40LjEuMCIKKwora2luZC1vZkBeMy4wLjI6CisgIHZlcnNp
b24gIjMuMC40IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9raW5k
LW9mLy0va2luZC1vZi0zLjAuNC50Z3ojN2I4ZWNmMThhNGUxN2Y4MjY5ZDczYjUwMWM5ZjIzMmM5
Njg4N2E3NCIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGlzLWJ1ZmZlciAiXjEuMC4yIgorCitrbGF3
QF4xLjAuMDoKKyAgdmVyc2lvbiAiMS4zLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL2tsYXcvLS9rbGF3LTEuMy4wLnRneiM4ODU3YmZiYzFkODI0YmFkZjEzZDNk
MDI0MWQ4YmJlNDZmYjEyZjczIgorCitsYXp5LWNhY2hlQF4xLjAuMzoKKyAgdmVyc2lvbiAiMS4w
LjQiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2xhenktY2FjaGUv
LS9sYXp5LWNhY2hlLTEuMC40LnRneiNhMWQ3OGZjM2E1MDQ3NGNiODA4NDVkM2IzYjZlMWRhNDlh
NDQ2ZThlIgorCitsY2lkQF4xLjAuMDoKKyAgdmVyc2lvbiAiMS4wLjAiCisgIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2xjaWQvLS9sY2lkLTEuMC4wLnRneiMzMDhhY2Nh
ZmEwYmM0ODNhMzg2N2I0YjZmMmI5NTA2MjUxZDFiODM1IgorICBkZXBlbmRlbmNpZXM6CisgICAg
aW52ZXJ0LWt2ICJeMS4wLjAiCisKK2xldm5AXjAuMy4wLCBsZXZuQH4wLjMuMDoKKyAgdmVyc2lv
biAiMC4zLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2xldm4v
LS9sZXZuLTAuMy4wLnRneiMzYjA5OTI0ZWRmOWYwODNjMDQ5MGZkZDRjMGJjNDQyMWUwNDc2NGVl
IgorICBkZXBlbmRlbmNpZXM6CisgICAgcHJlbHVkZS1scyAifjEuMS4yIgorICAgIHR5cGUtY2hl
Y2sgIn4wLjMuMiIKKworbG9hZC1qc29uLWZpbGVAXjEuMC4wOgorICB2ZXJzaW9uICIxLjEuMCIK
KyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbG9hZC1qc29uLWZpbGUv
LS9sb2FkLWpzb24tZmlsZS0xLjEuMC50Z3ojOTU2OTA1NzA4ZDU4YjRiYWI0YzIyNjFiMDRmNTlm
MzFjOTkzNzRjMCIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGdyYWNlZnVsLWZzICJeNC4xLjIiCisg
ICAgcGFyc2UtanNvbiAiXjIuMi4wIgorICAgIHBpZnkgIl4yLjAuMCIKKyAgICBwaW5raWUtcHJv
bWlzZSAiXjIuMC4wIgorICAgIHN0cmlwLWJvbSAiXjIuMC4wIgorCitsb2FkZXItdXRpbHNAXjAu
Mi4xMSwgbG9hZGVyLXV0aWxzQF4wLjIuMTUsIGxvYWRlci11dGlsc0BeMC4yLjMsIGxvYWRlci11
dGlsc0BeMC4yLjcsIGxvYWRlci11dGlsc0B+MC4yLjIsIGxvYWRlci11dGlsc0B+MC4yLjUsIGxv
YWRlci11dGlsc0AwLjIueDoKKyAgdmVyc2lvbiAiMC4yLjE2IgorICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9sb2FkZXItdXRpbHMvLS9sb2FkZXItdXRpbHMtMC4yLjE2
LnRneiNmMDg2MzIwNjZlZDgyODI4MzVkZmY4OGRmYjUyNzA0NzY1YWRlZTZkIgorICBkZXBlbmRl
bmNpZXM6CisgICAgYmlnLmpzICJeMy4xLjMiCisgICAgZW1vamlzLWxpc3QgIl4yLjAuMCIKKyAg
ICBqc29uNSAiXjAuNS4wIgorICAgIG9iamVjdC1hc3NpZ24gIl40LjAuMSIKKworbG9kYXNoLWVz
QF40LjIuMToKKyAgdmVyc2lvbiAiNC4xNi40IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9sb2Rhc2gtZXMvLS9sb2Rhc2gtZXMtNC4xNi40LnRneiM0ZGMzZTJjZjMz
YThjMzQzMDI4YWE3ZjdlMDZkMWM5Njk3MDQyNTk5IgorCitsb2Rhc2guX2FycmF5Y29weUBeMy4w
LjA6CisgIHZlcnNpb24gIjMuMC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9sb2Rhc2guX2FycmF5Y29weS8tL2xvZGFzaC5fYXJyYXljb3B5LTMuMC4wLnRneiM3
NmU3YjdjMWYxZmI5MjU0NzM3NDg3OGE1NjJlZDA2YTNlNTBmNmUxIgorCitsb2Rhc2guX2FycmF5
ZWFjaEBeMy4wLjA6CisgIHZlcnNpb24gIjMuMC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9sb2Rhc2guX2FycmF5ZWFjaC8tL2xvZGFzaC5fYXJyYXllYWNoLTMu
MC4wLnRneiNiYWIxNTZiMmE5MGQzZjFiYmQ1YzY1MzQwMzM0OWU1ZTU5MzNlZjllIgorCitsb2Rh
c2guX2Jhc2Vhc3NpZ25AXjMuMC4wOgorICB2ZXJzaW9uICIzLjIuMCIKKyAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbG9kYXNoLl9iYXNlYXNzaWduLy0vbG9kYXNoLl9i
YXNlYXNzaWduLTMuMi4wLnRneiM4YzM4YTA5OTUwMGYyMTVhZDA5ZTU5ZjE3MjJmZDBjNTJiZmUw
YTRlIgorICBkZXBlbmRlbmNpZXM6CisgICAgbG9kYXNoLl9iYXNlY29weSAiXjMuMC4wIgorICAg
IGxvZGFzaC5rZXlzICJeMy4wLjAiCisKK2xvZGFzaC5fYmFzZWNsb25lQF4zLjAuMDoKKyAgdmVy
c2lvbiAiMy4zLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2xv
ZGFzaC5fYmFzZWNsb25lLy0vbG9kYXNoLl9iYXNlY2xvbmUtMy4zLjAudGd6IzMwMzUxOWJmNjM5
M2ZlN2U0MmYzNGQ4YjYzMGVmNzc5NGUzNTQyYjciCisgIGRlcGVuZGVuY2llczoKKyAgICBsb2Rh
c2guX2FycmF5Y29weSAiXjMuMC4wIgorICAgIGxvZGFzaC5fYXJyYXllYWNoICJeMy4wLjAiCisg
ICAgbG9kYXNoLl9iYXNlYXNzaWduICJeMy4wLjAiCisgICAgbG9kYXNoLl9iYXNlZm9yICJeMy4w
LjAiCisgICAgbG9kYXNoLmlzYXJyYXkgIl4zLjAuMCIKKyAgICBsb2Rhc2gua2V5cyAiXjMuMC4w
IgorCitsb2Rhc2guX2Jhc2Vjb3B5QF4zLjAuMDoKKyAgdmVyc2lvbiAiMy4wLjEiCisgIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2xvZGFzaC5fYmFzZWNvcHkvLS9sb2Rh
c2guX2Jhc2Vjb3B5LTMuMC4xLnRneiM4ZGEwZTZhODc2Y2YzNDRjMGFkOGE1NDg4MjExMWRkM2M1
YzdjYTM2IgorCitsb2Rhc2guX2Jhc2Vmb3JAXjMuMC4wOgorICB2ZXJzaW9uICIzLjAuMyIKKyAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbG9kYXNoLl9iYXNlZm9yLy0v
bG9kYXNoLl9iYXNlZm9yLTMuMC4zLnRneiM3NTUwYjRlOTIxOGVmMDlmYWQyNDM0M2I2MTIwMjFj
NzliNGMyMGMyIgorCitsb2Rhc2guX2JpbmRjYWxsYmFja0BeMy4wLjA6CisgIHZlcnNpb24gIjMu
MC4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9sb2Rhc2guX2Jp
bmRjYWxsYmFjay8tL2xvZGFzaC5fYmluZGNhbGxiYWNrLTMuMC4xLnRneiNlNTMxYzI3NjQ0Y2Y4
YjU3YTk5ZTE3ZWQ5NWIzNWM3NDg3ODkzOTJlIgorCitsb2Rhc2guX2NyZWF0ZWNvbXBvdW5kZXJA
XjMuMC4wOgorICB2ZXJzaW9uICIzLjAuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vbG9kYXNoLl9jcmVhdGVjb21wb3VuZGVyLy0vbG9kYXNoLl9jcmVhdGVjb21w
b3VuZGVyLTMuMC4wLnRneiM1ZGQyY2I1NTM3MmQ2ZTcwZTBlMjM5MmZiMjMwNGQ2NjMxMDkxMDc1
IgorICBkZXBlbmRlbmNpZXM6CisgICAgbG9kYXNoLmRlYnVyciAiXjMuMC4wIgorICAgIGxvZGFz
aC53b3JkcyAiXjMuMC4wIgorCitsb2Rhc2guX2dldG5hdGl2ZUBeMy4wLjA6CisgIHZlcnNpb24g
IjMuOS4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9sb2Rhc2gu
X2dldG5hdGl2ZS8tL2xvZGFzaC5fZ2V0bmF0aXZlLTMuOS4xLnRneiM1NzBiYzdkZWRlNDZkNjFj
ZGNkZTY4N2Q2NWQzZWVjYmFhM2FhZmY1IgorCitsb2Rhc2guX3Jvb3RAXjMuMC4wOgorICB2ZXJz
aW9uICIzLjAuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbG9k
YXNoLl9yb290Ly0vbG9kYXNoLl9yb290LTMuMC4xLnRneiNmYmExYzQ1MjRjMTllZTlhNWY4MTM2
YjQ2MDlmMDE3Y2Y0ZGVkNjkyIgorCitsb2Rhc2guYXNzaWduQF40LjAuMCwgbG9kYXNoLmFzc2ln
bkBeNC4xLjAsIGxvZGFzaC5hc3NpZ25AXjQuMi4wOgorICB2ZXJzaW9uICI0LjIuMCIKKyAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbG9kYXNoLmFzc2lnbi8tL2xvZGFz
aC5hc3NpZ24tNC4yLjAudGd6IzBkOTlmM2NjZDdhNmQyNjFkMTliZGFlYjkyNDUwMDVkMjg1ODA4
ZTciCisKK2xvZGFzaC5jYW1lbGNhc2VAXjMuMC4xOgorICB2ZXJzaW9uICIzLjAuMSIKKyAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbG9kYXNoLmNhbWVsY2FzZS8tL2xv
ZGFzaC5jYW1lbGNhc2UtMy4wLjEudGd6IzkzMmM4Yjg3ZjhhNDM3Nzg5N2M2NzE5NzUzMzI4MmY5
N2FlYWMyOTgiCisgIGRlcGVuZGVuY2llczoKKyAgICBsb2Rhc2guX2NyZWF0ZWNvbXBvdW5kZXIg
Il4zLjAuMCIKKworbG9kYXNoLmNsb25lZGVlcEBeMy4wLjA6CisgIHZlcnNpb24gIjMuMC4yIgor
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9sb2Rhc2guY2xvbmVkZWVw
Ly0vbG9kYXNoLmNsb25lZGVlcC0zLjAuMi50Z3ojYTBhMWU0MGQ4MmE1ZWE4OWZmNWIxNDdiODQ0
NGVkNjNkOTI4MjdkYiIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGxvZGFzaC5fYmFzZWNsb25lICJe
My4wLjAiCisgICAgbG9kYXNoLl9iaW5kY2FsbGJhY2sgIl4zLjAuMCIKKworbG9kYXNoLmNvbmRA
XjQuMy4wOgorICB2ZXJzaW9uICI0LjUuMiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vbG9kYXNoLmNvbmQvLS9sb2Rhc2guY29uZC00LjUuMi50Z3ojZjQ3MWExZGE0
ODZiZTYwZjZhYjk1NWQxNzExNTUyM2RkMWQyNTVkNSIKKworbG9kYXNoLmRlYnVyckBeMy4wLjA6
CisgIHZlcnNpb24gIjMuMi4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9sb2Rhc2guZGVidXJyLy0vbG9kYXNoLmRlYnVyci0zLjIuMC50Z3ojNmRhOGY1NDMzNGEz
NjZhN2NmNGM0Yzc2ZWY4ZDgwYWExYjM2NWVkNSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGxvZGFz
aC5fcm9vdCAiXjMuMC4wIgorCitsb2Rhc2guZW5kc3dpdGhAXjQuMC4xOgorICB2ZXJzaW9uICI0
LjIuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbG9kYXNoLmVu
ZHN3aXRoLy0vbG9kYXNoLmVuZHN3aXRoLTQuMi4xLnRneiNmZWQ1OWFjMTczOGVkM2UyMzZlZGQ3
MDY0ZWM0NTY0NDhiMzdiYzA5IgorCitsb2Rhc2guZmluZEBeNC4zLjA6CisgIHZlcnNpb24gIjQu
Ni4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9sb2Rhc2guZmlu
ZC8tL2xvZGFzaC5maW5kLTQuNi4wLnRneiNjYjA3MDRkNDdhYjcxNzg5ZmZhMGRlOGI5N2RkOTI2
ZmI4OGIxM2IxIgorCitsb2Rhc2guZmluZGluZGV4QF40LjMuMDoKKyAgdmVyc2lvbiAiNC42LjAi
CisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2xvZGFzaC5maW5kaW5k
ZXgvLS9sb2Rhc2guZmluZGluZGV4LTQuNi4wLnRneiNhMzI0NWRlZTYxZmI5YjZlMDYyNGI1MzUx
MjU2MjRiYjY5YzExMTA2IgorCitsb2Rhc2guaW5kZXhvZkBeNC4wLjU6CisgIHZlcnNpb24gIjQu
MC41IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9sb2Rhc2guaW5k
ZXhvZi8tL2xvZGFzaC5pbmRleG9mLTQuMC41LnRneiM1MzcxNGFkYzJjZGRkNmVkODc2MzhmODkz
YWE5YjZjMjRlMzFlZjNjIgorCitsb2Rhc2guaXNhcmd1bWVudHNAXjMuMC4wOgorICB2ZXJzaW9u
ICIzLjEuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbG9kYXNo
LmlzYXJndW1lbnRzLy0vbG9kYXNoLmlzYXJndW1lbnRzLTMuMS4wLnRneiMyZjU3M2Q4NWM2YTI0
Mjg5ZmYwMDY2M2I0OTFjMWQzMzhmZjM0NThhIgorCitsb2Rhc2guaXNhcnJheUBeMy4wLjA6Cisg
IHZlcnNpb24gIjMuMC40IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9sb2Rhc2guaXNhcnJheS8tL2xvZGFzaC5pc2FycmF5LTMuMC40LnRneiM3OWU0ZWI4OGMzNmE4
MTIyYWY4NmY4NDRhYTliY2Q4NTFiNWZiYjU1IgorCitsb2Rhc2gua2V5c0BeMy4wLjA6CisgIHZl
cnNpb24gIjMuMS4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9s
b2Rhc2gua2V5cy8tL2xvZGFzaC5rZXlzLTMuMS4yLnRneiM0ZGJjMDQ3MmIxNTZiZTUwYTBiMjg2
ODU1ZDFiZDBiMGM2NTYwOThhIgorICBkZXBlbmRlbmNpZXM6CisgICAgbG9kYXNoLl9nZXRuYXRp
dmUgIl4zLjAuMCIKKyAgICBsb2Rhc2guaXNhcmd1bWVudHMgIl4zLjAuMCIKKyAgICBsb2Rhc2gu
aXNhcnJheSAiXjMuMC4wIgorCitsb2Rhc2gucGlja2J5QF40LjAuMDoKKyAgdmVyc2lvbiAiNC42
LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2xvZGFzaC5waWNr
YnkvLS9sb2Rhc2gucGlja2J5LTQuNi4wLnRneiM3ZGVhMjFkOGMxOGQ3NzAzYTI3YzcwNGMxNWQz
Yjg0YTY3ZTMzYWZmIgorCitsb2Rhc2gud29yZHNAXjMuMC4wOgorICB2ZXJzaW9uICIzLjIuMCIK
KyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbG9kYXNoLndvcmRzLy0v
bG9kYXNoLndvcmRzLTMuMi4wLnRneiM0ZTJhODY0OWJjMDg3NDViMTdjNjk1YjFhM2NlOGZlZTU5
NjYyM2IzIgorICBkZXBlbmRlbmNpZXM6CisgICAgbG9kYXNoLl9yb290ICJeMy4wLjAiCisKK2xv
ZGFzaEBeNC4wLjAsIGxvZGFzaEBeNC4xLjAsIGxvZGFzaEBeNC4xMy4xLCBsb2Rhc2hAXjQuMTQu
MiwgbG9kYXNoQF40LjE1LjAsIGxvZGFzaEBeNC4xNi4yLCBsb2Rhc2hAXjQuMi4wLCBsb2Rhc2hA
XjQuMi4xLCBsb2Rhc2hAXjQuMy4wOgorICB2ZXJzaW9uICI0LjE2LjQiCisgIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2xvZGFzaC8tL2xvZGFzaC00LjE2LjQudGd6IzAx
Y2UzMDZiOWJhZDEzMTlmMmE1NTI4Njc0Zjg4Mjk3YWViNzAxMjciCisKK2xvbmdlc3RAXjEuMC4x
OgorICB2ZXJzaW9uICIxLjAuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vbG9uZ2VzdC8tL2xvbmdlc3QtMS4wLjEudGd6IzMwYTBiMmRhMzhmNzM3NzBlODI5NGEw
ZDIyZTY2MjVlZDc3ZDAwOTciCisKK2xvb3NlLWVudmlmeUBeMS4wLjAsIGxvb3NlLWVudmlmeUBe
MS4xLjA6CisgIHZlcnNpb24gIjEuMi4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9sb29zZS1lbnZpZnkvLS9sb29zZS1lbnZpZnktMS4yLjAudGd6IzY5YTY1YWFk
M2RlNTQyY2Y0ZWUwZjRmZTc0ZThlMzNjNzA5Y2NiMGYiCisgIGRlcGVuZGVuY2llczoKKyAgICBq
cy10b2tlbnMgIl4xLjAuMSIKKworbG93ZXItY2FzZS1maXJzdEBeMS4wLjA6CisgIHZlcnNpb24g
IjEuMC4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9sb3dlci1j
YXNlLWZpcnN0Ly0vbG93ZXItY2FzZS1maXJzdC0xLjAuMi50Z3ojZTVkYTdjMjZmMjlhNzA3M2Jl
MDJkNTJiYWM5OTgwZTU5MjJhZGZhMSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGxvd2VyLWNhc2Ug
Il4xLjEuMiIKKworbG93ZXItY2FzZUBeMS4xLjAsIGxvd2VyLWNhc2VAXjEuMS4xLCBsb3dlci1j
YXNlQF4xLjEuMjoKKyAgdmVyc2lvbiAiMS4xLjMiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL2xvd2VyLWNhc2UvLS9sb3dlci1jYXNlLTEuMS4zLnRneiNjOTIzOTNk
OTc2NzkzZWVlNWJhNGVkYjU4M2NmOGVhZTM1YmQ5YmZiIgorCitscnUtY2FjaGVAXjQuMC4xOgor
ICB2ZXJzaW9uICI0LjAuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vbHJ1LWNhY2hlLy0vbHJ1LWNhY2hlLTQuMC4xLnRneiMxMzQzOTU1ZWRhZjJlMzdkOWI5ZTdl
ZTcyNDFlMjdjNGI5ZmI3MmJlIgorICBkZXBlbmRlbmNpZXM6CisgICAgcHNldWRvbWFwICJeMS4w
LjEiCisgICAgeWFsbGlzdCAiXjIuMC4wIgorCittYWNhZGRyZXNzQF4wLjIuODoKKyAgdmVyc2lv
biAiMC4yLjgiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL21hY2Fk
ZHJlc3MvLS9tYWNhZGRyZXNzLTAuMi44LnRneiM1OTA0ZGM1MzdjMzllYzZkYmVmZWFlOTAyMzI3
MTM1ZmE4NTExZjEyIgorCittYWtlZXJyb3JAMS4wLng6CisgIHZlcnNpb24gIjEuMC4xMSIKKyAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbWFrZWVycm9yLy0vbWFrZWVy
cm9yLTEuMC4xMS50Z3ojZTAxYTVjOTEwOWYyYWY3OTY2MGU0ZThiOTU4Nzc5MDE4NGY1YTk2YyIK
KyAgZGVwZW5kZW5jaWVzOgorICAgIHRtcGwgIjEuMC54IgorCittYXJrZWQtdGVybWluYWxAXjEu
Ni4yOgorICB2ZXJzaW9uICIxLjYuMiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vbWFya2VkLXRlcm1pbmFsLy0vbWFya2VkLXRlcm1pbmFsLTEuNi4yLnRneiM0NGMx
MjhkNjliNWQ5Nzc2Yzg0ODMxNGNkZjY5ZDRlYzk2MzIyOTczIgorICBkZXBlbmRlbmNpZXM6Cisg
ICAgY2FyZGluYWwgIl4xLjAuMCIKKyAgICBjaGFsayAiXjEuMC4wIgorICAgIGNsaS10YWJsZSAi
XjAuMy4xIgorICAgIGxvZGFzaC5hc3NpZ24gIl40LjIuMCIKKyAgICBub2RlLWVtb2ppICJeMS4z
LjEiCisKK21hcmtlZEBeMC4zLjY6CisgIHZlcnNpb24gIjAuMy42IgorICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9tYXJrZWQvLS9tYXJrZWQtMC4zLjYudGd6I2IyYzZj
NjE4ZmNjZWNlNGVmODZjNGZjNmNiOGE3Y2JmNWFlZGE4ZDciCisKK21hdGgtZXhwcmVzc2lvbi1l
dmFsdWF0b3JAXjEuMi4xNDoKKyAgdmVyc2lvbiAiMS4yLjE0IgorICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9tYXRoLWV4cHJlc3Npb24tZXZhbHVhdG9yLy0vbWF0aC1l
eHByZXNzaW9uLWV2YWx1YXRvci0xLjIuMTQudGd6IzM5NTExNzcxZWQ5NjAyNDA1ZmJhOWFmZmZm
MTdlYjRkMmEzODQzYWIiCisgIGRlcGVuZGVuY2llczoKKyAgICBsb2Rhc2guaW5kZXhvZiAiXjQu
MC41IgorCittZWRpYS10eXBlckAwLjMuMDoKKyAgdmVyc2lvbiAiMC4zLjAiCisgIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL21lZGlhLXR5cGVyLy0vbWVkaWEtdHlwZXIt
MC4zLjAudGd6Izg3MTBkN2FmMGFhNjI2ZjhmZmZhMWNlMDAxNjg1NDUyNjMyNTU3NDgiCisKK21l
bW9yeS1mc0BeMC4yLjA6CisgIHZlcnNpb24gIjAuMi4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9tZW1vcnktZnMvLS9tZW1vcnktZnMtMC4yLjAudGd6I2YyYmIy
NTM2OGJjMTIxZTM5MWMyNTIwZGU5Mjk2OWNhZWUwYTAyOTAiCisKK21lbW9yeS1mc0B+MC4zLjA6
CisgIHZlcnNpb24gIjAuMy4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9tZW1vcnktZnMvLS9tZW1vcnktZnMtMC4zLjAudGd6IzdiY2M2YjYyOWUzYTQzZTg3MWQ3
ZTI5YWNhNmFlOGE3ZjE1Y2JiMjAiCisgIGRlcGVuZGVuY2llczoKKyAgICBlcnJubyAiXjAuMS4z
IgorICAgIHJlYWRhYmxlLXN0cmVhbSAiXjIuMC4xIgorCittZXJnZS1kZXNjcmlwdG9yc0AxLjAu
MToKKyAgdmVyc2lvbiAiMS4wLjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w
a2cuY29tL21lcmdlLWRlc2NyaXB0b3JzLy0vbWVyZ2UtZGVzY3JpcHRvcnMtMS4wLjEudGd6I2Iw
MGFhYTU1NmRkOGI0NDU2ODE1MGVjOWQxYjk1M2YzZjkwY2JiNjEiCisKK21lcmdlQF4xLjEuMzoK
KyAgdmVyc2lvbiAiMS4yLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL21lcmdlLy0vbWVyZ2UtMS4yLjAudGd6Izc1MzFlMzlkNDk0OWMyODFhNjZiOGM1YTZlMDI2
NWU4YjA1ODk0ZGEiCisKK21ldGhvZHNAfjEuMS4yOgorICB2ZXJzaW9uICIxLjEuMiIKKyAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbWV0aG9kcy8tL21ldGhvZHMtMS4x
LjIudGd6IzU1MjlhNGQ2NzY1NDEzNGVkY2M1MjY2NjU2ODM1YjBmODUxYWZjZWUiCisKK21pY3Jv
bWF0Y2hAXjIuMS41LCBtaWNyb21hdGNoQF4yLjMuMTE6CisgIHZlcnNpb24gIjIuMy4xMSIKKyAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbWljcm9tYXRjaC8tL21pY3Jv
bWF0Y2gtMi4zLjExLnRneiM4NjY3N2M5N2QxNzIwYjM2MzQzMWQwNGQwZDE1MjkzYmQzOGMxNTY1
IgorICBkZXBlbmRlbmNpZXM6CisgICAgYXJyLWRpZmYgIl4yLjAuMCIKKyAgICBhcnJheS11bmlx
dWUgIl4wLjIuMSIKKyAgICBicmFjZXMgIl4xLjguMiIKKyAgICBleHBhbmQtYnJhY2tldHMgIl4w
LjEuNCIKKyAgICBleHRnbG9iICJeMC4zLjEiCisgICAgZmlsZW5hbWUtcmVnZXggIl4yLjAuMCIK
KyAgICBpcy1leHRnbG9iICJeMS4wLjAiCisgICAgaXMtZ2xvYiAiXjIuMC4xIgorICAgIGtpbmQt
b2YgIl4zLjAuMiIKKyAgICBub3JtYWxpemUtcGF0aCAiXjIuMC4xIgorICAgIG9iamVjdC5vbWl0
ICJeMi4wLjAiCisgICAgcGFyc2UtZ2xvYiAiXjMuMC40IgorICAgIHJlZ2V4LWNhY2hlICJeMC40
LjIiCisKKyJtaW1lLWRiQD49IDEuMjMuMCA8IDIiLCBtaW1lLWRiQH4xLjI0LjA6CisgIHZlcnNp
b24gIjEuMjQuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbWlt
ZS1kYi8tL21pbWUtZGItMS4yNC4wLnRneiNlMmQxM2Y5MzlmMDAxNmM2ZTRlOWFkMjVhODY1MmYx
MjZjNDY3ZjBjIgorCittaW1lLXR5cGVzQF4yLjEuMTEsIG1pbWUtdHlwZXNAfjIuMS4xMSwgbWlt
ZS10eXBlc0B+Mi4xLjc6CisgIHZlcnNpb24gIjIuMS4xMiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vbWltZS10eXBlcy8tL21pbWUtdHlwZXMtMi4xLjEyLnRneiMx
NTJiYTI1Njc3NzAyMGRkNDY2M2Y1NGMyZTdiYzI2MzgxZTcxNzI5IgorICBkZXBlbmRlbmNpZXM6
CisgICAgbWltZS1kYiAifjEuMjQuMCIKKworbWltZUBeMS4zLjQsIG1pbWVAMS4zLjQ6CisgIHZl
cnNpb24gIjEuMy40IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9t
aW1lLy0vbWltZS0xLjMuNC50Z3ojMTE1ZjllM2I2YjNkYWYyOTU5OTgzY2IzOGYxNDlhMmQ0MGVi
NWQ1MyIKKworbWltZUAxLjIueDoKKyAgdmVyc2lvbiAiMS4yLjExIgorICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9taW1lLy0vbWltZS0xLjIuMTEudGd6IzU4MjAzZWVk
ODZlM2E1ZWYxN2FlZDJiN2Q5ZWJkNDdmMGE2MGRkMTAiCisKK21pbmltYXRjaEBeMy4wLjAsIG1p
bmltYXRjaEBeMy4wLjIsICJtaW5pbWF0Y2hAMiB8fCAzIjoKKyAgdmVyc2lvbiAiMy4wLjMiCisg
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL21pbmltYXRjaC8tL21pbmlt
YXRjaC0zLjAuMy50Z3ojMmE0ZTQwOTBiOTZiMmRiMDZhOWQ3ZGYwMTA1NWE2MmE3N2M5Yjc3NCIK
KyAgZGVwZW5kZW5jaWVzOgorICAgIGJyYWNlLWV4cGFuc2lvbiAiXjEuMC4wIgorCittaW5pbWF0
Y2hAMi54OgorICB2ZXJzaW9uICIyLjAuMTAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL21pbmltYXRjaC8tL21pbmltYXRjaC0yLjAuMTAudGd6IzhkMDg3YzM5YzZi
MzhjMDAxYjk3ZmNhN2NlNmQwZTFlODBhZmJhYzciCisgIGRlcGVuZGVuY2llczoKKyAgICBicmFj
ZS1leHBhbnNpb24gIl4xLjAuMCIKKworbWluaW1hdGNoQDMuMC4yOgorICB2ZXJzaW9uICIzLjAu
MiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbWluaW1hdGNoLy0v
bWluaW1hdGNoLTMuMC4yLnRneiMwZjM5OGE3MzAwZWE0NDFlOWMzNDhjODNkOThhYjhjOWRiZjlj
NDBhIgorICBkZXBlbmRlbmNpZXM6CisgICAgYnJhY2UtZXhwYW5zaW9uICJeMS4wLjAiCisKK21p
bmltaXN0QF4xLjEuMCwgbWluaW1pc3RAXjEuMS4xLCBtaW5pbWlzdEBeMS4yLjA6CisgIHZlcnNp
b24gIjEuMi4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9taW5p
bWlzdC8tL21pbmltaXN0LTEuMi4wLnRneiNhMzUwMDhiMjBmNDEzODNlZWMxZmI5MTRmNGNkNWRm
NzlhMjY0Mjg0IgorCittaW5pbWlzdEB+MC4wLjE6CisgIHZlcnNpb24gIjAuMC4xMCIKKyAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbWluaW1pc3QvLS9taW5pbWlzdC0w
LjAuMTAudGd6I2RlM2Y5ODU0M2RiZjk2MDgyYmU0OGFkMWEwYzdjZGE4MzYzMDFkY2YiCisKK21p
bmltaXN0QDAuMC44OgorICB2ZXJzaW9uICIwLjAuOCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vbWluaW1pc3QvLS9taW5pbWlzdC0wLjAuOC50Z3ojODU3ZmNhYmZj
MzM5N2QyNjI1YjgyMjgyNjJlODZhYTdhMDExYjA1ZCIKKworbWtkaXJwQF4wLjUuMCwgbWtkaXJw
QF4wLjUuMSwgIm1rZGlycEA+PTAuNSAwIiwgbWtkaXJwQH4wLjUuMCwgbWtkaXJwQH4wLjUuMSwg
bWtkaXJwQDAuNS54OgorICB2ZXJzaW9uICIwLjUuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vbWtkaXJwLy0vbWtkaXJwLTAuNS4xLnRneiMzMDA1NzQzOGVhYzZj
ZjdmOGM0NzY3ZjM4NjQ4ZDY2OTdkNzVjOTAzIgorICBkZXBlbmRlbmNpZXM6CisgICAgbWluaW1p
c3QgIjAuMC44IgorCittc0AwLjcuMToKKyAgdmVyc2lvbiAiMC43LjEiCisgIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL21zLy0vbXMtMC43LjEudGd6IzljZDEzYzAzYWRi
ZmYyNWI2NWVmZmRlN2NlODY0ZWU5NTIwMTcwOTgiCisKK211bHRpbWF0Y2hAXjIuMS4wOgorICB2
ZXJzaW9uICIyLjEuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
bXVsdGltYXRjaC8tL211bHRpbWF0Y2gtMi4xLjAudGd6IzljNzkwNmEyMmZiNGMwMjkxOWUyZjVm
NzUxNjFiNGNkYmQ0YjJhMmIiCisgIGRlcGVuZGVuY2llczoKKyAgICBhcnJheS1kaWZmZXIgIl4x
LjAuMCIKKyAgICBhcnJheS11bmlvbiAiXjEuMC4xIgorICAgIGFycmlmeSAiXjEuMC4wIgorICAg
IG1pbmltYXRjaCAiXjMuMC4wIgorCittdXRlLXN0cmVhbUAwLjAuNToKKyAgdmVyc2lvbiAiMC4w
LjUiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL211dGUtc3RyZWFt
Ly0vbXV0ZS1zdHJlYW0tMC4wLjUudGd6IzhmYmZhYmIwYTk4YTI1M2QzMTg0MzMxZjllOGRlYjcz
NzJmYWM2YzAiCisKK25hbkBeMi4zLjA6CisgIHZlcnNpb24gIjIuNC4wIgorICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9uYW4vLS9uYW4tMi40LjAudGd6I2ZiM2M1OWQ0
NWZlNGVmZmUyMTVmMGI4OTBmOGFkZjZlYjMyZDIyMzIiCisKK25hdHVyYWwtY29tcGFyZUBeMS40
LjA6CisgIHZlcnNpb24gIjEuNC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9uYXR1cmFsLWNvbXBhcmUvLS9uYXR1cmFsLWNvbXBhcmUtMS40LjAudGd6IzRhYmVi
ZmVlZDc1NDFmMmMyN2FjZmIyOWJkYmJkMTVjOGQ1YmE0ZjciCisKK25jbmFtZUAxLjAueDoKKyAg
dmVyc2lvbiAiMS4wLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L25jbmFtZS8tL25jbmFtZS0xLjAuMC50Z3ojNWI1N2FkMThiMWNhMDkyODY0ZWY2MmIwYjFlZDgx
OTRmMzgzYjcxYyIKKyAgZGVwZW5kZW5jaWVzOgorICAgIHhtbC1jaGFyLWNsYXNzZXMgIl4xLjAu
MCIKKworbmVnb3RpYXRvckAwLjYuMToKKyAgdmVyc2lvbiAiMC42LjEiCisgIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL25lZ290aWF0b3IvLS9uZWdvdGlhdG9yLTAuNi4x
LnRneiMyYjMyNzE4NGU4OTkyMTAxMTc3YjI4NTYzZmI1ZTcxMDJhY2QwY2E5IgorCituby1jYXNl
QF4yLjIuMDoKKyAgdmVyc2lvbiAiMi4zLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL25vLWNhc2UvLS9uby1jYXNlLTIuMy4wLnRneiNjYTI4MjVjY2I3NmIxOGU2
Zjc5ZDU3M2RjZmJmMWVhY2UzM2RkMTY0IgorICBkZXBlbmRlbmNpZXM6CisgICAgbG93ZXItY2Fz
ZSAiXjEuMS4xIgorCitub2RlLWVtb2ppQF4xLjMuMToKKyAgdmVyc2lvbiAiMS40LjEiCisgIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL25vZGUtZW1vamkvLS9ub2RlLWVt
b2ppLTEuNC4xLnRneiNjOWZhMGNmOTEwOTQzMzViY2I5NjdhNmY0MmIyMzA1YzE1YWYyZWJjIgor
ICBkZXBlbmRlbmNpZXM6CisgICAgc3RyaW5nLnByb3RvdHlwZS5jb2RlcG9pbnRhdCAiXjAuMi4w
IgorCitub2RlLWZldGNoQF4xLjAuMToKKyAgdmVyc2lvbiAiMS42LjMiCisgIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL25vZGUtZmV0Y2gvLS9ub2RlLWZldGNoLTEuNi4z
LnRneiNkYzIzNGVkZDY0ODk5ODJkNThlOGYwZGI0ZjY5NTAyOWFiY2Q4YzA0IgorICBkZXBlbmRl
bmNpZXM6CisgICAgZW5jb2RpbmcgIl4wLjEuMTEiCisgICAgaXMtc3RyZWFtICJeMS4wLjEiCisK
K25vZGUtaW50NjRAXjAuNC4wOgorICB2ZXJzaW9uICIwLjQuMCIKKyAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vbm9kZS1pbnQ2NC8tL25vZGUtaW50NjQtMC40LjAudGd6
Izg3YTkwNjVjZGIzNTVkMzE4MmQ4Zjk0Y2UxMTE4OGI4MjVjNjhhM2IiCisKK25vZGUtbGlicy1i
cm93c2VyQF4wLjYuMDoKKyAgdmVyc2lvbiAiMC42LjAiCisgIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL25vZGUtbGlicy1icm93c2VyLy0vbm9kZS1saWJzLWJyb3dzZXIt
MC42LjAudGd6IzI0NDgwNmQ0NGQzMTllMDQ4YmM4NjA3YjVjYzRlYWY5YTI5ZDJlM2MiCisgIGRl
cGVuZGVuY2llczoKKyAgICBhc3NlcnQgIl4xLjEuMSIKKyAgICBicm93c2VyaWZ5LXpsaWIgIn4w
LjEuNCIKKyAgICBidWZmZXIgIl40LjkuMCIKKyAgICBjb25zb2xlLWJyb3dzZXJpZnkgIl4xLjEu
MCIKKyAgICBjb25zdGFudHMtYnJvd3NlcmlmeSAiMC4wLjEiCisgICAgY3J5cHRvLWJyb3dzZXJp
ZnkgIn4zLjIuNiIKKyAgICBkb21haW4tYnJvd3NlciAiXjEuMS4xIgorICAgIGV2ZW50cyAiXjEu
MC4wIgorICAgIGh0dHAtYnJvd3NlcmlmeSAiXjEuMy4yIgorICAgIGh0dHBzLWJyb3dzZXJpZnkg
IjAuMC4wIgorICAgIG9zLWJyb3dzZXJpZnkgIn4wLjEuMiIKKyAgICBwYXRoLWJyb3dzZXJpZnkg
IjAuMC4wIgorICAgIHByb2Nlc3MgIl4wLjExLjAiCisgICAgcHVueWNvZGUgIl4xLjIuNCIKKyAg
ICBxdWVyeXN0cmluZy1lczMgIn4wLjIuMCIKKyAgICByZWFkYWJsZS1zdHJlYW0gIl4xLjEuMTMi
CisgICAgc3RyZWFtLWJyb3dzZXJpZnkgIl4xLjAuMCIKKyAgICBzdHJpbmdfZGVjb2RlciAifjAu
MTAuMjUiCisgICAgdGltZXJzLWJyb3dzZXJpZnkgIl4xLjAuMSIKKyAgICB0dHktYnJvd3Nlcmlm
eSAiMC4wLjAiCisgICAgdXJsICJ+MC4xMC4xIgorICAgIHV0aWwgIn4wLjEwLjMiCisgICAgdm0t
YnJvd3NlcmlmeSAiMC4wLjQiCisKK25vZGUtbm90aWZpZXJAXjQuNi4xOgorICB2ZXJzaW9uICI0
LjYuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbm9kZS1ub3Rp
Zmllci8tL25vZGUtbm90aWZpZXItNC42LjEudGd6IzA1NmQxNDI0NGYzZGNjMWNlYWRmZTY4YWY5
Y2ZmMGM1NDczYTMzZjMiCisgIGRlcGVuZGVuY2llczoKKyAgICBjbGktdXNhZ2UgIl4wLjEuMSIK
KyAgICBncm93bHkgIl4xLjIuMCIKKyAgICBsb2Rhc2guY2xvbmVkZWVwICJeMy4wLjAiCisgICAg
bWluaW1pc3QgIl4xLjEuMSIKKyAgICBzZW12ZXIgIl41LjEuMCIKKyAgICBzaGVsbHdvcmRzICJe
MC4xLjAiCisgICAgd2hpY2ggIl4xLjAuNSIKKworbm9kZS1wcmUtZ3lwQF4wLjYuMjk6CisgIHZl
cnNpb24gIjAuNi4zMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
bm9kZS1wcmUtZ3lwLy0vbm9kZS1wcmUtZ3lwLTAuNi4zMC50Z3ojNjRkMzA3M2E2ZjU3MzAwMzcx
N2NjZmUzMGM4OTAyMzI5N2JhYmJhMSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIG1rZGlycCAifjAu
NS4wIgorICAgIG5vcHQgIn4zLjAuMSIKKyAgICBucG1sb2cgIjQueCIKKyAgICByYyAifjEuMS4w
IgorICAgIHJlcXVlc3QgIjIueCIKKyAgICByaW1yYWYgIn4yLjUuMCIKKyAgICBzZW12ZXIgIn41
LjMuMCIKKyAgICB0YXIgIn4yLjIuMCIKKyAgICB0YXItcGFjayAifjMuMS4wIgorCitub2RlLXV1
aWRAfjEuNC43OgorICB2ZXJzaW9uICIxLjQuNyIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vbm9kZS11dWlkLy0vbm9kZS11dWlkLTEuNC43LnRneiM2ZGE1YTE3NjY4
YzRiM2RkNTk2MjNiZGExMWNmN2ZhNGMxZjYwYTZmIgorCitub3B0QH4zLjAuMSwgbm9wdEAzLng6
CisgIHZlcnNpb24gIjMuMC42IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9ub3B0Ly0vbm9wdC0zLjAuNi50Z3ojYzY0NjVkYmYwOGFiY2Q0ZGIzNTkzMTdmNzlhYzY4
YTY0NmIyOGZmOSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGFiYnJldiAiMSIKKworbm9ybWFsaXpl
LXBhY2thZ2UtZGF0YUBeMi4zLjI6CisgIHZlcnNpb24gIjIuMy41IgorICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9ub3JtYWxpemUtcGFja2FnZS1kYXRhLy0vbm9ybWFs
aXplLXBhY2thZ2UtZGF0YS0yLjMuNS50Z3ojOGQ5MjRmMTQyOTYwZTE3NzdlN2ZmZTE3MDU0MzYz
MWNjN2NiMDJkZiIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGhvc3RlZC1naXQtaW5mbyAiXjIuMS40
IgorICAgIGlzLWJ1aWx0aW4tbW9kdWxlICJeMS4wLjAiCisgICAgc2VtdmVyICIyIHx8IDMgfHwg
NCB8fCA1IgorICAgIHZhbGlkYXRlLW5wbS1wYWNrYWdlLWxpY2Vuc2UgIl4zLjAuMSIKKworbm9y
bWFsaXplLXBhdGhAXjIuMC4xOgorICB2ZXJzaW9uICIyLjAuMSIKKyAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vbm9ybWFsaXplLXBhdGgvLS9ub3JtYWxpemUtcGF0aC0y
LjAuMS50Z3ojNDc4ODZhYzE2NjI3NjBkNDI2MWI3ZDk3OWQyNDE3MDlkM2NlM2Y3YSIKKworbm9y
bWFsaXplLXJhbmdlQF4wLjEuMjoKKyAgdmVyc2lvbiAiMC4xLjIiCisgIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL25vcm1hbGl6ZS1yYW5nZS8tL25vcm1hbGl6ZS1yYW5n
ZS0wLjEuMi50Z3ojMmQxMGMwNmJkZmQzMTJlYTk3Nzc2OTVhNGQyODQzOTQ1NmI3NTk0MiIKKwor
bm9ybWFsaXplLXVybEBeMS40LjA6CisgIHZlcnNpb24gIjEuNi4xIgorICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9ub3JtYWxpemUtdXJsLy0vbm9ybWFsaXplLXVybC0x
LjYuMS50Z3ojYTlmMjU0ZmEwNjViYmMyOTM0NDYxYzBjMDk0MjM4MTU5NzYxNTVhMiIKKyAgZGVw
ZW5kZW5jaWVzOgorICAgIG9iamVjdC1hc3NpZ24gIl40LjAuMSIKKyAgICBwcmVwZW5kLWh0dHAg
Il4xLjAuMCIKKyAgICBxdWVyeS1zdHJpbmcgIl40LjEuMCIKKyAgICBzb3J0LWtleXMgIl4xLjAu
MCIKKworbnBtbG9nQDQueDoKKyAgdmVyc2lvbiAiNC4wLjAiCisgIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL25wbWxvZy8tL25wbWxvZy00LjAuMC50Z3ojZTA5NDUwMzk2
MWM3MGMxNzc0ZWI3NjY5MjA4MGU4ZDU3OGE5Zjg4ZiIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGFy
ZS13ZS10aGVyZS15ZXQgIn4xLjEuMiIKKyAgICBjb25zb2xlLWNvbnRyb2wtc3RyaW5ncyAifjEu
MS4wIgorICAgIGdhdWdlICJ+Mi42LjAiCisgICAgc2V0LWJsb2NraW5nICJ+Mi4wLjAiCisKK250
aC1jaGVja0B+MS4wLjE6CisgIHZlcnNpb24gIjEuMC4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9udGgtY2hlY2svLS9udGgtY2hlY2stMS4wLjEudGd6Izk5Mjlh
Y2RmNjI4ZmMyYzQxMDk4ZGVhYjgyYWM1ODBjZjE0OWFhZTQiCisgIGRlcGVuZGVuY2llczoKKyAg
ICBib29sYmFzZSAifjEuMC4wIgorCitudW0yZnJhY3Rpb25AXjEuMi4yOgorICB2ZXJzaW9uICIx
LjIuMiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbnVtMmZyYWN0
aW9uLy0vbnVtMmZyYWN0aW9uLTEuMi4yLnRneiM2ZjY4MmI2YTAyN2E0ZTlkZGZhNDU2NGNkMjU4
OWQxZDRlNjY5ZWRlIgorCitudW1iZXItaXMtbmFuQF4xLjAuMDoKKyAgdmVyc2lvbiAiMS4wLjEi
CisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL251bWJlci1pcy1uYW4v
LS9udW1iZXItaXMtbmFuLTEuMC4xLnRneiMwOTdiNjAyYjUzNDIyYTUyMmMxYWZiODc5MDMxODMz
Njk0MWEwMTFkIgorCisibndtYXRjaGVyQD49IDEuMy43IDwgMi4wLjAiOgorICB2ZXJzaW9uICIx
LjMuOCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbndtYXRjaGVy
Ly0vbndtYXRjaGVyLTEuMy44LnRneiMzNGVkYjkzZGUxYWE2Y2I0NDQ4YjU3M2M5ZjJhMDU5MzAw
MjQxMTU3IgorCitvYXV0aC1zaWduQH4wLjguMToKKyAgdmVyc2lvbiAiMC44LjIiCisgIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL29hdXRoLXNpZ24vLS9vYXV0aC1zaWdu
LTAuOC4yLnRneiM0NmE2YWI3ZjBhZWFkOGRlYWU5ZWMwNTY1NzgwYjdkNGVmZWI5ZDQzIgorCitv
YmplY3QtYXNzaWduQF40LjAuMSwgb2JqZWN0LWFzc2lnbkBeNC4xLjAsIG9iamVjdC1hc3NpZ25A
NC4xLjA6CisgIHZlcnNpb24gIjQuMS4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9vYmplY3QtYXNzaWduLy0vb2JqZWN0LWFzc2lnbi00LjEuMC50Z3ojN2EzYjNk
MGU5ODA2M2Q0M2Y0YzAzZjJlOGFlNmNkNTFhODY4ODNhMCIKKworb2JqZWN0LWlzQF4xLjAuMToK
KyAgdmVyc2lvbiAiMS4wLjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL29iamVjdC1pcy8tL29iamVjdC1pcy0xLjAuMS50Z3ojMGFhNjBlYzk5ODlhMGIzZWQ3OTVj
ZjRkMDZmNjJjZjFhZDY1MzliNiIKKworb2JqZWN0LWtleXNAXjEuMC4xMCwgb2JqZWN0LWtleXNA
XjEuMC44OgorICB2ZXJzaW9uICIxLjAuMTEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL29iamVjdC1rZXlzLy0vb2JqZWN0LWtleXMtMS4wLjExLnRneiNjNTQ2MDE3
NzhhZDU2MGYxMTQyY2UwZTAxYmNjYThiNTZkMTM0MjZkIgorCitvYmplY3QuYXNzaWduQF40LjAu
MzoKKyAgdmVyc2lvbiAiNC4wLjQiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w
a2cuY29tL29iamVjdC5hc3NpZ24vLS9vYmplY3QuYXNzaWduLTQuMC40LnRneiNiMWM5Y2MwNDRl
ZjFiOWZlNjM2MDZmYzE0MWFiYmIzMmUxNDczMGNjIgorICBkZXBlbmRlbmNpZXM6CisgICAgZGVm
aW5lLXByb3BlcnRpZXMgIl4xLjEuMiIKKyAgICBmdW5jdGlvbi1iaW5kICJeMS4xLjAiCisgICAg
b2JqZWN0LWtleXMgIl4xLjAuMTAiCisKK29iamVjdC5vbWl0QF4yLjAuMDoKKyAgdmVyc2lvbiAi
Mi4wLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL29iamVjdC5v
bWl0Ly0vb2JqZWN0Lm9taXQtMi4wLjAudGd6Izg2ODU5NzMzM2Q1NGU2MDY2Mjk0MGJiNDU4NjA1
ZGQ2YWUxMmZlOTQiCisgIGRlcGVuZGVuY2llczoKKyAgICBmb3Itb3duICJeMC4xLjMiCisgICAg
aXMtZXh0ZW5kYWJsZSAiXjAuMS4xIgorCitvYmplY3QudmFsdWVzQF4xLjAuMzoKKyAgdmVyc2lv
biAiMS4wLjMiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL29iamVj
dC52YWx1ZXMvLS9vYmplY3QudmFsdWVzLTEuMC4zLnRneiNhNzc3NGJhMDUwODkzZmU2YTVkNTk1
OGFjZDA1ODIzZTBmNDI2YmVmIgorICBkZXBlbmRlbmNpZXM6CisgICAgZGVmaW5lLXByb3BlcnRp
ZXMgIl4xLjEuMSIKKyAgICBlcy1hYnN0cmFjdCAiXjEuMy4yIgorICAgIGZ1bmN0aW9uLWJpbmQg
Il4xLjAuMiIKKyAgICBoYXMgIl4xLjAuMSIKKworb24tZmluaXNoZWRAfjIuMy4wOgorICB2ZXJz
aW9uICIyLjMuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vb24t
ZmluaXNoZWQvLS9vbi1maW5pc2hlZC0yLjMuMC50Z3ojMjBmMTMzNjQ4MWIwODNjZDc1MzM3OTky
YTE2OTcxYWEyZDkwNjk0NyIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGVlLWZpcnN0ICIxLjEuMSIK
Kworb24taGVhZGVyc0B+MS4wLjE6CisgIHZlcnNpb24gIjEuMC4xIgorICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9vbi1oZWFkZXJzLy0vb24taGVhZGVycy0xLjAuMS50
Z3ojOTI4ZjVkMGY0NzBkNDkzNDI2NTFlYTY3OTRiMDg1N2MxMDA2OTNmNyIKKworb25jZUBeMS4z
LjAsIG9uY2VAMS54OgorICB2ZXJzaW9uICIxLjQuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vb25jZS8tL29uY2UtMS40LjAudGd6IzU4M2IxYWE3NzU5NjFkNGIx
MTNhYzE3ZDljNTBiYWVmOWRkNzZiZDEiCisgIGRlcGVuZGVuY2llczoKKyAgICB3cmFwcHkgIjEi
CisKK29uY2VAfjEuMy4zOgorICB2ZXJzaW9uICIxLjMuMyIKKyAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vb25jZS8tL29uY2UtMS4zLjMudGd6I2IyZTI2MTU1N2NlNGMz
MTRlYzgzMDRmM2ZhODI2NjNlNDI5N2NhMjAiCisgIGRlcGVuZGVuY2llczoKKyAgICB3cmFwcHkg
IjEiCisKK29uZXRpbWVAXjEuMC4wOgorICB2ZXJzaW9uICIxLjEuMCIKKyAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vb25ldGltZS8tL29uZXRpbWUtMS4xLjAudGd6I2Ex
Zjc4MzhmODMxNGM1MTZmMDVlY2VmY2JjNGNjZmUwNGI0ZWQ3ODkiCisKK29wZW5AMC4wLjU6Cisg
IHZlcnNpb24gIjAuMC41IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9vcGVuLy0vb3Blbi0wLjAuNS50Z3ojNDJjM2UxOGVjOTU0NjZiNmJmMGRjNDJmM2EyOTQ1YzNm
MGNhZDhmYyIKKworb3BuQDQuMC4yOgorICB2ZXJzaW9uICI0LjAuMiIKKyAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vb3BuLy0vb3BuLTQuMC4yLnRneiM3YWJjMjJlNjQ0
ZGZmNjNiMGE5NmQ1YWI3ZjI3OTBjMGYwMWFiYzk1IgorICBkZXBlbmRlbmNpZXM6CisgICAgb2Jq
ZWN0LWFzc2lnbiAiXjQuMC4xIgorICAgIHBpbmtpZS1wcm9taXNlICJeMi4wLjAiCisKK29wdGlt
aXN0QF4wLjYuMSwgb3B0aW1pc3RAfjAuNi4wLCBvcHRpbWlzdEB+MC42LjE6CisgIHZlcnNpb24g
IjAuNi4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9vcHRpbWlz
dC8tL29wdGltaXN0LTAuNi4xLnRneiNkYTNlYTc0Njg2ZmEyMWExOWExMTFjMzI2ZTkwZWIxNWEw
MTk2Njg2IgorICBkZXBlbmRlbmNpZXM6CisgICAgbWluaW1pc3QgIn4wLjAuMSIKKyAgICB3b3Jk
d3JhcCAifjAuMC4yIgorCitvcHRpb25hdG9yQF4wLjguMToKKyAgdmVyc2lvbiAiMC44LjIiCisg
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL29wdGlvbmF0b3IvLS9vcHRp
b25hdG9yLTAuOC4yLnRneiMzNjRjNWU0MDlkM2Y0ZDYzMDFkNmMwYjRjMDViYmE1MDE4MGFlYjY0
IgorICBkZXBlbmRlbmNpZXM6CisgICAgZGVlcC1pcyAifjAuMS4zIgorICAgIGZhc3QtbGV2ZW5z
aHRlaW4gIn4yLjAuNCIKKyAgICBsZXZuICJ+MC4zLjAiCisgICAgcHJlbHVkZS1scyAifjEuMS4y
IgorICAgIHR5cGUtY2hlY2sgIn4wLjMuMiIKKyAgICB3b3Jkd3JhcCAifjEuMC4wIgorCitvcmln
aW5hbEA+PTAuMC41OgorICB2ZXJzaW9uICIxLjAuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vb3JpZ2luYWwvLS9vcmlnaW5hbC0xLjAuMC50Z3ojOTE0N2Y5M2Zh
MTY5NmQwNGJlNjFlMDFiZDUwYmFlYWNhNjU2YmQzYiIKKyAgZGVwZW5kZW5jaWVzOgorICAgIHVy
bC1wYXJzZSAiMS4wLngiCisKK29zLWJyb3dzZXJpZnlAfjAuMS4yOgorICB2ZXJzaW9uICIwLjEu
MiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vb3MtYnJvd3Nlcmlm
eS8tL29zLWJyb3dzZXJpZnktMC4xLjIudGd6IzQ5Y2EwMjkzZTBiMTk1OTBhNWY1ZGUxMGM3ZjI2
NWE2MTdkOGZlNTQiCisKK29zLWhvbWVkaXJAXjEuMC4wOgorICB2ZXJzaW9uICIxLjAuMiIKKyAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vb3MtaG9tZWRpci8tL29zLWhv
bWVkaXItMS4wLjIudGd6I2ZmYmM0OTg4MzM2ZTBlODMzZGUwYzE2OGM3ZWYxNTIxMjFhYTdmYjMi
CisKK29zLWxvY2FsZUBeMS40LjA6CisgIHZlcnNpb24gIjEuNC4wIgorICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9vcy1sb2NhbGUvLS9vcy1sb2NhbGUtMS40LjAudGd6
IzIwZjlmMTdhZTI5ZWQzNDVlOGJkZTU4M2IxM2QyMDA5ODAzYzE0ZDkiCisgIGRlcGVuZGVuY2ll
czoKKyAgICBsY2lkICJeMS4wLjAiCisKK29zLXRtcGRpckBeMS4wLjE6CisgIHZlcnNpb24gIjEu
MC4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9vcy10bXBkaXIv
LS9vcy10bXBkaXItMS4wLjIudGd6I2JiZTY3NDA2Yzc5YWE4NWM1Y2ZlYzc2NmZlNTczNDU1NWRm
YTEyNzQiCisKK3Bha29AfjAuMi4wOgorICB2ZXJzaW9uICIwLjIuOSIKKyAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcGFrby8tL3Bha28tMC4yLjkudGd6I2YzZjc1MjJm
NGVmNzgyMzQ4ZGE4MTYxYmFkOWVjZmQ1MWJmODNhNzUiCisKK3BhcmFtLWNhc2VAXjIuMS4wOgor
ICB2ZXJzaW9uICIyLjEuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vcGFyYW0tY2FzZS8tL3BhcmFtLWNhc2UtMi4xLjAudGd6IzI2MTlmOTBmZDZjODI5ZWQwYjk1
OGYxYzg0ZWQwM2E3NDVhNmQ3MGEiCisgIGRlcGVuZGVuY2llczoKKyAgICBuby1jYXNlICJeMi4y
LjAiCisKK3BhcnNlLWdsb2JAXjMuMC40OgorICB2ZXJzaW9uICIzLjAuNCIKKyAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcGFyc2UtZ2xvYi8tL3BhcnNlLWdsb2ItMy4w
LjQudGd6I2IyYzM3NmNmYjExZjM1NTEzYmFkZDE3M2VmMGJiNmUzYTM4ODM5MWMiCisgIGRlcGVu
ZGVuY2llczoKKyAgICBnbG9iLWJhc2UgIl4wLjMuMCIKKyAgICBpcy1kb3RmaWxlICJeMS4wLjAi
CisgICAgaXMtZXh0Z2xvYiAiXjEuMC4wIgorICAgIGlzLWdsb2IgIl4yLjAuMCIKKworcGFyc2Ut
anNvbkBeMi4yLjA6CisgIHZlcnNpb24gIjIuMi4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9wYXJzZS1qc29uLy0vcGFyc2UtanNvbi0yLjIuMC50Z3ojZjQ4MGY0
MDQzNGVmODA3NDFmODQ2OTA5OWY4ZGVhMThmNTVhNGRjOSIKKyAgZGVwZW5kZW5jaWVzOgorICAg
IGVycm9yLWV4ICJeMS4yLjAiCisKK3BhcnNlNUBeMS41LjE6CisgIHZlcnNpb24gIjEuNS4xIgor
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wYXJzZTUvLS9wYXJzZTUt
MS41LjEudGd6IzliN2YzYjBkZTMyYmU3OGRjMjQwMWIxNzU3M2NjYWYwZjZmNTlkOTQiCisKK3Bh
cnNldXJsQH4xLjMuMToKKyAgdmVyc2lvbiAiMS4zLjEiCisgIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL3BhcnNldXJsLy0vcGFyc2V1cmwtMS4zLjEudGd6I2M4YWI4Yzky
MjNiYTM0ODg4YWE2NGEyOTdiMjg4NTNiZWMxOGRhNTYiCisKK3Bhc2NhbC1jYXNlQF4yLjAuMDoK
KyAgdmVyc2lvbiAiMi4wLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL3Bhc2NhbC1jYXNlLy0vcGFzY2FsLWNhc2UtMi4wLjAudGd6IzM5YzI0OGJkZTVhOGRjMDJk
NTE2MDY5NmJkYjAxZTA0NGQwMTZlZTEiCisgIGRlcGVuZGVuY2llczoKKyAgICBjYW1lbC1jYXNl
ICJeMy4wLjAiCisgICAgdXBwZXItY2FzZS1maXJzdCAiXjEuMS4wIgorCitwYXRoLWJyb3dzZXJp
ZnlAMC4wLjA6CisgIHZlcnNpb24gIjAuMC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9wYXRoLWJyb3dzZXJpZnkvLS9wYXRoLWJyb3dzZXJpZnktMC4wLjAudGd6
I2EwYjg3MDcyOWFhZTIxNDAwNWI3ZDUwMzJlYzJjYmJiMGZiNDQ1MWEiCisKK3BhdGgtY2FzZUBe
Mi4xLjA6CisgIHZlcnNpb24gIjIuMS4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9wYXRoLWNhc2UvLS9wYXRoLWNhc2UtMi4xLjAudGd6IzVhYzQ5MWRlNjQyOTM2
ZTVkZmUwZTE4ZDE2YzQ2MWI4YmU4Y2YwNzMiCisgIGRlcGVuZGVuY2llczoKKyAgICBuby1jYXNl
ICJeMi4yLjAiCisKK3BhdGgtZXhpc3RzQF4xLjAuMDoKKyAgdmVyc2lvbiAiMS4wLjAiCisgIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3BhdGgtZXhpc3RzLy0vcGF0aC1l
eGlzdHMtMS4wLjAudGd6I2Q1YTg5OThlYjcxZWYzN2E3NGMzNGViMGQ5ZWJhNmU4NzhlZWEwODEi
CisKK3BhdGgtZXhpc3RzQF4yLjAuMCwgcGF0aC1leGlzdHNAMi4xLjA6CisgIHZlcnNpb24gIjIu
MS4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wYXRoLWV4aXN0
cy8tL3BhdGgtZXhpc3RzLTIuMS4wLnRneiMwZmViNmM2NGYwZmM1MThkOWE3NTRkZDVlZmI2MmM3
MDIyNzYxZjRiIgorICBkZXBlbmRlbmNpZXM6CisgICAgcGlua2llLXByb21pc2UgIl4yLjAuMCIK
KworcGF0aC1pcy1hYnNvbHV0ZUBeMS4wLjA6CisgIHZlcnNpb24gIjEuMC4xIgorICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wYXRoLWlzLWFic29sdXRlLy0vcGF0aC1p
cy1hYnNvbHV0ZS0xLjAuMS50Z3ojMTc0YjkyNjg3MzU1MzRmZmJjN2FjZTZiZjUzYTVhOWUxYjVj
NWY1ZiIKKworcGF0aC1pcy1pbnNpZGVAXjEuMC4xOgorICB2ZXJzaW9uICIxLjAuMiIKKyAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcGF0aC1pcy1pbnNpZGUvLS9wYXRo
LWlzLWluc2lkZS0xLjAuMi50Z3ojMzY1NDE3ZGVkZTQ0NDMwZDFjMTFhZjYxMDI3ZmFjZjA3NGJk
ZmM1MyIKKworcGF0aC1wYXJzZUBeMS4wLjU6CisgIHZlcnNpb24gIjEuMC41IgorICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wYXRoLXBhcnNlLy0vcGF0aC1wYXJzZS0x
LjAuNS50Z3ojM2MxYWRmODcxZWE5Y2Q2Yzk0MzFiNmVhMmJkNzRhMGZmMDU1YzRjMSIKKworcGF0
aC10by1yZWdleHBAMC4xLjc6CisgIHZlcnNpb24gIjAuMS43IgorICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wYXRoLXRvLXJlZ2V4cC8tL3BhdGgtdG8tcmVnZXhwLTAu
MS43LnRneiNkZjYwNDE3ODAwNWY1MjJmMTVlYjQ0OTBlNzI0N2ExYmZhYTY3ZjhjIgorCitwYXRo
LXR5cGVAXjEuMC4wOgorICB2ZXJzaW9uICIxLjEuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vcGF0aC10eXBlLy0vcGF0aC10eXBlLTEuMS4wLnRneiM1OWM0NGY3
ZWU0OTFkYTcwNGRhNDE1ZGE1YTQwNzBiYTRmOGZlNDQxIgorICBkZXBlbmRlbmNpZXM6CisgICAg
Z3JhY2VmdWwtZnMgIl40LjEuMiIKKyAgICBwaWZ5ICJeMi4wLjAiCisgICAgcGlua2llLXByb21p
c2UgIl4yLjAuMCIKKworcGJrZGYyLWNvbXBhdEAyLjAuMToKKyAgdmVyc2lvbiAiMi4wLjEiCisg
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Bia2RmMi1jb21wYXQvLS9w
YmtkZjItY29tcGF0LTIuMC4xLnRneiNiNmUwYzhmYTk5NDk0ZDk0ZTA1MTE1NzU4MDJhNTlhNWMx
NDJmMjg4IgorCitwaWZ5QF4yLjAuMDoKKyAgdmVyc2lvbiAiMi4zLjAiCisgIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3BpZnkvLS9waWZ5LTIuMy4wLnRneiNlZDE0MWE2
YWMwNDNhODQ5ZWE1ODg0OThlN2RjYThiMTUzMzBlOTBjIgorCitwaW5raWUtcHJvbWlzZUBeMi4w
LjA6CisgIHZlcnNpb24gIjIuMC4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9waW5raWUtcHJvbWlzZS8tL3BpbmtpZS1wcm9taXNlLTIuMC4xLnRneiMyMTM1ZDZk
ZmE3YTM1OGMwNjlhYzliMTc4Nzc2Mjg4MjI4NDUwZmZhIgorICBkZXBlbmRlbmNpZXM6CisgICAg
cGlua2llICJeMi4wLjAiCisKK3BpbmtpZUBeMi4wLjA6CisgIHZlcnNpb24gIjIuMC40IgorICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9waW5raWUvLS9waW5raWUtMi4w
LjQudGd6IzcyNTU2YjgwY2ZhMGQ0OGE5NzRlODBlNzcyNDhlODBlZDRmN2Y4NzAiCisKK3BrZy1k
aXJAXjEuMC4wOgorICB2ZXJzaW9uICIxLjAuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vcGtnLWRpci8tL3BrZy1kaXItMS4wLjAudGd6IzdhNGI1MDhhOGQ1YmIy
ZDYyOWQ0NDcwNTZmZjRlOWM5MzE0Y2YzZDQiCisgIGRlcGVuZGVuY2llczoKKyAgICBmaW5kLXVw
ICJeMS4wLjAiCisKK3BrZy11cEBeMS4wLjA6CisgIHZlcnNpb24gIjEuMC4wIgorICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wa2ctdXAvLS9wa2ctdXAtMS4wLjAudGd6
IzNlMDhmYjQ2MTUyNWM0NDIxNjI0YTMzYjlmN2U2ZDBhZjViMDVhMjYiCisgIGRlcGVuZGVuY2ll
czoKKyAgICBmaW5kLXVwICJeMS4wLjAiCisKK3BsdXJhbGl6ZUBeMS4yLjE6CisgIHZlcnNpb24g
IjEuMi4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wbHVyYWxp
emUvLS9wbHVyYWxpemUtMS4yLjEudGd6I2QxYTIxNDgzZmQyMmJiNDFlNThhMTJmYTM0MjE4MjMx
NDA4OTdjNDUiCisKK3Bvc3Rjc3MtY2FsY0BeNS4yLjA6CisgIHZlcnNpb24gIjUuMy4xIgorICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wb3N0Y3NzLWNhbGMvLS9wb3N0
Y3NzLWNhbGMtNS4zLjEudGd6Izc3YmFlN2NhOTI4YWQ4NTcxNmUyZmRhNDJmMjYxYmY3YzFkNjVi
NWUiCisgIGRlcGVuZGVuY2llczoKKyAgICBwb3N0Y3NzICJeNS4wLjIiCisgICAgcG9zdGNzcy1t
ZXNzYWdlLWhlbHBlcnMgIl4yLjAuMCIKKyAgICByZWR1Y2UtY3NzLWNhbGMgIl4xLjIuNiIKKwor
cG9zdGNzcy1jb2xvcm1pbkBeMi4xLjg6CisgIHZlcnNpb24gIjIuMi4xIgorICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wb3N0Y3NzLWNvbG9ybWluLy0vcG9zdGNzcy1j
b2xvcm1pbi0yLjIuMS50Z3ojZGM1NDIxYjZhZTZmNzc5ZWY2YmZkNDczNTJiOTRhYmU1OWQwMzE2
YiIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGNvbG9ybWluICJeMS4wLjUiCisgICAgcG9zdGNzcyAi
XjUuMC4xMyIKKyAgICBwb3N0Y3NzLXZhbHVlLXBhcnNlciAiXjMuMi4zIgorCitwb3N0Y3NzLWNv
bnZlcnQtdmFsdWVzQF4yLjMuNDoKKyAgdmVyc2lvbiAiMi40LjEiCisgIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Bvc3Rjc3MtY29udmVydC12YWx1ZXMvLS9wb3N0Y3Nz
LWNvbnZlcnQtdmFsdWVzLTIuNC4xLnRneiM0NWRjZTRkNGUzM2I3ZDk2N2I5N2E0ZDkzN2YyNzBl
YTk4ZDJmZTdhIgorICBkZXBlbmRlbmNpZXM6CisgICAgcG9zdGNzcyAiXjUuMC4xMSIKKyAgICBw
b3N0Y3NzLXZhbHVlLXBhcnNlciAiXjMuMS4yIgorCitwb3N0Y3NzLWRpc2NhcmQtY29tbWVudHNA
XjIuMC40OgorICB2ZXJzaW9uICIyLjAuNCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vcG9zdGNzcy1kaXNjYXJkLWNvbW1lbnRzLy0vcG9zdGNzcy1kaXNjYXJkLWNv
bW1lbnRzLTIuMC40LnRneiNiZWZlODlmYWZkNWIzZGFjZTVjY2NlNTFiNzZiODE1MTRiZTAwZTNk
IgorICBkZXBlbmRlbmNpZXM6CisgICAgcG9zdGNzcyAiXjUuMC4xNCIKKworcG9zdGNzcy1kaXNj
YXJkLWR1cGxpY2F0ZXNAXjIuMC4xOgorICB2ZXJzaW9uICIyLjAuMSIKKyAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcG9zdGNzcy1kaXNjYXJkLWR1cGxpY2F0ZXMvLS9w
b3N0Y3NzLWRpc2NhcmQtZHVwbGljYXRlcy0yLjAuMS50Z3ojNWZhZTNmMWE3MWRmM2UxOWNmZmIz
NzMwOWQxYTdkYmE1NmM0NTg5YyIKKyAgZGVwZW5kZW5jaWVzOgorICAgIHBvc3Rjc3MgIl41LjAu
NCIKKworcG9zdGNzcy1kaXNjYXJkLWVtcHR5QF4yLjAuMToKKyAgdmVyc2lvbiAiMi4xLjAiCisg
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Bvc3Rjc3MtZGlzY2FyZC1l
bXB0eS8tL3Bvc3Rjc3MtZGlzY2FyZC1lbXB0eS0yLjEuMC50Z3ojZDJiNGJkOWQ1Y2VkNWViZDhk
Y2FkZTc2NDBjN2Q3Y2Q3ZjRmOTJiNSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIHBvc3Rjc3MgIl41
LjAuMTQiCisKK3Bvc3Rjc3MtZGlzY2FyZC1vdmVycmlkZGVuQF4wLjEuMToKKyAgdmVyc2lvbiAi
MC4xLjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Bvc3Rjc3Mt
ZGlzY2FyZC1vdmVycmlkZGVuLy0vcG9zdGNzcy1kaXNjYXJkLW92ZXJyaWRkZW4tMC4xLjEudGd6
IzhiMWVhZjU1NGY2ODZmYjI4OGNkODc0YzU1NjY3YjBhYTM2NjhkNTgiCisgIGRlcGVuZGVuY2ll
czoKKyAgICBwb3N0Y3NzICJeNS4wLjE2IgorCitwb3N0Y3NzLWRpc2NhcmQtdW51c2VkQF4yLjIu
MToKKyAgdmVyc2lvbiAiMi4yLjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w
a2cuY29tL3Bvc3Rjc3MtZGlzY2FyZC11bnVzZWQvLS9wb3N0Y3NzLWRpc2NhcmQtdW51c2VkLTIu
Mi4xLnRneiM1ZDAyMWYwMjFhNmVkNmNlYzczMTBkNDYwMzc5NGE3NWRkZDUzMjMyIgorICBkZXBl
bmRlbmNpZXM6CisgICAgZmxhdHRlbiAiMS4wLjIiCisgICAgcG9zdGNzcyAiXjUuMC4xNCIKKyAg
ICB1bmlxcyAiXjIuMC4wIgorCitwb3N0Y3NzLWZpbHRlci1wbHVnaW5zQF4yLjAuMDoKKyAgdmVy
c2lvbiAiMi4wLjIiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Bv
c3Rjc3MtZmlsdGVyLXBsdWdpbnMvLS9wb3N0Y3NzLWZpbHRlci1wbHVnaW5zLTIuMC4yLnRneiM2
ZDg1ODYyNTM0ZDczNWFjNDIwZTRhODU4MDZlMWY1ZDQyODZkODRjIgorICBkZXBlbmRlbmNpZXM6
CisgICAgcG9zdGNzcyAiXjUuMC40IgorICAgIHVuaXFpZCAiXjQuMC4wIgorCitwb3N0Y3NzLWxv
YWRlckAwLjEzLjA6CisgIHZlcnNpb24gIjAuMTMuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vcG9zdGNzcy1sb2FkZXIvLS9wb3N0Y3NzLWxvYWRlci0wLjEzLjAu
dGd6IzcyZmRhZjBkMjk0NDRkZjc3ZDM3NTFjZTRlNjlkYzQwYmM5OWVkODUiCisgIGRlcGVuZGVu
Y2llczoKKyAgICBsb2FkZXItdXRpbHMgIl4wLjIuMTUiCisgICAgcG9zdGNzcyAiXjUuMi4wIgor
Citwb3N0Y3NzLW1lcmdlLWlkZW50c0BeMi4xLjU6CisgIHZlcnNpb24gIjIuMS43IgorICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wb3N0Y3NzLW1lcmdlLWlkZW50cy8t
L3Bvc3Rjc3MtbWVyZ2UtaWRlbnRzLTIuMS43LnRneiM0YzU1MzAzMTNjMDhlMWQ1YjNiYmYzZDJi
YmM3NDdlMjc4ZWVhMjcwIgorICBkZXBlbmRlbmNpZXM6CisgICAgaGFzICJeMS4wLjEiCisgICAg
cG9zdGNzcyAiXjUuMC4xMCIKKyAgICBwb3N0Y3NzLXZhbHVlLXBhcnNlciAiXjMuMS4xIgorCitw
b3N0Y3NzLW1lcmdlLWxvbmdoYW5kQF4yLjAuMToKKyAgdmVyc2lvbiAiMi4wLjEiCisgIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Bvc3Rjc3MtbWVyZ2UtbG9uZ2hhbmQv
LS9wb3N0Y3NzLW1lcmdlLWxvbmdoYW5kLTIuMC4xLnRneiNmZjU5YjVkZWM2ZDU4NmNlMmNlYTE4
MzEzOGY1NWM1ODc2ZmE5Y2RjIgorICBkZXBlbmRlbmNpZXM6CisgICAgcG9zdGNzcyAiXjUuMC40
IgorCitwb3N0Y3NzLW1lcmdlLXJ1bGVzQF4yLjAuMzoKKyAgdmVyc2lvbiAiMi4wLjEwIgorICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wb3N0Y3NzLW1lcmdlLXJ1bGVz
Ly0vcG9zdGNzcy1tZXJnZS1ydWxlcy0yLjAuMTAudGd6IzU0YjM2MGJlODA0ZTdlNjlhNWM3MjIy
NjM1MjQ3YjkyYTM1NjllOWIiCisgIGRlcGVuZGVuY2llczoKKyAgICBwb3N0Y3NzICJeNS4wLjQi
CisgICAgdmVuZG9ycyAiXjEuMC4wIgorCitwb3N0Y3NzLW1lc3NhZ2UtaGVscGVyc0BeMi4wLjA6
CisgIHZlcnNpb24gIjIuMC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9wb3N0Y3NzLW1lc3NhZ2UtaGVscGVycy8tL3Bvc3Rjc3MtbWVzc2FnZS1oZWxwZXJzLTIu
MC4wLnRneiNhNGYyZjRmYWI2ZTRmZTAwMmYwYWVkMDAwNDc4Y2RmNTJmOWJhNjBlIgorCitwb3N0
Y3NzLW1pbmlmeS1mb250LXZhbHVlc0BeMS4wLjI6CisgIHZlcnNpb24gIjEuMC41IgorICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wb3N0Y3NzLW1pbmlmeS1mb250LXZh
bHVlcy8tL3Bvc3Rjc3MtbWluaWZ5LWZvbnQtdmFsdWVzLTEuMC41LnRneiM0YjU4ZWRiNTY2NDFl
YmE3Yzg0NzRhYjM1MjZjYWZkN2JiZGVjYjY5IgorICBkZXBlbmRlbmNpZXM6CisgICAgb2JqZWN0
LWFzc2lnbiAiXjQuMC4xIgorICAgIHBvc3Rjc3MgIl41LjAuNCIKKyAgICBwb3N0Y3NzLXZhbHVl
LXBhcnNlciAiXjMuMC4yIgorCitwb3N0Y3NzLW1pbmlmeS1ncmFkaWVudHNAXjEuMC4xOgorICB2
ZXJzaW9uICIxLjAuMyIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
cG9zdGNzcy1taW5pZnktZ3JhZGllbnRzLy0vcG9zdGNzcy1taW5pZnktZ3JhZGllbnRzLTEuMC4z
LnRneiMwOWQyMjgxNDhjOTQyZmE4MTI2Njc5ZGU5ZmY3NzM4YjU0OTE5ZmUzIgorICBkZXBlbmRl
bmNpZXM6CisgICAgcG9zdGNzcyAiXjUuMC4xMiIKKyAgICBwb3N0Y3NzLXZhbHVlLXBhcnNlciAi
XjMuMS4zIgorCitwb3N0Y3NzLW1pbmlmeS1wYXJhbXNAXjEuMC40OgorICB2ZXJzaW9uICIxLjAu
NSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcG9zdGNzcy1taW5p
ZnktcGFyYW1zLy0vcG9zdGNzcy1taW5pZnktcGFyYW1zLTEuMC41LnRneiM4MmQ2MDI2NDNiODYx
NmE2MWZiMzYzNGQ3ZWRlMDI4OTgzNmQ2N2Y5IgorICBkZXBlbmRlbmNpZXM6CisgICAgYWxwaGFu
dW0tc29ydCAiXjEuMC4xIgorICAgIHBvc3Rjc3MgIl41LjAuMiIKKyAgICBwb3N0Y3NzLXZhbHVl
LXBhcnNlciAiXjMuMC4yIgorICAgIHVuaXFzICJeMi4wLjAiCisKK3Bvc3Rjc3MtbWluaWZ5LXNl
bGVjdG9yc0BeMi4wLjQ6CisgIHZlcnNpb24gIjIuMC41IgorICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9wb3N0Y3NzLW1pbmlmeS1zZWxlY3RvcnMvLS9wb3N0Y3NzLW1p
bmlmeS1zZWxlY3RvcnMtMi4wLjUudGd6IzRlMWY5NjZmYjQ5Yzk1MjY2ODA0MDE2YmE5YTNjNjY0
NWJiNjAxZTAiCisgIGRlcGVuZGVuY2llczoKKyAgICBhbHBoYW51bS1zb3J0ICJeMS4wLjIiCisg
ICAgcG9zdGNzcyAiXjUuMC4xNCIKKyAgICBwb3N0Y3NzLXNlbGVjdG9yLXBhcnNlciAiXjIuMC4w
IgorCitwb3N0Y3NzLW1vZHVsZXMtZXh0cmFjdC1pbXBvcnRzQF4xLjAuMDoKKyAgdmVyc2lvbiAi
MS4wLjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Bvc3Rjc3Mt
bW9kdWxlcy1leHRyYWN0LWltcG9ydHMvLS9wb3N0Y3NzLW1vZHVsZXMtZXh0cmFjdC1pbXBvcnRz
LTEuMC4xLnRneiM4ZmIzZmVmOWE2ZGQwNDIwZDNmNmQ0MzUzY2YxZmY3M2YyYjJhMzQxIgorICBk
ZXBlbmRlbmNpZXM6CisgICAgcG9zdGNzcyAiXjUuMC40IgorCitwb3N0Y3NzLW1vZHVsZXMtbG9j
YWwtYnktZGVmYXVsdEBeMS4wLjE6CisgIHZlcnNpb24gIjEuMS4xIgorICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wb3N0Y3NzLW1vZHVsZXMtbG9jYWwtYnktZGVmYXVs
dC8tL3Bvc3Rjc3MtbW9kdWxlcy1sb2NhbC1ieS1kZWZhdWx0LTEuMS4xLnRneiMyOWExMDY3M2Zh
MzdkMTkyNTEyNjVjYTJiYTMxNTBkOTA0MGViNGNlIgorICBkZXBlbmRlbmNpZXM6CisgICAgY3Nz
LXNlbGVjdG9yLXRva2VuaXplciAiXjAuNi4wIgorICAgIHBvc3Rjc3MgIl41LjAuNCIKKworcG9z
dGNzcy1tb2R1bGVzLXNjb3BlQF4xLjAuMDoKKyAgdmVyc2lvbiAiMS4wLjIiCisgIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Bvc3Rjc3MtbW9kdWxlcy1zY29wZS8tL3Bv
c3Rjc3MtbW9kdWxlcy1zY29wZS0xLjAuMi50Z3ojZmY5NzczOTVlNWUwNjIwMmQ3MzYyMjkwYjg4
YjFlOGNkMDQ5ZGUyOSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGNzcy1zZWxlY3Rvci10b2tlbml6
ZXIgIl4wLjYuMCIKKyAgICBwb3N0Y3NzICJeNS4wLjQiCisKK3Bvc3Rjc3MtbW9kdWxlcy12YWx1
ZXNAXjEuMS4wOgorICB2ZXJzaW9uICIxLjIuMiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vcG9zdGNzcy1tb2R1bGVzLXZhbHVlcy8tL3Bvc3Rjc3MtbW9kdWxlcy12
YWx1ZXMtMS4yLjIudGd6I2YwZTdkNDc2ZmUxZWQ4OGM1ZTRjN2Y5NzUzM2EzZTc3MmFkOTRjYTEi
CisgIGRlcGVuZGVuY2llczoKKyAgICBpY3NzLXJlcGxhY2Utc3ltYm9scyAiXjEuMC4yIgorICAg
IHBvc3Rjc3MgIl41LjAuMTQiCisKK3Bvc3Rjc3Mtbm9ybWFsaXplLWNoYXJzZXRAXjEuMS4wOgor
ICB2ZXJzaW9uICIxLjEuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vcG9zdGNzcy1ub3JtYWxpemUtY2hhcnNldC8tL3Bvc3Rjc3Mtbm9ybWFsaXplLWNoYXJzZXQt
MS4xLjAudGd6IzJmYmQzMGUxMjI0OGM0NDI5ODFkMzFlYTI0ODRkNDZmZDA2Mjg5NzAiCisgIGRl
cGVuZGVuY2llczoKKyAgICBwb3N0Y3NzICJeNS4wLjUiCisKK3Bvc3Rjc3Mtbm9ybWFsaXplLXVy
bEBeMy4wLjc6CisgIHZlcnNpb24gIjMuMC43IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9wb3N0Y3NzLW5vcm1hbGl6ZS11cmwvLS9wb3N0Y3NzLW5vcm1hbGl6ZS11
cmwtMy4wLjcudGd6IzZiZDkwZDBhNGJjNWExZGYyMmMyNmVhNjVjNTMyNTdkYzM4MjlmNGUiCisg
IGRlcGVuZGVuY2llczoKKyAgICBpcy1hYnNvbHV0ZS11cmwgIl4yLjAuMCIKKyAgICBub3JtYWxp
emUtdXJsICJeMS40LjAiCisgICAgcG9zdGNzcyAiXjUuMC4xNCIKKyAgICBwb3N0Y3NzLXZhbHVl
LXBhcnNlciAiXjMuMi4zIgorCitwb3N0Y3NzLW9yZGVyZWQtdmFsdWVzQF4yLjEuMDoKKyAgdmVy
c2lvbiAiMi4yLjIiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Bv
c3Rjc3Mtb3JkZXJlZC12YWx1ZXMvLS9wb3N0Y3NzLW9yZGVyZWQtdmFsdWVzLTIuMi4yLnRneiNi
ZThiNTExNzQxZmFiMmRhYzhlNjE0YTIzMDJlOWQxMDI2N2IwNzcxIgorICBkZXBlbmRlbmNpZXM6
CisgICAgcG9zdGNzcyAiXjUuMC40IgorICAgIHBvc3Rjc3MtdmFsdWUtcGFyc2VyICJeMy4wLjEi
CisKK3Bvc3Rjc3MtcmVkdWNlLWlkZW50c0BeMi4yLjI6CisgIHZlcnNpb24gIjIuMy4wIgorICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wb3N0Y3NzLXJlZHVjZS1pZGVu
dHMvLS9wb3N0Y3NzLXJlZHVjZS1pZGVudHMtMi4zLjAudGd6I2E2OTdiNTI5NTNlZDY4MjVmZmVh
NDA0ZTI2YTRmMTA1ZDhiOGQ1NjkiCisgIGRlcGVuZGVuY2llczoKKyAgICBwb3N0Y3NzICJeNS4w
LjQiCisgICAgcG9zdGNzcy12YWx1ZS1wYXJzZXIgIl4zLjAuMiIKKworcG9zdGNzcy1yZWR1Y2Ut
aW5pdGlhbEBeMS4wLjA6CisgIHZlcnNpb24gIjEuMC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9wb3N0Y3NzLXJlZHVjZS1pbml0aWFsLy0vcG9zdGNzcy1yZWR1
Y2UtaW5pdGlhbC0xLjAuMC50Z3ojOGY3MzliOTM4Mjg5ZWYyZTQ4OTM2ZDcxMDE3ODNlNDc0MWNh
OWJiYiIKKyAgZGVwZW5kZW5jaWVzOgorICAgIHBvc3Rjc3MgIl41LjAuNCIKKworcG9zdGNzcy1y
ZWR1Y2UtdHJhbnNmb3Jtc0BeMS4wLjM6CisgIHZlcnNpb24gIjEuMC4zIgorICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wb3N0Y3NzLXJlZHVjZS10cmFuc2Zvcm1zLy0v
cG9zdGNzcy1yZWR1Y2UtdHJhbnNmb3Jtcy0xLjAuMy50Z3ojZmMxOTNlNDM1YTk3M2MxMGY5ODAx
Yzc0NzAwYTgzMGY3OTY0MzM0MyIKKyAgZGVwZW5kZW5jaWVzOgorICAgIHBvc3Rjc3MgIl41LjAu
OCIKKyAgICBwb3N0Y3NzLXZhbHVlLXBhcnNlciAiXjMuMC4xIgorCitwb3N0Y3NzLXNlbGVjdG9y
LXBhcnNlckBeMi4wLjA6CisgIHZlcnNpb24gIjIuMi4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9wb3N0Y3NzLXNlbGVjdG9yLXBhcnNlci8tL3Bvc3Rjc3Mtc2Vs
ZWN0b3ItcGFyc2VyLTIuMi4xLnRneiNmZGJmNjk2MTAzYjEyYjBhNjQwNjBlNTYxMDUwN2Y0MTA0
OTFmN2M4IgorICBkZXBlbmRlbmNpZXM6CisgICAgZmxhdHRlbiAiXjEuMC4yIgorICAgIGluZGV4
ZXMtb2YgIl4xLjAuMSIKKyAgICB1bmlxICJeMS4wLjEiCisKK3Bvc3Rjc3Mtc3Znb0BeMi4xLjE6
CisgIHZlcnNpb24gIjIuMS41IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9wb3N0Y3NzLXN2Z28vLS9wb3N0Y3NzLXN2Z28tMi4xLjUudGd6IzQ2ZmMwMzYzZjAxYmFi
NmEzNmE5YWJiMDFjMjI5ZmNjNDUzNjMwOTQiCisgIGRlcGVuZGVuY2llczoKKyAgICBpcy1zdmcg
Il4yLjAuMCIKKyAgICBwb3N0Y3NzICJeNS4wLjE0IgorICAgIHBvc3Rjc3MtdmFsdWUtcGFyc2Vy
ICJeMy4yLjMiCisgICAgc3ZnbyAiXjAuNy4wIgorCitwb3N0Y3NzLXVuaXF1ZS1zZWxlY3RvcnNA
XjIuMC4yOgorICB2ZXJzaW9uICIyLjAuMiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vcG9zdGNzcy11bmlxdWUtc2VsZWN0b3JzLy0vcG9zdGNzcy11bmlxdWUtc2Vs
ZWN0b3JzLTIuMC4yLnRneiM5ODFkNTdkMjlkZGNiMzNlN2IxZGZlMWZkNDNiODY0OWY5MzNjYTFk
IgorICBkZXBlbmRlbmNpZXM6CisgICAgYWxwaGFudW0tc29ydCAiXjEuMC4xIgorICAgIHBvc3Rj
c3MgIl41LjAuNCIKKyAgICB1bmlxcyAiXjIuMC4wIgorCitwb3N0Y3NzLXZhbHVlLXBhcnNlckBe
My4wLjEsIHBvc3Rjc3MtdmFsdWUtcGFyc2VyQF4zLjAuMiwgcG9zdGNzcy12YWx1ZS1wYXJzZXJA
XjMuMS4xLCBwb3N0Y3NzLXZhbHVlLXBhcnNlckBeMy4xLjIsIHBvc3Rjc3MtdmFsdWUtcGFyc2Vy
QF4zLjEuMywgcG9zdGNzcy12YWx1ZS1wYXJzZXJAXjMuMi4zOgorICB2ZXJzaW9uICIzLjMuMCIK
KyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcG9zdGNzcy12YWx1ZS1w
YXJzZXIvLS9wb3N0Y3NzLXZhbHVlLXBhcnNlci0zLjMuMC50Z3ojODdmMzhmOWYxOGY3NzRhNGFi
NGM4YTIzMmY1YzVjZTg4NzJhOWQxNSIKKworcG9zdGNzcy16aW5kZXhAXjIuMC4xOgorICB2ZXJz
aW9uICIyLjEuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcG9z
dGNzcy16aW5kZXgvLS9wb3N0Y3NzLXppbmRleC0yLjEuMS50Z3ojZWEzZmJlNjU2Yzk3MzhhYTg3
MjllMmVlOTZlYzJhNDYwODliNzIwZiIKKyAgZGVwZW5kZW5jaWVzOgorICAgIHBvc3Rjc3MgIl41
LjAuNCIKKyAgICB1bmlxcyAiXjIuMC4wIgorCitwb3N0Y3NzQF41LjAuMTAsIHBvc3Rjc3NAXjUu
MC4xMSwgcG9zdGNzc0BeNS4wLjEyLCBwb3N0Y3NzQF41LjAuMTMsIHBvc3Rjc3NAXjUuMC4xNCwg
cG9zdGNzc0BeNS4wLjE2LCBwb3N0Y3NzQF41LjAuMiwgcG9zdGNzc0BeNS4wLjQsIHBvc3Rjc3NA
XjUuMC41LCBwb3N0Y3NzQF41LjAuNiwgcG9zdGNzc0BeNS4wLjgsIHBvc3Rjc3NAXjUuMS4yLCBw
b3N0Y3NzQF41LjIuMCwgcG9zdGNzc0BeNS4yLjI6CisgIHZlcnNpb24gIjUuMi40IgorICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wb3N0Y3NzLy0vcG9zdGNzcy01LjIu
NC50Z3ojOGViNGJlZTNlNWM0ZTA5MTU4NWIxMTZkZjMyZDhkYjI0YTUzNWYyMSIKKyAgZGVwZW5k
ZW5jaWVzOgorICAgIGNoYWxrICJeMS4xLjMiCisgICAganMtYmFzZTY0ICJeMi4xLjkiCisgICAg
c291cmNlLW1hcCAiXjAuNS42IgorICAgIHN1cHBvcnRzLWNvbG9yICJeMy4xLjIiCisKK3ByZWx1
ZGUtbHNAfjEuMS4yOgorICB2ZXJzaW9uICIxLjEuMiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vcHJlbHVkZS1scy8tL3ByZWx1ZGUtbHMtMS4xLjIudGd6IzIxOTMy
YTU0OWY1ZTUyZmZkOWE4MjdmNTcwZTA0YmU2MmE5N2RhNTQiCisKK3ByZXBlbmQtaHR0cEBeMS4w
LjA6CisgIHZlcnNpb24gIjEuMC40IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9wcmVwZW5kLWh0dHAvLS9wcmVwZW5kLWh0dHAtMS4wLjQudGd6I2Q0ZjQ1NjJiMGNl
MzY5NmU0MWFjNTJkMGUwMDJlNTdhNjM1ZGM2ZGMiCisKK3ByZXNlcnZlQF4wLjIuMDoKKyAgdmVy
c2lvbiAiMC4yLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3By
ZXNlcnZlLy0vcHJlc2VydmUtMC4yLjAudGd6IzgxNWVkMWY2ZWJjNjU5MjZmODY1YjMxMGMwNzEz
YmNiMzMxNWNlNGIiCisKK3ByZXR0eS1lcnJvckBeMi4wLjA6CisgIHZlcnNpb24gIjIuMC4xIgor
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wcmV0dHktZXJyb3IvLS9w
cmV0dHktZXJyb3ItMi4wLjEudGd6IzhhNzM3NWI5ZmUyNmU0M2I1MTAxNzk0ZTRkYmVhYzM2MmE4
ZDYyOWEiCisgIGRlcGVuZGVuY2llczoKKyAgICByZW5kZXJraWQgIn4yLjAuMCIKKyAgICB1dGls
YSAifjAuNCIKKworcHJldHR5LWZvcm1hdEBeMy43LjA6CisgIHZlcnNpb24gIjMuOC4wIgorICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wcmV0dHktZm9ybWF0Ly0vcHJl
dHR5LWZvcm1hdC0zLjguMC50Z3ojYmZiZWQ1NmQ1ZTlhNzc2NjQ1ZjRiMWZmN2FhMWEzYWM0ZmEz
YzM4NSIKKworcHJpdmF0ZUBeMC4xLjYsIHByaXZhdGVAfjAuMS41OgorICB2ZXJzaW9uICIwLjEu
NiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcHJpdmF0ZS8tL3By
aXZhdGUtMC4xLjYudGd6IzU1YzZhOTc2ZDBmOWJhZmI5OTI0ODUxMzUwZmU0N2I5YjVmYmI3YzEi
CisKK3Byb2Nlc3MtbmV4dGljay1hcmdzQH4xLjAuNjoKKyAgdmVyc2lvbiAiMS4wLjciCisgIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Byb2Nlc3MtbmV4dGljay1hcmdz
Ly0vcHJvY2Vzcy1uZXh0aWNrLWFyZ3MtMS4wLjcudGd6IzE1MGUyMGI3NTY1OTBhZDNmOTEwOTNm
MjVhNGYyYWQ4YmZmMzBiYTMiCisKK3Byb2Nlc3NAXjAuMTEuMCwgcHJvY2Vzc0B+MC4xMS4wOgor
ICB2ZXJzaW9uICIwLjExLjkiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL3Byb2Nlc3MvLS9wcm9jZXNzLTAuMTEuOS50Z3ojN2JkNWFkMjFhYTYyNTNlN2RhODY4MjI2
NGYxZTExZDExYzAzMThjMSIKKworcHJvZ3Jlc3NAXjEuMS44OgorICB2ZXJzaW9uICIxLjEuOCIK
KyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcHJvZ3Jlc3MvLS9wcm9n
cmVzcy0xLjEuOC50Z3ojZTI2MGM3OGY2MTYxY2RkOWIwZTU2Y2MzZTBhODVkZTE3YzdhNTdiZSIK
KworcHJvbWlzZUBeNy4xLjEsIHByb21pc2VANy4xLjE6CisgIHZlcnNpb24gIjcuMS4xIgorICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wcm9taXNlLy0vcHJvbWlzZS03
LjEuMS50Z3ojNDg5NjU0YzY5MjYxNmI4YWE1NWIwNzI0ZmE4MDliYjdkYjQ5YzViZiIKKyAgZGVw
ZW5kZW5jaWVzOgorICAgIGFzYXAgIn4yLjAuMyIKKworcHJveHktYWRkckB+MS4xLjI6CisgIHZl
cnNpb24gIjEuMS4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9w
cm94eS1hZGRyLy0vcHJveHktYWRkci0xLjEuMi50Z3ojYjRjYzVmMjI2MTBkOTUzNTgyNGMxMjNh
ZWY5ZDNjZjczYzQwYmEzNyIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGZvcndhcmRlZCAifjAuMS4w
IgorICAgIGlwYWRkci5qcyAiMS4xLjEiCisKK3ByckB+MC4wLjA6CisgIHZlcnNpb24gIjAuMC4w
IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wcnIvLS9wcnItMC4w
LjAudGd6IzFhODRiODU5MDgzMjU1MDE0MTE4NTNkMDA4MWVlM2ZhODZlMjkyNmEiCisKK3BzZXVk
b21hcEBeMS4wLjE6CisgIHZlcnNpb24gIjEuMC4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9wc2V1ZG9tYXAvLS9wc2V1ZG9tYXAtMS4wLjIudGd6I2YwNTJhMjhk
YTcwZTYxODkxN2VmMGE4YWMzNGMxYWU1YTY4Mjg2YjMiCisKK3B1bnljb2RlQF4xLjIuNDoKKyAg
dmVyc2lvbiAiMS40LjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L3B1bnljb2RlLy0vcHVueWNvZGUtMS40LjEudGd6I2MwZDVhNjNiMjcxODgwMGFkOGUxZWIwZmE1
MjY5Yzg0ZGQ0MTg0NWUiCisKK3B1bnljb2RlQDEuMy4yOgorICB2ZXJzaW9uICIxLjMuMiIKKyAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcHVueWNvZGUvLS9wdW55Y29k
ZS0xLjMuMi50Z3ojOTY1M2EwMzZmYjdjMWVlNDIzNDJmMjMyNWNjZWVmZWEzOTI2YzQ4ZCIKKwor
cUBeMS4xLjI6CisgIHZlcnNpb24gIjEuNC4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9xLy0vcS0xLjQuMS50Z3ojNTU3MDViY2Q5M2M1ZjM2NzM1MzBjMmMyY2Jj
MGMyYjNhZGRjMjg2ZSIKKworcXNAfjYuMi4wOgorICB2ZXJzaW9uICI2LjIuMSIKKyAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcXMvLS9xcy02LjIuMS50Z3ojY2UwM2M1
ZmYwOTM1YmMxZDlkNjlhOWYxNGNiZDE4ZTU2OGQ2NzYyNSIKKworcXNANi4yLjA6CisgIHZlcnNp
b24gIjYuMi4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9xcy8t
L3FzLTYuMi4wLnRneiMzYjc4NDhjMDNjMmRlY2U2OWE5NTIyYjBmYWU4YzQxMjZkNzQ1ZjNiIgor
CitxdWVyeS1zdHJpbmdAXjQuMS4wOgorICB2ZXJzaW9uICI0LjIuMyIKKyAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcXVlcnktc3RyaW5nLy0vcXVlcnktc3RyaW5nLTQu
Mi4zLnRneiM5ZjI3MjczZDIwN2EyNWE4ZWU0YzdiOGM3NGRjZDQ1ZDU1NmRiODIyIgorICBkZXBl
bmRlbmNpZXM6CisgICAgb2JqZWN0LWFzc2lnbiAiXjQuMS4wIgorICAgIHN0cmljdC11cmktZW5j
b2RlICJeMS4wLjAiCisKK3F1ZXJ5c3RyaW5nLWVzM0B+MC4yLjA6CisgIHZlcnNpb24gIjAuMi4x
IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9xdWVyeXN0cmluZy1l
czMvLS9xdWVyeXN0cmluZy1lczMtMC4yLjEudGd6IzllYzYxZjc5MDQ5ODc1NzA3ZDY5NDE0NTk2
ZmQ5MDdhNGQ3MTFlNzMiCisKK3F1ZXJ5c3RyaW5nQDAuMi4wOgorICB2ZXJzaW9uICIwLjIuMCIK
KyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcXVlcnlzdHJpbmcvLS9x
dWVyeXN0cmluZy0wLjIuMC50Z3ojYjIwOTg0OTIwM2JiMjVkZjgyMGRhNzU2ZTc0NzAwNTg3ODUy
MTYyMCIKKworcXVlcnlzdHJpbmdpZnlAMC4wLng6CisgIHZlcnNpb24gIjAuMC40IgorICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9xdWVyeXN0cmluZ2lmeS8tL3F1ZXJ5
c3RyaW5naWZ5LTAuMC40LnRneiMwY2Y3Zjg0Zjk0NjNmZjBhZTUxYzRjNGIxNDJkOTViZTM3NzI0
ZDljIgorCityYW5kb21hdGljQF4xLjEuMzoKKyAgdmVyc2lvbiAiMS4xLjUiCisgIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3JhbmRvbWF0aWMvLS9yYW5kb21hdGljLTEu
MS41LnRneiM1ZTllZjVmMmQ1NzNjNjdiZDJiODEyNGFlOTBiNTE1NmU0NTc4NDBiIgorICBkZXBl
bmRlbmNpZXM6CisgICAgaXMtbnVtYmVyICJeMi4wLjIiCisgICAga2luZC1vZiAiXjMuMC4yIgor
CityYW5nZS1wYXJzZXJAXjEuMC4zLCByYW5nZS1wYXJzZXJAfjEuMi4wOgorICB2ZXJzaW9uICIx
LjIuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcmFuZ2UtcGFy
c2VyLy0vcmFuZ2UtcGFyc2VyLTEuMi4wLnRneiNmNDliZTZiNDg3ODk0ZGRjNDBkY2M5NGEzMjJm
NjExMDkyZTAwZDVlIgorCityY0B+MS4xLjA6CisgIHZlcnNpb24gIjEuMS42IgorICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9yYy8tL3JjLTEuMS42LnRneiM0MzY1MWI3
NmI2YWU1M2I1YzgwMmYxMTUxZmEzZmMzYjA1OTk2OWM5IgorICBkZXBlbmRlbmNpZXM6CisgICAg
ZGVlcC1leHRlbmQgIn4wLjQuMCIKKyAgICBpbmkgIn4xLjMuMCIKKyAgICBtaW5pbWlzdCAiXjEu
Mi4wIgorICAgIHN0cmlwLWpzb24tY29tbWVudHMgIn4xLjAuNCIKKworcmVhY3QtYWRkb25zLXRl
c3QtdXRpbHNAXjE1LjMuMDoKKyAgdmVyc2lvbiAiMTUuMy4yIgorICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9yZWFjdC1hZGRvbnMtdGVzdC11dGlscy8tL3JlYWN0LWFk
ZG9ucy10ZXN0LXV0aWxzLTE1LjMuMi50Z3ojYzA5YTQ0ZjU4MzQyNWE0YTljMWIzODQ0NGQ3YTZj
M2U2ZjBmNDFmNiIKKworcmVhY3QtZGV2LXV0aWxzQF4wLjIuMToKKyAgdmVyc2lvbiAiMC4yLjEi
CisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3JlYWN0LWRldi11dGls
cy8tL3JlYWN0LWRldi11dGlscy0wLjIuMS50Z3ojYzAxN2Q2ZjUzMDUwMmIyOGI3MzVkYmFjMzg0
MWE3Yjg2NjU4MzhmNSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGFuc2ktaHRtbCAiMC4wLjUiCisg
ICAgY2hhbGsgIjEuMS4zIgorICAgIGVzY2FwZS1zdHJpbmctcmVnZXhwICIxLjAuNSIKKyAgICBo
dG1sLWVudGl0aWVzICIxLjIuMCIKKyAgICBvcG4gIjQuMC4yIgorICAgIHNvY2tqcy1jbGllbnQg
IjEuMC4zIgorICAgIHN0cmlwLWFuc2kgIjMuMC4xIgorCityZWFjdC1kb21AXjE1LjMuMDoKKyAg
dmVyc2lvbiAiMTUuMy4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9yZWFjdC1kb20vLS9yZWFjdC1kb20tMTUuMy4yLnRneiNjNDZiMGFhNTM4MGQ3YjgzOGU3YTU5
YzRhN2JlZmYyZWQzMTU1MzFmIgorCityZWFjdC1yZWR1eEBeNC40LjU6CisgIHZlcnNpb24gIjQu
NC41IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9yZWFjdC1yZWR1
eC8tL3JlYWN0LXJlZHV4LTQuNC41LnRneiNmNTA5YTI5ODFiZTIyNTJkMTBjNjI5ZWY3YzU1OTM0
N2E0YWVjNDU3IgorICBkZXBlbmRlbmNpZXM6CisgICAgaG9pc3Qtbm9uLXJlYWN0LXN0YXRpY3Mg
Il4xLjAuMyIKKyAgICBpbnZhcmlhbnQgIl4yLjAuMCIKKyAgICBsb2Rhc2ggIl40LjIuMCIKKyAg
ICBsb29zZS1lbnZpZnkgIl4xLjEuMCIKKworcmVhY3Qtc2NyaXB0c0BeMC42LjA6CisgIHZlcnNp
b24gIjAuNi4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9yZWFj
dC1zY3JpcHRzLy0vcmVhY3Qtc2NyaXB0cy0wLjYuMS50Z3ojNTI2Y2M0NzJhZTBjMGRlNmJjNGZk
Y2JiMTk4YWYyYTYyYzZkNDY3MSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGF1dG9wcmVmaXhlciAi
Ni40LjEiCisgICAgYmFiZWwtY29yZSAiNi4xNC4wIgorICAgIGJhYmVsLWVzbGludCAiNi4xLjIi
CisgICAgYmFiZWwtamVzdCAiMTUuMC4wIgorICAgIGJhYmVsLWxvYWRlciAiNi4yLjUiCisgICAg
YmFiZWwtcHJlc2V0LXJlYWN0LWFwcCAiXjAuMi4xIgorICAgIGNhc2Utc2Vuc2l0aXZlLXBhdGhz
LXdlYnBhY2stcGx1Z2luICIxLjEuNCIKKyAgICBjaGFsayAiMS4xLjMiCisgICAgY29ubmVjdC1o
aXN0b3J5LWFwaS1mYWxsYmFjayAiMS4zLjAiCisgICAgY3Jvc3Mtc3Bhd24gIjQuMC4wIgorICAg
IGNzcy1sb2FkZXIgIjAuMjQuMCIKKyAgICBkZXRlY3QtcG9ydCAiMS4wLjAiCisgICAgZG90ZW52
ICIyLjAuMCIKKyAgICBlc2xpbnQgIjMuNS4wIgorICAgIGVzbGludC1jb25maWctcmVhY3QtYXBw
ICJeMC4yLjEiCisgICAgZXNsaW50LWxvYWRlciAiMS41LjAiCisgICAgZXNsaW50LXBsdWdpbi1m
bG93dHlwZSAiMi4xOC4xIgorICAgIGVzbGludC1wbHVnaW4taW1wb3J0ICIxLjEyLjAiCisgICAg
ZXNsaW50LXBsdWdpbi1qc3gtYTExeSAiMi4yLjIiCisgICAgZXNsaW50LXBsdWdpbi1yZWFjdCAi
Ni4zLjAiCisgICAgZXh0cmFjdC10ZXh0LXdlYnBhY2stcGx1Z2luICIxLjAuMSIKKyAgICBmaWxl
LWxvYWRlciAiMC45LjAiCisgICAgZmlsZXNpemUgIjMuMy4wIgorICAgIGZpbmQtY2FjaGUtZGly
ICIwLjEuMSIKKyAgICBmcy1leHRyYSAiMC4zMC4wIgorICAgIGd6aXAtc2l6ZSAiMy4wLjAiCisg
ICAgaHRtbC13ZWJwYWNrLXBsdWdpbiAiMi4yMi4wIgorICAgIGh0dHAtcHJveHktbWlkZGxld2Fy
ZSAiMC4xNy4xIgorICAgIGplc3QgIjE1LjEuMSIKKyAgICBqc29uLWxvYWRlciAiMC41LjQiCisg
ICAgb2JqZWN0LWFzc2lnbiAiNC4xLjAiCisgICAgcGF0aC1leGlzdHMgIjIuMS4wIgorICAgIHBv
c3Rjc3MtbG9hZGVyICIwLjEzLjAiCisgICAgcHJvbWlzZSAiNy4xLjEiCisgICAgcmVhY3QtZGV2
LXV0aWxzICJeMC4yLjEiCisgICAgcmVjdXJzaXZlLXJlYWRkaXIgIjIuMS4wIgorICAgIHJpbXJh
ZiAiMi41LjQiCisgICAgc3RyaXAtYW5zaSAiMy4wLjEiCisgICAgc3R5bGUtbG9hZGVyICIwLjEz
LjEiCisgICAgdXJsLWxvYWRlciAiMC41LjciCisgICAgd2VicGFjayAiMS4xMy4yIgorICAgIHdl
YnBhY2stZGV2LXNlcnZlciAiMS4xNi4xIgorICAgIHdoYXR3Zy1mZXRjaCAiMS4wLjAiCisgIG9w
dGlvbmFsRGVwZW5kZW5jaWVzOgorICAgIGZzZXZlbnRzICIxLjAuMTQiCisKK3JlYWN0QF4xNS4z
LjA6CisgIHZlcnNpb24gIjE1LjMuMiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vcmVhY3QvLS9yZWFjdC0xNS4zLjIudGd6I2E3YmNjZDJmZWU4YWYxMjZiMDMxN2Uy
MjJjMjhkMWQ1NDUyOGQwOWUiCisgIGRlcGVuZGVuY2llczoKKyAgICBmYmpzICJeMC44LjQiCisg
ICAgbG9vc2UtZW52aWZ5ICJeMS4xLjAiCisgICAgb2JqZWN0LWFzc2lnbiAiXjQuMS4wIgorCity
ZWFkLXBrZy11cEBeMS4wLjE6CisgIHZlcnNpb24gIjEuMC4xIgorICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9yZWFkLXBrZy11cC8tL3JlYWQtcGtnLXVwLTEuMC4xLnRn
eiM5ZDYzYzEzMjc2YzA2NTkxOGQ1N2YwMDJhNTdmNDBhMWI2NDNmYjAyIgorICBkZXBlbmRlbmNp
ZXM6CisgICAgZmluZC11cCAiXjEuMC4wIgorICAgIHJlYWQtcGtnICJeMS4wLjAiCisKK3JlYWQt
cGtnQF4xLjAuMDoKKyAgdmVyc2lvbiAiMS4xLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL3JlYWQtcGtnLy0vcmVhZC1wa2ctMS4xLjAudGd6I2Y1ZmZhYTVlY2Qy
OWNiMzFjMDQ3NGJjYTdkNzU2YjZiYjI5ZTNmMjgiCisgIGRlcGVuZGVuY2llczoKKyAgICBsb2Fk
LWpzb24tZmlsZSAiXjEuMC4wIgorICAgIG5vcm1hbGl6ZS1wYWNrYWdlLWRhdGEgIl4yLjMuMiIK
KyAgICBwYXRoLXR5cGUgIl4xLjAuMCIKKworcmVhZGFibGUtc3RyZWFtQF4xLjAuMjctMSwgcmVh
ZGFibGUtc3RyZWFtQF4xLjEuMTM6CisgIHZlcnNpb24gIjEuMS4xNCIKKyAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcmVhZGFibGUtc3RyZWFtLy0vcmVhZGFibGUtc3Ry
ZWFtLTEuMS4xNC50Z3ojN2NmNGM1NGVmNjQ4ZTM4MTMwODRjNjM2ZGQyMDc5ZTE2NmMwODFkOSIK
KyAgZGVwZW5kZW5jaWVzOgorICAgIGNvcmUtdXRpbC1pcyAifjEuMC4wIgorICAgIGluaGVyaXRz
ICJ+Mi4wLjEiCisgICAgaXNhcnJheSAiMC4wLjEiCisgICAgc3RyaW5nX2RlY29kZXIgIn4wLjEw
LngiCisKKyJyZWFkYWJsZS1zdHJlYW1AXjIuMC4wIHx8IF4xLjEuMTMiLCByZWFkYWJsZS1zdHJl
YW1AXjIuMC4xLCByZWFkYWJsZS1zdHJlYW1AXjIuMC4yLCByZWFkYWJsZS1zdHJlYW1AfjIuMS40
OgorICB2ZXJzaW9uICIyLjEuNSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vcmVhZGFibGUtc3RyZWFtLy0vcmVhZGFibGUtc3RyZWFtLTIuMS41LnRneiM2NmZhOGI3
MjBlMTQzOGIzNjQ2ODFmMmFkMWE2M2M2MTg0NDhjOWQwIgorICBkZXBlbmRlbmNpZXM6CisgICAg
YnVmZmVyLXNoaW1zICJeMS4wLjAiCisgICAgY29yZS11dGlsLWlzICJ+MS4wLjAiCisgICAgaW5o
ZXJpdHMgIn4yLjAuMSIKKyAgICBpc2FycmF5ICJ+MS4wLjAiCisgICAgcHJvY2Vzcy1uZXh0aWNr
LWFyZ3MgIn4xLjAuNiIKKyAgICBzdHJpbmdfZGVjb2RlciAifjAuMTAueCIKKyAgICB1dGlsLWRl
cHJlY2F0ZSAifjEuMC4xIgorCityZWFkYWJsZS1zdHJlYW1AfjIuMC4wLCByZWFkYWJsZS1zdHJl
YW1AfjIuMC41OgorICB2ZXJzaW9uICIyLjAuNiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vcmVhZGFibGUtc3RyZWFtLy0vcmVhZGFibGUtc3RyZWFtLTIuMC42LnRn
eiM4ZjkwMzQxZTY4YTUzY2NjOTI4Nzg4ZGFjZmNkMTFiMzZlYjliNzhlIgorICBkZXBlbmRlbmNp
ZXM6CisgICAgY29yZS11dGlsLWlzICJ+MS4wLjAiCisgICAgaW5oZXJpdHMgIn4yLjAuMSIKKyAg
ICBpc2FycmF5ICJ+MS4wLjAiCisgICAgcHJvY2Vzcy1uZXh0aWNrLWFyZ3MgIn4xLjAuNiIKKyAg
ICBzdHJpbmdfZGVjb2RlciAifjAuMTAueCIKKyAgICB1dGlsLWRlcHJlY2F0ZSAifjEuMC4xIgor
CityZWFkYWJsZS1zdHJlYW1AMS4wOgorICB2ZXJzaW9uICIxLjAuMzQiCisgIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3JlYWRhYmxlLXN0cmVhbS8tL3JlYWRhYmxlLXN0
cmVhbS0xLjAuMzQudGd6IzEyNTgyMGUzNGJjODQyZDJmMmFhYWZhZmU0YzI5MTZlZTMyYzE1N2Mi
CisgIGRlcGVuZGVuY2llczoKKyAgICBjb3JlLXV0aWwtaXMgIn4xLjAuMCIKKyAgICBpbmhlcml0
cyAifjIuMC4xIgorICAgIGlzYXJyYXkgIjAuMC4xIgorICAgIHN0cmluZ19kZWNvZGVyICJ+MC4x
MC54IgorCityZWFkYWJsZS1zdHJlYW1AMS4xOgorICB2ZXJzaW9uICIxLjEuMTMiCisgIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3JlYWRhYmxlLXN0cmVhbS8tL3JlYWRh
YmxlLXN0cmVhbS0xLjEuMTMudGd6I2Y2ZWVmNzY0ZjUxNGM4OWUyYjllMjMxNDZhNzViYTEwNjc1
NmQyM2UiCisgIGRlcGVuZGVuY2llczoKKyAgICBjb3JlLXV0aWwtaXMgIn4xLjAuMCIKKyAgICBp
bmhlcml0cyAifjIuMC4xIgorICAgIGlzYXJyYXkgIjAuMC4xIgorICAgIHN0cmluZ19kZWNvZGVy
ICJ+MC4xMC54IgorCityZWFkZGlycEBeMi4wLjA6CisgIHZlcnNpb24gIjIuMS4wIgorICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9yZWFkZGlycC8tL3JlYWRkaXJwLTIu
MS4wLnRneiM0ZWQwYWQwNjBkZjMwNzMzMDBjNDg0NDAzNzNmNzJkMWNjNjQyZDc4IgorICBkZXBl
bmRlbmNpZXM6CisgICAgZ3JhY2VmdWwtZnMgIl40LjEuMiIKKyAgICBtaW5pbWF0Y2ggIl4zLjAu
MiIKKyAgICByZWFkYWJsZS1zdHJlYW0gIl4yLjAuMiIKKyAgICBzZXQtaW1tZWRpYXRlLXNoaW0g
Il4xLjAuMSIKKworcmVhZGxpbmUyQF4xLjAuMToKKyAgdmVyc2lvbiAiMS4wLjEiCisgIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3JlYWRsaW5lMi8tL3JlYWRsaW5lMi0x
LjAuMS50Z3ojNDEwNTk2MDhmZmMxNTQ3NTdiNzE1ZDk5ODlkMTk5ZmZiZjM3MmUzNSIKKyAgZGVw
ZW5kZW5jaWVzOgorICAgIGNvZGUtcG9pbnQtYXQgIl4xLjAuMCIKKyAgICBpcy1mdWxsd2lkdGgt
Y29kZS1wb2ludCAiXjEuMC4wIgorICAgIG11dGUtc3RyZWFtICIwLjAuNSIKKworcmVjdXJzaXZl
LXJlYWRkaXJAMi4xLjA6CisgIHZlcnNpb24gIjIuMS4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9yZWN1cnNpdmUtcmVhZGRpci8tL3JlY3Vyc2l2ZS1yZWFkZGly
LTIuMS4wLnRneiM3OGI3YmZkNzk1ODJkM2Q3NTk2YjhmZjFiZDI5ZmJkNTAyMjlmNmFhIgorICBk
ZXBlbmRlbmNpZXM6CisgICAgbWluaW1hdGNoICIzLjAuMiIKKworcmVkZXllZEB+MS4wLjA6Cisg
IHZlcnNpb24gIjEuMC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9yZWRleWVkLy0vcmVkZXllZC0xLjAuMC50Z3ojNmNlMjUwNDVjOWUxZjliMjhjMGFlNzNjZTI5
NjBjOGNiNDgxODRiMSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGVzcHJpbWEgIn4yLjcuMCIKKwor
cmVkdWNlLWNzcy1jYWxjQF4xLjIuNjoKKyAgdmVyc2lvbiAiMS4zLjAiCisgIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3JlZHVjZS1jc3MtY2FsYy8tL3JlZHVjZS1jc3Mt
Y2FsYy0xLjMuMC50Z3ojNzQ3YzkxNGUwNDk2MTRhNGM5Y2ZiYmE2Mjk4NzFhZDFkMjkyNzcxNiIK
KyAgZGVwZW5kZW5jaWVzOgorICAgIGJhbGFuY2VkLW1hdGNoICJeMC40LjIiCisgICAgbWF0aC1l
eHByZXNzaW9uLWV2YWx1YXRvciAiXjEuMi4xNCIKKyAgICByZWR1Y2UtZnVuY3Rpb24tY2FsbCAi
XjEuMC4xIgorCityZWR1Y2UtZnVuY3Rpb24tY2FsbEBeMS4wLjE6CisgIHZlcnNpb24gIjEuMC4x
IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9yZWR1Y2UtZnVuY3Rp
b24tY2FsbC8tL3JlZHVjZS1mdW5jdGlvbi1jYWxsLTEuMC4xLnRneiNmYTAyZTEyNmU2OTU4MjQy
NjNjYWI5MWQzYTViMGZkYzFkZDI3YTlhIgorICBkZXBlbmRlbmNpZXM6CisgICAgYmFsYW5jZWQt
bWF0Y2ggIn4wLjEuMCIKKworcmVkdXhAXjMuNS4yOgorICB2ZXJzaW9uICIzLjYuMCIKKyAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcmVkdXgvLS9yZWR1eC0zLjYuMC50
Z3ojODg3YzJiM2QwYjliZDg2ZWNhMmJlNzA1NzFjMjc2NTRjMTllMTg4ZCIKKyAgZGVwZW5kZW5j
aWVzOgorICAgIGxvZGFzaCAiXjQuMi4xIgorICAgIGxvZGFzaC1lcyAiXjQuMi4xIgorICAgIGxv
b3NlLWVudmlmeSAiXjEuMS4wIgorICAgIHN5bWJvbC1vYnNlcnZhYmxlICJeMS4wLjIiCisKK3Jl
Z2VuZXJhdGVAXjEuMi4xOgorICB2ZXJzaW9uICIxLjMuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vcmVnZW5lcmF0ZS8tL3JlZ2VuZXJhdGUtMS4zLjEudGd6IzAz
MDAyMDNhNWQyZmRjZjg5MTE2ZGNlODQyNzVkMDExZjU5MDNmMzMiCisKK3JlZ2VuZXJhdG9yLXJ1
bnRpbWVAXjAuOS41OgorICB2ZXJzaW9uICIwLjkuNSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vcmVnZW5lcmF0b3ItcnVudGltZS8tL3JlZ2VuZXJhdG9yLXJ1bnRp
bWUtMC45LjUudGd6IzQwM2Q2ZDQwYTRiZGZmOWMzMzBkZDkzOTJkY2JiMmQ5YThiYmExZmMiCisK
K3JlZ2V4LWNhY2hlQF4wLjQuMjoKKyAgdmVyc2lvbiAiMC40LjMiCisgIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3JlZ2V4LWNhY2hlLy0vcmVnZXgtY2FjaGUtMC40LjMu
dGd6IzliMWE2YzM1ZDRkMGRmY2VmNTcxMWFlNjUxZThlOWQzZDcxMTQxNDUiCisgIGRlcGVuZGVu
Y2llczoKKyAgICBpcy1lcXVhbC1zaGFsbG93ICJeMC4xLjMiCisgICAgaXMtcHJpbWl0aXZlICJe
Mi4wLjAiCisKK3JlZ2V4cHUtY29yZUBeMS4wLjA6CisgIHZlcnNpb24gIjEuMC4wIgorICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9yZWdleHB1LWNvcmUvLS9yZWdleHB1
LWNvcmUtMS4wLjAudGd6Izg2YTc2M2Y1OGVlNGQ3YzJmNmIxMDJlNDc2NDA1MGRlN2VkOTBjNmIi
CisgIGRlcGVuZGVuY2llczoKKyAgICByZWdlbmVyYXRlICJeMS4yLjEiCisgICAgcmVnanNnZW4g
Il4wLjIuMCIKKyAgICByZWdqc3BhcnNlciAiXjAuMS40IgorCityZWdleHB1LWNvcmVAXjIuMC4w
OgorICB2ZXJzaW9uICIyLjAuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vcmVnZXhwdS1jb3JlLy0vcmVnZXhwdS1jb3JlLTIuMC4wLnRneiM0OWQwMzg4MzdiOGRj
ZjhiZmE1YjlhNDIxMzk5MzhlNmVhMmFlMjQwIgorICBkZXBlbmRlbmNpZXM6CisgICAgcmVnZW5l
cmF0ZSAiXjEuMi4xIgorICAgIHJlZ2pzZ2VuICJeMC4yLjAiCisgICAgcmVnanNwYXJzZXIgIl4w
LjEuNCIKKworcmVnanNnZW5AXjAuMi4wOgorICB2ZXJzaW9uICIwLjIuMCIKKyAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcmVnanNnZW4vLS9yZWdqc2dlbi0wLjIuMC50
Z3ojNmMwMTZhZGVhYzU1NGY3NTgyM2ZlMzdhYzA1YjkyZDVhNGVkYjFmNyIKKworcmVnanNwYXJz
ZXJAXjAuMS40OgorICB2ZXJzaW9uICIwLjEuNSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vcmVnanNwYXJzZXIvLS9yZWdqc3BhcnNlci0wLjEuNS50Z3ojN2VlOGY4
NGRjNmZhNzkyZDNmZDBhZTIyOGQyNGJkOTQ5ZWFkMjA1YyIKKyAgZGVwZW5kZW5jaWVzOgorICAg
IGpzZXNjICJ+MC41LjAiCisKK3JlbGF0ZXVybEAwLjIueDoKKyAgdmVyc2lvbiAiMC4yLjciCisg
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3JlbGF0ZXVybC8tL3JlbGF0
ZXVybC0wLjIuNy50Z3ojNTRkYmYzNzdlNTE0NDBhY2E5MGE0Y2QyNzQ2MDBkM2ZmMmQ4ODhhOSIK
KworcmVuZGVya2lkQH4yLjAuMDoKKyAgdmVyc2lvbiAiMi4wLjAiCisgIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3JlbmRlcmtpZC8tL3JlbmRlcmtpZC0yLjAuMC50Z3oj
MTg1OTc1M2U3YTVhZGJmMzU0NDNhYmEwZDRlNDU3OWU3OGFiZWU4NSIKKyAgZGVwZW5kZW5jaWVz
OgorICAgIGNzcy1zZWxlY3QgIl4xLjEuMCIKKyAgICBkb20tY29udmVydGVyICJ+MC4xIgorICAg
IGh0bWxwYXJzZXIyICJ+My4zLjAiCisgICAgc3RyaXAtYW5zaSAiXjMuMC4wIgorICAgIHV0aWxh
ICJ+MC4zIgorCityZXBlYXQtZWxlbWVudEBeMS4xLjI6CisgIHZlcnNpb24gIjEuMS4yIgorICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9yZXBlYXQtZWxlbWVudC8tL3Jl
cGVhdC1lbGVtZW50LTEuMS4yLnRneiNlZjA4OWExNzhkMTQ4M2JhYWU0ZDkzZWI5OGI0ZjllNGUx
MWQ5OTBhIgorCityZXBlYXQtc3RyaW5nQF4xLjUuMjoKKyAgdmVyc2lvbiAiMS41LjQiCisgIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3JlcGVhdC1zdHJpbmcvLS9yZXBl
YXQtc3RyaW5nLTEuNS40LnRneiM2NGVjMGM5MWUwZjRiNDc1ZjkwZDViNjQzNjUxZTNlNmU1YjZj
MmQ1IgorCityZXBlYXRpbmdAXjEuMS4wOgorICB2ZXJzaW9uICIxLjEuMyIKKyAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcmVwZWF0aW5nLy0vcmVwZWF0aW5nLTEuMS4z
LnRneiMzZDQxMTQyMTg4Nzc1Mzc0OTRmOTdmNzdmOTc4NWZhYjgxMGZhNGFjIgorICBkZXBlbmRl
bmNpZXM6CisgICAgaXMtZmluaXRlICJeMS4wLjAiCisKK3JlcXVlc3RAXjIuNTUuMCwgcmVxdWVz
dEAyLng6CisgIHZlcnNpb24gIjIuNzUuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vcmVxdWVzdC8tL3JlcXVlc3QtMi43NS4wLnRneiNkMmI4MjY4YTI4NmRhMTNl
YWE1ZDAxYWRmNWQxOGNjOTBmNjU3ZDkzIgorICBkZXBlbmRlbmNpZXM6CisgICAgYXdzLXNpZ24y
ICJ+MC42LjAiCisgICAgYXdzNCAiXjEuMi4xIgorICAgIGJsICJ+MS4xLjIiCisgICAgY2FzZWxl
c3MgIn4wLjExLjAiCisgICAgY29tYmluZWQtc3RyZWFtICJ+MS4wLjUiCisgICAgZXh0ZW5kICJ+
My4wLjAiCisgICAgZm9yZXZlci1hZ2VudCAifjAuNi4xIgorICAgIGZvcm0tZGF0YSAifjIuMC4w
IgorICAgIGhhci12YWxpZGF0b3IgIn4yLjAuNiIKKyAgICBoYXdrICJ+My4xLjMiCisgICAgaHR0
cC1zaWduYXR1cmUgIn4xLjEuMCIKKyAgICBpcy10eXBlZGFycmF5ICJ+MS4wLjAiCisgICAgaXNz
dHJlYW0gIn4wLjEuMiIKKyAgICBqc29uLXN0cmluZ2lmeS1zYWZlICJ+NS4wLjEiCisgICAgbWlt
ZS10eXBlcyAifjIuMS43IgorICAgIG5vZGUtdXVpZCAifjEuNC43IgorICAgIG9hdXRoLXNpZ24g
In4wLjguMSIKKyAgICBxcyAifjYuMi4wIgorICAgIHN0cmluZ3N0cmVhbSAifjAuMC40IgorICAg
IHRvdWdoLWNvb2tpZSAifjIuMy4wIgorICAgIHR1bm5lbC1hZ2VudCAifjAuNC4xIgorCityZXF1
aXJlLWRpcmVjdG9yeUBeMi4xLjE6CisgIHZlcnNpb24gIjIuMS4xIgorICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9yZXF1aXJlLWRpcmVjdG9yeS8tL3JlcXVpcmUtZGly
ZWN0b3J5LTIuMS4xLnRneiM4YzY0YWQ1ZmQzMGRhYjFjOTc2ZTIzNDRmZmU3Zjc5MmE2YTZkZjQy
IgorCityZXF1aXJlLW1haW4tZmlsZW5hbWVAXjEuMC4xOgorICB2ZXJzaW9uICIxLjAuMSIKKyAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcmVxdWlyZS1tYWluLWZpbGVu
YW1lLy0vcmVxdWlyZS1tYWluLWZpbGVuYW1lLTEuMC4xLnRneiM5N2Y3MTdiNjlkNDg3ODRmNWY1
MjZhNmM1YWE4ZmZkZGEwNTVhNGQxIgorCityZXF1aXJlLXVuY2FjaGVkQF4xLjAuMjoKKyAgdmVy
c2lvbiAiMS4wLjIiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Jl
cXVpcmUtdW5jYWNoZWQvLS9yZXF1aXJlLXVuY2FjaGVkLTEuMC4yLnRneiM2N2RhZDNiNzMzMDg5
ZTc3MDMwMTI0Njc4YTQ1OTU4OWZhZjZhN2VjIgorICBkZXBlbmRlbmNpZXM6CisgICAgY2FsbGVy
LXBhdGggIl4wLjEuMCIKKyAgICByZXNvbHZlLWZyb20gIl4xLjAuMCIKKworcmVxdWlyZXMtcG9y
dEAxLjAueCwgcmVxdWlyZXMtcG9ydEAxLngueDoKKyAgdmVyc2lvbiAiMS4wLjAiCisgIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3JlcXVpcmVzLXBvcnQvLS9yZXF1aXJl
cy1wb3J0LTEuMC4wLnRneiM5MjVkMjYwMWQzOWFjNDg1ZTA5MWNmMGRhNWM2ZTY5NGRjM2RjYWZm
IgorCityZXNvbHZlLWZyb21AXjEuMC4wOgorICB2ZXJzaW9uICIxLjAuMSIKKyAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcmVzb2x2ZS1mcm9tLy0vcmVzb2x2ZS1mcm9t
LTEuMC4xLnRneiMyNmNiZmU5MzVkMWFlZWVhYmIyOWJjM2ZlNWFlYjAxZTkzZDQ0MjI2IgorCity
ZXNvbHZlQF4xLjEuNiwgcmVzb2x2ZUAxLjEuNywgcmVzb2x2ZUAxLjEueDoKKyAgdmVyc2lvbiAi
MS4xLjciCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Jlc29sdmUv
LS9yZXNvbHZlLTEuMS43LnRneiMyMDMxMTRkODJhZDJjNWVkOWU4ZTA0MTFiMzkzMjg3NWU4ODll
OTdiIgorCityZXN0b3JlLWN1cnNvckBeMS4wLjE6CisgIHZlcnNpb24gIjEuMC4xIgorICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9yZXN0b3JlLWN1cnNvci8tL3Jlc3Rv
cmUtY3Vyc29yLTEuMC4xLnRneiMzNDY2MWY0Njg4NjMyN2ZlZDI5OTE0NzkxNTIyNTJkZjkyZGFh
NTQxIgorICBkZXBlbmRlbmNpZXM6CisgICAgZXhpdC1ob29rICJeMS4wLjAiCisgICAgb25ldGlt
ZSAiXjEuMC4wIgorCityaWdodC1hbGlnbkBeMC4xLjE6CisgIHZlcnNpb24gIjAuMS4zIgorICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9yaWdodC1hbGlnbi8tL3JpZ2h0
LWFsaWduLTAuMS4zLnRneiM2MTMzOWI3MjJmZTZhMzUxNTY4OTIxMGQyNGUxNGM5NjE0ODYxM2Vm
IgorICBkZXBlbmRlbmNpZXM6CisgICAgYWxpZ24tdGV4dCAiXjAuMS4xIgorCityaW1yYWZAXjIu
Mi44LCByaW1yYWZAXjIuNC4zLCByaW1yYWZAXjIuNC40LCByaW1yYWZAfjIuNS4wLCByaW1yYWZA
fjIuNS4xLCByaW1yYWZAMiwgcmltcmFmQDIuNS40OgorICB2ZXJzaW9uICIyLjUuNCIKKyAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcmltcmFmLy0vcmltcmFmLTIuNS40
LnRneiM5NjgwMDA5M2NiZjFhMGM4NmJkOTViNDYyNTQ2NzUzNWMyOWRmYTA0IgorICBkZXBlbmRl
bmNpZXM6CisgICAgZ2xvYiAiXjcuMC41IgorCityaXBlbWQxNjBAMC4yLjA6CisgIHZlcnNpb24g
IjAuMi4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9yaXBlbWQx
NjAvLS9yaXBlbWQxNjAtMC4yLjAudGd6IzJiZjE5OGJkZTE2N2NhY2ZhNTFjMGE5MjhlODRiNjhi
YmUxNzFmY2UiCisKK3J1bi1hc3luY0BeMC4xLjA6CisgIHZlcnNpb24gIjAuMS4wIgorICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9ydW4tYXN5bmMvLS9ydW4tYXN5bmMt
MC4xLjAudGd6I2M4YWQ0YTVlMTEwNjYxZTQwMmE3ZDIxYjUzMGUwMDlmMjVmOGUzODkiCisgIGRl
cGVuZGVuY2llczoKKyAgICBvbmNlICJeMS4zLjAiCisKK3J4LWxpdGVAXjMuMS4yOgorICB2ZXJz
aW9uICIzLjEuMiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcngt
bGl0ZS8tL3J4LWxpdGUtMy4xLjIudGd6IzE5Y2U1MDJjYTU3MjY2NWYzYjY0N2IxMDkzOWY5N2Zk
MTYxNWYxMDIiCisKK3NhbmVAfjEuNC4xOgorICB2ZXJzaW9uICIxLjQuMSIKKyAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc2FuZS8tL3NhbmUtMS40LjEudGd6Izg4Zjc2
M2Q3NDA0MGY1ZjBjMjU2YjYxNjNkYjM5OWJmMTEwYWM3MTUiCisgIGRlcGVuZGVuY2llczoKKyAg
ICBleGVjLXNoICJeMC4yLjAiCisgICAgZmItd2F0Y2htYW4gIl4xLjguMCIKKyAgICBtaW5pbWF0
Y2ggIl4zLjAuMiIKKyAgICBtaW5pbWlzdCAiXjEuMS4xIgorICAgIHdhbGtlciAifjEuMC41Igor
ICAgIHdhdGNoICJ+MC4xMC4wIgorCitzYXhAXjEuMS40LCBzYXhAfjEuMi4xOgorICB2ZXJzaW9u
ICIxLjIuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc2F4Ly0v
c2F4LTEuMi4xLnRneiM3YjhlNjU2MTkwYjIyOGU4MWE2NmFlYTc0ODQ4MGQ4MjhjZDJkMzdhIgor
CitzZW12ZXJAXjUuMS4wLCBzZW12ZXJAfjUuMy4wLCAic2VtdmVyQDIgfHwgMyB8fCA0IHx8IDUi
OgorICB2ZXJzaW9uICI1LjMuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vc2VtdmVyLy0vc2VtdmVyLTUuMy4wLnRneiM5YjJjZTVkM2RlMDJkMTdjNjAxMmFkMzI2
YWE2YjRkMGNmNTRmOTRmIgorCitzZW5kQDAuMTQuMToKKyAgdmVyc2lvbiAiMC4xNC4xIgorICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zZW5kLy0vc2VuZC0wLjE0LjEu
dGd6I2E5NTQ5ODQzMjUzOTJmNTE1MzJhNzc2MDc2MGU0NTk1OThjODlmN2EiCisgIGRlcGVuZGVu
Y2llczoKKyAgICBkZWJ1ZyAifjIuMi4wIgorICAgIGRlcGQgIn4xLjEuMCIKKyAgICBkZXN0cm95
ICJ+MS4wLjQiCisgICAgZW5jb2RldXJsICJ+MS4wLjEiCisgICAgZXNjYXBlLWh0bWwgIn4xLjAu
MyIKKyAgICBldGFnICJ+MS43LjAiCisgICAgZnJlc2ggIjAuMy4wIgorICAgIGh0dHAtZXJyb3Jz
ICJ+MS41LjAiCisgICAgbWltZSAiMS4zLjQiCisgICAgbXMgIjAuNy4xIgorICAgIG9uLWZpbmlz
aGVkICJ+Mi4zLjAiCisgICAgcmFuZ2UtcGFyc2VyICJ+MS4yLjAiCisgICAgc3RhdHVzZXMgIn4x
LjMuMCIKKworc2VudGVuY2UtY2FzZUBeMi4xLjA6CisgIHZlcnNpb24gIjIuMS4wIgorICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zZW50ZW5jZS1jYXNlLy0vc2VudGVu
Y2UtY2FzZS0yLjEuMC50Z3ojZDU5MmZiZWQ0NTdmZDFhNTllM2FmMGVlMTdlOTlmNmZkNzBkN2Vm
ZCIKKyAgZGVwZW5kZW5jaWVzOgorICAgIG5vLWNhc2UgIl4yLjIuMCIKKyAgICB1cHBlci1jYXNl
LWZpcnN0ICJeMS4xLjIiCisKK3NlcnZlLWluZGV4QF4xLjcuMjoKKyAgdmVyc2lvbiAiMS44LjAi
CisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3NlcnZlLWluZGV4Ly0v
c2VydmUtaW5kZXgtMS44LjAudGd6IzdjNWQ5NmMxM2ZiMTMxMTAxZjkzYzFjNTc3NGY4NTE2YTFl
NzhkM2IiCisgIGRlcGVuZGVuY2llczoKKyAgICBhY2NlcHRzICJ+MS4zLjMiCisgICAgYmF0Y2gg
IjAuNS4zIgorICAgIGRlYnVnICJ+Mi4yLjAiCisgICAgZXNjYXBlLWh0bWwgIn4xLjAuMyIKKyAg
ICBodHRwLWVycm9ycyAifjEuNS4wIgorICAgIG1pbWUtdHlwZXMgIn4yLjEuMTEiCisgICAgcGFy
c2V1cmwgIn4xLjMuMSIKKworc2VydmUtc3RhdGljQH4xLjExLjE6CisgIHZlcnNpb24gIjEuMTEu
MSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc2VydmUtc3RhdGlj
Ly0vc2VydmUtc3RhdGljLTEuMTEuMS50Z3ojZDZjY2U3NjkzNTA1ZjczM2M3NTlkZTU3YmVmYzFh
Zjc2YzBmMDgwNSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGVuY29kZXVybCAifjEuMC4xIgorICAg
IGVzY2FwZS1odG1sICJ+MS4wLjMiCisgICAgcGFyc2V1cmwgIn4xLjMuMSIKKyAgICBzZW5kICIw
LjE0LjEiCisKK3NldC1ibG9ja2luZ0BeMi4wLjAsIHNldC1ibG9ja2luZ0B+Mi4wLjA6CisgIHZl
cnNpb24gIjIuMC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9z
ZXQtYmxvY2tpbmcvLS9zZXQtYmxvY2tpbmctMi4wLjAudGd6IzA0NWY5NzgyZDAxMWFlOWE2ODAz
ZGRkMzgyYjI0MzkyYjNkODkwZjciCisKK3NldC1pbW1lZGlhdGUtc2hpbUBeMS4wLjE6CisgIHZl
cnNpb24gIjEuMC4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9z
ZXQtaW1tZWRpYXRlLXNoaW0vLS9zZXQtaW1tZWRpYXRlLXNoaW0tMS4wLjEudGd6IzRiMmIxYjI3
ZWI4MDhhOWY4ZGNjNDgxYTU4ZTVlNTZmNTk5ZjNmNjEiCisKK3NldHByb3RvdHlwZW9mQDEuMC4x
OgorICB2ZXJzaW9uICIxLjAuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vc2V0cHJvdG90eXBlb2YvLS9zZXRwcm90b3R5cGVvZi0xLjAuMS50Z3ojNTIwMDliMjc4
ODhjNGRjNDhmNTkxOTQ5YzBhODI3NTgzNGMxY2E3ZSIKKworc2hhLmpzQDIuMi42OgorICB2ZXJz
aW9uICIyLjIuNiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc2hh
LmpzLy0vc2hhLmpzLTIuMi42LnRneiMxN2RkZWRkYzVmNzIyZmI2NjUwMTY1ODg5NTQ2MTk3Nzg2
NzMxNWJhIgorCitzaGViYW5nLXJlZ2V4QF4xLjAuMDoKKyAgdmVyc2lvbiAiMS4wLjAiCisgIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3NoZWJhbmctcmVnZXgvLS9zaGVi
YW5nLXJlZ2V4LTEuMC4wLnRneiNkYTQyZjQ5NzQwYzBiNDJkYjJjYTk3Mjg1NzFjYjE5MGM5OGVm
ZWEzIgorCitzaGVsbGpzQF4wLjYuMDoKKyAgdmVyc2lvbiAiMC42LjEiCisgIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3NoZWxsanMvLS9zaGVsbGpzLTAuNi4xLnRneiNl
YzYyMTFiZWQxOTIwNDQyMDg4ZmUwZjcwYjI4MzcyMzJlZDJjOGE4IgorCitzaGVsbHdvcmRzQF4w
LjEuMDoKKyAgdmVyc2lvbiAiMC4xLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL3NoZWxsd29yZHMvLS9zaGVsbHdvcmRzLTAuMS4wLnRneiM2NmFmZDQ3YjZhMTI5
MzJkOTA3MWNiZmQ5OGE1MmU3ODVjZDBiYTE0IgorCitzaWduYWwtZXhpdEBeMy4wLjA6CisgIHZl
cnNpb24gIjMuMC4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9z
aWduYWwtZXhpdC8tL3NpZ25hbC1leGl0LTMuMC4xLnRneiM1YTRjODg0OTkyYjYzYTdhY2Q5YmFk
Yjc4OTRjM2VlOWNmY2NhZDgxIgorCitzbGFzaEBeMS4wLjA6CisgIHZlcnNpb24gIjEuMC4wIgor
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zbGFzaC8tL3NsYXNoLTEu
MC4wLnRneiNjNDFmMmY2YzM5ZmMxNmQxY2QxN2FkNGI1ZDg5NjExNGFlNDcwZDU1IgorCitzbGlj
ZS1hbnNpQDAuMC40OgorICB2ZXJzaW9uICIwLjAuNCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vc2xpY2UtYW5zaS8tL3NsaWNlLWFuc2ktMC4wLjQudGd6I2VkYmY4
OTAzZjY2ZjdjZTJmOGVhZmQ2Y2VlZDY1ZTI2NGM4MzFiMzUiCisKK3NuYWtlLWNhc2VAXjIuMS4w
OgorICB2ZXJzaW9uICIyLjEuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vc25ha2UtY2FzZS8tL3NuYWtlLWNhc2UtMi4xLjAudGd6IzQxYmRiMWI3M2YzMGVjNjZh
MDRkNGUyY2FkMWI3NjM4N2Q0ZDZkOWYiCisgIGRlcGVuZGVuY2llczoKKyAgICBuby1jYXNlICJe
Mi4yLjAiCisKK3NudHBAMS54Lng6CisgIHZlcnNpb24gIjEuMC45IgorICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zbnRwLy0vc250cC0xLjAuOS50Z3ojNjU0MTE4NGNj
OTBhZWVhNmM2ZTdiMzVlMjY1OTA4MjQ0M2M2NjE5OCIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGhv
ZWsgIjIueC54IgorCitzb2NranMtY2xpZW50QF4xLjAuMzoKKyAgdmVyc2lvbiAiMS4xLjEiCisg
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3NvY2tqcy1jbGllbnQvLS9z
b2NranMtY2xpZW50LTEuMS4xLnRneiMyODQ4NDNlOWE5Nzg0ZDdjNDc0YjE1NzFiMzI0MGZjYTlk
ZGE0YmIwIgorICBkZXBlbmRlbmNpZXM6CisgICAgZGVidWcgIl4yLjIuMCIKKyAgICBldmVudHNv
dXJjZSAifjAuMS42IgorICAgIGZheWUtd2Vic29ja2V0ICJ+MC4xMS4wIgorICAgIGluaGVyaXRz
ICJeMi4wLjEiCisgICAganNvbjMgIl4zLjMuMiIKKyAgICB1cmwtcGFyc2UgIl4xLjEuMSIKKwor
c29ja2pzLWNsaWVudEAxLjAuMzoKKyAgdmVyc2lvbiAiMS4wLjMiCisgIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3NvY2tqcy1jbGllbnQvLS9zb2NranMtY2xpZW50LTEu
MC4zLnRneiNiMGQ4MjgwOTk4NDYwZWIyNTY0YzVkNzlkN2UzZDdjZmQ4YTM1M2FkIgorICBkZXBl
bmRlbmNpZXM6CisgICAgZGVidWcgIl4yLjEuMCIKKyAgICBldmVudHNvdXJjZSAiXjAuMS4zIgor
ICAgIGZheWUtd2Vic29ja2V0ICJ+MC43LjMiCisgICAgaW5oZXJpdHMgIl4yLjAuMSIKKyAgICBq
c29uMyAiXjMuMy4yIgorICAgIHVybC1wYXJzZSAiXjEuMC4xIgorCitzb2NranNAXjAuMy4xNToK
KyAgdmVyc2lvbiAiMC4zLjE4IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9zb2NranMvLS9zb2NranMtMC4zLjE4LnRneiNkOWIyODkzMTZjYTdkZjc3NTk1ZWYyOTll
MDc1ZjBmOTM3ZWI0MjA3IgorICBkZXBlbmRlbmNpZXM6CisgICAgZmF5ZS13ZWJzb2NrZXQgIl4w
LjEwLjAiCisgICAgdXVpZCAiXjIuMC4yIgorCitzb3J0LWtleXNAXjEuMC4wOgorICB2ZXJzaW9u
ICIxLjEuMiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc29ydC1r
ZXlzLy0vc29ydC1rZXlzLTEuMS4yLnRneiM0NDFiNmQ0ZDM0Njc5OGYxYjRlNDllODkyMGFkZmJh
MGU1NDNmOWFkIgorICBkZXBlbmRlbmNpZXM6CisgICAgaXMtcGxhaW4tb2JqICJeMS4wLjAiCisK
K3NvdXJjZS1saXN0LW1hcEBeMC4xLjQsIHNvdXJjZS1saXN0LW1hcEB+MC4xLjA6CisgIHZlcnNp
b24gIjAuMS42IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zb3Vy
Y2UtbGlzdC1tYXAvLS9zb3VyY2UtbGlzdC1tYXAtMC4xLjYudGd6I2UxZTZmOTRmMGI0MGM0ZDI4
ZGNmOGY1Yjg3NjZlMGU0NTYzNjg3N2YiCisKK3NvdXJjZS1tYXAtc3VwcG9ydEBeMC40LjI6Cisg
IHZlcnNpb24gIjAuNC4zIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9zb3VyY2UtbWFwLXN1cHBvcnQvLS9zb3VyY2UtbWFwLXN1cHBvcnQtMC40LjMudGd6IzY5M2M4
MzgzZDQzODlhNDU2OTQ4Njk4N2MyMTk3NDRkZmM2MDE2ODUiCisgIGRlcGVuZGVuY2llczoKKyAg
ICBzb3VyY2UtbWFwICJeMC41LjMiCisKK3NvdXJjZS1tYXBAXjAuNC40LCBzb3VyY2UtbWFwQH4w
LjQuMSwgc291cmNlLW1hcEAwLjQueDoKKyAgdmVyc2lvbiAiMC40LjQiCisgIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3NvdXJjZS1tYXAvLS9zb3VyY2UtbWFwLTAuNC40
LnRneiNlYmE0ZjVkYTljMGRjOTk5ZGU2ODAzMmQ4YjRmNzYxNzM2NTIwMzZiIgorICBkZXBlbmRl
bmNpZXM6CisgICAgYW1kZWZpbmUgIj49MC4wLjQiCisKK3NvdXJjZS1tYXBAXjAuNS4wLCBzb3Vy
Y2UtbWFwQF4wLjUuMywgc291cmNlLW1hcEBeMC41LjYsIHNvdXJjZS1tYXBAfjAuNS4xLCBzb3Vy
Y2UtbWFwQH4wLjUuMzoKKyAgdmVyc2lvbiAiMC41LjYiCisgIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL3NvdXJjZS1tYXAvLS9zb3VyY2UtbWFwLTAuNS42LnRneiM3NWNl
MzhmNTJiZjA3MzNjNWE3ZjBjMTE4ZDgxMzM0YTJiYjVmNDEyIgorCitzb3VyY2UtbWFwQH4wLjIu
MDoKKyAgdmVyc2lvbiAiMC4yLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w
a2cuY29tL3NvdXJjZS1tYXAvLS9zb3VyY2UtbWFwLTAuMi4wLnRneiNkYWI3M2ZiY2ZjMmJhODE5
YjRkZTAzYmQ2ZjZlYWE0ODE2NGIzZjlkIgorICBkZXBlbmRlbmNpZXM6CisgICAgYW1kZWZpbmUg
Ij49MC4wLjQiCisKK3NwZHgtY29ycmVjdEB+MS4wLjA6CisgIHZlcnNpb24gIjEuMC4yIgorICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zcGR4LWNvcnJlY3QvLS9zcGR4
LWNvcnJlY3QtMS4wLjIudGd6IzRiMzA3M2Q5MzNmZjUxZjM5MTJmMDNhYzU1MTk0OThhNDE1MGRi
NDAiCisgIGRlcGVuZGVuY2llczoKKyAgICBzcGR4LWxpY2Vuc2UtaWRzICJeMS4wLjIiCisKK3Nw
ZHgtZXhwcmVzc2lvbi1wYXJzZUB+MS4wLjA6CisgIHZlcnNpb24gIjEuMC40IgorICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zcGR4LWV4cHJlc3Npb24tcGFyc2UvLS9z
cGR4LWV4cHJlc3Npb24tcGFyc2UtMS4wLjQudGd6IzliZGYyZjIwZTFmNDBlZDQ0N2ZiZTI3MzI2
NjE5MWZjZWQ1MTYyNmMiCisKK3NwZHgtbGljZW5zZS1pZHNAXjEuMC4yOgorICB2ZXJzaW9uICIx
LjIuMiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc3BkeC1saWNl
bnNlLWlkcy8tL3NwZHgtbGljZW5zZS1pZHMtMS4yLjIudGd6I2M5ZGY3YTM0MjQ1OTRhZGU2YmQx
MTkwMGQ1OTY2OTZkYzA2YmFjNTciCisKK3NwcmludGYtanNAfjEuMC4yOgorICB2ZXJzaW9uICIx
LjAuMyIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc3ByaW50Zi1q
cy8tL3NwcmludGYtanMtMS4wLjMudGd6IzA0ZTY5MjZmNjYyODk1MzU0ZjNkZDAxNTIwMzYzM2I4
NTcyOTdlMmMiCisKK3NzaHBrQF4xLjcuMDoKKyAgdmVyc2lvbiAiMS4xMC4xIgorICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zc2hway8tL3NzaHBrLTEuMTAuMS50Z3oj
MzBlMWE1ZDMyOTI0NDk3NGExYWY2MTUxMTMzOWQ1OTVhZjY2MzhiMCIKKyAgZGVwZW5kZW5jaWVz
OgorICAgIGFzbjEgIn4wLjIuMyIKKyAgICBhc3NlcnQtcGx1cyAiXjEuMC4wIgorICAgIGRhc2hk
YXNoICJeMS4xMi4wIgorICAgIGdldHBhc3MgIl4wLjEuMSIKKyAgb3B0aW9uYWxEZXBlbmRlbmNp
ZXM6CisgICAgYmNyeXB0LXBia2RmICJeMS4wLjAiCisgICAgZWNjLWpzYm4gIn4wLjEuMSIKKyAg
ICBqb2RpZDI1NTE5ICJeMS4wLjAiCisgICAganNibiAifjAuMS4wIgorICAgIHR3ZWV0bmFjbCAi
fjAuMTQuMCIKKworInN0YXR1c2VzQD49IDEuMy4wIDwgMiIsIHN0YXR1c2VzQH4xLjMuMDoKKyAg
dmVyc2lvbiAiMS4zLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L3N0YXR1c2VzLy0vc3RhdHVzZXMtMS4zLjAudGd6IzhlNTU3NThjYjIwZTc2ODJjMWY0ZmNlOGRj
YWIzMGJmMDFkMWUwN2EiCisKK3N0cmVhbS1icm93c2VyaWZ5QF4xLjAuMDoKKyAgdmVyc2lvbiAi
MS4wLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3N0cmVhbS1i
cm93c2VyaWZ5Ly0vc3RyZWFtLWJyb3dzZXJpZnktMS4wLjAudGd6I2JmOWI0YWJmYjQyYjI3NGQ3
NTE0NzllNDRlMGZmMjY1NmI2ZjExOTMiCisgIGRlcGVuZGVuY2llczoKKyAgICBpbmhlcml0cyAi
fjIuMC4xIgorICAgIHJlYWRhYmxlLXN0cmVhbSAiXjEuMC4yNy0xIgorCitzdHJlYW0tY2FjaGVA
fjAuMC4xOgorICB2ZXJzaW9uICIwLjAuMiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vc3RyZWFtLWNhY2hlLy0vc3RyZWFtLWNhY2hlLTAuMC4yLnRneiMxYWM1YWQ2
ODMyNDI4Y2E1NTY2N2RiZGVlMzk1ZGFkNGU2ZGIxMThmIgorCitzdHJpY3QtdXJpLWVuY29kZUBe
MS4wLjA6CisgIHZlcnNpb24gIjEuMS4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9zdHJpY3QtdXJpLWVuY29kZS8tL3N0cmljdC11cmktZW5jb2RlLTEuMS4wLnRn
eiMyNzliMjI1ZGYxZDU4MmIxZjU0ZTY1YWRkZDQzNTJlMThmYWEwNzEzIgorCitzdHJpbmdfZGVj
b2RlckB+MC4xMC4yNSwgc3RyaW5nX2RlY29kZXJAfjAuMTAueDoKKyAgdmVyc2lvbiAiMC4xMC4z
MSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc3RyaW5nX2RlY29k
ZXIvLS9zdHJpbmdfZGVjb2Rlci0wLjEwLjMxLnRneiM2MmUyMDNiYzQxNzY2YzZjMjhjOWZjODQz
MDFkYWIxYzUzMTBmYTk0IgorCitzdHJpbmctd2lkdGhAXjEuMC4xLCBzdHJpbmctd2lkdGhAXjEu
MC4yOgorICB2ZXJzaW9uICIxLjAuMiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vc3RyaW5nLXdpZHRoLy0vc3RyaW5nLXdpZHRoLTEuMC4yLnRneiMxMThiZGY1Yjhj
ZGM1MWEyYTdlNzBkMjExZTA3ZTJiMGI5YjEwN2QzIgorICBkZXBlbmRlbmNpZXM6CisgICAgY29k
ZS1wb2ludC1hdCAiXjEuMC4wIgorICAgIGlzLWZ1bGx3aWR0aC1jb2RlLXBvaW50ICJeMS4wLjAi
CisgICAgc3RyaXAtYW5zaSAiXjMuMC4wIgorCitzdHJpbmcucHJvdG90eXBlLmNvZGVwb2ludGF0
QF4wLjIuMDoKKyAgdmVyc2lvbiAiMC4yLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL3N0cmluZy5wcm90b3R5cGUuY29kZXBvaW50YXQvLS9zdHJpbmcucHJvdG90
eXBlLmNvZGVwb2ludGF0LTAuMi4wLnRneiM2YjI2ZTliZDNhZmNhYTdiZTNiNDI2OWI1MjZkZTFi
ODIwMDBhYzc4IgorCitzdHJpbmdzdHJlYW1AfjAuMC40OgorICB2ZXJzaW9uICIwLjAuNSIKKyAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc3RyaW5nc3RyZWFtLy0vc3Ry
aW5nc3RyZWFtLTAuMC41LnRneiM0ZTQ4NGNkNGRlNWEwYmJiZWUxOGU0NjMwNzcxMGE4YTgxNjIx
ODc4IgorCitzdHJpcC1hbnNpQF4zLjAuMCwgc3RyaXAtYW5zaUBeMy4wLjEsIHN0cmlwLWFuc2lA
My4wLjE6CisgIHZlcnNpb24gIjMuMC4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9zdHJpcC1hbnNpLy0vc3RyaXAtYW5zaS0zLjAuMS50Z3ojNmEzODVmYjg4NTNk
OTUyZDVmZjA1ZDBlOGFhZjk0Mjc4ZGM2M2RjZiIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGFuc2kt
cmVnZXggIl4yLjAuMCIKKworc3RyaXAtYm9tQF4yLjAuMDoKKyAgdmVyc2lvbiAiMi4wLjAiCisg
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3N0cmlwLWJvbS8tL3N0cmlw
LWJvbS0yLjAuMC50Z3ojNjIxOWE4NTYxNjUyMDQ5MWYzNTc4OGJkYmYxNDQ3YTk5YzdlNmIwZSIK
KyAgZGVwZW5kZW5jaWVzOgorICAgIGlzLXV0ZjggIl4wLjIuMCIKKworc3RyaXAtYm9tQF4zLjAu
MDoKKyAgdmVyc2lvbiAiMy4wLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w
a2cuY29tL3N0cmlwLWJvbS8tL3N0cmlwLWJvbS0zLjAuMC50Z3ojMjMzNGMxOGU5Yzc1OWY3YmRk
NTZmZGVmN2U5YWUzZDU4OGU2OGVkMyIKKworc3RyaXAtanNvbi1jb21tZW50c0B+MS4wLjEsIHN0
cmlwLWpzb24tY29tbWVudHNAfjEuMC40OgorICB2ZXJzaW9uICIxLjAuNCIKKyAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc3RyaXAtanNvbi1jb21tZW50cy8tL3N0cmlw
LWpzb24tY29tbWVudHMtMS4wLjQudGd6IzFlMTVmYmNhYzk3ZDNlZTk5YmYyZDczYjRjNjU2YjA4
MmJiYWZiOTEiCisKK3N0eWxlLWxvYWRlckAwLjEzLjE6CisgIHZlcnNpb24gIjAuMTMuMSIKKyAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc3R5bGUtbG9hZGVyLy0vc3R5
bGUtbG9hZGVyLTAuMTMuMS50Z3ojNDY4MjgwZWZiYzA0NzMwMjNjZDNhNmNkNTZlMzNiNWExZDdm
YzNhOSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGxvYWRlci11dGlscyAiXjAuMi43IgorCitzdXBw
b3J0cy1jb2xvckBeMi4wLjA6CisgIHZlcnNpb24gIjIuMC4wIgorICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zdXBwb3J0cy1jb2xvci8tL3N1cHBvcnRzLWNvbG9yLTIu
MC4wLnRneiM1MzVkMDQ1Y2U2YjYzNjNmYTQwMTE3MDg0NjI5OTk1ZTlkZjMyNGM3IgorCitzdXBw
b3J0cy1jb2xvckBeMy4xLjAsIHN1cHBvcnRzLWNvbG9yQF4zLjEuMSwgc3VwcG9ydHMtY29sb3JA
XjMuMS4yOgorICB2ZXJzaW9uICIzLjEuMiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vc3VwcG9ydHMtY29sb3IvLS9zdXBwb3J0cy1jb2xvci0zLjEuMi50Z3ojNzJh
MjYyODk0ZDlkNDA4Yjk1NmNhMDVmZjM3YjJlZDhhNmUyYTJkNSIKKyAgZGVwZW5kZW5jaWVzOgor
ICAgIGhhcy1mbGFnICJeMS4wLjAiCisKK3N2Z29AXjAuNy4wOgorICB2ZXJzaW9uICIwLjcuMSIK
KyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc3Znby8tL3N2Z28tMC43
LjEudGd6IzI4NzMyMGZlZDk3MmNiMDk3ZTcyYzJiYjE2ODVmOTZmZTA4ZjgwMzQiCisgIGRlcGVu
ZGVuY2llczoKKyAgICBjb2EgIn4xLjAuMSIKKyAgICBjb2xvcnMgIn4xLjEuMiIKKyAgICBjc3Nv
ICJ+Mi4yLjEiCisgICAganMteWFtbCAifjMuNi4xIgorICAgIG1rZGlycCAifjAuNS4xIgorICAg
IHNheCAifjEuMi4xIgorICAgIHdoZXQuZXh0ZW5kICJ+MC45LjkiCisKK3N3YXAtY2FzZUBeMS4x
LjA6CisgIHZlcnNpb24gIjEuMS4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9zd2FwLWNhc2UvLS9zd2FwLWNhc2UtMS4xLjIudGd6I2MzOTIwM2E0NTg3Mzg1ZmFk
M2M4NTBhMGJkMWJjYWZhMDgxOTc0ZTMiCisgIGRlcGVuZGVuY2llczoKKyAgICBsb3dlci1jYXNl
ICJeMS4xLjEiCisgICAgdXBwZXItY2FzZSAiXjEuMS4xIgorCitzeW1ib2wtb2JzZXJ2YWJsZUBe
MS4wLjI6CisgIHZlcnNpb24gIjEuMC4zIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9zeW1ib2wtb2JzZXJ2YWJsZS8tL3N5bWJvbC1vYnNlcnZhYmxlLTEuMC4zLnRn
eiMwZmRiMDA1ZTg0ZjM0NmE4OTlkNDkyYmViYTIzMDY4YjMyZDE1MjVhIgorCisic3ltYm9sLXRy
ZWVAPj0gMy4xLjAgPCA0LjAuMCI6CisgIHZlcnNpb24gIjMuMS40IgorICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zeW1ib2wtdHJlZS8tL3N5bWJvbC10cmVlLTMuMS40
LnRneiMwMmIyNzkzNDhkMzM3ZGViYzM5Njk0YzVjOTVmODgyZDQ0OGEzMTJhIgorCit0YWJsZUBe
My43Ljg6CisgIHZlcnNpb24gIjMuOC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS90YWJsZS8tL3RhYmxlLTMuOC4wLnRneiMyNTIxNjZjN2YzMjg2Njg0YTlkNTYx
YjBmM2E4OTI5Y2FmM2E5OTdiIgorICBkZXBlbmRlbmNpZXM6CisgICAgYWp2ICJeNC43LjAiCisg
ICAgYWp2LWtleXdvcmRzICJeMS4wLjAiCisgICAgY2hhbGsgIl4xLjEuMSIKKyAgICBsb2Rhc2gg
Il40LjAuMCIKKyAgICBzbGljZS1hbnNpICIwLjAuNCIKKyAgICBzdHJpbmctd2lkdGggIl4xLjAu
MSIKKwordGFwYWJsZUBeMC4xLjgsIHRhcGFibGVAfjAuMS44OgorICB2ZXJzaW9uICIwLjEuMTAi
CisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3RhcGFibGUvLS90YXBh
YmxlLTAuMS4xMC50Z3ojMjljMzU3MDdjMmI3MGU1MGQwNzQ4MmI1ZDIwMmU4ZWQ0NDZkYWZkNCIK
KwordGFyLXBhY2tAfjMuMS4wOgorICB2ZXJzaW9uICIzLjEuNCIKKyAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vdGFyLXBhY2svLS90YXItcGFjay0zLjEuNC50Z3ojYmM4
Y2Y5YTIyZjU4MzI3MzlmMTJmMzkxMGRhYzFlYjk3YjQ5NzA4YyIKKyAgZGVwZW5kZW5jaWVzOgor
ICAgIGRlYnVnICJ+Mi4yLjAiCisgICAgZnN0cmVhbSAifjEuMC4xMCIKKyAgICBmc3RyZWFtLWln
bm9yZSAifjEuMC41IgorICAgIG9uY2UgIn4xLjMuMyIKKyAgICByZWFkYWJsZS1zdHJlYW0gIn4y
LjEuNCIKKyAgICByaW1yYWYgIn4yLjUuMSIKKyAgICB0YXIgIn4yLjIuMSIKKyAgICB1aWQtbnVt
YmVyICJ+MC4wLjYiCisKK3RhckB+Mi4yLjAsIHRhckB+Mi4yLjE6CisgIHZlcnNpb24gIjIuMi4x
IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS90YXIvLS90YXItMi4y
LjEudGd6IzhlNGQyYTI1NmMwZTIxODVjNmIxOGFkNjk0YWVjOTY4YjgzY2IxZDEiCisgIGRlcGVu
ZGVuY2llczoKKyAgICBibG9jay1zdHJlYW0gIioiCisgICAgZnN0cmVhbSAiXjEuMC4yIgorICAg
IGluaGVyaXRzICIyIgorCit0ZXN0LWV4Y2x1ZGVAXjIuMS4xOgorICB2ZXJzaW9uICIyLjEuMyIK
KyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vdGVzdC1leGNsdWRlLy0v
dGVzdC1leGNsdWRlLTIuMS4zLnRneiNhOGQ4OTY4ZTFkYTgzMjY2Zjk4NjRmMjg1MmM1NWUyMjBm
MDY0MzRhIgorICBkZXBlbmRlbmNpZXM6CisgICAgYXJyaWZ5ICJeMS4wLjEiCisgICAgbWljcm9t
YXRjaCAiXjIuMy4xMSIKKyAgICBvYmplY3QtYXNzaWduICJeNC4xLjAiCisgICAgcmVhZC1wa2ct
dXAgIl4xLjAuMSIKKyAgICByZXF1aXJlLW1haW4tZmlsZW5hbWUgIl4xLjAuMSIKKwordGVzdGNo
ZWNrQF4wLjEuMDoKKyAgdmVyc2lvbiAiMC4xLjQiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL3Rlc3RjaGVjay8tL3Rlc3RjaGVjay0wLjEuNC50Z3ojOTAwNTZlZGQ0
OGQxMTk5NzcwMjYxNmNlNjcxNmYxOTdkODE5MDE2NCIKKwordGV4dC10YWJsZUB+MC4yLjA6Cisg
IHZlcnNpb24gIjAuMi4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS90ZXh0LXRhYmxlLy0vdGV4dC10YWJsZS0wLjIuMC50Z3ojN2Y1ZWU4MjNhZTgwNTIwN2MwMGFm
MmRmNGE4NGVjM2ZjZmE1NzBiNCIKKwordGhyb3VnaEBeMi4zLjY6CisgIHZlcnNpb24gIjIuMy44
IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS90aHJvdWdoLy0vdGhy
b3VnaC0yLjMuOC50Z3ojMGRkNGM5ZmZhYWJjMzU3OTYwYjFiNzI0MTE1ZDdlMGU4NmEyZTFmNSIK
KwordGltZXJzLWJyb3dzZXJpZnlAXjEuMC4xOgorICB2ZXJzaW9uICIxLjQuMiIKKyAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vdGltZXJzLWJyb3dzZXJpZnkvLS90aW1l
cnMtYnJvd3NlcmlmeS0xLjQuMi50Z3ojYzljNThiNTc1YmU4NDA3Mzc1Y2I1ZTI0NjJkYWNlZTc0
MzU5ZjQxZCIKKyAgZGVwZW5kZW5jaWVzOgorICAgIHByb2Nlc3MgIn4wLjExLjAiCisKK3RpdGxl
LWNhc2VAXjIuMS4wOgorICB2ZXJzaW9uICIyLjEuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vdGl0bGUtY2FzZS8tL3RpdGxlLWNhc2UtMi4xLjAudGd6I2M2OGNj
YjQyMzIwNzlkZWQ2NGY5NGI5MWI0OTQxYWRlOTEzOTE5NzkiCisgIGRlcGVuZGVuY2llczoKKyAg
ICBuby1jYXNlICJeMi4yLjAiCisgICAgdXBwZXItY2FzZSAiXjEuMC4zIgorCit0bXBsQDEuMC54
OgorICB2ZXJzaW9uICIxLjAuNCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vdG1wbC8tL3RtcGwtMS4wLjQudGd6IzIzNjQwZGQ3YjQyZDAwNDMzOTExMTQwODIwZTVj
ZjQ0MGU1MjFkZDEiCisKK3RvLWZhc3QtcHJvcGVydGllc0BeMS4wLjE6CisgIHZlcnNpb24gIjEu
MC4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS90by1mYXN0LXBy
b3BlcnRpZXMvLS90by1mYXN0LXByb3BlcnRpZXMtMS4wLjIudGd6I2YzZjVjMGMzYmE3Mjk5YTdl
Zjk5NDI3ZTQ0NjMzMjU3YWRlNDMzMjAiCisKK3RvZG9tdmMtYXBwLWNzc0BeMi4wLjY6CisgIHZl
cnNpb24gIjIuMC42IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS90
b2RvbXZjLWFwcC1jc3MvLS90b2RvbXZjLWFwcC1jc3MtMi4wLjYudGd6IzBiMzY2N2M1ZTE4OWYx
NTY4ZDlhOWJmNzk0N2ViZDkyODQwNjk2MWQiCisKK3RvcG9zb3J0QF4xLjAuMDoKKyAgdmVyc2lv
biAiMS4wLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3RvcG9z
b3J0Ly0vdG9wb3NvcnQtMS4wLjAudGd6I2I2NmNmMzg1YTFhOGE4ZTY4ZTQ1YjgyNTllN2Y1NTg3
NWU4YjA2ZWYiCisKK3RvdWdoLWNvb2tpZUBeMi4yLjAsIHRvdWdoLWNvb2tpZUBeMi4zLjEsIHRv
dWdoLWNvb2tpZUB+Mi4zLjA6CisgIHZlcnNpb24gIjIuMy4xIgorICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS90b3VnaC1jb29raWUvLS90b3VnaC1jb29raWUtMi4zLjEu
dGd6Izk5Yzc3ZGZiYjdkODA0MjQ5ZThhMjk5ZDRjYjBmZDgxZmVmMDgzZmQiCisKK3RyNDZAfjAu
MC4xLCB0cjQ2QH4wLjAuMzoKKyAgdmVyc2lvbiAiMC4wLjMiCisgIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3RyNDYvLS90cjQ2LTAuMC4zLnRneiM4MTg0ZmQzNDdkYWM5
Y2RjMTg1OTkyZjNhNjYyMmUxNGI5ZDlhYjZhIgorCit0cnlpdEBeMS4wLjE6CisgIHZlcnNpb24g
IjEuMC4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS90cnlpdC8t
L3RyeWl0LTEuMC4yLnRneiNjMTk2YjAwNzNlNmIxYzU5NWQ5M2M5YzgzMDg1NWI3YWNjMzJhNDUz
IgorCit0dHktYnJvd3NlcmlmeUAwLjAuMDoKKyAgdmVyc2lvbiAiMC4wLjAiCisgIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3R0eS1icm93c2VyaWZ5Ly0vdHR5LWJyb3dz
ZXJpZnktMC4wLjAudGd6I2ExNTdiYTQwMmRhMjRlOWJmOTU3ZjlhYTY5ZDUyNGVlZDQyOTAxYTYi
CisKK3R1bm5lbC1hZ2VudEB+MC40LjE6CisgIHZlcnNpb24gIjAuNC4zIgorICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS90dW5uZWwtYWdlbnQvLS90dW5uZWwtYWdlbnQt
MC40LjMudGd6IzYzNzNkYjc2OTA5ZmU1NzBlMDhkNzM1ODMzNjVlZDgyOGE3NGVlZWIiCisKK3R3
ZWV0bmFjbEBeMC4xNC4zLCB0d2VldG5hY2xAfjAuMTQuMDoKKyAgdmVyc2lvbiAiMC4xNC4zIgor
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS90d2VldG5hY2wvLS90d2Vl
dG5hY2wtMC4xNC4zLnRneiMzZGEzODJmNjcwZjI1ZGVkNzhkN2IzZDE3OTIxMTliY2EwYjcxMzJk
IgorCit0eXBlLWNoZWNrQH4wLjMuMjoKKyAgdmVyc2lvbiAiMC4zLjIiCisgIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3R5cGUtY2hlY2svLS90eXBlLWNoZWNrLTAuMy4y
LnRneiM1ODg0Y2FiNTEyY2YxZDM1NWUzZmI3ODRmMzA4MDRiMmI1MjBkYjcyIgorICBkZXBlbmRl
bmNpZXM6CisgICAgcHJlbHVkZS1scyAifjEuMS4yIgorCit0eXBlLWlzQH4xLjYuMTM6CisgIHZl
cnNpb24gIjEuNi4xMyIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
dHlwZS1pcy8tL3R5cGUtaXMtMS42LjEzLnRneiM2ZTgzYmE3YmMzMGNkMzNhN2JiMGI3ZmIwMDcz
N2EyMDg1YmY5ZDA4IgorICBkZXBlbmRlbmNpZXM6CisgICAgbWVkaWEtdHlwZXIgIjAuMy4wIgor
ICAgIG1pbWUtdHlwZXMgIn4yLjEuMTEiCisKK3R5cGVkYXJyYXlAfjAuMC41OgorICB2ZXJzaW9u
ICIwLjAuNiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vdHlwZWRh
cnJheS8tL3R5cGVkYXJyYXktMC4wLjYudGd6Izg2N2FjNzRlMzg2NDE4N2IxZDNkNDdkOTk2YTc4
ZWM1Yzg4MzA3NzciCisKK3VhLXBhcnNlci1qc0BeMC43Ljk6CisgIHZlcnNpb24gIjAuNy4xMCIK
KyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vdWEtcGFyc2VyLWpzLy0v
dWEtcGFyc2VyLWpzLTAuNy4xMC50Z3ojOTE3NTU5ZGRjY2UwN2NiYzA5ZWNlN2Q4MDQ5NWU0YzI2
OGY0ZWY5ZiIKKwordWdsaWZ5LWpzQF4yLjY6CisgIHZlcnNpb24gIjIuNy4zIgorICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS91Z2xpZnktanMvLS91Z2xpZnktanMtMi43
LjMudGd6IzM5YjNhNzMyOWI4OWY1ZWM1MDdlMzQ0YzZlMjI1Njg2OThlZjQ4NjgiCisgIGRlcGVu
ZGVuY2llczoKKyAgICBhc3luYyAifjAuMi42IgorICAgIHNvdXJjZS1tYXAgIn4wLjUuMSIKKyAg
ICB1Z2xpZnktdG8tYnJvd3NlcmlmeSAifjEuMC4wIgorICAgIHlhcmdzICJ+My4xMC4wIgorCit1
Z2xpZnktanNAfjIuNi4wLCB1Z2xpZnktanNAMi42Lng6CisgIHZlcnNpb24gIjIuNi40IgorICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS91Z2xpZnktanMvLS91Z2xpZnkt
anMtMi42LjQudGd6IzY1ZWEyZmIzMDU5YzkzOTQ2OTJmMTVmZWQ4N2MyYjM2YzE2YjlhZGYiCisg
IGRlcGVuZGVuY2llczoKKyAgICBhc3luYyAifjAuMi42IgorICAgIHNvdXJjZS1tYXAgIn4wLjUu
MSIKKyAgICB1Z2xpZnktdG8tYnJvd3NlcmlmeSAifjEuMC4wIgorICAgIHlhcmdzICJ+My4xMC4w
IgorCit1Z2xpZnktdG8tYnJvd3NlcmlmeUB+MS4wLjA6CisgIHZlcnNpb24gIjEuMC4yIgorICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS91Z2xpZnktdG8tYnJvd3Nlcmlm
eS8tL3VnbGlmeS10by1icm93c2VyaWZ5LTEuMC4yLnRneiM2ZTA5MjRkNmJkYTZiNWFmZTM0OWUz
OWE2ZDYzMjg1MGEwZjg4MmI3IgorCit1aWQtbnVtYmVyQH4wLjAuNjoKKyAgdmVyc2lvbiAiMC4w
LjYiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3VpZC1udW1iZXIv
LS91aWQtbnVtYmVyLTAuMC42LnRneiMwZWExMGU4MDM1ZThlYjViOGU0NDQ5ZjA2ZGExYzczMDY2
M2JhYTgxIgorCit1bmlxQF4xLjAuMToKKyAgdmVyc2lvbiAiMS4wLjEiCisgIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3VuaXEvLS91bmlxLTEuMC4xLnRneiNiMzFjNWFl
ODI1NDg0NGEzYTgyODE1NDFjZTJiMDRiODY1YTczNGZmIgorCit1bmlxaWRAXjQuMC4wOgorICB2
ZXJzaW9uICI0LjEuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
dW5pcWlkLy0vdW5pcWlkLTQuMS4wLnRneiMzM2Q5Njc5ZjY1MDIyZjQ4OTg4YTAzZmQyNGU3ZGNh
ZjhmMTA5ZWNhIgorICBkZXBlbmRlbmNpZXM6CisgICAgbWFjYWRkcmVzcyAiXjAuMi44IgorCit1
bmlxc0BeMi4wLjA6CisgIHZlcnNpb24gIjIuMC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS91bmlxcy8tL3VuaXFzLTIuMC4wLnRneiNmZmVkZTRiMzZiMjUyOTA2
OTZlNmUxNjVkNGE1OWVkYjk5OGU2YjAyIgorCit1bnBpcGVAfjEuMC4wOgorICB2ZXJzaW9uICIx
LjAuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vdW5waXBlLy0v
dW5waXBlLTEuMC4wLnRneiNiMmJmNGVlODUxNGFhZTYxNjViNDgxNzgyOWQyMWIyZWY0OTkwNGVj
IgorCit1cHBlci1jYXNlLWZpcnN0QF4xLjEuMCwgdXBwZXItY2FzZS1maXJzdEBeMS4xLjI6Cisg
IHZlcnNpb24gIjEuMS4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS91cHBlci1jYXNlLWZpcnN0Ly0vdXBwZXItY2FzZS1maXJzdC0xLjEuMi50Z3ojNWQ3OWJlZGNm
ZjE0NDE5NTE4ZmQyZWRiMGEwNTA3YzliNjg1OTExNSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIHVw
cGVyLWNhc2UgIl4xLjEuMSIKKwordXBwZXItY2FzZUBeMS4wLjMsIHVwcGVyLWNhc2VAXjEuMS4w
LCB1cHBlci1jYXNlQF4xLjEuMSwgdXBwZXItY2FzZUBeMS4xLjM6CisgIHZlcnNpb24gIjEuMS4z
IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS91cHBlci1jYXNlLy0v
dXBwZXItY2FzZS0xLjEuMy50Z3ojZjZiNDUwMWMyZWM0Y2RkMjZiYTc4YmU3MjIyOTYxZGU3NzYy
MTU5OCIKKwordXJsLWxvYWRlckAwLjUuNzoKKyAgdmVyc2lvbiAiMC41LjciCisgIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3VybC1sb2FkZXIvLS91cmwtbG9hZGVyLTAu
NS43LnRneiM2N2U4Nzc5NzU5ZjgwMDBkYTc0OTk0OTA2NjgwYzk0M2E5YjA5MjVkIgorICBkZXBl
bmRlbmNpZXM6CisgICAgbG9hZGVyLXV0aWxzICIwLjIueCIKKyAgICBtaW1lICIxLjIueCIKKwor
dXJsLXBhcnNlQF4xLjAuMSwgdXJsLXBhcnNlQF4xLjEuMToKKyAgdmVyc2lvbiAiMS4xLjYiCisg
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3VybC1wYXJzZS8tL3VybC1w
YXJzZS0xLjEuNi50Z3ojYWI4ZmY1YWVhMTM4ODA3MTk2MTI1NWUyMjM2MTQ3YzUyY2E1ZmM0OCIK
KyAgZGVwZW5kZW5jaWVzOgorICAgIHF1ZXJ5c3RyaW5naWZ5ICIwLjAueCIKKyAgICByZXF1aXJl
cy1wb3J0ICIxLjAueCIKKwordXJsLXBhcnNlQDEuMC54OgorICB2ZXJzaW9uICIxLjAuNSIKKyAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vdXJsLXBhcnNlLy0vdXJsLXBh
cnNlLTEuMC41LnRneiMwODU0ODYwNDIyYWZkY2ZlZmViNmM5NjVjNjYyZDQ4MDAxNjk5MjdiIgor
ICBkZXBlbmRlbmNpZXM6CisgICAgcXVlcnlzdHJpbmdpZnkgIjAuMC54IgorICAgIHJlcXVpcmVz
LXBvcnQgIjEuMC54IgorCit1cmxAfjAuMTAuMToKKyAgdmVyc2lvbiAiMC4xMC4zIgorICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS91cmwvLS91cmwtMC4xMC4zLnRneiMw
MjFlNGQ5Yzc3MDVmMjFiYmYzN2QwM2NlYjU4NzY3NDAyNzc0YzY0IgorICBkZXBlbmRlbmNpZXM6
CisgICAgcHVueWNvZGUgIjEuMy4yIgorICAgIHF1ZXJ5c3RyaW5nICIwLjIuMCIKKwordXNlci1o
b21lQF4xLjEuMToKKyAgdmVyc2lvbiAiMS4xLjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL3VzZXItaG9tZS8tL3VzZXItaG9tZS0xLjEuMS50Z3ojMmI1YmUyM2Ez
MmI2M2E3YzlkZWI4ZDBmMjhkNDg1NzI0YTNkZjE5MCIKKwordXNlci1ob21lQF4yLjAuMDoKKyAg
dmVyc2lvbiAiMi4wLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L3VzZXItaG9tZS8tL3VzZXItaG9tZS0yLjAuMC50Z3ojOWM3MGJmZDgxNjliYzFkY2JmNDg2MDRl
MGYwNGI4YjQ5Y2RlOWU5ZiIKKyAgZGVwZW5kZW5jaWVzOgorICAgIG9zLWhvbWVkaXIgIl4xLjAu
MCIKKwordXRpbC1kZXByZWNhdGVAfjEuMC4xOgorICB2ZXJzaW9uICIxLjAuMiIKKyAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vdXRpbC1kZXByZWNhdGUvLS91dGlsLWRl
cHJlY2F0ZS0xLjAuMi50Z3ojNDUwZDRkYzlmYTcwZGU3MzI3NjJmYmQyZDRhMjg5ODE0MTlhMGNj
ZiIKKwordXRpbEB+MC4xMC4zLCB1dGlsQDAuMTAuMzoKKyAgdmVyc2lvbiAiMC4xMC4zIgorICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS91dGlsLy0vdXRpbC0wLjEwLjMu
dGd6IzdhZmIxYWZlNTA4MDUyNDY0ODllM2RiN2ZlMGVkMzc5MzM2YWMwZjkiCisgIGRlcGVuZGVu
Y2llczoKKyAgICBpbmhlcml0cyAiMi4wLjEiCisKK3V0aWxhQH4wLjM6CisgIHZlcnNpb24gIjAu
My4zIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS91dGlsYS8tL3V0
aWxhLTAuMy4zLnRneiNkN2U4ZTdkN2UzMDkxMDcwOTJiMDVmOGQ5Njg4ODI0ZDYzM2E0MjI2Igor
Cit1dGlsYUB+MC40OgorICB2ZXJzaW9uICIwLjQuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vdXRpbGEvLS91dGlsYS0wLjQuMC50Z3ojOGExNmEwNWQ0NDU2NTdh
M2FlYTVlZWNjNWIxMmE0ZmE1Mzc5NzcyYyIKKwordXRpbHMtbWVyZ2VAMS4wLjA6CisgIHZlcnNp
b24gIjEuMC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS91dGls
cy1tZXJnZS8tL3V0aWxzLW1lcmdlLTEuMC4wLnRneiMwMjk0ZmI5MjJiYjkzNzUxNTM1NDFjNGY3
MDk2MjMxZjI4N2M4YWY4IgorCit1dWlkQF4yLjAuMjoKKyAgdmVyc2lvbiAiMi4wLjMiCisgIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3V1aWQvLS91dWlkLTIuMC4zLnRn
eiM2N2UyZTg2Mzc5NzIxNTUzMGRmZjMxOGU1YmY5ZGNlYmZkNDdiMjFhIgorCit2YWxpZGF0ZS1u
cG0tcGFja2FnZS1saWNlbnNlQF4zLjAuMToKKyAgdmVyc2lvbiAiMy4wLjEiCisgIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3ZhbGlkYXRlLW5wbS1wYWNrYWdlLWxpY2Vu
c2UvLS92YWxpZGF0ZS1ucG0tcGFja2FnZS1saWNlbnNlLTMuMC4xLnRneiMyODA0YmFiZTcxMmFk
MzM3OTQ1OWFjZmJlMjQ3NDZhYjJjMzAzZmJjIgorICBkZXBlbmRlbmNpZXM6CisgICAgc3BkeC1j
b3JyZWN0ICJ+MS4wLjAiCisgICAgc3BkeC1leHByZXNzaW9uLXBhcnNlICJ+MS4wLjAiCisKK3Zh
cnlAfjEuMS4wOgorICB2ZXJzaW9uICIxLjEuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vdmFyeS8tL3ZhcnktMS4xLjAudGd6I2UxZTVhZmZiYmQxNmFlNzY4ZGQy
Njc0Mzk0YjlhZDMwMjI2NTMxNDAiCisKK3ZlbmRvcnNAXjEuMC4wOgorICB2ZXJzaW9uICIxLjAu
MSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vdmVuZG9ycy8tL3Zl
bmRvcnMtMS4wLjEudGd6IzM3YWQ3M2M4ZWU0MTdmYjNkNTgwZTc4NTMxMjMwN2QyNzQ4NDdmMjIi
CisKK3ZlcnJvckAxLjMuNjoKKyAgdmVyc2lvbiAiMS4zLjYiCisgIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3ZlcnJvci8tL3ZlcnJvci0xLjMuNi50Z3ojY2ZmNWRmMTI5
NDZkMjk3ZDJiYWFlZmFhMjY4OWUyNWJlMDFjMDA1YyIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGV4
dHNwcmludGYgIjEuMC4yIgorCit2bS1icm93c2VyaWZ5QDAuMC40OgorICB2ZXJzaW9uICIwLjAu
NCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vdm0tYnJvd3Nlcmlm
eS8tL3ZtLWJyb3dzZXJpZnktMC4wLjQudGd6IzVkN2VhNDViYmVmOWU0YTZmZjY1Zjk1NDM4ZTBh
ODdjMzU3ZDVhNzMiCisgIGRlcGVuZGVuY2llczoKKyAgICBpbmRleG9mICIwLjAuMSIKKword2Fs
a2VyQH4xLjAuNToKKyAgdmVyc2lvbiAiMS4wLjciCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL3dhbGtlci8tL3dhbGtlci0xLjAuNy50Z3ojMmY3ZjliOGZkMTBkNjc3
MjYyYjE4YTg4NGUyOGQxOTYxOGUwMjhmYiIKKyAgZGVwZW5kZW5jaWVzOgorICAgIG1ha2VlcnJv
ciAiMS4wLngiCisKK3dhdGNoQH4wLjEwLjA6CisgIHZlcnNpb24gIjAuMTAuMCIKKyAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vd2F0Y2gvLS93YXRjaC0wLjEwLjAudGd6
Izc3Nzk4YjJkYTBmOTkxMGQ1OTVmMWFjZTViMGMyMjU4NTIxZjIxZGMiCisKK3dhdGNocGFja0Be
MC4yLjE6CisgIHZlcnNpb24gIjAuMi45IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS93YXRjaHBhY2svLS93YXRjaHBhY2stMC4yLjkudGd6IzYyZWFhNGFiNWU1YmEz
NWZkZmMwMTgyNzU2MjZlM2MwZjVlM2ZiMGIiCisgIGRlcGVuZGVuY2llczoKKyAgICBhc3luYyAi
XjAuOS4wIgorICAgIGNob2tpZGFyICJeMS4wLjAiCisgICAgZ3JhY2VmdWwtZnMgIl40LjEuMiIK
Kword2ViaWRsLWNvbnZlcnNpb25zQF4yLjAuMDoKKyAgdmVyc2lvbiAiMi4wLjEiCisgIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3dlYmlkbC1jb252ZXJzaW9ucy8tL3dl
YmlkbC1jb252ZXJzaW9ucy0yLjAuMS50Z3ojM2JmODI1OGY3ZDMxOGM3NDQzYzM2ZjJlMTY5NDAy
YTFhNjcwMzUwNiIKKword2ViaWRsLWNvbnZlcnNpb25zQF4zLjAuMCwgd2ViaWRsLWNvbnZlcnNp
b25zQF4zLjAuMToKKyAgdmVyc2lvbiAiMy4wLjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL3dlYmlkbC1jb252ZXJzaW9ucy8tL3dlYmlkbC1jb252ZXJzaW9ucy0z
LjAuMS50Z3ojMjQ1MzQyNzVlMmE3YmM2YmU3YmM4NjYxMWNjMTZhZTBhNTY1NDg3MSIKKword2Vi
cGFjay1jb3JlQH4wLjYuMDoKKyAgdmVyc2lvbiAiMC42LjgiCisgIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3dlYnBhY2stY29yZS8tL3dlYnBhY2stY29yZS0wLjYuOC50
Z3ojZWRmOTEzNWRlMDBhNmEzYzI2ZGQwZjE0YjIwOGFmMGFhNGFmOGQwYSIKKyAgZGVwZW5kZW5j
aWVzOgorICAgIHNvdXJjZS1saXN0LW1hcCAifjAuMS4wIgorICAgIHNvdXJjZS1tYXAgIn4wLjQu
MSIKKword2VicGFjay1kZXYtbWlkZGxld2FyZUBeMS40LjA6CisgIHZlcnNpb24gIjEuOC40Igor
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS93ZWJwYWNrLWRldi1taWRk
bGV3YXJlLy0vd2VicGFjay1kZXYtbWlkZGxld2FyZS0xLjguNC50Z3ojZTg3NjVjOTEyMjg4N2Nl
OWUzYWJkNGNjOWMzZWIzMWI2MWUwOTQ4ZCIKKyAgZGVwZW5kZW5jaWVzOgorICAgIG1lbW9yeS1m
cyAifjAuMy4wIgorICAgIG1pbWUgIl4xLjMuNCIKKyAgICBwYXRoLWlzLWFic29sdXRlICJeMS4w
LjAiCisgICAgcmFuZ2UtcGFyc2VyICJeMS4wLjMiCisKK3dlYnBhY2stZGV2LXNlcnZlckAxLjE2
LjE6CisgIHZlcnNpb24gIjEuMTYuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vd2VicGFjay1kZXYtc2VydmVyLy0vd2VicGFjay1kZXYtc2VydmVyLTEuMTYuMS50
Z3ojYWY1OGU5M2IxZGMwNDA1MjBkMjhkY2U0Mjc1NWIzYTRjN2NjODIyYiIKKyAgZGVwZW5kZW5j
aWVzOgorICAgIGNvbXByZXNzaW9uICJeMS41LjIiCisgICAgY29ubmVjdC1oaXN0b3J5LWFwaS1m
YWxsYmFjayAiXjEuMy4wIgorICAgIGV4cHJlc3MgIl40LjEzLjMiCisgICAgaHR0cC1wcm94eS1t
aWRkbGV3YXJlICJ+MC4xNy4xIgorICAgIG9wZW4gIjAuMC41IgorICAgIG9wdGltaXN0ICJ+MC42
LjEiCisgICAgc2VydmUtaW5kZXggIl4xLjcuMiIKKyAgICBzb2NranMgIl4wLjMuMTUiCisgICAg
c29ja2pzLWNsaWVudCAiXjEuMC4zIgorICAgIHN0cmVhbS1jYWNoZSAifjAuMC4xIgorICAgIHN0
cmlwLWFuc2kgIl4zLjAuMCIKKyAgICBzdXBwb3J0cy1jb2xvciAiXjMuMS4xIgorICAgIHdlYnBh
Y2stZGV2LW1pZGRsZXdhcmUgIl4xLjQuMCIKKword2VicGFjay1zb3VyY2VzQF4wLjEuMDoKKyAg
dmVyc2lvbiAiMC4xLjIiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L3dlYnBhY2stc291cmNlcy8tL3dlYnBhY2stc291cmNlcy0wLjEuMi50Z3ojMDU3YTNmMzI1NWY4
YmE1NjFiOTAxZDkxNTA1ODlhYTEwM2E1N2U2NSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIHNvdXJj
ZS1saXN0LW1hcCAifjAuMS4wIgorICAgIHNvdXJjZS1tYXAgIn4wLjUuMyIKKword2VicGFja0Ax
LjEzLjI6CisgIHZlcnNpb24gIjEuMTMuMiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vd2VicGFjay8tL3dlYnBhY2stMS4xMy4yLnRneiNmMTFhOTZmNDU4ZWI3NTI5
NzBhODZhYmU3NDZjMDcwNGZhYmFmYWYzIgorICBkZXBlbmRlbmNpZXM6CisgICAgYWNvcm4gIl4z
LjAuMCIKKyAgICBhc3luYyAiXjEuMy4wIgorICAgIGNsb25lICJeMS4wLjIiCisgICAgZW5oYW5j
ZWQtcmVzb2x2ZSAifjAuOS4wIgorICAgIGludGVycHJldCAiXjAuNi40IgorICAgIGxvYWRlci11
dGlscyAiXjAuMi4xMSIKKyAgICBtZW1vcnktZnMgIn4wLjMuMCIKKyAgICBta2RpcnAgIn4wLjUu
MCIKKyAgICBub2RlLWxpYnMtYnJvd3NlciAiXjAuNi4wIgorICAgIG9wdGltaXN0ICJ+MC42LjAi
CisgICAgc3VwcG9ydHMtY29sb3IgIl4zLjEuMCIKKyAgICB0YXBhYmxlICJ+MC4xLjgiCisgICAg
dWdsaWZ5LWpzICJ+Mi42LjAiCisgICAgd2F0Y2hwYWNrICJeMC4yLjEiCisgICAgd2VicGFjay1j
b3JlICJ+MC42LjAiCisKK3dlYnNvY2tldC1kcml2ZXJAPj0wLjMuNiwgd2Vic29ja2V0LWRyaXZl
ckA+PTAuNS4xOgorICB2ZXJzaW9uICIwLjYuNSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vd2Vic29ja2V0LWRyaXZlci8tL3dlYnNvY2tldC1kcml2ZXItMC42LjUu
dGd6IzVjYjI1NTZjZWI4NWY0MzczYzZkODIzOGFhNjkxYzg0NTRlMTNhMzYiCisgIGRlcGVuZGVu
Y2llczoKKyAgICB3ZWJzb2NrZXQtZXh0ZW5zaW9ucyAiPj0wLjEuMSIKKword2Vic29ja2V0LWV4
dGVuc2lvbnNAPj0wLjEuMToKKyAgdmVyc2lvbiAiMC4xLjEiCisgIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3dlYnNvY2tldC1leHRlbnNpb25zLy0vd2Vic29ja2V0LWV4
dGVuc2lvbnMtMC4xLjEudGd6Izc2ODk5NDk5YzE4NGI2ZWY3NTQzNzdjMmRiYjBjZDZjYjU1ZDI5
ZTciCisKK3doYXR3Zy1mZXRjaEA+PTAuMTAuMCwgd2hhdHdnLWZldGNoQDEuMC4wOgorICB2ZXJz
aW9uICIxLjAuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vd2hh
dHdnLWZldGNoLy0vd2hhdHdnLWZldGNoLTEuMC4wLnRneiMwMWMyYWM0ZGY0MGUyMzZhYWExODQ4
MGUzYmU3NGJkNWM4ZWI3OThlIgorCit3aGF0d2ctdXJsLWNvbXBhdEB+MC42LjU6CisgIHZlcnNp
b24gIjAuNi41IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS93aGF0
d2ctdXJsLWNvbXBhdC8tL3doYXR3Zy11cmwtY29tcGF0LTAuNi41LnRneiMwMDg5ODExMWFmNjg5
YmIwOTc1NDFjZDVhNDVjYTZjODc5ODQ0NWJmIgorICBkZXBlbmRlbmNpZXM6CisgICAgdHI0NiAi
fjAuMC4xIgorCit3aGF0d2ctdXJsQF4zLjAuMDoKKyAgdmVyc2lvbiAiMy4wLjAiCisgIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3doYXR3Zy11cmwvLS93aGF0d2ctdXJs
LTMuMC4wLnRneiNiOTAzM2M1MGM3Y2U3NjNlOTFkNzg3NzdjZTgyNWE2ZDdmNTZkYWM1IgorICBk
ZXBlbmRlbmNpZXM6CisgICAgdHI0NiAifjAuMC4zIgorICAgIHdlYmlkbC1jb252ZXJzaW9ucyAi
XjMuMC4wIgorCit3aGV0LmV4dGVuZEB+MC45Ljk6CisgIHZlcnNpb24gIjAuOS45IgorICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS93aGV0LmV4dGVuZC8tL3doZXQuZXh0
ZW5kLTAuOS45LnRneiNmODc3ZDViZjY0OGM5N2U1YWE1NDJmYWRjMTZkNmEyNTliOWMxMWExIgor
Cit3aGljaC1tb2R1bGVAXjEuMC4wOgorICB2ZXJzaW9uICIxLjAuMCIKKyAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vd2hpY2gtbW9kdWxlLy0vd2hpY2gtbW9kdWxlLTEu
MC4wLnRneiNiYmE2M2NhODYxOTQ4OTk0ZmYzMDc3MzYwODllM2I5NjAyNmMyYTRmIgorCit3aGlj
aEBeMS4wLjUsIHdoaWNoQF4xLjEuMSwgd2hpY2hAXjEuMi45OgorICB2ZXJzaW9uICIxLjIuMTEi
CisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3doaWNoLy0vd2hpY2gt
MS4yLjExLnRneiNjOGIyZWVlYTZiOGMxNjU5ZmE3YzFkZDRmZGFhYmU5NTMzZGM1ZThiIgorICBk
ZXBlbmRlbmNpZXM6CisgICAgaXNleGUgIl4xLjEuMSIKKword2lkZS1hbGlnbkBeMS4xLjA6Cisg
IHZlcnNpb24gIjEuMS4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS93aWRlLWFsaWduLy0vd2lkZS1hbGlnbi0xLjEuMC50Z3ojNDBlZGRlODAyYTcxZmVhMWYwNzBk
YTNlNjJkY2RhMmU3YWRkOTZhZCIKKyAgZGVwZW5kZW5jaWVzOgorICAgIHN0cmluZy13aWR0aCAi
XjEuMC4xIgorCit3aW5kb3ctc2l6ZUBeMC4yLjA6CisgIHZlcnNpb24gIjAuMi4wIgorICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS93aW5kb3ctc2l6ZS8tL3dpbmRvdy1z
aXplLTAuMi4wLnRneiNiNDMxNWJiNDIxNGEzZDcwNThlYmVlZTg5MmUxM2ZhMjRkOThiMDc1Igor
Cit3aW5kb3ctc2l6ZUAwLjEuMDoKKyAgdmVyc2lvbiAiMC4xLjAiCisgIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3dpbmRvdy1zaXplLy0vd2luZG93LXNpemUtMC4xLjAu
dGd6IzU0MzhjZDJlYTkzYjIwMmVmYTNhMTlmZTg4ODdhZWU3Yzk0ZjljOWQiCisKK3dvcmR3cmFw
QF4xLjAuMCwgd29yZHdyYXBAfjEuMC4wOgorICB2ZXJzaW9uICIxLjAuMCIKKyAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vd29yZHdyYXAvLS93b3Jkd3JhcC0xLjAuMC50
Z3ojMjc1ODQ4MTA4OTE0NTZhNDE3MWM4ZDAyMjY0NDFhZGU5MGNiY2FlYiIKKword29yZHdyYXBA
fjAuMC4yOgorICB2ZXJzaW9uICIwLjAuMyIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vd29yZHdyYXAvLS93b3Jkd3JhcC0wLjAuMy50Z3ojYTNkNWRhNmNkNWMwYmMw
MDA4ZDM3MjM0YmJhZjFiZWQ2MzA1OTEwNyIKKword29yZHdyYXBAMC4wLjI6CisgIHZlcnNpb24g
IjAuMC4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS93b3Jkd3Jh
cC8tL3dvcmR3cmFwLTAuMC4yLnRneiNiNzk2NjliYjQyZWNiNDA5ZjgzZDU4M2NhZDUyY2ExN2Vh
YTE2NDNmIgorCit3b3JrZXItZmFybUBeMS4zLjE6CisgIHZlcnNpb24gIjEuMy4xIgorICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS93b3JrZXItZmFybS8tL3dvcmtlci1m
YXJtLTEuMy4xLnRneiM0MzMzMTEyYmI0OWIxN2FhMDUwYjg3ODk1Y2E2YjJjYWNmNDBlNWZmIgor
ICBkZXBlbmRlbmNpZXM6CisgICAgZXJybm8gIj49MC4xLjEgPDAuMi4wLTAiCisgICAgeHRlbmQg
Ij49NC4wLjAgPDQuMS4wLTAiCisKK3dyYXAtYW5zaUBeMi4wLjA6CisgIHZlcnNpb24gIjIuMC4w
IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS93cmFwLWFuc2kvLS93
cmFwLWFuc2ktMi4wLjAudGd6IzdkMzBmOGY4NzNmOWE1YmJjM2E2NGRhYmM4ZDE3N2UwNzFhZTQy
NmYiCisgIGRlcGVuZGVuY2llczoKKyAgICBzdHJpbmctd2lkdGggIl4xLjAuMSIKKword3JhcHB5
QDE6CisgIHZlcnNpb24gIjEuMC4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS93cmFwcHkvLS93cmFwcHktMS4wLjIudGd6I2I1MjQzZDhmM2VjMWFhMzVmMTM2NDYw
NWJjMGQxMDM2ZTMwYWI2OWYiCisKK3dyaXRlQF4wLjIuMToKKyAgdmVyc2lvbiAiMC4yLjEiCisg
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3dyaXRlLy0vd3JpdGUtMC4y
LjEudGd6IzVmYzAzODI4ZTI2NGNlYTNmZTkxNDU1NDc2ZjdhM2M1NjZjYjA3NTciCisgIGRlcGVu
ZGVuY2llczoKKyAgICBta2RpcnAgIl4wLjUuMSIKKworeG1sLWNoYXItY2xhc3Nlc0BeMS4wLjA6
CisgIHZlcnNpb24gIjEuMC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS94bWwtY2hhci1jbGFzc2VzLy0veG1sLWNoYXItY2xhc3Nlcy0xLjAuMC50Z3ojNjQ2NTc4
NDhhMjBmZmM1ZGY1ODNhNDJhZDhhMjc3YjQ1MTJiYmM0ZCIKKworInhtbC1uYW1lLXZhbGlkYXRv
ckA+PSAyLjAuMSA8IDMuMC4wIjoKKyAgdmVyc2lvbiAiMi4wLjEiCisgIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3htbC1uYW1lLXZhbGlkYXRvci8tL3htbC1uYW1lLXZh
bGlkYXRvci0yLjAuMS50Z3ojNGQ4YjhmMWVjY2QzNDE5YWEzNjIwNjFiZWNlZjUxNWUxZTU1OTYz
NSIKKworeHRlbmRAXjQuMC4wLCAieHRlbmRAPj00LjAuMCA8NC4xLjAtMCI6CisgIHZlcnNpb24g
IjQuMC4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS94dGVuZC8t
L3h0ZW5kLTQuMC4xLnRneiNhNWM2ZDUzMmJlNjU2ZTIzZGI4MjBlZmI5NDNhMWYwNDk5OGQ2M2Fm
IgorCit5MThuQF4zLjIuMToKKyAgdmVyc2lvbiAiMy4yLjEiCisgIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3kxOG4vLS95MThuLTMuMi4xLnRneiM2ZDE1ZmJhODg0YzA4
Njc5YzBkNzdlODhlNzc1OWU4MTFlMDdmYTQxIgorCit5YWxsaXN0QF4yLjAuMDoKKyAgdmVyc2lv
biAiMi4wLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3lhbGxp
c3QvLS95YWxsaXN0LTIuMC4wLnRneiMzMDZjNTQzODM1ZjA5ZWUxYTRjYjIzYjdiY2U5YWIzNDFj
OTFjZGQ0IgorCit5YXJncy1wYXJzZXJAXjMuMi4wOgorICB2ZXJzaW9uICIzLjIuMCIKKyAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20veWFyZ3MtcGFyc2VyLy0veWFyZ3Mt
cGFyc2VyLTMuMi4wLnRneiM1MDgxMzU1ZDE5ZDlkMGM4YzVkODFhZGE5MDhjYjRlNmQxODY2NjRm
IgorICBkZXBlbmRlbmNpZXM6CisgICAgY2FtZWxjYXNlICJeMy4wLjAiCisgICAgbG9kYXNoLmFz
c2lnbiAiXjQuMS4wIgorCit5YXJnc0BeNS4wLjA6CisgIHZlcnNpb24gIjUuMC4wIgorICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS95YXJncy8tL3lhcmdzLTUuMC4wLnRn
eiMzMzU1MTQ0OTc3ZDA1NzU3ZGJiODZkNmUzOGVjMDU2MTIzYjNhNjZlIgorICBkZXBlbmRlbmNp
ZXM6CisgICAgY2xpdWkgIl4zLjIuMCIKKyAgICBkZWNhbWVsaXplICJeMS4xLjEiCisgICAgZ2V0
LWNhbGxlci1maWxlICJeMS4wLjEiCisgICAgbG9kYXNoLmFzc2lnbiAiXjQuMi4wIgorICAgIG9z
LWxvY2FsZSAiXjEuNC4wIgorICAgIHJlYWQtcGtnLXVwICJeMS4wLjEiCisgICAgcmVxdWlyZS1k
aXJlY3RvcnkgIl4yLjEuMSIKKyAgICByZXF1aXJlLW1haW4tZmlsZW5hbWUgIl4xLjAuMSIKKyAg
ICBzZXQtYmxvY2tpbmcgIl4yLjAuMCIKKyAgICBzdHJpbmctd2lkdGggIl4xLjAuMiIKKyAgICB3
aGljaC1tb2R1bGUgIl4xLjAuMCIKKyAgICB3aW5kb3ctc2l6ZSAiXjAuMi4wIgorICAgIHkxOG4g
Il4zLjIuMSIKKyAgICB5YXJncy1wYXJzZXIgIl4zLjIuMCIKKworeWFyZ3NAfjMuMTAuMDoKKyAg
dmVyc2lvbiAiMy4xMC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS95YXJncy8tL3lhcmdzLTMuMTAuMC50Z3ojZjdlZTdiZDg1N2RkN2MxZDJkMzhjMGU3NGVmYmQ2
ODFkMTQzMWZkMSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGNhbWVsY2FzZSAiXjEuMC4yIgorICAg
IGNsaXVpICJeMi4xLjAiCisgICAgZGVjYW1lbGl6ZSAiXjEuMC4wIgorICAgIHdpbmRvdy1zaXpl
ICIwLjEuMCIKKwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QvYnVpbGQubWluLmpzIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvcmVhY3QvYnVpbGQubWluLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFjNWVhZjI0M2IyY2Rh
MjBmNWMxMGE4MzczY2U2MmI4NzdlOTg5MGIKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9yZWFjdC9idWlsZC5taW4uanMKQEAgLTAsMCArMSBAQAordmFyIGFwcD1hcHB8fHt9OyhmdW5j
dGlvbigpeyJ1c2Ugc3RyaWN0IjthcHAuQUxMX1RPRE9TPSJhbGwiO2FwcC5BQ1RJVkVfVE9ET1M9
ImFjdGl2ZSI7YXBwLkNPTVBMRVRFRF9UT0RPUz0iY29tcGxldGVkIjthcHAuVXRpbHM9e3V1aWQ6
ZnVuY3Rpb24oKXt2YXIgaSxyYW5kb207dmFyIHV1aWQ9IiI7Zm9yKGk9MDtpPDMyO2krKyl7cmFu
ZG9tPU1hdGgucmFuZG9tKCkqMTZ8MDtpZihpPT09OHx8aT09PTEyfHxpPT09MTZ8fGk9PT0yMCl7
dXVpZCs9Ii0ifXV1aWQrPShpPT09MTI/NDppPT09MTY/cmFuZG9tJjN8ODpyYW5kb20pLnRvU3Ry
aW5nKDE2KX1yZXR1cm4gdXVpZH0scGx1cmFsaXplOmZ1bmN0aW9uKGNvdW50LHdvcmQpe3JldHVy
biBjb3VudD09PTE/d29yZDp3b3JkKyJzIn0sZXh0ZW5kOmZ1bmN0aW9uKCl7dmFyIG5ld09iaj17
fTtmb3IodmFyIGk9MDtpPGFyZ3VtZW50cy5sZW5ndGg7aSsrKXt2YXIgb2JqPWFyZ3VtZW50c1tp
XTtmb3IodmFyIGtleSBpbiBvYmope2lmKG9iai5oYXNPd25Qcm9wZXJ0eShrZXkpKXtuZXdPYmpb
a2V5XT1vYmpba2V5XX19fXJldHVybiBuZXdPYmp9fTt2YXIgVXRpbHM9YXBwLlV0aWxzO2FwcC5U
b2RvTW9kZWw9ZnVuY3Rpb24oa2V5KXt0aGlzLmtleT1rZXk7dGhpcy50b2Rvcz1bXTt0aGlzLm9u
Q2hhbmdlcz1bXX07YXBwLlRvZG9Nb2RlbC5wcm90b3R5cGUuc3Vic2NyaWJlPWZ1bmN0aW9uKG9u
Q2hhbmdlKXt0aGlzLm9uQ2hhbmdlcy5wdXNoKG9uQ2hhbmdlKX07YXBwLlRvZG9Nb2RlbC5wcm90
b3R5cGUuaW5mb3JtPWZ1bmN0aW9uKCl7dGhpcy5vbkNoYW5nZXMuZm9yRWFjaChmdW5jdGlvbihj
Yil7Y2IoKX0pfTthcHAuVG9kb01vZGVsLnByb3RvdHlwZS5hZGRUb2RvPWZ1bmN0aW9uKHRpdGxl
KXt0aGlzLnRvZG9zPXRoaXMudG9kb3MuY29uY2F0KHtpZDpVdGlscy51dWlkKCksdGl0bGU6dGl0
bGUsY29tcGxldGVkOmZhbHNlfSk7dGhpcy5pbmZvcm0oKX07YXBwLlRvZG9Nb2RlbC5wcm90b3R5
cGUudG9nZ2xlQWxsPWZ1bmN0aW9uKGNoZWNrZWQpe3RoaXMudG9kb3M9dGhpcy50b2Rvcy5tYXAo
ZnVuY3Rpb24odG9kbyl7cmV0dXJuIFV0aWxzLmV4dGVuZCh7fSx0b2RvLHtjb21wbGV0ZWQ6Y2hl
Y2tlZH0pfSk7dGhpcy5pbmZvcm0oKX07YXBwLlRvZG9Nb2RlbC5wcm90b3R5cGUudG9nZ2xlPWZ1
bmN0aW9uKHRvZG9Ub1RvZ2dsZSl7dGhpcy50b2Rvcz10aGlzLnRvZG9zLm1hcChmdW5jdGlvbih0
b2RvKXtyZXR1cm4gdG9kbyE9PXRvZG9Ub1RvZ2dsZT90b2RvOlV0aWxzLmV4dGVuZCh7fSx0b2Rv
LHtjb21wbGV0ZWQ6IXRvZG8uY29tcGxldGVkfSl9KTt0aGlzLmluZm9ybSgpfTthcHAuVG9kb01v
ZGVsLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKHRvZG8pe3RoaXMudG9kb3M9dGhpcy50b2Rv
cy5maWx0ZXIoZnVuY3Rpb24oY2FuZGlkYXRlKXtyZXR1cm4gY2FuZGlkYXRlIT09dG9kb30pO3Ro
aXMuaW5mb3JtKCl9O2FwcC5Ub2RvTW9kZWwucHJvdG90eXBlLnNhdmU9ZnVuY3Rpb24odG9kb1Rv
U2F2ZSx0ZXh0KXt0aGlzLnRvZG9zPXRoaXMudG9kb3MubWFwKGZ1bmN0aW9uKHRvZG8pe3JldHVy
biB0b2RvIT09dG9kb1RvU2F2ZT90b2RvOlV0aWxzLmV4dGVuZCh7fSx0b2RvLHt0aXRsZTp0ZXh0
fSl9KTt0aGlzLmluZm9ybSgpfTthcHAuVG9kb01vZGVsLnByb3RvdHlwZS5jbGVhckNvbXBsZXRl
ZD1mdW5jdGlvbigpe3RoaXMudG9kb3M9dGhpcy50b2Rvcy5maWx0ZXIoZnVuY3Rpb24odG9kbyl7
cmV0dXJuIXRvZG8uY29tcGxldGVkfSk7dGhpcy5pbmZvcm0oKX07dmFyIFRvZG9Gb290ZXI9UmVh
Y3QuY3JlYXRlQ2xhc3Moe3JlbmRlcjpmdW5jdGlvbigpe3ZhciBhY3RpdmVUb2RvV29yZD1hcHAu
VXRpbHMucGx1cmFsaXplKHRoaXMucHJvcHMuY291bnQsIml0ZW0iKTt2YXIgY2xlYXJCdXR0b249
bnVsbDtpZih0aGlzLnByb3BzLmNvbXBsZXRlZENvdW50PjApe2NsZWFyQnV0dG9uPVJlYWN0LmNy
ZWF0ZUVsZW1lbnQoImJ1dHRvbiIse2NsYXNzTmFtZToiY2xlYXItY29tcGxldGVkIixvbkNsaWNr
OnRoaXMucHJvcHMub25DbGVhckNvbXBsZXRlZH0sIkNsZWFyIGNvbXBsZXRlZCIpfXZhciBub3dT
aG93aW5nPXRoaXMucHJvcHMubm93U2hvd2luZztyZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudCgi
Zm9vdGVyIix7Y2xhc3NOYW1lOiJmb290ZXIifSxSZWFjdC5jcmVhdGVFbGVtZW50KCJzcGFuIix7
Y2xhc3NOYW1lOiJ0b2RvLWNvdW50In0sUmVhY3QuY3JlYXRlRWxlbWVudCgic3Ryb25nIixudWxs
LHRoaXMucHJvcHMuY291bnQpLCIgIixhY3RpdmVUb2RvV29yZCwiIGxlZnQiKSxSZWFjdC5jcmVh
dGVFbGVtZW50KCJ1bCIse2NsYXNzTmFtZToiZmlsdGVycyJ9LFJlYWN0LmNyZWF0ZUVsZW1lbnQo
ImxpIixudWxsLFJlYWN0LmNyZWF0ZUVsZW1lbnQoImEiLHtocmVmOiIjLyIsY2xhc3NOYW1lOmNs
YXNzTmFtZXMoe3NlbGVjdGVkOm5vd1Nob3dpbmc9PT1hcHAuQUxMX1RPRE9TfSl9LCJBbGwiKSks
IiAiLFJlYWN0LmNyZWF0ZUVsZW1lbnQoImxpIixudWxsLFJlYWN0LmNyZWF0ZUVsZW1lbnQoImEi
LHtocmVmOiIjL2FjdGl2ZSIsY2xhc3NOYW1lOmNsYXNzTmFtZXMoe3NlbGVjdGVkOm5vd1Nob3dp
bmc9PT1hcHAuQUNUSVZFX1RPRE9TfSl9LCJBY3RpdmUiKSksIiAiLFJlYWN0LmNyZWF0ZUVsZW1l
bnQoImxpIixudWxsLFJlYWN0LmNyZWF0ZUVsZW1lbnQoImEiLHtocmVmOiIjL2NvbXBsZXRlZCIs
Y2xhc3NOYW1lOmNsYXNzTmFtZXMoe3NlbGVjdGVkOm5vd1Nob3dpbmc9PT1hcHAuQ09NUExFVEVE
X1RPRE9TfSl9LCJDb21wbGV0ZWQiKSkpLGNsZWFyQnV0dG9uKX19KTt2YXIgRVNDQVBFX0tFWT0y
Nzt2YXIgRU5URVJfS0VZPTEzO3ZhciBUb2RvSXRlbT1SZWFjdC5jcmVhdGVDbGFzcyh7aGFuZGxl
U3VibWl0OmZ1bmN0aW9uKGV2ZW50KXt2YXIgdmFsPXRoaXMuc3RhdGUuZWRpdFRleHQudHJpbSgp
O2lmKHZhbCl7dGhpcy5wcm9wcy5vblNhdmUodmFsKTt0aGlzLnNldFN0YXRlKHtlZGl0VGV4dDp2
YWx9KX1lbHNle3RoaXMucHJvcHMub25EZXN0cm95KCl9fSxoYW5kbGVFZGl0OmZ1bmN0aW9uKCl7
dGhpcy5wcm9wcy5vbkVkaXQoKTt0aGlzLnNldFN0YXRlKHtlZGl0VGV4dDp0aGlzLnByb3BzLnRv
ZG8udGl0bGV9KX0saGFuZGxlS2V5RG93bjpmdW5jdGlvbihldmVudCl7aWYoZXZlbnQud2hpY2g9
PT1FU0NBUEVfS0VZKXt0aGlzLnNldFN0YXRlKHtlZGl0VGV4dDp0aGlzLnByb3BzLnRvZG8udGl0
bGV9KTt0aGlzLnByb3BzLm9uQ2FuY2VsKGV2ZW50KX1lbHNlIGlmKGV2ZW50LndoaWNoPT09RU5U
RVJfS0VZKXt0aGlzLmhhbmRsZVN1Ym1pdChldmVudCl9fSxoYW5kbGVDaGFuZ2U6ZnVuY3Rpb24o
ZXZlbnQpe2lmKHRoaXMucHJvcHMuZWRpdGluZyl7dGhpcy5zZXRTdGF0ZSh7ZWRpdFRleHQ6ZXZl
bnQudGFyZ2V0LnZhbHVlfSl9fSxnZXRJbml0aWFsU3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm57ZWRp
dFRleHQ6dGhpcy5wcm9wcy50b2RvLnRpdGxlfX0sc2hvdWxkQ29tcG9uZW50VXBkYXRlOmZ1bmN0
aW9uKG5leHRQcm9wcyxuZXh0U3RhdGUpe3JldHVybiBuZXh0UHJvcHMudG9kbyE9PXRoaXMucHJv
cHMudG9kb3x8bmV4dFByb3BzLmVkaXRpbmchPT10aGlzLnByb3BzLmVkaXRpbmd8fG5leHRTdGF0
ZS5lZGl0VGV4dCE9PXRoaXMuc3RhdGUuZWRpdFRleHR9LGNvbXBvbmVudERpZFVwZGF0ZTpmdW5j
dGlvbihwcmV2UHJvcHMpe2lmKCFwcmV2UHJvcHMuZWRpdGluZyYmdGhpcy5wcm9wcy5lZGl0aW5n
KXt2YXIgbm9kZT1SZWFjdC5maW5kRE9NTm9kZSh0aGlzLnJlZnMuZWRpdEZpZWxkKTtub2RlLmZv
Y3VzKCk7bm9kZS5zZXRTZWxlY3Rpb25SYW5nZShub2RlLnZhbHVlLmxlbmd0aCxub2RlLnZhbHVl
Lmxlbmd0aCl9fSxyZW5kZXI6ZnVuY3Rpb24oKXtyZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudCgi
bGkiLHtjbGFzc05hbWU6Y2xhc3NOYW1lcyh7Y29tcGxldGVkOnRoaXMucHJvcHMudG9kby5jb21w
bGV0ZWQsZWRpdGluZzp0aGlzLnByb3BzLmVkaXRpbmd9KX0sUmVhY3QuY3JlYXRlRWxlbWVudCgi
ZGl2Iix7Y2xhc3NOYW1lOiJ2aWV3In0sUmVhY3QuY3JlYXRlRWxlbWVudCgiaW5wdXQiLHtjbGFz
c05hbWU6InRvZ2dsZSIsdHlwZToiY2hlY2tib3giLGNoZWNrZWQ6dGhpcy5wcm9wcy50b2RvLmNv
bXBsZXRlZCxvbkNoYW5nZTp0aGlzLnByb3BzLm9uVG9nZ2xlfSksUmVhY3QuY3JlYXRlRWxlbWVu
dCgibGFiZWwiLHtvbkRvdWJsZUNsaWNrOnRoaXMuaGFuZGxlRWRpdH0sdGhpcy5wcm9wcy50b2Rv
LnRpdGxlKSxSZWFjdC5jcmVhdGVFbGVtZW50KCJidXR0b24iLHtjbGFzc05hbWU6ImRlc3Ryb3ki
LG9uQ2xpY2s6dGhpcy5wcm9wcy5vbkRlc3Ryb3l9KSksUmVhY3QuY3JlYXRlRWxlbWVudCgiaW5w
dXQiLHtyZWY6ImVkaXRGaWVsZCIsY2xhc3NOYW1lOiJlZGl0Iix2YWx1ZTp0aGlzLnN0YXRlLmVk
aXRUZXh0LG9uQmx1cjp0aGlzLmhhbmRsZVN1Ym1pdCxvbkNoYW5nZTp0aGlzLmhhbmRsZUNoYW5n
ZSxvbktleURvd246dGhpcy5oYW5kbGVLZXlEb3dufSkpfX0pO3ZhciBFTlRFUl9LRVk9MTM7dmFy
IFRvZG9BcHA9UmVhY3QuY3JlYXRlQ2xhc3Moe2dldEluaXRpYWxTdGF0ZTpmdW5jdGlvbigpe3Jl
dHVybntub3dTaG93aW5nOmFwcC5BTExfVE9ET1MsZWRpdGluZzpudWxsLG5ld1RvZG86IiJ9fSxj
b21wb25lbnREaWRNb3VudDpmdW5jdGlvbigpe3ZhciBzZXRTdGF0ZT10aGlzLnNldFN0YXRlO3Zh
ciByb3V0ZXI9Um91dGVyKHsiLyI6c2V0U3RhdGUuYmluZCh0aGlzLHtub3dTaG93aW5nOmFwcC5B
TExfVE9ET1N9KSwiL2FjdGl2ZSI6c2V0U3RhdGUuYmluZCh0aGlzLHtub3dTaG93aW5nOmFwcC5B
Q1RJVkVfVE9ET1N9KSwiL2NvbXBsZXRlZCI6c2V0U3RhdGUuYmluZCh0aGlzLHtub3dTaG93aW5n
OmFwcC5DT01QTEVURURfVE9ET1N9KX0pO3JvdXRlci5pbml0KCIvIil9LGhhbmRsZUNoYW5nZTpm
dW5jdGlvbihldmVudCl7dGhpcy5zZXRTdGF0ZSh7bmV3VG9kbzpldmVudC50YXJnZXQudmFsdWV9
KX0saGFuZGxlTmV3VG9kb0tleURvd246ZnVuY3Rpb24oZXZlbnQpe2lmKGV2ZW50LmtleUNvZGUh
PT1FTlRFUl9LRVkpe3JldHVybn1ldmVudC5wcmV2ZW50RGVmYXVsdCgpO3ZhciB2YWw9dGhpcy5z
dGF0ZS5uZXdUb2RvLnRyaW0oKTtpZih2YWwpe3RoaXMucHJvcHMubW9kZWwuYWRkVG9kbyh2YWwp
O3RoaXMuc2V0U3RhdGUoe25ld1RvZG86IiJ9KX19LHRvZ2dsZUFsbDpmdW5jdGlvbihldmVudCl7
dmFyIGNoZWNrZWQ9ZXZlbnQudGFyZ2V0LmNoZWNrZWQ7dGhpcy5wcm9wcy5tb2RlbC50b2dnbGVB
bGwoY2hlY2tlZCl9LHRvZ2dsZTpmdW5jdGlvbih0b2RvVG9Ub2dnbGUpe3RoaXMucHJvcHMubW9k
ZWwudG9nZ2xlKHRvZG9Ub1RvZ2dsZSl9LGRlc3Ryb3k6ZnVuY3Rpb24odG9kbyl7dGhpcy5wcm9w
cy5tb2RlbC5kZXN0cm95KHRvZG8pfSxlZGl0OmZ1bmN0aW9uKHRvZG8pe3RoaXMuc2V0U3RhdGUo
e2VkaXRpbmc6dG9kby5pZH0pfSxzYXZlOmZ1bmN0aW9uKHRvZG9Ub1NhdmUsdGV4dCl7dGhpcy5w
cm9wcy5tb2RlbC5zYXZlKHRvZG9Ub1NhdmUsdGV4dCk7dGhpcy5zZXRTdGF0ZSh7ZWRpdGluZzpu
dWxsfSl9LGNhbmNlbDpmdW5jdGlvbigpe3RoaXMuc2V0U3RhdGUoe2VkaXRpbmc6bnVsbH0pfSxj
bGVhckNvbXBsZXRlZDpmdW5jdGlvbigpe3RoaXMucHJvcHMubW9kZWwuY2xlYXJDb21wbGV0ZWQo
KX0scmVuZGVyOmZ1bmN0aW9uKCl7dmFyIGZvb3Rlcjt2YXIgbWFpbjt2YXIgdG9kb3M9dGhpcy5w
cm9wcy5tb2RlbC50b2Rvczt2YXIgc2hvd25Ub2Rvcz10b2Rvcy5maWx0ZXIoZnVuY3Rpb24odG9k
byl7c3dpdGNoKHRoaXMuc3RhdGUubm93U2hvd2luZyl7Y2FzZSBhcHAuQUNUSVZFX1RPRE9TOnJl
dHVybiF0b2RvLmNvbXBsZXRlZDtjYXNlIGFwcC5DT01QTEVURURfVE9ET1M6cmV0dXJuIHRvZG8u
Y29tcGxldGVkO2RlZmF1bHQ6cmV0dXJuIHRydWV9fSx0aGlzKTt2YXIgdG9kb0l0ZW1zPXNob3du
VG9kb3MubWFwKGZ1bmN0aW9uKHRvZG8pe3JldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFRvZG9J
dGVtLHtrZXk6dG9kby5pZCx0b2RvOnRvZG8sb25Ub2dnbGU6dGhpcy50b2dnbGUuYmluZCh0aGlz
LHRvZG8pLG9uRGVzdHJveTp0aGlzLmRlc3Ryb3kuYmluZCh0aGlzLHRvZG8pLG9uRWRpdDp0aGlz
LmVkaXQuYmluZCh0aGlzLHRvZG8pLGVkaXRpbmc6dGhpcy5zdGF0ZS5lZGl0aW5nPT09dG9kby5p
ZCxvblNhdmU6dGhpcy5zYXZlLmJpbmQodGhpcyx0b2RvKSxvbkNhbmNlbDp0aGlzLmNhbmNlbH0p
fSx0aGlzKTt2YXIgYWN0aXZlVG9kb0NvdW50PXRvZG9zLnJlZHVjZShmdW5jdGlvbihhY2N1bSx0
b2RvKXtyZXR1cm4gdG9kby5jb21wbGV0ZWQ/YWNjdW06YWNjdW0rMX0sMCk7dmFyIGNvbXBsZXRl
ZENvdW50PXRvZG9zLmxlbmd0aC1hY3RpdmVUb2RvQ291bnQ7aWYoYWN0aXZlVG9kb0NvdW50fHxj
b21wbGV0ZWRDb3VudCl7Zm9vdGVyPVJlYWN0LmNyZWF0ZUVsZW1lbnQoVG9kb0Zvb3Rlcix7Y291
bnQ6YWN0aXZlVG9kb0NvdW50LGNvbXBsZXRlZENvdW50OmNvbXBsZXRlZENvdW50LG5vd1Nob3dp
bmc6dGhpcy5zdGF0ZS5ub3dTaG93aW5nLG9uQ2xlYXJDb21wbGV0ZWQ6dGhpcy5jbGVhckNvbXBs
ZXRlZH0pfWlmKHRvZG9zLmxlbmd0aCl7bWFpbj1SZWFjdC5jcmVhdGVFbGVtZW50KCJzZWN0aW9u
Iix7Y2xhc3NOYW1lOiJtYWluIn0sUmVhY3QuY3JlYXRlRWxlbWVudCgiaW5wdXQiLHtjbGFzc05h
bWU6InRvZ2dsZS1hbGwiLHR5cGU6ImNoZWNrYm94IixvbkNoYW5nZTp0aGlzLnRvZ2dsZUFsbCxj
aGVja2VkOmFjdGl2ZVRvZG9Db3VudD09PTB9KSxSZWFjdC5jcmVhdGVFbGVtZW50KCJ1bCIse2Ns
YXNzTmFtZToidG9kby1saXN0In0sdG9kb0l0ZW1zKSl9cmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1l
bnQoImRpdiIsbnVsbCxSZWFjdC5jcmVhdGVFbGVtZW50KCJoZWFkZXIiLHtjbGFzc05hbWU6Imhl
YWRlciJ9LFJlYWN0LmNyZWF0ZUVsZW1lbnQoImgxIixudWxsLCJ0b2RvcyIpLFJlYWN0LmNyZWF0
ZUVsZW1lbnQoImlucHV0Iix7Y2xhc3NOYW1lOiJuZXctdG9kbyIscGxhY2Vob2xkZXI6IldoYXQg
bmVlZHMgdG8gYmUgZG9uZT8iLHZhbHVlOnRoaXMuc3RhdGUubmV3VG9kbyxvbktleURvd246dGhp
cy5oYW5kbGVOZXdUb2RvS2V5RG93bixvbkNoYW5nZTp0aGlzLmhhbmRsZUNoYW5nZSxhdXRvRm9j
dXM6dHJ1ZX0pKSxtYWluLGZvb3Rlcil9fSk7dmFyIG1vZGVsPW5ldyBhcHAuVG9kb01vZGVsKCJy
ZWFjdC10b2RvcyIpO2Z1bmN0aW9uIHJlbmRlcigpe1JlYWN0RE9NLnJlbmRlcihSZWFjdC5jcmVh
dGVFbGVtZW50KFRvZG9BcHAse21vZGVsOm1vZGVsfSksZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNs
YXNzTmFtZSgidG9kb2FwcCIpWzBdKX1tb2RlbC5zdWJzY3JpYmUocmVuZGVyKTtyZW5kZXIoKX0p
KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
cmVhY3QvaW5kZXguaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L2luZGV4Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYThhNWU3MTVkYmI4N2RjNTY1NWI0MTRhNDhhZWExYmYzMGFlNDk3NAotLS0gL2Rldi9udWxs
CisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L2luZGV4Lmh0bWwKQEAgLTAsMCArMSwyMyBAQAorPCFk
b2N0eXBlIGh0bWw+Cis8aHRtbCBsYW5nPSJlbiIgZGF0YS1mcmFtZXdvcms9InJlYWN0Ij4KKyAg
ICA8aGVhZD4KKyAgICAgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgorICAgICAgICA8dGl0bGU+
UmVhY3Qg4oCiIFRvZG9NVkM8L3RpdGxlPgorICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Im5vZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1vbi9iYXNlLmNzcyI+CisgICAgICAgIDxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ibm9kZV9tb2R1bGVzL3RvZG9tdmMtYXBwLWNzcy9p
bmRleC5jc3MiPgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPHNlY3Rpb24gY2xh
c3M9InRvZG9hcHAiPjwvc2VjdGlvbj4KKyAgICAgICAgPGZvb3RlciBjbGFzcz0iaW5mbyI+Cisg
ICAgICAgICAgICA8cD5Eb3VibGUtY2xpY2sgdG8gZWRpdCBhIHRvZG88L3A+CisgICAgICAgICAg
ICA8cD5DcmVhdGVkIGJ5IDxhIGhyZWY9Imh0dHA6Ly9naXRodWIuY29tL3BldGVodW50LyI+cGV0
ZWh1bnQ8L2E+PC9wPgorICAgICAgICAgICAgPHA+UGFydCBvZiA8YSBocmVmPSJodHRwOi8vdG9k
b212Yy5jb20iPlRvZG9NVkM8L2E+PC9wPgorICAgICAgICA8L2Zvb3Rlcj4KKworICAgIDxzY3Jp
cHQgc3JjPSJub2RlX21vZHVsZXMvY2xhc3NuYW1lcy9pbmRleC5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdCBzcmM9Im5vZGVfbW9kdWxlcy9kaXJlY3Rvci9idWlsZC9kaXJlY3Rvci5qcyI+PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Im5vZGVfbW9kdWxlcy9yZWFjdC9kaXN0L3JlYWN0LXdp
dGgtYWRkb25zLm1pbi5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Im5vZGVfbW9kdWxl
cy9yZWFjdC1kb20vZGlzdC9yZWFjdC1kb20ubWluLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0
IHNyYz0iYnVpbGQubWluLmpzIj48L3NjcmlwdD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9qcy9hcHAuanN4IGIvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qv
anMvYXBwLmpzeApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZDg5NWU1MTA1ODRmYzlkZWQxNjZiNDQ0MzkyNjc4M2Yx
NTA0MmI0Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QvanMvYXBwLmpzeApA
QCAtMCwwICsxLDQ0MiBAQAorLypqc2hpbnQgcXVvdG1hcms6ZmFsc2UgKi8KKy8qanNoaW50IHdo
aXRlOmZhbHNlICovCisvKmpzaGludCB0cmFpbGluZzpmYWxzZSAqLworLypqc2hpbnQgbmV3Y2Fw
OmZhbHNlICovCisvKmdsb2JhbCBSZWFjdCwgUm91dGVyKi8KK3ZhciBhcHAgPSBhcHAgfHwge307
CisKKyhmdW5jdGlvbiAoKSB7CisJJ3VzZSBzdHJpY3QnOworCisJYXBwLkFMTF9UT0RPUyA9ICdh
bGwnOworCWFwcC5BQ1RJVkVfVE9ET1MgPSAnYWN0aXZlJzsKKwlhcHAuQ09NUExFVEVEX1RPRE9T
ID0gJ2NvbXBsZXRlZCc7CisKKyAgYXBwLlV0aWxzID0geworICAgIHV1aWQ6IGZ1bmN0aW9uICgp
IHsKKyAgICAgIC8qanNoaW50IGJpdHdpc2U6ZmFsc2UgKi8KKyAgICAgIHZhciBpLCByYW5kb207
CisgICAgICB2YXIgdXVpZCA9ICcnOworCisgICAgICBmb3IgKGkgPSAwOyBpIDwgMzI7IGkrKykg
eworICAgICAgICByYW5kb20gPSBNYXRoLnJhbmRvbSgpICogMTYgfCAwOworICAgICAgICBpZiAo
aSA9PT0gOCB8fCBpID09PSAxMiB8fCBpID09PSAxNiB8fCBpID09PSAyMCkgeworICAgICAgICAg
IHV1aWQgKz0gJy0nOworICAgICAgICB9CisgICAgICAgIHV1aWQgKz0gKGkgPT09IDEyID8gNCA6
IChpID09PSAxNiA/IChyYW5kb20gJiAzIHwgOCkgOiByYW5kb20pKQorICAgICAgICAgIC50b1N0
cmluZygxNik7CisgICAgICB9CisKKyAgICAgIHJldHVybiB1dWlkOworICAgIH0sCisKKyAgICBw
bHVyYWxpemU6IGZ1bmN0aW9uIChjb3VudCwgd29yZCkgeworICAgICAgcmV0dXJuIGNvdW50ID09
PSAxID8gd29yZCA6IHdvcmQgKyAncyc7CisgICAgfSwKKworICAgIGV4dGVuZDogZnVuY3Rpb24g
KCkgeworICAgICAgdmFyIG5ld09iaiA9IHt9OworICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBh
cmd1bWVudHMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgdmFyIG9iaiA9IGFyZ3VtZW50c1tpXTsK
KyAgICAgICAgZm9yICh2YXIga2V5IGluIG9iaikgeworICAgICAgICAgIGlmIChvYmouaGFzT3du
UHJvcGVydHkoa2V5KSkgeworICAgICAgICAgICAgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsKKyAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIHJldHVybiBuZXdPYmo7CisgICAg
fQorICB9OworCisgIHZhciBVdGlscyA9IGFwcC5VdGlsczsKKyAgLy8gR2VuZXJpYyAibW9kZWwi
IG9iamVjdC4gWW91IGNhbiB1c2Ugd2hhdGV2ZXIKKyAgLy8gZnJhbWV3b3JrIHlvdSB3YW50LiBG
b3IgdGhpcyBhcHBsaWNhdGlvbiBpdAorICAvLyBtYXkgbm90IGV2ZW4gYmUgd29ydGggc2VwYXJh
dGluZyB0aGlzIGxvZ2ljCisgIC8vIG91dCwgYnV0IHdlIGRvIHRoaXMgdG8gZGVtb25zdHJhdGUg
b25lIHdheSB0bworICAvLyBzZXBhcmF0ZSBvdXQgcGFydHMgb2YgeW91ciBhcHBsaWNhdGlvbi4K
KyAgYXBwLlRvZG9Nb2RlbCA9IGZ1bmN0aW9uIChrZXkpIHsKKyAgICB0aGlzLmtleSA9IGtleTsK
KyAgICB0aGlzLnRvZG9zID0gW107CisgICAgdGhpcy5vbkNoYW5nZXMgPSBbXTsKKyAgfTsKKwor
ICBhcHAuVG9kb01vZGVsLnByb3RvdHlwZS5zdWJzY3JpYmUgPSBmdW5jdGlvbiAob25DaGFuZ2Up
IHsKKyAgICB0aGlzLm9uQ2hhbmdlcy5wdXNoKG9uQ2hhbmdlKTsKKyAgfTsKKworICBhcHAuVG9k
b01vZGVsLnByb3RvdHlwZS5pbmZvcm0gPSBmdW5jdGlvbiAoKSB7CisgICAgdGhpcy5vbkNoYW5n
ZXMuZm9yRWFjaChmdW5jdGlvbiAoY2IpIHsgY2IoKTsgfSk7CisgIH07CisKKyAgYXBwLlRvZG9N
b2RlbC5wcm90b3R5cGUuYWRkVG9kbyA9IGZ1bmN0aW9uICh0aXRsZSkgeworICAgIHRoaXMudG9k
b3MgPSB0aGlzLnRvZG9zLmNvbmNhdCh7CisgICAgICBpZDogVXRpbHMudXVpZCgpLAorICAgICAg
dGl0bGU6IHRpdGxlLAorICAgICAgY29tcGxldGVkOiBmYWxzZQorICAgIH0pOworCisgICAgdGhp
cy5pbmZvcm0oKTsKKyAgfTsKKworICBhcHAuVG9kb01vZGVsLnByb3RvdHlwZS50b2dnbGVBbGwg
PSBmdW5jdGlvbiAoY2hlY2tlZCkgeworICAgIC8vIE5vdGU6IGl0J3MgdXN1YWxseSBiZXR0ZXIg
dG8gdXNlIGltbXV0YWJsZSBkYXRhIHN0cnVjdHVyZXMgc2luY2UgdGhleSdyZQorICAgIC8vIGVh
c2llciB0byByZWFzb24gYWJvdXQgYW5kIFJlYWN0IHdvcmtzIHZlcnkgd2VsbCB3aXRoIHRoZW0u
IFRoYXQncyB3aHkKKyAgICAvLyB3ZSB1c2UgbWFwKCkgYW5kIGZpbHRlcigpIGV2ZXJ5d2hlcmUg
aW5zdGVhZCBvZiBtdXRhdGluZyB0aGUgYXJyYXkgb3IKKyAgICAvLyB0b2RvIGl0ZW1zIHRoZW1z
ZWx2ZXMuCisgICAgdGhpcy50b2RvcyA9IHRoaXMudG9kb3MubWFwKGZ1bmN0aW9uICh0b2RvKSB7
CisgICAgICByZXR1cm4gVXRpbHMuZXh0ZW5kKHt9LCB0b2RvLCB7Y29tcGxldGVkOiBjaGVja2Vk
fSk7CisgICAgfSk7CisKKyAgICB0aGlzLmluZm9ybSgpOworICB9OworCisgIGFwcC5Ub2RvTW9k
ZWwucHJvdG90eXBlLnRvZ2dsZSA9IGZ1bmN0aW9uICh0b2RvVG9Ub2dnbGUpIHsKKyAgICB0aGlz
LnRvZG9zID0gdGhpcy50b2Rvcy5tYXAoZnVuY3Rpb24gKHRvZG8pIHsKKyAgICAgIHJldHVybiB0
b2RvICE9PSB0b2RvVG9Ub2dnbGUgPworICAgICAgICB0b2RvIDoKKyAgICAgICAgVXRpbHMuZXh0
ZW5kKHt9LCB0b2RvLCB7Y29tcGxldGVkOiAhdG9kby5jb21wbGV0ZWR9KTsKKyAgICB9KTsKKwor
ICAgIHRoaXMuaW5mb3JtKCk7CisgIH07CisKKyAgYXBwLlRvZG9Nb2RlbC5wcm90b3R5cGUuZGVz
dHJveSA9IGZ1bmN0aW9uICh0b2RvKSB7CisgICAgdGhpcy50b2RvcyA9IHRoaXMudG9kb3MuZmls
dGVyKGZ1bmN0aW9uIChjYW5kaWRhdGUpIHsKKyAgICAgIHJldHVybiBjYW5kaWRhdGUgIT09IHRv
ZG87CisgICAgfSk7CisKKyAgICB0aGlzLmluZm9ybSgpOworICB9OworCisgIGFwcC5Ub2RvTW9k
ZWwucHJvdG90eXBlLnNhdmUgPSBmdW5jdGlvbiAodG9kb1RvU2F2ZSwgdGV4dCkgeworICAgIHRo
aXMudG9kb3MgPSB0aGlzLnRvZG9zLm1hcChmdW5jdGlvbiAodG9kbykgeworICAgICAgcmV0dXJu
IHRvZG8gIT09IHRvZG9Ub1NhdmUgPyB0b2RvIDogVXRpbHMuZXh0ZW5kKHt9LCB0b2RvLCB7dGl0
bGU6IHRleHR9KTsKKyAgICB9KTsKKworICAgIHRoaXMuaW5mb3JtKCk7CisgIH07CisKKyAgYXBw
LlRvZG9Nb2RlbC5wcm90b3R5cGUuY2xlYXJDb21wbGV0ZWQgPSBmdW5jdGlvbiAoKSB7CisgICAg
dGhpcy50b2RvcyA9IHRoaXMudG9kb3MuZmlsdGVyKGZ1bmN0aW9uICh0b2RvKSB7CisgICAgICBy
ZXR1cm4gIXRvZG8uY29tcGxldGVkOworICAgIH0pOworCisgICAgdGhpcy5pbmZvcm0oKTsKKyAg
fTsKKworCisgIHZhciBUb2RvRm9vdGVyID0gUmVhY3QuY3JlYXRlQ2xhc3MoeworICAgIHJlbmRl
cjogZnVuY3Rpb24gKCkgeworICAgICAgdmFyIGFjdGl2ZVRvZG9Xb3JkID0gYXBwLlV0aWxzLnBs
dXJhbGl6ZSh0aGlzLnByb3BzLmNvdW50LCAnaXRlbScpOworICAgICAgdmFyIGNsZWFyQnV0dG9u
ID0gbnVsbDsKKworICAgICAgaWYgKHRoaXMucHJvcHMuY29tcGxldGVkQ291bnQgPiAwKSB7Cisg
ICAgICAgIGNsZWFyQnV0dG9uID0gKAorICAgICAgICAgIDxidXR0b24KKyAgICAgICAgICAgIGNs
YXNzTmFtZT0iY2xlYXItY29tcGxldGVkIgorICAgICAgICAgICAgb25DbGljaz17dGhpcy5wcm9w
cy5vbkNsZWFyQ29tcGxldGVkfT4KKyAgICAgICAgICAgIENsZWFyIGNvbXBsZXRlZAorICAgICAg
ICAgIDwvYnV0dG9uPgorICAgICAgICApOworICAgICAgfQorCisgICAgICB2YXIgbm93U2hvd2lu
ZyA9IHRoaXMucHJvcHMubm93U2hvd2luZzsKKyAgICAgIHJldHVybiAoCisgICAgICAgIDxmb290
ZXIgY2xhc3NOYW1lPSJmb290ZXIiPgorICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT0idG9kby1j
b3VudCI+CisgICAgICAgICAgICA8c3Ryb25nPnt0aGlzLnByb3BzLmNvdW50fTwvc3Ryb25nPiB7
YWN0aXZlVG9kb1dvcmR9IGxlZnQKKyAgICAgICAgICA8L3NwYW4+CisgICAgICAgICAgPHVsIGNs
YXNzTmFtZT0iZmlsdGVycyI+CisgICAgICAgICAgICA8bGk+CisgICAgICAgICAgICAgIDxhCisg
ICAgICAgICAgICAgICAgaHJlZj0iIy8iCisgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFz
c05hbWVzKHtzZWxlY3RlZDogbm93U2hvd2luZyA9PT0gYXBwLkFMTF9UT0RPU30pfT4KKyAgICAg
ICAgICAgICAgICAgIEFsbAorICAgICAgICAgICAgICA8L2E+CisgICAgICAgICAgICA8L2xpPgor
ICAgICAgICAgICAgeycgJ30KKyAgICAgICAgICAgIDxsaT4KKyAgICAgICAgICAgICAgPGEKKyAg
ICAgICAgICAgICAgICBocmVmPSIjL2FjdGl2ZSIKKyAgICAgICAgICAgICAgICBjbGFzc05hbWU9
e2NsYXNzTmFtZXMoe3NlbGVjdGVkOiBub3dTaG93aW5nID09PSBhcHAuQUNUSVZFX1RPRE9TfSl9
PgorICAgICAgICAgICAgICAgICAgQWN0aXZlCisgICAgICAgICAgICAgIDwvYT4KKyAgICAgICAg
ICAgIDwvbGk+CisgICAgICAgICAgICB7JyAnfQorICAgICAgICAgICAgPGxpPgorICAgICAgICAg
ICAgICA8YQorICAgICAgICAgICAgICAgIGhyZWY9IiMvY29tcGxldGVkIgorICAgICAgICAgICAg
ICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyh7c2VsZWN0ZWQ6IG5vd1Nob3dpbmcgPT09IGFwcC5D
T01QTEVURURfVE9ET1N9KX0+CisgICAgICAgICAgICAgICAgICBDb21wbGV0ZWQKKyAgICAgICAg
ICAgICAgPC9hPgorICAgICAgICAgICAgPC9saT4KKyAgICAgICAgICA8L3VsPgorICAgICAgICAg
IHtjbGVhckJ1dHRvbn0KKyAgICAgICAgPC9mb290ZXI+CisgICAgICApOworICAgIH0KKyAgfSk7
CisKKyAgdmFyIEVTQ0FQRV9LRVkgPSAyNzsKKyAgdmFyIEVOVEVSX0tFWSA9IDEzOworCisgIHZh
ciBUb2RvSXRlbSA9IFJlYWN0LmNyZWF0ZUNsYXNzKHsKKyAgICBoYW5kbGVTdWJtaXQ6IGZ1bmN0
aW9uIChldmVudCkgeworICAgICAgdmFyIHZhbCA9IHRoaXMuc3RhdGUuZWRpdFRleHQudHJpbSgp
OworICAgICAgaWYgKHZhbCkgeworICAgICAgICB0aGlzLnByb3BzLm9uU2F2ZSh2YWwpOworICAg
ICAgICB0aGlzLnNldFN0YXRlKHtlZGl0VGV4dDogdmFsfSk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICB0aGlzLnByb3BzLm9uRGVzdHJveSgpOworICAgICAgfQorICAgIH0sCisKKyAgICBoYW5k
bGVFZGl0OiBmdW5jdGlvbiAoKSB7CisgICAgICB0aGlzLnByb3BzLm9uRWRpdCgpOworICAgICAg
dGhpcy5zZXRTdGF0ZSh7ZWRpdFRleHQ6IHRoaXMucHJvcHMudG9kby50aXRsZX0pOworICAgIH0s
CisKKyAgICBoYW5kbGVLZXlEb3duOiBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgIGlmIChldmVu
dC53aGljaCA9PT0gRVNDQVBFX0tFWSkgeworICAgICAgICB0aGlzLnNldFN0YXRlKHtlZGl0VGV4
dDogdGhpcy5wcm9wcy50b2RvLnRpdGxlfSk7CisgICAgICAgIHRoaXMucHJvcHMub25DYW5jZWwo
ZXZlbnQpOworICAgICAgfSBlbHNlIGlmIChldmVudC53aGljaCA9PT0gRU5URVJfS0VZKSB7Cisg
ICAgICAgIHRoaXMuaGFuZGxlU3VibWl0KGV2ZW50KTsKKyAgICAgIH0KKyAgICB9LAorCisgICAg
aGFuZGxlQ2hhbmdlOiBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgIGlmICh0aGlzLnByb3BzLmVk
aXRpbmcpIHsKKyAgICAgICAgdGhpcy5zZXRTdGF0ZSh7ZWRpdFRleHQ6IGV2ZW50LnRhcmdldC52
YWx1ZX0pOworICAgICAgfQorICAgIH0sCisKKyAgICBnZXRJbml0aWFsU3RhdGU6IGZ1bmN0aW9u
ICgpIHsKKyAgICAgIHJldHVybiB7ZWRpdFRleHQ6IHRoaXMucHJvcHMudG9kby50aXRsZX07Cisg
ICAgfSwKKworICAgIC8qKgorICAgICAqIFRoaXMgaXMgYSBjb21wbGV0ZWx5IG9wdGlvbmFsIHBl
cmZvcm1hbmNlIGVuaGFuY2VtZW50IHRoYXQgeW91IGNhbgorICAgICAqIGltcGxlbWVudCBvbiBh
bnkgUmVhY3QgY29tcG9uZW50LiBJZiB5b3Ugd2VyZSB0byBkZWxldGUgdGhpcyBtZXRob2QKKyAg
ICAgKiB0aGUgYXBwIHdvdWxkIHN0aWxsIHdvcmsgY29ycmVjdGx5IChhbmQgc3RpbGwgYmUgdmVy
eSBwZXJmb3JtYW50ISksIHdlCisgICAgICoganVzdCB1c2UgaXQgYXMgYW4gZXhhbXBsZSBvZiBo
b3cgbGl0dGxlIGNvZGUgaXQgdGFrZXMgdG8gZ2V0IGFuIG9yZGVyCisgICAgICogb2YgbWFnbml0
dWRlIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50LgorICAgICAqLworICAgIHNob3VsZENvbXBvbmVu
dFVwZGF0ZTogZnVuY3Rpb24gKG5leHRQcm9wcywgbmV4dFN0YXRlKSB7CisgICAgICByZXR1cm4g
KAorICAgICAgICBuZXh0UHJvcHMudG9kbyAhPT0gdGhpcy5wcm9wcy50b2RvIHx8CisgICAgICAg
IG5leHRQcm9wcy5lZGl0aW5nICE9PSB0aGlzLnByb3BzLmVkaXRpbmcgfHwKKyAgICAgICAgbmV4
dFN0YXRlLmVkaXRUZXh0ICE9PSB0aGlzLnN0YXRlLmVkaXRUZXh0CisgICAgICApOworICAgIH0s
CisKKyAgICAvKioKKyAgICAgKiBTYWZlbHkgbWFuaXB1bGF0ZSB0aGUgRE9NIGFmdGVyIHVwZGF0
aW5nIHRoZSBzdGF0ZSB3aGVuIGludm9raW5nCisgICAgICogYHRoaXMucHJvcHMub25FZGl0KClg
IGluIHRoZSBgaGFuZGxlRWRpdGAgbWV0aG9kIGFib3ZlLgorICAgICAqIEZvciBtb3JlIGluZm8g
cmVmZXIgdG8gbm90ZXMgYXQgaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy9j
b21wb25lbnQtYXBpLmh0bWwjc2V0c3RhdGUKKyAgICAgKiBhbmQgaHR0cHM6Ly9mYWNlYm9vay5n
aXRodWIuaW8vcmVhY3QvZG9jcy9jb21wb25lbnQtc3BlY3MuaHRtbCN1cGRhdGluZy1jb21wb25l
bnRkaWR1cGRhdGUKKyAgICAgKi8KKyAgICBjb21wb25lbnREaWRVcGRhdGU6IGZ1bmN0aW9uIChw
cmV2UHJvcHMpIHsKKyAgICAgIGlmICghcHJldlByb3BzLmVkaXRpbmcgJiYgdGhpcy5wcm9wcy5l
ZGl0aW5nKSB7CisgICAgICAgIHZhciBub2RlID0gUmVhY3QuZmluZERPTU5vZGUodGhpcy5yZWZz
LmVkaXRGaWVsZCk7CisgICAgICAgIG5vZGUuZm9jdXMoKTsKKyAgICAgICAgbm9kZS5zZXRTZWxl
Y3Rpb25SYW5nZShub2RlLnZhbHVlLmxlbmd0aCwgbm9kZS52YWx1ZS5sZW5ndGgpOworICAgICAg
fQorICAgIH0sCisKKyAgICByZW5kZXI6IGZ1bmN0aW9uICgpIHsKKyAgICAgIHJldHVybiAoCisg
ICAgICAgIDxsaSBjbGFzc05hbWU9e2NsYXNzTmFtZXMoeworICAgICAgICAgIGNvbXBsZXRlZDog
dGhpcy5wcm9wcy50b2RvLmNvbXBsZXRlZCwKKyAgICAgICAgICBlZGl0aW5nOiB0aGlzLnByb3Bz
LmVkaXRpbmcKKyAgICAgICAgfSl9PgorICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSJ2aWV3Ij4K
KyAgICAgICAgICAgIDxpbnB1dAorICAgICAgICAgICAgICBjbGFzc05hbWU9InRvZ2dsZSIKKyAg
ICAgICAgICAgICAgdHlwZT0iY2hlY2tib3giCisgICAgICAgICAgICAgIGNoZWNrZWQ9e3RoaXMu
cHJvcHMudG9kby5jb21wbGV0ZWR9CisgICAgICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLnByb3Bz
Lm9uVG9nZ2xlfQorICAgICAgICAgICAgLz4KKyAgICAgICAgICAgIDxsYWJlbCBvbkRvdWJsZUNs
aWNrPXt0aGlzLmhhbmRsZUVkaXR9PgorICAgICAgICAgICAgICB7dGhpcy5wcm9wcy50b2RvLnRp
dGxlfQorICAgICAgICAgICAgPC9sYWJlbD4KKyAgICAgICAgICAgIDxidXR0b24gY2xhc3NOYW1l
PSJkZXN0cm95IiBvbkNsaWNrPXt0aGlzLnByb3BzLm9uRGVzdHJveX0gLz4KKyAgICAgICAgICA8
L2Rpdj4KKyAgICAgICAgICA8aW5wdXQKKyAgICAgICAgICAgIHJlZj0iZWRpdEZpZWxkIgorICAg
ICAgICAgICAgY2xhc3NOYW1lPSJlZGl0IgorICAgICAgICAgICAgdmFsdWU9e3RoaXMuc3RhdGUu
ZWRpdFRleHR9CisgICAgICAgICAgICBvbkJsdXI9e3RoaXMuaGFuZGxlU3VibWl0fQorICAgICAg
ICAgICAgb25DaGFuZ2U9e3RoaXMuaGFuZGxlQ2hhbmdlfQorICAgICAgICAgICAgb25LZXlEb3du
PXt0aGlzLmhhbmRsZUtleURvd259CisgICAgICAgICAgLz4KKyAgICAgICAgPC9saT4KKyAgICAg
ICk7CisgICAgfQorICB9KTsKKworCXZhciBFTlRFUl9LRVkgPSAxMzsKKworCXZhciBUb2RvQXBw
ID0gUmVhY3QuY3JlYXRlQ2xhc3MoeworCQlnZXRJbml0aWFsU3RhdGU6IGZ1bmN0aW9uICgpIHsK
KwkJCXJldHVybiB7CisJCQkJbm93U2hvd2luZzogYXBwLkFMTF9UT0RPUywKKwkJCQllZGl0aW5n
OiBudWxsLAorCQkJCW5ld1RvZG86ICcnCisJCQl9OworCQl9LAorCisJCWNvbXBvbmVudERpZE1v
dW50OiBmdW5jdGlvbiAoKSB7CisJCQl2YXIgc2V0U3RhdGUgPSB0aGlzLnNldFN0YXRlOworCQkJ
dmFyIHJvdXRlciA9IFJvdXRlcih7CisJCQkJJy8nOiBzZXRTdGF0ZS5iaW5kKHRoaXMsIHtub3dT
aG93aW5nOiBhcHAuQUxMX1RPRE9TfSksCisJCQkJJy9hY3RpdmUnOiBzZXRTdGF0ZS5iaW5kKHRo
aXMsIHtub3dTaG93aW5nOiBhcHAuQUNUSVZFX1RPRE9TfSksCisJCQkJJy9jb21wbGV0ZWQnOiBz
ZXRTdGF0ZS5iaW5kKHRoaXMsIHtub3dTaG93aW5nOiBhcHAuQ09NUExFVEVEX1RPRE9TfSkKKwkJ
CX0pOworCQkJcm91dGVyLmluaXQoJy8nKTsKKwkJfSwKKworCQloYW5kbGVDaGFuZ2U6IGZ1bmN0
aW9uIChldmVudCkgeworCQkJdGhpcy5zZXRTdGF0ZSh7bmV3VG9kbzogZXZlbnQudGFyZ2V0LnZh
bHVlfSk7CisJCX0sCisKKwkJaGFuZGxlTmV3VG9kb0tleURvd246IGZ1bmN0aW9uIChldmVudCkg
eworCQkJaWYgKGV2ZW50LmtleUNvZGUgIT09IEVOVEVSX0tFWSkgeworCQkJCXJldHVybjsKKwkJ
CX0KKworCQkJZXZlbnQucHJldmVudERlZmF1bHQoKTsKKworCQkJdmFyIHZhbCA9IHRoaXMuc3Rh
dGUubmV3VG9kby50cmltKCk7CisKKwkJCWlmICh2YWwpIHsKKwkJCQl0aGlzLnByb3BzLm1vZGVs
LmFkZFRvZG8odmFsKTsKKwkJCQl0aGlzLnNldFN0YXRlKHtuZXdUb2RvOiAnJ30pOworCQkJfQor
CQl9LAorCisJCXRvZ2dsZUFsbDogZnVuY3Rpb24gKGV2ZW50KSB7CisJCQl2YXIgY2hlY2tlZCA9
IGV2ZW50LnRhcmdldC5jaGVja2VkOworCQkJdGhpcy5wcm9wcy5tb2RlbC50b2dnbGVBbGwoY2hl
Y2tlZCk7CisJCX0sCisKKwkJdG9nZ2xlOiBmdW5jdGlvbiAodG9kb1RvVG9nZ2xlKSB7CisJCQl0
aGlzLnByb3BzLm1vZGVsLnRvZ2dsZSh0b2RvVG9Ub2dnbGUpOworCQl9LAorCisJCWRlc3Ryb3k6
IGZ1bmN0aW9uICh0b2RvKSB7CisJCQl0aGlzLnByb3BzLm1vZGVsLmRlc3Ryb3kodG9kbyk7CisJ
CX0sCisKKwkJZWRpdDogZnVuY3Rpb24gKHRvZG8pIHsKKwkJCXRoaXMuc2V0U3RhdGUoe2VkaXRp
bmc6IHRvZG8uaWR9KTsKKwkJfSwKKworCQlzYXZlOiBmdW5jdGlvbiAodG9kb1RvU2F2ZSwgdGV4
dCkgeworCQkJdGhpcy5wcm9wcy5tb2RlbC5zYXZlKHRvZG9Ub1NhdmUsIHRleHQpOworCQkJdGhp
cy5zZXRTdGF0ZSh7ZWRpdGluZzogbnVsbH0pOworCQl9LAorCisJCWNhbmNlbDogZnVuY3Rpb24g
KCkgeworCQkJdGhpcy5zZXRTdGF0ZSh7ZWRpdGluZzogbnVsbH0pOworCQl9LAorCisJCWNsZWFy
Q29tcGxldGVkOiBmdW5jdGlvbiAoKSB7CisJCQl0aGlzLnByb3BzLm1vZGVsLmNsZWFyQ29tcGxl
dGVkKCk7CisJCX0sCisKKwkJcmVuZGVyOiBmdW5jdGlvbiAoKSB7CisJCQl2YXIgZm9vdGVyOwor
CQkJdmFyIG1haW47CisJCQl2YXIgdG9kb3MgPSB0aGlzLnByb3BzLm1vZGVsLnRvZG9zOworCisJ
CQl2YXIgc2hvd25Ub2RvcyA9IHRvZG9zLmZpbHRlcihmdW5jdGlvbiAodG9kbykgeworCQkJCXN3
aXRjaCAodGhpcy5zdGF0ZS5ub3dTaG93aW5nKSB7CisJCQkJY2FzZSBhcHAuQUNUSVZFX1RPRE9T
OgorCQkJCQlyZXR1cm4gIXRvZG8uY29tcGxldGVkOworCQkJCWNhc2UgYXBwLkNPTVBMRVRFRF9U
T0RPUzoKKwkJCQkJcmV0dXJuIHRvZG8uY29tcGxldGVkOworCQkJCWRlZmF1bHQ6CisJCQkJCXJl
dHVybiB0cnVlOworCQkJCX0KKwkJCX0sIHRoaXMpOworCisJCQl2YXIgdG9kb0l0ZW1zID0gc2hv
d25Ub2Rvcy5tYXAoZnVuY3Rpb24gKHRvZG8pIHsKKwkJCQlyZXR1cm4gKAorCQkJCQk8VG9kb0l0
ZW0KKwkJCQkJCWtleT17dG9kby5pZH0KKwkJCQkJCXRvZG89e3RvZG99CisJCQkJCQlvblRvZ2ds
ZT17dGhpcy50b2dnbGUuYmluZCh0aGlzLCB0b2RvKX0KKwkJCQkJCW9uRGVzdHJveT17dGhpcy5k
ZXN0cm95LmJpbmQodGhpcywgdG9kbyl9CisJCQkJCQlvbkVkaXQ9e3RoaXMuZWRpdC5iaW5kKHRo
aXMsIHRvZG8pfQorCQkJCQkJZWRpdGluZz17dGhpcy5zdGF0ZS5lZGl0aW5nID09PSB0b2RvLmlk
fQorCQkJCQkJb25TYXZlPXt0aGlzLnNhdmUuYmluZCh0aGlzLCB0b2RvKX0KKwkJCQkJCW9uQ2Fu
Y2VsPXt0aGlzLmNhbmNlbH0KKwkJCQkJLz4KKwkJCQkpOworCQkJfSwgdGhpcyk7CisKKwkJCXZh
ciBhY3RpdmVUb2RvQ291bnQgPSB0b2Rvcy5yZWR1Y2UoZnVuY3Rpb24gKGFjY3VtLCB0b2RvKSB7
CisJCQkJcmV0dXJuIHRvZG8uY29tcGxldGVkID8gYWNjdW0gOiBhY2N1bSArIDE7CisJCQl9LCAw
KTsKKworCQkJdmFyIGNvbXBsZXRlZENvdW50ID0gdG9kb3MubGVuZ3RoIC0gYWN0aXZlVG9kb0Nv
dW50OworCisJCQlpZiAoYWN0aXZlVG9kb0NvdW50IHx8IGNvbXBsZXRlZENvdW50KSB7CisJCQkJ
Zm9vdGVyID0KKwkJCQkJPFRvZG9Gb290ZXIKKwkJCQkJCWNvdW50PXthY3RpdmVUb2RvQ291bnR9
CisJCQkJCQljb21wbGV0ZWRDb3VudD17Y29tcGxldGVkQ291bnR9CisJCQkJCQlub3dTaG93aW5n
PXt0aGlzLnN0YXRlLm5vd1Nob3dpbmd9CisJCQkJCQlvbkNsZWFyQ29tcGxldGVkPXt0aGlzLmNs
ZWFyQ29tcGxldGVkfQorCQkJCQkvPjsKKwkJCX0KKworCQkJaWYgKHRvZG9zLmxlbmd0aCkgewor
CQkJCW1haW4gPSAoCisJCQkJCTxzZWN0aW9uIGNsYXNzTmFtZT0ibWFpbiI+CisJCQkJCQk8aW5w
dXQKKwkJCQkJCQljbGFzc05hbWU9InRvZ2dsZS1hbGwiCisJCQkJCQkJdHlwZT0iY2hlY2tib3gi
CisJCQkJCQkJb25DaGFuZ2U9e3RoaXMudG9nZ2xlQWxsfQorCQkJCQkJCWNoZWNrZWQ9e2FjdGl2
ZVRvZG9Db3VudCA9PT0gMH0KKwkJCQkJCS8+CisJCQkJCQk8dWwgY2xhc3NOYW1lPSJ0b2RvLWxp
c3QiPgorCQkJCQkJCXt0b2RvSXRlbXN9CisJCQkJCQk8L3VsPgorCQkJCQk8L3NlY3Rpb24+CisJ
CQkJKTsKKwkJCX0KKworCQkJcmV0dXJuICgKKwkJCQk8ZGl2PgorCQkJCQk8aGVhZGVyIGNsYXNz
TmFtZT0iaGVhZGVyIj4KKwkJCQkJCTxoMT50b2RvczwvaDE+CisJCQkJCQk8aW5wdXQKKwkJCQkJ
CQljbGFzc05hbWU9Im5ldy10b2RvIgorCQkJCQkJCXBsYWNlaG9sZGVyPSJXaGF0IG5lZWRzIHRv
IGJlIGRvbmU/IgorCQkJCQkJCXZhbHVlPXt0aGlzLnN0YXRlLm5ld1RvZG99CisJCQkJCQkJb25L
ZXlEb3duPXt0aGlzLmhhbmRsZU5ld1RvZG9LZXlEb3dufQorCQkJCQkJCW9uQ2hhbmdlPXt0aGlz
LmhhbmRsZUNoYW5nZX0KKwkJCQkJCQlhdXRvRm9jdXM9e3RydWV9CisJCQkJCQkvPgorCQkJCQk8
L2hlYWRlcj4KKwkJCQkJe21haW59CisJCQkJCXtmb290ZXJ9CisJCQkJPC9kaXY+CisJCQkpOwor
CQl9CisJfSk7CisKKwl2YXIgbW9kZWwgPSBuZXcgYXBwLlRvZG9Nb2RlbCgncmVhY3QtdG9kb3Mn
KTsKKworCWZ1bmN0aW9uIHJlbmRlcigpIHsKKwkJUmVhY3RET00ucmVuZGVyKAorCQkJPFRvZG9B
cHAgbW9kZWw9e21vZGVsfS8+LAorCQkJZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgn
dG9kb2FwcCcpWzBdCisJCSk7CisJfQorCisJbW9kZWwuc3Vic2NyaWJlKHJlbmRlcik7CisJcmVu
ZGVyKCk7Cit9KSgpOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QvbGljZW5zZS5tZCBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL3JlYWN0L2xpY2Vuc2UubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmJmYTJlMzg5ZWQ4Y2Nk
ODdiM2Q1OWQyMjYxYTdhZDYzNTRmYzM3NAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L3JlYWN0L2xpY2Vuc2UubWQKQEAgLTAsMCArMSwyMCBAQAorRXZlcnl0aGluZyBpbiB0aGlzIHJl
cG8gaXMgTUlUIExpY2Vuc2UgdW5sZXNzIG90aGVyd2lzZSBzcGVjaWZpZWQuCisKK0NvcHlyaWdo
dCAoYykgQWRkeSBPc21hbmksIFNpbmRyZSBTb3JodXMsIFBhc2NhbCBIYXJ0aWcsIFN0ZXBoZW4g
U2F3Y2h1ay4KKworUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2Us
IHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZgordGhpcyBzb2Z0d2FyZSBhbmQgYXNz
b2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4K
K3RoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1p
dGF0aW9uIHRoZSByaWdodHMgdG8KK3VzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwg
ZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mCit0aGUgU29mdHdh
cmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNo
ZWQgdG8gZG8gc28sCitzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKworVGhl
IGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwg
YmUgaW5jbHVkZWQgaW4gYWxsCitjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhl
IFNvZnR3YXJlLgorCitUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBX
QVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorSU1QTElFRCwgSU5DTFVESU5HIEJVVCBO
T1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MK
K0ZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQVVUSE9SUyBPUgorQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBB
TlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSCitJTiBBTiBBQ1RJ
T04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBP
UiBJTgorQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERF
QUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvY2xhc3NuYW1lcy9DT05UUklC
VVRJTkcubWQgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvY2xhc3NuYW1lcy9DT05U
UklCVVRJTkcubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTkwNDA2MWVkOTYzM2MwNDRmNmUyMTQyODAxNmNmMDgy
MDQ0ZmVkMwotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxl
cy9jbGFzc25hbWVzL0NPTlRSSUJVVElORy5tZApAQCAtMCwwICsxLDIxIEBACisjIENvbnRyaWJ1
dGluZworCitUaGFua3MgZm9yIHlvdXIgaW50ZXJlc3QgaW4gY2xhc3NOYW1lcy4gSXNzdWVzLCBQ
UnMgYW5kIHN1Z2dlc3Rpb25zIHdlbGNvbWUgOikKKworQmVmb3JlIHdvcmtpbmcgb24gYSBQUiwg
cGxlYXNlIGNvbnNpZGVyIHRoZSBmb2xsb3dpbmc6CisKKyogU3BlZWQgaXMgYSBzZXJpb3VzIGNv
bmNlcm4gZm9yIHRoaXMgcGFja2FnZSBhcyBpdCBpcyBsaWtlbHkgdG8gYmUgY2FsbGVkIGEKK3Np
Z25pZmljYW50IG51bWJlciBvZiB0aW1lcyBpbiBhbnkgcHJvamVjdCB0aGF0IHVzZXMgaXQuIEFz
IHN1Y2gsIG5ldyBmZWF0dXJlcword2lsbCBvbmx5IGJlIGFjY2VwdGVkIGlmIHRoZXkgaW1wcm92
ZSAob3IgYXQgbGVhc3QgZG8gbm90IG5lZ2F0aXZlbHkgaW1wYWN0KQorcGVyZm9ybWFuY2UuCisq
IFRvIGRlbW9uc3RyYXRlIHBlcmZvcm1hbmNlIGRpZmZlcmVuY2VzIHBsZWFzZSBzZXQgdXAgYQor
W0pTUGVyZl0oaHR0cDovL2pzcGVyZi5jb20pIHRlc3QgYW5kIGxpbmsgdG8gaXQgZnJvbSB5b3Vy
IGlzc3VlIC8gUFIuCisqIFRlc3RzIG11c3QgYmUgYWRkZWQgZm9yIGFueSBjaGFuZ2Ugb3IgbmV3
IGZlYXR1cmUgYmVmb3JlIGl0IHdpbGwgYmUgYWNjZXB0ZWQuCisKK0EgYmVuY2htYXJrIHV0aWxp
dGl5IGlzIGluY2x1ZGVkIHNvIHRoYXQgY2hhbmdlcyBtYXkgYmUgdGVzdGVkIGFnYWluc3QgdGhl
CitjdXJyZW50IHB1Ymxpc2hlZCB2ZXJzaW9uLiBUbyBydW4gdGhlIGJlbmNobWFya3MsIGBucG0g
aW5zdGFsbGAgaW4gdGhlCitgLi9iZW5jaG1hcmtzYCBkaXJlY3RvcnkgdGhlbiBydW4gYG5wbSBy
dW4gYmVuY2htYXJrc2AgaW4gdGhlIHBhY2thZ2Ugcm9vdC4KKworUGxlYXNlIGJlIGF3YXJlIHRo
b3VnaCB0aGF0IGxvY2FsIGJlbmNobWFya3MgYXJlIGp1c3QgYSBzbW9rZS1zaWduYWw7IHRoZXkg
d2lsbAorcnVuIGluIHRoZSB2OCB2ZXJzaW9uIHRoYXQgeW91ciBub2RlL2lvanMgdXNlcywgd2hp
bGUgY2xhc3NOYW1lcyBpcyBfbW9zdF8KK29mdGVuIHJ1biBhY3Jvc3MgYSB3aWRlIHZhcmlldHkg
b2YgYnJvd3NlcnMgYW5kIGJyb3dzZXIgdmVyc2lvbnMuCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9yZWFjdC9ub2RlX21vZHVsZXMvY2xhc3NuYW1lcy9ISVNUT1JZLm1kIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
cmVhY3Qvbm9kZV9tb2R1bGVzL2NsYXNzbmFtZXMvSElTVE9SWS5tZApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40OTI5
NTJmMTA0MGM0OTk4MDRjMTk0MjNhNzRmOGIzNzhhZGNkMjM0Ci0tLSAvZGV2L251bGwKKysrIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2NsYXNzbmFtZXMvSElTVE9SWS5tZApAQCAt
MCwwICsxLDgxIEBACisjIENoYW5nZWxvZworCisjIyB2Mi4yLjUgLyAyMDE2LTA1LTAyCisKKyog
SW1wcm92ZWQgcGVyZm9ybWFuY2Ugb2YgYGRlZHVwZWAgdmFyaWFudCBldmVuIGZ1cnRoZXIsIHRo
YW5rcyBbQW5kcmVzIFN1YXJlel0oaHR0cHM6Ly9naXRodWIuY29tL3plcnRvc2gpCisKKyMjIHYy
LjIuNCAvIDIwMTYtMDQtMjUKKworKiBJbXByb3ZlZCBwZXJmb3JtYW5jZSBvZiBgZGVkdXBlYCB2
YXJpYW50IGJ5IGFib3V0IDJ4LCB0aGFua3MgW0JhcnRvc3ogR2/Fm2NpxYRza2ldKGh0dHBzOi8v
Z2l0aHViLmNvbS9iZ29zY2luc2tpKQorCisjIyB2Mi4yLjMgLyAyMDE2LTAxLTA1CisKKyogVXBk
YXRlZCBgYmluZGAgdmFyaWFudCB0byB1c2UgYFtdLmpvaW4oJyAnKWAgYXMgcGVyIHRoZSBtYWlu
IHNjcmlwdCBpbiAyLjIuMgorCisjIyB2Mi4yLjIgLyAyMDE2LTAxLTA0CisKKyogU3dpdGNoZWQg
ZnJvbSBzdHJpbmcgY29uY2F0ZW5hdGlvbiB0byBgW10uam9pbignICcpYCBmb3IgYSBzbGlnaHQg
cGVyZm9ybWFuY2UgZ2FpbiBpbiB0aGUgbWFpbiBmdW5jdGlvbi4KKworIyMgdjIuMi4xIC8gMjAx
NS0xMS0yNgorCisqIEFkZCBkZXBzIHBhcmFtZXRlciB0byB0aGUgQU1EIG1vZHVsZSwgZml4ZXMg
YW4gaXNzdWUgdXNpbmcgdGhlIERvam8gbG9hZGVyLCB0aGFua3MgW0NocmlzIEpvcmRhbl0oaHR0
cHM6Ly9naXRodWIuY29tL2ZsaXBwZXJraWQpCisKKyMjIHYyLjIuMCAvIDIwMTUtMTAtMTgKKwor
KiBhZGRlZCBhIG5ldyBgYmluZGAgdmFyaWFudCBmb3IgdXNlIHdpdGggW2Nzcy1tb2R1bGVzXSho
dHRwczovL2dpdGh1Yi5jb20vY3NzLW1vZHVsZXMvY3NzLW1vZHVsZXMpIGFuZCBzaW1pbGFyIGFi
c3RyYWN0aW9ucywgdGhhbmtzIHRvIFtLaXJpbGwgWWFrb3ZlbmtvXShodHRwczovL2dpdGh1Yi5j
b20vYmxpYSkKKworIyMgdjIuMS41IC8gMjAxNS0wOS0zMAorCisqIHJldmVydGVkIGEgbmV3IHVz
YWdlIG9mIGBPYmplY3Qua2V5c2AgaW4gYGRlZHVwZS5qc2AgdGhhdCBzbGlwcGVkIHRocm91Z2gg
aW4gdGhlIGxhc3QgcmVsZWFzZQorCisjIyB2Mi4xLjQgLyAyMDE1LTA5LTMwCisKKyogbmV3IGNh
c2UgYWRkZWQgdG8gYmVuY2htYXJrcworKiBzYWZlciBgaGFzT3duUHJvcGVydHlgIGNoZWNrCisq
IEFNRCBtb2R1bGUgaXMgbm93IG5hbWVkLCBzbyB5b3UgY2FuIGRvIHRoZSBmb2xsb3dpbmc6CisK
K2BgYAorZGVmaW5lKFsiY2xhc3NuYW1lcyJdLCBmdW5jdGlvbiAoY2xhc3NOYW1lcykgeworICB2
YXIgc3R5bGUgPSBjbGFzc05hbWVzKCJmb28iLCAiYmFyIik7CisgIC8vIC4uLgorfSk7CitgYGAK
KworIyMgdjIuMS4zIC8gMjAxNS0wNy0wMgorCisqIHVwZGF0ZWQgVU1EIHdyYXBwZXIgdG8gc3Vw
cG9ydCBBTUQgYW5kIENvbW1vbkpTIG9uIHRoZSBzYW1lIHBhY2dlCisKKyMjIHYyLjEuMiAvIDIw
MTUtMDUtMjgKKworKiBhZGRlZCBhIHByb3BlciBVTUQgd3JhcHBlcgorCisjIyB2Mi4xLjEgLyAy
MDE1LTA1LTA2CisKKyogbWlub3IgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQgdGhhbmtzIHRvIHR5
cGUgY2FjaGluZworKiBpbXByb3ZlZCBiZW5jaG1hcmtpbmcgYW5kIHJlc3VsdHMgb3V0cHV0CisK
KyMjIHYyLjEuMCAvIDIwMTUtMDUtMDUKKworKiBhZGRlZCBhbHRlcm5hdGUgYGRlZHVwZWAgdmVy
c2lvbiBvZiBjbGFzc05hbWVzLCB3aGljaCBpcyBzbG93ZXIgKDEweCkgYnV0IGVuc3VyZXMgdGhh
dCBpZiBhIGNsYXNzIGlzIGFkZGVkIHRoZW4gb3ZlcnJpZGRlbiBieSBhIGZhbHN5IHZhbHVlIGlu
IGEgc3Vic2VxdWVudCBhcmd1bWVudCwgaXQgaXMgZXhjbHVkZWQgZnJvbSB0aGUgcmVzdWx0Lgor
CisjIyB2Mi4wLjAgLyAyMDE1LTA1LTAzCisKKyogcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQ7IHN3
aXRjaGVkIHRvIGBBcnJheS5pc0FycmF5YCBmb3IgdHlwZSBkZXRlY3Rpb24sIHdoaWNoIGlzIG11
Y2ggZmFzdGVyIGluIG1vZGVybiBicm93c2Vycy4gQSBwb2x5ZmlsbCBpcyBub3cgcmVxdWlyZWQg
Zm9yIElFOCBzdXBwb3J0LCBzZWUgdGhlIFJlYWRtZSBmb3IgZGV0YWlscy4KKworIyMgdjEuMi4y
IC8gMjAxNS0wNC0yOAorCisqIGxpY2Vuc2UgY29tbWVudCB1cGRhdGVzIHRvIHNpbWlwbGlmeSBj
ZXJ0YWluIGJ1aWxkIHNjZW5hcmlvcworCisjIyB2MS4yLjEgLyAyMDE1LTA0LTIyCisKKyogYWRk
ZWQgc2FmZSBleHBvcnRpbmcgZm9yIHJlcXVpcmVKUyB1c2FnZQorKiBjbGFyaWZpZWQgQm93ZXIg
dXNhZ2UgYW5kIGluc3RydWN0aW9ucworCisjIyB2MS4yLjAgLyAyMDE1LTAzLTE3CisKKyogYWRk
ZWQgY29tcHJlaGVuc2l2ZSBzdXBwb3J0IGZvciBhcnJheSBhcmd1bWVudHMsIGluY2x1ZGluZyBu
ZXN0ZWQgYXJyYXlzCisqIHNpbXBsaWZpZWQgY29kZSBzbGlnaHRseQorCisjIyBQcmV2aW91cwor
CitQbGVhc2Ugc2VlIHRoZSBnaXQgaGlzdG9yeSBmb3IgdGhlIGRldGFpbHMgb2YgcHJldmlvdXMg
dmVyc2lvbnMuCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvY2xh
c3NuYW1lcy9MSUNFTlNFIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2NsYXNzbmFt
ZXMvTElDRU5TRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNjYyMGI1ODk1ZmRlMjYwOTk1MDI1NGVjZjEyZWIzYzBk
YTE3ZGNhCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVz
L2NsYXNzbmFtZXMvTElDRU5TRQpAQCAtMCwwICsxLDIxIEBACitUaGUgTUlUIExpY2Vuc2UgKE1J
VCkKKworQ29weXJpZ2h0IChjKSAyMDE2IEplZCBXYXRzb24KKworUGVybWlzc2lvbiBpcyBoZXJl
YnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29w
eQorb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0
aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKK2luIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0
aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKK3RvIHVzZSwgY29w
eSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29y
IHNlbGwKK2NvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3
aG9tIHRoZSBTb2Z0d2FyZSBpcworZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9uczoKKworVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRo
aXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsCitjb3BpZXMgb3Ig
c3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorCitUSEUgU09GVFdBUkUgSVMg
UFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBP
UgorSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFksCitGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQg
Tk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKK0FVVEhPUlMgT1IgQ09QWVJJ
R0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKK0xJ
QUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJX
SVNFLCBBUklTSU5HIEZST00sCitPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZU
V0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQorU09GVFdBUkUuCmRpZmYg
LS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvY2xhc3NuYW1lcy9SRUFETUUu
bWQgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvY2xhc3NuYW1lcy9SRUFETUUubWQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMjY1YTJiYTc5MTAzNDZjMTlmMzgyNjhiODJiZDUxMmVjZDdmMmJiNgotLS0g
L2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9jbGFzc25hbWVz
L1JFQURNRS5tZApAQCAtMCwwICsxLDE4OCBAQAorQ2xhc3NuYW1lcworPT09PT09PT09PT0KKwor
WyFbVmVyc2lvbl0oaHR0cDovL2ltZy5zaGllbGRzLmlvL25wbS92L2NsYXNzbmFtZXMuc3ZnKV0o
aHR0cHM6Ly93d3cubnBtanMub3JnL3BhY2thZ2UvY2xhc3NuYW1lcykKK1shW0J1aWxkIFN0YXR1
c10oaHR0cHM6Ly90cmF2aXMtY2kub3JnL0plZFdhdHNvbi9jbGFzc25hbWVzLnN2Zz9icmFuY2g9
bWFzdGVyKV0oaHR0cHM6Ly90cmF2aXMtY2kub3JnL0plZFdhdHNvbi9jbGFzc25hbWVzKQorCitB
IHNpbXBsZSBqYXZhc2NyaXB0IHV0aWxpdHkgZm9yIGNvbmRpdGlvbmFsbHkgam9pbmluZyBjbGFz
c05hbWVzIHRvZ2V0aGVyLgorCitJbnN0YWxsIHdpdGggbnBtIG9yIEJvd2VyLgorCitgYGBzaAor
bnBtIGluc3RhbGwgY2xhc3NuYW1lcworYGBgCisKK1VzZSB3aXRoIG5vZGUuanMsIGJyb3dzZXJp
Znkgb3Igd2VicGFjazoKKworYGBganMKK3ZhciBjbGFzc05hbWVzID0gcmVxdWlyZSgnY2xhc3Nu
YW1lcycpOworY2xhc3NOYW1lcygnZm9vJywgJ2JhcicpOyAvLyA9PiAnZm9vIGJhcicKK2BgYAor
CitBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHNpbXBseSBpbmNsdWRlIGBpbmRleC5qc2Agb24geW91
ciBwYWdlIHdpdGggYSBzdGFuZGFsb25lIGA8c2NyaXB0PmAgdGFnIGFuZCBpdCB3aWxsIGV4cG9y
dCBhIGdsb2JhbCBgY2xhc3NOYW1lc2AgbWV0aG9kLCBvciBkZWZpbmUgdGhlIG1vZHVsZSBpZiB5
b3UgYXJlIHVzaW5nIFJlcXVpcmVKUy4KKworIyMjIFByb2plY3QgcGhpbG9zb3BoeQorCitXZSB0
YWtlIHRoZSBzdGFiaWxpdHkgYW5kIHBlcmZvcm1hbmNlIG9mIHRoaXMgcGFja2FnZSBzZXJpb3Vz
bHksIGJlY2F1c2UgaXQgaXMgcnVuIG1pbGxpb25zIG9mIHRpbWVzIGEgZGF5IGluIGJyb3dzZXJz
IGFsbCBhcm91bmQgdGhlIHdvcmxkLiBVcGRhdGVzIGFyZSB0aG9yb3VnaGx5IHJldmlld2VkIGZv
ciBwZXJmb3JtYW5jZSBpbXBhY3RzIGJlZm9yZSBiZWluZyByZWxlYXNlZCwgYW5kIHdlIGhhdmUg
YSBjb21wcmVoZW5zaXZlIHRlc3Qgc3VpdGUuCisKK0NsYXNzbmFtZXMgZm9sbG93cyB0aGUgW1Nl
bVZlcl0oaHR0cDovL3NlbXZlci5vcmcvKSBzdGFuZGFyZCBmb3IgdmVyc2lvbmluZy4KKworVGhl
cmUgaXMgYWxzbyBhIFtDaGFuZ2Vsb2ddKGh0dHBzOi8vZ2l0aHViLmNvbS9KZWRXYXRzb24vY2xh
c3NuYW1lcy9ibG9iL21hc3Rlci9ISVNUT1JZLm1kKS4KKworIyMgVXNhZ2UKKworVGhlIGBjbGFz
c05hbWVzYCBmdW5jdGlvbiB0YWtlcyBhbnkgbnVtYmVyIG9mIGFyZ3VtZW50cyB3aGljaCBjYW4g
YmUgYSBzdHJpbmcgb3Igb2JqZWN0LgorVGhlIGFyZ3VtZW50IGAnZm9vJ2AgaXMgc2hvcnQgZm9y
IGB7IGZvbzogdHJ1ZSB9YC4gSWYgdGhlIHZhbHVlIG9mIHRoZSBrZXkgaXMgZmFsc3ksIGl0IHdv
bid0IGJlIGluY2x1ZGVkIGluIHRoZSBvdXRwdXQuCisKK2BgYGpzCitjbGFzc05hbWVzKCdmb28n
LCAnYmFyJyk7IC8vID0+ICdmb28gYmFyJworY2xhc3NOYW1lcygnZm9vJywgeyBiYXI6IHRydWUg
fSk7IC8vID0+ICdmb28gYmFyJworY2xhc3NOYW1lcyh7ICdmb28tYmFyJzogdHJ1ZSB9KTsgLy8g
PT4gJ2Zvby1iYXInCitjbGFzc05hbWVzKHsgJ2Zvby1iYXInOiBmYWxzZSB9KTsgLy8gPT4gJycK
K2NsYXNzTmFtZXMoeyBmb286IHRydWUgfSwgeyBiYXI6IHRydWUgfSk7IC8vID0+ICdmb28gYmFy
JworY2xhc3NOYW1lcyh7IGZvbzogdHJ1ZSwgYmFyOiB0cnVlIH0pOyAvLyA9PiAnZm9vIGJhcicK
KworLy8gbG90cyBvZiBhcmd1bWVudHMgb2YgdmFyaW91cyB0eXBlcworY2xhc3NOYW1lcygnZm9v
JywgeyBiYXI6IHRydWUsIGR1Y2s6IGZhbHNlIH0sICdiYXonLCB7IHF1dXg6IHRydWUgfSk7IC8v
ID0+ICdmb28gYmFyIGJheiBxdXV4JworCisvLyBvdGhlciBmYWxzeSB2YWx1ZXMgYXJlIGp1c3Qg
aWdub3JlZAorY2xhc3NOYW1lcyhudWxsLCBmYWxzZSwgJ2JhcicsIHVuZGVmaW5lZCwgMCwgMSwg
eyBiYXo6IG51bGwgfSwgJycpOyAvLyA9PiAnYmFyIDEnCitgYGAKKworQXJyYXlzIHdpbGwgYmUg
cmVjdXJzaXZlbHkgZmxhdHRlbmVkIGFzIHBlciB0aGUgcnVsZXMgYWJvdmU6CisKK2BgYGpzCit2
YXIgYXJyID0gWydiJywgeyBjOiB0cnVlLCBkOiBmYWxzZSB9XTsKK2NsYXNzTmFtZXMoJ2EnLCBh
cnIpOyAvLyA9PiAnYSBiIGMnCitgYGAKKworIyMjIER5bmFtaWMgY2xhc3MgbmFtZXMgd2l0aCBF
UzIwMTUKKworSWYgeW91J3JlIGluIGFuIGVudmlyb25tZW50IHRoYXQgc3VwcG9ydHMgW2NvbXB1
dGVkIGtleXNdKGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAv
I3NlYy1vYmplY3QtaW5pdGlhbGl6ZXIpIChhdmFpbGFibGUgaW4gRVMyMDE1IGFuZCBCYWJlbCkg
eW91IGNhbiB1c2UgZHluYW1pYyBjbGFzcyBuYW1lczoKKworYGBganMKK2xldCBidXR0b25UeXBl
ID0gJ3ByaW1hcnknOworY2xhc3NOYW1lcyh7IFtgYnRuLSR7YnV0dG9uVHlwZX1gXTogdHJ1ZSB9
KTsKK2BgYAorCisjIyMgVXNhZ2Ugd2l0aCBSZWFjdC5qcworCitUaGlzIHBhY2thZ2UgaXMgdGhl
IG9mZmljaWFsIHJlcGxhY2VtZW50IGZvciBgY2xhc3NTZXRgLCB3aGljaCB3YXMgb3JpZ2luYWxs
eSBzaGlwcGVkIGluIHRoZSBSZWFjdC5qcyBBZGRvbnMgYnVuZGxlLgorCitPbmUgb2YgaXRzIHBy
aW1hcnkgdXNlIGNhc2VzIGlzIHRvIG1ha2UgZHluYW1pYyBhbmQgY29uZGl0aW9uYWwgY2xhc3NO
YW1lIHByb3BzIHNpbXBsZXIgdG8gd29yayB3aXRoIChlc3BlY2lhbGx5IG1vcmUgc28gdGhhbiBj
b25kaXRpb25hbCBzdHJpbmcgbWFuaXB1bGF0aW9uKS4gU28gd2hlcmUgeW91IG1heSBoYXZlIHRo
ZSBmb2xsb3dpbmcgY29kZSB0byBnZW5lcmF0ZSBhIGBjbGFzc05hbWVgIHByb3AgZm9yIGEgYDxi
dXR0b24+YCBpbiBSZWFjdDoKKworYGBganMKK3ZhciBCdXR0b24gPSBSZWFjdC5jcmVhdGVDbGFz
cyh7CisgIC8vIC4uLgorICByZW5kZXIgKCkgeworICAgIHZhciBidG5DbGFzcyA9ICdidG4nOwor
ICAgIGlmICh0aGlzLnN0YXRlLmlzUHJlc3NlZCkgYnRuQ2xhc3MgKz0gJyBidG4tcHJlc3NlZCc7
CisgICAgZWxzZSBpZiAodGhpcy5zdGF0ZS5pc0hvdmVyZWQpIGJ0bkNsYXNzICs9ICcgYnRuLW92
ZXInOworICAgIHJldHVybiA8YnV0dG9uIGNsYXNzTmFtZT17YnRuQ2xhc3N9Pnt0aGlzLnByb3Bz
LmxhYmVsfTwvYnV0dG9uPjsKKyAgfQorfSk7CitgYGAKKworWW91IGNhbiBleHByZXNzIHRoZSBj
b25kaXRpb25hbCBjbGFzc2VzIG1vcmUgc2ltcGx5IGFzIGFuIG9iamVjdDoKKworYGBganMKK3Zh
ciBjbGFzc05hbWVzID0gcmVxdWlyZSgnY2xhc3NuYW1lcycpOworCit2YXIgQnV0dG9uID0gUmVh
Y3QuY3JlYXRlQ2xhc3MoeworICAvLyAuLi4KKyAgcmVuZGVyICgpIHsKKyAgICB2YXIgYnRuQ2xh
c3MgPSBjbGFzc05hbWVzKHsKKyAgICAgICdidG4nOiB0cnVlLAorICAgICAgJ2J0bi1wcmVzc2Vk
JzogdGhpcy5zdGF0ZS5pc1ByZXNzZWQsCisgICAgICAnYnRuLW92ZXInOiAhdGhpcy5zdGF0ZS5p
c1ByZXNzZWQgJiYgdGhpcy5zdGF0ZS5pc0hvdmVyZWQKKyAgICB9KTsKKyAgICByZXR1cm4gPGJ1
dHRvbiBjbGFzc05hbWU9e2J0bkNsYXNzfT57dGhpcy5wcm9wcy5sYWJlbH08L2J1dHRvbj47Cisg
IH0KK30pOworYGBgCisKK0JlY2F1c2UgeW91IGNhbiBtaXggdG9nZXRoZXIgb2JqZWN0LCBhcnJh
eSBhbmQgc3RyaW5nIGFyZ3VtZW50cywgc3VwcG9ydGluZyBvcHRpb25hbCBjbGFzc05hbWUgcHJv
cHMgaXMgYWxzbyBzaW1wbGVyIGFzIG9ubHkgdHJ1dGh5IGFyZ3VtZW50cyBnZXQgaW5jbHVkZWQg
aW4gdGhlIHJlc3VsdDoKKworYGBganMKK3ZhciBidG5DbGFzcyA9IGNsYXNzTmFtZXMoJ2J0bics
IHRoaXMucHJvcHMuY2xhc3NOYW1lLCB7CisgICdidG4tcHJlc3NlZCc6IHRoaXMuc3RhdGUuaXNQ
cmVzc2VkLAorICAnYnRuLW92ZXInOiAhdGhpcy5zdGF0ZS5pc1ByZXNzZWQgJiYgdGhpcy5zdGF0
ZS5pc0hvdmVyZWQKK30pOworYGBgCisKKworIyMjIEFsdGVybmF0ZSBgZGVkdXBlYCB2ZXJzaW9u
CisKK1RoZXJlIGlzIGFuIGFsdGVybmF0ZSB2ZXJzaW9uIG9mIGBjbGFzc05hbWVzYCBhdmFpbGFi
bGUgd2hpY2ggY29ycmVjdGx5IGRlZHVwZXMgY2xhc3NlcyBhbmQgZW5zdXJlcyB0aGF0IGZhbHN5
IGNsYXNzZXMgc3BlY2lmaWVkIGluIGxhdGVyIGFyZ3VtZW50cyBhcmUgZXhjbHVkZWQgZnJvbSB0
aGUgcmVzdWx0IHNldC4KKworVGhpcyB2ZXJzaW9uIGlzIHNsb3dlciAoYWJvdXQgNXgpIHNvIGl0
IGlzIG9mZmVyZWQgYXMgYW4gb3B0LWluLgorCitUbyB1c2UgdGhlIGRlZHVwZSB2ZXJzaW9uIHdp
dGggbm9kZSwgYnJvd3NlcmlmeSBvciB3ZWJwYWNrOgorCitgYGBqcwordmFyIGNsYXNzTmFtZXMg
PSByZXF1aXJlKCdjbGFzc25hbWVzL2RlZHVwZScpOworCitjbGFzc05hbWVzKCdmb28nLCAnZm9v
JywgJ2JhcicpOyAvLyA9PiAnZm9vIGJhcicKK2NsYXNzTmFtZXMoJ2ZvbycsIHsgZm9vOiBmYWxz
ZSwgYmFyOiB0cnVlIH0pOyAvLyA9PiAnYmFyJworYGBgCisKK0ZvciBzdGFuZGFsb25lIChnbG9i
YWwgLyBBTUQpIHVzZSwgaW5jbHVkZSBgZGVkdXBlLmpzYCBpbiBhIGA8c2NyaXB0PmAgdGFnIG9u
IHlvdXIgcGFnZS4KKworCisjIyMgQWx0ZXJuYXRlIGBiaW5kYCB2ZXJzaW9uIChmb3IgW2Nzcy1t
b2R1bGVzXShodHRwczovL2dpdGh1Yi5jb20vY3NzLW1vZHVsZXMvY3NzLW1vZHVsZXMpKQorCitJ
ZiB5b3UgYXJlIHVzaW5nIFtjc3MtbW9kdWxlc10oaHR0cHM6Ly9naXRodWIuY29tL2Nzcy1tb2R1
bGVzL2Nzcy1tb2R1bGVzKSwgb3IgYSBzaW1pbGFyIGFwcHJvYWNoIHRvIGFic3RyYWN0IGNsYXNz
ICJuYW1lcyIgYW5kIHRoZSByZWFsIGBjbGFzc05hbWVgIHZhbHVlcyB0aGF0IGFyZSBhY3R1YWxs
eSBvdXRwdXQgdG8gdGhlIERPTSwgeW91IG1heSB3YW50IHRvIHVzZSB0aGUgYGJpbmRgIHZhcmlh
bnQuCisKK19Ob3RlIHRoYXQgaW4gRVMyMDE1IGVudmlyb25tZW50cywgaXQgbWF5IGJlIGJldHRl
ciB0byB1c2UgdGhlICJkeW5hbWljIGNsYXNzIG5hbWVzIiBhcHByb2FjaCBkb2N1bWVudGVkIGFi
b3ZlLl8KKworYGBganMKK3ZhciBjbGFzc05hbWVzID0gcmVxdWlyZSgnY2xhc3NuYW1lcy9iaW5k
Jyk7CisKK3ZhciBzdHlsZXMgPSB7CisgIGZvbzogJ2FiYycsCisgIGJhcjogJ2RlZicsCisgIGJh
ejogJ3h5eicKK307CisKK3ZhciBjeCA9IGNsYXNzTmFtZXMuYmluZChzdHlsZXMpOworCit2YXIg
Y2xhc3NOYW1lID0gY3goJ2ZvbycsIFsnYmFyJ10sIHsgYmF6OiB0cnVlIH0pOyAvLyA9PiAiYWJj
IGRlZiB4eXoiCitgYGAKKworUmVhbC13b3JsZCBleGFtcGxlOgorCitgYGBqcworLyogY29tcG9u
ZW50cy9zdWJtaXQtYnV0dG9uLmpzICovCitpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdyZWFj
dCc7CitpbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzL2JpbmQnOworaW1wb3J0IHN0
eWxlcyBmcm9tICcuL3N1Ym1pdC1idXR0b24uY3NzJzsKKworbGV0IGN4ID0gY2xhc3NOYW1lcy5i
aW5kKHN0eWxlcyk7CisKK2V4cG9ydCBkZWZhdWx0IGNsYXNzIFN1Ym1pdEJ1dHRvbiBleHRlbmRz
IENvbXBvbmVudCB7CisgIHJlbmRlciAoKSB7CisgICAgbGV0IHRleHQgPSB0aGlzLnByb3BzLnN0
b3JlLnN1Ym1pc3Npb25JblByb2dyZXNzID8gJ1Byb2Nlc3NpbmcuLi4nIDogJ1N1Ym1pdCc7Cisg
ICAgbGV0IGNsYXNzTmFtZSA9IGN4KHsKKyAgICAgIGJhc2U6IHRydWUsCisgICAgICBpblByb2dy
ZXNzOiB0aGlzLnByb3BzLnN0b3JlLnN1Ym1pc3Npb25JblByb2dyZXNzLAorICAgICAgZXJyb3I6
IHRoaXMucHJvcHMuc3RvcmUuZXJyb3JPY2N1cnJlZCwKKyAgICAgIGRpc2FibGVkOiB0aGlzLnBy
b3BzLmZvcm0udmFsaWQsCisgICAgfSk7CisgICAgcmV0dXJuIDxidXR0b24gY2xhc3NOYW1lPXtj
bGFzc05hbWV9Pnt0ZXh0fTwvYnV0dG9uPjsKKyAgfQorfTsKKworYGBgCisKKworIyMgUG9seWZp
bGxzIG5lZWRlZCB0byBzdXBwb3J0IG9sZGVyIGJyb3dzZXJzCisKKyMjIyMgYGNsYXNzTmFtZXMg
Pj0yLjAuMGAKKworYEFycmF5LmlzQXJyYXlgOiBzZWUgW01ETl0oaHR0cHM6Ly9kZXZlbG9wZXIu
bW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09i
amVjdHMvQXJyYXkvaXNBcnJheSkgZm9yIGRldGFpbHMgYWJvdXQgdW5zdXBwb3J0ZWQgb2xkZXIg
YnJvd3NlcnMgKGUuZy4gPD0gSUU4KSBhbmQgYSBzaW1wbGUgcG9seWZpbGwuCisKK2BPYmplY3Qu
a2V5c2A6IHNlZSBbTUROXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2Nz
L1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9PYmplY3Qva2V5cykgZm9y
IGRldGFpbHMgYWJvdXQgdW5zdXBwb3J0ZWQgb2xkZXIgYnJvd3NlcnMgKGUuZy4gPD0gSUU4KSBh
bmQgYSBzaW1wbGUgcG9seWZpbGwuIFRoaXMgaXMgb25seSB1c2VkIGluIGBkZWR1cGUuanNgLgor
CisjIyBMaWNlbnNlCisKK1tNSVRdKExJQ0VOU0UpLiBDb3B5cmlnaHQgKGMpIDIwMTYgSmVkIFdh
dHNvbi4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9jbGFzc25h
bWVzL2JpbmQuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvY2xhc3NuYW1lcy9i
aW5kLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmQ4YWUxM2I5NTQ5OWUwYTgxMjU0NmIxNGYyZDVmNTZkY2Q5MWI2
MjQKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvY2xh
c3NuYW1lcy9iaW5kLmpzCkBAIC0wLDAgKzEsNDggQEAKKy8qIQorICBDb3B5cmlnaHQgKGMpIDIw
MTYgSmVkIFdhdHNvbi4KKyAgTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlIChNSVQpLCBz
ZWUKKyAgaHR0cDovL2plZHdhdHNvbi5naXRodWIuaW8vY2xhc3NuYW1lcworKi8KKy8qIGdsb2Jh
bCBkZWZpbmUgKi8KKworKGZ1bmN0aW9uICgpIHsKKyAgICAndXNlIHN0cmljdCc7CisKKyAgICB2
YXIgaGFzT3duID0ge30uaGFzT3duUHJvcGVydHk7CisKKyAgICBmdW5jdGlvbiBjbGFzc05hbWVz
ICgpIHsKKyAgICAgICAgdmFyIGNsYXNzZXMgPSBbXTsKKworICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgdmFyIGFyZyA9IGFy
Z3VtZW50c1tpXTsKKyAgICAgICAgICAgIGlmICghYXJnKSBjb250aW51ZTsKKworICAgICAgICAg
ICAgdmFyIGFyZ1R5cGUgPSB0eXBlb2YgYXJnOworCisgICAgICAgICAgICBpZiAoYXJnVHlwZSA9
PT0gJ3N0cmluZycgfHwgYXJnVHlwZSA9PT0gJ251bWJlcicpIHsKKyAgICAgICAgICAgICAgICBj
bGFzc2VzLnB1c2godGhpcyAmJiB0aGlzW2FyZ10gfHwgYXJnKTsKKyAgICAgICAgICAgIH0gZWxz
ZSBpZiAoQXJyYXkuaXNBcnJheShhcmcpKSB7CisgICAgICAgICAgICAgICAgY2xhc3Nlcy5wdXNo
KGNsYXNzTmFtZXMuYXBwbHkodGhpcywgYXJnKSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGFy
Z1R5cGUgPT09ICdvYmplY3QnKSB7CisgICAgICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIGFy
ZykgeworICAgICAgICAgICAgICAgICAgICBpZiAoaGFzT3duLmNhbGwoYXJnLCBrZXkpICYmIGFy
Z1trZXldKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc2VzLnB1c2godGhpcyAmJiB0
aGlzW2tleV0gfHwga2V5KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBjbGFzc2VzLmpv
aW4oJyAnKTsKKyAgICB9CisKKyAgICBpZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcg
JiYgbW9kdWxlLmV4cG9ydHMpIHsKKyAgICAgICAgbW9kdWxlLmV4cG9ydHMgPSBjbGFzc05hbWVz
OworICAgIH0gZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2Yg
ZGVmaW5lLmFtZCA9PT0gJ29iamVjdCcgJiYgZGVmaW5lLmFtZCkgeworICAgICAgICAvLyByZWdp
c3RlciBhcyAnY2xhc3NuYW1lcycsIGNvbnNpc3RlbnQgd2l0aCBucG0gcGFja2FnZSBuYW1lCisg
ICAgICAgIGRlZmluZSgnY2xhc3NuYW1lcycsIFtdLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICByZXR1cm4gY2xhc3NOYW1lczsKKyAgICAgICAgfSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
d2luZG93LmNsYXNzTmFtZXMgPSBjbGFzc05hbWVzOworICAgIH0KK30oKSk7CmRpZmYgLS1naXQg
YS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvY2xhc3NuYW1lcy9ib3dlci5qc29uIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2NsYXNzbmFtZXMvYm93ZXIuanNvbgpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wNjE5YTQ4ZjhjMjhiYzhiYTJiNDBhNDZlZTlkNTQ0YzQ2ZjE4ODg0Ci0tLSAvZGV2
L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2NsYXNzbmFtZXMvYm93
ZXIuanNvbgpAQCAtMCwwICsxLDM3IEBACit7CisgICJuYW1lIjogImNsYXNzbmFtZXMiLAorICAi
dmVyc2lvbiI6ICIyLjIuNSIsCisgICJkZXNjcmlwdGlvbiI6ICJBIHNpbXBsZSB1dGlsaXR5IGZv
ciBjb25kaXRpb25hbGx5IGpvaW5pbmcgY2xhc3NOYW1lcyB0b2dldGhlciIsCisgICJtYWluIjog
WworICAgICJpbmRleC5qcyIsCisgICAgImJpbmQuanMiLAorICAgICJkZWR1cGUuanMiCisgIF0s
CisgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vSmVkV2F0c29uL2NsYXNzbmFtZXMi
LAorICAiYXV0aG9ycyI6IFsKKyAgICAiSmVkIFdhdHNvbiIKKyAgXSwKKyAgIm1vZHVsZVR5cGUi
OiBbCisgICAgImFtZCIsCisgICAgImdsb2JhbHMiLAorICAgICJub2RlIgorICBdLAorICAia2V5
d29yZHMiOiBbCisgICAgInJlYWN0IiwKKyAgICAiY3NzIiwKKyAgICAiY2xhc3NlcyIsCisgICAg
ImNsYXNzbmFtZSIsCisgICAgImNsYXNzbmFtZXMiLAorICAgICJ1dGlsIiwKKyAgICAidXRpbGl0
eSIKKyAgXSwKKyAgImxpY2Vuc2UiOiAiTUlUIiwKKyAgImlnbm9yZSI6IFsKKyAgICAiLmVkaXRv
cmNvbmZpZyIsCisgICAgIi5naXRpZ25vcmUiLAorICAgICJndWxwZmlsZS5qcyIsCisgICAgInBh
Y2thZ2UuanNvbiIsCisgICAgIm5vZGVfbW9kdWxlcyIsCisgICAgInRlc3RzLmpzIgorICBdCit9
CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvY2xhc3NuYW1lcy9k
ZWR1cGUuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvY2xhc3NuYW1lcy9kZWR1
cGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOTU0NmY4ZTNhMTBmNDFiYzExYTJmYjhmNzJmZDRlMmU2ZTBhMjFl
YQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9jbGFz
c25hbWVzL2RlZHVwZS5qcwpAQCAtMCwwICsxLDEwOSBAQAorLyohCisgIENvcHlyaWdodCAoYykg
MjAxNiBKZWQgV2F0c29uLgorICBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UgKE1JVCks
IHNlZQorICBodHRwOi8vamVkd2F0c29uLmdpdGh1Yi5pby9jbGFzc25hbWVzCisqLworLyogZ2xv
YmFsIGRlZmluZSAqLworCisoZnVuY3Rpb24gKCkgeworICAgICd1c2Ugc3RyaWN0JzsKKworICAg
IHZhciBjbGFzc05hbWVzID0gKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgLy8gZG9uJ3QgaW5oZXJp
dCBmcm9tIE9iamVjdCBzbyB3ZSBjYW4gc2tpcCBoYXNPd25Qcm9wZXJ0eSBjaGVjayBsYXRlcgor
ICAgICAgICAvLyBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzE1NTE4MzI4L2Ny
ZWF0aW5nLWpzLW9iamVjdC13aXRoLW9iamVjdC1jcmVhdGVudWxsI2Fuc3dlci0yMTA3OTIzMgor
ICAgICAgICBmdW5jdGlvbiBTdG9yYWdlT2JqZWN0KCkge30KKyAgICAgICAgU3RvcmFnZU9iamVj
dC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKG51bGwpOworCisgICAgICAgIGZ1bmN0aW9uIF9w
YXJzZUFycmF5IChyZXN1bHRTZXQsIGFycmF5KSB7CisgICAgICAgICAgICB2YXIgbGVuZ3RoID0g
YXJyYXkubGVuZ3RoOworCisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsg
KytpKSB7CisgICAgICAgICAgICAgICAgX3BhcnNlKHJlc3VsdFNldCwgYXJyYXlbaV0pOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgdmFyIGhhc093biA9IHt9Lmhhc093blBy
b3BlcnR5OworCisgICAgICAgIGZ1bmN0aW9uIF9wYXJzZU51bWJlciAocmVzdWx0U2V0LCBudW0p
IHsKKyAgICAgICAgICAgIHJlc3VsdFNldFtudW1dID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIF9wYXJzZU9iamVjdCAocmVzdWx0U2V0LCBvYmplY3QpIHsKKyAgICAgICAg
ICAgIGZvciAodmFyIGsgaW4gb2JqZWN0KSB7CisgICAgICAgICAgICAgICAgaWYgKGhhc093bi5j
YWxsKG9iamVjdCwgaykpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gc2V0IHZhbHVlIHRvIGZh
bHNlIGluc3RlYWQgb2YgZGVsZXRpbmcgaXQgdG8gYXZvaWQgY2hhbmdpbmcgb2JqZWN0IHN0cnVj
dHVyZQorICAgICAgICAgICAgICAgICAgICAvLyBodHRwczovL3d3dy5zbWFzaGluZ21hZ2F6aW5l
LmNvbS8yMDEyLzExL3dyaXRpbmctZmFzdC1tZW1vcnktZWZmaWNpZW50LWphdmFzY3JpcHQvI2Rl
LXJlZmVyZW5jaW5nLW1pc2NvbmNlcHRpb25zCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdFNl
dFtrXSA9ICEhb2JqZWN0W2tdOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorCisgICAgICAgIHZhciBTUEFDRSA9IC9ccysvOworICAgICAgICBmdW5jdGlvbiBf
cGFyc2VTdHJpbmcgKHJlc3VsdFNldCwgc3RyKSB7CisgICAgICAgICAgICB2YXIgYXJyYXkgPSBz
dHIuc3BsaXQoU1BBQ0UpOworICAgICAgICAgICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDsK
KworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAg
ICAgICAgICAgIHJlc3VsdFNldFthcnJheVtpXV0gPSB0cnVlOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gX3BhcnNlIChyZXN1bHRTZXQsIGFyZykgeworICAg
ICAgICAgICAgaWYgKCFhcmcpIHJldHVybjsKKyAgICAgICAgICAgIHZhciBhcmdUeXBlID0gdHlw
ZW9mIGFyZzsKKworICAgICAgICAgICAgLy8gJ2ZvbyBiYXInCisgICAgICAgICAgICBpZiAoYXJn
VHlwZSA9PT0gJ3N0cmluZycpIHsKKyAgICAgICAgICAgICAgICBfcGFyc2VTdHJpbmcocmVzdWx0
U2V0LCBhcmcpOworCisgICAgICAgICAgICAvLyBbJ2ZvbycsICdiYXInLCAuLi5dCisgICAgICAg
ICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoYXJnKSkgeworICAgICAgICAgICAgICAgIF9w
YXJzZUFycmF5KHJlc3VsdFNldCwgYXJnKTsKKworICAgICAgICAgICAgLy8geyAnZm9vJzogdHJ1
ZSwgLi4uIH0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoYXJnVHlwZSA9PT0gJ29iamVjdCcpIHsK
KyAgICAgICAgICAgICAgICBfcGFyc2VPYmplY3QocmVzdWx0U2V0LCBhcmcpOworCisgICAgICAg
ICAgICAvLyAnMTMwJworICAgICAgICAgICAgfSBlbHNlIGlmIChhcmdUeXBlID09PSAnbnVtYmVy
JykgeworICAgICAgICAgICAgICAgIF9wYXJzZU51bWJlcihyZXN1bHRTZXQsIGFyZyk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBfY2xhc3NOYW1lcyAoKSB7
CisgICAgICAgICAgICAvLyBkb24ndCBsZWFrIGFyZ3VtZW50cworICAgICAgICAgICAgLy8gaHR0
cHM6Ly9naXRodWIuY29tL3BldGthYW50b25vdi9ibHVlYmlyZC93aWtpL09wdGltaXphdGlvbi1r
aWxsZXJzIzMyLWxlYWtpbmctYXJndW1lbnRzCisgICAgICAgICAgICB2YXIgbGVuID0gYXJndW1l
bnRzLmxlbmd0aDsKKyAgICAgICAgICAgIHZhciBhcmdzID0gQXJyYXkobGVuKTsKKyAgICAgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgICAgICAgICBhcmdz
W2ldID0gYXJndW1lbnRzW2ldOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgY2xh
c3NTZXQgPSBuZXcgU3RvcmFnZU9iamVjdCgpOworICAgICAgICAgICAgX3BhcnNlQXJyYXkoY2xh
c3NTZXQsIGFyZ3MpOworCisgICAgICAgICAgICB2YXIgbGlzdCA9IFtdOworCisgICAgICAgICAg
ICBmb3IgKHZhciBrIGluIGNsYXNzU2V0KSB7CisgICAgICAgICAgICAgICAgaWYgKGNsYXNzU2V0
W2tdKSB7CisgICAgICAgICAgICAgICAgICAgIGxpc3QucHVzaChrKQorICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIGxpc3Quam9pbignICcpOwor
ICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIF9jbGFzc05hbWVzOworICAgIH0pKCk7CisKKyAg
ICBpZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgJiYgbW9kdWxlLmV4cG9ydHMpIHsK
KyAgICAgICAgbW9kdWxlLmV4cG9ydHMgPSBjbGFzc05hbWVzOworICAgIH0gZWxzZSBpZiAodHlw
ZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgZGVmaW5lLmFtZCA9PT0gJ29iamVj
dCcgJiYgZGVmaW5lLmFtZCkgeworICAgICAgICAvLyByZWdpc3RlciBhcyAnY2xhc3NuYW1lcycs
IGNvbnNpc3RlbnQgd2l0aCBucG0gcGFja2FnZSBuYW1lCisgICAgICAgIGRlZmluZSgnY2xhc3Nu
YW1lcycsIFtdLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICByZXR1cm4gY2xhc3NOYW1lczsK
KyAgICAgICAgfSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgd2luZG93LmNsYXNzTmFtZXMgPSBj
bGFzc05hbWVzOworICAgIH0KK30oKSk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9u
b2RlX21vZHVsZXMvY2xhc3NuYW1lcy9pbmRleC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVf
bW9kdWxlcy9jbGFzc25hbWVzL2luZGV4LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM4ZjBmZjJiZjkwYTI5M2Y0
MzBmZTk3OGQ5NGZhMGI1N2VhYzg1MTgKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9y
ZWFjdC9ub2RlX21vZHVsZXMvY2xhc3NuYW1lcy9pbmRleC5qcwpAQCAtMCwwICsxLDQ4IEBACisv
KiEKKyAgQ29weXJpZ2h0IChjKSAyMDE2IEplZCBXYXRzb24uCisgIExpY2Vuc2VkIHVuZGVyIHRo
ZSBNSVQgTGljZW5zZSAoTUlUKSwgc2VlCisgIGh0dHA6Ly9qZWR3YXRzb24uZ2l0aHViLmlvL2Ns
YXNzbmFtZXMKKyovCisvKiBnbG9iYWwgZGVmaW5lICovCisKKyhmdW5jdGlvbiAoKSB7CisgICAg
J3VzZSBzdHJpY3QnOworCisgICAgdmFyIGhhc093biA9IHt9Lmhhc093blByb3BlcnR5OworCisg
ICAgZnVuY3Rpb24gY2xhc3NOYW1lcyAoKSB7CisgICAgICAgIHZhciBjbGFzc2VzID0gW107CisK
KyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgICAgICAgIHZhciBhcmcgPSBhcmd1bWVudHNbaV07CisgICAgICAgICAgICBpZiAoIWFyZykg
Y29udGludWU7CisKKyAgICAgICAgICAgIHZhciBhcmdUeXBlID0gdHlwZW9mIGFyZzsKKworICAg
ICAgICAgICAgaWYgKGFyZ1R5cGUgPT09ICdzdHJpbmcnIHx8IGFyZ1R5cGUgPT09ICdudW1iZXIn
KSB7CisgICAgICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKGFyZyk7CisgICAgICAgICAgICB9IGVs
c2UgaWYgKEFycmF5LmlzQXJyYXkoYXJnKSkgeworICAgICAgICAgICAgICAgIGNsYXNzZXMucHVz
aChjbGFzc05hbWVzLmFwcGx5KG51bGwsIGFyZykpOworICAgICAgICAgICAgfSBlbHNlIGlmIChh
cmdUeXBlID09PSAnb2JqZWN0JykgeworICAgICAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBh
cmcpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGhhc093bi5jYWxsKGFyZywga2V5KSAmJiBh
cmdba2V5XSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKGtleSk7Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKworICAgICAgICByZXR1cm4gY2xhc3Nlcy5qb2luKCcgJyk7CisgICAgfQorCisg
ICAgaWYgKHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnICYmIG1vZHVsZS5leHBvcnRzKSB7
CisgICAgICAgIG1vZHVsZS5leHBvcnRzID0gY2xhc3NOYW1lczsKKyAgICB9IGVsc2UgaWYgKHR5
cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIGRlZmluZS5hbWQgPT09ICdvYmpl
Y3QnICYmIGRlZmluZS5hbWQpIHsKKyAgICAgICAgLy8gcmVnaXN0ZXIgYXMgJ2NsYXNzbmFtZXMn
LCBjb25zaXN0ZW50IHdpdGggbnBtIHBhY2thZ2UgbmFtZQorICAgICAgICBkZWZpbmUoJ2NsYXNz
bmFtZXMnLCBbXSwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgcmV0dXJuIGNsYXNzTmFtZXM7
CisgICAgICAgIH0pOworICAgIH0gZWxzZSB7CisgICAgICAgIHdpbmRvdy5jbGFzc05hbWVzID0g
Y2xhc3NOYW1lczsKKyAgICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qv
bm9kZV9tb2R1bGVzL2NsYXNzbmFtZXMvcGFja2FnZS5qc29uIGIvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qv
bm9kZV9tb2R1bGVzL2NsYXNzbmFtZXMvcGFja2FnZS5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAyOTdmMDYz
ZGI1YzUyYmFiMjZjNzc1YWE3MmUwOGM5MDdlZGY4ODgKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvY2xhc3NuYW1lcy9wYWNrYWdlLmpzb24KQEAgLTAs
MCArMSw3NiBAQAoreworICAiX2FyZ3MiOiBbCisgICAgWworICAgICAgeworICAgICAgICAicmF3
IjogImNsYXNzbmFtZXNAaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvY2xhc3NuYW1lcy8tL2Ns
YXNzbmFtZXMtMi4yLjUudGd6IiwKKyAgICAgICAgInNjb3BlIjogbnVsbCwKKyAgICAgICAgImVz
Y2FwZWROYW1lIjogImNsYXNzbmFtZXMiLAorICAgICAgICAibmFtZSI6ICJjbGFzc25hbWVzIiwK
KyAgICAgICAgInJhd1NwZWMiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvY2xhc3NuYW1l
cy8tL2NsYXNzbmFtZXMtMi4yLjUudGd6IiwKKyAgICAgICAgInNwZWMiOiAiaHR0cHM6Ly9yZWdp
c3RyeS5ucG1qcy5vcmcvY2xhc3NuYW1lcy8tL2NsYXNzbmFtZXMtMi4yLjUudGd6IiwKKyAgICAg
ICAgInR5cGUiOiAicmVtb3RlIgorICAgICAgfSwKKyAgICAgICIvVXNlcnMvYWRkeW8vcHJvamVj
dHMvc3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Jl
YWN0IgorICAgIF0KKyAgXSwKKyAgIl9mcm9tIjogImNsYXNzbmFtZXNAPj0yLjIuNSA8My4wLjAi
LAorICAiX2lkIjogImNsYXNzbmFtZXNAMi4yLjUiLAorICAiX2luQ2FjaGUiOiB0cnVlLAorICAi
X2xvY2F0aW9uIjogIi9jbGFzc25hbWVzIiwKKyAgIl9waGFudG9tQ2hpbGRyZW4iOiB7fSwKKyAg
Il9yZXF1ZXN0ZWQiOiB7CisgICAgInJhdyI6ICJjbGFzc25hbWVzQGh0dHBzOi8vcmVnaXN0cnku
bnBtanMub3JnL2NsYXNzbmFtZXMvLS9jbGFzc25hbWVzLTIuMi41LnRneiIsCisgICAgInNjb3Bl
IjogbnVsbCwKKyAgICAiZXNjYXBlZE5hbWUiOiAiY2xhc3NuYW1lcyIsCisgICAgIm5hbWUiOiAi
Y2xhc3NuYW1lcyIsCisgICAgInJhd1NwZWMiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcv
Y2xhc3NuYW1lcy8tL2NsYXNzbmFtZXMtMi4yLjUudGd6IiwKKyAgICAic3BlYyI6ICJodHRwczov
L3JlZ2lzdHJ5Lm5wbWpzLm9yZy9jbGFzc25hbWVzLy0vY2xhc3NuYW1lcy0yLjIuNS50Z3oiLAor
ICAgICJ0eXBlIjogInJlbW90ZSIKKyAgfSwKKyAgIl9yZXF1aXJlZEJ5IjogWworICAgICIvIgor
ICBdLAorICAiX3Jlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2NsYXNzbmFt
ZXMvLS9jbGFzc25hbWVzLTIuMi41LnRneiIsCisgICJfc2hhc3VtIjogImZiMzgwMWQ0NTM0Njc2
NDllZjM2MDNjN2Q2MWEwMmJkMTI5YmRlNmQiLAorICAiX3Nocmlua3dyYXAiOiBudWxsLAorICAi
X3NwZWMiOiAiY2xhc3NuYW1lc0BodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9jbGFzc25hbWVz
Ly0vY2xhc3NuYW1lcy0yLjIuNS50Z3oiLAorICAiX3doZXJlIjogIi9Vc2Vycy9hZGR5by9wcm9q
ZWN0cy9zcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
cmVhY3QiLAorICAiYXV0aG9yIjogeworICAgICJuYW1lIjogIkplZCBXYXRzb24iCisgIH0sCisg
ICJidWdzIjogeworICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0plZFdhdHNvbi9jbGFz
c25hbWVzL2lzc3VlcyIKKyAgfSwKKyAgImRlcGVuZGVuY2llcyI6IHt9LAorICAiZGVzY3JpcHRp
b24iOiAiQSBzaW1wbGUgdXRpbGl0eSBmb3IgY29uZGl0aW9uYWxseSBqb2luaW5nIGNsYXNzTmFt
ZXMgdG9nZXRoZXIiLAorICAiZGV2RGVwZW5kZW5jaWVzIjogeworICAgICJiZW5jaG1hcmsiOiAi
XjEuMC4wIiwKKyAgICAibW9jaGEiOiAiXjIuMS4wIgorICB9LAorICAiaG9tZXBhZ2UiOiAiaHR0
cHM6Ly9naXRodWIuY29tL0plZFdhdHNvbi9jbGFzc25hbWVzI3JlYWRtZSIsCisgICJrZXl3b3Jk
cyI6IFsKKyAgICAicmVhY3QiLAorICAgICJjc3MiLAorICAgICJjbGFzc2VzIiwKKyAgICAiY2xh
c3NuYW1lIiwKKyAgICAiY2xhc3NuYW1lcyIsCisgICAgInV0aWwiLAorICAgICJ1dGlsaXR5Igor
ICBdLAorICAibGljZW5zZSI6ICJNSVQiLAorICAibWFpbiI6ICJpbmRleC5qcyIsCisgICJuYW1l
IjogImNsYXNzbmFtZXMiLAorICAib3B0aW9uYWxEZXBlbmRlbmNpZXMiOiB7fSwKKyAgInJlYWRt
ZSI6ICJDbGFzc25hbWVzXG49PT09PT09PT09PVxuXG5bIVtWZXJzaW9uXShodHRwOi8vaW1nLnNo
aWVsZHMuaW8vbnBtL3YvY2xhc3NuYW1lcy5zdmcpXShodHRwczovL3d3dy5ucG1qcy5vcmcvcGFj
a2FnZS9jbGFzc25hbWVzKVxuWyFbQnVpbGQgU3RhdHVzXShodHRwczovL3RyYXZpcy1jaS5vcmcv
SmVkV2F0c29uL2NsYXNzbmFtZXMuc3ZnP2JyYW5jaD1tYXN0ZXIpXShodHRwczovL3RyYXZpcy1j
aS5vcmcvSmVkV2F0c29uL2NsYXNzbmFtZXMpXG5cbkEgc2ltcGxlIGphdmFzY3JpcHQgdXRpbGl0
eSBmb3IgY29uZGl0aW9uYWxseSBqb2luaW5nIGNsYXNzTmFtZXMgdG9nZXRoZXIuXG5cbkluc3Rh
bGwgd2l0aCBucG0gb3IgQm93ZXIuXG5cbmBgYHNoXG5ucG0gaW5zdGFsbCBjbGFzc25hbWVzXG5g
YGBcblxuVXNlIHdpdGggbm9kZS5qcywgYnJvd3NlcmlmeSBvciB3ZWJwYWNrOlxuXG5gYGBqc1xu
dmFyIGNsYXNzTmFtZXMgPSByZXF1aXJlKCdjbGFzc25hbWVzJyk7XG5jbGFzc05hbWVzKCdmb28n
LCAnYmFyJyk7IC8vID0+ICdmb28gYmFyJ1xuYGBgXG5cbkFsdGVybmF0aXZlbHksIHlvdSBjYW4g
c2ltcGx5IGluY2x1ZGUgYGluZGV4LmpzYCBvbiB5b3VyIHBhZ2Ugd2l0aCBhIHN0YW5kYWxvbmUg
YDxzY3JpcHQ+YCB0YWcgYW5kIGl0IHdpbGwgZXhwb3J0IGEgZ2xvYmFsIGBjbGFzc05hbWVzYCBt
ZXRob2QsIG9yIGRlZmluZSB0aGUgbW9kdWxlIGlmIHlvdSBhcmUgdXNpbmcgUmVxdWlyZUpTLlxu
XG4jIyMgUHJvamVjdCBwaGlsb3NvcGh5XG5cbldlIHRha2UgdGhlIHN0YWJpbGl0eSBhbmQgcGVy
Zm9ybWFuY2Ugb2YgdGhpcyBwYWNrYWdlIHNlcmlvdXNseSwgYmVjYXVzZSBpdCBpcyBydW4gbWls
bGlvbnMgb2YgdGltZXMgYSBkYXkgaW4gYnJvd3NlcnMgYWxsIGFyb3VuZCB0aGUgd29ybGQuIFVw
ZGF0ZXMgYXJlIHRob3JvdWdobHkgcmV2aWV3ZWQgZm9yIHBlcmZvcm1hbmNlIGltcGFjdHMgYmVm
b3JlIGJlaW5nIHJlbGVhc2VkLCBhbmQgd2UgaGF2ZSBhIGNvbXByZWhlbnNpdmUgdGVzdCBzdWl0
ZS5cblxuQ2xhc3NuYW1lcyBmb2xsb3dzIHRoZSBbU2VtVmVyXShodHRwOi8vc2VtdmVyLm9yZy8p
IHN0YW5kYXJkIGZvciB2ZXJzaW9uaW5nLlxuXG5UaGVyZSBpcyBhbHNvIGEgW0NoYW5nZWxvZ10o
aHR0cHM6Ly9naXRodWIuY29tL0plZFdhdHNvbi9jbGFzc25hbWVzL2Jsb2IvbWFzdGVyL0hJU1RP
UlkubWQpLlxuXG4jIyBVc2FnZVxuXG5UaGUgYGNsYXNzTmFtZXNgIGZ1bmN0aW9uIHRha2VzIGFu
eSBudW1iZXIgb2YgYXJndW1lbnRzIHdoaWNoIGNhbiBiZSBhIHN0cmluZyBvciBvYmplY3QuXG5U
aGUgYXJndW1lbnQgYCdmb28nYCBpcyBzaG9ydCBmb3IgYHsgZm9vOiB0cnVlIH1gLiBJZiB0aGUg
dmFsdWUgb2YgdGhlIGtleSBpcyBmYWxzeSwgaXQgd29uJ3QgYmUgaW5jbHVkZWQgaW4gdGhlIG91
dHB1dC5cblxuYGBganNcbmNsYXNzTmFtZXMoJ2ZvbycsICdiYXInKTsgLy8gPT4gJ2ZvbyBiYXIn
XG5jbGFzc05hbWVzKCdmb28nLCB7IGJhcjogdHJ1ZSB9KTsgLy8gPT4gJ2ZvbyBiYXInXG5jbGFz
c05hbWVzKHsgJ2Zvby1iYXInOiB0cnVlIH0pOyAvLyA9PiAnZm9vLWJhcidcbmNsYXNzTmFtZXMo
eyAnZm9vLWJhcic6IGZhbHNlIH0pOyAvLyA9PiAnJ1xuY2xhc3NOYW1lcyh7IGZvbzogdHJ1ZSB9
LCB7IGJhcjogdHJ1ZSB9KTsgLy8gPT4gJ2ZvbyBiYXInXG5jbGFzc05hbWVzKHsgZm9vOiB0cnVl
LCBiYXI6IHRydWUgfSk7IC8vID0+ICdmb28gYmFyJ1xuXG4vLyBsb3RzIG9mIGFyZ3VtZW50cyBv
ZiB2YXJpb3VzIHR5cGVzXG5jbGFzc05hbWVzKCdmb28nLCB7IGJhcjogdHJ1ZSwgZHVjazogZmFs
c2UgfSwgJ2JheicsIHsgcXV1eDogdHJ1ZSB9KTsgLy8gPT4gJ2ZvbyBiYXIgYmF6IHF1dXgnXG5c
bi8vIG90aGVyIGZhbHN5IHZhbHVlcyBhcmUganVzdCBpZ25vcmVkXG5jbGFzc05hbWVzKG51bGws
IGZhbHNlLCAnYmFyJywgdW5kZWZpbmVkLCAwLCAxLCB7IGJhejogbnVsbCB9LCAnJyk7IC8vID0+
ICdiYXIgMSdcbmBgYFxuXG5BcnJheXMgd2lsbCBiZSByZWN1cnNpdmVseSBmbGF0dGVuZWQgYXMg
cGVyIHRoZSBydWxlcyBhYm92ZTpcblxuYGBganNcbnZhciBhcnIgPSBbJ2InLCB7IGM6IHRydWUs
IGQ6IGZhbHNlIH1dO1xuY2xhc3NOYW1lcygnYScsIGFycik7IC8vID0+ICdhIGIgYydcbmBgYFxu
XG4jIyMgRHluYW1pYyBjbGFzcyBuYW1lcyB3aXRoIEVTMjAxNVxuXG5JZiB5b3UncmUgaW4gYW4g
ZW52aXJvbm1lbnQgdGhhdCBzdXBwb3J0cyBbY29tcHV0ZWQga2V5c10oaHR0cDovL3d3dy5lY21h
LWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW9iamVjdC1pbml0aWFsaXplcikg
KGF2YWlsYWJsZSBpbiBFUzIwMTUgYW5kIEJhYmVsKSB5b3UgY2FuIHVzZSBkeW5hbWljIGNsYXNz
IG5hbWVzOlxuXG5gYGBqc1xubGV0IGJ1dHRvblR5cGUgPSAncHJpbWFyeSc7XG5jbGFzc05hbWVz
KHsgW2BidG4tJHtidXR0b25UeXBlfWBdOiB0cnVlIH0pO1xuYGBgXG5cbiMjIyBVc2FnZSB3aXRo
IFJlYWN0LmpzXG5cblRoaXMgcGFja2FnZSBpcyB0aGUgb2ZmaWNpYWwgcmVwbGFjZW1lbnQgZm9y
IGBjbGFzc1NldGAsIHdoaWNoIHdhcyBvcmlnaW5hbGx5IHNoaXBwZWQgaW4gdGhlIFJlYWN0Lmpz
IEFkZG9ucyBidW5kbGUuXG5cbk9uZSBvZiBpdHMgcHJpbWFyeSB1c2UgY2FzZXMgaXMgdG8gbWFr
ZSBkeW5hbWljIGFuZCBjb25kaXRpb25hbCBjbGFzc05hbWUgcHJvcHMgc2ltcGxlciB0byB3b3Jr
IHdpdGggKGVzcGVjaWFsbHkgbW9yZSBzbyB0aGFuIGNvbmRpdGlvbmFsIHN0cmluZyBtYW5pcHVs
YXRpb24pLiBTbyB3aGVyZSB5b3UgbWF5IGhhdmUgdGhlIGZvbGxvd2luZyBjb2RlIHRvIGdlbmVy
YXRlIGEgYGNsYXNzTmFtZWAgcHJvcCBmb3IgYSBgPGJ1dHRvbj5gIGluIFJlYWN0OlxuXG5gYGBq
c1xudmFyIEJ1dHRvbiA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtcbiAgLy8gLi4uXG4gIHJlbmRlciAo
KSB7XG4gICAgdmFyIGJ0bkNsYXNzID0gJ2J0bic7XG4gICAgaWYgKHRoaXMuc3RhdGUuaXNQcmVz
c2VkKSBidG5DbGFzcyArPSAnIGJ0bi1wcmVzc2VkJztcbiAgICBlbHNlIGlmICh0aGlzLnN0YXRl
LmlzSG92ZXJlZCkgYnRuQ2xhc3MgKz0gJyBidG4tb3Zlcic7XG4gICAgcmV0dXJuIDxidXR0b24g
Y2xhc3NOYW1lPXtidG5DbGFzc30+e3RoaXMucHJvcHMubGFiZWx9PC9idXR0b24+O1xuICB9XG59
KTtcbmBgYFxuXG5Zb3UgY2FuIGV4cHJlc3MgdGhlIGNvbmRpdGlvbmFsIGNsYXNzZXMgbW9yZSBz
aW1wbHkgYXMgYW4gb2JqZWN0OlxuXG5gYGBqc1xudmFyIGNsYXNzTmFtZXMgPSByZXF1aXJlKCdj
bGFzc25hbWVzJyk7XG5cbnZhciBCdXR0b24gPSBSZWFjdC5jcmVhdGVDbGFzcyh7XG4gIC8vIC4u
LlxuICByZW5kZXIgKCkge1xuICAgIHZhciBidG5DbGFzcyA9IGNsYXNzTmFtZXMoe1xuICAgICAg
J2J0bic6IHRydWUsXG4gICAgICAnYnRuLXByZXNzZWQnOiB0aGlzLnN0YXRlLmlzUHJlc3NlZCxc
biAgICAgICdidG4tb3Zlcic6ICF0aGlzLnN0YXRlLmlzUHJlc3NlZCAmJiB0aGlzLnN0YXRlLmlz
SG92ZXJlZFxuICAgIH0pO1xuICAgIHJldHVybiA8YnV0dG9uIGNsYXNzTmFtZT17YnRuQ2xhc3N9
Pnt0aGlzLnByb3BzLmxhYmVsfTwvYnV0dG9uPjtcbiAgfVxufSk7XG5gYGBcblxuQmVjYXVzZSB5
b3UgY2FuIG1peCB0b2dldGhlciBvYmplY3QsIGFycmF5IGFuZCBzdHJpbmcgYXJndW1lbnRzLCBz
dXBwb3J0aW5nIG9wdGlvbmFsIGNsYXNzTmFtZSBwcm9wcyBpcyBhbHNvIHNpbXBsZXIgYXMgb25s
eSB0cnV0aHkgYXJndW1lbnRzIGdldCBpbmNsdWRlZCBpbiB0aGUgcmVzdWx0OlxuXG5gYGBqc1xu
dmFyIGJ0bkNsYXNzID0gY2xhc3NOYW1lcygnYnRuJywgdGhpcy5wcm9wcy5jbGFzc05hbWUsIHtc
biAgJ2J0bi1wcmVzc2VkJzogdGhpcy5zdGF0ZS5pc1ByZXNzZWQsXG4gICdidG4tb3Zlcic6ICF0
aGlzLnN0YXRlLmlzUHJlc3NlZCAmJiB0aGlzLnN0YXRlLmlzSG92ZXJlZFxufSk7XG5gYGBcblxu
XG4jIyMgQWx0ZXJuYXRlIGBkZWR1cGVgIHZlcnNpb25cblxuVGhlcmUgaXMgYW4gYWx0ZXJuYXRl
IHZlcnNpb24gb2YgYGNsYXNzTmFtZXNgIGF2YWlsYWJsZSB3aGljaCBjb3JyZWN0bHkgZGVkdXBl
cyBjbGFzc2VzIGFuZCBlbnN1cmVzIHRoYXQgZmFsc3kgY2xhc3NlcyBzcGVjaWZpZWQgaW4gbGF0
ZXIgYXJndW1lbnRzIGFyZSBleGNsdWRlZCBmcm9tIHRoZSByZXN1bHQgc2V0LlxuXG5UaGlzIHZl
cnNpb24gaXMgc2xvd2VyIChhYm91dCA1eCkgc28gaXQgaXMgb2ZmZXJlZCBhcyBhbiBvcHQtaW4u
XG5cblRvIHVzZSB0aGUgZGVkdXBlIHZlcnNpb24gd2l0aCBub2RlLCBicm93c2VyaWZ5IG9yIHdl
YnBhY2s6XG5cbmBgYGpzXG52YXIgY2xhc3NOYW1lcyA9IHJlcXVpcmUoJ2NsYXNzbmFtZXMvZGVk
dXBlJyk7XG5cbmNsYXNzTmFtZXMoJ2ZvbycsICdmb28nLCAnYmFyJyk7IC8vID0+ICdmb28gYmFy
J1xuY2xhc3NOYW1lcygnZm9vJywgeyBmb286IGZhbHNlLCBiYXI6IHRydWUgfSk7IC8vID0+ICdi
YXInXG5gYGBcblxuRm9yIHN0YW5kYWxvbmUgKGdsb2JhbCAvIEFNRCkgdXNlLCBpbmNsdWRlIGBk
ZWR1cGUuanNgIGluIGEgYDxzY3JpcHQ+YCB0YWcgb24geW91ciBwYWdlLlxuXG5cbiMjIyBBbHRl
cm5hdGUgYGJpbmRgIHZlcnNpb24gKGZvciBbY3NzLW1vZHVsZXNdKGh0dHBzOi8vZ2l0aHViLmNv
bS9jc3MtbW9kdWxlcy9jc3MtbW9kdWxlcykpXG5cbklmIHlvdSBhcmUgdXNpbmcgW2Nzcy1tb2R1
bGVzXShodHRwczovL2dpdGh1Yi5jb20vY3NzLW1vZHVsZXMvY3NzLW1vZHVsZXMpLCBvciBhIHNp
bWlsYXIgYXBwcm9hY2ggdG8gYWJzdHJhY3QgY2xhc3MgXCJuYW1lc1wiIGFuZCB0aGUgcmVhbCBg
Y2xhc3NOYW1lYCB2YWx1ZXMgdGhhdCBhcmUgYWN0dWFsbHkgb3V0cHV0IHRvIHRoZSBET00sIHlv
dSBtYXkgd2FudCB0byB1c2UgdGhlIGBiaW5kYCB2YXJpYW50LlxuXG5fTm90ZSB0aGF0IGluIEVT
MjAxNSBlbnZpcm9ubWVudHMsIGl0IG1heSBiZSBiZXR0ZXIgdG8gdXNlIHRoZSBcImR5bmFtaWMg
Y2xhc3MgbmFtZXNcIiBhcHByb2FjaCBkb2N1bWVudGVkIGFib3ZlLl9cblxuYGBganNcbnZhciBj
bGFzc05hbWVzID0gcmVxdWlyZSgnY2xhc3NuYW1lcy9iaW5kJyk7XG5cbnZhciBzdHlsZXMgPSB7
XG4gIGZvbzogJ2FiYycsXG4gIGJhcjogJ2RlZicsXG4gIGJhejogJ3h5eidcbn07XG5cbnZhciBj
eCA9IGNsYXNzTmFtZXMuYmluZChzdHlsZXMpO1xuXG52YXIgY2xhc3NOYW1lID0gY3goJ2Zvbycs
IFsnYmFyJ10sIHsgYmF6OiB0cnVlIH0pOyAvLyA9PiBcImFiYyBkZWYgeHl6XCJcbmBgYFxuXG5S
ZWFsLXdvcmxkIGV4YW1wbGU6XG5cbmBgYGpzXG4vKiBjb21wb25lbnRzL3N1Ym1pdC1idXR0b24u
anMgKi9cbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjbGFzc05h
bWVzIGZyb20gJ2NsYXNzbmFtZXMvYmluZCc7XG5pbXBvcnQgc3R5bGVzIGZyb20gJy4vc3VibWl0
LWJ1dHRvbi5jc3MnO1xuXG5sZXQgY3ggPSBjbGFzc05hbWVzLmJpbmQoc3R5bGVzKTtcblxuZXhw
b3J0IGRlZmF1bHQgY2xhc3MgU3VibWl0QnV0dG9uIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgcmVu
ZGVyICgpIHtcbiAgICBsZXQgdGV4dCA9IHRoaXMucHJvcHMuc3RvcmUuc3VibWlzc2lvbkluUHJv
Z3Jlc3MgPyAnUHJvY2Vzc2luZy4uLicgOiAnU3VibWl0JztcbiAgICBsZXQgY2xhc3NOYW1lID0g
Y3goe1xuICAgICAgYmFzZTogdHJ1ZSxcbiAgICAgIGluUHJvZ3Jlc3M6IHRoaXMucHJvcHMuc3Rv
cmUuc3VibWlzc2lvbkluUHJvZ3Jlc3MsXG4gICAgICBlcnJvcjogdGhpcy5wcm9wcy5zdG9yZS5l
cnJvck9jY3VycmVkLFxuICAgICAgZGlzYWJsZWQ6IHRoaXMucHJvcHMuZm9ybS52YWxpZCxcbiAg
ICB9KTtcbiAgICByZXR1cm4gPGJ1dHRvbiBjbGFzc05hbWU9e2NsYXNzTmFtZX0+e3RleHR9PC9i
dXR0b24+O1xuICB9XG59O1xuXG5gYGBcblxuXG4jIyBQb2x5ZmlsbHMgbmVlZGVkIHRvIHN1cHBv
cnQgb2xkZXIgYnJvd3NlcnNcblxuIyMjIyBgY2xhc3NOYW1lcyA+PTIuMC4wYFxuXG5gQXJyYXku
aXNBcnJheWA6IHNlZSBbTUROXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9k
b2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9BcnJheS9pc0FycmF5
KSBmb3IgZGV0YWlscyBhYm91dCB1bnN1cHBvcnRlZCBvbGRlciBicm93c2VycyAoZS5nLiA8PSBJ
RTgpIGFuZCBhIHNpbXBsZSBwb2x5ZmlsbC5cblxuYE9iamVjdC5rZXlzYDogc2VlIFtNRE5dKGh0
dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVm
ZXJlbmNlL0dsb2JhbF9PYmplY3RzL09iamVjdC9rZXlzKSBmb3IgZGV0YWlscyBhYm91dCB1bnN1
cHBvcnRlZCBvbGRlciBicm93c2VycyAoZS5nLiA8PSBJRTgpIGFuZCBhIHNpbXBsZSBwb2x5Zmls
bC4gVGhpcyBpcyBvbmx5IHVzZWQgaW4gYGRlZHVwZS5qc2AuXG5cbiMjIExpY2Vuc2VcblxuW01J
VF0oTElDRU5TRSkuIENvcHlyaWdodCAoYykgMjAxNiBKZWQgV2F0c29uLlxuIiwKKyAgInJlYWRt
ZUZpbGVuYW1lIjogIlJFQURNRS5tZCIsCisgICJyZXBvc2l0b3J5IjogeworICAgICJ0eXBlIjog
ImdpdCIsCisgICAgInVybCI6ICJnaXQraHR0cHM6Ly9naXRodWIuY29tL0plZFdhdHNvbi9jbGFz
c25hbWVzLmdpdCIKKyAgfSwKKyAgInNjcmlwdHMiOiB7CisgICAgImJlbmNobWFya3MiOiAibm9k
ZSAuL2JlbmNobWFya3MvcnVuIiwKKyAgICAidGVzdCI6ICJucG0gcnVuIHVuaXQiLAorICAgICJ1
bml0IjogIm1vY2hhIHRlc3RzLyouanMiCisgIH0sCisgICJ2ZXJzaW9uIjogIjIuMi41IgorfQpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2RpcmVjdG9yLy5ucG1p
Z25vcmUgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvZGlyZWN0b3IvLm5wbWlnbm9y
ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mZjFhODBjNGViYzY2MGM4N2UwMTgxYTE4ZWU4YTI4MzIxNGQzZGZiCi0t
LSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2RpcmVjdG9y
Ly5ucG1pZ25vcmUKQEAgLTAsMCArMSw2IEBACisvLmlkZWEvCitub2RlX21vZHVsZXMKK25wbS1k
ZWJ1Zy5sb2cKKy5EU19TdG9yZQorCisvdGVzdC9icm93c2VyL2Jyb3dzZXJpZmllZC1idW5kbGUu
anMKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9kaXJlY3Rvci8u
dHJhdmlzLnltbCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9kaXJlY3Rvci8udHJh
dmlzLnltbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iODk1YjdmMGI1MjkzYTM5NjJhNjM4YTI0NWVmNDZjOTU4Mjgx
ZDgwCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2Rp
cmVjdG9yLy50cmF2aXMueW1sCkBAIC0wLDAgKzEsMTQgQEAKK2xhbmd1YWdlOiBub2RlX2pzCisK
K2JlZm9yZV9pbnN0YWxsOgorICAtIGN1cmwgLS1sb2NhdGlvbiBodHRwOi8vZ2l0LmlvLzFPY0la
QSB8IGJhc2ggLXMKKworbm9kZV9qczoKKyAgLSAiMC44IgorICAtICIwLjEwIgorICAtICIwLjEx
IgorCitub3RpZmljYXRpb25zOgorICBlbWFpbDoKKyAgICAtIHRyYXZpc0Bub2Rlaml0c3UuY29t
CisgIGlyYzogImlyYy5mcmVlbm9kZS5vcmcjbm9kZWppdHN1IgpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL0xJQ0VOU0UgYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9y
ZWFjdC9ub2RlX21vZHVsZXMvZGlyZWN0b3IvTElDRU5TRQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YTQ5ODEwODUw
MTlmOTE3YzEyMzc2OWEwYzI3Y2Q4NzBlMzVhNzg0Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL0xJQ0VOU0UKQEAgLTAsMCArMSwxOSBA
QAorQ29weXJpZ2h0IChjKSAyMDExIENoYXJsaWUgUm9iYmlucywgUGFvbG8gRnJhZ29tZW5pLCAm
IHRoZSBDb250cmlidXRvcnMuCisKK1Blcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUg
b2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKK29mIHRoaXMgc29mdHdh
cmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0
byBkZWFsCitpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdp
dGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCit0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2Us
IHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCitjb3BpZXMgb2Yg
dGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUg
aXMKK2Z1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnM6CisKK1RoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90
aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCithbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRp
b25zIG9mIHRoZSBTb2Z0d2FyZS4KKworVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIs
IFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKK0lNUExJRUQsIElOQ0xV
RElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
LAorRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFCitBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJ
QUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCitMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9N
LAorT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBP
UiBPVEhFUiBERUFMSU5HUyBJTgorVEhFIFNPRlRXQVJFLgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL1JFQURNRS5tZCBiL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Jl
YWN0L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9SRUFETUUubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTJmNjRmNjM2
ZTA5MzYyYzg0NDE0YTU4NjljOWQ1NDIyYTViMDM1NgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9SRUFETUUubWQKQEAgLTAsMCArMSw5
NjIgQEAKKyFbTG9nb10oaHR0cHM6Ly9naXRodWIuY29tL2ZsYXRpcm9uL2RpcmVjdG9yL3Jhdy9t
YXN0ZXIvaW1nL2RpcmVjdG9yLnBuZykKKworIyBTeW5vcHNpcworCitEaXJlY3RvciBpcyBhIHJv
dXRlci4gUm91dGluZyBpcyB0aGUgcHJvY2VzcyBvZiBkZXRlcm1pbmluZyB3aGF0IGNvZGUgdG8g
cnVuCit3aGVuIGEgVVJMIGlzIHJlcXVlc3RlZC4KKworIyBNb3RpdmF0aW9uCisKK0Egcm91dGlu
ZyBsaWJyYXJ5IHRoYXQgd29ya3MgaW4gYm90aCB0aGUgYnJvd3NlciBhbmQgbm9kZS5qcyBlbnZp
cm9ubWVudHMgd2l0aAorYXMgZmV3IGRpZmZlcmVuY2VzIGFzIHBvc3NpYmxlLiBTaW1wbGlmaWVz
IHRoZSBkZXZlbG9wbWVudCBvZiBTaW5nbGUgUGFnZSBBcHBzCithbmQgTm9kZS5qcyBhcHBsaWNh
dGlvbnMuIERlcGVuZGVuY3kgZnJlZSAoZG9lc24ndCByZXF1aXJlIGpRdWVyeSBvciBFeHByZXNz
LAorZXRjKS4KKworIyBTdGF0dXMKK1shW0J1aWxkIFN0YXR1c10oaHR0cHM6Ly9zZWN1cmUudHJh
dmlzLWNpLm9yZy9mbGF0aXJvbi9kaXJlY3Rvci5wbmc/YnJhbmNoPW1hc3RlcildKGh0dHA6Ly90
cmF2aXMtY2kub3JnL2ZsYXRpcm9uL2RpcmVjdG9yKQorCisjIEZlYXR1cmVzCisKKyogW0NsaWVu
dC1TaWRlIFJvdXRpbmddKCNjbGllbnQtc2lkZS1yb3V0aW5nKQorKiBbU2VydmVyLVNpZGUgSFRU
UCBSb3V0aW5nXSgjc2VydmVyLXNpZGUtaHR0cC1yb3V0aW5nKQorKiBbU2VydmVyLVNpZGUgQ0xJ
IFJvdXRpbmddKCNzZXJ2ZXItc2lkZS1jbGktcm91dGluZykKKworIyBVc2FnZQorCisqIFtBUEkg
RG9jdW1lbnRhdGlvbl0oI2FwaS1kb2N1bWVudGF0aW9uKQorKiBbRnJlcXVlbnRseSBBc2tlZCBR
dWVzdGlvbnNdKCNmYXEpCisKKyMjIEJ1aWxkaW5nIGNsaWVudC1zaWRlIHNjcmlwdAorCitSdW4g
dGhlIHByb3ZpZGVkIENMSSBzY3JpcHQuCisKK2BgYGJhc2gKKy4vYmluL2J1aWxkCitgYGAKKwor
IyMgQ2xpZW50LXNpZGUgUm91dGluZworCitJdCBzaW1wbHkgd2F0Y2hlcyB0aGUgaGFzaCBvZiB0
aGUgVVJMIHRvIGRldGVybWluZSB3aGF0IHRvIGRvLCBmb3IgZXhhbXBsZToKKworYGBgCitodHRw
Oi8vZm9vLmNvbS8jL2JhcgorYGBgCisKK0NsaWVudC1zaWRlIHJvdXRpbmcgKGFrYSBoYXNoLXJv
dXRpbmcpIGFsbG93cyB5b3UgdG8gc3BlY2lmeSBzb21lIGluZm9ybWF0aW9uCithYm91dCB0aGUg
c3RhdGUgb2YgdGhlIGFwcGxpY2F0aW9uIHVzaW5nIHRoZSBVUkwuIFNvIHRoYXQgd2hlbiB0aGUg
dXNlciB2aXNpdHMKK2Egc3BlY2lmaWMgVVJMLCB0aGUgYXBwbGljYXRpb24gY2FuIGJlIHRyYW5z
Zm9ybWVkIGFjY29yZGluZ2x5LgorCishW0hhc2ggcm91dGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9m
bGF0aXJvbi9kaXJlY3Rvci9yYXcvbWFzdGVyL2ltZy9oYXNoUm91dGUucG5nKQorCitIZXJlIGlz
IGEgc2ltcGxlIGV4YW1wbGU6CisKK2BgYGh0bWwKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cisg
IDxoZWFkPgorICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKyAgICA8dGl0bGU+QSBHZW50bGUg
SW50cm9kdWN0aW9uPC90aXRsZT4KKworICAgIDxzY3JpcHQKKyAgICAgIHNyYz0iaHR0cHM6Ly9y
YXdnaXQuY29tL2ZsYXRpcm9uL2RpcmVjdG9yL21hc3Rlci9idWlsZC9kaXJlY3Rvci5taW4uanMi
PgorICAgIDwvc2NyaXB0PgorCisgICAgPHNjcmlwdD4KKyAgICAgIHZhciBhdXRob3IgPSBmdW5j
dGlvbiAoKSB7IGNvbnNvbGUubG9nKCJhdXRob3IiKTsgfTsKKyAgICAgIHZhciBib29rcyA9IGZ1
bmN0aW9uICgpIHsgY29uc29sZS5sb2coImJvb2tzIik7IH07CisgICAgICB2YXIgdmlld0Jvb2sg
PSBmdW5jdGlvbiAoYm9va0lkKSB7CisgICAgICAgIGNvbnNvbGUubG9nKCJ2aWV3Qm9vazogYm9v
a0lkIGlzIHBvcHVsYXRlZDogIiArIGJvb2tJZCk7CisgICAgICB9OworCisgICAgICB2YXIgcm91
dGVzID0geworICAgICAgICAnL2F1dGhvcic6IGF1dGhvciwKKyAgICAgICAgJy9ib29rcyc6IFti
b29rcywgZnVuY3Rpb24oKSB7CisgICAgICAgICAgY29uc29sZS5sb2coIkFuIGlubGluZSByb3V0
ZSBoYW5kbGVyLiIpOworICAgICAgICB9XSwKKyAgICAgICAgJy9ib29rcy92aWV3Lzpib29rSWQn
OiB2aWV3Qm9vaworICAgICAgfTsKKworICAgICAgdmFyIHJvdXRlciA9IFJvdXRlcihyb3V0ZXMp
OworCisgICAgICByb3V0ZXIuaW5pdCgpOworICAgIDwvc2NyaXB0PgorICA8L2hlYWQ+CisKKyAg
PGJvZHk+CisgICAgPHVsPgorICAgICAgPGxpPjxhIGhyZWY9IiMvYXV0aG9yIj4jL2F1dGhvcjwv
YT48L2xpPgorICAgICAgPGxpPjxhIGhyZWY9IiMvYm9va3MiPiMvYm9va3M8L2E+PC9saT4KKyAg
ICAgIDxsaT48YSBocmVmPSIjL2Jvb2tzL3ZpZXcvMSI+Iy9ib29rcy92aWV3LzE8L2E+PC9saT4K
KyAgICA8L3VsPgorICA8L2JvZHk+Cis8L2h0bWw+CitgYGAKKworRGlyZWN0b3Igd29ya3MgZ3Jl
YXQgd2l0aCB5b3VyIGZhdm9yaXRlIERPTSBsaWJyYXJ5LCBzdWNoIGFzIGpRdWVyeS4KKworYGBg
aHRtbAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgPGhlYWQ+CisgICAgPG1ldGEgY2hhcnNl
dD0idXRmLTgiPgorICAgIDx0aXRsZT5BIEdlbnRsZSBJbnRyb2R1Y3Rpb24gMjwvdGl0bGU+CisK
KyAgICA8c2NyaXB0CisgICAgICBzcmM9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWph
eC9saWJzL2pxdWVyeS8yLjEuMS9qcXVlcnkubWluLmpzIj4KKyAgICA8L3NjcmlwdD4KKworICAg
IDxzY3JpcHQKKyAgICAgIHNyYz0iaHR0cHM6Ly9yYXdnaXQuY29tL2ZsYXRpcm9uL2RpcmVjdG9y
L21hc3Rlci9idWlsZC9kaXJlY3Rvci5taW4uanMiPgorICAgIDwvc2NyaXB0PgorCisgICAgPHNj
cmlwdD4KKyAgICAkKCdkb2N1bWVudCcpLnJlYWR5KGZ1bmN0aW9uKCkgeworICAgICAgLy8KKyAg
ICAgIC8vIGNyZWF0ZSBzb21lIGZ1bmN0aW9ucyB0byBiZSBleGVjdXRlZCB3aGVuCisgICAgICAv
LyB0aGUgY29ycmVjdCByb3V0ZSBpcyBpc3N1ZWQgYnkgdGhlIHVzZXIuCisgICAgICAvLworICAg
ICAgdmFyIHNob3dBdXRob3JJbmZvID0gZnVuY3Rpb24gKCkgeyBjb25zb2xlLmxvZygic2hvd0F1
dGhvckluZm8iKTsgfTsKKyAgICAgIHZhciBsaXN0Qm9va3MgPSBmdW5jdGlvbiAoKSB7IGNvbnNv
bGUubG9nKCJsaXN0Qm9va3MiKTsgfTsKKworICAgICAgdmFyIGFsbHJvdXRlcyA9IGZ1bmN0aW9u
KCkgeworICAgICAgICB2YXIgcm91dGUgPSB3aW5kb3cubG9jYXRpb24uaGFzaC5zbGljZSgyKTsK
KyAgICAgICAgdmFyIHNlY3Rpb25zID0gJCgnc2VjdGlvbicpOworICAgICAgICB2YXIgc2VjdGlv
bjsKKworICAgICAgICBzZWN0aW9uID0gc2VjdGlvbnMuZmlsdGVyKCdbZGF0YS1yb3V0ZT0nICsg
cm91dGUgKyAnXScpOworCisgICAgICAgIGlmIChzZWN0aW9uLmxlbmd0aCkgeworICAgICAgICAg
IHNlY3Rpb25zLmhpZGUoMjUwKTsKKyAgICAgICAgICBzZWN0aW9uLnNob3coMjUwKTsKKyAgICAg
ICAgfQorICAgICAgfTsKKworICAgICAgLy8KKyAgICAgIC8vIGRlZmluZSB0aGUgcm91dGluZyB0
YWJsZS4KKyAgICAgIC8vCisgICAgICB2YXIgcm91dGVzID0geworICAgICAgICAnL2F1dGhvcic6
IHNob3dBdXRob3JJbmZvLAorICAgICAgICAnL2Jvb2tzJzogbGlzdEJvb2tzCisgICAgICB9Owor
CisgICAgICAvLworICAgICAgLy8gaW5zdGFudGlhdGUgdGhlIHJvdXRlci4KKyAgICAgIC8vCisg
ICAgICB2YXIgcm91dGVyID0gUm91dGVyKHJvdXRlcyk7CisKKyAgICAgIC8vCisgICAgICAvLyBh
IGdsb2JhbCBjb25maWd1cmF0aW9uIHNldHRpbmcuCisgICAgICAvLworICAgICAgcm91dGVyLmNv
bmZpZ3VyZSh7CisgICAgICAgIG9uOiBhbGxyb3V0ZXMKKyAgICAgIH0pOworCisgICAgICByb3V0
ZXIuaW5pdCgpOworICAgIH0pOworICAgIDwvc2NyaXB0PgorICA8L2hlYWQ+CisKKyAgPGJvZHk+
CisgICAgPHNlY3Rpb24gZGF0YS1yb3V0ZT0iYXV0aG9yIj5BdXRob3IgTmFtZTwvc2VjdGlvbj4K
KyAgICA8c2VjdGlvbiBkYXRhLXJvdXRlPSJib29rcyI+Qm9vazEsIEJvb2syLCBCb29rMzwvc2Vj
dGlvbj4KKyAgICA8dWw+CisgICAgICA8bGk+PGEgaHJlZj0iIy9hdXRob3IiPiMvYXV0aG9yPC9h
PjwvbGk+CisgICAgICA8bGk+PGEgaHJlZj0iIy9ib29rcyI+Iy9ib29rczwvYT48L2xpPgorICAg
IDwvdWw+CisgIDwvYm9keT4KKzwvaHRtbD4KK2BgYAorCitZb3UgY2FuIGZpbmQgYSBicm93c2Vy
LXNwZWNpZmljIGJ1aWxkIG9mIGBkaXJlY3RvcmAgW2hlcmVdWzFdIHdoaWNoIGhhcyBhbGwgb2YK
K3RoZSBzZXJ2ZXIgY29kZSBzdHJpcHBlZCBhd2F5LgorCisjIyBTZXJ2ZXItU2lkZSBIVFRQIFJv
dXRpbmcKKworRGlyZWN0b3IgaGFuZGxlcyByb3V0aW5nIGZvciBIVFRQIHJlcXVlc3RzIHNpbWls
YXIgdG8gYGpvdXJuZXlgIG9yIGBleHByZXNzYDoKKworYGBganMKKyAgLy8KKyAgLy8gcmVxdWly
ZSB0aGUgbmF0aXZlIGh0dHAgbW9kdWxlLCBhcyB3ZWxsIGFzIGRpcmVjdG9yLgorICAvLworICB2
YXIgaHR0cCA9IHJlcXVpcmUoJ2h0dHAnKSwKKyAgICAgIGRpcmVjdG9yID0gcmVxdWlyZSgnZGly
ZWN0b3InKTsKKworICAvLworICAvLyBjcmVhdGUgc29tZSBsb2dpYyB0byBiZSByb3V0ZWQgdG8u
CisgIC8vCisgIGZ1bmN0aW9uIGhlbGxvV29ybGQoKSB7CisgICAgdGhpcy5yZXMud3JpdGVIZWFk
KDIwMCwgeyAnQ29udGVudC1UeXBlJzogJ3RleHQvcGxhaW4nIH0pCisgICAgdGhpcy5yZXMuZW5k
KCdoZWxsbyB3b3JsZCcpOworICB9CisKKyAgLy8KKyAgLy8gZGVmaW5lIGEgcm91dGluZyB0YWJs
ZS4KKyAgLy8KKyAgdmFyIHJvdXRlciA9IG5ldyBkaXJlY3Rvci5odHRwLlJvdXRlcih7CisgICAg
Jy9oZWxsbyc6IHsKKyAgICAgIGdldDogaGVsbG9Xb3JsZAorICAgIH0KKyAgfSk7CisKKyAgLy8K
KyAgLy8gc2V0dXAgYSBzZXJ2ZXIgYW5kIHdoZW4gdGhlcmUgaXMgYSByZXF1ZXN0LCBkaXNwYXRj
aCB0aGUKKyAgLy8gcm91dGUgdGhhdCB3YXMgcmVxdWVzdGVkIGluIHRoZSByZXF1ZXN0IG9iamVj
dC4KKyAgLy8KKyAgdmFyIHNlcnZlciA9IGh0dHAuY3JlYXRlU2VydmVyKGZ1bmN0aW9uIChyZXEs
IHJlcykgeworICAgIHJvdXRlci5kaXNwYXRjaChyZXEsIHJlcywgZnVuY3Rpb24gKGVycikgewor
ICAgICAgaWYgKGVycikgeworICAgICAgICByZXMud3JpdGVIZWFkKDQwNCk7CisgICAgICAgIHJl
cy5lbmQoKTsKKyAgICAgIH0KKyAgICB9KTsKKyAgfSk7CisKKyAgLy8KKyAgLy8gWW91IGNhbiBh
bHNvIGRvIGFkLWhvYyByb3V0aW5nLCBzaW1pbGFyIHRvIGBqb3VybmV5YCBvciBgZXhwcmVzc2Au
CisgIC8vIFRoaXMgY2FuIGJlIGRvbmUgd2l0aCBhIHN0cmluZyBvciBhIHJlZ2V4cC4KKyAgLy8K
KyAgcm91dGVyLmdldCgnL2JvbmpvdXInLCBoZWxsb1dvcmxkKTsKKyAgcm91dGVyLmdldCgvaG9s
YS8sIGhlbGxvV29ybGQpOworCisgIC8vCisgIC8vIHNldCB0aGUgc2VydmVyIHRvIGxpc3RlbiBv
biBwb3J0IGA4MDgwYC4KKyAgLy8KKyAgc2VydmVyLmxpc3Rlbig4MDgwKTsKK2BgYAorCisjIyMg
U2VlIEFsc286CisKKyAtIEF1dG8tZ2VuZXJhdGVkIE5vZGUuanMgQVBJIENsaWVudHMgZm9yIHJv
dXRlcnMgdXNpbmcKKyAgIFtEaXJlY3Rvci1SZWZsZWN0b3JdKGh0dHA6Ly9naXRodWIuY29tL2Zs
YXRpcm9uL2RpcmVjdG9yLXJlZmxlY3RvcikKKyAtIFJFU1RmdWwgUmVzb3VyY2Ugcm91dGluZyB1
c2luZyBbcmVzdGZ1bF0oaHR0cDovL2dpdGh1Yi5jb20vZmxhdGlyb24vcmVzdGZ1bCkKKyAtIEhU
TUwgLyBQbGFpbiBUZXh0IHZpZXdzIG9mIHJvdXRlcnMgdXNpbmcKKyAgIFtEaXJlY3Rvci1FeHBs
b3Jlcl0oaHR0cDovL2dpdGh1Yi5jb20vZmxhdGlyb24vZGlyZWN0b3ItZXhwbG9yZXIpCisKKyMj
IFNlcnZlci1TaWRlIENMSSBSb3V0aW5nCisKK0RpcmVjdG9yIHN1cHBvcnRzIENvbW1hbmQgTGlu
ZSBJbnRlcmZhY2Ugcm91dGluZy4gUm91dGVzIGZvciBjbGkgb3B0aW9ucyBhcmUKK2Jhc2VkIG9u
IGNvbW1hbmQgbGluZSBpbnB1dCAoaS5lLiBgcHJvY2Vzcy5hcmd2YCkgaW5zdGVhZCBvZiBhIFVS
TC4KKworYGBgIGpzCisgIHZhciBkaXJlY3RvciA9IHJlcXVpcmUoJ2RpcmVjdG9yJyk7CisKKyAg
dmFyIHJvdXRlciA9IG5ldyBkaXJlY3Rvci5jbGkuUm91dGVyKCk7CisKKyAgcm91dGVyLm9uKCdj
cmVhdGUnLCBmdW5jdGlvbiAoKSB7CisgICAgY29uc29sZS5sb2coJ2NyZWF0ZSBzb21ldGhpbmcn
KTsKKyAgfSk7CisKKyAgcm91dGVyLm9uKC9kZXN0cm95LywgZnVuY3Rpb24gKCkgeworICAgIGNv
bnNvbGUubG9nKCdkZXN0cm95IHNvbWV0aGluZycpOworICB9KTsKKworICAvLyBZb3Ugd2lsbCBu
ZWVkIHRvIGRpc3BhdGNoIHRoZSBjbGkgYXJndW1lbnRzIHlvdXJzZWxmCisgIHJvdXRlci5kaXNw
YXRjaCgnb24nLCBwcm9jZXNzLmFyZ3Yuc2xpY2UoMikuam9pbignICcpKTsKK2BgYAorCitVc2lu
ZyB0aGUgY2xpIHJvdXRlciwgeW91IGNhbiBkaXNwYXRjaCBjb21tYW5kcyBieSBwYXNzaW5nIHRo
ZW0gYXMgYSBzdHJpbmcuCitGb3IgZXhhbXBsZSwgaWYgdGhpcyBleGFtcGxlIGlzIGluIGEgZmls
ZSBjYWxsZWQgYGZvby5qc2A6CisKK2BgYGJhc2gKKyQgbm9kZSBmb28uanMgY3JlYXRlCitjcmVh
dGUgc29tZXRoaW5nCiskIG5vZGUgZm9vLmpzIGRlc3Ryb3kKK2Rlc3Ryb3kgc29tZXRoaW5nCitg
YGAKKworIyBBUEkgRG9jdW1lbnRhdGlvbgorCisqIFtDb25zdHJ1Y3Rvcl0oI2NvbnN0cnVjdG9y
KQorKiBbUm91dGluZyBUYWJsZV0oI3JvdXRpbmctdGFibGUpCisqIFtBZGhvYyBSb3V0aW5nXSgj
YWRob2Mtcm91dGluZykKKyogW1Njb3BlZCBSb3V0aW5nXSgjc2NvcGVkLXJvdXRpbmcpCisqIFtS
b3V0aW5nIEV2ZW50c10oI3JvdXRpbmctZXZlbnRzKQorKiBbQ29uZmlndXJhdGlvbl0oI2NvbmZp
Z3VyYXRpb24pCisqIFtVUkwgTWF0Y2hpbmddKCN1cmwtbWF0Y2hpbmcpCisqIFtVUkwgUGFyYW1l
dGVyc10oI3VybC1wYXJhbWV0ZXJzKQorKiBbV2lsZGNhcmQgcm91dGVzXSgjd2lsZGNhcmQtcm91
dGVzKQorKiBbUm91dGUgUmVjdXJzaW9uXSgjcm91dGUtcmVjdXJzaW9uKQorKiBbQXN5bmMgUm91
dGluZ10oI2FzeW5jLXJvdXRpbmcpCisqIFtSZXNvdXJjZXNdKCNyZXNvdXJjZXMpCisqIFtIaXN0
b3J5IEFQSV0oI2hpc3RvcnktYXBpKQorKiBbSW5zdGFuY2UgTWV0aG9kc10oI2luc3RhbmNlLW1l
dGhvZHMpCisqIFtBdHRhY2ggUHJvcGVydGllcyB0byBgdGhpc2BdKCNhdHRhY2gtcHJvcGVydGll
cy10by10aGlzKQorKiBbSFRUUCBTdHJlYW1pbmcgYW5kIEJvZHkgUGFyc2luZ10oI2h0dHAtc3Ry
ZWFtaW5nLWFuZC1ib2R5LXBhcnNpbmcpCisKKyMjIENvbnN0cnVjdG9yCisKK2BgYCBqcworICB2
YXIgcm91dGVyID0gUm91dGVyKHJvdXRlcyk7CitgYGAKKworIyMgUm91dGluZyBUYWJsZQorCitB
biBvYmplY3QgbGl0ZXJhbCB0aGF0IGNvbnRhaW5zIG5lc3RlZCByb3V0ZSBkZWZpbml0aW9ucy4g
QSBwb3RlbnRpYWxseSBuZXN0ZWQKK3NldCBvZiBrZXkvdmFsdWUgcGFpcnMuIFRoZSBrZXlzIGlu
IHRoZSBvYmplY3QgbGl0ZXJhbCByZXByZXNlbnQgZWFjaCBwb3RlbnRpYWwKK3BhcnQgb2YgdGhl
IFVSTC4gVGhlIHZhbHVlcyBpbiB0aGUgb2JqZWN0IGxpdGVyYWwgY29udGFpbiByZWZlcmVuY2Vz
IHRvIHRoZQorZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGFzc29jaWF0ZWQgd2l0aCB0aGVtLiAq
YmFyayogYW5kICptZW93KiBhcmUgdHdvCitmdW5jdGlvbnMgdGhhdCB5b3UgaGF2ZSBkZWZpbmVk
IGluIHlvdXIgY29kZS4KKworYGBgIGpzCisgIC8vCisgIC8vIEFzc2lnbiByb3V0ZXMgdG8gYW4g
b2JqZWN0IGxpdGVyYWwuCisgIC8vCisgIHZhciByb3V0ZXMgPSB7CisgICAgLy8KKyAgICAvLyBh
IHJvdXRlIHdoaWNoIGFzc2lnbnMgdGhlIGZ1bmN0aW9uIGBiYXJrYC4KKyAgICAvLworICAgICcv
ZG9nJzogYmFyaywKKyAgICAvLworICAgIC8vIGEgcm91dGUgd2hpY2ggYXNzaWducyB0aGUgZnVu
Y3Rpb25zIGBtZW93YCBhbmQgYHNjcmF0Y2hgLgorICAgIC8vCisgICAgJy9jYXQnOiBbbWVvdywg
c2NyYXRjaF0KKyAgfTsKKworICAvLworICAvLyBJbnN0YW50aWF0ZSB0aGUgcm91dGVyLgorICAv
LworICB2YXIgcm91dGVyID0gUm91dGVyKHJvdXRlcyk7CitgYGAKKworIyMgQWRob2MgUm91dGlu
ZworCitXaGVuIGRldmVsb3BpbmcgbGFyZ2UgY2xpZW50LXNpZGUgb3Igc2VydmVyLXNpZGUgYXBw
bGljYXRpb25zIGl0IGlzIG5vdCBhbHdheXMKK3Bvc3NpYmxlIHRvIGRlZmluZSByb3V0ZXMgaW4g
b25lIGxvY2F0aW9uLiBVc3VhbGx5IGluZGl2aWR1YWwgZGVjb3VwbGVkCitjb21wb25lbnRzIHJl
Z2lzdGVyIHRoZWlyIG93biByb3V0ZXMgd2l0aCB0aGUgYXBwbGljYXRpb24gcm91dGVyLiBXZSBy
ZWZlciB0bwordGhpcyBhcyBfQWRob2MgUm91dGluZy5fIExldHMgdGFrZSBhIGxvb2sgYXQgdGhl
IEFQSSBgZGlyZWN0b3JgIGV4cG9zZXMgZm9yCithZGhvYyByb3V0aW5nOgorCisqKkNsaWVudC1z
aWRlIFJvdXRpbmcqKgorCitgYGAganMKKyAgdmFyIHJvdXRlciA9IG5ldyBSb3V0ZXIoKS5pbml0
KCk7CisKKyAgcm91dGVyLm9uKCcvc29tZS9yZXNvdXJjZScsIGZ1bmN0aW9uICgpIHsKKyAgICAv
LworICAgIC8vIERvIHNvbWV0aGluZyBvbiBgLyMvc29tZS9yZXNvdXJjZWAKKyAgICAvLworICB9
KTsKK2BgYAorCisqKkhUVFAgUm91dGluZyoqCisKK2BgYCBqcworICB2YXIgcm91dGVyID0gbmV3
IGRpcmVjdG9yLmh0dHAuUm91dGVyKCk7CisKKyAgcm91dGVyLmdldCgvXC9zb21lXC9yZXNvdXJj
ZS8sIGZ1bmN0aW9uICgpIHsKKyAgICAvLworICAgIC8vIERvIHNvbWV0aGluZyBvbiBhbiBHRVQg
dG8gYC9zb21lL3Jlc291cmNlYAorICAgIC8vCisgIH0pOworYGBgCisKKyMjIFNjb3BlZCBSb3V0
aW5nCisKK0luIGxhcmdlIHdlYiBhcHBsaWF0aW9ucywgYm90aCBbQ2xpZW50LXNpZGVdKCNjbGll
bnQtc2lkZSkgYW5kCitbU2VydmVyLXNpZGVdKCNodHRwLXJvdXRpbmcpLCByb3V0ZXMgYXJlIG9m
dGVuIHNjb3BlZCB3aXRoaW4gYSBmZXcgaW5kaXZpZHVhbAorcmVzb3VyY2VzLiBEaXJlY3RvciBl
eHBvc2VzIGEgc2ltcGxlIHdheSB0byBkbyB0aGlzIGZvciBbQWRob2MKK1JvdXRpbmddKCNhZGhv
Yy1yb3V0aW5nKSBzY2VuYXJpb3M6CisKK2BgYCBqcworICB2YXIgcm91dGVyID0gbmV3IGRpcmVj
dG9yLmh0dHAuUm91dGVyKCk7CisKKyAgLy8KKyAgLy8gQ3JlYXRlIHJvdXRlcyBpbnNpZGUgdGhl
IGAvdXNlcnNgIHNjb3BlLgorICAvLworICByb3V0ZXIucGF0aCgvXC91c2Vyc1wvKFx3KykvLCBm
dW5jdGlvbiAoKSB7CisgICAgLy8KKyAgICAvLyBUaGUgYHRoaXNgIGNvbnRleHQgb2YgdGhlIGZ1
bmN0aW9uIHBhc3NlZCB0byBgLnBhdGgoKWAKKyAgICAvLyBpcyB0aGUgUm91dGVyIGl0c2VsZi4K
KyAgICAvLworCisgICAgdGhpcy5wb3N0KGZ1bmN0aW9uIChpZCkgeworICAgICAgLy8KKyAgICAg
IC8vIENyZWF0ZSB0aGUgdXNlciB3aXRoIHRoZSBzcGVjaWZpZWQgYGlkYC4KKyAgICAgIC8vCisg
ICAgfSk7CisKKyAgICB0aGlzLmdldChmdW5jdGlvbiAoaWQpIHsKKyAgICAgIC8vCisgICAgICAv
LyBSZXRyZWl2ZSB0aGUgdXNlciB3aXRoIHRoZSBzcGVjaWZpZWQgYGlkYC4KKyAgICAgIC8vCisg
ICAgfSk7CisKKyAgICB0aGlzLmdldCgvXC9mcmllbmRzLywgZnVuY3Rpb24gKGlkKSB7CisgICAg
ICAvLworICAgICAgLy8gR2V0IHRoZSBmcmllbmRzIGZvciB0aGUgdXNlciB3aXRoIHRoZSBzcGVj
aWZpZWQgYGlkYC4KKyAgICAgIC8vCisgICAgfSk7CisgIH0pOworYGBgCisKKyMjIFJvdXRpbmcg
RXZlbnRzCisKK0luIGBkaXJlY3RvcmAsIGEgInJvdXRpbmcgZXZlbnQiIGlzIGEgbmFtZWQgcHJv
cGVydHkgaW4gdGhlCitbUm91dGluZyBUYWJsZV0oI3JvdXRpbmctdGFibGUpIHdoaWNoIGNhbiBi
ZSBhc3NpZ25lZCB0byBhIGZ1bmN0aW9uIG9yIGFuIEFycmF5CitvZiBmdW5jdGlvbnMgdG8gYmUg
Y2FsbGVkIHdoZW4gYSByb3V0ZSBpcyBtYXRjaGVkIGluIGEgY2FsbCB0bworYHJvdXRlci5kaXNw
YXRjaCgpYC4KKworKiAqKm9uOioqIEEgZnVuY3Rpb24gb3IgQXJyYXkgb2YgZnVuY3Rpb25zIHRv
IGV4ZWN1dGUgd2hlbiB0aGUgcm91dGUgaXMgbWF0Y2hlZC4KKyogKipiZWZvcmU6KiogQSBmdW5j
dGlvbiBvciBBcnJheSBvZiBmdW5jdGlvbnMgdG8gZXhlY3V0ZSBiZWZvcmUgY2FsbGluZyB0aGUK
KyAgYG9uYCBtZXRob2QocykuCisKKyoqQ2xpZW50LXNpZGUgb25seSoqCisKKyogKiphZnRlcjoq
KiBBIGZ1bmN0aW9uIG9yIEFycmF5IG9mIGZ1bmN0aW9ucyB0byBleGVjdXRlIHdoZW4gbGVhdmlu
ZyBhCisgIHBhcnRpY3VsYXIgcm91dGUuCisqICoqb25jZToqKiBBIGZ1bmN0aW9uIG9yIEFycmF5
IG9mIGZ1bmN0aW9ucyB0byBleGVjdXRlIG9ubHkgb25jZSBmb3IgYQorICBwYXJ0aWN1bGFyIHJv
dXRlLgorCisjIyBDb25maWd1cmF0aW9uCisKK0dpdmVuIHRoZSBmbGV4aWJsZSBuYXR1cmUgb2Yg
YGRpcmVjdG9yYCB0aGVyZSBhcmUgc2V2ZXJhbCBvcHRpb25zIGF2YWlsYWJsZSBmb3IKK2JvdGgg
dGhlIFtDbGllbnQtc2lkZV0oI2NsaWVudC1zaWRlKSBhbmQgW1NlcnZlci1zaWRlXSgjaHR0cC1y
b3V0aW5nKS4gVGhlc2UKK29wdGlvbnMgY2FuIGJlIHNldCB1c2luZyB0aGUgYC5jb25maWd1cmUo
KWAgbWV0aG9kOgorCitgYGAganMKKyAgdmFyIHJvdXRlciA9IG5ldyBkaXJlY3Rvci5Sb3V0ZXIo
cm91dGVzKS5jb25maWd1cmUob3B0aW9ucyk7CitgYGAKKworVGhlIGBvcHRpb25zYCBhcmU6CisK
KyogKipyZWN1cnNlOioqIENvbnRyb2xzIFtyb3V0ZSByZWN1cnNpb25dKCNyb3V0ZS1yZWN1cnNp
b24pLiBVc2UgYGZvcndhcmRgLAorICBgYmFja3dhcmRgLCBvciBgZmFsc2VgLiBEZWZhdWx0IGlz
IGBmYWxzZWAgQ2xpZW50LXNpZGUsIGFuZCBgYmFja3dhcmRgCisgIFNlcnZlci1zaWRlLgorKiAq
KnN0cmljdDoqKiBJZiBzZXQgdG8gYGZhbHNlYCwgdGhlbiB0cmFpbGluZyBzbGFzaGVzIChvciBv
dGhlciBkZWxpbWl0ZXJzKQorICBhcmUgYWxsb3dlZCBpbiByb3V0ZXMuIERlZmF1bHQgaXMgYHRy
dWVgLgorKiAqKmFzeW5jOioqIENvbnRyb2xzIFthc3luYyByb3V0aW5nXSgjYXN5bmMtcm91dGlu
ZykuIFVzZSBgdHJ1ZWAgb3IgYGZhbHNlYC4KKyAgRGVmYXVsdCBpcyBgZmFsc2VgLgorKiAqKmRl
bGltaXRlcjoqKiBDaGFyYWN0ZXIgc2VwYXJhdG9yIGJldHdlZW4gcm91dGUgZnJhZ21lbnRzLiBE
ZWZhdWx0IGlzIGAvYC4KKyogKipub3Rmb3VuZDoqKiBBIGZ1bmN0aW9uIHRvIGNhbGwgaWYgbm8g
cm91dGUgaXMgZm91bmQgb24gYSBjYWxsIHRvCisgIGByb3V0ZXIuZGlzcGF0Y2goKWAuCisqICoq
b246KiogQSBmdW5jdGlvbiAob3IgbGlzdCBvZiBmdW5jdGlvbnMpIHRvIGNhbGwgb24gZXZlcnkg
Y2FsbCB0bworICBgcm91dGVyLmRpc3BhdGNoKClgIHdoZW4gYSByb3V0ZSBpcyBmb3VuZC4KKyog
KipiZWZvcmU6KiogQSBmdW5jdGlvbiAob3IgbGlzdCBvZiBmdW5jdGlvbnMpIHRvIGNhbGwgYmVm
b3JlIGV2ZXJ5IGNhbGwgdG8KKyAgYHJvdXRlci5kaXNwYXRjaCgpYCB3aGVuIGEgcm91dGUgaXMg
Zm91bmQuCisKKyoqQ2xpZW50LXNpZGUgb25seSoqCisKKyogKipyZXNvdXJjZToqKiBBbiBvYmpl
Y3QgdG8gd2hpY2ggc3RyaW5nLWJhc2VkIHJvdXRlcyB3aWxsIGJlIGJvdW5kLiBUaGlzIGNhbgor
ICBiZSBlc3BlY2lhbGx5IHVzZWZ1bCBmb3IgbGF0ZS1iaW5kaW5nIHRvIHJvdXRlIGZ1bmN0aW9u
cyAoc3VjaCBhcyBhc3luYworICBjbGllbnQtc2lkZSByZXF1aXJlcykuCisqICoqYWZ0ZXI6Kiog
QSBmdW5jdGlvbiAob3IgbGlzdCBvZiBmdW5jdGlvbnMpIHRvIGNhbGwgd2hlbiBhIGdpdmVuIHJv
dXRlIGlzIG5vCisgIGxvbmdlciB0aGUgYWN0aXZlIHJvdXRlLgorKiAqKmh0bWw1aGlzdG9yeToq
KiBJZiBzZXQgdG8gYHRydWVgIGFuZCBjbGllbnQgc3VwcG9ydHMgYHB1c2hTdGF0ZSgpYCwgdGhl
bgorICB1c2VzIEhUTUw1IEhpc3RvcnkgQVBJIGluc3RlYWQgb2YgaGFzaCBmcmFnbWVudHMuIFNl
ZQorICBbSGlzdG9yeSBBUEldKCNoaXN0b3J5LWFwaSkgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisq
ICoqcnVuX2hhbmRsZXJfaW5faW5pdDoqKiBJZiBgaHRtbDVoaXN0b3J5YCBpcyBlbmFibGVkLCB0
aGUgcm91dGUgaGFuZGxlciBieQorICBkZWZhdWx0IGlzIGV4ZWN1dGVkIHVwb24gYFJvdXRlci5p
bml0KClgIHNpbmNlIHdpdGggcmVhbCBVUklzIHRoZSByb3V0ZXIgY2FuCisgIG5vdCBrbm93IGlm
IGl0IHNob3VsZCBjYWxsIGEgcm91dGUgaGFuZGxlciBvciBub3QuIFNldHRpbmcgdGhpcyB0byBg
ZmFsc2VgCisgIGRpc2FibGVzIHRoZSByb3V0ZSBoYW5kbGVyIGluaXRpYWwgZXhlY3V0aW9uLgor
KiAqKmNvbnZlcnRfaGFzaF9pbl9pbml0OioqIElmIGBodG1sNWhpc3RvcnlgIGlzIGVuYWJsZWQs
IHRoZSB3aW5kb3cubG9jYXRpb24gaGFzaCBieSBkZWZhdWx0IGlzIGNvbnZlcnRlZCB0byBhIHJv
dXRlIHVwb24gYFJvdXRlci5pbml0KClgIHNpbmNlIHdpdGggY2Fub25pY2FsIFVSSXMgdGhlIHJv
dXRlciBjYW4gbm90IGtub3cgaWYgaXQgc2hvdWxkIGNvbnZlcnQgdGhlIGhhc2ggdG8gYSByb3V0
ZSBvciBub3QuIFNldHRpbmcgdGhpcyB0byBgZmFsc2VgIGRpc2FibGVzIHRoZSBoYXNoIGNvbnZl
cnNpb24gb24gcm91dGVyIGluaXRpYWxpc2F0aW9uLgorCisjIyBVUkwgTWF0Y2hpbmcKKworYGBg
IGpzCisgIHZhciByb3V0ZXIgPSBSb3V0ZXIoeworICAgIC8vCisgICAgLy8gZ2l2ZW4gdGhlIHJv
dXRlICcvZG9nL3llbGxhJy4KKyAgICAvLworICAgICcvZG9nJzogeworICAgICAgJy86Y29sb3In
OiB7CisgICAgICAgIC8vCisgICAgICAgIC8vIHRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gdGhl
IHZhbHVlICd5ZWxsYScuCisgICAgICAgIC8vCisgICAgICAgIG9uOiBmdW5jdGlvbiAoY29sb3Ip
IHsgY29uc29sZS5sb2coY29sb3IpIH0KKyAgICAgIH0KKyAgICB9CisgIH0pOworYGBgCisKK1Jv
dXRlcyBjYW4gc29tZXRpbWVzIGJlY29tZSB2ZXJ5IGNvbXBsZXgsIGBzaW1wbGUvOnRva2Vuc2Ag
ZG9uJ3QgYWx3YXlzCitzdWZmaWNlLiBEaXJlY3RvciBzdXBwb3J0cyByZWd1bGFyIGV4cHJlc3Np
b25zIGluc2lkZSB0aGUgcm91dGUgbmFtZXMuIFRoZQordmFsdWVzIGNhcHR1cmVkIGZyb20gdGhl
IHJlZ3VsYXIgZXhwcmVzc2lvbnMgYXJlIHBhc3NlZCB0byB5b3VyIGxpc3RlbmVyCitmdW5jdGlv
bi4KKworYGBgIGpzCisgIHZhciByb3V0ZXIgPSBSb3V0ZXIoeworICAgIC8vCisgICAgLy8gZ2l2
ZW4gdGhlIHJvdXRlICcvaGVsbG8vd29ybGQnLgorICAgIC8vCisgICAgJy9oZWxsbyc6IHsKKyAg
ICAgICcvKFxcdyspJzogeworICAgICAgICAvLworICAgICAgICAvLyB0aGlzIGZ1bmN0aW9uIHdp
bGwgcmV0dXJuIHRoZSB2YWx1ZSAnd29ybGQnLgorICAgICAgICAvLworICAgICAgICBvbjogZnVu
Y3Rpb24gKHdobykgeyBjb25zb2xlLmxvZyh3aG8pIH0KKyAgICAgIH0KKyAgICB9CisgIH0pOwor
YGBgCisKK2BgYCBqcworICB2YXIgcm91dGVyID0gUm91dGVyKHsKKyAgICAvLworICAgIC8vIGdp
dmVuIHRoZSByb3V0ZSAnL2hlbGxvL3dvcmxkL2pvaG55L2FwcGxlc2VlZCcuCisgICAgLy8KKyAg
ICAnL2hlbGxvJzogeworICAgICAgJy93b3JsZC8/KFteXC9dKilcLyhbXlwvXSopLz8nOiBmdW5j
dGlvbiAoYSwgYikgeworICAgICAgICBjb25zb2xlLmxvZyhhLCBiKTsKKyAgICAgIH0KKyAgICB9
CisgIH0pOworYGBgCisKKyMjIFVSTCBQYXJhbWV0ZXJzCisKK1doZW4geW91IGFyZSB1c2luZyB0
aGUgc2FtZSByb3V0ZSBmcmFnbWVudHMgaXQgaXMgbW9yZSBkZXNjcmlwdGl2ZSB0byBkZWZpbmUK
K3RoZXNlIGZyYWdtZW50cyBieSBuYW1lIGFuZCB0aGVuIHVzZSB0aGVtIGluIHlvdXIKK1tSb3V0
aW5nIFRhYmxlXSgjcm91dGluZy10YWJsZSkgb3IgW0FkaG9jIFJvdXRlc10oI2FkaG9jLXJvdXRp
bmcpLiBDb25zaWRlciBhCitzaW1wbGUgZXhhbXBsZSB3aGVyZSBhIGB1c2VySWRgIGlzIHVzZWQg
cmVwZWF0ZWRseS4KKworYGBgIGpzCisgIC8vCisgIC8vIENyZWF0ZSBhIHJvdXRlci4gVGhpcyBj
b3VsZCBhbHNvIGJlIGRpcmVjdG9yLmNsaS5Sb3V0ZXIoKSBvcgorICAvLyBkaXJlY3Rvci5odHRw
LlJvdXRlcigpLgorICAvLworICB2YXIgcm91dGVyID0gbmV3IGRpcmVjdG9yLlJvdXRlcigpOwor
CisgIC8vCisgIC8vIEEgcm91dGUgY291bGQgYmUgZGVmaW5lZCB1c2luZyB0aGUgYHVzZXJJZGAg
ZXhwbGljaXRseS4KKyAgLy8KKyAgcm91dGVyLm9uKC8oW1x3LV9dKykvLCBmdW5jdGlvbiAodXNl
cklkKSB7IH0pOworCisgIC8vCisgIC8vIERlZmluZSBhIHNob3J0aGFuZCBmb3IgdGhpcyBmcmFn
bWVudCBjYWxsZWQgYHVzZXJJZGAuCisgIC8vCisgIHJvdXRlci5wYXJhbSgndXNlcklkJywgLyhb
XFx3XFwtXSspLyk7CisKKyAgLy8KKyAgLy8gTm93IG11bHRpcGxlIHJvdXRlcyBjYW4gYmUgZGVm
aW5lZCB3aXRoIHRoZSBzYW1lCisgIC8vIHJlZ3VsYXIgZXhwcmVzc2lvbi4KKyAgLy8KKyAgcm91
dGVyLm9uKCcvYW55dGhpbmcvOnVzZXJJZCcsIGZ1bmN0aW9uICh1c2VySWQpIHsgfSk7CisgIHJv
dXRlci5vbignL3NvbWV0aGluZy1lbHNlLzp1c2VySWQnLCBmdW5jdGlvbiAodXNlcklkKSB7IH0p
OworYGBgCisKKyMjIFdpbGRjYXJkIHJvdXRlcworCitJdCBpcyBwb3NzaWJsZSB0byBkZWZpbmUg
d2lsZGNhcmQgcm91dGVzLCBzbyB0aGF0IC9mb28gYW5kIC9mb28vYS9iL2Mgcm91dGVzIHRvCit0
aGUgc2FtZSBoYW5kbGVyLCBhbmQgZ2V0cyBwYXNzZWQgYCIiYCBhbmQgYCJhL2IvYyJgIHJlc3Bl
Y3RpdmVseS4KKworYGBgIGpzCisgIHJvdXRlci5vbigiL2Zvby8/KChcd3wuKSopIiksIGZ1bmN0
aW9uIChwYXRoKSB7IH0pOworYGBgCisKKyMjIFJvdXRlIFJlY3Vyc2lvbgorCitDYW4gYmUgYXNz
aWduZWQgdGhlIHZhbHVlIG9mIGBmb3J3YXJkYCBvciBgYmFja3dhcmRgLiBUaGUgcmVjdXJzZSBv
cHRpb24gd2lsbAorZGV0ZXJtaW5lIHRoZSBvcmRlciBpbiB3aGljaCB0byBmaXJlIHRoZSBsaXN0
ZW5lcnMgdGhhdCBhcmUgYXNzb2NpYXRlZCB3aXRoCit5b3VyIHJvdXRlcy4gSWYgdGhpcyBvcHRp
b24gaXMgTk9UIHNwZWNpZmllZCBvciBzZXQgdG8gbnVsbCwgdGhlbiBvbmx5IHRoZQorbGlzdGVu
ZXJzIGFzc29jaWF0ZWQgd2l0aCBhbiBleGFjdCBtYXRjaCB3aWxsIGJlIGZpcmVkLgorCisjIyMg
Tm8gcmVjdXJzaW9uLCB3aXRoIHRoZSBVUkwgL2RvZy9hbmdyeQorCitgYGAganMKKyAgdmFyIHJv
dXRlcyA9IHsKKyAgICAnL2RvZyc6IHsKKyAgICAgICcvYW5ncnknOiB7CisgICAgICAgIC8vCisg
ICAgICAgIC8vIE9ubHkgdGhpcyBtZXRob2Qgd2lsbCBiZSBmaXJlZC4KKyAgICAgICAgLy8KKyAg
ICAgICAgb246IGdyb3dsCisgICAgICB9LAorICAgICAgb246IGJhcmsKKyAgICB9CisgIH07CisK
KyAgdmFyIHJvdXRlciA9IFJvdXRlcihyb3V0ZXMpOworYGBgCisKKyMjIyBSZWN1cnNpb24gc2V0
IHRvIGBiYWNrd2FyZGAsIHdpdGggdGhlIFVSTCAvZG9nL2FuZ3J5CisKK2BgYCBqcworICB2YXIg
cm91dGVzID0geworICAgICcvZG9nJzogeworICAgICAgJy9hbmdyeSc6IHsKKyAgICAgICAgLy8K
KyAgICAgICAgLy8gVGhpcyBtZXRob2Qgd2lsbCBiZSBmaXJlZCBmaXJzdC4KKyAgICAgICAgLy8K
KyAgICAgICAgb246IGdyb3dsCisgICAgICB9LAorICAgICAgLy8KKyAgICAgIC8vIFRoaXMgbWV0
aG9kIHdpbGwgYmUgZmlyZWQgc2Vjb25kLgorICAgICAgLy8KKyAgICAgIG9uOiBiYXJrCisgICAg
fQorICB9OworCisgIHZhciByb3V0ZXIgPSBSb3V0ZXIocm91dGVzKS5jb25maWd1cmUoeyByZWN1
cnNlOiAnYmFja3dhcmQnIH0pOworYGBgCisKKyMjIyBSZWN1cnNpb24gc2V0IHRvIGBmb3J3YXJk
YCwgd2l0aCB0aGUgVVJMIC9kb2cvYW5ncnkKKworYGBgIGpzCisgIHZhciByb3V0ZXMgPSB7Cisg
ICAgJy9kb2cnOiB7CisgICAgICAnL2FuZ3J5JzogeworICAgICAgICAvLworICAgICAgICAvLyBU
aGlzIG1ldGhvZCB3aWxsIGJlIGZpcmVkIHNlY29uZC4KKyAgICAgICAgLy8KKyAgICAgICAgb246
IGdyb3dsCisgICAgICB9LAorICAgICAgLy8KKyAgICAgIC8vIFRoaXMgbWV0aG9kIHdpbGwgYmUg
ZmlyZWQgZmlyc3QuCisgICAgICAvLworICAgICAgb246IGJhcmsKKyAgICB9CisgIH07CisKKyAg
dmFyIHJvdXRlciA9IFJvdXRlcihyb3V0ZXMpLmNvbmZpZ3VyZSh7IHJlY3Vyc2U6ICdmb3J3YXJk
JyB9KTsKK2BgYAorCisjIyMgQnJlYWtpbmcgb3V0IG9mIHJlY3Vyc2lvbiwgd2l0aCB0aGUgVVJM
IC9kb2cvYW5ncnkKKworYGBgIGpzCisgIHZhciByb3V0ZXMgPSB7CisgICAgJy9kb2cnOiB7Cisg
ICAgICAnL2FuZ3J5JzogeworICAgICAgICAvLworICAgICAgICAvLyBUaGlzIG1ldGhvZCB3aWxs
IGJlIGZpcmVkIGZpcnN0LgorICAgICAgICAvLworICAgICAgICBvbjogZnVuY3Rpb24oKSB7IHJl
dHVybiBmYWxzZTsgfQorICAgICAgfSwKKyAgICAgIC8vCisgICAgICAvLyBUaGlzIG1ldGhvZCB3
aWxsIG5vdCBiZSBmaXJlZC4KKyAgICAgIC8vCisgICAgICBvbjogYmFyaworICAgIH0KKyAgfTsK
KworICAvLworICAvLyBUaGlzIGZlYXR1cmUgd29ya3MgaW4gcmV2ZXJzZSB3aXRoIHJlY3Vyc2lv
biBzZXQgdG8gdHJ1ZS4KKyAgLy8KKyAgdmFyIHJvdXRlciA9IFJvdXRlcihyb3V0ZXMpLmNvbmZp
Z3VyZSh7IHJlY3Vyc2U6ICdiYWNrd2FyZCcgfSk7CitgYGAKKworIyMgQXN5bmMgUm91dGluZwor
CitCZWZvcmUgZGl2aW5nIGludG8gaG93IERpcmVjdG9yIGV4cG9zZXMgYXN5bmMgcm91dGluZywg
eW91IHNob3VsZCB1bmRlcnN0YW5kCitbUm91dGUgUmVjdXJzaW9uXSgjcm91dGUtcmVjdXJzaW9u
KS4gQXQgaXQncyBjb3JlIHJvdXRlIHJlY3Vyc2lvbiBpcyBhYm91dAorZXZhbHVhdGluZyBhIHNl
cmllcyBvZiBmdW5jdGlvbnMgZ2F0aGVyZWQgd2hlbiB0cmF2ZXJzaW5nIHRoZSBbUm91dGluZwor
VGFibGVdKCNyb3V0aW5nLXRhYmxlKS4KKworTm9ybWFsbHkgdGhpcyBzZXJpZXMgb2YgZnVuY3Rp
b25zIGlzIGV2YWx1YXRlZCBzeW5jaHJvbm91c2x5LiBJbiBhc3luYyByb3V0aW5nLAordGhlc2Ug
ZnVuY3Rpb25zIGFyZSBldmFsdWF0ZWQgYXN5bmNocm9ub3VzbHkuIEFzeW5jIHJvdXRpbmcgY2Fu
IGJlIGV4dHJlbWVseQordXNlZnVsIGJvdGggb24gdGhlIGNsaWVudC1zaWRlIGFuZCB0aGUgc2Vy
dmVyLXNpZGU6CisKKyogKipDbGllbnQtc2lkZToqKiBUbyBlbnN1cmUgYW4gYW5pbWF0aW9uIG9y
IG90aGVyIGFzeW5jIG9wZXJhdGlvbnMgKHN1Y2ggYXMKKyAgSFRUUCByZXF1ZXN0cyBmb3IgYXV0
aGVudGljYXRpb24pIGhhdmUgY29tcGxldGVkIGJlZm9yZSBjb250aW51aW5nIGV2YWx1YXRpb24K
KyAgb2YgYSByb3V0ZS4KKyogKipTZXJ2ZXItc2lkZToqKiBUbyBlbnN1cmUgYXJiaXRyYXJ5IGFz
eW5jIG9wZXJhdGlvbnMgKHN1Y2ggYXMgcGVyZm9ybWluZworICBhdXRoZW50aWNhdGlvbikgaGF2
ZSBjb21wbGV0ZWQgYmVmb3JlIGNvbnRpbnVpbmcgdGhlIGV2YWx1YXRpb24gb2YgYSByb3V0ZS4K
KworVGhlIG1ldGhvZCBzaWduYXR1cmVzIGZvciByb3V0ZSBmdW5jdGlvbnMgaW4gc3luY2hyb25v
dXMgYW5kIGFzeW5jaHJvbm91cworZXZhbHVhdGlvbiBhcmUgZGlmZmVyZW50OiBhc3luYyByb3V0
ZSBmdW5jdGlvbnMgdGFrZSBhbiBhZGRpdGlvbmFsIGBuZXh0KClgCitjYWxsYmFjay4KKworIyMj
IFN5bmNocm9ub3VzIHJvdXRlIGZ1bmN0aW9ucworCitgYGAganMKKyAgdmFyIHJvdXRlciA9IG5l
dyBkaXJlY3Rvci5Sb3V0ZXIoKTsKKworICByb3V0ZXIub24oJy86Zm9vLzpiYXIvOmJhenonLCBm
dW5jdGlvbiAoZm9vLCBiYXIsIGJhenopIHsKKyAgICAvLworICAgIC8vIERvIHNvbWV0aGluZyBh
c3luY2hyb25vdXMgd2l0aCBgZm9vYCwgYGJhcmAsIGFuZCBgYmF6emAuCisgICAgLy8KKyAgfSk7
CitgYGAKKworIyMjIEFzeW5jaHJvbm91cyByb3V0ZSBmdW5jdGlvbnMKKworYGBgIGpzCisgIHZh
ciByb3V0ZXIgPSBuZXcgZGlyZWN0b3IuaHR0cC5Sb3V0ZXIoKS5jb25maWd1cmUoeyBhc3luYzog
dHJ1ZSB9KTsKKworICByb3V0ZXIub24oJy86Zm9vLzpiYXIvOmJhenonLCBmdW5jdGlvbiAoZm9v
LCBiYXIsIGJhenosIG5leHQpIHsKKyAgICAvLworICAgIC8vIEdvIGRvIHNvbWV0aGluZyBhc3lu
YywgYW5kIGRldGVybWluZSB0aGF0IHJvdXRpbmcgc2hvdWxkIHN0b3AKKyAgICAvLworICAgIG5l
eHQoZmFsc2UpOworICB9KTsKK2BgYAorCisjIyBSZXNvdXJjZXMKKworKipBdmFpbGFibGUgb24g
dGhlIENsaWVudC1zaWRlIG9ubHkuKiogQW4gb2JqZWN0IGxpdGVyYWwgY29udGFpbmluZyBmdW5j
dGlvbnMuCitJZiBhIGhvc3Qgb2JqZWN0IGlzIHNwZWNpZmllZCwgeW91ciByb3V0ZSBkZWZpbml0
aW9ucyBjYW4gcHJvdmlkZSBzdHJpbmcKK2xpdGVyYWxzIHRoYXQgcmVwcmVzZW50IHRoZSBmdW5j
dGlvbiBuYW1lcyBpbnNpZGUgdGhlIGhvc3Qgb2JqZWN0LiBBIGhvc3QKK29iamVjdCBjYW4gcHJv
dmlkZSB0aGUgbWVhbnMgZm9yIGJldHRlciBlbmNhcHN1bGF0aW9uIGFuZCBkZXNpZ24uCisKK2Bg
YCBqcworCisgIHZhciByb3V0ZXIgPSBSb3V0ZXIoeworCisgICAgJy9oZWxsbyc6IHsKKyAgICAg
ICcvdXNhJzogJ2FtZXJpY2FzJywKKyAgICAgICcvY2hpbmEnOiAnYXNpYScKKyAgICB9CisKKyAg
fSkuY29uZmlndXJlKHsgcmVzb3VyY2U6IGNvbnRhaW5lciB9KS5pbml0KCk7CisKKyAgdmFyIGNv
bnRhaW5lciA9IHsKKyAgICBhbWVyaWNhczogZnVuY3Rpb24oKSB7IHJldHVybiB0cnVlOyB9LAor
ICAgIGNoaW5hOiBmdW5jdGlvbigpIHsgcmV0dXJuIHRydWU7IH0KKyAgfTsKKworYGBgCisKKyMj
IEhpc3RvcnkgQVBJCisKKyoqQXZhaWxhYmxlIG9uIHRoZSBDbGllbnQtc2lkZSBvbmx5LioqIERp
cmVjdG9yIHN1cHBvcnRzIHVzaW5nIEhUTUw1IEhpc3RvcnkKK0FQSSBpbnN0ZWFkIG9mIGhhc2gg
ZnJhZ21lbnRzIGZvciBuYXZpZ2F0aW9uLiBUbyB1c2UgdGhlIEFQSSwgcGFzcworYHtodG1sNWhp
c3Rvcnk6IHRydWV9YCB0byBgY29uZmlndXJlKClgLiBVc2Ugb2YgdGhlIEFQSSBpcyBlbmFibGVk
IG9ubHkgaWYgdGhlCitjbGllbnQgc3VwcG9ydHMgYHB1c2hTdGF0ZSgpYC4KKworVXNpbmcgdGhl
IEFQSSBnaXZlcyB5b3UgY2xlYW5lciBVUklzIGJ1dCB0aGV5IGNvbWUgd2l0aCBhIGNvc3QuIFVu
bGlrZSB3aXRoCitoYXNoIGZyYWdtZW50cyB5b3VyIHJvdXRlIFVSSXMgbXVzdCBleGlzdC4gV2hl
biB0aGUgY2xpZW50IGVudGVycyBhIHBhZ2UsIHNheQoraHR0cDovL2Zvby5jb20vYmFyL2Jheiwg
dGhlIHdlYiBzZXJ2ZXIgbXVzdCByZXNwb25kIHdpdGggc29tZXRoaW5nIG1lYW5pbmdmdWwuCitV
c3VhbGx5IHRoaXMgbWVhbnMgdGhhdCB5b3VyIHdlYiBzZXJ2ZXIgY2hlY2tzIHRoZSBVUkkgcG9p
bnRzIHRvIHNvbWV0aGluZwordGhhdCwgaW4gYSBzZW5zZSwgZXhpc3RzLCBhbmQgdGhlbiBzZXJ2
ZXMgdGhlIGNsaWVudCB0aGUgSmF2YVNjcmlwdAorYXBwbGljYXRpb24uCisKK0lmIHlvdSdyZSBh
ZnRlciBhIHNpbmdsZS1wYWdlIGFwcGxpY2F0aW9uIHlvdSBjYW4gbm90IHVzZSBwbGFpbiBvbGQg
YDxhCitocmVmPSIvYmFyL2JheiI+YCB0YWdzIGZvciBuYXZpZ2F0aW9uIGFueW1vcmUuIFdoZW4g
c3VjaCBsaW5rIGlzIGNsaWNrZWQsIHdlYgorYnJvd3NlcnMgdHJ5IHRvIGFzayBmb3IgdGhlIHJl
c291cmNlIGZyb20gc2VydmVyIHdoaWNoIGlzIG5vdCBvZiBjb3Vyc2UgZGVzaXJlZAorZm9yIGEg
c2luZ2xlLXBhZ2UgYXBwbGljYXRpb24uIEluc3RlYWQgeW91IG5lZWQgdG8gdXNlIGUuZy4gY2xp
Y2sgaGFuZGxlcnMgYW5kCitjYWxsIHRoZSBgc2V0Um91dGUoKWAgbWV0aG9kIHlvdXJzZWxmLgor
CisjIyBBdHRhY2ggUHJvcGVydGllcyBUbyBgdGhpc2AKKworKipBdmFpbGFibGUgaW4gdGhlIGh0
dHAgcm91dGVyIG9ubHkuKiogR2VuZXJhbGx5LCB0aGUgYHRoaXNgIG9iamVjdCBib3VuZCB0bwor
cm91dGUgaGFuZGxlcnMsIHdpbGwgY29udGFpbiB0aGUgcmVxdWVzdCBpbiBgdGhpcy5yZXFgIGFu
ZCB0aGUgcmVzcG9uc2UgaW4KK2B0aGlzLnJlc2AuIE9uZSBtYXkgYXR0YWNoIGFkZGl0aW9uYWwg
cHJvcGVydGllcyB0byBgdGhpc2Agd2l0aCB0aGUKK2Byb3V0ZXIuYXR0YWNoYCBtZXRob2Q6CisK
K2BgYGpzCisgIHZhciBkaXJlY3RvciA9IHJlcXVpcmUoJ2RpcmVjdG9yJyk7CisKKyAgdmFyIHJv
dXRlciA9IG5ldyBkaXJlY3Rvci5odHRwLlJvdXRlcigpLmNvbmZpZ3VyZShvcHRpb25zKTsKKwor
ICAvLworICAvLyBBdHRhY2ggcHJvcGVydGllcyB0byBgdGhpc2AKKyAgLy8KKyAgcm91dGVyLmF0
dGFjaChmdW5jdGlvbiAoKSB7CisgICAgdGhpcy5kYXRhID0gWzEsMiwzXTsKKyAgfSk7CisKKyAg
Ly8KKyAgLy8gQWNjZXNzIHByb3BlcnRpZXMgYXR0YWNoZWQgdG8gYHRoaXNgIGluIHlvdXIgcm91
dGVzIQorICAvLworICByb3V0ZXIuZ2V0KCcvaGVsbG8nLCBmdW5jdGlvbiAoKSB7CisgICAgdGhp
cy5yZXMud3JpdGVIZWFkKDIwMCwgeyAnY29udGVudC10eXBlJzogJ3RleHQvcGxhaW4nIH0pOwor
CisgICAgLy8KKyAgICAvLyBSZXNwb25zZSB3aWxsIGJlIGBbMSwyLDNdYCEKKyAgICAvLworICAg
IHRoaXMucmVzLmVuZCh0aGlzLmRhdGEpOworICB9KTsKK2BgYAorCitUaGlzIEFQSSBtYXkgYmUg
dXNlZCB0byBhdHRhY2ggY29udmVuaWVuY2UgbWV0aG9kcyB0byB0aGUgYHRoaXNgIGNvbnRleHQg
b2YKK3JvdXRlIGhhbmRsZXJzLgorCisjIyBIVFRQIFN0cmVhbWluZyBhbmQgQm9keSBQYXJzaW5n
CisKK1doZW4geW91IGFyZSBwZXJmb3JtaW5nIEhUVFAgcm91dGluZyB0aGVyZSBhcmUgdHdvIGNv
bW1vbiBzY2VuYXJpb3M6CisKKyogQnVmZmVyIHRoZSByZXF1ZXN0IGJvZHkgYW5kIHBhcnNlIGl0
IGFjY29yZGluZyB0byB0aGUgYENvbnRlbnQtVHlwZWAgaGVhZGVyCisgICh1c3VhbGx5IGBhcHBs
aWNhdGlvbi9qc29uYCBvciBgYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkYCkuCisq
IFN0cmVhbSB0aGUgcmVxdWVzdCBib2R5IGJ5IG1hbnVhbGx5IGNhbGxpbmcgYC5waXBlYCBvciBs
aXN0ZW5pbmcgdG8gdGhlCisgIGBkYXRhYCBhbmQgYGVuZGAgZXZlbnRzLgorCitCeSBkZWZhdWx0
IGBkaXJlY3Rvci5odHRwLlJvdXRlcigpYCB3aWxsIGF0dGVtcHQgdG8gcGFyc2UgZWl0aGVyIHRo
ZSBgLmNodW5rc2AKK29yIGAuYm9keWAgcHJvcGVydGllcyBzZXQgb24gdGhlIHJlcXVlc3QgcGFy
YW1ldGVyIHBhc3NlZCB0bworYHJvdXRlci5kaXNwYXRjaChyZXF1ZXN0LCByZXNwb25zZSwgY2Fs
bGJhY2spYC4gVGhlIHJvdXRlciBpbnN0YW5jZSB3aWxsIGFsc28KK3dhaXQgZm9yIHRoZSBgZW5k
YCBldmVudCBiZWZvcmUgZmlyaW5nIGFueSByb3V0ZXMuCisKKyoqRGVmYXVsdCBCZWhhdmlvcioq
CisKK2BgYCBqcworICB2YXIgZGlyZWN0b3IgPSByZXF1aXJlKCdkaXJlY3RvcicpOworCisgIHZh
ciByb3V0ZXIgPSBuZXcgZGlyZWN0b3IuaHR0cC5Sb3V0ZXIoKTsKKworICByb3V0ZXIuZ2V0KCcv
JywgZnVuY3Rpb24gKCkgeworICAgIC8vCisgICAgLy8gVGhpcyB3aWxsIG5vdCB3b3JrLCBiZWNh
dXNlIGFsbCBvZiB0aGUgZGF0YQorICAgIC8vIGV2ZW50cyBhbmQgdGhlIGVuZCBldmVudCBoYXZl
IGFscmVhZHkgZmlyZWQuCisgICAgLy8KKyAgICB0aGlzLnJlcS5vbignZGF0YScsIGZ1bmN0aW9u
IChjaHVuaykgeworICAgICAgY29uc29sZS5sb2coY2h1bmspCisgICAgfSk7CisgIH0pOworYGBg
CisKK0luIFtmbGF0aXJvbl1bMl0sIGBkaXJlY3RvcmAgaXMgdXNlZCBpbiBjb25qdW5jdGlvbiB3
aXRoIFt1bmlvbl1bM10gd2hpY2ggdXNlcworYSBgQnVmZmVyZWRTdHJlYW1gIHByb3h5IHRvIHRo
ZSByYXcgYGh0dHAuUmVxdWVzdGAgaW5zdGFuY2UuIFt1bmlvbl1bM10gd2lsbAorc2V0IHRoZSBg
cmVxLmNodW5rc2AgcHJvcGVydHkgZm9yIHlvdSBhbmQgZGlyZWN0b3Igd2lsbCBhdXRvbWF0aWNh
bGx5IHBhcnNlIHRoZQorYm9keS4gSWYgeW91IHdpc2ggdG8gcGVyZm9ybSB0aGlzIGJ1ZmZlcmlu
ZyB5b3Vyc2VsZiBkaXJlY3RseSB3aXRoIGBkaXJlY3RvcmAKK3lvdSBjYW4gdXNlIGEgc2ltcGxl
IHJlcXVlc3QgaGFuZGxlciBpbiB5b3VyIGh0dHAgc2VydmVyOgorCitgYGAganMKKyAgdmFyIGh0
dHAgPSByZXF1aXJlKCdodHRwJyksCisgICAgICBkaXJlY3RvciA9IHJlcXVpcmUoJ2RpcmVjdG9y
Jyk7CisKKyAgdmFyIHJvdXRlciA9IG5ldyBkaXJlY3Rvci5odHRwLlJvdXRlcigpOworCisgIHZh
ciBzZXJ2ZXIgPSBodHRwLmNyZWF0ZVNlcnZlcihmdW5jdGlvbiAocmVxLCByZXMpIHsKKyAgICBy
ZXEuY2h1bmtzID0gW107CisgICAgcmVxLm9uKCdkYXRhJywgZnVuY3Rpb24gKGNodW5rKSB7Cisg
ICAgICByZXEuY2h1bmtzLnB1c2goY2h1bmsudG9TdHJpbmcoKSk7CisgICAgfSk7CisKKyAgICBy
b3V0ZXIuZGlzcGF0Y2gocmVxLCByZXMsIGZ1bmN0aW9uIChlcnIpIHsKKyAgICAgIGlmIChlcnIp
IHsKKyAgICAgICAgcmVzLndyaXRlSGVhZCg0MDQpOworICAgICAgICByZXMuZW5kKCk7CisgICAg
ICB9CisKKyAgICAgIGNvbnNvbGUubG9nKCdTZXJ2ZWQgJyArIHJlcS51cmwpOworICAgIH0pOwor
ICB9KTsKKworICByb3V0ZXIucG9zdCgnLycsIGZ1bmN0aW9uICgpIHsKKyAgICB0aGlzLnJlcy53
cml0ZUhlYWQoMjAwLCB7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSkKKyAg
ICB0aGlzLnJlcy5lbmQoSlNPTi5zdHJpbmdpZnkodGhpcy5yZXEuYm9keSkpOworICB9KTsKK2Bg
YAorCisqKlN0cmVhbWluZyBTdXBwb3J0KioKKworSWYgeW91IHdpc2ggdG8gZ2V0IGFjY2VzcyB0
byB0aGUgcmVxdWVzdCBzdHJlYW0gYmVmb3JlIHRoZSBgZW5kYCBldmVudCBpcworZmlyZWQsIHlv
dSBjYW4gcGFzcyB0aGUgYHsgc3RyZWFtOiB0cnVlIH1gIG9wdGlvbnMgdG8gdGhlIHJvdXRlLgor
CitgYGAganMKKyAgdmFyIGRpcmVjdG9yID0gcmVxdWlyZSgnZGlyZWN0b3InKTsKKworICB2YXIg
cm91dGVyID0gbmV3IGRpcmVjdG9yLmh0dHAuUm91dGVyKCk7CisKKyAgcm91dGVyLmdldCgnLycs
IHsgc3RyZWFtOiB0cnVlIH0sIGZ1bmN0aW9uICgpIHsKKyAgICAvLworICAgIC8vIFRoaXMgd2ls
bCB3b3JrIGJlY2F1c2UgdGhlIHJvdXRlIGhhbmRsZXIgaXMgaW52b2tlZAorICAgIC8vIGltbWVk
aWF0ZWx5IHdpdGhvdXQgd2FpdGluZyBmb3IgdGhlIGBlbmRgIGV2ZW50LgorICAgIC8vCisgICAg
dGhpcy5yZXEub24oJ2RhdGEnLCBmdW5jdGlvbiAoY2h1bmspIHsKKyAgICAgIGNvbnNvbGUubG9n
KGNodW5rKTsKKyAgICB9KTsKKyAgfSk7CitgYGAKKworIyMgSW5zdGFuY2UgbWV0aG9kcworCisj
IyMgY29uZmlndXJlKG9wdGlvbnMpCisKKyogYG9wdGlvbnNgIHtPYmplY3R9OiBPcHRpb25zIHRv
IGNvbmZpZ3VyZSB0aGlzIGluc3RhbmNlIHdpdGguCisKK0NvbmZpZ3VyZXMgdGhlIFJvdXRlciBp
bnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgYG9wdGlvbnNgLiBTZWUKK1tDb25maWd1cmF0aW9u
XSgjY29uZmlndXJhdGlvbikgZm9yIG1vcmUgZG9jdW1lbnRhdGlvbi4KKworIyMjIHBhcmFtKHRv
a2VuLCBtYXRjaGVyKQorCisqIHRva2VuIHtzdHJpbmd9OiBOYW1lZCBwYXJhbWV0ZXIgdG9rZW4g
dG8gc2V0IHRvIHRoZSBzcGVjaWZpZWQgYG1hdGNoZXJgCisqIG1hdGNoZXIge3N0cmluZ3xSZWdl
eHB9OiBNYXRjaGVyIGZvciB0aGUgc3BlY2lmaWVkIGB0b2tlbmAuCisKK0FkZHMgYSByb3V0ZSBm
cmFnbWVudCBmb3IgdGhlIGdpdmVuIHN0cmluZyBgdG9rZW5gIHRvIHRoZSBzcGVjaWZpZWQgcmVn
ZXgKK2BtYXRjaGVyYCB0byB0aGlzIFJvdXRlciBpbnN0YW5jZS4gU2VlIFtVUkwgUGFyYW1ldGVy
c10oI3VybC1wYXJhbWV0ZXJzKSBmb3IgbW9yZQorZG9jdW1lbnRhdGlvbi4KKworIyMjIG9uKG1l
dGhvZCwgcGF0aCwgcm91dGUpCisKKyogYG1ldGhvZGAge3N0cmluZ306IE1ldGhvZCB0byBpbnNl
cnQgd2l0aGluIHRoZSBSb3V0aW5nIFRhYmxlIChlLmcuIGBvbmAsCisgIGBnZXRgLCBldGMuKS4K
KyogYHBhdGhgIHtzdHJpbmd9OiBQYXRoIHdpdGhpbiB0aGUgUm91dGluZyBUYWJsZSB0byBzZXQg
dGhlIGByb3V0ZWAgdG8uCisqIGByb3V0ZWAge2Z1bmN0aW9ufEFycmF5fTogUm91dGUgaGFuZGxl
ciB0byBpbnZva2UgZm9yIHRoZSBgbWV0aG9kYCBhbmQgYHBhdGhgLgorCitBZGRzIHRoZSBgcm91
dGVgIGhhbmRsZXIgZm9yIHRoZSBzcGVjaWZpZWQgYG1ldGhvZGAgYW5kIGBwYXRoYCB3aXRoaW4g
dGhlCitbUm91dGluZyBUYWJsZV0oI3JvdXRpbmctdGFibGUpLgorCisjIyMgcGF0aChwYXRoLCBy
b3V0ZXNGbikKKworKiBgcGF0aGAge3N0cmluZ3xSZWdleHB9OiBTY29wZSB3aXRoaW4gdGhlIFJv
dXRpbmcgVGFibGUgdG8gaW52b2tlIHRoZQorICBgcm91dGVzRm5gIHdpdGhpbi4KKyogYHJvdXRl
c0ZuYCB7ZnVuY3Rpb259OiBBZGhvYyBSb3V0aW5nIGZ1bmN0aW9uIHdpdGggY2FsbHMgdG8gYHRo
aXMub24oKWAsCisgIGB0aGlzLmdldCgpYCBldGMuCisKK0ludm9rZXMgdGhlIGByb3V0ZXNGbmAg
d2l0aGluIHRoZSBzY29wZSBvZiB0aGUgc3BlY2lmaWVkIGBwYXRoYCBmb3IgdGhpcyBSb3V0ZXIK
K2luc3RhbmNlLgorCisjIyMgZGlzcGF0Y2gobWV0aG9kLCBwYXRoWywgY2FsbGJhY2tdKQorCisq
IG1ldGhvZCB7c3RyaW5nfTogTWV0aG9kIHRvIGludm9rZSBoYW5kbGVycyBmb3Igd2l0aGluIHRo
ZSBSb3V0aW5nIFRhYmxlCisqIHBhdGgge3N0cmluZ306IFBhdGggd2l0aGluIHRoZSBSb3V0aW5n
IFRhYmxlIHRvIG1hdGNoCisqIGNhbGxiYWNrIHtmdW5jdGlvbn06IEludm9rZWQgb25jZSBhbGwg
cm91dGUgaGFuZGxlcnMgaGF2ZSBiZWVuIGNhbGxlZC4KKworRGlzcGF0Y2hlcyB0aGUgcm91dGUg
aGFuZGxlcnMgbWF0Y2hlZCB3aXRoaW4gdGhlIFtSb3V0aW5nIFRhYmxlXSgjcm91dGluZy10YWJs
ZSkKK2ZvciB0aGlzIGluc3RhbmNlIGZvciB0aGUgc3BlY2lmaWVkIGBtZXRob2RgIGFuZCBgcGF0
aGAuCisKKyMjIyBtb3VudChyb3V0ZXMsIHBhdGgpCisKKyogcm91dGVzIHtvYmplY3R9OiBQYXJ0
aWFsIHJvdXRpbmcgdGFibGUgdG8gaW5zZXJ0IGludG8gdGhpcyBpbnN0YW5jZS4KKyogcGF0aCB7
c3RyaW5nfFJlZ2V4cH06IFBhdGggd2l0aGluIHRoZSBSb3V0aW5nIFRhYmxlIHRvIGluc2VydCB0
aGUgYHJvdXRlc2AKKyAgaW50by4KKworSW5zZXJ0cyB0aGUgcGFydGlhbCBbUm91dGluZyBUYWJs
ZV0oI3JvdXRpbmctdGFibGUpLCBgcm91dGVzYCwgaW50byB0aGUgUm91dGluZworVGFibGUgZm9y
IHRoaXMgUm91dGVyIGluc3RhbmNlIGF0IHRoZSBzcGVjaWZpZWQgYHBhdGhgLgorCisjIyBJbnN0
YW5jZSBtZXRob2RzIChDbGllbnQtc2lkZSBvbmx5KQorCisjIyMgaW5pdChbcmVkaXJlY3RdKQor
CisqIGByZWRpcmVjdGAge1N0cmluZ306IFRoaXMgdmFsdWUgd2lsbCBiZSB1c2VkIGlmICcvIy8n
IGlzIG5vdCBmb3VuZCBpbiB0aGUKKyAgVVJMLiAoZS5nLiwgaW5pdCgnLycpIHdpbGwgcmVzb2x2
ZSB0byAnLyMvJywgaW5pdCgnZm9vJykgd2lsbCByZXNvbHZlIHRvCisgICcvI2ZvbycpLgorCitJ
bml0aWFsaXplIHRoZSByb3V0ZXIsIHN0YXJ0IGxpc3RlbmluZyBmb3IgY2hhbmdlcyB0byB0aGUg
VVJMLgorCisjIyMgZ2V0Um91dGUoW2luZGV4XSkKKworKiBgaW5kZXhgIHtOdW1iZXJ9OiBUaGUg
aGFzaCB2YWx1ZSBpcyBkaXZpZGVkIGJ5IGZvcndhcmQgc2xhc2hlcywgZWFjaCBzZWN0aW9uCisg
IHRoZW4gaGFzIGFuIGluZGV4LCBpZiB0aGlzIGlzIHByb3ZpZGVkLCBvbmx5IHRoYXQgc2VjdGlv
biBvZiB0aGUgcm91dGUgd2lsbAorICBiZSByZXR1cm5lZC4KKworUmV0dXJucyB0aGUgZW50aXJl
IHJvdXRlIG9yIGp1c3QgYSBzZWN0aW9uIG9mIGl0LgorCisjIyMgc2V0Um91dGUocm91dGUpCisK
KyogYHJvdXRlYCB7U3RyaW5nfTogU3VwcGx5IGEgcm91dGUgdmFsdWUsIHN1Y2ggYXMgYGhvbWUv
c3RhdHNgLgorCitTZXQgdGhlIGN1cnJlbnQgcm91dGUuCisKKyMjIyBzZXRSb3V0ZShzdGFydCwg
bGVuZ3RoKQorCisqIGBzdGFydGAge051bWJlcn0gLSBUaGUgcG9zaXRpb24gYXQgd2hpY2ggdG8g
c3RhcnQgcmVtb3ZpbmcgaXRlbXMuCisqIGBsZW5ndGhgIHtOdW1iZXJ9IC0gVGhlIG51bWJlciBv
ZiBpdGVtcyB0byByZW1vdmUgZnJvbSB0aGUgcm91dGUuCisKK1JlbW92ZSBhIHNlZ21lbnQgZnJv
bSB0aGUgY3VycmVudCByb3V0ZS4KKworIyMjIHNldFJvdXRlKGluZGV4LCB2YWx1ZSkKKworKiBg
aW5kZXhgIHtOdW1iZXJ9IC0gVGhlIGhhc2ggdmFsdWUgaXMgZGl2aWRlZCBieSBmb3J3YXJkIHNs
YXNoZXMsIGVhY2ggc2VjdGlvbgorICB0aGVuIGhhcyBhbiBpbmRleC4KKyogYHZhbHVlYCB7U3Ry
aW5nfSAtIFRoZSBuZXcgdmFsdWUgdG8gYXNzaWduIHRoZSB0aGUgcG9zaXRpb24gaW5kaWNhdGVk
IGJ5IHRoZQorICBmaXJzdCBwYXJhbWV0ZXIuCisKK1NldCBhIHNlZ21lbnQgb2YgdGhlIGN1cnJl
bnQgcm91dGUuCisKKyMgRnJlcXVlbnRseSBBc2tlZCBRdWVzdGlvbnMKKworIyMgV2hhdCBBYm91
dCBTRU8/CisKK0lzIHVzaW5nIGEgQ2xpZW50LXNpZGUgcm91dGVyIGEgcHJvYmxlbSBmb3IgU0VP
PyBZZXMuIElmIGFkdmVydGlzaW5nIGlzIGEKK3JlcXVpcmVtZW50LCB5b3UgYXJlIHByb2JhYmx5
IGJ1aWxkaW5nIGEgIldlYiBQYWdlIiBhbmQgbm90IGEgIldlYgorQXBwbGljYXRpb24iLiBEaXJl
Y3RvciBvbiB0aGUgY2xpZW50IGlzIG1lYW50IGZvciBzY3JpcHQtaGVhdnkgV2ViCitBcHBsaWNh
dGlvbnMuCisKKyMjIyMjIExJQ0VOU0U6IE1JVAorIyMjIyMgQXV0aG9yOiBbQ2hhcmxpZSBSb2Ji
aW5zXShodHRwczovL2dpdGh1Yi5jb20vaW5kZXh6ZXJvKQorIyMjIyMgQ29udHJpYnV0b3JzOiBb
UGFvbG8gRnJhZ29tZW5pXShodHRwczovL2dpdGh1Yi5jb20vaGlqMW54KQorCitbMF06IGh0dHA6
Ly9naXRodWIuY29tL2ZsYXRpcm9uL2RpcmVjdG9yCitbMV06IGh0dHBzOi8vZ2l0aHViLmNvbS9m
bGF0aXJvbi9kaXJlY3Rvci9ibG9iL21hc3Rlci9idWlsZC9kaXJlY3Rvci5taW4uanMKK1syXTog
aHR0cDovL2dpdGh1Yi5jb20vZmxhdGlyb24vZmxhdGlyb24KK1szXTogaHR0cDovL2dpdGh1Yi5j
b20vZmxhdGlyb24vdW5pb24KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9k
dWxlcy9kaXJlY3Rvci9iaW4vYnVpbGQgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMv
ZGlyZWN0b3IvYmluL2J1aWxkCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUwNTQyMjZmYWQ4MzAyMzRiOTYzMWI2Zjhi
YzQzN2FlN2UxN2E5OTAKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2Rl
X21vZHVsZXMvZGlyZWN0b3IvYmluL2J1aWxkCkBAIC0wLDAgKzEsODEgQEAKKyMhL3Vzci9iaW4v
ZW52IG5vZGUKKwordmFyIENvZGVzdXJnZW9uID0gcmVxdWlyZSgnY29kZXN1cmdlb24nKS5Db2Rl
c3VyZ2VvbjsKK3ZhciBzdXJnZW9uID0gbmV3IENvZGVzdXJnZW9uKCk7CisKK3ZhciBwYXRoICAg
ID0gcmVxdWlyZSgncGF0aCcpOworCit2YXIgcm9vdCAgICA9IHBhdGguam9pbihfX2Rpcm5hbWUs
ICcuLicpOwordmFyIGxpYiAgICAgPSBwYXRoLmpvaW4ocm9vdCwgJ2xpYicsICdkaXJlY3Rvcicp
OworCisvLworLy8gRGlzdGlsbCBhbmQgcGFja2FnZSB0aGUgYnJvd3NlciB2ZXJzaW9uLgorLy8K
K3N1cmdlb24KKyAgLy8KKyAgLmNvbmZpZ3VyZSh7CisgICAgcGFja2FnZTogcm9vdCArICcvcGFj
a2FnZS5qc29uJywKKyAgICBvd25lcjogJ0NoYXJsaWUgUm9iYmlucywgUGFvbG8gRnJhZ29tZW5p
ICYgdGhlIENvbnRyaWJ1dG9ycyAoVXNpbmcgQ29kZXN1cmdlb24pLicsCisgICAgbm9WZXJzaW9u
OiB0cnVlCisgIH0pCisgIC5yZWFkKAorICAgIHBhdGguam9pbihsaWIsICdicm93c2VyLmpzJykK
KyAgKQorICAvLworICAvLyBXZSB3YW50IGV2ZXJ5dGhpbmcgc28gZmFyLiBzcGVjaWZ5IGV4dHJh
Y3Qgd2l0aCBubworICAvLyBwYXJhbWV0ZXJzIHRvIGdldCBldmVyeXRoaW5nIGludG8gdGhlIG91
dHB1dCBidWZmZXIuCisgIC8vCisgLmV4dHJhY3QoKQorICAvLworICAvLyBDbGVhciB0aGUgaW5w
dXQgc28gZmFyLCBidXQgZG9uJ3QgY2xlYXIgdGhlIG91dHB1dC4KKyAgLy8KKyAgLmNsZWFyKCdp
bnB1dHMnKQorICAvLworICAvLyBSZWFkIHRoZSBgcm91dGVyLmpzYCBmaWxlCisgIC8vCisgIC5y
ZWFkKAorICAgIHBhdGguam9pbihsaWIsICdyb3V0ZXIuanMnKQorICApCisgIC8vCisgIC8vIFRo
ZSBjdXJyZW50IGlucHV0IGJ1ZmZlciBjb250YWlucyBzdHVmZiB0aGF0IHdlIGRvbnQKKyAgLy8g
d2FudCBpbiB0aGUgYnJvd3NlciBidWlsZCwgc28gbGV0J3MgY2hlcnJ5IHBpY2sgZnJvbQorICAv
LyB0aGUgYnVmZmVyLgorICAvLworICAuZXh0cmFjdCgKKyAgICAnX2V2ZXJ5JywKKyAgICAnX2Zs
YXR0ZW4nLAorICAgICdfYXN5bmNFdmVyeVNlcmllcycsCisgICAgJ3BhcmFtaWZ5U3RyaW5nJywK
KyAgICAncmVnaWZ5U3RyaW5nJywKKyAgICAndGVybWluYXRvcicsCisgICAgJ1FVRVJZX1NFUEFS
QVRPUicsCisgICAgJ1JvdXRlci5wcm90b3R5cGUuY29uZmlndXJlJywKKyAgICAnUm91dGVyLnBy
b3RvdHlwZS5wYXJhbScsCisgICAgJ1JvdXRlci5wcm90b3R5cGUub24nLAorICAgICdSb3V0ZXIu
cHJvdG90eXBlLnBhdGgnLAorICAgICdSb3V0ZXIucHJvdG90eXBlLmRpc3BhdGNoJywKKyAgICAn
Um91dGVyLnByb3RvdHlwZS5pbnZva2UnLAorICAgICdSb3V0ZXIucHJvdG90eXBlLnRyYXZlcnNl
JywKKyAgICAnUm91dGVyLnByb3RvdHlwZS5pbnNlcnQnLAorICAgICdSb3V0ZXIucHJvdG90eXBl
Lmluc2VydEV4JywKKyAgICAnUm91dGVyLnByb3RvdHlwZS5leHRlbmQnLAorICAgICdSb3V0ZXIu
cHJvdG90eXBlLnJ1bmxpc3QnLAorICAgICdSb3V0ZXIucHJvdG90eXBlLm1vdW50JworICApCisg
IC8vCisgIC8vIFdyYXAgZXZlcnl0aGluZyB0aGF0IGlzIGluIHRoZSBjdXJyZW50IGJ1ZmZlciB3
aXRoIGEKKyAgLy8gY2xvc3VyZSBzbyB0aGF0IHdlIGRvbid0IGdldCBhbnkgY29sbGlzaW9ucyB3
aXRoIG90aGVyCisgIC8vIGxpYnJhcmllcy4KKyAgLy8KKyAgLndyYXAoKQorICAvLworICAvLyBX
cml0ZSB0aGUgZGVidWdnYWJsZSB2ZXJzaW9uIG9mIHRoZSBmaWxlLiBUaGlzIGZpbGUgd2lsbAor
ICAvLyBnZXQgcmVuYW1lZCB0byBpbmNsdWRlIHRoZSB2ZXJzaW9uIGZyb20gdGhlIHBhY2thZ2Uu
anNvbi4KKyAgLy8KKyAgLndyaXRlKHJvb3QgKyAnL2J1aWxkL2RpcmVjdG9yLmpzJykKKyAgLy8K
KyAgLy8gTWFrZSBhIG1pbmlmaWVkIHZlcnNpb24gZm9yIHByb2R1Y3Rpb24gdXNlLgorICAvLwor
ICAudWdsaWZ5KCkKKyAgLndyaXRlKHJvb3QgKyAnL2J1aWxkL2RpcmVjdG9yLm1pbi5qcycpCis7
CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvZGlyZWN0b3IvYm93
ZXIuanNvbiBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9ib3dlci5q
c29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmY5MzliYjQ3MGVkNjRkYjExMWFhYThjNjMzZDIzMmZhOWViZmNmMDQK
LS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvZGlyZWN0
b3IvYm93ZXIuanNvbgpAQCAtMCwwICsxLDkgQEAKK3sKKyAgIm5hbWUiOiAiZGlyZWN0b3IiLAor
ICAidmVyc2lvbiI6ICIxLjIuNyIsCisgICJkZXBlbmRlbmNpZXMiOiB7fSwKKyAgIm1haW4iOiAi
YnVpbGQvZGlyZWN0b3IuanMiLAorICAic2NyaXB0cyI6IFsKKyAgICAiYnVpbGQvZGlyZWN0b3Iu
anMiCisgIF0KK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9k
aXJlY3Rvci9leGFtcGxlcy9odHRwLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVz
L2RpcmVjdG9yL2V4YW1wbGVzL2h0dHAuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGU3YTFkNzIwOGNjNzM4Yzdj
YmYzYWY2YmQ5ZjhiMzFhNDhhOTkyYwotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Jl
YWN0L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9leGFtcGxlcy9odHRwLmpzCkBAIC0wLDAgKzEsMzMg
QEAKK3ZhciBodHRwID0gcmVxdWlyZSgnaHR0cCcpLAorICAgIGRpcmVjdG9yID0gcmVxdWlyZSgn
Li4vbGliL2RpcmVjdG9yJyk7CisKK3ZhciByb3V0ZXIgPSBuZXcgZGlyZWN0b3IuaHR0cC5Sb3V0
ZXIoKTsKKwordmFyIHNlcnZlciA9IGh0dHAuY3JlYXRlU2VydmVyKGZ1bmN0aW9uIChyZXEsIHJl
cykgeworICByZXEuY2h1bmtzID0gW107CisgIHJlcS5vbignZGF0YScsIGZ1bmN0aW9uIChjaHVu
aykgeworICAgIHJlcS5jaHVua3MucHVzaChjaHVuay50b1N0cmluZygpKTsKKyAgfSk7CisKKyAg
cm91dGVyLmRpc3BhdGNoKHJlcSwgcmVzLCBmdW5jdGlvbiAoZXJyKSB7CisgICAgaWYgKGVycikg
eworICAgICAgcmVzLndyaXRlSGVhZCg0MDQpOworICAgICAgcmVzLmVuZCgpOworICAgIH0KKwor
ICAgIGNvbnNvbGUubG9nKCdTZXJ2ZWQgJyArIHJlcS51cmwpOworICB9KTsKK30pOworCityb3V0
ZXIuZ2V0KC9mb28vLCBmdW5jdGlvbiAoKSB7CisgIHRoaXMucmVzLndyaXRlSGVhZCgyMDAsIHsg
J0NvbnRlbnQtVHlwZSc6ICd0ZXh0L3BsYWluJyB9KTsKKyAgdGhpcy5yZXMuZW5kKCdoZWxsbyB3
b3JsZFxuJyk7Cit9KTsKKworcm91dGVyLnBvc3QoL2Zvby8sIGZ1bmN0aW9uICgpIHsKKyAgdGhp
cy5yZXMud3JpdGVIZWFkKDIwMCwgeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24n
IH0pOworICB0aGlzLnJlcy5lbmQoSlNPTi5zdHJpbmdpZnkodGhpcy5yZXEuYm9keSkpOworfSk7
CisKK3NlcnZlci5saXN0ZW4oODA4MCk7Citjb25zb2xlLmxvZygndmFuaWxsYSBodHRwIHNlcnZl
ciB3aXRoIGRpcmVjdG9yIHJ1bm5pbmcgb24gODA4MCcpOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL2xpYi9kaXJlY3Rvci5qcyBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL3JlYWN0L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9saWIvZGlyZWN0b3IuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZjQzYWU4Mjc1MGY2NDc0NzI5YzYzNDlmNDdiNzBlOGFmOTgzNDE5MQotLS0gL2Rldi9udWxs
CisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9saWIvZGlyZWN0
b3IuanMKQEAgLTAsMCArMSw2IEBACisKKworCitleHBvcnRzLlJvdXRlciA9IHJlcXVpcmUoJy4v
ZGlyZWN0b3Ivcm91dGVyJykuUm91dGVyOworZXhwb3J0cy5odHRwICAgPSByZXF1aXJlKCcuL2Rp
cmVjdG9yL2h0dHAnKTsKK2V4cG9ydHMuY2xpICAgID0gcmVxdWlyZSgnLi9kaXJlY3Rvci9jbGkn
KTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9s
aWIvZGlyZWN0b3IvYnJvd3Nlci5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9k
aXJlY3Rvci9saWIvZGlyZWN0b3IvYnJvd3Nlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZTQ3MjkzMjViNzEy
YzUzOTQyMGMwOTVmYTkzYmU1MTIyMzcxYTRlCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL2xpYi9kaXJlY3Rvci9icm93c2VyLmpzCkBA
IC0wLDAgKzEsMjg2IEBACisvKgorICogYnJvd3Nlci5qczogQnJvd3NlciBzcGVjaWZpYyBmdW5j
dGlvbmFsaXR5IGZvciBkaXJlY3Rvci4KKyAqCisgKiAoQykgMjAxMSwgQ2hhcmxpZSBSb2JiaW5z
LCBQYW9sbyBGcmFnb21lbmksICYgdGhlIENvbnRyaWJ1dG9ycy4KKyAqIE1JVCBMSUNFTlNFCisg
KgorICovCisKK3ZhciBkbG9jID0gZG9jdW1lbnQubG9jYXRpb247CisKK2Z1bmN0aW9uIGRsb2NI
YXNoRW1wdHkoKSB7CisgIC8vIE5vbi1JRSBicm93c2VycyByZXR1cm4gJycgd2hlbiB0aGUgYWRk
cmVzcyBiYXIgc2hvd3MgJyMnOyBEaXJlY3RvcidzIGxvZ2ljCisgIC8vIGFzc3VtZXMgYm90aCBt
ZWFuIGVtcHR5LgorICByZXR1cm4gZGxvYy5oYXNoID09PSAnJyB8fCBkbG9jLmhhc2ggPT09ICcj
JzsKK30KKwordmFyIGxpc3RlbmVyID0geworICBtb2RlOiAnbW9kZXJuJywKKyAgaGFzaDogZGxv
Yy5oYXNoLAorICBoaXN0b3J5OiBmYWxzZSwKKworICBjaGVjazogZnVuY3Rpb24gKCkgeworICAg
IHZhciBoID0gZGxvYy5oYXNoOworICAgIGlmIChoICE9IHRoaXMuaGFzaCkgeworICAgICAgdGhp
cy5oYXNoID0gaDsKKyAgICAgIHRoaXMub25IYXNoQ2hhbmdlZCgpOworICAgIH0KKyAgfSwKKwor
ICBmaXJlOiBmdW5jdGlvbiAoKSB7CisgICAgaWYgKHRoaXMubW9kZSA9PT0gJ21vZGVybicpIHsK
KyAgICAgIHRoaXMuaGlzdG9yeSA9PT0gdHJ1ZSA/IHdpbmRvdy5vbnBvcHN0YXRlKCkgOiB3aW5k
b3cub25oYXNoY2hhbmdlKCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgdGhpcy5vbkhhc2hD
aGFuZ2VkKCk7CisgICAgfQorICB9LAorCisgIGluaXQ6IGZ1bmN0aW9uIChmbiwgaGlzdG9yeSkg
eworICAgIHZhciBzZWxmID0gdGhpczsKKyAgICB0aGlzLmhpc3RvcnkgPSBoaXN0b3J5OworCisg
ICAgaWYgKCFSb3V0ZXIubGlzdGVuZXJzKSB7CisgICAgICBSb3V0ZXIubGlzdGVuZXJzID0gW107
CisgICAgfQorCisgICAgZnVuY3Rpb24gb25jaGFuZ2Uob25DaGFuZ2VFdmVudCkgeworICAgICAg
Zm9yICh2YXIgaSA9IDAsIGwgPSBSb3V0ZXIubGlzdGVuZXJzLmxlbmd0aDsgaSA8IGw7IGkrKykg
eworICAgICAgICBSb3V0ZXIubGlzdGVuZXJzW2ldKG9uQ2hhbmdlRXZlbnQpOworICAgICAgfQor
ICAgIH0KKworICAgIC8vbm90ZSBJRTggaXMgYmVpbmcgY291bnRlZCBhcyAnbW9kZXJuJyBiZWNh
dXNlIGl0IGhhcyB0aGUgaGFzaGNoYW5nZSBldmVudAorICAgIGlmICgnb25oYXNoY2hhbmdlJyBp
biB3aW5kb3cgJiYgKGRvY3VtZW50LmRvY3VtZW50TW9kZSA9PT0gdW5kZWZpbmVkCisgICAgICB8
fCBkb2N1bWVudC5kb2N1bWVudE1vZGUgPiA3KSkgeworICAgICAgLy8gQXQgbGVhc3QgZm9yIG5v
dyBIVE1MNSBoaXN0b3J5IGlzIGF2YWlsYWJsZSBmb3IgJ21vZGVybicgYnJvd3NlcnMgb25seQor
ICAgICAgaWYgKHRoaXMuaGlzdG9yeSA9PT0gdHJ1ZSkgeworICAgICAgICAvLyBUaGVyZSBpcyBh
biBvbGQgYnVnIGluIENocm9tZSB0aGF0IGNhdXNlcyBvbnBvcHN0YXRlIHRvIGZpcmUgZXZlbgor
ICAgICAgICAvLyB1cG9uIGluaXRpYWwgcGFnZSBsb2FkLiBTaW5jZSB0aGUgaGFuZGxlciBpcyBy
dW4gbWFudWFsbHkgaW4gaW5pdCgpLAorICAgICAgICAvLyB0aGlzIHdvdWxkIGNhdXNlIENocm9t
ZSB0byBydW4gaXQgdHdpc2UuIEN1cnJlbnRseSB0aGUgb25seQorICAgICAgICAvLyB3b3JrYXJv
dW5kIHNlZW1zIHRvIGJlIHRvIHNldCB0aGUgaGFuZGxlciBhZnRlciB0aGUgaW5pdGlhbCBwYWdl
IGxvYWQKKyAgICAgICAgLy8gaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nocm9taXVtL2lzc3Vl
cy9kZXRhaWw/aWQ9NjMwNDAKKyAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAg
ICAgICB3aW5kb3cub25wb3BzdGF0ZSA9IG9uY2hhbmdlOworICAgICAgICB9LCA1MDApOworICAg
ICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHdpbmRvdy5vbmhhc2hjaGFuZ2UgPSBvbmNoYW5n
ZTsKKyAgICAgIH0KKyAgICAgIHRoaXMubW9kZSA9ICdtb2Rlcm4nOworICAgIH0KKyAgICBlbHNl
IHsKKyAgICAgIC8vCisgICAgICAvLyBJRSBzdXBwb3J0LCBiYXNlZCBvbiBhIGNvbmNlcHQgYnkg
RXJpayBBcnZpZHNvbiAuLi4KKyAgICAgIC8vCisgICAgICB2YXIgZnJhbWUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdpZnJhbWUnKTsKKyAgICAgIGZyYW1lLmlkID0gJ3N0YXRlLWZyYW1lJzsK
KyAgICAgIGZyYW1lLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CisgICAgICBkb2N1bWVudC5ib2R5
LmFwcGVuZENoaWxkKGZyYW1lKTsKKyAgICAgIHRoaXMud3JpdGVGcmFtZSgnJyk7CisKKyAgICAg
IGlmICgnb25wcm9wZXJ0eWNoYW5nZScgaW4gZG9jdW1lbnQgJiYgJ2F0dGFjaEV2ZW50JyBpbiBk
b2N1bWVudCkgeworICAgICAgICBkb2N1bWVudC5hdHRhY2hFdmVudCgnb25wcm9wZXJ0eWNoYW5n
ZScsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICBpZiAoZXZlbnQucHJvcGVydHlOYW1lID09PSAn
bG9jYXRpb24nKSB7CisgICAgICAgICAgICBzZWxmLmNoZWNrKCk7CisgICAgICAgICAgfQorICAg
ICAgICB9KTsKKyAgICAgIH0KKworICAgICAgd2luZG93LnNldEludGVydmFsKGZ1bmN0aW9uICgp
IHsgc2VsZi5jaGVjaygpOyB9LCA1MCk7CisKKyAgICAgIHRoaXMub25IYXNoQ2hhbmdlZCA9IG9u
Y2hhbmdlOworICAgICAgdGhpcy5tb2RlID0gJ2xlZ2FjeSc7CisgICAgfQorCisgICAgUm91dGVy
Lmxpc3RlbmVycy5wdXNoKGZuKTsKKworICAgIHJldHVybiB0aGlzLm1vZGU7CisgIH0sCisKKyAg
ZGVzdHJveTogZnVuY3Rpb24gKGZuKSB7CisgICAgaWYgKCFSb3V0ZXIgfHwgIVJvdXRlci5saXN0
ZW5lcnMpIHsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2YXIgbGlzdGVuZXJzID0gUm91
dGVyLmxpc3RlbmVyczsKKworICAgIGZvciAodmFyIGkgPSBsaXN0ZW5lcnMubGVuZ3RoIC0gMTsg
aSA+PSAwOyBpLS0pIHsKKyAgICAgIGlmIChsaXN0ZW5lcnNbaV0gPT09IGZuKSB7CisgICAgICAg
IGxpc3RlbmVycy5zcGxpY2UoaSwgMSk7CisgICAgICB9CisgICAgfQorICB9LAorCisgIHNldEhh
c2g6IGZ1bmN0aW9uIChzKSB7CisgICAgLy8gTW96aWxsYSBhbHdheXMgYWRkcyBhbiBlbnRyeSB0
byB0aGUgaGlzdG9yeQorICAgIGlmICh0aGlzLm1vZGUgPT09ICdsZWdhY3knKSB7CisgICAgICB0
aGlzLndyaXRlRnJhbWUocyk7CisgICAgfQorCisgICAgaWYgKHRoaXMuaGlzdG9yeSA9PT0gdHJ1
ZSkgeworICAgICAgd2luZG93Lmhpc3RvcnkucHVzaFN0YXRlKHt9LCBkb2N1bWVudC50aXRsZSwg
cyk7CisgICAgICAvLyBGaXJlIGFuIG9ucG9wc3RhdGUgZXZlbnQgbWFudWFsbHkgc2luY2UgcHVz
aGluZyBkb2VzIG5vdCBvYnZpb3VzbHkKKyAgICAgIC8vIHRyaWdnZXIgdGhlIHBvcCBldmVudC4K
KyAgICAgIHRoaXMuZmlyZSgpOworICAgIH0gZWxzZSB7CisgICAgICBkbG9jLmhhc2ggPSAoc1sw
XSA9PT0gJy8nKSA/IHMgOiAnLycgKyBzOworICAgIH0KKyAgICByZXR1cm4gdGhpczsKKyAgfSwK
KworICB3cml0ZUZyYW1lOiBmdW5jdGlvbiAocykgeworICAgIC8vIElFIHN1cHBvcnQuLi4KKyAg
ICB2YXIgZiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdGF0ZS1mcmFtZScpOworICAgIHZh
ciBkID0gZi5jb250ZW50RG9jdW1lbnQgfHwgZi5jb250ZW50V2luZG93LmRvY3VtZW50OworICAg
IGQub3BlbigpOworICAgIGQud3JpdGUoIjxzY3JpcHQ+X2hhc2ggPSAnIiArIHMgKyAiJzsgb25s
b2FkID0gcGFyZW50Lmxpc3RlbmVyLnN5bmNIYXNoOzxzY3JpcHQ+Iik7CisgICAgZC5jbG9zZSgp
OworICB9LAorCisgIHN5bmNIYXNoOiBmdW5jdGlvbiAoKSB7CisgICAgLy8gSUUgc3VwcG9ydC4u
LgorICAgIHZhciBzID0gdGhpcy5faGFzaDsKKyAgICBpZiAocyAhPSBkbG9jLmhhc2gpIHsKKyAg
ICAgIGRsb2MuaGFzaCA9IHM7CisgICAgfQorICAgIHJldHVybiB0aGlzOworICB9LAorCisgIG9u
SGFzaENoYW5nZWQ6IGZ1bmN0aW9uICgpIHt9Cit9OworCit2YXIgUm91dGVyID0gZXhwb3J0cy5S
b3V0ZXIgPSBmdW5jdGlvbiAocm91dGVzKSB7CisgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBSb3V0
ZXIpKSByZXR1cm4gbmV3IFJvdXRlcihyb3V0ZXMpOworCisgIHRoaXMucGFyYW1zICAgPSB7fTsK
KyAgdGhpcy5yb3V0ZXMgICA9IHt9OworICB0aGlzLm1ldGhvZHMgID0gWydvbicsICdvbmNlJywg
J2FmdGVyJywgJ2JlZm9yZSddOworICB0aGlzLnNjb3BlICAgID0gW107CisgIHRoaXMuX21ldGhv
ZHMgPSB7fTsKKworICB0aGlzLl9pbnNlcnQgPSB0aGlzLmluc2VydDsKKyAgdGhpcy5pbnNlcnQg
PSB0aGlzLmluc2VydEV4OworCisgIHRoaXMuaGlzdG9yeVN1cHBvcnQgPSAod2luZG93Lmhpc3Rv
cnkgIT0gbnVsbCA/IHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZSA6IG51bGwpICE9IG51bGwKKwor
ICB0aGlzLmNvbmZpZ3VyZSgpOworICB0aGlzLm1vdW50KHJvdXRlcyB8fCB7fSk7Cit9OworCitS
b3V0ZXIucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAocikgeworICB2YXIgc2VsZiA9IHRoaXMK
KyAgICAsIHJvdXRlVG87CisgIHRoaXMuaGFuZGxlciA9IGZ1bmN0aW9uKG9uQ2hhbmdlRXZlbnQp
IHsKKyAgICB2YXIgbmV3VVJMID0gb25DaGFuZ2VFdmVudCAmJiBvbkNoYW5nZUV2ZW50Lm5ld1VS
TCB8fCB3aW5kb3cubG9jYXRpb24uaGFzaDsKKyAgICB2YXIgdXJsID0gc2VsZi5oaXN0b3J5ID09
PSB0cnVlID8gc2VsZi5nZXRQYXRoKCkgOiBuZXdVUkwucmVwbGFjZSgvLiojLywgJycpOworICAg
IHNlbGYuZGlzcGF0Y2goJ29uJywgdXJsLmNoYXJBdCgwKSA9PT0gJy8nID8gdXJsIDogJy8nICsg
dXJsKTsKKyAgfTsKKworICBsaXN0ZW5lci5pbml0KHRoaXMuaGFuZGxlciwgdGhpcy5oaXN0b3J5
KTsKKworICBpZiAodGhpcy5oaXN0b3J5ID09PSBmYWxzZSkgeworICAgIGlmIChkbG9jSGFzaEVt
cHR5KCkgJiYgcikgeworICAgICAgZGxvYy5oYXNoID0gcjsKKyAgICB9IGVsc2UgaWYgKCFkbG9j
SGFzaEVtcHR5KCkpIHsKKyAgICAgIHNlbGYuZGlzcGF0Y2goJ29uJywgJy8nICsgZGxvYy5oYXNo
LnJlcGxhY2UoL14oI1wvfCN8XC8pLywgJycpKTsKKyAgICB9CisgIH0KKyAgZWxzZSB7CisgICAg
aWYgKHRoaXMuY29udmVydF9oYXNoX2luX2luaXQpIHsKKyAgICAgIC8vIFVzZSBoYXNoIGFzIHJv
dXRlCisgICAgICByb3V0ZVRvID0gZGxvY0hhc2hFbXB0eSgpICYmIHIgPyByIDogIWRsb2NIYXNo
RW1wdHkoKSA/IGRsb2MuaGFzaC5yZXBsYWNlKC9eIy8sICcnKSA6IG51bGw7CisgICAgICBpZiAo
cm91dGVUbykgeworICAgICAgICB3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUoe30sIGRvY3Vt
ZW50LnRpdGxlLCByb3V0ZVRvKTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAv
LyBVc2UgY2Fub25pY2FsIHVybAorICAgICAgcm91dGVUbyA9IHRoaXMuZ2V0UGF0aCgpOworICAg
IH0KKworICAgIC8vIFJvdXRlciBoYXMgYmVlbiBpbml0aWFsaXplZCwgYnV0IGR1ZSB0byB0aGUg
Y2hyb21lIGJ1ZyBpdCB3aWxsIG5vdAorICAgIC8vIHlldCBhY3R1YWxseSByb3V0ZSBIVE1MNSBo
aXN0b3J5IHN0YXRlIGNoYW5nZXMuIFRodXMsIGRlY2lkZSBpZiBzaG91bGQgcm91dGUuCisgICAg
aWYgKHJvdXRlVG8gfHwgdGhpcy5ydW5faW5faW5pdCA9PT0gdHJ1ZSkgeworICAgICAgdGhpcy5o
YW5kbGVyKCk7CisgICAgfQorICB9CisKKyAgcmV0dXJuIHRoaXM7Cit9OworCitSb3V0ZXIucHJv
dG90eXBlLmV4cGxvZGUgPSBmdW5jdGlvbiAoKSB7CisgIHZhciB2ID0gdGhpcy5oaXN0b3J5ID09
PSB0cnVlID8gdGhpcy5nZXRQYXRoKCkgOiBkbG9jLmhhc2g7CisgIGlmICh2LmNoYXJBdCgxKSA9
PT0gJy8nKSB7IHY9di5zbGljZSgxKSB9CisgIHJldHVybiB2LnNsaWNlKDEsIHYubGVuZ3RoKS5z
cGxpdCgiLyIpOworfTsKKworUm91dGVyLnByb3RvdHlwZS5zZXRSb3V0ZSA9IGZ1bmN0aW9uIChp
LCB2LCB2YWwpIHsKKyAgdmFyIHVybCA9IHRoaXMuZXhwbG9kZSgpOworCisgIGlmICh0eXBlb2Yg
aSA9PT0gJ251bWJlcicgJiYgdHlwZW9mIHYgPT09ICdzdHJpbmcnKSB7CisgICAgdXJsW2ldID0g
djsKKyAgfQorICBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5nJykgeworICAgIHVybC5z
cGxpY2UoaSwgdiwgcyk7CisgIH0KKyAgZWxzZSB7CisgICAgdXJsID0gW2ldOworICB9CisKKyAg
bGlzdGVuZXIuc2V0SGFzaCh1cmwuam9pbignLycpKTsKKyAgcmV0dXJuIHVybDsKK307CisKKy8v
CisvLyAjIyMgZnVuY3Rpb24gaW5zZXJ0RXgobWV0aG9kLCBwYXRoLCByb3V0ZSwgcGFyZW50KQor
Ly8gIyMjIyBAbWV0aG9kIHtzdHJpbmd9IE1ldGhvZCB0byBpbnNlcnQgdGhlIHNwZWNpZmljIGBy
b3V0ZWAuCisvLyAjIyMjIEBwYXRoIHtBcnJheX0gUGFyc2VkIHBhdGggdG8gaW5zZXJ0IHRoZSBg
cm91dGVgIGF0LgorLy8gIyMjIyBAcm91dGUge0FycmF5fGZ1bmN0aW9ufSBSb3V0ZSBoYW5kbGVy
cyB0byBpbnNlcnQuCisvLyAjIyMjIEBwYXJlbnQge09iamVjdH0gKipPcHRpb25hbCoqIFBhcmVu
dCAicm91dGVzIiB0byBpbnNlcnQgaW50by4KKy8vIGluc2VydCBhIGNhbGxiYWNrIHRoYXQgd2ls
bCBvbmx5IG9jY3VyIG9uY2UgcGVyIHRoZSBtYXRjaGVkIHJvdXRlLgorLy8KK1JvdXRlci5wcm90
b3R5cGUuaW5zZXJ0RXggPSBmdW5jdGlvbihtZXRob2QsIHBhdGgsIHJvdXRlLCBwYXJlbnQpIHsK
KyAgaWYgKG1ldGhvZCA9PT0gIm9uY2UiKSB7CisgICAgbWV0aG9kID0gIm9uIjsKKyAgICByb3V0
ZSA9IGZ1bmN0aW9uKHJvdXRlKSB7CisgICAgICB2YXIgb25jZSA9IGZhbHNlOworICAgICAgcmV0
dXJuIGZ1bmN0aW9uKCkgeworICAgICAgICBpZiAob25jZSkgcmV0dXJuOworICAgICAgICBvbmNl
ID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIHJvdXRlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7Cisg
ICAgICB9OworICAgIH0ocm91dGUpOworICB9CisgIHJldHVybiB0aGlzLl9pbnNlcnQobWV0aG9k
LCBwYXRoLCByb3V0ZSwgcGFyZW50KTsKK307CisKK1JvdXRlci5wcm90b3R5cGUuZ2V0Um91dGUg
PSBmdW5jdGlvbiAodikgeworICB2YXIgcmV0ID0gdjsKKworICBpZiAodHlwZW9mIHYgPT09ICJu
dW1iZXIiKSB7CisgICAgcmV0ID0gdGhpcy5leHBsb2RlKClbdl07CisgIH0KKyAgZWxzZSBpZiAo
dHlwZW9mIHYgPT09ICJzdHJpbmciKXsKKyAgICB2YXIgaCA9IHRoaXMuZXhwbG9kZSgpOworICAg
IHJldCA9IGguaW5kZXhPZih2KTsKKyAgfQorICBlbHNlIHsKKyAgICByZXQgPSB0aGlzLmV4cGxv
ZGUoKTsKKyAgfQorCisgIHJldHVybiByZXQ7Cit9OworCitSb3V0ZXIucHJvdG90eXBlLmRlc3Ry
b3kgPSBmdW5jdGlvbiAoKSB7CisgIGxpc3RlbmVyLmRlc3Ryb3kodGhpcy5oYW5kbGVyKTsKKyAg
cmV0dXJuIHRoaXM7Cit9OworCitSb3V0ZXIucHJvdG90eXBlLmdldFBhdGggPSBmdW5jdGlvbiAo
KSB7CisgIHZhciBwYXRoID0gd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lOworICBpZiAocGF0aC5z
dWJzdHIoMCwgMSkgIT09ICcvJykgeworICAgIHBhdGggPSAnLycgKyBwYXRoOworICB9CisgIHJl
dHVybiBwYXRoOworfTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxl
cy9kaXJlY3Rvci9saWIvZGlyZWN0b3IvY2xpLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9t
b2R1bGVzL2RpcmVjdG9yL2xpYi9kaXJlY3Rvci9jbGkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjJkZjZkN2Zl
ZmZjMWE0YzA1NjlmNDk3NDg0NmNiMDI0ZWI3MDA3OAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9saWIvZGlyZWN0b3IvY2xpLmpzCkBA
IC0wLDAgKzEsNjUgQEAKKwordmFyIHV0aWwgPSByZXF1aXJlKCd1dGlsJyksCisgICAgQmFzZVJv
dXRlciA9IHJlcXVpcmUoJy4vcm91dGVyJykuUm91dGVyOworCit2YXIgUm91dGVyID0gZXhwb3J0
cy5Sb3V0ZXIgPSBmdW5jdGlvbiAocm91dGVzKSB7CisgIEJhc2VSb3V0ZXIuY2FsbCh0aGlzLCBy
b3V0ZXMpOworICB0aGlzLnJlY3Vyc2UgPSBmYWxzZTsKK307CisKKy8vCisvLyBJbmhlcml0IGZy
b20gYEJhc2VSb3V0ZXJgLgorLy8KK3V0aWwuaW5oZXJpdHMoUm91dGVyLCBCYXNlUm91dGVyKTsK
KworLy8KKy8vICMjIyBmdW5jdGlvbiBjb25maWd1cmUgKG9wdGlvbnMpCisvLyAjIyMjIEBvcHRp
b25zIHtPYmplY3R9ICoqT3B0aW9uYWwqKiBPcHRpb25zIHRvIGNvbmZpZ3VyZSB0aGlzIGluc3Rh
bmNlIHdpdGgKKy8vIENvbmZpZ3VyZXMgdGhpcyBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQg
YG9wdGlvbnNgLgorLy8KK1JvdXRlci5wcm90b3R5cGUuY29uZmlndXJlID0gZnVuY3Rpb24gKG9w
dGlvbnMpIHsKKyAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307CisgIEJhc2VSb3V0ZXIucHJvdG90
eXBlLmNvbmZpZ3VyZS5jYWxsKHRoaXMsIG9wdGlvbnMpOworCisgIC8vCisgIC8vIERlbGltaXRl
ciBtdXN0IGFsd2F5cyBiZSBgXHNgIGluIENMSSByb3V0aW5nLgorICAvLyBlLmcuIGBqaXRzdSB1
c2VycyBjcmVhdGVgCisgIC8vCisgIHRoaXMuZGVsaW1pdGVyID0gJ1xccyc7CisgIHJldHVybiB0
aGlzOworfTsKKworLy8KKy8vICMjIyBmdW5jdGlvbiBkaXNwYXRjaCAobWV0aG9kLCBwYXRoKQor
Ly8gIyMjIyBAbWV0aG9kIHtzdHJpbmd9IE1ldGhvZCB0byBkaXNwYXRjaAorLy8gIyMjIyBAcGF0
aCB7c3RyaW5nfSBQYXRoIHRvIGRpc3BhdGNoCisvLyBGaW5kcyBhIHNldCBvZiBmdW5jdGlvbnMg
b24gdGhlIHRyYXZlcnNhbCB0b3dhcmRzCisvLyBgbWV0aG9kYCBhbmQgYHBhdGhgIGluIHRoZSBj
b3JlIHJvdXRpbmcgdGFibGUgdGhlbgorLy8gaW52b2tlcyB0aGVtIGJhc2VkIG9uIHNldHRpbmdz
IGluIHRoaXMgaW5zdGFuY2UuCisvLworUm91dGVyLnByb3RvdHlwZS5kaXNwYXRjaCA9IGZ1bmN0
aW9uIChtZXRob2QsIHBhdGgsIHR0eSwgY2FsbGJhY2spIHsKKyAgLy8KKyAgLy8gUHJlcGVuZCBh
IHNpbmdsZSBzcGFjZSBvbnRvIHRoZSBwYXRoIHNvIHRoYXQgdGhlIHRyYXZlcnNhbAorICAvLyBh
bGdvcml0aG0gd2lsbCByZWNvZ25pemUgaXQuIFRoaXMgaXMgYmVjYXVzZSB3ZSBhbHdheXMgYXNz
dW1lCisgIC8vIHRoYXQgdGhlIGBwYXRoYCBiZWdpbnMgd2l0aCBgdGhpcy5kZWxpbWl0ZXJgLgor
ICAvLworICBwYXRoID0gJyAnICsgcGF0aDsKKyAgdmFyIGZucyA9IHRoaXMudHJhdmVyc2UobWV0
aG9kLCBwYXRoLCB0aGlzLnJvdXRlcywgJycpOworICBpZiAoIWZucyB8fCBmbnMubGVuZ3RoID09
PSAwKSB7CisgICAgaWYgKHR5cGVvZiB0aGlzLm5vdGZvdW5kID09PSAnZnVuY3Rpb24nKSB7Cisg
ICAgICB0aGlzLm5vdGZvdW5kLmNhbGwoeyB0dHk6IHR0eSwgY21kOiBwYXRoIH0sIGNhbGxiYWNr
KTsKKyAgICB9CisgICAgZWxzZSBpZiAoY2FsbGJhY2spIHsKKyAgICAgIGNhbGxiYWNrKG5ldyBF
cnJvcignQ291bGQgbm90IGZpbmQgcGF0aDogJyArIHBhdGgpKTsKKyAgICB9CisKKyAgICByZXR1
cm4gZmFsc2U7CisgIH0KKworICBpZiAodGhpcy5yZWN1cnNlID09PSAnZm9yd2FyZCcpIHsKKyAg
ICBmbnMgPSBmbnMucmV2ZXJzZSgpOworICB9CisKKyAgdGhpcy5pbnZva2UodGhpcy5ydW5saXN0
KGZucyksIHsgdHR5OiB0dHksIGNtZDogcGF0aCB9LCBjYWxsYmFjayk7CisgIHJldHVybiB0cnVl
OworfTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9kaXJlY3Rv
ci9saWIvZGlyZWN0b3IvaHR0cC9pbmRleC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9k
dWxlcy9kaXJlY3Rvci9saWIvZGlyZWN0b3IvaHR0cC9pbmRleC5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lY2Nl
OTgyNGM5YjMxNmJlY2Q5ZGUwZWQ2OGI4MGJmYTVhNzBlMTVkCi0tLSAvZGV2L251bGwKKysrIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL2xpYi9kaXJlY3Rvci9odHRw
L2luZGV4LmpzCkBAIC0wLDAgKzEsMjUzIEBACit2YXIgZXZlbnRzID0gcmVxdWlyZSgnZXZlbnRz
JyksCisgICAgcXMgPSByZXF1aXJlKCdxdWVyeXN0cmluZycpLAorICAgIHV0aWwgPSByZXF1aXJl
KCd1dGlsJyksCisgICAgQmFzZVJvdXRlciA9IHJlcXVpcmUoJy4uL3JvdXRlcicpLlJvdXRlciwK
KyAgICByZXNwb25zZXMgPSByZXF1aXJlKCcuL3Jlc3BvbnNlcycpOworCisvLworLy8gIyMjIEV4
cG9zZSBhbGwgSFRUUCBtZXRob2RzIGFuZCByZXNwb25zZXMKKy8vCitleHBvcnRzLm1ldGhvZHMg
ICA9IHJlcXVpcmUoJy4vbWV0aG9kcycpOworT2JqZWN0LmtleXMocmVzcG9uc2VzKS5mb3JFYWNo
KGZ1bmN0aW9uIChuYW1lKSB7CisgIGV4cG9ydHNbbmFtZV0gPSByZXNwb25zZXNbbmFtZV07Cit9
KTsKKworLy8KKy8vICMjIyBmdW5jdGlvbiBSb3V0ZXIgKHJvdXRlcykKKy8vICMjIyMgQHJvdXRl
cyB7T2JqZWN0fSAqKk9wdGlvbmFsKiogUm91dGluZyB0YWJsZSBmb3IgdGhpcyBpbnN0YW5jZS4K
Ky8vIENvbnN0dWN0b3IgZnVuY3Rpb24gZm9yIHRoZSBIVFRQIFJvdXRlciBvYmplY3QgcmVzcG9u
c2libGUgZm9yIGJ1aWxkaW5nCisvLyBhbmQgZGlzcGF0Y2hpbmcgZnJvbSBhIGdpdmVuIHJvdXRp
bmcgdGFibGUuCisvLwordmFyIFJvdXRlciA9IGV4cG9ydHMuUm91dGVyID0gZnVuY3Rpb24gKHJv
dXRlcykgeworICAvLworICAvLyAjIyMgRXh0ZW5kIHRoZSBgUm91dGVyYCBwcm90b3R5cGUgd2l0
aCBhbGwgb2YgdGhlIFJGQyBtZXRob2RzLgorICAvLworICB0aGlzLnBhcmFtcyAgID0ge307Cisg
IHRoaXMucm91dGVzICAgPSB7fTsKKyAgdGhpcy5tZXRob2RzICA9IFsnb24nLCAnYWZ0ZXInLCAn
YmVmb3JlJ107CisgIHRoaXMuc2NvcGUgICAgPSBbXTsKKyAgdGhpcy5fbWV0aG9kcyA9IHt9Owor
ICB0aGlzLnJlY3Vyc2UgPSAnZm9yd2FyZCc7CisgIHRoaXMuX2F0dGFjaCA9IFtdOworCisgIHRo
aXMuZXh0ZW5kKGV4cG9ydHMubWV0aG9kcy5jb25jYXQoWydiZWZvcmUnLCAnYWZ0ZXInXSkpOwor
ICB0aGlzLmNvbmZpZ3VyZSgpOworICB0aGlzLm1vdW50KHJvdXRlcyB8fCB7fSk7Cit9OworCisv
LworLy8gSW5oZXJpdCBmcm9tIGBCYXNlUm91dGVyYC4KKy8vCit1dGlsLmluaGVyaXRzKFJvdXRl
ciwgQmFzZVJvdXRlcik7CisKKy8vCisvLyAjIyMgZnVuY3Rpb24gY29uZmlndXJlIChvcHRpb25z
KQorLy8gIyMjIyBAb3B0aW9ucyB7T2JqZWN0fSAqKk9wdGlvbmFsKiogT3B0aW9ucyB0byBjb25m
aWd1cmUgdGhpcyBpbnN0YW5jZSB3aXRoCisvLyBDb25maWd1cmVzIHRoaXMgaW5zdGFuY2Ugd2l0
aCB0aGUgc3BlY2lmaWVkIGBvcHRpb25zYC4KKy8vCitSb3V0ZXIucHJvdG90eXBlLmNvbmZpZ3Vy
ZSA9IGZ1bmN0aW9uIChvcHRpb25zKSB7CisgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OworCisg
IC8vIHVzZWZ1bCB3aGVuIHVzaW5nIGNvbm5lY3QncyBib2R5UGFyc2VyCisgIHRoaXMuc3RyZWFt
ID0gb3B0aW9ucy5zdHJlYW0gfHwgZmFsc2U7CisKKyAgcmV0dXJuIEJhc2VSb3V0ZXIucHJvdG90
eXBlLmNvbmZpZ3VyZS5jYWxsKHRoaXMsIG9wdGlvbnMpOworfTsKKworLy8KKy8vICMjIyBmdW5j
dGlvbiBvbiAobWV0aG9kLCBwYXRoLCByb3V0ZSkKKy8vICMjIyMgQG1ldGhvZCB7c3RyaW5nfSAq
Kk9wdGlvbmFsKiogTWV0aG9kIHRvIHVzZQorLy8gIyMjIyBAcGF0aCB7c3RyaW5nfSBQYXRoIHRv
IHNldCB0aGlzIHJvdXRlIG9uLgorLy8gIyMjIyBAcm91dGUge0FycmF5fGZ1bmN0aW9ufSBIYW5k
bGVyIGZvciB0aGUgc3BlY2lmaWVkIG1ldGhvZCBhbmQgcGF0aC4KKy8vIEFkZHMgYSBuZXcgYHJv
dXRlYCB0byB0aGlzIGluc3RhbmNlIGZvciB0aGUgc3BlY2lmaWVkIGBtZXRob2RgCisvLyBhbmQg
YHBhdGhgLgorLy8KK1JvdXRlci5wcm90b3R5cGUub24gPSBmdW5jdGlvbiAobWV0aG9kLCBwYXRo
KSB7CisgIHZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAy
KSwKKyAgICAgIHJvdXRlID0gYXJncy5wb3AoKSwKKyAgICAgIG9wdGlvbnMgPSBhcmdzLnBvcCgp
LAorICAgICAgYWNjZXB0OworCisgIGlmIChvcHRpb25zKSB7CisgICAgaWYgKG9wdGlvbnMuc3Ry
ZWFtKSB7CisgICAgICByb3V0ZS5zdHJlYW0gPSB0cnVlOworICAgIH0KKworICAgIGlmIChvcHRp
b25zLmFjY2VwdCkgeworICAgICAgdGhpcy5faGFzQWNjZXB0cyA9IHRydWU7CisgICAgICBhY2Nl
cHQgPSBvcHRpb25zLmFjY2VwdDsKKyAgICAgIHJvdXRlLmFjY2VwdCA9IChBcnJheS5pc0FycmF5
KGFjY2VwdCkgPyBhY2NlcHQgOiBbYWNjZXB0XSkubWFwKGZ1bmN0aW9uIChhKSB7CisgICAgICAg
IHJldHVybiB0eXBlb2YgYSA9PT0gJ3N0cmluZycgPyBSZWdFeHAoYSkgOiBhOworICAgICAgfSk7
CisgICAgfQorICB9CisKKyAgaWYgKHR5cGVvZiBwYXRoICE9PSAnc3RyaW5nJyAmJiAhcGF0aC5z
b3VyY2UpIHsKKyAgICBwYXRoID0gJyc7CisgIH0KKworICBCYXNlUm91dGVyLnByb3RvdHlwZS5v
bi5jYWxsKHRoaXMsIG1ldGhvZCwgcGF0aCwgcm91dGUpOworfTsKKworLy8KKy8vICMjIyBmdW5j
dGlvbiBhdHRhY2ggKGZ1bmMpCisvLyAjIyMgQGZ1bmMge2Z1bmN0aW9ufSBGdW5jdGlvbiB0byBl
eGVjdXRlIG9uIGB0aGlzYCBiZWZvcmUgYXBwbHlpbmcgdG8gcm91dGVyIGZ1bmN0aW9uCisvLyBB
c2sgdGhlIHJvdXRlciB0byBhdHRhY2ggb2JqZWN0cyBvciBtYW5pcHVsYXRlIGB0aGlzYCBvYmpl
Y3Qgb24gd2hpY2ggdGhlCisvLyBmdW5jdGlvbiBwYXNzZWQgdG8gdGhlIGh0dHAgcm91dGVyIHdp
bGwgZ2V0IGFwcGxpZWQKK1JvdXRlci5wcm90b3R5cGUuYXR0YWNoID0gZnVuY3Rpb24gKGZ1bmMp
IHsKKyAgdGhpcy5fYXR0YWNoLnB1c2goZnVuYyk7Cit9OworCisvLworLy8gIyMjIGZ1bmN0aW9u
IGRpc3BhdGNoIChtZXRob2QsIHBhdGgpCisvLyAjIyMjIEByZXEge2h0dHAuU2VydmVyUmVxdWVz
dH0gSW5jb21pbmcgcmVxdWVzdCB0byBkaXNwYXRjaC4KKy8vICMjIyMgQHJlcyB7aHR0cC5TZXJ2
ZXJSZXNwb25zZX0gT3V0Z29pbmcgcmVzcG9uc2UgdG8gZGlzcGF0Y2guCisvLyAjIyMjIEBjYWxs
YmFjayB7ZnVuY3Rpb259ICoqT3B0aW9uYWwqKiBDb250aW51YXRpb24gdG8gcmVzcG9uZCB0byBm
b3IgYXN5bmMgc2NlbmFyaW9zLgorLy8gRmluZHMgYSBzZXQgb2YgZnVuY3Rpb25zIG9uIHRoZSB0
cmF2ZXJzYWwgdG93YXJkcworLy8gYG1ldGhvZGAgYW5kIGBwYXRoYCBpbiB0aGUgY29yZSByb3V0
aW5nIHRhYmxlIHRoZW4KKy8vIGludm9rZXMgdGhlbSBiYXNlZCBvbiBzZXR0aW5ncyBpbiB0aGlz
IGluc3RhbmNlLgorLy8KK1JvdXRlci5wcm90b3R5cGUuZGlzcGF0Y2ggPSBmdW5jdGlvbiAocmVx
LCByZXMsIGNhbGxiYWNrKSB7CisgIC8vCisgIC8vIERpc3BhdGNoIGBIRUFEYCByZXF1ZXN0cyB0
byBgR0VUYAorICAvLworICB2YXIgbWV0aG9kID0gcmVxLm1ldGhvZCA9PT0gJ0hFQUQnID8gJ2dl
dCcgOiByZXEubWV0aG9kLnRvTG93ZXJDYXNlKCksCisgICAgICB0aGlzQXJnID0geyByZXE6IHJl
cSwgcmVzOiByZXMgfSwKKyAgICAgIHNlbGYgPSB0aGlzLAorICAgICAgY29udGVudFR5cGUsCisg
ICAgICBydW5saXN0LAorICAgICAgc3RyZWFtLAorICAgICAgZXJyb3IsCisgICAgICBmbnMsCisg
ICAgICB1cmw7CisKKyAgLy8KKyAgLy8gVHJhcCBiYWQgVVJMcyBmcm9tIGBkZWNvZGVVcmlgCisg
IC8vCisgIHRyeSB7IHVybCA9IGRlY29kZVVSSShyZXEudXJsLnNwbGl0KCc/JywgMSlbMF0pOyB9
CisgIGNhdGNoIChleCkgeyB1cmwgPSBudWxsIH0KKworICBpZiAodXJsICYmIHRoaXMuX2hhc0Fj
Y2VwdHMpIHsKKyAgICBjb250ZW50VHlwZSA9IHJlcS5oZWFkZXJzWydjb250ZW50LXR5cGUnXTsK
KyAgICBmbnMgPSB0aGlzLnRyYXZlcnNlKG1ldGhvZCwgdXJsLCB0aGlzLnJvdXRlcywgJycsIGZ1
bmN0aW9uIChyb3V0ZSkgeworICAgICAgcmV0dXJuICFyb3V0ZS5hY2NlcHQgfHwgcm91dGUuYWNj
ZXB0LnNvbWUoZnVuY3Rpb24gKGEpIHsKKyAgICAgICAgcmV0dXJuIGEudGVzdChjb250ZW50VHlw
ZSk7CisgICAgICB9KTsKKyAgICB9KTsKKyAgfQorICBlbHNlIGlmICh1cmwpIHsKKyAgICBmbnMg
PSB0aGlzLnRyYXZlcnNlKG1ldGhvZCwgdXJsLCB0aGlzLnJvdXRlcywgJycpOworICB9CisKKyAg
aWYgKHRoaXMuX2F0dGFjaCkgeworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fYXR0YWNo
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB0aGlzLl9hdHRhY2hbaV0uY2FsbCh0aGlzQXJnKTsKKyAg
ICB9CisgIH0KKworICBpZiAoIWZucyB8fCBmbnMubGVuZ3RoID09PSAwKSB7CisgICAgZXJyb3Ig
PSBuZXcgZXhwb3J0cy5Ob3RGb3VuZCgnQ291bGQgbm90IGZpbmQgcGF0aDogJyArIHJlcS51cmwp
OworICAgIGlmICh0eXBlb2YgdGhpcy5ub3Rmb3VuZCA9PT0gJ2Z1bmN0aW9uJykgeworICAgICAg
dGhpcy5ub3Rmb3VuZC5jYWxsKHRoaXNBcmcsIGNhbGxiYWNrKTsKKyAgICB9CisgICAgZWxzZSBp
ZiAoY2FsbGJhY2spIHsKKyAgICAgIGNhbGxiYWNrLmNhbGwodGhpc0FyZywgZXJyb3IsIHJlcSwg
cmVzKTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworICB9CisKKyAgaWYgKHRoaXMucmVjdXJz
ZSA9PT0gJ2ZvcndhcmQnKSB7CisgICAgZm5zID0gZm5zLnJldmVyc2UoKTsKKyAgfQorCisgIHJ1
bmxpc3QgPSB0aGlzLnJ1bmxpc3QoZm5zKTsKKyAgc3RyZWFtICA9IHRoaXMuc3RyZWFtIHx8IHJ1
bmxpc3Quc29tZShmdW5jdGlvbiAoZm4pIHsgcmV0dXJuIGZuLnN0cmVhbSA9PT0gdHJ1ZTsgfSk7
CisKKyAgZnVuY3Rpb24gcGFyc2VBbmRJbnZva2UoKSB7CisgICAgZXJyb3IgPSBzZWxmLnBhcnNl
KHJlcSk7CisgICAgaWYgKGVycm9yKSB7CisgICAgICBpZiAoY2FsbGJhY2spIHsKKyAgICAgICAg
Y2FsbGJhY2suY2FsbCh0aGlzQXJnLCBlcnJvciwgcmVxLCByZXMpOworICAgICAgfQorICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHNlbGYuaW52b2tlKHJ1bmxpc3QsIHRoaXNBcmcs
IGNhbGxiYWNrKTsKKyAgfQorCisgIGlmICghc3RyZWFtKSB7CisgICAgLy8KKyAgICAvLyBJZiB0
aGVyZSBpcyBubyBzdHJlYW1pbmcgcmVxdWlyZWQgb24gYW55IG9mIHRoZSBmdW5jdGlvbnMgb24g
dGhlCisgICAgLy8gd2F5IHRvIGBwYXRoYCwgdGhlbiBhdHRlbXB0IHRvIHBhcnNlIHRoZSBmdWxs
eSBidWZmZXJlZCByZXF1ZXN0IHN0cmVhbQorICAgIC8vIG9uY2UgaXQgaGFzIGVtaXR0ZWQgdGhl
IGBlbmRgIGV2ZW50LgorICAgIC8vCisgICAgaWYgKHJlcS5yZWFkYWJsZSkgeworICAgICAgLy8K
KyAgICAgIC8vIElmIHRoZSBgaHR0cC5TZXJ2ZXJSZXF1ZXN0YCBpcyBzdGlsbCByZWFkYWJsZSwg
dGhlbiBhd2FpdAorICAgICAgLy8gdGhlIGVuZCBldmVudCBhbmQgdGhlbiBjb250aW51ZQorICAg
ICAgLy8KKyAgICAgIHJlcS5vbmNlKCdlbmQnLCBwYXJzZUFuZEludm9rZSk7CisgICAgICAvLyBT
dHJlYW1zMiByZXF1aXJlcyB1cyB0byBzdGFydCB0aGUgc3RyZWFtIGlmIHdlJ3JlIG5vdCBleHBs
aWNpdGx5CisgICAgICAvLyByZWFkaW5nIGZyb20gaXQuCisgICAgICByZXEucmVzdW1lKCk7Cisg
ICAgfQorICAgIGVsc2UgeworICAgICAgLy8KKyAgICAgIC8vIE90aGVyd2lzZSwganVzdCBwYXJz
ZSB0aGUgYm9keSBub3cuCisgICAgICAvLworICAgICAgcGFyc2VBbmRJbnZva2UoKTsKKyAgICB9
CisgIH0KKyAgZWxzZSB7CisgICAgdGhpcy5pbnZva2UocnVubGlzdCwgdGhpc0FyZywgY2FsbGJh
Y2spOworICB9CisKKyAgcmV0dXJuIHRydWU7Cit9OworCisvLworLy8gIyMjIEBwYXJzZXJzIHtP
YmplY3R9CisvLyBMb29rdXAgdGFibGUgb2YgcGFyc2VycyB0byB1c2Ugd2hlbiBhdHRlbXB0aW5n
IHRvCisvLyBwYXJzZSBpbmNvbWluZyByZXNwb25zZXMuCisvLworUm91dGVyLnByb3RvdHlwZS5w
YXJzZXJzID0geworICAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJzogcXMucGFy
c2UsCisgICdhcHBsaWNhdGlvbi9qc29uJzogSlNPTi5wYXJzZQorfTsKKworLy8KKy8vICMjIyBm
dW5jdGlvbiBwYXJzZSAocmVxKQorLy8gIyMjIyBAcmVxIHtodHRwLlNlcnZlclJlc3BvbnNlfEJ1
ZmZlcmVkU3RyZWFtfSBJbmNvbWluZyBIVFRQIHJlcXVlc3QgdG8gcGFyc2UKKy8vIEF0dGVtcHRz
IHRvIHBhcnNlIGByZXEuYm9keWAgdXNpbmcgdGhlIHZhbHVlIGZvdW5kIGF0IGByZXEuaGVhZGVy
c1snY29udGVudC10eXBlJ11gLgorLy8KK1JvdXRlci5wcm90b3R5cGUucGFyc2UgPSBmdW5jdGlv
biAocmVxKSB7CisgIGZ1bmN0aW9uIG1pbWUocmVxKSB7CisgICAgdmFyIHN0ciA9IHJlcS5oZWFk
ZXJzWydjb250ZW50LXR5cGUnXSB8fCAnJzsKKyAgICByZXR1cm4gc3RyLnNwbGl0KCc7JylbMF07
CisgIH0KKworICB2YXIgcGFyc2VyID0gdGhpcy5wYXJzZXJzW21pbWUocmVxKV0sCisgICAgICBi
b2R5OworCisgIGlmIChwYXJzZXIpIHsKKyAgICByZXEuYm9keSA9IHJlcS5ib2R5IHx8ICcnOwor
CisgICAgaWYgKHJlcS5jaHVua3MpIHsKKyAgICAgIHJlcS5jaHVua3MuZm9yRWFjaChmdW5jdGlv
biAoY2h1bmspIHsKKyAgICAgICAgcmVxLmJvZHkgKz0gY2h1bms7CisgICAgICB9KTsKKyAgICB9
CisKKyAgICBpZiAoJ3N0cmluZycgPT09IHR5cGVvZiByZXEuYm9keSkgeworICAgICAgdHJ5IHsK
KyAgICAgICAgcmVxLmJvZHkgPSByZXEuYm9keSAmJiByZXEuYm9keS5sZW5ndGgKKyAgICAgICAg
ICA/IHBhcnNlcihyZXEuYm9keSkKKyAgICAgICAgICA6IHt9OworICAgICAgfQorICAgICAgY2F0
Y2ggKGVycikgeworICAgICAgICByZXR1cm4gbmV3IGV4cG9ydHMuQmFkUmVxdWVzdCgnTWFsZm9y
bWVkIGRhdGEnKTsKKyAgICAgIH0KKyAgICB9CisgIH0KK307CisKZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9saWIvZGlyZWN0b3IvaHR0cC9tZXRo
b2RzLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL2xpYi9kaXJl
Y3Rvci9odHRwL21ldGhvZHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTBjMDFkYzIwM2IwZTNiMzgwMGYzN2E3
N2I0MjZhOTNhYjE5YjU2NwotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25v
ZGVfbW9kdWxlcy9kaXJlY3Rvci9saWIvZGlyZWN0b3IvaHR0cC9tZXRob2RzLmpzCkBAIC0wLDAg
KzEsNjYgQEAKKy8qIQorICogRXhwcmVzcyAtIHJvdXRlciAtIG1ldGhvZHMKKyAqIENvcHlyaWdo
dChjKSAyMDEwIFRKIEhvbG93YXljaHVrIDx0akB2aXNpb24tbWVkaWEuY2E+CisgKiBNSVQgTGlj
ZW5zZWQKKyAqCisgKiBBZGFwdGVkIGZvciBkaXJlY3RvcgorICogKEMpIDIwMTEgQ2hhcmxpZSBS
b2JiaW5zLCBQYW9sbyBGcmFvZ21lbmksICYgdGhlIENvbnRyaWJ1dG9ycy4KKyAqCisgKi8KKwor
LyoqCisgKiBIeXBlcnRleHQgVHJhbnNmZXIgUHJvdG9jb2wgLS0gSFRUUC8xLjEKKyAqIGh0dHA6
Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzI2MTYudHh0CisgKi8KK3ZhciBSRkMyNjE2ID0gWydPUFRJ
T05TJywgJ0dFVCcsICdQT1NUJywgJ1BVVCcsICdERUxFVEUnLCAnVFJBQ0UnLCAnQ09OTkVDVCdd
OworCisvKioKKyAqIEhUVFAgRXh0ZW5zaW9ucyBmb3IgRGlzdHJpYnV0ZWQgQXV0aG9yaW5nIC0t
IFdFQkRBVgorICogaHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMjUxOC50eHQKKyAqLwordmFy
IFJGQzI1MTggPSBbJ1BST1BGSU5EJywgJ1BST1BQQVRDSCcsICdNS0NPTCcsICdDT1BZJywgJ01P
VkUnLCAnTE9DSycsICdVTkxPQ0snXTsKKworLyoqCisgKiBWZXJzaW9uaW5nIEV4dGVuc2lvbnMg
dG8gV2ViREFWCisgKiBodHRwOi8vd3d3LmlldGYub3JnL3JmYy9yZmMzMjUzLnR4dAorICovCit2
YXIgUkZDMzI1MyA9IFsnVkVSU0lPTi1DT05UUk9MJywgJ1JFUE9SVCcsICdDSEVDS09VVCcsICdD
SEVDS0lOJywgJ1VOQ0hFQ0tPVVQnLCAnTUtXT1JLU1BBQ0UnLCAnVVBEQVRFJywgJ0xBQkVMJywg
J01FUkdFJywgJ0JBU0VMSU5FLUNPTlRST0wnLCAnTUtBQ1RJVklUWSddOworCisvKioKKyAqIE9y
ZGVyZWQgQ29sbGVjdGlvbnMgUHJvdG9jb2wgKFdlYkRBVikKKyAqIGh0dHA6Ly93d3cuaWV0Zi5v
cmcvcmZjL3JmYzM2NDgudHh0CisgKi8KK3ZhciBSRkMzNjQ4ID0gWydPUkRFUlBBVENIJ107CisK
Ky8qKgorICogV2ViIERpc3RyaWJ1dGVkIEF1dGhvcmluZyBhbmQgVmVyc2lvbmluZyAoV2ViREFW
KSBBY2Nlc3MgQ29udHJvbCBQcm90b2NvbAorICogaHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZj
Mzc0NC50eHQKKyAqLwordmFyIFJGQzM3NDQgPSBbJ0FDTCddOworCisvKioKKyAqIFdlYiBEaXN0
cmlidXRlZCBBdXRob3JpbmcgYW5kIFZlcnNpb25pbmcgKFdlYkRBVikgU0VBUkNICisgKiBodHRw
Oi8vd3d3LmlldGYub3JnL3JmYy9yZmM1MzIzLnR4dAorICovCit2YXIgUkZDNTMyMyA9IFsnU0VB
UkNIJ107CisKKy8qKgorICogUEFUQ0ggTWV0aG9kIGZvciBIVFRQCisgKiBodHRwOi8vd3d3Lmll
dGYub3JnL3JmYy9yZmM1Nzg5LnR4dAorICovCit2YXIgUkZDNTc4OSA9IFsnUEFUQ0gnXTsKKwor
LyoqCisgKiBFeHBvc2UgdGhlIG1ldGhvZHMuCisgKi8KK21vZHVsZS5leHBvcnRzID0gW10uY29u
Y2F0KAorICBSRkMyNjE2LAorICBSRkMyNTE4LAorICBSRkMzMjUzLAorICBSRkMzNjQ4LAorICBS
RkMzNzQ0LAorICBSRkM1MzIzLAorICBSRkM1Nzg5CispLm1hcChmdW5jdGlvbiAobWV0aG9kKSB7
CisgIHJldHVybiBtZXRob2QudG9Mb3dlckNhc2UoKTsKK30pOwpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL2xpYi9kaXJlY3Rvci9odHRwL3Jlc3Bv
bnNlcy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9saWIvZGly
ZWN0b3IvaHR0cC9yZXNwb25zZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWUwMDJhMjE0M2E1MDFlNTdhNDg2
ZmZjNTIwMzk5NmJlNTc2MzA4MgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0
L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9saWIvZGlyZWN0b3IvaHR0cC9yZXNwb25zZXMuanMKQEAg
LTAsMCArMSw5MyBAQAorLy8KKy8vIEhUVFAgRXJyb3Igb2JqZWN0c3QKKy8vCit2YXIgdXRpbCA9
IHJlcXVpcmUoJ3V0aWwnKTsKKworZXhwb3J0cy5Ob3RNb2RpZmllZCA9IGZ1bmN0aW9uICgpIHsK
KyAgdGhpcy5zdGF0dXMgPSAzMDQ7CisgIHRoaXMub3B0aW9ucyA9IHsKKyAgICByZW1vdmVDb250
ZW50SGVhZGVyczogdHJ1ZQorICB9OworfTsKKwordXRpbC5pbmhlcml0cyhleHBvcnRzLk5vdE1v
ZGlmaWVkLCBFcnJvcik7CisKK2V4cG9ydHMuQmFkUmVxdWVzdCA9IGZ1bmN0aW9uIChtc2cpIHsK
KyAgbXNnID0gbXNnIHx8ICdCYWQgcmVxdWVzdCc7CisKKyAgdGhpcy5zdGF0dXMgPSA0MDA7Cisg
IHRoaXMuaGVhZGVycyA9IHt9OworICB0aGlzLm1lc3NhZ2UgPSBtc2c7CisgIHRoaXMuYm9keSA9
IHsgZXJyb3I6IG1zZyB9OworfTsKKwordXRpbC5pbmhlcml0cyhleHBvcnRzLkJhZFJlcXVlc3Qs
IEVycm9yKTsKKworZXhwb3J0cy5Ob3RBdXRob3JpemVkID0gZnVuY3Rpb24gKG1zZykgeworICBt
c2cgPSBtc2cgfHwgJ05vdCBBdXRob3JpemVkJzsKKworICB0aGlzLnN0YXR1cyA9IDQwMTsKKyAg
dGhpcy5oZWFkZXJzID0ge307CisgIHRoaXMubWVzc2FnZSA9IG1zZzsKKyAgdGhpcy5ib2R5ID0g
eyBlcnJvcjogbXNnIH07Cit9OworCit1dGlsLmluaGVyaXRzKGV4cG9ydHMuTm90QXV0aG9yaXpl
ZCwgRXJyb3IpOworCitleHBvcnRzLkZvcmJpZGRlbiA9IGZ1bmN0aW9uIChtc2cpIHsKKyAgbXNn
ID0gbXNnIHx8ICdOb3QgQXV0aG9yaXplZCc7CisKKyAgdGhpcy5zdGF0dXMgPSA0MDM7CisgIHRo
aXMuaGVhZGVycyA9IHt9OworICB0aGlzLm1lc3NhZ2UgPSBtc2c7CisgIHRoaXMuYm9keSA9IHsg
ZXJyb3I6IG1zZyB9OworfTsKKwordXRpbC5pbmhlcml0cyhleHBvcnRzLkZvcmJpZGRlbiwgRXJy
b3IpOworCitleHBvcnRzLk5vdEZvdW5kID0gZnVuY3Rpb24gKG1zZykgeworICBtc2cgPSBtc2cg
fHwgJ05vdCBGb3VuZCc7CisKKyAgdGhpcy5zdGF0dXMgPSA0MDQ7CisgIHRoaXMuaGVhZGVycyA9
IHt9OworICB0aGlzLm1lc3NhZ2UgPSBtc2c7CisgIHRoaXMuYm9keSA9IHsgZXJyb3I6IG1zZyB9
OworfTsKKwordXRpbC5pbmhlcml0cyhleHBvcnRzLk5vdEZvdW5kLCBFcnJvcik7CisKK2V4cG9y
dHMuTWV0aG9kTm90QWxsb3dlZCA9IGZ1bmN0aW9uIChhbGxvd2VkKSB7CisgIHZhciBtc2cgPSAn
bWV0aG9kIG5vdCBhbGxvd2VkLic7CisKKyAgdGhpcy5zdGF0dXMgPSA0MDU7CisgIHRoaXMuaGVh
ZGVycyA9IHsgYWxsb3c6IGFsbG93ZWQgfTsKKyAgdGhpcy5tZXNzYWdlID0gbXNnOworICB0aGlz
LmJvZHkgPSB7IGVycm9yOiBtc2cgfTsKK307CisKK3V0aWwuaW5oZXJpdHMoZXhwb3J0cy5NZXRo
b2ROb3RBbGxvd2VkLCBFcnJvcik7CisKK2V4cG9ydHMuTm90QWNjZXB0YWJsZSA9IGZ1bmN0aW9u
IChhY2NlcHQpIHsKKyAgdmFyIG1zZyA9ICdjYW5ub3QgZ2VuZXJhdGUgIicgKyBhY2NlcHQgKyAn
IiByZXNwb25zZSc7CisKKyAgdGhpcy5zdGF0dXMgPSA0MDY7CisgIHRoaXMuaGVhZGVycyA9IHt9
OworICB0aGlzLm1lc3NhZ2UgPSBtc2c7CisgIHRoaXMuYm9keSA9IHsKKyAgICBlcnJvcjogbXNn
LAorICAgIG9ubHk6ICdhcHBsaWNhdGlvbi9qc29uJworICB9OworfTsKKwordXRpbC5pbmhlcml0
cyhleHBvcnRzLk5vdEFjY2VwdGFibGUsIEVycm9yKTsKKworZXhwb3J0cy5Ob3RJbXBsZW1lbnRl
ZCA9IGZ1bmN0aW9uIChtc2cpIHsKKyAgbXNnID0gbXNnIHx8ICdOb3QgSW1wbGVtZW50ZWQnOwor
CisgIHRoaXMuc3RhdHVzID0gNTAxOworICB0aGlzLmhlYWRlcnMgPSB7fTsKKyAgdGhpcy5tZXNz
YWdlID0gbXNnOworICB0aGlzLmJvZHkgPSB7IGVycm9yOiBtc2cgfTsKK307CisKK3V0aWwuaW5o
ZXJpdHMoZXhwb3J0cy5Ob3RJbXBsZW1lbnRlZCwgRXJyb3IpOwpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL2xpYi9kaXJlY3Rvci9yb3V0ZXIuanMg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvZGlyZWN0b3IvbGliL2RpcmVjdG9yL3Jv
dXRlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41ZjQ0MmViNjZiZGZhOGM1ZDg0NDM0MjdmYzQ3ZDkyZTdkZWU2
YzhhCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2Rp
cmVjdG9yL2xpYi9kaXJlY3Rvci9yb3V0ZXIuanMKQEAgLTAsMCArMSw4MTIgQEAKKy8qCisgKiBy
b3V0ZXIuanM6IEJhc2UgZnVuY3Rpb25hbGl0eSBmb3IgdGhlIHJvdXRlci4KKyAqCisgKiAoQykg
MjAxMSwgQ2hhcmxpZSBSb2JiaW5zLCBQYW9sbyBGcmFnb21lbmksICYgdGhlIENvbnRyaWJ1dG9y
cy4KKyAqIE1JVCBMSUNFTlNFCisgKgorICovCisKK3ZhciBRVUVSWV9TRVBBUkFUT1IgPSAvXD8u
Ki87CisKKy8vCisvLyBIZWxwZXIgZnVuY3Rpb24gdG8gdHVybiBmbGF0dGVuIGFuIGFycmF5Lgor
Ly8KK2Z1bmN0aW9uIF9mbGF0dGVuIChhcnIpIHsKKyAgdmFyIGZsYXQgPSBbXTsKKworICBmb3Ig
KHZhciBpID0gMCwgbiA9IGFyci5sZW5ndGg7IGkgPCBuOyBpKyspIHsKKyAgICBmbGF0ID0gZmxh
dC5jb25jYXQoYXJyW2ldKTsKKyAgfQorCisgIHJldHVybiBmbGF0OworfQorCisvLworLy8gSGVs
cGVyIGZ1bmN0aW9uIGZvciB3cmFwcGluZyBBcnJheS5ldmVyeQorLy8gaW4gdGhlIGJyb3dzZXIu
CisvLworZnVuY3Rpb24gX2V2ZXJ5IChhcnIsIGl0ZXJhdG9yKSB7CisgIGZvciAodmFyIGkgPSAw
OyBpIDwgYXJyLmxlbmd0aDsgaSArPSAxKSB7CisgICAgaWYgKGl0ZXJhdG9yKGFycltpXSwgaSwg
YXJyKSA9PT0gZmFsc2UpIHsKKyAgICAgIHJldHVybjsKKyAgICB9CisgIH0KK30KKworLy8KKy8v
IEhlbHBlciBmdW5jdGlvbiBmb3IgcGVyZm9ybWluZyBhbiBhc3luY2hyb25vdXMgZXZlcnkKKy8v
IGluIHNlcmllcyBpbiB0aGUgYnJvd3NlciBhbmQgdGhlIHNlcnZlci4KKy8vCitmdW5jdGlvbiBf
YXN5bmNFdmVyeVNlcmllcyAoYXJyLCBpdGVyYXRvciwgY2FsbGJhY2spIHsKKyAgaWYgKCFhcnIu
bGVuZ3RoKSB7CisgICAgcmV0dXJuIGNhbGxiYWNrKCk7CisgIH0KKworICB2YXIgY29tcGxldGVk
ID0gMDsKKyAgKGZ1bmN0aW9uIGl0ZXJhdGUoKSB7CisgICAgaXRlcmF0b3IoYXJyW2NvbXBsZXRl
ZF0sIGZ1bmN0aW9uIChlcnIpIHsKKyAgICAgIGlmIChlcnIgfHwgZXJyID09PSBmYWxzZSkgewor
ICAgICAgICBjYWxsYmFjayhlcnIpOworICAgICAgICBjYWxsYmFjayA9IGZ1bmN0aW9uICgpIHt9
OworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIGNvbXBsZXRlZCArPSAxOworICAgICAg
ICBpZiAoY29tcGxldGVkID09PSBhcnIubGVuZ3RoKSB7CisgICAgICAgICAgY2FsbGJhY2soKTsK
KyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICBpdGVyYXRlKCk7CisgICAgICAg
IH0KKyAgICAgIH0KKyAgICB9KTsKKyAgfSkoKTsKK30KKworLy8KKy8vIEhlbHBlciBmdW5jdGlv
biBmb3IgZXhwYW5kaW5nICJuYW1lZCIgbWF0Y2hlcworLy8gKGUuZy4gYDpkb2dgLCBldGMuKSBh
Z2FpbnN0IHRoZSBnaXZlbiBzZXQKKy8vIG9mIHBhcmFtczoKKy8vCisvLyAgICB7CisvLyAgICAg
ICc6ZG9nJzogZnVuY3Rpb24gKHN0cikgeworLy8gICAgICAgIHJldHVybiBzdHIucmVwbGFjZSgv
OmRvZy8sICdUQVJHRVQnKTsKKy8vICAgICAgfQorLy8gICAgICAuLi4KKy8vICAgIH0KKy8vCitm
dW5jdGlvbiBwYXJhbWlmeVN0cmluZyhzdHIsIHBhcmFtcywgbW9kKSB7CisgIG1vZCA9IHN0cjsK
KyAgZm9yICh2YXIgcGFyYW0gaW4gcGFyYW1zKSB7CisgICAgaWYgKHBhcmFtcy5oYXNPd25Qcm9w
ZXJ0eShwYXJhbSkpIHsKKyAgICAgIG1vZCA9IHBhcmFtc1twYXJhbV0oc3RyKTsKKyAgICAgIGlm
IChtb2QgIT09IHN0cikgeyBicmVhazsgfQorICAgIH0KKyAgfQorCisgIHJldHVybiBtb2QgPT09
IHN0cgorICAgID8gJyhbLl9hLXpBLVowLTktJSgpXSspJworICAgIDogbW9kOworfQorCisvLwor
Ly8gSGVscGVyIGZ1bmN0aW9uIGZvciBleHBhbmRpbmcgd2lsZGNhcmRzICgqKSBhbmQKKy8vICJu
YW1lZCIgbWF0Y2hlcyAoOndoYXRldmVyKQorLy8KK2Z1bmN0aW9uIHJlZ2lmeVN0cmluZyhzdHIs
IHBhcmFtcykgeworICB2YXIgbWF0Y2hlcywKKyAgICAgIGxhc3QgPSAwLAorICAgICAgb3V0ID0g
Jyc7CisKKyAgd2hpbGUgKG1hdGNoZXMgPSBzdHIuc3Vic3RyKGxhc3QpLm1hdGNoKC9bXlx3XGRc
LSAlQCZdKlwqW15cd1xkXC0gJUAmXSovKSkgeworICAgIGxhc3QgPSBtYXRjaGVzLmluZGV4ICsg
bWF0Y2hlc1swXS5sZW5ndGg7CisgICAgbWF0Y2hlc1swXSA9IG1hdGNoZXNbMF0ucmVwbGFjZSgv
XlwqLywgJyhbX1wuXChcKSFcXCAlQCZhLXpBLVowLTktXSspJyk7CisgICAgb3V0ICs9IHN0ci5z
dWJzdHIoMCwgbWF0Y2hlcy5pbmRleCkgKyBtYXRjaGVzWzBdOworICB9CisKKyAgc3RyID0gb3V0
ICs9IHN0ci5zdWJzdHIobGFzdCk7CisKKyAgIHZhciBjYXB0dXJlcyA9IHN0ci5tYXRjaCgvOihb
XlwvXSspL2lnKSwKKyAgICAgICBjYXB0dXJlLAorICAgICAgIGxlbmd0aDsKKworICAgaWYgKGNh
cHR1cmVzKSB7CisgICAgIGxlbmd0aCA9IGNhcHR1cmVzLmxlbmd0aDsKKyAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgIGNhcHR1cmUgPSBjYXB0dXJlc1tpXTsK
KyAgICAgICBpZiAoIGNhcHR1cmUuc2xpY2UoMCwgMikgPT09ICI6OiIgKSB7CisgICAgICAgICAg
IC8vIFRoaXMgcGFyYW1ldGVyIHdhcyBlc2NhcGVkIGFuZCBzaG91bGQgYmUgbGVmdCBpbiB0aGUg
dXJsIGFzIGEgbGl0ZXJhbAorICAgICAgICAgICAvLyBSZW1vdmUgdGhlIGVzY2FwaW5nIDogZnJv
bSB0aGUgYmVnaW5uaW5nCisgICAgICAgICAgIHN0ciA9IGNhcHR1cmUuc2xpY2UoIDEgKTsKKyAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICBzdHIgPSBzdHIucmVwbGFjZShjYXB0dXJlLCBwYXJh
bWlmeVN0cmluZyhjYXB0dXJlLCBwYXJhbXMpKTsKKyAgfQorICAgICB9CisgICB9CisKKyAgcmV0
dXJuIHN0cjsKK30KKworLy8KKy8vICMjIyBGaXggdW50ZXJtaW5hdGVkIFJlZ0V4cCBncm91cHMg
aW4gcm91dGVzLgorLy8KK2Z1bmN0aW9uIHRlcm1pbmF0b3Iocm91dGVzLCBkZWxpbWl0ZXIsIHN0
YXJ0LCBzdG9wKSB7CisgIHZhciBsYXN0ID0gMCwKKyAgICAgIGxlZnQgPSAwLAorICAgICAgcmln
aHQgPSAwLAorICAgICAgc3RhcnQgPSAoc3RhcnQgfHwgJygnKS50b1N0cmluZygpLAorICAgICAg
c3RvcCA9IChzdG9wIHx8ICcpJykudG9TdHJpbmcoKSwKKyAgICAgIGk7CisKKyAgZm9yIChpID0g
MDsgaSA8IHJvdXRlcy5sZW5ndGg7IGkrKykgeworICAgIHZhciBjaHVuayA9IHJvdXRlc1tpXTsK
KworICAgIGlmICgoY2h1bmsuaW5kZXhPZihzdGFydCwgbGFzdCkgPiBjaHVuay5pbmRleE9mKHN0
b3AsIGxhc3QpKSB8fAorICAgICAgICAofmNodW5rLmluZGV4T2Yoc3RhcnQsIGxhc3QpICYmICF+
Y2h1bmsuaW5kZXhPZihzdG9wLCBsYXN0KSkgfHwKKyAgICAgICAgKCF+Y2h1bmsuaW5kZXhPZihz
dGFydCwgbGFzdCkgJiYgfmNodW5rLmluZGV4T2Yoc3RvcCwgbGFzdCkpKSB7CisKKyAgICAgIGxl
ZnQgPSBjaHVuay5pbmRleE9mKHN0YXJ0LCBsYXN0KTsKKyAgICAgIHJpZ2h0ID0gY2h1bmsuaW5k
ZXhPZihzdG9wLCBsYXN0KTsKKworICAgICAgaWYgKCh+bGVmdCAmJiAhfnJpZ2h0KSB8fCAoIX5s
ZWZ0ICYmIH5yaWdodCkpIHsKKyAgICAgICAgdmFyIHRtcCA9IHJvdXRlcy5zbGljZSgwLCAoaSB8
fCAxKSArIDEpLmpvaW4oZGVsaW1pdGVyKTsKKyAgICAgICAgcm91dGVzID0gW3RtcF0uY29uY2F0
KHJvdXRlcy5zbGljZSgoaSB8fCAxKSArIDEpKTsKKyAgICAgIH0KKworICAgICAgbGFzdCA9IChy
aWdodCA+IGxlZnQgPyByaWdodCA6IGxlZnQpICsgMTsKKyAgICAgIGkgPSAwOworICAgIH0KKyAg
ICBlbHNlIHsKKyAgICAgIGxhc3QgPSAwOworICAgIH0KKyAgfQorCisgIHJldHVybiByb3V0ZXM7
Cit9CisKKworCisvLworLy8gIyMjIGZ1bmN0aW9uIFJvdXRlciAocm91dGVzKQorLy8gIyMjIyBA
cm91dGVzIHtPYmplY3R9ICoqT3B0aW9uYWwqKiBSb3V0aW5nIHRhYmxlIGZvciB0aGlzIGluc3Rh
bmNlLgorLy8gQ29uc3R1Y3RvciBmdW5jdGlvbiBmb3IgdGhlIFJvdXRlciBvYmplY3QgcmVzcG9u
c2libGUgZm9yIGJ1aWxkaW5nCisvLyBhbmQgZGlzcGF0Y2hpbmcgZnJvbSBhIGdpdmVuIHJvdXRp
bmcgdGFibGUuCisvLwordmFyIFJvdXRlciA9IGV4cG9ydHMuUm91dGVyID0gZnVuY3Rpb24gKHJv
dXRlcykgeworICB0aGlzLnBhcmFtcyAgID0ge307CisgIHRoaXMucm91dGVzICAgPSB7fTsKKyAg
dGhpcy5tZXRob2RzICA9IFsnb24nLCAnYWZ0ZXInLCAnYmVmb3JlJ107CisgIHRoaXMuc2NvcGUg
ICAgPSBbXTsKKyAgdGhpcy5fbWV0aG9kcyA9IHt9OworCisgIHRoaXMuY29uZmlndXJlKCk7Cisg
IHRoaXMubW91bnQocm91dGVzIHx8IHt9KTsKK307CisKKy8vCisvLyAjIyMgZnVuY3Rpb24gY29u
ZmlndXJlIChvcHRpb25zKQorLy8gIyMjIyBAb3B0aW9ucyB7T2JqZWN0fSAqKk9wdGlvbmFsKiog
T3B0aW9ucyB0byBjb25maWd1cmUgdGhpcyBpbnN0YW5jZSB3aXRoCisvLyBDb25maWd1cmVzIHRo
aXMgaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIGBvcHRpb25zYC4KKy8vCitSb3V0ZXIucHJv
dG90eXBlLmNvbmZpZ3VyZSA9IGZ1bmN0aW9uIChvcHRpb25zKSB7CisgIG9wdGlvbnMgPSBvcHRp
b25zIHx8IHt9OworCisgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5tZXRob2RzLmxlbmd0aDsg
aSsrKSB7CisgICAgdGhpcy5fbWV0aG9kc1t0aGlzLm1ldGhvZHNbaV1dID0gdHJ1ZTsKKyAgfQor
CisgIHRoaXMucmVjdXJzZSAgID0gdHlwZW9mIG9wdGlvbnMucmVjdXJzZSA9PT0gJ3VuZGVmaW5l
ZCcgPyB0aGlzLnJlY3Vyc2UgfHwgZmFsc2UgOiBvcHRpb25zLnJlY3Vyc2U7CisgIHRoaXMuYXN5
bmMgICAgID0gb3B0aW9ucy5hc3luYyAgICAgfHwgZmFsc2U7CisgIHRoaXMuZGVsaW1pdGVyID0g
b3B0aW9ucy5kZWxpbWl0ZXIgfHwgJ1wvJzsKKyAgdGhpcy5zdHJpY3QgICAgPSB0eXBlb2Ygb3B0
aW9ucy5zdHJpY3QgPT09ICd1bmRlZmluZWQnID8gdHJ1ZSA6IG9wdGlvbnMuc3RyaWN0OworICB0
aGlzLm5vdGZvdW5kICA9IG9wdGlvbnMubm90Zm91bmQ7CisgIHRoaXMucmVzb3VyY2UgID0gb3B0
aW9ucy5yZXNvdXJjZTsKKworICAvLyBDbGllbnQgb25seSwgYnV0IGJyb3dzZXIuanMgZG9lcyBu
b3QgaW5jbHVkZSBhIHN1cGVyIGltcGxlbWVudGF0aW9uCisgIHRoaXMuaGlzdG9yeSAgICAgPSAo
b3B0aW9ucy5odG1sNWhpc3RvcnkgJiYgdGhpcy5oaXN0b3J5U3VwcG9ydCkgfHwgZmFsc2U7Cisg
IHRoaXMucnVuX2luX2luaXQgPSAodGhpcy5oaXN0b3J5ID09PSB0cnVlICYmIG9wdGlvbnMucnVu
X2hhbmRsZXJfaW5faW5pdCAhPT0gZmFsc2UpOworICB0aGlzLmNvbnZlcnRfaGFzaF9pbl9pbml0
ID0gKHRoaXMuaGlzdG9yeSA9PT0gdHJ1ZSAmJiBvcHRpb25zLmNvbnZlcnRfaGFzaF9pbl9pbml0
ICE9PSBmYWxzZSk7CisKKyAgLy8KKyAgLy8gVE9ETzogR2xvYmFsIG9uY2UKKyAgLy8KKyAgdGhp
cy5ldmVyeSA9IHsKKyAgICBhZnRlcjogb3B0aW9ucy5hZnRlciB8fCBudWxsLAorICAgIGJlZm9y
ZTogb3B0aW9ucy5iZWZvcmUgfHwgbnVsbCwKKyAgICBvbjogb3B0aW9ucy5vbiB8fCBudWxsCisg
IH07CisKKyAgcmV0dXJuIHRoaXM7Cit9OworCisvLworLy8gIyMjIGZ1bmN0aW9uIHBhcmFtICh0
b2tlbiwgcmVnZXgpCisvLyAjIyMjIEB0b2tlbiB7c3RyaW5nfSBUb2tlbiB3aGljaCB0byByZXBs
YWNlIChlLmcuIGA6ZG9nYCwgJ2NhdCcpCisvLyAjIyMjIEBtYXRjaGVyIHtzdHJpbmd8UmVnRXhw
fSBUYXJnZXQgdG8gcmVwbGFjZSB0aGUgdG9rZW4gd2l0aC4KKy8vIFNldHVwcyB1cCBhIGBwYXJh
bXNgIGZ1bmN0aW9uIHdoaWNoIHJlcGxhY2VzIGFueSBpbnN0YW5jZSBvZiBgdG9rZW5gLAorLy8g
aW5zaWRlIG9mIGEgZ2l2ZW4gYHN0cmAgd2l0aCBgbWF0Y2hlcmAuIFRoaXMgaXMgdmVyeSB1c2Vm
dWwgaWYgeW91CisvLyBoYXZlIGEgY29tbW9uIHJlZ3VsYXIgZXhwcmVzc2lvbiB0aHJvdWdob3V0
IHlvdXIgY29kZSBiYXNlIHdoaWNoCisvLyB5b3Ugd2lzaCB0byBiZSBtb3JlIERSWS4KKy8vCitS
b3V0ZXIucHJvdG90eXBlLnBhcmFtID0gZnVuY3Rpb24gKHRva2VuLCBtYXRjaGVyKSB7CisgIGlm
ICh0b2tlblswXSAhPT0gJzonKSB7CisgICAgdG9rZW4gPSAnOicgKyB0b2tlbjsKKyAgfQorCisg
IHZhciBjb21waWxlZCA9IG5ldyBSZWdFeHAodG9rZW4sICdnJyk7CisgIHRoaXMucGFyYW1zW3Rv
a2VuXSA9IGZ1bmN0aW9uIChzdHIpIHsKKyAgICByZXR1cm4gc3RyLnJlcGxhY2UoY29tcGlsZWQs
IG1hdGNoZXIuc291cmNlIHx8IG1hdGNoZXIpOworICB9OworICByZXR1cm4gdGhpczsKK307CisK
Ky8vCisvLyAjIyMgZnVuY3Rpb24gb24gKG1ldGhvZCwgcGF0aCwgcm91dGUpCisvLyAjIyMjIEBt
ZXRob2Qge3N0cmluZ30gKipPcHRpb25hbCoqIE1ldGhvZCB0byB1c2UKKy8vICMjIyMgQHBhdGgg
e0FycmF5fHN0cmluZ30gUGF0aCB0byBzZXQgdGhpcyByb3V0ZSBvbi4KKy8vICMjIyMgQHJvdXRl
IHtBcnJheXxmdW5jdGlvbn0gSGFuZGxlciBmb3IgdGhlIHNwZWNpZmllZCBtZXRob2QgYW5kIHBh
dGguCisvLyBBZGRzIGEgbmV3IGByb3V0ZWAgdG8gdGhpcyBpbnN0YW5jZSBmb3IgdGhlIHNwZWNp
ZmllZCBgbWV0aG9kYAorLy8gYW5kIGBwYXRoYC4KKy8vCitSb3V0ZXIucHJvdG90eXBlLm9uID0g
Um91dGVyLnByb3RvdHlwZS5yb3V0ZSA9IGZ1bmN0aW9uIChtZXRob2QsIHBhdGgsIHJvdXRlKSB7
CisgIHZhciBzZWxmID0gdGhpczsKKworICBpZiAoIXJvdXRlICYmIHR5cGVvZiBwYXRoID09ICdm
dW5jdGlvbicpIHsKKyAgICAvLworICAgIC8vIElmIG9ubHkgdHdvIGFyZ3VtZW50cyBhcmUgc3Vw
cGxpZWQgdGhlbiBhc3N1bWUgdGhpcworICAgIC8vIGByb3V0ZWAgd2FzIG1lYW50IHRvIGJlIGEg
Z2VuZXJpYyBgb25gLgorICAgIC8vCisgICAgcm91dGUgPSBwYXRoOworICAgIHBhdGggPSBtZXRo
b2Q7CisgICAgbWV0aG9kID0gJ29uJzsKKyAgfQorCisgIGlmIChBcnJheS5pc0FycmF5KHBhdGgp
KSB7CisgICAgcmV0dXJuIHBhdGguZm9yRWFjaChmdW5jdGlvbihwKSB7CisgICAgICBzZWxmLm9u
KG1ldGhvZCwgcCwgcm91dGUpOworICAgIH0pOworICB9CisKKyAgaWYgKHBhdGguc291cmNlKSB7
CisgICAgcGF0aCA9IHBhdGguc291cmNlLnJlcGxhY2UoL1xcXC8vaWcsICcvJyk7CisgIH0KKwor
ICBpZiAoQXJyYXkuaXNBcnJheShtZXRob2QpKSB7CisgICAgcmV0dXJuIG1ldGhvZC5mb3JFYWNo
KGZ1bmN0aW9uIChtKSB7CisgICAgICBzZWxmLm9uKG0udG9Mb3dlckNhc2UoKSwgcGF0aCwgcm91
dGUpOworICAgIH0pOworICB9CisKKyAgLy8KKyAgLy8gIyMjIFNwbGl0IHRoZSByb3V0ZSB1cCBi
eSB0aGUgZGVsaW1pdGVyLgorICAvLworICBwYXRoID0gcGF0aC5zcGxpdChuZXcgUmVnRXhwKHRo
aXMuZGVsaW1pdGVyKSk7CisKKyAgLy8KKyAgLy8gIyMjIEZpeCB1bnRlcm1pbmF0ZWQgZ3JvdXBz
LiBGaXhlcyAjNTkKKyAgLy8KKyAgcGF0aCA9IHRlcm1pbmF0b3IocGF0aCwgdGhpcy5kZWxpbWl0
ZXIpOworCisgIHRoaXMuaW5zZXJ0KG1ldGhvZCwgdGhpcy5zY29wZS5jb25jYXQocGF0aCksIHJv
dXRlKTsKK307CisKKy8vCisvLyAjIyMgZnVuY3Rpb24gcGF0aCAocGF0aCwgcm91dGVzRm4pCisv
LyAjIyMjIEBwYXRoIHtzdHJpbmd8UmVnRXhwfSBOZXN0ZWQgc2NvcGUgaW4gd2hpY2ggdG8gcGF0
aAorLy8gIyMjIyBAcm91dGVzRm4ge2Z1bmN0aW9ufSBGdW5jdGlvbiB0byBldmFsdWF0ZSBpbiB0
aGUgbmV3IHNjb3BlCisvLyBFdmFsdXRlcyB0aGUgYHJvdXRlc0ZuYCBpbiB0aGUgZ2l2ZW4gcGF0
aCBzY29wZS4KKy8vCitSb3V0ZXIucHJvdG90eXBlLnBhdGggPSBmdW5jdGlvbiAocGF0aCwgcm91
dGVzRm4pIHsKKyAgdmFyIHNlbGYgPSB0aGlzLAorICAgICAgbGVuZ3RoID0gdGhpcy5zY29wZS5s
ZW5ndGg7CisKKyAgaWYgKHBhdGguc291cmNlKSB7CisgICAgcGF0aCA9IHBhdGguc291cmNlLnJl
cGxhY2UoL1xcXC8vaWcsICcvJyk7CisgIH0KKworICAvLworICAvLyAjIyMgU3BsaXQgdGhlIHJv
dXRlIHVwIGJ5IHRoZSBkZWxpbWl0ZXIuCisgIC8vCisgIHBhdGggPSBwYXRoLnNwbGl0KG5ldyBS
ZWdFeHAodGhpcy5kZWxpbWl0ZXIpKTsKKworICAvLworICAvLyAjIyMgRml4IHVudGVybWluYXRl
ZCBncm91cHMuCisgIC8vCisgIHBhdGggPSB0ZXJtaW5hdG9yKHBhdGgsIHRoaXMuZGVsaW1pdGVy
KTsKKyAgdGhpcy5zY29wZSA9IHRoaXMuc2NvcGUuY29uY2F0KHBhdGgpOworCisgIHJvdXRlc0Zu
LmNhbGwodGhpcywgdGhpcyk7CisgIHRoaXMuc2NvcGUuc3BsaWNlKGxlbmd0aCwgcGF0aC5sZW5n
dGgpOworfTsKKworLy8KKy8vICMjIyBmdW5jdGlvbiBkaXNwYXRjaCAobWV0aG9kLCBwYXRoWywg
Y2FsbGJhY2tdKQorLy8gIyMjIyBAbWV0aG9kIHtzdHJpbmd9IE1ldGhvZCB0byBkaXNwYXRjaAor
Ly8gIyMjIyBAcGF0aCB7c3RyaW5nfSBQYXRoIHRvIGRpc3BhdGNoCisvLyAjIyMjIEBjYWxsYmFj
ayB7ZnVuY3Rpb259ICoqT3B0aW9uYWwqKiBDb250aW51YXRpb24gdG8gcmVzcG9uZCB0byBmb3Ig
YXN5bmMgc2NlbmFyaW9zLgorLy8gRmluZHMgYSBzZXQgb2YgZnVuY3Rpb25zIG9uIHRoZSB0cmF2
ZXJzYWwgdG93YXJkcworLy8gYG1ldGhvZGAgYW5kIGBwYXRoYCBpbiB0aGUgY29yZSByb3V0aW5n
IHRhYmxlIHRoZW4KKy8vIGludm9rZXMgdGhlbSBiYXNlZCBvbiBzZXR0aW5ncyBpbiB0aGlzIGlu
c3RhbmNlLgorLy8KK1JvdXRlci5wcm90b3R5cGUuZGlzcGF0Y2ggPSBmdW5jdGlvbiAobWV0aG9k
LCBwYXRoLCBjYWxsYmFjaykgeworICB2YXIgc2VsZiA9IHRoaXMsCisgICAgICBmbnMgPSB0aGlz
LnRyYXZlcnNlKG1ldGhvZCwgcGF0aC5yZXBsYWNlKFFVRVJZX1NFUEFSQVRPUiwgJycpLCB0aGlz
LnJvdXRlcywgJycpLAorICAgICAgaW52b2tlZCA9IHRoaXMuX2ludm9rZWQsCisgICAgICBhZnRl
cjsKKworICB0aGlzLl9pbnZva2VkID0gdHJ1ZTsKKyAgaWYgKCFmbnMgfHwgZm5zLmxlbmd0aCA9
PT0gMCkgeworICAgIHRoaXMubGFzdCA9IFtdOworICAgIGlmICh0eXBlb2YgdGhpcy5ub3Rmb3Vu
ZCA9PT0gJ2Z1bmN0aW9uJykgeworICAgICAgdGhpcy5pbnZva2UoW3RoaXMubm90Zm91bmRdLCB7
IG1ldGhvZDogbWV0aG9kLCBwYXRoOiBwYXRoIH0sIGNhbGxiYWNrKTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gZmFsc2U7CisgIH0KKworICBpZiAodGhpcy5yZWN1cnNlID09PSAnZm9yd2FyZCcpIHsK
KyAgICBmbnMgPSBmbnMucmV2ZXJzZSgpOworICB9CisKKyAgZnVuY3Rpb24gdXBkYXRlQW5kSW52
b2tlKCkgeworICAgIHNlbGYubGFzdCA9IGZucy5hZnRlcjsKKyAgICBzZWxmLmludm9rZShzZWxm
LnJ1bmxpc3QoZm5zKSwgc2VsZiwgY2FsbGJhY2spOworICB9CisKKyAgLy8KKyAgLy8gQnVpbGRz
IHRoZSBsaXN0IG9mIGZ1bmN0aW9ucyB0byBpbnZva2UgZnJvbSB0aGlzIGNhbGwKKyAgLy8gdG8g
ZGlzcGF0Y2ggY29uZm9ybWluZyB0byB0aGUgZm9sbG93aW5nIG9yZGVyOgorICAvLworICAvLyAx
LiBHbG9iYWwgYWZ0ZXIgKGlmIGFueSkKKyAgLy8gMi4gQWZ0ZXIgZnVuY3Rpb25zIGZyb20gdGhl
IGxhc3QgY2FsbCB0byBkaXNwYXRjaAorICAvLyAzLiBHbG9iYWwgYmVmb3JlIChpZiBhbnkpCisg
IC8vIDQuIEdsb2JhbCBvbiAoaWYgYW55KQorICAvLyA1LiBNYXRjaGVkIGZ1bmN0aW9ucyBmcm9t
IHJvdXRpbmcgdGFibGUgKGBbJ2JlZm9yZScsICdvbiddLCBbJ2JlZm9yZScsICdvbmBdLCAuLi5d
YCkKKyAgLy8KKyAgYWZ0ZXIgPSB0aGlzLmV2ZXJ5ICYmIHRoaXMuZXZlcnkuYWZ0ZXIKKyAgICA/
IFt0aGlzLmV2ZXJ5LmFmdGVyXS5jb25jYXQodGhpcy5sYXN0KQorICAgIDogW3RoaXMubGFzdF07
CisKKyAgaWYgKGFmdGVyICYmIGFmdGVyLmxlbmd0aCA+IDAgJiYgaW52b2tlZCkgeworICAgIGlm
ICh0aGlzLmFzeW5jKSB7CisgICAgICB0aGlzLmludm9rZShhZnRlciwgdGhpcywgdXBkYXRlQW5k
SW52b2tlKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICB0aGlzLmludm9rZShhZnRlciwgdGhp
cyk7CisgICAgICB1cGRhdGVBbmRJbnZva2UoKTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsK
KyAgfQorCisgIHVwZGF0ZUFuZEludm9rZSgpOworICByZXR1cm4gdHJ1ZTsKK307CisKKy8vCisv
LyAjIyMgZnVuY3Rpb24gcnVubGlzdCAoZm5zKQorLy8gIyMjIyBAZm5zIHtBcnJheX0gTGlzdCBv
ZiBmdW5jdGlvbnMgdG8gaW5jbHVkZSBpbiB0aGUgcnVubGlzdAorLy8gQnVpbGRzIHRoZSBsaXN0
IG9mIGZ1bmN0aW9ucyB0byBpbnZva2UgZnJvbSB0aGlzIGNhbGwKKy8vIHRvIGRpc3BhdGNoIGNv
bmZvcm1pbmcgdG8gdGhlIGZvbGxvd2luZyBvcmRlcjoKKy8vCisvLyAxLiBHbG9iYWwgYmVmb3Jl
IChpZiBhbnkpCisvLyAyLiBHbG9iYWwgb24gKGlmIGFueSkKKy8vIDMuIE1hdGNoZWQgZnVuY3Rp
b25zIGZyb20gcm91dGluZyB0YWJsZSAoYFsnYmVmb3JlJywgJ29uJ10sIFsnYmVmb3JlJywgJ29u
YF0sIC4uLl1gKQorLy8KK1JvdXRlci5wcm90b3R5cGUucnVubGlzdCA9IGZ1bmN0aW9uIChmbnMp
IHsKKyAgdmFyIHJ1bmxpc3QgPSB0aGlzLmV2ZXJ5ICYmIHRoaXMuZXZlcnkuYmVmb3JlCisgICAg
PyBbdGhpcy5ldmVyeS5iZWZvcmVdLmNvbmNhdChfZmxhdHRlbihmbnMpKQorICAgIDogX2ZsYXR0
ZW4oZm5zKTsKKworICBpZiAodGhpcy5ldmVyeSAmJiB0aGlzLmV2ZXJ5Lm9uKSB7CisgICAgcnVu
bGlzdC5wdXNoKHRoaXMuZXZlcnkub24pOworICB9CisKKyAgcnVubGlzdC5jYXB0dXJlcyA9IGZu
cy5jYXB0dXJlczsKKyAgcnVubGlzdC5zb3VyY2UgPSBmbnMuc291cmNlOworICByZXR1cm4gcnVu
bGlzdDsKK307CisKKy8vCisvLyAjIyMgZnVuY3Rpb24gaW52b2tlIChmbnMsIHRoaXNBcmcpCisv
LyAjIyMjIEBmbnMge0FycmF5fSBTZXQgb2YgZnVuY3Rpb25zIHRvIGludm9rZSBpbiBvcmRlci4K
Ky8vICMjIyMgQHRoaXNBcmcge09iamVjdH0gYHRoaXNBcmdgIGZvciBlYWNoIGZ1bmN0aW9uLgor
Ly8gIyMjIyBAY2FsbGJhY2sge2Z1bmN0aW9ufSAqKk9wdGlvbmFsKiogQ29udGludWF0aW9uIHRv
IHBhc3MgY29udHJvbCB0byBmb3IgYXN5bmMgYGZuc2AuCisvLyBJbnZva2VzIHRoZSBgZm5zYCBz
eW5jaHJvbm91c2x5IG9yIGFzeW5jaHJvbm91c2x5IGRlcGVuZGluZyBvbiB0aGUKKy8vIHZhbHVl
IG9mIGB0aGlzLmFzeW5jYC4gRWFjaCBmdW5jdGlvbiBtdXN0ICoqbm90KiogcmV0dXJuIChvciBy
ZXNwb25kKQorLy8gd2l0aCBmYWxzZSwgb3IgZXZhbHVhdGlvbiB3aWxsIHNob3J0IGNpcmN1aXQu
CisvLworUm91dGVyLnByb3RvdHlwZS5pbnZva2UgPSBmdW5jdGlvbiAoZm5zLCB0aGlzQXJnLCBj
YWxsYmFjaykgeworICB2YXIgc2VsZiA9IHRoaXM7CisKKyAgdmFyIGFwcGx5OworICBpZiAodGhp
cy5hc3luYykgeworICAgIGFwcGx5ID0gZnVuY3Rpb24oZm4sIG5leHQpeworICAgICAgaWYgKEFy
cmF5LmlzQXJyYXkoZm4pKSB7CisgICAgICAgIHJldHVybiBfYXN5bmNFdmVyeVNlcmllcyhmbiwg
YXBwbHksIG5leHQpOworICAgICAgfQorICAgICAgZWxzZSBpZiAodHlwZW9mIGZuID09ICdmdW5j
dGlvbicpIHsKKyAgICAgICAgZm4uYXBwbHkodGhpc0FyZywgKGZucy5jYXB0dXJlcyB8fCBbXSku
Y29uY2F0KG5leHQpKTsKKyAgICAgIH0KKyAgICB9OworICAgIF9hc3luY0V2ZXJ5U2VyaWVzKGZu
cywgYXBwbHksIGZ1bmN0aW9uICgpIHsKKyAgICAgIC8vCisgICAgICAvLyBJZ25vcmUgdGhlIHJl
c3BvbnNlIGhlcmUuIExldCB0aGUgcm91dGVkIHRha2UgY2FyZQorICAgICAgLy8gb2YgdGhlbXNl
bHZlcyBhbmQgZWFnZXJseSByZXR1cm4gdHJ1ZS4KKyAgICAgIC8vCisKKyAgICAgIGlmIChjYWxs
YmFjaykgeworICAgICAgICBjYWxsYmFjay5hcHBseSh0aGlzQXJnLCBhcmd1bWVudHMpOworICAg
ICAgfQorICAgIH0pOworICB9CisgIGVsc2UgeworICAgIGFwcGx5ID0gZnVuY3Rpb24oZm4pewor
ICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZm4pKSB7CisgICAgICAgIHJldHVybiBfZXZlcnkoZm4s
IGFwcGx5KTsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKHR5cGVvZiBmbiA9PT0gJ2Z1bmN0aW9u
JykgeworICAgICAgICByZXR1cm4gZm4uYXBwbHkodGhpc0FyZywgZm5zLmNhcHR1cmVzIHx8IFtd
KTsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKHR5cGVvZiBmbiA9PT0gJ3N0cmluZycgJiYgc2Vs
Zi5yZXNvdXJjZSkgeworICAgICAgICBzZWxmLnJlc291cmNlW2ZuXS5hcHBseSh0aGlzQXJnLCBm
bnMuY2FwdHVyZXMgfHwgW10pOworICAgICAgfQorICAgIH0KKyAgICBfZXZlcnkoZm5zLCBhcHBs
eSk7CisgIH0KK307CisKKy8vCisvLyAjIyMgZnVuY3Rpb24gdHJhdmVyc2UgKG1ldGhvZCwgcGF0
aCwgcm91dGVzLCByZWdleHApCisvLyAjIyMjIEBtZXRob2Qge3N0cmluZ30gTWV0aG9kIHRvIGZp
bmQgaW4gdGhlIGByb3V0ZXNgIHRhYmxlLgorLy8gIyMjIyBAcGF0aCB7c3RyaW5nfSBQYXRoIHRv
IGZpbmQgaW4gdGhlIGByb3V0ZXNgIHRhYmxlLgorLy8gIyMjIyBAcm91dGVzIHtPYmplY3R9IFBh
cnRpYWwgcm91dGluZyB0YWJsZSB0byBtYXRjaCBhZ2FpbnN0CisvLyAjIyMjIEByZWdleHAge3N0
cmluZ30gUGFydGlhbCByZWdleHAgcmVwcmVzZW50aW5nIHRoZSBwYXRoIHRvIGByb3V0ZXNgLgor
Ly8gIyMjIyBAZmlsdGVyIHtmdW5jdGlvbn0gRmlsdGVyIGZ1bmN0aW9uIGZvciBmaWx0ZXJpbmcg
cm91dGVzIChleHBlbnNpdmUpLgorLy8gQ29yZSByb3V0aW5nIGxvZ2ljIGZvciBgZGlyZWN0b3Iu
Um91dGVyYDogdHJhdmVyc2VzIHRoZQorLy8gc3BlY2lmaWVkIGBwYXRoYCB3aXRoaW4gYHRoaXMu
cm91dGVzYCBsb29raW5nIGZvciBgbWV0aG9kYAorLy8gcmV0dXJuaW5nIGFueSBgZm5zYCB0aGF0
IGFyZSBmb3VuZC4KKy8vCitSb3V0ZXIucHJvdG90eXBlLnRyYXZlcnNlID0gZnVuY3Rpb24gKG1l
dGhvZCwgcGF0aCwgcm91dGVzLCByZWdleHAsIGZpbHRlcikgeworICB2YXIgZm5zID0gW10sCisg
ICAgICBjdXJyZW50LAorICAgICAgZXhhY3QsCisgICAgICBtYXRjaCwKKyAgICAgIG5leHQsCisg
ICAgICB0aGF0OworCisgIGZ1bmN0aW9uIGZpbHRlclJvdXRlcyhyb3V0ZXMpIHsKKyAgICBpZiAo
IWZpbHRlcikgeworICAgICAgcmV0dXJuIHJvdXRlczsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBk
ZWVwQ29weShzb3VyY2UpIHsKKyAgICAgIHZhciByZXN1bHQgPSBbXTsKKyAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgc291cmNlLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIHJlc3VsdFtpXSA9IEFy
cmF5LmlzQXJyYXkoc291cmNlW2ldKSA/IGRlZXBDb3B5KHNvdXJjZVtpXSkgOiBzb3VyY2VbaV07
CisgICAgICB9CisgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIGZ1bmN0aW9uIGFw
cGx5RmlsdGVyKGZucykgeworICAgICAgZm9yICh2YXIgaSA9IGZucy5sZW5ndGggLSAxOyBpID49
IDA7IGktLSkgeworICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShmbnNbaV0pKSB7CisgICAgICAg
ICAgYXBwbHlGaWx0ZXIoZm5zW2ldKTsKKyAgICAgICAgICBpZiAoZm5zW2ldLmxlbmd0aCA9PT0g
MCkgeworICAgICAgICAgICAgZm5zLnNwbGljZShpLCAxKTsKKyAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgaWYgKCFmaWx0ZXIoZm5zW2ldKSkgeworICAg
ICAgICAgICAgZm5zLnNwbGljZShpLCAxKTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YXIgbmV3Um91dGVzID0gZGVlcENvcHkocm91dGVzKTsKKyAgICBu
ZXdSb3V0ZXMubWF0Y2hlZCA9IHJvdXRlcy5tYXRjaGVkOworICAgIG5ld1JvdXRlcy5jYXB0dXJl
cyA9IHJvdXRlcy5jYXB0dXJlczsKKyAgICBuZXdSb3V0ZXMuYWZ0ZXIgPSByb3V0ZXMuYWZ0ZXIu
ZmlsdGVyKGZpbHRlcik7CisKKyAgICBhcHBseUZpbHRlcihuZXdSb3V0ZXMpOworCisgICAgcmV0
dXJuIG5ld1JvdXRlczsKKyAgfQorCisgIC8vCisgIC8vIEJhc2UgQ2FzZSAjMToKKyAgLy8gSWYg
d2UgYXJlIGRpc3BhdGNoaW5nIGZyb20gdGhlIHJvb3QKKyAgLy8gdGhlbiBvbmx5IGNoZWNrIGlm
IHRoZSBtZXRob2QgZXhpc3RzLgorICAvLworICBpZiAocGF0aCA9PT0gdGhpcy5kZWxpbWl0ZXIg
JiYgcm91dGVzW21ldGhvZF0pIHsKKyAgICBuZXh0ID0gW1tyb3V0ZXMuYmVmb3JlLCByb3V0ZXNb
bWV0aG9kXV0uZmlsdGVyKEJvb2xlYW4pXTsKKyAgICBuZXh0LmFmdGVyID0gW3JvdXRlcy5hZnRl
cl0uZmlsdGVyKEJvb2xlYW4pOworICAgIG5leHQubWF0Y2hlZCA9IHRydWU7CisgICAgbmV4dC5j
YXB0dXJlcyA9IFtdOworICAgIHJldHVybiBmaWx0ZXJSb3V0ZXMobmV4dCk7CisgIH0KKworICBm
b3IgKHZhciByIGluIHJvdXRlcykgeworICAgIC8vCisgICAgLy8gV2UgZG9udCBoYXZlIGFuIGV4
YWN0IG1hdGNoLCBsZXRzIGV4cGxvcmUgdGhlIHRyZWUKKyAgICAvLyBpbiBhIGRlcHRoLWZpcnN0
LCByZWN1cnNpdmUsIGluLW9yZGVyIG1hbm5lciB3aGVyZQorICAgIC8vIG9yZGVyIGlzIGRlZmlu
ZWQgYXM6CisgICAgLy8KKyAgICAvLyAgICBbJ2JlZm9yZScsICdvbicsICc8bWV0aG9kPicsICdh
ZnRlciddCisgICAgLy8KKyAgICAvLyBSZW1lbWJlciB0byBpZ25vcmUga2V5cyAoaS5lLiB2YWx1
ZXMgb2YgYHJgKSB3aGljaAorICAgIC8vIGFyZSBhY3R1YWwgbWV0aG9kcyAoZS5nLiBgb25gLCBg
YmVmb3JlYCwgZXRjKSwgYnV0CisgICAgLy8gd2hpY2ggYXJlIG5vdCBhY3R1YWwgbmVzdGVkIHJv
dXRlIChpLmUuIEpTT04gbGl0ZXJhbHMpLgorICAgIC8vCisgICAgaWYgKHJvdXRlcy5oYXNPd25Q
cm9wZXJ0eShyKSAmJiAoIXRoaXMuX21ldGhvZHNbcl0gfHwKKyAgICAgIHRoaXMuX21ldGhvZHNb
cl0gJiYgdHlwZW9mIHJvdXRlc1tyXSA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkocm91
dGVzW3JdKSkpIHsKKyAgICAgIC8vCisgICAgICAvLyBBdHRlbXB0IHRvIG1ha2UgYW4gZXhhY3Qg
bWF0Y2ggZm9yIHRoZSBjdXJyZW50IHJvdXRlCisgICAgICAvLyB3aGljaCBpcyBidWlsdCBmcm9t
IHRoZSBgcmVnZXhwYCB0aGF0IGhhcyBiZWVuIGJ1aWx0CisgICAgICAvLyB0aHJvdWdoIHJlY3Vy
c2l2ZSBpdGVyYXRpb24uCisgICAgICAvLworICAgICAgY3VycmVudCA9IGV4YWN0ID0gcmVnZXhw
ICsgdGhpcy5kZWxpbWl0ZXIgKyByOworCisgICAgICBpZiAoIXRoaXMuc3RyaWN0KSB7CisgICAg
ICAgIGV4YWN0ICs9ICdbJyArIHRoaXMuZGVsaW1pdGVyICsgJ10/JzsKKyAgICAgIH0KKworICAg
ICAgbWF0Y2ggPSBwYXRoLm1hdGNoKG5ldyBSZWdFeHAoJ14nICsgZXhhY3QpKTsKKworICAgICAg
aWYgKCFtYXRjaCkgeworICAgICAgICAvLworICAgICAgICAvLyBJZiB0aGVyZSBpc24ndCBhIGBt
YXRjaGAgdGhlbiBjb250aW51ZS4gSGVyZSwgdGhlCisgICAgICAgIC8vIGBtYXRjaGAgaXMgYSBw
YXJ0aWFsIG1hdGNoLiBlLmcuCisgICAgICAgIC8vCisgICAgICAgIC8vICAgICcvZm9vL2Jhci9i
dXp6Jy5tYXRjaCgvXlwvZm9vLykgICAvLyBbJy9mb28nXQorICAgICAgICAvLyAgICAnL25vLW1h
dGNoL3JvdXRlJy5tYXRjaCgvXlwvZm9vLykgLy8gbnVsbAorICAgICAgICAvLworICAgICAgICBj
b250aW51ZTsKKyAgICAgIH0KKworICAgICAgaWYgKG1hdGNoWzBdICYmIG1hdGNoWzBdID09IHBh
dGggJiYgcm91dGVzW3JdW21ldGhvZF0pIHsKKyAgICAgICAgLy8KKyAgICAgICAgLy8gIyMjIEJh
c2UgY2FzZSAyOgorICAgICAgICAvLyBJZiB3ZSBoYWQgYSBgbWF0Y2hgIGFuZCB0aGUgY2FwdHVy
ZSBpcyB0aGUgcGF0aCBpdHNlbGYsCisgICAgICAgIC8vIHRoZW4gd2UgaGF2ZSBjb21wbGV0ZWQg
b3VyIHJlY3Vyc2lvbi4KKyAgICAgICAgLy8KKyAgICAgICAgbmV4dCA9IFtbcm91dGVzW3JdLmJl
Zm9yZSwgcm91dGVzW3JdW21ldGhvZF1dLmZpbHRlcihCb29sZWFuKV07CisgICAgICAgIG5leHQu
YWZ0ZXIgPSBbcm91dGVzW3JdLmFmdGVyXS5maWx0ZXIoQm9vbGVhbik7CisgICAgICAgIG5leHQu
bWF0Y2hlZCA9IHRydWU7CisgICAgICAgIG5leHQuY2FwdHVyZXMgPSBtYXRjaC5zbGljZSgxKTsK
KworICAgICAgICBpZiAodGhpcy5yZWN1cnNlICYmIHJvdXRlcyA9PT0gdGhpcy5yb3V0ZXMpIHsK
KyAgICAgICAgICBuZXh0LnB1c2goW3JvdXRlcy5iZWZvcmUsIHJvdXRlcy5vbl0uZmlsdGVyKEJv
b2xlYW4pKTsKKyAgICAgICAgICBuZXh0LmFmdGVyID0gbmV4dC5hZnRlci5jb25jYXQoW3JvdXRl
cy5hZnRlcl0uZmlsdGVyKEJvb2xlYW4pKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBm
aWx0ZXJSb3V0ZXMobmV4dCk7CisgICAgICB9CisKKyAgICAgIC8vCisgICAgICAvLyAjIyMgUmVj
dXJzaXZlIGNhc2U6CisgICAgICAvLyBJZiB3ZSBoYWQgYSBtYXRjaCwgYnV0IGl0IGlzIG5vdCB5
ZXQgYW4gZXhhY3QgbWF0Y2ggdGhlbgorICAgICAgLy8gYXR0ZW1wdCB0byBjb250aW51ZSBtYXRj
aGluZyBhZ2FpbnN0IHRoZSBuZXh0IHBvcnRpb24gb2YgdGhlCisgICAgICAvLyByb3V0aW5nIHRh
YmxlLgorICAgICAgLy8KKyAgICAgIG5leHQgPSB0aGlzLnRyYXZlcnNlKG1ldGhvZCwgcGF0aCwg
cm91dGVzW3JdLCBjdXJyZW50KTsKKworICAgICAgLy8KKyAgICAgIC8vIGBuZXh0Lm1hdGNoZWRg
IHdpbGwgYmUgdHJ1ZSBpZiB0aGUgZGVwdGgtZmlyc3Qgc2VhcmNoIG9mIHRoZSByb3V0aW5nCisg
ICAgICAvLyB0YWJsZSBmcm9tIHRoaXMgcG9zaXRpb24gd2FzIHN1Y2Nlc3NmdWwuCisgICAgICAv
LworICAgICAgaWYgKG5leHQubWF0Y2hlZCkgeworICAgICAgICAvLworICAgICAgICAvLyBCdWls
ZCB0aGUgaW4tcGxhY2UgdHJlZSBzdHJ1Y3R1cmUgcmVwcmVzZW50aW5nIHRoZSBmdW5jdGlvbgor
ICAgICAgICAvLyBpbiB0aGUgY29ycmVjdCBvcmRlci4KKyAgICAgICAgLy8KKyAgICAgICAgaWYg
KG5leHQubGVuZ3RoID4gMCkgeworICAgICAgICAgIGZucyA9IGZucy5jb25jYXQobmV4dCk7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAodGhpcy5yZWN1cnNlKSB7CisgICAgICAgICAgZm5zLnB1
c2goW3JvdXRlc1tyXS5iZWZvcmUsIHJvdXRlc1tyXVttZXRob2RdXS5maWx0ZXIoQm9vbGVhbikp
OworICAgICAgICAgIG5leHQuYWZ0ZXIgPSBuZXh0LmFmdGVyLmNvbmNhdChbcm91dGVzW3JdLmFm
dGVyXS5maWx0ZXIoQm9vbGVhbikpOworCisgICAgICAgICAgaWYgKHJvdXRlcyA9PT0gdGhpcy5y
b3V0ZXMpIHsKKyAgICAgICAgICAgIGZucy5wdXNoKFtyb3V0ZXNbJ2JlZm9yZSddLCByb3V0ZXNb
J29uJ11dLmZpbHRlcihCb29sZWFuKSk7CisgICAgICAgICAgICBuZXh0LmFmdGVyID0gbmV4dC5h
ZnRlci5jb25jYXQoW3JvdXRlc1snYWZ0ZXInXV0uZmlsdGVyKEJvb2xlYW4pKTsKKyAgICAgICAg
ICB9CisgICAgICAgIH0KKworICAgICAgICBmbnMubWF0Y2hlZCA9IHRydWU7CisgICAgICAgIGZu
cy5jYXB0dXJlcyA9IG5leHQuY2FwdHVyZXM7CisgICAgICAgIGZucy5hZnRlciA9IG5leHQuYWZ0
ZXI7CisKKyAgICAgICAgLy8KKyAgICAgICAgLy8gIyMjIEJhc2UgY2FzZSAyOgorICAgICAgICAv
LyBDb250aW51ZSBwYXNzaW5nIHRoZSBwYXJ0aWFsIHRyZWUgc3RydWN0dXJlIGJhY2sgdXAgdGhl
IHN0YWNrLgorICAgICAgICAvLyBUaGUgY2FsbGVyIGZvciBgZGlzcGF0Y2goKWAgd2lsbCBkZWNp
ZGUgd2hhdCB0byBkbyB3aXRoIHRoZSBmdW5jdGlvbnMuCisgICAgICAgIC8vCisgICAgICAgIHJl
dHVybiBmaWx0ZXJSb3V0ZXMoZm5zKTsKKyAgICAgIH0KKyAgICB9CisgIH0KKworICByZXR1cm4g
ZmFsc2U7Cit9OworCisvLworLy8gIyMjIGZ1bmN0aW9uIGluc2VydCAobWV0aG9kLCBwYXRoLCBy
b3V0ZSwgY29udGV4dCkKKy8vICMjIyMgQG1ldGhvZCB7c3RyaW5nfSBNZXRob2QgdG8gaW5zZXJ0
IHRoZSBzcGVjaWZpYyBgcm91dGVgLgorLy8gIyMjIyBAcGF0aCB7QXJyYXl9IFBhcnNlZCBwYXRo
IHRvIGluc2VydCB0aGUgYHJvdXRlYCBhdC4KKy8vICMjIyMgQHJvdXRlIHtBcnJheXxmdW5jdGlv
bn0gUm91dGUgaGFuZGxlcnMgdG8gaW5zZXJ0LgorLy8gIyMjIyBAcGFyZW50IHtPYmplY3R9ICoq
T3B0aW9uYWwqKiBQYXJlbnQgInJvdXRlcyIgdG8gaW5zZXJ0IGludG8uCisvLyBJbnNlcnRzIHRo
ZSBgcm91dGVgIGZvciB0aGUgYG1ldGhvZGAgaW50byB0aGUgcm91dGluZyB0YWJsZSBmb3IKKy8v
IHRoaXMgaW5zdGFuY2UgYXQgdGhlIHNwZWNpZmllZCBgcGF0aGAgd2l0aGluIHRoZSBgY29udGV4
dGAgcHJvdmlkZWQuCisvLyBJZiBubyBjb250ZXh0IGlzIHByb3ZpZGVkIHRoZW4gYHRoaXMucm91
dGVzYCB3aWxsIGJlIHVzZWQuCisvLworUm91dGVyLnByb3RvdHlwZS5pbnNlcnQgPSBmdW5jdGlv
biAobWV0aG9kLCBwYXRoLCByb3V0ZSwgcGFyZW50KSB7CisgIHZhciBtZXRob2RUeXBlLAorICAg
ICAgcGFyZW50VHlwZSwKKyAgICAgIGlzQXJyYXksCisgICAgICBuZXN0ZWQsCisgICAgICBwYXJ0
OworCisgIHBhdGggPSBwYXRoLmZpbHRlcihmdW5jdGlvbiAocCkgeworICAgIHJldHVybiBwICYm
IHAubGVuZ3RoID4gMDsKKyAgfSk7CisKKyAgcGFyZW50ID0gcGFyZW50IHx8IHRoaXMucm91dGVz
OworICBwYXJ0ID0gcGF0aC5zaGlmdCgpOworICBpZiAoL1w6fFwqLy50ZXN0KHBhcnQpICYmICEv
XFxkfFxcdy8udGVzdChwYXJ0KSkgeworICAgIHBhcnQgPSByZWdpZnlTdHJpbmcocGFydCwgdGhp
cy5wYXJhbXMpOworICB9CisKKyAgaWYgKHBhdGgubGVuZ3RoID4gMCkgeworICAgIC8vCisgICAg
Ly8gSWYgdGhpcyBpcyBub3QgdGhlIGxhc3QgcGFydCBsZWZ0IGluIHRoZSBgcGF0aGAKKyAgICAv
LyAoZS5nLiBgWydjaXRpZXMnLCAnbmV3LXlvcmsnXWApIHRoZW4gcmVjdXJzZSBpbnRvIHRoYXQK
KyAgICAvLyBjaGlsZAorICAgIC8vCisgICAgcGFyZW50W3BhcnRdID0gcGFyZW50W3BhcnRdIHx8
IHt9OworICAgIHJldHVybiB0aGlzLmluc2VydChtZXRob2QsIHBhdGgsIHJvdXRlLCBwYXJlbnRb
cGFydF0pOworICB9CisKKyAgLy8KKyAgLy8gSWYgdGhlcmUgaXMgbm8gcGFydCBhbmQgdGhlIHBh
dGggaGFzIGJlZW4gZXhoYXVzdGVkCisgIC8vIGFuZCB0aGUgcGFyZW50IGlzIHRoZSByb290IG9m
IHRoZSByb3V0aW5nIHRhYmxlLAorICAvLyB0aGVuIHdlIGFyZSBpbnNlcnRpbmcgaW50byB0aGUg
cm9vdCBhbmQgc2hvdWxkCisgIC8vIG9ubHkgZGl2ZSBvbmUgbGV2ZWwgZGVlcCBpbiB0aGUgUm91
dGluZyBUYWJsZS4KKyAgLy8KKyAgaWYgKCFwYXJ0ICYmICFwYXRoLmxlbmd0aCAmJiBwYXJlbnQg
PT09IHRoaXMucm91dGVzKSB7CisgICAgbWV0aG9kVHlwZSA9IHR5cGVvZiBwYXJlbnRbbWV0aG9k
XTsKKworICAgIHN3aXRjaCAobWV0aG9kVHlwZSkgeworICAgICAgY2FzZSAnZnVuY3Rpb24nOgor
ICAgICAgICBwYXJlbnRbbWV0aG9kXSA9IFtwYXJlbnRbbWV0aG9kXSwgcm91dGVdOworICAgICAg
ICByZXR1cm47CisgICAgICBjYXNlICdvYmplY3QnOgorICAgICAgICBwYXJlbnRbbWV0aG9kXS5w
dXNoKHJvdXRlKTsKKyAgICAgICAgcmV0dXJuOworICAgICAgY2FzZSAndW5kZWZpbmVkJzoKKyAg
ICAgICAgcGFyZW50W21ldGhvZF0gPSByb3V0ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIHJldHVybjsKKyAgfQorCisgIC8vCisgIC8vIE90aGVyd2lzZSwgd2UgYXJlIGF0IHRoZSBl
bmQgb2Ygb3VyIGluc2VydGlvbiBzbyB3ZSBzaG91bGQKKyAgLy8gaW5zZXJ0IHRoZSBgcm91dGVg
IGJhc2VkIG9uIHRoZSBgbWV0aG9kYCBhZnRlciBnZXR0aW5nIHRoZQorICAvLyBgcGFyZW50YCBv
ZiB0aGUgbGFzdCBgcGFydGAuCisgIC8vCisgIHBhcmVudFR5cGUgPSB0eXBlb2YgcGFyZW50W3Bh
cnRdOworICBpc0FycmF5ID0gQXJyYXkuaXNBcnJheShwYXJlbnRbcGFydF0pOworCisgIGlmIChw
YXJlbnRbcGFydF0gJiYgIWlzQXJyYXkgJiYgcGFyZW50VHlwZSA9PSAnb2JqZWN0JykgeworICAg
IG1ldGhvZFR5cGUgPSB0eXBlb2YgcGFyZW50W3BhcnRdW21ldGhvZF07CisKKyAgICBzd2l0Y2gg
KG1ldGhvZFR5cGUpIHsKKyAgICAgIGNhc2UgJ2Z1bmN0aW9uJzoKKyAgICAgICAgcGFyZW50W3Bh
cnRdW21ldGhvZF0gPSBbcGFyZW50W3BhcnRdW21ldGhvZF0sIHJvdXRlXTsKKyAgICAgICAgcmV0
dXJuOworICAgICAgY2FzZSAnb2JqZWN0JzoKKyAgICAgICAgcGFyZW50W3BhcnRdW21ldGhvZF0u
cHVzaChyb3V0ZSk7CisgICAgICAgIHJldHVybjsKKyAgICAgIGNhc2UgJ3VuZGVmaW5lZCc6Cisg
ICAgICAgIHBhcmVudFtwYXJ0XVttZXRob2RdID0gcm91dGU7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgIH0KKyAgZWxzZSBpZiAocGFyZW50VHlwZSA9PSAndW5kZWZpbmVkJykgeworICAgIG5l
c3RlZCA9IHt9OworICAgIG5lc3RlZFttZXRob2RdID0gcm91dGU7CisgICAgcGFyZW50W3BhcnRd
ID0gbmVzdGVkOworICAgIHJldHVybjsKKyAgfQorCisgIHRocm93IG5ldyBFcnJvcignSW52YWxp
ZCByb3V0ZSBjb250ZXh0OiAnICsgcGFyZW50VHlwZSk7Cit9OworCisKKy8vCisvLyAjIyMgZnVu
Y3Rpb24gZXh0ZW5kIChtZXRob2RzKQorLy8gIyMjIyBAbWV0aG9kcyB7QXJyYXl9IExpc3Qgb2Yg
bWV0aG9kIG5hbWVzIHRvIGV4dGVuZCB0aGlzIGluc3RhbmNlIHdpdGgKKy8vIEV4dGVuZHMgdGhp
cyBpbnN0YW5jZSB3aXRoIHNpbXBsZSBoZWxwZXIgbWV0aG9kcyB0byBgdGhpcy5vbmAKKy8vIGZv
ciBlYWNoIG9mIHRoZSBzcGVjaWZpZWQgYG1ldGhvZHNgCisvLworUm91dGVyLnByb3RvdHlwZS5l
eHRlbmQgPSBmdW5jdGlvbihtZXRob2RzKSB7CisgIHZhciBzZWxmID0gdGhpcywKKyAgICAgIGxl
biA9IG1ldGhvZHMubGVuZ3RoLAorICAgICAgaTsKKworICBmdW5jdGlvbiBleHRlbmQobWV0aG9k
KSB7CisgICAgc2VsZi5fbWV0aG9kc1ttZXRob2RdID0gdHJ1ZTsKKyAgICBzZWxmW21ldGhvZF0g
PSBmdW5jdGlvbiAoKSB7CisgICAgICB2YXIgZXh0cmEgPSBhcmd1bWVudHMubGVuZ3RoID09PSAx
CisgICAgICAgID8gW21ldGhvZCwgJyddCisgICAgICAgIDogW21ldGhvZF07CisKKyAgICAgIHNl
bGYub24uYXBwbHkoc2VsZiwgZXh0cmEuY29uY2F0KEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxs
KGFyZ3VtZW50cykpKTsKKyAgICB9OworICB9CisKKyAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsr
KSB7CisgICAgZXh0ZW5kKG1ldGhvZHNbaV0pOworICB9Cit9OworCisvLworLy8gIyMjIGZ1bmN0
aW9uIG1vdW50IChyb3V0ZXMsIGNvbnRleHQpCisvLyAjIyMjIEByb3V0ZXMge09iamVjdH0gUm91
dGVzIHRvIG1vdW50IG9udG8gdGhpcyBpbnN0YW5jZQorLy8gTW91bnRzIHRoZSBzYW5pdGl6ZWQg
YHJvdXRlc2Agb250byB0aGUgcm9vdCBjb250ZXh0IGZvciB0aGlzIGluc3RhbmNlLgorLy8KKy8v
IGUuZy4KKy8vCisvLyAgICBuZXcgUm91dGVyKCkubW91bnQoeyAnL2Zvbyc6IHsgJy9iYXInOiBm
dW5jdGlvbiBmb29iYXIoKSB7fSB9IH0pCisvLworLy8geWllbGRzCisvLworLy8gICAgeyAnZm9v
JzogJ2Jhcic6IGZ1bmN0aW9uIGZvb2JhcigpIHt9IH0gfQorLy8KK1JvdXRlci5wcm90b3R5cGUu
bW91bnQgPSBmdW5jdGlvbihyb3V0ZXMsIHBhdGgpIHsKKyAgaWYgKCFyb3V0ZXMgfHwgdHlwZW9m
IHJvdXRlcyAhPT0gIm9iamVjdCIgfHwgQXJyYXkuaXNBcnJheShyb3V0ZXMpKSB7CisgICAgcmV0
dXJuOworICB9CisKKyAgdmFyIHNlbGYgPSB0aGlzOworICBwYXRoID0gcGF0aCB8fCBbXTsKKyAg
aWYgKCFBcnJheS5pc0FycmF5KHBhdGgpKSB7CisgICAgcGF0aCA9IHBhdGguc3BsaXQoc2VsZi5k
ZWxpbWl0ZXIpOworICB9CisKKyAgZnVuY3Rpb24gaW5zZXJ0T3JNb3VudChyb3V0ZSwgbG9jYWwp
IHsKKyAgICB2YXIgcmVuYW1lID0gcm91dGUsCisgICAgICAgIHBhcnRzID0gcm91dGUuc3BsaXQo
c2VsZi5kZWxpbWl0ZXIpLAorICAgICAgICByb3V0ZVR5cGUgPSB0eXBlb2Ygcm91dGVzW3JvdXRl
XSwKKyAgICAgICAgaXNSb3V0ZSA9IHBhcnRzWzBdID09PSAiIiB8fCAhc2VsZi5fbWV0aG9kc1tw
YXJ0c1swXV0sCisgICAgICAgIGV2ZW50ID0gaXNSb3V0ZSA/ICJvbiIgOiByZW5hbWU7CisKKyAg
ICBpZiAoaXNSb3V0ZSkgeworICAgICAgcmVuYW1lID0gcmVuYW1lLnNsaWNlKChyZW5hbWUubWF0
Y2gobmV3IFJlZ0V4cCgnXicgKyBzZWxmLmRlbGltaXRlcikpIHx8IFsnJ10pWzBdLmxlbmd0aCk7
CisgICAgICBwYXJ0cy5zaGlmdCgpOworICAgIH0KKworICAgIGlmIChpc1JvdXRlICYmIHJvdXRl
VHlwZSA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkocm91dGVzW3JvdXRlXSkpIHsKKyAg
ICAgIGxvY2FsID0gbG9jYWwuY29uY2F0KHBhcnRzKTsKKyAgICAgIHNlbGYubW91bnQocm91dGVz
W3JvdXRlXSwgbG9jYWwpOworICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChpc1JvdXRl
KSB7CisgICAgICBsb2NhbCA9IGxvY2FsLmNvbmNhdChyZW5hbWUuc3BsaXQoc2VsZi5kZWxpbWl0
ZXIpKTsKKyAgICAgIGxvY2FsID0gdGVybWluYXRvcihsb2NhbCwgc2VsZi5kZWxpbWl0ZXIpOwor
ICAgIH0KKworICAgIHNlbGYuaW5zZXJ0KGV2ZW50LCBsb2NhbCwgcm91dGVzW3JvdXRlXSk7Cisg
IH0KKworICBmb3IgKHZhciByb3V0ZSBpbiByb3V0ZXMpIHsKKyAgICBpZiAocm91dGVzLmhhc093
blByb3BlcnR5KHJvdXRlKSkgeworICAgICAgaW5zZXJ0T3JNb3VudChyb3V0ZSwgcGF0aC5zbGlj
ZSgwKSk7CisgICAgfQorICB9Cit9OworCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9u
b2RlX21vZHVsZXMvZGlyZWN0b3IvcGFja2FnZS5qc29uIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9k
ZV9tb2R1bGVzL2RpcmVjdG9yL3BhY2thZ2UuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40OTcyZTNhODI2YTZj
YjA2NTJmZjFiZDhjMjhjY2NlODA0NjI0NTUzCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL3BhY2thZ2UuanNvbgpAQCAtMCwwICsxLDk0
IEBACit7CisgICJfYXJncyI6IFsKKyAgICBbCisgICAgICB7CisgICAgICAgICJyYXciOiAiZGly
ZWN0b3JAaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZGlyZWN0b3IvLS9kaXJlY3Rvci0xLjIu
OC50Z3oiLAorICAgICAgICAic2NvcGUiOiBudWxsLAorICAgICAgICAiZXNjYXBlZE5hbWUiOiAi
ZGlyZWN0b3IiLAorICAgICAgICAibmFtZSI6ICJkaXJlY3RvciIsCisgICAgICAgICJyYXdTcGVj
IjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2RpcmVjdG9yLy0vZGlyZWN0b3ItMS4yLjgu
dGd6IiwKKyAgICAgICAgInNwZWMiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZGlyZWN0
b3IvLS9kaXJlY3Rvci0xLjIuOC50Z3oiLAorICAgICAgICAidHlwZSI6ICJyZW1vdGUiCisgICAg
ICB9LAorICAgICAgIi9Vc2Vycy9hZGR5by9wcm9qZWN0cy9zcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QiCisgICAgXQorICBdLAorICAiX2Zy
b20iOiAiZGlyZWN0b3JAPj0xLjIuOCA8Mi4wLjAiLAorICAiX2lkIjogImRpcmVjdG9yQDEuMi44
IiwKKyAgIl9pbkNhY2hlIjogdHJ1ZSwKKyAgIl9sb2NhdGlvbiI6ICIvZGlyZWN0b3IiLAorICAi
X3BoYW50b21DaGlsZHJlbiI6IHt9LAorICAiX3JlcXVlc3RlZCI6IHsKKyAgICAicmF3IjogImRp
cmVjdG9yQGh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2RpcmVjdG9yLy0vZGlyZWN0b3ItMS4y
LjgudGd6IiwKKyAgICAic2NvcGUiOiBudWxsLAorICAgICJlc2NhcGVkTmFtZSI6ICJkaXJlY3Rv
ciIsCisgICAgIm5hbWUiOiAiZGlyZWN0b3IiLAorICAgICJyYXdTcGVjIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL2RpcmVjdG9yLy0vZGlyZWN0b3ItMS4yLjgudGd6IiwKKyAgICAic3Bl
YyI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9kaXJlY3Rvci8tL2RpcmVjdG9yLTEuMi44
LnRneiIsCisgICAgInR5cGUiOiAicmVtb3RlIgorICB9LAorICAiX3JlcXVpcmVkQnkiOiBbCisg
ICAgIi8iCisgIF0sCisgICJfcmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcv
ZGlyZWN0b3IvLS9kaXJlY3Rvci0xLjIuOC50Z3oiLAorICAiX3NoYXN1bSI6ICJjNmQ5YjRkZDg5
MGU5YWZmNTM2NTE4M2ZlOWNjOGU3Mzk5NGNmMmQ1IiwKKyAgIl9zaHJpbmt3cmFwIjogbnVsbCwK
KyAgIl9zcGVjIjogImRpcmVjdG9yQGh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2RpcmVjdG9y
Ly0vZGlyZWN0b3ItMS4yLjgudGd6IiwKKyAgIl93aGVyZSI6ICIvVXNlcnMvYWRkeW8vcHJvamVj
dHMvc3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Jl
YWN0IiwKKyAgImF1dGhvciI6IHsKKyAgICAibmFtZSI6ICJDaGFybGllIFJvYmJpbnMiLAorICAg
ICJlbWFpbCI6ICJjaGFybGllLnJvYmJpbnNAZ21haWwuY29tIgorICB9LAorICAiYnJvd3Nlcmlm
eSI6ICIuL2J1aWxkL2RpcmVjdG9yIiwKKyAgImJ1Z3MiOiB7CisgICAgInVybCI6ICJodHRwczov
L2dpdGh1Yi5jb20vZmxhdGlyb24vZGlyZWN0b3IvaXNzdWVzIgorICB9LAorICAiZGVwZW5kZW5j
aWVzIjoge30sCisgICJkZXNjcmlwdGlvbiI6ICJBIGNsaWVudCBTaWRlL1NlcnZlciBTaWRlIFJv
dXRlciIsCisgICJkZXZEZXBlbmRlbmNpZXMiOiB7CisgICAgImFwaS1lYXN5IjogIjAuNC54IiwK
KyAgICAiY29kZXN1cmdlb24iOiAiaHR0cHM6Ly9naXRodWIuY29tL2hpajFueC9jb2Rlc3VyZ2Vv
bi90YXJiYWxsL21hc3RlciIsCisgICAgImNvbG9ycyI6ICIxLjAueCIsCisgICAgInF1bml0anMi
OiAiMS45LngiLAorICAgICJyZXF1ZXN0IjogIjIuNDkueCIsCisgICAgInVnbGlmeS1qcyI6ICIy
LjQueCIsCisgICAgInZvd3MiOiAiMC44LjAiCisgIH0sCisgICJlbmRlciI6ICIuL2J1aWxkL2Vu
ZGVyLmpzIiwKKyAgImVuZ2luZXMiOiB7CisgICAgIm5vZGUiOiAiPj0gMC44LjAiCisgIH0sCisg
ICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vZmxhdGlyb24vZGlyZWN0b3IjcmVhZG1l
IiwKKyAgImtleXdvcmRzIjogWworICAgICJVUkwiLAorICAgICJyb3V0ZXIiLAorICAgICJodHRw
IiwKKyAgICAiY2xpIiwKKyAgICAiZmxhdGlyb24iLAorICAgICJjbGllbnQgc2lkZSIsCisgICAg
ImVuZGVyIgorICBdLAorICAibWFpbiI6ICIuL2xpYi9kaXJlY3RvciIsCisgICJtYWludGFpbmVy
cyI6IFsKKyAgICB7CisgICAgICAibmFtZSI6ICJoaWoxbngiLAorICAgICAgImVtYWlsIjogInBh
b2xvQG5vZGVqaXRzdS5jb20iCisgICAgfSwKKyAgICB7CisgICAgICAibmFtZSI6ICJiZWF1Z3Vu
ZGVyc29uIiwKKyAgICAgICJlbWFpbCI6ICJiZWF1QGJlYXVndW5kZXJzb24uY29tIgorICAgIH0K
KyAgXSwKKyAgIm5hbWUiOiAiZGlyZWN0b3IiLAorICAib3B0aW9uYWxEZXBlbmRlbmNpZXMiOiB7
fSwKKyAgInJlYWRtZSI6ICIhW0xvZ29dKGh0dHBzOi8vZ2l0aHViLmNvbS9mbGF0aXJvbi9kaXJl
Y3Rvci9yYXcvbWFzdGVyL2ltZy9kaXJlY3Rvci5wbmcpXG5cbiMgU3lub3BzaXNcblxuRGlyZWN0
b3IgaXMgYSByb3V0ZXIuIFJvdXRpbmcgaXMgdGhlIHByb2Nlc3Mgb2YgZGV0ZXJtaW5pbmcgd2hh
dCBjb2RlIHRvIHJ1blxud2hlbiBhIFVSTCBpcyByZXF1ZXN0ZWQuXG5cbiMgTW90aXZhdGlvblxu
XG5BIHJvdXRpbmcgbGlicmFyeSB0aGF0IHdvcmtzIGluIGJvdGggdGhlIGJyb3dzZXIgYW5kIG5v
ZGUuanMgZW52aXJvbm1lbnRzIHdpdGhcbmFzIGZldyBkaWZmZXJlbmNlcyBhcyBwb3NzaWJsZS4g
U2ltcGxpZmllcyB0aGUgZGV2ZWxvcG1lbnQgb2YgU2luZ2xlIFBhZ2UgQXBwc1xuYW5kIE5vZGUu
anMgYXBwbGljYXRpb25zLiBEZXBlbmRlbmN5IGZyZWUgKGRvZXNuJ3QgcmVxdWlyZSBqUXVlcnkg
b3IgRXhwcmVzcyxcbmV0YykuXG5cbiMgU3RhdHVzXG5bIVtCdWlsZCBTdGF0dXNdKGh0dHBzOi8v
c2VjdXJlLnRyYXZpcy1jaS5vcmcvZmxhdGlyb24vZGlyZWN0b3IucG5nP2JyYW5jaD1tYXN0ZXIp
XShodHRwOi8vdHJhdmlzLWNpLm9yZy9mbGF0aXJvbi9kaXJlY3RvcilcblxuIyBGZWF0dXJlc1xu
XG4qIFtDbGllbnQtU2lkZSBSb3V0aW5nXSgjY2xpZW50LXNpZGUtcm91dGluZylcbiogW1NlcnZl
ci1TaWRlIEhUVFAgUm91dGluZ10oI3NlcnZlci1zaWRlLWh0dHAtcm91dGluZylcbiogW1NlcnZl
ci1TaWRlIENMSSBSb3V0aW5nXSgjc2VydmVyLXNpZGUtY2xpLXJvdXRpbmcpXG5cbiMgVXNhZ2Vc
blxuKiBbQVBJIERvY3VtZW50YXRpb25dKCNhcGktZG9jdW1lbnRhdGlvbilcbiogW0ZyZXF1ZW50
bHkgQXNrZWQgUXVlc3Rpb25zXSgjZmFxKVxuXG4jIyBCdWlsZGluZyBjbGllbnQtc2lkZSBzY3Jp
cHRcblxuUnVuIHRoZSBwcm92aWRlZCBDTEkgc2NyaXB0LlxuXG5gYGBiYXNoXG4uL2Jpbi9idWls
ZFxuYGBgXG5cbiMjIENsaWVudC1zaWRlIFJvdXRpbmdcblxuSXQgc2ltcGx5IHdhdGNoZXMgdGhl
IGhhc2ggb2YgdGhlIFVSTCB0byBkZXRlcm1pbmUgd2hhdCB0byBkbywgZm9yIGV4YW1wbGU6XG5c
bmBgYFxuaHR0cDovL2Zvby5jb20vIy9iYXJcbmBgYFxuXG5DbGllbnQtc2lkZSByb3V0aW5nIChh
a2EgaGFzaC1yb3V0aW5nKSBhbGxvd3MgeW91IHRvIHNwZWNpZnkgc29tZSBpbmZvcm1hdGlvblxu
YWJvdXQgdGhlIHN0YXRlIG9mIHRoZSBhcHBsaWNhdGlvbiB1c2luZyB0aGUgVVJMLiBTbyB0aGF0
IHdoZW4gdGhlIHVzZXIgdmlzaXRzXG5hIHNwZWNpZmljIFVSTCwgdGhlIGFwcGxpY2F0aW9uIGNh
biBiZSB0cmFuc2Zvcm1lZCBhY2NvcmRpbmdseS5cblxuIVtIYXNoIHJvdXRlXShodHRwczovL2dp
dGh1Yi5jb20vZmxhdGlyb24vZGlyZWN0b3IvcmF3L21hc3Rlci9pbWcvaGFzaFJvdXRlLnBuZylc
blxuSGVyZSBpcyBhIHNpbXBsZSBleGFtcGxlOlxuXG5gYGBodG1sXG48IURPQ1RZUEUgaHRtbD5c
bjxodG1sPlxuICA8aGVhZD5cbiAgICA8bWV0YSBjaGFyc2V0PVwidXRmLThcIj5cbiAgICA8dGl0
bGU+QSBHZW50bGUgSW50cm9kdWN0aW9uPC90aXRsZT5cblxuICAgIDxzY3JpcHRcbiAgICAgIHNy
Yz1cImh0dHBzOi8vcmF3Z2l0LmNvbS9mbGF0aXJvbi9kaXJlY3Rvci9tYXN0ZXIvYnVpbGQvZGly
ZWN0b3IubWluLmpzXCI+XG4gICAgPC9zY3JpcHQ+XG5cbiAgICA8c2NyaXB0PlxuICAgICAgdmFy
IGF1dGhvciA9IGZ1bmN0aW9uICgpIHsgY29uc29sZS5sb2coXCJhdXRob3JcIik7IH07XG4gICAg
ICB2YXIgYm9va3MgPSBmdW5jdGlvbiAoKSB7IGNvbnNvbGUubG9nKFwiYm9va3NcIik7IH07XG4g
ICAgICB2YXIgdmlld0Jvb2sgPSBmdW5jdGlvbiAoYm9va0lkKSB7XG4gICAgICAgIGNvbnNvbGUu
bG9nKFwidmlld0Jvb2s6IGJvb2tJZCBpcyBwb3B1bGF0ZWQ6IFwiICsgYm9va0lkKTtcbiAgICAg
IH07XG5cbiAgICAgIHZhciByb3V0ZXMgPSB7XG4gICAgICAgICcvYXV0aG9yJzogYXV0aG9yLFxu
ICAgICAgICAnL2Jvb2tzJzogW2Jvb2tzLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICBjb25zb2xl
LmxvZyhcIkFuIGlubGluZSByb3V0ZSBoYW5kbGVyLlwiKTtcbiAgICAgICAgfV0sXG4gICAgICAg
ICcvYm9va3Mvdmlldy86Ym9va0lkJzogdmlld0Jvb2tcbiAgICAgIH07XG5cbiAgICAgIHZhciBy
b3V0ZXIgPSBSb3V0ZXIocm91dGVzKTtcblxuICAgICAgcm91dGVyLmluaXQoKTtcbiAgICA8L3Nj
cmlwdD5cbiAgPC9oZWFkPlxuXG4gIDxib2R5PlxuICAgIDx1bD5cbiAgICAgIDxsaT48YSBocmVm
PVwiIy9hdXRob3JcIj4jL2F1dGhvcjwvYT48L2xpPlxuICAgICAgPGxpPjxhIGhyZWY9XCIjL2Jv
b2tzXCI+Iy9ib29rczwvYT48L2xpPlxuICAgICAgPGxpPjxhIGhyZWY9XCIjL2Jvb2tzL3ZpZXcv
MVwiPiMvYm9va3Mvdmlldy8xPC9hPjwvbGk+XG4gICAgPC91bD5cbiAgPC9ib2R5PlxuPC9odG1s
PlxuYGBgXG5cbkRpcmVjdG9yIHdvcmtzIGdyZWF0IHdpdGggeW91ciBmYXZvcml0ZSBET00gbGli
cmFyeSwgc3VjaCBhcyBqUXVlcnkuXG5cbmBgYGh0bWxcbjwhRE9DVFlQRSBodG1sPlxuPGh0bWw+
XG4gIDxoZWFkPlxuICAgIDxtZXRhIGNoYXJzZXQ9XCJ1dGYtOFwiPlxuICAgIDx0aXRsZT5BIEdl
bnRsZSBJbnRyb2R1Y3Rpb24gMjwvdGl0bGU+XG5cbiAgICA8c2NyaXB0XG4gICAgICBzcmM9XCJo
dHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9qcXVlcnkvMi4xLjEvanF1ZXJ5
Lm1pbi5qc1wiPlxuICAgIDwvc2NyaXB0PlxuXG4gICAgPHNjcmlwdFxuICAgICAgc3JjPVwiaHR0
cHM6Ly9yYXdnaXQuY29tL2ZsYXRpcm9uL2RpcmVjdG9yL21hc3Rlci9idWlsZC9kaXJlY3Rvci5t
aW4uanNcIj5cbiAgICA8L3NjcmlwdD5cblxuICAgIDxzY3JpcHQ+XG4gICAgJCgnZG9jdW1lbnQn
KS5yZWFkeShmdW5jdGlvbigpIHtcbiAgICAgIC8vXG4gICAgICAvLyBjcmVhdGUgc29tZSBmdW5j
dGlvbnMgdG8gYmUgZXhlY3V0ZWQgd2hlblxuICAgICAgLy8gdGhlIGNvcnJlY3Qgcm91dGUgaXMg
aXNzdWVkIGJ5IHRoZSB1c2VyLlxuICAgICAgLy9cbiAgICAgIHZhciBzaG93QXV0aG9ySW5mbyA9
IGZ1bmN0aW9uICgpIHsgY29uc29sZS5sb2coXCJzaG93QXV0aG9ySW5mb1wiKTsgfTtcbiAgICAg
IHZhciBsaXN0Qm9va3MgPSBmdW5jdGlvbiAoKSB7IGNvbnNvbGUubG9nKFwibGlzdEJvb2tzXCIp
OyB9O1xuXG4gICAgICB2YXIgYWxscm91dGVzID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBy
b3V0ZSA9IHdpbmRvdy5sb2NhdGlvbi5oYXNoLnNsaWNlKDIpO1xuICAgICAgICB2YXIgc2VjdGlv
bnMgPSAkKCdzZWN0aW9uJyk7XG4gICAgICAgIHZhciBzZWN0aW9uO1xuXG4gICAgICAgIHNlY3Rp
b24gPSBzZWN0aW9ucy5maWx0ZXIoJ1tkYXRhLXJvdXRlPScgKyByb3V0ZSArICddJyk7XG5cbiAg
ICAgICAgaWYgKHNlY3Rpb24ubGVuZ3RoKSB7XG4gICAgICAgICAgc2VjdGlvbnMuaGlkZSgyNTAp
O1xuICAgICAgICAgIHNlY3Rpb24uc2hvdygyNTApO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4g
ICAgICAvL1xuICAgICAgLy8gZGVmaW5lIHRoZSByb3V0aW5nIHRhYmxlLlxuICAgICAgLy9cbiAg
ICAgIHZhciByb3V0ZXMgPSB7XG4gICAgICAgICcvYXV0aG9yJzogc2hvd0F1dGhvckluZm8sXG4g
ICAgICAgICcvYm9va3MnOiBsaXN0Qm9va3NcbiAgICAgIH07XG5cbiAgICAgIC8vXG4gICAgICAv
LyBpbnN0YW50aWF0ZSB0aGUgcm91dGVyLlxuICAgICAgLy9cbiAgICAgIHZhciByb3V0ZXIgPSBS
b3V0ZXIocm91dGVzKTtcblxuICAgICAgLy9cbiAgICAgIC8vIGEgZ2xvYmFsIGNvbmZpZ3VyYXRp
b24gc2V0dGluZy5cbiAgICAgIC8vXG4gICAgICByb3V0ZXIuY29uZmlndXJlKHtcbiAgICAgICAg
b246IGFsbHJvdXRlc1xuICAgICAgfSk7XG5cbiAgICAgIHJvdXRlci5pbml0KCk7XG4gICAgfSk7
XG4gICAgPC9zY3JpcHQ+XG4gIDwvaGVhZD5cblxuICA8Ym9keT5cbiAgICA8c2VjdGlvbiBkYXRh
LXJvdXRlPVwiYXV0aG9yXCI+QXV0aG9yIE5hbWU8L3NlY3Rpb24+XG4gICAgPHNlY3Rpb24gZGF0
YS1yb3V0ZT1cImJvb2tzXCI+Qm9vazEsIEJvb2syLCBCb29rMzwvc2VjdGlvbj5cbiAgICA8dWw+
XG4gICAgICA8bGk+PGEgaHJlZj1cIiMvYXV0aG9yXCI+Iy9hdXRob3I8L2E+PC9saT5cbiAgICAg
IDxsaT48YSBocmVmPVwiIy9ib29rc1wiPiMvYm9va3M8L2E+PC9saT5cbiAgICA8L3VsPlxuICA8
L2JvZHk+XG48L2h0bWw+XG5gYGBcblxuWW91IGNhbiBmaW5kIGEgYnJvd3Nlci1zcGVjaWZpYyBi
dWlsZCBvZiBgZGlyZWN0b3JgIFtoZXJlXVsxXSB3aGljaCBoYXMgYWxsIG9mXG50aGUgc2VydmVy
IGNvZGUgc3RyaXBwZWQgYXdheS5cblxuIyMgU2VydmVyLVNpZGUgSFRUUCBSb3V0aW5nXG5cbkRp
cmVjdG9yIGhhbmRsZXMgcm91dGluZyBmb3IgSFRUUCByZXF1ZXN0cyBzaW1pbGFyIHRvIGBqb3Vy
bmV5YCBvciBgZXhwcmVzc2A6XG5cbmBgYGpzXG4gIC8vXG4gIC8vIHJlcXVpcmUgdGhlIG5hdGl2
ZSBodHRwIG1vZHVsZSwgYXMgd2VsbCBhcyBkaXJlY3Rvci5cbiAgLy9cbiAgdmFyIGh0dHAgPSBy
ZXF1aXJlKCdodHRwJyksXG4gICAgICBkaXJlY3RvciA9IHJlcXVpcmUoJ2RpcmVjdG9yJyk7XG5c
biAgLy9cbiAgLy8gY3JlYXRlIHNvbWUgbG9naWMgdG8gYmUgcm91dGVkIHRvLlxuICAvL1xuICBm
dW5jdGlvbiBoZWxsb1dvcmxkKCkge1xuICAgIHRoaXMucmVzLndyaXRlSGVhZCgyMDAsIHsgJ0Nv
bnRlbnQtVHlwZSc6ICd0ZXh0L3BsYWluJyB9KVxuICAgIHRoaXMucmVzLmVuZCgnaGVsbG8gd29y
bGQnKTtcbiAgfVxuXG4gIC8vXG4gIC8vIGRlZmluZSBhIHJvdXRpbmcgdGFibGUuXG4gIC8vXG4g
IHZhciByb3V0ZXIgPSBuZXcgZGlyZWN0b3IuaHR0cC5Sb3V0ZXIoe1xuICAgICcvaGVsbG8nOiB7
XG4gICAgICBnZXQ6IGhlbGxvV29ybGRcbiAgICB9XG4gIH0pO1xuXG4gIC8vXG4gIC8vIHNldHVw
IGEgc2VydmVyIGFuZCB3aGVuIHRoZXJlIGlzIGEgcmVxdWVzdCwgZGlzcGF0Y2ggdGhlXG4gIC8v
IHJvdXRlIHRoYXQgd2FzIHJlcXVlc3RlZCBpbiB0aGUgcmVxdWVzdCBvYmplY3QuXG4gIC8vXG4g
IHZhciBzZXJ2ZXIgPSBodHRwLmNyZWF0ZVNlcnZlcihmdW5jdGlvbiAocmVxLCByZXMpIHtcbiAg
ICByb3V0ZXIuZGlzcGF0Y2gocmVxLCByZXMsIGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgIGlmIChl
cnIpIHtcbiAgICAgICAgcmVzLndyaXRlSGVhZCg0MDQpO1xuICAgICAgICByZXMuZW5kKCk7XG4g
ICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIC8vXG4gIC8vIFlvdSBjYW4gYWxzbyBkbyBhZC1o
b2Mgcm91dGluZywgc2ltaWxhciB0byBgam91cm5leWAgb3IgYGV4cHJlc3NgLlxuICAvLyBUaGlz
IGNhbiBiZSBkb25lIHdpdGggYSBzdHJpbmcgb3IgYSByZWdleHAuXG4gIC8vXG4gIHJvdXRlci5n
ZXQoJy9ib25qb3VyJywgaGVsbG9Xb3JsZCk7XG4gIHJvdXRlci5nZXQoL2hvbGEvLCBoZWxsb1dv
cmxkKTtcblxuICAvL1xuICAvLyBzZXQgdGhlIHNlcnZlciB0byBsaXN0ZW4gb24gcG9ydCBgODA4
MGAuXG4gIC8vXG4gIHNlcnZlci5saXN0ZW4oODA4MCk7XG5gYGBcblxuIyMjIFNlZSBBbHNvOlxu
XG4gLSBBdXRvLWdlbmVyYXRlZCBOb2RlLmpzIEFQSSBDbGllbnRzIGZvciByb3V0ZXJzIHVzaW5n
XG4gICBbRGlyZWN0b3ItUmVmbGVjdG9yXShodHRwOi8vZ2l0aHViLmNvbS9mbGF0aXJvbi9kaXJl
Y3Rvci1yZWZsZWN0b3IpXG4gLSBSRVNUZnVsIFJlc291cmNlIHJvdXRpbmcgdXNpbmcgW3Jlc3Rm
dWxdKGh0dHA6Ly9naXRodWIuY29tL2ZsYXRpcm9uL3Jlc3RmdWwpXG4gLSBIVE1MIC8gUGxhaW4g
VGV4dCB2aWV3cyBvZiByb3V0ZXJzIHVzaW5nXG4gICBbRGlyZWN0b3ItRXhwbG9yZXJdKGh0dHA6
Ly9naXRodWIuY29tL2ZsYXRpcm9uL2RpcmVjdG9yLWV4cGxvcmVyKVxuXG4jIyBTZXJ2ZXItU2lk
ZSBDTEkgUm91dGluZ1xuXG5EaXJlY3RvciBzdXBwb3J0cyBDb21tYW5kIExpbmUgSW50ZXJmYWNl
IHJvdXRpbmcuIFJvdXRlcyBmb3IgY2xpIG9wdGlvbnMgYXJlXG5iYXNlZCBvbiBjb21tYW5kIGxp
bmUgaW5wdXQgKGkuZS4gYHByb2Nlc3MuYXJndmApIGluc3RlYWQgb2YgYSBVUkwuXG5cbmBgYCBq
c1xuICB2YXIgZGlyZWN0b3IgPSByZXF1aXJlKCdkaXJlY3RvcicpO1xuXG4gIHZhciByb3V0ZXIg
PSBuZXcgZGlyZWN0b3IuY2xpLlJvdXRlcigpO1xuXG4gIHJvdXRlci5vbignY3JlYXRlJywgZnVu
Y3Rpb24gKCkge1xuICAgIGNvbnNvbGUubG9nKCdjcmVhdGUgc29tZXRoaW5nJyk7XG4gIH0pO1xu
XG4gIHJvdXRlci5vbigvZGVzdHJveS8sIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zb2xlLmxvZygn
ZGVzdHJveSBzb21ldGhpbmcnKTtcbiAgfSk7XG5cbiAgLy8gWW91IHdpbGwgbmVlZCB0byBkaXNw
YXRjaCB0aGUgY2xpIGFyZ3VtZW50cyB5b3Vyc2VsZlxuICByb3V0ZXIuZGlzcGF0Y2goJ29uJywg
cHJvY2Vzcy5hcmd2LnNsaWNlKDIpLmpvaW4oJyAnKSk7XG5gYGBcblxuVXNpbmcgdGhlIGNsaSBy
b3V0ZXIsIHlvdSBjYW4gZGlzcGF0Y2ggY29tbWFuZHMgYnkgcGFzc2luZyB0aGVtIGFzIGEgc3Ry
aW5nLlxuRm9yIGV4YW1wbGUsIGlmIHRoaXMgZXhhbXBsZSBpcyBpbiBhIGZpbGUgY2FsbGVkIGBm
b28uanNgOlxuXG5gYGBiYXNoXG4kIG5vZGUgZm9vLmpzIGNyZWF0ZVxuY3JlYXRlIHNvbWV0aGlu
Z1xuJCBub2RlIGZvby5qcyBkZXN0cm95XG5kZXN0cm95IHNvbWV0aGluZ1xuYGBgXG5cbiMgQVBJ
IERvY3VtZW50YXRpb25cblxuKiBbQ29uc3RydWN0b3JdKCNjb25zdHJ1Y3RvcilcbiogW1JvdXRp
bmcgVGFibGVdKCNyb3V0aW5nLXRhYmxlKVxuKiBbQWRob2MgUm91dGluZ10oI2FkaG9jLXJvdXRp
bmcpXG4qIFtTY29wZWQgUm91dGluZ10oI3Njb3BlZC1yb3V0aW5nKVxuKiBbUm91dGluZyBFdmVu
dHNdKCNyb3V0aW5nLWV2ZW50cylcbiogW0NvbmZpZ3VyYXRpb25dKCNjb25maWd1cmF0aW9uKVxu
KiBbVVJMIE1hdGNoaW5nXSgjdXJsLW1hdGNoaW5nKVxuKiBbVVJMIFBhcmFtZXRlcnNdKCN1cmwt
cGFyYW1ldGVycylcbiogW1dpbGRjYXJkIHJvdXRlc10oI3dpbGRjYXJkLXJvdXRlcylcbiogW1Jv
dXRlIFJlY3Vyc2lvbl0oI3JvdXRlLXJlY3Vyc2lvbilcbiogW0FzeW5jIFJvdXRpbmddKCNhc3lu
Yy1yb3V0aW5nKVxuKiBbUmVzb3VyY2VzXSgjcmVzb3VyY2VzKVxuKiBbSGlzdG9yeSBBUEldKCNo
aXN0b3J5LWFwaSlcbiogW0luc3RhbmNlIE1ldGhvZHNdKCNpbnN0YW5jZS1tZXRob2RzKVxuKiBb
QXR0YWNoIFByb3BlcnRpZXMgdG8gYHRoaXNgXSgjYXR0YWNoLXByb3BlcnRpZXMtdG8tdGhpcylc
biogW0hUVFAgU3RyZWFtaW5nIGFuZCBCb2R5IFBhcnNpbmddKCNodHRwLXN0cmVhbWluZy1hbmQt
Ym9keS1wYXJzaW5nKVxuXG4jIyBDb25zdHJ1Y3RvclxuXG5gYGAganNcbiAgdmFyIHJvdXRlciA9
IFJvdXRlcihyb3V0ZXMpO1xuYGBgXG5cbiMjIFJvdXRpbmcgVGFibGVcblxuQW4gb2JqZWN0IGxp
dGVyYWwgdGhhdCBjb250YWlucyBuZXN0ZWQgcm91dGUgZGVmaW5pdGlvbnMuIEEgcG90ZW50aWFs
bHkgbmVzdGVkXG5zZXQgb2Yga2V5L3ZhbHVlIHBhaXJzLiBUaGUga2V5cyBpbiB0aGUgb2JqZWN0
IGxpdGVyYWwgcmVwcmVzZW50IGVhY2ggcG90ZW50aWFsXG5wYXJ0IG9mIHRoZSBVUkwuIFRoZSB2
YWx1ZXMgaW4gdGhlIG9iamVjdCBsaXRlcmFsIGNvbnRhaW4gcmVmZXJlbmNlcyB0byB0aGVcbmZ1
bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBhc3NvY2lhdGVkIHdpdGggdGhlbS4gKmJhcmsqIGFuZCAq
bWVvdyogYXJlIHR3b1xuZnVuY3Rpb25zIHRoYXQgeW91IGhhdmUgZGVmaW5lZCBpbiB5b3VyIGNv
ZGUuXG5cbmBgYCBqc1xuICAvL1xuICAvLyBBc3NpZ24gcm91dGVzIHRvIGFuIG9iamVjdCBsaXRl
cmFsLlxuICAvL1xuICB2YXIgcm91dGVzID0ge1xuICAgIC8vXG4gICAgLy8gYSByb3V0ZSB3aGlj
aCBhc3NpZ25zIHRoZSBmdW5jdGlvbiBgYmFya2AuXG4gICAgLy9cbiAgICAnL2RvZyc6IGJhcmss
XG4gICAgLy9cbiAgICAvLyBhIHJvdXRlIHdoaWNoIGFzc2lnbnMgdGhlIGZ1bmN0aW9ucyBgbWVv
d2AgYW5kIGBzY3JhdGNoYC5cbiAgICAvL1xuICAgICcvY2F0JzogW21lb3csIHNjcmF0Y2hdXG4g
IH07XG5cbiAgLy9cbiAgLy8gSW5zdGFudGlhdGUgdGhlIHJvdXRlci5cbiAgLy9cbiAgdmFyIHJv
dXRlciA9IFJvdXRlcihyb3V0ZXMpO1xuYGBgXG5cbiMjIEFkaG9jIFJvdXRpbmdcblxuV2hlbiBk
ZXZlbG9waW5nIGxhcmdlIGNsaWVudC1zaWRlIG9yIHNlcnZlci1zaWRlIGFwcGxpY2F0aW9ucyBp
dCBpcyBub3QgYWx3YXlzXG5wb3NzaWJsZSB0byBkZWZpbmUgcm91dGVzIGluIG9uZSBsb2NhdGlv
bi4gVXN1YWxseSBpbmRpdmlkdWFsIGRlY291cGxlZFxuY29tcG9uZW50cyByZWdpc3RlciB0aGVp
ciBvd24gcm91dGVzIHdpdGggdGhlIGFwcGxpY2F0aW9uIHJvdXRlci4gV2UgcmVmZXIgdG9cbnRo
aXMgYXMgX0FkaG9jIFJvdXRpbmcuXyBMZXRzIHRha2UgYSBsb29rIGF0IHRoZSBBUEkgYGRpcmVj
dG9yYCBleHBvc2VzIGZvclxuYWRob2Mgcm91dGluZzpcblxuKipDbGllbnQtc2lkZSBSb3V0aW5n
KipcblxuYGBgIGpzXG4gIHZhciByb3V0ZXIgPSBuZXcgUm91dGVyKCkuaW5pdCgpO1xuXG4gIHJv
dXRlci5vbignL3NvbWUvcmVzb3VyY2UnLCBmdW5jdGlvbiAoKSB7XG4gICAgLy9cbiAgICAvLyBE
byBzb21ldGhpbmcgb24gYC8jL3NvbWUvcmVzb3VyY2VgXG4gICAgLy9cbiAgfSk7XG5gYGBcblxu
KipIVFRQIFJvdXRpbmcqKlxuXG5gYGAganNcbiAgdmFyIHJvdXRlciA9IG5ldyBkaXJlY3Rvci5o
dHRwLlJvdXRlcigpO1xuXG4gIHJvdXRlci5nZXQoL1xcL3NvbWVcXC9yZXNvdXJjZS8sIGZ1bmN0
aW9uICgpIHtcbiAgICAvL1xuICAgIC8vIERvIHNvbWV0aGluZyBvbiBhbiBHRVQgdG8gYC9zb21l
L3Jlc291cmNlYFxuICAgIC8vXG4gIH0pO1xuYGBgXG5cbiMjIFNjb3BlZCBSb3V0aW5nXG5cbklu
IGxhcmdlIHdlYiBhcHBsaWF0aW9ucywgYm90aCBbQ2xpZW50LXNpZGVdKCNjbGllbnQtc2lkZSkg
YW5kXG5bU2VydmVyLXNpZGVdKCNodHRwLXJvdXRpbmcpLCByb3V0ZXMgYXJlIG9mdGVuIHNjb3Bl
ZCB3aXRoaW4gYSBmZXcgaW5kaXZpZHVhbFxucmVzb3VyY2VzLiBEaXJlY3RvciBleHBvc2VzIGEg
c2ltcGxlIHdheSB0byBkbyB0aGlzIGZvciBbQWRob2NcblJvdXRpbmddKCNhZGhvYy1yb3V0aW5n
KSBzY2VuYXJpb3M6XG5cbmBgYCBqc1xuICB2YXIgcm91dGVyID0gbmV3IGRpcmVjdG9yLmh0dHAu
Um91dGVyKCk7XG5cbiAgLy9cbiAgLy8gQ3JlYXRlIHJvdXRlcyBpbnNpZGUgdGhlIGAvdXNlcnNg
IHNjb3BlLlxuICAvL1xuICByb3V0ZXIucGF0aCgvXFwvdXNlcnNcXC8oXFx3KykvLCBmdW5jdGlv
biAoKSB7XG4gICAgLy9cbiAgICAvLyBUaGUgYHRoaXNgIGNvbnRleHQgb2YgdGhlIGZ1bmN0aW9u
IHBhc3NlZCB0byBgLnBhdGgoKWBcbiAgICAvLyBpcyB0aGUgUm91dGVyIGl0c2VsZi5cbiAgICAv
L1xuXG4gICAgdGhpcy5wb3N0KGZ1bmN0aW9uIChpZCkge1xuICAgICAgLy9cbiAgICAgIC8vIENy
ZWF0ZSB0aGUgdXNlciB3aXRoIHRoZSBzcGVjaWZpZWQgYGlkYC5cbiAgICAgIC8vXG4gICAgfSk7
XG5cbiAgICB0aGlzLmdldChmdW5jdGlvbiAoaWQpIHtcbiAgICAgIC8vXG4gICAgICAvLyBSZXRy
ZWl2ZSB0aGUgdXNlciB3aXRoIHRoZSBzcGVjaWZpZWQgYGlkYC5cbiAgICAgIC8vXG4gICAgfSk7
XG5cbiAgICB0aGlzLmdldCgvXFwvZnJpZW5kcy8sIGZ1bmN0aW9uIChpZCkge1xuICAgICAgLy9c
biAgICAgIC8vIEdldCB0aGUgZnJpZW5kcyBmb3IgdGhlIHVzZXIgd2l0aCB0aGUgc3BlY2lmaWVk
IGBpZGAuXG4gICAgICAvL1xuICAgIH0pO1xuICB9KTtcbmBgYFxuXG4jIyBSb3V0aW5nIEV2ZW50
c1xuXG5JbiBgZGlyZWN0b3JgLCBhIFwicm91dGluZyBldmVudFwiIGlzIGEgbmFtZWQgcHJvcGVy
dHkgaW4gdGhlXG5bUm91dGluZyBUYWJsZV0oI3JvdXRpbmctdGFibGUpIHdoaWNoIGNhbiBiZSBh
c3NpZ25lZCB0byBhIGZ1bmN0aW9uIG9yIGFuIEFycmF5XG5vZiBmdW5jdGlvbnMgdG8gYmUgY2Fs
bGVkIHdoZW4gYSByb3V0ZSBpcyBtYXRjaGVkIGluIGEgY2FsbCB0b1xuYHJvdXRlci5kaXNwYXRj
aCgpYC5cblxuKiAqKm9uOioqIEEgZnVuY3Rpb24gb3IgQXJyYXkgb2YgZnVuY3Rpb25zIHRvIGV4
ZWN1dGUgd2hlbiB0aGUgcm91dGUgaXMgbWF0Y2hlZC5cbiogKipiZWZvcmU6KiogQSBmdW5jdGlv
biBvciBBcnJheSBvZiBmdW5jdGlvbnMgdG8gZXhlY3V0ZSBiZWZvcmUgY2FsbGluZyB0aGVcbiAg
YG9uYCBtZXRob2QocykuXG5cbioqQ2xpZW50LXNpZGUgb25seSoqXG5cbiogKiphZnRlcjoqKiBB
IGZ1bmN0aW9uIG9yIEFycmF5IG9mIGZ1bmN0aW9ucyB0byBleGVjdXRlIHdoZW4gbGVhdmluZyBh
XG4gIHBhcnRpY3VsYXIgcm91dGUuXG4qICoqb25jZToqKiBBIGZ1bmN0aW9uIG9yIEFycmF5IG9m
IGZ1bmN0aW9ucyB0byBleGVjdXRlIG9ubHkgb25jZSBmb3IgYVxuICBwYXJ0aWN1bGFyIHJvdXRl
LlxuXG4jIyBDb25maWd1cmF0aW9uXG5cbkdpdmVuIHRoZSBmbGV4aWJsZSBuYXR1cmUgb2YgYGRp
cmVjdG9yYCB0aGVyZSBhcmUgc2V2ZXJhbCBvcHRpb25zIGF2YWlsYWJsZSBmb3JcbmJvdGggdGhl
IFtDbGllbnQtc2lkZV0oI2NsaWVudC1zaWRlKSBhbmQgW1NlcnZlci1zaWRlXSgjaHR0cC1yb3V0
aW5nKS4gVGhlc2Vcbm9wdGlvbnMgY2FuIGJlIHNldCB1c2luZyB0aGUgYC5jb25maWd1cmUoKWAg
bWV0aG9kOlxuXG5gYGAganNcbiAgdmFyIHJvdXRlciA9IG5ldyBkaXJlY3Rvci5Sb3V0ZXIocm91
dGVzKS5jb25maWd1cmUob3B0aW9ucyk7XG5gYGBcblxuVGhlIGBvcHRpb25zYCBhcmU6XG5cbiog
KipyZWN1cnNlOioqIENvbnRyb2xzIFtyb3V0ZSByZWN1cnNpb25dKCNyb3V0ZS1yZWN1cnNpb24p
LiBVc2UgYGZvcndhcmRgLFxuICBgYmFja3dhcmRgLCBvciBgZmFsc2VgLiBEZWZhdWx0IGlzIGBm
YWxzZWAgQ2xpZW50LXNpZGUsIGFuZCBgYmFja3dhcmRgXG4gIFNlcnZlci1zaWRlLlxuKiAqKnN0
cmljdDoqKiBJZiBzZXQgdG8gYGZhbHNlYCwgdGhlbiB0cmFpbGluZyBzbGFzaGVzIChvciBvdGhl
ciBkZWxpbWl0ZXJzKVxuICBhcmUgYWxsb3dlZCBpbiByb3V0ZXMuIERlZmF1bHQgaXMgYHRydWVg
LlxuKiAqKmFzeW5jOioqIENvbnRyb2xzIFthc3luYyByb3V0aW5nXSgjYXN5bmMtcm91dGluZyku
IFVzZSBgdHJ1ZWAgb3IgYGZhbHNlYC5cbiAgRGVmYXVsdCBpcyBgZmFsc2VgLlxuKiAqKmRlbGlt
aXRlcjoqKiBDaGFyYWN0ZXIgc2VwYXJhdG9yIGJldHdlZW4gcm91dGUgZnJhZ21lbnRzLiBEZWZh
dWx0IGlzIGAvYC5cbiogKipub3Rmb3VuZDoqKiBBIGZ1bmN0aW9uIHRvIGNhbGwgaWYgbm8gcm91
dGUgaXMgZm91bmQgb24gYSBjYWxsIHRvXG4gIGByb3V0ZXIuZGlzcGF0Y2goKWAuXG4qICoqb246
KiogQSBmdW5jdGlvbiAob3IgbGlzdCBvZiBmdW5jdGlvbnMpIHRvIGNhbGwgb24gZXZlcnkgY2Fs
bCB0b1xuICBgcm91dGVyLmRpc3BhdGNoKClgIHdoZW4gYSByb3V0ZSBpcyBmb3VuZC5cbiogKipi
ZWZvcmU6KiogQSBmdW5jdGlvbiAob3IgbGlzdCBvZiBmdW5jdGlvbnMpIHRvIGNhbGwgYmVmb3Jl
IGV2ZXJ5IGNhbGwgdG9cbiAgYHJvdXRlci5kaXNwYXRjaCgpYCB3aGVuIGEgcm91dGUgaXMgZm91
bmQuXG5cbioqQ2xpZW50LXNpZGUgb25seSoqXG5cbiogKipyZXNvdXJjZToqKiBBbiBvYmplY3Qg
dG8gd2hpY2ggc3RyaW5nLWJhc2VkIHJvdXRlcyB3aWxsIGJlIGJvdW5kLiBUaGlzIGNhblxuICBi
ZSBlc3BlY2lhbGx5IHVzZWZ1bCBmb3IgbGF0ZS1iaW5kaW5nIHRvIHJvdXRlIGZ1bmN0aW9ucyAo
c3VjaCBhcyBhc3luY1xuICBjbGllbnQtc2lkZSByZXF1aXJlcykuXG4qICoqYWZ0ZXI6KiogQSBm
dW5jdGlvbiAob3IgbGlzdCBvZiBmdW5jdGlvbnMpIHRvIGNhbGwgd2hlbiBhIGdpdmVuIHJvdXRl
IGlzIG5vXG4gIGxvbmdlciB0aGUgYWN0aXZlIHJvdXRlLlxuKiAqKmh0bWw1aGlzdG9yeToqKiBJ
ZiBzZXQgdG8gYHRydWVgIGFuZCBjbGllbnQgc3VwcG9ydHMgYHB1c2hTdGF0ZSgpYCwgdGhlblxu
ICB1c2VzIEhUTUw1IEhpc3RvcnkgQVBJIGluc3RlYWQgb2YgaGFzaCBmcmFnbWVudHMuIFNlZVxu
ICBbSGlzdG9yeSBBUEldKCNoaXN0b3J5LWFwaSkgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4qICoq
cnVuX2hhbmRsZXJfaW5faW5pdDoqKiBJZiBgaHRtbDVoaXN0b3J5YCBpcyBlbmFibGVkLCB0aGUg
cm91dGUgaGFuZGxlciBieVxuICBkZWZhdWx0IGlzIGV4ZWN1dGVkIHVwb24gYFJvdXRlci5pbml0
KClgIHNpbmNlIHdpdGggcmVhbCBVUklzIHRoZSByb3V0ZXIgY2FuXG4gIG5vdCBrbm93IGlmIGl0
IHNob3VsZCBjYWxsIGEgcm91dGUgaGFuZGxlciBvciBub3QuIFNldHRpbmcgdGhpcyB0byBgZmFs
c2VgXG4gIGRpc2FibGVzIHRoZSByb3V0ZSBoYW5kbGVyIGluaXRpYWwgZXhlY3V0aW9uLlxuKiAq
KmNvbnZlcnRfaGFzaF9pbl9pbml0OioqIElmIGBodG1sNWhpc3RvcnlgIGlzIGVuYWJsZWQsIHRo
ZSB3aW5kb3cubG9jYXRpb24gaGFzaCBieSBkZWZhdWx0IGlzIGNvbnZlcnRlZCB0byBhIHJvdXRl
IHVwb24gYFJvdXRlci5pbml0KClgIHNpbmNlIHdpdGggY2Fub25pY2FsIFVSSXMgdGhlIHJvdXRl
ciBjYW4gbm90IGtub3cgaWYgaXQgc2hvdWxkIGNvbnZlcnQgdGhlIGhhc2ggdG8gYSByb3V0ZSBv
ciBub3QuIFNldHRpbmcgdGhpcyB0byBgZmFsc2VgIGRpc2FibGVzIHRoZSBoYXNoIGNvbnZlcnNp
b24gb24gcm91dGVyIGluaXRpYWxpc2F0aW9uLlxuXG4jIyBVUkwgTWF0Y2hpbmdcblxuYGBgIGpz
XG4gIHZhciByb3V0ZXIgPSBSb3V0ZXIoe1xuICAgIC8vXG4gICAgLy8gZ2l2ZW4gdGhlIHJvdXRl
ICcvZG9nL3llbGxhJy5cbiAgICAvL1xuICAgICcvZG9nJzoge1xuICAgICAgJy86Y29sb3InOiB7
XG4gICAgICAgIC8vXG4gICAgICAgIC8vIHRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gdGhlIHZh
bHVlICd5ZWxsYScuXG4gICAgICAgIC8vXG4gICAgICAgIG9uOiBmdW5jdGlvbiAoY29sb3IpIHsg
Y29uc29sZS5sb2coY29sb3IpIH1cbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuYGBgXG5cblJvdXRl
cyBjYW4gc29tZXRpbWVzIGJlY29tZSB2ZXJ5IGNvbXBsZXgsIGBzaW1wbGUvOnRva2Vuc2AgZG9u
J3QgYWx3YXlzXG5zdWZmaWNlLiBEaXJlY3RvciBzdXBwb3J0cyByZWd1bGFyIGV4cHJlc3Npb25z
IGluc2lkZSB0aGUgcm91dGUgbmFtZXMuIFRoZVxudmFsdWVzIGNhcHR1cmVkIGZyb20gdGhlIHJl
Z3VsYXIgZXhwcmVzc2lvbnMgYXJlIHBhc3NlZCB0byB5b3VyIGxpc3RlbmVyXG5mdW5jdGlvbi5c
blxuYGBgIGpzXG4gIHZhciByb3V0ZXIgPSBSb3V0ZXIoe1xuICAgIC8vXG4gICAgLy8gZ2l2ZW4g
dGhlIHJvdXRlICcvaGVsbG8vd29ybGQnLlxuICAgIC8vXG4gICAgJy9oZWxsbyc6IHtcbiAgICAg
ICcvKFxcXFx3KyknOiB7XG4gICAgICAgIC8vXG4gICAgICAgIC8vIHRoaXMgZnVuY3Rpb24gd2ls
bCByZXR1cm4gdGhlIHZhbHVlICd3b3JsZCcuXG4gICAgICAgIC8vXG4gICAgICAgIG9uOiBmdW5j
dGlvbiAod2hvKSB7IGNvbnNvbGUubG9nKHdobykgfVxuICAgICAgfVxuICAgIH1cbiAgfSk7XG5g
YGBcblxuYGBgIGpzXG4gIHZhciByb3V0ZXIgPSBSb3V0ZXIoe1xuICAgIC8vXG4gICAgLy8gZ2l2
ZW4gdGhlIHJvdXRlICcvaGVsbG8vd29ybGQvam9obnkvYXBwbGVzZWVkJy5cbiAgICAvL1xuICAg
ICcvaGVsbG8nOiB7XG4gICAgICAnL3dvcmxkLz8oW15cXC9dKilcXC8oW15cXC9dKikvPyc6IGZ1
bmN0aW9uIChhLCBiKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGEsIGIpO1xuICAgICAgfVxuICAg
IH1cbiAgfSk7XG5gYGBcblxuIyMgVVJMIFBhcmFtZXRlcnNcblxuV2hlbiB5b3UgYXJlIHVzaW5n
IHRoZSBzYW1lIHJvdXRlIGZyYWdtZW50cyBpdCBpcyBtb3JlIGRlc2NyaXB0aXZlIHRvIGRlZmlu
ZVxudGhlc2UgZnJhZ21lbnRzIGJ5IG5hbWUgYW5kIHRoZW4gdXNlIHRoZW0gaW4geW91clxuW1Jv
dXRpbmcgVGFibGVdKCNyb3V0aW5nLXRhYmxlKSBvciBbQWRob2MgUm91dGVzXSgjYWRob2Mtcm91
dGluZykuIENvbnNpZGVyIGFcbnNpbXBsZSBleGFtcGxlIHdoZXJlIGEgYHVzZXJJZGAgaXMgdXNl
ZCByZXBlYXRlZGx5LlxuXG5gYGAganNcbiAgLy9cbiAgLy8gQ3JlYXRlIGEgcm91dGVyLiBUaGlz
IGNvdWxkIGFsc28gYmUgZGlyZWN0b3IuY2xpLlJvdXRlcigpIG9yXG4gIC8vIGRpcmVjdG9yLmh0
dHAuUm91dGVyKCkuXG4gIC8vXG4gIHZhciByb3V0ZXIgPSBuZXcgZGlyZWN0b3IuUm91dGVyKCk7
XG5cbiAgLy9cbiAgLy8gQSByb3V0ZSBjb3VsZCBiZSBkZWZpbmVkIHVzaW5nIHRoZSBgdXNlcklk
YCBleHBsaWNpdGx5LlxuICAvL1xuICByb3V0ZXIub24oLyhbXFx3LV9dKykvLCBmdW5jdGlvbiAo
dXNlcklkKSB7IH0pO1xuXG4gIC8vXG4gIC8vIERlZmluZSBhIHNob3J0aGFuZCBmb3IgdGhpcyBm
cmFnbWVudCBjYWxsZWQgYHVzZXJJZGAuXG4gIC8vXG4gIHJvdXRlci5wYXJhbSgndXNlcklkJywg
LyhbXFxcXHdcXFxcLV0rKS8pO1xuXG4gIC8vXG4gIC8vIE5vdyBtdWx0aXBsZSByb3V0ZXMgY2Fu
IGJlIGRlZmluZWQgd2l0aCB0aGUgc2FtZVxuICAvLyByZWd1bGFyIGV4cHJlc3Npb24uXG4gIC8v
XG4gIHJvdXRlci5vbignL2FueXRoaW5nLzp1c2VySWQnLCBmdW5jdGlvbiAodXNlcklkKSB7IH0p
O1xuICByb3V0ZXIub24oJy9zb21ldGhpbmctZWxzZS86dXNlcklkJywgZnVuY3Rpb24gKHVzZXJJ
ZCkgeyB9KTtcbmBgYFxuXG4jIyBXaWxkY2FyZCByb3V0ZXNcblxuSXQgaXMgcG9zc2libGUgdG8g
ZGVmaW5lIHdpbGRjYXJkIHJvdXRlcywgc28gdGhhdCAvZm9vIGFuZCAvZm9vL2EvYi9jIHJvdXRl
cyB0b1xudGhlIHNhbWUgaGFuZGxlciwgYW5kIGdldHMgcGFzc2VkIGBcIlwiYCBhbmQgYFwiYS9i
L2NcImAgcmVzcGVjdGl2ZWx5LlxuXG5gYGAganNcbiAgcm91dGVyLm9uKFwiL2Zvby8/KChcXHd8
LikqKVwiKSwgZnVuY3Rpb24gKHBhdGgpIHsgfSk7XG5gYGBcblxuIyMgUm91dGUgUmVjdXJzaW9u
XG5cbkNhbiBiZSBhc3NpZ25lZCB0aGUgdmFsdWUgb2YgYGZvcndhcmRgIG9yIGBiYWNrd2FyZGAu
IFRoZSByZWN1cnNlIG9wdGlvbiB3aWxsXG5kZXRlcm1pbmUgdGhlIG9yZGVyIGluIHdoaWNoIHRv
IGZpcmUgdGhlIGxpc3RlbmVycyB0aGF0IGFyZSBhc3NvY2lhdGVkIHdpdGhcbnlvdXIgcm91dGVz
LiBJZiB0aGlzIG9wdGlvbiBpcyBOT1Qgc3BlY2lmaWVkIG9yIHNldCB0byBudWxsLCB0aGVuIG9u
bHkgdGhlXG5saXN0ZW5lcnMgYXNzb2NpYXRlZCB3aXRoIGFuIGV4YWN0IG1hdGNoIHdpbGwgYmUg
ZmlyZWQuXG5cbiMjIyBObyByZWN1cnNpb24sIHdpdGggdGhlIFVSTCAvZG9nL2FuZ3J5XG5cbmBg
YCBqc1xuICB2YXIgcm91dGVzID0ge1xuICAgICcvZG9nJzoge1xuICAgICAgJy9hbmdyeSc6IHtc
biAgICAgICAgLy9cbiAgICAgICAgLy8gT25seSB0aGlzIG1ldGhvZCB3aWxsIGJlIGZpcmVkLlxu
ICAgICAgICAvL1xuICAgICAgICBvbjogZ3Jvd2xcbiAgICAgIH0sXG4gICAgICBvbjogYmFya1xu
ICAgIH1cbiAgfTtcblxuICB2YXIgcm91dGVyID0gUm91dGVyKHJvdXRlcyk7XG5gYGBcblxuIyMj
IFJlY3Vyc2lvbiBzZXQgdG8gYGJhY2t3YXJkYCwgd2l0aCB0aGUgVVJMIC9kb2cvYW5ncnlcblxu
YGBgIGpzXG4gIHZhciByb3V0ZXMgPSB7XG4gICAgJy9kb2cnOiB7XG4gICAgICAnL2FuZ3J5Jzog
e1xuICAgICAgICAvL1xuICAgICAgICAvLyBUaGlzIG1ldGhvZCB3aWxsIGJlIGZpcmVkIGZpcnN0
LlxuICAgICAgICAvL1xuICAgICAgICBvbjogZ3Jvd2xcbiAgICAgIH0sXG4gICAgICAvL1xuICAg
ICAgLy8gVGhpcyBtZXRob2Qgd2lsbCBiZSBmaXJlZCBzZWNvbmQuXG4gICAgICAvL1xuICAgICAg
b246IGJhcmtcbiAgICB9XG4gIH07XG5cbiAgdmFyIHJvdXRlciA9IFJvdXRlcihyb3V0ZXMpLmNv
bmZpZ3VyZSh7IHJlY3Vyc2U6ICdiYWNrd2FyZCcgfSk7XG5gYGBcblxuIyMjIFJlY3Vyc2lvbiBz
ZXQgdG8gYGZvcndhcmRgLCB3aXRoIHRoZSBVUkwgL2RvZy9hbmdyeVxuXG5gYGAganNcbiAgdmFy
IHJvdXRlcyA9IHtcbiAgICAnL2RvZyc6IHtcbiAgICAgICcvYW5ncnknOiB7XG4gICAgICAgIC8v
XG4gICAgICAgIC8vIFRoaXMgbWV0aG9kIHdpbGwgYmUgZmlyZWQgc2Vjb25kLlxuICAgICAgICAv
L1xuICAgICAgICBvbjogZ3Jvd2xcbiAgICAgIH0sXG4gICAgICAvL1xuICAgICAgLy8gVGhpcyBt
ZXRob2Qgd2lsbCBiZSBmaXJlZCBmaXJzdC5cbiAgICAgIC8vXG4gICAgICBvbjogYmFya1xuICAg
IH1cbiAgfTtcblxuICB2YXIgcm91dGVyID0gUm91dGVyKHJvdXRlcykuY29uZmlndXJlKHsgcmVj
dXJzZTogJ2ZvcndhcmQnIH0pO1xuYGBgXG5cbiMjIyBCcmVha2luZyBvdXQgb2YgcmVjdXJzaW9u
LCB3aXRoIHRoZSBVUkwgL2RvZy9hbmdyeVxuXG5gYGAganNcbiAgdmFyIHJvdXRlcyA9IHtcbiAg
ICAnL2RvZyc6IHtcbiAgICAgICcvYW5ncnknOiB7XG4gICAgICAgIC8vXG4gICAgICAgIC8vIFRo
aXMgbWV0aG9kIHdpbGwgYmUgZmlyZWQgZmlyc3QuXG4gICAgICAgIC8vXG4gICAgICAgIG9uOiBm
dW5jdGlvbigpIHsgcmV0dXJuIGZhbHNlOyB9XG4gICAgICB9LFxuICAgICAgLy9cbiAgICAgIC8v
IFRoaXMgbWV0aG9kIHdpbGwgbm90IGJlIGZpcmVkLlxuICAgICAgLy9cbiAgICAgIG9uOiBiYXJr
XG4gICAgfVxuICB9O1xuXG4gIC8vXG4gIC8vIFRoaXMgZmVhdHVyZSB3b3JrcyBpbiByZXZlcnNl
IHdpdGggcmVjdXJzaW9uIHNldCB0byB0cnVlLlxuICAvL1xuICB2YXIgcm91dGVyID0gUm91dGVy
KHJvdXRlcykuY29uZmlndXJlKHsgcmVjdXJzZTogJ2JhY2t3YXJkJyB9KTtcbmBgYFxuXG4jIyBB
c3luYyBSb3V0aW5nXG5cbkJlZm9yZSBkaXZpbmcgaW50byBob3cgRGlyZWN0b3IgZXhwb3NlcyBh
c3luYyByb3V0aW5nLCB5b3Ugc2hvdWxkIHVuZGVyc3RhbmRcbltSb3V0ZSBSZWN1cnNpb25dKCNy
b3V0ZS1yZWN1cnNpb24pLiBBdCBpdCdzIGNvcmUgcm91dGUgcmVjdXJzaW9uIGlzIGFib3V0XG5l
dmFsdWF0aW5nIGEgc2VyaWVzIG9mIGZ1bmN0aW9ucyBnYXRoZXJlZCB3aGVuIHRyYXZlcnNpbmcg
dGhlIFtSb3V0aW5nXG5UYWJsZV0oI3JvdXRpbmctdGFibGUpLlxuXG5Ob3JtYWxseSB0aGlzIHNl
cmllcyBvZiBmdW5jdGlvbnMgaXMgZXZhbHVhdGVkIHN5bmNocm9ub3VzbHkuIEluIGFzeW5jIHJv
dXRpbmcsXG50aGVzZSBmdW5jdGlvbnMgYXJlIGV2YWx1YXRlZCBhc3luY2hyb25vdXNseS4gQXN5
bmMgcm91dGluZyBjYW4gYmUgZXh0cmVtZWx5XG51c2VmdWwgYm90aCBvbiB0aGUgY2xpZW50LXNp
ZGUgYW5kIHRoZSBzZXJ2ZXItc2lkZTpcblxuKiAqKkNsaWVudC1zaWRlOioqIFRvIGVuc3VyZSBh
biBhbmltYXRpb24gb3Igb3RoZXIgYXN5bmMgb3BlcmF0aW9ucyAoc3VjaCBhc1xuICBIVFRQIHJl
cXVlc3RzIGZvciBhdXRoZW50aWNhdGlvbikgaGF2ZSBjb21wbGV0ZWQgYmVmb3JlIGNvbnRpbnVp
bmcgZXZhbHVhdGlvblxuICBvZiBhIHJvdXRlLlxuKiAqKlNlcnZlci1zaWRlOioqIFRvIGVuc3Vy
ZSBhcmJpdHJhcnkgYXN5bmMgb3BlcmF0aW9ucyAoc3VjaCBhcyBwZXJmb3JtaW5nXG4gIGF1dGhl
bnRpY2F0aW9uKSBoYXZlIGNvbXBsZXRlZCBiZWZvcmUgY29udGludWluZyB0aGUgZXZhbHVhdGlv
biBvZiBhIHJvdXRlLlxuXG5UaGUgbWV0aG9kIHNpZ25hdHVyZXMgZm9yIHJvdXRlIGZ1bmN0aW9u
cyBpbiBzeW5jaHJvbm91cyBhbmQgYXN5bmNocm9ub3VzXG5ldmFsdWF0aW9uIGFyZSBkaWZmZXJl
bnQ6IGFzeW5jIHJvdXRlIGZ1bmN0aW9ucyB0YWtlIGFuIGFkZGl0aW9uYWwgYG5leHQoKWBcbmNh
bGxiYWNrLlxuXG4jIyMgU3luY2hyb25vdXMgcm91dGUgZnVuY3Rpb25zXG5cbmBgYCBqc1xuICB2
YXIgcm91dGVyID0gbmV3IGRpcmVjdG9yLlJvdXRlcigpO1xuXG4gIHJvdXRlci5vbignLzpmb28v
OmJhci86YmF6eicsIGZ1bmN0aW9uIChmb28sIGJhciwgYmF6eikge1xuICAgIC8vXG4gICAgLy8g
RG8gc29tZXRoaW5nIGFzeW5jaHJvbm91cyB3aXRoIGBmb29gLCBgYmFyYCwgYW5kIGBiYXp6YC5c
biAgICAvL1xuICB9KTtcbmBgYFxuXG4jIyMgQXN5bmNocm9ub3VzIHJvdXRlIGZ1bmN0aW9uc1xu
XG5gYGAganNcbiAgdmFyIHJvdXRlciA9IG5ldyBkaXJlY3Rvci5odHRwLlJvdXRlcigpLmNvbmZp
Z3VyZSh7IGFzeW5jOiB0cnVlIH0pO1xuXG4gIHJvdXRlci5vbignLzpmb28vOmJhci86YmF6eics
IGZ1bmN0aW9uIChmb28sIGJhciwgYmF6eiwgbmV4dCkge1xuICAgIC8vXG4gICAgLy8gR28gZG8g
c29tZXRoaW5nIGFzeW5jLCBhbmQgZGV0ZXJtaW5lIHRoYXQgcm91dGluZyBzaG91bGQgc3RvcFxu
ICAgIC8vXG4gICAgbmV4dChmYWxzZSk7XG4gIH0pO1xuYGBgXG5cbiMjIFJlc291cmNlc1xuXG4q
KkF2YWlsYWJsZSBvbiB0aGUgQ2xpZW50LXNpZGUgb25seS4qKiBBbiBvYmplY3QgbGl0ZXJhbCBj
b250YWluaW5nIGZ1bmN0aW9ucy5cbklmIGEgaG9zdCBvYmplY3QgaXMgc3BlY2lmaWVkLCB5b3Vy
IHJvdXRlIGRlZmluaXRpb25zIGNhbiBwcm92aWRlIHN0cmluZ1xubGl0ZXJhbHMgdGhhdCByZXBy
ZXNlbnQgdGhlIGZ1bmN0aW9uIG5hbWVzIGluc2lkZSB0aGUgaG9zdCBvYmplY3QuIEEgaG9zdFxu
b2JqZWN0IGNhbiBwcm92aWRlIHRoZSBtZWFucyBmb3IgYmV0dGVyIGVuY2Fwc3VsYXRpb24gYW5k
IGRlc2lnbi5cblxuYGBgIGpzXG5cbiAgdmFyIHJvdXRlciA9IFJvdXRlcih7XG5cbiAgICAnL2hl
bGxvJzoge1xuICAgICAgJy91c2EnOiAnYW1lcmljYXMnLFxuICAgICAgJy9jaGluYSc6ICdhc2lh
J1xuICAgIH1cblxuICB9KS5jb25maWd1cmUoeyByZXNvdXJjZTogY29udGFpbmVyIH0pLmluaXQo
KTtcblxuICB2YXIgY29udGFpbmVyID0ge1xuICAgIGFtZXJpY2FzOiBmdW5jdGlvbigpIHsgcmV0
dXJuIHRydWU7IH0sXG4gICAgY2hpbmE6IGZ1bmN0aW9uKCkgeyByZXR1cm4gdHJ1ZTsgfVxuICB9
O1xuXG5gYGBcblxuIyMgSGlzdG9yeSBBUElcblxuKipBdmFpbGFibGUgb24gdGhlIENsaWVudC1z
aWRlIG9ubHkuKiogRGlyZWN0b3Igc3VwcG9ydHMgdXNpbmcgSFRNTDUgSGlzdG9yeVxuQVBJIGlu
c3RlYWQgb2YgaGFzaCBmcmFnbWVudHMgZm9yIG5hdmlnYXRpb24uIFRvIHVzZSB0aGUgQVBJLCBw
YXNzXG5ge2h0bWw1aGlzdG9yeTogdHJ1ZX1gIHRvIGBjb25maWd1cmUoKWAuIFVzZSBvZiB0aGUg
QVBJIGlzIGVuYWJsZWQgb25seSBpZiB0aGVcbmNsaWVudCBzdXBwb3J0cyBgcHVzaFN0YXRlKClg
LlxuXG5Vc2luZyB0aGUgQVBJIGdpdmVzIHlvdSBjbGVhbmVyIFVSSXMgYnV0IHRoZXkgY29tZSB3
aXRoIGEgY29zdC4gVW5saWtlIHdpdGhcbmhhc2ggZnJhZ21lbnRzIHlvdXIgcm91dGUgVVJJcyBt
dXN0IGV4aXN0LiBXaGVuIHRoZSBjbGllbnQgZW50ZXJzIGEgcGFnZSwgc2F5XG5odHRwOi8vZm9v
LmNvbS9iYXIvYmF6LCB0aGUgd2ViIHNlcnZlciBtdXN0IHJlc3BvbmQgd2l0aCBzb21ldGhpbmcg
bWVhbmluZ2Z1bC5cblVzdWFsbHkgdGhpcyBtZWFucyB0aGF0IHlvdXIgd2ViIHNlcnZlciBjaGVj
a3MgdGhlIFVSSSBwb2ludHMgdG8gc29tZXRoaW5nXG50aGF0LCBpbiBhIHNlbnNlLCBleGlzdHMs
IGFuZCB0aGVuIHNlcnZlcyB0aGUgY2xpZW50IHRoZSBKYXZhU2NyaXB0XG5hcHBsaWNhdGlvbi5c
blxuSWYgeW91J3JlIGFmdGVyIGEgc2luZ2xlLXBhZ2UgYXBwbGljYXRpb24geW91IGNhbiBub3Qg
dXNlIHBsYWluIG9sZCBgPGFcbmhyZWY9XCIvYmFyL2JhelwiPmAgdGFncyBmb3IgbmF2aWdhdGlv
biBhbnltb3JlLiBXaGVuIHN1Y2ggbGluayBpcyBjbGlja2VkLCB3ZWJcbmJyb3dzZXJzIHRyeSB0
byBhc2sgZm9yIHRoZSByZXNvdXJjZSBmcm9tIHNlcnZlciB3aGljaCBpcyBub3Qgb2YgY291cnNl
IGRlc2lyZWRcbmZvciBhIHNpbmdsZS1wYWdlIGFwcGxpY2F0aW9uLiBJbnN0ZWFkIHlvdSBuZWVk
IHRvIHVzZSBlLmcuIGNsaWNrIGhhbmRsZXJzIGFuZFxuY2FsbCB0aGUgYHNldFJvdXRlKClgIG1l
dGhvZCB5b3Vyc2VsZi5cblxuIyMgQXR0YWNoIFByb3BlcnRpZXMgVG8gYHRoaXNgXG5cbioqQXZh
aWxhYmxlIGluIHRoZSBodHRwIHJvdXRlciBvbmx5LioqIEdlbmVyYWxseSwgdGhlIGB0aGlzYCBv
YmplY3QgYm91bmQgdG9cbnJvdXRlIGhhbmRsZXJzLCB3aWxsIGNvbnRhaW4gdGhlIHJlcXVlc3Qg
aW4gYHRoaXMucmVxYCBhbmQgdGhlIHJlc3BvbnNlIGluXG5gdGhpcy5yZXNgLiBPbmUgbWF5IGF0
dGFjaCBhZGRpdGlvbmFsIHByb3BlcnRpZXMgdG8gYHRoaXNgIHdpdGggdGhlXG5gcm91dGVyLmF0
dGFjaGAgbWV0aG9kOlxuXG5gYGBqc1xuICB2YXIgZGlyZWN0b3IgPSByZXF1aXJlKCdkaXJlY3Rv
cicpO1xuXG4gIHZhciByb3V0ZXIgPSBuZXcgZGlyZWN0b3IuaHR0cC5Sb3V0ZXIoKS5jb25maWd1
cmUob3B0aW9ucyk7XG5cbiAgLy9cbiAgLy8gQXR0YWNoIHByb3BlcnRpZXMgdG8gYHRoaXNgXG4g
IC8vXG4gIHJvdXRlci5hdHRhY2goZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZGF0YSA9IFsxLDIs
M107XG4gIH0pO1xuXG4gIC8vXG4gIC8vIEFjY2VzcyBwcm9wZXJ0aWVzIGF0dGFjaGVkIHRvIGB0
aGlzYCBpbiB5b3VyIHJvdXRlcyFcbiAgLy9cbiAgcm91dGVyLmdldCgnL2hlbGxvJywgZnVuY3Rp
b24gKCkge1xuICAgIHRoaXMucmVzLndyaXRlSGVhZCgyMDAsIHsgJ2NvbnRlbnQtdHlwZSc6ICd0
ZXh0L3BsYWluJyB9KTtcblxuICAgIC8vXG4gICAgLy8gUmVzcG9uc2Ugd2lsbCBiZSBgWzEsMiwz
XWAhXG4gICAgLy9cbiAgICB0aGlzLnJlcy5lbmQodGhpcy5kYXRhKTtcbiAgfSk7XG5gYGBcblxu
VGhpcyBBUEkgbWF5IGJlIHVzZWQgdG8gYXR0YWNoIGNvbnZlbmllbmNlIG1ldGhvZHMgdG8gdGhl
IGB0aGlzYCBjb250ZXh0IG9mXG5yb3V0ZSBoYW5kbGVycy5cblxuIyMgSFRUUCBTdHJlYW1pbmcg
YW5kIEJvZHkgUGFyc2luZ1xuXG5XaGVuIHlvdSBhcmUgcGVyZm9ybWluZyBIVFRQIHJvdXRpbmcg
dGhlcmUgYXJlIHR3byBjb21tb24gc2NlbmFyaW9zOlxuXG4qIEJ1ZmZlciB0aGUgcmVxdWVzdCBi
b2R5IGFuZCBwYXJzZSBpdCBhY2NvcmRpbmcgdG8gdGhlIGBDb250ZW50LVR5cGVgIGhlYWRlclxu
ICAodXN1YWxseSBgYXBwbGljYXRpb24vanNvbmAgb3IgYGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0t
dXJsZW5jb2RlZGApLlxuKiBTdHJlYW0gdGhlIHJlcXVlc3QgYm9keSBieSBtYW51YWxseSBjYWxs
aW5nIGAucGlwZWAgb3IgbGlzdGVuaW5nIHRvIHRoZVxuICBgZGF0YWAgYW5kIGBlbmRgIGV2ZW50
cy5cblxuQnkgZGVmYXVsdCBgZGlyZWN0b3IuaHR0cC5Sb3V0ZXIoKWAgd2lsbCBhdHRlbXB0IHRv
IHBhcnNlIGVpdGhlciB0aGUgYC5jaHVua3NgXG5vciBgLmJvZHlgIHByb3BlcnRpZXMgc2V0IG9u
IHRoZSByZXF1ZXN0IHBhcmFtZXRlciBwYXNzZWQgdG9cbmByb3V0ZXIuZGlzcGF0Y2gocmVxdWVz
dCwgcmVzcG9uc2UsIGNhbGxiYWNrKWAuIFRoZSByb3V0ZXIgaW5zdGFuY2Ugd2lsbCBhbHNvXG53
YWl0IGZvciB0aGUgYGVuZGAgZXZlbnQgYmVmb3JlIGZpcmluZyBhbnkgcm91dGVzLlxuXG4qKkRl
ZmF1bHQgQmVoYXZpb3IqKlxuXG5gYGAganNcbiAgdmFyIGRpcmVjdG9yID0gcmVxdWlyZSgnZGly
ZWN0b3InKTtcblxuICB2YXIgcm91dGVyID0gbmV3IGRpcmVjdG9yLmh0dHAuUm91dGVyKCk7XG5c
biAgcm91dGVyLmdldCgnLycsIGZ1bmN0aW9uICgpIHtcbiAgICAvL1xuICAgIC8vIFRoaXMgd2ls
bCBub3Qgd29yaywgYmVjYXVzZSBhbGwgb2YgdGhlIGRhdGFcbiAgICAvLyBldmVudHMgYW5kIHRo
ZSBlbmQgZXZlbnQgaGF2ZSBhbHJlYWR5IGZpcmVkLlxuICAgIC8vXG4gICAgdGhpcy5yZXEub24o
J2RhdGEnLCBmdW5jdGlvbiAoY2h1bmspIHtcbiAgICAgIGNvbnNvbGUubG9nKGNodW5rKVxuICAg
IH0pO1xuICB9KTtcbmBgYFxuXG5JbiBbZmxhdGlyb25dWzJdLCBgZGlyZWN0b3JgIGlzIHVzZWQg
aW4gY29uanVuY3Rpb24gd2l0aCBbdW5pb25dWzNdIHdoaWNoIHVzZXNcbmEgYEJ1ZmZlcmVkU3Ry
ZWFtYCBwcm94eSB0byB0aGUgcmF3IGBodHRwLlJlcXVlc3RgIGluc3RhbmNlLiBbdW5pb25dWzNd
IHdpbGxcbnNldCB0aGUgYHJlcS5jaHVua3NgIHByb3BlcnR5IGZvciB5b3UgYW5kIGRpcmVjdG9y
IHdpbGwgYXV0b21hdGljYWxseSBwYXJzZSB0aGVcbmJvZHkuIElmIHlvdSB3aXNoIHRvIHBlcmZv
cm0gdGhpcyBidWZmZXJpbmcgeW91cnNlbGYgZGlyZWN0bHkgd2l0aCBgZGlyZWN0b3JgXG55b3Ug
Y2FuIHVzZSBhIHNpbXBsZSByZXF1ZXN0IGhhbmRsZXIgaW4geW91ciBodHRwIHNlcnZlcjpcblxu
YGBgIGpzXG4gIHZhciBodHRwID0gcmVxdWlyZSgnaHR0cCcpLFxuICAgICAgZGlyZWN0b3IgPSBy
ZXF1aXJlKCdkaXJlY3RvcicpO1xuXG4gIHZhciByb3V0ZXIgPSBuZXcgZGlyZWN0b3IuaHR0cC5S
b3V0ZXIoKTtcblxuICB2YXIgc2VydmVyID0gaHR0cC5jcmVhdGVTZXJ2ZXIoZnVuY3Rpb24gKHJl
cSwgcmVzKSB7XG4gICAgcmVxLmNodW5rcyA9IFtdO1xuICAgIHJlcS5vbignZGF0YScsIGZ1bmN0
aW9uIChjaHVuaykge1xuICAgICAgcmVxLmNodW5rcy5wdXNoKGNodW5rLnRvU3RyaW5nKCkpO1xu
ICAgIH0pO1xuXG4gICAgcm91dGVyLmRpc3BhdGNoKHJlcSwgcmVzLCBmdW5jdGlvbiAoZXJyKSB7
XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIHJlcy53cml0ZUhlYWQoNDA0KTtcbiAgICAgICAg
cmVzLmVuZCgpO1xuICAgICAgfVxuXG4gICAgICBjb25zb2xlLmxvZygnU2VydmVkICcgKyByZXEu
dXJsKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgcm91dGVyLnBvc3QoJy8nLCBmdW5jdGlvbiAoKSB7
XG4gICAgdGhpcy5yZXMud3JpdGVIZWFkKDIwMCwgeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0
aW9uL2pzb24nIH0pXG4gICAgdGhpcy5yZXMuZW5kKEpTT04uc3RyaW5naWZ5KHRoaXMucmVxLmJv
ZHkpKTtcbiAgfSk7XG5gYGBcblxuKipTdHJlYW1pbmcgU3VwcG9ydCoqXG5cbklmIHlvdSB3aXNo
IHRvIGdldCBhY2Nlc3MgdG8gdGhlIHJlcXVlc3Qgc3RyZWFtIGJlZm9yZSB0aGUgYGVuZGAgZXZl
bnQgaXNcbmZpcmVkLCB5b3UgY2FuIHBhc3MgdGhlIGB7IHN0cmVhbTogdHJ1ZSB9YCBvcHRpb25z
IHRvIHRoZSByb3V0ZS5cblxuYGBgIGpzXG4gIHZhciBkaXJlY3RvciA9IHJlcXVpcmUoJ2RpcmVj
dG9yJyk7XG5cbiAgdmFyIHJvdXRlciA9IG5ldyBkaXJlY3Rvci5odHRwLlJvdXRlcigpO1xuXG4g
IHJvdXRlci5nZXQoJy8nLCB7IHN0cmVhbTogdHJ1ZSB9LCBmdW5jdGlvbiAoKSB7XG4gICAgLy9c
biAgICAvLyBUaGlzIHdpbGwgd29yayBiZWNhdXNlIHRoZSByb3V0ZSBoYW5kbGVyIGlzIGludm9r
ZWRcbiAgICAvLyBpbW1lZGlhdGVseSB3aXRob3V0IHdhaXRpbmcgZm9yIHRoZSBgZW5kYCBldmVu
dC5cbiAgICAvL1xuICAgIHRoaXMucmVxLm9uKCdkYXRhJywgZnVuY3Rpb24gKGNodW5rKSB7XG4g
ICAgICBjb25zb2xlLmxvZyhjaHVuayk7XG4gICAgfSk7XG4gIH0pO1xuYGBgXG5cbiMjIEluc3Rh
bmNlIG1ldGhvZHNcblxuIyMjIGNvbmZpZ3VyZShvcHRpb25zKVxuXG4qIGBvcHRpb25zYCB7T2Jq
ZWN0fTogT3B0aW9ucyB0byBjb25maWd1cmUgdGhpcyBpbnN0YW5jZSB3aXRoLlxuXG5Db25maWd1
cmVzIHRoZSBSb3V0ZXIgaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIGBvcHRpb25zYC4gU2Vl
XG5bQ29uZmlndXJhdGlvbl0oI2NvbmZpZ3VyYXRpb24pIGZvciBtb3JlIGRvY3VtZW50YXRpb24u
XG5cbiMjIyBwYXJhbSh0b2tlbiwgbWF0Y2hlcilcblxuKiB0b2tlbiB7c3RyaW5nfTogTmFtZWQg
cGFyYW1ldGVyIHRva2VuIHRvIHNldCB0byB0aGUgc3BlY2lmaWVkIGBtYXRjaGVyYFxuKiBtYXRj
aGVyIHtzdHJpbmd8UmVnZXhwfTogTWF0Y2hlciBmb3IgdGhlIHNwZWNpZmllZCBgdG9rZW5gLlxu
XG5BZGRzIGEgcm91dGUgZnJhZ21lbnQgZm9yIHRoZSBnaXZlbiBzdHJpbmcgYHRva2VuYCB0byB0
aGUgc3BlY2lmaWVkIHJlZ2V4XG5gbWF0Y2hlcmAgdG8gdGhpcyBSb3V0ZXIgaW5zdGFuY2UuIFNl
ZSBbVVJMIFBhcmFtZXRlcnNdKCN1cmwtcGFyYW1ldGVycykgZm9yIG1vcmVcbmRvY3VtZW50YXRp
b24uXG5cbiMjIyBvbihtZXRob2QsIHBhdGgsIHJvdXRlKVxuXG4qIGBtZXRob2RgIHtzdHJpbmd9
OiBNZXRob2QgdG8gaW5zZXJ0IHdpdGhpbiB0aGUgUm91dGluZyBUYWJsZSAoZS5nLiBgb25gLFxu
ICBgZ2V0YCwgZXRjLikuXG4qIGBwYXRoYCB7c3RyaW5nfTogUGF0aCB3aXRoaW4gdGhlIFJvdXRp
bmcgVGFibGUgdG8gc2V0IHRoZSBgcm91dGVgIHRvLlxuKiBgcm91dGVgIHtmdW5jdGlvbnxBcnJh
eX06IFJvdXRlIGhhbmRsZXIgdG8gaW52b2tlIGZvciB0aGUgYG1ldGhvZGAgYW5kIGBwYXRoYC5c
blxuQWRkcyB0aGUgYHJvdXRlYCBoYW5kbGVyIGZvciB0aGUgc3BlY2lmaWVkIGBtZXRob2RgIGFu
ZCBgcGF0aGAgd2l0aGluIHRoZVxuW1JvdXRpbmcgVGFibGVdKCNyb3V0aW5nLXRhYmxlKS5cblxu
IyMjIHBhdGgocGF0aCwgcm91dGVzRm4pXG5cbiogYHBhdGhgIHtzdHJpbmd8UmVnZXhwfTogU2Nv
cGUgd2l0aGluIHRoZSBSb3V0aW5nIFRhYmxlIHRvIGludm9rZSB0aGVcbiAgYHJvdXRlc0ZuYCB3
aXRoaW4uXG4qIGByb3V0ZXNGbmAge2Z1bmN0aW9ufTogQWRob2MgUm91dGluZyBmdW5jdGlvbiB3
aXRoIGNhbGxzIHRvIGB0aGlzLm9uKClgLFxuICBgdGhpcy5nZXQoKWAgZXRjLlxuXG5JbnZva2Vz
IHRoZSBgcm91dGVzRm5gIHdpdGhpbiB0aGUgc2NvcGUgb2YgdGhlIHNwZWNpZmllZCBgcGF0aGAg
Zm9yIHRoaXMgUm91dGVyXG5pbnN0YW5jZS5cblxuIyMjIGRpc3BhdGNoKG1ldGhvZCwgcGF0aFss
IGNhbGxiYWNrXSlcblxuKiBtZXRob2Qge3N0cmluZ306IE1ldGhvZCB0byBpbnZva2UgaGFuZGxl
cnMgZm9yIHdpdGhpbiB0aGUgUm91dGluZyBUYWJsZVxuKiBwYXRoIHtzdHJpbmd9OiBQYXRoIHdp
dGhpbiB0aGUgUm91dGluZyBUYWJsZSB0byBtYXRjaFxuKiBjYWxsYmFjayB7ZnVuY3Rpb259OiBJ
bnZva2VkIG9uY2UgYWxsIHJvdXRlIGhhbmRsZXJzIGhhdmUgYmVlbiBjYWxsZWQuXG5cbkRpc3Bh
dGNoZXMgdGhlIHJvdXRlIGhhbmRsZXJzIG1hdGNoZWQgd2l0aGluIHRoZSBbUm91dGluZyBUYWJs
ZV0oI3JvdXRpbmctdGFibGUpXG5mb3IgdGhpcyBpbnN0YW5jZSBmb3IgdGhlIHNwZWNpZmllZCBg
bWV0aG9kYCBhbmQgYHBhdGhgLlxuXG4jIyMgbW91bnQocm91dGVzLCBwYXRoKVxuXG4qIHJvdXRl
cyB7b2JqZWN0fTogUGFydGlhbCByb3V0aW5nIHRhYmxlIHRvIGluc2VydCBpbnRvIHRoaXMgaW5z
dGFuY2UuXG4qIHBhdGgge3N0cmluZ3xSZWdleHB9OiBQYXRoIHdpdGhpbiB0aGUgUm91dGluZyBU
YWJsZSB0byBpbnNlcnQgdGhlIGByb3V0ZXNgXG4gIGludG8uXG5cbkluc2VydHMgdGhlIHBhcnRp
YWwgW1JvdXRpbmcgVGFibGVdKCNyb3V0aW5nLXRhYmxlKSwgYHJvdXRlc2AsIGludG8gdGhlIFJv
dXRpbmdcblRhYmxlIGZvciB0aGlzIFJvdXRlciBpbnN0YW5jZSBhdCB0aGUgc3BlY2lmaWVkIGBw
YXRoYC5cblxuIyMgSW5zdGFuY2UgbWV0aG9kcyAoQ2xpZW50LXNpZGUgb25seSlcblxuIyMjIGlu
aXQoW3JlZGlyZWN0XSlcblxuKiBgcmVkaXJlY3RgIHtTdHJpbmd9OiBUaGlzIHZhbHVlIHdpbGwg
YmUgdXNlZCBpZiAnLyMvJyBpcyBub3QgZm91bmQgaW4gdGhlXG4gIFVSTC4gKGUuZy4sIGluaXQo
Jy8nKSB3aWxsIHJlc29sdmUgdG8gJy8jLycsIGluaXQoJ2ZvbycpIHdpbGwgcmVzb2x2ZSB0b1xu
ICAnLyNmb28nKS5cblxuSW5pdGlhbGl6ZSB0aGUgcm91dGVyLCBzdGFydCBsaXN0ZW5pbmcgZm9y
IGNoYW5nZXMgdG8gdGhlIFVSTC5cblxuIyMjIGdldFJvdXRlKFtpbmRleF0pXG5cbiogYGluZGV4
YCB7TnVtYmVyfTogVGhlIGhhc2ggdmFsdWUgaXMgZGl2aWRlZCBieSBmb3J3YXJkIHNsYXNoZXMs
IGVhY2ggc2VjdGlvblxuICB0aGVuIGhhcyBhbiBpbmRleCwgaWYgdGhpcyBpcyBwcm92aWRlZCwg
b25seSB0aGF0IHNlY3Rpb24gb2YgdGhlIHJvdXRlIHdpbGxcbiAgYmUgcmV0dXJuZWQuXG5cblJl
dHVybnMgdGhlIGVudGlyZSByb3V0ZSBvciBqdXN0IGEgc2VjdGlvbiBvZiBpdC5cblxuIyMjIHNl
dFJvdXRlKHJvdXRlKVxuXG4qIGByb3V0ZWAge1N0cmluZ306IFN1cHBseSBhIHJvdXRlIHZhbHVl
LCBzdWNoIGFzIGBob21lL3N0YXRzYC5cblxuU2V0IHRoZSBjdXJyZW50IHJvdXRlLlxuXG4jIyMg
c2V0Um91dGUoc3RhcnQsIGxlbmd0aClcblxuKiBgc3RhcnRgIHtOdW1iZXJ9IC0gVGhlIHBvc2l0
aW9uIGF0IHdoaWNoIHRvIHN0YXJ0IHJlbW92aW5nIGl0ZW1zLlxuKiBgbGVuZ3RoYCB7TnVtYmVy
fSAtIFRoZSBudW1iZXIgb2YgaXRlbXMgdG8gcmVtb3ZlIGZyb20gdGhlIHJvdXRlLlxuXG5SZW1v
dmUgYSBzZWdtZW50IGZyb20gdGhlIGN1cnJlbnQgcm91dGUuXG5cbiMjIyBzZXRSb3V0ZShpbmRl
eCwgdmFsdWUpXG5cbiogYGluZGV4YCB7TnVtYmVyfSAtIFRoZSBoYXNoIHZhbHVlIGlzIGRpdmlk
ZWQgYnkgZm9yd2FyZCBzbGFzaGVzLCBlYWNoIHNlY3Rpb25cbiAgdGhlbiBoYXMgYW4gaW5kZXgu
XG4qIGB2YWx1ZWAge1N0cmluZ30gLSBUaGUgbmV3IHZhbHVlIHRvIGFzc2lnbiB0aGUgdGhlIHBv
c2l0aW9uIGluZGljYXRlZCBieSB0aGVcbiAgZmlyc3QgcGFyYW1ldGVyLlxuXG5TZXQgYSBzZWdt
ZW50IG9mIHRoZSBjdXJyZW50IHJvdXRlLlxuXG4jIEZyZXF1ZW50bHkgQXNrZWQgUXVlc3Rpb25z
XG5cbiMjIFdoYXQgQWJvdXQgU0VPP1xuXG5JcyB1c2luZyBhIENsaWVudC1zaWRlIHJvdXRlciBh
IHByb2JsZW0gZm9yIFNFTz8gWWVzLiBJZiBhZHZlcnRpc2luZyBpcyBhXG5yZXF1aXJlbWVudCwg
eW91IGFyZSBwcm9iYWJseSBidWlsZGluZyBhIFwiV2ViIFBhZ2VcIiBhbmQgbm90IGEgXCJXZWJc
bkFwcGxpY2F0aW9uXCIuIERpcmVjdG9yIG9uIHRoZSBjbGllbnQgaXMgbWVhbnQgZm9yIHNjcmlw
dC1oZWF2eSBXZWJcbkFwcGxpY2F0aW9ucy5cblxuIyMjIyMgTElDRU5TRTogTUlUXG4jIyMjIyBB
dXRob3I6IFtDaGFybGllIFJvYmJpbnNdKGh0dHBzOi8vZ2l0aHViLmNvbS9pbmRleHplcm8pXG4j
IyMjIyBDb250cmlidXRvcnM6IFtQYW9sbyBGcmFnb21lbmldKGh0dHBzOi8vZ2l0aHViLmNvbS9o
aWoxbngpXG5cblswXTogaHR0cDovL2dpdGh1Yi5jb20vZmxhdGlyb24vZGlyZWN0b3JcblsxXTog
aHR0cHM6Ly9naXRodWIuY29tL2ZsYXRpcm9uL2RpcmVjdG9yL2Jsb2IvbWFzdGVyL2J1aWxkL2Rp
cmVjdG9yLm1pbi5qc1xuWzJdOiBodHRwOi8vZ2l0aHViLmNvbS9mbGF0aXJvbi9mbGF0aXJvblxu
WzNdOiBodHRwOi8vZ2l0aHViLmNvbS9mbGF0aXJvbi91bmlvblxuIiwKKyAgInJlYWRtZUZpbGVu
YW1lIjogIlJFQURNRS5tZCIsCisgICJyZXBvc2l0b3J5IjogeworICAgICJ0eXBlIjogImdpdCIs
CisgICAgInVybCI6ICJnaXQrc3NoOi8vZ2l0QGdpdGh1Yi5jb20vZmxhdGlyb24vZGlyZWN0b3Iu
Z2l0IgorICB9LAorICAic2NyaXB0cyI6IHsKKyAgICAidGVzdCI6ICJ2b3dzIHRlc3Qvc2VydmVy
LyovKi10ZXN0LmpzIC0tc3BlYyIKKyAgfSwKKyAgInZlcnNpb24iOiAiMS4yLjgiCit9CmRpZmYg
LS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvZGlyZWN0b3IvdGVzdC9icm93
c2VyL2JhY2tlbmQvYmFja2VuZC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9k
aXJlY3Rvci90ZXN0L2Jyb3dzZXIvYmFja2VuZC9iYWNrZW5kLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY3YzY4
MGU0NjRkMGM5ZTFiNGZmNjc0YzM1NjIzM2QzZTU2MTU1YTgKLS0tIC9kZXYvbnVsbAorKysgYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvZGlyZWN0b3IvdGVzdC9icm93c2VyL2JhY2tl
bmQvYmFja2VuZC5qcwpAQCAtMCwwICsxLDc5IEBACit2YXIgaHR0cCAgICAgPSByZXF1aXJlKCdo
dHRwJyksCisgIGZzICAgICAgID0gcmVxdWlyZSgnZnMnKSwKKyAgcGF0aCAgICAgPSByZXF1aXJl
KCdwYXRoJyksCisgIGRpcmVjdG9yID0gcmVxdWlyZSgnLi4vLi4vLi4vbGliL2RpcmVjdG9yJyks
CisgIGluZGV4OworCitmcy5yZWFkRmlsZShwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nLCAnaHRt
bDUtcm91dGVzLWhhcm5lc3MuaHRtbCcpLCBmdW5jdGlvbiAoZXJyLCBkYXRhKSB7CisgIGlmIChl
cnIpIHsKKyAgICB0aHJvdyBlcnI7CisgIH0KKworICBpbmRleCA9IGRhdGE7Cit9KTsKKwordmFy
IENPTlRFTlRfVFlQRVMgPSB7CisgICcuanMnICA6ICd0ZXh0L2phdmFzY3JpcHQnLAorICAnLmNz
cycgOiAndGV4dC9jc3MnCit9OworCit2YXIgZGlybmFtZSA9IHBhdGguZGlybmFtZShtb2R1bGUu
dXJpKTsKKworLy8gRHVtbXkgZmlsZSBzZXJ2ZXIKK2Z1bmN0aW9uIGZpbGVTZXJ2ZXIoZm9sZGVy
LCBmaWxlKSB7CisgIHZhciByb290ID0gcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJy4uJyk7CisK
KyAgaWYgKGZvbGRlciA9PT0gJ2J1aWxkJyB8fCBmb2xkZXIgPT09ICdub2RlX21vZHVsZXMnKSB7
CisgICAgcm9vdCA9IHBhdGgucmVzb2x2ZShyb290LCAnLi4nLCAnLi4nKTsKKyAgfQorCisgIGlm
IChmaWxlID09PSB1bmRlZmluZWQpIHsKKyAgICBmaWxlID0gZm9sZGVyOworICAgIGZvbGRlciA9
ICcuJzsKKyAgfQorCisgIHZhciBmaWxlcGF0aCA9IHBhdGgucmVzb2x2ZShyb290LCBmb2xkZXIs
IGZpbGUpOworCisgIHZhciByZXMgPSB0aGlzLnJlczsKKworICAoZnMuZXhpc3RzIHx8IHBhdGgu
ZXhpc3RzKShmaWxlcGF0aCwgZnVuY3Rpb24gKGV4aXN0cykgeworICAgIGlmIChleGlzdHMpIHsK
KyAgICAgIGZzLnJlYWRGaWxlKGZpbGVwYXRoLCBmdW5jdGlvbiAoZXJyLCBkYXRhKSB7CisgICAg
ICAgIGlmIChlcnIpIHsKKyAgICAgICAgICByZXMud3JpdGVIZWFkKDQwNCk7CisgICAgICAgICAg
cmVzLmVuZCgpOworICAgICAgICB9CisKKyAgICAgICAgcmVzLndyaXRlSGVhZCgyMDAsIHsnQ29u
dGVudC1UeXBlJzogQ09OVEVOVF9UWVBFU1twYXRoLmV4dG5hbWUoZmlsZXBhdGgpXX0pOworICAg
ICAgICByZXMuZW5kKGRhdGEpOworICAgICAgfSk7CisgICAgfSBlbHNlIHsKKyAgICAgIHJlcy53
cml0ZUhlYWQoNDA0KTsKKyAgICAgIHJlcy5lbmQoKTsKKyAgICB9CisgIH0pOworfQorCit2YXIg
cm91dGVyID0gbmV3IGRpcmVjdG9yLmh0dHAuUm91dGVyKHsKKyAgJy9maWxlcyc6IHsKKyAgICAn
Lzpmb2xkZXInOiB7CisgICAgICAnLyguKyknOiB7CisgICAgICAgIGdldDogZmlsZVNlcnZlcgor
ICAgICAgfSwKKworICAgICAgZ2V0OiBmaWxlU2VydmVyCisgICAgfQorICB9Cit9KTsKKwordmFy
IHNlcnZlciA9IGh0dHAuY3JlYXRlU2VydmVyKGZ1bmN0aW9uIChyZXEsIHJlcykgeworICByb3V0
ZXIuZGlzcGF0Y2gocmVxLCByZXMsIGZ1bmN0aW9uIChlcnIpIHsKKyAgICBpZiAoZXJyICYmIHJl
cS51cmwgIT09ICcvZmF2aWNvbi5pY28nKSB7CisgICAgICAvLyBCeSBkZWZhdWx0IGp1c3QgcmVw
bHkgd2l0aCB0aGUgaW5kZXggcGFnZQorICAgICAgdGhpcy5yZXMud3JpdGVIZWFkKDIwMCwgeydD
b250ZW50LVR5cGUnOiAndGV4dC9odG1sJ30pOworICAgICAgdGhpcy5yZXMuZW5kKGluZGV4KTsK
KyAgICB9CisgIH0pOworfSk7CisKK3NlcnZlci5saXN0ZW4oODA4MCk7CmRpZmYgLS1naXQgYS9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvZGlyZWN0b3IvdGVzdC9icm93c2VyL2Jyb3dz
ZXJpZnktaGFybmVzcy5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2RpcmVj
dG9yL3Rlc3QvYnJvd3Nlci9icm93c2VyaWZ5LWhhcm5lc3MuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZWNm
MDYzOWI4ZDQzZjAxMzcyYTVlYmYxOGExOTc3Mjg5MGVmMGViCi0tLSAvZGV2L251bGwKKysrIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL3Rlc3QvYnJvd3Nlci9icm93
c2VyaWZ5LWhhcm5lc3MuaHRtbApAQCAtMCwwICsxLDI0IEBACis8IURPQ1RZUEUgSFRNTD4KKzxo
dG1sPgorPGhlYWQ+CisgICAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPgorICAgIDx0aXRsZT5EaXJl
Y3RvciBCcm93c2VyaWZ5IFRlc3RzPC90aXRsZT4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uLy4uL25vZGVfbW9kdWxlcy9xdW5pdGpzL3F1bml0L3F1bml0LmNzcyI+Cis8L2hl
YWQ+Cis8Ym9keT4KKyAgICA8cD5UbyBydW4gdGhlc2UgdGVzdHMgZmlyc3QgZ2VuZXJhdGUgYSBC
cm93c2VyaWZ5IGJ1bmRsZSBmb3IgZGlyZWN0b3IgYnkgcnVubmluZyB0aGUgY29tbWFuZCA8a2Jk
PmJyb3dzZXJpZnkgLXIgLi4vZGlyZWN0b3IgLW8gdGVzdC9icm93c2VyL2Jyb3dzZXJpZmllZC1i
dW5kbGUuanM8L2tiZD4gaW4gdGhlIHJlcG8ncyByb290IGRpcmVjdG9yeS48L3A+CisKKyAgICA8
ZGl2IGlkPSJxdW5pdCI+CisgICAgPGRpdiBpZD0icXVuaXQtZml4dHVyZSI+PC9kaXY+CisKKyAg
ICA8c2NyaXB0IHNyYz0iYnJvd3NlcmlmaWVkLWJ1bmRsZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNj
cmlwdD4KKyAgICAgICAgdmFyIEhUTUw1VEVTVCA9IGZhbHNlOworICAgICAgICB2YXIgUm91dGVy
QWxpYXMgPSByZXF1aXJlKCcvJykuUm91dGVyOworICAgIDwvc2NyaXB0PgorCisgICAgPHNjcmlw
dCBzcmM9Ii4uLy4uL25vZGVfbW9kdWxlcy9xdW5pdGpzL3F1bml0L3F1bml0LmpzIj48L3Njcmlw
dD4KKyAgICA8c2NyaXB0IHNyYz0iaGVscGVycy9hcGkuanMiPjwvc2NyaXB0PgorICAgIDxzY3Jp
cHQgc3JjPSJyb3V0ZXMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvZGlyZWN0b3IvdGVzdC9icm93
c2VyL2hlbHBlcnMvYXBpLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2RpcmVj
dG9yL3Rlc3QvYnJvd3Nlci9oZWxwZXJzL2FwaS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNzg0NzAwYWEwZjE3
ZTk4Y2M1MDU0MTdkOTE3ZTY4NWQzZGY3NTdiCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL3Rlc3QvYnJvd3Nlci9oZWxwZXJzL2FwaS5q
cwpAQCAtMCwwICsxLDc3IEBACittb2R1bGUoIkRpcmVjdG9yLmpzIiwgeworICBzZXR1cDogZnVu
Y3Rpb24oKSB7CisgICAgd2luZG93LmxvY2F0aW9uLmhhc2ggPSAiIjsKKyAgICBzaGFyZWQgPSB7
fTsKKyAgICAvLyBJbml0IG5lZWRlZCBrZXlzIGVhcmxpZXIgYmVjYXVzZSBvZiBpbiBIVE1MNSBt
b2RlIHRoZSByb3V0ZSBoYW5kbGVyCisgICAgLy8gaXMgZXhlY3V0ZWQgdXBvbiBSb3V0ZXIuaW5p
dCgpIGFuZCBkdWUgdG8gdGhhdCBzZXR0aW5nIHNoYXJlZC5maXJlZAorICAgIC8vIGluIHRoZSBw
YXJhbSB0ZXN0IG9mIGNyZWF0ZVRlc3QgaXMgdG9vIGxhdGUKKyAgICBpZiAoSFRNTDVURVNUKSB7
CisgICAgICBzaGFyZWQuZmlyZWQgICAgICAgPSBbXTsKKyAgICAgIHNoYXJlZC5maXJlZF9jb3Vu
dCA9IDA7CisgICAgfQorICB9LAorICB0ZWFyZG93bjogZnVuY3Rpb24oKSB7CisgICAgd2luZG93
LmxvY2F0aW9uLmhhc2ggPSAiIjsKKyAgICBzaGFyZWQgPSB7fTsKKyAgfQorfSk7CisKK3ZhciBz
aGFyZWQ7CisKK2Z1bmN0aW9uIGNyZWF0ZVRlc3QobmFtZSwgY29uZmlnLCB1c2UsIHRlc3QsIGlu
aXRpYWxSb3V0ZSkgeworICAvLyBXZSByZW5hbWUgdG8gYFJvdXRlckFsaWFzYCBmb3IgdGhlIGJy
b3dzZXJpZnkgdGVzdHMsIHNpbmNlIHdlIHdhbnQgdG8gYmUKKyAgLy8gc3VyZSB0aGF0IG5vIGNv
ZGUgaXMgZGVwZW5kaW5nIG9uIGB3aW5kb3cuUm91dGVyYCBiZWluZyBhdmFpbGFibGUuCisgIHZh
ciBSb3V0ZXIgPSB3aW5kb3cuUm91dGVyIHx8IHdpbmRvdy5Sb3V0ZXJBbGlhczsKKworICBpZiAo
dHlwZW9mIHVzZSA9PT0gJ2Z1bmN0aW9uJykgeworICAgIHRlc3QgPSB1c2U7CisgICAgdXNlID0g
dW5kZWZpbmVkOworICB9CisKKyAgaWYgKEhUTUw1VEVTVCkgeworICAgIGlmICh1c2UgPT09IHVu
ZGVmaW5lZCkgeworICAgICAgdXNlID0ge307CisgICAgfQorCisgICAgaWYgKHVzZS5ydW5faGFu
ZGxlcl9pbl9pbml0ID09PSB1bmRlZmluZWQpIHsKKyAgICAgIHVzZS5ydW5faGFuZGxlcl9pbl9p
bml0ID0gZmFsc2U7CisgICAgfQorICAgIHVzZS5odG1sNWhpc3RvcnkgICAgICAgID0gdHJ1ZTsK
KyAgfQorCisgIC8vIEJlY2F1c2Ugb2YgdGhlIHVzZSBvZiBzZXRUaW1lb3V0IHdoZW4gZGVmaW5p
bmcgb25wb3BzdGF0ZQorICB2YXIgaW5uZXJUaW1lb3V0ID0gSFRNTDVURVNUID09PSB0cnVlID8g
NTAwIDogMDsKKworICBhc3luY1Rlc3QobmFtZSwgZnVuY3Rpb24oKSB7CisgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsKKyAgICAgIHZhciByb3V0ZXIgPSBuZXcgUm91dGVyKGNvbmZpZyksCisg
ICAgICAgICAgY29udGV4dDsKKworICAgICAgaWYgKHVzZSAhPT0gdW5kZWZpbmVkKSB7CisgICAg
ICAgIHJvdXRlci5jb25maWd1cmUodXNlKTsKKyAgICAgIH0KKworICAgICAgcm91dGVyLmluaXQo
aW5pdGlhbFJvdXRlKTsKKworICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAg
dGVzdC5jYWxsKGNvbnRleHQgPSB7CisgICAgICAgICAgcm91dGVyOiByb3V0ZXIsCisgICAgICAg
ICAgbmF2aWdhdGU6IGZ1bmN0aW9uKHVybCwgY2FsbGJhY2spIHsKKyAgICAgICAgICAgIGlmIChI
VE1MNVRFU1QpIHsKKyAgICAgICAgICAgICAgcm91dGVyLnNldFJvdXRlKHVybCk7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaGFzaCA9IHVybDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICAgIGNhbGxiYWNrLmNhbGwoY29udGV4dCk7CisgICAgICAgICAgICB9LCAxNCk7Cisg
ICAgICAgICAgfSwKKyAgICAgICAgICBmaW5pc2g6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
cm91dGVyLmRlc3Ryb3koKTsKKyAgICAgICAgICAgIHN0YXJ0KCk7CisgICAgICAgICAgfQorICAg
ICAgICB9KQorICAgICAgfSwgaW5uZXJUaW1lb3V0KTsKKyAgICB9LCAxNCk7CisgIH0pOworfTsK
ZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9kaXJlY3Rvci90ZXN0
L2Jyb3dzZXIvaHRtbDUtcm91dGVzLWhhcm5lc3MuaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25v
ZGVfbW9kdWxlcy9kaXJlY3Rvci90ZXN0L2Jyb3dzZXIvaHRtbDUtcm91dGVzLWhhcm5lc3MuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5lYWY4ZmZjMjRiOTMzODRmMzU1MzQxZWNkMmM4Yzg1ZDIzMjgyNTFjCi0t
LSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2RpcmVjdG9y
L3Rlc3QvYnJvd3Nlci9odG1sNS1yb3V0ZXMtaGFybmVzcy5odG1sCkBAIC0wLDAgKzEsMjMgQEAK
KzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJVVEYt
OCI+CisgICAgPHRpdGxlPkRpcmVjdG9yIEhUTUw1IFRlc3RzPC90aXRsZT4KKyAgICA8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii9maWxlcy9ub2RlX21vZHVsZXMvcXVuaXRqcy9xdW5pdC9x
dW5pdC5jc3MiPgorPC9oZWFkPgorPGJvZHk+CisgICAgPHA+Tm90ZTogaW4gb3JkZXIgdG8gZXhl
Y3V0ZSBIVE1MNSBtb2RlIHRlc3QgdGhpcyBmaWxlIG5lZWRzIHRvIGJlIHNlcnZlZCB3aXRoIHBy
b3ZpZGVkIG5vZGVqcyBiYWNrZW5kLiBTdGFydCB0aGUgc2VydmVyIGZyb20gPGtiZD5kaXJlY3Rv
ci90ZXN0L2Jyb3dzZXIvYmFja2VuZDwva2JkPiBhbmQgZ28gdG8gPGtiZD5odHRwOi8vbG9jYWxo
b3N0OjgwODAvPC9rYmQ+IHRvIGxhdW5jaCB0aGUgdGVzdHMuPC9wPgorCisgICAgPGRpdiBpZD0i
cXVuaXQiPjwvZGl2PgorICAgIDxkaXYgaWQ9InF1bml0LWZpeHR1cmUiPjwvZGl2PgorCisgICAg
PHNjcmlwdD4KKyAgICAgICAgdmFyIEhUTUw1VEVTVCA9IHRydWU7CisgICAgPC9zY3JpcHQ+CisK
KyAgICA8c2NyaXB0IHNyYz0iL2ZpbGVzL25vZGVfbW9kdWxlcy9xdW5pdGpzL3F1bml0L3F1bml0
LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iL2ZpbGVzL2J1aWxkL2RpcmVjdG9yLmpz
Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iL2ZpbGVzL2hlbHBlcnMvYXBpLmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iL2ZpbGVzL2h0bWw1LXJvdXRlcy10ZXN0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25v
ZGVfbW9kdWxlcy9kaXJlY3Rvci90ZXN0L2Jyb3dzZXIvaHRtbDUtcm91dGVzLXRlc3QuanMgYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvZGlyZWN0b3IvdGVzdC9icm93c2VyL2h0bWw1
LXJvdXRlcy10ZXN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYyOGQzYzk3MDBiMmQ5Y2IxNjlmOTY0NjQ3MzRk
YTEzZWQ4NDA5YWMKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21v
ZHVsZXMvZGlyZWN0b3IvdGVzdC9icm93c2VyL2h0bWw1LXJvdXRlcy10ZXN0LmpzCkBAIC0wLDAg
KzEsNjYwIEBACit2YXIgYnJvd3Nlcl9oaXN0b3J5X3N1cHBvcnQgPSAod2luZG93Lmhpc3Rvcnkg
IT0gbnVsbCA/IHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZSA6IG51bGwpICE9IG51bGw7CisKK2Ny
ZWF0ZVRlc3QoJ05lc3RlZCByb3V0ZSB3aXRoIHRoZSBtYW55IGNoaWxkcmVuIGFzIGEgdG9rZW5z
LCBjYWxsYmFja3Mgc2hvdWxkIHlpZWxkIGhpc3RvcmljIHBhcmFtcycsIHsKKyAgJy9hJzogewor
ICAgICcvOmlkJzogeworICAgICAgJy86aWQnOiBmdW5jdGlvbihhLCBiKSB7CisgICAgICAgIGlm
ICghYnJvd3Nlcl9oaXN0b3J5X3N1cHBvcnQpIHsKKyAgICAgICAgICBzaGFyZWQuZmlyZWQucHVz
aChsb2NhdGlvbi5oYXNoLnJlcGxhY2UoL14jLywgJycpLCBhLCBiKTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICBzaGFyZWQuZmlyZWQucHVzaChsb2NhdGlvbi5wYXRobmFtZSwgYSwgYik7
CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgIH0KK30sIGZ1bmN0aW9uKCkgeworICB0aGlz
Lm5hdmlnYXRlKCcvYS9iL2MnLCBmdW5jdGlvbigpIHsKKyAgICBkZWVwRXF1YWwoc2hhcmVkLmZp
cmVkLCBbJy9hL2IvYycsICdiJywgJ2MnXSk7CisgICAgdGhpcy5maW5pc2goKTsKKyAgfSk7Cit9
KTsKKworY3JlYXRlVGVzdCgnTmVzdGVkIHJvdXRlIHdpdGggdGhlIGZpcnN0IGNoaWxkIGFzIGEg
dG9rZW4sIGNhbGxiYWNrIHNob3VsZCB5aWVsZCBhIHBhcmFtJywgeworICAnL2Zvbyc6IHsKKyAg
ICAnLzppZCc6IHsKKyAgICAgIG9uOiBmdW5jdGlvbihpZCkgeworICAgICAgICBpZiAoIWJyb3dz
ZXJfaGlzdG9yeV9zdXBwb3J0KSB7CisgICAgICAgICAgc2hhcmVkLmZpcmVkLnB1c2gobG9jYXRp
b24uaGFzaC5yZXBsYWNlKC9eIy8sICcnKSwgaWQpOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgIHNoYXJlZC5maXJlZC5wdXNoKGxvY2F0aW9uLnBhdGhuYW1lLCBpZCk7CisgICAgICAgIH0K
KyAgICAgIH0KKyAgICB9CisgIH0KK30sIGZ1bmN0aW9uKCkgeworICB0aGlzLm5hdmlnYXRlKCcv
Zm9vL2EnLCBmdW5jdGlvbigpIHsKKyAgICB0aGlzLm5hdmlnYXRlKCcvZm9vL2IvYycsIGZ1bmN0
aW9uKCkgeworICAgICAgZGVlcEVxdWFsKHNoYXJlZC5maXJlZCwgWycvZm9vL2EnLCAnYSddKTsK
KyAgICAgIHRoaXMuZmluaXNoKCk7CisgICAgfSk7CisgIH0pOworfSk7CisKK2NyZWF0ZVRlc3Qo
J05lc3RlZCByb3V0ZSB3aXRoIHRoZSBmaXJzdCBjaGlsZCBhcyBhIHJlZ2V4cCwgY2FsbGJhY2sg
c2hvdWxkIHlpZWxkIGEgcGFyYW0nLCB7CisgICcvZm9vJzogeworICAgICcvKFxcdyspJzogewor
ICAgICAgb246IGZ1bmN0aW9uKHZhbHVlKSB7CisgICAgICAgIGlmICghYnJvd3Nlcl9oaXN0b3J5
X3N1cHBvcnQpIHsKKyAgICAgICAgICBzaGFyZWQuZmlyZWQucHVzaChsb2NhdGlvbi5oYXNoLnJl
cGxhY2UoL14jLywgJycpLCB2YWx1ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgc2hh
cmVkLmZpcmVkLnB1c2gobG9jYXRpb24ucGF0aG5hbWUsIHZhbHVlKTsKKyAgICAgICAgfQorICAg
ICAgfQorICAgIH0KKyAgfQorfSwgZnVuY3Rpb24oKSB7CisgIHRoaXMubmF2aWdhdGUoJy9mb28v
YScsIGZ1bmN0aW9uKCkgeworICAgIHRoaXMubmF2aWdhdGUoJy9mb28vYi9jJywgZnVuY3Rpb24o
KSB7CisgICAgICBkZWVwRXF1YWwoc2hhcmVkLmZpcmVkLCBbJy9mb28vYScsICdhJ10pOworICAg
ICAgdGhpcy5maW5pc2goKTsKKyAgICB9KTsKKyAgfSk7Cit9KTsKKworY3JlYXRlVGVzdCgnTmVz
dGVkIHJvdXRlIHdpdGggdGhlIHNldmVyYWwgcmVndWxhciBleHByZXNzaW9ucywgY2FsbGJhY2sg
c2hvdWxkIHlpZWxkIGEgcGFyYW0nLCB7CisgICcvYSc6IHsKKyAgICAnLyhcXHcrKSc6IHsKKyAg
ICAgICcvKFxcdyspJzogZnVuY3Rpb24oYSwgYikgeworICAgICAgICBzaGFyZWQuZmlyZWQucHVz
aChhLCBiKTsKKyAgICAgIH0KKyAgICB9CisgIH0KK30sIGZ1bmN0aW9uKCkgeworICB0aGlzLm5h
dmlnYXRlKCcvYS9iL2MnLCBmdW5jdGlvbigpIHsKKyAgICBkZWVwRXF1YWwoc2hhcmVkLmZpcmVk
LCBbJ2InLCAnYyddKTsKKyAgICB0aGlzLmZpbmlzaCgpOworICB9KTsKK30pOworCitjcmVhdGVU
ZXN0KCdTaW5nbGUgbmVzdGVkIHJvdXRlIHdpdGggb24gbWVtYmVyIGNvbnRhaW5pbmcgZnVuY3Rp
b24gdmFsdWUnLCB7CisgICcvYSc6IHsKKyAgICAnL2InOiB7CisgICAgICBvbjogZnVuY3Rpb24o
KSB7CisgICAgICAgIGlmICghYnJvd3Nlcl9oaXN0b3J5X3N1cHBvcnQpIHsKKyAgICAgICAgICBz
aGFyZWQuZmlyZWQucHVzaChsb2NhdGlvbi5oYXNoLnJlcGxhY2UoL14jLywgJycpKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICBzaGFyZWQuZmlyZWQucHVzaChsb2NhdGlvbi5wYXRobmFt
ZSk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgIH0KK30sIGZ1bmN0aW9uKCkgeworICB0
aGlzLm5hdmlnYXRlKCcvYS9iJywgZnVuY3Rpb24oKSB7CisgICAgICBkZWVwRXF1YWwoc2hhcmVk
LmZpcmVkLCBbJy9hL2InXSk7CisgICAgICB0aGlzLmZpbmlzaCgpOworICB9KTsKK30pOworCitj
cmVhdGVUZXN0KCdTaW5nbGUgbm9uLW5lc3RlZCByb3V0ZSB3aXRoIG9uIG1lbWJlciBjb250YWlu
aW5nIGZ1bmN0aW9uIHZhbHVlJywgeworICAnL2EvYic6IHsKKyAgICBvbjogZnVuY3Rpb24oKSB7
CisgICAgICBpZiAoIWJyb3dzZXJfaGlzdG9yeV9zdXBwb3J0KSB7CisgICAgICAgIHNoYXJlZC5m
aXJlZC5wdXNoKGxvY2F0aW9uLmhhc2gucmVwbGFjZSgvXiMvLCAnJykpOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgc2hhcmVkLmZpcmVkLnB1c2gobG9jYXRpb24ucGF0aG5hbWUpOworICAgICAg
fQorICAgIH0KKyAgfQorfSwgZnVuY3Rpb24oKSB7CisgIHRoaXMubmF2aWdhdGUoJy9hL2InLCBm
dW5jdGlvbigpIHsKKyAgICBkZWVwRXF1YWwoc2hhcmVkLmZpcmVkLCBbJy9hL2InXSk7CisgICAg
dGhpcy5maW5pc2goKTsKKyAgfSk7Cit9KTsKKworY3JlYXRlVGVzdCgnU2luZ2xlIG5lc3RlZCBy
b3V0ZSB3aXRoIG9uIG1lbWJlciBjb250YWluaW5nIGFycmF5IG9mIGZ1bmN0aW9uIHZhbHVlcycs
IHsKKyAgJy9hJzogeworICAgICcvYic6IHsKKyAgICAgIG9uOiBbZnVuY3Rpb24oKSB7CisgICAg
ICAgIGlmICghYnJvd3Nlcl9oaXN0b3J5X3N1cHBvcnQpIHsKKyAgICAgICAgICBzaGFyZWQuZmly
ZWQucHVzaChsb2NhdGlvbi5oYXNoLnJlcGxhY2UoL14jLywgJycpKTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICBzaGFyZWQuZmlyZWQucHVzaChsb2NhdGlvbi5wYXRobmFtZSk7CisgICAg
ICAgIH0KKyAgICAgIH0sCisgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgIGlmICghYnJv
d3Nlcl9oaXN0b3J5X3N1cHBvcnQpIHsKKyAgICAgICAgICAgIHNoYXJlZC5maXJlZC5wdXNoKGxv
Y2F0aW9uLmhhc2gucmVwbGFjZSgvXiMvLCAnJykpOworICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBzaGFyZWQuZmlyZWQucHVzaChsb2NhdGlvbi5wYXRobmFtZSk7CisgICAgICAgICAg
fQorICAgICAgfV0KKyAgICB9CisgIH0KK30sIGZ1bmN0aW9uKCkgeworICB0aGlzLm5hdmlnYXRl
KCcvYS9iJywgZnVuY3Rpb24oKSB7CisgICAgICBkZWVwRXF1YWwoc2hhcmVkLmZpcmVkLCBbJy9h
L2InLCAnL2EvYiddKTsKKyAgICAgIHRoaXMuZmluaXNoKCk7CisgIH0pOworfSk7CisKK2NyZWF0
ZVRlc3QoJ21ldGhvZCBzaG91bGQgb25seSBmaXJlIG9uY2Ugb24gdGhlIHJvdXRlLicsIHsKKyAg
Jy9hJzogeworICAgICcvYic6IHsKKyAgICAgIG9uY2U6IGZ1bmN0aW9uKCkgeworICAgICAgICBz
aGFyZWQuZmlyZWRfY291bnQrKzsKKyAgICAgIH0KKyAgICB9CisgIH0KK30sIGZ1bmN0aW9uKCkg
eworICB0aGlzLm5hdmlnYXRlKCcvYS9iJywgZnVuY3Rpb24oKSB7CisgICAgdGhpcy5uYXZpZ2F0
ZSgnL2EvYicsIGZ1bmN0aW9uKCkgeworICAgICAgdGhpcy5uYXZpZ2F0ZSgnL2EvYicsIGZ1bmN0
aW9uKCkgeworICAgICAgICBkZWVwRXF1YWwoc2hhcmVkLmZpcmVkX2NvdW50LCAxKTsKKyAgICAg
ICAgdGhpcy5maW5pc2goKTsKKyAgICAgIH0pOworICAgIH0pOworICB9KTsKK30pOworCitjcmVh
dGVUZXN0KCdtZXRob2Qgc2hvdWxkIG9ubHkgZmlyZSBvbmNlIG9uIHRoZSByb3V0ZSwgbXVsdGlw
bGUgbmVzdGluZy4nLCB7CisgICcvYSc6IHsKKyAgICBvbjogZnVuY3Rpb24oKSB7IHNoYXJlZC5m
aXJlZF9jb3VudCsrOyB9LAorICAgIG9uY2U6IGZ1bmN0aW9uKCkgeyBzaGFyZWQuZmlyZWRfY291
bnQrKzsgfQorICB9LAorICAnL2InOiB7CisgICAgb246IGZ1bmN0aW9uKCkgeyBzaGFyZWQuZmly
ZWRfY291bnQrKzsgfSwKKyAgICBvbmNlOiBmdW5jdGlvbigpIHsgc2hhcmVkLmZpcmVkX2NvdW50
Kys7IH0KKyAgfQorfSwgZnVuY3Rpb24oKSB7CisgIHRoaXMubmF2aWdhdGUoJy9hJywgZnVuY3Rp
b24oKSB7CisgICAgdGhpcy5uYXZpZ2F0ZSgnL2InLCBmdW5jdGlvbigpIHsKKyAgICAgIHRoaXMu
bmF2aWdhdGUoJy9hJywgZnVuY3Rpb24oKSB7CisgICAgICAgIHRoaXMubmF2aWdhdGUoJy9iJywg
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgZGVlcEVxdWFsKHNoYXJlZC5maXJlZF9jb3VudCwgNik7
CisgICAgICAgICAgdGhpcy5maW5pc2goKTsKKyAgICAgICAgfSk7CisgICAgICB9KTsKKyAgICB9
KTsKKyAgfSk7Cit9KTsKKworY3JlYXRlVGVzdCgnb3ZlcmxhcHBpbmcgcm91dGVzIHdpdGggdG9r
ZW5zLicsIHsKKyAgJy9hLzpiL2MnIDogZnVuY3Rpb24oKSB7CisgICAgaWYgKCFicm93c2VyX2hp
c3Rvcnlfc3VwcG9ydCkgeworICAgICAgc2hhcmVkLmZpcmVkLnB1c2gobG9jYXRpb24uaGFzaC5y
ZXBsYWNlKC9eIy8sICcnKSk7CisgICAgfSBlbHNlIHsKKyAgICAgIHNoYXJlZC5maXJlZC5wdXNo
KGxvY2F0aW9uLnBhdGhuYW1lKTsKKyAgICB9CisgIH0sCisgICcvYS86Yi9jLzpkJyA6IGZ1bmN0
aW9uKCkgeworICAgIGlmICghYnJvd3Nlcl9oaXN0b3J5X3N1cHBvcnQpIHsKKyAgICAgIHNoYXJl
ZC5maXJlZC5wdXNoKGxvY2F0aW9uLmhhc2gucmVwbGFjZSgvXiMvLCAnJykpOworICAgIH0gZWxz
ZSB7CisgICAgICBzaGFyZWQuZmlyZWQucHVzaChsb2NhdGlvbi5wYXRobmFtZSk7CisgICAgfQor
ICB9Cit9LCBmdW5jdGlvbigpIHsKKyAgdGhpcy5uYXZpZ2F0ZSgnL2EvYi9jJywgZnVuY3Rpb24o
KSB7CisKKyAgICB0aGlzLm5hdmlnYXRlKCcvYS9iL2MvZCcsIGZ1bmN0aW9uKCkgeworICAgICAg
ZGVlcEVxdWFsKHNoYXJlZC5maXJlZCwgWycvYS9iL2MnLCAnL2EvYi9jL2QnXSk7CisgICAgICB0
aGlzLmZpbmlzaCgpOworICAgIH0pOworICB9KTsKK30pOworCisvLyAvLyAvLworLy8gLy8gLy8g
UmVjdXJzaW9uIGZlYXR1cmVzCisvLyAvLyAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2NyZWF0ZVRlc3QoJ05lc3RlZCByb3V0
ZXMgd2l0aCBubyByZWN1cnNpb24nLCB7CisgICcvYSc6IHsKKyAgICAnL2InOiB7CisgICAgICAn
L2MnOiB7CisgICAgICAgIG9uOiBmdW5jdGlvbiBjKCkgeworICAgICAgICAgIHNoYXJlZC5maXJl
ZC5wdXNoKCdjJyk7CisgICAgICAgIH0KKyAgICAgIH0sCisgICAgICBvbjogZnVuY3Rpb24gYigp
IHsKKyAgICAgICAgc2hhcmVkLmZpcmVkLnB1c2goJ2InKTsKKyAgICAgIH0KKyAgICB9LAorICAg
IG9uOiBmdW5jdGlvbiBhKCkgeworICAgICAgc2hhcmVkLmZpcmVkLnB1c2goJ2EnKTsKKyAgICB9
CisgIH0KK30sIGZ1bmN0aW9uKCkgeworICB0aGlzLm5hdmlnYXRlKCcvYS9iL2MnLCBmdW5jdGlv
bigpIHsKKyAgICBkZWVwRXF1YWwoc2hhcmVkLmZpcmVkLCBbJ2MnXSk7CisgICAgdGhpcy5maW5p
c2goKTsKKyAgfSk7Cit9KTsKKworY3JlYXRlVGVzdCgnTmVzdGVkIHJvdXRlcyB3aXRoIGJhY2t3
YXJkIHJlY3Vyc2lvbicsIHsKKyAgJy9hJzogeworICAgICcvYic6IHsKKyAgICAgICcvYyc6IHsK
KyAgICAgICAgb246IGZ1bmN0aW9uIGMoKSB7CisgICAgICAgICAgc2hhcmVkLmZpcmVkLnB1c2go
J2MnKTsKKyAgICAgICAgfQorICAgICAgfSwKKyAgICAgIG9uOiBmdW5jdGlvbiBiKCkgeworICAg
ICAgICBzaGFyZWQuZmlyZWQucHVzaCgnYicpOworICAgICAgfQorICAgIH0sCisgICAgb246IGZ1
bmN0aW9uIGEoKSB7CisgICAgICBzaGFyZWQuZmlyZWQucHVzaCgnYScpOworICAgIH0KKyAgfQor
fSwgeworICByZWN1cnNlOiAnYmFja3dhcmQnCit9LCBmdW5jdGlvbigpIHsKKyAgdGhpcy5uYXZp
Z2F0ZSgnL2EvYi9jJywgZnVuY3Rpb24oKSB7CisgICAgZGVlcEVxdWFsKHNoYXJlZC5maXJlZCwg
WydjJywgJ2InLCAnYSddKTsKKyAgICB0aGlzLmZpbmlzaCgpOworICB9KTsKK30pOworCitjcmVh
dGVUZXN0KCdCcmVha2luZyBvdXQgb2YgbmVzdGVkIHJvdXRlcyB3aXRoIGJhY2t3YXJkIHJlY3Vy
c2lvbicsIHsKKyAgJy9hJzogeworICAgICcvOmInOiB7CisgICAgICAnL2MnOiB7CisgICAgICAg
IG9uOiBmdW5jdGlvbiBjKCkgeworICAgICAgICAgIHNoYXJlZC5maXJlZC5wdXNoKCdjJyk7Cisg
ICAgICAgIH0KKyAgICAgIH0sCisgICAgICBvbjogZnVuY3Rpb24gYigpIHsKKyAgICAgICAgc2hh
cmVkLmZpcmVkLnB1c2goJ2InKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgfQorICAg
IH0sCisgICAgb246IGZ1bmN0aW9uIGEoKSB7CisgICAgICBzaGFyZWQuZmlyZWQucHVzaCgnYScp
OworICAgIH0KKyAgfQorfSwgeworICByZWN1cnNlOiAnYmFja3dhcmQnCit9LCBmdW5jdGlvbigp
IHsKKyAgdGhpcy5uYXZpZ2F0ZSgnL2EvYi9jJywgZnVuY3Rpb24oKSB7CisgICAgZGVlcEVxdWFs
KHNoYXJlZC5maXJlZCwgWydjJywgJ2InXSk7CisgICAgdGhpcy5maW5pc2goKTsKKyAgfSk7Cit9
KTsKKworY3JlYXRlVGVzdCgnTmVzdGVkIHJvdXRlcyB3aXRoIGZvcndhcmQgcmVjdXJzaW9uJywg
eworICAnL2EnOiB7CisgICAgJy9iJzogeworICAgICAgJy9jJzogeworICAgICAgICBvbjogZnVu
Y3Rpb24gYygpIHsKKyAgICAgICAgICBzaGFyZWQuZmlyZWQucHVzaCgnYycpOworICAgICAgICB9
CisgICAgICB9LAorICAgICAgb246IGZ1bmN0aW9uIGIoKSB7CisgICAgICAgIHNoYXJlZC5maXJl
ZC5wdXNoKCdiJyk7CisgICAgICB9CisgICAgfSwKKyAgICBvbjogZnVuY3Rpb24gYSgpIHsKKyAg
ICAgIHNoYXJlZC5maXJlZC5wdXNoKCdhJyk7CisgICAgfQorICB9Cit9LCB7CisgIHJlY3Vyc2U6
ICdmb3J3YXJkJworfSwgZnVuY3Rpb24oKSB7CisgIHRoaXMubmF2aWdhdGUoJy9hL2IvYycsIGZ1
bmN0aW9uKCkgeworICAgIGRlZXBFcXVhbChzaGFyZWQuZmlyZWQsIFsnYScsICdiJywgJ2MnXSk7
CisgICAgdGhpcy5maW5pc2goKTsKKyAgfSk7Cit9KTsKKworY3JlYXRlVGVzdCgnTmVzdGVkIHJv
dXRlcyB3aXRoIGZvcndhcmQgcmVjdXJzaW9uLCBzaW5nbGUgcm91dGUgd2l0aCBhbiBhZnRlciBl
dmVudC4nLCB7CisgICcvYSc6IHsKKyAgICAnL2InOiB7CisgICAgICAnL2MnOiB7CisgICAgICAg
IG9uOiBmdW5jdGlvbiBjKCkgeworICAgICAgICAgIHNoYXJlZC5maXJlZC5wdXNoKCdjJyk7Cisg
ICAgICAgIH0sCisgICAgICAgIGFmdGVyOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICBzaGFyZWQu
ZmlyZWQucHVzaCgnYy1hZnRlcicpOworICAgICAgICB9CisgICAgICB9LAorICAgICAgb246IGZ1
bmN0aW9uIGIoKSB7CisgICAgICAgIHNoYXJlZC5maXJlZC5wdXNoKCdiJyk7CisgICAgICB9Cisg
ICAgfSwKKyAgICBvbjogZnVuY3Rpb24gYSgpIHsKKyAgICAgIHNoYXJlZC5maXJlZC5wdXNoKCdh
Jyk7CisgICAgfQorICB9Cit9LCB7CisgIHJlY3Vyc2U6ICdmb3J3YXJkJworfSwgZnVuY3Rpb24o
KSB7CisgIHRoaXMubmF2aWdhdGUoJy9hL2IvYycsIGZ1bmN0aW9uKCkgeworICAgIHRoaXMubmF2
aWdhdGUoJy9hL2InLCBmdW5jdGlvbigpIHsKKyAgICAgIGRlZXBFcXVhbChzaGFyZWQuZmlyZWQs
IFsnYScsICdiJywgJ2MnLCAnYy1hZnRlcicsICdhJywgJ2InXSk7CisgICAgICB0aGlzLmZpbmlz
aCgpOworICAgIH0pOworICB9KTsKK30pOworCitjcmVhdGVUZXN0KCdCcmVha2luZyBvdXQgb2Yg
bmVzdGVkIHJvdXRlcyB3aXRoIGZvcndhcmQgcmVjdXJzaW9uJywgeworICAnL2EnOiB7CisgICAg
Jy9iJzogeworICAgICAgJy9jJzogeworICAgICAgICBvbjogZnVuY3Rpb24gYygpIHsKKyAgICAg
ICAgICBzaGFyZWQuZmlyZWQucHVzaCgnYycpOworICAgICAgICB9CisgICAgICB9LAorICAgICAg
b246IGZ1bmN0aW9uIGIoKSB7CisgICAgICAgIHNoYXJlZC5maXJlZC5wdXNoKCdiJyk7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgIH0KKyAgICB9LAorICAgIG9uOiBmdW5jdGlvbiBhKCkg
eworICAgICAgc2hhcmVkLmZpcmVkLnB1c2goJ2EnKTsKKyAgICB9CisgIH0KK30sIHsKKyAgcmVj
dXJzZTogJ2ZvcndhcmQnCit9LCBmdW5jdGlvbigpIHsKKyAgdGhpcy5uYXZpZ2F0ZSgnL2EvYi9j
JywgZnVuY3Rpb24oKSB7CisgICAgZGVlcEVxdWFsKHNoYXJlZC5maXJlZCwgWydhJywgJ2InXSk7
CisgICAgdGhpcy5maW5pc2goKTsKKyAgfSk7Cit9KTsKKworLy8KKy8vIEFCT1ZFIElTIFdPUktJ
TkcKKy8vCisKKy8vIC8vCisvLyAvLyBTcGVjaWFsIEV2ZW50cworLy8gLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitjcmVhdGVU
ZXN0KCdBbGwgZ2xvYmFsIGV2ZW50IHNob3VsZCBmaXJlIGFmdGVyIGV2ZXJ5IHJvdXRlJywgewor
ICAnL2EnOiAgIHsKKyAgICBvbjogZnVuY3Rpb24gYSgpIHsKKyAgICAgIHNoYXJlZC5maXJlZC5w
dXNoKCdhJyk7CisgICAgfQorICB9LAorICAnL2InOiB7CisgICAgJy9jJzogeworICAgICAgb246
IGZ1bmN0aW9uIGEoKSB7CisgICAgICAgIHNoYXJlZC5maXJlZC5wdXNoKCdhJyk7CisgICAgICB9
CisgICAgfQorICB9LAorICAnL2QnOiB7CisgICAgJy86ZSc6IHsKKyAgICAgIG9uOiBmdW5jdGlv
biBhKCkgeworICAgICAgICBzaGFyZWQuZmlyZWQucHVzaCgnYScpOworICAgICAgfQorICAgIH0K
KyAgfQorfSwgeworICBhZnRlcjogZnVuY3Rpb24oKSB7CisgICAgc2hhcmVkLmZpcmVkLnB1c2go
J2InKTsKKyAgfQorfSwgZnVuY3Rpb24oKSB7CisgIHRoaXMubmF2aWdhdGUoJy9hJywgZnVuY3Rp
b24oKSB7CisgICAgdGhpcy5uYXZpZ2F0ZSgnL2IvYycsIGZ1bmN0aW9uKCkgeworICAgICAgdGhp
cy5uYXZpZ2F0ZSgnL2QvZScsIGZ1bmN0aW9uKCkgeworICAgICAgICBkZWVwRXF1YWwoc2hhcmVk
LmZpcmVkLCBbJ2EnLCAnYicsICdhJywgJ2InLCAnYSddKTsKKyAgICAgICAgdGhpcy5maW5pc2go
KTsKKyAgICAgIH0pOworICAgIH0pOworICB9KTsKKworfSk7CisKK2NyZWF0ZVRlc3QoJ05vdCBm
b3VuZC4nLCB7CisgICcvYSc6IHsKKyAgICBvbjogZnVuY3Rpb24gYSgpIHsKKyAgICAgIHNoYXJl
ZC5maXJlZC5wdXNoKCdhJyk7CisgICAgfQorICB9LAorICAnL2InOiB7CisgICAgb246IGZ1bmN0
aW9uIGEoKSB7CisgICAgICBzaGFyZWQuZmlyZWQucHVzaCgnYicpOworICAgIH0KKyAgfQorfSwg
eworICBub3Rmb3VuZDogZnVuY3Rpb24oKSB7CisgICAgc2hhcmVkLmZpcmVkLnB1c2goJ25vdGZv
dW5kJyk7CisgIH0KK30sIGZ1bmN0aW9uKCkgeworICB0aGlzLm5hdmlnYXRlKCcvYycsIGZ1bmN0
aW9uKCkgeworICAgIHRoaXMubmF2aWdhdGUoJy9kJywgZnVuY3Rpb24oKSB7CisgICAgICBkZWVw
RXF1YWwoc2hhcmVkLmZpcmVkLCBbJ25vdGZvdW5kJywgJ25vdGZvdW5kJ10pOworICAgICAgdGhp
cy5maW5pc2goKTsKKyAgICB9KTsKKyAgfSk7Cit9KTsKKworY3JlYXRlVGVzdCgnT24gYWxsLics
IHsKKyAgJy9hJzogeworICAgIG9uOiBmdW5jdGlvbiBhKCkgeworICAgICAgc2hhcmVkLmZpcmVk
LnB1c2goJ2EnKTsKKyAgICB9CisgIH0sCisgICcvYic6IHsKKyAgICBvbjogZnVuY3Rpb24gYSgp
IHsKKyAgICAgIHNoYXJlZC5maXJlZC5wdXNoKCdiJyk7CisgICAgfQorICB9Cit9LCB7CisgIG9u
OiBmdW5jdGlvbigpIHsKKyAgICBzaGFyZWQuZmlyZWQucHVzaCgnYycpOworICB9Cit9LCBmdW5j
dGlvbigpIHsKKyAgdGhpcy5uYXZpZ2F0ZSgnL2EnLCBmdW5jdGlvbigpIHsKKyAgICB0aGlzLm5h
dmlnYXRlKCcvYicsIGZ1bmN0aW9uKCkgeworICAgICAgZGVlcEVxdWFsKHNoYXJlZC5maXJlZCwg
WydhJywgJ2MnLCAnYicsICdjJ10pOworICAgICAgdGhpcy5maW5pc2goKTsKKyAgICB9KTsKKyAg
fSk7Cit9KTsKKworCitjcmVhdGVUZXN0KCdBZnRlciBhbGwuJywgeworICAnL2EnOiB7CisgICAg
b246IGZ1bmN0aW9uIGEoKSB7CisgICAgICBzaGFyZWQuZmlyZWQucHVzaCgnYScpOworICAgIH0K
KyAgfSwKKyAgJy9iJzogeworICAgIG9uOiBmdW5jdGlvbiBhKCkgeworICAgICAgc2hhcmVkLmZp
cmVkLnB1c2goJ2InKTsKKyAgICB9CisgIH0KK30sIHsKKyAgYWZ0ZXI6IGZ1bmN0aW9uKCkgewor
ICAgIHNoYXJlZC5maXJlZC5wdXNoKCdjJyk7CisgIH0KK30sIGZ1bmN0aW9uKCkgeworICB0aGlz
Lm5hdmlnYXRlKCcvYScsIGZ1bmN0aW9uKCkgeworICAgIHRoaXMubmF2aWdhdGUoJy9iJywgZnVu
Y3Rpb24oKSB7CisgICAgICBkZWVwRXF1YWwoc2hhcmVkLmZpcmVkLCBbJ2EnLCAnYycsICdiJ10p
OworICAgICAgdGhpcy5maW5pc2goKTsKKyAgICB9KTsKKyAgfSk7Cit9KTsKKworY3JlYXRlVGVz
dCgncmVzb3VyY2Ugb2JqZWN0LicsIHsKKyAgJy9hJzogeworICAgICcvYi86Yyc6IHsKKyAgICAg
IG9uOiAnZjEnCisgICAgfSwKKyAgICBvbjogJ2YyJworICB9LAorICAnL2QnOiB7CisgICAgb246
IFsnZjEnLCAnZjInXQorICB9Cit9LAoreworICByZXNvdXJjZTogeworICAgIGYxOiBmdW5jdGlv
biAobmFtZSl7CisgICAgICAgIHNoYXJlZC5maXJlZC5wdXNoKCJmMS0iICsgbmFtZSk7CisgICAg
fSwKKyAgICBmMjogZnVuY3Rpb24gKG5hbWUpeworICAgICAgICBzaGFyZWQuZmlyZWQucHVzaCgi
ZjIiKTsKKyAgICB9CisgIH0KK30sIGZ1bmN0aW9uKCkgeworICB0aGlzLm5hdmlnYXRlKCcvYS9i
L2MnLCBmdW5jdGlvbigpIHsKKyAgICB0aGlzLm5hdmlnYXRlKCcvZCcsIGZ1bmN0aW9uKCkgewor
ICAgICAgZGVlcEVxdWFsKHNoYXJlZC5maXJlZCwgWydmMS1jJywgJ2YxLXVuZGVmaW5lZCcsICdm
MiddKTsKKyAgICAgIHRoaXMuZmluaXNoKCk7CisgICAgfSk7CisgIH0pOworfSk7CisKK2NyZWF0
ZVRlc3QoJ2FyZ3VtZW50IG1hdGNoaW5nIHNob3VsZCBiZSBjYXNlIGFnbm9zdGljJywgeworICAn
L2Zvb0Jhci86bmFtZSc6IHsKKyAgICAgIG9uOiBmdW5jdGlvbihuYW1lKSB7CisgICAgICAgIHNo
YXJlZC5maXJlZC5wdXNoKCJmb29CYXItIiArIG5hbWUpOworICAgICAgfQorICAgIH0KK30sIGZ1
bmN0aW9uKCkgeworICB0aGlzLm5hdmlnYXRlKCcvZm9vQmFyL3Rlc1RpbmcnLCBmdW5jdGlvbigp
IHsKKyAgICBkZWVwRXF1YWwoc2hhcmVkLmZpcmVkLCBbJ2Zvb0Jhci10ZXNUaW5nJ10pOworICAg
IHRoaXMuZmluaXNoKCk7CisgIH0pOworfSk7CisKK2NyZWF0ZVRlc3QoJ3Nhbml0eSB0ZXN0Jywg
eworICAnL2lzLzp0aGlzLzpzYW5lJzogeworICAgIG9uOiBmdW5jdGlvbihhLCBiKSB7CisgICAg
ICBzaGFyZWQuZmlyZWQucHVzaCgneWVzICcgKyBhICsgJyBpcyAnICsgYik7CisgICAgfQorICB9
LAorICAnLyc6IHsKKyAgICBvbjogZnVuY3Rpb24oKSB7CisgICAgICBzaGFyZWQuZmlyZWQucHVz
aCgnaXMgdGhlcmUgc2FuaXR5PycpOworICAgIH0KKyAgfQorfSwgZnVuY3Rpb24oKSB7CisgIHRo
aXMubmF2aWdhdGUoJy9pcy90aGVyZS9zYW5pdHknLCBmdW5jdGlvbigpIHsKKyAgICBkZWVwRXF1
YWwoc2hhcmVkLmZpcmVkLCBbJ3llcyB0aGVyZSBpcyBzYW5pdHknXSk7CisgICAgdGhpcy5maW5p
c2goKTsKKyAgfSk7Cit9KTsKKworY3JlYXRlVGVzdCgnYC9gIHJvdXRlIHNob3VsZCBiZSBuYXZp
Z2FibGUgZnJvbSB0aGUgcm91dGluZyB0YWJsZScsIHsKKyAgJy8nOiB7CisgICAgb246IGZ1bmN0
aW9uIHJvb3QoKSB7CisgICAgICBzaGFyZWQuZmlyZWQucHVzaCgnLycpOworICAgIH0KKyAgfSwK
KyAgJy86dXNlcm5hbWUnOiB7CisgICAgb246IGZ1bmN0aW9uIGFmdW5jKHVzZXJuYW1lKSB7Cisg
ICAgICBzaGFyZWQuZmlyZWQucHVzaCgnLycgKyB1c2VybmFtZSk7CisgICAgfQorICB9Cit9LCBm
dW5jdGlvbigpIHsKKyAgdGhpcy5uYXZpZ2F0ZSgnLycsIGZ1bmN0aW9uIHJvb3QoKSB7CisgICAg
ZGVlcEVxdWFsKHNoYXJlZC5maXJlZCwgWycvJ10pOworICAgIHRoaXMuZmluaXNoKCk7CisgIH0p
OworfSk7CisKK2NyZWF0ZVRlc3QoJ2AvYCByb3V0ZSBzaG91bGQgbm90IG92ZXJyaWRlIGEgYC86
dG9rZW5gIHJvdXRlJywgeworICAnLyc6IHsKKyAgICBvbjogZnVuY3Rpb24gcm9vdCgpIHsKKyAg
ICAgIHNoYXJlZC5maXJlZC5wdXNoKCcvJyk7CisgICAgfQorICB9LAorICAnLzp1c2VybmFtZSc6
IHsKKyAgICBvbjogZnVuY3Rpb24gYWZ1bmModXNlcm5hbWUpIHsKKyAgICAgIHNoYXJlZC5maXJl
ZC5wdXNoKCcvJyArIHVzZXJuYW1lKTsKKyAgICB9CisgIH0KK30sIGZ1bmN0aW9uKCkgeworICB0
aGlzLm5hdmlnYXRlKCcvYScsIGZ1bmN0aW9uIGFmdW5jKCkgeworICAgIGRlZXBFcXVhbChzaGFy
ZWQuZmlyZWQsIFsnL2EnXSk7CisgICAgdGhpcy5maW5pc2goKTsKKyAgfSk7Cit9KTsKKworY3Jl
YXRlVGVzdCgnc2hvdWxkIGFjY2VwdCB0aGUgcm9vdCBhcyBhIHRva2VuLicsIHsKKyAgJy86YSc6
IHsKKyAgICBvbjogZnVuY3Rpb24gcm9vdCgpIHsKKyAgICAgIGlmICghYnJvd3Nlcl9oaXN0b3J5
X3N1cHBvcnQpIHsKKyAgICAgICAgc2hhcmVkLmZpcmVkLnB1c2gobG9jYXRpb24uaGFzaC5yZXBs
YWNlKC9eIy8sICcnKSk7CisgICAgICB9IGVsc2UgeworICAgICAgICBzaGFyZWQuZmlyZWQucHVz
aChsb2NhdGlvbi5wYXRobmFtZSk7CisgICAgICB9CisgICAgfQorICB9Cit9LCBmdW5jdGlvbigp
IHsKKyAgdGhpcy5uYXZpZ2F0ZSgnL2EnLCBmdW5jdGlvbiByb290KCkgeworICAgIGRlZXBFcXVh
bChzaGFyZWQuZmlyZWQsIFsnL2EnXSk7CisgICAgdGhpcy5maW5pc2goKTsKKyAgfSk7Cit9KTsK
KworY3JlYXRlVGVzdCgncm91dGVzIHNob3VsZCBhbGxvdyB3aWxkY2FyZHMuJywgeworICAnLzph
L2IqZCc6IHsKKyAgICBvbjogZnVuY3Rpb24oKSB7CisgICAgICBpZiAoIWJyb3dzZXJfaGlzdG9y
eV9zdXBwb3J0KSB7CisgICAgICAgIHNoYXJlZC5maXJlZC5wdXNoKGxvY2F0aW9uLmhhc2gucmVw
bGFjZSgvXiMvLCAnJykpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgc2hhcmVkLmZpcmVkLnB1
c2gobG9jYXRpb24ucGF0aG5hbWUpOworICAgICAgfQorICAgIH0KKyAgfQorfSwgZnVuY3Rpb24o
KSB7CisgIHRoaXMubmF2aWdhdGUoJy9hL2JjZCcsIGZ1bmN0aW9uIHJvb3QoKSB7CisgICAgZGVl
cEVxdWFsKHNoYXJlZC5maXJlZCwgWycvYS9iY2QnXSk7CisgICAgdGhpcy5maW5pc2goKTsKKyAg
fSk7Cit9KTsKKworY3JlYXRlVGVzdCgnZnVuY3Rpb25zIHNob3VsZCBoYXZlIHx0aGlzfCBjb250
ZXh0IG9mIHRoZSByb3V0ZXIgaW5zdGFuY2UuJywgeworICAnLyc6IHsKKyAgICBvbjogZnVuY3Rp
b24gcm9vdCgpIHsKKyAgICAgIHNoYXJlZC5maXJlZC5wdXNoKCEhdGhpcy5yb3V0ZXMpOworICAg
IH0KKyAgfQorfSwgZnVuY3Rpb24oKSB7CisgIHRoaXMubmF2aWdhdGUoJy8nLCBmdW5jdGlvbiBy
b290KCkgeworICAgIGRlZXBFcXVhbChzaGFyZWQuZmlyZWQsIFt0cnVlXSk7CisgICAgdGhpcy5m
aW5pc2goKTsKKyAgfSk7Cit9KTsKKworY3JlYXRlVGVzdCgnc2V0Um91dGUgd2l0aCBhIHNpbmds
ZSBwYXJhbWV0ZXIgc2hvdWxkIGNoYW5nZSBsb2NhdGlvbiBjb3JyZWN0bHknLCB7CisgICcvYm9u
ayc6IHsKKyAgICBvbjogZnVuY3Rpb24oKSB7CisgICAgICBpZiAoIWJyb3dzZXJfaGlzdG9yeV9z
dXBwb3J0KSB7CisgICAgICAgIHNoYXJlZC5maXJlZC5wdXNoKGxvY2F0aW9uLmhhc2gucmVwbGFj
ZSgvXiMvLCAnJykpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgc2hhcmVkLmZpcmVkLnB1c2go
d2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKTsKKyAgICAgIH0KKyAgICB9CisgIH0KK30sIGZ1bmN0
aW9uKCkgeworICB2YXIgc2VsZiA9IHRoaXM7CisgIHRoaXMucm91dGVyLnNldFJvdXRlKCcvYm9u
aycpOworICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgIGRlZXBFcXVhbChzaGFyZWQuZmly
ZWQsIFsnL2JvbmsnXSk7CisgICAgc2VsZi5maW5pc2goKTsKKyAgfSwgMTQpCit9KTsKKworY3Jl
YXRlVGVzdCgncm91dGUgc2hvdWxkIGFjY2VwdCBfIGFuZCAuIHdpdGhpbiBwYXJhbWV0ZXJzJywg
eworICAnLzphJzogeworICAgIG9uOiBmdW5jdGlvbiByb290KCkgeworICAgICAgaWYgKCFicm93
c2VyX2hpc3Rvcnlfc3VwcG9ydCkgeworICAgICAgICBzaGFyZWQuZmlyZWQucHVzaChsb2NhdGlv
bi5oYXNoLnJlcGxhY2UoL14jLywgJycpKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHNoYXJl
ZC5maXJlZC5wdXNoKGxvY2F0aW9uLnBhdGhuYW1lKTsKKyAgICAgIH0KKyAgICB9CisgIH0KK30s
IGZ1bmN0aW9uKCkgeworICAgIHRoaXMubmF2aWdhdGUoJy9hX2NvbXBsZXhfcm91dGUuY28udWsn
LCBmdW5jdGlvbiByb290KCkgeworICAgIGRlZXBFcXVhbChzaGFyZWQuZmlyZWQsIFsnL2FfY29t
cGxleF9yb3V0ZS5jby51ayddKTsKKyAgICB0aGlzLmZpbmlzaCgpOworICB9KTsKK30pOwpkaWZm
IC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL3Rlc3QvYnJv
d3Nlci9yb3V0ZXMtaGFybmVzcy5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVz
L2RpcmVjdG9yL3Rlc3QvYnJvd3Nlci9yb3V0ZXMtaGFybmVzcy5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5
N2M4MjY2N2EwNmE3MGEyNTczNDEzZWExZWE0MTBkYmU4MTE3YmQKLS0tIC9kZXYvbnVsbAorKysg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvZGlyZWN0b3IvdGVzdC9icm93c2VyL3Jv
dXRlcy1oYXJuZXNzLmh0bWwKQEAgLTAsMCArMSwyMSBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRt
bD4KKzxoZWFkPgorICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KKyAgICA8dGl0bGU+RGlyZWN0
b3IgVGVzdHM8L3RpdGxlPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
bm9kZV9tb2R1bGVzL3F1bml0anMvcXVuaXQvcXVuaXQuY3NzIj4KKzwvaGVhZD4KKzxib2R5Pgor
ICAgIDxkaXYgaWQ9InF1bml0Ij48L2Rpdj4KKyAgICA8ZGl2IGlkPSJxdW5pdC1maXh0dXJlIj48
L2Rpdj4KKworICAgIDxzY3JpcHQ+CisgICAgICAgIHZhciBIVE1MNVRFU1QgPSBmYWxzZTsKKyAg
ICA8L3NjcmlwdD4KKworICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9ub2RlX21vZHVsZXMvcXVuaXRq
cy9xdW5pdC9xdW5pdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL2J1aWxk
L2RpcmVjdG9yLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iaGVscGVycy9hcGkuanMi
Pjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyb3V0ZXMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVs
ZXMvZGlyZWN0b3IvdGVzdC9icm93c2VyL3JvdXRlcy10ZXN0LmpzIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVh
Y3Qvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL3Rlc3QvYnJvd3Nlci9yb3V0ZXMtdGVzdC5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi45MzgzMWMyMTJmOWYwMjlmNGYyMGY4YjM2ZDYwNDM4MTU4MjVkYmY1Ci0tLSAvZGV2
L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL3Rlc3Qv
YnJvd3Nlci9yb3V0ZXMtdGVzdC5qcwpAQCAtMCwwICsxLDczOSBAQAorCitjcmVhdGVUZXN0KCdO
ZXN0ZWQgcm91dGUgd2l0aCB0aGUgbWFueSBjaGlsZHJlbiBhcyBhIHRva2VucywgY2FsbGJhY2tz
IHNob3VsZCB5aWVsZCBoaXN0b3JpYyBwYXJhbXMnLCB7CisgICcvYSc6IHsKKyAgICAnLzppZCc6
IHsKKyAgICAgICcvOmlkJzogZnVuY3Rpb24oYSwgYikgeworICAgICAgICBzaGFyZWQuZmlyZWQu
cHVzaChsb2NhdGlvbi5oYXNoLCBhLCBiKTsKKyAgICAgIH0KKyAgICB9CisgIH0KK30sIGZ1bmN0
aW9uKCkgeworICBzaGFyZWQuZmlyZWQgPSBbXTsKKyAgdGhpcy5uYXZpZ2F0ZSgnL2EvYi9jJywg
ZnVuY3Rpb24oKSB7CisgICAgZGVlcEVxdWFsKHNoYXJlZC5maXJlZCwgWycjL2EvYi9jJywgJ2In
LCAnYyddKTsKKyAgICB0aGlzLmZpbmlzaCgpOworICB9KTsKK30pOworCitjcmVhdGVUZXN0KCdO
ZXN0ZWQgcm91dGUgd2l0aCB0aGUgZmlyc3QgY2hpbGQgYXMgYSB0b2tlbiwgY2FsbGJhY2sgc2hv
dWxkIHlpZWxkIGEgcGFyYW0nLCB7CisgICcvZm9vJzogeworICAgICcvOmlkJzogeworICAgICAg
b246IGZ1bmN0aW9uKGlkKSB7CisgICAgICAgIHNoYXJlZC5maXJlZC5wdXNoKGxvY2F0aW9uLmhh
c2gsIGlkKTsKKyAgICAgIH0KKyAgICB9CisgIH0KK30sIGZ1bmN0aW9uKCkgeworICBzaGFyZWQu
ZmlyZWQgPSBbXTsKKyAgdGhpcy5uYXZpZ2F0ZSgnL2Zvby9hJywgZnVuY3Rpb24oKSB7CisgICAg
dGhpcy5uYXZpZ2F0ZSgnL2Zvby9iL2MnLCBmdW5jdGlvbigpIHsKKyAgICAgIGRlZXBFcXVhbChz
aGFyZWQuZmlyZWQsIFsnIy9mb28vYScsICdhJ10pOworICAgICAgdGhpcy5maW5pc2goKTsKKyAg
ICB9KTsKKyAgfSk7Cit9KTsKKworY3JlYXRlVGVzdCgnTmVzdGVkIHJvdXRlIHdpdGggdGhlIGZp
cnN0IGNoaWxkIGFzIGEgcmVnZXhwLCBjYWxsYmFjayBzaG91bGQgeWllbGQgYSBwYXJhbScsIHsK
KyAgJy9mb28nOiB7CisgICAgJy8oXFx3KyknOiB7CisgICAgICBvbjogZnVuY3Rpb24odmFsdWUp
IHsKKyAgICAgICAgc2hhcmVkLmZpcmVkLnB1c2gobG9jYXRpb24uaGFzaCwgdmFsdWUpOworICAg
ICAgfQorICAgIH0KKyAgfQorfSwgZnVuY3Rpb24oKSB7CisgIHNoYXJlZC5maXJlZCA9IFtdOwor
ICB0aGlzLm5hdmlnYXRlKCcvZm9vL2EnLCBmdW5jdGlvbigpIHsKKyAgICB0aGlzLm5hdmlnYXRl
KCcvZm9vL2IvYycsIGZ1bmN0aW9uKCkgeworICAgICAgZGVlcEVxdWFsKHNoYXJlZC5maXJlZCwg
WycjL2Zvby9hJywgJ2EnXSk7CisgICAgICB0aGlzLmZpbmlzaCgpOworICAgIH0pOworICB9KTsK
K30pOworCitjcmVhdGVUZXN0KCdOZXN0ZWQgcm91dGUgd2l0aCB0aGUgc2V2ZXJhbCByZWd1bGFy
IGV4cHJlc3Npb25zLCBjYWxsYmFjayBzaG91bGQgeWllbGQgYSBwYXJhbScsIHsKKyAgJy9hJzog
eworICAgICcvKFxcdyspJzogeworICAgICAgJy8oXFx3KyknOiBmdW5jdGlvbihhLCBiKSB7Cisg
ICAgICAgIHNoYXJlZC5maXJlZC5wdXNoKGEsIGIpOworICAgICAgfQorICAgIH0KKyAgfQorfSwg
ZnVuY3Rpb24oKSB7CisgIHNoYXJlZC5maXJlZCA9IFtdOworICB0aGlzLm5hdmlnYXRlKCcvYS9i
L2MnLCBmdW5jdGlvbigpIHsKKyAgICBkZWVwRXF1YWwoc2hhcmVkLmZpcmVkLCBbJ2InLCAnYydd
KTsKKyAgICB0aGlzLmZpbmlzaCgpOworICB9KTsKK30pOworCisKKworY3JlYXRlVGVzdCgnU2lu
Z2xlIG5lc3RlZCByb3V0ZSB3aXRoIG9uIG1lbWJlciBjb250YWluaW5nIGZ1bmN0aW9uIHZhbHVl
JywgeworICAnL2EnOiB7CisgICAgJy9iJzogeworICAgICAgb246IGZ1bmN0aW9uKCkgeworICAg
ICAgICBzaGFyZWQuZmlyZWQucHVzaChsb2NhdGlvbi5oYXNoKTsKKyAgICAgIH0KKyAgICB9Cisg
IH0KK30sIGZ1bmN0aW9uKCkgeworICBzaGFyZWQuZmlyZWQgPSBbXTsKKyAgdGhpcy5uYXZpZ2F0
ZSgnL2EvYicsIGZ1bmN0aW9uKCkgeworICAgICAgZGVlcEVxdWFsKHNoYXJlZC5maXJlZCwgWycj
L2EvYiddKTsKKyAgICAgIHRoaXMuZmluaXNoKCk7CisgIH0pOworfSk7CisKK2NyZWF0ZVRlc3Qo
J1NpbmdsZSBub24tbmVzdGVkIHJvdXRlIHdpdGggb24gbWVtYmVyIGNvbnRhaW5pbmcgZnVuY3Rp
b24gdmFsdWUnLCB7CisgICcvYS9iJzogeworICAgIG9uOiBmdW5jdGlvbigpIHsKKyAgICAgIHNo
YXJlZC5maXJlZC5wdXNoKGxvY2F0aW9uLmhhc2gpOworICAgIH0KKyAgfQorfSwgZnVuY3Rpb24o
KSB7CisgIHNoYXJlZC5maXJlZCA9IFtdOworICB0aGlzLm5hdmlnYXRlKCcvYS9iJywgZnVuY3Rp
b24oKSB7CisgICAgZGVlcEVxdWFsKHNoYXJlZC5maXJlZCwgWycjL2EvYiddKTsKKyAgICB0aGlz
LmZpbmlzaCgpOworICB9KTsKK30pOworCitjcmVhdGVUZXN0KCdTaW5nbGUgbmVzdGVkIHJvdXRl
IHdpdGggb24gbWVtYmVyIGNvbnRhaW5pbmcgYXJyYXkgb2YgZnVuY3Rpb24gdmFsdWVzJywgewor
ICAnL2EnOiB7CisgICAgJy9iJzogeworICAgICAgb246IFtmdW5jdGlvbigpIHsgc2hhcmVkLmZp
cmVkLnB1c2gobG9jYXRpb24uaGFzaCk7IH0sCisgICAgICAgIGZ1bmN0aW9uKCkgeyBzaGFyZWQu
ZmlyZWQucHVzaChsb2NhdGlvbi5oYXNoKTsgfV0KKyAgICB9CisgIH0KK30sIGZ1bmN0aW9uKCkg
eworICBzaGFyZWQuZmlyZWQgPSBbXTsKKyAgdGhpcy5uYXZpZ2F0ZSgnL2EvYicsIGZ1bmN0aW9u
KCkgeworICAgICAgZGVlcEVxdWFsKHNoYXJlZC5maXJlZCwgWycjL2EvYicsICcjL2EvYiddKTsK
KyAgICAgIHRoaXMuZmluaXNoKCk7CisgIH0pOworfSk7CisKK2NyZWF0ZVRlc3QoJ21ldGhvZCBz
aG91bGQgb25seSBmaXJlIG9uY2Ugb24gdGhlIHJvdXRlLicsIHsKKyAgJy9hJzogeworICAgICcv
Yic6IHsKKyAgICAgIG9uY2U6IGZ1bmN0aW9uKCkgeworICAgICAgICBzaGFyZWQuZmlyZWQrKzsK
KyAgICAgIH0KKyAgICB9CisgIH0KK30sIGZ1bmN0aW9uKCkgeworICBzaGFyZWQuZmlyZWQgPSAw
OworICB0aGlzLm5hdmlnYXRlKCcvYS9iJywgZnVuY3Rpb24oKSB7CisgICAgdGhpcy5uYXZpZ2F0
ZSgnL2EvYicsIGZ1bmN0aW9uKCkgeworICAgICAgdGhpcy5uYXZpZ2F0ZSgnL2EvYicsIGZ1bmN0
aW9uKCkgeworICAgICAgICBkZWVwRXF1YWwoc2hhcmVkLmZpcmVkLCAxKTsKKyAgICAgICAgdGhp
cy5maW5pc2goKTsKKyAgICAgIH0pOworICAgIH0pOworICB9KTsKK30pOworCitjcmVhdGVUZXN0
KCdtZXRob2Qgc2hvdWxkIG9ubHkgZmlyZSBvbmNlIG9uIHRoZSByb3V0ZSwgbXVsdGlwbGUgbmVz
dGluZy4nLCB7CisgICcvYSc6IHsKKyAgICBvbjogZnVuY3Rpb24oKSB7IHNoYXJlZC5maXJlZCsr
OyB9LAorICAgIG9uY2U6IGZ1bmN0aW9uKCkgeyBzaGFyZWQuZmlyZWQrKzsgfQorICB9LAorICAn
L2InOiB7CisgICAgb246IGZ1bmN0aW9uKCkgeyBzaGFyZWQuZmlyZWQrKzsgfSwKKyAgICBvbmNl
OiBmdW5jdGlvbigpIHsgc2hhcmVkLmZpcmVkKys7IH0KKyAgfQorfSwgZnVuY3Rpb24oKSB7Cisg
IHNoYXJlZC5maXJlZCA9IDA7CisgIHRoaXMubmF2aWdhdGUoJy9hJywgZnVuY3Rpb24oKSB7Cisg
ICAgdGhpcy5uYXZpZ2F0ZSgnL2InLCBmdW5jdGlvbigpIHsKKyAgICAgIHRoaXMubmF2aWdhdGUo
Jy9hJywgZnVuY3Rpb24oKSB7CisgICAgICAgIHRoaXMubmF2aWdhdGUoJy9iJywgZnVuY3Rpb24o
KSB7CisgICAgICAgICAgZGVlcEVxdWFsKHNoYXJlZC5maXJlZCwgNik7CisgICAgICAgICAgdGhp
cy5maW5pc2goKTsKKyAgICAgICAgfSk7CisgICAgICB9KTsKKyAgICB9KTsKKyAgfSk7Cit9KTsK
KworY3JlYXRlVGVzdCgnb3ZlcmxhcHBpbmcgcm91dGVzIHdpdGggdG9rZW5zLicsIHsKKyAgJy9h
LzpiL2MnIDogZnVuY3Rpb24oKSB7CisgICAgc2hhcmVkLmZpcmVkLnB1c2gobG9jYXRpb24uaGFz
aCk7CisgIH0sCisgICcvYS86Yi9jLzpkJyA6IGZ1bmN0aW9uKCkgeworICAgIHNoYXJlZC5maXJl
ZC5wdXNoKGxvY2F0aW9uLmhhc2gpOworICB9Cit9LCBmdW5jdGlvbigpIHsKKyAgc2hhcmVkLmZp
cmVkID0gW107CisgIHRoaXMubmF2aWdhdGUoJy9hL2IvYycsIGZ1bmN0aW9uKCkgeworCisgICAg
dGhpcy5uYXZpZ2F0ZSgnL2EvYi9jL2QnLCBmdW5jdGlvbigpIHsKKyAgICAgIGRlZXBFcXVhbChz
aGFyZWQuZmlyZWQsIFsnIy9hL2IvYycsICcjL2EvYi9jL2QnXSk7CisgICAgICB0aGlzLmZpbmlz
aCgpOworICAgIH0pOworICB9KTsKK30pOworCisvLyAvLyAvLworLy8gLy8gLy8gUmVjdXJzaW9u
IGZlYXR1cmVzCisvLyAvLyAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2NyZWF0ZVRlc3QoJ05lc3RlZCByb3V0ZXMgd2l0aCBu
byByZWN1cnNpb24nLCB7CisgICcvYSc6IHsKKyAgICAnL2InOiB7CisgICAgICAnL2MnOiB7Cisg
ICAgICAgIG9uOiBmdW5jdGlvbiBjKCkgeworICAgICAgICAgIHNoYXJlZC5maXJlZC5wdXNoKCdj
Jyk7CisgICAgICAgIH0KKyAgICAgIH0sCisgICAgICBvbjogZnVuY3Rpb24gYigpIHsKKyAgICAg
ICAgc2hhcmVkLmZpcmVkLnB1c2goJ2InKTsKKyAgICAgIH0KKyAgICB9LAorICAgIG9uOiBmdW5j
dGlvbiBhKCkgeworICAgICAgc2hhcmVkLmZpcmVkLnB1c2goJ2EnKTsKKyAgICB9CisgIH0KK30s
IGZ1bmN0aW9uKCkgeworICBzaGFyZWQuZmlyZWQgPSBbXTsKKworICB0aGlzLm5hdmlnYXRlKCcv
YS9iL2MnLCBmdW5jdGlvbigpIHsKKyAgICBkZWVwRXF1YWwoc2hhcmVkLmZpcmVkLCBbJ2MnXSk7
CisgICAgdGhpcy5maW5pc2goKTsKKyAgfSk7Cit9KTsKKworY3JlYXRlVGVzdCgnTmVzdGVkIHJv
dXRlcyB3aXRoIGJhY2t3YXJkIHJlY3Vyc2lvbicsIHsKKyAgJy9hJzogeworICAgICcvYic6IHsK
KyAgICAgICcvYyc6IHsKKyAgICAgICAgb246IGZ1bmN0aW9uIGMoKSB7CisgICAgICAgICAgc2hh
cmVkLmZpcmVkLnB1c2goJ2MnKTsKKyAgICAgICAgfQorICAgICAgfSwKKyAgICAgIG9uOiBmdW5j
dGlvbiBiKCkgeworICAgICAgICBzaGFyZWQuZmlyZWQucHVzaCgnYicpOworICAgICAgfQorICAg
IH0sCisgICAgb246IGZ1bmN0aW9uIGEoKSB7CisgICAgICBzaGFyZWQuZmlyZWQucHVzaCgnYScp
OworICAgIH0KKyAgfQorfSwgeworICByZWN1cnNlOiAnYmFja3dhcmQnCit9LCBmdW5jdGlvbigp
IHsKKyAgc2hhcmVkLmZpcmVkID0gW107CisKKyAgdGhpcy5uYXZpZ2F0ZSgnL2EvYi9jJywgZnVu
Y3Rpb24oKSB7CisgICAgZGVlcEVxdWFsKHNoYXJlZC5maXJlZCwgWydjJywgJ2InLCAnYSddKTsK
KyAgICB0aGlzLmZpbmlzaCgpOworICB9KTsKK30pOworCitjcmVhdGVUZXN0KCdCcmVha2luZyBv
dXQgb2YgbmVzdGVkIHJvdXRlcyB3aXRoIGJhY2t3YXJkIHJlY3Vyc2lvbicsIHsKKyAgJy9hJzog
eworICAgICcvOmInOiB7CisgICAgICAnL2MnOiB7CisgICAgICAgIG9uOiBmdW5jdGlvbiBjKCkg
eworICAgICAgICAgIHNoYXJlZC5maXJlZC5wdXNoKCdjJyk7CisgICAgICAgIH0KKyAgICAgIH0s
CisgICAgICBvbjogZnVuY3Rpb24gYigpIHsKKyAgICAgICAgc2hhcmVkLmZpcmVkLnB1c2goJ2In
KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgfQorICAgIH0sCisgICAgb246IGZ1bmN0
aW9uIGEoKSB7CisgICAgICBzaGFyZWQuZmlyZWQucHVzaCgnYScpOworICAgIH0KKyAgfQorfSwg
eworICByZWN1cnNlOiAnYmFja3dhcmQnCit9LCBmdW5jdGlvbigpIHsKKyAgc2hhcmVkLmZpcmVk
ID0gW107CisKKyAgdGhpcy5uYXZpZ2F0ZSgnL2EvYi9jJywgZnVuY3Rpb24oKSB7CisgICAgZGVl
cEVxdWFsKHNoYXJlZC5maXJlZCwgWydjJywgJ2InXSk7CisgICAgdGhpcy5maW5pc2goKTsKKyAg
fSk7Cit9KTsKKworY3JlYXRlVGVzdCgnTmVzdGVkIHJvdXRlcyB3aXRoIGZvcndhcmQgcmVjdXJz
aW9uJywgeworICAnL2EnOiB7CisgICAgJy9iJzogeworICAgICAgJy9jJzogeworICAgICAgICBv
bjogZnVuY3Rpb24gYygpIHsKKyAgICAgICAgICBzaGFyZWQuZmlyZWQucHVzaCgnYycpOworICAg
ICAgICB9CisgICAgICB9LAorICAgICAgb246IGZ1bmN0aW9uIGIoKSB7CisgICAgICAgIHNoYXJl
ZC5maXJlZC5wdXNoKCdiJyk7CisgICAgICB9CisgICAgfSwKKyAgICBvbjogZnVuY3Rpb24gYSgp
IHsKKyAgICAgIHNoYXJlZC5maXJlZC5wdXNoKCdhJyk7CisgICAgfQorICB9Cit9LCB7CisgIHJl
Y3Vyc2U6ICdmb3J3YXJkJworfSwgZnVuY3Rpb24oKSB7CisgIHNoYXJlZC5maXJlZCA9IFtdOwor
CisgIHRoaXMubmF2aWdhdGUoJy9hL2IvYycsIGZ1bmN0aW9uKCkgeworICAgIGRlZXBFcXVhbChz
aGFyZWQuZmlyZWQsIFsnYScsICdiJywgJ2MnXSk7CisgICAgdGhpcy5maW5pc2goKTsKKyAgfSk7
Cit9KTsKKworY3JlYXRlVGVzdCgnTmVzdGVkIHJvdXRlcyB3aXRoIGZvcndhcmQgcmVjdXJzaW9u
LCBzaW5nbGUgcm91dGUgd2l0aCBhbiBhZnRlciBldmVudC4nLCB7CisgICcvYSc6IHsKKyAgICAn
L2InOiB7CisgICAgICAnL2MnOiB7CisgICAgICAgIG9uOiBmdW5jdGlvbiBjKCkgeworICAgICAg
ICAgIHNoYXJlZC5maXJlZC5wdXNoKCdjJyk7CisgICAgICAgIH0sCisgICAgICAgIGFmdGVyOiBm
dW5jdGlvbigpIHsKKyAgICAgICAgICBzaGFyZWQuZmlyZWQucHVzaCgnYy1hZnRlcicpOworICAg
ICAgICB9CisgICAgICB9LAorICAgICAgb246IGZ1bmN0aW9uIGIoKSB7CisgICAgICAgIHNoYXJl
ZC5maXJlZC5wdXNoKCdiJyk7CisgICAgICB9CisgICAgfSwKKyAgICBvbjogZnVuY3Rpb24gYSgp
IHsKKyAgICAgIHNoYXJlZC5maXJlZC5wdXNoKCdhJyk7CisgICAgfQorICB9Cit9LCB7CisgIHJl
Y3Vyc2U6ICdmb3J3YXJkJworfSwgZnVuY3Rpb24oKSB7CisgIHNoYXJlZC5maXJlZCA9IFtdOwor
CisgIHRoaXMubmF2aWdhdGUoJy9hL2IvYycsIGZ1bmN0aW9uKCkgeworICAgIHRoaXMubmF2aWdh
dGUoJy9hL2InLCBmdW5jdGlvbigpIHsKKyAgICAgIGRlZXBFcXVhbChzaGFyZWQuZmlyZWQsIFsn
YScsICdiJywgJ2MnLCAnYy1hZnRlcicsICdhJywgJ2InXSk7CisgICAgICB0aGlzLmZpbmlzaCgp
OworICAgIH0pOworICB9KTsKK30pOworCitjcmVhdGVUZXN0KCdCcmVha2luZyBvdXQgb2YgbmVz
dGVkIHJvdXRlcyB3aXRoIGZvcndhcmQgcmVjdXJzaW9uJywgeworICAnL2EnOiB7CisgICAgJy9i
JzogeworICAgICAgJy9jJzogeworICAgICAgICBvbjogZnVuY3Rpb24gYygpIHsKKyAgICAgICAg
ICBzaGFyZWQuZmlyZWQucHVzaCgnYycpOworICAgICAgICB9CisgICAgICB9LAorICAgICAgb246
IGZ1bmN0aW9uIGIoKSB7CisgICAgICAgIHNoYXJlZC5maXJlZC5wdXNoKCdiJyk7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgIH0KKyAgICB9LAorICAgIG9uOiBmdW5jdGlvbiBhKCkgewor
ICAgICAgc2hhcmVkLmZpcmVkLnB1c2goJ2EnKTsKKyAgICB9CisgIH0KK30sIHsKKyAgcmVjdXJz
ZTogJ2ZvcndhcmQnCit9LCBmdW5jdGlvbigpIHsKKyAgc2hhcmVkLmZpcmVkID0gW107CisKKyAg
dGhpcy5uYXZpZ2F0ZSgnL2EvYi9jJywgZnVuY3Rpb24oKSB7CisgICAgZGVlcEVxdWFsKHNoYXJl
ZC5maXJlZCwgWydhJywgJ2InXSk7CisgICAgdGhpcy5maW5pc2goKTsKKyAgfSk7Cit9KTsKKwor
Ly8KKy8vIEFCT1ZFIElTIFdPUktJTkcKKy8vCisKKy8vIC8vCisvLyAvLyBTcGVjaWFsIEV2ZW50
cworLy8gLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCitjcmVhdGVUZXN0KCdBbGwgZ2xvYmFsIGV2ZW50IHNob3VsZCBmaXJlIGFm
dGVyIGV2ZXJ5IHJvdXRlJywgeworICAnL2EnOiB7CisgICAgb246IGZ1bmN0aW9uIGEoKSB7Cisg
ICAgICBzaGFyZWQuZmlyZWQucHVzaCgnYScpOworICAgIH0KKyAgfSwKKyAgJy9iJzogeworICAg
ICcvYyc6IHsKKyAgICAgIG9uOiBmdW5jdGlvbiBhKCkgeworICAgICAgICBzaGFyZWQuZmlyZWQu
cHVzaCgnYScpOworICAgICAgfQorICAgIH0KKyAgfSwKKyAgJy9kJzogeworICAgICcvOmUnOiB7
CisgICAgICBvbjogZnVuY3Rpb24gYSgpIHsKKyAgICAgICAgc2hhcmVkLmZpcmVkLnB1c2goJ2En
KTsKKyAgICAgIH0KKyAgICB9CisgIH0KK30sIHsKKyAgYWZ0ZXI6IGZ1bmN0aW9uKCkgeworICAg
IHNoYXJlZC5maXJlZC5wdXNoKCdiJyk7CisgIH0KK30sIGZ1bmN0aW9uKCkgeworICBzaGFyZWQu
ZmlyZWQgPSBbXTsKKworICB0aGlzLm5hdmlnYXRlKCcvYScsIGZ1bmN0aW9uKCkgeworICAgIHRo
aXMubmF2aWdhdGUoJy9iL2MnLCBmdW5jdGlvbigpIHsKKyAgICAgIHRoaXMubmF2aWdhdGUoJy9k
L2UnLCBmdW5jdGlvbigpIHsKKyAgICAgICAgZGVlcEVxdWFsKHNoYXJlZC5maXJlZCwgWydhJywg
J2InLCAnYScsICdiJywgJ2EnXSk7CisgICAgICAgIHRoaXMuZmluaXNoKCk7CisgICAgICB9KTsK
KyAgICB9KTsKKyAgfSk7CisKK30pOworCitjcmVhdGVUZXN0KCdOb3QgZm91bmQuJywgeworICAn
L2EnOiB7CisgICAgb246IGZ1bmN0aW9uIGEoKSB7CisgICAgICBzaGFyZWQuZmlyZWQucHVzaCgn
YScpOworICAgIH0KKyAgfSwKKyAgJy9iJzogeworICAgIG9uOiBmdW5jdGlvbiBhKCkgeworICAg
ICAgc2hhcmVkLmZpcmVkLnB1c2goJ2InKTsKKyAgICB9CisgIH0KK30sIHsKKyAgbm90Zm91bmQ6
IGZ1bmN0aW9uKCkgeworICAgIHNoYXJlZC5maXJlZC5wdXNoKCdub3Rmb3VuZCcpOworICB9Cit9
LCBmdW5jdGlvbigpIHsKKyAgc2hhcmVkLmZpcmVkID0gW107CisKKyAgdGhpcy5uYXZpZ2F0ZSgn
L2MnLCBmdW5jdGlvbigpIHsKKyAgICB0aGlzLm5hdmlnYXRlKCcvZCcsIGZ1bmN0aW9uKCkgewor
ICAgICAgZGVlcEVxdWFsKHNoYXJlZC5maXJlZCwgWydub3Rmb3VuZCcsICdub3Rmb3VuZCddKTsK
KyAgICAgIHRoaXMuZmluaXNoKCk7CisgICAgfSk7CisgIH0pOworfSk7CisKK2NyZWF0ZVRlc3Qo
J09uIGFsbC4nLCB7CisgICcvYSc6IHsKKyAgICBvbjogZnVuY3Rpb24gYSgpIHsKKyAgICAgIHNo
YXJlZC5maXJlZC5wdXNoKCdhJyk7CisgICAgfQorICB9LAorICAnL2InOiB7CisgICAgb246IGZ1
bmN0aW9uIGEoKSB7CisgICAgICBzaGFyZWQuZmlyZWQucHVzaCgnYicpOworICAgIH0KKyAgfQor
fSwgeworICBvbjogZnVuY3Rpb24oKSB7CisgICAgc2hhcmVkLmZpcmVkLnB1c2goJ2MnKTsKKyAg
fQorfSwgZnVuY3Rpb24oKSB7CisgIHNoYXJlZC5maXJlZCA9IFtdOworCisgIHRoaXMubmF2aWdh
dGUoJy9hJywgZnVuY3Rpb24oKSB7CisgICAgdGhpcy5uYXZpZ2F0ZSgnL2InLCBmdW5jdGlvbigp
IHsKKyAgICAgIGRlZXBFcXVhbChzaGFyZWQuZmlyZWQsIFsnYScsICdjJywgJ2InLCAnYyddKTsK
KyAgICAgIHRoaXMuZmluaXNoKCk7CisgICAgfSk7CisgIH0pOworfSk7CisKKworY3JlYXRlVGVz
dCgnQWZ0ZXIgYWxsLicsIHsKKyAgJy9hJzogeworICAgIG9uOiBmdW5jdGlvbiBhKCkgeworICAg
ICAgc2hhcmVkLmZpcmVkLnB1c2goJ2EnKTsKKyAgICB9CisgIH0sCisgICcvYic6IHsKKyAgICBv
bjogZnVuY3Rpb24gYSgpIHsKKyAgICAgIHNoYXJlZC5maXJlZC5wdXNoKCdiJyk7CisgICAgfQor
ICB9Cit9LCB7CisgIGFmdGVyOiBmdW5jdGlvbigpIHsKKyAgICBzaGFyZWQuZmlyZWQucHVzaCgn
YycpOworICB9Cit9LCBmdW5jdGlvbigpIHsKKyAgc2hhcmVkLmZpcmVkID0gW107CisKKyAgdGhp
cy5uYXZpZ2F0ZSgnL2EnLCBmdW5jdGlvbigpIHsKKyAgICB0aGlzLm5hdmlnYXRlKCcvYicsIGZ1
bmN0aW9uKCkgeworICAgICAgZGVlcEVxdWFsKHNoYXJlZC5maXJlZCwgWydhJywgJ2MnLCAnYidd
KTsKKyAgICAgIHRoaXMuZmluaXNoKCk7CisgICAgfSk7CisgIH0pOworfSk7CisKK2NyZWF0ZVRl
c3QoJ3Jlc291cmNlIG9iamVjdC4nLCB7CisgICcvYSc6IHsKKyAgICAnL2IvOmMnOiB7CisgICAg
ICBvbjogJ2YxJworICAgIH0sCisgICAgb246ICdmMicKKyAgfSwKKyAgJy9kJzogeworICAgIG9u
OiBbJ2YxJywgJ2YyJ10KKyAgfQorfSwKK3sKKyAgcmVzb3VyY2U6IHsKKyAgICBmMTogZnVuY3Rp
b24gKG5hbWUpeworICAgICAgICBzaGFyZWQuZmlyZWQucHVzaCgiZjEtIiArIG5hbWUpOworICAg
IH0sCisgICAgZjI6IGZ1bmN0aW9uIChuYW1lKXsKKyAgICAgICAgc2hhcmVkLmZpcmVkLnB1c2go
ImYyIik7CisgICAgfQorICB9Cit9LCBmdW5jdGlvbigpIHsKKyAgc2hhcmVkLmZpcmVkID0gW107
CisKKyAgdGhpcy5uYXZpZ2F0ZSgnL2EvYi9jJywgZnVuY3Rpb24oKSB7CisgICAgdGhpcy5uYXZp
Z2F0ZSgnL2QnLCBmdW5jdGlvbigpIHsKKyAgICAgIGRlZXBFcXVhbChzaGFyZWQuZmlyZWQsIFsn
ZjEtYycsICdmMS11bmRlZmluZWQnLCAnZjInXSk7CisgICAgICB0aGlzLmZpbmlzaCgpOworICAg
IH0pOworICB9KTsKK30pOworCitjcmVhdGVUZXN0KCdhcmd1bWVudCBtYXRjaGluZyBzaG91bGQg
YmUgY2FzZSBhZ25vc3RpYycsIHsKKyAgJy9mb29CYXIvOm5hbWUnOiB7CisgICAgICBvbjogZnVu
Y3Rpb24obmFtZSkgeworICAgICAgICBzaGFyZWQuZmlyZWQucHVzaCgiZm9vQmFyLSIgKyBuYW1l
KTsKKyAgICAgIH0KKyAgICB9Cit9LCBmdW5jdGlvbigpIHsKKyAgc2hhcmVkLmZpcmVkID0gW107
CisgIHRoaXMubmF2aWdhdGUoJy9mb29CYXIvdGVzVGluZycsIGZ1bmN0aW9uKCkgeworICAgIGRl
ZXBFcXVhbChzaGFyZWQuZmlyZWQsIFsnZm9vQmFyLXRlc1RpbmcnXSk7CisgICAgdGhpcy5maW5p
c2goKTsKKyAgfSk7Cit9KTsKKworY3JlYXRlVGVzdCgnc2FuaXR5IHRlc3QnLCB7CisgICcvaXMv
OnRoaXMvOnNhbmUnOiB7CisgICAgb246IGZ1bmN0aW9uKGEsIGIpIHsKKyAgICAgIHNoYXJlZC5m
aXJlZC5wdXNoKCd5ZXMgJyArIGEgKyAnIGlzICcgKyBiKTsKKyAgICB9CisgIH0sCisgICcvJzog
eworICAgIG9uOiBmdW5jdGlvbigpIHsKKyAgICAgIHNoYXJlZC5maXJlZC5wdXNoKCdpcyB0aGVy
ZSBzYW5pdHk/Jyk7CisgICAgfQorICB9Cit9LCBmdW5jdGlvbigpIHsKKyAgc2hhcmVkLmZpcmVk
ID0gW107CisgIHRoaXMubmF2aWdhdGUoJy9pcy90aGVyZS9zYW5pdHknLCBmdW5jdGlvbigpIHsK
KyAgICBkZWVwRXF1YWwoc2hhcmVkLmZpcmVkLCBbJ3llcyB0aGVyZSBpcyBzYW5pdHknXSk7Cisg
ICAgdGhpcy5maW5pc2goKTsKKyAgfSk7Cit9KTsKKworY3JlYXRlVGVzdCgnYC9gIHJvdXRlIHNo
b3VsZCBiZSBuYXZpZ2FibGUgZnJvbSB0aGUgcm91dGluZyB0YWJsZScsIHsKKyAgJy8nOiB7Cisg
ICAgb246IGZ1bmN0aW9uIHJvb3QoKSB7CisgICAgICBzaGFyZWQuZmlyZWQucHVzaCgnLycpOwor
ICAgIH0KKyAgfSwKKyAgJy86dXNlcm5hbWUnOiB7CisgICAgb246IGZ1bmN0aW9uIGFmdW5jKHVz
ZXJuYW1lKSB7CisgICAgICBzaGFyZWQuZmlyZWQucHVzaCgnLycgKyB1c2VybmFtZSk7CisgICAg
fQorICB9Cit9LCBmdW5jdGlvbigpIHsKKyAgc2hhcmVkLmZpcmVkID0gW107CisgIHRoaXMubmF2
aWdhdGUoJy8nLCBmdW5jdGlvbiByb290KCkgeworICAgIGRlZXBFcXVhbChzaGFyZWQuZmlyZWQs
IFsnLyddKTsKKyAgICB0aGlzLmZpbmlzaCgpOworICB9KTsKK30pOworCitjcmVhdGVUZXN0KCdg
L2Agcm91dGUgc2hvdWxkIG5vdCBvdmVycmlkZSBhIGAvOnRva2VuYCByb3V0ZScsIHsKKyAgJy8n
OiB7CisgICAgb246IGZ1bmN0aW9uIHJvb3QoKSB7CisgICAgICBzaGFyZWQuZmlyZWQucHVzaCgn
LycpOworICAgIH0KKyAgfSwKKyAgJy86dXNlcm5hbWUnOiB7CisgICAgb246IGZ1bmN0aW9uIGFm
dW5jKHVzZXJuYW1lKSB7CisgICAgICBzaGFyZWQuZmlyZWQucHVzaCgnLycgKyB1c2VybmFtZSk7
CisgICAgfQorICB9Cit9LCBmdW5jdGlvbigpIHsKKyAgc2hhcmVkLmZpcmVkID0gW107CisgIHRo
aXMubmF2aWdhdGUoJy9hJywgZnVuY3Rpb24gYWZ1bmMoKSB7CisgICAgZGVlcEVxdWFsKHNoYXJl
ZC5maXJlZCwgWycvYSddKTsKKyAgICB0aGlzLmZpbmlzaCgpOworICB9KTsKK30pOworCitjcmVh
dGVUZXN0KCdzaG91bGQgYWNjZXB0IHRoZSByb290IGFzIGEgdG9rZW4uJywgeworICAnLzphJzog
eworICAgIG9uOiBmdW5jdGlvbiByb290KCkgeworICAgICAgc2hhcmVkLmZpcmVkLnB1c2gobG9j
YXRpb24uaGFzaCk7CisgICAgfQorICB9Cit9LCBmdW5jdGlvbigpIHsKKyAgc2hhcmVkLmZpcmVk
ID0gW107CisgIHRoaXMubmF2aWdhdGUoJy9hJywgZnVuY3Rpb24gcm9vdCgpIHsKKyAgICBkZWVw
RXF1YWwoc2hhcmVkLmZpcmVkLCBbJyMvYSddKTsKKyAgICB0aGlzLmZpbmlzaCgpOworICB9KTsK
K30pOworCitjcmVhdGVUZXN0KCdyb3V0ZXMgc2hvdWxkIGFsbG93IHdpbGRjYXJkcy4nLCB7Cisg
ICcvOmEvYipkJzogeworICAgIG9uOiBmdW5jdGlvbigpIHsKKyAgICAgIHNoYXJlZC5maXJlZC5w
dXNoKGxvY2F0aW9uLmhhc2gpOworICAgIH0KKyAgfQorfSwgZnVuY3Rpb24oKSB7CisgIHNoYXJl
ZC5maXJlZCA9IFtdOworICB0aGlzLm5hdmlnYXRlKCcvYS9iY2QnLCBmdW5jdGlvbiByb290KCkg
eworICAgIGRlZXBFcXVhbChzaGFyZWQuZmlyZWQsIFsnIy9hL2JjZCddKTsKKyAgICB0aGlzLmZp
bmlzaCgpOworICB9KTsKK30pOworCitjcmVhdGVUZXN0KCdmdW5jdGlvbnMgc2hvdWxkIGhhdmUg
fHRoaXN8IGNvbnRleHQgb2YgdGhlIHJvdXRlciBpbnN0YW5jZS4nLCB7CisgICcvJzogeworICAg
IG9uOiBmdW5jdGlvbiByb290KCkgeworICAgICAgc2hhcmVkLmZpcmVkLnB1c2goISF0aGlzLnJv
dXRlcyk7CisgICAgfQorICB9Cit9LCBmdW5jdGlvbigpIHsKKyAgc2hhcmVkLmZpcmVkID0gW107
CisgIHRoaXMubmF2aWdhdGUoJy8nLCBmdW5jdGlvbiByb290KCkgeworICAgIGRlZXBFcXVhbChz
aGFyZWQuZmlyZWQsIFt0cnVlXSk7CisgICAgdGhpcy5maW5pc2goKTsKKyAgfSk7Cit9KTsKKwor
Y3JlYXRlVGVzdCgnc2V0Um91dGUgd2l0aCBhIHNpbmdsZSBwYXJhbWV0ZXIgc2hvdWxkIGNoYW5n
ZSBsb2NhdGlvbiBjb3JyZWN0bHknLCB7CisgICcvYm9uayc6IHsKKyAgICBvbjogZnVuY3Rpb24o
KSB7CisgICAgICBzaGFyZWQuZmlyZWQucHVzaCh3aW5kb3cubG9jYXRpb24uaGFzaCk7CisgICAg
fQorICB9Cit9LCBmdW5jdGlvbigpIHsKKyAgdmFyIHNlbGYgPSB0aGlzOworICBzaGFyZWQuZmly
ZWQgPSBbXTsKKyAgdGhpcy5yb3V0ZXIuc2V0Um91dGUoJy9ib25rJyk7CisgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7CisgICAgZGVlcEVxdWFsKHNoYXJlZC5maXJlZCwgWycjL2JvbmsnXSk7Cisg
ICAgc2VsZi5maW5pc2goKTsKKyAgfSwgMTQpCit9KTsKKworY3JlYXRlVGVzdCgncm91dGUgc2hv
dWxkIGFjY2VwdCBfIGFuZCAuIHdpdGhpbiBwYXJhbWV0ZXJzJywgeworICAnLzphJzogeworICAg
IG9uOiBmdW5jdGlvbiByb290KCkgeworICAgICAgc2hhcmVkLmZpcmVkLnB1c2gobG9jYXRpb24u
aGFzaCk7CisgICAgfQorICB9Cit9LCBmdW5jdGlvbigpIHsKKyAgc2hhcmVkLmZpcmVkID0gW107
CisgIHRoaXMubmF2aWdhdGUoJy9hX2NvbXBsZXhfcm91dGUuY28udWsnLCBmdW5jdGlvbiByb290
KCkgeworICAgIGRlZXBFcXVhbChzaGFyZWQuZmlyZWQsIFsnIy9hX2NvbXBsZXhfcm91dGUuY28u
dWsnXSk7CisgICAgdGhpcy5maW5pc2goKTsKKyAgfSk7Cit9KTsKKworY3JlYXRlVGVzdCgnaW5p
dGlhbGl6aW5nIHdpdGggYSBkZWZhdWx0IHJvdXRlIHNob3VsZCBvbmx5IHJlc3VsdCBpbiBvbmUg
cm91dGUgaGFuZGxpbmcnLCB7CisgICAgJy8nOiB7CisgICAgICBvbjogZnVuY3Rpb24gcm9vdCgp
IHsKKyAgICAgICAgaWYgKCFzaGFyZWQuaW5pdCl7CisgICAgICAgICAgICBzaGFyZWQuaW5pdCA9
IDA7CisgICAgICAgIH0KKyAgICAgICAgc2hhcmVkLmluaXQrKzsKKyAgICAgIH0KKyAgICB9LAor
ICAgICcvdGVzdCc6IHsKKyAgICAgIG9uOiBmdW5jdGlvbiByb290KCkgeworICAgICAgICBpZiAo
IXNoYXJlZC50ZXN0KXsKKyAgICAgICAgICAgIHNoYXJlZC50ZXN0ID0gMDsKKyAgICAgICAgfQor
ICAgICAgICBzaGFyZWQudGVzdCsrOworICAgICAgfQorICAgIH0KKyAgfSwgZnVuY3Rpb24oKSB7
CisgICAgdGhpcy5uYXZpZ2F0ZSgnL3Rlc3QnLCBmdW5jdGlvbiByb290KCkgeworICAgICAgZXF1
YWwoc2hhcmVkLmluaXQsIDEpOworICAgICAgZXF1YWwoc2hhcmVkLnRlc3QsIDEpOworICAgICAg
dGhpcy5maW5pc2goKTsKKyAgICB9KTsKKyAgfSwKKyAgbnVsbCwKKyAgJy8nKTsKKworY3JlYXRl
VGVzdCgnY2hhbmdpbmcgdGhlIGhhc2ggdHdpY2Ugc2hvdWxkIGNhbGwgZWFjaCByb3V0ZSBvbmNl
JywgeworICAgICcvaGFzaDEnOiB7CisgICAgICBvbjogZnVuY3Rpb24gcm9vdCgpIHsKKyAgICAg
ICAgICBzaGFyZWQuZmlyZWQucHVzaCgnaGFzaDEnKTsKKyAgICAgIH0KKyAgICB9LAorICAgICcv
aGFzaDInOiB7CisgICAgICAgIG9uOiBmdW5jdGlvbiByb290KCkgeworICAgICAgICAgICAgc2hh
cmVkLmZpcmVkLnB1c2goJ2hhc2gyJyk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgfSwgZnVuY3Rp
b24oKSB7CisgICAgc2hhcmVkLmZpcmVkID0gW107CisgICAgdGhpcy5uYXZpZ2F0ZSgnL2hhc2gx
JywgZnVuY3Rpb24oKXt9KTsKKyAgICB0aGlzLm5hdmlnYXRlKCcvaGFzaDInLCBmdW5jdGlvbigp
eworICAgICAgZGVlcEVxdWFsKHNoYXJlZC5maXJlZCwgWydoYXNoMScsICdoYXNoMiddKTsKKyAg
ICAgIHRoaXMuZmluaXNoKCk7CisgICAgfSk7CisgIH0KKyk7CisKKy8vIFRoaXMgdGVzdCBkb2Vz
bid0IHVzZSB0aGUgY3JlYXRlVGVzdCBzaW5jZSBjcmVhdGVUZXN0IHJ1bnMgaW5pdCBvbiB0aGUg
cm91dGVyIGJlZm9yZQorLy8gcnVubmluZyB0aGUgdGVzdCwgd2hpY2ggaXMgd2hhdCB3ZSB3YW50
IHRvIHRlc3QuCit0ZXN0KCdmaXJlIHRoZSBjb3JyZWN0IHJvdXRlIHdoZW4gaW5pdGlhbGl6aW5n
IHRoZSByb3V0ZXInLCBmdW5jdGlvbigpeworICB3aW5kb3cubG9jYXRpb24uaGFzaCA9ICdpbml0
aWFsJzsKKyAgdmFyIGZpcmVkID0gW107CisgIHZhciByb3V0ZXIgPSBuZXcgKHdpbmRvdy5Sb3V0
ZXIgfHwgd2luZG93LlJvdXRlckFsaWFzKSh7CisgICAgJy9pbml0aWFsJzogZnVuY3Rpb24oKXsK
KyAgICAgIGZpcmVkLnB1c2goJy9pbml0aWFsJyk7CisgICAgfSwKKyAgICAnaW5pdGlhbCc6IGZ1
bmN0aW9uKCl7CisgICAgICBmaXJlZC5wdXNoKCdpbml0aWFsJyk7CisgICAgfQorICB9KTsKKyAg
cm91dGVyLmluaXQoKTsKKyAgZGVlcEVxdWFsKGZpcmVkLCBbJy9pbml0aWFsJywgJ2luaXRpYWwn
XSk7CisgIHJvdXRlci5kZXN0cm95KCk7Cit9KTsKKwordGVzdCgnZG8gbm90IGNvbWJpbmUgaGFz
aCBpZiBjb252ZXJ0X2hhc2hfaW5faW5pdCBpcyBmYWxzZScsIGZ1bmN0aW9uKCl7CisgIHdpbmRv
dy5sb2NhdGlvbi5oYXNoID0gJ2luaXRpYWwnOworICB2YXIgZmlyZWQgPSBbXTsKKyAgdmFyIGlu
aXRpYWxQYXRoID0gd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lOworICB2YXIgcm91dGVzID0gewor
ICAgICcvaW5pdGlhbCc6IGZ1bmN0aW9uKCl7CisgICAgICBmaXJlZC5wdXNoKCcvaW5pdGlhbCcp
OworICAgIH0sCisgICAgJ2luaXRpYWwnOiBmdW5jdGlvbigpeworICAgICAgZmlyZWQucHVzaCgn
aW5pdGlhbCcpOworICAgIH0KKyAgfTsKKyAgcm91dGVzW2luaXRpYWxQYXRoXSA9IGZ1bmN0aW9u
KCl7CisgICAgZmlyZWQucHVzaCgnKicpOworICB9OworCisgIHZhciByb3V0ZXIgPSBuZXcgKHdp
bmRvdy5Sb3V0ZXIgfHwgd2luZG93LlJvdXRlckFsaWFzKShyb3V0ZXMpOworCisgIHJvdXRlci5j
b25maWd1cmUoeworICAgIGh0bWw1aGlzdG9yeTogdHJ1ZSwKKyAgICBjb252ZXJ0X2hhc2hfaW5f
aW5pdDogZmFsc2UKKyAgfSk7CisgIHJvdXRlci5pbml0KCk7CisgIGRlZXBFcXVhbChmaXJlZCwg
WycqJ10pOworICByb3V0ZXIuZGVzdHJveSgpOworfSk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9yZWFjdC9ub2RlX21vZHVsZXMvZGlyZWN0b3IvdGVzdC9zZXJ2ZXIvY2xpL2Rpc3BhdGNoLXRl
c3QuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvZGlyZWN0b3IvdGVzdC9zZXJ2
ZXIvY2xpL2Rpc3BhdGNoLXRlc3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOThkYzU4YzMwNWQ0NGZhOTA5Zjg1
NjdjMTk1ZWFhOTIwMDMxMDBmYwotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0
L25vZGVfbW9kdWxlcy9kaXJlY3Rvci90ZXN0L3NlcnZlci9jbGkvZGlzcGF0Y2gtdGVzdC5qcwpA
QCAtMCwwICsxLDU1IEBACisvKgorICogZGlzcGF0Y2gtdGVzdC5qczogVGVzdHMgZm9yIHRoZSBj
b3JlIGRpc3BhdGNoIG1ldGhvZC4KKyAqCisgKiAoQykgMjAxMSwgQ2hhcmxpZSBSb2JiaW5zLCBQ
YW9sbyBGcmFnb21lbmksICYgdGhlIENvbnRyaWJ1dG9ycy4KKyAqIE1JVCBMSUNFTlNFCisgKgor
ICovCisKK3ZhciBhc3NlcnQgPSByZXF1aXJlKCdhc3NlcnQnKSwKKyAgICB2b3dzID0gcmVxdWly
ZSgndm93cycpLAorICAgIGRpcmVjdG9yID0gcmVxdWlyZSgnLi4vLi4vLi4vbGliL2RpcmVjdG9y
Jyk7CisKK3Zvd3MuZGVzY3JpYmUoJ2RpcmVjdG9yL2NsaS9kaXNwYXRjaCcpLmFkZEJhdGNoKHsK
KyAgIkFuIGluc3RhbmNlIG9mIGRpcmVjdG9yLmNsaS5Sb3V0ZXIiOiB7CisgICAgdG9waWM6IGZ1
bmN0aW9uICgpIHsKKyAgICAgIHZhciByb3V0ZXIgPSBuZXcgZGlyZWN0b3IuY2xpLlJvdXRlcigp
LAorICAgICAgICAgIHRoYXQgPSB0aGlzOworCisgICAgICB0aGF0Lm1hdGNoZWQgPSB7fTsKKyAg
ICAgIHRoYXQubWF0Y2hlZFsndXNlcnMnXSA9IFtdOworICAgICAgdGhhdC5tYXRjaGVkWydhcHBz
J10gPSBbXQorCisgICAgICByb3V0ZXIub24oJ3VzZXJzIGNyZWF0ZScsIGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgdGhhdC5tYXRjaGVkWyd1c2VycyddLnB1c2goJ29uIHVzZXJzIGNyZWF0ZScpOwor
ICAgICAgfSk7CisKKyAgICAgIHJvdXRlci5vbigvYXBwcyAoXHcrXHNcdyspLywgZnVuY3Rpb24g
KCkgeworICAgICAgICBhc3NlcnQuZXF1YWwoYXJndW1lbnRzLmxlbmd0aCwgMSk7CisgICAgICAg
IHRoYXQubWF0Y2hlZFsnYXBwcyddLnB1c2goJ29uIGFwcHMgKFxcdytcXHNcXHcrKScpOworICAg
ICAgfSk7CisKKyAgICAgIHJldHVybiByb3V0ZXI7CisgICAgfSwKKyAgICAic2hvdWxkIGhhdmUg
dGhlIGNvcnJlY3Qgcm91dGluZyB0YWJsZSI6IGZ1bmN0aW9uIChyb3V0ZXIpIHsKKyAgICAgIGFz
c2VydC5pc09iamVjdChyb3V0ZXIucm91dGVzLnVzZXJzKTsKKyAgICAgIGFzc2VydC5pc09iamVj
dChyb3V0ZXIucm91dGVzLnVzZXJzLmNyZWF0ZSk7CisgICAgfSwKKyAgICAidGhlIGRpc3BhdGNo
KCkgbWV0aG9kIjogeworICAgICAgInVzZXJzIGNyZWF0ZSI6IGZ1bmN0aW9uIChyb3V0ZXIpIHsK
KyAgICAgICAgYXNzZXJ0LmlzVHJ1ZShyb3V0ZXIuZGlzcGF0Y2goJ29uJywgJ3VzZXJzIGNyZWF0
ZScpKTsKKyAgICAgICAgYXNzZXJ0LmVxdWFsKHRoaXMubWF0Y2hlZC51c2Vyc1swXSwgJ29uIHVz
ZXJzIGNyZWF0ZScpOworICAgICAgfSwKKyAgICAgICJhcHBzIGZvbyBiYXIiOiBmdW5jdGlvbiAo
cm91dGVyKSB7CisgICAgICAgIGFzc2VydC5pc1RydWUocm91dGVyLmRpc3BhdGNoKCdvbicsICdh
cHBzIGZvbyBiYXInKSk7CisgICAgICAgIGFzc2VydC5lcXVhbCh0aGlzLm1hdGNoZWRbJ2FwcHMn
XVswXSwgJ29uIGFwcHMgKFxcdytcXHNcXHcrKScpOworICAgICAgfSwKKyAgICAgICJub3QgaGVy
ZSI6IGZ1bmN0aW9uIChyb3V0ZXIpIHsKKyAgICAgICAgYXNzZXJ0LmlzRmFsc2Uocm91dGVyLmRp
c3BhdGNoKCdvbicsICdub3QgaGVyZScpKTsKKyAgICAgIH0sCisgICAgICAic3RpbGwgbm90IGhl
cmUiOiBmdW5jdGlvbiAocm91dGVyKSB7CisgICAgICAgIGFzc2VydC5pc0ZhbHNlKHJvdXRlci5k
aXNwYXRjaCgnb24nLCAnc3RpbGwgbm90IGhlcmUnKSk7CisgICAgICB9CisgICAgfQorICB9Cit9
KS5leHBvcnQobW9kdWxlKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9k
dWxlcy9kaXJlY3Rvci90ZXN0L3NlcnZlci9jbGkvbW91bnQtdGVzdC5qcyBiL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L3JlYWN0L25vZGVfbW9kdWxlcy9kaXJlY3Rvci90ZXN0L3NlcnZlci9jbGkvbW91bnQtdGVzdC5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mZTkyYjM1Mjg4MmMwYjBkYTkyY2QxN2VkMGRlNTgzZWE1OTA3ZGJhCi0t
LSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2RpcmVjdG9y
L3Rlc3Qvc2VydmVyL2NsaS9tb3VudC10ZXN0LmpzCkBAIC0wLDAgKzEsMzAgQEAKKy8qCisgKiBt
b3VudC10ZXN0LmpzOiBUZXN0cyBmb3IgdGhlIGNvcmUgbW91bnQgbWV0aG9kLgorICoKKyAqIChD
KSAyMDExLCBDaGFybGllIFJvYmJpbnMsIFBhb2xvIEZyYWdvbWVuaSwgJiB0aGUgQ29udHJpYnV0
b3JzLgorICogTUlUIExJQ0VOU0UKKyAqCisgKi8KKwordmFyIGFzc2VydCA9IHJlcXVpcmUoJ2Fz
c2VydCcpLAorICAgIHZvd3MgPSByZXF1aXJlKCd2b3dzJyksCisgICAgZGlyZWN0b3IgPSByZXF1
aXJlKCcuLi8uLi8uLi9saWIvZGlyZWN0b3InKTsKKwordm93cy5kZXNjcmliZSgnZGlyZWN0b3Iv
Y2xpL3BhdGgnKS5hZGRCYXRjaCh7CisgICJBbiBpbnN0YW5jZSBvZiBkaXJlY3Rvci5jbGkuUm91
dGVyIHdpdGggcm91dGVzIjogeworICAgIHRvcGljOiBuZXcgZGlyZWN0b3IuY2xpLlJvdXRlcih7
CisgICAgICAnYXBwcyc6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgY29uc29sZS5sb2coJ2FwcHMn
KTsKKyAgICAgIH0sCisgICAgICAnIHVzZXJzJzogZnVuY3Rpb24gKCkgeworICAgICAgICBjb25z
b2xlLmxvZygndXNlcnMnKTsKKyAgICAgIH0KKyAgICB9KSwKKyAgICAic2hvdWxkIGNyZWF0ZSB0
aGUgY29ycmVjdCBuZXN0ZWQgcm91dGluZyB0YWJsZSI6IGZ1bmN0aW9uIChyb3V0ZXIpIHsKKyAg
ICAgIGFzc2VydC5pc09iamVjdChyb3V0ZXIucm91dGVzLmFwcHMpOworICAgICAgYXNzZXJ0Lmlz
RnVuY3Rpb24ocm91dGVyLnJvdXRlcy5hcHBzLm9uKTsKKyAgICAgIGFzc2VydC5pc09iamVjdChy
b3V0ZXIucm91dGVzLnVzZXJzKTsKKyAgICAgIGFzc2VydC5pc0Z1bmN0aW9uKHJvdXRlci5yb3V0
ZXMudXNlcnMub24pOworICAgIH0KKyAgfQorfSkuZXhwb3J0KG1vZHVsZSk7CmRpZmYgLS1naXQg
YS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvZGlyZWN0b3IvdGVzdC9zZXJ2ZXIvY2xp
L3BhdGgtdGVzdC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9kaXJlY3Rvci90
ZXN0L3NlcnZlci9jbGkvcGF0aC10ZXN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA4YjRiNTUxMDE5ZjcwNTU4
MGM0NjVmYWJlYmRiMGIzZDAyYTFlMGMKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9y
ZWFjdC9ub2RlX21vZHVsZXMvZGlyZWN0b3IvdGVzdC9zZXJ2ZXIvY2xpL3BhdGgtdGVzdC5qcwpA
QCAtMCwwICsxLDM5IEBACisvKgorICogZGlzcGF0Y2gtdGVzdC5qczogVGVzdHMgZm9yIHRoZSBj
b3JlIGRpc3BhdGNoIG1ldGhvZC4KKyAqCisgKiAoQykgMjAxMSwgQ2hhcmxpZSBSb2JiaW5zLCBQ
YW9sbyBGcmFnb21lbmksICYgdGhlIENvbnRyaWJ1dG9ycy4KKyAqIE1JVCBMSUNFTlNFCisgKgor
ICovCisKK3ZhciBhc3NlcnQgPSByZXF1aXJlKCdhc3NlcnQnKSwKKyAgICB2b3dzID0gcmVxdWly
ZSgndm93cycpLAorICAgIGRpcmVjdG9yID0gcmVxdWlyZSgnLi4vLi4vLi4vbGliL2RpcmVjdG9y
Jyk7CisKK3Zvd3MuZGVzY3JpYmUoJ2RpcmVjdG9yL2NsaS9wYXRoJykuYWRkQmF0Y2goeworICAi
QW4gaW5zdGFuY2Ugb2YgZGlyZWN0b3IuY2xpLlJvdXRlciI6IHsKKyAgICB0b3BpYzogbmV3IGRp
cmVjdG9yLmNsaS5Sb3V0ZXIoKSwKKyAgICAidGhlIHBhdGgoKSBtZXRob2QiOiB7CisgICAgICAi
c2hvdWxkIGNyZWF0ZSB0aGUgY29ycmVjdCBuZXN0ZWQgcm91dGluZyB0YWJsZSI6IGZ1bmN0aW9u
IChyb3V0ZXIpIHsKKyAgICAgICAgZnVuY3Rpb24gbm9vcCAoKSB7fQorCisgICAgICAgIHJvdXRl
ci5wYXRoKC9hcHBzLywgZnVuY3Rpb24gKCkgeworICAgICAgICAgIHJvdXRlci5wYXRoKC9mb28v
LCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICByb3V0ZXIub24oL2Jhci8sIG5vb3ApOworICAg
ICAgICAgIH0pOworCisgICAgICAgICAgcm91dGVyLm9uKC9saXN0Lywgbm9vcCk7CisgICAgICAg
IH0pOworCisgICAgICAgIHJvdXRlci5vbigvdXNlcnMvLCBub29wKTsKKworICAgICAgICBhc3Nl
cnQuaXNPYmplY3Qocm91dGVyLnJvdXRlcy5hcHBzKTsKKyAgICAgICAgYXNzZXJ0LmlzRnVuY3Rp
b24ocm91dGVyLnJvdXRlcy5hcHBzLmxpc3Qub24pOworICAgICAgICBhc3NlcnQuaXNPYmplY3Qo
cm91dGVyLnJvdXRlcy5hcHBzLmZvbyk7CisgICAgICAgIGFzc2VydC5pc0Z1bmN0aW9uKHJvdXRl
ci5yb3V0ZXMuYXBwcy5mb28uYmFyLm9uKTsKKyAgICAgICAgYXNzZXJ0LmlzRnVuY3Rpb24ocm91
dGVyLnJvdXRlcy51c2Vycy5vbik7CisgICAgICB9CisgICAgfQorICB9Cit9KS5leHBvcnQobW9k
dWxlKTsKKwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2RpcmVj
dG9yL3Rlc3Qvc2VydmVyL2NvcmUvZGlzcGF0Y2gtdGVzdC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0
L25vZGVfbW9kdWxlcy9kaXJlY3Rvci90ZXN0L3NlcnZlci9jb3JlL2Rpc3BhdGNoLXRlc3QuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNTNhMzNkZTQ1MWExZTY0ZjgxMmQyMTdmZGZlYzdiNWU0MWI4ODlhZgotLS0g
L2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9kaXJlY3Rvci90
ZXN0L3NlcnZlci9jb3JlL2Rpc3BhdGNoLXRlc3QuanMKQEAgLTAsMCArMSwxMTMgQEAKKy8qCisg
KiBkaXNwYXRjaC10ZXN0LmpzOiBUZXN0cyBmb3IgdGhlIGNvcmUgZGlzcGF0Y2ggbWV0aG9kLgor
ICoKKyAqIChDKSAyMDExLCBDaGFybGllIFJvYmJpbnMsIFBhb2xvIEZyYWdvbWVuaSwgJiB0aGUg
Q29udHJpYnV0b3JzLgorICogTUlUIExJQ0VOU0UKKyAqCisgKi8KKwordmFyIGFzc2VydCA9IHJl
cXVpcmUoJ2Fzc2VydCcpLAorICAgIHZvd3MgPSByZXF1aXJlKCd2b3dzJyksCisgICAgZGlyZWN0
b3IgPSByZXF1aXJlKCcuLi8uLi8uLi9saWIvZGlyZWN0b3InKTsKKwordm93cy5kZXNjcmliZSgn
ZGlyZWN0b3IvY29yZS9kaXNwYXRjaCcpLmFkZEJhdGNoKHsKKyAgIkFuIGluc3RhbmNlIG9mIGRp
cmVjdG9yLlJvdXRlciI6IHsKKyAgICB0b3BpYzogZnVuY3Rpb24gKCkgeworICAgICAgdmFyIHRo
YXQgPSB0aGlzOworICAgICAgdGhhdC5tYXRjaGVkID0ge307CisgICAgICB0aGF0Lm1hdGNoZWRb
Jy8nXSA9IFtdOworICAgICAgdGhhdC5tYXRjaGVkWydmb28nXSA9IFtdOworICAgICAgdGhhdC5t
YXRjaGVkWydmKiddID0gW10KKworICAgICAgdmFyIHJvdXRlciA9IG5ldyBkaXJlY3Rvci5Sb3V0
ZXIoeworICAgICAgICAnLyc6IHsKKyAgICAgICAgICBiZWZvcmU6IGZ1bmN0aW9uICgpIHsgdGhh
dC5tYXRjaGVkWycvJ10ucHVzaCgnYmVmb3JlIC8nKSB9LAorICAgICAgICAgIG9uOiBmdW5jdGlv
biAoKSB7IHRoYXQubWF0Y2hlZFsnLyddLnB1c2goJ29uIC8nKSB9LAorICAgICAgICAgIGFmdGVy
OiBmdW5jdGlvbiAoKSB7IHRoYXQubWF0Y2hlZFsnLyddLnB1c2goJ2FmdGVyIC8nKSB9CisgICAg
ICAgIH0sCisgICAgICAgICcvZm9vJzogeworICAgICAgICAgIGJlZm9yZTogZnVuY3Rpb24gKCkg
eyB0aGF0Lm1hdGNoZWQuZm9vLnB1c2goJ2JlZm9yZSBmb28nKSB9LAorICAgICAgICAgIG9uOiBm
dW5jdGlvbiAoKSB7IHRoYXQubWF0Y2hlZC5mb28ucHVzaCgnb24gZm9vJykgfSwKKyAgICAgICAg
ICBhZnRlcjogZnVuY3Rpb24gKCkgeyB0aGF0Lm1hdGNoZWQuZm9vLnB1c2goJ2FmdGVyIGZvbycp
IH0sCisgICAgICAgICAgJy9iYXInOiB7CisgICAgICAgICAgICBiZWZvcmU6IGZ1bmN0aW9uICgp
IHsgdGhhdC5tYXRjaGVkLmZvby5wdXNoKCdiZWZvcmUgZm9vIGJhcicpIH0sCisgICAgICAgICAg
ICBvbjogZnVuY3Rpb24gKCkgeyB0aGF0Lm1hdGNoZWQuZm9vLnB1c2goJ2ZvbyBiYXInKSB9LAor
ICAgICAgICAgICAgYWZ0ZXI6IGZ1bmN0aW9uICgpIHsgdGhhdC5tYXRjaGVkLmZvby5wdXNoKCdh
ZnRlciBmb28gYmFyJykgfSwKKyAgICAgICAgICAgICcvYnV6eic6IGZ1bmN0aW9uICgpIHsgdGhh
dC5tYXRjaGVkLmZvby5wdXNoKCdmb28gYmFyIGJ1enonKSB9CisgICAgICAgICAgfQorICAgICAg
ICB9LAorICAgICAgICAnL2YqJzogeworICAgICAgICAgICcvYmFyYmllJzogZnVuY3Rpb24gKCkg
eyB0aGF0Lm1hdGNoZWRbJ2YqJ10ucHVzaCgnZiogYmFyYmllJykgfQorICAgICAgICB9CisgICAg
ICB9KTsKKworICAgICAgcm91dGVyLmNvbmZpZ3VyZSh7CisgICAgICAgIHJlY3Vyc2U6ICdiYWNr
d2FyZCcKKyAgICAgIH0pOworCisgICAgICByZXR1cm4gcm91dGVyOworICAgIH0sCisgICAgInNo
b3VsZCBoYXZlIHRoZSBjb3JyZWN0IHJvdXRpbmcgdGFibGUiOiBmdW5jdGlvbiAocm91dGVyKSB7
CisgICAgICBhc3NlcnQuaXNPYmplY3Qocm91dGVyLnJvdXRlcy5mb28pOworICAgICAgYXNzZXJ0
LmlzT2JqZWN0KHJvdXRlci5yb3V0ZXMuZm9vLmJhcik7CisgICAgICBhc3NlcnQuaXNPYmplY3Qo
cm91dGVyLnJvdXRlcy5mb28uYmFyLmJ1enopOworICAgICAgYXNzZXJ0LmlzRnVuY3Rpb24ocm91
dGVyLnJvdXRlcy5mb28uYmFyLmJ1enoub24pOworICAgIH0sCisgICAgInRoZSBkaXNwYXRjaCgp
IG1ldGhvZCI6IHsKKyAgICAgICIvIjogZnVuY3Rpb24gKHJvdXRlcikgeworICAgICAgICBhc3Nl
cnQuaXNUcnVlKHJvdXRlci5kaXNwYXRjaCgnb24nLCAnLycpKTsKKyAgICAgICAgYXNzZXJ0Lmlz
VHJ1ZShyb3V0ZXIuZGlzcGF0Y2goJ29uJywgJy8nKSk7CisKKyAgICAgICAgYXNzZXJ0LmVxdWFs
KHRoaXMubWF0Y2hlZFsnLyddWzBdLCAnYmVmb3JlIC8nKTsKKyAgICAgICAgYXNzZXJ0LmVxdWFs
KHRoaXMubWF0Y2hlZFsnLyddWzFdLCAnb24gLycpOworICAgICAgICBhc3NlcnQuZXF1YWwodGhp
cy5tYXRjaGVkWycvJ11bMl0sICdhZnRlciAvJyk7CisgICAgICB9LAorICAgICAgIi9mb28vYmFy
L2J1enoiOiBmdW5jdGlvbiAocm91dGVyKSB7CisgICAgICAgIGFzc2VydC5pc1RydWUocm91dGVy
LmRpc3BhdGNoKCdvbicsICcvZm9vL2Jhci9idXp6JykpOworCisgICAgICAgIGFzc2VydC5lcXVh
bCh0aGlzLm1hdGNoZWQuZm9vWzBdLCAnZm9vIGJhciBidXp6Jyk7CisgICAgICAgIGFzc2VydC5l
cXVhbCh0aGlzLm1hdGNoZWQuZm9vWzFdLCAnYmVmb3JlIGZvbyBiYXInKTsKKyAgICAgICAgYXNz
ZXJ0LmVxdWFsKHRoaXMubWF0Y2hlZC5mb29bMl0sICdmb28gYmFyJyk7CisgICAgICAgIGFzc2Vy
dC5lcXVhbCh0aGlzLm1hdGNoZWQuZm9vWzNdLCAnYmVmb3JlIGZvbycpOworICAgICAgICBhc3Nl
cnQuZXF1YWwodGhpcy5tYXRjaGVkLmZvb1s0XSwgJ29uIGZvbycpOworICAgICAgfSwKKyAgICAg
ICIvZm9vL2JhcmJpZSI6IGZ1bmN0aW9uIChyb3V0ZXIpIHsKKyAgICAgICAgYXNzZXJ0LmlzVHJ1
ZShyb3V0ZXIuZGlzcGF0Y2goJ29uJywgJy9mb28vYmFyYmllJykpOworICAgICAgICBhc3NlcnQu
ZXF1YWwodGhpcy5tYXRjaGVkWydmKiddWzBdLCAnZiogYmFyYmllJyk7CisgICAgICB9LAorICAg
ICAgIi9mb28vYmFyYmllLyI6IGZ1bmN0aW9uIChyb3V0ZXIpIHsKKyAgICAgICAgYXNzZXJ0Lmlz
RmFsc2Uocm91dGVyLmRpc3BhdGNoKCdvbicsICcvZm9vL2JhcmJpZS8nKSk7CisgICAgICB9LAor
ICAgICAgIi9mb28vQkFEIjogZnVuY3Rpb24gKHJvdXRlcikgeworICAgICAgICBhc3NlcnQuaXNG
YWxzZShyb3V0ZXIuZGlzcGF0Y2goJ29uJywgJy9mb28vQkFEJykpOworICAgICAgfSwKKyAgICAg
ICIvYmFyL2JhciI6IGZ1bmN0aW9uIChyb3V0ZXIpIHsKKyAgICAgICAgYXNzZXJ0LmlzRmFsc2Uo
cm91dGVyLmRpc3BhdGNoKCdvbicsICcvYmFyL2JhcicpKTsKKyAgICAgIH0sCisgICAgICAid2l0
aCB0aGUgc3RyaWN0IG9wdGlvbiBkaXNhYmxlZCI6IHsKKyAgICAgICAgdG9waWM6IGZ1bmN0aW9u
IChyb3V0ZXIpIHsKKyAgICAgICAgICByZXR1cm4gcm91dGVyLmNvbmZpZ3VyZSh7CisgICAgICAg
ICAgICByZWN1cnNlOiAnYmFja3dhcmQnLAorICAgICAgICAgICAgc3RyaWN0OiBmYWxzZQorICAg
ICAgICAgIH0pOworICAgICAgICB9LAorICAgICAgICAic2hvdWxkIGhhdmUgdGhlIHByb3BlciBj
b25maWd1cmF0aW9uIHNldCI6IGZ1bmN0aW9uIChyb3V0ZXIpIHsKKyAgICAgICAgICBhc3NlcnQu
aXNGYWxzZShyb3V0ZXIuc3RyaWN0KTsKKyAgICAgICAgfSwKKyAgICAgICAgIi9mb28vYmFyYmll
LyI6IGZ1bmN0aW9uIChyb3V0ZXIpIHsKKyAgICAgICAgICBhc3NlcnQuaXNUcnVlKHJvdXRlci5k
aXNwYXRjaCgnb24nLCAnL2Zvby9iYXJiaWUvJykpOworICAgICAgICAgIGFzc2VydC5lcXVhbCh0
aGlzLm1hdGNoZWRbJ2YqJ11bMF0sICdmKiBiYXJiaWUnKTsKKyAgICAgICAgfSwKKyAgICAgICAg
Ii9mb28vYmFyL2J1enoiOiBmdW5jdGlvbiAocm91dGVyKSB7CisgICAgICAgICAgYXNzZXJ0Lmlz
VHJ1ZShyb3V0ZXIuZGlzcGF0Y2goJ29uJywgJy9mb28vYmFyL2J1enonKSk7CisKKyAgICAgICAg
ICBhc3NlcnQuZXF1YWwodGhpcy5tYXRjaGVkLmZvb1swXSwgJ2ZvbyBiYXIgYnV6eicpOworICAg
ICAgICAgIGFzc2VydC5lcXVhbCh0aGlzLm1hdGNoZWQuZm9vWzFdLCAnYmVmb3JlIGZvbyBiYXIn
KTsKKyAgICAgICAgICBhc3NlcnQuZXF1YWwodGhpcy5tYXRjaGVkLmZvb1syXSwgJ2ZvbyBiYXIn
KTsKKyAgICAgICAgICBhc3NlcnQuZXF1YWwodGhpcy5tYXRjaGVkLmZvb1szXSwgJ2JlZm9yZSBm
b28nKTsKKyAgICAgICAgICBhc3NlcnQuZXF1YWwodGhpcy5tYXRjaGVkLmZvb1s0XSwgJ29uIGZv
bycpOworICAgICAgICB9LAorICAgICAgfQorICAgIH0KKyAgfQorfSkuZXhwb3J0KG1vZHVsZSk7
CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvZGlyZWN0b3IvdGVz
dC9zZXJ2ZXIvY29yZS9pbnNlcnQtdGVzdC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9k
dWxlcy9kaXJlY3Rvci90ZXN0L3NlcnZlci9jb3JlL2luc2VydC10ZXN0LmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmM4MjhkZDliYWM5Yzk2OTMwODExNDhjOGY2ZWEwMGIyZTcyNTJmNjgKLS0tIC9kZXYvbnVsbAor
KysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvZGlyZWN0b3IvdGVzdC9zZXJ2ZXIv
Y29yZS9pbnNlcnQtdGVzdC5qcwpAQCAtMCwwICsxLDQ1IEBACisvKgorICogaW5zZXJ0LXRlc3Qu
anM6IFRlc3RzIGZvciBpbnNlcnRpbmcgcm91dGVzIGludG8gYSBub3JtYWxpemVkIHJvdXRpbmcg
dGFibGUuCisgKgorICogKEMpIDIwMTEsIENoYXJsaWUgUm9iYmlucywgUGFvbG8gRnJhZ29tZW5p
LCAmIHRoZSBDb250cmlidXRvcnMuCisgKiBNSVQgTElDRU5TRQorICoKKyAqLworCit2YXIgYXNz
ZXJ0ID0gcmVxdWlyZSgnYXNzZXJ0JyksCisgICAgdm93cyA9IHJlcXVpcmUoJ3Zvd3MnKSwKKyAg
ICBkaXJlY3RvciA9IHJlcXVpcmUoJy4uLy4uLy4uL2xpYi9kaXJlY3RvcicpOworCit2b3dzLmRl
c2NyaWJlKCdkaXJlY3Rvci9jb3JlL2luc2VydCcpLmFkZEJhdGNoKHsKKyAgIkFuIGluc3RhbmNl
IG9mIGRpcmVjdG9yLlJvdXRlciI6IHsKKyAgICB0b3BpYzogbmV3IGRpcmVjdG9yLlJvdXRlcigp
LAorICAgICJ0aGUgaW5zZXJ0KCkgbWV0aG9kIjogeworICAgICAgIidvbicsIFsnZm9vJywgJ2Jh
ciddIjogZnVuY3Rpb24gKHJvdXRlcikgeworICAgICAgICBmdW5jdGlvbiByb3V0ZSAoKSB7IH0K
KworICAgICAgICByb3V0ZXIuaW5zZXJ0KCdvbicsIFsnZm9vJywgJ2JhciddLCByb3V0ZSk7Cisg
ICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyb3V0ZXIucm91dGVzLmZvby5iYXIub24sIHJvdXRl
KTsKKyAgICAgIH0sCisgICAgICAiJ29uJywgWydmb28nLCAnYmFyJ10gYWdhaW4iOiBmdW5jdGlv
biAocm91dGVyKSB7CisgICAgICAgIGZ1bmN0aW9uIHJvdXRlICgpIHsgfQorCisgICAgICAgIHJv
dXRlci5pbnNlcnQoJ29uJywgWydmb28nLCAnYmFyJ10sIHJvdXRlKTsKKyAgICAgICAgYXNzZXJ0
LmlzQXJyYXkocm91dGVyLnJvdXRlcy5mb28uYmFyLm9uKTsKKyAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKHJvdXRlci5yb3V0ZXMuZm9vLmJhci5vbi5sZW5ndGgsIDIpOworICAgICAgfSwKKyAg
ICAgICInb24nLCBbJ2ZvbycsICdiYXInXSBhIHRoaXJkIHRpbWUiOiBmdW5jdGlvbiAocm91dGVy
KSB7CisgICAgICAgIGZ1bmN0aW9uIHJvdXRlICgpIHsgfQorCisgICAgICAgIHJvdXRlci5pbnNl
cnQoJ29uJywgWydmb28nLCAnYmFyJ10sIHJvdXRlKTsKKyAgICAgICAgYXNzZXJ0LmlzQXJyYXko
cm91dGVyLnJvdXRlcy5mb28uYmFyLm9uKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJv
dXRlci5yb3V0ZXMuZm9vLmJhci5vbi5sZW5ndGgsIDMpOworICAgICAgfSwKKyAgICAgICInZ2V0
JywgWydmaXp6JywgJ2J1enonXSI6IGZ1bmN0aW9uIChyb3V0ZXIpIHsKKyAgICAgICAgZnVuY3Rp
b24gcm91dGUgKCkgeyB9CisKKyAgICAgICAgcm91dGVyLmluc2VydCgnZ2V0JywgWydmaXp6Jywg
J2J1enonXSwgcm91dGUpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocm91dGVyLnJvdXRl
cy5maXp6LmJ1enouZ2V0LCByb3V0ZSk7CisgICAgICB9CisgICAgfQorICB9Cit9KS5leHBvcnQo
bW9kdWxlKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9kaXJl
Y3Rvci90ZXN0L3NlcnZlci9jb3JlL21vdW50LXRlc3QuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9u
b2RlX21vZHVsZXMvZGlyZWN0b3IvdGVzdC9zZXJ2ZXIvY29yZS9tb3VudC10ZXN0LmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjQ3ZWFjNGFjMGY3ODdjMjljZjMxZGU4ZWFhYWQ4ZDczYmFlMTFhMmEKLS0tIC9kZXYv
bnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvZGlyZWN0b3IvdGVzdC9z
ZXJ2ZXIvY29yZS9tb3VudC10ZXN0LmpzCkBAIC0wLDAgKzEsMTE3IEBACisvKgorICogbW91bnQt
dGVzdC5qczogVGVzdHMgZm9yIG1vdW50aW5nIGFuZCBub3JtYWxpemluZyByb3V0ZXMgaW50byBh
IFJvdXRlciBpbnN0YW5jZS4KKyAqCisgKiAoQykgMjAxMSwgQ2hhcmxpZSBSb2JiaW5zLCBQYW9s
byBGcmFnb21lbmksICYgdGhlIENvbnRyaWJ1dG9ycy4KKyAqIE1JVCBMSUNFTlNFCisgKgorICov
CisKK3ZhciBhc3NlcnQgPSByZXF1aXJlKCdhc3NlcnQnKSwKKyAgICB2b3dzID0gcmVxdWlyZSgn
dm93cycpLAorICAgIGRpcmVjdG9yID0gcmVxdWlyZSgnLi4vLi4vLi4vbGliL2RpcmVjdG9yJyk7
CisKK2Z1bmN0aW9uIGFzc2VydFJvdXRlIChmbiwgcGF0aCwgcm91dGUpIHsKKyAgaWYgKHBhdGgu
bGVuZ3RoID09PSAxKSB7CisgICAgcmV0dXJuIGFzc2VydC5zdHJpY3RFcXVhbChyb3V0ZVtwYXRo
LnNoaWZ0KCldLCBmbik7CisgIH0KKworICByb3V0ZSA9IHJvdXRlW3BhdGguc2hpZnQoKV07Cisg
IGFzc2VydC5pc09iamVjdChyb3V0ZSk7CisgIGFzc2VydFJvdXRlKGZuLCBwYXRoLCByb3V0ZSk7
Cit9CisKK3Zvd3MuZGVzY3JpYmUoJ2RpcmVjdG9yL2NvcmUvbW91bnQnKS5hZGRCYXRjaCh7Cisg
ICJBbiBpbnN0YW5jZSBvZiBkaXJlY3Rvci5Sb3V0ZXIiOiB7CisgICAgIndpdGggbm8gcHJlY29u
ZmlndXJlZCBwYXJhbXMiOiB7CisgICAgICB0b3BpYzogbmV3IGRpcmVjdG9yLlJvdXRlcigpLAor
ICAgICAgInRoZSBtb3VudCgpIG1ldGhvZCI6IHsKKyAgICAgICAgInNob3VsZCBzYW5pdGl6ZSB0
aGUgcm91dGVzIGNvcnJlY3RseSI6IGZ1bmN0aW9uIChyb3V0ZXIpIHsKKyAgICAgICAgICBmdW5j
dGlvbiBmb29iYXIgKCkgeyB9CisgICAgICAgICAgZnVuY3Rpb24gZm9vc3RhciAoKSB7IH0KKyAg
ICAgICAgICBmdW5jdGlvbiBmb29iYXp6YnV6eiAoKSB7IH0KKyAgICAgICAgICBmdW5jdGlvbiBm
b29kb2cgKCkgeyB9CisgICAgICAgICAgZnVuY3Rpb24gcm9vdCAoKSB7fQorICAgICAgICAgIHZh
ciBmbkFycmF5ID0gW2Zvb2JhciwgZm9vc3Rhcl07CisKKyAgICAgICAgICByb3V0ZXIubW91bnQo
eworICAgICAgICAgICAgJy8nOiB7CisgICAgICAgICAgICAgIGJlZm9yZTogcm9vdCwKKyAgICAg
ICAgICAgICAgb246IHJvb3QsCisgICAgICAgICAgICAgIGFmdGVyOiByb290LAorICAgICAgICAg
ICAgICAnL25lc3RpbmcnOiB7CisgICAgICAgICAgICAgICAgb246IGZvb2JhciwKKyAgICAgICAg
ICAgICAgICAnL2RlZXAnOiBmb29zdGFyCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0s
CisgICAgICAgICAgICAnL2Zvbyc6IHsKKyAgICAgICAgICAgICAgJy9iYXInOiBmb29iYXIsCisg
ICAgICAgICAgICAgICcvKic6IGZvb3N0YXIsCisgICAgICAgICAgICAgICcvaml0c3UvdGhlbic6
IHsKKyAgICAgICAgICAgICAgICBiZWZvcmU6IGZvb2JhcgorICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgJy9mb28vYmF6eic6IHsKKyAgICAgICAgICAgICAgJy9i
dXp6JzogZm9vYmF6emJ1enoKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAnL2Zvby9qaXRz
dSc6IHsKKyAgICAgICAgICAgICAgJy90aGVuJzogZm5BcnJheQorICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgICcvZm9vL2ppdHN1L3RoZW4vbm93JzogZm9vc3RhciwKKyAgICAgICAgICAgICcv
Zm9vLzpkb2cnOiBmb29kb2cKKyAgICAgICAgICB9KTsKKworICAgICAgICAgIGFzc2VydFJvdXRl
KHJvb3QsICAgICAgICBbJ29uJ10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByb3V0ZXIucm91dGVzKTsKKyAgICAgICAgICBhc3NlcnRSb3V0ZShyb290LCAgICAgICAgWydh
ZnRlciddLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVyLnJvdXRlcyk7
CisgICAgICAgICAgYXNzZXJ0Um91dGUocm9vdCwgICAgICAgIFsnYmVmb3JlJ10sICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlci5yb3V0ZXMpOworICAgICAgICAgIGFzc2Vy
dFJvdXRlKGZvb2JhciwgICAgICBbJ25lc3RpbmcnLCAnb24nXSwgICAgICAgICAgICAgICAgICAg
ICAgICAgICByb3V0ZXIucm91dGVzKTsKKyAgICAgICAgICBhc3NlcnRSb3V0ZShmb29zdGFyLCAg
ICAgWyduZXN0aW5nJywgJ2RlZXAnLCAnb24nXSwgICAgICAgICAgICAgICAgICAgcm91dGVyLnJv
dXRlcyk7CisgICAgICAgICAgYXNzZXJ0Um91dGUoZm9vYmFyLCAgICAgIFsgJ2ZvbycsICdiYXIn
LCAnb24nXSwgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlci5yb3V0ZXMpOworICAgICAgICAg
IGFzc2VydFJvdXRlKGZvb3N0YXIsICAgICBbJ2ZvbycsICcoW18uKCkhXFwgJUAmYS16QS1aMC05
LV0rKScsICdvbiddLCByb3V0ZXIucm91dGVzKTsKKyAgICAgICAgICBhc3NlcnRSb3V0ZShmbkFy
cmF5LCAgICAgWydmb28nLCAnaml0c3UnLCAndGhlbicsICdvbiddLCAgICAgICAgICAgICAgcm91
dGVyLnJvdXRlcyk7CisgICAgICAgICAgYXNzZXJ0Um91dGUoZm9vYmFyLCAgICAgIFsnZm9vJywg
J2ppdHN1JywgJ3RoZW4nLCAnYmVmb3JlJ10sICAgICAgICAgIHJvdXRlci5yb3V0ZXMpOworICAg
ICAgICAgIGFzc2VydFJvdXRlKGZvb2JhenpidXp6LCBbJ2ZvbycsICdiYXp6JywgJ2J1enonLCAn
b24nXSwgICAgICAgICAgICAgICByb3V0ZXIucm91dGVzKTsKKyAgICAgICAgICBhc3NlcnRSb3V0
ZShmb29zdGFyLCAgICAgWydmb28nLCAnaml0c3UnLCAndGhlbicsICdub3cnLCAnb24nXSwgICAg
ICAgcm91dGVyLnJvdXRlcyk7CisgICAgICAgICAgYXNzZXJ0Um91dGUoZm9vZG9nLCAgICAgIFsn
Zm9vJywgJyhbLl9hLXpBLVowLTktJSgpXSspJywgJ29uJ10sICAgICByb3V0ZXIucm91dGVzKTsK
KyAgICAgICAgfSwKKworICAgICAgICAic2hvdWxkIGFjY2VwdCBzdHJpbmcgcGF0aCI6IGZ1bmN0
aW9uKHJvdXRlcikgeworICAgICAgICAgIGZ1bmN0aW9uIGRvZ3MgKCkgeyB9CisKKyAgICAgICAg
ICByb3V0ZXIubW91bnQoeworICAgICAgICAgICAgJy9kb2dzJzogeworICAgICAgICAgICAgICBv
bjogZG9ncworICAgICAgICAgICAgfQorICAgICAgICAgIH0sCisgICAgICAgICAgJy9hcGknKTsK
KworICAgICAgICAgIGFzc2VydFJvdXRlKGRvZ3MsIFsnYXBpJywgJ2RvZ3MnLCAnb24nXSwgcm91
dGVyLnJvdXRlcyk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LAorICAgICJ3aXRoIHByZWNv
bmZpZ3VyZWQgcGFyYW1zIjogeworICAgICAgdG9waWM6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
dmFyIHJvdXRlciA9IG5ldyBkaXJlY3Rvci5Sb3V0ZXIoKTsKKyAgICAgICAgcm91dGVyLnBhcmFt
KCdjaXR5JywgJyhbXFx3XFwtXSspJyk7CisgICAgICAgIHJvdXRlci5wYXJhbSgnOmNvdW50cnkn
LCAvKFtBLVpdW0EtWmEtel0rKS8pOworICAgICAgICByb3V0ZXIucGFyYW0oJzp6aXAnLCAvKFtc
ZF17NX0pLyk7CisgICAgICAgIHJldHVybiByb3V0ZXI7CisgICAgICB9LAorICAgICAgInNob3Vs
ZCBzYW5pdGl6ZSB0aGUgcm91dGVzIGNvcnJlY3RseSI6IGZ1bmN0aW9uIChyb3V0ZXIpIHsKKyAg
ICAgICAgZnVuY3Rpb24gdXNhQ2l0eVppcCAoKSB7IH0KKyAgICAgICAgZnVuY3Rpb24gY291bnRy
eUNpdHlaaXAgKCkgeyB9CisKKyAgICAgICAgcm91dGVyLm1vdW50KHsKKyAgICAgICAgICAnL3Vz
YS86Y2l0eS86emlwJzogdXNhQ2l0eVppcCwKKyAgICAgICAgICAnL3dvcmxkJzogeworICAgICAg
ICAgICAgJy86Y291bnRyeSc6IHsKKyAgICAgICAgICAgICAgJy86Y2l0eS86emlwJzogY291bnRy
eUNpdHlaaXAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0pOworCisgICAg
ICAgIGFzc2VydFJvdXRlKHVzYUNpdHlaaXAsIFsndXNhJywgJyhbXFx3XFwtXSspJywgJyhbXFxk
XXs1fSknLCAnb24nXSwgcm91dGVyLnJvdXRlcyk7CisgICAgICAgIGFzc2VydFJvdXRlKGNvdW50
cnlDaXR5WmlwLCBbJ3dvcmxkJywgJyhbQS1aXVtBLVphLXpdKyknLCAnKFtcXHdcXC1dKyknLCAn
KFtcXGRdezV9KScsICdvbiddLCByb3V0ZXIucm91dGVzKTsKKyAgICAgIH0KKyAgICB9CisgIH0K
K30pLmV4cG9ydChtb2R1bGUpOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9t
b2R1bGVzL2RpcmVjdG9yL3Rlc3Qvc2VydmVyL2NvcmUvb24tdGVzdC5qcyBiL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L3JlYWN0L25vZGVfbW9kdWxlcy9kaXJlY3Rvci90ZXN0L3NlcnZlci9jb3JlL29uLXRlc3QuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMjJlMTgyZGVjZDY3OTc2NDZjYjllZjMwMjVmNmM0N2ZjOTczY2FmNgotLS0g
L2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9kaXJlY3Rvci90
ZXN0L3NlcnZlci9jb3JlL29uLXRlc3QuanMKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIG9uLXRl
c3QuanM6IFRlc3RzIGZvciB0aGUgb24vcm91dGUgbWV0aG9kLgorICoKKyAqIChDKSAyMDExLCBD
aGFybGllIFJvYmJpbnMsIFBhb2xvIEZyYWdvbWVuaSwgJiB0aGUgQ29udHJpYnV0b3JzLgorICog
TUlUIExJQ0VOU0UKKyAqCisgKi8KKwordmFyIGFzc2VydCA9IHJlcXVpcmUoJ2Fzc2VydCcpLAor
ICAgIHZvd3MgPSByZXF1aXJlKCd2b3dzJyksCisgICAgZGlyZWN0b3IgPSByZXF1aXJlKCcuLi8u
Li8uLi9saWIvZGlyZWN0b3InKTsKKwordm93cy5kZXNjcmliZSgnZGlyZWN0b3IvY29yZS9pbnNl
cnQnKS5hZGRCYXRjaCh7CisgICJBbiBpbnN0YW5jZSBvZiBkaXJlY3Rvci5Sb3V0ZXIiOiB7Cisg
ICAgdG9waWM6IG5ldyBkaXJlY3Rvci5Sb3V0ZXIoKSwKKyAgICAidGhlIG9uKCkgbWV0aG9kIjog
eworICAgICAgIlsnZm9vJywgJ2JhciddIjogZnVuY3Rpb24gKHJvdXRlcikgeworICAgICAgICBm
dW5jdGlvbiBub29wICgpIHsgfQorCisgICAgICAgIHJvdXRlci5vbihbJ2ZvbycsICdiYXInXSwg
bm9vcCk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyb3V0ZXIucm91dGVzLmZvby5vbiwg
bm9vcCk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyb3V0ZXIucm91dGVzLmJhci5vbiwg
bm9vcCk7CisgICAgICB9LAorICAgICAgIidiYXonIjogZnVuY3Rpb24gKHJvdXRlcikgeworICAg
ICAgICBmdW5jdGlvbiBub29wICgpIHsgfQorCisgICAgICAgIHJvdXRlci5vbignYmF6Jywgbm9v
cCk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyb3V0ZXIucm91dGVzLmJhei5vbiwgbm9v
cCk7CisgICAgICB9LAorICAgICAgIidhZnRlcicsICdiYXonIjogZnVuY3Rpb24gKHJvdXRlcikg
eworICAgICAgICBmdW5jdGlvbiBub29wICgpIHsgfQorCisgICAgICAgIHJvdXRlci5vbignYWZ0
ZXInLCAnYm9vJywgbm9vcCk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyb3V0ZXIucm91
dGVzLmJvby5hZnRlciwgbm9vcCk7CisgICAgICB9CisgICAgfQorICB9Cit9KS5leHBvcnQobW9k
dWxlKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9kaXJlY3Rv
ci90ZXN0L3NlcnZlci9jb3JlL3BhdGgtdGVzdC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVf
bW9kdWxlcy9kaXJlY3Rvci90ZXN0L3NlcnZlci9jb3JlL3BhdGgtdGVzdC5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lYzMzMTNlMjc3MzJjZTA2ZDJlNTk5MDdlNWRlYWE3MDFjYWQ2OTVmCi0tLSAvZGV2L251bGwK
KysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL3Rlc3Qvc2VydmVy
L2NvcmUvcGF0aC10ZXN0LmpzCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBwYXRoLXRlc3QuanM6
IFRlc3RzIGZvciB0aGUgY29yZSBgLnBhdGgoKWAgbWV0aG9kLgorICoKKyAqIChDKSAyMDExLCBD
aGFybGllIFJvYmJpbnMsIFBhb2xvIEZyYWdvbWVuaSwgJiB0aGUgQ29udHJpYnV0b3JzLgorICog
TUlUIExJQ0VOU0UKKyAqCisgKi8KKwordmFyIGFzc2VydCA9IHJlcXVpcmUoJ2Fzc2VydCcpLAor
ICAgIHZvd3MgPSByZXF1aXJlKCd2b3dzJyksCisgICAgZGlyZWN0b3IgPSByZXF1aXJlKCcuLi8u
Li8uLi9saWIvZGlyZWN0b3InKTsKKwordm93cy5kZXNjcmliZSgnZGlyZWN0b3IvY29yZS9wYXRo
JykuYWRkQmF0Y2goeworICAiQW4gaW5zdGFuY2Ugb2YgZGlyZWN0b3IuUm91dGVyIjogeworICAg
IHRvcGljOiBmdW5jdGlvbiAoKSB7CisgICAgICB2YXIgdGhhdCA9IHRoaXM7CisgICAgICB0aGF0
Lm1hdGNoZWQgPSB7fTsKKyAgICAgIHRoYXQubWF0Y2hlZFsnZm9vJ10gPSBbXTsKKyAgICAgIHRo
YXQubWF0Y2hlZFsnbmV3eW9yayddID0gW107CisKKyAgICAgIHZhciByb3V0ZXIgPSBuZXcgZGly
ZWN0b3IuUm91dGVyKHsKKyAgICAgICAgJy9mb28nOiBmdW5jdGlvbiAoKSB7IHRoYXQubWF0Y2hl
ZFsnZm9vJ10ucHVzaCgnZm9vJyk7IH0KKyAgICAgIH0pOworICAgICAgcmV0dXJuIHJvdXRlcjsK
KyAgICB9LAorICAgICJ0aGUgcGF0aCgpIG1ldGhvZCI6IHsKKyAgICAgICJzaG91bGQgY3JlYXRl
IHRoZSBjb3JyZWN0IG5lc3RlZCByb3V0aW5nIHRhYmxlIjogZnVuY3Rpb24gKHJvdXRlcikgewor
ICAgICAgICB2YXIgdGhhdCA9IHRoaXM7CisgICAgICAgIHJvdXRlci5wYXRoKCcvcmVnaW9ucycs
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICB0aGlzLm9uKCcvOnN0YXRlJywgZnVuY3Rpb24oY291
bnRyeSkgeworICAgICAgICAgICAgdGhhdC5tYXRjaGVkWyduZXd5b3JrJ10ucHVzaCgnbmV3IHlv
cmsnKTsKKyAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgYXNzZXJ0LmlzRnVu
Y3Rpb24ocm91dGVyLnJvdXRlcy5mb28ub24pOworICAgICAgICBhc3NlcnQuaXNPYmplY3Qocm91
dGVyLnJvdXRlcy5yZWdpb25zKTsKKyAgICAgICAgYXNzZXJ0LmlzRnVuY3Rpb24ocm91dGVyLnJv
dXRlcy5yZWdpb25zWycoWy5fYS16QS1aMC05LSUoKV0rKSddLm9uKTsKKyAgICAgIH0sCisgICAg
ICAic2hvdWxkIGRpc3BhdGNoIHRoZSBmdW5jdGlvbiBjb3JyZWN0bHkiOiBmdW5jdGlvbiAocm91
dGVyKSB7CisgICAgICAgIHJvdXRlci5kaXNwYXRjaCgnb24nLCAnL3JlZ2lvbnMvbmV3eW9yaycp
CisgICAgICAgIHJvdXRlci5kaXNwYXRjaCgnb24nLCAnL2ZvbycpOworICAgICAgICBhc3NlcnQu
ZXF1YWwodGhpcy5tYXRjaGVkWydmb28nXS5sZW5ndGgsIDEpOworICAgICAgICBhc3NlcnQuZXF1
YWwodGhpcy5tYXRjaGVkWyduZXd5b3JrJ10ubGVuZ3RoLCAxKTsKKyAgICAgICAgYXNzZXJ0LmVx
dWFsKHRoaXMubWF0Y2hlZFsnZm9vJ11bMF0sICdmb28nKTsKKyAgICAgICAgYXNzZXJ0LmVxdWFs
KHRoaXMubWF0Y2hlZFsnbmV3eW9yayddWzBdLCAnbmV3IHlvcmsnKTsKKyAgICAgIH0KKyAgICB9
CisgIH0KK30pLmV4cG9ydChtb2R1bGUpOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qv
bm9kZV9tb2R1bGVzL2RpcmVjdG9yL3Rlc3Qvc2VydmVyL2NvcmUvcmVnaWZ5c3RyaW5nLXRlc3Qu
anMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvZGlyZWN0b3IvdGVzdC9zZXJ2ZXIv
Y29yZS9yZWdpZnlzdHJpbmctdGVzdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMDc1Nzg4NWVhZDEyMDA1MDkx
NGI2MDQ1MWMyMTFiZmYxNWVjN2U0Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVh
Y3Qvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL3Rlc3Qvc2VydmVyL2NvcmUvcmVnaWZ5c3RyaW5nLXRl
c3QuanMKQEAgLTAsMCArMSwxMTcgQEAKKwordmFyIGFzc2VydCA9IHJlcXVpcmUoJ2Fzc2VydCcp
LAorICAgIHZvd3MgPSByZXF1aXJlKCd2b3dzJyksCisgICAgZGlyZWN0b3IgPSByZXF1aXJlKCcu
Li8uLi8uLi9saWIvZGlyZWN0b3InKTsKKwordmFyIGNhbGxiYWNrID0gZnVuY3Rpb24oKSB7Cisg
IHJldHVybiB0cnVlOworfTsKKwordmFyIHRlc3RSb3V0ZSA9IGZ1bmN0aW9uKHJvdXRlLCBjYWxs
YmFjaykgeworICB2YXIgcm91dGVyID0gbmV3IGRpcmVjdG9yLlJvdXRlcigpOworICByb3V0ZXIu
b24ocm91dGUsIGNhbGxiYWNrKTsKKworICByZXR1cm4gZnVuY3Rpb24odmFsdWUpIHsKKyAgICBy
ZXR1cm4gcm91dGVyLmRpc3BhdGNoKCdvbicsIHZhbHVlKTsKKyAgfTsKK307CisKK3Zvd3MuZGVz
Y3JpYmUoJ2RpcmVjdG9yL2NvcmUvcmVnaWZ5U3RyaW5nJykuYWRkQmF0Y2goeworCisgICdXaGVu
IHVzaW5nICIvaG9tZSguKikiJzogeworICAgIHRvcGljOiBmdW5jdGlvbigpIHsKKyAgICAgIHJl
dHVybiB0ZXN0Um91dGUoJy9ob21lKC4qKScsIGNhbGxiYWNrKTsKKyAgICB9LAorCisgICAgJ1No
b3VsZCBtYXRjaCAiL2hvbWVwYWdlIic6IGZ1bmN0aW9uKHJlc3VsdCkgeworICAgICAgYXNzZXJ0
LmlzVHJ1ZShyZXN1bHQoJy9ob21lcGFnZScpKTsKKyAgICB9LAorCisgICAgJ1Nob3VsZCBtYXRj
aCAiL2hvbWUvcGFnZSInOiBmdW5jdGlvbihyZXN1bHQpIHsKKyAgICAgIGFzc2VydC5pc1RydWUo
cmVzdWx0KCcvaG9tZS9wYWdlJykpOworICAgIH0sCisKKyAgICAnU2hvdWxkIG5vdCBtYXRjaCAi
L2Zvby1iYXIiJzogZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgICBhc3NlcnQuaXNGYWxzZShyZXN1
bHQoJy9mb28tYmFyJykpOworICAgIH0KKyAgfSwKKworICAnV2hlbiB1c2luZyAiL2hvbWUuKiIn
OiB7CisgICAgdG9waWM6IGZ1bmN0aW9uKCkgeworICAgICAgcmV0dXJuIHRlc3RSb3V0ZSgnL2hv
bWUuKicsIGNhbGxiYWNrKTsKKyAgICB9LAorCisgICAgJ1Nob3VsZCBtYXRjaCAiL2hvbWVwYWdl
Iic6IGZ1bmN0aW9uKHJlc3VsdCkgeworICAgICAgYXNzZXJ0LmlzVHJ1ZShyZXN1bHQoJy9ob21l
cGFnZScpKTsKKyAgICB9LAorCisgICAgJ1Nob3VsZCBtYXRjaCAiL2hvbWUvcGFnZSInOiBmdW5j
dGlvbihyZXN1bHQpIHsKKyAgICAgIGFzc2VydC5pc1RydWUocmVzdWx0KCcvaG9tZS9wYWdlJykp
OworICAgIH0sCisKKyAgICAnU2hvdWxkIG5vdCBtYXRjaCAiL2Zvby1iYXIiJzogZnVuY3Rpb24o
cmVzdWx0KSB7CisgICAgICBhc3NlcnQuaXNGYWxzZShyZXN1bHQoJy9mb28tYmFyJykpOworICAg
IH0KKyAgfSwKKworICAnV2hlbiB1c2luZyAiL2hvbWUocGFnZVswLTldKSoiJzogeworICAgIHRv
cGljOiBmdW5jdGlvbigpIHsKKyAgICAgIHJldHVybiB0ZXN0Um91dGUoJy9ob21lKHBhZ2VbMC05
XSkqJywgY2FsbGJhY2spOworICAgIH0sCisKKyAgICAnU2hvdWxkIG1hdGNoICIvaG9tZSInOiBm
dW5jdGlvbihyZXN1bHQpIHsKKyAgICAgIGFzc2VydC5pc1RydWUocmVzdWx0KCcvaG9tZScpKTsK
KyAgICB9LAorCisgICAgJ1Nob3VsZCBtYXRjaCAiL2hvbWVwYWdlMCIsICIvaG9tZXBhZ2UxIiwg
ZXRjLic6IGZ1bmN0aW9uKHJlc3VsdCkgeworICAgICAgZm9yIChpID0gMDsgaSA8IDEwOyBpKysp
IHsKKyAgICAgICAgYXNzZXJ0LmlzVHJ1ZShyZXN1bHQoJy9ob21lcGFnZScgKyBpKSk7CisgICAg
ICB9CisgICAgfSwKKworICAgICdTaG91bGQgbm90IG1hdGNoICIvaG9tZV9wYWdlIic6IGZ1bmN0
aW9uKHJlc3VsdCkgeworICAgICAgYXNzZXJ0LmlzRmFsc2UocmVzdWx0KCcvaG9tZV9wYWdlJykp
OworICAgIH0sCisKKyAgICAnU2hvdWxkIG5vdCBtYXRjaCAiL2hvbWUvcGFnZSInOiBmdW5jdGlv
bihyZXN1bHQpIHsKKyAgICAgIGFzc2VydC5pc0ZhbHNlKHJlc3VsdCgnL2hvbWUvcGFnZScpKTsK
KyAgICB9CisgIH0sCisKKyAgJ1doZW4gdXNpbmcgIi9ob21lKiInOiB7CisgICAgdG9waWM6IGZ1
bmN0aW9uKCkgeworICAgICAgcmV0dXJuIHRlc3RSb3V0ZSgnL2hvbWUqJywgY2FsbGJhY2spOwor
ICAgIH0sCisKKyAgICAnU2hvdWxkIG1hdGNoICIvaG9tZXBhZ2UiJzogZnVuY3Rpb24ocmVzdWx0
KSB7CisgICAgICBhc3NlcnQuaXNUcnVlKHJlc3VsdCgnL2hvbWVwYWdlJykpOworICAgIH0sCisK
KyAgICAnU2hvdWxkIG1hdGNoICIvaG9tZV9wYWdlIic6IGZ1bmN0aW9uKHJlc3VsdCkgeworICAg
ICAgYXNzZXJ0LmlzVHJ1ZShyZXN1bHQoJy9ob21lX3BhZ2UnKSk7CisgICAgfSwKKworICAgICdT
aG91bGQgbWF0Y2ggIi9ob21lLXBhZ2UiJzogZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgICBhc3Nl
cnQuaXNUcnVlKHJlc3VsdCgnL2hvbWUtcGFnZScpKTsKKyAgICB9LAorCisgICAgJ1Nob3VsZCBu
b3QgbWF0Y2ggIi9ob21lL3BhZ2UiJzogZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgICBhc3NlcnQu
aXNGYWxzZShyZXN1bHQoJy9ob21lL3BhZ2UnKSk7CisgICAgfQorICB9LAorICAnV2hlbiB1c2lu
ZyAiL2ZvbGRlci86OmhvbWUiJzogeworICAgIHRvcGljOiBmdW5jdGlvbigpIHsKKyAgICAgIHJl
dHVybiB0ZXN0Um91dGUoJy9mb2xkZXIvOjpob21lJywgY2FsbGJhY2spOworICAgIH0sCisgICAg
J1Nob3VsZCBtYXRjaCAiL2ZvbGRlci86aG9tZSInOiBmdW5jdGlvbihyZXN1bHQpIHsKKyAgICAg
IGFzc2VydC5pc1RydWUocmVzdWx0KCcvZm9sZGVyLzpob21lJykpOworICAgIH0sCisgICAgJ1No
b3VsZCBub3QgbWF0Y2ggIi9mb2xkZXIvOjpob21lIic6IGZ1bmN0aW9uKHJlc3VsdCkgeworICAg
ICAgYXNzZXJ0LmlzRmFsc2UocmVzdWx0KCcvZm9sZGVyLzo6aG9tZScpKTsKKyAgICB9LAorICAg
ICdTaG91bGQgbm90IG1hdGNoICIvZm9sZGVyL2FiYyIgKHRoZSBjYXRjaGFsbCByZWdleHApJzog
ZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgICBhc3NlcnQuaXNGYWxzZShyZXN1bHQoJy9mb2xkZXIv
YWJjJykpOworICAgIH0KKyAgfQorCit9KS5leHBvcnQobW9kdWxlKTsKZGlmZiAtLWdpdCBhL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9kaXJlY3Rvci90ZXN0L3NlcnZlci9oZWxwZXJz
L2luZGV4LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL3Rlc3Qv
c2VydmVyL2hlbHBlcnMvaW5kZXguanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjEwNGRhNjliOWQ5YTRjMzJlNzVk
Yjc4ZmQ2YmMzYzgxZjc1ZDQyNgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0
L25vZGVfbW9kdWxlcy9kaXJlY3Rvci90ZXN0L3NlcnZlci9oZWxwZXJzL2luZGV4LmpzCkBAIC0w
LDAgKzEsNTIgQEAKKy8qCisgKiBpbmRleC5qczogVGVzdCBoZWxwZXJzIGZvciBkaXJlY3Rvci4K
KyAqCisgKiAoQykgMjAxMSwgQ2hhcmxpZSBSb2JiaW5zLCBQYW9sbyBGcmFnb21lbmksICYgdGhl
IENvbnRyaWJ1dG9ycy4KKyAqIE1JVCBMSUNFTlNFCisgKgorICovCisKK3ZhciBodHRwID0gcmVx
dWlyZSgnaHR0cCcpOworCitleHBvcnRzLmNyZWF0ZVNlcnZlciA9IGZ1bmN0aW9uIChyb3V0ZXIp
IHsKKyAgcmV0dXJuIGh0dHAuY3JlYXRlU2VydmVyKGZ1bmN0aW9uIChyZXEsIHJlcykgeworICAg
IHJvdXRlci5kaXNwYXRjaChyZXEsIHJlcywgZnVuY3Rpb24gKGVycikgeworICAgICAgaWYgKGVy
cikgeworICAgICAgICByZXMud3JpdGVIZWFkKDQwNCk7CisgICAgICAgIHJlcy5lbmQoKTsKKyAg
ICAgIH0KKyAgICB9KTsKKyAgfSk7Cit9OworCitleHBvcnRzLmhhbmRsZXJzID0geworICByZXNw
b25kV2l0aElkOiBmdW5jdGlvbiAoaWQpIHsKKyAgICB0aGlzLnJlcy53cml0ZUhlYWQoMjAwLCB7
ICdDb250ZW50LVR5cGUnOiAndGV4dC9wbGFpbicgfSkKKyAgICB0aGlzLnJlcy5lbmQoJ2hlbGxv
IGZyb20gKCcgKyBpZCArICcpJyk7CisgIH0sCisgIHJlc3BvbmRXaXRoRGF0YTogZnVuY3Rpb24g
KCkgeworICAgIHRoaXMucmVzLndyaXRlSGVhZCgyMDAsIHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBs
aWNhdGlvbi9qc29uJyB9KQorICAgIHRoaXMucmVzLmVuZChKU09OLnN0cmluZ2lmeSh0aGlzLmRh
dGEpKTsKKyAgfSwKKyAgcmVzcG9uZFdpdGhPazogZnVuY3Rpb24gKCkgeworICAgIHJldHVybiBm
dW5jdGlvbiAoKSB7CisgICAgICB0aGlzLnJlcy53cml0ZUhlYWQoMjAwKTsKKyAgICAgIHRoaXMu
cmVzLmVuZCgnb2snKTsKKyAgICB9OworICB9LAorICBzdHJlYW1Cb2R5OiBmdW5jdGlvbiAoKSB7
CisgICAgdmFyIGJvZHkgPSAnJywKKyAgICAgICAgcmVzID0gdGhpcy5yZXM7CisKKyAgICB0aGlz
LnJlcS5vbignZGF0YScsIGZ1bmN0aW9uIChjaHVuaykgeworICAgICAgYm9keSArPSBjaHVuazsK
KyAgICB9KTsKKworICAgIHRoaXMucmVxLm9uKCdlbmQnLCBmdW5jdGlvbiAoKSB7CisgICAgICBy
ZXMud3JpdGVIZWFkKDIwMCwgeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0p
OworICAgICAgcmVzLmVuZChib2R5KTsKKyAgICB9KTsKKyAgfQorfTsKKworZXhwb3J0cy5tYWNy
b3MgPSByZXF1aXJlKCcuL21hY3JvcycpOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qv
bm9kZV9tb2R1bGVzL2RpcmVjdG9yL3Rlc3Qvc2VydmVyL2hlbHBlcnMvbWFjcm9zLmpzIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL3Rlc3Qvc2VydmVyL2hlbHBlcnMv
bWFjcm9zLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5N2ExN2UxMTliNDhmYjMyYWUwYzI3ODAwODJmYWYyZmVm
Njg2NGMKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMv
ZGlyZWN0b3IvdGVzdC9zZXJ2ZXIvaGVscGVycy9tYWNyb3MuanMKQEAgLTAsMCArMSw1NSBAQAor
LyoKKyAqIG1hY3Jvcy5qczogVGVzdCBtYWNyb3MgZm9yIGRpcmVjdG9yIHRlc3RzLgorICoKKyAq
IChDKSAyMDExLCBDaGFybGllIFJvYmJpbnMsIFBhb2xvIEZyYWdvbWVuaSwgJiB0aGUgQ29udHJp
YnV0b3JzLgorICogTUlUIExJQ0VOU0UKKyAqCisgKi8KKwordmFyIGFzc2VydCA9IHJlcXVpcmUo
J2Fzc2VydCcpLAorICAgIHJlcXVlc3QgPSByZXF1aXJlKCdyZXF1ZXN0Jyk7CisKK2V4cG9ydHMu
YXNzZXJ0R2V0ID0gZnVuY3Rpb24ocG9ydCwgdXJpLCBleHBlY3RlZCkgeworICB2YXIgY29udGV4
dCA9IHsKKyAgICB0b3BpYzogZnVuY3Rpb24gKCkgeworICAgICAgcmVxdWVzdCh7IHVyaTogJ2h0
dHA6Ly9sb2NhbGhvc3Q6JyArIHBvcnQgKyAnLycgKyB1cmkgfSwgdGhpcy5jYWxsYmFjayk7Cisg
ICAgfQorICB9OworCisgIGNvbnRleHRbJ3Nob3VsZCByZXNwb25kIHdpdGggYCcgKyBleHBlY3Rl
ZCArICdgJ10gPSBmdW5jdGlvbiAoZXJyLCByZXMsIGJvZHkpIHsKKyAgICBhc3NlcnQuaXNOdWxs
KGVycik7CisgICAgYXNzZXJ0LmVxdWFsKHJlcy5zdGF0dXNDb2RlLCAyMDApOworICAgIGFzc2Vy
dC5lcXVhbChib2R5LCBleHBlY3RlZCk7CisgIH07CisKKyAgcmV0dXJuIGNvbnRleHQ7Cit9Owor
CitleHBvcnRzLmFzc2VydDQwNCA9IGZ1bmN0aW9uIChwb3J0LCB1cmkpIHsKKyAgcmV0dXJuIHsK
KyAgICB0b3BpYzogZnVuY3Rpb24gKCkgeworICAgICAgcmVxdWVzdCh7IHVyaTogJ2h0dHA6Ly9s
b2NhbGhvc3Q6JyArIHBvcnQgKyAnLycgKyB1cmkgfSwgdGhpcy5jYWxsYmFjayk7CisgICAgfSwK
KyAgICAic2hvdWxkIHJlc3BvbmQgd2l0aCA0MDQiOiBmdW5jdGlvbiAoZXJyLCByZXMsIGJvZHkp
IHsKKyAgICAgIGFzc2VydC5pc051bGwoZXJyKTsKKyAgICAgIGFzc2VydC5lcXVhbChyZXMuc3Rh
dHVzQ29kZSwgNDA0KTsKKyAgICB9CisgIH07Cit9OworCitleHBvcnRzLmFzc2VydFBvc3QgPSBm
dW5jdGlvbihwb3J0LCB1cmksIGV4cGVjdGVkKSB7CisgIHJldHVybiB7CisgICAgdG9waWM6IGZ1
bmN0aW9uICgpIHsKKyAgICAgIHJlcXVlc3QoeworICAgICAgICBtZXRob2Q6ICdQT1NUJywKKyAg
ICAgICAgdXJpOiAnaHR0cDovL2xvY2FsaG9zdDonICsgcG9ydCArICcvJyArIHVyaSwKKyAgICAg
ICAgYm9keTogSlNPTi5zdHJpbmdpZnkoZXhwZWN0ZWQpCisgICAgICB9LCB0aGlzLmNhbGxiYWNr
KTsKKyAgICB9LAorICAgICJzaG91bGQgcmVzcG9uZCB3aXRoIHRoZSBQT1NUIGJvZHkiOiBmdW5j
dGlvbiAoZXJyLCByZXMsIGJvZHkpIHsKKyAgICAgIGFzc2VydC5pc051bGwoZXJyKTsKKyAgICAg
IGFzc2VydC5lcXVhbChyZXMuc3RhdHVzQ29kZSwgMjAwKTsKKyAgICAgIGFzc2VydC5kZWVwRXF1
YWwoSlNPTi5wYXJzZShib2R5KSwgZXhwZWN0ZWQpOworICAgIH0KKyAgfTsKK307CmRpZmYgLS1n
aXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvZGlyZWN0b3IvdGVzdC9zZXJ2ZXIv
aHR0cC9hY2NlcHQtdGVzdC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9kaXJl
Y3Rvci90ZXN0L3NlcnZlci9odHRwL2FjY2VwdC10ZXN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjczNTNhNzA4
N2RhMjI0MWZiMDg0YmM3NzNiMWMzNzQ4Nzg3NTJkYmIKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvZGlyZWN0b3IvdGVzdC9zZXJ2ZXIvaHR0cC9hY2Nl
cHQtdGVzdC5qcwpAQCAtMCwwICsxLDg4IEBACisvKgorICogYWNjZXB0LXRlc3QuanM6IFRlc3Rz
IGZvciBgY29udGVudC10eXBlYC1iYXNlZCByb3V0aW5nCisgKgorICogKEMpIDIwMTIsIENoYXJs
aWUgUm9iYmlucywgUGFvbG8gRnJhZ29tZW5pLCAmIHRoZSBDb250cmlidXRvcnMuCisgKiBNSVQg
TElDRU5TRQorICoKKyAqLworCit2YXIgYXNzZXJ0ID0gcmVxdWlyZSgnYXNzZXJ0JyksCisgICAg
YXBpRWFzeSA9IHJlcXVpcmUoJ2FwaS1lYXN5JyksCisgICAgZGlyZWN0b3IgPSByZXF1aXJlKCcu
Li8uLi8uLi9saWIvZGlyZWN0b3InKSwKKyAgICBoZWxwZXJzID0gcmVxdWlyZSgnLi4vaGVscGVy
cycpLAorICAgIG1hY3JvcyA9IGhlbHBlcnMubWFjcm9zLAorICAgIGhhbmRsZXJzID0gaGVscGVy
cy5oYW5kbGVyczsKKwordmFyIFBPUlQgPSA5MDY3OworCithcGlFYXN5LmRlc2NyaWJlKCdkaXJl
Y3Rvci9odHRwL2FjY2VwdCcpCisgIC5hZGRCYXRjaCh7CisgICAgIkFuIGluc3RhbmNlIG9mIGBk
aXJlY3Rvci5odHRwLlJvdXRlcmAiOiB7CisgICAgICAid2l0aCByb3V0ZXMgc2V0IHVwIjogewor
ICAgICAgICB0b3BpYzogZnVuY3Rpb24gKCkgeworICAgICAgICAgIHZhciByb3V0ZXIgPSBuZXcg
ZGlyZWN0b3IuaHR0cC5Sb3V0ZXIoKTsKKyAgICAgICAgICByb3V0ZXIuZ2V0KCcvanNvbicsIHsg
YWNjZXB0OiAnYXBwbGljYXRpb24vanNvbicgfSwgaGFuZGxlcnMucmVzcG9uZFdpdGhPaygpKTsK
KyAgICAgICAgICByb3V0ZXIuZ2V0KCcvdHh0JywgeyBhY2NlcHQ6ICd0ZXh0L3BsYWluJyB9LCBo
YW5kbGVycy5yZXNwb25kV2l0aE9rKCkpOworICAgICAgICAgIHJvdXRlci5nZXQoJy9ib3RoJywg
eyBhY2NlcHQ6IFsndGV4dC9wbGFpbicsICdhcHBsaWNhdGlvbi9qc29uJ10gfSwgaGFuZGxlcnMu
cmVzcG9uZFdpdGhPaygpKTsKKyAgICAgICAgICByb3V0ZXIuZ2V0KCcvcmVnZXgnLCB7IGFjY2Vw
dDogLy4rXC94XC0uKy8gfSwgaGFuZGxlcnMucmVzcG9uZFdpdGhPaygpKTsKKworICAgICAgICAg
IHJvdXRlci5nZXQoJy93ZWlyZCcsIHsgYWNjZXB0OiAnYXBwbGljYXRpb24vanNvbicgfSwgZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgdGhpcy5yZXMud3JpdGVIZWFkKDQwMCk7CisgICAgICAg
ICAgICB0aGlzLnJlcy5lbmQoKTsKKyAgICAgICAgICB9KTsKKworICAgICAgICAgIHJvdXRlci5n
ZXQoJy93ZWlyZCcsIGhhbmRsZXJzLnJlc3BvbmRXaXRoT2soKSk7CisKKyAgICAgICAgICBoZWxw
ZXJzLmNyZWF0ZVNlcnZlcihyb3V0ZXIpLmxpc3RlbihQT1JULCB0aGlzLmNhbGxiYWNrKTsKKyAg
ICAgICAgfSwKKyAgICAgICAgInNob3VsZCBiZSBjcmVhdGVkIjogZnVuY3Rpb24gKGVycikgewor
ICAgICAgICAgIGFzc2VydCghZXJyKTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfSkK
KyAgLnVzZSgnbG9jYWxob3N0JywgUE9SVCkKKyAgLmRpc2N1c3MoJ3dpdGggYGNvbnRlbnQtdHlw
ZTogYXBwbGljYXRpb24vanNvbmAnKQorICAuc2V0SGVhZGVyKCdjb250ZW50LXR5cGUnLCAnYXBw
bGljYXRpb24vanNvbicpCisgICAgLmdldCgnL2pzb24nKQorICAgICAgLmV4cGVjdCgyMDApCisg
ICAgLmdldCgnL3R4dCcpCisgICAgICAuZXhwZWN0KDQwNCkKKyAgICAuZ2V0KCcvYm90aCcpCisg
ICAgICAuZXhwZWN0KDIwMCkKKyAgICAuZ2V0KCcvcmVnZXgnKQorICAgICAgLmV4cGVjdCg0MDQp
CisgICAgLmdldCgnL3dlaXJkJykKKyAgICAgIC5leHBlY3QoNDAwKQorICAudW5kaXNjdXNzKCkK
KyAgLm5leHQoKQorICAuZGlzY3Vzcygnd2l0aCBgY29udGVudC10eXBlOiB0ZXh0L3BsYWluYCcp
CisgIC5zZXRIZWFkZXIoJ2NvbnRlbnQtdHlwZScsICd0ZXh0L3BsYWluJykKKyAgICAuZ2V0KCcv
anNvbicpCisgICAgICAuZXhwZWN0KDQwNCkKKyAgICAuZ2V0KCcvdHh0JykKKyAgICAgIC5leHBl
Y3QoMjAwKQorICAgIC5nZXQoJy9ib3RoJykKKyAgICAgIC5leHBlY3QoMjAwKQorICAgIC5nZXQo
Jy9yZWdleCcpCisgICAgICAuZXhwZWN0KDQwNCkKKyAgICAuZ2V0KCcvd2VpcmQnKQorICAgICAg
LmV4cGVjdCgyMDApCisgIC51bmRpc2N1c3MoKQorICAubmV4dCgpCisgIC5kaXNjdXNzKCd3aXRo
IGBjb250ZW50LXR5cGU6IGFwcGxpY2F0aW9uL3gtdGFyLWd6YCcpCisgIC5zZXRIZWFkZXIoJ2Nv
bnRlbnQtdHlwZScsICdhcHBsaWNhdGlvbi94LXRhci1nemAnKQorICAgIC5nZXQoJy9qc29uJykK
KyAgICAuZ2V0KCcvanNvbicpCisgICAgICAuZXhwZWN0KDQwNCkKKyAgICAuZ2V0KCcvdHh0JykK
KyAgICAgIC5leHBlY3QoNDA0KQorICAgIC5nZXQoJy9ib3RoJykKKyAgICAgIC5leHBlY3QoNDA0
KQorICAgIC5nZXQoJy9yZWdleCcpCisgICAgICAuZXhwZWN0KDIwMCkKKyAgICAuZ2V0KCcvd2Vp
cmQnKQorICAgICAgLmV4cGVjdCgyMDApCisgIC51bmRpc2N1c3MoKQorICAuZXhwb3J0KG1vZHVs
ZSk7CisKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9kaXJlY3Rv
ci90ZXN0L3NlcnZlci9odHRwL2F0dGFjaC10ZXN0LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9k
ZV9tb2R1bGVzL2RpcmVjdG9yL3Rlc3Qvc2VydmVyL2h0dHAvYXR0YWNoLXRlc3QuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOWZiMzIwYTcwZDRlZmMyN2VlNGUyNTEwNjkyMDZiMGZjMzc0MDkyOAotLS0gL2Rldi9u
dWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9kaXJlY3Rvci90ZXN0L3Nl
cnZlci9odHRwL2F0dGFjaC10ZXN0LmpzCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBhdHRhY2gt
dGVzdC5qczogVGVzdHMgJ3JvdXRlci5hdHRhY2gnIGZ1bmN0aW9uYWxpdHkuCisgKgorICogKEMp
IDIwMTEsIENoYXJsaWUgUm9iYmlucywgUGFvbG8gRnJhZ29tZW5pLCAmIHRoZSBDb250cmlidXRv
cnMuCisgKiBNSVQgTElDRU5TRQorICoKKyAqLworCit2YXIgYXNzZXJ0ID0gcmVxdWlyZSgnYXNz
ZXJ0JyksCisgICAgaHR0cCA9IHJlcXVpcmUoJ2h0dHAnKSwKKyAgICB2b3dzID0gcmVxdWlyZSgn
dm93cycpLAorICAgIHJlcXVlc3QgPSByZXF1aXJlKCdyZXF1ZXN0JyksCisgICAgZGlyZWN0b3Ig
PSByZXF1aXJlKCcuLi8uLi8uLi9saWIvZGlyZWN0b3InKSwKKyAgICBoZWxwZXJzID0gcmVxdWly
ZSgnLi4vaGVscGVycycpLAorICAgIGhhbmRsZXJzID0gaGVscGVycy5oYW5kbGVycywKKyAgICBt
YWNyb3MgPSBoZWxwZXJzLm1hY3JvczsKKworZnVuY3Rpb24gYXNzZXJ0RGF0YSh1cmkpIHsKKyAg
cmV0dXJuIG1hY3Jvcy5hc3NlcnRHZXQoCisgICAgOTA5MSwKKyAgICB1cmksCisgICAgSlNPTi5z
dHJpbmdpZnkoWzEsMiwzXSkKKyAgKTsKK30KKwordm93cy5kZXNjcmliZSgnZGlyZWN0b3IvaHR0
cC9hdHRhY2gnKS5hZGRCYXRjaCh7CisgICJBbiBpbnN0YW5jZSBvZiBkaXJlY3Rvci5odHRwLlJv
dXRlciI6IHsKKyAgICAiaW5zdGFudGlhdGVkIHdpdGggYSBSb3V0aW5nIHRhYmxlIjogeworICAg
ICAgdG9waWM6IG5ldyBkaXJlY3Rvci5odHRwLlJvdXRlcih7CisgICAgICAgICcvaGVsbG8nOiB7
CisgICAgICAgICAgZ2V0OiBoYW5kbGVycy5yZXNwb25kV2l0aERhdGEKKyAgICAgICAgfQorICAg
ICAgfSksCisgICAgICAic2hvdWxkIGhhdmUgdGhlIGNvcnJlY3Qgcm91dGVzIGRlZmluZWQiOiBm
dW5jdGlvbiAocm91dGVyKSB7CisgICAgICAgIGFzc2VydC5pc09iamVjdChyb3V0ZXIucm91dGVz
LmhlbGxvKTsKKyAgICAgICAgYXNzZXJ0LmlzRnVuY3Rpb24ocm91dGVyLnJvdXRlcy5oZWxsby5n
ZXQpOworICAgICAgfSwKKyAgICAgICJ3aGVuIHBhc3NlZCB0byBhbiBodHRwLlNlcnZlciBpbnN0
YW5jZSI6IHsKKyAgICAgICAgdG9waWM6IGZ1bmN0aW9uIChyb3V0ZXIpIHsKKyAgICAgICAgICBy
b3V0ZXIuYXR0YWNoKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRoaXMuZGF0YSA9IFsxLDIs
M107CisgICAgICAgICAgfSk7CisKKyAgICAgICAgICBoZWxwZXJzLmNyZWF0ZVNlcnZlcihyb3V0
ZXIpCisgICAgICAgICAgICAubGlzdGVuKDkwOTEsIHRoaXMuY2FsbGJhY2spOworICAgICAgICB9
LAorICAgICAgICAiYSByZXF1ZXN0IHRvIGhlbGxvIjogYXNzZXJ0RGF0YSgnaGVsbG8nKSwKKyAg
ICAgIH0KKyAgICB9CisgIH0KK30pLmV4cG9ydChtb2R1bGUpOwpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL3Rlc3Qvc2VydmVyL2h0dHAvYmVmb3Jl
LXRlc3QuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvZGlyZWN0b3IvdGVzdC9z
ZXJ2ZXIvaHR0cC9iZWZvcmUtdGVzdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NTAyYzg3YjMxNTJiODQ4NmJj
NmE5NmE5ZjNhYTJjZWZhOTE2ZDVlCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVh
Y3Qvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL3Rlc3Qvc2VydmVyL2h0dHAvYmVmb3JlLXRlc3QuanMK
QEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIGJlZm9yZS10ZXN0LmpzOiBUZXN0cyBmb3IgcnVubmlu
ZyBiZWZvcmUgbWV0aG9kcyBvbiBIVFRQIHNlcnZlcihzKS4KKyAqCisgKiAoQykgMjAxMSwgQ2hh
cmxpZSBSb2JiaW5zLCBQYW9sbyBGcmFnb21lbmksICYgdGhlIENvbnRyaWJ1dG9ycy4KKyAqIE1J
VCBMSUNFTlNFCisgKgorICovCisKK3ZhciBhc3NlcnQgPSByZXF1aXJlKCdhc3NlcnQnKSwKKyAg
ICBodHRwID0gcmVxdWlyZSgnaHR0cCcpLAorICAgIHZvd3MgPSByZXF1aXJlKCd2b3dzJyksCisg
ICAgcmVxdWVzdCA9IHJlcXVpcmUoJ3JlcXVlc3QnKSwKKyAgICBkaXJlY3RvciA9IHJlcXVpcmUo
Jy4uLy4uLy4uL2xpYi9kaXJlY3RvcicpLAorICAgIGhlbHBlcnMgPSByZXF1aXJlKCcuLi9oZWxw
ZXJzJyksCisgICAgaGFuZGxlcnMgPSBoZWxwZXJzLmhhbmRsZXJzLAorICAgIG1hY3JvcyA9IGhl
bHBlcnMubWFjcm9zOworCit2b3dzLmRlc2NyaWJlKCdkaXJlY3Rvci9odHRwL2JlZm9yZScpLmFk
ZEJhdGNoKHsKKyAgIkFuIGluc3RhbmNlIG9mIGRpcmVjdG9yLmh0dHAuUm91dGVyIjogeworICAg
ICJ3aXRoIGFkLWhvYyByb3V0ZXMgaW5jbHVkaW5nIC5iZWZvcmUoKSI6IHsKKyAgICAgIHRvcGlj
OiBmdW5jdGlvbiAoKSB7CisgICAgICAgIHZhciByb3V0ZXIgPSBuZXcgZGlyZWN0b3IuaHR0cC5S
b3V0ZXIoKTsKKworICAgICAgICByb3V0ZXIuYmVmb3JlKCcvaGVsbG8nLCBmdW5jdGlvbiAoKSB7
IH0pOworICAgICAgICByb3V0ZXIuYWZ0ZXIoJy9oZWxsbycsIGZ1bmN0aW9uICgpIHsgfSk7Cisg
ICAgICAgIHJvdXRlci5nZXQoJy9oZWxsbycsIGhhbmRsZXJzLnJlc3BvbmRXaXRoSWQpOworCisg
ICAgICAgIHJldHVybiByb3V0ZXI7CisgICAgICB9LAorICAgICAgInNob3VsZCBoYXZlIHRoZSBj
b3JyZWN0IHJvdXRlcyBkZWZpbmVkIjogZnVuY3Rpb24gKHJvdXRlcikgeworICAgICAgICBhc3Nl
cnQuaXNPYmplY3Qocm91dGVyLnJvdXRlcy5oZWxsbyk7CisgICAgICAgIGFzc2VydC5pc0Z1bmN0
aW9uKHJvdXRlci5yb3V0ZXMuaGVsbG8uYmVmb3JlKTsKKyAgICAgICAgYXNzZXJ0LmlzRnVuY3Rp
b24ocm91dGVyLnJvdXRlcy5oZWxsby5hZnRlcik7CisgICAgICAgIGFzc2VydC5pc0Z1bmN0aW9u
KHJvdXRlci5yb3V0ZXMuaGVsbG8uZ2V0KTsKKyAgICAgIH0KKyAgICB9CisgIH0KK30pLmV4cG9y
dChtb2R1bGUpOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2Rp
cmVjdG9yL3Rlc3Qvc2VydmVyL2h0dHAvY29uZmlndXJlLXRlc3QuanMgYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9y
ZWFjdC9ub2RlX21vZHVsZXMvZGlyZWN0b3IvdGVzdC9zZXJ2ZXIvaHR0cC9jb25maWd1cmUtdGVz
dC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xMWIyNzRlMTcwYzVhNjY0ZmUxNmQzNWNhZGZhNTMwMjE5NjY5MmY3
Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2RpcmVj
dG9yL3Rlc3Qvc2VydmVyL2h0dHAvY29uZmlndXJlLXRlc3QuanMKQEAgLTAsMCArMSwzNyBAQAor
LyoKKyAqIG9uLXRlc3QuanM6IFRlc3RzIGZvciB0aGUgb24vcm91dGUgbWV0aG9kLgorICoKKyAq
IChDKSAyMDExLCBDaGFybGllIFJvYmJpbnMsIFBhb2xvIEZyYWdvbWVuaSwgJiB0aGUgQ29udHJp
YnV0b3JzLgorICogTUlUIExJQ0VOU0UKKyAqCisgKi8KKwordmFyIGFzc2VydCA9IHJlcXVpcmUo
J2Fzc2VydCcpLAorICAgIHZvd3MgPSByZXF1aXJlKCd2b3dzJyksCisgICAgZGlyZWN0b3IgPSBy
ZXF1aXJlKCcuLi8uLi8uLi9saWIvZGlyZWN0b3InKTsKKwordm93cy5kZXNjcmliZSgnZGlyZWN0
b3IvY29yZS9jb25maWd1cmUnKS5hZGRCYXRjaCh7CisgICJBbiBpbnN0YW5jZSBvZiBkaXJlY3Rv
ci5Sb3V0ZXIiOiB7CisgICAgdG9waWM6IG5ldyBkaXJlY3Rvci5odHRwLlJvdXRlcigpLAorICAg
ICJ0aGUgY29uZmlndXJlKCkgbWV0aG9kIjogeworICAgICAgImNhbGxlZCB3aXRoIGFuIGVtcHR5
IG9iamVjdCI6IHsKKyAgICAgICAgInNob3VsZCBkZWZhdWx0IHJlY3Vyc2UgdG8gJ2ZvcndhcmQn
IjogZnVuY3Rpb24ocm91dGVyKSB7CisgICAgICAgICAgcm91dGVyLmNvbmZpZ3VyZSh7fSk7Cisg
ICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJvdXRlci5yZWN1cnNlLCAnZm9yd2FyZCcpOwor
ICAgICAgICB9CisgICAgICB9LAorICAgICAgImNhbGxlZCB3aXRoIHJlY3Vyc2UgPSBmYWxzZSI6
IHsKKyAgICAgICAgInNob3VsZCBzZXQgcmVjdXJzZSB0byBmYWxzZSI6IGZ1bmN0aW9uKHJvdXRl
cikgeworICAgICAgICAgIHJvdXRlci5jb25maWd1cmUoeyByZWN1cnNlOiBmYWxzZSB9KTsKKyAg
ICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocm91dGVyLnJlY3Vyc2UsIGZhbHNlKTsKKyAgICAg
ICAgfQorICAgICAgfSwKKyAgICAgICJjYWxsZWQgd2l0aCByZWN1cnNlID0gJ2JhY2t3YXJkJyI6
IHsKKyAgICAgICAgInNob3VsZCBzZXQgcmVjdXJzZSB0byAnYmFja3dhcmQnIjogZnVuY3Rpb24o
cm91dGVyKSB7CisgICAgICAgICAgcm91dGVyLmNvbmZpZ3VyZSh7IHJlY3Vyc2U6ICdiYWNrd2Fy
ZCcgfSk7CisgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJvdXRlci5yZWN1cnNlLCAnYmFj
a3dhcmQnKTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQorfSkuZXhwb3J0KG1vZHVs
ZSk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvZGlyZWN0b3Iv
dGVzdC9zZXJ2ZXIvaHR0cC9odHRwLXRlc3QuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21v
ZHVsZXMvZGlyZWN0b3IvdGVzdC9zZXJ2ZXIvaHR0cC9odHRwLXRlc3QuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OGJmZTBiMjA0ODU4MGQzZmMzY2FlNGE5ZjNlYmIzOGRhZmFjNmE4YwotLS0gL2Rldi9udWxsCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9kaXJlY3Rvci90ZXN0L3NlcnZlci9o
dHRwL2h0dHAtdGVzdC5qcwpAQCAtMCwwICsxLDk2IEBACisvKgorICogaHR0cC10ZXN0LmpzOiBU
ZXN0cyBmb3IgYmFzaWMgSFRUUCBzZXJ2ZXIocykuCisgKgorICogKEMpIDIwMTEsIENoYXJsaWUg
Um9iYmlucywgUGFvbG8gRnJhZ29tZW5pLCAmIHRoZSBDb250cmlidXRvcnMuCisgKiBNSVQgTElD
RU5TRQorICoKKyAqLworCit2YXIgYXNzZXJ0ID0gcmVxdWlyZSgnYXNzZXJ0JyksCisgICAgaHR0
cCA9IHJlcXVpcmUoJ2h0dHAnKSwKKyAgICB2b3dzID0gcmVxdWlyZSgndm93cycpLAorICAgIHJl
cXVlc3QgPSByZXF1aXJlKCdyZXF1ZXN0JyksCisgICAgZGlyZWN0b3IgPSByZXF1aXJlKCcuLi8u
Li8uLi9saWIvZGlyZWN0b3InKSwKKyAgICBoZWxwZXJzID0gcmVxdWlyZSgnLi4vaGVscGVycycp
LAorICAgIGhhbmRsZXJzID0gaGVscGVycy5oYW5kbGVycywKKyAgICBtYWNyb3MgPSBoZWxwZXJz
Lm1hY3JvczsKKworZnVuY3Rpb24gYXNzZXJ0QmFyayh1cmkpIHsKKyAgcmV0dXJuIG1hY3Jvcy5h
c3NlcnRHZXQoCisgICAgOTA5MCwKKyAgICB1cmksCisgICAgJ2hlbGxvIGZyb20gKGJhcmspJwor
ICApOworfQorCit2b3dzLmRlc2NyaWJlKCdkaXJlY3Rvci9odHRwJykuYWRkQmF0Y2goeworICAi
QW4gaW5zdGFuY2Ugb2YgZGlyZWN0b3IuaHR0cC5Sb3V0ZXIiOiB7CisgICAgImluc3RhbnRpYXRl
ZCB3aXRoIGEgUm91dGluZyB0YWJsZSI6IHsKKyAgICAgIHRvcGljOiBuZXcgZGlyZWN0b3IuaHR0
cC5Sb3V0ZXIoeworICAgICAgICAnL2hlbGxvJzogeworICAgICAgICAgIGdldDogaGFuZGxlcnMu
cmVzcG9uZFdpdGhJZAorICAgICAgICB9CisgICAgICB9KSwKKyAgICAgICJzaG91bGQgaGF2ZSB0
aGUgY29ycmVjdCByb3V0ZXMgZGVmaW5lZCI6IGZ1bmN0aW9uIChyb3V0ZXIpIHsKKyAgICAgICAg
YXNzZXJ0LmlzT2JqZWN0KHJvdXRlci5yb3V0ZXMuaGVsbG8pOworICAgICAgICBhc3NlcnQuaXNG
dW5jdGlvbihyb3V0ZXIucm91dGVzLmhlbGxvLmdldCk7CisgICAgICB9LAorICAgICAgIndoZW4g
cGFzc2VkIHRvIGFuIGh0dHAuU2VydmVyIGluc3RhbmNlIjogeworICAgICAgICB0b3BpYzogZnVu
Y3Rpb24gKHJvdXRlcikgeworICAgICAgICAgIHJvdXRlci5nZXQoL2Zvb1wvYmFyXC8oXHcrKS8s
IGhhbmRsZXJzLnJlc3BvbmRXaXRoSWQpOworICAgICAgICAgIHJvdXRlci5nZXQoL2FkZFwvOnBh
cmFtXC9iYXJrLywgaGFuZGxlcnMucmVzcG9uZFdpdGhJZCk7CisgICAgICAgICAgcm91dGVyLmdl
dCgvZm9vXC91cGRhdGVcLyhcdyspLywgaGFuZGxlcnMucmVzcG9uZFdpdGhJZCk7CisgICAgICAg
ICAgcm91dGVyLnBhdGgoL2JhclwvYmF6elwvLywgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg
dGhpcy5nZXQoLyhcdyspLywgaGFuZGxlcnMucmVzcG9uZFdpdGhJZCk7CisgICAgICAgICAgfSk7
CisgICAgICAgICAgcm91dGVyLmdldCgvXC9mb29cL3dpbGRcLyguKikvLCBoYW5kbGVycy5yZXNw
b25kV2l0aElkKTsKKyAgICAgICAgICByb3V0ZXIuZ2V0KC8oXC92Mik/XC9zb21lcGF0aC8sIGhh
bmRsZXJzLnJlc3BvbmRXaXRoSWQpOworCisgICAgICAgICAgaGVscGVycy5jcmVhdGVTZXJ2ZXIo
cm91dGVyKQorICAgICAgICAgICAgLmxpc3Rlbig5MDkwLCB0aGlzLmNhbGxiYWNrKTsKKyAgICAg
ICAgfSwKKyAgICAgICAgImEgcmVxdWVzdCB0byBmb28vYmFyL2JhcmsiOiBhc3NlcnRCYXJrKCdm
b28vYmFyL2JhcmsnKSwKKyAgICAgICAgImEgcmVxdWVzdCB0byBmb28vdXBkYXRlL2JhcmsiOiBh
c3NlcnRCYXJrKCdmb28vdXBkYXRlL2JhcmsnKSwKKyAgICAgICAgImEgcmVxdWVzdCB0byBiYXIv
YmF6ei9iYXJrIjogYXNzZXJ0QmFyaygnYmFyL2JhenovYmFyaycpLAorICAgICAgICAiYSByZXF1
ZXN0IHRvIGZvby9iYXIvYmFyaz90ZXN0PXRlc3QiOiBhc3NlcnRCYXJrKCdmb28vYmFyL2Jhcms/
dGVzdD10ZXN0JyksCisgICAgICAgICJhIHJlcXVlc3QgdG8gZm9vL3dpbGQvYmFyayI6IGFzc2Vy
dEJhcmsoJ2Zvby93aWxkL2JhcmsnKSwKKyAgICAgICAgImEgcmVxdWVzdCB0byBhZGQvOnBhcmFt
L2JhcmsiOiB7CisgICAgICAgICAgdG9waWM6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHJl
cXVlc3QoeyB1cmk6ICdodHRwOi8vbG9jYWxob3N0OjkwOTAvYWRkL3Rlc3QvYmFyaycgfSwgdGhp
cy5jYWxsYmFjayk7CisgICAgICAgICAgfSwKKyAgICAgICAgICAnc2hvdWxkIHJlc3BvbmQgYW5k
IHBhcnNlIHRoZSBwYXJhbXMnOiBmdW5jdGlvbiAoZXJyLCByZXMsIGJvZHkpIHsKKyAgICAgICAg
ICAgIGFzc2VydC5pc051bGwoZXJyKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXMuc3Rh
dHVzQ29kZSwgMjAwKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChib2R5LCAnaGVsbG8gZnJv
bSAodGVzdCknKTsKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJhbiBlbmNvZGVk
IHJlcXVlc3QgdG8gYWRkLzpwYXJhbS9iYXJrIjogeworICAgICAgICAgIHRvcGljOiBmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICByZXF1ZXN0KHsgdXJpOiAnaHR0cDovL2xvY2FsaG9zdDo5MDkw
L2FkZC9zb21ldGhpbmclNDBleGFtcGxlLmNvbS9iYXJrJyB9LCB0aGlzLmNhbGxiYWNrKTsKKyAg
ICAgICAgICB9LAorICAgICAgICAgICdzaG91bGQgcmVzcG9uZCBhbmQgcGFyc2UgdGhlIHBhcmFt
cyc6IGZ1bmN0aW9uIChlcnIsIHJlcywgYm9keSkgeworICAgICAgICAgICAgYXNzZXJ0LmlzTnVs
bChlcnIpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcy5zdGF0dXNDb2RlLCAyMDApOwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJvZHksICdoZWxsbyBmcm9tIChzb21ldGhpbmclNDBl
eGFtcGxlLmNvbSknKTsKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJhbiBlbmNv
ZGVkIHJlcXVlc3QgdG8gYWRkLzpwYXJhbS9iYXJrIHdpdGggYWRkaXRpb25hbCBzcGVjaWFsIGNo
YXJhY3RlcnMiOiB7CisgICAgICAgICAgdG9waWM6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
IHJlcXVlc3QoeyB1cmk6ICdodHRwOi8vbG9jYWxob3N0OjkwOTAvYWRkL3NvbWV0aGluZyU0MChl
eGFtcGxlKS5jb20vYmFyaycgfSwgdGhpcy5jYWxsYmFjayk7CisgICAgICAgICAgfSwKKyAgICAg
ICAgICAnc2hvdWxkIHJlc3BvbmQgYW5kIHBhcnNlIHRoZSBwYXJhbXMnOiBmdW5jdGlvbiAoZXJy
LCByZXMsIGJvZHkpIHsKKyAgICAgICAgICAgIGFzc2VydC5pc051bGwoZXJyKTsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChyZXMuc3RhdHVzQ29kZSwgMjAwKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChib2R5LCAnaGVsbG8gZnJvbSAoc29tZXRoaW5nJTQwKGV4YW1wbGUpLmNvbSknKTsK
KyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJhIHJlcXVlc3QgdG8gZm9vLyVSVCI6
IG1hY3Jvcy5hc3NlcnQ0MDQoOTA5MCwgJ2Zvby8lUlQnKSwKKyAgICAgICAgImEgcmVxdWVzdCB0
byAvdjIvc29tZXBhdGgiOiBtYWNyb3MuYXNzZXJ0R2V0KAorICAgICAgICAgIDkwOTAsCisgICAg
ICAgICAgJy92Mi9zb21lcGF0aCcsCisgICAgICAgICAgJ2hlbGxvIGZyb20gKC92MiknCisgICAg
ICAgICkKKyAgICAgIH0KKyAgICB9CisgIH0KK30pLmV4cG9ydChtb2R1bGUpOwpkaWZmIC0tZ2l0
IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL3Rlc3Qvc2VydmVyL2h0
dHAvbWV0aG9kcy10ZXN0LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2RpcmVj
dG9yL3Rlc3Qvc2VydmVyL2h0dHAvbWV0aG9kcy10ZXN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEzYTI1NzQy
MmE4YTY0YjVlYzRkNTlkOGVmY2VjMzVhMDMxOGExZWEKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvZGlyZWN0b3IvdGVzdC9zZXJ2ZXIvaHR0cC9tZXRo
b2RzLXRlc3QuanMKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIG1ldGhvZHMtdGVzdC5qczogVGVz
dHMgZm9yIEhUVFAgbWV0aG9kcy4KKyAqCisgKiAoQykgMjAxMSwgQ2hhcmxpZSBSb2JiaW5zLCBQ
YW9sbyBGcmFnb21lbmksICYgdGhlIENvbnRyaWJ1dG9ycy4KKyAqIE1JVCBMSUNFTlNFCisgKgor
ICovCisKK3ZhciBhc3NlcnQgPSByZXF1aXJlKCdhc3NlcnQnKSwKKyAgICB2b3dzID0gcmVxdWly
ZSgndm93cycpLAorICAgIGRpcmVjdG9yID0gcmVxdWlyZSgnLi4vLi4vLi4vbGliL2RpcmVjdG9y
Jyk7CisKK3Zvd3MuZGVzY3JpYmUoJ2RpcmVjdG9yL2h0dHAvbWV0aG9kcycpLmFkZEJhdGNoKHsK
KyAgIldoZW4gdXNpbmcgZGlyZWN0b3IiOiB7CisgICAgImFuIGluc3RhbmNlIG9mIGRpcmVjdG9y
Lmh0dHAuUm91dGVyIHNob3VsZCBoYXZlIGFsbCByZWxldmFudCBSRkMgbWV0aG9kcyI6IGZ1bmN0
aW9uICgpIHsKKyAgICAgIHZhciByb3V0ZXIgPSBuZXcgZGlyZWN0b3IuaHR0cC5Sb3V0ZXIoKTsK
KyAgICAgIGRpcmVjdG9yLmh0dHAubWV0aG9kcy5mb3JFYWNoKGZ1bmN0aW9uIChtZXRob2QpIHsK
KyAgICAgICAgYXNzZXJ0LmlzRnVuY3Rpb24ocm91dGVyW21ldGhvZC50b0xvd2VyQ2FzZSgpXSk7
CisgICAgICB9KTsKKyAgICB9LAorICAgICJ0aGUgcGF0aCgpIG1ldGhvZCI6IHsKKyAgICAgIHRv
cGljOiBuZXcgZGlyZWN0b3IuaHR0cC5Sb3V0ZXIoKSwKKyAgICAgICIvcmVzb3VyY2UiOiB7Cisg
ICAgICAgICJzaG91bGQgaW5zZXJ0IG5lc3RlZCByb3V0ZXMgY29ycmVjdCI6IGZ1bmN0aW9uIChy
b3V0ZXIpIHsKKyAgICAgICAgICBmdW5jdGlvbiBnZXRSZXNvdXJjZSgpIHt9CisgICAgICAgICAg
ZnVuY3Rpb24gbW9kaWZ5UmVzb3VyY2UoKSB7fQorCisgICAgICAgICAgcm91dGVyLnBhdGgoL1wv
cmVzb3VyY2UvLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0aGlzLmdldChnZXRSZXNvdXJj
ZSk7CisKKyAgICAgICAgICAgIHRoaXMucHV0KC9cL3VwZGF0ZS8sIG1vZGlmeVJlc291cmNlKTsK
KyAgICAgICAgICAgIHRoaXMucG9zdCgvY3JlYXRlLywgbW9kaWZ5UmVzb3VyY2UpOworICAgICAg
ICAgIH0pOworCisgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJvdXRlci5yb3V0ZXMucmVzb3VyY2Uu
Z2V0LCBnZXRSZXNvdXJjZSk7CisgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJvdXRlci5yb3V0ZXMu
cmVzb3VyY2UudXBkYXRlLnB1dCwgbW9kaWZ5UmVzb3VyY2UpOworICAgICAgICAgIGFzc2VydC5l
cXVhbChyb3V0ZXIucm91dGVzLnJlc291cmNlLmNyZWF0ZS5wb3N0LCBtb2RpZnlSZXNvdXJjZSk7
CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgIH0KK30pLmV4cG9ydChtb2R1bGUpOwpkaWZm
IC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL3Rlc3Qvc2Vy
dmVyL2h0dHAvcmVjdXJzaW9uLXRlc3QuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVs
ZXMvZGlyZWN0b3IvdGVzdC9zZXJ2ZXIvaHR0cC9yZWN1cnNpb24tdGVzdC5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zYjUwOGVkZWZhMzI2YmI3YmNmMWRhODI4Mzg5YTkzODMzZTI2NGQ2Ci0tLSAvZGV2L251bGwK
KysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL3Rlc3Qvc2VydmVy
L2h0dHAvcmVjdXJzaW9uLXRlc3QuanMKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIHJlY3Vyc2lv
bi10ZXN0LmpzOiBUZXN0cyBmb3IgcmVjdXJzaXZlIHJvdXRlIHJldHJpZXZhbC4KKyAqCisgKiAo
QykgMjAxMSwgTm9kZWppdHN1IEluYy4KKyAqIE1JVCBMSUNFTlNFCisgKgorICovCisKK3ZhciBh
c3NlcnQgPSByZXF1aXJlKCdhc3NlcnQnKSwKKyAgdm93cyA9IHJlcXVpcmUoJ3Zvd3MnKSwKKyAg
ZGlyZWN0b3IgPSByZXF1aXJlKCcuLi8uLi8uLi9saWIvZGlyZWN0b3InKTsKKwordm93cy5kZXNj
cmliZSgnZGlyZWN0b3IvaHR0cC9pbmRleCcpLmFkZEJhdGNoKHsKKyAgInRoZSB0cmF2ZXJzZSgp
IG1ldGhvZCIgOiB7CisgICAgdG9waWM6IG5ldyBkaXJlY3Rvci5odHRwLlJvdXRlcigpLAorICAg
ICIvc29tZS8xL25lc3RlZC8yL3JvdXRlLzMiIDogeworICAgICAgInNob3VsZCByZXR1cm4gYSBz
dGFjayBvZiB0aHJlZSBmdW5jdGlvbnMgYW5kIHRocmVlIGNhcHR1cmVzIiA6IGZ1bmN0aW9uKHJv
dXRlcikgeworICAgICAgICBmdW5jdGlvbiBhbHBoYSgpIHt9CisgICAgICAgIGZ1bmN0aW9uIGJl
dGEoKSB7fQorICAgICAgICBmdW5jdGlvbiBnYW1tYSgpIHt9CisKKyAgICAgICAgcm91dGVyLnBh
dGgoJy9zb21lLzppZCcsIGZ1bmN0aW9uKCkgeworICAgICAgICAgIHRoaXMuZ2V0KGFscGhhKTsK
KyAgICAgICAgICB0aGlzLnBhdGgoJy9uZXN0ZWQvOmlkJywgZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICB0aGlzLmdldChiZXRhKTsKKyAgICAgICAgICAgIHRoaXMucGF0aCgnL3JvdXRlLzppZCcs
IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICB0aGlzLmdldChnYW1tYSk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgdmFyIGZucyA9IHJv
dXRlci50cmF2ZXJzZSgnZ2V0JywgJy9zb21lLzEvbmVzdGVkLzIvcm91dGUvMycsIHJvdXRlci5y
b3V0ZXMsICcnKTsKKyAgICAgICAgdmFyIHJ1bmxpc3QgPSByb3V0ZXIucnVubGlzdChmbnMpOwor
ICAgICAgICBhc3NlcnQuZXF1YWwocnVubGlzdFswXSwgZ2FtbWEpOworICAgICAgICBhc3NlcnQu
ZXF1YWwocnVubGlzdFsxXSwgYmV0YSk7CisgICAgICAgIGFzc2VydC5lcXVhbChydW5saXN0WzJd
LCBhbHBoYSk7CisgICAgICAgIGFzc2VydC5lcXVhbChydW5saXN0LmNhcHR1cmVzWzBdLCAxKTsK
KyAgICAgICAgYXNzZXJ0LmVxdWFsKHJ1bmxpc3QuY2FwdHVyZXNbMV0sIDIpOworICAgICAgICBh
c3NlcnQuZXF1YWwocnVubGlzdC5jYXB0dXJlc1syXSwgMyk7CisgICAgICB9CisgICAgfQorICB9
Cit9KS5leHBvcnQobW9kdWxlKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVf
bW9kdWxlcy9kaXJlY3Rvci90ZXN0L3NlcnZlci9odHRwL3Jlc3BvbnNlcy10ZXN0LmpzIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL3Rlc3Qvc2VydmVyL2h0dHAvcmVz
cG9uc2VzLXRlc3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Y2YjkyMzY0MjY1NTFlYTYyYjNkOGJiZWUyMWEy
ZDA1NDMxMWM0OQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9k
dWxlcy9kaXJlY3Rvci90ZXN0L3NlcnZlci9odHRwL3Jlc3BvbnNlcy10ZXN0LmpzCkBAIC0wLDAg
KzEsMjEgQEAKKy8qCisgKiByZXNwb25zZXMtdGVzdC5qczogVGVzdHMgZm9yIEhUVFAgcmVzcG9u
c2VzLgorICoKKyAqIChDKSAyMDExLCBDaGFybGllIFJvYmJpbnMsIFBhb2xvIEZyYWdvbWVuaSwg
JiB0aGUgQ29udHJpYnV0b3JzLgorICogTUlUIExJQ0VOU0UKKyAqCisgKi8KKwordmFyIGFzc2Vy
dCA9IHJlcXVpcmUoJ2Fzc2VydCcpLAorICAgIHZvd3MgPSByZXF1aXJlKCd2b3dzJyksCisgICAg
ZGlyZWN0b3IgPSByZXF1aXJlKCcuLi8uLi8uLi9saWIvZGlyZWN0b3InKTsKKwordm93cy5kZXNj
cmliZSgnZGlyZWN0b3IvaHR0cC9yZXNwb25zZXMnKS5hZGRCYXRjaCh7CisgICJXaGVuIHVzaW5n
IGRpcmVjdG9yLmh0dHAiOiB7CisgICAgIml0IHNob3VsZCBoYXZlIHRoZSByZWxldmFudCByZXNw
b25zZXMgZGVmaW5lZCI6IGZ1bmN0aW9uICgpIHsKKyAgICAgIE9iamVjdC5rZXlzKHJlcXVpcmUo
Jy4uLy4uLy4uL2xpYi9kaXJlY3Rvci9odHRwL3Jlc3BvbnNlcycpKS5mb3JFYWNoKGZ1bmN0aW9u
IChuYW1lKSB7CisgICAgICAgIGFzc2VydC5pc0Z1bmN0aW9uKGRpcmVjdG9yLmh0dHBbbmFtZV0p
OworICAgICAgfSk7CisgICAgfQorICB9Cit9KS5leHBvcnQobW9kdWxlKTsKZGlmZiAtLWdpdCBh
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9kaXJlY3Rvci90ZXN0L3NlcnZlci9odHRw
L3N0cmVhbS10ZXN0LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2RpcmVjdG9y
L3Rlc3Qvc2VydmVyL2h0dHAvc3RyZWFtLXRlc3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGE1Y2VmNTFhZmZi
Y2RhZjNiM2YzMTA4ZWUwMDhmNzJiZDE0ODE3OQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL3JlYWN0L25vZGVfbW9kdWxlcy9kaXJlY3Rvci90ZXN0L3NlcnZlci9odHRwL3N0cmVhbS10
ZXN0LmpzCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBzdHJlYW0tdGVzdC5qczogVGVzdHMgZm9y
IHN0cmVhbWluZyBIVFRQIGluIGRpcmVjdG9yLgorICoKKyAqIChDKSAyMDExLCBDaGFybGllIFJv
YmJpbnMsIFBhb2xvIEZyYWdvbWVuaSwgJiB0aGUgQ29udHJpYnV0b3JzLgorICogTUlUIExJQ0VO
U0UKKyAqCisgKi8KKwordmFyIGFzc2VydCA9IHJlcXVpcmUoJ2Fzc2VydCcpLAorICAgIGh0dHAg
PSByZXF1aXJlKCdodHRwJyksCisgICAgdm93cyA9IHJlcXVpcmUoJ3Zvd3MnKSwKKyAgICByZXF1
ZXN0ID0gcmVxdWlyZSgncmVxdWVzdCcpLAorICAgIGRpcmVjdG9yID0gcmVxdWlyZSgnLi4vLi4v
Li4vbGliL2RpcmVjdG9yJyksCisgICAgaGVscGVycyA9IHJlcXVpcmUoJy4uL2hlbHBlcnMnKSwK
KyAgICBtYWNyb3MgPSBoZWxwZXJzLm1hY3JvcywKKyAgICBoYW5kbGVycyA9IGhlbHBlcnMuaGFu
ZGxlcnMKKwordm93cy5kZXNjcmliZSgnZGlyZWN0b3IvaHR0cC9zdHJlYW0nKS5hZGRCYXRjaCh7
CisgICJBbiBpbnN0YW5jZSBvZiBkaXJlY3Rvci5odHRwLlJvdXRlciI6IHsKKyAgICAid2l0aCBz
dHJlYW1pbmcgcm91dGVzIjogeworICAgICAgdG9waWM6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
dmFyIHJvdXRlciA9IG5ldyBkaXJlY3Rvci5odHRwLlJvdXRlcigpOworICAgICAgICByb3V0ZXIu
cG9zdCgvZm9vXC9iYXIvLCB7IHN0cmVhbTogdHJ1ZSB9LCBoYW5kbGVycy5zdHJlYW1Cb2R5KTsK
KyAgICAgICAgcm91dGVyLnBhdGgoJy9hLXBhdGgnLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
dGhpcy5wb3N0KHsgc3RyZWFtOiB0cnVlIH0sIGhhbmRsZXJzLnN0cmVhbUJvZHkpOworICAgICAg
ICB9KTsKKworICAgICAgICByZXR1cm4gcm91dGVyOworICAgICAgfSwKKyAgICAgICJ3aGVuIHBh
c3NlZCB0byBhbiBodHRwLlNlcnZlciBpbnN0YW5jZSI6IHsKKyAgICAgICAgdG9waWM6IGZ1bmN0
aW9uIChyb3V0ZXIpIHsKKyAgICAgICAgICBoZWxwZXJzLmNyZWF0ZVNlcnZlcihyb3V0ZXIpCisg
ICAgICAgICAgICAubGlzdGVuKDkwOTIsIHRoaXMuY2FsbGJhY2spOworICAgICAgICB9LAorICAg
ICAgICAiYSBQT1NUIHJlcXVlc3QgdG8gL2Zvby9iYXIiOiBtYWNyb3MuYXNzZXJ0UG9zdCg5MDky
LCAnZm9vL2JhcicsIHsKKyAgICAgICAgICBmb286ICdmb28nLAorICAgICAgICAgIGJhcjogJ2Jh
cicKKyAgICAgICAgfSksCisgICAgICAgICJhIFBPU1QgcmVxdWVzdCB0byAvYS1wYXRoIjogbWFj
cm9zLmFzc2VydFBvc3QoOTA5MiwgJ2EtcGF0aCcsIHsKKyAgICAgICAgICBmb286ICdmb28nLAor
ICAgICAgICAgIGJhcjogJ2JhcicKKyAgICAgICAgfSkKKyAgICAgIH0KKyAgICB9CisgIH0KK30p
LmV4cG9ydChtb2R1bGUpOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1
bGVzL3JlYWN0LWRvbS9MSUNFTlNFIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3Jl
YWN0LWRvbS9MSUNFTlNFCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkxYjhmNmY3NmZmMDJhMTUzNmEzNjNkYjNhN2Ex
Y2NlNDE4YWYzYzIKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21v
ZHVsZXMvcmVhY3QtZG9tL0xJQ0VOU0UKQEAgLTAsMCArMSwzMSBAQAorQlNEIExpY2Vuc2UKKwor
Rm9yIFJlYWN0IHNvZnR3YXJlCisKK0NvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9v
aywgSW5jLgorQWxsIHJpZ2h0cyByZXNlcnZlZC4KKworUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwK
K2FyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
IG1ldDoKKworICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzCisgICBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKworICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAorICAgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUg
ZG9jdW1lbnRhdGlvbgorICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisKKyAqIE5laXRoZXIgdGhlIG5hbWUgRmFjZWJvb2sgbm9yIHRoZSBu
YW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvCisgICBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YworICAgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorCitUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
CitBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IKK0FOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OCitBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKK1NP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9Q
QVRFTlRTIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9QQVRFTlRT
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjljOWY4ZTg3YThmNDkwZmY4NjE2OTBlYzI5ZjNkMTllZTYyZTE2YTUKLS0t
IC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9t
L1BBVEVOVFMKQEAgLTAsMCArMSwzMyBAQAorQWRkaXRpb25hbCBHcmFudCBvZiBQYXRlbnQgUmln
aHRzIFZlcnNpb24gMgorCisiU29mdHdhcmUiIG1lYW5zIHRoZSBSZWFjdCBzb2Z0d2FyZSBkaXN0
cmlidXRlZCBieSBGYWNlYm9vaywgSW5jLgorCitGYWNlYm9vaywgSW5jLiAoIkZhY2Vib29rIikg
aGVyZWJ5IGdyYW50cyB0byBlYWNoIHJlY2lwaWVudCBvZiB0aGUgU29mdHdhcmUKKygieW91Iikg
YSBwZXJwZXR1YWwsIHdvcmxkd2lkZSwgcm95YWx0eS1mcmVlLCBub24tZXhjbHVzaXZlLCBpcnJl
dm9jYWJsZQorKHN1YmplY3QgdG8gdGhlIHRlcm1pbmF0aW9uIHByb3Zpc2lvbiBiZWxvdykgbGlj
ZW5zZSB1bmRlciBhbnkgTmVjZXNzYXJ5CitDbGFpbXMsIHRvIG1ha2UsIGhhdmUgbWFkZSwgdXNl
LCBzZWxsLCBvZmZlciB0byBzZWxsLCBpbXBvcnQsIGFuZCBvdGhlcndpc2UKK3RyYW5zZmVyIHRo
ZSBTb2Z0d2FyZS4gRm9yIGF2b2lkYW5jZSBvZiBkb3VidCwgbm8gbGljZW5zZSBpcyBncmFudGVk
IHVuZGVyCitGYWNlYm9vaydzIHJpZ2h0cyBpbiBhbnkgcGF0ZW50IGNsYWltcyB0aGF0IGFyZSBp
bmZyaW5nZWQgYnkgKGkpIG1vZGlmaWNhdGlvbnMKK3RvIHRoZSBTb2Z0d2FyZSBtYWRlIGJ5IHlv
dSBvciBhbnkgdGhpcmQgcGFydHkgb3IgKGlpKSB0aGUgU29mdHdhcmUgaW4KK2NvbWJpbmF0aW9u
IHdpdGggYW55IHNvZnR3YXJlIG9yIG90aGVyIHRlY2hub2xvZ3kuCisKK1RoZSBsaWNlbnNlIGdy
YW50ZWQgaGVyZXVuZGVyIHdpbGwgdGVybWluYXRlLCBhdXRvbWF0aWNhbGx5IGFuZCB3aXRob3V0
IG5vdGljZSwKK2lmIHlvdSAob3IgYW55IG9mIHlvdXIgc3Vic2lkaWFyaWVzLCBjb3Jwb3JhdGUg
YWZmaWxpYXRlcyBvciBhZ2VudHMpIGluaXRpYXRlCitkaXJlY3RseSBvciBpbmRpcmVjdGx5LCBv
ciB0YWtlIGEgZGlyZWN0IGZpbmFuY2lhbCBpbnRlcmVzdCBpbiwgYW55IFBhdGVudAorQXNzZXJ0
aW9uOiAoaSkgYWdhaW5zdCBGYWNlYm9vayBvciBhbnkgb2YgaXRzIHN1YnNpZGlhcmllcyBvciBj
b3Jwb3JhdGUKK2FmZmlsaWF0ZXMsIChpaSkgYWdhaW5zdCBhbnkgcGFydHkgaWYgc3VjaCBQYXRl
bnQgQXNzZXJ0aW9uIGFyaXNlcyBpbiB3aG9sZSBvcgoraW4gcGFydCBmcm9tIGFueSBzb2Z0d2Fy
ZSwgdGVjaG5vbG9neSwgcHJvZHVjdCBvciBzZXJ2aWNlIG9mIEZhY2Vib29rIG9yIGFueSBvZgor
aXRzIHN1YnNpZGlhcmllcyBvciBjb3Jwb3JhdGUgYWZmaWxpYXRlcywgb3IgKGlpaSkgYWdhaW5z
dCBhbnkgcGFydHkgcmVsYXRpbmcKK3RvIHRoZSBTb2Z0d2FyZS4gTm90d2l0aHN0YW5kaW5nIHRo
ZSBmb3JlZ29pbmcsIGlmIEZhY2Vib29rIG9yIGFueSBvZiBpdHMKK3N1YnNpZGlhcmllcyBvciBj
b3Jwb3JhdGUgYWZmaWxpYXRlcyBmaWxlcyBhIGxhd3N1aXQgYWxsZWdpbmcgcGF0ZW50CitpbmZy
aW5nZW1lbnQgYWdhaW5zdCB5b3UgaW4gdGhlIGZpcnN0IGluc3RhbmNlLCBhbmQgeW91IHJlc3Bv
bmQgYnkgZmlsaW5nIGEKK3BhdGVudCBpbmZyaW5nZW1lbnQgY291bnRlcmNsYWltIGluIHRoYXQg
bGF3c3VpdCBhZ2FpbnN0IHRoYXQgcGFydHkgdGhhdCBpcwordW5yZWxhdGVkIHRvIHRoZSBTb2Z0
d2FyZSwgdGhlIGxpY2Vuc2UgZ3JhbnRlZCBoZXJldW5kZXIgd2lsbCBub3QgdGVybWluYXRlCit1
bmRlciBzZWN0aW9uIChpKSBvZiB0aGlzIHBhcmFncmFwaCBkdWUgdG8gc3VjaCBjb3VudGVyY2xh
aW0uCisKK0EgIk5lY2Vzc2FyeSBDbGFpbSIgaXMgYSBjbGFpbSBvZiBhIHBhdGVudCBvd25lZCBi
eSBGYWNlYm9vayB0aGF0IGlzCituZWNlc3NhcmlseSBpbmZyaW5nZWQgYnkgdGhlIFNvZnR3YXJl
IHN0YW5kaW5nIGFsb25lLgorCitBICJQYXRlbnQgQXNzZXJ0aW9uIiBpcyBhbnkgbGF3c3VpdCBv
ciBvdGhlciBhY3Rpb24gYWxsZWdpbmcgZGlyZWN0LCBpbmRpcmVjdCwKK29yIGNvbnRyaWJ1dG9y
eSBpbmZyaW5nZW1lbnQgb3IgaW5kdWNlbWVudCB0byBpbmZyaW5nZSBhbnkgcGF0ZW50LCBpbmNs
dWRpbmcgYQorY3Jvc3MtY2xhaW0gb3IgY291bnRlcmNsYWltLgpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9SRUFETUUubWQgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL1JFQURNRS5tZApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43OWU1
MTMzYTE2MTgzZTFjYzk3MjM3MWRkN2M1NTM4NWI2NGNjNDhkCi0tLSAvZGV2L251bGwKKysrIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9SRUFETUUubWQKQEAgLTAs
MCArMSw1NCBAQAorIyBgcmVhY3QtZG9tYAorCitUaGlzIHBhY2thZ2Ugc2VydmVzIGFzIHRoZSBl
bnRyeSBwb2ludCBvZiB0aGUgRE9NLXJlbGF0ZWQgcmVuZGVyaW5nIHBhdGhzLiBJdCBpcyBpbnRl
bmRlZCB0byBiZSBwYWlyZWQgd2l0aCB0aGUgaXNvbW9ycGhpYyBSZWFjdCwgd2hpY2ggd2lsbCBi
ZSBzaGlwcGVkIGFzIGByZWFjdGAgdG8gbnBtLgorCisjIyBJbnN0YWxsYXRpb24KKworYGBgc2gK
K25wbSBpbnN0YWxsIHJlYWN0IHJlYWN0LWRvbQorYGBgCisKKyMjIFVzYWdlCisKKyMjIyBJbiB0
aGUgYnJvd3NlcgorCitgYGBqcwordmFyIFJlYWN0ID0gcmVxdWlyZSgncmVhY3QnKTsKK3ZhciBS
ZWFjdERPTSA9IHJlcXVpcmUoJ3JlYWN0LWRvbScpOworCitjbGFzcyBNeUNvbXBvbmVudCBleHRl
bmRzIFJlYWN0LkNvbXBvbmVudCB7CisgIHJlbmRlcigpIHsKKyAgICByZXR1cm4gPGRpdj5IZWxs
byBXb3JsZDwvZGl2PjsKKyAgfQorfQorCitSZWFjdERPTS5yZW5kZXIoPE15Q29tcG9uZW50IC8+
LCBub2RlKTsKK2BgYAorCisjIyMgT24gdGhlIHNlcnZlcgorCitgYGBqcwordmFyIFJlYWN0ID0g
cmVxdWlyZSgncmVhY3QnKTsKK3ZhciBSZWFjdERPTVNlcnZlciA9IHJlcXVpcmUoJ3JlYWN0LWRv
bS9zZXJ2ZXInKTsKKworY2xhc3MgTXlDb21wb25lbnQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQg
eworICByZW5kZXIoKSB7CisgICAgcmV0dXJuIDxkaXY+SGVsbG8gV29ybGQ8L2Rpdj47CisgIH0K
K30KKworUmVhY3RET01TZXJ2ZXIucmVuZGVyVG9TdHJpbmcoPE15Q29tcG9uZW50IC8+KTsKK2Bg
YAorCisjIyBBUEkKKworIyMjIGByZWFjdC1kb21gCisKKy0gYGZpbmRET01Ob2RlYAorLSBgcmVu
ZGVyYAorLSBgdW5tb3VudENvbXBvbmVudEF0Tm9kZWAKKworIyMjIGByZWFjdC1kb20vc2VydmVy
YAorCistIGByZW5kZXJUb1N0cmluZ2AKKy0gYHJlbmRlclRvU3RhdGljTWFya3VwYApkaWZmIC0t
Z2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9kaXN0L3JlYWN0
LWRvbS1zZXJ2ZXIuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9t
L2Rpc3QvcmVhY3QtZG9tLXNlcnZlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lODQ2YjFjMTdmMTI2ODY0NGM4
OTU5ZjJmNTE2NmQyNjNmYzhmMTkyCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVh
Y3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9kaXN0L3JlYWN0LWRvbS1zZXJ2ZXIuanMKQEAgLTAs
MCArMSwxNjE4NiBAQAorIC8qKgorICAqIFJlYWN0RE9NU2VydmVyIHYxNS40LjAKKyAgKi8KKwor
OyhmdW5jdGlvbihmKSB7CisgIC8vIENvbW1vbkpTCisgIGlmICh0eXBlb2YgZXhwb3J0cyA9PT0g
Im9iamVjdCIgJiYgdHlwZW9mIG1vZHVsZSAhPT0gInVuZGVmaW5lZCIpIHsKKyAgICBmKHJlcXVp
cmUoJ3JlYWN0JykpOworCisgIC8vIFJlcXVpcmVKUworICB9IGVsc2UgaWYgKHR5cGVvZiBkZWZp
bmUgPT09ICJmdW5jdGlvbiIgJiYgZGVmaW5lLmFtZCkgeworICAgIHJlcXVpcmUoWydyZWFjdCdd
LCBmKTsKKworICAvLyA8c2NyaXB0PgorICB9IGVsc2UgeworICAgIHZhciBnOworICAgIGlmICh0
eXBlb2Ygd2luZG93ICE9PSAidW5kZWZpbmVkIikgeworICAgICAgZyA9IHdpbmRvdzsKKyAgICB9
IGVsc2UgaWYgKHR5cGVvZiBnbG9iYWwgIT09ICJ1bmRlZmluZWQiKSB7CisgICAgICBnID0gZ2xv
YmFsOworICAgIH0gZWxzZSBpZiAodHlwZW9mIHNlbGYgIT09ICJ1bmRlZmluZWQiKSB7CisgICAg
ICBnID0gc2VsZjsKKyAgICB9IGVsc2UgeworICAgICAgLy8gd29ya3MgcHJvdmlkaW5nIHdlJ3Jl
IG5vdCBpbiAidXNlIHN0cmljdCI7CisgICAgICAvLyBuZWVkZWQgZm9yIEphdmEgOCBOYXNob3Ju
CisgICAgICAvLyBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy8z
MDM3CisgICAgICBnID0gdGhpczsKKyAgICB9CisgICAgZihnLlJlYWN0KQorICB9Cit9KShmdW5j
dGlvbihSZWFjdCkgeworICAoZnVuY3Rpb24oZil7aWYodHlwZW9mIGV4cG9ydHM9PT0ib2JqZWN0
IiYmdHlwZW9mIG1vZHVsZSE9PSJ1bmRlZmluZWQiKXttb2R1bGUuZXhwb3J0cz1mKCl9ZWxzZSBp
Zih0eXBlb2YgZGVmaW5lPT09ImZ1bmN0aW9uIiYmZGVmaW5lLmFtZCl7ZGVmaW5lKFtdLGYpfWVs
c2V7dmFyIGc7aWYodHlwZW9mIHdpbmRvdyE9PSJ1bmRlZmluZWQiKXtnPXdpbmRvd31lbHNlIGlm
KHR5cGVvZiBnbG9iYWwhPT0idW5kZWZpbmVkIil7Zz1nbG9iYWx9ZWxzZSBpZih0eXBlb2Ygc2Vs
ZiE9PSJ1bmRlZmluZWQiKXtnPXNlbGZ9ZWxzZXtnPXRoaXN9Zy5SZWFjdERPTVNlcnZlciA9IGYo
KX19KShmdW5jdGlvbigpe3ZhciBkZWZpbmUsbW9kdWxlLGV4cG9ydHM7cmV0dXJuIChmdW5jdGlv
biBlKHQsbixyKXtmdW5jdGlvbiBzKG8sdSl7aWYoIW5bb10pe2lmKCF0W29dKXt2YXIgYT10eXBl
b2YgcmVxdWlyZT09ImZ1bmN0aW9uIiYmcmVxdWlyZTtpZighdSYmYSlyZXR1cm4gYShvLCEwKTtp
ZihpKXJldHVybiBpKG8sITApO3ZhciBmPW5ldyBFcnJvcigiQ2Fubm90IGZpbmQgbW9kdWxlICci
K28rIiciKTt0aHJvdyBmLmNvZGU9Ik1PRFVMRV9OT1RfRk9VTkQiLGZ9dmFyIGw9bltvXT17ZXhw
b3J0czp7fX07dFtvXVswXS5jYWxsKGwuZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgbj10W29dWzFd
W2VdO3JldHVybiBzKG4/bjplKX0sbCxsLmV4cG9ydHMsZSx0LG4scil9cmV0dXJuIG5bb10uZXhw
b3J0c312YXIgaT10eXBlb2YgcmVxdWlyZT09ImZ1bmN0aW9uIiYmcmVxdWlyZTtmb3IodmFyIG89
MDtvPHIubGVuZ3RoO28rKylzKHJbb10pO3JldHVybiBzfSkoezE6W2Z1bmN0aW9uKF9kZXJlcV8s
bW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9v
aywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAq
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4g
QW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ug
c3RyaWN0JzsKKwordmFyIEFSSUFET01Qcm9wZXJ0eUNvbmZpZyA9IHsKKyAgUHJvcGVydGllczog
eworICAgIC8vIEdsb2JhbCBTdGF0ZXMgYW5kIFByb3BlcnRpZXMKKyAgICAnYXJpYS1jdXJyZW50
JzogMCwgLy8gc3RhdGUKKyAgICAnYXJpYS1kZXRhaWxzJzogMCwKKyAgICAnYXJpYS1kaXNhYmxl
ZCc6IDAsIC8vIHN0YXRlCisgICAgJ2FyaWEtaGlkZGVuJzogMCwgLy8gc3RhdGUKKyAgICAnYXJp
YS1pbnZhbGlkJzogMCwgLy8gc3RhdGUKKyAgICAnYXJpYS1rZXlzaG9ydGN1dHMnOiAwLAorICAg
ICdhcmlhLWxhYmVsJzogMCwKKyAgICAnYXJpYS1yb2xlZGVzY3JpcHRpb24nOiAwLAorICAgIC8v
IFdpZGdldCBBdHRyaWJ1dGVzCisgICAgJ2FyaWEtYXV0b2NvbXBsZXRlJzogMCwKKyAgICAnYXJp
YS1jaGVja2VkJzogMCwKKyAgICAnYXJpYS1leHBhbmRlZCc6IDAsCisgICAgJ2FyaWEtaGFzcG9w
dXAnOiAwLAorICAgICdhcmlhLWxldmVsJzogMCwKKyAgICAnYXJpYS1tb2RhbCc6IDAsCisgICAg
J2FyaWEtbXVsdGlsaW5lJzogMCwKKyAgICAnYXJpYS1tdWx0aXNlbGVjdGFibGUnOiAwLAorICAg
ICdhcmlhLW9yaWVudGF0aW9uJzogMCwKKyAgICAnYXJpYS1wbGFjZWhvbGRlcic6IDAsCisgICAg
J2FyaWEtcHJlc3NlZCc6IDAsCisgICAgJ2FyaWEtcmVhZG9ubHknOiAwLAorICAgICdhcmlhLXJl
cXVpcmVkJzogMCwKKyAgICAnYXJpYS1zZWxlY3RlZCc6IDAsCisgICAgJ2FyaWEtc29ydCc6IDAs
CisgICAgJ2FyaWEtdmFsdWVtYXgnOiAwLAorICAgICdhcmlhLXZhbHVlbWluJzogMCwKKyAgICAn
YXJpYS12YWx1ZW5vdyc6IDAsCisgICAgJ2FyaWEtdmFsdWV0ZXh0JzogMCwKKyAgICAvLyBMaXZl
IFJlZ2lvbiBBdHRyaWJ1dGVzCisgICAgJ2FyaWEtYXRvbWljJzogMCwKKyAgICAnYXJpYS1idXN5
JzogMCwKKyAgICAnYXJpYS1saXZlJzogMCwKKyAgICAnYXJpYS1yZWxldmFudCc6IDAsCisgICAg
Ly8gRHJhZy1hbmQtRHJvcCBBdHRyaWJ1dGVzCisgICAgJ2FyaWEtZHJvcGVmZmVjdCc6IDAsCisg
ICAgJ2FyaWEtZ3JhYmJlZCc6IDAsCisgICAgLy8gUmVsYXRpb25zaGlwIEF0dHJpYnV0ZXMKKyAg
ICAnYXJpYS1hY3RpdmVkZXNjZW5kYW50JzogMCwKKyAgICAnYXJpYS1jb2xjb3VudCc6IDAsCisg
ICAgJ2FyaWEtY29saW5kZXgnOiAwLAorICAgICdhcmlhLWNvbHNwYW4nOiAwLAorICAgICdhcmlh
LWNvbnRyb2xzJzogMCwKKyAgICAnYXJpYS1kZXNjcmliZWRieSc6IDAsCisgICAgJ2FyaWEtZXJy
b3JtZXNzYWdlJzogMCwKKyAgICAnYXJpYS1mbG93dG8nOiAwLAorICAgICdhcmlhLWxhYmVsbGVk
YnknOiAwLAorICAgICdhcmlhLW93bnMnOiAwLAorICAgICdhcmlhLXBvc2luc2V0JzogMCwKKyAg
ICAnYXJpYS1yb3djb3VudCc6IDAsCisgICAgJ2FyaWEtcm93aW5kZXgnOiAwLAorICAgICdhcmlh
LXJvd3NwYW4nOiAwLAorICAgICdhcmlhLXNldHNpemUnOiAwCisgIH0sCisgIERPTUF0dHJpYnV0
ZU5hbWVzOiB7fSwKKyAgRE9NUHJvcGVydHlOYW1lczoge30KK307CisKK21vZHVsZS5leHBvcnRz
ID0gQVJJQURPTVByb3BlcnR5Q29uZmlnOworfSx7fV0sMjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1
bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJ
bmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElD
RU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUg
UEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJp
Y3QnOworCit2YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gX2RlcmVxXygzMik7CisKK3ZhciBm
b2N1c05vZGUgPSBfZGVyZXFfKDEzNCk7CisKK3ZhciBBdXRvRm9jdXNVdGlscyA9IHsKKyAgZm9j
dXNET01Db21wb25lbnQ6IGZ1bmN0aW9uICgpIHsKKyAgICBmb2N1c05vZGUoUmVhY3RET01Db21w
b25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UodGhpcykpOworICB9Cit9OworCittb2R1bGUu
ZXhwb3J0cyA9IEF1dG9Gb2N1c1V0aWxzOworfSx7IjEzNCI6MTM0LCIzMiI6MzJ9XSwzOltmdW5j
dGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJl
c2VudCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBz
b3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgor
ICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIEV2ZW50UHJvcGFnYXRvcnMgPSBfZGVyZXFfKDE5
KTsKK3ZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IF9kZXJlcV8oMTI2KTsKK3ZhciBGYWxsYmFj
a0NvbXBvc2l0aW9uU3RhdGUgPSBfZGVyZXFfKDIwKTsKK3ZhciBTeW50aGV0aWNDb21wb3NpdGlv
bkV2ZW50ID0gX2RlcmVxXyg4Mik7Cit2YXIgU3ludGhldGljSW5wdXRFdmVudCA9IF9kZXJlcV8o
ODYpOworCit2YXIgRU5EX0tFWUNPREVTID0gWzksIDEzLCAyNywgMzJdOyAvLyBUYWIsIFJldHVy
biwgRXNjLCBTcGFjZQordmFyIFNUQVJUX0tFWUNPREUgPSAyMjk7CisKK3ZhciBjYW5Vc2VDb21w
b3NpdGlvbkV2ZW50ID0gRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NICYmICdDb21wb3Np
dGlvbkV2ZW50JyBpbiB3aW5kb3c7CisKK3ZhciBkb2N1bWVudE1vZGUgPSBudWxsOworaWYgKEV4
ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSAmJiAnZG9jdW1lbnRNb2RlJyBpbiBkb2N1bWVu
dCkgeworICBkb2N1bWVudE1vZGUgPSBkb2N1bWVudC5kb2N1bWVudE1vZGU7Cit9CisKKy8vIFdl
YmtpdCBvZmZlcnMgYSB2ZXJ5IHVzZWZ1bCBgdGV4dElucHV0YCBldmVudCB0aGF0IGNhbiBiZSB1
c2VkIHRvCisvLyBkaXJlY3RseSByZXByZXNlbnQgYGJlZm9yZUlucHV0YC4gVGhlIElFIGB0ZXh0
aW5wdXRgIGV2ZW50IGlzIG5vdCBhcworLy8gdXNlZnVsLCBzbyB3ZSBkb24ndCB1c2UgaXQuCit2
YXIgY2FuVXNlVGV4dElucHV0RXZlbnQgPSBFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00g
JiYgJ1RleHRFdmVudCcgaW4gd2luZG93ICYmICFkb2N1bWVudE1vZGUgJiYgIWlzUHJlc3RvKCk7
CisKKy8vIEluIElFOSssIHdlIGhhdmUgYWNjZXNzIHRvIGNvbXBvc2l0aW9uIGV2ZW50cywgYnV0
IHRoZSBkYXRhIHN1cHBsaWVkCisvLyBieSB0aGUgbmF0aXZlIGNvbXBvc2l0aW9uZW5kIGV2ZW50
IG1heSBiZSBpbmNvcnJlY3QuIEphcGFuZXNlIGlkZW9ncmFwaGljCisvLyBzcGFjZXMsIGZvciBp
bnN0YW5jZSAoXHUzMDAwKSBhcmUgbm90IHJlY29yZGVkIGNvcnJlY3RseS4KK3ZhciB1c2VGYWxs
YmFja0NvbXBvc2l0aW9uRGF0YSA9IEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSAmJiAo
IWNhblVzZUNvbXBvc2l0aW9uRXZlbnQgfHwgZG9jdW1lbnRNb2RlICYmIGRvY3VtZW50TW9kZSA+
IDggJiYgZG9jdW1lbnRNb2RlIDw9IDExKTsKKworLyoqCisgKiBPcGVyYSA8PSAxMiBpbmNsdWRl
cyBUZXh0RXZlbnQgaW4gd2luZG93LCBidXQgZG9lcyBub3QgZmlyZQorICogdGV4dCBpbnB1dCBl
dmVudHMuIFJlbHkgb24ga2V5cHJlc3MgaW5zdGVhZC4KKyAqLworZnVuY3Rpb24gaXNQcmVzdG8o
KSB7CisgIHZhciBvcGVyYSA9IHdpbmRvdy5vcGVyYTsKKyAgcmV0dXJuIHR5cGVvZiBvcGVyYSA9
PT0gJ29iamVjdCcgJiYgdHlwZW9mIG9wZXJhLnZlcnNpb24gPT09ICdmdW5jdGlvbicgJiYgcGFy
c2VJbnQob3BlcmEudmVyc2lvbigpLCAxMCkgPD0gMTI7Cit9CisKK3ZhciBTUEFDRUJBUl9DT0RF
ID0gMzI7Cit2YXIgU1BBQ0VCQVJfQ0hBUiA9IFN0cmluZy5mcm9tQ2hhckNvZGUoU1BBQ0VCQVJf
Q09ERSk7CisKKy8vIEV2ZW50cyBhbmQgdGhlaXIgY29ycmVzcG9uZGluZyBwcm9wZXJ0eSBuYW1l
cy4KK3ZhciBldmVudFR5cGVzID0geworICBiZWZvcmVJbnB1dDogeworICAgIHBoYXNlZFJlZ2lz
dHJhdGlvbk5hbWVzOiB7CisgICAgICBidWJibGVkOiAnb25CZWZvcmVJbnB1dCcsCisgICAgICBj
YXB0dXJlZDogJ29uQmVmb3JlSW5wdXRDYXB0dXJlJworICAgIH0sCisgICAgZGVwZW5kZW5jaWVz
OiBbJ3RvcENvbXBvc2l0aW9uRW5kJywgJ3RvcEtleVByZXNzJywgJ3RvcFRleHRJbnB1dCcsICd0
b3BQYXN0ZSddCisgIH0sCisgIGNvbXBvc2l0aW9uRW5kOiB7CisgICAgcGhhc2VkUmVnaXN0cmF0
aW9uTmFtZXM6IHsKKyAgICAgIGJ1YmJsZWQ6ICdvbkNvbXBvc2l0aW9uRW5kJywKKyAgICAgIGNh
cHR1cmVkOiAnb25Db21wb3NpdGlvbkVuZENhcHR1cmUnCisgICAgfSwKKyAgICBkZXBlbmRlbmNp
ZXM6IFsndG9wQmx1cicsICd0b3BDb21wb3NpdGlvbkVuZCcsICd0b3BLZXlEb3duJywgJ3RvcEtl
eVByZXNzJywgJ3RvcEtleVVwJywgJ3RvcE1vdXNlRG93biddCisgIH0sCisgIGNvbXBvc2l0aW9u
U3RhcnQ6IHsKKyAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczogeworICAgICAgYnViYmxlZDog
J29uQ29tcG9zaXRpb25TdGFydCcsCisgICAgICBjYXB0dXJlZDogJ29uQ29tcG9zaXRpb25TdGFy
dENhcHR1cmUnCisgICAgfSwKKyAgICBkZXBlbmRlbmNpZXM6IFsndG9wQmx1cicsICd0b3BDb21w
b3NpdGlvblN0YXJ0JywgJ3RvcEtleURvd24nLCAndG9wS2V5UHJlc3MnLCAndG9wS2V5VXAnLCAn
dG9wTW91c2VEb3duJ10KKyAgfSwKKyAgY29tcG9zaXRpb25VcGRhdGU6IHsKKyAgICBwaGFzZWRS
ZWdpc3RyYXRpb25OYW1lczogeworICAgICAgYnViYmxlZDogJ29uQ29tcG9zaXRpb25VcGRhdGUn
LAorICAgICAgY2FwdHVyZWQ6ICdvbkNvbXBvc2l0aW9uVXBkYXRlQ2FwdHVyZScKKyAgICB9LAor
ICAgIGRlcGVuZGVuY2llczogWyd0b3BCbHVyJywgJ3RvcENvbXBvc2l0aW9uVXBkYXRlJywgJ3Rv
cEtleURvd24nLCAndG9wS2V5UHJlc3MnLCAndG9wS2V5VXAnLCAndG9wTW91c2VEb3duJ10KKyAg
fQorfTsKKworLy8gVHJhY2sgd2hldGhlciB3ZSd2ZSBldmVyIGhhbmRsZWQgYSBrZXlwcmVzcyBv
biB0aGUgc3BhY2Uga2V5LgordmFyIGhhc1NwYWNlS2V5cHJlc3MgPSBmYWxzZTsKKworLyoqCisg
KiBSZXR1cm4gd2hldGhlciBhIG5hdGl2ZSBrZXlwcmVzcyBldmVudCBpcyBhc3N1bWVkIHRvIGJl
IGEgY29tbWFuZC4KKyAqIFRoaXMgaXMgcmVxdWlyZWQgYmVjYXVzZSBGaXJlZm94IGZpcmVzIGBr
ZXlwcmVzc2AgZXZlbnRzIGZvciBrZXkgY29tbWFuZHMKKyAqIChjdXQsIGNvcHksIHNlbGVjdC1h
bGwsIGV0Yy4pIGV2ZW4gdGhvdWdoIG5vIGNoYXJhY3RlciBpcyBpbnNlcnRlZC4KKyAqLworZnVu
Y3Rpb24gaXNLZXlwcmVzc0NvbW1hbmQobmF0aXZlRXZlbnQpIHsKKyAgcmV0dXJuIChuYXRpdmVF
dmVudC5jdHJsS2V5IHx8IG5hdGl2ZUV2ZW50LmFsdEtleSB8fCBuYXRpdmVFdmVudC5tZXRhS2V5
KSAmJgorICAvLyBjdHJsS2V5ICYmIGFsdEtleSBpcyBlcXVpdmFsZW50IHRvIEFsdEdyLCBhbmQg
aXMgbm90IGEgY29tbWFuZC4KKyAgIShuYXRpdmVFdmVudC5jdHJsS2V5ICYmIG5hdGl2ZUV2ZW50
LmFsdEtleSk7Cit9CisKKy8qKgorICogVHJhbnNsYXRlIG5hdGl2ZSB0b3AgbGV2ZWwgZXZlbnRz
IGludG8gZXZlbnQgdHlwZXMuCisgKgorICogQHBhcmFtIHtzdHJpbmd9IHRvcExldmVsVHlwZQor
ICogQHJldHVybiB7b2JqZWN0fQorICovCitmdW5jdGlvbiBnZXRDb21wb3NpdGlvbkV2ZW50VHlw
ZSh0b3BMZXZlbFR5cGUpIHsKKyAgc3dpdGNoICh0b3BMZXZlbFR5cGUpIHsKKyAgICBjYXNlICd0
b3BDb21wb3NpdGlvblN0YXJ0JzoKKyAgICAgIHJldHVybiBldmVudFR5cGVzLmNvbXBvc2l0aW9u
U3RhcnQ7CisgICAgY2FzZSAndG9wQ29tcG9zaXRpb25FbmQnOgorICAgICAgcmV0dXJuIGV2ZW50
VHlwZXMuY29tcG9zaXRpb25FbmQ7CisgICAgY2FzZSAndG9wQ29tcG9zaXRpb25VcGRhdGUnOgor
ICAgICAgcmV0dXJuIGV2ZW50VHlwZXMuY29tcG9zaXRpb25VcGRhdGU7CisgIH0KK30KKworLyoq
CisgKiBEb2VzIG91ciBmYWxsYmFjayBiZXN0LWd1ZXNzIG1vZGVsIHRoaW5rIHRoaXMgZXZlbnQg
c2lnbmlmaWVzIHRoYXQKKyAqIGNvbXBvc2l0aW9uIGhhcyBiZWd1bj8KKyAqCisgKiBAcGFyYW0g
e3N0cmluZ30gdG9wTGV2ZWxUeXBlCisgKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQKKyAq
IEByZXR1cm4ge2Jvb2xlYW59CisgKi8KK2Z1bmN0aW9uIGlzRmFsbGJhY2tDb21wb3NpdGlvblN0
YXJ0KHRvcExldmVsVHlwZSwgbmF0aXZlRXZlbnQpIHsKKyAgcmV0dXJuIHRvcExldmVsVHlwZSA9
PT0gJ3RvcEtleURvd24nICYmIG5hdGl2ZUV2ZW50LmtleUNvZGUgPT09IFNUQVJUX0tFWUNPREU7
Cit9CisKKy8qKgorICogRG9lcyBvdXIgZmFsbGJhY2sgbW9kZSB0aGluayB0aGF0IHRoaXMgZXZl
bnQgaXMgdGhlIGVuZCBvZiBjb21wb3NpdGlvbj8KKyAqCisgKiBAcGFyYW0ge3N0cmluZ30gdG9w
TGV2ZWxUeXBlCisgKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQKKyAqIEByZXR1cm4ge2Jv
b2xlYW59CisgKi8KK2Z1bmN0aW9uIGlzRmFsbGJhY2tDb21wb3NpdGlvbkVuZCh0b3BMZXZlbFR5
cGUsIG5hdGl2ZUV2ZW50KSB7CisgIHN3aXRjaCAodG9wTGV2ZWxUeXBlKSB7CisgICAgY2FzZSAn
dG9wS2V5VXAnOgorICAgICAgLy8gQ29tbWFuZCBrZXlzIGluc2VydCBvciBjbGVhciBJTUUgaW5w
dXQuCisgICAgICByZXR1cm4gRU5EX0tFWUNPREVTLmluZGV4T2YobmF0aXZlRXZlbnQua2V5Q29k
ZSkgIT09IC0xOworICAgIGNhc2UgJ3RvcEtleURvd24nOgorICAgICAgLy8gRXhwZWN0IElNRSBr
ZXlDb2RlIG9uIGVhY2gga2V5ZG93bi4gSWYgd2UgZ2V0IGFueSBvdGhlcgorICAgICAgLy8gY29k
ZSB3ZSBtdXN0IGhhdmUgZXhpdGVkIGVhcmxpZXIuCisgICAgICByZXR1cm4gbmF0aXZlRXZlbnQu
a2V5Q29kZSAhPT0gU1RBUlRfS0VZQ09ERTsKKyAgICBjYXNlICd0b3BLZXlQcmVzcyc6CisgICAg
Y2FzZSAndG9wTW91c2VEb3duJzoKKyAgICBjYXNlICd0b3BCbHVyJzoKKyAgICAgIC8vIEV2ZW50
cyBhcmUgbm90IHBvc3NpYmxlIHdpdGhvdXQgY2FuY2VsbGluZyBJTUUuCisgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgcmV0dXJuIGZhbHNlOworICB9Cit9CisKKy8qKgor
ICogR29vZ2xlIElucHV0IFRvb2xzIHByb3ZpZGVzIGNvbXBvc2l0aW9uIGRhdGEgdmlhIGEgQ3Vz
dG9tRXZlbnQsCisgKiB3aXRoIHRoZSBgZGF0YWAgcHJvcGVydHkgcG9wdWxhdGVkIGluIHRoZSBg
ZGV0YWlsYCBvYmplY3QuIElmIHRoaXMKKyAqIGlzIGF2YWlsYWJsZSBvbiB0aGUgZXZlbnQgb2Jq
ZWN0LCB1c2UgaXQuIElmIG5vdCwgdGhpcyBpcyBhIHBsYWluCisgKiBjb21wb3NpdGlvbiBldmVu
dCBhbmQgd2UgaGF2ZSBub3RoaW5nIHNwZWNpYWwgdG8gZXh0cmFjdC4KKyAqCisgKiBAcGFyYW0g
e29iamVjdH0gbmF0aXZlRXZlbnQKKyAqIEByZXR1cm4gez9zdHJpbmd9CisgKi8KK2Z1bmN0aW9u
IGdldERhdGFGcm9tQ3VzdG9tRXZlbnQobmF0aXZlRXZlbnQpIHsKKyAgdmFyIGRldGFpbCA9IG5h
dGl2ZUV2ZW50LmRldGFpbDsKKyAgaWYgKHR5cGVvZiBkZXRhaWwgPT09ICdvYmplY3QnICYmICdk
YXRhJyBpbiBkZXRhaWwpIHsKKyAgICByZXR1cm4gZGV0YWlsLmRhdGE7CisgIH0KKyAgcmV0dXJu
IG51bGw7Cit9CisKKy8vIFRyYWNrIHRoZSBjdXJyZW50IElNRSBjb21wb3NpdGlvbiBmYWxsYmFj
ayBvYmplY3QsIGlmIGFueS4KK3ZhciBjdXJyZW50Q29tcG9zaXRpb24gPSBudWxsOworCisvKioK
KyAqIEByZXR1cm4gez9vYmplY3R9IEEgU3ludGhldGljQ29tcG9zaXRpb25FdmVudC4KKyAqLwor
ZnVuY3Rpb24gZXh0cmFjdENvbXBvc2l0aW9uRXZlbnQodG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0
LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHsKKyAgdmFyIGV2ZW50VHlwZTsKKyAg
dmFyIGZhbGxiYWNrRGF0YTsKKworICBpZiAoY2FuVXNlQ29tcG9zaXRpb25FdmVudCkgeworICAg
IGV2ZW50VHlwZSA9IGdldENvbXBvc2l0aW9uRXZlbnRUeXBlKHRvcExldmVsVHlwZSk7CisgIH0g
ZWxzZSBpZiAoIWN1cnJlbnRDb21wb3NpdGlvbikgeworICAgIGlmIChpc0ZhbGxiYWNrQ29tcG9z
aXRpb25TdGFydCh0b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KSkgeworICAgICAgZXZlbnRUeXBl
ID0gZXZlbnRUeXBlcy5jb21wb3NpdGlvblN0YXJ0OworICAgIH0KKyAgfSBlbHNlIGlmIChpc0Zh
bGxiYWNrQ29tcG9zaXRpb25FbmQodG9wTGV2ZWxUeXBlLCBuYXRpdmVFdmVudCkpIHsKKyAgICBl
dmVudFR5cGUgPSBldmVudFR5cGVzLmNvbXBvc2l0aW9uRW5kOworICB9CisKKyAgaWYgKCFldmVu
dFR5cGUpIHsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorCisgIGlmICh1c2VGYWxsYmFja0NvbXBv
c2l0aW9uRGF0YSkgeworICAgIC8vIFRoZSBjdXJyZW50IGNvbXBvc2l0aW9uIGlzIHN0b3JlZCBz
dGF0aWNhbGx5IGFuZCBtdXN0IG5vdCBiZQorICAgIC8vIG92ZXJ3cml0dGVuIHdoaWxlIGNvbXBv
c2l0aW9uIGNvbnRpbnVlcy4KKyAgICBpZiAoIWN1cnJlbnRDb21wb3NpdGlvbiAmJiBldmVudFR5
cGUgPT09IGV2ZW50VHlwZXMuY29tcG9zaXRpb25TdGFydCkgeworICAgICAgY3VycmVudENvbXBv
c2l0aW9uID0gRmFsbGJhY2tDb21wb3NpdGlvblN0YXRlLmdldFBvb2xlZChuYXRpdmVFdmVudFRh
cmdldCk7CisgICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT09IGV2ZW50VHlwZXMuY29tcG9zaXRp
b25FbmQpIHsKKyAgICAgIGlmIChjdXJyZW50Q29tcG9zaXRpb24pIHsKKyAgICAgICAgZmFsbGJh
Y2tEYXRhID0gY3VycmVudENvbXBvc2l0aW9uLmdldERhdGEoKTsKKyAgICAgIH0KKyAgICB9Cisg
IH0KKworICB2YXIgZXZlbnQgPSBTeW50aGV0aWNDb21wb3NpdGlvbkV2ZW50LmdldFBvb2xlZChl
dmVudFR5cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7CisK
KyAgaWYgKGZhbGxiYWNrRGF0YSkgeworICAgIC8vIEluamVjdCBkYXRhIGdlbmVyYXRlZCBmcm9t
IGZhbGxiYWNrIHBhdGggaW50byB0aGUgc3ludGhldGljIGV2ZW50LgorICAgIC8vIFRoaXMgbWF0
Y2hlcyB0aGUgcHJvcGVydHkgb2YgbmF0aXZlIENvbXBvc2l0aW9uRXZlbnRJbnRlcmZhY2UuCisg
ICAgZXZlbnQuZGF0YSA9IGZhbGxiYWNrRGF0YTsKKyAgfSBlbHNlIHsKKyAgICB2YXIgY3VzdG9t
RGF0YSA9IGdldERhdGFGcm9tQ3VzdG9tRXZlbnQobmF0aXZlRXZlbnQpOworICAgIGlmIChjdXN0
b21EYXRhICE9PSBudWxsKSB7CisgICAgICBldmVudC5kYXRhID0gY3VzdG9tRGF0YTsKKyAgICB9
CisgIH0KKworICBFdmVudFByb3BhZ2F0b3JzLmFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXMo
ZXZlbnQpOworICByZXR1cm4gZXZlbnQ7Cit9CisKKy8qKgorICogQHBhcmFtIHtzdHJpbmd9IHRv
cExldmVsVHlwZSBSZWNvcmQgZnJvbSBgRXZlbnRDb25zdGFudHNgLgorICogQHBhcmFtIHtvYmpl
Y3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LgorICogQHJldHVybiB7P3N0cmlu
Z30gVGhlIHN0cmluZyBjb3JyZXNwb25kaW5nIHRvIHRoaXMgYGJlZm9yZUlucHV0YCBldmVudC4K
KyAqLworZnVuY3Rpb24gZ2V0TmF0aXZlQmVmb3JlSW5wdXRDaGFycyh0b3BMZXZlbFR5cGUsIG5h
dGl2ZUV2ZW50KSB7CisgIHN3aXRjaCAodG9wTGV2ZWxUeXBlKSB7CisgICAgY2FzZSAndG9wQ29t
cG9zaXRpb25FbmQnOgorICAgICAgcmV0dXJuIGdldERhdGFGcm9tQ3VzdG9tRXZlbnQobmF0aXZl
RXZlbnQpOworICAgIGNhc2UgJ3RvcEtleVByZXNzJzoKKyAgICAgIC8qKgorICAgICAgICogSWYg
bmF0aXZlIGB0ZXh0SW5wdXRgIGV2ZW50cyBhcmUgYXZhaWxhYmxlLCBvdXIgZ29hbCBpcyB0byBt
YWtlCisgICAgICAgKiB1c2Ugb2YgdGhlbS4gSG93ZXZlciwgdGhlcmUgaXMgYSBzcGVjaWFsIGNh
c2U6IHRoZSBzcGFjZWJhciBrZXkuCisgICAgICAgKiBJbiBXZWJraXQsIHByZXZlbnRpbmcgZGVm
YXVsdCBvbiBhIHNwYWNlYmFyIGB0ZXh0SW5wdXRgIGV2ZW50CisgICAgICAgKiBjYW5jZWxzIGNo
YXJhY3RlciBpbnNlcnRpb24sIGJ1dCBpdCAqYWxzbyogY2F1c2VzIHRoZSBicm93c2VyCisgICAg
ICAgKiB0byBmYWxsIGJhY2sgdG8gaXRzIGRlZmF1bHQgc3BhY2ViYXIgYmVoYXZpb3Igb2Ygc2Ny
b2xsaW5nIHRoZQorICAgICAgICogcGFnZS4KKyAgICAgICAqCisgICAgICAgKiBUcmFja2luZyBh
dDoKKyAgICAgICAqIGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvY2hyb21pdW0vaXNzdWVzL2Rl
dGFpbD9pZD0zNTUxMDMKKyAgICAgICAqCisgICAgICAgKiBUbyBhdm9pZCB0aGlzIGlzc3VlLCB1
c2UgdGhlIGtleXByZXNzIGV2ZW50IGFzIGlmIG5vIGB0ZXh0SW5wdXRgCisgICAgICAgKiBldmVu
dCBpcyBhdmFpbGFibGUuCisgICAgICAgKi8KKyAgICAgIHZhciB3aGljaCA9IG5hdGl2ZUV2ZW50
LndoaWNoOworICAgICAgaWYgKHdoaWNoICE9PSBTUEFDRUJBUl9DT0RFKSB7CisgICAgICAgIHJl
dHVybiBudWxsOworICAgICAgfQorCisgICAgICBoYXNTcGFjZUtleXByZXNzID0gdHJ1ZTsKKyAg
ICAgIHJldHVybiBTUEFDRUJBUl9DSEFSOworCisgICAgY2FzZSAndG9wVGV4dElucHV0JzoKKyAg
ICAgIC8vIFJlY29yZCB0aGUgY2hhcmFjdGVycyB0byBiZSBhZGRlZCB0byB0aGUgRE9NLgorICAg
ICAgdmFyIGNoYXJzID0gbmF0aXZlRXZlbnQuZGF0YTsKKworICAgICAgLy8gSWYgaXQncyBhIHNw
YWNlYmFyIGNoYXJhY3RlciwgYXNzdW1lIHRoYXQgd2UgaGF2ZSBhbHJlYWR5IGhhbmRsZWQKKyAg
ICAgIC8vIGl0IGF0IHRoZSBrZXlwcmVzcyBsZXZlbCBhbmQgYmFpbCBpbW1lZGlhdGVseS4gQW5k
cm9pZCBDaHJvbWUKKyAgICAgIC8vIGRvZXNuJ3QgZ2l2ZSB1cyBrZXljb2Rlcywgc28gd2UgbmVl
ZCB0byBibGFja2xpc3QgaXQuCisgICAgICBpZiAoY2hhcnMgPT09IFNQQUNFQkFSX0NIQVIgJiYg
aGFzU3BhY2VLZXlwcmVzcykgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgIH0KKworICAg
ICAgcmV0dXJuIGNoYXJzOworCisgICAgZGVmYXVsdDoKKyAgICAgIC8vIEZvciBvdGhlciBuYXRp
dmUgZXZlbnQgdHlwZXMsIGRvIG5vdGhpbmcuCisgICAgICByZXR1cm4gbnVsbDsKKyAgfQorfQor
CisvKioKKyAqIEZvciBicm93c2VycyB0aGF0IGRvIG5vdCBwcm92aWRlIHRoZSBgdGV4dElucHV0
YCBldmVudCwgZXh0cmFjdCB0aGUKKyAqIGFwcHJvcHJpYXRlIHN0cmluZyB0byB1c2UgZm9yIFN5
bnRoZXRpY0lucHV0RXZlbnQuCisgKgorICogQHBhcmFtIHtzdHJpbmd9IHRvcExldmVsVHlwZSBS
ZWNvcmQgZnJvbSBgRXZlbnRDb25zdGFudHNgLgorICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2
ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LgorICogQHJldHVybiB7P3N0cmluZ30gVGhlIGZhbGxi
YWNrIHN0cmluZyBmb3IgdGhpcyBgYmVmb3JlSW5wdXRgIGV2ZW50LgorICovCitmdW5jdGlvbiBn
ZXRGYWxsYmFja0JlZm9yZUlucHV0Q2hhcnModG9wTGV2ZWxUeXBlLCBuYXRpdmVFdmVudCkgewor
ICAvLyBJZiB3ZSBhcmUgY3VycmVudGx5IGNvbXBvc2luZyAoSU1FKSBhbmQgdXNpbmcgYSBmYWxs
YmFjayB0byBkbyBzbywKKyAgLy8gdHJ5IHRvIGV4dHJhY3QgdGhlIGNvbXBvc2VkIGNoYXJhY3Rl
cnMgZnJvbSB0aGUgZmFsbGJhY2sgb2JqZWN0LgorICAvLyBJZiBjb21wb3NpdGlvbiBldmVudCBp
cyBhdmFpbGFibGUsIHdlIGV4dHJhY3QgYSBzdHJpbmcgb25seSBhdAorICAvLyBjb21wb3NpdGlv
bmV2ZW50LCBvdGhlcndpc2UgZXh0cmFjdCBpdCBhdCBmYWxsYmFjayBldmVudHMuCisgIGlmIChj
dXJyZW50Q29tcG9zaXRpb24pIHsKKyAgICBpZiAodG9wTGV2ZWxUeXBlID09PSAndG9wQ29tcG9z
aXRpb25FbmQnIHx8ICFjYW5Vc2VDb21wb3NpdGlvbkV2ZW50ICYmIGlzRmFsbGJhY2tDb21wb3Np
dGlvbkVuZCh0b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KSkgeworICAgICAgdmFyIGNoYXJzID0g
Y3VycmVudENvbXBvc2l0aW9uLmdldERhdGEoKTsKKyAgICAgIEZhbGxiYWNrQ29tcG9zaXRpb25T
dGF0ZS5yZWxlYXNlKGN1cnJlbnRDb21wb3NpdGlvbik7CisgICAgICBjdXJyZW50Q29tcG9zaXRp
b24gPSBudWxsOworICAgICAgcmV0dXJuIGNoYXJzOworICAgIH0KKyAgICByZXR1cm4gbnVsbDsK
KyAgfQorCisgIHN3aXRjaCAodG9wTGV2ZWxUeXBlKSB7CisgICAgY2FzZSAndG9wUGFzdGUnOgor
ICAgICAgLy8gSWYgYSBwYXN0ZSBldmVudCBvY2N1cnMgYWZ0ZXIgYSBrZXlwcmVzcywgdGhyb3cg
b3V0IHRoZSBpbnB1dAorICAgICAgLy8gY2hhcnMuIFBhc3RlIGV2ZW50cyBzaG91bGQgbm90IGxl
YWQgdG8gQmVmb3JlSW5wdXQgZXZlbnRzLgorICAgICAgcmV0dXJuIG51bGw7CisgICAgY2FzZSAn
dG9wS2V5UHJlc3MnOgorICAgICAgLyoqCisgICAgICAgKiBBcyBvZiB2MjcsIEZpcmVmb3ggbWF5
IGZpcmUga2V5cHJlc3MgZXZlbnRzIGV2ZW4gd2hlbiBubyBjaGFyYWN0ZXIKKyAgICAgICAqIHdp
bGwgYmUgaW5zZXJ0ZWQuIEEgZmV3IHBvc3NpYmlsaXRpZXM6CisgICAgICAgKgorICAgICAgICog
LSBgd2hpY2hgIGlzIGAwYC4gQXJyb3cga2V5cywgRXNjIGtleSwgZXRjLgorICAgICAgICoKKyAg
ICAgICAqIC0gYHdoaWNoYCBpcyB0aGUgcHJlc3NlZCBrZXkgY29kZSwgYnV0IG5vIGNoYXIgaXMg
YXZhaWxhYmxlLgorICAgICAgICogICBFeDogJ0FsdEdyICsgZGAgaW4gUG9saXNoLiBUaGVyZSBp
cyBubyBtb2RpZmllZCBjaGFyYWN0ZXIgZm9yCisgICAgICAgKiAgIHRoaXMga2V5IGNvbWJpbmF0
aW9uIGFuZCBubyBjaGFyYWN0ZXIgaXMgaW5zZXJ0ZWQgaW50byB0aGUKKyAgICAgICAqICAgZG9j
dW1lbnQsIGJ1dCBGRiBmaXJlcyB0aGUga2V5cHJlc3MgZm9yIGNoYXIgY29kZSBgMTAwYCBhbnl3
YXkuCisgICAgICAgKiAgIE5vIGBpbnB1dGAgZXZlbnQgd2lsbCBvY2N1ci4KKyAgICAgICAqCisg
ICAgICAgKiAtIGB3aGljaGAgaXMgdGhlIHByZXNzZWQga2V5IGNvZGUsIGJ1dCBhIGNvbW1hbmQg
Y29tYmluYXRpb24gaXMKKyAgICAgICAqICAgYmVpbmcgdXNlZC4gRXg6IGBDbWQrQ2AuIE5vIGNo
YXJhY3RlciBpcyBpbnNlcnRlZCwgYW5kIG5vCisgICAgICAgKiAgIGBpbnB1dGAgZXZlbnQgd2ls
bCBvY2N1ci4KKyAgICAgICAqLworICAgICAgaWYgKG5hdGl2ZUV2ZW50LndoaWNoICYmICFpc0tl
eXByZXNzQ29tbWFuZChuYXRpdmVFdmVudCkpIHsKKyAgICAgICAgcmV0dXJuIFN0cmluZy5mcm9t
Q2hhckNvZGUobmF0aXZlRXZlbnQud2hpY2gpOworICAgICAgfQorICAgICAgcmV0dXJuIG51bGw7
CisgICAgY2FzZSAndG9wQ29tcG9zaXRpb25FbmQnOgorICAgICAgcmV0dXJuIHVzZUZhbGxiYWNr
Q29tcG9zaXRpb25EYXRhID8gbnVsbCA6IG5hdGl2ZUV2ZW50LmRhdGE7CisgICAgZGVmYXVsdDoK
KyAgICAgIHJldHVybiBudWxsOworICB9Cit9CisKKy8qKgorICogRXh0cmFjdCBhIFN5bnRoZXRp
Y0lucHV0RXZlbnQgZm9yIGBiZWZvcmVJbnB1dGAsIGJhc2VkIG9uIGVpdGhlciBuYXRpdmUKKyAq
IGB0ZXh0SW5wdXRgIG9yIGZhbGxiYWNrIGJlaGF2aW9yLgorICoKKyAqIEByZXR1cm4gez9vYmpl
Y3R9IEEgU3ludGhldGljSW5wdXRFdmVudC4KKyAqLworZnVuY3Rpb24gZXh0cmFjdEJlZm9yZUlu
cHV0RXZlbnQodG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZl
bnRUYXJnZXQpIHsKKyAgdmFyIGNoYXJzOworCisgIGlmIChjYW5Vc2VUZXh0SW5wdXRFdmVudCkg
eworICAgIGNoYXJzID0gZ2V0TmF0aXZlQmVmb3JlSW5wdXRDaGFycyh0b3BMZXZlbFR5cGUsIG5h
dGl2ZUV2ZW50KTsKKyAgfSBlbHNlIHsKKyAgICBjaGFycyA9IGdldEZhbGxiYWNrQmVmb3JlSW5w
dXRDaGFycyh0b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KTsKKyAgfQorCisgIC8vIElmIG5vIGNo
YXJhY3RlcnMgYXJlIGJlaW5nIGluc2VydGVkLCBubyBCZWZvcmVJbnB1dCBldmVudCBzaG91bGQK
KyAgLy8gYmUgZmlyZWQuCisgIGlmICghY2hhcnMpIHsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQor
CisgIHZhciBldmVudCA9IFN5bnRoZXRpY0lucHV0RXZlbnQuZ2V0UG9vbGVkKGV2ZW50VHlwZXMu
YmVmb3JlSW5wdXQsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7
CisKKyAgZXZlbnQuZGF0YSA9IGNoYXJzOworICBFdmVudFByb3BhZ2F0b3JzLmFjY3VtdWxhdGVU
d29QaGFzZURpc3BhdGNoZXMoZXZlbnQpOworICByZXR1cm4gZXZlbnQ7Cit9CisKKy8qKgorICog
Q3JlYXRlIGFuIGBvbkJlZm9yZUlucHV0YCBldmVudCB0byBtYXRjaAorICogaHR0cDovL3d3dy53
My5vcmcvVFIvMjAxMy9XRC1ET00tTGV2ZWwtMy1FdmVudHMtMjAxMzExMDUvI2V2ZW50cy1pbnB1
dGV2ZW50cy4KKyAqCisgKiBUaGlzIGV2ZW50IHBsdWdpbiBpcyBiYXNlZCBvbiB0aGUgbmF0aXZl
IGB0ZXh0SW5wdXRgIGV2ZW50CisgKiBhdmFpbGFibGUgaW4gQ2hyb21lLCBTYWZhcmksIE9wZXJh
LCBhbmQgSUUuIFRoaXMgZXZlbnQgZmlyZXMgYWZ0ZXIKKyAqIGBvbktleVByZXNzYCBhbmQgYG9u
Q29tcG9zaXRpb25FbmRgLCBidXQgYmVmb3JlIGBvbklucHV0YC4KKyAqCisgKiBgYmVmb3JlSW5w
dXRgIGlzIHNwZWMnZCBidXQgbm90IGltcGxlbWVudGVkIGluIGFueSBicm93c2VycywgYW5kCisg
KiB0aGUgYGlucHV0YCBldmVudCBkb2VzIG5vdCBwcm92aWRlIGFueSB1c2VmdWwgaW5mb3JtYXRp
b24gYWJvdXQgd2hhdCBoYXMKKyAqIGFjdHVhbGx5IGJlZW4gYWRkZWQsIGNvbnRyYXJ5IHRvIHRo
ZSBzcGVjLiBUaHVzLCBgdGV4dElucHV0YCBpcyB0aGUgYmVzdAorICogYXZhaWxhYmxlIGV2ZW50
IHRvIGlkZW50aWZ5IHRoZSBjaGFyYWN0ZXJzIHRoYXQgaGF2ZSBhY3R1YWxseSBiZWVuIGluc2Vy
dGVkCisgKiBpbnRvIHRoZSB0YXJnZXQgbm9kZS4KKyAqCisgKiBUaGlzIHBsdWdpbiBpcyBhbHNv
IHJlc3BvbnNpYmxlIGZvciBlbWl0dGluZyBgY29tcG9zaXRpb25gIGV2ZW50cywgdGh1cworICog
YWxsb3dpbmcgdXMgdG8gc2hhcmUgY29tcG9zaXRpb24gZmFsbGJhY2sgY29kZSBmb3IgYm90aCBg
YmVmb3JlSW5wdXRgIGFuZAorICogYGNvbXBvc2l0aW9uYCBldmVudCB0eXBlcy4KKyAqLwordmFy
IEJlZm9yZUlucHV0RXZlbnRQbHVnaW4gPSB7CisKKyAgZXZlbnRUeXBlczogZXZlbnRUeXBlcywK
KworICBleHRyYWN0RXZlbnRzOiBmdW5jdGlvbiAodG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBu
YXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHsKKyAgICByZXR1cm4gW2V4dHJhY3RDb21w
b3NpdGlvbkV2ZW50KHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2
ZUV2ZW50VGFyZ2V0KSwgZXh0cmFjdEJlZm9yZUlucHV0RXZlbnQodG9wTGV2ZWxUeXBlLCB0YXJn
ZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpXTsKKyAgfQorfTsKKworbW9k
dWxlLmV4cG9ydHMgPSBCZWZvcmVJbnB1dEV2ZW50UGx1Z2luOworfSx7IjEyNiI6MTI2LCIxOSI6
MTksIjIwIjoyMCwiODIiOjgyLCI4NiI6ODZ9XSw0OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxl
eHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4K
KyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNl
bnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0
aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRF
TlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7
CisKKy8qKgorICogQ1NTIHByb3BlcnRpZXMgd2hpY2ggYWNjZXB0IG51bWJlcnMgYnV0IGFyZSBu
b3QgaW4gdW5pdHMgb2YgInB4Ii4KKyAqLworCit2YXIgaXNVbml0bGVzc051bWJlciA9IHsKKyAg
YW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6IHRydWUsCisgIGJvcmRlckltYWdlT3V0c2V0OiB0cnVl
LAorICBib3JkZXJJbWFnZVNsaWNlOiB0cnVlLAorICBib3JkZXJJbWFnZVdpZHRoOiB0cnVlLAor
ICBib3hGbGV4OiB0cnVlLAorICBib3hGbGV4R3JvdXA6IHRydWUsCisgIGJveE9yZGluYWxHcm91
cDogdHJ1ZSwKKyAgY29sdW1uQ291bnQ6IHRydWUsCisgIGZsZXg6IHRydWUsCisgIGZsZXhHcm93
OiB0cnVlLAorICBmbGV4UG9zaXRpdmU6IHRydWUsCisgIGZsZXhTaHJpbms6IHRydWUsCisgIGZs
ZXhOZWdhdGl2ZTogdHJ1ZSwKKyAgZmxleE9yZGVyOiB0cnVlLAorICBncmlkUm93OiB0cnVlLAor
ICBncmlkQ29sdW1uOiB0cnVlLAorICBmb250V2VpZ2h0OiB0cnVlLAorICBsaW5lQ2xhbXA6IHRy
dWUsCisgIGxpbmVIZWlnaHQ6IHRydWUsCisgIG9wYWNpdHk6IHRydWUsCisgIG9yZGVyOiB0cnVl
LAorICBvcnBoYW5zOiB0cnVlLAorICB0YWJTaXplOiB0cnVlLAorICB3aWRvd3M6IHRydWUsCisg
IHpJbmRleDogdHJ1ZSwKKyAgem9vbTogdHJ1ZSwKKworICAvLyBTVkctcmVsYXRlZCBwcm9wZXJ0
aWVzCisgIGZpbGxPcGFjaXR5OiB0cnVlLAorICBmbG9vZE9wYWNpdHk6IHRydWUsCisgIHN0b3BP
cGFjaXR5OiB0cnVlLAorICBzdHJva2VEYXNoYXJyYXk6IHRydWUsCisgIHN0cm9rZURhc2hvZmZz
ZXQ6IHRydWUsCisgIHN0cm9rZU1pdGVybGltaXQ6IHRydWUsCisgIHN0cm9rZU9wYWNpdHk6IHRy
dWUsCisgIHN0cm9rZVdpZHRoOiB0cnVlCit9OworCisvKioKKyAqIEBwYXJhbSB7c3RyaW5nfSBw
cmVmaXggdmVuZG9yLXNwZWNpZmljIHByZWZpeCwgZWc6IFdlYmtpdAorICogQHBhcmFtIHtzdHJp
bmd9IGtleSBzdHlsZSBuYW1lLCBlZzogdHJhbnNpdGlvbkR1cmF0aW9uCisgKiBAcmV0dXJuIHtz
dHJpbmd9IHN0eWxlIG5hbWUgcHJlZml4ZWQgd2l0aCBgcHJlZml4YCwgcHJvcGVybHkgY2FtZWxD
YXNlZCwgZWc6CisgKiBXZWJraXRUcmFuc2l0aW9uRHVyYXRpb24KKyAqLworZnVuY3Rpb24gcHJl
Zml4S2V5KHByZWZpeCwga2V5KSB7CisgIHJldHVybiBwcmVmaXggKyBrZXkuY2hhckF0KDApLnRv
VXBwZXJDYXNlKCkgKyBrZXkuc3Vic3RyaW5nKDEpOworfQorCisvKioKKyAqIFN1cHBvcnQgc3R5
bGUgbmFtZXMgdGhhdCBtYXkgY29tZSBwYXNzZWQgaW4gcHJlZml4ZWQgYnkgYWRkaW5nIHBlcm11
dGF0aW9ucworICogb2YgdmVuZG9yIHByZWZpeGVzLgorICovCit2YXIgcHJlZml4ZXMgPSBbJ1dl
YmtpdCcsICdtcycsICdNb3onLCAnTyddOworCisvLyBVc2luZyBPYmplY3Qua2V5cyBoZXJlLCBv
ciBlbHNlIHRoZSB2YW5pbGxhIGZvci1pbiBsb29wIG1ha2VzIElFOCBnbyBpbnRvIGFuCisvLyBp
bmZpbml0ZSBsb29wLCBiZWNhdXNlIGl0IGl0ZXJhdGVzIG92ZXIgdGhlIG5ld2x5IGFkZGVkIHBy
b3BzIHRvby4KK09iamVjdC5rZXlzKGlzVW5pdGxlc3NOdW1iZXIpLmZvckVhY2goZnVuY3Rpb24g
KHByb3ApIHsKKyAgcHJlZml4ZXMuZm9yRWFjaChmdW5jdGlvbiAocHJlZml4KSB7CisgICAgaXNV
bml0bGVzc051bWJlcltwcmVmaXhLZXkocHJlZml4LCBwcm9wKV0gPSBpc1VuaXRsZXNzTnVtYmVy
W3Byb3BdOworICB9KTsKK30pOworCisvKioKKyAqIE1vc3Qgc3R5bGUgcHJvcGVydGllcyBjYW4g
YmUgdW5zZXQgYnkgZG9pbmcgLnN0eWxlW3Byb3BdID0gJycgYnV0IElFOAorICogZG9lc24ndCBs
aWtlIGRvaW5nIHRoYXQgd2l0aCBzaG9ydGhhbmQgcHJvcGVydGllcyBzbyBmb3IgdGhlIHByb3Bl
cnRpZXMgdGhhdAorICogSUU4IGJyZWFrcyBvbiwgd2hpY2ggYXJlIGxpc3RlZCBoZXJlLCB3ZSBp
bnN0ZWFkIHVuc2V0IGVhY2ggb2YgdGhlCisgKiBpbmRpdmlkdWFsIHByb3BlcnRpZXMuIFNlZSBo
dHRwOi8vYnVncy5qcXVlcnkuY29tL3RpY2tldC8xMjM4NS4KKyAqIFRoZSA0LXZhbHVlICdjbG9j
aycgcHJvcGVydGllcyBsaWtlIG1hcmdpbiwgcGFkZGluZywgYm9yZGVyLXdpZHRoIHNlZW0gdG8K
KyAqIGJlaGF2ZSB3aXRob3V0IGFueSBwcm9ibGVtcy4gQ3VyaW91c2x5LCBsaXN0LXN0eWxlIHdv
cmtzIHRvbyB3aXRob3V0IGFueQorICogc3BlY2lhbCBwcm9kZGluZy4KKyAqLwordmFyIHNob3J0
aGFuZFByb3BlcnR5RXhwYW5zaW9ucyA9IHsKKyAgYmFja2dyb3VuZDogeworICAgIGJhY2tncm91
bmRBdHRhY2htZW50OiB0cnVlLAorICAgIGJhY2tncm91bmRDb2xvcjogdHJ1ZSwKKyAgICBiYWNr
Z3JvdW5kSW1hZ2U6IHRydWUsCisgICAgYmFja2dyb3VuZFBvc2l0aW9uWDogdHJ1ZSwKKyAgICBi
YWNrZ3JvdW5kUG9zaXRpb25ZOiB0cnVlLAorICAgIGJhY2tncm91bmRSZXBlYXQ6IHRydWUKKyAg
fSwKKyAgYmFja2dyb3VuZFBvc2l0aW9uOiB7CisgICAgYmFja2dyb3VuZFBvc2l0aW9uWDogdHJ1
ZSwKKyAgICBiYWNrZ3JvdW5kUG9zaXRpb25ZOiB0cnVlCisgIH0sCisgIGJvcmRlcjogeworICAg
IGJvcmRlcldpZHRoOiB0cnVlLAorICAgIGJvcmRlclN0eWxlOiB0cnVlLAorICAgIGJvcmRlckNv
bG9yOiB0cnVlCisgIH0sCisgIGJvcmRlckJvdHRvbTogeworICAgIGJvcmRlckJvdHRvbVdpZHRo
OiB0cnVlLAorICAgIGJvcmRlckJvdHRvbVN0eWxlOiB0cnVlLAorICAgIGJvcmRlckJvdHRvbUNv
bG9yOiB0cnVlCisgIH0sCisgIGJvcmRlckxlZnQ6IHsKKyAgICBib3JkZXJMZWZ0V2lkdGg6IHRy
dWUsCisgICAgYm9yZGVyTGVmdFN0eWxlOiB0cnVlLAorICAgIGJvcmRlckxlZnRDb2xvcjogdHJ1
ZQorICB9LAorICBib3JkZXJSaWdodDogeworICAgIGJvcmRlclJpZ2h0V2lkdGg6IHRydWUsCisg
ICAgYm9yZGVyUmlnaHRTdHlsZTogdHJ1ZSwKKyAgICBib3JkZXJSaWdodENvbG9yOiB0cnVlCisg
IH0sCisgIGJvcmRlclRvcDogeworICAgIGJvcmRlclRvcFdpZHRoOiB0cnVlLAorICAgIGJvcmRl
clRvcFN0eWxlOiB0cnVlLAorICAgIGJvcmRlclRvcENvbG9yOiB0cnVlCisgIH0sCisgIGZvbnQ6
IHsKKyAgICBmb250U3R5bGU6IHRydWUsCisgICAgZm9udFZhcmlhbnQ6IHRydWUsCisgICAgZm9u
dFdlaWdodDogdHJ1ZSwKKyAgICBmb250U2l6ZTogdHJ1ZSwKKyAgICBsaW5lSGVpZ2h0OiB0cnVl
LAorICAgIGZvbnRGYW1pbHk6IHRydWUKKyAgfSwKKyAgb3V0bGluZTogeworICAgIG91dGxpbmVX
aWR0aDogdHJ1ZSwKKyAgICBvdXRsaW5lU3R5bGU6IHRydWUsCisgICAgb3V0bGluZUNvbG9yOiB0
cnVlCisgIH0KK307CisKK3ZhciBDU1NQcm9wZXJ0eSA9IHsKKyAgaXNVbml0bGVzc051bWJlcjog
aXNVbml0bGVzc051bWJlciwKKyAgc2hvcnRoYW5kUHJvcGVydHlFeHBhbnNpb25zOiBzaG9ydGhh
bmRQcm9wZXJ0eUV4cGFuc2lvbnMKK307CisKK21vZHVsZS5leHBvcnRzID0gQ1NTUHJvcGVydHk7
Cit9LHt9XSw1OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29w
eXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0
eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBDU1NQcm9wZXJ0eSA9
IF9kZXJlcV8oNCk7Cit2YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSBfZGVyZXFfKDEyNik7Cit2
YXIgUmVhY3RJbnN0cnVtZW50YXRpb24gPSBfZGVyZXFfKDU5KTsKKwordmFyIGNhbWVsaXplU3R5
bGVOYW1lID0gX2RlcmVxXygxMjgpOwordmFyIGRhbmdlcm91c1N0eWxlVmFsdWUgPSBfZGVyZXFf
KDk5KTsKK3ZhciBoeXBoZW5hdGVTdHlsZU5hbWUgPSBfZGVyZXFfKDEzOSk7Cit2YXIgbWVtb2l6
ZVN0cmluZ09ubHkgPSBfZGVyZXFfKDE0Myk7Cit2YXIgd2FybmluZyA9IF9kZXJlcV8oMTQ3KTsK
KwordmFyIHByb2Nlc3NTdHlsZU5hbWUgPSBtZW1vaXplU3RyaW5nT25seShmdW5jdGlvbiAoc3R5
bGVOYW1lKSB7CisgIHJldHVybiBoeXBoZW5hdGVTdHlsZU5hbWUoc3R5bGVOYW1lKTsKK30pOwor
Cit2YXIgaGFzU2hvcnRoYW5kUHJvcGVydHlCdWcgPSBmYWxzZTsKK3ZhciBzdHlsZUZsb2F0QWNj
ZXNzb3IgPSAnY3NzRmxvYXQnOworaWYgKEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSkg
eworICB2YXIgdGVtcFN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jykuc3R5bGU7
CisgIHRyeSB7CisgICAgLy8gSUU4IHRocm93cyAiSW52YWxpZCBhcmd1bWVudC4iIGlmIHJlc2V0
dGluZyBzaG9ydGhhbmQgc3R5bGUgcHJvcGVydGllcy4KKyAgICB0ZW1wU3R5bGUuZm9udCA9ICcn
OworICB9IGNhdGNoIChlKSB7CisgICAgaGFzU2hvcnRoYW5kUHJvcGVydHlCdWcgPSB0cnVlOwor
ICB9CisgIC8vIElFOCBvbmx5IHN1cHBvcnRzIGFjY2Vzc2luZyBjc3NGbG9hdCAoc3RhbmRhcmQp
IGFzIHN0eWxlRmxvYXQKKyAgaWYgKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5jc3NG
bG9hdCA9PT0gdW5kZWZpbmVkKSB7CisgICAgc3R5bGVGbG9hdEFjY2Vzc29yID0gJ3N0eWxlRmxv
YXQnOworICB9Cit9CisKK2lmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAg
Ly8gJ21zVHJhbnNmb3JtJyBpcyBjb3JyZWN0LCBidXQgdGhlIG90aGVyIHByZWZpeGVzIHNob3Vs
ZCBiZSBjYXBpdGFsaXplZAorICB2YXIgYmFkVmVuZG9yZWRTdHlsZU5hbWVQYXR0ZXJuID0gL14o
Pzp3ZWJraXR8bW96fG8pW0EtWl0vOworCisgIC8vIHN0eWxlIHZhbHVlcyBzaG91bGRuJ3QgY29u
dGFpbiBhIHNlbWljb2xvbgorICB2YXIgYmFkU3R5bGVWYWx1ZVdpdGhTZW1pY29sb25QYXR0ZXJu
ID0gLztccyokLzsKKworICB2YXIgd2FybmVkU3R5bGVOYW1lcyA9IHt9OworICB2YXIgd2FybmVk
U3R5bGVWYWx1ZXMgPSB7fTsKKyAgdmFyIHdhcm5lZEZvck5hTlZhbHVlID0gZmFsc2U7CisKKyAg
dmFyIHdhcm5IeXBoZW5hdGVkU3R5bGVOYW1lID0gZnVuY3Rpb24gKG5hbWUsIG93bmVyKSB7Cisg
ICAgaWYgKHdhcm5lZFN0eWxlTmFtZXMuaGFzT3duUHJvcGVydHkobmFtZSkgJiYgd2FybmVkU3R5
bGVOYW1lc1tuYW1lXSkgeworICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHdhcm5lZFN0eWxl
TmFtZXNbbmFtZV0gPSB0cnVlOworICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/
IHdhcm5pbmcoZmFsc2UsICdVbnN1cHBvcnRlZCBzdHlsZSBwcm9wZXJ0eSAlcy4gRGlkIHlvdSBt
ZWFuICVzPyVzJywgbmFtZSwgY2FtZWxpemVTdHlsZU5hbWUobmFtZSksIGNoZWNrUmVuZGVyTWVz
c2FnZShvd25lcikpIDogdm9pZCAwOworICB9OworCisgIHZhciB3YXJuQmFkVmVuZG9yZWRTdHls
ZU5hbWUgPSBmdW5jdGlvbiAobmFtZSwgb3duZXIpIHsKKyAgICBpZiAod2FybmVkU3R5bGVOYW1l
cy5oYXNPd25Qcm9wZXJ0eShuYW1lKSAmJiB3YXJuZWRTdHlsZU5hbWVzW25hbWVdKSB7CisgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgd2FybmVkU3R5bGVOYW1lc1tuYW1lXSA9IHRydWU7Cisg
ICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1Vuc3Vw
cG9ydGVkIHZlbmRvci1wcmVmaXhlZCBzdHlsZSBwcm9wZXJ0eSAlcy4gRGlkIHlvdSBtZWFuICVz
PyVzJywgbmFtZSwgbmFtZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIG5hbWUuc2xpY2UoMSks
IGNoZWNrUmVuZGVyTWVzc2FnZShvd25lcikpIDogdm9pZCAwOworICB9OworCisgIHZhciB3YXJu
U3R5bGVWYWx1ZVdpdGhTZW1pY29sb24gPSBmdW5jdGlvbiAobmFtZSwgdmFsdWUsIG93bmVyKSB7
CisgICAgaWYgKHdhcm5lZFN0eWxlVmFsdWVzLmhhc093blByb3BlcnR5KHZhbHVlKSAmJiB3YXJu
ZWRTdHlsZVZhbHVlc1t2YWx1ZV0pIHsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB3YXJu
ZWRTdHlsZVZhbHVlc1t2YWx1ZV0gPSB0cnVlOworICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9k
dWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdTdHlsZSBwcm9wZXJ0eSB2YWx1ZXMgc2hvdWxkblwn
dCBjb250YWluIGEgc2VtaWNvbG9uLiVzICcgKyAnVHJ5ICIlczogJXMiIGluc3RlYWQuJywgY2hl
Y2tSZW5kZXJNZXNzYWdlKG93bmVyKSwgbmFtZSwgdmFsdWUucmVwbGFjZShiYWRTdHlsZVZhbHVl
V2l0aFNlbWljb2xvblBhdHRlcm4sICcnKSkgOiB2b2lkIDA7CisgIH07CisKKyAgdmFyIHdhcm5T
dHlsZVZhbHVlSXNOYU4gPSBmdW5jdGlvbiAobmFtZSwgdmFsdWUsIG93bmVyKSB7CisgICAgaWYg
KHdhcm5lZEZvck5hTlZhbHVlKSB7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgd2FybmVk
Rm9yTmFOVmFsdWUgPSB0cnVlOworICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/
IHdhcm5pbmcoZmFsc2UsICdgTmFOYCBpcyBhbiBpbnZhbGlkIHZhbHVlIGZvciB0aGUgYCVzYCBj
c3Mgc3R5bGUgcHJvcGVydHkuJXMnLCBuYW1lLCBjaGVja1JlbmRlck1lc3NhZ2Uob3duZXIpKSA6
IHZvaWQgMDsKKyAgfTsKKworICB2YXIgY2hlY2tSZW5kZXJNZXNzYWdlID0gZnVuY3Rpb24gKG93
bmVyKSB7CisgICAgaWYgKG93bmVyKSB7CisgICAgICB2YXIgbmFtZSA9IG93bmVyLmdldE5hbWUo
KTsKKyAgICAgIGlmIChuYW1lKSB7CisgICAgICAgIHJldHVybiAnIENoZWNrIHRoZSByZW5kZXIg
bWV0aG9kIG9mIGAnICsgbmFtZSArICdgLic7CisgICAgICB9CisgICAgfQorICAgIHJldHVybiAn
JzsKKyAgfTsKKworICAvKioKKyAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICogQHBhcmFt
IHsqfSB2YWx1ZQorICAgKiBAcGFyYW0ge1JlYWN0RE9NQ29tcG9uZW50fSBjb21wb25lbnQKKyAg
ICovCisgIHZhciB3YXJuVmFsaWRTdHlsZSA9IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSwgY29tcG9u
ZW50KSB7CisgICAgdmFyIG93bmVyOworICAgIGlmIChjb21wb25lbnQpIHsKKyAgICAgIG93bmVy
ID0gY29tcG9uZW50Ll9jdXJyZW50RWxlbWVudC5fb3duZXI7CisgICAgfQorICAgIGlmIChuYW1l
LmluZGV4T2YoJy0nKSA+IC0xKSB7CisgICAgICB3YXJuSHlwaGVuYXRlZFN0eWxlTmFtZShuYW1l
LCBvd25lcik7CisgICAgfSBlbHNlIGlmIChiYWRWZW5kb3JlZFN0eWxlTmFtZVBhdHRlcm4udGVz
dChuYW1lKSkgeworICAgICAgd2FybkJhZFZlbmRvcmVkU3R5bGVOYW1lKG5hbWUsIG93bmVyKTsK
KyAgICB9IGVsc2UgaWYgKGJhZFN0eWxlVmFsdWVXaXRoU2VtaWNvbG9uUGF0dGVybi50ZXN0KHZh
bHVlKSkgeworICAgICAgd2FyblN0eWxlVmFsdWVXaXRoU2VtaWNvbG9uKG5hbWUsIHZhbHVlLCBv
d25lcik7CisgICAgfQorCisgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgaXNO
YU4odmFsdWUpKSB7CisgICAgICB3YXJuU3R5bGVWYWx1ZUlzTmFOKG5hbWUsIHZhbHVlLCBvd25l
cik7CisgICAgfQorICB9OworfQorCisvKioKKyAqIE9wZXJhdGlvbnMgZm9yIGRlYWxpbmcgd2l0
aCBDU1MgcHJvcGVydGllcy4KKyAqLwordmFyIENTU1Byb3BlcnR5T3BlcmF0aW9ucyA9IHsKKwor
ICAvKioKKyAgICogU2VyaWFsaXplcyBhIG1hcHBpbmcgb2Ygc3R5bGUgcHJvcGVydGllcyBmb3Ig
dXNlIGFzIGlubGluZSBzdHlsZXM6CisgICAqCisgICAqICAgPiBjcmVhdGVNYXJrdXBGb3JTdHls
ZXMoe3dpZHRoOiAnMjAwcHgnLCBoZWlnaHQ6IDB9KQorICAgKiAgICJ3aWR0aDoyMDBweDtoZWln
aHQ6MDsiCisgICAqCisgICAqIFVuZGVmaW5lZCB2YWx1ZXMgYXJlIGlnbm9yZWQgc28gdGhhdCBk
ZWNsYXJhdGl2ZSBwcm9ncmFtbWluZyBpcyBlYXNpZXIuCisgICAqIFRoZSByZXN1bHQgc2hvdWxk
IGJlIEhUTUwtZXNjYXBlZCBiZWZvcmUgaW5zZXJ0aW9uIGludG8gdGhlIERPTS4KKyAgICoKKyAg
ICogQHBhcmFtIHtvYmplY3R9IHN0eWxlcworICAgKiBAcGFyYW0ge1JlYWN0RE9NQ29tcG9uZW50
fSBjb21wb25lbnQKKyAgICogQHJldHVybiB7P3N0cmluZ30KKyAgICovCisgIGNyZWF0ZU1hcmt1
cEZvclN0eWxlczogZnVuY3Rpb24gKHN0eWxlcywgY29tcG9uZW50KSB7CisgICAgdmFyIHNlcmlh
bGl6ZWQgPSAnJzsKKyAgICBmb3IgKHZhciBzdHlsZU5hbWUgaW4gc3R5bGVzKSB7CisgICAgICBp
ZiAoIXN0eWxlcy5oYXNPd25Qcm9wZXJ0eShzdHlsZU5hbWUpKSB7CisgICAgICAgIGNvbnRpbnVl
OworICAgICAgfQorICAgICAgdmFyIHN0eWxlVmFsdWUgPSBzdHlsZXNbc3R5bGVOYW1lXTsKKyAg
ICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICAgd2FyblZh
bGlkU3R5bGUoc3R5bGVOYW1lLCBzdHlsZVZhbHVlLCBjb21wb25lbnQpOworICAgICAgfQorICAg
ICAgaWYgKHN0eWxlVmFsdWUgIT0gbnVsbCkgeworICAgICAgICBzZXJpYWxpemVkICs9IHByb2Nl
c3NTdHlsZU5hbWUoc3R5bGVOYW1lKSArICc6JzsKKyAgICAgICAgc2VyaWFsaXplZCArPSBkYW5n
ZXJvdXNTdHlsZVZhbHVlKHN0eWxlTmFtZSwgc3R5bGVWYWx1ZSwgY29tcG9uZW50KSArICc7JzsK
KyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHNlcmlhbGl6ZWQgfHwgbnVsbDsKKyAgfSwKKwor
ICAvKioKKyAgICogU2V0cyB0aGUgdmFsdWUgZm9yIG11bHRpcGxlIHN0eWxlcyBvbiBhIG5vZGUu
ICBJZiBhIHZhbHVlIGlzIHNwZWNpZmllZCBhcworICAgKiAnJyAoZW1wdHkgc3RyaW5nKSwgdGhl
IGNvcnJlc3BvbmRpbmcgc3R5bGUgcHJvcGVydHkgd2lsbCBiZSB1bnNldC4KKyAgICoKKyAgICog
QHBhcmFtIHtET01FbGVtZW50fSBub2RlCisgICAqIEBwYXJhbSB7b2JqZWN0fSBzdHlsZXMKKyAg
ICogQHBhcmFtIHtSZWFjdERPTUNvbXBvbmVudH0gY29tcG9uZW50CisgICAqLworICBzZXRWYWx1
ZUZvclN0eWxlczogZnVuY3Rpb24gKG5vZGUsIHN0eWxlcywgY29tcG9uZW50KSB7CisgICAgaWYg
KCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgUmVhY3RJbnN0cnVtZW50
YXRpb24uZGVidWdUb29sLm9uSG9zdE9wZXJhdGlvbih7CisgICAgICAgIGluc3RhbmNlSUQ6IGNv
bXBvbmVudC5fZGVidWdJRCwKKyAgICAgICAgdHlwZTogJ3VwZGF0ZSBzdHlsZXMnLAorICAgICAg
ICBwYXlsb2FkOiBzdHlsZXMKKyAgICAgIH0pOworICAgIH0KKworICAgIHZhciBzdHlsZSA9IG5v
ZGUuc3R5bGU7CisgICAgZm9yICh2YXIgc3R5bGVOYW1lIGluIHN0eWxlcykgeworICAgICAgaWYg
KCFzdHlsZXMuaGFzT3duUHJvcGVydHkoc3R5bGVOYW1lKSkgeworICAgICAgICBjb250aW51ZTsK
KyAgICAgIH0KKyAgICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAg
ICAgICAgd2FyblZhbGlkU3R5bGUoc3R5bGVOYW1lLCBzdHlsZXNbc3R5bGVOYW1lXSwgY29tcG9u
ZW50KTsKKyAgICAgIH0KKyAgICAgIHZhciBzdHlsZVZhbHVlID0gZGFuZ2Vyb3VzU3R5bGVWYWx1
ZShzdHlsZU5hbWUsIHN0eWxlc1tzdHlsZU5hbWVdLCBjb21wb25lbnQpOworICAgICAgaWYgKHN0
eWxlTmFtZSA9PT0gJ2Zsb2F0JyB8fCBzdHlsZU5hbWUgPT09ICdjc3NGbG9hdCcpIHsKKyAgICAg
ICAgc3R5bGVOYW1lID0gc3R5bGVGbG9hdEFjY2Vzc29yOworICAgICAgfQorICAgICAgaWYgKHN0
eWxlVmFsdWUpIHsKKyAgICAgICAgc3R5bGVbc3R5bGVOYW1lXSA9IHN0eWxlVmFsdWU7CisgICAg
ICB9IGVsc2UgeworICAgICAgICB2YXIgZXhwYW5zaW9uID0gaGFzU2hvcnRoYW5kUHJvcGVydHlC
dWcgJiYgQ1NTUHJvcGVydHkuc2hvcnRoYW5kUHJvcGVydHlFeHBhbnNpb25zW3N0eWxlTmFtZV07
CisgICAgICAgIGlmIChleHBhbnNpb24pIHsKKyAgICAgICAgICAvLyBTaG9ydGhhbmQgcHJvcGVy
dHkgdGhhdCBJRTggd29uJ3QgbGlrZSB1bnNldHRpbmcsIHNvIHVuc2V0IGVhY2gKKyAgICAgICAg
ICAvLyBjb21wb25lbnQgdG8gcGxhY2F0ZSBpdAorICAgICAgICAgIGZvciAodmFyIGluZGl2aWR1
YWxTdHlsZU5hbWUgaW4gZXhwYW5zaW9uKSB7CisgICAgICAgICAgICBzdHlsZVtpbmRpdmlkdWFs
U3R5bGVOYW1lXSA9ICcnOworICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICBzdHlsZVtzdHlsZU5hbWVdID0gJyc7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgIH0K
KworfTsKKworbW9kdWxlLmV4cG9ydHMgPSBDU1NQcm9wZXJ0eU9wZXJhdGlvbnM7Cit9LHsiMTI2
IjoxMjYsIjEyOCI6MTI4LCIxMzkiOjEzOSwiMTQzIjoxNDMsIjE0NyI6MTQ3LCI0Ijo0LCI1OSI6
NTksIjk5Ijo5OX1dLDY6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisg
KiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBC
U0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICog
b2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUg
c2FtZSBkaXJlY3RvcnkuCisgKgorICogCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX3By
b2RJbnZhcmlhbnQgPSBfZGVyZXFfKDExNik7CisKK2Z1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhp
bnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1
Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1
bmN0aW9uIik7IH0gfQorCit2YXIgUG9vbGVkQ2xhc3MgPSBfZGVyZXFfKDI0KTsKKwordmFyIGlu
dmFyaWFudCA9IF9kZXJlcV8oMTQwKTsKKworLyoqCisgKiBBIHNwZWNpYWxpemVkIHBzZXVkby1l
dmVudCBtb2R1bGUgdG8gaGVscCBrZWVwIHRyYWNrIG9mIGNvbXBvbmVudHMgd2FpdGluZyB0bwor
ICogYmUgbm90aWZpZWQgd2hlbiB0aGVpciBET00gcmVwcmVzZW50YXRpb25zIGFyZSBhdmFpbGFi
bGUgZm9yIHVzZS4KKyAqCisgKiBUaGlzIGltcGxlbWVudHMgYFBvb2xlZENsYXNzYCwgc28geW91
IHNob3VsZCBuZXZlciBuZWVkIHRvIGluc3RhbnRpYXRlIHRoaXMuCisgKiBJbnN0ZWFkLCB1c2Ug
YENhbGxiYWNrUXVldWUuZ2V0UG9vbGVkKClgLgorICoKKyAqIEBjbGFzcyBSZWFjdE1vdW50UmVh
ZHkKKyAqIEBpbXBsZW1lbnRzIFBvb2xlZENsYXNzCisgKiBAaW50ZXJuYWwKKyAqLworCit2YXIg
Q2FsbGJhY2tRdWV1ZSA9IGZ1bmN0aW9uICgpIHsKKyAgZnVuY3Rpb24gQ2FsbGJhY2tRdWV1ZShh
cmcpIHsKKyAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQ2FsbGJhY2tRdWV1ZSk7CisKKyAgICB0
aGlzLl9jYWxsYmFja3MgPSBudWxsOworICAgIHRoaXMuX2NvbnRleHRzID0gbnVsbDsKKyAgICB0
aGlzLl9hcmcgPSBhcmc7CisgIH0KKworICAvKioKKyAgICogRW5xdWV1ZXMgYSBjYWxsYmFjayB0
byBiZSBpbnZva2VkIHdoZW4gYG5vdGlmeUFsbGAgaXMgaW52b2tlZC4KKyAgICoKKyAgICogQHBh
cmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgSW52b2tlZCB3aGVuIGBub3RpZnlBbGxgIGlzIGludm9r
ZWQuCisgICAqIEBwYXJhbSB7P29iamVjdH0gY29udGV4dCBDb250ZXh0IHRvIGNhbGwgYGNhbGxi
YWNrYCB3aXRoLgorICAgKiBAaW50ZXJuYWwKKyAgICovCisKKworICBDYWxsYmFja1F1ZXVlLnBy
b3RvdHlwZS5lbnF1ZXVlID0gZnVuY3Rpb24gZW5xdWV1ZShjYWxsYmFjaywgY29udGV4dCkgewor
ICAgIHRoaXMuX2NhbGxiYWNrcyA9IHRoaXMuX2NhbGxiYWNrcyB8fCBbXTsKKyAgICB0aGlzLl9j
YWxsYmFja3MucHVzaChjYWxsYmFjayk7CisgICAgdGhpcy5fY29udGV4dHMgPSB0aGlzLl9jb250
ZXh0cyB8fCBbXTsKKyAgICB0aGlzLl9jb250ZXh0cy5wdXNoKGNvbnRleHQpOworICB9OworCisg
IC8qKgorICAgKiBJbnZva2VzIGFsbCBlbnF1ZXVlZCBjYWxsYmFja3MgYW5kIGNsZWFycyB0aGUg
cXVldWUuIFRoaXMgaXMgaW52b2tlZCBhZnRlcgorICAgKiB0aGUgRE9NIHJlcHJlc2VudGF0aW9u
IG9mIGEgY29tcG9uZW50IGhhcyBiZWVuIGNyZWF0ZWQgb3IgdXBkYXRlZC4KKyAgICoKKyAgICog
QGludGVybmFsCisgICAqLworCisKKyAgQ2FsbGJhY2tRdWV1ZS5wcm90b3R5cGUubm90aWZ5QWxs
ID0gZnVuY3Rpb24gbm90aWZ5QWxsKCkgeworICAgIHZhciBjYWxsYmFja3MgPSB0aGlzLl9jYWxs
YmFja3M7CisgICAgdmFyIGNvbnRleHRzID0gdGhpcy5fY29udGV4dHM7CisgICAgdmFyIGFyZyA9
IHRoaXMuX2FyZzsKKyAgICBpZiAoY2FsbGJhY2tzICYmIGNvbnRleHRzKSB7CisgICAgICAhKGNh
bGxiYWNrcy5sZW5ndGggPT09IGNvbnRleHRzLmxlbmd0aCkgPyAiZGV2ZWxvcG1lbnQiICE9PSAn
cHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdNaXNtYXRjaGVkIGxpc3Qgb2YgY29udGV4
dHMgaW4gY2FsbGJhY2sgcXVldWUnKSA6IF9wcm9kSW52YXJpYW50KCcyNCcpIDogdm9pZCAwOwor
ICAgICAgdGhpcy5fY2FsbGJhY2tzID0gbnVsbDsKKyAgICAgIHRoaXMuX2NvbnRleHRzID0gbnVs
bDsKKyAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2FsbGJhY2tzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICAgIGNhbGxiYWNrc1tpXS5jYWxsKGNvbnRleHRzW2ldLCBhcmcpOworICAgICAgfQorICAg
ICAgY2FsbGJhY2tzLmxlbmd0aCA9IDA7CisgICAgICBjb250ZXh0cy5sZW5ndGggPSAwOworICAg
IH0KKyAgfTsKKworICBDYWxsYmFja1F1ZXVlLnByb3RvdHlwZS5jaGVja3BvaW50ID0gZnVuY3Rp
b24gY2hlY2twb2ludCgpIHsKKyAgICByZXR1cm4gdGhpcy5fY2FsbGJhY2tzID8gdGhpcy5fY2Fs
bGJhY2tzLmxlbmd0aCA6IDA7CisgIH07CisKKyAgQ2FsbGJhY2tRdWV1ZS5wcm90b3R5cGUucm9s
bGJhY2sgPSBmdW5jdGlvbiByb2xsYmFjayhsZW4pIHsKKyAgICBpZiAodGhpcy5fY2FsbGJhY2tz
ICYmIHRoaXMuX2NvbnRleHRzKSB7CisgICAgICB0aGlzLl9jYWxsYmFja3MubGVuZ3RoID0gbGVu
OworICAgICAgdGhpcy5fY29udGV4dHMubGVuZ3RoID0gbGVuOworICAgIH0KKyAgfTsKKworICAv
KioKKyAgICogUmVzZXRzIHRoZSBpbnRlcm5hbCBxdWV1ZS4KKyAgICoKKyAgICogQGludGVybmFs
CisgICAqLworCisKKyAgQ2FsbGJhY2tRdWV1ZS5wcm90b3R5cGUucmVzZXQgPSBmdW5jdGlvbiBy
ZXNldCgpIHsKKyAgICB0aGlzLl9jYWxsYmFja3MgPSBudWxsOworICAgIHRoaXMuX2NvbnRleHRz
ID0gbnVsbDsKKyAgfTsKKworICAvKioKKyAgICogYFBvb2xlZENsYXNzYCBsb29rcyBmb3IgdGhp
cy4KKyAgICovCisKKworICBDYWxsYmFja1F1ZXVlLnByb3RvdHlwZS5kZXN0cnVjdG9yID0gZnVu
Y3Rpb24gZGVzdHJ1Y3RvcigpIHsKKyAgICB0aGlzLnJlc2V0KCk7CisgIH07CisKKyAgcmV0dXJu
IENhbGxiYWNrUXVldWU7Cit9KCk7CisKK21vZHVsZS5leHBvcnRzID0gUG9vbGVkQ2xhc3MuYWRk
UG9vbGluZ1RvKENhbGxiYWNrUXVldWUpOworfSx7IjExNiI6MTE2LCIxNDAiOjE0MCwiMjQiOjI0
fV0sNzpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdo
dCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBs
aWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9y
eSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQg
cmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVj
dG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgRXZlbnRQbHVnaW5IdWIgPSBf
ZGVyZXFfKDE2KTsKK3ZhciBFdmVudFByb3BhZ2F0b3JzID0gX2RlcmVxXygxOSk7Cit2YXIgRXhl
Y3V0aW9uRW52aXJvbm1lbnQgPSBfZGVyZXFfKDEyNik7Cit2YXIgUmVhY3RET01Db21wb25lbnRU
cmVlID0gX2RlcmVxXygzMik7Cit2YXIgUmVhY3RVcGRhdGVzID0gX2RlcmVxXyg3NSk7Cit2YXIg
U3ludGhldGljRXZlbnQgPSBfZGVyZXFfKDg0KTsKKwordmFyIGdldEV2ZW50VGFyZ2V0ID0gX2Rl
cmVxXygxMDYpOwordmFyIGlzRXZlbnRTdXBwb3J0ZWQgPSBfZGVyZXFfKDExMyk7Cit2YXIgaXNU
ZXh0SW5wdXRFbGVtZW50ID0gX2RlcmVxXygxMTQpOworCit2YXIgZXZlbnRUeXBlcyA9IHsKKyAg
Y2hhbmdlOiB7CisgICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHsKKyAgICAgIGJ1YmJsZWQ6
ICdvbkNoYW5nZScsCisgICAgICBjYXB0dXJlZDogJ29uQ2hhbmdlQ2FwdHVyZScKKyAgICB9LAor
ICAgIGRlcGVuZGVuY2llczogWyd0b3BCbHVyJywgJ3RvcENoYW5nZScsICd0b3BDbGljaycsICd0
b3BGb2N1cycsICd0b3BJbnB1dCcsICd0b3BLZXlEb3duJywgJ3RvcEtleVVwJywgJ3RvcFNlbGVj
dGlvbkNoYW5nZSddCisgIH0KK307CisKKy8qKgorICogRm9yIElFIHNoaW1zCisgKi8KK3ZhciBh
Y3RpdmVFbGVtZW50ID0gbnVsbDsKK3ZhciBhY3RpdmVFbGVtZW50SW5zdCA9IG51bGw7Cit2YXIg
YWN0aXZlRWxlbWVudFZhbHVlID0gbnVsbDsKK3ZhciBhY3RpdmVFbGVtZW50VmFsdWVQcm9wID0g
bnVsbDsKKworLyoqCisgKiBTRUNUSU9OOiBoYW5kbGUgYGNoYW5nZWAgZXZlbnQKKyAqLworZnVu
Y3Rpb24gc2hvdWxkVXNlQ2hhbmdlRXZlbnQoZWxlbSkgeworICB2YXIgbm9kZU5hbWUgPSBlbGVt
Lm5vZGVOYW1lICYmIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTsKKyAgcmV0dXJuIG5vZGVO
YW1lID09PSAnc2VsZWN0JyB8fCBub2RlTmFtZSA9PT0gJ2lucHV0JyAmJiBlbGVtLnR5cGUgPT09
ICdmaWxlJzsKK30KKwordmFyIGRvZXNDaGFuZ2VFdmVudEJ1YmJsZSA9IGZhbHNlOworaWYgKEV4
ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSkgeworICAvLyBTZWUgYGhhbmRsZUNoYW5nZWAg
Y29tbWVudCBiZWxvdworICBkb2VzQ2hhbmdlRXZlbnRCdWJibGUgPSBpc0V2ZW50U3VwcG9ydGVk
KCdjaGFuZ2UnKSAmJiAoIWRvY3VtZW50LmRvY3VtZW50TW9kZSB8fCBkb2N1bWVudC5kb2N1bWVu
dE1vZGUgPiA4KTsKK30KKworZnVuY3Rpb24gbWFudWFsRGlzcGF0Y2hDaGFuZ2VFdmVudChuYXRp
dmVFdmVudCkgeworICB2YXIgZXZlbnQgPSBTeW50aGV0aWNFdmVudC5nZXRQb29sZWQoZXZlbnRU
eXBlcy5jaGFuZ2UsIGFjdGl2ZUVsZW1lbnRJbnN0LCBuYXRpdmVFdmVudCwgZ2V0RXZlbnRUYXJn
ZXQobmF0aXZlRXZlbnQpKTsKKyAgRXZlbnRQcm9wYWdhdG9ycy5hY2N1bXVsYXRlVHdvUGhhc2VE
aXNwYXRjaGVzKGV2ZW50KTsKKworICAvLyBJZiBjaGFuZ2UgYW5kIHByb3BlcnR5Y2hhbmdlIGJ1
YmJsZWQsIHdlJ2QganVzdCBiaW5kIHRvIGl0IGxpa2UgYWxsIHRoZQorICAvLyBvdGhlciBldmVu
dHMgYW5kIGhhdmUgaXQgZ28gdGhyb3VnaCBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuIFNpbmNl
IGl0CisgIC8vIGRvZXNuJ3QsIHdlIG1hbnVhbGx5IGxpc3RlbiBmb3IgdGhlIGV2ZW50cyBhbmQg
c28gd2UgaGF2ZSB0byBlbnF1ZXVlIGFuZAorICAvLyBwcm9jZXNzIHRoZSBhYnN0cmFjdCBldmVu
dCBtYW51YWxseS4KKyAgLy8KKyAgLy8gQmF0Y2hpbmcgaXMgbmVjZXNzYXJ5IGhlcmUgaW4gb3Jk
ZXIgdG8gZW5zdXJlIHRoYXQgYWxsIGV2ZW50IGhhbmRsZXJzIHJ1bgorICAvLyBiZWZvcmUgdGhl
IG5leHQgcmVyZW5kZXIgKGluY2x1ZGluZyBldmVudCBoYW5kbGVycyBhdHRhY2hlZCB0byBhbmNl
c3RvcgorICAvLyBlbGVtZW50cyBpbnN0ZWFkIG9mIGRpcmVjdGx5IG9uIHRoZSBpbnB1dCkuIFdp
dGhvdXQgdGhpcywgY29udHJvbGxlZAorICAvLyBjb21wb25lbnRzIGRvbid0IHdvcmsgcHJvcGVy
bHkgaW4gY29uanVuY3Rpb24gd2l0aCBldmVudCBidWJibGluZyBiZWNhdXNlCisgIC8vIHRoZSBj
b21wb25lbnQgaXMgcmVyZW5kZXJlZCBhbmQgdGhlIHZhbHVlIHJldmVydGVkIGJlZm9yZSBhbGwg
dGhlIGV2ZW50CisgIC8vIGhhbmRsZXJzIGNhbiBydW4uIFNlZSBodHRwczovL2dpdGh1Yi5jb20v
ZmFjZWJvb2svcmVhY3QvaXNzdWVzLzcwOC4KKyAgUmVhY3RVcGRhdGVzLmJhdGNoZWRVcGRhdGVz
KHJ1bkV2ZW50SW5CYXRjaCwgZXZlbnQpOworfQorCitmdW5jdGlvbiBydW5FdmVudEluQmF0Y2go
ZXZlbnQpIHsKKyAgRXZlbnRQbHVnaW5IdWIuZW5xdWV1ZUV2ZW50cyhldmVudCk7CisgIEV2ZW50
UGx1Z2luSHViLnByb2Nlc3NFdmVudFF1ZXVlKGZhbHNlKTsKK30KKworZnVuY3Rpb24gc3RhcnRX
YXRjaGluZ0ZvckNoYW5nZUV2ZW50SUU4KHRhcmdldCwgdGFyZ2V0SW5zdCkgeworICBhY3RpdmVF
bGVtZW50ID0gdGFyZ2V0OworICBhY3RpdmVFbGVtZW50SW5zdCA9IHRhcmdldEluc3Q7CisgIGFj
dGl2ZUVsZW1lbnQuYXR0YWNoRXZlbnQoJ29uY2hhbmdlJywgbWFudWFsRGlzcGF0Y2hDaGFuZ2VF
dmVudCk7Cit9CisKK2Z1bmN0aW9uIHN0b3BXYXRjaGluZ0ZvckNoYW5nZUV2ZW50SUU4KCkgewor
ICBpZiAoIWFjdGl2ZUVsZW1lbnQpIHsKKyAgICByZXR1cm47CisgIH0KKyAgYWN0aXZlRWxlbWVu
dC5kZXRhY2hFdmVudCgnb25jaGFuZ2UnLCBtYW51YWxEaXNwYXRjaENoYW5nZUV2ZW50KTsKKyAg
YWN0aXZlRWxlbWVudCA9IG51bGw7CisgIGFjdGl2ZUVsZW1lbnRJbnN0ID0gbnVsbDsKK30KKwor
ZnVuY3Rpb24gZ2V0VGFyZ2V0SW5zdEZvckNoYW5nZUV2ZW50KHRvcExldmVsVHlwZSwgdGFyZ2V0
SW5zdCkgeworICBpZiAodG9wTGV2ZWxUeXBlID09PSAndG9wQ2hhbmdlJykgeworICAgIHJldHVy
biB0YXJnZXRJbnN0OworICB9Cit9CitmdW5jdGlvbiBoYW5kbGVFdmVudHNGb3JDaGFuZ2VFdmVu
dElFOCh0b3BMZXZlbFR5cGUsIHRhcmdldCwgdGFyZ2V0SW5zdCkgeworICBpZiAodG9wTGV2ZWxU
eXBlID09PSAndG9wRm9jdXMnKSB7CisgICAgLy8gc3RvcFdhdGNoaW5nKCkgc2hvdWxkIGJlIGEg
bm9vcCBoZXJlIGJ1dCB3ZSBjYWxsIGl0IGp1c3QgaW4gY2FzZSB3ZQorICAgIC8vIG1pc3NlZCBh
IGJsdXIgZXZlbnQgc29tZWhvdy4KKyAgICBzdG9wV2F0Y2hpbmdGb3JDaGFuZ2VFdmVudElFOCgp
OworICAgIHN0YXJ0V2F0Y2hpbmdGb3JDaGFuZ2VFdmVudElFOCh0YXJnZXQsIHRhcmdldEluc3Qp
OworICB9IGVsc2UgaWYgKHRvcExldmVsVHlwZSA9PT0gJ3RvcEJsdXInKSB7CisgICAgc3RvcFdh
dGNoaW5nRm9yQ2hhbmdlRXZlbnRJRTgoKTsKKyAgfQorfQorCisvKioKKyAqIFNFQ1RJT046IGhh
bmRsZSBgaW5wdXRgIGV2ZW50CisgKi8KK3ZhciBpc0lucHV0RXZlbnRTdXBwb3J0ZWQgPSBmYWxz
ZTsKK2lmIChFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00pIHsKKyAgLy8gSUU5IGNsYWlt
cyB0byBzdXBwb3J0IHRoZSBpbnB1dCBldmVudCBidXQgZmFpbHMgdG8gdHJpZ2dlciBpdCB3aGVu
CisgIC8vIGRlbGV0aW5nIHRleHQsIHNvIHdlIGlnbm9yZSBpdHMgaW5wdXQgZXZlbnRzLgorICAv
LyBJRTEwKyBmaXJlIGlucHV0IGV2ZW50cyB0byBvZnRlbiwgc3VjaCB3aGVuIGEgcGxhY2Vob2xk
ZXIKKyAgLy8gY2hhbmdlcyBvciB3aGVuIGFuIGlucHV0IHdpdGggYSBwbGFjZWhvbGRlciBpcyBm
b2N1c2VkLgorICBpc0lucHV0RXZlbnRTdXBwb3J0ZWQgPSBpc0V2ZW50U3VwcG9ydGVkKCdpbnB1
dCcpICYmICghZG9jdW1lbnQuZG9jdW1lbnRNb2RlIHx8IGRvY3VtZW50LmRvY3VtZW50TW9kZSA+
IDExKTsKK30KKworLyoqCisgKiAoRm9yIElFIDw9MTEpIFJlcGxhY2VtZW50IGdldHRlci9zZXR0
ZXIgZm9yIHRoZSBgdmFsdWVgIHByb3BlcnR5IHRoYXQgZ2V0cworICogc2V0IG9uIHRoZSBhY3Rp
dmUgZWxlbWVudC4KKyAqLwordmFyIG5ld1ZhbHVlUHJvcCA9IHsKKyAgZ2V0OiBmdW5jdGlvbiAo
KSB7CisgICAgcmV0dXJuIGFjdGl2ZUVsZW1lbnRWYWx1ZVByb3AuZ2V0LmNhbGwodGhpcyk7Cisg
IH0sCisgIHNldDogZnVuY3Rpb24gKHZhbCkgeworICAgIC8vIENhc3QgdG8gYSBzdHJpbmcgc28g
d2UgY2FuIGRvIGVxdWFsaXR5IGNoZWNrcy4KKyAgICBhY3RpdmVFbGVtZW50VmFsdWUgPSAnJyAr
IHZhbDsKKyAgICBhY3RpdmVFbGVtZW50VmFsdWVQcm9wLnNldC5jYWxsKHRoaXMsIHZhbCk7Cisg
IH0KK307CisKKy8qKgorICogKEZvciBJRSA8PTExKSBTdGFydHMgdHJhY2tpbmcgcHJvcGVydHlj
aGFuZ2UgZXZlbnRzIG9uIHRoZSBwYXNzZWQtaW4gZWxlbWVudAorICogYW5kIG92ZXJyaWRlIHRo
ZSB2YWx1ZSBwcm9wZXJ0eSBzbyB0aGF0IHdlIGNhbiBkaXN0aW5ndWlzaCB1c2VyIGV2ZW50cyBm
cm9tCisgKiB2YWx1ZSBjaGFuZ2VzIGluIEpTLgorICovCitmdW5jdGlvbiBzdGFydFdhdGNoaW5n
Rm9yVmFsdWVDaGFuZ2UodGFyZ2V0LCB0YXJnZXRJbnN0KSB7CisgIGFjdGl2ZUVsZW1lbnQgPSB0
YXJnZXQ7CisgIGFjdGl2ZUVsZW1lbnRJbnN0ID0gdGFyZ2V0SW5zdDsKKyAgYWN0aXZlRWxlbWVu
dFZhbHVlID0gdGFyZ2V0LnZhbHVlOworICBhY3RpdmVFbGVtZW50VmFsdWVQcm9wID0gT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQuY29uc3RydWN0b3IucHJvdG90eXBlLCAn
dmFsdWUnKTsKKworICAvLyBOb3QgZ3VhcmRlZCBpbiBhIGNhbkRlZmluZVByb3BlcnR5IGNoZWNr
OiBJRTggc3VwcG9ydHMgZGVmaW5lUHJvcGVydHkgb25seQorICAvLyBvbiBET00gZWxlbWVudHMK
KyAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGFjdGl2ZUVsZW1lbnQsICd2YWx1ZScsIG5ld1ZhbHVl
UHJvcCk7CisgIGlmIChhY3RpdmVFbGVtZW50LmF0dGFjaEV2ZW50KSB7CisgICAgYWN0aXZlRWxl
bWVudC5hdHRhY2hFdmVudCgnb25wcm9wZXJ0eWNoYW5nZScsIGhhbmRsZVByb3BlcnR5Q2hhbmdl
KTsKKyAgfSBlbHNlIHsKKyAgICBhY3RpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Byb3Bl
cnR5Y2hhbmdlJywgaGFuZGxlUHJvcGVydHlDaGFuZ2UsIGZhbHNlKTsKKyAgfQorfQorCisvKioK
KyAqIChGb3IgSUUgPD0xMSkgUmVtb3ZlcyB0aGUgZXZlbnQgbGlzdGVuZXJzIGZyb20gdGhlIGN1
cnJlbnRseS10cmFja2VkIGVsZW1lbnQsCisgKiBpZiBhbnkgZXhpc3RzLgorICovCitmdW5jdGlv
biBzdG9wV2F0Y2hpbmdGb3JWYWx1ZUNoYW5nZSgpIHsKKyAgaWYgKCFhY3RpdmVFbGVtZW50KSB7
CisgICAgcmV0dXJuOworICB9CisKKyAgLy8gZGVsZXRlIHJlc3RvcmVzIHRoZSBvcmlnaW5hbCBw
cm9wZXJ0eSBkZWZpbml0aW9uCisgIGRlbGV0ZSBhY3RpdmVFbGVtZW50LnZhbHVlOworCisgIGlm
IChhY3RpdmVFbGVtZW50LmRldGFjaEV2ZW50KSB7CisgICAgYWN0aXZlRWxlbWVudC5kZXRhY2hF
dmVudCgnb25wcm9wZXJ0eWNoYW5nZScsIGhhbmRsZVByb3BlcnR5Q2hhbmdlKTsKKyAgfSBlbHNl
IHsKKyAgICBhY3RpdmVFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Byb3BlcnR5Y2hhbmdl
JywgaGFuZGxlUHJvcGVydHlDaGFuZ2UsIGZhbHNlKTsKKyAgfQorCisgIGFjdGl2ZUVsZW1lbnQg
PSBudWxsOworICBhY3RpdmVFbGVtZW50SW5zdCA9IG51bGw7CisgIGFjdGl2ZUVsZW1lbnRWYWx1
ZSA9IG51bGw7CisgIGFjdGl2ZUVsZW1lbnRWYWx1ZVByb3AgPSBudWxsOworfQorCisvKioKKyAq
IChGb3IgSUUgPD0xMSkgSGFuZGxlcyBhIHByb3BlcnR5Y2hhbmdlIGV2ZW50LCBzZW5kaW5nIGEg
YGNoYW5nZWAgZXZlbnQgaWYKKyAqIHRoZSB2YWx1ZSBvZiB0aGUgYWN0aXZlIGVsZW1lbnQgaGFz
IGNoYW5nZWQuCisgKi8KK2Z1bmN0aW9uIGhhbmRsZVByb3BlcnR5Q2hhbmdlKG5hdGl2ZUV2ZW50
KSB7CisgIGlmIChuYXRpdmVFdmVudC5wcm9wZXJ0eU5hbWUgIT09ICd2YWx1ZScpIHsKKyAgICBy
ZXR1cm47CisgIH0KKyAgdmFyIHZhbHVlID0gbmF0aXZlRXZlbnQuc3JjRWxlbWVudC52YWx1ZTsK
KyAgaWYgKHZhbHVlID09PSBhY3RpdmVFbGVtZW50VmFsdWUpIHsKKyAgICByZXR1cm47CisgIH0K
KyAgYWN0aXZlRWxlbWVudFZhbHVlID0gdmFsdWU7CisKKyAgbWFudWFsRGlzcGF0Y2hDaGFuZ2VF
dmVudChuYXRpdmVFdmVudCk7Cit9CisKKy8qKgorICogSWYgYSBgY2hhbmdlYCBldmVudCBzaG91
bGQgYmUgZmlyZWQsIHJldHVybnMgdGhlIHRhcmdldCdzIElELgorICovCitmdW5jdGlvbiBnZXRU
YXJnZXRJbnN0Rm9ySW5wdXRFdmVudCh0b3BMZXZlbFR5cGUsIHRhcmdldEluc3QpIHsKKyAgaWYg
KHRvcExldmVsVHlwZSA9PT0gJ3RvcElucHV0JykgeworICAgIC8vIEluIG1vZGVybiBicm93c2Vy
cyAoaS5lLiwgbm90IElFOCBvciBJRTkpLCB0aGUgaW5wdXQgZXZlbnQgaXMgZXhhY3RseQorICAg
IC8vIHdoYXQgd2Ugd2FudCBzbyBmYWxsIHRocm91Z2ggaGVyZSBhbmQgdHJpZ2dlciBhbiBhYnN0
cmFjdCBldmVudAorICAgIHJldHVybiB0YXJnZXRJbnN0OworICB9Cit9CisKK2Z1bmN0aW9uIGhh
bmRsZUV2ZW50c0ZvcklucHV0RXZlbnRJRSh0b3BMZXZlbFR5cGUsIHRhcmdldCwgdGFyZ2V0SW5z
dCkgeworICBpZiAodG9wTGV2ZWxUeXBlID09PSAndG9wRm9jdXMnKSB7CisgICAgLy8gSW4gSUU4
LCB3ZSBjYW4gY2FwdHVyZSBhbG1vc3QgYWxsIC52YWx1ZSBjaGFuZ2VzIGJ5IGFkZGluZyBhCisg
ICAgLy8gcHJvcGVydHljaGFuZ2UgaGFuZGxlciBhbmQgbG9va2luZyBmb3IgZXZlbnRzIHdpdGgg
cHJvcGVydHlOYW1lCisgICAgLy8gZXF1YWwgdG8gJ3ZhbHVlJworICAgIC8vIEluIElFOS0xMSwg
cHJvcGVydHljaGFuZ2UgZmlyZXMgZm9yIG1vc3QgaW5wdXQgZXZlbnRzIGJ1dCBpcyBidWdneSBh
bmQKKyAgICAvLyBkb2Vzbid0IGZpcmUgd2hlbiB0ZXh0IGlzIGRlbGV0ZWQsIGJ1dCBjb252ZW5p
ZW50bHksIHNlbGVjdGlvbmNoYW5nZQorICAgIC8vIGFwcGVhcnMgdG8gZmlyZSBpbiBhbGwgb2Yg
dGhlIHJlbWFpbmluZyBjYXNlcyBzbyB3ZSBjYXRjaCB0aG9zZSBhbmQKKyAgICAvLyBmb3J3YXJk
IHRoZSBldmVudCBpZiB0aGUgdmFsdWUgaGFzIGNoYW5nZWQKKyAgICAvLyBJbiBlaXRoZXIgY2Fz
ZSwgd2UgZG9uJ3Qgd2FudCB0byBjYWxsIHRoZSBldmVudCBoYW5kbGVyIGlmIHRoZSB2YWx1ZQor
ICAgIC8vIGlzIGNoYW5nZWQgZnJvbSBKUyBzbyB3ZSByZWRlZmluZSBhIHNldHRlciBmb3IgYC52
YWx1ZWAgdGhhdCB1cGRhdGVzCisgICAgLy8gb3VyIGFjdGl2ZUVsZW1lbnRWYWx1ZSB2YXJpYWJs
ZSwgYWxsb3dpbmcgdXMgdG8gaWdub3JlIHRob3NlIGNoYW5nZXMKKyAgICAvLworICAgIC8vIHN0
b3BXYXRjaGluZygpIHNob3VsZCBiZSBhIG5vb3AgaGVyZSBidXQgd2UgY2FsbCBpdCBqdXN0IGlu
IGNhc2Ugd2UKKyAgICAvLyBtaXNzZWQgYSBibHVyIGV2ZW50IHNvbWVob3cuCisgICAgc3RvcFdh
dGNoaW5nRm9yVmFsdWVDaGFuZ2UoKTsKKyAgICBzdGFydFdhdGNoaW5nRm9yVmFsdWVDaGFuZ2Uo
dGFyZ2V0LCB0YXJnZXRJbnN0KTsKKyAgfSBlbHNlIGlmICh0b3BMZXZlbFR5cGUgPT09ICd0b3BC
bHVyJykgeworICAgIHN0b3BXYXRjaGluZ0ZvclZhbHVlQ2hhbmdlKCk7CisgIH0KK30KKworLy8g
Rm9yIElFOCBhbmQgSUU5LgorZnVuY3Rpb24gZ2V0VGFyZ2V0SW5zdEZvcklucHV0RXZlbnRJRSh0
b3BMZXZlbFR5cGUsIHRhcmdldEluc3QpIHsKKyAgaWYgKHRvcExldmVsVHlwZSA9PT0gJ3RvcFNl
bGVjdGlvbkNoYW5nZScgfHwgdG9wTGV2ZWxUeXBlID09PSAndG9wS2V5VXAnIHx8IHRvcExldmVs
VHlwZSA9PT0gJ3RvcEtleURvd24nKSB7CisgICAgLy8gT24gdGhlIHNlbGVjdGlvbmNoYW5nZSBl
dmVudCwgdGhlIHRhcmdldCBpcyBqdXN0IGRvY3VtZW50IHdoaWNoIGlzbid0CisgICAgLy8gaGVs
cGZ1bCBmb3IgdXMgc28ganVzdCBjaGVjayBhY3RpdmVFbGVtZW50IGluc3RlYWQuCisgICAgLy8K
KyAgICAvLyA5OSUgb2YgdGhlIHRpbWUsIGtleWRvd24gYW5kIGtleXVwIGFyZW4ndCBuZWNlc3Nh
cnkuIElFOCBmYWlscyB0byBmaXJlCisgICAgLy8gcHJvcGVydHljaGFuZ2Ugb24gdGhlIGZpcnN0
IGlucHV0IGV2ZW50IGFmdGVyIHNldHRpbmcgYHZhbHVlYCBmcm9tIGEKKyAgICAvLyBzY3JpcHQg
YW5kIGZpcmVzIG9ubHkga2V5ZG93biwga2V5cHJlc3MsIGtleXVwLiBDYXRjaGluZyBrZXl1cCB1
c3VhbGx5CisgICAgLy8gZ2V0cyBpdCBhbmQgY2F0Y2hpbmcga2V5ZG93biBsZXRzIHVzIGZpcmUg
YW4gZXZlbnQgZm9yIHRoZSBmaXJzdAorICAgIC8vIGtleXN0cm9rZSBpZiB1c2VyIGRvZXMgYSBr
ZXkgcmVwZWF0IChpdCdsbCBiZSBhIGxpdHRsZSBkZWxheWVkOiByaWdodAorICAgIC8vIGJlZm9y
ZSB0aGUgc2Vjb25kIGtleXN0cm9rZSkuIE90aGVyIGlucHV0IG1ldGhvZHMgKGUuZy4sIHBhc3Rl
KSBzZWVtIHRvCisgICAgLy8gZmlyZSBzZWxlY3Rpb25jaGFuZ2Ugbm9ybWFsbHkuCisgICAgaWYg
KGFjdGl2ZUVsZW1lbnQgJiYgYWN0aXZlRWxlbWVudC52YWx1ZSAhPT0gYWN0aXZlRWxlbWVudFZh
bHVlKSB7CisgICAgICBhY3RpdmVFbGVtZW50VmFsdWUgPSBhY3RpdmVFbGVtZW50LnZhbHVlOwor
ICAgICAgcmV0dXJuIGFjdGl2ZUVsZW1lbnRJbnN0OworICAgIH0KKyAgfQorfQorCisvKioKKyAq
IFNFQ1RJT046IGhhbmRsZSBgY2xpY2tgIGV2ZW50CisgKi8KK2Z1bmN0aW9uIHNob3VsZFVzZUNs
aWNrRXZlbnQoZWxlbSkgeworICAvLyBVc2UgdGhlIGBjbGlja2AgZXZlbnQgdG8gZGV0ZWN0IGNo
YW5nZXMgdG8gY2hlY2tib3ggYW5kIHJhZGlvIGlucHV0cy4KKyAgLy8gVGhpcyBhcHByb2FjaCB3
b3JrcyBhY3Jvc3MgYWxsIGJyb3dzZXJzLCB3aGVyZWFzIGBjaGFuZ2VgIGRvZXMgbm90IGZpcmUK
KyAgLy8gdW50aWwgYGJsdXJgIGluIElFOC4KKyAgcmV0dXJuIGVsZW0ubm9kZU5hbWUgJiYgZWxl
bS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnaW5wdXQnICYmIChlbGVtLnR5cGUgPT09ICdj
aGVja2JveCcgfHwgZWxlbS50eXBlID09PSAncmFkaW8nKTsKK30KKworZnVuY3Rpb24gZ2V0VGFy
Z2V0SW5zdEZvckNsaWNrRXZlbnQodG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0KSB7CisgIGlmICh0
b3BMZXZlbFR5cGUgPT09ICd0b3BDbGljaycpIHsKKyAgICByZXR1cm4gdGFyZ2V0SW5zdDsKKyAg
fQorfQorCisvKioKKyAqIFRoaXMgcGx1Z2luIGNyZWF0ZXMgYW4gYG9uQ2hhbmdlYCBldmVudCB0
aGF0IG5vcm1hbGl6ZXMgY2hhbmdlIGV2ZW50cworICogYWNyb3NzIGZvcm0gZWxlbWVudHMuIFRo
aXMgZXZlbnQgZmlyZXMgYXQgYSB0aW1lIHdoZW4gaXQncyBwb3NzaWJsZSB0bworICogY2hhbmdl
IHRoZSBlbGVtZW50J3MgdmFsdWUgd2l0aG91dCBzZWVpbmcgYSBmbGlja2VyLgorICoKKyAqIFN1
cHBvcnRlZCBlbGVtZW50cyBhcmU6CisgKiAtIGlucHV0IChzZWUgYGlzVGV4dElucHV0RWxlbWVu
dGApCisgKiAtIHRleHRhcmVhCisgKiAtIHNlbGVjdAorICovCit2YXIgQ2hhbmdlRXZlbnRQbHVn
aW4gPSB7CisKKyAgZXZlbnRUeXBlczogZXZlbnRUeXBlcywKKworICBleHRyYWN0RXZlbnRzOiBm
dW5jdGlvbiAodG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZl
bnRUYXJnZXQpIHsKKyAgICB2YXIgdGFyZ2V0Tm9kZSA9IHRhcmdldEluc3QgPyBSZWFjdERPTUNv
bXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0YXJnZXRJbnN0KSA6IHdpbmRvdzsKKwor
ICAgIHZhciBnZXRUYXJnZXRJbnN0RnVuYywgaGFuZGxlRXZlbnRGdW5jOworICAgIGlmIChzaG91
bGRVc2VDaGFuZ2VFdmVudCh0YXJnZXROb2RlKSkgeworICAgICAgaWYgKGRvZXNDaGFuZ2VFdmVu
dEJ1YmJsZSkgeworICAgICAgICBnZXRUYXJnZXRJbnN0RnVuYyA9IGdldFRhcmdldEluc3RGb3JD
aGFuZ2VFdmVudDsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGhhbmRsZUV2ZW50RnVuYyA9IGhh
bmRsZUV2ZW50c0ZvckNoYW5nZUV2ZW50SUU4OworICAgICAgfQorICAgIH0gZWxzZSBpZiAoaXNU
ZXh0SW5wdXRFbGVtZW50KHRhcmdldE5vZGUpKSB7CisgICAgICBpZiAoaXNJbnB1dEV2ZW50U3Vw
cG9ydGVkKSB7CisgICAgICAgIGdldFRhcmdldEluc3RGdW5jID0gZ2V0VGFyZ2V0SW5zdEZvcklu
cHV0RXZlbnQ7CisgICAgICB9IGVsc2UgeworICAgICAgICBnZXRUYXJnZXRJbnN0RnVuYyA9IGdl
dFRhcmdldEluc3RGb3JJbnB1dEV2ZW50SUU7CisgICAgICAgIGhhbmRsZUV2ZW50RnVuYyA9IGhh
bmRsZUV2ZW50c0ZvcklucHV0RXZlbnRJRTsKKyAgICAgIH0KKyAgICB9IGVsc2UgaWYgKHNob3Vs
ZFVzZUNsaWNrRXZlbnQodGFyZ2V0Tm9kZSkpIHsKKyAgICAgIGdldFRhcmdldEluc3RGdW5jID0g
Z2V0VGFyZ2V0SW5zdEZvckNsaWNrRXZlbnQ7CisgICAgfQorCisgICAgaWYgKGdldFRhcmdldElu
c3RGdW5jKSB7CisgICAgICB2YXIgaW5zdCA9IGdldFRhcmdldEluc3RGdW5jKHRvcExldmVsVHlw
ZSwgdGFyZ2V0SW5zdCk7CisgICAgICBpZiAoaW5zdCkgeworICAgICAgICB2YXIgZXZlbnQgPSBT
eW50aGV0aWNFdmVudC5nZXRQb29sZWQoZXZlbnRUeXBlcy5jaGFuZ2UsIGluc3QsIG5hdGl2ZUV2
ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7CisgICAgICAgIGV2ZW50LnR5cGUgPSAnY2hhbmdlJzsK
KyAgICAgICAgRXZlbnRQcm9wYWdhdG9ycy5hY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKGV2
ZW50KTsKKyAgICAgICAgcmV0dXJuIGV2ZW50OworICAgICAgfQorICAgIH0KKworICAgIGlmICho
YW5kbGVFdmVudEZ1bmMpIHsKKyAgICAgIGhhbmRsZUV2ZW50RnVuYyh0b3BMZXZlbFR5cGUsIHRh
cmdldE5vZGUsIHRhcmdldEluc3QpOworICAgIH0KKyAgfQorCit9OworCittb2R1bGUuZXhwb3J0
cyA9IENoYW5nZUV2ZW50UGx1Z2luOworfSx7IjEwNiI6MTA2LCIxMTMiOjExMywiMTE0IjoxMTQs
IjEyNiI6MTI2LCIxNiI6MTYsIjE5IjoxOSwiMzIiOjMyLCI3NSI6NzUsIjg0Ijo4NH1dLDg6W2Z1
bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1w
cmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBU
aGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBm
b3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBj
YW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisg
KgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIERPTUxhenlUcmVlID0gX2RlcmVxXyg5KTsK
K3ZhciBEYW5nZXIgPSBfZGVyZXFfKDEzKTsKK3ZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSBf
ZGVyZXFfKDMyKTsKK3ZhciBSZWFjdEluc3RydW1lbnRhdGlvbiA9IF9kZXJlcV8oNTkpOworCit2
YXIgY3JlYXRlTWljcm9zb2Z0VW5zYWZlTG9jYWxGdW5jdGlvbiA9IF9kZXJlcV8oOTgpOwordmFy
IHNldElubmVySFRNTCA9IF9kZXJlcV8oMTE3KTsKK3ZhciBzZXRUZXh0Q29udGVudCA9IF9kZXJl
cV8oMTE4KTsKKworZnVuY3Rpb24gZ2V0Tm9kZUFmdGVyKHBhcmVudE5vZGUsIG5vZGUpIHsKKyAg
Ly8gU3BlY2lhbCBjYXNlIGZvciB0ZXh0IGNvbXBvbmVudHMsIHdoaWNoIHJldHVybiBbb3Blbiwg
Y2xvc2VdIGNvbW1lbnRzCisgIC8vIGZyb20gZ2V0SG9zdE5vZGUuCisgIGlmIChBcnJheS5pc0Fy
cmF5KG5vZGUpKSB7CisgICAgbm9kZSA9IG5vZGVbMV07CisgIH0KKyAgcmV0dXJuIG5vZGUgPyBu
b2RlLm5leHRTaWJsaW5nIDogcGFyZW50Tm9kZS5maXJzdENoaWxkOworfQorCisvKioKKyAqIElu
c2VydHMgYGNoaWxkTm9kZWAgYXMgYSBjaGlsZCBvZiBgcGFyZW50Tm9kZWAgYXQgdGhlIGBpbmRl
eGAuCisgKgorICogQHBhcmFtIHtET01FbGVtZW50fSBwYXJlbnROb2RlIFBhcmVudCBub2RlIGlu
IHdoaWNoIHRvIGluc2VydC4KKyAqIEBwYXJhbSB7RE9NRWxlbWVudH0gY2hpbGROb2RlIENoaWxk
IG5vZGUgdG8gaW5zZXJ0LgorICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IEluZGV4IGF0IHdoaWNo
IHRvIGluc2VydCB0aGUgY2hpbGQuCisgKiBAaW50ZXJuYWwKKyAqLwordmFyIGluc2VydENoaWxk
QXQgPSBjcmVhdGVNaWNyb3NvZnRVbnNhZmVMb2NhbEZ1bmN0aW9uKGZ1bmN0aW9uIChwYXJlbnRO
b2RlLCBjaGlsZE5vZGUsIHJlZmVyZW5jZU5vZGUpIHsKKyAgLy8gV2UgcmVseSBleGNsdXNpdmVs
eSBvbiBgaW5zZXJ0QmVmb3JlKG5vZGUsIG51bGwpYCBpbnN0ZWFkIG9mIGFsc28gdXNpbmcKKyAg
Ly8gYGFwcGVuZENoaWxkKG5vZGUpYC4gKFVzaW5nIGB1bmRlZmluZWRgIGlzIG5vdCBhbGxvd2Vk
IGJ5IGFsbCBicm93c2VycyBzbworICAvLyB3ZSBhcmUgY2FyZWZ1bCB0byB1c2UgYG51bGxgLikK
KyAgcGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoY2hpbGROb2RlLCByZWZlcmVuY2VOb2RlKTsKK30p
OworCitmdW5jdGlvbiBpbnNlcnRMYXp5VHJlZUNoaWxkQXQocGFyZW50Tm9kZSwgY2hpbGRUcmVl
LCByZWZlcmVuY2VOb2RlKSB7CisgIERPTUxhenlUcmVlLmluc2VydFRyZWVCZWZvcmUocGFyZW50
Tm9kZSwgY2hpbGRUcmVlLCByZWZlcmVuY2VOb2RlKTsKK30KKworZnVuY3Rpb24gbW92ZUNoaWxk
KHBhcmVudE5vZGUsIGNoaWxkTm9kZSwgcmVmZXJlbmNlTm9kZSkgeworICBpZiAoQXJyYXkuaXNB
cnJheShjaGlsZE5vZGUpKSB7CisgICAgbW92ZURlbGltaXRlZFRleHQocGFyZW50Tm9kZSwgY2hp
bGROb2RlWzBdLCBjaGlsZE5vZGVbMV0sIHJlZmVyZW5jZU5vZGUpOworICB9IGVsc2UgeworICAg
IGluc2VydENoaWxkQXQocGFyZW50Tm9kZSwgY2hpbGROb2RlLCByZWZlcmVuY2VOb2RlKTsKKyAg
fQorfQorCitmdW5jdGlvbiByZW1vdmVDaGlsZChwYXJlbnROb2RlLCBjaGlsZE5vZGUpIHsKKyAg
aWYgKEFycmF5LmlzQXJyYXkoY2hpbGROb2RlKSkgeworICAgIHZhciBjbG9zaW5nQ29tbWVudCA9
IGNoaWxkTm9kZVsxXTsKKyAgICBjaGlsZE5vZGUgPSBjaGlsZE5vZGVbMF07CisgICAgcmVtb3Zl
RGVsaW1pdGVkVGV4dChwYXJlbnROb2RlLCBjaGlsZE5vZGUsIGNsb3NpbmdDb21tZW50KTsKKyAg
ICBwYXJlbnROb2RlLnJlbW92ZUNoaWxkKGNsb3NpbmdDb21tZW50KTsKKyAgfQorICBwYXJlbnRO
b2RlLnJlbW92ZUNoaWxkKGNoaWxkTm9kZSk7Cit9CisKK2Z1bmN0aW9uIG1vdmVEZWxpbWl0ZWRU
ZXh0KHBhcmVudE5vZGUsIG9wZW5pbmdDb21tZW50LCBjbG9zaW5nQ29tbWVudCwgcmVmZXJlbmNl
Tm9kZSkgeworICB2YXIgbm9kZSA9IG9wZW5pbmdDb21tZW50OworICB3aGlsZSAodHJ1ZSkgewor
ICAgIHZhciBuZXh0Tm9kZSA9IG5vZGUubmV4dFNpYmxpbmc7CisgICAgaW5zZXJ0Q2hpbGRBdChw
YXJlbnROb2RlLCBub2RlLCByZWZlcmVuY2VOb2RlKTsKKyAgICBpZiAobm9kZSA9PT0gY2xvc2lu
Z0NvbW1lbnQpIHsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgICBub2RlID0gbmV4dE5vZGU7Cisg
IH0KK30KKworZnVuY3Rpb24gcmVtb3ZlRGVsaW1pdGVkVGV4dChwYXJlbnROb2RlLCBzdGFydE5v
ZGUsIGNsb3NpbmdDb21tZW50KSB7CisgIHdoaWxlICh0cnVlKSB7CisgICAgdmFyIG5vZGUgPSBz
dGFydE5vZGUubmV4dFNpYmxpbmc7CisgICAgaWYgKG5vZGUgPT09IGNsb3NpbmdDb21tZW50KSB7
CisgICAgICAvLyBUaGUgY2xvc2luZyBjb21tZW50IGlzIHJlbW92ZWQgYnkgUmVhY3RNdWx0aUNo
aWxkLgorICAgICAgYnJlYWs7CisgICAgfSBlbHNlIHsKKyAgICAgIHBhcmVudE5vZGUucmVtb3Zl
Q2hpbGQobm9kZSk7CisgICAgfQorICB9Cit9CisKK2Z1bmN0aW9uIHJlcGxhY2VEZWxpbWl0ZWRU
ZXh0KG9wZW5pbmdDb21tZW50LCBjbG9zaW5nQ29tbWVudCwgc3RyaW5nVGV4dCkgeworICB2YXIg
cGFyZW50Tm9kZSA9IG9wZW5pbmdDb21tZW50LnBhcmVudE5vZGU7CisgIHZhciBub2RlQWZ0ZXJD
b21tZW50ID0gb3BlbmluZ0NvbW1lbnQubmV4dFNpYmxpbmc7CisgIGlmIChub2RlQWZ0ZXJDb21t
ZW50ID09PSBjbG9zaW5nQ29tbWVudCkgeworICAgIC8vIFRoZXJlIGFyZSBubyB0ZXh0IG5vZGVz
IGJldHdlZW4gdGhlIG9wZW5pbmcgYW5kIGNsb3NpbmcgY29tbWVudHM7IGluc2VydAorICAgIC8v
IGEgbmV3IG9uZSBpZiBzdHJpbmdUZXh0IGlzbid0IGVtcHR5LgorICAgIGlmIChzdHJpbmdUZXh0
KSB7CisgICAgICBpbnNlcnRDaGlsZEF0KHBhcmVudE5vZGUsIGRvY3VtZW50LmNyZWF0ZVRleHRO
b2RlKHN0cmluZ1RleHQpLCBub2RlQWZ0ZXJDb21tZW50KTsKKyAgICB9CisgIH0gZWxzZSB7Cisg
ICAgaWYgKHN0cmluZ1RleHQpIHsKKyAgICAgIC8vIFNldCB0aGUgdGV4dCBjb250ZW50IG9mIHRo
ZSBmaXJzdCBub2RlIGFmdGVyIHRoZSBvcGVuaW5nIGNvbW1lbnQsIGFuZAorICAgICAgLy8gcmVt
b3ZlIGFsbCBmb2xsb3dpbmcgbm9kZXMgdXAgdW50aWwgdGhlIGNsb3NpbmcgY29tbWVudC4KKyAg
ICAgIHNldFRleHRDb250ZW50KG5vZGVBZnRlckNvbW1lbnQsIHN0cmluZ1RleHQpOworICAgICAg
cmVtb3ZlRGVsaW1pdGVkVGV4dChwYXJlbnROb2RlLCBub2RlQWZ0ZXJDb21tZW50LCBjbG9zaW5n
Q29tbWVudCk7CisgICAgfSBlbHNlIHsKKyAgICAgIHJlbW92ZURlbGltaXRlZFRleHQocGFyZW50
Tm9kZSwgb3BlbmluZ0NvbW1lbnQsIGNsb3NpbmdDb21tZW50KTsKKyAgICB9CisgIH0KKworICBp
ZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgUmVhY3RJbnN0cnVtZW50
YXRpb24uZGVidWdUb29sLm9uSG9zdE9wZXJhdGlvbih7CisgICAgICBpbnN0YW5jZUlEOiBSZWFj
dERPTUNvbXBvbmVudFRyZWUuZ2V0SW5zdGFuY2VGcm9tTm9kZShvcGVuaW5nQ29tbWVudCkuX2Rl
YnVnSUQsCisgICAgICB0eXBlOiAncmVwbGFjZSB0ZXh0JywKKyAgICAgIHBheWxvYWQ6IHN0cmlu
Z1RleHQKKyAgICB9KTsKKyAgfQorfQorCit2YXIgZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhN
YXJrdXAgPSBEYW5nZXIuZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXA7CitpZiAoImRl
dmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgIGRhbmdlcm91c2x5UmVwbGFjZU5vZGVX
aXRoTWFya3VwID0gZnVuY3Rpb24gKG9sZENoaWxkLCBtYXJrdXAsIHByZXZJbnN0YW5jZSkgewor
ICAgIERhbmdlci5kYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cChvbGRDaGlsZCwgbWFy
a3VwKTsKKyAgICBpZiAocHJldkluc3RhbmNlLl9kZWJ1Z0lEICE9PSAwKSB7CisgICAgICBSZWFj
dEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25Ib3N0T3BlcmF0aW9uKHsKKyAgICAgICAgaW5z
dGFuY2VJRDogcHJldkluc3RhbmNlLl9kZWJ1Z0lELAorICAgICAgICB0eXBlOiAncmVwbGFjZSB3
aXRoJywKKyAgICAgICAgcGF5bG9hZDogbWFya3VwLnRvU3RyaW5nKCkKKyAgICAgIH0pOworICAg
IH0gZWxzZSB7CisgICAgICB2YXIgbmV4dEluc3RhbmNlID0gUmVhY3RET01Db21wb25lbnRUcmVl
LmdldEluc3RhbmNlRnJvbU5vZGUobWFya3VwLm5vZGUpOworICAgICAgaWYgKG5leHRJbnN0YW5j
ZS5fZGVidWdJRCAhPT0gMCkgeworICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rv
b2wub25Ib3N0T3BlcmF0aW9uKHsKKyAgICAgICAgICBpbnN0YW5jZUlEOiBuZXh0SW5zdGFuY2Uu
X2RlYnVnSUQsCisgICAgICAgICAgdHlwZTogJ21vdW50JywKKyAgICAgICAgICBwYXlsb2FkOiBt
YXJrdXAudG9TdHJpbmcoKQorICAgICAgICB9KTsKKyAgICAgIH0KKyAgICB9CisgIH07Cit9CisK
Ky8qKgorICogT3BlcmF0aW9ucyBmb3IgdXBkYXRpbmcgd2l0aCBET00gY2hpbGRyZW4uCisgKi8K
K3ZhciBET01DaGlsZHJlbk9wZXJhdGlvbnMgPSB7CisKKyAgZGFuZ2Vyb3VzbHlSZXBsYWNlTm9k
ZVdpdGhNYXJrdXA6IGRhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwLAorCisgIHJlcGxh
Y2VEZWxpbWl0ZWRUZXh0OiByZXBsYWNlRGVsaW1pdGVkVGV4dCwKKworICAvKioKKyAgICogVXBk
YXRlcyBhIGNvbXBvbmVudCdzIGNoaWxkcmVuIGJ5IHByb2Nlc3NpbmcgYSBzZXJpZXMgb2YgdXBk
YXRlcy4gVGhlCisgICAqIHVwZGF0ZSBjb25maWd1cmF0aW9ucyBhcmUgZWFjaCBleHBlY3RlZCB0
byBoYXZlIGEgYHBhcmVudE5vZGVgIHByb3BlcnR5LgorICAgKgorICAgKiBAcGFyYW0ge2FycmF5
PG9iamVjdD59IHVwZGF0ZXMgTGlzdCBvZiB1cGRhdGUgY29uZmlndXJhdGlvbnMuCisgICAqIEBp
bnRlcm5hbAorICAgKi8KKyAgcHJvY2Vzc1VwZGF0ZXM6IGZ1bmN0aW9uIChwYXJlbnROb2RlLCB1
cGRhdGVzKSB7CisgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAg
ICAgdmFyIHBhcmVudE5vZGVEZWJ1Z0lEID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldEluc3Rh
bmNlRnJvbU5vZGUocGFyZW50Tm9kZSkuX2RlYnVnSUQ7CisgICAgfQorCisgICAgZm9yICh2YXIg
ayA9IDA7IGsgPCB1cGRhdGVzLmxlbmd0aDsgaysrKSB7CisgICAgICB2YXIgdXBkYXRlID0gdXBk
YXRlc1trXTsKKyAgICAgIHN3aXRjaCAodXBkYXRlLnR5cGUpIHsKKyAgICAgICAgY2FzZSAnSU5T
RVJUX01BUktVUCc6CisgICAgICAgICAgaW5zZXJ0TGF6eVRyZWVDaGlsZEF0KHBhcmVudE5vZGUs
IHVwZGF0ZS5jb250ZW50LCBnZXROb2RlQWZ0ZXIocGFyZW50Tm9kZSwgdXBkYXRlLmFmdGVyTm9k
ZSkpOworICAgICAgICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAg
ICAgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhvc3RPcGVyYXRpb24o
eworICAgICAgICAgICAgICBpbnN0YW5jZUlEOiBwYXJlbnROb2RlRGVidWdJRCwKKyAgICAgICAg
ICAgICAgdHlwZTogJ2luc2VydCBjaGlsZCcsCisgICAgICAgICAgICAgIHBheWxvYWQ6IHsgdG9J
bmRleDogdXBkYXRlLnRvSW5kZXgsIGNvbnRlbnQ6IHVwZGF0ZS5jb250ZW50LnRvU3RyaW5nKCkg
fQorICAgICAgICAgICAgfSk7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlICdNT1ZFX0VYSVNUSU5HJzoKKyAgICAgICAgICBtb3ZlQ2hpbGQocGFyZW50Tm9kZSwg
dXBkYXRlLmZyb21Ob2RlLCBnZXROb2RlQWZ0ZXIocGFyZW50Tm9kZSwgdXBkYXRlLmFmdGVyTm9k
ZSkpOworICAgICAgICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAg
ICAgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhvc3RPcGVyYXRpb24o
eworICAgICAgICAgICAgICBpbnN0YW5jZUlEOiBwYXJlbnROb2RlRGVidWdJRCwKKyAgICAgICAg
ICAgICAgdHlwZTogJ21vdmUgY2hpbGQnLAorICAgICAgICAgICAgICBwYXlsb2FkOiB7IGZyb21J
bmRleDogdXBkYXRlLmZyb21JbmRleCwgdG9JbmRleDogdXBkYXRlLnRvSW5kZXggfQorICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICdT
RVRfTUFSS1VQJzoKKyAgICAgICAgICBzZXRJbm5lckhUTUwocGFyZW50Tm9kZSwgdXBkYXRlLmNv
bnRlbnQpOworICAgICAgICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsK
KyAgICAgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhvc3RPcGVyYXRp
b24oeworICAgICAgICAgICAgICBpbnN0YW5jZUlEOiBwYXJlbnROb2RlRGVidWdJRCwKKyAgICAg
ICAgICAgICAgdHlwZTogJ3JlcGxhY2UgY2hpbGRyZW4nLAorICAgICAgICAgICAgICBwYXlsb2Fk
OiB1cGRhdGUuY29udGVudC50b1N0cmluZygpCisgICAgICAgICAgICB9KTsKKyAgICAgICAgICB9
CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJ1RFWFRfQ09OVEVOVCc6CisgICAgICAg
ICAgc2V0VGV4dENvbnRlbnQocGFyZW50Tm9kZSwgdXBkYXRlLmNvbnRlbnQpOworICAgICAgICAg
IGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICAgICAgIFJlYWN0
SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhvc3RPcGVyYXRpb24oeworICAgICAgICAgICAg
ICBpbnN0YW5jZUlEOiBwYXJlbnROb2RlRGVidWdJRCwKKyAgICAgICAgICAgICAgdHlwZTogJ3Jl
cGxhY2UgdGV4dCcsCisgICAgICAgICAgICAgIHBheWxvYWQ6IHVwZGF0ZS5jb250ZW50LnRvU3Ry
aW5nKCkKKyAgICAgICAgICAgIH0pOworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSAnUkVNT1ZFX05PREUnOgorICAgICAgICAgIHJlbW92ZUNoaWxkKHBhcmVudE5v
ZGUsIHVwZGF0ZS5mcm9tTm9kZSk7CisgICAgICAgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdw
cm9kdWN0aW9uJykgeworICAgICAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29s
Lm9uSG9zdE9wZXJhdGlvbih7CisgICAgICAgICAgICAgIGluc3RhbmNlSUQ6IHBhcmVudE5vZGVE
ZWJ1Z0lELAorICAgICAgICAgICAgICB0eXBlOiAncmVtb3ZlIGNoaWxkJywKKyAgICAgICAgICAg
ICAgcGF5bG9hZDogeyBmcm9tSW5kZXg6IHVwZGF0ZS5mcm9tSW5kZXggfQorICAgICAgICAgICAg
fSk7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgfQorICAgIH0KKyAgfQor
Cit9OworCittb2R1bGUuZXhwb3J0cyA9IERPTUNoaWxkcmVuT3BlcmF0aW9uczsKK30seyIxMTci
OjExNywiMTE4IjoxMTgsIjEzIjoxMywiMzIiOjMyLCI1OSI6NTksIjkiOjksIjk4Ijo5OH1dLDk6
W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAx
NS1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5z
ZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2Yg
dGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0
cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnku
CisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIERPTU5hbWVzcGFjZXMgPSBfZGVyZXFf
KDEwKTsKK3ZhciBzZXRJbm5lckhUTUwgPSBfZGVyZXFfKDExNyk7CisKK3ZhciBjcmVhdGVNaWNy
b3NvZnRVbnNhZmVMb2NhbEZ1bmN0aW9uID0gX2RlcmVxXyg5OCk7Cit2YXIgc2V0VGV4dENvbnRl
bnQgPSBfZGVyZXFfKDExOCk7CisKK3ZhciBFTEVNRU5UX05PREVfVFlQRSA9IDE7Cit2YXIgRE9D
VU1FTlRfRlJBR01FTlRfTk9ERV9UWVBFID0gMTE7CisKKy8qKgorICogSW4gSUUgKDgtMTEpIGFu
ZCBFZGdlLCBhcHBlbmRpbmcgbm9kZXMgd2l0aCBubyBjaGlsZHJlbiBpcyBkcmFtYXRpY2FsbHkK
KyAqIGZhc3RlciB0aGFuIGFwcGVuZGluZyBhIGZ1bGwgc3VidHJlZSwgc28gd2UgZXNzZW50aWFs
bHkgcXVldWUgdXAgdGhlCisgKiAuYXBwZW5kQ2hpbGQgY2FsbHMgaGVyZSBhbmQgYXBwbHkgdGhl
bSBzbyBlYWNoIG5vZGUgaXMgYWRkZWQgdG8gaXRzIHBhcmVudAorICogYmVmb3JlIGFueSBjaGls
ZHJlbiBhcmUgYWRkZWQuCisgKgorICogSW4gb3RoZXIgYnJvd3NlcnMsIGRvaW5nIHNvIGlzIHNs
b3dlciBvciBuZXV0cmFsIGNvbXBhcmVkIHRvIHRoZSBvdGhlciBvcmRlcgorICogKGluIEZpcmVm
b3gsIHR3aWNlIGFzIHNsb3cpIHNvIHdlIG9ubHkgZG8gdGhpcyBpbnZlcnNpb24gaW4gSUUuCisg
KgorICogU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9zcGljeWovaW5uZXJodG1sLXZzLWNyZWF0ZWVs
ZW1lbnQtdnMtY2xvbmVub2RlLgorICovCit2YXIgZW5hYmxlTGF6eSA9IHR5cGVvZiBkb2N1bWVu
dCAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGRvY3VtZW50LmRvY3VtZW50TW9kZSA9PT0gJ251
bWJlcicgfHwgdHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIG5hdmln
YXRvci51c2VyQWdlbnQgPT09ICdzdHJpbmcnICYmIC9cYkVkZ2VcL1xkLy50ZXN0KG5hdmlnYXRv
ci51c2VyQWdlbnQpOworCitmdW5jdGlvbiBpbnNlcnRUcmVlQ2hpbGRyZW4odHJlZSkgeworICBp
ZiAoIWVuYWJsZUxhenkpIHsKKyAgICByZXR1cm47CisgIH0KKyAgdmFyIG5vZGUgPSB0cmVlLm5v
ZGU7CisgIHZhciBjaGlsZHJlbiA9IHRyZWUuY2hpbGRyZW47CisgIGlmIChjaGlsZHJlbi5sZW5n
dGgpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICBpbnNlcnRUcmVlQmVmb3JlKG5vZGUsIGNoaWxkcmVuW2ldLCBudWxsKTsKKyAgICB9Cisg
IH0gZWxzZSBpZiAodHJlZS5odG1sICE9IG51bGwpIHsKKyAgICBzZXRJbm5lckhUTUwobm9kZSwg
dHJlZS5odG1sKTsKKyAgfSBlbHNlIGlmICh0cmVlLnRleHQgIT0gbnVsbCkgeworICAgIHNldFRl
eHRDb250ZW50KG5vZGUsIHRyZWUudGV4dCk7CisgIH0KK30KKwordmFyIGluc2VydFRyZWVCZWZv
cmUgPSBjcmVhdGVNaWNyb3NvZnRVbnNhZmVMb2NhbEZ1bmN0aW9uKGZ1bmN0aW9uIChwYXJlbnRO
b2RlLCB0cmVlLCByZWZlcmVuY2VOb2RlKSB7CisgIC8vIERvY3VtZW50RnJhZ21lbnRzIGFyZW4n
dCBhY3R1YWxseSBwYXJ0IG9mIHRoZSBET00gYWZ0ZXIgaW5zZXJ0aW9uIHNvCisgIC8vIGFwcGVu
ZGluZyBjaGlsZHJlbiB3b24ndCB1cGRhdGUgdGhlIERPTS4gV2UgbmVlZCB0byBlbnN1cmUgdGhl
IGZyYWdtZW50CisgIC8vIGlzIHByb3Blcmx5IHBvcHVsYXRlZCBmaXJzdCwgYnJlYWtpbmcgb3V0
IG9mIG91ciBsYXp5IGFwcHJvYWNoIGZvciBqdXN0CisgIC8vIHRoaXMgbGV2ZWwuIEFsc28sIHNv
bWUgPG9iamVjdD4gcGx1Z2lucyAobGlrZSBGbGFzaCBQbGF5ZXIpIHdpbGwgcmVhZAorICAvLyA8
cGFyYW0+IG5vZGVzIGltbWVkaWF0ZWx5IHVwb24gaW5zZXJ0aW9uIGludG8gdGhlIERPTSwgc28g
PG9iamVjdD4KKyAgLy8gbXVzdCBhbHNvIGJlIHBvcHVsYXRlZCBwcmlvciB0byBpbnNlcnRpb24g
aW50byB0aGUgRE9NLgorICBpZiAodHJlZS5ub2RlLm5vZGVUeXBlID09PSBET0NVTUVOVF9GUkFH
TUVOVF9OT0RFX1RZUEUgfHwgdHJlZS5ub2RlLm5vZGVUeXBlID09PSBFTEVNRU5UX05PREVfVFlQ
RSAmJiB0cmVlLm5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ29iamVjdCcgJiYgKHRy
ZWUubm9kZS5uYW1lc3BhY2VVUkkgPT0gbnVsbCB8fCB0cmVlLm5vZGUubmFtZXNwYWNlVVJJID09
PSBET01OYW1lc3BhY2VzLmh0bWwpKSB7CisgICAgaW5zZXJ0VHJlZUNoaWxkcmVuKHRyZWUpOwor
ICAgIHBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRyZWUubm9kZSwgcmVmZXJlbmNlTm9kZSk7Cisg
IH0gZWxzZSB7CisgICAgcGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodHJlZS5ub2RlLCByZWZlcmVu
Y2VOb2RlKTsKKyAgICBpbnNlcnRUcmVlQ2hpbGRyZW4odHJlZSk7CisgIH0KK30pOworCitmdW5j
dGlvbiByZXBsYWNlQ2hpbGRXaXRoVHJlZShvbGROb2RlLCBuZXdUcmVlKSB7CisgIG9sZE5vZGUu
cGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3VHJlZS5ub2RlLCBvbGROb2RlKTsKKyAgaW5zZXJ0
VHJlZUNoaWxkcmVuKG5ld1RyZWUpOworfQorCitmdW5jdGlvbiBxdWV1ZUNoaWxkKHBhcmVudFRy
ZWUsIGNoaWxkVHJlZSkgeworICBpZiAoZW5hYmxlTGF6eSkgeworICAgIHBhcmVudFRyZWUuY2hp
bGRyZW4ucHVzaChjaGlsZFRyZWUpOworICB9IGVsc2UgeworICAgIHBhcmVudFRyZWUubm9kZS5h
cHBlbmRDaGlsZChjaGlsZFRyZWUubm9kZSk7CisgIH0KK30KKworZnVuY3Rpb24gcXVldWVIVE1M
KHRyZWUsIGh0bWwpIHsKKyAgaWYgKGVuYWJsZUxhenkpIHsKKyAgICB0cmVlLmh0bWwgPSBodG1s
OworICB9IGVsc2UgeworICAgIHNldElubmVySFRNTCh0cmVlLm5vZGUsIGh0bWwpOworICB9Cit9
CisKK2Z1bmN0aW9uIHF1ZXVlVGV4dCh0cmVlLCB0ZXh0KSB7CisgIGlmIChlbmFibGVMYXp5KSB7
CisgICAgdHJlZS50ZXh0ID0gdGV4dDsKKyAgfSBlbHNlIHsKKyAgICBzZXRUZXh0Q29udGVudCh0
cmVlLm5vZGUsIHRleHQpOworICB9Cit9CisKK2Z1bmN0aW9uIHRvU3RyaW5nKCkgeworICByZXR1
cm4gdGhpcy5ub2RlLm5vZGVOYW1lOworfQorCitmdW5jdGlvbiBET01MYXp5VHJlZShub2RlKSB7
CisgIHJldHVybiB7CisgICAgbm9kZTogbm9kZSwKKyAgICBjaGlsZHJlbjogW10sCisgICAgaHRt
bDogbnVsbCwKKyAgICB0ZXh0OiBudWxsLAorICAgIHRvU3RyaW5nOiB0b1N0cmluZworICB9Owor
fQorCitET01MYXp5VHJlZS5pbnNlcnRUcmVlQmVmb3JlID0gaW5zZXJ0VHJlZUJlZm9yZTsKK0RP
TUxhenlUcmVlLnJlcGxhY2VDaGlsZFdpdGhUcmVlID0gcmVwbGFjZUNoaWxkV2l0aFRyZWU7CitE
T01MYXp5VHJlZS5xdWV1ZUNoaWxkID0gcXVldWVDaGlsZDsKK0RPTUxhenlUcmVlLnF1ZXVlSFRN
TCA9IHF1ZXVlSFRNTDsKK0RPTUxhenlUcmVlLnF1ZXVlVGV4dCA9IHF1ZXVlVGV4dDsKKworbW9k
dWxlLmV4cG9ydHMgPSBET01MYXp5VHJlZTsKK30seyIxMCI6MTAsIjExNyI6MTE3LCIxMTgiOjEx
OCwiOTgiOjk4fV0sMTA6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisg
KiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBC
U0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICog
b2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUg
c2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIERPTU5hbWVz
cGFjZXMgPSB7CisgIGh0bWw6ICdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJywKKyAgbWF0
aG1sOiAnaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCcsCisgIHN2ZzogJ2h0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnJworfTsKKworbW9kdWxlLmV4cG9ydHMgPSBET01OYW1lc3Bh
Y2VzOworfSx7fV0sMTE6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisg
KiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBC
U0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICog
b2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUg
c2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9wcm9kSW52
YXJpYW50ID0gX2RlcmVxXygxMTYpOworCit2YXIgaW52YXJpYW50ID0gX2RlcmVxXygxNDApOwor
CitmdW5jdGlvbiBjaGVja01hc2sodmFsdWUsIGJpdG1hc2spIHsKKyAgcmV0dXJuICh2YWx1ZSAm
IGJpdG1hc2spID09PSBiaXRtYXNrOworfQorCit2YXIgRE9NUHJvcGVydHlJbmplY3Rpb24gPSB7
CisgIC8qKgorICAgKiBNYXBwaW5nIGZyb20gbm9ybWFsaXplZCwgY2FtZWxjYXNlZCBwcm9wZXJ0
eSBuYW1lcyB0byBhIGNvbmZpZ3VyYXRpb24gdGhhdAorICAgKiBzcGVjaWZpZXMgaG93IHRoZSBh
c3NvY2lhdGVkIERPTSBwcm9wZXJ0eSBzaG91bGQgYmUgYWNjZXNzZWQgb3IgcmVuZGVyZWQuCisg
ICAqLworICBNVVNUX1VTRV9QUk9QRVJUWTogMHgxLAorICBIQVNfQk9PTEVBTl9WQUxVRTogMHg0
LAorICBIQVNfTlVNRVJJQ19WQUxVRTogMHg4LAorICBIQVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxV
RTogMHgxMCB8IDB4OCwKKyAgSEFTX09WRVJMT0FERURfQk9PTEVBTl9WQUxVRTogMHgyMCwKKwor
ICAvKioKKyAgICogSW5qZWN0IHNvbWUgc3BlY2lhbGl6ZWQga25vd2xlZGdlIGFib3V0IHRoZSBE
T00uIFRoaXMgdGFrZXMgYSBjb25maWcgb2JqZWN0CisgICAqIHdpdGggdGhlIGZvbGxvd2luZyBw
cm9wZXJ0aWVzOgorICAgKgorICAgKiBpc0N1c3RvbUF0dHJpYnV0ZTogZnVuY3Rpb24gdGhhdCBn
aXZlbiBhbiBhdHRyaWJ1dGUgbmFtZSB3aWxsIHJldHVybiB0cnVlCisgICAqIGlmIGl0IGNhbiBi
ZSBpbnNlcnRlZCBpbnRvIHRoZSBET00gdmVyYmF0aW0uIFVzZWZ1bCBmb3IgZGF0YS0qIG9yIGFy
aWEtKgorICAgKiBhdHRyaWJ1dGVzIHdoZXJlIGl0J3MgaW1wb3NzaWJsZSB0byBlbnVtZXJhdGUg
YWxsIG9mIHRoZSBwb3NzaWJsZQorICAgKiBhdHRyaWJ1dGUgbmFtZXMsCisgICAqCisgICAqIFBy
b3BlcnRpZXM6IG9iamVjdCBtYXBwaW5nIERPTSBwcm9wZXJ0eSBuYW1lIHRvIG9uZSBvZiB0aGUK
KyAgICogRE9NUHJvcGVydHlJbmplY3Rpb24gY29uc3RhbnRzIG9yIG51bGwuIElmIHlvdXIgYXR0
cmlidXRlIGlzbid0IGluIGhlcmUsCisgICAqIGl0IHdvbid0IGdldCB3cml0dGVuIHRvIHRoZSBE
T00uCisgICAqCisgICAqIERPTUF0dHJpYnV0ZU5hbWVzOiBvYmplY3QgbWFwcGluZyBSZWFjdCBh
dHRyaWJ1dGUgbmFtZSB0byB0aGUgRE9NCisgICAqIGF0dHJpYnV0ZSBuYW1lLiBBdHRyaWJ1dGUg
bmFtZXMgbm90IHNwZWNpZmllZCB1c2UgdGhlICoqbG93ZXJjYXNlKioKKyAgICogbm9ybWFsaXpl
ZCBuYW1lLgorICAgKgorICAgKiBET01BdHRyaWJ1dGVOYW1lc3BhY2VzOiBvYmplY3QgbWFwcGlu
ZyBSZWFjdCBhdHRyaWJ1dGUgbmFtZSB0byB0aGUgRE9NCisgICAqIGF0dHJpYnV0ZSBuYW1lc3Bh
Y2UgVVJMLiAoQXR0cmlidXRlIG5hbWVzIG5vdCBzcGVjaWZpZWQgdXNlIG5vIG5hbWVzcGFjZS4p
CisgICAqCisgICAqIERPTVByb3BlcnR5TmFtZXM6IHNpbWlsYXIgdG8gRE9NQXR0cmlidXRlTmFt
ZXMgYnV0IGZvciBET00gcHJvcGVydGllcy4KKyAgICogUHJvcGVydHkgbmFtZXMgbm90IHNwZWNp
ZmllZCB1c2UgdGhlIG5vcm1hbGl6ZWQgbmFtZS4KKyAgICoKKyAgICogRE9NTXV0YXRpb25NZXRo
b2RzOiBQcm9wZXJ0aWVzIHRoYXQgcmVxdWlyZSBzcGVjaWFsIG11dGF0aW9uIG1ldGhvZHMuIElm
CisgICAqIGB2YWx1ZWAgaXMgdW5kZWZpbmVkLCB0aGUgbXV0YXRpb24gbWV0aG9kIHNob3VsZCB1
bnNldCB0aGUgcHJvcGVydHkuCisgICAqCisgICAqIEBwYXJhbSB7b2JqZWN0fSBkb21Qcm9wZXJ0
eUNvbmZpZyB0aGUgY29uZmlnIGFzIGRlc2NyaWJlZCBhYm92ZS4KKyAgICovCisgIGluamVjdERP
TVByb3BlcnR5Q29uZmlnOiBmdW5jdGlvbiAoZG9tUHJvcGVydHlDb25maWcpIHsKKyAgICB2YXIg
SW5qZWN0aW9uID0gRE9NUHJvcGVydHlJbmplY3Rpb247CisgICAgdmFyIFByb3BlcnRpZXMgPSBk
b21Qcm9wZXJ0eUNvbmZpZy5Qcm9wZXJ0aWVzIHx8IHt9OworICAgIHZhciBET01BdHRyaWJ1dGVO
YW1lc3BhY2VzID0gZG9tUHJvcGVydHlDb25maWcuRE9NQXR0cmlidXRlTmFtZXNwYWNlcyB8fCB7
fTsKKyAgICB2YXIgRE9NQXR0cmlidXRlTmFtZXMgPSBkb21Qcm9wZXJ0eUNvbmZpZy5ET01BdHRy
aWJ1dGVOYW1lcyB8fCB7fTsKKyAgICB2YXIgRE9NUHJvcGVydHlOYW1lcyA9IGRvbVByb3BlcnR5
Q29uZmlnLkRPTVByb3BlcnR5TmFtZXMgfHwge307CisgICAgdmFyIERPTU11dGF0aW9uTWV0aG9k
cyA9IGRvbVByb3BlcnR5Q29uZmlnLkRPTU11dGF0aW9uTWV0aG9kcyB8fCB7fTsKKworICAgIGlm
IChkb21Qcm9wZXJ0eUNvbmZpZy5pc0N1c3RvbUF0dHJpYnV0ZSkgeworICAgICAgRE9NUHJvcGVy
dHkuX2lzQ3VzdG9tQXR0cmlidXRlRnVuY3Rpb25zLnB1c2goZG9tUHJvcGVydHlDb25maWcuaXND
dXN0b21BdHRyaWJ1dGUpOworICAgIH0KKworICAgIGZvciAodmFyIHByb3BOYW1lIGluIFByb3Bl
cnRpZXMpIHsKKyAgICAgICEhRE9NUHJvcGVydHkucHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShw
cm9wTmFtZSkgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFs
c2UsICdpbmplY3RET01Qcm9wZXJ0eUNvbmZpZyguLi4pOiBZb3VcJ3JlIHRyeWluZyB0byBpbmpl
Y3QgRE9NIHByb3BlcnR5IFwnJXNcJyB3aGljaCBoYXMgYWxyZWFkeSBiZWVuIGluamVjdGVkLiBZ
b3UgbWF5IGJlIGFjY2lkZW50YWxseSBpbmplY3RpbmcgdGhlIHNhbWUgRE9NIHByb3BlcnR5IGNv
bmZpZyB0d2ljZSwgb3IgeW91IG1heSBiZSBpbmplY3RpbmcgdHdvIGNvbmZpZ3MgdGhhdCBoYXZl
IGNvbmZsaWN0aW5nIHByb3BlcnR5IG5hbWVzLicsIHByb3BOYW1lKSA6IF9wcm9kSW52YXJpYW50
KCc0OCcsIHByb3BOYW1lKSA6IHZvaWQgMDsKKworICAgICAgdmFyIGxvd2VyQ2FzZWQgPSBwcm9w
TmFtZS50b0xvd2VyQ2FzZSgpOworICAgICAgdmFyIHByb3BDb25maWcgPSBQcm9wZXJ0aWVzW3By
b3BOYW1lXTsKKworICAgICAgdmFyIHByb3BlcnR5SW5mbyA9IHsKKyAgICAgICAgYXR0cmlidXRl
TmFtZTogbG93ZXJDYXNlZCwKKyAgICAgICAgYXR0cmlidXRlTmFtZXNwYWNlOiBudWxsLAorICAg
ICAgICBwcm9wZXJ0eU5hbWU6IHByb3BOYW1lLAorICAgICAgICBtdXRhdGlvbk1ldGhvZDogbnVs
bCwKKworICAgICAgICBtdXN0VXNlUHJvcGVydHk6IGNoZWNrTWFzayhwcm9wQ29uZmlnLCBJbmpl
Y3Rpb24uTVVTVF9VU0VfUFJPUEVSVFkpLAorICAgICAgICBoYXNCb29sZWFuVmFsdWU6IGNoZWNr
TWFzayhwcm9wQ29uZmlnLCBJbmplY3Rpb24uSEFTX0JPT0xFQU5fVkFMVUUpLAorICAgICAgICBo
YXNOdW1lcmljVmFsdWU6IGNoZWNrTWFzayhwcm9wQ29uZmlnLCBJbmplY3Rpb24uSEFTX05VTUVS
SUNfVkFMVUUpLAorICAgICAgICBoYXNQb3NpdGl2ZU51bWVyaWNWYWx1ZTogY2hlY2tNYXNrKHBy
b3BDb25maWcsIEluamVjdGlvbi5IQVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxVRSksCisgICAgICAg
IGhhc092ZXJsb2FkZWRCb29sZWFuVmFsdWU6IGNoZWNrTWFzayhwcm9wQ29uZmlnLCBJbmplY3Rp
b24uSEFTX09WRVJMT0FERURfQk9PTEVBTl9WQUxVRSkKKyAgICAgIH07CisgICAgICAhKHByb3Bl
cnR5SW5mby5oYXNCb29sZWFuVmFsdWUgKyBwcm9wZXJ0eUluZm8uaGFzTnVtZXJpY1ZhbHVlICsg
cHJvcGVydHlJbmZvLmhhc092ZXJsb2FkZWRCb29sZWFuVmFsdWUgPD0gMSkgPyAiZGV2ZWxvcG1l
bnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdET01Qcm9wZXJ0eTogVmFs
dWUgY2FuIGJlIG9uZSBvZiBib29sZWFuLCBvdmVybG9hZGVkIGJvb2xlYW4sIG9yIG51bWVyaWMg
dmFsdWUsIGJ1dCBub3QgYSBjb21iaW5hdGlvbjogJXMnLCBwcm9wTmFtZSkgOiBfcHJvZEludmFy
aWFudCgnNTAnLCBwcm9wTmFtZSkgOiB2b2lkIDA7CisKKyAgICAgIGlmICgiZGV2ZWxvcG1lbnQi
ICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICAgRE9NUHJvcGVydHkuZ2V0UG9zc2libGVTdGFu
ZGFyZE5hbWVbbG93ZXJDYXNlZF0gPSBwcm9wTmFtZTsKKyAgICAgIH0KKworICAgICAgaWYgKERP
TUF0dHJpYnV0ZU5hbWVzLmhhc093blByb3BlcnR5KHByb3BOYW1lKSkgeworICAgICAgICB2YXIg
YXR0cmlidXRlTmFtZSA9IERPTUF0dHJpYnV0ZU5hbWVzW3Byb3BOYW1lXTsKKyAgICAgICAgcHJv
cGVydHlJbmZvLmF0dHJpYnV0ZU5hbWUgPSBhdHRyaWJ1dGVOYW1lOworICAgICAgICBpZiAoImRl
dmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAgICAgRE9NUHJvcGVydHkuZ2V0
UG9zc2libGVTdGFuZGFyZE5hbWVbYXR0cmlidXRlTmFtZV0gPSBwcm9wTmFtZTsKKyAgICAgICAg
fQorICAgICAgfQorCisgICAgICBpZiAoRE9NQXR0cmlidXRlTmFtZXNwYWNlcy5oYXNPd25Qcm9w
ZXJ0eShwcm9wTmFtZSkpIHsKKyAgICAgICAgcHJvcGVydHlJbmZvLmF0dHJpYnV0ZU5hbWVzcGFj
ZSA9IERPTUF0dHJpYnV0ZU5hbWVzcGFjZXNbcHJvcE5hbWVdOworICAgICAgfQorCisgICAgICBp
ZiAoRE9NUHJvcGVydHlOYW1lcy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHsKKyAgICAgICAg
cHJvcGVydHlJbmZvLnByb3BlcnR5TmFtZSA9IERPTVByb3BlcnR5TmFtZXNbcHJvcE5hbWVdOwor
ICAgICAgfQorCisgICAgICBpZiAoRE9NTXV0YXRpb25NZXRob2RzLmhhc093blByb3BlcnR5KHBy
b3BOYW1lKSkgeworICAgICAgICBwcm9wZXJ0eUluZm8ubXV0YXRpb25NZXRob2QgPSBET01NdXRh
dGlvbk1ldGhvZHNbcHJvcE5hbWVdOworICAgICAgfQorCisgICAgICBET01Qcm9wZXJ0eS5wcm9w
ZXJ0aWVzW3Byb3BOYW1lXSA9IHByb3BlcnR5SW5mbzsKKyAgICB9CisgIH0KK307CisKKy8qIGVz
bGludC1kaXNhYmxlIG1heC1sZW4gKi8KK3ZhciBBVFRSSUJVVEVfTkFNRV9TVEFSVF9DSEFSID0g
JzpBLVpfYS16XFx1MDBDMC1cXHUwMEQ2XFx1MDBEOC1cXHUwMEY2XFx1MDBGOC1cXHUwMkZGXFx1
MDM3MC1cXHUwMzdEXFx1MDM3Ri1cXHUxRkZGXFx1MjAwQy1cXHUyMDBEXFx1MjA3MC1cXHUyMThG
XFx1MkMwMC1cXHUyRkVGXFx1MzAwMS1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVG
RkZEJzsKKy8qIGVzbGludC1lbmFibGUgbWF4LWxlbiAqLworCisvKioKKyAqIERPTVByb3BlcnR5
IGV4cG9ydHMgbG9va3VwIG9iamVjdHMgdGhhdCBjYW4gYmUgdXNlZCBsaWtlIGZ1bmN0aW9uczoK
KyAqCisgKiAgID4gRE9NUHJvcGVydHkuaXNWYWxpZFsnaWQnXQorICogICB0cnVlCisgKiAgID4g
RE9NUHJvcGVydHkuaXNWYWxpZFsnZm9vYmFyJ10KKyAqICAgdW5kZWZpbmVkCisgKgorICogQWx0
aG91Z2ggdGhpcyBtYXkgYmUgY29uZnVzaW5nLCBpdCBwZXJmb3JtcyBiZXR0ZXIgaW4gZ2VuZXJh
bC4KKyAqCisgKiBAc2VlIGh0dHA6Ly9qc3BlcmYuY29tL2tleS1leGlzdHMKKyAqIEBzZWUgaHR0
cDovL2pzcGVyZi5jb20va2V5LW1pc3NpbmcKKyAqLwordmFyIERPTVByb3BlcnR5ID0geworCisg
IElEX0FUVFJJQlVURV9OQU1FOiAnZGF0YS1yZWFjdGlkJywKKyAgUk9PVF9BVFRSSUJVVEVfTkFN
RTogJ2RhdGEtcmVhY3Ryb290JywKKworICBBVFRSSUJVVEVfTkFNRV9TVEFSVF9DSEFSOiBBVFRS
SUJVVEVfTkFNRV9TVEFSVF9DSEFSLAorICBBVFRSSUJVVEVfTkFNRV9DSEFSOiBBVFRSSUJVVEVf
TkFNRV9TVEFSVF9DSEFSICsgJ1xcLS4wLTlcXHUwMEI3XFx1MDMwMC1cXHUwMzZGXFx1MjAzRi1c
XHUyMDQwJywKKworICAvKioKKyAgICogTWFwIGZyb20gcHJvcGVydHkgInN0YW5kYXJkIG5hbWUi
IHRvIGFuIG9iamVjdCB3aXRoIGluZm8gYWJvdXQgaG93IHRvIHNldAorICAgKiB0aGUgcHJvcGVy
dHkgaW4gdGhlIERPTS4gRWFjaCBvYmplY3QgY29udGFpbnM6CisgICAqCisgICAqIGF0dHJpYnV0
ZU5hbWU6CisgICAqICAgVXNlZCB3aGVuIHJlbmRlcmluZyBtYXJrdXAgb3Igd2l0aCBgKkF0dHJp
YnV0ZSgpYC4KKyAgICogYXR0cmlidXRlTmFtZXNwYWNlCisgICAqIHByb3BlcnR5TmFtZToKKyAg
ICogICBVc2VkIG9uIERPTSBub2RlIGluc3RhbmNlcy4gKFRoaXMgaW5jbHVkZXMgcHJvcGVydGll
cyB0aGF0IG11dGF0ZSBkdWUgdG8KKyAgICogICBleHRlcm5hbCBmYWN0b3JzLikKKyAgICogbXV0
YXRpb25NZXRob2Q6CisgICAqICAgSWYgbm9uLW51bGwsIHVzZWQgaW5zdGVhZCBvZiB0aGUgcHJv
cGVydHkgb3IgYHNldEF0dHJpYnV0ZSgpYCBhZnRlcgorICAgKiAgIGluaXRpYWwgcmVuZGVyLgor
ICAgKiBtdXN0VXNlUHJvcGVydHk6CisgICAqICAgV2hldGhlciB0aGUgcHJvcGVydHkgbXVzdCBi
ZSBhY2Nlc3NlZCBhbmQgbXV0YXRlZCBhcyBhbiBvYmplY3QgcHJvcGVydHkuCisgICAqIGhhc0Jv
b2xlYW5WYWx1ZToKKyAgICogICBXaGV0aGVyIHRoZSBwcm9wZXJ0eSBzaG91bGQgYmUgcmVtb3Zl
ZCB3aGVuIHNldCB0byBhIGZhbHNleSB2YWx1ZS4KKyAgICogaGFzTnVtZXJpY1ZhbHVlOgorICAg
KiAgIFdoZXRoZXIgdGhlIHByb3BlcnR5IG11c3QgYmUgbnVtZXJpYyBvciBwYXJzZSBhcyBhIG51
bWVyaWMgYW5kIHNob3VsZCBiZQorICAgKiAgIHJlbW92ZWQgd2hlbiBzZXQgdG8gYSBmYWxzZXkg
dmFsdWUuCisgICAqIGhhc1Bvc2l0aXZlTnVtZXJpY1ZhbHVlOgorICAgKiAgIFdoZXRoZXIgdGhl
IHByb3BlcnR5IG11c3QgYmUgcG9zaXRpdmUgbnVtZXJpYyBvciBwYXJzZSBhcyBhIHBvc2l0aXZl
CisgICAqICAgbnVtZXJpYyBhbmQgc2hvdWxkIGJlIHJlbW92ZWQgd2hlbiBzZXQgdG8gYSBmYWxz
ZXkgdmFsdWUuCisgICAqIGhhc092ZXJsb2FkZWRCb29sZWFuVmFsdWU6CisgICAqICAgV2hldGhl
ciB0aGUgcHJvcGVydHkgY2FuIGJlIHVzZWQgYXMgYSBmbGFnIGFzIHdlbGwgYXMgd2l0aCBhIHZh
bHVlLgorICAgKiAgIFJlbW92ZWQgd2hlbiBzdHJpY3RseSBlcXVhbCB0byBmYWxzZTsgcHJlc2Vu
dCB3aXRob3V0IGEgdmFsdWUgd2hlbgorICAgKiAgIHN0cmljdGx5IGVxdWFsIHRvIHRydWU7IHBy
ZXNlbnQgd2l0aCBhIHZhbHVlIG90aGVyd2lzZS4KKyAgICovCisgIHByb3BlcnRpZXM6IHt9LAor
CisgIC8qKgorICAgKiBNYXBwaW5nIGZyb20gbG93ZXJjYXNlIHByb3BlcnR5IG5hbWVzIHRvIHRo
ZSBwcm9wZXJseSBjYXNlZCB2ZXJzaW9uLCB1c2VkCisgICAqIHRvIHdhcm4gaW4gdGhlIGNhc2Ug
b2YgbWlzc2luZyBwcm9wZXJ0aWVzLiBBdmFpbGFibGUgb25seSBpbiBfX0RFVl9fLgorICAgKgor
ICAgKiBhdXRvZm9jdXMgaXMgcHJlZGVmaW5lZCwgYmVjYXVzZSBhZGRpbmcgaXQgdG8gdGhlIHBy
b3BlcnR5IHdoaXRlbGlzdAorICAgKiBjYXVzZXMgdW5pbnRlbmRlZCBzaWRlIGVmZmVjdHMuCisg
ICAqCisgICAqIEB0eXBlIHtPYmplY3R9CisgICAqLworICBnZXRQb3NzaWJsZVN0YW5kYXJkTmFt
ZTogImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8geyBhdXRvZm9jdXM6ICdhdXRvRm9j
dXMnIH0gOiBudWxsLAorCisgIC8qKgorICAgKiBBbGwgb2YgdGhlIGlzQ3VzdG9tQXR0cmlidXRl
KCkgZnVuY3Rpb25zIHRoYXQgaGF2ZSBiZWVuIGluamVjdGVkLgorICAgKi8KKyAgX2lzQ3VzdG9t
QXR0cmlidXRlRnVuY3Rpb25zOiBbXSwKKworICAvKioKKyAgICogQ2hlY2tzIHdoZXRoZXIgYSBw
cm9wZXJ0eSBuYW1lIGlzIGEgY3VzdG9tIGF0dHJpYnV0ZS4KKyAgICogQG1ldGhvZAorICAgKi8K
KyAgaXNDdXN0b21BdHRyaWJ1dGU6IGZ1bmN0aW9uIChhdHRyaWJ1dGVOYW1lKSB7CisgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBET01Qcm9wZXJ0eS5faXNDdXN0b21BdHRyaWJ1dGVGdW5jdGlvbnMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciBpc0N1c3RvbUF0dHJpYnV0ZUZuID0gRE9NUHJvcGVy
dHkuX2lzQ3VzdG9tQXR0cmlidXRlRnVuY3Rpb25zW2ldOworICAgICAgaWYgKGlzQ3VzdG9tQXR0
cmlidXRlRm4oYXR0cmlidXRlTmFtZSkpIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICB9
CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKKyAgfSwKKworICBpbmplY3Rpb246IERPTVByb3Bl
cnR5SW5qZWN0aW9uCit9OworCittb2R1bGUuZXhwb3J0cyA9IERPTVByb3BlcnR5OworfSx7IjEx
NiI6MTE2LCIxNDAiOjE0MH1dLDEyOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsK
Ky8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRl
ciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3Jh
bnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUg
aW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBE
T01Qcm9wZXJ0eSA9IF9kZXJlcV8oMTEpOwordmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IF9k
ZXJlcV8oMzIpOwordmFyIFJlYWN0SW5zdHJ1bWVudGF0aW9uID0gX2RlcmVxXyg1OSk7CisKK3Zh
ciBxdW90ZUF0dHJpYnV0ZVZhbHVlRm9yQnJvd3NlciA9IF9kZXJlcV8oMTE1KTsKK3ZhciB3YXJu
aW5nID0gX2RlcmVxXygxNDcpOworCit2YXIgVkFMSURfQVRUUklCVVRFX05BTUVfUkVHRVggPSBu
ZXcgUmVnRXhwKCdeWycgKyBET01Qcm9wZXJ0eS5BVFRSSUJVVEVfTkFNRV9TVEFSVF9DSEFSICsg
J11bJyArIERPTVByb3BlcnR5LkFUVFJJQlVURV9OQU1FX0NIQVIgKyAnXSokJyk7Cit2YXIgaWxs
ZWdhbEF0dHJpYnV0ZU5hbWVDYWNoZSA9IHt9OwordmFyIHZhbGlkYXRlZEF0dHJpYnV0ZU5hbWVD
YWNoZSA9IHt9OworCitmdW5jdGlvbiBpc0F0dHJpYnV0ZU5hbWVTYWZlKGF0dHJpYnV0ZU5hbWUp
IHsKKyAgaWYgKHZhbGlkYXRlZEF0dHJpYnV0ZU5hbWVDYWNoZS5oYXNPd25Qcm9wZXJ0eShhdHRy
aWJ1dGVOYW1lKSkgeworICAgIHJldHVybiB0cnVlOworICB9CisgIGlmIChpbGxlZ2FsQXR0cmli
dXRlTmFtZUNhY2hlLmhhc093blByb3BlcnR5KGF0dHJpYnV0ZU5hbWUpKSB7CisgICAgcmV0dXJu
IGZhbHNlOworICB9CisgIGlmIChWQUxJRF9BVFRSSUJVVEVfTkFNRV9SRUdFWC50ZXN0KGF0dHJp
YnV0ZU5hbWUpKSB7CisgICAgdmFsaWRhdGVkQXR0cmlidXRlTmFtZUNhY2hlW2F0dHJpYnV0ZU5h
bWVdID0gdHJ1ZTsKKyAgICByZXR1cm4gdHJ1ZTsKKyAgfQorICBpbGxlZ2FsQXR0cmlidXRlTmFt
ZUNhY2hlW2F0dHJpYnV0ZU5hbWVdID0gdHJ1ZTsKKyAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1
Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ0ludmFsaWQgYXR0cmlidXRlIG5hbWU6IGAlc2AnLCBh
dHRyaWJ1dGVOYW1lKSA6IHZvaWQgMDsKKyAgcmV0dXJuIGZhbHNlOworfQorCitmdW5jdGlvbiBz
aG91bGRJZ25vcmVWYWx1ZShwcm9wZXJ0eUluZm8sIHZhbHVlKSB7CisgIHJldHVybiB2YWx1ZSA9
PSBudWxsIHx8IHByb3BlcnR5SW5mby5oYXNCb29sZWFuVmFsdWUgJiYgIXZhbHVlIHx8IHByb3Bl
cnR5SW5mby5oYXNOdW1lcmljVmFsdWUgJiYgaXNOYU4odmFsdWUpIHx8IHByb3BlcnR5SW5mby5o
YXNQb3NpdGl2ZU51bWVyaWNWYWx1ZSAmJiB2YWx1ZSA8IDEgfHwgcHJvcGVydHlJbmZvLmhhc092
ZXJsb2FkZWRCb29sZWFuVmFsdWUgJiYgdmFsdWUgPT09IGZhbHNlOworfQorCisvKioKKyAqIE9w
ZXJhdGlvbnMgZm9yIGRlYWxpbmcgd2l0aCBET00gcHJvcGVydGllcy4KKyAqLwordmFyIERPTVBy
b3BlcnR5T3BlcmF0aW9ucyA9IHsKKworICAvKioKKyAgICogQ3JlYXRlcyBtYXJrdXAgZm9yIHRo
ZSBJRCBwcm9wZXJ0eS4KKyAgICoKKyAgICogQHBhcmFtIHtzdHJpbmd9IGlkIFVuZXNjYXBlZCBJ
RC4KKyAgICogQHJldHVybiB7c3RyaW5nfSBNYXJrdXAgc3RyaW5nLgorICAgKi8KKyAgY3JlYXRl
TWFya3VwRm9ySUQ6IGZ1bmN0aW9uIChpZCkgeworICAgIHJldHVybiBET01Qcm9wZXJ0eS5JRF9B
VFRSSUJVVEVfTkFNRSArICc9JyArIHF1b3RlQXR0cmlidXRlVmFsdWVGb3JCcm93c2VyKGlkKTsK
KyAgfSwKKworICBzZXRBdHRyaWJ1dGVGb3JJRDogZnVuY3Rpb24gKG5vZGUsIGlkKSB7CisgICAg
bm9kZS5zZXRBdHRyaWJ1dGUoRE9NUHJvcGVydHkuSURfQVRUUklCVVRFX05BTUUsIGlkKTsKKyAg
fSwKKworICBjcmVhdGVNYXJrdXBGb3JSb290OiBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIERP
TVByb3BlcnR5LlJPT1RfQVRUUklCVVRFX05BTUUgKyAnPSIiJzsKKyAgfSwKKworICBzZXRBdHRy
aWJ1dGVGb3JSb290OiBmdW5jdGlvbiAobm9kZSkgeworICAgIG5vZGUuc2V0QXR0cmlidXRlKERP
TVByb3BlcnR5LlJPT1RfQVRUUklCVVRFX05BTUUsICcnKTsKKyAgfSwKKworICAvKioKKyAgICog
Q3JlYXRlcyBtYXJrdXAgZm9yIGEgcHJvcGVydHkuCisgICAqCisgICAqIEBwYXJhbSB7c3RyaW5n
fSBuYW1lCisgICAqIEBwYXJhbSB7Kn0gdmFsdWUKKyAgICogQHJldHVybiB7P3N0cmluZ30gTWFy
a3VwIHN0cmluZywgb3IgbnVsbCBpZiB0aGUgcHJvcGVydHkgd2FzIGludmFsaWQuCisgICAqLwor
ICBjcmVhdGVNYXJrdXBGb3JQcm9wZXJ0eTogZnVuY3Rpb24gKG5hbWUsIHZhbHVlKSB7CisgICAg
dmFyIHByb3BlcnR5SW5mbyA9IERPTVByb3BlcnR5LnByb3BlcnRpZXMuaGFzT3duUHJvcGVydHko
bmFtZSkgPyBET01Qcm9wZXJ0eS5wcm9wZXJ0aWVzW25hbWVdIDogbnVsbDsKKyAgICBpZiAocHJv
cGVydHlJbmZvKSB7CisgICAgICBpZiAoc2hvdWxkSWdub3JlVmFsdWUocHJvcGVydHlJbmZvLCB2
YWx1ZSkpIHsKKyAgICAgICAgcmV0dXJuICcnOworICAgICAgfQorICAgICAgdmFyIGF0dHJpYnV0
ZU5hbWUgPSBwcm9wZXJ0eUluZm8uYXR0cmlidXRlTmFtZTsKKyAgICAgIGlmIChwcm9wZXJ0eUlu
Zm8uaGFzQm9vbGVhblZhbHVlIHx8IHByb3BlcnR5SW5mby5oYXNPdmVybG9hZGVkQm9vbGVhblZh
bHVlICYmIHZhbHVlID09PSB0cnVlKSB7CisgICAgICAgIHJldHVybiBhdHRyaWJ1dGVOYW1lICsg
Jz0iIic7CisgICAgICB9CisgICAgICByZXR1cm4gYXR0cmlidXRlTmFtZSArICc9JyArIHF1b3Rl
QXR0cmlidXRlVmFsdWVGb3JCcm93c2VyKHZhbHVlKTsKKyAgICB9IGVsc2UgaWYgKERPTVByb3Bl
cnR5LmlzQ3VzdG9tQXR0cmlidXRlKG5hbWUpKSB7CisgICAgICBpZiAodmFsdWUgPT0gbnVsbCkg
eworICAgICAgICByZXR1cm4gJyc7CisgICAgICB9CisgICAgICByZXR1cm4gbmFtZSArICc9JyAr
IHF1b3RlQXR0cmlidXRlVmFsdWVGb3JCcm93c2VyKHZhbHVlKTsKKyAgICB9CisgICAgcmV0dXJu
IG51bGw7CisgIH0sCisKKyAgLyoqCisgICAqIENyZWF0ZXMgbWFya3VwIGZvciBhIGN1c3RvbSBw
cm9wZXJ0eS4KKyAgICoKKyAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICogQHBhcmFtIHsq
fSB2YWx1ZQorICAgKiBAcmV0dXJuIHtzdHJpbmd9IE1hcmt1cCBzdHJpbmcsIG9yIGVtcHR5IHN0
cmluZyBpZiB0aGUgcHJvcGVydHkgd2FzIGludmFsaWQuCisgICAqLworICBjcmVhdGVNYXJrdXBG
b3JDdXN0b21BdHRyaWJ1dGU6IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSkgeworICAgIGlmICghaXNB
dHRyaWJ1dGVOYW1lU2FmZShuYW1lKSB8fCB2YWx1ZSA9PSBudWxsKSB7CisgICAgICByZXR1cm4g
Jyc7CisgICAgfQorICAgIHJldHVybiBuYW1lICsgJz0nICsgcXVvdGVBdHRyaWJ1dGVWYWx1ZUZv
ckJyb3dzZXIodmFsdWUpOworICB9LAorCisgIC8qKgorICAgKiBTZXRzIHRoZSB2YWx1ZSBmb3Ig
YSBwcm9wZXJ0eSBvbiBhIG5vZGUuCisgICAqCisgICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gbm9k
ZQorICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgKiBAcGFyYW0geyp9IHZhbHVlCisgICAq
LworICBzZXRWYWx1ZUZvclByb3BlcnR5OiBmdW5jdGlvbiAobm9kZSwgbmFtZSwgdmFsdWUpIHsK
KyAgICB2YXIgcHJvcGVydHlJbmZvID0gRE9NUHJvcGVydHkucHJvcGVydGllcy5oYXNPd25Qcm9w
ZXJ0eShuYW1lKSA/IERPTVByb3BlcnR5LnByb3BlcnRpZXNbbmFtZV0gOiBudWxsOworICAgIGlm
IChwcm9wZXJ0eUluZm8pIHsKKyAgICAgIHZhciBtdXRhdGlvbk1ldGhvZCA9IHByb3BlcnR5SW5m
by5tdXRhdGlvbk1ldGhvZDsKKyAgICAgIGlmIChtdXRhdGlvbk1ldGhvZCkgeworICAgICAgICBt
dXRhdGlvbk1ldGhvZChub2RlLCB2YWx1ZSk7CisgICAgICB9IGVsc2UgaWYgKHNob3VsZElnbm9y
ZVZhbHVlKHByb3BlcnR5SW5mbywgdmFsdWUpKSB7CisgICAgICAgIHRoaXMuZGVsZXRlVmFsdWVG
b3JQcm9wZXJ0eShub2RlLCBuYW1lKTsKKyAgICAgICAgcmV0dXJuOworICAgICAgfSBlbHNlIGlm
IChwcm9wZXJ0eUluZm8ubXVzdFVzZVByb3BlcnR5KSB7CisgICAgICAgIC8vIENvbnRyYXJ5IHRv
IGBzZXRBdHRyaWJ1dGVgLCBvYmplY3QgcHJvcGVydGllcyBhcmUgcHJvcGVybHkKKyAgICAgICAg
Ly8gYHRvU3RyaW5nYGVkIGJ5IElFOC85LgorICAgICAgICBub2RlW3Byb3BlcnR5SW5mby5wcm9w
ZXJ0eU5hbWVdID0gdmFsdWU7CisgICAgICB9IGVsc2UgeworICAgICAgICB2YXIgYXR0cmlidXRl
TmFtZSA9IHByb3BlcnR5SW5mby5hdHRyaWJ1dGVOYW1lOworICAgICAgICB2YXIgbmFtZXNwYWNl
ID0gcHJvcGVydHlJbmZvLmF0dHJpYnV0ZU5hbWVzcGFjZTsKKyAgICAgICAgLy8gYHNldEF0dHJp
YnV0ZWAgd2l0aCBvYmplY3RzIGJlY29tZXMgb25seSBgW29iamVjdF1gIGluIElFOC85LAorICAg
ICAgICAvLyAoJycgKyB2YWx1ZSkgbWFrZXMgaXQgb3V0cHV0IHRoZSBjb3JyZWN0IHRvU3RyaW5n
KCktdmFsdWUuCisgICAgICAgIGlmIChuYW1lc3BhY2UpIHsKKyAgICAgICAgICBub2RlLnNldEF0
dHJpYnV0ZU5TKG5hbWVzcGFjZSwgYXR0cmlidXRlTmFtZSwgJycgKyB2YWx1ZSk7CisgICAgICAg
IH0gZWxzZSBpZiAocHJvcGVydHlJbmZvLmhhc0Jvb2xlYW5WYWx1ZSB8fCBwcm9wZXJ0eUluZm8u
aGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZSAmJiB2YWx1ZSA9PT0gdHJ1ZSkgeworICAgICAgICAg
IG5vZGUuc2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUsICcnKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lLCAnJyArIHZhbHVlKTsK
KyAgICAgICAgfQorICAgICAgfQorICAgIH0gZWxzZSBpZiAoRE9NUHJvcGVydHkuaXNDdXN0b21B
dHRyaWJ1dGUobmFtZSkpIHsKKyAgICAgIERPTVByb3BlcnR5T3BlcmF0aW9ucy5zZXRWYWx1ZUZv
ckF0dHJpYnV0ZShub2RlLCBuYW1lLCB2YWx1ZSk7CisgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgdmFyIHBheWxv
YWQgPSB7fTsKKyAgICAgIHBheWxvYWRbbmFtZV0gPSB2YWx1ZTsKKyAgICAgIFJlYWN0SW5zdHJ1
bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhvc3RPcGVyYXRpb24oeworICAgICAgICBpbnN0YW5jZUlE
OiBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0SW5zdGFuY2VGcm9tTm9kZShub2RlKS5fZGVidWdJ
RCwKKyAgICAgICAgdHlwZTogJ3VwZGF0ZSBhdHRyaWJ1dGUnLAorICAgICAgICBwYXlsb2FkOiBw
YXlsb2FkCisgICAgICB9KTsKKyAgICB9CisgIH0sCisKKyAgc2V0VmFsdWVGb3JBdHRyaWJ1dGU6
IGZ1bmN0aW9uIChub2RlLCBuYW1lLCB2YWx1ZSkgeworICAgIGlmICghaXNBdHRyaWJ1dGVOYW1l
U2FmZShuYW1lKSkgeworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAodmFsdWUgPT0gbnVs
bCkgeworICAgICAgbm9kZS5yZW1vdmVBdHRyaWJ1dGUobmFtZSk7CisgICAgfSBlbHNlIHsKKyAg
ICAgIG5vZGUuc2V0QXR0cmlidXRlKG5hbWUsICcnICsgdmFsdWUpOworICAgIH0KKworICAgIGlm
ICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgIHZhciBwYXlsb2FkID0g
e307CisgICAgICBwYXlsb2FkW25hbWVdID0gdmFsdWU7CisgICAgICBSZWFjdEluc3RydW1lbnRh
dGlvbi5kZWJ1Z1Rvb2wub25Ib3N0T3BlcmF0aW9uKHsKKyAgICAgICAgaW5zdGFuY2VJRDogUmVh
Y3RET01Db21wb25lbnRUcmVlLmdldEluc3RhbmNlRnJvbU5vZGUobm9kZSkuX2RlYnVnSUQsCisg
ICAgICAgIHR5cGU6ICd1cGRhdGUgYXR0cmlidXRlJywKKyAgICAgICAgcGF5bG9hZDogcGF5bG9h
ZAorICAgICAgfSk7CisgICAgfQorICB9LAorCisgIC8qKgorICAgKiBEZWxldGVzIGFuIGF0dHJp
YnV0ZXMgZnJvbSBhIG5vZGUuCisgICAqCisgICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gbm9kZQor
ICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgKi8KKyAgZGVsZXRlVmFsdWVGb3JBdHRyaWJ1
dGU6IGZ1bmN0aW9uIChub2RlLCBuYW1lKSB7CisgICAgbm9kZS5yZW1vdmVBdHRyaWJ1dGUobmFt
ZSk7CisgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgUmVh
Y3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uSG9zdE9wZXJhdGlvbih7CisgICAgICAgIGlu
c3RhbmNlSUQ6IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRJbnN0YW5jZUZyb21Ob2RlKG5vZGUp
Ll9kZWJ1Z0lELAorICAgICAgICB0eXBlOiAncmVtb3ZlIGF0dHJpYnV0ZScsCisgICAgICAgIHBh
eWxvYWQ6IG5hbWUKKyAgICAgIH0pOworICAgIH0KKyAgfSwKKworICAvKioKKyAgICogRGVsZXRl
cyB0aGUgdmFsdWUgZm9yIGEgcHJvcGVydHkgb24gYSBub2RlLgorICAgKgorICAgKiBAcGFyYW0g
e0RPTUVsZW1lbnR9IG5vZGUKKyAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICovCisgIGRl
bGV0ZVZhbHVlRm9yUHJvcGVydHk6IGZ1bmN0aW9uIChub2RlLCBuYW1lKSB7CisgICAgdmFyIHBy
b3BlcnR5SW5mbyA9IERPTVByb3BlcnR5LnByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkobmFtZSkg
PyBET01Qcm9wZXJ0eS5wcm9wZXJ0aWVzW25hbWVdIDogbnVsbDsKKyAgICBpZiAocHJvcGVydHlJ
bmZvKSB7CisgICAgICB2YXIgbXV0YXRpb25NZXRob2QgPSBwcm9wZXJ0eUluZm8ubXV0YXRpb25N
ZXRob2Q7CisgICAgICBpZiAobXV0YXRpb25NZXRob2QpIHsKKyAgICAgICAgbXV0YXRpb25NZXRo
b2Qobm9kZSwgdW5kZWZpbmVkKTsKKyAgICAgIH0gZWxzZSBpZiAocHJvcGVydHlJbmZvLm11c3RV
c2VQcm9wZXJ0eSkgeworICAgICAgICB2YXIgcHJvcE5hbWUgPSBwcm9wZXJ0eUluZm8ucHJvcGVy
dHlOYW1lOworICAgICAgICBpZiAocHJvcGVydHlJbmZvLmhhc0Jvb2xlYW5WYWx1ZSkgeworICAg
ICAgICAgIG5vZGVbcHJvcE5hbWVdID0gZmFsc2U7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgbm9kZVtwcm9wTmFtZV0gPSAnJzsKKyAgICAgICAgfQorICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgbm9kZS5yZW1vdmVBdHRyaWJ1dGUocHJvcGVydHlJbmZvLmF0dHJpYnV0ZU5hbWUpOworICAg
ICAgfQorICAgIH0gZWxzZSBpZiAoRE9NUHJvcGVydHkuaXNDdXN0b21BdHRyaWJ1dGUobmFtZSkp
IHsKKyAgICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlKG5hbWUpOworICAgIH0KKworICAgIGlmICgi
ZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgIFJlYWN0SW5zdHJ1bWVudGF0
aW9uLmRlYnVnVG9vbC5vbkhvc3RPcGVyYXRpb24oeworICAgICAgICBpbnN0YW5jZUlEOiBSZWFj
dERPTUNvbXBvbmVudFRyZWUuZ2V0SW5zdGFuY2VGcm9tTm9kZShub2RlKS5fZGVidWdJRCwKKyAg
ICAgICAgdHlwZTogJ3JlbW92ZSBhdHRyaWJ1dGUnLAorICAgICAgICBwYXlsb2FkOiBuYW1lCisg
ICAgICB9KTsKKyAgICB9CisgIH0KKworfTsKKworbW9kdWxlLmV4cG9ydHMgPSBET01Qcm9wZXJ0
eU9wZXJhdGlvbnM7Cit9LHsiMTEiOjExLCIxMTUiOjExNSwiMTQ3IjoxNDcsIjMyIjozMiwiNTki
OjU5fV0sMTM6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5
cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5
bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJl
Y3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0
ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9wcm9kSW52YXJpYW50
ID0gX2RlcmVxXygxMTYpOworCit2YXIgRE9NTGF6eVRyZWUgPSBfZGVyZXFfKDkpOwordmFyIEV4
ZWN1dGlvbkVudmlyb25tZW50ID0gX2RlcmVxXygxMjYpOworCit2YXIgY3JlYXRlTm9kZXNGcm9t
TWFya3VwID0gX2RlcmVxXygxMzEpOwordmFyIGVtcHR5RnVuY3Rpb24gPSBfZGVyZXFfKDEzMik7
Cit2YXIgaW52YXJpYW50ID0gX2RlcmVxXygxNDApOworCit2YXIgRGFuZ2VyID0geworCisgIC8q
KgorICAgKiBSZXBsYWNlcyBhIG5vZGUgd2l0aCBhIHN0cmluZyBvZiBtYXJrdXAgYXQgaXRzIGN1
cnJlbnQgcG9zaXRpb24gd2l0aGluIGl0cworICAgKiBwYXJlbnQuIFRoZSBtYXJrdXAgbXVzdCBy
ZW5kZXIgaW50byBhIHNpbmdsZSByb290IG5vZGUuCisgICAqCisgICAqIEBwYXJhbSB7RE9NRWxl
bWVudH0gb2xkQ2hpbGQgQ2hpbGQgbm9kZSB0byByZXBsYWNlLgorICAgKiBAcGFyYW0ge3N0cmlu
Z30gbWFya3VwIE1hcmt1cCB0byByZW5kZXIgaW4gcGxhY2Ugb2YgdGhlIGNoaWxkIG5vZGUuCisg
ICAqIEBpbnRlcm5hbAorICAgKi8KKyAgZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXA6
IGZ1bmN0aW9uIChvbGRDaGlsZCwgbWFya3VwKSB7CisgICAgIUV4ZWN1dGlvbkVudmlyb25tZW50
LmNhblVzZURPTSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChm
YWxzZSwgJ2Rhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwKC4uLik6IENhbm5vdCByZW5k
ZXIgbWFya3VwIGluIGEgd29ya2VyIHRocmVhZC4gTWFrZSBzdXJlIGB3aW5kb3dgIGFuZCBgZG9j
dW1lbnRgIGFyZSBhdmFpbGFibGUgZ2xvYmFsbHkgYmVmb3JlIHJlcXVpcmluZyBSZWFjdCB3aGVu
IHVuaXQgdGVzdGluZyBvciB1c2UgUmVhY3RET01TZXJ2ZXIucmVuZGVyVG9TdHJpbmcoKSBmb3Ig
c2VydmVyIHJlbmRlcmluZy4nKSA6IF9wcm9kSW52YXJpYW50KCc1NicpIDogdm9pZCAwOworICAg
ICFtYXJrdXAgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFs
c2UsICdkYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cCguLi4pOiBNaXNzaW5nIG1hcmt1
cC4nKSA6IF9wcm9kSW52YXJpYW50KCc1NycpIDogdm9pZCAwOworICAgICEob2xkQ2hpbGQubm9k
ZU5hbWUgIT09ICdIVE1MJykgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZh
cmlhbnQoZmFsc2UsICdkYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cCguLi4pOiBDYW5u
b3QgcmVwbGFjZSBtYXJrdXAgb2YgdGhlIDxodG1sPiBub2RlLiBUaGlzIGlzIGJlY2F1c2UgYnJv
d3NlciBxdWlya3MgbWFrZSB0aGlzIHVucmVsaWFibGUgYW5kL29yIHNsb3cuIElmIHlvdSB3YW50
IHRvIHJlbmRlciB0byB0aGUgcm9vdCB5b3UgbXVzdCB1c2Ugc2VydmVyIHJlbmRlcmluZy4gU2Vl
IFJlYWN0RE9NU2VydmVyLnJlbmRlclRvU3RyaW5nKCkuJykgOiBfcHJvZEludmFyaWFudCgnNTgn
KSA6IHZvaWQgMDsKKworICAgIGlmICh0eXBlb2YgbWFya3VwID09PSAnc3RyaW5nJykgeworICAg
ICAgdmFyIG5ld0NoaWxkID0gY3JlYXRlTm9kZXNGcm9tTWFya3VwKG1hcmt1cCwgZW1wdHlGdW5j
dGlvbilbMF07CisgICAgICBvbGRDaGlsZC5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChuZXdDaGls
ZCwgb2xkQ2hpbGQpOworICAgIH0gZWxzZSB7CisgICAgICBET01MYXp5VHJlZS5yZXBsYWNlQ2hp
bGRXaXRoVHJlZShvbGRDaGlsZCwgbWFya3VwKTsKKyAgICB9CisgIH0KKworfTsKKworbW9kdWxl
LmV4cG9ydHMgPSBEYW5nZXI7Cit9LHsiMTE2IjoxMTYsIjEyNiI6MTI2LCIxMzEiOjEzMSwiMTMy
IjoxMzIsIjE0MCI6MTQwLCI5Ijo5fV0sMTQ6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9y
dHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICog
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2Vk
IHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25h
bCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMg
ZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwor
LyoqCisgKiBNb2R1bGUgdGhhdCBpcyBpbmplY3RhYmxlIGludG8gYEV2ZW50UGx1Z2luSHViYCwg
dGhhdCBzcGVjaWZpZXMgYQorICogZGV0ZXJtaW5pc3RpYyBvcmRlcmluZyBvZiBgRXZlbnRQbHVn
aW5gcy4gQSBjb252ZW5pZW50IHdheSB0byByZWFzb24gYWJvdXQKKyAqIHBsdWdpbnMsIHdpdGhv
dXQgaGF2aW5nIHRvIHBhY2thZ2UgZXZlcnkgb25lIG9mIHRoZW0uIFRoaXMgaXMgYmV0dGVyIHRo
YW4KKyAqIGhhdmluZyBwbHVnaW5zIGJlIG9yZGVyZWQgaW4gdGhlIHNhbWUgb3JkZXIgdGhhdCB0
aGV5IGFyZSBpbmplY3RlZCBiZWNhdXNlCisgKiB0aGF0IG9yZGVyaW5nIHdvdWxkIGJlIGluZmx1
ZW5jZWQgYnkgdGhlIHBhY2thZ2luZyBvcmRlci4KKyAqIGBSZXNwb25kZXJFdmVudFBsdWdpbmAg
bXVzdCBvY2N1ciBiZWZvcmUgYFNpbXBsZUV2ZW50UGx1Z2luYCBzbyB0aGF0CisgKiBwcmV2ZW50
aW5nIGRlZmF1bHQgb24gZXZlbnRzIGlzIGNvbnZlbmllbnQgaW4gYFNpbXBsZUV2ZW50UGx1Z2lu
YCBoYW5kbGVycy4KKyAqLworCit2YXIgRGVmYXVsdEV2ZW50UGx1Z2luT3JkZXIgPSBbJ1Jlc3Bv
bmRlckV2ZW50UGx1Z2luJywgJ1NpbXBsZUV2ZW50UGx1Z2luJywgJ1RhcEV2ZW50UGx1Z2luJywg
J0VudGVyTGVhdmVFdmVudFBsdWdpbicsICdDaGFuZ2VFdmVudFBsdWdpbicsICdTZWxlY3RFdmVu
dFBsdWdpbicsICdCZWZvcmVJbnB1dEV2ZW50UGx1Z2luJ107CisKK21vZHVsZS5leHBvcnRzID0g
RGVmYXVsdEV2ZW50UGx1Z2luT3JkZXI7Cit9LHt9XSwxNTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1
bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJ
bmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElD
RU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUg
UEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJp
Y3QnOworCit2YXIgRXZlbnRQcm9wYWdhdG9ycyA9IF9kZXJlcV8oMTkpOwordmFyIFJlYWN0RE9N
Q29tcG9uZW50VHJlZSA9IF9kZXJlcV8oMzIpOwordmFyIFN5bnRoZXRpY01vdXNlRXZlbnQgPSBf
ZGVyZXFfKDg4KTsKKwordmFyIGV2ZW50VHlwZXMgPSB7CisgIG1vdXNlRW50ZXI6IHsKKyAgICBy
ZWdpc3RyYXRpb25OYW1lOiAnb25Nb3VzZUVudGVyJywKKyAgICBkZXBlbmRlbmNpZXM6IFsndG9w
TW91c2VPdXQnLCAndG9wTW91c2VPdmVyJ10KKyAgfSwKKyAgbW91c2VMZWF2ZTogeworICAgIHJl
Z2lzdHJhdGlvbk5hbWU6ICdvbk1vdXNlTGVhdmUnLAorICAgIGRlcGVuZGVuY2llczogWyd0b3BN
b3VzZU91dCcsICd0b3BNb3VzZU92ZXInXQorICB9Cit9OworCit2YXIgRW50ZXJMZWF2ZUV2ZW50
UGx1Z2luID0geworCisgIGV2ZW50VHlwZXM6IGV2ZW50VHlwZXMsCisKKyAgLyoqCisgICAqIEZv
ciBhbG1vc3QgZXZlcnkgaW50ZXJhY3Rpb24gd2UgY2FyZSBhYm91dCwgdGhlcmUgd2lsbCBiZSBi
b3RoIGEgdG9wLWxldmVsCisgICAqIGBtb3VzZW92ZXJgIGFuZCBgbW91c2VvdXRgIGV2ZW50IHRo
YXQgb2NjdXJzLiBPbmx5IHVzZSBgbW91c2VvdXRgIHNvIHRoYXQKKyAgICogd2UgZG8gbm90IGV4
dHJhY3QgZHVwbGljYXRlIGV2ZW50cy4gSG93ZXZlciwgbW92aW5nIHRoZSBtb3VzZSBpbnRvIHRo
ZQorICAgKiBicm93c2VyIGZyb20gb3V0c2lkZSB3aWxsIG5vdCBmaXJlIGEgYG1vdXNlb3V0YCBl
dmVudC4gSW4gdGhpcyBjYXNlLCB3ZSB1c2UKKyAgICogdGhlIGBtb3VzZW92ZXJgIHRvcC1sZXZl
bCBldmVudC4KKyAgICovCisgIGV4dHJhY3RFdmVudHM6IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUs
IHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkgeworICAgIGlmICh0
b3BMZXZlbFR5cGUgPT09ICd0b3BNb3VzZU92ZXInICYmIChuYXRpdmVFdmVudC5yZWxhdGVkVGFy
Z2V0IHx8IG5hdGl2ZUV2ZW50LmZyb21FbGVtZW50KSkgeworICAgICAgcmV0dXJuIG51bGw7Cisg
ICAgfQorICAgIGlmICh0b3BMZXZlbFR5cGUgIT09ICd0b3BNb3VzZU91dCcgJiYgdG9wTGV2ZWxU
eXBlICE9PSAndG9wTW91c2VPdmVyJykgeworICAgICAgLy8gTXVzdCBub3QgYmUgYSBtb3VzZSBp
biBvciBtb3VzZSBvdXQgLSBpZ25vcmluZy4KKyAgICAgIHJldHVybiBudWxsOworICAgIH0KKwor
ICAgIHZhciB3aW47CisgICAgaWYgKG5hdGl2ZUV2ZW50VGFyZ2V0LndpbmRvdyA9PT0gbmF0aXZl
RXZlbnRUYXJnZXQpIHsKKyAgICAgIC8vIGBuYXRpdmVFdmVudFRhcmdldGAgaXMgcHJvYmFibHkg
YSB3aW5kb3cgb2JqZWN0LgorICAgICAgd2luID0gbmF0aXZlRXZlbnRUYXJnZXQ7CisgICAgfSBl
bHNlIHsKKyAgICAgIC8vIFRPRE86IEZpZ3VyZSBvdXQgd2h5IGBvd25lckRvY3VtZW50YCBpcyBz
b21ldGltZXMgdW5kZWZpbmVkIGluIElFOC4KKyAgICAgIHZhciBkb2MgPSBuYXRpdmVFdmVudFRh
cmdldC5vd25lckRvY3VtZW50OworICAgICAgaWYgKGRvYykgeworICAgICAgICB3aW4gPSBkb2Mu
ZGVmYXVsdFZpZXcgfHwgZG9jLnBhcmVudFdpbmRvdzsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHdpbiA9IHdpbmRvdzsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgZnJvbTsKKyAgICB2YXIg
dG87CisgICAgaWYgKHRvcExldmVsVHlwZSA9PT0gJ3RvcE1vdXNlT3V0JykgeworICAgICAgZnJv
bSA9IHRhcmdldEluc3Q7CisgICAgICB2YXIgcmVsYXRlZCA9IG5hdGl2ZUV2ZW50LnJlbGF0ZWRU
YXJnZXQgfHwgbmF0aXZlRXZlbnQudG9FbGVtZW50OworICAgICAgdG8gPSByZWxhdGVkID8gUmVh
Y3RET01Db21wb25lbnRUcmVlLmdldENsb3Nlc3RJbnN0YW5jZUZyb21Ob2RlKHJlbGF0ZWQpIDog
bnVsbDsKKyAgICB9IGVsc2UgeworICAgICAgLy8gTW92aW5nIHRvIGEgbm9kZSBmcm9tIG91dHNp
ZGUgdGhlIHdpbmRvdy4KKyAgICAgIGZyb20gPSBudWxsOworICAgICAgdG8gPSB0YXJnZXRJbnN0
OworICAgIH0KKworICAgIGlmIChmcm9tID09PSB0bykgeworICAgICAgLy8gTm90aGluZyBwZXJ0
YWlucyB0byBvdXIgbWFuYWdlZCBjb21wb25lbnRzLgorICAgICAgcmV0dXJuIG51bGw7CisgICAg
fQorCisgICAgdmFyIGZyb21Ob2RlID0gZnJvbSA9PSBudWxsID8gd2luIDogUmVhY3RET01Db21w
b25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UoZnJvbSk7CisgICAgdmFyIHRvTm9kZSA9IHRv
ID09IG51bGwgPyB3aW4gOiBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5j
ZSh0byk7CisKKyAgICB2YXIgbGVhdmUgPSBTeW50aGV0aWNNb3VzZUV2ZW50LmdldFBvb2xlZChl
dmVudFR5cGVzLm1vdXNlTGVhdmUsIGZyb20sIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdl
dCk7CisgICAgbGVhdmUudHlwZSA9ICdtb3VzZWxlYXZlJzsKKyAgICBsZWF2ZS50YXJnZXQgPSBm
cm9tTm9kZTsKKyAgICBsZWF2ZS5yZWxhdGVkVGFyZ2V0ID0gdG9Ob2RlOworCisgICAgdmFyIGVu
dGVyID0gU3ludGhldGljTW91c2VFdmVudC5nZXRQb29sZWQoZXZlbnRUeXBlcy5tb3VzZUVudGVy
LCB0bywgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTsKKyAgICBlbnRlci50eXBlID0g
J21vdXNlZW50ZXInOworICAgIGVudGVyLnRhcmdldCA9IHRvTm9kZTsKKyAgICBlbnRlci5yZWxh
dGVkVGFyZ2V0ID0gZnJvbU5vZGU7CisKKyAgICBFdmVudFByb3BhZ2F0b3JzLmFjY3VtdWxhdGVF
bnRlckxlYXZlRGlzcGF0Y2hlcyhsZWF2ZSwgZW50ZXIsIGZyb20sIHRvKTsKKworICAgIHJldHVy
biBbbGVhdmUsIGVudGVyXTsKKyAgfQorCit9OworCittb2R1bGUuZXhwb3J0cyA9IEVudGVyTGVh
dmVFdmVudFBsdWdpbjsKK30seyIxOSI6MTksIjMyIjozMiwiODgiOjg4fV0sMTY6W2Z1bmN0aW9u
KF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICov
CisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9wcm9kSW52YXJpYW50ID0gX2RlcmVxXygxMTYpOwor
Cit2YXIgRXZlbnRQbHVnaW5SZWdpc3RyeSA9IF9kZXJlcV8oMTcpOwordmFyIEV2ZW50UGx1Z2lu
VXRpbHMgPSBfZGVyZXFfKDE4KTsKK3ZhciBSZWFjdEVycm9yVXRpbHMgPSBfZGVyZXFfKDUwKTsK
KwordmFyIGFjY3VtdWxhdGVJbnRvID0gX2RlcmVxXyg5NSk7Cit2YXIgZm9yRWFjaEFjY3VtdWxh
dGVkID0gX2RlcmVxXygxMDIpOwordmFyIGludmFyaWFudCA9IF9kZXJlcV8oMTQwKTsKKworLyoq
CisgKiBJbnRlcm5hbCBzdG9yZSBmb3IgZXZlbnQgbGlzdGVuZXJzCisgKi8KK3ZhciBsaXN0ZW5l
ckJhbmsgPSB7fTsKKworLyoqCisgKiBJbnRlcm5hbCBxdWV1ZSBvZiBldmVudHMgdGhhdCBoYXZl
IGFjY3VtdWxhdGVkIHRoZWlyIGRpc3BhdGNoZXMgYW5kIGFyZQorICogd2FpdGluZyB0byBoYXZl
IHRoZWlyIGRpc3BhdGNoZXMgZXhlY3V0ZWQuCisgKi8KK3ZhciBldmVudFF1ZXVlID0gbnVsbDsK
KworLyoqCisgKiBEaXNwYXRjaGVzIGFuIGV2ZW50IGFuZCByZWxlYXNlcyBpdCBiYWNrIGludG8g
dGhlIHBvb2wsIHVubGVzcyBwZXJzaXN0ZW50LgorICoKKyAqIEBwYXJhbSB7P29iamVjdH0gZXZl
bnQgU3ludGhldGljIGV2ZW50IHRvIGJlIGRpc3BhdGNoZWQuCisgKiBAcGFyYW0ge2Jvb2xlYW59
IHNpbXVsYXRlZCBJZiB0aGUgZXZlbnQgaXMgc2ltdWxhdGVkIChjaGFuZ2VzIGV4biBiZWhhdmlv
cikKKyAqIEBwcml2YXRlCisgKi8KK3ZhciBleGVjdXRlRGlzcGF0Y2hlc0FuZFJlbGVhc2UgPSBm
dW5jdGlvbiAoZXZlbnQsIHNpbXVsYXRlZCkgeworICBpZiAoZXZlbnQpIHsKKyAgICBFdmVudFBs
dWdpblV0aWxzLmV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlcihldmVudCwgc2ltdWxhdGVkKTsKKwor
ICAgIGlmICghZXZlbnQuaXNQZXJzaXN0ZW50KCkpIHsKKyAgICAgIGV2ZW50LmNvbnN0cnVjdG9y
LnJlbGVhc2UoZXZlbnQpOworICAgIH0KKyAgfQorfTsKK3ZhciBleGVjdXRlRGlzcGF0Y2hlc0Fu
ZFJlbGVhc2VTaW11bGF0ZWQgPSBmdW5jdGlvbiAoZSkgeworICByZXR1cm4gZXhlY3V0ZURpc3Bh
dGNoZXNBbmRSZWxlYXNlKGUsIHRydWUpOworfTsKK3ZhciBleGVjdXRlRGlzcGF0Y2hlc0FuZFJl
bGVhc2VUb3BMZXZlbCA9IGZ1bmN0aW9uIChlKSB7CisgIHJldHVybiBleGVjdXRlRGlzcGF0Y2hl
c0FuZFJlbGVhc2UoZSwgZmFsc2UpOworfTsKKwordmFyIGdldERpY3Rpb25hcnlLZXkgPSBmdW5j
dGlvbiAoaW5zdCkgeworICAvLyBQcmV2ZW50cyBWOCBwZXJmb3JtYW5jZSBpc3N1ZToKKyAgLy8g
aHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L3B1bGwvNzIzMgorICByZXR1cm4gJy4n
ICsgaW5zdC5fcm9vdE5vZGVJRDsKK307CisKKy8qKgorICogVGhpcyBpcyBhIHVuaWZpZWQgaW50
ZXJmYWNlIGZvciBldmVudCBwbHVnaW5zIHRvIGJlIGluc3RhbGxlZCBhbmQgY29uZmlndXJlZC4K
KyAqCisgKiBFdmVudCBwbHVnaW5zIGNhbiBpbXBsZW1lbnQgdGhlIGZvbGxvd2luZyBwcm9wZXJ0
aWVzOgorICoKKyAqICAgYGV4dHJhY3RFdmVudHNgIHtmdW5jdGlvbihzdHJpbmcsIERPTUV2ZW50
VGFyZ2V0LCBzdHJpbmcsIG9iamVjdCk6ICp9CisgKiAgICAgUmVxdWlyZWQuIFdoZW4gYSB0b3At
bGV2ZWwgZXZlbnQgaXMgZmlyZWQsIHRoaXMgbWV0aG9kIGlzIGV4cGVjdGVkIHRvCisgKiAgICAg
ZXh0cmFjdCBzeW50aGV0aWMgZXZlbnRzIHRoYXQgd2lsbCBpbiB0dXJuIGJlIHF1ZXVlZCBhbmQg
ZGlzcGF0Y2hlZC4KKyAqCisgKiAgIGBldmVudFR5cGVzYCB7b2JqZWN0fQorICogICAgIE9wdGlv
bmFsLCBwbHVnaW5zIHRoYXQgZmlyZSBldmVudHMgbXVzdCBwdWJsaXNoIGEgbWFwcGluZyBvZiBy
ZWdpc3RyYXRpb24KKyAqICAgICBuYW1lcyB0aGF0IGFyZSB1c2VkIHRvIHJlZ2lzdGVyIGxpc3Rl
bmVycy4gVmFsdWVzIG9mIHRoaXMgbWFwcGluZyBtdXN0CisgKiAgICAgYmUgb2JqZWN0cyB0aGF0
IGNvbnRhaW4gYHJlZ2lzdHJhdGlvbk5hbWVgIG9yIGBwaGFzZWRSZWdpc3RyYXRpb25OYW1lc2Au
CisgKgorICogICBgZXhlY3V0ZURpc3BhdGNoYCB7ZnVuY3Rpb24ob2JqZWN0LCBmdW5jdGlvbiwg
c3RyaW5nKX0KKyAqICAgICBPcHRpb25hbCwgYWxsb3dzIHBsdWdpbnMgdG8gb3ZlcnJpZGUgaG93
IGFuIGV2ZW50IGdldHMgZGlzcGF0Y2hlZC4gQnkKKyAqICAgICBkZWZhdWx0LCB0aGUgbGlzdGVu
ZXIgaXMgc2ltcGx5IGludm9rZWQuCisgKgorICogRWFjaCBwbHVnaW4gdGhhdCBpcyBpbmplY3Rl
ZCBpbnRvIGBFdmVudHNQbHVnaW5IdWJgIGlzIGltbWVkaWF0ZWx5IG9wZXJhYmxlLgorICoKKyAq
IEBwdWJsaWMKKyAqLwordmFyIEV2ZW50UGx1Z2luSHViID0geworCisgIC8qKgorICAgKiBNZXRo
b2RzIGZvciBpbmplY3RpbmcgZGVwZW5kZW5jaWVzLgorICAgKi8KKyAgaW5qZWN0aW9uOiB7CisK
KyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2FycmF5fSBJbmplY3RlZEV2ZW50UGx1Z2luT3JkZXIK
KyAgICAgKiBAcHVibGljCisgICAgICovCisgICAgaW5qZWN0RXZlbnRQbHVnaW5PcmRlcjogRXZl
bnRQbHVnaW5SZWdpc3RyeS5pbmplY3RFdmVudFBsdWdpbk9yZGVyLAorCisgICAgLyoqCisgICAg
ICogQHBhcmFtIHtvYmplY3R9IGluamVjdGVkTmFtZXNUb1BsdWdpbnMgTWFwIGZyb20gbmFtZXMg
dG8gcGx1Z2luIG1vZHVsZXMuCisgICAgICovCisgICAgaW5qZWN0RXZlbnRQbHVnaW5zQnlOYW1l
OiBFdmVudFBsdWdpblJlZ2lzdHJ5LmluamVjdEV2ZW50UGx1Z2luc0J5TmFtZQorCisgIH0sCisK
KyAgLyoqCisgICAqIFN0b3JlcyBgbGlzdGVuZXJgIGF0IGBsaXN0ZW5lckJhbmtbcmVnaXN0cmF0
aW9uTmFtZV1ba2V5XWAuIElzIGlkZW1wb3RlbnQuCisgICAqCisgICAqIEBwYXJhbSB7b2JqZWN0
fSBpbnN0IFRoZSBpbnN0YW5jZSwgd2hpY2ggaXMgdGhlIHNvdXJjZSBvZiBldmVudHMuCisgICAq
IEBwYXJhbSB7c3RyaW5nfSByZWdpc3RyYXRpb25OYW1lIE5hbWUgb2YgbGlzdGVuZXIgKGUuZy4g
YG9uQ2xpY2tgKS4KKyAgICogQHBhcmFtIHtmdW5jdGlvbn0gbGlzdGVuZXIgVGhlIGNhbGxiYWNr
IHRvIHN0b3JlLgorICAgKi8KKyAgcHV0TGlzdGVuZXI6IGZ1bmN0aW9uIChpbnN0LCByZWdpc3Ry
YXRpb25OYW1lLCBsaXN0ZW5lcikgeworICAgICEodHlwZW9mIGxpc3RlbmVyID09PSAnZnVuY3Rp
b24nKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwg
J0V4cGVjdGVkICVzIGxpc3RlbmVyIHRvIGJlIGEgZnVuY3Rpb24sIGluc3RlYWQgZ290IHR5cGUg
JXMnLCByZWdpc3RyYXRpb25OYW1lLCB0eXBlb2YgbGlzdGVuZXIpIDogX3Byb2RJbnZhcmlhbnQo
Jzk0JywgcmVnaXN0cmF0aW9uTmFtZSwgdHlwZW9mIGxpc3RlbmVyKSA6IHZvaWQgMDsKKworICAg
IHZhciBrZXkgPSBnZXREaWN0aW9uYXJ5S2V5KGluc3QpOworICAgIHZhciBiYW5rRm9yUmVnaXN0
cmF0aW9uTmFtZSA9IGxpc3RlbmVyQmFua1tyZWdpc3RyYXRpb25OYW1lXSB8fCAobGlzdGVuZXJC
YW5rW3JlZ2lzdHJhdGlvbk5hbWVdID0ge30pOworICAgIGJhbmtGb3JSZWdpc3RyYXRpb25OYW1l
W2tleV0gPSBsaXN0ZW5lcjsKKworICAgIHZhciBQbHVnaW5Nb2R1bGUgPSBFdmVudFBsdWdpblJl
Z2lzdHJ5LnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW3JlZ2lzdHJhdGlvbk5hbWVdOworICAgIGlm
IChQbHVnaW5Nb2R1bGUgJiYgUGx1Z2luTW9kdWxlLmRpZFB1dExpc3RlbmVyKSB7CisgICAgICBQ
bHVnaW5Nb2R1bGUuZGlkUHV0TGlzdGVuZXIoaW5zdCwgcmVnaXN0cmF0aW9uTmFtZSwgbGlzdGVu
ZXIpOworICAgIH0KKyAgfSwKKworICAvKioKKyAgICogQHBhcmFtIHtvYmplY3R9IGluc3QgVGhl
IGluc3RhbmNlLCB3aGljaCBpcyB0aGUgc291cmNlIG9mIGV2ZW50cy4KKyAgICogQHBhcmFtIHtz
dHJpbmd9IHJlZ2lzdHJhdGlvbk5hbWUgTmFtZSBvZiBsaXN0ZW5lciAoZS5nLiBgb25DbGlja2Ap
LgorICAgKiBAcmV0dXJuIHs/ZnVuY3Rpb259IFRoZSBzdG9yZWQgY2FsbGJhY2suCisgICAqLwor
ICBnZXRMaXN0ZW5lcjogZnVuY3Rpb24gKGluc3QsIHJlZ2lzdHJhdGlvbk5hbWUpIHsKKyAgICB2
YXIgYmFua0ZvclJlZ2lzdHJhdGlvbk5hbWUgPSBsaXN0ZW5lckJhbmtbcmVnaXN0cmF0aW9uTmFt
ZV07CisgICAgdmFyIGtleSA9IGdldERpY3Rpb25hcnlLZXkoaW5zdCk7CisgICAgcmV0dXJuIGJh
bmtGb3JSZWdpc3RyYXRpb25OYW1lICYmIGJhbmtGb3JSZWdpc3RyYXRpb25OYW1lW2tleV07Cisg
IH0sCisKKyAgLyoqCisgICAqIERlbGV0ZXMgYSBsaXN0ZW5lciBmcm9tIHRoZSByZWdpc3RyYXRp
b24gYmFuay4KKyAgICoKKyAgICogQHBhcmFtIHtvYmplY3R9IGluc3QgVGhlIGluc3RhbmNlLCB3
aGljaCBpcyB0aGUgc291cmNlIG9mIGV2ZW50cy4KKyAgICogQHBhcmFtIHtzdHJpbmd9IHJlZ2lz
dHJhdGlvbk5hbWUgTmFtZSBvZiBsaXN0ZW5lciAoZS5nLiBgb25DbGlja2ApLgorICAgKi8KKyAg
ZGVsZXRlTGlzdGVuZXI6IGZ1bmN0aW9uIChpbnN0LCByZWdpc3RyYXRpb25OYW1lKSB7CisgICAg
dmFyIFBsdWdpbk1vZHVsZSA9IEV2ZW50UGx1Z2luUmVnaXN0cnkucmVnaXN0cmF0aW9uTmFtZU1v
ZHVsZXNbcmVnaXN0cmF0aW9uTmFtZV07CisgICAgaWYgKFBsdWdpbk1vZHVsZSAmJiBQbHVnaW5N
b2R1bGUud2lsbERlbGV0ZUxpc3RlbmVyKSB7CisgICAgICBQbHVnaW5Nb2R1bGUud2lsbERlbGV0
ZUxpc3RlbmVyKGluc3QsIHJlZ2lzdHJhdGlvbk5hbWUpOworICAgIH0KKworICAgIHZhciBiYW5r
Rm9yUmVnaXN0cmF0aW9uTmFtZSA9IGxpc3RlbmVyQmFua1tyZWdpc3RyYXRpb25OYW1lXTsKKyAg
ICAvLyBUT0RPOiBUaGlzIHNob3VsZCBuZXZlciBiZSBudWxsIC0tIHdoZW4gaXMgaXQ/CisgICAg
aWYgKGJhbmtGb3JSZWdpc3RyYXRpb25OYW1lKSB7CisgICAgICB2YXIga2V5ID0gZ2V0RGljdGlv
bmFyeUtleShpbnN0KTsKKyAgICAgIGRlbGV0ZSBiYW5rRm9yUmVnaXN0cmF0aW9uTmFtZVtrZXld
OworICAgIH0KKyAgfSwKKworICAvKioKKyAgICogRGVsZXRlcyBhbGwgbGlzdGVuZXJzIGZvciB0
aGUgRE9NIGVsZW1lbnQgd2l0aCB0aGUgc3VwcGxpZWQgSUQuCisgICAqCisgICAqIEBwYXJhbSB7
b2JqZWN0fSBpbnN0IFRoZSBpbnN0YW5jZSwgd2hpY2ggaXMgdGhlIHNvdXJjZSBvZiBldmVudHMu
CisgICAqLworICBkZWxldGVBbGxMaXN0ZW5lcnM6IGZ1bmN0aW9uIChpbnN0KSB7CisgICAgdmFy
IGtleSA9IGdldERpY3Rpb25hcnlLZXkoaW5zdCk7CisgICAgZm9yICh2YXIgcmVnaXN0cmF0aW9u
TmFtZSBpbiBsaXN0ZW5lckJhbmspIHsKKyAgICAgIGlmICghbGlzdGVuZXJCYW5rLmhhc093blBy
b3BlcnR5KHJlZ2lzdHJhdGlvbk5hbWUpKSB7CisgICAgICAgIGNvbnRpbnVlOworICAgICAgfQor
CisgICAgICBpZiAoIWxpc3RlbmVyQmFua1tyZWdpc3RyYXRpb25OYW1lXVtrZXldKSB7CisgICAg
ICAgIGNvbnRpbnVlOworICAgICAgfQorCisgICAgICB2YXIgUGx1Z2luTW9kdWxlID0gRXZlbnRQ
bHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tyZWdpc3RyYXRpb25OYW1lXTsK
KyAgICAgIGlmIChQbHVnaW5Nb2R1bGUgJiYgUGx1Z2luTW9kdWxlLndpbGxEZWxldGVMaXN0ZW5l
cikgeworICAgICAgICBQbHVnaW5Nb2R1bGUud2lsbERlbGV0ZUxpc3RlbmVyKGluc3QsIHJlZ2lz
dHJhdGlvbk5hbWUpOworICAgICAgfQorCisgICAgICBkZWxldGUgbGlzdGVuZXJCYW5rW3JlZ2lz
dHJhdGlvbk5hbWVdW2tleV07CisgICAgfQorICB9LAorCisgIC8qKgorICAgKiBBbGxvd3MgcmVn
aXN0ZXJlZCBwbHVnaW5zIGFuIG9wcG9ydHVuaXR5IHRvIGV4dHJhY3QgZXZlbnRzIGZyb20gdG9w
LWxldmVsCisgICAqIG5hdGl2ZSBicm93c2VyIGV2ZW50cy4KKyAgICoKKyAgICogQHJldHVybiB7
Kn0gQW4gYWNjdW11bGF0aW9uIG9mIHN5bnRoZXRpYyBldmVudHMuCisgICAqIEBpbnRlcm5hbAor
ICAgKi8KKyAgZXh0cmFjdEV2ZW50czogZnVuY3Rpb24gKHRvcExldmVsVHlwZSwgdGFyZ2V0SW5z
dCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7CisgICAgdmFyIGV2ZW50czsKKyAg
ICB2YXIgcGx1Z2lucyA9IEV2ZW50UGx1Z2luUmVnaXN0cnkucGx1Z2luczsKKyAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IHBsdWdpbnMubGVuZ3RoOyBpKyspIHsKKyAgICAgIC8vIE5vdCBldmVyeSBw
bHVnaW4gaW4gdGhlIG9yZGVyaW5nIG1heSBiZSBsb2FkZWQgYXQgcnVudGltZS4KKyAgICAgIHZh
ciBwb3NzaWJsZVBsdWdpbiA9IHBsdWdpbnNbaV07CisgICAgICBpZiAocG9zc2libGVQbHVnaW4p
IHsKKyAgICAgICAgdmFyIGV4dHJhY3RlZEV2ZW50cyA9IHBvc3NpYmxlUGx1Z2luLmV4dHJhY3RF
dmVudHModG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRU
YXJnZXQpOworICAgICAgICBpZiAoZXh0cmFjdGVkRXZlbnRzKSB7CisgICAgICAgICAgZXZlbnRz
ID0gYWNjdW11bGF0ZUludG8oZXZlbnRzLCBleHRyYWN0ZWRFdmVudHMpOworICAgICAgICB9Cisg
ICAgICB9CisgICAgfQorICAgIHJldHVybiBldmVudHM7CisgIH0sCisKKyAgLyoqCisgICAqIEVu
cXVldWVzIGEgc3ludGhldGljIGV2ZW50IHRoYXQgc2hvdWxkIGJlIGRpc3BhdGNoZWQgd2hlbgor
ICAgKiBgcHJvY2Vzc0V2ZW50UXVldWVgIGlzIGludm9rZWQuCisgICAqCisgICAqIEBwYXJhbSB7
Kn0gZXZlbnRzIEFuIGFjY3VtdWxhdGlvbiBvZiBzeW50aGV0aWMgZXZlbnRzLgorICAgKiBAaW50
ZXJuYWwKKyAgICovCisgIGVucXVldWVFdmVudHM6IGZ1bmN0aW9uIChldmVudHMpIHsKKyAgICBp
ZiAoZXZlbnRzKSB7CisgICAgICBldmVudFF1ZXVlID0gYWNjdW11bGF0ZUludG8oZXZlbnRRdWV1
ZSwgZXZlbnRzKTsKKyAgICB9CisgIH0sCisKKyAgLyoqCisgICAqIERpc3BhdGNoZXMgYWxsIHN5
bnRoZXRpYyBldmVudHMgb24gdGhlIGV2ZW50IHF1ZXVlLgorICAgKgorICAgKiBAaW50ZXJuYWwK
KyAgICovCisgIHByb2Nlc3NFdmVudFF1ZXVlOiBmdW5jdGlvbiAoc2ltdWxhdGVkKSB7CisgICAg
Ly8gU2V0IGBldmVudFF1ZXVlYCB0byBudWxsIGJlZm9yZSBwcm9jZXNzaW5nIGl0IHNvIHRoYXQg
d2UgY2FuIHRlbGwgaWYgbW9yZQorICAgIC8vIGV2ZW50cyBnZXQgZW5xdWV1ZWQgd2hpbGUgcHJv
Y2Vzc2luZy4KKyAgICB2YXIgcHJvY2Vzc2luZ0V2ZW50UXVldWUgPSBldmVudFF1ZXVlOworICAg
IGV2ZW50UXVldWUgPSBudWxsOworICAgIGlmIChzaW11bGF0ZWQpIHsKKyAgICAgIGZvckVhY2hB
Y2N1bXVsYXRlZChwcm9jZXNzaW5nRXZlbnRRdWV1ZSwgZXhlY3V0ZURpc3BhdGNoZXNBbmRSZWxl
YXNlU2ltdWxhdGVkKTsKKyAgICB9IGVsc2UgeworICAgICAgZm9yRWFjaEFjY3VtdWxhdGVkKHBy
b2Nlc3NpbmdFdmVudFF1ZXVlLCBleGVjdXRlRGlzcGF0Y2hlc0FuZFJlbGVhc2VUb3BMZXZlbCk7
CisgICAgfQorICAgICEhZXZlbnRRdWV1ZSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9u
JyA/IGludmFyaWFudChmYWxzZSwgJ3Byb2Nlc3NFdmVudFF1ZXVlKCk6IEFkZGl0aW9uYWwgZXZl
bnRzIHdlcmUgZW5xdWV1ZWQgd2hpbGUgcHJvY2Vzc2luZyBhbiBldmVudCBxdWV1ZS4gU3VwcG9y
dCBmb3IgdGhpcyBoYXMgbm90IHlldCBiZWVuIGltcGxlbWVudGVkLicpIDogX3Byb2RJbnZhcmlh
bnQoJzk1JykgOiB2b2lkIDA7CisgICAgLy8gVGhpcyB3b3VsZCBiZSBhIGdvb2QgdGltZSB0byBy
ZXRocm93IGlmIGFueSBvZiB0aGUgZXZlbnQgaGFuZGxlcnMgdGhyZXcuCisgICAgUmVhY3RFcnJv
clV0aWxzLnJldGhyb3dDYXVnaHRFcnJvcigpOworICB9LAorCisgIC8qKgorICAgKiBUaGVzZSBh
cmUgbmVlZGVkIGZvciB0ZXN0cyBvbmx5LiBEbyBub3QgdXNlIQorICAgKi8KKyAgX19wdXJnZTog
ZnVuY3Rpb24gKCkgeworICAgIGxpc3RlbmVyQmFuayA9IHt9OworICB9LAorCisgIF9fZ2V0TGlz
dGVuZXJCYW5rOiBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIGxpc3RlbmVyQmFuazsKKyAgfQor
Cit9OworCittb2R1bGUuZXhwb3J0cyA9IEV2ZW50UGx1Z2luSHViOworfSx7IjEwMiI6MTAyLCIx
MTYiOjExNiwiMTQwIjoxNDAsIjE3IjoxNywiMTgiOjE4LCI1MCI6NTAsIjk1Ijo5NX1dLDE3Oltm
dW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMt
cHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
VGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2Ug
Zm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRo
aXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMg
Y2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Lgor
ICoKKyAqIAorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9wcm9kSW52YXJpYW50ID0gX2Rl
cmVxXygxMTYpOworCit2YXIgaW52YXJpYW50ID0gX2RlcmVxXygxNDApOworCisvKioKKyAqIElu
amVjdGFibGUgb3JkZXJpbmcgb2YgZXZlbnQgcGx1Z2lucy4KKyAqLwordmFyIGV2ZW50UGx1Z2lu
T3JkZXIgPSBudWxsOworCisvKioKKyAqIEluamVjdGFibGUgbWFwcGluZyBmcm9tIG5hbWVzIHRv
IGV2ZW50IHBsdWdpbiBtb2R1bGVzLgorICovCit2YXIgbmFtZXNUb1BsdWdpbnMgPSB7fTsKKwor
LyoqCisgKiBSZWNvbXB1dGVzIHRoZSBwbHVnaW4gbGlzdCB1c2luZyB0aGUgaW5qZWN0ZWQgcGx1
Z2lucyBhbmQgcGx1Z2luIG9yZGVyaW5nLgorICoKKyAqIEBwcml2YXRlCisgKi8KK2Z1bmN0aW9u
IHJlY29tcHV0ZVBsdWdpbk9yZGVyaW5nKCkgeworICBpZiAoIWV2ZW50UGx1Z2luT3JkZXIpIHsK
KyAgICAvLyBXYWl0IHVudGlsIGFuIGBldmVudFBsdWdpbk9yZGVyYCBpcyBpbmplY3RlZC4KKyAg
ICByZXR1cm47CisgIH0KKyAgZm9yICh2YXIgcGx1Z2luTmFtZSBpbiBuYW1lc1RvUGx1Z2lucykg
eworICAgIHZhciBwbHVnaW5Nb2R1bGUgPSBuYW1lc1RvUGx1Z2luc1twbHVnaW5OYW1lXTsKKyAg
ICB2YXIgcGx1Z2luSW5kZXggPSBldmVudFBsdWdpbk9yZGVyLmluZGV4T2YocGx1Z2luTmFtZSk7
CisgICAgIShwbHVnaW5JbmRleCA+IC0xKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9u
JyA/IGludmFyaWFudChmYWxzZSwgJ0V2ZW50UGx1Z2luUmVnaXN0cnk6IENhbm5vdCBpbmplY3Qg
ZXZlbnQgcGx1Z2lucyB0aGF0IGRvIG5vdCBleGlzdCBpbiB0aGUgcGx1Z2luIG9yZGVyaW5nLCBg
JXNgLicsIHBsdWdpbk5hbWUpIDogX3Byb2RJbnZhcmlhbnQoJzk2JywgcGx1Z2luTmFtZSkgOiB2
b2lkIDA7CisgICAgaWYgKEV2ZW50UGx1Z2luUmVnaXN0cnkucGx1Z2luc1twbHVnaW5JbmRleF0p
IHsKKyAgICAgIGNvbnRpbnVlOworICAgIH0KKyAgICAhcGx1Z2luTW9kdWxlLmV4dHJhY3RFdmVu
dHMgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdF
dmVudFBsdWdpblJlZ2lzdHJ5OiBFdmVudCBwbHVnaW5zIG11c3QgaW1wbGVtZW50IGFuIGBleHRy
YWN0RXZlbnRzYCBtZXRob2QsIGJ1dCBgJXNgIGRvZXMgbm90LicsIHBsdWdpbk5hbWUpIDogX3By
b2RJbnZhcmlhbnQoJzk3JywgcGx1Z2luTmFtZSkgOiB2b2lkIDA7CisgICAgRXZlbnRQbHVnaW5S
ZWdpc3RyeS5wbHVnaW5zW3BsdWdpbkluZGV4XSA9IHBsdWdpbk1vZHVsZTsKKyAgICB2YXIgcHVi
bGlzaGVkRXZlbnRzID0gcGx1Z2luTW9kdWxlLmV2ZW50VHlwZXM7CisgICAgZm9yICh2YXIgZXZl
bnROYW1lIGluIHB1Ymxpc2hlZEV2ZW50cykgeworICAgICAgIXB1Ymxpc2hFdmVudEZvclBsdWdp
bihwdWJsaXNoZWRFdmVudHNbZXZlbnROYW1lXSwgcGx1Z2luTW9kdWxlLCBldmVudE5hbWUpID8g
ImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRXZlbnRQ
bHVnaW5SZWdpc3RyeTogRmFpbGVkIHRvIHB1Ymxpc2ggZXZlbnQgYCVzYCBmb3IgcGx1Z2luIGAl
c2AuJywgZXZlbnROYW1lLCBwbHVnaW5OYW1lKSA6IF9wcm9kSW52YXJpYW50KCc5OCcsIGV2ZW50
TmFtZSwgcGx1Z2luTmFtZSkgOiB2b2lkIDA7CisgICAgfQorICB9Cit9CisKKy8qKgorICogUHVi
bGlzaGVzIGFuIGV2ZW50IHNvIHRoYXQgaXQgY2FuIGJlIGRpc3BhdGNoZWQgYnkgdGhlIHN1cHBs
aWVkIHBsdWdpbi4KKyAqCisgKiBAcGFyYW0ge29iamVjdH0gZGlzcGF0Y2hDb25maWcgRGlzcGF0
Y2ggY29uZmlndXJhdGlvbiBmb3IgdGhlIGV2ZW50LgorICogQHBhcmFtIHtvYmplY3R9IFBsdWdp
bk1vZHVsZSBQbHVnaW4gcHVibGlzaGluZyB0aGUgZXZlbnQuCisgKiBAcmV0dXJuIHtib29sZWFu
fSBUcnVlIGlmIHRoZSBldmVudCB3YXMgc3VjY2Vzc2Z1bGx5IHB1Ymxpc2hlZC4KKyAqIEBwcml2
YXRlCisgKi8KK2Z1bmN0aW9uIHB1Ymxpc2hFdmVudEZvclBsdWdpbihkaXNwYXRjaENvbmZpZywg
cGx1Z2luTW9kdWxlLCBldmVudE5hbWUpIHsKKyAgISFFdmVudFBsdWdpblJlZ2lzdHJ5LmV2ZW50
TmFtZURpc3BhdGNoQ29uZmlncy5oYXNPd25Qcm9wZXJ0eShldmVudE5hbWUpID8gImRldmVsb3Bt
ZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRXZlbnRQbHVnaW5IdWI6
IE1vcmUgdGhhbiBvbmUgcGx1Z2luIGF0dGVtcHRlZCB0byBwdWJsaXNoIHRoZSBzYW1lIGV2ZW50
IG5hbWUsIGAlc2AuJywgZXZlbnROYW1lKSA6IF9wcm9kSW52YXJpYW50KCc5OScsIGV2ZW50TmFt
ZSkgOiB2b2lkIDA7CisgIEV2ZW50UGx1Z2luUmVnaXN0cnkuZXZlbnROYW1lRGlzcGF0Y2hDb25m
aWdzW2V2ZW50TmFtZV0gPSBkaXNwYXRjaENvbmZpZzsKKworICB2YXIgcGhhc2VkUmVnaXN0cmF0
aW9uTmFtZXMgPSBkaXNwYXRjaENvbmZpZy5waGFzZWRSZWdpc3RyYXRpb25OYW1lczsKKyAgaWYg
KHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzKSB7CisgICAgZm9yICh2YXIgcGhhc2VOYW1lIGluIHBo
YXNlZFJlZ2lzdHJhdGlvbk5hbWVzKSB7CisgICAgICBpZiAocGhhc2VkUmVnaXN0cmF0aW9uTmFt
ZXMuaGFzT3duUHJvcGVydHkocGhhc2VOYW1lKSkgeworICAgICAgICB2YXIgcGhhc2VkUmVnaXN0
cmF0aW9uTmFtZSA9IHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzW3BoYXNlTmFtZV07CisgICAgICAg
IHB1Ymxpc2hSZWdpc3RyYXRpb25OYW1lKHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWUsIHBsdWdpbk1v
ZHVsZSwgZXZlbnROYW1lKTsKKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHRydWU7CisgIH0g
ZWxzZSBpZiAoZGlzcGF0Y2hDb25maWcucmVnaXN0cmF0aW9uTmFtZSkgeworICAgIHB1Ymxpc2hS
ZWdpc3RyYXRpb25OYW1lKGRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUsIHBsdWdpbk1v
ZHVsZSwgZXZlbnROYW1lKTsKKyAgICByZXR1cm4gdHJ1ZTsKKyAgfQorICByZXR1cm4gZmFsc2U7
Cit9CisKKy8qKgorICogUHVibGlzaGVzIGEgcmVnaXN0cmF0aW9uIG5hbWUgdGhhdCBpcyB1c2Vk
IHRvIGlkZW50aWZ5IGRpc3BhdGNoZWQgZXZlbnRzIGFuZAorICogY2FuIGJlIHVzZWQgd2l0aCBg
RXZlbnRQbHVnaW5IdWIucHV0TGlzdGVuZXJgIHRvIHJlZ2lzdGVyIGxpc3RlbmVycy4KKyAqCisg
KiBAcGFyYW0ge3N0cmluZ30gcmVnaXN0cmF0aW9uTmFtZSBSZWdpc3RyYXRpb24gbmFtZSB0byBh
ZGQuCisgKiBAcGFyYW0ge29iamVjdH0gUGx1Z2luTW9kdWxlIFBsdWdpbiBwdWJsaXNoaW5nIHRo
ZSBldmVudC4KKyAqIEBwcml2YXRlCisgKi8KK2Z1bmN0aW9uIHB1Ymxpc2hSZWdpc3RyYXRpb25O
YW1lKHJlZ2lzdHJhdGlvbk5hbWUsIHBsdWdpbk1vZHVsZSwgZXZlbnROYW1lKSB7CisgICEhRXZl
bnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tyZWdpc3RyYXRpb25OYW1l
XSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0V2
ZW50UGx1Z2luSHViOiBNb3JlIHRoYW4gb25lIHBsdWdpbiBhdHRlbXB0ZWQgdG8gcHVibGlzaCB0
aGUgc2FtZSByZWdpc3RyYXRpb24gbmFtZSwgYCVzYC4nLCByZWdpc3RyYXRpb25OYW1lKSA6IF9w
cm9kSW52YXJpYW50KCcxMDAnLCByZWdpc3RyYXRpb25OYW1lKSA6IHZvaWQgMDsKKyAgRXZlbnRQ
bHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tyZWdpc3RyYXRpb25OYW1lXSA9
IHBsdWdpbk1vZHVsZTsKKyAgRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lRGVw
ZW5kZW5jaWVzW3JlZ2lzdHJhdGlvbk5hbWVdID0gcGx1Z2luTW9kdWxlLmV2ZW50VHlwZXNbZXZl
bnROYW1lXS5kZXBlbmRlbmNpZXM7CisKKyAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0
aW9uJykgeworICAgIHZhciBsb3dlckNhc2VkTmFtZSA9IHJlZ2lzdHJhdGlvbk5hbWUudG9Mb3dl
ckNhc2UoKTsKKyAgICBFdmVudFBsdWdpblJlZ2lzdHJ5LnBvc3NpYmxlUmVnaXN0cmF0aW9uTmFt
ZXNbbG93ZXJDYXNlZE5hbWVdID0gcmVnaXN0cmF0aW9uTmFtZTsKKworICAgIGlmIChyZWdpc3Ry
YXRpb25OYW1lID09PSAnb25Eb3VibGVDbGljaycpIHsKKyAgICAgIEV2ZW50UGx1Z2luUmVnaXN0
cnkucG9zc2libGVSZWdpc3RyYXRpb25OYW1lcy5vbmRibGNsaWNrID0gcmVnaXN0cmF0aW9uTmFt
ZTsKKyAgICB9CisgIH0KK30KKworLyoqCisgKiBSZWdpc3RlcnMgcGx1Z2lucyBzbyB0aGF0IHRo
ZXkgY2FuIGV4dHJhY3QgYW5kIGRpc3BhdGNoIGV2ZW50cy4KKyAqCisgKiBAc2VlIHtFdmVudFBs
dWdpbkh1Yn0KKyAqLwordmFyIEV2ZW50UGx1Z2luUmVnaXN0cnkgPSB7CisKKyAgLyoqCisgICAq
IE9yZGVyZWQgbGlzdCBvZiBpbmplY3RlZCBwbHVnaW5zLgorICAgKi8KKyAgcGx1Z2luczogW10s
CisKKyAgLyoqCisgICAqIE1hcHBpbmcgZnJvbSBldmVudCBuYW1lIHRvIGRpc3BhdGNoIGNvbmZp
ZworICAgKi8KKyAgZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzOiB7fSwKKworICAvKioKKyAgICog
TWFwcGluZyBmcm9tIHJlZ2lzdHJhdGlvbiBuYW1lIHRvIHBsdWdpbiBtb2R1bGUKKyAgICovCisg
IHJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzOiB7fSwKKworICAvKioKKyAgICogTWFwcGluZyBmcm9t
IHJlZ2lzdHJhdGlvbiBuYW1lIHRvIGV2ZW50IG5hbWUKKyAgICovCisgIHJlZ2lzdHJhdGlvbk5h
bWVEZXBlbmRlbmNpZXM6IHt9LAorCisgIC8qKgorICAgKiBNYXBwaW5nIGZyb20gbG93ZXJjYXNl
IHJlZ2lzdHJhdGlvbiBuYW1lcyB0byB0aGUgcHJvcGVybHkgY2FzZWQgdmVyc2lvbiwKKyAgICog
dXNlZCB0byB3YXJuIGluIHRoZSBjYXNlIG9mIG1pc3NpbmcgZXZlbnQgaGFuZGxlcnMuIEF2YWls
YWJsZQorICAgKiBvbmx5IGluIF9fREVWX18uCisgICAqIEB0eXBlIHtPYmplY3R9CisgICAqLwor
ICBwb3NzaWJsZVJlZ2lzdHJhdGlvbk5hbWVzOiAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlv
bicgPyB7fSA6IG51bGwsCisgIC8vIFRydXN0IHRoZSBkZXZlbG9wZXIgdG8gb25seSB1c2UgcG9z
c2libGVSZWdpc3RyYXRpb25OYW1lcyBpbiBfX0RFVl9fCisKKyAgLyoqCisgICAqIEluamVjdHMg
YW4gb3JkZXJpbmcgb2YgcGx1Z2lucyAoYnkgcGx1Z2luIG5hbWUpLiBUaGlzIGFsbG93cyB0aGUg
b3JkZXJpbmcKKyAgICogdG8gYmUgZGVjb3VwbGVkIGZyb20gaW5qZWN0aW9uIG9mIHRoZSBhY3R1
YWwgcGx1Z2lucyBzbyB0aGF0IG9yZGVyaW5nIGlzCisgICAqIGFsd2F5cyBkZXRlcm1pbmlzdGlj
IHJlZ2FyZGxlc3Mgb2YgcGFja2FnaW5nLCBvbi10aGUtZmx5IGluamVjdGlvbiwgZXRjLgorICAg
KgorICAgKiBAcGFyYW0ge2FycmF5fSBJbmplY3RlZEV2ZW50UGx1Z2luT3JkZXIKKyAgICogQGlu
dGVybmFsCisgICAqIEBzZWUge0V2ZW50UGx1Z2luSHViLmluamVjdGlvbi5pbmplY3RFdmVudFBs
dWdpbk9yZGVyfQorICAgKi8KKyAgaW5qZWN0RXZlbnRQbHVnaW5PcmRlcjogZnVuY3Rpb24gKGlu
amVjdGVkRXZlbnRQbHVnaW5PcmRlcikgeworICAgICEhZXZlbnRQbHVnaW5PcmRlciA/ICJkZXZl
bG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0V2ZW50UGx1Z2lu
UmVnaXN0cnk6IENhbm5vdCBpbmplY3QgZXZlbnQgcGx1Z2luIG9yZGVyaW5nIG1vcmUgdGhhbiBv
bmNlLiBZb3UgYXJlIGxpa2VseSB0cnlpbmcgdG8gbG9hZCBtb3JlIHRoYW4gb25lIGNvcHkgb2Yg
UmVhY3QuJykgOiBfcHJvZEludmFyaWFudCgnMTAxJykgOiB2b2lkIDA7CisgICAgLy8gQ2xvbmUg
dGhlIG9yZGVyaW5nIHNvIGl0IGNhbm5vdCBiZSBkeW5hbWljYWxseSBtdXRhdGVkLgorICAgIGV2
ZW50UGx1Z2luT3JkZXIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChpbmplY3RlZEV2ZW50
UGx1Z2luT3JkZXIpOworICAgIHJlY29tcHV0ZVBsdWdpbk9yZGVyaW5nKCk7CisgIH0sCisKKyAg
LyoqCisgICAqIEluamVjdHMgcGx1Z2lucyB0byBiZSB1c2VkIGJ5IGBFdmVudFBsdWdpbkh1YmAu
IFRoZSBwbHVnaW4gbmFtZXMgbXVzdCBiZQorICAgKiBpbiB0aGUgb3JkZXJpbmcgaW5qZWN0ZWQg
YnkgYGluamVjdEV2ZW50UGx1Z2luT3JkZXJgLgorICAgKgorICAgKiBQbHVnaW5zIGNhbiBiZSBp
bmplY3RlZCBhcyBwYXJ0IG9mIHBhZ2UgaW5pdGlhbGl6YXRpb24gb3Igb24tdGhlLWZseS4KKyAg
ICoKKyAgICogQHBhcmFtIHtvYmplY3R9IGluamVjdGVkTmFtZXNUb1BsdWdpbnMgTWFwIGZyb20g
bmFtZXMgdG8gcGx1Z2luIG1vZHVsZXMuCisgICAqIEBpbnRlcm5hbAorICAgKiBAc2VlIHtFdmVu
dFBsdWdpbkh1Yi5pbmplY3Rpb24uaW5qZWN0RXZlbnRQbHVnaW5zQnlOYW1lfQorICAgKi8KKyAg
aW5qZWN0RXZlbnRQbHVnaW5zQnlOYW1lOiBmdW5jdGlvbiAoaW5qZWN0ZWROYW1lc1RvUGx1Z2lu
cykgeworICAgIHZhciBpc09yZGVyaW5nRGlydHkgPSBmYWxzZTsKKyAgICBmb3IgKHZhciBwbHVn
aW5OYW1lIGluIGluamVjdGVkTmFtZXNUb1BsdWdpbnMpIHsKKyAgICAgIGlmICghaW5qZWN0ZWRO
YW1lc1RvUGx1Z2lucy5oYXNPd25Qcm9wZXJ0eShwbHVnaW5OYW1lKSkgeworICAgICAgICBjb250
aW51ZTsKKyAgICAgIH0KKyAgICAgIHZhciBwbHVnaW5Nb2R1bGUgPSBpbmplY3RlZE5hbWVzVG9Q
bHVnaW5zW3BsdWdpbk5hbWVdOworICAgICAgaWYgKCFuYW1lc1RvUGx1Z2lucy5oYXNPd25Qcm9w
ZXJ0eShwbHVnaW5OYW1lKSB8fCBuYW1lc1RvUGx1Z2luc1twbHVnaW5OYW1lXSAhPT0gcGx1Z2lu
TW9kdWxlKSB7CisgICAgICAgICEhbmFtZXNUb1BsdWdpbnNbcGx1Z2luTmFtZV0gPyAiZGV2ZWxv
cG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdFdmVudFBsdWdpblJl
Z2lzdHJ5OiBDYW5ub3QgaW5qZWN0IHR3byBkaWZmZXJlbnQgZXZlbnQgcGx1Z2lucyB1c2luZyB0
aGUgc2FtZSBuYW1lLCBgJXNgLicsIHBsdWdpbk5hbWUpIDogX3Byb2RJbnZhcmlhbnQoJzEwMics
IHBsdWdpbk5hbWUpIDogdm9pZCAwOworICAgICAgICBuYW1lc1RvUGx1Z2luc1twbHVnaW5OYW1l
XSA9IHBsdWdpbk1vZHVsZTsKKyAgICAgICAgaXNPcmRlcmluZ0RpcnR5ID0gdHJ1ZTsKKyAgICAg
IH0KKyAgICB9CisgICAgaWYgKGlzT3JkZXJpbmdEaXJ0eSkgeworICAgICAgcmVjb21wdXRlUGx1
Z2luT3JkZXJpbmcoKTsKKyAgICB9CisgIH0sCisKKyAgLyoqCisgICAqIExvb2tzIHVwIHRoZSBw
bHVnaW4gZm9yIHRoZSBzdXBwbGllZCBldmVudC4KKyAgICoKKyAgICogQHBhcmFtIHtvYmplY3R9
IGV2ZW50IEEgc3ludGhldGljIGV2ZW50LgorICAgKiBAcmV0dXJuIHs/b2JqZWN0fSBUaGUgcGx1
Z2luIHRoYXQgY3JlYXRlZCB0aGUgc3VwcGxpZWQgZXZlbnQuCisgICAqIEBpbnRlcm5hbAorICAg
Ki8KKyAgZ2V0UGx1Z2luTW9kdWxlRm9yRXZlbnQ6IGZ1bmN0aW9uIChldmVudCkgeworICAgIHZh
ciBkaXNwYXRjaENvbmZpZyA9IGV2ZW50LmRpc3BhdGNoQ29uZmlnOworICAgIGlmIChkaXNwYXRj
aENvbmZpZy5yZWdpc3RyYXRpb25OYW1lKSB7CisgICAgICByZXR1cm4gRXZlbnRQbHVnaW5SZWdp
c3RyeS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tkaXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25O
YW1lXSB8fCBudWxsOworICAgIH0KKyAgICBpZiAoZGlzcGF0Y2hDb25maWcucGhhc2VkUmVnaXN0
cmF0aW9uTmFtZXMgIT09IHVuZGVmaW5lZCkgeworICAgICAgLy8gcHVsbGluZyBwaGFzZWRSZWdp
c3RyYXRpb25OYW1lcyBvdXQgb2YgZGlzcGF0Y2hDb25maWcgaGVscHMgRmxvdyBzZWUKKyAgICAg
IC8vIHRoYXQgaXQgaXMgbm90IHVuZGVmaW5lZC4KKyAgICAgIHZhciBwaGFzZWRSZWdpc3RyYXRp
b25OYW1lcyA9IGRpc3BhdGNoQ29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOworCisgICAg
ICBmb3IgKHZhciBwaGFzZSBpbiBwaGFzZWRSZWdpc3RyYXRpb25OYW1lcykgeworICAgICAgICBp
ZiAoIXBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzLmhhc093blByb3BlcnR5KHBoYXNlKSkgeworICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIHZhciBwbHVnaW5Nb2R1bGUgPSBF
dmVudFBsdWdpblJlZ2lzdHJ5LnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW3BoYXNlZFJlZ2lzdHJh
dGlvbk5hbWVzW3BoYXNlXV07CisgICAgICAgIGlmIChwbHVnaW5Nb2R1bGUpIHsKKyAgICAgICAg
ICByZXR1cm4gcGx1Z2luTW9kdWxlOworICAgICAgICB9CisgICAgICB9CisgICAgfQorICAgIHJl
dHVybiBudWxsOworICB9LAorCisgIC8qKgorICAgKiBFeHBvc2VkIGZvciB1bml0IHRlc3Rpbmcu
CisgICAqIEBwcml2YXRlCisgICAqLworICBfcmVzZXRFdmVudFBsdWdpbnM6IGZ1bmN0aW9uICgp
IHsKKyAgICBldmVudFBsdWdpbk9yZGVyID0gbnVsbDsKKyAgICBmb3IgKHZhciBwbHVnaW5OYW1l
IGluIG5hbWVzVG9QbHVnaW5zKSB7CisgICAgICBpZiAobmFtZXNUb1BsdWdpbnMuaGFzT3duUHJv
cGVydHkocGx1Z2luTmFtZSkpIHsKKyAgICAgICAgZGVsZXRlIG5hbWVzVG9QbHVnaW5zW3BsdWdp
bk5hbWVdOworICAgICAgfQorICAgIH0KKyAgICBFdmVudFBsdWdpblJlZ2lzdHJ5LnBsdWdpbnMu
bGVuZ3RoID0gMDsKKworICAgIHZhciBldmVudE5hbWVEaXNwYXRjaENvbmZpZ3MgPSBFdmVudFBs
dWdpblJlZ2lzdHJ5LmV2ZW50TmFtZURpc3BhdGNoQ29uZmlnczsKKyAgICBmb3IgKHZhciBldmVu
dE5hbWUgaW4gZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzKSB7CisgICAgICBpZiAoZXZlbnROYW1l
RGlzcGF0Y2hDb25maWdzLmhhc093blByb3BlcnR5KGV2ZW50TmFtZSkpIHsKKyAgICAgICAgZGVs
ZXRlIGV2ZW50TmFtZURpc3BhdGNoQ29uZmlnc1tldmVudE5hbWVdOworICAgICAgfQorICAgIH0K
KworICAgIHZhciByZWdpc3RyYXRpb25OYW1lTW9kdWxlcyA9IEV2ZW50UGx1Z2luUmVnaXN0cnku
cmVnaXN0cmF0aW9uTmFtZU1vZHVsZXM7CisgICAgZm9yICh2YXIgcmVnaXN0cmF0aW9uTmFtZSBp
biByZWdpc3RyYXRpb25OYW1lTW9kdWxlcykgeworICAgICAgaWYgKHJlZ2lzdHJhdGlvbk5hbWVN
b2R1bGVzLmhhc093blByb3BlcnR5KHJlZ2lzdHJhdGlvbk5hbWUpKSB7CisgICAgICAgIGRlbGV0
ZSByZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tyZWdpc3RyYXRpb25OYW1lXTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICB2
YXIgcG9zc2libGVSZWdpc3RyYXRpb25OYW1lcyA9IEV2ZW50UGx1Z2luUmVnaXN0cnkucG9zc2li
bGVSZWdpc3RyYXRpb25OYW1lczsKKyAgICAgIGZvciAodmFyIGxvd2VyQ2FzZWROYW1lIGluIHBv
c3NpYmxlUmVnaXN0cmF0aW9uTmFtZXMpIHsKKyAgICAgICAgaWYgKHBvc3NpYmxlUmVnaXN0cmF0
aW9uTmFtZXMuaGFzT3duUHJvcGVydHkobG93ZXJDYXNlZE5hbWUpKSB7CisgICAgICAgICAgZGVs
ZXRlIHBvc3NpYmxlUmVnaXN0cmF0aW9uTmFtZXNbbG93ZXJDYXNlZE5hbWVdOworICAgICAgICB9
CisgICAgICB9CisgICAgfQorICB9CisKK307CisKK21vZHVsZS5leHBvcnRzID0gRXZlbnRQbHVn
aW5SZWdpc3RyeTsKK30seyIxMTYiOjExNiwiMTQwIjoxNDB9XSwxODpbZnVuY3Rpb24oX2RlcmVx
Xyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNv
ZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQor
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBp
biB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3Vz
ZSBzdHJpY3QnOworCit2YXIgX3Byb2RJbnZhcmlhbnQgPSBfZGVyZXFfKDExNik7CisKK3ZhciBS
ZWFjdEVycm9yVXRpbHMgPSBfZGVyZXFfKDUwKTsKKwordmFyIGludmFyaWFudCA9IF9kZXJlcV8o
MTQwKTsKK3ZhciB3YXJuaW5nID0gX2RlcmVxXygxNDcpOworCisvKioKKyAqIEluamVjdGVkIGRl
cGVuZGVuY2llczoKKyAqLworCisvKioKKyAqIC0gYENvbXBvbmVudFRyZWVgOiBbcmVxdWlyZWRd
IE1vZHVsZSB0aGF0IGNhbiBjb252ZXJ0IGJldHdlZW4gUmVhY3QgaW5zdGFuY2VzCisgKiAgIGFu
ZCBhY3R1YWwgbm9kZSByZWZlcmVuY2VzLgorICovCit2YXIgQ29tcG9uZW50VHJlZTsKK3ZhciBU
cmVlVHJhdmVyc2FsOwordmFyIGluamVjdGlvbiA9IHsKKyAgaW5qZWN0Q29tcG9uZW50VHJlZTog
ZnVuY3Rpb24gKEluamVjdGVkKSB7CisgICAgQ29tcG9uZW50VHJlZSA9IEluamVjdGVkOworICAg
IGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICJkZXZlbG9wbWVu
dCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoSW5qZWN0ZWQgJiYgSW5qZWN0ZWQuZ2V0Tm9k
ZUZyb21JbnN0YW5jZSAmJiBJbmplY3RlZC5nZXRJbnN0YW5jZUZyb21Ob2RlLCAnRXZlbnRQbHVn
aW5VdGlscy5pbmplY3Rpb24uaW5qZWN0Q29tcG9uZW50VHJlZSguLi4pOiBJbmplY3RlZCAnICsg
J21vZHVsZSBpcyBtaXNzaW5nIGdldE5vZGVGcm9tSW5zdGFuY2Ugb3IgZ2V0SW5zdGFuY2VGcm9t
Tm9kZS4nKSA6IHZvaWQgMDsKKyAgICB9CisgIH0sCisgIGluamVjdFRyZWVUcmF2ZXJzYWw6IGZ1
bmN0aW9uIChJbmplY3RlZCkgeworICAgIFRyZWVUcmF2ZXJzYWwgPSBJbmplY3RlZDsKKyAgICBp
ZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAiZGV2ZWxvcG1lbnQi
ICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKEluamVjdGVkICYmIEluamVjdGVkLmlzQW5jZXN0
b3IgJiYgSW5qZWN0ZWQuZ2V0TG93ZXN0Q29tbW9uQW5jZXN0b3IsICdFdmVudFBsdWdpblV0aWxz
LmluamVjdGlvbi5pbmplY3RUcmVlVHJhdmVyc2FsKC4uLik6IEluamVjdGVkICcgKyAnbW9kdWxl
IGlzIG1pc3NpbmcgaXNBbmNlc3RvciBvciBnZXRMb3dlc3RDb21tb25BbmNlc3Rvci4nKSA6IHZv
aWQgMDsKKyAgICB9CisgIH0KK307CisKK2Z1bmN0aW9uIGlzRW5kaXNoKHRvcExldmVsVHlwZSkg
eworICByZXR1cm4gdG9wTGV2ZWxUeXBlID09PSAndG9wTW91c2VVcCcgfHwgdG9wTGV2ZWxUeXBl
ID09PSAndG9wVG91Y2hFbmQnIHx8IHRvcExldmVsVHlwZSA9PT0gJ3RvcFRvdWNoQ2FuY2VsJzsK
K30KKworZnVuY3Rpb24gaXNNb3ZlaXNoKHRvcExldmVsVHlwZSkgeworICByZXR1cm4gdG9wTGV2
ZWxUeXBlID09PSAndG9wTW91c2VNb3ZlJyB8fCB0b3BMZXZlbFR5cGUgPT09ICd0b3BUb3VjaE1v
dmUnOworfQorZnVuY3Rpb24gaXNTdGFydGlzaCh0b3BMZXZlbFR5cGUpIHsKKyAgcmV0dXJuIHRv
cExldmVsVHlwZSA9PT0gJ3RvcE1vdXNlRG93bicgfHwgdG9wTGV2ZWxUeXBlID09PSAndG9wVG91
Y2hTdGFydCc7Cit9CisKK3ZhciB2YWxpZGF0ZUV2ZW50RGlzcGF0Y2hlczsKK2lmICgiZGV2ZWxv
cG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgdmFsaWRhdGVFdmVudERpc3BhdGNoZXMgPSBm
dW5jdGlvbiAoZXZlbnQpIHsKKyAgICB2YXIgZGlzcGF0Y2hMaXN0ZW5lcnMgPSBldmVudC5fZGlz
cGF0Y2hMaXN0ZW5lcnM7CisgICAgdmFyIGRpc3BhdGNoSW5zdGFuY2VzID0gZXZlbnQuX2Rpc3Bh
dGNoSW5zdGFuY2VzOworCisgICAgdmFyIGxpc3RlbmVyc0lzQXJyID0gQXJyYXkuaXNBcnJheShk
aXNwYXRjaExpc3RlbmVycyk7CisgICAgdmFyIGxpc3RlbmVyc0xlbiA9IGxpc3RlbmVyc0lzQXJy
ID8gZGlzcGF0Y2hMaXN0ZW5lcnMubGVuZ3RoIDogZGlzcGF0Y2hMaXN0ZW5lcnMgPyAxIDogMDsK
KworICAgIHZhciBpbnN0YW5jZXNJc0FyciA9IEFycmF5LmlzQXJyYXkoZGlzcGF0Y2hJbnN0YW5j
ZXMpOworICAgIHZhciBpbnN0YW5jZXNMZW4gPSBpbnN0YW5jZXNJc0FyciA/IGRpc3BhdGNoSW5z
dGFuY2VzLmxlbmd0aCA6IGRpc3BhdGNoSW5zdGFuY2VzID8gMSA6IDA7CisKKyAgICAiZGV2ZWxv
cG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGluc3RhbmNlc0lzQXJyID09PSBsaXN0
ZW5lcnNJc0FyciAmJiBpbnN0YW5jZXNMZW4gPT09IGxpc3RlbmVyc0xlbiwgJ0V2ZW50UGx1Z2lu
VXRpbHM6IEludmFsaWQgYGV2ZW50YC4nKSA6IHZvaWQgMDsKKyAgfTsKK30KKworLyoqCisgKiBE
aXNwYXRjaCB0aGUgZXZlbnQgdG8gdGhlIGxpc3RlbmVyLgorICogQHBhcmFtIHtTeW50aGV0aWNF
dmVudH0gZXZlbnQgU3ludGhldGljRXZlbnQgdG8gaGFuZGxlCisgKiBAcGFyYW0ge2Jvb2xlYW59
IHNpbXVsYXRlZCBJZiB0aGUgZXZlbnQgaXMgc2ltdWxhdGVkIChjaGFuZ2VzIGV4biBiZWhhdmlv
cikKKyAqIEBwYXJhbSB7ZnVuY3Rpb259IGxpc3RlbmVyIEFwcGxpY2F0aW9uLWxldmVsIGNhbGxi
YWNrCisgKiBAcGFyYW0geyp9IGluc3QgSW50ZXJuYWwgY29tcG9uZW50IGluc3RhbmNlCisgKi8K
K2Z1bmN0aW9uIGV4ZWN1dGVEaXNwYXRjaChldmVudCwgc2ltdWxhdGVkLCBsaXN0ZW5lciwgaW5z
dCkgeworICB2YXIgdHlwZSA9IGV2ZW50LnR5cGUgfHwgJ3Vua25vd24tZXZlbnQnOworICBldmVu
dC5jdXJyZW50VGFyZ2V0ID0gRXZlbnRQbHVnaW5VdGlscy5nZXROb2RlRnJvbUluc3RhbmNlKGlu
c3QpOworICBpZiAoc2ltdWxhdGVkKSB7CisgICAgUmVhY3RFcnJvclV0aWxzLmludm9rZUd1YXJk
ZWRDYWxsYmFja1dpdGhDYXRjaCh0eXBlLCBsaXN0ZW5lciwgZXZlbnQpOworICB9IGVsc2Ugewor
ICAgIFJlYWN0RXJyb3JVdGlscy5pbnZva2VHdWFyZGVkQ2FsbGJhY2sodHlwZSwgbGlzdGVuZXIs
IGV2ZW50KTsKKyAgfQorICBldmVudC5jdXJyZW50VGFyZ2V0ID0gbnVsbDsKK30KKworLyoqCisg
KiBTdGFuZGFyZC9zaW1wbGUgaXRlcmF0aW9uIHRocm91Z2ggYW4gZXZlbnQncyBjb2xsZWN0ZWQg
ZGlzcGF0Y2hlcy4KKyAqLworZnVuY3Rpb24gZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyKGV2ZW50
LCBzaW11bGF0ZWQpIHsKKyAgdmFyIGRpc3BhdGNoTGlzdGVuZXJzID0gZXZlbnQuX2Rpc3BhdGNo
TGlzdGVuZXJzOworICB2YXIgZGlzcGF0Y2hJbnN0YW5jZXMgPSBldmVudC5fZGlzcGF0Y2hJbnN0
YW5jZXM7CisgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICB2YWxp
ZGF0ZUV2ZW50RGlzcGF0Y2hlcyhldmVudCk7CisgIH0KKyAgaWYgKEFycmF5LmlzQXJyYXkoZGlz
cGF0Y2hMaXN0ZW5lcnMpKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkaXNwYXRjaExpc3Rl
bmVycy5sZW5ndGg7IGkrKykgeworICAgICAgaWYgKGV2ZW50LmlzUHJvcGFnYXRpb25TdG9wcGVk
KCkpIHsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICAvLyBMaXN0ZW5lcnMgYW5kIElu
c3RhbmNlcyBhcmUgdHdvIHBhcmFsbGVsIGFycmF5cyB0aGF0IGFyZSBhbHdheXMgaW4gc3luYy4K
KyAgICAgIGV4ZWN1dGVEaXNwYXRjaChldmVudCwgc2ltdWxhdGVkLCBkaXNwYXRjaExpc3RlbmVy
c1tpXSwgZGlzcGF0Y2hJbnN0YW5jZXNbaV0pOworICAgIH0KKyAgfSBlbHNlIGlmIChkaXNwYXRj
aExpc3RlbmVycykgeworICAgIGV4ZWN1dGVEaXNwYXRjaChldmVudCwgc2ltdWxhdGVkLCBkaXNw
YXRjaExpc3RlbmVycywgZGlzcGF0Y2hJbnN0YW5jZXMpOworICB9CisgIGV2ZW50Ll9kaXNwYXRj
aExpc3RlbmVycyA9IG51bGw7CisgIGV2ZW50Ll9kaXNwYXRjaEluc3RhbmNlcyA9IG51bGw7Cit9
CisKKy8qKgorICogU3RhbmRhcmQvc2ltcGxlIGl0ZXJhdGlvbiB0aHJvdWdoIGFuIGV2ZW50J3Mg
Y29sbGVjdGVkIGRpc3BhdGNoZXMsIGJ1dCBzdG9wcworICogYXQgdGhlIGZpcnN0IGRpc3BhdGNo
IGV4ZWN1dGlvbiByZXR1cm5pbmcgdHJ1ZSwgYW5kIHJldHVybnMgdGhhdCBpZC4KKyAqCisgKiBA
cmV0dXJuIHs/c3RyaW5nfSBpZCBvZiB0aGUgZmlyc3QgZGlzcGF0Y2ggZXhlY3V0aW9uIHdobydz
IGxpc3RlbmVyIHJldHVybnMKKyAqIHRydWUsIG9yIG51bGwgaWYgbm8gbGlzdGVuZXIgcmV0dXJu
ZWQgdHJ1ZS4KKyAqLworZnVuY3Rpb24gZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyU3RvcEF0VHJ1
ZUltcGwoZXZlbnQpIHsKKyAgdmFyIGRpc3BhdGNoTGlzdGVuZXJzID0gZXZlbnQuX2Rpc3BhdGNo
TGlzdGVuZXJzOworICB2YXIgZGlzcGF0Y2hJbnN0YW5jZXMgPSBldmVudC5fZGlzcGF0Y2hJbnN0
YW5jZXM7CisgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICB2YWxp
ZGF0ZUV2ZW50RGlzcGF0Y2hlcyhldmVudCk7CisgIH0KKyAgaWYgKEFycmF5LmlzQXJyYXkoZGlz
cGF0Y2hMaXN0ZW5lcnMpKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkaXNwYXRjaExpc3Rl
bmVycy5sZW5ndGg7IGkrKykgeworICAgICAgaWYgKGV2ZW50LmlzUHJvcGFnYXRpb25TdG9wcGVk
KCkpIHsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICAvLyBMaXN0ZW5lcnMgYW5kIElu
c3RhbmNlcyBhcmUgdHdvIHBhcmFsbGVsIGFycmF5cyB0aGF0IGFyZSBhbHdheXMgaW4gc3luYy4K
KyAgICAgIGlmIChkaXNwYXRjaExpc3RlbmVyc1tpXShldmVudCwgZGlzcGF0Y2hJbnN0YW5jZXNb
aV0pKSB7CisgICAgICAgIHJldHVybiBkaXNwYXRjaEluc3RhbmNlc1tpXTsKKyAgICAgIH0KKyAg
ICB9CisgIH0gZWxzZSBpZiAoZGlzcGF0Y2hMaXN0ZW5lcnMpIHsKKyAgICBpZiAoZGlzcGF0Y2hM
aXN0ZW5lcnMoZXZlbnQsIGRpc3BhdGNoSW5zdGFuY2VzKSkgeworICAgICAgcmV0dXJuIGRpc3Bh
dGNoSW5zdGFuY2VzOworICAgIH0KKyAgfQorICByZXR1cm4gbnVsbDsKK30KKworLyoqCisgKiBA
c2VlIGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlclN0b3BBdFRydWVJbXBsCisgKi8KK2Z1bmN0aW9u
IGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlclN0b3BBdFRydWUoZXZlbnQpIHsKKyAgdmFyIHJldCA9
IGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlclN0b3BBdFRydWVJbXBsKGV2ZW50KTsKKyAgZXZlbnQu
X2Rpc3BhdGNoSW5zdGFuY2VzID0gbnVsbDsKKyAgZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJzID0g
bnVsbDsKKyAgcmV0dXJuIHJldDsKK30KKworLyoqCisgKiBFeGVjdXRpb24gb2YgYSAiZGlyZWN0
IiBkaXNwYXRjaCAtIHRoZXJlIG11c3QgYmUgYXQgbW9zdCBvbmUgZGlzcGF0Y2gKKyAqIGFjY3Vt
dWxhdGVkIG9uIHRoZSBldmVudCBvciBpdCBpcyBjb25zaWRlcmVkIGFuIGVycm9yLiBJdCBkb2Vz
bid0IHJlYWxseSBtYWtlCisgKiBzZW5zZSBmb3IgYW4gZXZlbnQgd2l0aCBtdWx0aXBsZSBkaXNw
YXRjaGVzIChidWJibGVkKSB0byBrZWVwIHRyYWNrIG9mIHRoZQorICogcmV0dXJuIHZhbHVlcyBh
dCBlYWNoIGRpc3BhdGNoIGV4ZWN1dGlvbiwgYnV0IGl0IGRvZXMgdGVuZCB0byBtYWtlIHNlbnNl
IHdoZW4KKyAqIGRlYWxpbmcgd2l0aCAiZGlyZWN0IiBkaXNwYXRjaGVzLgorICoKKyAqIEByZXR1
cm4geyp9IFRoZSByZXR1cm4gdmFsdWUgb2YgZXhlY3V0aW5nIHRoZSBzaW5nbGUgZGlzcGF0Y2gu
CisgKi8KK2Z1bmN0aW9uIGV4ZWN1dGVEaXJlY3REaXNwYXRjaChldmVudCkgeworICBpZiAoImRl
dmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgdmFsaWRhdGVFdmVudERpc3BhdGNo
ZXMoZXZlbnQpOworICB9CisgIHZhciBkaXNwYXRjaExpc3RlbmVyID0gZXZlbnQuX2Rpc3BhdGNo
TGlzdGVuZXJzOworICB2YXIgZGlzcGF0Y2hJbnN0YW5jZSA9IGV2ZW50Ll9kaXNwYXRjaEluc3Rh
bmNlczsKKyAgISFBcnJheS5pc0FycmF5KGRpc3BhdGNoTGlzdGVuZXIpID8gImRldmVsb3BtZW50
IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnZXhlY3V0ZURpcmVjdERpc3Bh
dGNoKC4uLik6IEludmFsaWQgYGV2ZW50YC4nKSA6IF9wcm9kSW52YXJpYW50KCcxMDMnKSA6IHZv
aWQgMDsKKyAgZXZlbnQuY3VycmVudFRhcmdldCA9IGRpc3BhdGNoTGlzdGVuZXIgPyBFdmVudFBs
dWdpblV0aWxzLmdldE5vZGVGcm9tSW5zdGFuY2UoZGlzcGF0Y2hJbnN0YW5jZSkgOiBudWxsOwor
ICB2YXIgcmVzID0gZGlzcGF0Y2hMaXN0ZW5lciA/IGRpc3BhdGNoTGlzdGVuZXIoZXZlbnQpIDog
bnVsbDsKKyAgZXZlbnQuY3VycmVudFRhcmdldCA9IG51bGw7CisgIGV2ZW50Ll9kaXNwYXRjaExp
c3RlbmVycyA9IG51bGw7CisgIGV2ZW50Ll9kaXNwYXRjaEluc3RhbmNlcyA9IG51bGw7CisgIHJl
dHVybiByZXM7Cit9CisKKy8qKgorICogQHBhcmFtIHtTeW50aGV0aWNFdmVudH0gZXZlbnQKKyAq
IEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWZmIG51bWJlciBvZiBkaXNwYXRjaGVzIGFjY3VtdWxh
dGVkIGlzIGdyZWF0ZXIgdGhhbiAwLgorICovCitmdW5jdGlvbiBoYXNEaXNwYXRjaGVzKGV2ZW50
KSB7CisgIHJldHVybiAhIWV2ZW50Ll9kaXNwYXRjaExpc3RlbmVyczsKK30KKworLyoqCisgKiBH
ZW5lcmFsIHV0aWxpdGllcyB0aGF0IGFyZSB1c2VmdWwgaW4gY3JlYXRpbmcgY3VzdG9tIEV2ZW50
IFBsdWdpbnMuCisgKi8KK3ZhciBFdmVudFBsdWdpblV0aWxzID0geworICBpc0VuZGlzaDogaXNF
bmRpc2gsCisgIGlzTW92ZWlzaDogaXNNb3ZlaXNoLAorICBpc1N0YXJ0aXNoOiBpc1N0YXJ0aXNo
LAorCisgIGV4ZWN1dGVEaXJlY3REaXNwYXRjaDogZXhlY3V0ZURpcmVjdERpc3BhdGNoLAorICBl
eGVjdXRlRGlzcGF0Y2hlc0luT3JkZXI6IGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlciwKKyAgZXhl
Y3V0ZURpc3BhdGNoZXNJbk9yZGVyU3RvcEF0VHJ1ZTogZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVy
U3RvcEF0VHJ1ZSwKKyAgaGFzRGlzcGF0Y2hlczogaGFzRGlzcGF0Y2hlcywKKworICBnZXRJbnN0
YW5jZUZyb21Ob2RlOiBmdW5jdGlvbiAobm9kZSkgeworICAgIHJldHVybiBDb21wb25lbnRUcmVl
LmdldEluc3RhbmNlRnJvbU5vZGUobm9kZSk7CisgIH0sCisgIGdldE5vZGVGcm9tSW5zdGFuY2U6
IGZ1bmN0aW9uIChub2RlKSB7CisgICAgcmV0dXJuIENvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21J
bnN0YW5jZShub2RlKTsKKyAgfSwKKyAgaXNBbmNlc3RvcjogZnVuY3Rpb24gKGEsIGIpIHsKKyAg
ICByZXR1cm4gVHJlZVRyYXZlcnNhbC5pc0FuY2VzdG9yKGEsIGIpOworICB9LAorICBnZXRMb3dl
c3RDb21tb25BbmNlc3RvcjogZnVuY3Rpb24gKGEsIGIpIHsKKyAgICByZXR1cm4gVHJlZVRyYXZl
cnNhbC5nZXRMb3dlc3RDb21tb25BbmNlc3RvcihhLCBiKTsKKyAgfSwKKyAgZ2V0UGFyZW50SW5z
dGFuY2U6IGZ1bmN0aW9uIChpbnN0KSB7CisgICAgcmV0dXJuIFRyZWVUcmF2ZXJzYWwuZ2V0UGFy
ZW50SW5zdGFuY2UoaW5zdCk7CisgIH0sCisgIHRyYXZlcnNlVHdvUGhhc2U6IGZ1bmN0aW9uICh0
YXJnZXQsIGZuLCBhcmcpIHsKKyAgICByZXR1cm4gVHJlZVRyYXZlcnNhbC50cmF2ZXJzZVR3b1Bo
YXNlKHRhcmdldCwgZm4sIGFyZyk7CisgIH0sCisgIHRyYXZlcnNlRW50ZXJMZWF2ZTogZnVuY3Rp
b24gKGZyb20sIHRvLCBmbiwgYXJnRnJvbSwgYXJnVG8pIHsKKyAgICByZXR1cm4gVHJlZVRyYXZl
cnNhbC50cmF2ZXJzZUVudGVyTGVhdmUoZnJvbSwgdG8sIGZuLCBhcmdGcm9tLCBhcmdUbyk7Cisg
IH0sCisKKyAgaW5qZWN0aW9uOiBpbmplY3Rpb24KK307CisKK21vZHVsZS5leHBvcnRzID0gRXZl
bnRQbHVnaW5VdGlsczsKK30seyIxMTYiOjExNiwiMTQwIjoxNDAsIjE0NyI6MTQ3LCI1MCI6NTB9
XSwxOTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdo
dCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBs
aWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9y
eSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQg
cmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVj
dG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgRXZlbnRQbHVnaW5IdWIgPSBf
ZGVyZXFfKDE2KTsKK3ZhciBFdmVudFBsdWdpblV0aWxzID0gX2RlcmVxXygxOCk7CisKK3ZhciBh
Y2N1bXVsYXRlSW50byA9IF9kZXJlcV8oOTUpOwordmFyIGZvckVhY2hBY2N1bXVsYXRlZCA9IF9k
ZXJlcV8oMTAyKTsKK3ZhciB3YXJuaW5nID0gX2RlcmVxXygxNDcpOworCit2YXIgZ2V0TGlzdGVu
ZXIgPSBFdmVudFBsdWdpbkh1Yi5nZXRMaXN0ZW5lcjsKKworLyoqCisgKiBTb21lIGV2ZW50IHR5
cGVzIGhhdmUgYSBub3Rpb24gb2YgZGlmZmVyZW50IHJlZ2lzdHJhdGlvbiBuYW1lcyBmb3IgZGlm
ZmVyZW50CisgKiAicGhhc2VzIiBvZiBwcm9wYWdhdGlvbi4gVGhpcyBmaW5kcyBsaXN0ZW5lcnMg
YnkgYSBnaXZlbiBwaGFzZS4KKyAqLworZnVuY3Rpb24gbGlzdGVuZXJBdFBoYXNlKGluc3QsIGV2
ZW50LCBwcm9wYWdhdGlvblBoYXNlKSB7CisgIHZhciByZWdpc3RyYXRpb25OYW1lID0gZXZlbnQu
ZGlzcGF0Y2hDb25maWcucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXNbcHJvcGFnYXRpb25QaGFzZV07
CisgIHJldHVybiBnZXRMaXN0ZW5lcihpbnN0LCByZWdpc3RyYXRpb25OYW1lKTsKK30KKworLyoq
CisgKiBUYWdzIGEgYFN5bnRoZXRpY0V2ZW50YCB3aXRoIGRpc3BhdGNoZWQgbGlzdGVuZXJzLiBD
cmVhdGluZyB0aGlzIGZ1bmN0aW9uCisgKiBoZXJlLCBhbGxvd3MgdXMgdG8gbm90IGhhdmUgdG8g
YmluZCBvciBjcmVhdGUgZnVuY3Rpb25zIGZvciBlYWNoIGV2ZW50LgorICogTXV0YXRpbmcgdGhl
IGV2ZW50J3MgbWVtYmVycyBhbGxvd3MgdXMgdG8gbm90IGhhdmUgdG8gY3JlYXRlIGEgd3JhcHBp
bmcKKyAqICJkaXNwYXRjaCIgb2JqZWN0IHRoYXQgcGFpcnMgdGhlIGV2ZW50IHdpdGggdGhlIGxp
c3RlbmVyLgorICovCitmdW5jdGlvbiBhY2N1bXVsYXRlRGlyZWN0aW9uYWxEaXNwYXRjaGVzKGlu
c3QsIHBoYXNlLCBldmVudCkgeworICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24n
KSB7CisgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhpbnN0LCAn
RGlzcGF0Y2hpbmcgaW5zdCBtdXN0IG5vdCBiZSBudWxsJykgOiB2b2lkIDA7CisgIH0KKyAgdmFy
IGxpc3RlbmVyID0gbGlzdGVuZXJBdFBoYXNlKGluc3QsIGV2ZW50LCBwaGFzZSk7CisgIGlmIChs
aXN0ZW5lcikgeworICAgIGV2ZW50Ll9kaXNwYXRjaExpc3RlbmVycyA9IGFjY3VtdWxhdGVJbnRv
KGV2ZW50Ll9kaXNwYXRjaExpc3RlbmVycywgbGlzdGVuZXIpOworICAgIGV2ZW50Ll9kaXNwYXRj
aEluc3RhbmNlcyA9IGFjY3VtdWxhdGVJbnRvKGV2ZW50Ll9kaXNwYXRjaEluc3RhbmNlcywgaW5z
dCk7CisgIH0KK30KKworLyoqCisgKiBDb2xsZWN0IGRpc3BhdGNoZXMgKG11c3QgYmUgZW50aXJl
bHkgY29sbGVjdGVkIGJlZm9yZSBkaXNwYXRjaGluZyAtIHNlZSB1bml0CisgKiB0ZXN0cykuIExh
emlseSBhbGxvY2F0ZSB0aGUgYXJyYXkgdG8gY29uc2VydmUgbWVtb3J5LiAgV2UgbXVzdCBsb29w
IHRocm91Z2gKKyAqIGVhY2ggZXZlbnQgYW5kIHBlcmZvcm0gdGhlIHRyYXZlcnNhbCBmb3IgZWFj
aCBvbmUuIFdlIGNhbm5vdCBwZXJmb3JtIGEKKyAqIHNpbmdsZSB0cmF2ZXJzYWwgZm9yIHRoZSBl
bnRpcmUgY29sbGVjdGlvbiBvZiBldmVudHMgYmVjYXVzZSBlYWNoIGV2ZW50IG1heQorICogaGF2
ZSBhIGRpZmZlcmVudCB0YXJnZXQuCisgKi8KK2Z1bmN0aW9uIGFjY3VtdWxhdGVUd29QaGFzZURp
c3BhdGNoZXNTaW5nbGUoZXZlbnQpIHsKKyAgaWYgKGV2ZW50ICYmIGV2ZW50LmRpc3BhdGNoQ29u
ZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzKSB7CisgICAgRXZlbnRQbHVnaW5VdGlscy50cmF2
ZXJzZVR3b1BoYXNlKGV2ZW50Ll90YXJnZXRJbnN0LCBhY2N1bXVsYXRlRGlyZWN0aW9uYWxEaXNw
YXRjaGVzLCBldmVudCk7CisgIH0KK30KKworLyoqCisgKiBTYW1lIGFzIGBhY2N1bXVsYXRlVHdv
UGhhc2VEaXNwYXRjaGVzU2luZ2xlYCwgYnV0IHNraXBzIG92ZXIgdGhlIHRhcmdldElELgorICov
CitmdW5jdGlvbiBhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzU2luZ2xlU2tpcFRhcmdldChl
dmVudCkgeworICBpZiAoZXZlbnQgJiYgZXZlbnQuZGlzcGF0Y2hDb25maWcucGhhc2VkUmVnaXN0
cmF0aW9uTmFtZXMpIHsKKyAgICB2YXIgdGFyZ2V0SW5zdCA9IGV2ZW50Ll90YXJnZXRJbnN0Owor
ICAgIHZhciBwYXJlbnRJbnN0ID0gdGFyZ2V0SW5zdCA/IEV2ZW50UGx1Z2luVXRpbHMuZ2V0UGFy
ZW50SW5zdGFuY2UodGFyZ2V0SW5zdCkgOiBudWxsOworICAgIEV2ZW50UGx1Z2luVXRpbHMudHJh
dmVyc2VUd29QaGFzZShwYXJlbnRJbnN0LCBhY2N1bXVsYXRlRGlyZWN0aW9uYWxEaXNwYXRjaGVz
LCBldmVudCk7CisgIH0KK30KKworLyoqCisgKiBBY2N1bXVsYXRlcyB3aXRob3V0IHJlZ2FyZCB0
byBkaXJlY3Rpb24sIGRvZXMgbm90IGxvb2sgZm9yIHBoYXNlZAorICogcmVnaXN0cmF0aW9uIG5h
bWVzLiBTYW1lIGFzIGBhY2N1bXVsYXRlRGlyZWN0RGlzcGF0Y2hlc1NpbmdsZWAgYnV0IHdpdGhv
dXQKKyAqIHJlcXVpcmluZyB0aGF0IHRoZSBgZGlzcGF0Y2hNYXJrZXJgIGJlIHRoZSBzYW1lIGFz
IHRoZSBkaXNwYXRjaGVkIElELgorICovCitmdW5jdGlvbiBhY2N1bXVsYXRlRGlzcGF0Y2hlcyhp
bnN0LCBpZ25vcmVkRGlyZWN0aW9uLCBldmVudCkgeworICBpZiAoZXZlbnQgJiYgZXZlbnQuZGlz
cGF0Y2hDb25maWcucmVnaXN0cmF0aW9uTmFtZSkgeworICAgIHZhciByZWdpc3RyYXRpb25OYW1l
ID0gZXZlbnQuZGlzcGF0Y2hDb25maWcucmVnaXN0cmF0aW9uTmFtZTsKKyAgICB2YXIgbGlzdGVu
ZXIgPSBnZXRMaXN0ZW5lcihpbnN0LCByZWdpc3RyYXRpb25OYW1lKTsKKyAgICBpZiAobGlzdGVu
ZXIpIHsKKyAgICAgIGV2ZW50Ll9kaXNwYXRjaExpc3RlbmVycyA9IGFjY3VtdWxhdGVJbnRvKGV2
ZW50Ll9kaXNwYXRjaExpc3RlbmVycywgbGlzdGVuZXIpOworICAgICAgZXZlbnQuX2Rpc3BhdGNo
SW5zdGFuY2VzID0gYWNjdW11bGF0ZUludG8oZXZlbnQuX2Rpc3BhdGNoSW5zdGFuY2VzLCBpbnN0
KTsKKyAgICB9CisgIH0KK30KKworLyoqCisgKiBBY2N1bXVsYXRlcyBkaXNwYXRjaGVzIG9uIGFu
IGBTeW50aGV0aWNFdmVudGAsIGJ1dCBvbmx5IGZvciB0aGUKKyAqIGBkaXNwYXRjaE1hcmtlcmAu
CisgKiBAcGFyYW0ge1N5bnRoZXRpY0V2ZW50fSBldmVudAorICovCitmdW5jdGlvbiBhY2N1bXVs
YXRlRGlyZWN0RGlzcGF0Y2hlc1NpbmdsZShldmVudCkgeworICBpZiAoZXZlbnQgJiYgZXZlbnQu
ZGlzcGF0Y2hDb25maWcucmVnaXN0cmF0aW9uTmFtZSkgeworICAgIGFjY3VtdWxhdGVEaXNwYXRj
aGVzKGV2ZW50Ll90YXJnZXRJbnN0LCBudWxsLCBldmVudCk7CisgIH0KK30KKworZnVuY3Rpb24g
YWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyhldmVudHMpIHsKKyAgZm9yRWFjaEFjY3VtdWxh
dGVkKGV2ZW50cywgYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlc1NpbmdsZSk7Cit9CisKK2Z1
bmN0aW9uIGFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXNTa2lwVGFyZ2V0KGV2ZW50cykgewor
ICBmb3JFYWNoQWNjdW11bGF0ZWQoZXZlbnRzLCBhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVz
U2luZ2xlU2tpcFRhcmdldCk7Cit9CisKK2Z1bmN0aW9uIGFjY3VtdWxhdGVFbnRlckxlYXZlRGlz
cGF0Y2hlcyhsZWF2ZSwgZW50ZXIsIGZyb20sIHRvKSB7CisgIEV2ZW50UGx1Z2luVXRpbHMudHJh
dmVyc2VFbnRlckxlYXZlKGZyb20sIHRvLCBhY2N1bXVsYXRlRGlzcGF0Y2hlcywgbGVhdmUsIGVu
dGVyKTsKK30KKworZnVuY3Rpb24gYWNjdW11bGF0ZURpcmVjdERpc3BhdGNoZXMoZXZlbnRzKSB7
CisgIGZvckVhY2hBY2N1bXVsYXRlZChldmVudHMsIGFjY3VtdWxhdGVEaXJlY3REaXNwYXRjaGVz
U2luZ2xlKTsKK30KKworLyoqCisgKiBBIHNtYWxsIHNldCBvZiBwcm9wYWdhdGlvbiBwYXR0ZXJu
cywgZWFjaCBvZiB3aGljaCB3aWxsIGFjY2VwdCBhIHNtYWxsIGFtb3VudAorICogb2YgaW5mb3Jt
YXRpb24sIGFuZCBnZW5lcmF0ZSBhIHNldCBvZiAiZGlzcGF0Y2ggcmVhZHkgZXZlbnQgb2JqZWN0
cyIgLSB3aGljaAorICogYXJlIHNldHMgb2YgZXZlbnRzIHRoYXQgaGF2ZSBhbHJlYWR5IGJlZW4g
YW5ub3RhdGVkIHdpdGggYSBzZXQgb2YgZGlzcGF0Y2hlZAorICogbGlzdGVuZXIgZnVuY3Rpb25z
L2lkcy4gVGhlIEFQSSBpcyBkZXNpZ25lZCB0aGlzIHdheSB0byBkaXNjb3VyYWdlIHRoZXNlCisg
KiBwcm9wYWdhdGlvbiBzdHJhdGVnaWVzIGZyb20gYWN0dWFsbHkgZXhlY3V0aW5nIHRoZSBkaXNw
YXRjaGVzLCBzaW5jZSB3ZQorICogYWx3YXlzIHdhbnQgdG8gY29sbGVjdCB0aGUgZW50aXJlIHNl
dCBvZiBkaXNwYXRjaGVzIGJlZm9yZSBleGVjdXRpbmcgZXZlbnQgYQorICogc2luZ2xlIG9uZS4K
KyAqCisgKiBAY29uc3RydWN0b3IgRXZlbnRQcm9wYWdhdG9ycworICovCit2YXIgRXZlbnRQcm9w
YWdhdG9ycyA9IHsKKyAgYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlczogYWNjdW11bGF0ZVR3
b1BoYXNlRGlzcGF0Y2hlcywKKyAgYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlc1NraXBUYXJn
ZXQ6IGFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXNTa2lwVGFyZ2V0LAorICBhY2N1bXVsYXRl
RGlyZWN0RGlzcGF0Y2hlczogYWNjdW11bGF0ZURpcmVjdERpc3BhdGNoZXMsCisgIGFjY3VtdWxh
dGVFbnRlckxlYXZlRGlzcGF0Y2hlczogYWNjdW11bGF0ZUVudGVyTGVhdmVEaXNwYXRjaGVzCit9
OworCittb2R1bGUuZXhwb3J0cyA9IEV2ZW50UHJvcGFnYXRvcnM7Cit9LHsiMTAyIjoxMDIsIjE0
NyI6MTQ3LCIxNiI6MTYsIjE4IjoxOCwiOTUiOjk1fV0sMjA6W2Z1bmN0aW9uKF9kZXJlcV8sbW9k
dWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhl
IFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3Ry
aWN0JzsKKwordmFyIF9hc3NpZ24gPSBfZGVyZXFfKDE0OCk7CisKK3ZhciBQb29sZWRDbGFzcyA9
IF9kZXJlcV8oMjQpOworCit2YXIgZ2V0VGV4dENvbnRlbnRBY2Nlc3NvciA9IF9kZXJlcV8oMTEw
KTsKKworLyoqCisgKiBUaGlzIGhlbHBlciBjbGFzcyBzdG9yZXMgaW5mb3JtYXRpb24gYWJvdXQg
dGV4dCBjb250ZW50IG9mIGEgdGFyZ2V0IG5vZGUsCisgKiBhbGxvd2luZyBjb21wYXJpc29uIG9m
IGNvbnRlbnQgYmVmb3JlIGFuZCBhZnRlciBhIGdpdmVuIGV2ZW50LgorICoKKyAqIElkZW50aWZ5
IHRoZSBub2RlIHdoZXJlIHNlbGVjdGlvbiBjdXJyZW50bHkgYmVnaW5zLCB0aGVuIG9ic2VydmUK
KyAqIGJvdGggaXRzIHRleHQgY29udGVudCBhbmQgaXRzIGN1cnJlbnQgcG9zaXRpb24gaW4gdGhl
IERPTS4gU2luY2UgdGhlCisgKiBicm93c2VyIG1heSBuYXRpdmVseSByZXBsYWNlIHRoZSB0YXJn
ZXQgbm9kZSBkdXJpbmcgY29tcG9zaXRpb24sIHdlIGNhbgorICogdXNlIGl0cyBwb3NpdGlvbiB0
byBmaW5kIGl0cyByZXBsYWNlbWVudC4KKyAqCisgKiBAcGFyYW0ge0RPTUV2ZW50VGFyZ2V0fSBy
b290CisgKi8KK2Z1bmN0aW9uIEZhbGxiYWNrQ29tcG9zaXRpb25TdGF0ZShyb290KSB7CisgIHRo
aXMuX3Jvb3QgPSByb290OworICB0aGlzLl9zdGFydFRleHQgPSB0aGlzLmdldFRleHQoKTsKKyAg
dGhpcy5fZmFsbGJhY2tUZXh0ID0gbnVsbDsKK30KKworX2Fzc2lnbihGYWxsYmFja0NvbXBvc2l0
aW9uU3RhdGUucHJvdG90eXBlLCB7CisgIGRlc3RydWN0b3I6IGZ1bmN0aW9uICgpIHsKKyAgICB0
aGlzLl9yb290ID0gbnVsbDsKKyAgICB0aGlzLl9zdGFydFRleHQgPSBudWxsOworICAgIHRoaXMu
X2ZhbGxiYWNrVGV4dCA9IG51bGw7CisgIH0sCisKKyAgLyoqCisgICAqIEdldCBjdXJyZW50IHRl
eHQgb2YgaW5wdXQuCisgICAqCisgICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICovCisgIGdldFRl
eHQ6IGZ1bmN0aW9uICgpIHsKKyAgICBpZiAoJ3ZhbHVlJyBpbiB0aGlzLl9yb290KSB7CisgICAg
ICByZXR1cm4gdGhpcy5fcm9vdC52YWx1ZTsKKyAgICB9CisgICAgcmV0dXJuIHRoaXMuX3Jvb3Rb
Z2V0VGV4dENvbnRlbnRBY2Nlc3NvcigpXTsKKyAgfSwKKworICAvKioKKyAgICogRGV0ZXJtaW5l
IHRoZSBkaWZmZXJpbmcgc3Vic3RyaW5nIGJldHdlZW4gdGhlIGluaXRpYWxseSBzdG9yZWQKKyAg
ICogdGV4dCBjb250ZW50IGFuZCB0aGUgY3VycmVudCBjb250ZW50LgorICAgKgorICAgKiBAcmV0
dXJuIHtzdHJpbmd9CisgICAqLworICBnZXREYXRhOiBmdW5jdGlvbiAoKSB7CisgICAgaWYgKHRo
aXMuX2ZhbGxiYWNrVGV4dCkgeworICAgICAgcmV0dXJuIHRoaXMuX2ZhbGxiYWNrVGV4dDsKKyAg
ICB9CisKKyAgICB2YXIgc3RhcnQ7CisgICAgdmFyIHN0YXJ0VmFsdWUgPSB0aGlzLl9zdGFydFRl
eHQ7CisgICAgdmFyIHN0YXJ0TGVuZ3RoID0gc3RhcnRWYWx1ZS5sZW5ndGg7CisgICAgdmFyIGVu
ZDsKKyAgICB2YXIgZW5kVmFsdWUgPSB0aGlzLmdldFRleHQoKTsKKyAgICB2YXIgZW5kTGVuZ3Ro
ID0gZW5kVmFsdWUubGVuZ3RoOworCisgICAgZm9yIChzdGFydCA9IDA7IHN0YXJ0IDwgc3RhcnRM
ZW5ndGg7IHN0YXJ0KyspIHsKKyAgICAgIGlmIChzdGFydFZhbHVlW3N0YXJ0XSAhPT0gZW5kVmFs
dWVbc3RhcnRdKSB7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgIH0KKworICAgIHZhciBt
aW5FbmQgPSBzdGFydExlbmd0aCAtIHN0YXJ0OworICAgIGZvciAoZW5kID0gMTsgZW5kIDw9IG1p
bkVuZDsgZW5kKyspIHsKKyAgICAgIGlmIChzdGFydFZhbHVlW3N0YXJ0TGVuZ3RoIC0gZW5kXSAh
PT0gZW5kVmFsdWVbZW5kTGVuZ3RoIC0gZW5kXSkgeworICAgICAgICBicmVhazsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgc2xpY2VUYWlsID0gZW5kID4gMSA/IDEgLSBlbmQgOiB1bmRlZmlu
ZWQ7CisgICAgdGhpcy5fZmFsbGJhY2tUZXh0ID0gZW5kVmFsdWUuc2xpY2Uoc3RhcnQsIHNsaWNl
VGFpbCk7CisgICAgcmV0dXJuIHRoaXMuX2ZhbGxiYWNrVGV4dDsKKyAgfQorfSk7CisKK1Bvb2xl
ZENsYXNzLmFkZFBvb2xpbmdUbyhGYWxsYmFja0NvbXBvc2l0aW9uU3RhdGUpOworCittb2R1bGUu
ZXhwb3J0cyA9IEZhbGxiYWNrQ29tcG9zaXRpb25TdGF0ZTsKK30seyIxMTAiOjExMCwiMTQ4Ijox
NDgsIjI0IjoyNH1dLDIxOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgor
ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUg
QlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAq
IG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhl
IHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBET01Qcm9w
ZXJ0eSA9IF9kZXJlcV8oMTEpOworCit2YXIgTVVTVF9VU0VfUFJPUEVSVFkgPSBET01Qcm9wZXJ0
eS5pbmplY3Rpb24uTVVTVF9VU0VfUFJPUEVSVFk7Cit2YXIgSEFTX0JPT0xFQU5fVkFMVUUgPSBE
T01Qcm9wZXJ0eS5pbmplY3Rpb24uSEFTX0JPT0xFQU5fVkFMVUU7Cit2YXIgSEFTX05VTUVSSUNf
VkFMVUUgPSBET01Qcm9wZXJ0eS5pbmplY3Rpb24uSEFTX05VTUVSSUNfVkFMVUU7Cit2YXIgSEFT
X1BPU0lUSVZFX05VTUVSSUNfVkFMVUUgPSBET01Qcm9wZXJ0eS5pbmplY3Rpb24uSEFTX1BPU0lU
SVZFX05VTUVSSUNfVkFMVUU7Cit2YXIgSEFTX09WRVJMT0FERURfQk9PTEVBTl9WQUxVRSA9IERP
TVByb3BlcnR5LmluamVjdGlvbi5IQVNfT1ZFUkxPQURFRF9CT09MRUFOX1ZBTFVFOworCit2YXIg
SFRNTERPTVByb3BlcnR5Q29uZmlnID0geworICBpc0N1c3RvbUF0dHJpYnV0ZTogUmVnRXhwLnBy
b3RvdHlwZS50ZXN0LmJpbmQobmV3IFJlZ0V4cCgnXihkYXRhfGFyaWEpLVsnICsgRE9NUHJvcGVy
dHkuQVRUUklCVVRFX05BTUVfQ0hBUiArICddKiQnKSksCisgIFByb3BlcnRpZXM6IHsKKyAgICAv
KioKKyAgICAgKiBTdGFuZGFyZCBQcm9wZXJ0aWVzCisgICAgICovCisgICAgYWNjZXB0OiAwLAor
ICAgIGFjY2VwdENoYXJzZXQ6IDAsCisgICAgYWNjZXNzS2V5OiAwLAorICAgIGFjdGlvbjogMCwK
KyAgICBhbGxvd0Z1bGxTY3JlZW46IEhBU19CT09MRUFOX1ZBTFVFLAorICAgIGFsbG93VHJhbnNw
YXJlbmN5OiAwLAorICAgIGFsdDogMCwKKyAgICAvLyBzcGVjaWZpZXMgdGFyZ2V0IGNvbnRleHQg
Zm9yIGxpbmtzIHdpdGggYHByZWxvYWRgIHR5cGUKKyAgICBhczogMCwKKyAgICBhc3luYzogSEFT
X0JPT0xFQU5fVkFMVUUsCisgICAgYXV0b0NvbXBsZXRlOiAwLAorICAgIC8vIGF1dG9Gb2N1cyBp
cyBwb2x5ZmlsbGVkL25vcm1hbGl6ZWQgYnkgQXV0b0ZvY3VzVXRpbHMKKyAgICAvLyBhdXRvRm9j
dXM6IEhBU19CT09MRUFOX1ZBTFVFLAorICAgIGF1dG9QbGF5OiBIQVNfQk9PTEVBTl9WQUxVRSwK
KyAgICBjYXB0dXJlOiBIQVNfQk9PTEVBTl9WQUxVRSwKKyAgICBjZWxsUGFkZGluZzogMCwKKyAg
ICBjZWxsU3BhY2luZzogMCwKKyAgICBjaGFyU2V0OiAwLAorICAgIGNoYWxsZW5nZTogMCwKKyAg
ICBjaGVja2VkOiBNVVNUX1VTRV9QUk9QRVJUWSB8IEhBU19CT09MRUFOX1ZBTFVFLAorICAgIGNp
dGU6IDAsCisgICAgY2xhc3NJRDogMCwKKyAgICBjbGFzc05hbWU6IDAsCisgICAgY29sczogSEFT
X1BPU0lUSVZFX05VTUVSSUNfVkFMVUUsCisgICAgY29sU3BhbjogMCwKKyAgICBjb250ZW50OiAw
LAorICAgIGNvbnRlbnRFZGl0YWJsZTogMCwKKyAgICBjb250ZXh0TWVudTogMCwKKyAgICBjb250
cm9sczogSEFTX0JPT0xFQU5fVkFMVUUsCisgICAgY29vcmRzOiAwLAorICAgIGNyb3NzT3JpZ2lu
OiAwLAorICAgIGRhdGE6IDAsIC8vIEZvciBgPG9iamVjdCAvPmAgYWN0cyBhcyBgc3JjYC4KKyAg
ICBkYXRlVGltZTogMCwKKyAgICAnZGVmYXVsdCc6IEhBU19CT09MRUFOX1ZBTFVFLAorICAgIGRl
ZmVyOiBIQVNfQk9PTEVBTl9WQUxVRSwKKyAgICBkaXI6IDAsCisgICAgZGlzYWJsZWQ6IEhBU19C
T09MRUFOX1ZBTFVFLAorICAgIGRvd25sb2FkOiBIQVNfT1ZFUkxPQURFRF9CT09MRUFOX1ZBTFVF
LAorICAgIGRyYWdnYWJsZTogMCwKKyAgICBlbmNUeXBlOiAwLAorICAgIGZvcm06IDAsCisgICAg
Zm9ybUFjdGlvbjogMCwKKyAgICBmb3JtRW5jVHlwZTogMCwKKyAgICBmb3JtTWV0aG9kOiAwLAor
ICAgIGZvcm1Ob1ZhbGlkYXRlOiBIQVNfQk9PTEVBTl9WQUxVRSwKKyAgICBmb3JtVGFyZ2V0OiAw
LAorICAgIGZyYW1lQm9yZGVyOiAwLAorICAgIGhlYWRlcnM6IDAsCisgICAgaGVpZ2h0OiAwLAor
ICAgIGhpZGRlbjogSEFTX0JPT0xFQU5fVkFMVUUsCisgICAgaGlnaDogMCwKKyAgICBocmVmOiAw
LAorICAgIGhyZWZMYW5nOiAwLAorICAgIGh0bWxGb3I6IDAsCisgICAgaHR0cEVxdWl2OiAwLAor
ICAgIGljb246IDAsCisgICAgaWQ6IDAsCisgICAgaW5wdXRNb2RlOiAwLAorICAgIGludGVncml0
eTogMCwKKyAgICBpczogMCwKKyAgICBrZXlQYXJhbXM6IDAsCisgICAga2V5VHlwZTogMCwKKyAg
ICBraW5kOiAwLAorICAgIGxhYmVsOiAwLAorICAgIGxhbmc6IDAsCisgICAgbGlzdDogMCwKKyAg
ICBsb29wOiBIQVNfQk9PTEVBTl9WQUxVRSwKKyAgICBsb3c6IDAsCisgICAgbWFuaWZlc3Q6IDAs
CisgICAgbWFyZ2luSGVpZ2h0OiAwLAorICAgIG1hcmdpbldpZHRoOiAwLAorICAgIG1heDogMCwK
KyAgICBtYXhMZW5ndGg6IDAsCisgICAgbWVkaWE6IDAsCisgICAgbWVkaWFHcm91cDogMCwKKyAg
ICBtZXRob2Q6IDAsCisgICAgbWluOiAwLAorICAgIG1pbkxlbmd0aDogMCwKKyAgICAvLyBDYXV0
aW9uOyBgb3B0aW9uLnNlbGVjdGVkYCBpcyBub3QgdXBkYXRlZCBpZiBgc2VsZWN0Lm11bHRpcGxl
YCBpcworICAgIC8vIGRpc2FibGVkIHdpdGggYHJlbW92ZUF0dHJpYnV0ZWAuCisgICAgbXVsdGlw
bGU6IE1VU1RfVVNFX1BST1BFUlRZIHwgSEFTX0JPT0xFQU5fVkFMVUUsCisgICAgbXV0ZWQ6IE1V
U1RfVVNFX1BST1BFUlRZIHwgSEFTX0JPT0xFQU5fVkFMVUUsCisgICAgbmFtZTogMCwKKyAgICBu
b25jZTogMCwKKyAgICBub1ZhbGlkYXRlOiBIQVNfQk9PTEVBTl9WQUxVRSwKKyAgICBvcGVuOiBI
QVNfQk9PTEVBTl9WQUxVRSwKKyAgICBvcHRpbXVtOiAwLAorICAgIHBhdHRlcm46IDAsCisgICAg
cGxhY2Vob2xkZXI6IDAsCisgICAgcGxheXNJbmxpbmU6IEhBU19CT09MRUFOX1ZBTFVFLAorICAg
IHBvc3RlcjogMCwKKyAgICBwcmVsb2FkOiAwLAorICAgIHByb2ZpbGU6IDAsCisgICAgcmFkaW9H
cm91cDogMCwKKyAgICByZWFkT25seTogSEFTX0JPT0xFQU5fVkFMVUUsCisgICAgcmVmZXJyZXJQ
b2xpY3k6IDAsCisgICAgcmVsOiAwLAorICAgIHJlcXVpcmVkOiBIQVNfQk9PTEVBTl9WQUxVRSwK
KyAgICByZXZlcnNlZDogSEFTX0JPT0xFQU5fVkFMVUUsCisgICAgcm9sZTogMCwKKyAgICByb3dz
OiBIQVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxVRSwKKyAgICByb3dTcGFuOiBIQVNfTlVNRVJJQ19W
QUxVRSwKKyAgICBzYW5kYm94OiAwLAorICAgIHNjb3BlOiAwLAorICAgIHNjb3BlZDogSEFTX0JP
T0xFQU5fVkFMVUUsCisgICAgc2Nyb2xsaW5nOiAwLAorICAgIHNlYW1sZXNzOiBIQVNfQk9PTEVB
Tl9WQUxVRSwKKyAgICBzZWxlY3RlZDogTVVTVF9VU0VfUFJPUEVSVFkgfCBIQVNfQk9PTEVBTl9W
QUxVRSwKKyAgICBzaGFwZTogMCwKKyAgICBzaXplOiBIQVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxV
RSwKKyAgICBzaXplczogMCwKKyAgICBzcGFuOiBIQVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxVRSwK
KyAgICBzcGVsbENoZWNrOiAwLAorICAgIHNyYzogMCwKKyAgICBzcmNEb2M6IDAsCisgICAgc3Jj
TGFuZzogMCwKKyAgICBzcmNTZXQ6IDAsCisgICAgc3RhcnQ6IEhBU19OVU1FUklDX1ZBTFVFLAor
ICAgIHN0ZXA6IDAsCisgICAgc3R5bGU6IDAsCisgICAgc3VtbWFyeTogMCwKKyAgICB0YWJJbmRl
eDogMCwKKyAgICB0YXJnZXQ6IDAsCisgICAgdGl0bGU6IDAsCisgICAgLy8gU2V0dGluZyAudHlw
ZSB0aHJvd3Mgb24gbm9uLTxpbnB1dD4gdGFncworICAgIHR5cGU6IDAsCisgICAgdXNlTWFwOiAw
LAorICAgIHZhbHVlOiAwLAorICAgIHdpZHRoOiAwLAorICAgIHdtb2RlOiAwLAorICAgIHdyYXA6
IDAsCisKKyAgICAvKioKKyAgICAgKiBSREZhIFByb3BlcnRpZXMKKyAgICAgKi8KKyAgICBhYm91
dDogMCwKKyAgICBkYXRhdHlwZTogMCwKKyAgICBpbmxpc3Q6IDAsCisgICAgcHJlZml4OiAwLAor
ICAgIC8vIHByb3BlcnR5IGlzIGFsc28gc3VwcG9ydGVkIGZvciBPcGVuR3JhcGggaW4gbWV0YSB0
YWdzLgorICAgIHByb3BlcnR5OiAwLAorICAgIHJlc291cmNlOiAwLAorICAgICd0eXBlb2YnOiAw
LAorICAgIHZvY2FiOiAwLAorCisgICAgLyoqCisgICAgICogTm9uLXN0YW5kYXJkIFByb3BlcnRp
ZXMKKyAgICAgKi8KKyAgICAvLyBhdXRvQ2FwaXRhbGl6ZSBhbmQgYXV0b0NvcnJlY3QgYXJlIHN1
cHBvcnRlZCBpbiBNb2JpbGUgU2FmYXJpIGZvcgorICAgIC8vIGtleWJvYXJkIGhpbnRzLgorICAg
IGF1dG9DYXBpdGFsaXplOiAwLAorICAgIGF1dG9Db3JyZWN0OiAwLAorICAgIC8vIGF1dG9TYXZl
IGFsbG93cyBXZWJLaXQvQmxpbmsgdG8gcGVyc2lzdCB2YWx1ZXMgb2YgaW5wdXQgZmllbGRzIG9u
IHBhZ2UgcmVsb2FkcworICAgIGF1dG9TYXZlOiAwLAorICAgIC8vIGNvbG9yIGlzIGZvciBTYWZh
cmkgbWFzay1pY29uIGxpbmsKKyAgICBjb2xvcjogMCwKKyAgICAvLyBpdGVtUHJvcCwgaXRlbVNj
b3BlLCBpdGVtVHlwZSBhcmUgZm9yCisgICAgLy8gTWljcm9kYXRhIHN1cHBvcnQuIFNlZSBodHRw
Oi8vc2NoZW1hLm9yZy9kb2NzL2dzLmh0bWwKKyAgICBpdGVtUHJvcDogMCwKKyAgICBpdGVtU2Nv
cGU6IEhBU19CT09MRUFOX1ZBTFVFLAorICAgIGl0ZW1UeXBlOiAwLAorICAgIC8vIGl0ZW1JRCBh
bmQgaXRlbVJlZiBhcmUgZm9yIE1pY3JvZGF0YSBzdXBwb3J0IGFzIHdlbGwgYnV0CisgICAgLy8g
b25seSBzcGVjaWZpZWQgaW4gdGhlIFdIQVRXRyBzcGVjIGRvY3VtZW50LiBTZWUKKyAgICAvLyBo
dHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9taWNyb2RhdGEuaHRtbCNtaWNy
b2RhdGEtZG9tLWFwaQorICAgIGl0ZW1JRDogMCwKKyAgICBpdGVtUmVmOiAwLAorICAgIC8vIHJl
c3VsdHMgc2hvdyBsb29raW5nIGdsYXNzIGljb24gYW5kIHJlY2VudCBzZWFyY2hlcyBvbiBpbnB1
dAorICAgIC8vIHNlYXJjaCBmaWVsZHMgaW4gV2ViS2l0L0JsaW5rCisgICAgcmVzdWx0czogMCwK
KyAgICAvLyBJRS1vbmx5IGF0dHJpYnV0ZSB0aGF0IHNwZWNpZmllcyBzZWN1cml0eSByZXN0cmlj
dGlvbnMgb24gYW4gaWZyYW1lCisgICAgLy8gYXMgYW4gYWx0ZXJuYXRpdmUgdG8gdGhlIHNhbmRi
b3ggYXR0cmlidXRlIG9uIElFPDEwCisgICAgc2VjdXJpdHk6IDAsCisgICAgLy8gSUUtb25seSBh
dHRyaWJ1dGUgdGhhdCBjb250cm9scyBmb2N1cyBiZWhhdmlvcgorICAgIHVuc2VsZWN0YWJsZTog
MAorICB9LAorICBET01BdHRyaWJ1dGVOYW1lczogeworICAgIGFjY2VwdENoYXJzZXQ6ICdhY2Nl
cHQtY2hhcnNldCcsCisgICAgY2xhc3NOYW1lOiAnY2xhc3MnLAorICAgIGh0bWxGb3I6ICdmb3In
LAorICAgIGh0dHBFcXVpdjogJ2h0dHAtZXF1aXYnCisgIH0sCisgIERPTVByb3BlcnR5TmFtZXM6
IHt9Cit9OworCittb2R1bGUuZXhwb3J0cyA9IEhUTUxET01Qcm9wZXJ0eUNvbmZpZzsKK30seyIx
MSI6MTF9XSwyMjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENv
cHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1z
dHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRp
cmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBw
YXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1l
IGRpcmVjdG9yeS4KKyAqCisgKiAKKyAqLworCisndXNlIHN0cmljdCc7CisKKy8qKgorICogRXNj
YXBlIGFuZCB3cmFwIGtleSBzbyBpdCBpcyBzYWZlIHRvIHVzZSBhcyBhIHJlYWN0aWQKKyAqCisg
KiBAcGFyYW0ge3N0cmluZ30ga2V5IHRvIGJlIGVzY2FwZWQuCisgKiBAcmV0dXJuIHtzdHJpbmd9
IHRoZSBlc2NhcGVkIGtleS4KKyAqLworCitmdW5jdGlvbiBlc2NhcGUoa2V5KSB7CisgIHZhciBl
c2NhcGVSZWdleCA9IC9bPTpdL2c7CisgIHZhciBlc2NhcGVyTG9va3VwID0geworICAgICc9Jzog
Jz0wJywKKyAgICAnOic6ICc9MicKKyAgfTsKKyAgdmFyIGVzY2FwZWRTdHJpbmcgPSAoJycgKyBr
ZXkpLnJlcGxhY2UoZXNjYXBlUmVnZXgsIGZ1bmN0aW9uIChtYXRjaCkgeworICAgIHJldHVybiBl
c2NhcGVyTG9va3VwW21hdGNoXTsKKyAgfSk7CisKKyAgcmV0dXJuICckJyArIGVzY2FwZWRTdHJp
bmc7Cit9CisKKy8qKgorICogVW5lc2NhcGUgYW5kIHVud3JhcCBrZXkgZm9yIGh1bWFuLXJlYWRh
YmxlIGRpc3BsYXkKKyAqCisgKiBAcGFyYW0ge3N0cmluZ30ga2V5IHRvIHVuZXNjYXBlLgorICog
QHJldHVybiB7c3RyaW5nfSB0aGUgdW5lc2NhcGVkIGtleS4KKyAqLworZnVuY3Rpb24gdW5lc2Nh
cGUoa2V5KSB7CisgIHZhciB1bmVzY2FwZVJlZ2V4ID0gLyg9MHw9MikvZzsKKyAgdmFyIHVuZXNj
YXBlckxvb2t1cCA9IHsKKyAgICAnPTAnOiAnPScsCisgICAgJz0yJzogJzonCisgIH07CisgIHZh
ciBrZXlTdWJzdHJpbmcgPSBrZXlbMF0gPT09ICcuJyAmJiBrZXlbMV0gPT09ICckJyA/IGtleS5z
dWJzdHJpbmcoMikgOiBrZXkuc3Vic3RyaW5nKDEpOworCisgIHJldHVybiAoJycgKyBrZXlTdWJz
dHJpbmcpLnJlcGxhY2UodW5lc2NhcGVSZWdleCwgZnVuY3Rpb24gKG1hdGNoKSB7CisgICAgcmV0
dXJuIHVuZXNjYXBlckxvb2t1cFttYXRjaF07CisgIH0pOworfQorCit2YXIgS2V5RXNjYXBlVXRp
bHMgPSB7CisgIGVzY2FwZTogZXNjYXBlLAorICB1bmVzY2FwZTogdW5lc2NhcGUKK307CisKK21v
ZHVsZS5leHBvcnRzID0gS2V5RXNjYXBlVXRpbHM7Cit9LHt9XSwyMzpbZnVuY3Rpb24oX2RlcmVx
Xyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNv
ZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQor
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBp
biB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3Vz
ZSBzdHJpY3QnOworCit2YXIgX3Byb2RJbnZhcmlhbnQgPSBfZGVyZXFfKDExNik7CisKK3ZhciBS
ZWFjdCA9IF9kZXJlcV8oMTI0KTsKK3ZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9IF9kZXJlcV8o
NjYpOworCit2YXIgaW52YXJpYW50ID0gX2RlcmVxXygxNDApOwordmFyIHdhcm5pbmcgPSBfZGVy
ZXFfKDE0Nyk7CisKK3ZhciBoYXNSZWFkT25seVZhbHVlID0geworICAnYnV0dG9uJzogdHJ1ZSwK
KyAgJ2NoZWNrYm94JzogdHJ1ZSwKKyAgJ2ltYWdlJzogdHJ1ZSwKKyAgJ2hpZGRlbic6IHRydWUs
CisgICdyYWRpbyc6IHRydWUsCisgICdyZXNldCc6IHRydWUsCisgICdzdWJtaXQnOiB0cnVlCit9
OworCitmdW5jdGlvbiBfYXNzZXJ0U2luZ2xlTGluayhpbnB1dFByb3BzKSB7CisgICEoaW5wdXRQ
cm9wcy5jaGVja2VkTGluayA9PSBudWxsIHx8IGlucHV0UHJvcHMudmFsdWVMaW5rID09IG51bGwp
ID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnQ2Fu
bm90IHByb3ZpZGUgYSBjaGVja2VkTGluayBhbmQgYSB2YWx1ZUxpbmsuIElmIHlvdSB3YW50IHRv
IHVzZSBjaGVja2VkTGluaywgeW91IHByb2JhYmx5IGRvblwndCB3YW50IHRvIHVzZSB2YWx1ZUxp
bmsgYW5kIHZpY2UgdmVyc2EuJykgOiBfcHJvZEludmFyaWFudCgnODcnKSA6IHZvaWQgMDsKK30K
K2Z1bmN0aW9uIF9hc3NlcnRWYWx1ZUxpbmsoaW5wdXRQcm9wcykgeworICBfYXNzZXJ0U2luZ2xl
TGluayhpbnB1dFByb3BzKTsKKyAgIShpbnB1dFByb3BzLnZhbHVlID09IG51bGwgJiYgaW5wdXRQ
cm9wcy5vbkNoYW5nZSA9PSBudWxsKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/
IGludmFyaWFudChmYWxzZSwgJ0Nhbm5vdCBwcm92aWRlIGEgdmFsdWVMaW5rIGFuZCBhIHZhbHVl
IG9yIG9uQ2hhbmdlIGV2ZW50LiBJZiB5b3Ugd2FudCB0byB1c2UgdmFsdWUgb3Igb25DaGFuZ2Us
IHlvdSBwcm9iYWJseSBkb25cJ3Qgd2FudCB0byB1c2UgdmFsdWVMaW5rLicpIDogX3Byb2RJbnZh
cmlhbnQoJzg4JykgOiB2b2lkIDA7Cit9CisKK2Z1bmN0aW9uIF9hc3NlcnRDaGVja2VkTGluayhp
bnB1dFByb3BzKSB7CisgIF9hc3NlcnRTaW5nbGVMaW5rKGlucHV0UHJvcHMpOworICAhKGlucHV0
UHJvcHMuY2hlY2tlZCA9PSBudWxsICYmIGlucHV0UHJvcHMub25DaGFuZ2UgPT0gbnVsbCkgPyAi
ZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdDYW5ub3Qg
cHJvdmlkZSBhIGNoZWNrZWRMaW5rIGFuZCBhIGNoZWNrZWQgcHJvcGVydHkgb3Igb25DaGFuZ2Ug
ZXZlbnQuIElmIHlvdSB3YW50IHRvIHVzZSBjaGVja2VkIG9yIG9uQ2hhbmdlLCB5b3UgcHJvYmFi
bHkgZG9uXCd0IHdhbnQgdG8gdXNlIGNoZWNrZWRMaW5rJykgOiBfcHJvZEludmFyaWFudCgnODkn
KSA6IHZvaWQgMDsKK30KKwordmFyIHByb3BUeXBlcyA9IHsKKyAgdmFsdWU6IGZ1bmN0aW9uIChw
cm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUpIHsKKyAgICBpZiAoIXByb3BzW3Byb3BOYW1l
XSB8fCBoYXNSZWFkT25seVZhbHVlW3Byb3BzLnR5cGVdIHx8IHByb3BzLm9uQ2hhbmdlIHx8IHBy
b3BzLnJlYWRPbmx5IHx8IHByb3BzLmRpc2FibGVkKSB7CisgICAgICByZXR1cm4gbnVsbDsKKyAg
ICB9CisgICAgcmV0dXJuIG5ldyBFcnJvcignWW91IHByb3ZpZGVkIGEgYHZhbHVlYCBwcm9wIHRv
IGEgZm9ybSBmaWVsZCB3aXRob3V0IGFuICcgKyAnYG9uQ2hhbmdlYCBoYW5kbGVyLiBUaGlzIHdp
bGwgcmVuZGVyIGEgcmVhZC1vbmx5IGZpZWxkLiBJZiAnICsgJ3RoZSBmaWVsZCBzaG91bGQgYmUg
bXV0YWJsZSB1c2UgYGRlZmF1bHRWYWx1ZWAuIE90aGVyd2lzZSwgJyArICdzZXQgZWl0aGVyIGBv
bkNoYW5nZWAgb3IgYHJlYWRPbmx5YC4nKTsKKyAgfSwKKyAgY2hlY2tlZDogZnVuY3Rpb24gKHBy
b3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSkgeworICAgIGlmICghcHJvcHNbcHJvcE5hbWVd
IHx8IHByb3BzLm9uQ2hhbmdlIHx8IHByb3BzLnJlYWRPbmx5IHx8IHByb3BzLmRpc2FibGVkKSB7
CisgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisgICAgcmV0dXJuIG5ldyBFcnJvcignWW91IHBy
b3ZpZGVkIGEgYGNoZWNrZWRgIHByb3AgdG8gYSBmb3JtIGZpZWxkIHdpdGhvdXQgYW4gJyArICdg
b25DaGFuZ2VgIGhhbmRsZXIuIFRoaXMgd2lsbCByZW5kZXIgYSByZWFkLW9ubHkgZmllbGQuIElm
ICcgKyAndGhlIGZpZWxkIHNob3VsZCBiZSBtdXRhYmxlIHVzZSBgZGVmYXVsdENoZWNrZWRgLiBP
dGhlcndpc2UsICcgKyAnc2V0IGVpdGhlciBgb25DaGFuZ2VgIG9yIGByZWFkT25seWAuJyk7Cisg
IH0sCisgIG9uQ2hhbmdlOiBSZWFjdC5Qcm9wVHlwZXMuZnVuYworfTsKKwordmFyIGxvZ2dlZFR5
cGVGYWlsdXJlcyA9IHt9OworZnVuY3Rpb24gZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKG93
bmVyKSB7CisgIGlmIChvd25lcikgeworICAgIHZhciBuYW1lID0gb3duZXIuZ2V0TmFtZSgpOwor
ICAgIGlmIChuYW1lKSB7CisgICAgICByZXR1cm4gJyBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBv
ZiBgJyArIG5hbWUgKyAnYC4nOworICAgIH0KKyAgfQorICByZXR1cm4gJyc7Cit9CisKKy8qKgor
ICogUHJvdmlkZSBhIGxpbmtlZCBgdmFsdWVgIGF0dHJpYnV0ZSBmb3IgY29udHJvbGxlZCBmb3Jt
cy4gWW91IHNob3VsZCBub3QgdXNlCisgKiB0aGlzIG91dHNpZGUgb2YgdGhlIFJlYWN0RE9NIGNv
bnRyb2xsZWQgZm9ybSBjb21wb25lbnRzLgorICovCit2YXIgTGlua2VkVmFsdWVVdGlscyA9IHsK
KyAgY2hlY2tQcm9wVHlwZXM6IGZ1bmN0aW9uICh0YWdOYW1lLCBwcm9wcywgb3duZXIpIHsKKyAg
ICBmb3IgKHZhciBwcm9wTmFtZSBpbiBwcm9wVHlwZXMpIHsKKyAgICAgIGlmIChwcm9wVHlwZXMu
aGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7CisgICAgICAgIHZhciBlcnJvciA9IHByb3BUeXBl
c1twcm9wTmFtZV0ocHJvcHMsIHByb3BOYW1lLCB0YWdOYW1lLCAncHJvcCcsIG51bGwsIFJlYWN0
UHJvcFR5cGVzU2VjcmV0KTsKKyAgICAgIH0KKyAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVy
cm9yICYmICEoZXJyb3IubWVzc2FnZSBpbiBsb2dnZWRUeXBlRmFpbHVyZXMpKSB7CisgICAgICAg
IC8vIE9ubHkgbW9uaXRvciB0aGlzIGZhaWx1cmUgb25jZSBiZWNhdXNlIHRoZXJlIHRlbmRzIHRv
IGJlIGEgbG90IG9mIHRoZQorICAgICAgICAvLyBzYW1lIGVycm9yLgorICAgICAgICBsb2dnZWRU
eXBlRmFpbHVyZXNbZXJyb3IubWVzc2FnZV0gPSB0cnVlOworCisgICAgICAgIHZhciBhZGRlbmR1
bSA9IGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bShvd25lcik7CisgICAgICAgICJkZXZlbG9w
bWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdGYWlsZWQgZm9ybSBwcm9w
VHlwZTogJXMlcycsIGVycm9yLm1lc3NhZ2UsIGFkZGVuZHVtKSA6IHZvaWQgMDsKKyAgICAgIH0K
KyAgICB9CisgIH0sCisKKyAgLyoqCisgICAqIEBwYXJhbSB7b2JqZWN0fSBpbnB1dFByb3BzIFBy
b3BzIGZvciBmb3JtIGNvbXBvbmVudAorICAgKiBAcmV0dXJuIHsqfSBjdXJyZW50IHZhbHVlIG9m
IHRoZSBpbnB1dCBlaXRoZXIgZnJvbSB2YWx1ZSBwcm9wIG9yIGxpbmsuCisgICAqLworICBnZXRW
YWx1ZTogZnVuY3Rpb24gKGlucHV0UHJvcHMpIHsKKyAgICBpZiAoaW5wdXRQcm9wcy52YWx1ZUxp
bmspIHsKKyAgICAgIF9hc3NlcnRWYWx1ZUxpbmsoaW5wdXRQcm9wcyk7CisgICAgICByZXR1cm4g
aW5wdXRQcm9wcy52YWx1ZUxpbmsudmFsdWU7CisgICAgfQorICAgIHJldHVybiBpbnB1dFByb3Bz
LnZhbHVlOworICB9LAorCisgIC8qKgorICAgKiBAcGFyYW0ge29iamVjdH0gaW5wdXRQcm9wcyBQ
cm9wcyBmb3IgZm9ybSBjb21wb25lbnQKKyAgICogQHJldHVybiB7Kn0gY3VycmVudCBjaGVja2Vk
IHN0YXR1cyBvZiB0aGUgaW5wdXQgZWl0aGVyIGZyb20gY2hlY2tlZCBwcm9wCisgICAqICAgICAg
ICAgICAgIG9yIGxpbmsuCisgICAqLworICBnZXRDaGVja2VkOiBmdW5jdGlvbiAoaW5wdXRQcm9w
cykgeworICAgIGlmIChpbnB1dFByb3BzLmNoZWNrZWRMaW5rKSB7CisgICAgICBfYXNzZXJ0Q2hl
Y2tlZExpbmsoaW5wdXRQcm9wcyk7CisgICAgICByZXR1cm4gaW5wdXRQcm9wcy5jaGVja2VkTGlu
ay52YWx1ZTsKKyAgICB9CisgICAgcmV0dXJuIGlucHV0UHJvcHMuY2hlY2tlZDsKKyAgfSwKKwor
ICAvKioKKyAgICogQHBhcmFtIHtvYmplY3R9IGlucHV0UHJvcHMgUHJvcHMgZm9yIGZvcm0gY29t
cG9uZW50CisgICAqIEBwYXJhbSB7U3ludGhldGljRXZlbnR9IGV2ZW50IGNoYW5nZSBldmVudCB0
byBoYW5kbGUKKyAgICovCisgIGV4ZWN1dGVPbkNoYW5nZTogZnVuY3Rpb24gKGlucHV0UHJvcHMs
IGV2ZW50KSB7CisgICAgaWYgKGlucHV0UHJvcHMudmFsdWVMaW5rKSB7CisgICAgICBfYXNzZXJ0
VmFsdWVMaW5rKGlucHV0UHJvcHMpOworICAgICAgcmV0dXJuIGlucHV0UHJvcHMudmFsdWVMaW5r
LnJlcXVlc3RDaGFuZ2UoZXZlbnQudGFyZ2V0LnZhbHVlKTsKKyAgICB9IGVsc2UgaWYgKGlucHV0
UHJvcHMuY2hlY2tlZExpbmspIHsKKyAgICAgIF9hc3NlcnRDaGVja2VkTGluayhpbnB1dFByb3Bz
KTsKKyAgICAgIHJldHVybiBpbnB1dFByb3BzLmNoZWNrZWRMaW5rLnJlcXVlc3RDaGFuZ2UoZXZl
bnQudGFyZ2V0LmNoZWNrZWQpOworICAgIH0gZWxzZSBpZiAoaW5wdXRQcm9wcy5vbkNoYW5nZSkg
eworICAgICAgcmV0dXJuIGlucHV0UHJvcHMub25DaGFuZ2UuY2FsbCh1bmRlZmluZWQsIGV2ZW50
KTsKKyAgICB9CisgIH0KK307CisKK21vZHVsZS5leHBvcnRzID0gTGlua2VkVmFsdWVVdGlsczsK
K30seyIxMTYiOjExNiwiMTI0IjoxMjQsIjE0MCI6MTQwLCIxNDciOjE0NywiNjYiOjY2fV0sMjQ6
W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAx
My1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5z
ZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2Yg
dGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0
cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnku
CisgKgorICogCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJbnZhcmlhbnQgPSBf
ZGVyZXFfKDExNik7CisKK3ZhciBpbnZhcmlhbnQgPSBfZGVyZXFfKDE0MCk7CisKKy8qKgorICog
U3RhdGljIHBvb2xlcnMuIFNldmVyYWwgY3VzdG9tIHZlcnNpb25zIGZvciBlYWNoIHBvdGVudGlh
bCBudW1iZXIgb2YKKyAqIGFyZ3VtZW50cy4gQSBjb21wbGV0ZWx5IGdlbmVyaWMgcG9vbGVyIGlz
IGVhc3kgdG8gaW1wbGVtZW50LCBidXQgd291bGQKKyAqIHJlcXVpcmUgYWNjZXNzaW5nIHRoZSBg
YXJndW1lbnRzYCBvYmplY3QuIEluIGVhY2ggb2YgdGhlc2UsIGB0aGlzYCByZWZlcnMgdG8KKyAq
IHRoZSBDbGFzcyBpdHNlbGYsIG5vdCBhbiBpbnN0YW5jZS4gSWYgYW55IG90aGVycyBhcmUgbmVl
ZGVkLCBzaW1wbHkgYWRkIHRoZW0KKyAqIGhlcmUsIG9yIGluIHRoZWlyIG93biBmaWxlcy4KKyAq
LwordmFyIG9uZUFyZ3VtZW50UG9vbGVyID0gZnVuY3Rpb24gKGNvcHlGaWVsZHNGcm9tKSB7Cisg
IHZhciBLbGFzcyA9IHRoaXM7CisgIGlmIChLbGFzcy5pbnN0YW5jZVBvb2wubGVuZ3RoKSB7Cisg
ICAgdmFyIGluc3RhbmNlID0gS2xhc3MuaW5zdGFuY2VQb29sLnBvcCgpOworICAgIEtsYXNzLmNh
bGwoaW5zdGFuY2UsIGNvcHlGaWVsZHNGcm9tKTsKKyAgICByZXR1cm4gaW5zdGFuY2U7CisgIH0g
ZWxzZSB7CisgICAgcmV0dXJuIG5ldyBLbGFzcyhjb3B5RmllbGRzRnJvbSk7CisgIH0KK307CisK
K3ZhciB0d29Bcmd1bWVudFBvb2xlciA9IGZ1bmN0aW9uIChhMSwgYTIpIHsKKyAgdmFyIEtsYXNz
ID0gdGhpczsKKyAgaWYgKEtsYXNzLmluc3RhbmNlUG9vbC5sZW5ndGgpIHsKKyAgICB2YXIgaW5z
dGFuY2UgPSBLbGFzcy5pbnN0YW5jZVBvb2wucG9wKCk7CisgICAgS2xhc3MuY2FsbChpbnN0YW5j
ZSwgYTEsIGEyKTsKKyAgICByZXR1cm4gaW5zdGFuY2U7CisgIH0gZWxzZSB7CisgICAgcmV0dXJu
IG5ldyBLbGFzcyhhMSwgYTIpOworICB9Cit9OworCit2YXIgdGhyZWVBcmd1bWVudFBvb2xlciA9
IGZ1bmN0aW9uIChhMSwgYTIsIGEzKSB7CisgIHZhciBLbGFzcyA9IHRoaXM7CisgIGlmIChLbGFz
cy5pbnN0YW5jZVBvb2wubGVuZ3RoKSB7CisgICAgdmFyIGluc3RhbmNlID0gS2xhc3MuaW5zdGFu
Y2VQb29sLnBvcCgpOworICAgIEtsYXNzLmNhbGwoaW5zdGFuY2UsIGExLCBhMiwgYTMpOworICAg
IHJldHVybiBpbnN0YW5jZTsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gbmV3IEtsYXNzKGExLCBh
MiwgYTMpOworICB9Cit9OworCit2YXIgZm91ckFyZ3VtZW50UG9vbGVyID0gZnVuY3Rpb24gKGEx
LCBhMiwgYTMsIGE0KSB7CisgIHZhciBLbGFzcyA9IHRoaXM7CisgIGlmIChLbGFzcy5pbnN0YW5j
ZVBvb2wubGVuZ3RoKSB7CisgICAgdmFyIGluc3RhbmNlID0gS2xhc3MuaW5zdGFuY2VQb29sLnBv
cCgpOworICAgIEtsYXNzLmNhbGwoaW5zdGFuY2UsIGExLCBhMiwgYTMsIGE0KTsKKyAgICByZXR1
cm4gaW5zdGFuY2U7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIG5ldyBLbGFzcyhhMSwgYTIsIGEz
LCBhNCk7CisgIH0KK307CisKK3ZhciBmaXZlQXJndW1lbnRQb29sZXIgPSBmdW5jdGlvbiAoYTEs
IGEyLCBhMywgYTQsIGE1KSB7CisgIHZhciBLbGFzcyA9IHRoaXM7CisgIGlmIChLbGFzcy5pbnN0
YW5jZVBvb2wubGVuZ3RoKSB7CisgICAgdmFyIGluc3RhbmNlID0gS2xhc3MuaW5zdGFuY2VQb29s
LnBvcCgpOworICAgIEtsYXNzLmNhbGwoaW5zdGFuY2UsIGExLCBhMiwgYTMsIGE0LCBhNSk7Cisg
ICAgcmV0dXJuIGluc3RhbmNlOworICB9IGVsc2UgeworICAgIHJldHVybiBuZXcgS2xhc3MoYTEs
IGEyLCBhMywgYTQsIGE1KTsKKyAgfQorfTsKKwordmFyIHN0YW5kYXJkUmVsZWFzZXIgPSBmdW5j
dGlvbiAoaW5zdGFuY2UpIHsKKyAgdmFyIEtsYXNzID0gdGhpczsKKyAgIShpbnN0YW5jZSBpbnN0
YW5jZW9mIEtsYXNzKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFu
dChmYWxzZSwgJ1RyeWluZyB0byByZWxlYXNlIGFuIGluc3RhbmNlIGludG8gYSBwb29sIG9mIGEg
ZGlmZmVyZW50IHR5cGUuJykgOiBfcHJvZEludmFyaWFudCgnMjUnKSA6IHZvaWQgMDsKKyAgaW5z
dGFuY2UuZGVzdHJ1Y3RvcigpOworICBpZiAoS2xhc3MuaW5zdGFuY2VQb29sLmxlbmd0aCA8IEts
YXNzLnBvb2xTaXplKSB7CisgICAgS2xhc3MuaW5zdGFuY2VQb29sLnB1c2goaW5zdGFuY2UpOwor
ICB9Cit9OworCit2YXIgREVGQVVMVF9QT09MX1NJWkUgPSAxMDsKK3ZhciBERUZBVUxUX1BPT0xF
UiA9IG9uZUFyZ3VtZW50UG9vbGVyOworCisvKioKKyAqIEF1Z21lbnRzIGBDb3B5Q29uc3RydWN0
b3JgIHRvIGJlIGEgcG9vbGFibGUgY2xhc3MsIGF1Z21lbnRpbmcgb25seSB0aGUgY2xhc3MKKyAq
IGl0c2VsZiAoc3RhdGljYWxseSkgbm90IGFkZGluZyBhbnkgcHJvdG90eXBpY2FsIGZpZWxkcy4g
QW55IENvcHlDb25zdHJ1Y3RvcgorICogeW91IGdpdmUgdGhpcyBtYXkgaGF2ZSBhIGBwb29sU2l6
ZWAgcHJvcGVydHksIGFuZCB3aWxsIGxvb2sgZm9yIGEKKyAqIHByb3RvdHlwaWNhbCBgZGVzdHJ1
Y3RvcmAgb24gaW5zdGFuY2VzLgorICoKKyAqIEBwYXJhbSB7RnVuY3Rpb259IENvcHlDb25zdHJ1
Y3RvciBDb25zdHJ1Y3RvciB0aGF0IGNhbiBiZSB1c2VkIHRvIHJlc2V0LgorICogQHBhcmFtIHtG
dW5jdGlvbn0gcG9vbGVyIEN1c3RvbWl6YWJsZSBwb29sZXIuCisgKi8KK3ZhciBhZGRQb29saW5n
VG8gPSBmdW5jdGlvbiAoQ29weUNvbnN0cnVjdG9yLCBwb29sZXIpIHsKKyAgLy8gQ2FzdGluZyBh
cyBhbnkgc28gdGhhdCBmbG93IGlnbm9yZXMgdGhlIGFjdHVhbCBpbXBsZW1lbnRhdGlvbiBhbmQg
dHJ1c3RzCisgIC8vIGl0IHRvIG1hdGNoIHRoZSB0eXBlIHdlIGRlY2xhcmVkCisgIHZhciBOZXdL
bGFzcyA9IENvcHlDb25zdHJ1Y3RvcjsKKyAgTmV3S2xhc3MuaW5zdGFuY2VQb29sID0gW107Cisg
IE5ld0tsYXNzLmdldFBvb2xlZCA9IHBvb2xlciB8fCBERUZBVUxUX1BPT0xFUjsKKyAgaWYgKCFO
ZXdLbGFzcy5wb29sU2l6ZSkgeworICAgIE5ld0tsYXNzLnBvb2xTaXplID0gREVGQVVMVF9QT09M
X1NJWkU7CisgIH0KKyAgTmV3S2xhc3MucmVsZWFzZSA9IHN0YW5kYXJkUmVsZWFzZXI7CisgIHJl
dHVybiBOZXdLbGFzczsKK307CisKK3ZhciBQb29sZWRDbGFzcyA9IHsKKyAgYWRkUG9vbGluZ1Rv
OiBhZGRQb29saW5nVG8sCisgIG9uZUFyZ3VtZW50UG9vbGVyOiBvbmVBcmd1bWVudFBvb2xlciwK
KyAgdHdvQXJndW1lbnRQb29sZXI6IHR3b0FyZ3VtZW50UG9vbGVyLAorICB0aHJlZUFyZ3VtZW50
UG9vbGVyOiB0aHJlZUFyZ3VtZW50UG9vbGVyLAorICBmb3VyQXJndW1lbnRQb29sZXI6IGZvdXJB
cmd1bWVudFBvb2xlciwKKyAgZml2ZUFyZ3VtZW50UG9vbGVyOiBmaXZlQXJndW1lbnRQb29sZXIK
K307CisKK21vZHVsZS5leHBvcnRzID0gUG9vbGVkQ2xhc3M7Cit9LHsiMTE2IjoxMTYsIjE0MCI6
MTQwfV0sMjU6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5
cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5
bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJl
Y3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0
ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9hc3NpZ24gPSBfZGVy
ZXFfKDE0OCk7CisKK3ZhciBFdmVudFBsdWdpblJlZ2lzdHJ5ID0gX2RlcmVxXygxNyk7Cit2YXIg
UmVhY3RFdmVudEVtaXR0ZXJNaXhpbiA9IF9kZXJlcV8oNTEpOwordmFyIFZpZXdwb3J0TWV0cmlj
cyA9IF9kZXJlcV8oOTQpOworCit2YXIgZ2V0VmVuZG9yUHJlZml4ZWRFdmVudE5hbWUgPSBfZGVy
ZXFfKDExMSk7Cit2YXIgaXNFdmVudFN1cHBvcnRlZCA9IF9kZXJlcV8oMTEzKTsKKworLyoqCisg
KiBTdW1tYXJ5IG9mIGBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXJgIGV2ZW50IGhhbmRsaW5nOgor
ICoKKyAqICAtIFRvcC1sZXZlbCBkZWxlZ2F0aW9uIGlzIHVzZWQgdG8gdHJhcCBtb3N0IG5hdGl2
ZSBicm93c2VyIGV2ZW50cy4gVGhpcworICogICAgbWF5IG9ubHkgb2NjdXIgaW4gdGhlIG1haW4g
dGhyZWFkIGFuZCBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YKKyAqICAgIFJlYWN0RXZlbnRMaXN0
ZW5lciwgd2hpY2ggaXMgaW5qZWN0ZWQgYW5kIGNhbiB0aGVyZWZvcmUgc3VwcG9ydCBwbHVnZ2Fi
bGUKKyAqICAgIGV2ZW50IHNvdXJjZXMuIFRoaXMgaXMgdGhlIG9ubHkgd29yayB0aGF0IG9jY3Vy
cyBpbiB0aGUgbWFpbiB0aHJlYWQuCisgKgorICogIC0gV2Ugbm9ybWFsaXplIGFuZCBkZS1kdXBs
aWNhdGUgZXZlbnRzIHRvIGFjY291bnQgZm9yIGJyb3dzZXIgcXVpcmtzLiBUaGlzCisgKiAgICBt
YXkgYmUgZG9uZSBpbiB0aGUgd29ya2VyIHRocmVhZC4KKyAqCisgKiAgLSBGb3J3YXJkIHRoZXNl
IG5hdGl2ZSBldmVudHMgKHdpdGggdGhlIGFzc29jaWF0ZWQgdG9wLWxldmVsIHR5cGUgdXNlZCB0
bworICogICAgdHJhcCBpdCkgdG8gYEV2ZW50UGx1Z2luSHViYCwgd2hpY2ggaW4gdHVybiB3aWxs
IGFzayBwbHVnaW5zIGlmIHRoZXkgd2FudAorICogICAgdG8gZXh0cmFjdCBhbnkgc3ludGhldGlj
IGV2ZW50cy4KKyAqCisgKiAgLSBUaGUgYEV2ZW50UGx1Z2luSHViYCB3aWxsIHRoZW4gcHJvY2Vz
cyBlYWNoIGV2ZW50IGJ5IGFubm90YXRpbmcgdGhlbSB3aXRoCisgKiAgICAiZGlzcGF0Y2hlcyIs
IGEgc2VxdWVuY2Ugb2YgbGlzdGVuZXJzIGFuZCBJRHMgdGhhdCBjYXJlIGFib3V0IHRoYXQgZXZl
bnQuCisgKgorICogIC0gVGhlIGBFdmVudFBsdWdpbkh1YmAgdGhlbiBkaXNwYXRjaGVzIHRoZSBl
dmVudHMuCisgKgorICogT3ZlcnZpZXcgb2YgUmVhY3QgYW5kIHRoZSBldmVudCBzeXN0ZW06Cisg
KgorICogKy0tLS0tLS0tLS0tLSsgICAgLgorICogfCAgICBET00gICAgIHwgICAgLgorICogKy0t
LS0tLS0tLS0tLSsgICAgLgorICogICAgICAgfCAgICAgICAgICAgLgorICogICAgICAgdiAgICAg
ICAgICAgLgorICogKy0tLS0tLS0tLS0tLSsgICAgLgorICogfCBSZWFjdEV2ZW50IHwgICAgLgor
ICogfCAgTGlzdGVuZXIgIHwgICAgLgorICogKy0tLS0tLS0tLS0tLSsgICAgLiAgICAgICAgICAg
ICAgICAgICAgICAgICArLS0tLS0tLS0tLS0rCisgKiAgICAgICB8ICAgICAgICAgICAuICAgICAg
ICAgICAgICAgKy0tLS0tLS0tK3xTaW1wbGVFdmVudHwKKyAqICAgICAgIHwgICAgICAgICAgIC4g
ICAgICAgICAgICAgICB8ICAgICAgICAgfFBsdWdpbiAgICAgfAorICogKy0tLS0tfC0tLS0tLSsg
ICAgLiAgICAgICAgICAgICAgIHYgICAgICAgICArLS0tLS0tLS0tLS0rCisgKiB8ICAgICB8ICAg
ICAgfCAgICAuICAgICstLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICAgICAgICstLS0tLS0t
LS0tLS0rCisgKiB8ICAgICArLS0tLS0tLS0tLS0uLS0tPnxFdmVudFBsdWdpbkh1YnwgICAgICAg
ICAgICAgICAgICAgIHwgICAgRXZlbnQgICB8CisgKiB8ICAgICAgICAgICAgfCAgICAuICAgIHwg
ICAgICAgICAgICAgIHwgICAgICstLS0tLS0tLS0tLSsgIHwgUHJvcGFnYXRvcnN8CisgKiB8IFJl
YWN0RXZlbnQgfCAgICAuICAgIHwgICAgICAgICAgICAgIHwgICAgIHxUYXBFdmVudCAgIHwgIHwt
LS0tLS0tLS0tLS18CisgKiB8ICBFbWl0dGVyICAgfCAgICAuICAgIHwgICAgICAgICAgICAgIHw8
LS0tK3xQbHVnaW4gICAgIHwgIHxvdGhlciBwbHVnaW58CisgKiB8ICAgICAgICAgICAgfCAgICAu
ICAgIHwgICAgICAgICAgICAgIHwgICAgICstLS0tLS0tLS0tLSsgIHwgIHV0aWxpdGllcyB8Cisg
KiB8ICAgICArLS0tLS0tLS0tLS0uLS0tPnwgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAg
ICAgICstLS0tLS0tLS0tLS0rCisgKiB8ICAgICB8ICAgICAgfCAgICAuICAgICstLS0tLS0tLS0t
LS0tLSsKKyAqICstLS0tLXwtLS0tLS0rICAgIC4gICAgICAgICAgICAgICAgXiAgICAgICAgKy0t
LS0tLS0tLS0tKworICogICAgICAgfCAgICAgICAgICAgLiAgICAgICAgICAgICAgICB8ICAgICAg
ICB8RW50ZXIvTGVhdmV8CisgKiAgICAgICArICAgICAgICAgICAuICAgICAgICAgICAgICAgICst
LS0tLS0tK3xQbHVnaW4gICAgIHwKKyAqICstLS0tLS0tLS0tLS0tKyAgIC4gICAgICAgICAgICAg
ICAgICAgICAgICAgKy0tLS0tLS0tLS0tKworICogfCBhcHBsaWNhdGlvbiB8ICAgLgorICogfC0t
LS0tLS0tLS0tLS18ICAgLgorICogfCAgICAgICAgICAgICB8ICAgLgorICogfCAgICAgICAgICAg
ICB8ICAgLgorICogKy0tLS0tLS0tLS0tLS0rICAgLgorICogICAgICAgICAgICAgICAgICAgLgor
ICogICAgUmVhY3QgQ29yZSAgICAgLiAgR2VuZXJhbCBQdXJwb3NlIEV2ZW50IFBsdWdpbiBTeXN0
ZW0KKyAqLworCit2YXIgaGFzRXZlbnRQYWdlWFk7Cit2YXIgYWxyZWFkeUxpc3RlbmluZ1RvID0g
e307Cit2YXIgaXNNb25pdG9yaW5nU2Nyb2xsVmFsdWUgPSBmYWxzZTsKK3ZhciByZWFjdFRvcExp
c3RlbmVyc0NvdW50ZXIgPSAwOworCisvLyBGb3IgZXZlbnRzIGxpa2UgJ3N1Ym1pdCcgd2hpY2gg
ZG9uJ3QgY29uc2lzdGVudGx5IGJ1YmJsZSAod2hpY2ggd2UgdHJhcCBhdCBhCisvLyBsb3dlciBu
b2RlIHRoYW4gYGRvY3VtZW50YCksIGJpbmRpbmcgYXQgYGRvY3VtZW50YCB3b3VsZCBjYXVzZSBk
dXBsaWNhdGUKKy8vIGV2ZW50cyBzbyB3ZSBkb24ndCBpbmNsdWRlIHRoZW0gaGVyZQordmFyIHRv
cEV2ZW50TWFwcGluZyA9IHsKKyAgdG9wQWJvcnQ6ICdhYm9ydCcsCisgIHRvcEFuaW1hdGlvbkVu
ZDogZ2V0VmVuZG9yUHJlZml4ZWRFdmVudE5hbWUoJ2FuaW1hdGlvbmVuZCcpIHx8ICdhbmltYXRp
b25lbmQnLAorICB0b3BBbmltYXRpb25JdGVyYXRpb246IGdldFZlbmRvclByZWZpeGVkRXZlbnRO
YW1lKCdhbmltYXRpb25pdGVyYXRpb24nKSB8fCAnYW5pbWF0aW9uaXRlcmF0aW9uJywKKyAgdG9w
QW5pbWF0aW9uU3RhcnQ6IGdldFZlbmRvclByZWZpeGVkRXZlbnROYW1lKCdhbmltYXRpb25zdGFy
dCcpIHx8ICdhbmltYXRpb25zdGFydCcsCisgIHRvcEJsdXI6ICdibHVyJywKKyAgdG9wQ2FuUGxh
eTogJ2NhbnBsYXknLAorICB0b3BDYW5QbGF5VGhyb3VnaDogJ2NhbnBsYXl0aHJvdWdoJywKKyAg
dG9wQ2hhbmdlOiAnY2hhbmdlJywKKyAgdG9wQ2xpY2s6ICdjbGljaycsCisgIHRvcENvbXBvc2l0
aW9uRW5kOiAnY29tcG9zaXRpb25lbmQnLAorICB0b3BDb21wb3NpdGlvblN0YXJ0OiAnY29tcG9z
aXRpb25zdGFydCcsCisgIHRvcENvbXBvc2l0aW9uVXBkYXRlOiAnY29tcG9zaXRpb251cGRhdGUn
LAorICB0b3BDb250ZXh0TWVudTogJ2NvbnRleHRtZW51JywKKyAgdG9wQ29weTogJ2NvcHknLAor
ICB0b3BDdXQ6ICdjdXQnLAorICB0b3BEb3VibGVDbGljazogJ2RibGNsaWNrJywKKyAgdG9wRHJh
ZzogJ2RyYWcnLAorICB0b3BEcmFnRW5kOiAnZHJhZ2VuZCcsCisgIHRvcERyYWdFbnRlcjogJ2Ry
YWdlbnRlcicsCisgIHRvcERyYWdFeGl0OiAnZHJhZ2V4aXQnLAorICB0b3BEcmFnTGVhdmU6ICdk
cmFnbGVhdmUnLAorICB0b3BEcmFnT3ZlcjogJ2RyYWdvdmVyJywKKyAgdG9wRHJhZ1N0YXJ0OiAn
ZHJhZ3N0YXJ0JywKKyAgdG9wRHJvcDogJ2Ryb3AnLAorICB0b3BEdXJhdGlvbkNoYW5nZTogJ2R1
cmF0aW9uY2hhbmdlJywKKyAgdG9wRW1wdGllZDogJ2VtcHRpZWQnLAorICB0b3BFbmNyeXB0ZWQ6
ICdlbmNyeXB0ZWQnLAorICB0b3BFbmRlZDogJ2VuZGVkJywKKyAgdG9wRXJyb3I6ICdlcnJvcics
CisgIHRvcEZvY3VzOiAnZm9jdXMnLAorICB0b3BJbnB1dDogJ2lucHV0JywKKyAgdG9wS2V5RG93
bjogJ2tleWRvd24nLAorICB0b3BLZXlQcmVzczogJ2tleXByZXNzJywKKyAgdG9wS2V5VXA6ICdr
ZXl1cCcsCisgIHRvcExvYWRlZERhdGE6ICdsb2FkZWRkYXRhJywKKyAgdG9wTG9hZGVkTWV0YWRh
dGE6ICdsb2FkZWRtZXRhZGF0YScsCisgIHRvcExvYWRTdGFydDogJ2xvYWRzdGFydCcsCisgIHRv
cE1vdXNlRG93bjogJ21vdXNlZG93bicsCisgIHRvcE1vdXNlTW92ZTogJ21vdXNlbW92ZScsCisg
IHRvcE1vdXNlT3V0OiAnbW91c2VvdXQnLAorICB0b3BNb3VzZU92ZXI6ICdtb3VzZW92ZXInLAor
ICB0b3BNb3VzZVVwOiAnbW91c2V1cCcsCisgIHRvcFBhc3RlOiAncGFzdGUnLAorICB0b3BQYXVz
ZTogJ3BhdXNlJywKKyAgdG9wUGxheTogJ3BsYXknLAorICB0b3BQbGF5aW5nOiAncGxheWluZycs
CisgIHRvcFByb2dyZXNzOiAncHJvZ3Jlc3MnLAorICB0b3BSYXRlQ2hhbmdlOiAncmF0ZWNoYW5n
ZScsCisgIHRvcFNjcm9sbDogJ3Njcm9sbCcsCisgIHRvcFNlZWtlZDogJ3NlZWtlZCcsCisgIHRv
cFNlZWtpbmc6ICdzZWVraW5nJywKKyAgdG9wU2VsZWN0aW9uQ2hhbmdlOiAnc2VsZWN0aW9uY2hh
bmdlJywKKyAgdG9wU3RhbGxlZDogJ3N0YWxsZWQnLAorICB0b3BTdXNwZW5kOiAnc3VzcGVuZCcs
CisgIHRvcFRleHRJbnB1dDogJ3RleHRJbnB1dCcsCisgIHRvcFRpbWVVcGRhdGU6ICd0aW1ldXBk
YXRlJywKKyAgdG9wVG91Y2hDYW5jZWw6ICd0b3VjaGNhbmNlbCcsCisgIHRvcFRvdWNoRW5kOiAn
dG91Y2hlbmQnLAorICB0b3BUb3VjaE1vdmU6ICd0b3VjaG1vdmUnLAorICB0b3BUb3VjaFN0YXJ0
OiAndG91Y2hzdGFydCcsCisgIHRvcFRyYW5zaXRpb25FbmQ6IGdldFZlbmRvclByZWZpeGVkRXZl
bnROYW1lKCd0cmFuc2l0aW9uZW5kJykgfHwgJ3RyYW5zaXRpb25lbmQnLAorICB0b3BWb2x1bWVD
aGFuZ2U6ICd2b2x1bWVjaGFuZ2UnLAorICB0b3BXYWl0aW5nOiAnd2FpdGluZycsCisgIHRvcFdo
ZWVsOiAnd2hlZWwnCit9OworCisvKioKKyAqIFRvIGVuc3VyZSBubyBjb25mbGljdHMgd2l0aCBv
dGhlciBwb3RlbnRpYWwgUmVhY3QgaW5zdGFuY2VzIG9uIHRoZSBwYWdlCisgKi8KK3ZhciB0b3BM
aXN0ZW5lcnNJREtleSA9ICdfcmVhY3RMaXN0ZW5lcnNJRCcgKyBTdHJpbmcoTWF0aC5yYW5kb20o
KSkuc2xpY2UoMik7CisKK2Z1bmN0aW9uIGdldExpc3RlbmluZ0ZvckRvY3VtZW50KG1vdW50QXQp
IHsKKyAgLy8gSW4gSUU4LCBgbW91bnRBdGAgaXMgYSBob3N0IG9iamVjdCBhbmQgZG9lc24ndCBo
YXZlIGBoYXNPd25Qcm9wZXJ0eWAKKyAgLy8gZGlyZWN0bHkuCisgIGlmICghT2JqZWN0LnByb3Rv
dHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1vdW50QXQsIHRvcExpc3RlbmVyc0lES2V5KSkgewor
ICAgIG1vdW50QXRbdG9wTGlzdGVuZXJzSURLZXldID0gcmVhY3RUb3BMaXN0ZW5lcnNDb3VudGVy
Kys7CisgICAgYWxyZWFkeUxpc3RlbmluZ1RvW21vdW50QXRbdG9wTGlzdGVuZXJzSURLZXldXSA9
IHt9OworICB9CisgIHJldHVybiBhbHJlYWR5TGlzdGVuaW5nVG9bbW91bnRBdFt0b3BMaXN0ZW5l
cnNJREtleV1dOworfQorCisvKioKKyAqIGBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXJgIGlzIHVz
ZWQgdG8gYXR0YWNoIHRvcC1sZXZlbCBldmVudCBsaXN0ZW5lcnMuIEZvcgorICogZXhhbXBsZToK
KyAqCisgKiAgIEV2ZW50UGx1Z2luSHViLnB1dExpc3RlbmVyKCdteUlEJywgJ29uQ2xpY2snLCBt
eUZ1bmN0aW9uKTsKKyAqCisgKiBUaGlzIHdvdWxkIGFsbG9jYXRlIGEgInJlZ2lzdHJhdGlvbiIg
b2YgYCgnb25DbGljaycsIG15RnVuY3Rpb24pYCBvbiAnbXlJRCcuCisgKgorICogQGludGVybmFs
CisgKi8KK3ZhciBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIgPSBfYXNzaWduKHt9LCBSZWFjdEV2
ZW50RW1pdHRlck1peGluLCB7CisKKyAgLyoqCisgICAqIEluamVjdGFibGUgZXZlbnQgYmFja2Vu
ZAorICAgKi8KKyAgUmVhY3RFdmVudExpc3RlbmVyOiBudWxsLAorCisgIGluamVjdGlvbjogewor
ICAgIC8qKgorICAgICAqIEBwYXJhbSB7b2JqZWN0fSBSZWFjdEV2ZW50TGlzdGVuZXIKKyAgICAg
Ki8KKyAgICBpbmplY3RSZWFjdEV2ZW50TGlzdGVuZXI6IGZ1bmN0aW9uIChSZWFjdEV2ZW50TGlz
dGVuZXIpIHsKKyAgICAgIFJlYWN0RXZlbnRMaXN0ZW5lci5zZXRIYW5kbGVUb3BMZXZlbChSZWFj
dEJyb3dzZXJFdmVudEVtaXR0ZXIuaGFuZGxlVG9wTGV2ZWwpOworICAgICAgUmVhY3RCcm93c2Vy
RXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lciA9IFJlYWN0RXZlbnRMaXN0ZW5lcjsKKyAg
ICB9CisgIH0sCisKKyAgLyoqCisgICAqIFNldHMgd2hldGhlciBvciBub3QgYW55IGNyZWF0ZWQg
Y2FsbGJhY2tzIHNob3VsZCBiZSBlbmFibGVkLgorICAgKgorICAgKiBAcGFyYW0ge2Jvb2xlYW59
IGVuYWJsZWQgVHJ1ZSBpZiBjYWxsYmFja3Mgc2hvdWxkIGJlIGVuYWJsZWQuCisgICAqLworICBz
ZXRFbmFibGVkOiBmdW5jdGlvbiAoZW5hYmxlZCkgeworICAgIGlmIChSZWFjdEJyb3dzZXJFdmVu
dEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyKSB7CisgICAgICBSZWFjdEJyb3dzZXJFdmVudEVt
aXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyLnNldEVuYWJsZWQoZW5hYmxlZCk7CisgICAgfQorICB9
LAorCisgIC8qKgorICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIGNhbGxiYWNrcyBhcmUg
ZW5hYmxlZC4KKyAgICovCisgIGlzRW5hYmxlZDogZnVuY3Rpb24gKCkgeworICAgIHJldHVybiAh
IShSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyICYmIFJlYWN0QnJv
d3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIuaXNFbmFibGVkKCkpOworICB9LAor
CisgIC8qKgorICAgKiBXZSBsaXN0ZW4gZm9yIGJ1YmJsZWQgdG91Y2ggZXZlbnRzIG9uIHRoZSBk
b2N1bWVudCBvYmplY3QuCisgICAqCisgICAqIEZpcmVmb3ggdjguMDEgKGFuZCBwb3NzaWJseSBv
dGhlcnMpIGV4aGliaXRlZCBzdHJhbmdlIGJlaGF2aW9yIHdoZW4KKyAgICogbW91bnRpbmcgYG9u
bW91c2Vtb3ZlYCBldmVudHMgYXQgc29tZSBub2RlIHRoYXQgd2FzIG5vdCB0aGUgZG9jdW1lbnQK
KyAgICogZWxlbWVudC4gVGhlIHN5bXB0b21zIHdlcmUgdGhhdCBpZiB5b3VyIG1vdXNlIGlzIG5v
dCBtb3Zpbmcgb3ZlciBzb21ldGhpbmcKKyAgICogY29udGFpbmVkIHdpdGhpbiB0aGF0IG1vdW50
IHBvaW50IChmb3IgZXhhbXBsZSBvbiB0aGUgYmFja2dyb3VuZCkgdGhlCisgICAqIHRvcC1sZXZl
bCBsaXN0ZW5lcnMgZm9yIGBvbm1vdXNlbW92ZWAgd29uJ3QgYmUgY2FsbGVkLiBIb3dldmVyLCBp
ZiB5b3UKKyAgICogcmVnaXN0ZXIgdGhlIGBtb3VzZW1vdmVgIG9uIHRoZSBkb2N1bWVudCBvYmpl
Y3QsIHRoZW4gaXQgd2lsbCBvZiBjb3Vyc2UKKyAgICogY2F0Y2ggYWxsIGBtb3VzZW1vdmVgcy4g
VGhpcyBhbG9uZyB3aXRoIGlPUyBxdWlya3MsIGp1c3RpZmllcyByZXN0cmljdGluZworICAgKiB0
b3AtbGV2ZWwgbGlzdGVuZXJzIHRvIHRoZSBkb2N1bWVudCBvYmplY3Qgb25seSwgYXQgbGVhc3Qg
Zm9yIHRoZXNlCisgICAqIG1vdmVtZW50IHR5cGVzIG9mIGV2ZW50cyBhbmQgcG9zc2libHkgYWxs
IGV2ZW50cy4KKyAgICoKKyAgICogQHNlZSBodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2Jsb2cv
YXJjaGl2ZXMvMjAxMC8wOS9jbGlja19ldmVudF9kZWwuaHRtbAorICAgKgorICAgKiBBbHNvLCBg
a2V5dXBgL2BrZXlwcmVzc2AvYGtleWRvd25gIGRvIG5vdCBidWJibGUgdG8gdGhlIHdpbmRvdyBv
biBJRSwgYnV0CisgICAqIHRoZXkgYnViYmxlIHRvIGRvY3VtZW50LgorICAgKgorICAgKiBAcGFy
YW0ge3N0cmluZ30gcmVnaXN0cmF0aW9uTmFtZSBOYW1lIG9mIGxpc3RlbmVyIChlLmcuIGBvbkNs
aWNrYCkuCisgICAqIEBwYXJhbSB7b2JqZWN0fSBjb250ZW50RG9jdW1lbnRIYW5kbGUgRG9jdW1l
bnQgd2hpY2ggb3ducyB0aGUgY29udGFpbmVyCisgICAqLworICBsaXN0ZW5UbzogZnVuY3Rpb24g
KHJlZ2lzdHJhdGlvbk5hbWUsIGNvbnRlbnREb2N1bWVudEhhbmRsZSkgeworICAgIHZhciBtb3Vu
dEF0ID0gY29udGVudERvY3VtZW50SGFuZGxlOworICAgIHZhciBpc0xpc3RlbmluZyA9IGdldExp
c3RlbmluZ0ZvckRvY3VtZW50KG1vdW50QXQpOworICAgIHZhciBkZXBlbmRlbmNpZXMgPSBFdmVu
dFBsdWdpblJlZ2lzdHJ5LnJlZ2lzdHJhdGlvbk5hbWVEZXBlbmRlbmNpZXNbcmVnaXN0cmF0aW9u
TmFtZV07CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRlcGVuZGVuY2llcy5sZW5ndGg7IGkr
KykgeworICAgICAgdmFyIGRlcGVuZGVuY3kgPSBkZXBlbmRlbmNpZXNbaV07CisgICAgICBpZiAo
IShpc0xpc3RlbmluZy5oYXNPd25Qcm9wZXJ0eShkZXBlbmRlbmN5KSAmJiBpc0xpc3RlbmluZ1tk
ZXBlbmRlbmN5XSkpIHsKKyAgICAgICAgaWYgKGRlcGVuZGVuY3kgPT09ICd0b3BXaGVlbCcpIHsK
KyAgICAgICAgICBpZiAoaXNFdmVudFN1cHBvcnRlZCgnd2hlZWwnKSkgeworICAgICAgICAgICAg
UmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2
ZW50KCd0b3BXaGVlbCcsICd3aGVlbCcsIG1vdW50QXQpOworICAgICAgICAgIH0gZWxzZSBpZiAo
aXNFdmVudFN1cHBvcnRlZCgnbW91c2V3aGVlbCcpKSB7CisgICAgICAgICAgICBSZWFjdEJyb3dz
ZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQoJ3RvcFdo
ZWVsJywgJ21vdXNld2hlZWwnLCBtb3VudEF0KTsKKyAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgLy8gRmlyZWZveCBuZWVkcyB0byBjYXB0dXJlIGEgZGlmZmVyZW50IG1vdXNlIHNjcm9s
bCBldmVudC4KKyAgICAgICAgICAgIC8vIEBzZWUgaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9k
b20vZXZlbnRzL3Rlc3RzL3Njcm9sbC5odG1sCisgICAgICAgICAgICBSZWFjdEJyb3dzZXJFdmVu
dEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQoJ3RvcFdoZWVsJywg
J0RPTU1vdXNlU2Nyb2xsJywgbW91bnRBdCk7CisgICAgICAgICAgfQorICAgICAgICB9IGVsc2Ug
aWYgKGRlcGVuZGVuY3kgPT09ICd0b3BTY3JvbGwnKSB7CisKKyAgICAgICAgICBpZiAoaXNFdmVu
dFN1cHBvcnRlZCgnc2Nyb2xsJywgdHJ1ZSkpIHsKKyAgICAgICAgICAgIFJlYWN0QnJvd3NlckV2
ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcENhcHR1cmVkRXZlbnQoJ3RvcFNjcm9s
bCcsICdzY3JvbGwnLCBtb3VudEF0KTsKKyAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
UmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2
ZW50KCd0b3BTY3JvbGwnLCAnc2Nyb2xsJywgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0
RXZlbnRMaXN0ZW5lci5XSU5ET1dfSEFORExFKTsKKyAgICAgICAgICB9CisgICAgICAgIH0gZWxz
ZSBpZiAoZGVwZW5kZW5jeSA9PT0gJ3RvcEZvY3VzJyB8fCBkZXBlbmRlbmN5ID09PSAndG9wQmx1
cicpIHsKKworICAgICAgICAgIGlmIChpc0V2ZW50U3VwcG9ydGVkKCdmb2N1cycsIHRydWUpKSB7
CisgICAgICAgICAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVy
LnRyYXBDYXB0dXJlZEV2ZW50KCd0b3BGb2N1cycsICdmb2N1cycsIG1vdW50QXQpOworICAgICAg
ICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQ2Fw
dHVyZWRFdmVudCgndG9wQmx1cicsICdibHVyJywgbW91bnRBdCk7CisgICAgICAgICAgfSBlbHNl
IGlmIChpc0V2ZW50U3VwcG9ydGVkKCdmb2N1c2luJykpIHsKKyAgICAgICAgICAgIC8vIElFIGhh
cyBgZm9jdXNpbmAgYW5kIGBmb2N1c291dGAgZXZlbnRzIHdoaWNoIGJ1YmJsZS4KKyAgICAgICAg
ICAgIC8vIEBzZWUgaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9ibG9nL2FyY2hpdmVzLzIwMDgv
MDQvZGVsZWdhdGluZ190aGUuaHRtbAorICAgICAgICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0
dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KCd0b3BGb2N1cycsICdmb2N1
c2luJywgbW91bnRBdCk7CisgICAgICAgICAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVh
Y3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQoJ3RvcEJsdXInLCAnZm9jdXNvdXQnLCBt
b3VudEF0KTsKKyAgICAgICAgICB9CisKKyAgICAgICAgICAvLyB0byBtYWtlIHN1cmUgYmx1ciBh
bmQgZm9jdXMgZXZlbnQgbGlzdGVuZXJzIGFyZSBvbmx5IGF0dGFjaGVkIG9uY2UKKyAgICAgICAg
ICBpc0xpc3RlbmluZy50b3BCbHVyID0gdHJ1ZTsKKyAgICAgICAgICBpc0xpc3RlbmluZy50b3BG
b2N1cyA9IHRydWU7CisgICAgICAgIH0gZWxzZSBpZiAodG9wRXZlbnRNYXBwaW5nLmhhc093blBy
b3BlcnR5KGRlcGVuZGVuY3kpKSB7CisgICAgICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVy
LlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KGRlcGVuZGVuY3ksIHRvcEV2ZW50
TWFwcGluZ1tkZXBlbmRlbmN5XSwgbW91bnRBdCk7CisgICAgICAgIH0KKworICAgICAgICBpc0xp
c3RlbmluZ1tkZXBlbmRlbmN5XSA9IHRydWU7CisgICAgICB9CisgICAgfQorICB9LAorCisgIHRy
YXBCdWJibGVkRXZlbnQ6IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUsIGhhbmRsZXJCYXNlTmFtZSwg
aGFuZGxlKSB7CisgICAgcmV0dXJuIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50
TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudCh0b3BMZXZlbFR5cGUsIGhhbmRsZXJCYXNlTmFtZSwg
aGFuZGxlKTsKKyAgfSwKKworICB0cmFwQ2FwdHVyZWRFdmVudDogZnVuY3Rpb24gKHRvcExldmVs
VHlwZSwgaGFuZGxlckJhc2VOYW1lLCBoYW5kbGUpIHsKKyAgICByZXR1cm4gUmVhY3RCcm93c2Vy
RXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQ2FwdHVyZWRFdmVudCh0b3BMZXZl
bFR5cGUsIGhhbmRsZXJCYXNlTmFtZSwgaGFuZGxlKTsKKyAgfSwKKworICAvKioKKyAgICogUHJv
dGVjdCBhZ2FpbnN0IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCkgcmV0dXJuaW5nIG51bGwKKyAgICog
U29tZSBwb3B1cCBibG9ja2VyIGV4dGVuc2lvbnMgYXBwZWFyIHRvIGRvIHRoaXM6CisgICAqIGh0
dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvNjg4NworICAgKi8KKyAgc3Vw
cG9ydHNFdmVudFBhZ2VYWTogZnVuY3Rpb24gKCkgeworICAgIGlmICghZG9jdW1lbnQuY3JlYXRl
RXZlbnQpIHsKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgdmFyIGV2ID0gZG9jdW1l
bnQuY3JlYXRlRXZlbnQoJ01vdXNlRXZlbnQnKTsKKyAgICByZXR1cm4gZXYgIT0gbnVsbCAmJiAn
cGFnZVgnIGluIGV2OworICB9LAorCisgIC8qKgorICAgKiBMaXN0ZW5zIHRvIHdpbmRvdyBzY3Jv
bGwgYW5kIHJlc2l6ZSBldmVudHMuIFdlIGNhY2hlIHNjcm9sbCB2YWx1ZXMgc28gdGhhdAorICAg
KiBhcHBsaWNhdGlvbiBjb2RlIGNhbiBhY2Nlc3MgdGhlbSB3aXRob3V0IHRyaWdnZXJpbmcgcmVm
bG93cy4KKyAgICoKKyAgICogVmlld3BvcnRNZXRyaWNzIGlzIG9ubHkgdXNlZCBieSBTeW50aGV0
aWNNb3VzZS9Ub3VjaEV2ZW50IGFuZCBvbmx5IHdoZW4KKyAgICogcGFnZVgvcGFnZVkgaXNuJ3Qg
c3VwcG9ydGVkIChsZWdhY3kgYnJvd3NlcnMpLgorICAgKgorICAgKiBOT1RFOiBTY3JvbGwgZXZl
bnRzIGRvIG5vdCBidWJibGUuCisgICAqCisgICAqIEBzZWUgaHR0cDovL3d3dy5xdWlya3Ntb2Rl
Lm9yZy9kb20vZXZlbnRzL3Njcm9sbC5odG1sCisgICAqLworICBlbnN1cmVTY3JvbGxWYWx1ZU1v
bml0b3Jpbmc6IGZ1bmN0aW9uICgpIHsKKyAgICBpZiAoaGFzRXZlbnRQYWdlWFkgPT09IHVuZGVm
aW5lZCkgeworICAgICAgaGFzRXZlbnRQYWdlWFkgPSBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIu
c3VwcG9ydHNFdmVudFBhZ2VYWSgpOworICAgIH0KKyAgICBpZiAoIWhhc0V2ZW50UGFnZVhZICYm
ICFpc01vbml0b3JpbmdTY3JvbGxWYWx1ZSkgeworICAgICAgdmFyIHJlZnJlc2ggPSBWaWV3cG9y
dE1ldHJpY3MucmVmcmVzaFNjcm9sbFZhbHVlczsKKyAgICAgIFJlYWN0QnJvd3NlckV2ZW50RW1p
dHRlci5SZWFjdEV2ZW50TGlzdGVuZXIubW9uaXRvclNjcm9sbFZhbHVlKHJlZnJlc2gpOworICAg
ICAgaXNNb25pdG9yaW5nU2Nyb2xsVmFsdWUgPSB0cnVlOworICAgIH0KKyAgfQorCit9KTsKKwor
bW9kdWxlLmV4cG9ydHMgPSBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXI7Cit9LHsiMTExIjoxMTEs
IjExMyI6MTEzLCIxNDgiOjE0OCwiMTciOjE3LCI1MSI6NTEsIjk0Ijo5NH1dLDI2OltmdW5jdGlv
bihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKyhmdW5jdGlvbiAocHJvY2Vzcyl7CisvKioKKyAq
IENvcHlyaWdodCAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgUmVhY3RSZWNv
bmNpbGVyID0gX2RlcmVxXyg2OCk7CisKK3ZhciBpbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50ID0g
X2RlcmVxXygxMTIpOwordmFyIEtleUVzY2FwZVV0aWxzID0gX2RlcmVxXygyMik7Cit2YXIgc2hv
dWxkVXBkYXRlUmVhY3RDb21wb25lbnQgPSBfZGVyZXFfKDExOSk7Cit2YXIgdHJhdmVyc2VBbGxD
aGlsZHJlbiA9IF9kZXJlcV8oMTIwKTsKK3ZhciB3YXJuaW5nID0gX2RlcmVxXygxNDcpOworCit2
YXIgUmVhY3RDb21wb25lbnRUcmVlSG9vazsKKworaWYgKHR5cGVvZiBwcm9jZXNzICE9PSAndW5k
ZWZpbmVkJyAmJiBwcm9jZXNzLmVudiAmJiAiZGV2ZWxvcG1lbnQiID09PSAndGVzdCcpIHsKKyAg
Ly8gVGVtcG9yYXJ5IGhhY2suCisgIC8vIElubGluZSByZXF1aXJlcyBkb24ndCB3b3JrIHdlbGwg
d2l0aCBKZXN0OgorICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVz
LzcyNDAKKyAgLy8gUmVtb3ZlIHRoZSBpbmxpbmUgcmVxdWlyZXMgd2hlbiB3ZSBkb24ndCBuZWVk
IHRoZW0gYW55bW9yZToKKyAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L3B1
bGwvNzE3OAorICBSZWFjdENvbXBvbmVudFRyZWVIb29rID0gX2RlcmVxXygxMjIpOworfQorCitm
dW5jdGlvbiBpbnN0YW50aWF0ZUNoaWxkKGNoaWxkSW5zdGFuY2VzLCBjaGlsZCwgbmFtZSwgc2Vs
ZkRlYnVnSUQpIHsKKyAgLy8gV2UgZm91bmQgYSBjb21wb25lbnQgaW5zdGFuY2UuCisgIHZhciBr
ZXlVbmlxdWUgPSBjaGlsZEluc3RhbmNlc1tuYW1lXSA9PT0gdW5kZWZpbmVkOworICBpZiAoImRl
dmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgaWYgKCFSZWFjdENvbXBvbmVudFRy
ZWVIb29rKSB7CisgICAgICBSZWFjdENvbXBvbmVudFRyZWVIb29rID0gX2RlcmVxXygxMjIpOwor
ICAgIH0KKyAgICBpZiAoIWtleVVuaXF1ZSkgeworICAgICAgImRldmVsb3BtZW50IiAhPT0gJ3By
b2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ2ZsYXR0ZW5DaGlsZHJlbiguLi4pOiBFbmNvdW50
ZXJlZCB0d28gY2hpbGRyZW4gd2l0aCB0aGUgc2FtZSBrZXksICcgKyAnYCVzYC4gQ2hpbGQga2V5
cyBtdXN0IGJlIHVuaXF1ZTsgd2hlbiB0d28gY2hpbGRyZW4gc2hhcmUgYSBrZXksIG9ubHkgJyAr
ICd0aGUgZmlyc3QgY2hpbGQgd2lsbCBiZSB1c2VkLiVzJywgS2V5RXNjYXBlVXRpbHMudW5lc2Nh
cGUobmFtZSksIFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0U3RhY2tBZGRlbmR1bUJ5SUQoc2Vs
ZkRlYnVnSUQpKSA6IHZvaWQgMDsKKyAgICB9CisgIH0KKyAgaWYgKGNoaWxkICE9IG51bGwgJiYg
a2V5VW5pcXVlKSB7CisgICAgY2hpbGRJbnN0YW5jZXNbbmFtZV0gPSBpbnN0YW50aWF0ZVJlYWN0
Q29tcG9uZW50KGNoaWxkLCB0cnVlKTsKKyAgfQorfQorCisvKioKKyAqIFJlYWN0Q2hpbGRSZWNv
bmNpbGVyIHByb3ZpZGVzIGhlbHBlcnMgZm9yIGluaXRpYWxpemluZyBvciB1cGRhdGluZyBhIHNl
dCBvZgorICogY2hpbGRyZW4uIEl0cyBvdXRwdXQgaXMgc3VpdGFibGUgZm9yIHBhc3NpbmcgaXQg
b250byBSZWFjdE11bHRpQ2hpbGQgd2hpY2gKKyAqIGRvZXMgZGlmZmVkIHJlb3JkZXJpbmcgYW5k
IGluc2VydGlvbi4KKyAqLwordmFyIFJlYWN0Q2hpbGRSZWNvbmNpbGVyID0geworICAvKioKKyAg
ICogR2VuZXJhdGVzIGEgIm1vdW50IGltYWdlIiBmb3IgZWFjaCBvZiB0aGUgc3VwcGxpZWQgY2hp
bGRyZW4uIEluIHRoZSBjYXNlCisgICAqIG9mIGBSZWFjdERPTUNvbXBvbmVudGAsIGEgbW91bnQg
aW1hZ2UgaXMgYSBzdHJpbmcgb2YgbWFya3VwLgorICAgKgorICAgKiBAcGFyYW0gez9vYmplY3R9
IG5lc3RlZENoaWxkTm9kZXMgTmVzdGVkIGNoaWxkIG1hcHMuCisgICAqIEByZXR1cm4gez9vYmpl
Y3R9IEEgc2V0IG9mIGNoaWxkIGluc3RhbmNlcy4KKyAgICogQGludGVybmFsCisgICAqLworICBp
bnN0YW50aWF0ZUNoaWxkcmVuOiBmdW5jdGlvbiAobmVzdGVkQ2hpbGROb2RlcywgdHJhbnNhY3Rp
b24sIGNvbnRleHQsIHNlbGZEZWJ1Z0lEIC8vIDAgaW4gcHJvZHVjdGlvbiBhbmQgZm9yIHJvb3Rz
CisgICkgeworICAgIGlmIChuZXN0ZWRDaGlsZE5vZGVzID09IG51bGwpIHsKKyAgICAgIHJldHVy
biBudWxsOworICAgIH0KKyAgICB2YXIgY2hpbGRJbnN0YW5jZXMgPSB7fTsKKworICAgIGlmICgi
ZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgIHRyYXZlcnNlQWxsQ2hpbGRy
ZW4obmVzdGVkQ2hpbGROb2RlcywgZnVuY3Rpb24gKGNoaWxkSW5zdHMsIGNoaWxkLCBuYW1lKSB7
CisgICAgICAgIHJldHVybiBpbnN0YW50aWF0ZUNoaWxkKGNoaWxkSW5zdHMsIGNoaWxkLCBuYW1l
LCBzZWxmRGVidWdJRCk7CisgICAgICB9LCBjaGlsZEluc3RhbmNlcyk7CisgICAgfSBlbHNlIHsK
KyAgICAgIHRyYXZlcnNlQWxsQ2hpbGRyZW4obmVzdGVkQ2hpbGROb2RlcywgaW5zdGFudGlhdGVD
aGlsZCwgY2hpbGRJbnN0YW5jZXMpOworICAgIH0KKyAgICByZXR1cm4gY2hpbGRJbnN0YW5jZXM7
CisgIH0sCisKKyAgLyoqCisgICAqIFVwZGF0ZXMgdGhlIHJlbmRlcmVkIGNoaWxkcmVuIGFuZCBy
ZXR1cm5zIGEgbmV3IHNldCBvZiBjaGlsZHJlbi4KKyAgICoKKyAgICogQHBhcmFtIHs/b2JqZWN0
fSBwcmV2Q2hpbGRyZW4gUHJldmlvdXNseSBpbml0aWFsaXplZCBzZXQgb2YgY2hpbGRyZW4uCisg
ICAqIEBwYXJhbSB7P29iamVjdH0gbmV4dENoaWxkcmVuIEZsYXQgY2hpbGQgZWxlbWVudCBtYXBz
LgorICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uCisg
ICAqIEBwYXJhbSB7b2JqZWN0fSBjb250ZXh0CisgICAqIEByZXR1cm4gez9vYmplY3R9IEEgbmV3
IHNldCBvZiBjaGlsZCBpbnN0YW5jZXMuCisgICAqIEBpbnRlcm5hbAorICAgKi8KKyAgdXBkYXRl
Q2hpbGRyZW46IGZ1bmN0aW9uIChwcmV2Q2hpbGRyZW4sIG5leHRDaGlsZHJlbiwgbW91bnRJbWFn
ZXMsIHJlbW92ZWROb2RlcywgdHJhbnNhY3Rpb24sIGhvc3RQYXJlbnQsIGhvc3RDb250YWluZXJJ
bmZvLCBjb250ZXh0LCBzZWxmRGVidWdJRCAvLyAwIGluIHByb2R1Y3Rpb24gYW5kIGZvciByb290
cworICApIHsKKyAgICAvLyBXZSBjdXJyZW50bHkgZG9uJ3QgaGF2ZSBhIHdheSB0byB0cmFjayBt
b3ZlcyBoZXJlIGJ1dCBpZiB3ZSB1c2UgaXRlcmF0b3JzCisgICAgLy8gaW5zdGVhZCBvZiBmb3Iu
LmluIHdlIGNhbiB6aXAgdGhlIGl0ZXJhdG9ycyBhbmQgY2hlY2sgaWYgYW4gaXRlbSBoYXMKKyAg
ICAvLyBtb3ZlZC4KKyAgICAvLyBUT0RPOiBJZiBub3RoaW5nIGhhcyBjaGFuZ2VkLCByZXR1cm4g
dGhlIHByZXZDaGlsZHJlbiBvYmplY3Qgc28gdGhhdCB3ZQorICAgIC8vIGNhbiBxdWlja2x5IGJh
aWxvdXQgaWYgbm90aGluZyBoYXMgY2hhbmdlZC4KKyAgICBpZiAoIW5leHRDaGlsZHJlbiAmJiAh
cHJldkNoaWxkcmVuKSB7CisgICAgICByZXR1cm47CisgICAgfQorICAgIHZhciBuYW1lOworICAg
IHZhciBwcmV2Q2hpbGQ7CisgICAgZm9yIChuYW1lIGluIG5leHRDaGlsZHJlbikgeworICAgICAg
aWYgKCFuZXh0Q2hpbGRyZW4uaGFzT3duUHJvcGVydHkobmFtZSkpIHsKKyAgICAgICAgY29udGlu
dWU7CisgICAgICB9CisgICAgICBwcmV2Q2hpbGQgPSBwcmV2Q2hpbGRyZW4gJiYgcHJldkNoaWxk
cmVuW25hbWVdOworICAgICAgdmFyIHByZXZFbGVtZW50ID0gcHJldkNoaWxkICYmIHByZXZDaGls
ZC5fY3VycmVudEVsZW1lbnQ7CisgICAgICB2YXIgbmV4dEVsZW1lbnQgPSBuZXh0Q2hpbGRyZW5b
bmFtZV07CisgICAgICBpZiAocHJldkNoaWxkICE9IG51bGwgJiYgc2hvdWxkVXBkYXRlUmVhY3RD
b21wb25lbnQocHJldkVsZW1lbnQsIG5leHRFbGVtZW50KSkgeworICAgICAgICBSZWFjdFJlY29u
Y2lsZXIucmVjZWl2ZUNvbXBvbmVudChwcmV2Q2hpbGQsIG5leHRFbGVtZW50LCB0cmFuc2FjdGlv
biwgY29udGV4dCk7CisgICAgICAgIG5leHRDaGlsZHJlbltuYW1lXSA9IHByZXZDaGlsZDsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChwcmV2Q2hpbGQpIHsKKyAgICAgICAgICByZW1vdmVk
Tm9kZXNbbmFtZV0gPSBSZWFjdFJlY29uY2lsZXIuZ2V0SG9zdE5vZGUocHJldkNoaWxkKTsKKyAg
ICAgICAgICBSZWFjdFJlY29uY2lsZXIudW5tb3VudENvbXBvbmVudChwcmV2Q2hpbGQsIGZhbHNl
KTsKKyAgICAgICAgfQorICAgICAgICAvLyBUaGUgY2hpbGQgbXVzdCBiZSBpbnN0YW50aWF0ZWQg
YmVmb3JlIGl0J3MgbW91bnRlZC4KKyAgICAgICAgdmFyIG5leHRDaGlsZEluc3RhbmNlID0gaW5z
dGFudGlhdGVSZWFjdENvbXBvbmVudChuZXh0RWxlbWVudCwgdHJ1ZSk7CisgICAgICAgIG5leHRD
aGlsZHJlbltuYW1lXSA9IG5leHRDaGlsZEluc3RhbmNlOworICAgICAgICAvLyBDcmVhdGluZyBt
b3VudCBpbWFnZSBub3cgZW5zdXJlcyByZWZzIGFyZSByZXNvbHZlZCBpbiByaWdodCBvcmRlcgor
ICAgICAgICAvLyAoc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9wdWxsLzcx
MDEgZm9yIGV4cGxhbmF0aW9uKS4KKyAgICAgICAgdmFyIG5leHRDaGlsZE1vdW50SW1hZ2UgPSBS
ZWFjdFJlY29uY2lsZXIubW91bnRDb21wb25lbnQobmV4dENoaWxkSW5zdGFuY2UsIHRyYW5zYWN0
aW9uLCBob3N0UGFyZW50LCBob3N0Q29udGFpbmVySW5mbywgY29udGV4dCwgc2VsZkRlYnVnSUQp
OworICAgICAgICBtb3VudEltYWdlcy5wdXNoKG5leHRDaGlsZE1vdW50SW1hZ2UpOworICAgICAg
fQorICAgIH0KKyAgICAvLyBVbm1vdW50IGNoaWxkcmVuIHRoYXQgYXJlIG5vIGxvbmdlciBwcmVz
ZW50LgorICAgIGZvciAobmFtZSBpbiBwcmV2Q2hpbGRyZW4pIHsKKyAgICAgIGlmIChwcmV2Q2hp
bGRyZW4uaGFzT3duUHJvcGVydHkobmFtZSkgJiYgIShuZXh0Q2hpbGRyZW4gJiYgbmV4dENoaWxk
cmVuLmhhc093blByb3BlcnR5KG5hbWUpKSkgeworICAgICAgICBwcmV2Q2hpbGQgPSBwcmV2Q2hp
bGRyZW5bbmFtZV07CisgICAgICAgIHJlbW92ZWROb2Rlc1tuYW1lXSA9IFJlYWN0UmVjb25jaWxl
ci5nZXRIb3N0Tm9kZShwcmV2Q2hpbGQpOworICAgICAgICBSZWFjdFJlY29uY2lsZXIudW5tb3Vu
dENvbXBvbmVudChwcmV2Q2hpbGQsIGZhbHNlKTsKKyAgICAgIH0KKyAgICB9CisgIH0sCisKKyAg
LyoqCisgICAqIFVubW91bnRzIGFsbCByZW5kZXJlZCBjaGlsZHJlbi4gVGhpcyBzaG91bGQgYmUg
dXNlZCB0byBjbGVhbiB1cCBjaGlsZHJlbgorICAgKiB3aGVuIHRoaXMgY29tcG9uZW50IGlzIHVu
bW91bnRlZC4KKyAgICoKKyAgICogQHBhcmFtIHs/b2JqZWN0fSByZW5kZXJlZENoaWxkcmVuIFBy
ZXZpb3VzbHkgaW5pdGlhbGl6ZWQgc2V0IG9mIGNoaWxkcmVuLgorICAgKiBAaW50ZXJuYWwKKyAg
ICovCisgIHVubW91bnRDaGlsZHJlbjogZnVuY3Rpb24gKHJlbmRlcmVkQ2hpbGRyZW4sIHNhZmVs
eSkgeworICAgIGZvciAodmFyIG5hbWUgaW4gcmVuZGVyZWRDaGlsZHJlbikgeworICAgICAgaWYg
KHJlbmRlcmVkQ2hpbGRyZW4uaGFzT3duUHJvcGVydHkobmFtZSkpIHsKKyAgICAgICAgdmFyIHJl
bmRlcmVkQ2hpbGQgPSByZW5kZXJlZENoaWxkcmVuW25hbWVdOworICAgICAgICBSZWFjdFJlY29u
Y2lsZXIudW5tb3VudENvbXBvbmVudChyZW5kZXJlZENoaWxkLCBzYWZlbHkpOworICAgICAgfQor
ICAgIH0KKyAgfQorCit9OworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0Q2hpbGRSZWNvbmNpbGVy
OworfSkuY2FsbCh0aGlzLHVuZGVmaW5lZCkKK30seyIxMTIiOjExMiwiMTE5IjoxMTksIjEyMCI6
MTIwLCIxMjIiOjEyMiwiMTQ3IjoxNDcsIjIyIjoyMiwiNjgiOjY4fV0sMjc6W2Z1bmN0aW9uKF9k
ZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBG
YWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJj
ZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0
aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2Ug
dHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91
bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisK
Kyd1c2Ugc3RyaWN0JzsKKwordmFyIERPTUNoaWxkcmVuT3BlcmF0aW9ucyA9IF9kZXJlcV8oOCk7
Cit2YXIgUmVhY3RET01JRE9wZXJhdGlvbnMgPSBfZGVyZXFfKDM1KTsKKworLyoqCisgKiBBYnN0
cmFjdHMgYXdheSBhbGwgZnVuY3Rpb25hbGl0eSBvZiB0aGUgcmVjb25jaWxlciB0aGF0IHJlcXVp
cmVzIGtub3dsZWRnZSBvZgorICogdGhlIGJyb3dzZXIgY29udGV4dC4gVE9ETzogVGhlc2UgY2Fs
bGVycyBzaG91bGQgYmUgcmVmYWN0b3JlZCB0byBhdm9pZCB0aGUKKyAqIG5lZWQgZm9yIHRoaXMg
aW5qZWN0aW9uLgorICovCit2YXIgUmVhY3RDb21wb25lbnRCcm93c2VyRW52aXJvbm1lbnQgPSB7
CisKKyAgcHJvY2Vzc0NoaWxkcmVuVXBkYXRlczogUmVhY3RET01JRE9wZXJhdGlvbnMuZGFuZ2Vy
b3VzbHlQcm9jZXNzQ2hpbGRyZW5VcGRhdGVzLAorCisgIHJlcGxhY2VOb2RlV2l0aE1hcmt1cDog
RE9NQ2hpbGRyZW5PcGVyYXRpb25zLmRhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwCisK
K307CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RDb21wb25lbnRCcm93c2VyRW52aXJvbm1lbnQ7
Cit9LHsiMzUiOjM1LCI4Ijo4fV0sMjg6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMp
eworLyoqCisgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBn
cmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmls
ZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogCisgKi8KKworJ3VzZSBzdHJpY3QnOwor
Cit2YXIgX3Byb2RJbnZhcmlhbnQgPSBfZGVyZXFfKDExNik7CisKK3ZhciBpbnZhcmlhbnQgPSBf
ZGVyZXFfKDE0MCk7CisKK3ZhciBpbmplY3RlZCA9IGZhbHNlOworCit2YXIgUmVhY3RDb21wb25l
bnRFbnZpcm9ubWVudCA9IHsKKworICAvKioKKyAgICogT3B0aW9uYWxseSBpbmplY3RhYmxlIGhv
b2sgZm9yIHN3YXBwaW5nIG91dCBtb3VudCBpbWFnZXMgaW4gdGhlIG1pZGRsZSBvZgorICAgKiB0
aGUgdHJlZS4KKyAgICovCisgIHJlcGxhY2VOb2RlV2l0aE1hcmt1cDogbnVsbCwKKworICAvKioK
KyAgICogT3B0aW9uYWxseSBpbmplY3RhYmxlIGhvb2sgZm9yIHByb2Nlc3NpbmcgYSBxdWV1ZSBv
ZiBjaGlsZCB1cGRhdGVzLiBXaWxsCisgICAqIGxhdGVyIG1vdmUgaW50byBNdWx0aUNoaWxkQ29t
cG9uZW50cy4KKyAgICovCisgIHByb2Nlc3NDaGlsZHJlblVwZGF0ZXM6IG51bGwsCisKKyAgaW5q
ZWN0aW9uOiB7CisgICAgaW5qZWN0RW52aXJvbm1lbnQ6IGZ1bmN0aW9uIChlbnZpcm9ubWVudCkg
eworICAgICAgISFpbmplY3RlZCA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGlu
dmFyaWFudChmYWxzZSwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50OiBpbmplY3RFbnZpcm9ubWVu
dCgpIGNhbiBvbmx5IGJlIGNhbGxlZCBvbmNlLicpIDogX3Byb2RJbnZhcmlhbnQoJzEwNCcpIDog
dm9pZCAwOworICAgICAgUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudC5yZXBsYWNlTm9kZVdpdGhN
YXJrdXAgPSBlbnZpcm9ubWVudC5yZXBsYWNlTm9kZVdpdGhNYXJrdXA7CisgICAgICBSZWFjdENv
bXBvbmVudEVudmlyb25tZW50LnByb2Nlc3NDaGlsZHJlblVwZGF0ZXMgPSBlbnZpcm9ubWVudC5w
cm9jZXNzQ2hpbGRyZW5VcGRhdGVzOworICAgICAgaW5qZWN0ZWQgPSB0cnVlOworICAgIH0KKyAg
fQorCit9OworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQ7Cit9
LHsiMTE2IjoxMTYsIjE0MCI6MTQwfV0sMjk6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9y
dHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICog
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2Vk
IHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25h
bCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMg
ZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwor
dmFyIF9wcm9kSW52YXJpYW50ID0gX2RlcmVxXygxMTYpLAorICAgIF9hc3NpZ24gPSBfZGVyZXFf
KDE0OCk7CisKK3ZhciBSZWFjdCA9IF9kZXJlcV8oMTI0KTsKK3ZhciBSZWFjdENvbXBvbmVudEVu
dmlyb25tZW50ID0gX2RlcmVxXygyOCk7Cit2YXIgUmVhY3RDdXJyZW50T3duZXIgPSBfZGVyZXFf
KDEyMyk7Cit2YXIgUmVhY3RFcnJvclV0aWxzID0gX2RlcmVxXyg1MCk7Cit2YXIgUmVhY3RJbnN0
YW5jZU1hcCA9IF9kZXJlcV8oNTgpOwordmFyIFJlYWN0SW5zdHJ1bWVudGF0aW9uID0gX2RlcmVx
Xyg1OSk7Cit2YXIgUmVhY3ROb2RlVHlwZXMgPSBfZGVyZXFfKDYzKTsKK3ZhciBSZWFjdFJlY29u
Y2lsZXIgPSBfZGVyZXFfKDY4KTsKKworaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9u
JykgeworICB2YXIgY2hlY2tSZWFjdFR5cGVTcGVjID0gX2RlcmVxXyg5Nyk7Cit9CisKK3ZhciBl
bXB0eU9iamVjdCA9IF9kZXJlcV8oMTMzKTsKK3ZhciBpbnZhcmlhbnQgPSBfZGVyZXFfKDE0MCk7
Cit2YXIgc2hhbGxvd0VxdWFsID0gX2RlcmVxXygxNDYpOwordmFyIHNob3VsZFVwZGF0ZVJlYWN0
Q29tcG9uZW50ID0gX2RlcmVxXygxMTkpOwordmFyIHdhcm5pbmcgPSBfZGVyZXFfKDE0Nyk7CisK
K3ZhciBDb21wb3NpdGVUeXBlcyA9IHsKKyAgSW1wdXJlQ2xhc3M6IDAsCisgIFB1cmVDbGFzczog
MSwKKyAgU3RhdGVsZXNzRnVuY3Rpb25hbDogMgorfTsKKworZnVuY3Rpb24gU3RhdGVsZXNzQ29t
cG9uZW50KENvbXBvbmVudCkge30KK1N0YXRlbGVzc0NvbXBvbmVudC5wcm90b3R5cGUucmVuZGVy
ID0gZnVuY3Rpb24gKCkgeworICB2YXIgQ29tcG9uZW50ID0gUmVhY3RJbnN0YW5jZU1hcC5nZXQo
dGhpcykuX2N1cnJlbnRFbGVtZW50LnR5cGU7CisgIHZhciBlbGVtZW50ID0gQ29tcG9uZW50KHRo
aXMucHJvcHMsIHRoaXMuY29udGV4dCwgdGhpcy51cGRhdGVyKTsKKyAgd2FybklmSW52YWxpZEVs
ZW1lbnQoQ29tcG9uZW50LCBlbGVtZW50KTsKKyAgcmV0dXJuIGVsZW1lbnQ7Cit9OworCitmdW5j
dGlvbiB3YXJuSWZJbnZhbGlkRWxlbWVudChDb21wb25lbnQsIGVsZW1lbnQpIHsKKyAgaWYgKCJk
ZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICJkZXZlbG9wbWVudCIgIT09ICdw
cm9kdWN0aW9uJyA/IHdhcm5pbmcoZWxlbWVudCA9PT0gbnVsbCB8fCBlbGVtZW50ID09PSBmYWxz
ZSB8fCBSZWFjdC5pc1ZhbGlkRWxlbWVudChlbGVtZW50KSwgJyVzKC4uLik6IEEgdmFsaWQgUmVh
Y3QgZWxlbWVudCAob3IgbnVsbCkgbXVzdCBiZSByZXR1cm5lZC4gWW91IG1heSBoYXZlICcgKyAn
cmV0dXJuZWQgdW5kZWZpbmVkLCBhbiBhcnJheSBvciBzb21lIG90aGVyIGludmFsaWQgb2JqZWN0
LicsIENvbXBvbmVudC5kaXNwbGF5TmFtZSB8fCBDb21wb25lbnQubmFtZSB8fCAnQ29tcG9uZW50
JykgOiB2b2lkIDA7CisgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2Fybmlu
ZyghQ29tcG9uZW50LmNoaWxkQ29udGV4dFR5cGVzLCAnJXMoLi4uKTogY2hpbGRDb250ZXh0VHlw
ZXMgY2Fubm90IGJlIGRlZmluZWQgb24gYSBmdW5jdGlvbmFsIGNvbXBvbmVudC4nLCBDb21wb25l
bnQuZGlzcGxheU5hbWUgfHwgQ29tcG9uZW50Lm5hbWUgfHwgJ0NvbXBvbmVudCcpIDogdm9pZCAw
OworICB9Cit9CisKK2Z1bmN0aW9uIHNob3VsZENvbnN0cnVjdChDb21wb25lbnQpIHsKKyAgcmV0
dXJuICEhKENvbXBvbmVudC5wcm90b3R5cGUgJiYgQ29tcG9uZW50LnByb3RvdHlwZS5pc1JlYWN0
Q29tcG9uZW50KTsKK30KKworZnVuY3Rpb24gaXNQdXJlQ29tcG9uZW50KENvbXBvbmVudCkgewor
ICByZXR1cm4gISEoQ29tcG9uZW50LnByb3RvdHlwZSAmJiBDb21wb25lbnQucHJvdG90eXBlLmlz
UHVyZVJlYWN0Q29tcG9uZW50KTsKK30KKworLy8gU2VwYXJhdGVkIGludG8gYSBmdW5jdGlvbiB0
byBjb250YWluIGRlb3B0aW1pemF0aW9ucyBjYXVzZWQgYnkgdHJ5L2ZpbmFsbHkuCitmdW5jdGlv
biBtZWFzdXJlTGlmZUN5Y2xlUGVyZihmbiwgZGVidWdJRCwgdGltZXJUeXBlKSB7CisgIGlmIChk
ZWJ1Z0lEID09PSAwKSB7CisgICAgLy8gVG9wLWxldmVsIHdyYXBwZXJzIChzZWUgUmVhY3RNb3Vu
dCkgYW5kIGVtcHR5IGNvbXBvbmVudHMgKHNlZQorICAgIC8vIFJlYWN0RE9NRW1wdHlDb21wb25l
bnQpIGFyZSBpbnZpc2libGUgdG8gaG9va3MgYW5kIGRldnRvb2xzLgorICAgIC8vIEJvdGggYXJl
IGltcGxlbWVudGF0aW9uIGRldGFpbHMgdGhhdCBzaG91bGQgZ28gYXdheSBpbiB0aGUgZnV0dXJl
LgorICAgIHJldHVybiBmbigpOworICB9CisKKyAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdU
b29sLm9uQmVnaW5MaWZlQ3ljbGVUaW1lcihkZWJ1Z0lELCB0aW1lclR5cGUpOworICB0cnkgewor
ICAgIHJldHVybiBmbigpOworICB9IGZpbmFsbHkgeworICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9u
LmRlYnVnVG9vbC5vbkVuZExpZmVDeWNsZVRpbWVyKGRlYnVnSUQsIHRpbWVyVHlwZSk7CisgIH0K
K30KKworLyoqCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0gVGhlIExpZmUtQ3ljbGUgb2YgYSBDb21w
b3NpdGUgQ29tcG9uZW50IC0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIC0gY29uc3RydWN0b3I6
IEluaXRpYWxpemF0aW9uIG9mIHN0YXRlLiBUaGUgaW5zdGFuY2UgaXMgbm93IHJldGFpbmVkLgor
ICogICAtIGNvbXBvbmVudFdpbGxNb3VudAorICogICAtIHJlbmRlcgorICogICAtIFtjaGlsZHJl
bidzIGNvbnN0cnVjdG9yc10KKyAqICAgICAtIFtjaGlsZHJlbidzIGNvbXBvbmVudFdpbGxNb3Vu
dCBhbmQgcmVuZGVyXQorICogICAgIC0gW2NoaWxkcmVuJ3MgY29tcG9uZW50RGlkTW91bnRdCisg
KiAgICAgLSBjb21wb25lbnREaWRNb3VudAorICoKKyAqICAgICAgIFVwZGF0ZSBQaGFzZXM6Cisg
KiAgICAgICAtIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMgKG9ubHkgY2FsbGVkIGlmIHBhcmVu
dCB1cGRhdGVkKQorICogICAgICAgLSBzaG91bGRDb21wb25lbnRVcGRhdGUKKyAqICAgICAgICAg
LSBjb21wb25lbnRXaWxsVXBkYXRlCisgKiAgICAgICAgICAgLSByZW5kZXIKKyAqICAgICAgICAg
ICAtIFtjaGlsZHJlbidzIGNvbnN0cnVjdG9ycyBvciByZWNlaXZlIHByb3BzIHBoYXNlc10KKyAq
ICAgICAgICAgLSBjb21wb25lbnREaWRVcGRhdGUKKyAqCisgKiAgICAgLSBjb21wb25lbnRXaWxs
VW5tb3VudAorICogICAgIC0gW2NoaWxkcmVuJ3MgY29tcG9uZW50V2lsbFVubW91bnRdCisgKiAg
IC0gW2NoaWxkcmVuIGRlc3Ryb3llZF0KKyAqIC0gKGRlc3Ryb3llZCk6IFRoZSBpbnN0YW5jZSBp
cyBub3cgYmxhbmssIHJlbGVhc2VkIGJ5IFJlYWN0IGFuZCByZWFkeSBmb3IgR0MuCisgKgorICog
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisvKioKKyAqIEFuIGluY3JlbWVudGluZyBJRCBh
c3NpZ25lZCB0byBlYWNoIGNvbXBvbmVudCB3aGVuIGl0IGlzIG1vdW50ZWQuIFRoaXMgaXMKKyAq
IHVzZWQgdG8gZW5mb3JjZSB0aGUgb3JkZXIgaW4gd2hpY2ggYFJlYWN0VXBkYXRlc2AgdXBkYXRl
cyBkaXJ0eSBjb21wb25lbnRzLgorICoKKyAqIEBwcml2YXRlCisgKi8KK3ZhciBuZXh0TW91bnRJ
RCA9IDE7CisKKy8qKgorICogQGxlbmRzIHtSZWFjdENvbXBvc2l0ZUNvbXBvbmVudC5wcm90b3R5
cGV9CisgKi8KK3ZhciBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCA9IHsKKworICAvKioKKyAgICog
QmFzZSBjb25zdHJ1Y3RvciBmb3IgYWxsIGNvbXBvc2l0ZSBjb21wb25lbnQuCisgICAqCisgICAq
IEBwYXJhbSB7UmVhY3RFbGVtZW50fSBlbGVtZW50CisgICAqIEBmaW5hbAorICAgKiBAaW50ZXJu
YWwKKyAgICovCisgIGNvbnN0cnVjdDogZnVuY3Rpb24gKGVsZW1lbnQpIHsKKyAgICB0aGlzLl9j
dXJyZW50RWxlbWVudCA9IGVsZW1lbnQ7CisgICAgdGhpcy5fcm9vdE5vZGVJRCA9IDA7CisgICAg
dGhpcy5fY29tcG9zaXRlVHlwZSA9IG51bGw7CisgICAgdGhpcy5faW5zdGFuY2UgPSBudWxsOwor
ICAgIHRoaXMuX2hvc3RQYXJlbnQgPSBudWxsOworICAgIHRoaXMuX2hvc3RDb250YWluZXJJbmZv
ID0gbnVsbDsKKworICAgIC8vIFNlZSBSZWFjdFVwZGF0ZVF1ZXVlCisgICAgdGhpcy5fdXBkYXRl
QmF0Y2hOdW1iZXIgPSBudWxsOworICAgIHRoaXMuX3BlbmRpbmdFbGVtZW50ID0gbnVsbDsKKyAg
ICB0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZSA9IG51bGw7CisgICAgdGhpcy5fcGVuZGluZ1JlcGxh
Y2VTdGF0ZSA9IGZhbHNlOworICAgIHRoaXMuX3BlbmRpbmdGb3JjZVVwZGF0ZSA9IGZhbHNlOwor
CisgICAgdGhpcy5fcmVuZGVyZWROb2RlVHlwZSA9IG51bGw7CisgICAgdGhpcy5fcmVuZGVyZWRD
b21wb25lbnQgPSBudWxsOworICAgIHRoaXMuX2NvbnRleHQgPSBudWxsOworICAgIHRoaXMuX21v
dW50T3JkZXIgPSAwOworICAgIHRoaXMuX3RvcExldmVsV3JhcHBlciA9IG51bGw7CisKKyAgICAv
LyBTZWUgUmVhY3RVcGRhdGVzIGFuZCBSZWFjdFVwZGF0ZVF1ZXVlLgorICAgIHRoaXMuX3BlbmRp
bmdDYWxsYmFja3MgPSBudWxsOworCisgICAgLy8gQ29tcG9uZW50V2lsbFVubW91bnQgc2hhbGwg
b25seSBiZSBjYWxsZWQgb25jZQorICAgIHRoaXMuX2NhbGxlZENvbXBvbmVudFdpbGxVbm1vdW50
ID0gZmFsc2U7CisKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7Cisg
ICAgICB0aGlzLl93YXJuZWRBYm91dFJlZnNJblJlbmRlciA9IGZhbHNlOworICAgIH0KKyAgfSwK
KworICAvKioKKyAgICogSW5pdGlhbGl6ZXMgdGhlIGNvbXBvbmVudCwgcmVuZGVycyBtYXJrdXAs
IGFuZCByZWdpc3RlcnMgZXZlbnQgbGlzdGVuZXJzLgorICAgKgorICAgKiBAcGFyYW0ge1JlYWN0
UmVjb25jaWxlVHJhbnNhY3Rpb258UmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbn0gdHJh
bnNhY3Rpb24KKyAgICogQHBhcmFtIHs/b2JqZWN0fSBob3N0UGFyZW50CisgICAqIEBwYXJhbSB7
P29iamVjdH0gaG9zdENvbnRhaW5lckluZm8KKyAgICogQHBhcmFtIHs/b2JqZWN0fSBjb250ZXh0
CisgICAqIEByZXR1cm4gez9zdHJpbmd9IFJlbmRlcmVkIG1hcmt1cCB0byBiZSBpbnNlcnRlZCBp
bnRvIHRoZSBET00uCisgICAqIEBmaW5hbAorICAgKiBAaW50ZXJuYWwKKyAgICovCisgIG1vdW50
Q29tcG9uZW50OiBmdW5jdGlvbiAodHJhbnNhY3Rpb24sIGhvc3RQYXJlbnQsIGhvc3RDb250YWlu
ZXJJbmZvLCBjb250ZXh0KSB7CisgICAgdmFyIF90aGlzID0gdGhpczsKKworICAgIHRoaXMuX2Nv
bnRleHQgPSBjb250ZXh0OworICAgIHRoaXMuX21vdW50T3JkZXIgPSBuZXh0TW91bnRJRCsrOwor
ICAgIHRoaXMuX2hvc3RQYXJlbnQgPSBob3N0UGFyZW50OworICAgIHRoaXMuX2hvc3RDb250YWlu
ZXJJbmZvID0gaG9zdENvbnRhaW5lckluZm87CisKKyAgICB2YXIgcHVibGljUHJvcHMgPSB0aGlz
Ll9jdXJyZW50RWxlbWVudC5wcm9wczsKKyAgICB2YXIgcHVibGljQ29udGV4dCA9IHRoaXMuX3By
b2Nlc3NDb250ZXh0KGNvbnRleHQpOworCisgICAgdmFyIENvbXBvbmVudCA9IHRoaXMuX2N1cnJl
bnRFbGVtZW50LnR5cGU7CisKKyAgICB2YXIgdXBkYXRlUXVldWUgPSB0cmFuc2FjdGlvbi5nZXRV
cGRhdGVRdWV1ZSgpOworCisgICAgLy8gSW5pdGlhbGl6ZSB0aGUgcHVibGljIGNsYXNzCisgICAg
dmFyIGRvQ29uc3RydWN0ID0gc2hvdWxkQ29uc3RydWN0KENvbXBvbmVudCk7CisgICAgdmFyIGlu
c3QgPSB0aGlzLl9jb25zdHJ1Y3RDb21wb25lbnQoZG9Db25zdHJ1Y3QsIHB1YmxpY1Byb3BzLCBw
dWJsaWNDb250ZXh0LCB1cGRhdGVRdWV1ZSk7CisgICAgdmFyIHJlbmRlcmVkRWxlbWVudDsKKwor
ICAgIC8vIFN1cHBvcnQgZnVuY3Rpb25hbCBjb21wb25lbnRzCisgICAgaWYgKCFkb0NvbnN0cnVj
dCAmJiAoaW5zdCA9PSBudWxsIHx8IGluc3QucmVuZGVyID09IG51bGwpKSB7CisgICAgICByZW5k
ZXJlZEVsZW1lbnQgPSBpbnN0OworICAgICAgd2FybklmSW52YWxpZEVsZW1lbnQoQ29tcG9uZW50
LCByZW5kZXJlZEVsZW1lbnQpOworICAgICAgIShpbnN0ID09PSBudWxsIHx8IGluc3QgPT09IGZh
bHNlIHx8IFJlYWN0LmlzVmFsaWRFbGVtZW50KGluc3QpKSA/ICJkZXZlbG9wbWVudCIgIT09ICdw
cm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJyVzKC4uLik6IEEgdmFsaWQgUmVhY3QgZWxl
bWVudCAob3IgbnVsbCkgbXVzdCBiZSByZXR1cm5lZC4gWW91IG1heSBoYXZlIHJldHVybmVkIHVu
ZGVmaW5lZCwgYW4gYXJyYXkgb3Igc29tZSBvdGhlciBpbnZhbGlkIG9iamVjdC4nLCBDb21wb25l
bnQuZGlzcGxheU5hbWUgfHwgQ29tcG9uZW50Lm5hbWUgfHwgJ0NvbXBvbmVudCcpIDogX3Byb2RJ
bnZhcmlhbnQoJzEwNScsIENvbXBvbmVudC5kaXNwbGF5TmFtZSB8fCBDb21wb25lbnQubmFtZSB8
fCAnQ29tcG9uZW50JykgOiB2b2lkIDA7CisgICAgICBpbnN0ID0gbmV3IFN0YXRlbGVzc0NvbXBv
bmVudChDb21wb25lbnQpOworICAgICAgdGhpcy5fY29tcG9zaXRlVHlwZSA9IENvbXBvc2l0ZVR5
cGVzLlN0YXRlbGVzc0Z1bmN0aW9uYWw7CisgICAgfSBlbHNlIHsKKyAgICAgIGlmIChpc1B1cmVD
b21wb25lbnQoQ29tcG9uZW50KSkgeworICAgICAgICB0aGlzLl9jb21wb3NpdGVUeXBlID0gQ29t
cG9zaXRlVHlwZXMuUHVyZUNsYXNzOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgdGhpcy5fY29t
cG9zaXRlVHlwZSA9IENvbXBvc2l0ZVR5cGVzLkltcHVyZUNsYXNzOworICAgICAgfQorICAgIH0K
KworICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgIC8vIFRo
aXMgd2lsbCB0aHJvdyBsYXRlciBpbiBfcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50LCBidXQgYWRk
IGFuIGVhcmx5CisgICAgICAvLyB3YXJuaW5nIG5vdyB0byBoZWxwIGRlYnVnZ2luZworICAgICAg
aWYgKGluc3QucmVuZGVyID09IG51bGwpIHsKKyAgICAgICAgImRldmVsb3BtZW50IiAhPT0gJ3By
b2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJyVzKC4uLik6IE5vIGByZW5kZXJgIG1ldGhvZCBm
b3VuZCBvbiB0aGUgcmV0dXJuZWQgY29tcG9uZW50ICcgKyAnaW5zdGFuY2U6IHlvdSBtYXkgaGF2
ZSBmb3Jnb3R0ZW4gdG8gZGVmaW5lIGByZW5kZXJgLicsIENvbXBvbmVudC5kaXNwbGF5TmFtZSB8
fCBDb21wb25lbnQubmFtZSB8fCAnQ29tcG9uZW50JykgOiB2b2lkIDA7CisgICAgICB9CisKKyAg
ICAgIHZhciBwcm9wc011dGF0ZWQgPSBpbnN0LnByb3BzICE9PSBwdWJsaWNQcm9wczsKKyAgICAg
IHZhciBjb21wb25lbnROYW1lID0gQ29tcG9uZW50LmRpc3BsYXlOYW1lIHx8IENvbXBvbmVudC5u
YW1lIHx8ICdDb21wb25lbnQnOworCisgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlv
bicgPyB3YXJuaW5nKGluc3QucHJvcHMgPT09IHVuZGVmaW5lZCB8fCAhcHJvcHNNdXRhdGVkLCAn
JXMoLi4uKTogV2hlbiBjYWxsaW5nIHN1cGVyKCkgaW4gYCVzYCwgbWFrZSBzdXJlIHRvIHBhc3Mg
JyArICd1cCB0aGUgc2FtZSBwcm9wcyB0aGF0IHlvdXIgY29tcG9uZW50XCdzIGNvbnN0cnVjdG9y
IHdhcyBwYXNzZWQuJywgY29tcG9uZW50TmFtZSwgY29tcG9uZW50TmFtZSkgOiB2b2lkIDA7Cisg
ICAgfQorCisgICAgLy8gVGhlc2Ugc2hvdWxkIGJlIHNldCB1cCBpbiB0aGUgY29uc3RydWN0b3Is
IGJ1dCBhcyBhIGNvbnZlbmllbmNlIGZvcgorICAgIC8vIHNpbXBsZXIgY2xhc3MgYWJzdHJhY3Rp
b25zLCB3ZSBzZXQgdGhlbSB1cCBhZnRlciB0aGUgZmFjdC4KKyAgICBpbnN0LnByb3BzID0gcHVi
bGljUHJvcHM7CisgICAgaW5zdC5jb250ZXh0ID0gcHVibGljQ29udGV4dDsKKyAgICBpbnN0LnJl
ZnMgPSBlbXB0eU9iamVjdDsKKyAgICBpbnN0LnVwZGF0ZXIgPSB1cGRhdGVRdWV1ZTsKKworICAg
IHRoaXMuX2luc3RhbmNlID0gaW5zdDsKKworICAgIC8vIFN0b3JlIGEgcmVmZXJlbmNlIGZyb20g
dGhlIGluc3RhbmNlIGJhY2sgdG8gdGhlIGludGVybmFsIHJlcHJlc2VudGF0aW9uCisgICAgUmVh
Y3RJbnN0YW5jZU1hcC5zZXQoaW5zdCwgdGhpcyk7CisKKyAgICBpZiAoImRldmVsb3BtZW50IiAh
PT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAvLyBTaW5jZSBwbGFpbiBKUyBjbGFzc2VzIGFyZSBk
ZWZpbmVkIHdpdGhvdXQgYW55IHNwZWNpYWwgaW5pdGlhbGl6YXRpb24KKyAgICAgIC8vIGxvZ2lj
LCB3ZSBjYW4gbm90IGNhdGNoIGNvbW1vbiBlcnJvcnMgZWFybHkuIFRoZXJlZm9yZSwgd2UgaGF2
ZSB0bworICAgICAgLy8gY2F0Y2ggdGhlbSBoZXJlLCBhdCBpbml0aWFsaXphdGlvbiB0aW1lLCBp
bnN0ZWFkLgorICAgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZygh
aW5zdC5nZXRJbml0aWFsU3RhdGUgfHwgaW5zdC5nZXRJbml0aWFsU3RhdGUuaXNSZWFjdENsYXNz
QXBwcm92ZWQsICdnZXRJbml0aWFsU3RhdGUgd2FzIGRlZmluZWQgb24gJXMsIGEgcGxhaW4gSmF2
YVNjcmlwdCBjbGFzcy4gJyArICdUaGlzIGlzIG9ubHkgc3VwcG9ydGVkIGZvciBjbGFzc2VzIGNy
ZWF0ZWQgdXNpbmcgUmVhY3QuY3JlYXRlQ2xhc3MuICcgKyAnRGlkIHlvdSBtZWFuIHRvIGRlZmlu
ZSBhIHN0YXRlIHByb3BlcnR5IGluc3RlYWQ/JywgdGhpcy5nZXROYW1lKCkgfHwgJ2EgY29tcG9u
ZW50JykgOiB2b2lkIDA7CisgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3
YXJuaW5nKCFpbnN0LmdldERlZmF1bHRQcm9wcyB8fCBpbnN0LmdldERlZmF1bHRQcm9wcy5pc1Jl
YWN0Q2xhc3NBcHByb3ZlZCwgJ2dldERlZmF1bHRQcm9wcyB3YXMgZGVmaW5lZCBvbiAlcywgYSBw
bGFpbiBKYXZhU2NyaXB0IGNsYXNzLiAnICsgJ1RoaXMgaXMgb25seSBzdXBwb3J0ZWQgZm9yIGNs
YXNzZXMgY3JlYXRlZCB1c2luZyBSZWFjdC5jcmVhdGVDbGFzcy4gJyArICdVc2UgYSBzdGF0aWMg
cHJvcGVydHkgdG8gZGVmaW5lIGRlZmF1bHRQcm9wcyBpbnN0ZWFkLicsIHRoaXMuZ2V0TmFtZSgp
IHx8ICdhIGNvbXBvbmVudCcpIDogdm9pZCAwOworICAgICAgImRldmVsb3BtZW50IiAhPT0gJ3By
b2R1Y3Rpb24nID8gd2FybmluZyghaW5zdC5wcm9wVHlwZXMsICdwcm9wVHlwZXMgd2FzIGRlZmlu
ZWQgYXMgYW4gaW5zdGFuY2UgcHJvcGVydHkgb24gJXMuIFVzZSBhIHN0YXRpYyAnICsgJ3Byb3Bl
cnR5IHRvIGRlZmluZSBwcm9wVHlwZXMgaW5zdGVhZC4nLCB0aGlzLmdldE5hbWUoKSB8fCAnYSBj
b21wb25lbnQnKSA6IHZvaWQgMDsKKyAgICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9u
JyA/IHdhcm5pbmcoIWluc3QuY29udGV4dFR5cGVzLCAnY29udGV4dFR5cGVzIHdhcyBkZWZpbmVk
IGFzIGFuIGluc3RhbmNlIHByb3BlcnR5IG9uICVzLiBVc2UgYSAnICsgJ3N0YXRpYyBwcm9wZXJ0
eSB0byBkZWZpbmUgY29udGV4dFR5cGVzIGluc3RlYWQuJywgdGhpcy5nZXROYW1lKCkgfHwgJ2Eg
Y29tcG9uZW50JykgOiB2b2lkIDA7CisgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlv
bicgPyB3YXJuaW5nKHR5cGVvZiBpbnN0LmNvbXBvbmVudFNob3VsZFVwZGF0ZSAhPT0gJ2Z1bmN0
aW9uJywgJyVzIGhhcyBhIG1ldGhvZCBjYWxsZWQgJyArICdjb21wb25lbnRTaG91bGRVcGRhdGUo
KS4gRGlkIHlvdSBtZWFuIHNob3VsZENvbXBvbmVudFVwZGF0ZSgpPyAnICsgJ1RoZSBuYW1lIGlz
IHBocmFzZWQgYXMgYSBxdWVzdGlvbiBiZWNhdXNlIHRoZSBmdW5jdGlvbiBpcyAnICsgJ2V4cGVj
dGVkIHRvIHJldHVybiBhIHZhbHVlLicsIHRoaXMuZ2V0TmFtZSgpIHx8ICdBIGNvbXBvbmVudCcp
IDogdm9pZCAwOworICAgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2Fybmlu
Zyh0eXBlb2YgaW5zdC5jb21wb25lbnREaWRVbm1vdW50ICE9PSAnZnVuY3Rpb24nLCAnJXMgaGFz
IGEgbWV0aG9kIGNhbGxlZCAnICsgJ2NvbXBvbmVudERpZFVubW91bnQoKS4gQnV0IHRoZXJlIGlz
IG5vIHN1Y2ggbGlmZWN5Y2xlIG1ldGhvZC4gJyArICdEaWQgeW91IG1lYW4gY29tcG9uZW50V2ls
bFVubW91bnQoKT8nLCB0aGlzLmdldE5hbWUoKSB8fCAnQSBjb21wb25lbnQnKSA6IHZvaWQgMDsK
KyAgICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcodHlwZW9mIGlu
c3QuY29tcG9uZW50V2lsbFJlY2lldmVQcm9wcyAhPT0gJ2Z1bmN0aW9uJywgJyVzIGhhcyBhIG1l
dGhvZCBjYWxsZWQgJyArICdjb21wb25lbnRXaWxsUmVjaWV2ZVByb3BzKCkuIERpZCB5b3UgbWVh
biBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKCk/JywgdGhpcy5nZXROYW1lKCkgfHwgJ0EgY29t
cG9uZW50JykgOiB2b2lkIDA7CisgICAgfQorCisgICAgdmFyIGluaXRpYWxTdGF0ZSA9IGluc3Qu
c3RhdGU7CisgICAgaWYgKGluaXRpYWxTdGF0ZSA9PT0gdW5kZWZpbmVkKSB7CisgICAgICBpbnN0
LnN0YXRlID0gaW5pdGlhbFN0YXRlID0gbnVsbDsKKyAgICB9CisgICAgISh0eXBlb2YgaW5pdGlh
bFN0YXRlID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShpbml0aWFsU3RhdGUpKSA/ICJk
ZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJyVzLnN0YXRl
OiBtdXN0IGJlIHNldCB0byBhbiBvYmplY3Qgb3IgbnVsbCcsIHRoaXMuZ2V0TmFtZSgpIHx8ICdS
ZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDogX3Byb2RJbnZhcmlhbnQoJzEwNicsIHRoaXMuZ2V0
TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDogdm9pZCAwOworCisgICAgdGhp
cy5fcGVuZGluZ1N0YXRlUXVldWUgPSBudWxsOworICAgIHRoaXMuX3BlbmRpbmdSZXBsYWNlU3Rh
dGUgPSBmYWxzZTsKKyAgICB0aGlzLl9wZW5kaW5nRm9yY2VVcGRhdGUgPSBmYWxzZTsKKworICAg
IHZhciBtYXJrdXA7CisgICAgaWYgKGluc3QudW5zdGFibGVfaGFuZGxlRXJyb3IpIHsKKyAgICAg
IG1hcmt1cCA9IHRoaXMucGVyZm9ybUluaXRpYWxNb3VudFdpdGhFcnJvckhhbmRsaW5nKHJlbmRl
cmVkRWxlbWVudCwgaG9zdFBhcmVudCwgaG9zdENvbnRhaW5lckluZm8sIHRyYW5zYWN0aW9uLCBj
b250ZXh0KTsKKyAgICB9IGVsc2UgeworICAgICAgbWFya3VwID0gdGhpcy5wZXJmb3JtSW5pdGlh
bE1vdW50KHJlbmRlcmVkRWxlbWVudCwgaG9zdFBhcmVudCwgaG9zdENvbnRhaW5lckluZm8sIHRy
YW5zYWN0aW9uLCBjb250ZXh0KTsKKyAgICB9CisKKyAgICBpZiAoaW5zdC5jb21wb25lbnREaWRN
b3VudCkgeworICAgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAg
ICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgICBtZWFzdXJlTGlmZUN5Y2xlUGVyZihmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICByZXR1cm4gaW5zdC5jb21wb25lbnREaWRNb3VudCgpOworICAgICAgICAgIH0sIF90aGlz
Ll9kZWJ1Z0lELCAnY29tcG9uZW50RGlkTW91bnQnKTsKKyAgICAgICAgfSk7CisgICAgICB9IGVs
c2UgeworICAgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGlu
c3QuY29tcG9uZW50RGlkTW91bnQsIGluc3QpOworICAgICAgfQorICAgIH0KKworICAgIHJldHVy
biBtYXJrdXA7CisgIH0sCisKKyAgX2NvbnN0cnVjdENvbXBvbmVudDogZnVuY3Rpb24gKGRvQ29u
c3RydWN0LCBwdWJsaWNQcm9wcywgcHVibGljQ29udGV4dCwgdXBkYXRlUXVldWUpIHsKKyAgICBp
ZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICBSZWFjdEN1cnJlbnRP
d25lci5jdXJyZW50ID0gdGhpczsKKyAgICAgIHRyeSB7CisgICAgICAgIHJldHVybiB0aGlzLl9j
b25zdHJ1Y3RDb21wb25lbnRXaXRob3V0T3duZXIoZG9Db25zdHJ1Y3QsIHB1YmxpY1Byb3BzLCBw
dWJsaWNDb250ZXh0LCB1cGRhdGVRdWV1ZSk7CisgICAgICB9IGZpbmFsbHkgeworICAgICAgICBS
ZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ID0gbnVsbDsKKyAgICAgIH0KKyAgICB9IGVsc2Ugewor
ICAgICAgcmV0dXJuIHRoaXMuX2NvbnN0cnVjdENvbXBvbmVudFdpdGhvdXRPd25lcihkb0NvbnN0
cnVjdCwgcHVibGljUHJvcHMsIHB1YmxpY0NvbnRleHQsIHVwZGF0ZVF1ZXVlKTsKKyAgICB9Cisg
IH0sCisKKyAgX2NvbnN0cnVjdENvbXBvbmVudFdpdGhvdXRPd25lcjogZnVuY3Rpb24gKGRvQ29u
c3RydWN0LCBwdWJsaWNQcm9wcywgcHVibGljQ29udGV4dCwgdXBkYXRlUXVldWUpIHsKKyAgICB2
YXIgQ29tcG9uZW50ID0gdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTsKKworICAgIGlmIChkb0Nv
bnN0cnVjdCkgeworICAgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgewor
ICAgICAgICByZXR1cm4gbWVhc3VyZUxpZmVDeWNsZVBlcmYoZnVuY3Rpb24gKCkgeworICAgICAg
ICAgIHJldHVybiBuZXcgQ29tcG9uZW50KHB1YmxpY1Byb3BzLCBwdWJsaWNDb250ZXh0LCB1cGRh
dGVRdWV1ZSk7CisgICAgICAgIH0sIHRoaXMuX2RlYnVnSUQsICdjdG9yJyk7CisgICAgICB9IGVs
c2UgeworICAgICAgICByZXR1cm4gbmV3IENvbXBvbmVudChwdWJsaWNQcm9wcywgcHVibGljQ29u
dGV4dCwgdXBkYXRlUXVldWUpOworICAgICAgfQorICAgIH0KKworICAgIC8vIFRoaXMgY2FuIHN0
aWxsIGJlIGFuIGluc3RhbmNlIGluIGNhc2Ugb2YgZmFjdG9yeSBjb21wb25lbnRzCisgICAgLy8g
YnV0IHdlJ2xsIGNvdW50IHRoaXMgYXMgdGltZSBzcGVudCByZW5kZXJpbmcgYXMgdGhlIG1vcmUg
Y29tbW9uIGNhc2UuCisgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgewor
ICAgICAgcmV0dXJuIG1lYXN1cmVMaWZlQ3ljbGVQZXJmKGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
cmV0dXJuIENvbXBvbmVudChwdWJsaWNQcm9wcywgcHVibGljQ29udGV4dCwgdXBkYXRlUXVldWUp
OworICAgICAgfSwgdGhpcy5fZGVidWdJRCwgJ3JlbmRlcicpOworICAgIH0gZWxzZSB7CisgICAg
ICByZXR1cm4gQ29tcG9uZW50KHB1YmxpY1Byb3BzLCBwdWJsaWNDb250ZXh0LCB1cGRhdGVRdWV1
ZSk7CisgICAgfQorICB9LAorCisgIHBlcmZvcm1Jbml0aWFsTW91bnRXaXRoRXJyb3JIYW5kbGlu
ZzogZnVuY3Rpb24gKHJlbmRlcmVkRWxlbWVudCwgaG9zdFBhcmVudCwgaG9zdENvbnRhaW5lcklu
Zm8sIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7CisgICAgdmFyIG1hcmt1cDsKKyAgICB2YXIgY2hl
Y2twb2ludCA9IHRyYW5zYWN0aW9uLmNoZWNrcG9pbnQoKTsKKyAgICB0cnkgeworICAgICAgbWFy
a3VwID0gdGhpcy5wZXJmb3JtSW5pdGlhbE1vdW50KHJlbmRlcmVkRWxlbWVudCwgaG9zdFBhcmVu
dCwgaG9zdENvbnRhaW5lckluZm8sIHRyYW5zYWN0aW9uLCBjb250ZXh0KTsKKyAgICB9IGNhdGNo
IChlKSB7CisgICAgICAvLyBSb2xsIGJhY2sgdG8gY2hlY2twb2ludCwgaGFuZGxlIGVycm9yICh3
aGljaCBtYXkgYWRkIGl0ZW1zIHRvIHRoZSB0cmFuc2FjdGlvbiksIGFuZCB0YWtlIGEgbmV3IGNo
ZWNrcG9pbnQKKyAgICAgIHRyYW5zYWN0aW9uLnJvbGxiYWNrKGNoZWNrcG9pbnQpOworICAgICAg
dGhpcy5faW5zdGFuY2UudW5zdGFibGVfaGFuZGxlRXJyb3IoZSk7CisgICAgICBpZiAodGhpcy5f
cGVuZGluZ1N0YXRlUXVldWUpIHsKKyAgICAgICAgdGhpcy5faW5zdGFuY2Uuc3RhdGUgPSB0aGlz
Ll9wcm9jZXNzUGVuZGluZ1N0YXRlKHRoaXMuX2luc3RhbmNlLnByb3BzLCB0aGlzLl9pbnN0YW5j
ZS5jb250ZXh0KTsKKyAgICAgIH0KKyAgICAgIGNoZWNrcG9pbnQgPSB0cmFuc2FjdGlvbi5jaGVj
a3BvaW50KCk7CisKKyAgICAgIHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50LnVubW91bnRDb21wb25l
bnQodHJ1ZSk7CisgICAgICB0cmFuc2FjdGlvbi5yb2xsYmFjayhjaGVja3BvaW50KTsKKworICAg
ICAgLy8gVHJ5IGFnYWluIC0gd2UndmUgaW5mb3JtZWQgdGhlIGNvbXBvbmVudCBhYm91dCB0aGUg
ZXJyb3IsIHNvIHRoZXkgY2FuIHJlbmRlciBhbiBlcnJvciBtZXNzYWdlIHRoaXMgdGltZS4KKyAg
ICAgIC8vIElmIHRoaXMgdGhyb3dzIGFnYWluLCB0aGUgZXJyb3Igd2lsbCBidWJibGUgdXAgKGFu
ZCBjYW4gYmUgY2F1Z2h0IGJ5IGEgaGlnaGVyIGVycm9yIGJvdW5kYXJ5KS4KKyAgICAgIG1hcmt1
cCA9IHRoaXMucGVyZm9ybUluaXRpYWxNb3VudChyZW5kZXJlZEVsZW1lbnQsIGhvc3RQYXJlbnQs
IGhvc3RDb250YWluZXJJbmZvLCB0cmFuc2FjdGlvbiwgY29udGV4dCk7CisgICAgfQorICAgIHJl
dHVybiBtYXJrdXA7CisgIH0sCisKKyAgcGVyZm9ybUluaXRpYWxNb3VudDogZnVuY3Rpb24gKHJl
bmRlcmVkRWxlbWVudCwgaG9zdFBhcmVudCwgaG9zdENvbnRhaW5lckluZm8sIHRyYW5zYWN0aW9u
LCBjb250ZXh0KSB7CisgICAgdmFyIGluc3QgPSB0aGlzLl9pbnN0YW5jZTsKKworICAgIHZhciBk
ZWJ1Z0lEID0gMDsKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7Cisg
ICAgICBkZWJ1Z0lEID0gdGhpcy5fZGVidWdJRDsKKyAgICB9CisKKyAgICBpZiAoaW5zdC5jb21w
b25lbnRXaWxsTW91bnQpIHsKKyAgICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlv
bicpIHsKKyAgICAgICAgbWVhc3VyZUxpZmVDeWNsZVBlcmYoZnVuY3Rpb24gKCkgeworICAgICAg
ICAgIHJldHVybiBpbnN0LmNvbXBvbmVudFdpbGxNb3VudCgpOworICAgICAgICB9LCBkZWJ1Z0lE
LCAnY29tcG9uZW50V2lsbE1vdW50Jyk7CisgICAgICB9IGVsc2UgeworICAgICAgICBpbnN0LmNv
bXBvbmVudFdpbGxNb3VudCgpOworICAgICAgfQorICAgICAgLy8gV2hlbiBtb3VudGluZywgY2Fs
bHMgdG8gYHNldFN0YXRlYCBieSBgY29tcG9uZW50V2lsbE1vdW50YCB3aWxsIHNldAorICAgICAg
Ly8gYHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlYCB3aXRob3V0IHRyaWdnZXJpbmcgYSByZS1yZW5k
ZXIuCisgICAgICBpZiAodGhpcy5fcGVuZGluZ1N0YXRlUXVldWUpIHsKKyAgICAgICAgaW5zdC5z
dGF0ZSA9IHRoaXMuX3Byb2Nlc3NQZW5kaW5nU3RhdGUoaW5zdC5wcm9wcywgaW5zdC5jb250ZXh0
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICAvLyBJZiBub3QgYSBzdGF0ZWxlc3MgY29tcG9uZW50
LCB3ZSBub3cgcmVuZGVyCisgICAgaWYgKHJlbmRlcmVkRWxlbWVudCA9PT0gdW5kZWZpbmVkKSB7
CisgICAgICByZW5kZXJlZEVsZW1lbnQgPSB0aGlzLl9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnQo
KTsKKyAgICB9CisKKyAgICB2YXIgbm9kZVR5cGUgPSBSZWFjdE5vZGVUeXBlcy5nZXRUeXBlKHJl
bmRlcmVkRWxlbWVudCk7CisgICAgdGhpcy5fcmVuZGVyZWROb2RlVHlwZSA9IG5vZGVUeXBlOwor
ICAgIHZhciBjaGlsZCA9IHRoaXMuX2luc3RhbnRpYXRlUmVhY3RDb21wb25lbnQocmVuZGVyZWRF
bGVtZW50LCBub2RlVHlwZSAhPT0gUmVhY3ROb2RlVHlwZXMuRU1QVFkgLyogc2hvdWxkSGF2ZURl
YnVnSUQgKi8KKyAgICApOworICAgIHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50ID0gY2hpbGQ7CisK
KyAgICB2YXIgbWFya3VwID0gUmVhY3RSZWNvbmNpbGVyLm1vdW50Q29tcG9uZW50KGNoaWxkLCB0
cmFuc2FjdGlvbiwgaG9zdFBhcmVudCwgaG9zdENvbnRhaW5lckluZm8sIHRoaXMuX3Byb2Nlc3ND
aGlsZENvbnRleHQoY29udGV4dCksIGRlYnVnSUQpOworCisgICAgaWYgKCJkZXZlbG9wbWVudCIg
IT09ICdwcm9kdWN0aW9uJykgeworICAgICAgaWYgKGRlYnVnSUQgIT09IDApIHsKKyAgICAgICAg
dmFyIGNoaWxkRGVidWdJRHMgPSBjaGlsZC5fZGVidWdJRCAhPT0gMCA/IFtjaGlsZC5fZGVidWdJ
RF0gOiBbXTsKKyAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uU2V0Q2hp
bGRyZW4oZGVidWdJRCwgY2hpbGREZWJ1Z0lEcyk7CisgICAgICB9CisgICAgfQorCisgICAgcmV0
dXJuIG1hcmt1cDsKKyAgfSwKKworICBnZXRIb3N0Tm9kZTogZnVuY3Rpb24gKCkgeworICAgIHJl
dHVybiBSZWFjdFJlY29uY2lsZXIuZ2V0SG9zdE5vZGUodGhpcy5fcmVuZGVyZWRDb21wb25lbnQp
OworICB9LAorCisgIC8qKgorICAgKiBSZWxlYXNlcyBhbnkgcmVzb3VyY2VzIGFsbG9jYXRlZCBi
eSBgbW91bnRDb21wb25lbnRgLgorICAgKgorICAgKiBAZmluYWwKKyAgICogQGludGVybmFsCisg
ICAqLworICB1bm1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAoc2FmZWx5KSB7CisgICAgaWYgKCF0
aGlzLl9yZW5kZXJlZENvbXBvbmVudCkgeworICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHZh
ciBpbnN0ID0gdGhpcy5faW5zdGFuY2U7CisKKyAgICBpZiAoaW5zdC5jb21wb25lbnRXaWxsVW5t
b3VudCAmJiAhaW5zdC5fY2FsbGVkQ29tcG9uZW50V2lsbFVubW91bnQpIHsKKyAgICAgIGluc3Qu
X2NhbGxlZENvbXBvbmVudFdpbGxVbm1vdW50ID0gdHJ1ZTsKKworICAgICAgaWYgKHNhZmVseSkg
eworICAgICAgICB2YXIgbmFtZSA9IHRoaXMuZ2V0TmFtZSgpICsgJy5jb21wb25lbnRXaWxsVW5t
b3VudCgpJzsKKyAgICAgICAgUmVhY3RFcnJvclV0aWxzLmludm9rZUd1YXJkZWRDYWxsYmFjayhu
YW1lLCBpbnN0LmNvbXBvbmVudFdpbGxVbm1vdW50LmJpbmQoaW5zdCkpOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAg
ICAgIG1lYXN1cmVMaWZlQ3ljbGVQZXJmKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHJldHVy
biBpbnN0LmNvbXBvbmVudFdpbGxVbm1vdW50KCk7CisgICAgICAgICAgfSwgdGhpcy5fZGVidWdJ
RCwgJ2NvbXBvbmVudFdpbGxVbm1vdW50Jyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
aW5zdC5jb21wb25lbnRXaWxsVW5tb3VudCgpOworICAgICAgICB9CisgICAgICB9CisgICAgfQor
CisgICAgaWYgKHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50KSB7CisgICAgICBSZWFjdFJlY29uY2ls
ZXIudW5tb3VudENvbXBvbmVudCh0aGlzLl9yZW5kZXJlZENvbXBvbmVudCwgc2FmZWx5KTsKKyAg
ICAgIHRoaXMuX3JlbmRlcmVkTm9kZVR5cGUgPSBudWxsOworICAgICAgdGhpcy5fcmVuZGVyZWRD
b21wb25lbnQgPSBudWxsOworICAgICAgdGhpcy5faW5zdGFuY2UgPSBudWxsOworICAgIH0KKwor
ICAgIC8vIFJlc2V0IHBlbmRpbmcgZmllbGRzCisgICAgLy8gRXZlbiBpZiB0aGlzIGNvbXBvbmVu
dCBpcyBzY2hlZHVsZWQgZm9yIGFub3RoZXIgdXBkYXRlIGluIFJlYWN0VXBkYXRlcywKKyAgICAv
LyBpdCB3b3VsZCBzdGlsbCBiZSBpZ25vcmVkIGJlY2F1c2UgdGhlc2UgZmllbGRzIGFyZSByZXNl
dC4KKyAgICB0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZSA9IG51bGw7CisgICAgdGhpcy5fcGVuZGlu
Z1JlcGxhY2VTdGF0ZSA9IGZhbHNlOworICAgIHRoaXMuX3BlbmRpbmdGb3JjZVVwZGF0ZSA9IGZh
bHNlOworICAgIHRoaXMuX3BlbmRpbmdDYWxsYmFja3MgPSBudWxsOworICAgIHRoaXMuX3BlbmRp
bmdFbGVtZW50ID0gbnVsbDsKKworICAgIC8vIFRoZXNlIGZpZWxkcyBkbyBub3QgcmVhbGx5IG5l
ZWQgdG8gYmUgcmVzZXQgc2luY2UgdGhpcyBvYmplY3QgaXMgbm8KKyAgICAvLyBsb25nZXIgYWNj
ZXNzaWJsZS4KKyAgICB0aGlzLl9jb250ZXh0ID0gbnVsbDsKKyAgICB0aGlzLl9yb290Tm9kZUlE
ID0gMDsKKyAgICB0aGlzLl90b3BMZXZlbFdyYXBwZXIgPSBudWxsOworCisgICAgLy8gRGVsZXRl
IHRoZSByZWZlcmVuY2UgZnJvbSB0aGUgaW5zdGFuY2UgdG8gdGhpcyBpbnRlcm5hbCByZXByZXNl
bnRhdGlvbgorICAgIC8vIHdoaWNoIGFsbG93IHRoZSBpbnRlcm5hbHMgdG8gYmUgcHJvcGVybHkg
Y2xlYW5lZCB1cCBldmVuIGlmIHRoZSB1c2VyCisgICAgLy8gbGVha3MgYSByZWZlcmVuY2UgdG8g
dGhlIHB1YmxpYyBpbnN0YW5jZS4KKyAgICBSZWFjdEluc3RhbmNlTWFwLnJlbW92ZShpbnN0KTsK
KworICAgIC8vIFNvbWUgZXhpc3RpbmcgY29tcG9uZW50cyByZWx5IG9uIGluc3QucHJvcHMgZXZl
biBhZnRlciB0aGV5J3ZlIGJlZW4KKyAgICAvLyBkZXN0cm95ZWQgKGluIGV2ZW50IGhhbmRsZXJz
KS4KKyAgICAvLyBUT0RPOiBpbnN0LnByb3BzID0gbnVsbDsKKyAgICAvLyBUT0RPOiBpbnN0LnN0
YXRlID0gbnVsbDsKKyAgICAvLyBUT0RPOiBpbnN0LmNvbnRleHQgPSBudWxsOworICB9LAorCisg
IC8qKgorICAgKiBGaWx0ZXJzIHRoZSBjb250ZXh0IG9iamVjdCB0byBvbmx5IGNvbnRhaW4ga2V5
cyBzcGVjaWZpZWQgaW4KKyAgICogYGNvbnRleHRUeXBlc2AKKyAgICoKKyAgICogQHBhcmFtIHtv
YmplY3R9IGNvbnRleHQKKyAgICogQHJldHVybiB7P29iamVjdH0KKyAgICogQHByaXZhdGUKKyAg
ICovCisgIF9tYXNrQ29udGV4dDogZnVuY3Rpb24gKGNvbnRleHQpIHsKKyAgICB2YXIgQ29tcG9u
ZW50ID0gdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTsKKyAgICB2YXIgY29udGV4dFR5cGVzID0g
Q29tcG9uZW50LmNvbnRleHRUeXBlczsKKyAgICBpZiAoIWNvbnRleHRUeXBlcykgeworICAgICAg
cmV0dXJuIGVtcHR5T2JqZWN0OworICAgIH0KKyAgICB2YXIgbWFza2VkQ29udGV4dCA9IHt9Owor
ICAgIGZvciAodmFyIGNvbnRleHROYW1lIGluIGNvbnRleHRUeXBlcykgeworICAgICAgbWFza2Vk
Q29udGV4dFtjb250ZXh0TmFtZV0gPSBjb250ZXh0W2NvbnRleHROYW1lXTsKKyAgICB9CisgICAg
cmV0dXJuIG1hc2tlZENvbnRleHQ7CisgIH0sCisKKyAgLyoqCisgICAqIEZpbHRlcnMgdGhlIGNv
bnRleHQgb2JqZWN0IHRvIG9ubHkgY29udGFpbiBrZXlzIHNwZWNpZmllZCBpbgorICAgKiBgY29u
dGV4dFR5cGVzYCwgYW5kIGFzc2VydHMgdGhhdCB0aGV5IGFyZSB2YWxpZC4KKyAgICoKKyAgICog
QHBhcmFtIHtvYmplY3R9IGNvbnRleHQKKyAgICogQHJldHVybiB7P29iamVjdH0KKyAgICogQHBy
aXZhdGUKKyAgICovCisgIF9wcm9jZXNzQ29udGV4dDogZnVuY3Rpb24gKGNvbnRleHQpIHsKKyAg
ICB2YXIgbWFza2VkQ29udGV4dCA9IHRoaXMuX21hc2tDb250ZXh0KGNvbnRleHQpOworICAgIGlm
ICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgIHZhciBDb21wb25lbnQg
PSB0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlOworICAgICAgaWYgKENvbXBvbmVudC5jb250ZXh0
VHlwZXMpIHsKKyAgICAgICAgdGhpcy5fY2hlY2tDb250ZXh0VHlwZXMoQ29tcG9uZW50LmNvbnRl
eHRUeXBlcywgbWFza2VkQ29udGV4dCwgJ2NvbnRleHQnKTsKKyAgICAgIH0KKyAgICB9CisgICAg
cmV0dXJuIG1hc2tlZENvbnRleHQ7CisgIH0sCisKKyAgLyoqCisgICAqIEBwYXJhbSB7b2JqZWN0
fSBjdXJyZW50Q29udGV4dAorICAgKiBAcmV0dXJuIHtvYmplY3R9CisgICAqIEBwcml2YXRlCisg
ICAqLworICBfcHJvY2Vzc0NoaWxkQ29udGV4dDogZnVuY3Rpb24gKGN1cnJlbnRDb250ZXh0KSB7
CisgICAgdmFyIENvbXBvbmVudCA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGU7CisgICAgdmFy
IGluc3QgPSB0aGlzLl9pbnN0YW5jZTsKKyAgICB2YXIgY2hpbGRDb250ZXh0OworCisgICAgaWYg
KGluc3QuZ2V0Q2hpbGRDb250ZXh0KSB7CisgICAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3By
b2R1Y3Rpb24nKSB7CisgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkJl
Z2luUHJvY2Vzc2luZ0NoaWxkQ29udGV4dCgpOworICAgICAgICB0cnkgeworICAgICAgICAgIGNo
aWxkQ29udGV4dCA9IGluc3QuZ2V0Q2hpbGRDb250ZXh0KCk7CisgICAgICAgIH0gZmluYWxseSB7
CisgICAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uRW5kUHJvY2Vzc2lu
Z0NoaWxkQ29udGV4dCgpOworICAgICAgICB9CisgICAgICB9IGVsc2UgeworICAgICAgICBjaGls
ZENvbnRleHQgPSBpbnN0LmdldENoaWxkQ29udGV4dCgpOworICAgICAgfQorICAgIH0KKworICAg
IGlmIChjaGlsZENvbnRleHQpIHsKKyAgICAgICEodHlwZW9mIENvbXBvbmVudC5jaGlsZENvbnRl
eHRUeXBlcyA9PT0gJ29iamVjdCcpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8g
aW52YXJpYW50KGZhbHNlLCAnJXMuZ2V0Q2hpbGRDb250ZXh0KCk6IGNoaWxkQ29udGV4dFR5cGVz
IG11c3QgYmUgZGVmaW5lZCBpbiBvcmRlciB0byB1c2UgZ2V0Q2hpbGRDb250ZXh0KCkuJywgdGhp
cy5nZXROYW1lKCkgfHwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50JykgOiBfcHJvZEludmFyaWFu
dCgnMTA3JywgdGhpcy5nZXROYW1lKCkgfHwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50JykgOiB2
b2lkIDA7CisgICAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAg
ICAgIHRoaXMuX2NoZWNrQ29udGV4dFR5cGVzKENvbXBvbmVudC5jaGlsZENvbnRleHRUeXBlcywg
Y2hpbGRDb250ZXh0LCAnY2hpbGRDb250ZXh0Jyk7CisgICAgICB9CisgICAgICBmb3IgKHZhciBu
YW1lIGluIGNoaWxkQ29udGV4dCkgeworICAgICAgICAhKG5hbWUgaW4gQ29tcG9uZW50LmNoaWxk
Q29udGV4dFR5cGVzKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFu
dChmYWxzZSwgJyVzLmdldENoaWxkQ29udGV4dCgpOiBrZXkgIiVzIiBpcyBub3QgZGVmaW5lZCBp
biBjaGlsZENvbnRleHRUeXBlcy4nLCB0aGlzLmdldE5hbWUoKSB8fCAnUmVhY3RDb21wb3NpdGVD
b21wb25lbnQnLCBuYW1lKSA6IF9wcm9kSW52YXJpYW50KCcxMDgnLCB0aGlzLmdldE5hbWUoKSB8
fCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQnLCBuYW1lKSA6IHZvaWQgMDsKKyAgICAgIH0KKyAg
ICAgIHJldHVybiBfYXNzaWduKHt9LCBjdXJyZW50Q29udGV4dCwgY2hpbGRDb250ZXh0KTsKKyAg
ICB9CisgICAgcmV0dXJuIGN1cnJlbnRDb250ZXh0OworICB9LAorCisgIC8qKgorICAgKiBBc3Nl
cnQgdGhhdCB0aGUgY29udGV4dCB0eXBlcyBhcmUgdmFsaWQKKyAgICoKKyAgICogQHBhcmFtIHtv
YmplY3R9IHR5cGVTcGVjcyBNYXAgb2YgY29udGV4dCBmaWVsZCB0byBhIFJlYWN0UHJvcFR5cGUK
KyAgICogQHBhcmFtIHtvYmplY3R9IHZhbHVlcyBSdW50aW1lIHZhbHVlcyB0aGF0IG5lZWQgdG8g
YmUgdHlwZS1jaGVja2VkCisgICAqIEBwYXJhbSB7c3RyaW5nfSBsb2NhdGlvbiBlLmcuICJwcm9w
IiwgImNvbnRleHQiLCAiY2hpbGQgY29udGV4dCIKKyAgICogQHByaXZhdGUKKyAgICovCisgIF9j
aGVja0NvbnRleHRUeXBlczogZnVuY3Rpb24gKHR5cGVTcGVjcywgdmFsdWVzLCBsb2NhdGlvbikg
eworICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgIGNoZWNr
UmVhY3RUeXBlU3BlYyh0eXBlU3BlY3MsIHZhbHVlcywgbG9jYXRpb24sIHRoaXMuZ2V0TmFtZSgp
LCBudWxsLCB0aGlzLl9kZWJ1Z0lEKTsKKyAgICB9CisgIH0sCisKKyAgcmVjZWl2ZUNvbXBvbmVu
dDogZnVuY3Rpb24gKG5leHRFbGVtZW50LCB0cmFuc2FjdGlvbiwgbmV4dENvbnRleHQpIHsKKyAg
ICB2YXIgcHJldkVsZW1lbnQgPSB0aGlzLl9jdXJyZW50RWxlbWVudDsKKyAgICB2YXIgcHJldkNv
bnRleHQgPSB0aGlzLl9jb250ZXh0OworCisgICAgdGhpcy5fcGVuZGluZ0VsZW1lbnQgPSBudWxs
OworCisgICAgdGhpcy51cGRhdGVDb21wb25lbnQodHJhbnNhY3Rpb24sIHByZXZFbGVtZW50LCBu
ZXh0RWxlbWVudCwgcHJldkNvbnRleHQsIG5leHRDb250ZXh0KTsKKyAgfSwKKworICAvKioKKyAg
ICogSWYgYW55IG9mIGBfcGVuZGluZ0VsZW1lbnRgLCBgX3BlbmRpbmdTdGF0ZVF1ZXVlYCwgb3Ig
YF9wZW5kaW5nRm9yY2VVcGRhdGVgCisgICAqIGlzIHNldCwgdXBkYXRlIHRoZSBjb21wb25lbnQu
CisgICAqCisgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rp
b24KKyAgICogQGludGVybmFsCisgICAqLworICBwZXJmb3JtVXBkYXRlSWZOZWNlc3Nhcnk6IGZ1
bmN0aW9uICh0cmFuc2FjdGlvbikgeworICAgIGlmICh0aGlzLl9wZW5kaW5nRWxlbWVudCAhPSBu
dWxsKSB7CisgICAgICBSZWFjdFJlY29uY2lsZXIucmVjZWl2ZUNvbXBvbmVudCh0aGlzLCB0aGlz
Ll9wZW5kaW5nRWxlbWVudCwgdHJhbnNhY3Rpb24sIHRoaXMuX2NvbnRleHQpOworICAgIH0gZWxz
ZSBpZiAodGhpcy5fcGVuZGluZ1N0YXRlUXVldWUgIT09IG51bGwgfHwgdGhpcy5fcGVuZGluZ0Zv
cmNlVXBkYXRlKSB7CisgICAgICB0aGlzLnVwZGF0ZUNvbXBvbmVudCh0cmFuc2FjdGlvbiwgdGhp
cy5fY3VycmVudEVsZW1lbnQsIHRoaXMuX2N1cnJlbnRFbGVtZW50LCB0aGlzLl9jb250ZXh0LCB0
aGlzLl9jb250ZXh0KTsKKyAgICB9IGVsc2UgeworICAgICAgdGhpcy5fdXBkYXRlQmF0Y2hOdW1i
ZXIgPSBudWxsOworICAgIH0KKyAgfSwKKworICAvKioKKyAgICogUGVyZm9ybSBhbiB1cGRhdGUg
dG8gYSBtb3VudGVkIGNvbXBvbmVudC4gVGhlIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMgYW5k
CisgICAqIHNob3VsZENvbXBvbmVudFVwZGF0ZSBtZXRob2RzIGFyZSBjYWxsZWQsIHRoZW4gKGFz
c3VtaW5nIHRoZSB1cGRhdGUgaXNuJ3QKKyAgICogc2tpcHBlZCkgdGhlIHJlbWFpbmluZyB1cGRh
dGUgbGlmZWN5Y2xlIG1ldGhvZHMgYXJlIGNhbGxlZCBhbmQgdGhlIERPTQorICAgKiByZXByZXNl
bnRhdGlvbiBpcyB1cGRhdGVkLgorICAgKgorICAgKiBCeSBkZWZhdWx0LCB0aGlzIGltcGxlbWVu
dHMgUmVhY3QncyByZW5kZXJpbmcgYW5kIHJlY29uY2lsaWF0aW9uIGFsZ29yaXRobS4KKyAgICog
U29waGlzdGljYXRlZCBjbGllbnRzIG1heSB3aXNoIHRvIG92ZXJyaWRlIHRoaXMuCisgICAqCisg
ICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb24KKyAgICog
QHBhcmFtIHtSZWFjdEVsZW1lbnR9IHByZXZQYXJlbnRFbGVtZW50CisgICAqIEBwYXJhbSB7UmVh
Y3RFbGVtZW50fSBuZXh0UGFyZW50RWxlbWVudAorICAgKiBAaW50ZXJuYWwKKyAgICogQG92ZXJy
aWRhYmxlCisgICAqLworICB1cGRhdGVDb21wb25lbnQ6IGZ1bmN0aW9uICh0cmFuc2FjdGlvbiwg
cHJldlBhcmVudEVsZW1lbnQsIG5leHRQYXJlbnRFbGVtZW50LCBwcmV2VW5tYXNrZWRDb250ZXh0
LCBuZXh0VW5tYXNrZWRDb250ZXh0KSB7CisgICAgdmFyIGluc3QgPSB0aGlzLl9pbnN0YW5jZTsK
KyAgICAhKGluc3QgIT0gbnVsbCkgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBp
bnZhcmlhbnQoZmFsc2UsICdBdHRlbXB0ZWQgdG8gdXBkYXRlIGNvbXBvbmVudCBgJXNgIHRoYXQg
aGFzIGFscmVhZHkgYmVlbiB1bm1vdW50ZWQgKG9yIGZhaWxlZCB0byBtb3VudCkuJywgdGhpcy5n
ZXROYW1lKCkgfHwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50JykgOiBfcHJvZEludmFyaWFudCgn
MTM2JywgdGhpcy5nZXROYW1lKCkgfHwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50JykgOiB2b2lk
IDA7CisKKyAgICB2YXIgd2lsbFJlY2VpdmUgPSBmYWxzZTsKKyAgICB2YXIgbmV4dENvbnRleHQ7
CisKKyAgICAvLyBEZXRlcm1pbmUgaWYgdGhlIGNvbnRleHQgaGFzIGNoYW5nZWQgb3Igbm90Cisg
ICAgaWYgKHRoaXMuX2NvbnRleHQgPT09IG5leHRVbm1hc2tlZENvbnRleHQpIHsKKyAgICAgIG5l
eHRDb250ZXh0ID0gaW5zdC5jb250ZXh0OworICAgIH0gZWxzZSB7CisgICAgICBuZXh0Q29udGV4
dCA9IHRoaXMuX3Byb2Nlc3NDb250ZXh0KG5leHRVbm1hc2tlZENvbnRleHQpOworICAgICAgd2ls
bFJlY2VpdmUgPSB0cnVlOworICAgIH0KKworICAgIHZhciBwcmV2UHJvcHMgPSBwcmV2UGFyZW50
RWxlbWVudC5wcm9wczsKKyAgICB2YXIgbmV4dFByb3BzID0gbmV4dFBhcmVudEVsZW1lbnQucHJv
cHM7CisKKyAgICAvLyBOb3QgYSBzaW1wbGUgc3RhdGUgdXBkYXRlIGJ1dCBhIHByb3BzIHVwZGF0
ZQorICAgIGlmIChwcmV2UGFyZW50RWxlbWVudCAhPT0gbmV4dFBhcmVudEVsZW1lbnQpIHsKKyAg
ICAgIHdpbGxSZWNlaXZlID0gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyBBbiB1cGRhdGUgaGVyZSB3
aWxsIHNjaGVkdWxlIGFuIHVwZGF0ZSBidXQgaW1tZWRpYXRlbHkgc2V0CisgICAgLy8gX3BlbmRp
bmdTdGF0ZVF1ZXVlIHdoaWNoIHdpbGwgZW5zdXJlIHRoYXQgYW55IHN0YXRlIHVwZGF0ZXMgZ2V0
cworICAgIC8vIGltbWVkaWF0ZWx5IHJlY29uY2lsZWQgaW5zdGVhZCBvZiB3YWl0aW5nIGZvciB0
aGUgbmV4dCBiYXRjaC4KKyAgICBpZiAod2lsbFJlY2VpdmUgJiYgaW5zdC5jb21wb25lbnRXaWxs
UmVjZWl2ZVByb3BzKSB7CisgICAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24n
KSB7CisgICAgICAgIG1lYXN1cmVMaWZlQ3ljbGVQZXJmKGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICByZXR1cm4gaW5zdC5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKG5leHRQcm9wcywgbmV4dENv
bnRleHQpOworICAgICAgICB9LCB0aGlzLl9kZWJ1Z0lELCAnY29tcG9uZW50V2lsbFJlY2VpdmVQ
cm9wcycpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgaW5zdC5jb21wb25lbnRXaWxsUmVjZWl2
ZVByb3BzKG5leHRQcm9wcywgbmV4dENvbnRleHQpOworICAgICAgfQorICAgIH0KKworICAgIHZh
ciBuZXh0U3RhdGUgPSB0aGlzLl9wcm9jZXNzUGVuZGluZ1N0YXRlKG5leHRQcm9wcywgbmV4dENv
bnRleHQpOworICAgIHZhciBzaG91bGRVcGRhdGUgPSB0cnVlOworCisgICAgaWYgKCF0aGlzLl9w
ZW5kaW5nRm9yY2VVcGRhdGUpIHsKKyAgICAgIGlmIChpbnN0LnNob3VsZENvbXBvbmVudFVwZGF0
ZSkgeworICAgICAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAg
ICAgICAgc2hvdWxkVXBkYXRlID0gbWVhc3VyZUxpZmVDeWNsZVBlcmYoZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgcmV0dXJuIGluc3Quc2hvdWxkQ29tcG9uZW50VXBkYXRlKG5leHRQcm9wcywg
bmV4dFN0YXRlLCBuZXh0Q29udGV4dCk7CisgICAgICAgICAgfSwgdGhpcy5fZGVidWdJRCwgJ3No
b3VsZENvbXBvbmVudFVwZGF0ZScpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIHNob3Vs
ZFVwZGF0ZSA9IGluc3Quc2hvdWxkQ29tcG9uZW50VXBkYXRlKG5leHRQcm9wcywgbmV4dFN0YXRl
LCBuZXh0Q29udGV4dCk7CisgICAgICAgIH0KKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGlmICh0
aGlzLl9jb21wb3NpdGVUeXBlID09PSBDb21wb3NpdGVUeXBlcy5QdXJlQ2xhc3MpIHsKKyAgICAg
ICAgICBzaG91bGRVcGRhdGUgPSAhc2hhbGxvd0VxdWFsKHByZXZQcm9wcywgbmV4dFByb3BzKSB8
fCAhc2hhbGxvd0VxdWFsKGluc3Quc3RhdGUsIG5leHRTdGF0ZSk7CisgICAgICAgIH0KKyAgICAg
IH0KKyAgICB9CisKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7Cisg
ICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHNob3VsZFVwZGF0
ZSAhPT0gdW5kZWZpbmVkLCAnJXMuc2hvdWxkQ29tcG9uZW50VXBkYXRlKCk6IFJldHVybmVkIHVu
ZGVmaW5lZCBpbnN0ZWFkIG9mIGEgJyArICdib29sZWFuIHZhbHVlLiBNYWtlIHN1cmUgdG8gcmV0
dXJuIHRydWUgb3IgZmFsc2UuJywgdGhpcy5nZXROYW1lKCkgfHwgJ1JlYWN0Q29tcG9zaXRlQ29t
cG9uZW50JykgOiB2b2lkIDA7CisgICAgfQorCisgICAgdGhpcy5fdXBkYXRlQmF0Y2hOdW1iZXIg
PSBudWxsOworICAgIGlmIChzaG91bGRVcGRhdGUpIHsKKyAgICAgIHRoaXMuX3BlbmRpbmdGb3Jj
ZVVwZGF0ZSA9IGZhbHNlOworICAgICAgLy8gV2lsbCBzZXQgYHRoaXMucHJvcHNgLCBgdGhpcy5z
dGF0ZWAgYW5kIGB0aGlzLmNvbnRleHRgLgorICAgICAgdGhpcy5fcGVyZm9ybUNvbXBvbmVudFVw
ZGF0ZShuZXh0UGFyZW50RWxlbWVudCwgbmV4dFByb3BzLCBuZXh0U3RhdGUsIG5leHRDb250ZXh0
LCB0cmFuc2FjdGlvbiwgbmV4dFVubWFza2VkQ29udGV4dCk7CisgICAgfSBlbHNlIHsKKyAgICAg
IC8vIElmIGl0J3MgZGV0ZXJtaW5lZCB0aGF0IGEgY29tcG9uZW50IHNob3VsZCBub3QgdXBkYXRl
LCB3ZSBzdGlsbCB3YW50CisgICAgICAvLyB0byBzZXQgcHJvcHMgYW5kIHN0YXRlIGJ1dCB3ZSBz
aG9ydGN1dCB0aGUgcmVzdCBvZiB0aGUgdXBkYXRlLgorICAgICAgdGhpcy5fY3VycmVudEVsZW1l
bnQgPSBuZXh0UGFyZW50RWxlbWVudDsKKyAgICAgIHRoaXMuX2NvbnRleHQgPSBuZXh0VW5tYXNr
ZWRDb250ZXh0OworICAgICAgaW5zdC5wcm9wcyA9IG5leHRQcm9wczsKKyAgICAgIGluc3Quc3Rh
dGUgPSBuZXh0U3RhdGU7CisgICAgICBpbnN0LmNvbnRleHQgPSBuZXh0Q29udGV4dDsKKyAgICB9
CisgIH0sCisKKyAgX3Byb2Nlc3NQZW5kaW5nU3RhdGU6IGZ1bmN0aW9uIChwcm9wcywgY29udGV4
dCkgeworICAgIHZhciBpbnN0ID0gdGhpcy5faW5zdGFuY2U7CisgICAgdmFyIHF1ZXVlID0gdGhp
cy5fcGVuZGluZ1N0YXRlUXVldWU7CisgICAgdmFyIHJlcGxhY2UgPSB0aGlzLl9wZW5kaW5nUmVw
bGFjZVN0YXRlOworICAgIHRoaXMuX3BlbmRpbmdSZXBsYWNlU3RhdGUgPSBmYWxzZTsKKyAgICB0
aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZSA9IG51bGw7CisKKyAgICBpZiAoIXF1ZXVlKSB7CisgICAg
ICByZXR1cm4gaW5zdC5zdGF0ZTsKKyAgICB9CisKKyAgICBpZiAocmVwbGFjZSAmJiBxdWV1ZS5s
ZW5ndGggPT09IDEpIHsKKyAgICAgIHJldHVybiBxdWV1ZVswXTsKKyAgICB9CisKKyAgICB2YXIg
bmV4dFN0YXRlID0gX2Fzc2lnbih7fSwgcmVwbGFjZSA/IHF1ZXVlWzBdIDogaW5zdC5zdGF0ZSk7
CisgICAgZm9yICh2YXIgaSA9IHJlcGxhY2UgPyAxIDogMDsgaSA8IHF1ZXVlLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgcGFydGlhbCA9IHF1ZXVlW2ldOworICAgICAgX2Fzc2lnbihuZXh0U3Rh
dGUsIHR5cGVvZiBwYXJ0aWFsID09PSAnZnVuY3Rpb24nID8gcGFydGlhbC5jYWxsKGluc3QsIG5l
eHRTdGF0ZSwgcHJvcHMsIGNvbnRleHQpIDogcGFydGlhbCk7CisgICAgfQorCisgICAgcmV0dXJu
IG5leHRTdGF0ZTsKKyAgfSwKKworICAvKioKKyAgICogTWVyZ2VzIG5ldyBwcm9wcyBhbmQgc3Rh
dGUsIG5vdGlmaWVzIGRlbGVnYXRlIG1ldGhvZHMgb2YgdXBkYXRlIGFuZAorICAgKiBwZXJmb3Jt
cyB1cGRhdGUuCisgICAqCisgICAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBuZXh0RWxlbWVudCBO
ZXh0IGVsZW1lbnQKKyAgICogQHBhcmFtIHtvYmplY3R9IG5leHRQcm9wcyBOZXh0IHB1YmxpYyBv
YmplY3QgdG8gc2V0IGFzIHByb3BlcnRpZXMuCisgICAqIEBwYXJhbSB7P29iamVjdH0gbmV4dFN0
YXRlIE5leHQgb2JqZWN0IHRvIHNldCBhcyBzdGF0ZS4KKyAgICogQHBhcmFtIHs/b2JqZWN0fSBu
ZXh0Q29udGV4dCBOZXh0IHB1YmxpYyBvYmplY3QgdG8gc2V0IGFzIGNvbnRleHQuCisgICAqIEBw
YXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb24KKyAgICogQHBhcmFt
IHs/b2JqZWN0fSB1bm1hc2tlZENvbnRleHQKKyAgICogQHByaXZhdGUKKyAgICovCisgIF9wZXJm
b3JtQ29tcG9uZW50VXBkYXRlOiBmdW5jdGlvbiAobmV4dEVsZW1lbnQsIG5leHRQcm9wcywgbmV4
dFN0YXRlLCBuZXh0Q29udGV4dCwgdHJhbnNhY3Rpb24sIHVubWFza2VkQ29udGV4dCkgeworICAg
IHZhciBfdGhpczIgPSB0aGlzOworCisgICAgdmFyIGluc3QgPSB0aGlzLl9pbnN0YW5jZTsKKwor
ICAgIHZhciBoYXNDb21wb25lbnREaWRVcGRhdGUgPSBCb29sZWFuKGluc3QuY29tcG9uZW50RGlk
VXBkYXRlKTsKKyAgICB2YXIgcHJldlByb3BzOworICAgIHZhciBwcmV2U3RhdGU7CisgICAgdmFy
IHByZXZDb250ZXh0OworICAgIGlmIChoYXNDb21wb25lbnREaWRVcGRhdGUpIHsKKyAgICAgIHBy
ZXZQcm9wcyA9IGluc3QucHJvcHM7CisgICAgICBwcmV2U3RhdGUgPSBpbnN0LnN0YXRlOworICAg
ICAgcHJldkNvbnRleHQgPSBpbnN0LmNvbnRleHQ7CisgICAgfQorCisgICAgaWYgKGluc3QuY29t
cG9uZW50V2lsbFVwZGF0ZSkgeworICAgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0
aW9uJykgeworICAgICAgICBtZWFzdXJlTGlmZUN5Y2xlUGVyZihmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgcmV0dXJuIGluc3QuY29tcG9uZW50V2lsbFVwZGF0ZShuZXh0UHJvcHMsIG5leHRTdGF0
ZSwgbmV4dENvbnRleHQpOworICAgICAgICB9LCB0aGlzLl9kZWJ1Z0lELCAnY29tcG9uZW50V2ls
bFVwZGF0ZScpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgaW5zdC5jb21wb25lbnRXaWxsVXBk
YXRlKG5leHRQcm9wcywgbmV4dFN0YXRlLCBuZXh0Q29udGV4dCk7CisgICAgICB9CisgICAgfQor
CisgICAgdGhpcy5fY3VycmVudEVsZW1lbnQgPSBuZXh0RWxlbWVudDsKKyAgICB0aGlzLl9jb250
ZXh0ID0gdW5tYXNrZWRDb250ZXh0OworICAgIGluc3QucHJvcHMgPSBuZXh0UHJvcHM7CisgICAg
aW5zdC5zdGF0ZSA9IG5leHRTdGF0ZTsKKyAgICBpbnN0LmNvbnRleHQgPSBuZXh0Q29udGV4dDsK
KworICAgIHRoaXMuX3VwZGF0ZVJlbmRlcmVkQ29tcG9uZW50KHRyYW5zYWN0aW9uLCB1bm1hc2tl
ZENvbnRleHQpOworCisgICAgaWYgKGhhc0NvbXBvbmVudERpZFVwZGF0ZSkgeworICAgICAgaWYg
KCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgICB0cmFuc2FjdGlvbi5n
ZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICBtZWFz
dXJlTGlmZUN5Y2xlUGVyZihpbnN0LmNvbXBvbmVudERpZFVwZGF0ZS5iaW5kKGluc3QsIHByZXZQ
cm9wcywgcHJldlN0YXRlLCBwcmV2Q29udGV4dCksIF90aGlzMi5fZGVidWdJRCwgJ2NvbXBvbmVu
dERpZFVwZGF0ZScpOworICAgICAgICB9KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHRyYW5z
YWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoaW5zdC5jb21wb25lbnREaWRVcGRh
dGUuYmluZChpbnN0LCBwcmV2UHJvcHMsIHByZXZTdGF0ZSwgcHJldkNvbnRleHQpLCBpbnN0KTsK
KyAgICAgIH0KKyAgICB9CisgIH0sCisKKyAgLyoqCisgICAqIENhbGwgdGhlIGNvbXBvbmVudCdz
IGByZW5kZXJgIG1ldGhvZCBhbmQgdXBkYXRlIHRoZSBET00gYWNjb3JkaW5nbHkuCisgICAqCisg
ICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb24KKyAgICog
QGludGVybmFsCisgICAqLworICBfdXBkYXRlUmVuZGVyZWRDb21wb25lbnQ6IGZ1bmN0aW9uICh0
cmFuc2FjdGlvbiwgY29udGV4dCkgeworICAgIHZhciBwcmV2Q29tcG9uZW50SW5zdGFuY2UgPSB0
aGlzLl9yZW5kZXJlZENvbXBvbmVudDsKKyAgICB2YXIgcHJldlJlbmRlcmVkRWxlbWVudCA9IHBy
ZXZDb21wb25lbnRJbnN0YW5jZS5fY3VycmVudEVsZW1lbnQ7CisgICAgdmFyIG5leHRSZW5kZXJl
ZEVsZW1lbnQgPSB0aGlzLl9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnQoKTsKKworICAgIHZhciBk
ZWJ1Z0lEID0gMDsKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7Cisg
ICAgICBkZWJ1Z0lEID0gdGhpcy5fZGVidWdJRDsKKyAgICB9CisKKyAgICBpZiAoc2hvdWxkVXBk
YXRlUmVhY3RDb21wb25lbnQocHJldlJlbmRlcmVkRWxlbWVudCwgbmV4dFJlbmRlcmVkRWxlbWVu
dCkpIHsKKyAgICAgIFJlYWN0UmVjb25jaWxlci5yZWNlaXZlQ29tcG9uZW50KHByZXZDb21wb25l
bnRJbnN0YW5jZSwgbmV4dFJlbmRlcmVkRWxlbWVudCwgdHJhbnNhY3Rpb24sIHRoaXMuX3Byb2Nl
c3NDaGlsZENvbnRleHQoY29udGV4dCkpOworICAgIH0gZWxzZSB7CisgICAgICB2YXIgb2xkSG9z
dE5vZGUgPSBSZWFjdFJlY29uY2lsZXIuZ2V0SG9zdE5vZGUocHJldkNvbXBvbmVudEluc3RhbmNl
KTsKKyAgICAgIFJlYWN0UmVjb25jaWxlci51bm1vdW50Q29tcG9uZW50KHByZXZDb21wb25lbnRJ
bnN0YW5jZSwgZmFsc2UpOworCisgICAgICB2YXIgbm9kZVR5cGUgPSBSZWFjdE5vZGVUeXBlcy5n
ZXRUeXBlKG5leHRSZW5kZXJlZEVsZW1lbnQpOworICAgICAgdGhpcy5fcmVuZGVyZWROb2RlVHlw
ZSA9IG5vZGVUeXBlOworICAgICAgdmFyIGNoaWxkID0gdGhpcy5faW5zdGFudGlhdGVSZWFjdENv
bXBvbmVudChuZXh0UmVuZGVyZWRFbGVtZW50LCBub2RlVHlwZSAhPT0gUmVhY3ROb2RlVHlwZXMu
RU1QVFkgLyogc2hvdWxkSGF2ZURlYnVnSUQgKi8KKyAgICAgICk7CisgICAgICB0aGlzLl9yZW5k
ZXJlZENvbXBvbmVudCA9IGNoaWxkOworCisgICAgICB2YXIgbmV4dE1hcmt1cCA9IFJlYWN0UmVj
b25jaWxlci5tb3VudENvbXBvbmVudChjaGlsZCwgdHJhbnNhY3Rpb24sIHRoaXMuX2hvc3RQYXJl
bnQsIHRoaXMuX2hvc3RDb250YWluZXJJbmZvLCB0aGlzLl9wcm9jZXNzQ2hpbGRDb250ZXh0KGNv
bnRleHQpLCBkZWJ1Z0lEKTsKKworICAgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0
aW9uJykgeworICAgICAgICBpZiAoZGVidWdJRCAhPT0gMCkgeworICAgICAgICAgIHZhciBjaGls
ZERlYnVnSURzID0gY2hpbGQuX2RlYnVnSUQgIT09IDAgPyBbY2hpbGQuX2RlYnVnSURdIDogW107
CisgICAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uU2V0Q2hpbGRyZW4o
ZGVidWdJRCwgY2hpbGREZWJ1Z0lEcyk7CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgdGhp
cy5fcmVwbGFjZU5vZGVXaXRoTWFya3VwKG9sZEhvc3ROb2RlLCBuZXh0TWFya3VwLCBwcmV2Q29t
cG9uZW50SW5zdGFuY2UpOworICAgIH0KKyAgfSwKKworICAvKioKKyAgICogT3ZlcnJpZGRlbiBp
biBzaGFsbG93IHJlbmRlcmluZy4KKyAgICoKKyAgICogQHByb3RlY3RlZAorICAgKi8KKyAgX3Jl
cGxhY2VOb2RlV2l0aE1hcmt1cDogZnVuY3Rpb24gKG9sZEhvc3ROb2RlLCBuZXh0TWFya3VwLCBw
cmV2SW5zdGFuY2UpIHsKKyAgICBSZWFjdENvbXBvbmVudEVudmlyb25tZW50LnJlcGxhY2VOb2Rl
V2l0aE1hcmt1cChvbGRIb3N0Tm9kZSwgbmV4dE1hcmt1cCwgcHJldkluc3RhbmNlKTsKKyAgfSwK
KworICAvKioKKyAgICogQHByb3RlY3RlZAorICAgKi8KKyAgX3JlbmRlclZhbGlkYXRlZENvbXBv
bmVudFdpdGhvdXRPd25lck9yQ29udGV4dDogZnVuY3Rpb24gKCkgeworICAgIHZhciBpbnN0ID0g
dGhpcy5faW5zdGFuY2U7CisgICAgdmFyIHJlbmRlcmVkRWxlbWVudDsKKworICAgIGlmICgiZGV2
ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgIHJlbmRlcmVkRWxlbWVudCA9IG1l
YXN1cmVMaWZlQ3ljbGVQZXJmKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgcmV0dXJuIGluc3QucmVu
ZGVyKCk7CisgICAgICB9LCB0aGlzLl9kZWJ1Z0lELCAncmVuZGVyJyk7CisgICAgfSBlbHNlIHsK
KyAgICAgIHJlbmRlcmVkRWxlbWVudCA9IGluc3QucmVuZGVyKCk7CisgICAgfQorCisgICAgaWYg
KCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgLy8gV2UgYWxsb3cgYXV0
by1tb2NrcyB0byBwcm9jZWVkIGFzIGlmIHRoZXkncmUgcmV0dXJuaW5nIG51bGwuCisgICAgICBp
ZiAocmVuZGVyZWRFbGVtZW50ID09PSB1bmRlZmluZWQgJiYgaW5zdC5yZW5kZXIuX2lzTW9ja0Z1
bmN0aW9uKSB7CisgICAgICAgIC8vIFRoaXMgaXMgcHJvYmFibHkgYmFkIHByYWN0aWNlLiBDb25z
aWRlciB3YXJuaW5nIGhlcmUgYW5kCisgICAgICAgIC8vIGRlcHJlY2F0aW5nIHRoaXMgY29udmVu
aWVuY2UuCisgICAgICAgIHJlbmRlcmVkRWxlbWVudCA9IG51bGw7CisgICAgICB9CisgICAgfQor
CisgICAgcmV0dXJuIHJlbmRlcmVkRWxlbWVudDsKKyAgfSwKKworICAvKioKKyAgICogQHByaXZh
dGUKKyAgICovCisgIF9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnQ6IGZ1bmN0aW9uICgpIHsKKyAg
ICB2YXIgcmVuZGVyZWRFbGVtZW50OworICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVj
dGlvbicgfHwgdGhpcy5fY29tcG9zaXRlVHlwZSAhPT0gQ29tcG9zaXRlVHlwZXMuU3RhdGVsZXNz
RnVuY3Rpb25hbCkgeworICAgICAgUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCA9IHRoaXM7Cisg
ICAgICB0cnkgeworICAgICAgICByZW5kZXJlZEVsZW1lbnQgPSB0aGlzLl9yZW5kZXJWYWxpZGF0
ZWRDb21wb25lbnRXaXRob3V0T3duZXJPckNvbnRleHQoKTsKKyAgICAgIH0gZmluYWxseSB7Cisg
ICAgICAgIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPSBudWxsOworICAgICAgfQorICAgIH0g
ZWxzZSB7CisgICAgICByZW5kZXJlZEVsZW1lbnQgPSB0aGlzLl9yZW5kZXJWYWxpZGF0ZWRDb21w
b25lbnRXaXRob3V0T3duZXJPckNvbnRleHQoKTsKKyAgICB9CisgICAgISgKKyAgICAvLyBUT0RP
OiBBbiBgaXNWYWxpZE5vZGVgIGZ1bmN0aW9uIHdvdWxkIHByb2JhYmx5IGJlIG1vcmUgYXBwcm9w
cmlhdGUKKyAgICByZW5kZXJlZEVsZW1lbnQgPT09IG51bGwgfHwgcmVuZGVyZWRFbGVtZW50ID09
PSBmYWxzZSB8fCBSZWFjdC5pc1ZhbGlkRWxlbWVudChyZW5kZXJlZEVsZW1lbnQpKSA/ICJkZXZl
bG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJyVzLnJlbmRlcigp
OiBBIHZhbGlkIFJlYWN0IGVsZW1lbnQgKG9yIG51bGwpIG11c3QgYmUgcmV0dXJuZWQuIFlvdSBt
YXkgaGF2ZSByZXR1cm5lZCB1bmRlZmluZWQsIGFuIGFycmF5IG9yIHNvbWUgb3RoZXIgaW52YWxp
ZCBvYmplY3QuJywgdGhpcy5nZXROYW1lKCkgfHwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50Jykg
OiBfcHJvZEludmFyaWFudCgnMTA5JywgdGhpcy5nZXROYW1lKCkgfHwgJ1JlYWN0Q29tcG9zaXRl
Q29tcG9uZW50JykgOiB2b2lkIDA7CisKKyAgICByZXR1cm4gcmVuZGVyZWRFbGVtZW50OworICB9
LAorCisgIC8qKgorICAgKiBMYXppbHkgYWxsb2NhdGVzIHRoZSByZWZzIG9iamVjdCBhbmQgc3Rv
cmVzIGBjb21wb25lbnRgIGFzIGByZWZgLgorICAgKgorICAgKiBAcGFyYW0ge3N0cmluZ30gcmVm
IFJlZmVyZW5jZSBuYW1lLgorICAgKiBAcGFyYW0ge2NvbXBvbmVudH0gY29tcG9uZW50IENvbXBv
bmVudCB0byBzdG9yZSBhcyBgcmVmYC4KKyAgICogQGZpbmFsCisgICAqIEBwcml2YXRlCisgICAq
LworICBhdHRhY2hSZWY6IGZ1bmN0aW9uIChyZWYsIGNvbXBvbmVudCkgeworICAgIHZhciBpbnN0
ID0gdGhpcy5nZXRQdWJsaWNJbnN0YW5jZSgpOworICAgICEoaW5zdCAhPSBudWxsKSA/ICJkZXZl
bG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1N0YXRlbGVzcyBm
dW5jdGlvbiBjb21wb25lbnRzIGNhbm5vdCBoYXZlIHJlZnMuJykgOiBfcHJvZEludmFyaWFudCgn
MTEwJykgOiB2b2lkIDA7CisgICAgdmFyIHB1YmxpY0NvbXBvbmVudEluc3RhbmNlID0gY29tcG9u
ZW50LmdldFB1YmxpY0luc3RhbmNlKCk7CisgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9k
dWN0aW9uJykgeworICAgICAgdmFyIGNvbXBvbmVudE5hbWUgPSBjb21wb25lbnQgJiYgY29tcG9u
ZW50LmdldE5hbWUgPyBjb21wb25lbnQuZ2V0TmFtZSgpIDogJ2EgY29tcG9uZW50JzsKKyAgICAg
ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcocHVibGljQ29tcG9uZW50
SW5zdGFuY2UgIT0gbnVsbCB8fCBjb21wb25lbnQuX2NvbXBvc2l0ZVR5cGUgIT09IENvbXBvc2l0
ZVR5cGVzLlN0YXRlbGVzc0Z1bmN0aW9uYWwsICdTdGF0ZWxlc3MgZnVuY3Rpb24gY29tcG9uZW50
cyBjYW5ub3QgYmUgZ2l2ZW4gcmVmcyAnICsgJyhTZWUgcmVmICIlcyIgaW4gJXMgY3JlYXRlZCBi
eSAlcykuICcgKyAnQXR0ZW1wdHMgdG8gYWNjZXNzIHRoaXMgcmVmIHdpbGwgZmFpbC4nLCByZWYs
IGNvbXBvbmVudE5hbWUsIHRoaXMuZ2V0TmFtZSgpKSA6IHZvaWQgMDsKKyAgICB9CisgICAgdmFy
IHJlZnMgPSBpbnN0LnJlZnMgPT09IGVtcHR5T2JqZWN0ID8gaW5zdC5yZWZzID0ge30gOiBpbnN0
LnJlZnM7CisgICAgcmVmc1tyZWZdID0gcHVibGljQ29tcG9uZW50SW5zdGFuY2U7CisgIH0sCisK
KyAgLyoqCisgICAqIERldGFjaGVzIGEgcmVmZXJlbmNlIG5hbWUuCisgICAqCisgICAqIEBwYXJh
bSB7c3RyaW5nfSByZWYgTmFtZSB0byBkZXJlZmVyZW5jZS4KKyAgICogQGZpbmFsCisgICAqIEBw
cml2YXRlCisgICAqLworICBkZXRhY2hSZWY6IGZ1bmN0aW9uIChyZWYpIHsKKyAgICB2YXIgcmVm
cyA9IHRoaXMuZ2V0UHVibGljSW5zdGFuY2UoKS5yZWZzOworICAgIGRlbGV0ZSByZWZzW3JlZl07
CisgIH0sCisKKyAgLyoqCisgICAqIEdldCBhIHRleHQgZGVzY3JpcHRpb24gb2YgdGhlIGNvbXBv
bmVudCB0aGF0IGNhbiBiZSB1c2VkIHRvIGlkZW50aWZ5IGl0CisgICAqIGluIGVycm9yIG1lc3Nh
Z2VzLgorICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBuYW1lIG9yIG51bGwuCisgICAqIEBpbnRl
cm5hbAorICAgKi8KKyAgZ2V0TmFtZTogZnVuY3Rpb24gKCkgeworICAgIHZhciB0eXBlID0gdGhp
cy5fY3VycmVudEVsZW1lbnQudHlwZTsKKyAgICB2YXIgY29uc3RydWN0b3IgPSB0aGlzLl9pbnN0
YW5jZSAmJiB0aGlzLl9pbnN0YW5jZS5jb25zdHJ1Y3RvcjsKKyAgICByZXR1cm4gdHlwZS5kaXNw
bGF5TmFtZSB8fCBjb25zdHJ1Y3RvciAmJiBjb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZSB8fCB0eXBl
Lm5hbWUgfHwgY29uc3RydWN0b3IgJiYgY29uc3RydWN0b3IubmFtZSB8fCBudWxsOworICB9LAor
CisgIC8qKgorICAgKiBHZXQgdGhlIHB1YmxpY2x5IGFjY2Vzc2libGUgcmVwcmVzZW50YXRpb24g
b2YgdGhpcyBjb21wb25lbnQgLSBpLmUuIHdoYXQKKyAgICogaXMgZXhwb3NlZCBieSByZWZzIGFu
ZCByZXR1cm5lZCBieSByZW5kZXIuIENhbiBiZSBudWxsIGZvciBzdGF0ZWxlc3MKKyAgICogY29t
cG9uZW50cy4KKyAgICoKKyAgICogQHJldHVybiB7UmVhY3RDb21wb25lbnR9IHRoZSBwdWJsaWMg
Y29tcG9uZW50IGluc3RhbmNlLgorICAgKiBAaW50ZXJuYWwKKyAgICovCisgIGdldFB1YmxpY0lu
c3RhbmNlOiBmdW5jdGlvbiAoKSB7CisgICAgdmFyIGluc3QgPSB0aGlzLl9pbnN0YW5jZTsKKyAg
ICBpZiAodGhpcy5fY29tcG9zaXRlVHlwZSA9PT0gQ29tcG9zaXRlVHlwZXMuU3RhdGVsZXNzRnVu
Y3Rpb25hbCkgeworICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorICAgIHJldHVybiBpbnN0Owor
ICB9LAorCisgIC8vIFN0dWIKKyAgX2luc3RhbnRpYXRlUmVhY3RDb21wb25lbnQ6IG51bGwKKwor
fTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudDsKK30seyIxMTYi
OjExNiwiMTE5IjoxMTksIjEyMyI6MTIzLCIxMjQiOjEyNCwiMTMzIjoxMzMsIjE0MCI6MTQwLCIx
NDYiOjE0NiwiMTQ3IjoxNDcsIjE0OCI6MTQ4LCIyOCI6MjgsIjUwIjo1MCwiNTgiOjU4LCI1OSI6
NTksIjYzIjo2MywiNjgiOjY4LCI5NyI6OTd9XSwzMDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUs
ZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMu
CisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGlj
ZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5T
RSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRp
dGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFU
RU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworLyogZ2xvYmFsIGhh
c093blByb3BlcnR5OnRydWUgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJbnZhcmlh
bnQgPSBfZGVyZXFfKDExNiksCisgICAgX2Fzc2lnbiA9IF9kZXJlcV8oMTQ4KTsKKwordmFyIEF1
dG9Gb2N1c1V0aWxzID0gX2RlcmVxXygyKTsKK3ZhciBDU1NQcm9wZXJ0eU9wZXJhdGlvbnMgPSBf
ZGVyZXFfKDUpOwordmFyIERPTUxhenlUcmVlID0gX2RlcmVxXyg5KTsKK3ZhciBET01OYW1lc3Bh
Y2VzID0gX2RlcmVxXygxMCk7Cit2YXIgRE9NUHJvcGVydHkgPSBfZGVyZXFfKDExKTsKK3ZhciBE
T01Qcm9wZXJ0eU9wZXJhdGlvbnMgPSBfZGVyZXFfKDEyKTsKK3ZhciBFdmVudFBsdWdpbkh1YiA9
IF9kZXJlcV8oMTYpOwordmFyIEV2ZW50UGx1Z2luUmVnaXN0cnkgPSBfZGVyZXFfKDE3KTsKK3Zh
ciBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIgPSBfZGVyZXFfKDI1KTsKK3ZhciBSZWFjdERPTUNv
bXBvbmVudEZsYWdzID0gX2RlcmVxXygzMSk7Cit2YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0g
X2RlcmVxXygzMik7Cit2YXIgUmVhY3RET01JbnB1dCA9IF9kZXJlcV8oMzYpOwordmFyIFJlYWN0
RE9NT3B0aW9uID0gX2RlcmVxXygzNyk7Cit2YXIgUmVhY3RET01TZWxlY3QgPSBfZGVyZXFfKDM4
KTsKK3ZhciBSZWFjdERPTVRleHRhcmVhID0gX2RlcmVxXyg0Myk7Cit2YXIgUmVhY3RJbnN0cnVt
ZW50YXRpb24gPSBfZGVyZXFfKDU5KTsKK3ZhciBSZWFjdE11bHRpQ2hpbGQgPSBfZGVyZXFfKDYy
KTsKK3ZhciBSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9uID0gX2RlcmVxXyg3Mik7CisK
K3ZhciBlbXB0eUZ1bmN0aW9uID0gX2RlcmVxXygxMzIpOwordmFyIGVzY2FwZVRleHRDb250ZW50
Rm9yQnJvd3NlciA9IF9kZXJlcV8oMTAwKTsKK3ZhciBpbnZhcmlhbnQgPSBfZGVyZXFfKDE0MCk7
Cit2YXIgaXNFdmVudFN1cHBvcnRlZCA9IF9kZXJlcV8oMTEzKTsKK3ZhciBzaGFsbG93RXF1YWwg
PSBfZGVyZXFfKDE0Nik7Cit2YXIgdmFsaWRhdGVET01OZXN0aW5nID0gX2RlcmVxXygxMjEpOwor
dmFyIHdhcm5pbmcgPSBfZGVyZXFfKDE0Nyk7CisKK3ZhciBGbGFncyA9IFJlYWN0RE9NQ29tcG9u
ZW50RmxhZ3M7Cit2YXIgZGVsZXRlTGlzdGVuZXIgPSBFdmVudFBsdWdpbkh1Yi5kZWxldGVMaXN0
ZW5lcjsKK3ZhciBnZXROb2RlID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5z
dGFuY2U7Cit2YXIgbGlzdGVuVG8gPSBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIubGlzdGVuVG87
Cit2YXIgcmVnaXN0cmF0aW9uTmFtZU1vZHVsZXMgPSBFdmVudFBsdWdpblJlZ2lzdHJ5LnJlZ2lz
dHJhdGlvbk5hbWVNb2R1bGVzOworCisvLyBGb3IgcXVpY2tseSBtYXRjaGluZyBjaGlsZHJlbiB0
eXBlLCB0byB0ZXN0IGlmIGNhbiBiZSB0cmVhdGVkIGFzIGNvbnRlbnQuCit2YXIgQ09OVEVOVF9U
WVBFUyA9IHsgJ3N0cmluZyc6IHRydWUsICdudW1iZXInOiB0cnVlIH07CisKK3ZhciBTVFlMRSA9
ICdzdHlsZSc7Cit2YXIgSFRNTCA9ICdfX2h0bWwnOwordmFyIFJFU0VSVkVEX1BST1BTID0gewor
ICBjaGlsZHJlbjogbnVsbCwKKyAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6IG51bGwsCisgIHN1
cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZzogbnVsbAorfTsKKworLy8gTm9kZSB0eXBlIGZv
ciBkb2N1bWVudCBmcmFnbWVudHMgKE5vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERSkuCit2YXIg
RE9DX0ZSQUdNRU5UX1RZUEUgPSAxMTsKKworZnVuY3Rpb24gZ2V0RGVjbGFyYXRpb25FcnJvckFk
ZGVuZHVtKGludGVybmFsSW5zdGFuY2UpIHsKKyAgaWYgKGludGVybmFsSW5zdGFuY2UpIHsKKyAg
ICB2YXIgb3duZXIgPSBpbnRlcm5hbEluc3RhbmNlLl9jdXJyZW50RWxlbWVudC5fb3duZXIgfHwg
bnVsbDsKKyAgICBpZiAob3duZXIpIHsKKyAgICAgIHZhciBuYW1lID0gb3duZXIuZ2V0TmFtZSgp
OworICAgICAgaWYgKG5hbWUpIHsKKyAgICAgICAgcmV0dXJuICcgVGhpcyBET00gbm9kZSB3YXMg
cmVuZGVyZWQgYnkgYCcgKyBuYW1lICsgJ2AuJzsKKyAgICAgIH0KKyAgICB9CisgIH0KKyAgcmV0
dXJuICcnOworfQorCitmdW5jdGlvbiBmcmllbmRseVN0cmluZ2lmeShvYmopIHsKKyAgaWYgKHR5
cGVvZiBvYmogPT09ICdvYmplY3QnKSB7CisgICAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkgewor
ICAgICAgcmV0dXJuICdbJyArIG9iai5tYXAoZnJpZW5kbHlTdHJpbmdpZnkpLmpvaW4oJywgJykg
KyAnXSc7CisgICAgfSBlbHNlIHsKKyAgICAgIHZhciBwYWlycyA9IFtdOworICAgICAgZm9yICh2
YXIga2V5IGluIG9iaikgeworICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9w
ZXJ0eS5jYWxsKG9iaiwga2V5KSkgeworICAgICAgICAgIHZhciBrZXlFc2NhcGVkID0gL15bYS16
JF9dW1x3JF9dKiQvaS50ZXN0KGtleSkgPyBrZXkgOiBKU09OLnN0cmluZ2lmeShrZXkpOworICAg
ICAgICAgIHBhaXJzLnB1c2goa2V5RXNjYXBlZCArICc6ICcgKyBmcmllbmRseVN0cmluZ2lmeShv
Ympba2V5XSkpOworICAgICAgICB9CisgICAgICB9CisgICAgICByZXR1cm4gJ3snICsgcGFpcnMu
am9pbignLCAnKSArICd9JzsKKyAgICB9CisgIH0gZWxzZSBpZiAodHlwZW9mIG9iaiA9PT0gJ3N0
cmluZycpIHsKKyAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkob2JqKTsKKyAgfSBlbHNlIGlmICh0
eXBlb2Ygb2JqID09PSAnZnVuY3Rpb24nKSB7CisgICAgcmV0dXJuICdbZnVuY3Rpb24gb2JqZWN0
XSc7CisgIH0KKyAgLy8gRGlmZmVycyBmcm9tIEpTT04uc3RyaW5naWZ5IGluIHRoYXQgdW5kZWZp
bmVkIGJlY2F1c2UgdW5kZWZpbmVkIGFuZCB0aGF0CisgIC8vIGluZiBhbmQgbmFuIGRvbid0IGJl
Y29tZSBudWxsCisgIHJldHVybiBTdHJpbmcob2JqKTsKK30KKwordmFyIHN0eWxlTXV0YXRpb25X
YXJuaW5nID0ge307CisKK2Z1bmN0aW9uIGNoZWNrQW5kV2FybkZvck11dGF0ZWRTdHlsZShzdHls
ZTEsIHN0eWxlMiwgY29tcG9uZW50KSB7CisgIGlmIChzdHlsZTEgPT0gbnVsbCB8fCBzdHlsZTIg
PT0gbnVsbCkgeworICAgIHJldHVybjsKKyAgfQorICBpZiAoc2hhbGxvd0VxdWFsKHN0eWxlMSwg
c3R5bGUyKSkgeworICAgIHJldHVybjsKKyAgfQorCisgIHZhciBjb21wb25lbnROYW1lID0gY29t
cG9uZW50Ll90YWc7CisgIHZhciBvd25lciA9IGNvbXBvbmVudC5fY3VycmVudEVsZW1lbnQuX293
bmVyOworICB2YXIgb3duZXJOYW1lOworICBpZiAob3duZXIpIHsKKyAgICBvd25lck5hbWUgPSBv
d25lci5nZXROYW1lKCk7CisgIH0KKworICB2YXIgaGFzaCA9IG93bmVyTmFtZSArICd8JyArIGNv
bXBvbmVudE5hbWU7CisKKyAgaWYgKHN0eWxlTXV0YXRpb25XYXJuaW5nLmhhc093blByb3BlcnR5
KGhhc2gpKSB7CisgICAgcmV0dXJuOworICB9CisKKyAgc3R5bGVNdXRhdGlvbldhcm5pbmdbaGFz
aF0gPSB0cnVlOworCisgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmco
ZmFsc2UsICdgJXNgIHdhcyBwYXNzZWQgYSBzdHlsZSBvYmplY3QgdGhhdCBoYXMgcHJldmlvdXNs
eSBiZWVuIG11dGF0ZWQuICcgKyAnTXV0YXRpbmcgYHN0eWxlYCBpcyBkZXByZWNhdGVkLiBDb25z
aWRlciBjbG9uaW5nIGl0IGJlZm9yZWhhbmQuIENoZWNrICcgKyAndGhlIGByZW5kZXJgICVzLiBQ
cmV2aW91cyBzdHlsZTogJXMuIE11dGF0ZWQgc3R5bGU6ICVzLicsIGNvbXBvbmVudE5hbWUsIG93
bmVyID8gJ29mIGAnICsgb3duZXJOYW1lICsgJ2AnIDogJ3VzaW5nIDwnICsgY29tcG9uZW50TmFt
ZSArICc+JywgZnJpZW5kbHlTdHJpbmdpZnkoc3R5bGUxKSwgZnJpZW5kbHlTdHJpbmdpZnkoc3R5
bGUyKSkgOiB2b2lkIDA7Cit9CisKKy8qKgorICogQHBhcmFtIHtvYmplY3R9IGNvbXBvbmVudAor
ICogQHBhcmFtIHs/b2JqZWN0fSBwcm9wcworICovCitmdW5jdGlvbiBhc3NlcnRWYWxpZFByb3Bz
KGNvbXBvbmVudCwgcHJvcHMpIHsKKyAgaWYgKCFwcm9wcykgeworICAgIHJldHVybjsKKyAgfQor
ICAvLyBOb3RlIHRoZSB1c2Ugb2YgYD09YCB3aGljaCBjaGVja3MgZm9yIG51bGwgb3IgdW5kZWZp
bmVkLgorICBpZiAodm9pZEVsZW1lbnRUYWdzW2NvbXBvbmVudC5fdGFnXSkgeworICAgICEocHJv
cHMuY2hpbGRyZW4gPT0gbnVsbCAmJiBwcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTCA9PSBu
dWxsKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwg
JyVzIGlzIGEgdm9pZCBlbGVtZW50IHRhZyBhbmQgbXVzdCBuZWl0aGVyIGhhdmUgYGNoaWxkcmVu
YCBub3IgdXNlIGBkYW5nZXJvdXNseVNldElubmVySFRNTGAuJXMnLCBjb21wb25lbnQuX3RhZywg
Y29tcG9uZW50Ll9jdXJyZW50RWxlbWVudC5fb3duZXIgPyAnIENoZWNrIHRoZSByZW5kZXIgbWV0
aG9kIG9mICcgKyBjb21wb25lbnQuX2N1cnJlbnRFbGVtZW50Ll9vd25lci5nZXROYW1lKCkgKyAn
LicgOiAnJykgOiBfcHJvZEludmFyaWFudCgnMTM3JywgY29tcG9uZW50Ll90YWcsIGNvbXBvbmVu
dC5fY3VycmVudEVsZW1lbnQuX293bmVyID8gJyBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiAn
ICsgY29tcG9uZW50Ll9jdXJyZW50RWxlbWVudC5fb3duZXIuZ2V0TmFtZSgpICsgJy4nIDogJycp
IDogdm9pZCAwOworICB9CisgIGlmIChwcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTCAhPSBu
dWxsKSB7CisgICAgIShwcm9wcy5jaGlsZHJlbiA9PSBudWxsKSA/ICJkZXZlbG9wbWVudCIgIT09
ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0NhbiBvbmx5IHNldCBvbmUgb2YgYGNo
aWxkcmVuYCBvciBgcHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxgLicpIDogX3Byb2RJbnZh
cmlhbnQoJzYwJykgOiB2b2lkIDA7CisgICAgISh0eXBlb2YgcHJvcHMuZGFuZ2Vyb3VzbHlTZXRJ
bm5lckhUTUwgPT09ICdvYmplY3QnICYmIEhUTUwgaW4gcHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5l
ckhUTUwpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNl
LCAnYHByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MYCBtdXN0IGJlIGluIHRoZSBmb3JtIGB7
X19odG1sOiAuLi59YC4gUGxlYXNlIHZpc2l0IGh0dHBzOi8vZmIubWUvcmVhY3QtaW52YXJpYW50
LWRhbmdlcm91c2x5LXNldC1pbm5lci1odG1sIGZvciBtb3JlIGluZm9ybWF0aW9uLicpIDogX3By
b2RJbnZhcmlhbnQoJzYxJykgOiB2b2lkIDA7CisgIH0KKyAgaWYgKCJkZXZlbG9wbWVudCIgIT09
ICdwcm9kdWN0aW9uJykgeworICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdh
cm5pbmcocHJvcHMuaW5uZXJIVE1MID09IG51bGwsICdEaXJlY3RseSBzZXR0aW5nIHByb3BlcnR5
IGBpbm5lckhUTUxgIGlzIG5vdCBwZXJtaXR0ZWQuICcgKyAnRm9yIG1vcmUgaW5mb3JtYXRpb24s
IGxvb2t1cCBkb2N1bWVudGF0aW9uIG9uIGBkYW5nZXJvdXNseVNldElubmVySFRNTGAuJykgOiB2
b2lkIDA7CisgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhwcm9w
cy5zdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmcgfHwgIXByb3BzLmNvbnRlbnRFZGl0YWJs
ZSB8fCBwcm9wcy5jaGlsZHJlbiA9PSBudWxsLCAnQSBjb21wb25lbnQgaXMgYGNvbnRlbnRFZGl0
YWJsZWAgYW5kIGNvbnRhaW5zIGBjaGlsZHJlbmAgbWFuYWdlZCBieSAnICsgJ1JlYWN0LiBJdCBp
cyBub3cgeW91ciByZXNwb25zaWJpbGl0eSB0byBndWFyYW50ZWUgdGhhdCBub25lIG9mICcgKyAn
dGhvc2Ugbm9kZXMgYXJlIHVuZXhwZWN0ZWRseSBtb2RpZmllZCBvciBkdXBsaWNhdGVkLiBUaGlz
IGlzICcgKyAncHJvYmFibHkgbm90IGludGVudGlvbmFsLicpIDogdm9pZCAwOworICAgICJkZXZl
bG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcocHJvcHMub25Gb2N1c0luID09IG51
bGwgJiYgcHJvcHMub25Gb2N1c091dCA9PSBudWxsLCAnUmVhY3QgdXNlcyBvbkZvY3VzIGFuZCBv
bkJsdXIgaW5zdGVhZCBvZiBvbkZvY3VzSW4gYW5kIG9uRm9jdXNPdXQuICcgKyAnQWxsIFJlYWN0
IGV2ZW50cyBhcmUgbm9ybWFsaXplZCB0byBidWJibGUsIHNvIG9uRm9jdXNJbiBhbmQgb25Gb2N1
c091dCAnICsgJ2FyZSBub3QgbmVlZGVkL3N1cHBvcnRlZCBieSBSZWFjdC4nKSA6IHZvaWQgMDsK
KyAgfQorICAhKHByb3BzLnN0eWxlID09IG51bGwgfHwgdHlwZW9mIHByb3BzLnN0eWxlID09PSAn
b2JqZWN0JykgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFs
c2UsICdUaGUgYHN0eWxlYCBwcm9wIGV4cGVjdHMgYSBtYXBwaW5nIGZyb20gc3R5bGUgcHJvcGVy
dGllcyB0byB2YWx1ZXMsIG5vdCBhIHN0cmluZy4gRm9yIGV4YW1wbGUsIHN0eWxlPXt7bWFyZ2lu
UmlnaHQ6IHNwYWNpbmcgKyBcJ2VtXCd9fSB3aGVuIHVzaW5nIEpTWC4lcycsIGdldERlY2xhcmF0
aW9uRXJyb3JBZGRlbmR1bShjb21wb25lbnQpKSA6IF9wcm9kSW52YXJpYW50KCc2MicsIGdldERl
Y2xhcmF0aW9uRXJyb3JBZGRlbmR1bShjb21wb25lbnQpKSA6IHZvaWQgMDsKK30KKworZnVuY3Rp
b24gZW5xdWV1ZVB1dExpc3RlbmVyKGluc3QsIHJlZ2lzdHJhdGlvbk5hbWUsIGxpc3RlbmVyLCB0
cmFuc2FjdGlvbikgeworICBpZiAodHJhbnNhY3Rpb24gaW5zdGFuY2VvZiBSZWFjdFNlcnZlclJl
bmRlcmluZ1RyYW5zYWN0aW9uKSB7CisgICAgcmV0dXJuOworICB9CisgIGlmICgiZGV2ZWxvcG1l
bnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAvLyBJRTggaGFzIG5vIEFQSSBmb3IgZXZlbnQg
Y2FwdHVyaW5nIGFuZCB0aGUgYG9uU2Nyb2xsYCBldmVudCBkb2Vzbid0CisgICAgLy8gYnViYmxl
LgorICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcocmVnaXN0cmF0
aW9uTmFtZSAhPT0gJ29uU2Nyb2xsJyB8fCBpc0V2ZW50U3VwcG9ydGVkKCdzY3JvbGwnLCB0cnVl
KSwgJ1RoaXMgYnJvd3NlciBkb2VzblwndCBzdXBwb3J0IHRoZSBgb25TY3JvbGxgIGV2ZW50Jykg
OiB2b2lkIDA7CisgIH0KKyAgdmFyIGNvbnRhaW5lckluZm8gPSBpbnN0Ll9ob3N0Q29udGFpbmVy
SW5mbzsKKyAgdmFyIGlzRG9jdW1lbnRGcmFnbWVudCA9IGNvbnRhaW5lckluZm8uX25vZGUgJiYg
Y29udGFpbmVySW5mby5fbm9kZS5ub2RlVHlwZSA9PT0gRE9DX0ZSQUdNRU5UX1RZUEU7CisgIHZh
ciBkb2MgPSBpc0RvY3VtZW50RnJhZ21lbnQgPyBjb250YWluZXJJbmZvLl9ub2RlIDogY29udGFp
bmVySW5mby5fb3duZXJEb2N1bWVudDsKKyAgbGlzdGVuVG8ocmVnaXN0cmF0aW9uTmFtZSwgZG9j
KTsKKyAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShwdXRMaXN0ZW5l
ciwgeworICAgIGluc3Q6IGluc3QsCisgICAgcmVnaXN0cmF0aW9uTmFtZTogcmVnaXN0cmF0aW9u
TmFtZSwKKyAgICBsaXN0ZW5lcjogbGlzdGVuZXIKKyAgfSk7Cit9CisKK2Z1bmN0aW9uIHB1dExp
c3RlbmVyKCkgeworICB2YXIgbGlzdGVuZXJUb1B1dCA9IHRoaXM7CisgIEV2ZW50UGx1Z2luSHVi
LnB1dExpc3RlbmVyKGxpc3RlbmVyVG9QdXQuaW5zdCwgbGlzdGVuZXJUb1B1dC5yZWdpc3RyYXRp
b25OYW1lLCBsaXN0ZW5lclRvUHV0Lmxpc3RlbmVyKTsKK30KKworZnVuY3Rpb24gaW5wdXRQb3N0
TW91bnQoKSB7CisgIHZhciBpbnN0ID0gdGhpczsKKyAgUmVhY3RET01JbnB1dC5wb3N0TW91bnRX
cmFwcGVyKGluc3QpOworfQorCitmdW5jdGlvbiB0ZXh0YXJlYVBvc3RNb3VudCgpIHsKKyAgdmFy
IGluc3QgPSB0aGlzOworICBSZWFjdERPTVRleHRhcmVhLnBvc3RNb3VudFdyYXBwZXIoaW5zdCk7
Cit9CisKK2Z1bmN0aW9uIG9wdGlvblBvc3RNb3VudCgpIHsKKyAgdmFyIGluc3QgPSB0aGlzOwor
ICBSZWFjdERPTU9wdGlvbi5wb3N0TW91bnRXcmFwcGVyKGluc3QpOworfQorCit2YXIgc2V0QW5k
VmFsaWRhdGVDb250ZW50Q2hpbGREZXYgPSBlbXB0eUZ1bmN0aW9uOworaWYgKCJkZXZlbG9wbWVu
dCIgIT09ICdwcm9kdWN0aW9uJykgeworICBzZXRBbmRWYWxpZGF0ZUNvbnRlbnRDaGlsZERldiA9
IGZ1bmN0aW9uIChjb250ZW50KSB7CisgICAgdmFyIGhhc0V4aXN0aW5nQ29udGVudCA9IHRoaXMu
X2NvbnRlbnREZWJ1Z0lEICE9IG51bGw7CisgICAgdmFyIGRlYnVnSUQgPSB0aGlzLl9kZWJ1Z0lE
OworICAgIC8vIFRoaXMgSUQgcmVwcmVzZW50cyB0aGUgaW5saW5lZCBjaGlsZCB0aGF0IGhhcyBu
byBiYWNraW5nIGluc3RhbmNlOgorICAgIHZhciBjb250ZW50RGVidWdJRCA9IC1kZWJ1Z0lEOwor
CisgICAgaWYgKGNvbnRlbnQgPT0gbnVsbCkgeworICAgICAgaWYgKGhhc0V4aXN0aW5nQ29udGVu
dCkgeworICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25Vbm1vdW50Q29t
cG9uZW50KHRoaXMuX2NvbnRlbnREZWJ1Z0lEKTsKKyAgICAgIH0KKyAgICAgIHRoaXMuX2NvbnRl
bnREZWJ1Z0lEID0gbnVsbDsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2YWxpZGF0ZURP
TU5lc3RpbmcobnVsbCwgU3RyaW5nKGNvbnRlbnQpLCB0aGlzLCB0aGlzLl9hbmNlc3RvckluZm8p
OworICAgIHRoaXMuX2NvbnRlbnREZWJ1Z0lEID0gY29udGVudERlYnVnSUQ7CisgICAgaWYgKGhh
c0V4aXN0aW5nQ29udGVudCkgeworICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29s
Lm9uQmVmb3JlVXBkYXRlQ29tcG9uZW50KGNvbnRlbnREZWJ1Z0lELCBjb250ZW50KTsKKyAgICAg
IFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vblVwZGF0ZUNvbXBvbmVudChjb250ZW50
RGVidWdJRCk7CisgICAgfSBlbHNlIHsKKyAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVn
VG9vbC5vbkJlZm9yZU1vdW50Q29tcG9uZW50KGNvbnRlbnREZWJ1Z0lELCBjb250ZW50LCBkZWJ1
Z0lEKTsKKyAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbk1vdW50Q29tcG9u
ZW50KGNvbnRlbnREZWJ1Z0lEKTsKKyAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9v
bC5vblNldENoaWxkcmVuKGRlYnVnSUQsIFtjb250ZW50RGVidWdJRF0pOworICAgIH0KKyAgfTsK
K30KKworLy8gVGhlcmUgYXJlIHNvIG1hbnkgbWVkaWEgZXZlbnRzLCBpdCBtYWtlcyBzZW5zZSB0
byBqdXN0CisvLyBtYWludGFpbiBhIGxpc3QgcmF0aGVyIHRoYW4gY3JlYXRlIGEgYHRyYXBCdWJi
bGVkRXZlbnRgIGZvciBlYWNoCit2YXIgbWVkaWFFdmVudHMgPSB7CisgIHRvcEFib3J0OiAnYWJv
cnQnLAorICB0b3BDYW5QbGF5OiAnY2FucGxheScsCisgIHRvcENhblBsYXlUaHJvdWdoOiAnY2Fu
cGxheXRocm91Z2gnLAorICB0b3BEdXJhdGlvbkNoYW5nZTogJ2R1cmF0aW9uY2hhbmdlJywKKyAg
dG9wRW1wdGllZDogJ2VtcHRpZWQnLAorICB0b3BFbmNyeXB0ZWQ6ICdlbmNyeXB0ZWQnLAorICB0
b3BFbmRlZDogJ2VuZGVkJywKKyAgdG9wRXJyb3I6ICdlcnJvcicsCisgIHRvcExvYWRlZERhdGE6
ICdsb2FkZWRkYXRhJywKKyAgdG9wTG9hZGVkTWV0YWRhdGE6ICdsb2FkZWRtZXRhZGF0YScsCisg
IHRvcExvYWRTdGFydDogJ2xvYWRzdGFydCcsCisgIHRvcFBhdXNlOiAncGF1c2UnLAorICB0b3BQ
bGF5OiAncGxheScsCisgIHRvcFBsYXlpbmc6ICdwbGF5aW5nJywKKyAgdG9wUHJvZ3Jlc3M6ICdw
cm9ncmVzcycsCisgIHRvcFJhdGVDaGFuZ2U6ICdyYXRlY2hhbmdlJywKKyAgdG9wU2Vla2VkOiAn
c2Vla2VkJywKKyAgdG9wU2Vla2luZzogJ3NlZWtpbmcnLAorICB0b3BTdGFsbGVkOiAnc3RhbGxl
ZCcsCisgIHRvcFN1c3BlbmQ6ICdzdXNwZW5kJywKKyAgdG9wVGltZVVwZGF0ZTogJ3RpbWV1cGRh
dGUnLAorICB0b3BWb2x1bWVDaGFuZ2U6ICd2b2x1bWVjaGFuZ2UnLAorICB0b3BXYWl0aW5nOiAn
d2FpdGluZycKK307CisKK2Z1bmN0aW9uIHRyYXBCdWJibGVkRXZlbnRzTG9jYWwoKSB7CisgIHZh
ciBpbnN0ID0gdGhpczsKKyAgLy8gSWYgYSBjb21wb25lbnQgcmVuZGVycyB0byBudWxsIG9yIGlm
IGFub3RoZXIgY29tcG9uZW50IGZhdGFscyBhbmQgY2F1c2VzCisgIC8vIHRoZSBzdGF0ZSBvZiB0
aGUgdHJlZSB0byBiZSBjb3JydXB0ZWQsIGBub2RlYCBoZXJlIGNhbiBiZSBudWxsLgorICAhaW5z
dC5fcm9vdE5vZGVJRCA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFu
dChmYWxzZSwgJ011c3QgYmUgbW91bnRlZCB0byB0cmFwIGV2ZW50cycpIDogX3Byb2RJbnZhcmlh
bnQoJzYzJykgOiB2b2lkIDA7CisgIHZhciBub2RlID0gZ2V0Tm9kZShpbnN0KTsKKyAgIW5vZGUg
PyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICd0cmFw
QnViYmxlZEV2ZW50KC4uLik6IFJlcXVpcmVzIG5vZGUgdG8gYmUgcmVuZGVyZWQuJykgOiBfcHJv
ZEludmFyaWFudCgnNjQnKSA6IHZvaWQgMDsKKworICBzd2l0Y2ggKGluc3QuX3RhZykgeworICAg
IGNhc2UgJ2lmcmFtZSc6CisgICAgY2FzZSAnb2JqZWN0JzoKKyAgICAgIGluc3QuX3dyYXBwZXJT
dGF0ZS5saXN0ZW5lcnMgPSBbUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLnRyYXBCdWJibGVkRXZl
bnQoJ3RvcExvYWQnLCAnbG9hZCcsIG5vZGUpXTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgJ3Zp
ZGVvJzoKKyAgICBjYXNlICdhdWRpbyc6CisKKyAgICAgIGluc3QuX3dyYXBwZXJTdGF0ZS5saXN0
ZW5lcnMgPSBbXTsKKyAgICAgIC8vIENyZWF0ZSBsaXN0ZW5lciBmb3IgZWFjaCBtZWRpYSBldmVu
dAorICAgICAgZm9yICh2YXIgZXZlbnQgaW4gbWVkaWFFdmVudHMpIHsKKyAgICAgICAgaWYgKG1l
ZGlhRXZlbnRzLmhhc093blByb3BlcnR5KGV2ZW50KSkgeworICAgICAgICAgIGluc3QuX3dyYXBw
ZXJTdGF0ZS5saXN0ZW5lcnMucHVzaChSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIudHJhcEJ1YmJs
ZWRFdmVudChldmVudCwgbWVkaWFFdmVudHNbZXZlbnRdLCBub2RlKSk7CisgICAgICAgIH0KKyAg
ICAgIH0KKyAgICAgIGJyZWFrOworICAgIGNhc2UgJ3NvdXJjZSc6CisgICAgICBpbnN0Ll93cmFw
cGVyU3RhdGUubGlzdGVuZXJzID0gW1JlYWN0QnJvd3NlckV2ZW50RW1pdHRlci50cmFwQnViYmxl
ZEV2ZW50KCd0b3BFcnJvcicsICdlcnJvcicsIG5vZGUpXTsKKyAgICAgIGJyZWFrOworICAgIGNh
c2UgJ2ltZyc6CisgICAgICBpbnN0Ll93cmFwcGVyU3RhdGUubGlzdGVuZXJzID0gW1JlYWN0QnJv
d3NlckV2ZW50RW1pdHRlci50cmFwQnViYmxlZEV2ZW50KCd0b3BFcnJvcicsICdlcnJvcicsIG5v
ZGUpLCBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIudHJhcEJ1YmJsZWRFdmVudCgndG9wTG9hZCcs
ICdsb2FkJywgbm9kZSldOworICAgICAgYnJlYWs7CisgICAgY2FzZSAnZm9ybSc6CisgICAgICBp
bnN0Ll93cmFwcGVyU3RhdGUubGlzdGVuZXJzID0gW1JlYWN0QnJvd3NlckV2ZW50RW1pdHRlci50
cmFwQnViYmxlZEV2ZW50KCd0b3BSZXNldCcsICdyZXNldCcsIG5vZGUpLCBSZWFjdEJyb3dzZXJF
dmVudEVtaXR0ZXIudHJhcEJ1YmJsZWRFdmVudCgndG9wU3VibWl0JywgJ3N1Ym1pdCcsIG5vZGUp
XTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgJ2lucHV0JzoKKyAgICBjYXNlICdzZWxlY3QnOgor
ICAgIGNhc2UgJ3RleHRhcmVhJzoKKyAgICAgIGluc3QuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnMg
PSBbUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLnRyYXBCdWJibGVkRXZlbnQoJ3RvcEludmFsaWQn
LCAnaW52YWxpZCcsIG5vZGUpXTsKKyAgICAgIGJyZWFrOworICB9Cit9CisKK2Z1bmN0aW9uIHBv
c3RVcGRhdGVTZWxlY3RXcmFwcGVyKCkgeworICBSZWFjdERPTVNlbGVjdC5wb3N0VXBkYXRlV3Jh
cHBlcih0aGlzKTsKK30KKworLy8gRm9yIEhUTUwsIGNlcnRhaW4gdGFncyBzaG91bGQgb21pdCB0
aGVpciBjbG9zZSB0YWcuIFdlIGtlZXAgYSB3aGl0ZWxpc3QgZm9yCisvLyB0aG9zZSBzcGVjaWFs
LWNhc2UgdGFncy4KKwordmFyIG9taXR0ZWRDbG9zZVRhZ3MgPSB7CisgICdhcmVhJzogdHJ1ZSwK
KyAgJ2Jhc2UnOiB0cnVlLAorICAnYnInOiB0cnVlLAorICAnY29sJzogdHJ1ZSwKKyAgJ2VtYmVk
JzogdHJ1ZSwKKyAgJ2hyJzogdHJ1ZSwKKyAgJ2ltZyc6IHRydWUsCisgICdpbnB1dCc6IHRydWUs
CisgICdrZXlnZW4nOiB0cnVlLAorICAnbGluayc6IHRydWUsCisgICdtZXRhJzogdHJ1ZSwKKyAg
J3BhcmFtJzogdHJ1ZSwKKyAgJ3NvdXJjZSc6IHRydWUsCisgICd0cmFjayc6IHRydWUsCisgICd3
YnInOiB0cnVlCit9OworCit2YXIgbmV3bGluZUVhdGluZ1RhZ3MgPSB7CisgICdsaXN0aW5nJzog
dHJ1ZSwKKyAgJ3ByZSc6IHRydWUsCisgICd0ZXh0YXJlYSc6IHRydWUKK307CisKKy8vIEZvciBI
VE1MLCBjZXJ0YWluIHRhZ3MgY2Fubm90IGhhdmUgY2hpbGRyZW4uIFRoaXMgaGFzIHRoZSBzYW1l
IHB1cnBvc2UgYXMKKy8vIGBvbWl0dGVkQ2xvc2VUYWdzYCBleGNlcHQgdGhhdCBgbWVudWl0ZW1g
IHNob3VsZCBzdGlsbCBoYXZlIGl0cyBjbG9zaW5nIHRhZy4KKwordmFyIHZvaWRFbGVtZW50VGFn
cyA9IF9hc3NpZ24oeworICAnbWVudWl0ZW0nOiB0cnVlCit9LCBvbWl0dGVkQ2xvc2VUYWdzKTsK
KworLy8gV2UgYWNjZXB0IGFueSB0YWcgdG8gYmUgcmVuZGVyZWQgYnV0IHNpbmNlIHRoaXMgZ2V0
cyBpbmplY3RlZCBpbnRvIGFyYml0cmFyeQorLy8gSFRNTCwgd2Ugd2FudCB0byBtYWtlIHN1cmUg
dGhhdCBpdCdzIGEgc2FmZSB0YWcuCisvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMteG1sLyNO
VC1OYW1lCisKK3ZhciBWQUxJRF9UQUdfUkVHRVggPSAvXlthLXpBLVpdW2EtekEtWjpfXC5cLVxk
XSokLzsgLy8gU2ltcGxpZmllZCBzdWJzZXQKK3ZhciB2YWxpZGF0ZWRUYWdDYWNoZSA9IHt9Owor
dmFyIGhhc093blByb3BlcnR5ID0ge30uaGFzT3duUHJvcGVydHk7CisKK2Z1bmN0aW9uIHZhbGlk
YXRlRGFuZ2Vyb3VzVGFnKHRhZykgeworICBpZiAoIWhhc093blByb3BlcnR5LmNhbGwodmFsaWRh
dGVkVGFnQ2FjaGUsIHRhZykpIHsKKyAgICAhVkFMSURfVEFHX1JFR0VYLnRlc3QodGFnKSA/ICJk
ZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0ludmFsaWQg
dGFnOiAlcycsIHRhZykgOiBfcHJvZEludmFyaWFudCgnNjUnLCB0YWcpIDogdm9pZCAwOworICAg
IHZhbGlkYXRlZFRhZ0NhY2hlW3RhZ10gPSB0cnVlOworICB9Cit9CisKK2Z1bmN0aW9uIGlzQ3Vz
dG9tQ29tcG9uZW50KHRhZ05hbWUsIHByb3BzKSB7CisgIHJldHVybiB0YWdOYW1lLmluZGV4T2Yo
Jy0nKSA+PSAwIHx8IHByb3BzLmlzICE9IG51bGw7Cit9CisKK3ZhciBnbG9iYWxJZENvdW50ZXIg
PSAxOworCisvKioKKyAqIENyZWF0ZXMgYSBuZXcgUmVhY3QgY2xhc3MgdGhhdCBpcyBpZGVtcG90
ZW50IGFuZCBjYXBhYmxlIG9mIGNvbnRhaW5pbmcgb3RoZXIKKyAqIFJlYWN0IGNvbXBvbmVudHMu
IEl0IGFjY2VwdHMgZXZlbnQgbGlzdGVuZXJzIGFuZCBET00gcHJvcGVydGllcyB0aGF0IGFyZQor
ICogdmFsaWQgYWNjb3JkaW5nIHRvIGBET01Qcm9wZXJ0eWAuCisgKgorICogIC0gRXZlbnQgbGlz
dGVuZXJzOiBgb25DbGlja2AsIGBvbk1vdXNlRG93bmAsIGV0Yy4KKyAqICAtIERPTSBwcm9wZXJ0
aWVzOiBgY2xhc3NOYW1lYCwgYG5hbWVgLCBgdGl0bGVgLCBldGMuCisgKgorICogVGhlIGBzdHls
ZWAgcHJvcGVydHkgZnVuY3Rpb25zIGRpZmZlcmVudGx5IGZyb20gdGhlIERPTSBBUEkuIEl0IGFj
Y2VwdHMgYW4KKyAqIG9iamVjdCBtYXBwaW5nIG9mIHN0eWxlIHByb3BlcnRpZXMgdG8gdmFsdWVz
LgorICoKKyAqIEBjb25zdHJ1Y3RvciBSZWFjdERPTUNvbXBvbmVudAorICogQGV4dGVuZHMgUmVh
Y3RNdWx0aUNoaWxkCisgKi8KK2Z1bmN0aW9uIFJlYWN0RE9NQ29tcG9uZW50KGVsZW1lbnQpIHsK
KyAgdmFyIHRhZyA9IGVsZW1lbnQudHlwZTsKKyAgdmFsaWRhdGVEYW5nZXJvdXNUYWcodGFnKTsK
KyAgdGhpcy5fY3VycmVudEVsZW1lbnQgPSBlbGVtZW50OworICB0aGlzLl90YWcgPSB0YWcudG9M
b3dlckNhc2UoKTsKKyAgdGhpcy5fbmFtZXNwYWNlVVJJID0gbnVsbDsKKyAgdGhpcy5fcmVuZGVy
ZWRDaGlsZHJlbiA9IG51bGw7CisgIHRoaXMuX3ByZXZpb3VzU3R5bGUgPSBudWxsOworICB0aGlz
Ll9wcmV2aW91c1N0eWxlQ29weSA9IG51bGw7CisgIHRoaXMuX2hvc3ROb2RlID0gbnVsbDsKKyAg
dGhpcy5faG9zdFBhcmVudCA9IG51bGw7CisgIHRoaXMuX3Jvb3ROb2RlSUQgPSAwOworICB0aGlz
Ll9kb21JRCA9IDA7CisgIHRoaXMuX2hvc3RDb250YWluZXJJbmZvID0gbnVsbDsKKyAgdGhpcy5f
d3JhcHBlclN0YXRlID0gbnVsbDsKKyAgdGhpcy5fdG9wTGV2ZWxXcmFwcGVyID0gbnVsbDsKKyAg
dGhpcy5fZmxhZ3MgPSAwOworICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7
CisgICAgdGhpcy5fYW5jZXN0b3JJbmZvID0gbnVsbDsKKyAgICBzZXRBbmRWYWxpZGF0ZUNvbnRl
bnRDaGlsZERldi5jYWxsKHRoaXMsIG51bGwpOworICB9Cit9CisKK1JlYWN0RE9NQ29tcG9uZW50
LmRpc3BsYXlOYW1lID0gJ1JlYWN0RE9NQ29tcG9uZW50JzsKKworUmVhY3RET01Db21wb25lbnQu
TWl4aW4gPSB7CisKKyAgLyoqCisgICAqIEdlbmVyYXRlcyByb290IHRhZyBtYXJrdXAgdGhlbiBy
ZWN1cnNlcy4gVGhpcyBtZXRob2QgaGFzIHNpZGUgZWZmZWN0cyBhbmQKKyAgICogaXMgbm90IGlk
ZW1wb3RlbnQuCisgICAqCisgICAqIEBpbnRlcm5hbAorICAgKiBAcGFyYW0ge1JlYWN0UmVjb25j
aWxlVHJhbnNhY3Rpb258UmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbn0gdHJhbnNhY3Rp
b24KKyAgICogQHBhcmFtIHs/UmVhY3RET01Db21wb25lbnR9IHRoZSBwYXJlbnQgY29tcG9uZW50
IGluc3RhbmNlCisgICAqIEBwYXJhbSB7P29iamVjdH0gaW5mbyBhYm91dCB0aGUgaG9zdCBjb250
YWluZXIKKyAgICogQHBhcmFtIHtvYmplY3R9IGNvbnRleHQKKyAgICogQHJldHVybiB7c3RyaW5n
fSBUaGUgY29tcHV0ZWQgbWFya3VwLgorICAgKi8KKyAgbW91bnRDb21wb25lbnQ6IGZ1bmN0aW9u
ICh0cmFuc2FjdGlvbiwgaG9zdFBhcmVudCwgaG9zdENvbnRhaW5lckluZm8sIGNvbnRleHQpIHsK
KyAgICB0aGlzLl9yb290Tm9kZUlEID0gZ2xvYmFsSWRDb3VudGVyKys7CisgICAgdGhpcy5fZG9t
SUQgPSBob3N0Q29udGFpbmVySW5mby5faWRDb3VudGVyKys7CisgICAgdGhpcy5faG9zdFBhcmVu
dCA9IGhvc3RQYXJlbnQ7CisgICAgdGhpcy5faG9zdENvbnRhaW5lckluZm8gPSBob3N0Q29udGFp
bmVySW5mbzsKKworICAgIHZhciBwcm9wcyA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3BzOwor
CisgICAgc3dpdGNoICh0aGlzLl90YWcpIHsKKyAgICAgIGNhc2UgJ2F1ZGlvJzoKKyAgICAgIGNh
c2UgJ2Zvcm0nOgorICAgICAgY2FzZSAnaWZyYW1lJzoKKyAgICAgIGNhc2UgJ2ltZyc6CisgICAg
ICBjYXNlICdsaW5rJzoKKyAgICAgIGNhc2UgJ29iamVjdCc6CisgICAgICBjYXNlICdzb3VyY2Un
OgorICAgICAgY2FzZSAndmlkZW8nOgorICAgICAgICB0aGlzLl93cmFwcGVyU3RhdGUgPSB7Cisg
ICAgICAgICAgbGlzdGVuZXJzOiBudWxsCisgICAgICAgIH07CisgICAgICAgIHRyYW5zYWN0aW9u
LmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUodHJhcEJ1YmJsZWRFdmVudHNMb2NhbCwgdGhp
cyk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAnaW5wdXQnOgorICAgICAgICBSZWFjdERP
TUlucHV0Lm1vdW50V3JhcHBlcih0aGlzLCBwcm9wcywgaG9zdFBhcmVudCk7CisgICAgICAgIHBy
b3BzID0gUmVhY3RET01JbnB1dC5nZXRIb3N0UHJvcHModGhpcywgcHJvcHMpOworICAgICAgICB0
cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHRyYXBCdWJibGVkRXZlbnRz
TG9jYWwsIHRoaXMpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJ29wdGlvbic6CisgICAg
ICAgIFJlYWN0RE9NT3B0aW9uLm1vdW50V3JhcHBlcih0aGlzLCBwcm9wcywgaG9zdFBhcmVudCk7
CisgICAgICAgIHByb3BzID0gUmVhY3RET01PcHRpb24uZ2V0SG9zdFByb3BzKHRoaXMsIHByb3Bz
KTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICdzZWxlY3QnOgorICAgICAgICBSZWFjdERP
TVNlbGVjdC5tb3VudFdyYXBwZXIodGhpcywgcHJvcHMsIGhvc3RQYXJlbnQpOworICAgICAgICBw
cm9wcyA9IFJlYWN0RE9NU2VsZWN0LmdldEhvc3RQcm9wcyh0aGlzLCBwcm9wcyk7CisgICAgICAg
IHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUodHJhcEJ1YmJsZWRFdmVu
dHNMb2NhbCwgdGhpcyk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAndGV4dGFyZWEnOgor
ICAgICAgICBSZWFjdERPTVRleHRhcmVhLm1vdW50V3JhcHBlcih0aGlzLCBwcm9wcywgaG9zdFBh
cmVudCk7CisgICAgICAgIHByb3BzID0gUmVhY3RET01UZXh0YXJlYS5nZXRIb3N0UHJvcHModGhp
cywgcHJvcHMpOworICAgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1
ZXVlKHRyYXBCdWJibGVkRXZlbnRzTG9jYWwsIHRoaXMpOworICAgICAgICBicmVhazsKKyAgICB9
CisKKyAgICBhc3NlcnRWYWxpZFByb3BzKHRoaXMsIHByb3BzKTsKKworICAgIC8vIFdlIGNyZWF0
ZSB0YWdzIGluIHRoZSBuYW1lc3BhY2Ugb2YgdGhlaXIgcGFyZW50IGNvbnRhaW5lciwgZXhjZXB0
IEhUTUwKKyAgICAvLyB0YWdzIGdldCBubyBuYW1lc3BhY2UuCisgICAgdmFyIG5hbWVzcGFjZVVS
STsKKyAgICB2YXIgcGFyZW50VGFnOworICAgIGlmIChob3N0UGFyZW50ICE9IG51bGwpIHsKKyAg
ICAgIG5hbWVzcGFjZVVSSSA9IGhvc3RQYXJlbnQuX25hbWVzcGFjZVVSSTsKKyAgICAgIHBhcmVu
dFRhZyA9IGhvc3RQYXJlbnQuX3RhZzsKKyAgICB9IGVsc2UgaWYgKGhvc3RDb250YWluZXJJbmZv
Ll90YWcpIHsKKyAgICAgIG5hbWVzcGFjZVVSSSA9IGhvc3RDb250YWluZXJJbmZvLl9uYW1lc3Bh
Y2VVUkk7CisgICAgICBwYXJlbnRUYWcgPSBob3N0Q29udGFpbmVySW5mby5fdGFnOworICAgIH0K
KyAgICBpZiAobmFtZXNwYWNlVVJJID09IG51bGwgfHwgbmFtZXNwYWNlVVJJID09PSBET01OYW1l
c3BhY2VzLnN2ZyAmJiBwYXJlbnRUYWcgPT09ICdmb3JlaWdub2JqZWN0JykgeworICAgICAgbmFt
ZXNwYWNlVVJJID0gRE9NTmFtZXNwYWNlcy5odG1sOworICAgIH0KKyAgICBpZiAobmFtZXNwYWNl
VVJJID09PSBET01OYW1lc3BhY2VzLmh0bWwpIHsKKyAgICAgIGlmICh0aGlzLl90YWcgPT09ICdz
dmcnKSB7CisgICAgICAgIG5hbWVzcGFjZVVSSSA9IERPTU5hbWVzcGFjZXMuc3ZnOworICAgICAg
fSBlbHNlIGlmICh0aGlzLl90YWcgPT09ICdtYXRoJykgeworICAgICAgICBuYW1lc3BhY2VVUkkg
PSBET01OYW1lc3BhY2VzLm1hdGhtbDsKKyAgICAgIH0KKyAgICB9CisgICAgdGhpcy5fbmFtZXNw
YWNlVVJJID0gbmFtZXNwYWNlVVJJOworCisgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9k
dWN0aW9uJykgeworICAgICAgdmFyIHBhcmVudEluZm87CisgICAgICBpZiAoaG9zdFBhcmVudCAh
PSBudWxsKSB7CisgICAgICAgIHBhcmVudEluZm8gPSBob3N0UGFyZW50Ll9hbmNlc3RvckluZm87
CisgICAgICB9IGVsc2UgaWYgKGhvc3RDb250YWluZXJJbmZvLl90YWcpIHsKKyAgICAgICAgcGFy
ZW50SW5mbyA9IGhvc3RDb250YWluZXJJbmZvLl9hbmNlc3RvckluZm87CisgICAgICB9CisgICAg
ICBpZiAocGFyZW50SW5mbykgeworICAgICAgICAvLyBwYXJlbnRJbmZvIHNob3VsZCBhbHdheXMg
YmUgcHJlc2VudCBleGNlcHQgZm9yIHRoZSB0b3AtbGV2ZWwKKyAgICAgICAgLy8gY29tcG9uZW50
IHdoZW4gc2VydmVyIHJlbmRlcmluZworICAgICAgICB2YWxpZGF0ZURPTU5lc3RpbmcodGhpcy5f
dGFnLCBudWxsLCB0aGlzLCBwYXJlbnRJbmZvKTsKKyAgICAgIH0KKyAgICAgIHRoaXMuX2FuY2Vz
dG9ySW5mbyA9IHZhbGlkYXRlRE9NTmVzdGluZy51cGRhdGVkQW5jZXN0b3JJbmZvKHBhcmVudElu
Zm8sIHRoaXMuX3RhZywgdGhpcyk7CisgICAgfQorCisgICAgdmFyIG1vdW50SW1hZ2U7CisgICAg
aWYgKHRyYW5zYWN0aW9uLnVzZUNyZWF0ZUVsZW1lbnQpIHsKKyAgICAgIHZhciBvd25lckRvY3Vt
ZW50ID0gaG9zdENvbnRhaW5lckluZm8uX293bmVyRG9jdW1lbnQ7CisgICAgICB2YXIgZWw7Cisg
ICAgICBpZiAobmFtZXNwYWNlVVJJID09PSBET01OYW1lc3BhY2VzLmh0bWwpIHsKKyAgICAgICAg
aWYgKHRoaXMuX3RhZyA9PT0gJ3NjcmlwdCcpIHsKKyAgICAgICAgICAvLyBDcmVhdGUgdGhlIHNj
cmlwdCB2aWEgLmlubmVySFRNTCBzbyBpdHMgInBhcnNlci1pbnNlcnRlZCIgZmxhZyBpcworICAg
ICAgICAgIC8vIHNldCB0byB0cnVlIGFuZCBpdCBkb2VzIG5vdCBleGVjdXRlCisgICAgICAgICAg
dmFyIGRpdiA9IG93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgICAg
dmFyIHR5cGUgPSB0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlOworICAgICAgICAgIGRpdi5pbm5l
ckhUTUwgPSAnPCcgKyB0eXBlICsgJz48LycgKyB0eXBlICsgJz4nOworICAgICAgICAgIGVsID0g
ZGl2LnJlbW92ZUNoaWxkKGRpdi5maXJzdENoaWxkKTsKKyAgICAgICAgfSBlbHNlIGlmIChwcm9w
cy5pcykgeworICAgICAgICAgIGVsID0gb3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KHRoaXMu
X2N1cnJlbnRFbGVtZW50LnR5cGUsIHByb3BzLmlzKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAvLyBTZXBhcmF0ZSBlbHNlIGJyYW5jaCBpbnN0ZWFkIG9mIHVzaW5nIGBwcm9wcy5pcyB8
fCB1bmRlZmluZWRgIGFib3ZlIGJlY3Vhc2Ugb2YgYSBGaXJlZm94IGJ1Zy4KKyAgICAgICAgICAv
LyBTZWUgZGlzY3Vzc2lvbiBpbiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvcHVs
bC82ODk2CisgICAgICAgICAgLy8gYW5kIGRpc2N1c3Npb24gaW4gaHR0cHM6Ly9idWd6aWxsYS5t
b3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3NjI0MAorICAgICAgICAgIGVsID0gb3duZXJE
b2N1bWVudC5jcmVhdGVFbGVtZW50KHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGUpOworICAgICAg
ICB9CisgICAgICB9IGVsc2UgeworICAgICAgICBlbCA9IG93bmVyRG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKG5hbWVzcGFjZVVSSSwgdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZSk7CisgICAgICB9
CisgICAgICBSZWFjdERPTUNvbXBvbmVudFRyZWUucHJlY2FjaGVOb2RlKHRoaXMsIGVsKTsKKyAg
ICAgIHRoaXMuX2ZsYWdzIHw9IEZsYWdzLmhhc0NhY2hlZENoaWxkTm9kZXM7CisgICAgICBpZiAo
IXRoaXMuX2hvc3RQYXJlbnQpIHsKKyAgICAgICAgRE9NUHJvcGVydHlPcGVyYXRpb25zLnNldEF0
dHJpYnV0ZUZvclJvb3QoZWwpOworICAgICAgfQorICAgICAgdGhpcy5fdXBkYXRlRE9NUHJvcGVy
dGllcyhudWxsLCBwcm9wcywgdHJhbnNhY3Rpb24pOworICAgICAgdmFyIGxhenlUcmVlID0gRE9N
TGF6eVRyZWUoZWwpOworICAgICAgdGhpcy5fY3JlYXRlSW5pdGlhbENoaWxkcmVuKHRyYW5zYWN0
aW9uLCBwcm9wcywgY29udGV4dCwgbGF6eVRyZWUpOworICAgICAgbW91bnRJbWFnZSA9IGxhenlU
cmVlOworICAgIH0gZWxzZSB7CisgICAgICB2YXIgdGFnT3BlbiA9IHRoaXMuX2NyZWF0ZU9wZW5U
YWdNYXJrdXBBbmRQdXRMaXN0ZW5lcnModHJhbnNhY3Rpb24sIHByb3BzKTsKKyAgICAgIHZhciB0
YWdDb250ZW50ID0gdGhpcy5fY3JlYXRlQ29udGVudE1hcmt1cCh0cmFuc2FjdGlvbiwgcHJvcHMs
IGNvbnRleHQpOworICAgICAgaWYgKCF0YWdDb250ZW50ICYmIG9taXR0ZWRDbG9zZVRhZ3NbdGhp
cy5fdGFnXSkgeworICAgICAgICBtb3VudEltYWdlID0gdGFnT3BlbiArICcvPic7CisgICAgICB9
IGVsc2UgeworICAgICAgICBtb3VudEltYWdlID0gdGFnT3BlbiArICc+JyArIHRhZ0NvbnRlbnQg
KyAnPC8nICsgdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZSArICc+JzsKKyAgICAgIH0KKyAgICB9
CisKKyAgICBzd2l0Y2ggKHRoaXMuX3RhZykgeworICAgICAgY2FzZSAnaW5wdXQnOgorICAgICAg
ICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGlucHV0UG9zdE1vdW50
LCB0aGlzKTsKKyAgICAgICAgaWYgKHByb3BzLmF1dG9Gb2N1cykgeworICAgICAgICAgIHRyYW5z
YWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoQXV0b0ZvY3VzVXRpbHMuZm9jdXNE
T01Db21wb25lbnQsIHRoaXMpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgY2Fz
ZSAndGV4dGFyZWEnOgorICAgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5l
bnF1ZXVlKHRleHRhcmVhUG9zdE1vdW50LCB0aGlzKTsKKyAgICAgICAgaWYgKHByb3BzLmF1dG9G
b2N1cykgeworICAgICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVl
dWUoQXV0b0ZvY3VzVXRpbHMuZm9jdXNET01Db21wb25lbnQsIHRoaXMpOworICAgICAgICB9Cisg
ICAgICAgIGJyZWFrOworICAgICAgY2FzZSAnc2VsZWN0JzoKKyAgICAgICAgaWYgKHByb3BzLmF1
dG9Gb2N1cykgeworICAgICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVu
cXVldWUoQXV0b0ZvY3VzVXRpbHMuZm9jdXNET01Db21wb25lbnQsIHRoaXMpOworICAgICAgICB9
CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAnYnV0dG9uJzoKKyAgICAgICAgaWYgKHByb3Bz
LmF1dG9Gb2N1cykgeworICAgICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgp
LmVucXVldWUoQXV0b0ZvY3VzVXRpbHMuZm9jdXNET01Db21wb25lbnQsIHRoaXMpOworICAgICAg
ICB9CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAnb3B0aW9uJzoKKyAgICAgICAgdHJhbnNh
Y3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShvcHRpb25Qb3N0TW91bnQsIHRoaXMp
OworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gbW91bnRJbWFnZTsKKyAgfSwK
KworICAvKioKKyAgICogQ3JlYXRlcyBtYXJrdXAgZm9yIHRoZSBvcGVuIHRhZyBhbmQgYWxsIGF0
dHJpYnV0ZXMuCisgICAqCisgICAqIFRoaXMgbWV0aG9kIGhhcyBzaWRlIGVmZmVjdHMgYmVjYXVz
ZSBldmVudHMgZ2V0IHJlZ2lzdGVyZWQuCisgICAqCisgICAqIEl0ZXJhdGluZyBvdmVyIG9iamVj
dCBwcm9wZXJ0aWVzIGlzIGZhc3RlciB0aGFuIGl0ZXJhdGluZyBvdmVyIGFycmF5cy4KKyAgICog
QHNlZSBodHRwOi8vanNwZXJmLmNvbS9vYmotdnMtYXJyLWl0ZXJhdGlvbgorICAgKgorICAgKiBA
cHJpdmF0ZQorICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb258UmVhY3RTZXJ2
ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb24KKyAgICogQHBhcmFtIHtvYmplY3R9
IHByb3BzCisgICAqIEByZXR1cm4ge3N0cmluZ30gTWFya3VwIG9mIG9wZW5pbmcgdGFnLgorICAg
Ki8KKyAgX2NyZWF0ZU9wZW5UYWdNYXJrdXBBbmRQdXRMaXN0ZW5lcnM6IGZ1bmN0aW9uICh0cmFu
c2FjdGlvbiwgcHJvcHMpIHsKKyAgICB2YXIgcmV0ID0gJzwnICsgdGhpcy5fY3VycmVudEVsZW1l
bnQudHlwZTsKKworICAgIGZvciAodmFyIHByb3BLZXkgaW4gcHJvcHMpIHsKKyAgICAgIGlmICgh
cHJvcHMuaGFzT3duUHJvcGVydHkocHJvcEtleSkpIHsKKyAgICAgICAgY29udGludWU7CisgICAg
ICB9CisgICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcEtleV07CisgICAgICBpZiAocHJv
cFZhbHVlID09IG51bGwpIHsKKyAgICAgICAgY29udGludWU7CisgICAgICB9CisgICAgICBpZiAo
cmVnaXN0cmF0aW9uTmFtZU1vZHVsZXMuaGFzT3duUHJvcGVydHkocHJvcEtleSkpIHsKKyAgICAg
ICAgaWYgKHByb3BWYWx1ZSkgeworICAgICAgICAgIGVucXVldWVQdXRMaXN0ZW5lcih0aGlzLCBw
cm9wS2V5LCBwcm9wVmFsdWUsIHRyYW5zYWN0aW9uKTsKKyAgICAgICAgfQorICAgICAgfSBlbHNl
IHsKKyAgICAgICAgaWYgKHByb3BLZXkgPT09IFNUWUxFKSB7CisgICAgICAgICAgaWYgKHByb3BW
YWx1ZSkgeworICAgICAgICAgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykg
eworICAgICAgICAgICAgICAvLyBTZWUgYF91cGRhdGVET01Qcm9wZXJ0aWVzYC4gc3R5bGUgYmxv
Y2sKKyAgICAgICAgICAgICAgdGhpcy5fcHJldmlvdXNTdHlsZSA9IHByb3BWYWx1ZTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIHByb3BWYWx1ZSA9IHRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5
ID0gX2Fzc2lnbih7fSwgcHJvcHMuc3R5bGUpOworICAgICAgICAgIH0KKyAgICAgICAgICBwcm9w
VmFsdWUgPSBDU1NQcm9wZXJ0eU9wZXJhdGlvbnMuY3JlYXRlTWFya3VwRm9yU3R5bGVzKHByb3BW
YWx1ZSwgdGhpcyk7CisgICAgICAgIH0KKyAgICAgICAgdmFyIG1hcmt1cCA9IG51bGw7CisgICAg
ICAgIGlmICh0aGlzLl90YWcgIT0gbnVsbCAmJiBpc0N1c3RvbUNvbXBvbmVudCh0aGlzLl90YWcs
IHByb3BzKSkgeworICAgICAgICAgIGlmICghUkVTRVJWRURfUFJPUFMuaGFzT3duUHJvcGVydHko
cHJvcEtleSkpIHsKKyAgICAgICAgICAgIG1hcmt1cCA9IERPTVByb3BlcnR5T3BlcmF0aW9ucy5j
cmVhdGVNYXJrdXBGb3JDdXN0b21BdHRyaWJ1dGUocHJvcEtleSwgcHJvcFZhbHVlKTsKKyAgICAg
ICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgbWFya3VwID0gRE9NUHJvcGVydHlP
cGVyYXRpb25zLmNyZWF0ZU1hcmt1cEZvclByb3BlcnR5KHByb3BLZXksIHByb3BWYWx1ZSk7Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKG1hcmt1cCkgeworICAgICAgICAgIHJldCArPSAnICcgKyBt
YXJrdXA7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisKKyAgICAvLyBGb3Igc3RhdGljIHBh
Z2VzLCBubyBuZWVkIHRvIHB1dCBSZWFjdCBJRCBhbmQgY2hlY2tzdW0uIFNhdmVzIGxvdHMgb2YK
KyAgICAvLyBieXRlcy4KKyAgICBpZiAodHJhbnNhY3Rpb24ucmVuZGVyVG9TdGF0aWNNYXJrdXAp
IHsKKyAgICAgIHJldHVybiByZXQ7CisgICAgfQorCisgICAgaWYgKCF0aGlzLl9ob3N0UGFyZW50
KSB7CisgICAgICByZXQgKz0gJyAnICsgRE9NUHJvcGVydHlPcGVyYXRpb25zLmNyZWF0ZU1hcmt1
cEZvclJvb3QoKTsKKyAgICB9CisgICAgcmV0ICs9ICcgJyArIERPTVByb3BlcnR5T3BlcmF0aW9u
cy5jcmVhdGVNYXJrdXBGb3JJRCh0aGlzLl9kb21JRCk7CisgICAgcmV0dXJuIHJldDsKKyAgfSwK
KworICAvKioKKyAgICogQ3JlYXRlcyBtYXJrdXAgZm9yIHRoZSBjb250ZW50IGJldHdlZW4gdGhl
IHRhZ3MuCisgICAqCisgICAqIEBwcml2YXRlCisgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVU
cmFuc2FjdGlvbnxSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9ufSB0cmFuc2FjdGlvbgor
ICAgKiBAcGFyYW0ge29iamVjdH0gcHJvcHMKKyAgICogQHBhcmFtIHtvYmplY3R9IGNvbnRleHQK
KyAgICogQHJldHVybiB7c3RyaW5nfSBDb250ZW50IG1hcmt1cC4KKyAgICovCisgIF9jcmVhdGVD
b250ZW50TWFya3VwOiBmdW5jdGlvbiAodHJhbnNhY3Rpb24sIHByb3BzLCBjb250ZXh0KSB7Cisg
ICAgdmFyIHJldCA9ICcnOworCisgICAgLy8gSW50ZW50aW9uYWwgdXNlIG9mICE9IHRvIGF2b2lk
IGNhdGNoaW5nIHplcm8vZmFsc2UuCisgICAgdmFyIGlubmVySFRNTCA9IHByb3BzLmRhbmdlcm91
c2x5U2V0SW5uZXJIVE1MOworICAgIGlmIChpbm5lckhUTUwgIT0gbnVsbCkgeworICAgICAgaWYg
KGlubmVySFRNTC5fX2h0bWwgIT0gbnVsbCkgeworICAgICAgICByZXQgPSBpbm5lckhUTUwuX19o
dG1sOworICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICB2YXIgY29udGVudFRvVXNlID0gQ09O
VEVOVF9UWVBFU1t0eXBlb2YgcHJvcHMuY2hpbGRyZW5dID8gcHJvcHMuY2hpbGRyZW4gOiBudWxs
OworICAgICAgdmFyIGNoaWxkcmVuVG9Vc2UgPSBjb250ZW50VG9Vc2UgIT0gbnVsbCA/IG51bGwg
OiBwcm9wcy5jaGlsZHJlbjsKKyAgICAgIGlmIChjb250ZW50VG9Vc2UgIT0gbnVsbCkgeworICAg
ICAgICAvLyBUT0RPOiBWYWxpZGF0ZSB0aGF0IHRleHQgaXMgYWxsb3dlZCBhcyBhIGNoaWxkIG9m
IHRoaXMgbm9kZQorICAgICAgICByZXQgPSBlc2NhcGVUZXh0Q29udGVudEZvckJyb3dzZXIoY29u
dGVudFRvVXNlKTsKKyAgICAgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykg
eworICAgICAgICAgIHNldEFuZFZhbGlkYXRlQ29udGVudENoaWxkRGV2LmNhbGwodGhpcywgY29u
dGVudFRvVXNlKTsKKyAgICAgICAgfQorICAgICAgfSBlbHNlIGlmIChjaGlsZHJlblRvVXNlICE9
IG51bGwpIHsKKyAgICAgICAgdmFyIG1vdW50SW1hZ2VzID0gdGhpcy5tb3VudENoaWxkcmVuKGNo
aWxkcmVuVG9Vc2UsIHRyYW5zYWN0aW9uLCBjb250ZXh0KTsKKyAgICAgICAgcmV0ID0gbW91bnRJ
bWFnZXMuam9pbignJyk7CisgICAgICB9CisgICAgfQorICAgIGlmIChuZXdsaW5lRWF0aW5nVGFn
c1t0aGlzLl90YWddICYmIHJldC5jaGFyQXQoMCkgPT09ICdcbicpIHsKKyAgICAgIC8vIHRleHQv
aHRtbCBpZ25vcmVzIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaW4gdGhlc2UgdGFncyBpZiBpdCdzIGEg
bmV3bGluZQorICAgICAgLy8gUHJlZmVyIHRvIGJyZWFrIGFwcGxpY2F0aW9uL3htbCBvdmVyIHRl
eHQvaHRtbCAoZm9yIG5vdykgYnkgYWRkaW5nCisgICAgICAvLyBhIG5ld2xpbmUgc3BlY2lmaWNh
bGx5IHRvIGdldCBlYXRlbiBieSB0aGUgcGFyc2VyLiAoQWx0ZXJuYXRlbHkgZm9yCisgICAgICAv
LyB0ZXh0YXJlYXMsIHJlcGxhY2luZyAiXlxuIiB3aXRoICJcclxuIiBkb2Vzbid0IGdldCBlYXRl
biwgYW5kIHRoZSBmaXJzdAorICAgICAgLy8gXHIgaXMgbm9ybWFsaXplZCBvdXQgYnkgSFRNTFRl
eHRBcmVhRWxlbWVudCN2YWx1ZS4pCisgICAgICAvLyBTZWU6IDxodHRwOi8vd3d3LnczLm9yZy9U
Ui9odG1sLXBvbHlnbG90LyNuZXdsaW5lcy1pbi10ZXh0YXJlYS1hbmQtcHJlPgorICAgICAgLy8g
U2VlOiA8aHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDUvc3ludGF4Lmh0bWwjZWxlbWVudC1yZXN0
cmljdGlvbnM+CisgICAgICAvLyBTZWU6IDxodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS9zeW50
YXguaHRtbCNuZXdsaW5lcz4KKyAgICAgIC8vIFNlZTogUGFyc2luZyBvZiAidGV4dGFyZWEiICJs
aXN0aW5nIiBhbmQgInByZSIgZWxlbWVudHMKKyAgICAgIC8vICBmcm9tIDxodHRwOi8vd3d3Lncz
Lm9yZy9UUi9odG1sNS9zeW50YXguaHRtbCNwYXJzaW5nLW1haW4taW5ib2R5PgorICAgICAgcmV0
dXJuICdcbicgKyByZXQ7CisgICAgfSBlbHNlIHsKKyAgICAgIHJldHVybiByZXQ7CisgICAgfQor
ICB9LAorCisgIF9jcmVhdGVJbml0aWFsQ2hpbGRyZW46IGZ1bmN0aW9uICh0cmFuc2FjdGlvbiwg
cHJvcHMsIGNvbnRleHQsIGxhenlUcmVlKSB7CisgICAgLy8gSW50ZW50aW9uYWwgdXNlIG9mICE9
IHRvIGF2b2lkIGNhdGNoaW5nIHplcm8vZmFsc2UuCisgICAgdmFyIGlubmVySFRNTCA9IHByb3Bz
LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOworICAgIGlmIChpbm5lckhUTUwgIT0gbnVsbCkgewor
ICAgICAgaWYgKGlubmVySFRNTC5fX2h0bWwgIT0gbnVsbCkgeworICAgICAgICBET01MYXp5VHJl
ZS5xdWV1ZUhUTUwobGF6eVRyZWUsIGlubmVySFRNTC5fX2h0bWwpOworICAgICAgfQorICAgIH0g
ZWxzZSB7CisgICAgICB2YXIgY29udGVudFRvVXNlID0gQ09OVEVOVF9UWVBFU1t0eXBlb2YgcHJv
cHMuY2hpbGRyZW5dID8gcHJvcHMuY2hpbGRyZW4gOiBudWxsOworICAgICAgdmFyIGNoaWxkcmVu
VG9Vc2UgPSBjb250ZW50VG9Vc2UgIT0gbnVsbCA/IG51bGwgOiBwcm9wcy5jaGlsZHJlbjsKKyAg
ICAgIGlmIChjb250ZW50VG9Vc2UgIT0gbnVsbCkgeworICAgICAgICAvLyBUT0RPOiBWYWxpZGF0
ZSB0aGF0IHRleHQgaXMgYWxsb3dlZCBhcyBhIGNoaWxkIG9mIHRoaXMgbm9kZQorICAgICAgICBp
ZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAgICAgc2V0QW5kVmFs
aWRhdGVDb250ZW50Q2hpbGREZXYuY2FsbCh0aGlzLCBjb250ZW50VG9Vc2UpOworICAgICAgICB9
CisgICAgICAgIERPTUxhenlUcmVlLnF1ZXVlVGV4dChsYXp5VHJlZSwgY29udGVudFRvVXNlKTsK
KyAgICAgIH0gZWxzZSBpZiAoY2hpbGRyZW5Ub1VzZSAhPSBudWxsKSB7CisgICAgICAgIHZhciBt
b3VudEltYWdlcyA9IHRoaXMubW91bnRDaGlsZHJlbihjaGlsZHJlblRvVXNlLCB0cmFuc2FjdGlv
biwgY29udGV4dCk7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbW91bnRJbWFnZXMubGVu
Z3RoOyBpKyspIHsKKyAgICAgICAgICBET01MYXp5VHJlZS5xdWV1ZUNoaWxkKGxhenlUcmVlLCBt
b3VudEltYWdlc1tpXSk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgIH0sCisKKyAgLyoq
CisgICAqIFJlY2VpdmVzIGEgbmV4dCBlbGVtZW50IGFuZCB1cGRhdGVzIHRoZSBjb21wb25lbnQu
CisgICAqCisgICAqIEBpbnRlcm5hbAorICAgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gbmV4dEVs
ZW1lbnQKKyAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufFJlYWN0U2VydmVy
UmVuZGVyaW5nVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uCisgICAqIEBwYXJhbSB7b2JqZWN0fSBj
b250ZXh0CisgICAqLworICByZWNlaXZlQ29tcG9uZW50OiBmdW5jdGlvbiAobmV4dEVsZW1lbnQs
IHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7CisgICAgdmFyIHByZXZFbGVtZW50ID0gdGhpcy5fY3Vy
cmVudEVsZW1lbnQ7CisgICAgdGhpcy5fY3VycmVudEVsZW1lbnQgPSBuZXh0RWxlbWVudDsKKyAg
ICB0aGlzLnVwZGF0ZUNvbXBvbmVudCh0cmFuc2FjdGlvbiwgcHJldkVsZW1lbnQsIG5leHRFbGVt
ZW50LCBjb250ZXh0KTsKKyAgfSwKKworICAvKioKKyAgICogVXBkYXRlcyBhIERPTSBjb21wb25l
bnQgYWZ0ZXIgaXQgaGFzIGFscmVhZHkgYmVlbiBhbGxvY2F0ZWQgYW5kCisgICAqIGF0dGFjaGVk
IHRvIHRoZSBET00uIFJlY29uY2lsZXMgdGhlIHJvb3QgRE9NIG5vZGUsIHRoZW4gcmVjdXJzZXMu
CisgICAqCisgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rp
b24KKyAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IHByZXZFbGVtZW50CisgICAqIEBwYXJhbSB7
UmVhY3RFbGVtZW50fSBuZXh0RWxlbWVudAorICAgKiBAaW50ZXJuYWwKKyAgICogQG92ZXJyaWRh
YmxlCisgICAqLworICB1cGRhdGVDb21wb25lbnQ6IGZ1bmN0aW9uICh0cmFuc2FjdGlvbiwgcHJl
dkVsZW1lbnQsIG5leHRFbGVtZW50LCBjb250ZXh0KSB7CisgICAgdmFyIGxhc3RQcm9wcyA9IHBy
ZXZFbGVtZW50LnByb3BzOworICAgIHZhciBuZXh0UHJvcHMgPSB0aGlzLl9jdXJyZW50RWxlbWVu
dC5wcm9wczsKKworICAgIHN3aXRjaCAodGhpcy5fdGFnKSB7CisgICAgICBjYXNlICdpbnB1dCc6
CisgICAgICAgIGxhc3RQcm9wcyA9IFJlYWN0RE9NSW5wdXQuZ2V0SG9zdFByb3BzKHRoaXMsIGxh
c3RQcm9wcyk7CisgICAgICAgIG5leHRQcm9wcyA9IFJlYWN0RE9NSW5wdXQuZ2V0SG9zdFByb3Bz
KHRoaXMsIG5leHRQcm9wcyk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAnb3B0aW9uJzoK
KyAgICAgICAgbGFzdFByb3BzID0gUmVhY3RET01PcHRpb24uZ2V0SG9zdFByb3BzKHRoaXMsIGxh
c3RQcm9wcyk7CisgICAgICAgIG5leHRQcm9wcyA9IFJlYWN0RE9NT3B0aW9uLmdldEhvc3RQcm9w
cyh0aGlzLCBuZXh0UHJvcHMpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJ3NlbGVjdCc6
CisgICAgICAgIGxhc3RQcm9wcyA9IFJlYWN0RE9NU2VsZWN0LmdldEhvc3RQcm9wcyh0aGlzLCBs
YXN0UHJvcHMpOworICAgICAgICBuZXh0UHJvcHMgPSBSZWFjdERPTVNlbGVjdC5nZXRIb3N0UHJv
cHModGhpcywgbmV4dFByb3BzKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICd0ZXh0YXJl
YSc6CisgICAgICAgIGxhc3RQcm9wcyA9IFJlYWN0RE9NVGV4dGFyZWEuZ2V0SG9zdFByb3BzKHRo
aXMsIGxhc3RQcm9wcyk7CisgICAgICAgIG5leHRQcm9wcyA9IFJlYWN0RE9NVGV4dGFyZWEuZ2V0
SG9zdFByb3BzKHRoaXMsIG5leHRQcm9wcyk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAg
IGFzc2VydFZhbGlkUHJvcHModGhpcywgbmV4dFByb3BzKTsKKyAgICB0aGlzLl91cGRhdGVET01Q
cm9wZXJ0aWVzKGxhc3RQcm9wcywgbmV4dFByb3BzLCB0cmFuc2FjdGlvbik7CisgICAgdGhpcy5f
dXBkYXRlRE9NQ2hpbGRyZW4obGFzdFByb3BzLCBuZXh0UHJvcHMsIHRyYW5zYWN0aW9uLCBjb250
ZXh0KTsKKworICAgIHN3aXRjaCAodGhpcy5fdGFnKSB7CisgICAgICBjYXNlICdpbnB1dCc6Cisg
ICAgICAgIC8vIFVwZGF0ZSB0aGUgd3JhcHBlciBhcm91bmQgaW5wdXRzICphZnRlciogdXBkYXRp
bmcgcHJvcHMuIFRoaXMgaGFzIHRvCisgICAgICAgIC8vIGhhcHBlbiBhZnRlciBgX3VwZGF0ZURP
TVByb3BlcnRpZXNgLiBPdGhlcndpc2UgSFRNTDUgaW5wdXQgdmFsaWRhdGlvbnMKKyAgICAgICAg
Ly8gcmFpc2Ugd2FybmluZ3MgYW5kIHByZXZlbnQgdGhlIG5ldyB2YWx1ZSBmcm9tIGJlaW5nIGFz
c2lnbmVkLgorICAgICAgICBSZWFjdERPTUlucHV0LnVwZGF0ZVdyYXBwZXIodGhpcyk7CisgICAg
ICAgIGJyZWFrOworICAgICAgY2FzZSAndGV4dGFyZWEnOgorICAgICAgICBSZWFjdERPTVRleHRh
cmVhLnVwZGF0ZVdyYXBwZXIodGhpcyk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAnc2Vs
ZWN0JzoKKyAgICAgICAgLy8gPHNlbGVjdD4gdmFsdWUgdXBkYXRlIG5lZWRzIHRvIG9jY3VyIGFm
dGVyIDxvcHRpb24+IGNoaWxkcmVuCisgICAgICAgIC8vIHJlY29uY2lsaWF0aW9uCisgICAgICAg
IHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUocG9zdFVwZGF0ZVNlbGVj
dFdyYXBwZXIsIHRoaXMpOworICAgICAgICBicmVhazsKKyAgICB9CisgIH0sCisKKyAgLyoqCisg
ICAqIFJlY29uY2lsZXMgdGhlIHByb3BlcnRpZXMgYnkgZGV0ZWN0aW5nIGRpZmZlcmVuY2VzIGlu
IHByb3BlcnR5IHZhbHVlcyBhbmQKKyAgICogdXBkYXRpbmcgdGhlIERPTSBhcyBuZWNlc3Nhcnku
IFRoaXMgZnVuY3Rpb24gaXMgcHJvYmFibHkgdGhlIHNpbmdsZSBtb3N0CisgICAqIGNyaXRpY2Fs
IHBhdGggZm9yIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbi4KKyAgICoKKyAgICogVE9ETzogQmVu
Y2htYXJrIHdoZXRoZXIgY2hlY2tpbmcgZm9yIGNoYW5nZWQgdmFsdWVzIGluIG1lbW9yeSBhY3R1
YWxseQorICAgKiAgICAgICBpbXByb3ZlcyBwZXJmb3JtYW5jZSAoZXNwZWNpYWxseSBzdGF0aWNh
bGx5IHBvc2l0aW9uZWQgZWxlbWVudHMpLgorICAgKiBUT0RPOiBCZW5jaG1hcmsgdGhlIGVmZmVj
dHMgb2YgcHV0dGluZyB0aGlzIGF0IHRoZSB0b3Agc2luY2UgOTklIG9mIHByb3BzCisgICAqICAg
ICAgIGRvIG5vdCBjaGFuZ2UgZm9yIGEgZ2l2ZW4gcmVjb25jaWxpYXRpb24uCisgICAqIFRPRE86
IEJlbmNobWFyayBhcmVhcyB0aGF0IGNhbiBiZSBpbXByb3ZlZCB3aXRoIGNhY2hpbmcuCisgICAq
CisgICAqIEBwcml2YXRlCisgICAqIEBwYXJhbSB7b2JqZWN0fSBsYXN0UHJvcHMKKyAgICogQHBh
cmFtIHtvYmplY3R9IG5leHRQcm9wcworICAgKiBAcGFyYW0gez9ET01FbGVtZW50fSBub2RlCisg
ICAqLworICBfdXBkYXRlRE9NUHJvcGVydGllczogZnVuY3Rpb24gKGxhc3RQcm9wcywgbmV4dFBy
b3BzLCB0cmFuc2FjdGlvbikgeworICAgIHZhciBwcm9wS2V5OworICAgIHZhciBzdHlsZU5hbWU7
CisgICAgdmFyIHN0eWxlVXBkYXRlczsKKyAgICBmb3IgKHByb3BLZXkgaW4gbGFzdFByb3BzKSB7
CisgICAgICBpZiAobmV4dFByb3BzLmhhc093blByb3BlcnR5KHByb3BLZXkpIHx8ICFsYXN0UHJv
cHMuaGFzT3duUHJvcGVydHkocHJvcEtleSkgfHwgbGFzdFByb3BzW3Byb3BLZXldID09IG51bGwp
IHsKKyAgICAgICAgY29udGludWU7CisgICAgICB9CisgICAgICBpZiAocHJvcEtleSA9PT0gU1RZ
TEUpIHsKKyAgICAgICAgdmFyIGxhc3RTdHlsZSA9IHRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5Owor
ICAgICAgICBmb3IgKHN0eWxlTmFtZSBpbiBsYXN0U3R5bGUpIHsKKyAgICAgICAgICBpZiAobGFz
dFN0eWxlLmhhc093blByb3BlcnR5KHN0eWxlTmFtZSkpIHsKKyAgICAgICAgICAgIHN0eWxlVXBk
YXRlcyA9IHN0eWxlVXBkYXRlcyB8fCB7fTsKKyAgICAgICAgICAgIHN0eWxlVXBkYXRlc1tzdHls
ZU5hbWVdID0gJyc7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHRoaXMuX3ByZXZp
b3VzU3R5bGVDb3B5ID0gbnVsbDsKKyAgICAgIH0gZWxzZSBpZiAocmVnaXN0cmF0aW9uTmFtZU1v
ZHVsZXMuaGFzT3duUHJvcGVydHkocHJvcEtleSkpIHsKKyAgICAgICAgaWYgKGxhc3RQcm9wc1tw
cm9wS2V5XSkgeworICAgICAgICAgIC8vIE9ubHkgY2FsbCBkZWxldGVMaXN0ZW5lciBpZiB0aGVy
ZSB3YXMgYSBsaXN0ZW5lciBwcmV2aW91c2x5IG9yCisgICAgICAgICAgLy8gZWxzZSB3aWxsRGVs
ZXRlTGlzdGVuZXIgZ2V0cyBjYWxsZWQgd2hlbiB0aGVyZSB3YXNuJ3QgYWN0dWFsbHkgYQorICAg
ICAgICAgIC8vIGxpc3RlbmVyIChlLmcuLCBvbkNsaWNrPXtudWxsfSkKKyAgICAgICAgICBkZWxl
dGVMaXN0ZW5lcih0aGlzLCBwcm9wS2V5KTsKKyAgICAgICAgfQorICAgICAgfSBlbHNlIGlmIChp
c0N1c3RvbUNvbXBvbmVudCh0aGlzLl90YWcsIGxhc3RQcm9wcykpIHsKKyAgICAgICAgaWYgKCFS
RVNFUlZFRF9QUk9QUy5oYXNPd25Qcm9wZXJ0eShwcm9wS2V5KSkgeworICAgICAgICAgIERPTVBy
b3BlcnR5T3BlcmF0aW9ucy5kZWxldGVWYWx1ZUZvckF0dHJpYnV0ZShnZXROb2RlKHRoaXMpLCBw
cm9wS2V5KTsKKyAgICAgICAgfQorICAgICAgfSBlbHNlIGlmIChET01Qcm9wZXJ0eS5wcm9wZXJ0
aWVzW3Byb3BLZXldIHx8IERPTVByb3BlcnR5LmlzQ3VzdG9tQXR0cmlidXRlKHByb3BLZXkpKSB7
CisgICAgICAgIERPTVByb3BlcnR5T3BlcmF0aW9ucy5kZWxldGVWYWx1ZUZvclByb3BlcnR5KGdl
dE5vZGUodGhpcyksIHByb3BLZXkpOworICAgICAgfQorICAgIH0KKyAgICBmb3IgKHByb3BLZXkg
aW4gbmV4dFByb3BzKSB7CisgICAgICB2YXIgbmV4dFByb3AgPSBuZXh0UHJvcHNbcHJvcEtleV07
CisgICAgICB2YXIgbGFzdFByb3AgPSBwcm9wS2V5ID09PSBTVFlMRSA/IHRoaXMuX3ByZXZpb3Vz
U3R5bGVDb3B5IDogbGFzdFByb3BzICE9IG51bGwgPyBsYXN0UHJvcHNbcHJvcEtleV0gOiB1bmRl
ZmluZWQ7CisgICAgICBpZiAoIW5leHRQcm9wcy5oYXNPd25Qcm9wZXJ0eShwcm9wS2V5KSB8fCBu
ZXh0UHJvcCA9PT0gbGFzdFByb3AgfHwgbmV4dFByb3AgPT0gbnVsbCAmJiBsYXN0UHJvcCA9PSBu
dWxsKSB7CisgICAgICAgIGNvbnRpbnVlOworICAgICAgfQorICAgICAgaWYgKHByb3BLZXkgPT09
IFNUWUxFKSB7CisgICAgICAgIGlmIChuZXh0UHJvcCkgeworICAgICAgICAgIGlmICgiZGV2ZWxv
cG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICAgICAgIGNoZWNrQW5kV2FybkZvck11
dGF0ZWRTdHlsZSh0aGlzLl9wcmV2aW91c1N0eWxlQ29weSwgdGhpcy5fcHJldmlvdXNTdHlsZSwg
dGhpcyk7CisgICAgICAgICAgICB0aGlzLl9wcmV2aW91c1N0eWxlID0gbmV4dFByb3A7CisgICAg
ICAgICAgfQorICAgICAgICAgIG5leHRQcm9wID0gdGhpcy5fcHJldmlvdXNTdHlsZUNvcHkgPSBf
YXNzaWduKHt9LCBuZXh0UHJvcCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgdGhpcy5f
cHJldmlvdXNTdHlsZUNvcHkgPSBudWxsOworICAgICAgICB9CisgICAgICAgIGlmIChsYXN0UHJv
cCkgeworICAgICAgICAgIC8vIFVuc2V0IHN0eWxlcyBvbiBgbGFzdFByb3BgIGJ1dCBub3Qgb24g
YG5leHRQcm9wYC4KKyAgICAgICAgICBmb3IgKHN0eWxlTmFtZSBpbiBsYXN0UHJvcCkgeworICAg
ICAgICAgICAgaWYgKGxhc3RQcm9wLmhhc093blByb3BlcnR5KHN0eWxlTmFtZSkgJiYgKCFuZXh0
UHJvcCB8fCAhbmV4dFByb3AuaGFzT3duUHJvcGVydHkoc3R5bGVOYW1lKSkpIHsKKyAgICAgICAg
ICAgICAgc3R5bGVVcGRhdGVzID0gc3R5bGVVcGRhdGVzIHx8IHt9OworICAgICAgICAgICAgICBz
dHlsZVVwZGF0ZXNbc3R5bGVOYW1lXSA9ICcnOworICAgICAgICAgICAgfQorICAgICAgICAgIH0K
KyAgICAgICAgICAvLyBVcGRhdGUgc3R5bGVzIHRoYXQgY2hhbmdlZCBzaW5jZSBgbGFzdFByb3Bg
LgorICAgICAgICAgIGZvciAoc3R5bGVOYW1lIGluIG5leHRQcm9wKSB7CisgICAgICAgICAgICBp
ZiAobmV4dFByb3AuaGFzT3duUHJvcGVydHkoc3R5bGVOYW1lKSAmJiBsYXN0UHJvcFtzdHlsZU5h
bWVdICE9PSBuZXh0UHJvcFtzdHlsZU5hbWVdKSB7CisgICAgICAgICAgICAgIHN0eWxlVXBkYXRl
cyA9IHN0eWxlVXBkYXRlcyB8fCB7fTsKKyAgICAgICAgICAgICAgc3R5bGVVcGRhdGVzW3N0eWxl
TmFtZV0gPSBuZXh0UHJvcFtzdHlsZU5hbWVdOworICAgICAgICAgICAgfQorICAgICAgICAgIH0K
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAvLyBSZWxpZXMgb24gYHVwZGF0ZVN0eWxlc0J5
SURgIG5vdCBtdXRhdGluZyBgc3R5bGVVcGRhdGVzYC4KKyAgICAgICAgICBzdHlsZVVwZGF0ZXMg
PSBuZXh0UHJvcDsKKyAgICAgICAgfQorICAgICAgfSBlbHNlIGlmIChyZWdpc3RyYXRpb25OYW1l
TW9kdWxlcy5oYXNPd25Qcm9wZXJ0eShwcm9wS2V5KSkgeworICAgICAgICBpZiAobmV4dFByb3Ap
IHsKKyAgICAgICAgICBlbnF1ZXVlUHV0TGlzdGVuZXIodGhpcywgcHJvcEtleSwgbmV4dFByb3As
IHRyYW5zYWN0aW9uKTsKKyAgICAgICAgfSBlbHNlIGlmIChsYXN0UHJvcCkgeworICAgICAgICAg
IGRlbGV0ZUxpc3RlbmVyKHRoaXMsIHByb3BLZXkpOworICAgICAgICB9CisgICAgICB9IGVsc2Ug
aWYgKGlzQ3VzdG9tQ29tcG9uZW50KHRoaXMuX3RhZywgbmV4dFByb3BzKSkgeworICAgICAgICBp
ZiAoIVJFU0VSVkVEX1BST1BTLmhhc093blByb3BlcnR5KHByb3BLZXkpKSB7CisgICAgICAgICAg
RE9NUHJvcGVydHlPcGVyYXRpb25zLnNldFZhbHVlRm9yQXR0cmlidXRlKGdldE5vZGUodGhpcyks
IHByb3BLZXksIG5leHRQcm9wKTsKKyAgICAgICAgfQorICAgICAgfSBlbHNlIGlmIChET01Qcm9w
ZXJ0eS5wcm9wZXJ0aWVzW3Byb3BLZXldIHx8IERPTVByb3BlcnR5LmlzQ3VzdG9tQXR0cmlidXRl
KHByb3BLZXkpKSB7CisgICAgICAgIHZhciBub2RlID0gZ2V0Tm9kZSh0aGlzKTsKKyAgICAgICAg
Ly8gSWYgd2UncmUgdXBkYXRpbmcgdG8gbnVsbCBvciB1bmRlZmluZWQsIHdlIHNob3VsZCByZW1v
dmUgdGhlIHByb3BlcnR5CisgICAgICAgIC8vIGZyb20gdGhlIERPTSBub2RlIGluc3RlYWQgb2Yg
aW5hZHZlcnRlbnRseSBzZXR0aW5nIHRvIGEgc3RyaW5nLiBUaGlzCisgICAgICAgIC8vIGJyaW5n
cyB1cyBpbiBsaW5lIHdpdGggdGhlIHNhbWUgYmVoYXZpb3Igd2UgaGF2ZSBvbiBpbml0aWFsIHJl
bmRlci4KKyAgICAgICAgaWYgKG5leHRQcm9wICE9IG51bGwpIHsKKyAgICAgICAgICBET01Qcm9w
ZXJ0eU9wZXJhdGlvbnMuc2V0VmFsdWVGb3JQcm9wZXJ0eShub2RlLCBwcm9wS2V5LCBuZXh0UHJv
cCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgRE9NUHJvcGVydHlPcGVyYXRpb25zLmRl
bGV0ZVZhbHVlRm9yUHJvcGVydHkobm9kZSwgcHJvcEtleSk7CisgICAgICAgIH0KKyAgICAgIH0K
KyAgICB9CisgICAgaWYgKHN0eWxlVXBkYXRlcykgeworICAgICAgQ1NTUHJvcGVydHlPcGVyYXRp
b25zLnNldFZhbHVlRm9yU3R5bGVzKGdldE5vZGUodGhpcyksIHN0eWxlVXBkYXRlcywgdGhpcyk7
CisgICAgfQorICB9LAorCisgIC8qKgorICAgKiBSZWNvbmNpbGVzIHRoZSBjaGlsZHJlbiB3aXRo
IHRoZSB2YXJpb3VzIHByb3BlcnRpZXMgdGhhdCBhZmZlY3QgdGhlCisgICAqIGNoaWxkcmVuIGNv
bnRlbnQuCisgICAqCisgICAqIEBwYXJhbSB7b2JqZWN0fSBsYXN0UHJvcHMKKyAgICogQHBhcmFt
IHtvYmplY3R9IG5leHRQcm9wcworICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rp
b259IHRyYW5zYWN0aW9uCisgICAqIEBwYXJhbSB7b2JqZWN0fSBjb250ZXh0CisgICAqLworICBf
dXBkYXRlRE9NQ2hpbGRyZW46IGZ1bmN0aW9uIChsYXN0UHJvcHMsIG5leHRQcm9wcywgdHJhbnNh
Y3Rpb24sIGNvbnRleHQpIHsKKyAgICB2YXIgbGFzdENvbnRlbnQgPSBDT05URU5UX1RZUEVTW3R5
cGVvZiBsYXN0UHJvcHMuY2hpbGRyZW5dID8gbGFzdFByb3BzLmNoaWxkcmVuIDogbnVsbDsKKyAg
ICB2YXIgbmV4dENvbnRlbnQgPSBDT05URU5UX1RZUEVTW3R5cGVvZiBuZXh0UHJvcHMuY2hpbGRy
ZW5dID8gbmV4dFByb3BzLmNoaWxkcmVuIDogbnVsbDsKKworICAgIHZhciBsYXN0SHRtbCA9IGxh
c3RQcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTCAmJiBsYXN0UHJvcHMuZGFuZ2Vyb3VzbHlT
ZXRJbm5lckhUTUwuX19odG1sOworICAgIHZhciBuZXh0SHRtbCA9IG5leHRQcm9wcy5kYW5nZXJv
dXNseVNldElubmVySFRNTCAmJiBuZXh0UHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwuX19o
dG1sOworCisgICAgLy8gTm90ZSB0aGUgdXNlIG9mIGAhPWAgd2hpY2ggY2hlY2tzIGZvciBudWxs
IG9yIHVuZGVmaW5lZC4KKyAgICB2YXIgbGFzdENoaWxkcmVuID0gbGFzdENvbnRlbnQgIT0gbnVs
bCA/IG51bGwgOiBsYXN0UHJvcHMuY2hpbGRyZW47CisgICAgdmFyIG5leHRDaGlsZHJlbiA9IG5l
eHRDb250ZW50ICE9IG51bGwgPyBudWxsIDogbmV4dFByb3BzLmNoaWxkcmVuOworCisgICAgLy8g
SWYgd2UncmUgc3dpdGNoaW5nIGZyb20gY2hpbGRyZW4gdG8gY29udGVudC9odG1sIG9yIHZpY2Ug
dmVyc2EsIHJlbW92ZQorICAgIC8vIHRoZSBvbGQgY29udGVudAorICAgIHZhciBsYXN0SGFzQ29u
dGVudE9ySHRtbCA9IGxhc3RDb250ZW50ICE9IG51bGwgfHwgbGFzdEh0bWwgIT0gbnVsbDsKKyAg
ICB2YXIgbmV4dEhhc0NvbnRlbnRPckh0bWwgPSBuZXh0Q29udGVudCAhPSBudWxsIHx8IG5leHRI
dG1sICE9IG51bGw7CisgICAgaWYgKGxhc3RDaGlsZHJlbiAhPSBudWxsICYmIG5leHRDaGlsZHJl
biA9PSBudWxsKSB7CisgICAgICB0aGlzLnVwZGF0ZUNoaWxkcmVuKG51bGwsIHRyYW5zYWN0aW9u
LCBjb250ZXh0KTsKKyAgICB9IGVsc2UgaWYgKGxhc3RIYXNDb250ZW50T3JIdG1sICYmICFuZXh0
SGFzQ29udGVudE9ySHRtbCkgeworICAgICAgdGhpcy51cGRhdGVUZXh0Q29udGVudCgnJyk7Cisg
ICAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAgIFJlYWN0
SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vblNldENoaWxkcmVuKHRoaXMuX2RlYnVnSUQsIFtd
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICBpZiAobmV4dENvbnRlbnQgIT0gbnVsbCkgeworICAg
ICAgaWYgKGxhc3RDb250ZW50ICE9PSBuZXh0Q29udGVudCkgeworICAgICAgICB0aGlzLnVwZGF0
ZVRleHRDb250ZW50KCcnICsgbmV4dENvbnRlbnQpOworICAgICAgICBpZiAoImRldmVsb3BtZW50
IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAgICAgc2V0QW5kVmFsaWRhdGVDb250ZW50Q2hp
bGREZXYuY2FsbCh0aGlzLCBuZXh0Q29udGVudCk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9
IGVsc2UgaWYgKG5leHRIdG1sICE9IG51bGwpIHsKKyAgICAgIGlmIChsYXN0SHRtbCAhPT0gbmV4
dEh0bWwpIHsKKyAgICAgICAgdGhpcy51cGRhdGVNYXJrdXAoJycgKyBuZXh0SHRtbCk7CisgICAg
ICB9CisgICAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAg
IFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vblNldENoaWxkcmVuKHRoaXMuX2RlYnVn
SUQsIFtdKTsKKyAgICAgIH0KKyAgICB9IGVsc2UgaWYgKG5leHRDaGlsZHJlbiAhPSBudWxsKSB7
CisgICAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAgIHNl
dEFuZFZhbGlkYXRlQ29udGVudENoaWxkRGV2LmNhbGwodGhpcywgbnVsbCk7CisgICAgICB9CisK
KyAgICAgIHRoaXMudXBkYXRlQ2hpbGRyZW4obmV4dENoaWxkcmVuLCB0cmFuc2FjdGlvbiwgY29u
dGV4dCk7CisgICAgfQorICB9LAorCisgIGdldEhvc3ROb2RlOiBmdW5jdGlvbiAoKSB7CisgICAg
cmV0dXJuIGdldE5vZGUodGhpcyk7CisgIH0sCisKKyAgLyoqCisgICAqIERlc3Ryb3lzIGFsbCBl
dmVudCByZWdpc3RyYXRpb25zIGZvciB0aGlzIGluc3RhbmNlLiBEb2VzIG5vdCByZW1vdmUgZnJv
bQorICAgKiB0aGUgRE9NLiBUaGF0IG11c3QgYmUgZG9uZSBieSB0aGUgcGFyZW50LgorICAgKgor
ICAgKiBAaW50ZXJuYWwKKyAgICovCisgIHVubW91bnRDb21wb25lbnQ6IGZ1bmN0aW9uIChzYWZl
bHkpIHsKKyAgICBzd2l0Y2ggKHRoaXMuX3RhZykgeworICAgICAgY2FzZSAnYXVkaW8nOgorICAg
ICAgY2FzZSAnZm9ybSc6CisgICAgICBjYXNlICdpZnJhbWUnOgorICAgICAgY2FzZSAnaW1nJzoK
KyAgICAgIGNhc2UgJ2xpbmsnOgorICAgICAgY2FzZSAnb2JqZWN0JzoKKyAgICAgIGNhc2UgJ3Nv
dXJjZSc6CisgICAgICBjYXNlICd2aWRlbyc6CisgICAgICAgIHZhciBsaXN0ZW5lcnMgPSB0aGlz
Ll93cmFwcGVyU3RhdGUubGlzdGVuZXJzOworICAgICAgICBpZiAobGlzdGVuZXJzKSB7CisgICAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0ZW5lcnMubGVuZ3RoOyBpKyspIHsKKyAgICAg
ICAgICAgIGxpc3RlbmVyc1tpXS5yZW1vdmUoKTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgYnJlYWs7CisgICAgICBjYXNlICdodG1sJzoKKyAgICAgIGNhc2UgJ2hlYWQnOgorICAg
ICAgY2FzZSAnYm9keSc6CisgICAgICAgIC8qKgorICAgICAgICAgKiBDb21wb25lbnRzIGxpa2Ug
PGh0bWw+IDxoZWFkPiBhbmQgPGJvZHk+IGNhbid0IGJlIHJlbW92ZWQgb3IgYWRkZWQKKyAgICAg
ICAgICogZWFzaWx5IGluIGEgY3Jvc3MtYnJvd3NlciB3YXksIGhvd2V2ZXIgaXQncyB2YWx1YWJs
ZSB0byBiZSBhYmxlIHRvCisgICAgICAgICAqIHRha2UgYWR2YW50YWdlIG9mIFJlYWN0J3MgcmVj
b25jaWxpYXRpb24gZm9yIHN0eWxpbmcgYW5kIDx0aXRsZT4KKyAgICAgICAgICogbWFuYWdlbWVu
dC4gU28gd2UganVzdCBkb2N1bWVudCBpdCBhbmQgdGhyb3cgaW4gZGFuZ2Vyb3VzIGNhc2VzLgor
ICAgICAgICAgKi8KKyAgICAgICAgIWZhbHNlID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rp
b24nID8gaW52YXJpYW50KGZhbHNlLCAnPCVzPiB0cmllZCB0byB1bm1vdW50LiBCZWNhdXNlIG9m
IGNyb3NzLWJyb3dzZXIgcXVpcmtzIGl0IGlzIGltcG9zc2libGUgdG8gdW5tb3VudCBzb21lIHRv
cC1sZXZlbCBjb21wb25lbnRzIChlZyA8aHRtbD4sIDxoZWFkPiwgYW5kIDxib2R5PikgcmVsaWFi
bHkgYW5kIGVmZmljaWVudGx5LiBUbyBmaXggdGhpcywgaGF2ZSBhIHNpbmdsZSB0b3AtbGV2ZWwg
Y29tcG9uZW50IHRoYXQgbmV2ZXIgdW5tb3VudHMgcmVuZGVyIHRoZXNlIGVsZW1lbnRzLicsIHRo
aXMuX3RhZykgOiBfcHJvZEludmFyaWFudCgnNjYnLCB0aGlzLl90YWcpIDogdm9pZCAwOworICAg
ICAgICBicmVhazsKKyAgICB9CisKKyAgICB0aGlzLnVubW91bnRDaGlsZHJlbihzYWZlbHkpOwor
ICAgIFJlYWN0RE9NQ29tcG9uZW50VHJlZS51bmNhY2hlTm9kZSh0aGlzKTsKKyAgICBFdmVudFBs
dWdpbkh1Yi5kZWxldGVBbGxMaXN0ZW5lcnModGhpcyk7CisgICAgdGhpcy5fcm9vdE5vZGVJRCA9
IDA7CisgICAgdGhpcy5fZG9tSUQgPSAwOworICAgIHRoaXMuX3dyYXBwZXJTdGF0ZSA9IG51bGw7
CisKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICBzZXRB
bmRWYWxpZGF0ZUNvbnRlbnRDaGlsZERldi5jYWxsKHRoaXMsIG51bGwpOworICAgIH0KKyAgfSwK
KworICBnZXRQdWJsaWNJbnN0YW5jZTogZnVuY3Rpb24gKCkgeworICAgIHJldHVybiBnZXROb2Rl
KHRoaXMpOworICB9CisKK307CisKK19hc3NpZ24oUmVhY3RET01Db21wb25lbnQucHJvdG90eXBl
LCBSZWFjdERPTUNvbXBvbmVudC5NaXhpbiwgUmVhY3RNdWx0aUNoaWxkLk1peGluKTsKKworbW9k
dWxlLmV4cG9ydHMgPSBSZWFjdERPTUNvbXBvbmVudDsKK30seyIxMCI6MTAsIjEwMCI6MTAwLCIx
MSI6MTEsIjExMyI6MTEzLCIxMTYiOjExNiwiMTIiOjEyLCIxMjEiOjEyMSwiMTMyIjoxMzIsIjE0
MCI6MTQwLCIxNDYiOjE0NiwiMTQ3IjoxNDcsIjE0OCI6MTQ4LCIxNiI6MTYsIjE3IjoxNywiMiI6
MiwiMjUiOjI1LCIzMSI6MzEsIjMyIjozMiwiMzYiOjM2LCIzNyI6MzcsIjM4IjozOCwiNDMiOjQz
LCI1Ijo1LCI1OSI6NTksIjYyIjo2MiwiNzIiOjcyLCI5Ijo5fV0sMzE6W2Z1bmN0aW9uKF9kZXJl
cV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxNS1wcmVzZW50LCBGYWNl
Ym9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBj
b2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUK
KyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJl
ZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQg
aW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1
c2Ugc3RyaWN0JzsKKwordmFyIFJlYWN0RE9NQ29tcG9uZW50RmxhZ3MgPSB7CisgIGhhc0NhY2hl
ZENoaWxkTm9kZXM6IDEgPDwgMAorfTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTUNvbXBv
bmVudEZsYWdzOworfSx7fV0sMzI6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpewor
LyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy
IHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFu
dAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9w
cm9kSW52YXJpYW50ID0gX2RlcmVxXygxMTYpOworCit2YXIgRE9NUHJvcGVydHkgPSBfZGVyZXFf
KDExKTsKK3ZhciBSZWFjdERPTUNvbXBvbmVudEZsYWdzID0gX2RlcmVxXygzMSk7CisKK3ZhciBp
bnZhcmlhbnQgPSBfZGVyZXFfKDE0MCk7CisKK3ZhciBBVFRSX05BTUUgPSBET01Qcm9wZXJ0eS5J
RF9BVFRSSUJVVEVfTkFNRTsKK3ZhciBGbGFncyA9IFJlYWN0RE9NQ29tcG9uZW50RmxhZ3M7CisK
K3ZhciBpbnRlcm5hbEluc3RhbmNlS2V5ID0gJ19fcmVhY3RJbnRlcm5hbEluc3RhbmNlJCcgKyBN
YXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyKTsKKworLyoqCisgKiBEcmlsbCBkb3du
ICh0aHJvdWdoIGNvbXBvc2l0ZXMgYW5kIGVtcHR5IGNvbXBvbmVudHMpIHVudGlsIHdlIGdldCBh
IGhvc3Qgb3IKKyAqIGhvc3QgdGV4dCBjb21wb25lbnQuCisgKgorICogVGhpcyBpcyBwcmV0dHkg
cG9seW1vcnBoaWMgYnV0IHVuYXZvaWRhYmxlIHdpdGggdGhlIGN1cnJlbnQgc3RydWN0dXJlIHdl
IGhhdmUKKyAqIGZvciBgX3JlbmRlcmVkQ2hpbGRyZW5gLgorICovCitmdW5jdGlvbiBnZXRSZW5k
ZXJlZEhvc3RPclRleHRGcm9tQ29tcG9uZW50KGNvbXBvbmVudCkgeworICB2YXIgcmVuZGVyZWQ7
CisgIHdoaWxlIChyZW5kZXJlZCA9IGNvbXBvbmVudC5fcmVuZGVyZWRDb21wb25lbnQpIHsKKyAg
ICBjb21wb25lbnQgPSByZW5kZXJlZDsKKyAgfQorICByZXR1cm4gY29tcG9uZW50OworfQorCisv
KioKKyAqIFBvcHVsYXRlIGBfaG9zdE5vZGVgIG9uIHRoZSByZW5kZXJlZCBob3N0L3RleHQgY29t
cG9uZW50IHdpdGggdGhlIGdpdmVuCisgKiBET00gbm9kZS4gVGhlIHBhc3NlZCBgaW5zdGAgY2Fu
IGJlIGEgY29tcG9zaXRlLgorICovCitmdW5jdGlvbiBwcmVjYWNoZU5vZGUoaW5zdCwgbm9kZSkg
eworICB2YXIgaG9zdEluc3QgPSBnZXRSZW5kZXJlZEhvc3RPclRleHRGcm9tQ29tcG9uZW50KGlu
c3QpOworICBob3N0SW5zdC5faG9zdE5vZGUgPSBub2RlOworICBub2RlW2ludGVybmFsSW5zdGFu
Y2VLZXldID0gaG9zdEluc3Q7Cit9CisKK2Z1bmN0aW9uIHVuY2FjaGVOb2RlKGluc3QpIHsKKyAg
dmFyIG5vZGUgPSBpbnN0Ll9ob3N0Tm9kZTsKKyAgaWYgKG5vZGUpIHsKKyAgICBkZWxldGUgbm9k
ZVtpbnRlcm5hbEluc3RhbmNlS2V5XTsKKyAgICBpbnN0Ll9ob3N0Tm9kZSA9IG51bGw7CisgIH0K
K30KKworLyoqCisgKiBQb3B1bGF0ZSBgX2hvc3ROb2RlYCBvbiBlYWNoIGNoaWxkIG9mIGBpbnN0
YCwgYXNzdW1pbmcgdGhhdCB0aGUgY2hpbGRyZW4KKyAqIG1hdGNoIHVwIHdpdGggdGhlIERPTSAo
ZWxlbWVudCkgY2hpbGRyZW4gb2YgYG5vZGVgLgorICoKKyAqIFdlIGNhY2hlIGVudGlyZSBsZXZl
bHMgYXQgb25jZSB0byBhdm9pZCBhbiBuXjIgcHJvYmxlbSB3aGVyZSB3ZSBhY2Nlc3MgdGhlCisg
KiBjaGlsZHJlbiBvZiBhIG5vZGUgc2VxdWVudGlhbGx5IGFuZCBoYXZlIHRvIHdhbGsgZnJvbSB0
aGUgc3RhcnQgdG8gb3VyIHRhcmdldAorICogbm9kZSBldmVyeSB0aW1lLgorICoKKyAqIFNpbmNl
IHdlIHVwZGF0ZSBgX3JlbmRlcmVkQ2hpbGRyZW5gIGFuZCB0aGUgYWN0dWFsIERPTSBhdCAoc2xp
Z2h0bHkpCisgKiBkaWZmZXJlbnQgdGltZXMsIHdlIGNvdWxkIHJhY2UgaGVyZSBhbmQgc2VlIGEg
bmV3ZXIgYF9yZW5kZXJlZENoaWxkcmVuYCB0aGFuCisgKiB0aGUgRE9NIG5vZGVzIHdlIHNlZS4g
VG8gYXZvaWQgdGhpcywgUmVhY3RNdWx0aUNoaWxkIGNhbGxzCisgKiBgcHJlcGFyZVRvTWFuYWdl
Q2hpbGRyZW5gIGJlZm9yZSB3ZSBjaGFuZ2UgYF9yZW5kZXJlZENoaWxkcmVuYCwgYXQgd2hpY2gK
KyAqIHRpbWUgdGhlIGNvbnRhaW5lcidzIGNoaWxkIG5vZGVzIGFyZSBhbHdheXMgY2FjaGVkICh1
bnRpbCBpdCB1bm1vdW50cykuCisgKi8KK2Z1bmN0aW9uIHByZWNhY2hlQ2hpbGROb2RlcyhpbnN0
LCBub2RlKSB7CisgIGlmIChpbnN0Ll9mbGFncyAmIEZsYWdzLmhhc0NhY2hlZENoaWxkTm9kZXMp
IHsKKyAgICByZXR1cm47CisgIH0KKyAgdmFyIGNoaWxkcmVuID0gaW5zdC5fcmVuZGVyZWRDaGls
ZHJlbjsKKyAgdmFyIGNoaWxkTm9kZSA9IG5vZGUuZmlyc3RDaGlsZDsKKyAgb3V0ZXI6IGZvciAo
dmFyIG5hbWUgaW4gY2hpbGRyZW4pIHsKKyAgICBpZiAoIWNoaWxkcmVuLmhhc093blByb3BlcnR5
KG5hbWUpKSB7CisgICAgICBjb250aW51ZTsKKyAgICB9CisgICAgdmFyIGNoaWxkSW5zdCA9IGNo
aWxkcmVuW25hbWVdOworICAgIHZhciBjaGlsZElEID0gZ2V0UmVuZGVyZWRIb3N0T3JUZXh0RnJv
bUNvbXBvbmVudChjaGlsZEluc3QpLl9kb21JRDsKKyAgICBpZiAoY2hpbGRJRCA9PT0gMCkgewor
ICAgICAgLy8gV2UncmUgY3VycmVudGx5IHVubW91bnRpbmcgdGhpcyBjaGlsZCBpbiBSZWFjdE11
bHRpQ2hpbGQ7IHNraXAgaXQuCisgICAgICBjb250aW51ZTsKKyAgICB9CisgICAgLy8gV2UgYXNz
dW1lIHRoZSBjaGlsZCBub2RlcyBhcmUgaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhlIGNoaWxkIGlu
c3RhbmNlcy4KKyAgICBmb3IgKDsgY2hpbGROb2RlICE9PSBudWxsOyBjaGlsZE5vZGUgPSBjaGls
ZE5vZGUubmV4dFNpYmxpbmcpIHsKKyAgICAgIGlmIChjaGlsZE5vZGUubm9kZVR5cGUgPT09IDEg
JiYgY2hpbGROb2RlLmdldEF0dHJpYnV0ZShBVFRSX05BTUUpID09PSBTdHJpbmcoY2hpbGRJRCkg
fHwgY2hpbGROb2RlLm5vZGVUeXBlID09PSA4ICYmIGNoaWxkTm9kZS5ub2RlVmFsdWUgPT09ICcg
cmVhY3QtdGV4dDogJyArIGNoaWxkSUQgKyAnICcgfHwgY2hpbGROb2RlLm5vZGVUeXBlID09PSA4
ICYmIGNoaWxkTm9kZS5ub2RlVmFsdWUgPT09ICcgcmVhY3QtZW1wdHk6ICcgKyBjaGlsZElEICsg
JyAnKSB7CisgICAgICAgIHByZWNhY2hlTm9kZShjaGlsZEluc3QsIGNoaWxkTm9kZSk7CisgICAg
ICAgIGNvbnRpbnVlIG91dGVyOworICAgICAgfQorICAgIH0KKyAgICAvLyBXZSByZWFjaGVkIHRo
ZSBlbmQgb2YgdGhlIERPTSBjaGlsZHJlbiB3aXRob3V0IGZpbmRpbmcgYW4gSUQgbWF0Y2guCisg
ICAgIWZhbHNlID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZh
bHNlLCAnVW5hYmxlIHRvIGZpbmQgZWxlbWVudCB3aXRoIElEICVzLicsIGNoaWxkSUQpIDogX3By
b2RJbnZhcmlhbnQoJzMyJywgY2hpbGRJRCkgOiB2b2lkIDA7CisgIH0KKyAgaW5zdC5fZmxhZ3Mg
fD0gRmxhZ3MuaGFzQ2FjaGVkQ2hpbGROb2RlczsKK30KKworLyoqCisgKiBHaXZlbiBhIERPTSBu
b2RlLCByZXR1cm4gdGhlIGNsb3Nlc3QgUmVhY3RET01Db21wb25lbnQgb3IKKyAqIFJlYWN0RE9N
VGV4dENvbXBvbmVudCBpbnN0YW5jZSBhbmNlc3Rvci4KKyAqLworZnVuY3Rpb24gZ2V0Q2xvc2Vz
dEluc3RhbmNlRnJvbU5vZGUobm9kZSkgeworICBpZiAobm9kZVtpbnRlcm5hbEluc3RhbmNlS2V5
XSkgeworICAgIHJldHVybiBub2RlW2ludGVybmFsSW5zdGFuY2VLZXldOworICB9CisKKyAgLy8g
V2FsayB1cCB0aGUgdHJlZSB1bnRpbCB3ZSBmaW5kIGFuIGFuY2VzdG9yIHdob3NlIGluc3RhbmNl
IHdlIGhhdmUgY2FjaGVkLgorICB2YXIgcGFyZW50cyA9IFtdOworICB3aGlsZSAoIW5vZGVbaW50
ZXJuYWxJbnN0YW5jZUtleV0pIHsKKyAgICBwYXJlbnRzLnB1c2gobm9kZSk7CisgICAgaWYgKG5v
ZGUucGFyZW50Tm9kZSkgeworICAgICAgbm9kZSA9IG5vZGUucGFyZW50Tm9kZTsKKyAgICB9IGVs
c2UgeworICAgICAgLy8gVG9wIG9mIHRoZSB0cmVlLiBUaGlzIG5vZGUgbXVzdCBub3QgYmUgcGFy
dCBvZiBhIFJlYWN0IHRyZWUgKG9yIGlzCisgICAgICAvLyB1bm1vdW50ZWQsIHBvdGVudGlhbGx5
KS4KKyAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAgfQorCisgIHZhciBjbG9zZXN0OworICB2
YXIgaW5zdDsKKyAgZm9yICg7IG5vZGUgJiYgKGluc3QgPSBub2RlW2ludGVybmFsSW5zdGFuY2VL
ZXldKTsgbm9kZSA9IHBhcmVudHMucG9wKCkpIHsKKyAgICBjbG9zZXN0ID0gaW5zdDsKKyAgICBp
ZiAocGFyZW50cy5sZW5ndGgpIHsKKyAgICAgIHByZWNhY2hlQ2hpbGROb2RlcyhpbnN0LCBub2Rl
KTsKKyAgICB9CisgIH0KKworICByZXR1cm4gY2xvc2VzdDsKK30KKworLyoqCisgKiBHaXZlbiBh
IERPTSBub2RlLCByZXR1cm4gdGhlIFJlYWN0RE9NQ29tcG9uZW50IG9yIFJlYWN0RE9NVGV4dENv
bXBvbmVudAorICogaW5zdGFuY2UsIG9yIG51bGwgaWYgdGhlIG5vZGUgd2FzIG5vdCByZW5kZXJl
ZCBieSB0aGlzIFJlYWN0LgorICovCitmdW5jdGlvbiBnZXRJbnN0YW5jZUZyb21Ob2RlKG5vZGUp
IHsKKyAgdmFyIGluc3QgPSBnZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZShub2RlKTsKKyAgaWYg
KGluc3QgIT0gbnVsbCAmJiBpbnN0Ll9ob3N0Tm9kZSA9PT0gbm9kZSkgeworICAgIHJldHVybiBp
bnN0OworICB9IGVsc2UgeworICAgIHJldHVybiBudWxsOworICB9Cit9CisKKy8qKgorICogR2l2
ZW4gYSBSZWFjdERPTUNvbXBvbmVudCBvciBSZWFjdERPTVRleHRDb21wb25lbnQsIHJldHVybiB0
aGUgY29ycmVzcG9uZGluZworICogRE9NIG5vZGUuCisgKi8KK2Z1bmN0aW9uIGdldE5vZGVGcm9t
SW5zdGFuY2UoaW5zdCkgeworICAvLyBXaXRob3V0IHRoaXMgZmlyc3QgaW52YXJpYW50LCBwYXNz
aW5nIGEgbm9uLURPTS1jb21wb25lbnQgdHJpZ2dlcnMgdGhlIG5leHQKKyAgLy8gaW52YXJpYW50
IGZvciBhIG1pc3NpbmcgcGFyZW50LCB3aGljaCBpcyBzdXBlciBjb25mdXNpbmcuCisgICEoaW5z
dC5faG9zdE5vZGUgIT09IHVuZGVmaW5lZCkgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlv
bicgPyBpbnZhcmlhbnQoZmFsc2UsICdnZXROb2RlRnJvbUluc3RhbmNlOiBJbnZhbGlkIGFyZ3Vt
ZW50LicpIDogX3Byb2RJbnZhcmlhbnQoJzMzJykgOiB2b2lkIDA7CisKKyAgaWYgKGluc3QuX2hv
c3ROb2RlKSB7CisgICAgcmV0dXJuIGluc3QuX2hvc3ROb2RlOworICB9CisKKyAgLy8gV2FsayB1
cCB0aGUgdHJlZSB1bnRpbCB3ZSBmaW5kIGFuIGFuY2VzdG9yIHdob3NlIERPTSBub2RlIHdlIGhh
dmUgY2FjaGVkLgorICB2YXIgcGFyZW50cyA9IFtdOworICB3aGlsZSAoIWluc3QuX2hvc3ROb2Rl
KSB7CisgICAgcGFyZW50cy5wdXNoKGluc3QpOworICAgICFpbnN0Ll9ob3N0UGFyZW50ID8gImRl
dmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3QgRE9N
IHRyZWUgcm9vdCBzaG91bGQgYWx3YXlzIGhhdmUgYSBub2RlIHJlZmVyZW5jZS4nKSA6IF9wcm9k
SW52YXJpYW50KCczNCcpIDogdm9pZCAwOworICAgIGluc3QgPSBpbnN0Ll9ob3N0UGFyZW50Owor
ICB9CisKKyAgLy8gTm93IHBhcmVudHMgY29udGFpbnMgZWFjaCBhbmNlc3RvciB0aGF0IGRvZXMg
Km5vdCogaGF2ZSBhIGNhY2hlZCBuYXRpdmUKKyAgLy8gbm9kZSwgYW5kIGBpbnN0YCBpcyB0aGUg
ZGVlcGVzdCBhbmNlc3RvciB0aGF0IGRvZXMuCisgIGZvciAoOyBwYXJlbnRzLmxlbmd0aDsgaW5z
dCA9IHBhcmVudHMucG9wKCkpIHsKKyAgICBwcmVjYWNoZUNoaWxkTm9kZXMoaW5zdCwgaW5zdC5f
aG9zdE5vZGUpOworICB9CisKKyAgcmV0dXJuIGluc3QuX2hvc3ROb2RlOworfQorCit2YXIgUmVh
Y3RET01Db21wb25lbnRUcmVlID0geworICBnZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZTogZ2V0
Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGUsCisgIGdldEluc3RhbmNlRnJvbU5vZGU6IGdldEluc3Rh
bmNlRnJvbU5vZGUsCisgIGdldE5vZGVGcm9tSW5zdGFuY2U6IGdldE5vZGVGcm9tSW5zdGFuY2Us
CisgIHByZWNhY2hlQ2hpbGROb2RlczogcHJlY2FjaGVDaGlsZE5vZGVzLAorICBwcmVjYWNoZU5v
ZGU6IHByZWNhY2hlTm9kZSwKKyAgdW5jYWNoZU5vZGU6IHVuY2FjaGVOb2RlCit9OworCittb2R1
bGUuZXhwb3J0cyA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZTsKK30seyIxMSI6MTEsIjExNiI6MTE2
LCIxNDAiOjE0MCwiMzEiOjMxfV0sMzM6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMp
eworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBn
cmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmls
ZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFy
IHZhbGlkYXRlRE9NTmVzdGluZyA9IF9kZXJlcV8oMTIxKTsKKwordmFyIERPQ19OT0RFX1RZUEUg
PSA5OworCitmdW5jdGlvbiBSZWFjdERPTUNvbnRhaW5lckluZm8odG9wTGV2ZWxXcmFwcGVyLCBu
b2RlKSB7CisgIHZhciBpbmZvID0geworICAgIF90b3BMZXZlbFdyYXBwZXI6IHRvcExldmVsV3Jh
cHBlciwKKyAgICBfaWRDb3VudGVyOiAxLAorICAgIF9vd25lckRvY3VtZW50OiBub2RlID8gbm9k
ZS5ub2RlVHlwZSA9PT0gRE9DX05PREVfVFlQRSA/IG5vZGUgOiBub2RlLm93bmVyRG9jdW1lbnQg
OiBudWxsLAorICAgIF9ub2RlOiBub2RlLAorICAgIF90YWc6IG5vZGUgPyBub2RlLm5vZGVOYW1l
LnRvTG93ZXJDYXNlKCkgOiBudWxsLAorICAgIF9uYW1lc3BhY2VVUkk6IG5vZGUgPyBub2RlLm5h
bWVzcGFjZVVSSSA6IG51bGwKKyAgfTsKKyAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0
aW9uJykgeworICAgIGluZm8uX2FuY2VzdG9ySW5mbyA9IG5vZGUgPyB2YWxpZGF0ZURPTU5lc3Rp
bmcudXBkYXRlZEFuY2VzdG9ySW5mbyhudWxsLCBpbmZvLl90YWcsIG51bGwpIDogbnVsbDsKKyAg
fQorICByZXR1cm4gaW5mbzsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTUNvbnRhaW5l
ckluZm87Cit9LHsiMTIxIjoxMjF9XSwzNDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0
cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQg
dW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxl
IGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFs
IGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBm
aWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2
YXIgX2Fzc2lnbiA9IF9kZXJlcV8oMTQ4KTsKKwordmFyIERPTUxhenlUcmVlID0gX2RlcmVxXyg5
KTsKK3ZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSBfZGVyZXFfKDMyKTsKKwordmFyIFJlYWN0
RE9NRW1wdHlDb21wb25lbnQgPSBmdW5jdGlvbiAoaW5zdGFudGlhdGUpIHsKKyAgLy8gUmVhY3RD
b21wb3NpdGVDb21wb25lbnQgdXNlcyB0aGlzOgorICB0aGlzLl9jdXJyZW50RWxlbWVudCA9IG51
bGw7CisgIC8vIFJlYWN0RE9NQ29tcG9uZW50VHJlZSB1c2VzIHRoZXNlOgorICB0aGlzLl9ob3N0
Tm9kZSA9IG51bGw7CisgIHRoaXMuX2hvc3RQYXJlbnQgPSBudWxsOworICB0aGlzLl9ob3N0Q29u
dGFpbmVySW5mbyA9IG51bGw7CisgIHRoaXMuX2RvbUlEID0gMDsKK307CitfYXNzaWduKFJlYWN0
RE9NRW1wdHlDb21wb25lbnQucHJvdG90eXBlLCB7CisgIG1vdW50Q29tcG9uZW50OiBmdW5jdGlv
biAodHJhbnNhY3Rpb24sIGhvc3RQYXJlbnQsIGhvc3RDb250YWluZXJJbmZvLCBjb250ZXh0KSB7
CisgICAgdmFyIGRvbUlEID0gaG9zdENvbnRhaW5lckluZm8uX2lkQ291bnRlcisrOworICAgIHRo
aXMuX2RvbUlEID0gZG9tSUQ7CisgICAgdGhpcy5faG9zdFBhcmVudCA9IGhvc3RQYXJlbnQ7Cisg
ICAgdGhpcy5faG9zdENvbnRhaW5lckluZm8gPSBob3N0Q29udGFpbmVySW5mbzsKKworICAgIHZh
ciBub2RlVmFsdWUgPSAnIHJlYWN0LWVtcHR5OiAnICsgdGhpcy5fZG9tSUQgKyAnICc7CisgICAg
aWYgKHRyYW5zYWN0aW9uLnVzZUNyZWF0ZUVsZW1lbnQpIHsKKyAgICAgIHZhciBvd25lckRvY3Vt
ZW50ID0gaG9zdENvbnRhaW5lckluZm8uX293bmVyRG9jdW1lbnQ7CisgICAgICB2YXIgbm9kZSA9
IG93bmVyRG9jdW1lbnQuY3JlYXRlQ29tbWVudChub2RlVmFsdWUpOworICAgICAgUmVhY3RET01D
b21wb25lbnRUcmVlLnByZWNhY2hlTm9kZSh0aGlzLCBub2RlKTsKKyAgICAgIHJldHVybiBET01M
YXp5VHJlZShub2RlKTsKKyAgICB9IGVsc2UgeworICAgICAgaWYgKHRyYW5zYWN0aW9uLnJlbmRl
clRvU3RhdGljTWFya3VwKSB7CisgICAgICAgIC8vIE5vcm1hbGx5IHdlJ2QgaW5zZXJ0IGEgY29t
bWVudCBub2RlLCBidXQgc2luY2UgdGhpcyBpcyBhIHNpdHVhdGlvbgorICAgICAgICAvLyB3aGVy
ZSBSZWFjdCB3b24ndCB0YWtlIG92ZXIgKHN0YXRpYyBwYWdlcyksIHdlIGNhbiBzaW1wbHkgcmV0
dXJuCisgICAgICAgIC8vIG5vdGhpbmcuCisgICAgICAgIHJldHVybiAnJzsKKyAgICAgIH0KKyAg
ICAgIHJldHVybiAnPCEtLScgKyBub2RlVmFsdWUgKyAnLS0+JzsKKyAgICB9CisgIH0sCisgIHJl
Y2VpdmVDb21wb25lbnQ6IGZ1bmN0aW9uICgpIHt9LAorICBnZXRIb3N0Tm9kZTogZnVuY3Rpb24g
KCkgeworICAgIHJldHVybiBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5j
ZSh0aGlzKTsKKyAgfSwKKyAgdW5tb3VudENvbXBvbmVudDogZnVuY3Rpb24gKCkgeworICAgIFJl
YWN0RE9NQ29tcG9uZW50VHJlZS51bmNhY2hlTm9kZSh0aGlzKTsKKyAgfQorfSk7CisKK21vZHVs
ZS5leHBvcnRzID0gUmVhY3RET01FbXB0eUNvbXBvbmVudDsKK30seyIxNDgiOjE0OCwiMzIiOjMy
LCI5Ijo5fV0sMzU6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBD
b3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qt
c3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBk
aXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2Yg
cGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2Ft
ZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIERPTUNoaWxkcmVu
T3BlcmF0aW9ucyA9IF9kZXJlcV8oOCk7Cit2YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gX2Rl
cmVxXygzMik7CisKKy8qKgorICogT3BlcmF0aW9ucyB1c2VkIHRvIHByb2Nlc3MgdXBkYXRlcyB0
byBET00gbm9kZXMuCisgKi8KK3ZhciBSZWFjdERPTUlET3BlcmF0aW9ucyA9IHsKKworICAvKioK
KyAgICogVXBkYXRlcyBhIGNvbXBvbmVudCdzIGNoaWxkcmVuIGJ5IHByb2Nlc3NpbmcgYSBzZXJp
ZXMgb2YgdXBkYXRlcy4KKyAgICoKKyAgICogQHBhcmFtIHthcnJheTxvYmplY3Q+fSB1cGRhdGVz
IExpc3Qgb2YgdXBkYXRlIGNvbmZpZ3VyYXRpb25zLgorICAgKiBAaW50ZXJuYWwKKyAgICovCisg
IGRhbmdlcm91c2x5UHJvY2Vzc0NoaWxkcmVuVXBkYXRlczogZnVuY3Rpb24gKHBhcmVudEluc3Qs
IHVwZGF0ZXMpIHsKKyAgICB2YXIgbm9kZSA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2Rl
RnJvbUluc3RhbmNlKHBhcmVudEluc3QpOworICAgIERPTUNoaWxkcmVuT3BlcmF0aW9ucy5wcm9j
ZXNzVXBkYXRlcyhub2RlLCB1cGRhdGVzKTsKKyAgfQorfTsKKworbW9kdWxlLmV4cG9ydHMgPSBS
ZWFjdERPTUlET3BlcmF0aW9uczsKK30seyIzMiI6MzIsIjgiOjh9XSwzNjpbZnVuY3Rpb24oX2Rl
cmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZh
Y2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNl
IGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRo
ZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0
cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKwor
J3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJbnZhcmlhbnQgPSBfZGVyZXFfKDExNiksCisgICAg
X2Fzc2lnbiA9IF9kZXJlcV8oMTQ4KTsKKwordmFyIERPTVByb3BlcnR5T3BlcmF0aW9ucyA9IF9k
ZXJlcV8oMTIpOwordmFyIExpbmtlZFZhbHVlVXRpbHMgPSBfZGVyZXFfKDIzKTsKK3ZhciBSZWFj
dERPTUNvbXBvbmVudFRyZWUgPSBfZGVyZXFfKDMyKTsKK3ZhciBSZWFjdFVwZGF0ZXMgPSBfZGVy
ZXFfKDc1KTsKKwordmFyIGludmFyaWFudCA9IF9kZXJlcV8oMTQwKTsKK3ZhciB3YXJuaW5nID0g
X2RlcmVxXygxNDcpOworCit2YXIgZGlkV2FyblZhbHVlTGluayA9IGZhbHNlOwordmFyIGRpZFdh
cm5DaGVja2VkTGluayA9IGZhbHNlOwordmFyIGRpZFdhcm5WYWx1ZURlZmF1bHRWYWx1ZSA9IGZh
bHNlOwordmFyIGRpZFdhcm5DaGVja2VkRGVmYXVsdENoZWNrZWQgPSBmYWxzZTsKK3ZhciBkaWRX
YXJuQ29udHJvbGxlZFRvVW5jb250cm9sbGVkID0gZmFsc2U7Cit2YXIgZGlkV2FyblVuY29udHJv
bGxlZFRvQ29udHJvbGxlZCA9IGZhbHNlOworCitmdW5jdGlvbiBmb3JjZVVwZGF0ZUlmTW91bnRl
ZCgpIHsKKyAgaWYgKHRoaXMuX3Jvb3ROb2RlSUQpIHsKKyAgICAvLyBET00gY29tcG9uZW50IGlz
IHN0aWxsIG1vdW50ZWQ7IHVwZGF0ZQorICAgIFJlYWN0RE9NSW5wdXQudXBkYXRlV3JhcHBlcih0
aGlzKTsKKyAgfQorfQorCitmdW5jdGlvbiBpc0NvbnRyb2xsZWQocHJvcHMpIHsKKyAgdmFyIHVz
ZXNDaGVja2VkID0gcHJvcHMudHlwZSA9PT0gJ2NoZWNrYm94JyB8fCBwcm9wcy50eXBlID09PSAn
cmFkaW8nOworICByZXR1cm4gdXNlc0NoZWNrZWQgPyBwcm9wcy5jaGVja2VkICE9IG51bGwgOiBw
cm9wcy52YWx1ZSAhPSBudWxsOworfQorCisvKioKKyAqIEltcGxlbWVudHMgYW4gPGlucHV0PiBo
b3N0IGNvbXBvbmVudCB0aGF0IGFsbG93cyBzZXR0aW5nIHRoZXNlIG9wdGlvbmFsCisgKiBwcm9w
czogYGNoZWNrZWRgLCBgdmFsdWVgLCBgZGVmYXVsdENoZWNrZWRgLCBhbmQgYGRlZmF1bHRWYWx1
ZWAuCisgKgorICogSWYgYGNoZWNrZWRgIG9yIGB2YWx1ZWAgYXJlIG5vdCBzdXBwbGllZCAob3Ig
bnVsbC91bmRlZmluZWQpLCB1c2VyIGFjdGlvbnMKKyAqIHRoYXQgYWZmZWN0IHRoZSBjaGVja2Vk
IHN0YXRlIG9yIHZhbHVlIHdpbGwgdHJpZ2dlciB1cGRhdGVzIHRvIHRoZSBlbGVtZW50LgorICoK
KyAqIElmIHRoZXkgYXJlIHN1cHBsaWVkIChhbmQgbm90IG51bGwvdW5kZWZpbmVkKSwgdGhlIHJl
bmRlcmVkIGVsZW1lbnQgd2lsbCBub3QKKyAqIHRyaWdnZXIgdXBkYXRlcyB0byB0aGUgZWxlbWVu
dC4gSW5zdGVhZCwgdGhlIHByb3BzIG11c3QgY2hhbmdlIGluIG9yZGVyIGZvcgorICogdGhlIHJl
bmRlcmVkIGVsZW1lbnQgdG8gYmUgdXBkYXRlZC4KKyAqCisgKiBUaGUgcmVuZGVyZWQgZWxlbWVu
dCB3aWxsIGJlIGluaXRpYWxpemVkIGFzIHVuY2hlY2tlZCAob3IgYGRlZmF1bHRDaGVja2VkYCkK
KyAqIHdpdGggYW4gZW1wdHkgdmFsdWUgKG9yIGBkZWZhdWx0VmFsdWVgKS4KKyAqCisgKiBAc2Vl
IGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMTIvV0QtaHRtbDUtMjAxMjEwMjUvdGhlLWlucHV0LWVs
ZW1lbnQuaHRtbAorICovCit2YXIgUmVhY3RET01JbnB1dCA9IHsKKyAgZ2V0SG9zdFByb3BzOiBm
dW5jdGlvbiAoaW5zdCwgcHJvcHMpIHsKKyAgICB2YXIgdmFsdWUgPSBMaW5rZWRWYWx1ZVV0aWxz
LmdldFZhbHVlKHByb3BzKTsKKyAgICB2YXIgY2hlY2tlZCA9IExpbmtlZFZhbHVlVXRpbHMuZ2V0
Q2hlY2tlZChwcm9wcyk7CisKKyAgICB2YXIgaG9zdFByb3BzID0gX2Fzc2lnbih7CisgICAgICAv
LyBNYWtlIHN1cmUgd2Ugc2V0IC50eXBlIGJlZm9yZSBhbnkgb3RoZXIgcHJvcGVydGllcyAoc2V0
dGluZyAudmFsdWUKKyAgICAgIC8vIGJlZm9yZSAudHlwZSBtZWFucyAudmFsdWUgaXMgbG9zdCBp
biBJRTExIGFuZCBiZWxvdykKKyAgICAgIHR5cGU6IHVuZGVmaW5lZCwKKyAgICAgIC8vIE1ha2Ug
c3VyZSB3ZSBzZXQgLnN0ZXAgYmVmb3JlIC52YWx1ZSAoc2V0dGluZyAudmFsdWUgYmVmb3JlIC5z
dGVwCisgICAgICAvLyBtZWFucyAudmFsdWUgaXMgcm91bmRlZCBvbiBtb3VudCwgYmFzZWQgdXBv
biBzdGVwIHByZWNpc2lvbikKKyAgICAgIHN0ZXA6IHVuZGVmaW5lZCwKKyAgICAgIC8vIE1ha2Ug
c3VyZSB3ZSBzZXQgLm1pbiAmIC5tYXggYmVmb3JlIC52YWx1ZSAodG8gZW5zdXJlIHByb3BlciBv
cmRlcgorICAgICAgLy8gaW4gY29ybmVyIGNhc2VzIHN1Y2ggYXMgbWluIG9yIG1heCBkZXJpdmlu
ZyBmcm9tIHZhbHVlLCBlLmcuIElzc3VlICM3MTcwKQorICAgICAgbWluOiB1bmRlZmluZWQsCisg
ICAgICBtYXg6IHVuZGVmaW5lZAorICAgIH0sIHByb3BzLCB7CisgICAgICBkZWZhdWx0Q2hlY2tl
ZDogdW5kZWZpbmVkLAorICAgICAgZGVmYXVsdFZhbHVlOiB1bmRlZmluZWQsCisgICAgICB2YWx1
ZTogdmFsdWUgIT0gbnVsbCA/IHZhbHVlIDogaW5zdC5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1
ZSwKKyAgICAgIGNoZWNrZWQ6IGNoZWNrZWQgIT0gbnVsbCA/IGNoZWNrZWQgOiBpbnN0Ll93cmFw
cGVyU3RhdGUuaW5pdGlhbENoZWNrZWQsCisgICAgICBvbkNoYW5nZTogaW5zdC5fd3JhcHBlclN0
YXRlLm9uQ2hhbmdlCisgICAgfSk7CisKKyAgICByZXR1cm4gaG9zdFByb3BzOworICB9LAorCisg
IG1vdW50V3JhcHBlcjogZnVuY3Rpb24gKGluc3QsIHByb3BzKSB7CisgICAgaWYgKCJkZXZlbG9w
bWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgTGlua2VkVmFsdWVVdGlscy5jaGVja1By
b3BUeXBlcygnaW5wdXQnLCBwcm9wcywgaW5zdC5fY3VycmVudEVsZW1lbnQuX293bmVyKTsKKwor
ICAgICAgdmFyIG93bmVyID0gaW5zdC5fY3VycmVudEVsZW1lbnQuX293bmVyOworCisgICAgICBp
ZiAocHJvcHMudmFsdWVMaW5rICE9PSB1bmRlZmluZWQgJiYgIWRpZFdhcm5WYWx1ZUxpbmspIHsK
KyAgICAgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwg
J2B2YWx1ZUxpbmtgIHByb3Agb24gYGlucHV0YCBpcyBkZXByZWNhdGVkOyBzZXQgYHZhbHVlYCBh
bmQgYG9uQ2hhbmdlYCBpbnN0ZWFkLicpIDogdm9pZCAwOworICAgICAgICBkaWRXYXJuVmFsdWVM
aW5rID0gdHJ1ZTsKKyAgICAgIH0KKyAgICAgIGlmIChwcm9wcy5jaGVja2VkTGluayAhPT0gdW5k
ZWZpbmVkICYmICFkaWRXYXJuQ2hlY2tlZExpbmspIHsKKyAgICAgICAgImRldmVsb3BtZW50IiAh
PT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ2BjaGVja2VkTGlua2AgcHJvcCBvbiBg
aW5wdXRgIGlzIGRlcHJlY2F0ZWQ7IHNldCBgdmFsdWVgIGFuZCBgb25DaGFuZ2VgIGluc3RlYWQu
JykgOiB2b2lkIDA7CisgICAgICAgIGRpZFdhcm5DaGVja2VkTGluayA9IHRydWU7CisgICAgICB9
CisgICAgICBpZiAocHJvcHMuY2hlY2tlZCAhPT0gdW5kZWZpbmVkICYmIHByb3BzLmRlZmF1bHRD
aGVja2VkICE9PSB1bmRlZmluZWQgJiYgIWRpZFdhcm5DaGVja2VkRGVmYXVsdENoZWNrZWQpIHsK
KyAgICAgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwg
JyVzIGNvbnRhaW5zIGFuIGlucHV0IG9mIHR5cGUgJXMgd2l0aCBib3RoIGNoZWNrZWQgYW5kIGRl
ZmF1bHRDaGVja2VkIHByb3BzLiAnICsgJ0lucHV0IGVsZW1lbnRzIG11c3QgYmUgZWl0aGVyIGNv
bnRyb2xsZWQgb3IgdW5jb250cm9sbGVkICcgKyAnKHNwZWNpZnkgZWl0aGVyIHRoZSBjaGVja2Vk
IHByb3AsIG9yIHRoZSBkZWZhdWx0Q2hlY2tlZCBwcm9wLCBidXQgbm90ICcgKyAnYm90aCkuIERl
Y2lkZSBiZXR3ZWVuIHVzaW5nIGEgY29udHJvbGxlZCBvciB1bmNvbnRyb2xsZWQgaW5wdXQgJyAr
ICdlbGVtZW50IGFuZCByZW1vdmUgb25lIG9mIHRoZXNlIHByb3BzLiBNb3JlIGluZm86ICcgKyAn
aHR0cHM6Ly9mYi5tZS9yZWFjdC1jb250cm9sbGVkLWNvbXBvbmVudHMnLCBvd25lciAmJiBvd25l
ci5nZXROYW1lKCkgfHwgJ0EgY29tcG9uZW50JywgcHJvcHMudHlwZSkgOiB2b2lkIDA7CisgICAg
ICAgIGRpZFdhcm5DaGVja2VkRGVmYXVsdENoZWNrZWQgPSB0cnVlOworICAgICAgfQorICAgICAg
aWYgKHByb3BzLnZhbHVlICE9PSB1bmRlZmluZWQgJiYgcHJvcHMuZGVmYXVsdFZhbHVlICE9PSB1
bmRlZmluZWQgJiYgIWRpZFdhcm5WYWx1ZURlZmF1bHRWYWx1ZSkgeworICAgICAgICAiZGV2ZWxv
cG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnJXMgY29udGFpbnMgYW4g
aW5wdXQgb2YgdHlwZSAlcyB3aXRoIGJvdGggdmFsdWUgYW5kIGRlZmF1bHRWYWx1ZSBwcm9wcy4g
JyArICdJbnB1dCBlbGVtZW50cyBtdXN0IGJlIGVpdGhlciBjb250cm9sbGVkIG9yIHVuY29udHJv
bGxlZCAnICsgJyhzcGVjaWZ5IGVpdGhlciB0aGUgdmFsdWUgcHJvcCwgb3IgdGhlIGRlZmF1bHRW
YWx1ZSBwcm9wLCBidXQgbm90ICcgKyAnYm90aCkuIERlY2lkZSBiZXR3ZWVuIHVzaW5nIGEgY29u
dHJvbGxlZCBvciB1bmNvbnRyb2xsZWQgaW5wdXQgJyArICdlbGVtZW50IGFuZCByZW1vdmUgb25l
IG9mIHRoZXNlIHByb3BzLiBNb3JlIGluZm86ICcgKyAnaHR0cHM6Ly9mYi5tZS9yZWFjdC1jb250
cm9sbGVkLWNvbXBvbmVudHMnLCBvd25lciAmJiBvd25lci5nZXROYW1lKCkgfHwgJ0EgY29tcG9u
ZW50JywgcHJvcHMudHlwZSkgOiB2b2lkIDA7CisgICAgICAgIGRpZFdhcm5WYWx1ZURlZmF1bHRW
YWx1ZSA9IHRydWU7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGRlZmF1bHRWYWx1ZSA9IHBy
b3BzLmRlZmF1bHRWYWx1ZTsKKyAgICBpbnN0Ll93cmFwcGVyU3RhdGUgPSB7CisgICAgICBpbml0
aWFsQ2hlY2tlZDogcHJvcHMuY2hlY2tlZCAhPSBudWxsID8gcHJvcHMuY2hlY2tlZCA6IHByb3Bz
LmRlZmF1bHRDaGVja2VkLAorICAgICAgaW5pdGlhbFZhbHVlOiBwcm9wcy52YWx1ZSAhPSBudWxs
ID8gcHJvcHMudmFsdWUgOiBkZWZhdWx0VmFsdWUsCisgICAgICBsaXN0ZW5lcnM6IG51bGwsCisg
ICAgICBvbkNoYW5nZTogX2hhbmRsZUNoYW5nZS5iaW5kKGluc3QpCisgICAgfTsKKworICAgIGlm
ICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgIGluc3QuX3dyYXBwZXJT
dGF0ZS5jb250cm9sbGVkID0gaXNDb250cm9sbGVkKHByb3BzKTsKKyAgICB9CisgIH0sCisKKyAg
dXBkYXRlV3JhcHBlcjogZnVuY3Rpb24gKGluc3QpIHsKKyAgICB2YXIgcHJvcHMgPSBpbnN0Ll9j
dXJyZW50RWxlbWVudC5wcm9wczsKKworICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVj
dGlvbicpIHsKKyAgICAgIHZhciBjb250cm9sbGVkID0gaXNDb250cm9sbGVkKHByb3BzKTsKKyAg
ICAgIHZhciBvd25lciA9IGluc3QuX2N1cnJlbnRFbGVtZW50Ll9vd25lcjsKKworICAgICAgaWYg
KCFpbnN0Ll93cmFwcGVyU3RhdGUuY29udHJvbGxlZCAmJiBjb250cm9sbGVkICYmICFkaWRXYXJu
VW5jb250cm9sbGVkVG9Db250cm9sbGVkKSB7CisgICAgICAgICJkZXZlbG9wbWVudCIgIT09ICdw
cm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICclcyBpcyBjaGFuZ2luZyBhbiB1bmNvbnRyb2xs
ZWQgaW5wdXQgb2YgdHlwZSAlcyB0byBiZSBjb250cm9sbGVkLiAnICsgJ0lucHV0IGVsZW1lbnRz
IHNob3VsZCBub3Qgc3dpdGNoIGZyb20gdW5jb250cm9sbGVkIHRvIGNvbnRyb2xsZWQgKG9yIHZp
Y2UgdmVyc2EpLiAnICsgJ0RlY2lkZSBiZXR3ZWVuIHVzaW5nIGEgY29udHJvbGxlZCBvciB1bmNv
bnRyb2xsZWQgaW5wdXQgJyArICdlbGVtZW50IGZvciB0aGUgbGlmZXRpbWUgb2YgdGhlIGNvbXBv
bmVudC4gTW9yZSBpbmZvOiBodHRwczovL2ZiLm1lL3JlYWN0LWNvbnRyb2xsZWQtY29tcG9uZW50
cycsIG93bmVyICYmIG93bmVyLmdldE5hbWUoKSB8fCAnQSBjb21wb25lbnQnLCBwcm9wcy50eXBl
KSA6IHZvaWQgMDsKKyAgICAgICAgZGlkV2FyblVuY29udHJvbGxlZFRvQ29udHJvbGxlZCA9IHRy
dWU7CisgICAgICB9CisgICAgICBpZiAoaW5zdC5fd3JhcHBlclN0YXRlLmNvbnRyb2xsZWQgJiYg
IWNvbnRyb2xsZWQgJiYgIWRpZFdhcm5Db250cm9sbGVkVG9VbmNvbnRyb2xsZWQpIHsKKyAgICAg
ICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJyVzIGlz
IGNoYW5naW5nIGEgY29udHJvbGxlZCBpbnB1dCBvZiB0eXBlICVzIHRvIGJlIHVuY29udHJvbGxl
ZC4gJyArICdJbnB1dCBlbGVtZW50cyBzaG91bGQgbm90IHN3aXRjaCBmcm9tIGNvbnRyb2xsZWQg
dG8gdW5jb250cm9sbGVkIChvciB2aWNlIHZlcnNhKS4gJyArICdEZWNpZGUgYmV0d2VlbiB1c2lu
ZyBhIGNvbnRyb2xsZWQgb3IgdW5jb250cm9sbGVkIGlucHV0ICcgKyAnZWxlbWVudCBmb3IgdGhl
IGxpZmV0aW1lIG9mIHRoZSBjb21wb25lbnQuIE1vcmUgaW5mbzogaHR0cHM6Ly9mYi5tZS9yZWFj
dC1jb250cm9sbGVkLWNvbXBvbmVudHMnLCBvd25lciAmJiBvd25lci5nZXROYW1lKCkgfHwgJ0Eg
Y29tcG9uZW50JywgcHJvcHMudHlwZSkgOiB2b2lkIDA7CisgICAgICAgIGRpZFdhcm5Db250cm9s
bGVkVG9VbmNvbnRyb2xsZWQgPSB0cnVlOworICAgICAgfQorICAgIH0KKworICAgIC8vIFRPRE86
IFNob3VsZG4ndCB0aGlzIGJlIGdldENoZWNrZWQocHJvcHMpPworICAgIHZhciBjaGVja2VkID0g
cHJvcHMuY2hlY2tlZDsKKyAgICBpZiAoY2hlY2tlZCAhPSBudWxsKSB7CisgICAgICBET01Qcm9w
ZXJ0eU9wZXJhdGlvbnMuc2V0VmFsdWVGb3JQcm9wZXJ0eShSZWFjdERPTUNvbXBvbmVudFRyZWUu
Z2V0Tm9kZUZyb21JbnN0YW5jZShpbnN0KSwgJ2NoZWNrZWQnLCBjaGVja2VkIHx8IGZhbHNlKTsK
KyAgICB9CisKKyAgICB2YXIgbm9kZSA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJv
bUluc3RhbmNlKGluc3QpOworICAgIHZhciB2YWx1ZSA9IExpbmtlZFZhbHVlVXRpbHMuZ2V0VmFs
dWUocHJvcHMpOworICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7CisKKyAgICAgIC8vIENhc3QgYHZh
bHVlYCB0byBhIHN0cmluZyB0byBlbnN1cmUgdGhlIHZhbHVlIGlzIHNldCBjb3JyZWN0bHkuIFdo
aWxlCisgICAgICAvLyBicm93c2VycyB0eXBpY2FsbHkgZG8gdGhpcyBhcyBuZWNlc3NhcnksIGpz
ZG9tIGRvZXNuJ3QuCisgICAgICB2YXIgbmV3VmFsdWUgPSAnJyArIHZhbHVlOworCisgICAgICAv
LyBUbyBhdm9pZCBzaWRlIGVmZmVjdHMgKHN1Y2ggYXMgbG9zaW5nIHRleHQgc2VsZWN0aW9uKSwg
b25seSBzZXQgdmFsdWUgaWYgY2hhbmdlZAorICAgICAgaWYgKG5ld1ZhbHVlICE9PSBub2RlLnZh
bHVlKSB7CisgICAgICAgIG5vZGUudmFsdWUgPSBuZXdWYWx1ZTsKKyAgICAgIH0KKyAgICB9IGVs
c2UgeworICAgICAgaWYgKHByb3BzLnZhbHVlID09IG51bGwgJiYgcHJvcHMuZGVmYXVsdFZhbHVl
ICE9IG51bGwpIHsKKyAgICAgICAgbm9kZS5kZWZhdWx0VmFsdWUgPSAnJyArIHByb3BzLmRlZmF1
bHRWYWx1ZTsKKyAgICAgIH0KKyAgICAgIGlmIChwcm9wcy5jaGVja2VkID09IG51bGwgJiYgcHJv
cHMuZGVmYXVsdENoZWNrZWQgIT0gbnVsbCkgeworICAgICAgICBub2RlLmRlZmF1bHRDaGVja2Vk
ID0gISFwcm9wcy5kZWZhdWx0Q2hlY2tlZDsKKyAgICAgIH0KKyAgICB9CisgIH0sCisKKyAgcG9z
dE1vdW50V3JhcHBlcjogZnVuY3Rpb24gKGluc3QpIHsKKyAgICB2YXIgcHJvcHMgPSBpbnN0Ll9j
dXJyZW50RWxlbWVudC5wcm9wczsKKworICAgIC8vIFRoaXMgaXMgaW4gcG9zdE1vdW50IGJlY2F1
c2Ugd2UgbmVlZCBhY2Nlc3MgdG8gdGhlIERPTSBub2RlLCB3aGljaCBpcyBub3QKKyAgICAvLyBh
dmFpbGFibGUgdW50aWwgYWZ0ZXIgdGhlIGNvbXBvbmVudCBoYXMgbW91bnRlZC4KKyAgICB2YXIg
bm9kZSA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKGluc3QpOwor
CisgICAgLy8gRGV0YWNoIHZhbHVlIGZyb20gZGVmYXVsdFZhbHVlLiBXZSB3b24ndCBkbyBhbnl0
aGluZyBpZiB3ZSdyZSB3b3JraW5nIG9uCisgICAgLy8gc3VibWl0IG9yIHJlc2V0IGlucHV0cyBh
cyB0aG9zZSB2YWx1ZXMgJiBkZWZhdWx0VmFsdWVzIGFyZSBsaW5rZWQuIFRoZXkKKyAgICAvLyBh
cmUgbm90IHJlc2V0YWJsZSBub2RlcyBzbyB0aGlzIG9wZXJhdGlvbiBkb2Vzbid0IG1hdHRlciBh
bmQgYWN0dWFsbHkKKyAgICAvLyByZW1vdmVzIGJyb3dzZXItZGVmYXVsdCB2YWx1ZXMgKGVnICJT
dWJtaXQgUXVlcnkiKSB3aGVuIG5vIHZhbHVlIGlzCisgICAgLy8gcHJvdmlkZWQuCisKKyAgICBz
d2l0Y2ggKHByb3BzLnR5cGUpIHsKKyAgICAgIGNhc2UgJ3N1Ym1pdCc6CisgICAgICBjYXNlICdy
ZXNldCc6CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAnY29sb3InOgorICAgICAgY2FzZSAn
ZGF0ZSc6CisgICAgICBjYXNlICdkYXRldGltZSc6CisgICAgICBjYXNlICdkYXRldGltZS1sb2Nh
bCc6CisgICAgICBjYXNlICdtb250aCc6CisgICAgICBjYXNlICd0aW1lJzoKKyAgICAgIGNhc2Ug
J3dlZWsnOgorICAgICAgICAvLyBUaGlzIGZpeGVzIHRoZSBuby1zaG93IGlzc3VlIG9uIGlPUyBT
YWZhcmkgYW5kIEFuZHJvaWQgQ2hyb21lOgorICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20v
ZmFjZWJvb2svcmVhY3QvaXNzdWVzLzcyMzMKKyAgICAgICAgbm9kZS52YWx1ZSA9ICcnOworICAg
ICAgICBub2RlLnZhbHVlID0gbm9kZS5kZWZhdWx0VmFsdWU7CisgICAgICAgIGJyZWFrOworICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgbm9kZS52YWx1ZSA9IG5vZGUudmFsdWU7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKworICAgIC8vIE5vcm1hbGx5LCB3ZSdkIGp1c3QgZG8gYG5vZGUuY2hlY2tl
ZCA9IG5vZGUuY2hlY2tlZGAgdXBvbiBpbml0aWFsIG1vdW50LCBsZXNzIHRoaXMgYnVnCisgICAg
Ly8gdGhpcyBpcyBuZWVkZWQgdG8gd29yayBhcm91bmQgYSBjaHJvbWUgYnVnIHdoZXJlIHNldHRp
bmcgZGVmYXVsdENoZWNrZWQKKyAgICAvLyB3aWxsIHNvbWV0aW1lcyBpbmZsdWVuY2UgdGhlIHZh
bHVlIG9mIGNoZWNrZWQgKGV2ZW4gYWZ0ZXIgZGV0YWNobWVudCkuCisgICAgLy8gUmVmZXJlbmNl
OiBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD02
MDg0MTYKKyAgICAvLyBXZSBuZWVkIHRvIHRlbXBvcmFyaWx5IHVuc2V0IG5hbWUgdG8gYXZvaWQg
ZGlzcnVwdGluZyByYWRpbyBidXR0b24gZ3JvdXBzLgorICAgIHZhciBuYW1lID0gbm9kZS5uYW1l
OworICAgIGlmIChuYW1lICE9PSAnJykgeworICAgICAgbm9kZS5uYW1lID0gJyc7CisgICAgfQor
ICAgIG5vZGUuZGVmYXVsdENoZWNrZWQgPSAhbm9kZS5kZWZhdWx0Q2hlY2tlZDsKKyAgICBub2Rl
LmRlZmF1bHRDaGVja2VkID0gIW5vZGUuZGVmYXVsdENoZWNrZWQ7CisgICAgaWYgKG5hbWUgIT09
ICcnKSB7CisgICAgICBub2RlLm5hbWUgPSBuYW1lOworICAgIH0KKyAgfQorfTsKKworZnVuY3Rp
b24gX2hhbmRsZUNoYW5nZShldmVudCkgeworICB2YXIgcHJvcHMgPSB0aGlzLl9jdXJyZW50RWxl
bWVudC5wcm9wczsKKworICB2YXIgcmV0dXJuVmFsdWUgPSBMaW5rZWRWYWx1ZVV0aWxzLmV4ZWN1
dGVPbkNoYW5nZShwcm9wcywgZXZlbnQpOworCisgIC8vIEhlcmUgd2UgdXNlIGFzYXAgdG8gd2Fp
dCB1bnRpbCBhbGwgdXBkYXRlcyBoYXZlIHByb3BhZ2F0ZWQsIHdoaWNoCisgIC8vIGlzIGltcG9y
dGFudCB3aGVuIHVzaW5nIGNvbnRyb2xsZWQgY29tcG9uZW50cyB3aXRoaW4gbGF5ZXJzOgorICAv
LyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzE2OTgKKyAgUmVhY3RV
cGRhdGVzLmFzYXAoZm9yY2VVcGRhdGVJZk1vdW50ZWQsIHRoaXMpOworCisgIHZhciBuYW1lID0g
cHJvcHMubmFtZTsKKyAgaWYgKHByb3BzLnR5cGUgPT09ICdyYWRpbycgJiYgbmFtZSAhPSBudWxs
KSB7CisgICAgdmFyIHJvb3ROb2RlID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9t
SW5zdGFuY2UodGhpcyk7CisgICAgdmFyIHF1ZXJ5Um9vdCA9IHJvb3ROb2RlOworCisgICAgd2hp
bGUgKHF1ZXJ5Um9vdC5wYXJlbnROb2RlKSB7CisgICAgICBxdWVyeVJvb3QgPSBxdWVyeVJvb3Qu
cGFyZW50Tm9kZTsKKyAgICB9CisKKyAgICAvLyBJZiBgcm9vdE5vZGUuZm9ybWAgd2FzIG5vbi1u
dWxsLCB0aGVuIHdlIGNvdWxkIHRyeSBgZm9ybS5lbGVtZW50c2AsCisgICAgLy8gYnV0IHRoYXQg
c29tZXRpbWVzIGJlaGF2ZXMgc3RyYW5nZWx5IGluIElFOC4gV2UgY291bGQgYWxzbyB0cnkgdXNp
bmcKKyAgICAvLyBgZm9ybS5nZXRFbGVtZW50c0J5TmFtZWAsIGJ1dCB0aGF0IHdpbGwgb25seSBy
ZXR1cm4gZGlyZWN0IGNoaWxkcmVuCisgICAgLy8gYW5kIHdvbid0IGluY2x1ZGUgaW5wdXRzIHRo
YXQgdXNlIHRoZSBIVE1MNSBgZm9ybT1gIGF0dHJpYnV0ZS4gU2luY2UKKyAgICAvLyB0aGUgaW5w
dXQgbWlnaHQgbm90IGV2ZW4gYmUgaW4gYSBmb3JtLCBsZXQncyBqdXN0IHVzZSB0aGUgZ2xvYmFs
CisgICAgLy8gYHF1ZXJ5U2VsZWN0b3JBbGxgIHRvIGVuc3VyZSB3ZSBkb24ndCBtaXNzIGFueXRo
aW5nLgorICAgIHZhciBncm91cCA9IHF1ZXJ5Um9vdC5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dFtu
YW1lPScgKyBKU09OLnN0cmluZ2lmeSgnJyArIG5hbWUpICsgJ11bdHlwZT0icmFkaW8iXScpOwor
CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBncm91cC5sZW5ndGg7IGkrKykgeworICAgICAgdmFy
IG90aGVyTm9kZSA9IGdyb3VwW2ldOworICAgICAgaWYgKG90aGVyTm9kZSA9PT0gcm9vdE5vZGUg
fHwgb3RoZXJOb2RlLmZvcm0gIT09IHJvb3ROb2RlLmZvcm0pIHsKKyAgICAgICAgY29udGludWU7
CisgICAgICB9CisgICAgICAvLyBUaGlzIHdpbGwgdGhyb3cgaWYgcmFkaW8gYnV0dG9ucyByZW5k
ZXJlZCBieSBkaWZmZXJlbnQgY29waWVzIG9mIFJlYWN0CisgICAgICAvLyBhbmQgdGhlIHNhbWUg
bmFtZSBhcmUgcmVuZGVyZWQgaW50byB0aGUgc2FtZSBmb3JtIChzYW1lIGFzICMxOTM5KS4KKyAg
ICAgIC8vIFRoYXQncyBwcm9iYWJseSBva2F5OyB3ZSBkb24ndCBzdXBwb3J0IGl0IGp1c3QgYXMg
d2UgZG9uJ3Qgc3VwcG9ydAorICAgICAgLy8gbWl4aW5nIFJlYWN0IHJhZGlvIGJ1dHRvbnMgd2l0
aCBub24tUmVhY3Qgb25lcy4KKyAgICAgIHZhciBvdGhlckluc3RhbmNlID0gUmVhY3RET01Db21w
b25lbnRUcmVlLmdldEluc3RhbmNlRnJvbU5vZGUob3RoZXJOb2RlKTsKKyAgICAgICFvdGhlcklu
c3RhbmNlID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNl
LCAnUmVhY3RET01JbnB1dDogTWl4aW5nIFJlYWN0IGFuZCBub24tUmVhY3QgcmFkaW8gaW5wdXRz
IHdpdGggdGhlIHNhbWUgYG5hbWVgIGlzIG5vdCBzdXBwb3J0ZWQuJykgOiBfcHJvZEludmFyaWFu
dCgnOTAnKSA6IHZvaWQgMDsKKyAgICAgIC8vIElmIHRoaXMgaXMgYSBjb250cm9sbGVkIHJhZGlv
IGJ1dHRvbiBncm91cCwgZm9yY2luZyB0aGUgaW5wdXQgdGhhdAorICAgICAgLy8gd2FzIHByZXZp
b3VzbHkgY2hlY2tlZCB0byB1cGRhdGUgd2lsbCBjYXVzZSBpdCB0byBiZSBjb21lIHJlLWNoZWNr
ZWQKKyAgICAgIC8vIGFzIGFwcHJvcHJpYXRlLgorICAgICAgUmVhY3RVcGRhdGVzLmFzYXAoZm9y
Y2VVcGRhdGVJZk1vdW50ZWQsIG90aGVySW5zdGFuY2UpOworICAgIH0KKyAgfQorCisgIHJldHVy
biByZXR1cm5WYWx1ZTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTUlucHV0OworfSx7
IjExNiI6MTE2LCIxMiI6MTIsIjE0MCI6MTQwLCIxNDciOjE0NywiMTQ4IjoxNDgsIjIzIjoyMywi
MzIiOjMyLCI3NSI6NzV9XSwzNzpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7Cisv
KioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX2Fz
c2lnbiA9IF9kZXJlcV8oMTQ4KTsKKwordmFyIFJlYWN0ID0gX2RlcmVxXygxMjQpOwordmFyIFJl
YWN0RE9NQ29tcG9uZW50VHJlZSA9IF9kZXJlcV8oMzIpOwordmFyIFJlYWN0RE9NU2VsZWN0ID0g
X2RlcmVxXygzOCk7CisKK3ZhciB3YXJuaW5nID0gX2RlcmVxXygxNDcpOwordmFyIGRpZFdhcm5J
bnZhbGlkT3B0aW9uQ2hpbGRyZW4gPSBmYWxzZTsKKworZnVuY3Rpb24gZmxhdHRlbkNoaWxkcmVu
KGNoaWxkcmVuKSB7CisgIHZhciBjb250ZW50ID0gJyc7CisKKyAgLy8gRmxhdHRlbiBjaGlsZHJl
biBhbmQgd2FybiBpZiB0aGV5IGFyZW4ndCBzdHJpbmdzIG9yIG51bWJlcnM7CisgIC8vIGludmFs
aWQgdHlwZXMgYXJlIGlnbm9yZWQuCisgIFJlYWN0LkNoaWxkcmVuLmZvckVhY2goY2hpbGRyZW4s
IGZ1bmN0aW9uIChjaGlsZCkgeworICAgIGlmIChjaGlsZCA9PSBudWxsKSB7CisgICAgICByZXR1
cm47CisgICAgfQorICAgIGlmICh0eXBlb2YgY2hpbGQgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBj
aGlsZCA9PT0gJ251bWJlcicpIHsKKyAgICAgIGNvbnRlbnQgKz0gY2hpbGQ7CisgICAgfSBlbHNl
IGlmICghZGlkV2FybkludmFsaWRPcHRpb25DaGlsZHJlbikgeworICAgICAgZGlkV2FybkludmFs
aWRPcHRpb25DaGlsZHJlbiA9IHRydWU7CisgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVj
dGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnT25seSBzdHJpbmdzIGFuZCBudW1iZXJzIGFyZSBzdXBw
b3J0ZWQgYXMgPG9wdGlvbj4gY2hpbGRyZW4uJykgOiB2b2lkIDA7CisgICAgfQorICB9KTsKKwor
ICByZXR1cm4gY29udGVudDsKK30KKworLyoqCisgKiBJbXBsZW1lbnRzIGFuIDxvcHRpb24+IGhv
c3QgY29tcG9uZW50IHRoYXQgd2FybnMgd2hlbiBgc2VsZWN0ZWRgIGlzIHNldC4KKyAqLwordmFy
IFJlYWN0RE9NT3B0aW9uID0geworICBtb3VudFdyYXBwZXI6IGZ1bmN0aW9uIChpbnN0LCBwcm9w
cywgaG9zdFBhcmVudCkgeworICAgIC8vIFRPRE8gKHl1bmdzdGVycyk6IFJlbW92ZSBzdXBwb3J0
IGZvciBgc2VsZWN0ZWRgIGluIDxvcHRpb24+LgorICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAn
cHJvZHVjdGlvbicpIHsKKyAgICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdh
cm5pbmcocHJvcHMuc2VsZWN0ZWQgPT0gbnVsbCwgJ1VzZSB0aGUgYGRlZmF1bHRWYWx1ZWAgb3Ig
YHZhbHVlYCBwcm9wcyBvbiA8c2VsZWN0PiBpbnN0ZWFkIG9mICcgKyAnc2V0dGluZyBgc2VsZWN0
ZWRgIG9uIDxvcHRpb24+LicpIDogdm9pZCAwOworICAgIH0KKworICAgIC8vIExvb2sgdXAgd2hl
dGhlciB0aGlzIG9wdGlvbiBpcyAnc2VsZWN0ZWQnCisgICAgdmFyIHNlbGVjdFZhbHVlID0gbnVs
bDsKKyAgICBpZiAoaG9zdFBhcmVudCAhPSBudWxsKSB7CisgICAgICB2YXIgc2VsZWN0UGFyZW50
ID0gaG9zdFBhcmVudDsKKworICAgICAgaWYgKHNlbGVjdFBhcmVudC5fdGFnID09PSAnb3B0Z3Jv
dXAnKSB7CisgICAgICAgIHNlbGVjdFBhcmVudCA9IHNlbGVjdFBhcmVudC5faG9zdFBhcmVudDsK
KyAgICAgIH0KKworICAgICAgaWYgKHNlbGVjdFBhcmVudCAhPSBudWxsICYmIHNlbGVjdFBhcmVu
dC5fdGFnID09PSAnc2VsZWN0JykgeworICAgICAgICBzZWxlY3RWYWx1ZSA9IFJlYWN0RE9NU2Vs
ZWN0LmdldFNlbGVjdFZhbHVlQ29udGV4dChzZWxlY3RQYXJlbnQpOworICAgICAgfQorICAgIH0K
KworICAgIC8vIElmIHRoZSB2YWx1ZSBpcyBudWxsIChlLmcuLCBubyBzcGVjaWZpZWQgdmFsdWUg
b3IgYWZ0ZXIgaW5pdGlhbCBtb3VudCkKKyAgICAvLyBvciBtaXNzaW5nIChlLmcuLCBmb3IgPGRh
dGFsaXN0PiksIHdlIGRvbid0IGNoYW5nZSBwcm9wcy5zZWxlY3RlZAorICAgIHZhciBzZWxlY3Rl
ZCA9IG51bGw7CisgICAgaWYgKHNlbGVjdFZhbHVlICE9IG51bGwpIHsKKyAgICAgIHZhciB2YWx1
ZTsKKyAgICAgIGlmIChwcm9wcy52YWx1ZSAhPSBudWxsKSB7CisgICAgICAgIHZhbHVlID0gcHJv
cHMudmFsdWUgKyAnJzsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHZhbHVlID0gZmxhdHRlbkNo
aWxkcmVuKHByb3BzLmNoaWxkcmVuKTsKKyAgICAgIH0KKyAgICAgIHNlbGVjdGVkID0gZmFsc2U7
CisgICAgICBpZiAoQXJyYXkuaXNBcnJheShzZWxlY3RWYWx1ZSkpIHsKKyAgICAgICAgLy8gbXVs
dGlwbGUKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWxlY3RWYWx1ZS5sZW5ndGg7IGkr
KykgeworICAgICAgICAgIGlmICgnJyArIHNlbGVjdFZhbHVlW2ldID09PSB2YWx1ZSkgeworICAg
ICAgICAgICAgc2VsZWN0ZWQgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICB9IGVsc2UgeworICAgICAgICBzZWxlY3RlZCA9ICcnICsgc2Vs
ZWN0VmFsdWUgPT09IHZhbHVlOworICAgICAgfQorICAgIH0KKworICAgIGluc3QuX3dyYXBwZXJT
dGF0ZSA9IHsgc2VsZWN0ZWQ6IHNlbGVjdGVkIH07CisgIH0sCisKKyAgcG9zdE1vdW50V3JhcHBl
cjogZnVuY3Rpb24gKGluc3QpIHsKKyAgICAvLyB2YWx1ZT0iIiBzaG91bGQgbWFrZSBhIHZhbHVl
IGF0dHJpYnV0ZSAoIzYyMTkpCisgICAgdmFyIHByb3BzID0gaW5zdC5fY3VycmVudEVsZW1lbnQu
cHJvcHM7CisgICAgaWYgKHByb3BzLnZhbHVlICE9IG51bGwpIHsKKyAgICAgIHZhciBub2RlID0g
UmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCk7CisgICAgICBu
b2RlLnNldEF0dHJpYnV0ZSgndmFsdWUnLCBwcm9wcy52YWx1ZSk7CisgICAgfQorICB9LAorCisg
IGdldEhvc3RQcm9wczogZnVuY3Rpb24gKGluc3QsIHByb3BzKSB7CisgICAgdmFyIGhvc3RQcm9w
cyA9IF9hc3NpZ24oeyBzZWxlY3RlZDogdW5kZWZpbmVkLCBjaGlsZHJlbjogdW5kZWZpbmVkIH0s
IHByb3BzKTsKKworICAgIC8vIFJlYWQgc3RhdGUgb25seSBmcm9tIGluaXRpYWwgbW91bnQgYmVj
YXVzZSA8c2VsZWN0PiB1cGRhdGVzIHZhbHVlCisgICAgLy8gbWFudWFsbHk7IHdlIG5lZWQgdGhl
IGluaXRpYWwgc3RhdGUgb25seSBmb3Igc2VydmVyIHJlbmRlcmluZworICAgIGlmIChpbnN0Ll93
cmFwcGVyU3RhdGUuc2VsZWN0ZWQgIT0gbnVsbCkgeworICAgICAgaG9zdFByb3BzLnNlbGVjdGVk
ID0gaW5zdC5fd3JhcHBlclN0YXRlLnNlbGVjdGVkOworICAgIH0KKworICAgIHZhciBjb250ZW50
ID0gZmxhdHRlbkNoaWxkcmVuKHByb3BzLmNoaWxkcmVuKTsKKworICAgIGlmIChjb250ZW50KSB7
CisgICAgICBob3N0UHJvcHMuY2hpbGRyZW4gPSBjb250ZW50OworICAgIH0KKworICAgIHJldHVy
biBob3N0UHJvcHM7CisgIH0KKworfTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTU9wdGlv
bjsKK30seyIxMjQiOjEyNCwiMTQ3IjoxNDcsIjE0OCI6MTQ4LCIzMiI6MzIsIjM4IjozOH1dLDM4
OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIw
MTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vu
c2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9m
IHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdo
dHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5
LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBfYXNzaWduID0gX2RlcmVxXygxNDgp
OworCit2YXIgTGlua2VkVmFsdWVVdGlscyA9IF9kZXJlcV8oMjMpOwordmFyIFJlYWN0RE9NQ29t
cG9uZW50VHJlZSA9IF9kZXJlcV8oMzIpOwordmFyIFJlYWN0VXBkYXRlcyA9IF9kZXJlcV8oNzUp
OworCit2YXIgd2FybmluZyA9IF9kZXJlcV8oMTQ3KTsKKwordmFyIGRpZFdhcm5WYWx1ZUxpbmsg
PSBmYWxzZTsKK3ZhciBkaWRXYXJuVmFsdWVEZWZhdWx0VmFsdWUgPSBmYWxzZTsKKworZnVuY3Rp
b24gdXBkYXRlT3B0aW9uc0lmUGVuZGluZ1VwZGF0ZUFuZE1vdW50ZWQoKSB7CisgIGlmICh0aGlz
Ll9yb290Tm9kZUlEICYmIHRoaXMuX3dyYXBwZXJTdGF0ZS5wZW5kaW5nVXBkYXRlKSB7CisgICAg
dGhpcy5fd3JhcHBlclN0YXRlLnBlbmRpbmdVcGRhdGUgPSBmYWxzZTsKKworICAgIHZhciBwcm9w
cyA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3BzOworICAgIHZhciB2YWx1ZSA9IExpbmtlZFZh
bHVlVXRpbHMuZ2V0VmFsdWUocHJvcHMpOworCisgICAgaWYgKHZhbHVlICE9IG51bGwpIHsKKyAg
ICAgIHVwZGF0ZU9wdGlvbnModGhpcywgQm9vbGVhbihwcm9wcy5tdWx0aXBsZSksIHZhbHVlKTsK
KyAgICB9CisgIH0KK30KKworZnVuY3Rpb24gZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKG93
bmVyKSB7CisgIGlmIChvd25lcikgeworICAgIHZhciBuYW1lID0gb3duZXIuZ2V0TmFtZSgpOwor
ICAgIGlmIChuYW1lKSB7CisgICAgICByZXR1cm4gJyBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBv
ZiBgJyArIG5hbWUgKyAnYC4nOworICAgIH0KKyAgfQorICByZXR1cm4gJyc7Cit9CisKK3ZhciB2
YWx1ZVByb3BOYW1lcyA9IFsndmFsdWUnLCAnZGVmYXVsdFZhbHVlJ107CisKKy8qKgorICogVmFs
aWRhdGlvbiBmdW5jdGlvbiBmb3IgYHZhbHVlYCBhbmQgYGRlZmF1bHRWYWx1ZWAuCisgKiBAcHJp
dmF0ZQorICovCitmdW5jdGlvbiBjaGVja1NlbGVjdFByb3BUeXBlcyhpbnN0LCBwcm9wcykgewor
ICB2YXIgb3duZXIgPSBpbnN0Ll9jdXJyZW50RWxlbWVudC5fb3duZXI7CisgIExpbmtlZFZhbHVl
VXRpbHMuY2hlY2tQcm9wVHlwZXMoJ3NlbGVjdCcsIHByb3BzLCBvd25lcik7CisKKyAgaWYgKHBy
b3BzLnZhbHVlTGluayAhPT0gdW5kZWZpbmVkICYmICFkaWRXYXJuVmFsdWVMaW5rKSB7CisgICAg
ImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ2B2YWx1ZUxp
bmtgIHByb3Agb24gYHNlbGVjdGAgaXMgZGVwcmVjYXRlZDsgc2V0IGB2YWx1ZWAgYW5kIGBvbkNo
YW5nZWAgaW5zdGVhZC4nKSA6IHZvaWQgMDsKKyAgICBkaWRXYXJuVmFsdWVMaW5rID0gdHJ1ZTsK
KyAgfQorCisgIGZvciAodmFyIGkgPSAwOyBpIDwgdmFsdWVQcm9wTmFtZXMubGVuZ3RoOyBpKysp
IHsKKyAgICB2YXIgcHJvcE5hbWUgPSB2YWx1ZVByb3BOYW1lc1tpXTsKKyAgICBpZiAocHJvcHNb
cHJvcE5hbWVdID09IG51bGwpIHsKKyAgICAgIGNvbnRpbnVlOworICAgIH0KKyAgICB2YXIgaXNB
cnJheSA9IEFycmF5LmlzQXJyYXkocHJvcHNbcHJvcE5hbWVdKTsKKyAgICBpZiAocHJvcHMubXVs
dGlwbGUgJiYgIWlzQXJyYXkpIHsKKyAgICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9u
JyA/IHdhcm5pbmcoZmFsc2UsICdUaGUgYCVzYCBwcm9wIHN1cHBsaWVkIHRvIDxzZWxlY3Q+IG11
c3QgYmUgYW4gYXJyYXkgaWYgJyArICdgbXVsdGlwbGVgIGlzIHRydWUuJXMnLCBwcm9wTmFtZSwg
Z2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKG93bmVyKSkgOiB2b2lkIDA7CisgICAgfSBlbHNl
IGlmICghcHJvcHMubXVsdGlwbGUgJiYgaXNBcnJheSkgeworICAgICAgImRldmVsb3BtZW50IiAh
PT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1RoZSBgJXNgIHByb3Agc3VwcGxpZWQg
dG8gPHNlbGVjdD4gbXVzdCBiZSBhIHNjYWxhciAnICsgJ3ZhbHVlIGlmIGBtdWx0aXBsZWAgaXMg
ZmFsc2UuJXMnLCBwcm9wTmFtZSwgZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKG93bmVyKSkg
OiB2b2lkIDA7CisgICAgfQorICB9Cit9CisKKy8qKgorICogQHBhcmFtIHtSZWFjdERPTUNvbXBv
bmVudH0gaW5zdAorICogQHBhcmFtIHtib29sZWFufSBtdWx0aXBsZQorICogQHBhcmFtIHsqfSBw
cm9wVmFsdWUgQSBzdHJpbmdhYmxlICh3aXRoIGBtdWx0aXBsZWAsIGEgbGlzdCBvZiBzdHJpbmdh
YmxlcykuCisgKiBAcHJpdmF0ZQorICovCitmdW5jdGlvbiB1cGRhdGVPcHRpb25zKGluc3QsIG11
bHRpcGxlLCBwcm9wVmFsdWUpIHsKKyAgdmFyIHNlbGVjdGVkVmFsdWUsIGk7CisgIHZhciBvcHRp
b25zID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCkub3B0
aW9uczsKKworICBpZiAobXVsdGlwbGUpIHsKKyAgICBzZWxlY3RlZFZhbHVlID0ge307CisgICAg
Zm9yIChpID0gMDsgaSA8IHByb3BWYWx1ZS5sZW5ndGg7IGkrKykgeworICAgICAgc2VsZWN0ZWRW
YWx1ZVsnJyArIHByb3BWYWx1ZVtpXV0gPSB0cnVlOworICAgIH0KKyAgICBmb3IgKGkgPSAwOyBp
IDwgb3B0aW9ucy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHNlbGVjdGVkID0gc2VsZWN0ZWRW
YWx1ZS5oYXNPd25Qcm9wZXJ0eShvcHRpb25zW2ldLnZhbHVlKTsKKyAgICAgIGlmIChvcHRpb25z
W2ldLnNlbGVjdGVkICE9PSBzZWxlY3RlZCkgeworICAgICAgICBvcHRpb25zW2ldLnNlbGVjdGVk
ID0gc2VsZWN0ZWQ7CisgICAgICB9CisgICAgfQorICB9IGVsc2UgeworICAgIC8vIERvIG5vdCBz
ZXQgYHNlbGVjdC52YWx1ZWAgYXMgZXhhY3QgYmVoYXZpb3IgaXNuJ3QgY29uc2lzdGVudCBhY3Jv
c3MgYWxsCisgICAgLy8gYnJvd3NlcnMgZm9yIGFsbCBjYXNlcy4KKyAgICBzZWxlY3RlZFZhbHVl
ID0gJycgKyBwcm9wVmFsdWU7CisgICAgZm9yIChpID0gMDsgaSA8IG9wdGlvbnMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIGlmIChvcHRpb25zW2ldLnZhbHVlID09PSBzZWxlY3RlZFZhbHVlKSB7Cisg
ICAgICAgIG9wdGlvbnNbaV0uc2VsZWN0ZWQgPSB0cnVlOworICAgICAgICByZXR1cm47CisgICAg
ICB9CisgICAgfQorICAgIGlmIChvcHRpb25zLmxlbmd0aCkgeworICAgICAgb3B0aW9uc1swXS5z
ZWxlY3RlZCA9IHRydWU7CisgICAgfQorICB9Cit9CisKKy8qKgorICogSW1wbGVtZW50cyBhIDxz
ZWxlY3Q+IGhvc3QgY29tcG9uZW50IHRoYXQgYWxsb3dzIG9wdGlvbmFsbHkgc2V0dGluZyB0aGUK
KyAqIHByb3BzIGB2YWx1ZWAgYW5kIGBkZWZhdWx0VmFsdWVgLiBJZiBgbXVsdGlwbGVgIGlzIGZh
bHNlLCB0aGUgcHJvcCBtdXN0IGJlIGEKKyAqIHN0cmluZ2FibGUuIElmIGBtdWx0aXBsZWAgaXMg
dHJ1ZSwgdGhlIHByb3AgbXVzdCBiZSBhbiBhcnJheSBvZiBzdHJpbmdhYmxlcy4KKyAqCisgKiBJ
ZiBgdmFsdWVgIGlzIG5vdCBzdXBwbGllZCAob3IgbnVsbC91bmRlZmluZWQpLCB1c2VyIGFjdGlv
bnMgdGhhdCBjaGFuZ2UgdGhlCisgKiBzZWxlY3RlZCBvcHRpb24gd2lsbCB0cmlnZ2VyIHVwZGF0
ZXMgdG8gdGhlIHJlbmRlcmVkIG9wdGlvbnMuCisgKgorICogSWYgaXQgaXMgc3VwcGxpZWQgKGFu
ZCBub3QgbnVsbC91bmRlZmluZWQpLCB0aGUgcmVuZGVyZWQgb3B0aW9ucyB3aWxsIG5vdAorICog
dXBkYXRlIGluIHJlc3BvbnNlIHRvIHVzZXIgYWN0aW9ucy4gSW5zdGVhZCwgdGhlIGB2YWx1ZWAg
cHJvcCBtdXN0IGNoYW5nZSBpbgorICogb3JkZXIgZm9yIHRoZSByZW5kZXJlZCBvcHRpb25zIHRv
IHVwZGF0ZS4KKyAqCisgKiBJZiBgZGVmYXVsdFZhbHVlYCBpcyBwcm92aWRlZCwgYW55IG9wdGlv
bnMgd2l0aCB0aGUgc3VwcGxpZWQgdmFsdWVzIHdpbGwgYmUKKyAqIHNlbGVjdGVkLgorICovCit2
YXIgUmVhY3RET01TZWxlY3QgPSB7CisgIGdldEhvc3RQcm9wczogZnVuY3Rpb24gKGluc3QsIHBy
b3BzKSB7CisgICAgcmV0dXJuIF9hc3NpZ24oe30sIHByb3BzLCB7CisgICAgICBvbkNoYW5nZTog
aW5zdC5fd3JhcHBlclN0YXRlLm9uQ2hhbmdlLAorICAgICAgdmFsdWU6IHVuZGVmaW5lZAorICAg
IH0pOworICB9LAorCisgIG1vdW50V3JhcHBlcjogZnVuY3Rpb24gKGluc3QsIHByb3BzKSB7Cisg
ICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgY2hlY2tTZWxl
Y3RQcm9wVHlwZXMoaW5zdCwgcHJvcHMpOworICAgIH0KKworICAgIHZhciB2YWx1ZSA9IExpbmtl
ZFZhbHVlVXRpbHMuZ2V0VmFsdWUocHJvcHMpOworICAgIGluc3QuX3dyYXBwZXJTdGF0ZSA9IHsK
KyAgICAgIHBlbmRpbmdVcGRhdGU6IGZhbHNlLAorICAgICAgaW5pdGlhbFZhbHVlOiB2YWx1ZSAh
PSBudWxsID8gdmFsdWUgOiBwcm9wcy5kZWZhdWx0VmFsdWUsCisgICAgICBsaXN0ZW5lcnM6IG51
bGwsCisgICAgICBvbkNoYW5nZTogX2hhbmRsZUNoYW5nZS5iaW5kKGluc3QpLAorICAgICAgd2Fz
TXVsdGlwbGU6IEJvb2xlYW4ocHJvcHMubXVsdGlwbGUpCisgICAgfTsKKworICAgIGlmIChwcm9w
cy52YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHByb3BzLmRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVk
ICYmICFkaWRXYXJuVmFsdWVEZWZhdWx0VmFsdWUpIHsKKyAgICAgICJkZXZlbG9wbWVudCIgIT09
ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdTZWxlY3QgZWxlbWVudHMgbXVzdCBiZSBl
aXRoZXIgY29udHJvbGxlZCBvciB1bmNvbnRyb2xsZWQgJyArICcoc3BlY2lmeSBlaXRoZXIgdGhl
IHZhbHVlIHByb3AsIG9yIHRoZSBkZWZhdWx0VmFsdWUgcHJvcCwgYnV0IG5vdCAnICsgJ2JvdGgp
LiBEZWNpZGUgYmV0d2VlbiB1c2luZyBhIGNvbnRyb2xsZWQgb3IgdW5jb250cm9sbGVkIHNlbGVj
dCAnICsgJ2VsZW1lbnQgYW5kIHJlbW92ZSBvbmUgb2YgdGhlc2UgcHJvcHMuIE1vcmUgaW5mbzog
JyArICdodHRwczovL2ZiLm1lL3JlYWN0LWNvbnRyb2xsZWQtY29tcG9uZW50cycpIDogdm9pZCAw
OworICAgICAgZGlkV2FyblZhbHVlRGVmYXVsdFZhbHVlID0gdHJ1ZTsKKyAgICB9CisgIH0sCisK
KyAgZ2V0U2VsZWN0VmFsdWVDb250ZXh0OiBmdW5jdGlvbiAoaW5zdCkgeworICAgIC8vIFJlYWN0
RE9NT3B0aW9uIGxvb2tzIGF0IHRoaXMgaW5pdGlhbCB2YWx1ZSBzbyB0aGUgaW5pdGlhbCBnZW5l
cmF0ZWQKKyAgICAvLyBtYXJrdXAgaGFzIGNvcnJlY3QgYHNlbGVjdGVkYCBhdHRyaWJ1dGVzCisg
ICAgcmV0dXJuIGluc3QuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWU7CisgIH0sCisKKyAgcG9z
dFVwZGF0ZVdyYXBwZXI6IGZ1bmN0aW9uIChpbnN0KSB7CisgICAgdmFyIHByb3BzID0gaW5zdC5f
Y3VycmVudEVsZW1lbnQucHJvcHM7CisKKyAgICAvLyBBZnRlciB0aGUgaW5pdGlhbCBtb3VudCwg
d2UgY29udHJvbCBzZWxlY3RlZC1uZXNzIG1hbnVhbGx5IHNvIGRvbid0IHBhc3MKKyAgICAvLyB0
aGlzIHZhbHVlIGRvd24KKyAgICBpbnN0Ll93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlID0gdW5k
ZWZpbmVkOworCisgICAgdmFyIHdhc011bHRpcGxlID0gaW5zdC5fd3JhcHBlclN0YXRlLndhc011
bHRpcGxlOworICAgIGluc3QuX3dyYXBwZXJTdGF0ZS53YXNNdWx0aXBsZSA9IEJvb2xlYW4ocHJv
cHMubXVsdGlwbGUpOworCisgICAgdmFyIHZhbHVlID0gTGlua2VkVmFsdWVVdGlscy5nZXRWYWx1
ZShwcm9wcyk7CisgICAgaWYgKHZhbHVlICE9IG51bGwpIHsKKyAgICAgIGluc3QuX3dyYXBwZXJT
dGF0ZS5wZW5kaW5nVXBkYXRlID0gZmFsc2U7CisgICAgICB1cGRhdGVPcHRpb25zKGluc3QsIEJv
b2xlYW4ocHJvcHMubXVsdGlwbGUpLCB2YWx1ZSk7CisgICAgfSBlbHNlIGlmICh3YXNNdWx0aXBs
ZSAhPT0gQm9vbGVhbihwcm9wcy5tdWx0aXBsZSkpIHsKKyAgICAgIC8vIEZvciBzaW1wbGljaXR5
LCByZWFwcGx5IGBkZWZhdWx0VmFsdWVgIGlmIGBtdWx0aXBsZWAgaXMgdG9nZ2xlZC4KKyAgICAg
IGlmIChwcm9wcy5kZWZhdWx0VmFsdWUgIT0gbnVsbCkgeworICAgICAgICB1cGRhdGVPcHRpb25z
KGluc3QsIEJvb2xlYW4ocHJvcHMubXVsdGlwbGUpLCBwcm9wcy5kZWZhdWx0VmFsdWUpOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgLy8gUmV2ZXJ0IHRoZSBzZWxlY3QgYmFjayB0byBpdHMgZGVm
YXVsdCB1bnNlbGVjdGVkIHN0YXRlLgorICAgICAgICB1cGRhdGVPcHRpb25zKGluc3QsIEJvb2xl
YW4ocHJvcHMubXVsdGlwbGUpLCBwcm9wcy5tdWx0aXBsZSA/IFtdIDogJycpOworICAgICAgfQor
ICAgIH0KKyAgfQorfTsKKworZnVuY3Rpb24gX2hhbmRsZUNoYW5nZShldmVudCkgeworICB2YXIg
cHJvcHMgPSB0aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wczsKKyAgdmFyIHJldHVyblZhbHVlID0g
TGlua2VkVmFsdWVVdGlscy5leGVjdXRlT25DaGFuZ2UocHJvcHMsIGV2ZW50KTsKKworICBpZiAo
dGhpcy5fcm9vdE5vZGVJRCkgeworICAgIHRoaXMuX3dyYXBwZXJTdGF0ZS5wZW5kaW5nVXBkYXRl
ID0gdHJ1ZTsKKyAgfQorICBSZWFjdFVwZGF0ZXMuYXNhcCh1cGRhdGVPcHRpb25zSWZQZW5kaW5n
VXBkYXRlQW5kTW91bnRlZCwgdGhpcyk7CisgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworbW9k
dWxlLmV4cG9ydHMgPSBSZWFjdERPTVNlbGVjdDsKK30seyIxNDciOjE0NywiMTQ4IjoxNDgsIjIz
IjoyMywiMzIiOjMyLCI3NSI6NzV9XSwzOTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0
cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQg
dW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxl
IGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFs
IGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBm
aWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2
YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSBfZGVyZXFfKDEyNik7CisKK3ZhciBnZXROb2RlRm9y
Q2hhcmFjdGVyT2Zmc2V0ID0gX2RlcmVxXygxMDkpOwordmFyIGdldFRleHRDb250ZW50QWNjZXNz
b3IgPSBfZGVyZXFfKDExMCk7CisKKy8qKgorICogV2hpbGUgYGlzQ29sbGFwc2VkYCBpcyBhdmFp
bGFibGUgb24gdGhlIFNlbGVjdGlvbiBvYmplY3QgYW5kIGBjb2xsYXBzZWRgCisgKiBpcyBhdmFp
bGFibGUgb24gdGhlIFJhbmdlIG9iamVjdCwgSUUxMSBzb21ldGltZXMgZ2V0cyB0aGVtIHdyb25n
LgorICogSWYgdGhlIGFuY2hvci9mb2N1cyBub2RlcyBhbmQgb2Zmc2V0cyBhcmUgdGhlIHNhbWUs
IHRoZSByYW5nZSBpcyBjb2xsYXBzZWQuCisgKi8KK2Z1bmN0aW9uIGlzQ29sbGFwc2VkKGFuY2hv
ck5vZGUsIGFuY2hvck9mZnNldCwgZm9jdXNOb2RlLCBmb2N1c09mZnNldCkgeworICByZXR1cm4g
YW5jaG9yTm9kZSA9PT0gZm9jdXNOb2RlICYmIGFuY2hvck9mZnNldCA9PT0gZm9jdXNPZmZzZXQ7
Cit9CisKKy8qKgorICogR2V0IHRoZSBhcHByb3ByaWF0ZSBhbmNob3IgYW5kIGZvY3VzIG5vZGUv
b2Zmc2V0IHBhaXJzIGZvciBJRS4KKyAqCisgKiBUaGUgY2F0Y2ggaGVyZSBpcyB0aGF0IElFJ3Mg
c2VsZWN0aW9uIEFQSSBkb2Vzbid0IHByb3ZpZGUgaW5mb3JtYXRpb24KKyAqIGFib3V0IHdoZXRo
ZXIgdGhlIHNlbGVjdGlvbiBpcyBmb3J3YXJkIG9yIGJhY2t3YXJkLCBzbyB3ZSBoYXZlIHRvCisg
KiBiZWhhdmUgYXMgdGhvdWdoIGl0J3MgYWx3YXlzIGZvcndhcmQuCisgKgorICogSUUgdGV4dCBk
aWZmZXJzIGZyb20gbW9kZXJuIHNlbGVjdGlvbiBpbiB0aGF0IGl0IGJlaGF2ZXMgYXMgdGhvdWdo
CisgKiBibG9jayBlbGVtZW50cyBlbmQgd2l0aCBhIG5ldyBsaW5lLiBUaGlzIG1lYW5zIGNoYXJh
Y3RlciBvZmZzZXRzIHdpbGwKKyAqIGRpZmZlciBiZXR3ZWVuIHRoZSB0d28gQVBJcy4KKyAqCisg
KiBAcGFyYW0ge0RPTUVsZW1lbnR9IG5vZGUKKyAqIEByZXR1cm4ge29iamVjdH0KKyAqLworZnVu
Y3Rpb24gZ2V0SUVPZmZzZXRzKG5vZGUpIHsKKyAgdmFyIHNlbGVjdGlvbiA9IGRvY3VtZW50LnNl
bGVjdGlvbjsKKyAgdmFyIHNlbGVjdGVkUmFuZ2UgPSBzZWxlY3Rpb24uY3JlYXRlUmFuZ2UoKTsK
KyAgdmFyIHNlbGVjdGVkTGVuZ3RoID0gc2VsZWN0ZWRSYW5nZS50ZXh0Lmxlbmd0aDsKKworICAv
LyBEdXBsaWNhdGUgc2VsZWN0aW9uIHNvIHdlIGNhbiBtb3ZlIHJhbmdlIHdpdGhvdXQgYnJlYWtp
bmcgdXNlciBzZWxlY3Rpb24uCisgIHZhciBmcm9tU3RhcnQgPSBzZWxlY3RlZFJhbmdlLmR1cGxp
Y2F0ZSgpOworICBmcm9tU3RhcnQubW92ZVRvRWxlbWVudFRleHQobm9kZSk7CisgIGZyb21TdGFy
dC5zZXRFbmRQb2ludCgnRW5kVG9TdGFydCcsIHNlbGVjdGVkUmFuZ2UpOworCisgIHZhciBzdGFy
dE9mZnNldCA9IGZyb21TdGFydC50ZXh0Lmxlbmd0aDsKKyAgdmFyIGVuZE9mZnNldCA9IHN0YXJ0
T2Zmc2V0ICsgc2VsZWN0ZWRMZW5ndGg7CisKKyAgcmV0dXJuIHsKKyAgICBzdGFydDogc3RhcnRP
ZmZzZXQsCisgICAgZW5kOiBlbmRPZmZzZXQKKyAgfTsKK30KKworLyoqCisgKiBAcGFyYW0ge0RP
TUVsZW1lbnR9IG5vZGUKKyAqIEByZXR1cm4gez9vYmplY3R9CisgKi8KK2Z1bmN0aW9uIGdldE1v
ZGVybk9mZnNldHMobm9kZSkgeworICB2YXIgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlv
biAmJiB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CisKKyAgaWYgKCFzZWxlY3Rpb24gfHwgc2VsZWN0
aW9uLnJhbmdlQ291bnQgPT09IDApIHsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorCisgIHZhciBh
bmNob3JOb2RlID0gc2VsZWN0aW9uLmFuY2hvck5vZGU7CisgIHZhciBhbmNob3JPZmZzZXQgPSBz
ZWxlY3Rpb24uYW5jaG9yT2Zmc2V0OworICB2YXIgZm9jdXNOb2RlID0gc2VsZWN0aW9uLmZvY3Vz
Tm9kZTsKKyAgdmFyIGZvY3VzT2Zmc2V0ID0gc2VsZWN0aW9uLmZvY3VzT2Zmc2V0OworCisgIHZh
ciBjdXJyZW50UmFuZ2UgPSBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKTsKKworICAvLyBJbiBGaXJl
Zm94LCByYW5nZS5zdGFydENvbnRhaW5lciBhbmQgcmFuZ2UuZW5kQ29udGFpbmVyIGNhbiBiZSAi
YW5vbnltb3VzCisgIC8vIGRpdnMiLCBlLmcuIHRoZSB1cC9kb3duIGJ1dHRvbnMgb24gYW4gPGlu
cHV0IHR5cGU9Im51bWJlciI+LiBBbm9ueW1vdXMKKyAgLy8gZGl2cyBkbyBub3Qgc2VlbSB0byBl
eHBvc2UgcHJvcGVydGllcywgdHJpZ2dlcmluZyBhICJQZXJtaXNzaW9uIGRlbmllZAorICAvLyBl
cnJvciIgaWYgYW55IG9mIGl0cyBwcm9wZXJ0aWVzIGFyZSBhY2Nlc3NlZC4gVGhlIG9ubHkgc2Vl
bWluZ2x5IHBvc3NpYmxlCisgIC8vIHdheSB0byBhdm9pZCBlcnJvcmluZyBpcyB0byBhY2Nlc3Mg
YSBwcm9wZXJ0eSB0aGF0IHR5cGljYWxseSB3b3JrcyBmb3IKKyAgLy8gbm9uLWFub255bW91cyBk
aXZzIGFuZCBjYXRjaCBhbnkgZXJyb3IgdGhhdCBtYXkgb3RoZXJ3aXNlIGFyaXNlLiBTZWUKKyAg
Ly8gaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NDI3Cisg
IHRyeSB7CisgICAgLyogZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLWV4cHJlc3Npb25zICovCisg
ICAgY3VycmVudFJhbmdlLnN0YXJ0Q29udGFpbmVyLm5vZGVUeXBlOworICAgIGN1cnJlbnRSYW5n
ZS5lbmRDb250YWluZXIubm9kZVR5cGU7CisgICAgLyogZXNsaW50LWVuYWJsZSBuby11bnVzZWQt
ZXhwcmVzc2lvbnMgKi8KKyAgfSBjYXRjaCAoZSkgeworICAgIHJldHVybiBudWxsOworICB9CisK
KyAgLy8gSWYgdGhlIG5vZGUgYW5kIG9mZnNldCB2YWx1ZXMgYXJlIHRoZSBzYW1lLCB0aGUgc2Vs
ZWN0aW9uIGlzIGNvbGxhcHNlZC4KKyAgLy8gYFNlbGVjdGlvbi5pc0NvbGxhcHNlZGAgaXMgYXZh
aWxhYmxlIG5hdGl2ZWx5LCBidXQgSUUgc29tZXRpbWVzIGdldHMKKyAgLy8gdGhpcyB2YWx1ZSB3
cm9uZy4KKyAgdmFyIGlzU2VsZWN0aW9uQ29sbGFwc2VkID0gaXNDb2xsYXBzZWQoc2VsZWN0aW9u
LmFuY2hvck5vZGUsIHNlbGVjdGlvbi5hbmNob3JPZmZzZXQsIHNlbGVjdGlvbi5mb2N1c05vZGUs
IHNlbGVjdGlvbi5mb2N1c09mZnNldCk7CisKKyAgdmFyIHJhbmdlTGVuZ3RoID0gaXNTZWxlY3Rp
b25Db2xsYXBzZWQgPyAwIDogY3VycmVudFJhbmdlLnRvU3RyaW5nKCkubGVuZ3RoOworCisgIHZh
ciB0ZW1wUmFuZ2UgPSBjdXJyZW50UmFuZ2UuY2xvbmVSYW5nZSgpOworICB0ZW1wUmFuZ2Uuc2Vs
ZWN0Tm9kZUNvbnRlbnRzKG5vZGUpOworICB0ZW1wUmFuZ2Uuc2V0RW5kKGN1cnJlbnRSYW5nZS5z
dGFydENvbnRhaW5lciwgY3VycmVudFJhbmdlLnN0YXJ0T2Zmc2V0KTsKKworICB2YXIgaXNUZW1w
UmFuZ2VDb2xsYXBzZWQgPSBpc0NvbGxhcHNlZCh0ZW1wUmFuZ2Uuc3RhcnRDb250YWluZXIsIHRl
bXBSYW5nZS5zdGFydE9mZnNldCwgdGVtcFJhbmdlLmVuZENvbnRhaW5lciwgdGVtcFJhbmdlLmVu
ZE9mZnNldCk7CisKKyAgdmFyIHN0YXJ0ID0gaXNUZW1wUmFuZ2VDb2xsYXBzZWQgPyAwIDogdGVt
cFJhbmdlLnRvU3RyaW5nKCkubGVuZ3RoOworICB2YXIgZW5kID0gc3RhcnQgKyByYW5nZUxlbmd0
aDsKKworICAvLyBEZXRlY3Qgd2hldGhlciB0aGUgc2VsZWN0aW9uIGlzIGJhY2t3YXJkLgorICB2
YXIgZGV0ZWN0aW9uUmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICBkZXRlY3Rpb25S
YW5nZS5zZXRTdGFydChhbmNob3JOb2RlLCBhbmNob3JPZmZzZXQpOworICBkZXRlY3Rpb25SYW5n
ZS5zZXRFbmQoZm9jdXNOb2RlLCBmb2N1c09mZnNldCk7CisgIHZhciBpc0JhY2t3YXJkID0gZGV0
ZWN0aW9uUmFuZ2UuY29sbGFwc2VkOworCisgIHJldHVybiB7CisgICAgc3RhcnQ6IGlzQmFja3dh
cmQgPyBlbmQgOiBzdGFydCwKKyAgICBlbmQ6IGlzQmFja3dhcmQgPyBzdGFydCA6IGVuZAorICB9
OworfQorCisvKioKKyAqIEBwYXJhbSB7RE9NRWxlbWVudHxET01UZXh0Tm9kZX0gbm9kZQorICog
QHBhcmFtIHtvYmplY3R9IG9mZnNldHMKKyAqLworZnVuY3Rpb24gc2V0SUVPZmZzZXRzKG5vZGUs
IG9mZnNldHMpIHsKKyAgdmFyIHJhbmdlID0gZG9jdW1lbnQuc2VsZWN0aW9uLmNyZWF0ZVJhbmdl
KCkuZHVwbGljYXRlKCk7CisgIHZhciBzdGFydCwgZW5kOworCisgIGlmIChvZmZzZXRzLmVuZCA9
PT0gdW5kZWZpbmVkKSB7CisgICAgc3RhcnQgPSBvZmZzZXRzLnN0YXJ0OworICAgIGVuZCA9IHN0
YXJ0OworICB9IGVsc2UgaWYgKG9mZnNldHMuc3RhcnQgPiBvZmZzZXRzLmVuZCkgeworICAgIHN0
YXJ0ID0gb2Zmc2V0cy5lbmQ7CisgICAgZW5kID0gb2Zmc2V0cy5zdGFydDsKKyAgfSBlbHNlIHsK
KyAgICBzdGFydCA9IG9mZnNldHMuc3RhcnQ7CisgICAgZW5kID0gb2Zmc2V0cy5lbmQ7CisgIH0K
KworICByYW5nZS5tb3ZlVG9FbGVtZW50VGV4dChub2RlKTsKKyAgcmFuZ2UubW92ZVN0YXJ0KCdj
aGFyYWN0ZXInLCBzdGFydCk7CisgIHJhbmdlLnNldEVuZFBvaW50KCdFbmRUb1N0YXJ0JywgcmFu
Z2UpOworICByYW5nZS5tb3ZlRW5kKCdjaGFyYWN0ZXInLCBlbmQgLSBzdGFydCk7CisgIHJhbmdl
LnNlbGVjdCgpOworfQorCisvKioKKyAqIEluIG1vZGVybiBub24tSUUgYnJvd3NlcnMsIHdlIGNh
biBzdXBwb3J0IGJvdGggZm9yd2FyZCBhbmQgYmFja3dhcmQKKyAqIHNlbGVjdGlvbnMuCisgKgor
ICogTm90ZTogSUUxMCsgc3VwcG9ydHMgdGhlIFNlbGVjdGlvbiBvYmplY3QsIGJ1dCBpdCBkb2Vz
IG5vdCBzdXBwb3J0CisgKiB0aGUgYGV4dGVuZGAgbWV0aG9kLCB3aGljaCBtZWFucyB0aGF0IGV2
ZW4gaW4gbW9kZXJuIElFLCBpdCdzIG5vdCBwb3NzaWJsZQorICogdG8gcHJvZ3JhbW1hdGljYWxs
eSBjcmVhdGUgYSBiYWNrd2FyZCBzZWxlY3Rpb24uIFRodXMsIGZvciBhbGwgSUUKKyAqIHZlcnNp
b25zLCB3ZSB1c2UgdGhlIG9sZCBJRSBBUEkgdG8gY3JlYXRlIG91ciBzZWxlY3Rpb25zLgorICoK
KyAqIEBwYXJhbSB7RE9NRWxlbWVudHxET01UZXh0Tm9kZX0gbm9kZQorICogQHBhcmFtIHtvYmpl
Y3R9IG9mZnNldHMKKyAqLworZnVuY3Rpb24gc2V0TW9kZXJuT2Zmc2V0cyhub2RlLCBvZmZzZXRz
KSB7CisgIGlmICghd2luZG93LmdldFNlbGVjdGlvbikgeworICAgIHJldHVybjsKKyAgfQorCisg
IHZhciBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CisgIHZhciBsZW5ndGggPSBu
b2RlW2dldFRleHRDb250ZW50QWNjZXNzb3IoKV0ubGVuZ3RoOworICB2YXIgc3RhcnQgPSBNYXRo
Lm1pbihvZmZzZXRzLnN0YXJ0LCBsZW5ndGgpOworICB2YXIgZW5kID0gb2Zmc2V0cy5lbmQgPT09
IHVuZGVmaW5lZCA/IHN0YXJ0IDogTWF0aC5taW4ob2Zmc2V0cy5lbmQsIGxlbmd0aCk7CisKKyAg
Ly8gSUUgMTEgdXNlcyBtb2Rlcm4gc2VsZWN0aW9uLCBidXQgZG9lc24ndCBzdXBwb3J0IHRoZSBl
eHRlbmQgbWV0aG9kLgorICAvLyBGbGlwIGJhY2t3YXJkIHNlbGVjdGlvbnMsIHNvIHdlIGNhbiBz
ZXQgd2l0aCBhIHNpbmdsZSByYW5nZS4KKyAgaWYgKCFzZWxlY3Rpb24uZXh0ZW5kICYmIHN0YXJ0
ID4gZW5kKSB7CisgICAgdmFyIHRlbXAgPSBlbmQ7CisgICAgZW5kID0gc3RhcnQ7CisgICAgc3Rh
cnQgPSB0ZW1wOworICB9CisKKyAgdmFyIHN0YXJ0TWFya2VyID0gZ2V0Tm9kZUZvckNoYXJhY3Rl
ck9mZnNldChub2RlLCBzdGFydCk7CisgIHZhciBlbmRNYXJrZXIgPSBnZXROb2RlRm9yQ2hhcmFj
dGVyT2Zmc2V0KG5vZGUsIGVuZCk7CisKKyAgaWYgKHN0YXJ0TWFya2VyICYmIGVuZE1hcmtlcikg
eworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0
U3RhcnQoc3RhcnRNYXJrZXIubm9kZSwgc3RhcnRNYXJrZXIub2Zmc2V0KTsKKyAgICBzZWxlY3Rp
b24ucmVtb3ZlQWxsUmFuZ2VzKCk7CisKKyAgICBpZiAoc3RhcnQgPiBlbmQpIHsKKyAgICAgIHNl
bGVjdGlvbi5hZGRSYW5nZShyYW5nZSk7CisgICAgICBzZWxlY3Rpb24uZXh0ZW5kKGVuZE1hcmtl
ci5ub2RlLCBlbmRNYXJrZXIub2Zmc2V0KTsKKyAgICB9IGVsc2UgeworICAgICAgcmFuZ2Uuc2V0
RW5kKGVuZE1hcmtlci5ub2RlLCBlbmRNYXJrZXIub2Zmc2V0KTsKKyAgICAgIHNlbGVjdGlvbi5h
ZGRSYW5nZShyYW5nZSk7CisgICAgfQorICB9Cit9CisKK3ZhciB1c2VJRU9mZnNldHMgPSBFeGVj
dXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00gJiYgJ3NlbGVjdGlvbicgaW4gZG9jdW1lbnQgJiYg
ISgnZ2V0U2VsZWN0aW9uJyBpbiB3aW5kb3cpOworCit2YXIgUmVhY3RET01TZWxlY3Rpb24gPSB7
CisgIC8qKgorICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IG5vZGUKKyAgICovCisgIGdldE9mZnNl
dHM6IHVzZUlFT2Zmc2V0cyA/IGdldElFT2Zmc2V0cyA6IGdldE1vZGVybk9mZnNldHMsCisKKyAg
LyoqCisgICAqIEBwYXJhbSB7RE9NRWxlbWVudHxET01UZXh0Tm9kZX0gbm9kZQorICAgKiBAcGFy
YW0ge29iamVjdH0gb2Zmc2V0cworICAgKi8KKyAgc2V0T2Zmc2V0czogdXNlSUVPZmZzZXRzID8g
c2V0SUVPZmZzZXRzIDogc2V0TW9kZXJuT2Zmc2V0cworfTsKKworbW9kdWxlLmV4cG9ydHMgPSBS
ZWFjdERPTVNlbGVjdGlvbjsKK30seyIxMDkiOjEwOSwiMTEwIjoxMTAsIjEyNiI6MTI2fV0sNDA6
W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAx
My1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5z
ZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2Yg
dGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0
cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnku
CisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIFJlYWN0RGVmYXVsdEluamVjdGlvbiA9
IF9kZXJlcV8oNDcpOwordmFyIFJlYWN0U2VydmVyUmVuZGVyaW5nID0gX2RlcmVxXyg3MSk7Cit2
YXIgUmVhY3RWZXJzaW9uID0gX2RlcmVxXyg3Nik7CisKK1JlYWN0RGVmYXVsdEluamVjdGlvbi5p
bmplY3QoKTsKKwordmFyIFJlYWN0RE9NU2VydmVyID0geworICByZW5kZXJUb1N0cmluZzogUmVh
Y3RTZXJ2ZXJSZW5kZXJpbmcucmVuZGVyVG9TdHJpbmcsCisgIHJlbmRlclRvU3RhdGljTWFya3Vw
OiBSZWFjdFNlcnZlclJlbmRlcmluZy5yZW5kZXJUb1N0YXRpY01hcmt1cCwKKyAgdmVyc2lvbjog
UmVhY3RWZXJzaW9uCit9OworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9NU2VydmVyOworfSx7
IjQ3Ijo0NywiNzEiOjcxLCI3NiI6NzZ9XSw0MTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhw
b3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisg
KiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5z
ZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBm
aWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlv
bmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5U
UyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOwor
Cit2YXIgUmVhY3RET01TZXJ2ZXIgPSBfZGVyZXFfKDQwKTsKKworbW9kdWxlLmV4cG9ydHMgPSBS
ZWFjdERPTVNlcnZlcjsKK30seyI0MCI6NDB9XSw0MjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUs
ZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMu
CisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGlj
ZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5T
RSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRp
dGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFU
RU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3Qn
OworCit2YXIgX3Byb2RJbnZhcmlhbnQgPSBfZGVyZXFfKDExNiksCisgICAgX2Fzc2lnbiA9IF9k
ZXJlcV8oMTQ4KTsKKwordmFyIERPTUNoaWxkcmVuT3BlcmF0aW9ucyA9IF9kZXJlcV8oOCk7Cit2
YXIgRE9NTGF6eVRyZWUgPSBfZGVyZXFfKDkpOwordmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9
IF9kZXJlcV8oMzIpOworCit2YXIgZXNjYXBlVGV4dENvbnRlbnRGb3JCcm93c2VyID0gX2RlcmVx
XygxMDApOwordmFyIGludmFyaWFudCA9IF9kZXJlcV8oMTQwKTsKK3ZhciB2YWxpZGF0ZURPTU5l
c3RpbmcgPSBfZGVyZXFfKDEyMSk7CisKKy8qKgorICogVGV4dCBub2RlcyB2aW9sYXRlIGEgY291
cGxlIGFzc3VtcHRpb25zIHRoYXQgUmVhY3QgbWFrZXMgYWJvdXQgY29tcG9uZW50czoKKyAqCisg
KiAgLSBXaGVuIG1vdW50aW5nIHRleHQgaW50byB0aGUgRE9NLCBhZGphY2VudCB0ZXh0IG5vZGVz
IGFyZSBtZXJnZWQuCisgKiAgLSBUZXh0IG5vZGVzIGNhbm5vdCBiZSBhc3NpZ25lZCBhIFJlYWN0
IHJvb3QgSUQuCisgKgorICogVGhpcyBjb21wb25lbnQgaXMgdXNlZCB0byB3cmFwIHN0cmluZ3Mg
YmV0d2VlbiBjb21tZW50IG5vZGVzIHNvIHRoYXQgdGhleQorICogY2FuIHVuZGVyZ28gdGhlIHNh
bWUgcmVjb25jaWxpYXRpb24gdGhhdCBpcyBhcHBsaWVkIHRvIGVsZW1lbnRzLgorICoKKyAqIFRP
RE86IEludmVzdGlnYXRlIHJlcHJlc2VudGluZyBSZWFjdCBjb21wb25lbnRzIGluIHRoZSBET00g
d2l0aCB0ZXh0IG5vZGVzLgorICoKKyAqIEBjbGFzcyBSZWFjdERPTVRleHRDb21wb25lbnQKKyAq
IEBleHRlbmRzIFJlYWN0Q29tcG9uZW50CisgKiBAaW50ZXJuYWwKKyAqLwordmFyIFJlYWN0RE9N
VGV4dENvbXBvbmVudCA9IGZ1bmN0aW9uICh0ZXh0KSB7CisgIC8vIFRPRE86IFRoaXMgaXMgcmVh
bGx5IGEgUmVhY3RUZXh0IChSZWFjdE5vZGUpLCBub3QgYSBSZWFjdEVsZW1lbnQKKyAgdGhpcy5f
Y3VycmVudEVsZW1lbnQgPSB0ZXh0OworICB0aGlzLl9zdHJpbmdUZXh0ID0gJycgKyB0ZXh0Owor
ICAvLyBSZWFjdERPTUNvbXBvbmVudFRyZWUgdXNlcyB0aGVzZToKKyAgdGhpcy5faG9zdE5vZGUg
PSBudWxsOworICB0aGlzLl9ob3N0UGFyZW50ID0gbnVsbDsKKworICAvLyBQcm9wZXJ0aWVzCisg
IHRoaXMuX2RvbUlEID0gMDsKKyAgdGhpcy5fbW91bnRJbmRleCA9IDA7CisgIHRoaXMuX2Nsb3Np
bmdDb21tZW50ID0gbnVsbDsKKyAgdGhpcy5fY29tbWVudE5vZGVzID0gbnVsbDsKK307CisKK19h
c3NpZ24oUmVhY3RET01UZXh0Q29tcG9uZW50LnByb3RvdHlwZSwgeworCisgIC8qKgorICAgKiBD
cmVhdGVzIHRoZSBtYXJrdXAgZm9yIHRoaXMgdGV4dCBub2RlLiBUaGlzIG5vZGUgaXMgbm90IGlu
dGVuZGVkIHRvIGhhdmUKKyAgICogYW55IGZlYXR1cmVzIGJlc2lkZXMgY29udGFpbmluZyB0ZXh0
IGNvbnRlbnQuCisgICAqCisgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbnxS
ZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9ufSB0cmFuc2FjdGlvbgorICAgKiBAcmV0dXJu
IHtzdHJpbmd9IE1hcmt1cCBmb3IgdGhpcyB0ZXh0IG5vZGUuCisgICAqIEBpbnRlcm5hbAorICAg
Ki8KKyAgbW91bnRDb21wb25lbnQ6IGZ1bmN0aW9uICh0cmFuc2FjdGlvbiwgaG9zdFBhcmVudCwg
aG9zdENvbnRhaW5lckluZm8sIGNvbnRleHQpIHsKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0g
J3Byb2R1Y3Rpb24nKSB7CisgICAgICB2YXIgcGFyZW50SW5mbzsKKyAgICAgIGlmIChob3N0UGFy
ZW50ICE9IG51bGwpIHsKKyAgICAgICAgcGFyZW50SW5mbyA9IGhvc3RQYXJlbnQuX2FuY2VzdG9y
SW5mbzsKKyAgICAgIH0gZWxzZSBpZiAoaG9zdENvbnRhaW5lckluZm8gIT0gbnVsbCkgeworICAg
ICAgICBwYXJlbnRJbmZvID0gaG9zdENvbnRhaW5lckluZm8uX2FuY2VzdG9ySW5mbzsKKyAgICAg
IH0KKyAgICAgIGlmIChwYXJlbnRJbmZvKSB7CisgICAgICAgIC8vIHBhcmVudEluZm8gc2hvdWxk
IGFsd2F5cyBiZSBwcmVzZW50IGV4Y2VwdCBmb3IgdGhlIHRvcC1sZXZlbAorICAgICAgICAvLyBj
b21wb25lbnQgd2hlbiBzZXJ2ZXIgcmVuZGVyaW5nCisgICAgICAgIHZhbGlkYXRlRE9NTmVzdGlu
ZyhudWxsLCB0aGlzLl9zdHJpbmdUZXh0LCB0aGlzLCBwYXJlbnRJbmZvKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgZG9tSUQgPSBob3N0Q29udGFpbmVySW5mby5faWRDb3VudGVyKys7Cisg
ICAgdmFyIG9wZW5pbmdWYWx1ZSA9ICcgcmVhY3QtdGV4dDogJyArIGRvbUlEICsgJyAnOworICAg
IHZhciBjbG9zaW5nVmFsdWUgPSAnIC9yZWFjdC10ZXh0ICc7CisgICAgdGhpcy5fZG9tSUQgPSBk
b21JRDsKKyAgICB0aGlzLl9ob3N0UGFyZW50ID0gaG9zdFBhcmVudDsKKyAgICBpZiAodHJhbnNh
Y3Rpb24udXNlQ3JlYXRlRWxlbWVudCkgeworICAgICAgdmFyIG93bmVyRG9jdW1lbnQgPSBob3N0
Q29udGFpbmVySW5mby5fb3duZXJEb2N1bWVudDsKKyAgICAgIHZhciBvcGVuaW5nQ29tbWVudCA9
IG93bmVyRG9jdW1lbnQuY3JlYXRlQ29tbWVudChvcGVuaW5nVmFsdWUpOworICAgICAgdmFyIGNs
b3NpbmdDb21tZW50ID0gb3duZXJEb2N1bWVudC5jcmVhdGVDb21tZW50KGNsb3NpbmdWYWx1ZSk7
CisgICAgICB2YXIgbGF6eVRyZWUgPSBET01MYXp5VHJlZShvd25lckRvY3VtZW50LmNyZWF0ZURv
Y3VtZW50RnJhZ21lbnQoKSk7CisgICAgICBET01MYXp5VHJlZS5xdWV1ZUNoaWxkKGxhenlUcmVl
LCBET01MYXp5VHJlZShvcGVuaW5nQ29tbWVudCkpOworICAgICAgaWYgKHRoaXMuX3N0cmluZ1Rl
eHQpIHsKKyAgICAgICAgRE9NTGF6eVRyZWUucXVldWVDaGlsZChsYXp5VHJlZSwgRE9NTGF6eVRy
ZWUob3duZXJEb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0aGlzLl9zdHJpbmdUZXh0KSkpOworICAg
ICAgfQorICAgICAgRE9NTGF6eVRyZWUucXVldWVDaGlsZChsYXp5VHJlZSwgRE9NTGF6eVRyZWUo
Y2xvc2luZ0NvbW1lbnQpKTsKKyAgICAgIFJlYWN0RE9NQ29tcG9uZW50VHJlZS5wcmVjYWNoZU5v
ZGUodGhpcywgb3BlbmluZ0NvbW1lbnQpOworICAgICAgdGhpcy5fY2xvc2luZ0NvbW1lbnQgPSBj
bG9zaW5nQ29tbWVudDsKKyAgICAgIHJldHVybiBsYXp5VHJlZTsKKyAgICB9IGVsc2UgeworICAg
ICAgdmFyIGVzY2FwZWRUZXh0ID0gZXNjYXBlVGV4dENvbnRlbnRGb3JCcm93c2VyKHRoaXMuX3N0
cmluZ1RleHQpOworCisgICAgICBpZiAodHJhbnNhY3Rpb24ucmVuZGVyVG9TdGF0aWNNYXJrdXAp
IHsKKyAgICAgICAgLy8gTm9ybWFsbHkgd2UnZCB3cmFwIHRoaXMgYmV0d2VlbiBjb21tZW50IG5v
ZGVzIGZvciB0aGUgcmVhc29ucyBzdGF0ZWQKKyAgICAgICAgLy8gYWJvdmUsIGJ1dCBzaW5jZSB0
aGlzIGlzIGEgc2l0dWF0aW9uIHdoZXJlIFJlYWN0IHdvbid0IHRha2Ugb3ZlcgorICAgICAgICAv
LyAoc3RhdGljIHBhZ2VzKSwgd2UgY2FuIHNpbXBseSByZXR1cm4gdGhlIHRleHQgYXMgaXQgaXMu
CisgICAgICAgIHJldHVybiBlc2NhcGVkVGV4dDsKKyAgICAgIH0KKworICAgICAgcmV0dXJuICc8
IS0tJyArIG9wZW5pbmdWYWx1ZSArICctLT4nICsgZXNjYXBlZFRleHQgKyAnPCEtLScgKyBjbG9z
aW5nVmFsdWUgKyAnLS0+JzsKKyAgICB9CisgIH0sCisKKyAgLyoqCisgICAqIFVwZGF0ZXMgdGhp
cyBjb21wb25lbnQgYnkgdXBkYXRpbmcgdGhlIHRleHQgY29udGVudC4KKyAgICoKKyAgICogQHBh
cmFtIHtSZWFjdFRleHR9IG5leHRUZXh0IFRoZSBuZXh0IHRleHQgY29udGVudAorICAgKiBAcGFy
YW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uCisgICAqIEBpbnRlcm5h
bAorICAgKi8KKyAgcmVjZWl2ZUNvbXBvbmVudDogZnVuY3Rpb24gKG5leHRUZXh0LCB0cmFuc2Fj
dGlvbikgeworICAgIGlmIChuZXh0VGV4dCAhPT0gdGhpcy5fY3VycmVudEVsZW1lbnQpIHsKKyAg
ICAgIHRoaXMuX2N1cnJlbnRFbGVtZW50ID0gbmV4dFRleHQ7CisgICAgICB2YXIgbmV4dFN0cmlu
Z1RleHQgPSAnJyArIG5leHRUZXh0OworICAgICAgaWYgKG5leHRTdHJpbmdUZXh0ICE9PSB0aGlz
Ll9zdHJpbmdUZXh0KSB7CisgICAgICAgIC8vIFRPRE86IFNhdmUgdGhpcyBhcyBwZW5kaW5nIHBy
b3BzIGFuZCB1c2UgcGVyZm9ybVVwZGF0ZUlmTmVjZXNzYXJ5CisgICAgICAgIC8vIGFuZC9vciB1
cGRhdGVDb21wb25lbnQgdG8gZG8gdGhlIGFjdHVhbCB1cGRhdGUgZm9yIGNvbnNpc3RlbmN5IHdp
dGgKKyAgICAgICAgLy8gb3RoZXIgY29tcG9uZW50IHR5cGVzPworICAgICAgICB0aGlzLl9zdHJp
bmdUZXh0ID0gbmV4dFN0cmluZ1RleHQ7CisgICAgICAgIHZhciBjb21tZW50Tm9kZXMgPSB0aGlz
LmdldEhvc3ROb2RlKCk7CisgICAgICAgIERPTUNoaWxkcmVuT3BlcmF0aW9ucy5yZXBsYWNlRGVs
aW1pdGVkVGV4dChjb21tZW50Tm9kZXNbMF0sIGNvbW1lbnROb2Rlc1sxXSwgbmV4dFN0cmluZ1Rl
eHQpOworICAgICAgfQorICAgIH0KKyAgfSwKKworICBnZXRIb3N0Tm9kZTogZnVuY3Rpb24gKCkg
eworICAgIHZhciBob3N0Tm9kZSA9IHRoaXMuX2NvbW1lbnROb2RlczsKKyAgICBpZiAoaG9zdE5v
ZGUpIHsKKyAgICAgIHJldHVybiBob3N0Tm9kZTsKKyAgICB9CisgICAgaWYgKCF0aGlzLl9jbG9z
aW5nQ29tbWVudCkgeworICAgICAgdmFyIG9wZW5pbmdDb21tZW50ID0gUmVhY3RET01Db21wb25l
bnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UodGhpcyk7CisgICAgICB2YXIgbm9kZSA9IG9wZW5p
bmdDb21tZW50Lm5leHRTaWJsaW5nOworICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgIShu
b2RlICE9IG51bGwpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50
KGZhbHNlLCAnTWlzc2luZyBjbG9zaW5nIGNvbW1lbnQgZm9yIHRleHQgY29tcG9uZW50ICVzJywg
dGhpcy5fZG9tSUQpIDogX3Byb2RJbnZhcmlhbnQoJzY3JywgdGhpcy5fZG9tSUQpIDogdm9pZCAw
OworICAgICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gOCAmJiBub2RlLm5vZGVWYWx1ZSA9PT0g
JyAvcmVhY3QtdGV4dCAnKSB7CisgICAgICAgICAgdGhpcy5fY2xvc2luZ0NvbW1lbnQgPSBub2Rl
OworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIG5vZGUgPSBub2RlLm5leHRT
aWJsaW5nOworICAgICAgfQorICAgIH0KKyAgICBob3N0Tm9kZSA9IFt0aGlzLl9ob3N0Tm9kZSwg
dGhpcy5fY2xvc2luZ0NvbW1lbnRdOworICAgIHRoaXMuX2NvbW1lbnROb2RlcyA9IGhvc3ROb2Rl
OworICAgIHJldHVybiBob3N0Tm9kZTsKKyAgfSwKKworICB1bm1vdW50Q29tcG9uZW50OiBmdW5j
dGlvbiAoKSB7CisgICAgdGhpcy5fY2xvc2luZ0NvbW1lbnQgPSBudWxsOworICAgIHRoaXMuX2Nv
bW1lbnROb2RlcyA9IG51bGw7CisgICAgUmVhY3RET01Db21wb25lbnRUcmVlLnVuY2FjaGVOb2Rl
KHRoaXMpOworICB9CisKK30pOworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9NVGV4dENvbXBv
bmVudDsKK30seyIxMDAiOjEwMCwiMTE2IjoxMTYsIjEyMSI6MTIxLCIxNDAiOjE0MCwiMTQ4Ijox
NDgsIjMyIjozMiwiOCI6OCwiOSI6OX1dLDQzOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBv
cnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisK
K3ZhciBfcHJvZEludmFyaWFudCA9IF9kZXJlcV8oMTE2KSwKKyAgICBfYXNzaWduID0gX2RlcmVx
XygxNDgpOworCit2YXIgTGlua2VkVmFsdWVVdGlscyA9IF9kZXJlcV8oMjMpOwordmFyIFJlYWN0
RE9NQ29tcG9uZW50VHJlZSA9IF9kZXJlcV8oMzIpOwordmFyIFJlYWN0VXBkYXRlcyA9IF9kZXJl
cV8oNzUpOworCit2YXIgaW52YXJpYW50ID0gX2RlcmVxXygxNDApOwordmFyIHdhcm5pbmcgPSBf
ZGVyZXFfKDE0Nyk7CisKK3ZhciBkaWRXYXJuVmFsdWVMaW5rID0gZmFsc2U7Cit2YXIgZGlkV2Fy
blZhbERlZmF1bHRWYWwgPSBmYWxzZTsKKworZnVuY3Rpb24gZm9yY2VVcGRhdGVJZk1vdW50ZWQo
KSB7CisgIGlmICh0aGlzLl9yb290Tm9kZUlEKSB7CisgICAgLy8gRE9NIGNvbXBvbmVudCBpcyBz
dGlsbCBtb3VudGVkOyB1cGRhdGUKKyAgICBSZWFjdERPTVRleHRhcmVhLnVwZGF0ZVdyYXBwZXIo
dGhpcyk7CisgIH0KK30KKworLyoqCisgKiBJbXBsZW1lbnRzIGEgPHRleHRhcmVhPiBob3N0IGNv
bXBvbmVudCB0aGF0IGFsbG93cyBzZXR0aW5nIGB2YWx1ZWAsIGFuZAorICogYGRlZmF1bHRWYWx1
ZWAuIFRoaXMgZGlmZmVycyBmcm9tIHRoZSB0cmFkaXRpb25hbCBET00gQVBJIGJlY2F1c2UgdmFs
dWUgaXMKKyAqIHVzdWFsbHkgc2V0IGFzIFBDREFUQSBjaGlsZHJlbi4KKyAqCisgKiBJZiBgdmFs
dWVgIGlzIG5vdCBzdXBwbGllZCAob3IgbnVsbC91bmRlZmluZWQpLCB1c2VyIGFjdGlvbnMgdGhh
dCBhZmZlY3QgdGhlCisgKiB2YWx1ZSB3aWxsIHRyaWdnZXIgdXBkYXRlcyB0byB0aGUgZWxlbWVu
dC4KKyAqCisgKiBJZiBgdmFsdWVgIGlzIHN1cHBsaWVkIChhbmQgbm90IG51bGwvdW5kZWZpbmVk
KSwgdGhlIHJlbmRlcmVkIGVsZW1lbnQgd2lsbAorICogbm90IHRyaWdnZXIgdXBkYXRlcyB0byB0
aGUgZWxlbWVudC4gSW5zdGVhZCwgdGhlIGB2YWx1ZWAgcHJvcCBtdXN0IGNoYW5nZSBpbgorICog
b3JkZXIgZm9yIHRoZSByZW5kZXJlZCBlbGVtZW50IHRvIGJlIHVwZGF0ZWQuCisgKgorICogVGhl
IHJlbmRlcmVkIGVsZW1lbnQgd2lsbCBiZSBpbml0aWFsaXplZCB3aXRoIGFuIGVtcHR5IHZhbHVl
LCB0aGUgcHJvcAorICogYGRlZmF1bHRWYWx1ZWAgaWYgc3BlY2lmaWVkLCBvciB0aGUgY2hpbGRy
ZW4gY29udGVudCAoZGVwcmVjYXRlZCkuCisgKi8KK3ZhciBSZWFjdERPTVRleHRhcmVhID0gewor
ICBnZXRIb3N0UHJvcHM6IGZ1bmN0aW9uIChpbnN0LCBwcm9wcykgeworICAgICEocHJvcHMuZGFu
Z2Vyb3VzbHlTZXRJbm5lckhUTUwgPT0gbnVsbCkgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVj
dGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxgIGRvZXMg
bm90IG1ha2Ugc2Vuc2Ugb24gPHRleHRhcmVhPi4nKSA6IF9wcm9kSW52YXJpYW50KCc5MScpIDog
dm9pZCAwOworCisgICAgLy8gQWx3YXlzIHNldCBjaGlsZHJlbiB0byB0aGUgc2FtZSB0aGluZy4g
SW4gSUU5LCB0aGUgc2VsZWN0aW9uIHJhbmdlIHdpbGwKKyAgICAvLyBnZXQgcmVzZXQgaWYgYHRl
eHRDb250ZW50YCBpcyBtdXRhdGVkLiAgV2UgY291bGQgYWRkIGEgY2hlY2sgaW4gc2V0VGV4dENv
bnRlbnQKKyAgICAvLyB0byBvbmx5IHNldCB0aGUgdmFsdWUgaWYvd2hlbiB0aGUgdmFsdWUgZGlm
ZmVycyBmcm9tIHRoZSBub2RlIHZhbHVlICh3aGljaCB3b3VsZAorICAgIC8vIGNvbXBsZXRlbHkg
c29sdmUgdGhpcyBJRTkgYnVnKSwgYnV0IFNlYmFzdGlhbitCZW4gc2VlbWVkIHRvIGxpa2UgdGhp
cyBzb2x1dGlvbi4KKyAgICAvLyBUaGUgdmFsdWUgY2FuIGJlIGEgYm9vbGVhbiBvciBvYmplY3Qg
c28gdGhhdCdzIHdoeSBpdCdzIGZvcmNlZCB0byBiZSBhIHN0cmluZy4KKyAgICB2YXIgaG9zdFBy
b3BzID0gX2Fzc2lnbih7fSwgcHJvcHMsIHsKKyAgICAgIHZhbHVlOiB1bmRlZmluZWQsCisgICAg
ICBkZWZhdWx0VmFsdWU6IHVuZGVmaW5lZCwKKyAgICAgIGNoaWxkcmVuOiAnJyArIGluc3QuX3dy
YXBwZXJTdGF0ZS5pbml0aWFsVmFsdWUsCisgICAgICBvbkNoYW5nZTogaW5zdC5fd3JhcHBlclN0
YXRlLm9uQ2hhbmdlCisgICAgfSk7CisKKyAgICByZXR1cm4gaG9zdFByb3BzOworICB9LAorCisg
IG1vdW50V3JhcHBlcjogZnVuY3Rpb24gKGluc3QsIHByb3BzKSB7CisgICAgaWYgKCJkZXZlbG9w
bWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgTGlua2VkVmFsdWVVdGlscy5jaGVja1By
b3BUeXBlcygndGV4dGFyZWEnLCBwcm9wcywgaW5zdC5fY3VycmVudEVsZW1lbnQuX293bmVyKTsK
KyAgICAgIGlmIChwcm9wcy52YWx1ZUxpbmsgIT09IHVuZGVmaW5lZCAmJiAhZGlkV2FyblZhbHVl
TGluaykgeworICAgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5n
KGZhbHNlLCAnYHZhbHVlTGlua2AgcHJvcCBvbiBgdGV4dGFyZWFgIGlzIGRlcHJlY2F0ZWQ7IHNl
dCBgdmFsdWVgIGFuZCBgb25DaGFuZ2VgIGluc3RlYWQuJykgOiB2b2lkIDA7CisgICAgICAgIGRp
ZFdhcm5WYWx1ZUxpbmsgPSB0cnVlOworICAgICAgfQorICAgICAgaWYgKHByb3BzLnZhbHVlICE9
PSB1bmRlZmluZWQgJiYgcHJvcHMuZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQgJiYgIWRpZFdh
cm5WYWxEZWZhdWx0VmFsKSB7CisgICAgICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9u
JyA/IHdhcm5pbmcoZmFsc2UsICdUZXh0YXJlYSBlbGVtZW50cyBtdXN0IGJlIGVpdGhlciBjb250
cm9sbGVkIG9yIHVuY29udHJvbGxlZCAnICsgJyhzcGVjaWZ5IGVpdGhlciB0aGUgdmFsdWUgcHJv
cCwgb3IgdGhlIGRlZmF1bHRWYWx1ZSBwcm9wLCBidXQgbm90ICcgKyAnYm90aCkuIERlY2lkZSBi
ZXR3ZWVuIHVzaW5nIGEgY29udHJvbGxlZCBvciB1bmNvbnRyb2xsZWQgdGV4dGFyZWEgJyArICdh
bmQgcmVtb3ZlIG9uZSBvZiB0aGVzZSBwcm9wcy4gTW9yZSBpbmZvOiAnICsgJ2h0dHBzOi8vZmIu
bWUvcmVhY3QtY29udHJvbGxlZC1jb21wb25lbnRzJykgOiB2b2lkIDA7CisgICAgICAgIGRpZFdh
cm5WYWxEZWZhdWx0VmFsID0gdHJ1ZTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgdmFsdWUg
PSBMaW5rZWRWYWx1ZVV0aWxzLmdldFZhbHVlKHByb3BzKTsKKyAgICB2YXIgaW5pdGlhbFZhbHVl
ID0gdmFsdWU7CisKKyAgICAvLyBPbmx5IGJvdGhlciBmZXRjaGluZyBkZWZhdWx0IHZhbHVlIGlm
IHdlJ3JlIGdvaW5nIHRvIHVzZSBpdAorICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7CisgICAgICB2
YXIgZGVmYXVsdFZhbHVlID0gcHJvcHMuZGVmYXVsdFZhbHVlOworICAgICAgLy8gVE9ETyAoeXVu
Z3N0ZXJzKTogUmVtb3ZlIHN1cHBvcnQgZm9yIGNoaWxkcmVuIGNvbnRlbnQgaW4gPHRleHRhcmVh
Pi4KKyAgICAgIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuOworICAgICAgaWYgKGNoaWxk
cmVuICE9IG51bGwpIHsKKyAgICAgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9u
JykgeworICAgICAgICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmco
ZmFsc2UsICdVc2UgdGhlIGBkZWZhdWx0VmFsdWVgIG9yIGB2YWx1ZWAgcHJvcHMgaW5zdGVhZCBv
ZiBzZXR0aW5nICcgKyAnY2hpbGRyZW4gb24gPHRleHRhcmVhPi4nKSA6IHZvaWQgMDsKKyAgICAg
ICAgfQorICAgICAgICAhKGRlZmF1bHRWYWx1ZSA9PSBudWxsKSA/ICJkZXZlbG9wbWVudCIgIT09
ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0lmIHlvdSBzdXBwbHkgYGRlZmF1bHRW
YWx1ZWAgb24gYSA8dGV4dGFyZWE+LCBkbyBub3QgcGFzcyBjaGlsZHJlbi4nKSA6IF9wcm9kSW52
YXJpYW50KCc5MicpIDogdm9pZCAwOworICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJl
bikpIHsKKyAgICAgICAgICAhKGNoaWxkcmVuLmxlbmd0aCA8PSAxKSA/ICJkZXZlbG9wbWVudCIg
IT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJzx0ZXh0YXJlYT4gY2FuIG9ubHkg
aGF2ZSBhdCBtb3N0IG9uZSBjaGlsZC4nKSA6IF9wcm9kSW52YXJpYW50KCc5MycpIDogdm9pZCAw
OworICAgICAgICAgIGNoaWxkcmVuID0gY2hpbGRyZW5bMF07CisgICAgICAgIH0KKworICAgICAg
ICBkZWZhdWx0VmFsdWUgPSAnJyArIGNoaWxkcmVuOworICAgICAgfQorICAgICAgaWYgKGRlZmF1
bHRWYWx1ZSA9PSBudWxsKSB7CisgICAgICAgIGRlZmF1bHRWYWx1ZSA9ICcnOworICAgICAgfQor
ICAgICAgaW5pdGlhbFZhbHVlID0gZGVmYXVsdFZhbHVlOworICAgIH0KKworICAgIGluc3QuX3dy
YXBwZXJTdGF0ZSA9IHsKKyAgICAgIGluaXRpYWxWYWx1ZTogJycgKyBpbml0aWFsVmFsdWUsCisg
ICAgICBsaXN0ZW5lcnM6IG51bGwsCisgICAgICBvbkNoYW5nZTogX2hhbmRsZUNoYW5nZS5iaW5k
KGluc3QpCisgICAgfTsKKyAgfSwKKworICB1cGRhdGVXcmFwcGVyOiBmdW5jdGlvbiAoaW5zdCkg
eworICAgIHZhciBwcm9wcyA9IGluc3QuX2N1cnJlbnRFbGVtZW50LnByb3BzOworCisgICAgdmFy
IG5vZGUgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZShpbnN0KTsK
KyAgICB2YXIgdmFsdWUgPSBMaW5rZWRWYWx1ZVV0aWxzLmdldFZhbHVlKHByb3BzKTsKKyAgICBp
ZiAodmFsdWUgIT0gbnVsbCkgeworICAgICAgLy8gQ2FzdCBgdmFsdWVgIHRvIGEgc3RyaW5nIHRv
IGVuc3VyZSB0aGUgdmFsdWUgaXMgc2V0IGNvcnJlY3RseS4gV2hpbGUKKyAgICAgIC8vIGJyb3dz
ZXJzIHR5cGljYWxseSBkbyB0aGlzIGFzIG5lY2Vzc2FyeSwganNkb20gZG9lc24ndC4KKyAgICAg
IHZhciBuZXdWYWx1ZSA9ICcnICsgdmFsdWU7CisKKyAgICAgIC8vIFRvIGF2b2lkIHNpZGUgZWZm
ZWN0cyAoc3VjaCBhcyBsb3NpbmcgdGV4dCBzZWxlY3Rpb24pLCBvbmx5IHNldCB2YWx1ZSBpZiBj
aGFuZ2VkCisgICAgICBpZiAobmV3VmFsdWUgIT09IG5vZGUudmFsdWUpIHsKKyAgICAgICAgbm9k
ZS52YWx1ZSA9IG5ld1ZhbHVlOworICAgICAgfQorICAgICAgaWYgKHByb3BzLmRlZmF1bHRWYWx1
ZSA9PSBudWxsKSB7CisgICAgICAgIG5vZGUuZGVmYXVsdFZhbHVlID0gbmV3VmFsdWU7CisgICAg
ICB9CisgICAgfQorICAgIGlmIChwcm9wcy5kZWZhdWx0VmFsdWUgIT0gbnVsbCkgeworICAgICAg
bm9kZS5kZWZhdWx0VmFsdWUgPSBwcm9wcy5kZWZhdWx0VmFsdWU7CisgICAgfQorICB9LAorCisg
IHBvc3RNb3VudFdyYXBwZXI6IGZ1bmN0aW9uIChpbnN0KSB7CisgICAgLy8gVGhpcyBpcyBpbiBw
b3N0TW91bnQgYmVjYXVzZSB3ZSBuZWVkIGFjY2VzcyB0byB0aGUgRE9NIG5vZGUsIHdoaWNoIGlz
IG5vdAorICAgIC8vIGF2YWlsYWJsZSB1bnRpbCBhZnRlciB0aGUgY29tcG9uZW50IGhhcyBtb3Vu
dGVkLgorICAgIHZhciBub2RlID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5z
dGFuY2UoaW5zdCk7CisKKyAgICAvLyBXYXJuaW5nOiBub2RlLnZhbHVlIG1heSBiZSB0aGUgZW1w
dHkgc3RyaW5nIGF0IHRoaXMgcG9pbnQgKElFMTEpIGlmIHBsYWNlaG9sZGVyIGlzIHNldC4KKyAg
ICBub2RlLnZhbHVlID0gbm9kZS50ZXh0Q29udGVudDsgLy8gRGV0YWNoIHZhbHVlIGZyb20gZGVm
YXVsdFZhbHVlCisgIH0KK307CisKK2Z1bmN0aW9uIF9oYW5kbGVDaGFuZ2UoZXZlbnQpIHsKKyAg
dmFyIHByb3BzID0gdGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHM7CisgIHZhciByZXR1cm5WYWx1
ZSA9IExpbmtlZFZhbHVlVXRpbHMuZXhlY3V0ZU9uQ2hhbmdlKHByb3BzLCBldmVudCk7CisgIFJl
YWN0VXBkYXRlcy5hc2FwKGZvcmNlVXBkYXRlSWZNb3VudGVkLCB0aGlzKTsKKyAgcmV0dXJuIHJl
dHVyblZhbHVlOworfQorCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9NVGV4dGFyZWE7Cit9LHsi
MTE2IjoxMTYsIjE0MCI6MTQwLCIxNDciOjE0NywiMTQ4IjoxNDgsIjIzIjoyMywiMzIiOjMyLCI3
NSI6NzV9XSw0NDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENv
cHlyaWdodCAyMDE1LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1z
dHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRp
cmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBw
YXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1l
IGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJbnZhcmlh
bnQgPSBfZGVyZXFfKDExNik7CisKK3ZhciBpbnZhcmlhbnQgPSBfZGVyZXFfKDE0MCk7CisKKy8q
KgorICogUmV0dXJuIHRoZSBsb3dlc3QgY29tbW9uIGFuY2VzdG9yIG9mIEEgYW5kIEIsIG9yIG51
bGwgaWYgdGhleSBhcmUgaW4KKyAqIGRpZmZlcmVudCB0cmVlcy4KKyAqLworZnVuY3Rpb24gZ2V0
TG93ZXN0Q29tbW9uQW5jZXN0b3IoaW5zdEEsIGluc3RCKSB7CisgICEoJ19ob3N0Tm9kZScgaW4g
aW5zdEEpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNl
LCAnZ2V0Tm9kZUZyb21JbnN0YW5jZTogSW52YWxpZCBhcmd1bWVudC4nKSA6IF9wcm9kSW52YXJp
YW50KCczMycpIDogdm9pZCAwOworICAhKCdfaG9zdE5vZGUnIGluIGluc3RCKSA/ICJkZXZlbG9w
bWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2dldE5vZGVGcm9tSW5z
dGFuY2U6IEludmFsaWQgYXJndW1lbnQuJykgOiBfcHJvZEludmFyaWFudCgnMzMnKSA6IHZvaWQg
MDsKKworICB2YXIgZGVwdGhBID0gMDsKKyAgZm9yICh2YXIgdGVtcEEgPSBpbnN0QTsgdGVtcEE7
IHRlbXBBID0gdGVtcEEuX2hvc3RQYXJlbnQpIHsKKyAgICBkZXB0aEErKzsKKyAgfQorICB2YXIg
ZGVwdGhCID0gMDsKKyAgZm9yICh2YXIgdGVtcEIgPSBpbnN0QjsgdGVtcEI7IHRlbXBCID0gdGVt
cEIuX2hvc3RQYXJlbnQpIHsKKyAgICBkZXB0aEIrKzsKKyAgfQorCisgIC8vIElmIEEgaXMgZGVl
cGVyLCBjcmF3bCB1cC4KKyAgd2hpbGUgKGRlcHRoQSAtIGRlcHRoQiA+IDApIHsKKyAgICBpbnN0
QSA9IGluc3RBLl9ob3N0UGFyZW50OworICAgIGRlcHRoQS0tOworICB9CisKKyAgLy8gSWYgQiBp
cyBkZWVwZXIsIGNyYXdsIHVwLgorICB3aGlsZSAoZGVwdGhCIC0gZGVwdGhBID4gMCkgeworICAg
IGluc3RCID0gaW5zdEIuX2hvc3RQYXJlbnQ7CisgICAgZGVwdGhCLS07CisgIH0KKworICAvLyBX
YWxrIGluIGxvY2tzdGVwIHVudGlsIHdlIGZpbmQgYSBtYXRjaC4KKyAgdmFyIGRlcHRoID0gZGVw
dGhBOworICB3aGlsZSAoZGVwdGgtLSkgeworICAgIGlmIChpbnN0QSA9PT0gaW5zdEIpIHsKKyAg
ICAgIHJldHVybiBpbnN0QTsKKyAgICB9CisgICAgaW5zdEEgPSBpbnN0QS5faG9zdFBhcmVudDsK
KyAgICBpbnN0QiA9IGluc3RCLl9ob3N0UGFyZW50OworICB9CisgIHJldHVybiBudWxsOworfQor
CisvKioKKyAqIFJldHVybiBpZiBBIGlzIGFuIGFuY2VzdG9yIG9mIEIuCisgKi8KK2Z1bmN0aW9u
IGlzQW5jZXN0b3IoaW5zdEEsIGluc3RCKSB7CisgICEoJ19ob3N0Tm9kZScgaW4gaW5zdEEpID8g
ImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnaXNBbmNl
c3RvcjogSW52YWxpZCBhcmd1bWVudC4nKSA6IF9wcm9kSW52YXJpYW50KCczNScpIDogdm9pZCAw
OworICAhKCdfaG9zdE5vZGUnIGluIGluc3RCKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0
aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2lzQW5jZXN0b3I6IEludmFsaWQgYXJndW1lbnQuJykg
OiBfcHJvZEludmFyaWFudCgnMzUnKSA6IHZvaWQgMDsKKworICB3aGlsZSAoaW5zdEIpIHsKKyAg
ICBpZiAoaW5zdEIgPT09IGluc3RBKSB7CisgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAg
aW5zdEIgPSBpbnN0Qi5faG9zdFBhcmVudDsKKyAgfQorICByZXR1cm4gZmFsc2U7Cit9CisKKy8q
KgorICogUmV0dXJuIHRoZSBwYXJlbnQgaW5zdGFuY2Ugb2YgdGhlIHBhc3NlZC1pbiBpbnN0YW5j
ZS4KKyAqLworZnVuY3Rpb24gZ2V0UGFyZW50SW5zdGFuY2UoaW5zdCkgeworICAhKCdfaG9zdE5v
ZGUnIGluIGluc3QpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50
KGZhbHNlLCAnZ2V0UGFyZW50SW5zdGFuY2U6IEludmFsaWQgYXJndW1lbnQuJykgOiBfcHJvZElu
dmFyaWFudCgnMzYnKSA6IHZvaWQgMDsKKworICByZXR1cm4gaW5zdC5faG9zdFBhcmVudDsKK30K
KworLyoqCisgKiBTaW11bGF0ZXMgdGhlIHRyYXZlcnNhbCBvZiBhIHR3by1waGFzZSwgY2FwdHVy
ZS9idWJibGUgZXZlbnQgZGlzcGF0Y2guCisgKi8KK2Z1bmN0aW9uIHRyYXZlcnNlVHdvUGhhc2Uo
aW5zdCwgZm4sIGFyZykgeworICB2YXIgcGF0aCA9IFtdOworICB3aGlsZSAoaW5zdCkgeworICAg
IHBhdGgucHVzaChpbnN0KTsKKyAgICBpbnN0ID0gaW5zdC5faG9zdFBhcmVudDsKKyAgfQorICB2
YXIgaTsKKyAgZm9yIChpID0gcGF0aC5sZW5ndGg7IGktLSA+IDA7KSB7CisgICAgZm4ocGF0aFtp
XSwgJ2NhcHR1cmVkJywgYXJnKTsKKyAgfQorICBmb3IgKGkgPSAwOyBpIDwgcGF0aC5sZW5ndGg7
IGkrKykgeworICAgIGZuKHBhdGhbaV0sICdidWJibGVkJywgYXJnKTsKKyAgfQorfQorCisvKioK
KyAqIFRyYXZlcnNlcyB0aGUgSUQgaGllcmFyY2h5IGFuZCBpbnZva2VzIHRoZSBzdXBwbGllZCBg
Y2JgIG9uIGFueSBJRHMgdGhhdAorICogc2hvdWxkIHdvdWxkIHJlY2VpdmUgYSBgbW91c2VFbnRl
cmAgb3IgYG1vdXNlTGVhdmVgIGV2ZW50LgorICoKKyAqIERvZXMgbm90IGludm9rZSB0aGUgY2Fs
bGJhY2sgb24gdGhlIG5lYXJlc3QgY29tbW9uIGFuY2VzdG9yIGJlY2F1c2Ugbm90aGluZworICog
ImVudGVyZWQiIG9yICJsZWZ0IiB0aGF0IGVsZW1lbnQuCisgKi8KK2Z1bmN0aW9uIHRyYXZlcnNl
RW50ZXJMZWF2ZShmcm9tLCB0bywgZm4sIGFyZ0Zyb20sIGFyZ1RvKSB7CisgIHZhciBjb21tb24g
PSBmcm9tICYmIHRvID8gZ2V0TG93ZXN0Q29tbW9uQW5jZXN0b3IoZnJvbSwgdG8pIDogbnVsbDsK
KyAgdmFyIHBhdGhGcm9tID0gW107CisgIHdoaWxlIChmcm9tICYmIGZyb20gIT09IGNvbW1vbikg
eworICAgIHBhdGhGcm9tLnB1c2goZnJvbSk7CisgICAgZnJvbSA9IGZyb20uX2hvc3RQYXJlbnQ7
CisgIH0KKyAgdmFyIHBhdGhUbyA9IFtdOworICB3aGlsZSAodG8gJiYgdG8gIT09IGNvbW1vbikg
eworICAgIHBhdGhUby5wdXNoKHRvKTsKKyAgICB0byA9IHRvLl9ob3N0UGFyZW50OworICB9Cisg
IHZhciBpOworICBmb3IgKGkgPSAwOyBpIDwgcGF0aEZyb20ubGVuZ3RoOyBpKyspIHsKKyAgICBm
bihwYXRoRnJvbVtpXSwgJ2J1YmJsZWQnLCBhcmdGcm9tKTsKKyAgfQorICBmb3IgKGkgPSBwYXRo
VG8ubGVuZ3RoOyBpLS0gPiAwOykgeworICAgIGZuKHBhdGhUb1tpXSwgJ2NhcHR1cmVkJywgYXJn
VG8pOworICB9Cit9CisKK21vZHVsZS5leHBvcnRzID0geworICBpc0FuY2VzdG9yOiBpc0FuY2Vz
dG9yLAorICBnZXRMb3dlc3RDb21tb25BbmNlc3RvcjogZ2V0TG93ZXN0Q29tbW9uQW5jZXN0b3Is
CisgIGdldFBhcmVudEluc3RhbmNlOiBnZXRQYXJlbnRJbnN0YW5jZSwKKyAgdHJhdmVyc2VUd29Q
aGFzZTogdHJhdmVyc2VUd29QaGFzZSwKKyAgdHJhdmVyc2VFbnRlckxlYXZlOiB0cmF2ZXJzZUVu
dGVyTGVhdmUKK307Cit9LHsiMTE2IjoxMTYsIjE0MCI6MTQwfV0sNDU6W2Z1bmN0aW9uKF9kZXJl
cV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxNi1wcmVzZW50LCBGYWNl
Ym9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBj
b2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUK
KyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJl
ZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQg
aW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogCisgKi8K
KworJ3VzZSBzdHJpY3QnOworCit2YXIgUmVhY3RJbnZhbGlkU2V0U3RhdGVXYXJuaW5nSG9vayA9
IF9kZXJlcV8oNjApOwordmFyIFJlYWN0SG9zdE9wZXJhdGlvbkhpc3RvcnlIb29rID0gX2RlcmVx
Xyg1NSk7Cit2YXIgUmVhY3RDb21wb25lbnRUcmVlSG9vayA9IF9kZXJlcV8oMTIyKTsKK3ZhciBF
eGVjdXRpb25FbnZpcm9ubWVudCA9IF9kZXJlcV8oMTI2KTsKKwordmFyIHBlcmZvcm1hbmNlTm93
ID0gX2RlcmVxXygxNDUpOwordmFyIHdhcm5pbmcgPSBfZGVyZXFfKDE0Nyk7CisKK3ZhciBob29r
cyA9IFtdOwordmFyIGRpZEhvb2tUaHJvd0ZvckV2ZW50ID0ge307CisKK2Z1bmN0aW9uIGNhbGxI
b29rKGV2ZW50LCBmbiwgY29udGV4dCwgYXJnMSwgYXJnMiwgYXJnMywgYXJnNCwgYXJnNSkgewor
ICB0cnkgeworICAgIGZuLmNhbGwoY29udGV4dCwgYXJnMSwgYXJnMiwgYXJnMywgYXJnNCwgYXJn
NSk7CisgIH0gY2F0Y2ggKGUpIHsKKyAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicg
PyB3YXJuaW5nKGRpZEhvb2tUaHJvd0ZvckV2ZW50W2V2ZW50XSwgJ0V4Y2VwdGlvbiB0aHJvd24g
YnkgaG9vayB3aGlsZSBoYW5kbGluZyAlczogJXMnLCBldmVudCwgZSArICdcbicgKyBlLnN0YWNr
KSA6IHZvaWQgMDsKKyAgICBkaWRIb29rVGhyb3dGb3JFdmVudFtldmVudF0gPSB0cnVlOworICB9
Cit9CisKK2Z1bmN0aW9uIGVtaXRFdmVudChldmVudCwgYXJnMSwgYXJnMiwgYXJnMywgYXJnNCwg
YXJnNSkgeworICBmb3IgKHZhciBpID0gMDsgaSA8IGhvb2tzLmxlbmd0aDsgaSsrKSB7CisgICAg
dmFyIGhvb2sgPSBob29rc1tpXTsKKyAgICB2YXIgZm4gPSBob29rW2V2ZW50XTsKKyAgICBpZiAo
Zm4pIHsKKyAgICAgIGNhbGxIb29rKGV2ZW50LCBmbiwgaG9vaywgYXJnMSwgYXJnMiwgYXJnMywg
YXJnNCwgYXJnNSk7CisgICAgfQorICB9Cit9CisKK3ZhciBpc1Byb2ZpbGluZyA9IGZhbHNlOwor
dmFyIGZsdXNoSGlzdG9yeSA9IFtdOwordmFyIGxpZmVDeWNsZVRpbWVyU3RhY2sgPSBbXTsKK3Zh
ciBjdXJyZW50Rmx1c2hOZXN0aW5nID0gMDsKK3ZhciBjdXJyZW50Rmx1c2hNZWFzdXJlbWVudHMg
PSBbXTsKK3ZhciBjdXJyZW50Rmx1c2hTdGFydFRpbWUgPSAwOwordmFyIGN1cnJlbnRUaW1lckRl
YnVnSUQgPSBudWxsOwordmFyIGN1cnJlbnRUaW1lclN0YXJ0VGltZSA9IDA7Cit2YXIgY3VycmVu
dFRpbWVyTmVzdGVkRmx1c2hEdXJhdGlvbiA9IDA7Cit2YXIgY3VycmVudFRpbWVyVHlwZSA9IG51
bGw7CisKK3ZhciBsaWZlQ3ljbGVUaW1lckhhc1dhcm5lZCA9IGZhbHNlOworCitmdW5jdGlvbiBj
bGVhckhpc3RvcnkoKSB7CisgIFJlYWN0Q29tcG9uZW50VHJlZUhvb2sucHVyZ2VVbm1vdW50ZWRD
b21wb25lbnRzKCk7CisgIFJlYWN0SG9zdE9wZXJhdGlvbkhpc3RvcnlIb29rLmNsZWFySGlzdG9y
eSgpOworfQorCitmdW5jdGlvbiBnZXRUcmVlU25hcHNob3QocmVnaXN0ZXJlZElEcykgeworICBy
ZXR1cm4gcmVnaXN0ZXJlZElEcy5yZWR1Y2UoZnVuY3Rpb24gKHRyZWUsIGlkKSB7CisgICAgdmFy
IG93bmVySUQgPSBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldE93bmVySUQoaWQpOworICAgIHZh
ciBwYXJlbnRJRCA9IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0UGFyZW50SUQoaWQpOworICAg
IHRyZWVbaWRdID0geworICAgICAgZGlzcGxheU5hbWU6IFJlYWN0Q29tcG9uZW50VHJlZUhvb2su
Z2V0RGlzcGxheU5hbWUoaWQpLAorICAgICAgdGV4dDogUmVhY3RDb21wb25lbnRUcmVlSG9vay5n
ZXRUZXh0KGlkKSwKKyAgICAgIHVwZGF0ZUNvdW50OiBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdl
dFVwZGF0ZUNvdW50KGlkKSwKKyAgICAgIGNoaWxkSURzOiBSZWFjdENvbXBvbmVudFRyZWVIb29r
LmdldENoaWxkSURzKGlkKSwKKyAgICAgIC8vIFRleHQgbm9kZXMgZG9uJ3QgaGF2ZSBvd25lcnMg
YnV0IHRoaXMgaXMgY2xvc2UgZW5vdWdoLgorICAgICAgb3duZXJJRDogb3duZXJJRCB8fCBwYXJl
bnRJRCAmJiBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldE93bmVySUQocGFyZW50SUQpIHx8IDAs
CisgICAgICBwYXJlbnRJRDogcGFyZW50SUQKKyAgICB9OworICAgIHJldHVybiB0cmVlOworICB9
LCB7fSk7Cit9CisKK2Z1bmN0aW9uIHJlc2V0TWVhc3VyZW1lbnRzKCkgeworICB2YXIgcHJldmlv
dXNTdGFydFRpbWUgPSBjdXJyZW50Rmx1c2hTdGFydFRpbWU7CisgIHZhciBwcmV2aW91c01lYXN1
cmVtZW50cyA9IGN1cnJlbnRGbHVzaE1lYXN1cmVtZW50czsKKyAgdmFyIHByZXZpb3VzT3BlcmF0
aW9ucyA9IFJlYWN0SG9zdE9wZXJhdGlvbkhpc3RvcnlIb29rLmdldEhpc3RvcnkoKTsKKworICBp
ZiAoY3VycmVudEZsdXNoTmVzdGluZyA9PT0gMCkgeworICAgIGN1cnJlbnRGbHVzaFN0YXJ0VGlt
ZSA9IDA7CisgICAgY3VycmVudEZsdXNoTWVhc3VyZW1lbnRzID0gW107CisgICAgY2xlYXJIaXN0
b3J5KCk7CisgICAgcmV0dXJuOworICB9CisKKyAgaWYgKHByZXZpb3VzTWVhc3VyZW1lbnRzLmxl
bmd0aCB8fCBwcmV2aW91c09wZXJhdGlvbnMubGVuZ3RoKSB7CisgICAgdmFyIHJlZ2lzdGVyZWRJ
RHMgPSBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldFJlZ2lzdGVyZWRJRHMoKTsKKyAgICBmbHVz
aEhpc3RvcnkucHVzaCh7CisgICAgICBkdXJhdGlvbjogcGVyZm9ybWFuY2VOb3coKSAtIHByZXZp
b3VzU3RhcnRUaW1lLAorICAgICAgbWVhc3VyZW1lbnRzOiBwcmV2aW91c01lYXN1cmVtZW50cyB8
fCBbXSwKKyAgICAgIG9wZXJhdGlvbnM6IHByZXZpb3VzT3BlcmF0aW9ucyB8fCBbXSwKKyAgICAg
IHRyZWVTbmFwc2hvdDogZ2V0VHJlZVNuYXBzaG90KHJlZ2lzdGVyZWRJRHMpCisgICAgfSk7Cisg
IH0KKworICBjbGVhckhpc3RvcnkoKTsKKyAgY3VycmVudEZsdXNoU3RhcnRUaW1lID0gcGVyZm9y
bWFuY2VOb3coKTsKKyAgY3VycmVudEZsdXNoTWVhc3VyZW1lbnRzID0gW107Cit9CisKK2Z1bmN0
aW9uIGNoZWNrRGVidWdJRChkZWJ1Z0lEKSB7CisgIHZhciBhbGxvd1Jvb3QgPSBhcmd1bWVudHMu
bGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6
IGZhbHNlOworCisgIGlmIChhbGxvd1Jvb3QgJiYgZGVidWdJRCA9PT0gMCkgeworICAgIHJldHVy
bjsKKyAgfQorICBpZiAoIWRlYnVnSUQpIHsKKyAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVj
dGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnUmVhY3REZWJ1Z1Rvb2w6IGRlYnVnSUQgbWF5IG5vdCBi
ZSBlbXB0eS4nKSA6IHZvaWQgMDsKKyAgfQorfQorCitmdW5jdGlvbiBiZWdpbkxpZmVDeWNsZVRp
bWVyKGRlYnVnSUQsIHRpbWVyVHlwZSkgeworICBpZiAoY3VycmVudEZsdXNoTmVzdGluZyA9PT0g
MCkgeworICAgIHJldHVybjsKKyAgfQorICBpZiAoY3VycmVudFRpbWVyVHlwZSAmJiAhbGlmZUN5
Y2xlVGltZXJIYXNXYXJuZWQpIHsKKyAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicg
PyB3YXJuaW5nKGZhbHNlLCAnVGhlcmUgaXMgYW4gaW50ZXJuYWwgZXJyb3IgaW4gdGhlIFJlYWN0
IHBlcmZvcm1hbmNlIG1lYXN1cmVtZW50IGNvZGUuICcgKyAnRGlkIG5vdCBleHBlY3QgJXMgdGlt
ZXIgdG8gc3RhcnQgd2hpbGUgJXMgdGltZXIgaXMgc3RpbGwgaW4gJyArICdwcm9ncmVzcyBmb3Ig
JXMgaW5zdGFuY2UuJywgdGltZXJUeXBlLCBjdXJyZW50VGltZXJUeXBlIHx8ICdubycsIGRlYnVn
SUQgPT09IGN1cnJlbnRUaW1lckRlYnVnSUQgPyAndGhlIHNhbWUnIDogJ2Fub3RoZXInKSA6IHZv
aWQgMDsKKyAgICBsaWZlQ3ljbGVUaW1lckhhc1dhcm5lZCA9IHRydWU7CisgIH0KKyAgY3VycmVu
dFRpbWVyU3RhcnRUaW1lID0gcGVyZm9ybWFuY2VOb3coKTsKKyAgY3VycmVudFRpbWVyTmVzdGVk
Rmx1c2hEdXJhdGlvbiA9IDA7CisgIGN1cnJlbnRUaW1lckRlYnVnSUQgPSBkZWJ1Z0lEOworICBj
dXJyZW50VGltZXJUeXBlID0gdGltZXJUeXBlOworfQorCitmdW5jdGlvbiBlbmRMaWZlQ3ljbGVU
aW1lcihkZWJ1Z0lELCB0aW1lclR5cGUpIHsKKyAgaWYgKGN1cnJlbnRGbHVzaE5lc3RpbmcgPT09
IDApIHsKKyAgICByZXR1cm47CisgIH0KKyAgaWYgKGN1cnJlbnRUaW1lclR5cGUgIT09IHRpbWVy
VHlwZSAmJiAhbGlmZUN5Y2xlVGltZXJIYXNXYXJuZWQpIHsKKyAgICAiZGV2ZWxvcG1lbnQiICE9
PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnVGhlcmUgaXMgYW4gaW50ZXJuYWwgZXJy
b3IgaW4gdGhlIFJlYWN0IHBlcmZvcm1hbmNlIG1lYXN1cmVtZW50IGNvZGUuICcgKyAnV2UgZGlk
IG5vdCBleHBlY3QgJXMgdGltZXIgdG8gc3RvcCB3aGlsZSAlcyB0aW1lciBpcyBzdGlsbCBpbiAn
ICsgJ3Byb2dyZXNzIGZvciAlcyBpbnN0YW5jZS4gUGxlYXNlIHJlcG9ydCB0aGlzIGFzIGEgYnVn
IGluIFJlYWN0LicsIHRpbWVyVHlwZSwgY3VycmVudFRpbWVyVHlwZSB8fCAnbm8nLCBkZWJ1Z0lE
ID09PSBjdXJyZW50VGltZXJEZWJ1Z0lEID8gJ3RoZSBzYW1lJyA6ICdhbm90aGVyJykgOiB2b2lk
IDA7CisgICAgbGlmZUN5Y2xlVGltZXJIYXNXYXJuZWQgPSB0cnVlOworICB9CisgIGlmIChpc1By
b2ZpbGluZykgeworICAgIGN1cnJlbnRGbHVzaE1lYXN1cmVtZW50cy5wdXNoKHsKKyAgICAgIHRp
bWVyVHlwZTogdGltZXJUeXBlLAorICAgICAgaW5zdGFuY2VJRDogZGVidWdJRCwKKyAgICAgIGR1
cmF0aW9uOiBwZXJmb3JtYW5jZU5vdygpIC0gY3VycmVudFRpbWVyU3RhcnRUaW1lIC0gY3VycmVu
dFRpbWVyTmVzdGVkRmx1c2hEdXJhdGlvbgorICAgIH0pOworICB9CisgIGN1cnJlbnRUaW1lclN0
YXJ0VGltZSA9IDA7CisgIGN1cnJlbnRUaW1lck5lc3RlZEZsdXNoRHVyYXRpb24gPSAwOworICBj
dXJyZW50VGltZXJEZWJ1Z0lEID0gbnVsbDsKKyAgY3VycmVudFRpbWVyVHlwZSA9IG51bGw7Cit9
CisKK2Z1bmN0aW9uIHBhdXNlQ3VycmVudExpZmVDeWNsZVRpbWVyKCkgeworICB2YXIgY3VycmVu
dFRpbWVyID0geworICAgIHN0YXJ0VGltZTogY3VycmVudFRpbWVyU3RhcnRUaW1lLAorICAgIG5l
c3RlZEZsdXNoU3RhcnRUaW1lOiBwZXJmb3JtYW5jZU5vdygpLAorICAgIGRlYnVnSUQ6IGN1cnJl
bnRUaW1lckRlYnVnSUQsCisgICAgdGltZXJUeXBlOiBjdXJyZW50VGltZXJUeXBlCisgIH07Cisg
IGxpZmVDeWNsZVRpbWVyU3RhY2sucHVzaChjdXJyZW50VGltZXIpOworICBjdXJyZW50VGltZXJT
dGFydFRpbWUgPSAwOworICBjdXJyZW50VGltZXJOZXN0ZWRGbHVzaER1cmF0aW9uID0gMDsKKyAg
Y3VycmVudFRpbWVyRGVidWdJRCA9IG51bGw7CisgIGN1cnJlbnRUaW1lclR5cGUgPSBudWxsOwor
fQorCitmdW5jdGlvbiByZXN1bWVDdXJyZW50TGlmZUN5Y2xlVGltZXIoKSB7CisgIHZhciBfbGlm
ZUN5Y2xlVGltZXJTdGFjayQgPSBsaWZlQ3ljbGVUaW1lclN0YWNrLnBvcCgpLAorICAgICAgc3Rh
cnRUaW1lID0gX2xpZmVDeWNsZVRpbWVyU3RhY2skLnN0YXJ0VGltZSwKKyAgICAgIG5lc3RlZEZs
dXNoU3RhcnRUaW1lID0gX2xpZmVDeWNsZVRpbWVyU3RhY2skLm5lc3RlZEZsdXNoU3RhcnRUaW1l
LAorICAgICAgZGVidWdJRCA9IF9saWZlQ3ljbGVUaW1lclN0YWNrJC5kZWJ1Z0lELAorICAgICAg
dGltZXJUeXBlID0gX2xpZmVDeWNsZVRpbWVyU3RhY2skLnRpbWVyVHlwZTsKKworICB2YXIgbmVz
dGVkRmx1c2hEdXJhdGlvbiA9IHBlcmZvcm1hbmNlTm93KCkgLSBuZXN0ZWRGbHVzaFN0YXJ0VGlt
ZTsKKyAgY3VycmVudFRpbWVyU3RhcnRUaW1lID0gc3RhcnRUaW1lOworICBjdXJyZW50VGltZXJO
ZXN0ZWRGbHVzaER1cmF0aW9uICs9IG5lc3RlZEZsdXNoRHVyYXRpb247CisgIGN1cnJlbnRUaW1l
ckRlYnVnSUQgPSBkZWJ1Z0lEOworICBjdXJyZW50VGltZXJUeXBlID0gdGltZXJUeXBlOworfQor
Cit2YXIgbGFzdE1hcmtUaW1lU3RhbXAgPSAwOwordmFyIGNhblVzZVBlcmZvcm1hbmNlTWVhc3Vy
ZSA9CisvLyAkRmxvd0ZpeE1lIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9mbG93L2lzc3Vl
cy8yMzQ1Cit0eXBlb2YgcGVyZm9ybWFuY2UgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBwZXJm
b3JtYW5jZS5tYXJrID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBwZXJmb3JtYW5jZS5jbGVhck1h
cmtzID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBwZXJmb3JtYW5jZS5tZWFzdXJlID09PSAnZnVu
Y3Rpb24nICYmIHR5cGVvZiBwZXJmb3JtYW5jZS5jbGVhck1lYXN1cmVzID09PSAnZnVuY3Rpb24n
OworCitmdW5jdGlvbiBzaG91bGRNYXJrKGRlYnVnSUQpIHsKKyAgaWYgKCFpc1Byb2ZpbGluZyB8
fCAhY2FuVXNlUGVyZm9ybWFuY2VNZWFzdXJlKSB7CisgICAgcmV0dXJuIGZhbHNlOworICB9Cisg
IHZhciBlbGVtZW50ID0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRFbGVtZW50KGRlYnVnSUQp
OworICBpZiAoZWxlbWVudCA9PSBudWxsIHx8IHR5cGVvZiBlbGVtZW50ICE9PSAnb2JqZWN0Jykg
eworICAgIHJldHVybiBmYWxzZTsKKyAgfQorICB2YXIgaXNIb3N0RWxlbWVudCA9IHR5cGVvZiBl
bGVtZW50LnR5cGUgPT09ICdzdHJpbmcnOworICBpZiAoaXNIb3N0RWxlbWVudCkgeworICAgIHJl
dHVybiBmYWxzZTsKKyAgfQorICByZXR1cm4gdHJ1ZTsKK30KKworZnVuY3Rpb24gbWFya0JlZ2lu
KGRlYnVnSUQsIG1hcmtUeXBlKSB7CisgIGlmICghc2hvdWxkTWFyayhkZWJ1Z0lEKSkgeworICAg
IHJldHVybjsKKyAgfQorCisgIHZhciBtYXJrTmFtZSA9IGRlYnVnSUQgKyAnOjonICsgbWFya1R5
cGU7CisgIGxhc3RNYXJrVGltZVN0YW1wID0gcGVyZm9ybWFuY2VOb3coKTsKKyAgcGVyZm9ybWFu
Y2UubWFyayhtYXJrTmFtZSk7Cit9CisKK2Z1bmN0aW9uIG1hcmtFbmQoZGVidWdJRCwgbWFya1R5
cGUpIHsKKyAgaWYgKCFzaG91bGRNYXJrKGRlYnVnSUQpKSB7CisgICAgcmV0dXJuOworICB9CisK
KyAgdmFyIG1hcmtOYW1lID0gZGVidWdJRCArICc6OicgKyBtYXJrVHlwZTsKKyAgdmFyIGRpc3Bs
YXlOYW1lID0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXREaXNwbGF5TmFtZShkZWJ1Z0lEKSB8
fCAnVW5rbm93bic7CisKKyAgLy8gQ2hyb21lIGhhcyBhbiBpc3N1ZSBvZiBkcm9wcGluZyBtYXJr
ZXJzIHJlY29yZGVkIHRvbyBmYXN0OgorICAvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3Av
Y2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD02NDA2NTIKKyAgLy8gVG8gd29yayBhcm91bmQgdGhp
cywgd2Ugd2lsbCBub3QgcmVwb3J0IHZlcnkgc21hbGwgbWVhc3VyZW1lbnRzLgorICAvLyBJIGRl
dGVybWluZWQgdGhlIG1hZ2ljIG51bWJlciBieSB0d2Vha2luZyBpdCBiYWNrIGFuZCBmb3J0aC4K
KyAgLy8gMC4wNW1zIHdhcyBlbm91Z2ggdG8gcHJldmVudCB0aGUgaXNzdWUsIGJ1dCBJIHNldCBp
dCB0byAwLjFtcyB0byBiZSBzYWZlLgorICAvLyBXaGVuIHRoZSBidWcgaXMgZml4ZWQsIHdlIGNh
biBgbWVhc3VyZSgpYCB1bmNvbmRpdGlvbmFsbHkgaWYgd2Ugd2FudCB0by4KKyAgdmFyIHRpbWVT
dGFtcCA9IHBlcmZvcm1hbmNlTm93KCk7CisgIGlmICh0aW1lU3RhbXAgLSBsYXN0TWFya1RpbWVT
dGFtcCA+IDAuMSkgeworICAgIHZhciBtZWFzdXJlbWVudE5hbWUgPSBkaXNwbGF5TmFtZSArICcg
WycgKyBtYXJrVHlwZSArICddJzsKKyAgICBwZXJmb3JtYW5jZS5tZWFzdXJlKG1lYXN1cmVtZW50
TmFtZSwgbWFya05hbWUpOworICB9CisKKyAgcGVyZm9ybWFuY2UuY2xlYXJNYXJrcyhtYXJrTmFt
ZSk7CisgIHBlcmZvcm1hbmNlLmNsZWFyTWVhc3VyZXMobWVhc3VyZW1lbnROYW1lKTsKK30KKwor
dmFyIFJlYWN0RGVidWdUb29sID0geworICBhZGRIb29rOiBmdW5jdGlvbiAoaG9vaykgeworICAg
IGhvb2tzLnB1c2goaG9vayk7CisgIH0sCisgIHJlbW92ZUhvb2s6IGZ1bmN0aW9uIChob29rKSB7
CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBob29rcy5sZW5ndGg7IGkrKykgeworICAgICAgaWYg
KGhvb2tzW2ldID09PSBob29rKSB7CisgICAgICAgIGhvb2tzLnNwbGljZShpLCAxKTsKKyAgICAg
ICAgaS0tOworICAgICAgfQorICAgIH0KKyAgfSwKKyAgaXNQcm9maWxpbmc6IGZ1bmN0aW9uICgp
IHsKKyAgICByZXR1cm4gaXNQcm9maWxpbmc7CisgIH0sCisgIGJlZ2luUHJvZmlsaW5nOiBmdW5j
dGlvbiAoKSB7CisgICAgaWYgKGlzUHJvZmlsaW5nKSB7CisgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaXNQcm9maWxpbmcgPSB0cnVlOworICAgIGZsdXNoSGlzdG9yeS5sZW5ndGggPSAwOwor
ICAgIHJlc2V0TWVhc3VyZW1lbnRzKCk7CisgICAgUmVhY3REZWJ1Z1Rvb2wuYWRkSG9vayhSZWFj
dEhvc3RPcGVyYXRpb25IaXN0b3J5SG9vayk7CisgIH0sCisgIGVuZFByb2ZpbGluZzogZnVuY3Rp
b24gKCkgeworICAgIGlmICghaXNQcm9maWxpbmcpIHsKKyAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBpc1Byb2ZpbGluZyA9IGZhbHNlOworICAgIHJlc2V0TWVhc3VyZW1lbnRzKCk7CisgICAg
UmVhY3REZWJ1Z1Rvb2wucmVtb3ZlSG9vayhSZWFjdEhvc3RPcGVyYXRpb25IaXN0b3J5SG9vayk7
CisgIH0sCisgIGdldEZsdXNoSGlzdG9yeTogZnVuY3Rpb24gKCkgeworICAgIHJldHVybiBmbHVz
aEhpc3Rvcnk7CisgIH0sCisgIG9uQmVnaW5GbHVzaDogZnVuY3Rpb24gKCkgeworICAgIGN1cnJl
bnRGbHVzaE5lc3RpbmcrKzsKKyAgICByZXNldE1lYXN1cmVtZW50cygpOworICAgIHBhdXNlQ3Vy
cmVudExpZmVDeWNsZVRpbWVyKCk7CisgICAgZW1pdEV2ZW50KCdvbkJlZ2luRmx1c2gnKTsKKyAg
fSwKKyAgb25FbmRGbHVzaDogZnVuY3Rpb24gKCkgeworICAgIHJlc2V0TWVhc3VyZW1lbnRzKCk7
CisgICAgY3VycmVudEZsdXNoTmVzdGluZy0tOworICAgIHJlc3VtZUN1cnJlbnRMaWZlQ3ljbGVU
aW1lcigpOworICAgIGVtaXRFdmVudCgnb25FbmRGbHVzaCcpOworICB9LAorICBvbkJlZ2luTGlm
ZUN5Y2xlVGltZXI6IGZ1bmN0aW9uIChkZWJ1Z0lELCB0aW1lclR5cGUpIHsKKyAgICBjaGVja0Rl
YnVnSUQoZGVidWdJRCk7CisgICAgZW1pdEV2ZW50KCdvbkJlZ2luTGlmZUN5Y2xlVGltZXInLCBk
ZWJ1Z0lELCB0aW1lclR5cGUpOworICAgIG1hcmtCZWdpbihkZWJ1Z0lELCB0aW1lclR5cGUpOwor
ICAgIGJlZ2luTGlmZUN5Y2xlVGltZXIoZGVidWdJRCwgdGltZXJUeXBlKTsKKyAgfSwKKyAgb25F
bmRMaWZlQ3ljbGVUaW1lcjogZnVuY3Rpb24gKGRlYnVnSUQsIHRpbWVyVHlwZSkgeworICAgIGNo
ZWNrRGVidWdJRChkZWJ1Z0lEKTsKKyAgICBlbmRMaWZlQ3ljbGVUaW1lcihkZWJ1Z0lELCB0aW1l
clR5cGUpOworICAgIG1hcmtFbmQoZGVidWdJRCwgdGltZXJUeXBlKTsKKyAgICBlbWl0RXZlbnQo
J29uRW5kTGlmZUN5Y2xlVGltZXInLCBkZWJ1Z0lELCB0aW1lclR5cGUpOworICB9LAorICBvbkJl
Z2luUHJvY2Vzc2luZ0NoaWxkQ29udGV4dDogZnVuY3Rpb24gKCkgeworICAgIGVtaXRFdmVudCgn
b25CZWdpblByb2Nlc3NpbmdDaGlsZENvbnRleHQnKTsKKyAgfSwKKyAgb25FbmRQcm9jZXNzaW5n
Q2hpbGRDb250ZXh0OiBmdW5jdGlvbiAoKSB7CisgICAgZW1pdEV2ZW50KCdvbkVuZFByb2Nlc3Np
bmdDaGlsZENvbnRleHQnKTsKKyAgfSwKKyAgb25Ib3N0T3BlcmF0aW9uOiBmdW5jdGlvbiAob3Bl
cmF0aW9uKSB7CisgICAgY2hlY2tEZWJ1Z0lEKG9wZXJhdGlvbi5pbnN0YW5jZUlEKTsKKyAgICBl
bWl0RXZlbnQoJ29uSG9zdE9wZXJhdGlvbicsIG9wZXJhdGlvbik7CisgIH0sCisgIG9uU2V0U3Rh
dGU6IGZ1bmN0aW9uICgpIHsKKyAgICBlbWl0RXZlbnQoJ29uU2V0U3RhdGUnKTsKKyAgfSwKKyAg
b25TZXRDaGlsZHJlbjogZnVuY3Rpb24gKGRlYnVnSUQsIGNoaWxkRGVidWdJRHMpIHsKKyAgICBj
aGVja0RlYnVnSUQoZGVidWdJRCk7CisgICAgY2hpbGREZWJ1Z0lEcy5mb3JFYWNoKGNoZWNrRGVi
dWdJRCk7CisgICAgZW1pdEV2ZW50KCdvblNldENoaWxkcmVuJywgZGVidWdJRCwgY2hpbGREZWJ1
Z0lEcyk7CisgIH0sCisgIG9uQmVmb3JlTW91bnRDb21wb25lbnQ6IGZ1bmN0aW9uIChkZWJ1Z0lE
LCBlbGVtZW50LCBwYXJlbnREZWJ1Z0lEKSB7CisgICAgY2hlY2tEZWJ1Z0lEKGRlYnVnSUQpOwor
ICAgIGNoZWNrRGVidWdJRChwYXJlbnREZWJ1Z0lELCB0cnVlKTsKKyAgICBlbWl0RXZlbnQoJ29u
QmVmb3JlTW91bnRDb21wb25lbnQnLCBkZWJ1Z0lELCBlbGVtZW50LCBwYXJlbnREZWJ1Z0lEKTsK
KyAgICBtYXJrQmVnaW4oZGVidWdJRCwgJ21vdW50Jyk7CisgIH0sCisgIG9uTW91bnRDb21wb25l
bnQ6IGZ1bmN0aW9uIChkZWJ1Z0lEKSB7CisgICAgY2hlY2tEZWJ1Z0lEKGRlYnVnSUQpOworICAg
IG1hcmtFbmQoZGVidWdJRCwgJ21vdW50Jyk7CisgICAgZW1pdEV2ZW50KCdvbk1vdW50Q29tcG9u
ZW50JywgZGVidWdJRCk7CisgIH0sCisgIG9uQmVmb3JlVXBkYXRlQ29tcG9uZW50OiBmdW5jdGlv
biAoZGVidWdJRCwgZWxlbWVudCkgeworICAgIGNoZWNrRGVidWdJRChkZWJ1Z0lEKTsKKyAgICBl
bWl0RXZlbnQoJ29uQmVmb3JlVXBkYXRlQ29tcG9uZW50JywgZGVidWdJRCwgZWxlbWVudCk7Cisg
ICAgbWFya0JlZ2luKGRlYnVnSUQsICd1cGRhdGUnKTsKKyAgfSwKKyAgb25VcGRhdGVDb21wb25l
bnQ6IGZ1bmN0aW9uIChkZWJ1Z0lEKSB7CisgICAgY2hlY2tEZWJ1Z0lEKGRlYnVnSUQpOworICAg
IG1hcmtFbmQoZGVidWdJRCwgJ3VwZGF0ZScpOworICAgIGVtaXRFdmVudCgnb25VcGRhdGVDb21w
b25lbnQnLCBkZWJ1Z0lEKTsKKyAgfSwKKyAgb25CZWZvcmVVbm1vdW50Q29tcG9uZW50OiBmdW5j
dGlvbiAoZGVidWdJRCkgeworICAgIGNoZWNrRGVidWdJRChkZWJ1Z0lEKTsKKyAgICBlbWl0RXZl
bnQoJ29uQmVmb3JlVW5tb3VudENvbXBvbmVudCcsIGRlYnVnSUQpOworICAgIG1hcmtCZWdpbihk
ZWJ1Z0lELCAndW5tb3VudCcpOworICB9LAorICBvblVubW91bnRDb21wb25lbnQ6IGZ1bmN0aW9u
IChkZWJ1Z0lEKSB7CisgICAgY2hlY2tEZWJ1Z0lEKGRlYnVnSUQpOworICAgIG1hcmtFbmQoZGVi
dWdJRCwgJ3VubW91bnQnKTsKKyAgICBlbWl0RXZlbnQoJ29uVW5tb3VudENvbXBvbmVudCcsIGRl
YnVnSUQpOworICB9LAorICBvblRlc3RFdmVudDogZnVuY3Rpb24gKCkgeworICAgIGVtaXRFdmVu
dCgnb25UZXN0RXZlbnQnKTsKKyAgfQorfTsKKworLy8gVE9ETyByZW1vdmUgdGhlc2Ugd2hlbiBS
Ti93d3cgZ2V0cyB1cGRhdGVkCitSZWFjdERlYnVnVG9vbC5hZGREZXZ0b29sID0gUmVhY3REZWJ1
Z1Rvb2wuYWRkSG9vazsKK1JlYWN0RGVidWdUb29sLnJlbW92ZURldnRvb2wgPSBSZWFjdERlYnVn
VG9vbC5yZW1vdmVIb29rOworCitSZWFjdERlYnVnVG9vbC5hZGRIb29rKFJlYWN0SW52YWxpZFNl
dFN0YXRlV2FybmluZ0hvb2spOworUmVhY3REZWJ1Z1Rvb2wuYWRkSG9vayhSZWFjdENvbXBvbmVu
dFRyZWVIb29rKTsKK3ZhciB1cmwgPSBFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00gJiYg
d2luZG93LmxvY2F0aW9uLmhyZWYgfHwgJyc7CitpZiAoL1s/Jl1yZWFjdF9wZXJmXGIvLnRlc3Qo
dXJsKSkgeworICBSZWFjdERlYnVnVG9vbC5iZWdpblByb2ZpbGluZygpOworfQorCittb2R1bGUu
ZXhwb3J0cyA9IFJlYWN0RGVidWdUb29sOworfSx7IjEyMiI6MTIyLCIxMjYiOjEyNiwiMTQ1Ijox
NDUsIjE0NyI6MTQ3LCI1NSI6NTUsIjYwIjo2MH1dLDQ2OltmdW5jdGlvbihfZGVyZXFfLG1vZHVs
ZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIElu
Yy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBs
aWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQ
QVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmlj
dCc7CisKK3ZhciBfYXNzaWduID0gX2RlcmVxXygxNDgpOworCit2YXIgUmVhY3RVcGRhdGVzID0g
X2RlcmVxXyg3NSk7Cit2YXIgVHJhbnNhY3Rpb24gPSBfZGVyZXFfKDkzKTsKKwordmFyIGVtcHR5
RnVuY3Rpb24gPSBfZGVyZXFfKDEzMik7CisKK3ZhciBSRVNFVF9CQVRDSEVEX1VQREFURVMgPSB7
CisgIGluaXRpYWxpemU6IGVtcHR5RnVuY3Rpb24sCisgIGNsb3NlOiBmdW5jdGlvbiAoKSB7Cisg
ICAgUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneS5pc0JhdGNoaW5nVXBkYXRlcyA9IGZhbHNl
OworICB9Cit9OworCit2YXIgRkxVU0hfQkFUQ0hFRF9VUERBVEVTID0geworICBpbml0aWFsaXpl
OiBlbXB0eUZ1bmN0aW9uLAorICBjbG9zZTogUmVhY3RVcGRhdGVzLmZsdXNoQmF0Y2hlZFVwZGF0
ZXMuYmluZChSZWFjdFVwZGF0ZXMpCit9OworCit2YXIgVFJBTlNBQ1RJT05fV1JBUFBFUlMgPSBb
RkxVU0hfQkFUQ0hFRF9VUERBVEVTLCBSRVNFVF9CQVRDSEVEX1VQREFURVNdOworCitmdW5jdGlv
biBSZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5VHJhbnNhY3Rpb24oKSB7CisgIHRoaXMucmVp
bml0aWFsaXplVHJhbnNhY3Rpb24oKTsKK30KKworX2Fzc2lnbihSZWFjdERlZmF1bHRCYXRjaGlu
Z1N0cmF0ZWd5VHJhbnNhY3Rpb24ucHJvdG90eXBlLCBUcmFuc2FjdGlvbiwgeworICBnZXRUcmFu
c2FjdGlvbldyYXBwZXJzOiBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIFRSQU5TQUNUSU9OX1dS
QVBQRVJTOworICB9Cit9KTsKKwordmFyIHRyYW5zYWN0aW9uID0gbmV3IFJlYWN0RGVmYXVsdEJh
dGNoaW5nU3RyYXRlZ3lUcmFuc2FjdGlvbigpOworCit2YXIgUmVhY3REZWZhdWx0QmF0Y2hpbmdT
dHJhdGVneSA9IHsKKyAgaXNCYXRjaGluZ1VwZGF0ZXM6IGZhbHNlLAorCisgIC8qKgorICAgKiBD
YWxsIHRoZSBwcm92aWRlZCBmdW5jdGlvbiBpbiBhIGNvbnRleHQgd2l0aGluIHdoaWNoIGNhbGxz
IHRvIGBzZXRTdGF0ZWAKKyAgICogYW5kIGZyaWVuZHMgYXJlIGJhdGNoZWQgc3VjaCB0aGF0IGNv
bXBvbmVudHMgYXJlbid0IHVwZGF0ZWQgdW5uZWNlc3NhcmlseS4KKyAgICovCisgIGJhdGNoZWRV
cGRhdGVzOiBmdW5jdGlvbiAoY2FsbGJhY2ssIGEsIGIsIGMsIGQsIGUpIHsKKyAgICB2YXIgYWxy
ZWFkeUJhdGNoaW5nVXBkYXRlcyA9IFJlYWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3kuaXNCYXRj
aGluZ1VwZGF0ZXM7CisKKyAgICBSZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5LmlzQmF0Y2hp
bmdVcGRhdGVzID0gdHJ1ZTsKKworICAgIC8vIFRoZSBjb2RlIGlzIHdyaXR0ZW4gdGhpcyB3YXkg
dG8gYXZvaWQgZXh0cmEgYWxsb2NhdGlvbnMKKyAgICBpZiAoYWxyZWFkeUJhdGNoaW5nVXBkYXRl
cykgeworICAgICAgcmV0dXJuIGNhbGxiYWNrKGEsIGIsIGMsIGQsIGUpOworICAgIH0gZWxzZSB7
CisgICAgICByZXR1cm4gdHJhbnNhY3Rpb24ucGVyZm9ybShjYWxsYmFjaywgbnVsbCwgYSwgYiwg
YywgZCwgZSk7CisgICAgfQorICB9Cit9OworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0RGVmYXVs
dEJhdGNoaW5nU3RyYXRlZ3k7Cit9LHsiMTMyIjoxMzIsIjE0OCI6MTQ4LCI3NSI6NzUsIjkzIjo5
M31dLDQ3OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJp
Z2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxl
IGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0
b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVu
dCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGly
ZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBBUklBRE9NUHJvcGVydHlD
b25maWcgPSBfZGVyZXFfKDEpOwordmFyIEJlZm9yZUlucHV0RXZlbnRQbHVnaW4gPSBfZGVyZXFf
KDMpOwordmFyIENoYW5nZUV2ZW50UGx1Z2luID0gX2RlcmVxXyg3KTsKK3ZhciBEZWZhdWx0RXZl
bnRQbHVnaW5PcmRlciA9IF9kZXJlcV8oMTQpOwordmFyIEVudGVyTGVhdmVFdmVudFBsdWdpbiA9
IF9kZXJlcV8oMTUpOwordmFyIEhUTUxET01Qcm9wZXJ0eUNvbmZpZyA9IF9kZXJlcV8oMjEpOwor
dmFyIFJlYWN0Q29tcG9uZW50QnJvd3NlckVudmlyb25tZW50ID0gX2RlcmVxXygyNyk7Cit2YXIg
UmVhY3RET01Db21wb25lbnQgPSBfZGVyZXFfKDMwKTsKK3ZhciBSZWFjdERPTUNvbXBvbmVudFRy
ZWUgPSBfZGVyZXFfKDMyKTsKK3ZhciBSZWFjdERPTUVtcHR5Q29tcG9uZW50ID0gX2RlcmVxXygz
NCk7Cit2YXIgUmVhY3RET01UcmVlVHJhdmVyc2FsID0gX2RlcmVxXyg0NCk7Cit2YXIgUmVhY3RE
T01UZXh0Q29tcG9uZW50ID0gX2RlcmVxXyg0Mik7Cit2YXIgUmVhY3REZWZhdWx0QmF0Y2hpbmdT
dHJhdGVneSA9IF9kZXJlcV8oNDYpOwordmFyIFJlYWN0RXZlbnRMaXN0ZW5lciA9IF9kZXJlcV8o
NTIpOwordmFyIFJlYWN0SW5qZWN0aW9uID0gX2RlcmVxXyg1Nik7Cit2YXIgUmVhY3RSZWNvbmNp
bGVUcmFuc2FjdGlvbiA9IF9kZXJlcV8oNjcpOwordmFyIFNWR0RPTVByb3BlcnR5Q29uZmlnID0g
X2RlcmVxXyg3Nyk7Cit2YXIgU2VsZWN0RXZlbnRQbHVnaW4gPSBfZGVyZXFfKDc4KTsKK3ZhciBT
aW1wbGVFdmVudFBsdWdpbiA9IF9kZXJlcV8oNzkpOworCit2YXIgYWxyZWFkeUluamVjdGVkID0g
ZmFsc2U7CisKK2Z1bmN0aW9uIGluamVjdCgpIHsKKyAgaWYgKGFscmVhZHlJbmplY3RlZCkgewor
ICAgIC8vIFRPRE86IFRoaXMgaXMgY3VycmVudGx5IHRydWUgYmVjYXVzZSB0aGVzZSBpbmplY3Rp
b25zIGFyZSBzaGFyZWQgYmV0d2VlbgorICAgIC8vIHRoZSBjbGllbnQgYW5kIHRoZSBzZXJ2ZXIg
cGFja2FnZS4gVGhleSBzaG91bGQgYmUgYnVpbHQgaW5kZXBlbmRlbnRseQorICAgIC8vIGFuZCBu
b3Qgc2hhcmUgYW55IGluamVjdGlvbiBzdGF0ZS4gVGhlbiB0aGlzIHByb2JsZW0gd2lsbCBiZSBz
b2x2ZWQuCisgICAgcmV0dXJuOworICB9CisgIGFscmVhZHlJbmplY3RlZCA9IHRydWU7CisKKyAg
UmVhY3RJbmplY3Rpb24uRXZlbnRFbWl0dGVyLmluamVjdFJlYWN0RXZlbnRMaXN0ZW5lcihSZWFj
dEV2ZW50TGlzdGVuZXIpOworCisgIC8qKgorICAgKiBJbmplY3QgbW9kdWxlcyBmb3IgcmVzb2x2
aW5nIERPTSBoaWVyYXJjaHkgYW5kIHBsdWdpbiBvcmRlcmluZy4KKyAgICovCisgIFJlYWN0SW5q
ZWN0aW9uLkV2ZW50UGx1Z2luSHViLmluamVjdEV2ZW50UGx1Z2luT3JkZXIoRGVmYXVsdEV2ZW50
UGx1Z2luT3JkZXIpOworICBSZWFjdEluamVjdGlvbi5FdmVudFBsdWdpblV0aWxzLmluamVjdENv
bXBvbmVudFRyZWUoUmVhY3RET01Db21wb25lbnRUcmVlKTsKKyAgUmVhY3RJbmplY3Rpb24uRXZl
bnRQbHVnaW5VdGlscy5pbmplY3RUcmVlVHJhdmVyc2FsKFJlYWN0RE9NVHJlZVRyYXZlcnNhbCk7
CisKKyAgLyoqCisgICAqIFNvbWUgaW1wb3J0YW50IGV2ZW50IHBsdWdpbnMgaW5jbHVkZWQgYnkg
ZGVmYXVsdCAod2l0aG91dCBoYXZpbmcgdG8gcmVxdWlyZQorICAgKiB0aGVtKS4KKyAgICovCisg
IFJlYWN0SW5qZWN0aW9uLkV2ZW50UGx1Z2luSHViLmluamVjdEV2ZW50UGx1Z2luc0J5TmFtZSh7
CisgICAgU2ltcGxlRXZlbnRQbHVnaW46IFNpbXBsZUV2ZW50UGx1Z2luLAorICAgIEVudGVyTGVh
dmVFdmVudFBsdWdpbjogRW50ZXJMZWF2ZUV2ZW50UGx1Z2luLAorICAgIENoYW5nZUV2ZW50UGx1
Z2luOiBDaGFuZ2VFdmVudFBsdWdpbiwKKyAgICBTZWxlY3RFdmVudFBsdWdpbjogU2VsZWN0RXZl
bnRQbHVnaW4sCisgICAgQmVmb3JlSW5wdXRFdmVudFBsdWdpbjogQmVmb3JlSW5wdXRFdmVudFBs
dWdpbgorICB9KTsKKworICBSZWFjdEluamVjdGlvbi5Ib3N0Q29tcG9uZW50LmluamVjdEdlbmVy
aWNDb21wb25lbnRDbGFzcyhSZWFjdERPTUNvbXBvbmVudCk7CisKKyAgUmVhY3RJbmplY3Rpb24u
SG9zdENvbXBvbmVudC5pbmplY3RUZXh0Q29tcG9uZW50Q2xhc3MoUmVhY3RET01UZXh0Q29tcG9u
ZW50KTsKKworICBSZWFjdEluamVjdGlvbi5ET01Qcm9wZXJ0eS5pbmplY3RET01Qcm9wZXJ0eUNv
bmZpZyhBUklBRE9NUHJvcGVydHlDb25maWcpOworICBSZWFjdEluamVjdGlvbi5ET01Qcm9wZXJ0
eS5pbmplY3RET01Qcm9wZXJ0eUNvbmZpZyhIVE1MRE9NUHJvcGVydHlDb25maWcpOworICBSZWFj
dEluamVjdGlvbi5ET01Qcm9wZXJ0eS5pbmplY3RET01Qcm9wZXJ0eUNvbmZpZyhTVkdET01Qcm9w
ZXJ0eUNvbmZpZyk7CisKKyAgUmVhY3RJbmplY3Rpb24uRW1wdHlDb21wb25lbnQuaW5qZWN0RW1w
dHlDb21wb25lbnRGYWN0b3J5KGZ1bmN0aW9uIChpbnN0YW50aWF0ZSkgeworICAgIHJldHVybiBu
ZXcgUmVhY3RET01FbXB0eUNvbXBvbmVudChpbnN0YW50aWF0ZSk7CisgIH0pOworCisgIFJlYWN0
SW5qZWN0aW9uLlVwZGF0ZXMuaW5qZWN0UmVjb25jaWxlVHJhbnNhY3Rpb24oUmVhY3RSZWNvbmNp
bGVUcmFuc2FjdGlvbik7CisgIFJlYWN0SW5qZWN0aW9uLlVwZGF0ZXMuaW5qZWN0QmF0Y2hpbmdT
dHJhdGVneShSZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5KTsKKworICBSZWFjdEluamVjdGlv
bi5Db21wb25lbnQuaW5qZWN0RW52aXJvbm1lbnQoUmVhY3RDb21wb25lbnRCcm93c2VyRW52aXJv
bm1lbnQpOworfQorCittb2R1bGUuZXhwb3J0cyA9IHsKKyAgaW5qZWN0OiBpbmplY3QKK307Cit9
LHsiMSI6MSwiMTQiOjE0LCIxNSI6MTUsIjIxIjoyMSwiMjciOjI3LCIzIjozLCIzMCI6MzAsIjMy
IjozMiwiMzQiOjM0LCI0MiI6NDIsIjQ0Ijo0NCwiNDYiOjQ2LCI1MiI6NTIsIjU2Ijo1NiwiNjci
OjY3LCI3Ijo3LCI3NyI6NzcsIjc4Ijo3OCwiNzkiOjc5fV0sNDg6W2Z1bmN0aW9uKF9kZXJlcV8s
bW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50LCBGYWNlYm9v
aywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAq
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4g
QW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogCisgKi8KKwor
J3VzZSBzdHJpY3QnOworCisvLyBUaGUgU3ltYm9sIHVzZWQgdG8gdGFnIHRoZSBSZWFjdEVsZW1l
bnQgdHlwZS4gSWYgdGhlcmUgaXMgbm8gbmF0aXZlIFN5bWJvbAorLy8gbm9yIHBvbHlmaWxsLCB0
aGVuIGEgcGxhaW4gbnVtYmVyIGlzIHVzZWQgZm9yIHBlcmZvcm1hbmNlLgorCit2YXIgUkVBQ1Rf
RUxFTUVOVF9UWVBFID0gdHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiBTeW1ib2xbJ2Zv
ciddICYmIFN5bWJvbFsnZm9yJ10oJ3JlYWN0LmVsZW1lbnQnKSB8fCAweGVhYzc7CisKK21vZHVs
ZS5leHBvcnRzID0gUkVBQ1RfRUxFTUVOVF9UWVBFOworfSx7fV0sNDk6W2Z1bmN0aW9uKF9kZXJl
cV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50LCBGYWNl
Ym9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBj
b2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUK
KyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJl
ZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQg
aW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1
c2Ugc3RyaWN0JzsKKwordmFyIGVtcHR5Q29tcG9uZW50RmFjdG9yeTsKKwordmFyIFJlYWN0RW1w
dHlDb21wb25lbnRJbmplY3Rpb24gPSB7CisgIGluamVjdEVtcHR5Q29tcG9uZW50RmFjdG9yeTog
ZnVuY3Rpb24gKGZhY3RvcnkpIHsKKyAgICBlbXB0eUNvbXBvbmVudEZhY3RvcnkgPSBmYWN0b3J5
OworICB9Cit9OworCit2YXIgUmVhY3RFbXB0eUNvbXBvbmVudCA9IHsKKyAgY3JlYXRlOiBmdW5j
dGlvbiAoaW5zdGFudGlhdGUpIHsKKyAgICByZXR1cm4gZW1wdHlDb21wb25lbnRGYWN0b3J5KGlu
c3RhbnRpYXRlKTsKKyAgfQorfTsKKworUmVhY3RFbXB0eUNvbXBvbmVudC5pbmplY3Rpb24gPSBS
ZWFjdEVtcHR5Q29tcG9uZW50SW5qZWN0aW9uOworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0RW1w
dHlDb21wb25lbnQ7Cit9LHt9XSw1MDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7
CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5k
ZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdy
YW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxl
IGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiAKKyAqLworCisndXNlIHN0cmljdCc7CisK
K3ZhciBjYXVnaHRFcnJvciA9IG51bGw7CisKKy8qKgorICogQ2FsbCBhIGZ1bmN0aW9uIHdoaWxl
IGd1YXJkaW5nIGFnYWluc3QgZXJyb3JzIHRoYXQgaGFwcGVucyB3aXRoaW4gaXQuCisgKgorICog
QHBhcmFtIHtTdHJpbmd9IG5hbWUgb2YgdGhlIGd1YXJkIHRvIHVzZSBmb3IgbG9nZ2luZyBvciBk
ZWJ1Z2dpbmcKKyAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGludm9r
ZQorICogQHBhcmFtIHsqfSBhIEZpcnN0IGFyZ3VtZW50CisgKiBAcGFyYW0geyp9IGIgU2Vjb25k
IGFyZ3VtZW50CisgKi8KK2Z1bmN0aW9uIGludm9rZUd1YXJkZWRDYWxsYmFjayhuYW1lLCBmdW5j
LCBhKSB7CisgIHRyeSB7CisgICAgZnVuYyhhKTsKKyAgfSBjYXRjaCAoeCkgeworICAgIGlmIChj
YXVnaHRFcnJvciA9PT0gbnVsbCkgeworICAgICAgY2F1Z2h0RXJyb3IgPSB4OworICAgIH0KKyAg
fQorfQorCit2YXIgUmVhY3RFcnJvclV0aWxzID0geworICBpbnZva2VHdWFyZGVkQ2FsbGJhY2s6
IGludm9rZUd1YXJkZWRDYWxsYmFjaywKKworICAvKioKKyAgICogSW52b2tlZCBieSBSZWFjdFRl
c3RVdGlscy5TaW11bGF0ZSBzbyB0aGF0IGFueSBlcnJvcnMgdGhyb3duIGJ5IHRoZSBldmVudAor
ICAgKiBoYW5kbGVyIGFyZSBzdXJlIHRvIGJlIHJldGhyb3duIGJ5IHJldGhyb3dDYXVnaHRFcnJv
ci4KKyAgICovCisgIGludm9rZUd1YXJkZWRDYWxsYmFja1dpdGhDYXRjaDogaW52b2tlR3VhcmRl
ZENhbGxiYWNrLAorCisgIC8qKgorICAgKiBEdXJpbmcgZXhlY3V0aW9uIG9mIGd1YXJkZWQgZnVu
Y3Rpb25zIHdlIHdpbGwgY2FwdHVyZSB0aGUgZmlyc3QgZXJyb3Igd2hpY2gKKyAgICogd2Ugd2ls
bCByZXRocm93IHRvIGJlIGhhbmRsZWQgYnkgdGhlIHRvcCBsZXZlbCBlcnJvciBoYW5kbGVyLgor
ICAgKi8KKyAgcmV0aHJvd0NhdWdodEVycm9yOiBmdW5jdGlvbiAoKSB7CisgICAgaWYgKGNhdWdo
dEVycm9yKSB7CisgICAgICB2YXIgZXJyb3IgPSBjYXVnaHRFcnJvcjsKKyAgICAgIGNhdWdodEVy
cm9yID0gbnVsbDsKKyAgICAgIHRocm93IGVycm9yOworICAgIH0KKyAgfQorfTsKKworaWYgKCJk
ZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAvKioKKyAgICogVG8gaGVscCBkZXZl
bG9wbWVudCB3ZSBjYW4gZ2V0IGJldHRlciBkZXZ0b29scyBpbnRlZ3JhdGlvbiBieSBzaW11bGF0
aW5nIGEKKyAgICogcmVhbCBicm93c2VyIGV2ZW50LgorICAgKi8KKyAgaWYgKHR5cGVvZiB3aW5k
b3cgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiB3aW5kb3cuZGlzcGF0Y2hFdmVudCA9PT0gJ2Z1
bmN0aW9uJyAmJiB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBkb2N1
bWVudC5jcmVhdGVFdmVudCA9PT0gJ2Z1bmN0aW9uJykgeworICAgIHZhciBmYWtlTm9kZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3JlYWN0Jyk7CisgICAgUmVhY3RFcnJvclV0aWxzLmludm9r
ZUd1YXJkZWRDYWxsYmFjayA9IGZ1bmN0aW9uIChuYW1lLCBmdW5jLCBhKSB7CisgICAgICB2YXIg
Ym91bmRGdW5jID0gZnVuYy5iaW5kKG51bGwsIGEpOworICAgICAgdmFyIGV2dFR5cGUgPSAncmVh
Y3QtJyArIG5hbWU7CisgICAgICBmYWtlTm9kZS5hZGRFdmVudExpc3RlbmVyKGV2dFR5cGUsIGJv
dW5kRnVuYywgZmFsc2UpOworICAgICAgdmFyIGV2dCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdF
dmVudCcpOworICAgICAgLy8gJEZsb3dGaXhNZSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2sv
Zmxvdy9pc3N1ZXMvMjMzNgorICAgICAgZXZ0LmluaXRFdmVudChldnRUeXBlLCBmYWxzZSwgZmFs
c2UpOworICAgICAgZmFrZU5vZGUuZGlzcGF0Y2hFdmVudChldnQpOworICAgICAgZmFrZU5vZGUu
cmVtb3ZlRXZlbnRMaXN0ZW5lcihldnRUeXBlLCBib3VuZEZ1bmMsIGZhbHNlKTsKKyAgICB9Owor
ICB9Cit9CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RFcnJvclV0aWxzOworfSx7fV0sNTE6W2Z1
bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1w
cmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBU
aGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBm
b3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBj
YW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisg
KgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIEV2ZW50UGx1Z2luSHViID0gX2RlcmVxXygx
Nik7CisKK2Z1bmN0aW9uIHJ1bkV2ZW50UXVldWVJbkJhdGNoKGV2ZW50cykgeworICBFdmVudFBs
dWdpbkh1Yi5lbnF1ZXVlRXZlbnRzKGV2ZW50cyk7CisgIEV2ZW50UGx1Z2luSHViLnByb2Nlc3NF
dmVudFF1ZXVlKGZhbHNlKTsKK30KKwordmFyIFJlYWN0RXZlbnRFbWl0dGVyTWl4aW4gPSB7CisK
KyAgLyoqCisgICAqIFN0cmVhbXMgYSBmaXJlZCB0b3AtbGV2ZWwgZXZlbnQgdG8gYEV2ZW50UGx1
Z2luSHViYCB3aGVyZSBwbHVnaW5zIGhhdmUgdGhlCisgICAqIG9wcG9ydHVuaXR5IHRvIGNyZWF0
ZSBgUmVhY3RFdmVudGBzIHRvIGJlIGRpc3BhdGNoZWQuCisgICAqLworICBoYW5kbGVUb3BMZXZl
bDogZnVuY3Rpb24gKHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2
ZUV2ZW50VGFyZ2V0KSB7CisgICAgdmFyIGV2ZW50cyA9IEV2ZW50UGx1Z2luSHViLmV4dHJhY3RF
dmVudHModG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRU
YXJnZXQpOworICAgIHJ1bkV2ZW50UXVldWVJbkJhdGNoKGV2ZW50cyk7CisgIH0KK307CisKK21v
ZHVsZS5leHBvcnRzID0gUmVhY3RFdmVudEVtaXR0ZXJNaXhpbjsKK30seyIxNiI6MTZ9XSw1Mjpb
ZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEz
LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNl
IGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0
aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRz
IGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4K
KyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX2Fzc2lnbiA9IF9kZXJlcV8oMTQ4KTsK
KwordmFyIEV2ZW50TGlzdGVuZXIgPSBfZGVyZXFfKDEyNSk7Cit2YXIgRXhlY3V0aW9uRW52aXJv
bm1lbnQgPSBfZGVyZXFfKDEyNik7Cit2YXIgUG9vbGVkQ2xhc3MgPSBfZGVyZXFfKDI0KTsKK3Zh
ciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSBfZGVyZXFfKDMyKTsKK3ZhciBSZWFjdFVwZGF0ZXMg
PSBfZGVyZXFfKDc1KTsKKwordmFyIGdldEV2ZW50VGFyZ2V0ID0gX2RlcmVxXygxMDYpOwordmFy
IGdldFVuYm91bmRlZFNjcm9sbFBvc2l0aW9uID0gX2RlcmVxXygxMzcpOworCisvKioKKyAqIEZp
bmQgdGhlIGRlZXBlc3QgUmVhY3QgY29tcG9uZW50IGNvbXBsZXRlbHkgY29udGFpbmluZyB0aGUg
cm9vdCBvZiB0aGUKKyAqIHBhc3NlZC1pbiBpbnN0YW5jZSAoZm9yIHVzZSB3aGVuIGVudGlyZSBS
ZWFjdCB0cmVlcyBhcmUgbmVzdGVkIHdpdGhpbiBlYWNoCisgKiBvdGhlcikuIElmIFJlYWN0IHRy
ZWVzIGFyZSBub3QgbmVzdGVkLCByZXR1cm5zIG51bGwuCisgKi8KK2Z1bmN0aW9uIGZpbmRQYXJl
bnQoaW5zdCkgeworICAvLyBUT0RPOiBJdCBtYXkgYmUgYSBnb29kIGlkZWEgdG8gY2FjaGUgdGhp
cyB0byBwcmV2ZW50IHVubmVjZXNzYXJ5IERPTQorICAvLyB0cmF2ZXJzYWwsIGJ1dCBjYWNoaW5n
IGlzIGRpZmZpY3VsdCB0byBkbyBjb3JyZWN0bHkgd2l0aG91dCB1c2luZyBhCisgIC8vIG11dGF0
aW9uIG9ic2VydmVyIHRvIGxpc3RlbiBmb3IgYWxsIERPTSBjaGFuZ2VzLgorICB3aGlsZSAoaW5z
dC5faG9zdFBhcmVudCkgeworICAgIGluc3QgPSBpbnN0Ll9ob3N0UGFyZW50OworICB9CisgIHZh
ciByb290Tm9kZSA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKGlu
c3QpOworICB2YXIgY29udGFpbmVyID0gcm9vdE5vZGUucGFyZW50Tm9kZTsKKyAgcmV0dXJuIFJl
YWN0RE9NQ29tcG9uZW50VHJlZS5nZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZShjb250YWluZXIp
OworfQorCisvLyBVc2VkIHRvIHN0b3JlIGFuY2VzdG9yIGhpZXJhcmNoeSBpbiB0b3AgbGV2ZWwg
Y2FsbGJhY2sKK2Z1bmN0aW9uIFRvcExldmVsQ2FsbGJhY2tCb29rS2VlcGluZyh0b3BMZXZlbFR5
cGUsIG5hdGl2ZUV2ZW50KSB7CisgIHRoaXMudG9wTGV2ZWxUeXBlID0gdG9wTGV2ZWxUeXBlOwor
ICB0aGlzLm5hdGl2ZUV2ZW50ID0gbmF0aXZlRXZlbnQ7CisgIHRoaXMuYW5jZXN0b3JzID0gW107
Cit9CitfYXNzaWduKFRvcExldmVsQ2FsbGJhY2tCb29rS2VlcGluZy5wcm90b3R5cGUsIHsKKyAg
ZGVzdHJ1Y3RvcjogZnVuY3Rpb24gKCkgeworICAgIHRoaXMudG9wTGV2ZWxUeXBlID0gbnVsbDsK
KyAgICB0aGlzLm5hdGl2ZUV2ZW50ID0gbnVsbDsKKyAgICB0aGlzLmFuY2VzdG9ycy5sZW5ndGgg
PSAwOworICB9Cit9KTsKK1Bvb2xlZENsYXNzLmFkZFBvb2xpbmdUbyhUb3BMZXZlbENhbGxiYWNr
Qm9va0tlZXBpbmcsIFBvb2xlZENsYXNzLnR3b0FyZ3VtZW50UG9vbGVyKTsKKworZnVuY3Rpb24g
aGFuZGxlVG9wTGV2ZWxJbXBsKGJvb2tLZWVwaW5nKSB7CisgIHZhciBuYXRpdmVFdmVudFRhcmdl
dCA9IGdldEV2ZW50VGFyZ2V0KGJvb2tLZWVwaW5nLm5hdGl2ZUV2ZW50KTsKKyAgdmFyIHRhcmdl
dEluc3QgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGUo
bmF0aXZlRXZlbnRUYXJnZXQpOworCisgIC8vIExvb3AgdGhyb3VnaCB0aGUgaGllcmFyY2h5LCBp
biBjYXNlIHRoZXJlJ3MgYW55IG5lc3RlZCBjb21wb25lbnRzLgorICAvLyBJdCdzIGltcG9ydGFu
dCB0aGF0IHdlIGJ1aWxkIHRoZSBhcnJheSBvZiBhbmNlc3RvcnMgYmVmb3JlIGNhbGxpbmcgYW55
CisgIC8vIGV2ZW50IGhhbmRsZXJzLCBiZWNhdXNlIGV2ZW50IGhhbmRsZXJzIGNhbiBtb2RpZnkg
dGhlIERPTSwgbGVhZGluZyB0bworICAvLyBpbmNvbnNpc3RlbmNpZXMgd2l0aCBSZWFjdE1vdW50
J3Mgbm9kZSBjYWNoZS4gU2VlICMxMTA1LgorICB2YXIgYW5jZXN0b3IgPSB0YXJnZXRJbnN0Owor
ICBkbyB7CisgICAgYm9va0tlZXBpbmcuYW5jZXN0b3JzLnB1c2goYW5jZXN0b3IpOworICAgIGFu
Y2VzdG9yID0gYW5jZXN0b3IgJiYgZmluZFBhcmVudChhbmNlc3Rvcik7CisgIH0gd2hpbGUgKGFu
Y2VzdG9yKTsKKworICBmb3IgKHZhciBpID0gMDsgaSA8IGJvb2tLZWVwaW5nLmFuY2VzdG9ycy5s
ZW5ndGg7IGkrKykgeworICAgIHRhcmdldEluc3QgPSBib29rS2VlcGluZy5hbmNlc3RvcnNbaV07
CisgICAgUmVhY3RFdmVudExpc3RlbmVyLl9oYW5kbGVUb3BMZXZlbChib29rS2VlcGluZy50b3BM
ZXZlbFR5cGUsIHRhcmdldEluc3QsIGJvb2tLZWVwaW5nLm5hdGl2ZUV2ZW50LCBnZXRFdmVudFRh
cmdldChib29rS2VlcGluZy5uYXRpdmVFdmVudCkpOworICB9Cit9CisKK2Z1bmN0aW9uIHNjcm9s
bFZhbHVlTW9uaXRvcihjYikgeworICB2YXIgc2Nyb2xsUG9zaXRpb24gPSBnZXRVbmJvdW5kZWRT
Y3JvbGxQb3NpdGlvbih3aW5kb3cpOworICBjYihzY3JvbGxQb3NpdGlvbik7Cit9CisKK3ZhciBS
ZWFjdEV2ZW50TGlzdGVuZXIgPSB7CisgIF9lbmFibGVkOiB0cnVlLAorICBfaGFuZGxlVG9wTGV2
ZWw6IG51bGwsCisKKyAgV0lORE9XX0hBTkRMRTogRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNl
RE9NID8gd2luZG93IDogbnVsbCwKKworICBzZXRIYW5kbGVUb3BMZXZlbDogZnVuY3Rpb24gKGhh
bmRsZVRvcExldmVsKSB7CisgICAgUmVhY3RFdmVudExpc3RlbmVyLl9oYW5kbGVUb3BMZXZlbCA9
IGhhbmRsZVRvcExldmVsOworICB9LAorCisgIHNldEVuYWJsZWQ6IGZ1bmN0aW9uIChlbmFibGVk
KSB7CisgICAgUmVhY3RFdmVudExpc3RlbmVyLl9lbmFibGVkID0gISFlbmFibGVkOworICB9LAor
CisgIGlzRW5hYmxlZDogZnVuY3Rpb24gKCkgeworICAgIHJldHVybiBSZWFjdEV2ZW50TGlzdGVu
ZXIuX2VuYWJsZWQ7CisgIH0sCisKKyAgLyoqCisgICAqIFRyYXBzIHRvcC1sZXZlbCBldmVudHMg
YnkgdXNpbmcgZXZlbnQgYnViYmxpbmcuCisgICAqCisgICAqIEBwYXJhbSB7c3RyaW5nfSB0b3BM
ZXZlbFR5cGUgUmVjb3JkIGZyb20gYEV2ZW50Q29uc3RhbnRzYC4KKyAgICogQHBhcmFtIHtzdHJp
bmd9IGhhbmRsZXJCYXNlTmFtZSBFdmVudCBuYW1lIChlLmcuICJjbGljayIpLgorICAgKiBAcGFy
YW0ge29iamVjdH0gZWxlbWVudCBFbGVtZW50IG9uIHdoaWNoIHRvIGF0dGFjaCBsaXN0ZW5lci4K
KyAgICogQHJldHVybiB7P29iamVjdH0gQW4gb2JqZWN0IHdpdGggYSByZW1vdmUgZnVuY3Rpb24g
d2hpY2ggd2lsbCBmb3JjZWZ1bGx5CisgICAqICAgICAgICAgICAgICAgICAgcmVtb3ZlIHRoZSBs
aXN0ZW5lci4KKyAgICogQGludGVybmFsCisgICAqLworICB0cmFwQnViYmxlZEV2ZW50OiBmdW5j
dGlvbiAodG9wTGV2ZWxUeXBlLCBoYW5kbGVyQmFzZU5hbWUsIGVsZW1lbnQpIHsKKyAgICBpZiAo
IWVsZW1lbnQpIHsKKyAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAgICByZXR1cm4gRXZlbnRM
aXN0ZW5lci5saXN0ZW4oZWxlbWVudCwgaGFuZGxlckJhc2VOYW1lLCBSZWFjdEV2ZW50TGlzdGVu
ZXIuZGlzcGF0Y2hFdmVudC5iaW5kKG51bGwsIHRvcExldmVsVHlwZSkpOworICB9LAorCisgIC8q
KgorICAgKiBUcmFwcyBhIHRvcC1sZXZlbCBldmVudCBieSB1c2luZyBldmVudCBjYXB0dXJpbmcu
CisgICAqCisgICAqIEBwYXJhbSB7c3RyaW5nfSB0b3BMZXZlbFR5cGUgUmVjb3JkIGZyb20gYEV2
ZW50Q29uc3RhbnRzYC4KKyAgICogQHBhcmFtIHtzdHJpbmd9IGhhbmRsZXJCYXNlTmFtZSBFdmVu
dCBuYW1lIChlLmcuICJjbGljayIpLgorICAgKiBAcGFyYW0ge29iamVjdH0gZWxlbWVudCBFbGVt
ZW50IG9uIHdoaWNoIHRvIGF0dGFjaCBsaXN0ZW5lci4KKyAgICogQHJldHVybiB7P29iamVjdH0g
QW4gb2JqZWN0IHdpdGggYSByZW1vdmUgZnVuY3Rpb24gd2hpY2ggd2lsbCBmb3JjZWZ1bGx5Cisg
ICAqICAgICAgICAgICAgICAgICAgcmVtb3ZlIHRoZSBsaXN0ZW5lci4KKyAgICogQGludGVybmFs
CisgICAqLworICB0cmFwQ2FwdHVyZWRFdmVudDogZnVuY3Rpb24gKHRvcExldmVsVHlwZSwgaGFu
ZGxlckJhc2VOYW1lLCBlbGVtZW50KSB7CisgICAgaWYgKCFlbGVtZW50KSB7CisgICAgICByZXR1
cm4gbnVsbDsKKyAgICB9CisgICAgcmV0dXJuIEV2ZW50TGlzdGVuZXIuY2FwdHVyZShlbGVtZW50
LCBoYW5kbGVyQmFzZU5hbWUsIFJlYWN0RXZlbnRMaXN0ZW5lci5kaXNwYXRjaEV2ZW50LmJpbmQo
bnVsbCwgdG9wTGV2ZWxUeXBlKSk7CisgIH0sCisKKyAgbW9uaXRvclNjcm9sbFZhbHVlOiBmdW5j
dGlvbiAocmVmcmVzaCkgeworICAgIHZhciBjYWxsYmFjayA9IHNjcm9sbFZhbHVlTW9uaXRvci5i
aW5kKG51bGwsIHJlZnJlc2gpOworICAgIEV2ZW50TGlzdGVuZXIubGlzdGVuKHdpbmRvdywgJ3Nj
cm9sbCcsIGNhbGxiYWNrKTsKKyAgfSwKKworICBkaXNwYXRjaEV2ZW50OiBmdW5jdGlvbiAodG9w
TGV2ZWxUeXBlLCBuYXRpdmVFdmVudCkgeworICAgIGlmICghUmVhY3RFdmVudExpc3RlbmVyLl9l
bmFibGVkKSB7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgdmFyIGJvb2tLZWVwaW5nID0g
VG9wTGV2ZWxDYWxsYmFja0Jvb2tLZWVwaW5nLmdldFBvb2xlZCh0b3BMZXZlbFR5cGUsIG5hdGl2
ZUV2ZW50KTsKKyAgICB0cnkgeworICAgICAgLy8gRXZlbnQgcXVldWUgYmVpbmcgcHJvY2Vzc2Vk
IGluIHRoZSBzYW1lIGN5Y2xlIGFsbG93cworICAgICAgLy8gYHByZXZlbnREZWZhdWx0YC4KKyAg
ICAgIFJlYWN0VXBkYXRlcy5iYXRjaGVkVXBkYXRlcyhoYW5kbGVUb3BMZXZlbEltcGwsIGJvb2tL
ZWVwaW5nKTsKKyAgICB9IGZpbmFsbHkgeworICAgICAgVG9wTGV2ZWxDYWxsYmFja0Jvb2tLZWVw
aW5nLnJlbGVhc2UoYm9va0tlZXBpbmcpOworICAgIH0KKyAgfQorfTsKKworbW9kdWxlLmV4cG9y
dHMgPSBSZWFjdEV2ZW50TGlzdGVuZXI7Cit9LHsiMTA2IjoxMDYsIjEyNSI6MTI1LCIxMjYiOjEy
NiwiMTM3IjoxMzcsIjE0OCI6MTQ4LCIyNCI6MjQsIjMyIjozMiwiNzUiOjc1fV0sNTM6W2Z1bmN0
aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBz
b3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgor
ICogCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgUmVhY3RGZWF0dXJlRmxhZ3MgPSB7Cisg
IC8vIFdoZW4gdHJ1ZSwgY2FsbCBjb25zb2xlLnRpbWUoKSBiZWZvcmUgYW5kIC50aW1lRW5kKCkg
YWZ0ZXIgZWFjaCB0b3AtbGV2ZWwKKyAgLy8gcmVuZGVyIChib3RoIGluaXRpYWwgcmVuZGVycyBh
bmQgdXBkYXRlcykuIFVzZWZ1bCB3aGVuIGxvb2tpbmcgYXQgcHJvZC1tb2RlCisgIC8vIHRpbWVs
aW5lIHByb2ZpbGVzIGluIENocm9tZSwgZm9yIGV4YW1wbGUuCisgIGxvZ1RvcExldmVsUmVuZGVy
czogZmFsc2UKK307CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RGZWF0dXJlRmxhZ3M7Cit9LHt9
XSw1NDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdo
dCAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBs
aWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9y
eSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQg
cmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVj
dG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJbnZhcmlhbnQgPSBf
ZGVyZXFfKDExNiksCisgICAgX2Fzc2lnbiA9IF9kZXJlcV8oMTQ4KTsKKwordmFyIGludmFyaWFu
dCA9IF9kZXJlcV8oMTQwKTsKKwordmFyIGdlbmVyaWNDb21wb25lbnRDbGFzcyA9IG51bGw7Cisv
LyBUaGlzIHJlZ2lzdHJ5IGtlZXBzIHRyYWNrIG9mIHdyYXBwZXIgY2xhc3NlcyBhcm91bmQgaG9z
dCB0YWdzLgordmFyIHRhZ1RvQ29tcG9uZW50Q2xhc3MgPSB7fTsKK3ZhciB0ZXh0Q29tcG9uZW50
Q2xhc3MgPSBudWxsOworCit2YXIgUmVhY3RIb3N0Q29tcG9uZW50SW5qZWN0aW9uID0geworICAv
LyBUaGlzIGFjY2VwdHMgYSBjbGFzcyB0aGF0IHJlY2VpdmVzIHRoZSB0YWcgc3RyaW5nLiBUaGlz
IGlzIGEgY2F0Y2ggYWxsCisgIC8vIHRoYXQgY2FuIHJlbmRlciBhbnkga2luZCBvZiB0YWcuCisg
IGluamVjdEdlbmVyaWNDb21wb25lbnRDbGFzczogZnVuY3Rpb24gKGNvbXBvbmVudENsYXNzKSB7
CisgICAgZ2VuZXJpY0NvbXBvbmVudENsYXNzID0gY29tcG9uZW50Q2xhc3M7CisgIH0sCisgIC8v
IFRoaXMgYWNjZXB0cyBhIHRleHQgY29tcG9uZW50IGNsYXNzIHRoYXQgdGFrZXMgdGhlIHRleHQg
c3RyaW5nIHRvIGJlCisgIC8vIHJlbmRlcmVkIGFzIHByb3BzLgorICBpbmplY3RUZXh0Q29tcG9u
ZW50Q2xhc3M6IGZ1bmN0aW9uIChjb21wb25lbnRDbGFzcykgeworICAgIHRleHRDb21wb25lbnRD
bGFzcyA9IGNvbXBvbmVudENsYXNzOworICB9LAorICAvLyBUaGlzIGFjY2VwdHMgYSBrZXllZCBv
YmplY3Qgd2l0aCBjbGFzc2VzIGFzIHZhbHVlcy4gRWFjaCBrZXkgcmVwcmVzZW50cyBhCisgIC8v
IHRhZy4gVGhhdCBwYXJ0aWN1bGFyIHRhZyB3aWxsIHVzZSB0aGlzIGNsYXNzIGluc3RlYWQgb2Yg
dGhlIGdlbmVyaWMgb25lLgorICBpbmplY3RDb21wb25lbnRDbGFzc2VzOiBmdW5jdGlvbiAoY29t
cG9uZW50Q2xhc3NlcykgeworICAgIF9hc3NpZ24odGFnVG9Db21wb25lbnRDbGFzcywgY29tcG9u
ZW50Q2xhc3Nlcyk7CisgIH0KK307CisKKy8qKgorICogR2V0IGEgaG9zdCBpbnRlcm5hbCBjb21w
b25lbnQgY2xhc3MgZm9yIGEgc3BlY2lmaWMgdGFnLgorICoKKyAqIEBwYXJhbSB7UmVhY3RFbGVt
ZW50fSBlbGVtZW50IFRoZSBlbGVtZW50IHRvIGNyZWF0ZS4KKyAqIEByZXR1cm4ge2Z1bmN0aW9u
fSBUaGUgaW50ZXJuYWwgY2xhc3MgY29uc3RydWN0b3IgZnVuY3Rpb24uCisgKi8KK2Z1bmN0aW9u
IGNyZWF0ZUludGVybmFsQ29tcG9uZW50KGVsZW1lbnQpIHsKKyAgIWdlbmVyaWNDb21wb25lbnRD
bGFzcyA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwg
J1RoZXJlIGlzIG5vIHJlZ2lzdGVyZWQgY29tcG9uZW50IGZvciB0aGUgdGFnICVzJywgZWxlbWVu
dC50eXBlKSA6IF9wcm9kSW52YXJpYW50KCcxMTEnLCBlbGVtZW50LnR5cGUpIDogdm9pZCAwOwor
ICByZXR1cm4gbmV3IGdlbmVyaWNDb21wb25lbnRDbGFzcyhlbGVtZW50KTsKK30KKworLyoqCisg
KiBAcGFyYW0ge1JlYWN0VGV4dH0gdGV4dAorICogQHJldHVybiB7UmVhY3RDb21wb25lbnR9Cisg
Ki8KK2Z1bmN0aW9uIGNyZWF0ZUluc3RhbmNlRm9yVGV4dCh0ZXh0KSB7CisgIHJldHVybiBuZXcg
dGV4dENvbXBvbmVudENsYXNzKHRleHQpOworfQorCisvKioKKyAqIEBwYXJhbSB7UmVhY3RDb21w
b25lbnR9IGNvbXBvbmVudAorICogQHJldHVybiB7Ym9vbGVhbn0KKyAqLworZnVuY3Rpb24gaXNU
ZXh0Q29tcG9uZW50KGNvbXBvbmVudCkgeworICByZXR1cm4gY29tcG9uZW50IGluc3RhbmNlb2Yg
dGV4dENvbXBvbmVudENsYXNzOworfQorCit2YXIgUmVhY3RIb3N0Q29tcG9uZW50ID0geworICBj
cmVhdGVJbnRlcm5hbENvbXBvbmVudDogY3JlYXRlSW50ZXJuYWxDb21wb25lbnQsCisgIGNyZWF0
ZUluc3RhbmNlRm9yVGV4dDogY3JlYXRlSW5zdGFuY2VGb3JUZXh0LAorICBpc1RleHRDb21wb25l
bnQ6IGlzVGV4dENvbXBvbmVudCwKKyAgaW5qZWN0aW9uOiBSZWFjdEhvc3RDb21wb25lbnRJbmpl
Y3Rpb24KK307CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RIb3N0Q29tcG9uZW50OworfSx7IjEx
NiI6MTE2LCIxNDAiOjE0MCwiMTQ4IjoxNDh9XSw1NTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUs
ZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDE2LXByZXNlbnQsIEZhY2Vib29rLCBJbmMu
CisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGlj
ZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5T
RSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRp
dGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFU
RU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiAKKyAqLworCisndXNlIHN0
cmljdCc7CisKK3ZhciBoaXN0b3J5ID0gW107CisKK3ZhciBSZWFjdEhvc3RPcGVyYXRpb25IaXN0
b3J5SG9vayA9IHsKKyAgb25Ib3N0T3BlcmF0aW9uOiBmdW5jdGlvbiAob3BlcmF0aW9uKSB7Cisg
ICAgaGlzdG9yeS5wdXNoKG9wZXJhdGlvbik7CisgIH0sCisgIGNsZWFySGlzdG9yeTogZnVuY3Rp
b24gKCkgeworICAgIGlmIChSZWFjdEhvc3RPcGVyYXRpb25IaXN0b3J5SG9vay5fcHJldmVudENs
ZWFyaW5nKSB7CisgICAgICAvLyBTaG91bGQgb25seSBiZSB1c2VkIGZvciB0ZXN0cy4KKyAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBoaXN0b3J5ID0gW107CisgIH0sCisgIGdldEhpc3Rvcnk6
IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gaGlzdG9yeTsKKyAgfQorfTsKKworbW9kdWxlLmV4
cG9ydHMgPSBSZWFjdEhvc3RPcGVyYXRpb25IaXN0b3J5SG9vazsKK30se31dLDU2OltmdW5jdGlv
bihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2Vu
dCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBz
b3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQg
aW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291
cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJl
IGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAq
LworCisndXNlIHN0cmljdCc7CisKK3ZhciBET01Qcm9wZXJ0eSA9IF9kZXJlcV8oMTEpOwordmFy
IEV2ZW50UGx1Z2luSHViID0gX2RlcmVxXygxNik7Cit2YXIgRXZlbnRQbHVnaW5VdGlscyA9IF9k
ZXJlcV8oMTgpOwordmFyIFJlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQgPSBfZGVyZXFfKDI4KTsK
K3ZhciBSZWFjdEVtcHR5Q29tcG9uZW50ID0gX2RlcmVxXyg0OSk7Cit2YXIgUmVhY3RCcm93c2Vy
RXZlbnRFbWl0dGVyID0gX2RlcmVxXygyNSk7Cit2YXIgUmVhY3RIb3N0Q29tcG9uZW50ID0gX2Rl
cmVxXyg1NCk7Cit2YXIgUmVhY3RVcGRhdGVzID0gX2RlcmVxXyg3NSk7CisKK3ZhciBSZWFjdElu
amVjdGlvbiA9IHsKKyAgQ29tcG9uZW50OiBSZWFjdENvbXBvbmVudEVudmlyb25tZW50LmluamVj
dGlvbiwKKyAgRE9NUHJvcGVydHk6IERPTVByb3BlcnR5LmluamVjdGlvbiwKKyAgRW1wdHlDb21w
b25lbnQ6IFJlYWN0RW1wdHlDb21wb25lbnQuaW5qZWN0aW9uLAorICBFdmVudFBsdWdpbkh1Yjog
RXZlbnRQbHVnaW5IdWIuaW5qZWN0aW9uLAorICBFdmVudFBsdWdpblV0aWxzOiBFdmVudFBsdWdp
blV0aWxzLmluamVjdGlvbiwKKyAgRXZlbnRFbWl0dGVyOiBSZWFjdEJyb3dzZXJFdmVudEVtaXR0
ZXIuaW5qZWN0aW9uLAorICBIb3N0Q29tcG9uZW50OiBSZWFjdEhvc3RDb21wb25lbnQuaW5qZWN0
aW9uLAorICBVcGRhdGVzOiBSZWFjdFVwZGF0ZXMuaW5qZWN0aW9uCit9OworCittb2R1bGUuZXhw
b3J0cyA9IFJlYWN0SW5qZWN0aW9uOworfSx7IjExIjoxMSwiMTYiOjE2LCIxOCI6MTgsIjI1Ijoy
NSwiMjgiOjI4LCI0OSI6NDksIjU0Ijo1NCwiNzUiOjc1fV0sNTc6W2Z1bmN0aW9uKF9kZXJlcV8s
bW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9v
aywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAq
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4g
QW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ug
c3RyaWN0JzsKKwordmFyIFJlYWN0RE9NU2VsZWN0aW9uID0gX2RlcmVxXygzOSk7CisKK3ZhciBj
b250YWluc05vZGUgPSBfZGVyZXFfKDEyOSk7Cit2YXIgZm9jdXNOb2RlID0gX2RlcmVxXygxMzQp
OwordmFyIGdldEFjdGl2ZUVsZW1lbnQgPSBfZGVyZXFfKDEzNSk7CisKK2Z1bmN0aW9uIGlzSW5E
b2N1bWVudChub2RlKSB7CisgIHJldHVybiBjb250YWluc05vZGUoZG9jdW1lbnQuZG9jdW1lbnRF
bGVtZW50LCBub2RlKTsKK30KKworLyoqCisgKiBAUmVhY3RJbnB1dFNlbGVjdGlvbjogUmVhY3Qg
aW5wdXQgc2VsZWN0aW9uIG1vZHVsZS4gQmFzZWQgb24gU2VsZWN0aW9uLmpzLAorICogYnV0IG1v
ZGlmaWVkIHRvIGJlIHN1aXRhYmxlIGZvciByZWFjdCBhbmQgaGFzIGEgY291cGxlIG9mIGJ1ZyBm
aXhlcyAoZG9lc24ndAorICogYXNzdW1lIGJ1dHRvbnMgaGF2ZSByYW5nZSBzZWxlY3Rpb25zIGFs
bG93ZWQpLgorICogSW5wdXQgc2VsZWN0aW9uIG1vZHVsZSBmb3IgUmVhY3QuCisgKi8KK3ZhciBS
ZWFjdElucHV0U2VsZWN0aW9uID0geworCisgIGhhc1NlbGVjdGlvbkNhcGFiaWxpdGllczogZnVu
Y3Rpb24gKGVsZW0pIHsKKyAgICB2YXIgbm9kZU5hbWUgPSBlbGVtICYmIGVsZW0ubm9kZU5hbWUg
JiYgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOworICAgIHJldHVybiBub2RlTmFtZSAmJiAo
bm9kZU5hbWUgPT09ICdpbnB1dCcgJiYgZWxlbS50eXBlID09PSAndGV4dCcgfHwgbm9kZU5hbWUg
PT09ICd0ZXh0YXJlYScgfHwgZWxlbS5jb250ZW50RWRpdGFibGUgPT09ICd0cnVlJyk7CisgIH0s
CisKKyAgZ2V0U2VsZWN0aW9uSW5mb3JtYXRpb246IGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgZm9j
dXNlZEVsZW0gPSBnZXRBY3RpdmVFbGVtZW50KCk7CisgICAgcmV0dXJuIHsKKyAgICAgIGZvY3Vz
ZWRFbGVtOiBmb2N1c2VkRWxlbSwKKyAgICAgIHNlbGVjdGlvblJhbmdlOiBSZWFjdElucHV0U2Vs
ZWN0aW9uLmhhc1NlbGVjdGlvbkNhcGFiaWxpdGllcyhmb2N1c2VkRWxlbSkgPyBSZWFjdElucHV0
U2VsZWN0aW9uLmdldFNlbGVjdGlvbihmb2N1c2VkRWxlbSkgOiBudWxsCisgICAgfTsKKyAgfSwK
KworICAvKioKKyAgICogQHJlc3RvcmVTZWxlY3Rpb246IElmIGFueSBzZWxlY3Rpb24gaW5mb3Jt
YXRpb24gd2FzIHBvdGVudGlhbGx5IGxvc3QsCisgICAqIHJlc3RvcmUgaXQuIFRoaXMgaXMgdXNl
ZnVsIHdoZW4gcGVyZm9ybWluZyBvcGVyYXRpb25zIHRoYXQgY291bGQgcmVtb3ZlIGRvbQorICAg
KiBub2RlcyBhbmQgcGxhY2UgdGhlbSBiYWNrIGluLCByZXN1bHRpbmcgaW4gZm9jdXMgYmVpbmcg
bG9zdC4KKyAgICovCisgIHJlc3RvcmVTZWxlY3Rpb246IGZ1bmN0aW9uIChwcmlvclNlbGVjdGlv
bkluZm9ybWF0aW9uKSB7CisgICAgdmFyIGN1ckZvY3VzZWRFbGVtID0gZ2V0QWN0aXZlRWxlbWVu
dCgpOworICAgIHZhciBwcmlvckZvY3VzZWRFbGVtID0gcHJpb3JTZWxlY3Rpb25JbmZvcm1hdGlv
bi5mb2N1c2VkRWxlbTsKKyAgICB2YXIgcHJpb3JTZWxlY3Rpb25SYW5nZSA9IHByaW9yU2VsZWN0
aW9uSW5mb3JtYXRpb24uc2VsZWN0aW9uUmFuZ2U7CisgICAgaWYgKGN1ckZvY3VzZWRFbGVtICE9
PSBwcmlvckZvY3VzZWRFbGVtICYmIGlzSW5Eb2N1bWVudChwcmlvckZvY3VzZWRFbGVtKSkgewor
ICAgICAgaWYgKFJlYWN0SW5wdXRTZWxlY3Rpb24uaGFzU2VsZWN0aW9uQ2FwYWJpbGl0aWVzKHBy
aW9yRm9jdXNlZEVsZW0pKSB7CisgICAgICAgIFJlYWN0SW5wdXRTZWxlY3Rpb24uc2V0U2VsZWN0
aW9uKHByaW9yRm9jdXNlZEVsZW0sIHByaW9yU2VsZWN0aW9uUmFuZ2UpOworICAgICAgfQorICAg
ICAgZm9jdXNOb2RlKHByaW9yRm9jdXNlZEVsZW0pOworICAgIH0KKyAgfSwKKworICAvKioKKyAg
ICogQGdldFNlbGVjdGlvbjogR2V0cyB0aGUgc2VsZWN0aW9uIGJvdW5kcyBvZiBhIGZvY3VzZWQg
dGV4dGFyZWEsIGlucHV0IG9yCisgICAqIGNvbnRlbnRFZGl0YWJsZSBub2RlLgorICAgKiAtQGlu
cHV0OiBMb29rIHVwIHNlbGVjdGlvbiBib3VuZHMgb2YgdGhpcyBpbnB1dAorICAgKiAtQHJldHVy
biB7c3RhcnQ6IHNlbGVjdGlvblN0YXJ0LCBlbmQ6IHNlbGVjdGlvbkVuZH0KKyAgICovCisgIGdl
dFNlbGVjdGlvbjogZnVuY3Rpb24gKGlucHV0KSB7CisgICAgdmFyIHNlbGVjdGlvbjsKKworICAg
IGlmICgnc2VsZWN0aW9uU3RhcnQnIGluIGlucHV0KSB7CisgICAgICAvLyBNb2Rlcm4gYnJvd3Nl
ciB3aXRoIGlucHV0IG9yIHRleHRhcmVhLgorICAgICAgc2VsZWN0aW9uID0geworICAgICAgICBz
dGFydDogaW5wdXQuc2VsZWN0aW9uU3RhcnQsCisgICAgICAgIGVuZDogaW5wdXQuc2VsZWN0aW9u
RW5kCisgICAgICB9OworICAgIH0gZWxzZSBpZiAoZG9jdW1lbnQuc2VsZWN0aW9uICYmIGlucHV0
Lm5vZGVOYW1lICYmIGlucHV0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdpbnB1dCcpIHsK
KyAgICAgIC8vIElFOCBpbnB1dC4KKyAgICAgIHZhciByYW5nZSA9IGRvY3VtZW50LnNlbGVjdGlv
bi5jcmVhdGVSYW5nZSgpOworICAgICAgLy8gVGhlcmUgY2FuIG9ubHkgYmUgb25lIHNlbGVjdGlv
biBwZXIgZG9jdW1lbnQgaW4gSUUsIHNvIGl0IG11c3QKKyAgICAgIC8vIGJlIGluIG91ciBlbGVt
ZW50LgorICAgICAgaWYgKHJhbmdlLnBhcmVudEVsZW1lbnQoKSA9PT0gaW5wdXQpIHsKKyAgICAg
ICAgc2VsZWN0aW9uID0geworICAgICAgICAgIHN0YXJ0OiAtcmFuZ2UubW92ZVN0YXJ0KCdjaGFy
YWN0ZXInLCAtaW5wdXQudmFsdWUubGVuZ3RoKSwKKyAgICAgICAgICBlbmQ6IC1yYW5nZS5tb3Zl
RW5kKCdjaGFyYWN0ZXInLCAtaW5wdXQudmFsdWUubGVuZ3RoKQorICAgICAgICB9OworICAgICAg
fQorICAgIH0gZWxzZSB7CisgICAgICAvLyBDb250ZW50IGVkaXRhYmxlIG9yIG9sZCBJRSB0ZXh0
YXJlYS4KKyAgICAgIHNlbGVjdGlvbiA9IFJlYWN0RE9NU2VsZWN0aW9uLmdldE9mZnNldHMoaW5w
dXQpOworICAgIH0KKworICAgIHJldHVybiBzZWxlY3Rpb24gfHwgeyBzdGFydDogMCwgZW5kOiAw
IH07CisgIH0sCisKKyAgLyoqCisgICAqIEBzZXRTZWxlY3Rpb246IFNldHMgdGhlIHNlbGVjdGlv
biBib3VuZHMgb2YgYSB0ZXh0YXJlYSBvciBpbnB1dCBhbmQgZm9jdXNlcworICAgKiB0aGUgaW5w
dXQuCisgICAqIC1AaW5wdXQgICAgIFNldCBzZWxlY3Rpb24gYm91bmRzIG9mIHRoaXMgaW5wdXQg
b3IgdGV4dGFyZWEKKyAgICogLUBvZmZzZXRzICAgT2JqZWN0IG9mIHNhbWUgZm9ybSB0aGF0IGlz
IHJldHVybmVkIGZyb20gZ2V0KgorICAgKi8KKyAgc2V0U2VsZWN0aW9uOiBmdW5jdGlvbiAoaW5w
dXQsIG9mZnNldHMpIHsKKyAgICB2YXIgc3RhcnQgPSBvZmZzZXRzLnN0YXJ0OworICAgIHZhciBl
bmQgPSBvZmZzZXRzLmVuZDsKKyAgICBpZiAoZW5kID09PSB1bmRlZmluZWQpIHsKKyAgICAgIGVu
ZCA9IHN0YXJ0OworICAgIH0KKworICAgIGlmICgnc2VsZWN0aW9uU3RhcnQnIGluIGlucHV0KSB7
CisgICAgICBpbnB1dC5zZWxlY3Rpb25TdGFydCA9IHN0YXJ0OworICAgICAgaW5wdXQuc2VsZWN0
aW9uRW5kID0gTWF0aC5taW4oZW5kLCBpbnB1dC52YWx1ZS5sZW5ndGgpOworICAgIH0gZWxzZSBp
ZiAoZG9jdW1lbnQuc2VsZWN0aW9uICYmIGlucHV0Lm5vZGVOYW1lICYmIGlucHV0Lm5vZGVOYW1l
LnRvTG93ZXJDYXNlKCkgPT09ICdpbnB1dCcpIHsKKyAgICAgIHZhciByYW5nZSA9IGlucHV0LmNy
ZWF0ZVRleHRSYW5nZSgpOworICAgICAgcmFuZ2UuY29sbGFwc2UodHJ1ZSk7CisgICAgICByYW5n
ZS5tb3ZlU3RhcnQoJ2NoYXJhY3RlcicsIHN0YXJ0KTsKKyAgICAgIHJhbmdlLm1vdmVFbmQoJ2No
YXJhY3RlcicsIGVuZCAtIHN0YXJ0KTsKKyAgICAgIHJhbmdlLnNlbGVjdCgpOworICAgIH0gZWxz
ZSB7CisgICAgICBSZWFjdERPTVNlbGVjdGlvbi5zZXRPZmZzZXRzKGlucHV0LCBvZmZzZXRzKTsK
KyAgICB9CisgIH0KK307CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RJbnB1dFNlbGVjdGlvbjsK
K30seyIxMjkiOjEyOSwiMTM0IjoxMzQsIjEzNSI6MTM1LCIzOSI6Mzl9XSw1ODpbZnVuY3Rpb24o
X2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQs
IEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291
cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGlu
IHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJj
ZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBm
b3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8K
KworJ3VzZSBzdHJpY3QnOworCisvKioKKyAqIGBSZWFjdEluc3RhbmNlTWFwYCBtYWludGFpbnMg
YSBtYXBwaW5nIGZyb20gYSBwdWJsaWMgZmFjaW5nIHN0YXRlZnVsCisgKiBpbnN0YW5jZSAoa2V5
KSBhbmQgdGhlIGludGVybmFsIHJlcHJlc2VudGF0aW9uICh2YWx1ZSkuIFRoaXMgYWxsb3dzIHB1
YmxpYworICogbWV0aG9kcyB0byBhY2NlcHQgdGhlIHVzZXIgZmFjaW5nIGluc3RhbmNlIGFzIGFu
IGFyZ3VtZW50IGFuZCBtYXAgdGhlbSBiYWNrCisgKiB0byBpbnRlcm5hbCBtZXRob2RzLgorICov
CisKKy8vIFRPRE86IFJlcGxhY2UgdGhpcyB3aXRoIEVTNjogdmFyIFJlYWN0SW5zdGFuY2VNYXAg
PSBuZXcgTWFwKCk7CisKK3ZhciBSZWFjdEluc3RhbmNlTWFwID0geworCisgIC8qKgorICAgKiBU
aGlzIEFQSSBzaG91bGQgYmUgY2FsbGVkIGBkZWxldGVgIGJ1dCB3ZSdkIGhhdmUgdG8gbWFrZSBz
dXJlIHRvIGFsd2F5cworICAgKiB0cmFuc2Zvcm0gdGhlc2UgdG8gc3RyaW5ncyBmb3IgSUUgc3Vw
cG9ydC4gV2hlbiB0aGlzIHRyYW5zZm9ybSBpcyBmdWxseQorICAgKiBzdXBwb3J0ZWQgd2UgY2Fu
IHJlbmFtZSBpdC4KKyAgICovCisgIHJlbW92ZTogZnVuY3Rpb24gKGtleSkgeworICAgIGtleS5f
cmVhY3RJbnRlcm5hbEluc3RhbmNlID0gdW5kZWZpbmVkOworICB9LAorCisgIGdldDogZnVuY3Rp
b24gKGtleSkgeworICAgIHJldHVybiBrZXkuX3JlYWN0SW50ZXJuYWxJbnN0YW5jZTsKKyAgfSwK
KworICBoYXM6IGZ1bmN0aW9uIChrZXkpIHsKKyAgICByZXR1cm4ga2V5Ll9yZWFjdEludGVybmFs
SW5zdGFuY2UgIT09IHVuZGVmaW5lZDsKKyAgfSwKKworICBzZXQ6IGZ1bmN0aW9uIChrZXksIHZh
bHVlKSB7CisgICAga2V5Ll9yZWFjdEludGVybmFsSW5zdGFuY2UgPSB2YWx1ZTsKKyAgfQorCit9
OworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0SW5zdGFuY2VNYXA7Cit9LHt9XSw1OTpbZnVuY3Rp
b24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDE2LXByZXNl
bnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMg
c291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5k
IGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNv
dXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBi
ZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisg
KiAKKyAqLworCisndXNlIHN0cmljdCc7CisKKy8vIFRydXN0IHRoZSBkZXZlbG9wZXIgdG8gb25s
eSB1c2UgUmVhY3RJbnN0cnVtZW50YXRpb24gd2l0aCBhIF9fREVWX18gY2hlY2sKKwordmFyIGRl
YnVnVG9vbCA9IG51bGw7CisKK2lmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsK
KyAgdmFyIFJlYWN0RGVidWdUb29sID0gX2RlcmVxXyg0NSk7CisgIGRlYnVnVG9vbCA9IFJlYWN0
RGVidWdUb29sOworfQorCittb2R1bGUuZXhwb3J0cyA9IHsgZGVidWdUb29sOiBkZWJ1Z1Rvb2wg
fTsKK30seyI0NSI6NDV9XSw2MDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7Cisv
KioKKyAqIENvcHlyaWdodCAyMDE2LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiAKKyAqLworCisndXNlIHN0cmljdCc7CisKK3Zh
ciB3YXJuaW5nID0gX2RlcmVxXygxNDcpOworCitpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1
Y3Rpb24nKSB7CisgIHZhciBwcm9jZXNzaW5nQ2hpbGRDb250ZXh0ID0gZmFsc2U7CisKKyAgdmFy
IHdhcm5JbnZhbGlkU2V0U3RhdGUgPSBmdW5jdGlvbiAoKSB7CisgICAgImRldmVsb3BtZW50IiAh
PT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyghcHJvY2Vzc2luZ0NoaWxkQ29udGV4dCwgJ3NldFN0
YXRlKC4uLik6IENhbm5vdCBjYWxsIHNldFN0YXRlKCkgaW5zaWRlIGdldENoaWxkQ29udGV4dCgp
JykgOiB2b2lkIDA7CisgIH07Cit9CisKK3ZhciBSZWFjdEludmFsaWRTZXRTdGF0ZVdhcm5pbmdI
b29rID0geworICBvbkJlZ2luUHJvY2Vzc2luZ0NoaWxkQ29udGV4dDogZnVuY3Rpb24gKCkgewor
ICAgIHByb2Nlc3NpbmdDaGlsZENvbnRleHQgPSB0cnVlOworICB9LAorICBvbkVuZFByb2Nlc3Np
bmdDaGlsZENvbnRleHQ6IGZ1bmN0aW9uICgpIHsKKyAgICBwcm9jZXNzaW5nQ2hpbGRDb250ZXh0
ID0gZmFsc2U7CisgIH0sCisgIG9uU2V0U3RhdGU6IGZ1bmN0aW9uICgpIHsKKyAgICB3YXJuSW52
YWxpZFNldFN0YXRlKCk7CisgIH0KK307CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RJbnZhbGlk
U2V0U3RhdGVXYXJuaW5nSG9vazsKK30seyIxNDciOjE0N31dLDYxOltmdW5jdGlvbihfZGVyZXFf
LG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJv
b2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29k
ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisg
KiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUu
IEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNl
IHN0cmljdCc7CisKK3ZhciBhZGxlcjMyID0gX2RlcmVxXyg5Nik7CisKK3ZhciBUQUdfRU5EID0g
L1wvPz4vOwordmFyIENPTU1FTlRfU1RBUlQgPSAvXjxcIVwtXC0vOworCit2YXIgUmVhY3RNYXJr
dXBDaGVja3N1bSA9IHsKKyAgQ0hFQ0tTVU1fQVRUUl9OQU1FOiAnZGF0YS1yZWFjdC1jaGVja3N1
bScsCisKKyAgLyoqCisgICAqIEBwYXJhbSB7c3RyaW5nfSBtYXJrdXAgTWFya3VwIHN0cmluZwor
ICAgKiBAcmV0dXJuIHtzdHJpbmd9IE1hcmt1cCBzdHJpbmcgd2l0aCBjaGVja3N1bSBhdHRyaWJ1
dGUgYXR0YWNoZWQKKyAgICovCisgIGFkZENoZWNrc3VtVG9NYXJrdXA6IGZ1bmN0aW9uIChtYXJr
dXApIHsKKyAgICB2YXIgY2hlY2tzdW0gPSBhZGxlcjMyKG1hcmt1cCk7CisKKyAgICAvLyBBZGQg
Y2hlY2tzdW0gKGhhbmRsZSBib3RoIHBhcmVudCB0YWdzLCBjb21tZW50cyBhbmQgc2VsZi1jbG9z
aW5nIHRhZ3MpCisgICAgaWYgKENPTU1FTlRfU1RBUlQudGVzdChtYXJrdXApKSB7CisgICAgICBy
ZXR1cm4gbWFya3VwOworICAgIH0gZWxzZSB7CisgICAgICByZXR1cm4gbWFya3VwLnJlcGxhY2Uo
VEFHX0VORCwgJyAnICsgUmVhY3RNYXJrdXBDaGVja3N1bS5DSEVDS1NVTV9BVFRSX05BTUUgKyAn
PSInICsgY2hlY2tzdW0gKyAnIiQmJyk7CisgICAgfQorICB9LAorCisgIC8qKgorICAgKiBAcGFy
YW0ge3N0cmluZ30gbWFya3VwIHRvIHVzZQorICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGVsZW1l
bnQgcm9vdCBSZWFjdCBlbGVtZW50CisgICAqIEByZXR1cm5zIHtib29sZWFufSB3aGV0aGVyIG9y
IG5vdCB0aGUgbWFya3VwIGlzIHRoZSBzYW1lCisgICAqLworICBjYW5SZXVzZU1hcmt1cDogZnVu
Y3Rpb24gKG1hcmt1cCwgZWxlbWVudCkgeworICAgIHZhciBleGlzdGluZ0NoZWNrc3VtID0gZWxl
bWVudC5nZXRBdHRyaWJ1dGUoUmVhY3RNYXJrdXBDaGVja3N1bS5DSEVDS1NVTV9BVFRSX05BTUUp
OworICAgIGV4aXN0aW5nQ2hlY2tzdW0gPSBleGlzdGluZ0NoZWNrc3VtICYmIHBhcnNlSW50KGV4
aXN0aW5nQ2hlY2tzdW0sIDEwKTsKKyAgICB2YXIgbWFya3VwQ2hlY2tzdW0gPSBhZGxlcjMyKG1h
cmt1cCk7CisgICAgcmV0dXJuIG1hcmt1cENoZWNrc3VtID09PSBleGlzdGluZ0NoZWNrc3VtOwor
ICB9Cit9OworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0TWFya3VwQ2hlY2tzdW07Cit9LHsiOTYi
Ojk2fV0sNjI6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5
cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5
bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJl
Y3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0
ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9wcm9kSW52YXJpYW50
ID0gX2RlcmVxXygxMTYpOworCit2YXIgUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudCA9IF9kZXJl
cV8oMjgpOwordmFyIFJlYWN0SW5zdGFuY2VNYXAgPSBfZGVyZXFfKDU4KTsKK3ZhciBSZWFjdElu
c3RydW1lbnRhdGlvbiA9IF9kZXJlcV8oNTkpOworCit2YXIgUmVhY3RDdXJyZW50T3duZXIgPSBf
ZGVyZXFfKDEyMyk7Cit2YXIgUmVhY3RSZWNvbmNpbGVyID0gX2RlcmVxXyg2OCk7Cit2YXIgUmVh
Y3RDaGlsZFJlY29uY2lsZXIgPSBfZGVyZXFfKDI2KTsKKwordmFyIGVtcHR5RnVuY3Rpb24gPSBf
ZGVyZXFfKDEzMik7Cit2YXIgZmxhdHRlbkNoaWxkcmVuID0gX2RlcmVxXygxMDEpOwordmFyIGlu
dmFyaWFudCA9IF9kZXJlcV8oMTQwKTsKKworLyoqCisgKiBNYWtlIGFuIHVwZGF0ZSBmb3IgbWFy
a3VwIHRvIGJlIHJlbmRlcmVkIGFuZCBpbnNlcnRlZCBhdCBhIHN1cHBsaWVkIGluZGV4LgorICoK
KyAqIEBwYXJhbSB7c3RyaW5nfSBtYXJrdXAgTWFya3VwIHRoYXQgcmVuZGVycyBpbnRvIGFuIGVs
ZW1lbnQuCisgKiBAcGFyYW0ge251bWJlcn0gdG9JbmRleCBEZXN0aW5hdGlvbiBpbmRleC4KKyAq
IEBwcml2YXRlCisgKi8KK2Z1bmN0aW9uIG1ha2VJbnNlcnRNYXJrdXAobWFya3VwLCBhZnRlck5v
ZGUsIHRvSW5kZXgpIHsKKyAgLy8gTk9URTogTnVsbCB2YWx1ZXMgcmVkdWNlIGhpZGRlbiBjbGFz
c2VzLgorICByZXR1cm4geworICAgIHR5cGU6ICdJTlNFUlRfTUFSS1VQJywKKyAgICBjb250ZW50
OiBtYXJrdXAsCisgICAgZnJvbUluZGV4OiBudWxsLAorICAgIGZyb21Ob2RlOiBudWxsLAorICAg
IHRvSW5kZXg6IHRvSW5kZXgsCisgICAgYWZ0ZXJOb2RlOiBhZnRlck5vZGUKKyAgfTsKK30KKwor
LyoqCisgKiBNYWtlIGFuIHVwZGF0ZSBmb3IgbW92aW5nIGFuIGV4aXN0aW5nIGVsZW1lbnQgdG8g
YW5vdGhlciBpbmRleC4KKyAqCisgKiBAcGFyYW0ge251bWJlcn0gZnJvbUluZGV4IFNvdXJjZSBp
bmRleCBvZiB0aGUgZXhpc3RpbmcgZWxlbWVudC4KKyAqIEBwYXJhbSB7bnVtYmVyfSB0b0luZGV4
IERlc3RpbmF0aW9uIGluZGV4IG9mIHRoZSBlbGVtZW50LgorICogQHByaXZhdGUKKyAqLworZnVu
Y3Rpb24gbWFrZU1vdmUoY2hpbGQsIGFmdGVyTm9kZSwgdG9JbmRleCkgeworICAvLyBOT1RFOiBO
dWxsIHZhbHVlcyByZWR1Y2UgaGlkZGVuIGNsYXNzZXMuCisgIHJldHVybiB7CisgICAgdHlwZTog
J01PVkVfRVhJU1RJTkcnLAorICAgIGNvbnRlbnQ6IG51bGwsCisgICAgZnJvbUluZGV4OiBjaGls
ZC5fbW91bnRJbmRleCwKKyAgICBmcm9tTm9kZTogUmVhY3RSZWNvbmNpbGVyLmdldEhvc3ROb2Rl
KGNoaWxkKSwKKyAgICB0b0luZGV4OiB0b0luZGV4LAorICAgIGFmdGVyTm9kZTogYWZ0ZXJOb2Rl
CisgIH07Cit9CisKKy8qKgorICogTWFrZSBhbiB1cGRhdGUgZm9yIHJlbW92aW5nIGFuIGVsZW1l
bnQgYXQgYW4gaW5kZXguCisgKgorICogQHBhcmFtIHtudW1iZXJ9IGZyb21JbmRleCBJbmRleCBv
ZiB0aGUgZWxlbWVudCB0byByZW1vdmUuCisgKiBAcHJpdmF0ZQorICovCitmdW5jdGlvbiBtYWtl
UmVtb3ZlKGNoaWxkLCBub2RlKSB7CisgIC8vIE5PVEU6IE51bGwgdmFsdWVzIHJlZHVjZSBoaWRk
ZW4gY2xhc3Nlcy4KKyAgcmV0dXJuIHsKKyAgICB0eXBlOiAnUkVNT1ZFX05PREUnLAorICAgIGNv
bnRlbnQ6IG51bGwsCisgICAgZnJvbUluZGV4OiBjaGlsZC5fbW91bnRJbmRleCwKKyAgICBmcm9t
Tm9kZTogbm9kZSwKKyAgICB0b0luZGV4OiBudWxsLAorICAgIGFmdGVyTm9kZTogbnVsbAorICB9
OworfQorCisvKioKKyAqIE1ha2UgYW4gdXBkYXRlIGZvciBzZXR0aW5nIHRoZSBtYXJrdXAgb2Yg
YSBub2RlLgorICoKKyAqIEBwYXJhbSB7c3RyaW5nfSBtYXJrdXAgTWFya3VwIHRoYXQgcmVuZGVy
cyBpbnRvIGFuIGVsZW1lbnQuCisgKiBAcHJpdmF0ZQorICovCitmdW5jdGlvbiBtYWtlU2V0TWFy
a3VwKG1hcmt1cCkgeworICAvLyBOT1RFOiBOdWxsIHZhbHVlcyByZWR1Y2UgaGlkZGVuIGNsYXNz
ZXMuCisgIHJldHVybiB7CisgICAgdHlwZTogJ1NFVF9NQVJLVVAnLAorICAgIGNvbnRlbnQ6IG1h
cmt1cCwKKyAgICBmcm9tSW5kZXg6IG51bGwsCisgICAgZnJvbU5vZGU6IG51bGwsCisgICAgdG9J
bmRleDogbnVsbCwKKyAgICBhZnRlck5vZGU6IG51bGwKKyAgfTsKK30KKworLyoqCisgKiBNYWtl
IGFuIHVwZGF0ZSBmb3Igc2V0dGluZyB0aGUgdGV4dCBjb250ZW50LgorICoKKyAqIEBwYXJhbSB7
c3RyaW5nfSB0ZXh0Q29udGVudCBUZXh0IGNvbnRlbnQgdG8gc2V0LgorICogQHByaXZhdGUKKyAq
LworZnVuY3Rpb24gbWFrZVRleHRDb250ZW50KHRleHRDb250ZW50KSB7CisgIC8vIE5PVEU6IE51
bGwgdmFsdWVzIHJlZHVjZSBoaWRkZW4gY2xhc3Nlcy4KKyAgcmV0dXJuIHsKKyAgICB0eXBlOiAn
VEVYVF9DT05URU5UJywKKyAgICBjb250ZW50OiB0ZXh0Q29udGVudCwKKyAgICBmcm9tSW5kZXg6
IG51bGwsCisgICAgZnJvbU5vZGU6IG51bGwsCisgICAgdG9JbmRleDogbnVsbCwKKyAgICBhZnRl
ck5vZGU6IG51bGwKKyAgfTsKK30KKworLyoqCisgKiBQdXNoIGFuIHVwZGF0ZSwgaWYgYW55LCBv
bnRvIHRoZSBxdWV1ZS4gQ3JlYXRlcyBhIG5ldyBxdWV1ZSBpZiBub25lIGlzCisgKiBwYXNzZWQg
YW5kIGFsd2F5cyByZXR1cm5zIHRoZSBxdWV1ZS4gTXV0YXRpdmUuCisgKi8KK2Z1bmN0aW9uIGVu
cXVldWUocXVldWUsIHVwZGF0ZSkgeworICBpZiAodXBkYXRlKSB7CisgICAgcXVldWUgPSBxdWV1
ZSB8fCBbXTsKKyAgICBxdWV1ZS5wdXNoKHVwZGF0ZSk7CisgIH0KKyAgcmV0dXJuIHF1ZXVlOwor
fQorCisvKioKKyAqIFByb2Nlc3NlcyBhbnkgZW5xdWV1ZWQgdXBkYXRlcy4KKyAqCisgKiBAcHJp
dmF0ZQorICovCitmdW5jdGlvbiBwcm9jZXNzUXVldWUoaW5zdCwgdXBkYXRlUXVldWUpIHsKKyAg
UmVhY3RDb21wb25lbnRFbnZpcm9ubWVudC5wcm9jZXNzQ2hpbGRyZW5VcGRhdGVzKGluc3QsIHVw
ZGF0ZVF1ZXVlKTsKK30KKwordmFyIHNldENoaWxkcmVuRm9ySW5zdHJ1bWVudGF0aW9uID0gZW1w
dHlGdW5jdGlvbjsKK2lmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgdmFy
IGdldERlYnVnSUQgPSBmdW5jdGlvbiAoaW5zdCkgeworICAgIGlmICghaW5zdC5fZGVidWdJRCkg
eworICAgICAgLy8gQ2hlY2sgZm9yIEFSVC1saWtlIGluc3RhbmNlcy4gVE9ETzogVGhpcyBpcyBz
aWxseS9ncm9zcy4KKyAgICAgIHZhciBpbnRlcm5hbDsKKyAgICAgIGlmIChpbnRlcm5hbCA9IFJl
YWN0SW5zdGFuY2VNYXAuZ2V0KGluc3QpKSB7CisgICAgICAgIGluc3QgPSBpbnRlcm5hbDsKKyAg
ICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGluc3QuX2RlYnVnSUQ7CisgIH07CisgIHNldENoaWxk
cmVuRm9ySW5zdHJ1bWVudGF0aW9uID0gZnVuY3Rpb24gKGNoaWxkcmVuKSB7CisgICAgdmFyIGRl
YnVnSUQgPSBnZXREZWJ1Z0lEKHRoaXMpOworICAgIC8vIFRPRE86IFJlYWN0IE5hdGl2ZSBlbXB0
eSBjb21wb25lbnRzIGFyZSBhbHNvIG11bHRpY2hpbGQuCisgICAgLy8gVGhpcyBtZWFucyB0aGV5
IHN0aWxsIGdldCBpbnRvIHRoaXMgbWV0aG9kIGJ1dCBkb24ndCBoYXZlIF9kZWJ1Z0lELgorICAg
IGlmIChkZWJ1Z0lEICE9PSAwKSB7CisgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rv
b2wub25TZXRDaGlsZHJlbihkZWJ1Z0lELCBjaGlsZHJlbiA/IE9iamVjdC5rZXlzKGNoaWxkcmVu
KS5tYXAoZnVuY3Rpb24gKGtleSkgeworICAgICAgICByZXR1cm4gY2hpbGRyZW5ba2V5XS5fZGVi
dWdJRDsKKyAgICAgIH0pIDogW10pOworICAgIH0KKyAgfTsKK30KKworLyoqCisgKiBSZWFjdE11
bHRpQ2hpbGQgYXJlIGNhcGFibGUgb2YgcmVjb25jaWxpbmcgbXVsdGlwbGUgY2hpbGRyZW4uCisg
KgorICogQGNsYXNzIFJlYWN0TXVsdGlDaGlsZAorICogQGludGVybmFsCisgKi8KK3ZhciBSZWFj
dE11bHRpQ2hpbGQgPSB7CisKKyAgLyoqCisgICAqIFByb3ZpZGVzIGNvbW1vbiBmdW5jdGlvbmFs
aXR5IGZvciBjb21wb25lbnRzIHRoYXQgbXVzdCByZWNvbmNpbGUgbXVsdGlwbGUKKyAgICogY2hp
bGRyZW4uIFRoaXMgaXMgdXNlZCBieSBgUmVhY3RET01Db21wb25lbnRgIHRvIG1vdW50LCB1cGRh
dGUsIGFuZAorICAgKiB1bm1vdW50IGNoaWxkIGNvbXBvbmVudHMuCisgICAqCisgICAqIEBsZW5k
cyB7UmVhY3RNdWx0aUNoaWxkLnByb3RvdHlwZX0KKyAgICovCisgIE1peGluOiB7CisKKyAgICBf
cmVjb25jaWxlckluc3RhbnRpYXRlQ2hpbGRyZW46IGZ1bmN0aW9uIChuZXN0ZWRDaGlsZHJlbiwg
dHJhbnNhY3Rpb24sIGNvbnRleHQpIHsKKyAgICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJv
ZHVjdGlvbicpIHsKKyAgICAgICAgdmFyIHNlbGZEZWJ1Z0lEID0gZ2V0RGVidWdJRCh0aGlzKTsK
KyAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRFbGVtZW50KSB7CisgICAgICAgICAgdHJ5IHsKKyAg
ICAgICAgICAgIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPSB0aGlzLl9jdXJyZW50RWxlbWVu
dC5fb3duZXI7CisgICAgICAgICAgICByZXR1cm4gUmVhY3RDaGlsZFJlY29uY2lsZXIuaW5zdGFu
dGlhdGVDaGlsZHJlbihuZXN0ZWRDaGlsZHJlbiwgdHJhbnNhY3Rpb24sIGNvbnRleHQsIHNlbGZE
ZWJ1Z0lEKTsKKyAgICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgUmVhY3RDdXJyZW50
T3duZXIuY3VycmVudCA9IG51bGw7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9Cisg
ICAgICByZXR1cm4gUmVhY3RDaGlsZFJlY29uY2lsZXIuaW5zdGFudGlhdGVDaGlsZHJlbihuZXN0
ZWRDaGlsZHJlbiwgdHJhbnNhY3Rpb24sIGNvbnRleHQpOworICAgIH0sCisKKyAgICBfcmVjb25j
aWxlclVwZGF0ZUNoaWxkcmVuOiBmdW5jdGlvbiAocHJldkNoaWxkcmVuLCBuZXh0TmVzdGVkQ2hp
bGRyZW5FbGVtZW50cywgbW91bnRJbWFnZXMsIHJlbW92ZWROb2RlcywgdHJhbnNhY3Rpb24sIGNv
bnRleHQpIHsKKyAgICAgIHZhciBuZXh0Q2hpbGRyZW47CisgICAgICB2YXIgc2VsZkRlYnVnSUQg
PSAwOworICAgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAg
ICBzZWxmRGVidWdJRCA9IGdldERlYnVnSUQodGhpcyk7CisgICAgICAgIGlmICh0aGlzLl9jdXJy
ZW50RWxlbWVudCkgeworICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICBSZWFjdEN1cnJlbnRP
d25lci5jdXJyZW50ID0gdGhpcy5fY3VycmVudEVsZW1lbnQuX293bmVyOworICAgICAgICAgICAg
bmV4dENoaWxkcmVuID0gZmxhdHRlbkNoaWxkcmVuKG5leHROZXN0ZWRDaGlsZHJlbkVsZW1lbnRz
LCBzZWxmRGVidWdJRCk7CisgICAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgIFJlYWN0
Q3VycmVudE93bmVyLmN1cnJlbnQgPSBudWxsOworICAgICAgICAgIH0KKyAgICAgICAgICBSZWFj
dENoaWxkUmVjb25jaWxlci51cGRhdGVDaGlsZHJlbihwcmV2Q2hpbGRyZW4sIG5leHRDaGlsZHJl
biwgbW91bnRJbWFnZXMsIHJlbW92ZWROb2RlcywgdHJhbnNhY3Rpb24sIHRoaXMsIHRoaXMuX2hv
c3RDb250YWluZXJJbmZvLCBjb250ZXh0LCBzZWxmRGVidWdJRCk7CisgICAgICAgICAgcmV0dXJu
IG5leHRDaGlsZHJlbjsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgbmV4dENoaWxkcmVuID0g
ZmxhdHRlbkNoaWxkcmVuKG5leHROZXN0ZWRDaGlsZHJlbkVsZW1lbnRzLCBzZWxmRGVidWdJRCk7
CisgICAgICBSZWFjdENoaWxkUmVjb25jaWxlci51cGRhdGVDaGlsZHJlbihwcmV2Q2hpbGRyZW4s
IG5leHRDaGlsZHJlbiwgbW91bnRJbWFnZXMsIHJlbW92ZWROb2RlcywgdHJhbnNhY3Rpb24sIHRo
aXMsIHRoaXMuX2hvc3RDb250YWluZXJJbmZvLCBjb250ZXh0LCBzZWxmRGVidWdJRCk7CisgICAg
ICByZXR1cm4gbmV4dENoaWxkcmVuOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBHZW5lcmF0
ZXMgYSAibW91bnQgaW1hZ2UiIGZvciBlYWNoIG9mIHRoZSBzdXBwbGllZCBjaGlsZHJlbi4gSW4g
dGhlIGNhc2UKKyAgICAgKiBvZiBgUmVhY3RET01Db21wb25lbnRgLCBhIG1vdW50IGltYWdlIGlz
IGEgc3RyaW5nIG9mIG1hcmt1cC4KKyAgICAgKgorICAgICAqIEBwYXJhbSB7P29iamVjdH0gbmVz
dGVkQ2hpbGRyZW4gTmVzdGVkIGNoaWxkIG1hcHMuCisgICAgICogQHJldHVybiB7YXJyYXl9IEFu
IGFycmF5IG9mIG1vdW50ZWQgcmVwcmVzZW50YXRpb25zLgorICAgICAqIEBpbnRlcm5hbAorICAg
ICAqLworICAgIG1vdW50Q2hpbGRyZW46IGZ1bmN0aW9uIChuZXN0ZWRDaGlsZHJlbiwgdHJhbnNh
Y3Rpb24sIGNvbnRleHQpIHsKKyAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuX3JlY29uY2lsZXJJ
bnN0YW50aWF0ZUNoaWxkcmVuKG5lc3RlZENoaWxkcmVuLCB0cmFuc2FjdGlvbiwgY29udGV4dCk7
CisgICAgICB0aGlzLl9yZW5kZXJlZENoaWxkcmVuID0gY2hpbGRyZW47CisKKyAgICAgIHZhciBt
b3VudEltYWdlcyA9IFtdOworICAgICAgdmFyIGluZGV4ID0gMDsKKyAgICAgIGZvciAodmFyIG5h
bWUgaW4gY2hpbGRyZW4pIHsKKyAgICAgICAgaWYgKGNoaWxkcmVuLmhhc093blByb3BlcnR5KG5h
bWUpKSB7CisgICAgICAgICAgdmFyIGNoaWxkID0gY2hpbGRyZW5bbmFtZV07CisgICAgICAgICAg
dmFyIHNlbGZEZWJ1Z0lEID0gMDsKKyAgICAgICAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3By
b2R1Y3Rpb24nKSB7CisgICAgICAgICAgICBzZWxmRGVidWdJRCA9IGdldERlYnVnSUQodGhpcyk7
CisgICAgICAgICAgfQorICAgICAgICAgIHZhciBtb3VudEltYWdlID0gUmVhY3RSZWNvbmNpbGVy
Lm1vdW50Q29tcG9uZW50KGNoaWxkLCB0cmFuc2FjdGlvbiwgdGhpcywgdGhpcy5faG9zdENvbnRh
aW5lckluZm8sIGNvbnRleHQsIHNlbGZEZWJ1Z0lEKTsKKyAgICAgICAgICBjaGlsZC5fbW91bnRJ
bmRleCA9IGluZGV4Kys7CisgICAgICAgICAgbW91bnRJbWFnZXMucHVzaChtb3VudEltYWdlKTsK
KyAgICAgICAgfQorICAgICAgfQorCisgICAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1
Y3Rpb24nKSB7CisgICAgICAgIHNldENoaWxkcmVuRm9ySW5zdHJ1bWVudGF0aW9uLmNhbGwodGhp
cywgY2hpbGRyZW4pOworICAgICAgfQorCisgICAgICByZXR1cm4gbW91bnRJbWFnZXM7CisgICAg
fSwKKworICAgIC8qKgorICAgICAqIFJlcGxhY2VzIGFueSByZW5kZXJlZCBjaGlsZHJlbiB3aXRo
IGEgdGV4dCBjb250ZW50IHN0cmluZy4KKyAgICAgKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBu
ZXh0Q29udGVudCBTdHJpbmcgb2YgY29udGVudC4KKyAgICAgKiBAaW50ZXJuYWwKKyAgICAgKi8K
KyAgICB1cGRhdGVUZXh0Q29udGVudDogZnVuY3Rpb24gKG5leHRDb250ZW50KSB7CisgICAgICB2
YXIgcHJldkNoaWxkcmVuID0gdGhpcy5fcmVuZGVyZWRDaGlsZHJlbjsKKyAgICAgIC8vIFJlbW92
ZSBhbnkgcmVuZGVyZWQgY2hpbGRyZW4uCisgICAgICBSZWFjdENoaWxkUmVjb25jaWxlci51bm1v
dW50Q2hpbGRyZW4ocHJldkNoaWxkcmVuLCBmYWxzZSk7CisgICAgICBmb3IgKHZhciBuYW1lIGlu
IHByZXZDaGlsZHJlbikgeworICAgICAgICBpZiAocHJldkNoaWxkcmVuLmhhc093blByb3BlcnR5
KG5hbWUpKSB7CisgICAgICAgICAgIWZhbHNlID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rp
b24nID8gaW52YXJpYW50KGZhbHNlLCAndXBkYXRlVGV4dENvbnRlbnQgY2FsbGVkIG9uIG5vbi1l
bXB0eSBjb21wb25lbnQuJykgOiBfcHJvZEludmFyaWFudCgnMTE4JykgOiB2b2lkIDA7CisgICAg
ICAgIH0KKyAgICAgIH0KKyAgICAgIC8vIFNldCBuZXcgdGV4dCBjb250ZW50LgorICAgICAgdmFy
IHVwZGF0ZXMgPSBbbWFrZVRleHRDb250ZW50KG5leHRDb250ZW50KV07CisgICAgICBwcm9jZXNz
UXVldWUodGhpcywgdXBkYXRlcyk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIFJlcGxhY2Vz
IGFueSByZW5kZXJlZCBjaGlsZHJlbiB3aXRoIGEgbWFya3VwIHN0cmluZy4KKyAgICAgKgorICAg
ICAqIEBwYXJhbSB7c3RyaW5nfSBuZXh0TWFya3VwIFN0cmluZyBvZiBtYXJrdXAuCisgICAgICog
QGludGVybmFsCisgICAgICovCisgICAgdXBkYXRlTWFya3VwOiBmdW5jdGlvbiAobmV4dE1hcmt1
cCkgeworICAgICAgdmFyIHByZXZDaGlsZHJlbiA9IHRoaXMuX3JlbmRlcmVkQ2hpbGRyZW47Cisg
ICAgICAvLyBSZW1vdmUgYW55IHJlbmRlcmVkIGNoaWxkcmVuLgorICAgICAgUmVhY3RDaGlsZFJl
Y29uY2lsZXIudW5tb3VudENoaWxkcmVuKHByZXZDaGlsZHJlbiwgZmFsc2UpOworICAgICAgZm9y
ICh2YXIgbmFtZSBpbiBwcmV2Q2hpbGRyZW4pIHsKKyAgICAgICAgaWYgKHByZXZDaGlsZHJlbi5o
YXNPd25Qcm9wZXJ0eShuYW1lKSkgeworICAgICAgICAgICFmYWxzZSA/ICJkZXZlbG9wbWVudCIg
IT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3VwZGF0ZVRleHRDb250ZW50IGNh
bGxlZCBvbiBub24tZW1wdHkgY29tcG9uZW50LicpIDogX3Byb2RJbnZhcmlhbnQoJzExOCcpIDog
dm9pZCAwOworICAgICAgICB9CisgICAgICB9CisgICAgICB2YXIgdXBkYXRlcyA9IFttYWtlU2V0
TWFya3VwKG5leHRNYXJrdXApXTsKKyAgICAgIHByb2Nlc3NRdWV1ZSh0aGlzLCB1cGRhdGVzKTsK
KyAgICB9LAorCisgICAgLyoqCisgICAgICogVXBkYXRlcyB0aGUgcmVuZGVyZWQgY2hpbGRyZW4g
d2l0aCBuZXcgY2hpbGRyZW4uCisgICAgICoKKyAgICAgKiBAcGFyYW0gez9vYmplY3R9IG5leHRO
ZXN0ZWRDaGlsZHJlbkVsZW1lbnRzIE5lc3RlZCBjaGlsZCBlbGVtZW50IG1hcHMuCisgICAgICog
QHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvbgorICAgICAqIEBp
bnRlcm5hbAorICAgICAqLworICAgIHVwZGF0ZUNoaWxkcmVuOiBmdW5jdGlvbiAobmV4dE5lc3Rl
ZENoaWxkcmVuRWxlbWVudHMsIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7CisgICAgICAvLyBIb29r
IHVzZWQgYnkgUmVhY3QgQVJUCisgICAgICB0aGlzLl91cGRhdGVDaGlsZHJlbihuZXh0TmVzdGVk
Q2hpbGRyZW5FbGVtZW50cywgdHJhbnNhY3Rpb24sIGNvbnRleHQpOworICAgIH0sCisKKyAgICAv
KioKKyAgICAgKiBAcGFyYW0gez9vYmplY3R9IG5leHROZXN0ZWRDaGlsZHJlbkVsZW1lbnRzIE5l
c3RlZCBjaGlsZCBlbGVtZW50IG1hcHMuCisgICAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRy
YW5zYWN0aW9ufSB0cmFuc2FjdGlvbgorICAgICAqIEBmaW5hbAorICAgICAqIEBwcm90ZWN0ZWQK
KyAgICAgKi8KKyAgICBfdXBkYXRlQ2hpbGRyZW46IGZ1bmN0aW9uIChuZXh0TmVzdGVkQ2hpbGRy
ZW5FbGVtZW50cywgdHJhbnNhY3Rpb24sIGNvbnRleHQpIHsKKyAgICAgIHZhciBwcmV2Q2hpbGRy
ZW4gPSB0aGlzLl9yZW5kZXJlZENoaWxkcmVuOworICAgICAgdmFyIHJlbW92ZWROb2RlcyA9IHt9
OworICAgICAgdmFyIG1vdW50SW1hZ2VzID0gW107CisgICAgICB2YXIgbmV4dENoaWxkcmVuID0g
dGhpcy5fcmVjb25jaWxlclVwZGF0ZUNoaWxkcmVuKHByZXZDaGlsZHJlbiwgbmV4dE5lc3RlZENo
aWxkcmVuRWxlbWVudHMsIG1vdW50SW1hZ2VzLCByZW1vdmVkTm9kZXMsIHRyYW5zYWN0aW9uLCBj
b250ZXh0KTsKKyAgICAgIGlmICghbmV4dENoaWxkcmVuICYmICFwcmV2Q2hpbGRyZW4pIHsKKyAg
ICAgICAgcmV0dXJuOworICAgICAgfQorICAgICAgdmFyIHVwZGF0ZXMgPSBudWxsOworICAgICAg
dmFyIG5hbWU7CisgICAgICAvLyBgbmV4dEluZGV4YCB3aWxsIGluY3JlbWVudCBmb3IgZWFjaCBj
aGlsZCBpbiBgbmV4dENoaWxkcmVuYCwgYnV0CisgICAgICAvLyBgbGFzdEluZGV4YCB3aWxsIGJl
IHRoZSBsYXN0IGluZGV4IHZpc2l0ZWQgaW4gYHByZXZDaGlsZHJlbmAuCisgICAgICB2YXIgbmV4
dEluZGV4ID0gMDsKKyAgICAgIHZhciBsYXN0SW5kZXggPSAwOworICAgICAgLy8gYG5leHRNb3Vu
dEluZGV4YCB3aWxsIGluY3JlbWVudCBmb3IgZWFjaCBuZXdseSBtb3VudGVkIGNoaWxkLgorICAg
ICAgdmFyIG5leHRNb3VudEluZGV4ID0gMDsKKyAgICAgIHZhciBsYXN0UGxhY2VkTm9kZSA9IG51
bGw7CisgICAgICBmb3IgKG5hbWUgaW4gbmV4dENoaWxkcmVuKSB7CisgICAgICAgIGlmICghbmV4
dENoaWxkcmVuLmhhc093blByb3BlcnR5KG5hbWUpKSB7CisgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIH0KKyAgICAgICAgdmFyIHByZXZDaGlsZCA9IHByZXZDaGlsZHJlbiAmJiBwcmV2Q2hp
bGRyZW5bbmFtZV07CisgICAgICAgIHZhciBuZXh0Q2hpbGQgPSBuZXh0Q2hpbGRyZW5bbmFtZV07
CisgICAgICAgIGlmIChwcmV2Q2hpbGQgPT09IG5leHRDaGlsZCkgeworICAgICAgICAgIHVwZGF0
ZXMgPSBlbnF1ZXVlKHVwZGF0ZXMsIHRoaXMubW92ZUNoaWxkKHByZXZDaGlsZCwgbGFzdFBsYWNl
ZE5vZGUsIG5leHRJbmRleCwgbGFzdEluZGV4KSk7CisgICAgICAgICAgbGFzdEluZGV4ID0gTWF0
aC5tYXgocHJldkNoaWxkLl9tb3VudEluZGV4LCBsYXN0SW5kZXgpOworICAgICAgICAgIHByZXZD
aGlsZC5fbW91bnRJbmRleCA9IG5leHRJbmRleDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICBpZiAocHJldkNoaWxkKSB7CisgICAgICAgICAgICAvLyBVcGRhdGUgYGxhc3RJbmRleGAgYmVm
b3JlIGBfbW91bnRJbmRleGAgZ2V0cyB1bnNldCBieSB1bm1vdW50aW5nLgorICAgICAgICAgICAg
bGFzdEluZGV4ID0gTWF0aC5tYXgocHJldkNoaWxkLl9tb3VudEluZGV4LCBsYXN0SW5kZXgpOwor
ICAgICAgICAgICAgLy8gVGhlIGByZW1vdmVkTm9kZXNgIGxvb3AgYmVsb3cgd2lsbCBhY3R1YWxs
eSByZW1vdmUgdGhlIGNoaWxkLgorICAgICAgICAgIH0KKyAgICAgICAgICAvLyBUaGUgY2hpbGQg
bXVzdCBiZSBpbnN0YW50aWF0ZWQgYmVmb3JlIGl0J3MgbW91bnRlZC4KKyAgICAgICAgICB1cGRh
dGVzID0gZW5xdWV1ZSh1cGRhdGVzLCB0aGlzLl9tb3VudENoaWxkQXRJbmRleChuZXh0Q2hpbGQs
IG1vdW50SW1hZ2VzW25leHRNb3VudEluZGV4XSwgbGFzdFBsYWNlZE5vZGUsIG5leHRJbmRleCwg
dHJhbnNhY3Rpb24sIGNvbnRleHQpKTsKKyAgICAgICAgICBuZXh0TW91bnRJbmRleCsrOworICAg
ICAgICB9CisgICAgICAgIG5leHRJbmRleCsrOworICAgICAgICBsYXN0UGxhY2VkTm9kZSA9IFJl
YWN0UmVjb25jaWxlci5nZXRIb3N0Tm9kZShuZXh0Q2hpbGQpOworICAgICAgfQorICAgICAgLy8g
UmVtb3ZlIGNoaWxkcmVuIHRoYXQgYXJlIG5vIGxvbmdlciBwcmVzZW50LgorICAgICAgZm9yIChu
YW1lIGluIHJlbW92ZWROb2RlcykgeworICAgICAgICBpZiAocmVtb3ZlZE5vZGVzLmhhc093blBy
b3BlcnR5KG5hbWUpKSB7CisgICAgICAgICAgdXBkYXRlcyA9IGVucXVldWUodXBkYXRlcywgdGhp
cy5fdW5tb3VudENoaWxkKHByZXZDaGlsZHJlbltuYW1lXSwgcmVtb3ZlZE5vZGVzW25hbWVdKSk7
CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGlmICh1cGRhdGVzKSB7CisgICAgICAgIHByb2Nl
c3NRdWV1ZSh0aGlzLCB1cGRhdGVzKTsKKyAgICAgIH0KKyAgICAgIHRoaXMuX3JlbmRlcmVkQ2hp
bGRyZW4gPSBuZXh0Q2hpbGRyZW47CisKKyAgICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJv
ZHVjdGlvbicpIHsKKyAgICAgICAgc2V0Q2hpbGRyZW5Gb3JJbnN0cnVtZW50YXRpb24uY2FsbCh0
aGlzLCBuZXh0Q2hpbGRyZW4pOworICAgICAgfQorICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBV
bm1vdW50cyBhbGwgcmVuZGVyZWQgY2hpbGRyZW4uIFRoaXMgc2hvdWxkIGJlIHVzZWQgdG8gY2xl
YW4gdXAgY2hpbGRyZW4KKyAgICAgKiB3aGVuIHRoaXMgY29tcG9uZW50IGlzIHVubW91bnRlZC4g
SXQgZG9lcyBub3QgYWN0dWFsbHkgcGVyZm9ybSBhbnkKKyAgICAgKiBiYWNrZW5kIG9wZXJhdGlv
bnMuCisgICAgICoKKyAgICAgKiBAaW50ZXJuYWwKKyAgICAgKi8KKyAgICB1bm1vdW50Q2hpbGRy
ZW46IGZ1bmN0aW9uIChzYWZlbHkpIHsKKyAgICAgIHZhciByZW5kZXJlZENoaWxkcmVuID0gdGhp
cy5fcmVuZGVyZWRDaGlsZHJlbjsKKyAgICAgIFJlYWN0Q2hpbGRSZWNvbmNpbGVyLnVubW91bnRD
aGlsZHJlbihyZW5kZXJlZENoaWxkcmVuLCBzYWZlbHkpOworICAgICAgdGhpcy5fcmVuZGVyZWRD
aGlsZHJlbiA9IG51bGw7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIE1vdmVzIGEgY2hpbGQg
Y29tcG9uZW50IHRvIHRoZSBzdXBwbGllZCBpbmRleC4KKyAgICAgKgorICAgICAqIEBwYXJhbSB7
UmVhY3RDb21wb25lbnR9IGNoaWxkIENvbXBvbmVudCB0byBtb3ZlLgorICAgICAqIEBwYXJhbSB7
bnVtYmVyfSB0b0luZGV4IERlc3RpbmF0aW9uIGluZGV4IG9mIHRoZSBlbGVtZW50LgorICAgICAq
IEBwYXJhbSB7bnVtYmVyfSBsYXN0SW5kZXggTGFzdCBpbmRleCB2aXNpdGVkIG9mIHRoZSBzaWJs
aW5ncyBvZiBgY2hpbGRgLgorICAgICAqIEBwcm90ZWN0ZWQKKyAgICAgKi8KKyAgICBtb3ZlQ2hp
bGQ6IGZ1bmN0aW9uIChjaGlsZCwgYWZ0ZXJOb2RlLCB0b0luZGV4LCBsYXN0SW5kZXgpIHsKKyAg
ICAgIC8vIElmIHRoZSBpbmRleCBvZiBgY2hpbGRgIGlzIGxlc3MgdGhhbiBgbGFzdEluZGV4YCwg
dGhlbiBpdCBuZWVkcyB0bworICAgICAgLy8gYmUgbW92ZWQuIE90aGVyd2lzZSwgd2UgZG8gbm90
IG5lZWQgdG8gbW92ZSBpdCBiZWNhdXNlIGEgY2hpbGQgd2lsbCBiZQorICAgICAgLy8gaW5zZXJ0
ZWQgb3IgbW92ZWQgYmVmb3JlIGBjaGlsZGAuCisgICAgICBpZiAoY2hpbGQuX21vdW50SW5kZXgg
PCBsYXN0SW5kZXgpIHsKKyAgICAgICAgcmV0dXJuIG1ha2VNb3ZlKGNoaWxkLCBhZnRlck5vZGUs
IHRvSW5kZXgpOworICAgICAgfQorICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBDcmVhdGVzIGEg
Y2hpbGQgY29tcG9uZW50LgorICAgICAqCisgICAgICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0g
Y2hpbGQgQ29tcG9uZW50IHRvIGNyZWF0ZS4KKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbW91bnRJ
bWFnZSBNYXJrdXAgdG8gaW5zZXJ0LgorICAgICAqIEBwcm90ZWN0ZWQKKyAgICAgKi8KKyAgICBj
cmVhdGVDaGlsZDogZnVuY3Rpb24gKGNoaWxkLCBhZnRlck5vZGUsIG1vdW50SW1hZ2UpIHsKKyAg
ICAgIHJldHVybiBtYWtlSW5zZXJ0TWFya3VwKG1vdW50SW1hZ2UsIGFmdGVyTm9kZSwgY2hpbGQu
X21vdW50SW5kZXgpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBSZW1vdmVzIGEgY2hpbGQg
Y29tcG9uZW50LgorICAgICAqCisgICAgICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gY2hpbGQg
Q2hpbGQgdG8gcmVtb3ZlLgorICAgICAqIEBwcm90ZWN0ZWQKKyAgICAgKi8KKyAgICByZW1vdmVD
aGlsZDogZnVuY3Rpb24gKGNoaWxkLCBub2RlKSB7CisgICAgICByZXR1cm4gbWFrZVJlbW92ZShj
aGlsZCwgbm9kZSk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIE1vdW50cyBhIGNoaWxkIHdp
dGggdGhlIHN1cHBsaWVkIG5hbWUuCisgICAgICoKKyAgICAgKiBOT1RFOiBUaGlzIGlzIHBhcnQg
b2YgYHVwZGF0ZUNoaWxkcmVuYCBhbmQgaXMgaGVyZSBmb3IgcmVhZGFiaWxpdHkuCisgICAgICoK
KyAgICAgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBjaGlsZCBDb21wb25lbnQgdG8gbW91bnQu
CisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgTmFtZSBvZiB0aGUgY2hpbGQuCisgICAgICog
QHBhcmFtIHtudW1iZXJ9IGluZGV4IEluZGV4IGF0IHdoaWNoIHRvIGluc2VydCB0aGUgY2hpbGQu
CisgICAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvbgor
ICAgICAqIEBwcml2YXRlCisgICAgICovCisgICAgX21vdW50Q2hpbGRBdEluZGV4OiBmdW5jdGlv
biAoY2hpbGQsIG1vdW50SW1hZ2UsIGFmdGVyTm9kZSwgaW5kZXgsIHRyYW5zYWN0aW9uLCBjb250
ZXh0KSB7CisgICAgICBjaGlsZC5fbW91bnRJbmRleCA9IGluZGV4OworICAgICAgcmV0dXJuIHRo
aXMuY3JlYXRlQ2hpbGQoY2hpbGQsIGFmdGVyTm9kZSwgbW91bnRJbWFnZSk7CisgICAgfSwKKwor
ICAgIC8qKgorICAgICAqIFVubW91bnRzIGEgcmVuZGVyZWQgY2hpbGQuCisgICAgICoKKyAgICAg
KiBOT1RFOiBUaGlzIGlzIHBhcnQgb2YgYHVwZGF0ZUNoaWxkcmVuYCBhbmQgaXMgaGVyZSBmb3Ig
cmVhZGFiaWxpdHkuCisgICAgICoKKyAgICAgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBjaGls
ZCBDb21wb25lbnQgdG8gdW5tb3VudC4KKyAgICAgKiBAcHJpdmF0ZQorICAgICAqLworICAgIF91
bm1vdW50Q2hpbGQ6IGZ1bmN0aW9uIChjaGlsZCwgbm9kZSkgeworICAgICAgdmFyIHVwZGF0ZSA9
IHRoaXMucmVtb3ZlQ2hpbGQoY2hpbGQsIG5vZGUpOworICAgICAgY2hpbGQuX21vdW50SW5kZXgg
PSBudWxsOworICAgICAgcmV0dXJuIHVwZGF0ZTsKKyAgICB9CisKKyAgfQorCit9OworCittb2R1
bGUuZXhwb3J0cyA9IFJlYWN0TXVsdGlDaGlsZDsKK30seyIxMDEiOjEwMSwiMTE2IjoxMTYsIjEy
MyI6MTIzLCIxMzIiOjEzMiwiMTQwIjoxNDAsIjI2IjoyNiwiMjgiOjI4LCI1OCI6NTgsIjU5Ijo1
OSwiNjgiOjY4fV0sNjM6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisg
KiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBC
U0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICog
b2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUg
c2FtZSBkaXJlY3RvcnkuCisgKgorICogCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX3By
b2RJbnZhcmlhbnQgPSBfZGVyZXFfKDExNik7CisKK3ZhciBSZWFjdCA9IF9kZXJlcV8oMTI0KTsK
KwordmFyIGludmFyaWFudCA9IF9kZXJlcV8oMTQwKTsKKwordmFyIFJlYWN0Tm9kZVR5cGVzID0g
eworICBIT1NUOiAwLAorICBDT01QT1NJVEU6IDEsCisgIEVNUFRZOiAyLAorCisgIGdldFR5cGU6
IGZ1bmN0aW9uIChub2RlKSB7CisgICAgaWYgKG5vZGUgPT09IG51bGwgfHwgbm9kZSA9PT0gZmFs
c2UpIHsKKyAgICAgIHJldHVybiBSZWFjdE5vZGVUeXBlcy5FTVBUWTsKKyAgICB9IGVsc2UgaWYg
KFJlYWN0LmlzVmFsaWRFbGVtZW50KG5vZGUpKSB7CisgICAgICBpZiAodHlwZW9mIG5vZGUudHlw
ZSA9PT0gJ2Z1bmN0aW9uJykgeworICAgICAgICByZXR1cm4gUmVhY3ROb2RlVHlwZXMuQ09NUE9T
SVRFOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIFJlYWN0Tm9kZVR5cGVzLkhPU1Q7
CisgICAgICB9CisgICAgfQorICAgICFmYWxzZSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0
aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1VuZXhwZWN0ZWQgbm9kZTogJXMnLCBub2RlKSA6IF9w
cm9kSW52YXJpYW50KCcyNicsIG5vZGUpIDogdm9pZCAwOworICB9Cit9OworCittb2R1bGUuZXhw
b3J0cyA9IFJlYWN0Tm9kZVR5cGVzOworfSx7IjExNiI6MTE2LCIxMjQiOjEyNCwiMTQwIjoxNDB9
XSw2NDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdo
dCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBs
aWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9y
eSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQg
cmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVj
dG9yeS4KKyAqCisgKiAKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBfcHJvZEludmFyaWFu
dCA9IF9kZXJlcV8oMTE2KTsKKwordmFyIGludmFyaWFudCA9IF9kZXJlcV8oMTQwKTsKKworLyoq
CisgKiBAcGFyYW0gez9vYmplY3R9IG9iamVjdAorICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBp
ZiBgb2JqZWN0YCBpcyBhIHZhbGlkIG93bmVyLgorICogQGZpbmFsCisgKi8KK2Z1bmN0aW9uIGlz
VmFsaWRPd25lcihvYmplY3QpIHsKKyAgcmV0dXJuICEhKG9iamVjdCAmJiB0eXBlb2Ygb2JqZWN0
LmF0dGFjaFJlZiA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2Ygb2JqZWN0LmRldGFjaFJlZiA9PT0g
J2Z1bmN0aW9uJyk7Cit9CisKKy8qKgorICogUmVhY3RPd25lcnMgYXJlIGNhcGFibGUgb2Ygc3Rv
cmluZyByZWZlcmVuY2VzIHRvIG93bmVkIGNvbXBvbmVudHMuCisgKgorICogQWxsIGNvbXBvbmVu
dHMgYXJlIGNhcGFibGUgb2YgLy9iZWluZy8vIHJlZmVyZW5jZWQgYnkgb3duZXIgY29tcG9uZW50
cywgYnV0CisgKiBvbmx5IFJlYWN0T3duZXIgY29tcG9uZW50cyBhcmUgY2FwYWJsZSBvZiAvL3Jl
ZmVyZW5jaW5nLy8gb3duZWQgY29tcG9uZW50cy4KKyAqIFRoZSBuYW1lZCByZWZlcmVuY2UgaXMg
a25vd24gYXMgYSAicmVmIi4KKyAqCisgKiBSZWZzIGFyZSBhdmFpbGFibGUgd2hlbiBtb3VudGVk
IGFuZCB1cGRhdGVkIGR1cmluZyByZWNvbmNpbGlhdGlvbi4KKyAqCisgKiAgIHZhciBNeUNvbXBv
bmVudCA9IFJlYWN0LmNyZWF0ZUNsYXNzKHsKKyAqICAgICByZW5kZXI6IGZ1bmN0aW9uKCkgewor
ICogICAgICAgcmV0dXJuICgKKyAqICAgICAgICAgPGRpdiBvbkNsaWNrPXt0aGlzLmhhbmRsZUNs
aWNrfT4KKyAqICAgICAgICAgICA8Q3VzdG9tQ29tcG9uZW50IHJlZj0iY3VzdG9tIiAvPgorICog
ICAgICAgICA8L2Rpdj4KKyAqICAgICAgICk7CisgKiAgICAgfSwKKyAqICAgICBoYW5kbGVDbGlj
azogZnVuY3Rpb24oKSB7CisgKiAgICAgICB0aGlzLnJlZnMuY3VzdG9tLmhhbmRsZUNsaWNrKCk7
CisgKiAgICAgfSwKKyAqICAgICBjb21wb25lbnREaWRNb3VudDogZnVuY3Rpb24oKSB7CisgKiAg
ICAgICB0aGlzLnJlZnMuY3VzdG9tLmluaXRpYWxpemUoKTsKKyAqICAgICB9CisgKiAgIH0pOwor
ICoKKyAqIFJlZnMgc2hvdWxkIHJhcmVseSBiZSB1c2VkLiBXaGVuIHJlZnMgYXJlIHVzZWQsIHRo
ZXkgc2hvdWxkIG9ubHkgYmUgZG9uZSB0bworICogY29udHJvbCBkYXRhIHRoYXQgaXMgbm90IGhh
bmRsZWQgYnkgUmVhY3QncyBkYXRhIGZsb3cuCisgKgorICogQGNsYXNzIFJlYWN0T3duZXIKKyAq
LwordmFyIFJlYWN0T3duZXIgPSB7CisgIC8qKgorICAgKiBBZGRzIGEgY29tcG9uZW50IGJ5IHJl
ZiB0byBhbiBvd25lciBjb21wb25lbnQuCisgICAqCisgICAqIEBwYXJhbSB7UmVhY3RDb21wb25l
bnR9IGNvbXBvbmVudCBDb21wb25lbnQgdG8gcmVmZXJlbmNlLgorICAgKiBAcGFyYW0ge3N0cmlu
Z30gcmVmIE5hbWUgYnkgd2hpY2ggdG8gcmVmZXIgdG8gdGhlIGNvbXBvbmVudC4KKyAgICogQHBh
cmFtIHtSZWFjdE93bmVyfSBvd25lciBDb21wb25lbnQgb24gd2hpY2ggdG8gcmVjb3JkIHRoZSBy
ZWYuCisgICAqIEBmaW5hbAorICAgKiBAaW50ZXJuYWwKKyAgICovCisgIGFkZENvbXBvbmVudEFz
UmVmVG86IGZ1bmN0aW9uIChjb21wb25lbnQsIHJlZiwgb3duZXIpIHsKKyAgICAhaXNWYWxpZE93
bmVyKG93bmVyKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChm
YWxzZSwgJ2FkZENvbXBvbmVudEFzUmVmVG8oLi4uKTogT25seSBhIFJlYWN0T3duZXIgY2FuIGhh
dmUgcmVmcy4gWW91IG1pZ2h0IGJlIGFkZGluZyBhIHJlZiB0byBhIGNvbXBvbmVudCB0aGF0IHdh
cyBub3QgY3JlYXRlZCBpbnNpZGUgYSBjb21wb25lbnRcJ3MgYHJlbmRlcmAgbWV0aG9kLCBvciB5
b3UgaGF2ZSBtdWx0aXBsZSBjb3BpZXMgb2YgUmVhY3QgbG9hZGVkIChkZXRhaWxzOiBodHRwczov
L2ZiLm1lL3JlYWN0LXJlZnMtbXVzdC1oYXZlLW93bmVyKS4nKSA6IF9wcm9kSW52YXJpYW50KCcx
MTknKSA6IHZvaWQgMDsKKyAgICBvd25lci5hdHRhY2hSZWYocmVmLCBjb21wb25lbnQpOworICB9
LAorCisgIC8qKgorICAgKiBSZW1vdmVzIGEgY29tcG9uZW50IGJ5IHJlZiBmcm9tIGFuIG93bmVy
IGNvbXBvbmVudC4KKyAgICoKKyAgICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gY29tcG9uZW50
IENvbXBvbmVudCB0byBkZXJlZmVyZW5jZS4KKyAgICogQHBhcmFtIHtzdHJpbmd9IHJlZiBOYW1l
IG9mIHRoZSByZWYgdG8gcmVtb3ZlLgorICAgKiBAcGFyYW0ge1JlYWN0T3duZXJ9IG93bmVyIENv
bXBvbmVudCBvbiB3aGljaCB0aGUgcmVmIGlzIHJlY29yZGVkLgorICAgKiBAZmluYWwKKyAgICog
QGludGVybmFsCisgICAqLworICByZW1vdmVDb21wb25lbnRBc1JlZkZyb206IGZ1bmN0aW9uIChj
b21wb25lbnQsIHJlZiwgb3duZXIpIHsKKyAgICAhaXNWYWxpZE93bmVyKG93bmVyKSA/ICJkZXZl
bG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3JlbW92ZUNvbXBv
bmVudEFzUmVmRnJvbSguLi4pOiBPbmx5IGEgUmVhY3RPd25lciBjYW4gaGF2ZSByZWZzLiBZb3Ug
bWlnaHQgYmUgcmVtb3ZpbmcgYSByZWYgdG8gYSBjb21wb25lbnQgdGhhdCB3YXMgbm90IGNyZWF0
ZWQgaW5zaWRlIGEgY29tcG9uZW50XCdzIGByZW5kZXJgIG1ldGhvZCwgb3IgeW91IGhhdmUgbXVs
dGlwbGUgY29waWVzIG9mIFJlYWN0IGxvYWRlZCAoZGV0YWlsczogaHR0cHM6Ly9mYi5tZS9yZWFj
dC1yZWZzLW11c3QtaGF2ZS1vd25lcikuJykgOiBfcHJvZEludmFyaWFudCgnMTIwJykgOiB2b2lk
IDA7CisgICAgdmFyIG93bmVyUHVibGljSW5zdGFuY2UgPSBvd25lci5nZXRQdWJsaWNJbnN0YW5j
ZSgpOworICAgIC8vIENoZWNrIHRoYXQgYGNvbXBvbmVudGAncyBvd25lciBpcyBzdGlsbCBhbGl2
ZSBhbmQgdGhhdCBgY29tcG9uZW50YCBpcyBzdGlsbCB0aGUgY3VycmVudCByZWYKKyAgICAvLyBi
ZWNhdXNlIHdlIGRvIG5vdCB3YW50IHRvIGRldGFjaCB0aGUgcmVmIGlmIGFub3RoZXIgY29tcG9u
ZW50IHN0b2xlIGl0LgorICAgIGlmIChvd25lclB1YmxpY0luc3RhbmNlICYmIG93bmVyUHVibGlj
SW5zdGFuY2UucmVmc1tyZWZdID09PSBjb21wb25lbnQuZ2V0UHVibGljSW5zdGFuY2UoKSkgewor
ICAgICAgb3duZXIuZGV0YWNoUmVmKHJlZik7CisgICAgfQorICB9CisKK307CisKK21vZHVsZS5l
eHBvcnRzID0gUmVhY3RPd25lcjsKK30seyIxMTYiOjExNiwiMTQwIjoxNDB9XSw2NTpbZnVuY3Rp
b24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNl
bnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMg
c291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5k
IGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNv
dXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBi
ZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisg
KiAKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1l
cyA9IHt9OworCitpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgIFJlYWN0
UHJvcFR5cGVMb2NhdGlvbk5hbWVzID0geworICAgIHByb3A6ICdwcm9wJywKKyAgICBjb250ZXh0
OiAnY29udGV4dCcsCisgICAgY2hpbGRDb250ZXh0OiAnY2hpbGQgY29udGV4dCcKKyAgfTsKK30K
KworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lczsKK30se31dLDY2
OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIw
MTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vu
c2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9m
IHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdo
dHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5
LgorICoKKyAqIAorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIFJlYWN0UHJvcFR5cGVzU2Vj
cmV0ID0gJ1NFQ1JFVF9ET19OT1RfUEFTU19USElTX09SX1lPVV9XSUxMX0JFX0ZJUkVEJzsKKwor
bW9kdWxlLmV4cG9ydHMgPSBSZWFjdFByb3BUeXBlc1NlY3JldDsKK30se31dLDY3OltmdW5jdGlv
bihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2Vu
dCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBz
b3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQg
aW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291
cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJl
IGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAq
LworCisndXNlIHN0cmljdCc7CisKK3ZhciBfYXNzaWduID0gX2RlcmVxXygxNDgpOworCit2YXIg
Q2FsbGJhY2tRdWV1ZSA9IF9kZXJlcV8oNik7Cit2YXIgUG9vbGVkQ2xhc3MgPSBfZGVyZXFfKDI0
KTsKK3ZhciBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIgPSBfZGVyZXFfKDI1KTsKK3ZhciBSZWFj
dElucHV0U2VsZWN0aW9uID0gX2RlcmVxXyg1Nyk7Cit2YXIgUmVhY3RJbnN0cnVtZW50YXRpb24g
PSBfZGVyZXFfKDU5KTsKK3ZhciBUcmFuc2FjdGlvbiA9IF9kZXJlcV8oOTMpOwordmFyIFJlYWN0
VXBkYXRlUXVldWUgPSBfZGVyZXFfKDc0KTsKKworLyoqCisgKiBFbnN1cmVzIHRoYXQsIHdoZW4g
cG9zc2libGUsIHRoZSBzZWxlY3Rpb24gcmFuZ2UgKGN1cnJlbnRseSBzZWxlY3RlZCB0ZXh0Cisg
KiBpbnB1dCkgaXMgbm90IGRpc3R1cmJlZCBieSBwZXJmb3JtaW5nIHRoZSB0cmFuc2FjdGlvbi4K
KyAqLwordmFyIFNFTEVDVElPTl9SRVNUT1JBVElPTiA9IHsKKyAgLyoqCisgICAqIEByZXR1cm4g
e1NlbGVjdGlvbn0gU2VsZWN0aW9uIGluZm9ybWF0aW9uLgorICAgKi8KKyAgaW5pdGlhbGl6ZTog
UmVhY3RJbnB1dFNlbGVjdGlvbi5nZXRTZWxlY3Rpb25JbmZvcm1hdGlvbiwKKyAgLyoqCisgICAq
IEBwYXJhbSB7U2VsZWN0aW9ufSBzZWwgU2VsZWN0aW9uIGluZm9ybWF0aW9uIHJldHVybmVkIGZy
b20gYGluaXRpYWxpemVgLgorICAgKi8KKyAgY2xvc2U6IFJlYWN0SW5wdXRTZWxlY3Rpb24ucmVz
dG9yZVNlbGVjdGlvbgorfTsKKworLyoqCisgKiBTdXBwcmVzc2VzIGV2ZW50cyAoYmx1ci9mb2N1
cykgdGhhdCBjb3VsZCBiZSBpbmFkdmVydGVudGx5IGRpc3BhdGNoZWQgZHVlIHRvCisgKiBoaWdo
IGxldmVsIERPTSBtYW5pcHVsYXRpb25zIChsaWtlIHRlbXBvcmFyaWx5IHJlbW92aW5nIGEgdGV4
dCBpbnB1dCBmcm9tIHRoZQorICogRE9NKS4KKyAqLwordmFyIEVWRU5UX1NVUFBSRVNTSU9OID0g
eworICAvKioKKyAgICogQHJldHVybiB7Ym9vbGVhbn0gVGhlIGVuYWJsZWQgc3RhdHVzIG9mIGBS
ZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXJgIGJlZm9yZQorICAgKiB0aGUgcmVjb25jaWxpYXRpb24u
CisgICAqLworICBpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7CisgICAgdmFyIGN1cnJlbnRseUVu
YWJsZWQgPSBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuaXNFbmFibGVkKCk7CisgICAgUmVhY3RC
cm93c2VyRXZlbnRFbWl0dGVyLnNldEVuYWJsZWQoZmFsc2UpOworICAgIHJldHVybiBjdXJyZW50
bHlFbmFibGVkOworICB9LAorCisgIC8qKgorICAgKiBAcGFyYW0ge2Jvb2xlYW59IHByZXZpb3Vz
bHlFbmFibGVkIEVuYWJsZWQgc3RhdHVzIG9mCisgICAqICAgYFJlYWN0QnJvd3NlckV2ZW50RW1p
dHRlcmAgYmVmb3JlIHRoZSByZWNvbmNpbGlhdGlvbiBvY2N1cnJlZC4gYGNsb3NlYAorICAgKiAg
IHJlc3RvcmVzIHRoZSBwcmV2aW91cyB2YWx1ZS4KKyAgICovCisgIGNsb3NlOiBmdW5jdGlvbiAo
cHJldmlvdXNseUVuYWJsZWQpIHsKKyAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuc2V0RW5h
YmxlZChwcmV2aW91c2x5RW5hYmxlZCk7CisgIH0KK307CisKKy8qKgorICogUHJvdmlkZXMgYSBx
dWV1ZSBmb3IgY29sbGVjdGluZyBgY29tcG9uZW50RGlkTW91bnRgIGFuZAorICogYGNvbXBvbmVu
dERpZFVwZGF0ZWAgY2FsbGJhY2tzIGR1cmluZyB0aGUgdHJhbnNhY3Rpb24uCisgKi8KK3ZhciBP
Tl9ET01fUkVBRFlfUVVFVUVJTkcgPSB7CisgIC8qKgorICAgKiBJbml0aWFsaXplcyB0aGUgaW50
ZXJuYWwgYG9uRE9NUmVhZHlgIHF1ZXVlLgorICAgKi8KKyAgaW5pdGlhbGl6ZTogZnVuY3Rpb24g
KCkgeworICAgIHRoaXMucmVhY3RNb3VudFJlYWR5LnJlc2V0KCk7CisgIH0sCisKKyAgLyoqCisg
ICAqIEFmdGVyIERPTSBpcyBmbHVzaGVkLCBpbnZva2UgYWxsIHJlZ2lzdGVyZWQgYG9uRE9NUmVh
ZHlgIGNhbGxiYWNrcy4KKyAgICovCisgIGNsb3NlOiBmdW5jdGlvbiAoKSB7CisgICAgdGhpcy5y
ZWFjdE1vdW50UmVhZHkubm90aWZ5QWxsKCk7CisgIH0KK307CisKKy8qKgorICogRXhlY3V0ZWQg
d2l0aGluIHRoZSBzY29wZSBvZiB0aGUgYFRyYW5zYWN0aW9uYCBpbnN0YW5jZS4gQ29uc2lkZXIg
dGhlc2UgYXMKKyAqIGJlaW5nIG1lbWJlciBtZXRob2RzLCBidXQgd2l0aCBhbiBpbXBsaWVkIG9y
ZGVyaW5nIHdoaWxlIGJlaW5nIGlzb2xhdGVkIGZyb20KKyAqIGVhY2ggb3RoZXIuCisgKi8KK3Zh
ciBUUkFOU0FDVElPTl9XUkFQUEVSUyA9IFtTRUxFQ1RJT05fUkVTVE9SQVRJT04sIEVWRU5UX1NV
UFBSRVNTSU9OLCBPTl9ET01fUkVBRFlfUVVFVUVJTkddOworCitpZiAoImRldmVsb3BtZW50IiAh
PT0gJ3Byb2R1Y3Rpb24nKSB7CisgIFRSQU5TQUNUSU9OX1dSQVBQRVJTLnB1c2goeworICAgIGlu
aXRpYWxpemU6IFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkJlZ2luRmx1c2gsCisg
ICAgY2xvc2U6IFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkVuZEZsdXNoCisgIH0p
OworfQorCisvKioKKyAqIEN1cnJlbnRseToKKyAqIC0gVGhlIG9yZGVyIHRoYXQgdGhlc2UgYXJl
IGxpc3RlZCBpbiB0aGUgdHJhbnNhY3Rpb24gaXMgY3JpdGljYWw6CisgKiAtIFN1cHByZXNzZXMg
ZXZlbnRzLgorICogLSBSZXN0b3JlcyBzZWxlY3Rpb24gcmFuZ2UuCisgKgorICogRnV0dXJlOgor
ICogLSBSZXN0b3JlIGRvY3VtZW50L292ZXJmbG93IHNjcm9sbCBwb3NpdGlvbnMgdGhhdCB3ZXJl
IHVuaW50ZW50aW9uYWxseQorICogICBtb2RpZmllZCB2aWEgRE9NIGluc2VydGlvbnMgYWJvdmUg
dGhlIHRvcCB2aWV3cG9ydCBib3VuZGFyeS4KKyAqIC0gSW1wbGVtZW50L2ludGVncmF0ZSB3aXRo
IGN1c3RvbWl6ZWQgY29uc3RyYWludCBiYXNlZCBsYXlvdXQgc3lzdGVtIGFuZCBrZWVwCisgKiAg
IHRyYWNrIG9mIHdoaWNoIGRpbWVuc2lvbnMgbXVzdCBiZSByZW1lYXN1cmVkLgorICoKKyAqIEBj
bGFzcyBSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uCisgKi8KK2Z1bmN0aW9uIFJlYWN0UmVjb25j
aWxlVHJhbnNhY3Rpb24odXNlQ3JlYXRlRWxlbWVudCkgeworICB0aGlzLnJlaW5pdGlhbGl6ZVRy
YW5zYWN0aW9uKCk7CisgIC8vIE9ubHkgc2VydmVyLXNpZGUgcmVuZGVyaW5nIHJlYWxseSBuZWVk
cyB0aGlzIG9wdGlvbiAoc2VlCisgIC8vIGBSZWFjdFNlcnZlclJlbmRlcmluZ2ApLCBidXQgc2Vy
dmVyLXNpZGUgdXNlcworICAvLyBgUmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbmAgaW5z
dGVhZC4gVGhpcyBvcHRpb24gaXMgaGVyZSBzbyB0aGF0IGl0J3MKKyAgLy8gYWNjZXNzaWJsZSBh
bmQgZGVmYXVsdHMgdG8gZmFsc2Ugd2hlbiBgUmVhY3RET01Db21wb25lbnRgIGFuZAorICAvLyBg
UmVhY3RET01UZXh0Q29tcG9uZW50YCBjaGVja3MgaXQgaW4gYG1vdW50Q29tcG9uZW50YC5gCisg
IHRoaXMucmVuZGVyVG9TdGF0aWNNYXJrdXAgPSBmYWxzZTsKKyAgdGhpcy5yZWFjdE1vdW50UmVh
ZHkgPSBDYWxsYmFja1F1ZXVlLmdldFBvb2xlZChudWxsKTsKKyAgdGhpcy51c2VDcmVhdGVFbGVt
ZW50ID0gdXNlQ3JlYXRlRWxlbWVudDsKK30KKwordmFyIE1peGluID0geworICAvKioKKyAgICog
QHNlZSBUcmFuc2FjdGlvbgorICAgKiBAYWJzdHJhY3QKKyAgICogQGZpbmFsCisgICAqIEByZXR1
cm4ge2FycmF5PG9iamVjdD59IExpc3Qgb2Ygb3BlcmF0aW9uIHdyYXAgcHJvY2VkdXJlcy4KKyAg
ICogICBUT0RPOiBjb252ZXJ0IHRvIGFycmF5PFRyYW5zYWN0aW9uV3JhcHBlcj4KKyAgICovCisg
IGdldFRyYW5zYWN0aW9uV3JhcHBlcnM6IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gVFJBTlNB
Q1RJT05fV1JBUFBFUlM7CisgIH0sCisKKyAgLyoqCisgICAqIEByZXR1cm4ge29iamVjdH0gVGhl
IHF1ZXVlIHRvIGNvbGxlY3QgYG9uRE9NUmVhZHlgIGNhbGxiYWNrcyB3aXRoLgorICAgKi8KKyAg
Z2V0UmVhY3RNb3VudFJlYWR5OiBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIHRoaXMucmVhY3RN
b3VudFJlYWR5OworICB9LAorCisgIC8qKgorICAgKiBAcmV0dXJuIHtvYmplY3R9IFRoZSBxdWV1
ZSB0byBjb2xsZWN0IFJlYWN0IGFzeW5jIGV2ZW50cy4KKyAgICovCisgIGdldFVwZGF0ZVF1ZXVl
OiBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIFJlYWN0VXBkYXRlUXVldWU7CisgIH0sCisKKyAg
LyoqCisgICAqIFNhdmUgY3VycmVudCB0cmFuc2FjdGlvbiBzdGF0ZSAtLSBpZiB0aGUgcmV0dXJu
IHZhbHVlIGZyb20gdGhpcyBtZXRob2QgaXMKKyAgICogcGFzc2VkIHRvIGByb2xsYmFja2AsIHRo
ZSB0cmFuc2FjdGlvbiB3aWxsIGJlIHJlc2V0IHRvIHRoYXQgc3RhdGUuCisgICAqLworICBjaGVj
a3BvaW50OiBmdW5jdGlvbiAoKSB7CisgICAgLy8gcmVhY3RNb3VudFJlYWR5IGlzIHRoZSBvdXIg
b25seSBzdGF0ZWZ1bCB3cmFwcGVyCisgICAgcmV0dXJuIHRoaXMucmVhY3RNb3VudFJlYWR5LmNo
ZWNrcG9pbnQoKTsKKyAgfSwKKworICByb2xsYmFjazogZnVuY3Rpb24gKGNoZWNrcG9pbnQpIHsK
KyAgICB0aGlzLnJlYWN0TW91bnRSZWFkeS5yb2xsYmFjayhjaGVja3BvaW50KTsKKyAgfSwKKwor
ICAvKioKKyAgICogYFBvb2xlZENsYXNzYCBsb29rcyBmb3IgdGhpcywgYW5kIHdpbGwgaW52b2tl
IHRoaXMgYmVmb3JlIGFsbG93aW5nIHRoaXMKKyAgICogaW5zdGFuY2UgdG8gYmUgcmV1c2VkLgor
ICAgKi8KKyAgZGVzdHJ1Y3RvcjogZnVuY3Rpb24gKCkgeworICAgIENhbGxiYWNrUXVldWUucmVs
ZWFzZSh0aGlzLnJlYWN0TW91bnRSZWFkeSk7CisgICAgdGhpcy5yZWFjdE1vdW50UmVhZHkgPSBu
dWxsOworICB9Cit9OworCitfYXNzaWduKFJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24ucHJvdG90
eXBlLCBUcmFuc2FjdGlvbiwgTWl4aW4pOworCitQb29sZWRDbGFzcy5hZGRQb29saW5nVG8oUmVh
Y3RSZWNvbmNpbGVUcmFuc2FjdGlvbik7CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RSZWNvbmNp
bGVUcmFuc2FjdGlvbjsKK30seyIxNDgiOjE0OCwiMjQiOjI0LCIyNSI6MjUsIjU3Ijo1NywiNTki
OjU5LCI2Ijo2LCI3NCI6NzQsIjkzIjo5M31dLDY4OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxl
eHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4K
KyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNl
bnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0
aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRF
TlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7
CisKK3ZhciBSZWFjdFJlZiA9IF9kZXJlcV8oNjkpOwordmFyIFJlYWN0SW5zdHJ1bWVudGF0aW9u
ID0gX2RlcmVxXyg1OSk7CisKK3ZhciB3YXJuaW5nID0gX2RlcmVxXygxNDcpOworCisvKioKKyAq
IEhlbHBlciB0byBjYWxsIFJlYWN0UmVmLmF0dGFjaFJlZnMgd2l0aCB0aGlzIGNvbXBvc2l0ZSBj
b21wb25lbnQsIHNwbGl0IG91dAorICogdG8gYXZvaWQgYWxsb2NhdGlvbnMgaW4gdGhlIHRyYW5z
YWN0aW9uIG1vdW50LXJlYWR5IHF1ZXVlLgorICovCitmdW5jdGlvbiBhdHRhY2hSZWZzKCkgewor
ICBSZWFjdFJlZi5hdHRhY2hSZWZzKHRoaXMsIHRoaXMuX2N1cnJlbnRFbGVtZW50KTsKK30KKwor
dmFyIFJlYWN0UmVjb25jaWxlciA9IHsKKworICAvKioKKyAgICogSW5pdGlhbGl6ZXMgdGhlIGNv
bXBvbmVudCwgcmVuZGVycyBtYXJrdXAsIGFuZCByZWdpc3RlcnMgZXZlbnQgbGlzdGVuZXJzLgor
ICAgKgorICAgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBpbnRlcm5hbEluc3RhbmNlCisgICAq
IEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbnxSZWFjdFNlcnZlclJlbmRlcmluZ1Ry
YW5zYWN0aW9ufSB0cmFuc2FjdGlvbgorICAgKiBAcGFyYW0gez9vYmplY3R9IHRoZSBjb250YWlu
aW5nIGhvc3QgY29tcG9uZW50IGluc3RhbmNlCisgICAqIEBwYXJhbSB7P29iamVjdH0gaW5mbyBh
Ym91dCB0aGUgaG9zdCBjb250YWluZXIKKyAgICogQHJldHVybiB7P3N0cmluZ30gUmVuZGVyZWQg
bWFya3VwIHRvIGJlIGluc2VydGVkIGludG8gdGhlIERPTS4KKyAgICogQGZpbmFsCisgICAqIEBp
bnRlcm5hbAorICAgKi8KKyAgbW91bnRDb21wb25lbnQ6IGZ1bmN0aW9uIChpbnRlcm5hbEluc3Rh
bmNlLCB0cmFuc2FjdGlvbiwgaG9zdFBhcmVudCwgaG9zdENvbnRhaW5lckluZm8sIGNvbnRleHQs
IHBhcmVudERlYnVnSUQgLy8gMCBpbiBwcm9kdWN0aW9uIGFuZCBmb3Igcm9vdHMKKyAgKSB7Cisg
ICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgaWYgKGludGVy
bmFsSW5zdGFuY2UuX2RlYnVnSUQgIT09IDApIHsKKyAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRp
b24uZGVidWdUb29sLm9uQmVmb3JlTW91bnRDb21wb25lbnQoaW50ZXJuYWxJbnN0YW5jZS5fZGVi
dWdJRCwgaW50ZXJuYWxJbnN0YW5jZS5fY3VycmVudEVsZW1lbnQsIHBhcmVudERlYnVnSUQpOwor
ICAgICAgfQorICAgIH0KKyAgICB2YXIgbWFya3VwID0gaW50ZXJuYWxJbnN0YW5jZS5tb3VudENv
bXBvbmVudCh0cmFuc2FjdGlvbiwgaG9zdFBhcmVudCwgaG9zdENvbnRhaW5lckluZm8sIGNvbnRl
eHQsIHBhcmVudERlYnVnSUQpOworICAgIGlmIChpbnRlcm5hbEluc3RhbmNlLl9jdXJyZW50RWxl
bWVudCAmJiBpbnRlcm5hbEluc3RhbmNlLl9jdXJyZW50RWxlbWVudC5yZWYgIT0gbnVsbCkgewor
ICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShhdHRhY2hSZWZz
LCBpbnRlcm5hbEluc3RhbmNlKTsKKyAgICB9CisgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdw
cm9kdWN0aW9uJykgeworICAgICAgaWYgKGludGVybmFsSW5zdGFuY2UuX2RlYnVnSUQgIT09IDAp
IHsKKyAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uTW91bnRDb21wb25l
bnQoaW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCk7CisgICAgICB9CisgICAgfQorICAgIHJldHVy
biBtYXJrdXA7CisgIH0sCisKKyAgLyoqCisgICAqIFJldHVybnMgYSB2YWx1ZSB0aGF0IGNhbiBi
ZSBwYXNzZWQgdG8KKyAgICogUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudC5yZXBsYWNlTm9kZVdp
dGhNYXJrdXAuCisgICAqLworICBnZXRIb3N0Tm9kZTogZnVuY3Rpb24gKGludGVybmFsSW5zdGFu
Y2UpIHsKKyAgICByZXR1cm4gaW50ZXJuYWxJbnN0YW5jZS5nZXRIb3N0Tm9kZSgpOworICB9LAor
CisgIC8qKgorICAgKiBSZWxlYXNlcyBhbnkgcmVzb3VyY2VzIGFsbG9jYXRlZCBieSBgbW91bnRD
b21wb25lbnRgLgorICAgKgorICAgKiBAZmluYWwKKyAgICogQGludGVybmFsCisgICAqLworICB1
bm1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAoaW50ZXJuYWxJbnN0YW5jZSwgc2FmZWx5KSB7Cisg
ICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgaWYgKGludGVy
bmFsSW5zdGFuY2UuX2RlYnVnSUQgIT09IDApIHsKKyAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRp
b24uZGVidWdUb29sLm9uQmVmb3JlVW5tb3VudENvbXBvbmVudChpbnRlcm5hbEluc3RhbmNlLl9k
ZWJ1Z0lEKTsKKyAgICAgIH0KKyAgICB9CisgICAgUmVhY3RSZWYuZGV0YWNoUmVmcyhpbnRlcm5h
bEluc3RhbmNlLCBpbnRlcm5hbEluc3RhbmNlLl9jdXJyZW50RWxlbWVudCk7CisgICAgaW50ZXJu
YWxJbnN0YW5jZS51bm1vdW50Q29tcG9uZW50KHNhZmVseSk7CisgICAgaWYgKCJkZXZlbG9wbWVu
dCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgaWYgKGludGVybmFsSW5zdGFuY2UuX2RlYnVn
SUQgIT09IDApIHsKKyAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uVW5t
b3VudENvbXBvbmVudChpbnRlcm5hbEluc3RhbmNlLl9kZWJ1Z0lEKTsKKyAgICAgIH0KKyAgICB9
CisgIH0sCisKKyAgLyoqCisgICAqIFVwZGF0ZSBhIGNvbXBvbmVudCB1c2luZyBhIG5ldyBlbGVt
ZW50LgorICAgKgorICAgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBpbnRlcm5hbEluc3RhbmNl
CisgICAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBuZXh0RWxlbWVudAorICAgKiBAcGFyYW0ge1Jl
YWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uCisgICAqIEBwYXJhbSB7b2JqZWN0
fSBjb250ZXh0CisgICAqIEBpbnRlcm5hbAorICAgKi8KKyAgcmVjZWl2ZUNvbXBvbmVudDogZnVu
Y3Rpb24gKGludGVybmFsSW5zdGFuY2UsIG5leHRFbGVtZW50LCB0cmFuc2FjdGlvbiwgY29udGV4
dCkgeworICAgIHZhciBwcmV2RWxlbWVudCA9IGludGVybmFsSW5zdGFuY2UuX2N1cnJlbnRFbGVt
ZW50OworCisgICAgaWYgKG5leHRFbGVtZW50ID09PSBwcmV2RWxlbWVudCAmJiBjb250ZXh0ID09
PSBpbnRlcm5hbEluc3RhbmNlLl9jb250ZXh0KSB7CisgICAgICAvLyBTaW5jZSBlbGVtZW50cyBh
cmUgaW1tdXRhYmxlIGFmdGVyIHRoZSBvd25lciBpcyByZW5kZXJlZCwKKyAgICAgIC8vIHdlIGNh
biBkbyBhIGNoZWFwIGlkZW50aXR5IGNvbXBhcmUgaGVyZSB0byBkZXRlcm1pbmUgaWYgdGhpcyBp
cyBhCisgICAgICAvLyBzdXBlcmZsdW91cyByZWNvbmNpbGUuIEl0J3MgcG9zc2libGUgZm9yIHN0
YXRlIHRvIGJlIG11dGFibGUgYnV0IHN1Y2gKKyAgICAgIC8vIGNoYW5nZSBzaG91bGQgdHJpZ2dl
ciBhbiB1cGRhdGUgb2YgdGhlIG93bmVyIHdoaWNoIHdvdWxkIHJlY3JlYXRlCisgICAgICAvLyB0
aGUgZWxlbWVudC4gV2UgZXhwbGljaXRseSBjaGVjayBmb3IgdGhlIGV4aXN0ZW5jZSBvZiBhbiBv
d25lciBzaW5jZQorICAgICAgLy8gaXQncyBwb3NzaWJsZSBmb3IgYW4gZWxlbWVudCBjcmVhdGVk
IG91dHNpZGUgYSBjb21wb3NpdGUgdG8gYmUKKyAgICAgIC8vIGRlZXBseSBtdXRhdGVkIGFuZCBy
ZXVzZWQuCisKKyAgICAgIC8vIFRPRE86IEJhaWxpbmcgb3V0IGVhcmx5IGlzIGp1c3QgYSBwZXJm
IG9wdGltaXphdGlvbiByaWdodD8KKyAgICAgIC8vIFRPRE86IFJlbW92aW5nIHRoZSByZXR1cm4g
c3RhdGVtZW50IHNob3VsZCBhZmZlY3QgY29ycmVjdG5lc3M/CisgICAgICByZXR1cm47CisgICAg
fQorCisgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgaWYg
KGludGVybmFsSW5zdGFuY2UuX2RlYnVnSUQgIT09IDApIHsKKyAgICAgICAgUmVhY3RJbnN0cnVt
ZW50YXRpb24uZGVidWdUb29sLm9uQmVmb3JlVXBkYXRlQ29tcG9uZW50KGludGVybmFsSW5zdGFu
Y2UuX2RlYnVnSUQsIG5leHRFbGVtZW50KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgcmVm
c0NoYW5nZWQgPSBSZWFjdFJlZi5zaG91bGRVcGRhdGVSZWZzKHByZXZFbGVtZW50LCBuZXh0RWxl
bWVudCk7CisKKyAgICBpZiAocmVmc0NoYW5nZWQpIHsKKyAgICAgIFJlYWN0UmVmLmRldGFjaFJl
ZnMoaW50ZXJuYWxJbnN0YW5jZSwgcHJldkVsZW1lbnQpOworICAgIH0KKworICAgIGludGVybmFs
SW5zdGFuY2UucmVjZWl2ZUNvbXBvbmVudChuZXh0RWxlbWVudCwgdHJhbnNhY3Rpb24sIGNvbnRl
eHQpOworCisgICAgaWYgKHJlZnNDaGFuZ2VkICYmIGludGVybmFsSW5zdGFuY2UuX2N1cnJlbnRF
bGVtZW50ICYmIGludGVybmFsSW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50LnJlZiAhPSBudWxsKSB7
CisgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGF0dGFjaFJl
ZnMsIGludGVybmFsSW5zdGFuY2UpOworICAgIH0KKworICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9
PSAncHJvZHVjdGlvbicpIHsKKyAgICAgIGlmIChpbnRlcm5hbEluc3RhbmNlLl9kZWJ1Z0lEICE9
PSAwKSB7CisgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vblVwZGF0ZUNv
bXBvbmVudChpbnRlcm5hbEluc3RhbmNlLl9kZWJ1Z0lEKTsKKyAgICAgIH0KKyAgICB9CisgIH0s
CisKKyAgLyoqCisgICAqIEZsdXNoIGFueSBkaXJ0eSBjaGFuZ2VzIGluIGEgY29tcG9uZW50Lgor
ICAgKgorICAgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBpbnRlcm5hbEluc3RhbmNlCisgICAq
IEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb24KKyAgICogQGlu
dGVybmFsCisgICAqLworICBwZXJmb3JtVXBkYXRlSWZOZWNlc3Nhcnk6IGZ1bmN0aW9uIChpbnRl
cm5hbEluc3RhbmNlLCB0cmFuc2FjdGlvbiwgdXBkYXRlQmF0Y2hOdW1iZXIpIHsKKyAgICBpZiAo
aW50ZXJuYWxJbnN0YW5jZS5fdXBkYXRlQmF0Y2hOdW1iZXIgIT09IHVwZGF0ZUJhdGNoTnVtYmVy
KSB7CisgICAgICAvLyBUaGUgY29tcG9uZW50J3MgZW5xdWV1ZWQgYmF0Y2ggbnVtYmVyIHNob3Vs
ZCBhbHdheXMgYmUgdGhlIGN1cnJlbnQKKyAgICAgIC8vIGJhdGNoIG9yIHRoZSBmb2xsb3dpbmcg
b25lLgorICAgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhpbnRl
cm5hbEluc3RhbmNlLl91cGRhdGVCYXRjaE51bWJlciA9PSBudWxsIHx8IGludGVybmFsSW5zdGFu
Y2UuX3VwZGF0ZUJhdGNoTnVtYmVyID09PSB1cGRhdGVCYXRjaE51bWJlciArIDEsICdwZXJmb3Jt
VXBkYXRlSWZOZWNlc3Nhcnk6IFVuZXhwZWN0ZWQgYmF0Y2ggbnVtYmVyIChjdXJyZW50ICVzLCAn
ICsgJ3BlbmRpbmcgJXMpJywgdXBkYXRlQmF0Y2hOdW1iZXIsIGludGVybmFsSW5zdGFuY2UuX3Vw
ZGF0ZUJhdGNoTnVtYmVyKSA6IHZvaWQgMDsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYg
KCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgaWYgKGludGVybmFsSW5z
dGFuY2UuX2RlYnVnSUQgIT09IDApIHsKKyAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVi
dWdUb29sLm9uQmVmb3JlVXBkYXRlQ29tcG9uZW50KGludGVybmFsSW5zdGFuY2UuX2RlYnVnSUQs
IGludGVybmFsSW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50KTsKKyAgICAgIH0KKyAgICB9CisgICAg
aW50ZXJuYWxJbnN0YW5jZS5wZXJmb3JtVXBkYXRlSWZOZWNlc3NhcnkodHJhbnNhY3Rpb24pOwor
ICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgIGlmIChpbnRl
cm5hbEluc3RhbmNlLl9kZWJ1Z0lEICE9PSAwKSB7CisgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0
aW9uLmRlYnVnVG9vbC5vblVwZGF0ZUNvbXBvbmVudChpbnRlcm5hbEluc3RhbmNlLl9kZWJ1Z0lE
KTsKKyAgICAgIH0KKyAgICB9CisgIH0KKworfTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdFJl
Y29uY2lsZXI7Cit9LHsiMTQ3IjoxNDcsIjU5Ijo1OSwiNjkiOjY5fV0sNjk6W2Z1bmN0aW9uKF9k
ZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBG
YWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJj
ZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0
aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2Ug
dHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91
bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogCisg
Ki8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgUmVhY3RPd25lciA9IF9kZXJlcV8oNjQpOworCit2
YXIgUmVhY3RSZWYgPSB7fTsKKworZnVuY3Rpb24gYXR0YWNoUmVmKHJlZiwgY29tcG9uZW50LCBv
d25lcikgeworICBpZiAodHlwZW9mIHJlZiA9PT0gJ2Z1bmN0aW9uJykgeworICAgIHJlZihjb21w
b25lbnQuZ2V0UHVibGljSW5zdGFuY2UoKSk7CisgIH0gZWxzZSB7CisgICAgLy8gTGVnYWN5IHJl
ZgorICAgIFJlYWN0T3duZXIuYWRkQ29tcG9uZW50QXNSZWZUbyhjb21wb25lbnQsIHJlZiwgb3du
ZXIpOworICB9Cit9CisKK2Z1bmN0aW9uIGRldGFjaFJlZihyZWYsIGNvbXBvbmVudCwgb3duZXIp
IHsKKyAgaWYgKHR5cGVvZiByZWYgPT09ICdmdW5jdGlvbicpIHsKKyAgICByZWYobnVsbCk7Cisg
IH0gZWxzZSB7CisgICAgLy8gTGVnYWN5IHJlZgorICAgIFJlYWN0T3duZXIucmVtb3ZlQ29tcG9u
ZW50QXNSZWZGcm9tKGNvbXBvbmVudCwgcmVmLCBvd25lcik7CisgIH0KK30KKworUmVhY3RSZWYu
YXR0YWNoUmVmcyA9IGZ1bmN0aW9uIChpbnN0YW5jZSwgZWxlbWVudCkgeworICBpZiAoZWxlbWVu
dCA9PT0gbnVsbCB8fCB0eXBlb2YgZWxlbWVudCAhPT0gJ29iamVjdCcpIHsKKyAgICByZXR1cm47
CisgIH0KKyAgdmFyIHJlZiA9IGVsZW1lbnQucmVmOworICBpZiAocmVmICE9IG51bGwpIHsKKyAg
ICBhdHRhY2hSZWYocmVmLCBpbnN0YW5jZSwgZWxlbWVudC5fb3duZXIpOworICB9Cit9OworCitS
ZWFjdFJlZi5zaG91bGRVcGRhdGVSZWZzID0gZnVuY3Rpb24gKHByZXZFbGVtZW50LCBuZXh0RWxl
bWVudCkgeworICAvLyBJZiBlaXRoZXIgdGhlIG93bmVyIG9yIGEgYHJlZmAgaGFzIGNoYW5nZWQs
IG1ha2Ugc3VyZSB0aGUgbmV3ZXN0IG93bmVyCisgIC8vIGhhcyBzdG9yZWQgYSByZWZlcmVuY2Ug
dG8gYHRoaXNgLCBhbmQgdGhlIHByZXZpb3VzIG93bmVyIChpZiBkaWZmZXJlbnQpCisgIC8vIGhh
cyBmb3Jnb3R0ZW4gdGhlIHJlZmVyZW5jZSB0byBgdGhpc2AuIFdlIHVzZSB0aGUgZWxlbWVudCBp
bnN0ZWFkCisgIC8vIG9mIHRoZSBwdWJsaWMgdGhpcy5wcm9wcyBiZWNhdXNlIHRoZSBwb3N0IHBy
b2Nlc3NpbmcgY2Fubm90IGRldGVybWluZQorICAvLyBhIHJlZi4gVGhlIHJlZiBjb25jZXB0dWFs
bHkgbGl2ZXMgb24gdGhlIGVsZW1lbnQuCisKKyAgLy8gVE9ETzogU2hvdWxkIHRoaXMgZXZlbiBi
ZSBwb3NzaWJsZT8gVGhlIG93bmVyIGNhbm5vdCBjaGFuZ2UgYmVjYXVzZQorICAvLyBpdCdzIGZv
cmJpZGRlbiBieSBzaG91bGRVcGRhdGVSZWFjdENvbXBvbmVudC4gVGhlIHJlZiBjYW4gY2hhbmdl
CisgIC8vIGlmIHlvdSBzd2FwIHRoZSBrZXlzIG9mIGJ1dCBub3QgdGhlIHJlZnMuIFJlY29uc2lk
ZXIgd2hlcmUgdGhpcyBjaGVjaworICAvLyBpcyBtYWRlLiBJdCBwcm9iYWJseSBiZWxvbmdzIHdo
ZXJlIHRoZSBrZXkgY2hlY2tpbmcgYW5kCisgIC8vIGluc3RhbnRpYXRlUmVhY3RDb21wb25lbnQg
aXMgZG9uZS4KKworICB2YXIgcHJldlJlZiA9IG51bGw7CisgIHZhciBwcmV2T3duZXIgPSBudWxs
OworICBpZiAocHJldkVsZW1lbnQgIT09IG51bGwgJiYgdHlwZW9mIHByZXZFbGVtZW50ID09PSAn
b2JqZWN0JykgeworICAgIHByZXZSZWYgPSBwcmV2RWxlbWVudC5yZWY7CisgICAgcHJldk93bmVy
ID0gcHJldkVsZW1lbnQuX293bmVyOworICB9CisKKyAgdmFyIG5leHRSZWYgPSBudWxsOworICB2
YXIgbmV4dE93bmVyID0gbnVsbDsKKyAgaWYgKG5leHRFbGVtZW50ICE9PSBudWxsICYmIHR5cGVv
ZiBuZXh0RWxlbWVudCA9PT0gJ29iamVjdCcpIHsKKyAgICBuZXh0UmVmID0gbmV4dEVsZW1lbnQu
cmVmOworICAgIG5leHRPd25lciA9IG5leHRFbGVtZW50Ll9vd25lcjsKKyAgfQorCisgIHJldHVy
biBwcmV2UmVmICE9PSBuZXh0UmVmIHx8CisgIC8vIElmIG93bmVyIGNoYW5nZXMgYnV0IHdlIGhh
dmUgYW4gdW5jaGFuZ2VkIGZ1bmN0aW9uIHJlZiwgZG9uJ3QgdXBkYXRlIHJlZnMKKyAgdHlwZW9m
IG5leHRSZWYgPT09ICdzdHJpbmcnICYmIG5leHRPd25lciAhPT0gcHJldk93bmVyOworfTsKKwor
UmVhY3RSZWYuZGV0YWNoUmVmcyA9IGZ1bmN0aW9uIChpbnN0YW5jZSwgZWxlbWVudCkgeworICBp
ZiAoZWxlbWVudCA9PT0gbnVsbCB8fCB0eXBlb2YgZWxlbWVudCAhPT0gJ29iamVjdCcpIHsKKyAg
ICByZXR1cm47CisgIH0KKyAgdmFyIHJlZiA9IGVsZW1lbnQucmVmOworICBpZiAocmVmICE9IG51
bGwpIHsKKyAgICBkZXRhY2hSZWYocmVmLCBpbnN0YW5jZSwgZWxlbWVudC5fb3duZXIpOworICB9
Cit9OworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0UmVmOworfSx7IjY0Ijo2NH1dLDcwOltmdW5j
dGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTQtcHJl
c2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhp
cyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91
bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMg
c291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2Fu
IGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoK
KyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBSZWFjdFNlcnZlckJhdGNoaW5nU3RyYXRlZ3kg
PSB7CisgIGlzQmF0Y2hpbmdVcGRhdGVzOiBmYWxzZSwKKyAgYmF0Y2hlZFVwZGF0ZXM6IGZ1bmN0
aW9uIChjYWxsYmFjaykgeworICAgIC8vIERvbid0IGRvIGFueXRoaW5nIGhlcmUuIER1cmluZyB0
aGUgc2VydmVyIHJlbmRlcmluZyB3ZSBkb24ndCB3YW50IHRvCisgICAgLy8gc2NoZWR1bGUgYW55
IHVwZGF0ZXMuIFdlIHdpbGwgc2ltcGx5IGlnbm9yZSB0aGVtLgorICB9Cit9OworCittb2R1bGUu
ZXhwb3J0cyA9IFJlYWN0U2VydmVyQmF0Y2hpbmdTdHJhdGVneTsKK30se31dLDcxOltmdW5jdGlv
bihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2Vu
dCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBz
b3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQg
aW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291
cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJl
IGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAq
LworJ3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJbnZhcmlhbnQgPSBfZGVyZXFfKDExNik7CisK
K3ZhciBSZWFjdCA9IF9kZXJlcV8oMTI0KTsKK3ZhciBSZWFjdERPTUNvbnRhaW5lckluZm8gPSBf
ZGVyZXFfKDMzKTsKK3ZhciBSZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5ID0gX2RlcmVxXyg0
Nik7Cit2YXIgUmVhY3RJbnN0cnVtZW50YXRpb24gPSBfZGVyZXFfKDU5KTsKK3ZhciBSZWFjdE1h
cmt1cENoZWNrc3VtID0gX2RlcmVxXyg2MSk7Cit2YXIgUmVhY3RSZWNvbmNpbGVyID0gX2RlcmVx
Xyg2OCk7Cit2YXIgUmVhY3RTZXJ2ZXJCYXRjaGluZ1N0cmF0ZWd5ID0gX2RlcmVxXyg3MCk7Cit2
YXIgUmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbiA9IF9kZXJlcV8oNzIpOwordmFyIFJl
YWN0VXBkYXRlcyA9IF9kZXJlcV8oNzUpOworCit2YXIgZW1wdHlPYmplY3QgPSBfZGVyZXFfKDEz
Myk7Cit2YXIgaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudCA9IF9kZXJlcV8oMTEyKTsKK3ZhciBp
bnZhcmlhbnQgPSBfZGVyZXFfKDE0MCk7CisKK3ZhciBwZW5kaW5nVHJhbnNhY3Rpb25zID0gMDsK
KworLyoqCisgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gZWxlbWVudAorICogQHJldHVybiB7c3Ry
aW5nfSB0aGUgSFRNTCBtYXJrdXAKKyAqLworZnVuY3Rpb24gcmVuZGVyVG9TdHJpbmdJbXBsKGVs
ZW1lbnQsIG1ha2VTdGF0aWNNYXJrdXApIHsKKyAgdmFyIHRyYW5zYWN0aW9uOworICB0cnkgewor
ICAgIFJlYWN0VXBkYXRlcy5pbmplY3Rpb24uaW5qZWN0QmF0Y2hpbmdTdHJhdGVneShSZWFjdFNl
cnZlckJhdGNoaW5nU3RyYXRlZ3kpOworCisgICAgdHJhbnNhY3Rpb24gPSBSZWFjdFNlcnZlclJl
bmRlcmluZ1RyYW5zYWN0aW9uLmdldFBvb2xlZChtYWtlU3RhdGljTWFya3VwKTsKKworICAgIHBl
bmRpbmdUcmFuc2FjdGlvbnMrKzsKKworICAgIHJldHVybiB0cmFuc2FjdGlvbi5wZXJmb3JtKGZ1
bmN0aW9uICgpIHsKKyAgICAgIHZhciBjb21wb25lbnRJbnN0YW5jZSA9IGluc3RhbnRpYXRlUmVh
Y3RDb21wb25lbnQoZWxlbWVudCwgdHJ1ZSk7CisgICAgICB2YXIgbWFya3VwID0gUmVhY3RSZWNv
bmNpbGVyLm1vdW50Q29tcG9uZW50KGNvbXBvbmVudEluc3RhbmNlLCB0cmFuc2FjdGlvbiwgbnVs
bCwgUmVhY3RET01Db250YWluZXJJbmZvKCksIGVtcHR5T2JqZWN0LCAwIC8qIHBhcmVudERlYnVn
SUQgKi8KKyAgICAgICk7CisgICAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24n
KSB7CisgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vblVubW91bnRDb21w
b25lbnQoY29tcG9uZW50SW5zdGFuY2UuX2RlYnVnSUQpOworICAgICAgfQorICAgICAgaWYgKCFt
YWtlU3RhdGljTWFya3VwKSB7CisgICAgICAgIG1hcmt1cCA9IFJlYWN0TWFya3VwQ2hlY2tzdW0u
YWRkQ2hlY2tzdW1Ub01hcmt1cChtYXJrdXApOworICAgICAgfQorICAgICAgcmV0dXJuIG1hcmt1
cDsKKyAgICB9LCBudWxsKTsKKyAgfSBmaW5hbGx5IHsKKyAgICBwZW5kaW5nVHJhbnNhY3Rpb25z
LS07CisgICAgUmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbi5yZWxlYXNlKHRyYW5zYWN0
aW9uKTsKKyAgICAvLyBSZXZlcnQgdG8gdGhlIERPTSBiYXRjaGluZyBzdHJhdGVneSBzaW5jZSB0
aGVzZSB0d28gcmVuZGVyZXJzCisgICAgLy8gY3VycmVudGx5IHNoYXJlIHRoZXNlIHN0YXRlZnVs
IG1vZHVsZXMuCisgICAgaWYgKCFwZW5kaW5nVHJhbnNhY3Rpb25zKSB7CisgICAgICBSZWFjdFVw
ZGF0ZXMuaW5qZWN0aW9uLmluamVjdEJhdGNoaW5nU3RyYXRlZ3koUmVhY3REZWZhdWx0QmF0Y2hp
bmdTdHJhdGVneSk7CisgICAgfQorICB9Cit9CisKKy8qKgorICogUmVuZGVyIGEgUmVhY3RFbGVt
ZW50IHRvIGl0cyBpbml0aWFsIEhUTUwuIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBvbiB0aGUK
KyAqIHNlcnZlci4KKyAqIFNlZSBodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2Nz
L3RvcC1sZXZlbC1hcGkuaHRtbCNyZWFjdGRvbXNlcnZlci5yZW5kZXJ0b3N0cmluZworICovCitm
dW5jdGlvbiByZW5kZXJUb1N0cmluZyhlbGVtZW50KSB7CisgICFSZWFjdC5pc1ZhbGlkRWxlbWVu
dChlbGVtZW50KSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChm
YWxzZSwgJ3JlbmRlclRvU3RyaW5nKCk6IFlvdSBtdXN0IHBhc3MgYSB2YWxpZCBSZWFjdEVsZW1l
bnQuJykgOiBfcHJvZEludmFyaWFudCgnNDYnKSA6IHZvaWQgMDsKKyAgcmV0dXJuIHJlbmRlclRv
U3RyaW5nSW1wbChlbGVtZW50LCBmYWxzZSk7Cit9CisKKy8qKgorICogU2ltaWxhciB0byByZW5k
ZXJUb1N0cmluZywgZXhjZXB0IHRoaXMgZG9lc24ndCBjcmVhdGUgZXh0cmEgRE9NIGF0dHJpYnV0
ZXMKKyAqIHN1Y2ggYXMgZGF0YS1yZWFjdC1pZCB0aGF0IFJlYWN0IHVzZXMgaW50ZXJuYWxseS4K
KyAqIFNlZSBodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL3RvcC1sZXZlbC1h
cGkuaHRtbCNyZWFjdGRvbXNlcnZlci5yZW5kZXJ0b3N0YXRpY21hcmt1cAorICovCitmdW5jdGlv
biByZW5kZXJUb1N0YXRpY01hcmt1cChlbGVtZW50KSB7CisgICFSZWFjdC5pc1ZhbGlkRWxlbWVu
dChlbGVtZW50KSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChm
YWxzZSwgJ3JlbmRlclRvU3RhdGljTWFya3VwKCk6IFlvdSBtdXN0IHBhc3MgYSB2YWxpZCBSZWFj
dEVsZW1lbnQuJykgOiBfcHJvZEludmFyaWFudCgnNDcnKSA6IHZvaWQgMDsKKyAgcmV0dXJuIHJl
bmRlclRvU3RyaW5nSW1wbChlbGVtZW50LCB0cnVlKTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSB7
CisgIHJlbmRlclRvU3RyaW5nOiByZW5kZXJUb1N0cmluZywKKyAgcmVuZGVyVG9TdGF0aWNNYXJr
dXA6IHJlbmRlclRvU3RhdGljTWFya3VwCit9OworfSx7IjExMiI6MTEyLCIxMTYiOjExNiwiMTI0
IjoxMjQsIjEzMyI6MTMzLCIxNDAiOjE0MCwiMzMiOjMzLCI0NiI6NDYsIjU5Ijo1OSwiNjEiOjYx
LCI2OCI6NjgsIjcwIjo3MCwiNzIiOjcyLCI3NSI6NzV9XSw3MjpbZnVuY3Rpb24oX2RlcmVxXyxt
b2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQsIEZhY2Vib29r
LCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUg
aXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICog
TElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBB
biBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0
aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBz
dHJpY3QnOworCit2YXIgX2Fzc2lnbiA9IF9kZXJlcV8oMTQ4KTsKKwordmFyIFBvb2xlZENsYXNz
ID0gX2RlcmVxXygyNCk7Cit2YXIgVHJhbnNhY3Rpb24gPSBfZGVyZXFfKDkzKTsKK3ZhciBSZWFj
dEluc3RydW1lbnRhdGlvbiA9IF9kZXJlcV8oNTkpOwordmFyIFJlYWN0U2VydmVyVXBkYXRlUXVl
dWUgPSBfZGVyZXFfKDczKTsKKworLyoqCisgKiBFeGVjdXRlZCB3aXRoaW4gdGhlIHNjb3BlIG9m
IHRoZSBgVHJhbnNhY3Rpb25gIGluc3RhbmNlLiBDb25zaWRlciB0aGVzZSBhcworICogYmVpbmcg
bWVtYmVyIG1ldGhvZHMsIGJ1dCB3aXRoIGFuIGltcGxpZWQgb3JkZXJpbmcgd2hpbGUgYmVpbmcg
aXNvbGF0ZWQgZnJvbQorICogZWFjaCBvdGhlci4KKyAqLwordmFyIFRSQU5TQUNUSU9OX1dSQVBQ
RVJTID0gW107CisKK2lmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgVFJB
TlNBQ1RJT05fV1JBUFBFUlMucHVzaCh7CisgICAgaW5pdGlhbGl6ZTogUmVhY3RJbnN0cnVtZW50
YXRpb24uZGVidWdUb29sLm9uQmVnaW5GbHVzaCwKKyAgICBjbG9zZTogUmVhY3RJbnN0cnVtZW50
YXRpb24uZGVidWdUb29sLm9uRW5kRmx1c2gKKyAgfSk7Cit9CisKK3ZhciBub29wQ2FsbGJhY2tR
dWV1ZSA9IHsKKyAgZW5xdWV1ZTogZnVuY3Rpb24gKCkge30KK307CisKKy8qKgorICogQGNsYXNz
IFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb24KKyAqIEBwYXJhbSB7Ym9vbGVhbn0gcmVu
ZGVyVG9TdGF0aWNNYXJrdXAKKyAqLworZnVuY3Rpb24gUmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFu
c2FjdGlvbihyZW5kZXJUb1N0YXRpY01hcmt1cCkgeworICB0aGlzLnJlaW5pdGlhbGl6ZVRyYW5z
YWN0aW9uKCk7CisgIHRoaXMucmVuZGVyVG9TdGF0aWNNYXJrdXAgPSByZW5kZXJUb1N0YXRpY01h
cmt1cDsKKyAgdGhpcy51c2VDcmVhdGVFbGVtZW50ID0gZmFsc2U7CisgIHRoaXMudXBkYXRlUXVl
dWUgPSBuZXcgUmVhY3RTZXJ2ZXJVcGRhdGVRdWV1ZSh0aGlzKTsKK30KKwordmFyIE1peGluID0g
eworICAvKioKKyAgICogQHNlZSBUcmFuc2FjdGlvbgorICAgKiBAYWJzdHJhY3QKKyAgICogQGZp
bmFsCisgICAqIEByZXR1cm4ge2FycmF5fSBFbXB0eSBsaXN0IG9mIG9wZXJhdGlvbiB3cmFwIHBy
b2NlZHVyZXMuCisgICAqLworICBnZXRUcmFuc2FjdGlvbldyYXBwZXJzOiBmdW5jdGlvbiAoKSB7
CisgICAgcmV0dXJuIFRSQU5TQUNUSU9OX1dSQVBQRVJTOworICB9LAorCisgIC8qKgorICAgKiBA
cmV0dXJuIHtvYmplY3R9IFRoZSBxdWV1ZSB0byBjb2xsZWN0IGBvbkRPTVJlYWR5YCBjYWxsYmFj
a3Mgd2l0aC4KKyAgICovCisgIGdldFJlYWN0TW91bnRSZWFkeTogZnVuY3Rpb24gKCkgeworICAg
IHJldHVybiBub29wQ2FsbGJhY2tRdWV1ZTsKKyAgfSwKKworICAvKioKKyAgICogQHJldHVybiB7
b2JqZWN0fSBUaGUgcXVldWUgdG8gY29sbGVjdCBSZWFjdCBhc3luYyBldmVudHMuCisgICAqLwor
ICBnZXRVcGRhdGVRdWV1ZTogZnVuY3Rpb24gKCkgeworICAgIHJldHVybiB0aGlzLnVwZGF0ZVF1
ZXVlOworICB9LAorCisgIC8qKgorICAgKiBgUG9vbGVkQ2xhc3NgIGxvb2tzIGZvciB0aGlzLCBh
bmQgd2lsbCBpbnZva2UgdGhpcyBiZWZvcmUgYWxsb3dpbmcgdGhpcworICAgKiBpbnN0YW5jZSB0
byBiZSByZXVzZWQuCisgICAqLworICBkZXN0cnVjdG9yOiBmdW5jdGlvbiAoKSB7fSwKKworICBj
aGVja3BvaW50OiBmdW5jdGlvbiAoKSB7fSwKKworICByb2xsYmFjazogZnVuY3Rpb24gKCkge30K
K307CisKK19hc3NpZ24oUmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbi5wcm90b3R5cGUs
IFRyYW5zYWN0aW9uLCBNaXhpbik7CisKK1Bvb2xlZENsYXNzLmFkZFBvb2xpbmdUbyhSZWFjdFNl
cnZlclJlbmRlcmluZ1RyYW5zYWN0aW9uKTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdFNlcnZl
clJlbmRlcmluZ1RyYW5zYWN0aW9uOworfSx7IjE0OCI6MTQ4LCIyNCI6MjQsIjU5Ijo1OSwiNzMi
OjczLCI5MyI6OTN9XSw3MzpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioK
KyAqIENvcHlyaWdodCAyMDE1LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl
IEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50Cisg
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiAKKyAqLworCisndXNlIHN0cmljdCc7CisKK2Z1bmN0
aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFu
Y2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90
IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIik7IH0gfQorCit2YXIgUmVhY3RVcGRhdGVRdWV1
ZSA9IF9kZXJlcV8oNzQpOworCit2YXIgd2FybmluZyA9IF9kZXJlcV8oMTQ3KTsKKworZnVuY3Rp
b24gd2Fybk5vb3AocHVibGljSW5zdGFuY2UsIGNhbGxlck5hbWUpIHsKKyAgaWYgKCJkZXZlbG9w
bWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgIHZhciBjb25zdHJ1Y3RvciA9IHB1YmxpY0lu
c3RhbmNlLmNvbnN0cnVjdG9yOworICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/
IHdhcm5pbmcoZmFsc2UsICclcyguLi4pOiBDYW4gb25seSB1cGRhdGUgYSBtb3VudGluZyBjb21w
b25lbnQuICcgKyAnVGhpcyB1c3VhbGx5IG1lYW5zIHlvdSBjYWxsZWQgJXMoKSBvdXRzaWRlIGNv
bXBvbmVudFdpbGxNb3VudCgpIG9uIHRoZSBzZXJ2ZXIuICcgKyAnVGhpcyBpcyBhIG5vLW9wLiBQ
bGVhc2UgY2hlY2sgdGhlIGNvZGUgZm9yIHRoZSAlcyBjb21wb25lbnQuJywgY2FsbGVyTmFtZSwg
Y2FsbGVyTmFtZSwgY29uc3RydWN0b3IgJiYgKGNvbnN0cnVjdG9yLmRpc3BsYXlOYW1lIHx8IGNv
bnN0cnVjdG9yLm5hbWUpIHx8ICdSZWFjdENsYXNzJykgOiB2b2lkIDA7CisgIH0KK30KKworLyoq
CisgKiBUaGlzIGlzIHRoZSB1cGRhdGUgcXVldWUgdXNlZCBmb3Igc2VydmVyIHJlbmRlcmluZy4K
KyAqIEl0IGRlbGVnYXRlcyB0byBSZWFjdFVwZGF0ZVF1ZXVlIHdoaWxlIHNlcnZlciByZW5kZXJp
bmcgaXMgaW4gcHJvZ3Jlc3MgYW5kCisgKiBzd2l0Y2hlcyB0byBSZWFjdE5vb3BVcGRhdGVRdWV1
ZSBhZnRlciB0aGUgdHJhbnNhY3Rpb24gaGFzIGNvbXBsZXRlZC4KKyAqIEBjbGFzcyBSZWFjdFNl
cnZlclVwZGF0ZVF1ZXVlCisgKiBAcGFyYW0ge1RyYW5zYWN0aW9ufSB0cmFuc2FjdGlvbgorICov
CisKK3ZhciBSZWFjdFNlcnZlclVwZGF0ZVF1ZXVlID0gZnVuY3Rpb24gKCkgeworICBmdW5jdGlv
biBSZWFjdFNlcnZlclVwZGF0ZVF1ZXVlKHRyYW5zYWN0aW9uKSB7CisgICAgX2NsYXNzQ2FsbENo
ZWNrKHRoaXMsIFJlYWN0U2VydmVyVXBkYXRlUXVldWUpOworCisgICAgdGhpcy50cmFuc2FjdGlv
biA9IHRyYW5zYWN0aW9uOworICB9CisKKyAgLyoqCisgICAqIENoZWNrcyB3aGV0aGVyIG9yIG5v
dCB0aGlzIGNvbXBvc2l0ZSBjb21wb25lbnQgaXMgbW91bnRlZC4KKyAgICogQHBhcmFtIHtSZWFj
dENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2Ugd2Ugd2FudCB0byB0ZXN0LgorICAg
KiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIG1vdW50ZWQsIGZhbHNlIG90aGVyd2lzZS4KKyAg
ICogQHByb3RlY3RlZAorICAgKiBAZmluYWwKKyAgICovCisKKworICBSZWFjdFNlcnZlclVwZGF0
ZVF1ZXVlLnByb3RvdHlwZS5pc01vdW50ZWQgPSBmdW5jdGlvbiBpc01vdW50ZWQocHVibGljSW5z
dGFuY2UpIHsKKyAgICByZXR1cm4gZmFsc2U7CisgIH07CisKKyAgLyoqCisgICAqIEVucXVldWUg
YSBjYWxsYmFjayB0aGF0IHdpbGwgYmUgZXhlY3V0ZWQgYWZ0ZXIgYWxsIHRoZSBwZW5kaW5nIHVw
ZGF0ZXMKKyAgICogaGF2ZSBwcm9jZXNzZWQuCisgICAqCisgICAqIEBwYXJhbSB7UmVhY3RDbGFz
c30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHRvIHVzZSBhcyBgdGhpc2AgY29udGV4dC4K
KyAgICogQHBhcmFtIHs/ZnVuY3Rpb259IGNhbGxiYWNrIENhbGxlZCBhZnRlciBzdGF0ZSBpcyB1
cGRhdGVkLgorICAgKiBAaW50ZXJuYWwKKyAgICovCisKKworICBSZWFjdFNlcnZlclVwZGF0ZVF1
ZXVlLnByb3RvdHlwZS5lbnF1ZXVlQ2FsbGJhY2sgPSBmdW5jdGlvbiBlbnF1ZXVlQ2FsbGJhY2so
cHVibGljSW5zdGFuY2UsIGNhbGxiYWNrLCBjYWxsZXJOYW1lKSB7CisgICAgaWYgKHRoaXMudHJh
bnNhY3Rpb24uaXNJblRyYW5zYWN0aW9uKCkpIHsKKyAgICAgIFJlYWN0VXBkYXRlUXVldWUuZW5x
dWV1ZUNhbGxiYWNrKHB1YmxpY0luc3RhbmNlLCBjYWxsYmFjaywgY2FsbGVyTmFtZSk7CisgICAg
fQorICB9OworCisgIC8qKgorICAgKiBGb3JjZXMgYW4gdXBkYXRlLiBUaGlzIHNob3VsZCBvbmx5
IGJlIGludm9rZWQgd2hlbiBpdCBpcyBrbm93biB3aXRoCisgICAqIGNlcnRhaW50eSB0aGF0IHdl
IGFyZSAqKm5vdCoqIGluIGEgRE9NIHRyYW5zYWN0aW9uLgorICAgKgorICAgKiBZb3UgbWF5IHdh
bnQgdG8gY2FsbCB0aGlzIHdoZW4geW91IGtub3cgdGhhdCBzb21lIGRlZXBlciBhc3BlY3Qgb2Yg
dGhlCisgICAqIGNvbXBvbmVudCdzIHN0YXRlIGhhcyBjaGFuZ2VkIGJ1dCBgc2V0U3RhdGVgIHdh
cyBub3QgY2FsbGVkLgorICAgKgorICAgKiBUaGlzIHdpbGwgbm90IGludm9rZSBgc2hvdWxkQ29t
cG9uZW50VXBkYXRlYCwgYnV0IGl0IHdpbGwgaW52b2tlCisgICAqIGBjb21wb25lbnRXaWxsVXBk
YXRlYCBhbmQgYGNvbXBvbmVudERpZFVwZGF0ZWAuCisgICAqCisgICAqIEBwYXJhbSB7UmVhY3RD
bGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHRoYXQgc2hvdWxkIHJlcmVuZGVyLgor
ICAgKiBAaW50ZXJuYWwKKyAgICovCisKKworICBSZWFjdFNlcnZlclVwZGF0ZVF1ZXVlLnByb3Rv
dHlwZS5lbnF1ZXVlRm9yY2VVcGRhdGUgPSBmdW5jdGlvbiBlbnF1ZXVlRm9yY2VVcGRhdGUocHVi
bGljSW5zdGFuY2UpIHsKKyAgICBpZiAodGhpcy50cmFuc2FjdGlvbi5pc0luVHJhbnNhY3Rpb24o
KSkgeworICAgICAgUmVhY3RVcGRhdGVRdWV1ZS5lbnF1ZXVlRm9yY2VVcGRhdGUocHVibGljSW5z
dGFuY2UpOworICAgIH0gZWxzZSB7CisgICAgICB3YXJuTm9vcChwdWJsaWNJbnN0YW5jZSwgJ2Zv
cmNlVXBkYXRlJyk7CisgICAgfQorICB9OworCisgIC8qKgorICAgKiBSZXBsYWNlcyBhbGwgb2Yg
dGhlIHN0YXRlLiBBbHdheXMgdXNlIHRoaXMgb3IgYHNldFN0YXRlYCB0byBtdXRhdGUgc3RhdGUu
CisgICAqIFlvdSBzaG91bGQgdHJlYXQgYHRoaXMuc3RhdGVgIGFzIGltbXV0YWJsZS4KKyAgICoK
KyAgICogVGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgYHRoaXMuc3RhdGVgIHdpbGwgYmUgaW1t
ZWRpYXRlbHkgdXBkYXRlZCwgc28KKyAgICogYWNjZXNzaW5nIGB0aGlzLnN0YXRlYCBhZnRlciBj
YWxsaW5nIHRoaXMgbWV0aG9kIG1heSByZXR1cm4gdGhlIG9sZCB2YWx1ZS4KKyAgICoKKyAgICog
QHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdGhhdCBzaG91
bGQgcmVyZW5kZXIuCisgICAqIEBwYXJhbSB7b2JqZWN0fGZ1bmN0aW9ufSBjb21wbGV0ZVN0YXRl
IE5leHQgc3RhdGUuCisgICAqIEBpbnRlcm5hbAorICAgKi8KKworCisgIFJlYWN0U2VydmVyVXBk
YXRlUXVldWUucHJvdG90eXBlLmVucXVldWVSZXBsYWNlU3RhdGUgPSBmdW5jdGlvbiBlbnF1ZXVl
UmVwbGFjZVN0YXRlKHB1YmxpY0luc3RhbmNlLCBjb21wbGV0ZVN0YXRlKSB7CisgICAgaWYgKHRo
aXMudHJhbnNhY3Rpb24uaXNJblRyYW5zYWN0aW9uKCkpIHsKKyAgICAgIFJlYWN0VXBkYXRlUXVl
dWUuZW5xdWV1ZVJlcGxhY2VTdGF0ZShwdWJsaWNJbnN0YW5jZSwgY29tcGxldGVTdGF0ZSk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgIHdhcm5Ob29wKHB1YmxpY0luc3RhbmNlLCAncmVwbGFjZVN0YXRl
Jyk7CisgICAgfQorICB9OworCisgIC8qKgorICAgKiBTZXRzIGEgc3Vic2V0IG9mIHRoZSBzdGF0
ZS4gVGhpcyBvbmx5IGV4aXN0cyBiZWNhdXNlIF9wZW5kaW5nU3RhdGUgaXMKKyAgICogaW50ZXJu
YWwuIFRoaXMgcHJvdmlkZXMgYSBtZXJnaW5nIHN0cmF0ZWd5IHRoYXQgaXMgbm90IGF2YWlsYWJs
ZSB0byBkZWVwCisgICAqIHByb3BlcnRpZXMgd2hpY2ggaXMgY29uZnVzaW5nLiBUT0RPOiBFeHBv
c2UgcGVuZGluZ1N0YXRlIG9yIGRvbid0IHVzZSBpdAorICAgKiBkdXJpbmcgdGhlIG1lcmdlLgor
ICAgKgorICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5j
ZSB0aGF0IHNob3VsZCByZXJlbmRlci4KKyAgICogQHBhcmFtIHtvYmplY3R8ZnVuY3Rpb259IHBh
cnRpYWxTdGF0ZSBOZXh0IHBhcnRpYWwgc3RhdGUgdG8gYmUgbWVyZ2VkIHdpdGggc3RhdGUuCisg
ICAqIEBpbnRlcm5hbAorICAgKi8KKworCisgIFJlYWN0U2VydmVyVXBkYXRlUXVldWUucHJvdG90
eXBlLmVucXVldWVTZXRTdGF0ZSA9IGZ1bmN0aW9uIGVucXVldWVTZXRTdGF0ZShwdWJsaWNJbnN0
YW5jZSwgcGFydGlhbFN0YXRlKSB7CisgICAgaWYgKHRoaXMudHJhbnNhY3Rpb24uaXNJblRyYW5z
YWN0aW9uKCkpIHsKKyAgICAgIFJlYWN0VXBkYXRlUXVldWUuZW5xdWV1ZVNldFN0YXRlKHB1Ymxp
Y0luc3RhbmNlLCBwYXJ0aWFsU3RhdGUpOworICAgIH0gZWxzZSB7CisgICAgICB3YXJuTm9vcChw
dWJsaWNJbnN0YW5jZSwgJ3NldFN0YXRlJyk7CisgICAgfQorICB9OworCisgIHJldHVybiBSZWFj
dFNlcnZlclVwZGF0ZVF1ZXVlOworfSgpOworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0U2VydmVy
VXBkYXRlUXVldWU7Cit9LHsiMTQ3IjoxNDcsIjc0Ijo3NH1dLDc0OltmdW5jdGlvbihfZGVyZXFf
LG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTUtcHJlc2VudCwgRmFjZWJv
b2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29k
ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisg
KiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUu
IEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNl
IHN0cmljdCc7CisKK3ZhciBfcHJvZEludmFyaWFudCA9IF9kZXJlcV8oMTE2KTsKKwordmFyIFJl
YWN0Q3VycmVudE93bmVyID0gX2RlcmVxXygxMjMpOwordmFyIFJlYWN0SW5zdGFuY2VNYXAgPSBf
ZGVyZXFfKDU4KTsKK3ZhciBSZWFjdEluc3RydW1lbnRhdGlvbiA9IF9kZXJlcV8oNTkpOwordmFy
IFJlYWN0VXBkYXRlcyA9IF9kZXJlcV8oNzUpOworCit2YXIgaW52YXJpYW50ID0gX2RlcmVxXygx
NDApOwordmFyIHdhcm5pbmcgPSBfZGVyZXFfKDE0Nyk7CisKK2Z1bmN0aW9uIGVucXVldWVVcGRh
dGUoaW50ZXJuYWxJbnN0YW5jZSkgeworICBSZWFjdFVwZGF0ZXMuZW5xdWV1ZVVwZGF0ZShpbnRl
cm5hbEluc3RhbmNlKTsKK30KKworZnVuY3Rpb24gZm9ybWF0VW5leHBlY3RlZEFyZ3VtZW50KGFy
ZykgeworICB2YXIgdHlwZSA9IHR5cGVvZiBhcmc7CisgIGlmICh0eXBlICE9PSAnb2JqZWN0Jykg
eworICAgIHJldHVybiB0eXBlOworICB9CisgIHZhciBkaXNwbGF5TmFtZSA9IGFyZy5jb25zdHJ1
Y3RvciAmJiBhcmcuY29uc3RydWN0b3IubmFtZSB8fCB0eXBlOworICB2YXIga2V5cyA9IE9iamVj
dC5rZXlzKGFyZyk7CisgIGlmIChrZXlzLmxlbmd0aCA+IDAgJiYga2V5cy5sZW5ndGggPCAyMCkg
eworICAgIHJldHVybiBkaXNwbGF5TmFtZSArICcgKGtleXM6ICcgKyBrZXlzLmpvaW4oJywgJykg
KyAnKSc7CisgIH0KKyAgcmV0dXJuIGRpc3BsYXlOYW1lOworfQorCitmdW5jdGlvbiBnZXRJbnRl
cm5hbEluc3RhbmNlUmVhZHlGb3JVcGRhdGUocHVibGljSW5zdGFuY2UsIGNhbGxlck5hbWUpIHsK
KyAgdmFyIGludGVybmFsSW5zdGFuY2UgPSBSZWFjdEluc3RhbmNlTWFwLmdldChwdWJsaWNJbnN0
YW5jZSk7CisgIGlmICghaW50ZXJuYWxJbnN0YW5jZSkgeworICAgIGlmICgiZGV2ZWxvcG1lbnQi
ICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgIHZhciBjdG9yID0gcHVibGljSW5zdGFuY2UuY29u
c3RydWN0b3I7CisgICAgICAvLyBPbmx5IHdhcm4gd2hlbiB3ZSBoYXZlIGEgY2FsbGVyTmFtZS4g
T3RoZXJ3aXNlIHdlIHNob3VsZCBiZSBzaWxlbnQuCisgICAgICAvLyBXZSdyZSBwcm9iYWJseSBj
YWxsaW5nIGZyb20gZW5xdWV1ZUNhbGxiYWNrLiBXZSBkb24ndCB3YW50IHRvIHdhcm4KKyAgICAg
IC8vIHRoZXJlIGJlY2F1c2Ugd2UgYWxyZWFkeSB3YXJuZWQgZm9yIHRoZSBjb3JyZXNwb25kaW5n
IGxpZmVjeWNsZSBtZXRob2QuCisgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicg
PyB3YXJuaW5nKCFjYWxsZXJOYW1lLCAnJXMoLi4uKTogQ2FuIG9ubHkgdXBkYXRlIGEgbW91bnRl
ZCBvciBtb3VudGluZyBjb21wb25lbnQuICcgKyAnVGhpcyB1c3VhbGx5IG1lYW5zIHlvdSBjYWxs
ZWQgJXMoKSBvbiBhbiB1bm1vdW50ZWQgY29tcG9uZW50LiAnICsgJ1RoaXMgaXMgYSBuby1vcC4g
UGxlYXNlIGNoZWNrIHRoZSBjb2RlIGZvciB0aGUgJXMgY29tcG9uZW50LicsIGNhbGxlck5hbWUs
IGNhbGxlck5hbWUsIGN0b3IgJiYgKGN0b3IuZGlzcGxheU5hbWUgfHwgY3Rvci5uYW1lKSB8fCAn
UmVhY3RDbGFzcycpIDogdm9pZCAwOworICAgIH0KKyAgICByZXR1cm4gbnVsbDsKKyAgfQorCisg
IGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAiZGV2ZWxvcG1lbnQi
ICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPT0g
bnVsbCwgJyVzKC4uLik6IENhbm5vdCB1cGRhdGUgZHVyaW5nIGFuIGV4aXN0aW5nIHN0YXRlIHRy
YW5zaXRpb24gKHN1Y2ggYXMgJyArICd3aXRoaW4gYHJlbmRlcmAgb3IgYW5vdGhlciBjb21wb25l
bnRcJ3MgY29uc3RydWN0b3IpLiBSZW5kZXIgbWV0aG9kcyAnICsgJ3Nob3VsZCBiZSBhIHB1cmUg
ZnVuY3Rpb24gb2YgcHJvcHMgYW5kIHN0YXRlOyBjb25zdHJ1Y3RvciAnICsgJ3NpZGUtZWZmZWN0
cyBhcmUgYW4gYW50aS1wYXR0ZXJuLCBidXQgY2FuIGJlIG1vdmVkIHRvICcgKyAnYGNvbXBvbmVu
dFdpbGxNb3VudGAuJywgY2FsbGVyTmFtZSkgOiB2b2lkIDA7CisgIH0KKworICByZXR1cm4gaW50
ZXJuYWxJbnN0YW5jZTsKK30KKworLyoqCisgKiBSZWFjdFVwZGF0ZVF1ZXVlIGFsbG93cyBmb3Ig
c3RhdGUgdXBkYXRlcyB0byBiZSBzY2hlZHVsZWQgaW50byBhIGxhdGVyCisgKiByZWNvbmNpbGlh
dGlvbiBzdGVwLgorICovCit2YXIgUmVhY3RVcGRhdGVRdWV1ZSA9IHsKKworICAvKioKKyAgICog
Q2hlY2tzIHdoZXRoZXIgb3Igbm90IHRoaXMgY29tcG9zaXRlIGNvbXBvbmVudCBpcyBtb3VudGVk
LgorICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB3
ZSB3YW50IHRvIHRlc3QuCisgICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgbW91bnRlZCwg
ZmFsc2Ugb3RoZXJ3aXNlLgorICAgKiBAcHJvdGVjdGVkCisgICAqIEBmaW5hbAorICAgKi8KKyAg
aXNNb3VudGVkOiBmdW5jdGlvbiAocHVibGljSW5zdGFuY2UpIHsKKyAgICBpZiAoImRldmVsb3Bt
ZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICB2YXIgb3duZXIgPSBSZWFjdEN1cnJlbnRP
d25lci5jdXJyZW50OworICAgICAgaWYgKG93bmVyICE9PSBudWxsKSB7CisgICAgICAgICJkZXZl
bG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcob3duZXIuX3dhcm5lZEFib3V0UmVm
c0luUmVuZGVyLCAnJXMgaXMgYWNjZXNzaW5nIGlzTW91bnRlZCBpbnNpZGUgaXRzIHJlbmRlcigp
IGZ1bmN0aW9uLiAnICsgJ3JlbmRlcigpIHNob3VsZCBiZSBhIHB1cmUgZnVuY3Rpb24gb2YgcHJv
cHMgYW5kIHN0YXRlLiBJdCBzaG91bGQgJyArICduZXZlciBhY2Nlc3Mgc29tZXRoaW5nIHRoYXQg
cmVxdWlyZXMgc3RhbGUgZGF0YSBmcm9tIHRoZSBwcmV2aW91cyAnICsgJ3JlbmRlciwgc3VjaCBh
cyByZWZzLiBNb3ZlIHRoaXMgbG9naWMgdG8gY29tcG9uZW50RGlkTW91bnQgYW5kICcgKyAnY29t
cG9uZW50RGlkVXBkYXRlIGluc3RlYWQuJywgb3duZXIuZ2V0TmFtZSgpIHx8ICdBIGNvbXBvbmVu
dCcpIDogdm9pZCAwOworICAgICAgICBvd25lci5fd2FybmVkQWJvdXRSZWZzSW5SZW5kZXIgPSB0
cnVlOworICAgICAgfQorICAgIH0KKyAgICB2YXIgaW50ZXJuYWxJbnN0YW5jZSA9IFJlYWN0SW5z
dGFuY2VNYXAuZ2V0KHB1YmxpY0luc3RhbmNlKTsKKyAgICBpZiAoaW50ZXJuYWxJbnN0YW5jZSkg
eworICAgICAgLy8gRHVyaW5nIGNvbXBvbmVudFdpbGxNb3VudCBhbmQgcmVuZGVyIHRoaXMgd2ls
bCBzdGlsbCBiZSBudWxsIGJ1dCBhZnRlcgorICAgICAgLy8gdGhhdCB3aWxsIGFsd2F5cyByZW5k
ZXIgdG8gc29tZXRoaW5nLiBBdCBsZWFzdCBmb3Igbm93LiBTbyB3ZSBjYW4gdXNlCisgICAgICAv
LyB0aGlzIGhhY2suCisgICAgICByZXR1cm4gISFpbnRlcm5hbEluc3RhbmNlLl9yZW5kZXJlZENv
bXBvbmVudDsKKyAgICB9IGVsc2UgeworICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgfSwK
KworICAvKioKKyAgICogRW5xdWV1ZSBhIGNhbGxiYWNrIHRoYXQgd2lsbCBiZSBleGVjdXRlZCBh
ZnRlciBhbGwgdGhlIHBlbmRpbmcgdXBkYXRlcworICAgKiBoYXZlIHByb2Nlc3NlZC4KKyAgICoK
KyAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdG8g
dXNlIGFzIGB0aGlzYCBjb250ZXh0LgorICAgKiBAcGFyYW0gez9mdW5jdGlvbn0gY2FsbGJhY2sg
Q2FsbGVkIGFmdGVyIHN0YXRlIGlzIHVwZGF0ZWQuCisgICAqIEBwYXJhbSB7c3RyaW5nfSBjYWxs
ZXJOYW1lIE5hbWUgb2YgdGhlIGNhbGxpbmcgZnVuY3Rpb24gaW4gdGhlIHB1YmxpYyBBUEkuCisg
ICAqIEBpbnRlcm5hbAorICAgKi8KKyAgZW5xdWV1ZUNhbGxiYWNrOiBmdW5jdGlvbiAocHVibGlj
SW5zdGFuY2UsIGNhbGxiYWNrLCBjYWxsZXJOYW1lKSB7CisgICAgUmVhY3RVcGRhdGVRdWV1ZS52
YWxpZGF0ZUNhbGxiYWNrKGNhbGxiYWNrLCBjYWxsZXJOYW1lKTsKKyAgICB2YXIgaW50ZXJuYWxJ
bnN0YW5jZSA9IGdldEludGVybmFsSW5zdGFuY2VSZWFkeUZvclVwZGF0ZShwdWJsaWNJbnN0YW5j
ZSk7CisKKyAgICAvLyBQcmV2aW91c2x5IHdlIHdvdWxkIHRocm93IGFuIGVycm9yIGlmIHdlIGRp
ZG4ndCBoYXZlIGFuIGludGVybmFsCisgICAgLy8gaW5zdGFuY2UuIFNpbmNlIHdlIHdhbnQgdG8g
bWFrZSBpdCBhIG5vLW9wIGluc3RlYWQsIHdlIG1pcnJvciB0aGUgc2FtZQorICAgIC8vIGJlaGF2
aW9yIHdlIGhhdmUgaW4gb3RoZXIgZW5xdWV1ZSogbWV0aG9kcy4KKyAgICAvLyBXZSBhbHNvIG5l
ZWQgdG8gaWdub3JlIGNhbGxiYWNrcyBpbiBjb21wb25lbnRXaWxsTW91bnQuIFNlZQorICAgIC8v
IGVucXVldWVVcGRhdGVzLgorICAgIGlmICghaW50ZXJuYWxJbnN0YW5jZSkgeworICAgICAgcmV0
dXJuIG51bGw7CisgICAgfQorCisgICAgaWYgKGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdDYWxs
YmFja3MpIHsKKyAgICAgIGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdDYWxsYmFja3MucHVzaChj
YWxsYmFjayk7CisgICAgfSBlbHNlIHsKKyAgICAgIGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdD
YWxsYmFja3MgPSBbY2FsbGJhY2tdOworICAgIH0KKyAgICAvLyBUT0RPOiBUaGUgY2FsbGJhY2sg
aGVyZSBpcyBpZ25vcmVkIHdoZW4gc2V0U3RhdGUgaXMgY2FsbGVkIGZyb20KKyAgICAvLyBjb21w
b25lbnRXaWxsTW91bnQuIEVpdGhlciBmaXggaXQgb3IgZGlzYWxsb3cgZG9pbmcgc28gY29tcGxl
dGVseSBpbgorICAgIC8vIGZhdm9yIG9mIGdldEluaXRpYWxTdGF0ZS4gQWx0ZXJuYXRpdmVseSwg
d2UgY2FuIGRpc2FsbG93CisgICAgLy8gY29tcG9uZW50V2lsbE1vdW50IGR1cmluZyBzZXJ2ZXIt
c2lkZSByZW5kZXJpbmcuCisgICAgZW5xdWV1ZVVwZGF0ZShpbnRlcm5hbEluc3RhbmNlKTsKKyAg
fSwKKworICBlbnF1ZXVlQ2FsbGJhY2tJbnRlcm5hbDogZnVuY3Rpb24gKGludGVybmFsSW5zdGFu
Y2UsIGNhbGxiYWNrKSB7CisgICAgaWYgKGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdDYWxsYmFj
a3MpIHsKKyAgICAgIGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdDYWxsYmFja3MucHVzaChjYWxs
YmFjayk7CisgICAgfSBlbHNlIHsKKyAgICAgIGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdDYWxs
YmFja3MgPSBbY2FsbGJhY2tdOworICAgIH0KKyAgICBlbnF1ZXVlVXBkYXRlKGludGVybmFsSW5z
dGFuY2UpOworICB9LAorCisgIC8qKgorICAgKiBGb3JjZXMgYW4gdXBkYXRlLiBUaGlzIHNob3Vs
ZCBvbmx5IGJlIGludm9rZWQgd2hlbiBpdCBpcyBrbm93biB3aXRoCisgICAqIGNlcnRhaW50eSB0
aGF0IHdlIGFyZSAqKm5vdCoqIGluIGEgRE9NIHRyYW5zYWN0aW9uLgorICAgKgorICAgKiBZb3Ug
bWF5IHdhbnQgdG8gY2FsbCB0aGlzIHdoZW4geW91IGtub3cgdGhhdCBzb21lIGRlZXBlciBhc3Bl
Y3Qgb2YgdGhlCisgICAqIGNvbXBvbmVudCdzIHN0YXRlIGhhcyBjaGFuZ2VkIGJ1dCBgc2V0U3Rh
dGVgIHdhcyBub3QgY2FsbGVkLgorICAgKgorICAgKiBUaGlzIHdpbGwgbm90IGludm9rZSBgc2hv
dWxkQ29tcG9uZW50VXBkYXRlYCwgYnV0IGl0IHdpbGwgaW52b2tlCisgICAqIGBjb21wb25lbnRX
aWxsVXBkYXRlYCBhbmQgYGNvbXBvbmVudERpZFVwZGF0ZWAuCisgICAqCisgICAqIEBwYXJhbSB7
UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHRoYXQgc2hvdWxkIHJlcmVu
ZGVyLgorICAgKiBAaW50ZXJuYWwKKyAgICovCisgIGVucXVldWVGb3JjZVVwZGF0ZTogZnVuY3Rp
b24gKHB1YmxpY0luc3RhbmNlKSB7CisgICAgdmFyIGludGVybmFsSW5zdGFuY2UgPSBnZXRJbnRl
cm5hbEluc3RhbmNlUmVhZHlGb3JVcGRhdGUocHVibGljSW5zdGFuY2UsICdmb3JjZVVwZGF0ZScp
OworCisgICAgaWYgKCFpbnRlcm5hbEluc3RhbmNlKSB7CisgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ0ZvcmNlVXBkYXRlID0gdHJ1ZTsKKworICAg
IGVucXVldWVVcGRhdGUoaW50ZXJuYWxJbnN0YW5jZSk7CisgIH0sCisKKyAgLyoqCisgICAqIFJl
cGxhY2VzIGFsbCBvZiB0aGUgc3RhdGUuIEFsd2F5cyB1c2UgdGhpcyBvciBgc2V0U3RhdGVgIHRv
IG11dGF0ZSBzdGF0ZS4KKyAgICogWW91IHNob3VsZCB0cmVhdCBgdGhpcy5zdGF0ZWAgYXMgaW1t
dXRhYmxlLgorICAgKgorICAgKiBUaGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCBgdGhpcy5zdGF0
ZWAgd2lsbCBiZSBpbW1lZGlhdGVseSB1cGRhdGVkLCBzbworICAgKiBhY2Nlc3NpbmcgYHRoaXMu
c3RhdGVgIGFmdGVyIGNhbGxpbmcgdGhpcyBtZXRob2QgbWF5IHJldHVybiB0aGUgb2xkIHZhbHVl
LgorICAgKgorICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0
YW5jZSB0aGF0IHNob3VsZCByZXJlbmRlci4KKyAgICogQHBhcmFtIHtvYmplY3R9IGNvbXBsZXRl
U3RhdGUgTmV4dCBzdGF0ZS4KKyAgICogQGludGVybmFsCisgICAqLworICBlbnF1ZXVlUmVwbGFj
ZVN0YXRlOiBmdW5jdGlvbiAocHVibGljSW5zdGFuY2UsIGNvbXBsZXRlU3RhdGUpIHsKKyAgICB2
YXIgaW50ZXJuYWxJbnN0YW5jZSA9IGdldEludGVybmFsSW5zdGFuY2VSZWFkeUZvclVwZGF0ZShw
dWJsaWNJbnN0YW5jZSwgJ3JlcGxhY2VTdGF0ZScpOworCisgICAgaWYgKCFpbnRlcm5hbEluc3Rh
bmNlKSB7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgaW50ZXJuYWxJbnN0YW5jZS5fcGVu
ZGluZ1N0YXRlUXVldWUgPSBbY29tcGxldGVTdGF0ZV07CisgICAgaW50ZXJuYWxJbnN0YW5jZS5f
cGVuZGluZ1JlcGxhY2VTdGF0ZSA9IHRydWU7CisKKyAgICBlbnF1ZXVlVXBkYXRlKGludGVybmFs
SW5zdGFuY2UpOworICB9LAorCisgIC8qKgorICAgKiBTZXRzIGEgc3Vic2V0IG9mIHRoZSBzdGF0
ZS4gVGhpcyBvbmx5IGV4aXN0cyBiZWNhdXNlIF9wZW5kaW5nU3RhdGUgaXMKKyAgICogaW50ZXJu
YWwuIFRoaXMgcHJvdmlkZXMgYSBtZXJnaW5nIHN0cmF0ZWd5IHRoYXQgaXMgbm90IGF2YWlsYWJs
ZSB0byBkZWVwCisgICAqIHByb3BlcnRpZXMgd2hpY2ggaXMgY29uZnVzaW5nLiBUT0RPOiBFeHBv
c2UgcGVuZGluZ1N0YXRlIG9yIGRvbid0IHVzZSBpdAorICAgKiBkdXJpbmcgdGhlIG1lcmdlLgor
ICAgKgorICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5j
ZSB0aGF0IHNob3VsZCByZXJlbmRlci4KKyAgICogQHBhcmFtIHtvYmplY3R9IHBhcnRpYWxTdGF0
ZSBOZXh0IHBhcnRpYWwgc3RhdGUgdG8gYmUgbWVyZ2VkIHdpdGggc3RhdGUuCisgICAqIEBpbnRl
cm5hbAorICAgKi8KKyAgZW5xdWV1ZVNldFN0YXRlOiBmdW5jdGlvbiAocHVibGljSW5zdGFuY2Us
IHBhcnRpYWxTdGF0ZSkgeworICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicp
IHsKKyAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vblNldFN0YXRlKCk7Cisg
ICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHBhcnRpYWxTdGF0
ZSAhPSBudWxsLCAnc2V0U3RhdGUoLi4uKTogWW91IHBhc3NlZCBhbiB1bmRlZmluZWQgb3IgbnVs
bCBzdGF0ZSBvYmplY3Q7ICcgKyAnaW5zdGVhZCwgdXNlIGZvcmNlVXBkYXRlKCkuJykgOiB2b2lk
IDA7CisgICAgfQorCisgICAgdmFyIGludGVybmFsSW5zdGFuY2UgPSBnZXRJbnRlcm5hbEluc3Rh
bmNlUmVhZHlGb3JVcGRhdGUocHVibGljSW5zdGFuY2UsICdzZXRTdGF0ZScpOworCisgICAgaWYg
KCFpbnRlcm5hbEluc3RhbmNlKSB7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgdmFyIHF1
ZXVlID0gaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ1N0YXRlUXVldWUgfHwgKGludGVybmFsSW5z
dGFuY2UuX3BlbmRpbmdTdGF0ZVF1ZXVlID0gW10pOworICAgIHF1ZXVlLnB1c2gocGFydGlhbFN0
YXRlKTsKKworICAgIGVucXVldWVVcGRhdGUoaW50ZXJuYWxJbnN0YW5jZSk7CisgIH0sCisKKyAg
ZW5xdWV1ZUVsZW1lbnRJbnRlcm5hbDogZnVuY3Rpb24gKGludGVybmFsSW5zdGFuY2UsIG5leHRF
bGVtZW50LCBuZXh0Q29udGV4dCkgeworICAgIGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdFbGVt
ZW50ID0gbmV4dEVsZW1lbnQ7CisgICAgLy8gVE9ETzogaW50cm9kdWNlIF9wZW5kaW5nQ29udGV4
dCBpbnN0ZWFkIG9mIHNldHRpbmcgaXQgZGlyZWN0bHkuCisgICAgaW50ZXJuYWxJbnN0YW5jZS5f
Y29udGV4dCA9IG5leHRDb250ZXh0OworICAgIGVucXVldWVVcGRhdGUoaW50ZXJuYWxJbnN0YW5j
ZSk7CisgIH0sCisKKyAgdmFsaWRhdGVDYWxsYmFjazogZnVuY3Rpb24gKGNhbGxiYWNrLCBjYWxs
ZXJOYW1lKSB7CisgICAgISghY2FsbGJhY2sgfHwgdHlwZW9mIGNhbGxiYWNrID09PSAnZnVuY3Rp
b24nKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwg
JyVzKC4uLik6IEV4cGVjdGVkIHRoZSBsYXN0IG9wdGlvbmFsIGBjYWxsYmFja2AgYXJndW1lbnQg
dG8gYmUgYSBmdW5jdGlvbi4gSW5zdGVhZCByZWNlaXZlZDogJXMuJywgY2FsbGVyTmFtZSwgZm9y
bWF0VW5leHBlY3RlZEFyZ3VtZW50KGNhbGxiYWNrKSkgOiBfcHJvZEludmFyaWFudCgnMTIyJywg
Y2FsbGVyTmFtZSwgZm9ybWF0VW5leHBlY3RlZEFyZ3VtZW50KGNhbGxiYWNrKSkgOiB2b2lkIDA7
CisgIH0KKworfTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdFVwZGF0ZVF1ZXVlOworfSx7IjEx
NiI6MTE2LCIxMjMiOjEyMywiMTQwIjoxNDAsIjE0NyI6MTQ3LCI1OCI6NTgsIjU5Ijo1OSwiNzUi
Ojc1fV0sNzU6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5
cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5
bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJl
Y3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0
ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9wcm9kSW52YXJpYW50
ID0gX2RlcmVxXygxMTYpLAorICAgIF9hc3NpZ24gPSBfZGVyZXFfKDE0OCk7CisKK3ZhciBDYWxs
YmFja1F1ZXVlID0gX2RlcmVxXyg2KTsKK3ZhciBQb29sZWRDbGFzcyA9IF9kZXJlcV8oMjQpOwor
dmFyIFJlYWN0RmVhdHVyZUZsYWdzID0gX2RlcmVxXyg1Myk7Cit2YXIgUmVhY3RSZWNvbmNpbGVy
ID0gX2RlcmVxXyg2OCk7Cit2YXIgVHJhbnNhY3Rpb24gPSBfZGVyZXFfKDkzKTsKKwordmFyIGlu
dmFyaWFudCA9IF9kZXJlcV8oMTQwKTsKKwordmFyIGRpcnR5Q29tcG9uZW50cyA9IFtdOwordmFy
IHVwZGF0ZUJhdGNoTnVtYmVyID0gMDsKK3ZhciBhc2FwQ2FsbGJhY2tRdWV1ZSA9IENhbGxiYWNr
UXVldWUuZ2V0UG9vbGVkKCk7Cit2YXIgYXNhcEVucXVldWVkID0gZmFsc2U7CisKK3ZhciBiYXRj
aGluZ1N0cmF0ZWd5ID0gbnVsbDsKKworZnVuY3Rpb24gZW5zdXJlSW5qZWN0ZWQoKSB7CisgICEo
UmVhY3RVcGRhdGVzLlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24gJiYgYmF0Y2hpbmdTdHJhdGVn
eSkgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdS
ZWFjdFVwZGF0ZXM6IG11c3QgaW5qZWN0IGEgcmVjb25jaWxlIHRyYW5zYWN0aW9uIGNsYXNzIGFu
ZCBiYXRjaGluZyBzdHJhdGVneScpIDogX3Byb2RJbnZhcmlhbnQoJzEyMycpIDogdm9pZCAwOwor
fQorCit2YXIgTkVTVEVEX1VQREFURVMgPSB7CisgIGluaXRpYWxpemU6IGZ1bmN0aW9uICgpIHsK
KyAgICB0aGlzLmRpcnR5Q29tcG9uZW50c0xlbmd0aCA9IGRpcnR5Q29tcG9uZW50cy5sZW5ndGg7
CisgIH0sCisgIGNsb3NlOiBmdW5jdGlvbiAoKSB7CisgICAgaWYgKHRoaXMuZGlydHlDb21wb25l
bnRzTGVuZ3RoICE9PSBkaXJ0eUNvbXBvbmVudHMubGVuZ3RoKSB7CisgICAgICAvLyBBZGRpdGlv
bmFsIHVwZGF0ZXMgd2VyZSBlbnF1ZXVlZCBieSBjb21wb25lbnREaWRVcGRhdGUgaGFuZGxlcnMg
b3IKKyAgICAgIC8vIHNpbWlsYXI7IGJlZm9yZSBvdXIgb3duIFVQREFURV9RVUVVRUlORyB3cmFw
cGVyIGNsb3Nlcywgd2Ugd2FudCB0byBydW4KKyAgICAgIC8vIHRoZXNlIG5ldyB1cGRhdGVzIHNv
IHRoYXQgaWYgQSdzIGNvbXBvbmVudERpZFVwZGF0ZSBjYWxscyBzZXRTdGF0ZSBvbgorICAgICAg
Ly8gQiwgQiB3aWxsIHVwZGF0ZSBiZWZvcmUgdGhlIGNhbGxiYWNrIEEncyB1cGRhdGVyIHByb3Zp
ZGVkIHdoZW4gY2FsbGluZworICAgICAgLy8gc2V0U3RhdGUuCisgICAgICBkaXJ0eUNvbXBvbmVu
dHMuc3BsaWNlKDAsIHRoaXMuZGlydHlDb21wb25lbnRzTGVuZ3RoKTsKKyAgICAgIGZsdXNoQmF0
Y2hlZFVwZGF0ZXMoKTsKKyAgICB9IGVsc2UgeworICAgICAgZGlydHlDb21wb25lbnRzLmxlbmd0
aCA9IDA7CisgICAgfQorICB9Cit9OworCit2YXIgVVBEQVRFX1FVRVVFSU5HID0geworICBpbml0
aWFsaXplOiBmdW5jdGlvbiAoKSB7CisgICAgdGhpcy5jYWxsYmFja1F1ZXVlLnJlc2V0KCk7Cisg
IH0sCisgIGNsb3NlOiBmdW5jdGlvbiAoKSB7CisgICAgdGhpcy5jYWxsYmFja1F1ZXVlLm5vdGlm
eUFsbCgpOworICB9Cit9OworCit2YXIgVFJBTlNBQ1RJT05fV1JBUFBFUlMgPSBbTkVTVEVEX1VQ
REFURVMsIFVQREFURV9RVUVVRUlOR107CisKK2Z1bmN0aW9uIFJlYWN0VXBkYXRlc0ZsdXNoVHJh
bnNhY3Rpb24oKSB7CisgIHRoaXMucmVpbml0aWFsaXplVHJhbnNhY3Rpb24oKTsKKyAgdGhpcy5k
aXJ0eUNvbXBvbmVudHNMZW5ndGggPSBudWxsOworICB0aGlzLmNhbGxiYWNrUXVldWUgPSBDYWxs
YmFja1F1ZXVlLmdldFBvb2xlZCgpOworICB0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uID0gUmVh
Y3RVcGRhdGVzLlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24uZ2V0UG9vbGVkKAorICAvKiB1c2VD
cmVhdGVFbGVtZW50ICovdHJ1ZSk7Cit9CisKK19hc3NpZ24oUmVhY3RVcGRhdGVzRmx1c2hUcmFu
c2FjdGlvbi5wcm90b3R5cGUsIFRyYW5zYWN0aW9uLCB7CisgIGdldFRyYW5zYWN0aW9uV3JhcHBl
cnM6IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gVFJBTlNBQ1RJT05fV1JBUFBFUlM7CisgIH0s
CisKKyAgZGVzdHJ1Y3RvcjogZnVuY3Rpb24gKCkgeworICAgIHRoaXMuZGlydHlDb21wb25lbnRz
TGVuZ3RoID0gbnVsbDsKKyAgICBDYWxsYmFja1F1ZXVlLnJlbGVhc2UodGhpcy5jYWxsYmFja1F1
ZXVlKTsKKyAgICB0aGlzLmNhbGxiYWNrUXVldWUgPSBudWxsOworICAgIFJlYWN0VXBkYXRlcy5S
ZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uLnJlbGVhc2UodGhpcy5yZWNvbmNpbGVUcmFuc2FjdGlv
bik7CisgICAgdGhpcy5yZWNvbmNpbGVUcmFuc2FjdGlvbiA9IG51bGw7CisgIH0sCisKKyAgcGVy
Zm9ybTogZnVuY3Rpb24gKG1ldGhvZCwgc2NvcGUsIGEpIHsKKyAgICAvLyBFc3NlbnRpYWxseSBj
YWxscyBgdGhpcy5yZWNvbmNpbGVUcmFuc2FjdGlvbi5wZXJmb3JtKG1ldGhvZCwgc2NvcGUsIGEp
YAorICAgIC8vIHdpdGggdGhpcyB0cmFuc2FjdGlvbidzIHdyYXBwZXJzIGFyb3VuZCBpdC4KKyAg
ICByZXR1cm4gVHJhbnNhY3Rpb24ucGVyZm9ybS5jYWxsKHRoaXMsIHRoaXMucmVjb25jaWxlVHJh
bnNhY3Rpb24ucGVyZm9ybSwgdGhpcy5yZWNvbmNpbGVUcmFuc2FjdGlvbiwgbWV0aG9kLCBzY29w
ZSwgYSk7CisgIH0KK30pOworCitQb29sZWRDbGFzcy5hZGRQb29saW5nVG8oUmVhY3RVcGRhdGVz
Rmx1c2hUcmFuc2FjdGlvbik7CisKK2Z1bmN0aW9uIGJhdGNoZWRVcGRhdGVzKGNhbGxiYWNrLCBh
LCBiLCBjLCBkLCBlKSB7CisgIGVuc3VyZUluamVjdGVkKCk7CisgIHJldHVybiBiYXRjaGluZ1N0
cmF0ZWd5LmJhdGNoZWRVcGRhdGVzKGNhbGxiYWNrLCBhLCBiLCBjLCBkLCBlKTsKK30KKworLyoq
CisgKiBBcnJheSBjb21wYXJhdG9yIGZvciBSZWFjdENvbXBvbmVudHMgYnkgbW91bnQgb3JkZXJp
bmcuCisgKgorICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gYzEgZmlyc3QgY29tcG9uZW50IHlv
dSdyZSBjb21wYXJpbmcKKyAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGMyIHNlY29uZCBjb21w
b25lbnQgeW91J3JlIGNvbXBhcmluZworICogQHJldHVybiB7bnVtYmVyfSBSZXR1cm4gdmFsdWUg
dXNhYmxlIGJ5IEFycmF5LnByb3RvdHlwZS5zb3J0KCkuCisgKi8KK2Z1bmN0aW9uIG1vdW50T3Jk
ZXJDb21wYXJhdG9yKGMxLCBjMikgeworICByZXR1cm4gYzEuX21vdW50T3JkZXIgLSBjMi5fbW91
bnRPcmRlcjsKK30KKworZnVuY3Rpb24gcnVuQmF0Y2hlZFVwZGF0ZXModHJhbnNhY3Rpb24pIHsK
KyAgdmFyIGxlbiA9IHRyYW5zYWN0aW9uLmRpcnR5Q29tcG9uZW50c0xlbmd0aDsKKyAgIShsZW4g
PT09IGRpcnR5Q29tcG9uZW50cy5sZW5ndGgpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rp
b24nID8gaW52YXJpYW50KGZhbHNlLCAnRXhwZWN0ZWQgZmx1c2ggdHJhbnNhY3Rpb25cJ3Mgc3Rv
cmVkIGRpcnR5LWNvbXBvbmVudHMgbGVuZ3RoICglcykgdG8gbWF0Y2ggZGlydHktY29tcG9uZW50
cyBhcnJheSBsZW5ndGggKCVzKS4nLCBsZW4sIGRpcnR5Q29tcG9uZW50cy5sZW5ndGgpIDogX3By
b2RJbnZhcmlhbnQoJzEyNCcsIGxlbiwgZGlydHlDb21wb25lbnRzLmxlbmd0aCkgOiB2b2lkIDA7
CisKKyAgLy8gU2luY2UgcmVjb25jaWxpbmcgYSBjb21wb25lbnQgaGlnaGVyIGluIHRoZSBvd25l
ciBoaWVyYXJjaHkgdXN1YWxseSAobm90CisgIC8vIGFsd2F5cyAtLSBzZWUgc2hvdWxkQ29tcG9u
ZW50VXBkYXRlKCkpIHdpbGwgcmVjb25jaWxlIGNoaWxkcmVuLCByZWNvbmNpbGUKKyAgLy8gdGhl
bSBiZWZvcmUgdGhlaXIgY2hpbGRyZW4gYnkgc29ydGluZyB0aGUgYXJyYXkuCisgIGRpcnR5Q29t
cG9uZW50cy5zb3J0KG1vdW50T3JkZXJDb21wYXJhdG9yKTsKKworICAvLyBBbnkgdXBkYXRlcyBl
bnF1ZXVlZCB3aGlsZSByZWNvbmNpbGluZyBtdXN0IGJlIHBlcmZvcm1lZCBhZnRlciB0aGlzIGVu
dGlyZQorICAvLyBiYXRjaC4gT3RoZXJ3aXNlLCBpZiBkaXJ0eUNvbXBvbmVudHMgaXMgW0EsIEJd
IHdoZXJlIEEgaGFzIGNoaWxkcmVuIEIgYW5kCisgIC8vIEMsIEIgY291bGQgdXBkYXRlIHR3aWNl
IGluIGEgc2luZ2xlIGJhdGNoIGlmIEMncyByZW5kZXIgZW5xdWV1ZXMgYW4gdXBkYXRlCisgIC8v
IHRvIEIgKHNpbmNlIEIgd291bGQgaGF2ZSBhbHJlYWR5IHVwZGF0ZWQsIHdlIHNob3VsZCBza2lw
IGl0LCBhbmQgdGhlIG9ubHkKKyAgLy8gd2F5IHdlIGNhbiBrbm93IHRvIGRvIHNvIGlzIGJ5IGNo
ZWNraW5nIHRoZSBiYXRjaCBjb3VudGVyKS4KKyAgdXBkYXRlQmF0Y2hOdW1iZXIrKzsKKworICBm
b3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgLy8gSWYgYSBjb21wb25lbnQgaXMg
dW5tb3VudGVkIGJlZm9yZSBwZW5kaW5nIGNoYW5nZXMgYXBwbHksIGl0IHdpbGwgc3RpbGwKKyAg
ICAvLyBiZSBoZXJlLCBidXQgd2UgYXNzdW1lIHRoYXQgaXQgaGFzIGNsZWFyZWQgaXRzIF9wZW5k
aW5nQ2FsbGJhY2tzIGFuZAorICAgIC8vIHRoYXQgcGVyZm9ybVVwZGF0ZUlmTmVjZXNzYXJ5IGlz
IGEgbm9vcC4KKyAgICB2YXIgY29tcG9uZW50ID0gZGlydHlDb21wb25lbnRzW2ldOworCisgICAg
Ly8gSWYgcGVyZm9ybVVwZGF0ZUlmTmVjZXNzYXJ5IGhhcHBlbnMgdG8gZW5xdWV1ZSBhbnkgbmV3
IHVwZGF0ZXMsIHdlCisgICAgLy8gc2hvdWxkbid0IGV4ZWN1dGUgdGhlIGNhbGxiYWNrcyB1bnRp
bCB0aGUgbmV4dCByZW5kZXIgaGFwcGVucywgc28KKyAgICAvLyBzdGFzaCB0aGUgY2FsbGJhY2tz
IGZpcnN0CisgICAgdmFyIGNhbGxiYWNrcyA9IGNvbXBvbmVudC5fcGVuZGluZ0NhbGxiYWNrczsK
KyAgICBjb21wb25lbnQuX3BlbmRpbmdDYWxsYmFja3MgPSBudWxsOworCisgICAgdmFyIG1hcmtl
ck5hbWU7CisgICAgaWYgKFJlYWN0RmVhdHVyZUZsYWdzLmxvZ1RvcExldmVsUmVuZGVycykgewor
ICAgICAgdmFyIG5hbWVkQ29tcG9uZW50ID0gY29tcG9uZW50OworICAgICAgLy8gRHVjayB0eXBl
IFRvcExldmVsV3JhcHBlci4gVGhpcyBpcyBwcm9iYWJseSBhbHdheXMgdHJ1ZS4KKyAgICAgIGlm
IChjb21wb25lbnQuX2N1cnJlbnRFbGVtZW50LnR5cGUuaXNSZWFjdFRvcExldmVsV3JhcHBlcikg
eworICAgICAgICBuYW1lZENvbXBvbmVudCA9IGNvbXBvbmVudC5fcmVuZGVyZWRDb21wb25lbnQ7
CisgICAgICB9CisgICAgICBtYXJrZXJOYW1lID0gJ1JlYWN0IHVwZGF0ZTogJyArIG5hbWVkQ29t
cG9uZW50LmdldE5hbWUoKTsKKyAgICAgIGNvbnNvbGUudGltZShtYXJrZXJOYW1lKTsKKyAgICB9
CisKKyAgICBSZWFjdFJlY29uY2lsZXIucGVyZm9ybVVwZGF0ZUlmTmVjZXNzYXJ5KGNvbXBvbmVu
dCwgdHJhbnNhY3Rpb24ucmVjb25jaWxlVHJhbnNhY3Rpb24sIHVwZGF0ZUJhdGNoTnVtYmVyKTsK
KworICAgIGlmIChtYXJrZXJOYW1lKSB7CisgICAgICBjb25zb2xlLnRpbWVFbmQobWFya2VyTmFt
ZSk7CisgICAgfQorCisgICAgaWYgKGNhbGxiYWNrcykgeworICAgICAgZm9yICh2YXIgaiA9IDA7
IGogPCBjYWxsYmFja3MubGVuZ3RoOyBqKyspIHsKKyAgICAgICAgdHJhbnNhY3Rpb24uY2FsbGJh
Y2tRdWV1ZS5lbnF1ZXVlKGNhbGxiYWNrc1tqXSwgY29tcG9uZW50LmdldFB1YmxpY0luc3RhbmNl
KCkpOworICAgICAgfQorICAgIH0KKyAgfQorfQorCit2YXIgZmx1c2hCYXRjaGVkVXBkYXRlcyA9
IGZ1bmN0aW9uICgpIHsKKyAgLy8gUmVhY3RVcGRhdGVzRmx1c2hUcmFuc2FjdGlvbidzIHdyYXBw
ZXJzIHdpbGwgY2xlYXIgdGhlIGRpcnR5Q29tcG9uZW50cworICAvLyBhcnJheSBhbmQgcGVyZm9y
bSBhbnkgdXBkYXRlcyBlbnF1ZXVlZCBieSBtb3VudC1yZWFkeSBoYW5kbGVycyAoaS5lLiwKKyAg
Ly8gY29tcG9uZW50RGlkVXBkYXRlKSBidXQgd2UgbmVlZCB0byBjaGVjayBoZXJlIHRvbyBpbiBv
cmRlciB0byBjYXRjaAorICAvLyB1cGRhdGVzIGVucXVldWVkIGJ5IHNldFN0YXRlIGNhbGxiYWNr
cyBhbmQgYXNhcCBjYWxscy4KKyAgd2hpbGUgKGRpcnR5Q29tcG9uZW50cy5sZW5ndGggfHwgYXNh
cEVucXVldWVkKSB7CisgICAgaWYgKGRpcnR5Q29tcG9uZW50cy5sZW5ndGgpIHsKKyAgICAgIHZh
ciB0cmFuc2FjdGlvbiA9IFJlYWN0VXBkYXRlc0ZsdXNoVHJhbnNhY3Rpb24uZ2V0UG9vbGVkKCk7
CisgICAgICB0cmFuc2FjdGlvbi5wZXJmb3JtKHJ1bkJhdGNoZWRVcGRhdGVzLCBudWxsLCB0cmFu
c2FjdGlvbik7CisgICAgICBSZWFjdFVwZGF0ZXNGbHVzaFRyYW5zYWN0aW9uLnJlbGVhc2UodHJh
bnNhY3Rpb24pOworICAgIH0KKworICAgIGlmIChhc2FwRW5xdWV1ZWQpIHsKKyAgICAgIGFzYXBF
bnF1ZXVlZCA9IGZhbHNlOworICAgICAgdmFyIHF1ZXVlID0gYXNhcENhbGxiYWNrUXVldWU7Cisg
ICAgICBhc2FwQ2FsbGJhY2tRdWV1ZSA9IENhbGxiYWNrUXVldWUuZ2V0UG9vbGVkKCk7CisgICAg
ICBxdWV1ZS5ub3RpZnlBbGwoKTsKKyAgICAgIENhbGxiYWNrUXVldWUucmVsZWFzZShxdWV1ZSk7
CisgICAgfQorICB9Cit9OworCisvKioKKyAqIE1hcmsgYSBjb21wb25lbnQgYXMgbmVlZGluZyBh
IHJlcmVuZGVyLCBhZGRpbmcgYW4gb3B0aW9uYWwgY2FsbGJhY2sgdG8gYQorICogbGlzdCBvZiBm
dW5jdGlvbnMgd2hpY2ggd2lsbCBiZSBleGVjdXRlZCBvbmNlIHRoZSByZXJlbmRlciBvY2N1cnMu
CisgKi8KK2Z1bmN0aW9uIGVucXVldWVVcGRhdGUoY29tcG9uZW50KSB7CisgIGVuc3VyZUluamVj
dGVkKCk7CisKKyAgLy8gVmFyaW91cyBwYXJ0cyBvZiBvdXIgY29kZSAoc3VjaCBhcyBSZWFjdENv
bXBvc2l0ZUNvbXBvbmVudCdzCisgIC8vIF9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnQpIGFzc3Vt
ZSB0aGF0IGNhbGxzIHRvIHJlbmRlciBhcmVuJ3QgbmVzdGVkOworICAvLyB2ZXJpZnkgdGhhdCB0
aGF0J3MgdGhlIGNhc2UuIChUaGlzIGlzIGNhbGxlZCBieSBlYWNoIHRvcC1sZXZlbCB1cGRhdGUK
KyAgLy8gZnVuY3Rpb24sIGxpa2Ugc2V0U3RhdGUsIGZvcmNlVXBkYXRlLCBldGMuOyBjcmVhdGlv
biBhbmQKKyAgLy8gZGVzdHJ1Y3Rpb24gb2YgdG9wLWxldmVsIGNvbXBvbmVudHMgaXMgZ3VhcmRl
ZCBpbiBSZWFjdE1vdW50LikKKworICBpZiAoIWJhdGNoaW5nU3RyYXRlZ3kuaXNCYXRjaGluZ1Vw
ZGF0ZXMpIHsKKyAgICBiYXRjaGluZ1N0cmF0ZWd5LmJhdGNoZWRVcGRhdGVzKGVucXVldWVVcGRh
dGUsIGNvbXBvbmVudCk7CisgICAgcmV0dXJuOworICB9CisKKyAgZGlydHlDb21wb25lbnRzLnB1
c2goY29tcG9uZW50KTsKKyAgaWYgKGNvbXBvbmVudC5fdXBkYXRlQmF0Y2hOdW1iZXIgPT0gbnVs
bCkgeworICAgIGNvbXBvbmVudC5fdXBkYXRlQmF0Y2hOdW1iZXIgPSB1cGRhdGVCYXRjaE51bWJl
ciArIDE7CisgIH0KK30KKworLyoqCisgKiBFbnF1ZXVlIGEgY2FsbGJhY2sgdG8gYmUgcnVuIGF0
IHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgYmF0Y2hpbmcgY3ljbGUuIFRocm93cworICogaWYgbm8g
dXBkYXRlcyBhcmUgY3VycmVudGx5IGJlaW5nIHBlcmZvcm1lZC4KKyAqLworZnVuY3Rpb24gYXNh
cChjYWxsYmFjaywgY29udGV4dCkgeworICAhYmF0Y2hpbmdTdHJhdGVneS5pc0JhdGNoaW5nVXBk
YXRlcyA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwg
J1JlYWN0VXBkYXRlcy5hc2FwOiBDYW5cJ3QgZW5xdWV1ZSBhbiBhc2FwIGNhbGxiYWNrIGluIGEg
Y29udGV4dCB3aGVyZXVwZGF0ZXMgYXJlIG5vdCBiZWluZyBiYXRjaGVkLicpIDogX3Byb2RJbnZh
cmlhbnQoJzEyNScpIDogdm9pZCAwOworICBhc2FwQ2FsbGJhY2tRdWV1ZS5lbnF1ZXVlKGNhbGxi
YWNrLCBjb250ZXh0KTsKKyAgYXNhcEVucXVldWVkID0gdHJ1ZTsKK30KKwordmFyIFJlYWN0VXBk
YXRlc0luamVjdGlvbiA9IHsKKyAgaW5qZWN0UmVjb25jaWxlVHJhbnNhY3Rpb246IGZ1bmN0aW9u
IChSZWNvbmNpbGVUcmFuc2FjdGlvbikgeworICAgICFSZWNvbmNpbGVUcmFuc2FjdGlvbiA/ICJk
ZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0VXBk
YXRlczogbXVzdCBwcm92aWRlIGEgcmVjb25jaWxlIHRyYW5zYWN0aW9uIGNsYXNzJykgOiBfcHJv
ZEludmFyaWFudCgnMTI2JykgOiB2b2lkIDA7CisgICAgUmVhY3RVcGRhdGVzLlJlYWN0UmVjb25j
aWxlVHJhbnNhY3Rpb24gPSBSZWNvbmNpbGVUcmFuc2FjdGlvbjsKKyAgfSwKKworICBpbmplY3RC
YXRjaGluZ1N0cmF0ZWd5OiBmdW5jdGlvbiAoX2JhdGNoaW5nU3RyYXRlZ3kpIHsKKyAgICAhX2Jh
dGNoaW5nU3RyYXRlZ3kgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlh
bnQoZmFsc2UsICdSZWFjdFVwZGF0ZXM6IG11c3QgcHJvdmlkZSBhIGJhdGNoaW5nIHN0cmF0ZWd5
JykgOiBfcHJvZEludmFyaWFudCgnMTI3JykgOiB2b2lkIDA7CisgICAgISh0eXBlb2YgX2JhdGNo
aW5nU3RyYXRlZ3kuYmF0Y2hlZFVwZGF0ZXMgPT09ICdmdW5jdGlvbicpID8gImRldmVsb3BtZW50
IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3RVcGRhdGVzOiBtdXN0
IHByb3ZpZGUgYSBiYXRjaGVkVXBkYXRlcygpIGZ1bmN0aW9uJykgOiBfcHJvZEludmFyaWFudCgn
MTI4JykgOiB2b2lkIDA7CisgICAgISh0eXBlb2YgX2JhdGNoaW5nU3RyYXRlZ3kuaXNCYXRjaGlu
Z1VwZGF0ZXMgPT09ICdib29sZWFuJykgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicg
PyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdFVwZGF0ZXM6IG11c3QgcHJvdmlkZSBhbiBpc0JhdGNo
aW5nVXBkYXRlcyBib29sZWFuIGF0dHJpYnV0ZScpIDogX3Byb2RJbnZhcmlhbnQoJzEyOScpIDog
dm9pZCAwOworICAgIGJhdGNoaW5nU3RyYXRlZ3kgPSBfYmF0Y2hpbmdTdHJhdGVneTsKKyAgfQor
fTsKKwordmFyIFJlYWN0VXBkYXRlcyA9IHsKKyAgLyoqCisgICAqIFJlYWN0IHJlZmVyZW5jZXMg
YFJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb25gIHVzaW5nIHRoaXMgcHJvcGVydHkgaW4gb3JkZXIK
KyAgICogdG8gYWxsb3cgZGVwZW5kZW5jeSBpbmplY3Rpb24uCisgICAqCisgICAqIEBpbnRlcm5h
bAorICAgKi8KKyAgUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbjogbnVsbCwKKworICBiYXRjaGVk
VXBkYXRlczogYmF0Y2hlZFVwZGF0ZXMsCisgIGVucXVldWVVcGRhdGU6IGVucXVldWVVcGRhdGUs
CisgIGZsdXNoQmF0Y2hlZFVwZGF0ZXM6IGZsdXNoQmF0Y2hlZFVwZGF0ZXMsCisgIGluamVjdGlv
bjogUmVhY3RVcGRhdGVzSW5qZWN0aW9uLAorICBhc2FwOiBhc2FwCit9OworCittb2R1bGUuZXhw
b3J0cyA9IFJlYWN0VXBkYXRlczsKK30seyIxMTYiOjExNiwiMTQwIjoxNDAsIjE0OCI6MTQ4LCIy
NCI6MjQsIjUzIjo1MywiNiI6NiwiNjgiOjY4LCI5MyI6OTN9XSw3NjpbZnVuY3Rpb24oX2RlcmVx
Xyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNv
ZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQor
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBp
biB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3Vz
ZSBzdHJpY3QnOworCittb2R1bGUuZXhwb3J0cyA9ICcxNS40LjAnOworfSx7fV0sNzc6W2Z1bmN0
aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBz
b3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgor
ICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIE5TID0geworICB4bGluazogJ2h0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsnLAorICB4bWw6ICdodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9u
YW1lc3BhY2UnCit9OworCisvLyBXZSB1c2UgYXR0cmlidXRlcyBmb3IgZXZlcnl0aGluZyBTVkcg
c28gbGV0J3MgYXZvaWQgc29tZSBkdXBsaWNhdGlvbiBhbmQgcnVuCisvLyBjb2RlIGluc3RlYWQu
CisvLyBUaGUgZm9sbG93aW5nIGFyZSBhbGwgc3BlY2lmaWVkIGluIHRoZSBIVE1MIGNvbmZpZyBh
bHJlYWR5IHNvIHdlIGV4Y2x1ZGUgaGVyZS4KKy8vIC0gY2xhc3MgKGFzIGNsYXNzTmFtZSkKKy8v
IC0gY29sb3IKKy8vIC0gaGVpZ2h0CisvLyAtIGlkCisvLyAtIGxhbmcKKy8vIC0gbWF4CisvLyAt
IG1lZGlhCisvLyAtIG1ldGhvZAorLy8gLSBtaW4KKy8vIC0gbmFtZQorLy8gLSBzdHlsZQorLy8g
LSB0YXJnZXQKKy8vIC0gdHlwZQorLy8gLSB3aWR0aAordmFyIEFUVFJTID0geworICBhY2NlbnRI
ZWlnaHQ6ICdhY2NlbnQtaGVpZ2h0JywKKyAgYWNjdW11bGF0ZTogMCwKKyAgYWRkaXRpdmU6IDAs
CisgIGFsaWdubWVudEJhc2VsaW5lOiAnYWxpZ25tZW50LWJhc2VsaW5lJywKKyAgYWxsb3dSZW9y
ZGVyOiAnYWxsb3dSZW9yZGVyJywKKyAgYWxwaGFiZXRpYzogMCwKKyAgYW1wbGl0dWRlOiAwLAor
ICBhcmFiaWNGb3JtOiAnYXJhYmljLWZvcm0nLAorICBhc2NlbnQ6IDAsCisgIGF0dHJpYnV0ZU5h
bWU6ICdhdHRyaWJ1dGVOYW1lJywKKyAgYXR0cmlidXRlVHlwZTogJ2F0dHJpYnV0ZVR5cGUnLAor
ICBhdXRvUmV2ZXJzZTogJ2F1dG9SZXZlcnNlJywKKyAgYXppbXV0aDogMCwKKyAgYmFzZUZyZXF1
ZW5jeTogJ2Jhc2VGcmVxdWVuY3knLAorICBiYXNlUHJvZmlsZTogJ2Jhc2VQcm9maWxlJywKKyAg
YmFzZWxpbmVTaGlmdDogJ2Jhc2VsaW5lLXNoaWZ0JywKKyAgYmJveDogMCwKKyAgYmVnaW46IDAs
CisgIGJpYXM6IDAsCisgIGJ5OiAwLAorICBjYWxjTW9kZTogJ2NhbGNNb2RlJywKKyAgY2FwSGVp
Z2h0OiAnY2FwLWhlaWdodCcsCisgIGNsaXA6IDAsCisgIGNsaXBQYXRoOiAnY2xpcC1wYXRoJywK
KyAgY2xpcFJ1bGU6ICdjbGlwLXJ1bGUnLAorICBjbGlwUGF0aFVuaXRzOiAnY2xpcFBhdGhVbml0
cycsCisgIGNvbG9ySW50ZXJwb2xhdGlvbjogJ2NvbG9yLWludGVycG9sYXRpb24nLAorICBjb2xv
ckludGVycG9sYXRpb25GaWx0ZXJzOiAnY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzJywKKyAg
Y29sb3JQcm9maWxlOiAnY29sb3ItcHJvZmlsZScsCisgIGNvbG9yUmVuZGVyaW5nOiAnY29sb3It
cmVuZGVyaW5nJywKKyAgY29udGVudFNjcmlwdFR5cGU6ICdjb250ZW50U2NyaXB0VHlwZScsCisg
IGNvbnRlbnRTdHlsZVR5cGU6ICdjb250ZW50U3R5bGVUeXBlJywKKyAgY3Vyc29yOiAwLAorICBj
eDogMCwKKyAgY3k6IDAsCisgIGQ6IDAsCisgIGRlY2VsZXJhdGU6IDAsCisgIGRlc2NlbnQ6IDAs
CisgIGRpZmZ1c2VDb25zdGFudDogJ2RpZmZ1c2VDb25zdGFudCcsCisgIGRpcmVjdGlvbjogMCwK
KyAgZGlzcGxheTogMCwKKyAgZGl2aXNvcjogMCwKKyAgZG9taW5hbnRCYXNlbGluZTogJ2RvbWlu
YW50LWJhc2VsaW5lJywKKyAgZHVyOiAwLAorICBkeDogMCwKKyAgZHk6IDAsCisgIGVkZ2VNb2Rl
OiAnZWRnZU1vZGUnLAorICBlbGV2YXRpb246IDAsCisgIGVuYWJsZUJhY2tncm91bmQ6ICdlbmFi
bGUtYmFja2dyb3VuZCcsCisgIGVuZDogMCwKKyAgZXhwb25lbnQ6IDAsCisgIGV4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQ6ICdleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkJywKKyAgZmlsbDogMCwK
KyAgZmlsbE9wYWNpdHk6ICdmaWxsLW9wYWNpdHknLAorICBmaWxsUnVsZTogJ2ZpbGwtcnVsZScs
CisgIGZpbHRlcjogMCwKKyAgZmlsdGVyUmVzOiAnZmlsdGVyUmVzJywKKyAgZmlsdGVyVW5pdHM6
ICdmaWx0ZXJVbml0cycsCisgIGZsb29kQ29sb3I6ICdmbG9vZC1jb2xvcicsCisgIGZsb29kT3Bh
Y2l0eTogJ2Zsb29kLW9wYWNpdHknLAorICBmb2N1c2FibGU6IDAsCisgIGZvbnRGYW1pbHk6ICdm
b250LWZhbWlseScsCisgIGZvbnRTaXplOiAnZm9udC1zaXplJywKKyAgZm9udFNpemVBZGp1c3Q6
ICdmb250LXNpemUtYWRqdXN0JywKKyAgZm9udFN0cmV0Y2g6ICdmb250LXN0cmV0Y2gnLAorICBm
b250U3R5bGU6ICdmb250LXN0eWxlJywKKyAgZm9udFZhcmlhbnQ6ICdmb250LXZhcmlhbnQnLAor
ICBmb250V2VpZ2h0OiAnZm9udC13ZWlnaHQnLAorICBmb3JtYXQ6IDAsCisgIGZyb206IDAsCisg
IGZ4OiAwLAorICBmeTogMCwKKyAgZzE6IDAsCisgIGcyOiAwLAorICBnbHlwaE5hbWU6ICdnbHlw
aC1uYW1lJywKKyAgZ2x5cGhPcmllbnRhdGlvbkhvcml6b250YWw6ICdnbHlwaC1vcmllbnRhdGlv
bi1ob3Jpem9udGFsJywKKyAgZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsOiAnZ2x5cGgtb3JpZW50
YXRpb24tdmVydGljYWwnLAorICBnbHlwaFJlZjogJ2dseXBoUmVmJywKKyAgZ3JhZGllbnRUcmFu
c2Zvcm06ICdncmFkaWVudFRyYW5zZm9ybScsCisgIGdyYWRpZW50VW5pdHM6ICdncmFkaWVudFVu
aXRzJywKKyAgaGFuZ2luZzogMCwKKyAgaG9yaXpBZHZYOiAnaG9yaXotYWR2LXgnLAorICBob3Jp
ek9yaWdpblg6ICdob3Jpei1vcmlnaW4teCcsCisgIGlkZW9ncmFwaGljOiAwLAorICBpbWFnZVJl
bmRlcmluZzogJ2ltYWdlLXJlbmRlcmluZycsCisgICdpbic6IDAsCisgIGluMjogMCwKKyAgaW50
ZXJjZXB0OiAwLAorICBrOiAwLAorICBrMTogMCwKKyAgazI6IDAsCisgIGszOiAwLAorICBrNDog
MCwKKyAga2VybmVsTWF0cml4OiAna2VybmVsTWF0cml4JywKKyAga2VybmVsVW5pdExlbmd0aDog
J2tlcm5lbFVuaXRMZW5ndGgnLAorICBrZXJuaW5nOiAwLAorICBrZXlQb2ludHM6ICdrZXlQb2lu
dHMnLAorICBrZXlTcGxpbmVzOiAna2V5U3BsaW5lcycsCisgIGtleVRpbWVzOiAna2V5VGltZXMn
LAorICBsZW5ndGhBZGp1c3Q6ICdsZW5ndGhBZGp1c3QnLAorICBsZXR0ZXJTcGFjaW5nOiAnbGV0
dGVyLXNwYWNpbmcnLAorICBsaWdodGluZ0NvbG9yOiAnbGlnaHRpbmctY29sb3InLAorICBsaW1p
dGluZ0NvbmVBbmdsZTogJ2xpbWl0aW5nQ29uZUFuZ2xlJywKKyAgbG9jYWw6IDAsCisgIG1hcmtl
ckVuZDogJ21hcmtlci1lbmQnLAorICBtYXJrZXJNaWQ6ICdtYXJrZXItbWlkJywKKyAgbWFya2Vy
U3RhcnQ6ICdtYXJrZXItc3RhcnQnLAorICBtYXJrZXJIZWlnaHQ6ICdtYXJrZXJIZWlnaHQnLAor
ICBtYXJrZXJVbml0czogJ21hcmtlclVuaXRzJywKKyAgbWFya2VyV2lkdGg6ICdtYXJrZXJXaWR0
aCcsCisgIG1hc2s6IDAsCisgIG1hc2tDb250ZW50VW5pdHM6ICdtYXNrQ29udGVudFVuaXRzJywK
KyAgbWFza1VuaXRzOiAnbWFza1VuaXRzJywKKyAgbWF0aGVtYXRpY2FsOiAwLAorICBtb2RlOiAw
LAorICBudW1PY3RhdmVzOiAnbnVtT2N0YXZlcycsCisgIG9mZnNldDogMCwKKyAgb3BhY2l0eTog
MCwKKyAgb3BlcmF0b3I6IDAsCisgIG9yZGVyOiAwLAorICBvcmllbnQ6IDAsCisgIG9yaWVudGF0
aW9uOiAwLAorICBvcmlnaW46IDAsCisgIG92ZXJmbG93OiAwLAorICBvdmVybGluZVBvc2l0aW9u
OiAnb3ZlcmxpbmUtcG9zaXRpb24nLAorICBvdmVybGluZVRoaWNrbmVzczogJ292ZXJsaW5lLXRo
aWNrbmVzcycsCisgIHBhaW50T3JkZXI6ICdwYWludC1vcmRlcicsCisgIHBhbm9zZTE6ICdwYW5v
c2UtMScsCisgIHBhdGhMZW5ndGg6ICdwYXRoTGVuZ3RoJywKKyAgcGF0dGVybkNvbnRlbnRVbml0
czogJ3BhdHRlcm5Db250ZW50VW5pdHMnLAorICBwYXR0ZXJuVHJhbnNmb3JtOiAncGF0dGVyblRy
YW5zZm9ybScsCisgIHBhdHRlcm5Vbml0czogJ3BhdHRlcm5Vbml0cycsCisgIHBvaW50ZXJFdmVu
dHM6ICdwb2ludGVyLWV2ZW50cycsCisgIHBvaW50czogMCwKKyAgcG9pbnRzQXRYOiAncG9pbnRz
QXRYJywKKyAgcG9pbnRzQXRZOiAncG9pbnRzQXRZJywKKyAgcG9pbnRzQXRaOiAncG9pbnRzQXRa
JywKKyAgcHJlc2VydmVBbHBoYTogJ3ByZXNlcnZlQWxwaGEnLAorICBwcmVzZXJ2ZUFzcGVjdFJh
dGlvOiAncHJlc2VydmVBc3BlY3RSYXRpbycsCisgIHByaW1pdGl2ZVVuaXRzOiAncHJpbWl0aXZl
VW5pdHMnLAorICByOiAwLAorICByYWRpdXM6IDAsCisgIHJlZlg6ICdyZWZYJywKKyAgcmVmWTog
J3JlZlknLAorICByZW5kZXJpbmdJbnRlbnQ6ICdyZW5kZXJpbmctaW50ZW50JywKKyAgcmVwZWF0
Q291bnQ6ICdyZXBlYXRDb3VudCcsCisgIHJlcGVhdER1cjogJ3JlcGVhdER1cicsCisgIHJlcXVp
cmVkRXh0ZW5zaW9uczogJ3JlcXVpcmVkRXh0ZW5zaW9ucycsCisgIHJlcXVpcmVkRmVhdHVyZXM6
ICdyZXF1aXJlZEZlYXR1cmVzJywKKyAgcmVzdGFydDogMCwKKyAgcmVzdWx0OiAwLAorICByb3Rh
dGU6IDAsCisgIHJ4OiAwLAorICByeTogMCwKKyAgc2NhbGU6IDAsCisgIHNlZWQ6IDAsCisgIHNo
YXBlUmVuZGVyaW5nOiAnc2hhcGUtcmVuZGVyaW5nJywKKyAgc2xvcGU6IDAsCisgIHNwYWNpbmc6
IDAsCisgIHNwZWN1bGFyQ29uc3RhbnQ6ICdzcGVjdWxhckNvbnN0YW50JywKKyAgc3BlY3VsYXJF
eHBvbmVudDogJ3NwZWN1bGFyRXhwb25lbnQnLAorICBzcGVlZDogMCwKKyAgc3ByZWFkTWV0aG9k
OiAnc3ByZWFkTWV0aG9kJywKKyAgc3RhcnRPZmZzZXQ6ICdzdGFydE9mZnNldCcsCisgIHN0ZERl
dmlhdGlvbjogJ3N0ZERldmlhdGlvbicsCisgIHN0ZW1oOiAwLAorICBzdGVtdjogMCwKKyAgc3Rp
dGNoVGlsZXM6ICdzdGl0Y2hUaWxlcycsCisgIHN0b3BDb2xvcjogJ3N0b3AtY29sb3InLAorICBz
dG9wT3BhY2l0eTogJ3N0b3Atb3BhY2l0eScsCisgIHN0cmlrZXRocm91Z2hQb3NpdGlvbjogJ3N0
cmlrZXRocm91Z2gtcG9zaXRpb24nLAorICBzdHJpa2V0aHJvdWdoVGhpY2tuZXNzOiAnc3RyaWtl
dGhyb3VnaC10aGlja25lc3MnLAorICBzdHJpbmc6IDAsCisgIHN0cm9rZTogMCwKKyAgc3Ryb2tl
RGFzaGFycmF5OiAnc3Ryb2tlLWRhc2hhcnJheScsCisgIHN0cm9rZURhc2hvZmZzZXQ6ICdzdHJv
a2UtZGFzaG9mZnNldCcsCisgIHN0cm9rZUxpbmVjYXA6ICdzdHJva2UtbGluZWNhcCcsCisgIHN0
cm9rZUxpbmVqb2luOiAnc3Ryb2tlLWxpbmVqb2luJywKKyAgc3Ryb2tlTWl0ZXJsaW1pdDogJ3N0
cm9rZS1taXRlcmxpbWl0JywKKyAgc3Ryb2tlT3BhY2l0eTogJ3N0cm9rZS1vcGFjaXR5JywKKyAg
c3Ryb2tlV2lkdGg6ICdzdHJva2Utd2lkdGgnLAorICBzdXJmYWNlU2NhbGU6ICdzdXJmYWNlU2Nh
bGUnLAorICBzeXN0ZW1MYW5ndWFnZTogJ3N5c3RlbUxhbmd1YWdlJywKKyAgdGFibGVWYWx1ZXM6
ICd0YWJsZVZhbHVlcycsCisgIHRhcmdldFg6ICd0YXJnZXRYJywKKyAgdGFyZ2V0WTogJ3Rhcmdl
dFknLAorICB0ZXh0QW5jaG9yOiAndGV4dC1hbmNob3InLAorICB0ZXh0RGVjb3JhdGlvbjogJ3Rl
eHQtZGVjb3JhdGlvbicsCisgIHRleHRSZW5kZXJpbmc6ICd0ZXh0LXJlbmRlcmluZycsCisgIHRl
eHRMZW5ndGg6ICd0ZXh0TGVuZ3RoJywKKyAgdG86IDAsCisgIHRyYW5zZm9ybTogMCwKKyAgdTE6
IDAsCisgIHUyOiAwLAorICB1bmRlcmxpbmVQb3NpdGlvbjogJ3VuZGVybGluZS1wb3NpdGlvbics
CisgIHVuZGVybGluZVRoaWNrbmVzczogJ3VuZGVybGluZS10aGlja25lc3MnLAorICB1bmljb2Rl
OiAwLAorICB1bmljb2RlQmlkaTogJ3VuaWNvZGUtYmlkaScsCisgIHVuaWNvZGVSYW5nZTogJ3Vu
aWNvZGUtcmFuZ2UnLAorICB1bml0c1BlckVtOiAndW5pdHMtcGVyLWVtJywKKyAgdkFscGhhYmV0
aWM6ICd2LWFscGhhYmV0aWMnLAorICB2SGFuZ2luZzogJ3YtaGFuZ2luZycsCisgIHZJZGVvZ3Jh
cGhpYzogJ3YtaWRlb2dyYXBoaWMnLAorICB2TWF0aGVtYXRpY2FsOiAndi1tYXRoZW1hdGljYWwn
LAorICB2YWx1ZXM6IDAsCisgIHZlY3RvckVmZmVjdDogJ3ZlY3Rvci1lZmZlY3QnLAorICB2ZXJz
aW9uOiAwLAorICB2ZXJ0QWR2WTogJ3ZlcnQtYWR2LXknLAorICB2ZXJ0T3JpZ2luWDogJ3ZlcnQt
b3JpZ2luLXgnLAorICB2ZXJ0T3JpZ2luWTogJ3ZlcnQtb3JpZ2luLXknLAorICB2aWV3Qm94OiAn
dmlld0JveCcsCisgIHZpZXdUYXJnZXQ6ICd2aWV3VGFyZ2V0JywKKyAgdmlzaWJpbGl0eTogMCwK
KyAgd2lkdGhzOiAwLAorICB3b3JkU3BhY2luZzogJ3dvcmQtc3BhY2luZycsCisgIHdyaXRpbmdN
b2RlOiAnd3JpdGluZy1tb2RlJywKKyAgeDogMCwKKyAgeEhlaWdodDogJ3gtaGVpZ2h0JywKKyAg
eDE6IDAsCisgIHgyOiAwLAorICB4Q2hhbm5lbFNlbGVjdG9yOiAneENoYW5uZWxTZWxlY3Rvcics
CisgIHhsaW5rQWN0dWF0ZTogJ3hsaW5rOmFjdHVhdGUnLAorICB4bGlua0FyY3JvbGU6ICd4bGlu
azphcmNyb2xlJywKKyAgeGxpbmtIcmVmOiAneGxpbms6aHJlZicsCisgIHhsaW5rUm9sZTogJ3hs
aW5rOnJvbGUnLAorICB4bGlua1Nob3c6ICd4bGluazpzaG93JywKKyAgeGxpbmtUaXRsZTogJ3hs
aW5rOnRpdGxlJywKKyAgeGxpbmtUeXBlOiAneGxpbms6dHlwZScsCisgIHhtbEJhc2U6ICd4bWw6
YmFzZScsCisgIHhtbG5zOiAwLAorICB4bWxuc1hsaW5rOiAneG1sbnM6eGxpbmsnLAorICB4bWxM
YW5nOiAneG1sOmxhbmcnLAorICB4bWxTcGFjZTogJ3htbDpzcGFjZScsCisgIHk6IDAsCisgIHkx
OiAwLAorICB5MjogMCwKKyAgeUNoYW5uZWxTZWxlY3RvcjogJ3lDaGFubmVsU2VsZWN0b3InLAor
ICB6OiAwLAorICB6b29tQW5kUGFuOiAnem9vbUFuZFBhbicKK307CisKK3ZhciBTVkdET01Qcm9w
ZXJ0eUNvbmZpZyA9IHsKKyAgUHJvcGVydGllczoge30sCisgIERPTUF0dHJpYnV0ZU5hbWVzcGFj
ZXM6IHsKKyAgICB4bGlua0FjdHVhdGU6IE5TLnhsaW5rLAorICAgIHhsaW5rQXJjcm9sZTogTlMu
eGxpbmssCisgICAgeGxpbmtIcmVmOiBOUy54bGluaywKKyAgICB4bGlua1JvbGU6IE5TLnhsaW5r
LAorICAgIHhsaW5rU2hvdzogTlMueGxpbmssCisgICAgeGxpbmtUaXRsZTogTlMueGxpbmssCisg
ICAgeGxpbmtUeXBlOiBOUy54bGluaywKKyAgICB4bWxCYXNlOiBOUy54bWwsCisgICAgeG1sTGFu
ZzogTlMueG1sLAorICAgIHhtbFNwYWNlOiBOUy54bWwKKyAgfSwKKyAgRE9NQXR0cmlidXRlTmFt
ZXM6IHt9Cit9OworCitPYmplY3Qua2V5cyhBVFRSUykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7
CisgIFNWR0RPTVByb3BlcnR5Q29uZmlnLlByb3BlcnRpZXNba2V5XSA9IDA7CisgIGlmIChBVFRS
U1trZXldKSB7CisgICAgU1ZHRE9NUHJvcGVydHlDb25maWcuRE9NQXR0cmlidXRlTmFtZXNba2V5
XSA9IEFUVFJTW2tleV07CisgIH0KK30pOworCittb2R1bGUuZXhwb3J0cyA9IFNWR0RPTVByb3Bl
cnR5Q29uZmlnOworfSx7fV0sNzg6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpewor
LyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy
IHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFu
dAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIEV2
ZW50UHJvcGFnYXRvcnMgPSBfZGVyZXFfKDE5KTsKK3ZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9
IF9kZXJlcV8oMTI2KTsKK3ZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSBfZGVyZXFfKDMyKTsK
K3ZhciBSZWFjdElucHV0U2VsZWN0aW9uID0gX2RlcmVxXyg1Nyk7Cit2YXIgU3ludGhldGljRXZl
bnQgPSBfZGVyZXFfKDg0KTsKKwordmFyIGdldEFjdGl2ZUVsZW1lbnQgPSBfZGVyZXFfKDEzNSk7
Cit2YXIgaXNUZXh0SW5wdXRFbGVtZW50ID0gX2RlcmVxXygxMTQpOwordmFyIHNoYWxsb3dFcXVh
bCA9IF9kZXJlcV8oMTQ2KTsKKwordmFyIHNraXBTZWxlY3Rpb25DaGFuZ2VFdmVudCA9IEV4ZWN1
dGlvbkVudmlyb25tZW50LmNhblVzZURPTSAmJiAnZG9jdW1lbnRNb2RlJyBpbiBkb2N1bWVudCAm
JiBkb2N1bWVudC5kb2N1bWVudE1vZGUgPD0gMTE7CisKK3ZhciBldmVudFR5cGVzID0geworICBz
ZWxlY3Q6IHsKKyAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczogeworICAgICAgYnViYmxlZDog
J29uU2VsZWN0JywKKyAgICAgIGNhcHR1cmVkOiAnb25TZWxlY3RDYXB0dXJlJworICAgIH0sCisg
ICAgZGVwZW5kZW5jaWVzOiBbJ3RvcEJsdXInLCAndG9wQ29udGV4dE1lbnUnLCAndG9wRm9jdXMn
LCAndG9wS2V5RG93bicsICd0b3BLZXlVcCcsICd0b3BNb3VzZURvd24nLCAndG9wTW91c2VVcCcs
ICd0b3BTZWxlY3Rpb25DaGFuZ2UnXQorICB9Cit9OworCit2YXIgYWN0aXZlRWxlbWVudCA9IG51
bGw7Cit2YXIgYWN0aXZlRWxlbWVudEluc3QgPSBudWxsOwordmFyIGxhc3RTZWxlY3Rpb24gPSBu
dWxsOwordmFyIG1vdXNlRG93biA9IGZhbHNlOworCisvLyBUcmFjayB3aGV0aGVyIGEgbGlzdGVu
ZXIgZXhpc3RzIGZvciB0aGlzIHBsdWdpbi4gSWYgbm9uZSBleGlzdCwgd2UgZG8KKy8vIG5vdCBl
eHRyYWN0IGV2ZW50cy4gU2VlICMzNjM5LgordmFyIGhhc0xpc3RlbmVyID0gZmFsc2U7CisKKy8q
KgorICogR2V0IGFuIG9iamVjdCB3aGljaCBpcyBhIHVuaXF1ZSByZXByZXNlbnRhdGlvbiBvZiB0
aGUgY3VycmVudCBzZWxlY3Rpb24uCisgKgorICogVGhlIHJldHVybiB2YWx1ZSB3aWxsIG5vdCBi
ZSBjb25zaXN0ZW50IGFjcm9zcyBub2RlcyBvciBicm93c2VycywgYnV0CisgKiB0d28gaWRlbnRp
Y2FsIHNlbGVjdGlvbnMgb24gdGhlIHNhbWUgbm9kZSB3aWxsIHJldHVybiBpZGVudGljYWwgb2Jq
ZWN0cy4KKyAqCisgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IG5vZGUKKyAqIEByZXR1cm4ge29iamVj
dH0KKyAqLworZnVuY3Rpb24gZ2V0U2VsZWN0aW9uKG5vZGUpIHsKKyAgaWYgKCdzZWxlY3Rpb25T
dGFydCcgaW4gbm9kZSAmJiBSZWFjdElucHV0U2VsZWN0aW9uLmhhc1NlbGVjdGlvbkNhcGFiaWxp
dGllcyhub2RlKSkgeworICAgIHJldHVybiB7CisgICAgICBzdGFydDogbm9kZS5zZWxlY3Rpb25T
dGFydCwKKyAgICAgIGVuZDogbm9kZS5zZWxlY3Rpb25FbmQKKyAgICB9OworICB9IGVsc2UgaWYg
KHdpbmRvdy5nZXRTZWxlY3Rpb24pIHsKKyAgICB2YXIgc2VsZWN0aW9uID0gd2luZG93LmdldFNl
bGVjdGlvbigpOworICAgIHJldHVybiB7CisgICAgICBhbmNob3JOb2RlOiBzZWxlY3Rpb24uYW5j
aG9yTm9kZSwKKyAgICAgIGFuY2hvck9mZnNldDogc2VsZWN0aW9uLmFuY2hvck9mZnNldCwKKyAg
ICAgIGZvY3VzTm9kZTogc2VsZWN0aW9uLmZvY3VzTm9kZSwKKyAgICAgIGZvY3VzT2Zmc2V0OiBz
ZWxlY3Rpb24uZm9jdXNPZmZzZXQKKyAgICB9OworICB9IGVsc2UgaWYgKGRvY3VtZW50LnNlbGVj
dGlvbikgeworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LnNlbGVjdGlvbi5jcmVhdGVSYW5nZSgp
OworICAgIHJldHVybiB7CisgICAgICBwYXJlbnRFbGVtZW50OiByYW5nZS5wYXJlbnRFbGVtZW50
KCksCisgICAgICB0ZXh0OiByYW5nZS50ZXh0LAorICAgICAgdG9wOiByYW5nZS5ib3VuZGluZ1Rv
cCwKKyAgICAgIGxlZnQ6IHJhbmdlLmJvdW5kaW5nTGVmdAorICAgIH07CisgIH0KK30KKworLyoq
CisgKiBQb2xsIHNlbGVjdGlvbiB0byBzZWUgd2hldGhlciBpdCdzIGNoYW5nZWQuCisgKgorICog
QHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50CisgKiBAcmV0dXJuIHs/U3ludGhldGljRXZlbnR9
CisgKi8KK2Z1bmN0aW9uIGNvbnN0cnVjdFNlbGVjdEV2ZW50KG5hdGl2ZUV2ZW50LCBuYXRpdmVF
dmVudFRhcmdldCkgeworICAvLyBFbnN1cmUgd2UgaGF2ZSB0aGUgcmlnaHQgZWxlbWVudCwgYW5k
IHRoYXQgdGhlIHVzZXIgaXMgbm90IGRyYWdnaW5nIGEKKyAgLy8gc2VsZWN0aW9uICh0aGlzIG1h
dGNoZXMgbmF0aXZlIGBzZWxlY3RgIGV2ZW50IGJlaGF2aW9yKS4gSW4gSFRNTDUsIHNlbGVjdAor
ICAvLyBmaXJlcyBvbmx5IG9uIGlucHV0IGFuZCB0ZXh0YXJlYSB0aHVzIGlmIHRoZXJlJ3Mgbm8g
Zm9jdXNlZCBlbGVtZW50IHdlCisgIC8vIHdvbid0IGRpc3BhdGNoLgorICBpZiAobW91c2VEb3du
IHx8IGFjdGl2ZUVsZW1lbnQgPT0gbnVsbCB8fCBhY3RpdmVFbGVtZW50ICE9PSBnZXRBY3RpdmVF
bGVtZW50KCkpIHsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorCisgIC8vIE9ubHkgZmlyZSB3aGVu
IHNlbGVjdGlvbiBoYXMgYWN0dWFsbHkgY2hhbmdlZC4KKyAgdmFyIGN1cnJlbnRTZWxlY3Rpb24g
PSBnZXRTZWxlY3Rpb24oYWN0aXZlRWxlbWVudCk7CisgIGlmICghbGFzdFNlbGVjdGlvbiB8fCAh
c2hhbGxvd0VxdWFsKGxhc3RTZWxlY3Rpb24sIGN1cnJlbnRTZWxlY3Rpb24pKSB7CisgICAgbGFz
dFNlbGVjdGlvbiA9IGN1cnJlbnRTZWxlY3Rpb247CisKKyAgICB2YXIgc3ludGhldGljRXZlbnQg
PSBTeW50aGV0aWNFdmVudC5nZXRQb29sZWQoZXZlbnRUeXBlcy5zZWxlY3QsIGFjdGl2ZUVsZW1l
bnRJbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpOworCisgICAgc3ludGhldGlj
RXZlbnQudHlwZSA9ICdzZWxlY3QnOworICAgIHN5bnRoZXRpY0V2ZW50LnRhcmdldCA9IGFjdGl2
ZUVsZW1lbnQ7CisKKyAgICBFdmVudFByb3BhZ2F0b3JzLmFjY3VtdWxhdGVUd29QaGFzZURpc3Bh
dGNoZXMoc3ludGhldGljRXZlbnQpOworCisgICAgcmV0dXJuIHN5bnRoZXRpY0V2ZW50OworICB9
CisKKyAgcmV0dXJuIG51bGw7Cit9CisKKy8qKgorICogVGhpcyBwbHVnaW4gY3JlYXRlcyBhbiBg
b25TZWxlY3RgIGV2ZW50IHRoYXQgbm9ybWFsaXplcyBzZWxlY3QgZXZlbnRzCisgKiBhY3Jvc3Mg
Zm9ybSBlbGVtZW50cy4KKyAqCisgKiBTdXBwb3J0ZWQgZWxlbWVudHMgYXJlOgorICogLSBpbnB1
dCAoc2VlIGBpc1RleHRJbnB1dEVsZW1lbnRgKQorICogLSB0ZXh0YXJlYQorICogLSBjb250ZW50
RWRpdGFibGUKKyAqCisgKiBUaGlzIGRpZmZlcnMgZnJvbSBuYXRpdmUgYnJvd3NlciBpbXBsZW1l
bnRhdGlvbnMgaW4gdGhlIGZvbGxvd2luZyB3YXlzOgorICogLSBGaXJlcyBvbiBjb250ZW50RWRp
dGFibGUgZmllbGRzIGFzIHdlbGwgYXMgaW5wdXRzLgorICogLSBGaXJlcyBmb3IgY29sbGFwc2Vk
IHNlbGVjdGlvbi4KKyAqIC0gRmlyZXMgYWZ0ZXIgdXNlciBpbnB1dC4KKyAqLwordmFyIFNlbGVj
dEV2ZW50UGx1Z2luID0geworCisgIGV2ZW50VHlwZXM6IGV2ZW50VHlwZXMsCisKKyAgZXh0cmFj
dEV2ZW50czogZnVuY3Rpb24gKHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQs
IG5hdGl2ZUV2ZW50VGFyZ2V0KSB7CisgICAgaWYgKCFoYXNMaXN0ZW5lcikgeworICAgICAgcmV0
dXJuIG51bGw7CisgICAgfQorCisgICAgdmFyIHRhcmdldE5vZGUgPSB0YXJnZXRJbnN0ID8gUmVh
Y3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UodGFyZ2V0SW5zdCkgOiB3aW5k
b3c7CisKKyAgICBzd2l0Y2ggKHRvcExldmVsVHlwZSkgeworICAgICAgLy8gVHJhY2sgdGhlIGlu
cHV0IG5vZGUgdGhhdCBoYXMgZm9jdXMuCisgICAgICBjYXNlICd0b3BGb2N1cyc6CisgICAgICAg
IGlmIChpc1RleHRJbnB1dEVsZW1lbnQodGFyZ2V0Tm9kZSkgfHwgdGFyZ2V0Tm9kZS5jb250ZW50
RWRpdGFibGUgPT09ICd0cnVlJykgeworICAgICAgICAgIGFjdGl2ZUVsZW1lbnQgPSB0YXJnZXRO
b2RlOworICAgICAgICAgIGFjdGl2ZUVsZW1lbnRJbnN0ID0gdGFyZ2V0SW5zdDsKKyAgICAgICAg
ICBsYXN0U2VsZWN0aW9uID0gbnVsbDsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICAg
IGNhc2UgJ3RvcEJsdXInOgorICAgICAgICBhY3RpdmVFbGVtZW50ID0gbnVsbDsKKyAgICAgICAg
YWN0aXZlRWxlbWVudEluc3QgPSBudWxsOworICAgICAgICBsYXN0U2VsZWN0aW9uID0gbnVsbDsK
KyAgICAgICAgYnJlYWs7CisKKyAgICAgIC8vIERvbid0IGZpcmUgdGhlIGV2ZW50IHdoaWxlIHRo
ZSB1c2VyIGlzIGRyYWdnaW5nLiBUaGlzIG1hdGNoZXMgdGhlCisgICAgICAvLyBzZW1hbnRpY3Mg
b2YgdGhlIG5hdGl2ZSBzZWxlY3QgZXZlbnQuCisgICAgICBjYXNlICd0b3BNb3VzZURvd24nOgor
ICAgICAgICBtb3VzZURvd24gPSB0cnVlOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJ3Rv
cENvbnRleHRNZW51JzoKKyAgICAgIGNhc2UgJ3RvcE1vdXNlVXAnOgorICAgICAgICBtb3VzZURv
d24gPSBmYWxzZTsKKyAgICAgICAgcmV0dXJuIGNvbnN0cnVjdFNlbGVjdEV2ZW50KG5hdGl2ZUV2
ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7CisKKyAgICAgIC8vIENocm9tZSBhbmQgSUUgZmlyZSBu
b24tc3RhbmRhcmQgZXZlbnQgd2hlbiBzZWxlY3Rpb24gaXMgY2hhbmdlZCAoYW5kCisgICAgICAv
LyBzb21ldGltZXMgd2hlbiBpdCBoYXNuJ3QpLiBJRSdzIGV2ZW50IGZpcmVzIG91dCBvZiBvcmRl
ciB3aXRoIHJlc3BlY3QKKyAgICAgIC8vIHRvIGtleSBhbmQgaW5wdXQgZXZlbnRzIG9uIGRlbGV0
aW9uLCBzbyB3ZSBkaXNjYXJkIGl0LgorICAgICAgLy8KKyAgICAgIC8vIEZpcmVmb3ggZG9lc24n
dCBzdXBwb3J0IHNlbGVjdGlvbmNoYW5nZSwgc28gY2hlY2sgc2VsZWN0aW9uIHN0YXR1cworICAg
ICAgLy8gYWZ0ZXIgZWFjaCBrZXkgZW50cnkuIFRoZSBzZWxlY3Rpb24gY2hhbmdlcyBhZnRlciBr
ZXlkb3duIGFuZCBiZWZvcmUKKyAgICAgIC8vIGtleXVwLCBidXQgd2UgY2hlY2sgb24ga2V5ZG93
biBhcyB3ZWxsIGluIHRoZSBjYXNlIG9mIGhvbGRpbmcgZG93biBhCisgICAgICAvLyBrZXksIHdo
ZW4gbXVsdGlwbGUga2V5ZG93biBldmVudHMgYXJlIGZpcmVkIGJ1dCBvbmx5IG9uZSBrZXl1cCBp
cy4KKyAgICAgIC8vIFRoaXMgaXMgYWxzbyBvdXIgYXBwcm9hY2ggZm9yIElFIGhhbmRsaW5nLCBm
b3IgdGhlIHJlYXNvbiBhYm92ZS4KKyAgICAgIGNhc2UgJ3RvcFNlbGVjdGlvbkNoYW5nZSc6Cisg
ICAgICAgIGlmIChza2lwU2VsZWN0aW9uQ2hhbmdlRXZlbnQpIHsKKyAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgICAgLy8gZmFsbHMgdGhyb3VnaAorICAgICAgY2FzZSAndG9wS2V5RG93
bic6CisgICAgICBjYXNlICd0b3BLZXlVcCc6CisgICAgICAgIHJldHVybiBjb25zdHJ1Y3RTZWxl
Y3RFdmVudChuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpOworICAgIH0KKworICAgIHJl
dHVybiBudWxsOworICB9LAorCisgIGRpZFB1dExpc3RlbmVyOiBmdW5jdGlvbiAoaW5zdCwgcmVn
aXN0cmF0aW9uTmFtZSwgbGlzdGVuZXIpIHsKKyAgICBpZiAocmVnaXN0cmF0aW9uTmFtZSA9PT0g
J29uU2VsZWN0JykgeworICAgICAgaGFzTGlzdGVuZXIgPSB0cnVlOworICAgIH0KKyAgfQorfTsK
KworbW9kdWxlLmV4cG9ydHMgPSBTZWxlY3RFdmVudFBsdWdpbjsKK30seyIxMTQiOjExNCwiMTI2
IjoxMjYsIjEzNSI6MTM1LCIxNDYiOjE0NiwiMTkiOjE5LCIzMiI6MzIsIjU3Ijo1NywiODQiOjg0
fV0sNzk6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmln
aHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUg
bGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rv
cnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50
IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJl
Y3RvcnkuCisgKgorICogCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJbnZhcmlh
bnQgPSBfZGVyZXFfKDExNik7CisKK3ZhciBFdmVudExpc3RlbmVyID0gX2RlcmVxXygxMjUpOwor
dmFyIEV2ZW50UHJvcGFnYXRvcnMgPSBfZGVyZXFfKDE5KTsKK3ZhciBSZWFjdERPTUNvbXBvbmVu
dFRyZWUgPSBfZGVyZXFfKDMyKTsKK3ZhciBTeW50aGV0aWNBbmltYXRpb25FdmVudCA9IF9kZXJl
cV8oODApOwordmFyIFN5bnRoZXRpY0NsaXBib2FyZEV2ZW50ID0gX2RlcmVxXyg4MSk7Cit2YXIg
U3ludGhldGljRXZlbnQgPSBfZGVyZXFfKDg0KTsKK3ZhciBTeW50aGV0aWNGb2N1c0V2ZW50ID0g
X2RlcmVxXyg4NSk7Cit2YXIgU3ludGhldGljS2V5Ym9hcmRFdmVudCA9IF9kZXJlcV8oODcpOwor
dmFyIFN5bnRoZXRpY01vdXNlRXZlbnQgPSBfZGVyZXFfKDg4KTsKK3ZhciBTeW50aGV0aWNEcmFn
RXZlbnQgPSBfZGVyZXFfKDgzKTsKK3ZhciBTeW50aGV0aWNUb3VjaEV2ZW50ID0gX2RlcmVxXyg4
OSk7Cit2YXIgU3ludGhldGljVHJhbnNpdGlvbkV2ZW50ID0gX2RlcmVxXyg5MCk7Cit2YXIgU3lu
dGhldGljVUlFdmVudCA9IF9kZXJlcV8oOTEpOwordmFyIFN5bnRoZXRpY1doZWVsRXZlbnQgPSBf
ZGVyZXFfKDkyKTsKKwordmFyIGVtcHR5RnVuY3Rpb24gPSBfZGVyZXFfKDEzMik7Cit2YXIgZ2V0
RXZlbnRDaGFyQ29kZSA9IF9kZXJlcV8oMTAzKTsKK3ZhciBpbnZhcmlhbnQgPSBfZGVyZXFfKDE0
MCk7CisKKy8qKgorICogVHVybnMKKyAqIFsnYWJvcnQnLCAuLi5dCisgKiBpbnRvCisgKiBldmVu
dFR5cGVzID0geworICogICAnYWJvcnQnOiB7CisgKiAgICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFt
ZXM6IHsKKyAqICAgICAgIGJ1YmJsZWQ6ICdvbkFib3J0JywKKyAqICAgICAgIGNhcHR1cmVkOiAn
b25BYm9ydENhcHR1cmUnLAorICogICAgIH0sCisgKiAgICAgZGVwZW5kZW5jaWVzOiBbJ3RvcEFi
b3J0J10sCisgKiAgIH0sCisgKiAgIC4uLgorICogfTsKKyAqIHRvcExldmVsRXZlbnRzVG9EaXNw
YXRjaENvbmZpZyA9IHsKKyAqICAgJ3RvcEFib3J0JzogeyBzYW1lQ29uZmlnIH0KKyAqIH07Cisg
Ki8KK3ZhciBldmVudFR5cGVzID0ge307Cit2YXIgdG9wTGV2ZWxFdmVudHNUb0Rpc3BhdGNoQ29u
ZmlnID0ge307CitbJ2Fib3J0JywgJ2FuaW1hdGlvbkVuZCcsICdhbmltYXRpb25JdGVyYXRpb24n
LCAnYW5pbWF0aW9uU3RhcnQnLCAnYmx1cicsICdjYW5QbGF5JywgJ2NhblBsYXlUaHJvdWdoJywg
J2NsaWNrJywgJ2NvbnRleHRNZW51JywgJ2NvcHknLCAnY3V0JywgJ2RvdWJsZUNsaWNrJywgJ2Ry
YWcnLCAnZHJhZ0VuZCcsICdkcmFnRW50ZXInLCAnZHJhZ0V4aXQnLCAnZHJhZ0xlYXZlJywgJ2Ry
YWdPdmVyJywgJ2RyYWdTdGFydCcsICdkcm9wJywgJ2R1cmF0aW9uQ2hhbmdlJywgJ2VtcHRpZWQn
LCAnZW5jcnlwdGVkJywgJ2VuZGVkJywgJ2Vycm9yJywgJ2ZvY3VzJywgJ2lucHV0JywgJ2ludmFs
aWQnLCAna2V5RG93bicsICdrZXlQcmVzcycsICdrZXlVcCcsICdsb2FkJywgJ2xvYWRlZERhdGEn
LCAnbG9hZGVkTWV0YWRhdGEnLCAnbG9hZFN0YXJ0JywgJ21vdXNlRG93bicsICdtb3VzZU1vdmUn
LCAnbW91c2VPdXQnLCAnbW91c2VPdmVyJywgJ21vdXNlVXAnLCAncGFzdGUnLCAncGF1c2UnLCAn
cGxheScsICdwbGF5aW5nJywgJ3Byb2dyZXNzJywgJ3JhdGVDaGFuZ2UnLCAncmVzZXQnLCAnc2Ny
b2xsJywgJ3NlZWtlZCcsICdzZWVraW5nJywgJ3N0YWxsZWQnLCAnc3VibWl0JywgJ3N1c3BlbmQn
LCAndGltZVVwZGF0ZScsICd0b3VjaENhbmNlbCcsICd0b3VjaEVuZCcsICd0b3VjaE1vdmUnLCAn
dG91Y2hTdGFydCcsICd0cmFuc2l0aW9uRW5kJywgJ3ZvbHVtZUNoYW5nZScsICd3YWl0aW5nJywg
J3doZWVsJ10uZm9yRWFjaChmdW5jdGlvbiAoZXZlbnQpIHsKKyAgdmFyIGNhcGl0YWxpemVkRXZl
bnQgPSBldmVudFswXS50b1VwcGVyQ2FzZSgpICsgZXZlbnQuc2xpY2UoMSk7CisgIHZhciBvbkV2
ZW50ID0gJ29uJyArIGNhcGl0YWxpemVkRXZlbnQ7CisgIHZhciB0b3BFdmVudCA9ICd0b3AnICsg
Y2FwaXRhbGl6ZWRFdmVudDsKKworICB2YXIgdHlwZSA9IHsKKyAgICBwaGFzZWRSZWdpc3RyYXRp
b25OYW1lczogeworICAgICAgYnViYmxlZDogb25FdmVudCwKKyAgICAgIGNhcHR1cmVkOiBvbkV2
ZW50ICsgJ0NhcHR1cmUnCisgICAgfSwKKyAgICBkZXBlbmRlbmNpZXM6IFt0b3BFdmVudF0KKyAg
fTsKKyAgZXZlbnRUeXBlc1tldmVudF0gPSB0eXBlOworICB0b3BMZXZlbEV2ZW50c1RvRGlzcGF0
Y2hDb25maWdbdG9wRXZlbnRdID0gdHlwZTsKK30pOworCit2YXIgb25DbGlja0xpc3RlbmVycyA9
IHt9OworCitmdW5jdGlvbiBnZXREaWN0aW9uYXJ5S2V5KGluc3QpIHsKKyAgLy8gUHJldmVudHMg
VjggcGVyZm9ybWFuY2UgaXNzdWU6CisgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9y
ZWFjdC9wdWxsLzcyMzIKKyAgcmV0dXJuICcuJyArIGluc3QuX3Jvb3ROb2RlSUQ7Cit9CisKK2Z1
bmN0aW9uIGlzSW50ZXJhY3RpdmUodGFnKSB7CisgIHJldHVybiB0YWcgPT09ICdidXR0b24nIHx8
IHRhZyA9PT0gJ2lucHV0JyB8fCB0YWcgPT09ICdzZWxlY3QnIHx8IHRhZyA9PT0gJ3RleHRhcmVh
JzsKK30KKworZnVuY3Rpb24gc2hvdWxkUHJldmVudE1vdXNlRXZlbnQoaW5zdCkgeworICBpZiAo
aW5zdCkgeworICAgIHZhciBkaXNhYmxlZCA9IGluc3QuX2N1cnJlbnRFbGVtZW50ICYmIGluc3Qu
X2N1cnJlbnRFbGVtZW50LnByb3BzLmRpc2FibGVkOworCisgICAgaWYgKGRpc2FibGVkKSB7Cisg
ICAgICByZXR1cm4gaXNJbnRlcmFjdGl2ZShpbnN0Ll90YWcpOworICAgIH0KKyAgfQorCisgIHJl
dHVybiBmYWxzZTsKK30KKwordmFyIFNpbXBsZUV2ZW50UGx1Z2luID0geworCisgIGV2ZW50VHlw
ZXM6IGV2ZW50VHlwZXMsCisKKyAgZXh0cmFjdEV2ZW50czogZnVuY3Rpb24gKHRvcExldmVsVHlw
ZSwgdGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7CisgICAgdmFy
IGRpc3BhdGNoQ29uZmlnID0gdG9wTGV2ZWxFdmVudHNUb0Rpc3BhdGNoQ29uZmlnW3RvcExldmVs
VHlwZV07CisgICAgaWYgKCFkaXNwYXRjaENvbmZpZykgeworICAgICAgcmV0dXJuIG51bGw7Cisg
ICAgfQorICAgIHZhciBFdmVudENvbnN0cnVjdG9yOworICAgIHN3aXRjaCAodG9wTGV2ZWxUeXBl
KSB7CisgICAgICBjYXNlICd0b3BBYm9ydCc6CisgICAgICBjYXNlICd0b3BDYW5QbGF5JzoKKyAg
ICAgIGNhc2UgJ3RvcENhblBsYXlUaHJvdWdoJzoKKyAgICAgIGNhc2UgJ3RvcER1cmF0aW9uQ2hh
bmdlJzoKKyAgICAgIGNhc2UgJ3RvcEVtcHRpZWQnOgorICAgICAgY2FzZSAndG9wRW5jcnlwdGVk
JzoKKyAgICAgIGNhc2UgJ3RvcEVuZGVkJzoKKyAgICAgIGNhc2UgJ3RvcEVycm9yJzoKKyAgICAg
IGNhc2UgJ3RvcElucHV0JzoKKyAgICAgIGNhc2UgJ3RvcEludmFsaWQnOgorICAgICAgY2FzZSAn
dG9wTG9hZCc6CisgICAgICBjYXNlICd0b3BMb2FkZWREYXRhJzoKKyAgICAgIGNhc2UgJ3RvcExv
YWRlZE1ldGFkYXRhJzoKKyAgICAgIGNhc2UgJ3RvcExvYWRTdGFydCc6CisgICAgICBjYXNlICd0
b3BQYXVzZSc6CisgICAgICBjYXNlICd0b3BQbGF5JzoKKyAgICAgIGNhc2UgJ3RvcFBsYXlpbmcn
OgorICAgICAgY2FzZSAndG9wUHJvZ3Jlc3MnOgorICAgICAgY2FzZSAndG9wUmF0ZUNoYW5nZSc6
CisgICAgICBjYXNlICd0b3BSZXNldCc6CisgICAgICBjYXNlICd0b3BTZWVrZWQnOgorICAgICAg
Y2FzZSAndG9wU2Vla2luZyc6CisgICAgICBjYXNlICd0b3BTdGFsbGVkJzoKKyAgICAgIGNhc2Ug
J3RvcFN1Ym1pdCc6CisgICAgICBjYXNlICd0b3BTdXNwZW5kJzoKKyAgICAgIGNhc2UgJ3RvcFRp
bWVVcGRhdGUnOgorICAgICAgY2FzZSAndG9wVm9sdW1lQ2hhbmdlJzoKKyAgICAgIGNhc2UgJ3Rv
cFdhaXRpbmcnOgorICAgICAgICAvLyBIVE1MIEV2ZW50cworICAgICAgICAvLyBAc2VlIGh0dHA6
Ly93d3cudzMub3JnL1RSL2h0bWw1L2luZGV4Lmh0bWwjZXZlbnRzLTAKKyAgICAgICAgRXZlbnRD
b25zdHJ1Y3RvciA9IFN5bnRoZXRpY0V2ZW50OworICAgICAgICBicmVhazsKKyAgICAgIGNhc2Ug
J3RvcEtleVByZXNzJzoKKyAgICAgICAgLy8gRmlyZWZveCBjcmVhdGVzIGEga2V5cHJlc3MgZXZl
bnQgZm9yIGZ1bmN0aW9uIGtleXMgdG9vLiBUaGlzIHJlbW92ZXMKKyAgICAgICAgLy8gdGhlIHVu
d2FudGVkIGtleXByZXNzIGV2ZW50cy4gRW50ZXIgaXMgaG93ZXZlciBib3RoIHByaW50YWJsZSBh
bmQKKyAgICAgICAgLy8gbm9uLXByaW50YWJsZS4gT25lIHdvdWxkIGV4cGVjdCBUYWIgdG8gYmUg
YXMgd2VsbCAoYnV0IGl0IGlzbid0KS4KKyAgICAgICAgaWYgKGdldEV2ZW50Q2hhckNvZGUobmF0
aXZlRXZlbnQpID09PSAwKSB7CisgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKyAg
ICAgIC8qIGZhbGxzIHRocm91Z2ggKi8KKyAgICAgIGNhc2UgJ3RvcEtleURvd24nOgorICAgICAg
Y2FzZSAndG9wS2V5VXAnOgorICAgICAgICBFdmVudENvbnN0cnVjdG9yID0gU3ludGhldGljS2V5
Ym9hcmRFdmVudDsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICd0b3BCbHVyJzoKKyAgICAg
IGNhc2UgJ3RvcEZvY3VzJzoKKyAgICAgICAgRXZlbnRDb25zdHJ1Y3RvciA9IFN5bnRoZXRpY0Zv
Y3VzRXZlbnQ7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAndG9wQ2xpY2snOgorICAgICAg
ICAvLyBGaXJlZm94IGNyZWF0ZXMgYSBjbGljayBldmVudCBvbiByaWdodCBtb3VzZSBjbGlja3Mu
IFRoaXMgcmVtb3ZlcyB0aGUKKyAgICAgICAgLy8gdW53YW50ZWQgY2xpY2sgZXZlbnRzLgorICAg
ICAgICBpZiAobmF0aXZlRXZlbnQuYnV0dG9uID09PSAyKSB7CisgICAgICAgICAgcmV0dXJuIG51
bGw7CisgICAgICAgIH0KKyAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi8KKyAgICAgIGNhc2UgJ3Rv
cERvdWJsZUNsaWNrJzoKKyAgICAgIGNhc2UgJ3RvcE1vdXNlRG93bic6CisgICAgICBjYXNlICd0
b3BNb3VzZU1vdmUnOgorICAgICAgY2FzZSAndG9wTW91c2VVcCc6CisgICAgICAgIC8vIERpc2Fi
bGVkIGVsZW1lbnRzIHNob3VsZCBub3QgcmVzcG9uZCB0byBtb3VzZSBldmVudHMKKyAgICAgICAg
aWYgKHNob3VsZFByZXZlbnRNb3VzZUV2ZW50KHRhcmdldEluc3QpKSB7CisgICAgICAgICAgcmV0
dXJuIG51bGw7CisgICAgICAgIH0KKyAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi8KKyAgICAgIGNh
c2UgJ3RvcE1vdXNlT3V0JzoKKyAgICAgIGNhc2UgJ3RvcE1vdXNlT3Zlcic6CisgICAgICBjYXNl
ICd0b3BDb250ZXh0TWVudSc6CisgICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0aWNN
b3VzZUV2ZW50OworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJ3RvcERyYWcnOgorICAgICAg
Y2FzZSAndG9wRHJhZ0VuZCc6CisgICAgICBjYXNlICd0b3BEcmFnRW50ZXInOgorICAgICAgY2Fz
ZSAndG9wRHJhZ0V4aXQnOgorICAgICAgY2FzZSAndG9wRHJhZ0xlYXZlJzoKKyAgICAgIGNhc2Ug
J3RvcERyYWdPdmVyJzoKKyAgICAgIGNhc2UgJ3RvcERyYWdTdGFydCc6CisgICAgICBjYXNlICd0
b3BEcm9wJzoKKyAgICAgICAgRXZlbnRDb25zdHJ1Y3RvciA9IFN5bnRoZXRpY0RyYWdFdmVudDsK
KyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICd0b3BUb3VjaENhbmNlbCc6CisgICAgICBjYXNl
ICd0b3BUb3VjaEVuZCc6CisgICAgICBjYXNlICd0b3BUb3VjaE1vdmUnOgorICAgICAgY2FzZSAn
dG9wVG91Y2hTdGFydCc6CisgICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0aWNUb3Vj
aEV2ZW50OworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJ3RvcEFuaW1hdGlvbkVuZCc6Cisg
ICAgICBjYXNlICd0b3BBbmltYXRpb25JdGVyYXRpb24nOgorICAgICAgY2FzZSAndG9wQW5pbWF0
aW9uU3RhcnQnOgorICAgICAgICBFdmVudENvbnN0cnVjdG9yID0gU3ludGhldGljQW5pbWF0aW9u
RXZlbnQ7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAndG9wVHJhbnNpdGlvbkVuZCc6Cisg
ICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0aWNUcmFuc2l0aW9uRXZlbnQ7CisgICAg
ICAgIGJyZWFrOworICAgICAgY2FzZSAndG9wU2Nyb2xsJzoKKyAgICAgICAgRXZlbnRDb25zdHJ1
Y3RvciA9IFN5bnRoZXRpY1VJRXZlbnQ7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAndG9w
V2hlZWwnOgorICAgICAgICBFdmVudENvbnN0cnVjdG9yID0gU3ludGhldGljV2hlZWxFdmVudDsK
KyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICd0b3BDb3B5JzoKKyAgICAgIGNhc2UgJ3RvcEN1
dCc6CisgICAgICBjYXNlICd0b3BQYXN0ZSc6CisgICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBT
eW50aGV0aWNDbGlwYm9hcmRFdmVudDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgICFFdmVu
dENvbnN0cnVjdG9yID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50
KGZhbHNlLCAnU2ltcGxlRXZlbnRQbHVnaW46IFVuaGFuZGxlZCBldmVudCB0eXBlLCBgJXNgLics
IHRvcExldmVsVHlwZSkgOiBfcHJvZEludmFyaWFudCgnODYnLCB0b3BMZXZlbFR5cGUpIDogdm9p
ZCAwOworICAgIHZhciBldmVudCA9IEV2ZW50Q29uc3RydWN0b3IuZ2V0UG9vbGVkKGRpc3BhdGNo
Q29uZmlnLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpOworICAg
IEV2ZW50UHJvcGFnYXRvcnMuYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyhldmVudCk7Cisg
ICAgcmV0dXJuIGV2ZW50OworICB9LAorCisgIGRpZFB1dExpc3RlbmVyOiBmdW5jdGlvbiAoaW5z
dCwgcmVnaXN0cmF0aW9uTmFtZSwgbGlzdGVuZXIpIHsKKyAgICAvLyBNb2JpbGUgU2FmYXJpIGRv
ZXMgbm90IGZpcmUgcHJvcGVybHkgYnViYmxlIGNsaWNrIGV2ZW50cyBvbgorICAgIC8vIG5vbi1p
bnRlcmFjdGl2ZSBlbGVtZW50cywgd2hpY2ggbWVhbnMgZGVsZWdhdGVkIGNsaWNrIGxpc3RlbmVy
cyBkbyBub3QKKyAgICAvLyBmaXJlLiBUaGUgd29ya2Fyb3VuZCBmb3IgdGhpcyBidWcgaW52b2x2
ZXMgYXR0YWNoaW5nIGFuIGVtcHR5IGNsaWNrCisgICAgLy8gbGlzdGVuZXIgb24gdGhlIHRhcmdl
dCBub2RlLgorICAgIC8vIGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvYmxvZy9hcmNoaXZlcy8y
MDEwLzA5L2NsaWNrX2V2ZW50X2RlbC5odG1sCisgICAgaWYgKHJlZ2lzdHJhdGlvbk5hbWUgPT09
ICdvbkNsaWNrJyAmJiAhaXNJbnRlcmFjdGl2ZShpbnN0Ll90YWcpKSB7CisgICAgICB2YXIga2V5
ID0gZ2V0RGljdGlvbmFyeUtleShpbnN0KTsKKyAgICAgIHZhciBub2RlID0gUmVhY3RET01Db21w
b25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCk7CisgICAgICBpZiAoIW9uQ2xpY2tM
aXN0ZW5lcnNba2V5XSkgeworICAgICAgICBvbkNsaWNrTGlzdGVuZXJzW2tleV0gPSBFdmVudExp
c3RlbmVyLmxpc3Rlbihub2RlLCAnY2xpY2snLCBlbXB0eUZ1bmN0aW9uKTsKKyAgICAgIH0KKyAg
ICB9CisgIH0sCisKKyAgd2lsbERlbGV0ZUxpc3RlbmVyOiBmdW5jdGlvbiAoaW5zdCwgcmVnaXN0
cmF0aW9uTmFtZSkgeworICAgIGlmIChyZWdpc3RyYXRpb25OYW1lID09PSAnb25DbGljaycgJiYg
IWlzSW50ZXJhY3RpdmUoaW5zdC5fdGFnKSkgeworICAgICAgdmFyIGtleSA9IGdldERpY3Rpb25h
cnlLZXkoaW5zdCk7CisgICAgICBvbkNsaWNrTGlzdGVuZXJzW2tleV0ucmVtb3ZlKCk7CisgICAg
ICBkZWxldGUgb25DbGlja0xpc3RlbmVyc1trZXldOworICAgIH0KKyAgfQorCit9OworCittb2R1
bGUuZXhwb3J0cyA9IFNpbXBsZUV2ZW50UGx1Z2luOworfSx7IjEwMyI6MTAzLCIxMTYiOjExNiwi
MTI1IjoxMjUsIjEzMiI6MTMyLCIxNDAiOjE0MCwiMTkiOjE5LCIzMiI6MzIsIjgwIjo4MCwiODEi
OjgxLCI4MyI6ODMsIjg0Ijo4NCwiODUiOjg1LCI4NyI6ODcsIjg4Ijo4OCwiODkiOjg5LCI5MCI6
OTAsIjkxIjo5MSwiOTIiOjkyfV0sODA6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMp
eworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBn
cmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmls
ZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFy
IFN5bnRoZXRpY0V2ZW50ID0gX2RlcmVxXyg4NCk7CisKKy8qKgorICogQGludGVyZmFjZSBFdmVu
dAorICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLWFuaW1hdGlvbnMvI0FuaW1hdGlv
bkV2ZW50LWludGVyZmFjZQorICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9l
bi1VUy9kb2NzL1dlYi9BUEkvQW5pbWF0aW9uRXZlbnQKKyAqLwordmFyIEFuaW1hdGlvbkV2ZW50
SW50ZXJmYWNlID0geworICBhbmltYXRpb25OYW1lOiBudWxsLAorICBlbGFwc2VkVGltZTogbnVs
bCwKKyAgcHNldWRvRWxlbWVudDogbnVsbAorfTsKKworLyoqCisgKiBAcGFyYW0ge29iamVjdH0g
ZGlzcGF0Y2hDb25maWcgQ29uZmlndXJhdGlvbiB1c2VkIHRvIGRpc3BhdGNoIHRoaXMgZXZlbnQu
CisgKiBAcGFyYW0ge3N0cmluZ30gZGlzcGF0Y2hNYXJrZXIgTWFya2VyIGlkZW50aWZ5aW5nIHRo
ZSBldmVudCB0YXJnZXQuCisgKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJy
b3dzZXIgZXZlbnQuCisgKiBAZXh0ZW5kcyB7U3ludGhldGljRXZlbnR9CisgKi8KK2Z1bmN0aW9u
IFN5bnRoZXRpY0FuaW1hdGlvbkV2ZW50KGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwg
bmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7CisgIHJldHVybiBTeW50aGV0aWNFdmVu
dC5jYWxsKHRoaXMsIGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQs
IG5hdGl2ZUV2ZW50VGFyZ2V0KTsKK30KKworU3ludGhldGljRXZlbnQuYXVnbWVudENsYXNzKFN5
bnRoZXRpY0FuaW1hdGlvbkV2ZW50LCBBbmltYXRpb25FdmVudEludGVyZmFjZSk7CisKK21vZHVs
ZS5leHBvcnRzID0gU3ludGhldGljQW5pbWF0aW9uRXZlbnQ7Cit9LHsiODQiOjg0fV0sODE6W2Z1
bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1w
cmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBU
aGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBm
b3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBj
YW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisg
KgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIFN5bnRoZXRpY0V2ZW50ID0gX2RlcmVxXyg4
NCk7CisKKy8qKgorICogQGludGVyZmFjZSBFdmVudAorICogQHNlZSBodHRwOi8vd3d3LnczLm9y
Zy9UUi9jbGlwYm9hcmQtYXBpcy8KKyAqLwordmFyIENsaXBib2FyZEV2ZW50SW50ZXJmYWNlID0g
eworICBjbGlwYm9hcmREYXRhOiBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICByZXR1cm4gJ2NsaXBi
b2FyZERhdGEnIGluIGV2ZW50ID8gZXZlbnQuY2xpcGJvYXJkRGF0YSA6IHdpbmRvdy5jbGlwYm9h
cmREYXRhOworICB9Cit9OworCisvKioKKyAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZp
ZyBDb25maWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVudC4KKyAqIEBwYXJhbSB7
c3RyaW5nfSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdl
dC4KKyAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC4K
KyAqIEBleHRlbmRzIHtTeW50aGV0aWNVSUV2ZW50fQorICovCitmdW5jdGlvbiBTeW50aGV0aWND
bGlwYm9hcmRFdmVudChkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50
LCBuYXRpdmVFdmVudFRhcmdldCkgeworICByZXR1cm4gU3ludGhldGljRXZlbnQuY2FsbCh0aGlz
LCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVu
dFRhcmdldCk7Cit9CisKK1N5bnRoZXRpY0V2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNDbGlw
Ym9hcmRFdmVudCwgQ2xpcGJvYXJkRXZlbnRJbnRlcmZhY2UpOworCittb2R1bGUuZXhwb3J0cyA9
IFN5bnRoZXRpY0NsaXBib2FyZEV2ZW50OworfSx7Ijg0Ijo4NH1dLDgyOltmdW5jdGlvbihfZGVy
ZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFj
ZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2Ug
Y29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhl
CisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisn
dXNlIHN0cmljdCc7CisKK3ZhciBTeW50aGV0aWNFdmVudCA9IF9kZXJlcV8oODQpOworCisvKioK
KyAqIEBpbnRlcmZhY2UgRXZlbnQKKyAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvRE9NLUxl
dmVsLTMtRXZlbnRzLyNldmVudHMtY29tcG9zaXRpb25ldmVudHMKKyAqLwordmFyIENvbXBvc2l0
aW9uRXZlbnRJbnRlcmZhY2UgPSB7CisgIGRhdGE6IG51bGwKK307CisKKy8qKgorICogQHBhcmFt
IHtvYmplY3R9IGRpc3BhdGNoQ29uZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRjaCB0
aGlzIGV2ZW50LgorICogQHBhcmFtIHtzdHJpbmd9IGRpc3BhdGNoTWFya2VyIE1hcmtlciBpZGVu
dGlmeWluZyB0aGUgZXZlbnQgdGFyZ2V0LgorICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50
IE5hdGl2ZSBicm93c2VyIGV2ZW50LgorICogQGV4dGVuZHMge1N5bnRoZXRpY1VJRXZlbnR9Cisg
Ki8KK2Z1bmN0aW9uIFN5bnRoZXRpY0NvbXBvc2l0aW9uRXZlbnQoZGlzcGF0Y2hDb25maWcsIGRp
c3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHsKKyAgcmV0dXJu
IFN5bnRoZXRpY0V2ZW50LmNhbGwodGhpcywgZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2Vy
LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpOworfQorCitTeW50aGV0aWNFdmVudC5h
dWdtZW50Q2xhc3MoU3ludGhldGljQ29tcG9zaXRpb25FdmVudCwgQ29tcG9zaXRpb25FdmVudElu
dGVyZmFjZSk7CisKK21vZHVsZS5leHBvcnRzID0gU3ludGhldGljQ29tcG9zaXRpb25FdmVudDsK
K30seyI4NCI6ODR9XSw4MzpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioK
KyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl
IEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50Cisg
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgU3ludGhl
dGljTW91c2VFdmVudCA9IF9kZXJlcV8oODgpOworCisvKioKKyAqIEBpbnRlcmZhY2UgRHJhZ0V2
ZW50CisgKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy8KKyAq
LwordmFyIERyYWdFdmVudEludGVyZmFjZSA9IHsKKyAgZGF0YVRyYW5zZmVyOiBudWxsCit9Owor
CisvKioKKyAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBDb25maWd1cmF0aW9uIHVz
ZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVudC4KKyAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwYXRjaE1h
cmtlciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC4KKyAqIEBwYXJhbSB7b2Jq
ZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC4KKyAqIEBleHRlbmRzIHtTeW50
aGV0aWNVSUV2ZW50fQorICovCitmdW5jdGlvbiBTeW50aGV0aWNEcmFnRXZlbnQoZGlzcGF0Y2hD
b25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHsK
KyAgcmV0dXJuIFN5bnRoZXRpY01vdXNlRXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywg
ZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7Cit9CisKK1N5
bnRoZXRpY01vdXNlRXZlbnQuYXVnbWVudENsYXNzKFN5bnRoZXRpY0RyYWdFdmVudCwgRHJhZ0V2
ZW50SW50ZXJmYWNlKTsKKworbW9kdWxlLmV4cG9ydHMgPSBTeW50aGV0aWNEcmFnRXZlbnQ7Cit9
LHsiODgiOjg4fV0sODQ6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisg
KiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBC
U0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICog
b2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUg
c2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9hc3NpZ24g
PSBfZGVyZXFfKDE0OCk7CisKK3ZhciBQb29sZWRDbGFzcyA9IF9kZXJlcV8oMjQpOworCit2YXIg
ZW1wdHlGdW5jdGlvbiA9IF9kZXJlcV8oMTMyKTsKK3ZhciB3YXJuaW5nID0gX2RlcmVxXygxNDcp
OworCit2YXIgZGlkV2FybkZvckFkZGVkTmV3UHJvcGVydHkgPSBmYWxzZTsKK3ZhciBpc1Byb3h5
U3VwcG9ydGVkID0gdHlwZW9mIFByb3h5ID09PSAnZnVuY3Rpb24nOworCit2YXIgc2hvdWxkQmVS
ZWxlYXNlZFByb3BlcnRpZXMgPSBbJ2Rpc3BhdGNoQ29uZmlnJywgJ190YXJnZXRJbnN0JywgJ25h
dGl2ZUV2ZW50JywgJ2lzRGVmYXVsdFByZXZlbnRlZCcsICdpc1Byb3BhZ2F0aW9uU3RvcHBlZCcs
ICdfZGlzcGF0Y2hMaXN0ZW5lcnMnLCAnX2Rpc3BhdGNoSW5zdGFuY2VzJ107CisKKy8qKgorICog
QGludGVyZmFjZSBFdmVudAorICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2ZWwt
My1FdmVudHMvCisgKi8KK3ZhciBFdmVudEludGVyZmFjZSA9IHsKKyAgdHlwZTogbnVsbCwKKyAg
dGFyZ2V0OiBudWxsLAorICAvLyBjdXJyZW50VGFyZ2V0IGlzIHNldCB3aGVuIGRpc3BhdGNoaW5n
OyBubyB1c2UgaW4gY29weWluZyBpdCBoZXJlCisgIGN1cnJlbnRUYXJnZXQ6IGVtcHR5RnVuY3Rp
b24udGhhdFJldHVybnNOdWxsLAorICBldmVudFBoYXNlOiBudWxsLAorICBidWJibGVzOiBudWxs
LAorICBjYW5jZWxhYmxlOiBudWxsLAorICB0aW1lU3RhbXA6IGZ1bmN0aW9uIChldmVudCkgewor
ICAgIHJldHVybiBldmVudC50aW1lU3RhbXAgfHwgRGF0ZS5ub3coKTsKKyAgfSwKKyAgZGVmYXVs
dFByZXZlbnRlZDogbnVsbCwKKyAgaXNUcnVzdGVkOiBudWxsCit9OworCisvKioKKyAqIFN5bnRo
ZXRpYyBldmVudHMgYXJlIGRpc3BhdGNoZWQgYnkgZXZlbnQgcGx1Z2lucywgdHlwaWNhbGx5IGlu
IHJlc3BvbnNlIHRvIGEKKyAqIHRvcC1sZXZlbCBldmVudCBkZWxlZ2F0aW9uIGhhbmRsZXIuCisg
KgorICogVGhlc2Ugc3lzdGVtcyBzaG91bGQgZ2VuZXJhbGx5IHVzZSBwb29saW5nIHRvIHJlZHVj
ZSB0aGUgZnJlcXVlbmN5IG9mIGdhcmJhZ2UKKyAqIGNvbGxlY3Rpb24uIFRoZSBzeXN0ZW0gc2hv
dWxkIGNoZWNrIGBpc1BlcnNpc3RlbnRgIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZQorICogZXZl
bnQgc2hvdWxkIGJlIHJlbGVhc2VkIGludG8gdGhlIHBvb2wgYWZ0ZXIgYmVpbmcgZGlzcGF0Y2hl
ZC4gVXNlcnMgdGhhdAorICogbmVlZCBhIHBlcnNpc3RlZCBldmVudCBzaG91bGQgaW52b2tlIGBw
ZXJzaXN0YC4KKyAqCisgKiBTeW50aGV0aWMgZXZlbnRzIChhbmQgc3ViY2xhc3NlcykgaW1wbGVt
ZW50IHRoZSBET00gTGV2ZWwgMyBFdmVudHMgQVBJIGJ5CisgKiBub3JtYWxpemluZyBicm93c2Vy
IHF1aXJrcy4gU3ViY2xhc3NlcyBkbyBub3QgbmVjZXNzYXJpbHkgaGF2ZSB0byBpbXBsZW1lbnQg
YQorICogRE9NIGludGVyZmFjZTsgY3VzdG9tIGFwcGxpY2F0aW9uLXNwZWNpZmljIGV2ZW50cyBj
YW4gYWxzbyBzdWJjbGFzcyB0aGlzLgorICoKKyAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENv
bmZpZyBDb25maWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVudC4KKyAqIEBwYXJh
bSB7Kn0gdGFyZ2V0SW5zdCBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC4KKyAq
IEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC4KKyAqIEBw
YXJhbSB7RE9NRXZlbnRUYXJnZXR9IG5hdGl2ZUV2ZW50VGFyZ2V0IFRhcmdldCBub2RlLgorICov
CitmdW5jdGlvbiBTeW50aGV0aWNFdmVudChkaXNwYXRjaENvbmZpZywgdGFyZ2V0SW5zdCwgbmF0
aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7CisgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAn
cHJvZHVjdGlvbicpIHsKKyAgICAvLyB0aGVzZSBoYXZlIGEgZ2V0dGVyL3NldHRlciBmb3Igd2Fy
bmluZ3MKKyAgICBkZWxldGUgdGhpcy5uYXRpdmVFdmVudDsKKyAgICBkZWxldGUgdGhpcy5wcmV2
ZW50RGVmYXVsdDsKKyAgICBkZWxldGUgdGhpcy5zdG9wUHJvcGFnYXRpb247CisgIH0KKworICB0
aGlzLmRpc3BhdGNoQ29uZmlnID0gZGlzcGF0Y2hDb25maWc7CisgIHRoaXMuX3RhcmdldEluc3Qg
PSB0YXJnZXRJbnN0OworICB0aGlzLm5hdGl2ZUV2ZW50ID0gbmF0aXZlRXZlbnQ7CisKKyAgdmFy
IEludGVyZmFjZSA9IHRoaXMuY29uc3RydWN0b3IuSW50ZXJmYWNlOworICBmb3IgKHZhciBwcm9w
TmFtZSBpbiBJbnRlcmZhY2UpIHsKKyAgICBpZiAoIUludGVyZmFjZS5oYXNPd25Qcm9wZXJ0eShw
cm9wTmFtZSkpIHsKKyAgICAgIGNvbnRpbnVlOworICAgIH0KKyAgICBpZiAoImRldmVsb3BtZW50
IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICBkZWxldGUgdGhpc1twcm9wTmFtZV07IC8vIHRo
aXMgaGFzIGEgZ2V0dGVyL3NldHRlciBmb3Igd2FybmluZ3MKKyAgICB9CisgICAgdmFyIG5vcm1h
bGl6ZSA9IEludGVyZmFjZVtwcm9wTmFtZV07CisgICAgaWYgKG5vcm1hbGl6ZSkgeworICAgICAg
dGhpc1twcm9wTmFtZV0gPSBub3JtYWxpemUobmF0aXZlRXZlbnQpOworICAgIH0gZWxzZSB7Cisg
ICAgICBpZiAocHJvcE5hbWUgPT09ICd0YXJnZXQnKSB7CisgICAgICAgIHRoaXMudGFyZ2V0ID0g
bmF0aXZlRXZlbnRUYXJnZXQ7CisgICAgICB9IGVsc2UgeworICAgICAgICB0aGlzW3Byb3BOYW1l
XSA9IG5hdGl2ZUV2ZW50W3Byb3BOYW1lXTsKKyAgICAgIH0KKyAgICB9CisgIH0KKworICB2YXIg
ZGVmYXVsdFByZXZlbnRlZCA9IG5hdGl2ZUV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQgIT0gbnVsbCA/
IG5hdGl2ZUV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQgOiBuYXRpdmVFdmVudC5yZXR1cm5WYWx1ZSA9
PT0gZmFsc2U7CisgIGlmIChkZWZhdWx0UHJldmVudGVkKSB7CisgICAgdGhpcy5pc0RlZmF1bHRQ
cmV2ZW50ZWQgPSBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zVHJ1ZTsKKyAgfSBlbHNlIHsKKyAg
ICB0aGlzLmlzRGVmYXVsdFByZXZlbnRlZCA9IGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNGYWxz
ZTsKKyAgfQorICB0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkID0gZW1wdHlGdW5jdGlvbi50aGF0
UmV0dXJuc0ZhbHNlOworICByZXR1cm4gdGhpczsKK30KKworX2Fzc2lnbihTeW50aGV0aWNFdmVu
dC5wcm90b3R5cGUsIHsKKworICBwcmV2ZW50RGVmYXVsdDogZnVuY3Rpb24gKCkgeworICAgIHRo
aXMuZGVmYXVsdFByZXZlbnRlZCA9IHRydWU7CisgICAgdmFyIGV2ZW50ID0gdGhpcy5uYXRpdmVF
dmVudDsKKyAgICBpZiAoIWV2ZW50KSB7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYg
KGV2ZW50LnByZXZlbnREZWZhdWx0KSB7CisgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwor
ICAgIH0gZWxzZSBpZiAodHlwZW9mIGV2ZW50LnJldHVyblZhbHVlICE9PSAndW5rbm93bicpIHsK
KyAgICAgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgdmFsaWQtdHlwZW9mCisgICAgICBldmVudC5y
ZXR1cm5WYWx1ZSA9IGZhbHNlOworICAgIH0KKyAgICB0aGlzLmlzRGVmYXVsdFByZXZlbnRlZCA9
IGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNUcnVlOworICB9LAorCisgIHN0b3BQcm9wYWdhdGlv
bjogZnVuY3Rpb24gKCkgeworICAgIHZhciBldmVudCA9IHRoaXMubmF0aXZlRXZlbnQ7CisgICAg
aWYgKCFldmVudCkgeworICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChldmVudC5zdG9w
UHJvcGFnYXRpb24pIHsKKyAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOworICAgIH0gZWxz
ZSBpZiAodHlwZW9mIGV2ZW50LmNhbmNlbEJ1YmJsZSAhPT0gJ3Vua25vd24nKSB7CisgICAgICAv
LyBlc2xpbnQtZGlzYWJsZS1saW5lIHZhbGlkLXR5cGVvZgorICAgICAgLy8gVGhlIENoYW5nZUV2
ZW50UGx1Z2luIHJlZ2lzdGVycyBhICJwcm9wZXJ0eWNoYW5nZSIgZXZlbnQgZm9yCisgICAgICAv
LyBJRS4gVGhpcyBldmVudCBkb2VzIG5vdCBzdXBwb3J0IGJ1YmJsaW5nIG9yIGNhbmNlbGxpbmcs
IGFuZAorICAgICAgLy8gYW55IHJlZmVyZW5jZXMgdG8gY2FuY2VsQnViYmxlIHRocm93ICJNZW1i
ZXIgbm90IGZvdW5kIi4gIEEKKyAgICAgIC8vIHR5cGVvZiBjaGVjayBvZiAidW5rbm93biIgY2ly
Y3VtdmVudHMgdGhpcyBpc3N1ZSAoYW5kIGlzIGFsc28KKyAgICAgIC8vIElFIHNwZWNpZmljKS4K
KyAgICAgIGV2ZW50LmNhbmNlbEJ1YmJsZSA9IHRydWU7CisgICAgfQorCisgICAgdGhpcy5pc1By
b3BhZ2F0aW9uU3RvcHBlZCA9IGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNUcnVlOworICB9LAor
CisgIC8qKgorICAgKiBXZSByZWxlYXNlIGFsbCBkaXNwYXRjaGVkIGBTeW50aGV0aWNFdmVudGBz
IGFmdGVyIGVhY2ggZXZlbnQgbG9vcCwgYWRkaW5nCisgICAqIHRoZW0gYmFjayBpbnRvIHRoZSBw
b29sLiBUaGlzIGFsbG93cyBhIHdheSB0byBob2xkIG9udG8gYSByZWZlcmVuY2UgdGhhdAorICAg
KiB3b24ndCBiZSBhZGRlZCBiYWNrIGludG8gdGhlIHBvb2wuCisgICAqLworICBwZXJzaXN0OiBm
dW5jdGlvbiAoKSB7CisgICAgdGhpcy5pc1BlcnNpc3RlbnQgPSBlbXB0eUZ1bmN0aW9uLnRoYXRS
ZXR1cm5zVHJ1ZTsKKyAgfSwKKworICAvKioKKyAgICogQ2hlY2tzIGlmIHRoaXMgZXZlbnQgc2hv
dWxkIGJlIHJlbGVhc2VkIGJhY2sgaW50byB0aGUgcG9vbC4KKyAgICoKKyAgICogQHJldHVybiB7
Ym9vbGVhbn0gVHJ1ZSBpZiB0aGlzIHNob3VsZCBub3QgYmUgcmVsZWFzZWQsIGZhbHNlIG90aGVy
d2lzZS4KKyAgICovCisgIGlzUGVyc2lzdGVudDogZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc0Zh
bHNlLAorCisgIC8qKgorICAgKiBgUG9vbGVkQ2xhc3NgIGxvb2tzIGZvciBgZGVzdHJ1Y3RvcmAg
b24gZWFjaCBpbnN0YW5jZSBpdCByZWxlYXNlcy4KKyAgICovCisgIGRlc3RydWN0b3I6IGZ1bmN0
aW9uICgpIHsKKyAgICB2YXIgSW50ZXJmYWNlID0gdGhpcy5jb25zdHJ1Y3Rvci5JbnRlcmZhY2U7
CisgICAgZm9yICh2YXIgcHJvcE5hbWUgaW4gSW50ZXJmYWNlKSB7CisgICAgICBpZiAoImRldmVs
b3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0
eSh0aGlzLCBwcm9wTmFtZSwgZ2V0UG9vbGVkV2FybmluZ1Byb3BlcnR5RGVmaW5pdGlvbihwcm9w
TmFtZSwgSW50ZXJmYWNlW3Byb3BOYW1lXSkpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgdGhp
c1twcm9wTmFtZV0gPSBudWxsOworICAgICAgfQorICAgIH0KKyAgICBmb3IgKHZhciBpID0gMDsg
aSA8IHNob3VsZEJlUmVsZWFzZWRQcm9wZXJ0aWVzLmxlbmd0aDsgaSsrKSB7CisgICAgICB0aGlz
W3Nob3VsZEJlUmVsZWFzZWRQcm9wZXJ0aWVzW2ldXSA9IG51bGw7CisgICAgfQorICAgIGlmICgi
ZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgIE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eSh0aGlzLCAnbmF0aXZlRXZlbnQnLCBnZXRQb29sZWRXYXJuaW5nUHJvcGVydHlEZWZpbml0
aW9uKCduYXRpdmVFdmVudCcsIG51bGwpKTsKKyAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0
aGlzLCAncHJldmVudERlZmF1bHQnLCBnZXRQb29sZWRXYXJuaW5nUHJvcGVydHlEZWZpbml0aW9u
KCdwcmV2ZW50RGVmYXVsdCcsIGVtcHR5RnVuY3Rpb24pKTsKKyAgICAgIE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eSh0aGlzLCAnc3RvcFByb3BhZ2F0aW9uJywgZ2V0UG9vbGVkV2FybmluZ1Byb3BlcnR5
RGVmaW5pdGlvbignc3RvcFByb3BhZ2F0aW9uJywgZW1wdHlGdW5jdGlvbikpOworICAgIH0KKyAg
fQorCit9KTsKKworU3ludGhldGljRXZlbnQuSW50ZXJmYWNlID0gRXZlbnRJbnRlcmZhY2U7CisK
K2lmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgaWYgKGlzUHJveHlTdXBw
b3J0ZWQpIHsKKyAgICAvKmVzbGludC1kaXNhYmxlIG5vLWZ1bmMtYXNzaWduICovCisgICAgU3lu
dGhldGljRXZlbnQgPSBuZXcgUHJveHkoU3ludGhldGljRXZlbnQsIHsKKyAgICAgIGNvbnN0cnVj
dDogZnVuY3Rpb24gKHRhcmdldCwgYXJncykgeworICAgICAgICByZXR1cm4gdGhpcy5hcHBseSh0
YXJnZXQsIE9iamVjdC5jcmVhdGUodGFyZ2V0LnByb3RvdHlwZSksIGFyZ3MpOworICAgICAgfSwK
KyAgICAgIGFwcGx5OiBmdW5jdGlvbiAoY29uc3RydWN0b3IsIHRoYXQsIGFyZ3MpIHsKKyAgICAg
ICAgcmV0dXJuIG5ldyBQcm94eShjb25zdHJ1Y3Rvci5hcHBseSh0aGF0LCBhcmdzKSwgeworICAg
ICAgICAgIHNldDogZnVuY3Rpb24gKHRhcmdldCwgcHJvcCwgdmFsdWUpIHsKKyAgICAgICAgICAg
IGlmIChwcm9wICE9PSAnaXNQZXJzaXN0ZW50JyAmJiAhdGFyZ2V0LmNvbnN0cnVjdG9yLkludGVy
ZmFjZS5oYXNPd25Qcm9wZXJ0eShwcm9wKSAmJiBzaG91bGRCZVJlbGVhc2VkUHJvcGVydGllcy5p
bmRleE9mKHByb3ApID09PSAtMSkgeworICAgICAgICAgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAn
cHJvZHVjdGlvbicgPyB3YXJuaW5nKGRpZFdhcm5Gb3JBZGRlZE5ld1Byb3BlcnR5IHx8IHRhcmdl
dC5pc1BlcnNpc3RlbnQoKSwgJ1RoaXMgc3ludGhldGljIGV2ZW50IGlzIHJldXNlZCBmb3IgcGVy
Zm9ybWFuY2UgcmVhc29ucy4gSWYgeW91XCdyZSAnICsgJ3NlZWluZyB0aGlzLCB5b3VcJ3JlIGFk
ZGluZyBhIG5ldyBwcm9wZXJ0eSBpbiB0aGUgc3ludGhldGljIGV2ZW50IG9iamVjdC4gJyArICdU
aGUgcHJvcGVydHkgaXMgbmV2ZXIgcmVsZWFzZWQuIFNlZSAnICsgJ2h0dHBzOi8vZmIubWUvcmVh
Y3QtZXZlbnQtcG9vbGluZyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4nKSA6IHZvaWQgMDsKKyAgICAg
ICAgICAgICAgZGlkV2FybkZvckFkZGVkTmV3UHJvcGVydHkgPSB0cnVlOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgdGFyZ2V0W3Byb3BdID0gdmFsdWU7CisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgICB9CisgICAgICAgIH0pOworICAgICAgfQorICAgIH0pOworICAgIC8q
ZXNsaW50LWVuYWJsZSBuby1mdW5jLWFzc2lnbiAqLworICB9Cit9CisvKioKKyAqIEhlbHBlciB0
byByZWR1Y2UgYm9pbGVycGxhdGUgd2hlbiBjcmVhdGluZyBzdWJjbGFzc2VzLgorICoKKyAqIEBw
YXJhbSB7ZnVuY3Rpb259IENsYXNzCisgKiBAcGFyYW0gez9vYmplY3R9IEludGVyZmFjZQorICov
CitTeW50aGV0aWNFdmVudC5hdWdtZW50Q2xhc3MgPSBmdW5jdGlvbiAoQ2xhc3MsIEludGVyZmFj
ZSkgeworICB2YXIgU3VwZXIgPSB0aGlzOworCisgIHZhciBFID0gZnVuY3Rpb24gKCkge307Cisg
IEUucHJvdG90eXBlID0gU3VwZXIucHJvdG90eXBlOworICB2YXIgcHJvdG90eXBlID0gbmV3IEUo
KTsKKworICBfYXNzaWduKHByb3RvdHlwZSwgQ2xhc3MucHJvdG90eXBlKTsKKyAgQ2xhc3MucHJv
dG90eXBlID0gcHJvdG90eXBlOworICBDbGFzcy5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBDbGFz
czsKKworICBDbGFzcy5JbnRlcmZhY2UgPSBfYXNzaWduKHt9LCBTdXBlci5JbnRlcmZhY2UsIElu
dGVyZmFjZSk7CisgIENsYXNzLmF1Z21lbnRDbGFzcyA9IFN1cGVyLmF1Z21lbnRDbGFzczsKKwor
ICBQb29sZWRDbGFzcy5hZGRQb29saW5nVG8oQ2xhc3MsIFBvb2xlZENsYXNzLmZvdXJBcmd1bWVu
dFBvb2xlcik7Cit9OworCitQb29sZWRDbGFzcy5hZGRQb29saW5nVG8oU3ludGhldGljRXZlbnQs
IFBvb2xlZENsYXNzLmZvdXJBcmd1bWVudFBvb2xlcik7CisKK21vZHVsZS5leHBvcnRzID0gU3lu
dGhldGljRXZlbnQ7CisKKy8qKgorICAqIEhlbHBlciB0byBudWxsaWZ5IHN5bnRoZXRpY0V2ZW50
IGluc3RhbmNlIHByb3BlcnRpZXMgd2hlbiBkZXN0cnVjdGluZworICAqCisgICogQHBhcmFtIHtv
YmplY3R9IFN5bnRoZXRpY0V2ZW50CisgICogQHBhcmFtIHtTdHJpbmd9IHByb3BOYW1lCisgICog
QHJldHVybiB7b2JqZWN0fSBkZWZpbmVQcm9wZXJ0eSBvYmplY3QKKyAgKi8KK2Z1bmN0aW9uIGdl
dFBvb2xlZFdhcm5pbmdQcm9wZXJ0eURlZmluaXRpb24ocHJvcE5hbWUsIGdldFZhbCkgeworICB2
YXIgaXNGdW5jdGlvbiA9IHR5cGVvZiBnZXRWYWwgPT09ICdmdW5jdGlvbic7CisgIHJldHVybiB7
CisgICAgY29uZmlndXJhYmxlOiB0cnVlLAorICAgIHNldDogc2V0LAorICAgIGdldDogZ2V0Cisg
IH07CisKKyAgZnVuY3Rpb24gc2V0KHZhbCkgeworICAgIHZhciBhY3Rpb24gPSBpc0Z1bmN0aW9u
ID8gJ3NldHRpbmcgdGhlIG1ldGhvZCcgOiAnc2V0dGluZyB0aGUgcHJvcGVydHknOworICAgIHdh
cm4oYWN0aW9uLCAnVGhpcyBpcyBlZmZlY3RpdmVseSBhIG5vLW9wJyk7CisgICAgcmV0dXJuIHZh
bDsKKyAgfQorCisgIGZ1bmN0aW9uIGdldCgpIHsKKyAgICB2YXIgYWN0aW9uID0gaXNGdW5jdGlv
biA/ICdhY2Nlc3NpbmcgdGhlIG1ldGhvZCcgOiAnYWNjZXNzaW5nIHRoZSBwcm9wZXJ0eSc7Cisg
ICAgdmFyIHJlc3VsdCA9IGlzRnVuY3Rpb24gPyAnVGhpcyBpcyBhIG5vLW9wIGZ1bmN0aW9uJyA6
ICdUaGlzIGlzIHNldCB0byBudWxsJzsKKyAgICB3YXJuKGFjdGlvbiwgcmVzdWx0KTsKKyAgICBy
ZXR1cm4gZ2V0VmFsOworICB9CisKKyAgZnVuY3Rpb24gd2FybihhY3Rpb24sIHJlc3VsdCkgewor
ICAgIHZhciB3YXJuaW5nQ29uZGl0aW9uID0gZmFsc2U7CisgICAgImRldmVsb3BtZW50IiAhPT0g
J3Byb2R1Y3Rpb24nID8gd2FybmluZyh3YXJuaW5nQ29uZGl0aW9uLCAnVGhpcyBzeW50aGV0aWMg
ZXZlbnQgaXMgcmV1c2VkIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLiBJZiB5b3VcJ3JlIHNlZWlu
ZyB0aGlzLCAnICsgJ3lvdVwncmUgJXMgYCVzYCBvbiBhIHJlbGVhc2VkL251bGxpZmllZCBzeW50
aGV0aWMgZXZlbnQuICVzLiAnICsgJ0lmIHlvdSBtdXN0IGtlZXAgdGhlIG9yaWdpbmFsIHN5bnRo
ZXRpYyBldmVudCBhcm91bmQsIHVzZSBldmVudC5wZXJzaXN0KCkuICcgKyAnU2VlIGh0dHBzOi8v
ZmIubWUvcmVhY3QtZXZlbnQtcG9vbGluZyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4nLCBhY3Rpb24s
IHByb3BOYW1lLCByZXN1bHQpIDogdm9pZCAwOworICB9Cit9Cit9LHsiMTMyIjoxMzIsIjE0NyI6
MTQ3LCIxNDgiOjE0OCwiMjQiOjI0fV0sODU6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9y
dHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICog
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2Vk
IHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25h
bCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMg
ZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwor
dmFyIFN5bnRoZXRpY1VJRXZlbnQgPSBfZGVyZXFfKDkxKTsKKworLyoqCisgKiBAaW50ZXJmYWNl
IEZvY3VzRXZlbnQKKyAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvRE9NLUxldmVsLTMtRXZl
bnRzLworICovCit2YXIgRm9jdXNFdmVudEludGVyZmFjZSA9IHsKKyAgcmVsYXRlZFRhcmdldDog
bnVsbAorfTsKKworLyoqCisgKiBAcGFyYW0ge29iamVjdH0gZGlzcGF0Y2hDb25maWcgQ29uZmln
dXJhdGlvbiB1c2VkIHRvIGRpc3BhdGNoIHRoaXMgZXZlbnQuCisgKiBAcGFyYW0ge3N0cmluZ30g
ZGlzcGF0Y2hNYXJrZXIgTWFya2VyIGlkZW50aWZ5aW5nIHRoZSBldmVudCB0YXJnZXQuCisgKiBA
cGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuCisgKiBAZXh0
ZW5kcyB7U3ludGhldGljVUlFdmVudH0KKyAqLworZnVuY3Rpb24gU3ludGhldGljRm9jdXNFdmVu
dChkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVu
dFRhcmdldCkgeworICByZXR1cm4gU3ludGhldGljVUlFdmVudC5jYWxsKHRoaXMsIGRpc3BhdGNo
Q29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTsK
K30KKworU3ludGhldGljVUlFdmVudC5hdWdtZW50Q2xhc3MoU3ludGhldGljRm9jdXNFdmVudCwg
Rm9jdXNFdmVudEludGVyZmFjZSk7CisKK21vZHVsZS5leHBvcnRzID0gU3ludGhldGljRm9jdXNF
dmVudDsKK30seyI5MSI6OTF9XSw4NjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7
CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5k
ZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdy
YW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxl
IGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIg
U3ludGhldGljRXZlbnQgPSBfZGVyZXFfKDg0KTsKKworLyoqCisgKiBAaW50ZXJmYWNlIEV2ZW50
CisgKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMTMvV0QtRE9NLUxldmVsLTMtRXZlbnRz
LTIwMTMxMTA1CisgKiAgICAgIC8jZXZlbnRzLWlucHV0ZXZlbnRzCisgKi8KK3ZhciBJbnB1dEV2
ZW50SW50ZXJmYWNlID0geworICBkYXRhOiBudWxsCit9OworCisvKioKKyAqIEBwYXJhbSB7b2Jq
ZWN0fSBkaXNwYXRjaENvbmZpZyBDb25maWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBl
dmVudC4KKyAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRlbnRpZnlp
bmcgdGhlIGV2ZW50IHRhcmdldC4KKyAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRp
dmUgYnJvd3NlciBldmVudC4KKyAqIEBleHRlbmRzIHtTeW50aGV0aWNVSUV2ZW50fQorICovCitm
dW5jdGlvbiBTeW50aGV0aWNJbnB1dEV2ZW50KGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtl
ciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7CisgIHJldHVybiBTeW50aGV0aWNF
dmVudC5jYWxsKHRoaXMsIGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZl
bnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTsKK30KKworU3ludGhldGljRXZlbnQuYXVnbWVudENsYXNz
KFN5bnRoZXRpY0lucHV0RXZlbnQsIElucHV0RXZlbnRJbnRlcmZhY2UpOworCittb2R1bGUuZXhw
b3J0cyA9IFN5bnRoZXRpY0lucHV0RXZlbnQ7Cit9LHsiODQiOjg0fV0sODc6W2Z1bmN0aW9uKF9k
ZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBG
YWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJj
ZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0
aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2Ug
dHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91
bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisK
Kyd1c2Ugc3RyaWN0JzsKKwordmFyIFN5bnRoZXRpY1VJRXZlbnQgPSBfZGVyZXFfKDkxKTsKKwor
dmFyIGdldEV2ZW50Q2hhckNvZGUgPSBfZGVyZXFfKDEwMyk7Cit2YXIgZ2V0RXZlbnRLZXkgPSBf
ZGVyZXFfKDEwNCk7Cit2YXIgZ2V0RXZlbnRNb2RpZmllclN0YXRlID0gX2RlcmVxXygxMDUpOwor
CisvKioKKyAqIEBpbnRlcmZhY2UgS2V5Ym9hcmRFdmVudAorICogQHNlZSBodHRwOi8vd3d3Lncz
Lm9yZy9UUi9ET00tTGV2ZWwtMy1FdmVudHMvCisgKi8KK3ZhciBLZXlib2FyZEV2ZW50SW50ZXJm
YWNlID0geworICBrZXk6IGdldEV2ZW50S2V5LAorICBsb2NhdGlvbjogbnVsbCwKKyAgY3RybEtl
eTogbnVsbCwKKyAgc2hpZnRLZXk6IG51bGwsCisgIGFsdEtleTogbnVsbCwKKyAgbWV0YUtleTog
bnVsbCwKKyAgcmVwZWF0OiBudWxsLAorICBsb2NhbGU6IG51bGwsCisgIGdldE1vZGlmaWVyU3Rh
dGU6IGdldEV2ZW50TW9kaWZpZXJTdGF0ZSwKKyAgLy8gTGVnYWN5IEludGVyZmFjZQorICBjaGFy
Q29kZTogZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgLy8gYGNoYXJDb2RlYCBpcyB0aGUgcmVzdWx0
IG9mIGEgS2V5UHJlc3MgZXZlbnQgYW5kIHJlcHJlc2VudHMgdGhlIHZhbHVlIG9mCisgICAgLy8g
dGhlIGFjdHVhbCBwcmludGFibGUgY2hhcmFjdGVyLgorCisgICAgLy8gS2V5UHJlc3MgaXMgZGVw
cmVjYXRlZCwgYnV0IGl0cyByZXBsYWNlbWVudCBpcyBub3QgeWV0IGZpbmFsIGFuZCBub3QKKyAg
ICAvLyBpbXBsZW1lbnRlZCBpbiBhbnkgbWFqb3IgYnJvd3Nlci4gT25seSBLZXlQcmVzcyBoYXMg
Y2hhckNvZGUuCisgICAgaWYgKGV2ZW50LnR5cGUgPT09ICdrZXlwcmVzcycpIHsKKyAgICAgIHJl
dHVybiBnZXRFdmVudENoYXJDb2RlKGV2ZW50KTsKKyAgICB9CisgICAgcmV0dXJuIDA7CisgIH0s
CisgIGtleUNvZGU6IGZ1bmN0aW9uIChldmVudCkgeworICAgIC8vIGBrZXlDb2RlYCBpcyB0aGUg
cmVzdWx0IG9mIGEgS2V5RG93bi9VcCBldmVudCBhbmQgcmVwcmVzZW50cyB0aGUgdmFsdWUgb2YK
KyAgICAvLyBwaHlzaWNhbCBrZXlib2FyZCBrZXkuCisKKyAgICAvLyBUaGUgYWN0dWFsIG1lYW5p
bmcgb2YgdGhlIHZhbHVlIGRlcGVuZHMgb24gdGhlIHVzZXJzJyBrZXlib2FyZCBsYXlvdXQKKyAg
ICAvLyB3aGljaCBjYW5ub3QgYmUgZGV0ZWN0ZWQuIEFzc3VtaW5nIHRoYXQgaXQgaXMgYSBVUyBr
ZXlib2FyZCBsYXlvdXQKKyAgICAvLyBwcm92aWRlcyBhIHN1cnByaXNpbmdseSBhY2N1cmF0ZSBt
YXBwaW5nIGZvciBVUyBhbmQgRXVyb3BlYW4gdXNlcnMuCisgICAgLy8gRHVlIHRvIHRoaXMsIGl0
IGlzIGxlZnQgdG8gdGhlIHVzZXIgdG8gaW1wbGVtZW50IGF0IHRoaXMgdGltZS4KKyAgICBpZiAo
ZXZlbnQudHlwZSA9PT0gJ2tleWRvd24nIHx8IGV2ZW50LnR5cGUgPT09ICdrZXl1cCcpIHsKKyAg
ICAgIHJldHVybiBldmVudC5rZXlDb2RlOworICAgIH0KKyAgICByZXR1cm4gMDsKKyAgfSwKKyAg
d2hpY2g6IGZ1bmN0aW9uIChldmVudCkgeworICAgIC8vIGB3aGljaGAgaXMgYW4gYWxpYXMgZm9y
IGVpdGhlciBga2V5Q29kZWAgb3IgYGNoYXJDb2RlYCBkZXBlbmRpbmcgb24gdGhlCisgICAgLy8g
dHlwZSBvZiB0aGUgZXZlbnQuCisgICAgaWYgKGV2ZW50LnR5cGUgPT09ICdrZXlwcmVzcycpIHsK
KyAgICAgIHJldHVybiBnZXRFdmVudENoYXJDb2RlKGV2ZW50KTsKKyAgICB9CisgICAgaWYgKGV2
ZW50LnR5cGUgPT09ICdrZXlkb3duJyB8fCBldmVudC50eXBlID09PSAna2V5dXAnKSB7CisgICAg
ICByZXR1cm4gZXZlbnQua2V5Q29kZTsKKyAgICB9CisgICAgcmV0dXJuIDA7CisgIH0KK307CisK
Ky8qKgorICogQHBhcmFtIHtvYmplY3R9IGRpc3BhdGNoQ29uZmlnIENvbmZpZ3VyYXRpb24gdXNl
ZCB0byBkaXNwYXRjaCB0aGlzIGV2ZW50LgorICogQHBhcmFtIHtzdHJpbmd9IGRpc3BhdGNoTWFy
a2VyIE1hcmtlciBpZGVudGlmeWluZyB0aGUgZXZlbnQgdGFyZ2V0LgorICogQHBhcmFtIHtvYmpl
Y3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LgorICogQGV4dGVuZHMge1N5bnRo
ZXRpY1VJRXZlbnR9CisgKi8KK2Z1bmN0aW9uIFN5bnRoZXRpY0tleWJvYXJkRXZlbnQoZGlzcGF0
Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQp
IHsKKyAgcmV0dXJuIFN5bnRoZXRpY1VJRXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywg
ZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7Cit9CisKK1N5
bnRoZXRpY1VJRXZlbnQuYXVnbWVudENsYXNzKFN5bnRoZXRpY0tleWJvYXJkRXZlbnQsIEtleWJv
YXJkRXZlbnRJbnRlcmZhY2UpOworCittb2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRpY0tleWJvYXJk
RXZlbnQ7Cit9LHsiMTAzIjoxMDMsIjEwNCI6MTA0LCIxMDUiOjEwNSwiOTEiOjkxfV0sODg6W2Z1
bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1w
cmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBU
aGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBm
b3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBj
YW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisg
KgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIFN5bnRoZXRpY1VJRXZlbnQgPSBfZGVyZXFf
KDkxKTsKK3ZhciBWaWV3cG9ydE1ldHJpY3MgPSBfZGVyZXFfKDk0KTsKKwordmFyIGdldEV2ZW50
TW9kaWZpZXJTdGF0ZSA9IF9kZXJlcV8oMTA1KTsKKworLyoqCisgKiBAaW50ZXJmYWNlIE1vdXNl
RXZlbnQKKyAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvRE9NLUxldmVsLTMtRXZlbnRzLwor
ICovCit2YXIgTW91c2VFdmVudEludGVyZmFjZSA9IHsKKyAgc2NyZWVuWDogbnVsbCwKKyAgc2Ny
ZWVuWTogbnVsbCwKKyAgY2xpZW50WDogbnVsbCwKKyAgY2xpZW50WTogbnVsbCwKKyAgY3RybEtl
eTogbnVsbCwKKyAgc2hpZnRLZXk6IG51bGwsCisgIGFsdEtleTogbnVsbCwKKyAgbWV0YUtleTog
bnVsbCwKKyAgZ2V0TW9kaWZpZXJTdGF0ZTogZ2V0RXZlbnRNb2RpZmllclN0YXRlLAorICBidXR0
b246IGZ1bmN0aW9uIChldmVudCkgeworICAgIC8vIFdlYmtpdCwgRmlyZWZveCwgSUU5KworICAg
IC8vIHdoaWNoOiAgMSAyIDMKKyAgICAvLyBidXR0b246IDAgMSAyIChzdGFuZGFyZCkKKyAgICB2
YXIgYnV0dG9uID0gZXZlbnQuYnV0dG9uOworICAgIGlmICgnd2hpY2gnIGluIGV2ZW50KSB7Cisg
ICAgICByZXR1cm4gYnV0dG9uOworICAgIH0KKyAgICAvLyBJRTw5CisgICAgLy8gd2hpY2g6ICB1
bmRlZmluZWQKKyAgICAvLyBidXR0b246IDAgMCAwCisgICAgLy8gYnV0dG9uOiAxIDQgMiAob25t
b3VzZXVwKQorICAgIHJldHVybiBidXR0b24gPT09IDIgPyAyIDogYnV0dG9uID09PSA0ID8gMSA6
IDA7CisgIH0sCisgIGJ1dHRvbnM6IG51bGwsCisgIHJlbGF0ZWRUYXJnZXQ6IGZ1bmN0aW9uIChl
dmVudCkgeworICAgIHJldHVybiBldmVudC5yZWxhdGVkVGFyZ2V0IHx8IChldmVudC5mcm9tRWxl
bWVudCA9PT0gZXZlbnQuc3JjRWxlbWVudCA/IGV2ZW50LnRvRWxlbWVudCA6IGV2ZW50LmZyb21F
bGVtZW50KTsKKyAgfSwKKyAgLy8gIlByb3ByaWV0YXJ5IiBJbnRlcmZhY2UuCisgIHBhZ2VYOiBm
dW5jdGlvbiAoZXZlbnQpIHsKKyAgICByZXR1cm4gJ3BhZ2VYJyBpbiBldmVudCA/IGV2ZW50LnBh
Z2VYIDogZXZlbnQuY2xpZW50WCArIFZpZXdwb3J0TWV0cmljcy5jdXJyZW50U2Nyb2xsTGVmdDsK
KyAgfSwKKyAgcGFnZVk6IGZ1bmN0aW9uIChldmVudCkgeworICAgIHJldHVybiAncGFnZVknIGlu
IGV2ZW50ID8gZXZlbnQucGFnZVkgOiBldmVudC5jbGllbnRZICsgVmlld3BvcnRNZXRyaWNzLmN1
cnJlbnRTY3JvbGxUb3A7CisgIH0KK307CisKKy8qKgorICogQHBhcmFtIHtvYmplY3R9IGRpc3Bh
dGNoQ29uZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRjaCB0aGlzIGV2ZW50LgorICog
QHBhcmFtIHtzdHJpbmd9IGRpc3BhdGNoTWFya2VyIE1hcmtlciBpZGVudGlmeWluZyB0aGUgZXZl
bnQgdGFyZ2V0LgorICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2Vy
IGV2ZW50LgorICogQGV4dGVuZHMge1N5bnRoZXRpY1VJRXZlbnR9CisgKi8KK2Z1bmN0aW9uIFN5
bnRoZXRpY01vdXNlRXZlbnQoZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVF
dmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHsKKyAgcmV0dXJuIFN5bnRoZXRpY1VJRXZlbnQuY2Fs
bCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRp
dmVFdmVudFRhcmdldCk7Cit9CisKK1N5bnRoZXRpY1VJRXZlbnQuYXVnbWVudENsYXNzKFN5bnRo
ZXRpY01vdXNlRXZlbnQsIE1vdXNlRXZlbnRJbnRlcmZhY2UpOworCittb2R1bGUuZXhwb3J0cyA9
IFN5bnRoZXRpY01vdXNlRXZlbnQ7Cit9LHsiMTA1IjoxMDUsIjkxIjo5MSwiOTQiOjk0fV0sODk6
W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAx
My1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5z
ZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2Yg
dGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0
cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnku
CisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIFN5bnRoZXRpY1VJRXZlbnQgPSBfZGVy
ZXFfKDkxKTsKKwordmFyIGdldEV2ZW50TW9kaWZpZXJTdGF0ZSA9IF9kZXJlcV8oMTA1KTsKKwor
LyoqCisgKiBAaW50ZXJmYWNlIFRvdWNoRXZlbnQKKyAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcv
VFIvdG91Y2gtZXZlbnRzLworICovCit2YXIgVG91Y2hFdmVudEludGVyZmFjZSA9IHsKKyAgdG91
Y2hlczogbnVsbCwKKyAgdGFyZ2V0VG91Y2hlczogbnVsbCwKKyAgY2hhbmdlZFRvdWNoZXM6IG51
bGwsCisgIGFsdEtleTogbnVsbCwKKyAgbWV0YUtleTogbnVsbCwKKyAgY3RybEtleTogbnVsbCwK
KyAgc2hpZnRLZXk6IG51bGwsCisgIGdldE1vZGlmaWVyU3RhdGU6IGdldEV2ZW50TW9kaWZpZXJT
dGF0ZQorfTsKKworLyoqCisgKiBAcGFyYW0ge29iamVjdH0gZGlzcGF0Y2hDb25maWcgQ29uZmln
dXJhdGlvbiB1c2VkIHRvIGRpc3BhdGNoIHRoaXMgZXZlbnQuCisgKiBAcGFyYW0ge3N0cmluZ30g
ZGlzcGF0Y2hNYXJrZXIgTWFya2VyIGlkZW50aWZ5aW5nIHRoZSBldmVudCB0YXJnZXQuCisgKiBA
cGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuCisgKiBAZXh0
ZW5kcyB7U3ludGhldGljVUlFdmVudH0KKyAqLworZnVuY3Rpb24gU3ludGhldGljVG91Y2hFdmVu
dChkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVu
dFRhcmdldCkgeworICByZXR1cm4gU3ludGhldGljVUlFdmVudC5jYWxsKHRoaXMsIGRpc3BhdGNo
Q29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTsK
K30KKworU3ludGhldGljVUlFdmVudC5hdWdtZW50Q2xhc3MoU3ludGhldGljVG91Y2hFdmVudCwg
VG91Y2hFdmVudEludGVyZmFjZSk7CisKK21vZHVsZS5leHBvcnRzID0gU3ludGhldGljVG91Y2hF
dmVudDsKK30seyIxMDUiOjEwNSwiOTEiOjkxfV0sOTA6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxl
LGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5j
LgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxp
Y2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRk
aXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBB
VEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0
JzsKKwordmFyIFN5bnRoZXRpY0V2ZW50ID0gX2RlcmVxXyg4NCk7CisKKy8qKgorICogQGludGVy
ZmFjZSBFdmVudAorICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDA5L1dELWNzczMtdHJh
bnNpdGlvbnMtMjAwOTAzMjAvI3RyYW5zaXRpb24tZXZlbnRzLQorICogQHNlZSBodHRwczovL2Rl
dmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvVHJhbnNpdGlvbkV2ZW50Cisg
Ki8KK3ZhciBUcmFuc2l0aW9uRXZlbnRJbnRlcmZhY2UgPSB7CisgIHByb3BlcnR5TmFtZTogbnVs
bCwKKyAgZWxhcHNlZFRpbWU6IG51bGwsCisgIHBzZXVkb0VsZW1lbnQ6IG51bGwKK307CisKKy8q
KgorICogQHBhcmFtIHtvYmplY3R9IGRpc3BhdGNoQ29uZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0
byBkaXNwYXRjaCB0aGlzIGV2ZW50LgorICogQHBhcmFtIHtzdHJpbmd9IGRpc3BhdGNoTWFya2Vy
IE1hcmtlciBpZGVudGlmeWluZyB0aGUgZXZlbnQgdGFyZ2V0LgorICogQHBhcmFtIHtvYmplY3R9
IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LgorICogQGV4dGVuZHMge1N5bnRoZXRp
Y0V2ZW50fQorICovCitmdW5jdGlvbiBTeW50aGV0aWNUcmFuc2l0aW9uRXZlbnQoZGlzcGF0Y2hD
b25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHsK
KyAgcmV0dXJuIFN5bnRoZXRpY0V2ZW50LmNhbGwodGhpcywgZGlzcGF0Y2hDb25maWcsIGRpc3Bh
dGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpOworfQorCitTeW50aGV0
aWNFdmVudC5hdWdtZW50Q2xhc3MoU3ludGhldGljVHJhbnNpdGlvbkV2ZW50LCBUcmFuc2l0aW9u
RXZlbnRJbnRlcmZhY2UpOworCittb2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRpY1RyYW5zaXRpb25F
dmVudDsKK30seyI4NCI6ODR9XSw5MTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7
CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5k
ZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdy
YW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxl
IGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIg
U3ludGhldGljRXZlbnQgPSBfZGVyZXFfKDg0KTsKKwordmFyIGdldEV2ZW50VGFyZ2V0ID0gX2Rl
cmVxXygxMDYpOworCisvKioKKyAqIEBpbnRlcmZhY2UgVUlFdmVudAorICogQHNlZSBodHRwOi8v
d3d3LnczLm9yZy9UUi9ET00tTGV2ZWwtMy1FdmVudHMvCisgKi8KK3ZhciBVSUV2ZW50SW50ZXJm
YWNlID0geworICB2aWV3OiBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICBpZiAoZXZlbnQudmlldykg
eworICAgICAgcmV0dXJuIGV2ZW50LnZpZXc7CisgICAgfQorCisgICAgdmFyIHRhcmdldCA9IGdl
dEV2ZW50VGFyZ2V0KGV2ZW50KTsKKyAgICBpZiAodGFyZ2V0LndpbmRvdyA9PT0gdGFyZ2V0KSB7
CisgICAgICAvLyB0YXJnZXQgaXMgYSB3aW5kb3cgb2JqZWN0CisgICAgICByZXR1cm4gdGFyZ2V0
OworICAgIH0KKworICAgIHZhciBkb2MgPSB0YXJnZXQub3duZXJEb2N1bWVudDsKKyAgICAvLyBU
T0RPOiBGaWd1cmUgb3V0IHdoeSBgb3duZXJEb2N1bWVudGAgaXMgc29tZXRpbWVzIHVuZGVmaW5l
ZCBpbiBJRTguCisgICAgaWYgKGRvYykgeworICAgICAgcmV0dXJuIGRvYy5kZWZhdWx0VmlldyB8
fCBkb2MucGFyZW50V2luZG93OworICAgIH0gZWxzZSB7CisgICAgICByZXR1cm4gd2luZG93Owor
ICAgIH0KKyAgfSwKKyAgZGV0YWlsOiBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICByZXR1cm4gZXZl
bnQuZGV0YWlsIHx8IDA7CisgIH0KK307CisKKy8qKgorICogQHBhcmFtIHtvYmplY3R9IGRpc3Bh
dGNoQ29uZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRjaCB0aGlzIGV2ZW50LgorICog
QHBhcmFtIHtzdHJpbmd9IGRpc3BhdGNoTWFya2VyIE1hcmtlciBpZGVudGlmeWluZyB0aGUgZXZl
bnQgdGFyZ2V0LgorICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2Vy
IGV2ZW50LgorICogQGV4dGVuZHMge1N5bnRoZXRpY0V2ZW50fQorICovCitmdW5jdGlvbiBTeW50
aGV0aWNVSUV2ZW50KGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQs
IG5hdGl2ZUV2ZW50VGFyZ2V0KSB7CisgIHJldHVybiBTeW50aGV0aWNFdmVudC5jYWxsKHRoaXMs
IGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50
VGFyZ2V0KTsKK30KKworU3ludGhldGljRXZlbnQuYXVnbWVudENsYXNzKFN5bnRoZXRpY1VJRXZl
bnQsIFVJRXZlbnRJbnRlcmZhY2UpOworCittb2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRpY1VJRXZl
bnQ7Cit9LHsiMTA2IjoxMDYsIjg0Ijo4NH1dLDkyOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxl
eHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4K
KyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNl
bnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0
aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRF
TlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7
CisKK3ZhciBTeW50aGV0aWNNb3VzZUV2ZW50ID0gX2RlcmVxXyg4OCk7CisKKy8qKgorICogQGlu
dGVyZmFjZSBXaGVlbEV2ZW50CisgKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZl
bC0zLUV2ZW50cy8KKyAqLwordmFyIFdoZWVsRXZlbnRJbnRlcmZhY2UgPSB7CisgIGRlbHRhWDog
ZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgcmV0dXJuICdkZWx0YVgnIGluIGV2ZW50ID8gZXZlbnQu
ZGVsdGFYIDoKKyAgICAvLyBGYWxsYmFjayB0byBgd2hlZWxEZWx0YVhgIGZvciBXZWJraXQgYW5k
IG5vcm1hbGl6ZSAocmlnaHQgaXMgcG9zaXRpdmUpLgorICAgICd3aGVlbERlbHRhWCcgaW4gZXZl
bnQgPyAtZXZlbnQud2hlZWxEZWx0YVggOiAwOworICB9LAorICBkZWx0YVk6IGZ1bmN0aW9uIChl
dmVudCkgeworICAgIHJldHVybiAnZGVsdGFZJyBpbiBldmVudCA/IGV2ZW50LmRlbHRhWSA6Cisg
ICAgLy8gRmFsbGJhY2sgdG8gYHdoZWVsRGVsdGFZYCBmb3IgV2Via2l0IGFuZCBub3JtYWxpemUg
KGRvd24gaXMgcG9zaXRpdmUpLgorICAgICd3aGVlbERlbHRhWScgaW4gZXZlbnQgPyAtZXZlbnQu
d2hlZWxEZWx0YVkgOgorICAgIC8vIEZhbGxiYWNrIHRvIGB3aGVlbERlbHRhYCBmb3IgSUU8OSBh
bmQgbm9ybWFsaXplIChkb3duIGlzIHBvc2l0aXZlKS4KKyAgICAnd2hlZWxEZWx0YScgaW4gZXZl
bnQgPyAtZXZlbnQud2hlZWxEZWx0YSA6IDA7CisgIH0sCisgIGRlbHRhWjogbnVsbCwKKworICAv
LyBCcm93c2VycyB3aXRob3V0ICJkZWx0YU1vZGUiIGlzIHJlcG9ydGluZyBpbiByYXcgd2hlZWwg
ZGVsdGEgd2hlcmUgb25lCisgIC8vIG5vdGNoIG9uIHRoZSBzY3JvbGwgaXMgYWx3YXlzICsvLSAx
MjAsIHJvdWdobHkgZXF1aXZhbGVudCB0byBwaXhlbHMuCisgIC8vIEEgZ29vZCBhcHByb3hpbWF0
aW9uIG9mIERPTV9ERUxUQV9MSU5FICgxKSBpcyA1JSBvZiB2aWV3cG9ydCBzaXplIG9yCisgIC8v
IH40MCBwaXhlbHMsIGZvciBET01fREVMVEFfU0NSRUVOICgyKSBpdCBpcyA4Ny41JSBvZiB2aWV3
cG9ydCBzaXplLgorICBkZWx0YU1vZGU6IG51bGwKK307CisKKy8qKgorICogQHBhcmFtIHtvYmpl
Y3R9IGRpc3BhdGNoQ29uZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRjaCB0aGlzIGV2
ZW50LgorICogQHBhcmFtIHtzdHJpbmd9IGRpc3BhdGNoTWFya2VyIE1hcmtlciBpZGVudGlmeWlu
ZyB0aGUgZXZlbnQgdGFyZ2V0LgorICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2
ZSBicm93c2VyIGV2ZW50LgorICogQGV4dGVuZHMge1N5bnRoZXRpY01vdXNlRXZlbnR9CisgKi8K
K2Z1bmN0aW9uIFN5bnRoZXRpY1doZWVsRXZlbnQoZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFy
a2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHsKKyAgcmV0dXJuIFN5bnRoZXRp
Y01vdXNlRXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5h
dGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7Cit9CisKK1N5bnRoZXRpY01vdXNlRXZlbnQu
YXVnbWVudENsYXNzKFN5bnRoZXRpY1doZWVsRXZlbnQsIFdoZWVsRXZlbnRJbnRlcmZhY2UpOwor
Cittb2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRpY1doZWVsRXZlbnQ7Cit9LHsiODgiOjg4fV0sOTM6
W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAx
My1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5z
ZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2Yg
dGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0
cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnku
CisgKgorICogCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJbnZhcmlhbnQgPSBf
ZGVyZXFfKDExNik7CisKK3ZhciBpbnZhcmlhbnQgPSBfZGVyZXFfKDE0MCk7CisKK3ZhciBPQlNF
UlZFRF9FUlJPUiA9IHt9OworCisvKioKKyAqIGBUcmFuc2FjdGlvbmAgY3JlYXRlcyBhIGJsYWNr
IGJveCB0aGF0IGlzIGFibGUgdG8gd3JhcCBhbnkgbWV0aG9kIHN1Y2ggdGhhdAorICogY2VydGFp
biBpbnZhcmlhbnRzIGFyZSBtYWludGFpbmVkIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIG1ldGhvZCBp
cyBpbnZva2VkCisgKiAoRXZlbiBpZiBhbiBleGNlcHRpb24gaXMgdGhyb3duIHdoaWxlIGludm9r
aW5nIHRoZSB3cmFwcGVkIG1ldGhvZCkuIFdob2V2ZXIKKyAqIGluc3RhbnRpYXRlcyBhIHRyYW5z
YWN0aW9uIGNhbiBwcm92aWRlIGVuZm9yY2VycyBvZiB0aGUgaW52YXJpYW50cyBhdAorICogY3Jl
YXRpb24gdGltZS4gVGhlIGBUcmFuc2FjdGlvbmAgY2xhc3MgaXRzZWxmIHdpbGwgc3VwcGx5IG9u
ZSBhZGRpdGlvbmFsCisgKiBhdXRvbWF0aWMgaW52YXJpYW50IGZvciB5b3UgLSB0aGUgaW52YXJp
YW50IHRoYXQgYW55IHRyYW5zYWN0aW9uIGluc3RhbmNlCisgKiBzaG91bGQgbm90IGJlIHJ1biB3
aGlsZSBpdCBpcyBhbHJlYWR5IGJlaW5nIHJ1bi4gWW91IHdvdWxkIHR5cGljYWxseSBjcmVhdGUg
YQorICogc2luZ2xlIGluc3RhbmNlIG9mIGEgYFRyYW5zYWN0aW9uYCBmb3IgcmV1c2UgbXVsdGlw
bGUgdGltZXMsIHRoYXQgcG90ZW50aWFsbHkKKyAqIGlzIHVzZWQgdG8gd3JhcCBzZXZlcmFsIGRp
ZmZlcmVudCBtZXRob2RzLiBXcmFwcGVycyBhcmUgZXh0cmVtZWx5IHNpbXBsZSAtCisgKiB0aGV5
IG9ubHkgcmVxdWlyZSBpbXBsZW1lbnRpbmcgdHdvIG1ldGhvZHMuCisgKgorICogPHByZT4KKyAq
ICAgICAgICAgICAgICAgICAgICAgICB3cmFwcGVycyAoaW5qZWN0ZWQgYXQgY3JlYXRpb24gdGlt
ZSkKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICAgICAgICArCisg
KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgfAorICogICAg
ICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLXwtLS0tLS0tLS0tLS0t
LSsKKyAqICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB2ICAgICAgICB8ICAg
ICAgICAgICAgICB8CisgKiAgICAgICAgICAgICAgICAgICAgfCAgICAgICstLS0tLS0tLS0tLS0t
LS0rICAgfCAgICAgICAgICAgICAgfAorICogICAgICAgICAgICAgICAgICAgIHwgICArLS18ICAg
IHdyYXBwZXIxICAgfC0tLXwtLS0tKyAgICAgICAgIHwKKyAqICAgICAgICAgICAgICAgICAgICB8
ICAgfCAgKy0tLS0tLS0tLS0tLS0tLSsgICB2ICAgIHwgICAgICAgICB8CisgKiAgICAgICAgICAg
ICAgICAgICAgfCAgIHwgICAgICAgICAgKy0tLS0tLS0tLS0tLS0rICB8ICAgICAgICAgfAorICog
ICAgICAgICAgICAgICAgICAgIHwgICB8ICAgICArLS0tLXwgICB3cmFwcGVyMiAgfC0tLS0tLS0t
KyAgIHwKKyAqICAgICAgICAgICAgICAgICAgICB8ICAgfCAgICAgfCAgICArLS0tLS0tLS0tLS0t
LSsgIHwgICAgIHwgICB8CisgKiAgICAgICAgICAgICAgICAgICAgfCAgIHwgICAgIHwgICAgICAg
ICAgICAgICAgICAgICB8ICAgICB8ICAgfAorICogICAgICAgICAgICAgICAgICAgIHwgICB2ICAg
ICB2ICAgICAgICAgICAgICAgICAgICAgdiAgICAgdiAgIHwgd3JhcHBlcgorICogICAgICAgICAg
ICAgICAgICAgIHwgKy0tLSsgKy0tLSsgICArLS0tLS0tLS0tKyAgICstLS0rICstLS0rIHwgaW52
YXJpYW50cworICogcGVyZm9ybShhbnlNZXRob2QpIHwgfCAgIHwgfCAgIHwgICB8ICAgICAgICAg
fCAgIHwgICB8IHwgICB8IHwgbWFpbnRhaW5lZAorICogKy0tLS0tLS0tLS0tLS0tLS0tPnwtfC0t
LXwtfC0tLXwtLT58YW55TWV0aG9kfC0tLXwtLS18LXwtLS18LXwtLS0tLS0tLT4KKyAqICAgICAg
ICAgICAgICAgICAgICB8IHwgICB8IHwgICB8ICAgfCAgICAgICAgIHwgICB8ICAgfCB8ICAgfCB8
CisgKiAgICAgICAgICAgICAgICAgICAgfCB8ICAgfCB8ICAgfCAgIHwgICAgICAgICB8ICAgfCAg
IHwgfCAgIHwgfAorICogICAgICAgICAgICAgICAgICAgIHwgfCAgIHwgfCAgIHwgICB8ICAgICAg
ICAgfCAgIHwgICB8IHwgICB8IHwKKyAqICAgICAgICAgICAgICAgICAgICB8ICstLS0rICstLS0r
ICAgKy0tLS0tLS0tLSsgICArLS0tKyArLS0tKyB8CisgKiAgICAgICAgICAgICAgICAgICAgfCAg
aW5pdGlhbGl6ZSAgICAgICAgICAgICAgICAgICAgY2xvc2UgICAgfAorICogICAgICAgICAgICAg
ICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAqIDwv
cHJlPgorICoKKyAqIFVzZSBjYXNlczoKKyAqIC0gUHJlc2VydmluZyB0aGUgaW5wdXQgc2VsZWN0
aW9uIHJhbmdlcyBiZWZvcmUvYWZ0ZXIgcmVjb25jaWxpYXRpb24uCisgKiAgIFJlc3RvcmluZyBz
ZWxlY3Rpb24gZXZlbiBpbiB0aGUgZXZlbnQgb2YgYW4gdW5leHBlY3RlZCBlcnJvci4KKyAqIC0g
RGVhY3RpdmF0aW5nIGV2ZW50cyB3aGlsZSByZWFycmFuZ2luZyB0aGUgRE9NLCBwcmV2ZW50aW5n
IGJsdXJzL2ZvY3VzZXMsCisgKiAgIHdoaWxlIGd1YXJhbnRlZWluZyB0aGF0IGFmdGVyd2FyZHMs
IHRoZSBldmVudCBzeXN0ZW0gaXMgcmVhY3RpdmF0ZWQuCisgKiAtIEZsdXNoaW5nIGEgcXVldWUg
b2YgY29sbGVjdGVkIERPTSBtdXRhdGlvbnMgdG8gdGhlIG1haW4gVUkgdGhyZWFkIGFmdGVyIGEK
KyAqICAgcmVjb25jaWxpYXRpb24gdGFrZXMgcGxhY2UgaW4gYSB3b3JrZXIgdGhyZWFkLgorICog
LSBJbnZva2luZyBhbnkgY29sbGVjdGVkIGBjb21wb25lbnREaWRVcGRhdGVgIGNhbGxiYWNrcyBh
ZnRlciByZW5kZXJpbmcgbmV3CisgKiAgIGNvbnRlbnQuCisgKiAtIChGdXR1cmUgdXNlIGNhc2Up
OiBXcmFwcGluZyBwYXJ0aWN1bGFyIGZsdXNoZXMgb2YgdGhlIGBSZWFjdFdvcmtlcmAgcXVldWUK
KyAqICAgdG8gcHJlc2VydmUgdGhlIGBzY3JvbGxUb3BgIChhbiBhdXRvbWF0aWMgc2Nyb2xsIGF3
YXJlIERPTSkuCisgKiAtIChGdXR1cmUgdXNlIGNhc2UpOiBMYXlvdXQgY2FsY3VsYXRpb25zIGJl
Zm9yZSBhbmQgYWZ0ZXIgRE9NIHVwZGF0ZXMuCisgKgorICogVHJhbnNhY3Rpb25hbCBwbHVnaW4g
QVBJOgorICogLSBBIG1vZHVsZSB0aGF0IGhhcyBhbiBgaW5pdGlhbGl6ZWAgbWV0aG9kIHRoYXQg
cmV0dXJucyBhbnkgcHJlY29tcHV0YXRpb24uCisgKiAtIGFuZCBhIGBjbG9zZWAgbWV0aG9kIHRo
YXQgYWNjZXB0cyB0aGUgcHJlY29tcHV0YXRpb24uIGBjbG9zZWAgaXMgaW52b2tlZAorICogICB3
aGVuIHRoZSB3cmFwcGVkIHByb2Nlc3MgaXMgY29tcGxldGVkLCBvciBoYXMgZmFpbGVkLgorICoK
KyAqIEBwYXJhbSB7QXJyYXk8VHJhbnNhY3Rpb25hbFdyYXBwZXI+fSB0cmFuc2FjdGlvbldyYXBw
ZXIgV3JhcHBlciBtb2R1bGVzCisgKiB0aGF0IGltcGxlbWVudCBgaW5pdGlhbGl6ZWAgYW5kIGBj
bG9zZWAuCisgKiBAcmV0dXJuIHtUcmFuc2FjdGlvbn0gU2luZ2xlIHRyYW5zYWN0aW9uIGZvciBy
ZXVzZSBpbiB0aHJlYWQuCisgKgorICogQGNsYXNzIFRyYW5zYWN0aW9uCisgKi8KK3ZhciBUcmFu
c2FjdGlvbkltcGwgPSB7CisgIC8qKgorICAgKiBTZXRzIHVwIHRoaXMgaW5zdGFuY2Ugc28gdGhh
dCBpdCBpcyBwcmVwYXJlZCBmb3IgY29sbGVjdGluZyBtZXRyaWNzLiBEb2VzCisgICAqIHNvIHN1
Y2ggdGhhdCB0aGlzIHNldHVwIG1ldGhvZCBtYXkgYmUgdXNlZCBvbiBhbiBpbnN0YW5jZSB0aGF0
IGlzIGFscmVhZHkKKyAgICogaW5pdGlhbGl6ZWQsIGluIGEgd2F5IHRoYXQgZG9lcyBub3QgY29u
c3VtZSBhZGRpdGlvbmFsIG1lbW9yeSB1cG9uIHJldXNlLgorICAgKiBUaGF0IGNhbiBiZSB1c2Vm
dWwgaWYgeW91IGRlY2lkZSB0byBtYWtlIHlvdXIgc3ViY2xhc3Mgb2YgdGhpcyBtaXhpbiBhCisg
ICAqICJQb29sZWRDbGFzcyIuCisgICAqLworICByZWluaXRpYWxpemVUcmFuc2FjdGlvbjogZnVu
Y3Rpb24gKCkgeworICAgIHRoaXMudHJhbnNhY3Rpb25XcmFwcGVycyA9IHRoaXMuZ2V0VHJhbnNh
Y3Rpb25XcmFwcGVycygpOworICAgIGlmICh0aGlzLndyYXBwZXJJbml0RGF0YSkgeworICAgICAg
dGhpcy53cmFwcGVySW5pdERhdGEubGVuZ3RoID0gMDsKKyAgICB9IGVsc2UgeworICAgICAgdGhp
cy53cmFwcGVySW5pdERhdGEgPSBbXTsKKyAgICB9CisgICAgdGhpcy5faXNJblRyYW5zYWN0aW9u
ID0gZmFsc2U7CisgIH0sCisKKyAgX2lzSW5UcmFuc2FjdGlvbjogZmFsc2UsCisKKyAgLyoqCisg
ICAqIEBhYnN0cmFjdAorICAgKiBAcmV0dXJuIHtBcnJheTxUcmFuc2FjdGlvbldyYXBwZXI+fSBB
cnJheSBvZiB0cmFuc2FjdGlvbiB3cmFwcGVycy4KKyAgICovCisgIGdldFRyYW5zYWN0aW9uV3Jh
cHBlcnM6IG51bGwsCisKKyAgaXNJblRyYW5zYWN0aW9uOiBmdW5jdGlvbiAoKSB7CisgICAgcmV0
dXJuICEhdGhpcy5faXNJblRyYW5zYWN0aW9uOworICB9LAorCisgIC8qKgorICAgKiBFeGVjdXRl
cyB0aGUgZnVuY3Rpb24gd2l0aGluIGEgc2FmZXR5IHdpbmRvdy4gVXNlIHRoaXMgZm9yIHRoZSB0
b3AgbGV2ZWwKKyAgICogbWV0aG9kcyB0aGF0IHJlc3VsdCBpbiBsYXJnZSBhbW91bnRzIG9mIGNv
bXB1dGF0aW9uL211dGF0aW9ucyB0aGF0IHdvdWxkCisgICAqIG5lZWQgdG8gYmUgc2FmZXR5IGNo
ZWNrZWQuIFRoZSBvcHRpb25hbCBhcmd1bWVudHMgaGVscHMgcHJldmVudCB0aGUgbmVlZAorICAg
KiB0byBiaW5kIGluIG1hbnkgY2FzZXMuCisgICAqCisgICAqIEBwYXJhbSB7ZnVuY3Rpb259IG1l
dGhvZCBNZW1iZXIgb2Ygc2NvcGUgdG8gY2FsbC4KKyAgICogQHBhcmFtIHtPYmplY3R9IHNjb3Bl
IFNjb3BlIHRvIGludm9rZSBmcm9tLgorICAgKiBAcGFyYW0ge09iamVjdD89fSBhIEFyZ3VtZW50
IHRvIHBhc3MgdG8gdGhlIG1ldGhvZC4KKyAgICogQHBhcmFtIHtPYmplY3Q/PX0gYiBBcmd1bWVu
dCB0byBwYXNzIHRvIHRoZSBtZXRob2QuCisgICAqIEBwYXJhbSB7T2JqZWN0Pz19IGMgQXJndW1l
bnQgdG8gcGFzcyB0byB0aGUgbWV0aG9kLgorICAgKiBAcGFyYW0ge09iamVjdD89fSBkIEFyZ3Vt
ZW50IHRvIHBhc3MgdG8gdGhlIG1ldGhvZC4KKyAgICogQHBhcmFtIHtPYmplY3Q/PX0gZSBBcmd1
bWVudCB0byBwYXNzIHRvIHRoZSBtZXRob2QuCisgICAqIEBwYXJhbSB7T2JqZWN0Pz19IGYgQXJn
dW1lbnQgdG8gcGFzcyB0byB0aGUgbWV0aG9kLgorICAgKgorICAgKiBAcmV0dXJuIHsqfSBSZXR1
cm4gdmFsdWUgZnJvbSBgbWV0aG9kYC4KKyAgICovCisgIHBlcmZvcm06IGZ1bmN0aW9uIChtZXRo
b2QsIHNjb3BlLCBhLCBiLCBjLCBkLCBlLCBmKSB7CisgICAgISF0aGlzLmlzSW5UcmFuc2FjdGlv
bigpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAn
VHJhbnNhY3Rpb24ucGVyZm9ybSguLi4pOiBDYW5ub3QgaW5pdGlhbGl6ZSBhIHRyYW5zYWN0aW9u
IHdoZW4gdGhlcmUgaXMgYWxyZWFkeSBhbiBvdXRzdGFuZGluZyB0cmFuc2FjdGlvbi4nKSA6IF9w
cm9kSW52YXJpYW50KCcyNycpIDogdm9pZCAwOworICAgIHZhciBlcnJvclRocm93bjsKKyAgICB2
YXIgcmV0OworICAgIHRyeSB7CisgICAgICB0aGlzLl9pc0luVHJhbnNhY3Rpb24gPSB0cnVlOwor
ICAgICAgLy8gQ2F0Y2hpbmcgZXJyb3JzIG1ha2VzIGRlYnVnZ2luZyBtb3JlIGRpZmZpY3VsdCwg
c28gd2Ugc3RhcnQgd2l0aAorICAgICAgLy8gZXJyb3JUaHJvd24gc2V0IHRvIHRydWUgYmVmb3Jl
IHNldHRpbmcgaXQgdG8gZmFsc2UgYWZ0ZXIgY2FsbGluZworICAgICAgLy8gY2xvc2UgLS0gaWYg
aXQncyBzdGlsbCBzZXQgdG8gdHJ1ZSBpbiB0aGUgZmluYWxseSBibG9jaywgaXQgbWVhbnMKKyAg
ICAgIC8vIG9uZSBvZiB0aGVzZSBjYWxscyB0aHJldy4KKyAgICAgIGVycm9yVGhyb3duID0gdHJ1
ZTsKKyAgICAgIHRoaXMuaW5pdGlhbGl6ZUFsbCgwKTsKKyAgICAgIHJldCA9IG1ldGhvZC5jYWxs
KHNjb3BlLCBhLCBiLCBjLCBkLCBlLCBmKTsKKyAgICAgIGVycm9yVGhyb3duID0gZmFsc2U7Cisg
ICAgfSBmaW5hbGx5IHsKKyAgICAgIHRyeSB7CisgICAgICAgIGlmIChlcnJvclRocm93bikgewor
ICAgICAgICAgIC8vIElmIGBtZXRob2RgIHRocm93cywgcHJlZmVyIHRvIHNob3cgdGhhdCBzdGFj
ayB0cmFjZSBvdmVyIGFueSB0aHJvd24KKyAgICAgICAgICAvLyBieSBpbnZva2luZyBgY2xvc2VB
bGxgLgorICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICB0aGlzLmNsb3NlQWxsKDApOworICAg
ICAgICAgIH0gY2F0Y2ggKGVycikge30KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAvLyBT
aW5jZSBgbWV0aG9kYCBkaWRuJ3QgdGhyb3csIHdlIGRvbid0IHdhbnQgdG8gc2lsZW5jZSB0aGUg
ZXhjZXB0aW9uCisgICAgICAgICAgLy8gaGVyZS4KKyAgICAgICAgICB0aGlzLmNsb3NlQWxsKDAp
OworICAgICAgICB9CisgICAgICB9IGZpbmFsbHkgeworICAgICAgICB0aGlzLl9pc0luVHJhbnNh
Y3Rpb24gPSBmYWxzZTsKKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJldDsKKyAgfSwKKwor
ICBpbml0aWFsaXplQWxsOiBmdW5jdGlvbiAoc3RhcnRJbmRleCkgeworICAgIHZhciB0cmFuc2Fj
dGlvbldyYXBwZXJzID0gdGhpcy50cmFuc2FjdGlvbldyYXBwZXJzOworICAgIGZvciAodmFyIGkg
PSBzdGFydEluZGV4OyBpIDwgdHJhbnNhY3Rpb25XcmFwcGVycy5sZW5ndGg7IGkrKykgeworICAg
ICAgdmFyIHdyYXBwZXIgPSB0cmFuc2FjdGlvbldyYXBwZXJzW2ldOworICAgICAgdHJ5IHsKKyAg
ICAgICAgLy8gQ2F0Y2hpbmcgZXJyb3JzIG1ha2VzIGRlYnVnZ2luZyBtb3JlIGRpZmZpY3VsdCwg
c28gd2Ugc3RhcnQgd2l0aCB0aGUKKyAgICAgICAgLy8gT0JTRVJWRURfRVJST1Igc3RhdGUgYmVm
b3JlIG92ZXJ3cml0aW5nIGl0IHdpdGggdGhlIHJlYWwgcmV0dXJuIHZhbHVlCisgICAgICAgIC8v
IG9mIGluaXRpYWxpemUgLS0gaWYgaXQncyBzdGlsbCBzZXQgdG8gT0JTRVJWRURfRVJST1IgaW4g
dGhlIGZpbmFsbHkKKyAgICAgICAgLy8gYmxvY2ssIGl0IG1lYW5zIHdyYXBwZXIuaW5pdGlhbGl6
ZSB0aHJldy4KKyAgICAgICAgdGhpcy53cmFwcGVySW5pdERhdGFbaV0gPSBPQlNFUlZFRF9FUlJP
UjsKKyAgICAgICAgdGhpcy53cmFwcGVySW5pdERhdGFbaV0gPSB3cmFwcGVyLmluaXRpYWxpemUg
PyB3cmFwcGVyLmluaXRpYWxpemUuY2FsbCh0aGlzKSA6IG51bGw7CisgICAgICB9IGZpbmFsbHkg
eworICAgICAgICBpZiAodGhpcy53cmFwcGVySW5pdERhdGFbaV0gPT09IE9CU0VSVkVEX0VSUk9S
KSB7CisgICAgICAgICAgLy8gVGhlIGluaXRpYWxpemVyIGZvciB3cmFwcGVyIGkgdGhyZXcgYW4g
ZXJyb3I7IGluaXRpYWxpemUgdGhlCisgICAgICAgICAgLy8gcmVtYWluaW5nIHdyYXBwZXJzIGJ1
dCBzaWxlbmNlIGFueSBleGNlcHRpb25zIGZyb20gdGhlbSB0byBlbnN1cmUKKyAgICAgICAgICAv
LyB0aGF0IHRoZSBmaXJzdCBlcnJvciBpcyB0aGUgb25lIHRvIGJ1YmJsZSB1cC4KKyAgICAgICAg
ICB0cnkgeworICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplQWxsKGkgKyAxKTsKKyAgICAgICAg
ICB9IGNhdGNoIChlcnIpIHt9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgIH0sCisKKyAg
LyoqCisgICAqIEludm9rZXMgZWFjaCBvZiBgdGhpcy50cmFuc2FjdGlvbldyYXBwZXJzLmNsb3Nl
W2ldYCBmdW5jdGlvbnMsIHBhc3NpbmcgaW50bworICAgKiB0aGVtIHRoZSByZXNwZWN0aXZlIHJl
dHVybiB2YWx1ZXMgb2YgYHRoaXMudHJhbnNhY3Rpb25XcmFwcGVycy5pbml0W2ldYAorICAgKiAo
YGNsb3NlYHJzIHRoYXQgY29ycmVzcG9uZCB0byBpbml0aWFsaXplcnMgdGhhdCBmYWlsZWQgd2ls
bCBub3QgYmUKKyAgICogaW52b2tlZCkuCisgICAqLworICBjbG9zZUFsbDogZnVuY3Rpb24gKHN0
YXJ0SW5kZXgpIHsKKyAgICAhdGhpcy5pc0luVHJhbnNhY3Rpb24oKSA/ICJkZXZlbG9wbWVudCIg
IT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1RyYW5zYWN0aW9uLmNsb3NlQWxs
KCk6IENhbm5vdCBjbG9zZSB0cmFuc2FjdGlvbiB3aGVuIG5vbmUgYXJlIG9wZW4uJykgOiBfcHJv
ZEludmFyaWFudCgnMjgnKSA6IHZvaWQgMDsKKyAgICB2YXIgdHJhbnNhY3Rpb25XcmFwcGVycyA9
IHRoaXMudHJhbnNhY3Rpb25XcmFwcGVyczsKKyAgICBmb3IgKHZhciBpID0gc3RhcnRJbmRleDsg
aSA8IHRyYW5zYWN0aW9uV3JhcHBlcnMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB3cmFwcGVy
ID0gdHJhbnNhY3Rpb25XcmFwcGVyc1tpXTsKKyAgICAgIHZhciBpbml0RGF0YSA9IHRoaXMud3Jh
cHBlckluaXREYXRhW2ldOworICAgICAgdmFyIGVycm9yVGhyb3duOworICAgICAgdHJ5IHsKKyAg
ICAgICAgLy8gQ2F0Y2hpbmcgZXJyb3JzIG1ha2VzIGRlYnVnZ2luZyBtb3JlIGRpZmZpY3VsdCwg
c28gd2Ugc3RhcnQgd2l0aAorICAgICAgICAvLyBlcnJvclRocm93biBzZXQgdG8gdHJ1ZSBiZWZv
cmUgc2V0dGluZyBpdCB0byBmYWxzZSBhZnRlciBjYWxsaW5nCisgICAgICAgIC8vIGNsb3NlIC0t
IGlmIGl0J3Mgc3RpbGwgc2V0IHRvIHRydWUgaW4gdGhlIGZpbmFsbHkgYmxvY2ssIGl0IG1lYW5z
CisgICAgICAgIC8vIHdyYXBwZXIuY2xvc2UgdGhyZXcuCisgICAgICAgIGVycm9yVGhyb3duID0g
dHJ1ZTsKKyAgICAgICAgaWYgKGluaXREYXRhICE9PSBPQlNFUlZFRF9FUlJPUiAmJiB3cmFwcGVy
LmNsb3NlKSB7CisgICAgICAgICAgd3JhcHBlci5jbG9zZS5jYWxsKHRoaXMsIGluaXREYXRhKTsK
KyAgICAgICAgfQorICAgICAgICBlcnJvclRocm93biA9IGZhbHNlOworICAgICAgfSBmaW5hbGx5
IHsKKyAgICAgICAgaWYgKGVycm9yVGhyb3duKSB7CisgICAgICAgICAgLy8gVGhlIGNsb3NlciBm
b3Igd3JhcHBlciBpIHRocmV3IGFuIGVycm9yOyBjbG9zZSB0aGUgcmVtYWluaW5nCisgICAgICAg
ICAgLy8gd3JhcHBlcnMgYnV0IHNpbGVuY2UgYW55IGV4Y2VwdGlvbnMgZnJvbSB0aGVtIHRvIGVu
c3VyZSB0aGF0IHRoZQorICAgICAgICAgIC8vIGZpcnN0IGVycm9yIGlzIHRoZSBvbmUgdG8gYnVi
YmxlIHVwLgorICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICB0aGlzLmNsb3NlQWxsKGkgKyAx
KTsKKyAgICAgICAgICB9IGNhdGNoIChlKSB7fQorICAgICAgICB9CisgICAgICB9CisgICAgfQor
ICAgIHRoaXMud3JhcHBlckluaXREYXRhLmxlbmd0aCA9IDA7CisgIH0KK307CisKK21vZHVsZS5l
eHBvcnRzID0gVHJhbnNhY3Rpb25JbXBsOworfSx7IjExNiI6MTE2LCIxNDAiOjE0MH1dLDk0Oltm
dW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMt
cHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
VGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2Ug
Zm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRo
aXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMg
Y2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Lgor
ICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBWaWV3cG9ydE1ldHJpY3MgPSB7CisKKyAg
Y3VycmVudFNjcm9sbExlZnQ6IDAsCisKKyAgY3VycmVudFNjcm9sbFRvcDogMCwKKworICByZWZy
ZXNoU2Nyb2xsVmFsdWVzOiBmdW5jdGlvbiAoc2Nyb2xsUG9zaXRpb24pIHsKKyAgICBWaWV3cG9y
dE1ldHJpY3MuY3VycmVudFNjcm9sbExlZnQgPSBzY3JvbGxQb3NpdGlvbi54OworICAgIFZpZXdw
b3J0TWV0cmljcy5jdXJyZW50U2Nyb2xsVG9wID0gc2Nyb2xsUG9zaXRpb24ueTsKKyAgfQorCit9
OworCittb2R1bGUuZXhwb3J0cyA9IFZpZXdwb3J0TWV0cmljczsKK30se31dLDk1OltmdW5jdGlv
bihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTQtcHJlc2Vu
dCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBz
b3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQg
aW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291
cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJl
IGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAq
IAorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9wcm9kSW52YXJpYW50ID0gX2RlcmVxXygx
MTYpOworCit2YXIgaW52YXJpYW50ID0gX2RlcmVxXygxNDApOworCisvKioKKyAqIEFjY3VtdWxh
dGVzIGl0ZW1zIHRoYXQgbXVzdCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQgaW50byB0aGUgZmly
c3Qgb25lLiBUaGlzCisgKiBpcyB1c2VkIHRvIGNvbnNlcnZlIG1lbW9yeSBieSBhdm9pZGluZyBh
cnJheSBhbGxvY2F0aW9ucywgYW5kIHRodXMgc2FjcmlmaWNlcworICogQVBJIGNsZWFubmVzcy4g
U2luY2UgYGN1cnJlbnRgIGNhbiBiZSBudWxsIGJlZm9yZSBiZWluZyBwYXNzZWQgaW4gYW5kIG5v
dAorICogbnVsbCBhZnRlciB0aGlzIGZ1bmN0aW9uLCBtYWtlIHN1cmUgdG8gYXNzaWduIGl0IGJh
Y2sgdG8gYGN1cnJlbnRgOgorICoKKyAqIGBhID0gYWNjdW11bGF0ZUludG8oYSwgYik7YAorICoK
KyAqIFRoaXMgQVBJIHNob3VsZCBiZSBzcGFyaW5nbHkgdXNlZC4gVHJ5IGBhY2N1bXVsYXRlYCBm
b3Igc29tZXRoaW5nIGNsZWFuZXIuCisgKgorICogQHJldHVybiB7KnxhcnJheTwqPn0gQW4gYWNj
dW11bGF0aW9uIG9mIGl0ZW1zLgorICovCisKK2Z1bmN0aW9uIGFjY3VtdWxhdGVJbnRvKGN1cnJl
bnQsIG5leHQpIHsKKyAgIShuZXh0ICE9IG51bGwpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1
Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnYWNjdW11bGF0ZUludG8oLi4uKTogQWNjdW11bGF0
ZWQgaXRlbXMgbXVzdCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQuJykgOiBfcHJvZEludmFyaWFu
dCgnMzAnKSA6IHZvaWQgMDsKKworICBpZiAoY3VycmVudCA9PSBudWxsKSB7CisgICAgcmV0dXJu
IG5leHQ7CisgIH0KKworICAvLyBCb3RoIGFyZSBub3QgZW1wdHkuIFdhcm5pbmc6IE5ldmVyIGNh
bGwgeC5jb25jYXQoeSkgd2hlbiB5b3UgYXJlIG5vdAorICAvLyBjZXJ0YWluIHRoYXQgeCBpcyBh
biBBcnJheSAoeCBjb3VsZCBiZSBhIHN0cmluZyB3aXRoIGNvbmNhdCBtZXRob2QpLgorICBpZiAo
QXJyYXkuaXNBcnJheShjdXJyZW50KSkgeworICAgIGlmIChBcnJheS5pc0FycmF5KG5leHQpKSB7
CisgICAgICBjdXJyZW50LnB1c2guYXBwbHkoY3VycmVudCwgbmV4dCk7CisgICAgICByZXR1cm4g
Y3VycmVudDsKKyAgICB9CisgICAgY3VycmVudC5wdXNoKG5leHQpOworICAgIHJldHVybiBjdXJy
ZW50OworICB9CisKKyAgaWYgKEFycmF5LmlzQXJyYXkobmV4dCkpIHsKKyAgICAvLyBBIGJpdCB0
b28gZGFuZ2Vyb3VzIHRvIG11dGF0ZSBgbmV4dGAuCisgICAgcmV0dXJuIFtjdXJyZW50XS5jb25j
YXQobmV4dCk7CisgIH0KKworICByZXR1cm4gW2N1cnJlbnQsIG5leHRdOworfQorCittb2R1bGUu
ZXhwb3J0cyA9IGFjY3VtdWxhdGVJbnRvOworfSx7IjExNiI6MTE2LCIxNDAiOjE0MH1dLDk2Oltm
dW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMt
cHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
VGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2Ug
Zm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRo
aXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMg
Y2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Lgor
ICoKKyAqIAorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIE1PRCA9IDY1NTIxOworCisvLyBh
ZGxlcjMyIGlzIG5vdCBjcnlwdG9ncmFwaGljYWxseSBzdHJvbmcsIGFuZCBpcyBvbmx5IHVzZWQg
dG8gc2FuaXR5IGNoZWNrIHRoYXQKKy8vIG1hcmt1cCBnZW5lcmF0ZWQgb24gdGhlIHNlcnZlciBt
YXRjaGVzIHRoZSBtYXJrdXAgZ2VuZXJhdGVkIG9uIHRoZSBjbGllbnQuCisvLyBUaGlzIGltcGxl
bWVudGF0aW9uIChhIG1vZGlmaWVkIHZlcnNpb24gb2YgdGhlIFNoZWV0SlMgdmVyc2lvbikgaGFz
IGJlZW4gb3B0aW1pemVkCisvLyBmb3Igb3VyIHVzZSBjYXNlLCBhdCB0aGUgZXhwZW5zZSBvZiBj
b25mb3JtaW5nIHRvIHRoZSBhZGxlcjMyIHNwZWNpZmljYXRpb24KKy8vIGZvciBub24tYXNjaWkg
aW5wdXRzLgorZnVuY3Rpb24gYWRsZXIzMihkYXRhKSB7CisgIHZhciBhID0gMTsKKyAgdmFyIGIg
PSAwOworICB2YXIgaSA9IDA7CisgIHZhciBsID0gZGF0YS5sZW5ndGg7CisgIHZhciBtID0gbCAm
IH4weDM7CisgIHdoaWxlIChpIDwgbSkgeworICAgIHZhciBuID0gTWF0aC5taW4oaSArIDQwOTYs
IG0pOworICAgIGZvciAoOyBpIDwgbjsgaSArPSA0KSB7CisgICAgICBiICs9IChhICs9IGRhdGEu
Y2hhckNvZGVBdChpKSkgKyAoYSArPSBkYXRhLmNoYXJDb2RlQXQoaSArIDEpKSArIChhICs9IGRh
dGEuY2hhckNvZGVBdChpICsgMikpICsgKGEgKz0gZGF0YS5jaGFyQ29kZUF0KGkgKyAzKSk7Cisg
ICAgfQorICAgIGEgJT0gTU9EOworICAgIGIgJT0gTU9EOworICB9CisgIGZvciAoOyBpIDwgbDsg
aSsrKSB7CisgICAgYiArPSBhICs9IGRhdGEuY2hhckNvZGVBdChpKTsKKyAgfQorICBhICU9IE1P
RDsKKyAgYiAlPSBNT0Q7CisgIHJldHVybiBhIHwgYiA8PCAxNjsKK30KKworbW9kdWxlLmV4cG9y
dHMgPSBhZGxlcjMyOworfSx7fV0sOTc6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMp
eworKGZ1bmN0aW9uIChwcm9jZXNzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwg
RmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3Vy
Y2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4g
dGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNl
IHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLwor
CisndXNlIHN0cmljdCc7CisKK3ZhciBfcHJvZEludmFyaWFudCA9IF9kZXJlcV8oMTE2KTsKKwor
dmFyIFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzID0gX2RlcmVxXyg2NSk7Cit2YXIgUmVhY3RQ
cm9wVHlwZXNTZWNyZXQgPSBfZGVyZXFfKDY2KTsKKwordmFyIGludmFyaWFudCA9IF9kZXJlcV8o
MTQwKTsKK3ZhciB3YXJuaW5nID0gX2RlcmVxXygxNDcpOworCit2YXIgUmVhY3RDb21wb25lbnRU
cmVlSG9vazsKKworaWYgKHR5cGVvZiBwcm9jZXNzICE9PSAndW5kZWZpbmVkJyAmJiBwcm9jZXNz
LmVudiAmJiAiZGV2ZWxvcG1lbnQiID09PSAndGVzdCcpIHsKKyAgLy8gVGVtcG9yYXJ5IGhhY2su
CisgIC8vIElubGluZSByZXF1aXJlcyBkb24ndCB3b3JrIHdlbGwgd2l0aCBKZXN0OgorICAvLyBo
dHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzcyNDAKKyAgLy8gUmVtb3Zl
IHRoZSBpbmxpbmUgcmVxdWlyZXMgd2hlbiB3ZSBkb24ndCBuZWVkIHRoZW0gYW55bW9yZToKKyAg
Ly8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L3B1bGwvNzE3OAorICBSZWFjdENv
bXBvbmVudFRyZWVIb29rID0gX2RlcmVxXygxMjIpOworfQorCit2YXIgbG9nZ2VkVHlwZUZhaWx1
cmVzID0ge307CisKKy8qKgorICogQXNzZXJ0IHRoYXQgdGhlIHZhbHVlcyBtYXRjaCB3aXRoIHRo
ZSB0eXBlIHNwZWNzLgorICogRXJyb3IgbWVzc2FnZXMgYXJlIG1lbW9yaXplZCBhbmQgd2lsbCBv
bmx5IGJlIHNob3duIG9uY2UuCisgKgorICogQHBhcmFtIHtvYmplY3R9IHR5cGVTcGVjcyBNYXAg
b2YgbmFtZSB0byBhIFJlYWN0UHJvcFR5cGUKKyAqIEBwYXJhbSB7b2JqZWN0fSB2YWx1ZXMgUnVu
dGltZSB2YWx1ZXMgdGhhdCBuZWVkIHRvIGJlIHR5cGUtY2hlY2tlZAorICogQHBhcmFtIHtzdHJp
bmd9IGxvY2F0aW9uIGUuZy4gInByb3AiLCAiY29udGV4dCIsICJjaGlsZCBjb250ZXh0IgorICog
QHBhcmFtIHtzdHJpbmd9IGNvbXBvbmVudE5hbWUgTmFtZSBvZiB0aGUgY29tcG9uZW50IGZvciBl
cnJvciBtZXNzYWdlcy4KKyAqIEBwYXJhbSB7P29iamVjdH0gZWxlbWVudCBUaGUgUmVhY3QgZWxl
bWVudCB0aGF0IGlzIGJlaW5nIHR5cGUtY2hlY2tlZAorICogQHBhcmFtIHs/bnVtYmVyfSBkZWJ1
Z0lEIFRoZSBSZWFjdCBjb21wb25lbnQgaW5zdGFuY2UgdGhhdCBpcyBiZWluZyB0eXBlLWNoZWNr
ZWQKKyAqIEBwcml2YXRlCisgKi8KK2Z1bmN0aW9uIGNoZWNrUmVhY3RUeXBlU3BlYyh0eXBlU3Bl
Y3MsIHZhbHVlcywgbG9jYXRpb24sIGNvbXBvbmVudE5hbWUsIGVsZW1lbnQsIGRlYnVnSUQpIHsK
KyAgZm9yICh2YXIgdHlwZVNwZWNOYW1lIGluIHR5cGVTcGVjcykgeworICAgIGlmICh0eXBlU3Bl
Y3MuaGFzT3duUHJvcGVydHkodHlwZVNwZWNOYW1lKSkgeworICAgICAgdmFyIGVycm9yOworICAg
ICAgLy8gUHJvcCB0eXBlIHZhbGlkYXRpb24gbWF5IHRocm93LiBJbiBjYXNlIHRoZXkgZG8sIHdl
IGRvbid0IHdhbnQgdG8KKyAgICAgIC8vIGZhaWwgdGhlIHJlbmRlciBwaGFzZSB3aGVyZSBpdCBk
aWRuJ3QgZmFpbCBiZWZvcmUuIFNvIHdlIGxvZyBpdC4KKyAgICAgIC8vIEFmdGVyIHRoZXNlIGhh
dmUgYmVlbiBjbGVhbmVkIHVwLCB3ZSdsbCBsZXQgdGhlbSB0aHJvdy4KKyAgICAgIHRyeSB7Cisg
ICAgICAgIC8vIFRoaXMgaXMgaW50ZW50aW9uYWxseSBhbiBpbnZhcmlhbnQgdGhhdCBnZXRzIGNh
dWdodC4gSXQncyB0aGUgc2FtZQorICAgICAgICAvLyBiZWhhdmlvciBhcyB3aXRob3V0IHRoaXMg
c3RhdGVtZW50IGV4Y2VwdCB3aXRoIGEgYmV0dGVyIG1lc3NhZ2UuCisgICAgICAgICEodHlwZW9m
IHR5cGVTcGVjc1t0eXBlU3BlY05hbWVdID09PSAnZnVuY3Rpb24nKSA/ICJkZXZlbG9wbWVudCIg
IT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJyVzOiAlcyB0eXBlIGAlc2AgaXMg
aW52YWxpZDsgaXQgbXVzdCBiZSBhIGZ1bmN0aW9uLCB1c3VhbGx5IGZyb20gUmVhY3QuUHJvcFR5
cGVzLicsIGNvbXBvbmVudE5hbWUgfHwgJ1JlYWN0IGNsYXNzJywgUmVhY3RQcm9wVHlwZUxvY2F0
aW9uTmFtZXNbbG9jYXRpb25dLCB0eXBlU3BlY05hbWUpIDogX3Byb2RJbnZhcmlhbnQoJzg0Jywg
Y29tcG9uZW50TmFtZSB8fCAnUmVhY3QgY2xhc3MnLCBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1l
c1tsb2NhdGlvbl0sIHR5cGVTcGVjTmFtZSkgOiB2b2lkIDA7CisgICAgICAgIGVycm9yID0gdHlw
ZVNwZWNzW3R5cGVTcGVjTmFtZV0odmFsdWVzLCB0eXBlU3BlY05hbWUsIGNvbXBvbmVudE5hbWUs
IGxvY2F0aW9uLCBudWxsLCBSZWFjdFByb3BUeXBlc1NlY3JldCk7CisgICAgICB9IGNhdGNoIChl
eCkgeworICAgICAgICBlcnJvciA9IGV4OworICAgICAgfQorICAgICAgImRldmVsb3BtZW50IiAh
PT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyghZXJyb3IgfHwgZXJyb3IgaW5zdGFuY2VvZiBFcnJv
ciwgJyVzOiB0eXBlIHNwZWNpZmljYXRpb24gb2YgJXMgYCVzYCBpcyBpbnZhbGlkOyB0aGUgdHlw
ZSBjaGVja2VyICcgKyAnZnVuY3Rpb24gbXVzdCByZXR1cm4gYG51bGxgIG9yIGFuIGBFcnJvcmAg
YnV0IHJldHVybmVkIGEgJXMuICcgKyAnWW91IG1heSBoYXZlIGZvcmdvdHRlbiB0byBwYXNzIGFu
IGFyZ3VtZW50IHRvIHRoZSB0eXBlIGNoZWNrZXIgJyArICdjcmVhdG9yIChhcnJheU9mLCBpbnN0
YW5jZU9mLCBvYmplY3RPZiwgb25lT2YsIG9uZU9mVHlwZSwgYW5kICcgKyAnc2hhcGUgYWxsIHJl
cXVpcmUgYW4gYXJndW1lbnQpLicsIGNvbXBvbmVudE5hbWUgfHwgJ1JlYWN0IGNsYXNzJywgUmVh
Y3RQcm9wVHlwZUxvY2F0aW9uTmFtZXNbbG9jYXRpb25dLCB0eXBlU3BlY05hbWUsIHR5cGVvZiBl
cnJvcikgOiB2b2lkIDA7CisgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvciAmJiAhKGVy
cm9yLm1lc3NhZ2UgaW4gbG9nZ2VkVHlwZUZhaWx1cmVzKSkgeworICAgICAgICAvLyBPbmx5IG1v
bml0b3IgdGhpcyBmYWlsdXJlIG9uY2UgYmVjYXVzZSB0aGVyZSB0ZW5kcyB0byBiZSBhIGxvdCBv
ZiB0aGUKKyAgICAgICAgLy8gc2FtZSBlcnJvci4KKyAgICAgICAgbG9nZ2VkVHlwZUZhaWx1cmVz
W2Vycm9yLm1lc3NhZ2VdID0gdHJ1ZTsKKworICAgICAgICB2YXIgY29tcG9uZW50U3RhY2tJbmZv
ID0gJyc7CisKKyAgICAgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgewor
ICAgICAgICAgIGlmICghUmVhY3RDb21wb25lbnRUcmVlSG9vaykgeworICAgICAgICAgICAgUmVh
Y3RDb21wb25lbnRUcmVlSG9vayA9IF9kZXJlcV8oMTIyKTsKKyAgICAgICAgICB9CisgICAgICAg
ICAgaWYgKGRlYnVnSUQgIT09IG51bGwpIHsKKyAgICAgICAgICAgIGNvbXBvbmVudFN0YWNrSW5m
byA9IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0U3RhY2tBZGRlbmR1bUJ5SUQoZGVidWdJRCk7
CisgICAgICAgICAgfSBlbHNlIGlmIChlbGVtZW50ICE9PSBudWxsKSB7CisgICAgICAgICAgICBj
b21wb25lbnRTdGFja0luZm8gPSBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldEN1cnJlbnRTdGFj
a0FkZGVuZHVtKGVsZW1lbnQpOworICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgICJk
ZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdGYWlsZWQgJXMg
dHlwZTogJXMlcycsIGxvY2F0aW9uLCBlcnJvci5tZXNzYWdlLCBjb21wb25lbnRTdGFja0luZm8p
IDogdm9pZCAwOworICAgICAgfQorICAgIH0KKyAgfQorfQorCittb2R1bGUuZXhwb3J0cyA9IGNo
ZWNrUmVhY3RUeXBlU3BlYzsKK30pLmNhbGwodGhpcyx1bmRlZmluZWQpCit9LHsiMTE2IjoxMTYs
IjEyMiI6MTIyLCIxNDAiOjE0MCwiMTQ3IjoxNDcsIjY1Ijo2NSwiNjYiOjY2fV0sOTg6W2Z1bmN0
aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBz
b3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgor
ICovCisKKy8qIGdsb2JhbHMgTVNBcHAgKi8KKworJ3VzZSBzdHJpY3QnOworCisvKioKKyAqIENy
ZWF0ZSBhIGZ1bmN0aW9uIHdoaWNoIGhhcyAndW5zYWZlJyBwcml2aWxlZ2VzIChyZXF1aXJlZCBi
eSB3aW5kb3dzOCBhcHBzKQorICovCisKK3ZhciBjcmVhdGVNaWNyb3NvZnRVbnNhZmVMb2NhbEZ1
bmN0aW9uID0gZnVuY3Rpb24gKGZ1bmMpIHsKKyAgaWYgKHR5cGVvZiBNU0FwcCAhPT0gJ3VuZGVm
aW5lZCcgJiYgTVNBcHAuZXhlY1Vuc2FmZUxvY2FsRnVuY3Rpb24pIHsKKyAgICByZXR1cm4gZnVu
Y3Rpb24gKGFyZzAsIGFyZzEsIGFyZzIsIGFyZzMpIHsKKyAgICAgIE1TQXBwLmV4ZWNVbnNhZmVM
b2NhbEZ1bmN0aW9uKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgcmV0dXJuIGZ1bmMoYXJnMCwgYXJn
MSwgYXJnMiwgYXJnMyk7CisgICAgICB9KTsKKyAgICB9OworICB9IGVsc2UgeworICAgIHJldHVy
biBmdW5jOworICB9Cit9OworCittb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZU1pY3Jvc29mdFVuc2Fm
ZUxvY2FsRnVuY3Rpb247Cit9LHt9XSw5OTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0
cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQg
dW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxl
IGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFs
IGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBm
aWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2
YXIgQ1NTUHJvcGVydHkgPSBfZGVyZXFfKDQpOwordmFyIHdhcm5pbmcgPSBfZGVyZXFfKDE0Nyk7
CisKK3ZhciBpc1VuaXRsZXNzTnVtYmVyID0gQ1NTUHJvcGVydHkuaXNVbml0bGVzc051bWJlcjsK
K3ZhciBzdHlsZVdhcm5pbmdzID0ge307CisKKy8qKgorICogQ29udmVydCBhIHZhbHVlIGludG8g
dGhlIHByb3BlciBjc3Mgd3JpdGFibGUgdmFsdWUuIFRoZSBzdHlsZSBuYW1lIGBuYW1lYAorICog
c2hvdWxkIGJlIGxvZ2ljYWwgKG5vIGh5cGhlbnMpLCBhcyBzcGVjaWZpZWQKKyAqIGluIGBDU1NQ
cm9wZXJ0eS5pc1VuaXRsZXNzTnVtYmVyYC4KKyAqCisgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBD
U1MgcHJvcGVydHkgbmFtZSBzdWNoIGFzIGB0b3BNYXJnaW5gLgorICogQHBhcmFtIHsqfSB2YWx1
ZSBDU1MgcHJvcGVydHkgdmFsdWUgc3VjaCBhcyBgMTBweGAuCisgKiBAcGFyYW0ge1JlYWN0RE9N
Q29tcG9uZW50fSBjb21wb25lbnQKKyAqIEByZXR1cm4ge3N0cmluZ30gTm9ybWFsaXplZCBzdHls
ZSB2YWx1ZSB3aXRoIGRpbWVuc2lvbnMgYXBwbGllZC4KKyAqLworZnVuY3Rpb24gZGFuZ2Vyb3Vz
U3R5bGVWYWx1ZShuYW1lLCB2YWx1ZSwgY29tcG9uZW50KSB7CisgIC8vIE5vdGUgdGhhdCB3ZSd2
ZSByZW1vdmVkIGVzY2FwZVRleHRGb3JCcm93c2VyKCkgY2FsbHMgaGVyZSBzaW5jZSB0aGUKKyAg
Ly8gd2hvbGUgc3RyaW5nIHdpbGwgYmUgZXNjYXBlZCB3aGVuIHRoZSBhdHRyaWJ1dGUgaXMgaW5q
ZWN0ZWQgaW50bworICAvLyB0aGUgbWFya3VwLiBJZiB5b3UgcHJvdmlkZSB1bnNhZmUgdXNlciBk
YXRhIGhlcmUgdGhleSBjYW4gaW5qZWN0CisgIC8vIGFyYml0cmFyeSBDU1Mgd2hpY2ggbWF5IGJl
IHByb2JsZW1hdGljIChJIGNvdWxkbid0IHJlcHJvIHRoaXMpOgorICAvLyBodHRwczovL3d3dy5v
d2FzcC5vcmcvaW5kZXgucGhwL1hTU19GaWx0ZXJfRXZhc2lvbl9DaGVhdF9TaGVldAorICAvLyBo
dHRwOi8vd3d3LnRoZXNwYW5uZXIuY28udWsvMjAwNy8xMS8yNi91bHRpbWF0ZS14c3MtY3NzLWlu
amVjdGlvbi8KKyAgLy8gVGhpcyBpcyBub3QgYW4gWFNTIGhvbGUgYnV0IGluc3RlYWQgYSBwb3Rl
bnRpYWwgQ1NTIGluamVjdGlvbiBpc3N1ZQorICAvLyB3aGljaCBoYXMgbGVhZCB0byBhIGdyZWF0
ZXIgZGlzY3Vzc2lvbiBhYm91dCBob3cgd2UncmUgZ29pbmcgdG8KKyAgLy8gdHJ1c3QgVVJMcyBt
b3ZpbmcgZm9yd2FyZC4gU2VlICMyMTE1OTAxCisKKyAgdmFyIGlzRW1wdHkgPSB2YWx1ZSA9PSBu
dWxsIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nIHx8IHZhbHVlID09PSAnJzsKKyAgaWYg
KGlzRW1wdHkpIHsKKyAgICByZXR1cm4gJyc7CisgIH0KKworICB2YXIgaXNOb25OdW1lcmljID0g
aXNOYU4odmFsdWUpOworICBpZiAoaXNOb25OdW1lcmljIHx8IHZhbHVlID09PSAwIHx8IGlzVW5p
dGxlc3NOdW1iZXIuaGFzT3duUHJvcGVydHkobmFtZSkgJiYgaXNVbml0bGVzc051bWJlcltuYW1l
XSkgeworICAgIHJldHVybiAnJyArIHZhbHVlOyAvLyBjYXN0IHRvIHN0cmluZworICB9CisKKyAg
aWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHsKKyAgICBpZiAoImRldmVsb3BtZW50IiAh
PT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAvLyBBbGxvdyAnMCcgdG8gcGFzcyB0aHJvdWdoIHdp
dGhvdXQgd2FybmluZy4gMCBpcyBhbHJlYWR5IHNwZWNpYWwgYW5kCisgICAgICAvLyBkb2Vzbid0
IHJlcXVpcmUgdW5pdHMsIHNvIHdlIGRvbid0IG5lZWQgdG8gd2FybiBhYm91dCBpdC4KKyAgICAg
IGlmIChjb21wb25lbnQgJiYgdmFsdWUgIT09ICcwJykgeworICAgICAgICB2YXIgb3duZXIgPSBj
b21wb25lbnQuX2N1cnJlbnRFbGVtZW50Ll9vd25lcjsKKyAgICAgICAgdmFyIG93bmVyTmFtZSA9
IG93bmVyID8gb3duZXIuZ2V0TmFtZSgpIDogbnVsbDsKKyAgICAgICAgaWYgKG93bmVyTmFtZSAm
JiAhc3R5bGVXYXJuaW5nc1tvd25lck5hbWVdKSB7CisgICAgICAgICAgc3R5bGVXYXJuaW5nc1tv
d25lck5hbWVdID0ge307CisgICAgICAgIH0KKyAgICAgICAgdmFyIHdhcm5lZCA9IGZhbHNlOwor
ICAgICAgICBpZiAob3duZXJOYW1lKSB7CisgICAgICAgICAgdmFyIHdhcm5pbmdzID0gc3R5bGVX
YXJuaW5nc1tvd25lck5hbWVdOworICAgICAgICAgIHdhcm5lZCA9IHdhcm5pbmdzW25hbWVdOwor
ICAgICAgICAgIGlmICghd2FybmVkKSB7CisgICAgICAgICAgICB3YXJuaW5nc1tuYW1lXSA9IHRy
dWU7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmICghd2FybmVkKSB7CisgICAg
ICAgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ2Eg
YCVzYCB0YWcgKG93bmVyOiBgJXNgKSB3YXMgcGFzc2VkIGEgbnVtZXJpYyBzdHJpbmcgdmFsdWUg
JyArICdmb3IgQ1NTIHByb3BlcnR5IGAlc2AgKHZhbHVlOiBgJXNgKSB3aGljaCB3aWxsIGJlIHRy
ZWF0ZWQgJyArICdhcyBhIHVuaXRsZXNzIG51bWJlciBpbiBhIGZ1dHVyZSB2ZXJzaW9uIG9mIFJl
YWN0LicsIGNvbXBvbmVudC5fY3VycmVudEVsZW1lbnQudHlwZSwgb3duZXJOYW1lIHx8ICd1bmtu
b3duJywgbmFtZSwgdmFsdWUpIDogdm9pZCAwOworICAgICAgICB9CisgICAgICB9CisgICAgfQor
ICAgIHZhbHVlID0gdmFsdWUudHJpbSgpOworICB9CisgIHJldHVybiB2YWx1ZSArICdweCc7Cit9
CisKK21vZHVsZS5leHBvcnRzID0gZGFuZ2Vyb3VzU3R5bGVWYWx1ZTsKK30seyIxNDciOjE0Nywi
NCI6NH1dLDEwMDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENv
cHlyaWdodCAyMDE2LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1z
dHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRp
cmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBw
YXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1l
IGRpcmVjdG9yeS4KKyAqCisgKiBCYXNlZCBvbiB0aGUgZXNjYXBlLWh0bWwgbGlicmFyeSwgd2hp
Y2ggaXMgdXNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UgYmVsb3c6CisgKgorICogQ29weXJpZ2h0
IChjKSAyMDEyLTIwMTMgVEogSG9sb3dheWNodWsKKyAqIENvcHlyaWdodCAoYykgMjAxNSBBbmRy
ZWFzIEx1YmJlCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgVGlhbmNoZW5nICJUaW1vdGh5IiBHdQor
ICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBh
bnkgcGVyc29uIG9idGFpbmluZworICogYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29j
aWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCisgKiAnU29mdHdhcmUnKSwgdG8gZGVhbCBp
biB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCisgKiB3aXRob3V0
IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxp
c2gsCisgKiBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhl
IFNvZnR3YXJlLCBhbmQgdG8KKyAqIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJl
IGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bworICogdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1p
c3Npb24gbm90aWNlIHNoYWxsIGJlCisgKiBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0
YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMg
UFJPVklERUQgJ0FTIElTJywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElF
UyBPRgorICogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBTkQgTk9OSU5GUklOR0VNRU5ULgorICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMg
T1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIENMQUlNLCBEQU1BR0VT
IE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsCisg
KiBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElP
TiBXSVRIIFRIRQorICogU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBU
SEUgU09GVFdBUkUuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKworLy8gY29kZSBjb3BpZWQg
YW5kIG1vZGlmaWVkIGZyb20gZXNjYXBlLWh0bWwKKy8qKgorICogTW9kdWxlIHZhcmlhYmxlcy4K
KyAqIEBwcml2YXRlCisgKi8KKwordmFyIG1hdGNoSHRtbFJlZ0V4cCA9IC9bIicmPD5dLzsKKwor
LyoqCisgKiBFc2NhcGUgc3BlY2lhbCBjaGFyYWN0ZXJzIGluIHRoZSBnaXZlbiBzdHJpbmcgb2Yg
aHRtbC4KKyAqCisgKiBAcGFyYW0gIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGVzY2Fw
ZSBmb3IgaW5zZXJ0aW5nIGludG8gSFRNTAorICogQHJldHVybiB7c3RyaW5nfQorICogQHB1Ymxp
YworICovCisKK2Z1bmN0aW9uIGVzY2FwZUh0bWwoc3RyaW5nKSB7CisgIHZhciBzdHIgPSAnJyAr
IHN0cmluZzsKKyAgdmFyIG1hdGNoID0gbWF0Y2hIdG1sUmVnRXhwLmV4ZWMoc3RyKTsKKworICBp
ZiAoIW1hdGNoKSB7CisgICAgcmV0dXJuIHN0cjsKKyAgfQorCisgIHZhciBlc2NhcGU7CisgIHZh
ciBodG1sID0gJyc7CisgIHZhciBpbmRleCA9IDA7CisgIHZhciBsYXN0SW5kZXggPSAwOworCisg
IGZvciAoaW5kZXggPSBtYXRjaC5pbmRleDsgaW5kZXggPCBzdHIubGVuZ3RoOyBpbmRleCsrKSB7
CisgICAgc3dpdGNoIChzdHIuY2hhckNvZGVBdChpbmRleCkpIHsKKyAgICAgIGNhc2UgMzQ6Cisg
ICAgICAgIC8vICIKKyAgICAgICAgZXNjYXBlID0gJyZxdW90Oyc7CisgICAgICAgIGJyZWFrOwor
ICAgICAgY2FzZSAzODoKKyAgICAgICAgLy8gJgorICAgICAgICBlc2NhcGUgPSAnJmFtcDsnOwor
ICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMzk6CisgICAgICAgIC8vICcKKyAgICAgICAgZXNj
YXBlID0gJyYjeDI3Oyc7IC8vIG1vZGlmaWVkIGZyb20gZXNjYXBlLWh0bWw7IHVzZWQgdG8gYmUg
JyYjMzknCisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSA2MDoKKyAgICAgICAgLy8gPAorICAg
ICAgICBlc2NhcGUgPSAnJmx0Oyc7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSA2MjoKKyAg
ICAgICAgLy8gPgorICAgICAgICBlc2NhcGUgPSAnJmd0Oyc7CisgICAgICAgIGJyZWFrOworICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgY29udGludWU7CisgICAgfQorCisgICAgaWYgKGxhc3RJbmRl
eCAhPT0gaW5kZXgpIHsKKyAgICAgIGh0bWwgKz0gc3RyLnN1YnN0cmluZyhsYXN0SW5kZXgsIGlu
ZGV4KTsKKyAgICB9CisKKyAgICBsYXN0SW5kZXggPSBpbmRleCArIDE7CisgICAgaHRtbCArPSBl
c2NhcGU7CisgIH0KKworICByZXR1cm4gbGFzdEluZGV4ICE9PSBpbmRleCA/IGh0bWwgKyBzdHIu
c3Vic3RyaW5nKGxhc3RJbmRleCwgaW5kZXgpIDogaHRtbDsKK30KKy8vIGVuZCBjb2RlIGNvcGll
ZCBhbmQgbW9kaWZpZWQgZnJvbSBlc2NhcGUtaHRtbAorCisKKy8qKgorICogRXNjYXBlcyB0ZXh0
IHRvIHByZXZlbnQgc2NyaXB0aW5nIGF0dGFja3MuCisgKgorICogQHBhcmFtIHsqfSB0ZXh0IFRl
eHQgdmFsdWUgdG8gZXNjYXBlLgorICogQHJldHVybiB7c3RyaW5nfSBBbiBlc2NhcGVkIHN0cmlu
Zy4KKyAqLworZnVuY3Rpb24gZXNjYXBlVGV4dENvbnRlbnRGb3JCcm93c2VyKHRleHQpIHsKKyAg
aWYgKHR5cGVvZiB0ZXh0ID09PSAnYm9vbGVhbicgfHwgdHlwZW9mIHRleHQgPT09ICdudW1iZXIn
KSB7CisgICAgLy8gdGhpcyBzaG9ydGNpcmN1aXQgaGVscHMgcGVyZiBmb3IgdHlwZXMgdGhhdCB3
ZSBrbm93IHdpbGwgbmV2ZXIgaGF2ZQorICAgIC8vIHNwZWNpYWwgY2hhcmFjdGVycywgZXNwZWNp
YWxseSBnaXZlbiB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgdXNlZCBvZnRlbgorICAgIC8vIGZvciBu
dW1lcmljIGRvbSBpZHMuCisgICAgcmV0dXJuICcnICsgdGV4dDsKKyAgfQorICByZXR1cm4gZXNj
YXBlSHRtbCh0ZXh0KTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBlc2NhcGVUZXh0Q29udGVudEZv
ckJyb3dzZXI7Cit9LHt9XSwxMDE6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpewor
KGZ1bmN0aW9uIChwcm9jZXNzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFj
ZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2Ug
Y29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhl
CisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIAorICov
CisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIEtleUVzY2FwZVV0aWxzID0gX2RlcmVxXygyMik7Cit2
YXIgdHJhdmVyc2VBbGxDaGlsZHJlbiA9IF9kZXJlcV8oMTIwKTsKK3ZhciB3YXJuaW5nID0gX2Rl
cmVxXygxNDcpOworCit2YXIgUmVhY3RDb21wb25lbnRUcmVlSG9vazsKKworaWYgKHR5cGVvZiBw
cm9jZXNzICE9PSAndW5kZWZpbmVkJyAmJiBwcm9jZXNzLmVudiAmJiAiZGV2ZWxvcG1lbnQiID09
PSAndGVzdCcpIHsKKyAgLy8gVGVtcG9yYXJ5IGhhY2suCisgIC8vIElubGluZSByZXF1aXJlcyBk
b24ndCB3b3JrIHdlbGwgd2l0aCBKZXN0OgorICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJv
b2svcmVhY3QvaXNzdWVzLzcyNDAKKyAgLy8gUmVtb3ZlIHRoZSBpbmxpbmUgcmVxdWlyZXMgd2hl
biB3ZSBkb24ndCBuZWVkIHRoZW0gYW55bW9yZToKKyAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2Zh
Y2Vib29rL3JlYWN0L3B1bGwvNzE3OAorICBSZWFjdENvbXBvbmVudFRyZWVIb29rID0gX2RlcmVx
XygxMjIpOworfQorCisvKioKKyAqIEBwYXJhbSB7ZnVuY3Rpb259IHRyYXZlcnNlQ29udGV4dCBD
b250ZXh0IHBhc3NlZCB0aHJvdWdoIHRyYXZlcnNhbC4KKyAqIEBwYXJhbSB7P1JlYWN0Q29tcG9u
ZW50fSBjaGlsZCBSZWFjdCBjaGlsZCBjb21wb25lbnQuCisgKiBAcGFyYW0geyFzdHJpbmd9IG5h
bWUgU3RyaW5nIG5hbWUgb2Yga2V5IHBhdGggdG8gY2hpbGQuCisgKiBAcGFyYW0ge251bWJlcj19
IHNlbGZEZWJ1Z0lEIE9wdGlvbmFsIGRlYnVnSUQgb2YgdGhlIGN1cnJlbnQgaW50ZXJuYWwgaW5z
dGFuY2UuCisgKi8KK2Z1bmN0aW9uIGZsYXR0ZW5TaW5nbGVDaGlsZEludG9Db250ZXh0KHRyYXZl
cnNlQ29udGV4dCwgY2hpbGQsIG5hbWUsIHNlbGZEZWJ1Z0lEKSB7CisgIC8vIFdlIGZvdW5kIGEg
Y29tcG9uZW50IGluc3RhbmNlLgorICBpZiAodHJhdmVyc2VDb250ZXh0ICYmIHR5cGVvZiB0cmF2
ZXJzZUNvbnRleHQgPT09ICdvYmplY3QnKSB7CisgICAgdmFyIHJlc3VsdCA9IHRyYXZlcnNlQ29u
dGV4dDsKKyAgICB2YXIga2V5VW5pcXVlID0gcmVzdWx0W25hbWVdID09PSB1bmRlZmluZWQ7Cisg
ICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgaWYgKCFSZWFj
dENvbXBvbmVudFRyZWVIb29rKSB7CisgICAgICAgIFJlYWN0Q29tcG9uZW50VHJlZUhvb2sgPSBf
ZGVyZXFfKDEyMik7CisgICAgICB9CisgICAgICBpZiAoIWtleVVuaXF1ZSkgeworICAgICAgICAi
ZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnZmxhdHRlbkNo
aWxkcmVuKC4uLik6IEVuY291bnRlcmVkIHR3byBjaGlsZHJlbiB3aXRoIHRoZSBzYW1lIGtleSwg
JyArICdgJXNgLiBDaGlsZCBrZXlzIG11c3QgYmUgdW5pcXVlOyB3aGVuIHR3byBjaGlsZHJlbiBz
aGFyZSBhIGtleSwgb25seSAnICsgJ3RoZSBmaXJzdCBjaGlsZCB3aWxsIGJlIHVzZWQuJXMnLCBL
ZXlFc2NhcGVVdGlscy51bmVzY2FwZShuYW1lKSwgUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRT
dGFja0FkZGVuZHVtQnlJRChzZWxmRGVidWdJRCkpIDogdm9pZCAwOworICAgICAgfQorICAgIH0K
KyAgICBpZiAoa2V5VW5pcXVlICYmIGNoaWxkICE9IG51bGwpIHsKKyAgICAgIHJlc3VsdFtuYW1l
XSA9IGNoaWxkOworICAgIH0KKyAgfQorfQorCisvKioKKyAqIEZsYXR0ZW5zIGNoaWxkcmVuIHRo
YXQgYXJlIHR5cGljYWxseSBzcGVjaWZpZWQgYXMgYHByb3BzLmNoaWxkcmVuYC4gQW55IG51bGwK
KyAqIGNoaWxkcmVuIHdpbGwgbm90IGJlIGluY2x1ZGVkIGluIHRoZSByZXN1bHRpbmcgb2JqZWN0
LgorICogQHJldHVybiB7IW9iamVjdH0gZmxhdHRlbmVkIGNoaWxkcmVuIGtleWVkIGJ5IG5hbWUu
CisgKi8KK2Z1bmN0aW9uIGZsYXR0ZW5DaGlsZHJlbihjaGlsZHJlbiwgc2VsZkRlYnVnSUQpIHsK
KyAgaWYgKGNoaWxkcmVuID09IG51bGwpIHsKKyAgICByZXR1cm4gY2hpbGRyZW47CisgIH0KKyAg
dmFyIHJlc3VsdCA9IHt9OworCisgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicp
IHsKKyAgICB0cmF2ZXJzZUFsbENoaWxkcmVuKGNoaWxkcmVuLCBmdW5jdGlvbiAodHJhdmVyc2VD
b250ZXh0LCBjaGlsZCwgbmFtZSkgeworICAgICAgcmV0dXJuIGZsYXR0ZW5TaW5nbGVDaGlsZElu
dG9Db250ZXh0KHRyYXZlcnNlQ29udGV4dCwgY2hpbGQsIG5hbWUsIHNlbGZEZWJ1Z0lEKTsKKyAg
ICB9LCByZXN1bHQpOworICB9IGVsc2UgeworICAgIHRyYXZlcnNlQWxsQ2hpbGRyZW4oY2hpbGRy
ZW4sIGZsYXR0ZW5TaW5nbGVDaGlsZEludG9Db250ZXh0LCByZXN1bHQpOworICB9CisgIHJldHVy
biByZXN1bHQ7Cit9CisKK21vZHVsZS5leHBvcnRzID0gZmxhdHRlbkNoaWxkcmVuOworfSkuY2Fs
bCh0aGlzLHVuZGVmaW5lZCkKK30seyIxMjAiOjEyMCwiMTIyIjoxMjIsIjE0NyI6MTQ3LCIyMiI6
MjJ9XSwxMDI6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5
cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5
bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJl
Y3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0
ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuCisgKgorICogCisgKi8KKworJ3VzZSBzdHJpY3QnOworCisvKioKKyAqIEBwYXJh
bSB7YXJyYXl9IGFyciBhbiAiYWNjdW11bGF0aW9uIiBvZiBpdGVtcyB3aGljaCBpcyBlaXRoZXIg
YW4gQXJyYXkgb3IKKyAqIGEgc2luZ2xlIGl0ZW0uIFVzZWZ1bCB3aGVuIHBhaXJlZCB3aXRoIHRo
ZSBgYWNjdW11bGF0ZWAgbW9kdWxlLiBUaGlzIGlzIGEKKyAqIHNpbXBsZSB1dGlsaXR5IHRoYXQg
YWxsb3dzIHVzIHRvIHJlYXNvbiBhYm91dCBhIGNvbGxlY3Rpb24gb2YgaXRlbXMsIGJ1dAorICog
aGFuZGxpbmcgdGhlIGNhc2Ugd2hlbiB0aGVyZSBpcyBleGFjdGx5IG9uZSBpdGVtIChhbmQgd2Ug
ZG8gbm90IG5lZWQgdG8KKyAqIGFsbG9jYXRlIGFuIGFycmF5KS4KKyAqLworCitmdW5jdGlvbiBm
b3JFYWNoQWNjdW11bGF0ZWQoYXJyLCBjYiwgc2NvcGUpIHsKKyAgaWYgKEFycmF5LmlzQXJyYXko
YXJyKSkgeworICAgIGFyci5mb3JFYWNoKGNiLCBzY29wZSk7CisgIH0gZWxzZSBpZiAoYXJyKSB7
CisgICAgY2IuY2FsbChzY29wZSwgYXJyKTsKKyAgfQorfQorCittb2R1bGUuZXhwb3J0cyA9IGZv
ckVhY2hBY2N1bXVsYXRlZDsKK30se31dLDEwMzpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhw
b3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisg
KiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5z
ZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBm
aWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlv
bmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5U
UyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOwor
CisvKioKKyAqIGBjaGFyQ29kZWAgcmVwcmVzZW50cyB0aGUgYWN0dWFsICJjaGFyYWN0ZXIgY29k
ZSIgYW5kIGlzIHNhZmUgdG8gdXNlIHdpdGgKKyAqIGBTdHJpbmcuZnJvbUNoYXJDb2RlYC4gQXMg
c3VjaCwgb25seSBrZXlzIHRoYXQgY29ycmVzcG9uZCB0byBwcmludGFibGUKKyAqIGNoYXJhY3Rl
cnMgcHJvZHVjZSBhIHZhbGlkIGBjaGFyQ29kZWAsIHRoZSBvbmx5IGV4Y2VwdGlvbiB0byB0aGlz
IGlzIEVudGVyLgorICogVGhlIFRhYi1rZXkgaXMgY29uc2lkZXJlZCBub24tcHJpbnRhYmxlIGFu
ZCBkb2VzIG5vdCBoYXZlIGEgYGNoYXJDb2RlYCwKKyAqIHByZXN1bWFibHkgYmVjYXVzZSBpdCBk
b2VzIG5vdCBwcm9kdWNlIGEgdGFiLWNoYXJhY3RlciBpbiBicm93c2Vycy4KKyAqCisgKiBAcGFy
YW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuCisgKiBAcmV0dXJu
IHtudW1iZXJ9IE5vcm1hbGl6ZWQgYGNoYXJDb2RlYCBwcm9wZXJ0eS4KKyAqLworCitmdW5jdGlv
biBnZXRFdmVudENoYXJDb2RlKG5hdGl2ZUV2ZW50KSB7CisgIHZhciBjaGFyQ29kZTsKKyAgdmFy
IGtleUNvZGUgPSBuYXRpdmVFdmVudC5rZXlDb2RlOworCisgIGlmICgnY2hhckNvZGUnIGluIG5h
dGl2ZUV2ZW50KSB7CisgICAgY2hhckNvZGUgPSBuYXRpdmVFdmVudC5jaGFyQ29kZTsKKworICAg
IC8vIEZGIGRvZXMgbm90IHNldCBgY2hhckNvZGVgIGZvciB0aGUgRW50ZXIta2V5LCBjaGVjayBh
Z2FpbnN0IGBrZXlDb2RlYC4KKyAgICBpZiAoY2hhckNvZGUgPT09IDAgJiYga2V5Q29kZSA9PT0g
MTMpIHsKKyAgICAgIGNoYXJDb2RlID0gMTM7CisgICAgfQorICB9IGVsc2UgeworICAgIC8vIElF
OCBkb2VzIG5vdCBpbXBsZW1lbnQgYGNoYXJDb2RlYCwgYnV0IGBrZXlDb2RlYCBoYXMgdGhlIGNv
cnJlY3QgdmFsdWUuCisgICAgY2hhckNvZGUgPSBrZXlDb2RlOworICB9CisKKyAgLy8gU29tZSBu
b24tcHJpbnRhYmxlIGtleXMgYXJlIHJlcG9ydGVkIGluIGBjaGFyQ29kZWAvYGtleUNvZGVgLCBk
aXNjYXJkIHRoZW0uCisgIC8vIE11c3Qgbm90IGRpc2NhcmQgdGhlIChub24tKXByaW50YWJsZSBF
bnRlci1rZXkuCisgIGlmIChjaGFyQ29kZSA+PSAzMiB8fCBjaGFyQ29kZSA9PT0gMTMpIHsKKyAg
ICByZXR1cm4gY2hhckNvZGU7CisgIH0KKworICByZXR1cm4gMDsKK30KKworbW9kdWxlLmV4cG9y
dHMgPSBnZXRFdmVudENoYXJDb2RlOworfSx7fV0sMTA0OltmdW5jdGlvbihfZGVyZXFfLG1vZHVs
ZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIElu
Yy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBs
aWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQ
QVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmlj
dCc7CisKK3ZhciBnZXRFdmVudENoYXJDb2RlID0gX2RlcmVxXygxMDMpOworCisvKioKKyAqIE5v
cm1hbGl6YXRpb24gb2YgZGVwcmVjYXRlZCBIVE1MNSBga2V5YCB2YWx1ZXMKKyAqIEBzZWUgaHR0
cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0tleWJvYXJkRXZl
bnQjS2V5X25hbWVzCisgKi8KK3ZhciBub3JtYWxpemVLZXkgPSB7CisgICdFc2MnOiAnRXNjYXBl
JywKKyAgJ1NwYWNlYmFyJzogJyAnLAorICAnTGVmdCc6ICdBcnJvd0xlZnQnLAorICAnVXAnOiAn
QXJyb3dVcCcsCisgICdSaWdodCc6ICdBcnJvd1JpZ2h0JywKKyAgJ0Rvd24nOiAnQXJyb3dEb3du
JywKKyAgJ0RlbCc6ICdEZWxldGUnLAorICAnV2luJzogJ09TJywKKyAgJ01lbnUnOiAnQ29udGV4
dE1lbnUnLAorICAnQXBwcyc6ICdDb250ZXh0TWVudScsCisgICdTY3JvbGwnOiAnU2Nyb2xsTG9j
aycsCisgICdNb3pQcmludGFibGVLZXknOiAnVW5pZGVudGlmaWVkJworfTsKKworLyoqCisgKiBU
cmFuc2xhdGlvbiBmcm9tIGxlZ2FjeSBga2V5Q29kZWAgdG8gSFRNTDUgYGtleWAKKyAqIE9ubHkg
c3BlY2lhbCBrZXlzIHN1cHBvcnRlZCwgYWxsIG90aGVycyBkZXBlbmQgb24ga2V5Ym9hcmQgbGF5
b3V0IG9yIGJyb3dzZXIKKyAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4t
VVMvZG9jcy9XZWIvQVBJL0tleWJvYXJkRXZlbnQjS2V5X25hbWVzCisgKi8KK3ZhciB0cmFuc2xh
dGVUb0tleSA9IHsKKyAgODogJ0JhY2tzcGFjZScsCisgIDk6ICdUYWInLAorICAxMjogJ0NsZWFy
JywKKyAgMTM6ICdFbnRlcicsCisgIDE2OiAnU2hpZnQnLAorICAxNzogJ0NvbnRyb2wnLAorICAx
ODogJ0FsdCcsCisgIDE5OiAnUGF1c2UnLAorICAyMDogJ0NhcHNMb2NrJywKKyAgMjc6ICdFc2Nh
cGUnLAorICAzMjogJyAnLAorICAzMzogJ1BhZ2VVcCcsCisgIDM0OiAnUGFnZURvd24nLAorICAz
NTogJ0VuZCcsCisgIDM2OiAnSG9tZScsCisgIDM3OiAnQXJyb3dMZWZ0JywKKyAgMzg6ICdBcnJv
d1VwJywKKyAgMzk6ICdBcnJvd1JpZ2h0JywKKyAgNDA6ICdBcnJvd0Rvd24nLAorICA0NTogJ0lu
c2VydCcsCisgIDQ2OiAnRGVsZXRlJywKKyAgMTEyOiAnRjEnLCAxMTM6ICdGMicsIDExNDogJ0Yz
JywgMTE1OiAnRjQnLCAxMTY6ICdGNScsIDExNzogJ0Y2JywKKyAgMTE4OiAnRjcnLCAxMTk6ICdG
OCcsIDEyMDogJ0Y5JywgMTIxOiAnRjEwJywgMTIyOiAnRjExJywgMTIzOiAnRjEyJywKKyAgMTQ0
OiAnTnVtTG9jaycsCisgIDE0NTogJ1Njcm9sbExvY2snLAorICAyMjQ6ICdNZXRhJworfTsKKwor
LyoqCisgKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQu
CisgKiBAcmV0dXJuIHtzdHJpbmd9IE5vcm1hbGl6ZWQgYGtleWAgcHJvcGVydHkuCisgKi8KK2Z1
bmN0aW9uIGdldEV2ZW50S2V5KG5hdGl2ZUV2ZW50KSB7CisgIGlmIChuYXRpdmVFdmVudC5rZXkp
IHsKKyAgICAvLyBOb3JtYWxpemUgaW5jb25zaXN0ZW50IHZhbHVlcyByZXBvcnRlZCBieSBicm93
c2VycyBkdWUgdG8KKyAgICAvLyBpbXBsZW1lbnRhdGlvbnMgb2YgYSB3b3JraW5nIGRyYWZ0IHNw
ZWNpZmljYXRpb24uCisKKyAgICAvLyBGaXJlRm94IGltcGxlbWVudHMgYGtleWAgYnV0IHJldHVy
bnMgYE1velByaW50YWJsZUtleWAgZm9yIGFsbAorICAgIC8vIHByaW50YWJsZSBjaGFyYWN0ZXJz
IChub3JtYWxpemVkIHRvIGBVbmlkZW50aWZpZWRgKSwgaWdub3JlIGl0LgorICAgIHZhciBrZXkg
PSBub3JtYWxpemVLZXlbbmF0aXZlRXZlbnQua2V5XSB8fCBuYXRpdmVFdmVudC5rZXk7CisgICAg
aWYgKGtleSAhPT0gJ1VuaWRlbnRpZmllZCcpIHsKKyAgICAgIHJldHVybiBrZXk7CisgICAgfQor
ICB9CisKKyAgLy8gQnJvd3NlciBkb2VzIG5vdCBpbXBsZW1lbnQgYGtleWAsIHBvbHlmaWxsIGFz
IG11Y2ggb2YgaXQgYXMgd2UgY2FuLgorICBpZiAobmF0aXZlRXZlbnQudHlwZSA9PT0gJ2tleXBy
ZXNzJykgeworICAgIHZhciBjaGFyQ29kZSA9IGdldEV2ZW50Q2hhckNvZGUobmF0aXZlRXZlbnQp
OworCisgICAgLy8gVGhlIGVudGVyLWtleSBpcyB0ZWNobmljYWxseSBib3RoIHByaW50YWJsZSBh
bmQgbm9uLXByaW50YWJsZSBhbmQgY2FuCisgICAgLy8gdGh1cyBiZSBjYXB0dXJlZCBieSBga2V5
cHJlc3NgLCBubyBvdGhlciBub24tcHJpbnRhYmxlIGtleSBzaG91bGQuCisgICAgcmV0dXJuIGNo
YXJDb2RlID09PSAxMyA/ICdFbnRlcicgOiBTdHJpbmcuZnJvbUNoYXJDb2RlKGNoYXJDb2RlKTsK
KyAgfQorICBpZiAobmF0aXZlRXZlbnQudHlwZSA9PT0gJ2tleWRvd24nIHx8IG5hdGl2ZUV2ZW50
LnR5cGUgPT09ICdrZXl1cCcpIHsKKyAgICAvLyBXaGlsZSB1c2VyIGtleWJvYXJkIGxheW91dCBk
ZXRlcm1pbmVzIHRoZSBhY3R1YWwgbWVhbmluZyBvZiBlYWNoCisgICAgLy8gYGtleUNvZGVgIHZh
bHVlLCBhbG1vc3QgYWxsIGZ1bmN0aW9uIGtleXMgaGF2ZSBhIHVuaXZlcnNhbCB2YWx1ZS4KKyAg
ICByZXR1cm4gdHJhbnNsYXRlVG9LZXlbbmF0aXZlRXZlbnQua2V5Q29kZV0gfHwgJ1VuaWRlbnRp
ZmllZCc7CisgIH0KKyAgcmV0dXJuICcnOworfQorCittb2R1bGUuZXhwb3J0cyA9IGdldEV2ZW50
S2V5OworfSx7IjEwMyI6MTAzfV0sMTA1OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRz
KXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1
bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKKy8q
KgorICogVHJhbnNsYXRpb24gZnJvbSBtb2RpZmllciBrZXkgdG8gdGhlIGFzc29jaWF0ZWQgcHJv
cGVydHkgaW4gdGhlIGV2ZW50LgorICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2
ZWwtMy1FdmVudHMvI2tleXMtTW9kaWZpZXJzCisgKi8KKwordmFyIG1vZGlmaWVyS2V5VG9Qcm9w
ID0geworICAnQWx0JzogJ2FsdEtleScsCisgICdDb250cm9sJzogJ2N0cmxLZXknLAorICAnTWV0
YSc6ICdtZXRhS2V5JywKKyAgJ1NoaWZ0JzogJ3NoaWZ0S2V5JworfTsKKworLy8gSUU4IGRvZXMg
bm90IGltcGxlbWVudCBnZXRNb2RpZmllclN0YXRlIHNvIHdlIHNpbXBseSBtYXAgaXQgdG8gdGhl
IG9ubHkKKy8vIG1vZGlmaWVyIGtleXMgZXhwb3NlZCBieSB0aGUgZXZlbnQgaXRzZWxmLCBkb2Vz
IG5vdCBzdXBwb3J0IExvY2sta2V5cy4KKy8vIEN1cnJlbnRseSwgYWxsIG1ham9yIGJyb3dzZXJz
IGV4Y2VwdCBDaHJvbWUgc2VlbXMgdG8gc3VwcG9ydCBMb2NrLWtleXMuCitmdW5jdGlvbiBtb2Rp
ZmllclN0YXRlR2V0dGVyKGtleUFyZykgeworICB2YXIgc3ludGhldGljRXZlbnQgPSB0aGlzOwor
ICB2YXIgbmF0aXZlRXZlbnQgPSBzeW50aGV0aWNFdmVudC5uYXRpdmVFdmVudDsKKyAgaWYgKG5h
dGl2ZUV2ZW50LmdldE1vZGlmaWVyU3RhdGUpIHsKKyAgICByZXR1cm4gbmF0aXZlRXZlbnQuZ2V0
TW9kaWZpZXJTdGF0ZShrZXlBcmcpOworICB9CisgIHZhciBrZXlQcm9wID0gbW9kaWZpZXJLZXlU
b1Byb3Bba2V5QXJnXTsKKyAgcmV0dXJuIGtleVByb3AgPyAhIW5hdGl2ZUV2ZW50W2tleVByb3Bd
IDogZmFsc2U7Cit9CisKK2Z1bmN0aW9uIGdldEV2ZW50TW9kaWZpZXJTdGF0ZShuYXRpdmVFdmVu
dCkgeworICByZXR1cm4gbW9kaWZpZXJTdGF0ZUdldHRlcjsKK30KKworbW9kdWxlLmV4cG9ydHMg
PSBnZXRFdmVudE1vZGlmaWVyU3RhdGU7Cit9LHt9XSwxMDY6W2Z1bmN0aW9uKF9kZXJlcV8sbW9k
dWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhl
IFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3Ry
aWN0JzsKKworLyoqCisgKiBHZXRzIHRoZSB0YXJnZXQgbm9kZSBmcm9tIGEgbmF0aXZlIGJyb3dz
ZXIgZXZlbnQgYnkgYWNjb3VudGluZyBmb3IKKyAqIGluY29uc2lzdGVuY2llcyBpbiBicm93c2Vy
IERPTSBBUElzLgorICoKKyAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJv
d3NlciBldmVudC4KKyAqIEByZXR1cm4ge0RPTUV2ZW50VGFyZ2V0fSBUYXJnZXQgbm9kZS4KKyAq
LworCitmdW5jdGlvbiBnZXRFdmVudFRhcmdldChuYXRpdmVFdmVudCkgeworICB2YXIgdGFyZ2V0
ID0gbmF0aXZlRXZlbnQudGFyZ2V0IHx8IG5hdGl2ZUV2ZW50LnNyY0VsZW1lbnQgfHwgd2luZG93
OworCisgIC8vIE5vcm1hbGl6ZSBTVkcgPHVzZT4gZWxlbWVudCBldmVudHMgIzQ5NjMKKyAgaWYg
KHRhcmdldC5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCkgeworICAgIHRhcmdldCA9IHRhcmdldC5j
b3JyZXNwb25kaW5nVXNlRWxlbWVudDsKKyAgfQorCisgIC8vIFNhZmFyaSBtYXkgZmlyZSBldmVu
dHMgb24gdGV4dCBub2RlcyAoTm9kZS5URVhUX05PREUgaXMgMykuCisgIC8vIEBzZWUgaHR0cDov
L3d3dy5xdWlya3Ntb2RlLm9yZy9qcy9ldmVudHNfcHJvcGVydGllcy5odG1sCisgIHJldHVybiB0
YXJnZXQubm9kZVR5cGUgPT09IDMgPyB0YXJnZXQucGFyZW50Tm9kZSA6IHRhcmdldDsKK30KKwor
bW9kdWxlLmV4cG9ydHMgPSBnZXRFdmVudFRhcmdldDsKK30se31dLDEwNzpbZnVuY3Rpb24oX2Rl
cmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZh
Y2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNl
IGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRo
ZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0
cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiAKKyAq
LworCisndXNlIHN0cmljdCc7CisKKy8qIGdsb2JhbCBTeW1ib2wgKi8KKwordmFyIElURVJBVE9S
X1NZTUJPTCA9IHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgU3ltYm9sLml0ZXJhdG9y
OwordmFyIEZBVVhfSVRFUkFUT1JfU1lNQk9MID0gJ0BAaXRlcmF0b3InOyAvLyBCZWZvcmUgU3lt
Ym9sIHNwZWMuCisKKy8qKgorICogUmV0dXJucyB0aGUgaXRlcmF0b3IgbWV0aG9kIGZ1bmN0aW9u
IGNvbnRhaW5lZCBvbiB0aGUgaXRlcmFibGUgb2JqZWN0LgorICoKKyAqIEJlIHN1cmUgdG8gaW52
b2tlIHRoZSBmdW5jdGlvbiB3aXRoIHRoZSBpdGVyYWJsZSBhcyBjb250ZXh0OgorICoKKyAqICAg
ICB2YXIgaXRlcmF0b3JGbiA9IGdldEl0ZXJhdG9yRm4obXlJdGVyYWJsZSk7CisgKiAgICAgaWYg
KGl0ZXJhdG9yRm4pIHsKKyAqICAgICAgIHZhciBpdGVyYXRvciA9IGl0ZXJhdG9yRm4uY2FsbCht
eUl0ZXJhYmxlKTsKKyAqICAgICAgIC4uLgorICogICAgIH0KKyAqCisgKiBAcGFyYW0gez9vYmpl
Y3R9IG1heWJlSXRlcmFibGUKKyAqIEByZXR1cm4gez9mdW5jdGlvbn0KKyAqLworZnVuY3Rpb24g
Z2V0SXRlcmF0b3JGbihtYXliZUl0ZXJhYmxlKSB7CisgIHZhciBpdGVyYXRvckZuID0gbWF5YmVJ
dGVyYWJsZSAmJiAoSVRFUkFUT1JfU1lNQk9MICYmIG1heWJlSXRlcmFibGVbSVRFUkFUT1JfU1lN
Qk9MXSB8fCBtYXliZUl0ZXJhYmxlW0ZBVVhfSVRFUkFUT1JfU1lNQk9MXSk7CisgIGlmICh0eXBl
b2YgaXRlcmF0b3JGbiA9PT0gJ2Z1bmN0aW9uJykgeworICAgIHJldHVybiBpdGVyYXRvckZuOwor
ICB9Cit9CisKK21vZHVsZS5leHBvcnRzID0gZ2V0SXRlcmF0b3JGbjsKK30se31dLDEwODpbZnVu
Y3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXBy
ZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRo
aXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZv
dW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlz
IHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNh
biBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAq
CisgKiAKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBuZXh0RGVidWdJRCA9IDE7CisKK2Z1
bmN0aW9uIGdldE5leHREZWJ1Z0lEKCkgeworICByZXR1cm4gbmV4dERlYnVnSUQrKzsKK30KKwor
bW9kdWxlLmV4cG9ydHMgPSBnZXROZXh0RGVidWdJRDsKK30se31dLDEwOTpbZnVuY3Rpb24oX2Rl
cmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZh
Y2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNl
IGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRo
ZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0
cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKwor
J3VzZSBzdHJpY3QnOworCisvKioKKyAqIEdpdmVuIGFueSBub2RlIHJldHVybiB0aGUgZmlyc3Qg
bGVhZiBub2RlIHdpdGhvdXQgY2hpbGRyZW4uCisgKgorICogQHBhcmFtIHtET01FbGVtZW50fERP
TVRleHROb2RlfSBub2RlCisgKiBAcmV0dXJuIHtET01FbGVtZW50fERPTVRleHROb2RlfQorICov
CisKK2Z1bmN0aW9uIGdldExlYWZOb2RlKG5vZGUpIHsKKyAgd2hpbGUgKG5vZGUgJiYgbm9kZS5m
aXJzdENoaWxkKSB7CisgICAgbm9kZSA9IG5vZGUuZmlyc3RDaGlsZDsKKyAgfQorICByZXR1cm4g
bm9kZTsKK30KKworLyoqCisgKiBHZXQgdGhlIG5leHQgc2libGluZyB3aXRoaW4gYSBjb250YWlu
ZXIuIFRoaXMgd2lsbCB3YWxrIHVwIHRoZQorICogRE9NIGlmIGEgbm9kZSdzIHNpYmxpbmdzIGhh
dmUgYmVlbiBleGhhdXN0ZWQuCisgKgorICogQHBhcmFtIHtET01FbGVtZW50fERPTVRleHROb2Rl
fSBub2RlCisgKiBAcmV0dXJuIHs/RE9NRWxlbWVudHxET01UZXh0Tm9kZX0KKyAqLworZnVuY3Rp
b24gZ2V0U2libGluZ05vZGUobm9kZSkgeworICB3aGlsZSAobm9kZSkgeworICAgIGlmIChub2Rl
Lm5leHRTaWJsaW5nKSB7CisgICAgICByZXR1cm4gbm9kZS5uZXh0U2libGluZzsKKyAgICB9Cisg
ICAgbm9kZSA9IG5vZGUucGFyZW50Tm9kZTsKKyAgfQorfQorCisvKioKKyAqIEdldCBvYmplY3Qg
ZGVzY3JpYmluZyB0aGUgbm9kZXMgd2hpY2ggY29udGFpbiBjaGFyYWN0ZXJzIGF0IG9mZnNldC4K
KyAqCisgKiBAcGFyYW0ge0RPTUVsZW1lbnR8RE9NVGV4dE5vZGV9IHJvb3QKKyAqIEBwYXJhbSB7
bnVtYmVyfSBvZmZzZXQKKyAqIEByZXR1cm4gez9vYmplY3R9CisgKi8KK2Z1bmN0aW9uIGdldE5v
ZGVGb3JDaGFyYWN0ZXJPZmZzZXQocm9vdCwgb2Zmc2V0KSB7CisgIHZhciBub2RlID0gZ2V0TGVh
Zk5vZGUocm9vdCk7CisgIHZhciBub2RlU3RhcnQgPSAwOworICB2YXIgbm9kZUVuZCA9IDA7CisK
KyAgd2hpbGUgKG5vZGUpIHsKKyAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gMykgeworICAgICAg
bm9kZUVuZCA9IG5vZGVTdGFydCArIG5vZGUudGV4dENvbnRlbnQubGVuZ3RoOworCisgICAgICBp
ZiAobm9kZVN0YXJ0IDw9IG9mZnNldCAmJiBub2RlRW5kID49IG9mZnNldCkgeworICAgICAgICBy
ZXR1cm4geworICAgICAgICAgIG5vZGU6IG5vZGUsCisgICAgICAgICAgb2Zmc2V0OiBvZmZzZXQg
LSBub2RlU3RhcnQKKyAgICAgICAgfTsKKyAgICAgIH0KKworICAgICAgbm9kZVN0YXJ0ID0gbm9k
ZUVuZDsKKyAgICB9CisKKyAgICBub2RlID0gZ2V0TGVhZk5vZGUoZ2V0U2libGluZ05vZGUobm9k
ZSkpOworICB9Cit9CisKK21vZHVsZS5leHBvcnRzID0gZ2V0Tm9kZUZvckNoYXJhY3Rlck9mZnNl
dDsKK30se31dLDExMDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAq
IENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgRXhlY3V0aW9u
RW52aXJvbm1lbnQgPSBfZGVyZXFfKDEyNik7CisKK3ZhciBjb250ZW50S2V5ID0gbnVsbDsKKwor
LyoqCisgKiBHZXRzIHRoZSBrZXkgdXNlZCB0byBhY2Nlc3MgdGV4dCBjb250ZW50IG9uIGEgRE9N
IG5vZGUuCisgKgorICogQHJldHVybiB7P3N0cmluZ30gS2V5IHVzZWQgdG8gYWNjZXNzIHRleHQg
Y29udGVudC4KKyAqIEBpbnRlcm5hbAorICovCitmdW5jdGlvbiBnZXRUZXh0Q29udGVudEFjY2Vz
c29yKCkgeworICBpZiAoIWNvbnRlbnRLZXkgJiYgRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNl
RE9NKSB7CisgICAgLy8gUHJlZmVyIHRleHRDb250ZW50IHRvIGlubmVyVGV4dCBiZWNhdXNlIG1h
bnkgYnJvd3NlcnMgc3VwcG9ydCBib3RoIGJ1dAorICAgIC8vIFNWRyA8dGV4dD4gZWxlbWVudHMg
ZG9uJ3Qgc3VwcG9ydCBpbm5lclRleHQgZXZlbiB3aGVuIDxkaXY+IGRvZXMuCisgICAgY29udGVu
dEtleSA9ICd0ZXh0Q29udGVudCcgaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ID8gJ3RleHRD
b250ZW50JyA6ICdpbm5lclRleHQnOworICB9CisgIHJldHVybiBjb250ZW50S2V5OworfQorCitt
b2R1bGUuZXhwb3J0cyA9IGdldFRleHRDb250ZW50QWNjZXNzb3I7Cit9LHsiMTI2IjoxMjZ9XSwx
MTE6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQg
MjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGlj
ZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkg
b2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJp
Z2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rv
cnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIEV4ZWN1dGlvbkVudmlyb25tZW50
ID0gX2RlcmVxXygxMjYpOworCisvKioKKyAqIEdlbmVyYXRlIGEgbWFwcGluZyBvZiBzdGFuZGFy
ZCB2ZW5kb3IgcHJlZml4ZXMgdXNpbmcgdGhlIGRlZmluZWQgc3R5bGUgcHJvcGVydHkgYW5kIGV2
ZW50IG5hbWUuCisgKgorICogQHBhcmFtIHtzdHJpbmd9IHN0eWxlUHJvcAorICogQHBhcmFtIHtz
dHJpbmd9IGV2ZW50TmFtZQorICogQHJldHVybnMge29iamVjdH0KKyAqLworZnVuY3Rpb24gbWFr
ZVByZWZpeE1hcChzdHlsZVByb3AsIGV2ZW50TmFtZSkgeworICB2YXIgcHJlZml4ZXMgPSB7fTsK
KworICBwcmVmaXhlc1tzdHlsZVByb3AudG9Mb3dlckNhc2UoKV0gPSBldmVudE5hbWUudG9Mb3dl
ckNhc2UoKTsKKyAgcHJlZml4ZXNbJ1dlYmtpdCcgKyBzdHlsZVByb3BdID0gJ3dlYmtpdCcgKyBl
dmVudE5hbWU7CisgIHByZWZpeGVzWydNb3onICsgc3R5bGVQcm9wXSA9ICdtb3onICsgZXZlbnRO
YW1lOworICBwcmVmaXhlc1snbXMnICsgc3R5bGVQcm9wXSA9ICdNUycgKyBldmVudE5hbWU7Cisg
IHByZWZpeGVzWydPJyArIHN0eWxlUHJvcF0gPSAnbycgKyBldmVudE5hbWUudG9Mb3dlckNhc2Uo
KTsKKworICByZXR1cm4gcHJlZml4ZXM7Cit9CisKKy8qKgorICogQSBsaXN0IG9mIGV2ZW50IG5h
bWVzIHRvIGEgY29uZmlndXJhYmxlIGxpc3Qgb2YgdmVuZG9yIHByZWZpeGVzLgorICovCit2YXIg
dmVuZG9yUHJlZml4ZXMgPSB7CisgIGFuaW1hdGlvbmVuZDogbWFrZVByZWZpeE1hcCgnQW5pbWF0
aW9uJywgJ0FuaW1hdGlvbkVuZCcpLAorICBhbmltYXRpb25pdGVyYXRpb246IG1ha2VQcmVmaXhN
YXAoJ0FuaW1hdGlvbicsICdBbmltYXRpb25JdGVyYXRpb24nKSwKKyAgYW5pbWF0aW9uc3RhcnQ6
IG1ha2VQcmVmaXhNYXAoJ0FuaW1hdGlvbicsICdBbmltYXRpb25TdGFydCcpLAorICB0cmFuc2l0
aW9uZW5kOiBtYWtlUHJlZml4TWFwKCdUcmFuc2l0aW9uJywgJ1RyYW5zaXRpb25FbmQnKQorfTsK
KworLyoqCisgKiBFdmVudCBuYW1lcyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuIGRldGVjdGVkIGFu
ZCBwcmVmaXhlZCAoaWYgYXBwbGljYWJsZSkuCisgKi8KK3ZhciBwcmVmaXhlZEV2ZW50TmFtZXMg
PSB7fTsKKworLyoqCisgKiBFbGVtZW50IHRvIGNoZWNrIGZvciBwcmVmaXhlcyBvbi4KKyAqLwor
dmFyIHN0eWxlID0ge307CisKKy8qKgorICogQm9vdHN0cmFwIGlmIGEgRE9NIGV4aXN0cy4KKyAq
LworaWYgKEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSkgeworICBzdHlsZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpLnN0eWxlOworCisgIC8vIE9uIHNvbWUgcGxhdGZvcm1z
LCBpbiBwYXJ0aWN1bGFyIHNvbWUgcmVsZWFzZXMgb2YgQW5kcm9pZCA0LngsCisgIC8vIHRoZSB1
bi1wcmVmaXhlZCAiYW5pbWF0aW9uIiBhbmQgInRyYW5zaXRpb24iIHByb3BlcnRpZXMgYXJlIGRl
ZmluZWQgb24gdGhlCisgIC8vIHN0eWxlIG9iamVjdCBidXQgdGhlIGV2ZW50cyB0aGF0IGZpcmUg
d2lsbCBzdGlsbCBiZSBwcmVmaXhlZCwgc28gd2UgbmVlZAorICAvLyB0byBjaGVjayBpZiB0aGUg
dW4tcHJlZml4ZWQgZXZlbnRzIGFyZSB1c2FibGUsIGFuZCBpZiBub3QgcmVtb3ZlIHRoZW0gZnJv
bSB0aGUgbWFwLgorICBpZiAoISgnQW5pbWF0aW9uRXZlbnQnIGluIHdpbmRvdykpIHsKKyAgICBk
ZWxldGUgdmVuZG9yUHJlZml4ZXMuYW5pbWF0aW9uZW5kLmFuaW1hdGlvbjsKKyAgICBkZWxldGUg
dmVuZG9yUHJlZml4ZXMuYW5pbWF0aW9uaXRlcmF0aW9uLmFuaW1hdGlvbjsKKyAgICBkZWxldGUg
dmVuZG9yUHJlZml4ZXMuYW5pbWF0aW9uc3RhcnQuYW5pbWF0aW9uOworICB9CisKKyAgLy8gU2Ft
ZSBhcyBhYm92ZQorICBpZiAoISgnVHJhbnNpdGlvbkV2ZW50JyBpbiB3aW5kb3cpKSB7CisgICAg
ZGVsZXRlIHZlbmRvclByZWZpeGVzLnRyYW5zaXRpb25lbmQudHJhbnNpdGlvbjsKKyAgfQorfQor
CisvKioKKyAqIEF0dGVtcHRzIHRvIGRldGVybWluZSB0aGUgY29ycmVjdCB2ZW5kb3IgcHJlZml4
ZWQgZXZlbnQgbmFtZS4KKyAqCisgKiBAcGFyYW0ge3N0cmluZ30gZXZlbnROYW1lCisgKiBAcmV0
dXJucyB7c3RyaW5nfQorICovCitmdW5jdGlvbiBnZXRWZW5kb3JQcmVmaXhlZEV2ZW50TmFtZShl
dmVudE5hbWUpIHsKKyAgaWYgKHByZWZpeGVkRXZlbnROYW1lc1tldmVudE5hbWVdKSB7CisgICAg
cmV0dXJuIHByZWZpeGVkRXZlbnROYW1lc1tldmVudE5hbWVdOworICB9IGVsc2UgaWYgKCF2ZW5k
b3JQcmVmaXhlc1tldmVudE5hbWVdKSB7CisgICAgcmV0dXJuIGV2ZW50TmFtZTsKKyAgfQorCisg
IHZhciBwcmVmaXhNYXAgPSB2ZW5kb3JQcmVmaXhlc1tldmVudE5hbWVdOworCisgIGZvciAodmFy
IHN0eWxlUHJvcCBpbiBwcmVmaXhNYXApIHsKKyAgICBpZiAocHJlZml4TWFwLmhhc093blByb3Bl
cnR5KHN0eWxlUHJvcCkgJiYgc3R5bGVQcm9wIGluIHN0eWxlKSB7CisgICAgICByZXR1cm4gcHJl
Zml4ZWRFdmVudE5hbWVzW2V2ZW50TmFtZV0gPSBwcmVmaXhNYXBbc3R5bGVQcm9wXTsKKyAgICB9
CisgIH0KKworICByZXR1cm4gJyc7Cit9CisKK21vZHVsZS5leHBvcnRzID0gZ2V0VmVuZG9yUHJl
Zml4ZWRFdmVudE5hbWU7Cit9LHsiMTI2IjoxMjZ9XSwxMTI6W2Z1bmN0aW9uKF9kZXJlcV8sbW9k
dWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhl
IFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3Ry
aWN0JzsKKwordmFyIF9wcm9kSW52YXJpYW50ID0gX2RlcmVxXygxMTYpLAorICAgIF9hc3NpZ24g
PSBfZGVyZXFfKDE0OCk7CisKK3ZhciBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCA9IF9kZXJlcV8o
MjkpOwordmFyIFJlYWN0RW1wdHlDb21wb25lbnQgPSBfZGVyZXFfKDQ5KTsKK3ZhciBSZWFjdEhv
c3RDb21wb25lbnQgPSBfZGVyZXFfKDU0KTsKKwordmFyIGdldE5leHREZWJ1Z0lEID0gX2RlcmVx
XygxMDgpOwordmFyIGludmFyaWFudCA9IF9kZXJlcV8oMTQwKTsKK3ZhciB3YXJuaW5nID0gX2Rl
cmVxXygxNDcpOworCisvLyBUbyBhdm9pZCBhIGN5Y2xpYyBkZXBlbmRlbmN5LCB3ZSBjcmVhdGUg
dGhlIGZpbmFsIGNsYXNzIGluIHRoaXMgbW9kdWxlCit2YXIgUmVhY3RDb21wb3NpdGVDb21wb25l
bnRXcmFwcGVyID0gZnVuY3Rpb24gKGVsZW1lbnQpIHsKKyAgdGhpcy5jb25zdHJ1Y3QoZWxlbWVu
dCk7Cit9OworX2Fzc2lnbihSZWFjdENvbXBvc2l0ZUNvbXBvbmVudFdyYXBwZXIucHJvdG90eXBl
LCBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCwgeworICBfaW5zdGFudGlhdGVSZWFjdENvbXBvbmVu
dDogaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudAorfSk7CisKK2Z1bmN0aW9uIGdldERlY2xhcmF0
aW9uRXJyb3JBZGRlbmR1bShvd25lcikgeworICBpZiAob3duZXIpIHsKKyAgICB2YXIgbmFtZSA9
IG93bmVyLmdldE5hbWUoKTsKKyAgICBpZiAobmFtZSkgeworICAgICAgcmV0dXJuICcgQ2hlY2sg
dGhlIHJlbmRlciBtZXRob2Qgb2YgYCcgKyBuYW1lICsgJ2AuJzsKKyAgICB9CisgIH0KKyAgcmV0
dXJuICcnOworfQorCisvKioKKyAqIENoZWNrIGlmIHRoZSB0eXBlIHJlZmVyZW5jZSBpcyBhIGtu
b3duIGludGVybmFsIHR5cGUuIEkuZS4gbm90IGEgdXNlcgorICogcHJvdmlkZWQgY29tcG9zaXRl
IHR5cGUuCisgKgorICogQHBhcmFtIHtmdW5jdGlvbn0gdHlwZQorICogQHJldHVybiB7Ym9vbGVh
bn0gUmV0dXJucyB0cnVlIGlmIHRoaXMgaXMgYSB2YWxpZCBpbnRlcm5hbCB0eXBlLgorICovCitm
dW5jdGlvbiBpc0ludGVybmFsQ29tcG9uZW50VHlwZSh0eXBlKSB7CisgIHJldHVybiB0eXBlb2Yg
dHlwZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgdHlwZS5wcm90b3R5cGUgIT09ICd1bmRlZmlu
ZWQnICYmIHR5cGVvZiB0eXBlLnByb3RvdHlwZS5tb3VudENvbXBvbmVudCA9PT0gJ2Z1bmN0aW9u
JyAmJiB0eXBlb2YgdHlwZS5wcm90b3R5cGUucmVjZWl2ZUNvbXBvbmVudCA9PT0gJ2Z1bmN0aW9u
JzsKK30KKworLyoqCisgKiBHaXZlbiBhIFJlYWN0Tm9kZSwgY3JlYXRlIGFuIGluc3RhbmNlIHRo
YXQgd2lsbCBhY3R1YWxseSBiZSBtb3VudGVkLgorICoKKyAqIEBwYXJhbSB7UmVhY3ROb2RlfSBu
b2RlCisgKiBAcGFyYW0ge2Jvb2xlYW59IHNob3VsZEhhdmVEZWJ1Z0lECisgKiBAcmV0dXJuIHtv
YmplY3R9IEEgbmV3IGluc3RhbmNlIG9mIHRoZSBlbGVtZW50J3MgY29uc3RydWN0b3IuCisgKiBA
cHJvdGVjdGVkCisgKi8KK2Z1bmN0aW9uIGluc3RhbnRpYXRlUmVhY3RDb21wb25lbnQobm9kZSwg
c2hvdWxkSGF2ZURlYnVnSUQpIHsKKyAgdmFyIGluc3RhbmNlOworCisgIGlmIChub2RlID09PSBu
dWxsIHx8IG5vZGUgPT09IGZhbHNlKSB7CisgICAgaW5zdGFuY2UgPSBSZWFjdEVtcHR5Q29tcG9u
ZW50LmNyZWF0ZShpbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50KTsKKyAgfSBlbHNlIGlmICh0eXBl
b2Ygbm9kZSA9PT0gJ29iamVjdCcpIHsKKyAgICB2YXIgZWxlbWVudCA9IG5vZGU7CisgICAgIShl
bGVtZW50ICYmICh0eXBlb2YgZWxlbWVudC50eXBlID09PSAnZnVuY3Rpb24nIHx8IHR5cGVvZiBl
bGVtZW50LnR5cGUgPT09ICdzdHJpbmcnKSkgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlv
bicgPyBpbnZhcmlhbnQoZmFsc2UsICdFbGVtZW50IHR5cGUgaXMgaW52YWxpZDogZXhwZWN0ZWQg
YSBzdHJpbmcgKGZvciBidWlsdC1pbiBjb21wb25lbnRzKSBvciBhIGNsYXNzL2Z1bmN0aW9uIChm
b3IgY29tcG9zaXRlIGNvbXBvbmVudHMpIGJ1dCBnb3Q6ICVzLiVzJywgZWxlbWVudC50eXBlID09
IG51bGwgPyBlbGVtZW50LnR5cGUgOiB0eXBlb2YgZWxlbWVudC50eXBlLCBnZXREZWNsYXJhdGlv
bkVycm9yQWRkZW5kdW0oZWxlbWVudC5fb3duZXIpKSA6IF9wcm9kSW52YXJpYW50KCcxMzAnLCBl
bGVtZW50LnR5cGUgPT0gbnVsbCA/IGVsZW1lbnQudHlwZSA6IHR5cGVvZiBlbGVtZW50LnR5cGUs
IGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bShlbGVtZW50Ll9vd25lcikpIDogdm9pZCAwOwor
CisgICAgLy8gU3BlY2lhbCBjYXNlIHN0cmluZyB2YWx1ZXMKKyAgICBpZiAodHlwZW9mIGVsZW1l
bnQudHlwZSA9PT0gJ3N0cmluZycpIHsKKyAgICAgIGluc3RhbmNlID0gUmVhY3RIb3N0Q29tcG9u
ZW50LmNyZWF0ZUludGVybmFsQ29tcG9uZW50KGVsZW1lbnQpOworICAgIH0gZWxzZSBpZiAoaXNJ
bnRlcm5hbENvbXBvbmVudFR5cGUoZWxlbWVudC50eXBlKSkgeworICAgICAgLy8gVGhpcyBpcyB0
ZW1wb3JhcmlseSBhdmFpbGFibGUgZm9yIGN1c3RvbSBjb21wb25lbnRzIHRoYXQgYXJlIG5vdCBz
dHJpbmcKKyAgICAgIC8vIHJlcHJlc2VudGF0aW9ucy4gSS5lLiBBUlQuIE9uY2UgdGhvc2UgYXJl
IHVwZGF0ZWQgdG8gdXNlIHRoZSBzdHJpbmcKKyAgICAgIC8vIHJlcHJlc2VudGF0aW9uLCB3ZSBj
YW4gZHJvcCB0aGlzIGNvZGUgcGF0aC4KKyAgICAgIGluc3RhbmNlID0gbmV3IGVsZW1lbnQudHlw
ZShlbGVtZW50KTsKKworICAgICAgLy8gV2UgcmVuYW1lZCB0aGlzLiBBbGxvdyB0aGUgb2xkIG5h
bWUgZm9yIGNvbXBhdC4gOigKKyAgICAgIGlmICghaW5zdGFuY2UuZ2V0SG9zdE5vZGUpIHsKKyAg
ICAgICAgaW5zdGFuY2UuZ2V0SG9zdE5vZGUgPSBpbnN0YW5jZS5nZXROYXRpdmVOb2RlOworICAg
ICAgfQorICAgIH0gZWxzZSB7CisgICAgICBpbnN0YW5jZSA9IG5ldyBSZWFjdENvbXBvc2l0ZUNv
bXBvbmVudFdyYXBwZXIoZWxlbWVudCk7CisgICAgfQorICB9IGVsc2UgaWYgKHR5cGVvZiBub2Rl
ID09PSAnc3RyaW5nJyB8fCB0eXBlb2Ygbm9kZSA9PT0gJ251bWJlcicpIHsKKyAgICBpbnN0YW5j
ZSA9IFJlYWN0SG9zdENvbXBvbmVudC5jcmVhdGVJbnN0YW5jZUZvclRleHQobm9kZSk7CisgIH0g
ZWxzZSB7CisgICAgIWZhbHNlID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52
YXJpYW50KGZhbHNlLCAnRW5jb3VudGVyZWQgaW52YWxpZCBSZWFjdCBub2RlIG9mIHR5cGUgJXMn
LCB0eXBlb2Ygbm9kZSkgOiBfcHJvZEludmFyaWFudCgnMTMxJywgdHlwZW9mIG5vZGUpIDogdm9p
ZCAwOworICB9CisKKyAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAg
ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcodHlwZW9mIGluc3RhbmNl
Lm1vdW50Q29tcG9uZW50ID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBpbnN0YW5jZS5yZWNlaXZl
Q29tcG9uZW50ID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBpbnN0YW5jZS5nZXRIb3N0Tm9kZSA9
PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgaW5zdGFuY2UudW5tb3VudENvbXBvbmVudCA9PT0gJ2Z1
bmN0aW9uJywgJ09ubHkgUmVhY3QgQ29tcG9uZW50cyBjYW4gYmUgbW91bnRlZC4nKSA6IHZvaWQg
MDsKKyAgfQorCisgIC8vIFRoZXNlIHR3byBmaWVsZHMgYXJlIHVzZWQgYnkgdGhlIERPTSBhbmQg
QVJUIGRpZmZpbmcgYWxnb3JpdGhtcworICAvLyByZXNwZWN0aXZlbHkuIEluc3RlYWQgb2YgdXNp
bmcgZXhwYW5kb3Mgb24gY29tcG9uZW50cywgd2Ugc2hvdWxkIGJlCisgIC8vIHN0b3JpbmcgdGhl
IHN0YXRlIG5lZWRlZCBieSB0aGUgZGlmZmluZyBhbGdvcml0aG1zIGVsc2V3aGVyZS4KKyAgaW5z
dGFuY2UuX21vdW50SW5kZXggPSAwOworICBpbnN0YW5jZS5fbW91bnRJbWFnZSA9IG51bGw7CisK
KyAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgIGluc3RhbmNlLl9k
ZWJ1Z0lEID0gc2hvdWxkSGF2ZURlYnVnSUQgPyBnZXROZXh0RGVidWdJRCgpIDogMDsKKyAgfQor
CisgIC8vIEludGVybmFsIGluc3RhbmNlcyBzaG91bGQgZnVsbHkgY29uc3RydWN0ZWQgYXQgdGhp
cyBwb2ludCwgc28gdGhleSBzaG91bGQKKyAgLy8gbm90IGdldCBhbnkgbmV3IGZpZWxkcyBhZGRl
ZCB0byB0aGVtIGF0IHRoaXMgcG9pbnQuCisgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVj
dGlvbicpIHsKKyAgICBpZiAoT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKSB7CisgICAgICBPYmpl
Y3QucHJldmVudEV4dGVuc2lvbnMoaW5zdGFuY2UpOworICAgIH0KKyAgfQorCisgIHJldHVybiBp
bnN0YW5jZTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBpbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50
OworfSx7IjEwOCI6MTA4LCIxMTYiOjExNiwiMTQwIjoxNDAsIjE0NyI6MTQ3LCIxNDgiOjE0OCwi
MjkiOjI5LCI0OSI6NDksIjU0Ijo1NH1dLDExMzpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhw
b3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisg
KiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5z
ZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBm
aWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlv
bmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5U
UyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOwor
Cit2YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSBfZGVyZXFfKDEyNik7CisKK3ZhciB1c2VIYXNG
ZWF0dXJlOworaWYgKEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSkgeworICB1c2VIYXNG
ZWF0dXJlID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24gJiYgZG9jdW1lbnQuaW1wbGVtZW50YXRp
b24uaGFzRmVhdHVyZSAmJgorICAvLyBhbHdheXMgcmV0dXJucyB0cnVlIGluIG5ld2VyIGJyb3dz
ZXJzIGFzIHBlciB0aGUgc3RhbmRhcmQuCisgIC8vIEBzZWUgaHR0cDovL2RvbS5zcGVjLndoYXR3
Zy5vcmcvI2RvbS1kb21pbXBsZW1lbnRhdGlvbi1oYXNmZWF0dXJlCisgIGRvY3VtZW50LmltcGxl
bWVudGF0aW9uLmhhc0ZlYXR1cmUoJycsICcnKSAhPT0gdHJ1ZTsKK30KKworLyoqCisgKiBDaGVj
a3MgaWYgYW4gZXZlbnQgaXMgc3VwcG9ydGVkIGluIHRoZSBjdXJyZW50IGV4ZWN1dGlvbiBlbnZp
cm9ubWVudC4KKyAqCisgKiBOT1RFOiBUaGlzIHdpbGwgbm90IHdvcmsgY29ycmVjdGx5IGZvciBu
b24tZ2VuZXJpYyBldmVudHMgc3VjaCBhcyBgY2hhbmdlYCwKKyAqIGByZXNldGAsIGBsb2FkYCwg
YGVycm9yYCwgYW5kIGBzZWxlY3RgLgorICoKKyAqIEJvcnJvd3MgZnJvbSBNb2Rlcm5penIuCisg
KgorICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50TmFtZVN1ZmZpeCBFdmVudCBuYW1lLCBlLmcuICJj
bGljayIuCisgKiBAcGFyYW0gez9ib29sZWFufSBjYXB0dXJlIENoZWNrIGlmIHRoZSBjYXB0dXJl
IHBoYXNlIGlzIHN1cHBvcnRlZC4KKyAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdGhlIGV2
ZW50IGlzIHN1cHBvcnRlZC4KKyAqIEBpbnRlcm5hbAorICogQGxpY2Vuc2UgTW9kZXJuaXpyIDMu
MC4wcHJlIChDdXN0b20gQnVpbGQpIHwgTUlUCisgKi8KK2Z1bmN0aW9uIGlzRXZlbnRTdXBwb3J0
ZWQoZXZlbnROYW1lU3VmZml4LCBjYXB0dXJlKSB7CisgIGlmICghRXhlY3V0aW9uRW52aXJvbm1l
bnQuY2FuVXNlRE9NIHx8IGNhcHR1cmUgJiYgISgnYWRkRXZlbnRMaXN0ZW5lcicgaW4gZG9jdW1l
bnQpKSB7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisKKyAgdmFyIGV2ZW50TmFtZSA9ICdvbicg
KyBldmVudE5hbWVTdWZmaXg7CisgIHZhciBpc1N1cHBvcnRlZCA9IGV2ZW50TmFtZSBpbiBkb2N1
bWVudDsKKworICBpZiAoIWlzU3VwcG9ydGVkKSB7CisgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShldmVudE5h
bWUsICdyZXR1cm47Jyk7CisgICAgaXNTdXBwb3J0ZWQgPSB0eXBlb2YgZWxlbWVudFtldmVudE5h
bWVdID09PSAnZnVuY3Rpb24nOworICB9CisKKyAgaWYgKCFpc1N1cHBvcnRlZCAmJiB1c2VIYXNG
ZWF0dXJlICYmIGV2ZW50TmFtZVN1ZmZpeCA9PT0gJ3doZWVsJykgeworICAgIC8vIFRoaXMgaXMg
dGhlIG9ubHkgd2F5IHRvIHRlc3Qgc3VwcG9ydCBmb3IgdGhlIGB3aGVlbGAgZXZlbnQgaW4gSUU5
Ky4KKyAgICBpc1N1cHBvcnRlZCA9IGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmhhc0ZlYXR1cmUo
J0V2ZW50cy53aGVlbCcsICczLjAnKTsKKyAgfQorCisgIHJldHVybiBpc1N1cHBvcnRlZDsKK30K
KworbW9kdWxlLmV4cG9ydHMgPSBpc0V2ZW50U3VwcG9ydGVkOworfSx7IjEyNiI6MTI2fV0sMTE0
OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIw
MTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vu
c2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9m
IHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdo
dHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5
LgorICoKKyAqIAorICovCisKKyd1c2Ugc3RyaWN0JzsKKworLyoqCisgKiBAc2VlIGh0dHA6Ly93
d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL3RoZS1p
bnB1dC1lbGVtZW50Lmh0bWwjaW5wdXQtdHlwZS1hdHRyLXN1bW1hcnkKKyAqLworCit2YXIgc3Vw
cG9ydGVkSW5wdXRUeXBlcyA9IHsKKyAgJ2NvbG9yJzogdHJ1ZSwKKyAgJ2RhdGUnOiB0cnVlLAor
ICAnZGF0ZXRpbWUnOiB0cnVlLAorICAnZGF0ZXRpbWUtbG9jYWwnOiB0cnVlLAorICAnZW1haWwn
OiB0cnVlLAorICAnbW9udGgnOiB0cnVlLAorICAnbnVtYmVyJzogdHJ1ZSwKKyAgJ3Bhc3N3b3Jk
JzogdHJ1ZSwKKyAgJ3JhbmdlJzogdHJ1ZSwKKyAgJ3NlYXJjaCc6IHRydWUsCisgICd0ZWwnOiB0
cnVlLAorICAndGV4dCc6IHRydWUsCisgICd0aW1lJzogdHJ1ZSwKKyAgJ3VybCc6IHRydWUsCisg
ICd3ZWVrJzogdHJ1ZQorfTsKKworZnVuY3Rpb24gaXNUZXh0SW5wdXRFbGVtZW50KGVsZW0pIHsK
KyAgdmFyIG5vZGVOYW1lID0gZWxlbSAmJiBlbGVtLm5vZGVOYW1lICYmIGVsZW0ubm9kZU5hbWUu
dG9Mb3dlckNhc2UoKTsKKworICBpZiAobm9kZU5hbWUgPT09ICdpbnB1dCcpIHsKKyAgICByZXR1
cm4gISFzdXBwb3J0ZWRJbnB1dFR5cGVzW2VsZW0udHlwZV07CisgIH0KKworICBpZiAobm9kZU5h
bWUgPT09ICd0ZXh0YXJlYScpIHsKKyAgICByZXR1cm4gdHJ1ZTsKKyAgfQorCisgIHJldHVybiBm
YWxzZTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBpc1RleHRJbnB1dEVsZW1lbnQ7Cit9LHt9XSwx
MTU6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQg
MjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGlj
ZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkg
b2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJp
Z2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rv
cnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIGVzY2FwZVRleHRDb250ZW50Rm9y
QnJvd3NlciA9IF9kZXJlcV8oMTAwKTsKKworLyoqCisgKiBFc2NhcGVzIGF0dHJpYnV0ZSB2YWx1
ZSB0byBwcmV2ZW50IHNjcmlwdGluZyBhdHRhY2tzLgorICoKKyAqIEBwYXJhbSB7Kn0gdmFsdWUg
VmFsdWUgdG8gZXNjYXBlLgorICogQHJldHVybiB7c3RyaW5nfSBBbiBlc2NhcGVkIHN0cmluZy4K
KyAqLworZnVuY3Rpb24gcXVvdGVBdHRyaWJ1dGVWYWx1ZUZvckJyb3dzZXIodmFsdWUpIHsKKyAg
cmV0dXJuICciJyArIGVzY2FwZVRleHRDb250ZW50Rm9yQnJvd3Nlcih2YWx1ZSkgKyAnIic7Cit9
CisKK21vZHVsZS5leHBvcnRzID0gcXVvdGVBdHRyaWJ1dGVWYWx1ZUZvckJyb3dzZXI7Cit9LHsi
MTAwIjoxMDB9XSwxMTY6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisg
KiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQK
KyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIAorICovCisndXNlIHN0cmljdCc7CisKKy8qKgor
ICogV0FSTklORzogRE8gTk9UIG1hbnVhbGx5IHJlcXVpcmUgdGhpcyBtb2R1bGUuCisgKiBUaGlz
IGlzIGEgcmVwbGFjZW1lbnQgZm9yIGBpbnZhcmlhbnQoLi4uKWAgdXNlZCBieSB0aGUgZXJyb3Ig
Y29kZSBzeXN0ZW0KKyAqIGFuZCB3aWxsIF9vbmx5XyBiZSByZXF1aXJlZCBieSB0aGUgY29ycmVz
cG9uZGluZyBiYWJlbCBwYXNzLgorICogSXQgYWx3YXlzIHRocm93cy4KKyAqLworCitmdW5jdGlv
biByZWFjdFByb2RJbnZhcmlhbnQoY29kZSkgeworICB2YXIgYXJnQ291bnQgPSBhcmd1bWVudHMu
bGVuZ3RoIC0gMTsKKworICB2YXIgbWVzc2FnZSA9ICdNaW5pZmllZCBSZWFjdCBlcnJvciAjJyAr
IGNvZGUgKyAnOyB2aXNpdCAnICsgJ2h0dHA6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9j
cy9lcnJvci1kZWNvZGVyLmh0bWw/aW52YXJpYW50PScgKyBjb2RlOworCisgIGZvciAodmFyIGFy
Z0lkeCA9IDA7IGFyZ0lkeCA8IGFyZ0NvdW50OyBhcmdJZHgrKykgeworICAgIG1lc3NhZ2UgKz0g
JyZhcmdzW109JyArIGVuY29kZVVSSUNvbXBvbmVudChhcmd1bWVudHNbYXJnSWR4ICsgMV0pOwor
ICB9CisKKyAgbWVzc2FnZSArPSAnIGZvciB0aGUgZnVsbCBtZXNzYWdlIG9yIHVzZSB0aGUgbm9u
LW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCcgKyAnIGZvciBmdWxsIGVycm9ycyBhbmQgYWRkaXRp
b25hbCBoZWxwZnVsIHdhcm5pbmdzLic7CisKKyAgdmFyIGVycm9yID0gbmV3IEVycm9yKG1lc3Nh
Z2UpOworICBlcnJvci5uYW1lID0gJ0ludmFyaWFudCBWaW9sYXRpb24nOworICBlcnJvci5mcmFt
ZXNUb1BvcCA9IDE7IC8vIHdlIGRvbid0IGNhcmUgYWJvdXQgcmVhY3RQcm9kSW52YXJpYW50J3Mg
b3duIGZyYW1lCisKKyAgdGhyb3cgZXJyb3I7Cit9CisKK21vZHVsZS5leHBvcnRzID0gcmVhY3RQ
cm9kSW52YXJpYW50OworfSx7fV0sMTE3OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRz
KXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1
bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3Zh
ciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IF9kZXJlcV8oMTI2KTsKK3ZhciBET01OYW1lc3BhY2Vz
ID0gX2RlcmVxXygxMCk7CisKK3ZhciBXSElURVNQQUNFX1RFU1QgPSAvXlsgXHJcblx0XGZdLzsK
K3ZhciBOT05WSVNJQkxFX1RFU1QgPSAvPCghLS18bGlua3xub3NjcmlwdHxtZXRhfHNjcmlwdHxz
dHlsZSlbIFxyXG5cdFxmXC8+XS87CisKK3ZhciBjcmVhdGVNaWNyb3NvZnRVbnNhZmVMb2NhbEZ1
bmN0aW9uID0gX2RlcmVxXyg5OCk7CisKKy8vIFNWRyB0ZW1wIGNvbnRhaW5lciBmb3IgSUUgbGFj
a2luZyBpbm5lckhUTUwKK3ZhciByZXVzYWJsZVNWR0NvbnRhaW5lcjsKKworLyoqCisgKiBTZXQg
dGhlIGlubmVySFRNTCBwcm9wZXJ0eSBvZiBhIG5vZGUsIGVuc3VyaW5nIHRoYXQgd2hpdGVzcGFj
ZSBpcyBwcmVzZXJ2ZWQKKyAqIGV2ZW4gaW4gSUU4LgorICoKKyAqIEBwYXJhbSB7RE9NRWxlbWVu
dH0gbm9kZQorICogQHBhcmFtIHtzdHJpbmd9IGh0bWwKKyAqIEBpbnRlcm5hbAorICovCit2YXIg
c2V0SW5uZXJIVE1MID0gY3JlYXRlTWljcm9zb2Z0VW5zYWZlTG9jYWxGdW5jdGlvbihmdW5jdGlv
biAobm9kZSwgaHRtbCkgeworICAvLyBJRSBkb2VzIG5vdCBoYXZlIGlubmVySFRNTCBmb3IgU1ZH
IG5vZGVzLCBzbyBpbnN0ZWFkIHdlIGluamVjdCB0aGUKKyAgLy8gbmV3IG1hcmt1cCBpbiBhIHRl
bXAgbm9kZSBhbmQgdGhlbiBtb3ZlIHRoZSBjaGlsZCBub2RlcyBhY3Jvc3MgaW50bworICAvLyB0
aGUgdGFyZ2V0IG5vZGUKKyAgaWYgKG5vZGUubmFtZXNwYWNlVVJJID09PSBET01OYW1lc3BhY2Vz
LnN2ZyAmJiAhKCdpbm5lckhUTUwnIGluIG5vZGUpKSB7CisgICAgcmV1c2FibGVTVkdDb250YWlu
ZXIgPSByZXVzYWJsZVNWR0NvbnRhaW5lciB8fCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYn
KTsKKyAgICByZXVzYWJsZVNWR0NvbnRhaW5lci5pbm5lckhUTUwgPSAnPHN2Zz4nICsgaHRtbCAr
ICc8L3N2Zz4nOworICAgIHZhciBzdmdOb2RlID0gcmV1c2FibGVTVkdDb250YWluZXIuZmlyc3RD
aGlsZDsKKyAgICB3aGlsZSAoc3ZnTm9kZS5maXJzdENoaWxkKSB7CisgICAgICBub2RlLmFwcGVu
ZENoaWxkKHN2Z05vZGUuZmlyc3RDaGlsZCk7CisgICAgfQorICB9IGVsc2UgeworICAgIG5vZGUu
aW5uZXJIVE1MID0gaHRtbDsKKyAgfQorfSk7CisKK2lmIChFeGVjdXRpb25FbnZpcm9ubWVudC5j
YW5Vc2VET00pIHsKKyAgLy8gSUU4OiBXaGVuIHVwZGF0aW5nIGEganVzdCBjcmVhdGVkIG5vZGUg
d2l0aCBpbm5lckhUTUwgb25seSBsZWFkaW5nCisgIC8vIHdoaXRlc3BhY2UgaXMgcmVtb3ZlZC4g
V2hlbiB1cGRhdGluZyBhbiBleGlzdGluZyBub2RlIHdpdGggaW5uZXJIVE1MCisgIC8vIHdoaXRl
c3BhY2UgaW4gcm9vdCBUZXh0Tm9kZXMgaXMgYWxzbyBjb2xsYXBzZWQuCisgIC8vIEBzZWUgcXVp
cmtzbW9kZS5vcmcvYnVncmVwb3J0cy9hcmNoaXZlcy8yMDA0LzExL2lubmVyaHRtbF9hbmRfdC5o
dG1sCisKKyAgLy8gRmVhdHVyZSBkZXRlY3Rpb247IG9ubHkgSUU4IGlzIGtub3duIHRvIGJlaGF2
ZSBpbXByb3Blcmx5IGxpa2UgdGhpcy4KKyAgdmFyIHRlc3RFbGVtZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnZGl2Jyk7CisgIHRlc3RFbGVtZW50LmlubmVySFRNTCA9ICcgJzsKKyAgaWYg
KHRlc3RFbGVtZW50LmlubmVySFRNTCA9PT0gJycpIHsKKyAgICBzZXRJbm5lckhUTUwgPSBmdW5j
dGlvbiAobm9kZSwgaHRtbCkgeworICAgICAgLy8gTWFnaWMgdGhlb3J5OiBJRTggc3VwcG9zZWRs
eSBkaWZmZXJlbnRpYXRlcyBiZXR3ZWVuIGFkZGVkIGFuZCB1cGRhdGVkCisgICAgICAvLyBub2Rl
cyB3aGVuIHByb2Nlc3NpbmcgaW5uZXJIVE1MLCBpbm5lckhUTUwgb24gdXBkYXRlZCBub2RlcyBz
dWZmZXJzCisgICAgICAvLyBmcm9tIHdvcnNlIHdoaXRlc3BhY2UgYmVoYXZpb3IuIFJlLWFkZGlu
ZyBhIG5vZGUgbGlrZSB0aGlzIHRyaWdnZXJzCisgICAgICAvLyB0aGUgaW5pdGlhbCBhbmQgbW9y
ZSBmYXZvcmFibGUgd2hpdGVzcGFjZSBiZWhhdmlvci4KKyAgICAgIC8vIFRPRE86IFdoYXQgdG8g
ZG8gb24gYSBkZXRhY2hlZCBub2RlPworICAgICAgaWYgKG5vZGUucGFyZW50Tm9kZSkgeworICAg
ICAgICBub2RlLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKG5vZGUsIG5vZGUpOworICAgICAgfQor
CisgICAgICAvLyBXZSBhbHNvIGltcGxlbWVudCBhIHdvcmthcm91bmQgZm9yIG5vbi12aXNpYmxl
IHRhZ3MgZGlzYXBwZWFyaW5nIGludG8KKyAgICAgIC8vIHRoaW4gYWlyIG9uIElFOCwgdGhpcyBv
bmx5IGhhcHBlbnMgaWYgdGhlcmUgaXMgbm8gdmlzaWJsZSB0ZXh0CisgICAgICAvLyBpbi1mcm9u
dCBvZiB0aGUgbm9uLXZpc2libGUgdGFncy4gUGlnZ3liYWNrIG9uIHRoZSB3aGl0ZXNwYWNlIGZp
eAorICAgICAgLy8gYW5kIHNpbXBseSBjaGVjayBpZiBhbnkgbm9uLXZpc2libGUgdGFncyBhcHBl
YXIgaW4gdGhlIHNvdXJjZS4KKyAgICAgIGlmIChXSElURVNQQUNFX1RFU1QudGVzdChodG1sKSB8
fCBodG1sWzBdID09PSAnPCcgJiYgTk9OVklTSUJMRV9URVNULnRlc3QoaHRtbCkpIHsKKyAgICAg
ICAgLy8gUmVjb3ZlciBsZWFkaW5nIHdoaXRlc3BhY2UgYnkgdGVtcG9yYXJpbHkgcHJlcGVuZGlu
ZyBhbnkgY2hhcmFjdGVyLgorICAgICAgICAvLyBcdUZFRkYgaGFzIHRoZSBwb3RlbnRpYWwgYWR2
YW50YWdlIG9mIGJlaW5nIHplcm8td2lkdGgvaW52aXNpYmxlLgorICAgICAgICAvLyBVZ2xpZnlK
UyBkcm9wcyBVK0ZFRkYgY2hhcnMgd2hlbiBwYXJzaW5nLCBzbyB1c2UgU3RyaW5nLmZyb21DaGFy
Q29kZQorICAgICAgICAvLyBpbiBob3BlcyB0aGF0IHRoaXMgaXMgcHJlc2VydmVkIGV2ZW4gaWYg
Ilx1RkVGRiIgaXMgdHJhbnNmb3JtZWQgdG8KKyAgICAgICAgLy8gdGhlIGFjdHVhbCBVbmljb2Rl
IGNoYXJhY3RlciAoYnkgQmFiZWwsIGZvciBleGFtcGxlKS4KKyAgICAgICAgLy8gaHR0cHM6Ly9n
aXRodWIuY29tL21pc2hvby9VZ2xpZnlKUzIvYmxvYi92Mi40LjIwL2xpYi9wYXJzZS5qcyNMMjE2
CisgICAgICAgIG5vZGUuaW5uZXJIVE1MID0gU3RyaW5nLmZyb21DaGFyQ29kZSgweEZFRkYpICsg
aHRtbDsKKworICAgICAgICAvLyBkZWxldGVEYXRhIGxlYXZlcyBhbiBlbXB0eSBgVGV4dE5vZGVg
IHdoaWNoIG9mZnNldHMgdGhlIGluZGV4IG9mIGFsbAorICAgICAgICAvLyBjaGlsZHJlbi4gRGVm
aW5pdGVseSB3YW50IHRvIGF2b2lkIHRoaXMuCisgICAgICAgIHZhciB0ZXh0Tm9kZSA9IG5vZGUu
Zmlyc3RDaGlsZDsKKyAgICAgICAgaWYgKHRleHROb2RlLmRhdGEubGVuZ3RoID09PSAxKSB7Cisg
ICAgICAgICAgbm9kZS5yZW1vdmVDaGlsZCh0ZXh0Tm9kZSk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgdGV4dE5vZGUuZGVsZXRlRGF0YSgwLCAxKTsKKyAgICAgICAgfQorICAgICAgfSBl
bHNlIHsKKyAgICAgICAgbm9kZS5pbm5lckhUTUwgPSBodG1sOworICAgICAgfQorICAgIH07Cisg
IH0KKyAgdGVzdEVsZW1lbnQgPSBudWxsOworfQorCittb2R1bGUuZXhwb3J0cyA9IHNldElubmVy
SFRNTDsKK30seyIxMCI6MTAsIjEyNiI6MTI2LCI5OCI6OTh9XSwxMTg6W2Z1bmN0aW9uKF9kZXJl
cV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNl
Ym9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBj
b2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUK
KyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJl
ZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQg
aW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1
c2Ugc3RyaWN0JzsKKwordmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gX2RlcmVxXygxMjYpOwor
dmFyIGVzY2FwZVRleHRDb250ZW50Rm9yQnJvd3NlciA9IF9kZXJlcV8oMTAwKTsKK3ZhciBzZXRJ
bm5lckhUTUwgPSBfZGVyZXFfKDExNyk7CisKKy8qKgorICogU2V0IHRoZSB0ZXh0Q29udGVudCBw
cm9wZXJ0eSBvZiBhIG5vZGUsIGVuc3VyaW5nIHRoYXQgd2hpdGVzcGFjZSBpcyBwcmVzZXJ2ZWQK
KyAqIGV2ZW4gaW4gSUU4LiBpbm5lclRleHQgaXMgYSBwb29yIHN1YnN0aXR1dGUgZm9yIHRleHRD
b250ZW50IGFuZCwgYW1vbmcgbWFueQorICogaXNzdWVzLCBpbnNlcnRzIDxicj4gaW5zdGVhZCBv
ZiB0aGUgbGl0ZXJhbCBuZXdsaW5lIGNoYXJzLiBpbm5lckhUTUwgYmVoYXZlcworICogYXMgaXQg
c2hvdWxkLgorICoKKyAqIEBwYXJhbSB7RE9NRWxlbWVudH0gbm9kZQorICogQHBhcmFtIHtzdHJp
bmd9IHRleHQKKyAqIEBpbnRlcm5hbAorICovCit2YXIgc2V0VGV4dENvbnRlbnQgPSBmdW5jdGlv
biAobm9kZSwgdGV4dCkgeworICBpZiAodGV4dCkgeworICAgIHZhciBmaXJzdENoaWxkID0gbm9k
ZS5maXJzdENoaWxkOworCisgICAgaWYgKGZpcnN0Q2hpbGQgJiYgZmlyc3RDaGlsZCA9PT0gbm9k
ZS5sYXN0Q2hpbGQgJiYgZmlyc3RDaGlsZC5ub2RlVHlwZSA9PT0gMykgeworICAgICAgZmlyc3RD
aGlsZC5ub2RlVmFsdWUgPSB0ZXh0OworICAgICAgcmV0dXJuOworICAgIH0KKyAgfQorICBub2Rl
LnRleHRDb250ZW50ID0gdGV4dDsKK307CisKK2lmIChFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5V
c2VET00pIHsKKyAgaWYgKCEoJ3RleHRDb250ZW50JyBpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1l
bnQpKSB7CisgICAgc2V0VGV4dENvbnRlbnQgPSBmdW5jdGlvbiAobm9kZSwgdGV4dCkgeworICAg
ICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IDMpIHsKKyAgICAgICAgbm9kZS5ub2RlVmFsdWUgPSB0
ZXh0OworICAgICAgICByZXR1cm47CisgICAgICB9CisgICAgICBzZXRJbm5lckhUTUwobm9kZSwg
ZXNjYXBlVGV4dENvbnRlbnRGb3JCcm93c2VyKHRleHQpKTsKKyAgICB9OworICB9Cit9CisKK21v
ZHVsZS5leHBvcnRzID0gc2V0VGV4dENvbnRlbnQ7Cit9LHsiMTAwIjoxMDAsIjExNyI6MTE3LCIx
MjYiOjEyNn1dLDExOTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAq
IENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCisvKioKKyAqIEdpdmVu
IGEgYHByZXZFbGVtZW50YCBhbmQgYG5leHRFbGVtZW50YCwgZGV0ZXJtaW5lcyBpZiB0aGUgZXhp
c3RpbmcKKyAqIGluc3RhbmNlIHNob3VsZCBiZSB1cGRhdGVkIGFzIG9wcG9zZWQgdG8gYmVpbmcg
ZGVzdHJveWVkIG9yIHJlcGxhY2VkIGJ5IGEgbmV3CisgKiBpbnN0YW5jZS4gQm90aCBhcmd1bWVu
dHMgYXJlIGVsZW1lbnRzLiBUaGlzIGVuc3VyZXMgdGhhdCB0aGlzIGxvZ2ljIGNhbgorICogb3Bl
cmF0ZSBvbiBzdGF0ZWxlc3MgdHJlZXMgd2l0aG91dCBhbnkgYmFja2luZyBpbnN0YW5jZS4KKyAq
CisgKiBAcGFyYW0gez9vYmplY3R9IHByZXZFbGVtZW50CisgKiBAcGFyYW0gez9vYmplY3R9IG5l
eHRFbGVtZW50CisgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHRoZSBleGlzdGluZyBpbnN0
YW5jZSBzaG91bGQgYmUgdXBkYXRlZC4KKyAqIEBwcm90ZWN0ZWQKKyAqLworCitmdW5jdGlvbiBz
aG91bGRVcGRhdGVSZWFjdENvbXBvbmVudChwcmV2RWxlbWVudCwgbmV4dEVsZW1lbnQpIHsKKyAg
dmFyIHByZXZFbXB0eSA9IHByZXZFbGVtZW50ID09PSBudWxsIHx8IHByZXZFbGVtZW50ID09PSBm
YWxzZTsKKyAgdmFyIG5leHRFbXB0eSA9IG5leHRFbGVtZW50ID09PSBudWxsIHx8IG5leHRFbGVt
ZW50ID09PSBmYWxzZTsKKyAgaWYgKHByZXZFbXB0eSB8fCBuZXh0RW1wdHkpIHsKKyAgICByZXR1
cm4gcHJldkVtcHR5ID09PSBuZXh0RW1wdHk7CisgIH0KKworICB2YXIgcHJldlR5cGUgPSB0eXBl
b2YgcHJldkVsZW1lbnQ7CisgIHZhciBuZXh0VHlwZSA9IHR5cGVvZiBuZXh0RWxlbWVudDsKKyAg
aWYgKHByZXZUeXBlID09PSAnc3RyaW5nJyB8fCBwcmV2VHlwZSA9PT0gJ251bWJlcicpIHsKKyAg
ICByZXR1cm4gbmV4dFR5cGUgPT09ICdzdHJpbmcnIHx8IG5leHRUeXBlID09PSAnbnVtYmVyJzsK
KyAgfSBlbHNlIHsKKyAgICByZXR1cm4gbmV4dFR5cGUgPT09ICdvYmplY3QnICYmIHByZXZFbGVt
ZW50LnR5cGUgPT09IG5leHRFbGVtZW50LnR5cGUgJiYgcHJldkVsZW1lbnQua2V5ID09PSBuZXh0
RWxlbWVudC5rZXk7CisgIH0KK30KKworbW9kdWxlLmV4cG9ydHMgPSBzaG91bGRVcGRhdGVSZWFj
dENvbXBvbmVudDsKK30se31dLDEyMDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7
CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5k
ZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdy
YW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxl
IGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIg
X3Byb2RJbnZhcmlhbnQgPSBfZGVyZXFfKDExNik7CisKK3ZhciBSZWFjdEN1cnJlbnRPd25lciA9
IF9kZXJlcV8oMTIzKTsKK3ZhciBSRUFDVF9FTEVNRU5UX1RZUEUgPSBfZGVyZXFfKDQ4KTsKKwor
dmFyIGdldEl0ZXJhdG9yRm4gPSBfZGVyZXFfKDEwNyk7Cit2YXIgaW52YXJpYW50ID0gX2RlcmVx
XygxNDApOwordmFyIEtleUVzY2FwZVV0aWxzID0gX2RlcmVxXygyMik7Cit2YXIgd2FybmluZyA9
IF9kZXJlcV8oMTQ3KTsKKwordmFyIFNFUEFSQVRPUiA9ICcuJzsKK3ZhciBTVUJTRVBBUkFUT1Ig
PSAnOic7CisKKy8qKgorICogVGhpcyBpcyBpbmxpbmVkIGZyb20gUmVhY3RFbGVtZW50IHNpbmNl
IHRoaXMgZmlsZSBpcyBzaGFyZWQgYmV0d2VlbgorICogaXNvbW9ycGhpYyBhbmQgcmVuZGVyZXJz
LiBXZSBjb3VsZCBleHRyYWN0IHRoaXMgdG8gYQorICoKKyAqLworCisvKioKKyAqIFRPRE86IFRl
c3QgdGhhdCBhIHNpbmdsZSBjaGlsZCBhbmQgYW4gYXJyYXkgd2l0aCBvbmUgaXRlbSBoYXZlIHRo
ZSBzYW1lIGtleQorICogcGF0dGVybi4KKyAqLworCit2YXIgZGlkV2FybkFib3V0TWFwcyA9IGZh
bHNlOworCisvKioKKyAqIEdlbmVyYXRlIGEga2V5IHN0cmluZyB0aGF0IGlkZW50aWZpZXMgYSBj
b21wb25lbnQgd2l0aGluIGEgc2V0LgorICoKKyAqIEBwYXJhbSB7Kn0gY29tcG9uZW50IEEgY29t
cG9uZW50IHRoYXQgY291bGQgY29udGFpbiBhIG1hbnVhbCBrZXkuCisgKiBAcGFyYW0ge251bWJl
cn0gaW5kZXggSW5kZXggdGhhdCBpcyB1c2VkIGlmIGEgbWFudWFsIGtleSBpcyBub3QgcHJvdmlk
ZWQuCisgKiBAcmV0dXJuIHtzdHJpbmd9CisgKi8KK2Z1bmN0aW9uIGdldENvbXBvbmVudEtleShj
b21wb25lbnQsIGluZGV4KSB7CisgIC8vIERvIHNvbWUgdHlwZWNoZWNraW5nIGhlcmUgc2luY2Ug
d2UgY2FsbCB0aGlzIGJsaW5kbHkuIFdlIHdhbnQgdG8gZW5zdXJlCisgIC8vIHRoYXQgd2UgZG9u
J3QgYmxvY2sgcG90ZW50aWFsIGZ1dHVyZSBFUyBBUElzLgorICBpZiAoY29tcG9uZW50ICYmIHR5
cGVvZiBjb21wb25lbnQgPT09ICdvYmplY3QnICYmIGNvbXBvbmVudC5rZXkgIT0gbnVsbCkgewor
ICAgIC8vIEV4cGxpY2l0IGtleQorICAgIHJldHVybiBLZXlFc2NhcGVVdGlscy5lc2NhcGUoY29t
cG9uZW50LmtleSk7CisgIH0KKyAgLy8gSW1wbGljaXQga2V5IGRldGVybWluZWQgYnkgdGhlIGlu
ZGV4IGluIHRoZSBzZXQKKyAgcmV0dXJuIGluZGV4LnRvU3RyaW5nKDM2KTsKK30KKworLyoqCisg
KiBAcGFyYW0gez8qfSBjaGlsZHJlbiBDaGlsZHJlbiB0cmVlIGNvbnRhaW5lci4KKyAqIEBwYXJh
bSB7IXN0cmluZ30gbmFtZVNvRmFyIE5hbWUgb2YgdGhlIGtleSBwYXRoIHNvIGZhci4KKyAqIEBw
YXJhbSB7IWZ1bmN0aW9ufSBjYWxsYmFjayBDYWxsYmFjayB0byBpbnZva2Ugd2l0aCBlYWNoIGNo
aWxkIGZvdW5kLgorICogQHBhcmFtIHs/Kn0gdHJhdmVyc2VDb250ZXh0IFVzZWQgdG8gcGFzcyBp
bmZvcm1hdGlvbiB0aHJvdWdob3V0IHRoZSB0cmF2ZXJzYWwKKyAqIHByb2Nlc3MuCisgKiBAcmV0
dXJuIHshbnVtYmVyfSBUaGUgbnVtYmVyIG9mIGNoaWxkcmVuIGluIHRoaXMgc3VidHJlZS4KKyAq
LworZnVuY3Rpb24gdHJhdmVyc2VBbGxDaGlsZHJlbkltcGwoY2hpbGRyZW4sIG5hbWVTb0Zhciwg
Y2FsbGJhY2ssIHRyYXZlcnNlQ29udGV4dCkgeworICB2YXIgdHlwZSA9IHR5cGVvZiBjaGlsZHJl
bjsKKworICBpZiAodHlwZSA9PT0gJ3VuZGVmaW5lZCcgfHwgdHlwZSA9PT0gJ2Jvb2xlYW4nKSB7
CisgICAgLy8gQWxsIG9mIHRoZSBhYm92ZSBhcmUgcGVyY2VpdmVkIGFzIG51bGwuCisgICAgY2hp
bGRyZW4gPSBudWxsOworICB9CisKKyAgaWYgKGNoaWxkcmVuID09PSBudWxsIHx8IHR5cGUgPT09
ICdzdHJpbmcnIHx8IHR5cGUgPT09ICdudW1iZXInIHx8CisgIC8vIFRoZSBmb2xsb3dpbmcgaXMg
aW5saW5lZCBmcm9tIFJlYWN0RWxlbWVudC4gVGhpcyBtZWFucyB3ZSBjYW4gb3B0aW1pemUKKyAg
Ly8gc29tZSBjaGVja3MuIFJlYWN0IEZpYmVyIGFsc28gaW5saW5lcyB0aGlzIGxvZ2ljIGZvciBz
aW1pbGFyIHB1cnBvc2VzLgorICB0eXBlID09PSAnb2JqZWN0JyAmJiBjaGlsZHJlbi4kJHR5cGVv
ZiA9PT0gUkVBQ1RfRUxFTUVOVF9UWVBFKSB7CisgICAgY2FsbGJhY2sodHJhdmVyc2VDb250ZXh0
LCBjaGlsZHJlbiwKKyAgICAvLyBJZiBpdCdzIHRoZSBvbmx5IGNoaWxkLCB0cmVhdCB0aGUgbmFt
ZSBhcyBpZiBpdCB3YXMgd3JhcHBlZCBpbiBhbiBhcnJheQorICAgIC8vIHNvIHRoYXQgaXQncyBj
b25zaXN0ZW50IGlmIHRoZSBudW1iZXIgb2YgY2hpbGRyZW4gZ3Jvd3MuCisgICAgbmFtZVNvRmFy
ID09PSAnJyA/IFNFUEFSQVRPUiArIGdldENvbXBvbmVudEtleShjaGlsZHJlbiwgMCkgOiBuYW1l
U29GYXIpOworICAgIHJldHVybiAxOworICB9CisKKyAgdmFyIGNoaWxkOworICB2YXIgbmV4dE5h
bWU7CisgIHZhciBzdWJ0cmVlQ291bnQgPSAwOyAvLyBDb3VudCBvZiBjaGlsZHJlbiBmb3VuZCBp
biB0aGUgY3VycmVudCBzdWJ0cmVlLgorICB2YXIgbmV4dE5hbWVQcmVmaXggPSBuYW1lU29GYXIg
PT09ICcnID8gU0VQQVJBVE9SIDogbmFtZVNvRmFyICsgU1VCU0VQQVJBVE9SOworCisgIGlmIChB
cnJheS5pc0FycmF5KGNoaWxkcmVuKSkgeworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRy
ZW4ubGVuZ3RoOyBpKyspIHsKKyAgICAgIGNoaWxkID0gY2hpbGRyZW5baV07CisgICAgICBuZXh0
TmFtZSA9IG5leHROYW1lUHJlZml4ICsgZ2V0Q29tcG9uZW50S2V5KGNoaWxkLCBpKTsKKyAgICAg
IHN1YnRyZWVDb3VudCArPSB0cmF2ZXJzZUFsbENoaWxkcmVuSW1wbChjaGlsZCwgbmV4dE5hbWUs
IGNhbGxiYWNrLCB0cmF2ZXJzZUNvbnRleHQpOworICAgIH0KKyAgfSBlbHNlIHsKKyAgICB2YXIg
aXRlcmF0b3JGbiA9IGdldEl0ZXJhdG9yRm4oY2hpbGRyZW4pOworICAgIGlmIChpdGVyYXRvckZu
KSB7CisgICAgICB2YXIgaXRlcmF0b3IgPSBpdGVyYXRvckZuLmNhbGwoY2hpbGRyZW4pOworICAg
ICAgdmFyIHN0ZXA7CisgICAgICBpZiAoaXRlcmF0b3JGbiAhPT0gY2hpbGRyZW4uZW50cmllcykg
eworICAgICAgICB2YXIgaWkgPSAwOworICAgICAgICB3aGlsZSAoIShzdGVwID0gaXRlcmF0b3Iu
bmV4dCgpKS5kb25lKSB7CisgICAgICAgICAgY2hpbGQgPSBzdGVwLnZhbHVlOworICAgICAgICAg
IG5leHROYW1lID0gbmV4dE5hbWVQcmVmaXggKyBnZXRDb21wb25lbnRLZXkoY2hpbGQsIGlpKysp
OworICAgICAgICAgIHN1YnRyZWVDb3VudCArPSB0cmF2ZXJzZUFsbENoaWxkcmVuSW1wbChjaGls
ZCwgbmV4dE5hbWUsIGNhbGxiYWNrLCB0cmF2ZXJzZUNvbnRleHQpOworICAgICAgICB9CisgICAg
ICB9IGVsc2UgeworICAgICAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7
CisgICAgICAgICAgdmFyIG1hcHNBc0NoaWxkcmVuQWRkZW5kdW0gPSAnJzsKKyAgICAgICAgICBp
ZiAoUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCkgeworICAgICAgICAgICAgdmFyIG1hcHNBc0No
aWxkcmVuT3duZXJOYW1lID0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVudC5nZXROYW1lKCk7Cisg
ICAgICAgICAgICBpZiAobWFwc0FzQ2hpbGRyZW5Pd25lck5hbWUpIHsKKyAgICAgICAgICAgICAg
bWFwc0FzQ2hpbGRyZW5BZGRlbmR1bSA9ICcgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgYCcg
KyBtYXBzQXNDaGlsZHJlbk93bmVyTmFtZSArICdgLic7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgfQorICAgICAgICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmco
ZGlkV2FybkFib3V0TWFwcywgJ1VzaW5nIE1hcHMgYXMgY2hpbGRyZW4gaXMgbm90IHlldCBmdWxs
eSBzdXBwb3J0ZWQuIEl0IGlzIGFuICcgKyAnZXhwZXJpbWVudGFsIGZlYXR1cmUgdGhhdCBtaWdo
dCBiZSByZW1vdmVkLiBDb252ZXJ0IGl0IHRvIGEgJyArICdzZXF1ZW5jZSAvIGl0ZXJhYmxlIG9m
IGtleWVkIFJlYWN0RWxlbWVudHMgaW5zdGVhZC4lcycsIG1hcHNBc0NoaWxkcmVuQWRkZW5kdW0p
IDogdm9pZCAwOworICAgICAgICAgIGRpZFdhcm5BYm91dE1hcHMgPSB0cnVlOworICAgICAgICB9
CisgICAgICAgIC8vIEl0ZXJhdG9yIHdpbGwgcHJvdmlkZSBlbnRyeSBbayx2XSB0dXBsZXMgcmF0
aGVyIHRoYW4gdmFsdWVzLgorICAgICAgICB3aGlsZSAoIShzdGVwID0gaXRlcmF0b3IubmV4dCgp
KS5kb25lKSB7CisgICAgICAgICAgdmFyIGVudHJ5ID0gc3RlcC52YWx1ZTsKKyAgICAgICAgICBp
ZiAoZW50cnkpIHsKKyAgICAgICAgICAgIGNoaWxkID0gZW50cnlbMV07CisgICAgICAgICAgICBu
ZXh0TmFtZSA9IG5leHROYW1lUHJlZml4ICsgS2V5RXNjYXBlVXRpbHMuZXNjYXBlKGVudHJ5WzBd
KSArIFNVQlNFUEFSQVRPUiArIGdldENvbXBvbmVudEtleShjaGlsZCwgMCk7CisgICAgICAgICAg
ICBzdWJ0cmVlQ291bnQgKz0gdHJhdmVyc2VBbGxDaGlsZHJlbkltcGwoY2hpbGQsIG5leHROYW1l
LCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgIH0KKyAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdvYmplY3QnKSB7CisgICAgICB2YXIgYWRk
ZW5kdW0gPSAnJzsKKyAgICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsK
KyAgICAgICAgYWRkZW5kdW0gPSAnIElmIHlvdSBtZWFudCB0byByZW5kZXIgYSBjb2xsZWN0aW9u
IG9mIGNoaWxkcmVuLCB1c2UgYW4gYXJyYXkgJyArICdpbnN0ZWFkIG9yIHdyYXAgdGhlIG9iamVj
dCB1c2luZyBjcmVhdGVGcmFnbWVudChvYmplY3QpIGZyb20gdGhlICcgKyAnUmVhY3QgYWRkLW9u
cy4nOworICAgICAgICBpZiAoY2hpbGRyZW4uX2lzUmVhY3RFbGVtZW50KSB7CisgICAgICAgICAg
YWRkZW5kdW0gPSAnIEl0IGxvb2tzIGxpa2UgeW91XCdyZSB1c2luZyBhbiBlbGVtZW50IGNyZWF0
ZWQgYnkgYSBkaWZmZXJlbnQgJyArICd2ZXJzaW9uIG9mIFJlYWN0LiBNYWtlIHN1cmUgdG8gdXNl
IG9ubHkgb25lIGNvcHkgb2YgUmVhY3QuJzsKKyAgICAgICAgfQorICAgICAgICBpZiAoUmVhY3RD
dXJyZW50T3duZXIuY3VycmVudCkgeworICAgICAgICAgIHZhciBuYW1lID0gUmVhY3RDdXJyZW50
T3duZXIuY3VycmVudC5nZXROYW1lKCk7CisgICAgICAgICAgaWYgKG5hbWUpIHsKKyAgICAgICAg
ICAgIGFkZGVuZHVtICs9ICcgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgYCcgKyBuYW1lICsg
J2AuJzsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIHZhciBjaGlsZHJl
blN0cmluZyA9IFN0cmluZyhjaGlsZHJlbik7CisgICAgICAhZmFsc2UgPyAiZGV2ZWxvcG1lbnQi
ICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdPYmplY3RzIGFyZSBub3QgdmFs
aWQgYXMgYSBSZWFjdCBjaGlsZCAoZm91bmQ6ICVzKS4lcycsIGNoaWxkcmVuU3RyaW5nID09PSAn
W29iamVjdCBPYmplY3RdJyA/ICdvYmplY3Qgd2l0aCBrZXlzIHsnICsgT2JqZWN0LmtleXMoY2hp
bGRyZW4pLmpvaW4oJywgJykgKyAnfScgOiBjaGlsZHJlblN0cmluZywgYWRkZW5kdW0pIDogX3By
b2RJbnZhcmlhbnQoJzMxJywgY2hpbGRyZW5TdHJpbmcgPT09ICdbb2JqZWN0IE9iamVjdF0nID8g
J29iamVjdCB3aXRoIGtleXMgeycgKyBPYmplY3Qua2V5cyhjaGlsZHJlbikuam9pbignLCAnKSAr
ICd9JyA6IGNoaWxkcmVuU3RyaW5nLCBhZGRlbmR1bSkgOiB2b2lkIDA7CisgICAgfQorICB9CisK
KyAgcmV0dXJuIHN1YnRyZWVDb3VudDsKK30KKworLyoqCisgKiBUcmF2ZXJzZXMgY2hpbGRyZW4g
dGhhdCBhcmUgdHlwaWNhbGx5IHNwZWNpZmllZCBhcyBgcHJvcHMuY2hpbGRyZW5gLCBidXQKKyAq
IG1pZ2h0IGFsc28gYmUgc3BlY2lmaWVkIHRocm91Z2ggYXR0cmlidXRlczoKKyAqCisgKiAtIGB0
cmF2ZXJzZUFsbENoaWxkcmVuKHRoaXMucHJvcHMuY2hpbGRyZW4sIC4uLilgCisgKiAtIGB0cmF2
ZXJzZUFsbENoaWxkcmVuKHRoaXMucHJvcHMubGVmdFBhbmVsQ2hpbGRyZW4sIC4uLilgCisgKgor
ICogVGhlIGB0cmF2ZXJzZUNvbnRleHRgIGlzIGFuIG9wdGlvbmFsIGFyZ3VtZW50IHRoYXQgaXMg
cGFzc2VkIHRocm91Z2ggdGhlCisgKiBlbnRpcmUgdHJhdmVyc2FsLiBJdCBjYW4gYmUgdXNlZCB0
byBzdG9yZSBhY2N1bXVsYXRpb25zIG9yIGFueXRoaW5nIGVsc2UgdGhhdAorICogdGhlIGNhbGxi
YWNrIG1pZ2h0IGZpbmQgcmVsZXZhbnQuCisgKgorICogQHBhcmFtIHs/Kn0gY2hpbGRyZW4gQ2hp
bGRyZW4gdHJlZSBvYmplY3QuCisgKiBAcGFyYW0geyFmdW5jdGlvbn0gY2FsbGJhY2sgVG8gaW52
b2tlIHVwb24gdHJhdmVyc2luZyBlYWNoIGNoaWxkLgorICogQHBhcmFtIHs/Kn0gdHJhdmVyc2VD
b250ZXh0IENvbnRleHQgZm9yIHRyYXZlcnNhbC4KKyAqIEByZXR1cm4geyFudW1iZXJ9IFRoZSBu
dW1iZXIgb2YgY2hpbGRyZW4gaW4gdGhpcyBzdWJ0cmVlLgorICovCitmdW5jdGlvbiB0cmF2ZXJz
ZUFsbENoaWxkcmVuKGNoaWxkcmVuLCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KSB7CisgIGlm
IChjaGlsZHJlbiA9PSBudWxsKSB7CisgICAgcmV0dXJuIDA7CisgIH0KKworICByZXR1cm4gdHJh
dmVyc2VBbGxDaGlsZHJlbkltcGwoY2hpbGRyZW4sICcnLCBjYWxsYmFjaywgdHJhdmVyc2VDb250
ZXh0KTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSB0cmF2ZXJzZUFsbENoaWxkcmVuOworfSx7IjEw
NyI6MTA3LCIxMTYiOjExNiwiMTIzIjoxMjMsIjE0MCI6MTQwLCIxNDciOjE0NywiMjIiOjIyLCI0
OCI6NDh9XSwxMjE6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBD
b3B5cmlnaHQgMjAxNS1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qt
c3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBk
aXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2Yg
cGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2Ft
ZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9hc3NpZ24gPSBf
ZGVyZXFfKDE0OCk7CisKK3ZhciBlbXB0eUZ1bmN0aW9uID0gX2RlcmVxXygxMzIpOwordmFyIHdh
cm5pbmcgPSBfZGVyZXFfKDE0Nyk7CisKK3ZhciB2YWxpZGF0ZURPTU5lc3RpbmcgPSBlbXB0eUZ1
bmN0aW9uOworCitpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgIC8vIFRo
aXMgdmFsaWRhdGlvbiBjb2RlIHdhcyB3cml0dGVuIGJhc2VkIG9uIHRoZSBIVE1MNSBwYXJzaW5n
IHNwZWM6CisgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRh
eC5odG1sI2hhcy1hbi1lbGVtZW50LWluLXNjb3BlCisgIC8vCisgIC8vIE5vdGU6IHRoaXMgZG9l
cyBub3QgY2F0Y2ggYWxsIGludmFsaWQgbmVzdGluZywgbm9yIGRvZXMgaXQgdHJ5IHRvIChhcyBp
dCdzCisgIC8vIG5vdCBjbGVhciB3aGF0IHByYWN0aWNhbCBiZW5lZml0IGRvaW5nIHNvIHByb3Zp
ZGVzKTsgaW5zdGVhZCwgd2Ugd2FybiBvbmx5CisgIC8vIGZvciBjYXNlcyB3aGVyZSB0aGUgcGFy
c2VyIHdpbGwgZ2l2ZSBhIHBhcnNlIHRyZWUgZGlmZmVyaW5nIGZyb20gd2hhdCBSZWFjdAorICAv
LyBpbnRlbmRlZC4gRm9yIGV4YW1wbGUsIDxiPjxkaXY+PC9kaXY+PC9iPiBpcyBpbnZhbGlkIGJ1
dCB3ZSBkb24ndCB3YXJuCisgIC8vIGJlY2F1c2UgaXQgc3RpbGwgcGFyc2VzIGNvcnJlY3RseTsg
d2UgZG8gd2FybiBmb3Igb3RoZXIgY2FzZXMgbGlrZSBuZXN0ZWQKKyAgLy8gPHA+IHRhZ3Mgd2hl
cmUgdGhlIGJlZ2lubmluZyBvZiB0aGUgc2Vjb25kIGVsZW1lbnQgaW1wbGljaXRseSBjbG9zZXMg
dGhlCisgIC8vIGZpcnN0LCBjYXVzaW5nIGEgY29uZnVzaW5nIG1lc3MuCisKKyAgLy8gaHR0cHM6
Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjc3BlY2lhbAorICB2
YXIgc3BlY2lhbFRhZ3MgPSBbJ2FkZHJlc3MnLCAnYXBwbGV0JywgJ2FyZWEnLCAnYXJ0aWNsZScs
ICdhc2lkZScsICdiYXNlJywgJ2Jhc2Vmb250JywgJ2Jnc291bmQnLCAnYmxvY2txdW90ZScsICdi
b2R5JywgJ2JyJywgJ2J1dHRvbicsICdjYXB0aW9uJywgJ2NlbnRlcicsICdjb2wnLCAnY29sZ3Jv
dXAnLCAnZGQnLCAnZGV0YWlscycsICdkaXInLCAnZGl2JywgJ2RsJywgJ2R0JywgJ2VtYmVkJywg
J2ZpZWxkc2V0JywgJ2ZpZ2NhcHRpb24nLCAnZmlndXJlJywgJ2Zvb3RlcicsICdmb3JtJywgJ2Zy
YW1lJywgJ2ZyYW1lc2V0JywgJ2gxJywgJ2gyJywgJ2gzJywgJ2g0JywgJ2g1JywgJ2g2JywgJ2hl
YWQnLCAnaGVhZGVyJywgJ2hncm91cCcsICdocicsICdodG1sJywgJ2lmcmFtZScsICdpbWcnLCAn
aW5wdXQnLCAnaXNpbmRleCcsICdsaScsICdsaW5rJywgJ2xpc3RpbmcnLCAnbWFpbicsICdtYXJx
dWVlJywgJ21lbnUnLCAnbWVudWl0ZW0nLCAnbWV0YScsICduYXYnLCAnbm9lbWJlZCcsICdub2Zy
YW1lcycsICdub3NjcmlwdCcsICdvYmplY3QnLCAnb2wnLCAncCcsICdwYXJhbScsICdwbGFpbnRl
eHQnLCAncHJlJywgJ3NjcmlwdCcsICdzZWN0aW9uJywgJ3NlbGVjdCcsICdzb3VyY2UnLCAnc3R5
bGUnLCAnc3VtbWFyeScsICd0YWJsZScsICd0Ym9keScsICd0ZCcsICd0ZW1wbGF0ZScsICd0ZXh0
YXJlYScsICd0Zm9vdCcsICd0aCcsICd0aGVhZCcsICd0aXRsZScsICd0cicsICd0cmFjaycsICd1
bCcsICd3YnInLCAneG1wJ107CisKKyAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9t
dWx0aXBhZ2Uvc3ludGF4Lmh0bWwjaGFzLWFuLWVsZW1lbnQtaW4tc2NvcGUKKyAgdmFyIGluU2Nv
cGVUYWdzID0gWydhcHBsZXQnLCAnY2FwdGlvbicsICdodG1sJywgJ3RhYmxlJywgJ3RkJywgJ3Ro
JywgJ21hcnF1ZWUnLCAnb2JqZWN0JywgJ3RlbXBsYXRlJywKKworICAvLyBodHRwczovL2h0bWwu
c3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNodG1sLWludGVncmF0aW9uLXBv
aW50CisgIC8vIFRPRE86IERpc3Rpbmd1aXNoIGJ5IG5hbWVzcGFjZSBoZXJlIC0tIGZvciA8dGl0
bGU+LCBpbmNsdWRpbmcgaXQgaGVyZQorICAvLyBlcnJzIG9uIHRoZSBzaWRlIG9mIGZld2VyIHdh
cm5pbmdzCisgICdmb3JlaWduT2JqZWN0JywgJ2Rlc2MnLCAndGl0bGUnXTsKKworICAvLyBodHRw
czovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNoYXMtYW4tZWxl
bWVudC1pbi1idXR0b24tc2NvcGUKKyAgdmFyIGJ1dHRvblNjb3BlVGFncyA9IGluU2NvcGVUYWdz
LmNvbmNhdChbJ2J1dHRvbiddKTsKKworICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3Jn
L211bHRpcGFnZS9zeW50YXguaHRtbCNnZW5lcmF0ZS1pbXBsaWVkLWVuZC10YWdzCisgIHZhciBp
bXBsaWVkRW5kVGFncyA9IFsnZGQnLCAnZHQnLCAnbGknLCAnb3B0aW9uJywgJ29wdGdyb3VwJywg
J3AnLCAncnAnLCAncnQnXTsKKworICB2YXIgZW1wdHlBbmNlc3RvckluZm8gPSB7CisgICAgY3Vy
cmVudDogbnVsbCwKKworICAgIGZvcm1UYWc6IG51bGwsCisgICAgYVRhZ0luU2NvcGU6IG51bGws
CisgICAgYnV0dG9uVGFnSW5TY29wZTogbnVsbCwKKyAgICBub2JyVGFnSW5TY29wZTogbnVsbCwK
KyAgICBwVGFnSW5CdXR0b25TY29wZTogbnVsbCwKKworICAgIGxpc3RJdGVtVGFnQXV0b2Nsb3Np
bmc6IG51bGwsCisgICAgZGxJdGVtVGFnQXV0b2Nsb3Npbmc6IG51bGwKKyAgfTsKKworICB2YXIg
dXBkYXRlZEFuY2VzdG9ySW5mbyA9IGZ1bmN0aW9uIChvbGRJbmZvLCB0YWcsIGluc3RhbmNlKSB7
CisgICAgdmFyIGFuY2VzdG9ySW5mbyA9IF9hc3NpZ24oe30sIG9sZEluZm8gfHwgZW1wdHlBbmNl
c3RvckluZm8pOworICAgIHZhciBpbmZvID0geyB0YWc6IHRhZywgaW5zdGFuY2U6IGluc3RhbmNl
IH07CisKKyAgICBpZiAoaW5TY29wZVRhZ3MuaW5kZXhPZih0YWcpICE9PSAtMSkgeworICAgICAg
YW5jZXN0b3JJbmZvLmFUYWdJblNjb3BlID0gbnVsbDsKKyAgICAgIGFuY2VzdG9ySW5mby5idXR0
b25UYWdJblNjb3BlID0gbnVsbDsKKyAgICAgIGFuY2VzdG9ySW5mby5ub2JyVGFnSW5TY29wZSA9
IG51bGw7CisgICAgfQorICAgIGlmIChidXR0b25TY29wZVRhZ3MuaW5kZXhPZih0YWcpICE9PSAt
MSkgeworICAgICAgYW5jZXN0b3JJbmZvLnBUYWdJbkJ1dHRvblNjb3BlID0gbnVsbDsKKyAgICB9
CisKKyAgICAvLyBTZWUgcnVsZXMgZm9yICdsaScsICdkZCcsICdkdCcgc3RhcnQgdGFncyBpbgor
ICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1s
I3BhcnNpbmctbWFpbi1pbmJvZHkKKyAgICBpZiAoc3BlY2lhbFRhZ3MuaW5kZXhPZih0YWcpICE9
PSAtMSAmJiB0YWcgIT09ICdhZGRyZXNzJyAmJiB0YWcgIT09ICdkaXYnICYmIHRhZyAhPT0gJ3An
KSB7CisgICAgICBhbmNlc3RvckluZm8ubGlzdEl0ZW1UYWdBdXRvY2xvc2luZyA9IG51bGw7Cisg
ICAgICBhbmNlc3RvckluZm8uZGxJdGVtVGFnQXV0b2Nsb3NpbmcgPSBudWxsOworICAgIH0KKwor
ICAgIGFuY2VzdG9ySW5mby5jdXJyZW50ID0gaW5mbzsKKworICAgIGlmICh0YWcgPT09ICdmb3Jt
JykgeworICAgICAgYW5jZXN0b3JJbmZvLmZvcm1UYWcgPSBpbmZvOworICAgIH0KKyAgICBpZiAo
dGFnID09PSAnYScpIHsKKyAgICAgIGFuY2VzdG9ySW5mby5hVGFnSW5TY29wZSA9IGluZm87Cisg
ICAgfQorICAgIGlmICh0YWcgPT09ICdidXR0b24nKSB7CisgICAgICBhbmNlc3RvckluZm8uYnV0
dG9uVGFnSW5TY29wZSA9IGluZm87CisgICAgfQorICAgIGlmICh0YWcgPT09ICdub2JyJykgewor
ICAgICAgYW5jZXN0b3JJbmZvLm5vYnJUYWdJblNjb3BlID0gaW5mbzsKKyAgICB9CisgICAgaWYg
KHRhZyA9PT0gJ3AnKSB7CisgICAgICBhbmNlc3RvckluZm8ucFRhZ0luQnV0dG9uU2NvcGUgPSBp
bmZvOworICAgIH0KKyAgICBpZiAodGFnID09PSAnbGknKSB7CisgICAgICBhbmNlc3RvckluZm8u
bGlzdEl0ZW1UYWdBdXRvY2xvc2luZyA9IGluZm87CisgICAgfQorICAgIGlmICh0YWcgPT09ICdk
ZCcgfHwgdGFnID09PSAnZHQnKSB7CisgICAgICBhbmNlc3RvckluZm8uZGxJdGVtVGFnQXV0b2Ns
b3NpbmcgPSBpbmZvOworICAgIH0KKworICAgIHJldHVybiBhbmNlc3RvckluZm87CisgIH07CisK
KyAgLyoqCisgICAqIFJldHVybnMgd2hldGhlcgorICAgKi8KKyAgdmFyIGlzVGFnVmFsaWRXaXRo
UGFyZW50ID0gZnVuY3Rpb24gKHRhZywgcGFyZW50VGFnKSB7CisgICAgLy8gRmlyc3QsIGxldCdz
IGNoZWNrIGlmIHdlJ3JlIGluIGFuIHVudXN1YWwgcGFyc2luZyBtb2RlLi4uCisgICAgc3dpdGNo
IChwYXJlbnRUYWcpIHsKKyAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVs
dGlwYWdlL3N5bnRheC5odG1sI3BhcnNpbmctbWFpbi1pbnNlbGVjdAorICAgICAgY2FzZSAnc2Vs
ZWN0JzoKKyAgICAgICAgcmV0dXJuIHRhZyA9PT0gJ29wdGlvbicgfHwgdGFnID09PSAnb3B0Z3Jv
dXAnIHx8IHRhZyA9PT0gJyN0ZXh0JzsKKyAgICAgIGNhc2UgJ29wdGdyb3VwJzoKKyAgICAgICAg
cmV0dXJuIHRhZyA9PT0gJ29wdGlvbicgfHwgdGFnID09PSAnI3RleHQnOworICAgICAgLy8gU3Ry
aWN0bHkgc3BlYWtpbmcsIHNlZWluZyBhbiA8b3B0aW9uPiBkb2Vzbid0IG1lYW4gd2UncmUgaW4g
YSA8c2VsZWN0PgorICAgICAgLy8gYnV0CisgICAgICBjYXNlICdvcHRpb24nOgorICAgICAgICBy
ZXR1cm4gdGFnID09PSAnI3RleHQnOworCisgICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0
d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNwYXJzaW5nLW1haW4taW50ZAorICAgICAgLy8g
aHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjcGFyc2lu
Zy1tYWluLWluY2FwdGlvbgorICAgICAgLy8gTm8gc3BlY2lhbCBiZWhhdmlvciBzaW5jZSB0aGVz
ZSBydWxlcyBmYWxsIGJhY2sgdG8gImluIGJvZHkiIG1vZGUgZm9yCisgICAgICAvLyBhbGwgZXhj
ZXB0IHNwZWNpYWwgdGFibGUgbm9kZXMgd2hpY2ggY2F1c2UgYmFkIHBhcnNpbmcgYmVoYXZpb3Ig
YW55d2F5LgorCisgICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFn
ZS9zeW50YXguaHRtbCNwYXJzaW5nLW1haW4taW50cgorICAgICAgY2FzZSAndHInOgorICAgICAg
ICByZXR1cm4gdGFnID09PSAndGgnIHx8IHRhZyA9PT0gJ3RkJyB8fCB0YWcgPT09ICdzdHlsZScg
fHwgdGFnID09PSAnc2NyaXB0JyB8fCB0YWcgPT09ICd0ZW1wbGF0ZSc7CisKKyAgICAgIC8vIGh0
dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI3BhcnNpbmct
bWFpbi1pbnRib2R5CisgICAgICBjYXNlICd0Ym9keSc6CisgICAgICBjYXNlICd0aGVhZCc6Cisg
ICAgICBjYXNlICd0Zm9vdCc6CisgICAgICAgIHJldHVybiB0YWcgPT09ICd0cicgfHwgdGFnID09
PSAnc3R5bGUnIHx8IHRhZyA9PT0gJ3NjcmlwdCcgfHwgdGFnID09PSAndGVtcGxhdGUnOworCisg
ICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRt
bCNwYXJzaW5nLW1haW4taW5jb2xncm91cAorICAgICAgY2FzZSAnY29sZ3JvdXAnOgorICAgICAg
ICByZXR1cm4gdGFnID09PSAnY29sJyB8fCB0YWcgPT09ICd0ZW1wbGF0ZSc7CisKKyAgICAgIC8v
IGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI3BhcnNp
bmctbWFpbi1pbnRhYmxlCisgICAgICBjYXNlICd0YWJsZSc6CisgICAgICAgIHJldHVybiB0YWcg
PT09ICdjYXB0aW9uJyB8fCB0YWcgPT09ICdjb2xncm91cCcgfHwgdGFnID09PSAndGJvZHknIHx8
IHRhZyA9PT0gJ3Rmb290JyB8fCB0YWcgPT09ICd0aGVhZCcgfHwgdGFnID09PSAnc3R5bGUnIHx8
IHRhZyA9PT0gJ3NjcmlwdCcgfHwgdGFnID09PSAndGVtcGxhdGUnOworCisgICAgICAvLyBodHRw
czovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNwYXJzaW5nLW1h
aW4taW5oZWFkCisgICAgICBjYXNlICdoZWFkJzoKKyAgICAgICAgcmV0dXJuIHRhZyA9PT0gJ2Jh
c2UnIHx8IHRhZyA9PT0gJ2Jhc2Vmb250JyB8fCB0YWcgPT09ICdiZ3NvdW5kJyB8fCB0YWcgPT09
ICdsaW5rJyB8fCB0YWcgPT09ICdtZXRhJyB8fCB0YWcgPT09ICd0aXRsZScgfHwgdGFnID09PSAn
bm9zY3JpcHQnIHx8IHRhZyA9PT0gJ25vZnJhbWVzJyB8fCB0YWcgPT09ICdzdHlsZScgfHwgdGFn
ID09PSAnc2NyaXB0JyB8fCB0YWcgPT09ICd0ZW1wbGF0ZSc7CisKKyAgICAgIC8vIGh0dHBzOi8v
aHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3NlbWFudGljcy5odG1sI3RoZS1odG1sLWVs
ZW1lbnQKKyAgICAgIGNhc2UgJ2h0bWwnOgorICAgICAgICByZXR1cm4gdGFnID09PSAnaGVhZCcg
fHwgdGFnID09PSAnYm9keSc7CisgICAgICBjYXNlICcjZG9jdW1lbnQnOgorICAgICAgICByZXR1
cm4gdGFnID09PSAnaHRtbCc7CisgICAgfQorCisgICAgLy8gUHJvYmFibHkgaW4gdGhlICJpbiBi
b2R5IiBwYXJzaW5nIG1vZGUsIHNvIHdlIG91dGxhdyBvbmx5IHRhZyBjb21ib3MKKyAgICAvLyB3
aGVyZSB0aGUgcGFyc2luZyBydWxlcyBjYXVzZSBpbXBsaWNpdCBvcGVucyBvciBjbG9zZXMgdG8g
YmUgYWRkZWQuCisgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uv
c3ludGF4Lmh0bWwjcGFyc2luZy1tYWluLWluYm9keQorICAgIHN3aXRjaCAodGFnKSB7CisgICAg
ICBjYXNlICdoMSc6CisgICAgICBjYXNlICdoMic6CisgICAgICBjYXNlICdoMyc6CisgICAgICBj
YXNlICdoNCc6CisgICAgICBjYXNlICdoNSc6CisgICAgICBjYXNlICdoNic6CisgICAgICAgIHJl
dHVybiBwYXJlbnRUYWcgIT09ICdoMScgJiYgcGFyZW50VGFnICE9PSAnaDInICYmIHBhcmVudFRh
ZyAhPT0gJ2gzJyAmJiBwYXJlbnRUYWcgIT09ICdoNCcgJiYgcGFyZW50VGFnICE9PSAnaDUnICYm
IHBhcmVudFRhZyAhPT0gJ2g2JzsKKworICAgICAgY2FzZSAncnAnOgorICAgICAgY2FzZSAncnQn
OgorICAgICAgICByZXR1cm4gaW1wbGllZEVuZFRhZ3MuaW5kZXhPZihwYXJlbnRUYWcpID09PSAt
MTsKKworICAgICAgY2FzZSAnYm9keSc6CisgICAgICBjYXNlICdjYXB0aW9uJzoKKyAgICAgIGNh
c2UgJ2NvbCc6CisgICAgICBjYXNlICdjb2xncm91cCc6CisgICAgICBjYXNlICdmcmFtZSc6Cisg
ICAgICBjYXNlICdoZWFkJzoKKyAgICAgIGNhc2UgJ2h0bWwnOgorICAgICAgY2FzZSAndGJvZHkn
OgorICAgICAgY2FzZSAndGQnOgorICAgICAgY2FzZSAndGZvb3QnOgorICAgICAgY2FzZSAndGgn
OgorICAgICAgY2FzZSAndGhlYWQnOgorICAgICAgY2FzZSAndHInOgorICAgICAgICAvLyBUaGVz
ZSB0YWdzIGFyZSBvbmx5IHZhbGlkIHdpdGggYSBmZXcgcGFyZW50cyB0aGF0IGhhdmUgc3BlY2lh
bCBjaGlsZAorICAgICAgICAvLyBwYXJzaW5nIHJ1bGVzIC0tIGlmIHdlJ3JlIGRvd24gaGVyZSwg
dGhlbiBub25lIG9mIHRob3NlIG1hdGNoZWQgYW5kCisgICAgICAgIC8vIHNvIHdlIGFsbG93IGl0
IG9ubHkgaWYgd2UgZG9uJ3Qga25vdyB3aGF0IHRoZSBwYXJlbnQgaXMsIGFzIGFsbCBvdGhlcgor
ICAgICAgICAvLyBjYXNlcyBhcmUgaW52YWxpZC4KKyAgICAgICAgcmV0dXJuIHBhcmVudFRhZyA9
PSBudWxsOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworICB9OworCisgIC8qKgorICAgKiBS
ZXR1cm5zIHdoZXRoZXIKKyAgICovCisgIHZhciBmaW5kSW52YWxpZEFuY2VzdG9yRm9yVGFnID0g
ZnVuY3Rpb24gKHRhZywgYW5jZXN0b3JJbmZvKSB7CisgICAgc3dpdGNoICh0YWcpIHsKKyAgICAg
IGNhc2UgJ2FkZHJlc3MnOgorICAgICAgY2FzZSAnYXJ0aWNsZSc6CisgICAgICBjYXNlICdhc2lk
ZSc6CisgICAgICBjYXNlICdibG9ja3F1b3RlJzoKKyAgICAgIGNhc2UgJ2NlbnRlcic6CisgICAg
ICBjYXNlICdkZXRhaWxzJzoKKyAgICAgIGNhc2UgJ2RpYWxvZyc6CisgICAgICBjYXNlICdkaXIn
OgorICAgICAgY2FzZSAnZGl2JzoKKyAgICAgIGNhc2UgJ2RsJzoKKyAgICAgIGNhc2UgJ2ZpZWxk
c2V0JzoKKyAgICAgIGNhc2UgJ2ZpZ2NhcHRpb24nOgorICAgICAgY2FzZSAnZmlndXJlJzoKKyAg
ICAgIGNhc2UgJ2Zvb3Rlcic6CisgICAgICBjYXNlICdoZWFkZXInOgorICAgICAgY2FzZSAnaGdy
b3VwJzoKKyAgICAgIGNhc2UgJ21haW4nOgorICAgICAgY2FzZSAnbWVudSc6CisgICAgICBjYXNl
ICduYXYnOgorICAgICAgY2FzZSAnb2wnOgorICAgICAgY2FzZSAncCc6CisgICAgICBjYXNlICdz
ZWN0aW9uJzoKKyAgICAgIGNhc2UgJ3N1bW1hcnknOgorICAgICAgY2FzZSAndWwnOgorCisgICAg
ICBjYXNlICdwcmUnOgorICAgICAgY2FzZSAnbGlzdGluZyc6CisKKyAgICAgIGNhc2UgJ3RhYmxl
JzoKKworICAgICAgY2FzZSAnaHInOgorCisgICAgICBjYXNlICd4bXAnOgorCisgICAgICBjYXNl
ICdoMSc6CisgICAgICBjYXNlICdoMic6CisgICAgICBjYXNlICdoMyc6CisgICAgICBjYXNlICdo
NCc6CisgICAgICBjYXNlICdoNSc6CisgICAgICBjYXNlICdoNic6CisgICAgICAgIHJldHVybiBh
bmNlc3RvckluZm8ucFRhZ0luQnV0dG9uU2NvcGU7CisKKyAgICAgIGNhc2UgJ2Zvcm0nOgorICAg
ICAgICByZXR1cm4gYW5jZXN0b3JJbmZvLmZvcm1UYWcgfHwgYW5jZXN0b3JJbmZvLnBUYWdJbkJ1
dHRvblNjb3BlOworCisgICAgICBjYXNlICdsaSc6CisgICAgICAgIHJldHVybiBhbmNlc3Rvcklu
Zm8ubGlzdEl0ZW1UYWdBdXRvY2xvc2luZzsKKworICAgICAgY2FzZSAnZGQnOgorICAgICAgY2Fz
ZSAnZHQnOgorICAgICAgICByZXR1cm4gYW5jZXN0b3JJbmZvLmRsSXRlbVRhZ0F1dG9jbG9zaW5n
OworCisgICAgICBjYXNlICdidXR0b24nOgorICAgICAgICByZXR1cm4gYW5jZXN0b3JJbmZvLmJ1
dHRvblRhZ0luU2NvcGU7CisKKyAgICAgIGNhc2UgJ2EnOgorICAgICAgICAvLyBTcGVjIHNheXMg
c29tZXRoaW5nIGFib3V0IHN0b3JpbmcgYSBsaXN0IG9mIG1hcmtlcnMsIGJ1dCBpdCBzb3VuZHMK
KyAgICAgICAgLy8gZXF1aXZhbGVudCB0byB0aGlzIGNoZWNrLgorICAgICAgICByZXR1cm4gYW5j
ZXN0b3JJbmZvLmFUYWdJblNjb3BlOworCisgICAgICBjYXNlICdub2JyJzoKKyAgICAgICAgcmV0
dXJuIGFuY2VzdG9ySW5mby5ub2JyVGFnSW5TY29wZTsKKyAgICB9CisKKyAgICByZXR1cm4gbnVs
bDsKKyAgfTsKKworICAvKioKKyAgICogR2l2ZW4gYSBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCBp
bnN0YW5jZSwgcmV0dXJuIGEgbGlzdCBvZiBpdHMgcmVjdXJzaXZlCisgICAqIG93bmVycywgc3Rh
cnRpbmcgYXQgdGhlIHJvb3QgYW5kIGVuZGluZyB3aXRoIHRoZSBpbnN0YW5jZSBpdHNlbGYuCisg
ICAqLworICB2YXIgZmluZE93bmVyU3RhY2sgPSBmdW5jdGlvbiAoaW5zdGFuY2UpIHsKKyAgICBp
ZiAoIWluc3RhbmNlKSB7CisgICAgICByZXR1cm4gW107CisgICAgfQorCisgICAgdmFyIHN0YWNr
ID0gW107CisgICAgZG8geworICAgICAgc3RhY2sucHVzaChpbnN0YW5jZSk7CisgICAgfSB3aGls
ZSAoaW5zdGFuY2UgPSBpbnN0YW5jZS5fY3VycmVudEVsZW1lbnQuX293bmVyKTsKKyAgICBzdGFj
ay5yZXZlcnNlKCk7CisgICAgcmV0dXJuIHN0YWNrOworICB9OworCisgIHZhciBkaWRXYXJuID0g
e307CisKKyAgdmFsaWRhdGVET01OZXN0aW5nID0gZnVuY3Rpb24gKGNoaWxkVGFnLCBjaGlsZFRl
eHQsIGNoaWxkSW5zdGFuY2UsIGFuY2VzdG9ySW5mbykgeworICAgIGFuY2VzdG9ySW5mbyA9IGFu
Y2VzdG9ySW5mbyB8fCBlbXB0eUFuY2VzdG9ySW5mbzsKKyAgICB2YXIgcGFyZW50SW5mbyA9IGFu
Y2VzdG9ySW5mby5jdXJyZW50OworICAgIHZhciBwYXJlbnRUYWcgPSBwYXJlbnRJbmZvICYmIHBh
cmVudEluZm8udGFnOworCisgICAgaWYgKGNoaWxkVGV4dCAhPSBudWxsKSB7CisgICAgICAiZGV2
ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGNoaWxkVGFnID09IG51bGwsICd2
YWxpZGF0ZURPTU5lc3Rpbmc6IHdoZW4gY2hpbGRUZXh0IGlzIHBhc3NlZCwgY2hpbGRUYWcgc2hv
dWxkIGJlIG51bGwnKSA6IHZvaWQgMDsKKyAgICAgIGNoaWxkVGFnID0gJyN0ZXh0JzsKKyAgICB9
CisKKyAgICB2YXIgaW52YWxpZFBhcmVudCA9IGlzVGFnVmFsaWRXaXRoUGFyZW50KGNoaWxkVGFn
LCBwYXJlbnRUYWcpID8gbnVsbCA6IHBhcmVudEluZm87CisgICAgdmFyIGludmFsaWRBbmNlc3Rv
ciA9IGludmFsaWRQYXJlbnQgPyBudWxsIDogZmluZEludmFsaWRBbmNlc3RvckZvclRhZyhjaGls
ZFRhZywgYW5jZXN0b3JJbmZvKTsKKyAgICB2YXIgcHJvYmxlbWF0aWMgPSBpbnZhbGlkUGFyZW50
IHx8IGludmFsaWRBbmNlc3RvcjsKKworICAgIGlmIChwcm9ibGVtYXRpYykgeworICAgICAgdmFy
IGFuY2VzdG9yVGFnID0gcHJvYmxlbWF0aWMudGFnOworICAgICAgdmFyIGFuY2VzdG9ySW5zdGFu
Y2UgPSBwcm9ibGVtYXRpYy5pbnN0YW5jZTsKKworICAgICAgdmFyIGNoaWxkT3duZXIgPSBjaGls
ZEluc3RhbmNlICYmIGNoaWxkSW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50Ll9vd25lcjsKKyAgICAg
IHZhciBhbmNlc3Rvck93bmVyID0gYW5jZXN0b3JJbnN0YW5jZSAmJiBhbmNlc3Rvckluc3RhbmNl
Ll9jdXJyZW50RWxlbWVudC5fb3duZXI7CisKKyAgICAgIHZhciBjaGlsZE93bmVycyA9IGZpbmRP
d25lclN0YWNrKGNoaWxkT3duZXIpOworICAgICAgdmFyIGFuY2VzdG9yT3duZXJzID0gZmluZE93
bmVyU3RhY2soYW5jZXN0b3JPd25lcik7CisKKyAgICAgIHZhciBtaW5TdGFja0xlbiA9IE1hdGgu
bWluKGNoaWxkT3duZXJzLmxlbmd0aCwgYW5jZXN0b3JPd25lcnMubGVuZ3RoKTsKKyAgICAgIHZh
ciBpOworCisgICAgICB2YXIgZGVlcGVzdENvbW1vbiA9IC0xOworICAgICAgZm9yIChpID0gMDsg
aSA8IG1pblN0YWNrTGVuOyBpKyspIHsKKyAgICAgICAgaWYgKGNoaWxkT3duZXJzW2ldID09PSBh
bmNlc3Rvck93bmVyc1tpXSkgeworICAgICAgICAgIGRlZXBlc3RDb21tb24gPSBpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICB9CisKKyAgICAg
IHZhciBVTktOT1dOID0gJyh1bmtub3duKSc7CisgICAgICB2YXIgY2hpbGRPd25lck5hbWVzID0g
Y2hpbGRPd25lcnMuc2xpY2UoZGVlcGVzdENvbW1vbiArIDEpLm1hcChmdW5jdGlvbiAoaW5zdCkg
eworICAgICAgICByZXR1cm4gaW5zdC5nZXROYW1lKCkgfHwgVU5LTk9XTjsKKyAgICAgIH0pOwor
ICAgICAgdmFyIGFuY2VzdG9yT3duZXJOYW1lcyA9IGFuY2VzdG9yT3duZXJzLnNsaWNlKGRlZXBl
c3RDb21tb24gKyAxKS5tYXAoZnVuY3Rpb24gKGluc3QpIHsKKyAgICAgICAgcmV0dXJuIGluc3Qu
Z2V0TmFtZSgpIHx8IFVOS05PV047CisgICAgICB9KTsKKyAgICAgIHZhciBvd25lckluZm8gPSBb
XS5jb25jYXQoCisgICAgICAvLyBJZiB0aGUgcGFyZW50IGFuZCBjaGlsZCBpbnN0YW5jZXMgaGF2
ZSBhIGNvbW1vbiBvd25lciBhbmNlc3Rvciwgc3RhcnQKKyAgICAgIC8vIHdpdGggdGhhdCAtLSBv
dGhlcndpc2Ugd2UganVzdCBzdGFydCB3aXRoIHRoZSBwYXJlbnQncyBvd25lcnMuCisgICAgICBk
ZWVwZXN0Q29tbW9uICE9PSAtMSA/IGNoaWxkT3duZXJzW2RlZXBlc3RDb21tb25dLmdldE5hbWUo
KSB8fCBVTktOT1dOIDogW10sIGFuY2VzdG9yT3duZXJOYW1lcywgYW5jZXN0b3JUYWcsCisgICAg
ICAvLyBJZiB3ZSdyZSB3YXJuaW5nIGFib3V0IGFuIGludmFsaWQgKG5vbi1wYXJlbnQpIGFuY2Vz
dHJ5LCBhZGQgJy4uLicKKyAgICAgIGludmFsaWRBbmNlc3RvciA/IFsnLi4uJ10gOiBbXSwgY2hp
bGRPd25lck5hbWVzLCBjaGlsZFRhZykuam9pbignID4gJyk7CisKKyAgICAgIHZhciB3YXJuS2V5
ID0gISFpbnZhbGlkUGFyZW50ICsgJ3wnICsgY2hpbGRUYWcgKyAnfCcgKyBhbmNlc3RvclRhZyAr
ICd8JyArIG93bmVySW5mbzsKKyAgICAgIGlmIChkaWRXYXJuW3dhcm5LZXldKSB7CisgICAgICAg
IHJldHVybjsKKyAgICAgIH0KKyAgICAgIGRpZFdhcm5bd2FybktleV0gPSB0cnVlOworCisgICAg
ICB2YXIgdGFnRGlzcGxheU5hbWUgPSBjaGlsZFRhZzsKKyAgICAgIHZhciB3aGl0ZXNwYWNlSW5m
byA9ICcnOworICAgICAgaWYgKGNoaWxkVGFnID09PSAnI3RleHQnKSB7CisgICAgICAgIGlmICgv
XFMvLnRlc3QoY2hpbGRUZXh0KSkgeworICAgICAgICAgIHRhZ0Rpc3BsYXlOYW1lID0gJ1RleHQg
bm9kZXMnOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIHRhZ0Rpc3BsYXlOYW1lID0gJ1do
aXRlc3BhY2UgdGV4dCBub2Rlcyc7CisgICAgICAgICAgd2hpdGVzcGFjZUluZm8gPSAnIE1ha2Ug
c3VyZSB5b3UgZG9uXCd0IGhhdmUgYW55IGV4dHJhIHdoaXRlc3BhY2UgYmV0d2VlbiB0YWdzIG9u
ICcgKyAnZWFjaCBsaW5lIG9mIHlvdXIgc291cmNlIGNvZGUuJzsKKyAgICAgICAgfQorICAgICAg
fSBlbHNlIHsKKyAgICAgICAgdGFnRGlzcGxheU5hbWUgPSAnPCcgKyBjaGlsZFRhZyArICc+JzsK
KyAgICAgIH0KKworICAgICAgaWYgKGludmFsaWRQYXJlbnQpIHsKKyAgICAgICAgdmFyIGluZm8g
PSAnJzsKKyAgICAgICAgaWYgKGFuY2VzdG9yVGFnID09PSAndGFibGUnICYmIGNoaWxkVGFnID09
PSAndHInKSB7CisgICAgICAgICAgaW5mbyArPSAnIEFkZCBhIDx0Ym9keT4gdG8geW91ciBjb2Rl
IHRvIG1hdGNoIHRoZSBET00gdHJlZSBnZW5lcmF0ZWQgYnkgJyArICd0aGUgYnJvd3Nlci4nOwor
ICAgICAgICB9CisgICAgICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5p
bmcoZmFsc2UsICd2YWxpZGF0ZURPTU5lc3RpbmcoLi4uKTogJXMgY2Fubm90IGFwcGVhciBhcyBh
IGNoaWxkIG9mIDwlcz4uJXMgJyArICdTZWUgJXMuJXMnLCB0YWdEaXNwbGF5TmFtZSwgYW5jZXN0
b3JUYWcsIHdoaXRlc3BhY2VJbmZvLCBvd25lckluZm8sIGluZm8pIDogdm9pZCAwOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2Fybmlu
ZyhmYWxzZSwgJ3ZhbGlkYXRlRE9NTmVzdGluZyguLi4pOiAlcyBjYW5ub3QgYXBwZWFyIGFzIGEg
ZGVzY2VuZGFudCBvZiAnICsgJzwlcz4uIFNlZSAlcy4nLCB0YWdEaXNwbGF5TmFtZSwgYW5jZXN0
b3JUYWcsIG93bmVySW5mbykgOiB2b2lkIDA7CisgICAgICB9CisgICAgfQorICB9OworCisgIHZh
bGlkYXRlRE9NTmVzdGluZy51cGRhdGVkQW5jZXN0b3JJbmZvID0gdXBkYXRlZEFuY2VzdG9ySW5m
bzsKKworICAvLyBGb3IgdGVzdGluZworICB2YWxpZGF0ZURPTU5lc3RpbmcuaXNUYWdWYWxpZElu
Q29udGV4dCA9IGZ1bmN0aW9uICh0YWcsIGFuY2VzdG9ySW5mbykgeworICAgIGFuY2VzdG9ySW5m
byA9IGFuY2VzdG9ySW5mbyB8fCBlbXB0eUFuY2VzdG9ySW5mbzsKKyAgICB2YXIgcGFyZW50SW5m
byA9IGFuY2VzdG9ySW5mby5jdXJyZW50OworICAgIHZhciBwYXJlbnRUYWcgPSBwYXJlbnRJbmZv
ICYmIHBhcmVudEluZm8udGFnOworICAgIHJldHVybiBpc1RhZ1ZhbGlkV2l0aFBhcmVudCh0YWcs
IHBhcmVudFRhZykgJiYgIWZpbmRJbnZhbGlkQW5jZXN0b3JGb3JUYWcodGFnLCBhbmNlc3Rvcklu
Zm8pOworICB9OworfQorCittb2R1bGUuZXhwb3J0cyA9IHZhbGlkYXRlRE9NTmVzdGluZzsKK30s
eyIxMzIiOjEzMiwiMTQ3IjoxNDcsIjE0OCI6MTQ4fV0sMTIyOltmdW5jdGlvbihfZGVyZXFfLG1v
ZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ss
IEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBp
cyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFu
IGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRo
ZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisvKiBnbG9i
YWxzIFJlYWN0ICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIFJlYWN0SW50ZXJuYWxzID0gUmVh
Y3QuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQ7CisK
K21vZHVsZS5leHBvcnRzID0gUmVhY3RJbnRlcm5hbHMuUmVhY3RDb21wb25lbnRUcmVlSG9vazsK
K30se31dLDEyMzpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENv
cHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1z
dHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRp
cmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBw
YXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1l
IGRpcmVjdG9yeS4KKyAqCisgKi8KKworLyogZ2xvYmFscyBSZWFjdCAqLworCisndXNlIHN0cmlj
dCc7CisKK3ZhciBSZWFjdEludGVybmFscyA9IFJlYWN0Ll9fU0VDUkVUX0lOVEVSTkFMU19ET19O
T1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEOworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0SW50
ZXJuYWxzLlJlYWN0Q3VycmVudE93bmVyOworfSx7fV0sMTI0OltmdW5jdGlvbihfZGVyZXFfLG1v
ZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ss
IEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBp
cyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFu
IGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRo
ZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisvKiBnbG9i
YWxzIFJlYWN0ICovCisKKyd1c2Ugc3RyaWN0JzsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdDsK
K30se31dLDEyNTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisndXNlIHN0cmlj
dCc7CisKKy8qKgorICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMu
CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAo
dGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBj
b21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2Yg
dGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdy
ZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJS
QU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxp
ZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5p
bmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAq
CisgKiBAdHlwZWNoZWNrcworICovCisKK3ZhciBlbXB0eUZ1bmN0aW9uID0gX2RlcmVxXygxMzIp
OworCisvKioKKyAqIFVwc3RyZWFtIHZlcnNpb24gb2YgZXZlbnQgbGlzdGVuZXIuIERvZXMgbm90
IHRha2UgaW50byBhY2NvdW50IHNwZWNpZmljCisgKiBuYXR1cmUgb2YgcGxhdGZvcm0uCisgKi8K
K3ZhciBFdmVudExpc3RlbmVyID0geworICAvKioKKyAgICogTGlzdGVuIHRvIERPTSBldmVudHMg
ZHVyaW5nIHRoZSBidWJibGUgcGhhc2UuCisgICAqCisgICAqIEBwYXJhbSB7RE9NRXZlbnRUYXJn
ZXR9IHRhcmdldCBET00gZWxlbWVudCB0byByZWdpc3RlciBsaXN0ZW5lciBvbi4KKyAgICogQHBh
cmFtIHtzdHJpbmd9IGV2ZW50VHlwZSBFdmVudCB0eXBlLCBlLmcuICdjbGljaycgb3IgJ21vdXNl
b3ZlcicuCisgICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIENhbGxiYWNrIGZ1bmN0aW9u
LgorICAgKiBAcmV0dXJuIHtvYmplY3R9IE9iamVjdCB3aXRoIGEgYHJlbW92ZWAgbWV0aG9kLgor
ICAgKi8KKyAgbGlzdGVuOiBmdW5jdGlvbiBsaXN0ZW4odGFyZ2V0LCBldmVudFR5cGUsIGNhbGxi
YWNrKSB7CisgICAgaWYgKHRhcmdldC5hZGRFdmVudExpc3RlbmVyKSB7CisgICAgICB0YXJnZXQu
YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGNhbGxiYWNrLCBmYWxzZSk7CisgICAgICByZXR1
cm4geworICAgICAgICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZSgpIHsKKyAgICAgICAgICB0YXJn
ZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGNhbGxiYWNrLCBmYWxzZSk7CisgICAg
ICAgIH0KKyAgICAgIH07CisgICAgfSBlbHNlIGlmICh0YXJnZXQuYXR0YWNoRXZlbnQpIHsKKyAg
ICAgIHRhcmdldC5hdHRhY2hFdmVudCgnb24nICsgZXZlbnRUeXBlLCBjYWxsYmFjayk7CisgICAg
ICByZXR1cm4geworICAgICAgICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZSgpIHsKKyAgICAgICAg
ICB0YXJnZXQuZGV0YWNoRXZlbnQoJ29uJyArIGV2ZW50VHlwZSwgY2FsbGJhY2spOworICAgICAg
ICB9CisgICAgICB9OworICAgIH0KKyAgfSwKKworICAvKioKKyAgICogTGlzdGVuIHRvIERPTSBl
dmVudHMgZHVyaW5nIHRoZSBjYXB0dXJlIHBoYXNlLgorICAgKgorICAgKiBAcGFyYW0ge0RPTUV2
ZW50VGFyZ2V0fSB0YXJnZXQgRE9NIGVsZW1lbnQgdG8gcmVnaXN0ZXIgbGlzdGVuZXIgb24uCisg
ICAqIEBwYXJhbSB7c3RyaW5nfSBldmVudFR5cGUgRXZlbnQgdHlwZSwgZS5nLiAnY2xpY2snIG9y
ICdtb3VzZW92ZXInLgorICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayBDYWxsYmFjayBm
dW5jdGlvbi4KKyAgICogQHJldHVybiB7b2JqZWN0fSBPYmplY3Qgd2l0aCBhIGByZW1vdmVgIG1l
dGhvZC4KKyAgICovCisgIGNhcHR1cmU6IGZ1bmN0aW9uIGNhcHR1cmUodGFyZ2V0LCBldmVudFR5
cGUsIGNhbGxiYWNrKSB7CisgICAgaWYgKHRhcmdldC5hZGRFdmVudExpc3RlbmVyKSB7CisgICAg
ICB0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGNhbGxiYWNrLCB0cnVlKTsKKyAg
ICAgIHJldHVybiB7CisgICAgICAgIHJlbW92ZTogZnVuY3Rpb24gcmVtb3ZlKCkgeworICAgICAg
ICAgIHRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgY2FsbGJhY2ssIHRydWUp
OworICAgICAgICB9CisgICAgICB9OworICAgIH0gZWxzZSB7CisgICAgICBpZiAoImRldmVsb3Bt
ZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0F0dGVtcHRl
ZCB0byBsaXN0ZW4gdG8gZXZlbnRzIGR1cmluZyB0aGUgY2FwdHVyZSBwaGFzZSBvbiBhICcgKyAn
YnJvd3NlciB0aGF0IGRvZXMgbm90IHN1cHBvcnQgdGhlIGNhcHR1cmUgcGhhc2UuIFlvdXIgYXBw
bGljYXRpb24gJyArICd3aWxsIG5vdCByZWNlaXZlIHNvbWUgZXZlbnRzLicpOworICAgICAgfQor
ICAgICAgcmV0dXJuIHsKKyAgICAgICAgcmVtb3ZlOiBlbXB0eUZ1bmN0aW9uCisgICAgICB9Owor
ICAgIH0KKyAgfSwKKworICByZWdpc3RlckRlZmF1bHQ6IGZ1bmN0aW9uIHJlZ2lzdGVyRGVmYXVs
dCgpIHt9Cit9OworCittb2R1bGUuZXhwb3J0cyA9IEV2ZW50TGlzdGVuZXI7Cit9LHsiMTMyIjox
MzJ9XSwxMjY6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5
cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
ZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9m
IHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNh
bWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBjYW5Vc2VET00g
PSAhISh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuZG9jdW1lbnQgJiYg
d2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpOworCisvKioKKyAqIFNpbXBsZSwgbGlnaHR3
ZWlnaHQgbW9kdWxlIGFzc2lzdGluZyB3aXRoIHRoZSBkZXRlY3Rpb24gYW5kIGNvbnRleHQgb2YK
KyAqIFdvcmtlci4gSGVscHMgYXZvaWQgY2lyY3VsYXIgZGVwZW5kZW5jaWVzIGFuZCBhbGxvd3Mg
Y29kZSB0byByZWFzb24gYWJvdXQKKyAqIHdoZXRoZXIgb3Igbm90IHRoZXkgYXJlIGluIGEgV29y
a2VyLCBldmVuIGlmIHRoZXkgbmV2ZXIgaW5jbHVkZSB0aGUgbWFpbgorICogYFJlYWN0V29ya2Vy
YCBkZXBlbmRlbmN5LgorICovCit2YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSB7CisKKyAgY2Fu
VXNlRE9NOiBjYW5Vc2VET00sCisKKyAgY2FuVXNlV29ya2VyczogdHlwZW9mIFdvcmtlciAhPT0g
J3VuZGVmaW5lZCcsCisKKyAgY2FuVXNlRXZlbnRMaXN0ZW5lcnM6IGNhblVzZURPTSAmJiAhISh3
aW5kb3cuYWRkRXZlbnRMaXN0ZW5lciB8fCB3aW5kb3cuYXR0YWNoRXZlbnQpLAorCisgIGNhblVz
ZVZpZXdwb3J0OiBjYW5Vc2VET00gJiYgISF3aW5kb3cuc2NyZWVuLAorCisgIGlzSW5Xb3JrZXI6
ICFjYW5Vc2VET00gLy8gRm9yIG5vdywgdGhpcyBpcyB0cnVlIC0gbWlnaHQgY2hhbmdlIGluIHRo
ZSBmdXR1cmUuCisKK307CisKK21vZHVsZS5leHBvcnRzID0gRXhlY3V0aW9uRW52aXJvbm1lbnQ7
Cit9LHt9XSwxMjc6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworInVzZSBzdHJp
Y3QiOworCisvKioKKyAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5j
LgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxp
Y2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRk
aXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBB
VEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogQHR5cGVjaGVja3MKKyAq
LworCit2YXIgX2h5cGhlblBhdHRlcm4gPSAvLSguKS9nOworCisvKioKKyAqIENhbWVsY2FzZXMg
YSBoeXBoZW5hdGVkIHN0cmluZywgZm9yIGV4YW1wbGU6CisgKgorICogICA+IGNhbWVsaXplKCdi
YWNrZ3JvdW5kLWNvbG9yJykKKyAqICAgPCAiYmFja2dyb3VuZENvbG9yIgorICoKKyAqIEBwYXJh
bSB7c3RyaW5nfSBzdHJpbmcKKyAqIEByZXR1cm4ge3N0cmluZ30KKyAqLworZnVuY3Rpb24gY2Ft
ZWxpemUoc3RyaW5nKSB7CisgIHJldHVybiBzdHJpbmcucmVwbGFjZShfaHlwaGVuUGF0dGVybiwg
ZnVuY3Rpb24gKF8sIGNoYXJhY3RlcikgeworICAgIHJldHVybiBjaGFyYWN0ZXIudG9VcHBlckNh
c2UoKTsKKyAgfSk7Cit9CisKK21vZHVsZS5leHBvcnRzID0gY2FtZWxpemU7Cit9LHt9XSwxMjg6
W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgKGMp
IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxp
Y2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5
IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCBy
aWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0
b3J5LgorICoKKyAqIEB0eXBlY2hlY2tzCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgY2Ft
ZWxpemUgPSBfZGVyZXFfKDEyNyk7CisKK3ZhciBtc1BhdHRlcm4gPSAvXi1tcy0vOworCisvKioK
KyAqIENhbWVsY2FzZXMgYSBoeXBoZW5hdGVkIENTUyBwcm9wZXJ0eSBuYW1lLCBmb3IgZXhhbXBs
ZToKKyAqCisgKiAgID4gY2FtZWxpemVTdHlsZU5hbWUoJ2JhY2tncm91bmQtY29sb3InKQorICog
ICA8ICJiYWNrZ3JvdW5kQ29sb3IiCisgKiAgID4gY2FtZWxpemVTdHlsZU5hbWUoJy1tb3otdHJh
bnNpdGlvbicpCisgKiAgIDwgIk1velRyYW5zaXRpb24iCisgKiAgID4gY2FtZWxpemVTdHlsZU5h
bWUoJy1tcy10cmFuc2l0aW9uJykKKyAqICAgPCAibXNUcmFuc2l0aW9uIgorICoKKyAqIEFzIEFu
ZGkgU21pdGggc3VnZ2VzdHMKKyAqIChodHRwOi8vd3d3LmFuZGlzbWl0aC5jb20vYmxvZy8yMDEy
LzAyL21vZGVybml6ci1wcmVmaXhlZC8pLCBhbiBgLW1zYCBwcmVmaXgKKyAqIGlzIGNvbnZlcnRl
ZCB0byBsb3dlcmNhc2UgYG1zYC4KKyAqCisgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nCisgKiBA
cmV0dXJuIHtzdHJpbmd9CisgKi8KK2Z1bmN0aW9uIGNhbWVsaXplU3R5bGVOYW1lKHN0cmluZykg
eworICByZXR1cm4gY2FtZWxpemUoc3RyaW5nLnJlcGxhY2UobXNQYXR0ZXJuLCAnbXMtJykpOwor
fQorCittb2R1bGUuZXhwb3J0cyA9IGNhbWVsaXplU3R5bGVOYW1lOworfSx7IjEyNyI6MTI3fV0s
MTI5OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKyd1c2Ugc3RyaWN0JzsKKwor
LyoqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1
bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIAorICovCisKK3ZhciBpc1RleHROb2Rl
ID0gX2RlcmVxXygxNDIpOworCisvKmVzbGludC1kaXNhYmxlIG5vLWJpdHdpc2UgKi8KKworLyoq
CisgKiBDaGVja3MgaWYgYSBnaXZlbiBET00gbm9kZSBjb250YWlucyBvciBpcyBhbm90aGVyIERP
TSBub2RlLgorICovCitmdW5jdGlvbiBjb250YWluc05vZGUob3V0ZXJOb2RlLCBpbm5lck5vZGUp
IHsKKyAgaWYgKCFvdXRlck5vZGUgfHwgIWlubmVyTm9kZSkgeworICAgIHJldHVybiBmYWxzZTsK
KyAgfSBlbHNlIGlmIChvdXRlck5vZGUgPT09IGlubmVyTm9kZSkgeworICAgIHJldHVybiB0cnVl
OworICB9IGVsc2UgaWYgKGlzVGV4dE5vZGUob3V0ZXJOb2RlKSkgeworICAgIHJldHVybiBmYWxz
ZTsKKyAgfSBlbHNlIGlmIChpc1RleHROb2RlKGlubmVyTm9kZSkpIHsKKyAgICByZXR1cm4gY29u
dGFpbnNOb2RlKG91dGVyTm9kZSwgaW5uZXJOb2RlLnBhcmVudE5vZGUpOworICB9IGVsc2UgaWYg
KCdjb250YWlucycgaW4gb3V0ZXJOb2RlKSB7CisgICAgcmV0dXJuIG91dGVyTm9kZS5jb250YWlu
cyhpbm5lck5vZGUpOworICB9IGVsc2UgaWYgKG91dGVyTm9kZS5jb21wYXJlRG9jdW1lbnRQb3Np
dGlvbikgeworICAgIHJldHVybiAhIShvdXRlck5vZGUuY29tcGFyZURvY3VtZW50UG9zaXRpb24o
aW5uZXJOb2RlKSAmIDE2KTsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KK30K
KworbW9kdWxlLmV4cG9ydHMgPSBjb250YWluc05vZGU7Cit9LHsiMTQyIjoxNDJ9XSwxMzA6W2Z1
bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworJ3VzZSBzdHJpY3QnOworCisvKioKKyAq
IENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRo
ZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAor
ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0
aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogQHR5cGVjaGVja3MKKyAqLworCit2YXIgaW52YXJp
YW50ID0gX2RlcmVxXygxNDApOworCisvKioKKyAqIENvbnZlcnQgYXJyYXktbGlrZSBvYmplY3Rz
IHRvIGFycmF5cy4KKyAqCisgKiBUaGlzIEFQSSBhc3N1bWVzIHRoZSBjYWxsZXIga25vd3MgdGhl
IGNvbnRlbnRzIG9mIHRoZSBkYXRhIHR5cGUuIEZvciBsZXNzCisgKiB3ZWxsIGRlZmluZWQgaW5w
dXRzIHVzZSBjcmVhdGVBcnJheUZyb21NaXhlZC4KKyAqCisgKiBAcGFyYW0ge29iamVjdHxmdW5j
dGlvbnxmaWxlbGlzdH0gb2JqCisgKiBAcmV0dXJuIHthcnJheX0KKyAqLworZnVuY3Rpb24gdG9B
cnJheShvYmopIHsKKyAgdmFyIGxlbmd0aCA9IG9iai5sZW5ndGg7CisKKyAgLy8gU29tZSBicm93
c2VycyBidWlsdGluIG9iamVjdHMgY2FuIHJlcG9ydCB0eXBlb2YgJ2Z1bmN0aW9uJyAoZS5nLiBO
b2RlTGlzdAorICAvLyBpbiBvbGQgdmVyc2lvbnMgb2YgU2FmYXJpKS4KKyAgISghQXJyYXkuaXNB
cnJheShvYmopICYmICh0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyB8fCB0eXBlb2Ygb2JqID09PSAn
ZnVuY3Rpb24nKSkgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQo
ZmFsc2UsICd0b0FycmF5OiBBcnJheS1saWtlIG9iamVjdCBleHBlY3RlZCcpIDogaW52YXJpYW50
KGZhbHNlKSA6IHZvaWQgMDsKKworICAhKHR5cGVvZiBsZW5ndGggPT09ICdudW1iZXInKSA/ICJk
ZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3RvQXJyYXk6
IE9iamVjdCBuZWVkcyBhIGxlbmd0aCBwcm9wZXJ0eScpIDogaW52YXJpYW50KGZhbHNlKSA6IHZv
aWQgMDsKKworICAhKGxlbmd0aCA9PT0gMCB8fCBsZW5ndGggLSAxIGluIG9iaikgPyAiZGV2ZWxv
cG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICd0b0FycmF5OiBPYmpl
Y3Qgc2hvdWxkIGhhdmUga2V5cyBmb3IgaW5kaWNlcycpIDogaW52YXJpYW50KGZhbHNlKSA6IHZv
aWQgMDsKKworICAhKHR5cGVvZiBvYmouY2FsbGVlICE9PSAnZnVuY3Rpb24nKSA/ICJkZXZlbG9w
bWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3RvQXJyYXk6IE9iamVj
dCBjYW5cJ3QgYmUgYGFyZ3VtZW50c2AuIFVzZSByZXN0IHBhcmFtcyAnICsgJyhmdW5jdGlvbigu
Li5hcmdzKSB7fSkgb3IgQXJyYXkuZnJvbSgpIGluc3RlYWQuJykgOiBpbnZhcmlhbnQoZmFsc2Up
IDogdm9pZCAwOworCisgIC8vIE9sZCBJRSBkb2Vzbid0IGdpdmUgY29sbGVjdGlvbnMgYWNjZXNz
IHRvIGhhc093blByb3BlcnR5LiBBc3N1bWUgaW5wdXRzCisgIC8vIHdpdGhvdXQgbWV0aG9kIHdp
bGwgdGhyb3cgZHVyaW5nIHRoZSBzbGljZSBjYWxsIGFuZCBza2lwIHN0cmFpZ2h0IHRvIHRoZQor
ICAvLyBmYWxsYmFjay4KKyAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eSkgeworICAgIHRyeSB7Cisg
ICAgICByZXR1cm4gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwob2JqKTsKKyAgICB9IGNhdGNo
IChlKSB7CisgICAgICAvLyBJRSA8IDkgZG9lcyBub3Qgc3VwcG9ydCBBcnJheSNzbGljZSBvbiBj
b2xsZWN0aW9ucyBvYmplY3RzCisgICAgfQorICB9CisKKyAgLy8gRmFsbCBiYWNrIHRvIGNvcHlp
bmcga2V5IGJ5IGtleS4gVGhpcyBhc3N1bWVzIGFsbCBrZXlzIGhhdmUgYSB2YWx1ZSwKKyAgLy8g
c28gd2lsbCBub3QgcHJlc2VydmUgc3BhcnNlbHkgcG9wdWxhdGVkIGlucHV0cy4KKyAgdmFyIHJl
dCA9IEFycmF5KGxlbmd0aCk7CisgIGZvciAodmFyIGlpID0gMDsgaWkgPCBsZW5ndGg7IGlpKysp
IHsKKyAgICByZXRbaWldID0gb2JqW2lpXTsKKyAgfQorICByZXR1cm4gcmV0OworfQorCisvKioK
KyAqIFBlcmZvcm0gYSBoZXVyaXN0aWMgdGVzdCB0byBkZXRlcm1pbmUgaWYgYW4gb2JqZWN0IGlz
ICJhcnJheS1saWtlIi4KKyAqCisgKiAgIEEgbW9uayBhc2tlZCBKb3NodSwgYSBaZW4gbWFzdGVy
LCAiSGFzIGEgZG9nIEJ1ZGRoYSBuYXR1cmU/IgorICogICBKb3NodSByZXBsaWVkOiAiTXUuIgor
ICoKKyAqIFRoaXMgZnVuY3Rpb24gZGV0ZXJtaW5lcyBpZiBpdHMgYXJndW1lbnQgaGFzICJhcnJh
eSBuYXR1cmUiOiBpdCByZXR1cm5zCisgKiB0cnVlIGlmIHRoZSBhcmd1bWVudCBpcyBhbiBhY3R1
YWwgYXJyYXksIGFuIGBhcmd1bWVudHMnIG9iamVjdCwgb3IgYW4KKyAqIEhUTUxDb2xsZWN0aW9u
IChlLmcuIG5vZGUuY2hpbGROb2RlcyBvciBub2RlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCkpLgor
ICoKKyAqIEl0IHdpbGwgcmV0dXJuIGZhbHNlIGZvciBvdGhlciBhcnJheS1saWtlIG9iamVjdHMg
bGlrZSBGaWxlbGlzdC4KKyAqCisgKiBAcGFyYW0geyp9IG9iagorICogQHJldHVybiB7Ym9vbGVh
bn0KKyAqLworZnVuY3Rpb24gaGFzQXJyYXlOYXR1cmUob2JqKSB7CisgIHJldHVybiAoCisgICAg
Ly8gbm90IG51bGwvZmFsc2UKKyAgICAhIW9iaiAmJiAoCisgICAgLy8gYXJyYXlzIGFyZSBvYmpl
Y3RzLCBOb2RlTGlzdHMgYXJlIGZ1bmN0aW9ucyBpbiBTYWZhcmkKKyAgICB0eXBlb2Ygb2JqID09
ICdvYmplY3QnIHx8IHR5cGVvZiBvYmogPT0gJ2Z1bmN0aW9uJykgJiYKKyAgICAvLyBxdWFja3Mg
bGlrZSBhbiBhcnJheQorICAgICdsZW5ndGgnIGluIG9iaiAmJgorICAgIC8vIG5vdCB3aW5kb3cK
KyAgICAhKCdzZXRJbnRlcnZhbCcgaW4gb2JqKSAmJgorICAgIC8vIG5vIERPTSBub2RlIHNob3Vs
ZCBiZSBjb25zaWRlcmVkIGFuIGFycmF5LWxpa2UKKyAgICAvLyBhICdzZWxlY3QnIGVsZW1lbnQg
aGFzICdsZW5ndGgnIGFuZCAnaXRlbScgcHJvcGVydGllcyBvbiBJRTgKKyAgICB0eXBlb2Ygb2Jq
Lm5vZGVUeXBlICE9ICdudW1iZXInICYmICgKKyAgICAvLyBhIHJlYWwgYXJyYXkKKyAgICBBcnJh
eS5pc0FycmF5KG9iaikgfHwKKyAgICAvLyBhcmd1bWVudHMKKyAgICAnY2FsbGVlJyBpbiBvYmog
fHwKKyAgICAvLyBIVE1MQ29sbGVjdGlvbi9Ob2RlTGlzdAorICAgICdpdGVtJyBpbiBvYmopCisg
ICk7Cit9CisKKy8qKgorICogRW5zdXJlIHRoYXQgdGhlIGFyZ3VtZW50IGlzIGFuIGFycmF5IGJ5
IHdyYXBwaW5nIGl0IGluIGFuIGFycmF5IGlmIGl0IGlzIG5vdC4KKyAqIENyZWF0ZXMgYSBjb3B5
IG9mIHRoZSBhcmd1bWVudCBpZiBpdCBpcyBhbHJlYWR5IGFuIGFycmF5LgorICoKKyAqIFRoaXMg
aXMgbW9zdGx5IHVzZWZ1bCBpZGlvbWF0aWNhbGx5OgorICoKKyAqICAgdmFyIGNyZWF0ZUFycmF5
RnJvbU1peGVkID0gcmVxdWlyZSgnY3JlYXRlQXJyYXlGcm9tTWl4ZWQnKTsKKyAqCisgKiAgIGZ1
bmN0aW9uIHRha2VzT25lT3JNb3JlVGhpbmdzKHRoaW5ncykgeworICogICAgIHRoaW5ncyA9IGNy
ZWF0ZUFycmF5RnJvbU1peGVkKHRoaW5ncyk7CisgKiAgICAgLi4uCisgKiAgIH0KKyAqCisgKiBU
aGlzIGFsbG93cyB5b3UgdG8gdHJlYXQgYHRoaW5ncycgYXMgYW4gYXJyYXksIGJ1dCBhY2NlcHQg
c2NhbGFycyBpbiB0aGUgQVBJLgorICoKKyAqIElmIHlvdSBuZWVkIHRvIGNvbnZlcnQgYW4gYXJy
YXktbGlrZSBvYmplY3QsIGxpa2UgYGFyZ3VtZW50c2AsIGludG8gYW4gYXJyYXkKKyAqIHVzZSB0
b0FycmF5IGluc3RlYWQuCisgKgorICogQHBhcmFtIHsqfSBvYmoKKyAqIEByZXR1cm4ge2FycmF5
fQorICovCitmdW5jdGlvbiBjcmVhdGVBcnJheUZyb21NaXhlZChvYmopIHsKKyAgaWYgKCFoYXNB
cnJheU5hdHVyZShvYmopKSB7CisgICAgcmV0dXJuIFtvYmpdOworICB9IGVsc2UgaWYgKEFycmF5
LmlzQXJyYXkob2JqKSkgeworICAgIHJldHVybiBvYmouc2xpY2UoKTsKKyAgfSBlbHNlIHsKKyAg
ICByZXR1cm4gdG9BcnJheShvYmopOworICB9Cit9CisKK21vZHVsZS5leHBvcnRzID0gY3JlYXRl
QXJyYXlGcm9tTWl4ZWQ7Cit9LHsiMTQwIjoxNDB9XSwxMzE6W2Z1bmN0aW9uKF9kZXJlcV8sbW9k
dWxlLGV4cG9ydHMpeworJ3VzZSBzdHJpY3QnOworCisvKioKKyAqIENvcHlyaWdodCAoYykgMjAx
My1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5z
ZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2Yg
dGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0
cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnku
CisgKgorICogQHR5cGVjaGVja3MKKyAqLworCisvKmVzbGludC1kaXNhYmxlIGZiLXd3dy91bnNh
ZmUtaHRtbCovCisKK3ZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IF9kZXJlcV8oMTI2KTsKKwor
dmFyIGNyZWF0ZUFycmF5RnJvbU1peGVkID0gX2RlcmVxXygxMzApOwordmFyIGdldE1hcmt1cFdy
YXAgPSBfZGVyZXFfKDEzNik7Cit2YXIgaW52YXJpYW50ID0gX2RlcmVxXygxNDApOworCisvKioK
KyAqIER1bW15IGNvbnRhaW5lciB1c2VkIHRvIHJlbmRlciBhbGwgbWFya3VwLgorICovCit2YXIg
ZHVtbXlOb2RlID0gRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NID8gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnZGl2JykgOiBudWxsOworCisvKioKKyAqIFBhdHRlcm4gdXNlZCBieSBgZ2V0
Tm9kZU5hbWVgLgorICovCit2YXIgbm9kZU5hbWVQYXR0ZXJuID0gL15ccyo8KFx3KykvOworCisv
KioKKyAqIEV4dHJhY3RzIHRoZSBgbm9kZU5hbWVgIG9mIHRoZSBmaXJzdCBlbGVtZW50IGluIGEg
c3RyaW5nIG9mIG1hcmt1cC4KKyAqCisgKiBAcGFyYW0ge3N0cmluZ30gbWFya3VwIFN0cmluZyBv
ZiBtYXJrdXAuCisgKiBAcmV0dXJuIHs/c3RyaW5nfSBOb2RlIG5hbWUgb2YgdGhlIHN1cHBsaWVk
IG1hcmt1cC4KKyAqLworZnVuY3Rpb24gZ2V0Tm9kZU5hbWUobWFya3VwKSB7CisgIHZhciBub2Rl
TmFtZU1hdGNoID0gbWFya3VwLm1hdGNoKG5vZGVOYW1lUGF0dGVybik7CisgIHJldHVybiBub2Rl
TmFtZU1hdGNoICYmIG5vZGVOYW1lTWF0Y2hbMV0udG9Mb3dlckNhc2UoKTsKK30KKworLyoqCisg
KiBDcmVhdGVzIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIG5vZGVzIHJlbmRlcmVkIGZyb20gdGhl
IHN1cHBsaWVkIG1hcmt1cC4gVGhlCisgKiBvcHRpb25hbGx5IHN1cHBsaWVkIGBoYW5kbGVTY3Jp
cHRgIGZ1bmN0aW9uIHdpbGwgYmUgaW52b2tlZCBvbmNlIGZvciBlYWNoCisgKiA8c2NyaXB0PiBl
bGVtZW50IHRoYXQgaXMgcmVuZGVyZWQuIElmIG5vIGBoYW5kbGVTY3JpcHRgIGZ1bmN0aW9uIGlz
IHN1cHBsaWVkLAorICogYW4gZXhjZXB0aW9uIGlzIHRocm93biBpZiBhbnkgPHNjcmlwdD4gZWxl
bWVudHMgYXJlIHJlbmRlcmVkLgorICoKKyAqIEBwYXJhbSB7c3RyaW5nfSBtYXJrdXAgQSBzdHJp
bmcgb2YgdmFsaWQgSFRNTCBtYXJrdXAuCisgKiBAcGFyYW0gez9mdW5jdGlvbn0gaGFuZGxlU2Ny
aXB0IEludm9rZWQgb25jZSBmb3IgZWFjaCByZW5kZXJlZCA8c2NyaXB0Pi4KKyAqIEByZXR1cm4g
e2FycmF5PERPTUVsZW1lbnR8RE9NVGV4dE5vZGU+fSBBbiBhcnJheSBvZiByZW5kZXJlZCBub2Rl
cy4KKyAqLworZnVuY3Rpb24gY3JlYXRlTm9kZXNGcm9tTWFya3VwKG1hcmt1cCwgaGFuZGxlU2Ny
aXB0KSB7CisgIHZhciBub2RlID0gZHVtbXlOb2RlOworICAhISFkdW1teU5vZGUgPyAiZGV2ZWxv
cG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdjcmVhdGVOb2Rlc0Zy
b21NYXJrdXAgZHVtbXkgbm90IGluaXRpYWxpemVkJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9p
ZCAwOworICB2YXIgbm9kZU5hbWUgPSBnZXROb2RlTmFtZShtYXJrdXApOworCisgIHZhciB3cmFw
ID0gbm9kZU5hbWUgJiYgZ2V0TWFya3VwV3JhcChub2RlTmFtZSk7CisgIGlmICh3cmFwKSB7Cisg
ICAgbm9kZS5pbm5lckhUTUwgPSB3cmFwWzFdICsgbWFya3VwICsgd3JhcFsyXTsKKworICAgIHZh
ciB3cmFwRGVwdGggPSB3cmFwWzBdOworICAgIHdoaWxlICh3cmFwRGVwdGgtLSkgeworICAgICAg
bm9kZSA9IG5vZGUubGFzdENoaWxkOworICAgIH0KKyAgfSBlbHNlIHsKKyAgICBub2RlLmlubmVy
SFRNTCA9IG1hcmt1cDsKKyAgfQorCisgIHZhciBzY3JpcHRzID0gbm9kZS5nZXRFbGVtZW50c0J5
VGFnTmFtZSgnc2NyaXB0Jyk7CisgIGlmIChzY3JpcHRzLmxlbmd0aCkgeworICAgICFoYW5kbGVT
Y3JpcHQgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2Us
ICdjcmVhdGVOb2Rlc0Zyb21NYXJrdXAoLi4uKTogVW5leHBlY3RlZCA8c2NyaXB0PiBlbGVtZW50
IHJlbmRlcmVkLicpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDsKKyAgICBjcmVhdGVBcnJh
eUZyb21NaXhlZChzY3JpcHRzKS5mb3JFYWNoKGhhbmRsZVNjcmlwdCk7CisgIH0KKworICB2YXIg
bm9kZXMgPSBBcnJheS5mcm9tKG5vZGUuY2hpbGROb2Rlcyk7CisgIHdoaWxlIChub2RlLmxhc3RD
aGlsZCkgeworICAgIG5vZGUucmVtb3ZlQ2hpbGQobm9kZS5sYXN0Q2hpbGQpOworICB9CisgIHJl
dHVybiBub2RlczsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVOb2Rlc0Zyb21NYXJrdXA7
Cit9LHsiMTI2IjoxMjYsIjEzMCI6MTMwLCIxMzYiOjEzNiwiMTQwIjoxNDB9XSwxMzI6W2Z1bmN0
aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworInVzZSBzdHJpY3QiOworCisvKioKKyAqIENv
cHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBC
U0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICog
b2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUg
c2FtZSBkaXJlY3RvcnkuCisgKgorICogCisgKi8KKworZnVuY3Rpb24gbWFrZUVtcHR5RnVuY3Rp
b24oYXJnKSB7CisgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIGFyZzsKKyAgfTsK
K30KKworLyoqCisgKiBUaGlzIGZ1bmN0aW9uIGFjY2VwdHMgYW5kIGRpc2NhcmRzIGlucHV0czsg
aXQgaGFzIG5vIHNpZGUgZWZmZWN0cy4gVGhpcyBpcworICogcHJpbWFyaWx5IHVzZWZ1bCBpZGlv
bWF0aWNhbGx5IGZvciBvdmVycmlkYWJsZSBmdW5jdGlvbiBlbmRwb2ludHMgd2hpY2gKKyAqIGFs
d2F5cyBuZWVkIHRvIGJlIGNhbGxhYmxlLCBzaW5jZSBKUyBsYWNrcyBhIG51bGwtY2FsbCBpZGlv
bSBhbGEgQ29jb2EuCisgKi8KK3ZhciBlbXB0eUZ1bmN0aW9uID0gZnVuY3Rpb24gZW1wdHlGdW5j
dGlvbigpIHt9OworCitlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zID0gbWFrZUVtcHR5RnVuY3Rp
b247CitlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zRmFsc2UgPSBtYWtlRW1wdHlGdW5jdGlvbihm
YWxzZSk7CitlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zVHJ1ZSA9IG1ha2VFbXB0eUZ1bmN0aW9u
KHRydWUpOworZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc051bGwgPSBtYWtlRW1wdHlGdW5jdGlv
bihudWxsKTsKK2VtcHR5RnVuY3Rpb24udGhhdFJldHVybnNUaGlzID0gZnVuY3Rpb24gKCkgewor
ICByZXR1cm4gdGhpczsKK307CitlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zQXJndW1lbnQgPSBm
dW5jdGlvbiAoYXJnKSB7CisgIHJldHVybiBhcmc7Cit9OworCittb2R1bGUuZXhwb3J0cyA9IGVt
cHR5RnVuY3Rpb247Cit9LHt9XSwxMzM6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMp
eworLyoqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisK
K3ZhciBlbXB0eU9iamVjdCA9IHt9OworCitpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rp
b24nKSB7CisgIE9iamVjdC5mcmVlemUoZW1wdHlPYmplY3QpOworfQorCittb2R1bGUuZXhwb3J0
cyA9IGVtcHR5T2JqZWN0OworfSx7fV0sMTM0OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBv
cnRzKXsKKy8qKgorICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMu
CisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGlj
ZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5T
RSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRp
dGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFU
RU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3Qn
OworCisvKioKKyAqIEBwYXJhbSB7RE9NRWxlbWVudH0gbm9kZSBpbnB1dC90ZXh0YXJlYSB0byBm
b2N1cworICovCisKK2Z1bmN0aW9uIGZvY3VzTm9kZShub2RlKSB7CisgIC8vIElFOCBjYW4gdGhy
b3cgIkNhbid0IG1vdmUgZm9jdXMgdG8gdGhlIGNvbnRyb2wgYmVjYXVzZSBpdCBpcyBpbnZpc2li
bGUsCisgIC8vIG5vdCBlbmFibGVkLCBvciBvZiBhIHR5cGUgdGhhdCBkb2VzIG5vdCBhY2NlcHQg
dGhlIGZvY3VzLiIgZm9yIGFsbCBraW5kcyBvZgorICAvLyByZWFzb25zIHRoYXQgYXJlIHRvbyBl
eHBlbnNpdmUgYW5kIGZyYWdpbGUgdG8gdGVzdC4KKyAgdHJ5IHsKKyAgICBub2RlLmZvY3VzKCk7
CisgIH0gY2F0Y2ggKGUpIHt9Cit9CisKK21vZHVsZS5leHBvcnRzID0gZm9jdXNOb2RlOworfSx7
fV0sMTM1OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKyd1c2Ugc3RyaWN0JzsK
KworLyoqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIEB0eXBlY2hlY2tzCisgKi8KKwor
LyogZXNsaW50LWRpc2FibGUgZmItd3d3L3R5cGVvZi11bmRlZmluZWQgKi8KKworLyoqCisgKiBT
YW1lIGFzIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgYnV0IHdyYXBzIGluIGEgdHJ5LWNhdGNoIGJs
b2NrLiBJbiBJRSBpdCBpcworICogbm90IHNhZmUgdG8gY2FsbCBkb2N1bWVudC5hY3RpdmVFbGVt
ZW50IGlmIHRoZXJlIGlzIG5vdGhpbmcgZm9jdXNlZC4KKyAqCisgKiBUaGUgYWN0aXZlRWxlbWVu
dCB3aWxsIGJlIG51bGwgb25seSBpZiB0aGUgZG9jdW1lbnQgb3IgZG9jdW1lbnQgYm9keSBpcyBu
b3QKKyAqIHlldCBkZWZpbmVkLgorICovCitmdW5jdGlvbiBnZXRBY3RpdmVFbGVtZW50KCkgLyo/
RE9NRWxlbWVudCoveworICBpZiAodHlwZW9mIGRvY3VtZW50ID09PSAndW5kZWZpbmVkJykgewor
ICAgIHJldHVybiBudWxsOworICB9CisgIHRyeSB7CisgICAgcmV0dXJuIGRvY3VtZW50LmFjdGl2
ZUVsZW1lbnQgfHwgZG9jdW1lbnQuYm9keTsKKyAgfSBjYXRjaCAoZSkgeworICAgIHJldHVybiBk
b2N1bWVudC5ib2R5OworICB9Cit9CisKK21vZHVsZS5leHBvcnRzID0gZ2V0QWN0aXZlRWxlbWVu
dDsKK30se31dLDEzNjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisndXNlIHN0
cmljdCc7CisKKy8qKgorICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJ
bmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElD
RU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUg
UEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworLyplc2xpbnQt
ZGlzYWJsZSBmYi13d3cvdW5zYWZlLWh0bWwgKi8KKwordmFyIEV4ZWN1dGlvbkVudmlyb25tZW50
ID0gX2RlcmVxXygxMjYpOworCit2YXIgaW52YXJpYW50ID0gX2RlcmVxXygxNDApOworCisvKioK
KyAqIER1bW15IGNvbnRhaW5lciB1c2VkIHRvIGRldGVjdCB3aGljaCB3cmFwcyBhcmUgbmVjZXNz
YXJ5LgorICovCit2YXIgZHVtbXlOb2RlID0gRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9N
ID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykgOiBudWxsOworCisvKioKKyAqIFNvbWUg
YnJvd3NlcnMgY2Fubm90IHVzZSBgaW5uZXJIVE1MYCB0byByZW5kZXIgY2VydGFpbiBlbGVtZW50
cyBzdGFuZGFsb25lLAorICogc28gd2Ugd3JhcCB0aGVtLCByZW5kZXIgdGhlIHdyYXBwZWQgbm9k
ZXMsIHRoZW4gZXh0cmFjdCB0aGUgZGVzaXJlZCBub2RlLgorICoKKyAqIEluIElFOCwgY2VydGFp
biBlbGVtZW50cyBjYW5ub3QgcmVuZGVyIGFsb25lLCBzbyB3cmFwIGFsbCBlbGVtZW50cyAoJyon
KS4KKyAqLworCit2YXIgc2hvdWxkV3JhcCA9IHt9OworCit2YXIgc2VsZWN0V3JhcCA9IFsxLCAn
PHNlbGVjdCBtdWx0aXBsZT0idHJ1ZSI+JywgJzwvc2VsZWN0PiddOwordmFyIHRhYmxlV3JhcCA9
IFsxLCAnPHRhYmxlPicsICc8L3RhYmxlPiddOwordmFyIHRyV3JhcCA9IFszLCAnPHRhYmxlPjx0
Ym9keT48dHI+JywgJzwvdHI+PC90Ym9keT48L3RhYmxlPiddOworCit2YXIgc3ZnV3JhcCA9IFsx
LCAnPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPicsICc8L3N2Zz4nXTsK
KwordmFyIG1hcmt1cFdyYXAgPSB7CisgICcqJzogWzEsICc/PGRpdj4nLCAnPC9kaXY+J10sCisK
KyAgJ2FyZWEnOiBbMSwgJzxtYXA+JywgJzwvbWFwPiddLAorICAnY29sJzogWzIsICc8dGFibGU+
PHRib2R5PjwvdGJvZHk+PGNvbGdyb3VwPicsICc8L2NvbGdyb3VwPjwvdGFibGU+J10sCisgICds
ZWdlbmQnOiBbMSwgJzxmaWVsZHNldD4nLCAnPC9maWVsZHNldD4nXSwKKyAgJ3BhcmFtJzogWzEs
ICc8b2JqZWN0PicsICc8L29iamVjdD4nXSwKKyAgJ3RyJzogWzIsICc8dGFibGU+PHRib2R5Pics
ICc8L3Rib2R5PjwvdGFibGU+J10sCisKKyAgJ29wdGdyb3VwJzogc2VsZWN0V3JhcCwKKyAgJ29w
dGlvbic6IHNlbGVjdFdyYXAsCisKKyAgJ2NhcHRpb24nOiB0YWJsZVdyYXAsCisgICdjb2xncm91
cCc6IHRhYmxlV3JhcCwKKyAgJ3Rib2R5JzogdGFibGVXcmFwLAorICAndGZvb3QnOiB0YWJsZVdy
YXAsCisgICd0aGVhZCc6IHRhYmxlV3JhcCwKKworICAndGQnOiB0cldyYXAsCisgICd0aCc6IHRy
V3JhcAorfTsKKworLy8gSW5pdGlhbGl6ZSB0aGUgU1ZHIGVsZW1lbnRzIHNpbmNlIHdlIGtub3cg
dGhleSdsbCBhbHdheXMgbmVlZCB0byBiZSB3cmFwcGVkCisvLyBjb25zaXN0ZW50bHkuIElmIHRo
ZXkgYXJlIGNyZWF0ZWQgaW5zaWRlIGEgPGRpdj4gdGhleSB3aWxsIGJlIGluaXRpYWxpemVkIGlu
CisvLyB0aGUgd3JvbmcgbmFtZXNwYWNlIChhbmQgd2lsbCBub3QgZGlzcGxheSkuCit2YXIgc3Zn
RWxlbWVudHMgPSBbJ2NpcmNsZScsICdjbGlwUGF0aCcsICdkZWZzJywgJ2VsbGlwc2UnLCAnZycs
ICdpbWFnZScsICdsaW5lJywgJ2xpbmVhckdyYWRpZW50JywgJ21hc2snLCAncGF0aCcsICdwYXR0
ZXJuJywgJ3BvbHlnb24nLCAncG9seWxpbmUnLCAncmFkaWFsR3JhZGllbnQnLCAncmVjdCcsICdz
dG9wJywgJ3RleHQnLCAndHNwYW4nXTsKK3N2Z0VsZW1lbnRzLmZvckVhY2goZnVuY3Rpb24gKG5v
ZGVOYW1lKSB7CisgIG1hcmt1cFdyYXBbbm9kZU5hbWVdID0gc3ZnV3JhcDsKKyAgc2hvdWxkV3Jh
cFtub2RlTmFtZV0gPSB0cnVlOworfSk7CisKKy8qKgorICogR2V0cyB0aGUgbWFya3VwIHdyYXAg
Y29uZmlndXJhdGlvbiBmb3IgdGhlIHN1cHBsaWVkIGBub2RlTmFtZWAuCisgKgorICogTk9URTog
VGhpcyBsYXppbHkgZGV0ZWN0cyB3aGljaCB3cmFwcyBhcmUgbmVjZXNzYXJ5IGZvciB0aGUgY3Vy
cmVudCBicm93c2VyLgorICoKKyAqIEBwYXJhbSB7c3RyaW5nfSBub2RlTmFtZSBMb3dlcmNhc2Ug
YG5vZGVOYW1lYC4KKyAqIEByZXR1cm4gez9hcnJheX0gTWFya3VwIHdyYXAgY29uZmlndXJhdGlv
biwgaWYgYXBwbGljYWJsZS4KKyAqLworZnVuY3Rpb24gZ2V0TWFya3VwV3JhcChub2RlTmFtZSkg
eworICAhISFkdW1teU5vZGUgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZh
cmlhbnQoZmFsc2UsICdNYXJrdXAgd3JhcHBpbmcgbm9kZSBub3QgaW5pdGlhbGl6ZWQnKSA6IGlu
dmFyaWFudChmYWxzZSkgOiB2b2lkIDA7CisgIGlmICghbWFya3VwV3JhcC5oYXNPd25Qcm9wZXJ0
eShub2RlTmFtZSkpIHsKKyAgICBub2RlTmFtZSA9ICcqJzsKKyAgfQorICBpZiAoIXNob3VsZFdy
YXAuaGFzT3duUHJvcGVydHkobm9kZU5hbWUpKSB7CisgICAgaWYgKG5vZGVOYW1lID09PSAnKicp
IHsKKyAgICAgIGR1bW15Tm9kZS5pbm5lckhUTUwgPSAnPGxpbmsgLz4nOworICAgIH0gZWxzZSB7
CisgICAgICBkdW1teU5vZGUuaW5uZXJIVE1MID0gJzwnICsgbm9kZU5hbWUgKyAnPjwvJyArIG5v
ZGVOYW1lICsgJz4nOworICAgIH0KKyAgICBzaG91bGRXcmFwW25vZGVOYW1lXSA9ICFkdW1teU5v
ZGUuZmlyc3RDaGlsZDsKKyAgfQorICByZXR1cm4gc2hvdWxkV3JhcFtub2RlTmFtZV0gPyBtYXJr
dXBXcmFwW25vZGVOYW1lXSA6IG51bGw7Cit9CisKK21vZHVsZS5leHBvcnRzID0gZ2V0TWFya3Vw
V3JhcDsKK30seyIxMjYiOjEyNiwiMTQwIjoxNDB9XSwxMzc6W2Z1bmN0aW9uKF9kZXJlcV8sbW9k
dWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJv
b2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29k
ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisg
KiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUu
IEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIEB0eXBlY2hl
Y2tzCisgKi8KKworJ3VzZSBzdHJpY3QnOworCisvKioKKyAqIEdldHMgdGhlIHNjcm9sbCBwb3Np
dGlvbiBvZiB0aGUgc3VwcGxpZWQgZWxlbWVudCBvciB3aW5kb3cuCisgKgorICogVGhlIHJldHVy
biB2YWx1ZXMgYXJlIHVuYm91bmRlZCwgdW5saWtlIGBnZXRTY3JvbGxQb3NpdGlvbmAuIFRoaXMg
bWVhbnMgdGhleQorICogbWF5IGJlIG5lZ2F0aXZlIG9yIGV4Y2VlZCB0aGUgZWxlbWVudCBib3Vu
ZGFyaWVzICh3aGljaCBpcyBwb3NzaWJsZSB1c2luZworICogaW5lcnRpYWwgc2Nyb2xsaW5nKS4K
KyAqCisgKiBAcGFyYW0ge0RPTVdpbmRvd3xET01FbGVtZW50fSBzY3JvbGxhYmxlCisgKiBAcmV0
dXJuIHtvYmplY3R9IE1hcCB3aXRoIGB4YCBhbmQgYHlgIGtleXMuCisgKi8KKworZnVuY3Rpb24g
Z2V0VW5ib3VuZGVkU2Nyb2xsUG9zaXRpb24oc2Nyb2xsYWJsZSkgeworICBpZiAoc2Nyb2xsYWJs
ZSA9PT0gd2luZG93KSB7CisgICAgcmV0dXJuIHsKKyAgICAgIHg6IHdpbmRvdy5wYWdlWE9mZnNl
dCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdCwKKyAgICAgIHk6IHdpbmRv
dy5wYWdlWU9mZnNldCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wCisgICAg
fTsKKyAgfQorICByZXR1cm4geworICAgIHg6IHNjcm9sbGFibGUuc2Nyb2xsTGVmdCwKKyAgICB5
OiBzY3JvbGxhYmxlLnNjcm9sbFRvcAorICB9OworfQorCittb2R1bGUuZXhwb3J0cyA9IGdldFVu
Ym91bmRlZFNjcm9sbFBvc2l0aW9uOworfSx7fV0sMTM4OltmdW5jdGlvbihfZGVyZXFfLG1vZHVs
ZSxleHBvcnRzKXsKKyd1c2Ugc3RyaWN0JzsKKworLyoqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTMt
cHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
VGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2Ug
Zm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRo
aXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMg
Y2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Lgor
ICoKKyAqIEB0eXBlY2hlY2tzCisgKi8KKwordmFyIF91cHBlcmNhc2VQYXR0ZXJuID0gLyhbQS1a
XSkvZzsKKworLyoqCisgKiBIeXBoZW5hdGVzIGEgY2FtZWxjYXNlZCBzdHJpbmcsIGZvciBleGFt
cGxlOgorICoKKyAqICAgPiBoeXBoZW5hdGUoJ2JhY2tncm91bmRDb2xvcicpCisgKiAgIDwgImJh
Y2tncm91bmQtY29sb3IiCisgKgorICogRm9yIENTUyBzdHlsZSBuYW1lcywgdXNlIGBoeXBoZW5h
dGVTdHlsZU5hbWVgIGluc3RlYWQgd2hpY2ggd29ya3MgcHJvcGVybHkKKyAqIHdpdGggYWxsIHZl
bmRvciBwcmVmaXhlcywgaW5jbHVkaW5nIGBtc2AuCisgKgorICogQHBhcmFtIHtzdHJpbmd9IHN0
cmluZworICogQHJldHVybiB7c3RyaW5nfQorICovCitmdW5jdGlvbiBoeXBoZW5hdGUoc3RyaW5n
KSB7CisgIHJldHVybiBzdHJpbmcucmVwbGFjZShfdXBwZXJjYXNlUGF0dGVybiwgJy0kMScpLnRv
TG93ZXJDYXNlKCk7Cit9CisKK21vZHVsZS5leHBvcnRzID0gaHlwaGVuYXRlOworfSx7fV0sMTM5
OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IChj
KSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBs
aWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9y
eSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQg
cmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVj
dG9yeS4KKyAqCisgKiBAdHlwZWNoZWNrcworICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIGh5
cGhlbmF0ZSA9IF9kZXJlcV8oMTM4KTsKKwordmFyIG1zUGF0dGVybiA9IC9ebXMtLzsKKworLyoq
CisgKiBIeXBoZW5hdGVzIGEgY2FtZWxjYXNlZCBDU1MgcHJvcGVydHkgbmFtZSwgZm9yIGV4YW1w
bGU6CisgKgorICogICA+IGh5cGhlbmF0ZVN0eWxlTmFtZSgnYmFja2dyb3VuZENvbG9yJykKKyAq
ICAgPCAiYmFja2dyb3VuZC1jb2xvciIKKyAqICAgPiBoeXBoZW5hdGVTdHlsZU5hbWUoJ01velRy
YW5zaXRpb24nKQorICogICA8ICItbW96LXRyYW5zaXRpb24iCisgKiAgID4gaHlwaGVuYXRlU3R5
bGVOYW1lKCdtc1RyYW5zaXRpb24nKQorICogICA8ICItbXMtdHJhbnNpdGlvbiIKKyAqCisgKiBB
cyBNb2Rlcm5penIgc3VnZ2VzdHMgKGh0dHA6Ly9tb2Rlcm5penIuY29tL2RvY3MvI3ByZWZpeGVk
KSwgYW4gYG1zYCBwcmVmaXgKKyAqIGlzIGNvbnZlcnRlZCB0byBgLW1zLWAuCisgKgorICogQHBh
cmFtIHtzdHJpbmd9IHN0cmluZworICogQHJldHVybiB7c3RyaW5nfQorICovCitmdW5jdGlvbiBo
eXBoZW5hdGVTdHlsZU5hbWUoc3RyaW5nKSB7CisgIHJldHVybiBoeXBoZW5hdGUoc3RyaW5nKS5y
ZXBsYWNlKG1zUGF0dGVybiwgJy1tcy0nKTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBoeXBoZW5h
dGVTdHlsZU5hbWU7Cit9LHsiMTM4IjoxMzh9XSwxNDA6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxl
LGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ss
IEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBp
cyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFu
IGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRo
ZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0
cmljdCc7CisKKy8qKgorICogVXNlIGludmFyaWFudCgpIHRvIGFzc2VydCBzdGF0ZSB3aGljaCB5
b3VyIHByb2dyYW0gYXNzdW1lcyB0byBiZSB0cnVlLgorICoKKyAqIFByb3ZpZGUgc3ByaW50Zi1z
dHlsZSBmb3JtYXQgKG9ubHkgJXMgaXMgc3VwcG9ydGVkKSBhbmQgYXJndW1lbnRzCisgKiB0byBw
cm92aWRlIGluZm9ybWF0aW9uIGFib3V0IHdoYXQgYnJva2UgYW5kIHdoYXQgeW91IHdlcmUKKyAq
IGV4cGVjdGluZy4KKyAqCisgKiBUaGUgaW52YXJpYW50IG1lc3NhZ2Ugd2lsbCBiZSBzdHJpcHBl
ZCBpbiBwcm9kdWN0aW9uLCBidXQgdGhlIGludmFyaWFudAorICogd2lsbCByZW1haW4gdG8gZW5z
dXJlIGxvZ2ljIGRvZXMgbm90IGRpZmZlciBpbiBwcm9kdWN0aW9uLgorICovCisKK2Z1bmN0aW9u
IGludmFyaWFudChjb25kaXRpb24sIGZvcm1hdCwgYSwgYiwgYywgZCwgZSwgZikgeworICBpZiAo
ImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgaWYgKGZvcm1hdCA9PT0gdW5k
ZWZpbmVkKSB7CisgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFyaWFudCByZXF1aXJlcyBhbiBl
cnJvciBtZXNzYWdlIGFyZ3VtZW50Jyk7CisgICAgfQorICB9CisKKyAgaWYgKCFjb25kaXRpb24p
IHsKKyAgICB2YXIgZXJyb3I7CisgICAgaWYgKGZvcm1hdCA9PT0gdW5kZWZpbmVkKSB7CisgICAg
ICBlcnJvciA9IG5ldyBFcnJvcignTWluaWZpZWQgZXhjZXB0aW9uIG9jY3VycmVkOyB1c2UgdGhl
IG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQgJyArICdmb3IgdGhlIGZ1bGwgZXJyb3IgbWVz
c2FnZSBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLicpOworICAgIH0gZWxzZSB7Cisg
ICAgICB2YXIgYXJncyA9IFthLCBiLCBjLCBkLCBlLCBmXTsKKyAgICAgIHZhciBhcmdJbmRleCA9
IDA7CisgICAgICBlcnJvciA9IG5ldyBFcnJvcihmb3JtYXQucmVwbGFjZSgvJXMvZywgZnVuY3Rp
b24gKCkgeworICAgICAgICByZXR1cm4gYXJnc1thcmdJbmRleCsrXTsKKyAgICAgIH0pKTsKKyAg
ICAgIGVycm9yLm5hbWUgPSAnSW52YXJpYW50IFZpb2xhdGlvbic7CisgICAgfQorCisgICAgZXJy
b3IuZnJhbWVzVG9Qb3AgPSAxOyAvLyB3ZSBkb24ndCBjYXJlIGFib3V0IGludmFyaWFudCdzIG93
biBmcmFtZQorICAgIHRocm93IGVycm9yOworICB9Cit9CisKK21vZHVsZS5leHBvcnRzID0gaW52
YXJpYW50OworfSx7fV0sMTQxOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKyd1
c2Ugc3RyaWN0JzsKKworLyoqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJv
b2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29k
ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisg
KiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUu
IEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIEB0eXBlY2hl
Y2tzCisgKi8KKworLyoqCisgKiBAcGFyYW0geyp9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNoZWNr
LgorICogQHJldHVybiB7Ym9vbGVhbn0gV2hldGhlciBvciBub3QgdGhlIG9iamVjdCBpcyBhIERP
TSBub2RlLgorICovCitmdW5jdGlvbiBpc05vZGUob2JqZWN0KSB7CisgIHJldHVybiAhIShvYmpl
Y3QgJiYgKHR5cGVvZiBOb2RlID09PSAnZnVuY3Rpb24nID8gb2JqZWN0IGluc3RhbmNlb2YgTm9k
ZSA6IHR5cGVvZiBvYmplY3QgPT09ICdvYmplY3QnICYmIHR5cGVvZiBvYmplY3Qubm9kZVR5cGUg
PT09ICdudW1iZXInICYmIHR5cGVvZiBvYmplY3Qubm9kZU5hbWUgPT09ICdzdHJpbmcnKSk7Cit9
CisKK21vZHVsZS5leHBvcnRzID0gaXNOb2RlOworfSx7fV0sMTQyOltmdW5jdGlvbihfZGVyZXFf
LG1vZHVsZSxleHBvcnRzKXsKKyd1c2Ugc3RyaWN0JzsKKworLyoqCisgKiBDb3B5cmlnaHQgKGMp
IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxp
Y2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5
IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCBy
aWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0
b3J5LgorICoKKyAqIEB0eXBlY2hlY2tzCisgKi8KKwordmFyIGlzTm9kZSA9IF9kZXJlcV8oMTQx
KTsKKworLyoqCisgKiBAcGFyYW0geyp9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNoZWNrLgorICog
QHJldHVybiB7Ym9vbGVhbn0gV2hldGhlciBvciBub3QgdGhlIG9iamVjdCBpcyBhIERPTSB0ZXh0
IG5vZGUuCisgKi8KK2Z1bmN0aW9uIGlzVGV4dE5vZGUob2JqZWN0KSB7CisgIHJldHVybiBpc05v
ZGUob2JqZWN0KSAmJiBvYmplY3Qubm9kZVR5cGUgPT0gMzsKK30KKworbW9kdWxlLmV4cG9ydHMg
PSBpc1RleHROb2RlOworfSx7IjE0MSI6MTQxfV0sMTQzOltmdW5jdGlvbihfZGVyZXFfLG1vZHVs
ZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29r
LCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUg
aXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICog
TElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBB
biBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0
aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiAKKyAqIEB0eXBl
Y2hlY2tzIHN0YXRpYy1vbmx5CisgKi8KKworJ3VzZSBzdHJpY3QnOworCisvKioKKyAqIE1lbW9p
emVzIHRoZSByZXR1cm4gdmFsdWUgb2YgYSBmdW5jdGlvbiB0aGF0IGFjY2VwdHMgb25lIHN0cmlu
ZyBhcmd1bWVudC4KKyAqLworCitmdW5jdGlvbiBtZW1vaXplU3RyaW5nT25seShjYWxsYmFjaykg
eworICB2YXIgY2FjaGUgPSB7fTsKKyAgcmV0dXJuIGZ1bmN0aW9uIChzdHJpbmcpIHsKKyAgICBp
ZiAoIWNhY2hlLmhhc093blByb3BlcnR5KHN0cmluZykpIHsKKyAgICAgIGNhY2hlW3N0cmluZ10g
PSBjYWxsYmFjay5jYWxsKHRoaXMsIHN0cmluZyk7CisgICAgfQorICAgIHJldHVybiBjYWNoZVtz
dHJpbmddOworICB9OworfQorCittb2R1bGUuZXhwb3J0cyA9IG1lbW9pemVTdHJpbmdPbmx5Owor
fSx7fV0sMTQ0OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29w
eXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS4KKyAqCisgKiBAdHlwZWNoZWNrcworICovCisKKyd1c2Ugc3RyaWN0JzsK
KwordmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gX2RlcmVxXygxMjYpOworCit2YXIgcGVyZm9y
bWFuY2U7CisKK2lmIChFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00pIHsKKyAgcGVyZm9y
bWFuY2UgPSB3aW5kb3cucGVyZm9ybWFuY2UgfHwgd2luZG93Lm1zUGVyZm9ybWFuY2UgfHwgd2lu
ZG93LndlYmtpdFBlcmZvcm1hbmNlOworfQorCittb2R1bGUuZXhwb3J0cyA9IHBlcmZvcm1hbmNl
IHx8IHt9OworfSx7IjEyNiI6MTI2fV0sMTQ1OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBv
cnRzKXsKKyd1c2Ugc3RyaWN0JzsKKworLyoqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2Vu
dCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBz
b3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQg
aW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291
cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJl
IGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAq
IEB0eXBlY2hlY2tzCisgKi8KKwordmFyIHBlcmZvcm1hbmNlID0gX2RlcmVxXygxNDQpOworCit2
YXIgcGVyZm9ybWFuY2VOb3c7CisKKy8qKgorICogRGV0ZWN0IGlmIHdlIGNhbiB1c2UgYHdpbmRv
dy5wZXJmb3JtYW5jZS5ub3coKWAgYW5kIGdyYWNlZnVsbHkgZmFsbGJhY2sgdG8KKyAqIGBEYXRl
Lm5vdygpYCBpZiBpdCBkb2Vzbid0IGV4aXN0LiBXZSBuZWVkIHRvIHN1cHBvcnQgRmlyZWZveCA8
IDE1IGZvciBub3cKKyAqIGJlY2F1c2Ugb2YgRmFjZWJvb2sncyB0ZXN0aW5nIGluZnJhc3RydWN0
dXJlLgorICovCitpZiAocGVyZm9ybWFuY2Uubm93KSB7CisgIHBlcmZvcm1hbmNlTm93ID0gZnVu
Y3Rpb24gcGVyZm9ybWFuY2VOb3coKSB7CisgICAgcmV0dXJuIHBlcmZvcm1hbmNlLm5vdygpOwor
ICB9OworfSBlbHNlIHsKKyAgcGVyZm9ybWFuY2VOb3cgPSBmdW5jdGlvbiBwZXJmb3JtYW5jZU5v
dygpIHsKKyAgICByZXR1cm4gRGF0ZS5ub3coKTsKKyAgfTsKK30KKworbW9kdWxlLmV4cG9ydHMg
PSBwZXJmb3JtYW5jZU5vdzsKK30seyIxNDQiOjE0NH1dLDE0NjpbZnVuY3Rpb24oX2RlcmVxXyxt
b2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNl
Ym9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBj
b2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUK
KyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJl
ZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQg
aW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogQHR5cGVj
aGVja3MKKyAqIAorICovCisKKy8qZXNsaW50LWRpc2FibGUgbm8tc2VsZi1jb21wYXJlICovCisK
Kyd1c2Ugc3RyaWN0JzsKKwordmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5o
YXNPd25Qcm9wZXJ0eTsKKworLyoqCisgKiBpbmxpbmVkIE9iamVjdC5pcyBwb2x5ZmlsbCB0byBh
dm9pZCByZXF1aXJpbmcgY29uc3VtZXJzIHNoaXAgdGhlaXIgb3duCisgKiBodHRwczovL2RldmVs
b3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9i
YWxfT2JqZWN0cy9PYmplY3QvaXMKKyAqLworZnVuY3Rpb24gaXMoeCwgeSkgeworICAvLyBTYW1l
VmFsdWUgYWxnb3JpdGhtCisgIGlmICh4ID09PSB5KSB7CisgICAgLy8gU3RlcHMgMS01LCA3LTEw
CisgICAgLy8gU3RlcHMgNi5iLTYuZTogKzAgIT0gLTAKKyAgICAvLyBBZGRlZCB0aGUgbm9uemVy
byB5IGNoZWNrIHRvIG1ha2UgRmxvdyBoYXBweSwgYnV0IGl0IGlzIHJlZHVuZGFudAorICAgIHJl
dHVybiB4ICE9PSAwIHx8IHkgIT09IDAgfHwgMSAvIHggPT09IDEgLyB5OworICB9IGVsc2Ugewor
ICAgIC8vIFN0ZXAgNi5hOiBOYU4gPT0gTmFOCisgICAgcmV0dXJuIHggIT09IHggJiYgeSAhPT0g
eTsKKyAgfQorfQorCisvKioKKyAqIFBlcmZvcm1zIGVxdWFsaXR5IGJ5IGl0ZXJhdGluZyB0aHJv
dWdoIGtleXMgb24gYW4gb2JqZWN0IGFuZCByZXR1cm5pbmcgZmFsc2UKKyAqIHdoZW4gYW55IGtl
eSBoYXMgdmFsdWVzIHdoaWNoIGFyZSBub3Qgc3RyaWN0bHkgZXF1YWwgYmV0d2VlbiB0aGUgYXJn
dW1lbnRzLgorICogUmV0dXJucyB0cnVlIHdoZW4gdGhlIHZhbHVlcyBvZiBhbGwga2V5cyBhcmUg
c3RyaWN0bHkgZXF1YWwuCisgKi8KK2Z1bmN0aW9uIHNoYWxsb3dFcXVhbChvYmpBLCBvYmpCKSB7
CisgIGlmIChpcyhvYmpBLCBvYmpCKSkgeworICAgIHJldHVybiB0cnVlOworICB9CisKKyAgaWYg
KHR5cGVvZiBvYmpBICE9PSAnb2JqZWN0JyB8fCBvYmpBID09PSBudWxsIHx8IHR5cGVvZiBvYmpC
ICE9PSAnb2JqZWN0JyB8fCBvYmpCID09PSBudWxsKSB7CisgICAgcmV0dXJuIGZhbHNlOworICB9
CisKKyAgdmFyIGtleXNBID0gT2JqZWN0LmtleXMob2JqQSk7CisgIHZhciBrZXlzQiA9IE9iamVj
dC5rZXlzKG9iakIpOworCisgIGlmIChrZXlzQS5sZW5ndGggIT09IGtleXNCLmxlbmd0aCkgewor
ICAgIHJldHVybiBmYWxzZTsKKyAgfQorCisgIC8vIFRlc3QgZm9yIEEncyBrZXlzIGRpZmZlcmVu
dCBmcm9tIEIuCisgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5c0EubGVuZ3RoOyBpKyspIHsKKyAg
ICBpZiAoIWhhc093blByb3BlcnR5LmNhbGwob2JqQiwga2V5c0FbaV0pIHx8ICFpcyhvYmpBW2tl
eXNBW2ldXSwgb2JqQltrZXlzQVtpXV0pKSB7CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
ICB9CisKKyAgcmV0dXJuIHRydWU7Cit9CisKK21vZHVsZS5leHBvcnRzID0gc2hhbGxvd0VxdWFs
OworfSx7fV0sMTQ3OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICog
Q29weXJpZ2h0IDIwMTQtMjAxNSwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0
eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBlbXB0eUZ1bmN0aW9u
ID0gX2RlcmVxXygxMzIpOworCisvKioKKyAqIFNpbWlsYXIgdG8gaW52YXJpYW50IGJ1dCBvbmx5
IGxvZ3MgYSB3YXJuaW5nIGlmIHRoZSBjb25kaXRpb24gaXMgbm90IG1ldC4KKyAqIFRoaXMgY2Fu
IGJlIHVzZWQgdG8gbG9nIGlzc3VlcyBpbiBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMgaW4gY3Jp
dGljYWwKKyAqIHBhdGhzLiBSZW1vdmluZyB0aGUgbG9nZ2luZyBjb2RlIGZvciBwcm9kdWN0aW9u
IGVudmlyb25tZW50cyB3aWxsIGtlZXAgdGhlCisgKiBzYW1lIGxvZ2ljIGFuZCBmb2xsb3cgdGhl
IHNhbWUgY29kZSBwYXRocy4KKyAqLworCit2YXIgd2FybmluZyA9IGVtcHR5RnVuY3Rpb247CisK
K2lmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgKGZ1bmN0aW9uICgpIHsK
KyAgICB2YXIgcHJpbnRXYXJuaW5nID0gZnVuY3Rpb24gcHJpbnRXYXJuaW5nKGZvcm1hdCkgewor
ICAgICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBBcnJheShfbGVu
ID4gMSA/IF9sZW4gLSAxIDogMCksIF9rZXkgPSAxOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7Cisg
ICAgICAgIGFyZ3NbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldOworICAgICAgfQorCisgICAg
ICB2YXIgYXJnSW5kZXggPSAwOworICAgICAgdmFyIG1lc3NhZ2UgPSAnV2FybmluZzogJyArIGZv
cm1hdC5yZXBsYWNlKC8lcy9nLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIHJldHVybiBhcmdzW2Fy
Z0luZGV4KytdOworICAgICAgfSk7CisgICAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRl
ZmluZWQnKSB7CisgICAgICAgIGNvbnNvbGUuZXJyb3IobWVzc2FnZSk7CisgICAgICB9CisgICAg
ICB0cnkgeworICAgICAgICAvLyAtLS0gV2VsY29tZSB0byBkZWJ1Z2dpbmcgUmVhY3QgLS0tCisg
ICAgICAgIC8vIFRoaXMgZXJyb3Igd2FzIHRocm93biBhcyBhIGNvbnZlbmllbmNlIHNvIHRoYXQg
eW91IGNhbiB1c2UgdGhpcyBzdGFjaworICAgICAgICAvLyB0byBmaW5kIHRoZSBjYWxsc2l0ZSB0
aGF0IGNhdXNlZCB0aGlzIHdhcm5pbmcgdG8gZmlyZS4KKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KG1lc3NhZ2UpOworICAgICAgfSBjYXRjaCAoeCkge30KKyAgICB9OworCisgICAgd2FybmluZyA9
IGZ1bmN0aW9uIHdhcm5pbmcoY29uZGl0aW9uLCBmb3JtYXQpIHsKKyAgICAgIGlmIChmb3JtYXQg
PT09IHVuZGVmaW5lZCkgeworICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2B3YXJuaW5nKGNvbmRp
dGlvbiwgZm9ybWF0LCAuLi5hcmdzKWAgcmVxdWlyZXMgYSB3YXJuaW5nICcgKyAnbWVzc2FnZSBh
cmd1bWVudCcpOworICAgICAgfQorCisgICAgICBpZiAoZm9ybWF0LmluZGV4T2YoJ0ZhaWxlZCBD
b21wb3NpdGUgcHJvcFR5cGU6ICcpID09PSAwKSB7CisgICAgICAgIHJldHVybjsgLy8gSWdub3Jl
IENvbXBvc2l0ZUNvbXBvbmVudCBwcm9wdHlwZSBjaGVjay4KKyAgICAgIH0KKworICAgICAgaWYg
KCFjb25kaXRpb24pIHsKKyAgICAgICAgZm9yICh2YXIgX2xlbjIgPSBhcmd1bWVudHMubGVuZ3Ro
LCBhcmdzID0gQXJyYXkoX2xlbjIgPiAyID8gX2xlbjIgLSAyIDogMCksIF9rZXkyID0gMjsgX2tl
eTIgPCBfbGVuMjsgX2tleTIrKykgeworICAgICAgICAgIGFyZ3NbX2tleTIgLSAyXSA9IGFyZ3Vt
ZW50c1tfa2V5Ml07CisgICAgICAgIH0KKworICAgICAgICBwcmludFdhcm5pbmcuYXBwbHkodW5k
ZWZpbmVkLCBbZm9ybWF0XS5jb25jYXQoYXJncykpOworICAgICAgfQorICAgIH07CisgIH0pKCk7
Cit9CisKK21vZHVsZS5leHBvcnRzID0gd2FybmluZzsKK30seyIxMzIiOjEzMn1dLDE0ODpbZnVu
Y3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisndXNlIHN0cmljdCc7CisvKiBlc2xpbnQt
ZGlzYWJsZSBuby11bnVzZWQtdmFycyAqLwordmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnBy
b3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTsKK3ZhciBwcm9wSXNFbnVtZXJhYmxlID0gT2JqZWN0LnBy
b3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTsKKworZnVuY3Rpb24gdG9PYmplY3QodmFsKSB7
CisgICAgaWYgKHZhbCA9PT0gbnVsbCB8fCB2YWwgPT09IHVuZGVmaW5lZCkgeworICAgICAgICB0
aHJvdyBuZXcgVHlwZUVycm9yKCdPYmplY3QuYXNzaWduIGNhbm5vdCBiZSBjYWxsZWQgd2l0aCBu
dWxsIG9yIHVuZGVmaW5lZCcpOworICAgIH0KKworICAgIHJldHVybiBPYmplY3QodmFsKTsKK30K
KworZnVuY3Rpb24gc2hvdWxkVXNlTmF0aXZlKCkgeworICAgIHRyeSB7CisgICAgICAgIGlmICgh
T2JqZWN0LmFzc2lnbikgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisK
KyAgICAgICAgLy8gRGV0ZWN0IGJ1Z2d5IHByb3BlcnR5IGVudW1lcmF0aW9uIG9yZGVyIGluIG9s
ZGVyIFY4IHZlcnNpb25zLgorCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcv
cC92OC9pc3N1ZXMvZGV0YWlsP2lkPTQxMTgKKyAgICAgICAgdmFyIHRlc3QxID0gbmV3IFN0cmlu
ZygnYWJjJyk7ICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lCisgICAgICAgIHRlc3QxWzVdID0gJ2Rl
JzsKKyAgICAgICAgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRlc3QxKVswXSA9PT0g
JzUnKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICAv
LyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0zMDU2Cisg
ICAgICAgIHZhciB0ZXN0MiA9IHt9OworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwOyBp
KyspIHsKKyAgICAgICAgICAgIHRlc3QyWydfJyArIFN0cmluZy5mcm9tQ2hhckNvZGUoaSldID0g
aTsKKyAgICAgICAgfQorICAgICAgICB2YXIgb3JkZXIyID0gT2JqZWN0LmdldE93blByb3BlcnR5
TmFtZXModGVzdDIpLm1hcChmdW5jdGlvbiAobikgeworICAgICAgICAgICAgcmV0dXJuIHRlc3Qy
W25dOworICAgICAgICB9KTsKKyAgICAgICAgaWYgKG9yZGVyMi5qb2luKCcnKSAhPT0gJzAxMjM0
NTY3ODknKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAg
ICAvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0zMDU2
CisgICAgICAgIHZhciB0ZXN0MyA9IHt9OworICAgICAgICAnYWJjZGVmZ2hpamtsbW5vcHFyc3Qn
LnNwbGl0KCcnKS5mb3JFYWNoKGZ1bmN0aW9uIChsZXR0ZXIpIHsKKyAgICAgICAgICAgIHRlc3Qz
W2xldHRlcl0gPSBsZXR0ZXI7CisgICAgICAgIH0pOworICAgICAgICBpZiAoT2JqZWN0LmtleXMo
T2JqZWN0LmFzc2lnbih7fSwgdGVzdDMpKS5qb2luKCcnKSAhPT0KKyAgICAgICAgICAgICAgICAn
YWJjZGVmZ2hpamtsbW5vcHFyc3QnKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIH0KKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAg
IC8vIFdlIGRvbid0IGV4cGVjdCBhbnkgb2YgdGhlIGFib3ZlIHRvIHRocm93LCBidXQgYmV0dGVy
IHRvIGJlIHNhZmUuCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK21vZHVsZS5l
eHBvcnRzID0gc2hvdWxkVXNlTmF0aXZlKCkgPyBPYmplY3QuYXNzaWduIDogZnVuY3Rpb24gKHRh
cmdldCwgc291cmNlKSB7CisgICAgdmFyIGZyb207CisgICAgdmFyIHRvID0gdG9PYmplY3QodGFy
Z2V0KTsKKyAgICB2YXIgc3ltYm9sczsKKworICAgIGZvciAodmFyIHMgPSAxOyBzIDwgYXJndW1l
bnRzLmxlbmd0aDsgcysrKSB7CisgICAgICAgIGZyb20gPSBPYmplY3QoYXJndW1lbnRzW3NdKTsK
KworICAgICAgICBmb3IgKHZhciBrZXkgaW4gZnJvbSkgeworICAgICAgICAgICAgaWYgKGhhc093
blByb3BlcnR5LmNhbGwoZnJvbSwga2V5KSkgeworICAgICAgICAgICAgICAgIHRvW2tleV0gPSBm
cm9tW2tleV07CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoT2JqZWN0
LmdldE93blByb3BlcnR5U3ltYm9scykgeworICAgICAgICAgICAgc3ltYm9scyA9IE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZnJvbSk7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IHN5bWJvbHMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICBpZiAocHJvcElzRW51
bWVyYWJsZS5jYWxsKGZyb20sIHN5bWJvbHNbaV0pKSB7CisgICAgICAgICAgICAgICAgICAgIHRv
W3N5bWJvbHNbaV1dID0gZnJvbVtzeW1ib2xzW2ldXTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gdG87Cit9OworCit9LHt9
XX0se30sWzQxXSkoNDEpCit9KTsKK30pOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qv
bm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9kaXN0L3JlYWN0LWRvbS1zZXJ2ZXIubWluLmpzIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9kaXN0L3JlYWN0LWRvbS1zZXJ2
ZXIubWluLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFmYTA4YWE3ZDUyM2VmZDkyMTI5MDkzY2YzOWM1YTk0MmE0
ZWMwNjIKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMv
cmVhY3QtZG9tL2Rpc3QvcmVhY3QtZG9tLXNlcnZlci5taW4uanMKQEAgLTAsMCArMSwxNSBAQAor
LyoqCisgKiBSZWFjdERPTVNlcnZlciB2MTUuNC4wCisgKgorICogQ29weXJpZ2h0IDIwMTMtcHJl
c2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhp
cyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91
bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMg
c291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2Fu
IGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoK
KyAqLworIWZ1bmN0aW9uKGUpe2lmKCJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmInVuZGVmaW5l
ZCIhPXR5cGVvZiBtb2R1bGUpZShyZXF1aXJlKCJyZWFjdCIpKTtlbHNlIGlmKCJmdW5jdGlvbiI9
PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQpcmVxdWlyZShbInJlYWN0Il0sZSk7ZWxzZXt2YXIg
dDt0PSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzoidW5kZWZpbmVkIiE9dHlwZW9m
IGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6dGhpcyxlKHQuUmVh
Y3QpfX0oZnVuY3Rpb24oZSl7IWZ1bmN0aW9uKGUpe2lmKCJvYmplY3QiPT10eXBlb2YgZXhwb3J0
cyYmInVuZGVmaW5lZCIhPXR5cGVvZiBtb2R1bGUpbW9kdWxlLmV4cG9ydHM9ZSgpO2Vsc2UgaWYo
ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZClkZWZpbmUoW10sZSk7ZWxzZXt2
YXIgdDt0PSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzoidW5kZWZpbmVkIiE9dHlw
ZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6dGhpcyx0LlJl
YWN0RE9NU2VydmVyPWUoKX19KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIGUodCxuLHIpe2Z1
bmN0aW9uIG8oYSxzKXtpZighblthXSl7aWYoIXRbYV0pe3ZhciB1PSJmdW5jdGlvbiI9PXR5cGVv
ZiByZXF1aXJlJiZyZXF1aXJlO2lmKCFzJiZ1KXJldHVybiB1KGEsITApO2lmKGkpcmV0dXJuIGko
YSwhMCk7dmFyIGw9bmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIrYSsiJyIpO3Rocm93
IGwuY29kZT0iTU9EVUxFX05PVF9GT1VORCIsbH12YXIgYz1uW2FdPXtleHBvcnRzOnt9fTt0W2Fd
WzBdLmNhbGwoYy5leHBvcnRzLGZ1bmN0aW9uKGUpe3ZhciBuPXRbYV1bMV1bZV07cmV0dXJuIG8o
bj9uOmUpfSxjLGMuZXhwb3J0cyxlLHQsbixyKX1yZXR1cm4gblthXS5leHBvcnRzfWZvcih2YXIg
aT0iZnVuY3Rpb24iPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZSxhPTA7YTxyLmxlbmd0aDthKysp
byhyW2FdKTtyZXR1cm4gb30oezE6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9
e1Byb3BlcnRpZXM6eyJhcmlhLWN1cnJlbnQiOjAsImFyaWEtZGV0YWlscyI6MCwiYXJpYS1kaXNh
YmxlZCI6MCwiYXJpYS1oaWRkZW4iOjAsImFyaWEtaW52YWxpZCI6MCwiYXJpYS1rZXlzaG9ydGN1
dHMiOjAsImFyaWEtbGFiZWwiOjAsImFyaWEtcm9sZWRlc2NyaXB0aW9uIjowLCJhcmlhLWF1dG9j
b21wbGV0ZSI6MCwiYXJpYS1jaGVja2VkIjowLCJhcmlhLWV4cGFuZGVkIjowLCJhcmlhLWhhc3Bv
cHVwIjowLCJhcmlhLWxldmVsIjowLCJhcmlhLW1vZGFsIjowLCJhcmlhLW11bHRpbGluZSI6MCwi
YXJpYS1tdWx0aXNlbGVjdGFibGUiOjAsImFyaWEtb3JpZW50YXRpb24iOjAsImFyaWEtcGxhY2Vo
b2xkZXIiOjAsImFyaWEtcHJlc3NlZCI6MCwiYXJpYS1yZWFkb25seSI6MCwiYXJpYS1yZXF1aXJl
ZCI6MCwiYXJpYS1zZWxlY3RlZCI6MCwiYXJpYS1zb3J0IjowLCJhcmlhLXZhbHVlbWF4IjowLCJh
cmlhLXZhbHVlbWluIjowLCJhcmlhLXZhbHVlbm93IjowLCJhcmlhLXZhbHVldGV4dCI6MCwiYXJp
YS1hdG9taWMiOjAsImFyaWEtYnVzeSI6MCwiYXJpYS1saXZlIjowLCJhcmlhLXJlbGV2YW50Ijow
LCJhcmlhLWRyb3BlZmZlY3QiOjAsImFyaWEtZ3JhYmJlZCI6MCwiYXJpYS1hY3RpdmVkZXNjZW5k
YW50IjowLCJhcmlhLWNvbGNvdW50IjowLCJhcmlhLWNvbGluZGV4IjowLCJhcmlhLWNvbHNwYW4i
OjAsImFyaWEtY29udHJvbHMiOjAsImFyaWEtZGVzY3JpYmVkYnkiOjAsImFyaWEtZXJyb3JtZXNz
YWdlIjowLCJhcmlhLWZsb3d0byI6MCwiYXJpYS1sYWJlbGxlZGJ5IjowLCJhcmlhLW93bnMiOjAs
ImFyaWEtcG9zaW5zZXQiOjAsImFyaWEtcm93Y291bnQiOjAsImFyaWEtcm93aW5kZXgiOjAsImFy
aWEtcm93c3BhbiI6MCwiYXJpYS1zZXRzaXplIjowfSxET01BdHRyaWJ1dGVOYW1lczp7fSxET01Q
cm9wZXJ0eU5hbWVzOnt9fTt0LmV4cG9ydHM9cn0se31dLDI6W2Z1bmN0aW9uKGUsdCxuKXsidXNl
IHN0cmljdCI7dmFyIHI9ZSgzMiksbz1lKDEyOCksaT17Zm9jdXNET01Db21wb25lbnQ6ZnVuY3Rp
b24oKXtvKHIuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0aGlzKSl9fTt0LmV4cG9ydHM9aX0sezEyODox
MjgsMzI6MzJ9XSwzOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXt2
YXIgZT13aW5kb3cub3BlcmE7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBlJiYiZnVuY3Rpb24iPT10
eXBlb2YgZS52ZXJzaW9uJiZwYXJzZUludChlLnZlcnNpb24oKSwxMCk8PTEyfWZ1bmN0aW9uIG8o
ZSl7cmV0dXJuKGUuY3RybEtleXx8ZS5hbHRLZXl8fGUubWV0YUtleSkmJiEoZS5jdHJsS2V5JiZl
LmFsdEtleSl9ZnVuY3Rpb24gaShlKXtzd2l0Y2goZSl7Y2FzZSJ0b3BDb21wb3NpdGlvblN0YXJ0
IjpyZXR1cm4gVC5jb21wb3NpdGlvblN0YXJ0O2Nhc2UidG9wQ29tcG9zaXRpb25FbmQiOnJldHVy
biBULmNvbXBvc2l0aW9uRW5kO2Nhc2UidG9wQ29tcG9zaXRpb25VcGRhdGUiOnJldHVybiBULmNv
bXBvc2l0aW9uVXBkYXRlfX1mdW5jdGlvbiBhKGUsdCl7cmV0dXJuInRvcEtleURvd24iPT09ZSYm
dC5rZXlDb2RlPT09X31mdW5jdGlvbiBzKGUsdCl7c3dpdGNoKGUpe2Nhc2UidG9wS2V5VXAiOnJl
dHVybiB5LmluZGV4T2YodC5rZXlDb2RlKSE9PS0xO2Nhc2UidG9wS2V5RG93biI6cmV0dXJuIHQu
a2V5Q29kZSE9PV87Y2FzZSJ0b3BLZXlQcmVzcyI6Y2FzZSJ0b3BNb3VzZURvd24iOmNhc2UidG9w
Qmx1ciI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19ZnVuY3Rpb24gdShlKXt2YXIgdD1lLmRl
dGFpbDtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIHQmJiJkYXRhImluIHQ/dC5kYXRhOm51bGx9ZnVu
Y3Rpb24gbChlLHQsbixyKXt2YXIgbyxsO2lmKEM/bz1pKGUpOlM/cyhlLG4pJiYobz1ULmNvbXBv
c2l0aW9uRW5kKTphKGUsbikmJihvPVQuY29tcG9zaXRpb25TdGFydCksIW8pcmV0dXJuIG51bGw7
eCYmKFN8fG8hPT1ULmNvbXBvc2l0aW9uU3RhcnQ/bz09PVQuY29tcG9zaXRpb25FbmQmJlMmJihs
PVMuZ2V0RGF0YSgpKTpTPW0uZ2V0UG9vbGVkKHIpKTt2YXIgYz12LmdldFBvb2xlZChvLHQsbixy
KTtpZihsKWMuZGF0YT1sO2Vsc2V7dmFyIHA9dShuKTtudWxsIT09cCYmKGMuZGF0YT1wKX1yZXR1
cm4gZi5hY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKGMpLGN9ZnVuY3Rpb24gYyhlLHQpe3N3
aXRjaChlKXtjYXNlInRvcENvbXBvc2l0aW9uRW5kIjpyZXR1cm4gdSh0KTtjYXNlInRvcEtleVBy
ZXNzIjp2YXIgbj10LndoaWNoO3JldHVybiBuIT09dz9udWxsOihQPSEwLGspO2Nhc2UidG9wVGV4
dElucHV0Ijp2YXIgcj10LmRhdGE7cmV0dXJuIHI9PT1rJiZQP251bGw6cjtkZWZhdWx0OnJldHVy
biBudWxsfX1mdW5jdGlvbiBwKGUsdCl7aWYoUyl7aWYoInRvcENvbXBvc2l0aW9uRW5kIj09PWV8
fCFDJiZzKGUsdCkpe3ZhciBuPVMuZ2V0RGF0YSgpO3JldHVybiBtLnJlbGVhc2UoUyksUz1udWxs
LG59cmV0dXJuIG51bGx9c3dpdGNoKGUpe2Nhc2UidG9wUGFzdGUiOnJldHVybiBudWxsO2Nhc2Ui
dG9wS2V5UHJlc3MiOnJldHVybiB0LndoaWNoJiYhbyh0KT9TdHJpbmcuZnJvbUNoYXJDb2RlKHQu
d2hpY2gpOm51bGw7Y2FzZSJ0b3BDb21wb3NpdGlvbkVuZCI6cmV0dXJuIHg/bnVsbDp0LmRhdGE7
ZGVmYXVsdDpyZXR1cm4gbnVsbH19ZnVuY3Rpb24gZChlLHQsbixyKXt2YXIgbztpZihvPUU/Yyhl
LG4pOnAoZSxuKSwhbylyZXR1cm4gbnVsbDt2YXIgaT1nLmdldFBvb2xlZChULmJlZm9yZUlucHV0
LHQsbixyKTtyZXR1cm4gaS5kYXRhPW8sZi5hY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKGkp
LGl9dmFyIGY9ZSgxOSksaD1lKDEyMCksbT1lKDIwKSx2PWUoNzgpLGc9ZSg4MikseT1bOSwxMywy
NywzMl0sXz0yMjksQz1oLmNhblVzZURPTSYmIkNvbXBvc2l0aW9uRXZlbnQiaW4gd2luZG93LGI9
bnVsbDtoLmNhblVzZURPTSYmImRvY3VtZW50TW9kZSJpbiBkb2N1bWVudCYmKGI9ZG9jdW1lbnQu
ZG9jdW1lbnRNb2RlKTt2YXIgRT1oLmNhblVzZURPTSYmIlRleHRFdmVudCJpbiB3aW5kb3cmJiFi
JiYhcigpLHg9aC5jYW5Vc2VET00mJighQ3x8YiYmYj44JiZiPD0xMSksdz0zMixrPVN0cmluZy5m
cm9tQ2hhckNvZGUodyksVD17YmVmb3JlSW5wdXQ6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOnti
dWJibGVkOiJvbkJlZm9yZUlucHV0IixjYXB0dXJlZDoib25CZWZvcmVJbnB1dENhcHR1cmUifSxk
ZXBlbmRlbmNpZXM6WyJ0b3BDb21wb3NpdGlvbkVuZCIsInRvcEtleVByZXNzIiwidG9wVGV4dElu
cHV0IiwidG9wUGFzdGUiXX0sY29tcG9zaXRpb25FbmQ6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVz
OntidWJibGVkOiJvbkNvbXBvc2l0aW9uRW5kIixjYXB0dXJlZDoib25Db21wb3NpdGlvbkVuZENh
cHR1cmUifSxkZXBlbmRlbmNpZXM6WyJ0b3BCbHVyIiwidG9wQ29tcG9zaXRpb25FbmQiLCJ0b3BL
ZXlEb3duIiwidG9wS2V5UHJlc3MiLCJ0b3BLZXlVcCIsInRvcE1vdXNlRG93biJdfSxjb21wb3Np
dGlvblN0YXJ0OntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDoib25Db21wb3NpdGlv
blN0YXJ0IixjYXB0dXJlZDoib25Db21wb3NpdGlvblN0YXJ0Q2FwdHVyZSJ9LGRlcGVuZGVuY2ll
czpbInRvcEJsdXIiLCJ0b3BDb21wb3NpdGlvblN0YXJ0IiwidG9wS2V5RG93biIsInRvcEtleVBy
ZXNzIiwidG9wS2V5VXAiLCJ0b3BNb3VzZURvd24iXX0sY29tcG9zaXRpb25VcGRhdGU6e3BoYXNl
ZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOiJvbkNvbXBvc2l0aW9uVXBkYXRlIixjYXB0dXJl
ZDoib25Db21wb3NpdGlvblVwZGF0ZUNhcHR1cmUifSxkZXBlbmRlbmNpZXM6WyJ0b3BCbHVyIiwi
dG9wQ29tcG9zaXRpb25VcGRhdGUiLCJ0b3BLZXlEb3duIiwidG9wS2V5UHJlc3MiLCJ0b3BLZXlV
cCIsInRvcE1vdXNlRG93biJdfX0sUD0hMSxTPW51bGwsTj17ZXZlbnRUeXBlczpULGV4dHJhY3RF
dmVudHM6ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuW2woZSx0LG4sciksZChlLHQsbixyKV19fTt0
LmV4cG9ydHM9Tn0sezEyMDoxMjAsMTk6MTksMjA6MjAsNzg6NzgsODI6ODJ9XSw0OltmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXtyZXR1cm4gZSt0LmNoYXJBdCgw
KS50b1VwcGVyQ2FzZSgpK3Quc3Vic3RyaW5nKDEpfXZhciBvPXthbmltYXRpb25JdGVyYXRpb25D
b3VudDohMCxib3JkZXJJbWFnZU91dHNldDohMCxib3JkZXJJbWFnZVNsaWNlOiEwLGJvcmRlcklt
YWdlV2lkdGg6ITAsYm94RmxleDohMCxib3hGbGV4R3JvdXA6ITAsYm94T3JkaW5hbEdyb3VwOiEw
LGNvbHVtbkNvdW50OiEwLGZsZXg6ITAsZmxleEdyb3c6ITAsZmxleFBvc2l0aXZlOiEwLGZsZXhT
aHJpbms6ITAsZmxleE5lZ2F0aXZlOiEwLGZsZXhPcmRlcjohMCxncmlkUm93OiEwLGdyaWRDb2x1
bW46ITAsZm9udFdlaWdodDohMCxsaW5lQ2xhbXA6ITAsbGluZUhlaWdodDohMCxvcGFjaXR5OiEw
LG9yZGVyOiEwLG9ycGhhbnM6ITAsdGFiU2l6ZTohMCx3aWRvd3M6ITAsekluZGV4OiEwLHpvb206
ITAsZmlsbE9wYWNpdHk6ITAsZmxvb2RPcGFjaXR5OiEwLHN0b3BPcGFjaXR5OiEwLHN0cm9rZURh
c2hhcnJheTohMCxzdHJva2VEYXNob2Zmc2V0OiEwLHN0cm9rZU1pdGVybGltaXQ6ITAsc3Ryb2tl
T3BhY2l0eTohMCxzdHJva2VXaWR0aDohMH0saT1bIldlYmtpdCIsIm1zIiwiTW96IiwiTyJdO09i
amVjdC5rZXlzKG8pLmZvckVhY2goZnVuY3Rpb24oZSl7aS5mb3JFYWNoKGZ1bmN0aW9uKHQpe29b
cih0LGUpXT1vW2VdfSl9KTt2YXIgYT17YmFja2dyb3VuZDp7YmFja2dyb3VuZEF0dGFjaG1lbnQ6
ITAsYmFja2dyb3VuZENvbG9yOiEwLGJhY2tncm91bmRJbWFnZTohMCxiYWNrZ3JvdW5kUG9zaXRp
b25YOiEwLGJhY2tncm91bmRQb3NpdGlvblk6ITAsYmFja2dyb3VuZFJlcGVhdDohMH0sYmFja2dy
b3VuZFBvc2l0aW9uOntiYWNrZ3JvdW5kUG9zaXRpb25YOiEwLGJhY2tncm91bmRQb3NpdGlvblk6
ITB9LGJvcmRlcjp7Ym9yZGVyV2lkdGg6ITAsYm9yZGVyU3R5bGU6ITAsYm9yZGVyQ29sb3I6ITB9
LGJvcmRlckJvdHRvbTp7Ym9yZGVyQm90dG9tV2lkdGg6ITAsYm9yZGVyQm90dG9tU3R5bGU6ITAs
Ym9yZGVyQm90dG9tQ29sb3I6ITB9LGJvcmRlckxlZnQ6e2JvcmRlckxlZnRXaWR0aDohMCxib3Jk
ZXJMZWZ0U3R5bGU6ITAsYm9yZGVyTGVmdENvbG9yOiEwfSxib3JkZXJSaWdodDp7Ym9yZGVyUmln
aHRXaWR0aDohMCxib3JkZXJSaWdodFN0eWxlOiEwLGJvcmRlclJpZ2h0Q29sb3I6ITB9LGJvcmRl
clRvcDp7Ym9yZGVyVG9wV2lkdGg6ITAsYm9yZGVyVG9wU3R5bGU6ITAsYm9yZGVyVG9wQ29sb3I6
ITB9LGZvbnQ6e2ZvbnRTdHlsZTohMCxmb250VmFyaWFudDohMCxmb250V2VpZ2h0OiEwLGZvbnRT
aXplOiEwLGxpbmVIZWlnaHQ6ITAsZm9udEZhbWlseTohMH0sb3V0bGluZTp7b3V0bGluZVdpZHRo
OiEwLG91dGxpbmVTdHlsZTohMCxvdXRsaW5lQ29sb3I6ITB9fSxzPXtpc1VuaXRsZXNzTnVtYmVy
Om8sc2hvcnRoYW5kUHJvcGVydHlFeHBhbnNpb25zOmF9O3QuZXhwb3J0cz1zfSx7fV0sNTpbZnVu
Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDQpLG89ZSgxMjApLGk9KGUoNTcpLGUo
MTIyKSxlKDk0KSksYT1lKDEzMykscz1lKDEzNyksdT0oZSgxMzkpLHMoZnVuY3Rpb24oZSl7cmV0
dXJuIGEoZSl9KSksbD0hMSxjPSJjc3NGbG9hdCI7aWYoby5jYW5Vc2VET00pe3ZhciBwPWRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLnN0eWxlO3RyeXtwLmZvbnQ9IiJ9Y2F0Y2goZSl7bD0h
MH12b2lkIDA9PT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuY3NzRmxvYXQmJihjPSJz
dHlsZUZsb2F0Iil9dmFyIGQ9e2NyZWF0ZU1hcmt1cEZvclN0eWxlczpmdW5jdGlvbihlLHQpe3Zh
ciBuPSIiO2Zvcih2YXIgciBpbiBlKWlmKGUuaGFzT3duUHJvcGVydHkocikpe3ZhciBvPWVbcl07
bnVsbCE9byYmKG4rPXUocikrIjoiLG4rPWkocixvLHQpKyI7Iil9cmV0dXJuIG58fG51bGx9LHNl
dFZhbHVlRm9yU3R5bGVzOmZ1bmN0aW9uKGUsdCxuKXt2YXIgbz1lLnN0eWxlO2Zvcih2YXIgYSBp
biB0KWlmKHQuaGFzT3duUHJvcGVydHkoYSkpe3ZhciBzPWkoYSx0W2FdLG4pO2lmKCJmbG9hdCIh
PT1hJiYiY3NzRmxvYXQiIT09YXx8KGE9YykscylvW2FdPXM7ZWxzZXt2YXIgdT1sJiZyLnNob3J0
aGFuZFByb3BlcnR5RXhwYW5zaW9uc1thXTtpZih1KWZvcih2YXIgcCBpbiB1KW9bcF09IiI7ZWxz
ZSBvW2FdPSIifX19fTt0LmV4cG9ydHM9ZH0sezEyMDoxMjAsMTIyOjEyMiwxMzM6MTMzLDEzNzox
MzcsMTM5OjEzOSw0OjQsNTc6NTcsOTQ6OTR9XSw2OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIHIoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVy
cm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX12YXIgbz1lKDExMSksaT1l
KDI0KSxhPShlKDEzNCksZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe3IodGhpcyxlKSx0aGlzLl9j
YWxsYmFja3M9bnVsbCx0aGlzLl9jb250ZXh0cz1udWxsLHRoaXMuX2FyZz10fXJldHVybiBlLnBy
b3RvdHlwZS5lbnF1ZXVlPWZ1bmN0aW9uKGUsdCl7dGhpcy5fY2FsbGJhY2tzPXRoaXMuX2NhbGxi
YWNrc3x8W10sdGhpcy5fY2FsbGJhY2tzLnB1c2goZSksdGhpcy5fY29udGV4dHM9dGhpcy5fY29u
dGV4dHN8fFtdLHRoaXMuX2NvbnRleHRzLnB1c2godCl9LGUucHJvdG90eXBlLm5vdGlmeUFsbD1m
dW5jdGlvbigpe3ZhciBlPXRoaXMuX2NhbGxiYWNrcyx0PXRoaXMuX2NvbnRleHRzLG49dGhpcy5f
YXJnO2lmKGUmJnQpe2UubGVuZ3RoIT09dC5sZW5ndGg/bygiMjQiKTp2b2lkIDAsdGhpcy5fY2Fs
bGJhY2tzPW51bGwsdGhpcy5fY29udGV4dHM9bnVsbDtmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3Ir
KyllW3JdLmNhbGwodFtyXSxuKTtlLmxlbmd0aD0wLHQubGVuZ3RoPTB9fSxlLnByb3RvdHlwZS5j
aGVja3BvaW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NhbGxiYWNrcz90aGlzLl9jYWxsYmFj
a3MubGVuZ3RoOjB9LGUucHJvdG90eXBlLnJvbGxiYWNrPWZ1bmN0aW9uKGUpe3RoaXMuX2NhbGxi
YWNrcyYmdGhpcy5fY29udGV4dHMmJih0aGlzLl9jYWxsYmFja3MubGVuZ3RoPWUsdGhpcy5fY29u
dGV4dHMubGVuZ3RoPWUpfSxlLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3RoaXMuX2NhbGxi
YWNrcz1udWxsLHRoaXMuX2NvbnRleHRzPW51bGx9LGUucHJvdG90eXBlLmRlc3RydWN0b3I9ZnVu
Y3Rpb24oKXt0aGlzLnJlc2V0KCl9LGV9KCkpO3QuZXhwb3J0cz1pLmFkZFBvb2xpbmdUbyhhKX0s
ezExMToxMTEsMTM0OjEzNCwyNDoyNH1dLDc6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gcihlKXt2YXIgdD1lLm5vZGVOYW1lJiZlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7
cmV0dXJuInNlbGVjdCI9PT10fHwiaW5wdXQiPT09dCYmImZpbGUiPT09ZS50eXBlfWZ1bmN0aW9u
IG8oZSl7dmFyIHQ9eC5nZXRQb29sZWQoUC5jaGFuZ2UsTixlLHcoZSkpO18uYWNjdW11bGF0ZVR3
b1BoYXNlRGlzcGF0Y2hlcyh0KSxFLmJhdGNoZWRVcGRhdGVzKGksdCl9ZnVuY3Rpb24gaShlKXt5
LmVucXVldWVFdmVudHMoZSkseS5wcm9jZXNzRXZlbnRRdWV1ZSghMSl9ZnVuY3Rpb24gYShlLHQp
e1M9ZSxOPXQsUy5hdHRhY2hFdmVudCgib25jaGFuZ2UiLG8pfWZ1bmN0aW9uIHMoKXtTJiYoUy5k
ZXRhY2hFdmVudCgib25jaGFuZ2UiLG8pLFM9bnVsbCxOPW51bGwpfWZ1bmN0aW9uIHUoZSx0KXtp
ZigidG9wQ2hhbmdlIj09PWUpcmV0dXJuIHR9ZnVuY3Rpb24gbChlLHQsbil7InRvcEZvY3VzIj09
PWU/KHMoKSxhKHQsbikpOiJ0b3BCbHVyIj09PWUmJnMoKX1mdW5jdGlvbiBjKGUsdCl7Uz1lLE49
dCxNPWUudmFsdWUsTz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUuY29uc3RydWN0
b3IucHJvdG90eXBlLCJ2YWx1ZSIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShTLCJ2YWx1ZSIsQSks
Uy5hdHRhY2hFdmVudD9TLmF0dGFjaEV2ZW50KCJvbnByb3BlcnR5Y2hhbmdlIixkKTpTLmFkZEV2
ZW50TGlzdGVuZXIoInByb3BlcnR5Y2hhbmdlIixkLCExKX1mdW5jdGlvbiBwKCl7UyYmKGRlbGV0
ZSBTLnZhbHVlLFMuZGV0YWNoRXZlbnQ/Uy5kZXRhY2hFdmVudCgib25wcm9wZXJ0eWNoYW5nZSIs
ZCk6Uy5yZW1vdmVFdmVudExpc3RlbmVyKCJwcm9wZXJ0eWNoYW5nZSIsZCwhMSksUz1udWxsLE49
bnVsbCxNPW51bGwsTz1udWxsKX1mdW5jdGlvbiBkKGUpe2lmKCJ2YWx1ZSI9PT1lLnByb3BlcnR5
TmFtZSl7dmFyIHQ9ZS5zcmNFbGVtZW50LnZhbHVlO3QhPT1NJiYoTT10LG8oZSkpfX1mdW5jdGlv
biBmKGUsdCl7aWYoInRvcElucHV0Ij09PWUpcmV0dXJuIHR9ZnVuY3Rpb24gaChlLHQsbil7InRv
cEZvY3VzIj09PWU/KHAoKSxjKHQsbikpOiJ0b3BCbHVyIj09PWUmJnAoKX1mdW5jdGlvbiBtKGUs
dCl7aWYoKCJ0b3BTZWxlY3Rpb25DaGFuZ2UiPT09ZXx8InRvcEtleVVwIj09PWV8fCJ0b3BLZXlE
b3duIj09PWUpJiZTJiZTLnZhbHVlIT09TSlyZXR1cm4gTT1TLnZhbHVlLE59ZnVuY3Rpb24gdihl
KXtyZXR1cm4gZS5ub2RlTmFtZSYmImlucHV0Ij09PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSYm
KCJjaGVja2JveCI9PT1lLnR5cGV8fCJyYWRpbyI9PT1lLnR5cGUpfWZ1bmN0aW9uIGcoZSx0KXtp
ZigidG9wQ2xpY2siPT09ZSlyZXR1cm4gdH12YXIgeT1lKDE2KSxfPWUoMTkpLEM9ZSgxMjApLGI9
ZSgzMiksRT1lKDcxKSx4PWUoODApLHc9ZSgxMDEpLGs9ZSgxMDgpLFQ9ZSgxMDkpLFA9e2NoYW5n
ZTp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6Im9uQ2hhbmdlIixjYXB0dXJlZDoi
b25DaGFuZ2VDYXB0dXJlIn0sZGVwZW5kZW5jaWVzOlsidG9wQmx1ciIsInRvcENoYW5nZSIsInRv
cENsaWNrIiwidG9wRm9jdXMiLCJ0b3BJbnB1dCIsInRvcEtleURvd24iLCJ0b3BLZXlVcCIsInRv
cFNlbGVjdGlvbkNoYW5nZSJdfX0sUz1udWxsLE49bnVsbCxNPW51bGwsTz1udWxsLEk9ITE7Qy5j
YW5Vc2VET00mJihJPWsoImNoYW5nZSIpJiYoIWRvY3VtZW50LmRvY3VtZW50TW9kZXx8ZG9jdW1l
bnQuZG9jdW1lbnRNb2RlPjgpKTt2YXIgUj0hMTtDLmNhblVzZURPTSYmKFI9aygiaW5wdXQiKSYm
KCFkb2N1bWVudC5kb2N1bWVudE1vZGV8fGRvY3VtZW50LmRvY3VtZW50TW9kZT4xMSkpO3ZhciBB
PXtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gTy5nZXQuY2FsbCh0aGlzKX0sc2V0OmZ1bmN0aW9uKGUp
e009IiIrZSxPLnNldC5jYWxsKHRoaXMsZSl9fSxEPXtldmVudFR5cGVzOlAsZXh0cmFjdEV2ZW50
czpmdW5jdGlvbihlLHQsbixvKXt2YXIgaSxhLHM9dD9iLmdldE5vZGVGcm9tSW5zdGFuY2UodCk6
d2luZG93O2lmKHIocyk/ST9pPXU6YT1sOlQocyk/Uj9pPWY6KGk9bSxhPWgpOnYocykmJihpPWcp
LGkpe3ZhciBjPWkoZSx0KTtpZihjKXt2YXIgcD14LmdldFBvb2xlZChQLmNoYW5nZSxjLG4sbyk7
cmV0dXJuIHAudHlwZT0iY2hhbmdlIixfLmFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXMocCks
cH19YSYmYShlLHMsdCl9fTt0LmV4cG9ydHM9RH0sezEwMToxMDEsMTA4OjEwOCwxMDk6MTA5LDEy
MDoxMjAsMTY6MTYsMTk6MTksMzI6MzIsNzE6NzEsODA6ODB9XSw4OltmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KSYmKHQ9
dFsxXSksdD90Lm5leHRTaWJsaW5nOmUuZmlyc3RDaGlsZH1mdW5jdGlvbiBvKGUsdCxuKXtjLmlu
c2VydFRyZWVCZWZvcmUoZSx0LG4pfWZ1bmN0aW9uIGkoZSx0LG4pe0FycmF5LmlzQXJyYXkodCk/
cyhlLHRbMF0sdFsxXSxuKTptKGUsdCxuKX1mdW5jdGlvbiBhKGUsdCl7aWYoQXJyYXkuaXNBcnJh
eSh0KSl7dmFyIG49dFsxXTt0PXRbMF0sdShlLHQsbiksZS5yZW1vdmVDaGlsZChuKX1lLnJlbW92
ZUNoaWxkKHQpfWZ1bmN0aW9uIHMoZSx0LG4scil7Zm9yKHZhciBvPXQ7Oyl7dmFyIGk9by5uZXh0
U2libGluZztpZihtKGUsbyxyKSxvPT09bilicmVhaztvPWl9fWZ1bmN0aW9uIHUoZSx0LG4pe2Zv
cig7Oyl7dmFyIHI9dC5uZXh0U2libGluZztpZihyPT09bilicmVhaztlLnJlbW92ZUNoaWxkKHIp
fX1mdW5jdGlvbiBsKGUsdCxuKXt2YXIgcj1lLnBhcmVudE5vZGUsbz1lLm5leHRTaWJsaW5nO289
PT10P24mJm0ocixkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShuKSxvKTpuPyhoKG8sbiksdShyLG8s
dCkpOnUocixlLHQpfXZhciBjPWUoOSkscD1lKDEzKSxkPShlKDMyKSxlKDU3KSxlKDkzKSksZj1l
KDExMiksaD1lKDExMyksbT1kKGZ1bmN0aW9uKGUsdCxuKXtlLmluc2VydEJlZm9yZSh0LG4pfSks
dj1wLmRhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwLGc9e2Rhbmdlcm91c2x5UmVwbGFj
ZU5vZGVXaXRoTWFya3VwOnYscmVwbGFjZURlbGltaXRlZFRleHQ6bCxwcm9jZXNzVXBkYXRlczpm
dW5jdGlvbihlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcz10W25dO3N3aXRj
aChzLnR5cGUpe2Nhc2UiSU5TRVJUX01BUktVUCI6byhlLHMuY29udGVudCxyKGUscy5hZnRlck5v
ZGUpKTticmVhaztjYXNlIk1PVkVfRVhJU1RJTkciOmkoZSxzLmZyb21Ob2RlLHIoZSxzLmFmdGVy
Tm9kZSkpO2JyZWFrO2Nhc2UiU0VUX01BUktVUCI6ZihlLHMuY29udGVudCk7YnJlYWs7Y2FzZSJU
RVhUX0NPTlRFTlQiOmgoZSxzLmNvbnRlbnQpO2JyZWFrO2Nhc2UiUkVNT1ZFX05PREUiOmEoZSxz
LmZyb21Ob2RlKX19fX07dC5leHBvcnRzPWd9LHsxMTI6MTEyLDExMzoxMTMsMTM6MTMsMzI6MzIs
NTc6NTcsOTo5LDkzOjkzfV0sOTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biByKGUpe2lmKHYpe3ZhciB0PWUubm9kZSxuPWUuY2hpbGRyZW47aWYobi5sZW5ndGgpZm9yKHZh
ciByPTA7cjxuLmxlbmd0aDtyKyspZyh0LG5bcl0sbnVsbCk7ZWxzZSBudWxsIT1lLmh0bWw/cCh0
LGUuaHRtbCk6bnVsbCE9ZS50ZXh0JiZmKHQsZS50ZXh0KX19ZnVuY3Rpb24gbyhlLHQpe2UucGFy
ZW50Tm9kZS5yZXBsYWNlQ2hpbGQodC5ub2RlLGUpLHIodCl9ZnVuY3Rpb24gaShlLHQpe3Y/ZS5j
aGlsZHJlbi5wdXNoKHQpOmUubm9kZS5hcHBlbmRDaGlsZCh0Lm5vZGUpfWZ1bmN0aW9uIGEoZSx0
KXt2P2UuaHRtbD10OnAoZS5ub2RlLHQpfWZ1bmN0aW9uIHMoZSx0KXt2P2UudGV4dD10OmYoZS5u
b2RlLHQpfWZ1bmN0aW9uIHUoKXtyZXR1cm4gdGhpcy5ub2RlLm5vZGVOYW1lfWZ1bmN0aW9uIGwo
ZSl7cmV0dXJue25vZGU6ZSxjaGlsZHJlbjpbXSxodG1sOm51bGwsdGV4dDpudWxsLHRvU3RyaW5n
OnV9fXZhciBjPWUoMTApLHA9ZSgxMTIpLGQ9ZSg5MyksZj1lKDExMyksaD0xLG09MTEsdj0idW5k
ZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50JiYibnVtYmVyIj09dHlwZW9mIGRvY3VtZW50LmRvY3Vt
ZW50TW9kZXx8InVuZGVmaW5lZCIhPXR5cGVvZiBuYXZpZ2F0b3ImJiJzdHJpbmciPT10eXBlb2Yg
bmF2aWdhdG9yLnVzZXJBZ2VudCYmL1xiRWRnZVwvXGQvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2Vu
dCksZz1kKGZ1bmN0aW9uKGUsdCxuKXt0Lm5vZGUubm9kZVR5cGU9PT1tfHx0Lm5vZGUubm9kZVR5
cGU9PT1oJiYib2JqZWN0Ij09PXQubm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpJiYobnVsbD09
dC5ub2RlLm5hbWVzcGFjZVVSSXx8dC5ub2RlLm5hbWVzcGFjZVVSST09PWMuaHRtbCk/KHIodCks
ZS5pbnNlcnRCZWZvcmUodC5ub2RlLG4pKTooZS5pbnNlcnRCZWZvcmUodC5ub2RlLG4pLHIodCkp
fSk7bC5pbnNlcnRUcmVlQmVmb3JlPWcsbC5yZXBsYWNlQ2hpbGRXaXRoVHJlZT1vLGwucXVldWVD
aGlsZD1pLGwucXVldWVIVE1MPWEsbC5xdWV1ZVRleHQ9cyx0LmV4cG9ydHM9bH0sezEwOjEwLDEx
MjoxMTIsMTEzOjExMyw5Mzo5M31dLDEwOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3Zh
ciByPXtodG1sOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIixtYXRobWw6Imh0dHA6Ly93
d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwiLHN2ZzoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmcifTt0LmV4cG9ydHM9cn0se31dLDExOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIHIoZSx0KXtyZXR1cm4oZSZ0KT09PXR9dmFyIG89ZSgxMTEpLGk9KGUoMTM0KSx7TVVT
VF9VU0VfUFJPUEVSVFk6MSxIQVNfQk9PTEVBTl9WQUxVRTo0LEhBU19OVU1FUklDX1ZBTFVFOjgs
SEFTX1BPU0lUSVZFX05VTUVSSUNfVkFMVUU6MjQsSEFTX09WRVJMT0FERURfQk9PTEVBTl9WQUxV
RTozMixpbmplY3RET01Qcm9wZXJ0eUNvbmZpZzpmdW5jdGlvbihlKXt2YXIgdD1pLG49ZS5Qcm9w
ZXJ0aWVzfHx7fSxhPWUuRE9NQXR0cmlidXRlTmFtZXNwYWNlc3x8e30sdT1lLkRPTUF0dHJpYnV0
ZU5hbWVzfHx7fSxsPWUuRE9NUHJvcGVydHlOYW1lc3x8e30sYz1lLkRPTU11dGF0aW9uTWV0aG9k
c3x8e307ZS5pc0N1c3RvbUF0dHJpYnV0ZSYmcy5faXNDdXN0b21BdHRyaWJ1dGVGdW5jdGlvbnMu
cHVzaChlLmlzQ3VzdG9tQXR0cmlidXRlKTtmb3IodmFyIHAgaW4gbil7cy5wcm9wZXJ0aWVzLmhh
c093blByb3BlcnR5KHApP28oIjQ4IixwKTp2b2lkIDA7dmFyIGQ9cC50b0xvd2VyQ2FzZSgpLGY9
bltwXSxoPXthdHRyaWJ1dGVOYW1lOmQsYXR0cmlidXRlTmFtZXNwYWNlOm51bGwscHJvcGVydHlO
YW1lOnAsbXV0YXRpb25NZXRob2Q6bnVsbCxtdXN0VXNlUHJvcGVydHk6cihmLHQuTVVTVF9VU0Vf
UFJPUEVSVFkpLGhhc0Jvb2xlYW5WYWx1ZTpyKGYsdC5IQVNfQk9PTEVBTl9WQUxVRSksaGFzTnVt
ZXJpY1ZhbHVlOnIoZix0LkhBU19OVU1FUklDX1ZBTFVFKSxoYXNQb3NpdGl2ZU51bWVyaWNWYWx1
ZTpyKGYsdC5IQVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxVRSksaGFzT3ZlcmxvYWRlZEJvb2xlYW5W
YWx1ZTpyKGYsdC5IQVNfT1ZFUkxPQURFRF9CT09MRUFOX1ZBTFVFKX07aWYoaC5oYXNCb29sZWFu
VmFsdWUraC5oYXNOdW1lcmljVmFsdWUraC5oYXNPdmVybG9hZGVkQm9vbGVhblZhbHVlPD0xP3Zv
aWQgMDpvKCI1MCIscCksdS5oYXNPd25Qcm9wZXJ0eShwKSl7dmFyIG09dVtwXTtoLmF0dHJpYnV0
ZU5hbWU9bX1hLmhhc093blByb3BlcnR5KHApJiYoaC5hdHRyaWJ1dGVOYW1lc3BhY2U9YVtwXSks
bC5oYXNPd25Qcm9wZXJ0eShwKSYmKGgucHJvcGVydHlOYW1lPWxbcF0pLGMuaGFzT3duUHJvcGVy
dHkocCkmJihoLm11dGF0aW9uTWV0aG9kPWNbcF0pLHMucHJvcGVydGllc1twXT1ofX19KSxhPSI6
QS1aX2EtelxcdTAwQzAtXFx1MDBENlxcdTAwRDgtXFx1MDBGNlxcdTAwRjgtXFx1MDJGRlxcdTAz
NzAtXFx1MDM3RFxcdTAzN0YtXFx1MUZGRlxcdTIwMEMtXFx1MjAwRFxcdTIwNzAtXFx1MjE4Rlxc
dTJDMDAtXFx1MkZFRlxcdTMwMDEtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZG
RCIscz17SURfQVRUUklCVVRFX05BTUU6ImRhdGEtcmVhY3RpZCIsUk9PVF9BVFRSSUJVVEVfTkFN
RToiZGF0YS1yZWFjdHJvb3QiLEFUVFJJQlVURV9OQU1FX1NUQVJUX0NIQVI6YSxBVFRSSUJVVEVf
TkFNRV9DSEFSOmErIlxcLS4wLTlcXHUwMEI3XFx1MDMwMC1cXHUwMzZGXFx1MjAzRi1cXHUyMDQw
Iixwcm9wZXJ0aWVzOnt9LGdldFBvc3NpYmxlU3RhbmRhcmROYW1lOm51bGwsX2lzQ3VzdG9tQXR0
cmlidXRlRnVuY3Rpb25zOltdLGlzQ3VzdG9tQXR0cmlidXRlOmZ1bmN0aW9uKGUpe2Zvcih2YXIg
dD0wO3Q8cy5faXNDdXN0b21BdHRyaWJ1dGVGdW5jdGlvbnMubGVuZ3RoO3QrKyl7dmFyIG49cy5f
aXNDdXN0b21BdHRyaWJ1dGVGdW5jdGlvbnNbdF07aWYobihlKSlyZXR1cm4hMH1yZXR1cm4hMX0s
aW5qZWN0aW9uOml9O3QuZXhwb3J0cz1zfSx7MTExOjExMSwxMzQ6MTM0fV0sMTI6W2Z1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4hIWwuaGFzT3duUHJvcGVy
dHkoZSl8fCF1Lmhhc093blByb3BlcnR5KGUpJiYocy50ZXN0KGUpPyhsW2VdPSEwLCEwKToodVtl
XT0hMCwhMSkpfWZ1bmN0aW9uIG8oZSx0KXtyZXR1cm4gbnVsbD09dHx8ZS5oYXNCb29sZWFuVmFs
dWUmJiF0fHxlLmhhc051bWVyaWNWYWx1ZSYmaXNOYU4odCl8fGUuaGFzUG9zaXRpdmVOdW1lcmlj
VmFsdWUmJnQ8MXx8ZS5oYXNPdmVybG9hZGVkQm9vbGVhblZhbHVlJiZ0PT09ITF9dmFyIGk9ZSgx
MSksYT0oZSgzMiksZSg1NyksZSgxMTApKSxzPShlKDEzOSksbmV3IFJlZ0V4cCgiXlsiK2kuQVRU
UklCVVRFX05BTUVfU1RBUlRfQ0hBUisiXVsiK2kuQVRUUklCVVRFX05BTUVfQ0hBUisiXSokIikp
LHU9e30sbD17fSxjPXtjcmVhdGVNYXJrdXBGb3JJRDpmdW5jdGlvbihlKXtyZXR1cm4gaS5JRF9B
VFRSSUJVVEVfTkFNRSsiPSIrYShlKX0sc2V0QXR0cmlidXRlRm9ySUQ6ZnVuY3Rpb24oZSx0KXtl
LnNldEF0dHJpYnV0ZShpLklEX0FUVFJJQlVURV9OQU1FLHQpfSxjcmVhdGVNYXJrdXBGb3JSb290
OmZ1bmN0aW9uKCl7cmV0dXJuIGkuUk9PVF9BVFRSSUJVVEVfTkFNRSsnPSIiJ30sc2V0QXR0cmli
dXRlRm9yUm9vdDpmdW5jdGlvbihlKXtlLnNldEF0dHJpYnV0ZShpLlJPT1RfQVRUUklCVVRFX05B
TUUsIiIpfSxjcmVhdGVNYXJrdXBGb3JQcm9wZXJ0eTpmdW5jdGlvbihlLHQpe3ZhciBuPWkucHJv
cGVydGllcy5oYXNPd25Qcm9wZXJ0eShlKT9pLnByb3BlcnRpZXNbZV06bnVsbDtpZihuKXtpZihv
KG4sdCkpcmV0dXJuIiI7dmFyIHI9bi5hdHRyaWJ1dGVOYW1lO3JldHVybiBuLmhhc0Jvb2xlYW5W
YWx1ZXx8bi5oYXNPdmVybG9hZGVkQm9vbGVhblZhbHVlJiZ0PT09ITA/cisnPSIiJzpyKyI9Iith
KHQpfXJldHVybiBpLmlzQ3VzdG9tQXR0cmlidXRlKGUpP251bGw9PXQ/IiI6ZSsiPSIrYSh0KTpu
dWxsfSxjcmVhdGVNYXJrdXBGb3JDdXN0b21BdHRyaWJ1dGU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4g
cihlKSYmbnVsbCE9dD9lKyI9IithKHQpOiIifSxzZXRWYWx1ZUZvclByb3BlcnR5OmZ1bmN0aW9u
KGUsdCxuKXt2YXIgcj1pLnByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkodCk/aS5wcm9wZXJ0aWVz
W3RdOm51bGw7aWYocil7dmFyIGE9ci5tdXRhdGlvbk1ldGhvZDtpZihhKWEoZSxuKTtlbHNle2lm
KG8ocixuKSlyZXR1cm4gdm9pZCB0aGlzLmRlbGV0ZVZhbHVlRm9yUHJvcGVydHkoZSx0KTtpZihy
Lm11c3RVc2VQcm9wZXJ0eSllW3IucHJvcGVydHlOYW1lXT1uO2Vsc2V7dmFyIHM9ci5hdHRyaWJ1
dGVOYW1lLHU9ci5hdHRyaWJ1dGVOYW1lc3BhY2U7dT9lLnNldEF0dHJpYnV0ZU5TKHUscywiIitu
KTpyLmhhc0Jvb2xlYW5WYWx1ZXx8ci5oYXNPdmVybG9hZGVkQm9vbGVhblZhbHVlJiZuPT09ITA/
ZS5zZXRBdHRyaWJ1dGUocywiIik6ZS5zZXRBdHRyaWJ1dGUocywiIituKX19fWVsc2UgaWYoaS5p
c0N1c3RvbUF0dHJpYnV0ZSh0KSlyZXR1cm4gdm9pZCBjLnNldFZhbHVlRm9yQXR0cmlidXRlKGUs
dCxuKX0sc2V0VmFsdWVGb3JBdHRyaWJ1dGU6ZnVuY3Rpb24oZSx0LG4pe3IodCkmJihudWxsPT1u
P2UucmVtb3ZlQXR0cmlidXRlKHQpOmUuc2V0QXR0cmlidXRlKHQsIiIrbikpfSxkZWxldGVWYWx1
ZUZvckF0dHJpYnV0ZTpmdW5jdGlvbihlLHQpe2UucmVtb3ZlQXR0cmlidXRlKHQpfSxkZWxldGVW
YWx1ZUZvclByb3BlcnR5OmZ1bmN0aW9uKGUsdCl7dmFyIG49aS5wcm9wZXJ0aWVzLmhhc093blBy
b3BlcnR5KHQpP2kucHJvcGVydGllc1t0XTpudWxsO2lmKG4pe3ZhciByPW4ubXV0YXRpb25NZXRo
b2Q7aWYocilyKGUsdm9pZCAwKTtlbHNlIGlmKG4ubXVzdFVzZVByb3BlcnR5KXt2YXIgbz1uLnBy
b3BlcnR5TmFtZTtuLmhhc0Jvb2xlYW5WYWx1ZT9lW29dPSExOmVbb109IiJ9ZWxzZSBlLnJlbW92
ZUF0dHJpYnV0ZShuLmF0dHJpYnV0ZU5hbWUpfWVsc2UgaS5pc0N1c3RvbUF0dHJpYnV0ZSh0KSYm
ZS5yZW1vdmVBdHRyaWJ1dGUodCl9fTt0LmV4cG9ydHM9Y30sezExOjExLDExMDoxMTAsMTM5OjEz
OSwzMjozMiw1Nzo1N31dLDEzOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUo
MTExKSxvPWUoOSksaT1lKDEyMCksYT1lKDEyNSkscz1lKDEyNiksdT0oZSgxMzQpLHtkYW5nZXJv
dXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cDpmdW5jdGlvbihlLHQpe2lmKGkuY2FuVXNlRE9NP3Zv
aWQgMDpyKCI1NiIpLHQ/dm9pZCAwOnIoIjU3IiksIkhUTUwiPT09ZS5ub2RlTmFtZT9yKCI1OCIp
OnZvaWQgMCwic3RyaW5nIj09dHlwZW9mIHQpe3ZhciBuPWEodCxzKVswXTtlLnBhcmVudE5vZGUu
cmVwbGFjZUNoaWxkKG4sZSl9ZWxzZSBvLnJlcGxhY2VDaGlsZFdpdGhUcmVlKGUsdCl9fSk7dC5l
eHBvcnRzPXV9LHsxMTE6MTExLDEyMDoxMjAsMTI1OjEyNSwxMjY6MTI2LDEzNDoxMzQsOTo5fV0s
MTQ6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9WyJSZXNwb25kZXJFdmVudFBs
dWdpbiIsIlNpbXBsZUV2ZW50UGx1Z2luIiwiVGFwRXZlbnRQbHVnaW4iLCJFbnRlckxlYXZlRXZl
bnRQbHVnaW4iLCJDaGFuZ2VFdmVudFBsdWdpbiIsIlNlbGVjdEV2ZW50UGx1Z2luIiwiQmVmb3Jl
SW5wdXRFdmVudFBsdWdpbiJdO3QuZXhwb3J0cz1yfSx7fV0sMTU6W2Z1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7dmFyIHI9ZSgxOSksbz1lKDMyKSxpPWUoODQpLGE9e21vdXNlRW50ZXI6e3Jl
Z2lzdHJhdGlvbk5hbWU6Im9uTW91c2VFbnRlciIsZGVwZW5kZW5jaWVzOlsidG9wTW91c2VPdXQi
LCJ0b3BNb3VzZU92ZXIiXX0sbW91c2VMZWF2ZTp7cmVnaXN0cmF0aW9uTmFtZToib25Nb3VzZUxl
YXZlIixkZXBlbmRlbmNpZXM6WyJ0b3BNb3VzZU91dCIsInRvcE1vdXNlT3ZlciJdfX0scz17ZXZl
bnRUeXBlczphLGV4dHJhY3RFdmVudHM6ZnVuY3Rpb24oZSx0LG4scyl7aWYoInRvcE1vdXNlT3Zl
ciI9PT1lJiYobi5yZWxhdGVkVGFyZ2V0fHxuLmZyb21FbGVtZW50KSlyZXR1cm4gbnVsbDtpZigi
dG9wTW91c2VPdXQiIT09ZSYmInRvcE1vdXNlT3ZlciIhPT1lKXJldHVybiBudWxsO3ZhciB1O2lm
KHMud2luZG93PT09cyl1PXM7ZWxzZXt2YXIgbD1zLm93bmVyRG9jdW1lbnQ7dT1sP2wuZGVmYXVs
dFZpZXd8fGwucGFyZW50V2luZG93OndpbmRvd312YXIgYyxwO2lmKCJ0b3BNb3VzZU91dCI9PT1l
KXtjPXQ7dmFyIGQ9bi5yZWxhdGVkVGFyZ2V0fHxuLnRvRWxlbWVudDtwPWQ/by5nZXRDbG9zZXN0
SW5zdGFuY2VGcm9tTm9kZShkKTpudWxsfWVsc2UgYz1udWxsLHA9dDtpZihjPT09cClyZXR1cm4g
bnVsbDt2YXIgZj1udWxsPT1jP3U6by5nZXROb2RlRnJvbUluc3RhbmNlKGMpLGg9bnVsbD09cD91
Om8uZ2V0Tm9kZUZyb21JbnN0YW5jZShwKSxtPWkuZ2V0UG9vbGVkKGEubW91c2VMZWF2ZSxjLG4s
cyk7bS50eXBlPSJtb3VzZWxlYXZlIixtLnRhcmdldD1mLG0ucmVsYXRlZFRhcmdldD1oO3ZhciB2
PWkuZ2V0UG9vbGVkKGEubW91c2VFbnRlcixwLG4scyk7cmV0dXJuIHYudHlwZT0ibW91c2VlbnRl
ciIsdi50YXJnZXQ9aCx2LnJlbGF0ZWRUYXJnZXQ9ZixyLmFjY3VtdWxhdGVFbnRlckxlYXZlRGlz
cGF0Y2hlcyhtLHYsYyxwKSxbbSx2XX19O3QuZXhwb3J0cz1zfSx7MTk6MTksMzI6MzIsODQ6ODR9
XSwxNjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDExMSksbz1lKDE3KSxp
PWUoMTgpLGE9ZSg0OSkscz1lKDkxKSx1PWUoOTcpLGw9KGUoMTM0KSx7fSksYz1udWxsLHA9ZnVu
Y3Rpb24oZSx0KXtlJiYoaS5leGVjdXRlRGlzcGF0Y2hlc0luT3JkZXIoZSx0KSxlLmlzUGVyc2lz
dGVudCgpfHxlLmNvbnN0cnVjdG9yLnJlbGVhc2UoZSkpfSxkPWZ1bmN0aW9uKGUpe3JldHVybiBw
KGUsITApfSxmPWZ1bmN0aW9uKGUpe3JldHVybiBwKGUsITEpfSxoPWZ1bmN0aW9uKGUpe3JldHVy
biIuIitlLl9yb290Tm9kZUlEfSxtPXtpbmplY3Rpb246e2luamVjdEV2ZW50UGx1Z2luT3JkZXI6
by5pbmplY3RFdmVudFBsdWdpbk9yZGVyLGluamVjdEV2ZW50UGx1Z2luc0J5TmFtZTpvLmluamVj
dEV2ZW50UGx1Z2luc0J5TmFtZX0scHV0TGlzdGVuZXI6ZnVuY3Rpb24oZSx0LG4peyJmdW5jdGlv
biIhPXR5cGVvZiBuP3IoIjk0Iix0LHR5cGVvZiBuKTp2b2lkIDA7dmFyIGk9aChlKSxhPWxbdF18
fChsW3RdPXt9KTthW2ldPW47dmFyIHM9by5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1t0XTtzJiZz
LmRpZFB1dExpc3RlbmVyJiZzLmRpZFB1dExpc3RlbmVyKGUsdCxuKX0sZ2V0TGlzdGVuZXI6ZnVu
Y3Rpb24oZSx0KXt2YXIgbj1sW3RdLHI9aChlKTtyZXR1cm4gbiYmbltyXX0sZGVsZXRlTGlzdGVu
ZXI6ZnVuY3Rpb24oZSx0KXt2YXIgbj1vLnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW3RdO24mJm4u
d2lsbERlbGV0ZUxpc3RlbmVyJiZuLndpbGxEZWxldGVMaXN0ZW5lcihlLHQpO3ZhciByPWxbdF07
aWYocil7dmFyIGk9aChlKTtkZWxldGUgcltpXX19LGRlbGV0ZUFsbExpc3RlbmVyczpmdW5jdGlv
bihlKXt2YXIgdD1oKGUpO2Zvcih2YXIgbiBpbiBsKWlmKGwuaGFzT3duUHJvcGVydHkobikmJmxb
bl1bdF0pe3ZhciByPW8ucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbbl07ciYmci53aWxsRGVsZXRl
TGlzdGVuZXImJnIud2lsbERlbGV0ZUxpc3RlbmVyKGUsbiksZGVsZXRlIGxbbl1bdF19fSxleHRy
YWN0RXZlbnRzOmZ1bmN0aW9uKGUsdCxuLHIpe2Zvcih2YXIgaSxhPW8ucGx1Z2lucyx1PTA7dTxh
Lmxlbmd0aDt1Kyspe3ZhciBsPWFbdV07aWYobCl7dmFyIGM9bC5leHRyYWN0RXZlbnRzKGUsdCxu
LHIpO2MmJihpPXMoaSxjKSl9fXJldHVybiBpfSxlbnF1ZXVlRXZlbnRzOmZ1bmN0aW9uKGUpe2Um
JihjPXMoYyxlKSl9LHByb2Nlc3NFdmVudFF1ZXVlOmZ1bmN0aW9uKGUpe3ZhciB0PWM7Yz1udWxs
LGU/dSh0LGQpOnUodCxmKSxjP3IoIjk1Iik6dm9pZCAwLGEucmV0aHJvd0NhdWdodEVycm9yKCl9
LF9fcHVyZ2U6ZnVuY3Rpb24oKXtsPXt9fSxfX2dldExpc3RlbmVyQmFuazpmdW5jdGlvbigpe3Jl
dHVybiBsfX07dC5leHBvcnRzPW19LHsxMTE6MTExLDEzNDoxMzQsMTc6MTcsMTg6MTgsNDk6NDks
OTE6OTEsOTc6OTd9XSwxNzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBy
KCl7aWYocylmb3IodmFyIGUgaW4gdSl7dmFyIHQ9dVtlXSxuPXMuaW5kZXhPZihlKTtpZihuPi0x
P3ZvaWQgMDphKCI5NiIsZSksIWwucGx1Z2luc1tuXSl7dC5leHRyYWN0RXZlbnRzP3ZvaWQgMDph
KCI5NyIsZSksbC5wbHVnaW5zW25dPXQ7dmFyIHI9dC5ldmVudFR5cGVzO2Zvcih2YXIgaSBpbiBy
KW8ocltpXSx0LGkpP3ZvaWQgMDphKCI5OCIsaSxlKX19fWZ1bmN0aW9uIG8oZSx0LG4pe2wuZXZl
bnROYW1lRGlzcGF0Y2hDb25maWdzLmhhc093blByb3BlcnR5KG4pP2EoIjk5IixuKTp2b2lkIDAs
bC5ldmVudE5hbWVEaXNwYXRjaENvbmZpZ3Nbbl09ZTt2YXIgcj1lLnBoYXNlZFJlZ2lzdHJhdGlv
bk5hbWVzO2lmKHIpe2Zvcih2YXIgbyBpbiByKWlmKHIuaGFzT3duUHJvcGVydHkobykpe3ZhciBz
PXJbb107aShzLHQsbil9cmV0dXJuITB9cmV0dXJuISFlLnJlZ2lzdHJhdGlvbk5hbWUmJihpKGUu
cmVnaXN0cmF0aW9uTmFtZSx0LG4pLCEwKX1mdW5jdGlvbiBpKGUsdCxuKXtsLnJlZ2lzdHJhdGlv
bk5hbWVNb2R1bGVzW2VdP2EoIjEwMCIsZSk6dm9pZCAwLGwucmVnaXN0cmF0aW9uTmFtZU1vZHVs
ZXNbZV09dCxsLnJlZ2lzdHJhdGlvbk5hbWVEZXBlbmRlbmNpZXNbZV09dC5ldmVudFR5cGVzW25d
LmRlcGVuZGVuY2llc312YXIgYT1lKDExMSkscz0oZSgxMzQpLG51bGwpLHU9e30sbD17cGx1Z2lu
czpbXSxldmVudE5hbWVEaXNwYXRjaENvbmZpZ3M6e30scmVnaXN0cmF0aW9uTmFtZU1vZHVsZXM6
e30scmVnaXN0cmF0aW9uTmFtZURlcGVuZGVuY2llczp7fSxwb3NzaWJsZVJlZ2lzdHJhdGlvbk5h
bWVzOm51bGwsaW5qZWN0RXZlbnRQbHVnaW5PcmRlcjpmdW5jdGlvbihlKXtzP2EoIjEwMSIpOnZv
aWQgMCxzPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGUpLHIoKX0saW5qZWN0RXZlbnRQbHVn
aW5zQnlOYW1lOmZ1bmN0aW9uKGUpe3ZhciB0PSExO2Zvcih2YXIgbiBpbiBlKWlmKGUuaGFzT3du
UHJvcGVydHkobikpe3ZhciBvPWVbbl07dS5oYXNPd25Qcm9wZXJ0eShuKSYmdVtuXT09PW98fCh1
W25dP2EoIjEwMiIsbik6dm9pZCAwLHVbbl09byx0PSEwKX10JiZyKCl9LGdldFBsdWdpbk1vZHVs
ZUZvckV2ZW50OmZ1bmN0aW9uKGUpe3ZhciB0PWUuZGlzcGF0Y2hDb25maWc7aWYodC5yZWdpc3Ry
YXRpb25OYW1lKXJldHVybiBsLnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW3QucmVnaXN0cmF0aW9u
TmFtZV18fG51bGw7aWYodm9pZCAwIT09dC5waGFzZWRSZWdpc3RyYXRpb25OYW1lcyl7dmFyIG49
dC5waGFzZWRSZWdpc3RyYXRpb25OYW1lcztmb3IodmFyIHIgaW4gbilpZihuLmhhc093blByb3Bl
cnR5KHIpKXt2YXIgbz1sLnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW25bcl1dO2lmKG8pcmV0dXJu
IG99fXJldHVybiBudWxsfSxfcmVzZXRFdmVudFBsdWdpbnM6ZnVuY3Rpb24oKXtzPW51bGw7Zm9y
KHZhciBlIGluIHUpdS5oYXNPd25Qcm9wZXJ0eShlKSYmZGVsZXRlIHVbZV07bC5wbHVnaW5zLmxl
bmd0aD0wO3ZhciB0PWwuZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzO2Zvcih2YXIgbiBpbiB0KXQu
aGFzT3duUHJvcGVydHkobikmJmRlbGV0ZSB0W25dO3ZhciByPWwucmVnaXN0cmF0aW9uTmFtZU1v
ZHVsZXM7Zm9yKHZhciBvIGluIHIpci5oYXNPd25Qcm9wZXJ0eShvKSYmZGVsZXRlIHJbb119fTt0
LmV4cG9ydHM9bH0sezExMToxMTEsMTM0OjEzNH1dLDE4OltmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuInRvcE1vdXNlVXAiPT09ZXx8InRvcFRvdWNoRW5k
Ij09PWV8fCJ0b3BUb3VjaENhbmNlbCI9PT1lfWZ1bmN0aW9uIG8oZSl7cmV0dXJuInRvcE1vdXNl
TW92ZSI9PT1lfHwidG9wVG91Y2hNb3ZlIj09PWV9ZnVuY3Rpb24gaShlKXtyZXR1cm4idG9wTW91
c2VEb3duIj09PWV8fCJ0b3BUb3VjaFN0YXJ0Ij09PWV9ZnVuY3Rpb24gYShlLHQsbixyKXt2YXIg
bz1lLnR5cGV8fCJ1bmtub3duLWV2ZW50IjtlLmN1cnJlbnRUYXJnZXQ9Zy5nZXROb2RlRnJvbUlu
c3RhbmNlKHIpLHQ/bS5pbnZva2VHdWFyZGVkQ2FsbGJhY2tXaXRoQ2F0Y2gobyxuLGUpOm0uaW52
b2tlR3VhcmRlZENhbGxiYWNrKG8sbixlKSxlLmN1cnJlbnRUYXJnZXQ9bnVsbH1mdW5jdGlvbiBz
KGUsdCl7dmFyIG49ZS5fZGlzcGF0Y2hMaXN0ZW5lcnMscj1lLl9kaXNwYXRjaEluc3RhbmNlcztp
ZihBcnJheS5pc0FycmF5KG4pKWZvcih2YXIgbz0wO288bi5sZW5ndGgmJiFlLmlzUHJvcGFnYXRp
b25TdG9wcGVkKCk7bysrKWEoZSx0LG5bb10scltvXSk7ZWxzZSBuJiZhKGUsdCxuLHIpO2UuX2Rp
c3BhdGNoTGlzdGVuZXJzPW51bGwsZS5fZGlzcGF0Y2hJbnN0YW5jZXM9bnVsbH1mdW5jdGlvbiB1
KGUpe3ZhciB0PWUuX2Rpc3BhdGNoTGlzdGVuZXJzLG49ZS5fZGlzcGF0Y2hJbnN0YW5jZXM7aWYo
QXJyYXkuaXNBcnJheSh0KSl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aCYmIWUuaXNQcm9wYWdhdGlv
blN0b3BwZWQoKTtyKyspaWYodFtyXShlLG5bcl0pKXJldHVybiBuW3JdfWVsc2UgaWYodCYmdChl
LG4pKXJldHVybiBuO3JldHVybiBudWxsfWZ1bmN0aW9uIGwoZSl7dmFyIHQ9dShlKTtyZXR1cm4g
ZS5fZGlzcGF0Y2hJbnN0YW5jZXM9bnVsbCxlLl9kaXNwYXRjaExpc3RlbmVycz1udWxsLHR9ZnVu
Y3Rpb24gYyhlKXt2YXIgdD1lLl9kaXNwYXRjaExpc3RlbmVycyxuPWUuX2Rpc3BhdGNoSW5zdGFu
Y2VzO0FycmF5LmlzQXJyYXkodCk/aCgiMTAzIik6dm9pZCAwLGUuY3VycmVudFRhcmdldD10P2cu
Z2V0Tm9kZUZyb21JbnN0YW5jZShuKTpudWxsO3ZhciByPXQ/dChlKTpudWxsO3JldHVybiBlLmN1
cnJlbnRUYXJnZXQ9bnVsbCxlLl9kaXNwYXRjaExpc3RlbmVycz1udWxsLGUuX2Rpc3BhdGNoSW5z
dGFuY2VzPW51bGwscn1mdW5jdGlvbiBwKGUpe3JldHVybiEhZS5fZGlzcGF0Y2hMaXN0ZW5lcnN9
dmFyIGQsZixoPWUoMTExKSxtPWUoNDkpLHY9KGUoMTM0KSxlKDEzOSkse2luamVjdENvbXBvbmVu
dFRyZWU6ZnVuY3Rpb24oZSl7ZD1lfSxpbmplY3RUcmVlVHJhdmVyc2FsOmZ1bmN0aW9uKGUpe2Y9
ZX19KSxnPXtpc0VuZGlzaDpyLGlzTW92ZWlzaDpvLGlzU3RhcnRpc2g6aSxleGVjdXRlRGlyZWN0
RGlzcGF0Y2g6YyxleGVjdXRlRGlzcGF0Y2hlc0luT3JkZXI6cyxleGVjdXRlRGlzcGF0Y2hlc0lu
T3JkZXJTdG9wQXRUcnVlOmwsaGFzRGlzcGF0Y2hlczpwLGdldEluc3RhbmNlRnJvbU5vZGU6ZnVu
Y3Rpb24oZSl7cmV0dXJuIGQuZ2V0SW5zdGFuY2VGcm9tTm9kZShlKX0sZ2V0Tm9kZUZyb21JbnN0
YW5jZTpmdW5jdGlvbihlKXtyZXR1cm4gZC5nZXROb2RlRnJvbUluc3RhbmNlKGUpfSxpc0FuY2Vz
dG9yOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGYuaXNBbmNlc3RvcihlLHQpfSxnZXRMb3dlc3RDb21t
b25BbmNlc3RvcjpmdW5jdGlvbihlLHQpe3JldHVybiBmLmdldExvd2VzdENvbW1vbkFuY2VzdG9y
KGUsdCl9LGdldFBhcmVudEluc3RhbmNlOmZ1bmN0aW9uKGUpe3JldHVybiBmLmdldFBhcmVudElu
c3RhbmNlKGUpfSx0cmF2ZXJzZVR3b1BoYXNlOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZi50cmF2
ZXJzZVR3b1BoYXNlKGUsdCxuKX0sdHJhdmVyc2VFbnRlckxlYXZlOmZ1bmN0aW9uKGUsdCxuLHIs
byl7cmV0dXJuIGYudHJhdmVyc2VFbnRlckxlYXZlKGUsdCxuLHIsbyl9LGluamVjdGlvbjp2fTt0
LmV4cG9ydHM9Z30sezExMToxMTEsMTM0OjEzNCwxMzk6MTM5LDQ5OjQ5fV0sMTk6W2Z1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbil7dmFyIHI9dC5kaXNwYXRjaENv
bmZpZy5waGFzZWRSZWdpc3RyYXRpb25OYW1lc1tuXTtyZXR1cm4gZyhlLHIpfWZ1bmN0aW9uIG8o
ZSx0LG4pe3ZhciBvPXIoZSxuLHQpO28mJihuLl9kaXNwYXRjaExpc3RlbmVycz1tKG4uX2Rpc3Bh
dGNoTGlzdGVuZXJzLG8pLG4uX2Rpc3BhdGNoSW5zdGFuY2VzPW0obi5fZGlzcGF0Y2hJbnN0YW5j
ZXMsZSkpfWZ1bmN0aW9uIGkoZSl7ZSYmZS5kaXNwYXRjaENvbmZpZy5waGFzZWRSZWdpc3RyYXRp
b25OYW1lcyYmaC50cmF2ZXJzZVR3b1BoYXNlKGUuX3RhcmdldEluc3QsbyxlKX1mdW5jdGlvbiBh
KGUpe2lmKGUmJmUuZGlzcGF0Y2hDb25maWcucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMpe3ZhciB0
PWUuX3RhcmdldEluc3Qsbj10P2guZ2V0UGFyZW50SW5zdGFuY2UodCk6bnVsbDtoLnRyYXZlcnNl
VHdvUGhhc2UobixvLGUpfX1mdW5jdGlvbiBzKGUsdCxuKXtpZihuJiZuLmRpc3BhdGNoQ29uZmln
LnJlZ2lzdHJhdGlvbk5hbWUpe3ZhciByPW4uZGlzcGF0Y2hDb25maWcucmVnaXN0cmF0aW9uTmFt
ZSxvPWcoZSxyKTtvJiYobi5fZGlzcGF0Y2hMaXN0ZW5lcnM9bShuLl9kaXNwYXRjaExpc3RlbmVy
cyxvKSxuLl9kaXNwYXRjaEluc3RhbmNlcz1tKG4uX2Rpc3BhdGNoSW5zdGFuY2VzLGUpKX19ZnVu
Y3Rpb24gdShlKXtlJiZlLmRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUmJnMoZS5fdGFy
Z2V0SW5zdCxudWxsLGUpfWZ1bmN0aW9uIGwoZSl7dihlLGkpfWZ1bmN0aW9uIGMoZSl7dihlLGEp
fWZ1bmN0aW9uIHAoZSx0LG4scil7aC50cmF2ZXJzZUVudGVyTGVhdmUobixyLHMsZSx0KX1mdW5j
dGlvbiBkKGUpe3YoZSx1KX12YXIgZj1lKDE2KSxoPWUoMTgpLG09ZSg5MSksdj1lKDk3KSxnPShl
KDEzOSksZi5nZXRMaXN0ZW5lcikseT17YWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlczpsLGFj
Y3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXNTa2lwVGFyZ2V0OmMsYWNjdW11bGF0ZURpcmVjdERp
c3BhdGNoZXM6ZCxhY2N1bXVsYXRlRW50ZXJMZWF2ZURpc3BhdGNoZXM6cH07dC5leHBvcnRzPXl9
LHsxMzk6MTM5LDE2OjE2LDE4OjE4LDkxOjkxLDk3Ojk3fV0sMjA6W2Z1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt0aGlzLl9yb290PWUsdGhpcy5fc3RhcnRUZXh0PXRo
aXMuZ2V0VGV4dCgpLHRoaXMuX2ZhbGxiYWNrVGV4dD1udWxsfXZhciBvPWUoMTQwKSxpPWUoMjQp
LGE9ZSgxMDUpO28oci5wcm90b3R5cGUse2Rlc3RydWN0b3I6ZnVuY3Rpb24oKXt0aGlzLl9yb290
PW51bGwsdGhpcy5fc3RhcnRUZXh0PW51bGwsdGhpcy5fZmFsbGJhY2tUZXh0PW51bGx9LGdldFRl
eHQ6ZnVuY3Rpb24oKXtyZXR1cm4idmFsdWUiaW4gdGhpcy5fcm9vdD90aGlzLl9yb290LnZhbHVl
OnRoaXMuX3Jvb3RbYSgpXX0sZ2V0RGF0YTpmdW5jdGlvbigpe2lmKHRoaXMuX2ZhbGxiYWNrVGV4
dClyZXR1cm4gdGhpcy5fZmFsbGJhY2tUZXh0O3ZhciBlLHQsbj10aGlzLl9zdGFydFRleHQscj1u
Lmxlbmd0aCxvPXRoaXMuZ2V0VGV4dCgpLGk9by5sZW5ndGg7Zm9yKGU9MDtlPHImJm5bZV09PT1v
W2VdO2UrKyk7dmFyIGE9ci1lO2Zvcih0PTE7dDw9YSYmbltyLXRdPT09b1tpLXRdO3QrKyk7dmFy
IHM9dD4xPzEtdDp2b2lkIDA7cmV0dXJuIHRoaXMuX2ZhbGxiYWNrVGV4dD1vLnNsaWNlKGUscyks
dGhpcy5fZmFsbGJhY2tUZXh0fX0pLGkuYWRkUG9vbGluZ1RvKHIpLHQuZXhwb3J0cz1yfSx7MTA1
OjEwNSwxNDA6MTQwLDI0OjI0fV0sMjE6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFy
IHI9ZSgxMSksbz1yLmluamVjdGlvbi5NVVNUX1VTRV9QUk9QRVJUWSxpPXIuaW5qZWN0aW9uLkhB
U19CT09MRUFOX1ZBTFVFLGE9ci5pbmplY3Rpb24uSEFTX05VTUVSSUNfVkFMVUUscz1yLmluamVj
dGlvbi5IQVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxVRSx1PXIuaW5qZWN0aW9uLkhBU19PVkVSTE9B
REVEX0JPT0xFQU5fVkFMVUUsbD17aXNDdXN0b21BdHRyaWJ1dGU6UmVnRXhwLnByb3RvdHlwZS50
ZXN0LmJpbmQobmV3IFJlZ0V4cCgiXihkYXRhfGFyaWEpLVsiK3IuQVRUUklCVVRFX05BTUVfQ0hB
UisiXSokIikpLFByb3BlcnRpZXM6e2FjY2VwdDowLGFjY2VwdENoYXJzZXQ6MCxhY2Nlc3NLZXk6
MCxhY3Rpb246MCxhbGxvd0Z1bGxTY3JlZW46aSxhbGxvd1RyYW5zcGFyZW5jeTowLGFsdDowLGFz
OjAsYXN5bmM6aSxhdXRvQ29tcGxldGU6MCxhdXRvUGxheTppLGNhcHR1cmU6aSxjZWxsUGFkZGlu
ZzowLGNlbGxTcGFjaW5nOjAsY2hhclNldDowLGNoYWxsZW5nZTowLGNoZWNrZWQ6b3xpLGNpdGU6
MCxjbGFzc0lEOjAsY2xhc3NOYW1lOjAsY29sczpzLGNvbFNwYW46MCxjb250ZW50OjAsY29udGVu
dEVkaXRhYmxlOjAsY29udGV4dE1lbnU6MCxjb250cm9sczppLGNvb3JkczowLGNyb3NzT3JpZ2lu
OjAsZGF0YTowLGRhdGVUaW1lOjAsZGVmYXVsdDppLGRlZmVyOmksZGlyOjAsZGlzYWJsZWQ6aSxk
b3dubG9hZDp1LGRyYWdnYWJsZTowLGVuY1R5cGU6MCxmb3JtOjAsZm9ybUFjdGlvbjowLGZvcm1F
bmNUeXBlOjAsZm9ybU1ldGhvZDowLGZvcm1Ob1ZhbGlkYXRlOmksZm9ybVRhcmdldDowLGZyYW1l
Qm9yZGVyOjAsaGVhZGVyczowLGhlaWdodDowLGhpZGRlbjppLGhpZ2g6MCxocmVmOjAsaHJlZkxh
bmc6MCxodG1sRm9yOjAsaHR0cEVxdWl2OjAsaWNvbjowLGlkOjAsaW5wdXRNb2RlOjAsaW50ZWdy
aXR5OjAsaXM6MCxrZXlQYXJhbXM6MCxrZXlUeXBlOjAsa2luZDowLGxhYmVsOjAsbGFuZzowLGxp
c3Q6MCxsb29wOmksbG93OjAsbWFuaWZlc3Q6MCxtYXJnaW5IZWlnaHQ6MCxtYXJnaW5XaWR0aDow
LG1heDowLG1heExlbmd0aDowLG1lZGlhOjAsbWVkaWFHcm91cDowLG1ldGhvZDowLG1pbjowLG1p
bkxlbmd0aDowLG11bHRpcGxlOm98aSxtdXRlZDpvfGksbmFtZTowLG5vbmNlOjAsbm9WYWxpZGF0
ZTppLG9wZW46aSxvcHRpbXVtOjAscGF0dGVybjowLHBsYWNlaG9sZGVyOjAscGxheXNJbmxpbmU6
aSxwb3N0ZXI6MCxwcmVsb2FkOjAscHJvZmlsZTowLHJhZGlvR3JvdXA6MCxyZWFkT25seTppLHJl
ZmVycmVyUG9saWN5OjAscmVsOjAscmVxdWlyZWQ6aSxyZXZlcnNlZDppLHJvbGU6MCxyb3dzOnMs
cm93U3BhbjphLHNhbmRib3g6MCxzY29wZTowLHNjb3BlZDppLHNjcm9sbGluZzowLHNlYW1sZXNz
Omksc2VsZWN0ZWQ6b3xpLHNoYXBlOjAsc2l6ZTpzLHNpemVzOjAsc3BhbjpzLHNwZWxsQ2hlY2s6
MCxzcmM6MCxzcmNEb2M6MCxzcmNMYW5nOjAsc3JjU2V0OjAsc3RhcnQ6YSxzdGVwOjAsc3R5bGU6
MCxzdW1tYXJ5OjAsdGFiSW5kZXg6MCx0YXJnZXQ6MCx0aXRsZTowLHR5cGU6MCx1c2VNYXA6MCx2
YWx1ZTowLHdpZHRoOjAsd21vZGU6MCx3cmFwOjAsYWJvdXQ6MCxkYXRhdHlwZTowLGlubGlzdDow
LHByZWZpeDowLHByb3BlcnR5OjAscmVzb3VyY2U6MCx0eXBlb2Y6MCx2b2NhYjowLGF1dG9DYXBp
dGFsaXplOjAsYXV0b0NvcnJlY3Q6MCxhdXRvU2F2ZTowLGNvbG9yOjAsaXRlbVByb3A6MCxpdGVt
U2NvcGU6aSxpdGVtVHlwZTowLGl0ZW1JRDowLGl0ZW1SZWY6MCxyZXN1bHRzOjAsc2VjdXJpdHk6
MCx1bnNlbGVjdGFibGU6MH0sRE9NQXR0cmlidXRlTmFtZXM6e2FjY2VwdENoYXJzZXQ6ImFjY2Vw
dC1jaGFyc2V0IixjbGFzc05hbWU6ImNsYXNzIixodG1sRm9yOiJmb3IiLGh0dHBFcXVpdjoiaHR0
cC1lcXVpdiJ9LERPTVByb3BlcnR5TmFtZXM6e319O3QuZXhwb3J0cz1sfSx7MTE6MTF9XSwyMjpb
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3ZhciB0PS9bPTpdL2cs
bj17Ij0iOiI9MCIsIjoiOiI9MiJ9LHI9KCIiK2UpLnJlcGxhY2UodCxmdW5jdGlvbihlKXtyZXR1
cm4gbltlXX0pO3JldHVybiIkIityfWZ1bmN0aW9uIG8oZSl7dmFyIHQ9Lyg9MHw9MikvZyxuPXsi
PTAiOiI9IiwiPTIiOiI6In0scj0iLiI9PT1lWzBdJiYiJCI9PT1lWzFdP2Uuc3Vic3RyaW5nKDIp
OmUuc3Vic3RyaW5nKDEpO3JldHVybigiIityKS5yZXBsYWNlKHQsZnVuY3Rpb24oZSl7cmV0dXJu
IG5bZV19KX12YXIgaT17ZXNjYXBlOnIsdW5lc2NhcGU6b307dC5leHBvcnRzPWl9LHt9XSwyMzpb
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe251bGwhPWUuY2hlY2tl
ZExpbmsmJm51bGwhPWUudmFsdWVMaW5rP3MoIjg3Iik6dm9pZCAwfWZ1bmN0aW9uIG8oZSl7cihl
KSxudWxsIT1lLnZhbHVlfHxudWxsIT1lLm9uQ2hhbmdlP3MoIjg4Iik6dm9pZCAwfWZ1bmN0aW9u
IGkoZSl7cihlKSxudWxsIT1lLmNoZWNrZWR8fG51bGwhPWUub25DaGFuZ2U/cygiODkiKTp2b2lk
IDB9ZnVuY3Rpb24gYShlKXtpZihlKXt2YXIgdD1lLmdldE5hbWUoKTtpZih0KXJldHVybiIgQ2hl
Y2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgYCIrdCsiYC4ifXJldHVybiIifXZhciBzPWUoMTExKSx1
PWUoMTE4KSxsPWUoNjIpLGM9KGUoMTM0KSxlKDEzOSkse2J1dHRvbjohMCxjaGVja2JveDohMCxp
bWFnZTohMCxoaWRkZW46ITAscmFkaW86ITAscmVzZXQ6ITAsc3VibWl0OiEwfSkscD17dmFsdWU6
ZnVuY3Rpb24oZSx0LG4pe3JldHVybiFlW3RdfHxjW2UudHlwZV18fGUub25DaGFuZ2V8fGUucmVh
ZE9ubHl8fGUuZGlzYWJsZWQ/bnVsbDpuZXcgRXJyb3IoIllvdSBwcm92aWRlZCBhIGB2YWx1ZWAg
cHJvcCB0byBhIGZvcm0gZmllbGQgd2l0aG91dCBhbiBgb25DaGFuZ2VgIGhhbmRsZXIuIFRoaXMg
d2lsbCByZW5kZXIgYSByZWFkLW9ubHkgZmllbGQuIElmIHRoZSBmaWVsZCBzaG91bGQgYmUgbXV0
YWJsZSB1c2UgYGRlZmF1bHRWYWx1ZWAuIE90aGVyd2lzZSwgc2V0IGVpdGhlciBgb25DaGFuZ2Vg
IG9yIGByZWFkT25seWAuIil9LGNoZWNrZWQ6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiFlW3RdfHxl
Lm9uQ2hhbmdlfHxlLnJlYWRPbmx5fHxlLmRpc2FibGVkP251bGw6bmV3IEVycm9yKCJZb3UgcHJv
dmlkZWQgYSBgY2hlY2tlZGAgcHJvcCB0byBhIGZvcm0gZmllbGQgd2l0aG91dCBhbiBgb25DaGFu
Z2VgIGhhbmRsZXIuIFRoaXMgd2lsbCByZW5kZXIgYSByZWFkLW9ubHkgZmllbGQuIElmIHRoZSBm
aWVsZCBzaG91bGQgYmUgbXV0YWJsZSB1c2UgYGRlZmF1bHRDaGVja2VkYC4gT3RoZXJ3aXNlLCBz
ZXQgZWl0aGVyIGBvbkNoYW5nZWAgb3IgYHJlYWRPbmx5YC4iKX0sb25DaGFuZ2U6dS5Qcm9wVHlw
ZXMuZnVuY30sZD17fSxmPXtjaGVja1Byb3BUeXBlczpmdW5jdGlvbihlLHQsbil7Zm9yKHZhciBy
IGluIHApe2lmKHAuaGFzT3duUHJvcGVydHkocikpdmFyIG89cFtyXSh0LHIsZSwicHJvcCIsbnVs
bCxsKTtvIGluc3RhbmNlb2YgRXJyb3ImJiEoby5tZXNzYWdlIGluIGQpJiYoZFtvLm1lc3NhZ2Vd
PSEwLGEobikpfX0sZ2V0VmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWVMaW5rPyhvKGUp
LGUudmFsdWVMaW5rLnZhbHVlKTplLnZhbHVlfSxnZXRDaGVja2VkOmZ1bmN0aW9uKGUpe3JldHVy
biBlLmNoZWNrZWRMaW5rPyhpKGUpLGUuY2hlY2tlZExpbmsudmFsdWUpOmUuY2hlY2tlZH0sZXhl
Y3V0ZU9uQ2hhbmdlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUudmFsdWVMaW5rPyhvKGUpLGUudmFs
dWVMaW5rLnJlcXVlc3RDaGFuZ2UodC50YXJnZXQudmFsdWUpKTplLmNoZWNrZWRMaW5rPyhpKGUp
LGUuY2hlY2tlZExpbmsucmVxdWVzdENoYW5nZSh0LnRhcmdldC5jaGVja2VkKSk6ZS5vbkNoYW5n
ZT9lLm9uQ2hhbmdlLmNhbGwodm9pZCAwLHQpOnZvaWQgMH19O3QuZXhwb3J0cz1mfSx7MTExOjEx
MSwxMTg6MTE4LDEzNDoxMzQsMTM5OjEzOSw2Mjo2Mn1dLDI0OltmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO3ZhciByPWUoMTExKSxvPShlKDEzNCksZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztp
Zih0Lmluc3RhbmNlUG9vbC5sZW5ndGgpe3ZhciBuPXQuaW5zdGFuY2VQb29sLnBvcCgpO3JldHVy
biB0LmNhbGwobixlKSxufXJldHVybiBuZXcgdChlKX0pLGk9ZnVuY3Rpb24oZSx0KXt2YXIgbj10
aGlzO2lmKG4uaW5zdGFuY2VQb29sLmxlbmd0aCl7dmFyIHI9bi5pbnN0YW5jZVBvb2wucG9wKCk7
cmV0dXJuIG4uY2FsbChyLGUsdCkscn1yZXR1cm4gbmV3IG4oZSx0KX0sYT1mdW5jdGlvbihlLHQs
bil7dmFyIHI9dGhpcztpZihyLmluc3RhbmNlUG9vbC5sZW5ndGgpe3ZhciBvPXIuaW5zdGFuY2VQ
b29sLnBvcCgpO3JldHVybiByLmNhbGwobyxlLHQsbiksb31yZXR1cm4gbmV3IHIoZSx0LG4pfSxz
PWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvPXRoaXM7aWYoby5pbnN0YW5jZVBvb2wubGVuZ3RoKXt2
YXIgaT1vLmluc3RhbmNlUG9vbC5wb3AoKTtyZXR1cm4gby5jYWxsKGksZSx0LG4sciksaX1yZXR1
cm4gbmV3IG8oZSx0LG4scil9LHU9ZnVuY3Rpb24oZSx0LG4scixvKXt2YXIgaT10aGlzO2lmKGku
aW5zdGFuY2VQb29sLmxlbmd0aCl7dmFyIGE9aS5pbnN0YW5jZVBvb2wucG9wKCk7cmV0dXJuIGku
Y2FsbChhLGUsdCxuLHIsbyksYX1yZXR1cm4gbmV3IGkoZSx0LG4scixvKX0sbD1mdW5jdGlvbihl
KXt2YXIgdD10aGlzO2UgaW5zdGFuY2VvZiB0P3ZvaWQgMDpyKCIyNSIpLGUuZGVzdHJ1Y3Rvcigp
LHQuaW5zdGFuY2VQb29sLmxlbmd0aDx0LnBvb2xTaXplJiZ0Lmluc3RhbmNlUG9vbC5wdXNoKGUp
fSxjPTEwLHA9byxkPWZ1bmN0aW9uKGUsdCl7dmFyIG49ZTtyZXR1cm4gbi5pbnN0YW5jZVBvb2w9
W10sbi5nZXRQb29sZWQ9dHx8cCxuLnBvb2xTaXplfHwobi5wb29sU2l6ZT1jKSxuLnJlbGVhc2U9
bCxufSxmPXthZGRQb29saW5nVG86ZCxvbmVBcmd1bWVudFBvb2xlcjpvLHR3b0FyZ3VtZW50UG9v
bGVyOmksdGhyZWVBcmd1bWVudFBvb2xlcjphLGZvdXJBcmd1bWVudFBvb2xlcjpzLGZpdmVBcmd1
bWVudFBvb2xlcjp1fTt0LmV4cG9ydHM9Zn0sezExMToxMTEsMTM0OjEzNH1dLDI1OltmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIE9iamVjdC5wcm90b3R5
cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG0pfHwoZVttXT1mKysscFtlW21dXT17fSkscFtlW21d
XX12YXIgbyxpPWUoMTQwKSxhPWUoMTcpLHM9ZSg1MCksdT1lKDkwKSxsPWUoMTA2KSxjPWUoMTA4
KSxwPXt9LGQ9ITEsZj0wLGg9e3RvcEFib3J0OiJhYm9ydCIsdG9wQW5pbWF0aW9uRW5kOmwoImFu
aW1hdGlvbmVuZCIpfHwiYW5pbWF0aW9uZW5kIix0b3BBbmltYXRpb25JdGVyYXRpb246bCgiYW5p
bWF0aW9uaXRlcmF0aW9uIil8fCJhbmltYXRpb25pdGVyYXRpb24iLHRvcEFuaW1hdGlvblN0YXJ0
OmwoImFuaW1hdGlvbnN0YXJ0Iil8fCJhbmltYXRpb25zdGFydCIsdG9wQmx1cjoiYmx1ciIsdG9w
Q2FuUGxheToiY2FucGxheSIsdG9wQ2FuUGxheVRocm91Z2g6ImNhbnBsYXl0aHJvdWdoIix0b3BD
aGFuZ2U6ImNoYW5nZSIsdG9wQ2xpY2s6ImNsaWNrIix0b3BDb21wb3NpdGlvbkVuZDoiY29tcG9z
aXRpb25lbmQiLHRvcENvbXBvc2l0aW9uU3RhcnQ6ImNvbXBvc2l0aW9uc3RhcnQiLHRvcENvbXBv
c2l0aW9uVXBkYXRlOiJjb21wb3NpdGlvbnVwZGF0ZSIsdG9wQ29udGV4dE1lbnU6ImNvbnRleHRt
ZW51Iix0b3BDb3B5OiJjb3B5Iix0b3BDdXQ6ImN1dCIsdG9wRG91YmxlQ2xpY2s6ImRibGNsaWNr
Iix0b3BEcmFnOiJkcmFnIix0b3BEcmFnRW5kOiJkcmFnZW5kIix0b3BEcmFnRW50ZXI6ImRyYWdl
bnRlciIsdG9wRHJhZ0V4aXQ6ImRyYWdleGl0Iix0b3BEcmFnTGVhdmU6ImRyYWdsZWF2ZSIsdG9w
RHJhZ092ZXI6ImRyYWdvdmVyIix0b3BEcmFnU3RhcnQ6ImRyYWdzdGFydCIsdG9wRHJvcDoiZHJv
cCIsdG9wRHVyYXRpb25DaGFuZ2U6ImR1cmF0aW9uY2hhbmdlIix0b3BFbXB0aWVkOiJlbXB0aWVk
Iix0b3BFbmNyeXB0ZWQ6ImVuY3J5cHRlZCIsdG9wRW5kZWQ6ImVuZGVkIix0b3BFcnJvcjoiZXJy
b3IiLHRvcEZvY3VzOiJmb2N1cyIsdG9wSW5wdXQ6ImlucHV0Iix0b3BLZXlEb3duOiJrZXlkb3du
Iix0b3BLZXlQcmVzczoia2V5cHJlc3MiLHRvcEtleVVwOiJrZXl1cCIsdG9wTG9hZGVkRGF0YToi
bG9hZGVkZGF0YSIsdG9wTG9hZGVkTWV0YWRhdGE6ImxvYWRlZG1ldGFkYXRhIix0b3BMb2FkU3Rh
cnQ6ImxvYWRzdGFydCIsdG9wTW91c2VEb3duOiJtb3VzZWRvd24iLHRvcE1vdXNlTW92ZToibW91
c2Vtb3ZlIix0b3BNb3VzZU91dDoibW91c2VvdXQiLHRvcE1vdXNlT3ZlcjoibW91c2VvdmVyIix0
b3BNb3VzZVVwOiJtb3VzZXVwIix0b3BQYXN0ZToicGFzdGUiLHRvcFBhdXNlOiJwYXVzZSIsdG9w
UGxheToicGxheSIsdG9wUGxheWluZzoicGxheWluZyIsCit0b3BQcm9ncmVzczoicHJvZ3Jlc3Mi
LHRvcFJhdGVDaGFuZ2U6InJhdGVjaGFuZ2UiLHRvcFNjcm9sbDoic2Nyb2xsIix0b3BTZWVrZWQ6
InNlZWtlZCIsdG9wU2Vla2luZzoic2Vla2luZyIsdG9wU2VsZWN0aW9uQ2hhbmdlOiJzZWxlY3Rp
b25jaGFuZ2UiLHRvcFN0YWxsZWQ6InN0YWxsZWQiLHRvcFN1c3BlbmQ6InN1c3BlbmQiLHRvcFRl
eHRJbnB1dDoidGV4dElucHV0Iix0b3BUaW1lVXBkYXRlOiJ0aW1ldXBkYXRlIix0b3BUb3VjaENh
bmNlbDoidG91Y2hjYW5jZWwiLHRvcFRvdWNoRW5kOiJ0b3VjaGVuZCIsdG9wVG91Y2hNb3ZlOiJ0
b3VjaG1vdmUiLHRvcFRvdWNoU3RhcnQ6InRvdWNoc3RhcnQiLHRvcFRyYW5zaXRpb25FbmQ6bCgi
dHJhbnNpdGlvbmVuZCIpfHwidHJhbnNpdGlvbmVuZCIsdG9wVm9sdW1lQ2hhbmdlOiJ2b2x1bWVj
aGFuZ2UiLHRvcFdhaXRpbmc6IndhaXRpbmciLHRvcFdoZWVsOiJ3aGVlbCJ9LG09Il9yZWFjdExp
c3RlbmVyc0lEIitTdHJpbmcoTWF0aC5yYW5kb20oKSkuc2xpY2UoMiksdj1pKHt9LHMse1JlYWN0
RXZlbnRMaXN0ZW5lcjpudWxsLGluamVjdGlvbjp7aW5qZWN0UmVhY3RFdmVudExpc3RlbmVyOmZ1
bmN0aW9uKGUpe2Uuc2V0SGFuZGxlVG9wTGV2ZWwodi5oYW5kbGVUb3BMZXZlbCksdi5SZWFjdEV2
ZW50TGlzdGVuZXI9ZX19LHNldEVuYWJsZWQ6ZnVuY3Rpb24oZSl7di5SZWFjdEV2ZW50TGlzdGVu
ZXImJnYuUmVhY3RFdmVudExpc3RlbmVyLnNldEVuYWJsZWQoZSl9LGlzRW5hYmxlZDpmdW5jdGlv
bigpe3JldHVybiEoIXYuUmVhY3RFdmVudExpc3RlbmVyfHwhdi5SZWFjdEV2ZW50TGlzdGVuZXIu
aXNFbmFibGVkKCkpfSxsaXN0ZW5UbzpmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj10LG89cihuKSxp
PWEucmVnaXN0cmF0aW9uTmFtZURlcGVuZGVuY2llc1tlXSxzPTA7czxpLmxlbmd0aDtzKyspe3Zh
ciB1PWlbc107by5oYXNPd25Qcm9wZXJ0eSh1KSYmb1t1XXx8KCJ0b3BXaGVlbCI9PT11P2MoIndo
ZWVsIik/di5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudCgidG9wV2hlZWwiLCJ3
aGVlbCIsbik6YygibW91c2V3aGVlbCIpP3YuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVk
RXZlbnQoInRvcFdoZWVsIiwibW91c2V3aGVlbCIsbik6di5SZWFjdEV2ZW50TGlzdGVuZXIudHJh
cEJ1YmJsZWRFdmVudCgidG9wV2hlZWwiLCJET01Nb3VzZVNjcm9sbCIsbik6InRvcFNjcm9sbCI9
PT11P2MoInNjcm9sbCIsITApP3YuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBDYXB0dXJlZEV2ZW50
KCJ0b3BTY3JvbGwiLCJzY3JvbGwiLG4pOnYuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVk
RXZlbnQoInRvcFNjcm9sbCIsInNjcm9sbCIsdi5SZWFjdEV2ZW50TGlzdGVuZXIuV0lORE9XX0hB
TkRMRSk6InRvcEZvY3VzIj09PXV8fCJ0b3BCbHVyIj09PXU/KGMoImZvY3VzIiwhMCk/KHYuUmVh
Y3RFdmVudExpc3RlbmVyLnRyYXBDYXB0dXJlZEV2ZW50KCJ0b3BGb2N1cyIsImZvY3VzIixuKSx2
LlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQ2FwdHVyZWRFdmVudCgidG9wQmx1ciIsImJsdXIiLG4p
KTpjKCJmb2N1c2luIikmJih2LlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KCJ0
b3BGb2N1cyIsImZvY3VzaW4iLG4pLHYuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZl
bnQoInRvcEJsdXIiLCJmb2N1c291dCIsbikpLG8udG9wQmx1cj0hMCxvLnRvcEZvY3VzPSEwKTpo
Lmhhc093blByb3BlcnR5KHUpJiZ2LlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50
KHUsaFt1XSxuKSxvW3VdPSEwKX19LHRyYXBCdWJibGVkRXZlbnQ6ZnVuY3Rpb24oZSx0LG4pe3Jl
dHVybiB2LlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KGUsdCxuKX0sdHJhcENh
cHR1cmVkRXZlbnQ6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB2LlJlYWN0RXZlbnRMaXN0ZW5lci50
cmFwQ2FwdHVyZWRFdmVudChlLHQsbil9LHN1cHBvcnRzRXZlbnRQYWdlWFk6ZnVuY3Rpb24oKXtp
ZighZG9jdW1lbnQuY3JlYXRlRXZlbnQpcmV0dXJuITE7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRXZl
bnQoIk1vdXNlRXZlbnQiKTtyZXR1cm4gbnVsbCE9ZSYmInBhZ2VYImluIGV9LGVuc3VyZVNjcm9s
bFZhbHVlTW9uaXRvcmluZzpmdW5jdGlvbigpe2lmKHZvaWQgMD09PW8mJihvPXYuc3VwcG9ydHNF
dmVudFBhZ2VYWSgpKSwhbyYmIWQpe3ZhciBlPXUucmVmcmVzaFNjcm9sbFZhbHVlczt2LlJlYWN0
RXZlbnRMaXN0ZW5lci5tb25pdG9yU2Nyb2xsVmFsdWUoZSksZD0hMH19fSk7dC5leHBvcnRzPXZ9
LHsxMDY6MTA2LDEwODoxMDgsMTQwOjE0MCwxNzoxNyw1MDo1MCw5MDo5MH1dLDI2OltmdW5jdGlv
bihlLHQsbil7KGZ1bmN0aW9uKG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3Zh
ciBvPXZvaWQgMD09PWVbbl07bnVsbCE9dCYmbyYmKGVbbl09aSh0LCEwKSl9dmFyIG89ZSg2NCks
aT1lKDEwNyksYT0oZSgyMiksZSgxMTQpKSxzPWUoMTE1KTtlKDEzOSk7InVuZGVmaW5lZCIhPXR5
cGVvZiBuJiZuLmVudiwxO3ZhciB1PXtpbnN0YW50aWF0ZUNoaWxkcmVuOmZ1bmN0aW9uKGUsdCxu
LG8pe2lmKG51bGw9PWUpcmV0dXJuIG51bGw7dmFyIGk9e307cmV0dXJuIHMoZSxyLGkpLGl9LHVw
ZGF0ZUNoaWxkcmVuOmZ1bmN0aW9uKGUsdCxuLHIscyx1LGwsYyxwKXtpZih0fHxlKXt2YXIgZCxm
O2ZvcihkIGluIHQpaWYodC5oYXNPd25Qcm9wZXJ0eShkKSl7Zj1lJiZlW2RdO3ZhciBoPWYmJmYu
X2N1cnJlbnRFbGVtZW50LG09dFtkXTtpZihudWxsIT1mJiZhKGgsbSkpby5yZWNlaXZlQ29tcG9u
ZW50KGYsbSxzLGMpLHRbZF09ZjtlbHNle2YmJihyW2RdPW8uZ2V0SG9zdE5vZGUoZiksby51bm1v
dW50Q29tcG9uZW50KGYsITEpKTt2YXIgdj1pKG0sITApO3RbZF09djt2YXIgZz1vLm1vdW50Q29t
cG9uZW50KHYscyx1LGwsYyxwKTtuLnB1c2goZyl9fWZvcihkIGluIGUpIWUuaGFzT3duUHJvcGVy
dHkoZCl8fHQmJnQuaGFzT3duUHJvcGVydHkoZCl8fChmPWVbZF0scltkXT1vLmdldEhvc3ROb2Rl
KGYpLG8udW5tb3VudENvbXBvbmVudChmLCExKSl9fSx1bm1vdW50Q2hpbGRyZW46ZnVuY3Rpb24o
ZSx0KXtmb3IodmFyIG4gaW4gZSlpZihlLmhhc093blByb3BlcnR5KG4pKXt2YXIgcj1lW25dO28u
dW5tb3VudENvbXBvbmVudChyLHQpfX19O3QuZXhwb3J0cz11fSkuY2FsbCh0aGlzLHZvaWQgMCl9
LHsxMDc6MTA3LDExNDoxMTQsMTE1OjExNSwxMzk6MTM5LDIyOjIyLDY0OjY0fV0sMjc6W2Z1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSg4KSxvPWUoMzUpLGk9e3Byb2Nlc3NDaGls
ZHJlblVwZGF0ZXM6by5kYW5nZXJvdXNseVByb2Nlc3NDaGlsZHJlblVwZGF0ZXMscmVwbGFjZU5v
ZGVXaXRoTWFya3VwOnIuZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXB9O3QuZXhwb3J0
cz1pfSx7MzU6MzUsODo4fV0sMjg6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9
ZSgxMTEpLG89KGUoMTM0KSwhMSksaT17cmVwbGFjZU5vZGVXaXRoTWFya3VwOm51bGwscHJvY2Vz
c0NoaWxkcmVuVXBkYXRlczpudWxsLGluamVjdGlvbjp7aW5qZWN0RW52aXJvbm1lbnQ6ZnVuY3Rp
b24oZSl7bz9yKCIxMDQiKTp2b2lkIDAsaS5yZXBsYWNlTm9kZVdpdGhNYXJrdXA9ZS5yZXBsYWNl
Tm9kZVdpdGhNYXJrdXAsaS5wcm9jZXNzQ2hpbGRyZW5VcGRhdGVzPWUucHJvY2Vzc0NoaWxkcmVu
VXBkYXRlcyxvPSEwfX19O3QuZXhwb3J0cz1pfSx7MTExOjExMSwxMzQ6MTM0fV0sMjk6W2Z1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt9ZnVuY3Rpb24gbyhlLHQpe31m
dW5jdGlvbiBpKGUpe3JldHVybiEoIWUucHJvdG90eXBlfHwhZS5wcm90b3R5cGUuaXNSZWFjdENv
bXBvbmVudCl9ZnVuY3Rpb24gYShlKXtyZXR1cm4hKCFlLnByb3RvdHlwZXx8IWUucHJvdG90eXBl
LmlzUHVyZVJlYWN0Q29tcG9uZW50KX12YXIgcz1lKDExMSksdT1lKDE0MCksbD1lKDExOCksYz1l
KDI4KSxwPWUoMTE3KSxkPWUoNDkpLGY9ZSg1NiksaD0oZSg1NyksZSg2MCkpLG09ZSg2NCksdj1l
KDEyNyksZz0oZSgxMzQpLGUoMTM4KSkseT1lKDExNCksXz0oZSgxMzkpLHtJbXB1cmVDbGFzczow
LFB1cmVDbGFzczoxLFN0YXRlbGVzc0Z1bmN0aW9uYWw6Mn0pO3IucHJvdG90eXBlLnJlbmRlcj1m
dW5jdGlvbigpe3ZhciBlPWYuZ2V0KHRoaXMpLl9jdXJyZW50RWxlbWVudC50eXBlLHQ9ZSh0aGlz
LnByb3BzLHRoaXMuY29udGV4dCx0aGlzLnVwZGF0ZXIpO3JldHVybiBvKGUsdCksdH07dmFyIEM9
MSxiPXtjb25zdHJ1Y3Q6ZnVuY3Rpb24oZSl7dGhpcy5fY3VycmVudEVsZW1lbnQ9ZSx0aGlzLl9y
b290Tm9kZUlEPTAsdGhpcy5fY29tcG9zaXRlVHlwZT1udWxsLHRoaXMuX2luc3RhbmNlPW51bGws
dGhpcy5faG9zdFBhcmVudD1udWxsLHRoaXMuX2hvc3RDb250YWluZXJJbmZvPW51bGwsdGhpcy5f
dXBkYXRlQmF0Y2hOdW1iZXI9bnVsbCx0aGlzLl9wZW5kaW5nRWxlbWVudD1udWxsLHRoaXMuX3Bl
bmRpbmdTdGF0ZVF1ZXVlPW51bGwsdGhpcy5fcGVuZGluZ1JlcGxhY2VTdGF0ZT0hMSx0aGlzLl9w
ZW5kaW5nRm9yY2VVcGRhdGU9ITEsdGhpcy5fcmVuZGVyZWROb2RlVHlwZT1udWxsLHRoaXMuX3Jl
bmRlcmVkQ29tcG9uZW50PW51bGwsdGhpcy5fY29udGV4dD1udWxsLHRoaXMuX21vdW50T3JkZXI9
MCx0aGlzLl90b3BMZXZlbFdyYXBwZXI9bnVsbCx0aGlzLl9wZW5kaW5nQ2FsbGJhY2tzPW51bGws
dGhpcy5fY2FsbGVkQ29tcG9uZW50V2lsbFVubW91bnQ9ITF9LG1vdW50Q29tcG9uZW50OmZ1bmN0
aW9uKGUsdCxuLHUpe3RoaXMuX2NvbnRleHQ9dSx0aGlzLl9tb3VudE9yZGVyPUMrKyx0aGlzLl9o
b3N0UGFyZW50PXQsdGhpcy5faG9zdENvbnRhaW5lckluZm89bjt2YXIgYyxwPXRoaXMuX2N1cnJl
bnRFbGVtZW50LnByb3BzLGQ9dGhpcy5fcHJvY2Vzc0NvbnRleHQodSksaD10aGlzLl9jdXJyZW50
RWxlbWVudC50eXBlLG09ZS5nZXRVcGRhdGVRdWV1ZSgpLGc9aShoKSx5PXRoaXMuX2NvbnN0cnVj
dENvbXBvbmVudChnLHAsZCxtKTtnfHxudWxsIT15JiZudWxsIT15LnJlbmRlcj9hKGgpP3RoaXMu
X2NvbXBvc2l0ZVR5cGU9Xy5QdXJlQ2xhc3M6dGhpcy5fY29tcG9zaXRlVHlwZT1fLkltcHVyZUNs
YXNzOihjPXksbyhoLGMpLG51bGw9PT15fHx5PT09ITF8fGwuaXNWYWxpZEVsZW1lbnQoeSk/dm9p
ZCAwOnMoIjEwNSIsaC5kaXNwbGF5TmFtZXx8aC5uYW1lfHwiQ29tcG9uZW50IikseT1uZXcgciho
KSx0aGlzLl9jb21wb3NpdGVUeXBlPV8uU3RhdGVsZXNzRnVuY3Rpb25hbCkseS5wcm9wcz1wLHku
Y29udGV4dD1kLHkucmVmcz12LHkudXBkYXRlcj1tLHRoaXMuX2luc3RhbmNlPXksZi5zZXQoeSx0
aGlzKTt2YXIgYj15LnN0YXRlO3ZvaWQgMD09PWImJih5LnN0YXRlPWI9bnVsbCksIm9iamVjdCIh
PXR5cGVvZiBifHxBcnJheS5pc0FycmF5KGIpP3MoIjEwNiIsdGhpcy5nZXROYW1lKCl8fCJSZWFj
dENvbXBvc2l0ZUNvbXBvbmVudCIpOnZvaWQgMCx0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZT1udWxs
LHRoaXMuX3BlbmRpbmdSZXBsYWNlU3RhdGU9ITEsdGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRlPSEx
O3ZhciBFO3JldHVybiBFPXkudW5zdGFibGVfaGFuZGxlRXJyb3I/dGhpcy5wZXJmb3JtSW5pdGlh
bE1vdW50V2l0aEVycm9ySGFuZGxpbmcoYyx0LG4sZSx1KTp0aGlzLnBlcmZvcm1Jbml0aWFsTW91
bnQoYyx0LG4sZSx1KSx5LmNvbXBvbmVudERpZE1vdW50JiZlLmdldFJlYWN0TW91bnRSZWFkeSgp
LmVucXVldWUoeS5jb21wb25lbnREaWRNb3VudCx5KSxFfSxfY29uc3RydWN0Q29tcG9uZW50OmZ1
bmN0aW9uKGUsdCxuLHIpe3JldHVybiB0aGlzLl9jb25zdHJ1Y3RDb21wb25lbnRXaXRob3V0T3du
ZXIoZSx0LG4scil9LF9jb25zdHJ1Y3RDb21wb25lbnRXaXRob3V0T3duZXI6ZnVuY3Rpb24oZSx0
LG4scil7dmFyIG89dGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTtyZXR1cm4gZT9uZXcgbyh0LG4s
cik6byh0LG4scil9LHBlcmZvcm1Jbml0aWFsTW91bnRXaXRoRXJyb3JIYW5kbGluZzpmdW5jdGlv
bihlLHQsbixyLG8pe3ZhciBpLGE9ci5jaGVja3BvaW50KCk7dHJ5e2k9dGhpcy5wZXJmb3JtSW5p
dGlhbE1vdW50KGUsdCxuLHIsbyl9Y2F0Y2gocyl7ci5yb2xsYmFjayhhKSx0aGlzLl9pbnN0YW5j
ZS51bnN0YWJsZV9oYW5kbGVFcnJvcihzKSx0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZSYmKHRoaXMu
X2luc3RhbmNlLnN0YXRlPXRoaXMuX3Byb2Nlc3NQZW5kaW5nU3RhdGUodGhpcy5faW5zdGFuY2Uu
cHJvcHMsdGhpcy5faW5zdGFuY2UuY29udGV4dCkpLGE9ci5jaGVja3BvaW50KCksdGhpcy5fcmVu
ZGVyZWRDb21wb25lbnQudW5tb3VudENvbXBvbmVudCghMCksci5yb2xsYmFjayhhKSxpPXRoaXMu
cGVyZm9ybUluaXRpYWxNb3VudChlLHQsbixyLG8pfXJldHVybiBpfSxwZXJmb3JtSW5pdGlhbE1v
dW50OmZ1bmN0aW9uKGUsdCxuLHIsbyl7dmFyIGk9dGhpcy5faW5zdGFuY2UsYT0wO2kuY29tcG9u
ZW50V2lsbE1vdW50JiYoaS5jb21wb25lbnRXaWxsTW91bnQoKSx0aGlzLl9wZW5kaW5nU3RhdGVR
dWV1ZSYmKGkuc3RhdGU9dGhpcy5fcHJvY2Vzc1BlbmRpbmdTdGF0ZShpLnByb3BzLGkuY29udGV4
dCkpKSx2b2lkIDA9PT1lJiYoZT10aGlzLl9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnQoKSk7dmFy
IHM9aC5nZXRUeXBlKGUpO3RoaXMuX3JlbmRlcmVkTm9kZVR5cGU9czt2YXIgdT10aGlzLl9pbnN0
YW50aWF0ZVJlYWN0Q29tcG9uZW50KGUscyE9PWguRU1QVFkpO3RoaXMuX3JlbmRlcmVkQ29tcG9u
ZW50PXU7dmFyIGw9bS5tb3VudENvbXBvbmVudCh1LHIsdCxuLHRoaXMuX3Byb2Nlc3NDaGlsZENv
bnRleHQobyksYSk7cmV0dXJuIGx9LGdldEhvc3ROb2RlOmZ1bmN0aW9uKCl7cmV0dXJuIG0uZ2V0
SG9zdE5vZGUodGhpcy5fcmVuZGVyZWRDb21wb25lbnQpfSx1bm1vdW50Q29tcG9uZW50OmZ1bmN0
aW9uKGUpe2lmKHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50KXt2YXIgdD10aGlzLl9pbnN0YW5jZTtp
Zih0LmNvbXBvbmVudFdpbGxVbm1vdW50JiYhdC5fY2FsbGVkQ29tcG9uZW50V2lsbFVubW91bnQp
aWYodC5fY2FsbGVkQ29tcG9uZW50V2lsbFVubW91bnQ9ITAsZSl7dmFyIG49dGhpcy5nZXROYW1l
KCkrIi5jb21wb25lbnRXaWxsVW5tb3VudCgpIjtkLmludm9rZUd1YXJkZWRDYWxsYmFjayhuLHQu
Y29tcG9uZW50V2lsbFVubW91bnQuYmluZCh0KSl9ZWxzZSB0LmNvbXBvbmVudFdpbGxVbm1vdW50
KCk7dGhpcy5fcmVuZGVyZWRDb21wb25lbnQmJihtLnVubW91bnRDb21wb25lbnQodGhpcy5fcmVu
ZGVyZWRDb21wb25lbnQsZSksdGhpcy5fcmVuZGVyZWROb2RlVHlwZT1udWxsLHRoaXMuX3JlbmRl
cmVkQ29tcG9uZW50PW51bGwsdGhpcy5faW5zdGFuY2U9bnVsbCksdGhpcy5fcGVuZGluZ1N0YXRl
UXVldWU9bnVsbCx0aGlzLl9wZW5kaW5nUmVwbGFjZVN0YXRlPSExLHRoaXMuX3BlbmRpbmdGb3Jj
ZVVwZGF0ZT0hMSx0aGlzLl9wZW5kaW5nQ2FsbGJhY2tzPW51bGwsdGhpcy5fcGVuZGluZ0VsZW1l
bnQ9bnVsbCx0aGlzLl9jb250ZXh0PW51bGwsdGhpcy5fcm9vdE5vZGVJRD0wLHRoaXMuX3RvcExl
dmVsV3JhcHBlcj1udWxsLGYucmVtb3ZlKHQpfX0sX21hc2tDb250ZXh0OmZ1bmN0aW9uKGUpe3Zh
ciB0PXRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGUsbj10LmNvbnRleHRUeXBlcztpZighbilyZXR1
cm4gdjt2YXIgcj17fTtmb3IodmFyIG8gaW4gbilyW29dPWVbb107cmV0dXJuIHJ9LF9wcm9jZXNz
Q29udGV4dDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLl9tYXNrQ29udGV4dChlKTtyZXR1cm4gdH0s
X3Byb2Nlc3NDaGlsZENvbnRleHQ6ZnVuY3Rpb24oZSl7dmFyIHQsbj10aGlzLl9jdXJyZW50RWxl
bWVudC50eXBlLHI9dGhpcy5faW5zdGFuY2U7aWYoci5nZXRDaGlsZENvbnRleHQmJih0PXIuZ2V0
Q2hpbGRDb250ZXh0KCkpLHQpeyJvYmplY3QiIT10eXBlb2Ygbi5jaGlsZENvbnRleHRUeXBlcz9z
KCIxMDciLHRoaXMuZ2V0TmFtZSgpfHwiUmVhY3RDb21wb3NpdGVDb21wb25lbnQiKTp2b2lkIDA7
Zm9yKHZhciBvIGluIHQpbyBpbiBuLmNoaWxkQ29udGV4dFR5cGVzP3ZvaWQgMDpzKCIxMDgiLHRo
aXMuZ2V0TmFtZSgpfHwiUmVhY3RDb21wb3NpdGVDb21wb25lbnQiLG8pO3JldHVybiB1KHt9LGUs
dCl9cmV0dXJuIGV9LF9jaGVja0NvbnRleHRUeXBlczpmdW5jdGlvbihlLHQsbil7fSxyZWNlaXZl
Q29tcG9uZW50OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLl9jdXJyZW50RWxlbWVudCxvPXRo
aXMuX2NvbnRleHQ7dGhpcy5fcGVuZGluZ0VsZW1lbnQ9bnVsbCx0aGlzLnVwZGF0ZUNvbXBvbmVu
dCh0LHIsZSxvLG4pfSxwZXJmb3JtVXBkYXRlSWZOZWNlc3Nhcnk6ZnVuY3Rpb24oZSl7bnVsbCE9
dGhpcy5fcGVuZGluZ0VsZW1lbnQ/bS5yZWNlaXZlQ29tcG9uZW50KHRoaXMsdGhpcy5fcGVuZGlu
Z0VsZW1lbnQsZSx0aGlzLl9jb250ZXh0KTpudWxsIT09dGhpcy5fcGVuZGluZ1N0YXRlUXVldWV8
fHRoaXMuX3BlbmRpbmdGb3JjZVVwZGF0ZT90aGlzLnVwZGF0ZUNvbXBvbmVudChlLHRoaXMuX2N1
cnJlbnRFbGVtZW50LHRoaXMuX2N1cnJlbnRFbGVtZW50LHRoaXMuX2NvbnRleHQsdGhpcy5fY29u
dGV4dCk6dGhpcy5fdXBkYXRlQmF0Y2hOdW1iZXI9bnVsbH0sdXBkYXRlQ29tcG9uZW50OmZ1bmN0
aW9uKGUsdCxuLHIsbyl7dmFyIGk9dGhpcy5faW5zdGFuY2U7bnVsbD09aT9zKCIxMzYiLHRoaXMu
Z2V0TmFtZSgpfHwiUmVhY3RDb21wb3NpdGVDb21wb25lbnQiKTp2b2lkIDA7dmFyIGEsdT0hMTt0
aGlzLl9jb250ZXh0PT09bz9hPWkuY29udGV4dDooYT10aGlzLl9wcm9jZXNzQ29udGV4dChvKSx1
PSEwKTt2YXIgbD10LnByb3BzLGM9bi5wcm9wczt0IT09biYmKHU9ITApLHUmJmkuY29tcG9uZW50
V2lsbFJlY2VpdmVQcm9wcyYmaS5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKGMsYSk7dmFyIHA9
dGhpcy5fcHJvY2Vzc1BlbmRpbmdTdGF0ZShjLGEpLGQ9ITA7dGhpcy5fcGVuZGluZ0ZvcmNlVXBk
YXRlfHwoaS5zaG91bGRDb21wb25lbnRVcGRhdGU/ZD1pLnNob3VsZENvbXBvbmVudFVwZGF0ZShj
LHAsYSk6dGhpcy5fY29tcG9zaXRlVHlwZT09PV8uUHVyZUNsYXNzJiYoZD0hZyhsLGMpfHwhZyhp
LnN0YXRlLHApKSksdGhpcy5fdXBkYXRlQmF0Y2hOdW1iZXI9bnVsbCxkPyh0aGlzLl9wZW5kaW5n
Rm9yY2VVcGRhdGU9ITEsdGhpcy5fcGVyZm9ybUNvbXBvbmVudFVwZGF0ZShuLGMscCxhLGUsbykp
Oih0aGlzLl9jdXJyZW50RWxlbWVudD1uLHRoaXMuX2NvbnRleHQ9byxpLnByb3BzPWMsaS5zdGF0
ZT1wLGkuY29udGV4dD1hKX0sX3Byb2Nlc3NQZW5kaW5nU3RhdGU6ZnVuY3Rpb24oZSx0KXt2YXIg
bj10aGlzLl9pbnN0YW5jZSxyPXRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlLG89dGhpcy5fcGVuZGlu
Z1JlcGxhY2VTdGF0ZTtpZih0aGlzLl9wZW5kaW5nUmVwbGFjZVN0YXRlPSExLHRoaXMuX3BlbmRp
bmdTdGF0ZVF1ZXVlPW51bGwsIXIpcmV0dXJuIG4uc3RhdGU7aWYobyYmMT09PXIubGVuZ3RoKXJl
dHVybiByWzBdO2Zvcih2YXIgaT11KHt9LG8/clswXTpuLnN0YXRlKSxhPW8/MTowO2E8ci5sZW5n
dGg7YSsrKXt2YXIgcz1yW2FdO3UoaSwiZnVuY3Rpb24iPT10eXBlb2Ygcz9zLmNhbGwobixpLGUs
dCk6cyl9cmV0dXJuIGl9LF9wZXJmb3JtQ29tcG9uZW50VXBkYXRlOmZ1bmN0aW9uKGUsdCxuLHIs
byxpKXt2YXIgYSxzLHUsbD10aGlzLl9pbnN0YW5jZSxjPUJvb2xlYW4obC5jb21wb25lbnREaWRV
cGRhdGUpO2MmJihhPWwucHJvcHMscz1sLnN0YXRlLHU9bC5jb250ZXh0KSxsLmNvbXBvbmVudFdp
bGxVcGRhdGUmJmwuY29tcG9uZW50V2lsbFVwZGF0ZSh0LG4sciksdGhpcy5fY3VycmVudEVsZW1l
bnQ9ZSx0aGlzLl9jb250ZXh0PWksbC5wcm9wcz10LGwuc3RhdGU9bixsLmNvbnRleHQ9cix0aGlz
Ll91cGRhdGVSZW5kZXJlZENvbXBvbmVudChvLGkpLGMmJm8uZ2V0UmVhY3RNb3VudFJlYWR5KCku
ZW5xdWV1ZShsLmNvbXBvbmVudERpZFVwZGF0ZS5iaW5kKGwsYSxzLHUpLGwpfSxfdXBkYXRlUmVu
ZGVyZWRDb21wb25lbnQ6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLl9yZW5kZXJlZENvbXBvbmVu
dCxyPW4uX2N1cnJlbnRFbGVtZW50LG89dGhpcy5fcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50KCks
aT0wO2lmKHkocixvKSltLnJlY2VpdmVDb21wb25lbnQobixvLGUsdGhpcy5fcHJvY2Vzc0NoaWxk
Q29udGV4dCh0KSk7ZWxzZXt2YXIgYT1tLmdldEhvc3ROb2RlKG4pO20udW5tb3VudENvbXBvbmVu
dChuLCExKTt2YXIgcz1oLmdldFR5cGUobyk7dGhpcy5fcmVuZGVyZWROb2RlVHlwZT1zO3ZhciB1
PXRoaXMuX2luc3RhbnRpYXRlUmVhY3RDb21wb25lbnQobyxzIT09aC5FTVBUWSk7dGhpcy5fcmVu
ZGVyZWRDb21wb25lbnQ9dTt2YXIgbD1tLm1vdW50Q29tcG9uZW50KHUsZSx0aGlzLl9ob3N0UGFy
ZW50LHRoaXMuX2hvc3RDb250YWluZXJJbmZvLHRoaXMuX3Byb2Nlc3NDaGlsZENvbnRleHQodCks
aSk7dGhpcy5fcmVwbGFjZU5vZGVXaXRoTWFya3VwKGEsbCxuKX19LF9yZXBsYWNlTm9kZVdpdGhN
YXJrdXA6ZnVuY3Rpb24oZSx0LG4pe2MucmVwbGFjZU5vZGVXaXRoTWFya3VwKGUsdCxuKX0sX3Jl
bmRlclZhbGlkYXRlZENvbXBvbmVudFdpdGhvdXRPd25lck9yQ29udGV4dDpmdW5jdGlvbigpe3Zh
ciBlLHQ9dGhpcy5faW5zdGFuY2U7cmV0dXJuIGU9dC5yZW5kZXIoKX0sX3JlbmRlclZhbGlkYXRl
ZENvbXBvbmVudDpmdW5jdGlvbigpe3ZhciBlO2lmKHRoaXMuX2NvbXBvc2l0ZVR5cGUhPT1fLlN0
YXRlbGVzc0Z1bmN0aW9uYWwpe3AuY3VycmVudD10aGlzO3RyeXtlPXRoaXMuX3JlbmRlclZhbGlk
YXRlZENvbXBvbmVudFdpdGhvdXRPd25lck9yQ29udGV4dCgpfWZpbmFsbHl7cC5jdXJyZW50PW51
bGx9fWVsc2UgZT10aGlzLl9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnRXaXRob3V0T3duZXJPckNv
bnRleHQoKTtyZXR1cm4gbnVsbD09PWV8fGU9PT0hMXx8bC5pc1ZhbGlkRWxlbWVudChlKT92b2lk
IDA6cygiMTA5Iix0aGlzLmdldE5hbWUoKXx8IlJlYWN0Q29tcG9zaXRlQ29tcG9uZW50IiksZX0s
YXR0YWNoUmVmOmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5nZXRQdWJsaWNJbnN0YW5jZSgpO251
bGw9PW4/cygiMTEwIik6dm9pZCAwO3ZhciByPXQuZ2V0UHVibGljSW5zdGFuY2UoKSxvPW4ucmVm
cz09PXY/bi5yZWZzPXt9Om4ucmVmcztvW2VdPXJ9LGRldGFjaFJlZjpmdW5jdGlvbihlKXt2YXIg
dD10aGlzLmdldFB1YmxpY0luc3RhbmNlKCkucmVmcztkZWxldGUgdFtlXX0sZ2V0TmFtZTpmdW5j
dGlvbigpe3ZhciBlPXRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGUsdD10aGlzLl9pbnN0YW5jZSYm
dGhpcy5faW5zdGFuY2UuY29uc3RydWN0b3I7cmV0dXJuIGUuZGlzcGxheU5hbWV8fHQmJnQuZGlz
cGxheU5hbWV8fGUubmFtZXx8dCYmdC5uYW1lfHxudWxsfSxnZXRQdWJsaWNJbnN0YW5jZTpmdW5j
dGlvbigpe3ZhciBlPXRoaXMuX2luc3RhbmNlO3JldHVybiB0aGlzLl9jb21wb3NpdGVUeXBlPT09
Xy5TdGF0ZWxlc3NGdW5jdGlvbmFsP251bGw6ZX0sX2luc3RhbnRpYXRlUmVhY3RDb21wb25lbnQ6
bnVsbH07dC5leHBvcnRzPWJ9LHsxMTE6MTExLDExNDoxMTQsMTE3OjExNywxMTg6MTE4LDEyNzox
MjcsMTM0OjEzNCwxMzg6MTM4LDEzOToxMzksMTQwOjE0MCwyODoyOCw0OTo0OSw1Njo1Niw1Nzo1
Nyw2MDo2MCw2NDo2NH1dLDMwOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IHIoZSl7aWYoZSl7dmFyIHQ9ZS5fY3VycmVudEVsZW1lbnQuX293bmVyfHxudWxsO2lmKHQpe3Zh
ciBuPXQuZ2V0TmFtZSgpO2lmKG4pcmV0dXJuIiBUaGlzIERPTSBub2RlIHdhcyByZW5kZXJlZCBi
eSBgIituKyJgLiJ9fXJldHVybiIifWZ1bmN0aW9uIG8oZSx0KXt0JiYoWFtlLl90YWddJiYobnVs
bCE9dC5jaGlsZHJlbnx8bnVsbCE9dC5kYW5nZXJvdXNseVNldElubmVySFRNTD9tKCIxMzciLGUu
X3RhZyxlLl9jdXJyZW50RWxlbWVudC5fb3duZXI/IiBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBv
ZiAiK2UuX2N1cnJlbnRFbGVtZW50Ll9vd25lci5nZXROYW1lKCkrIi4iOiIiKTp2b2lkIDApLG51
bGwhPXQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwmJihudWxsIT10LmNoaWxkcmVuP20oIjYwIik6
dm9pZCAwLCJvYmplY3QiPT10eXBlb2YgdC5kYW5nZXJvdXNseVNldElubmVySFRNTCYmVyBpbiB0
LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MP3ZvaWQgMDptKCI2MSIpKSxudWxsIT10LnN0eWxlJiYi
b2JqZWN0IiE9dHlwZW9mIHQuc3R5bGU/bSgiNjIiLHIoZSkpOnZvaWQgMCl9ZnVuY3Rpb24gaShl
LHQsbixyKXtpZighKHIgaW5zdGFuY2VvZiBSKSl7dmFyIG89ZS5faG9zdENvbnRhaW5lckluZm8s
aT1vLl9ub2RlJiZvLl9ub2RlLm5vZGVUeXBlPT09cSxzPWk/by5fbm9kZTpvLl9vd25lckRvY3Vt
ZW50O0YodCxzKSxyLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoYSx7aW5zdDplLHJlZ2lz
dHJhdGlvbk5hbWU6dCxsaXN0ZW5lcjpufSl9fWZ1bmN0aW9uIGEoKXt2YXIgZT10aGlzO3gucHV0
TGlzdGVuZXIoZS5pbnN0LGUucmVnaXN0cmF0aW9uTmFtZSxlLmxpc3RlbmVyKX1mdW5jdGlvbiBz
KCl7dmFyIGU9dGhpcztTLnBvc3RNb3VudFdyYXBwZXIoZSl9ZnVuY3Rpb24gdSgpe3ZhciBlPXRo
aXM7Ty5wb3N0TW91bnRXcmFwcGVyKGUpfWZ1bmN0aW9uIGwoKXt2YXIgZT10aGlzO04ucG9zdE1v
dW50V3JhcHBlcihlKX1mdW5jdGlvbiBjKCl7dmFyIGU9dGhpcztlLl9yb290Tm9kZUlEP3ZvaWQg
MDptKCI2MyIpO3ZhciB0PVUoZSk7c3dpdGNoKHQ/dm9pZCAwOm0oIjY0IiksZS5fdGFnKXtjYXNl
ImlmcmFtZSI6Y2FzZSJvYmplY3QiOmUuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnM9W2sudHJhcEJ1
YmJsZWRFdmVudCgidG9wTG9hZCIsImxvYWQiLHQpXTticmVhaztjYXNlInZpZGVvIjpjYXNlImF1
ZGlvIjplLl93cmFwcGVyU3RhdGUubGlzdGVuZXJzPVtdO2Zvcih2YXIgbiBpbiBLKUsuaGFzT3du
UHJvcGVydHkobikmJmUuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnMucHVzaChrLnRyYXBCdWJibGVk
RXZlbnQobixLW25dLHQpKTticmVhaztjYXNlInNvdXJjZSI6ZS5fd3JhcHBlclN0YXRlLmxpc3Rl
bmVycz1bay50cmFwQnViYmxlZEV2ZW50KCJ0b3BFcnJvciIsImVycm9yIix0KV07YnJlYWs7Y2Fz
ZSJpbWciOmUuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnM9W2sudHJhcEJ1YmJsZWRFdmVudCgidG9w
RXJyb3IiLCJlcnJvciIsdCksay50cmFwQnViYmxlZEV2ZW50KCJ0b3BMb2FkIiwibG9hZCIsdCld
O2JyZWFrO2Nhc2UiZm9ybSI6ZS5fd3JhcHBlclN0YXRlLmxpc3RlbmVycz1bay50cmFwQnViYmxl
ZEV2ZW50KCJ0b3BSZXNldCIsInJlc2V0Iix0KSxrLnRyYXBCdWJibGVkRXZlbnQoInRvcFN1Ym1p
dCIsInN1Ym1pdCIsdCldO2JyZWFrO2Nhc2UiaW5wdXQiOmNhc2Uic2VsZWN0IjpjYXNlInRleHRh
cmVhIjplLl93cmFwcGVyU3RhdGUubGlzdGVuZXJzPVtrLnRyYXBCdWJibGVkRXZlbnQoInRvcElu
dmFsaWQiLCJpbnZhbGlkIix0KV19fWZ1bmN0aW9uIHAoKXtNLnBvc3RVcGRhdGVXcmFwcGVyKHRo
aXMpfWZ1bmN0aW9uIGQoZSl7JC5jYWxsKEcsZSl8fChRLnRlc3QoZSk/dm9pZCAwOm0oIjY1Iixl
KSxHW2VdPSEwKX1mdW5jdGlvbiBmKGUsdCl7cmV0dXJuIGUuaW5kZXhPZigiLSIpPj0wfHxudWxs
IT10LmlzfWZ1bmN0aW9uIGgoZSl7dmFyIHQ9ZS50eXBlO2QodCksdGhpcy5fY3VycmVudEVsZW1l
bnQ9ZSx0aGlzLl90YWc9dC50b0xvd2VyQ2FzZSgpLHRoaXMuX25hbWVzcGFjZVVSST1udWxsLHRo
aXMuX3JlbmRlcmVkQ2hpbGRyZW49bnVsbCx0aGlzLl9wcmV2aW91c1N0eWxlPW51bGwsdGhpcy5f
cHJldmlvdXNTdHlsZUNvcHk9bnVsbCx0aGlzLl9ob3N0Tm9kZT1udWxsLHRoaXMuX2hvc3RQYXJl
bnQ9bnVsbCx0aGlzLl9yb290Tm9kZUlEPTAsdGhpcy5fZG9tSUQ9MCx0aGlzLl9ob3N0Q29udGFp
bmVySW5mbz1udWxsLHRoaXMuX3dyYXBwZXJTdGF0ZT1udWxsLHRoaXMuX3RvcExldmVsV3JhcHBl
cj1udWxsLHRoaXMuX2ZsYWdzPTB9dmFyIG09ZSgxMTEpLHY9ZSgxNDApLGc9ZSgyKSx5PWUoNSks
Xz1lKDkpLEM9ZSgxMCksYj1lKDExKSxFPWUoMTIpLHg9ZSgxNiksdz1lKDE3KSxrPWUoMjUpLFQ9
ZSgzMSksUD1lKDMyKSxTPWUoMzYpLE49ZSgzNyksTT1lKDM4KSxPPWUoNDMpLEk9KGUoNTcpLGUo
NTkpKSxSPWUoNjgpLEE9KGUoMTI2KSxlKDk1KSksRD0oZSgxMzQpLGUoMTA4KSxlKDEzOCksZSgx
MTYpLGUoMTM5KSxUKSxMPXguZGVsZXRlTGlzdGVuZXIsVT1QLmdldE5vZGVGcm9tSW5zdGFuY2Us
Rj1rLmxpc3RlblRvLGo9dy5yZWdpc3RyYXRpb25OYW1lTW9kdWxlcyxWPXtzdHJpbmc6ITAsbnVt
YmVyOiEwfSxCPSJzdHlsZSIsVz0iX19odG1sIixIPXtjaGlsZHJlbjpudWxsLGRhbmdlcm91c2x5
U2V0SW5uZXJIVE1MOm51bGwsc3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nOm51bGx9LHE9
MTEsSz17dG9wQWJvcnQ6ImFib3J0Iix0b3BDYW5QbGF5OiJjYW5wbGF5Iix0b3BDYW5QbGF5VGhy
b3VnaDoiY2FucGxheXRocm91Z2giLHRvcER1cmF0aW9uQ2hhbmdlOiJkdXJhdGlvbmNoYW5nZSIs
dG9wRW1wdGllZDoiZW1wdGllZCIsdG9wRW5jcnlwdGVkOiJlbmNyeXB0ZWQiLHRvcEVuZGVkOiJl
bmRlZCIsdG9wRXJyb3I6ImVycm9yIix0b3BMb2FkZWREYXRhOiJsb2FkZWRkYXRhIix0b3BMb2Fk
ZWRNZXRhZGF0YToibG9hZGVkbWV0YWRhdGEiLHRvcExvYWRTdGFydDoibG9hZHN0YXJ0Iix0b3BQ
YXVzZToicGF1c2UiLHRvcFBsYXk6InBsYXkiLHRvcFBsYXlpbmc6InBsYXlpbmciLHRvcFByb2dy
ZXNzOiJwcm9ncmVzcyIsdG9wUmF0ZUNoYW5nZToicmF0ZWNoYW5nZSIsdG9wU2Vla2VkOiJzZWVr
ZWQiLHRvcFNlZWtpbmc6InNlZWtpbmciLHRvcFN0YWxsZWQ6InN0YWxsZWQiLHRvcFN1c3BlbmQ6
InN1c3BlbmQiLHRvcFRpbWVVcGRhdGU6InRpbWV1cGRhdGUiLHRvcFZvbHVtZUNoYW5nZToidm9s
dW1lY2hhbmdlIix0b3BXYWl0aW5nOiJ3YWl0aW5nIn0sej17YXJlYTohMCxiYXNlOiEwLGJyOiEw
LGNvbDohMCxlbWJlZDohMCxocjohMCxpbWc6ITAsaW5wdXQ6ITAsa2V5Z2VuOiEwLGxpbms6ITAs
bWV0YTohMCxwYXJhbTohMCxzb3VyY2U6ITAsdHJhY2s6ITAsd2JyOiEwfSxZPXtsaXN0aW5nOiEw
LHByZTohMCx0ZXh0YXJlYTohMH0sWD12KHttZW51aXRlbTohMH0seiksUT0vXlthLXpBLVpdW2Et
ekEtWjpfXC5cLVxkXSokLyxHPXt9LCQ9e30uaGFzT3duUHJvcGVydHksWj0xO2guZGlzcGxheU5h
bWU9IlJlYWN0RE9NQ29tcG9uZW50IixoLk1peGluPXttb3VudENvbXBvbmVudDpmdW5jdGlvbihl
LHQsbixyKXt0aGlzLl9yb290Tm9kZUlEPVorKyx0aGlzLl9kb21JRD1uLl9pZENvdW50ZXIrKyx0
aGlzLl9ob3N0UGFyZW50PXQsdGhpcy5faG9zdENvbnRhaW5lckluZm89bjt2YXIgaT10aGlzLl9j
dXJyZW50RWxlbWVudC5wcm9wcztzd2l0Y2godGhpcy5fdGFnKXtjYXNlImF1ZGlvIjpjYXNlImZv
cm0iOmNhc2UiaWZyYW1lIjpjYXNlImltZyI6Y2FzZSJsaW5rIjpjYXNlIm9iamVjdCI6Y2FzZSJz
b3VyY2UiOmNhc2UidmlkZW8iOnRoaXMuX3dyYXBwZXJTdGF0ZT17bGlzdGVuZXJzOm51bGx9LGUu
Z2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShjLHRoaXMpO2JyZWFrO2Nhc2UiaW5wdXQiOlMu
bW91bnRXcmFwcGVyKHRoaXMsaSx0KSxpPVMuZ2V0SG9zdFByb3BzKHRoaXMsaSksZS5nZXRSZWFj
dE1vdW50UmVhZHkoKS5lbnF1ZXVlKGMsdGhpcyk7YnJlYWs7Y2FzZSJvcHRpb24iOk4ubW91bnRX
cmFwcGVyKHRoaXMsaSx0KSxpPU4uZ2V0SG9zdFByb3BzKHRoaXMsaSk7YnJlYWs7Y2FzZSJzZWxl
Y3QiOk0ubW91bnRXcmFwcGVyKHRoaXMsaSx0KSxpPU0uZ2V0SG9zdFByb3BzKHRoaXMsaSksZS5n
ZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGMsdGhpcyk7YnJlYWs7Y2FzZSJ0ZXh0YXJlYSI6
Ty5tb3VudFdyYXBwZXIodGhpcyxpLHQpLGk9Ty5nZXRIb3N0UHJvcHModGhpcyxpKSxlLmdldFJl
YWN0TW91bnRSZWFkeSgpLmVucXVldWUoYyx0aGlzKX1vKHRoaXMsaSk7dmFyIGEscDtudWxsIT10
PyhhPXQuX25hbWVzcGFjZVVSSSxwPXQuX3RhZyk6bi5fdGFnJiYoYT1uLl9uYW1lc3BhY2VVUkks
cD1uLl90YWcpLChudWxsPT1hfHxhPT09Qy5zdmcmJiJmb3JlaWdub2JqZWN0Ij09PXApJiYoYT1D
Lmh0bWwpLGE9PT1DLmh0bWwmJigic3ZnIj09PXRoaXMuX3RhZz9hPUMuc3ZnOiJtYXRoIj09PXRo
aXMuX3RhZyYmKGE9Qy5tYXRobWwpKSx0aGlzLl9uYW1lc3BhY2VVUkk9YTt2YXIgZDtpZihlLnVz
ZUNyZWF0ZUVsZW1lbnQpe3ZhciBmLGg9bi5fb3duZXJEb2N1bWVudDtpZihhPT09Qy5odG1sKWlm
KCJzY3JpcHQiPT09dGhpcy5fdGFnKXt2YXIgbT1oLmNyZWF0ZUVsZW1lbnQoImRpdiIpLHY9dGhp
cy5fY3VycmVudEVsZW1lbnQudHlwZTttLmlubmVySFRNTD0iPCIrdisiPjwvIit2KyI+IixmPW0u
cmVtb3ZlQ2hpbGQobS5maXJzdENoaWxkKX1lbHNlIGY9aS5pcz9oLmNyZWF0ZUVsZW1lbnQodGhp
cy5fY3VycmVudEVsZW1lbnQudHlwZSxpLmlzKTpoLmNyZWF0ZUVsZW1lbnQodGhpcy5fY3VycmVu
dEVsZW1lbnQudHlwZSk7ZWxzZSBmPWguY3JlYXRlRWxlbWVudE5TKGEsdGhpcy5fY3VycmVudEVs
ZW1lbnQudHlwZSk7UC5wcmVjYWNoZU5vZGUodGhpcyxmKSx0aGlzLl9mbGFnc3w9RC5oYXNDYWNo
ZWRDaGlsZE5vZGVzLHRoaXMuX2hvc3RQYXJlbnR8fEUuc2V0QXR0cmlidXRlRm9yUm9vdChmKSx0
aGlzLl91cGRhdGVET01Qcm9wZXJ0aWVzKG51bGwsaSxlKTt2YXIgeT1fKGYpO3RoaXMuX2NyZWF0
ZUluaXRpYWxDaGlsZHJlbihlLGkscix5KSxkPXl9ZWxzZXt2YXIgYj10aGlzLl9jcmVhdGVPcGVu
VGFnTWFya3VwQW5kUHV0TGlzdGVuZXJzKGUsaSkseD10aGlzLl9jcmVhdGVDb250ZW50TWFya3Vw
KGUsaSxyKTtkPSF4JiZ6W3RoaXMuX3RhZ10/YisiLz4iOmIrIj4iK3grIjwvIit0aGlzLl9jdXJy
ZW50RWxlbWVudC50eXBlKyI+In1zd2l0Y2godGhpcy5fdGFnKXtjYXNlImlucHV0IjplLmdldFJl
YWN0TW91bnRSZWFkeSgpLmVucXVldWUocyx0aGlzKSxpLmF1dG9Gb2N1cyYmZS5nZXRSZWFjdE1v
dW50UmVhZHkoKS5lbnF1ZXVlKGcuZm9jdXNET01Db21wb25lbnQsdGhpcyk7YnJlYWs7Y2FzZSJ0
ZXh0YXJlYSI6ZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHUsdGhpcyksaS5hdXRvRm9j
dXMmJmUuZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShnLmZvY3VzRE9NQ29tcG9uZW50LHRo
aXMpO2JyZWFrO2Nhc2Uic2VsZWN0IjppLmF1dG9Gb2N1cyYmZS5nZXRSZWFjdE1vdW50UmVhZHko
KS5lbnF1ZXVlKGcuZm9jdXNET01Db21wb25lbnQsdGhpcyk7YnJlYWs7Y2FzZSJidXR0b24iOmku
YXV0b0ZvY3VzJiZlLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoZy5mb2N1c0RPTUNvbXBv
bmVudCx0aGlzKTticmVhaztjYXNlIm9wdGlvbiI6ZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1
ZXVlKGwsdGhpcyl9cmV0dXJuIGR9LF9jcmVhdGVPcGVuVGFnTWFya3VwQW5kUHV0TGlzdGVuZXJz
OmZ1bmN0aW9uKGUsdCl7dmFyIG49IjwiK3RoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGU7Zm9yKHZh
ciByIGluIHQpaWYodC5oYXNPd25Qcm9wZXJ0eShyKSl7dmFyIG89dFtyXTtpZihudWxsIT1vKWlm
KGouaGFzT3duUHJvcGVydHkocikpbyYmaSh0aGlzLHIsbyxlKTtlbHNle3I9PT1CJiYobyYmKG89
dGhpcy5fcHJldmlvdXNTdHlsZUNvcHk9dih7fSx0LnN0eWxlKSksbz15LmNyZWF0ZU1hcmt1cEZv
clN0eWxlcyhvLHRoaXMpKTt2YXIgYT1udWxsO251bGwhPXRoaXMuX3RhZyYmZih0aGlzLl90YWcs
dCk/SC5oYXNPd25Qcm9wZXJ0eShyKXx8KGE9RS5jcmVhdGVNYXJrdXBGb3JDdXN0b21BdHRyaWJ1
dGUocixvKSk6YT1FLmNyZWF0ZU1hcmt1cEZvclByb3BlcnR5KHIsbyksYSYmKG4rPSIgIithKX19
cmV0dXJuIGUucmVuZGVyVG9TdGF0aWNNYXJrdXA/bjoodGhpcy5faG9zdFBhcmVudHx8KG4rPSIg
IitFLmNyZWF0ZU1hcmt1cEZvclJvb3QoKSksbis9IiAiK0UuY3JlYXRlTWFya3VwRm9ySUQodGhp
cy5fZG9tSUQpKX0sX2NyZWF0ZUNvbnRlbnRNYXJrdXA6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPSIi
LG89dC5kYW5nZXJvdXNseVNldElubmVySFRNTDtpZihudWxsIT1vKW51bGwhPW8uX19odG1sJiYo
cj1vLl9faHRtbCk7ZWxzZXt2YXIgaT1WW3R5cGVvZiB0LmNoaWxkcmVuXT90LmNoaWxkcmVuOm51
bGwsYT1udWxsIT1pP251bGw6dC5jaGlsZHJlbjtpZihudWxsIT1pKXI9QShpKTtlbHNlIGlmKG51
bGwhPWEpe3ZhciBzPXRoaXMubW91bnRDaGlsZHJlbihhLGUsbik7cj1zLmpvaW4oIiIpfX1yZXR1
cm4gWVt0aGlzLl90YWddJiYiXG4iPT09ci5jaGFyQXQoMCk/IlxuIityOnJ9LF9jcmVhdGVJbml0
aWFsQ2hpbGRyZW46ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89dC5kYW5nZXJvdXNseVNldElubmVy
SFRNTDtpZihudWxsIT1vKW51bGwhPW8uX19odG1sJiZfLnF1ZXVlSFRNTChyLG8uX19odG1sKTtl
bHNle3ZhciBpPVZbdHlwZW9mIHQuY2hpbGRyZW5dP3QuY2hpbGRyZW46bnVsbCxhPW51bGwhPWk/
bnVsbDp0LmNoaWxkcmVuO2lmKG51bGwhPWkpXy5xdWV1ZVRleHQocixpKTtlbHNlIGlmKG51bGwh
PWEpZm9yKHZhciBzPXRoaXMubW91bnRDaGlsZHJlbihhLGUsbiksdT0wO3U8cy5sZW5ndGg7dSsr
KV8ucXVldWVDaGlsZChyLHNbdV0pfX0scmVjZWl2ZUNvbXBvbmVudDpmdW5jdGlvbihlLHQsbil7
dmFyIHI9dGhpcy5fY3VycmVudEVsZW1lbnQ7dGhpcy5fY3VycmVudEVsZW1lbnQ9ZSx0aGlzLnVw
ZGF0ZUNvbXBvbmVudCh0LHIsZSxuKX0sdXBkYXRlQ29tcG9uZW50OmZ1bmN0aW9uKGUsdCxuLHIp
e3ZhciBpPXQucHJvcHMsYT10aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wcztzd2l0Y2godGhpcy5f
dGFnKXtjYXNlImlucHV0IjppPVMuZ2V0SG9zdFByb3BzKHRoaXMsaSksYT1TLmdldEhvc3RQcm9w
cyh0aGlzLGEpO2JyZWFrO2Nhc2Uib3B0aW9uIjppPU4uZ2V0SG9zdFByb3BzKHRoaXMsaSksYT1O
LmdldEhvc3RQcm9wcyh0aGlzLGEpO2JyZWFrO2Nhc2Uic2VsZWN0IjppPU0uZ2V0SG9zdFByb3Bz
KHRoaXMsaSksYT1NLmdldEhvc3RQcm9wcyh0aGlzLGEpO2JyZWFrO2Nhc2UidGV4dGFyZWEiOmk9
Ty5nZXRIb3N0UHJvcHModGhpcyxpKSxhPU8uZ2V0SG9zdFByb3BzKHRoaXMsYSl9c3dpdGNoKG8o
dGhpcyxhKSx0aGlzLl91cGRhdGVET01Qcm9wZXJ0aWVzKGksYSxlKSx0aGlzLl91cGRhdGVET01D
aGlsZHJlbihpLGEsZSxyKSx0aGlzLl90YWcpe2Nhc2UiaW5wdXQiOlMudXBkYXRlV3JhcHBlcih0
aGlzKTticmVhaztjYXNlInRleHRhcmVhIjpPLnVwZGF0ZVdyYXBwZXIodGhpcyk7YnJlYWs7Y2Fz
ZSJzZWxlY3QiOmUuZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShwLHRoaXMpfX0sX3VwZGF0
ZURPTVByb3BlcnRpZXM6ZnVuY3Rpb24oZSx0LG4pe3ZhciByLG8sYTtmb3IociBpbiBlKWlmKCF0
Lmhhc093blByb3BlcnR5KHIpJiZlLmhhc093blByb3BlcnR5KHIpJiZudWxsIT1lW3JdKWlmKHI9
PT1CKXt2YXIgcz10aGlzLl9wcmV2aW91c1N0eWxlQ29weTtmb3IobyBpbiBzKXMuaGFzT3duUHJv
cGVydHkobykmJihhPWF8fHt9LGFbb109IiIpO3RoaXMuX3ByZXZpb3VzU3R5bGVDb3B5PW51bGx9
ZWxzZSBqLmhhc093blByb3BlcnR5KHIpP2Vbcl0mJkwodGhpcyxyKTpmKHRoaXMuX3RhZyxlKT9I
Lmhhc093blByb3BlcnR5KHIpfHxFLmRlbGV0ZVZhbHVlRm9yQXR0cmlidXRlKFUodGhpcykscik6
KGIucHJvcGVydGllc1tyXXx8Yi5pc0N1c3RvbUF0dHJpYnV0ZShyKSkmJkUuZGVsZXRlVmFsdWVG
b3JQcm9wZXJ0eShVKHRoaXMpLHIpO2ZvcihyIGluIHQpe3ZhciB1PXRbcl0sbD1yPT09Qj90aGlz
Ll9wcmV2aW91c1N0eWxlQ29weTpudWxsIT1lP2Vbcl06dm9pZCAwO2lmKHQuaGFzT3duUHJvcGVy
dHkocikmJnUhPT1sJiYobnVsbCE9dXx8bnVsbCE9bCkpaWYocj09PUIpaWYodT91PXRoaXMuX3By
ZXZpb3VzU3R5bGVDb3B5PXYoe30sdSk6dGhpcy5fcHJldmlvdXNTdHlsZUNvcHk9bnVsbCxsKXtm
b3IobyBpbiBsKSFsLmhhc093blByb3BlcnR5KG8pfHx1JiZ1Lmhhc093blByb3BlcnR5KG8pfHwo
YT1hfHx7fSxhW29dPSIiKTtmb3IobyBpbiB1KXUuaGFzT3duUHJvcGVydHkobykmJmxbb10hPT11
W29dJiYoYT1hfHx7fSxhW29dPXVbb10pfWVsc2UgYT11O2Vsc2UgaWYoai5oYXNPd25Qcm9wZXJ0
eShyKSl1P2kodGhpcyxyLHUsbik6bCYmTCh0aGlzLHIpO2Vsc2UgaWYoZih0aGlzLl90YWcsdCkp
SC5oYXNPd25Qcm9wZXJ0eShyKXx8RS5zZXRWYWx1ZUZvckF0dHJpYnV0ZShVKHRoaXMpLHIsdSk7
ZWxzZSBpZihiLnByb3BlcnRpZXNbcl18fGIuaXNDdXN0b21BdHRyaWJ1dGUocikpe3ZhciBjPVUo
dGhpcyk7bnVsbCE9dT9FLnNldFZhbHVlRm9yUHJvcGVydHkoYyxyLHUpOkUuZGVsZXRlVmFsdWVG
b3JQcm9wZXJ0eShjLHIpfX1hJiZ5LnNldFZhbHVlRm9yU3R5bGVzKFUodGhpcyksYSx0aGlzKX0s
X3VwZGF0ZURPTUNoaWxkcmVuOmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvPVZbdHlwZW9mIGUuY2hp
bGRyZW5dP2UuY2hpbGRyZW46bnVsbCxpPVZbdHlwZW9mIHQuY2hpbGRyZW5dP3QuY2hpbGRyZW46
bnVsbCxhPWUuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwmJmUuZGFuZ2Vyb3VzbHlTZXRJbm5lckhU
TUwuX19odG1sLHM9dC5kYW5nZXJvdXNseVNldElubmVySFRNTCYmdC5kYW5nZXJvdXNseVNldElu
bmVySFRNTC5fX2h0bWwsdT1udWxsIT1vP251bGw6ZS5jaGlsZHJlbixsPW51bGwhPWk/bnVsbDp0
LmNoaWxkcmVuLGM9bnVsbCE9b3x8bnVsbCE9YSxwPW51bGwhPWl8fG51bGwhPXM7bnVsbCE9dSYm
bnVsbD09bD90aGlzLnVwZGF0ZUNoaWxkcmVuKG51bGwsbixyKTpjJiYhcCYmdGhpcy51cGRhdGVU
ZXh0Q29udGVudCgiIiksbnVsbCE9aT9vIT09aSYmdGhpcy51cGRhdGVUZXh0Q29udGVudCgiIitp
KTpudWxsIT1zP2EhPT1zJiZ0aGlzLnVwZGF0ZU1hcmt1cCgiIitzKTpudWxsIT1sJiZ0aGlzLnVw
ZGF0ZUNoaWxkcmVuKGwsbixyKX0sZ2V0SG9zdE5vZGU6ZnVuY3Rpb24oKXtyZXR1cm4gVSh0aGlz
KX0sdW5tb3VudENvbXBvbmVudDpmdW5jdGlvbihlKXtzd2l0Y2godGhpcy5fdGFnKXtjYXNlImF1
ZGlvIjpjYXNlImZvcm0iOmNhc2UiaWZyYW1lIjpjYXNlImltZyI6Y2FzZSJsaW5rIjpjYXNlIm9i
amVjdCI6Y2FzZSJzb3VyY2UiOmNhc2UidmlkZW8iOnZhciB0PXRoaXMuX3dyYXBwZXJTdGF0ZS5s
aXN0ZW5lcnM7aWYodClmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl0W25dLnJlbW92ZSgpO2Jy
ZWFrO2Nhc2UiaHRtbCI6Y2FzZSJoZWFkIjpjYXNlImJvZHkiOm0oIjY2Iix0aGlzLl90YWcpfXRo
aXMudW5tb3VudENoaWxkcmVuKGUpLFAudW5jYWNoZU5vZGUodGhpcykseC5kZWxldGVBbGxMaXN0
ZW5lcnModGhpcyksdGhpcy5fcm9vdE5vZGVJRD0wLHRoaXMuX2RvbUlEPTAsdGhpcy5fd3JhcHBl
clN0YXRlPW51bGx9LGdldFB1YmxpY0luc3RhbmNlOmZ1bmN0aW9uKCl7cmV0dXJuIFUodGhpcyl9
fSx2KGgucHJvdG90eXBlLGguTWl4aW4sSS5NaXhpbiksdC5leHBvcnRzPWh9LHsxMDoxMCwxMDg6
MTA4LDExOjExLDExMToxMTEsMTE2OjExNiwxMjoxMiwxMjY6MTI2LDEzNDoxMzQsMTM4OjEzOCwx
Mzk6MTM5LDE0MDoxNDAsMTY6MTYsMTc6MTcsMjoyLDI1OjI1LDMxOjMxLDMyOjMyLDM2OjM2LDM3
OjM3LDM4OjM4LDQzOjQzLDU6NSw1Nzo1Nyw1OTo1OSw2ODo2OCw5OjksOTU6OTV9XSwzMTpbZnVu
Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj17aGFzQ2FjaGVkQ2hpbGROb2RlczoxfTt0
LmV4cG9ydHM9cn0se31dLDMyOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IHIoZSl7Zm9yKHZhciB0O3Q9ZS5fcmVuZGVyZWRDb21wb25lbnQ7KWU9dDtyZXR1cm4gZX1mdW5j
dGlvbiBvKGUsdCl7dmFyIG49cihlKTtuLl9ob3N0Tm9kZT10LHRbbV09bn1mdW5jdGlvbiBpKGUp
e3ZhciB0PWUuX2hvc3ROb2RlO3QmJihkZWxldGUgdFttXSxlLl9ob3N0Tm9kZT1udWxsKX1mdW5j
dGlvbiBhKGUsdCl7aWYoIShlLl9mbGFncyZoLmhhc0NhY2hlZENoaWxkTm9kZXMpKXt2YXIgbj1l
Ll9yZW5kZXJlZENoaWxkcmVuLGk9dC5maXJzdENoaWxkO2U6Zm9yKHZhciBhIGluIG4paWYobi5o
YXNPd25Qcm9wZXJ0eShhKSl7dmFyIHM9blthXSx1PXIocykuX2RvbUlEO2lmKDAhPT11KXtmb3Io
O251bGwhPT1pO2k9aS5uZXh0U2libGluZylpZigxPT09aS5ub2RlVHlwZSYmaS5nZXRBdHRyaWJ1
dGUoZik9PT1TdHJpbmcodSl8fDg9PT1pLm5vZGVUeXBlJiZpLm5vZGVWYWx1ZT09PSIgcmVhY3Qt
dGV4dDogIit1KyIgInx8OD09PWkubm9kZVR5cGUmJmkubm9kZVZhbHVlPT09IiByZWFjdC1lbXB0
eTogIit1KyIgIil7byhzLGkpO2NvbnRpbnVlIGV9YygiMzIiLHUpfX1lLl9mbGFnc3w9aC5oYXND
YWNoZWRDaGlsZE5vZGVzfX1mdW5jdGlvbiBzKGUpe2lmKGVbbV0pcmV0dXJuIGVbbV07Zm9yKHZh
ciB0PVtdOyFlW21dOyl7aWYodC5wdXNoKGUpLCFlLnBhcmVudE5vZGUpcmV0dXJuIG51bGw7ZT1l
LnBhcmVudE5vZGV9Zm9yKHZhciBuLHI7ZSYmKHI9ZVttXSk7ZT10LnBvcCgpKW49cix0Lmxlbmd0
aCYmYShyLGUpO3JldHVybiBufWZ1bmN0aW9uIHUoZSl7dmFyIHQ9cyhlKTtyZXR1cm4gbnVsbCE9
dCYmdC5faG9zdE5vZGU9PT1lP3Q6bnVsbH1mdW5jdGlvbiBsKGUpe2lmKHZvaWQgMD09PWUuX2hv
c3ROb2RlP2MoIjMzIik6dm9pZCAwLGUuX2hvc3ROb2RlKXJldHVybiBlLl9ob3N0Tm9kZTtmb3Io
dmFyIHQ9W107IWUuX2hvc3ROb2RlOyl0LnB1c2goZSksZS5faG9zdFBhcmVudD92b2lkIDA6Yygi
MzQiKSxlPWUuX2hvc3RQYXJlbnQ7Zm9yKDt0Lmxlbmd0aDtlPXQucG9wKCkpYShlLGUuX2hvc3RO
b2RlKTtyZXR1cm4gZS5faG9zdE5vZGV9dmFyIGM9ZSgxMTEpLHA9ZSgxMSksZD1lKDMxKSxmPShl
KDEzNCkscC5JRF9BVFRSSUJVVEVfTkFNRSksaD1kLG09Il9fcmVhY3RJbnRlcm5hbEluc3RhbmNl
JCIrTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMiksdj17Z2V0Q2xvc2VzdEluc3Rh
bmNlRnJvbU5vZGU6cyxnZXRJbnN0YW5jZUZyb21Ob2RlOnUsZ2V0Tm9kZUZyb21JbnN0YW5jZTps
LHByZWNhY2hlQ2hpbGROb2RlczphLHByZWNhY2hlTm9kZTpvLHVuY2FjaGVOb2RlOml9O3QuZXhw
b3J0cz12fSx7MTE6MTEsMTExOjExMSwxMzQ6MTM0LDMxOjMxfV0sMzM6W2Z1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe3ZhciBuPXtfdG9wTGV2ZWxXcmFwcGVyOmUs
X2lkQ291bnRlcjoxLF9vd25lckRvY3VtZW50OnQ/dC5ub2RlVHlwZT09PW8/dDp0Lm93bmVyRG9j
dW1lbnQ6bnVsbCxfbm9kZTp0LF90YWc6dD90Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk6bnVsbCxf
bmFtZXNwYWNlVVJJOnQ/dC5uYW1lc3BhY2VVUkk6bnVsbH07cmV0dXJuIG59dmFyIG89KGUoMTE2
KSw5KTt0LmV4cG9ydHM9cn0sezExNjoxMTZ9XSwzNDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0Ijt2YXIgcj1lKDE0MCksbz1lKDkpLGk9ZSgzMiksYT1mdW5jdGlvbihlKXt0aGlzLl9jdXJy
ZW50RWxlbWVudD1udWxsLHRoaXMuX2hvc3ROb2RlPW51bGwsdGhpcy5faG9zdFBhcmVudD1udWxs
LHRoaXMuX2hvc3RDb250YWluZXJJbmZvPW51bGwsdGhpcy5fZG9tSUQ9MH07cihhLnByb3RvdHlw
ZSx7bW91bnRDb21wb25lbnQ6ZnVuY3Rpb24oZSx0LG4scil7dmFyIGE9bi5faWRDb3VudGVyKys7
dGhpcy5fZG9tSUQ9YSx0aGlzLl9ob3N0UGFyZW50PXQsdGhpcy5faG9zdENvbnRhaW5lckluZm89
bjt2YXIgcz0iIHJlYWN0LWVtcHR5OiAiK3RoaXMuX2RvbUlEKyIgIjtpZihlLnVzZUNyZWF0ZUVs
ZW1lbnQpe3ZhciB1PW4uX293bmVyRG9jdW1lbnQsbD11LmNyZWF0ZUNvbW1lbnQocyk7cmV0dXJu
IGkucHJlY2FjaGVOb2RlKHRoaXMsbCksbyhsKX1yZXR1cm4gZS5yZW5kZXJUb1N0YXRpY01hcmt1
cD8iIjoiPCEtLSIrcysiLS0+In0scmVjZWl2ZUNvbXBvbmVudDpmdW5jdGlvbigpe30sZ2V0SG9z
dE5vZGU6ZnVuY3Rpb24oKXtyZXR1cm4gaS5nZXROb2RlRnJvbUluc3RhbmNlKHRoaXMpfSx1bm1v
dW50Q29tcG9uZW50OmZ1bmN0aW9uKCl7aS51bmNhY2hlTm9kZSh0aGlzKX19KSx0LmV4cG9ydHM9
YX0sezE0MDoxNDAsMzI6MzIsOTo5fV0sMzU6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7
dmFyIHI9ZSg4KSxvPWUoMzIpLGk9e2Rhbmdlcm91c2x5UHJvY2Vzc0NoaWxkcmVuVXBkYXRlczpm
dW5jdGlvbihlLHQpe3ZhciBuPW8uZ2V0Tm9kZUZyb21JbnN0YW5jZShlKTtyLnByb2Nlc3NVcGRh
dGVzKG4sdCl9fTt0LmV4cG9ydHM9aX0sezMyOjMyLDg6OH1dLDM2OltmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXt0aGlzLl9yb290Tm9kZUlEJiZwLnVwZGF0ZVdyYXBw
ZXIodGhpcyl9ZnVuY3Rpb24gbyhlKXt2YXIgdD10aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wcyxu
PXUuZXhlY3V0ZU9uQ2hhbmdlKHQsZSk7Yy5hc2FwKHIsdGhpcyk7dmFyIG89dC5uYW1lO2lmKCJy
YWRpbyI9PT10LnR5cGUmJm51bGwhPW8pe2Zvcih2YXIgYT1sLmdldE5vZGVGcm9tSW5zdGFuY2Uo
dGhpcykscz1hO3MucGFyZW50Tm9kZTspcz1zLnBhcmVudE5vZGU7Zm9yKHZhciBwPXMucXVlcnlT
ZWxlY3RvckFsbCgiaW5wdXRbbmFtZT0iK0pTT04uc3RyaW5naWZ5KCIiK28pKyddW3R5cGU9InJh
ZGlvIl0nKSxkPTA7ZDxwLmxlbmd0aDtkKyspe3ZhciBmPXBbZF07aWYoZiE9PWEmJmYuZm9ybT09
PWEuZm9ybSl7dmFyIGg9bC5nZXRJbnN0YW5jZUZyb21Ob2RlKGYpO2g/dm9pZCAwOmkoIjkwIiks
Yy5hc2FwKHIsaCl9fX1yZXR1cm4gbn12YXIgaT1lKDExMSksYT1lKDE0MCkscz1lKDEyKSx1PWUo
MjMpLGw9ZSgzMiksYz1lKDcxKSxwPShlKDEzNCksZSgxMzkpLHtnZXRIb3N0UHJvcHM6ZnVuY3Rp
b24oZSx0KXt2YXIgbj11LmdldFZhbHVlKHQpLHI9dS5nZXRDaGVja2VkKHQpLG89YSh7dHlwZTp2
b2lkIDAsc3RlcDp2b2lkIDAsbWluOnZvaWQgMCxtYXg6dm9pZCAwfSx0LHtkZWZhdWx0Q2hlY2tl
ZDp2b2lkIDAsZGVmYXVsdFZhbHVlOnZvaWQgMCx2YWx1ZTpudWxsIT1uP246ZS5fd3JhcHBlclN0
YXRlLmluaXRpYWxWYWx1ZSxjaGVja2VkOm51bGwhPXI/cjplLl93cmFwcGVyU3RhdGUuaW5pdGlh
bENoZWNrZWQsb25DaGFuZ2U6ZS5fd3JhcHBlclN0YXRlLm9uQ2hhbmdlfSk7cmV0dXJuIG99LG1v
dW50V3JhcHBlcjpmdW5jdGlvbihlLHQpe3ZhciBuPXQuZGVmYXVsdFZhbHVlO2UuX3dyYXBwZXJT
dGF0ZT17aW5pdGlhbENoZWNrZWQ6bnVsbCE9dC5jaGVja2VkP3QuY2hlY2tlZDp0LmRlZmF1bHRD
aGVja2VkLGluaXRpYWxWYWx1ZTpudWxsIT10LnZhbHVlP3QudmFsdWU6bixsaXN0ZW5lcnM6bnVs
bCxvbkNoYW5nZTpvLmJpbmQoZSl9fSx1cGRhdGVXcmFwcGVyOmZ1bmN0aW9uKGUpe3ZhciB0PWUu
X2N1cnJlbnRFbGVtZW50LnByb3BzLG49dC5jaGVja2VkO251bGwhPW4mJnMuc2V0VmFsdWVGb3JQ
cm9wZXJ0eShsLmdldE5vZGVGcm9tSW5zdGFuY2UoZSksImNoZWNrZWQiLG58fCExKTt2YXIgcj1s
LmdldE5vZGVGcm9tSW5zdGFuY2UoZSksbz11LmdldFZhbHVlKHQpO2lmKG51bGwhPW8pe3ZhciBp
PSIiK287aSE9PXIudmFsdWUmJihyLnZhbHVlPWkpfWVsc2UgbnVsbD09dC52YWx1ZSYmbnVsbCE9
dC5kZWZhdWx0VmFsdWUmJihyLmRlZmF1bHRWYWx1ZT0iIit0LmRlZmF1bHRWYWx1ZSksbnVsbD09
dC5jaGVja2VkJiZudWxsIT10LmRlZmF1bHRDaGVja2VkJiYoci5kZWZhdWx0Q2hlY2tlZD0hIXQu
ZGVmYXVsdENoZWNrZWQpfSxwb3N0TW91bnRXcmFwcGVyOmZ1bmN0aW9uKGUpe3ZhciB0PWUuX2N1
cnJlbnRFbGVtZW50LnByb3BzLG49bC5nZXROb2RlRnJvbUluc3RhbmNlKGUpO3N3aXRjaCh0LnR5
cGUpe2Nhc2Uic3VibWl0IjpjYXNlInJlc2V0IjpicmVhaztjYXNlImNvbG9yIjpjYXNlImRhdGUi
OmNhc2UiZGF0ZXRpbWUiOmNhc2UiZGF0ZXRpbWUtbG9jYWwiOmNhc2UibW9udGgiOmNhc2UidGlt
ZSI6Y2FzZSJ3ZWVrIjpuLnZhbHVlPSIiLG4udmFsdWU9bi5kZWZhdWx0VmFsdWU7YnJlYWs7ZGVm
YXVsdDpuLnZhbHVlPW4udmFsdWV9dmFyIHI9bi5uYW1lOyIiIT09ciYmKG4ubmFtZT0iIiksbi5k
ZWZhdWx0Q2hlY2tlZD0hbi5kZWZhdWx0Q2hlY2tlZCxuLmRlZmF1bHRDaGVja2VkPSFuLmRlZmF1
bHRDaGVja2VkLCIiIT09ciYmKG4ubmFtZT1yKX19KTt0LmV4cG9ydHM9cH0sezExMToxMTEsMTI6
MTIsMTM0OjEzNCwxMzk6MTM5LDE0MDoxNDAsMjM6MjMsMzI6MzIsNzE6NzF9XSwzNzpbZnVuY3Rp
b24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3ZhciB0PSIiO3JldHVybiBpLkNo
aWxkcmVuLmZvckVhY2goZSxmdW5jdGlvbihlKXtudWxsIT1lJiYoInN0cmluZyI9PXR5cGVvZiBl
fHwibnVtYmVyIj09dHlwZW9mIGU/dCs9ZTp1fHwodT0hMCkpfSksdH12YXIgbz1lKDE0MCksaT1l
KDExOCksYT1lKDMyKSxzPWUoMzgpLHU9KGUoMTM5KSwhMSksbD17bW91bnRXcmFwcGVyOmZ1bmN0
aW9uKGUsdCxuKXt2YXIgbz1udWxsO2lmKG51bGwhPW4pe3ZhciBpPW47Im9wdGdyb3VwIj09PWku
X3RhZyYmKGk9aS5faG9zdFBhcmVudCksbnVsbCE9aSYmInNlbGVjdCI9PT1pLl90YWcmJihvPXMu
Z2V0U2VsZWN0VmFsdWVDb250ZXh0KGkpKX12YXIgYT1udWxsO2lmKG51bGwhPW8pe3ZhciB1O2lm
KHU9bnVsbCE9dC52YWx1ZT90LnZhbHVlKyIiOnIodC5jaGlsZHJlbiksYT0hMSxBcnJheS5pc0Fy
cmF5KG8pKXtmb3IodmFyIGw9MDtsPG8ubGVuZ3RoO2wrKylpZigiIitvW2xdPT09dSl7YT0hMDti
cmVha319ZWxzZSBhPSIiK289PT11fWUuX3dyYXBwZXJTdGF0ZT17c2VsZWN0ZWQ6YX19LHBvc3RN
b3VudFdyYXBwZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5fY3VycmVudEVsZW1lbnQucHJvcHM7aWYo
bnVsbCE9dC52YWx1ZSl7dmFyIG49YS5nZXROb2RlRnJvbUluc3RhbmNlKGUpO24uc2V0QXR0cmli
dXRlKCJ2YWx1ZSIsdC52YWx1ZSl9fSxnZXRIb3N0UHJvcHM6ZnVuY3Rpb24oZSx0KXt2YXIgbj1v
KHtzZWxlY3RlZDp2b2lkIDAsY2hpbGRyZW46dm9pZCAwfSx0KTtudWxsIT1lLl93cmFwcGVyU3Rh
dGUuc2VsZWN0ZWQmJihuLnNlbGVjdGVkPWUuX3dyYXBwZXJTdGF0ZS5zZWxlY3RlZCk7dmFyIGk9
cih0LmNoaWxkcmVuKTtyZXR1cm4gaSYmKG4uY2hpbGRyZW49aSksbn19O3QuZXhwb3J0cz1sfSx7
MTE4OjExOCwxMzk6MTM5LDE0MDoxNDAsMzI6MzIsMzg6Mzh9XSwzODpbZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7aWYodGhpcy5fcm9vdE5vZGVJRCYmdGhpcy5fd3Jh
cHBlclN0YXRlLnBlbmRpbmdVcGRhdGUpe3RoaXMuX3dyYXBwZXJTdGF0ZS5wZW5kaW5nVXBkYXRl
PSExO3ZhciBlPXRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3BzLHQ9cy5nZXRWYWx1ZShlKTtudWxs
IT10JiZvKHRoaXMsQm9vbGVhbihlLm11bHRpcGxlKSx0KX19ZnVuY3Rpb24gbyhlLHQsbil7dmFy
IHIsbyxpPXUuZ2V0Tm9kZUZyb21JbnN0YW5jZShlKS5vcHRpb25zO2lmKHQpe2ZvcihyPXt9LG89
MDtvPG4ubGVuZ3RoO28rKylyWyIiK25bb11dPSEwO2ZvcihvPTA7bzxpLmxlbmd0aDtvKyspe3Zh
ciBhPXIuaGFzT3duUHJvcGVydHkoaVtvXS52YWx1ZSk7aVtvXS5zZWxlY3RlZCE9PWEmJihpW29d
LnNlbGVjdGVkPWEpfX1lbHNle2ZvcihyPSIiK24sbz0wO288aS5sZW5ndGg7bysrKWlmKGlbb10u
dmFsdWU9PT1yKXJldHVybiB2b2lkKGlbb10uc2VsZWN0ZWQ9ITApO2kubGVuZ3RoJiYoaVswXS5z
ZWxlY3RlZD0hMCl9fWZ1bmN0aW9uIGkoZSl7dmFyIHQ9dGhpcy5fY3VycmVudEVsZW1lbnQucHJv
cHMsbj1zLmV4ZWN1dGVPbkNoYW5nZSh0LGUpO3JldHVybiB0aGlzLl9yb290Tm9kZUlEJiYodGhp
cy5fd3JhcHBlclN0YXRlLnBlbmRpbmdVcGRhdGU9ITApLGwuYXNhcChyLHRoaXMpLG59dmFyIGE9
ZSgxNDApLHM9ZSgyMyksdT1lKDMyKSxsPWUoNzEpLGM9KGUoMTM5KSwhMSkscD17Z2V0SG9zdFBy
b3BzOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGEoe30sdCx7b25DaGFuZ2U6ZS5fd3JhcHBlclN0YXRl
Lm9uQ2hhbmdlLHZhbHVlOnZvaWQgMH0pfSxtb3VudFdyYXBwZXI6ZnVuY3Rpb24oZSx0KXt2YXIg
bj1zLmdldFZhbHVlKHQpO2UuX3dyYXBwZXJTdGF0ZT17cGVuZGluZ1VwZGF0ZTohMSxpbml0aWFs
VmFsdWU6bnVsbCE9bj9uOnQuZGVmYXVsdFZhbHVlLGxpc3RlbmVyczpudWxsLG9uQ2hhbmdlOmku
YmluZChlKSx3YXNNdWx0aXBsZTpCb29sZWFuKHQubXVsdGlwbGUpfSx2b2lkIDA9PT10LnZhbHVl
fHx2b2lkIDA9PT10LmRlZmF1bHRWYWx1ZXx8Y3x8KGM9ITApfSxnZXRTZWxlY3RWYWx1ZUNvbnRl
eHQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWV9LHBvc3RV
cGRhdGVXcmFwcGVyOmZ1bmN0aW9uKGUpe3ZhciB0PWUuX2N1cnJlbnRFbGVtZW50LnByb3BzO2Uu
X3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWU9dm9pZCAwO3ZhciBuPWUuX3dyYXBwZXJTdGF0ZS53
YXNNdWx0aXBsZTtlLl93cmFwcGVyU3RhdGUud2FzTXVsdGlwbGU9Qm9vbGVhbih0Lm11bHRpcGxl
KTt2YXIgcj1zLmdldFZhbHVlKHQpO251bGwhPXI/KGUuX3dyYXBwZXJTdGF0ZS5wZW5kaW5nVXBk
YXRlPSExLG8oZSxCb29sZWFuKHQubXVsdGlwbGUpLHIpKTpuIT09Qm9vbGVhbih0Lm11bHRpcGxl
KSYmKG51bGwhPXQuZGVmYXVsdFZhbHVlP28oZSxCb29sZWFuKHQubXVsdGlwbGUpLHQuZGVmYXVs
dFZhbHVlKTpvKGUsQm9vbGVhbih0Lm11bHRpcGxlKSx0Lm11bHRpcGxlP1tdOiIiKSl9fTt0LmV4
cG9ydHM9cH0sezEzOToxMzksMTQwOjE0MCwyMzoyMywzMjozMiw3MTo3MX1dLDM5OltmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7cmV0dXJuIGU9PT1uJiZ0
PT09cn1mdW5jdGlvbiBvKGUpe3ZhciB0PWRvY3VtZW50LnNlbGVjdGlvbixuPXQuY3JlYXRlUmFu
Z2UoKSxyPW4udGV4dC5sZW5ndGgsbz1uLmR1cGxpY2F0ZSgpO28ubW92ZVRvRWxlbWVudFRleHQo
ZSksby5zZXRFbmRQb2ludCgiRW5kVG9TdGFydCIsbik7dmFyIGk9by50ZXh0Lmxlbmd0aCxhPWkr
cjtyZXR1cm57c3RhcnQ6aSxlbmQ6YX19ZnVuY3Rpb24gaShlKXt2YXIgdD13aW5kb3cuZ2V0U2Vs
ZWN0aW9uJiZ3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7aWYoIXR8fDA9PT10LnJhbmdlQ291bnQpcmV0
dXJuIG51bGw7dmFyIG49dC5hbmNob3JOb2RlLG89dC5hbmNob3JPZmZzZXQsaT10LmZvY3VzTm9k
ZSxhPXQuZm9jdXNPZmZzZXQscz10LmdldFJhbmdlQXQoMCk7dHJ5e3Muc3RhcnRDb250YWluZXIu
bm9kZVR5cGUscy5lbmRDb250YWluZXIubm9kZVR5cGV9Y2F0Y2goZSl7cmV0dXJuIG51bGx9dmFy
IHU9cih0LmFuY2hvck5vZGUsdC5hbmNob3JPZmZzZXQsdC5mb2N1c05vZGUsdC5mb2N1c09mZnNl
dCksbD11PzA6cy50b1N0cmluZygpLmxlbmd0aCxjPXMuY2xvbmVSYW5nZSgpO2Muc2VsZWN0Tm9k
ZUNvbnRlbnRzKGUpLGMuc2V0RW5kKHMuc3RhcnRDb250YWluZXIscy5zdGFydE9mZnNldCk7dmFy
IHA9cihjLnN0YXJ0Q29udGFpbmVyLGMuc3RhcnRPZmZzZXQsYy5lbmRDb250YWluZXIsYy5lbmRP
ZmZzZXQpLGQ9cD8wOmMudG9TdHJpbmcoKS5sZW5ndGgsZj1kK2wsaD1kb2N1bWVudC5jcmVhdGVS
YW5nZSgpO2guc2V0U3RhcnQobixvKSxoLnNldEVuZChpLGEpO3ZhciBtPWguY29sbGFwc2VkO3Jl
dHVybntzdGFydDptP2Y6ZCxlbmQ6bT9kOmZ9fWZ1bmN0aW9uIGEoZSx0KXt2YXIgbixyLG89ZG9j
dW1lbnQuc2VsZWN0aW9uLmNyZWF0ZVJhbmdlKCkuZHVwbGljYXRlKCk7dm9pZCAwPT09dC5lbmQ/
KG49dC5zdGFydCxyPW4pOnQuc3RhcnQ+dC5lbmQ/KG49dC5lbmQscj10LnN0YXJ0KToobj10LnN0
YXJ0LHI9dC5lbmQpLG8ubW92ZVRvRWxlbWVudFRleHQoZSksby5tb3ZlU3RhcnQoImNoYXJhY3Rl
ciIsbiksby5zZXRFbmRQb2ludCgiRW5kVG9TdGFydCIsbyksby5tb3ZlRW5kKCJjaGFyYWN0ZXIi
LHItbiksby5zZWxlY3QoKX1mdW5jdGlvbiBzKGUsdCl7aWYod2luZG93LmdldFNlbGVjdGlvbil7
dmFyIG49d2luZG93LmdldFNlbGVjdGlvbigpLHI9ZVtjKCldLmxlbmd0aCxvPU1hdGgubWluKHQu
c3RhcnQsciksaT12b2lkIDA9PT10LmVuZD9vOk1hdGgubWluKHQuZW5kLHIpO2lmKCFuLmV4dGVu
ZCYmbz5pKXt2YXIgYT1pO2k9byxvPWF9dmFyIHM9bChlLG8pLHU9bChlLGkpO2lmKHMmJnUpe3Zh
ciBwPWRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7cC5zZXRTdGFydChzLm5vZGUscy5vZmZzZXQpLG4u
cmVtb3ZlQWxsUmFuZ2VzKCksbz5pPyhuLmFkZFJhbmdlKHApLG4uZXh0ZW5kKHUubm9kZSx1Lm9m
ZnNldCkpOihwLnNldEVuZCh1Lm5vZGUsdS5vZmZzZXQpLG4uYWRkUmFuZ2UocCkpfX19dmFyIHU9
ZSgxMjApLGw9ZSgxMDQpLGM9ZSgxMDUpLHA9dS5jYW5Vc2VET00mJiJzZWxlY3Rpb24iaW4gZG9j
dW1lbnQmJiEoImdldFNlbGVjdGlvbiJpbiB3aW5kb3cpLGQ9e2dldE9mZnNldHM6cD9vOmksc2V0
T2Zmc2V0czpwP2E6c307dC5leHBvcnRzPWR9LHsxMDQ6MTA0LDEwNToxMDUsMTIwOjEyMH1dLDQw
OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoNDYpLG89ZSg2NyksaT1lKDcy
KTtyLmluamVjdCgpO3ZhciBhPXtyZW5kZXJUb1N0cmluZzpvLnJlbmRlclRvU3RyaW5nLHJlbmRl
clRvU3RhdGljTWFya3VwOm8ucmVuZGVyVG9TdGF0aWNNYXJrdXAsdmVyc2lvbjppfTt0LmV4cG9y
dHM9YX0sezQ2OjQ2LDY3OjY3LDcyOjcyfV0sNDE6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7dmFyIHI9ZSg0MCk7dC5leHBvcnRzPXJ9LHs0MDo0MH1dLDQyOltmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO3ZhciByPWUoMTExKSxvPWUoMTQwKSxpPWUoOCksYT1lKDkpLHM9ZSgzMiks
dT1lKDk1KSxsPShlKDEzNCksZSgxMTYpLGZ1bmN0aW9uKGUpe3RoaXMuX2N1cnJlbnRFbGVtZW50
PWUsdGhpcy5fc3RyaW5nVGV4dD0iIitlLHRoaXMuX2hvc3ROb2RlPW51bGwsdGhpcy5faG9zdFBh
cmVudD1udWxsLHRoaXMuX2RvbUlEPTAsdGhpcy5fbW91bnRJbmRleD0wLHRoaXMuX2Nsb3NpbmdD
b21tZW50PW51bGwsdGhpcy5fY29tbWVudE5vZGVzPW51bGx9KTtvKGwucHJvdG90eXBlLHttb3Vu
dENvbXBvbmVudDpmdW5jdGlvbihlLHQsbixyKXt2YXIgbz1uLl9pZENvdW50ZXIrKyxpPSIgcmVh
Y3QtdGV4dDogIitvKyIgIixsPSIgL3JlYWN0LXRleHQgIjtpZih0aGlzLl9kb21JRD1vLHRoaXMu
X2hvc3RQYXJlbnQ9dCxlLnVzZUNyZWF0ZUVsZW1lbnQpe3ZhciBjPW4uX293bmVyRG9jdW1lbnQs
cD1jLmNyZWF0ZUNvbW1lbnQoaSksZD1jLmNyZWF0ZUNvbW1lbnQobCksZj1hKGMuY3JlYXRlRG9j
dW1lbnRGcmFnbWVudCgpKTtyZXR1cm4gYS5xdWV1ZUNoaWxkKGYsYShwKSksdGhpcy5fc3RyaW5n
VGV4dCYmYS5xdWV1ZUNoaWxkKGYsYShjLmNyZWF0ZVRleHROb2RlKHRoaXMuX3N0cmluZ1RleHQp
KSksYS5xdWV1ZUNoaWxkKGYsYShkKSkscy5wcmVjYWNoZU5vZGUodGhpcyxwKSx0aGlzLl9jbG9z
aW5nQ29tbWVudD1kLGZ9dmFyIGg9dSh0aGlzLl9zdHJpbmdUZXh0KTtyZXR1cm4gZS5yZW5kZXJU
b1N0YXRpY01hcmt1cD9oOiI8IS0tIitpKyItLT4iK2grIjwhLS0iK2wrIi0tPiJ9LHJlY2VpdmVD
b21wb25lbnQ6ZnVuY3Rpb24oZSx0KXtpZihlIT09dGhpcy5fY3VycmVudEVsZW1lbnQpe3RoaXMu
X2N1cnJlbnRFbGVtZW50PWU7dmFyIG49IiIrZTtpZihuIT09dGhpcy5fc3RyaW5nVGV4dCl7dGhp
cy5fc3RyaW5nVGV4dD1uO3ZhciByPXRoaXMuZ2V0SG9zdE5vZGUoKTtpLnJlcGxhY2VEZWxpbWl0
ZWRUZXh0KHJbMF0sclsxXSxuKX19fSxnZXRIb3N0Tm9kZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMu
X2NvbW1lbnROb2RlcztpZihlKXJldHVybiBlO2lmKCF0aGlzLl9jbG9zaW5nQ29tbWVudClmb3Io
dmFyIHQ9cy5nZXROb2RlRnJvbUluc3RhbmNlKHRoaXMpLG49dC5uZXh0U2libGluZzs7KXsKK2lm
KG51bGw9PW4/cigiNjciLHRoaXMuX2RvbUlEKTp2b2lkIDAsOD09PW4ubm9kZVR5cGUmJiIgL3Jl
YWN0LXRleHQgIj09PW4ubm9kZVZhbHVlKXt0aGlzLl9jbG9zaW5nQ29tbWVudD1uO2JyZWFrfW49
bi5uZXh0U2libGluZ31yZXR1cm4gZT1bdGhpcy5faG9zdE5vZGUsdGhpcy5fY2xvc2luZ0NvbW1l
bnRdLHRoaXMuX2NvbW1lbnROb2Rlcz1lLGV9LHVubW91bnRDb21wb25lbnQ6ZnVuY3Rpb24oKXt0
aGlzLl9jbG9zaW5nQ29tbWVudD1udWxsLHRoaXMuX2NvbW1lbnROb2Rlcz1udWxsLHMudW5jYWNo
ZU5vZGUodGhpcyl9fSksdC5leHBvcnRzPWx9LHsxMTE6MTExLDExNjoxMTYsMTM0OjEzNCwxNDA6
MTQwLDMyOjMyLDg6OCw5OjksOTU6OTV9XSw0MzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiByKCl7dGhpcy5fcm9vdE5vZGVJRCYmYy51cGRhdGVXcmFwcGVyKHRoaXMpfWZ1
bmN0aW9uIG8oZSl7dmFyIHQ9dGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHMsbj1zLmV4ZWN1dGVP
bkNoYW5nZSh0LGUpO3JldHVybiBsLmFzYXAocix0aGlzKSxufXZhciBpPWUoMTExKSxhPWUoMTQw
KSxzPWUoMjMpLHU9ZSgzMiksbD1lKDcxKSxjPShlKDEzNCksZSgxMzkpLHtnZXRIb3N0UHJvcHM6
ZnVuY3Rpb24oZSx0KXtudWxsIT10LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MP2koIjkxIik6dm9p
ZCAwO3ZhciBuPWEoe30sdCx7dmFsdWU6dm9pZCAwLGRlZmF1bHRWYWx1ZTp2b2lkIDAsY2hpbGRy
ZW46IiIrZS5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZSxvbkNoYW5nZTplLl93cmFwcGVyU3Rh
dGUub25DaGFuZ2V9KTtyZXR1cm4gbn0sbW91bnRXcmFwcGVyOmZ1bmN0aW9uKGUsdCl7dmFyIG49
cy5nZXRWYWx1ZSh0KSxyPW47aWYobnVsbD09bil7dmFyIGE9dC5kZWZhdWx0VmFsdWUsdT10LmNo
aWxkcmVuO251bGwhPXUmJihudWxsIT1hP2koIjkyIik6dm9pZCAwLEFycmF5LmlzQXJyYXkodSkm
Jih1Lmxlbmd0aDw9MT92b2lkIDA6aSgiOTMiKSx1PXVbMF0pLGE9IiIrdSksbnVsbD09YSYmKGE9
IiIpLHI9YX1lLl93cmFwcGVyU3RhdGU9e2luaXRpYWxWYWx1ZToiIityLGxpc3RlbmVyczpudWxs
LG9uQ2hhbmdlOm8uYmluZChlKX19LHVwZGF0ZVdyYXBwZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5f
Y3VycmVudEVsZW1lbnQucHJvcHMsbj11LmdldE5vZGVGcm9tSW5zdGFuY2UoZSkscj1zLmdldFZh
bHVlKHQpO2lmKG51bGwhPXIpe3ZhciBvPSIiK3I7byE9PW4udmFsdWUmJihuLnZhbHVlPW8pLG51
bGw9PXQuZGVmYXVsdFZhbHVlJiYobi5kZWZhdWx0VmFsdWU9byl9bnVsbCE9dC5kZWZhdWx0VmFs
dWUmJihuLmRlZmF1bHRWYWx1ZT10LmRlZmF1bHRWYWx1ZSl9LHBvc3RNb3VudFdyYXBwZXI6ZnVu
Y3Rpb24oZSl7dmFyIHQ9dS5nZXROb2RlRnJvbUluc3RhbmNlKGUpO3QudmFsdWU9dC50ZXh0Q29u
dGVudH19KTt0LmV4cG9ydHM9Y30sezExMToxMTEsMTM0OjEzNCwxMzk6MTM5LDE0MDoxNDAsMjM6
MjMsMzI6MzIsNzE6NzF9XSw0NDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biByKGUsdCl7Il9ob3N0Tm9kZSJpbiBlP3ZvaWQgMDp1KCIzMyIpLCJfaG9zdE5vZGUiaW4gdD92
b2lkIDA6dSgiMzMiKTtmb3IodmFyIG49MCxyPWU7cjtyPXIuX2hvc3RQYXJlbnQpbisrO2Zvcih2
YXIgbz0wLGk9dDtpO2k9aS5faG9zdFBhcmVudClvKys7Zm9yKDtuLW8+MDspZT1lLl9ob3N0UGFy
ZW50LG4tLTtmb3IoO28tbj4wOyl0PXQuX2hvc3RQYXJlbnQsby0tO2Zvcih2YXIgYT1uO2EtLTsp
e2lmKGU9PT10KXJldHVybiBlO2U9ZS5faG9zdFBhcmVudCx0PXQuX2hvc3RQYXJlbnR9cmV0dXJu
IG51bGx9ZnVuY3Rpb24gbyhlLHQpeyJfaG9zdE5vZGUiaW4gZT92b2lkIDA6dSgiMzUiKSwiX2hv
c3ROb2RlImluIHQ/dm9pZCAwOnUoIjM1Iik7Zm9yKDt0Oyl7aWYodD09PWUpcmV0dXJuITA7dD10
Ll9ob3N0UGFyZW50fXJldHVybiExfWZ1bmN0aW9uIGkoZSl7cmV0dXJuIl9ob3N0Tm9kZSJpbiBl
P3ZvaWQgMDp1KCIzNiIpLGUuX2hvc3RQYXJlbnR9ZnVuY3Rpb24gYShlLHQsbil7Zm9yKHZhciBy
PVtdO2U7KXIucHVzaChlKSxlPWUuX2hvc3RQYXJlbnQ7dmFyIG87Zm9yKG89ci5sZW5ndGg7by0t
ID4wOyl0KHJbb10sImNhcHR1cmVkIixuKTtmb3Iobz0wO288ci5sZW5ndGg7bysrKXQocltvXSwi
YnViYmxlZCIsbil9ZnVuY3Rpb24gcyhlLHQsbixvLGkpe2Zvcih2YXIgYT1lJiZ0P3IoZSx0KTpu
dWxsLHM9W107ZSYmZSE9PWE7KXMucHVzaChlKSxlPWUuX2hvc3RQYXJlbnQ7Zm9yKHZhciB1PVtd
O3QmJnQhPT1hOyl1LnB1c2godCksdD10Ll9ob3N0UGFyZW50O3ZhciBsO2ZvcihsPTA7bDxzLmxl
bmd0aDtsKyspbihzW2xdLCJidWJibGVkIixvKTtmb3IobD11Lmxlbmd0aDtsLS0gPjA7KW4odVts
XSwiY2FwdHVyZWQiLGkpfXZhciB1PWUoMTExKTtlKDEzNCk7dC5leHBvcnRzPXtpc0FuY2VzdG9y
Om8sZ2V0TG93ZXN0Q29tbW9uQW5jZXN0b3I6cixnZXRQYXJlbnRJbnN0YW5jZTppLHRyYXZlcnNl
VHdvUGhhc2U6YSx0cmF2ZXJzZUVudGVyTGVhdmU6c319LHsxMTE6MTExLDEzNDoxMzR9XSw0NTpb
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7dGhpcy5yZWluaXRpYWxp
emVUcmFuc2FjdGlvbigpfXZhciBvPWUoMTQwKSxpPWUoNzEpLGE9ZSg4OSkscz1lKDEyNiksdT17
aW5pdGlhbGl6ZTpzLGNsb3NlOmZ1bmN0aW9uKCl7ZC5pc0JhdGNoaW5nVXBkYXRlcz0hMX19LGw9
e2luaXRpYWxpemU6cyxjbG9zZTppLmZsdXNoQmF0Y2hlZFVwZGF0ZXMuYmluZChpKX0sYz1bbCx1
XTtvKHIucHJvdG90eXBlLGEse2dldFRyYW5zYWN0aW9uV3JhcHBlcnM6ZnVuY3Rpb24oKXtyZXR1
cm4gY319KTt2YXIgcD1uZXcgcixkPXtpc0JhdGNoaW5nVXBkYXRlczohMSxiYXRjaGVkVXBkYXRl
czpmdW5jdGlvbihlLHQsbixyLG8saSl7dmFyIGE9ZC5pc0JhdGNoaW5nVXBkYXRlcztyZXR1cm4g
ZC5pc0JhdGNoaW5nVXBkYXRlcz0hMCxhP2UodCxuLHIsbyxpKTpwLnBlcmZvcm0oZSxudWxsLHQs
bixyLG8saSl9fTt0LmV4cG9ydHM9ZH0sezEyNjoxMjYsMTQwOjE0MCw3MTo3MSw4OTo4OX1dLDQ2
OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXt4fHwoeD0hMCx5LkV2
ZW50RW1pdHRlci5pbmplY3RSZWFjdEV2ZW50TGlzdGVuZXIoZykseS5FdmVudFBsdWdpbkh1Yi5p
bmplY3RFdmVudFBsdWdpbk9yZGVyKHMpLHkuRXZlbnRQbHVnaW5VdGlscy5pbmplY3RDb21wb25l
bnRUcmVlKGQpLHkuRXZlbnRQbHVnaW5VdGlscy5pbmplY3RUcmVlVHJhdmVyc2FsKGgpLHkuRXZl
bnRQbHVnaW5IdWIuaW5qZWN0RXZlbnRQbHVnaW5zQnlOYW1lKHtTaW1wbGVFdmVudFBsdWdpbjpF
LEVudGVyTGVhdmVFdmVudFBsdWdpbjp1LENoYW5nZUV2ZW50UGx1Z2luOmEsU2VsZWN0RXZlbnRQ
bHVnaW46YixCZWZvcmVJbnB1dEV2ZW50UGx1Z2luOml9KSx5Lkhvc3RDb21wb25lbnQuaW5qZWN0
R2VuZXJpY0NvbXBvbmVudENsYXNzKHApLHkuSG9zdENvbXBvbmVudC5pbmplY3RUZXh0Q29tcG9u
ZW50Q2xhc3MobSkseS5ET01Qcm9wZXJ0eS5pbmplY3RET01Qcm9wZXJ0eUNvbmZpZyhvKSx5LkRP
TVByb3BlcnR5LmluamVjdERPTVByb3BlcnR5Q29uZmlnKGwpLHkuRE9NUHJvcGVydHkuaW5qZWN0
RE9NUHJvcGVydHlDb25maWcoQykseS5FbXB0eUNvbXBvbmVudC5pbmplY3RFbXB0eUNvbXBvbmVu
dEZhY3RvcnkoZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBmKGUpfSkseS5VcGRhdGVzLmluamVjdFJl
Y29uY2lsZVRyYW5zYWN0aW9uKF8pLHkuVXBkYXRlcy5pbmplY3RCYXRjaGluZ1N0cmF0ZWd5KHYp
LHkuQ29tcG9uZW50LmluamVjdEVudmlyb25tZW50KGMpKX12YXIgbz1lKDEpLGk9ZSgzKSxhPWUo
Nykscz1lKDE0KSx1PWUoMTUpLGw9ZSgyMSksYz1lKDI3KSxwPWUoMzApLGQ9ZSgzMiksZj1lKDM0
KSxoPWUoNDQpLG09ZSg0Miksdj1lKDQ1KSxnPWUoNTEpLHk9ZSg1NCksXz1lKDYzKSxDPWUoNzMp
LGI9ZSg3NCksRT1lKDc1KSx4PSExO3QuZXhwb3J0cz17aW5qZWN0OnJ9fSx7MToxLDE0OjE0LDE1
OjE1LDIxOjIxLDI3OjI3LDM6MywzMDozMCwzMjozMiwzNDozNCw0Mjo0Miw0NDo0NCw0NTo0NSw1
MTo1MSw1NDo1NCw2Mzo2Myw3OjcsNzM6NzMsNzQ6NzQsNzU6NzV9XSw0NzpbZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wu
Zm9yJiZTeW1ib2wuZm9yKCJyZWFjdC5lbGVtZW50Iil8fDYwMTAzO3QuZXhwb3J0cz1yfSx7fV0s
NDg6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHIsbz17aW5qZWN0RW1wdHlDb21w
b25lbnRGYWN0b3J5OmZ1bmN0aW9uKGUpe3I9ZX19LGk9e2NyZWF0ZTpmdW5jdGlvbihlKXtyZXR1
cm4gcihlKX19O2kuaW5qZWN0aW9uPW8sdC5leHBvcnRzPWl9LHt9XSw0OTpbZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuKXt0cnl7dChuKX1jYXRjaChlKXtudWxs
PT09byYmKG89ZSl9fXZhciBvPW51bGwsaT17aW52b2tlR3VhcmRlZENhbGxiYWNrOnIsaW52b2tl
R3VhcmRlZENhbGxiYWNrV2l0aENhdGNoOnIscmV0aHJvd0NhdWdodEVycm9yOmZ1bmN0aW9uKCl7
aWYobyl7dmFyIGU9bzt0aHJvdyBvPW51bGwsZX19fTt0LmV4cG9ydHM9aX0se31dLDUwOltmdW5j
dGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7by5lbnF1ZXVlRXZlbnRzKGUp
LG8ucHJvY2Vzc0V2ZW50UXVldWUoITEpfXZhciBvPWUoMTYpLGk9e2hhbmRsZVRvcExldmVsOmZ1
bmN0aW9uKGUsdCxuLGkpe3ZhciBhPW8uZXh0cmFjdEV2ZW50cyhlLHQsbixpKTtyKGEpfX07dC5l
eHBvcnRzPWl9LHsxNjoxNn1dLDUxOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIoZSl7Zm9yKDtlLl9ob3N0UGFyZW50OyllPWUuX2hvc3RQYXJlbnQ7dmFyIHQ9cC5nZXRO
b2RlRnJvbUluc3RhbmNlKGUpLG49dC5wYXJlbnROb2RlO3JldHVybiBwLmdldENsb3Nlc3RJbnN0
YW5jZUZyb21Ob2RlKG4pfWZ1bmN0aW9uIG8oZSx0KXt0aGlzLnRvcExldmVsVHlwZT1lLHRoaXMu
bmF0aXZlRXZlbnQ9dCx0aGlzLmFuY2VzdG9ycz1bXX1mdW5jdGlvbiBpKGUpe3ZhciB0PWYoZS5u
YXRpdmVFdmVudCksbj1wLmdldENsb3Nlc3RJbnN0YW5jZUZyb21Ob2RlKHQpLG89bjtkbyBlLmFu
Y2VzdG9ycy5wdXNoKG8pLG89byYmcihvKTt3aGlsZShvKTtmb3IodmFyIGk9MDtpPGUuYW5jZXN0
b3JzLmxlbmd0aDtpKyspbj1lLmFuY2VzdG9yc1tpXSxtLl9oYW5kbGVUb3BMZXZlbChlLnRvcExl
dmVsVHlwZSxuLGUubmF0aXZlRXZlbnQsZihlLm5hdGl2ZUV2ZW50KSl9ZnVuY3Rpb24gYShlKXt2
YXIgdD1oKHdpbmRvdyk7ZSh0KX12YXIgcz1lKDE0MCksdT1lKDExOSksbD1lKDEyMCksYz1lKDI0
KSxwPWUoMzIpLGQ9ZSg3MSksZj1lKDEwMSksaD1lKDEzMSk7cyhvLnByb3RvdHlwZSx7ZGVzdHJ1
Y3RvcjpmdW5jdGlvbigpe3RoaXMudG9wTGV2ZWxUeXBlPW51bGwsdGhpcy5uYXRpdmVFdmVudD1u
dWxsLHRoaXMuYW5jZXN0b3JzLmxlbmd0aD0wfX0pLGMuYWRkUG9vbGluZ1RvKG8sYy50d29Bcmd1
bWVudFBvb2xlcik7dmFyIG09e19lbmFibGVkOiEwLF9oYW5kbGVUb3BMZXZlbDpudWxsLFdJTkRP
V19IQU5ETEU6bC5jYW5Vc2VET00/d2luZG93Om51bGwsc2V0SGFuZGxlVG9wTGV2ZWw6ZnVuY3Rp
b24oZSl7bS5faGFuZGxlVG9wTGV2ZWw9ZX0sc2V0RW5hYmxlZDpmdW5jdGlvbihlKXttLl9lbmFi
bGVkPSEhZX0saXNFbmFibGVkOmZ1bmN0aW9uKCl7cmV0dXJuIG0uX2VuYWJsZWR9LHRyYXBCdWJi
bGVkRXZlbnQ6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBuP3UubGlzdGVuKG4sdCxtLmRpc3BhdGNo
RXZlbnQuYmluZChudWxsLGUpKTpudWxsfSx0cmFwQ2FwdHVyZWRFdmVudDpmdW5jdGlvbihlLHQs
bil7cmV0dXJuIG4/dS5jYXB0dXJlKG4sdCxtLmRpc3BhdGNoRXZlbnQuYmluZChudWxsLGUpKTpu
dWxsfSxtb25pdG9yU2Nyb2xsVmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9YS5iaW5kKG51bGwsZSk7
dS5saXN0ZW4od2luZG93LCJzY3JvbGwiLHQpfSxkaXNwYXRjaEV2ZW50OmZ1bmN0aW9uKGUsdCl7
aWYobS5fZW5hYmxlZCl7dmFyIG49by5nZXRQb29sZWQoZSx0KTt0cnl7ZC5iYXRjaGVkVXBkYXRl
cyhpLG4pfWZpbmFsbHl7by5yZWxlYXNlKG4pfX19fTt0LmV4cG9ydHM9bX0sezEwMToxMDEsMTE5
OjExOSwxMjA6MTIwLDEzMToxMzEsMTQwOjE0MCwyNDoyNCwzMjozMiw3MTo3MX1dLDUyOltmdW5j
dGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPXtsb2dUb3BMZXZlbFJlbmRlcnM6ITF9O3Qu
ZXhwb3J0cz1yfSx7fV0sNTM6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
cihlKXtyZXR1cm4gdT92b2lkIDA6YSgiMTExIixlLnR5cGUpLG5ldyB1KGUpfWZ1bmN0aW9uIG8o
ZSl7cmV0dXJuIG5ldyBjKGUpfWZ1bmN0aW9uIGkoZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBjfXZh
ciBhPWUoMTExKSxzPWUoMTQwKSx1PShlKDEzNCksbnVsbCksbD17fSxjPW51bGwscD17aW5qZWN0
R2VuZXJpY0NvbXBvbmVudENsYXNzOmZ1bmN0aW9uKGUpe3U9ZX0saW5qZWN0VGV4dENvbXBvbmVu
dENsYXNzOmZ1bmN0aW9uKGUpe2M9ZX0saW5qZWN0Q29tcG9uZW50Q2xhc3NlczpmdW5jdGlvbihl
KXtzKGwsZSl9fSxkPXtjcmVhdGVJbnRlcm5hbENvbXBvbmVudDpyLGNyZWF0ZUluc3RhbmNlRm9y
VGV4dDpvLGlzVGV4dENvbXBvbmVudDppLGluamVjdGlvbjpwfTt0LmV4cG9ydHM9ZH0sezExMTox
MTEsMTM0OjEzNCwxNDA6MTQwfV0sNTQ6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFy
IHI9ZSgxMSksbz1lKDE2KSxpPWUoMTgpLGE9ZSgyOCkscz1lKDQ4KSx1PWUoMjUpLGw9ZSg1Myks
Yz1lKDcxKSxwPXtDb21wb25lbnQ6YS5pbmplY3Rpb24sRE9NUHJvcGVydHk6ci5pbmplY3Rpb24s
RW1wdHlDb21wb25lbnQ6cy5pbmplY3Rpb24sRXZlbnRQbHVnaW5IdWI6by5pbmplY3Rpb24sRXZl
bnRQbHVnaW5VdGlsczppLmluamVjdGlvbixFdmVudEVtaXR0ZXI6dS5pbmplY3Rpb24sSG9zdENv
bXBvbmVudDpsLmluamVjdGlvbixVcGRhdGVzOmMuaW5qZWN0aW9ufTt0LmV4cG9ydHM9cH0sezEx
OjExLDE2OjE2LDE4OjE4LDI1OjI1LDI4OjI4LDQ4OjQ4LDUzOjUzLDcxOjcxfV0sNTU6W2Z1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gaShkb2N1bWVudC5k
b2N1bWVudEVsZW1lbnQsZSl9dmFyIG89ZSgzOSksaT1lKDEyMyksYT1lKDEyOCkscz1lKDEyOSks
dT17aGFzU2VsZWN0aW9uQ2FwYWJpbGl0aWVzOmZ1bmN0aW9uKGUpe3ZhciB0PWUmJmUubm9kZU5h
bWUmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4gdCYmKCJpbnB1dCI9PT10JiYidGV4
dCI9PT1lLnR5cGV8fCJ0ZXh0YXJlYSI9PT10fHwidHJ1ZSI9PT1lLmNvbnRlbnRFZGl0YWJsZSl9
LGdldFNlbGVjdGlvbkluZm9ybWF0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9cygpO3JldHVybntmb2N1
c2VkRWxlbTplLHNlbGVjdGlvblJhbmdlOnUuaGFzU2VsZWN0aW9uQ2FwYWJpbGl0aWVzKGUpP3Uu
Z2V0U2VsZWN0aW9uKGUpOm51bGx9fSxyZXN0b3JlU2VsZWN0aW9uOmZ1bmN0aW9uKGUpe3ZhciB0
PXMoKSxuPWUuZm9jdXNlZEVsZW0sbz1lLnNlbGVjdGlvblJhbmdlO3QhPT1uJiZyKG4pJiYodS5o
YXNTZWxlY3Rpb25DYXBhYmlsaXRpZXMobikmJnUuc2V0U2VsZWN0aW9uKG4sbyksYShuKSl9LGdl
dFNlbGVjdGlvbjpmdW5jdGlvbihlKXt2YXIgdDtpZigic2VsZWN0aW9uU3RhcnQiaW4gZSl0PXtz
dGFydDplLnNlbGVjdGlvblN0YXJ0LGVuZDplLnNlbGVjdGlvbkVuZH07ZWxzZSBpZihkb2N1bWVu
dC5zZWxlY3Rpb24mJmUubm9kZU5hbWUmJiJpbnB1dCI9PT1lLm5vZGVOYW1lLnRvTG93ZXJDYXNl
KCkpe3ZhciBuPWRvY3VtZW50LnNlbGVjdGlvbi5jcmVhdGVSYW5nZSgpO24ucGFyZW50RWxlbWVu
dCgpPT09ZSYmKHQ9e3N0YXJ0Oi1uLm1vdmVTdGFydCgiY2hhcmFjdGVyIiwtZS52YWx1ZS5sZW5n
dGgpLGVuZDotbi5tb3ZlRW5kKCJjaGFyYWN0ZXIiLC1lLnZhbHVlLmxlbmd0aCl9KX1lbHNlIHQ9
by5nZXRPZmZzZXRzKGUpO3JldHVybiB0fHx7c3RhcnQ6MCxlbmQ6MH19LHNldFNlbGVjdGlvbjpm
dW5jdGlvbihlLHQpe3ZhciBuPXQuc3RhcnQscj10LmVuZDtpZih2b2lkIDA9PT1yJiYocj1uKSwi
c2VsZWN0aW9uU3RhcnQiaW4gZSllLnNlbGVjdGlvblN0YXJ0PW4sZS5zZWxlY3Rpb25FbmQ9TWF0
aC5taW4ocixlLnZhbHVlLmxlbmd0aCk7ZWxzZSBpZihkb2N1bWVudC5zZWxlY3Rpb24mJmUubm9k
ZU5hbWUmJiJpbnB1dCI9PT1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpe3ZhciBpPWUuY3JlYXRl
VGV4dFJhbmdlKCk7aS5jb2xsYXBzZSghMCksaS5tb3ZlU3RhcnQoImNoYXJhY3RlciIsbiksaS5t
b3ZlRW5kKCJjaGFyYWN0ZXIiLHItbiksaS5zZWxlY3QoKX1lbHNlIG8uc2V0T2Zmc2V0cyhlLHQp
fX07dC5leHBvcnRzPXV9LHsxMjM6MTIzLDEyODoxMjgsMTI5OjEyOSwzOTozOX1dLDU2OltmdW5j
dGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPXtyZW1vdmU6ZnVuY3Rpb24oZSl7ZS5fcmVh
Y3RJbnRlcm5hbEluc3RhbmNlPXZvaWQgMH0sZ2V0OmZ1bmN0aW9uKGUpe3JldHVybiBlLl9yZWFj
dEludGVybmFsSW5zdGFuY2V9LGhhczpmdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwIT09ZS5fcmVh
Y3RJbnRlcm5hbEluc3RhbmNlfSxzZXQ6ZnVuY3Rpb24oZSx0KXtlLl9yZWFjdEludGVybmFsSW5z
dGFuY2U9dH19O3QuZXhwb3J0cz1yfSx7fV0sNTc6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7dmFyIHI9bnVsbDt0LmV4cG9ydHM9e2RlYnVnVG9vbDpyfX0se31dLDU4OltmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoOTIpLG89L1wvPz4vLGk9L148XCFcLVwtLyxhPXtD
SEVDS1NVTV9BVFRSX05BTUU6ImRhdGEtcmVhY3QtY2hlY2tzdW0iLGFkZENoZWNrc3VtVG9NYXJr
dXA6ZnVuY3Rpb24oZSl7dmFyIHQ9cihlKTtyZXR1cm4gaS50ZXN0KGUpP2U6ZS5yZXBsYWNlKG8s
IiAiK2EuQ0hFQ0tTVU1fQVRUUl9OQU1FKyc9IicrdCsnIiQmJyl9LGNhblJldXNlTWFya3VwOmZ1
bmN0aW9uKGUsdCl7dmFyIG49dC5nZXRBdHRyaWJ1dGUoYS5DSEVDS1NVTV9BVFRSX05BTUUpO249
biYmcGFyc2VJbnQobiwxMCk7dmFyIG89cihlKTtyZXR1cm4gbz09PW59fTt0LmV4cG9ydHM9YX0s
ezkyOjkyfV0sNTk6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQs
bil7cmV0dXJue3R5cGU6IklOU0VSVF9NQVJLVVAiLGNvbnRlbnQ6ZSxmcm9tSW5kZXg6bnVsbCxm
cm9tTm9kZTpudWxsLHRvSW5kZXg6bixhZnRlck5vZGU6dH19ZnVuY3Rpb24gbyhlLHQsbil7cmV0
dXJue3R5cGU6Ik1PVkVfRVhJU1RJTkciLGNvbnRlbnQ6bnVsbCxmcm9tSW5kZXg6ZS5fbW91bnRJ
bmRleCxmcm9tTm9kZTpkLmdldEhvc3ROb2RlKGUpLHRvSW5kZXg6bixhZnRlck5vZGU6dH19ZnVu
Y3Rpb24gaShlLHQpe3JldHVybnt0eXBlOiJSRU1PVkVfTk9ERSIsY29udGVudDpudWxsLGZyb21J
bmRleDplLl9tb3VudEluZGV4LGZyb21Ob2RlOnQsdG9JbmRleDpudWxsLGFmdGVyTm9kZTpudWxs
fX1mdW5jdGlvbiBhKGUpe3JldHVybnt0eXBlOiJTRVRfTUFSS1VQIixjb250ZW50OmUsZnJvbUlu
ZGV4Om51bGwsZnJvbU5vZGU6bnVsbCx0b0luZGV4Om51bGwsYWZ0ZXJOb2RlOm51bGx9fWZ1bmN0
aW9uIHMoZSl7cmV0dXJue3R5cGU6IlRFWFRfQ09OVEVOVCIsY29udGVudDplLGZyb21JbmRleDpu
dWxsLGZyb21Ob2RlOm51bGwsdG9JbmRleDpudWxsLGFmdGVyTm9kZTpudWxsfX1mdW5jdGlvbiB1
KGUsdCl7cmV0dXJuIHQmJihlPWV8fFtdLGUucHVzaCh0KSksZX1mdW5jdGlvbiBsKGUsdCl7cC5w
cm9jZXNzQ2hpbGRyZW5VcGRhdGVzKGUsdCl9dmFyIGM9ZSgxMTEpLHA9ZSgyOCksZD0oZSg1Niks
ZSg1NyksZSgxMTcpLGUoNjQpKSxmPWUoMjYpLGg9KGUoMTI2KSxlKDk2KSksbT0oZSgxMzQpLHtN
aXhpbjp7X3JlY29uY2lsZXJJbnN0YW50aWF0ZUNoaWxkcmVuOmZ1bmN0aW9uKGUsdCxuKXtyZXR1
cm4gZi5pbnN0YW50aWF0ZUNoaWxkcmVuKGUsdCxuKX0sX3JlY29uY2lsZXJVcGRhdGVDaGlsZHJl
bjpmdW5jdGlvbihlLHQsbixyLG8saSl7dmFyIGEscz0wO3JldHVybiBhPWgodCxzKSxmLnVwZGF0
ZUNoaWxkcmVuKGUsYSxuLHIsbyx0aGlzLHRoaXMuX2hvc3RDb250YWluZXJJbmZvLGkscyksYX0s
bW91bnRDaGlsZHJlbjpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy5fcmVjb25jaWxlckluc3Rh
bnRpYXRlQ2hpbGRyZW4oZSx0LG4pO3RoaXMuX3JlbmRlcmVkQ2hpbGRyZW49cjt2YXIgbz1bXSxp
PTA7Zm9yKHZhciBhIGluIHIpaWYoci5oYXNPd25Qcm9wZXJ0eShhKSl7dmFyIHM9clthXSx1PTAs
bD1kLm1vdW50Q29tcG9uZW50KHMsdCx0aGlzLHRoaXMuX2hvc3RDb250YWluZXJJbmZvLG4sdSk7
cy5fbW91bnRJbmRleD1pKyssby5wdXNoKGwpfXJldHVybiBvfSx1cGRhdGVUZXh0Q29udGVudDpm
dW5jdGlvbihlKXt2YXIgdD10aGlzLl9yZW5kZXJlZENoaWxkcmVuO2YudW5tb3VudENoaWxkcmVu
KHQsITEpO2Zvcih2YXIgbiBpbiB0KXQuaGFzT3duUHJvcGVydHkobikmJmMoIjExOCIpO3ZhciBy
PVtzKGUpXTtsKHRoaXMscil9LHVwZGF0ZU1hcmt1cDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLl9y
ZW5kZXJlZENoaWxkcmVuO2YudW5tb3VudENoaWxkcmVuKHQsITEpO2Zvcih2YXIgbiBpbiB0KXQu
aGFzT3duUHJvcGVydHkobikmJmMoIjExOCIpO3ZhciByPVthKGUpXTtsKHRoaXMscil9LHVwZGF0
ZUNoaWxkcmVuOmZ1bmN0aW9uKGUsdCxuKXt0aGlzLl91cGRhdGVDaGlsZHJlbihlLHQsbil9LF91
cGRhdGVDaGlsZHJlbjpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy5fcmVuZGVyZWRDaGlsZHJl
bixvPXt9LGk9W10sYT10aGlzLl9yZWNvbmNpbGVyVXBkYXRlQ2hpbGRyZW4ocixlLGksbyx0LG4p
O2lmKGF8fHIpe3ZhciBzLGM9bnVsbCxwPTAsZj0wLGg9MCxtPW51bGw7Zm9yKHMgaW4gYSlpZihh
Lmhhc093blByb3BlcnR5KHMpKXt2YXIgdj1yJiZyW3NdLGc9YVtzXTt2PT09Zz8oYz11KGMsdGhp
cy5tb3ZlQ2hpbGQodixtLHAsZikpLGY9TWF0aC5tYXgodi5fbW91bnRJbmRleCxmKSx2Ll9tb3Vu
dEluZGV4PXApOih2JiYoZj1NYXRoLm1heCh2Ll9tb3VudEluZGV4LGYpKSxjPXUoYyx0aGlzLl9t
b3VudENoaWxkQXRJbmRleChnLGlbaF0sbSxwLHQsbikpLGgrKykscCsrLG09ZC5nZXRIb3N0Tm9k
ZShnKX1mb3IocyBpbiBvKW8uaGFzT3duUHJvcGVydHkocykmJihjPXUoYyx0aGlzLl91bm1vdW50
Q2hpbGQocltzXSxvW3NdKSkpO2MmJmwodGhpcyxjKSx0aGlzLl9yZW5kZXJlZENoaWxkcmVuPWF9
fSx1bm1vdW50Q2hpbGRyZW46ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fcmVuZGVyZWRDaGlsZHJl
bjtmLnVubW91bnRDaGlsZHJlbih0LGUpLHRoaXMuX3JlbmRlcmVkQ2hpbGRyZW49bnVsbH0sbW92
ZUNoaWxkOmZ1bmN0aW9uKGUsdCxuLHIpe2lmKGUuX21vdW50SW5kZXg8cilyZXR1cm4gbyhlLHQs
bil9LGNyZWF0ZUNoaWxkOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gcihuLHQsZS5fbW91bnRJbmRl
eCl9LHJlbW92ZUNoaWxkOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGkoZSx0KX0sX21vdW50Q2hpbGRB
dEluZGV4OmZ1bmN0aW9uKGUsdCxuLHIsbyxpKXtyZXR1cm4gZS5fbW91bnRJbmRleD1yLHRoaXMu
Y3JlYXRlQ2hpbGQoZSxuLHQpfSxfdW5tb3VudENoaWxkOmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhp
cy5yZW1vdmVDaGlsZChlLHQpO3JldHVybiBlLl9tb3VudEluZGV4PW51bGwsbn19fSk7dC5leHBv
cnRzPW19LHsxMTE6MTExLDExNzoxMTcsMTI2OjEyNiwxMzQ6MTM0LDI2OjI2LDI4OjI4LDU2OjU2
LDU3OjU3LDY0OjY0LDk2Ojk2fV0sNjA6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFy
IHI9ZSgxMTEpLG89ZSgxMTgpLGk9KGUoMTM0KSx7SE9TVDowLENPTVBPU0lURToxLEVNUFRZOjIs
Z2V0VHlwZTpmdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09PWV8fGU9PT0hMT9pLkVNUFRZOm8uaXNW
YWxpZEVsZW1lbnQoZSk/ImZ1bmN0aW9uIj09dHlwZW9mIGUudHlwZT9pLkNPTVBPU0lURTppLkhP
U1Q6dm9pZCByKCIyNiIsZSl9fSk7dC5leHBvcnRzPWl9LHsxMTE6MTExLDExODoxMTgsMTM0OjEz
NH1dLDYxOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJu
ISghZXx8ImZ1bmN0aW9uIiE9dHlwZW9mIGUuYXR0YWNoUmVmfHwiZnVuY3Rpb24iIT10eXBlb2Yg
ZS5kZXRhY2hSZWYpfXZhciBvPWUoMTExKSxpPShlKDEzNCkse2FkZENvbXBvbmVudEFzUmVmVG86
ZnVuY3Rpb24oZSx0LG4pe3Iobik/dm9pZCAwOm8oIjExOSIpLG4uYXR0YWNoUmVmKHQsZSl9LHJl
bW92ZUNvbXBvbmVudEFzUmVmRnJvbTpmdW5jdGlvbihlLHQsbil7cihuKT92b2lkIDA6bygiMTIw
Iik7dmFyIGk9bi5nZXRQdWJsaWNJbnN0YW5jZSgpO2kmJmkucmVmc1t0XT09PWUuZ2V0UHVibGlj
SW5zdGFuY2UoKSYmbi5kZXRhY2hSZWYodCl9fSk7dC5leHBvcnRzPWl9LHsxMTE6MTExLDEzNDox
MzR9XSw2MjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj0iU0VDUkVUX0RPX05P
VF9QQVNTX1RISVNfT1JfWU9VX1dJTExfQkVfRklSRUQiO3QuZXhwb3J0cz1yfSx7fV0sNjM6W2Z1
bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt0aGlzLnJlaW5pdGlhbGl6
ZVRyYW5zYWN0aW9uKCksdGhpcy5yZW5kZXJUb1N0YXRpY01hcmt1cD0hMSx0aGlzLnJlYWN0TW91
bnRSZWFkeT1pLmdldFBvb2xlZChudWxsKSx0aGlzLnVzZUNyZWF0ZUVsZW1lbnQ9ZX12YXIgbz1l
KDE0MCksaT1lKDYpLGE9ZSgyNCkscz1lKDI1KSx1PWUoNTUpLGw9KGUoNTcpLGUoODkpKSxjPWUo
NzApLHA9e2luaXRpYWxpemU6dS5nZXRTZWxlY3Rpb25JbmZvcm1hdGlvbixjbG9zZTp1LnJlc3Rv
cmVTZWxlY3Rpb259LGQ9e2luaXRpYWxpemU6ZnVuY3Rpb24oKXt2YXIgZT1zLmlzRW5hYmxlZCgp
O3JldHVybiBzLnNldEVuYWJsZWQoITEpLGV9LGNsb3NlOmZ1bmN0aW9uKGUpe3Muc2V0RW5hYmxl
ZChlKX19LGY9e2luaXRpYWxpemU6ZnVuY3Rpb24oKXt0aGlzLnJlYWN0TW91bnRSZWFkeS5yZXNl
dCgpfSxjbG9zZTpmdW5jdGlvbigpe3RoaXMucmVhY3RNb3VudFJlYWR5Lm5vdGlmeUFsbCgpfX0s
aD1bcCxkLGZdLG09e2dldFRyYW5zYWN0aW9uV3JhcHBlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gaH0s
Z2V0UmVhY3RNb3VudFJlYWR5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhY3RNb3VudFJlYWR5
fSxnZXRVcGRhdGVRdWV1ZTpmdW5jdGlvbigpe3JldHVybiBjfSxjaGVja3BvaW50OmZ1bmN0aW9u
KCl7cmV0dXJuIHRoaXMucmVhY3RNb3VudFJlYWR5LmNoZWNrcG9pbnQoKX0scm9sbGJhY2s6ZnVu
Y3Rpb24oZSl7dGhpcy5yZWFjdE1vdW50UmVhZHkucm9sbGJhY2soZSl9LGRlc3RydWN0b3I6ZnVu
Y3Rpb24oKXtpLnJlbGVhc2UodGhpcy5yZWFjdE1vdW50UmVhZHkpLHRoaXMucmVhY3RNb3VudFJl
YWR5PW51bGx9fTtvKHIucHJvdG90eXBlLGwsbSksYS5hZGRQb29saW5nVG8ociksdC5leHBvcnRz
PXJ9LHsxNDA6MTQwLDI0OjI0LDI1OjI1LDU1OjU1LDU3OjU3LDY6Niw3MDo3MCw4OTo4OX1dLDY0
OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXtvLmF0dGFjaFJlZnMo
dGhpcyx0aGlzLl9jdXJyZW50RWxlbWVudCl9dmFyIG89ZSg2NSksaT0oZSg1NyksZSgxMzkpLHtt
b3VudENvbXBvbmVudDpmdW5jdGlvbihlLHQsbixvLGksYSl7dmFyIHM9ZS5tb3VudENvbXBvbmVu
dCh0LG4sbyxpLGEpO3JldHVybiBlLl9jdXJyZW50RWxlbWVudCYmbnVsbCE9ZS5fY3VycmVudEVs
ZW1lbnQucmVmJiZ0LmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUocixlKSxzfSxnZXRIb3N0
Tm9kZTpmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRIb3N0Tm9kZSgpfSx1bm1vdW50Q29tcG9uZW50
OmZ1bmN0aW9uKGUsdCl7by5kZXRhY2hSZWZzKGUsZS5fY3VycmVudEVsZW1lbnQpLGUudW5tb3Vu
dENvbXBvbmVudCh0KX0scmVjZWl2ZUNvbXBvbmVudDpmdW5jdGlvbihlLHQsbixpKXt2YXIgYT1l
Ll9jdXJyZW50RWxlbWVudDtpZih0IT09YXx8aSE9PWUuX2NvbnRleHQpe3ZhciBzPW8uc2hvdWxk
VXBkYXRlUmVmcyhhLHQpO3MmJm8uZGV0YWNoUmVmcyhlLGEpLGUucmVjZWl2ZUNvbXBvbmVudCh0
LG4saSkscyYmZS5fY3VycmVudEVsZW1lbnQmJm51bGwhPWUuX2N1cnJlbnRFbGVtZW50LnJlZiYm
bi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHIsZSl9fSxwZXJmb3JtVXBkYXRlSWZOZWNl
c3Nhcnk6ZnVuY3Rpb24oZSx0LG4pe2UuX3VwZGF0ZUJhdGNoTnVtYmVyPT09biYmZS5wZXJmb3Jt
VXBkYXRlSWZOZWNlc3NhcnkodCl9fSk7dC5leHBvcnRzPWl9LHsxMzk6MTM5LDU3OjU3LDY1OjY1
fV0sNjU6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbil7ImZ1
bmN0aW9uIj09dHlwZW9mIGU/ZSh0LmdldFB1YmxpY0luc3RhbmNlKCkpOmkuYWRkQ29tcG9uZW50
QXNSZWZUbyh0LGUsbil9ZnVuY3Rpb24gbyhlLHQsbil7ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZShu
dWxsKTppLnJlbW92ZUNvbXBvbmVudEFzUmVmRnJvbSh0LGUsbil9dmFyIGk9ZSg2MSksYT17fTth
LmF0dGFjaFJlZnM9ZnVuY3Rpb24oZSx0KXtpZihudWxsIT09dCYmIm9iamVjdCI9PXR5cGVvZiB0
KXt2YXIgbj10LnJlZjtudWxsIT1uJiZyKG4sZSx0Ll9vd25lcil9fSxhLnNob3VsZFVwZGF0ZVJl
ZnM9ZnVuY3Rpb24oZSx0KXt2YXIgbj1udWxsLHI9bnVsbDtudWxsIT09ZSYmIm9iamVjdCI9PXR5
cGVvZiBlJiYobj1lLnJlZixyPWUuX293bmVyKTt2YXIgbz1udWxsLGk9bnVsbDtyZXR1cm4gbnVs
bCE9PXQmJiJvYmplY3QiPT10eXBlb2YgdCYmKG89dC5yZWYsaT10Ll9vd25lciksbiE9PW98fCJz
dHJpbmciPT10eXBlb2YgbyYmaSE9PXJ9LGEuZGV0YWNoUmVmcz1mdW5jdGlvbihlLHQpe2lmKG51
bGwhPT10JiYib2JqZWN0Ij09dHlwZW9mIHQpe3ZhciBuPXQucmVmO251bGwhPW4mJm8obixlLHQu
X293bmVyKX19LHQuZXhwb3J0cz1hfSx7NjE6NjF9XSw2NjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ug
c3RyaWN0Ijt2YXIgcj17aXNCYXRjaGluZ1VwZGF0ZXM6ITEsYmF0Y2hlZFVwZGF0ZXM6ZnVuY3Rp
b24oZSl7fX07dC5leHBvcnRzPXJ9LHt9XSw2NzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiByKGUsdCl7dmFyIG47dHJ5e3JldHVybiBoLmluamVjdGlvbi5pbmplY3RCYXRj
aGluZ1N0cmF0ZWd5KGQpLG49Zi5nZXRQb29sZWQodCksZysrLG4ucGVyZm9ybShmdW5jdGlvbigp
e3ZhciByPXYoZSwhMCksbz1wLm1vdW50Q29tcG9uZW50KHIsbixudWxsLHUoKSxtLDApO3JldHVy
biB0fHwobz1jLmFkZENoZWNrc3VtVG9NYXJrdXAobykpLG99LG51bGwpfWZpbmFsbHl7Zy0tLGYu
cmVsZWFzZShuKSxnfHxoLmluamVjdGlvbi5pbmplY3RCYXRjaGluZ1N0cmF0ZWd5KGwpfX1mdW5j
dGlvbiBvKGUpe3JldHVybiBzLmlzVmFsaWRFbGVtZW50KGUpP3ZvaWQgMDphKCI0NiIpLHIoZSwh
MSl9ZnVuY3Rpb24gaShlKXtyZXR1cm4gcy5pc1ZhbGlkRWxlbWVudChlKT92b2lkIDA6YSgiNDci
KSxyKGUsITApfXZhciBhPWUoMTExKSxzPWUoMTE4KSx1PWUoMzMpLGw9ZSg0NSksYz0oZSg1Nyks
ZSg1OCkpLHA9ZSg2NCksZD1lKDY2KSxmPWUoNjgpLGg9ZSg3MSksbT1lKDEyNyksdj1lKDEwNyks
Zz0oZSgxMzQpLDApO3QuZXhwb3J0cz17cmVuZGVyVG9TdHJpbmc6byxyZW5kZXJUb1N0YXRpY01h
cmt1cDppfX0sezEwNzoxMDcsMTExOjExMSwxMTg6MTE4LDEyNzoxMjcsMTM0OjEzNCwzMzozMyw0
NTo0NSw1Nzo1Nyw1ODo1OCw2NDo2NCw2Njo2Niw2ODo2OCw3MTo3MX1dLDY4OltmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dGhpcy5yZWluaXRpYWxpemVUcmFuc2Fj
dGlvbigpLHRoaXMucmVuZGVyVG9TdGF0aWNNYXJrdXA9ZSx0aGlzLnVzZUNyZWF0ZUVsZW1lbnQ9
ITEsdGhpcy51cGRhdGVRdWV1ZT1uZXcgcyh0aGlzKX12YXIgbz1lKDE0MCksaT1lKDI0KSxhPWUo
ODkpLHM9KGUoNTcpLGUoNjkpKSx1PVtdLGw9e2VucXVldWU6ZnVuY3Rpb24oKXt9fSxjPXtnZXRU
cmFuc2FjdGlvbldyYXBwZXJzOmZ1bmN0aW9uKCl7cmV0dXJuIHV9LGdldFJlYWN0TW91bnRSZWFk
eTpmdW5jdGlvbigpe3JldHVybiBsfSxnZXRVcGRhdGVRdWV1ZTpmdW5jdGlvbigpe3JldHVybiB0
aGlzLnVwZGF0ZVF1ZXVlfSxkZXN0cnVjdG9yOmZ1bmN0aW9uKCl7fSxjaGVja3BvaW50OmZ1bmN0
aW9uKCl7fSxyb2xsYmFjazpmdW5jdGlvbigpe319O28oci5wcm90b3R5cGUsYSxjKSxpLmFkZFBv
b2xpbmdUbyhyKSx0LmV4cG9ydHM9cn0sezE0MDoxNDAsMjQ6MjQsNTc6NTcsNjk6NjksODk6ODl9
XSw2OTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7aWYoIShl
IGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBh
cyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gbyhlLHQpe312YXIgaT1lKDcwKSxhPShlKDEzOSksZnVu
Y3Rpb24oKXtmdW5jdGlvbiBlKHQpe3IodGhpcyxlKSx0aGlzLnRyYW5zYWN0aW9uPXR9cmV0dXJu
IGUucHJvdG90eXBlLmlzTW91bnRlZD1mdW5jdGlvbihlKXtyZXR1cm4hMX0sZS5wcm90b3R5cGUu
ZW5xdWV1ZUNhbGxiYWNrPWZ1bmN0aW9uKGUsdCxuKXt0aGlzLnRyYW5zYWN0aW9uLmlzSW5UcmFu
c2FjdGlvbigpJiZpLmVucXVldWVDYWxsYmFjayhlLHQsbil9LGUucHJvdG90eXBlLmVucXVldWVG
b3JjZVVwZGF0ZT1mdW5jdGlvbihlKXt0aGlzLnRyYW5zYWN0aW9uLmlzSW5UcmFuc2FjdGlvbigp
P2kuZW5xdWV1ZUZvcmNlVXBkYXRlKGUpOm8oZSwiZm9yY2VVcGRhdGUiKX0sZS5wcm90b3R5cGUu
ZW5xdWV1ZVJlcGxhY2VTdGF0ZT1mdW5jdGlvbihlLHQpe3RoaXMudHJhbnNhY3Rpb24uaXNJblRy
YW5zYWN0aW9uKCk/aS5lbnF1ZXVlUmVwbGFjZVN0YXRlKGUsdCk6byhlLCJyZXBsYWNlU3RhdGUi
KX0sZS5wcm90b3R5cGUuZW5xdWV1ZVNldFN0YXRlPWZ1bmN0aW9uKGUsdCl7dGhpcy50cmFuc2Fj
dGlvbi5pc0luVHJhbnNhY3Rpb24oKT9pLmVucXVldWVTZXRTdGF0ZShlLHQpOm8oZSwic2V0U3Rh
dGUiKX0sZX0oKSk7dC5leHBvcnRzPWF9LHsxMzk6MTM5LDcwOjcwfV0sNzA6W2Z1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt1LmVucXVldWVVcGRhdGUoZSl9ZnVuY3Rp
b24gbyhlKXt2YXIgdD10eXBlb2YgZTtpZigib2JqZWN0IiE9PXQpcmV0dXJuIHQ7dmFyIG49ZS5j
b25zdHJ1Y3RvciYmZS5jb25zdHJ1Y3Rvci5uYW1lfHx0LHI9T2JqZWN0LmtleXMoZSk7cmV0dXJu
IHIubGVuZ3RoPjAmJnIubGVuZ3RoPDIwP24rIiAoa2V5czogIityLmpvaW4oIiwgIikrIikiOm59
ZnVuY3Rpb24gaShlLHQpe3ZhciBuPXMuZ2V0KGUpO3JldHVybiBuP246bnVsbH12YXIgYT1lKDEx
MSkscz0oZSgxMTcpLGUoNTYpKSx1PShlKDU3KSxlKDcxKSksbD0oZSgxMzQpLGUoMTM5KSx7aXNN
b3VudGVkOmZ1bmN0aW9uKGUpe3ZhciB0PXMuZ2V0KGUpO3JldHVybiEhdCYmISF0Ll9yZW5kZXJl
ZENvbXBvbmVudH0sZW5xdWV1ZUNhbGxiYWNrOmZ1bmN0aW9uKGUsdCxuKXtsLnZhbGlkYXRlQ2Fs
bGJhY2sodCxuKTt2YXIgbz1pKGUpO3JldHVybiBvPyhvLl9wZW5kaW5nQ2FsbGJhY2tzP28uX3Bl
bmRpbmdDYWxsYmFja3MucHVzaCh0KTpvLl9wZW5kaW5nQ2FsbGJhY2tzPVt0XSx2b2lkIHIobykp
Om51bGx9LGVucXVldWVDYWxsYmFja0ludGVybmFsOmZ1bmN0aW9uKGUsdCl7ZS5fcGVuZGluZ0Nh
bGxiYWNrcz9lLl9wZW5kaW5nQ2FsbGJhY2tzLnB1c2godCk6ZS5fcGVuZGluZ0NhbGxiYWNrcz1b
dF0scihlKX0sZW5xdWV1ZUZvcmNlVXBkYXRlOmZ1bmN0aW9uKGUpe3ZhciB0PWkoZSwiZm9yY2VV
cGRhdGUiKTt0JiYodC5fcGVuZGluZ0ZvcmNlVXBkYXRlPSEwLHIodCkpfSxlbnF1ZXVlUmVwbGFj
ZVN0YXRlOmZ1bmN0aW9uKGUsdCl7dmFyIG49aShlLCJyZXBsYWNlU3RhdGUiKTtuJiYobi5fcGVu
ZGluZ1N0YXRlUXVldWU9W3RdLG4uX3BlbmRpbmdSZXBsYWNlU3RhdGU9ITAscihuKSl9LGVucXVl
dWVTZXRTdGF0ZTpmdW5jdGlvbihlLHQpe3ZhciBuPWkoZSwic2V0U3RhdGUiKTtpZihuKXt2YXIg
bz1uLl9wZW5kaW5nU3RhdGVRdWV1ZXx8KG4uX3BlbmRpbmdTdGF0ZVF1ZXVlPVtdKTtvLnB1c2go
dCkscihuKX19LGVucXVldWVFbGVtZW50SW50ZXJuYWw6ZnVuY3Rpb24oZSx0LG4pe2UuX3BlbmRp
bmdFbGVtZW50PXQsZS5fY29udGV4dD1uLHIoZSl9LHZhbGlkYXRlQ2FsbGJhY2s6ZnVuY3Rpb24o
ZSx0KXtlJiYiZnVuY3Rpb24iIT10eXBlb2YgZT9hKCIxMjIiLHQsbyhlKSk6dm9pZCAwfX0pO3Qu
ZXhwb3J0cz1sfSx7MTExOjExMSwxMTc6MTE3LDEzNDoxMzQsMTM5OjEzOSw1Njo1Niw1Nzo1Nyw3
MTo3MX1dLDcxOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXtQLlJl
YWN0UmVjb25jaWxlVHJhbnNhY3Rpb24mJmI/dm9pZCAwOmMoIjEyMyIpfWZ1bmN0aW9uIG8oKXt0
aGlzLnJlaW5pdGlhbGl6ZVRyYW5zYWN0aW9uKCksdGhpcy5kaXJ0eUNvbXBvbmVudHNMZW5ndGg9
bnVsbCx0aGlzLmNhbGxiYWNrUXVldWU9ZC5nZXRQb29sZWQoKSx0aGlzLnJlY29uY2lsZVRyYW5z
YWN0aW9uPVAuUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbi5nZXRQb29sZWQoITApfWZ1bmN0aW9u
IGkoZSx0LG4sbyxpLGEpe3JldHVybiByKCksYi5iYXRjaGVkVXBkYXRlcyhlLHQsbixvLGksYSl9
ZnVuY3Rpb24gYShlLHQpe3JldHVybiBlLl9tb3VudE9yZGVyLXQuX21vdW50T3JkZXJ9ZnVuY3Rp
b24gcyhlKXt2YXIgdD1lLmRpcnR5Q29tcG9uZW50c0xlbmd0aDt0IT09Zy5sZW5ndGg/YygiMTI0
Iix0LGcubGVuZ3RoKTp2b2lkIDAsZy5zb3J0KGEpLHkrKztmb3IodmFyIG49MDtuPHQ7bisrKXt2
YXIgcj1nW25dLG89ci5fcGVuZGluZ0NhbGxiYWNrcztyLl9wZW5kaW5nQ2FsbGJhY2tzPW51bGw7
dmFyIGk7aWYoaC5sb2dUb3BMZXZlbFJlbmRlcnMpe3ZhciBzPXI7ci5fY3VycmVudEVsZW1lbnQu
dHlwZS5pc1JlYWN0VG9wTGV2ZWxXcmFwcGVyJiYocz1yLl9yZW5kZXJlZENvbXBvbmVudCksaT0i
UmVhY3QgdXBkYXRlOiAiK3MuZ2V0TmFtZSgpLGNvbnNvbGUudGltZShpKX1pZihtLnBlcmZvcm1V
cGRhdGVJZk5lY2Vzc2FyeShyLGUucmVjb25jaWxlVHJhbnNhY3Rpb24seSksaSYmY29uc29sZS50
aW1lRW5kKGkpLG8pZm9yKHZhciB1PTA7dTxvLmxlbmd0aDt1KyspZS5jYWxsYmFja1F1ZXVlLmVu
cXVldWUob1t1XSxyLmdldFB1YmxpY0luc3RhbmNlKCkpfX1mdW5jdGlvbiB1KGUpe3JldHVybiBy
KCksYi5pc0JhdGNoaW5nVXBkYXRlcz8oZy5wdXNoKGUpLHZvaWQobnVsbD09ZS5fdXBkYXRlQmF0
Y2hOdW1iZXImJihlLl91cGRhdGVCYXRjaE51bWJlcj15KzEpKSk6dm9pZCBiLmJhdGNoZWRVcGRh
dGVzKHUsZSl9ZnVuY3Rpb24gbChlLHQpe2IuaXNCYXRjaGluZ1VwZGF0ZXM/dm9pZCAwOmMoIjEy
NSIpLF8uZW5xdWV1ZShlLHQpLEM9ITB9dmFyIGM9ZSgxMTEpLHA9ZSgxNDApLGQ9ZSg2KSxmPWUo
MjQpLGg9ZSg1MiksbT1lKDY0KSx2PWUoODkpLGc9KGUoMTM0KSxbXSkseT0wLF89ZC5nZXRQb29s
ZWQoKSxDPSExLGI9bnVsbCxFPXtpbml0aWFsaXplOmZ1bmN0aW9uKCl7dGhpcy5kaXJ0eUNvbXBv
bmVudHNMZW5ndGg9Zy5sZW5ndGh9LGNsb3NlOmZ1bmN0aW9uKCl7dGhpcy5kaXJ0eUNvbXBvbmVu
dHNMZW5ndGghPT1nLmxlbmd0aD8oZy5zcGxpY2UoMCx0aGlzLmRpcnR5Q29tcG9uZW50c0xlbmd0
aCksaygpKTpnLmxlbmd0aD0wfX0seD17aW5pdGlhbGl6ZTpmdW5jdGlvbigpe3RoaXMuY2FsbGJh
Y2tRdWV1ZS5yZXNldCgpfSxjbG9zZTpmdW5jdGlvbigpe3RoaXMuY2FsbGJhY2tRdWV1ZS5ub3Rp
ZnlBbGwoKX19LHc9W0UseF07cChvLnByb3RvdHlwZSx2LHtnZXRUcmFuc2FjdGlvbldyYXBwZXJz
OmZ1bmN0aW9uKCl7cmV0dXJuIHd9LGRlc3RydWN0b3I6ZnVuY3Rpb24oKXt0aGlzLmRpcnR5Q29t
cG9uZW50c0xlbmd0aD1udWxsLGQucmVsZWFzZSh0aGlzLmNhbGxiYWNrUXVldWUpLHRoaXMuY2Fs
bGJhY2tRdWV1ZT1udWxsLFAuUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbi5yZWxlYXNlKHRoaXMu
cmVjb25jaWxlVHJhbnNhY3Rpb24pLHRoaXMucmVjb25jaWxlVHJhbnNhY3Rpb249bnVsbH0scGVy
Zm9ybTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIHYucGVyZm9ybS5jYWxsKHRoaXMsdGhpcy5yZWNv
bmNpbGVUcmFuc2FjdGlvbi5wZXJmb3JtLHRoaXMucmVjb25jaWxlVHJhbnNhY3Rpb24sZSx0LG4p
fX0pLGYuYWRkUG9vbGluZ1RvKG8pO3ZhciBrPWZ1bmN0aW9uKCl7Zm9yKDtnLmxlbmd0aHx8Qzsp
e2lmKGcubGVuZ3RoKXt2YXIgZT1vLmdldFBvb2xlZCgpO2UucGVyZm9ybShzLG51bGwsZSksby5y
ZWxlYXNlKGUpfWlmKEMpe0M9ITE7dmFyIHQ9XztfPWQuZ2V0UG9vbGVkKCksdC5ub3RpZnlBbGwo
KSxkLnJlbGVhc2UodCl9fX0sVD17aW5qZWN0UmVjb25jaWxlVHJhbnNhY3Rpb246ZnVuY3Rpb24o
ZSl7ZT92b2lkIDA6YygiMTI2IiksUC5SZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uPWV9LGluamVj
dEJhdGNoaW5nU3RyYXRlZ3k6ZnVuY3Rpb24oZSl7ZT92b2lkIDA6YygiMTI3IiksImZ1bmN0aW9u
IiE9dHlwZW9mIGUuYmF0Y2hlZFVwZGF0ZXM/YygiMTI4Iik6dm9pZCAwLCJib29sZWFuIiE9dHlw
ZW9mIGUuaXNCYXRjaGluZ1VwZGF0ZXM/YygiMTI5Iik6dm9pZCAwLGI9ZX19LFA9e1JlYWN0UmVj
b25jaWxlVHJhbnNhY3Rpb246bnVsbCxiYXRjaGVkVXBkYXRlczppLGVucXVldWVVcGRhdGU6dSxm
bHVzaEJhdGNoZWRVcGRhdGVzOmssaW5qZWN0aW9uOlQsYXNhcDpsfTt0LmV4cG9ydHM9UH0sezEx
MToxMTEsMTM0OjEzNCwxNDA6MTQwLDI0OjI0LDUyOjUyLDY6Niw2NDo2NCw4OTo4OX1dLDcyOltm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3QuZXhwb3J0cz0iMTUuNC4wIn0se31dLDczOltm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPXt4bGluazoiaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayIseG1sOiJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2Ui
fSxvPXthY2NlbnRIZWlnaHQ6ImFjY2VudC1oZWlnaHQiLGFjY3VtdWxhdGU6MCxhZGRpdGl2ZTow
LGFsaWdubWVudEJhc2VsaW5lOiJhbGlnbm1lbnQtYmFzZWxpbmUiLGFsbG93UmVvcmRlcjoiYWxs
b3dSZW9yZGVyIixhbHBoYWJldGljOjAsYW1wbGl0dWRlOjAsYXJhYmljRm9ybToiYXJhYmljLWZv
cm0iLGFzY2VudDowLGF0dHJpYnV0ZU5hbWU6ImF0dHJpYnV0ZU5hbWUiLGF0dHJpYnV0ZVR5cGU6
ImF0dHJpYnV0ZVR5cGUiLGF1dG9SZXZlcnNlOiJhdXRvUmV2ZXJzZSIsYXppbXV0aDowLGJhc2VG
cmVxdWVuY3k6ImJhc2VGcmVxdWVuY3kiLGJhc2VQcm9maWxlOiJiYXNlUHJvZmlsZSIsYmFzZWxp
bmVTaGlmdDoiYmFzZWxpbmUtc2hpZnQiLGJib3g6MCxiZWdpbjowLGJpYXM6MCxieTowLGNhbGNN
b2RlOiJjYWxjTW9kZSIsY2FwSGVpZ2h0OiJjYXAtaGVpZ2h0IixjbGlwOjAsY2xpcFBhdGg6ImNs
aXAtcGF0aCIsY2xpcFJ1bGU6ImNsaXAtcnVsZSIsY2xpcFBhdGhVbml0czoiY2xpcFBhdGhVbml0
cyIsY29sb3JJbnRlcnBvbGF0aW9uOiJjb2xvci1pbnRlcnBvbGF0aW9uIixjb2xvckludGVycG9s
YXRpb25GaWx0ZXJzOiJjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnMiLGNvbG9yUHJvZmlsZToi
Y29sb3ItcHJvZmlsZSIsY29sb3JSZW5kZXJpbmc6ImNvbG9yLXJlbmRlcmluZyIsY29udGVudFNj
cmlwdFR5cGU6ImNvbnRlbnRTY3JpcHRUeXBlIixjb250ZW50U3R5bGVUeXBlOiJjb250ZW50U3R5
bGVUeXBlIixjdXJzb3I6MCxjeDowLGN5OjAsZDowLGRlY2VsZXJhdGU6MCxkZXNjZW50OjAsZGlm
ZnVzZUNvbnN0YW50OiJkaWZmdXNlQ29uc3RhbnQiLGRpcmVjdGlvbjowLGRpc3BsYXk6MCxkaXZp
c29yOjAsZG9taW5hbnRCYXNlbGluZToiZG9taW5hbnQtYmFzZWxpbmUiLGR1cjowLGR4OjAsZHk6
MCxlZGdlTW9kZToiZWRnZU1vZGUiLGVsZXZhdGlvbjowLGVuYWJsZUJhY2tncm91bmQ6ImVuYWJs
ZS1iYWNrZ3JvdW5kIixlbmQ6MCxleHBvbmVudDowLGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6
ImV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQiLGZpbGw6MCxmaWxsT3BhY2l0eToiZmlsbC1vcGFj
aXR5IixmaWxsUnVsZToiZmlsbC1ydWxlIixmaWx0ZXI6MCxmaWx0ZXJSZXM6ImZpbHRlclJlcyIs
ZmlsdGVyVW5pdHM6ImZpbHRlclVuaXRzIixmbG9vZENvbG9yOiJmbG9vZC1jb2xvciIsZmxvb2RP
cGFjaXR5OiJmbG9vZC1vcGFjaXR5Iixmb2N1c2FibGU6MCxmb250RmFtaWx5OiJmb250LWZhbWls
eSIsZm9udFNpemU6ImZvbnQtc2l6ZSIsZm9udFNpemVBZGp1c3Q6ImZvbnQtc2l6ZS1hZGp1c3Qi
LGZvbnRTdHJldGNoOiJmb250LXN0cmV0Y2giLGZvbnRTdHlsZToiZm9udC1zdHlsZSIsZm9udFZh
cmlhbnQ6ImZvbnQtdmFyaWFudCIsZm9udFdlaWdodDoiZm9udC13ZWlnaHQiLGZvcm1hdDowLGZy
b206MCxmeDowLGZ5OjAsZzE6MCxnMjowLGdseXBoTmFtZToiZ2x5cGgtbmFtZSIsZ2x5cGhPcmll
bnRhdGlvbkhvcml6b250YWw6ImdseXBoLW9yaWVudGF0aW9uLWhvcml6b250YWwiLGdseXBoT3Jp
ZW50YXRpb25WZXJ0aWNhbDoiZ2x5cGgtb3JpZW50YXRpb24tdmVydGljYWwiLGdseXBoUmVmOiJn
bHlwaFJlZiIsZ3JhZGllbnRUcmFuc2Zvcm06ImdyYWRpZW50VHJhbnNmb3JtIixncmFkaWVudFVu
aXRzOiJncmFkaWVudFVuaXRzIixoYW5naW5nOjAsaG9yaXpBZHZYOiJob3Jpei1hZHYteCIsaG9y
aXpPcmlnaW5YOiJob3Jpei1vcmlnaW4teCIsaWRlb2dyYXBoaWM6MCxpbWFnZVJlbmRlcmluZzoi
aW1hZ2UtcmVuZGVyaW5nIixpbjowLGluMjowLGludGVyY2VwdDowLGs6MCxrMTowLGsyOjAsazM6
MCxrNDowLGtlcm5lbE1hdHJpeDoia2VybmVsTWF0cml4IixrZXJuZWxVbml0TGVuZ3RoOiJrZXJu
ZWxVbml0TGVuZ3RoIixrZXJuaW5nOjAsa2V5UG9pbnRzOiJrZXlQb2ludHMiLGtleVNwbGluZXM6
ImtleVNwbGluZXMiLGtleVRpbWVzOiJrZXlUaW1lcyIsbGVuZ3RoQWRqdXN0OiJsZW5ndGhBZGp1
c3QiLGxldHRlclNwYWNpbmc6ImxldHRlci1zcGFjaW5nIixsaWdodGluZ0NvbG9yOiJsaWdodGlu
Zy1jb2xvciIsbGltaXRpbmdDb25lQW5nbGU6ImxpbWl0aW5nQ29uZUFuZ2xlIixsb2NhbDowLG1h
cmtlckVuZDoibWFya2VyLWVuZCIsbWFya2VyTWlkOiJtYXJrZXItbWlkIixtYXJrZXJTdGFydDoi
bWFya2VyLXN0YXJ0IixtYXJrZXJIZWlnaHQ6Im1hcmtlckhlaWdodCIsbWFya2VyVW5pdHM6Im1h
cmtlclVuaXRzIixtYXJrZXJXaWR0aDoibWFya2VyV2lkdGgiLG1hc2s6MCxtYXNrQ29udGVudFVu
aXRzOiJtYXNrQ29udGVudFVuaXRzIixtYXNrVW5pdHM6Im1hc2tVbml0cyIsbWF0aGVtYXRpY2Fs
OjAsbW9kZTowLG51bU9jdGF2ZXM6Im51bU9jdGF2ZXMiLG9mZnNldDowLG9wYWNpdHk6MCxvcGVy
YXRvcjowLG9yZGVyOjAsb3JpZW50OjAsb3JpZW50YXRpb246MCxvcmlnaW46MCxvdmVyZmxvdzow
LG92ZXJsaW5lUG9zaXRpb246Im92ZXJsaW5lLXBvc2l0aW9uIixvdmVybGluZVRoaWNrbmVzczoi
b3ZlcmxpbmUtdGhpY2tuZXNzIixwYWludE9yZGVyOiJwYWludC1vcmRlciIscGFub3NlMToicGFu
b3NlLTEiLHBhdGhMZW5ndGg6InBhdGhMZW5ndGgiLHBhdHRlcm5Db250ZW50VW5pdHM6InBhdHRl
cm5Db250ZW50VW5pdHMiLHBhdHRlcm5UcmFuc2Zvcm06InBhdHRlcm5UcmFuc2Zvcm0iLHBhdHRl
cm5Vbml0czoicGF0dGVyblVuaXRzIixwb2ludGVyRXZlbnRzOiJwb2ludGVyLWV2ZW50cyIscG9p
bnRzOjAscG9pbnRzQXRYOiJwb2ludHNBdFgiLHBvaW50c0F0WToicG9pbnRzQXRZIixwb2ludHNB
dFo6InBvaW50c0F0WiIscHJlc2VydmVBbHBoYToicHJlc2VydmVBbHBoYSIscHJlc2VydmVBc3Bl
Y3RSYXRpbzoicHJlc2VydmVBc3BlY3RSYXRpbyIscHJpbWl0aXZlVW5pdHM6InByaW1pdGl2ZVVu
aXRzIixyOjAscmFkaXVzOjAscmVmWDoicmVmWCIscmVmWToicmVmWSIscmVuZGVyaW5nSW50ZW50
OiJyZW5kZXJpbmctaW50ZW50IixyZXBlYXRDb3VudDoicmVwZWF0Q291bnQiLHJlcGVhdER1cjoi
cmVwZWF0RHVyIixyZXF1aXJlZEV4dGVuc2lvbnM6InJlcXVpcmVkRXh0ZW5zaW9ucyIscmVxdWly
ZWRGZWF0dXJlczoicmVxdWlyZWRGZWF0dXJlcyIscmVzdGFydDowLHJlc3VsdDowLHJvdGF0ZTow
LHJ4OjAscnk6MCxzY2FsZTowLHNlZWQ6MCxzaGFwZVJlbmRlcmluZzoic2hhcGUtcmVuZGVyaW5n
IixzbG9wZTowLHNwYWNpbmc6MCxzcGVjdWxhckNvbnN0YW50OiJzcGVjdWxhckNvbnN0YW50Iixz
cGVjdWxhckV4cG9uZW50OiJzcGVjdWxhckV4cG9uZW50IixzcGVlZDowLHNwcmVhZE1ldGhvZDoi
c3ByZWFkTWV0aG9kIixzdGFydE9mZnNldDoic3RhcnRPZmZzZXQiLHN0ZERldmlhdGlvbjoic3Rk
RGV2aWF0aW9uIixzdGVtaDowLHN0ZW12OjAsc3RpdGNoVGlsZXM6InN0aXRjaFRpbGVzIixzdG9w
Q29sb3I6InN0b3AtY29sb3IiLHN0b3BPcGFjaXR5OiJzdG9wLW9wYWNpdHkiLHN0cmlrZXRocm91
Z2hQb3NpdGlvbjoic3RyaWtldGhyb3VnaC1wb3NpdGlvbiIsc3RyaWtldGhyb3VnaFRoaWNrbmVz
czoic3RyaWtldGhyb3VnaC10aGlja25lc3MiLHN0cmluZzowLHN0cm9rZTowLHN0cm9rZURhc2hh
cnJheToic3Ryb2tlLWRhc2hhcnJheSIsc3Ryb2tlRGFzaG9mZnNldDoic3Ryb2tlLWRhc2hvZmZz
ZXQiLHN0cm9rZUxpbmVjYXA6InN0cm9rZS1saW5lY2FwIixzdHJva2VMaW5lam9pbjoic3Ryb2tl
LWxpbmVqb2luIixzdHJva2VNaXRlcmxpbWl0OiJzdHJva2UtbWl0ZXJsaW1pdCIsc3Ryb2tlT3Bh
Y2l0eToic3Ryb2tlLW9wYWNpdHkiLHN0cm9rZVdpZHRoOiJzdHJva2Utd2lkdGgiLHN1cmZhY2VT
Y2FsZToic3VyZmFjZVNjYWxlIixzeXN0ZW1MYW5ndWFnZToic3lzdGVtTGFuZ3VhZ2UiLHRhYmxl
VmFsdWVzOiJ0YWJsZVZhbHVlcyIsdGFyZ2V0WDoidGFyZ2V0WCIsdGFyZ2V0WToidGFyZ2V0WSIs
dGV4dEFuY2hvcjoidGV4dC1hbmNob3IiLHRleHREZWNvcmF0aW9uOiJ0ZXh0LWRlY29yYXRpb24i
LHRleHRSZW5kZXJpbmc6InRleHQtcmVuZGVyaW5nIix0ZXh0TGVuZ3RoOiJ0ZXh0TGVuZ3RoIix0
bzowLHRyYW5zZm9ybTowLHUxOjAsdTI6MCx1bmRlcmxpbmVQb3NpdGlvbjoidW5kZXJsaW5lLXBv
c2l0aW9uIix1bmRlcmxpbmVUaGlja25lc3M6InVuZGVybGluZS10aGlja25lc3MiLHVuaWNvZGU6
MCx1bmljb2RlQmlkaToidW5pY29kZS1iaWRpIix1bmljb2RlUmFuZ2U6InVuaWNvZGUtcmFuZ2Ui
LHVuaXRzUGVyRW06InVuaXRzLXBlci1lbSIsdkFscGhhYmV0aWM6InYtYWxwaGFiZXRpYyIsdkhh
bmdpbmc6InYtaGFuZ2luZyIsdklkZW9ncmFwaGljOiJ2LWlkZW9ncmFwaGljIix2TWF0aGVtYXRp
Y2FsOiJ2LW1hdGhlbWF0aWNhbCIsdmFsdWVzOjAsdmVjdG9yRWZmZWN0OiJ2ZWN0b3ItZWZmZWN0
Iix2ZXJzaW9uOjAsdmVydEFkdlk6InZlcnQtYWR2LXkiLHZlcnRPcmlnaW5YOiJ2ZXJ0LW9yaWdp
bi14Iix2ZXJ0T3JpZ2luWToidmVydC1vcmlnaW4teSIsdmlld0JveDoidmlld0JveCIsdmlld1Rh
cmdldDoidmlld1RhcmdldCIsdmlzaWJpbGl0eTowLHdpZHRoczowLHdvcmRTcGFjaW5nOiJ3b3Jk
LXNwYWNpbmciLHdyaXRpbmdNb2RlOiJ3cml0aW5nLW1vZGUiLHg6MCx4SGVpZ2h0OiJ4LWhlaWdo
dCIseDE6MCx4MjowLHhDaGFubmVsU2VsZWN0b3I6InhDaGFubmVsU2VsZWN0b3IiLHhsaW5rQWN0
dWF0ZToieGxpbms6YWN0dWF0ZSIseGxpbmtBcmNyb2xlOiJ4bGluazphcmNyb2xlIix4bGlua0hy
ZWY6InhsaW5rOmhyZWYiLHhsaW5rUm9sZToieGxpbms6cm9sZSIseGxpbmtTaG93OiJ4bGluazpz
aG93Iix4bGlua1RpdGxlOiJ4bGluazp0aXRsZSIseGxpbmtUeXBlOiJ4bGluazp0eXBlIix4bWxC
YXNlOiJ4bWw6YmFzZSIseG1sbnM6MCx4bWxuc1hsaW5rOiJ4bWxuczp4bGluayIseG1sTGFuZzoi
eG1sOmxhbmciLHhtbFNwYWNlOiJ4bWw6c3BhY2UiLHk6MCx5MTowLHkyOjAseUNoYW5uZWxTZWxl
Y3RvcjoieUNoYW5uZWxTZWxlY3RvciIsejowLHpvb21BbmRQYW46Inpvb21BbmRQYW4ifSxpPXtQ
cm9wZXJ0aWVzOnt9LERPTUF0dHJpYnV0ZU5hbWVzcGFjZXM6e3hsaW5rQWN0dWF0ZTpyLnhsaW5r
LHhsaW5rQXJjcm9sZTpyLnhsaW5rLHhsaW5rSHJlZjpyLnhsaW5rLHhsaW5rUm9sZTpyLnhsaW5r
LHhsaW5rU2hvdzpyLnhsaW5rLHhsaW5rVGl0bGU6ci54bGluayx4bGlua1R5cGU6ci54bGluayx4
bWxCYXNlOnIueG1sLHhtbExhbmc6ci54bWwseG1sU3BhY2U6ci54bWx9LERPTUF0dHJpYnV0ZU5h
bWVzOnt9fTtPYmplY3Qua2V5cyhvKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2kuUHJvcGVydGllc1tl
XT0wLG9bZV0mJihpLkRPTUF0dHJpYnV0ZU5hbWVzW2VdPW9bZV0pfSksdC5leHBvcnRzPWl9LHt9
XSw3NDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe2lmKCJzZWxl
Y3Rpb25TdGFydCJpbiBlJiZ1Lmhhc1NlbGVjdGlvbkNhcGFiaWxpdGllcyhlKSlyZXR1cm57c3Rh
cnQ6ZS5zZWxlY3Rpb25TdGFydCxlbmQ6ZS5zZWxlY3Rpb25FbmR9O2lmKHdpbmRvdy5nZXRTZWxl
Y3Rpb24pe3ZhciB0PXdpbmRvdy5nZXRTZWxlY3Rpb24oKTtyZXR1cm57YW5jaG9yTm9kZTp0LmFu
Y2hvck5vZGUsYW5jaG9yT2Zmc2V0OnQuYW5jaG9yT2Zmc2V0LGZvY3VzTm9kZTp0LmZvY3VzTm9k
ZSxmb2N1c09mZnNldDp0LmZvY3VzT2Zmc2V0fX1pZihkb2N1bWVudC5zZWxlY3Rpb24pe3ZhciBu
PWRvY3VtZW50LnNlbGVjdGlvbi5jcmVhdGVSYW5nZSgpO3JldHVybntwYXJlbnRFbGVtZW50Om4u
cGFyZW50RWxlbWVudCgpLHRleHQ6bi50ZXh0LHRvcDpuLmJvdW5kaW5nVG9wLGxlZnQ6bi5ib3Vu
ZGluZ0xlZnR9fX1mdW5jdGlvbiBvKGUsdCl7aWYoeXx8bnVsbD09bXx8bSE9PWMoKSlyZXR1cm4g
bnVsbDt2YXIgbj1yKG0pO2lmKCFnfHwhZChnLG4pKXtnPW47dmFyIG89bC5nZXRQb29sZWQoaC5z
ZWxlY3QsdixlLHQpO3JldHVybiBvLnR5cGU9InNlbGVjdCIsby50YXJnZXQ9bSxpLmFjY3VtdWxh
dGVUd29QaGFzZURpc3BhdGNoZXMobyksb31yZXR1cm4gbnVsbH12YXIgaT1lKDE5KSxhPWUoMTIw
KSxzPWUoMzIpLHU9ZSg1NSksbD1lKDgwKSxjPWUoMTI5KSxwPWUoMTA5KSxkPWUoMTM4KSxmPWEu
Y2FuVXNlRE9NJiYiZG9jdW1lbnRNb2RlImluIGRvY3VtZW50JiZkb2N1bWVudC5kb2N1bWVudE1v
ZGU8PTExLGg9e3NlbGVjdDp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6Im9uU2Vs
ZWN0IixjYXB0dXJlZDoib25TZWxlY3RDYXB0dXJlIn0sZGVwZW5kZW5jaWVzOlsidG9wQmx1ciIs
InRvcENvbnRleHRNZW51IiwidG9wRm9jdXMiLCJ0b3BLZXlEb3duIiwidG9wS2V5VXAiLCJ0b3BN
b3VzZURvd24iLCJ0b3BNb3VzZVVwIiwidG9wU2VsZWN0aW9uQ2hhbmdlIl19fSxtPW51bGwsdj1u
dWxsLGc9bnVsbCx5PSExLF89ITEsQz17ZXZlbnRUeXBlczpoLGV4dHJhY3RFdmVudHM6ZnVuY3Rp
b24oZSx0LG4scil7aWYoIV8pcmV0dXJuIG51bGw7dmFyIGk9dD9zLmdldE5vZGVGcm9tSW5zdGFu
Y2UodCk6d2luZG93O3N3aXRjaChlKXtjYXNlInRvcEZvY3VzIjoocChpKXx8InRydWUiPT09aS5j
b250ZW50RWRpdGFibGUpJiYobT1pLHY9dCxnPW51bGwpO2JyZWFrO2Nhc2UidG9wQmx1ciI6bT1u
dWxsLHY9bnVsbCxnPW51bGw7YnJlYWs7Y2FzZSJ0b3BNb3VzZURvd24iOnk9ITA7YnJlYWs7Y2Fz
ZSJ0b3BDb250ZXh0TWVudSI6Y2FzZSJ0b3BNb3VzZVVwIjpyZXR1cm4geT0hMSxvKG4scik7Y2Fz
ZSJ0b3BTZWxlY3Rpb25DaGFuZ2UiOmlmKGYpYnJlYWs7Y2FzZSJ0b3BLZXlEb3duIjpjYXNlInRv
cEtleVVwIjpyZXR1cm4gbyhuLHIpfXJldHVybiBudWxsfSxkaWRQdXRMaXN0ZW5lcjpmdW5jdGlv
bihlLHQsbil7Im9uU2VsZWN0Ij09PXQmJihfPSEwKX19O3QuZXhwb3J0cz1DfSx7MTA5OjEwOSwx
MjA6MTIwLDEyOToxMjksMTM4OjEzOCwxOToxOSwzMjozMiw1NTo1NSw4MDo4MH1dLDc1OltmdW5j
dGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIi4iK2UuX3Jvb3RO
b2RlSUR9ZnVuY3Rpb24gbyhlKXtyZXR1cm4iYnV0dG9uIj09PWV8fCJpbnB1dCI9PT1lfHwic2Vs
ZWN0Ij09PWV8fCJ0ZXh0YXJlYSI9PT1lfWZ1bmN0aW9uIGkoZSl7aWYoZSl7dmFyIHQ9ZS5fY3Vy
cmVudEVsZW1lbnQmJmUuX2N1cnJlbnRFbGVtZW50LnByb3BzLmRpc2FibGVkO2lmKHQpcmV0dXJu
IG8oZS5fdGFnKX1yZXR1cm4hMX12YXIgYT1lKDExMSkscz1lKDExOSksdT1lKDE5KSxsPWUoMzIp
LGM9ZSg3NikscD1lKDc3KSxkPWUoODApLGY9ZSg4MSksaD1lKDgzKSxtPWUoODQpLHY9ZSg3OSks
Zz1lKDg1KSx5PWUoODYpLF89ZSg4NyksQz1lKDg4KSxiPWUoMTI2KSxFPWUoOTgpLHg9KGUoMTM0
KSx7fSksdz17fTtbImFib3J0IiwiYW5pbWF0aW9uRW5kIiwiYW5pbWF0aW9uSXRlcmF0aW9uIiwi
YW5pbWF0aW9uU3RhcnQiLCJibHVyIiwiY2FuUGxheSIsImNhblBsYXlUaHJvdWdoIiwiY2xpY2si
LCJjb250ZXh0TWVudSIsImNvcHkiLCJjdXQiLCJkb3VibGVDbGljayIsImRyYWciLCJkcmFnRW5k
IiwiZHJhZ0VudGVyIiwiZHJhZ0V4aXQiLCJkcmFnTGVhdmUiLCJkcmFnT3ZlciIsImRyYWdTdGFy
dCIsImRyb3AiLCJkdXJhdGlvbkNoYW5nZSIsImVtcHRpZWQiLCJlbmNyeXB0ZWQiLCJlbmRlZCIs
ImVycm9yIiwiZm9jdXMiLCJpbnB1dCIsImludmFsaWQiLCJrZXlEb3duIiwia2V5UHJlc3MiLCJr
ZXlVcCIsImxvYWQiLCJsb2FkZWREYXRhIiwibG9hZGVkTWV0YWRhdGEiLCJsb2FkU3RhcnQiLCJt
b3VzZURvd24iLCJtb3VzZU1vdmUiLCJtb3VzZU91dCIsIm1vdXNlT3ZlciIsIm1vdXNlVXAiLCJw
YXN0ZSIsInBhdXNlIiwicGxheSIsInBsYXlpbmciLCJwcm9ncmVzcyIsInJhdGVDaGFuZ2UiLCJy
ZXNldCIsInNjcm9sbCIsInNlZWtlZCIsInNlZWtpbmciLCJzdGFsbGVkIiwic3VibWl0Iiwic3Vz
cGVuZCIsInRpbWVVcGRhdGUiLCJ0b3VjaENhbmNlbCIsInRvdWNoRW5kIiwidG91Y2hNb3ZlIiwi
dG91Y2hTdGFydCIsInRyYW5zaXRpb25FbmQiLCJ2b2x1bWVDaGFuZ2UiLCJ3YWl0aW5nIiwid2hl
ZWwiXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciB0PWVbMF0udG9VcHBlckNhc2UoKStlLnNsaWNl
KDEpLG49Im9uIit0LHI9InRvcCIrdCxvPXtwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxl
ZDpuLGNhcHR1cmVkOm4rIkNhcHR1cmUifSxkZXBlbmRlbmNpZXM6W3JdfTt4W2VdPW8sd1tyXT1v
fSk7dmFyIGs9e30sVD17ZXZlbnRUeXBlczp4LGV4dHJhY3RFdmVudHM6ZnVuY3Rpb24oZSx0LG4s
cil7dmFyIG89d1tlXTtpZighbylyZXR1cm4gbnVsbDt2YXIgcztzd2l0Y2goZSl7Y2FzZSJ0b3BB
Ym9ydCI6Y2FzZSJ0b3BDYW5QbGF5IjpjYXNlInRvcENhblBsYXlUaHJvdWdoIjpjYXNlInRvcER1
cmF0aW9uQ2hhbmdlIjpjYXNlInRvcEVtcHRpZWQiOmNhc2UidG9wRW5jcnlwdGVkIjpjYXNlInRv
cEVuZGVkIjpjYXNlInRvcEVycm9yIjpjYXNlInRvcElucHV0IjpjYXNlInRvcEludmFsaWQiOmNh
c2UidG9wTG9hZCI6Y2FzZSJ0b3BMb2FkZWREYXRhIjpjYXNlInRvcExvYWRlZE1ldGFkYXRhIjpj
YXNlInRvcExvYWRTdGFydCI6Y2FzZSJ0b3BQYXVzZSI6Y2FzZSJ0b3BQbGF5IjpjYXNlInRvcFBs
YXlpbmciOmNhc2UidG9wUHJvZ3Jlc3MiOmNhc2UidG9wUmF0ZUNoYW5nZSI6Y2FzZSJ0b3BSZXNl
dCI6Y2FzZSJ0b3BTZWVrZWQiOmNhc2UidG9wU2Vla2luZyI6Y2FzZSJ0b3BTdGFsbGVkIjpjYXNl
InRvcFN1Ym1pdCI6Y2FzZSJ0b3BTdXNwZW5kIjpjYXNlInRvcFRpbWVVcGRhdGUiOmNhc2UidG9w
Vm9sdW1lQ2hhbmdlIjpjYXNlInRvcFdhaXRpbmciOnM9ZDticmVhaztjYXNlInRvcEtleVByZXNz
IjppZigwPT09RShuKSlyZXR1cm4gbnVsbDtjYXNlInRvcEtleURvd24iOmNhc2UidG9wS2V5VXAi
OnM9aDticmVhaztjYXNlInRvcEJsdXIiOmNhc2UidG9wRm9jdXMiOnM9ZjticmVhaztjYXNlInRv
cENsaWNrIjppZigyPT09bi5idXR0b24pcmV0dXJuIG51bGw7Y2FzZSJ0b3BEb3VibGVDbGljayI6
Y2FzZSJ0b3BNb3VzZURvd24iOmNhc2UidG9wTW91c2VNb3ZlIjpjYXNlInRvcE1vdXNlVXAiOmlm
KGkodCkpcmV0dXJuIG51bGw7Y2FzZSJ0b3BNb3VzZU91dCI6Y2FzZSJ0b3BNb3VzZU92ZXIiOmNh
c2UidG9wQ29udGV4dE1lbnUiOnM9bTticmVhaztjYXNlInRvcERyYWciOmNhc2UidG9wRHJhZ0Vu
ZCI6Y2FzZSJ0b3BEcmFnRW50ZXIiOmNhc2UidG9wRHJhZ0V4aXQiOmNhc2UidG9wRHJhZ0xlYXZl
IjpjYXNlInRvcERyYWdPdmVyIjpjYXNlInRvcERyYWdTdGFydCI6Y2FzZSJ0b3BEcm9wIjpzPXY7
YnJlYWs7Y2FzZSJ0b3BUb3VjaENhbmNlbCI6Y2FzZSJ0b3BUb3VjaEVuZCI6Y2FzZSJ0b3BUb3Vj
aE1vdmUiOmNhc2UidG9wVG91Y2hTdGFydCI6cz1nO2JyZWFrO2Nhc2UidG9wQW5pbWF0aW9uRW5k
IjpjYXNlInRvcEFuaW1hdGlvbkl0ZXJhdGlvbiI6Y2FzZSJ0b3BBbmltYXRpb25TdGFydCI6cz1j
O2JyZWFrO2Nhc2UidG9wVHJhbnNpdGlvbkVuZCI6cz15O2JyZWFrO2Nhc2UidG9wU2Nyb2xsIjpz
PV87YnJlYWs7Y2FzZSJ0b3BXaGVlbCI6cz1DO2JyZWFrO2Nhc2UidG9wQ29weSI6Y2FzZSJ0b3BD
dXQiOmNhc2UidG9wUGFzdGUiOnM9cH1zP3ZvaWQgMDphKCI4NiIsZSk7dmFyIGw9cy5nZXRQb29s
ZWQobyx0LG4scik7cmV0dXJuIHUuYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyhsKSxsfSxk
aWRQdXRMaXN0ZW5lcjpmdW5jdGlvbihlLHQsbil7aWYoIm9uQ2xpY2siPT09dCYmIW8oZS5fdGFn
KSl7dmFyIGk9cihlKSxhPWwuZ2V0Tm9kZUZyb21JbnN0YW5jZShlKTtrW2ldfHwoa1tpXT1zLmxp
c3RlbihhLCJjbGljayIsYikpfX0sd2lsbERlbGV0ZUxpc3RlbmVyOmZ1bmN0aW9uKGUsdCl7aWYo
Im9uQ2xpY2siPT09dCYmIW8oZS5fdGFnKSl7dmFyIG49cihlKTtrW25dLnJlbW92ZSgpLGRlbGV0
ZSBrW25dfX19O3QuZXhwb3J0cz1UfSx7MTExOjExMSwxMTk6MTE5LDEyNjoxMjYsMTM0OjEzNCwx
OToxOSwzMjozMiw3Njo3Niw3Nzo3Nyw3OTo3OSw4MDo4MCw4MTo4MSw4Mzo4Myw4NDo4NCw4NTo4
NSw4Njo4Niw4Nzo4Nyw4ODo4OCw5ODo5OH1dLDc2OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7cmV0dXJuIG8uY2FsbCh0aGlzLGUsdCxuLHIpfXZhciBv
PWUoODApLGk9e2FuaW1hdGlvbk5hbWU6bnVsbCxlbGFwc2VkVGltZTpudWxsLHBzZXVkb0VsZW1l
bnQ6bnVsbH07by5hdWdtZW50Q2xhc3MocixpKSx0LmV4cG9ydHM9cn0sezgwOjgwfV0sNzc6W2Z1
bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5j
YWxsKHRoaXMsZSx0LG4scil9dmFyIG89ZSg4MCksaT17Y2xpcGJvYXJkRGF0YTpmdW5jdGlvbihl
KXtyZXR1cm4iY2xpcGJvYXJkRGF0YSJpbiBlP2UuY2xpcGJvYXJkRGF0YTp3aW5kb3cuY2xpcGJv
YXJkRGF0YX19O28uYXVnbWVudENsYXNzKHIsaSksdC5leHBvcnRzPXJ9LHs4MDo4MH1dLDc4Oltm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7cmV0dXJuIG8u
Y2FsbCh0aGlzLGUsdCxuLHIpfXZhciBvPWUoODApLGk9e2RhdGE6bnVsbH07by5hdWdtZW50Q2xh
c3MocixpKSx0LmV4cG9ydHM9cn0sezgwOjgwfV0sNzk6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5jYWxsKHRoaXMsZSx0LG4scil9dmFy
IG89ZSg4NCksaT17ZGF0YVRyYW5zZmVyOm51bGx9O28uYXVnbWVudENsYXNzKHIsaSksdC5leHBv
cnRzPXJ9LHs4NDo4NH1dLDgwOltmdW5jdGlvbihlLHQsbil7CisidXNlIHN0cmljdCI7ZnVuY3Rp
b24gcihlLHQsbixyKXt0aGlzLmRpc3BhdGNoQ29uZmlnPWUsdGhpcy5fdGFyZ2V0SW5zdD10LHRo
aXMubmF0aXZlRXZlbnQ9bjt2YXIgbz10aGlzLmNvbnN0cnVjdG9yLkludGVyZmFjZTtmb3IodmFy
IGkgaW4gbylpZihvLmhhc093blByb3BlcnR5KGkpKXt2YXIgcz1vW2ldO3M/dGhpc1tpXT1zKG4p
OiJ0YXJnZXQiPT09aT90aGlzLnRhcmdldD1yOnRoaXNbaV09bltpXX12YXIgdT1udWxsIT1uLmRl
ZmF1bHRQcmV2ZW50ZWQ/bi5kZWZhdWx0UHJldmVudGVkOm4ucmV0dXJuVmFsdWU9PT0hMTtyZXR1
cm4gdT90aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1hLnRoYXRSZXR1cm5zVHJ1ZTp0aGlzLmlzRGVm
YXVsdFByZXZlbnRlZD1hLnRoYXRSZXR1cm5zRmFsc2UsdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBl
ZD1hLnRoYXRSZXR1cm5zRmFsc2UsdGhpc312YXIgbz1lKDE0MCksaT1lKDI0KSxhPWUoMTI2KSxz
PShlKDEzOSksImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5LFsiZGlzcGF0Y2hDb25maWciLCJfdGFy
Z2V0SW5zdCIsIm5hdGl2ZUV2ZW50IiwiaXNEZWZhdWx0UHJldmVudGVkIiwiaXNQcm9wYWdhdGlv
blN0b3BwZWQiLCJfZGlzcGF0Y2hMaXN0ZW5lcnMiLCJfZGlzcGF0Y2hJbnN0YW5jZXMiXSksdT17
dHlwZTpudWxsLHRhcmdldDpudWxsLGN1cnJlbnRUYXJnZXQ6YS50aGF0UmV0dXJuc051bGwsZXZl
bnRQaGFzZTpudWxsLGJ1YmJsZXM6bnVsbCxjYW5jZWxhYmxlOm51bGwsdGltZVN0YW1wOmZ1bmN0
aW9uKGUpe3JldHVybiBlLnRpbWVTdGFtcHx8RGF0ZS5ub3coKX0sZGVmYXVsdFByZXZlbnRlZDpu
dWxsLGlzVHJ1c3RlZDpudWxsfTtvKHIucHJvdG90eXBlLHtwcmV2ZW50RGVmYXVsdDpmdW5jdGlv
bigpe3RoaXMuZGVmYXVsdFByZXZlbnRlZD0hMDt2YXIgZT10aGlzLm5hdGl2ZUV2ZW50O2UmJihl
LnByZXZlbnREZWZhdWx0P2UucHJldmVudERlZmF1bHQoKToidW5rbm93biIhPXR5cGVvZiBlLnJl
dHVyblZhbHVlJiYoZS5yZXR1cm5WYWx1ZT0hMSksdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9YS50
aGF0UmV0dXJuc1RydWUpfSxzdG9wUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm5h
dGl2ZUV2ZW50O2UmJihlLnN0b3BQcm9wYWdhdGlvbj9lLnN0b3BQcm9wYWdhdGlvbigpOiJ1bmtu
b3duIiE9dHlwZW9mIGUuY2FuY2VsQnViYmxlJiYoZS5jYW5jZWxCdWJibGU9ITApLHRoaXMuaXNQ
cm9wYWdhdGlvblN0b3BwZWQ9YS50aGF0UmV0dXJuc1RydWUpfSxwZXJzaXN0OmZ1bmN0aW9uKCl7
dGhpcy5pc1BlcnNpc3RlbnQ9YS50aGF0UmV0dXJuc1RydWV9LGlzUGVyc2lzdGVudDphLnRoYXRS
ZXR1cm5zRmFsc2UsZGVzdHJ1Y3RvcjpmdW5jdGlvbigpe3ZhciBlPXRoaXMuY29uc3RydWN0b3Iu
SW50ZXJmYWNlO2Zvcih2YXIgdCBpbiBlKXRoaXNbdF09bnVsbDtmb3IodmFyIG49MDtuPHMubGVu
Z3RoO24rKyl0aGlzW3Nbbl1dPW51bGx9fSksci5JbnRlcmZhY2U9dSxyLmF1Z21lbnRDbGFzcz1m
dW5jdGlvbihlLHQpe3ZhciBuPXRoaXMscj1mdW5jdGlvbigpe307ci5wcm90b3R5cGU9bi5wcm90
b3R5cGU7dmFyIGE9bmV3IHI7byhhLGUucHJvdG90eXBlKSxlLnByb3RvdHlwZT1hLGUucHJvdG90
eXBlLmNvbnN0cnVjdG9yPWUsZS5JbnRlcmZhY2U9byh7fSxuLkludGVyZmFjZSx0KSxlLmF1Z21l
bnRDbGFzcz1uLmF1Z21lbnRDbGFzcyxpLmFkZFBvb2xpbmdUbyhlLGkuZm91ckFyZ3VtZW50UG9v
bGVyKX0saS5hZGRQb29saW5nVG8ocixpLmZvdXJBcmd1bWVudFBvb2xlciksdC5leHBvcnRzPXJ9
LHsxMjY6MTI2LDEzOToxMzksMTQwOjE0MCwyNDoyNH1dLDgxOltmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7cmV0dXJuIG8uY2FsbCh0aGlzLGUsdCxuLHIp
fXZhciBvPWUoODcpLGk9e3JlbGF0ZWRUYXJnZXQ6bnVsbH07by5hdWdtZW50Q2xhc3MocixpKSx0
LmV4cG9ydHM9cn0sezg3Ojg3fV0sODI6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5jYWxsKHRoaXMsZSx0LG4scil9dmFyIG89ZSg4MCks
aT17ZGF0YTpudWxsfTtvLmF1Z21lbnRDbGFzcyhyLGkpLHQuZXhwb3J0cz1yfSx7ODA6ODB9XSw4
MzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3JldHVy
biBvLmNhbGwodGhpcyxlLHQsbixyKX12YXIgbz1lKDg3KSxpPWUoOTgpLGE9ZSg5OSkscz1lKDEw
MCksdT17a2V5OmEsbG9jYXRpb246bnVsbCxjdHJsS2V5Om51bGwsc2hpZnRLZXk6bnVsbCxhbHRL
ZXk6bnVsbCxtZXRhS2V5Om51bGwscmVwZWF0Om51bGwsbG9jYWxlOm51bGwsZ2V0TW9kaWZpZXJT
dGF0ZTpzLGNoYXJDb2RlOmZ1bmN0aW9uKGUpe3JldHVybiJrZXlwcmVzcyI9PT1lLnR5cGU/aShl
KTowfSxrZXlDb2RlOmZ1bmN0aW9uKGUpe3JldHVybiJrZXlkb3duIj09PWUudHlwZXx8ImtleXVw
Ij09PWUudHlwZT9lLmtleUNvZGU6MH0sd2hpY2g6ZnVuY3Rpb24oZSl7cmV0dXJuImtleXByZXNz
Ij09PWUudHlwZT9pKGUpOiJrZXlkb3duIj09PWUudHlwZXx8ImtleXVwIj09PWUudHlwZT9lLmtl
eUNvZGU6MH19O28uYXVnbWVudENsYXNzKHIsdSksdC5leHBvcnRzPXJ9LHsxMDA6MTAwLDg3Ojg3
LDk4Ojk4LDk5Ojk5fV0sODQ6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
cihlLHQsbixyKXtyZXR1cm4gby5jYWxsKHRoaXMsZSx0LG4scil9dmFyIG89ZSg4NyksaT1lKDkw
KSxhPWUoMTAwKSxzPXtzY3JlZW5YOm51bGwsc2NyZWVuWTpudWxsLGNsaWVudFg6bnVsbCxjbGll
bnRZOm51bGwsY3RybEtleTpudWxsLHNoaWZ0S2V5Om51bGwsYWx0S2V5Om51bGwsbWV0YUtleTpu
dWxsLGdldE1vZGlmaWVyU3RhdGU6YSxidXR0b246ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5idXR0b247
cmV0dXJuIndoaWNoImluIGU/dDoyPT09dD8yOjQ9PT10PzE6MH0sYnV0dG9uczpudWxsLHJlbGF0
ZWRUYXJnZXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVsYXRlZFRhcmdldHx8KGUuZnJvbUVsZW1l
bnQ9PT1lLnNyY0VsZW1lbnQ/ZS50b0VsZW1lbnQ6ZS5mcm9tRWxlbWVudCl9LHBhZ2VYOmZ1bmN0
aW9uKGUpe3JldHVybiJwYWdlWCJpbiBlP2UucGFnZVg6ZS5jbGllbnRYK2kuY3VycmVudFNjcm9s
bExlZnR9LHBhZ2VZOmZ1bmN0aW9uKGUpe3JldHVybiJwYWdlWSJpbiBlP2UucGFnZVk6ZS5jbGll
bnRZK2kuY3VycmVudFNjcm9sbFRvcH19O28uYXVnbWVudENsYXNzKHIscyksdC5leHBvcnRzPXJ9
LHsxMDA6MTAwLDg3Ojg3LDkwOjkwfV0sODU6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5jYWxsKHRoaXMsZSx0LG4scil9dmFyIG89ZSg4
NyksaT1lKDEwMCksYT17dG91Y2hlczpudWxsLHRhcmdldFRvdWNoZXM6bnVsbCxjaGFuZ2VkVG91
Y2hlczpudWxsLGFsdEtleTpudWxsLG1ldGFLZXk6bnVsbCxjdHJsS2V5Om51bGwsc2hpZnRLZXk6
bnVsbCxnZXRNb2RpZmllclN0YXRlOml9O28uYXVnbWVudENsYXNzKHIsYSksdC5leHBvcnRzPXJ9
LHsxMDA6MTAwLDg3Ojg3fV0sODY6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gcihlLHQsbixyKXtyZXR1cm4gby5jYWxsKHRoaXMsZSx0LG4scil9dmFyIG89ZSg4MCksaT17
cHJvcGVydHlOYW1lOm51bGwsZWxhcHNlZFRpbWU6bnVsbCxwc2V1ZG9FbGVtZW50Om51bGx9O28u
YXVnbWVudENsYXNzKHIsaSksdC5leHBvcnRzPXJ9LHs4MDo4MH1dLDg3OltmdW5jdGlvbihlLHQs
bil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7cmV0dXJuIG8uY2FsbCh0aGlzLGUs
dCxuLHIpfXZhciBvPWUoODApLGk9ZSgxMDEpLGE9e3ZpZXc6ZnVuY3Rpb24oZSl7aWYoZS52aWV3
KXJldHVybiBlLnZpZXc7dmFyIHQ9aShlKTtpZih0LndpbmRvdz09PXQpcmV0dXJuIHQ7dmFyIG49
dC5vd25lckRvY3VtZW50O3JldHVybiBuP24uZGVmYXVsdFZpZXd8fG4ucGFyZW50V2luZG93Ondp
bmRvd30sZGV0YWlsOmZ1bmN0aW9uKGUpe3JldHVybiBlLmRldGFpbHx8MH19O28uYXVnbWVudENs
YXNzKHIsYSksdC5leHBvcnRzPXJ9LHsxMDE6MTAxLDgwOjgwfV0sODg6W2Z1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5jYWxsKHRoaXMsZSx0
LG4scil9dmFyIG89ZSg4NCksaT17ZGVsdGFYOmZ1bmN0aW9uKGUpe3JldHVybiJkZWx0YVgiaW4g
ZT9lLmRlbHRhWDoid2hlZWxEZWx0YVgiaW4gZT8tZS53aGVlbERlbHRhWDowfSxkZWx0YVk6ZnVu
Y3Rpb24oZSl7cmV0dXJuImRlbHRhWSJpbiBlP2UuZGVsdGFZOiJ3aGVlbERlbHRhWSJpbiBlPy1l
LndoZWVsRGVsdGFZOiJ3aGVlbERlbHRhImluIGU/LWUud2hlZWxEZWx0YTowfSxkZWx0YVo6bnVs
bCxkZWx0YU1vZGU6bnVsbH07by5hdWdtZW50Q2xhc3MocixpKSx0LmV4cG9ydHM9cn0sezg0Ojg0
fV0sODk6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSgxMTEpLG89KGUoMTM0
KSx7fSksaT17cmVpbml0aWFsaXplVHJhbnNhY3Rpb246ZnVuY3Rpb24oKXt0aGlzLnRyYW5zYWN0
aW9uV3JhcHBlcnM9dGhpcy5nZXRUcmFuc2FjdGlvbldyYXBwZXJzKCksdGhpcy53cmFwcGVySW5p
dERhdGE/dGhpcy53cmFwcGVySW5pdERhdGEubGVuZ3RoPTA6dGhpcy53cmFwcGVySW5pdERhdGE9
W10sdGhpcy5faXNJblRyYW5zYWN0aW9uPSExfSxfaXNJblRyYW5zYWN0aW9uOiExLGdldFRyYW5z
YWN0aW9uV3JhcHBlcnM6bnVsbCxpc0luVHJhbnNhY3Rpb246ZnVuY3Rpb24oKXtyZXR1cm4hIXRo
aXMuX2lzSW5UcmFuc2FjdGlvbn0scGVyZm9ybTpmdW5jdGlvbihlLHQsbixvLGksYSxzLHUpe3Ro
aXMuaXNJblRyYW5zYWN0aW9uKCk/cigiMjciKTp2b2lkIDA7dmFyIGwsYzt0cnl7dGhpcy5faXNJ
blRyYW5zYWN0aW9uPSEwLGw9ITAsdGhpcy5pbml0aWFsaXplQWxsKDApLGM9ZS5jYWxsKHQsbixv
LGksYSxzLHUpLGw9ITF9ZmluYWxseXt0cnl7aWYobCl0cnl7dGhpcy5jbG9zZUFsbCgwKX1jYXRj
aChlKXt9ZWxzZSB0aGlzLmNsb3NlQWxsKDApfWZpbmFsbHl7dGhpcy5faXNJblRyYW5zYWN0aW9u
PSExfX1yZXR1cm4gY30saW5pdGlhbGl6ZUFsbDpmdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy50
cmFuc2FjdGlvbldyYXBwZXJzLG49ZTtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTt0cnl7dGhp
cy53cmFwcGVySW5pdERhdGFbbl09byx0aGlzLndyYXBwZXJJbml0RGF0YVtuXT1yLmluaXRpYWxp
emU/ci5pbml0aWFsaXplLmNhbGwodGhpcyk6bnVsbH1maW5hbGx5e2lmKHRoaXMud3JhcHBlcklu
aXREYXRhW25dPT09byl0cnl7dGhpcy5pbml0aWFsaXplQWxsKG4rMSl9Y2F0Y2goZSl7fX19fSxj
bG9zZUFsbDpmdW5jdGlvbihlKXt0aGlzLmlzSW5UcmFuc2FjdGlvbigpP3ZvaWQgMDpyKCIyOCIp
O2Zvcih2YXIgdD10aGlzLnRyYW5zYWN0aW9uV3JhcHBlcnMsbj1lO248dC5sZW5ndGg7bisrKXt2
YXIgaSxhPXRbbl0scz10aGlzLndyYXBwZXJJbml0RGF0YVtuXTt0cnl7aT0hMCxzIT09byYmYS5j
bG9zZSYmYS5jbG9zZS5jYWxsKHRoaXMscyksaT0hMX1maW5hbGx5e2lmKGkpdHJ5e3RoaXMuY2xv
c2VBbGwobisxKX1jYXRjaChlKXt9fX10aGlzLndyYXBwZXJJbml0RGF0YS5sZW5ndGg9MH19O3Qu
ZXhwb3J0cz1pfSx7MTExOjExMSwxMzQ6MTM0fV0sOTA6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7dmFyIHI9e2N1cnJlbnRTY3JvbGxMZWZ0OjAsY3VycmVudFNjcm9sbFRvcDowLHJlZnJl
c2hTY3JvbGxWYWx1ZXM6ZnVuY3Rpb24oZSl7ci5jdXJyZW50U2Nyb2xsTGVmdD1lLngsci5jdXJy
ZW50U2Nyb2xsVG9wPWUueX19O3QuZXhwb3J0cz1yfSx7fV0sOTE6W2Z1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe3JldHVybiBudWxsPT10P28oIjMwIik6dm9pZCAw
LG51bGw9PWU/dDpBcnJheS5pc0FycmF5KGUpP0FycmF5LmlzQXJyYXkodCk/KGUucHVzaC5hcHBs
eShlLHQpLGUpOihlLnB1c2godCksZSk6QXJyYXkuaXNBcnJheSh0KT9bZV0uY29uY2F0KHQpOltl
LHRdfXZhciBvPWUoMTExKTtlKDEzNCk7dC5leHBvcnRzPXJ9LHsxMTE6MTExLDEzNDoxMzR9XSw5
MjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe2Zvcih2YXIgdD0x
LG49MCxyPTAsaT1lLmxlbmd0aCxhPWkmLTQ7cjxhOyl7Zm9yKHZhciBzPU1hdGgubWluKHIrNDA5
NixhKTtyPHM7cis9NCluKz0odCs9ZS5jaGFyQ29kZUF0KHIpKSsodCs9ZS5jaGFyQ29kZUF0KHIr
MSkpKyh0Kz1lLmNoYXJDb2RlQXQocisyKSkrKHQrPWUuY2hhckNvZGVBdChyKzMpKTt0JT1vLG4l
PW99Zm9yKDtyPGk7cisrKW4rPXQrPWUuY2hhckNvZGVBdChyKTtyZXR1cm4gdCU9byxuJT1vLHR8
bjw8MTZ9dmFyIG89NjU1MjE7dC5leHBvcnRzPXJ9LHt9XSw5MzpbZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0Ijt2YXIgcj1mdW5jdGlvbihlKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIE1T
QXBwJiZNU0FwcC5leGVjVW5zYWZlTG9jYWxGdW5jdGlvbj9mdW5jdGlvbih0LG4scixvKXtNU0Fw
cC5leGVjVW5zYWZlTG9jYWxGdW5jdGlvbihmdW5jdGlvbigpe3JldHVybiBlKHQsbixyLG8pfSl9
OmV9O3QuZXhwb3J0cz1yfSx7fV0sOTQ6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gcihlLHQsbil7dmFyIHI9bnVsbD09dHx8ImJvb2xlYW4iPT10eXBlb2YgdHx8IiI9PT10
O2lmKHIpcmV0dXJuIiI7dmFyIG89aXNOYU4odCk7cmV0dXJuIG98fDA9PT10fHxpLmhhc093blBy
b3BlcnR5KGUpJiZpW2VdPyIiK3Q6KCJzdHJpbmciPT10eXBlb2YgdCYmKHQ9dC50cmltKCkpLHQr
InB4Iil9dmFyIG89ZSg0KSxpPShlKDEzOSksby5pc1VuaXRsZXNzTnVtYmVyKTt0LmV4cG9ydHM9
cn0sezEzOToxMzksNDo0fV0sOTU6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gcihlKXt2YXIgdD0iIitlLG49aS5leGVjKHQpO2lmKCFuKXJldHVybiB0O3ZhciByLG89IiIs
YT0wLHM9MDtmb3IoYT1uLmluZGV4O2E8dC5sZW5ndGg7YSsrKXtzd2l0Y2godC5jaGFyQ29kZUF0
KGEpKXtjYXNlIDM0OnI9IiZxdW90OyI7YnJlYWs7Y2FzZSAzODpyPSImYW1wOyI7YnJlYWs7Y2Fz
ZSAzOTpyPSImI3gyNzsiO2JyZWFrO2Nhc2UgNjA6cj0iJmx0OyI7YnJlYWs7Y2FzZSA2MjpyPSIm
Z3Q7IjticmVhaztkZWZhdWx0OmNvbnRpbnVlfXMhPT1hJiYobys9dC5zdWJzdHJpbmcocyxhKSks
cz1hKzEsbys9cn1yZXR1cm4gcyE9PWE/byt0LnN1YnN0cmluZyhzLGEpOm99ZnVuY3Rpb24gbyhl
KXtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiBlfHwibnVtYmVyIj09dHlwZW9mIGU/IiIrZTpyKGUp
fXZhciBpPS9bIicmPD5dLzt0LmV4cG9ydHM9b30se31dLDk2OltmdW5jdGlvbihlLHQsbil7KGZ1
bmN0aW9uKG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe2lmKGUmJiJvYmplY3Qi
PT10eXBlb2YgZSl7dmFyIG89ZSxpPXZvaWQgMD09PW9bbl07aSYmbnVsbCE9dCYmKG9bbl09dCl9
fWZ1bmN0aW9uIG8oZSx0KXtpZihudWxsPT1lKXJldHVybiBlO3ZhciBuPXt9O3JldHVybiBpKGUs
cixuKSxufXZhciBpPShlKDIyKSxlKDExNSkpO2UoMTM5KTsidW5kZWZpbmVkIiE9dHlwZW9mIG4m
Jm4uZW52LHQuZXhwb3J0cz1vfSkuY2FsbCh0aGlzLHZvaWQgMCl9LHsxMTU6MTE1LDEzOToxMzks
MjI6MjJ9XSw5NzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxu
KXtBcnJheS5pc0FycmF5KGUpP2UuZm9yRWFjaCh0LG4pOmUmJnQuY2FsbChuLGUpfXQuZXhwb3J0
cz1yfSx7fV0sOTg6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt2
YXIgdCxuPWUua2V5Q29kZTtyZXR1cm4iY2hhckNvZGUiaW4gZT8odD1lLmNoYXJDb2RlLDA9PT10
JiYxMz09PW4mJih0PTEzKSk6dD1uLHQ+PTMyfHwxMz09PXQ/dDowfXQuZXhwb3J0cz1yfSx7fV0s
OTk6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtpZihlLmtleSl7
dmFyIHQ9aVtlLmtleV18fGUua2V5O2lmKCJVbmlkZW50aWZpZWQiIT09dClyZXR1cm4gdH1pZigi
a2V5cHJlc3MiPT09ZS50eXBlKXt2YXIgbj1vKGUpO3JldHVybiAxMz09PW4/IkVudGVyIjpTdHJp
bmcuZnJvbUNoYXJDb2RlKG4pfXJldHVybiJrZXlkb3duIj09PWUudHlwZXx8ImtleXVwIj09PWUu
dHlwZT9hW2Uua2V5Q29kZV18fCJVbmlkZW50aWZpZWQiOiIifXZhciBvPWUoOTgpLGk9e0VzYzoi
RXNjYXBlIixTcGFjZWJhcjoiICIsTGVmdDoiQXJyb3dMZWZ0IixVcDoiQXJyb3dVcCIsUmlnaHQ6
IkFycm93UmlnaHQiLERvd246IkFycm93RG93biIsRGVsOiJEZWxldGUiLFdpbjoiT1MiLE1lbnU6
IkNvbnRleHRNZW51IixBcHBzOiJDb250ZXh0TWVudSIsU2Nyb2xsOiJTY3JvbGxMb2NrIixNb3pQ
cmludGFibGVLZXk6IlVuaWRlbnRpZmllZCJ9LGE9ezg6IkJhY2tzcGFjZSIsOToiVGFiIiwxMjoi
Q2xlYXIiLDEzOiJFbnRlciIsMTY6IlNoaWZ0IiwxNzoiQ29udHJvbCIsMTg6IkFsdCIsMTk6IlBh
dXNlIiwyMDoiQ2Fwc0xvY2siLDI3OiJFc2NhcGUiLDMyOiIgIiwzMzoiUGFnZVVwIiwzNDoiUGFn
ZURvd24iLDM1OiJFbmQiLDM2OiJIb21lIiwzNzoiQXJyb3dMZWZ0IiwzODoiQXJyb3dVcCIsMzk6
IkFycm93UmlnaHQiLDQwOiJBcnJvd0Rvd24iLDQ1OiJJbnNlcnQiLDQ2OiJEZWxldGUiLDExMjoi
RjEiLDExMzoiRjIiLDExNDoiRjMiLDExNToiRjQiLDExNjoiRjUiLDExNzoiRjYiLDExODoiRjci
LDExOToiRjgiLDEyMDoiRjkiLDEyMToiRjEwIiwxMjI6IkYxMSIsMTIzOiJGMTIiLDE0NDoiTnVt
TG9jayIsMTQ1OiJTY3JvbGxMb2NrIiwyMjQ6Ik1ldGEifTt0LmV4cG9ydHM9cn0sezk4Ojk4fV0s
MTAwOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQ9dGhp
cyxuPXQubmF0aXZlRXZlbnQ7aWYobi5nZXRNb2RpZmllclN0YXRlKXJldHVybiBuLmdldE1vZGlm
aWVyU3RhdGUoZSk7dmFyIHI9aVtlXTtyZXR1cm4hIXImJiEhbltyXX1mdW5jdGlvbiBvKGUpe3Jl
dHVybiByfXZhciBpPXtBbHQ6ImFsdEtleSIsQ29udHJvbDoiY3RybEtleSIsTWV0YToibWV0YUtl
eSIsU2hpZnQ6InNoaWZ0S2V5In07dC5leHBvcnRzPW99LHt9XSwxMDE6W2Z1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIgdD1lLnRhcmdldHx8ZS5zcmNFbGVtZW50
fHx3aW5kb3c7cmV0dXJuIHQuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQmJih0PXQuY29ycmVzcG9u
ZGluZ1VzZUVsZW1lbnQpLDM9PT10Lm5vZGVUeXBlP3QucGFyZW50Tm9kZTp0fXQuZXhwb3J0cz1y
fSx7fV0sMTAyOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFy
IHQ9ZSYmKG8mJmVbb118fGVbaV0pO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB0KXJldHVybiB0fXZh
ciBvPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvcixpPSJAQGl0ZXJh
dG9yIjt0LmV4cG9ydHM9cn0se31dLDEwMzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiByKCl7cmV0dXJuIG8rK312YXIgbz0xO3QuZXhwb3J0cz1yfSx7fV0sMTA0OltmdW5j
dGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7Zm9yKDtlJiZlLmZpcnN0Q2hp
bGQ7KWU9ZS5maXJzdENoaWxkO3JldHVybiBlfWZ1bmN0aW9uIG8oZSl7Zm9yKDtlOyl7aWYoZS5u
ZXh0U2libGluZylyZXR1cm4gZS5uZXh0U2libGluZztlPWUucGFyZW50Tm9kZX19ZnVuY3Rpb24g
aShlLHQpe2Zvcih2YXIgbj1yKGUpLGk9MCxhPTA7bjspe2lmKDM9PT1uLm5vZGVUeXBlKXtpZihh
PWkrbi50ZXh0Q29udGVudC5sZW5ndGgsaTw9dCYmYT49dClyZXR1cm57bm9kZTpuLG9mZnNldDp0
LWl9O2k9YX1uPXIobyhuKSl9fXQuZXhwb3J0cz1pfSx7fV0sMTA1OltmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXtyZXR1cm4haSYmby5jYW5Vc2VET00mJihpPSJ0ZXh0
Q29udGVudCJpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ/InRleHRDb250ZW50IjoiaW5uZXJU
ZXh0IiksaX12YXIgbz1lKDEyMCksaT1udWxsO3QuZXhwb3J0cz1yfSx7MTIwOjEyMH1dLDEwNjpb
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7dmFyIG49e307cmV0
dXJuIG5bZS50b0xvd2VyQ2FzZSgpXT10LnRvTG93ZXJDYXNlKCksblsiV2Via2l0IitlXT0id2Vi
a2l0Iit0LG5bIk1veiIrZV09Im1veiIrdCxuWyJtcyIrZV09Ik1TIit0LG5bIk8iK2VdPSJvIit0
LnRvTG93ZXJDYXNlKCksbn1mdW5jdGlvbiBvKGUpe2lmKHNbZV0pcmV0dXJuIHNbZV07aWYoIWFb
ZV0pcmV0dXJuIGU7dmFyIHQ9YVtlXTtmb3IodmFyIG4gaW4gdClpZih0Lmhhc093blByb3BlcnR5
KG4pJiZuIGluIHUpcmV0dXJuIHNbZV09dFtuXTtyZXR1cm4iIn12YXIgaT1lKDEyMCksYT17YW5p
bWF0aW9uZW5kOnIoIkFuaW1hdGlvbiIsIkFuaW1hdGlvbkVuZCIpLGFuaW1hdGlvbml0ZXJhdGlv
bjpyKCJBbmltYXRpb24iLCJBbmltYXRpb25JdGVyYXRpb24iKSxhbmltYXRpb25zdGFydDpyKCJB
bmltYXRpb24iLCJBbmltYXRpb25TdGFydCIpLHRyYW5zaXRpb25lbmQ6cigiVHJhbnNpdGlvbiIs
IlRyYW5zaXRpb25FbmQiKX0scz17fSx1PXt9O2kuY2FuVXNlRE9NJiYodT1kb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKS5zdHlsZSwiQW5pbWF0aW9uRXZlbnQiaW4gd2luZG93fHwoZGVsZXRl
IGEuYW5pbWF0aW9uZW5kLmFuaW1hdGlvbixkZWxldGUgYS5hbmltYXRpb25pdGVyYXRpb24uYW5p
bWF0aW9uLGRlbGV0ZSBhLmFuaW1hdGlvbnN0YXJ0LmFuaW1hdGlvbiksIlRyYW5zaXRpb25FdmVu
dCJpbiB3aW5kb3d8fGRlbGV0ZSBhLnRyYW5zaXRpb25lbmQudHJhbnNpdGlvbiksdC5leHBvcnRz
PW99LHsxMjA6MTIwfV0sMTA3OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IHIoZSl7aWYoZSl7dmFyIHQ9ZS5nZXROYW1lKCk7aWYodClyZXR1cm4iIENoZWNrIHRoZSByZW5k
ZXIgbWV0aG9kIG9mIGAiK3QrImAuIn1yZXR1cm4iIn1mdW5jdGlvbiBvKGUpe3JldHVybiJmdW5j
dGlvbiI9PXR5cGVvZiBlJiYidW5kZWZpbmVkIiE9dHlwZW9mIGUucHJvdG90eXBlJiYiZnVuY3Rp
b24iPT10eXBlb2YgZS5wcm90b3R5cGUubW91bnRDb21wb25lbnQmJiJmdW5jdGlvbiI9PXR5cGVv
ZiBlLnByb3RvdHlwZS5yZWNlaXZlQ29tcG9uZW50fWZ1bmN0aW9uIGkoZSx0KXt2YXIgbjtpZihu
dWxsPT09ZXx8ZT09PSExKW49bC5jcmVhdGUoaSk7ZWxzZSBpZigib2JqZWN0Ij09dHlwZW9mIGUp
e3ZhciBzPWU7IXN8fCJmdW5jdGlvbiIhPXR5cGVvZiBzLnR5cGUmJiJzdHJpbmciIT10eXBlb2Yg
cy50eXBlP2EoIjEzMCIsbnVsbD09cy50eXBlP3MudHlwZTp0eXBlb2Ygcy50eXBlLHIocy5fb3du
ZXIpKTp2b2lkIDAsInN0cmluZyI9PXR5cGVvZiBzLnR5cGU/bj1jLmNyZWF0ZUludGVybmFsQ29t
cG9uZW50KHMpOm8ocy50eXBlKT8obj1uZXcgcy50eXBlKHMpLG4uZ2V0SG9zdE5vZGV8fChuLmdl
dEhvc3ROb2RlPW4uZ2V0TmF0aXZlTm9kZSkpOm49bmV3IHAocyl9ZWxzZSJzdHJpbmciPT10eXBl
b2YgZXx8Im51bWJlciI9PXR5cGVvZiBlP249Yy5jcmVhdGVJbnN0YW5jZUZvclRleHQoZSk6YSgi
MTMxIix0eXBlb2YgZSk7cmV0dXJuIG4uX21vdW50SW5kZXg9MCxuLl9tb3VudEltYWdlPW51bGws
bn12YXIgYT1lKDExMSkscz1lKDE0MCksdT1lKDI5KSxsPWUoNDgpLGM9ZSg1MykscD0oZSgxMDMp
LGUoMTM0KSxlKDEzOSksZnVuY3Rpb24oZSl7dGhpcy5jb25zdHJ1Y3QoZSl9KTtzKHAucHJvdG90
eXBlLHUse19pbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50Oml9KSx0LmV4cG9ydHM9aX0sezEwMzox
MDMsMTExOjExMSwxMzQ6MTM0LDEzOToxMzksMTQwOjE0MCwyOToyOSw0ODo0OCw1Mzo1M31dLDEw
ODpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7aWYoIWkuY2Fu
VXNlRE9NfHx0JiYhKCJhZGRFdmVudExpc3RlbmVyImluIGRvY3VtZW50KSlyZXR1cm4hMTt2YXIg
bj0ib24iK2Uscj1uIGluIGRvY3VtZW50O2lmKCFyKXt2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKTthLnNldEF0dHJpYnV0ZShuLCJyZXR1cm47Iikscj0iZnVuY3Rpb24iPT10eXBl
b2YgYVtuXX1yZXR1cm4hciYmbyYmIndoZWVsIj09PWUmJihyPWRvY3VtZW50LmltcGxlbWVudGF0
aW9uLmhhc0ZlYXR1cmUoIkV2ZW50cy53aGVlbCIsIjMuMCIpKSxyfXZhciBvLGk9ZSgxMjApO2ku
Y2FuVXNlRE9NJiYobz1kb2N1bWVudC5pbXBsZW1lbnRhdGlvbiYmZG9jdW1lbnQuaW1wbGVtZW50
YXRpb24uaGFzRmVhdHVyZSYmZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uaGFzRmVhdHVyZSgiIiwi
IikhPT0hMCksdC5leHBvcnRzPXJ9LHsxMjA6MTIwfV0sMTA5OltmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQ9ZSYmZS5ub2RlTmFtZSYmZS5ub2RlTmFtZS50
b0xvd2VyQ2FzZSgpO3JldHVybiJpbnB1dCI9PT10PyEhb1tlLnR5cGVdOiJ0ZXh0YXJlYSI9PT10
fXZhciBvPXtjb2xvcjohMCxkYXRlOiEwLGRhdGV0aW1lOiEwLCJkYXRldGltZS1sb2NhbCI6ITAs
ZW1haWw6ITAsbW9udGg6ITAsbnVtYmVyOiEwLHBhc3N3b3JkOiEwLHJhbmdlOiEwLHNlYXJjaDoh
MCx0ZWw6ITAsdGV4dDohMCx0aW1lOiEwLHVybDohMCx3ZWVrOiEwfTt0LmV4cG9ydHM9cn0se31d
LDExMDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybici
JytvKGUpKyciJ312YXIgbz1lKDk1KTt0LmV4cG9ydHM9cn0sezk1Ojk1fV0sMTExOltmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7Zm9yKHZhciB0PWFyZ3VtZW50cy5s
ZW5ndGgtMSxuPSJNaW5pZmllZCBSZWFjdCBlcnJvciAjIitlKyI7IHZpc2l0IGh0dHA6Ly9mYWNl
Ym9vay5naXRodWIuaW8vcmVhY3QvZG9jcy9lcnJvci1kZWNvZGVyLmh0bWw/aW52YXJpYW50PSIr
ZSxyPTA7cjx0O3IrKyluKz0iJmFyZ3NbXT0iK2VuY29kZVVSSUNvbXBvbmVudChhcmd1bWVudHNb
cisxXSk7bis9IiBmb3IgdGhlIGZ1bGwgbWVzc2FnZSBvciB1c2UgdGhlIG5vbi1taW5pZmllZCBk
ZXYgZW52aXJvbm1lbnQgZm9yIGZ1bGwgZXJyb3JzIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2Fy
bmluZ3MuIjt2YXIgbz1uZXcgRXJyb3Iobik7dGhyb3cgby5uYW1lPSJJbnZhcmlhbnQgVmlvbGF0
aW9uIixvLmZyYW1lc1RvUG9wPTEsb310LmV4cG9ydHM9cn0se31dLDExMjpbZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcixvPWUoMTIwKSxpPWUoMTApLGE9L15bIFxyXG5cdFxmXS8s
cz0vPCghLS18bGlua3xub3NjcmlwdHxtZXRhfHNjcmlwdHxzdHlsZSlbIFxyXG5cdFxmXC8+XS8s
dT1lKDkzKSxsPXUoZnVuY3Rpb24oZSx0KXtpZihlLm5hbWVzcGFjZVVSSSE9PWkuc3ZnfHwiaW5u
ZXJIVE1MImluIGUpZS5pbm5lckhUTUw9dDtlbHNle3I9cnx8ZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iiksci5pbm5lckhUTUw9Ijxzdmc+Iit0KyI8L3N2Zz4iO2Zvcih2YXIgbj1yLmZpcnN0
Q2hpbGQ7bi5maXJzdENoaWxkOyllLmFwcGVuZENoaWxkKG4uZmlyc3RDaGlsZCl9fSk7aWYoby5j
YW5Vc2VET00pe3ZhciBjPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2MuaW5uZXJIVE1M
PSIgIiwiIj09PWMuaW5uZXJIVE1MJiYobD1mdW5jdGlvbihlLHQpe2lmKGUucGFyZW50Tm9kZSYm
ZS5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChlLGUpLGEudGVzdCh0KXx8IjwiPT09dFswXSYmcy50
ZXN0KHQpKXtlLmlubmVySFRNTD1TdHJpbmcuZnJvbUNoYXJDb2RlKDY1Mjc5KSt0O3ZhciBuPWUu
Zmlyc3RDaGlsZDsxPT09bi5kYXRhLmxlbmd0aD9lLnJlbW92ZUNoaWxkKG4pOm4uZGVsZXRlRGF0
YSgwLDEpfWVsc2UgZS5pbm5lckhUTUw9dH0pLGM9bnVsbH10LmV4cG9ydHM9bH0sezEwOjEwLDEy
MDoxMjAsOTM6OTN9XSwxMTM6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSgx
MjApLG89ZSg5NSksaT1lKDExMiksYT1mdW5jdGlvbihlLHQpe2lmKHQpe3ZhciBuPWUuZmlyc3RD
aGlsZDtpZihuJiZuPT09ZS5sYXN0Q2hpbGQmJjM9PT1uLm5vZGVUeXBlKXJldHVybiB2b2lkKG4u
bm9kZVZhbHVlPXQpfWUudGV4dENvbnRlbnQ9dH07ci5jYW5Vc2VET00mJigidGV4dENvbnRlbnQi
aW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50fHwoYT1mdW5jdGlvbihlLHQpe3JldHVybiAzPT09
ZS5ub2RlVHlwZT92b2lkKGUubm9kZVZhbHVlPXQpOnZvaWQgaShlLG8odCkpfSkpLHQuZXhwb3J0
cz1hfSx7MTEyOjExMiwxMjA6MTIwLDk1Ojk1fV0sMTE0OltmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXt2YXIgbj1udWxsPT09ZXx8ZT09PSExLHI9bnVsbD09PXR8
fHQ9PT0hMTtpZihufHxyKXJldHVybiBuPT09cjt2YXIgbz10eXBlb2YgZSxpPXR5cGVvZiB0O3Jl
dHVybiJzdHJpbmciPT09b3x8Im51bWJlciI9PT1vPyJzdHJpbmciPT09aXx8Im51bWJlciI9PT1p
OiJvYmplY3QiPT09aSYmZS50eXBlPT09dC50eXBlJiZlLmtleT09PXQua2V5fXQuZXhwb3J0cz1y
fSx7fV0sMTE1OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXty
ZXR1cm4gZSYmIm9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT1lLmtleT9sLmVzY2FwZShlLmtleSk6
dC50b1N0cmluZygzNil9ZnVuY3Rpb24gbyhlLHQsbixpKXt2YXIgZD10eXBlb2YgZTtpZigidW5k
ZWZpbmVkIiE9PWQmJiJib29sZWFuIiE9PWR8fChlPW51bGwpLG51bGw9PT1lfHwic3RyaW5nIj09
PWR8fCJudW1iZXIiPT09ZHx8Im9iamVjdCI9PT1kJiZlLiQkdHlwZW9mPT09cylyZXR1cm4gbihp
LGUsIiI9PT10P2MrcihlLDApOnQpLDE7dmFyIGYsaCxtPTAsdj0iIj09PXQ/Yzp0K3A7aWYoQXJy
YXkuaXNBcnJheShlKSlmb3IodmFyIGc9MDtnPGUubGVuZ3RoO2crKylmPWVbZ10saD12K3IoZixn
KSxtKz1vKGYsaCxuLGkpO2Vsc2V7dmFyIHk9dShlKTtpZih5KXt2YXIgXyxDPXkuY2FsbChlKTtp
Zih5IT09ZS5lbnRyaWVzKWZvcih2YXIgYj0wOyEoXz1DLm5leHQoKSkuZG9uZTspZj1fLnZhbHVl
LGg9dityKGYsYisrKSxtKz1vKGYsaCxuLGkpO2Vsc2UgZm9yKDshKF89Qy5uZXh0KCkpLmRvbmU7
KXt2YXIgRT1fLnZhbHVlO0UmJihmPUVbMV0saD12K2wuZXNjYXBlKEVbMF0pK3ArcihmLDApLG0r
PW8oZixoLG4saSkpfX1lbHNlIGlmKCJvYmplY3QiPT09ZCl7dmFyIHg9IiIsdz1TdHJpbmcoZSk7
YSgiMzEiLCJbb2JqZWN0IE9iamVjdF0iPT09dz8ib2JqZWN0IHdpdGgga2V5cyB7IitPYmplY3Qu
a2V5cyhlKS5qb2luKCIsICIpKyJ9Ijp3LHgpfX1yZXR1cm4gbX1mdW5jdGlvbiBpKGUsdCxuKXty
ZXR1cm4gbnVsbD09ZT8wOm8oZSwiIix0LG4pfXZhciBhPWUoMTExKSxzPShlKDExNyksZSg0Nykp
LHU9ZSgxMDIpLGw9KGUoMTM0KSxlKDIyKSksYz0oZSgxMzkpLCIuIikscD0iOiI7dC5leHBvcnRz
PWl9LHsxMDI6MTAyLDExMToxMTEsMTE3OjExNywxMzQ6MTM0LDEzOToxMzksMjI6MjIsNDc6NDd9
XSwxMTY6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9KGUoMTQwKSxlKDEyNikp
LG89KGUoMTM5KSxyKTt0LmV4cG9ydHM9b30sezEyNjoxMjYsMTM5OjEzOSwxNDA6MTQwfV0sMTE3
OltmdW5jdGlvbih0LG4scil7InVzZSBzdHJpY3QiO3ZhciBvPWUuX19TRUNSRVRfSU5URVJOQUxT
X0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQ7bi5leHBvcnRzPW8uUmVhY3RDdXJyZW50
T3duZXJ9LHt9XSwxMTg6W2Z1bmN0aW9uKHQsbixyKXsidXNlIHN0cmljdCI7bi5leHBvcnRzPWV9
LHt9XSwxMTk6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSgxMjYpLG89e2xp
c3RlbjpmdW5jdGlvbihlLHQsbil7cmV0dXJuIGUuYWRkRXZlbnRMaXN0ZW5lcj8oZS5hZGRFdmVu
dExpc3RlbmVyKHQsbiwhMSkse3JlbW92ZTpmdW5jdGlvbigpe2UucmVtb3ZlRXZlbnRMaXN0ZW5l
cih0LG4sITEpfX0pOmUuYXR0YWNoRXZlbnQ/KGUuYXR0YWNoRXZlbnQoIm9uIit0LG4pLHtyZW1v
dmU6ZnVuY3Rpb24oKXtlLmRldGFjaEV2ZW50KCJvbiIrdCxuKX19KTp2b2lkIDB9LGNhcHR1cmU6
ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlLmFkZEV2ZW50TGlzdGVuZXI/KGUuYWRkRXZlbnRMaXN0
ZW5lcih0LG4sITApLHtyZW1vdmU6ZnVuY3Rpb24oKXtlLnJlbW92ZUV2ZW50TGlzdGVuZXIodCxu
LCEwKX19KTp7cmVtb3ZlOnJ9fSxyZWdpc3RlckRlZmF1bHQ6ZnVuY3Rpb24oKXt9fTt0LmV4cG9y
dHM9b30sezEyNjoxMjZ9XSwxMjA6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9
ISgidW5kZWZpbmVkIj09dHlwZW9mIHdpbmRvd3x8IXdpbmRvdy5kb2N1bWVudHx8IXdpbmRvdy5k
b2N1bWVudC5jcmVhdGVFbGVtZW50KSxvPXtjYW5Vc2VET006cixjYW5Vc2VXb3JrZXJzOiJ1bmRl
ZmluZWQiIT10eXBlb2YgV29ya2VyLGNhblVzZUV2ZW50TGlzdGVuZXJzOnImJiEoIXdpbmRvdy5h
ZGRFdmVudExpc3RlbmVyJiYhd2luZG93LmF0dGFjaEV2ZW50KSxjYW5Vc2VWaWV3cG9ydDpyJiYh
IXdpbmRvdy5zY3JlZW4saXNJbldvcmtlcjohcn07dC5leHBvcnRzPW99LHt9XSwxMjE6W2Z1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZS5yZXBsYWNlKG8s
ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdC50b1VwcGVyQ2FzZSgpfSl9dmFyIG89Ly0oLikvZzt0LmV4
cG9ydHM9cn0se31dLDEyMjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBy
KGUpe3JldHVybiBvKGUucmVwbGFjZShpLCJtcy0iKSl9dmFyIG89ZSgxMjEpLGk9L14tbXMtLzt0
LmV4cG9ydHM9cn0sezEyMToxMjF9XSwxMjM6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gcihlLHQpe3JldHVybiEoIWV8fCF0KSYmKGU9PT10fHwhbyhlKSYmKG8odCk/cihl
LHQucGFyZW50Tm9kZSk6ImNvbnRhaW5zImluIGU/ZS5jb250YWlucyh0KTohIWUuY29tcGFyZURv
Y3VtZW50UG9zaXRpb24mJiEhKDE2JmUuY29tcGFyZURvY3VtZW50UG9zaXRpb24odCkpKSl9dmFy
IG89ZSgxMzYpO3QuZXhwb3J0cz1yfSx7MTM2OjEzNn1dLDEyNDpbZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3ZhciB0PWUubGVuZ3RoO2lmKEFycmF5LmlzQXJyYXko
ZSl8fCJvYmplY3QiIT10eXBlb2YgZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGU/YSghMSk6dm9pZCAw
LCJudW1iZXIiIT10eXBlb2YgdD9hKCExKTp2b2lkIDAsMD09PXR8fHQtMSBpbiBlP3ZvaWQgMDph
KCExKSwiZnVuY3Rpb24iPT10eXBlb2YgZS5jYWxsZWU/YSghMSk6dm9pZCAwLGUuaGFzT3duUHJv
cGVydHkpdHJ5e3JldHVybiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChlKX1jYXRjaChlKXt9
Zm9yKHZhciBuPUFycmF5KHQpLHI9MDtyPHQ7cisrKW5bcl09ZVtyXTtyZXR1cm4gbn1mdW5jdGlv
biBvKGUpe3JldHVybiEhZSYmKCJvYmplY3QiPT10eXBlb2YgZXx8ImZ1bmN0aW9uIj09dHlwZW9m
IGUpJiYibGVuZ3RoImluIGUmJiEoInNldEludGVydmFsImluIGUpJiYibnVtYmVyIiE9dHlwZW9m
IGUubm9kZVR5cGUmJihBcnJheS5pc0FycmF5KGUpfHwiY2FsbGVlImluIGV8fCJpdGVtImluIGUp
fWZ1bmN0aW9uIGkoZSl7cmV0dXJuIG8oZSk/QXJyYXkuaXNBcnJheShlKT9lLnNsaWNlKCk6cihl
KTpbZV19dmFyIGE9ZSgxMzQpO3QuZXhwb3J0cz1pfSx7MTM0OjEzNH1dLDEyNTpbZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3ZhciB0PWUubWF0Y2goYyk7cmV0dXJu
IHQmJnRbMV0udG9Mb3dlckNhc2UoKX1mdW5jdGlvbiBvKGUsdCl7dmFyIG49bDtsP3ZvaWQgMDp1
KCExKTt2YXIgbz1yKGUpLGk9byYmcyhvKTtpZihpKXtuLmlubmVySFRNTD1pWzFdK2UraVsyXTtm
b3IodmFyIGM9aVswXTtjLS07KW49bi5sYXN0Q2hpbGR9ZWxzZSBuLmlubmVySFRNTD1lO3ZhciBw
PW4uZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpO3AubGVuZ3RoJiYodD92b2lkIDA6dSgh
MSksYShwKS5mb3JFYWNoKHQpKTtmb3IodmFyIGQ9QXJyYXkuZnJvbShuLmNoaWxkTm9kZXMpO24u
bGFzdENoaWxkOyluLnJlbW92ZUNoaWxkKG4ubGFzdENoaWxkKTtyZXR1cm4gZH12YXIgaT1lKDEy
MCksYT1lKDEyNCkscz1lKDEzMCksdT1lKDEzNCksbD1pLmNhblVzZURPTT9kb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKTpudWxsLGM9L15ccyo8KFx3KykvO3QuZXhwb3J0cz1vfSx7MTIwOjEy
MCwxMjQ6MTI0LDEzMDoxMzAsMTM0OjEzNH1dLDEyNjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlfX12YXIgbz1mdW5j
dGlvbigpe307by50aGF0UmV0dXJucz1yLG8udGhhdFJldHVybnNGYWxzZT1yKCExKSxvLnRoYXRS
ZXR1cm5zVHJ1ZT1yKCEwKSxvLnRoYXRSZXR1cm5zTnVsbD1yKG51bGwpLG8udGhhdFJldHVybnNU
aGlzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LG8udGhhdFJldHVybnNBcmd1bWVudD1mdW5jdGlv
bihlKXtyZXR1cm4gZX0sdC5leHBvcnRzPW99LHt9XSwxMjc6W2Z1bmN0aW9uKGUsdCxuKXsidXNl
IHN0cmljdCI7dmFyIHI9e307dC5leHBvcnRzPXJ9LHt9XSwxMjg6W2Z1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt0cnl7ZS5mb2N1cygpfWNhdGNoKGUpe319dC5leHBv
cnRzPXJ9LHt9XSwxMjk6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigp
e2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgZG9jdW1lbnQpcmV0dXJuIG51bGw7dHJ5e3JldHVybiBk
b2N1bWVudC5hY3RpdmVFbGVtZW50fHxkb2N1bWVudC5ib2R5fWNhdGNoKGUpe3JldHVybiBkb2N1
bWVudC5ib2R5fX10LmV4cG9ydHM9cn0se31dLDEzMDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBhP3ZvaWQgMDppKCExKSxkLmhhc093blByb3BlcnR5
KGUpfHwoZT0iKiIpLHMuaGFzT3duUHJvcGVydHkoZSl8fCgiKiI9PT1lP2EuaW5uZXJIVE1MPSI8
bGluayAvPiI6YS5pbm5lckhUTUw9IjwiK2UrIj48LyIrZSsiPiIsc1tlXT0hYS5maXJzdENoaWxk
KSxzW2VdP2RbZV06bnVsbH12YXIgbz1lKDEyMCksaT1lKDEzNCksYT1vLmNhblVzZURPTT9kb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTpudWxsLHM9e30sdT1bMSwnPHNlbGVjdCBtdWx0aXBs
ZT0idHJ1ZSI+JywiPC9zZWxlY3Q+Il0sbD1bMSwiPHRhYmxlPiIsIjwvdGFibGU+Il0sYz1bMywi
PHRhYmxlPjx0Ym9keT48dHI+IiwiPC90cj48L3Rib2R5PjwvdGFibGU+Il0scD1bMSwnPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPicsIjwvc3ZnPiJdLGQ9eyIqIjpbMSwi
PzxkaXY+IiwiPC9kaXY+Il0sYXJlYTpbMSwiPG1hcD4iLCI8L21hcD4iXSxjb2w6WzIsIjx0YWJs
ZT48dGJvZHk+PC90Ym9keT48Y29sZ3JvdXA+IiwiPC9jb2xncm91cD48L3RhYmxlPiJdLGxlZ2Vu
ZDpbMSwiPGZpZWxkc2V0PiIsIjwvZmllbGRzZXQ+Il0scGFyYW06WzEsIjxvYmplY3Q+IiwiPC9v
YmplY3Q+Il0sdHI6WzIsIjx0YWJsZT48dGJvZHk+IiwiPC90Ym9keT48L3RhYmxlPiJdLG9wdGdy
b3VwOnUsb3B0aW9uOnUsY2FwdGlvbjpsLGNvbGdyb3VwOmwsdGJvZHk6bCx0Zm9vdDpsLHRoZWFk
OmwsdGQ6Yyx0aDpjfSxmPVsiY2lyY2xlIiwiY2xpcFBhdGgiLCJkZWZzIiwiZWxsaXBzZSIsImci
LCJpbWFnZSIsImxpbmUiLCJsaW5lYXJHcmFkaWVudCIsIm1hc2siLCJwYXRoIiwicGF0dGVybiIs
InBvbHlnb24iLCJwb2x5bGluZSIsInJhZGlhbEdyYWRpZW50IiwicmVjdCIsInN0b3AiLCJ0ZXh0
IiwidHNwYW4iXTtmLmZvckVhY2goZnVuY3Rpb24oZSl7ZFtlXT1wLHNbZV09ITB9KSx0LmV4cG9y
dHM9cn0sezEyMDoxMjAsMTM0OjEzNH1dLDEzMTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiByKGUpe3JldHVybiBlPT09d2luZG93P3t4OndpbmRvdy5wYWdlWE9mZnNldHx8
ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnQseTp3aW5kb3cucGFnZVlPZmZzZXR8
fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3B9Ont4OmUuc2Nyb2xsTGVmdCx5OmUu
c2Nyb2xsVG9wfX10LmV4cG9ydHM9cn0se31dLDEzMjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBlLnJlcGxhY2UobywiLSQxIikudG9Mb3dlckNhc2Uo
KX12YXIgbz0vKFtBLVpdKS9nO3QuZXhwb3J0cz1yfSx7fV0sMTMzOltmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIG8oZSkucmVwbGFjZShpLCItbXMtIil9
dmFyIG89ZSgxMzIpLGk9L15tcy0vO3QuZXhwb3J0cz1yfSx7MTMyOjEzMn1dLDEzNDpbZnVuY3Rp
b24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIsbyxpLGEscyl7aWYoIWUp
e3ZhciB1O2lmKHZvaWQgMD09PXQpdT1uZXcgRXJyb3IoIk1pbmlmaWVkIGV4Y2VwdGlvbiBvY2N1
cnJlZDsgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50IGZvciB0aGUgZnVsbCBl
cnJvciBtZXNzYWdlIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuIik7ZWxzZXt2YXIg
bD1bbixyLG8saSxhLHNdLGM9MDt1PW5ldyBFcnJvcih0LnJlcGxhY2UoLyVzL2csZnVuY3Rpb24o
KXtyZXR1cm4gbFtjKytdfSkpLHUubmFtZT0iSW52YXJpYW50IFZpb2xhdGlvbiJ9dGhyb3cgdS5m
cmFtZXNUb1BvcD0xLHV9fXQuZXhwb3J0cz1yfSx7fV0sMTM1OltmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuISghZXx8ISgiZnVuY3Rpb24iPT10eXBlb2Yg
Tm9kZT9lIGluc3RhbmNlb2YgTm9kZToib2JqZWN0Ij09dHlwZW9mIGUmJiJudW1iZXIiPT10eXBl
b2YgZS5ub2RlVHlwZSYmInN0cmluZyI9PXR5cGVvZiBlLm5vZGVOYW1lKSl9dC5leHBvcnRzPXJ9
LHt9XSwxMzY6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1
cm4gbyhlKSYmMz09ZS5ub2RlVHlwZX12YXIgbz1lKDEzNSk7dC5leHBvcnRzPXJ9LHsxMzU6MTM1
fV0sMTM3OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQ9
e307cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiB0Lmhhc093blByb3BlcnR5KG4pfHwodFtuXT1l
LmNhbGwodGhpcyxuKSksdFtuXX19dC5leHBvcnRzPXJ9LHt9XSwxMzg6W2Z1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe3JldHVybiBlPT09dD8wIT09ZXx8MCE9PXR8
fDEvZT09PTEvdDplIT09ZSYmdCE9PXR9ZnVuY3Rpb24gbyhlLHQpe2lmKHIoZSx0KSlyZXR1cm4h
MDtpZigib2JqZWN0IiE9dHlwZW9mIGV8fG51bGw9PT1lfHwib2JqZWN0IiE9dHlwZW9mIHR8fG51
bGw9PT10KXJldHVybiExO3ZhciBuPU9iamVjdC5rZXlzKGUpLG89T2JqZWN0LmtleXModCk7aWYo
bi5sZW5ndGghPT1vLmxlbmd0aClyZXR1cm4hMTtmb3IodmFyIGE9MDthPG4ubGVuZ3RoO2ErKylp
ZighaS5jYWxsKHQsblthXSl8fCFyKGVbblthXV0sdFtuW2FdXSkpcmV0dXJuITE7cmV0dXJuITB9
dmFyIGk9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTt0LmV4cG9ydHM9b30se31dLDEz
OTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDEyNiksbz1yO3QuZXhwb3J0
cz1vfSx7MTI2OjEyNn1dLDE0MDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biByKGUpe2lmKG51bGw9PT1lfHx2b2lkIDA9PT1lKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVj
dC5hc3NpZ24gY2Fubm90IGJlIGNhbGxlZCB3aXRoIG51bGwgb3IgdW5kZWZpbmVkIik7cmV0dXJu
IE9iamVjdChlKX1mdW5jdGlvbiBvKCl7dHJ5e2lmKCFPYmplY3QuYXNzaWduKXJldHVybiExO3Zh
ciBlPW5ldyBTdHJpbmcoImFiYyIpO2lmKGVbNV09ImRlIiwiNSI9PT1PYmplY3QuZ2V0T3duUHJv
cGVydHlOYW1lcyhlKVswXSlyZXR1cm4hMTtmb3IodmFyIHQ9e30sbj0wO248MTA7bisrKXRbIl8i
K1N0cmluZy5mcm9tQ2hhckNvZGUobildPW47dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5TmFt
ZXModCkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiB0W2VdfSk7aWYoIjAxMjM0NTY3ODkiIT09ci5q
b2luKCIiKSlyZXR1cm4hMTt2YXIgbz17fTtyZXR1cm4iYWJjZGVmZ2hpamtsbW5vcHFyc3QiLnNw
bGl0KCIiKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe29bZV09ZX0pLCJhYmNkZWZnaGlqa2xtbm9wcXJz
dCI9PT1PYmplY3Qua2V5cyhPYmplY3QuYXNzaWduKHt9LG8pKS5qb2luKCIiKX1jYXRjaChlKXty
ZXR1cm4hMX19dmFyIGk9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxhPU9iamVjdC5w
cm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7dC5leHBvcnRzPW8oKT9PYmplY3QuYXNzaWdu
OmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuLG8scz1yKGUpLHU9MTt1PGFyZ3VtZW50cy5sZW5ndGg7
dSsrKXtuPU9iamVjdChhcmd1bWVudHNbdV0pO2Zvcih2YXIgbCBpbiBuKWkuY2FsbChuLGwpJiYo
c1tsXT1uW2xdKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXtvPU9iamVjdC5nZXRP
d25Qcm9wZXJ0eVN5bWJvbHMobik7Zm9yKHZhciBjPTA7YzxvLmxlbmd0aDtjKyspYS5jYWxsKG4s
b1tjXSkmJihzW29bY11dPW5bb1tjXV0pfX1yZXR1cm4gc319LHt9XX0se30sWzQxXSkoNDEpfSl9
KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9y
ZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2Rpc3QvcmVhY3QtZG9tLmpzIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9kaXN0L3JlYWN0LWRvbS5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi41NzMyYWJmNzE2MDZjODFlNmIxZTNlOGJmYTMzOGU3ZmRjYzU2ZjEzCi0tLSAvZGV2L251
bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9kaXN0L3Jl
YWN0LWRvbS5qcwpAQCAtMCwwICsxLDE4MjI3IEBACisgLyoqCisgICogUmVhY3RET00gdjE1LjQu
MAorICAqLworCis7KGZ1bmN0aW9uKGYpIHsKKyAgLy8gQ29tbW9uSlMKKyAgaWYgKHR5cGVvZiBl
eHBvcnRzID09PSAib2JqZWN0IiAmJiB0eXBlb2YgbW9kdWxlICE9PSAidW5kZWZpbmVkIikgewor
ICAgIGYocmVxdWlyZSgncmVhY3QnKSk7CisKKyAgLy8gUmVxdWlyZUpTCisgIH0gZWxzZSBpZiAo
dHlwZW9mIGRlZmluZSA9PT0gImZ1bmN0aW9uIiAmJiBkZWZpbmUuYW1kKSB7CisgICAgcmVxdWly
ZShbJ3JlYWN0J10sIGYpOworCisgIC8vIDxzY3JpcHQ+CisgIH0gZWxzZSB7CisgICAgdmFyIGc7
CisgICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICJ1bmRlZmluZWQiKSB7CisgICAgICBnID0gd2lu
ZG93OworICAgIH0gZWxzZSBpZiAodHlwZW9mIGdsb2JhbCAhPT0gInVuZGVmaW5lZCIpIHsKKyAg
ICAgIGcgPSBnbG9iYWw7CisgICAgfSBlbHNlIGlmICh0eXBlb2Ygc2VsZiAhPT0gInVuZGVmaW5l
ZCIpIHsKKyAgICAgIGcgPSBzZWxmOworICAgIH0gZWxzZSB7CisgICAgICAvLyB3b3JrcyBwcm92
aWRpbmcgd2UncmUgbm90IGluICJ1c2Ugc3RyaWN0IjsKKyAgICAgIC8vIG5lZWRlZCBmb3IgSmF2
YSA4IE5hc2hvcm4KKyAgICAgIC8vIHNlZSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVh
Y3QvaXNzdWVzLzMwMzcKKyAgICAgIGcgPSB0aGlzOworICAgIH0KKyAgICBmKGcuUmVhY3QpCisg
IH0KK30pKGZ1bmN0aW9uKFJlYWN0KSB7CisgIChmdW5jdGlvbihmKXtpZih0eXBlb2YgZXhwb3J0
cz09PSJvYmplY3QiJiZ0eXBlb2YgbW9kdWxlIT09InVuZGVmaW5lZCIpe21vZHVsZS5leHBvcnRz
PWYoKX1lbHNlIGlmKHR5cGVvZiBkZWZpbmU9PT0iZnVuY3Rpb24iJiZkZWZpbmUuYW1kKXtkZWZp
bmUoW10sZil9ZWxzZXt2YXIgZztpZih0eXBlb2Ygd2luZG93IT09InVuZGVmaW5lZCIpe2c9d2lu
ZG93fWVsc2UgaWYodHlwZW9mIGdsb2JhbCE9PSJ1bmRlZmluZWQiKXtnPWdsb2JhbH1lbHNlIGlm
KHR5cGVvZiBzZWxmIT09InVuZGVmaW5lZCIpe2c9c2VsZn1lbHNle2c9dGhpc31nLlJlYWN0RE9N
ID0gZigpfX0pKGZ1bmN0aW9uKCl7dmFyIGRlZmluZSxtb2R1bGUsZXhwb3J0cztyZXR1cm4gKGZ1
bmN0aW9uIGUodCxuLHIpe2Z1bmN0aW9uIHMobyx1KXtpZighbltvXSl7aWYoIXRbb10pe3ZhciBh
PXR5cGVvZiByZXF1aXJlPT0iZnVuY3Rpb24iJiZyZXF1aXJlO2lmKCF1JiZhKXJldHVybiBhKG8s
ITApO2lmKGkpcmV0dXJuIGkobywhMCk7dmFyIGY9bmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1
bGUgJyIrbysiJyIpO3Rocm93IGYuY29kZT0iTU9EVUxFX05PVF9GT1VORCIsZn12YXIgbD1uW29d
PXtleHBvcnRzOnt9fTt0W29dWzBdLmNhbGwobC5leHBvcnRzLGZ1bmN0aW9uKGUpe3ZhciBuPXRb
b11bMV1bZV07cmV0dXJuIHMobj9uOmUpfSxsLGwuZXhwb3J0cyxlLHQsbixyKX1yZXR1cm4gbltv
XS5leHBvcnRzfXZhciBpPXR5cGVvZiByZXF1aXJlPT0iZnVuY3Rpb24iJiZyZXF1aXJlO2Zvcih2
YXIgbz0wO288ci5sZW5ndGg7bysrKXMocltvXSk7cmV0dXJuIHN9KSh7MTpbZnVuY3Rpb24oX2Rl
cmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZh
Y2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNl
IGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRo
ZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0
cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKwor
J3VzZSBzdHJpY3QnOworCit2YXIgQVJJQURPTVByb3BlcnR5Q29uZmlnID0geworICBQcm9wZXJ0
aWVzOiB7CisgICAgLy8gR2xvYmFsIFN0YXRlcyBhbmQgUHJvcGVydGllcworICAgICdhcmlhLWN1
cnJlbnQnOiAwLCAvLyBzdGF0ZQorICAgICdhcmlhLWRldGFpbHMnOiAwLAorICAgICdhcmlhLWRp
c2FibGVkJzogMCwgLy8gc3RhdGUKKyAgICAnYXJpYS1oaWRkZW4nOiAwLCAvLyBzdGF0ZQorICAg
ICdhcmlhLWludmFsaWQnOiAwLCAvLyBzdGF0ZQorICAgICdhcmlhLWtleXNob3J0Y3V0cyc6IDAs
CisgICAgJ2FyaWEtbGFiZWwnOiAwLAorICAgICdhcmlhLXJvbGVkZXNjcmlwdGlvbic6IDAsCisg
ICAgLy8gV2lkZ2V0IEF0dHJpYnV0ZXMKKyAgICAnYXJpYS1hdXRvY29tcGxldGUnOiAwLAorICAg
ICdhcmlhLWNoZWNrZWQnOiAwLAorICAgICdhcmlhLWV4cGFuZGVkJzogMCwKKyAgICAnYXJpYS1o
YXNwb3B1cCc6IDAsCisgICAgJ2FyaWEtbGV2ZWwnOiAwLAorICAgICdhcmlhLW1vZGFsJzogMCwK
KyAgICAnYXJpYS1tdWx0aWxpbmUnOiAwLAorICAgICdhcmlhLW11bHRpc2VsZWN0YWJsZSc6IDAs
CisgICAgJ2FyaWEtb3JpZW50YXRpb24nOiAwLAorICAgICdhcmlhLXBsYWNlaG9sZGVyJzogMCwK
KyAgICAnYXJpYS1wcmVzc2VkJzogMCwKKyAgICAnYXJpYS1yZWFkb25seSc6IDAsCisgICAgJ2Fy
aWEtcmVxdWlyZWQnOiAwLAorICAgICdhcmlhLXNlbGVjdGVkJzogMCwKKyAgICAnYXJpYS1zb3J0
JzogMCwKKyAgICAnYXJpYS12YWx1ZW1heCc6IDAsCisgICAgJ2FyaWEtdmFsdWVtaW4nOiAwLAor
ICAgICdhcmlhLXZhbHVlbm93JzogMCwKKyAgICAnYXJpYS12YWx1ZXRleHQnOiAwLAorICAgIC8v
IExpdmUgUmVnaW9uIEF0dHJpYnV0ZXMKKyAgICAnYXJpYS1hdG9taWMnOiAwLAorICAgICdhcmlh
LWJ1c3knOiAwLAorICAgICdhcmlhLWxpdmUnOiAwLAorICAgICdhcmlhLXJlbGV2YW50JzogMCwK
KyAgICAvLyBEcmFnLWFuZC1Ecm9wIEF0dHJpYnV0ZXMKKyAgICAnYXJpYS1kcm9wZWZmZWN0Jzog
MCwKKyAgICAnYXJpYS1ncmFiYmVkJzogMCwKKyAgICAvLyBSZWxhdGlvbnNoaXAgQXR0cmlidXRl
cworICAgICdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnOiAwLAorICAgICdhcmlhLWNvbGNvdW50Jzog
MCwKKyAgICAnYXJpYS1jb2xpbmRleCc6IDAsCisgICAgJ2FyaWEtY29sc3Bhbic6IDAsCisgICAg
J2FyaWEtY29udHJvbHMnOiAwLAorICAgICdhcmlhLWRlc2NyaWJlZGJ5JzogMCwKKyAgICAnYXJp
YS1lcnJvcm1lc3NhZ2UnOiAwLAorICAgICdhcmlhLWZsb3d0byc6IDAsCisgICAgJ2FyaWEtbGFi
ZWxsZWRieSc6IDAsCisgICAgJ2FyaWEtb3ducyc6IDAsCisgICAgJ2FyaWEtcG9zaW5zZXQnOiAw
LAorICAgICdhcmlhLXJvd2NvdW50JzogMCwKKyAgICAnYXJpYS1yb3dpbmRleCc6IDAsCisgICAg
J2FyaWEtcm93c3Bhbic6IDAsCisgICAgJ2FyaWEtc2V0c2l6ZSc6IDAKKyAgfSwKKyAgRE9NQXR0
cmlidXRlTmFtZXM6IHt9LAorICBET01Qcm9wZXJ0eU5hbWVzOiB7fQorfTsKKworbW9kdWxlLmV4
cG9ydHMgPSBBUklBRE9NUHJvcGVydHlDb25maWc7Cit9LHt9XSwyOltmdW5jdGlvbihfZGVyZXFf
LG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJv
b2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29k
ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisg
KiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUu
IEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNl
IHN0cmljdCc7CisKK3ZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSBfZGVyZXFfKDM0KTsKKwor
dmFyIGZvY3VzTm9kZSA9IF9kZXJlcV8oMTQ0KTsKKwordmFyIEF1dG9Gb2N1c1V0aWxzID0gewor
ICBmb2N1c0RPTUNvbXBvbmVudDogZnVuY3Rpb24gKCkgeworICAgIGZvY3VzTm9kZShSZWFjdERP
TUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0aGlzKSk7CisgIH0KK307CisKK21v
ZHVsZS5leHBvcnRzID0gQXV0b0ZvY3VzVXRpbHM7Cit9LHsiMTQ0IjoxNDQsIjM0IjozNH1dLDM6
W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAx
My1wcmVzZW50IEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNl
IGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0
aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRz
IGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4K
KyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgRXZlbnRQcm9wYWdhdG9ycyA9IF9kZXJl
cV8oMjApOwordmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gX2RlcmVxXygxMzYpOwordmFyIEZh
bGxiYWNrQ29tcG9zaXRpb25TdGF0ZSA9IF9kZXJlcV8oMjEpOwordmFyIFN5bnRoZXRpY0NvbXBv
c2l0aW9uRXZlbnQgPSBfZGVyZXFfKDg5KTsKK3ZhciBTeW50aGV0aWNJbnB1dEV2ZW50ID0gX2Rl
cmVxXyg5Myk7CisKK3ZhciBFTkRfS0VZQ09ERVMgPSBbOSwgMTMsIDI3LCAzMl07IC8vIFRhYiwg
UmV0dXJuLCBFc2MsIFNwYWNlCit2YXIgU1RBUlRfS0VZQ09ERSA9IDIyOTsKKwordmFyIGNhblVz
ZUNvbXBvc2l0aW9uRXZlbnQgPSBFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00gJiYgJ0Nv
bXBvc2l0aW9uRXZlbnQnIGluIHdpbmRvdzsKKwordmFyIGRvY3VtZW50TW9kZSA9IG51bGw7Citp
ZiAoRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NICYmICdkb2N1bWVudE1vZGUnIGluIGRv
Y3VtZW50KSB7CisgIGRvY3VtZW50TW9kZSA9IGRvY3VtZW50LmRvY3VtZW50TW9kZTsKK30KKwor
Ly8gV2Via2l0IG9mZmVycyBhIHZlcnkgdXNlZnVsIGB0ZXh0SW5wdXRgIGV2ZW50IHRoYXQgY2Fu
IGJlIHVzZWQgdG8KKy8vIGRpcmVjdGx5IHJlcHJlc2VudCBgYmVmb3JlSW5wdXRgLiBUaGUgSUUg
YHRleHRpbnB1dGAgZXZlbnQgaXMgbm90IGFzCisvLyB1c2VmdWwsIHNvIHdlIGRvbid0IHVzZSBp
dC4KK3ZhciBjYW5Vc2VUZXh0SW5wdXRFdmVudCA9IEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVz
ZURPTSAmJiAnVGV4dEV2ZW50JyBpbiB3aW5kb3cgJiYgIWRvY3VtZW50TW9kZSAmJiAhaXNQcmVz
dG8oKTsKKworLy8gSW4gSUU5Kywgd2UgaGF2ZSBhY2Nlc3MgdG8gY29tcG9zaXRpb24gZXZlbnRz
LCBidXQgdGhlIGRhdGEgc3VwcGxpZWQKKy8vIGJ5IHRoZSBuYXRpdmUgY29tcG9zaXRpb25lbmQg
ZXZlbnQgbWF5IGJlIGluY29ycmVjdC4gSmFwYW5lc2UgaWRlb2dyYXBoaWMKKy8vIHNwYWNlcywg
Zm9yIGluc3RhbmNlIChcdTMwMDApIGFyZSBub3QgcmVjb3JkZWQgY29ycmVjdGx5LgordmFyIHVz
ZUZhbGxiYWNrQ29tcG9zaXRpb25EYXRhID0gRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9N
ICYmICghY2FuVXNlQ29tcG9zaXRpb25FdmVudCB8fCBkb2N1bWVudE1vZGUgJiYgZG9jdW1lbnRN
b2RlID4gOCAmJiBkb2N1bWVudE1vZGUgPD0gMTEpOworCisvKioKKyAqIE9wZXJhIDw9IDEyIGlu
Y2x1ZGVzIFRleHRFdmVudCBpbiB3aW5kb3csIGJ1dCBkb2VzIG5vdCBmaXJlCisgKiB0ZXh0IGlu
cHV0IGV2ZW50cy4gUmVseSBvbiBrZXlwcmVzcyBpbnN0ZWFkLgorICovCitmdW5jdGlvbiBpc1By
ZXN0bygpIHsKKyAgdmFyIG9wZXJhID0gd2luZG93Lm9wZXJhOworICByZXR1cm4gdHlwZW9mIG9w
ZXJhID09PSAnb2JqZWN0JyAmJiB0eXBlb2Ygb3BlcmEudmVyc2lvbiA9PT0gJ2Z1bmN0aW9uJyAm
JiBwYXJzZUludChvcGVyYS52ZXJzaW9uKCksIDEwKSA8PSAxMjsKK30KKwordmFyIFNQQUNFQkFS
X0NPREUgPSAzMjsKK3ZhciBTUEFDRUJBUl9DSEFSID0gU3RyaW5nLmZyb21DaGFyQ29kZShTUEFD
RUJBUl9DT0RFKTsKKworLy8gRXZlbnRzIGFuZCB0aGVpciBjb3JyZXNwb25kaW5nIHByb3BlcnR5
IG5hbWVzLgordmFyIGV2ZW50VHlwZXMgPSB7CisgIGJlZm9yZUlucHV0OiB7CisgICAgcGhhc2Vk
UmVnaXN0cmF0aW9uTmFtZXM6IHsKKyAgICAgIGJ1YmJsZWQ6ICdvbkJlZm9yZUlucHV0JywKKyAg
ICAgIGNhcHR1cmVkOiAnb25CZWZvcmVJbnB1dENhcHR1cmUnCisgICAgfSwKKyAgICBkZXBlbmRl
bmNpZXM6IFsndG9wQ29tcG9zaXRpb25FbmQnLCAndG9wS2V5UHJlc3MnLCAndG9wVGV4dElucHV0
JywgJ3RvcFBhc3RlJ10KKyAgfSwKKyAgY29tcG9zaXRpb25FbmQ6IHsKKyAgICBwaGFzZWRSZWdp
c3RyYXRpb25OYW1lczogeworICAgICAgYnViYmxlZDogJ29uQ29tcG9zaXRpb25FbmQnLAorICAg
ICAgY2FwdHVyZWQ6ICdvbkNvbXBvc2l0aW9uRW5kQ2FwdHVyZScKKyAgICB9LAorICAgIGRlcGVu
ZGVuY2llczogWyd0b3BCbHVyJywgJ3RvcENvbXBvc2l0aW9uRW5kJywgJ3RvcEtleURvd24nLCAn
dG9wS2V5UHJlc3MnLCAndG9wS2V5VXAnLCAndG9wTW91c2VEb3duJ10KKyAgfSwKKyAgY29tcG9z
aXRpb25TdGFydDogeworICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7CisgICAgICBidWJi
bGVkOiAnb25Db21wb3NpdGlvblN0YXJ0JywKKyAgICAgIGNhcHR1cmVkOiAnb25Db21wb3NpdGlv
blN0YXJ0Q2FwdHVyZScKKyAgICB9LAorICAgIGRlcGVuZGVuY2llczogWyd0b3BCbHVyJywgJ3Rv
cENvbXBvc2l0aW9uU3RhcnQnLCAndG9wS2V5RG93bicsICd0b3BLZXlQcmVzcycsICd0b3BLZXlV
cCcsICd0b3BNb3VzZURvd24nXQorICB9LAorICBjb21wb3NpdGlvblVwZGF0ZTogeworICAgIHBo
YXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7CisgICAgICBidWJibGVkOiAnb25Db21wb3NpdGlvblVw
ZGF0ZScsCisgICAgICBjYXB0dXJlZDogJ29uQ29tcG9zaXRpb25VcGRhdGVDYXB0dXJlJworICAg
IH0sCisgICAgZGVwZW5kZW5jaWVzOiBbJ3RvcEJsdXInLCAndG9wQ29tcG9zaXRpb25VcGRhdGUn
LCAndG9wS2V5RG93bicsICd0b3BLZXlQcmVzcycsICd0b3BLZXlVcCcsICd0b3BNb3VzZURvd24n
XQorICB9Cit9OworCisvLyBUcmFjayB3aGV0aGVyIHdlJ3ZlIGV2ZXIgaGFuZGxlZCBhIGtleXBy
ZXNzIG9uIHRoZSBzcGFjZSBrZXkuCit2YXIgaGFzU3BhY2VLZXlwcmVzcyA9IGZhbHNlOworCisv
KioKKyAqIFJldHVybiB3aGV0aGVyIGEgbmF0aXZlIGtleXByZXNzIGV2ZW50IGlzIGFzc3VtZWQg
dG8gYmUgYSBjb21tYW5kLgorICogVGhpcyBpcyByZXF1aXJlZCBiZWNhdXNlIEZpcmVmb3ggZmly
ZXMgYGtleXByZXNzYCBldmVudHMgZm9yIGtleSBjb21tYW5kcworICogKGN1dCwgY29weSwgc2Vs
ZWN0LWFsbCwgZXRjLikgZXZlbiB0aG91Z2ggbm8gY2hhcmFjdGVyIGlzIGluc2VydGVkLgorICov
CitmdW5jdGlvbiBpc0tleXByZXNzQ29tbWFuZChuYXRpdmVFdmVudCkgeworICByZXR1cm4gKG5h
dGl2ZUV2ZW50LmN0cmxLZXkgfHwgbmF0aXZlRXZlbnQuYWx0S2V5IHx8IG5hdGl2ZUV2ZW50Lm1l
dGFLZXkpICYmCisgIC8vIGN0cmxLZXkgJiYgYWx0S2V5IGlzIGVxdWl2YWxlbnQgdG8gQWx0R3Is
IGFuZCBpcyBub3QgYSBjb21tYW5kLgorICAhKG5hdGl2ZUV2ZW50LmN0cmxLZXkgJiYgbmF0aXZl
RXZlbnQuYWx0S2V5KTsKK30KKworLyoqCisgKiBUcmFuc2xhdGUgbmF0aXZlIHRvcCBsZXZlbCBl
dmVudHMgaW50byBldmVudCB0eXBlcy4KKyAqCisgKiBAcGFyYW0ge3N0cmluZ30gdG9wTGV2ZWxU
eXBlCisgKiBAcmV0dXJuIHtvYmplY3R9CisgKi8KK2Z1bmN0aW9uIGdldENvbXBvc2l0aW9uRXZl
bnRUeXBlKHRvcExldmVsVHlwZSkgeworICBzd2l0Y2ggKHRvcExldmVsVHlwZSkgeworICAgIGNh
c2UgJ3RvcENvbXBvc2l0aW9uU3RhcnQnOgorICAgICAgcmV0dXJuIGV2ZW50VHlwZXMuY29tcG9z
aXRpb25TdGFydDsKKyAgICBjYXNlICd0b3BDb21wb3NpdGlvbkVuZCc6CisgICAgICByZXR1cm4g
ZXZlbnRUeXBlcy5jb21wb3NpdGlvbkVuZDsKKyAgICBjYXNlICd0b3BDb21wb3NpdGlvblVwZGF0
ZSc6CisgICAgICByZXR1cm4gZXZlbnRUeXBlcy5jb21wb3NpdGlvblVwZGF0ZTsKKyAgfQorfQor
CisvKioKKyAqIERvZXMgb3VyIGZhbGxiYWNrIGJlc3QtZ3Vlc3MgbW9kZWwgdGhpbmsgdGhpcyBl
dmVudCBzaWduaWZpZXMgdGhhdAorICogY29tcG9zaXRpb24gaGFzIGJlZ3VuPworICoKKyAqIEBw
YXJhbSB7c3RyaW5nfSB0b3BMZXZlbFR5cGUKKyAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVu
dAorICogQHJldHVybiB7Ym9vbGVhbn0KKyAqLworZnVuY3Rpb24gaXNGYWxsYmFja0NvbXBvc2l0
aW9uU3RhcnQodG9wTGV2ZWxUeXBlLCBuYXRpdmVFdmVudCkgeworICByZXR1cm4gdG9wTGV2ZWxU
eXBlID09PSAndG9wS2V5RG93bicgJiYgbmF0aXZlRXZlbnQua2V5Q29kZSA9PT0gU1RBUlRfS0VZ
Q09ERTsKK30KKworLyoqCisgKiBEb2VzIG91ciBmYWxsYmFjayBtb2RlIHRoaW5rIHRoYXQgdGhp
cyBldmVudCBpcyB0aGUgZW5kIG9mIGNvbXBvc2l0aW9uPworICoKKyAqIEBwYXJhbSB7c3RyaW5n
fSB0b3BMZXZlbFR5cGUKKyAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudAorICogQHJldHVy
biB7Ym9vbGVhbn0KKyAqLworZnVuY3Rpb24gaXNGYWxsYmFja0NvbXBvc2l0aW9uRW5kKHRvcExl
dmVsVHlwZSwgbmF0aXZlRXZlbnQpIHsKKyAgc3dpdGNoICh0b3BMZXZlbFR5cGUpIHsKKyAgICBj
YXNlICd0b3BLZXlVcCc6CisgICAgICAvLyBDb21tYW5kIGtleXMgaW5zZXJ0IG9yIGNsZWFyIElN
RSBpbnB1dC4KKyAgICAgIHJldHVybiBFTkRfS0VZQ09ERVMuaW5kZXhPZihuYXRpdmVFdmVudC5r
ZXlDb2RlKSAhPT0gLTE7CisgICAgY2FzZSAndG9wS2V5RG93bic6CisgICAgICAvLyBFeHBlY3Qg
SU1FIGtleUNvZGUgb24gZWFjaCBrZXlkb3duLiBJZiB3ZSBnZXQgYW55IG90aGVyCisgICAgICAv
LyBjb2RlIHdlIG11c3QgaGF2ZSBleGl0ZWQgZWFybGllci4KKyAgICAgIHJldHVybiBuYXRpdmVF
dmVudC5rZXlDb2RlICE9PSBTVEFSVF9LRVlDT0RFOworICAgIGNhc2UgJ3RvcEtleVByZXNzJzoK
KyAgICBjYXNlICd0b3BNb3VzZURvd24nOgorICAgIGNhc2UgJ3RvcEJsdXInOgorICAgICAgLy8g
RXZlbnRzIGFyZSBub3QgcG9zc2libGUgd2l0aG91dCBjYW5jZWxsaW5nIElNRS4KKyAgICAgIHJl
dHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICByZXR1cm4gZmFsc2U7CisgIH0KK30KKwor
LyoqCisgKiBHb29nbGUgSW5wdXQgVG9vbHMgcHJvdmlkZXMgY29tcG9zaXRpb24gZGF0YSB2aWEg
YSBDdXN0b21FdmVudCwKKyAqIHdpdGggdGhlIGBkYXRhYCBwcm9wZXJ0eSBwb3B1bGF0ZWQgaW4g
dGhlIGBkZXRhaWxgIG9iamVjdC4gSWYgdGhpcworICogaXMgYXZhaWxhYmxlIG9uIHRoZSBldmVu
dCBvYmplY3QsIHVzZSBpdC4gSWYgbm90LCB0aGlzIGlzIGEgcGxhaW4KKyAqIGNvbXBvc2l0aW9u
IGV2ZW50IGFuZCB3ZSBoYXZlIG5vdGhpbmcgc3BlY2lhbCB0byBleHRyYWN0LgorICoKKyAqIEBw
YXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudAorICogQHJldHVybiB7P3N0cmluZ30KKyAqLworZnVu
Y3Rpb24gZ2V0RGF0YUZyb21DdXN0b21FdmVudChuYXRpdmVFdmVudCkgeworICB2YXIgZGV0YWls
ID0gbmF0aXZlRXZlbnQuZGV0YWlsOworICBpZiAodHlwZW9mIGRldGFpbCA9PT0gJ29iamVjdCcg
JiYgJ2RhdGEnIGluIGRldGFpbCkgeworICAgIHJldHVybiBkZXRhaWwuZGF0YTsKKyAgfQorICBy
ZXR1cm4gbnVsbDsKK30KKworLy8gVHJhY2sgdGhlIGN1cnJlbnQgSU1FIGNvbXBvc2l0aW9uIGZh
bGxiYWNrIG9iamVjdCwgaWYgYW55LgordmFyIGN1cnJlbnRDb21wb3NpdGlvbiA9IG51bGw7CisK
Ky8qKgorICogQHJldHVybiB7P29iamVjdH0gQSBTeW50aGV0aWNDb21wb3NpdGlvbkV2ZW50Lgor
ICovCitmdW5jdGlvbiBleHRyYWN0Q29tcG9zaXRpb25FdmVudCh0b3BMZXZlbFR5cGUsIHRhcmdl
dEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkgeworICB2YXIgZXZlbnRUeXBl
OworICB2YXIgZmFsbGJhY2tEYXRhOworCisgIGlmIChjYW5Vc2VDb21wb3NpdGlvbkV2ZW50KSB7
CisgICAgZXZlbnRUeXBlID0gZ2V0Q29tcG9zaXRpb25FdmVudFR5cGUodG9wTGV2ZWxUeXBlKTsK
KyAgfSBlbHNlIGlmICghY3VycmVudENvbXBvc2l0aW9uKSB7CisgICAgaWYgKGlzRmFsbGJhY2tD
b21wb3NpdGlvblN0YXJ0KHRvcExldmVsVHlwZSwgbmF0aXZlRXZlbnQpKSB7CisgICAgICBldmVu
dFR5cGUgPSBldmVudFR5cGVzLmNvbXBvc2l0aW9uU3RhcnQ7CisgICAgfQorICB9IGVsc2UgaWYg
KGlzRmFsbGJhY2tDb21wb3NpdGlvbkVuZCh0b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KSkgewor
ICAgIGV2ZW50VHlwZSA9IGV2ZW50VHlwZXMuY29tcG9zaXRpb25FbmQ7CisgIH0KKworICBpZiAo
IWV2ZW50VHlwZSkgeworICAgIHJldHVybiBudWxsOworICB9CisKKyAgaWYgKHVzZUZhbGxiYWNr
Q29tcG9zaXRpb25EYXRhKSB7CisgICAgLy8gVGhlIGN1cnJlbnQgY29tcG9zaXRpb24gaXMgc3Rv
cmVkIHN0YXRpY2FsbHkgYW5kIG11c3Qgbm90IGJlCisgICAgLy8gb3ZlcndyaXR0ZW4gd2hpbGUg
Y29tcG9zaXRpb24gY29udGludWVzLgorICAgIGlmICghY3VycmVudENvbXBvc2l0aW9uICYmIGV2
ZW50VHlwZSA9PT0gZXZlbnRUeXBlcy5jb21wb3NpdGlvblN0YXJ0KSB7CisgICAgICBjdXJyZW50
Q29tcG9zaXRpb24gPSBGYWxsYmFja0NvbXBvc2l0aW9uU3RhdGUuZ2V0UG9vbGVkKG5hdGl2ZUV2
ZW50VGFyZ2V0KTsKKyAgICB9IGVsc2UgaWYgKGV2ZW50VHlwZSA9PT0gZXZlbnRUeXBlcy5jb21w
b3NpdGlvbkVuZCkgeworICAgICAgaWYgKGN1cnJlbnRDb21wb3NpdGlvbikgeworICAgICAgICBm
YWxsYmFja0RhdGEgPSBjdXJyZW50Q29tcG9zaXRpb24uZ2V0RGF0YSgpOworICAgICAgfQorICAg
IH0KKyAgfQorCisgIHZhciBldmVudCA9IFN5bnRoZXRpY0NvbXBvc2l0aW9uRXZlbnQuZ2V0UG9v
bGVkKGV2ZW50VHlwZSwgdGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0
KTsKKworICBpZiAoZmFsbGJhY2tEYXRhKSB7CisgICAgLy8gSW5qZWN0IGRhdGEgZ2VuZXJhdGVk
IGZyb20gZmFsbGJhY2sgcGF0aCBpbnRvIHRoZSBzeW50aGV0aWMgZXZlbnQuCisgICAgLy8gVGhp
cyBtYXRjaGVzIHRoZSBwcm9wZXJ0eSBvZiBuYXRpdmUgQ29tcG9zaXRpb25FdmVudEludGVyZmFj
ZS4KKyAgICBldmVudC5kYXRhID0gZmFsbGJhY2tEYXRhOworICB9IGVsc2UgeworICAgIHZhciBj
dXN0b21EYXRhID0gZ2V0RGF0YUZyb21DdXN0b21FdmVudChuYXRpdmVFdmVudCk7CisgICAgaWYg
KGN1c3RvbURhdGEgIT09IG51bGwpIHsKKyAgICAgIGV2ZW50LmRhdGEgPSBjdXN0b21EYXRhOwor
ICAgIH0KKyAgfQorCisgIEV2ZW50UHJvcGFnYXRvcnMuYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0
Y2hlcyhldmVudCk7CisgIHJldHVybiBldmVudDsKK30KKworLyoqCisgKiBAcGFyYW0ge3N0cmlu
Z30gdG9wTGV2ZWxUeXBlIFJlY29yZCBmcm9tIGBFdmVudENvbnN0YW50c2AuCisgKiBAcGFyYW0g
e29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuCisgKiBAcmV0dXJuIHs/
c3RyaW5nfSBUaGUgc3RyaW5nIGNvcnJlc3BvbmRpbmcgdG8gdGhpcyBgYmVmb3JlSW5wdXRgIGV2
ZW50LgorICovCitmdW5jdGlvbiBnZXROYXRpdmVCZWZvcmVJbnB1dENoYXJzKHRvcExldmVsVHlw
ZSwgbmF0aXZlRXZlbnQpIHsKKyAgc3dpdGNoICh0b3BMZXZlbFR5cGUpIHsKKyAgICBjYXNlICd0
b3BDb21wb3NpdGlvbkVuZCc6CisgICAgICByZXR1cm4gZ2V0RGF0YUZyb21DdXN0b21FdmVudChu
YXRpdmVFdmVudCk7CisgICAgY2FzZSAndG9wS2V5UHJlc3MnOgorICAgICAgLyoqCisgICAgICAg
KiBJZiBuYXRpdmUgYHRleHRJbnB1dGAgZXZlbnRzIGFyZSBhdmFpbGFibGUsIG91ciBnb2FsIGlz
IHRvIG1ha2UKKyAgICAgICAqIHVzZSBvZiB0aGVtLiBIb3dldmVyLCB0aGVyZSBpcyBhIHNwZWNp
YWwgY2FzZTogdGhlIHNwYWNlYmFyIGtleS4KKyAgICAgICAqIEluIFdlYmtpdCwgcHJldmVudGlu
ZyBkZWZhdWx0IG9uIGEgc3BhY2ViYXIgYHRleHRJbnB1dGAgZXZlbnQKKyAgICAgICAqIGNhbmNl
bHMgY2hhcmFjdGVyIGluc2VydGlvbiwgYnV0IGl0ICphbHNvKiBjYXVzZXMgdGhlIGJyb3dzZXIK
KyAgICAgICAqIHRvIGZhbGwgYmFjayB0byBpdHMgZGVmYXVsdCBzcGFjZWJhciBiZWhhdmlvciBv
ZiBzY3JvbGxpbmcgdGhlCisgICAgICAgKiBwYWdlLgorICAgICAgICoKKyAgICAgICAqIFRyYWNr
aW5nIGF0OgorICAgICAgICogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9jaHJvbWl1bS9pc3N1
ZXMvZGV0YWlsP2lkPTM1NTEwMworICAgICAgICoKKyAgICAgICAqIFRvIGF2b2lkIHRoaXMgaXNz
dWUsIHVzZSB0aGUga2V5cHJlc3MgZXZlbnQgYXMgaWYgbm8gYHRleHRJbnB1dGAKKyAgICAgICAq
IGV2ZW50IGlzIGF2YWlsYWJsZS4KKyAgICAgICAqLworICAgICAgdmFyIHdoaWNoID0gbmF0aXZl
RXZlbnQud2hpY2g7CisgICAgICBpZiAod2hpY2ggIT09IFNQQUNFQkFSX0NPREUpIHsKKyAgICAg
ICAgcmV0dXJuIG51bGw7CisgICAgICB9CisKKyAgICAgIGhhc1NwYWNlS2V5cHJlc3MgPSB0cnVl
OworICAgICAgcmV0dXJuIFNQQUNFQkFSX0NIQVI7CisKKyAgICBjYXNlICd0b3BUZXh0SW5wdXQn
OgorICAgICAgLy8gUmVjb3JkIHRoZSBjaGFyYWN0ZXJzIHRvIGJlIGFkZGVkIHRvIHRoZSBET00u
CisgICAgICB2YXIgY2hhcnMgPSBuYXRpdmVFdmVudC5kYXRhOworCisgICAgICAvLyBJZiBpdCdz
IGEgc3BhY2ViYXIgY2hhcmFjdGVyLCBhc3N1bWUgdGhhdCB3ZSBoYXZlIGFscmVhZHkgaGFuZGxl
ZAorICAgICAgLy8gaXQgYXQgdGhlIGtleXByZXNzIGxldmVsIGFuZCBiYWlsIGltbWVkaWF0ZWx5
LiBBbmRyb2lkIENocm9tZQorICAgICAgLy8gZG9lc24ndCBnaXZlIHVzIGtleWNvZGVzLCBzbyB3
ZSBuZWVkIHRvIGJsYWNrbGlzdCBpdC4KKyAgICAgIGlmIChjaGFycyA9PT0gU1BBQ0VCQVJfQ0hB
UiAmJiBoYXNTcGFjZUtleXByZXNzKSB7CisgICAgICAgIHJldHVybiBudWxsOworICAgICAgfQor
CisgICAgICByZXR1cm4gY2hhcnM7CisKKyAgICBkZWZhdWx0OgorICAgICAgLy8gRm9yIG90aGVy
IG5hdGl2ZSBldmVudCB0eXBlcywgZG8gbm90aGluZy4KKyAgICAgIHJldHVybiBudWxsOworICB9
Cit9CisKKy8qKgorICogRm9yIGJyb3dzZXJzIHRoYXQgZG8gbm90IHByb3ZpZGUgdGhlIGB0ZXh0
SW5wdXRgIGV2ZW50LCBleHRyYWN0IHRoZQorICogYXBwcm9wcmlhdGUgc3RyaW5nIHRvIHVzZSBm
b3IgU3ludGhldGljSW5wdXRFdmVudC4KKyAqCisgKiBAcGFyYW0ge3N0cmluZ30gdG9wTGV2ZWxU
eXBlIFJlY29yZCBmcm9tIGBFdmVudENvbnN0YW50c2AuCisgKiBAcGFyYW0ge29iamVjdH0gbmF0
aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuCisgKiBAcmV0dXJuIHs/c3RyaW5nfSBUaGUg
ZmFsbGJhY2sgc3RyaW5nIGZvciB0aGlzIGBiZWZvcmVJbnB1dGAgZXZlbnQuCisgKi8KK2Z1bmN0
aW9uIGdldEZhbGxiYWNrQmVmb3JlSW5wdXRDaGFycyh0b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50
KSB7CisgIC8vIElmIHdlIGFyZSBjdXJyZW50bHkgY29tcG9zaW5nIChJTUUpIGFuZCB1c2luZyBh
IGZhbGxiYWNrIHRvIGRvIHNvLAorICAvLyB0cnkgdG8gZXh0cmFjdCB0aGUgY29tcG9zZWQgY2hh
cmFjdGVycyBmcm9tIHRoZSBmYWxsYmFjayBvYmplY3QuCisgIC8vIElmIGNvbXBvc2l0aW9uIGV2
ZW50IGlzIGF2YWlsYWJsZSwgd2UgZXh0cmFjdCBhIHN0cmluZyBvbmx5IGF0CisgIC8vIGNvbXBv
c2l0aW9uZXZlbnQsIG90aGVyd2lzZSBleHRyYWN0IGl0IGF0IGZhbGxiYWNrIGV2ZW50cy4KKyAg
aWYgKGN1cnJlbnRDb21wb3NpdGlvbikgeworICAgIGlmICh0b3BMZXZlbFR5cGUgPT09ICd0b3BD
b21wb3NpdGlvbkVuZCcgfHwgIWNhblVzZUNvbXBvc2l0aW9uRXZlbnQgJiYgaXNGYWxsYmFja0Nv
bXBvc2l0aW9uRW5kKHRvcExldmVsVHlwZSwgbmF0aXZlRXZlbnQpKSB7CisgICAgICB2YXIgY2hh
cnMgPSBjdXJyZW50Q29tcG9zaXRpb24uZ2V0RGF0YSgpOworICAgICAgRmFsbGJhY2tDb21wb3Np
dGlvblN0YXRlLnJlbGVhc2UoY3VycmVudENvbXBvc2l0aW9uKTsKKyAgICAgIGN1cnJlbnRDb21w
b3NpdGlvbiA9IG51bGw7CisgICAgICByZXR1cm4gY2hhcnM7CisgICAgfQorICAgIHJldHVybiBu
dWxsOworICB9CisKKyAgc3dpdGNoICh0b3BMZXZlbFR5cGUpIHsKKyAgICBjYXNlICd0b3BQYXN0
ZSc6CisgICAgICAvLyBJZiBhIHBhc3RlIGV2ZW50IG9jY3VycyBhZnRlciBhIGtleXByZXNzLCB0
aHJvdyBvdXQgdGhlIGlucHV0CisgICAgICAvLyBjaGFycy4gUGFzdGUgZXZlbnRzIHNob3VsZCBu
b3QgbGVhZCB0byBCZWZvcmVJbnB1dCBldmVudHMuCisgICAgICByZXR1cm4gbnVsbDsKKyAgICBj
YXNlICd0b3BLZXlQcmVzcyc6CisgICAgICAvKioKKyAgICAgICAqIEFzIG9mIHYyNywgRmlyZWZv
eCBtYXkgZmlyZSBrZXlwcmVzcyBldmVudHMgZXZlbiB3aGVuIG5vIGNoYXJhY3RlcgorICAgICAg
ICogd2lsbCBiZSBpbnNlcnRlZC4gQSBmZXcgcG9zc2liaWxpdGllczoKKyAgICAgICAqCisgICAg
ICAgKiAtIGB3aGljaGAgaXMgYDBgLiBBcnJvdyBrZXlzLCBFc2Mga2V5LCBldGMuCisgICAgICAg
KgorICAgICAgICogLSBgd2hpY2hgIGlzIHRoZSBwcmVzc2VkIGtleSBjb2RlLCBidXQgbm8gY2hh
ciBpcyBhdmFpbGFibGUuCisgICAgICAgKiAgIEV4OiAnQWx0R3IgKyBkYCBpbiBQb2xpc2guIFRo
ZXJlIGlzIG5vIG1vZGlmaWVkIGNoYXJhY3RlciBmb3IKKyAgICAgICAqICAgdGhpcyBrZXkgY29t
YmluYXRpb24gYW5kIG5vIGNoYXJhY3RlciBpcyBpbnNlcnRlZCBpbnRvIHRoZQorICAgICAgICog
ICBkb2N1bWVudCwgYnV0IEZGIGZpcmVzIHRoZSBrZXlwcmVzcyBmb3IgY2hhciBjb2RlIGAxMDBg
IGFueXdheS4KKyAgICAgICAqICAgTm8gYGlucHV0YCBldmVudCB3aWxsIG9jY3VyLgorICAgICAg
ICoKKyAgICAgICAqIC0gYHdoaWNoYCBpcyB0aGUgcHJlc3NlZCBrZXkgY29kZSwgYnV0IGEgY29t
bWFuZCBjb21iaW5hdGlvbiBpcworICAgICAgICogICBiZWluZyB1c2VkLiBFeDogYENtZCtDYC4g
Tm8gY2hhcmFjdGVyIGlzIGluc2VydGVkLCBhbmQgbm8KKyAgICAgICAqICAgYGlucHV0YCBldmVu
dCB3aWxsIG9jY3VyLgorICAgICAgICovCisgICAgICBpZiAobmF0aXZlRXZlbnQud2hpY2ggJiYg
IWlzS2V5cHJlc3NDb21tYW5kKG5hdGl2ZUV2ZW50KSkgeworICAgICAgICByZXR1cm4gU3RyaW5n
LmZyb21DaGFyQ29kZShuYXRpdmVFdmVudC53aGljaCk7CisgICAgICB9CisgICAgICByZXR1cm4g
bnVsbDsKKyAgICBjYXNlICd0b3BDb21wb3NpdGlvbkVuZCc6CisgICAgICByZXR1cm4gdXNlRmFs
bGJhY2tDb21wb3NpdGlvbkRhdGEgPyBudWxsIDogbmF0aXZlRXZlbnQuZGF0YTsKKyAgICBkZWZh
dWx0OgorICAgICAgcmV0dXJuIG51bGw7CisgIH0KK30KKworLyoqCisgKiBFeHRyYWN0IGEgU3lu
dGhldGljSW5wdXRFdmVudCBmb3IgYGJlZm9yZUlucHV0YCwgYmFzZWQgb24gZWl0aGVyIG5hdGl2
ZQorICogYHRleHRJbnB1dGAgb3IgZmFsbGJhY2sgYmVoYXZpb3IuCisgKgorICogQHJldHVybiB7
P29iamVjdH0gQSBTeW50aGV0aWNJbnB1dEV2ZW50LgorICovCitmdW5jdGlvbiBleHRyYWN0QmVm
b3JlSW5wdXRFdmVudCh0b3BMZXZlbFR5cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRp
dmVFdmVudFRhcmdldCkgeworICB2YXIgY2hhcnM7CisKKyAgaWYgKGNhblVzZVRleHRJbnB1dEV2
ZW50KSB7CisgICAgY2hhcnMgPSBnZXROYXRpdmVCZWZvcmVJbnB1dENoYXJzKHRvcExldmVsVHlw
ZSwgbmF0aXZlRXZlbnQpOworICB9IGVsc2UgeworICAgIGNoYXJzID0gZ2V0RmFsbGJhY2tCZWZv
cmVJbnB1dENoYXJzKHRvcExldmVsVHlwZSwgbmF0aXZlRXZlbnQpOworICB9CisKKyAgLy8gSWYg
bm8gY2hhcmFjdGVycyBhcmUgYmVpbmcgaW5zZXJ0ZWQsIG5vIEJlZm9yZUlucHV0IGV2ZW50IHNo
b3VsZAorICAvLyBiZSBmaXJlZC4KKyAgaWYgKCFjaGFycykgeworICAgIHJldHVybiBudWxsOwor
ICB9CisKKyAgdmFyIGV2ZW50ID0gU3ludGhldGljSW5wdXRFdmVudC5nZXRQb29sZWQoZXZlbnRU
eXBlcy5iZWZvcmVJbnB1dCwgdGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFy
Z2V0KTsKKworICBldmVudC5kYXRhID0gY2hhcnM7CisgIEV2ZW50UHJvcGFnYXRvcnMuYWNjdW11
bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyhldmVudCk7CisgIHJldHVybiBldmVudDsKK30KKworLyoq
CisgKiBDcmVhdGUgYW4gYG9uQmVmb3JlSW5wdXRgIGV2ZW50IHRvIG1hdGNoCisgKiBodHRwOi8v
d3d3LnczLm9yZy9UUi8yMDEzL1dELURPTS1MZXZlbC0zLUV2ZW50cy0yMDEzMTEwNS8jZXZlbnRz
LWlucHV0ZXZlbnRzLgorICoKKyAqIFRoaXMgZXZlbnQgcGx1Z2luIGlzIGJhc2VkIG9uIHRoZSBu
YXRpdmUgYHRleHRJbnB1dGAgZXZlbnQKKyAqIGF2YWlsYWJsZSBpbiBDaHJvbWUsIFNhZmFyaSwg
T3BlcmEsIGFuZCBJRS4gVGhpcyBldmVudCBmaXJlcyBhZnRlcgorICogYG9uS2V5UHJlc3NgIGFu
ZCBgb25Db21wb3NpdGlvbkVuZGAsIGJ1dCBiZWZvcmUgYG9uSW5wdXRgLgorICoKKyAqIGBiZWZv
cmVJbnB1dGAgaXMgc3BlYydkIGJ1dCBub3QgaW1wbGVtZW50ZWQgaW4gYW55IGJyb3dzZXJzLCBh
bmQKKyAqIHRoZSBgaW5wdXRgIGV2ZW50IGRvZXMgbm90IHByb3ZpZGUgYW55IHVzZWZ1bCBpbmZv
cm1hdGlvbiBhYm91dCB3aGF0IGhhcworICogYWN0dWFsbHkgYmVlbiBhZGRlZCwgY29udHJhcnkg
dG8gdGhlIHNwZWMuIFRodXMsIGB0ZXh0SW5wdXRgIGlzIHRoZSBiZXN0CisgKiBhdmFpbGFibGUg
ZXZlbnQgdG8gaWRlbnRpZnkgdGhlIGNoYXJhY3RlcnMgdGhhdCBoYXZlIGFjdHVhbGx5IGJlZW4g
aW5zZXJ0ZWQKKyAqIGludG8gdGhlIHRhcmdldCBub2RlLgorICoKKyAqIFRoaXMgcGx1Z2luIGlz
IGFsc28gcmVzcG9uc2libGUgZm9yIGVtaXR0aW5nIGBjb21wb3NpdGlvbmAgZXZlbnRzLCB0aHVz
CisgKiBhbGxvd2luZyB1cyB0byBzaGFyZSBjb21wb3NpdGlvbiBmYWxsYmFjayBjb2RlIGZvciBi
b3RoIGBiZWZvcmVJbnB1dGAgYW5kCisgKiBgY29tcG9zaXRpb25gIGV2ZW50IHR5cGVzLgorICov
Cit2YXIgQmVmb3JlSW5wdXRFdmVudFBsdWdpbiA9IHsKKworICBldmVudFR5cGVzOiBldmVudFR5
cGVzLAorCisgIGV4dHJhY3RFdmVudHM6IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUsIHRhcmdldElu
c3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkgeworICAgIHJldHVybiBbZXh0cmFj
dENvbXBvc2l0aW9uRXZlbnQodG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwg
bmF0aXZlRXZlbnRUYXJnZXQpLCBleHRyYWN0QmVmb3JlSW5wdXRFdmVudCh0b3BMZXZlbFR5cGUs
IHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCldOworICB9Cit9Owor
Cittb2R1bGUuZXhwb3J0cyA9IEJlZm9yZUlucHV0RXZlbnRQbHVnaW47Cit9LHsiMTM2IjoxMzYs
IjIwIjoyMCwiMjEiOjIxLCI4OSI6ODksIjkzIjo5M31dLDQ6W2Z1bmN0aW9uKF9kZXJlcV8sbW9k
dWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhl
IFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3Ry
aWN0JzsKKworLyoqCisgKiBDU1MgcHJvcGVydGllcyB3aGljaCBhY2NlcHQgbnVtYmVycyBidXQg
YXJlIG5vdCBpbiB1bml0cyBvZiAicHgiLgorICovCisKK3ZhciBpc1VuaXRsZXNzTnVtYmVyID0g
eworICBhbmltYXRpb25JdGVyYXRpb25Db3VudDogdHJ1ZSwKKyAgYm9yZGVySW1hZ2VPdXRzZXQ6
IHRydWUsCisgIGJvcmRlckltYWdlU2xpY2U6IHRydWUsCisgIGJvcmRlckltYWdlV2lkdGg6IHRy
dWUsCisgIGJveEZsZXg6IHRydWUsCisgIGJveEZsZXhHcm91cDogdHJ1ZSwKKyAgYm94T3JkaW5h
bEdyb3VwOiB0cnVlLAorICBjb2x1bW5Db3VudDogdHJ1ZSwKKyAgZmxleDogdHJ1ZSwKKyAgZmxl
eEdyb3c6IHRydWUsCisgIGZsZXhQb3NpdGl2ZTogdHJ1ZSwKKyAgZmxleFNocmluazogdHJ1ZSwK
KyAgZmxleE5lZ2F0aXZlOiB0cnVlLAorICBmbGV4T3JkZXI6IHRydWUsCisgIGdyaWRSb3c6IHRy
dWUsCisgIGdyaWRDb2x1bW46IHRydWUsCisgIGZvbnRXZWlnaHQ6IHRydWUsCisgIGxpbmVDbGFt
cDogdHJ1ZSwKKyAgbGluZUhlaWdodDogdHJ1ZSwKKyAgb3BhY2l0eTogdHJ1ZSwKKyAgb3JkZXI6
IHRydWUsCisgIG9ycGhhbnM6IHRydWUsCisgIHRhYlNpemU6IHRydWUsCisgIHdpZG93czogdHJ1
ZSwKKyAgekluZGV4OiB0cnVlLAorICB6b29tOiB0cnVlLAorCisgIC8vIFNWRy1yZWxhdGVkIHBy
b3BlcnRpZXMKKyAgZmlsbE9wYWNpdHk6IHRydWUsCisgIGZsb29kT3BhY2l0eTogdHJ1ZSwKKyAg
c3RvcE9wYWNpdHk6IHRydWUsCisgIHN0cm9rZURhc2hhcnJheTogdHJ1ZSwKKyAgc3Ryb2tlRGFz
aG9mZnNldDogdHJ1ZSwKKyAgc3Ryb2tlTWl0ZXJsaW1pdDogdHJ1ZSwKKyAgc3Ryb2tlT3BhY2l0
eTogdHJ1ZSwKKyAgc3Ryb2tlV2lkdGg6IHRydWUKK307CisKKy8qKgorICogQHBhcmFtIHtzdHJp
bmd9IHByZWZpeCB2ZW5kb3Itc3BlY2lmaWMgcHJlZml4LCBlZzogV2Via2l0CisgKiBAcGFyYW0g
e3N0cmluZ30ga2V5IHN0eWxlIG5hbWUsIGVnOiB0cmFuc2l0aW9uRHVyYXRpb24KKyAqIEByZXR1
cm4ge3N0cmluZ30gc3R5bGUgbmFtZSBwcmVmaXhlZCB3aXRoIGBwcmVmaXhgLCBwcm9wZXJseSBj
YW1lbENhc2VkLCBlZzoKKyAqIFdlYmtpdFRyYW5zaXRpb25EdXJhdGlvbgorICovCitmdW5jdGlv
biBwcmVmaXhLZXkocHJlZml4LCBrZXkpIHsKKyAgcmV0dXJuIHByZWZpeCArIGtleS5jaGFyQXQo
MCkudG9VcHBlckNhc2UoKSArIGtleS5zdWJzdHJpbmcoMSk7Cit9CisKKy8qKgorICogU3VwcG9y
dCBzdHlsZSBuYW1lcyB0aGF0IG1heSBjb21lIHBhc3NlZCBpbiBwcmVmaXhlZCBieSBhZGRpbmcg
cGVybXV0YXRpb25zCisgKiBvZiB2ZW5kb3IgcHJlZml4ZXMuCisgKi8KK3ZhciBwcmVmaXhlcyA9
IFsnV2Via2l0JywgJ21zJywgJ01veicsICdPJ107CisKKy8vIFVzaW5nIE9iamVjdC5rZXlzIGhl
cmUsIG9yIGVsc2UgdGhlIHZhbmlsbGEgZm9yLWluIGxvb3AgbWFrZXMgSUU4IGdvIGludG8gYW4K
Ky8vIGluZmluaXRlIGxvb3AsIGJlY2F1c2UgaXQgaXRlcmF0ZXMgb3ZlciB0aGUgbmV3bHkgYWRk
ZWQgcHJvcHMgdG9vLgorT2JqZWN0LmtleXMoaXNVbml0bGVzc051bWJlcikuZm9yRWFjaChmdW5j
dGlvbiAocHJvcCkgeworICBwcmVmaXhlcy5mb3JFYWNoKGZ1bmN0aW9uIChwcmVmaXgpIHsKKyAg
ICBpc1VuaXRsZXNzTnVtYmVyW3ByZWZpeEtleShwcmVmaXgsIHByb3ApXSA9IGlzVW5pdGxlc3NO
dW1iZXJbcHJvcF07CisgIH0pOworfSk7CisKKy8qKgorICogTW9zdCBzdHlsZSBwcm9wZXJ0aWVz
IGNhbiBiZSB1bnNldCBieSBkb2luZyAuc3R5bGVbcHJvcF0gPSAnJyBidXQgSUU4CisgKiBkb2Vz
bid0IGxpa2UgZG9pbmcgdGhhdCB3aXRoIHNob3J0aGFuZCBwcm9wZXJ0aWVzIHNvIGZvciB0aGUg
cHJvcGVydGllcyB0aGF0CisgKiBJRTggYnJlYWtzIG9uLCB3aGljaCBhcmUgbGlzdGVkIGhlcmUs
IHdlIGluc3RlYWQgdW5zZXQgZWFjaCBvZiB0aGUKKyAqIGluZGl2aWR1YWwgcHJvcGVydGllcy4g
U2VlIGh0dHA6Ly9idWdzLmpxdWVyeS5jb20vdGlja2V0LzEyMzg1LgorICogVGhlIDQtdmFsdWUg
J2Nsb2NrJyBwcm9wZXJ0aWVzIGxpa2UgbWFyZ2luLCBwYWRkaW5nLCBib3JkZXItd2lkdGggc2Vl
bSB0bworICogYmVoYXZlIHdpdGhvdXQgYW55IHByb2JsZW1zLiBDdXJpb3VzbHksIGxpc3Qtc3R5
bGUgd29ya3MgdG9vIHdpdGhvdXQgYW55CisgKiBzcGVjaWFsIHByb2RkaW5nLgorICovCit2YXIg
c2hvcnRoYW5kUHJvcGVydHlFeHBhbnNpb25zID0geworICBiYWNrZ3JvdW5kOiB7CisgICAgYmFj
a2dyb3VuZEF0dGFjaG1lbnQ6IHRydWUsCisgICAgYmFja2dyb3VuZENvbG9yOiB0cnVlLAorICAg
IGJhY2tncm91bmRJbWFnZTogdHJ1ZSwKKyAgICBiYWNrZ3JvdW5kUG9zaXRpb25YOiB0cnVlLAor
ICAgIGJhY2tncm91bmRQb3NpdGlvblk6IHRydWUsCisgICAgYmFja2dyb3VuZFJlcGVhdDogdHJ1
ZQorICB9LAorICBiYWNrZ3JvdW5kUG9zaXRpb246IHsKKyAgICBiYWNrZ3JvdW5kUG9zaXRpb25Y
OiB0cnVlLAorICAgIGJhY2tncm91bmRQb3NpdGlvblk6IHRydWUKKyAgfSwKKyAgYm9yZGVyOiB7
CisgICAgYm9yZGVyV2lkdGg6IHRydWUsCisgICAgYm9yZGVyU3R5bGU6IHRydWUsCisgICAgYm9y
ZGVyQ29sb3I6IHRydWUKKyAgfSwKKyAgYm9yZGVyQm90dG9tOiB7CisgICAgYm9yZGVyQm90dG9t
V2lkdGg6IHRydWUsCisgICAgYm9yZGVyQm90dG9tU3R5bGU6IHRydWUsCisgICAgYm9yZGVyQm90
dG9tQ29sb3I6IHRydWUKKyAgfSwKKyAgYm9yZGVyTGVmdDogeworICAgIGJvcmRlckxlZnRXaWR0
aDogdHJ1ZSwKKyAgICBib3JkZXJMZWZ0U3R5bGU6IHRydWUsCisgICAgYm9yZGVyTGVmdENvbG9y
OiB0cnVlCisgIH0sCisgIGJvcmRlclJpZ2h0OiB7CisgICAgYm9yZGVyUmlnaHRXaWR0aDogdHJ1
ZSwKKyAgICBib3JkZXJSaWdodFN0eWxlOiB0cnVlLAorICAgIGJvcmRlclJpZ2h0Q29sb3I6IHRy
dWUKKyAgfSwKKyAgYm9yZGVyVG9wOiB7CisgICAgYm9yZGVyVG9wV2lkdGg6IHRydWUsCisgICAg
Ym9yZGVyVG9wU3R5bGU6IHRydWUsCisgICAgYm9yZGVyVG9wQ29sb3I6IHRydWUKKyAgfSwKKyAg
Zm9udDogeworICAgIGZvbnRTdHlsZTogdHJ1ZSwKKyAgICBmb250VmFyaWFudDogdHJ1ZSwKKyAg
ICBmb250V2VpZ2h0OiB0cnVlLAorICAgIGZvbnRTaXplOiB0cnVlLAorICAgIGxpbmVIZWlnaHQ6
IHRydWUsCisgICAgZm9udEZhbWlseTogdHJ1ZQorICB9LAorICBvdXRsaW5lOiB7CisgICAgb3V0
bGluZVdpZHRoOiB0cnVlLAorICAgIG91dGxpbmVTdHlsZTogdHJ1ZSwKKyAgICBvdXRsaW5lQ29s
b3I6IHRydWUKKyAgfQorfTsKKwordmFyIENTU1Byb3BlcnR5ID0geworICBpc1VuaXRsZXNzTnVt
YmVyOiBpc1VuaXRsZXNzTnVtYmVyLAorICBzaG9ydGhhbmRQcm9wZXJ0eUV4cGFuc2lvbnM6IHNo
b3J0aGFuZFByb3BlcnR5RXhwYW5zaW9ucworfTsKKworbW9kdWxlLmV4cG9ydHMgPSBDU1NQcm9w
ZXJ0eTsKK30se31dLDU6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisg
KiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBC
U0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICog
b2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUg
c2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIENTU1Byb3Bl
cnR5ID0gX2RlcmVxXyg0KTsKK3ZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IF9kZXJlcV8oMTM2
KTsKK3ZhciBSZWFjdEluc3RydW1lbnRhdGlvbiA9IF9kZXJlcV8oNjQpOworCit2YXIgY2FtZWxp
emVTdHlsZU5hbWUgPSBfZGVyZXFfKDEzOCk7Cit2YXIgZGFuZ2Vyb3VzU3R5bGVWYWx1ZSA9IF9k
ZXJlcV8oMTA2KTsKK3ZhciBoeXBoZW5hdGVTdHlsZU5hbWUgPSBfZGVyZXFfKDE0OSk7Cit2YXIg
bWVtb2l6ZVN0cmluZ09ubHkgPSBfZGVyZXFfKDE1Myk7Cit2YXIgd2FybmluZyA9IF9kZXJlcV8o
MTU3KTsKKwordmFyIHByb2Nlc3NTdHlsZU5hbWUgPSBtZW1vaXplU3RyaW5nT25seShmdW5jdGlv
biAoc3R5bGVOYW1lKSB7CisgIHJldHVybiBoeXBoZW5hdGVTdHlsZU5hbWUoc3R5bGVOYW1lKTsK
K30pOworCit2YXIgaGFzU2hvcnRoYW5kUHJvcGVydHlCdWcgPSBmYWxzZTsKK3ZhciBzdHlsZUZs
b2F0QWNjZXNzb3IgPSAnY3NzRmxvYXQnOworaWYgKEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVz
ZURPTSkgeworICB2YXIgdGVtcFN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyku
c3R5bGU7CisgIHRyeSB7CisgICAgLy8gSUU4IHRocm93cyAiSW52YWxpZCBhcmd1bWVudC4iIGlm
IHJlc2V0dGluZyBzaG9ydGhhbmQgc3R5bGUgcHJvcGVydGllcy4KKyAgICB0ZW1wU3R5bGUuZm9u
dCA9ICcnOworICB9IGNhdGNoIChlKSB7CisgICAgaGFzU2hvcnRoYW5kUHJvcGVydHlCdWcgPSB0
cnVlOworICB9CisgIC8vIElFOCBvbmx5IHN1cHBvcnRzIGFjY2Vzc2luZyBjc3NGbG9hdCAoc3Rh
bmRhcmQpIGFzIHN0eWxlRmxvYXQKKyAgaWYgKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHls
ZS5jc3NGbG9hdCA9PT0gdW5kZWZpbmVkKSB7CisgICAgc3R5bGVGbG9hdEFjY2Vzc29yID0gJ3N0
eWxlRmxvYXQnOworICB9Cit9CisKK2lmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicp
IHsKKyAgLy8gJ21zVHJhbnNmb3JtJyBpcyBjb3JyZWN0LCBidXQgdGhlIG90aGVyIHByZWZpeGVz
IHNob3VsZCBiZSBjYXBpdGFsaXplZAorICB2YXIgYmFkVmVuZG9yZWRTdHlsZU5hbWVQYXR0ZXJu
ID0gL14oPzp3ZWJraXR8bW96fG8pW0EtWl0vOworCisgIC8vIHN0eWxlIHZhbHVlcyBzaG91bGRu
J3QgY29udGFpbiBhIHNlbWljb2xvbgorICB2YXIgYmFkU3R5bGVWYWx1ZVdpdGhTZW1pY29sb25Q
YXR0ZXJuID0gLztccyokLzsKKworICB2YXIgd2FybmVkU3R5bGVOYW1lcyA9IHt9OworICB2YXIg
d2FybmVkU3R5bGVWYWx1ZXMgPSB7fTsKKyAgdmFyIHdhcm5lZEZvck5hTlZhbHVlID0gZmFsc2U7
CisKKyAgdmFyIHdhcm5IeXBoZW5hdGVkU3R5bGVOYW1lID0gZnVuY3Rpb24gKG5hbWUsIG93bmVy
KSB7CisgICAgaWYgKHdhcm5lZFN0eWxlTmFtZXMuaGFzT3duUHJvcGVydHkobmFtZSkgJiYgd2Fy
bmVkU3R5bGVOYW1lc1tuYW1lXSkgeworICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHdhcm5l
ZFN0eWxlTmFtZXNbbmFtZV0gPSB0cnVlOworICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0
aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdVbnN1cHBvcnRlZCBzdHlsZSBwcm9wZXJ0eSAlcy4gRGlk
IHlvdSBtZWFuICVzPyVzJywgbmFtZSwgY2FtZWxpemVTdHlsZU5hbWUobmFtZSksIGNoZWNrUmVu
ZGVyTWVzc2FnZShvd25lcikpIDogdm9pZCAwOworICB9OworCisgIHZhciB3YXJuQmFkVmVuZG9y
ZWRTdHlsZU5hbWUgPSBmdW5jdGlvbiAobmFtZSwgb3duZXIpIHsKKyAgICBpZiAod2FybmVkU3R5
bGVOYW1lcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSAmJiB3YXJuZWRTdHlsZU5hbWVzW25hbWVdKSB7
CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgd2FybmVkU3R5bGVOYW1lc1tuYW1lXSA9IHRy
dWU7CisgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwg
J1Vuc3VwcG9ydGVkIHZlbmRvci1wcmVmaXhlZCBzdHlsZSBwcm9wZXJ0eSAlcy4gRGlkIHlvdSBt
ZWFuICVzPyVzJywgbmFtZSwgbmFtZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIG5hbWUuc2xp
Y2UoMSksIGNoZWNrUmVuZGVyTWVzc2FnZShvd25lcikpIDogdm9pZCAwOworICB9OworCisgIHZh
ciB3YXJuU3R5bGVWYWx1ZVdpdGhTZW1pY29sb24gPSBmdW5jdGlvbiAobmFtZSwgdmFsdWUsIG93
bmVyKSB7CisgICAgaWYgKHdhcm5lZFN0eWxlVmFsdWVzLmhhc093blByb3BlcnR5KHZhbHVlKSAm
JiB3YXJuZWRTdHlsZVZhbHVlc1t2YWx1ZV0pIHsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICB3YXJuZWRTdHlsZVZhbHVlc1t2YWx1ZV0gPSB0cnVlOworICAgICJkZXZlbG9wbWVudCIgIT09
ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdTdHlsZSBwcm9wZXJ0eSB2YWx1ZXMgc2hv
dWxkblwndCBjb250YWluIGEgc2VtaWNvbG9uLiVzICcgKyAnVHJ5ICIlczogJXMiIGluc3RlYWQu
JywgY2hlY2tSZW5kZXJNZXNzYWdlKG93bmVyKSwgbmFtZSwgdmFsdWUucmVwbGFjZShiYWRTdHls
ZVZhbHVlV2l0aFNlbWljb2xvblBhdHRlcm4sICcnKSkgOiB2b2lkIDA7CisgIH07CisKKyAgdmFy
IHdhcm5TdHlsZVZhbHVlSXNOYU4gPSBmdW5jdGlvbiAobmFtZSwgdmFsdWUsIG93bmVyKSB7Cisg
ICAgaWYgKHdhcm5lZEZvck5hTlZhbHVlKSB7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAg
d2FybmVkRm9yTmFOVmFsdWUgPSB0cnVlOworICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0
aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdgTmFOYCBpcyBhbiBpbnZhbGlkIHZhbHVlIGZvciB0aGUg
YCVzYCBjc3Mgc3R5bGUgcHJvcGVydHkuJXMnLCBuYW1lLCBjaGVja1JlbmRlck1lc3NhZ2Uob3du
ZXIpKSA6IHZvaWQgMDsKKyAgfTsKKworICB2YXIgY2hlY2tSZW5kZXJNZXNzYWdlID0gZnVuY3Rp
b24gKG93bmVyKSB7CisgICAgaWYgKG93bmVyKSB7CisgICAgICB2YXIgbmFtZSA9IG93bmVyLmdl
dE5hbWUoKTsKKyAgICAgIGlmIChuYW1lKSB7CisgICAgICAgIHJldHVybiAnIENoZWNrIHRoZSBy
ZW5kZXIgbWV0aG9kIG9mIGAnICsgbmFtZSArICdgLic7CisgICAgICB9CisgICAgfQorICAgIHJl
dHVybiAnJzsKKyAgfTsKKworICAvKioKKyAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICog
QHBhcmFtIHsqfSB2YWx1ZQorICAgKiBAcGFyYW0ge1JlYWN0RE9NQ29tcG9uZW50fSBjb21wb25l
bnQKKyAgICovCisgIHZhciB3YXJuVmFsaWRTdHlsZSA9IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSwg
Y29tcG9uZW50KSB7CisgICAgdmFyIG93bmVyOworICAgIGlmIChjb21wb25lbnQpIHsKKyAgICAg
IG93bmVyID0gY29tcG9uZW50Ll9jdXJyZW50RWxlbWVudC5fb3duZXI7CisgICAgfQorICAgIGlm
IChuYW1lLmluZGV4T2YoJy0nKSA+IC0xKSB7CisgICAgICB3YXJuSHlwaGVuYXRlZFN0eWxlTmFt
ZShuYW1lLCBvd25lcik7CisgICAgfSBlbHNlIGlmIChiYWRWZW5kb3JlZFN0eWxlTmFtZVBhdHRl
cm4udGVzdChuYW1lKSkgeworICAgICAgd2FybkJhZFZlbmRvcmVkU3R5bGVOYW1lKG5hbWUsIG93
bmVyKTsKKyAgICB9IGVsc2UgaWYgKGJhZFN0eWxlVmFsdWVXaXRoU2VtaWNvbG9uUGF0dGVybi50
ZXN0KHZhbHVlKSkgeworICAgICAgd2FyblN0eWxlVmFsdWVXaXRoU2VtaWNvbG9uKG5hbWUsIHZh
bHVlLCBvd25lcik7CisgICAgfQorCisgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicg
JiYgaXNOYU4odmFsdWUpKSB7CisgICAgICB3YXJuU3R5bGVWYWx1ZUlzTmFOKG5hbWUsIHZhbHVl
LCBvd25lcik7CisgICAgfQorICB9OworfQorCisvKioKKyAqIE9wZXJhdGlvbnMgZm9yIGRlYWxp
bmcgd2l0aCBDU1MgcHJvcGVydGllcy4KKyAqLwordmFyIENTU1Byb3BlcnR5T3BlcmF0aW9ucyA9
IHsKKworICAvKioKKyAgICogU2VyaWFsaXplcyBhIG1hcHBpbmcgb2Ygc3R5bGUgcHJvcGVydGll
cyBmb3IgdXNlIGFzIGlubGluZSBzdHlsZXM6CisgICAqCisgICAqICAgPiBjcmVhdGVNYXJrdXBG
b3JTdHlsZXMoe3dpZHRoOiAnMjAwcHgnLCBoZWlnaHQ6IDB9KQorICAgKiAgICJ3aWR0aDoyMDBw
eDtoZWlnaHQ6MDsiCisgICAqCisgICAqIFVuZGVmaW5lZCB2YWx1ZXMgYXJlIGlnbm9yZWQgc28g
dGhhdCBkZWNsYXJhdGl2ZSBwcm9ncmFtbWluZyBpcyBlYXNpZXIuCisgICAqIFRoZSByZXN1bHQg
c2hvdWxkIGJlIEhUTUwtZXNjYXBlZCBiZWZvcmUgaW5zZXJ0aW9uIGludG8gdGhlIERPTS4KKyAg
ICoKKyAgICogQHBhcmFtIHtvYmplY3R9IHN0eWxlcworICAgKiBAcGFyYW0ge1JlYWN0RE9NQ29t
cG9uZW50fSBjb21wb25lbnQKKyAgICogQHJldHVybiB7P3N0cmluZ30KKyAgICovCisgIGNyZWF0
ZU1hcmt1cEZvclN0eWxlczogZnVuY3Rpb24gKHN0eWxlcywgY29tcG9uZW50KSB7CisgICAgdmFy
IHNlcmlhbGl6ZWQgPSAnJzsKKyAgICBmb3IgKHZhciBzdHlsZU5hbWUgaW4gc3R5bGVzKSB7Cisg
ICAgICBpZiAoIXN0eWxlcy5oYXNPd25Qcm9wZXJ0eShzdHlsZU5hbWUpKSB7CisgICAgICAgIGNv
bnRpbnVlOworICAgICAgfQorICAgICAgdmFyIHN0eWxlVmFsdWUgPSBzdHlsZXNbc3R5bGVOYW1l
XTsKKyAgICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICAg
d2FyblZhbGlkU3R5bGUoc3R5bGVOYW1lLCBzdHlsZVZhbHVlLCBjb21wb25lbnQpOworICAgICAg
fQorICAgICAgaWYgKHN0eWxlVmFsdWUgIT0gbnVsbCkgeworICAgICAgICBzZXJpYWxpemVkICs9
IHByb2Nlc3NTdHlsZU5hbWUoc3R5bGVOYW1lKSArICc6JzsKKyAgICAgICAgc2VyaWFsaXplZCAr
PSBkYW5nZXJvdXNTdHlsZVZhbHVlKHN0eWxlTmFtZSwgc3R5bGVWYWx1ZSwgY29tcG9uZW50KSAr
ICc7JzsKKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHNlcmlhbGl6ZWQgfHwgbnVsbDsKKyAg
fSwKKworICAvKioKKyAgICogU2V0cyB0aGUgdmFsdWUgZm9yIG11bHRpcGxlIHN0eWxlcyBvbiBh
IG5vZGUuICBJZiBhIHZhbHVlIGlzIHNwZWNpZmllZCBhcworICAgKiAnJyAoZW1wdHkgc3RyaW5n
KSwgdGhlIGNvcnJlc3BvbmRpbmcgc3R5bGUgcHJvcGVydHkgd2lsbCBiZSB1bnNldC4KKyAgICoK
KyAgICogQHBhcmFtIHtET01FbGVtZW50fSBub2RlCisgICAqIEBwYXJhbSB7b2JqZWN0fSBzdHls
ZXMKKyAgICogQHBhcmFtIHtSZWFjdERPTUNvbXBvbmVudH0gY29tcG9uZW50CisgICAqLworICBz
ZXRWYWx1ZUZvclN0eWxlczogZnVuY3Rpb24gKG5vZGUsIHN0eWxlcywgY29tcG9uZW50KSB7Cisg
ICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgUmVhY3RJbnN0
cnVtZW50YXRpb24uZGVidWdUb29sLm9uSG9zdE9wZXJhdGlvbih7CisgICAgICAgIGluc3RhbmNl
SUQ6IGNvbXBvbmVudC5fZGVidWdJRCwKKyAgICAgICAgdHlwZTogJ3VwZGF0ZSBzdHlsZXMnLAor
ICAgICAgICBwYXlsb2FkOiBzdHlsZXMKKyAgICAgIH0pOworICAgIH0KKworICAgIHZhciBzdHls
ZSA9IG5vZGUuc3R5bGU7CisgICAgZm9yICh2YXIgc3R5bGVOYW1lIGluIHN0eWxlcykgeworICAg
ICAgaWYgKCFzdHlsZXMuaGFzT3duUHJvcGVydHkoc3R5bGVOYW1lKSkgeworICAgICAgICBjb250
aW51ZTsKKyAgICAgIH0KKyAgICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicp
IHsKKyAgICAgICAgd2FyblZhbGlkU3R5bGUoc3R5bGVOYW1lLCBzdHlsZXNbc3R5bGVOYW1lXSwg
Y29tcG9uZW50KTsKKyAgICAgIH0KKyAgICAgIHZhciBzdHlsZVZhbHVlID0gZGFuZ2Vyb3VzU3R5
bGVWYWx1ZShzdHlsZU5hbWUsIHN0eWxlc1tzdHlsZU5hbWVdLCBjb21wb25lbnQpOworICAgICAg
aWYgKHN0eWxlTmFtZSA9PT0gJ2Zsb2F0JyB8fCBzdHlsZU5hbWUgPT09ICdjc3NGbG9hdCcpIHsK
KyAgICAgICAgc3R5bGVOYW1lID0gc3R5bGVGbG9hdEFjY2Vzc29yOworICAgICAgfQorICAgICAg
aWYgKHN0eWxlVmFsdWUpIHsKKyAgICAgICAgc3R5bGVbc3R5bGVOYW1lXSA9IHN0eWxlVmFsdWU7
CisgICAgICB9IGVsc2UgeworICAgICAgICB2YXIgZXhwYW5zaW9uID0gaGFzU2hvcnRoYW5kUHJv
cGVydHlCdWcgJiYgQ1NTUHJvcGVydHkuc2hvcnRoYW5kUHJvcGVydHlFeHBhbnNpb25zW3N0eWxl
TmFtZV07CisgICAgICAgIGlmIChleHBhbnNpb24pIHsKKyAgICAgICAgICAvLyBTaG9ydGhhbmQg
cHJvcGVydHkgdGhhdCBJRTggd29uJ3QgbGlrZSB1bnNldHRpbmcsIHNvIHVuc2V0IGVhY2gKKyAg
ICAgICAgICAvLyBjb21wb25lbnQgdG8gcGxhY2F0ZSBpdAorICAgICAgICAgIGZvciAodmFyIGlu
ZGl2aWR1YWxTdHlsZU5hbWUgaW4gZXhwYW5zaW9uKSB7CisgICAgICAgICAgICBzdHlsZVtpbmRp
dmlkdWFsU3R5bGVOYW1lXSA9ICcnOworICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICBzdHlsZVtzdHlsZU5hbWVdID0gJyc7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9
CisgIH0KKworfTsKKworbW9kdWxlLmV4cG9ydHMgPSBDU1NQcm9wZXJ0eU9wZXJhdGlvbnM7Cit9
LHsiMTA2IjoxMDYsIjEzNiI6MTM2LCIxMzgiOjEzOCwiMTQ5IjoxNDksIjE1MyI6MTUzLCIxNTci
OjE1NywiNCI6NCwiNjQiOjY0fV0sNjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7
CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5k
ZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdy
YW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxl
IGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiAKKyAqLworCisndXNlIHN0cmljdCc7CisK
K3ZhciBfcHJvZEludmFyaWFudCA9IF9kZXJlcV8oMTI1KTsKKworZnVuY3Rpb24gX2NsYXNzQ2Fs
bENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9m
IENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNz
IGFzIGEgZnVuY3Rpb24iKTsgfSB9CisKK3ZhciBQb29sZWRDbGFzcyA9IF9kZXJlcV8oMjUpOwor
Cit2YXIgaW52YXJpYW50ID0gX2RlcmVxXygxNTApOworCisvKioKKyAqIEEgc3BlY2lhbGl6ZWQg
cHNldWRvLWV2ZW50IG1vZHVsZSB0byBoZWxwIGtlZXAgdHJhY2sgb2YgY29tcG9uZW50cyB3YWl0
aW5nIHRvCisgKiBiZSBub3RpZmllZCB3aGVuIHRoZWlyIERPTSByZXByZXNlbnRhdGlvbnMgYXJl
IGF2YWlsYWJsZSBmb3IgdXNlLgorICoKKyAqIFRoaXMgaW1wbGVtZW50cyBgUG9vbGVkQ2xhc3Ng
LCBzbyB5b3Ugc2hvdWxkIG5ldmVyIG5lZWQgdG8gaW5zdGFudGlhdGUgdGhpcy4KKyAqIEluc3Rl
YWQsIHVzZSBgQ2FsbGJhY2tRdWV1ZS5nZXRQb29sZWQoKWAuCisgKgorICogQGNsYXNzIFJlYWN0
TW91bnRSZWFkeQorICogQGltcGxlbWVudHMgUG9vbGVkQ2xhc3MKKyAqIEBpbnRlcm5hbAorICov
CisKK3ZhciBDYWxsYmFja1F1ZXVlID0gZnVuY3Rpb24gKCkgeworICBmdW5jdGlvbiBDYWxsYmFj
a1F1ZXVlKGFyZykgeworICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDYWxsYmFja1F1ZXVlKTsK
KworICAgIHRoaXMuX2NhbGxiYWNrcyA9IG51bGw7CisgICAgdGhpcy5fY29udGV4dHMgPSBudWxs
OworICAgIHRoaXMuX2FyZyA9IGFyZzsKKyAgfQorCisgIC8qKgorICAgKiBFbnF1ZXVlcyBhIGNh
bGxiYWNrIHRvIGJlIGludm9rZWQgd2hlbiBgbm90aWZ5QWxsYCBpcyBpbnZva2VkLgorICAgKgor
ICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayBJbnZva2VkIHdoZW4gYG5vdGlmeUFsbGAg
aXMgaW52b2tlZC4KKyAgICogQHBhcmFtIHs/b2JqZWN0fSBjb250ZXh0IENvbnRleHQgdG8gY2Fs
bCBgY2FsbGJhY2tgIHdpdGguCisgICAqIEBpbnRlcm5hbAorICAgKi8KKworCisgIENhbGxiYWNr
UXVldWUucHJvdG90eXBlLmVucXVldWUgPSBmdW5jdGlvbiBlbnF1ZXVlKGNhbGxiYWNrLCBjb250
ZXh0KSB7CisgICAgdGhpcy5fY2FsbGJhY2tzID0gdGhpcy5fY2FsbGJhY2tzIHx8IFtdOworICAg
IHRoaXMuX2NhbGxiYWNrcy5wdXNoKGNhbGxiYWNrKTsKKyAgICB0aGlzLl9jb250ZXh0cyA9IHRo
aXMuX2NvbnRleHRzIHx8IFtdOworICAgIHRoaXMuX2NvbnRleHRzLnB1c2goY29udGV4dCk7Cisg
IH07CisKKyAgLyoqCisgICAqIEludm9rZXMgYWxsIGVucXVldWVkIGNhbGxiYWNrcyBhbmQgY2xl
YXJzIHRoZSBxdWV1ZS4gVGhpcyBpcyBpbnZva2VkIGFmdGVyCisgICAqIHRoZSBET00gcmVwcmVz
ZW50YXRpb24gb2YgYSBjb21wb25lbnQgaGFzIGJlZW4gY3JlYXRlZCBvciB1cGRhdGVkLgorICAg
KgorICAgKiBAaW50ZXJuYWwKKyAgICovCisKKworICBDYWxsYmFja1F1ZXVlLnByb3RvdHlwZS5u
b3RpZnlBbGwgPSBmdW5jdGlvbiBub3RpZnlBbGwoKSB7CisgICAgdmFyIGNhbGxiYWNrcyA9IHRo
aXMuX2NhbGxiYWNrczsKKyAgICB2YXIgY29udGV4dHMgPSB0aGlzLl9jb250ZXh0czsKKyAgICB2
YXIgYXJnID0gdGhpcy5fYXJnOworICAgIGlmIChjYWxsYmFja3MgJiYgY29udGV4dHMpIHsKKyAg
ICAgICEoY2FsbGJhY2tzLmxlbmd0aCA9PT0gY29udGV4dHMubGVuZ3RoKSA/ICJkZXZlbG9wbWVu
dCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ01pc21hdGNoZWQgbGlzdCBv
ZiBjb250ZXh0cyBpbiBjYWxsYmFjayBxdWV1ZScpIDogX3Byb2RJbnZhcmlhbnQoJzI0JykgOiB2
b2lkIDA7CisgICAgICB0aGlzLl9jYWxsYmFja3MgPSBudWxsOworICAgICAgdGhpcy5fY29udGV4
dHMgPSBudWxsOworICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYWxsYmFja3MubGVuZ3RoOyBp
KyspIHsKKyAgICAgICAgY2FsbGJhY2tzW2ldLmNhbGwoY29udGV4dHNbaV0sIGFyZyk7CisgICAg
ICB9CisgICAgICBjYWxsYmFja3MubGVuZ3RoID0gMDsKKyAgICAgIGNvbnRleHRzLmxlbmd0aCA9
IDA7CisgICAgfQorICB9OworCisgIENhbGxiYWNrUXVldWUucHJvdG90eXBlLmNoZWNrcG9pbnQg
PSBmdW5jdGlvbiBjaGVja3BvaW50KCkgeworICAgIHJldHVybiB0aGlzLl9jYWxsYmFja3MgPyB0
aGlzLl9jYWxsYmFja3MubGVuZ3RoIDogMDsKKyAgfTsKKworICBDYWxsYmFja1F1ZXVlLnByb3Rv
dHlwZS5yb2xsYmFjayA9IGZ1bmN0aW9uIHJvbGxiYWNrKGxlbikgeworICAgIGlmICh0aGlzLl9j
YWxsYmFja3MgJiYgdGhpcy5fY29udGV4dHMpIHsKKyAgICAgIHRoaXMuX2NhbGxiYWNrcy5sZW5n
dGggPSBsZW47CisgICAgICB0aGlzLl9jb250ZXh0cy5sZW5ndGggPSBsZW47CisgICAgfQorICB9
OworCisgIC8qKgorICAgKiBSZXNldHMgdGhlIGludGVybmFsIHF1ZXVlLgorICAgKgorICAgKiBA
aW50ZXJuYWwKKyAgICovCisKKworICBDYWxsYmFja1F1ZXVlLnByb3RvdHlwZS5yZXNldCA9IGZ1
bmN0aW9uIHJlc2V0KCkgeworICAgIHRoaXMuX2NhbGxiYWNrcyA9IG51bGw7CisgICAgdGhpcy5f
Y29udGV4dHMgPSBudWxsOworICB9OworCisgIC8qKgorICAgKiBgUG9vbGVkQ2xhc3NgIGxvb2tz
IGZvciB0aGlzLgorICAgKi8KKworCisgIENhbGxiYWNrUXVldWUucHJvdG90eXBlLmRlc3RydWN0
b3IgPSBmdW5jdGlvbiBkZXN0cnVjdG9yKCkgeworICAgIHRoaXMucmVzZXQoKTsKKyAgfTsKKwor
ICByZXR1cm4gQ2FsbGJhY2tRdWV1ZTsKK30oKTsKKworbW9kdWxlLmV4cG9ydHMgPSBQb29sZWRD
bGFzcy5hZGRQb29saW5nVG8oQ2FsbGJhY2tRdWV1ZSk7Cit9LHsiMTI1IjoxMjUsIjE1MCI6MTUw
LCIyNSI6MjV9XSw3OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICog
Q29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
ZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9m
IHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNh
bWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBFdmVudFBsdWdp
bkh1YiA9IF9kZXJlcV8oMTcpOwordmFyIEV2ZW50UHJvcGFnYXRvcnMgPSBfZGVyZXFfKDIwKTsK
K3ZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IF9kZXJlcV8oMTM2KTsKK3ZhciBSZWFjdERPTUNv
bXBvbmVudFRyZWUgPSBfZGVyZXFfKDM0KTsKK3ZhciBSZWFjdFVwZGF0ZXMgPSBfZGVyZXFfKDgy
KTsKK3ZhciBTeW50aGV0aWNFdmVudCA9IF9kZXJlcV8oOTEpOworCit2YXIgZ2V0RXZlbnRUYXJn
ZXQgPSBfZGVyZXFfKDExNCk7Cit2YXIgaXNFdmVudFN1cHBvcnRlZCA9IF9kZXJlcV8oMTIyKTsK
K3ZhciBpc1RleHRJbnB1dEVsZW1lbnQgPSBfZGVyZXFfKDEyMyk7CisKK3ZhciBldmVudFR5cGVz
ID0geworICBjaGFuZ2U6IHsKKyAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczogeworICAgICAg
YnViYmxlZDogJ29uQ2hhbmdlJywKKyAgICAgIGNhcHR1cmVkOiAnb25DaGFuZ2VDYXB0dXJlJwor
ICAgIH0sCisgICAgZGVwZW5kZW5jaWVzOiBbJ3RvcEJsdXInLCAndG9wQ2hhbmdlJywgJ3RvcENs
aWNrJywgJ3RvcEZvY3VzJywgJ3RvcElucHV0JywgJ3RvcEtleURvd24nLCAndG9wS2V5VXAnLCAn
dG9wU2VsZWN0aW9uQ2hhbmdlJ10KKyAgfQorfTsKKworLyoqCisgKiBGb3IgSUUgc2hpbXMKKyAq
LwordmFyIGFjdGl2ZUVsZW1lbnQgPSBudWxsOwordmFyIGFjdGl2ZUVsZW1lbnRJbnN0ID0gbnVs
bDsKK3ZhciBhY3RpdmVFbGVtZW50VmFsdWUgPSBudWxsOwordmFyIGFjdGl2ZUVsZW1lbnRWYWx1
ZVByb3AgPSBudWxsOworCisvKioKKyAqIFNFQ1RJT046IGhhbmRsZSBgY2hhbmdlYCBldmVudAor
ICovCitmdW5jdGlvbiBzaG91bGRVc2VDaGFuZ2VFdmVudChlbGVtKSB7CisgIHZhciBub2RlTmFt
ZSA9IGVsZW0ubm9kZU5hbWUgJiYgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOworICByZXR1
cm4gbm9kZU5hbWUgPT09ICdzZWxlY3QnIHx8IG5vZGVOYW1lID09PSAnaW5wdXQnICYmIGVsZW0u
dHlwZSA9PT0gJ2ZpbGUnOworfQorCit2YXIgZG9lc0NoYW5nZUV2ZW50QnViYmxlID0gZmFsc2U7
CitpZiAoRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NKSB7CisgIC8vIFNlZSBgaGFuZGxl
Q2hhbmdlYCBjb21tZW50IGJlbG93CisgIGRvZXNDaGFuZ2VFdmVudEJ1YmJsZSA9IGlzRXZlbnRT
dXBwb3J0ZWQoJ2NoYW5nZScpICYmICghZG9jdW1lbnQuZG9jdW1lbnRNb2RlIHx8IGRvY3VtZW50
LmRvY3VtZW50TW9kZSA+IDgpOworfQorCitmdW5jdGlvbiBtYW51YWxEaXNwYXRjaENoYW5nZUV2
ZW50KG5hdGl2ZUV2ZW50KSB7CisgIHZhciBldmVudCA9IFN5bnRoZXRpY0V2ZW50LmdldFBvb2xl
ZChldmVudFR5cGVzLmNoYW5nZSwgYWN0aXZlRWxlbWVudEluc3QsIG5hdGl2ZUV2ZW50LCBnZXRF
dmVudFRhcmdldChuYXRpdmVFdmVudCkpOworICBFdmVudFByb3BhZ2F0b3JzLmFjY3VtdWxhdGVU
d29QaGFzZURpc3BhdGNoZXMoZXZlbnQpOworCisgIC8vIElmIGNoYW5nZSBhbmQgcHJvcGVydHlj
aGFuZ2UgYnViYmxlZCwgd2UnZCBqdXN0IGJpbmQgdG8gaXQgbGlrZSBhbGwgdGhlCisgIC8vIG90
aGVyIGV2ZW50cyBhbmQgaGF2ZSBpdCBnbyB0aHJvdWdoIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRl
ci4gU2luY2UgaXQKKyAgLy8gZG9lc24ndCwgd2UgbWFudWFsbHkgbGlzdGVuIGZvciB0aGUgZXZl
bnRzIGFuZCBzbyB3ZSBoYXZlIHRvIGVucXVldWUgYW5kCisgIC8vIHByb2Nlc3MgdGhlIGFic3Ry
YWN0IGV2ZW50IG1hbnVhbGx5LgorICAvLworICAvLyBCYXRjaGluZyBpcyBuZWNlc3NhcnkgaGVy
ZSBpbiBvcmRlciB0byBlbnN1cmUgdGhhdCBhbGwgZXZlbnQgaGFuZGxlcnMgcnVuCisgIC8vIGJl
Zm9yZSB0aGUgbmV4dCByZXJlbmRlciAoaW5jbHVkaW5nIGV2ZW50IGhhbmRsZXJzIGF0dGFjaGVk
IHRvIGFuY2VzdG9yCisgIC8vIGVsZW1lbnRzIGluc3RlYWQgb2YgZGlyZWN0bHkgb24gdGhlIGlu
cHV0KS4gV2l0aG91dCB0aGlzLCBjb250cm9sbGVkCisgIC8vIGNvbXBvbmVudHMgZG9uJ3Qgd29y
ayBwcm9wZXJseSBpbiBjb25qdW5jdGlvbiB3aXRoIGV2ZW50IGJ1YmJsaW5nIGJlY2F1c2UKKyAg
Ly8gdGhlIGNvbXBvbmVudCBpcyByZXJlbmRlcmVkIGFuZCB0aGUgdmFsdWUgcmV2ZXJ0ZWQgYmVm
b3JlIGFsbCB0aGUgZXZlbnQKKyAgLy8gaGFuZGxlcnMgY2FuIHJ1bi4gU2VlIGh0dHBzOi8vZ2l0
aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvNzA4LgorICBSZWFjdFVwZGF0ZXMuYmF0Y2hl
ZFVwZGF0ZXMocnVuRXZlbnRJbkJhdGNoLCBldmVudCk7Cit9CisKK2Z1bmN0aW9uIHJ1bkV2ZW50
SW5CYXRjaChldmVudCkgeworICBFdmVudFBsdWdpbkh1Yi5lbnF1ZXVlRXZlbnRzKGV2ZW50KTsK
KyAgRXZlbnRQbHVnaW5IdWIucHJvY2Vzc0V2ZW50UXVldWUoZmFsc2UpOworfQorCitmdW5jdGlv
biBzdGFydFdhdGNoaW5nRm9yQ2hhbmdlRXZlbnRJRTgodGFyZ2V0LCB0YXJnZXRJbnN0KSB7Cisg
IGFjdGl2ZUVsZW1lbnQgPSB0YXJnZXQ7CisgIGFjdGl2ZUVsZW1lbnRJbnN0ID0gdGFyZ2V0SW5z
dDsKKyAgYWN0aXZlRWxlbWVudC5hdHRhY2hFdmVudCgnb25jaGFuZ2UnLCBtYW51YWxEaXNwYXRj
aENoYW5nZUV2ZW50KTsKK30KKworZnVuY3Rpb24gc3RvcFdhdGNoaW5nRm9yQ2hhbmdlRXZlbnRJ
RTgoKSB7CisgIGlmICghYWN0aXZlRWxlbWVudCkgeworICAgIHJldHVybjsKKyAgfQorICBhY3Rp
dmVFbGVtZW50LmRldGFjaEV2ZW50KCdvbmNoYW5nZScsIG1hbnVhbERpc3BhdGNoQ2hhbmdlRXZl
bnQpOworICBhY3RpdmVFbGVtZW50ID0gbnVsbDsKKyAgYWN0aXZlRWxlbWVudEluc3QgPSBudWxs
OworfQorCitmdW5jdGlvbiBnZXRUYXJnZXRJbnN0Rm9yQ2hhbmdlRXZlbnQodG9wTGV2ZWxUeXBl
LCB0YXJnZXRJbnN0KSB7CisgIGlmICh0b3BMZXZlbFR5cGUgPT09ICd0b3BDaGFuZ2UnKSB7Cisg
ICAgcmV0dXJuIHRhcmdldEluc3Q7CisgIH0KK30KK2Z1bmN0aW9uIGhhbmRsZUV2ZW50c0ZvckNo
YW5nZUV2ZW50SUU4KHRvcExldmVsVHlwZSwgdGFyZ2V0LCB0YXJnZXRJbnN0KSB7CisgIGlmICh0
b3BMZXZlbFR5cGUgPT09ICd0b3BGb2N1cycpIHsKKyAgICAvLyBzdG9wV2F0Y2hpbmcoKSBzaG91
bGQgYmUgYSBub29wIGhlcmUgYnV0IHdlIGNhbGwgaXQganVzdCBpbiBjYXNlIHdlCisgICAgLy8g
bWlzc2VkIGEgYmx1ciBldmVudCBzb21laG93LgorICAgIHN0b3BXYXRjaGluZ0ZvckNoYW5nZUV2
ZW50SUU4KCk7CisgICAgc3RhcnRXYXRjaGluZ0ZvckNoYW5nZUV2ZW50SUU4KHRhcmdldCwgdGFy
Z2V0SW5zdCk7CisgIH0gZWxzZSBpZiAodG9wTGV2ZWxUeXBlID09PSAndG9wQmx1cicpIHsKKyAg
ICBzdG9wV2F0Y2hpbmdGb3JDaGFuZ2VFdmVudElFOCgpOworICB9Cit9CisKKy8qKgorICogU0VD
VElPTjogaGFuZGxlIGBpbnB1dGAgZXZlbnQKKyAqLwordmFyIGlzSW5wdXRFdmVudFN1cHBvcnRl
ZCA9IGZhbHNlOworaWYgKEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSkgeworICAvLyBJ
RTkgY2xhaW1zIHRvIHN1cHBvcnQgdGhlIGlucHV0IGV2ZW50IGJ1dCBmYWlscyB0byB0cmlnZ2Vy
IGl0IHdoZW4KKyAgLy8gZGVsZXRpbmcgdGV4dCwgc28gd2UgaWdub3JlIGl0cyBpbnB1dCBldmVu
dHMuCisgIC8vIElFMTArIGZpcmUgaW5wdXQgZXZlbnRzIHRvIG9mdGVuLCBzdWNoIHdoZW4gYSBw
bGFjZWhvbGRlcgorICAvLyBjaGFuZ2VzIG9yIHdoZW4gYW4gaW5wdXQgd2l0aCBhIHBsYWNlaG9s
ZGVyIGlzIGZvY3VzZWQuCisgIGlzSW5wdXRFdmVudFN1cHBvcnRlZCA9IGlzRXZlbnRTdXBwb3J0
ZWQoJ2lucHV0JykgJiYgKCFkb2N1bWVudC5kb2N1bWVudE1vZGUgfHwgZG9jdW1lbnQuZG9jdW1l
bnRNb2RlID4gMTEpOworfQorCisvKioKKyAqIChGb3IgSUUgPD0xMSkgUmVwbGFjZW1lbnQgZ2V0
dGVyL3NldHRlciBmb3IgdGhlIGB2YWx1ZWAgcHJvcGVydHkgdGhhdCBnZXRzCisgKiBzZXQgb24g
dGhlIGFjdGl2ZSBlbGVtZW50LgorICovCit2YXIgbmV3VmFsdWVQcm9wID0geworICBnZXQ6IGZ1
bmN0aW9uICgpIHsKKyAgICByZXR1cm4gYWN0aXZlRWxlbWVudFZhbHVlUHJvcC5nZXQuY2FsbCh0
aGlzKTsKKyAgfSwKKyAgc2V0OiBmdW5jdGlvbiAodmFsKSB7CisgICAgLy8gQ2FzdCB0byBhIHN0
cmluZyBzbyB3ZSBjYW4gZG8gZXF1YWxpdHkgY2hlY2tzLgorICAgIGFjdGl2ZUVsZW1lbnRWYWx1
ZSA9ICcnICsgdmFsOworICAgIGFjdGl2ZUVsZW1lbnRWYWx1ZVByb3Auc2V0LmNhbGwodGhpcywg
dmFsKTsKKyAgfQorfTsKKworLyoqCisgKiAoRm9yIElFIDw9MTEpIFN0YXJ0cyB0cmFja2luZyBw
cm9wZXJ0eWNoYW5nZSBldmVudHMgb24gdGhlIHBhc3NlZC1pbiBlbGVtZW50CisgKiBhbmQgb3Zl
cnJpZGUgdGhlIHZhbHVlIHByb3BlcnR5IHNvIHRoYXQgd2UgY2FuIGRpc3Rpbmd1aXNoIHVzZXIg
ZXZlbnRzIGZyb20KKyAqIHZhbHVlIGNoYW5nZXMgaW4gSlMuCisgKi8KK2Z1bmN0aW9uIHN0YXJ0
V2F0Y2hpbmdGb3JWYWx1ZUNoYW5nZSh0YXJnZXQsIHRhcmdldEluc3QpIHsKKyAgYWN0aXZlRWxl
bWVudCA9IHRhcmdldDsKKyAgYWN0aXZlRWxlbWVudEluc3QgPSB0YXJnZXRJbnN0OworICBhY3Rp
dmVFbGVtZW50VmFsdWUgPSB0YXJnZXQudmFsdWU7CisgIGFjdGl2ZUVsZW1lbnRWYWx1ZVByb3Ag
PSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldC5jb25zdHJ1Y3Rvci5wcm90
b3R5cGUsICd2YWx1ZScpOworCisgIC8vIE5vdCBndWFyZGVkIGluIGEgY2FuRGVmaW5lUHJvcGVy
dHkgY2hlY2s6IElFOCBzdXBwb3J0cyBkZWZpbmVQcm9wZXJ0eSBvbmx5CisgIC8vIG9uIERPTSBl
bGVtZW50cworICBPYmplY3QuZGVmaW5lUHJvcGVydHkoYWN0aXZlRWxlbWVudCwgJ3ZhbHVlJywg
bmV3VmFsdWVQcm9wKTsKKyAgaWYgKGFjdGl2ZUVsZW1lbnQuYXR0YWNoRXZlbnQpIHsKKyAgICBh
Y3RpdmVFbGVtZW50LmF0dGFjaEV2ZW50KCdvbnByb3BlcnR5Y2hhbmdlJywgaGFuZGxlUHJvcGVy
dHlDaGFuZ2UpOworICB9IGVsc2UgeworICAgIGFjdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5l
cigncHJvcGVydHljaGFuZ2UnLCBoYW5kbGVQcm9wZXJ0eUNoYW5nZSwgZmFsc2UpOworICB9Cit9
CisKKy8qKgorICogKEZvciBJRSA8PTExKSBSZW1vdmVzIHRoZSBldmVudCBsaXN0ZW5lcnMgZnJv
bSB0aGUgY3VycmVudGx5LXRyYWNrZWQgZWxlbWVudCwKKyAqIGlmIGFueSBleGlzdHMuCisgKi8K
K2Z1bmN0aW9uIHN0b3BXYXRjaGluZ0ZvclZhbHVlQ2hhbmdlKCkgeworICBpZiAoIWFjdGl2ZUVs
ZW1lbnQpIHsKKyAgICByZXR1cm47CisgIH0KKworICAvLyBkZWxldGUgcmVzdG9yZXMgdGhlIG9y
aWdpbmFsIHByb3BlcnR5IGRlZmluaXRpb24KKyAgZGVsZXRlIGFjdGl2ZUVsZW1lbnQudmFsdWU7
CisKKyAgaWYgKGFjdGl2ZUVsZW1lbnQuZGV0YWNoRXZlbnQpIHsKKyAgICBhY3RpdmVFbGVtZW50
LmRldGFjaEV2ZW50KCdvbnByb3BlcnR5Y2hhbmdlJywgaGFuZGxlUHJvcGVydHlDaGFuZ2UpOwor
ICB9IGVsc2UgeworICAgIGFjdGl2ZUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigncHJvcGVy
dHljaGFuZ2UnLCBoYW5kbGVQcm9wZXJ0eUNoYW5nZSwgZmFsc2UpOworICB9CisKKyAgYWN0aXZl
RWxlbWVudCA9IG51bGw7CisgIGFjdGl2ZUVsZW1lbnRJbnN0ID0gbnVsbDsKKyAgYWN0aXZlRWxl
bWVudFZhbHVlID0gbnVsbDsKKyAgYWN0aXZlRWxlbWVudFZhbHVlUHJvcCA9IG51bGw7Cit9CisK
Ky8qKgorICogKEZvciBJRSA8PTExKSBIYW5kbGVzIGEgcHJvcGVydHljaGFuZ2UgZXZlbnQsIHNl
bmRpbmcgYSBgY2hhbmdlYCBldmVudCBpZgorICogdGhlIHZhbHVlIG9mIHRoZSBhY3RpdmUgZWxl
bWVudCBoYXMgY2hhbmdlZC4KKyAqLworZnVuY3Rpb24gaGFuZGxlUHJvcGVydHlDaGFuZ2UobmF0
aXZlRXZlbnQpIHsKKyAgaWYgKG5hdGl2ZUV2ZW50LnByb3BlcnR5TmFtZSAhPT0gJ3ZhbHVlJykg
eworICAgIHJldHVybjsKKyAgfQorICB2YXIgdmFsdWUgPSBuYXRpdmVFdmVudC5zcmNFbGVtZW50
LnZhbHVlOworICBpZiAodmFsdWUgPT09IGFjdGl2ZUVsZW1lbnRWYWx1ZSkgeworICAgIHJldHVy
bjsKKyAgfQorICBhY3RpdmVFbGVtZW50VmFsdWUgPSB2YWx1ZTsKKworICBtYW51YWxEaXNwYXRj
aENoYW5nZUV2ZW50KG5hdGl2ZUV2ZW50KTsKK30KKworLyoqCisgKiBJZiBhIGBjaGFuZ2VgIGV2
ZW50IHNob3VsZCBiZSBmaXJlZCwgcmV0dXJucyB0aGUgdGFyZ2V0J3MgSUQuCisgKi8KK2Z1bmN0
aW9uIGdldFRhcmdldEluc3RGb3JJbnB1dEV2ZW50KHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCkg
eworICBpZiAodG9wTGV2ZWxUeXBlID09PSAndG9wSW5wdXQnKSB7CisgICAgLy8gSW4gbW9kZXJu
IGJyb3dzZXJzIChpLmUuLCBub3QgSUU4IG9yIElFOSksIHRoZSBpbnB1dCBldmVudCBpcyBleGFj
dGx5CisgICAgLy8gd2hhdCB3ZSB3YW50IHNvIGZhbGwgdGhyb3VnaCBoZXJlIGFuZCB0cmlnZ2Vy
IGFuIGFic3RyYWN0IGV2ZW50CisgICAgcmV0dXJuIHRhcmdldEluc3Q7CisgIH0KK30KKworZnVu
Y3Rpb24gaGFuZGxlRXZlbnRzRm9ySW5wdXRFdmVudElFKHRvcExldmVsVHlwZSwgdGFyZ2V0LCB0
YXJnZXRJbnN0KSB7CisgIGlmICh0b3BMZXZlbFR5cGUgPT09ICd0b3BGb2N1cycpIHsKKyAgICAv
LyBJbiBJRTgsIHdlIGNhbiBjYXB0dXJlIGFsbW9zdCBhbGwgLnZhbHVlIGNoYW5nZXMgYnkgYWRk
aW5nIGEKKyAgICAvLyBwcm9wZXJ0eWNoYW5nZSBoYW5kbGVyIGFuZCBsb29raW5nIGZvciBldmVu
dHMgd2l0aCBwcm9wZXJ0eU5hbWUKKyAgICAvLyBlcXVhbCB0byAndmFsdWUnCisgICAgLy8gSW4g
SUU5LTExLCBwcm9wZXJ0eWNoYW5nZSBmaXJlcyBmb3IgbW9zdCBpbnB1dCBldmVudHMgYnV0IGlz
IGJ1Z2d5IGFuZAorICAgIC8vIGRvZXNuJ3QgZmlyZSB3aGVuIHRleHQgaXMgZGVsZXRlZCwgYnV0
IGNvbnZlbmllbnRseSwgc2VsZWN0aW9uY2hhbmdlCisgICAgLy8gYXBwZWFycyB0byBmaXJlIGlu
IGFsbCBvZiB0aGUgcmVtYWluaW5nIGNhc2VzIHNvIHdlIGNhdGNoIHRob3NlIGFuZAorICAgIC8v
IGZvcndhcmQgdGhlIGV2ZW50IGlmIHRoZSB2YWx1ZSBoYXMgY2hhbmdlZAorICAgIC8vIEluIGVp
dGhlciBjYXNlLCB3ZSBkb24ndCB3YW50IHRvIGNhbGwgdGhlIGV2ZW50IGhhbmRsZXIgaWYgdGhl
IHZhbHVlCisgICAgLy8gaXMgY2hhbmdlZCBmcm9tIEpTIHNvIHdlIHJlZGVmaW5lIGEgc2V0dGVy
IGZvciBgLnZhbHVlYCB0aGF0IHVwZGF0ZXMKKyAgICAvLyBvdXIgYWN0aXZlRWxlbWVudFZhbHVl
IHZhcmlhYmxlLCBhbGxvd2luZyB1cyB0byBpZ25vcmUgdGhvc2UgY2hhbmdlcworICAgIC8vCisg
ICAgLy8gc3RvcFdhdGNoaW5nKCkgc2hvdWxkIGJlIGEgbm9vcCBoZXJlIGJ1dCB3ZSBjYWxsIGl0
IGp1c3QgaW4gY2FzZSB3ZQorICAgIC8vIG1pc3NlZCBhIGJsdXIgZXZlbnQgc29tZWhvdy4KKyAg
ICBzdG9wV2F0Y2hpbmdGb3JWYWx1ZUNoYW5nZSgpOworICAgIHN0YXJ0V2F0Y2hpbmdGb3JWYWx1
ZUNoYW5nZSh0YXJnZXQsIHRhcmdldEluc3QpOworICB9IGVsc2UgaWYgKHRvcExldmVsVHlwZSA9
PT0gJ3RvcEJsdXInKSB7CisgICAgc3RvcFdhdGNoaW5nRm9yVmFsdWVDaGFuZ2UoKTsKKyAgfQor
fQorCisvLyBGb3IgSUU4IGFuZCBJRTkuCitmdW5jdGlvbiBnZXRUYXJnZXRJbnN0Rm9ySW5wdXRF
dmVudElFKHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCkgeworICBpZiAodG9wTGV2ZWxUeXBlID09
PSAndG9wU2VsZWN0aW9uQ2hhbmdlJyB8fCB0b3BMZXZlbFR5cGUgPT09ICd0b3BLZXlVcCcgfHwg
dG9wTGV2ZWxUeXBlID09PSAndG9wS2V5RG93bicpIHsKKyAgICAvLyBPbiB0aGUgc2VsZWN0aW9u
Y2hhbmdlIGV2ZW50LCB0aGUgdGFyZ2V0IGlzIGp1c3QgZG9jdW1lbnQgd2hpY2ggaXNuJ3QKKyAg
ICAvLyBoZWxwZnVsIGZvciB1cyBzbyBqdXN0IGNoZWNrIGFjdGl2ZUVsZW1lbnQgaW5zdGVhZC4K
KyAgICAvLworICAgIC8vIDk5JSBvZiB0aGUgdGltZSwga2V5ZG93biBhbmQga2V5dXAgYXJlbid0
IG5lY2Vzc2FyeS4gSUU4IGZhaWxzIHRvIGZpcmUKKyAgICAvLyBwcm9wZXJ0eWNoYW5nZSBvbiB0
aGUgZmlyc3QgaW5wdXQgZXZlbnQgYWZ0ZXIgc2V0dGluZyBgdmFsdWVgIGZyb20gYQorICAgIC8v
IHNjcmlwdCBhbmQgZmlyZXMgb25seSBrZXlkb3duLCBrZXlwcmVzcywga2V5dXAuIENhdGNoaW5n
IGtleXVwIHVzdWFsbHkKKyAgICAvLyBnZXRzIGl0IGFuZCBjYXRjaGluZyBrZXlkb3duIGxldHMg
dXMgZmlyZSBhbiBldmVudCBmb3IgdGhlIGZpcnN0CisgICAgLy8ga2V5c3Ryb2tlIGlmIHVzZXIg
ZG9lcyBhIGtleSByZXBlYXQgKGl0J2xsIGJlIGEgbGl0dGxlIGRlbGF5ZWQ6IHJpZ2h0CisgICAg
Ly8gYmVmb3JlIHRoZSBzZWNvbmQga2V5c3Ryb2tlKS4gT3RoZXIgaW5wdXQgbWV0aG9kcyAoZS5n
LiwgcGFzdGUpIHNlZW0gdG8KKyAgICAvLyBmaXJlIHNlbGVjdGlvbmNoYW5nZSBub3JtYWxseS4K
KyAgICBpZiAoYWN0aXZlRWxlbWVudCAmJiBhY3RpdmVFbGVtZW50LnZhbHVlICE9PSBhY3RpdmVF
bGVtZW50VmFsdWUpIHsKKyAgICAgIGFjdGl2ZUVsZW1lbnRWYWx1ZSA9IGFjdGl2ZUVsZW1lbnQu
dmFsdWU7CisgICAgICByZXR1cm4gYWN0aXZlRWxlbWVudEluc3Q7CisgICAgfQorICB9Cit9CisK
Ky8qKgorICogU0VDVElPTjogaGFuZGxlIGBjbGlja2AgZXZlbnQKKyAqLworZnVuY3Rpb24gc2hv
dWxkVXNlQ2xpY2tFdmVudChlbGVtKSB7CisgIC8vIFVzZSB0aGUgYGNsaWNrYCBldmVudCB0byBk
ZXRlY3QgY2hhbmdlcyB0byBjaGVja2JveCBhbmQgcmFkaW8gaW5wdXRzLgorICAvLyBUaGlzIGFw
cHJvYWNoIHdvcmtzIGFjcm9zcyBhbGwgYnJvd3NlcnMsIHdoZXJlYXMgYGNoYW5nZWAgZG9lcyBu
b3QgZmlyZQorICAvLyB1bnRpbCBgYmx1cmAgaW4gSUU4LgorICByZXR1cm4gZWxlbS5ub2RlTmFt
ZSAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdpbnB1dCcgJiYgKGVsZW0udHlw
ZSA9PT0gJ2NoZWNrYm94JyB8fCBlbGVtLnR5cGUgPT09ICdyYWRpbycpOworfQorCitmdW5jdGlv
biBnZXRUYXJnZXRJbnN0Rm9yQ2xpY2tFdmVudCh0b3BMZXZlbFR5cGUsIHRhcmdldEluc3QpIHsK
KyAgaWYgKHRvcExldmVsVHlwZSA9PT0gJ3RvcENsaWNrJykgeworICAgIHJldHVybiB0YXJnZXRJ
bnN0OworICB9Cit9CisKKy8qKgorICogVGhpcyBwbHVnaW4gY3JlYXRlcyBhbiBgb25DaGFuZ2Vg
IGV2ZW50IHRoYXQgbm9ybWFsaXplcyBjaGFuZ2UgZXZlbnRzCisgKiBhY3Jvc3MgZm9ybSBlbGVt
ZW50cy4gVGhpcyBldmVudCBmaXJlcyBhdCBhIHRpbWUgd2hlbiBpdCdzIHBvc3NpYmxlIHRvCisg
KiBjaGFuZ2UgdGhlIGVsZW1lbnQncyB2YWx1ZSB3aXRob3V0IHNlZWluZyBhIGZsaWNrZXIuCisg
KgorICogU3VwcG9ydGVkIGVsZW1lbnRzIGFyZToKKyAqIC0gaW5wdXQgKHNlZSBgaXNUZXh0SW5w
dXRFbGVtZW50YCkKKyAqIC0gdGV4dGFyZWEKKyAqIC0gc2VsZWN0CisgKi8KK3ZhciBDaGFuZ2VF
dmVudFBsdWdpbiA9IHsKKworICBldmVudFR5cGVzOiBldmVudFR5cGVzLAorCisgIGV4dHJhY3RF
dmVudHM6IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBu
YXRpdmVFdmVudFRhcmdldCkgeworICAgIHZhciB0YXJnZXROb2RlID0gdGFyZ2V0SW5zdCA/IFJl
YWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKHRhcmdldEluc3QpIDogd2lu
ZG93OworCisgICAgdmFyIGdldFRhcmdldEluc3RGdW5jLCBoYW5kbGVFdmVudEZ1bmM7CisgICAg
aWYgKHNob3VsZFVzZUNoYW5nZUV2ZW50KHRhcmdldE5vZGUpKSB7CisgICAgICBpZiAoZG9lc0No
YW5nZUV2ZW50QnViYmxlKSB7CisgICAgICAgIGdldFRhcmdldEluc3RGdW5jID0gZ2V0VGFyZ2V0
SW5zdEZvckNoYW5nZUV2ZW50OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgaGFuZGxlRXZlbnRG
dW5jID0gaGFuZGxlRXZlbnRzRm9yQ2hhbmdlRXZlbnRJRTg7CisgICAgICB9CisgICAgfSBlbHNl
IGlmIChpc1RleHRJbnB1dEVsZW1lbnQodGFyZ2V0Tm9kZSkpIHsKKyAgICAgIGlmIChpc0lucHV0
RXZlbnRTdXBwb3J0ZWQpIHsKKyAgICAgICAgZ2V0VGFyZ2V0SW5zdEZ1bmMgPSBnZXRUYXJnZXRJ
bnN0Rm9ySW5wdXRFdmVudDsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGdldFRhcmdldEluc3RG
dW5jID0gZ2V0VGFyZ2V0SW5zdEZvcklucHV0RXZlbnRJRTsKKyAgICAgICAgaGFuZGxlRXZlbnRG
dW5jID0gaGFuZGxlRXZlbnRzRm9ySW5wdXRFdmVudElFOworICAgICAgfQorICAgIH0gZWxzZSBp
ZiAoc2hvdWxkVXNlQ2xpY2tFdmVudCh0YXJnZXROb2RlKSkgeworICAgICAgZ2V0VGFyZ2V0SW5z
dEZ1bmMgPSBnZXRUYXJnZXRJbnN0Rm9yQ2xpY2tFdmVudDsKKyAgICB9CisKKyAgICBpZiAoZ2V0
VGFyZ2V0SW5zdEZ1bmMpIHsKKyAgICAgIHZhciBpbnN0ID0gZ2V0VGFyZ2V0SW5zdEZ1bmModG9w
TGV2ZWxUeXBlLCB0YXJnZXRJbnN0KTsKKyAgICAgIGlmIChpbnN0KSB7CisgICAgICAgIHZhciBl
dmVudCA9IFN5bnRoZXRpY0V2ZW50LmdldFBvb2xlZChldmVudFR5cGVzLmNoYW5nZSwgaW5zdCwg
bmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTsKKyAgICAgICAgZXZlbnQudHlwZSA9ICdj
aGFuZ2UnOworICAgICAgICBFdmVudFByb3BhZ2F0b3JzLmFjY3VtdWxhdGVUd29QaGFzZURpc3Bh
dGNoZXMoZXZlbnQpOworICAgICAgICByZXR1cm4gZXZlbnQ7CisgICAgICB9CisgICAgfQorCisg
ICAgaWYgKGhhbmRsZUV2ZW50RnVuYykgeworICAgICAgaGFuZGxlRXZlbnRGdW5jKHRvcExldmVs
VHlwZSwgdGFyZ2V0Tm9kZSwgdGFyZ2V0SW5zdCk7CisgICAgfQorICB9CisKK307CisKK21vZHVs
ZS5leHBvcnRzID0gQ2hhbmdlRXZlbnRQbHVnaW47Cit9LHsiMTE0IjoxMTQsIjEyMiI6MTIyLCIx
MjMiOjEyMywiMTM2IjoxMzYsIjE3IjoxNywiMjAiOjIwLCIzNCI6MzQsIjgyIjo4MiwiOTEiOjkx
fV0sODpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdo
dCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBs
aWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9y
eSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQg
cmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVj
dG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgRE9NTGF6eVRyZWUgPSBfZGVy
ZXFfKDkpOwordmFyIERhbmdlciA9IF9kZXJlcV8oMTMpOwordmFyIFJlYWN0RE9NQ29tcG9uZW50
VHJlZSA9IF9kZXJlcV8oMzQpOwordmFyIFJlYWN0SW5zdHJ1bWVudGF0aW9uID0gX2RlcmVxXyg2
NCk7CisKK3ZhciBjcmVhdGVNaWNyb3NvZnRVbnNhZmVMb2NhbEZ1bmN0aW9uID0gX2RlcmVxXygx
MDUpOwordmFyIHNldElubmVySFRNTCA9IF9kZXJlcV8oMTI3KTsKK3ZhciBzZXRUZXh0Q29udGVu
dCA9IF9kZXJlcV8oMTI4KTsKKworZnVuY3Rpb24gZ2V0Tm9kZUFmdGVyKHBhcmVudE5vZGUsIG5v
ZGUpIHsKKyAgLy8gU3BlY2lhbCBjYXNlIGZvciB0ZXh0IGNvbXBvbmVudHMsIHdoaWNoIHJldHVy
biBbb3BlbiwgY2xvc2VdIGNvbW1lbnRzCisgIC8vIGZyb20gZ2V0SG9zdE5vZGUuCisgIGlmIChB
cnJheS5pc0FycmF5KG5vZGUpKSB7CisgICAgbm9kZSA9IG5vZGVbMV07CisgIH0KKyAgcmV0dXJu
IG5vZGUgPyBub2RlLm5leHRTaWJsaW5nIDogcGFyZW50Tm9kZS5maXJzdENoaWxkOworfQorCisv
KioKKyAqIEluc2VydHMgYGNoaWxkTm9kZWAgYXMgYSBjaGlsZCBvZiBgcGFyZW50Tm9kZWAgYXQg
dGhlIGBpbmRleGAuCisgKgorICogQHBhcmFtIHtET01FbGVtZW50fSBwYXJlbnROb2RlIFBhcmVu
dCBub2RlIGluIHdoaWNoIHRvIGluc2VydC4KKyAqIEBwYXJhbSB7RE9NRWxlbWVudH0gY2hpbGRO
b2RlIENoaWxkIG5vZGUgdG8gaW5zZXJ0LgorICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IEluZGV4
IGF0IHdoaWNoIHRvIGluc2VydCB0aGUgY2hpbGQuCisgKiBAaW50ZXJuYWwKKyAqLwordmFyIGlu
c2VydENoaWxkQXQgPSBjcmVhdGVNaWNyb3NvZnRVbnNhZmVMb2NhbEZ1bmN0aW9uKGZ1bmN0aW9u
IChwYXJlbnROb2RlLCBjaGlsZE5vZGUsIHJlZmVyZW5jZU5vZGUpIHsKKyAgLy8gV2UgcmVseSBl
eGNsdXNpdmVseSBvbiBgaW5zZXJ0QmVmb3JlKG5vZGUsIG51bGwpYCBpbnN0ZWFkIG9mIGFsc28g
dXNpbmcKKyAgLy8gYGFwcGVuZENoaWxkKG5vZGUpYC4gKFVzaW5nIGB1bmRlZmluZWRgIGlzIG5v
dCBhbGxvd2VkIGJ5IGFsbCBicm93c2VycyBzbworICAvLyB3ZSBhcmUgY2FyZWZ1bCB0byB1c2Ug
YG51bGxgLikKKyAgcGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoY2hpbGROb2RlLCByZWZlcmVuY2VO
b2RlKTsKK30pOworCitmdW5jdGlvbiBpbnNlcnRMYXp5VHJlZUNoaWxkQXQocGFyZW50Tm9kZSwg
Y2hpbGRUcmVlLCByZWZlcmVuY2VOb2RlKSB7CisgIERPTUxhenlUcmVlLmluc2VydFRyZWVCZWZv
cmUocGFyZW50Tm9kZSwgY2hpbGRUcmVlLCByZWZlcmVuY2VOb2RlKTsKK30KKworZnVuY3Rpb24g
bW92ZUNoaWxkKHBhcmVudE5vZGUsIGNoaWxkTm9kZSwgcmVmZXJlbmNlTm9kZSkgeworICBpZiAo
QXJyYXkuaXNBcnJheShjaGlsZE5vZGUpKSB7CisgICAgbW92ZURlbGltaXRlZFRleHQocGFyZW50
Tm9kZSwgY2hpbGROb2RlWzBdLCBjaGlsZE5vZGVbMV0sIHJlZmVyZW5jZU5vZGUpOworICB9IGVs
c2UgeworICAgIGluc2VydENoaWxkQXQocGFyZW50Tm9kZSwgY2hpbGROb2RlLCByZWZlcmVuY2VO
b2RlKTsKKyAgfQorfQorCitmdW5jdGlvbiByZW1vdmVDaGlsZChwYXJlbnROb2RlLCBjaGlsZE5v
ZGUpIHsKKyAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGROb2RlKSkgeworICAgIHZhciBjbG9zaW5n
Q29tbWVudCA9IGNoaWxkTm9kZVsxXTsKKyAgICBjaGlsZE5vZGUgPSBjaGlsZE5vZGVbMF07Cisg
ICAgcmVtb3ZlRGVsaW1pdGVkVGV4dChwYXJlbnROb2RlLCBjaGlsZE5vZGUsIGNsb3NpbmdDb21t
ZW50KTsKKyAgICBwYXJlbnROb2RlLnJlbW92ZUNoaWxkKGNsb3NpbmdDb21tZW50KTsKKyAgfQor
ICBwYXJlbnROb2RlLnJlbW92ZUNoaWxkKGNoaWxkTm9kZSk7Cit9CisKK2Z1bmN0aW9uIG1vdmVE
ZWxpbWl0ZWRUZXh0KHBhcmVudE5vZGUsIG9wZW5pbmdDb21tZW50LCBjbG9zaW5nQ29tbWVudCwg
cmVmZXJlbmNlTm9kZSkgeworICB2YXIgbm9kZSA9IG9wZW5pbmdDb21tZW50OworICB3aGlsZSAo
dHJ1ZSkgeworICAgIHZhciBuZXh0Tm9kZSA9IG5vZGUubmV4dFNpYmxpbmc7CisgICAgaW5zZXJ0
Q2hpbGRBdChwYXJlbnROb2RlLCBub2RlLCByZWZlcmVuY2VOb2RlKTsKKyAgICBpZiAobm9kZSA9
PT0gY2xvc2luZ0NvbW1lbnQpIHsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgICBub2RlID0gbmV4
dE5vZGU7CisgIH0KK30KKworZnVuY3Rpb24gcmVtb3ZlRGVsaW1pdGVkVGV4dChwYXJlbnROb2Rl
LCBzdGFydE5vZGUsIGNsb3NpbmdDb21tZW50KSB7CisgIHdoaWxlICh0cnVlKSB7CisgICAgdmFy
IG5vZGUgPSBzdGFydE5vZGUubmV4dFNpYmxpbmc7CisgICAgaWYgKG5vZGUgPT09IGNsb3NpbmdD
b21tZW50KSB7CisgICAgICAvLyBUaGUgY2xvc2luZyBjb21tZW50IGlzIHJlbW92ZWQgYnkgUmVh
Y3RNdWx0aUNoaWxkLgorICAgICAgYnJlYWs7CisgICAgfSBlbHNlIHsKKyAgICAgIHBhcmVudE5v
ZGUucmVtb3ZlQ2hpbGQobm9kZSk7CisgICAgfQorICB9Cit9CisKK2Z1bmN0aW9uIHJlcGxhY2VE
ZWxpbWl0ZWRUZXh0KG9wZW5pbmdDb21tZW50LCBjbG9zaW5nQ29tbWVudCwgc3RyaW5nVGV4dCkg
eworICB2YXIgcGFyZW50Tm9kZSA9IG9wZW5pbmdDb21tZW50LnBhcmVudE5vZGU7CisgIHZhciBu
b2RlQWZ0ZXJDb21tZW50ID0gb3BlbmluZ0NvbW1lbnQubmV4dFNpYmxpbmc7CisgIGlmIChub2Rl
QWZ0ZXJDb21tZW50ID09PSBjbG9zaW5nQ29tbWVudCkgeworICAgIC8vIFRoZXJlIGFyZSBubyB0
ZXh0IG5vZGVzIGJldHdlZW4gdGhlIG9wZW5pbmcgYW5kIGNsb3NpbmcgY29tbWVudHM7IGluc2Vy
dAorICAgIC8vIGEgbmV3IG9uZSBpZiBzdHJpbmdUZXh0IGlzbid0IGVtcHR5LgorICAgIGlmIChz
dHJpbmdUZXh0KSB7CisgICAgICBpbnNlcnRDaGlsZEF0KHBhcmVudE5vZGUsIGRvY3VtZW50LmNy
ZWF0ZVRleHROb2RlKHN0cmluZ1RleHQpLCBub2RlQWZ0ZXJDb21tZW50KTsKKyAgICB9CisgIH0g
ZWxzZSB7CisgICAgaWYgKHN0cmluZ1RleHQpIHsKKyAgICAgIC8vIFNldCB0aGUgdGV4dCBjb250
ZW50IG9mIHRoZSBmaXJzdCBub2RlIGFmdGVyIHRoZSBvcGVuaW5nIGNvbW1lbnQsIGFuZAorICAg
ICAgLy8gcmVtb3ZlIGFsbCBmb2xsb3dpbmcgbm9kZXMgdXAgdW50aWwgdGhlIGNsb3NpbmcgY29t
bWVudC4KKyAgICAgIHNldFRleHRDb250ZW50KG5vZGVBZnRlckNvbW1lbnQsIHN0cmluZ1RleHQp
OworICAgICAgcmVtb3ZlRGVsaW1pdGVkVGV4dChwYXJlbnROb2RlLCBub2RlQWZ0ZXJDb21tZW50
LCBjbG9zaW5nQ29tbWVudCk7CisgICAgfSBlbHNlIHsKKyAgICAgIHJlbW92ZURlbGltaXRlZFRl
eHQocGFyZW50Tm9kZSwgb3BlbmluZ0NvbW1lbnQsIGNsb3NpbmdDb21tZW50KTsKKyAgICB9Cisg
IH0KKworICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgUmVhY3RJ
bnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uSG9zdE9wZXJhdGlvbih7CisgICAgICBpbnN0YW5j
ZUlEOiBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0SW5zdGFuY2VGcm9tTm9kZShvcGVuaW5nQ29t
bWVudCkuX2RlYnVnSUQsCisgICAgICB0eXBlOiAncmVwbGFjZSB0ZXh0JywKKyAgICAgIHBheWxv
YWQ6IHN0cmluZ1RleHQKKyAgICB9KTsKKyAgfQorfQorCit2YXIgZGFuZ2Vyb3VzbHlSZXBsYWNl
Tm9kZVdpdGhNYXJrdXAgPSBEYW5nZXIuZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXA7
CitpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgIGRhbmdlcm91c2x5UmVw
bGFjZU5vZGVXaXRoTWFya3VwID0gZnVuY3Rpb24gKG9sZENoaWxkLCBtYXJrdXAsIHByZXZJbnN0
YW5jZSkgeworICAgIERhbmdlci5kYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cChvbGRD
aGlsZCwgbWFya3VwKTsKKyAgICBpZiAocHJldkluc3RhbmNlLl9kZWJ1Z0lEICE9PSAwKSB7Cisg
ICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25Ib3N0T3BlcmF0aW9uKHsKKyAg
ICAgICAgaW5zdGFuY2VJRDogcHJldkluc3RhbmNlLl9kZWJ1Z0lELAorICAgICAgICB0eXBlOiAn
cmVwbGFjZSB3aXRoJywKKyAgICAgICAgcGF5bG9hZDogbWFya3VwLnRvU3RyaW5nKCkKKyAgICAg
IH0pOworICAgIH0gZWxzZSB7CisgICAgICB2YXIgbmV4dEluc3RhbmNlID0gUmVhY3RET01Db21w
b25lbnRUcmVlLmdldEluc3RhbmNlRnJvbU5vZGUobWFya3VwLm5vZGUpOworICAgICAgaWYgKG5l
eHRJbnN0YW5jZS5fZGVidWdJRCAhPT0gMCkgeworICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlv
bi5kZWJ1Z1Rvb2wub25Ib3N0T3BlcmF0aW9uKHsKKyAgICAgICAgICBpbnN0YW5jZUlEOiBuZXh0
SW5zdGFuY2UuX2RlYnVnSUQsCisgICAgICAgICAgdHlwZTogJ21vdW50JywKKyAgICAgICAgICBw
YXlsb2FkOiBtYXJrdXAudG9TdHJpbmcoKQorICAgICAgICB9KTsKKyAgICAgIH0KKyAgICB9Cisg
IH07Cit9CisKKy8qKgorICogT3BlcmF0aW9ucyBmb3IgdXBkYXRpbmcgd2l0aCBET00gY2hpbGRy
ZW4uCisgKi8KK3ZhciBET01DaGlsZHJlbk9wZXJhdGlvbnMgPSB7CisKKyAgZGFuZ2Vyb3VzbHlS
ZXBsYWNlTm9kZVdpdGhNYXJrdXA6IGRhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwLAor
CisgIHJlcGxhY2VEZWxpbWl0ZWRUZXh0OiByZXBsYWNlRGVsaW1pdGVkVGV4dCwKKworICAvKioK
KyAgICogVXBkYXRlcyBhIGNvbXBvbmVudCdzIGNoaWxkcmVuIGJ5IHByb2Nlc3NpbmcgYSBzZXJp
ZXMgb2YgdXBkYXRlcy4gVGhlCisgICAqIHVwZGF0ZSBjb25maWd1cmF0aW9ucyBhcmUgZWFjaCBl
eHBlY3RlZCB0byBoYXZlIGEgYHBhcmVudE5vZGVgIHByb3BlcnR5LgorICAgKgorICAgKiBAcGFy
YW0ge2FycmF5PG9iamVjdD59IHVwZGF0ZXMgTGlzdCBvZiB1cGRhdGUgY29uZmlndXJhdGlvbnMu
CisgICAqIEBpbnRlcm5hbAorICAgKi8KKyAgcHJvY2Vzc1VwZGF0ZXM6IGZ1bmN0aW9uIChwYXJl
bnROb2RlLCB1cGRhdGVzKSB7CisgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9u
JykgeworICAgICAgdmFyIHBhcmVudE5vZGVEZWJ1Z0lEID0gUmVhY3RET01Db21wb25lbnRUcmVl
LmdldEluc3RhbmNlRnJvbU5vZGUocGFyZW50Tm9kZSkuX2RlYnVnSUQ7CisgICAgfQorCisgICAg
Zm9yICh2YXIgayA9IDA7IGsgPCB1cGRhdGVzLmxlbmd0aDsgaysrKSB7CisgICAgICB2YXIgdXBk
YXRlID0gdXBkYXRlc1trXTsKKyAgICAgIHN3aXRjaCAodXBkYXRlLnR5cGUpIHsKKyAgICAgICAg
Y2FzZSAnSU5TRVJUX01BUktVUCc6CisgICAgICAgICAgaW5zZXJ0TGF6eVRyZWVDaGlsZEF0KHBh
cmVudE5vZGUsIHVwZGF0ZS5jb250ZW50LCBnZXROb2RlQWZ0ZXIocGFyZW50Tm9kZSwgdXBkYXRl
LmFmdGVyTm9kZSkpOworICAgICAgICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlv
bicpIHsKKyAgICAgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhvc3RP
cGVyYXRpb24oeworICAgICAgICAgICAgICBpbnN0YW5jZUlEOiBwYXJlbnROb2RlRGVidWdJRCwK
KyAgICAgICAgICAgICAgdHlwZTogJ2luc2VydCBjaGlsZCcsCisgICAgICAgICAgICAgIHBheWxv
YWQ6IHsgdG9JbmRleDogdXBkYXRlLnRvSW5kZXgsIGNvbnRlbnQ6IHVwZGF0ZS5jb250ZW50LnRv
U3RyaW5nKCkgfQorICAgICAgICAgICAgfSk7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlICdNT1ZFX0VYSVNUSU5HJzoKKyAgICAgICAgICBtb3ZlQ2hpbGQocGFy
ZW50Tm9kZSwgdXBkYXRlLmZyb21Ob2RlLCBnZXROb2RlQWZ0ZXIocGFyZW50Tm9kZSwgdXBkYXRl
LmFmdGVyTm9kZSkpOworICAgICAgICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlv
bicpIHsKKyAgICAgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhvc3RP
cGVyYXRpb24oeworICAgICAgICAgICAgICBpbnN0YW5jZUlEOiBwYXJlbnROb2RlRGVidWdJRCwK
KyAgICAgICAgICAgICAgdHlwZTogJ21vdmUgY2hpbGQnLAorICAgICAgICAgICAgICBwYXlsb2Fk
OiB7IGZyb21JbmRleDogdXBkYXRlLmZyb21JbmRleCwgdG9JbmRleDogdXBkYXRlLnRvSW5kZXgg
fQorICAgICAgICAgICAgfSk7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlICdTRVRfTUFSS1VQJzoKKyAgICAgICAgICBzZXRJbm5lckhUTUwocGFyZW50Tm9kZSwg
dXBkYXRlLmNvbnRlbnQpOworICAgICAgICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVj
dGlvbicpIHsKKyAgICAgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhv
c3RPcGVyYXRpb24oeworICAgICAgICAgICAgICBpbnN0YW5jZUlEOiBwYXJlbnROb2RlRGVidWdJ
RCwKKyAgICAgICAgICAgICAgdHlwZTogJ3JlcGxhY2UgY2hpbGRyZW4nLAorICAgICAgICAgICAg
ICBwYXlsb2FkOiB1cGRhdGUuY29udGVudC50b1N0cmluZygpCisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJ1RFWFRfQ09OVEVOVCc6
CisgICAgICAgICAgc2V0VGV4dENvbnRlbnQocGFyZW50Tm9kZSwgdXBkYXRlLmNvbnRlbnQpOwor
ICAgICAgICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICAg
ICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhvc3RPcGVyYXRpb24oeworICAg
ICAgICAgICAgICBpbnN0YW5jZUlEOiBwYXJlbnROb2RlRGVidWdJRCwKKyAgICAgICAgICAgICAg
dHlwZTogJ3JlcGxhY2UgdGV4dCcsCisgICAgICAgICAgICAgIHBheWxvYWQ6IHVwZGF0ZS5jb250
ZW50LnRvU3RyaW5nKCkKKyAgICAgICAgICAgIH0pOworICAgICAgICAgIH0KKyAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSAnUkVNT1ZFX05PREUnOgorICAgICAgICAgIHJlbW92ZUNoaWxk
KHBhcmVudE5vZGUsIHVwZGF0ZS5mcm9tTm9kZSk7CisgICAgICAgICAgaWYgKCJkZXZlbG9wbWVu
dCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24u
ZGVidWdUb29sLm9uSG9zdE9wZXJhdGlvbih7CisgICAgICAgICAgICAgIGluc3RhbmNlSUQ6IHBh
cmVudE5vZGVEZWJ1Z0lELAorICAgICAgICAgICAgICB0eXBlOiAncmVtb3ZlIGNoaWxkJywKKyAg
ICAgICAgICAgICAgcGF5bG9hZDogeyBmcm9tSW5kZXg6IHVwZGF0ZS5mcm9tSW5kZXggfQorICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgfQorICAg
IH0KKyAgfQorCit9OworCittb2R1bGUuZXhwb3J0cyA9IERPTUNoaWxkcmVuT3BlcmF0aW9uczsK
K30seyIxMDUiOjEwNSwiMTI3IjoxMjcsIjEyOCI6MTI4LCIxMyI6MTMsIjM0IjozNCwiNjQiOjY0
LCI5Ijo5fV0sOTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENv
cHlyaWdodCAyMDE1LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1z
dHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRp
cmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBw
YXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1l
IGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgRE9NTmFtZXNwYWNl
cyA9IF9kZXJlcV8oMTApOwordmFyIHNldElubmVySFRNTCA9IF9kZXJlcV8oMTI3KTsKKwordmFy
IGNyZWF0ZU1pY3Jvc29mdFVuc2FmZUxvY2FsRnVuY3Rpb24gPSBfZGVyZXFfKDEwNSk7Cit2YXIg
c2V0VGV4dENvbnRlbnQgPSBfZGVyZXFfKDEyOCk7CisKK3ZhciBFTEVNRU5UX05PREVfVFlQRSA9
IDE7Cit2YXIgRE9DVU1FTlRfRlJBR01FTlRfTk9ERV9UWVBFID0gMTE7CisKKy8qKgorICogSW4g
SUUgKDgtMTEpIGFuZCBFZGdlLCBhcHBlbmRpbmcgbm9kZXMgd2l0aCBubyBjaGlsZHJlbiBpcyBk
cmFtYXRpY2FsbHkKKyAqIGZhc3RlciB0aGFuIGFwcGVuZGluZyBhIGZ1bGwgc3VidHJlZSwgc28g
d2UgZXNzZW50aWFsbHkgcXVldWUgdXAgdGhlCisgKiAuYXBwZW5kQ2hpbGQgY2FsbHMgaGVyZSBh
bmQgYXBwbHkgdGhlbSBzbyBlYWNoIG5vZGUgaXMgYWRkZWQgdG8gaXRzIHBhcmVudAorICogYmVm
b3JlIGFueSBjaGlsZHJlbiBhcmUgYWRkZWQuCisgKgorICogSW4gb3RoZXIgYnJvd3NlcnMsIGRv
aW5nIHNvIGlzIHNsb3dlciBvciBuZXV0cmFsIGNvbXBhcmVkIHRvIHRoZSBvdGhlciBvcmRlcgor
ICogKGluIEZpcmVmb3gsIHR3aWNlIGFzIHNsb3cpIHNvIHdlIG9ubHkgZG8gdGhpcyBpbnZlcnNp
b24gaW4gSUUuCisgKgorICogU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9zcGljeWovaW5uZXJodG1s
LXZzLWNyZWF0ZWVsZW1lbnQtdnMtY2xvbmVub2RlLgorICovCit2YXIgZW5hYmxlTGF6eSA9IHR5
cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGRvY3VtZW50LmRvY3VtZW50
TW9kZSA9PT0gJ251bWJlcicgfHwgdHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYg
dHlwZW9mIG5hdmlnYXRvci51c2VyQWdlbnQgPT09ICdzdHJpbmcnICYmIC9cYkVkZ2VcL1xkLy50
ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpOworCitmdW5jdGlvbiBpbnNlcnRUcmVlQ2hpbGRyZW4o
dHJlZSkgeworICBpZiAoIWVuYWJsZUxhenkpIHsKKyAgICByZXR1cm47CisgIH0KKyAgdmFyIG5v
ZGUgPSB0cmVlLm5vZGU7CisgIHZhciBjaGlsZHJlbiA9IHRyZWUuY2hpbGRyZW47CisgIGlmIChj
aGlsZHJlbi5sZW5ndGgpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0
aDsgaSsrKSB7CisgICAgICBpbnNlcnRUcmVlQmVmb3JlKG5vZGUsIGNoaWxkcmVuW2ldLCBudWxs
KTsKKyAgICB9CisgIH0gZWxzZSBpZiAodHJlZS5odG1sICE9IG51bGwpIHsKKyAgICBzZXRJbm5l
ckhUTUwobm9kZSwgdHJlZS5odG1sKTsKKyAgfSBlbHNlIGlmICh0cmVlLnRleHQgIT0gbnVsbCkg
eworICAgIHNldFRleHRDb250ZW50KG5vZGUsIHRyZWUudGV4dCk7CisgIH0KK30KKwordmFyIGlu
c2VydFRyZWVCZWZvcmUgPSBjcmVhdGVNaWNyb3NvZnRVbnNhZmVMb2NhbEZ1bmN0aW9uKGZ1bmN0
aW9uIChwYXJlbnROb2RlLCB0cmVlLCByZWZlcmVuY2VOb2RlKSB7CisgIC8vIERvY3VtZW50RnJh
Z21lbnRzIGFyZW4ndCBhY3R1YWxseSBwYXJ0IG9mIHRoZSBET00gYWZ0ZXIgaW5zZXJ0aW9uIHNv
CisgIC8vIGFwcGVuZGluZyBjaGlsZHJlbiB3b24ndCB1cGRhdGUgdGhlIERPTS4gV2UgbmVlZCB0
byBlbnN1cmUgdGhlIGZyYWdtZW50CisgIC8vIGlzIHByb3Blcmx5IHBvcHVsYXRlZCBmaXJzdCwg
YnJlYWtpbmcgb3V0IG9mIG91ciBsYXp5IGFwcHJvYWNoIGZvciBqdXN0CisgIC8vIHRoaXMgbGV2
ZWwuIEFsc28sIHNvbWUgPG9iamVjdD4gcGx1Z2lucyAobGlrZSBGbGFzaCBQbGF5ZXIpIHdpbGwg
cmVhZAorICAvLyA8cGFyYW0+IG5vZGVzIGltbWVkaWF0ZWx5IHVwb24gaW5zZXJ0aW9uIGludG8g
dGhlIERPTSwgc28gPG9iamVjdD4KKyAgLy8gbXVzdCBhbHNvIGJlIHBvcHVsYXRlZCBwcmlvciB0
byBpbnNlcnRpb24gaW50byB0aGUgRE9NLgorICBpZiAodHJlZS5ub2RlLm5vZGVUeXBlID09PSBE
T0NVTUVOVF9GUkFHTUVOVF9OT0RFX1RZUEUgfHwgdHJlZS5ub2RlLm5vZGVUeXBlID09PSBFTEVN
RU5UX05PREVfVFlQRSAmJiB0cmVlLm5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ29i
amVjdCcgJiYgKHRyZWUubm9kZS5uYW1lc3BhY2VVUkkgPT0gbnVsbCB8fCB0cmVlLm5vZGUubmFt
ZXNwYWNlVVJJID09PSBET01OYW1lc3BhY2VzLmh0bWwpKSB7CisgICAgaW5zZXJ0VHJlZUNoaWxk
cmVuKHRyZWUpOworICAgIHBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRyZWUubm9kZSwgcmVmZXJl
bmNlTm9kZSk7CisgIH0gZWxzZSB7CisgICAgcGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodHJlZS5u
b2RlLCByZWZlcmVuY2VOb2RlKTsKKyAgICBpbnNlcnRUcmVlQ2hpbGRyZW4odHJlZSk7CisgIH0K
K30pOworCitmdW5jdGlvbiByZXBsYWNlQ2hpbGRXaXRoVHJlZShvbGROb2RlLCBuZXdUcmVlKSB7
CisgIG9sZE5vZGUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3VHJlZS5ub2RlLCBvbGROb2Rl
KTsKKyAgaW5zZXJ0VHJlZUNoaWxkcmVuKG5ld1RyZWUpOworfQorCitmdW5jdGlvbiBxdWV1ZUNo
aWxkKHBhcmVudFRyZWUsIGNoaWxkVHJlZSkgeworICBpZiAoZW5hYmxlTGF6eSkgeworICAgIHBh
cmVudFRyZWUuY2hpbGRyZW4ucHVzaChjaGlsZFRyZWUpOworICB9IGVsc2UgeworICAgIHBhcmVu
dFRyZWUubm9kZS5hcHBlbmRDaGlsZChjaGlsZFRyZWUubm9kZSk7CisgIH0KK30KKworZnVuY3Rp
b24gcXVldWVIVE1MKHRyZWUsIGh0bWwpIHsKKyAgaWYgKGVuYWJsZUxhenkpIHsKKyAgICB0cmVl
Lmh0bWwgPSBodG1sOworICB9IGVsc2UgeworICAgIHNldElubmVySFRNTCh0cmVlLm5vZGUsIGh0
bWwpOworICB9Cit9CisKK2Z1bmN0aW9uIHF1ZXVlVGV4dCh0cmVlLCB0ZXh0KSB7CisgIGlmIChl
bmFibGVMYXp5KSB7CisgICAgdHJlZS50ZXh0ID0gdGV4dDsKKyAgfSBlbHNlIHsKKyAgICBzZXRU
ZXh0Q29udGVudCh0cmVlLm5vZGUsIHRleHQpOworICB9Cit9CisKK2Z1bmN0aW9uIHRvU3RyaW5n
KCkgeworICByZXR1cm4gdGhpcy5ub2RlLm5vZGVOYW1lOworfQorCitmdW5jdGlvbiBET01MYXp5
VHJlZShub2RlKSB7CisgIHJldHVybiB7CisgICAgbm9kZTogbm9kZSwKKyAgICBjaGlsZHJlbjog
W10sCisgICAgaHRtbDogbnVsbCwKKyAgICB0ZXh0OiBudWxsLAorICAgIHRvU3RyaW5nOiB0b1N0
cmluZworICB9OworfQorCitET01MYXp5VHJlZS5pbnNlcnRUcmVlQmVmb3JlID0gaW5zZXJ0VHJl
ZUJlZm9yZTsKK0RPTUxhenlUcmVlLnJlcGxhY2VDaGlsZFdpdGhUcmVlID0gcmVwbGFjZUNoaWxk
V2l0aFRyZWU7CitET01MYXp5VHJlZS5xdWV1ZUNoaWxkID0gcXVldWVDaGlsZDsKK0RPTUxhenlU
cmVlLnF1ZXVlSFRNTCA9IHF1ZXVlSFRNTDsKK0RPTUxhenlUcmVlLnF1ZXVlVGV4dCA9IHF1ZXVl
VGV4dDsKKworbW9kdWxlLmV4cG9ydHMgPSBET01MYXp5VHJlZTsKK30seyIxMCI6MTAsIjEwNSI6
MTA1LCIxMjciOjEyNywiMTI4IjoxMjh9XSwxMDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhw
b3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisg
KiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5z
ZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBm
aWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlv
bmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5U
UyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOwor
Cit2YXIgRE9NTmFtZXNwYWNlcyA9IHsKKyAgaHRtbDogJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGh0bWwnLAorICBtYXRobWw6ICdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJywK
KyAgc3ZnOiAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnCit9OworCittb2R1bGUuZXhwb3J0
cyA9IERPTU5hbWVzcGFjZXM7Cit9LHt9XSwxMTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhw
b3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisg
KiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5z
ZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBm
aWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlv
bmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5U
UyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOwor
Cit2YXIgX3Byb2RJbnZhcmlhbnQgPSBfZGVyZXFfKDEyNSk7CisKK3ZhciBpbnZhcmlhbnQgPSBf
ZGVyZXFfKDE1MCk7CisKK2Z1bmN0aW9uIGNoZWNrTWFzayh2YWx1ZSwgYml0bWFzaykgeworICBy
ZXR1cm4gKHZhbHVlICYgYml0bWFzaykgPT09IGJpdG1hc2s7Cit9CisKK3ZhciBET01Qcm9wZXJ0
eUluamVjdGlvbiA9IHsKKyAgLyoqCisgICAqIE1hcHBpbmcgZnJvbSBub3JtYWxpemVkLCBjYW1l
bGNhc2VkIHByb3BlcnR5IG5hbWVzIHRvIGEgY29uZmlndXJhdGlvbiB0aGF0CisgICAqIHNwZWNp
ZmllcyBob3cgdGhlIGFzc29jaWF0ZWQgRE9NIHByb3BlcnR5IHNob3VsZCBiZSBhY2Nlc3NlZCBv
ciByZW5kZXJlZC4KKyAgICovCisgIE1VU1RfVVNFX1BST1BFUlRZOiAweDEsCisgIEhBU19CT09M
RUFOX1ZBTFVFOiAweDQsCisgIEhBU19OVU1FUklDX1ZBTFVFOiAweDgsCisgIEhBU19QT1NJVElW
RV9OVU1FUklDX1ZBTFVFOiAweDEwIHwgMHg4LAorICBIQVNfT1ZFUkxPQURFRF9CT09MRUFOX1ZB
TFVFOiAweDIwLAorCisgIC8qKgorICAgKiBJbmplY3Qgc29tZSBzcGVjaWFsaXplZCBrbm93bGVk
Z2UgYWJvdXQgdGhlIERPTS4gVGhpcyB0YWtlcyBhIGNvbmZpZyBvYmplY3QKKyAgICogd2l0aCB0
aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6CisgICAqCisgICAqIGlzQ3VzdG9tQXR0cmlidXRlOiBm
dW5jdGlvbiB0aGF0IGdpdmVuIGFuIGF0dHJpYnV0ZSBuYW1lIHdpbGwgcmV0dXJuIHRydWUKKyAg
ICogaWYgaXQgY2FuIGJlIGluc2VydGVkIGludG8gdGhlIERPTSB2ZXJiYXRpbS4gVXNlZnVsIGZv
ciBkYXRhLSogb3IgYXJpYS0qCisgICAqIGF0dHJpYnV0ZXMgd2hlcmUgaXQncyBpbXBvc3NpYmxl
IHRvIGVudW1lcmF0ZSBhbGwgb2YgdGhlIHBvc3NpYmxlCisgICAqIGF0dHJpYnV0ZSBuYW1lcywK
KyAgICoKKyAgICogUHJvcGVydGllczogb2JqZWN0IG1hcHBpbmcgRE9NIHByb3BlcnR5IG5hbWUg
dG8gb25lIG9mIHRoZQorICAgKiBET01Qcm9wZXJ0eUluamVjdGlvbiBjb25zdGFudHMgb3IgbnVs
bC4gSWYgeW91ciBhdHRyaWJ1dGUgaXNuJ3QgaW4gaGVyZSwKKyAgICogaXQgd29uJ3QgZ2V0IHdy
aXR0ZW4gdG8gdGhlIERPTS4KKyAgICoKKyAgICogRE9NQXR0cmlidXRlTmFtZXM6IG9iamVjdCBt
YXBwaW5nIFJlYWN0IGF0dHJpYnV0ZSBuYW1lIHRvIHRoZSBET00KKyAgICogYXR0cmlidXRlIG5h
bWUuIEF0dHJpYnV0ZSBuYW1lcyBub3Qgc3BlY2lmaWVkIHVzZSB0aGUgKipsb3dlcmNhc2UqKgor
ICAgKiBub3JtYWxpemVkIG5hbWUuCisgICAqCisgICAqIERPTUF0dHJpYnV0ZU5hbWVzcGFjZXM6
IG9iamVjdCBtYXBwaW5nIFJlYWN0IGF0dHJpYnV0ZSBuYW1lIHRvIHRoZSBET00KKyAgICogYXR0
cmlidXRlIG5hbWVzcGFjZSBVUkwuIChBdHRyaWJ1dGUgbmFtZXMgbm90IHNwZWNpZmllZCB1c2Ug
bm8gbmFtZXNwYWNlLikKKyAgICoKKyAgICogRE9NUHJvcGVydHlOYW1lczogc2ltaWxhciB0byBE
T01BdHRyaWJ1dGVOYW1lcyBidXQgZm9yIERPTSBwcm9wZXJ0aWVzLgorICAgKiBQcm9wZXJ0eSBu
YW1lcyBub3Qgc3BlY2lmaWVkIHVzZSB0aGUgbm9ybWFsaXplZCBuYW1lLgorICAgKgorICAgKiBE
T01NdXRhdGlvbk1ldGhvZHM6IFByb3BlcnRpZXMgdGhhdCByZXF1aXJlIHNwZWNpYWwgbXV0YXRp
b24gbWV0aG9kcy4gSWYKKyAgICogYHZhbHVlYCBpcyB1bmRlZmluZWQsIHRoZSBtdXRhdGlvbiBt
ZXRob2Qgc2hvdWxkIHVuc2V0IHRoZSBwcm9wZXJ0eS4KKyAgICoKKyAgICogQHBhcmFtIHtvYmpl
Y3R9IGRvbVByb3BlcnR5Q29uZmlnIHRoZSBjb25maWcgYXMgZGVzY3JpYmVkIGFib3ZlLgorICAg
Ki8KKyAgaW5qZWN0RE9NUHJvcGVydHlDb25maWc6IGZ1bmN0aW9uIChkb21Qcm9wZXJ0eUNvbmZp
ZykgeworICAgIHZhciBJbmplY3Rpb24gPSBET01Qcm9wZXJ0eUluamVjdGlvbjsKKyAgICB2YXIg
UHJvcGVydGllcyA9IGRvbVByb3BlcnR5Q29uZmlnLlByb3BlcnRpZXMgfHwge307CisgICAgdmFy
IERPTUF0dHJpYnV0ZU5hbWVzcGFjZXMgPSBkb21Qcm9wZXJ0eUNvbmZpZy5ET01BdHRyaWJ1dGVO
YW1lc3BhY2VzIHx8IHt9OworICAgIHZhciBET01BdHRyaWJ1dGVOYW1lcyA9IGRvbVByb3BlcnR5
Q29uZmlnLkRPTUF0dHJpYnV0ZU5hbWVzIHx8IHt9OworICAgIHZhciBET01Qcm9wZXJ0eU5hbWVz
ID0gZG9tUHJvcGVydHlDb25maWcuRE9NUHJvcGVydHlOYW1lcyB8fCB7fTsKKyAgICB2YXIgRE9N
TXV0YXRpb25NZXRob2RzID0gZG9tUHJvcGVydHlDb25maWcuRE9NTXV0YXRpb25NZXRob2RzIHx8
IHt9OworCisgICAgaWYgKGRvbVByb3BlcnR5Q29uZmlnLmlzQ3VzdG9tQXR0cmlidXRlKSB7Cisg
ICAgICBET01Qcm9wZXJ0eS5faXNDdXN0b21BdHRyaWJ1dGVGdW5jdGlvbnMucHVzaChkb21Qcm9w
ZXJ0eUNvbmZpZy5pc0N1c3RvbUF0dHJpYnV0ZSk7CisgICAgfQorCisgICAgZm9yICh2YXIgcHJv
cE5hbWUgaW4gUHJvcGVydGllcykgeworICAgICAgISFET01Qcm9wZXJ0eS5wcm9wZXJ0aWVzLmhh
c093blByb3BlcnR5KHByb3BOYW1lKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/
IGludmFyaWFudChmYWxzZSwgJ2luamVjdERPTVByb3BlcnR5Q29uZmlnKC4uLik6IFlvdVwncmUg
dHJ5aW5nIHRvIGluamVjdCBET00gcHJvcGVydHkgXCclc1wnIHdoaWNoIGhhcyBhbHJlYWR5IGJl
ZW4gaW5qZWN0ZWQuIFlvdSBtYXkgYmUgYWNjaWRlbnRhbGx5IGluamVjdGluZyB0aGUgc2FtZSBE
T00gcHJvcGVydHkgY29uZmlnIHR3aWNlLCBvciB5b3UgbWF5IGJlIGluamVjdGluZyB0d28gY29u
ZmlncyB0aGF0IGhhdmUgY29uZmxpY3RpbmcgcHJvcGVydHkgbmFtZXMuJywgcHJvcE5hbWUpIDog
X3Byb2RJbnZhcmlhbnQoJzQ4JywgcHJvcE5hbWUpIDogdm9pZCAwOworCisgICAgICB2YXIgbG93
ZXJDYXNlZCA9IHByb3BOYW1lLnRvTG93ZXJDYXNlKCk7CisgICAgICB2YXIgcHJvcENvbmZpZyA9
IFByb3BlcnRpZXNbcHJvcE5hbWVdOworCisgICAgICB2YXIgcHJvcGVydHlJbmZvID0geworICAg
ICAgICBhdHRyaWJ1dGVOYW1lOiBsb3dlckNhc2VkLAorICAgICAgICBhdHRyaWJ1dGVOYW1lc3Bh
Y2U6IG51bGwsCisgICAgICAgIHByb3BlcnR5TmFtZTogcHJvcE5hbWUsCisgICAgICAgIG11dGF0
aW9uTWV0aG9kOiBudWxsLAorCisgICAgICAgIG11c3RVc2VQcm9wZXJ0eTogY2hlY2tNYXNrKHBy
b3BDb25maWcsIEluamVjdGlvbi5NVVNUX1VTRV9QUk9QRVJUWSksCisgICAgICAgIGhhc0Jvb2xl
YW5WYWx1ZTogY2hlY2tNYXNrKHByb3BDb25maWcsIEluamVjdGlvbi5IQVNfQk9PTEVBTl9WQUxV
RSksCisgICAgICAgIGhhc051bWVyaWNWYWx1ZTogY2hlY2tNYXNrKHByb3BDb25maWcsIEluamVj
dGlvbi5IQVNfTlVNRVJJQ19WQUxVRSksCisgICAgICAgIGhhc1Bvc2l0aXZlTnVtZXJpY1ZhbHVl
OiBjaGVja01hc2socHJvcENvbmZpZywgSW5qZWN0aW9uLkhBU19QT1NJVElWRV9OVU1FUklDX1ZB
TFVFKSwKKyAgICAgICAgaGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZTogY2hlY2tNYXNrKHByb3BD
b25maWcsIEluamVjdGlvbi5IQVNfT1ZFUkxPQURFRF9CT09MRUFOX1ZBTFVFKQorICAgICAgfTsK
KyAgICAgICEocHJvcGVydHlJbmZvLmhhc0Jvb2xlYW5WYWx1ZSArIHByb3BlcnR5SW5mby5oYXNO
dW1lcmljVmFsdWUgKyBwcm9wZXJ0eUluZm8uaGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZSA8PSAx
KSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0RP
TVByb3BlcnR5OiBWYWx1ZSBjYW4gYmUgb25lIG9mIGJvb2xlYW4sIG92ZXJsb2FkZWQgYm9vbGVh
biwgb3IgbnVtZXJpYyB2YWx1ZSwgYnV0IG5vdCBhIGNvbWJpbmF0aW9uOiAlcycsIHByb3BOYW1l
KSA6IF9wcm9kSW52YXJpYW50KCc1MCcsIHByb3BOYW1lKSA6IHZvaWQgMDsKKworICAgICAgaWYg
KCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgICBET01Qcm9wZXJ0eS5n
ZXRQb3NzaWJsZVN0YW5kYXJkTmFtZVtsb3dlckNhc2VkXSA9IHByb3BOYW1lOworICAgICAgfQor
CisgICAgICBpZiAoRE9NQXR0cmlidXRlTmFtZXMuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7
CisgICAgICAgIHZhciBhdHRyaWJ1dGVOYW1lID0gRE9NQXR0cmlidXRlTmFtZXNbcHJvcE5hbWVd
OworICAgICAgICBwcm9wZXJ0eUluZm8uYXR0cmlidXRlTmFtZSA9IGF0dHJpYnV0ZU5hbWU7Cisg
ICAgICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICAgICBE
T01Qcm9wZXJ0eS5nZXRQb3NzaWJsZVN0YW5kYXJkTmFtZVthdHRyaWJ1dGVOYW1lXSA9IHByb3BO
YW1lOworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIGlmIChET01BdHRyaWJ1dGVOYW1lc3Bh
Y2VzLmhhc093blByb3BlcnR5KHByb3BOYW1lKSkgeworICAgICAgICBwcm9wZXJ0eUluZm8uYXR0
cmlidXRlTmFtZXNwYWNlID0gRE9NQXR0cmlidXRlTmFtZXNwYWNlc1twcm9wTmFtZV07CisgICAg
ICB9CisKKyAgICAgIGlmIChET01Qcm9wZXJ0eU5hbWVzLmhhc093blByb3BlcnR5KHByb3BOYW1l
KSkgeworICAgICAgICBwcm9wZXJ0eUluZm8ucHJvcGVydHlOYW1lID0gRE9NUHJvcGVydHlOYW1l
c1twcm9wTmFtZV07CisgICAgICB9CisKKyAgICAgIGlmIChET01NdXRhdGlvbk1ldGhvZHMuaGFz
T3duUHJvcGVydHkocHJvcE5hbWUpKSB7CisgICAgICAgIHByb3BlcnR5SW5mby5tdXRhdGlvbk1l
dGhvZCA9IERPTU11dGF0aW9uTWV0aG9kc1twcm9wTmFtZV07CisgICAgICB9CisKKyAgICAgIERP
TVByb3BlcnR5LnByb3BlcnRpZXNbcHJvcE5hbWVdID0gcHJvcGVydHlJbmZvOworICAgIH0KKyAg
fQorfTsKKworLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiAqLwordmFyIEFUVFJJQlVURV9OQU1F
X1NUQVJUX0NIQVIgPSAnOkEtWl9hLXpcXHUwMEMwLVxcdTAwRDZcXHUwMEQ4LVxcdTAwRjZcXHUw
MEY4LVxcdTAyRkZcXHUwMzcwLVxcdTAzN0RcXHUwMzdGLVxcdTFGRkZcXHUyMDBDLVxcdTIwMERc
XHUyMDcwLVxcdTIxOEZcXHUyQzAwLVxcdTJGRUZcXHUzMDAxLVxcdUQ3RkZcXHVGOTAwLVxcdUZE
Q0ZcXHVGREYwLVxcdUZGRkQnOworLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuICovCisKKy8qKgor
ICogRE9NUHJvcGVydHkgZXhwb3J0cyBsb29rdXAgb2JqZWN0cyB0aGF0IGNhbiBiZSB1c2VkIGxp
a2UgZnVuY3Rpb25zOgorICoKKyAqICAgPiBET01Qcm9wZXJ0eS5pc1ZhbGlkWydpZCddCisgKiAg
IHRydWUKKyAqICAgPiBET01Qcm9wZXJ0eS5pc1ZhbGlkWydmb29iYXInXQorICogICB1bmRlZmlu
ZWQKKyAqCisgKiBBbHRob3VnaCB0aGlzIG1heSBiZSBjb25mdXNpbmcsIGl0IHBlcmZvcm1zIGJl
dHRlciBpbiBnZW5lcmFsLgorICoKKyAqIEBzZWUgaHR0cDovL2pzcGVyZi5jb20va2V5LWV4aXN0
cworICogQHNlZSBodHRwOi8vanNwZXJmLmNvbS9rZXktbWlzc2luZworICovCit2YXIgRE9NUHJv
cGVydHkgPSB7CisKKyAgSURfQVRUUklCVVRFX05BTUU6ICdkYXRhLXJlYWN0aWQnLAorICBST09U
X0FUVFJJQlVURV9OQU1FOiAnZGF0YS1yZWFjdHJvb3QnLAorCisgIEFUVFJJQlVURV9OQU1FX1NU
QVJUX0NIQVI6IEFUVFJJQlVURV9OQU1FX1NUQVJUX0NIQVIsCisgIEFUVFJJQlVURV9OQU1FX0NI
QVI6IEFUVFJJQlVURV9OQU1FX1NUQVJUX0NIQVIgKyAnXFwtLjAtOVxcdTAwQjdcXHUwMzAwLVxc
dTAzNkZcXHUyMDNGLVxcdTIwNDAnLAorCisgIC8qKgorICAgKiBNYXAgZnJvbSBwcm9wZXJ0eSAi
c3RhbmRhcmQgbmFtZSIgdG8gYW4gb2JqZWN0IHdpdGggaW5mbyBhYm91dCBob3cgdG8gc2V0Cisg
ICAqIHRoZSBwcm9wZXJ0eSBpbiB0aGUgRE9NLiBFYWNoIG9iamVjdCBjb250YWluczoKKyAgICoK
KyAgICogYXR0cmlidXRlTmFtZToKKyAgICogICBVc2VkIHdoZW4gcmVuZGVyaW5nIG1hcmt1cCBv
ciB3aXRoIGAqQXR0cmlidXRlKClgLgorICAgKiBhdHRyaWJ1dGVOYW1lc3BhY2UKKyAgICogcHJv
cGVydHlOYW1lOgorICAgKiAgIFVzZWQgb24gRE9NIG5vZGUgaW5zdGFuY2VzLiAoVGhpcyBpbmNs
dWRlcyBwcm9wZXJ0aWVzIHRoYXQgbXV0YXRlIGR1ZSB0bworICAgKiAgIGV4dGVybmFsIGZhY3Rv
cnMuKQorICAgKiBtdXRhdGlvbk1ldGhvZDoKKyAgICogICBJZiBub24tbnVsbCwgdXNlZCBpbnN0
ZWFkIG9mIHRoZSBwcm9wZXJ0eSBvciBgc2V0QXR0cmlidXRlKClgIGFmdGVyCisgICAqICAgaW5p
dGlhbCByZW5kZXIuCisgICAqIG11c3RVc2VQcm9wZXJ0eToKKyAgICogICBXaGV0aGVyIHRoZSBw
cm9wZXJ0eSBtdXN0IGJlIGFjY2Vzc2VkIGFuZCBtdXRhdGVkIGFzIGFuIG9iamVjdCBwcm9wZXJ0
eS4KKyAgICogaGFzQm9vbGVhblZhbHVlOgorICAgKiAgIFdoZXRoZXIgdGhlIHByb3BlcnR5IHNo
b3VsZCBiZSByZW1vdmVkIHdoZW4gc2V0IHRvIGEgZmFsc2V5IHZhbHVlLgorICAgKiBoYXNOdW1l
cmljVmFsdWU6CisgICAqICAgV2hldGhlciB0aGUgcHJvcGVydHkgbXVzdCBiZSBudW1lcmljIG9y
IHBhcnNlIGFzIGEgbnVtZXJpYyBhbmQgc2hvdWxkIGJlCisgICAqICAgcmVtb3ZlZCB3aGVuIHNl
dCB0byBhIGZhbHNleSB2YWx1ZS4KKyAgICogaGFzUG9zaXRpdmVOdW1lcmljVmFsdWU6CisgICAq
ICAgV2hldGhlciB0aGUgcHJvcGVydHkgbXVzdCBiZSBwb3NpdGl2ZSBudW1lcmljIG9yIHBhcnNl
IGFzIGEgcG9zaXRpdmUKKyAgICogICBudW1lcmljIGFuZCBzaG91bGQgYmUgcmVtb3ZlZCB3aGVu
IHNldCB0byBhIGZhbHNleSB2YWx1ZS4KKyAgICogaGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZToK
KyAgICogICBXaGV0aGVyIHRoZSBwcm9wZXJ0eSBjYW4gYmUgdXNlZCBhcyBhIGZsYWcgYXMgd2Vs
bCBhcyB3aXRoIGEgdmFsdWUuCisgICAqICAgUmVtb3ZlZCB3aGVuIHN0cmljdGx5IGVxdWFsIHRv
IGZhbHNlOyBwcmVzZW50IHdpdGhvdXQgYSB2YWx1ZSB3aGVuCisgICAqICAgc3RyaWN0bHkgZXF1
YWwgdG8gdHJ1ZTsgcHJlc2VudCB3aXRoIGEgdmFsdWUgb3RoZXJ3aXNlLgorICAgKi8KKyAgcHJv
cGVydGllczoge30sCisKKyAgLyoqCisgICAqIE1hcHBpbmcgZnJvbSBsb3dlcmNhc2UgcHJvcGVy
dHkgbmFtZXMgdG8gdGhlIHByb3Blcmx5IGNhc2VkIHZlcnNpb24sIHVzZWQKKyAgICogdG8gd2Fy
biBpbiB0aGUgY2FzZSBvZiBtaXNzaW5nIHByb3BlcnRpZXMuIEF2YWlsYWJsZSBvbmx5IGluIF9f
REVWX18uCisgICAqCisgICAqIGF1dG9mb2N1cyBpcyBwcmVkZWZpbmVkLCBiZWNhdXNlIGFkZGlu
ZyBpdCB0byB0aGUgcHJvcGVydHkgd2hpdGVsaXN0CisgICAqIGNhdXNlcyB1bmludGVuZGVkIHNp
ZGUgZWZmZWN0cy4KKyAgICoKKyAgICogQHR5cGUge09iamVjdH0KKyAgICovCisgIGdldFBvc3Np
YmxlU3RhbmRhcmROYW1lOiAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB7IGF1dG9m
b2N1czogJ2F1dG9Gb2N1cycgfSA6IG51bGwsCisKKyAgLyoqCisgICAqIEFsbCBvZiB0aGUgaXND
dXN0b21BdHRyaWJ1dGUoKSBmdW5jdGlvbnMgdGhhdCBoYXZlIGJlZW4gaW5qZWN0ZWQuCisgICAq
LworICBfaXNDdXN0b21BdHRyaWJ1dGVGdW5jdGlvbnM6IFtdLAorCisgIC8qKgorICAgKiBDaGVj
a3Mgd2hldGhlciBhIHByb3BlcnR5IG5hbWUgaXMgYSBjdXN0b20gYXR0cmlidXRlLgorICAgKiBA
bWV0aG9kCisgICAqLworICBpc0N1c3RvbUF0dHJpYnV0ZTogZnVuY3Rpb24gKGF0dHJpYnV0ZU5h
bWUpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IERPTVByb3BlcnR5Ll9pc0N1c3RvbUF0dHJp
YnV0ZUZ1bmN0aW9ucy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIGlzQ3VzdG9tQXR0cmlidXRl
Rm4gPSBET01Qcm9wZXJ0eS5faXNDdXN0b21BdHRyaWJ1dGVGdW5jdGlvbnNbaV07CisgICAgICBp
ZiAoaXNDdXN0b21BdHRyaWJ1dGVGbihhdHRyaWJ1dGVOYW1lKSkgeworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworICB9LAorCisgIGluamVj
dGlvbjogRE9NUHJvcGVydHlJbmplY3Rpb24KK307CisKK21vZHVsZS5leHBvcnRzID0gRE9NUHJv
cGVydHk7Cit9LHsiMTI1IjoxMjUsIjE1MCI6MTUwfV0sMTI6W2Z1bmN0aW9uKF9kZXJlcV8sbW9k
dWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhl
IFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3Ry
aWN0JzsKKwordmFyIERPTVByb3BlcnR5ID0gX2RlcmVxXygxMSk7Cit2YXIgUmVhY3RET01Db21w
b25lbnRUcmVlID0gX2RlcmVxXygzNCk7Cit2YXIgUmVhY3RJbnN0cnVtZW50YXRpb24gPSBfZGVy
ZXFfKDY0KTsKKwordmFyIHF1b3RlQXR0cmlidXRlVmFsdWVGb3JCcm93c2VyID0gX2RlcmVxXygx
MjQpOwordmFyIHdhcm5pbmcgPSBfZGVyZXFfKDE1Nyk7CisKK3ZhciBWQUxJRF9BVFRSSUJVVEVf
TkFNRV9SRUdFWCA9IG5ldyBSZWdFeHAoJ15bJyArIERPTVByb3BlcnR5LkFUVFJJQlVURV9OQU1F
X1NUQVJUX0NIQVIgKyAnXVsnICsgRE9NUHJvcGVydHkuQVRUUklCVVRFX05BTUVfQ0hBUiArICdd
KiQnKTsKK3ZhciBpbGxlZ2FsQXR0cmlidXRlTmFtZUNhY2hlID0ge307Cit2YXIgdmFsaWRhdGVk
QXR0cmlidXRlTmFtZUNhY2hlID0ge307CisKK2Z1bmN0aW9uIGlzQXR0cmlidXRlTmFtZVNhZmUo
YXR0cmlidXRlTmFtZSkgeworICBpZiAodmFsaWRhdGVkQXR0cmlidXRlTmFtZUNhY2hlLmhhc093
blByb3BlcnR5KGF0dHJpYnV0ZU5hbWUpKSB7CisgICAgcmV0dXJuIHRydWU7CisgIH0KKyAgaWYg
KGlsbGVnYWxBdHRyaWJ1dGVOYW1lQ2FjaGUuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkp
IHsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKyAgaWYgKFZBTElEX0FUVFJJQlVURV9OQU1FX1JF
R0VYLnRlc3QoYXR0cmlidXRlTmFtZSkpIHsKKyAgICB2YWxpZGF0ZWRBdHRyaWJ1dGVOYW1lQ2Fj
aGVbYXR0cmlidXRlTmFtZV0gPSB0cnVlOworICAgIHJldHVybiB0cnVlOworICB9CisgIGlsbGVn
YWxBdHRyaWJ1dGVOYW1lQ2FjaGVbYXR0cmlidXRlTmFtZV0gPSB0cnVlOworICAiZGV2ZWxvcG1l
bnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnSW52YWxpZCBhdHRyaWJ1dGUg
bmFtZTogYCVzYCcsIGF0dHJpYnV0ZU5hbWUpIDogdm9pZCAwOworICByZXR1cm4gZmFsc2U7Cit9
CisKK2Z1bmN0aW9uIHNob3VsZElnbm9yZVZhbHVlKHByb3BlcnR5SW5mbywgdmFsdWUpIHsKKyAg
cmV0dXJuIHZhbHVlID09IG51bGwgfHwgcHJvcGVydHlJbmZvLmhhc0Jvb2xlYW5WYWx1ZSAmJiAh
dmFsdWUgfHwgcHJvcGVydHlJbmZvLmhhc051bWVyaWNWYWx1ZSAmJiBpc05hTih2YWx1ZSkgfHwg
cHJvcGVydHlJbmZvLmhhc1Bvc2l0aXZlTnVtZXJpY1ZhbHVlICYmIHZhbHVlIDwgMSB8fCBwcm9w
ZXJ0eUluZm8uaGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZSAmJiB2YWx1ZSA9PT0gZmFsc2U7Cit9
CisKKy8qKgorICogT3BlcmF0aW9ucyBmb3IgZGVhbGluZyB3aXRoIERPTSBwcm9wZXJ0aWVzLgor
ICovCit2YXIgRE9NUHJvcGVydHlPcGVyYXRpb25zID0geworCisgIC8qKgorICAgKiBDcmVhdGVz
IG1hcmt1cCBmb3IgdGhlIElEIHByb3BlcnR5LgorICAgKgorICAgKiBAcGFyYW0ge3N0cmluZ30g
aWQgVW5lc2NhcGVkIElELgorICAgKiBAcmV0dXJuIHtzdHJpbmd9IE1hcmt1cCBzdHJpbmcuCisg
ICAqLworICBjcmVhdGVNYXJrdXBGb3JJRDogZnVuY3Rpb24gKGlkKSB7CisgICAgcmV0dXJuIERP
TVByb3BlcnR5LklEX0FUVFJJQlVURV9OQU1FICsgJz0nICsgcXVvdGVBdHRyaWJ1dGVWYWx1ZUZv
ckJyb3dzZXIoaWQpOworICB9LAorCisgIHNldEF0dHJpYnV0ZUZvcklEOiBmdW5jdGlvbiAobm9k
ZSwgaWQpIHsKKyAgICBub2RlLnNldEF0dHJpYnV0ZShET01Qcm9wZXJ0eS5JRF9BVFRSSUJVVEVf
TkFNRSwgaWQpOworICB9LAorCisgIGNyZWF0ZU1hcmt1cEZvclJvb3Q6IGZ1bmN0aW9uICgpIHsK
KyAgICByZXR1cm4gRE9NUHJvcGVydHkuUk9PVF9BVFRSSUJVVEVfTkFNRSArICc9IiInOworICB9
LAorCisgIHNldEF0dHJpYnV0ZUZvclJvb3Q6IGZ1bmN0aW9uIChub2RlKSB7CisgICAgbm9kZS5z
ZXRBdHRyaWJ1dGUoRE9NUHJvcGVydHkuUk9PVF9BVFRSSUJVVEVfTkFNRSwgJycpOworICB9LAor
CisgIC8qKgorICAgKiBDcmVhdGVzIG1hcmt1cCBmb3IgYSBwcm9wZXJ0eS4KKyAgICoKKyAgICog
QHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICogQHBhcmFtIHsqfSB2YWx1ZQorICAgKiBAcmV0dXJu
IHs/c3RyaW5nfSBNYXJrdXAgc3RyaW5nLCBvciBudWxsIGlmIHRoZSBwcm9wZXJ0eSB3YXMgaW52
YWxpZC4KKyAgICovCisgIGNyZWF0ZU1hcmt1cEZvclByb3BlcnR5OiBmdW5jdGlvbiAobmFtZSwg
dmFsdWUpIHsKKyAgICB2YXIgcHJvcGVydHlJbmZvID0gRE9NUHJvcGVydHkucHJvcGVydGllcy5o
YXNPd25Qcm9wZXJ0eShuYW1lKSA/IERPTVByb3BlcnR5LnByb3BlcnRpZXNbbmFtZV0gOiBudWxs
OworICAgIGlmIChwcm9wZXJ0eUluZm8pIHsKKyAgICAgIGlmIChzaG91bGRJZ25vcmVWYWx1ZShw
cm9wZXJ0eUluZm8sIHZhbHVlKSkgeworICAgICAgICByZXR1cm4gJyc7CisgICAgICB9CisgICAg
ICB2YXIgYXR0cmlidXRlTmFtZSA9IHByb3BlcnR5SW5mby5hdHRyaWJ1dGVOYW1lOworICAgICAg
aWYgKHByb3BlcnR5SW5mby5oYXNCb29sZWFuVmFsdWUgfHwgcHJvcGVydHlJbmZvLmhhc092ZXJs
b2FkZWRCb29sZWFuVmFsdWUgJiYgdmFsdWUgPT09IHRydWUpIHsKKyAgICAgICAgcmV0dXJuIGF0
dHJpYnV0ZU5hbWUgKyAnPSIiJzsKKyAgICAgIH0KKyAgICAgIHJldHVybiBhdHRyaWJ1dGVOYW1l
ICsgJz0nICsgcXVvdGVBdHRyaWJ1dGVWYWx1ZUZvckJyb3dzZXIodmFsdWUpOworICAgIH0gZWxz
ZSBpZiAoRE9NUHJvcGVydHkuaXNDdXN0b21BdHRyaWJ1dGUobmFtZSkpIHsKKyAgICAgIGlmICh2
YWx1ZSA9PSBudWxsKSB7CisgICAgICAgIHJldHVybiAnJzsKKyAgICAgIH0KKyAgICAgIHJldHVy
biBuYW1lICsgJz0nICsgcXVvdGVBdHRyaWJ1dGVWYWx1ZUZvckJyb3dzZXIodmFsdWUpOworICAg
IH0KKyAgICByZXR1cm4gbnVsbDsKKyAgfSwKKworICAvKioKKyAgICogQ3JlYXRlcyBtYXJrdXAg
Zm9yIGEgY3VzdG9tIHByb3BlcnR5LgorICAgKgorICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQor
ICAgKiBAcGFyYW0geyp9IHZhbHVlCisgICAqIEByZXR1cm4ge3N0cmluZ30gTWFya3VwIHN0cmlu
Zywgb3IgZW1wdHkgc3RyaW5nIGlmIHRoZSBwcm9wZXJ0eSB3YXMgaW52YWxpZC4KKyAgICovCisg
IGNyZWF0ZU1hcmt1cEZvckN1c3RvbUF0dHJpYnV0ZTogZnVuY3Rpb24gKG5hbWUsIHZhbHVlKSB7
CisgICAgaWYgKCFpc0F0dHJpYnV0ZU5hbWVTYWZlKG5hbWUpIHx8IHZhbHVlID09IG51bGwpIHsK
KyAgICAgIHJldHVybiAnJzsKKyAgICB9CisgICAgcmV0dXJuIG5hbWUgKyAnPScgKyBxdW90ZUF0
dHJpYnV0ZVZhbHVlRm9yQnJvd3Nlcih2YWx1ZSk7CisgIH0sCisKKyAgLyoqCisgICAqIFNldHMg
dGhlIHZhbHVlIGZvciBhIHByb3BlcnR5IG9uIGEgbm9kZS4KKyAgICoKKyAgICogQHBhcmFtIHtE
T01FbGVtZW50fSBub2RlCisgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAqIEBwYXJhbSB7
Kn0gdmFsdWUKKyAgICovCisgIHNldFZhbHVlRm9yUHJvcGVydHk6IGZ1bmN0aW9uIChub2RlLCBu
YW1lLCB2YWx1ZSkgeworICAgIHZhciBwcm9wZXJ0eUluZm8gPSBET01Qcm9wZXJ0eS5wcm9wZXJ0
aWVzLmhhc093blByb3BlcnR5KG5hbWUpID8gRE9NUHJvcGVydHkucHJvcGVydGllc1tuYW1lXSA6
IG51bGw7CisgICAgaWYgKHByb3BlcnR5SW5mbykgeworICAgICAgdmFyIG11dGF0aW9uTWV0aG9k
ID0gcHJvcGVydHlJbmZvLm11dGF0aW9uTWV0aG9kOworICAgICAgaWYgKG11dGF0aW9uTWV0aG9k
KSB7CisgICAgICAgIG11dGF0aW9uTWV0aG9kKG5vZGUsIHZhbHVlKTsKKyAgICAgIH0gZWxzZSBp
ZiAoc2hvdWxkSWdub3JlVmFsdWUocHJvcGVydHlJbmZvLCB2YWx1ZSkpIHsKKyAgICAgICAgdGhp
cy5kZWxldGVWYWx1ZUZvclByb3BlcnR5KG5vZGUsIG5hbWUpOworICAgICAgICByZXR1cm47Cisg
ICAgICB9IGVsc2UgaWYgKHByb3BlcnR5SW5mby5tdXN0VXNlUHJvcGVydHkpIHsKKyAgICAgICAg
Ly8gQ29udHJhcnkgdG8gYHNldEF0dHJpYnV0ZWAsIG9iamVjdCBwcm9wZXJ0aWVzIGFyZSBwcm9w
ZXJseQorICAgICAgICAvLyBgdG9TdHJpbmdgZWQgYnkgSUU4LzkuCisgICAgICAgIG5vZGVbcHJv
cGVydHlJbmZvLnByb3BlcnR5TmFtZV0gPSB2YWx1ZTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHZhciBhdHRyaWJ1dGVOYW1lID0gcHJvcGVydHlJbmZvLmF0dHJpYnV0ZU5hbWU7CisgICAgICAg
IHZhciBuYW1lc3BhY2UgPSBwcm9wZXJ0eUluZm8uYXR0cmlidXRlTmFtZXNwYWNlOworICAgICAg
ICAvLyBgc2V0QXR0cmlidXRlYCB3aXRoIG9iamVjdHMgYmVjb21lcyBvbmx5IGBbb2JqZWN0XWAg
aW4gSUU4LzksCisgICAgICAgIC8vICgnJyArIHZhbHVlKSBtYWtlcyBpdCBvdXRwdXQgdGhlIGNv
cnJlY3QgdG9TdHJpbmcoKS12YWx1ZS4KKyAgICAgICAgaWYgKG5hbWVzcGFjZSkgeworICAgICAg
ICAgIG5vZGUuc2V0QXR0cmlidXRlTlMobmFtZXNwYWNlLCBhdHRyaWJ1dGVOYW1lLCAnJyArIHZh
bHVlKTsKKyAgICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eUluZm8uaGFzQm9vbGVhblZhbHVlIHx8
IHByb3BlcnR5SW5mby5oYXNPdmVybG9hZGVkQm9vbGVhblZhbHVlICYmIHZhbHVlID09PSB0cnVl
KSB7CisgICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSwgJycpOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUs
ICcnICsgdmFsdWUpOworICAgICAgICB9CisgICAgICB9CisgICAgfSBlbHNlIGlmIChET01Qcm9w
ZXJ0eS5pc0N1c3RvbUF0dHJpYnV0ZShuYW1lKSkgeworICAgICAgRE9NUHJvcGVydHlPcGVyYXRp
b25zLnNldFZhbHVlRm9yQXR0cmlidXRlKG5vZGUsIG5hbWUsIHZhbHVlKTsKKyAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7Cisg
ICAgICB2YXIgcGF5bG9hZCA9IHt9OworICAgICAgcGF5bG9hZFtuYW1lXSA9IHZhbHVlOworICAg
ICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uSG9zdE9wZXJhdGlvbih7CisgICAg
ICAgIGluc3RhbmNlSUQ6IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRJbnN0YW5jZUZyb21Ob2Rl
KG5vZGUpLl9kZWJ1Z0lELAorICAgICAgICB0eXBlOiAndXBkYXRlIGF0dHJpYnV0ZScsCisgICAg
ICAgIHBheWxvYWQ6IHBheWxvYWQKKyAgICAgIH0pOworICAgIH0KKyAgfSwKKworICBzZXRWYWx1
ZUZvckF0dHJpYnV0ZTogZnVuY3Rpb24gKG5vZGUsIG5hbWUsIHZhbHVlKSB7CisgICAgaWYgKCFp
c0F0dHJpYnV0ZU5hbWVTYWZlKG5hbWUpKSB7CisgICAgICByZXR1cm47CisgICAgfQorICAgIGlm
ICh2YWx1ZSA9PSBudWxsKSB7CisgICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShuYW1lKTsKKyAg
ICB9IGVsc2UgeworICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUobmFtZSwgJycgKyB2YWx1ZSk7Cisg
ICAgfQorCisgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAg
dmFyIHBheWxvYWQgPSB7fTsKKyAgICAgIHBheWxvYWRbbmFtZV0gPSB2YWx1ZTsKKyAgICAgIFJl
YWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhvc3RPcGVyYXRpb24oeworICAgICAgICBp
bnN0YW5jZUlEOiBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0SW5zdGFuY2VGcm9tTm9kZShub2Rl
KS5fZGVidWdJRCwKKyAgICAgICAgdHlwZTogJ3VwZGF0ZSBhdHRyaWJ1dGUnLAorICAgICAgICBw
YXlsb2FkOiBwYXlsb2FkCisgICAgICB9KTsKKyAgICB9CisgIH0sCisKKyAgLyoqCisgICAqIERl
bGV0ZXMgYW4gYXR0cmlidXRlcyBmcm9tIGEgbm9kZS4KKyAgICoKKyAgICogQHBhcmFtIHtET01F
bGVtZW50fSBub2RlCisgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAqLworICBkZWxldGVW
YWx1ZUZvckF0dHJpYnV0ZTogZnVuY3Rpb24gKG5vZGUsIG5hbWUpIHsKKyAgICBub2RlLnJlbW92
ZUF0dHJpYnV0ZShuYW1lKTsKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24n
KSB7CisgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25Ib3N0T3BlcmF0aW9u
KHsKKyAgICAgICAgaW5zdGFuY2VJRDogUmVhY3RET01Db21wb25lbnRUcmVlLmdldEluc3RhbmNl
RnJvbU5vZGUobm9kZSkuX2RlYnVnSUQsCisgICAgICAgIHR5cGU6ICdyZW1vdmUgYXR0cmlidXRl
JywKKyAgICAgICAgcGF5bG9hZDogbmFtZQorICAgICAgfSk7CisgICAgfQorICB9LAorCisgIC8q
KgorICAgKiBEZWxldGVzIHRoZSB2YWx1ZSBmb3IgYSBwcm9wZXJ0eSBvbiBhIG5vZGUuCisgICAq
CisgICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gbm9kZQorICAgKiBAcGFyYW0ge3N0cmluZ30gbmFt
ZQorICAgKi8KKyAgZGVsZXRlVmFsdWVGb3JQcm9wZXJ0eTogZnVuY3Rpb24gKG5vZGUsIG5hbWUp
IHsKKyAgICB2YXIgcHJvcGVydHlJbmZvID0gRE9NUHJvcGVydHkucHJvcGVydGllcy5oYXNPd25Q
cm9wZXJ0eShuYW1lKSA/IERPTVByb3BlcnR5LnByb3BlcnRpZXNbbmFtZV0gOiBudWxsOworICAg
IGlmIChwcm9wZXJ0eUluZm8pIHsKKyAgICAgIHZhciBtdXRhdGlvbk1ldGhvZCA9IHByb3BlcnR5
SW5mby5tdXRhdGlvbk1ldGhvZDsKKyAgICAgIGlmIChtdXRhdGlvbk1ldGhvZCkgeworICAgICAg
ICBtdXRhdGlvbk1ldGhvZChub2RlLCB1bmRlZmluZWQpOworICAgICAgfSBlbHNlIGlmIChwcm9w
ZXJ0eUluZm8ubXVzdFVzZVByb3BlcnR5KSB7CisgICAgICAgIHZhciBwcm9wTmFtZSA9IHByb3Bl
cnR5SW5mby5wcm9wZXJ0eU5hbWU7CisgICAgICAgIGlmIChwcm9wZXJ0eUluZm8uaGFzQm9vbGVh
blZhbHVlKSB7CisgICAgICAgICAgbm9kZVtwcm9wTmFtZV0gPSBmYWxzZTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICBub2RlW3Byb3BOYW1lXSA9ICcnOworICAgICAgICB9CisgICAgICB9
IGVsc2UgeworICAgICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShwcm9wZXJ0eUluZm8uYXR0cmli
dXRlTmFtZSk7CisgICAgICB9CisgICAgfSBlbHNlIGlmIChET01Qcm9wZXJ0eS5pc0N1c3RvbUF0
dHJpYnV0ZShuYW1lKSkgeworICAgICAgbm9kZS5yZW1vdmVBdHRyaWJ1dGUobmFtZSk7CisgICAg
fQorCisgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgUmVh
Y3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uSG9zdE9wZXJhdGlvbih7CisgICAgICAgIGlu
c3RhbmNlSUQ6IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRJbnN0YW5jZUZyb21Ob2RlKG5vZGUp
Ll9kZWJ1Z0lELAorICAgICAgICB0eXBlOiAncmVtb3ZlIGF0dHJpYnV0ZScsCisgICAgICAgIHBh
eWxvYWQ6IG5hbWUKKyAgICAgIH0pOworICAgIH0KKyAgfQorCit9OworCittb2R1bGUuZXhwb3J0
cyA9IERPTVByb3BlcnR5T3BlcmF0aW9uczsKK30seyIxMSI6MTEsIjEyNCI6MTI0LCIxNTciOjE1
NywiMzQiOjM0LCI2NCI6NjR9XSwxMzpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7
CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5k
ZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdy
YW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxl
IGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIg
X3Byb2RJbnZhcmlhbnQgPSBfZGVyZXFfKDEyNSk7CisKK3ZhciBET01MYXp5VHJlZSA9IF9kZXJl
cV8oOSk7Cit2YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSBfZGVyZXFfKDEzNik7CisKK3ZhciBj
cmVhdGVOb2Rlc0Zyb21NYXJrdXAgPSBfZGVyZXFfKDE0MSk7Cit2YXIgZW1wdHlGdW5jdGlvbiA9
IF9kZXJlcV8oMTQyKTsKK3ZhciBpbnZhcmlhbnQgPSBfZGVyZXFfKDE1MCk7CisKK3ZhciBEYW5n
ZXIgPSB7CisKKyAgLyoqCisgICAqIFJlcGxhY2VzIGEgbm9kZSB3aXRoIGEgc3RyaW5nIG9mIG1h
cmt1cCBhdCBpdHMgY3VycmVudCBwb3NpdGlvbiB3aXRoaW4gaXRzCisgICAqIHBhcmVudC4gVGhl
IG1hcmt1cCBtdXN0IHJlbmRlciBpbnRvIGEgc2luZ2xlIHJvb3Qgbm9kZS4KKyAgICoKKyAgICog
QHBhcmFtIHtET01FbGVtZW50fSBvbGRDaGlsZCBDaGlsZCBub2RlIHRvIHJlcGxhY2UuCisgICAq
IEBwYXJhbSB7c3RyaW5nfSBtYXJrdXAgTWFya3VwIHRvIHJlbmRlciBpbiBwbGFjZSBvZiB0aGUg
Y2hpbGQgbm9kZS4KKyAgICogQGludGVybmFsCisgICAqLworICBkYW5nZXJvdXNseVJlcGxhY2VO
b2RlV2l0aE1hcmt1cDogZnVuY3Rpb24gKG9sZENoaWxkLCBtYXJrdXApIHsKKyAgICAhRXhlY3V0
aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24n
ID8gaW52YXJpYW50KGZhbHNlLCAnZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXAoLi4u
KTogQ2Fubm90IHJlbmRlciBtYXJrdXAgaW4gYSB3b3JrZXIgdGhyZWFkLiBNYWtlIHN1cmUgYHdp
bmRvd2AgYW5kIGBkb2N1bWVudGAgYXJlIGF2YWlsYWJsZSBnbG9iYWxseSBiZWZvcmUgcmVxdWly
aW5nIFJlYWN0IHdoZW4gdW5pdCB0ZXN0aW5nIG9yIHVzZSBSZWFjdERPTVNlcnZlci5yZW5kZXJU
b1N0cmluZygpIGZvciBzZXJ2ZXIgcmVuZGVyaW5nLicpIDogX3Byb2RJbnZhcmlhbnQoJzU2Jykg
OiB2b2lkIDA7CisgICAgIW1hcmt1cCA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/
IGludmFyaWFudChmYWxzZSwgJ2Rhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwKC4uLik6
IE1pc3NpbmcgbWFya3VwLicpIDogX3Byb2RJbnZhcmlhbnQoJzU3JykgOiB2b2lkIDA7CisgICAg
IShvbGRDaGlsZC5ub2RlTmFtZSAhPT0gJ0hUTUwnKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9k
dWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2Rhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFy
a3VwKC4uLik6IENhbm5vdCByZXBsYWNlIG1hcmt1cCBvZiB0aGUgPGh0bWw+IG5vZGUuIFRoaXMg
aXMgYmVjYXVzZSBicm93c2VyIHF1aXJrcyBtYWtlIHRoaXMgdW5yZWxpYWJsZSBhbmQvb3Igc2xv
dy4gSWYgeW91IHdhbnQgdG8gcmVuZGVyIHRvIHRoZSByb290IHlvdSBtdXN0IHVzZSBzZXJ2ZXIg
cmVuZGVyaW5nLiBTZWUgUmVhY3RET01TZXJ2ZXIucmVuZGVyVG9TdHJpbmcoKS4nKSA6IF9wcm9k
SW52YXJpYW50KCc1OCcpIDogdm9pZCAwOworCisgICAgaWYgKHR5cGVvZiBtYXJrdXAgPT09ICdz
dHJpbmcnKSB7CisgICAgICB2YXIgbmV3Q2hpbGQgPSBjcmVhdGVOb2Rlc0Zyb21NYXJrdXAobWFy
a3VwLCBlbXB0eUZ1bmN0aW9uKVswXTsKKyAgICAgIG9sZENoaWxkLnBhcmVudE5vZGUucmVwbGFj
ZUNoaWxkKG5ld0NoaWxkLCBvbGRDaGlsZCk7CisgICAgfSBlbHNlIHsKKyAgICAgIERPTUxhenlU
cmVlLnJlcGxhY2VDaGlsZFdpdGhUcmVlKG9sZENoaWxkLCBtYXJrdXApOworICAgIH0KKyAgfQor
Cit9OworCittb2R1bGUuZXhwb3J0cyA9IERhbmdlcjsKK30seyIxMjUiOjEyNSwiMTM2IjoxMzYs
IjE0MSI6MTQxLCIxNDIiOjE0MiwiMTUwIjoxNTAsIjkiOjl9XSwxNDpbZnVuY3Rpb24oX2RlcmVx
Xyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNv
ZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQor
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBp
biB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3Vz
ZSBzdHJpY3QnOworCisvKioKKyAqIE1vZHVsZSB0aGF0IGlzIGluamVjdGFibGUgaW50byBgRXZl
bnRQbHVnaW5IdWJgLCB0aGF0IHNwZWNpZmllcyBhCisgKiBkZXRlcm1pbmlzdGljIG9yZGVyaW5n
IG9mIGBFdmVudFBsdWdpbmBzLiBBIGNvbnZlbmllbnQgd2F5IHRvIHJlYXNvbiBhYm91dAorICog
cGx1Z2lucywgd2l0aG91dCBoYXZpbmcgdG8gcGFja2FnZSBldmVyeSBvbmUgb2YgdGhlbS4gVGhp
cyBpcyBiZXR0ZXIgdGhhbgorICogaGF2aW5nIHBsdWdpbnMgYmUgb3JkZXJlZCBpbiB0aGUgc2Ft
ZSBvcmRlciB0aGF0IHRoZXkgYXJlIGluamVjdGVkIGJlY2F1c2UKKyAqIHRoYXQgb3JkZXJpbmcg
d291bGQgYmUgaW5mbHVlbmNlZCBieSB0aGUgcGFja2FnaW5nIG9yZGVyLgorICogYFJlc3BvbmRl
ckV2ZW50UGx1Z2luYCBtdXN0IG9jY3VyIGJlZm9yZSBgU2ltcGxlRXZlbnRQbHVnaW5gIHNvIHRo
YXQKKyAqIHByZXZlbnRpbmcgZGVmYXVsdCBvbiBldmVudHMgaXMgY29udmVuaWVudCBpbiBgU2lt
cGxlRXZlbnRQbHVnaW5gIGhhbmRsZXJzLgorICovCisKK3ZhciBEZWZhdWx0RXZlbnRQbHVnaW5P
cmRlciA9IFsnUmVzcG9uZGVyRXZlbnRQbHVnaW4nLCAnU2ltcGxlRXZlbnRQbHVnaW4nLCAnVGFw
RXZlbnRQbHVnaW4nLCAnRW50ZXJMZWF2ZUV2ZW50UGx1Z2luJywgJ0NoYW5nZUV2ZW50UGx1Z2lu
JywgJ1NlbGVjdEV2ZW50UGx1Z2luJywgJ0JlZm9yZUlucHV0RXZlbnRQbHVnaW4nXTsKKworbW9k
dWxlLmV4cG9ydHMgPSBEZWZhdWx0RXZlbnRQbHVnaW5PcmRlcjsKK30se31dLDE1OltmdW5jdGlv
bihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2Vu
dCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBz
b3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQg
aW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291
cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJl
IGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAq
LworCisndXNlIHN0cmljdCc7CisKK3ZhciBFdmVudFByb3BhZ2F0b3JzID0gX2RlcmVxXygyMCk7
Cit2YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gX2RlcmVxXygzNCk7Cit2YXIgU3ludGhldGlj
TW91c2VFdmVudCA9IF9kZXJlcV8oOTUpOworCit2YXIgZXZlbnRUeXBlcyA9IHsKKyAgbW91c2VF
bnRlcjogeworICAgIHJlZ2lzdHJhdGlvbk5hbWU6ICdvbk1vdXNlRW50ZXInLAorICAgIGRlcGVu
ZGVuY2llczogWyd0b3BNb3VzZU91dCcsICd0b3BNb3VzZU92ZXInXQorICB9LAorICBtb3VzZUxl
YXZlOiB7CisgICAgcmVnaXN0cmF0aW9uTmFtZTogJ29uTW91c2VMZWF2ZScsCisgICAgZGVwZW5k
ZW5jaWVzOiBbJ3RvcE1vdXNlT3V0JywgJ3RvcE1vdXNlT3ZlciddCisgIH0KK307CisKK3ZhciBF
bnRlckxlYXZlRXZlbnRQbHVnaW4gPSB7CisKKyAgZXZlbnRUeXBlczogZXZlbnRUeXBlcywKKwor
ICAvKioKKyAgICogRm9yIGFsbW9zdCBldmVyeSBpbnRlcmFjdGlvbiB3ZSBjYXJlIGFib3V0LCB0
aGVyZSB3aWxsIGJlIGJvdGggYSB0b3AtbGV2ZWwKKyAgICogYG1vdXNlb3ZlcmAgYW5kIGBtb3Vz
ZW91dGAgZXZlbnQgdGhhdCBvY2N1cnMuIE9ubHkgdXNlIGBtb3VzZW91dGAgc28gdGhhdAorICAg
KiB3ZSBkbyBub3QgZXh0cmFjdCBkdXBsaWNhdGUgZXZlbnRzLiBIb3dldmVyLCBtb3ZpbmcgdGhl
IG1vdXNlIGludG8gdGhlCisgICAqIGJyb3dzZXIgZnJvbSBvdXRzaWRlIHdpbGwgbm90IGZpcmUg
YSBgbW91c2VvdXRgIGV2ZW50LiBJbiB0aGlzIGNhc2UsIHdlIHVzZQorICAgKiB0aGUgYG1vdXNl
b3ZlcmAgdG9wLWxldmVsIGV2ZW50LgorICAgKi8KKyAgZXh0cmFjdEV2ZW50czogZnVuY3Rpb24g
KHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0
KSB7CisgICAgaWYgKHRvcExldmVsVHlwZSA9PT0gJ3RvcE1vdXNlT3ZlcicgJiYgKG5hdGl2ZUV2
ZW50LnJlbGF0ZWRUYXJnZXQgfHwgbmF0aXZlRXZlbnQuZnJvbUVsZW1lbnQpKSB7CisgICAgICBy
ZXR1cm4gbnVsbDsKKyAgICB9CisgICAgaWYgKHRvcExldmVsVHlwZSAhPT0gJ3RvcE1vdXNlT3V0
JyAmJiB0b3BMZXZlbFR5cGUgIT09ICd0b3BNb3VzZU92ZXInKSB7CisgICAgICAvLyBNdXN0IG5v
dCBiZSBhIG1vdXNlIGluIG9yIG1vdXNlIG91dCAtIGlnbm9yaW5nLgorICAgICAgcmV0dXJuIG51
bGw7CisgICAgfQorCisgICAgdmFyIHdpbjsKKyAgICBpZiAobmF0aXZlRXZlbnRUYXJnZXQud2lu
ZG93ID09PSBuYXRpdmVFdmVudFRhcmdldCkgeworICAgICAgLy8gYG5hdGl2ZUV2ZW50VGFyZ2V0
YCBpcyBwcm9iYWJseSBhIHdpbmRvdyBvYmplY3QuCisgICAgICB3aW4gPSBuYXRpdmVFdmVudFRh
cmdldDsKKyAgICB9IGVsc2UgeworICAgICAgLy8gVE9ETzogRmlndXJlIG91dCB3aHkgYG93bmVy
RG9jdW1lbnRgIGlzIHNvbWV0aW1lcyB1bmRlZmluZWQgaW4gSUU4LgorICAgICAgdmFyIGRvYyA9
IG5hdGl2ZUV2ZW50VGFyZ2V0Lm93bmVyRG9jdW1lbnQ7CisgICAgICBpZiAoZG9jKSB7CisgICAg
ICAgIHdpbiA9IGRvYy5kZWZhdWx0VmlldyB8fCBkb2MucGFyZW50V2luZG93OworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgd2luID0gd2luZG93OworICAgICAgfQorICAgIH0KKworICAgIHZhciBm
cm9tOworICAgIHZhciB0bzsKKyAgICBpZiAodG9wTGV2ZWxUeXBlID09PSAndG9wTW91c2VPdXQn
KSB7CisgICAgICBmcm9tID0gdGFyZ2V0SW5zdDsKKyAgICAgIHZhciByZWxhdGVkID0gbmF0aXZl
RXZlbnQucmVsYXRlZFRhcmdldCB8fCBuYXRpdmVFdmVudC50b0VsZW1lbnQ7CisgICAgICB0byA9
IHJlbGF0ZWQgPyBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5v
ZGUocmVsYXRlZCkgOiBudWxsOworICAgIH0gZWxzZSB7CisgICAgICAvLyBNb3ZpbmcgdG8gYSBu
b2RlIGZyb20gb3V0c2lkZSB0aGUgd2luZG93LgorICAgICAgZnJvbSA9IG51bGw7CisgICAgICB0
byA9IHRhcmdldEluc3Q7CisgICAgfQorCisgICAgaWYgKGZyb20gPT09IHRvKSB7CisgICAgICAv
LyBOb3RoaW5nIHBlcnRhaW5zIHRvIG91ciBtYW5hZ2VkIGNvbXBvbmVudHMuCisgICAgICByZXR1
cm4gbnVsbDsKKyAgICB9CisKKyAgICB2YXIgZnJvbU5vZGUgPSBmcm9tID09IG51bGwgPyB3aW4g
OiBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZShmcm9tKTsKKyAgICB2
YXIgdG9Ob2RlID0gdG8gPT0gbnVsbCA/IHdpbiA6IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRO
b2RlRnJvbUluc3RhbmNlKHRvKTsKKworICAgIHZhciBsZWF2ZSA9IFN5bnRoZXRpY01vdXNlRXZl
bnQuZ2V0UG9vbGVkKGV2ZW50VHlwZXMubW91c2VMZWF2ZSwgZnJvbSwgbmF0aXZlRXZlbnQsIG5h
dGl2ZUV2ZW50VGFyZ2V0KTsKKyAgICBsZWF2ZS50eXBlID0gJ21vdXNlbGVhdmUnOworICAgIGxl
YXZlLnRhcmdldCA9IGZyb21Ob2RlOworICAgIGxlYXZlLnJlbGF0ZWRUYXJnZXQgPSB0b05vZGU7
CisKKyAgICB2YXIgZW50ZXIgPSBTeW50aGV0aWNNb3VzZUV2ZW50LmdldFBvb2xlZChldmVudFR5
cGVzLm1vdXNlRW50ZXIsIHRvLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpOworICAg
IGVudGVyLnR5cGUgPSAnbW91c2VlbnRlcic7CisgICAgZW50ZXIudGFyZ2V0ID0gdG9Ob2RlOwor
ICAgIGVudGVyLnJlbGF0ZWRUYXJnZXQgPSBmcm9tTm9kZTsKKworICAgIEV2ZW50UHJvcGFnYXRv
cnMuYWNjdW11bGF0ZUVudGVyTGVhdmVEaXNwYXRjaGVzKGxlYXZlLCBlbnRlciwgZnJvbSwgdG8p
OworCisgICAgcmV0dXJuIFtsZWF2ZSwgZW50ZXJdOworICB9CisKK307CisKK21vZHVsZS5leHBv
cnRzID0gRW50ZXJMZWF2ZUV2ZW50UGx1Z2luOworfSx7IjIwIjoyMCwiMzQiOjM0LCI5NSI6OTV9
XSwxNjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdo
dCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBs
aWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9y
eSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQg
cmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVj
dG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCisvKioKKyAqIFR5cGVzIG9mIHJhdyBz
aWduYWxzIGZyb20gdGhlIGJyb3dzZXIgY2F1Z2h0IGF0IHRoZSB0b3AgbGV2ZWwuCisgKi8KK3Zh
ciB0b3BMZXZlbFR5cGVzID0geworICB0b3BBYm9ydDogbnVsbCwKKyAgdG9wQW5pbWF0aW9uRW5k
OiBudWxsLAorICB0b3BBbmltYXRpb25JdGVyYXRpb246IG51bGwsCisgIHRvcEFuaW1hdGlvblN0
YXJ0OiBudWxsLAorICB0b3BCbHVyOiBudWxsLAorICB0b3BDYW5QbGF5OiBudWxsLAorICB0b3BD
YW5QbGF5VGhyb3VnaDogbnVsbCwKKyAgdG9wQ2hhbmdlOiBudWxsLAorICB0b3BDbGljazogbnVs
bCwKKyAgdG9wQ29tcG9zaXRpb25FbmQ6IG51bGwsCisgIHRvcENvbXBvc2l0aW9uU3RhcnQ6IG51
bGwsCisgIHRvcENvbXBvc2l0aW9uVXBkYXRlOiBudWxsLAorICB0b3BDb250ZXh0TWVudTogbnVs
bCwKKyAgdG9wQ29weTogbnVsbCwKKyAgdG9wQ3V0OiBudWxsLAorICB0b3BEb3VibGVDbGljazog
bnVsbCwKKyAgdG9wRHJhZzogbnVsbCwKKyAgdG9wRHJhZ0VuZDogbnVsbCwKKyAgdG9wRHJhZ0Vu
dGVyOiBudWxsLAorICB0b3BEcmFnRXhpdDogbnVsbCwKKyAgdG9wRHJhZ0xlYXZlOiBudWxsLAor
ICB0b3BEcmFnT3ZlcjogbnVsbCwKKyAgdG9wRHJhZ1N0YXJ0OiBudWxsLAorICB0b3BEcm9wOiBu
dWxsLAorICB0b3BEdXJhdGlvbkNoYW5nZTogbnVsbCwKKyAgdG9wRW1wdGllZDogbnVsbCwKKyAg
dG9wRW5jcnlwdGVkOiBudWxsLAorICB0b3BFbmRlZDogbnVsbCwKKyAgdG9wRXJyb3I6IG51bGws
CisgIHRvcEZvY3VzOiBudWxsLAorICB0b3BJbnB1dDogbnVsbCwKKyAgdG9wSW52YWxpZDogbnVs
bCwKKyAgdG9wS2V5RG93bjogbnVsbCwKKyAgdG9wS2V5UHJlc3M6IG51bGwsCisgIHRvcEtleVVw
OiBudWxsLAorICB0b3BMb2FkOiBudWxsLAorICB0b3BMb2FkZWREYXRhOiBudWxsLAorICB0b3BM
b2FkZWRNZXRhZGF0YTogbnVsbCwKKyAgdG9wTG9hZFN0YXJ0OiBudWxsLAorICB0b3BNb3VzZURv
d246IG51bGwsCisgIHRvcE1vdXNlTW92ZTogbnVsbCwKKyAgdG9wTW91c2VPdXQ6IG51bGwsCisg
IHRvcE1vdXNlT3ZlcjogbnVsbCwKKyAgdG9wTW91c2VVcDogbnVsbCwKKyAgdG9wUGFzdGU6IG51
bGwsCisgIHRvcFBhdXNlOiBudWxsLAorICB0b3BQbGF5OiBudWxsLAorICB0b3BQbGF5aW5nOiBu
dWxsLAorICB0b3BQcm9ncmVzczogbnVsbCwKKyAgdG9wUmF0ZUNoYW5nZTogbnVsbCwKKyAgdG9w
UmVzZXQ6IG51bGwsCisgIHRvcFNjcm9sbDogbnVsbCwKKyAgdG9wU2Vla2VkOiBudWxsLAorICB0
b3BTZWVraW5nOiBudWxsLAorICB0b3BTZWxlY3Rpb25DaGFuZ2U6IG51bGwsCisgIHRvcFN0YWxs
ZWQ6IG51bGwsCisgIHRvcFN1Ym1pdDogbnVsbCwKKyAgdG9wU3VzcGVuZDogbnVsbCwKKyAgdG9w
VGV4dElucHV0OiBudWxsLAorICB0b3BUaW1lVXBkYXRlOiBudWxsLAorICB0b3BUb3VjaENhbmNl
bDogbnVsbCwKKyAgdG9wVG91Y2hFbmQ6IG51bGwsCisgIHRvcFRvdWNoTW92ZTogbnVsbCwKKyAg
dG9wVG91Y2hTdGFydDogbnVsbCwKKyAgdG9wVHJhbnNpdGlvbkVuZDogbnVsbCwKKyAgdG9wVm9s
dW1lQ2hhbmdlOiBudWxsLAorICB0b3BXYWl0aW5nOiBudWxsLAorICB0b3BXaGVlbDogbnVsbAor
fTsKKwordmFyIEV2ZW50Q29uc3RhbnRzID0geworICB0b3BMZXZlbFR5cGVzOiB0b3BMZXZlbFR5
cGVzCit9OworCittb2R1bGUuZXhwb3J0cyA9IEV2ZW50Q29uc3RhbnRzOworfSx7fV0sMTc6W2Z1
bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1w
cmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBU
aGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBm
b3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBj
YW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisg
KgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9wcm9kSW52YXJpYW50ID0gX2RlcmVxXygx
MjUpOworCit2YXIgRXZlbnRQbHVnaW5SZWdpc3RyeSA9IF9kZXJlcV8oMTgpOwordmFyIEV2ZW50
UGx1Z2luVXRpbHMgPSBfZGVyZXFfKDE5KTsKK3ZhciBSZWFjdEVycm9yVXRpbHMgPSBfZGVyZXFf
KDU1KTsKKwordmFyIGFjY3VtdWxhdGVJbnRvID0gX2RlcmVxXygxMDIpOwordmFyIGZvckVhY2hB
Y2N1bXVsYXRlZCA9IF9kZXJlcV8oMTEwKTsKK3ZhciBpbnZhcmlhbnQgPSBfZGVyZXFfKDE1MCk7
CisKKy8qKgorICogSW50ZXJuYWwgc3RvcmUgZm9yIGV2ZW50IGxpc3RlbmVycworICovCit2YXIg
bGlzdGVuZXJCYW5rID0ge307CisKKy8qKgorICogSW50ZXJuYWwgcXVldWUgb2YgZXZlbnRzIHRo
YXQgaGF2ZSBhY2N1bXVsYXRlZCB0aGVpciBkaXNwYXRjaGVzIGFuZCBhcmUKKyAqIHdhaXRpbmcg
dG8gaGF2ZSB0aGVpciBkaXNwYXRjaGVzIGV4ZWN1dGVkLgorICovCit2YXIgZXZlbnRRdWV1ZSA9
IG51bGw7CisKKy8qKgorICogRGlzcGF0Y2hlcyBhbiBldmVudCBhbmQgcmVsZWFzZXMgaXQgYmFj
ayBpbnRvIHRoZSBwb29sLCB1bmxlc3MgcGVyc2lzdGVudC4KKyAqCisgKiBAcGFyYW0gez9vYmpl
Y3R9IGV2ZW50IFN5bnRoZXRpYyBldmVudCB0byBiZSBkaXNwYXRjaGVkLgorICogQHBhcmFtIHti
b29sZWFufSBzaW11bGF0ZWQgSWYgdGhlIGV2ZW50IGlzIHNpbXVsYXRlZCAoY2hhbmdlcyBleG4g
YmVoYXZpb3IpCisgKiBAcHJpdmF0ZQorICovCit2YXIgZXhlY3V0ZURpc3BhdGNoZXNBbmRSZWxl
YXNlID0gZnVuY3Rpb24gKGV2ZW50LCBzaW11bGF0ZWQpIHsKKyAgaWYgKGV2ZW50KSB7CisgICAg
RXZlbnRQbHVnaW5VdGlscy5leGVjdXRlRGlzcGF0Y2hlc0luT3JkZXIoZXZlbnQsIHNpbXVsYXRl
ZCk7CisKKyAgICBpZiAoIWV2ZW50LmlzUGVyc2lzdGVudCgpKSB7CisgICAgICBldmVudC5jb25z
dHJ1Y3Rvci5yZWxlYXNlKGV2ZW50KTsKKyAgICB9CisgIH0KK307Cit2YXIgZXhlY3V0ZURpc3Bh
dGNoZXNBbmRSZWxlYXNlU2ltdWxhdGVkID0gZnVuY3Rpb24gKGUpIHsKKyAgcmV0dXJuIGV4ZWN1
dGVEaXNwYXRjaGVzQW5kUmVsZWFzZShlLCB0cnVlKTsKK307Cit2YXIgZXhlY3V0ZURpc3BhdGNo
ZXNBbmRSZWxlYXNlVG9wTGV2ZWwgPSBmdW5jdGlvbiAoZSkgeworICByZXR1cm4gZXhlY3V0ZURp
c3BhdGNoZXNBbmRSZWxlYXNlKGUsIGZhbHNlKTsKK307CisKK3ZhciBnZXREaWN0aW9uYXJ5S2V5
ID0gZnVuY3Rpb24gKGluc3QpIHsKKyAgLy8gUHJldmVudHMgVjggcGVyZm9ybWFuY2UgaXNzdWU6
CisgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9wdWxsLzcyMzIKKyAgcmV0
dXJuICcuJyArIGluc3QuX3Jvb3ROb2RlSUQ7Cit9OworCisvKioKKyAqIFRoaXMgaXMgYSB1bmlm
aWVkIGludGVyZmFjZSBmb3IgZXZlbnQgcGx1Z2lucyB0byBiZSBpbnN0YWxsZWQgYW5kIGNvbmZp
Z3VyZWQuCisgKgorICogRXZlbnQgcGx1Z2lucyBjYW4gaW1wbGVtZW50IHRoZSBmb2xsb3dpbmcg
cHJvcGVydGllczoKKyAqCisgKiAgIGBleHRyYWN0RXZlbnRzYCB7ZnVuY3Rpb24oc3RyaW5nLCBE
T01FdmVudFRhcmdldCwgc3RyaW5nLCBvYmplY3QpOiAqfQorICogICAgIFJlcXVpcmVkLiBXaGVu
IGEgdG9wLWxldmVsIGV2ZW50IGlzIGZpcmVkLCB0aGlzIG1ldGhvZCBpcyBleHBlY3RlZCB0bwor
ICogICAgIGV4dHJhY3Qgc3ludGhldGljIGV2ZW50cyB0aGF0IHdpbGwgaW4gdHVybiBiZSBxdWV1
ZWQgYW5kIGRpc3BhdGNoZWQuCisgKgorICogICBgZXZlbnRUeXBlc2Age29iamVjdH0KKyAqICAg
ICBPcHRpb25hbCwgcGx1Z2lucyB0aGF0IGZpcmUgZXZlbnRzIG11c3QgcHVibGlzaCBhIG1hcHBp
bmcgb2YgcmVnaXN0cmF0aW9uCisgKiAgICAgbmFtZXMgdGhhdCBhcmUgdXNlZCB0byByZWdpc3Rl
ciBsaXN0ZW5lcnMuIFZhbHVlcyBvZiB0aGlzIG1hcHBpbmcgbXVzdAorICogICAgIGJlIG9iamVj
dHMgdGhhdCBjb250YWluIGByZWdpc3RyYXRpb25OYW1lYCBvciBgcGhhc2VkUmVnaXN0cmF0aW9u
TmFtZXNgLgorICoKKyAqICAgYGV4ZWN1dGVEaXNwYXRjaGAge2Z1bmN0aW9uKG9iamVjdCwgZnVu
Y3Rpb24sIHN0cmluZyl9CisgKiAgICAgT3B0aW9uYWwsIGFsbG93cyBwbHVnaW5zIHRvIG92ZXJy
aWRlIGhvdyBhbiBldmVudCBnZXRzIGRpc3BhdGNoZWQuIEJ5CisgKiAgICAgZGVmYXVsdCwgdGhl
IGxpc3RlbmVyIGlzIHNpbXBseSBpbnZva2VkLgorICoKKyAqIEVhY2ggcGx1Z2luIHRoYXQgaXMg
aW5qZWN0ZWQgaW50byBgRXZlbnRzUGx1Z2luSHViYCBpcyBpbW1lZGlhdGVseSBvcGVyYWJsZS4K
KyAqCisgKiBAcHVibGljCisgKi8KK3ZhciBFdmVudFBsdWdpbkh1YiA9IHsKKworICAvKioKKyAg
ICogTWV0aG9kcyBmb3IgaW5qZWN0aW5nIGRlcGVuZGVuY2llcy4KKyAgICovCisgIGluamVjdGlv
bjogeworCisgICAgLyoqCisgICAgICogQHBhcmFtIHthcnJheX0gSW5qZWN0ZWRFdmVudFBsdWdp
bk9yZGVyCisgICAgICogQHB1YmxpYworICAgICAqLworICAgIGluamVjdEV2ZW50UGx1Z2luT3Jk
ZXI6IEV2ZW50UGx1Z2luUmVnaXN0cnkuaW5qZWN0RXZlbnRQbHVnaW5PcmRlciwKKworICAgIC8q
KgorICAgICAqIEBwYXJhbSB7b2JqZWN0fSBpbmplY3RlZE5hbWVzVG9QbHVnaW5zIE1hcCBmcm9t
IG5hbWVzIHRvIHBsdWdpbiBtb2R1bGVzLgorICAgICAqLworICAgIGluamVjdEV2ZW50UGx1Z2lu
c0J5TmFtZTogRXZlbnRQbHVnaW5SZWdpc3RyeS5pbmplY3RFdmVudFBsdWdpbnNCeU5hbWUKKwor
ICB9LAorCisgIC8qKgorICAgKiBTdG9yZXMgYGxpc3RlbmVyYCBhdCBgbGlzdGVuZXJCYW5rW3Jl
Z2lzdHJhdGlvbk5hbWVdW2tleV1gLiBJcyBpZGVtcG90ZW50LgorICAgKgorICAgKiBAcGFyYW0g
e29iamVjdH0gaW5zdCBUaGUgaW5zdGFuY2UsIHdoaWNoIGlzIHRoZSBzb3VyY2Ugb2YgZXZlbnRz
LgorICAgKiBAcGFyYW0ge3N0cmluZ30gcmVnaXN0cmF0aW9uTmFtZSBOYW1lIG9mIGxpc3RlbmVy
IChlLmcuIGBvbkNsaWNrYCkuCisgICAqIEBwYXJhbSB7ZnVuY3Rpb259IGxpc3RlbmVyIFRoZSBj
YWxsYmFjayB0byBzdG9yZS4KKyAgICovCisgIHB1dExpc3RlbmVyOiBmdW5jdGlvbiAoaW5zdCwg
cmVnaXN0cmF0aW9uTmFtZSwgbGlzdGVuZXIpIHsKKyAgICAhKHR5cGVvZiBsaXN0ZW5lciA9PT0g
J2Z1bmN0aW9uJykgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQo
ZmFsc2UsICdFeHBlY3RlZCAlcyBsaXN0ZW5lciB0byBiZSBhIGZ1bmN0aW9uLCBpbnN0ZWFkIGdv
dCB0eXBlICVzJywgcmVnaXN0cmF0aW9uTmFtZSwgdHlwZW9mIGxpc3RlbmVyKSA6IF9wcm9kSW52
YXJpYW50KCc5NCcsIHJlZ2lzdHJhdGlvbk5hbWUsIHR5cGVvZiBsaXN0ZW5lcikgOiB2b2lkIDA7
CisKKyAgICB2YXIga2V5ID0gZ2V0RGljdGlvbmFyeUtleShpbnN0KTsKKyAgICB2YXIgYmFua0Zv
clJlZ2lzdHJhdGlvbk5hbWUgPSBsaXN0ZW5lckJhbmtbcmVnaXN0cmF0aW9uTmFtZV0gfHwgKGxp
c3RlbmVyQmFua1tyZWdpc3RyYXRpb25OYW1lXSA9IHt9KTsKKyAgICBiYW5rRm9yUmVnaXN0cmF0
aW9uTmFtZVtrZXldID0gbGlzdGVuZXI7CisKKyAgICB2YXIgUGx1Z2luTW9kdWxlID0gRXZlbnRQ
bHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tyZWdpc3RyYXRpb25OYW1lXTsK
KyAgICBpZiAoUGx1Z2luTW9kdWxlICYmIFBsdWdpbk1vZHVsZS5kaWRQdXRMaXN0ZW5lcikgewor
ICAgICAgUGx1Z2luTW9kdWxlLmRpZFB1dExpc3RlbmVyKGluc3QsIHJlZ2lzdHJhdGlvbk5hbWUs
IGxpc3RlbmVyKTsKKyAgICB9CisgIH0sCisKKyAgLyoqCisgICAqIEBwYXJhbSB7b2JqZWN0fSBp
bnN0IFRoZSBpbnN0YW5jZSwgd2hpY2ggaXMgdGhlIHNvdXJjZSBvZiBldmVudHMuCisgICAqIEBw
YXJhbSB7c3RyaW5nfSByZWdpc3RyYXRpb25OYW1lIE5hbWUgb2YgbGlzdGVuZXIgKGUuZy4gYG9u
Q2xpY2tgKS4KKyAgICogQHJldHVybiB7P2Z1bmN0aW9ufSBUaGUgc3RvcmVkIGNhbGxiYWNrLgor
ICAgKi8KKyAgZ2V0TGlzdGVuZXI6IGZ1bmN0aW9uIChpbnN0LCByZWdpc3RyYXRpb25OYW1lKSB7
CisgICAgdmFyIGJhbmtGb3JSZWdpc3RyYXRpb25OYW1lID0gbGlzdGVuZXJCYW5rW3JlZ2lzdHJh
dGlvbk5hbWVdOworICAgIHZhciBrZXkgPSBnZXREaWN0aW9uYXJ5S2V5KGluc3QpOworICAgIHJl
dHVybiBiYW5rRm9yUmVnaXN0cmF0aW9uTmFtZSAmJiBiYW5rRm9yUmVnaXN0cmF0aW9uTmFtZVtr
ZXldOworICB9LAorCisgIC8qKgorICAgKiBEZWxldGVzIGEgbGlzdGVuZXIgZnJvbSB0aGUgcmVn
aXN0cmF0aW9uIGJhbmsuCisgICAqCisgICAqIEBwYXJhbSB7b2JqZWN0fSBpbnN0IFRoZSBpbnN0
YW5jZSwgd2hpY2ggaXMgdGhlIHNvdXJjZSBvZiBldmVudHMuCisgICAqIEBwYXJhbSB7c3RyaW5n
fSByZWdpc3RyYXRpb25OYW1lIE5hbWUgb2YgbGlzdGVuZXIgKGUuZy4gYG9uQ2xpY2tgKS4KKyAg
ICovCisgIGRlbGV0ZUxpc3RlbmVyOiBmdW5jdGlvbiAoaW5zdCwgcmVnaXN0cmF0aW9uTmFtZSkg
eworICAgIHZhciBQbHVnaW5Nb2R1bGUgPSBFdmVudFBsdWdpblJlZ2lzdHJ5LnJlZ2lzdHJhdGlv
bk5hbWVNb2R1bGVzW3JlZ2lzdHJhdGlvbk5hbWVdOworICAgIGlmIChQbHVnaW5Nb2R1bGUgJiYg
UGx1Z2luTW9kdWxlLndpbGxEZWxldGVMaXN0ZW5lcikgeworICAgICAgUGx1Z2luTW9kdWxlLndp
bGxEZWxldGVMaXN0ZW5lcihpbnN0LCByZWdpc3RyYXRpb25OYW1lKTsKKyAgICB9CisKKyAgICB2
YXIgYmFua0ZvclJlZ2lzdHJhdGlvbk5hbWUgPSBsaXN0ZW5lckJhbmtbcmVnaXN0cmF0aW9uTmFt
ZV07CisgICAgLy8gVE9ETzogVGhpcyBzaG91bGQgbmV2ZXIgYmUgbnVsbCAtLSB3aGVuIGlzIGl0
PworICAgIGlmIChiYW5rRm9yUmVnaXN0cmF0aW9uTmFtZSkgeworICAgICAgdmFyIGtleSA9IGdl
dERpY3Rpb25hcnlLZXkoaW5zdCk7CisgICAgICBkZWxldGUgYmFua0ZvclJlZ2lzdHJhdGlvbk5h
bWVba2V5XTsKKyAgICB9CisgIH0sCisKKyAgLyoqCisgICAqIERlbGV0ZXMgYWxsIGxpc3RlbmVy
cyBmb3IgdGhlIERPTSBlbGVtZW50IHdpdGggdGhlIHN1cHBsaWVkIElELgorICAgKgorICAgKiBA
cGFyYW0ge29iamVjdH0gaW5zdCBUaGUgaW5zdGFuY2UsIHdoaWNoIGlzIHRoZSBzb3VyY2Ugb2Yg
ZXZlbnRzLgorICAgKi8KKyAgZGVsZXRlQWxsTGlzdGVuZXJzOiBmdW5jdGlvbiAoaW5zdCkgewor
ICAgIHZhciBrZXkgPSBnZXREaWN0aW9uYXJ5S2V5KGluc3QpOworICAgIGZvciAodmFyIHJlZ2lz
dHJhdGlvbk5hbWUgaW4gbGlzdGVuZXJCYW5rKSB7CisgICAgICBpZiAoIWxpc3RlbmVyQmFuay5o
YXNPd25Qcm9wZXJ0eShyZWdpc3RyYXRpb25OYW1lKSkgeworICAgICAgICBjb250aW51ZTsKKyAg
ICAgIH0KKworICAgICAgaWYgKCFsaXN0ZW5lckJhbmtbcmVnaXN0cmF0aW9uTmFtZV1ba2V5XSkg
eworICAgICAgICBjb250aW51ZTsKKyAgICAgIH0KKworICAgICAgdmFyIFBsdWdpbk1vZHVsZSA9
IEV2ZW50UGx1Z2luUmVnaXN0cnkucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbcmVnaXN0cmF0aW9u
TmFtZV07CisgICAgICBpZiAoUGx1Z2luTW9kdWxlICYmIFBsdWdpbk1vZHVsZS53aWxsRGVsZXRl
TGlzdGVuZXIpIHsKKyAgICAgICAgUGx1Z2luTW9kdWxlLndpbGxEZWxldGVMaXN0ZW5lcihpbnN0
LCByZWdpc3RyYXRpb25OYW1lKTsKKyAgICAgIH0KKworICAgICAgZGVsZXRlIGxpc3RlbmVyQmFu
a1tyZWdpc3RyYXRpb25OYW1lXVtrZXldOworICAgIH0KKyAgfSwKKworICAvKioKKyAgICogQWxs
b3dzIHJlZ2lzdGVyZWQgcGx1Z2lucyBhbiBvcHBvcnR1bml0eSB0byBleHRyYWN0IGV2ZW50cyBm
cm9tIHRvcC1sZXZlbAorICAgKiBuYXRpdmUgYnJvd3NlciBldmVudHMuCisgICAqCisgICAqIEBy
ZXR1cm4geyp9IEFuIGFjY3VtdWxhdGlvbiBvZiBzeW50aGV0aWMgZXZlbnRzLgorICAgKiBAaW50
ZXJuYWwKKyAgICovCisgIGV4dHJhY3RFdmVudHM6IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUsIHRh
cmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkgeworICAgIHZhciBldmVu
dHM7CisgICAgdmFyIHBsdWdpbnMgPSBFdmVudFBsdWdpblJlZ2lzdHJ5LnBsdWdpbnM7CisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBwbHVnaW5zLmxlbmd0aDsgaSsrKSB7CisgICAgICAvLyBOb3Qg
ZXZlcnkgcGx1Z2luIGluIHRoZSBvcmRlcmluZyBtYXkgYmUgbG9hZGVkIGF0IHJ1bnRpbWUuCisg
ICAgICB2YXIgcG9zc2libGVQbHVnaW4gPSBwbHVnaW5zW2ldOworICAgICAgaWYgKHBvc3NpYmxl
UGx1Z2luKSB7CisgICAgICAgIHZhciBleHRyYWN0ZWRFdmVudHMgPSBwb3NzaWJsZVBsdWdpbi5l
eHRyYWN0RXZlbnRzKHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2
ZUV2ZW50VGFyZ2V0KTsKKyAgICAgICAgaWYgKGV4dHJhY3RlZEV2ZW50cykgeworICAgICAgICAg
IGV2ZW50cyA9IGFjY3VtdWxhdGVJbnRvKGV2ZW50cywgZXh0cmFjdGVkRXZlbnRzKTsKKyAgICAg
ICAgfQorICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gZXZlbnRzOworICB9LAorCisgIC8qKgor
ICAgKiBFbnF1ZXVlcyBhIHN5bnRoZXRpYyBldmVudCB0aGF0IHNob3VsZCBiZSBkaXNwYXRjaGVk
IHdoZW4KKyAgICogYHByb2Nlc3NFdmVudFF1ZXVlYCBpcyBpbnZva2VkLgorICAgKgorICAgKiBA
cGFyYW0geyp9IGV2ZW50cyBBbiBhY2N1bXVsYXRpb24gb2Ygc3ludGhldGljIGV2ZW50cy4KKyAg
ICogQGludGVybmFsCisgICAqLworICBlbnF1ZXVlRXZlbnRzOiBmdW5jdGlvbiAoZXZlbnRzKSB7
CisgICAgaWYgKGV2ZW50cykgeworICAgICAgZXZlbnRRdWV1ZSA9IGFjY3VtdWxhdGVJbnRvKGV2
ZW50UXVldWUsIGV2ZW50cyk7CisgICAgfQorICB9LAorCisgIC8qKgorICAgKiBEaXNwYXRjaGVz
IGFsbCBzeW50aGV0aWMgZXZlbnRzIG9uIHRoZSBldmVudCBxdWV1ZS4KKyAgICoKKyAgICogQGlu
dGVybmFsCisgICAqLworICBwcm9jZXNzRXZlbnRRdWV1ZTogZnVuY3Rpb24gKHNpbXVsYXRlZCkg
eworICAgIC8vIFNldCBgZXZlbnRRdWV1ZWAgdG8gbnVsbCBiZWZvcmUgcHJvY2Vzc2luZyBpdCBz
byB0aGF0IHdlIGNhbiB0ZWxsIGlmIG1vcmUKKyAgICAvLyBldmVudHMgZ2V0IGVucXVldWVkIHdo
aWxlIHByb2Nlc3NpbmcuCisgICAgdmFyIHByb2Nlc3NpbmdFdmVudFF1ZXVlID0gZXZlbnRRdWV1
ZTsKKyAgICBldmVudFF1ZXVlID0gbnVsbDsKKyAgICBpZiAoc2ltdWxhdGVkKSB7CisgICAgICBm
b3JFYWNoQWNjdW11bGF0ZWQocHJvY2Vzc2luZ0V2ZW50UXVldWUsIGV4ZWN1dGVEaXNwYXRjaGVz
QW5kUmVsZWFzZVNpbXVsYXRlZCk7CisgICAgfSBlbHNlIHsKKyAgICAgIGZvckVhY2hBY2N1bXVs
YXRlZChwcm9jZXNzaW5nRXZlbnRRdWV1ZSwgZXhlY3V0ZURpc3BhdGNoZXNBbmRSZWxlYXNlVG9w
TGV2ZWwpOworICAgIH0KKyAgICAhIWV2ZW50UXVldWUgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJv
ZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdwcm9jZXNzRXZlbnRRdWV1ZSgpOiBBZGRpdGlv
bmFsIGV2ZW50cyB3ZXJlIGVucXVldWVkIHdoaWxlIHByb2Nlc3NpbmcgYW4gZXZlbnQgcXVldWUu
IFN1cHBvcnQgZm9yIHRoaXMgaGFzIG5vdCB5ZXQgYmVlbiBpbXBsZW1lbnRlZC4nKSA6IF9wcm9k
SW52YXJpYW50KCc5NScpIDogdm9pZCAwOworICAgIC8vIFRoaXMgd291bGQgYmUgYSBnb29kIHRp
bWUgdG8gcmV0aHJvdyBpZiBhbnkgb2YgdGhlIGV2ZW50IGhhbmRsZXJzIHRocmV3LgorICAgIFJl
YWN0RXJyb3JVdGlscy5yZXRocm93Q2F1Z2h0RXJyb3IoKTsKKyAgfSwKKworICAvKioKKyAgICog
VGhlc2UgYXJlIG5lZWRlZCBmb3IgdGVzdHMgb25seS4gRG8gbm90IHVzZSEKKyAgICovCisgIF9f
cHVyZ2U6IGZ1bmN0aW9uICgpIHsKKyAgICBsaXN0ZW5lckJhbmsgPSB7fTsKKyAgfSwKKworICBf
X2dldExpc3RlbmVyQmFuazogZnVuY3Rpb24gKCkgeworICAgIHJldHVybiBsaXN0ZW5lckJhbms7
CisgIH0KKworfTsKKworbW9kdWxlLmV4cG9ydHMgPSBFdmVudFBsdWdpbkh1YjsKK30seyIxMDIi
OjEwMiwiMTEwIjoxMTAsIjEyNSI6MTI1LCIxNTAiOjE1MCwiMTgiOjE4LCIxOSI6MTksIjU1Ijo1
NX1dLDE4OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJp
Z2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxl
IGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0
b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVu
dCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGly
ZWN0b3J5LgorICoKKyAqIAorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9wcm9kSW52YXJp
YW50ID0gX2RlcmVxXygxMjUpOworCit2YXIgaW52YXJpYW50ID0gX2RlcmVxXygxNTApOworCisv
KioKKyAqIEluamVjdGFibGUgb3JkZXJpbmcgb2YgZXZlbnQgcGx1Z2lucy4KKyAqLwordmFyIGV2
ZW50UGx1Z2luT3JkZXIgPSBudWxsOworCisvKioKKyAqIEluamVjdGFibGUgbWFwcGluZyBmcm9t
IG5hbWVzIHRvIGV2ZW50IHBsdWdpbiBtb2R1bGVzLgorICovCit2YXIgbmFtZXNUb1BsdWdpbnMg
PSB7fTsKKworLyoqCisgKiBSZWNvbXB1dGVzIHRoZSBwbHVnaW4gbGlzdCB1c2luZyB0aGUgaW5q
ZWN0ZWQgcGx1Z2lucyBhbmQgcGx1Z2luIG9yZGVyaW5nLgorICoKKyAqIEBwcml2YXRlCisgKi8K
K2Z1bmN0aW9uIHJlY29tcHV0ZVBsdWdpbk9yZGVyaW5nKCkgeworICBpZiAoIWV2ZW50UGx1Z2lu
T3JkZXIpIHsKKyAgICAvLyBXYWl0IHVudGlsIGFuIGBldmVudFBsdWdpbk9yZGVyYCBpcyBpbmpl
Y3RlZC4KKyAgICByZXR1cm47CisgIH0KKyAgZm9yICh2YXIgcGx1Z2luTmFtZSBpbiBuYW1lc1Rv
UGx1Z2lucykgeworICAgIHZhciBwbHVnaW5Nb2R1bGUgPSBuYW1lc1RvUGx1Z2luc1twbHVnaW5O
YW1lXTsKKyAgICB2YXIgcGx1Z2luSW5kZXggPSBldmVudFBsdWdpbk9yZGVyLmluZGV4T2YocGx1
Z2luTmFtZSk7CisgICAgIShwbHVnaW5JbmRleCA+IC0xKSA/ICJkZXZlbG9wbWVudCIgIT09ICdw
cm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0V2ZW50UGx1Z2luUmVnaXN0cnk6IENhbm5v
dCBpbmplY3QgZXZlbnQgcGx1Z2lucyB0aGF0IGRvIG5vdCBleGlzdCBpbiB0aGUgcGx1Z2luIG9y
ZGVyaW5nLCBgJXNgLicsIHBsdWdpbk5hbWUpIDogX3Byb2RJbnZhcmlhbnQoJzk2JywgcGx1Z2lu
TmFtZSkgOiB2b2lkIDA7CisgICAgaWYgKEV2ZW50UGx1Z2luUmVnaXN0cnkucGx1Z2luc1twbHVn
aW5JbmRleF0pIHsKKyAgICAgIGNvbnRpbnVlOworICAgIH0KKyAgICAhcGx1Z2luTW9kdWxlLmV4
dHJhY3RFdmVudHMgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQo
ZmFsc2UsICdFdmVudFBsdWdpblJlZ2lzdHJ5OiBFdmVudCBwbHVnaW5zIG11c3QgaW1wbGVtZW50
IGFuIGBleHRyYWN0RXZlbnRzYCBtZXRob2QsIGJ1dCBgJXNgIGRvZXMgbm90LicsIHBsdWdpbk5h
bWUpIDogX3Byb2RJbnZhcmlhbnQoJzk3JywgcGx1Z2luTmFtZSkgOiB2b2lkIDA7CisgICAgRXZl
bnRQbHVnaW5SZWdpc3RyeS5wbHVnaW5zW3BsdWdpbkluZGV4XSA9IHBsdWdpbk1vZHVsZTsKKyAg
ICB2YXIgcHVibGlzaGVkRXZlbnRzID0gcGx1Z2luTW9kdWxlLmV2ZW50VHlwZXM7CisgICAgZm9y
ICh2YXIgZXZlbnROYW1lIGluIHB1Ymxpc2hlZEV2ZW50cykgeworICAgICAgIXB1Ymxpc2hFdmVu
dEZvclBsdWdpbihwdWJsaXNoZWRFdmVudHNbZXZlbnROYW1lXSwgcGx1Z2luTW9kdWxlLCBldmVu
dE5hbWUpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNl
LCAnRXZlbnRQbHVnaW5SZWdpc3RyeTogRmFpbGVkIHRvIHB1Ymxpc2ggZXZlbnQgYCVzYCBmb3Ig
cGx1Z2luIGAlc2AuJywgZXZlbnROYW1lLCBwbHVnaW5OYW1lKSA6IF9wcm9kSW52YXJpYW50KCc5
OCcsIGV2ZW50TmFtZSwgcGx1Z2luTmFtZSkgOiB2b2lkIDA7CisgICAgfQorICB9Cit9CisKKy8q
KgorICogUHVibGlzaGVzIGFuIGV2ZW50IHNvIHRoYXQgaXQgY2FuIGJlIGRpc3BhdGNoZWQgYnkg
dGhlIHN1cHBsaWVkIHBsdWdpbi4KKyAqCisgKiBAcGFyYW0ge29iamVjdH0gZGlzcGF0Y2hDb25m
aWcgRGlzcGF0Y2ggY29uZmlndXJhdGlvbiBmb3IgdGhlIGV2ZW50LgorICogQHBhcmFtIHtvYmpl
Y3R9IFBsdWdpbk1vZHVsZSBQbHVnaW4gcHVibGlzaGluZyB0aGUgZXZlbnQuCisgKiBAcmV0dXJu
IHtib29sZWFufSBUcnVlIGlmIHRoZSBldmVudCB3YXMgc3VjY2Vzc2Z1bGx5IHB1Ymxpc2hlZC4K
KyAqIEBwcml2YXRlCisgKi8KK2Z1bmN0aW9uIHB1Ymxpc2hFdmVudEZvclBsdWdpbihkaXNwYXRj
aENvbmZpZywgcGx1Z2luTW9kdWxlLCBldmVudE5hbWUpIHsKKyAgISFFdmVudFBsdWdpblJlZ2lz
dHJ5LmV2ZW50TmFtZURpc3BhdGNoQ29uZmlncy5oYXNPd25Qcm9wZXJ0eShldmVudE5hbWUpID8g
ImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRXZlbnRQ
bHVnaW5IdWI6IE1vcmUgdGhhbiBvbmUgcGx1Z2luIGF0dGVtcHRlZCB0byBwdWJsaXNoIHRoZSBz
YW1lIGV2ZW50IG5hbWUsIGAlc2AuJywgZXZlbnROYW1lKSA6IF9wcm9kSW52YXJpYW50KCc5OScs
IGV2ZW50TmFtZSkgOiB2b2lkIDA7CisgIEV2ZW50UGx1Z2luUmVnaXN0cnkuZXZlbnROYW1lRGlz
cGF0Y2hDb25maWdzW2V2ZW50TmFtZV0gPSBkaXNwYXRjaENvbmZpZzsKKworICB2YXIgcGhhc2Vk
UmVnaXN0cmF0aW9uTmFtZXMgPSBkaXNwYXRjaENvbmZpZy5waGFzZWRSZWdpc3RyYXRpb25OYW1l
czsKKyAgaWYgKHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzKSB7CisgICAgZm9yICh2YXIgcGhhc2VO
YW1lIGluIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzKSB7CisgICAgICBpZiAocGhhc2VkUmVnaXN0
cmF0aW9uTmFtZXMuaGFzT3duUHJvcGVydHkocGhhc2VOYW1lKSkgeworICAgICAgICB2YXIgcGhh
c2VkUmVnaXN0cmF0aW9uTmFtZSA9IHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzW3BoYXNlTmFtZV07
CisgICAgICAgIHB1Ymxpc2hSZWdpc3RyYXRpb25OYW1lKHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWUs
IHBsdWdpbk1vZHVsZSwgZXZlbnROYW1lKTsKKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHRy
dWU7CisgIH0gZWxzZSBpZiAoZGlzcGF0Y2hDb25maWcucmVnaXN0cmF0aW9uTmFtZSkgeworICAg
IHB1Ymxpc2hSZWdpc3RyYXRpb25OYW1lKGRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUs
IHBsdWdpbk1vZHVsZSwgZXZlbnROYW1lKTsKKyAgICByZXR1cm4gdHJ1ZTsKKyAgfQorICByZXR1
cm4gZmFsc2U7Cit9CisKKy8qKgorICogUHVibGlzaGVzIGEgcmVnaXN0cmF0aW9uIG5hbWUgdGhh
dCBpcyB1c2VkIHRvIGlkZW50aWZ5IGRpc3BhdGNoZWQgZXZlbnRzIGFuZAorICogY2FuIGJlIHVz
ZWQgd2l0aCBgRXZlbnRQbHVnaW5IdWIucHV0TGlzdGVuZXJgIHRvIHJlZ2lzdGVyIGxpc3RlbmVy
cy4KKyAqCisgKiBAcGFyYW0ge3N0cmluZ30gcmVnaXN0cmF0aW9uTmFtZSBSZWdpc3RyYXRpb24g
bmFtZSB0byBhZGQuCisgKiBAcGFyYW0ge29iamVjdH0gUGx1Z2luTW9kdWxlIFBsdWdpbiBwdWJs
aXNoaW5nIHRoZSBldmVudC4KKyAqIEBwcml2YXRlCisgKi8KK2Z1bmN0aW9uIHB1Ymxpc2hSZWdp
c3RyYXRpb25OYW1lKHJlZ2lzdHJhdGlvbk5hbWUsIHBsdWdpbk1vZHVsZSwgZXZlbnROYW1lKSB7
CisgICEhRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tyZWdpc3Ry
YXRpb25OYW1lXSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChm
YWxzZSwgJ0V2ZW50UGx1Z2luSHViOiBNb3JlIHRoYW4gb25lIHBsdWdpbiBhdHRlbXB0ZWQgdG8g
cHVibGlzaCB0aGUgc2FtZSByZWdpc3RyYXRpb24gbmFtZSwgYCVzYC4nLCByZWdpc3RyYXRpb25O
YW1lKSA6IF9wcm9kSW52YXJpYW50KCcxMDAnLCByZWdpc3RyYXRpb25OYW1lKSA6IHZvaWQgMDsK
KyAgRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tyZWdpc3RyYXRp
b25OYW1lXSA9IHBsdWdpbk1vZHVsZTsKKyAgRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRp
b25OYW1lRGVwZW5kZW5jaWVzW3JlZ2lzdHJhdGlvbk5hbWVdID0gcGx1Z2luTW9kdWxlLmV2ZW50
VHlwZXNbZXZlbnROYW1lXS5kZXBlbmRlbmNpZXM7CisKKyAgaWYgKCJkZXZlbG9wbWVudCIgIT09
ICdwcm9kdWN0aW9uJykgeworICAgIHZhciBsb3dlckNhc2VkTmFtZSA9IHJlZ2lzdHJhdGlvbk5h
bWUudG9Mb3dlckNhc2UoKTsKKyAgICBFdmVudFBsdWdpblJlZ2lzdHJ5LnBvc3NpYmxlUmVnaXN0
cmF0aW9uTmFtZXNbbG93ZXJDYXNlZE5hbWVdID0gcmVnaXN0cmF0aW9uTmFtZTsKKworICAgIGlm
IChyZWdpc3RyYXRpb25OYW1lID09PSAnb25Eb3VibGVDbGljaycpIHsKKyAgICAgIEV2ZW50UGx1
Z2luUmVnaXN0cnkucG9zc2libGVSZWdpc3RyYXRpb25OYW1lcy5vbmRibGNsaWNrID0gcmVnaXN0
cmF0aW9uTmFtZTsKKyAgICB9CisgIH0KK30KKworLyoqCisgKiBSZWdpc3RlcnMgcGx1Z2lucyBz
byB0aGF0IHRoZXkgY2FuIGV4dHJhY3QgYW5kIGRpc3BhdGNoIGV2ZW50cy4KKyAqCisgKiBAc2Vl
IHtFdmVudFBsdWdpbkh1Yn0KKyAqLwordmFyIEV2ZW50UGx1Z2luUmVnaXN0cnkgPSB7CisKKyAg
LyoqCisgICAqIE9yZGVyZWQgbGlzdCBvZiBpbmplY3RlZCBwbHVnaW5zLgorICAgKi8KKyAgcGx1
Z2luczogW10sCisKKyAgLyoqCisgICAqIE1hcHBpbmcgZnJvbSBldmVudCBuYW1lIHRvIGRpc3Bh
dGNoIGNvbmZpZworICAgKi8KKyAgZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzOiB7fSwKKworICAv
KioKKyAgICogTWFwcGluZyBmcm9tIHJlZ2lzdHJhdGlvbiBuYW1lIHRvIHBsdWdpbiBtb2R1bGUK
KyAgICovCisgIHJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzOiB7fSwKKworICAvKioKKyAgICogTWFw
cGluZyBmcm9tIHJlZ2lzdHJhdGlvbiBuYW1lIHRvIGV2ZW50IG5hbWUKKyAgICovCisgIHJlZ2lz
dHJhdGlvbk5hbWVEZXBlbmRlbmNpZXM6IHt9LAorCisgIC8qKgorICAgKiBNYXBwaW5nIGZyb20g
bG93ZXJjYXNlIHJlZ2lzdHJhdGlvbiBuYW1lcyB0byB0aGUgcHJvcGVybHkgY2FzZWQgdmVyc2lv
biwKKyAgICogdXNlZCB0byB3YXJuIGluIHRoZSBjYXNlIG9mIG1pc3NpbmcgZXZlbnQgaGFuZGxl
cnMuIEF2YWlsYWJsZQorICAgKiBvbmx5IGluIF9fREVWX18uCisgICAqIEB0eXBlIHtPYmplY3R9
CisgICAqLworICBwb3NzaWJsZVJlZ2lzdHJhdGlvbk5hbWVzOiAiZGV2ZWxvcG1lbnQiICE9PSAn
cHJvZHVjdGlvbicgPyB7fSA6IG51bGwsCisgIC8vIFRydXN0IHRoZSBkZXZlbG9wZXIgdG8gb25s
eSB1c2UgcG9zc2libGVSZWdpc3RyYXRpb25OYW1lcyBpbiBfX0RFVl9fCisKKyAgLyoqCisgICAq
IEluamVjdHMgYW4gb3JkZXJpbmcgb2YgcGx1Z2lucyAoYnkgcGx1Z2luIG5hbWUpLiBUaGlzIGFs
bG93cyB0aGUgb3JkZXJpbmcKKyAgICogdG8gYmUgZGVjb3VwbGVkIGZyb20gaW5qZWN0aW9uIG9m
IHRoZSBhY3R1YWwgcGx1Z2lucyBzbyB0aGF0IG9yZGVyaW5nIGlzCisgICAqIGFsd2F5cyBkZXRl
cm1pbmlzdGljIHJlZ2FyZGxlc3Mgb2YgcGFja2FnaW5nLCBvbi10aGUtZmx5IGluamVjdGlvbiwg
ZXRjLgorICAgKgorICAgKiBAcGFyYW0ge2FycmF5fSBJbmplY3RlZEV2ZW50UGx1Z2luT3JkZXIK
KyAgICogQGludGVybmFsCisgICAqIEBzZWUge0V2ZW50UGx1Z2luSHViLmluamVjdGlvbi5pbmpl
Y3RFdmVudFBsdWdpbk9yZGVyfQorICAgKi8KKyAgaW5qZWN0RXZlbnRQbHVnaW5PcmRlcjogZnVu
Y3Rpb24gKGluamVjdGVkRXZlbnRQbHVnaW5PcmRlcikgeworICAgICEhZXZlbnRQbHVnaW5PcmRl
ciA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0V2
ZW50UGx1Z2luUmVnaXN0cnk6IENhbm5vdCBpbmplY3QgZXZlbnQgcGx1Z2luIG9yZGVyaW5nIG1v
cmUgdGhhbiBvbmNlLiBZb3UgYXJlIGxpa2VseSB0cnlpbmcgdG8gbG9hZCBtb3JlIHRoYW4gb25l
IGNvcHkgb2YgUmVhY3QuJykgOiBfcHJvZEludmFyaWFudCgnMTAxJykgOiB2b2lkIDA7CisgICAg
Ly8gQ2xvbmUgdGhlIG9yZGVyaW5nIHNvIGl0IGNhbm5vdCBiZSBkeW5hbWljYWxseSBtdXRhdGVk
LgorICAgIGV2ZW50UGx1Z2luT3JkZXIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChpbmpl
Y3RlZEV2ZW50UGx1Z2luT3JkZXIpOworICAgIHJlY29tcHV0ZVBsdWdpbk9yZGVyaW5nKCk7Cisg
IH0sCisKKyAgLyoqCisgICAqIEluamVjdHMgcGx1Z2lucyB0byBiZSB1c2VkIGJ5IGBFdmVudFBs
dWdpbkh1YmAuIFRoZSBwbHVnaW4gbmFtZXMgbXVzdCBiZQorICAgKiBpbiB0aGUgb3JkZXJpbmcg
aW5qZWN0ZWQgYnkgYGluamVjdEV2ZW50UGx1Z2luT3JkZXJgLgorICAgKgorICAgKiBQbHVnaW5z
IGNhbiBiZSBpbmplY3RlZCBhcyBwYXJ0IG9mIHBhZ2UgaW5pdGlhbGl6YXRpb24gb3Igb24tdGhl
LWZseS4KKyAgICoKKyAgICogQHBhcmFtIHtvYmplY3R9IGluamVjdGVkTmFtZXNUb1BsdWdpbnMg
TWFwIGZyb20gbmFtZXMgdG8gcGx1Z2luIG1vZHVsZXMuCisgICAqIEBpbnRlcm5hbAorICAgKiBA
c2VlIHtFdmVudFBsdWdpbkh1Yi5pbmplY3Rpb24uaW5qZWN0RXZlbnRQbHVnaW5zQnlOYW1lfQor
ICAgKi8KKyAgaW5qZWN0RXZlbnRQbHVnaW5zQnlOYW1lOiBmdW5jdGlvbiAoaW5qZWN0ZWROYW1l
c1RvUGx1Z2lucykgeworICAgIHZhciBpc09yZGVyaW5nRGlydHkgPSBmYWxzZTsKKyAgICBmb3Ig
KHZhciBwbHVnaW5OYW1lIGluIGluamVjdGVkTmFtZXNUb1BsdWdpbnMpIHsKKyAgICAgIGlmICgh
aW5qZWN0ZWROYW1lc1RvUGx1Z2lucy5oYXNPd25Qcm9wZXJ0eShwbHVnaW5OYW1lKSkgeworICAg
ICAgICBjb250aW51ZTsKKyAgICAgIH0KKyAgICAgIHZhciBwbHVnaW5Nb2R1bGUgPSBpbmplY3Rl
ZE5hbWVzVG9QbHVnaW5zW3BsdWdpbk5hbWVdOworICAgICAgaWYgKCFuYW1lc1RvUGx1Z2lucy5o
YXNPd25Qcm9wZXJ0eShwbHVnaW5OYW1lKSB8fCBuYW1lc1RvUGx1Z2luc1twbHVnaW5OYW1lXSAh
PT0gcGx1Z2luTW9kdWxlKSB7CisgICAgICAgICEhbmFtZXNUb1BsdWdpbnNbcGx1Z2luTmFtZV0g
PyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdFdmVu
dFBsdWdpblJlZ2lzdHJ5OiBDYW5ub3QgaW5qZWN0IHR3byBkaWZmZXJlbnQgZXZlbnQgcGx1Z2lu
cyB1c2luZyB0aGUgc2FtZSBuYW1lLCBgJXNgLicsIHBsdWdpbk5hbWUpIDogX3Byb2RJbnZhcmlh
bnQoJzEwMicsIHBsdWdpbk5hbWUpIDogdm9pZCAwOworICAgICAgICBuYW1lc1RvUGx1Z2luc1tw
bHVnaW5OYW1lXSA9IHBsdWdpbk1vZHVsZTsKKyAgICAgICAgaXNPcmRlcmluZ0RpcnR5ID0gdHJ1
ZTsKKyAgICAgIH0KKyAgICB9CisgICAgaWYgKGlzT3JkZXJpbmdEaXJ0eSkgeworICAgICAgcmVj
b21wdXRlUGx1Z2luT3JkZXJpbmcoKTsKKyAgICB9CisgIH0sCisKKyAgLyoqCisgICAqIExvb2tz
IHVwIHRoZSBwbHVnaW4gZm9yIHRoZSBzdXBwbGllZCBldmVudC4KKyAgICoKKyAgICogQHBhcmFt
IHtvYmplY3R9IGV2ZW50IEEgc3ludGhldGljIGV2ZW50LgorICAgKiBAcmV0dXJuIHs/b2JqZWN0
fSBUaGUgcGx1Z2luIHRoYXQgY3JlYXRlZCB0aGUgc3VwcGxpZWQgZXZlbnQuCisgICAqIEBpbnRl
cm5hbAorICAgKi8KKyAgZ2V0UGx1Z2luTW9kdWxlRm9yRXZlbnQ6IGZ1bmN0aW9uIChldmVudCkg
eworICAgIHZhciBkaXNwYXRjaENvbmZpZyA9IGV2ZW50LmRpc3BhdGNoQ29uZmlnOworICAgIGlm
IChkaXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1lKSB7CisgICAgICByZXR1cm4gRXZlbnRQ
bHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tkaXNwYXRjaENvbmZpZy5yZWdp
c3RyYXRpb25OYW1lXSB8fCBudWxsOworICAgIH0KKyAgICBpZiAoZGlzcGF0Y2hDb25maWcucGhh
c2VkUmVnaXN0cmF0aW9uTmFtZXMgIT09IHVuZGVmaW5lZCkgeworICAgICAgLy8gcHVsbGluZyBw
aGFzZWRSZWdpc3RyYXRpb25OYW1lcyBvdXQgb2YgZGlzcGF0Y2hDb25maWcgaGVscHMgRmxvdyBz
ZWUKKyAgICAgIC8vIHRoYXQgaXQgaXMgbm90IHVuZGVmaW5lZC4KKyAgICAgIHZhciBwaGFzZWRS
ZWdpc3RyYXRpb25OYW1lcyA9IGRpc3BhdGNoQ29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVz
OworCisgICAgICBmb3IgKHZhciBwaGFzZSBpbiBwaGFzZWRSZWdpc3RyYXRpb25OYW1lcykgewor
ICAgICAgICBpZiAoIXBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzLmhhc093blByb3BlcnR5KHBoYXNl
KSkgeworICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIHZhciBwbHVnaW5N
b2R1bGUgPSBFdmVudFBsdWdpblJlZ2lzdHJ5LnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW3BoYXNl
ZFJlZ2lzdHJhdGlvbk5hbWVzW3BoYXNlXV07CisgICAgICAgIGlmIChwbHVnaW5Nb2R1bGUpIHsK
KyAgICAgICAgICByZXR1cm4gcGx1Z2luTW9kdWxlOworICAgICAgICB9CisgICAgICB9CisgICAg
fQorICAgIHJldHVybiBudWxsOworICB9LAorCisgIC8qKgorICAgKiBFeHBvc2VkIGZvciB1bml0
IHRlc3RpbmcuCisgICAqIEBwcml2YXRlCisgICAqLworICBfcmVzZXRFdmVudFBsdWdpbnM6IGZ1
bmN0aW9uICgpIHsKKyAgICBldmVudFBsdWdpbk9yZGVyID0gbnVsbDsKKyAgICBmb3IgKHZhciBw
bHVnaW5OYW1lIGluIG5hbWVzVG9QbHVnaW5zKSB7CisgICAgICBpZiAobmFtZXNUb1BsdWdpbnMu
aGFzT3duUHJvcGVydHkocGx1Z2luTmFtZSkpIHsKKyAgICAgICAgZGVsZXRlIG5hbWVzVG9QbHVn
aW5zW3BsdWdpbk5hbWVdOworICAgICAgfQorICAgIH0KKyAgICBFdmVudFBsdWdpblJlZ2lzdHJ5
LnBsdWdpbnMubGVuZ3RoID0gMDsKKworICAgIHZhciBldmVudE5hbWVEaXNwYXRjaENvbmZpZ3Mg
PSBFdmVudFBsdWdpblJlZ2lzdHJ5LmV2ZW50TmFtZURpc3BhdGNoQ29uZmlnczsKKyAgICBmb3Ig
KHZhciBldmVudE5hbWUgaW4gZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzKSB7CisgICAgICBpZiAo
ZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzLmhhc093blByb3BlcnR5KGV2ZW50TmFtZSkpIHsKKyAg
ICAgICAgZGVsZXRlIGV2ZW50TmFtZURpc3BhdGNoQ29uZmlnc1tldmVudE5hbWVdOworICAgICAg
fQorICAgIH0KKworICAgIHZhciByZWdpc3RyYXRpb25OYW1lTW9kdWxlcyA9IEV2ZW50UGx1Z2lu
UmVnaXN0cnkucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXM7CisgICAgZm9yICh2YXIgcmVnaXN0cmF0
aW9uTmFtZSBpbiByZWdpc3RyYXRpb25OYW1lTW9kdWxlcykgeworICAgICAgaWYgKHJlZ2lzdHJh
dGlvbk5hbWVNb2R1bGVzLmhhc093blByb3BlcnR5KHJlZ2lzdHJhdGlvbk5hbWUpKSB7CisgICAg
ICAgIGRlbGV0ZSByZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tyZWdpc3RyYXRpb25OYW1lXTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7
CisgICAgICB2YXIgcG9zc2libGVSZWdpc3RyYXRpb25OYW1lcyA9IEV2ZW50UGx1Z2luUmVnaXN0
cnkucG9zc2libGVSZWdpc3RyYXRpb25OYW1lczsKKyAgICAgIGZvciAodmFyIGxvd2VyQ2FzZWRO
YW1lIGluIHBvc3NpYmxlUmVnaXN0cmF0aW9uTmFtZXMpIHsKKyAgICAgICAgaWYgKHBvc3NpYmxl
UmVnaXN0cmF0aW9uTmFtZXMuaGFzT3duUHJvcGVydHkobG93ZXJDYXNlZE5hbWUpKSB7CisgICAg
ICAgICAgZGVsZXRlIHBvc3NpYmxlUmVnaXN0cmF0aW9uTmFtZXNbbG93ZXJDYXNlZE5hbWVdOwor
ICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9CisKK307CisKK21vZHVsZS5leHBvcnRzID0g
RXZlbnRQbHVnaW5SZWdpc3RyeTsKK30seyIxMjUiOjEyNSwiMTUwIjoxNTB9XSwxOTpbZnVuY3Rp
b24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNl
bnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMg
c291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5k
IGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNv
dXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBi
ZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisg
Ki8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJbnZhcmlhbnQgPSBfZGVyZXFfKDEyNSk7
CisKK3ZhciBSZWFjdEVycm9yVXRpbHMgPSBfZGVyZXFfKDU1KTsKKwordmFyIGludmFyaWFudCA9
IF9kZXJlcV8oMTUwKTsKK3ZhciB3YXJuaW5nID0gX2RlcmVxXygxNTcpOworCisvKioKKyAqIElu
amVjdGVkIGRlcGVuZGVuY2llczoKKyAqLworCisvKioKKyAqIC0gYENvbXBvbmVudFRyZWVgOiBb
cmVxdWlyZWRdIE1vZHVsZSB0aGF0IGNhbiBjb252ZXJ0IGJldHdlZW4gUmVhY3QgaW5zdGFuY2Vz
CisgKiAgIGFuZCBhY3R1YWwgbm9kZSByZWZlcmVuY2VzLgorICovCit2YXIgQ29tcG9uZW50VHJl
ZTsKK3ZhciBUcmVlVHJhdmVyc2FsOwordmFyIGluamVjdGlvbiA9IHsKKyAgaW5qZWN0Q29tcG9u
ZW50VHJlZTogZnVuY3Rpb24gKEluamVjdGVkKSB7CisgICAgQ29tcG9uZW50VHJlZSA9IEluamVj
dGVkOworICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICJk
ZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoSW5qZWN0ZWQgJiYgSW5qZWN0
ZWQuZ2V0Tm9kZUZyb21JbnN0YW5jZSAmJiBJbmplY3RlZC5nZXRJbnN0YW5jZUZyb21Ob2RlLCAn
RXZlbnRQbHVnaW5VdGlscy5pbmplY3Rpb24uaW5qZWN0Q29tcG9uZW50VHJlZSguLi4pOiBJbmpl
Y3RlZCAnICsgJ21vZHVsZSBpcyBtaXNzaW5nIGdldE5vZGVGcm9tSW5zdGFuY2Ugb3IgZ2V0SW5z
dGFuY2VGcm9tTm9kZS4nKSA6IHZvaWQgMDsKKyAgICB9CisgIH0sCisgIGluamVjdFRyZWVUcmF2
ZXJzYWw6IGZ1bmN0aW9uIChJbmplY3RlZCkgeworICAgIFRyZWVUcmF2ZXJzYWwgPSBJbmplY3Rl
ZDsKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAiZGV2
ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKEluamVjdGVkICYmIEluamVjdGVk
LmlzQW5jZXN0b3IgJiYgSW5qZWN0ZWQuZ2V0TG93ZXN0Q29tbW9uQW5jZXN0b3IsICdFdmVudFBs
dWdpblV0aWxzLmluamVjdGlvbi5pbmplY3RUcmVlVHJhdmVyc2FsKC4uLik6IEluamVjdGVkICcg
KyAnbW9kdWxlIGlzIG1pc3NpbmcgaXNBbmNlc3RvciBvciBnZXRMb3dlc3RDb21tb25BbmNlc3Rv
ci4nKSA6IHZvaWQgMDsKKyAgICB9CisgIH0KK307CisKK2Z1bmN0aW9uIGlzRW5kaXNoKHRvcExl
dmVsVHlwZSkgeworICByZXR1cm4gdG9wTGV2ZWxUeXBlID09PSAndG9wTW91c2VVcCcgfHwgdG9w
TGV2ZWxUeXBlID09PSAndG9wVG91Y2hFbmQnIHx8IHRvcExldmVsVHlwZSA9PT0gJ3RvcFRvdWNo
Q2FuY2VsJzsKK30KKworZnVuY3Rpb24gaXNNb3ZlaXNoKHRvcExldmVsVHlwZSkgeworICByZXR1
cm4gdG9wTGV2ZWxUeXBlID09PSAndG9wTW91c2VNb3ZlJyB8fCB0b3BMZXZlbFR5cGUgPT09ICd0
b3BUb3VjaE1vdmUnOworfQorZnVuY3Rpb24gaXNTdGFydGlzaCh0b3BMZXZlbFR5cGUpIHsKKyAg
cmV0dXJuIHRvcExldmVsVHlwZSA9PT0gJ3RvcE1vdXNlRG93bicgfHwgdG9wTGV2ZWxUeXBlID09
PSAndG9wVG91Y2hTdGFydCc7Cit9CisKK3ZhciB2YWxpZGF0ZUV2ZW50RGlzcGF0Y2hlczsKK2lm
ICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgdmFsaWRhdGVFdmVudERpc3Bh
dGNoZXMgPSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICB2YXIgZGlzcGF0Y2hMaXN0ZW5lcnMgPSBl
dmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnM7CisgICAgdmFyIGRpc3BhdGNoSW5zdGFuY2VzID0gZXZl
bnQuX2Rpc3BhdGNoSW5zdGFuY2VzOworCisgICAgdmFyIGxpc3RlbmVyc0lzQXJyID0gQXJyYXku
aXNBcnJheShkaXNwYXRjaExpc3RlbmVycyk7CisgICAgdmFyIGxpc3RlbmVyc0xlbiA9IGxpc3Rl
bmVyc0lzQXJyID8gZGlzcGF0Y2hMaXN0ZW5lcnMubGVuZ3RoIDogZGlzcGF0Y2hMaXN0ZW5lcnMg
PyAxIDogMDsKKworICAgIHZhciBpbnN0YW5jZXNJc0FyciA9IEFycmF5LmlzQXJyYXkoZGlzcGF0
Y2hJbnN0YW5jZXMpOworICAgIHZhciBpbnN0YW5jZXNMZW4gPSBpbnN0YW5jZXNJc0FyciA/IGRp
c3BhdGNoSW5zdGFuY2VzLmxlbmd0aCA6IGRpc3BhdGNoSW5zdGFuY2VzID8gMSA6IDA7CisKKyAg
ICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGluc3RhbmNlc0lzQXJy
ID09PSBsaXN0ZW5lcnNJc0FyciAmJiBpbnN0YW5jZXNMZW4gPT09IGxpc3RlbmVyc0xlbiwgJ0V2
ZW50UGx1Z2luVXRpbHM6IEludmFsaWQgYGV2ZW50YC4nKSA6IHZvaWQgMDsKKyAgfTsKK30KKwor
LyoqCisgKiBEaXNwYXRjaCB0aGUgZXZlbnQgdG8gdGhlIGxpc3RlbmVyLgorICogQHBhcmFtIHtT
eW50aGV0aWNFdmVudH0gZXZlbnQgU3ludGhldGljRXZlbnQgdG8gaGFuZGxlCisgKiBAcGFyYW0g
e2Jvb2xlYW59IHNpbXVsYXRlZCBJZiB0aGUgZXZlbnQgaXMgc2ltdWxhdGVkIChjaGFuZ2VzIGV4
biBiZWhhdmlvcikKKyAqIEBwYXJhbSB7ZnVuY3Rpb259IGxpc3RlbmVyIEFwcGxpY2F0aW9uLWxl
dmVsIGNhbGxiYWNrCisgKiBAcGFyYW0geyp9IGluc3QgSW50ZXJuYWwgY29tcG9uZW50IGluc3Rh
bmNlCisgKi8KK2Z1bmN0aW9uIGV4ZWN1dGVEaXNwYXRjaChldmVudCwgc2ltdWxhdGVkLCBsaXN0
ZW5lciwgaW5zdCkgeworICB2YXIgdHlwZSA9IGV2ZW50LnR5cGUgfHwgJ3Vua25vd24tZXZlbnQn
OworICBldmVudC5jdXJyZW50VGFyZ2V0ID0gRXZlbnRQbHVnaW5VdGlscy5nZXROb2RlRnJvbUlu
c3RhbmNlKGluc3QpOworICBpZiAoc2ltdWxhdGVkKSB7CisgICAgUmVhY3RFcnJvclV0aWxzLmlu
dm9rZUd1YXJkZWRDYWxsYmFja1dpdGhDYXRjaCh0eXBlLCBsaXN0ZW5lciwgZXZlbnQpOworICB9
IGVsc2UgeworICAgIFJlYWN0RXJyb3JVdGlscy5pbnZva2VHdWFyZGVkQ2FsbGJhY2sodHlwZSwg
bGlzdGVuZXIsIGV2ZW50KTsKKyAgfQorICBldmVudC5jdXJyZW50VGFyZ2V0ID0gbnVsbDsKK30K
KworLyoqCisgKiBTdGFuZGFyZC9zaW1wbGUgaXRlcmF0aW9uIHRocm91Z2ggYW4gZXZlbnQncyBj
b2xsZWN0ZWQgZGlzcGF0Y2hlcy4KKyAqLworZnVuY3Rpb24gZXhlY3V0ZURpc3BhdGNoZXNJbk9y
ZGVyKGV2ZW50LCBzaW11bGF0ZWQpIHsKKyAgdmFyIGRpc3BhdGNoTGlzdGVuZXJzID0gZXZlbnQu
X2Rpc3BhdGNoTGlzdGVuZXJzOworICB2YXIgZGlzcGF0Y2hJbnN0YW5jZXMgPSBldmVudC5fZGlz
cGF0Y2hJbnN0YW5jZXM7CisgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsK
KyAgICB2YWxpZGF0ZUV2ZW50RGlzcGF0Y2hlcyhldmVudCk7CisgIH0KKyAgaWYgKEFycmF5Lmlz
QXJyYXkoZGlzcGF0Y2hMaXN0ZW5lcnMpKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkaXNw
YXRjaExpc3RlbmVycy5sZW5ndGg7IGkrKykgeworICAgICAgaWYgKGV2ZW50LmlzUHJvcGFnYXRp
b25TdG9wcGVkKCkpIHsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICAvLyBMaXN0ZW5l
cnMgYW5kIEluc3RhbmNlcyBhcmUgdHdvIHBhcmFsbGVsIGFycmF5cyB0aGF0IGFyZSBhbHdheXMg
aW4gc3luYy4KKyAgICAgIGV4ZWN1dGVEaXNwYXRjaChldmVudCwgc2ltdWxhdGVkLCBkaXNwYXRj
aExpc3RlbmVyc1tpXSwgZGlzcGF0Y2hJbnN0YW5jZXNbaV0pOworICAgIH0KKyAgfSBlbHNlIGlm
IChkaXNwYXRjaExpc3RlbmVycykgeworICAgIGV4ZWN1dGVEaXNwYXRjaChldmVudCwgc2ltdWxh
dGVkLCBkaXNwYXRjaExpc3RlbmVycywgZGlzcGF0Y2hJbnN0YW5jZXMpOworICB9CisgIGV2ZW50
Ll9kaXNwYXRjaExpc3RlbmVycyA9IG51bGw7CisgIGV2ZW50Ll9kaXNwYXRjaEluc3RhbmNlcyA9
IG51bGw7Cit9CisKKy8qKgorICogU3RhbmRhcmQvc2ltcGxlIGl0ZXJhdGlvbiB0aHJvdWdoIGFu
IGV2ZW50J3MgY29sbGVjdGVkIGRpc3BhdGNoZXMsIGJ1dCBzdG9wcworICogYXQgdGhlIGZpcnN0
IGRpc3BhdGNoIGV4ZWN1dGlvbiByZXR1cm5pbmcgdHJ1ZSwgYW5kIHJldHVybnMgdGhhdCBpZC4K
KyAqCisgKiBAcmV0dXJuIHs/c3RyaW5nfSBpZCBvZiB0aGUgZmlyc3QgZGlzcGF0Y2ggZXhlY3V0
aW9uIHdobydzIGxpc3RlbmVyIHJldHVybnMKKyAqIHRydWUsIG9yIG51bGwgaWYgbm8gbGlzdGVu
ZXIgcmV0dXJuZWQgdHJ1ZS4KKyAqLworZnVuY3Rpb24gZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVy
U3RvcEF0VHJ1ZUltcGwoZXZlbnQpIHsKKyAgdmFyIGRpc3BhdGNoTGlzdGVuZXJzID0gZXZlbnQu
X2Rpc3BhdGNoTGlzdGVuZXJzOworICB2YXIgZGlzcGF0Y2hJbnN0YW5jZXMgPSBldmVudC5fZGlz
cGF0Y2hJbnN0YW5jZXM7CisgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsK
KyAgICB2YWxpZGF0ZUV2ZW50RGlzcGF0Y2hlcyhldmVudCk7CisgIH0KKyAgaWYgKEFycmF5Lmlz
QXJyYXkoZGlzcGF0Y2hMaXN0ZW5lcnMpKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkaXNw
YXRjaExpc3RlbmVycy5sZW5ndGg7IGkrKykgeworICAgICAgaWYgKGV2ZW50LmlzUHJvcGFnYXRp
b25TdG9wcGVkKCkpIHsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICAvLyBMaXN0ZW5l
cnMgYW5kIEluc3RhbmNlcyBhcmUgdHdvIHBhcmFsbGVsIGFycmF5cyB0aGF0IGFyZSBhbHdheXMg
aW4gc3luYy4KKyAgICAgIGlmIChkaXNwYXRjaExpc3RlbmVyc1tpXShldmVudCwgZGlzcGF0Y2hJ
bnN0YW5jZXNbaV0pKSB7CisgICAgICAgIHJldHVybiBkaXNwYXRjaEluc3RhbmNlc1tpXTsKKyAg
ICAgIH0KKyAgICB9CisgIH0gZWxzZSBpZiAoZGlzcGF0Y2hMaXN0ZW5lcnMpIHsKKyAgICBpZiAo
ZGlzcGF0Y2hMaXN0ZW5lcnMoZXZlbnQsIGRpc3BhdGNoSW5zdGFuY2VzKSkgeworICAgICAgcmV0
dXJuIGRpc3BhdGNoSW5zdGFuY2VzOworICAgIH0KKyAgfQorICByZXR1cm4gbnVsbDsKK30KKwor
LyoqCisgKiBAc2VlIGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlclN0b3BBdFRydWVJbXBsCisgKi8K
K2Z1bmN0aW9uIGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlclN0b3BBdFRydWUoZXZlbnQpIHsKKyAg
dmFyIHJldCA9IGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlclN0b3BBdFRydWVJbXBsKGV2ZW50KTsK
KyAgZXZlbnQuX2Rpc3BhdGNoSW5zdGFuY2VzID0gbnVsbDsKKyAgZXZlbnQuX2Rpc3BhdGNoTGlz
dGVuZXJzID0gbnVsbDsKKyAgcmV0dXJuIHJldDsKK30KKworLyoqCisgKiBFeGVjdXRpb24gb2Yg
YSAiZGlyZWN0IiBkaXNwYXRjaCAtIHRoZXJlIG11c3QgYmUgYXQgbW9zdCBvbmUgZGlzcGF0Y2gK
KyAqIGFjY3VtdWxhdGVkIG9uIHRoZSBldmVudCBvciBpdCBpcyBjb25zaWRlcmVkIGFuIGVycm9y
LiBJdCBkb2Vzbid0IHJlYWxseSBtYWtlCisgKiBzZW5zZSBmb3IgYW4gZXZlbnQgd2l0aCBtdWx0
aXBsZSBkaXNwYXRjaGVzIChidWJibGVkKSB0byBrZWVwIHRyYWNrIG9mIHRoZQorICogcmV0dXJu
IHZhbHVlcyBhdCBlYWNoIGRpc3BhdGNoIGV4ZWN1dGlvbiwgYnV0IGl0IGRvZXMgdGVuZCB0byBt
YWtlIHNlbnNlIHdoZW4KKyAqIGRlYWxpbmcgd2l0aCAiZGlyZWN0IiBkaXNwYXRjaGVzLgorICoK
KyAqIEByZXR1cm4geyp9IFRoZSByZXR1cm4gdmFsdWUgb2YgZXhlY3V0aW5nIHRoZSBzaW5nbGUg
ZGlzcGF0Y2guCisgKi8KK2Z1bmN0aW9uIGV4ZWN1dGVEaXJlY3REaXNwYXRjaChldmVudCkgewor
ICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgdmFsaWRhdGVFdmVu
dERpc3BhdGNoZXMoZXZlbnQpOworICB9CisgIHZhciBkaXNwYXRjaExpc3RlbmVyID0gZXZlbnQu
X2Rpc3BhdGNoTGlzdGVuZXJzOworICB2YXIgZGlzcGF0Y2hJbnN0YW5jZSA9IGV2ZW50Ll9kaXNw
YXRjaEluc3RhbmNlczsKKyAgISFBcnJheS5pc0FycmF5KGRpc3BhdGNoTGlzdGVuZXIpID8gImRl
dmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnZXhlY3V0ZURp
cmVjdERpc3BhdGNoKC4uLik6IEludmFsaWQgYGV2ZW50YC4nKSA6IF9wcm9kSW52YXJpYW50KCcx
MDMnKSA6IHZvaWQgMDsKKyAgZXZlbnQuY3VycmVudFRhcmdldCA9IGRpc3BhdGNoTGlzdGVuZXIg
PyBFdmVudFBsdWdpblV0aWxzLmdldE5vZGVGcm9tSW5zdGFuY2UoZGlzcGF0Y2hJbnN0YW5jZSkg
OiBudWxsOworICB2YXIgcmVzID0gZGlzcGF0Y2hMaXN0ZW5lciA/IGRpc3BhdGNoTGlzdGVuZXIo
ZXZlbnQpIDogbnVsbDsKKyAgZXZlbnQuY3VycmVudFRhcmdldCA9IG51bGw7CisgIGV2ZW50Ll9k
aXNwYXRjaExpc3RlbmVycyA9IG51bGw7CisgIGV2ZW50Ll9kaXNwYXRjaEluc3RhbmNlcyA9IG51
bGw7CisgIHJldHVybiByZXM7Cit9CisKKy8qKgorICogQHBhcmFtIHtTeW50aGV0aWNFdmVudH0g
ZXZlbnQKKyAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWZmIG51bWJlciBvZiBkaXNwYXRjaGVz
IGFjY3VtdWxhdGVkIGlzIGdyZWF0ZXIgdGhhbiAwLgorICovCitmdW5jdGlvbiBoYXNEaXNwYXRj
aGVzKGV2ZW50KSB7CisgIHJldHVybiAhIWV2ZW50Ll9kaXNwYXRjaExpc3RlbmVyczsKK30KKwor
LyoqCisgKiBHZW5lcmFsIHV0aWxpdGllcyB0aGF0IGFyZSB1c2VmdWwgaW4gY3JlYXRpbmcgY3Vz
dG9tIEV2ZW50IFBsdWdpbnMuCisgKi8KK3ZhciBFdmVudFBsdWdpblV0aWxzID0geworICBpc0Vu
ZGlzaDogaXNFbmRpc2gsCisgIGlzTW92ZWlzaDogaXNNb3ZlaXNoLAorICBpc1N0YXJ0aXNoOiBp
c1N0YXJ0aXNoLAorCisgIGV4ZWN1dGVEaXJlY3REaXNwYXRjaDogZXhlY3V0ZURpcmVjdERpc3Bh
dGNoLAorICBleGVjdXRlRGlzcGF0Y2hlc0luT3JkZXI6IGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRl
ciwKKyAgZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyU3RvcEF0VHJ1ZTogZXhlY3V0ZURpc3BhdGNo
ZXNJbk9yZGVyU3RvcEF0VHJ1ZSwKKyAgaGFzRGlzcGF0Y2hlczogaGFzRGlzcGF0Y2hlcywKKwor
ICBnZXRJbnN0YW5jZUZyb21Ob2RlOiBmdW5jdGlvbiAobm9kZSkgeworICAgIHJldHVybiBDb21w
b25lbnRUcmVlLmdldEluc3RhbmNlRnJvbU5vZGUobm9kZSk7CisgIH0sCisgIGdldE5vZGVGcm9t
SW5zdGFuY2U6IGZ1bmN0aW9uIChub2RlKSB7CisgICAgcmV0dXJuIENvbXBvbmVudFRyZWUuZ2V0
Tm9kZUZyb21JbnN0YW5jZShub2RlKTsKKyAgfSwKKyAgaXNBbmNlc3RvcjogZnVuY3Rpb24gKGEs
IGIpIHsKKyAgICByZXR1cm4gVHJlZVRyYXZlcnNhbC5pc0FuY2VzdG9yKGEsIGIpOworICB9LAor
ICBnZXRMb3dlc3RDb21tb25BbmNlc3RvcjogZnVuY3Rpb24gKGEsIGIpIHsKKyAgICByZXR1cm4g
VHJlZVRyYXZlcnNhbC5nZXRMb3dlc3RDb21tb25BbmNlc3RvcihhLCBiKTsKKyAgfSwKKyAgZ2V0
UGFyZW50SW5zdGFuY2U6IGZ1bmN0aW9uIChpbnN0KSB7CisgICAgcmV0dXJuIFRyZWVUcmF2ZXJz
YWwuZ2V0UGFyZW50SW5zdGFuY2UoaW5zdCk7CisgIH0sCisgIHRyYXZlcnNlVHdvUGhhc2U6IGZ1
bmN0aW9uICh0YXJnZXQsIGZuLCBhcmcpIHsKKyAgICByZXR1cm4gVHJlZVRyYXZlcnNhbC50cmF2
ZXJzZVR3b1BoYXNlKHRhcmdldCwgZm4sIGFyZyk7CisgIH0sCisgIHRyYXZlcnNlRW50ZXJMZWF2
ZTogZnVuY3Rpb24gKGZyb20sIHRvLCBmbiwgYXJnRnJvbSwgYXJnVG8pIHsKKyAgICByZXR1cm4g
VHJlZVRyYXZlcnNhbC50cmF2ZXJzZUVudGVyTGVhdmUoZnJvbSwgdG8sIGZuLCBhcmdGcm9tLCBh
cmdUbyk7CisgIH0sCisKKyAgaW5qZWN0aW9uOiBpbmplY3Rpb24KK307CisKK21vZHVsZS5leHBv
cnRzID0gRXZlbnRQbHVnaW5VdGlsczsKK30seyIxMjUiOjEyNSwiMTUwIjoxNTAsIjE1NyI6MTU3
LCI1NSI6NTV9XSwyMDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAq
IENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgRXZlbnRQbHVn
aW5IdWIgPSBfZGVyZXFfKDE3KTsKK3ZhciBFdmVudFBsdWdpblV0aWxzID0gX2RlcmVxXygxOSk7
CisKK3ZhciBhY2N1bXVsYXRlSW50byA9IF9kZXJlcV8oMTAyKTsKK3ZhciBmb3JFYWNoQWNjdW11
bGF0ZWQgPSBfZGVyZXFfKDExMCk7Cit2YXIgd2FybmluZyA9IF9kZXJlcV8oMTU3KTsKKwordmFy
IGdldExpc3RlbmVyID0gRXZlbnRQbHVnaW5IdWIuZ2V0TGlzdGVuZXI7CisKKy8qKgorICogU29t
ZSBldmVudCB0eXBlcyBoYXZlIGEgbm90aW9uIG9mIGRpZmZlcmVudCByZWdpc3RyYXRpb24gbmFt
ZXMgZm9yIGRpZmZlcmVudAorICogInBoYXNlcyIgb2YgcHJvcGFnYXRpb24uIFRoaXMgZmluZHMg
bGlzdGVuZXJzIGJ5IGEgZ2l2ZW4gcGhhc2UuCisgKi8KK2Z1bmN0aW9uIGxpc3RlbmVyQXRQaGFz
ZShpbnN0LCBldmVudCwgcHJvcGFnYXRpb25QaGFzZSkgeworICB2YXIgcmVnaXN0cmF0aW9uTmFt
ZSA9IGV2ZW50LmRpc3BhdGNoQ29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzW3Byb3BhZ2F0
aW9uUGhhc2VdOworICByZXR1cm4gZ2V0TGlzdGVuZXIoaW5zdCwgcmVnaXN0cmF0aW9uTmFtZSk7
Cit9CisKKy8qKgorICogVGFncyBhIGBTeW50aGV0aWNFdmVudGAgd2l0aCBkaXNwYXRjaGVkIGxp
c3RlbmVycy4gQ3JlYXRpbmcgdGhpcyBmdW5jdGlvbgorICogaGVyZSwgYWxsb3dzIHVzIHRvIG5v
dCBoYXZlIHRvIGJpbmQgb3IgY3JlYXRlIGZ1bmN0aW9ucyBmb3IgZWFjaCBldmVudC4KKyAqIE11
dGF0aW5nIHRoZSBldmVudCdzIG1lbWJlcnMgYWxsb3dzIHVzIHRvIG5vdCBoYXZlIHRvIGNyZWF0
ZSBhIHdyYXBwaW5nCisgKiAiZGlzcGF0Y2giIG9iamVjdCB0aGF0IHBhaXJzIHRoZSBldmVudCB3
aXRoIHRoZSBsaXN0ZW5lci4KKyAqLworZnVuY3Rpb24gYWNjdW11bGF0ZURpcmVjdGlvbmFsRGlz
cGF0Y2hlcyhpbnN0LCBwaGFzZSwgZXZlbnQpIHsKKyAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdw
cm9kdWN0aW9uJykgeworICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5p
bmcoaW5zdCwgJ0Rpc3BhdGNoaW5nIGluc3QgbXVzdCBub3QgYmUgbnVsbCcpIDogdm9pZCAwOwor
ICB9CisgIHZhciBsaXN0ZW5lciA9IGxpc3RlbmVyQXRQaGFzZShpbnN0LCBldmVudCwgcGhhc2Up
OworICBpZiAobGlzdGVuZXIpIHsKKyAgICBldmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnMgPSBhY2N1
bXVsYXRlSW50byhldmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnMsIGxpc3RlbmVyKTsKKyAgICBldmVu
dC5fZGlzcGF0Y2hJbnN0YW5jZXMgPSBhY2N1bXVsYXRlSW50byhldmVudC5fZGlzcGF0Y2hJbnN0
YW5jZXMsIGluc3QpOworICB9Cit9CisKKy8qKgorICogQ29sbGVjdCBkaXNwYXRjaGVzIChtdXN0
IGJlIGVudGlyZWx5IGNvbGxlY3RlZCBiZWZvcmUgZGlzcGF0Y2hpbmcgLSBzZWUgdW5pdAorICog
dGVzdHMpLiBMYXppbHkgYWxsb2NhdGUgdGhlIGFycmF5IHRvIGNvbnNlcnZlIG1lbW9yeS4gIFdl
IG11c3QgbG9vcCB0aHJvdWdoCisgKiBlYWNoIGV2ZW50IGFuZCBwZXJmb3JtIHRoZSB0cmF2ZXJz
YWwgZm9yIGVhY2ggb25lLiBXZSBjYW5ub3QgcGVyZm9ybSBhCisgKiBzaW5nbGUgdHJhdmVyc2Fs
IGZvciB0aGUgZW50aXJlIGNvbGxlY3Rpb24gb2YgZXZlbnRzIGJlY2F1c2UgZWFjaCBldmVudCBt
YXkKKyAqIGhhdmUgYSBkaWZmZXJlbnQgdGFyZ2V0LgorICovCitmdW5jdGlvbiBhY2N1bXVsYXRl
VHdvUGhhc2VEaXNwYXRjaGVzU2luZ2xlKGV2ZW50KSB7CisgIGlmIChldmVudCAmJiBldmVudC5k
aXNwYXRjaENvbmZpZy5waGFzZWRSZWdpc3RyYXRpb25OYW1lcykgeworICAgIEV2ZW50UGx1Z2lu
VXRpbHMudHJhdmVyc2VUd29QaGFzZShldmVudC5fdGFyZ2V0SW5zdCwgYWNjdW11bGF0ZURpcmVj
dGlvbmFsRGlzcGF0Y2hlcywgZXZlbnQpOworICB9Cit9CisKKy8qKgorICogU2FtZSBhcyBgYWNj
dW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlc1NpbmdsZWAsIGJ1dCBza2lwcyBvdmVyIHRoZSB0YXJn
ZXRJRC4KKyAqLworZnVuY3Rpb24gYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlc1NpbmdsZVNr
aXBUYXJnZXQoZXZlbnQpIHsKKyAgaWYgKGV2ZW50ICYmIGV2ZW50LmRpc3BhdGNoQ29uZmlnLnBo
YXNlZFJlZ2lzdHJhdGlvbk5hbWVzKSB7CisgICAgdmFyIHRhcmdldEluc3QgPSBldmVudC5fdGFy
Z2V0SW5zdDsKKyAgICB2YXIgcGFyZW50SW5zdCA9IHRhcmdldEluc3QgPyBFdmVudFBsdWdpblV0
aWxzLmdldFBhcmVudEluc3RhbmNlKHRhcmdldEluc3QpIDogbnVsbDsKKyAgICBFdmVudFBsdWdp
blV0aWxzLnRyYXZlcnNlVHdvUGhhc2UocGFyZW50SW5zdCwgYWNjdW11bGF0ZURpcmVjdGlvbmFs
RGlzcGF0Y2hlcywgZXZlbnQpOworICB9Cit9CisKKy8qKgorICogQWNjdW11bGF0ZXMgd2l0aG91
dCByZWdhcmQgdG8gZGlyZWN0aW9uLCBkb2VzIG5vdCBsb29rIGZvciBwaGFzZWQKKyAqIHJlZ2lz
dHJhdGlvbiBuYW1lcy4gU2FtZSBhcyBgYWNjdW11bGF0ZURpcmVjdERpc3BhdGNoZXNTaW5nbGVg
IGJ1dCB3aXRob3V0CisgKiByZXF1aXJpbmcgdGhhdCB0aGUgYGRpc3BhdGNoTWFya2VyYCBiZSB0
aGUgc2FtZSBhcyB0aGUgZGlzcGF0Y2hlZCBJRC4KKyAqLworZnVuY3Rpb24gYWNjdW11bGF0ZURp
c3BhdGNoZXMoaW5zdCwgaWdub3JlZERpcmVjdGlvbiwgZXZlbnQpIHsKKyAgaWYgKGV2ZW50ICYm
IGV2ZW50LmRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUpIHsKKyAgICB2YXIgcmVnaXN0
cmF0aW9uTmFtZSA9IGV2ZW50LmRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWU7CisgICAg
dmFyIGxpc3RlbmVyID0gZ2V0TGlzdGVuZXIoaW5zdCwgcmVnaXN0cmF0aW9uTmFtZSk7CisgICAg
aWYgKGxpc3RlbmVyKSB7CisgICAgICBldmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnMgPSBhY2N1bXVs
YXRlSW50byhldmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnMsIGxpc3RlbmVyKTsKKyAgICAgIGV2ZW50
Ll9kaXNwYXRjaEluc3RhbmNlcyA9IGFjY3VtdWxhdGVJbnRvKGV2ZW50Ll9kaXNwYXRjaEluc3Rh
bmNlcywgaW5zdCk7CisgICAgfQorICB9Cit9CisKKy8qKgorICogQWNjdW11bGF0ZXMgZGlzcGF0
Y2hlcyBvbiBhbiBgU3ludGhldGljRXZlbnRgLCBidXQgb25seSBmb3IgdGhlCisgKiBgZGlzcGF0
Y2hNYXJrZXJgLgorICogQHBhcmFtIHtTeW50aGV0aWNFdmVudH0gZXZlbnQKKyAqLworZnVuY3Rp
b24gYWNjdW11bGF0ZURpcmVjdERpc3BhdGNoZXNTaW5nbGUoZXZlbnQpIHsKKyAgaWYgKGV2ZW50
ICYmIGV2ZW50LmRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUpIHsKKyAgICBhY2N1bXVs
YXRlRGlzcGF0Y2hlcyhldmVudC5fdGFyZ2V0SW5zdCwgbnVsbCwgZXZlbnQpOworICB9Cit9CisK
K2Z1bmN0aW9uIGFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXMoZXZlbnRzKSB7CisgIGZvckVh
Y2hBY2N1bXVsYXRlZChldmVudHMsIGFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXNTaW5nbGUp
OworfQorCitmdW5jdGlvbiBhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzU2tpcFRhcmdldChl
dmVudHMpIHsKKyAgZm9yRWFjaEFjY3VtdWxhdGVkKGV2ZW50cywgYWNjdW11bGF0ZVR3b1BoYXNl
RGlzcGF0Y2hlc1NpbmdsZVNraXBUYXJnZXQpOworfQorCitmdW5jdGlvbiBhY2N1bXVsYXRlRW50
ZXJMZWF2ZURpc3BhdGNoZXMobGVhdmUsIGVudGVyLCBmcm9tLCB0bykgeworICBFdmVudFBsdWdp
blV0aWxzLnRyYXZlcnNlRW50ZXJMZWF2ZShmcm9tLCB0bywgYWNjdW11bGF0ZURpc3BhdGNoZXMs
IGxlYXZlLCBlbnRlcik7Cit9CisKK2Z1bmN0aW9uIGFjY3VtdWxhdGVEaXJlY3REaXNwYXRjaGVz
KGV2ZW50cykgeworICBmb3JFYWNoQWNjdW11bGF0ZWQoZXZlbnRzLCBhY2N1bXVsYXRlRGlyZWN0
RGlzcGF0Y2hlc1NpbmdsZSk7Cit9CisKKy8qKgorICogQSBzbWFsbCBzZXQgb2YgcHJvcGFnYXRp
b24gcGF0dGVybnMsIGVhY2ggb2Ygd2hpY2ggd2lsbCBhY2NlcHQgYSBzbWFsbCBhbW91bnQKKyAq
IG9mIGluZm9ybWF0aW9uLCBhbmQgZ2VuZXJhdGUgYSBzZXQgb2YgImRpc3BhdGNoIHJlYWR5IGV2
ZW50IG9iamVjdHMiIC0gd2hpY2gKKyAqIGFyZSBzZXRzIG9mIGV2ZW50cyB0aGF0IGhhdmUgYWxy
ZWFkeSBiZWVuIGFubm90YXRlZCB3aXRoIGEgc2V0IG9mIGRpc3BhdGNoZWQKKyAqIGxpc3RlbmVy
IGZ1bmN0aW9ucy9pZHMuIFRoZSBBUEkgaXMgZGVzaWduZWQgdGhpcyB3YXkgdG8gZGlzY291cmFn
ZSB0aGVzZQorICogcHJvcGFnYXRpb24gc3RyYXRlZ2llcyBmcm9tIGFjdHVhbGx5IGV4ZWN1dGlu
ZyB0aGUgZGlzcGF0Y2hlcywgc2luY2Ugd2UKKyAqIGFsd2F5cyB3YW50IHRvIGNvbGxlY3QgdGhl
IGVudGlyZSBzZXQgb2YgZGlzcGF0Y2hlcyBiZWZvcmUgZXhlY3V0aW5nIGV2ZW50IGEKKyAqIHNp
bmdsZSBvbmUuCisgKgorICogQGNvbnN0cnVjdG9yIEV2ZW50UHJvcGFnYXRvcnMKKyAqLwordmFy
IEV2ZW50UHJvcGFnYXRvcnMgPSB7CisgIGFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXM6IGFj
Y3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXMsCisgIGFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNo
ZXNTa2lwVGFyZ2V0OiBhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzU2tpcFRhcmdldCwKKyAg
YWNjdW11bGF0ZURpcmVjdERpc3BhdGNoZXM6IGFjY3VtdWxhdGVEaXJlY3REaXNwYXRjaGVzLAor
ICBhY2N1bXVsYXRlRW50ZXJMZWF2ZURpc3BhdGNoZXM6IGFjY3VtdWxhdGVFbnRlckxlYXZlRGlz
cGF0Y2hlcworfTsKKworbW9kdWxlLmV4cG9ydHMgPSBFdmVudFByb3BhZ2F0b3JzOworfSx7IjEw
MiI6MTAyLCIxMTAiOjExMCwiMTU3IjoxNTcsIjE3IjoxNywiMTkiOjE5fV0sMjE6W2Z1bmN0aW9u
KF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICov
CisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9hc3NpZ24gPSBfZGVyZXFfKDE1OCk7CisKK3ZhciBQ
b29sZWRDbGFzcyA9IF9kZXJlcV8oMjUpOworCit2YXIgZ2V0VGV4dENvbnRlbnRBY2Nlc3NvciA9
IF9kZXJlcV8oMTE5KTsKKworLyoqCisgKiBUaGlzIGhlbHBlciBjbGFzcyBzdG9yZXMgaW5mb3Jt
YXRpb24gYWJvdXQgdGV4dCBjb250ZW50IG9mIGEgdGFyZ2V0IG5vZGUsCisgKiBhbGxvd2luZyBj
b21wYXJpc29uIG9mIGNvbnRlbnQgYmVmb3JlIGFuZCBhZnRlciBhIGdpdmVuIGV2ZW50LgorICoK
KyAqIElkZW50aWZ5IHRoZSBub2RlIHdoZXJlIHNlbGVjdGlvbiBjdXJyZW50bHkgYmVnaW5zLCB0
aGVuIG9ic2VydmUKKyAqIGJvdGggaXRzIHRleHQgY29udGVudCBhbmQgaXRzIGN1cnJlbnQgcG9z
aXRpb24gaW4gdGhlIERPTS4gU2luY2UgdGhlCisgKiBicm93c2VyIG1heSBuYXRpdmVseSByZXBs
YWNlIHRoZSB0YXJnZXQgbm9kZSBkdXJpbmcgY29tcG9zaXRpb24sIHdlIGNhbgorICogdXNlIGl0
cyBwb3NpdGlvbiB0byBmaW5kIGl0cyByZXBsYWNlbWVudC4KKyAqCisgKiBAcGFyYW0ge0RPTUV2
ZW50VGFyZ2V0fSByb290CisgKi8KK2Z1bmN0aW9uIEZhbGxiYWNrQ29tcG9zaXRpb25TdGF0ZShy
b290KSB7CisgIHRoaXMuX3Jvb3QgPSByb290OworICB0aGlzLl9zdGFydFRleHQgPSB0aGlzLmdl
dFRleHQoKTsKKyAgdGhpcy5fZmFsbGJhY2tUZXh0ID0gbnVsbDsKK30KKworX2Fzc2lnbihGYWxs
YmFja0NvbXBvc2l0aW9uU3RhdGUucHJvdG90eXBlLCB7CisgIGRlc3RydWN0b3I6IGZ1bmN0aW9u
ICgpIHsKKyAgICB0aGlzLl9yb290ID0gbnVsbDsKKyAgICB0aGlzLl9zdGFydFRleHQgPSBudWxs
OworICAgIHRoaXMuX2ZhbGxiYWNrVGV4dCA9IG51bGw7CisgIH0sCisKKyAgLyoqCisgICAqIEdl
dCBjdXJyZW50IHRleHQgb2YgaW5wdXQuCisgICAqCisgICAqIEByZXR1cm4ge3N0cmluZ30KKyAg
ICovCisgIGdldFRleHQ6IGZ1bmN0aW9uICgpIHsKKyAgICBpZiAoJ3ZhbHVlJyBpbiB0aGlzLl9y
b290KSB7CisgICAgICByZXR1cm4gdGhpcy5fcm9vdC52YWx1ZTsKKyAgICB9CisgICAgcmV0dXJu
IHRoaXMuX3Jvb3RbZ2V0VGV4dENvbnRlbnRBY2Nlc3NvcigpXTsKKyAgfSwKKworICAvKioKKyAg
ICogRGV0ZXJtaW5lIHRoZSBkaWZmZXJpbmcgc3Vic3RyaW5nIGJldHdlZW4gdGhlIGluaXRpYWxs
eSBzdG9yZWQKKyAgICogdGV4dCBjb250ZW50IGFuZCB0aGUgY3VycmVudCBjb250ZW50LgorICAg
KgorICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAqLworICBnZXREYXRhOiBmdW5jdGlvbiAoKSB7
CisgICAgaWYgKHRoaXMuX2ZhbGxiYWNrVGV4dCkgeworICAgICAgcmV0dXJuIHRoaXMuX2ZhbGxi
YWNrVGV4dDsKKyAgICB9CisKKyAgICB2YXIgc3RhcnQ7CisgICAgdmFyIHN0YXJ0VmFsdWUgPSB0
aGlzLl9zdGFydFRleHQ7CisgICAgdmFyIHN0YXJ0TGVuZ3RoID0gc3RhcnRWYWx1ZS5sZW5ndGg7
CisgICAgdmFyIGVuZDsKKyAgICB2YXIgZW5kVmFsdWUgPSB0aGlzLmdldFRleHQoKTsKKyAgICB2
YXIgZW5kTGVuZ3RoID0gZW5kVmFsdWUubGVuZ3RoOworCisgICAgZm9yIChzdGFydCA9IDA7IHN0
YXJ0IDwgc3RhcnRMZW5ndGg7IHN0YXJ0KyspIHsKKyAgICAgIGlmIChzdGFydFZhbHVlW3N0YXJ0
XSAhPT0gZW5kVmFsdWVbc3RhcnRdKSB7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBtaW5FbmQgPSBzdGFydExlbmd0aCAtIHN0YXJ0OworICAgIGZvciAoZW5kID0g
MTsgZW5kIDw9IG1pbkVuZDsgZW5kKyspIHsKKyAgICAgIGlmIChzdGFydFZhbHVlW3N0YXJ0TGVu
Z3RoIC0gZW5kXSAhPT0gZW5kVmFsdWVbZW5kTGVuZ3RoIC0gZW5kXSkgeworICAgICAgICBicmVh
azsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgc2xpY2VUYWlsID0gZW5kID4gMSA/IDEgLSBl
bmQgOiB1bmRlZmluZWQ7CisgICAgdGhpcy5fZmFsbGJhY2tUZXh0ID0gZW5kVmFsdWUuc2xpY2Uo
c3RhcnQsIHNsaWNlVGFpbCk7CisgICAgcmV0dXJuIHRoaXMuX2ZhbGxiYWNrVGV4dDsKKyAgfQor
fSk7CisKK1Bvb2xlZENsYXNzLmFkZFBvb2xpbmdUbyhGYWxsYmFja0NvbXBvc2l0aW9uU3RhdGUp
OworCittb2R1bGUuZXhwb3J0cyA9IEZhbGxiYWNrQ29tcG9zaXRpb25TdGF0ZTsKK30seyIxMTki
OjExOSwiMTU4IjoxNTgsIjI1IjoyNX1dLDIyOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBv
cnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisK
K3ZhciBET01Qcm9wZXJ0eSA9IF9kZXJlcV8oMTEpOworCit2YXIgTVVTVF9VU0VfUFJPUEVSVFkg
PSBET01Qcm9wZXJ0eS5pbmplY3Rpb24uTVVTVF9VU0VfUFJPUEVSVFk7Cit2YXIgSEFTX0JPT0xF
QU5fVkFMVUUgPSBET01Qcm9wZXJ0eS5pbmplY3Rpb24uSEFTX0JPT0xFQU5fVkFMVUU7Cit2YXIg
SEFTX05VTUVSSUNfVkFMVUUgPSBET01Qcm9wZXJ0eS5pbmplY3Rpb24uSEFTX05VTUVSSUNfVkFM
VUU7Cit2YXIgSEFTX1BPU0lUSVZFX05VTUVSSUNfVkFMVUUgPSBET01Qcm9wZXJ0eS5pbmplY3Rp
b24uSEFTX1BPU0lUSVZFX05VTUVSSUNfVkFMVUU7Cit2YXIgSEFTX09WRVJMT0FERURfQk9PTEVB
Tl9WQUxVRSA9IERPTVByb3BlcnR5LmluamVjdGlvbi5IQVNfT1ZFUkxPQURFRF9CT09MRUFOX1ZB
TFVFOworCit2YXIgSFRNTERPTVByb3BlcnR5Q29uZmlnID0geworICBpc0N1c3RvbUF0dHJpYnV0
ZTogUmVnRXhwLnByb3RvdHlwZS50ZXN0LmJpbmQobmV3IFJlZ0V4cCgnXihkYXRhfGFyaWEpLVsn
ICsgRE9NUHJvcGVydHkuQVRUUklCVVRFX05BTUVfQ0hBUiArICddKiQnKSksCisgIFByb3BlcnRp
ZXM6IHsKKyAgICAvKioKKyAgICAgKiBTdGFuZGFyZCBQcm9wZXJ0aWVzCisgICAgICovCisgICAg
YWNjZXB0OiAwLAorICAgIGFjY2VwdENoYXJzZXQ6IDAsCisgICAgYWNjZXNzS2V5OiAwLAorICAg
IGFjdGlvbjogMCwKKyAgICBhbGxvd0Z1bGxTY3JlZW46IEhBU19CT09MRUFOX1ZBTFVFLAorICAg
IGFsbG93VHJhbnNwYXJlbmN5OiAwLAorICAgIGFsdDogMCwKKyAgICAvLyBzcGVjaWZpZXMgdGFy
Z2V0IGNvbnRleHQgZm9yIGxpbmtzIHdpdGggYHByZWxvYWRgIHR5cGUKKyAgICBhczogMCwKKyAg
ICBhc3luYzogSEFTX0JPT0xFQU5fVkFMVUUsCisgICAgYXV0b0NvbXBsZXRlOiAwLAorICAgIC8v
IGF1dG9Gb2N1cyBpcyBwb2x5ZmlsbGVkL25vcm1hbGl6ZWQgYnkgQXV0b0ZvY3VzVXRpbHMKKyAg
ICAvLyBhdXRvRm9jdXM6IEhBU19CT09MRUFOX1ZBTFVFLAorICAgIGF1dG9QbGF5OiBIQVNfQk9P
TEVBTl9WQUxVRSwKKyAgICBjYXB0dXJlOiBIQVNfQk9PTEVBTl9WQUxVRSwKKyAgICBjZWxsUGFk
ZGluZzogMCwKKyAgICBjZWxsU3BhY2luZzogMCwKKyAgICBjaGFyU2V0OiAwLAorICAgIGNoYWxs
ZW5nZTogMCwKKyAgICBjaGVja2VkOiBNVVNUX1VTRV9QUk9QRVJUWSB8IEhBU19CT09MRUFOX1ZB
TFVFLAorICAgIGNpdGU6IDAsCisgICAgY2xhc3NJRDogMCwKKyAgICBjbGFzc05hbWU6IDAsCisg
ICAgY29sczogSEFTX1BPU0lUSVZFX05VTUVSSUNfVkFMVUUsCisgICAgY29sU3BhbjogMCwKKyAg
ICBjb250ZW50OiAwLAorICAgIGNvbnRlbnRFZGl0YWJsZTogMCwKKyAgICBjb250ZXh0TWVudTog
MCwKKyAgICBjb250cm9sczogSEFTX0JPT0xFQU5fVkFMVUUsCisgICAgY29vcmRzOiAwLAorICAg
IGNyb3NzT3JpZ2luOiAwLAorICAgIGRhdGE6IDAsIC8vIEZvciBgPG9iamVjdCAvPmAgYWN0cyBh
cyBgc3JjYC4KKyAgICBkYXRlVGltZTogMCwKKyAgICAnZGVmYXVsdCc6IEhBU19CT09MRUFOX1ZB
TFVFLAorICAgIGRlZmVyOiBIQVNfQk9PTEVBTl9WQUxVRSwKKyAgICBkaXI6IDAsCisgICAgZGlz
YWJsZWQ6IEhBU19CT09MRUFOX1ZBTFVFLAorICAgIGRvd25sb2FkOiBIQVNfT1ZFUkxPQURFRF9C
T09MRUFOX1ZBTFVFLAorICAgIGRyYWdnYWJsZTogMCwKKyAgICBlbmNUeXBlOiAwLAorICAgIGZv
cm06IDAsCisgICAgZm9ybUFjdGlvbjogMCwKKyAgICBmb3JtRW5jVHlwZTogMCwKKyAgICBmb3Jt
TWV0aG9kOiAwLAorICAgIGZvcm1Ob1ZhbGlkYXRlOiBIQVNfQk9PTEVBTl9WQUxVRSwKKyAgICBm
b3JtVGFyZ2V0OiAwLAorICAgIGZyYW1lQm9yZGVyOiAwLAorICAgIGhlYWRlcnM6IDAsCisgICAg
aGVpZ2h0OiAwLAorICAgIGhpZGRlbjogSEFTX0JPT0xFQU5fVkFMVUUsCisgICAgaGlnaDogMCwK
KyAgICBocmVmOiAwLAorICAgIGhyZWZMYW5nOiAwLAorICAgIGh0bWxGb3I6IDAsCisgICAgaHR0
cEVxdWl2OiAwLAorICAgIGljb246IDAsCisgICAgaWQ6IDAsCisgICAgaW5wdXRNb2RlOiAwLAor
ICAgIGludGVncml0eTogMCwKKyAgICBpczogMCwKKyAgICBrZXlQYXJhbXM6IDAsCisgICAga2V5
VHlwZTogMCwKKyAgICBraW5kOiAwLAorICAgIGxhYmVsOiAwLAorICAgIGxhbmc6IDAsCisgICAg
bGlzdDogMCwKKyAgICBsb29wOiBIQVNfQk9PTEVBTl9WQUxVRSwKKyAgICBsb3c6IDAsCisgICAg
bWFuaWZlc3Q6IDAsCisgICAgbWFyZ2luSGVpZ2h0OiAwLAorICAgIG1hcmdpbldpZHRoOiAwLAor
ICAgIG1heDogMCwKKyAgICBtYXhMZW5ndGg6IDAsCisgICAgbWVkaWE6IDAsCisgICAgbWVkaWFH
cm91cDogMCwKKyAgICBtZXRob2Q6IDAsCisgICAgbWluOiAwLAorICAgIG1pbkxlbmd0aDogMCwK
KyAgICAvLyBDYXV0aW9uOyBgb3B0aW9uLnNlbGVjdGVkYCBpcyBub3QgdXBkYXRlZCBpZiBgc2Vs
ZWN0Lm11bHRpcGxlYCBpcworICAgIC8vIGRpc2FibGVkIHdpdGggYHJlbW92ZUF0dHJpYnV0ZWAu
CisgICAgbXVsdGlwbGU6IE1VU1RfVVNFX1BST1BFUlRZIHwgSEFTX0JPT0xFQU5fVkFMVUUsCisg
ICAgbXV0ZWQ6IE1VU1RfVVNFX1BST1BFUlRZIHwgSEFTX0JPT0xFQU5fVkFMVUUsCisgICAgbmFt
ZTogMCwKKyAgICBub25jZTogMCwKKyAgICBub1ZhbGlkYXRlOiBIQVNfQk9PTEVBTl9WQUxVRSwK
KyAgICBvcGVuOiBIQVNfQk9PTEVBTl9WQUxVRSwKKyAgICBvcHRpbXVtOiAwLAorICAgIHBhdHRl
cm46IDAsCisgICAgcGxhY2Vob2xkZXI6IDAsCisgICAgcGxheXNJbmxpbmU6IEhBU19CT09MRUFO
X1ZBTFVFLAorICAgIHBvc3RlcjogMCwKKyAgICBwcmVsb2FkOiAwLAorICAgIHByb2ZpbGU6IDAs
CisgICAgcmFkaW9Hcm91cDogMCwKKyAgICByZWFkT25seTogSEFTX0JPT0xFQU5fVkFMVUUsCisg
ICAgcmVmZXJyZXJQb2xpY3k6IDAsCisgICAgcmVsOiAwLAorICAgIHJlcXVpcmVkOiBIQVNfQk9P
TEVBTl9WQUxVRSwKKyAgICByZXZlcnNlZDogSEFTX0JPT0xFQU5fVkFMVUUsCisgICAgcm9sZTog
MCwKKyAgICByb3dzOiBIQVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxVRSwKKyAgICByb3dTcGFuOiBI
QVNfTlVNRVJJQ19WQUxVRSwKKyAgICBzYW5kYm94OiAwLAorICAgIHNjb3BlOiAwLAorICAgIHNj
b3BlZDogSEFTX0JPT0xFQU5fVkFMVUUsCisgICAgc2Nyb2xsaW5nOiAwLAorICAgIHNlYW1sZXNz
OiBIQVNfQk9PTEVBTl9WQUxVRSwKKyAgICBzZWxlY3RlZDogTVVTVF9VU0VfUFJPUEVSVFkgfCBI
QVNfQk9PTEVBTl9WQUxVRSwKKyAgICBzaGFwZTogMCwKKyAgICBzaXplOiBIQVNfUE9TSVRJVkVf
TlVNRVJJQ19WQUxVRSwKKyAgICBzaXplczogMCwKKyAgICBzcGFuOiBIQVNfUE9TSVRJVkVfTlVN
RVJJQ19WQUxVRSwKKyAgICBzcGVsbENoZWNrOiAwLAorICAgIHNyYzogMCwKKyAgICBzcmNEb2M6
IDAsCisgICAgc3JjTGFuZzogMCwKKyAgICBzcmNTZXQ6IDAsCisgICAgc3RhcnQ6IEhBU19OVU1F
UklDX1ZBTFVFLAorICAgIHN0ZXA6IDAsCisgICAgc3R5bGU6IDAsCisgICAgc3VtbWFyeTogMCwK
KyAgICB0YWJJbmRleDogMCwKKyAgICB0YXJnZXQ6IDAsCisgICAgdGl0bGU6IDAsCisgICAgLy8g
U2V0dGluZyAudHlwZSB0aHJvd3Mgb24gbm9uLTxpbnB1dD4gdGFncworICAgIHR5cGU6IDAsCisg
ICAgdXNlTWFwOiAwLAorICAgIHZhbHVlOiAwLAorICAgIHdpZHRoOiAwLAorICAgIHdtb2RlOiAw
LAorICAgIHdyYXA6IDAsCisKKyAgICAvKioKKyAgICAgKiBSREZhIFByb3BlcnRpZXMKKyAgICAg
Ki8KKyAgICBhYm91dDogMCwKKyAgICBkYXRhdHlwZTogMCwKKyAgICBpbmxpc3Q6IDAsCisgICAg
cHJlZml4OiAwLAorICAgIC8vIHByb3BlcnR5IGlzIGFsc28gc3VwcG9ydGVkIGZvciBPcGVuR3Jh
cGggaW4gbWV0YSB0YWdzLgorICAgIHByb3BlcnR5OiAwLAorICAgIHJlc291cmNlOiAwLAorICAg
ICd0eXBlb2YnOiAwLAorICAgIHZvY2FiOiAwLAorCisgICAgLyoqCisgICAgICogTm9uLXN0YW5k
YXJkIFByb3BlcnRpZXMKKyAgICAgKi8KKyAgICAvLyBhdXRvQ2FwaXRhbGl6ZSBhbmQgYXV0b0Nv
cnJlY3QgYXJlIHN1cHBvcnRlZCBpbiBNb2JpbGUgU2FmYXJpIGZvcgorICAgIC8vIGtleWJvYXJk
IGhpbnRzLgorICAgIGF1dG9DYXBpdGFsaXplOiAwLAorICAgIGF1dG9Db3JyZWN0OiAwLAorICAg
IC8vIGF1dG9TYXZlIGFsbG93cyBXZWJLaXQvQmxpbmsgdG8gcGVyc2lzdCB2YWx1ZXMgb2YgaW5w
dXQgZmllbGRzIG9uIHBhZ2UgcmVsb2FkcworICAgIGF1dG9TYXZlOiAwLAorICAgIC8vIGNvbG9y
IGlzIGZvciBTYWZhcmkgbWFzay1pY29uIGxpbmsKKyAgICBjb2xvcjogMCwKKyAgICAvLyBpdGVt
UHJvcCwgaXRlbVNjb3BlLCBpdGVtVHlwZSBhcmUgZm9yCisgICAgLy8gTWljcm9kYXRhIHN1cHBv
cnQuIFNlZSBodHRwOi8vc2NoZW1hLm9yZy9kb2NzL2dzLmh0bWwKKyAgICBpdGVtUHJvcDogMCwK
KyAgICBpdGVtU2NvcGU6IEhBU19CT09MRUFOX1ZBTFVFLAorICAgIGl0ZW1UeXBlOiAwLAorICAg
IC8vIGl0ZW1JRCBhbmQgaXRlbVJlZiBhcmUgZm9yIE1pY3JvZGF0YSBzdXBwb3J0IGFzIHdlbGwg
YnV0CisgICAgLy8gb25seSBzcGVjaWZpZWQgaW4gdGhlIFdIQVRXRyBzcGVjIGRvY3VtZW50LiBT
ZWUKKyAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9taWNyb2Rh
dGEuaHRtbCNtaWNyb2RhdGEtZG9tLWFwaQorICAgIGl0ZW1JRDogMCwKKyAgICBpdGVtUmVmOiAw
LAorICAgIC8vIHJlc3VsdHMgc2hvdyBsb29raW5nIGdsYXNzIGljb24gYW5kIHJlY2VudCBzZWFy
Y2hlcyBvbiBpbnB1dAorICAgIC8vIHNlYXJjaCBmaWVsZHMgaW4gV2ViS2l0L0JsaW5rCisgICAg
cmVzdWx0czogMCwKKyAgICAvLyBJRS1vbmx5IGF0dHJpYnV0ZSB0aGF0IHNwZWNpZmllcyBzZWN1
cml0eSByZXN0cmljdGlvbnMgb24gYW4gaWZyYW1lCisgICAgLy8gYXMgYW4gYWx0ZXJuYXRpdmUg
dG8gdGhlIHNhbmRib3ggYXR0cmlidXRlIG9uIElFPDEwCisgICAgc2VjdXJpdHk6IDAsCisgICAg
Ly8gSUUtb25seSBhdHRyaWJ1dGUgdGhhdCBjb250cm9scyBmb2N1cyBiZWhhdmlvcgorICAgIHVu
c2VsZWN0YWJsZTogMAorICB9LAorICBET01BdHRyaWJ1dGVOYW1lczogeworICAgIGFjY2VwdENo
YXJzZXQ6ICdhY2NlcHQtY2hhcnNldCcsCisgICAgY2xhc3NOYW1lOiAnY2xhc3MnLAorICAgIGh0
bWxGb3I6ICdmb3InLAorICAgIGh0dHBFcXVpdjogJ2h0dHAtZXF1aXYnCisgIH0sCisgIERPTVBy
b3BlcnR5TmFtZXM6IHt9Cit9OworCittb2R1bGUuZXhwb3J0cyA9IEhUTUxET01Qcm9wZXJ0eUNv
bmZpZzsKK30seyIxMSI6MTF9XSwyMzpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7
CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5k
ZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdy
YW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxl
IGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiAKKyAqLworCisndXNlIHN0cmljdCc7CisK
Ky8qKgorICogRXNjYXBlIGFuZCB3cmFwIGtleSBzbyBpdCBpcyBzYWZlIHRvIHVzZSBhcyBhIHJl
YWN0aWQKKyAqCisgKiBAcGFyYW0ge3N0cmluZ30ga2V5IHRvIGJlIGVzY2FwZWQuCisgKiBAcmV0
dXJuIHtzdHJpbmd9IHRoZSBlc2NhcGVkIGtleS4KKyAqLworCitmdW5jdGlvbiBlc2NhcGUoa2V5
KSB7CisgIHZhciBlc2NhcGVSZWdleCA9IC9bPTpdL2c7CisgIHZhciBlc2NhcGVyTG9va3VwID0g
eworICAgICc9JzogJz0wJywKKyAgICAnOic6ICc9MicKKyAgfTsKKyAgdmFyIGVzY2FwZWRTdHJp
bmcgPSAoJycgKyBrZXkpLnJlcGxhY2UoZXNjYXBlUmVnZXgsIGZ1bmN0aW9uIChtYXRjaCkgewor
ICAgIHJldHVybiBlc2NhcGVyTG9va3VwW21hdGNoXTsKKyAgfSk7CisKKyAgcmV0dXJuICckJyAr
IGVzY2FwZWRTdHJpbmc7Cit9CisKKy8qKgorICogVW5lc2NhcGUgYW5kIHVud3JhcCBrZXkgZm9y
IGh1bWFuLXJlYWRhYmxlIGRpc3BsYXkKKyAqCisgKiBAcGFyYW0ge3N0cmluZ30ga2V5IHRvIHVu
ZXNjYXBlLgorICogQHJldHVybiB7c3RyaW5nfSB0aGUgdW5lc2NhcGVkIGtleS4KKyAqLworZnVu
Y3Rpb24gdW5lc2NhcGUoa2V5KSB7CisgIHZhciB1bmVzY2FwZVJlZ2V4ID0gLyg9MHw9MikvZzsK
KyAgdmFyIHVuZXNjYXBlckxvb2t1cCA9IHsKKyAgICAnPTAnOiAnPScsCisgICAgJz0yJzogJzon
CisgIH07CisgIHZhciBrZXlTdWJzdHJpbmcgPSBrZXlbMF0gPT09ICcuJyAmJiBrZXlbMV0gPT09
ICckJyA/IGtleS5zdWJzdHJpbmcoMikgOiBrZXkuc3Vic3RyaW5nKDEpOworCisgIHJldHVybiAo
JycgKyBrZXlTdWJzdHJpbmcpLnJlcGxhY2UodW5lc2NhcGVSZWdleCwgZnVuY3Rpb24gKG1hdGNo
KSB7CisgICAgcmV0dXJuIHVuZXNjYXBlckxvb2t1cFttYXRjaF07CisgIH0pOworfQorCit2YXIg
S2V5RXNjYXBlVXRpbHMgPSB7CisgIGVzY2FwZTogZXNjYXBlLAorICB1bmVzY2FwZTogdW5lc2Nh
cGUKK307CisKK21vZHVsZS5leHBvcnRzID0gS2V5RXNjYXBlVXRpbHM7Cit9LHt9XSwyNDpbZnVu
Y3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXBy
ZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRo
aXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZv
dW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlz
IHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNh
biBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAq
CisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJbnZhcmlhbnQgPSBfZGVyZXFfKDEy
NSk7CisKK3ZhciBSZWFjdCA9IF9kZXJlcV8oMTM0KTsKK3ZhciBSZWFjdFByb3BUeXBlc1NlY3Jl
dCA9IF9kZXJlcV8oNzMpOworCit2YXIgaW52YXJpYW50ID0gX2RlcmVxXygxNTApOwordmFyIHdh
cm5pbmcgPSBfZGVyZXFfKDE1Nyk7CisKK3ZhciBoYXNSZWFkT25seVZhbHVlID0geworICAnYnV0
dG9uJzogdHJ1ZSwKKyAgJ2NoZWNrYm94JzogdHJ1ZSwKKyAgJ2ltYWdlJzogdHJ1ZSwKKyAgJ2hp
ZGRlbic6IHRydWUsCisgICdyYWRpbyc6IHRydWUsCisgICdyZXNldCc6IHRydWUsCisgICdzdWJt
aXQnOiB0cnVlCit9OworCitmdW5jdGlvbiBfYXNzZXJ0U2luZ2xlTGluayhpbnB1dFByb3BzKSB7
CisgICEoaW5wdXRQcm9wcy5jaGVja2VkTGluayA9PSBudWxsIHx8IGlucHV0UHJvcHMudmFsdWVM
aW5rID09IG51bGwpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50
KGZhbHNlLCAnQ2Fubm90IHByb3ZpZGUgYSBjaGVja2VkTGluayBhbmQgYSB2YWx1ZUxpbmsuIElm
IHlvdSB3YW50IHRvIHVzZSBjaGVja2VkTGluaywgeW91IHByb2JhYmx5IGRvblwndCB3YW50IHRv
IHVzZSB2YWx1ZUxpbmsgYW5kIHZpY2UgdmVyc2EuJykgOiBfcHJvZEludmFyaWFudCgnODcnKSA6
IHZvaWQgMDsKK30KK2Z1bmN0aW9uIF9hc3NlcnRWYWx1ZUxpbmsoaW5wdXRQcm9wcykgeworICBf
YXNzZXJ0U2luZ2xlTGluayhpbnB1dFByb3BzKTsKKyAgIShpbnB1dFByb3BzLnZhbHVlID09IG51
bGwgJiYgaW5wdXRQcm9wcy5vbkNoYW5nZSA9PSBudWxsKSA/ICJkZXZlbG9wbWVudCIgIT09ICdw
cm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0Nhbm5vdCBwcm92aWRlIGEgdmFsdWVMaW5r
IGFuZCBhIHZhbHVlIG9yIG9uQ2hhbmdlIGV2ZW50LiBJZiB5b3Ugd2FudCB0byB1c2UgdmFsdWUg
b3Igb25DaGFuZ2UsIHlvdSBwcm9iYWJseSBkb25cJ3Qgd2FudCB0byB1c2UgdmFsdWVMaW5rLicp
IDogX3Byb2RJbnZhcmlhbnQoJzg4JykgOiB2b2lkIDA7Cit9CisKK2Z1bmN0aW9uIF9hc3NlcnRD
aGVja2VkTGluayhpbnB1dFByb3BzKSB7CisgIF9hc3NlcnRTaW5nbGVMaW5rKGlucHV0UHJvcHMp
OworICAhKGlucHV0UHJvcHMuY2hlY2tlZCA9PSBudWxsICYmIGlucHV0UHJvcHMub25DaGFuZ2Ug
PT0gbnVsbCkgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFs
c2UsICdDYW5ub3QgcHJvdmlkZSBhIGNoZWNrZWRMaW5rIGFuZCBhIGNoZWNrZWQgcHJvcGVydHkg
b3Igb25DaGFuZ2UgZXZlbnQuIElmIHlvdSB3YW50IHRvIHVzZSBjaGVja2VkIG9yIG9uQ2hhbmdl
LCB5b3UgcHJvYmFibHkgZG9uXCd0IHdhbnQgdG8gdXNlIGNoZWNrZWRMaW5rJykgOiBfcHJvZElu
dmFyaWFudCgnODknKSA6IHZvaWQgMDsKK30KKwordmFyIHByb3BUeXBlcyA9IHsKKyAgdmFsdWU6
IGZ1bmN0aW9uIChwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUpIHsKKyAgICBpZiAoIXBy
b3BzW3Byb3BOYW1lXSB8fCBoYXNSZWFkT25seVZhbHVlW3Byb3BzLnR5cGVdIHx8IHByb3BzLm9u
Q2hhbmdlIHx8IHByb3BzLnJlYWRPbmx5IHx8IHByb3BzLmRpc2FibGVkKSB7CisgICAgICByZXR1
cm4gbnVsbDsKKyAgICB9CisgICAgcmV0dXJuIG5ldyBFcnJvcignWW91IHByb3ZpZGVkIGEgYHZh
bHVlYCBwcm9wIHRvIGEgZm9ybSBmaWVsZCB3aXRob3V0IGFuICcgKyAnYG9uQ2hhbmdlYCBoYW5k
bGVyLiBUaGlzIHdpbGwgcmVuZGVyIGEgcmVhZC1vbmx5IGZpZWxkLiBJZiAnICsgJ3RoZSBmaWVs
ZCBzaG91bGQgYmUgbXV0YWJsZSB1c2UgYGRlZmF1bHRWYWx1ZWAuIE90aGVyd2lzZSwgJyArICdz
ZXQgZWl0aGVyIGBvbkNoYW5nZWAgb3IgYHJlYWRPbmx5YC4nKTsKKyAgfSwKKyAgY2hlY2tlZDog
ZnVuY3Rpb24gKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSkgeworICAgIGlmICghcHJv
cHNbcHJvcE5hbWVdIHx8IHByb3BzLm9uQ2hhbmdlIHx8IHByb3BzLnJlYWRPbmx5IHx8IHByb3Bz
LmRpc2FibGVkKSB7CisgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisgICAgcmV0dXJuIG5ldyBF
cnJvcignWW91IHByb3ZpZGVkIGEgYGNoZWNrZWRgIHByb3AgdG8gYSBmb3JtIGZpZWxkIHdpdGhv
dXQgYW4gJyArICdgb25DaGFuZ2VgIGhhbmRsZXIuIFRoaXMgd2lsbCByZW5kZXIgYSByZWFkLW9u
bHkgZmllbGQuIElmICcgKyAndGhlIGZpZWxkIHNob3VsZCBiZSBtdXRhYmxlIHVzZSBgZGVmYXVs
dENoZWNrZWRgLiBPdGhlcndpc2UsICcgKyAnc2V0IGVpdGhlciBgb25DaGFuZ2VgIG9yIGByZWFk
T25seWAuJyk7CisgIH0sCisgIG9uQ2hhbmdlOiBSZWFjdC5Qcm9wVHlwZXMuZnVuYworfTsKKwor
dmFyIGxvZ2dlZFR5cGVGYWlsdXJlcyA9IHt9OworZnVuY3Rpb24gZ2V0RGVjbGFyYXRpb25FcnJv
ckFkZGVuZHVtKG93bmVyKSB7CisgIGlmIChvd25lcikgeworICAgIHZhciBuYW1lID0gb3duZXIu
Z2V0TmFtZSgpOworICAgIGlmIChuYW1lKSB7CisgICAgICByZXR1cm4gJyBDaGVjayB0aGUgcmVu
ZGVyIG1ldGhvZCBvZiBgJyArIG5hbWUgKyAnYC4nOworICAgIH0KKyAgfQorICByZXR1cm4gJyc7
Cit9CisKKy8qKgorICogUHJvdmlkZSBhIGxpbmtlZCBgdmFsdWVgIGF0dHJpYnV0ZSBmb3IgY29u
dHJvbGxlZCBmb3Jtcy4gWW91IHNob3VsZCBub3QgdXNlCisgKiB0aGlzIG91dHNpZGUgb2YgdGhl
IFJlYWN0RE9NIGNvbnRyb2xsZWQgZm9ybSBjb21wb25lbnRzLgorICovCit2YXIgTGlua2VkVmFs
dWVVdGlscyA9IHsKKyAgY2hlY2tQcm9wVHlwZXM6IGZ1bmN0aW9uICh0YWdOYW1lLCBwcm9wcywg
b3duZXIpIHsKKyAgICBmb3IgKHZhciBwcm9wTmFtZSBpbiBwcm9wVHlwZXMpIHsKKyAgICAgIGlm
IChwcm9wVHlwZXMuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7CisgICAgICAgIHZhciBlcnJv
ciA9IHByb3BUeXBlc1twcm9wTmFtZV0ocHJvcHMsIHByb3BOYW1lLCB0YWdOYW1lLCAncHJvcCcs
IG51bGwsIFJlYWN0UHJvcFR5cGVzU2VjcmV0KTsKKyAgICAgIH0KKyAgICAgIGlmIChlcnJvciBp
bnN0YW5jZW9mIEVycm9yICYmICEoZXJyb3IubWVzc2FnZSBpbiBsb2dnZWRUeXBlRmFpbHVyZXMp
KSB7CisgICAgICAgIC8vIE9ubHkgbW9uaXRvciB0aGlzIGZhaWx1cmUgb25jZSBiZWNhdXNlIHRo
ZXJlIHRlbmRzIHRvIGJlIGEgbG90IG9mIHRoZQorICAgICAgICAvLyBzYW1lIGVycm9yLgorICAg
ICAgICBsb2dnZWRUeXBlRmFpbHVyZXNbZXJyb3IubWVzc2FnZV0gPSB0cnVlOworCisgICAgICAg
IHZhciBhZGRlbmR1bSA9IGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bShvd25lcik7CisgICAg
ICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdGYWls
ZWQgZm9ybSBwcm9wVHlwZTogJXMlcycsIGVycm9yLm1lc3NhZ2UsIGFkZGVuZHVtKSA6IHZvaWQg
MDsKKyAgICAgIH0KKyAgICB9CisgIH0sCisKKyAgLyoqCisgICAqIEBwYXJhbSB7b2JqZWN0fSBp
bnB1dFByb3BzIFByb3BzIGZvciBmb3JtIGNvbXBvbmVudAorICAgKiBAcmV0dXJuIHsqfSBjdXJy
ZW50IHZhbHVlIG9mIHRoZSBpbnB1dCBlaXRoZXIgZnJvbSB2YWx1ZSBwcm9wIG9yIGxpbmsuCisg
ICAqLworICBnZXRWYWx1ZTogZnVuY3Rpb24gKGlucHV0UHJvcHMpIHsKKyAgICBpZiAoaW5wdXRQ
cm9wcy52YWx1ZUxpbmspIHsKKyAgICAgIF9hc3NlcnRWYWx1ZUxpbmsoaW5wdXRQcm9wcyk7Cisg
ICAgICByZXR1cm4gaW5wdXRQcm9wcy52YWx1ZUxpbmsudmFsdWU7CisgICAgfQorICAgIHJldHVy
biBpbnB1dFByb3BzLnZhbHVlOworICB9LAorCisgIC8qKgorICAgKiBAcGFyYW0ge29iamVjdH0g
aW5wdXRQcm9wcyBQcm9wcyBmb3IgZm9ybSBjb21wb25lbnQKKyAgICogQHJldHVybiB7Kn0gY3Vy
cmVudCBjaGVja2VkIHN0YXR1cyBvZiB0aGUgaW5wdXQgZWl0aGVyIGZyb20gY2hlY2tlZCBwcm9w
CisgICAqICAgICAgICAgICAgIG9yIGxpbmsuCisgICAqLworICBnZXRDaGVja2VkOiBmdW5jdGlv
biAoaW5wdXRQcm9wcykgeworICAgIGlmIChpbnB1dFByb3BzLmNoZWNrZWRMaW5rKSB7CisgICAg
ICBfYXNzZXJ0Q2hlY2tlZExpbmsoaW5wdXRQcm9wcyk7CisgICAgICByZXR1cm4gaW5wdXRQcm9w
cy5jaGVja2VkTGluay52YWx1ZTsKKyAgICB9CisgICAgcmV0dXJuIGlucHV0UHJvcHMuY2hlY2tl
ZDsKKyAgfSwKKworICAvKioKKyAgICogQHBhcmFtIHtvYmplY3R9IGlucHV0UHJvcHMgUHJvcHMg
Zm9yIGZvcm0gY29tcG9uZW50CisgICAqIEBwYXJhbSB7U3ludGhldGljRXZlbnR9IGV2ZW50IGNo
YW5nZSBldmVudCB0byBoYW5kbGUKKyAgICovCisgIGV4ZWN1dGVPbkNoYW5nZTogZnVuY3Rpb24g
KGlucHV0UHJvcHMsIGV2ZW50KSB7CisgICAgaWYgKGlucHV0UHJvcHMudmFsdWVMaW5rKSB7Cisg
ICAgICBfYXNzZXJ0VmFsdWVMaW5rKGlucHV0UHJvcHMpOworICAgICAgcmV0dXJuIGlucHV0UHJv
cHMudmFsdWVMaW5rLnJlcXVlc3RDaGFuZ2UoZXZlbnQudGFyZ2V0LnZhbHVlKTsKKyAgICB9IGVs
c2UgaWYgKGlucHV0UHJvcHMuY2hlY2tlZExpbmspIHsKKyAgICAgIF9hc3NlcnRDaGVja2VkTGlu
ayhpbnB1dFByb3BzKTsKKyAgICAgIHJldHVybiBpbnB1dFByb3BzLmNoZWNrZWRMaW5rLnJlcXVl
c3RDaGFuZ2UoZXZlbnQudGFyZ2V0LmNoZWNrZWQpOworICAgIH0gZWxzZSBpZiAoaW5wdXRQcm9w
cy5vbkNoYW5nZSkgeworICAgICAgcmV0dXJuIGlucHV0UHJvcHMub25DaGFuZ2UuY2FsbCh1bmRl
ZmluZWQsIGV2ZW50KTsKKyAgICB9CisgIH0KK307CisKK21vZHVsZS5leHBvcnRzID0gTGlua2Vk
VmFsdWVVdGlsczsKK30seyIxMjUiOjEyNSwiMTM0IjoxMzQsIjE1MCI6MTUwLCIxNTciOjE1Nywi
NzMiOjczfV0sMjU6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBD
b3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qt
c3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBk
aXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2Yg
cGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2Ft
ZSBkaXJlY3RvcnkuCisgKgorICogCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJ
bnZhcmlhbnQgPSBfZGVyZXFfKDEyNSk7CisKK3ZhciBpbnZhcmlhbnQgPSBfZGVyZXFfKDE1MCk7
CisKKy8qKgorICogU3RhdGljIHBvb2xlcnMuIFNldmVyYWwgY3VzdG9tIHZlcnNpb25zIGZvciBl
YWNoIHBvdGVudGlhbCBudW1iZXIgb2YKKyAqIGFyZ3VtZW50cy4gQSBjb21wbGV0ZWx5IGdlbmVy
aWMgcG9vbGVyIGlzIGVhc3kgdG8gaW1wbGVtZW50LCBidXQgd291bGQKKyAqIHJlcXVpcmUgYWNj
ZXNzaW5nIHRoZSBgYXJndW1lbnRzYCBvYmplY3QuIEluIGVhY2ggb2YgdGhlc2UsIGB0aGlzYCBy
ZWZlcnMgdG8KKyAqIHRoZSBDbGFzcyBpdHNlbGYsIG5vdCBhbiBpbnN0YW5jZS4gSWYgYW55IG90
aGVycyBhcmUgbmVlZGVkLCBzaW1wbHkgYWRkIHRoZW0KKyAqIGhlcmUsIG9yIGluIHRoZWlyIG93
biBmaWxlcy4KKyAqLwordmFyIG9uZUFyZ3VtZW50UG9vbGVyID0gZnVuY3Rpb24gKGNvcHlGaWVs
ZHNGcm9tKSB7CisgIHZhciBLbGFzcyA9IHRoaXM7CisgIGlmIChLbGFzcy5pbnN0YW5jZVBvb2wu
bGVuZ3RoKSB7CisgICAgdmFyIGluc3RhbmNlID0gS2xhc3MuaW5zdGFuY2VQb29sLnBvcCgpOwor
ICAgIEtsYXNzLmNhbGwoaW5zdGFuY2UsIGNvcHlGaWVsZHNGcm9tKTsKKyAgICByZXR1cm4gaW5z
dGFuY2U7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIG5ldyBLbGFzcyhjb3B5RmllbGRzRnJvbSk7
CisgIH0KK307CisKK3ZhciB0d29Bcmd1bWVudFBvb2xlciA9IGZ1bmN0aW9uIChhMSwgYTIpIHsK
KyAgdmFyIEtsYXNzID0gdGhpczsKKyAgaWYgKEtsYXNzLmluc3RhbmNlUG9vbC5sZW5ndGgpIHsK
KyAgICB2YXIgaW5zdGFuY2UgPSBLbGFzcy5pbnN0YW5jZVBvb2wucG9wKCk7CisgICAgS2xhc3Mu
Y2FsbChpbnN0YW5jZSwgYTEsIGEyKTsKKyAgICByZXR1cm4gaW5zdGFuY2U7CisgIH0gZWxzZSB7
CisgICAgcmV0dXJuIG5ldyBLbGFzcyhhMSwgYTIpOworICB9Cit9OworCit2YXIgdGhyZWVBcmd1
bWVudFBvb2xlciA9IGZ1bmN0aW9uIChhMSwgYTIsIGEzKSB7CisgIHZhciBLbGFzcyA9IHRoaXM7
CisgIGlmIChLbGFzcy5pbnN0YW5jZVBvb2wubGVuZ3RoKSB7CisgICAgdmFyIGluc3RhbmNlID0g
S2xhc3MuaW5zdGFuY2VQb29sLnBvcCgpOworICAgIEtsYXNzLmNhbGwoaW5zdGFuY2UsIGExLCBh
MiwgYTMpOworICAgIHJldHVybiBpbnN0YW5jZTsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gbmV3
IEtsYXNzKGExLCBhMiwgYTMpOworICB9Cit9OworCit2YXIgZm91ckFyZ3VtZW50UG9vbGVyID0g
ZnVuY3Rpb24gKGExLCBhMiwgYTMsIGE0KSB7CisgIHZhciBLbGFzcyA9IHRoaXM7CisgIGlmIChL
bGFzcy5pbnN0YW5jZVBvb2wubGVuZ3RoKSB7CisgICAgdmFyIGluc3RhbmNlID0gS2xhc3MuaW5z
dGFuY2VQb29sLnBvcCgpOworICAgIEtsYXNzLmNhbGwoaW5zdGFuY2UsIGExLCBhMiwgYTMsIGE0
KTsKKyAgICByZXR1cm4gaW5zdGFuY2U7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIG5ldyBLbGFz
cyhhMSwgYTIsIGEzLCBhNCk7CisgIH0KK307CisKK3ZhciBmaXZlQXJndW1lbnRQb29sZXIgPSBm
dW5jdGlvbiAoYTEsIGEyLCBhMywgYTQsIGE1KSB7CisgIHZhciBLbGFzcyA9IHRoaXM7CisgIGlm
IChLbGFzcy5pbnN0YW5jZVBvb2wubGVuZ3RoKSB7CisgICAgdmFyIGluc3RhbmNlID0gS2xhc3Mu
aW5zdGFuY2VQb29sLnBvcCgpOworICAgIEtsYXNzLmNhbGwoaW5zdGFuY2UsIGExLCBhMiwgYTMs
IGE0LCBhNSk7CisgICAgcmV0dXJuIGluc3RhbmNlOworICB9IGVsc2UgeworICAgIHJldHVybiBu
ZXcgS2xhc3MoYTEsIGEyLCBhMywgYTQsIGE1KTsKKyAgfQorfTsKKwordmFyIHN0YW5kYXJkUmVs
ZWFzZXIgPSBmdW5jdGlvbiAoaW5zdGFuY2UpIHsKKyAgdmFyIEtsYXNzID0gdGhpczsKKyAgIShp
bnN0YW5jZSBpbnN0YW5jZW9mIEtsYXNzKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9u
JyA/IGludmFyaWFudChmYWxzZSwgJ1RyeWluZyB0byByZWxlYXNlIGFuIGluc3RhbmNlIGludG8g
YSBwb29sIG9mIGEgZGlmZmVyZW50IHR5cGUuJykgOiBfcHJvZEludmFyaWFudCgnMjUnKSA6IHZv
aWQgMDsKKyAgaW5zdGFuY2UuZGVzdHJ1Y3RvcigpOworICBpZiAoS2xhc3MuaW5zdGFuY2VQb29s
Lmxlbmd0aCA8IEtsYXNzLnBvb2xTaXplKSB7CisgICAgS2xhc3MuaW5zdGFuY2VQb29sLnB1c2go
aW5zdGFuY2UpOworICB9Cit9OworCit2YXIgREVGQVVMVF9QT09MX1NJWkUgPSAxMDsKK3ZhciBE
RUZBVUxUX1BPT0xFUiA9IG9uZUFyZ3VtZW50UG9vbGVyOworCisvKioKKyAqIEF1Z21lbnRzIGBD
b3B5Q29uc3RydWN0b3JgIHRvIGJlIGEgcG9vbGFibGUgY2xhc3MsIGF1Z21lbnRpbmcgb25seSB0
aGUgY2xhc3MKKyAqIGl0c2VsZiAoc3RhdGljYWxseSkgbm90IGFkZGluZyBhbnkgcHJvdG90eXBp
Y2FsIGZpZWxkcy4gQW55IENvcHlDb25zdHJ1Y3RvcgorICogeW91IGdpdmUgdGhpcyBtYXkgaGF2
ZSBhIGBwb29sU2l6ZWAgcHJvcGVydHksIGFuZCB3aWxsIGxvb2sgZm9yIGEKKyAqIHByb3RvdHlw
aWNhbCBgZGVzdHJ1Y3RvcmAgb24gaW5zdGFuY2VzLgorICoKKyAqIEBwYXJhbSB7RnVuY3Rpb259
IENvcHlDb25zdHJ1Y3RvciBDb25zdHJ1Y3RvciB0aGF0IGNhbiBiZSB1c2VkIHRvIHJlc2V0Lgor
ICogQHBhcmFtIHtGdW5jdGlvbn0gcG9vbGVyIEN1c3RvbWl6YWJsZSBwb29sZXIuCisgKi8KK3Zh
ciBhZGRQb29saW5nVG8gPSBmdW5jdGlvbiAoQ29weUNvbnN0cnVjdG9yLCBwb29sZXIpIHsKKyAg
Ly8gQ2FzdGluZyBhcyBhbnkgc28gdGhhdCBmbG93IGlnbm9yZXMgdGhlIGFjdHVhbCBpbXBsZW1l
bnRhdGlvbiBhbmQgdHJ1c3RzCisgIC8vIGl0IHRvIG1hdGNoIHRoZSB0eXBlIHdlIGRlY2xhcmVk
CisgIHZhciBOZXdLbGFzcyA9IENvcHlDb25zdHJ1Y3RvcjsKKyAgTmV3S2xhc3MuaW5zdGFuY2VQ
b29sID0gW107CisgIE5ld0tsYXNzLmdldFBvb2xlZCA9IHBvb2xlciB8fCBERUZBVUxUX1BPT0xF
UjsKKyAgaWYgKCFOZXdLbGFzcy5wb29sU2l6ZSkgeworICAgIE5ld0tsYXNzLnBvb2xTaXplID0g
REVGQVVMVF9QT09MX1NJWkU7CisgIH0KKyAgTmV3S2xhc3MucmVsZWFzZSA9IHN0YW5kYXJkUmVs
ZWFzZXI7CisgIHJldHVybiBOZXdLbGFzczsKK307CisKK3ZhciBQb29sZWRDbGFzcyA9IHsKKyAg
YWRkUG9vbGluZ1RvOiBhZGRQb29saW5nVG8sCisgIG9uZUFyZ3VtZW50UG9vbGVyOiBvbmVBcmd1
bWVudFBvb2xlciwKKyAgdHdvQXJndW1lbnRQb29sZXI6IHR3b0FyZ3VtZW50UG9vbGVyLAorICB0
aHJlZUFyZ3VtZW50UG9vbGVyOiB0aHJlZUFyZ3VtZW50UG9vbGVyLAorICBmb3VyQXJndW1lbnRQ
b29sZXI6IGZvdXJBcmd1bWVudFBvb2xlciwKKyAgZml2ZUFyZ3VtZW50UG9vbGVyOiBmaXZlQXJn
dW1lbnRQb29sZXIKK307CisKK21vZHVsZS5leHBvcnRzID0gUG9vbGVkQ2xhc3M7Cit9LHsiMTI1
IjoxMjUsIjE1MCI6MTUwfV0sMjY6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpewor
LyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy
IHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFu
dAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9h
c3NpZ24gPSBfZGVyZXFfKDE1OCk7CisKK3ZhciBFdmVudFBsdWdpblJlZ2lzdHJ5ID0gX2RlcmVx
XygxOCk7Cit2YXIgUmVhY3RFdmVudEVtaXR0ZXJNaXhpbiA9IF9kZXJlcV8oNTYpOwordmFyIFZp
ZXdwb3J0TWV0cmljcyA9IF9kZXJlcV8oMTAxKTsKKwordmFyIGdldFZlbmRvclByZWZpeGVkRXZl
bnROYW1lID0gX2RlcmVxXygxMjApOwordmFyIGlzRXZlbnRTdXBwb3J0ZWQgPSBfZGVyZXFfKDEy
Mik7CisKKy8qKgorICogU3VtbWFyeSBvZiBgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyYCBldmVu
dCBoYW5kbGluZzoKKyAqCisgKiAgLSBUb3AtbGV2ZWwgZGVsZWdhdGlvbiBpcyB1c2VkIHRvIHRy
YXAgbW9zdCBuYXRpdmUgYnJvd3NlciBldmVudHMuIFRoaXMKKyAqICAgIG1heSBvbmx5IG9jY3Vy
IGluIHRoZSBtYWluIHRocmVhZCBhbmQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mCisgKiAgICBS
ZWFjdEV2ZW50TGlzdGVuZXIsIHdoaWNoIGlzIGluamVjdGVkIGFuZCBjYW4gdGhlcmVmb3JlIHN1
cHBvcnQgcGx1Z2dhYmxlCisgKiAgICBldmVudCBzb3VyY2VzLiBUaGlzIGlzIHRoZSBvbmx5IHdv
cmsgdGhhdCBvY2N1cnMgaW4gdGhlIG1haW4gdGhyZWFkLgorICoKKyAqICAtIFdlIG5vcm1hbGl6
ZSBhbmQgZGUtZHVwbGljYXRlIGV2ZW50cyB0byBhY2NvdW50IGZvciBicm93c2VyIHF1aXJrcy4g
VGhpcworICogICAgbWF5IGJlIGRvbmUgaW4gdGhlIHdvcmtlciB0aHJlYWQuCisgKgorICogIC0g
Rm9yd2FyZCB0aGVzZSBuYXRpdmUgZXZlbnRzICh3aXRoIHRoZSBhc3NvY2lhdGVkIHRvcC1sZXZl
bCB0eXBlIHVzZWQgdG8KKyAqICAgIHRyYXAgaXQpIHRvIGBFdmVudFBsdWdpbkh1YmAsIHdoaWNo
IGluIHR1cm4gd2lsbCBhc2sgcGx1Z2lucyBpZiB0aGV5IHdhbnQKKyAqICAgIHRvIGV4dHJhY3Qg
YW55IHN5bnRoZXRpYyBldmVudHMuCisgKgorICogIC0gVGhlIGBFdmVudFBsdWdpbkh1YmAgd2ls
bCB0aGVuIHByb2Nlc3MgZWFjaCBldmVudCBieSBhbm5vdGF0aW5nIHRoZW0gd2l0aAorICogICAg
ImRpc3BhdGNoZXMiLCBhIHNlcXVlbmNlIG9mIGxpc3RlbmVycyBhbmQgSURzIHRoYXQgY2FyZSBh
Ym91dCB0aGF0IGV2ZW50LgorICoKKyAqICAtIFRoZSBgRXZlbnRQbHVnaW5IdWJgIHRoZW4gZGlz
cGF0Y2hlcyB0aGUgZXZlbnRzLgorICoKKyAqIE92ZXJ2aWV3IG9mIFJlYWN0IGFuZCB0aGUgZXZl
bnQgc3lzdGVtOgorICoKKyAqICstLS0tLS0tLS0tLS0rICAgIC4KKyAqIHwgICAgRE9NICAgICB8
ICAgIC4KKyAqICstLS0tLS0tLS0tLS0rICAgIC4KKyAqICAgICAgIHwgICAgICAgICAgIC4KKyAq
ICAgICAgIHYgICAgICAgICAgIC4KKyAqICstLS0tLS0tLS0tLS0rICAgIC4KKyAqIHwgUmVhY3RF
dmVudCB8ICAgIC4KKyAqIHwgIExpc3RlbmVyICB8ICAgIC4KKyAqICstLS0tLS0tLS0tLS0rICAg
IC4gICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tKworICogICAgICAgfCAgICAg
ICAgICAgLiAgICAgICAgICAgICAgICstLS0tLS0tLSt8U2ltcGxlRXZlbnR8CisgKiAgICAgICB8
ICAgICAgICAgICAuICAgICAgICAgICAgICAgfCAgICAgICAgIHxQbHVnaW4gICAgIHwKKyAqICst
LS0tLXwtLS0tLS0rICAgIC4gICAgICAgICAgICAgICB2ICAgICAgICAgKy0tLS0tLS0tLS0tKwor
ICogfCAgICAgfCAgICAgIHwgICAgLiAgICArLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAg
ICAgICArLS0tLS0tLS0tLS0tKworICogfCAgICAgKy0tLS0tLS0tLS0tLi0tLT58RXZlbnRQbHVn
aW5IdWJ8ICAgICAgICAgICAgICAgICAgICB8ICAgIEV2ZW50ICAgfAorICogfCAgICAgICAgICAg
IHwgICAgLiAgICB8ICAgICAgICAgICAgICB8ICAgICArLS0tLS0tLS0tLS0rICB8IFByb3BhZ2F0
b3JzfAorICogfCBSZWFjdEV2ZW50IHwgICAgLiAgICB8ICAgICAgICAgICAgICB8ICAgICB8VGFw
RXZlbnQgICB8ICB8LS0tLS0tLS0tLS0tfAorICogfCAgRW1pdHRlciAgIHwgICAgLiAgICB8ICAg
ICAgICAgICAgICB8PC0tLSt8UGx1Z2luICAgICB8ICB8b3RoZXIgcGx1Z2lufAorICogfCAgICAg
ICAgICAgIHwgICAgLiAgICB8ICAgICAgICAgICAgICB8ICAgICArLS0tLS0tLS0tLS0rICB8ICB1
dGlsaXRpZXMgfAorICogfCAgICAgKy0tLS0tLS0tLS0tLi0tLT58ICAgICAgICAgICAgICB8ICAg
ICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tKworICogfCAgICAgfCAgICAgIHwgICAgLiAg
ICArLS0tLS0tLS0tLS0tLS0rCisgKiArLS0tLS18LS0tLS0tKyAgICAuICAgICAgICAgICAgICAg
IF4gICAgICAgICstLS0tLS0tLS0tLSsKKyAqICAgICAgIHwgICAgICAgICAgIC4gICAgICAgICAg
ICAgICAgfCAgICAgICAgfEVudGVyL0xlYXZlfAorICogICAgICAgKyAgICAgICAgICAgLiAgICAg
ICAgICAgICAgICArLS0tLS0tLSt8UGx1Z2luICAgICB8CisgKiArLS0tLS0tLS0tLS0tLSsgICAu
ICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLSsKKyAqIHwgYXBwbGljYXRpb24g
fCAgIC4KKyAqIHwtLS0tLS0tLS0tLS0tfCAgIC4KKyAqIHwgICAgICAgICAgICAgfCAgIC4KKyAq
IHwgICAgICAgICAgICAgfCAgIC4KKyAqICstLS0tLS0tLS0tLS0tKyAgIC4KKyAqICAgICAgICAg
ICAgICAgICAgIC4KKyAqICAgIFJlYWN0IENvcmUgICAgIC4gIEdlbmVyYWwgUHVycG9zZSBFdmVu
dCBQbHVnaW4gU3lzdGVtCisgKi8KKwordmFyIGhhc0V2ZW50UGFnZVhZOwordmFyIGFscmVhZHlM
aXN0ZW5pbmdUbyA9IHt9OwordmFyIGlzTW9uaXRvcmluZ1Njcm9sbFZhbHVlID0gZmFsc2U7Cit2
YXIgcmVhY3RUb3BMaXN0ZW5lcnNDb3VudGVyID0gMDsKKworLy8gRm9yIGV2ZW50cyBsaWtlICdz
dWJtaXQnIHdoaWNoIGRvbid0IGNvbnNpc3RlbnRseSBidWJibGUgKHdoaWNoIHdlIHRyYXAgYXQg
YQorLy8gbG93ZXIgbm9kZSB0aGFuIGBkb2N1bWVudGApLCBiaW5kaW5nIGF0IGBkb2N1bWVudGAg
d291bGQgY2F1c2UgZHVwbGljYXRlCisvLyBldmVudHMgc28gd2UgZG9uJ3QgaW5jbHVkZSB0aGVt
IGhlcmUKK3ZhciB0b3BFdmVudE1hcHBpbmcgPSB7CisgIHRvcEFib3J0OiAnYWJvcnQnLAorICB0
b3BBbmltYXRpb25FbmQ6IGdldFZlbmRvclByZWZpeGVkRXZlbnROYW1lKCdhbmltYXRpb25lbmQn
KSB8fCAnYW5pbWF0aW9uZW5kJywKKyAgdG9wQW5pbWF0aW9uSXRlcmF0aW9uOiBnZXRWZW5kb3JQ
cmVmaXhlZEV2ZW50TmFtZSgnYW5pbWF0aW9uaXRlcmF0aW9uJykgfHwgJ2FuaW1hdGlvbml0ZXJh
dGlvbicsCisgIHRvcEFuaW1hdGlvblN0YXJ0OiBnZXRWZW5kb3JQcmVmaXhlZEV2ZW50TmFtZSgn
YW5pbWF0aW9uc3RhcnQnKSB8fCAnYW5pbWF0aW9uc3RhcnQnLAorICB0b3BCbHVyOiAnYmx1cics
CisgIHRvcENhblBsYXk6ICdjYW5wbGF5JywKKyAgdG9wQ2FuUGxheVRocm91Z2g6ICdjYW5wbGF5
dGhyb3VnaCcsCisgIHRvcENoYW5nZTogJ2NoYW5nZScsCisgIHRvcENsaWNrOiAnY2xpY2snLAor
ICB0b3BDb21wb3NpdGlvbkVuZDogJ2NvbXBvc2l0aW9uZW5kJywKKyAgdG9wQ29tcG9zaXRpb25T
dGFydDogJ2NvbXBvc2l0aW9uc3RhcnQnLAorICB0b3BDb21wb3NpdGlvblVwZGF0ZTogJ2NvbXBv
c2l0aW9udXBkYXRlJywKKyAgdG9wQ29udGV4dE1lbnU6ICdjb250ZXh0bWVudScsCisgIHRvcENv
cHk6ICdjb3B5JywKKyAgdG9wQ3V0OiAnY3V0JywKKyAgdG9wRG91YmxlQ2xpY2s6ICdkYmxjbGlj
aycsCisgIHRvcERyYWc6ICdkcmFnJywKKyAgdG9wRHJhZ0VuZDogJ2RyYWdlbmQnLAorICB0b3BE
cmFnRW50ZXI6ICdkcmFnZW50ZXInLAorICB0b3BEcmFnRXhpdDogJ2RyYWdleGl0JywKKyAgdG9w
RHJhZ0xlYXZlOiAnZHJhZ2xlYXZlJywKKyAgdG9wRHJhZ092ZXI6ICdkcmFnb3ZlcicsCisgIHRv
cERyYWdTdGFydDogJ2RyYWdzdGFydCcsCisgIHRvcERyb3A6ICdkcm9wJywKKyAgdG9wRHVyYXRp
b25DaGFuZ2U6ICdkdXJhdGlvbmNoYW5nZScsCisgIHRvcEVtcHRpZWQ6ICdlbXB0aWVkJywKKyAg
dG9wRW5jcnlwdGVkOiAnZW5jcnlwdGVkJywKKyAgdG9wRW5kZWQ6ICdlbmRlZCcsCisgIHRvcEVy
cm9yOiAnZXJyb3InLAorICB0b3BGb2N1czogJ2ZvY3VzJywKKyAgdG9wSW5wdXQ6ICdpbnB1dCcs
CisgIHRvcEtleURvd246ICdrZXlkb3duJywKKyAgdG9wS2V5UHJlc3M6ICdrZXlwcmVzcycsCisg
IHRvcEtleVVwOiAna2V5dXAnLAorICB0b3BMb2FkZWREYXRhOiAnbG9hZGVkZGF0YScsCisgIHRv
cExvYWRlZE1ldGFkYXRhOiAnbG9hZGVkbWV0YWRhdGEnLAorICB0b3BMb2FkU3RhcnQ6ICdsb2Fk
c3RhcnQnLAorICB0b3BNb3VzZURvd246ICdtb3VzZWRvd24nLAorICB0b3BNb3VzZU1vdmU6ICdt
b3VzZW1vdmUnLAorICB0b3BNb3VzZU91dDogJ21vdXNlb3V0JywKKyAgdG9wTW91c2VPdmVyOiAn
bW91c2VvdmVyJywKKyAgdG9wTW91c2VVcDogJ21vdXNldXAnLAorICB0b3BQYXN0ZTogJ3Bhc3Rl
JywKKyAgdG9wUGF1c2U6ICdwYXVzZScsCisgIHRvcFBsYXk6ICdwbGF5JywKKyAgdG9wUGxheWlu
ZzogJ3BsYXlpbmcnLAorICB0b3BQcm9ncmVzczogJ3Byb2dyZXNzJywKKyAgdG9wUmF0ZUNoYW5n
ZTogJ3JhdGVjaGFuZ2UnLAorICB0b3BTY3JvbGw6ICdzY3JvbGwnLAorICB0b3BTZWVrZWQ6ICdz
ZWVrZWQnLAorICB0b3BTZWVraW5nOiAnc2Vla2luZycsCisgIHRvcFNlbGVjdGlvbkNoYW5nZTog
J3NlbGVjdGlvbmNoYW5nZScsCisgIHRvcFN0YWxsZWQ6ICdzdGFsbGVkJywKKyAgdG9wU3VzcGVu
ZDogJ3N1c3BlbmQnLAorICB0b3BUZXh0SW5wdXQ6ICd0ZXh0SW5wdXQnLAorICB0b3BUaW1lVXBk
YXRlOiAndGltZXVwZGF0ZScsCisgIHRvcFRvdWNoQ2FuY2VsOiAndG91Y2hjYW5jZWwnLAorICB0
b3BUb3VjaEVuZDogJ3RvdWNoZW5kJywKKyAgdG9wVG91Y2hNb3ZlOiAndG91Y2htb3ZlJywKKyAg
dG9wVG91Y2hTdGFydDogJ3RvdWNoc3RhcnQnLAorICB0b3BUcmFuc2l0aW9uRW5kOiBnZXRWZW5k
b3JQcmVmaXhlZEV2ZW50TmFtZSgndHJhbnNpdGlvbmVuZCcpIHx8ICd0cmFuc2l0aW9uZW5kJywK
KyAgdG9wVm9sdW1lQ2hhbmdlOiAndm9sdW1lY2hhbmdlJywKKyAgdG9wV2FpdGluZzogJ3dhaXRp
bmcnLAorICB0b3BXaGVlbDogJ3doZWVsJworfTsKKworLyoqCisgKiBUbyBlbnN1cmUgbm8gY29u
ZmxpY3RzIHdpdGggb3RoZXIgcG90ZW50aWFsIFJlYWN0IGluc3RhbmNlcyBvbiB0aGUgcGFnZQor
ICovCit2YXIgdG9wTGlzdGVuZXJzSURLZXkgPSAnX3JlYWN0TGlzdGVuZXJzSUQnICsgU3RyaW5n
KE1hdGgucmFuZG9tKCkpLnNsaWNlKDIpOworCitmdW5jdGlvbiBnZXRMaXN0ZW5pbmdGb3JEb2N1
bWVudChtb3VudEF0KSB7CisgIC8vIEluIElFOCwgYG1vdW50QXRgIGlzIGEgaG9zdCBvYmplY3Qg
YW5kIGRvZXNuJ3QgaGF2ZSBgaGFzT3duUHJvcGVydHlgCisgIC8vIGRpcmVjdGx5LgorICBpZiAo
IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChtb3VudEF0LCB0b3BMaXN0ZW5l
cnNJREtleSkpIHsKKyAgICBtb3VudEF0W3RvcExpc3RlbmVyc0lES2V5XSA9IHJlYWN0VG9wTGlz
dGVuZXJzQ291bnRlcisrOworICAgIGFscmVhZHlMaXN0ZW5pbmdUb1ttb3VudEF0W3RvcExpc3Rl
bmVyc0lES2V5XV0gPSB7fTsKKyAgfQorICByZXR1cm4gYWxyZWFkeUxpc3RlbmluZ1RvW21vdW50
QXRbdG9wTGlzdGVuZXJzSURLZXldXTsKK30KKworLyoqCisgKiBgUmVhY3RCcm93c2VyRXZlbnRF
bWl0dGVyYCBpcyB1c2VkIHRvIGF0dGFjaCB0b3AtbGV2ZWwgZXZlbnQgbGlzdGVuZXJzLiBGb3IK
KyAqIGV4YW1wbGU6CisgKgorICogICBFdmVudFBsdWdpbkh1Yi5wdXRMaXN0ZW5lcignbXlJRCcs
ICdvbkNsaWNrJywgbXlGdW5jdGlvbik7CisgKgorICogVGhpcyB3b3VsZCBhbGxvY2F0ZSBhICJy
ZWdpc3RyYXRpb24iIG9mIGAoJ29uQ2xpY2snLCBteUZ1bmN0aW9uKWAgb24gJ215SUQnLgorICoK
KyAqIEBpbnRlcm5hbAorICovCit2YXIgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyID0gX2Fzc2ln
bih7fSwgUmVhY3RFdmVudEVtaXR0ZXJNaXhpbiwgeworCisgIC8qKgorICAgKiBJbmplY3RhYmxl
IGV2ZW50IGJhY2tlbmQKKyAgICovCisgIFJlYWN0RXZlbnRMaXN0ZW5lcjogbnVsbCwKKworICBp
bmplY3Rpb246IHsKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge29iamVjdH0gUmVhY3RFdmVudExp
c3RlbmVyCisgICAgICovCisgICAgaW5qZWN0UmVhY3RFdmVudExpc3RlbmVyOiBmdW5jdGlvbiAo
UmVhY3RFdmVudExpc3RlbmVyKSB7CisgICAgICBSZWFjdEV2ZW50TGlzdGVuZXIuc2V0SGFuZGxl
VG9wTGV2ZWwoUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLmhhbmRsZVRvcExldmVsKTsKKyAgICAg
IFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIgPSBSZWFjdEV2ZW50
TGlzdGVuZXI7CisgICAgfQorICB9LAorCisgIC8qKgorICAgKiBTZXRzIHdoZXRoZXIgb3Igbm90
IGFueSBjcmVhdGVkIGNhbGxiYWNrcyBzaG91bGQgYmUgZW5hYmxlZC4KKyAgICoKKyAgICogQHBh
cmFtIHtib29sZWFufSBlbmFibGVkIFRydWUgaWYgY2FsbGJhY2tzIHNob3VsZCBiZSBlbmFibGVk
LgorICAgKi8KKyAgc2V0RW5hYmxlZDogZnVuY3Rpb24gKGVuYWJsZWQpIHsKKyAgICBpZiAoUmVh
Y3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lcikgeworICAgICAgUmVhY3RC
cm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci5zZXRFbmFibGVkKGVuYWJsZWQp
OworICAgIH0KKyAgfSwKKworICAvKioKKyAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBj
YWxsYmFja3MgYXJlIGVuYWJsZWQuCisgICAqLworICBpc0VuYWJsZWQ6IGZ1bmN0aW9uICgpIHsK
KyAgICByZXR1cm4gISEoUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5l
ciAmJiBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyLmlzRW5hYmxl
ZCgpKTsKKyAgfSwKKworICAvKioKKyAgICogV2UgbGlzdGVuIGZvciBidWJibGVkIHRvdWNoIGV2
ZW50cyBvbiB0aGUgZG9jdW1lbnQgb2JqZWN0LgorICAgKgorICAgKiBGaXJlZm94IHY4LjAxIChh
bmQgcG9zc2libHkgb3RoZXJzKSBleGhpYml0ZWQgc3RyYW5nZSBiZWhhdmlvciB3aGVuCisgICAq
IG1vdW50aW5nIGBvbm1vdXNlbW92ZWAgZXZlbnRzIGF0IHNvbWUgbm9kZSB0aGF0IHdhcyBub3Qg
dGhlIGRvY3VtZW50CisgICAqIGVsZW1lbnQuIFRoZSBzeW1wdG9tcyB3ZXJlIHRoYXQgaWYgeW91
ciBtb3VzZSBpcyBub3QgbW92aW5nIG92ZXIgc29tZXRoaW5nCisgICAqIGNvbnRhaW5lZCB3aXRo
aW4gdGhhdCBtb3VudCBwb2ludCAoZm9yIGV4YW1wbGUgb24gdGhlIGJhY2tncm91bmQpIHRoZQor
ICAgKiB0b3AtbGV2ZWwgbGlzdGVuZXJzIGZvciBgb25tb3VzZW1vdmVgIHdvbid0IGJlIGNhbGxl
ZC4gSG93ZXZlciwgaWYgeW91CisgICAqIHJlZ2lzdGVyIHRoZSBgbW91c2Vtb3ZlYCBvbiB0aGUg
ZG9jdW1lbnQgb2JqZWN0LCB0aGVuIGl0IHdpbGwgb2YgY291cnNlCisgICAqIGNhdGNoIGFsbCBg
bW91c2Vtb3ZlYHMuIFRoaXMgYWxvbmcgd2l0aCBpT1MgcXVpcmtzLCBqdXN0aWZpZXMgcmVzdHJp
Y3RpbmcKKyAgICogdG9wLWxldmVsIGxpc3RlbmVycyB0byB0aGUgZG9jdW1lbnQgb2JqZWN0IG9u
bHksIGF0IGxlYXN0IGZvciB0aGVzZQorICAgKiBtb3ZlbWVudCB0eXBlcyBvZiBldmVudHMgYW5k
IHBvc3NpYmx5IGFsbCBldmVudHMuCisgICAqCisgICAqIEBzZWUgaHR0cDovL3d3dy5xdWlya3Nt
b2RlLm9yZy9ibG9nL2FyY2hpdmVzLzIwMTAvMDkvY2xpY2tfZXZlbnRfZGVsLmh0bWwKKyAgICoK
KyAgICogQWxzbywgYGtleXVwYC9ga2V5cHJlc3NgL2BrZXlkb3duYCBkbyBub3QgYnViYmxlIHRv
IHRoZSB3aW5kb3cgb24gSUUsIGJ1dAorICAgKiB0aGV5IGJ1YmJsZSB0byBkb2N1bWVudC4KKyAg
ICoKKyAgICogQHBhcmFtIHtzdHJpbmd9IHJlZ2lzdHJhdGlvbk5hbWUgTmFtZSBvZiBsaXN0ZW5l
ciAoZS5nLiBgb25DbGlja2ApLgorICAgKiBAcGFyYW0ge29iamVjdH0gY29udGVudERvY3VtZW50
SGFuZGxlIERvY3VtZW50IHdoaWNoIG93bnMgdGhlIGNvbnRhaW5lcgorICAgKi8KKyAgbGlzdGVu
VG86IGZ1bmN0aW9uIChyZWdpc3RyYXRpb25OYW1lLCBjb250ZW50RG9jdW1lbnRIYW5kbGUpIHsK
KyAgICB2YXIgbW91bnRBdCA9IGNvbnRlbnREb2N1bWVudEhhbmRsZTsKKyAgICB2YXIgaXNMaXN0
ZW5pbmcgPSBnZXRMaXN0ZW5pbmdGb3JEb2N1bWVudChtb3VudEF0KTsKKyAgICB2YXIgZGVwZW5k
ZW5jaWVzID0gRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lRGVwZW5kZW5jaWVz
W3JlZ2lzdHJhdGlvbk5hbWVdOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkZXBlbmRlbmNp
ZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciBkZXBlbmRlbmN5ID0gZGVwZW5kZW5jaWVzW2ld
OworICAgICAgaWYgKCEoaXNMaXN0ZW5pbmcuaGFzT3duUHJvcGVydHkoZGVwZW5kZW5jeSkgJiYg
aXNMaXN0ZW5pbmdbZGVwZW5kZW5jeV0pKSB7CisgICAgICAgIGlmIChkZXBlbmRlbmN5ID09PSAn
dG9wV2hlZWwnKSB7CisgICAgICAgICAgaWYgKGlzRXZlbnRTdXBwb3J0ZWQoJ3doZWVsJykpIHsK
KyAgICAgICAgICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIu
dHJhcEJ1YmJsZWRFdmVudCgndG9wV2hlZWwnLCAnd2hlZWwnLCBtb3VudEF0KTsKKyAgICAgICAg
ICB9IGVsc2UgaWYgKGlzRXZlbnRTdXBwb3J0ZWQoJ21vdXNld2hlZWwnKSkgeworICAgICAgICAg
ICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxl
ZEV2ZW50KCd0b3BXaGVlbCcsICdtb3VzZXdoZWVsJywgbW91bnRBdCk7CisgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIC8vIEZpcmVmb3ggbmVlZHMgdG8gY2FwdHVyZSBhIGRpZmZlcmVu
dCBtb3VzZSBzY3JvbGwgZXZlbnQuCisgICAgICAgICAgICAvLyBAc2VlIGh0dHA6Ly93d3cucXVp
cmtzbW9kZS5vcmcvZG9tL2V2ZW50cy90ZXN0cy9zY3JvbGwuaHRtbAorICAgICAgICAgICAgUmVh
Y3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50
KCd0b3BXaGVlbCcsICdET01Nb3VzZVNjcm9sbCcsIG1vdW50QXQpOworICAgICAgICAgIH0KKyAg
ICAgICAgfSBlbHNlIGlmIChkZXBlbmRlbmN5ID09PSAndG9wU2Nyb2xsJykgeworCisgICAgICAg
ICAgaWYgKGlzRXZlbnRTdXBwb3J0ZWQoJ3Njcm9sbCcsIHRydWUpKSB7CisgICAgICAgICAgICBS
ZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBDYXB0dXJlZEV2
ZW50KCd0b3BTY3JvbGwnLCAnc2Nyb2xsJywgbW91bnRBdCk7CisgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIu
dHJhcEJ1YmJsZWRFdmVudCgndG9wU2Nyb2xsJywgJ3Njcm9sbCcsIFJlYWN0QnJvd3NlckV2ZW50
RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIuV0lORE9XX0hBTkRMRSk7CisgICAgICAgICAgfQor
ICAgICAgICB9IGVsc2UgaWYgKGRlcGVuZGVuY3kgPT09ICd0b3BGb2N1cycgfHwgZGVwZW5kZW5j
eSA9PT0gJ3RvcEJsdXInKSB7CisKKyAgICAgICAgICBpZiAoaXNFdmVudFN1cHBvcnRlZCgnZm9j
dXMnLCB0cnVlKSkgeworICAgICAgICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0
RXZlbnRMaXN0ZW5lci50cmFwQ2FwdHVyZWRFdmVudCgndG9wRm9jdXMnLCAnZm9jdXMnLCBtb3Vu
dEF0KTsKKyAgICAgICAgICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlz
dGVuZXIudHJhcENhcHR1cmVkRXZlbnQoJ3RvcEJsdXInLCAnYmx1cicsIG1vdW50QXQpOworICAg
ICAgICAgIH0gZWxzZSBpZiAoaXNFdmVudFN1cHBvcnRlZCgnZm9jdXNpbicpKSB7CisgICAgICAg
ICAgICAvLyBJRSBoYXMgYGZvY3VzaW5gIGFuZCBgZm9jdXNvdXRgIGV2ZW50cyB3aGljaCBidWJi
bGUuCisgICAgICAgICAgICAvLyBAc2VlIGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvYmxvZy9h
cmNoaXZlcy8yMDA4LzA0L2RlbGVnYXRpbmdfdGhlLmh0bWwKKyAgICAgICAgICAgIFJlYWN0QnJv
d3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudCgndG9w
Rm9jdXMnLCAnZm9jdXNpbicsIG1vdW50QXQpOworICAgICAgICAgICAgUmVhY3RCcm93c2VyRXZl
bnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KCd0b3BCbHVyJywg
J2ZvY3Vzb3V0JywgbW91bnRBdCk7CisgICAgICAgICAgfQorCisgICAgICAgICAgLy8gdG8gbWFr
ZSBzdXJlIGJsdXIgYW5kIGZvY3VzIGV2ZW50IGxpc3RlbmVycyBhcmUgb25seSBhdHRhY2hlZCBv
bmNlCisgICAgICAgICAgaXNMaXN0ZW5pbmcudG9wQmx1ciA9IHRydWU7CisgICAgICAgICAgaXNM
aXN0ZW5pbmcudG9wRm9jdXMgPSB0cnVlOworICAgICAgICB9IGVsc2UgaWYgKHRvcEV2ZW50TWFw
cGluZy5oYXNPd25Qcm9wZXJ0eShkZXBlbmRlbmN5KSkgeworICAgICAgICAgIFJlYWN0QnJvd3Nl
ckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudChkZXBlbmRl
bmN5LCB0b3BFdmVudE1hcHBpbmdbZGVwZW5kZW5jeV0sIG1vdW50QXQpOworICAgICAgICB9CisK
KyAgICAgICAgaXNMaXN0ZW5pbmdbZGVwZW5kZW5jeV0gPSB0cnVlOworICAgICAgfQorICAgIH0K
KyAgfSwKKworICB0cmFwQnViYmxlZEV2ZW50OiBmdW5jdGlvbiAodG9wTGV2ZWxUeXBlLCBoYW5k
bGVyQmFzZU5hbWUsIGhhbmRsZSkgeworICAgIHJldHVybiBSZWFjdEJyb3dzZXJFdmVudEVtaXR0
ZXIuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQodG9wTGV2ZWxUeXBlLCBoYW5k
bGVyQmFzZU5hbWUsIGhhbmRsZSk7CisgIH0sCisKKyAgdHJhcENhcHR1cmVkRXZlbnQ6IGZ1bmN0
aW9uICh0b3BMZXZlbFR5cGUsIGhhbmRsZXJCYXNlTmFtZSwgaGFuZGxlKSB7CisgICAgcmV0dXJu
IFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcENhcHR1cmVk
RXZlbnQodG9wTGV2ZWxUeXBlLCBoYW5kbGVyQmFzZU5hbWUsIGhhbmRsZSk7CisgIH0sCisKKyAg
LyoqCisgICAqIFByb3RlY3QgYWdhaW5zdCBkb2N1bWVudC5jcmVhdGVFdmVudCgpIHJldHVybmlu
ZyBudWxsCisgICAqIFNvbWUgcG9wdXAgYmxvY2tlciBleHRlbnNpb25zIGFwcGVhciB0byBkbyB0
aGlzOgorICAgKiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzY4ODcK
KyAgICovCisgIHN1cHBvcnRzRXZlbnRQYWdlWFk6IGZ1bmN0aW9uICgpIHsKKyAgICBpZiAoIWRv
Y3VtZW50LmNyZWF0ZUV2ZW50KSB7CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHZh
ciBldiA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdNb3VzZUV2ZW50Jyk7CisgICAgcmV0dXJuIGV2
ICE9IG51bGwgJiYgJ3BhZ2VYJyBpbiBldjsKKyAgfSwKKworICAvKioKKyAgICogTGlzdGVucyB0
byB3aW5kb3cgc2Nyb2xsIGFuZCByZXNpemUgZXZlbnRzLiBXZSBjYWNoZSBzY3JvbGwgdmFsdWVz
IHNvIHRoYXQKKyAgICogYXBwbGljYXRpb24gY29kZSBjYW4gYWNjZXNzIHRoZW0gd2l0aG91dCB0
cmlnZ2VyaW5nIHJlZmxvd3MuCisgICAqCisgICAqIFZpZXdwb3J0TWV0cmljcyBpcyBvbmx5IHVz
ZWQgYnkgU3ludGhldGljTW91c2UvVG91Y2hFdmVudCBhbmQgb25seSB3aGVuCisgICAqIHBhZ2VY
L3BhZ2VZIGlzbid0IHN1cHBvcnRlZCAobGVnYWN5IGJyb3dzZXJzKS4KKyAgICoKKyAgICogTk9U
RTogU2Nyb2xsIGV2ZW50cyBkbyBub3QgYnViYmxlLgorICAgKgorICAgKiBAc2VlIGh0dHA6Ly93
d3cucXVpcmtzbW9kZS5vcmcvZG9tL2V2ZW50cy9zY3JvbGwuaHRtbAorICAgKi8KKyAgZW5zdXJl
U2Nyb2xsVmFsdWVNb25pdG9yaW5nOiBmdW5jdGlvbiAoKSB7CisgICAgaWYgKGhhc0V2ZW50UGFn
ZVhZID09PSB1bmRlZmluZWQpIHsKKyAgICAgIGhhc0V2ZW50UGFnZVhZID0gUmVhY3RCcm93c2Vy
RXZlbnRFbWl0dGVyLnN1cHBvcnRzRXZlbnRQYWdlWFkoKTsKKyAgICB9CisgICAgaWYgKCFoYXNF
dmVudFBhZ2VYWSAmJiAhaXNNb25pdG9yaW5nU2Nyb2xsVmFsdWUpIHsKKyAgICAgIHZhciByZWZy
ZXNoID0gVmlld3BvcnRNZXRyaWNzLnJlZnJlc2hTY3JvbGxWYWx1ZXM7CisgICAgICBSZWFjdEJy
b3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyLm1vbml0b3JTY3JvbGxWYWx1ZShy
ZWZyZXNoKTsKKyAgICAgIGlzTW9uaXRvcmluZ1Njcm9sbFZhbHVlID0gdHJ1ZTsKKyAgICB9Cisg
IH0KKworfSk7CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyOwor
fSx7IjEwMSI6MTAxLCIxMjAiOjEyMCwiMTIyIjoxMjIsIjE1OCI6MTU4LCIxOCI6MTgsIjU2Ijo1
Nn1dLDI3OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKyhmdW5jdGlvbiAocHJv
Y2Vzcyl7CisvKioKKyAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisg
KiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5z
ZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBm
aWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlv
bmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5U
UyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOwor
Cit2YXIgUmVhY3RSZWNvbmNpbGVyID0gX2RlcmVxXyg3NSk7CisKK3ZhciBpbnN0YW50aWF0ZVJl
YWN0Q29tcG9uZW50ID0gX2RlcmVxXygxMjEpOwordmFyIEtleUVzY2FwZVV0aWxzID0gX2RlcmVx
XygyMyk7Cit2YXIgc2hvdWxkVXBkYXRlUmVhY3RDb21wb25lbnQgPSBfZGVyZXFfKDEyOSk7Cit2
YXIgdHJhdmVyc2VBbGxDaGlsZHJlbiA9IF9kZXJlcV8oMTMwKTsKK3ZhciB3YXJuaW5nID0gX2Rl
cmVxXygxNTcpOworCit2YXIgUmVhY3RDb21wb25lbnRUcmVlSG9vazsKKworaWYgKHR5cGVvZiBw
cm9jZXNzICE9PSAndW5kZWZpbmVkJyAmJiBwcm9jZXNzLmVudiAmJiAiZGV2ZWxvcG1lbnQiID09
PSAndGVzdCcpIHsKKyAgLy8gVGVtcG9yYXJ5IGhhY2suCisgIC8vIElubGluZSByZXF1aXJlcyBk
b24ndCB3b3JrIHdlbGwgd2l0aCBKZXN0OgorICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJv
b2svcmVhY3QvaXNzdWVzLzcyNDAKKyAgLy8gUmVtb3ZlIHRoZSBpbmxpbmUgcmVxdWlyZXMgd2hl
biB3ZSBkb24ndCBuZWVkIHRoZW0gYW55bW9yZToKKyAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2Zh
Y2Vib29rL3JlYWN0L3B1bGwvNzE3OAorICBSZWFjdENvbXBvbmVudFRyZWVIb29rID0gX2RlcmVx
XygxMzIpOworfQorCitmdW5jdGlvbiBpbnN0YW50aWF0ZUNoaWxkKGNoaWxkSW5zdGFuY2VzLCBj
aGlsZCwgbmFtZSwgc2VsZkRlYnVnSUQpIHsKKyAgLy8gV2UgZm91bmQgYSBjb21wb25lbnQgaW5z
dGFuY2UuCisgIHZhciBrZXlVbmlxdWUgPSBjaGlsZEluc3RhbmNlc1tuYW1lXSA9PT0gdW5kZWZp
bmVkOworICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgaWYgKCFS
ZWFjdENvbXBvbmVudFRyZWVIb29rKSB7CisgICAgICBSZWFjdENvbXBvbmVudFRyZWVIb29rID0g
X2RlcmVxXygxMzIpOworICAgIH0KKyAgICBpZiAoIWtleVVuaXF1ZSkgeworICAgICAgImRldmVs
b3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ2ZsYXR0ZW5DaGlsZHJl
biguLi4pOiBFbmNvdW50ZXJlZCB0d28gY2hpbGRyZW4gd2l0aCB0aGUgc2FtZSBrZXksICcgKyAn
YCVzYC4gQ2hpbGQga2V5cyBtdXN0IGJlIHVuaXF1ZTsgd2hlbiB0d28gY2hpbGRyZW4gc2hhcmUg
YSBrZXksIG9ubHkgJyArICd0aGUgZmlyc3QgY2hpbGQgd2lsbCBiZSB1c2VkLiVzJywgS2V5RXNj
YXBlVXRpbHMudW5lc2NhcGUobmFtZSksIFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0U3RhY2tB
ZGRlbmR1bUJ5SUQoc2VsZkRlYnVnSUQpKSA6IHZvaWQgMDsKKyAgICB9CisgIH0KKyAgaWYgKGNo
aWxkICE9IG51bGwgJiYga2V5VW5pcXVlKSB7CisgICAgY2hpbGRJbnN0YW5jZXNbbmFtZV0gPSBp
bnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50KGNoaWxkLCB0cnVlKTsKKyAgfQorfQorCisvKioKKyAq
IFJlYWN0Q2hpbGRSZWNvbmNpbGVyIHByb3ZpZGVzIGhlbHBlcnMgZm9yIGluaXRpYWxpemluZyBv
ciB1cGRhdGluZyBhIHNldCBvZgorICogY2hpbGRyZW4uIEl0cyBvdXRwdXQgaXMgc3VpdGFibGUg
Zm9yIHBhc3NpbmcgaXQgb250byBSZWFjdE11bHRpQ2hpbGQgd2hpY2gKKyAqIGRvZXMgZGlmZmVk
IHJlb3JkZXJpbmcgYW5kIGluc2VydGlvbi4KKyAqLwordmFyIFJlYWN0Q2hpbGRSZWNvbmNpbGVy
ID0geworICAvKioKKyAgICogR2VuZXJhdGVzIGEgIm1vdW50IGltYWdlIiBmb3IgZWFjaCBvZiB0
aGUgc3VwcGxpZWQgY2hpbGRyZW4uIEluIHRoZSBjYXNlCisgICAqIG9mIGBSZWFjdERPTUNvbXBv
bmVudGAsIGEgbW91bnQgaW1hZ2UgaXMgYSBzdHJpbmcgb2YgbWFya3VwLgorICAgKgorICAgKiBA
cGFyYW0gez9vYmplY3R9IG5lc3RlZENoaWxkTm9kZXMgTmVzdGVkIGNoaWxkIG1hcHMuCisgICAq
IEByZXR1cm4gez9vYmplY3R9IEEgc2V0IG9mIGNoaWxkIGluc3RhbmNlcy4KKyAgICogQGludGVy
bmFsCisgICAqLworICBpbnN0YW50aWF0ZUNoaWxkcmVuOiBmdW5jdGlvbiAobmVzdGVkQ2hpbGRO
b2RlcywgdHJhbnNhY3Rpb24sIGNvbnRleHQsIHNlbGZEZWJ1Z0lEIC8vIDAgaW4gcHJvZHVjdGlv
biBhbmQgZm9yIHJvb3RzCisgICkgeworICAgIGlmIChuZXN0ZWRDaGlsZE5vZGVzID09IG51bGwp
IHsKKyAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAgICB2YXIgY2hpbGRJbnN0YW5jZXMgPSB7
fTsKKworICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgIHRy
YXZlcnNlQWxsQ2hpbGRyZW4obmVzdGVkQ2hpbGROb2RlcywgZnVuY3Rpb24gKGNoaWxkSW5zdHMs
IGNoaWxkLCBuYW1lKSB7CisgICAgICAgIHJldHVybiBpbnN0YW50aWF0ZUNoaWxkKGNoaWxkSW5z
dHMsIGNoaWxkLCBuYW1lLCBzZWxmRGVidWdJRCk7CisgICAgICB9LCBjaGlsZEluc3RhbmNlcyk7
CisgICAgfSBlbHNlIHsKKyAgICAgIHRyYXZlcnNlQWxsQ2hpbGRyZW4obmVzdGVkQ2hpbGROb2Rl
cywgaW5zdGFudGlhdGVDaGlsZCwgY2hpbGRJbnN0YW5jZXMpOworICAgIH0KKyAgICByZXR1cm4g
Y2hpbGRJbnN0YW5jZXM7CisgIH0sCisKKyAgLyoqCisgICAqIFVwZGF0ZXMgdGhlIHJlbmRlcmVk
IGNoaWxkcmVuIGFuZCByZXR1cm5zIGEgbmV3IHNldCBvZiBjaGlsZHJlbi4KKyAgICoKKyAgICog
QHBhcmFtIHs/b2JqZWN0fSBwcmV2Q2hpbGRyZW4gUHJldmlvdXNseSBpbml0aWFsaXplZCBzZXQg
b2YgY2hpbGRyZW4uCisgICAqIEBwYXJhbSB7P29iamVjdH0gbmV4dENoaWxkcmVuIEZsYXQgY2hp
bGQgZWxlbWVudCBtYXBzLgorICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259
IHRyYW5zYWN0aW9uCisgICAqIEBwYXJhbSB7b2JqZWN0fSBjb250ZXh0CisgICAqIEByZXR1cm4g
ez9vYmplY3R9IEEgbmV3IHNldCBvZiBjaGlsZCBpbnN0YW5jZXMuCisgICAqIEBpbnRlcm5hbAor
ICAgKi8KKyAgdXBkYXRlQ2hpbGRyZW46IGZ1bmN0aW9uIChwcmV2Q2hpbGRyZW4sIG5leHRDaGls
ZHJlbiwgbW91bnRJbWFnZXMsIHJlbW92ZWROb2RlcywgdHJhbnNhY3Rpb24sIGhvc3RQYXJlbnQs
IGhvc3RDb250YWluZXJJbmZvLCBjb250ZXh0LCBzZWxmRGVidWdJRCAvLyAwIGluIHByb2R1Y3Rp
b24gYW5kIGZvciByb290cworICApIHsKKyAgICAvLyBXZSBjdXJyZW50bHkgZG9uJ3QgaGF2ZSBh
IHdheSB0byB0cmFjayBtb3ZlcyBoZXJlIGJ1dCBpZiB3ZSB1c2UgaXRlcmF0b3JzCisgICAgLy8g
aW5zdGVhZCBvZiBmb3IuLmluIHdlIGNhbiB6aXAgdGhlIGl0ZXJhdG9ycyBhbmQgY2hlY2sgaWYg
YW4gaXRlbSBoYXMKKyAgICAvLyBtb3ZlZC4KKyAgICAvLyBUT0RPOiBJZiBub3RoaW5nIGhhcyBj
aGFuZ2VkLCByZXR1cm4gdGhlIHByZXZDaGlsZHJlbiBvYmplY3Qgc28gdGhhdCB3ZQorICAgIC8v
IGNhbiBxdWlja2x5IGJhaWxvdXQgaWYgbm90aGluZyBoYXMgY2hhbmdlZC4KKyAgICBpZiAoIW5l
eHRDaGlsZHJlbiAmJiAhcHJldkNoaWxkcmVuKSB7CisgICAgICByZXR1cm47CisgICAgfQorICAg
IHZhciBuYW1lOworICAgIHZhciBwcmV2Q2hpbGQ7CisgICAgZm9yIChuYW1lIGluIG5leHRDaGls
ZHJlbikgeworICAgICAgaWYgKCFuZXh0Q2hpbGRyZW4uaGFzT3duUHJvcGVydHkobmFtZSkpIHsK
KyAgICAgICAgY29udGludWU7CisgICAgICB9CisgICAgICBwcmV2Q2hpbGQgPSBwcmV2Q2hpbGRy
ZW4gJiYgcHJldkNoaWxkcmVuW25hbWVdOworICAgICAgdmFyIHByZXZFbGVtZW50ID0gcHJldkNo
aWxkICYmIHByZXZDaGlsZC5fY3VycmVudEVsZW1lbnQ7CisgICAgICB2YXIgbmV4dEVsZW1lbnQg
PSBuZXh0Q2hpbGRyZW5bbmFtZV07CisgICAgICBpZiAocHJldkNoaWxkICE9IG51bGwgJiYgc2hv
dWxkVXBkYXRlUmVhY3RDb21wb25lbnQocHJldkVsZW1lbnQsIG5leHRFbGVtZW50KSkgeworICAg
ICAgICBSZWFjdFJlY29uY2lsZXIucmVjZWl2ZUNvbXBvbmVudChwcmV2Q2hpbGQsIG5leHRFbGVt
ZW50LCB0cmFuc2FjdGlvbiwgY29udGV4dCk7CisgICAgICAgIG5leHRDaGlsZHJlbltuYW1lXSA9
IHByZXZDaGlsZDsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChwcmV2Q2hpbGQpIHsKKyAg
ICAgICAgICByZW1vdmVkTm9kZXNbbmFtZV0gPSBSZWFjdFJlY29uY2lsZXIuZ2V0SG9zdE5vZGUo
cHJldkNoaWxkKTsKKyAgICAgICAgICBSZWFjdFJlY29uY2lsZXIudW5tb3VudENvbXBvbmVudChw
cmV2Q2hpbGQsIGZhbHNlKTsKKyAgICAgICAgfQorICAgICAgICAvLyBUaGUgY2hpbGQgbXVzdCBi
ZSBpbnN0YW50aWF0ZWQgYmVmb3JlIGl0J3MgbW91bnRlZC4KKyAgICAgICAgdmFyIG5leHRDaGls
ZEluc3RhbmNlID0gaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudChuZXh0RWxlbWVudCwgdHJ1ZSk7
CisgICAgICAgIG5leHRDaGlsZHJlbltuYW1lXSA9IG5leHRDaGlsZEluc3RhbmNlOworICAgICAg
ICAvLyBDcmVhdGluZyBtb3VudCBpbWFnZSBub3cgZW5zdXJlcyByZWZzIGFyZSByZXNvbHZlZCBp
biByaWdodCBvcmRlcgorICAgICAgICAvLyAoc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9v
ay9yZWFjdC9wdWxsLzcxMDEgZm9yIGV4cGxhbmF0aW9uKS4KKyAgICAgICAgdmFyIG5leHRDaGls
ZE1vdW50SW1hZ2UgPSBSZWFjdFJlY29uY2lsZXIubW91bnRDb21wb25lbnQobmV4dENoaWxkSW5z
dGFuY2UsIHRyYW5zYWN0aW9uLCBob3N0UGFyZW50LCBob3N0Q29udGFpbmVySW5mbywgY29udGV4
dCwgc2VsZkRlYnVnSUQpOworICAgICAgICBtb3VudEltYWdlcy5wdXNoKG5leHRDaGlsZE1vdW50
SW1hZ2UpOworICAgICAgfQorICAgIH0KKyAgICAvLyBVbm1vdW50IGNoaWxkcmVuIHRoYXQgYXJl
IG5vIGxvbmdlciBwcmVzZW50LgorICAgIGZvciAobmFtZSBpbiBwcmV2Q2hpbGRyZW4pIHsKKyAg
ICAgIGlmIChwcmV2Q2hpbGRyZW4uaGFzT3duUHJvcGVydHkobmFtZSkgJiYgIShuZXh0Q2hpbGRy
ZW4gJiYgbmV4dENoaWxkcmVuLmhhc093blByb3BlcnR5KG5hbWUpKSkgeworICAgICAgICBwcmV2
Q2hpbGQgPSBwcmV2Q2hpbGRyZW5bbmFtZV07CisgICAgICAgIHJlbW92ZWROb2Rlc1tuYW1lXSA9
IFJlYWN0UmVjb25jaWxlci5nZXRIb3N0Tm9kZShwcmV2Q2hpbGQpOworICAgICAgICBSZWFjdFJl
Y29uY2lsZXIudW5tb3VudENvbXBvbmVudChwcmV2Q2hpbGQsIGZhbHNlKTsKKyAgICAgIH0KKyAg
ICB9CisgIH0sCisKKyAgLyoqCisgICAqIFVubW91bnRzIGFsbCByZW5kZXJlZCBjaGlsZHJlbi4g
VGhpcyBzaG91bGQgYmUgdXNlZCB0byBjbGVhbiB1cCBjaGlsZHJlbgorICAgKiB3aGVuIHRoaXMg
Y29tcG9uZW50IGlzIHVubW91bnRlZC4KKyAgICoKKyAgICogQHBhcmFtIHs/b2JqZWN0fSByZW5k
ZXJlZENoaWxkcmVuIFByZXZpb3VzbHkgaW5pdGlhbGl6ZWQgc2V0IG9mIGNoaWxkcmVuLgorICAg
KiBAaW50ZXJuYWwKKyAgICovCisgIHVubW91bnRDaGlsZHJlbjogZnVuY3Rpb24gKHJlbmRlcmVk
Q2hpbGRyZW4sIHNhZmVseSkgeworICAgIGZvciAodmFyIG5hbWUgaW4gcmVuZGVyZWRDaGlsZHJl
bikgeworICAgICAgaWYgKHJlbmRlcmVkQ2hpbGRyZW4uaGFzT3duUHJvcGVydHkobmFtZSkpIHsK
KyAgICAgICAgdmFyIHJlbmRlcmVkQ2hpbGQgPSByZW5kZXJlZENoaWxkcmVuW25hbWVdOworICAg
ICAgICBSZWFjdFJlY29uY2lsZXIudW5tb3VudENvbXBvbmVudChyZW5kZXJlZENoaWxkLCBzYWZl
bHkpOworICAgICAgfQorICAgIH0KKyAgfQorCit9OworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0
Q2hpbGRSZWNvbmNpbGVyOworfSkuY2FsbCh0aGlzLHVuZGVmaW5lZCkKK30seyIxMjEiOjEyMSwi
MTI5IjoxMjksIjEzMCI6MTMwLCIxMzIiOjEzMiwiMTU3IjoxNTcsIjIzIjoyMywiNzUiOjc1fV0s
Mjg6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQg
MjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGlj
ZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkg
b2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJp
Z2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rv
cnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIERPTUNoaWxkcmVuT3BlcmF0aW9u
cyA9IF9kZXJlcV8oOCk7Cit2YXIgUmVhY3RET01JRE9wZXJhdGlvbnMgPSBfZGVyZXFfKDM4KTsK
KworLyoqCisgKiBBYnN0cmFjdHMgYXdheSBhbGwgZnVuY3Rpb25hbGl0eSBvZiB0aGUgcmVjb25j
aWxlciB0aGF0IHJlcXVpcmVzIGtub3dsZWRnZSBvZgorICogdGhlIGJyb3dzZXIgY29udGV4dC4g
VE9ETzogVGhlc2UgY2FsbGVycyBzaG91bGQgYmUgcmVmYWN0b3JlZCB0byBhdm9pZCB0aGUKKyAq
IG5lZWQgZm9yIHRoaXMgaW5qZWN0aW9uLgorICovCit2YXIgUmVhY3RDb21wb25lbnRCcm93c2Vy
RW52aXJvbm1lbnQgPSB7CisKKyAgcHJvY2Vzc0NoaWxkcmVuVXBkYXRlczogUmVhY3RET01JRE9w
ZXJhdGlvbnMuZGFuZ2Vyb3VzbHlQcm9jZXNzQ2hpbGRyZW5VcGRhdGVzLAorCisgIHJlcGxhY2VO
b2RlV2l0aE1hcmt1cDogRE9NQ2hpbGRyZW5PcGVyYXRpb25zLmRhbmdlcm91c2x5UmVwbGFjZU5v
ZGVXaXRoTWFya3VwCisKK307CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RDb21wb25lbnRCcm93
c2VyRW52aXJvbm1lbnQ7Cit9LHsiMzgiOjM4LCI4Ijo4fV0sMjk6W2Z1bmN0aW9uKF9kZXJlcV8s
bW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50LCBGYWNlYm9v
aywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAq
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4g
QW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogCisgKi8KKwor
J3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJbnZhcmlhbnQgPSBfZGVyZXFfKDEyNSk7CisKK3Zh
ciBpbnZhcmlhbnQgPSBfZGVyZXFfKDE1MCk7CisKK3ZhciBpbmplY3RlZCA9IGZhbHNlOworCit2
YXIgUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudCA9IHsKKworICAvKioKKyAgICogT3B0aW9uYWxs
eSBpbmplY3RhYmxlIGhvb2sgZm9yIHN3YXBwaW5nIG91dCBtb3VudCBpbWFnZXMgaW4gdGhlIG1p
ZGRsZSBvZgorICAgKiB0aGUgdHJlZS4KKyAgICovCisgIHJlcGxhY2VOb2RlV2l0aE1hcmt1cDog
bnVsbCwKKworICAvKioKKyAgICogT3B0aW9uYWxseSBpbmplY3RhYmxlIGhvb2sgZm9yIHByb2Nl
c3NpbmcgYSBxdWV1ZSBvZiBjaGlsZCB1cGRhdGVzLiBXaWxsCisgICAqIGxhdGVyIG1vdmUgaW50
byBNdWx0aUNoaWxkQ29tcG9uZW50cy4KKyAgICovCisgIHByb2Nlc3NDaGlsZHJlblVwZGF0ZXM6
IG51bGwsCisKKyAgaW5qZWN0aW9uOiB7CisgICAgaW5qZWN0RW52aXJvbm1lbnQ6IGZ1bmN0aW9u
IChlbnZpcm9ubWVudCkgeworICAgICAgISFpbmplY3RlZCA/ICJkZXZlbG9wbWVudCIgIT09ICdw
cm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50OiBp
bmplY3RFbnZpcm9ubWVudCgpIGNhbiBvbmx5IGJlIGNhbGxlZCBvbmNlLicpIDogX3Byb2RJbnZh
cmlhbnQoJzEwNCcpIDogdm9pZCAwOworICAgICAgUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudC5y
ZXBsYWNlTm9kZVdpdGhNYXJrdXAgPSBlbnZpcm9ubWVudC5yZXBsYWNlTm9kZVdpdGhNYXJrdXA7
CisgICAgICBSZWFjdENvbXBvbmVudEVudmlyb25tZW50LnByb2Nlc3NDaGlsZHJlblVwZGF0ZXMg
PSBlbnZpcm9ubWVudC5wcm9jZXNzQ2hpbGRyZW5VcGRhdGVzOworICAgICAgaW5qZWN0ZWQgPSB0
cnVlOworICAgIH0KKyAgfQorCit9OworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0Q29tcG9uZW50
RW52aXJvbm1lbnQ7Cit9LHsiMTI1IjoxMjUsIjE1MCI6MTUwfV0sMzA6W2Z1bmN0aW9uKF9kZXJl
cV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNl
Ym9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBj
b2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUK
KyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJl
ZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQg
aW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1
c2Ugc3RyaWN0JzsKKwordmFyIF9wcm9kSW52YXJpYW50ID0gX2RlcmVxXygxMjUpLAorICAgIF9h
c3NpZ24gPSBfZGVyZXFfKDE1OCk7CisKK3ZhciBSZWFjdCA9IF9kZXJlcV8oMTM0KTsKK3ZhciBS
ZWFjdENvbXBvbmVudEVudmlyb25tZW50ID0gX2RlcmVxXygyOSk7Cit2YXIgUmVhY3RDdXJyZW50
T3duZXIgPSBfZGVyZXFfKDEzMyk7Cit2YXIgUmVhY3RFcnJvclV0aWxzID0gX2RlcmVxXyg1NSk7
Cit2YXIgUmVhY3RJbnN0YW5jZU1hcCA9IF9kZXJlcV8oNjMpOwordmFyIFJlYWN0SW5zdHJ1bWVu
dGF0aW9uID0gX2RlcmVxXyg2NCk7Cit2YXIgUmVhY3ROb2RlVHlwZXMgPSBfZGVyZXFfKDY5KTsK
K3ZhciBSZWFjdFJlY29uY2lsZXIgPSBfZGVyZXFfKDc1KTsKKworaWYgKCJkZXZlbG9wbWVudCIg
IT09ICdwcm9kdWN0aW9uJykgeworICB2YXIgY2hlY2tSZWFjdFR5cGVTcGVjID0gX2RlcmVxXygx
MDQpOworfQorCit2YXIgZW1wdHlPYmplY3QgPSBfZGVyZXFfKDE0Myk7Cit2YXIgaW52YXJpYW50
ID0gX2RlcmVxXygxNTApOwordmFyIHNoYWxsb3dFcXVhbCA9IF9kZXJlcV8oMTU2KTsKK3ZhciBz
aG91bGRVcGRhdGVSZWFjdENvbXBvbmVudCA9IF9kZXJlcV8oMTI5KTsKK3ZhciB3YXJuaW5nID0g
X2RlcmVxXygxNTcpOworCit2YXIgQ29tcG9zaXRlVHlwZXMgPSB7CisgIEltcHVyZUNsYXNzOiAw
LAorICBQdXJlQ2xhc3M6IDEsCisgIFN0YXRlbGVzc0Z1bmN0aW9uYWw6IDIKK307CisKK2Z1bmN0
aW9uIFN0YXRlbGVzc0NvbXBvbmVudChDb21wb25lbnQpIHt9CitTdGF0ZWxlc3NDb21wb25lbnQu
cHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICgpIHsKKyAgdmFyIENvbXBvbmVudCA9IFJlYWN0
SW5zdGFuY2VNYXAuZ2V0KHRoaXMpLl9jdXJyZW50RWxlbWVudC50eXBlOworICB2YXIgZWxlbWVu
dCA9IENvbXBvbmVudCh0aGlzLnByb3BzLCB0aGlzLmNvbnRleHQsIHRoaXMudXBkYXRlcik7Cisg
IHdhcm5JZkludmFsaWRFbGVtZW50KENvbXBvbmVudCwgZWxlbWVudCk7CisgIHJldHVybiBlbGVt
ZW50OworfTsKKworZnVuY3Rpb24gd2FybklmSW52YWxpZEVsZW1lbnQoQ29tcG9uZW50LCBlbGVt
ZW50KSB7CisgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAiZGV2
ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGVsZW1lbnQgPT09IG51bGwgfHwg
ZWxlbWVudCA9PT0gZmFsc2UgfHwgUmVhY3QuaXNWYWxpZEVsZW1lbnQoZWxlbWVudCksICclcygu
Li4pOiBBIHZhbGlkIFJlYWN0IGVsZW1lbnQgKG9yIG51bGwpIG11c3QgYmUgcmV0dXJuZWQuIFlv
dSBtYXkgaGF2ZSAnICsgJ3JldHVybmVkIHVuZGVmaW5lZCwgYW4gYXJyYXkgb3Igc29tZSBvdGhl
ciBpbnZhbGlkIG9iamVjdC4nLCBDb21wb25lbnQuZGlzcGxheU5hbWUgfHwgQ29tcG9uZW50Lm5h
bWUgfHwgJ0NvbXBvbmVudCcpIDogdm9pZCAwOworICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9k
dWN0aW9uJyA/IHdhcm5pbmcoIUNvbXBvbmVudC5jaGlsZENvbnRleHRUeXBlcywgJyVzKC4uLik6
IGNoaWxkQ29udGV4dFR5cGVzIGNhbm5vdCBiZSBkZWZpbmVkIG9uIGEgZnVuY3Rpb25hbCBjb21w
b25lbnQuJywgQ29tcG9uZW50LmRpc3BsYXlOYW1lIHx8IENvbXBvbmVudC5uYW1lIHx8ICdDb21w
b25lbnQnKSA6IHZvaWQgMDsKKyAgfQorfQorCitmdW5jdGlvbiBzaG91bGRDb25zdHJ1Y3QoQ29t
cG9uZW50KSB7CisgIHJldHVybiAhIShDb21wb25lbnQucHJvdG90eXBlICYmIENvbXBvbmVudC5w
cm90b3R5cGUuaXNSZWFjdENvbXBvbmVudCk7Cit9CisKK2Z1bmN0aW9uIGlzUHVyZUNvbXBvbmVu
dChDb21wb25lbnQpIHsKKyAgcmV0dXJuICEhKENvbXBvbmVudC5wcm90b3R5cGUgJiYgQ29tcG9u
ZW50LnByb3RvdHlwZS5pc1B1cmVSZWFjdENvbXBvbmVudCk7Cit9CisKKy8vIFNlcGFyYXRlZCBp
bnRvIGEgZnVuY3Rpb24gdG8gY29udGFpbiBkZW9wdGltaXphdGlvbnMgY2F1c2VkIGJ5IHRyeS9m
aW5hbGx5LgorZnVuY3Rpb24gbWVhc3VyZUxpZmVDeWNsZVBlcmYoZm4sIGRlYnVnSUQsIHRpbWVy
VHlwZSkgeworICBpZiAoZGVidWdJRCA9PT0gMCkgeworICAgIC8vIFRvcC1sZXZlbCB3cmFwcGVy
cyAoc2VlIFJlYWN0TW91bnQpIGFuZCBlbXB0eSBjb21wb25lbnRzIChzZWUKKyAgICAvLyBSZWFj
dERPTUVtcHR5Q29tcG9uZW50KSBhcmUgaW52aXNpYmxlIHRvIGhvb2tzIGFuZCBkZXZ0b29scy4K
KyAgICAvLyBCb3RoIGFyZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIHRoYXQgc2hvdWxkIGdvIGF3
YXkgaW4gdGhlIGZ1dHVyZS4KKyAgICByZXR1cm4gZm4oKTsKKyAgfQorCisgIFJlYWN0SW5zdHJ1
bWVudGF0aW9uLmRlYnVnVG9vbC5vbkJlZ2luTGlmZUN5Y2xlVGltZXIoZGVidWdJRCwgdGltZXJU
eXBlKTsKKyAgdHJ5IHsKKyAgICByZXR1cm4gZm4oKTsKKyAgfSBmaW5hbGx5IHsKKyAgICBSZWFj
dEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25FbmRMaWZlQ3ljbGVUaW1lcihkZWJ1Z0lELCB0
aW1lclR5cGUpOworICB9Cit9CisKKy8qKgorICogLS0tLS0tLS0tLS0tLS0tLS0tIFRoZSBMaWZl
LUN5Y2xlIG9mIGEgQ29tcG9zaXRlIENvbXBvbmVudCAtLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisg
KiAtIGNvbnN0cnVjdG9yOiBJbml0aWFsaXphdGlvbiBvZiBzdGF0ZS4gVGhlIGluc3RhbmNlIGlz
IG5vdyByZXRhaW5lZC4KKyAqICAgLSBjb21wb25lbnRXaWxsTW91bnQKKyAqICAgLSByZW5kZXIK
KyAqICAgLSBbY2hpbGRyZW4ncyBjb25zdHJ1Y3RvcnNdCisgKiAgICAgLSBbY2hpbGRyZW4ncyBj
b21wb25lbnRXaWxsTW91bnQgYW5kIHJlbmRlcl0KKyAqICAgICAtIFtjaGlsZHJlbidzIGNvbXBv
bmVudERpZE1vdW50XQorICogICAgIC0gY29tcG9uZW50RGlkTW91bnQKKyAqCisgKiAgICAgICBV
cGRhdGUgUGhhc2VzOgorICogICAgICAgLSBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzIChvbmx5
IGNhbGxlZCBpZiBwYXJlbnQgdXBkYXRlZCkKKyAqICAgICAgIC0gc2hvdWxkQ29tcG9uZW50VXBk
YXRlCisgKiAgICAgICAgIC0gY29tcG9uZW50V2lsbFVwZGF0ZQorICogICAgICAgICAgIC0gcmVu
ZGVyCisgKiAgICAgICAgICAgLSBbY2hpbGRyZW4ncyBjb25zdHJ1Y3RvcnMgb3IgcmVjZWl2ZSBw
cm9wcyBwaGFzZXNdCisgKiAgICAgICAgIC0gY29tcG9uZW50RGlkVXBkYXRlCisgKgorICogICAg
IC0gY29tcG9uZW50V2lsbFVubW91bnQKKyAqICAgICAtIFtjaGlsZHJlbidzIGNvbXBvbmVudFdp
bGxVbm1vdW50XQorICogICAtIFtjaGlsZHJlbiBkZXN0cm95ZWRdCisgKiAtIChkZXN0cm95ZWQp
OiBUaGUgaW5zdGFuY2UgaXMgbm93IGJsYW5rLCByZWxlYXNlZCBieSBSZWFjdCBhbmQgcmVhZHkg
Zm9yIEdDLgorICoKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworLyoqCisgKiBBbiBp
bmNyZW1lbnRpbmcgSUQgYXNzaWduZWQgdG8gZWFjaCBjb21wb25lbnQgd2hlbiBpdCBpcyBtb3Vu
dGVkLiBUaGlzIGlzCisgKiB1c2VkIHRvIGVuZm9yY2UgdGhlIG9yZGVyIGluIHdoaWNoIGBSZWFj
dFVwZGF0ZXNgIHVwZGF0ZXMgZGlydHkgY29tcG9uZW50cy4KKyAqCisgKiBAcHJpdmF0ZQorICov
Cit2YXIgbmV4dE1vdW50SUQgPSAxOworCisvKioKKyAqIEBsZW5kcyB7UmVhY3RDb21wb3NpdGVD
b21wb25lbnQucHJvdG90eXBlfQorICovCit2YXIgUmVhY3RDb21wb3NpdGVDb21wb25lbnQgPSB7
CisKKyAgLyoqCisgICAqIEJhc2UgY29uc3RydWN0b3IgZm9yIGFsbCBjb21wb3NpdGUgY29tcG9u
ZW50LgorICAgKgorICAgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gZWxlbWVudAorICAgKiBAZmlu
YWwKKyAgICogQGludGVybmFsCisgICAqLworICBjb25zdHJ1Y3Q6IGZ1bmN0aW9uIChlbGVtZW50
KSB7CisgICAgdGhpcy5fY3VycmVudEVsZW1lbnQgPSBlbGVtZW50OworICAgIHRoaXMuX3Jvb3RO
b2RlSUQgPSAwOworICAgIHRoaXMuX2NvbXBvc2l0ZVR5cGUgPSBudWxsOworICAgIHRoaXMuX2lu
c3RhbmNlID0gbnVsbDsKKyAgICB0aGlzLl9ob3N0UGFyZW50ID0gbnVsbDsKKyAgICB0aGlzLl9o
b3N0Q29udGFpbmVySW5mbyA9IG51bGw7CisKKyAgICAvLyBTZWUgUmVhY3RVcGRhdGVRdWV1ZQor
ICAgIHRoaXMuX3VwZGF0ZUJhdGNoTnVtYmVyID0gbnVsbDsKKyAgICB0aGlzLl9wZW5kaW5nRWxl
bWVudCA9IG51bGw7CisgICAgdGhpcy5fcGVuZGluZ1N0YXRlUXVldWUgPSBudWxsOworICAgIHRo
aXMuX3BlbmRpbmdSZXBsYWNlU3RhdGUgPSBmYWxzZTsKKyAgICB0aGlzLl9wZW5kaW5nRm9yY2VV
cGRhdGUgPSBmYWxzZTsKKworICAgIHRoaXMuX3JlbmRlcmVkTm9kZVR5cGUgPSBudWxsOworICAg
IHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50ID0gbnVsbDsKKyAgICB0aGlzLl9jb250ZXh0ID0gbnVs
bDsKKyAgICB0aGlzLl9tb3VudE9yZGVyID0gMDsKKyAgICB0aGlzLl90b3BMZXZlbFdyYXBwZXIg
PSBudWxsOworCisgICAgLy8gU2VlIFJlYWN0VXBkYXRlcyBhbmQgUmVhY3RVcGRhdGVRdWV1ZS4K
KyAgICB0aGlzLl9wZW5kaW5nQ2FsbGJhY2tzID0gbnVsbDsKKworICAgIC8vIENvbXBvbmVudFdp
bGxVbm1vdW50IHNoYWxsIG9ubHkgYmUgY2FsbGVkIG9uY2UKKyAgICB0aGlzLl9jYWxsZWRDb21w
b25lbnRXaWxsVW5tb3VudCA9IGZhbHNlOworCisgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdw
cm9kdWN0aW9uJykgeworICAgICAgdGhpcy5fd2FybmVkQWJvdXRSZWZzSW5SZW5kZXIgPSBmYWxz
ZTsKKyAgICB9CisgIH0sCisKKyAgLyoqCisgICAqIEluaXRpYWxpemVzIHRoZSBjb21wb25lbnQs
IHJlbmRlcnMgbWFya3VwLCBhbmQgcmVnaXN0ZXJzIGV2ZW50IGxpc3RlbmVycy4KKyAgICoKKyAg
ICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufFJlYWN0U2VydmVyUmVuZGVyaW5n
VHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uCisgICAqIEBwYXJhbSB7P29iamVjdH0gaG9zdFBhcmVu
dAorICAgKiBAcGFyYW0gez9vYmplY3R9IGhvc3RDb250YWluZXJJbmZvCisgICAqIEBwYXJhbSB7
P29iamVjdH0gY29udGV4dAorICAgKiBAcmV0dXJuIHs/c3RyaW5nfSBSZW5kZXJlZCBtYXJrdXAg
dG8gYmUgaW5zZXJ0ZWQgaW50byB0aGUgRE9NLgorICAgKiBAZmluYWwKKyAgICogQGludGVybmFs
CisgICAqLworICBtb3VudENvbXBvbmVudDogZnVuY3Rpb24gKHRyYW5zYWN0aW9uLCBob3N0UGFy
ZW50LCBob3N0Q29udGFpbmVySW5mbywgY29udGV4dCkgeworICAgIHZhciBfdGhpcyA9IHRoaXM7
CisKKyAgICB0aGlzLl9jb250ZXh0ID0gY29udGV4dDsKKyAgICB0aGlzLl9tb3VudE9yZGVyID0g
bmV4dE1vdW50SUQrKzsKKyAgICB0aGlzLl9ob3N0UGFyZW50ID0gaG9zdFBhcmVudDsKKyAgICB0
aGlzLl9ob3N0Q29udGFpbmVySW5mbyA9IGhvc3RDb250YWluZXJJbmZvOworCisgICAgdmFyIHB1
YmxpY1Byb3BzID0gdGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHM7CisgICAgdmFyIHB1YmxpY0Nv
bnRleHQgPSB0aGlzLl9wcm9jZXNzQ29udGV4dChjb250ZXh0KTsKKworICAgIHZhciBDb21wb25l
bnQgPSB0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlOworCisgICAgdmFyIHVwZGF0ZVF1ZXVlID0g
dHJhbnNhY3Rpb24uZ2V0VXBkYXRlUXVldWUoKTsKKworICAgIC8vIEluaXRpYWxpemUgdGhlIHB1
YmxpYyBjbGFzcworICAgIHZhciBkb0NvbnN0cnVjdCA9IHNob3VsZENvbnN0cnVjdChDb21wb25l
bnQpOworICAgIHZhciBpbnN0ID0gdGhpcy5fY29uc3RydWN0Q29tcG9uZW50KGRvQ29uc3RydWN0
LCBwdWJsaWNQcm9wcywgcHVibGljQ29udGV4dCwgdXBkYXRlUXVldWUpOworICAgIHZhciByZW5k
ZXJlZEVsZW1lbnQ7CisKKyAgICAvLyBTdXBwb3J0IGZ1bmN0aW9uYWwgY29tcG9uZW50cworICAg
IGlmICghZG9Db25zdHJ1Y3QgJiYgKGluc3QgPT0gbnVsbCB8fCBpbnN0LnJlbmRlciA9PSBudWxs
KSkgeworICAgICAgcmVuZGVyZWRFbGVtZW50ID0gaW5zdDsKKyAgICAgIHdhcm5JZkludmFsaWRF
bGVtZW50KENvbXBvbmVudCwgcmVuZGVyZWRFbGVtZW50KTsKKyAgICAgICEoaW5zdCA9PT0gbnVs
bCB8fCBpbnN0ID09PSBmYWxzZSB8fCBSZWFjdC5pc1ZhbGlkRWxlbWVudChpbnN0KSkgPyAiZGV2
ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICclcyguLi4pOiBB
IHZhbGlkIFJlYWN0IGVsZW1lbnQgKG9yIG51bGwpIG11c3QgYmUgcmV0dXJuZWQuIFlvdSBtYXkg
aGF2ZSByZXR1cm5lZCB1bmRlZmluZWQsIGFuIGFycmF5IG9yIHNvbWUgb3RoZXIgaW52YWxpZCBv
YmplY3QuJywgQ29tcG9uZW50LmRpc3BsYXlOYW1lIHx8IENvbXBvbmVudC5uYW1lIHx8ICdDb21w
b25lbnQnKSA6IF9wcm9kSW52YXJpYW50KCcxMDUnLCBDb21wb25lbnQuZGlzcGxheU5hbWUgfHwg
Q29tcG9uZW50Lm5hbWUgfHwgJ0NvbXBvbmVudCcpIDogdm9pZCAwOworICAgICAgaW5zdCA9IG5l
dyBTdGF0ZWxlc3NDb21wb25lbnQoQ29tcG9uZW50KTsKKyAgICAgIHRoaXMuX2NvbXBvc2l0ZVR5
cGUgPSBDb21wb3NpdGVUeXBlcy5TdGF0ZWxlc3NGdW5jdGlvbmFsOworICAgIH0gZWxzZSB7Cisg
ICAgICBpZiAoaXNQdXJlQ29tcG9uZW50KENvbXBvbmVudCkpIHsKKyAgICAgICAgdGhpcy5fY29t
cG9zaXRlVHlwZSA9IENvbXBvc2l0ZVR5cGVzLlB1cmVDbGFzczsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHRoaXMuX2NvbXBvc2l0ZVR5cGUgPSBDb21wb3NpdGVUeXBlcy5JbXB1cmVDbGFzczsK
KyAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24n
KSB7CisgICAgICAvLyBUaGlzIHdpbGwgdGhyb3cgbGF0ZXIgaW4gX3JlbmRlclZhbGlkYXRlZENv
bXBvbmVudCwgYnV0IGFkZCBhbiBlYXJseQorICAgICAgLy8gd2FybmluZyBub3cgdG8gaGVscCBk
ZWJ1Z2dpbmcKKyAgICAgIGlmIChpbnN0LnJlbmRlciA9PSBudWxsKSB7CisgICAgICAgICJkZXZl
bG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICclcyguLi4pOiBObyBg
cmVuZGVyYCBtZXRob2QgZm91bmQgb24gdGhlIHJldHVybmVkIGNvbXBvbmVudCAnICsgJ2luc3Rh
bmNlOiB5b3UgbWF5IGhhdmUgZm9yZ290dGVuIHRvIGRlZmluZSBgcmVuZGVyYC4nLCBDb21wb25l
bnQuZGlzcGxheU5hbWUgfHwgQ29tcG9uZW50Lm5hbWUgfHwgJ0NvbXBvbmVudCcpIDogdm9pZCAw
OworICAgICAgfQorCisgICAgICB2YXIgcHJvcHNNdXRhdGVkID0gaW5zdC5wcm9wcyAhPT0gcHVi
bGljUHJvcHM7CisgICAgICB2YXIgY29tcG9uZW50TmFtZSA9IENvbXBvbmVudC5kaXNwbGF5TmFt
ZSB8fCBDb21wb25lbnQubmFtZSB8fCAnQ29tcG9uZW50JzsKKworICAgICAgImRldmVsb3BtZW50
IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhpbnN0LnByb3BzID09PSB1bmRlZmluZWQgfHwg
IXByb3BzTXV0YXRlZCwgJyVzKC4uLik6IFdoZW4gY2FsbGluZyBzdXBlcigpIGluIGAlc2AsIG1h
a2Ugc3VyZSB0byBwYXNzICcgKyAndXAgdGhlIHNhbWUgcHJvcHMgdGhhdCB5b3VyIGNvbXBvbmVu
dFwncyBjb25zdHJ1Y3RvciB3YXMgcGFzc2VkLicsIGNvbXBvbmVudE5hbWUsIGNvbXBvbmVudE5h
bWUpIDogdm9pZCAwOworICAgIH0KKworICAgIC8vIFRoZXNlIHNob3VsZCBiZSBzZXQgdXAgaW4g
dGhlIGNvbnN0cnVjdG9yLCBidXQgYXMgYSBjb252ZW5pZW5jZSBmb3IKKyAgICAvLyBzaW1wbGVy
IGNsYXNzIGFic3RyYWN0aW9ucywgd2Ugc2V0IHRoZW0gdXAgYWZ0ZXIgdGhlIGZhY3QuCisgICAg
aW5zdC5wcm9wcyA9IHB1YmxpY1Byb3BzOworICAgIGluc3QuY29udGV4dCA9IHB1YmxpY0NvbnRl
eHQ7CisgICAgaW5zdC5yZWZzID0gZW1wdHlPYmplY3Q7CisgICAgaW5zdC51cGRhdGVyID0gdXBk
YXRlUXVldWU7CisKKyAgICB0aGlzLl9pbnN0YW5jZSA9IGluc3Q7CisKKyAgICAvLyBTdG9yZSBh
IHJlZmVyZW5jZSBmcm9tIHRoZSBpbnN0YW5jZSBiYWNrIHRvIHRoZSBpbnRlcm5hbCByZXByZXNl
bnRhdGlvbgorICAgIFJlYWN0SW5zdGFuY2VNYXAuc2V0KGluc3QsIHRoaXMpOworCisgICAgaWYg
KCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgLy8gU2luY2UgcGxhaW4g
SlMgY2xhc3NlcyBhcmUgZGVmaW5lZCB3aXRob3V0IGFueSBzcGVjaWFsIGluaXRpYWxpemF0aW9u
CisgICAgICAvLyBsb2dpYywgd2UgY2FuIG5vdCBjYXRjaCBjb21tb24gZXJyb3JzIGVhcmx5LiBU
aGVyZWZvcmUsIHdlIGhhdmUgdG8KKyAgICAgIC8vIGNhdGNoIHRoZW0gaGVyZSwgYXQgaW5pdGlh
bGl6YXRpb24gdGltZSwgaW5zdGVhZC4KKyAgICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0
aW9uJyA/IHdhcm5pbmcoIWluc3QuZ2V0SW5pdGlhbFN0YXRlIHx8IGluc3QuZ2V0SW5pdGlhbFN0
YXRlLmlzUmVhY3RDbGFzc0FwcHJvdmVkLCAnZ2V0SW5pdGlhbFN0YXRlIHdhcyBkZWZpbmVkIG9u
ICVzLCBhIHBsYWluIEphdmFTY3JpcHQgY2xhc3MuICcgKyAnVGhpcyBpcyBvbmx5IHN1cHBvcnRl
ZCBmb3IgY2xhc3NlcyBjcmVhdGVkIHVzaW5nIFJlYWN0LmNyZWF0ZUNsYXNzLiAnICsgJ0RpZCB5
b3UgbWVhbiB0byBkZWZpbmUgYSBzdGF0ZSBwcm9wZXJ0eSBpbnN0ZWFkPycsIHRoaXMuZ2V0TmFt
ZSgpIHx8ICdhIGNvbXBvbmVudCcpIDogdm9pZCAwOworICAgICAgImRldmVsb3BtZW50IiAhPT0g
J3Byb2R1Y3Rpb24nID8gd2FybmluZyghaW5zdC5nZXREZWZhdWx0UHJvcHMgfHwgaW5zdC5nZXRE
ZWZhdWx0UHJvcHMuaXNSZWFjdENsYXNzQXBwcm92ZWQsICdnZXREZWZhdWx0UHJvcHMgd2FzIGRl
ZmluZWQgb24gJXMsIGEgcGxhaW4gSmF2YVNjcmlwdCBjbGFzcy4gJyArICdUaGlzIGlzIG9ubHkg
c3VwcG9ydGVkIGZvciBjbGFzc2VzIGNyZWF0ZWQgdXNpbmcgUmVhY3QuY3JlYXRlQ2xhc3MuICcg
KyAnVXNlIGEgc3RhdGljIHByb3BlcnR5IHRvIGRlZmluZSBkZWZhdWx0UHJvcHMgaW5zdGVhZC4n
LCB0aGlzLmdldE5hbWUoKSB8fCAnYSBjb21wb25lbnQnKSA6IHZvaWQgMDsKKyAgICAgICJkZXZl
bG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIWluc3QucHJvcFR5cGVzLCAncHJv
cFR5cGVzIHdhcyBkZWZpbmVkIGFzIGFuIGluc3RhbmNlIHByb3BlcnR5IG9uICVzLiBVc2UgYSBz
dGF0aWMgJyArICdwcm9wZXJ0eSB0byBkZWZpbmUgcHJvcFR5cGVzIGluc3RlYWQuJywgdGhpcy5n
ZXROYW1lKCkgfHwgJ2EgY29tcG9uZW50JykgOiB2b2lkIDA7CisgICAgICAiZGV2ZWxvcG1lbnQi
ICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCFpbnN0LmNvbnRleHRUeXBlcywgJ2NvbnRleHRU
eXBlcyB3YXMgZGVmaW5lZCBhcyBhbiBpbnN0YW5jZSBwcm9wZXJ0eSBvbiAlcy4gVXNlIGEgJyAr
ICdzdGF0aWMgcHJvcGVydHkgdG8gZGVmaW5lIGNvbnRleHRUeXBlcyBpbnN0ZWFkLicsIHRoaXMu
Z2V0TmFtZSgpIHx8ICdhIGNvbXBvbmVudCcpIDogdm9pZCAwOworICAgICAgImRldmVsb3BtZW50
IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyh0eXBlb2YgaW5zdC5jb21wb25lbnRTaG91bGRV
cGRhdGUgIT09ICdmdW5jdGlvbicsICclcyBoYXMgYSBtZXRob2QgY2FsbGVkICcgKyAnY29tcG9u
ZW50U2hvdWxkVXBkYXRlKCkuIERpZCB5b3UgbWVhbiBzaG91bGRDb21wb25lbnRVcGRhdGUoKT8g
JyArICdUaGUgbmFtZSBpcyBwaHJhc2VkIGFzIGEgcXVlc3Rpb24gYmVjYXVzZSB0aGUgZnVuY3Rp
b24gaXMgJyArICdleHBlY3RlZCB0byByZXR1cm4gYSB2YWx1ZS4nLCB0aGlzLmdldE5hbWUoKSB8
fCAnQSBjb21wb25lbnQnKSA6IHZvaWQgMDsKKyAgICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9k
dWN0aW9uJyA/IHdhcm5pbmcodHlwZW9mIGluc3QuY29tcG9uZW50RGlkVW5tb3VudCAhPT0gJ2Z1
bmN0aW9uJywgJyVzIGhhcyBhIG1ldGhvZCBjYWxsZWQgJyArICdjb21wb25lbnREaWRVbm1vdW50
KCkuIEJ1dCB0aGVyZSBpcyBubyBzdWNoIGxpZmVjeWNsZSBtZXRob2QuICcgKyAnRGlkIHlvdSBt
ZWFuIGNvbXBvbmVudFdpbGxVbm1vdW50KCk/JywgdGhpcy5nZXROYW1lKCkgfHwgJ0EgY29tcG9u
ZW50JykgOiB2b2lkIDA7CisgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3
YXJuaW5nKHR5cGVvZiBpbnN0LmNvbXBvbmVudFdpbGxSZWNpZXZlUHJvcHMgIT09ICdmdW5jdGlv
bicsICclcyBoYXMgYSBtZXRob2QgY2FsbGVkICcgKyAnY29tcG9uZW50V2lsbFJlY2lldmVQcm9w
cygpLiBEaWQgeW91IG1lYW4gY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcygpPycsIHRoaXMuZ2V0
TmFtZSgpIHx8ICdBIGNvbXBvbmVudCcpIDogdm9pZCAwOworICAgIH0KKworICAgIHZhciBpbml0
aWFsU3RhdGUgPSBpbnN0LnN0YXRlOworICAgIGlmIChpbml0aWFsU3RhdGUgPT09IHVuZGVmaW5l
ZCkgeworICAgICAgaW5zdC5zdGF0ZSA9IGluaXRpYWxTdGF0ZSA9IG51bGw7CisgICAgfQorICAg
ICEodHlwZW9mIGluaXRpYWxTdGF0ZSA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkoaW5p
dGlhbFN0YXRlKSkgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQo
ZmFsc2UsICclcy5zdGF0ZTogbXVzdCBiZSBzZXQgdG8gYW4gb2JqZWN0IG9yIG51bGwnLCB0aGlz
LmdldE5hbWUoKSB8fCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQnKSA6IF9wcm9kSW52YXJpYW50
KCcxMDYnLCB0aGlzLmdldE5hbWUoKSB8fCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQnKSA6IHZv
aWQgMDsKKworICAgIHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlID0gbnVsbDsKKyAgICB0aGlzLl9w
ZW5kaW5nUmVwbGFjZVN0YXRlID0gZmFsc2U7CisgICAgdGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRl
ID0gZmFsc2U7CisKKyAgICB2YXIgbWFya3VwOworICAgIGlmIChpbnN0LnVuc3RhYmxlX2hhbmRs
ZUVycm9yKSB7CisgICAgICBtYXJrdXAgPSB0aGlzLnBlcmZvcm1Jbml0aWFsTW91bnRXaXRoRXJy
b3JIYW5kbGluZyhyZW5kZXJlZEVsZW1lbnQsIGhvc3RQYXJlbnQsIGhvc3RDb250YWluZXJJbmZv
LCB0cmFuc2FjdGlvbiwgY29udGV4dCk7CisgICAgfSBlbHNlIHsKKyAgICAgIG1hcmt1cCA9IHRo
aXMucGVyZm9ybUluaXRpYWxNb3VudChyZW5kZXJlZEVsZW1lbnQsIGhvc3RQYXJlbnQsIGhvc3RD
b250YWluZXJJbmZvLCB0cmFuc2FjdGlvbiwgY29udGV4dCk7CisgICAgfQorCisgICAgaWYgKGlu
c3QuY29tcG9uZW50RGlkTW91bnQpIHsKKyAgICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJv
ZHVjdGlvbicpIHsKKyAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5x
dWV1ZShmdW5jdGlvbiAoKSB7CisgICAgICAgICAgbWVhc3VyZUxpZmVDeWNsZVBlcmYoZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgcmV0dXJuIGluc3QuY29tcG9uZW50RGlkTW91bnQoKTsKKyAg
ICAgICAgICB9LCBfdGhpcy5fZGVidWdJRCwgJ2NvbXBvbmVudERpZE1vdW50Jyk7CisgICAgICAg
IH0pOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJl
YWR5KCkuZW5xdWV1ZShpbnN0LmNvbXBvbmVudERpZE1vdW50LCBpbnN0KTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICByZXR1cm4gbWFya3VwOworICB9LAorCisgIF9jb25zdHJ1Y3RDb21wb25lbnQ6
IGZ1bmN0aW9uIChkb0NvbnN0cnVjdCwgcHVibGljUHJvcHMsIHB1YmxpY0NvbnRleHQsIHVwZGF0
ZVF1ZXVlKSB7CisgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAg
ICAgUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCA9IHRoaXM7CisgICAgICB0cnkgeworICAgICAg
ICByZXR1cm4gdGhpcy5fY29uc3RydWN0Q29tcG9uZW50V2l0aG91dE93bmVyKGRvQ29uc3RydWN0
LCBwdWJsaWNQcm9wcywgcHVibGljQ29udGV4dCwgdXBkYXRlUXVldWUpOworICAgICAgfSBmaW5h
bGx5IHsKKyAgICAgICAgUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCA9IG51bGw7CisgICAgICB9
CisgICAgfSBlbHNlIHsKKyAgICAgIHJldHVybiB0aGlzLl9jb25zdHJ1Y3RDb21wb25lbnRXaXRo
b3V0T3duZXIoZG9Db25zdHJ1Y3QsIHB1YmxpY1Byb3BzLCBwdWJsaWNDb250ZXh0LCB1cGRhdGVR
dWV1ZSk7CisgICAgfQorICB9LAorCisgIF9jb25zdHJ1Y3RDb21wb25lbnRXaXRob3V0T3duZXI6
IGZ1bmN0aW9uIChkb0NvbnN0cnVjdCwgcHVibGljUHJvcHMsIHB1YmxpY0NvbnRleHQsIHVwZGF0
ZVF1ZXVlKSB7CisgICAgdmFyIENvbXBvbmVudCA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGU7
CisKKyAgICBpZiAoZG9Db25zdHJ1Y3QpIHsKKyAgICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAn
cHJvZHVjdGlvbicpIHsKKyAgICAgICAgcmV0dXJuIG1lYXN1cmVMaWZlQ3ljbGVQZXJmKGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICByZXR1cm4gbmV3IENvbXBvbmVudChwdWJsaWNQcm9wcywgcHVi
bGljQ29udGV4dCwgdXBkYXRlUXVldWUpOworICAgICAgICB9LCB0aGlzLl9kZWJ1Z0lELCAnY3Rv
cicpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIG5ldyBDb21wb25lbnQocHVibGlj
UHJvcHMsIHB1YmxpY0NvbnRleHQsIHVwZGF0ZVF1ZXVlKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICAvLyBUaGlzIGNhbiBzdGlsbCBiZSBhbiBpbnN0YW5jZSBpbiBjYXNlIG9mIGZhY3RvcnkgY29t
cG9uZW50cworICAgIC8vIGJ1dCB3ZSdsbCBjb3VudCB0aGlzIGFzIHRpbWUgc3BlbnQgcmVuZGVy
aW5nIGFzIHRoZSBtb3JlIGNvbW1vbiBjYXNlLgorICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAn
cHJvZHVjdGlvbicpIHsKKyAgICAgIHJldHVybiBtZWFzdXJlTGlmZUN5Y2xlUGVyZihmdW5jdGlv
biAoKSB7CisgICAgICAgIHJldHVybiBDb21wb25lbnQocHVibGljUHJvcHMsIHB1YmxpY0NvbnRl
eHQsIHVwZGF0ZVF1ZXVlKTsKKyAgICAgIH0sIHRoaXMuX2RlYnVnSUQsICdyZW5kZXInKTsKKyAg
ICB9IGVsc2UgeworICAgICAgcmV0dXJuIENvbXBvbmVudChwdWJsaWNQcm9wcywgcHVibGljQ29u
dGV4dCwgdXBkYXRlUXVldWUpOworICAgIH0KKyAgfSwKKworICBwZXJmb3JtSW5pdGlhbE1vdW50
V2l0aEVycm9ySGFuZGxpbmc6IGZ1bmN0aW9uIChyZW5kZXJlZEVsZW1lbnQsIGhvc3RQYXJlbnQs
IGhvc3RDb250YWluZXJJbmZvLCB0cmFuc2FjdGlvbiwgY29udGV4dCkgeworICAgIHZhciBtYXJr
dXA7CisgICAgdmFyIGNoZWNrcG9pbnQgPSB0cmFuc2FjdGlvbi5jaGVja3BvaW50KCk7CisgICAg
dHJ5IHsKKyAgICAgIG1hcmt1cCA9IHRoaXMucGVyZm9ybUluaXRpYWxNb3VudChyZW5kZXJlZEVs
ZW1lbnQsIGhvc3RQYXJlbnQsIGhvc3RDb250YWluZXJJbmZvLCB0cmFuc2FjdGlvbiwgY29udGV4
dCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgLy8gUm9sbCBiYWNrIHRvIGNoZWNrcG9pbnQs
IGhhbmRsZSBlcnJvciAod2hpY2ggbWF5IGFkZCBpdGVtcyB0byB0aGUgdHJhbnNhY3Rpb24pLCBh
bmQgdGFrZSBhIG5ldyBjaGVja3BvaW50CisgICAgICB0cmFuc2FjdGlvbi5yb2xsYmFjayhjaGVj
a3BvaW50KTsKKyAgICAgIHRoaXMuX2luc3RhbmNlLnVuc3RhYmxlX2hhbmRsZUVycm9yKGUpOwor
ICAgICAgaWYgKHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlKSB7CisgICAgICAgIHRoaXMuX2luc3Rh
bmNlLnN0YXRlID0gdGhpcy5fcHJvY2Vzc1BlbmRpbmdTdGF0ZSh0aGlzLl9pbnN0YW5jZS5wcm9w
cywgdGhpcy5faW5zdGFuY2UuY29udGV4dCk7CisgICAgICB9CisgICAgICBjaGVja3BvaW50ID0g
dHJhbnNhY3Rpb24uY2hlY2twb2ludCgpOworCisgICAgICB0aGlzLl9yZW5kZXJlZENvbXBvbmVu
dC51bm1vdW50Q29tcG9uZW50KHRydWUpOworICAgICAgdHJhbnNhY3Rpb24ucm9sbGJhY2soY2hl
Y2twb2ludCk7CisKKyAgICAgIC8vIFRyeSBhZ2FpbiAtIHdlJ3ZlIGluZm9ybWVkIHRoZSBjb21w
b25lbnQgYWJvdXQgdGhlIGVycm9yLCBzbyB0aGV5IGNhbiByZW5kZXIgYW4gZXJyb3IgbWVzc2Fn
ZSB0aGlzIHRpbWUuCisgICAgICAvLyBJZiB0aGlzIHRocm93cyBhZ2FpbiwgdGhlIGVycm9yIHdp
bGwgYnViYmxlIHVwIChhbmQgY2FuIGJlIGNhdWdodCBieSBhIGhpZ2hlciBlcnJvciBib3VuZGFy
eSkuCisgICAgICBtYXJrdXAgPSB0aGlzLnBlcmZvcm1Jbml0aWFsTW91bnQocmVuZGVyZWRFbGVt
ZW50LCBob3N0UGFyZW50LCBob3N0Q29udGFpbmVySW5mbywgdHJhbnNhY3Rpb24sIGNvbnRleHQp
OworICAgIH0KKyAgICByZXR1cm4gbWFya3VwOworICB9LAorCisgIHBlcmZvcm1Jbml0aWFsTW91
bnQ6IGZ1bmN0aW9uIChyZW5kZXJlZEVsZW1lbnQsIGhvc3RQYXJlbnQsIGhvc3RDb250YWluZXJJ
bmZvLCB0cmFuc2FjdGlvbiwgY29udGV4dCkgeworICAgIHZhciBpbnN0ID0gdGhpcy5faW5zdGFu
Y2U7CisKKyAgICB2YXIgZGVidWdJRCA9IDA7CisgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdw
cm9kdWN0aW9uJykgeworICAgICAgZGVidWdJRCA9IHRoaXMuX2RlYnVnSUQ7CisgICAgfQorCisg
ICAgaWYgKGluc3QuY29tcG9uZW50V2lsbE1vdW50KSB7CisgICAgICBpZiAoImRldmVsb3BtZW50
IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAgIG1lYXN1cmVMaWZlQ3ljbGVQZXJmKGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICByZXR1cm4gaW5zdC5jb21wb25lbnRXaWxsTW91bnQoKTsKKyAg
ICAgICAgfSwgZGVidWdJRCwgJ2NvbXBvbmVudFdpbGxNb3VudCcpOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgaW5zdC5jb21wb25lbnRXaWxsTW91bnQoKTsKKyAgICAgIH0KKyAgICAgIC8vIFdo
ZW4gbW91bnRpbmcsIGNhbGxzIHRvIGBzZXRTdGF0ZWAgYnkgYGNvbXBvbmVudFdpbGxNb3VudGAg
d2lsbCBzZXQKKyAgICAgIC8vIGB0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZWAgd2l0aG91dCB0cmln
Z2VyaW5nIGEgcmUtcmVuZGVyLgorICAgICAgaWYgKHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlKSB7
CisgICAgICAgIGluc3Quc3RhdGUgPSB0aGlzLl9wcm9jZXNzUGVuZGluZ1N0YXRlKGluc3QucHJv
cHMsIGluc3QuY29udGV4dCk7CisgICAgICB9CisgICAgfQorCisgICAgLy8gSWYgbm90IGEgc3Rh
dGVsZXNzIGNvbXBvbmVudCwgd2Ugbm93IHJlbmRlcgorICAgIGlmIChyZW5kZXJlZEVsZW1lbnQg
PT09IHVuZGVmaW5lZCkgeworICAgICAgcmVuZGVyZWRFbGVtZW50ID0gdGhpcy5fcmVuZGVyVmFs
aWRhdGVkQ29tcG9uZW50KCk7CisgICAgfQorCisgICAgdmFyIG5vZGVUeXBlID0gUmVhY3ROb2Rl
VHlwZXMuZ2V0VHlwZShyZW5kZXJlZEVsZW1lbnQpOworICAgIHRoaXMuX3JlbmRlcmVkTm9kZVR5
cGUgPSBub2RlVHlwZTsKKyAgICB2YXIgY2hpbGQgPSB0aGlzLl9pbnN0YW50aWF0ZVJlYWN0Q29t
cG9uZW50KHJlbmRlcmVkRWxlbWVudCwgbm9kZVR5cGUgIT09IFJlYWN0Tm9kZVR5cGVzLkVNUFRZ
IC8qIHNob3VsZEhhdmVEZWJ1Z0lEICovCisgICAgKTsKKyAgICB0aGlzLl9yZW5kZXJlZENvbXBv
bmVudCA9IGNoaWxkOworCisgICAgdmFyIG1hcmt1cCA9IFJlYWN0UmVjb25jaWxlci5tb3VudENv
bXBvbmVudChjaGlsZCwgdHJhbnNhY3Rpb24sIGhvc3RQYXJlbnQsIGhvc3RDb250YWluZXJJbmZv
LCB0aGlzLl9wcm9jZXNzQ2hpbGRDb250ZXh0KGNvbnRleHQpLCBkZWJ1Z0lEKTsKKworICAgIGlm
ICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgIGlmIChkZWJ1Z0lEICE9
PSAwKSB7CisgICAgICAgIHZhciBjaGlsZERlYnVnSURzID0gY2hpbGQuX2RlYnVnSUQgIT09IDAg
PyBbY2hpbGQuX2RlYnVnSURdIDogW107CisgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRl
YnVnVG9vbC5vblNldENoaWxkcmVuKGRlYnVnSUQsIGNoaWxkRGVidWdJRHMpOworICAgICAgfQor
ICAgIH0KKworICAgIHJldHVybiBtYXJrdXA7CisgIH0sCisKKyAgZ2V0SG9zdE5vZGU6IGZ1bmN0
aW9uICgpIHsKKyAgICByZXR1cm4gUmVhY3RSZWNvbmNpbGVyLmdldEhvc3ROb2RlKHRoaXMuX3Jl
bmRlcmVkQ29tcG9uZW50KTsKKyAgfSwKKworICAvKioKKyAgICogUmVsZWFzZXMgYW55IHJlc291
cmNlcyBhbGxvY2F0ZWQgYnkgYG1vdW50Q29tcG9uZW50YC4KKyAgICoKKyAgICogQGZpbmFsCisg
ICAqIEBpbnRlcm5hbAorICAgKi8KKyAgdW5tb3VudENvbXBvbmVudDogZnVuY3Rpb24gKHNhZmVs
eSkgeworICAgIGlmICghdGhpcy5fcmVuZGVyZWRDb21wb25lbnQpIHsKKyAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICB2YXIgaW5zdCA9IHRoaXMuX2luc3RhbmNlOworCisgICAgaWYgKGluc3Qu
Y29tcG9uZW50V2lsbFVubW91bnQgJiYgIWluc3QuX2NhbGxlZENvbXBvbmVudFdpbGxVbm1vdW50
KSB7CisgICAgICBpbnN0Ll9jYWxsZWRDb21wb25lbnRXaWxsVW5tb3VudCA9IHRydWU7CisKKyAg
ICAgIGlmIChzYWZlbHkpIHsKKyAgICAgICAgdmFyIG5hbWUgPSB0aGlzLmdldE5hbWUoKSArICcu
Y29tcG9uZW50V2lsbFVubW91bnQoKSc7CisgICAgICAgIFJlYWN0RXJyb3JVdGlscy5pbnZva2VH
dWFyZGVkQ2FsbGJhY2sobmFtZSwgaW5zdC5jb21wb25lbnRXaWxsVW5tb3VudC5iaW5kKGluc3Qp
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVj
dGlvbicpIHsKKyAgICAgICAgICBtZWFzdXJlTGlmZUN5Y2xlUGVyZihmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICByZXR1cm4gaW5zdC5jb21wb25lbnRXaWxsVW5tb3VudCgpOworICAgICAgICAg
IH0sIHRoaXMuX2RlYnVnSUQsICdjb21wb25lbnRXaWxsVW5tb3VudCcpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgIGluc3QuY29tcG9uZW50V2lsbFVubW91bnQoKTsKKyAgICAgICAgfQor
ICAgICAgfQorICAgIH0KKworICAgIGlmICh0aGlzLl9yZW5kZXJlZENvbXBvbmVudCkgeworICAg
ICAgUmVhY3RSZWNvbmNpbGVyLnVubW91bnRDb21wb25lbnQodGhpcy5fcmVuZGVyZWRDb21wb25l
bnQsIHNhZmVseSk7CisgICAgICB0aGlzLl9yZW5kZXJlZE5vZGVUeXBlID0gbnVsbDsKKyAgICAg
IHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50ID0gbnVsbDsKKyAgICAgIHRoaXMuX2luc3RhbmNlID0g
bnVsbDsKKyAgICB9CisKKyAgICAvLyBSZXNldCBwZW5kaW5nIGZpZWxkcworICAgIC8vIEV2ZW4g
aWYgdGhpcyBjb21wb25lbnQgaXMgc2NoZWR1bGVkIGZvciBhbm90aGVyIHVwZGF0ZSBpbiBSZWFj
dFVwZGF0ZXMsCisgICAgLy8gaXQgd291bGQgc3RpbGwgYmUgaWdub3JlZCBiZWNhdXNlIHRoZXNl
IGZpZWxkcyBhcmUgcmVzZXQuCisgICAgdGhpcy5fcGVuZGluZ1N0YXRlUXVldWUgPSBudWxsOwor
ICAgIHRoaXMuX3BlbmRpbmdSZXBsYWNlU3RhdGUgPSBmYWxzZTsKKyAgICB0aGlzLl9wZW5kaW5n
Rm9yY2VVcGRhdGUgPSBmYWxzZTsKKyAgICB0aGlzLl9wZW5kaW5nQ2FsbGJhY2tzID0gbnVsbDsK
KyAgICB0aGlzLl9wZW5kaW5nRWxlbWVudCA9IG51bGw7CisKKyAgICAvLyBUaGVzZSBmaWVsZHMg
ZG8gbm90IHJlYWxseSBuZWVkIHRvIGJlIHJlc2V0IHNpbmNlIHRoaXMgb2JqZWN0IGlzIG5vCisg
ICAgLy8gbG9uZ2VyIGFjY2Vzc2libGUuCisgICAgdGhpcy5fY29udGV4dCA9IG51bGw7CisgICAg
dGhpcy5fcm9vdE5vZGVJRCA9IDA7CisgICAgdGhpcy5fdG9wTGV2ZWxXcmFwcGVyID0gbnVsbDsK
KworICAgIC8vIERlbGV0ZSB0aGUgcmVmZXJlbmNlIGZyb20gdGhlIGluc3RhbmNlIHRvIHRoaXMg
aW50ZXJuYWwgcmVwcmVzZW50YXRpb24KKyAgICAvLyB3aGljaCBhbGxvdyB0aGUgaW50ZXJuYWxz
IHRvIGJlIHByb3Blcmx5IGNsZWFuZWQgdXAgZXZlbiBpZiB0aGUgdXNlcgorICAgIC8vIGxlYWtz
IGEgcmVmZXJlbmNlIHRvIHRoZSBwdWJsaWMgaW5zdGFuY2UuCisgICAgUmVhY3RJbnN0YW5jZU1h
cC5yZW1vdmUoaW5zdCk7CisKKyAgICAvLyBTb21lIGV4aXN0aW5nIGNvbXBvbmVudHMgcmVseSBv
biBpbnN0LnByb3BzIGV2ZW4gYWZ0ZXIgdGhleSd2ZSBiZWVuCisgICAgLy8gZGVzdHJveWVkIChp
biBldmVudCBoYW5kbGVycykuCisgICAgLy8gVE9ETzogaW5zdC5wcm9wcyA9IG51bGw7CisgICAg
Ly8gVE9ETzogaW5zdC5zdGF0ZSA9IG51bGw7CisgICAgLy8gVE9ETzogaW5zdC5jb250ZXh0ID0g
bnVsbDsKKyAgfSwKKworICAvKioKKyAgICogRmlsdGVycyB0aGUgY29udGV4dCBvYmplY3QgdG8g
b25seSBjb250YWluIGtleXMgc3BlY2lmaWVkIGluCisgICAqIGBjb250ZXh0VHlwZXNgCisgICAq
CisgICAqIEBwYXJhbSB7b2JqZWN0fSBjb250ZXh0CisgICAqIEByZXR1cm4gez9vYmplY3R9Cisg
ICAqIEBwcml2YXRlCisgICAqLworICBfbWFza0NvbnRleHQ6IGZ1bmN0aW9uIChjb250ZXh0KSB7
CisgICAgdmFyIENvbXBvbmVudCA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGU7CisgICAgdmFy
IGNvbnRleHRUeXBlcyA9IENvbXBvbmVudC5jb250ZXh0VHlwZXM7CisgICAgaWYgKCFjb250ZXh0
VHlwZXMpIHsKKyAgICAgIHJldHVybiBlbXB0eU9iamVjdDsKKyAgICB9CisgICAgdmFyIG1hc2tl
ZENvbnRleHQgPSB7fTsKKyAgICBmb3IgKHZhciBjb250ZXh0TmFtZSBpbiBjb250ZXh0VHlwZXMp
IHsKKyAgICAgIG1hc2tlZENvbnRleHRbY29udGV4dE5hbWVdID0gY29udGV4dFtjb250ZXh0TmFt
ZV07CisgICAgfQorICAgIHJldHVybiBtYXNrZWRDb250ZXh0OworICB9LAorCisgIC8qKgorICAg
KiBGaWx0ZXJzIHRoZSBjb250ZXh0IG9iamVjdCB0byBvbmx5IGNvbnRhaW4ga2V5cyBzcGVjaWZp
ZWQgaW4KKyAgICogYGNvbnRleHRUeXBlc2AsIGFuZCBhc3NlcnRzIHRoYXQgdGhleSBhcmUgdmFs
aWQuCisgICAqCisgICAqIEBwYXJhbSB7b2JqZWN0fSBjb250ZXh0CisgICAqIEByZXR1cm4gez9v
YmplY3R9CisgICAqIEBwcml2YXRlCisgICAqLworICBfcHJvY2Vzc0NvbnRleHQ6IGZ1bmN0aW9u
IChjb250ZXh0KSB7CisgICAgdmFyIG1hc2tlZENvbnRleHQgPSB0aGlzLl9tYXNrQ29udGV4dChj
b250ZXh0KTsKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAg
ICB2YXIgQ29tcG9uZW50ID0gdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTsKKyAgICAgIGlmIChD
b21wb25lbnQuY29udGV4dFR5cGVzKSB7CisgICAgICAgIHRoaXMuX2NoZWNrQ29udGV4dFR5cGVz
KENvbXBvbmVudC5jb250ZXh0VHlwZXMsIG1hc2tlZENvbnRleHQsICdjb250ZXh0Jyk7CisgICAg
ICB9CisgICAgfQorICAgIHJldHVybiBtYXNrZWRDb250ZXh0OworICB9LAorCisgIC8qKgorICAg
KiBAcGFyYW0ge29iamVjdH0gY3VycmVudENvbnRleHQKKyAgICogQHJldHVybiB7b2JqZWN0fQor
ICAgKiBAcHJpdmF0ZQorICAgKi8KKyAgX3Byb2Nlc3NDaGlsZENvbnRleHQ6IGZ1bmN0aW9uIChj
dXJyZW50Q29udGV4dCkgeworICAgIHZhciBDb21wb25lbnQgPSB0aGlzLl9jdXJyZW50RWxlbWVu
dC50eXBlOworICAgIHZhciBpbnN0ID0gdGhpcy5faW5zdGFuY2U7CisgICAgdmFyIGNoaWxkQ29u
dGV4dDsKKworICAgIGlmIChpbnN0LmdldENoaWxkQ29udGV4dCkgeworICAgICAgaWYgKCJkZXZl
bG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlv
bi5kZWJ1Z1Rvb2wub25CZWdpblByb2Nlc3NpbmdDaGlsZENvbnRleHQoKTsKKyAgICAgICAgdHJ5
IHsKKyAgICAgICAgICBjaGlsZENvbnRleHQgPSBpbnN0LmdldENoaWxkQ29udGV4dCgpOworICAg
ICAgICB9IGZpbmFsbHkgeworICAgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9v
bC5vbkVuZFByb2Nlc3NpbmdDaGlsZENvbnRleHQoKTsKKyAgICAgICAgfQorICAgICAgfSBlbHNl
IHsKKyAgICAgICAgY2hpbGRDb250ZXh0ID0gaW5zdC5nZXRDaGlsZENvbnRleHQoKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICBpZiAoY2hpbGRDb250ZXh0KSB7CisgICAgICAhKHR5cGVvZiBDb21w
b25lbnQuY2hpbGRDb250ZXh0VHlwZXMgPT09ICdvYmplY3QnKSA/ICJkZXZlbG9wbWVudCIgIT09
ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJyVzLmdldENoaWxkQ29udGV4dCgpOiBj
aGlsZENvbnRleHRUeXBlcyBtdXN0IGJlIGRlZmluZWQgaW4gb3JkZXIgdG8gdXNlIGdldENoaWxk
Q29udGV4dCgpLicsIHRoaXMuZ2V0TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcp
IDogX3Byb2RJbnZhcmlhbnQoJzEwNycsIHRoaXMuZ2V0TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0
ZUNvbXBvbmVudCcpIDogdm9pZCAwOworICAgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9k
dWN0aW9uJykgeworICAgICAgICB0aGlzLl9jaGVja0NvbnRleHRUeXBlcyhDb21wb25lbnQuY2hp
bGRDb250ZXh0VHlwZXMsIGNoaWxkQ29udGV4dCwgJ2NoaWxkQ29udGV4dCcpOworICAgICAgfQor
ICAgICAgZm9yICh2YXIgbmFtZSBpbiBjaGlsZENvbnRleHQpIHsKKyAgICAgICAgIShuYW1lIGlu
IENvbXBvbmVudC5jaGlsZENvbnRleHRUeXBlcykgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVj
dGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICclcy5nZXRDaGlsZENvbnRleHQoKToga2V5ICIlcyIg
aXMgbm90IGRlZmluZWQgaW4gY2hpbGRDb250ZXh0VHlwZXMuJywgdGhpcy5nZXROYW1lKCkgfHwg
J1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50JywgbmFtZSkgOiBfcHJvZEludmFyaWFudCgnMTA4Jywg
dGhpcy5nZXROYW1lKCkgfHwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50JywgbmFtZSkgOiB2b2lk
IDA7CisgICAgICB9CisgICAgICByZXR1cm4gX2Fzc2lnbih7fSwgY3VycmVudENvbnRleHQsIGNo
aWxkQ29udGV4dCk7CisgICAgfQorICAgIHJldHVybiBjdXJyZW50Q29udGV4dDsKKyAgfSwKKwor
ICAvKioKKyAgICogQXNzZXJ0IHRoYXQgdGhlIGNvbnRleHQgdHlwZXMgYXJlIHZhbGlkCisgICAq
CisgICAqIEBwYXJhbSB7b2JqZWN0fSB0eXBlU3BlY3MgTWFwIG9mIGNvbnRleHQgZmllbGQgdG8g
YSBSZWFjdFByb3BUeXBlCisgICAqIEBwYXJhbSB7b2JqZWN0fSB2YWx1ZXMgUnVudGltZSB2YWx1
ZXMgdGhhdCBuZWVkIHRvIGJlIHR5cGUtY2hlY2tlZAorICAgKiBAcGFyYW0ge3N0cmluZ30gbG9j
YXRpb24gZS5nLiAicHJvcCIsICJjb250ZXh0IiwgImNoaWxkIGNvbnRleHQiCisgICAqIEBwcml2
YXRlCisgICAqLworICBfY2hlY2tDb250ZXh0VHlwZXM6IGZ1bmN0aW9uICh0eXBlU3BlY3MsIHZh
bHVlcywgbG9jYXRpb24pIHsKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24n
KSB7CisgICAgICBjaGVja1JlYWN0VHlwZVNwZWModHlwZVNwZWNzLCB2YWx1ZXMsIGxvY2F0aW9u
LCB0aGlzLmdldE5hbWUoKSwgbnVsbCwgdGhpcy5fZGVidWdJRCk7CisgICAgfQorICB9LAorCisg
IHJlY2VpdmVDb21wb25lbnQ6IGZ1bmN0aW9uIChuZXh0RWxlbWVudCwgdHJhbnNhY3Rpb24sIG5l
eHRDb250ZXh0KSB7CisgICAgdmFyIHByZXZFbGVtZW50ID0gdGhpcy5fY3VycmVudEVsZW1lbnQ7
CisgICAgdmFyIHByZXZDb250ZXh0ID0gdGhpcy5fY29udGV4dDsKKworICAgIHRoaXMuX3BlbmRp
bmdFbGVtZW50ID0gbnVsbDsKKworICAgIHRoaXMudXBkYXRlQ29tcG9uZW50KHRyYW5zYWN0aW9u
LCBwcmV2RWxlbWVudCwgbmV4dEVsZW1lbnQsIHByZXZDb250ZXh0LCBuZXh0Q29udGV4dCk7Cisg
IH0sCisKKyAgLyoqCisgICAqIElmIGFueSBvZiBgX3BlbmRpbmdFbGVtZW50YCwgYF9wZW5kaW5n
U3RhdGVRdWV1ZWAsIG9yIGBfcGVuZGluZ0ZvcmNlVXBkYXRlYAorICAgKiBpcyBzZXQsIHVwZGF0
ZSB0aGUgY29tcG9uZW50LgorICAgKgorICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNh
Y3Rpb259IHRyYW5zYWN0aW9uCisgICAqIEBpbnRlcm5hbAorICAgKi8KKyAgcGVyZm9ybVVwZGF0
ZUlmTmVjZXNzYXJ5OiBmdW5jdGlvbiAodHJhbnNhY3Rpb24pIHsKKyAgICBpZiAodGhpcy5fcGVu
ZGluZ0VsZW1lbnQgIT0gbnVsbCkgeworICAgICAgUmVhY3RSZWNvbmNpbGVyLnJlY2VpdmVDb21w
b25lbnQodGhpcywgdGhpcy5fcGVuZGluZ0VsZW1lbnQsIHRyYW5zYWN0aW9uLCB0aGlzLl9jb250
ZXh0KTsKKyAgICB9IGVsc2UgaWYgKHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlICE9PSBudWxsIHx8
IHRoaXMuX3BlbmRpbmdGb3JjZVVwZGF0ZSkgeworICAgICAgdGhpcy51cGRhdGVDb21wb25lbnQo
dHJhbnNhY3Rpb24sIHRoaXMuX2N1cnJlbnRFbGVtZW50LCB0aGlzLl9jdXJyZW50RWxlbWVudCwg
dGhpcy5fY29udGV4dCwgdGhpcy5fY29udGV4dCk7CisgICAgfSBlbHNlIHsKKyAgICAgIHRoaXMu
X3VwZGF0ZUJhdGNoTnVtYmVyID0gbnVsbDsKKyAgICB9CisgIH0sCisKKyAgLyoqCisgICAqIFBl
cmZvcm0gYW4gdXBkYXRlIHRvIGEgbW91bnRlZCBjb21wb25lbnQuIFRoZSBjb21wb25lbnRXaWxs
UmVjZWl2ZVByb3BzIGFuZAorICAgKiBzaG91bGRDb21wb25lbnRVcGRhdGUgbWV0aG9kcyBhcmUg
Y2FsbGVkLCB0aGVuIChhc3N1bWluZyB0aGUgdXBkYXRlIGlzbid0CisgICAqIHNraXBwZWQpIHRo
ZSByZW1haW5pbmcgdXBkYXRlIGxpZmVjeWNsZSBtZXRob2RzIGFyZSBjYWxsZWQgYW5kIHRoZSBE
T00KKyAgICogcmVwcmVzZW50YXRpb24gaXMgdXBkYXRlZC4KKyAgICoKKyAgICogQnkgZGVmYXVs
dCwgdGhpcyBpbXBsZW1lbnRzIFJlYWN0J3MgcmVuZGVyaW5nIGFuZCByZWNvbmNpbGlhdGlvbiBh
bGdvcml0aG0uCisgICAqIFNvcGhpc3RpY2F0ZWQgY2xpZW50cyBtYXkgd2lzaCB0byBvdmVycmlk
ZSB0aGlzLgorICAgKgorICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRy
YW5zYWN0aW9uCisgICAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBwcmV2UGFyZW50RWxlbWVudAor
ICAgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gbmV4dFBhcmVudEVsZW1lbnQKKyAgICogQGludGVy
bmFsCisgICAqIEBvdmVycmlkYWJsZQorICAgKi8KKyAgdXBkYXRlQ29tcG9uZW50OiBmdW5jdGlv
biAodHJhbnNhY3Rpb24sIHByZXZQYXJlbnRFbGVtZW50LCBuZXh0UGFyZW50RWxlbWVudCwgcHJl
dlVubWFza2VkQ29udGV4dCwgbmV4dFVubWFza2VkQ29udGV4dCkgeworICAgIHZhciBpbnN0ID0g
dGhpcy5faW5zdGFuY2U7CisgICAgIShpbnN0ICE9IG51bGwpID8gImRldmVsb3BtZW50IiAhPT0g
J3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnQXR0ZW1wdGVkIHRvIHVwZGF0ZSBjb21w
b25lbnQgYCVzYCB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gdW5tb3VudGVkIChvciBmYWlsZWQgdG8g
bW91bnQpLicsIHRoaXMuZ2V0TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDog
X3Byb2RJbnZhcmlhbnQoJzEzNicsIHRoaXMuZ2V0TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNv
bXBvbmVudCcpIDogdm9pZCAwOworCisgICAgdmFyIHdpbGxSZWNlaXZlID0gZmFsc2U7CisgICAg
dmFyIG5leHRDb250ZXh0OworCisgICAgLy8gRGV0ZXJtaW5lIGlmIHRoZSBjb250ZXh0IGhhcyBj
aGFuZ2VkIG9yIG5vdAorICAgIGlmICh0aGlzLl9jb250ZXh0ID09PSBuZXh0VW5tYXNrZWRDb250
ZXh0KSB7CisgICAgICBuZXh0Q29udGV4dCA9IGluc3QuY29udGV4dDsKKyAgICB9IGVsc2Ugewor
ICAgICAgbmV4dENvbnRleHQgPSB0aGlzLl9wcm9jZXNzQ29udGV4dChuZXh0VW5tYXNrZWRDb250
ZXh0KTsKKyAgICAgIHdpbGxSZWNlaXZlID0gdHJ1ZTsKKyAgICB9CisKKyAgICB2YXIgcHJldlBy
b3BzID0gcHJldlBhcmVudEVsZW1lbnQucHJvcHM7CisgICAgdmFyIG5leHRQcm9wcyA9IG5leHRQ
YXJlbnRFbGVtZW50LnByb3BzOworCisgICAgLy8gTm90IGEgc2ltcGxlIHN0YXRlIHVwZGF0ZSBi
dXQgYSBwcm9wcyB1cGRhdGUKKyAgICBpZiAocHJldlBhcmVudEVsZW1lbnQgIT09IG5leHRQYXJl
bnRFbGVtZW50KSB7CisgICAgICB3aWxsUmVjZWl2ZSA9IHRydWU7CisgICAgfQorCisgICAgLy8g
QW4gdXBkYXRlIGhlcmUgd2lsbCBzY2hlZHVsZSBhbiB1cGRhdGUgYnV0IGltbWVkaWF0ZWx5IHNl
dAorICAgIC8vIF9wZW5kaW5nU3RhdGVRdWV1ZSB3aGljaCB3aWxsIGVuc3VyZSB0aGF0IGFueSBz
dGF0ZSB1cGRhdGVzIGdldHMKKyAgICAvLyBpbW1lZGlhdGVseSByZWNvbmNpbGVkIGluc3RlYWQg
b2Ygd2FpdGluZyBmb3IgdGhlIG5leHQgYmF0Y2guCisgICAgaWYgKHdpbGxSZWNlaXZlICYmIGlu
c3QuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcykgeworICAgICAgaWYgKCJkZXZlbG9wbWVudCIg
IT09ICdwcm9kdWN0aW9uJykgeworICAgICAgICBtZWFzdXJlTGlmZUN5Y2xlUGVyZihmdW5jdGlv
biAoKSB7CisgICAgICAgICAgcmV0dXJuIGluc3QuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhu
ZXh0UHJvcHMsIG5leHRDb250ZXh0KTsKKyAgICAgICAgfSwgdGhpcy5fZGVidWdJRCwgJ2NvbXBv
bmVudFdpbGxSZWNlaXZlUHJvcHMnKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGluc3QuY29t
cG9uZW50V2lsbFJlY2VpdmVQcm9wcyhuZXh0UHJvcHMsIG5leHRDb250ZXh0KTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB2YXIgbmV4dFN0YXRlID0gdGhpcy5fcHJvY2Vzc1BlbmRpbmdTdGF0ZShu
ZXh0UHJvcHMsIG5leHRDb250ZXh0KTsKKyAgICB2YXIgc2hvdWxkVXBkYXRlID0gdHJ1ZTsKKwor
ICAgIGlmICghdGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRlKSB7CisgICAgICBpZiAoaW5zdC5zaG91
bGRDb21wb25lbnRVcGRhdGUpIHsKKyAgICAgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9k
dWN0aW9uJykgeworICAgICAgICAgIHNob3VsZFVwZGF0ZSA9IG1lYXN1cmVMaWZlQ3ljbGVQZXJm
KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHJldHVybiBpbnN0LnNob3VsZENvbXBvbmVudFVw
ZGF0ZShuZXh0UHJvcHMsIG5leHRTdGF0ZSwgbmV4dENvbnRleHQpOworICAgICAgICAgIH0sIHRo
aXMuX2RlYnVnSUQsICdzaG91bGRDb21wb25lbnRVcGRhdGUnKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICBzaG91bGRVcGRhdGUgPSBpbnN0LnNob3VsZENvbXBvbmVudFVwZGF0ZShuZXh0
UHJvcHMsIG5leHRTdGF0ZSwgbmV4dENvbnRleHQpOworICAgICAgICB9CisgICAgICB9IGVsc2Ug
eworICAgICAgICBpZiAodGhpcy5fY29tcG9zaXRlVHlwZSA9PT0gQ29tcG9zaXRlVHlwZXMuUHVy
ZUNsYXNzKSB7CisgICAgICAgICAgc2hvdWxkVXBkYXRlID0gIXNoYWxsb3dFcXVhbChwcmV2UHJv
cHMsIG5leHRQcm9wcykgfHwgIXNoYWxsb3dFcXVhbChpbnN0LnN0YXRlLCBuZXh0U3RhdGUpOwor
ICAgICAgICB9CisgICAgICB9CisgICAgfQorCisgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdw
cm9kdWN0aW9uJykgeworICAgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2Fy
bmluZyhzaG91bGRVcGRhdGUgIT09IHVuZGVmaW5lZCwgJyVzLnNob3VsZENvbXBvbmVudFVwZGF0
ZSgpOiBSZXR1cm5lZCB1bmRlZmluZWQgaW5zdGVhZCBvZiBhICcgKyAnYm9vbGVhbiB2YWx1ZS4g
TWFrZSBzdXJlIHRvIHJldHVybiB0cnVlIG9yIGZhbHNlLicsIHRoaXMuZ2V0TmFtZSgpIHx8ICdS
ZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDogdm9pZCAwOworICAgIH0KKworICAgIHRoaXMuX3Vw
ZGF0ZUJhdGNoTnVtYmVyID0gbnVsbDsKKyAgICBpZiAoc2hvdWxkVXBkYXRlKSB7CisgICAgICB0
aGlzLl9wZW5kaW5nRm9yY2VVcGRhdGUgPSBmYWxzZTsKKyAgICAgIC8vIFdpbGwgc2V0IGB0aGlz
LnByb3BzYCwgYHRoaXMuc3RhdGVgIGFuZCBgdGhpcy5jb250ZXh0YC4KKyAgICAgIHRoaXMuX3Bl
cmZvcm1Db21wb25lbnRVcGRhdGUobmV4dFBhcmVudEVsZW1lbnQsIG5leHRQcm9wcywgbmV4dFN0
YXRlLCBuZXh0Q29udGV4dCwgdHJhbnNhY3Rpb24sIG5leHRVbm1hc2tlZENvbnRleHQpOworICAg
IH0gZWxzZSB7CisgICAgICAvLyBJZiBpdCdzIGRldGVybWluZWQgdGhhdCBhIGNvbXBvbmVudCBz
aG91bGQgbm90IHVwZGF0ZSwgd2Ugc3RpbGwgd2FudAorICAgICAgLy8gdG8gc2V0IHByb3BzIGFu
ZCBzdGF0ZSBidXQgd2Ugc2hvcnRjdXQgdGhlIHJlc3Qgb2YgdGhlIHVwZGF0ZS4KKyAgICAgIHRo
aXMuX2N1cnJlbnRFbGVtZW50ID0gbmV4dFBhcmVudEVsZW1lbnQ7CisgICAgICB0aGlzLl9jb250
ZXh0ID0gbmV4dFVubWFza2VkQ29udGV4dDsKKyAgICAgIGluc3QucHJvcHMgPSBuZXh0UHJvcHM7
CisgICAgICBpbnN0LnN0YXRlID0gbmV4dFN0YXRlOworICAgICAgaW5zdC5jb250ZXh0ID0gbmV4
dENvbnRleHQ7CisgICAgfQorICB9LAorCisgIF9wcm9jZXNzUGVuZGluZ1N0YXRlOiBmdW5jdGlv
biAocHJvcHMsIGNvbnRleHQpIHsKKyAgICB2YXIgaW5zdCA9IHRoaXMuX2luc3RhbmNlOworICAg
IHZhciBxdWV1ZSA9IHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlOworICAgIHZhciByZXBsYWNlID0g
dGhpcy5fcGVuZGluZ1JlcGxhY2VTdGF0ZTsKKyAgICB0aGlzLl9wZW5kaW5nUmVwbGFjZVN0YXRl
ID0gZmFsc2U7CisgICAgdGhpcy5fcGVuZGluZ1N0YXRlUXVldWUgPSBudWxsOworCisgICAgaWYg
KCFxdWV1ZSkgeworICAgICAgcmV0dXJuIGluc3Quc3RhdGU7CisgICAgfQorCisgICAgaWYgKHJl
cGxhY2UgJiYgcXVldWUubGVuZ3RoID09PSAxKSB7CisgICAgICByZXR1cm4gcXVldWVbMF07Cisg
ICAgfQorCisgICAgdmFyIG5leHRTdGF0ZSA9IF9hc3NpZ24oe30sIHJlcGxhY2UgPyBxdWV1ZVsw
XSA6IGluc3Quc3RhdGUpOworICAgIGZvciAodmFyIGkgPSByZXBsYWNlID8gMSA6IDA7IGkgPCBx
dWV1ZS5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHBhcnRpYWwgPSBxdWV1ZVtpXTsKKyAgICAg
IF9hc3NpZ24obmV4dFN0YXRlLCB0eXBlb2YgcGFydGlhbCA9PT0gJ2Z1bmN0aW9uJyA/IHBhcnRp
YWwuY2FsbChpbnN0LCBuZXh0U3RhdGUsIHByb3BzLCBjb250ZXh0KSA6IHBhcnRpYWwpOworICAg
IH0KKworICAgIHJldHVybiBuZXh0U3RhdGU7CisgIH0sCisKKyAgLyoqCisgICAqIE1lcmdlcyBu
ZXcgcHJvcHMgYW5kIHN0YXRlLCBub3RpZmllcyBkZWxlZ2F0ZSBtZXRob2RzIG9mIHVwZGF0ZSBh
bmQKKyAgICogcGVyZm9ybXMgdXBkYXRlLgorICAgKgorICAgKiBAcGFyYW0ge1JlYWN0RWxlbWVu
dH0gbmV4dEVsZW1lbnQgTmV4dCBlbGVtZW50CisgICAqIEBwYXJhbSB7b2JqZWN0fSBuZXh0UHJv
cHMgTmV4dCBwdWJsaWMgb2JqZWN0IHRvIHNldCBhcyBwcm9wZXJ0aWVzLgorICAgKiBAcGFyYW0g
ez9vYmplY3R9IG5leHRTdGF0ZSBOZXh0IG9iamVjdCB0byBzZXQgYXMgc3RhdGUuCisgICAqIEBw
YXJhbSB7P29iamVjdH0gbmV4dENvbnRleHQgTmV4dCBwdWJsaWMgb2JqZWN0IHRvIHNldCBhcyBj
b250ZXh0LgorICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0
aW9uCisgICAqIEBwYXJhbSB7P29iamVjdH0gdW5tYXNrZWRDb250ZXh0CisgICAqIEBwcml2YXRl
CisgICAqLworICBfcGVyZm9ybUNvbXBvbmVudFVwZGF0ZTogZnVuY3Rpb24gKG5leHRFbGVtZW50
LCBuZXh0UHJvcHMsIG5leHRTdGF0ZSwgbmV4dENvbnRleHQsIHRyYW5zYWN0aW9uLCB1bm1hc2tl
ZENvbnRleHQpIHsKKyAgICB2YXIgX3RoaXMyID0gdGhpczsKKworICAgIHZhciBpbnN0ID0gdGhp
cy5faW5zdGFuY2U7CisKKyAgICB2YXIgaGFzQ29tcG9uZW50RGlkVXBkYXRlID0gQm9vbGVhbihp
bnN0LmNvbXBvbmVudERpZFVwZGF0ZSk7CisgICAgdmFyIHByZXZQcm9wczsKKyAgICB2YXIgcHJl
dlN0YXRlOworICAgIHZhciBwcmV2Q29udGV4dDsKKyAgICBpZiAoaGFzQ29tcG9uZW50RGlkVXBk
YXRlKSB7CisgICAgICBwcmV2UHJvcHMgPSBpbnN0LnByb3BzOworICAgICAgcHJldlN0YXRlID0g
aW5zdC5zdGF0ZTsKKyAgICAgIHByZXZDb250ZXh0ID0gaW5zdC5jb250ZXh0OworICAgIH0KKwor
ICAgIGlmIChpbnN0LmNvbXBvbmVudFdpbGxVcGRhdGUpIHsKKyAgICAgIGlmICgiZGV2ZWxvcG1l
bnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICAgbWVhc3VyZUxpZmVDeWNsZVBlcmYoZnVu
Y3Rpb24gKCkgeworICAgICAgICAgIHJldHVybiBpbnN0LmNvbXBvbmVudFdpbGxVcGRhdGUobmV4
dFByb3BzLCBuZXh0U3RhdGUsIG5leHRDb250ZXh0KTsKKyAgICAgICAgfSwgdGhpcy5fZGVidWdJ
RCwgJ2NvbXBvbmVudFdpbGxVcGRhdGUnKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGluc3Qu
Y29tcG9uZW50V2lsbFVwZGF0ZShuZXh0UHJvcHMsIG5leHRTdGF0ZSwgbmV4dENvbnRleHQpOwor
ICAgICAgfQorICAgIH0KKworICAgIHRoaXMuX2N1cnJlbnRFbGVtZW50ID0gbmV4dEVsZW1lbnQ7
CisgICAgdGhpcy5fY29udGV4dCA9IHVubWFza2VkQ29udGV4dDsKKyAgICBpbnN0LnByb3BzID0g
bmV4dFByb3BzOworICAgIGluc3Quc3RhdGUgPSBuZXh0U3RhdGU7CisgICAgaW5zdC5jb250ZXh0
ID0gbmV4dENvbnRleHQ7CisKKyAgICB0aGlzLl91cGRhdGVSZW5kZXJlZENvbXBvbmVudCh0cmFu
c2FjdGlvbiwgdW5tYXNrZWRDb250ZXh0KTsKKworICAgIGlmIChoYXNDb21wb25lbnREaWRVcGRh
dGUpIHsKKyAgICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAg
ICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgbWVhc3VyZUxpZmVDeWNsZVBlcmYoaW5zdC5jb21wb25lbnREaWRVcGRhdGUu
YmluZChpbnN0LCBwcmV2UHJvcHMsIHByZXZTdGF0ZSwgcHJldkNvbnRleHQpLCBfdGhpczIuX2Rl
YnVnSUQsICdjb21wb25lbnREaWRVcGRhdGUnKTsKKyAgICAgICAgfSk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGluc3Qu
Y29tcG9uZW50RGlkVXBkYXRlLmJpbmQoaW5zdCwgcHJldlByb3BzLCBwcmV2U3RhdGUsIHByZXZD
b250ZXh0KSwgaW5zdCk7CisgICAgICB9CisgICAgfQorICB9LAorCisgIC8qKgorICAgKiBDYWxs
IHRoZSBjb21wb25lbnQncyBgcmVuZGVyYCBtZXRob2QgYW5kIHVwZGF0ZSB0aGUgRE9NIGFjY29y
ZGluZ2x5LgorICAgKgorICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRy
YW5zYWN0aW9uCisgICAqIEBpbnRlcm5hbAorICAgKi8KKyAgX3VwZGF0ZVJlbmRlcmVkQ29tcG9u
ZW50OiBmdW5jdGlvbiAodHJhbnNhY3Rpb24sIGNvbnRleHQpIHsKKyAgICB2YXIgcHJldkNvbXBv
bmVudEluc3RhbmNlID0gdGhpcy5fcmVuZGVyZWRDb21wb25lbnQ7CisgICAgdmFyIHByZXZSZW5k
ZXJlZEVsZW1lbnQgPSBwcmV2Q29tcG9uZW50SW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50OworICAg
IHZhciBuZXh0UmVuZGVyZWRFbGVtZW50ID0gdGhpcy5fcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50
KCk7CisKKyAgICB2YXIgZGVidWdJRCA9IDA7CisgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdw
cm9kdWN0aW9uJykgeworICAgICAgZGVidWdJRCA9IHRoaXMuX2RlYnVnSUQ7CisgICAgfQorCisg
ICAgaWYgKHNob3VsZFVwZGF0ZVJlYWN0Q29tcG9uZW50KHByZXZSZW5kZXJlZEVsZW1lbnQsIG5l
eHRSZW5kZXJlZEVsZW1lbnQpKSB7CisgICAgICBSZWFjdFJlY29uY2lsZXIucmVjZWl2ZUNvbXBv
bmVudChwcmV2Q29tcG9uZW50SW5zdGFuY2UsIG5leHRSZW5kZXJlZEVsZW1lbnQsIHRyYW5zYWN0
aW9uLCB0aGlzLl9wcm9jZXNzQ2hpbGRDb250ZXh0KGNvbnRleHQpKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgdmFyIG9sZEhvc3ROb2RlID0gUmVhY3RSZWNvbmNpbGVyLmdldEhvc3ROb2RlKHByZXZD
b21wb25lbnRJbnN0YW5jZSk7CisgICAgICBSZWFjdFJlY29uY2lsZXIudW5tb3VudENvbXBvbmVu
dChwcmV2Q29tcG9uZW50SW5zdGFuY2UsIGZhbHNlKTsKKworICAgICAgdmFyIG5vZGVUeXBlID0g
UmVhY3ROb2RlVHlwZXMuZ2V0VHlwZShuZXh0UmVuZGVyZWRFbGVtZW50KTsKKyAgICAgIHRoaXMu
X3JlbmRlcmVkTm9kZVR5cGUgPSBub2RlVHlwZTsKKyAgICAgIHZhciBjaGlsZCA9IHRoaXMuX2lu
c3RhbnRpYXRlUmVhY3RDb21wb25lbnQobmV4dFJlbmRlcmVkRWxlbWVudCwgbm9kZVR5cGUgIT09
IFJlYWN0Tm9kZVR5cGVzLkVNUFRZIC8qIHNob3VsZEhhdmVEZWJ1Z0lEICovCisgICAgICApOwor
ICAgICAgdGhpcy5fcmVuZGVyZWRDb21wb25lbnQgPSBjaGlsZDsKKworICAgICAgdmFyIG5leHRN
YXJrdXAgPSBSZWFjdFJlY29uY2lsZXIubW91bnRDb21wb25lbnQoY2hpbGQsIHRyYW5zYWN0aW9u
LCB0aGlzLl9ob3N0UGFyZW50LCB0aGlzLl9ob3N0Q29udGFpbmVySW5mbywgdGhpcy5fcHJvY2Vz
c0NoaWxkQ29udGV4dChjb250ZXh0KSwgZGVidWdJRCk7CisKKyAgICAgIGlmICgiZGV2ZWxvcG1l
bnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICAgaWYgKGRlYnVnSUQgIT09IDApIHsKKyAg
ICAgICAgICB2YXIgY2hpbGREZWJ1Z0lEcyA9IGNoaWxkLl9kZWJ1Z0lEICE9PSAwID8gW2NoaWxk
Ll9kZWJ1Z0lEXSA6IFtdOworICAgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9v
bC5vblNldENoaWxkcmVuKGRlYnVnSUQsIGNoaWxkRGVidWdJRHMpOworICAgICAgICB9CisgICAg
ICB9CisKKyAgICAgIHRoaXMuX3JlcGxhY2VOb2RlV2l0aE1hcmt1cChvbGRIb3N0Tm9kZSwgbmV4
dE1hcmt1cCwgcHJldkNvbXBvbmVudEluc3RhbmNlKTsKKyAgICB9CisgIH0sCisKKyAgLyoqCisg
ICAqIE92ZXJyaWRkZW4gaW4gc2hhbGxvdyByZW5kZXJpbmcuCisgICAqCisgICAqIEBwcm90ZWN0
ZWQKKyAgICovCisgIF9yZXBsYWNlTm9kZVdpdGhNYXJrdXA6IGZ1bmN0aW9uIChvbGRIb3N0Tm9k
ZSwgbmV4dE1hcmt1cCwgcHJldkluc3RhbmNlKSB7CisgICAgUmVhY3RDb21wb25lbnRFbnZpcm9u
bWVudC5yZXBsYWNlTm9kZVdpdGhNYXJrdXAob2xkSG9zdE5vZGUsIG5leHRNYXJrdXAsIHByZXZJ
bnN0YW5jZSk7CisgIH0sCisKKyAgLyoqCisgICAqIEBwcm90ZWN0ZWQKKyAgICovCisgIF9yZW5k
ZXJWYWxpZGF0ZWRDb21wb25lbnRXaXRob3V0T3duZXJPckNvbnRleHQ6IGZ1bmN0aW9uICgpIHsK
KyAgICB2YXIgaW5zdCA9IHRoaXMuX2luc3RhbmNlOworICAgIHZhciByZW5kZXJlZEVsZW1lbnQ7
CisKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICByZW5k
ZXJlZEVsZW1lbnQgPSBtZWFzdXJlTGlmZUN5Y2xlUGVyZihmdW5jdGlvbiAoKSB7CisgICAgICAg
IHJldHVybiBpbnN0LnJlbmRlcigpOworICAgICAgfSwgdGhpcy5fZGVidWdJRCwgJ3JlbmRlcicp
OworICAgIH0gZWxzZSB7CisgICAgICByZW5kZXJlZEVsZW1lbnQgPSBpbnN0LnJlbmRlcigpOwor
ICAgIH0KKworICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAg
IC8vIFdlIGFsbG93IGF1dG8tbW9ja3MgdG8gcHJvY2VlZCBhcyBpZiB0aGV5J3JlIHJldHVybmlu
ZyBudWxsLgorICAgICAgaWYgKHJlbmRlcmVkRWxlbWVudCA9PT0gdW5kZWZpbmVkICYmIGluc3Qu
cmVuZGVyLl9pc01vY2tGdW5jdGlvbikgeworICAgICAgICAvLyBUaGlzIGlzIHByb2JhYmx5IGJh
ZCBwcmFjdGljZS4gQ29uc2lkZXIgd2FybmluZyBoZXJlIGFuZAorICAgICAgICAvLyBkZXByZWNh
dGluZyB0aGlzIGNvbnZlbmllbmNlLgorICAgICAgICByZW5kZXJlZEVsZW1lbnQgPSBudWxsOwor
ICAgICAgfQorICAgIH0KKworICAgIHJldHVybiByZW5kZXJlZEVsZW1lbnQ7CisgIH0sCisKKyAg
LyoqCisgICAqIEBwcml2YXRlCisgICAqLworICBfcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50OiBm
dW5jdGlvbiAoKSB7CisgICAgdmFyIHJlbmRlcmVkRWxlbWVudDsKKyAgICBpZiAoImRldmVsb3Bt
ZW50IiAhPT0gJ3Byb2R1Y3Rpb24nIHx8IHRoaXMuX2NvbXBvc2l0ZVR5cGUgIT09IENvbXBvc2l0
ZVR5cGVzLlN0YXRlbGVzc0Z1bmN0aW9uYWwpIHsKKyAgICAgIFJlYWN0Q3VycmVudE93bmVyLmN1
cnJlbnQgPSB0aGlzOworICAgICAgdHJ5IHsKKyAgICAgICAgcmVuZGVyZWRFbGVtZW50ID0gdGhp
cy5fcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50V2l0aG91dE93bmVyT3JDb250ZXh0KCk7CisgICAg
ICB9IGZpbmFsbHkgeworICAgICAgICBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ID0gbnVsbDsK
KyAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgcmVuZGVyZWRFbGVtZW50ID0gdGhpcy5fcmVu
ZGVyVmFsaWRhdGVkQ29tcG9uZW50V2l0aG91dE93bmVyT3JDb250ZXh0KCk7CisgICAgfQorICAg
ICEoCisgICAgLy8gVE9ETzogQW4gYGlzVmFsaWROb2RlYCBmdW5jdGlvbiB3b3VsZCBwcm9iYWJs
eSBiZSBtb3JlIGFwcHJvcHJpYXRlCisgICAgcmVuZGVyZWRFbGVtZW50ID09PSBudWxsIHx8IHJl
bmRlcmVkRWxlbWVudCA9PT0gZmFsc2UgfHwgUmVhY3QuaXNWYWxpZEVsZW1lbnQocmVuZGVyZWRF
bGVtZW50KSkgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFs
c2UsICclcy5yZW5kZXIoKTogQSB2YWxpZCBSZWFjdCBlbGVtZW50IChvciBudWxsKSBtdXN0IGJl
IHJldHVybmVkLiBZb3UgbWF5IGhhdmUgcmV0dXJuZWQgdW5kZWZpbmVkLCBhbiBhcnJheSBvciBz
b21lIG90aGVyIGludmFsaWQgb2JqZWN0LicsIHRoaXMuZ2V0TmFtZSgpIHx8ICdSZWFjdENvbXBv
c2l0ZUNvbXBvbmVudCcpIDogX3Byb2RJbnZhcmlhbnQoJzEwOScsIHRoaXMuZ2V0TmFtZSgpIHx8
ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDogdm9pZCAwOworCisgICAgcmV0dXJuIHJlbmRl
cmVkRWxlbWVudDsKKyAgfSwKKworICAvKioKKyAgICogTGF6aWx5IGFsbG9jYXRlcyB0aGUgcmVm
cyBvYmplY3QgYW5kIHN0b3JlcyBgY29tcG9uZW50YCBhcyBgcmVmYC4KKyAgICoKKyAgICogQHBh
cmFtIHtzdHJpbmd9IHJlZiBSZWZlcmVuY2UgbmFtZS4KKyAgICogQHBhcmFtIHtjb21wb25lbnR9
IGNvbXBvbmVudCBDb21wb25lbnQgdG8gc3RvcmUgYXMgYHJlZmAuCisgICAqIEBmaW5hbAorICAg
KiBAcHJpdmF0ZQorICAgKi8KKyAgYXR0YWNoUmVmOiBmdW5jdGlvbiAocmVmLCBjb21wb25lbnQp
IHsKKyAgICB2YXIgaW5zdCA9IHRoaXMuZ2V0UHVibGljSW5zdGFuY2UoKTsKKyAgICAhKGluc3Qg
IT0gbnVsbCkgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFs
c2UsICdTdGF0ZWxlc3MgZnVuY3Rpb24gY29tcG9uZW50cyBjYW5ub3QgaGF2ZSByZWZzLicpIDog
X3Byb2RJbnZhcmlhbnQoJzExMCcpIDogdm9pZCAwOworICAgIHZhciBwdWJsaWNDb21wb25lbnRJ
bnN0YW5jZSA9IGNvbXBvbmVudC5nZXRQdWJsaWNJbnN0YW5jZSgpOworICAgIGlmICgiZGV2ZWxv
cG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgIHZhciBjb21wb25lbnROYW1lID0gY29t
cG9uZW50ICYmIGNvbXBvbmVudC5nZXROYW1lID8gY29tcG9uZW50LmdldE5hbWUoKSA6ICdhIGNv
bXBvbmVudCc7CisgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5n
KHB1YmxpY0NvbXBvbmVudEluc3RhbmNlICE9IG51bGwgfHwgY29tcG9uZW50Ll9jb21wb3NpdGVU
eXBlICE9PSBDb21wb3NpdGVUeXBlcy5TdGF0ZWxlc3NGdW5jdGlvbmFsLCAnU3RhdGVsZXNzIGZ1
bmN0aW9uIGNvbXBvbmVudHMgY2Fubm90IGJlIGdpdmVuIHJlZnMgJyArICcoU2VlIHJlZiAiJXMi
IGluICVzIGNyZWF0ZWQgYnkgJXMpLiAnICsgJ0F0dGVtcHRzIHRvIGFjY2VzcyB0aGlzIHJlZiB3
aWxsIGZhaWwuJywgcmVmLCBjb21wb25lbnROYW1lLCB0aGlzLmdldE5hbWUoKSkgOiB2b2lkIDA7
CisgICAgfQorICAgIHZhciByZWZzID0gaW5zdC5yZWZzID09PSBlbXB0eU9iamVjdCA/IGluc3Qu
cmVmcyA9IHt9IDogaW5zdC5yZWZzOworICAgIHJlZnNbcmVmXSA9IHB1YmxpY0NvbXBvbmVudElu
c3RhbmNlOworICB9LAorCisgIC8qKgorICAgKiBEZXRhY2hlcyBhIHJlZmVyZW5jZSBuYW1lLgor
ICAgKgorICAgKiBAcGFyYW0ge3N0cmluZ30gcmVmIE5hbWUgdG8gZGVyZWZlcmVuY2UuCisgICAq
IEBmaW5hbAorICAgKiBAcHJpdmF0ZQorICAgKi8KKyAgZGV0YWNoUmVmOiBmdW5jdGlvbiAocmVm
KSB7CisgICAgdmFyIHJlZnMgPSB0aGlzLmdldFB1YmxpY0luc3RhbmNlKCkucmVmczsKKyAgICBk
ZWxldGUgcmVmc1tyZWZdOworICB9LAorCisgIC8qKgorICAgKiBHZXQgYSB0ZXh0IGRlc2NyaXB0
aW9uIG9mIHRoZSBjb21wb25lbnQgdGhhdCBjYW4gYmUgdXNlZCB0byBpZGVudGlmeSBpdAorICAg
KiBpbiBlcnJvciBtZXNzYWdlcy4KKyAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgbmFtZSBvciBu
dWxsLgorICAgKiBAaW50ZXJuYWwKKyAgICovCisgIGdldE5hbWU6IGZ1bmN0aW9uICgpIHsKKyAg
ICB2YXIgdHlwZSA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGU7CisgICAgdmFyIGNvbnN0cnVj
dG9yID0gdGhpcy5faW5zdGFuY2UgJiYgdGhpcy5faW5zdGFuY2UuY29uc3RydWN0b3I7CisgICAg
cmV0dXJuIHR5cGUuZGlzcGxheU5hbWUgfHwgY29uc3RydWN0b3IgJiYgY29uc3RydWN0b3IuZGlz
cGxheU5hbWUgfHwgdHlwZS5uYW1lIHx8IGNvbnN0cnVjdG9yICYmIGNvbnN0cnVjdG9yLm5hbWUg
fHwgbnVsbDsKKyAgfSwKKworICAvKioKKyAgICogR2V0IHRoZSBwdWJsaWNseSBhY2Nlc3NpYmxl
IHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgY29tcG9uZW50IC0gaS5lLiB3aGF0CisgICAqIGlzIGV4
cG9zZWQgYnkgcmVmcyBhbmQgcmV0dXJuZWQgYnkgcmVuZGVyLiBDYW4gYmUgbnVsbCBmb3Igc3Rh
dGVsZXNzCisgICAqIGNvbXBvbmVudHMuCisgICAqCisgICAqIEByZXR1cm4ge1JlYWN0Q29tcG9u
ZW50fSB0aGUgcHVibGljIGNvbXBvbmVudCBpbnN0YW5jZS4KKyAgICogQGludGVybmFsCisgICAq
LworICBnZXRQdWJsaWNJbnN0YW5jZTogZnVuY3Rpb24gKCkgeworICAgIHZhciBpbnN0ID0gdGhp
cy5faW5zdGFuY2U7CisgICAgaWYgKHRoaXMuX2NvbXBvc2l0ZVR5cGUgPT09IENvbXBvc2l0ZVR5
cGVzLlN0YXRlbGVzc0Z1bmN0aW9uYWwpIHsKKyAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAg
ICByZXR1cm4gaW5zdDsKKyAgfSwKKworICAvLyBTdHViCisgIF9pbnN0YW50aWF0ZVJlYWN0Q29t
cG9uZW50OiBudWxsCisKK307CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RDb21wb3NpdGVDb21w
b25lbnQ7Cit9LHsiMTA0IjoxMDQsIjEyNSI6MTI1LCIxMjkiOjEyOSwiMTMzIjoxMzMsIjEzNCI6
MTM0LCIxNDMiOjE0MywiMTUwIjoxNTAsIjE1NiI6MTU2LCIxNTciOjE1NywiMTU4IjoxNTgsIjI5
IjoyOSwiNTUiOjU1LCI2MyI6NjMsIjY0Ijo2NCwiNjkiOjY5LCI3NSI6NzV9XSwzMTpbZnVuY3Rp
b24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNl
bnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMg
c291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5k
IGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNv
dXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBi
ZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisg
Ki8KKworLyogZ2xvYmFscyBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18qLworCisndXNl
IHN0cmljdCc7CisKK3ZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSBfZGVyZXFfKDM0KTsKK3Zh
ciBSZWFjdERlZmF1bHRJbmplY3Rpb24gPSBfZGVyZXFfKDUyKTsKK3ZhciBSZWFjdE1vdW50ID0g
X2RlcmVxXyg2Nyk7Cit2YXIgUmVhY3RSZWNvbmNpbGVyID0gX2RlcmVxXyg3NSk7Cit2YXIgUmVh
Y3RVcGRhdGVzID0gX2RlcmVxXyg4Mik7Cit2YXIgUmVhY3RWZXJzaW9uID0gX2RlcmVxXyg4Myk7
CisKK3ZhciBmaW5kRE9NTm9kZSA9IF9kZXJlcV8oMTA4KTsKK3ZhciBnZXRIb3N0Q29tcG9uZW50
RnJvbUNvbXBvc2l0ZSA9IF9kZXJlcV8oMTE1KTsKK3ZhciByZW5kZXJTdWJ0cmVlSW50b0NvbnRh
aW5lciA9IF9kZXJlcV8oMTI2KTsKK3ZhciB3YXJuaW5nID0gX2RlcmVxXygxNTcpOworCitSZWFj
dERlZmF1bHRJbmplY3Rpb24uaW5qZWN0KCk7CisKK3ZhciBSZWFjdERPTSA9IHsKKyAgZmluZERP
TU5vZGU6IGZpbmRET01Ob2RlLAorICByZW5kZXI6IFJlYWN0TW91bnQucmVuZGVyLAorICB1bm1v
dW50Q29tcG9uZW50QXROb2RlOiBSZWFjdE1vdW50LnVubW91bnRDb21wb25lbnRBdE5vZGUsCisg
IHZlcnNpb246IFJlYWN0VmVyc2lvbiwKKworICAvKiBlc2xpbnQtZGlzYWJsZSBjYW1lbGNhc2Ug
Ki8KKyAgdW5zdGFibGVfYmF0Y2hlZFVwZGF0ZXM6IFJlYWN0VXBkYXRlcy5iYXRjaGVkVXBkYXRl
cywKKyAgdW5zdGFibGVfcmVuZGVyU3VidHJlZUludG9Db250YWluZXI6IHJlbmRlclN1YnRyZWVJ
bnRvQ29udGFpbmVyCit9OworCisvLyBJbmplY3QgdGhlIHJ1bnRpbWUgaW50byBhIGRldnRvb2xz
IGdsb2JhbCBob29rIHJlZ2FyZGxlc3Mgb2YgYnJvd3Nlci4KKy8vIEFsbG93cyBmb3IgZGVidWdn
aW5nIHdoZW4gdGhlIGhvb2sgaXMgaW5qZWN0ZWQgb24gdGhlIHBhZ2UuCitpZiAodHlwZW9mIF9f
UkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIF9f
UkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXy5pbmplY3QgPT09ICdmdW5jdGlvbicpIHsKKyAg
X19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLmluamVjdCh7CisgICAgQ29tcG9uZW50VHJl
ZTogeworICAgICAgZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGU6IFJlYWN0RE9NQ29tcG9uZW50
VHJlZS5nZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZSwKKyAgICAgIGdldE5vZGVGcm9tSW5zdGFu
Y2U6IGZ1bmN0aW9uIChpbnN0KSB7CisgICAgICAgIC8vIGluc3QgaXMgYW4gaW50ZXJuYWwgaW5z
dGFuY2UgKGJ1dCBjb3VsZCBiZSBhIGNvbXBvc2l0ZSkKKyAgICAgICAgaWYgKGluc3QuX3JlbmRl
cmVkQ29tcG9uZW50KSB7CisgICAgICAgICAgaW5zdCA9IGdldEhvc3RDb21wb25lbnRGcm9tQ29t
cG9zaXRlKGluc3QpOworICAgICAgICB9CisgICAgICAgIGlmIChpbnN0KSB7CisgICAgICAgICAg
cmV0dXJuIFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKGluc3QpOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisgICAg
ICB9CisgICAgfSwKKyAgICBNb3VudDogUmVhY3RNb3VudCwKKyAgICBSZWNvbmNpbGVyOiBSZWFj
dFJlY29uY2lsZXIKKyAgfSk7Cit9CisKK2lmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlv
bicpIHsKKyAgdmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gX2RlcmVxXygxMzYpOworICBpZiAo
RXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NICYmIHdpbmRvdy50b3AgPT09IHdpbmRvdy5z
ZWxmKSB7CisKKyAgICAvLyBGaXJzdCBjaGVjayBpZiBkZXZ0b29scyBpcyBub3QgaW5zdGFsbGVk
CisgICAgaWYgKHR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18gPT09ICd1bmRl
ZmluZWQnKSB7CisgICAgICAvLyBJZiB3ZSdyZSBpbiBDaHJvbWUgb3IgRmlyZWZveCwgcHJvdmlk
ZSBhIGRvd25sb2FkIGxpbmsgaWYgbm90IGluc3RhbGxlZC4KKyAgICAgIGlmIChuYXZpZ2F0b3Iu
dXNlckFnZW50LmluZGV4T2YoJ0Nocm9tZScpID4gLTEgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudC5p
bmRleE9mKCdFZGdlJykgPT09IC0xIHx8IG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignRmly
ZWZveCcpID4gLTEpIHsKKyAgICAgICAgLy8gRmlyZWZveCBkb2VzIG5vdCBoYXZlIHRoZSBpc3N1
ZSB3aXRoIGRldnRvb2xzIGxvYWRlZCBvdmVyIGZpbGU6Ly8KKyAgICAgICAgdmFyIHNob3dGaWxl
VXJsTWVzc2FnZSA9IHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbC5pbmRleE9mKCdodHRwJykgPT09
IC0xICYmIG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignRmlyZWZveCcpID09PSAtMTsKKyAg
ICAgICAgY29uc29sZS5kZWJ1ZygnRG93bmxvYWQgdGhlIFJlYWN0IERldlRvb2xzICcgKyAoc2hv
d0ZpbGVVcmxNZXNzYWdlID8gJ2FuZCB1c2UgYW4gSFRUUCBzZXJ2ZXIgKGluc3RlYWQgb2YgYSBm
aWxlOiBVUkwpICcgOiAnJykgKyAnZm9yIGEgYmV0dGVyIGRldmVsb3BtZW50IGV4cGVyaWVuY2U6
ICcgKyAnaHR0cHM6Ly9mYi5tZS9yZWFjdC1kZXZ0b29scycpOworICAgICAgfQorICAgIH0KKwor
ICAgIHZhciB0ZXN0RnVuYyA9IGZ1bmN0aW9uIHRlc3RGbigpIHt9OworICAgICJkZXZlbG9wbWVu
dCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoKHRlc3RGdW5jLm5hbWUgfHwgdGVzdEZ1bmMu
dG9TdHJpbmcoKSkuaW5kZXhPZigndGVzdEZuJykgIT09IC0xLCAnSXQgbG9va3MgbGlrZSB5b3Vc
J3JlIHVzaW5nIGEgbWluaWZpZWQgY29weSBvZiB0aGUgZGV2ZWxvcG1lbnQgYnVpbGQgJyArICdv
ZiBSZWFjdC4gV2hlbiBkZXBsb3lpbmcgUmVhY3QgYXBwcyB0byBwcm9kdWN0aW9uLCBtYWtlIHN1
cmUgdG8gdXNlICcgKyAndGhlIHByb2R1Y3Rpb24gYnVpbGQgd2hpY2ggc2tpcHMgZGV2ZWxvcG1l
bnQgd2FybmluZ3MgYW5kIGlzIGZhc3Rlci4gJyArICdTZWUgaHR0cHM6Ly9mYi5tZS9yZWFjdC1t
aW5pZmljYXRpb24gZm9yIG1vcmUgZGV0YWlscy4nKSA6IHZvaWQgMDsKKworICAgIC8vIElmIHdl
J3JlIGluIElFOCwgY2hlY2sgdG8gc2VlIGlmIHdlIGFyZSBpbiBjb21wYXRpYmlsaXR5IG1vZGUg
YW5kIHByb3ZpZGUKKyAgICAvLyBpbmZvcm1hdGlvbiBvbiBwcmV2ZW50aW5nIGNvbXBhdGliaWxp
dHkgbW9kZQorICAgIHZhciBpZUNvbXBhdGliaWxpdHlNb2RlID0gZG9jdW1lbnQuZG9jdW1lbnRN
b2RlICYmIGRvY3VtZW50LmRvY3VtZW50TW9kZSA8IDg7CisKKyAgICAiZGV2ZWxvcG1lbnQiICE9
PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCFpZUNvbXBhdGliaWxpdHlNb2RlLCAnSW50ZXJuZXQg
RXhwbG9yZXIgaXMgcnVubmluZyBpbiBjb21wYXRpYmlsaXR5IG1vZGU7IHBsZWFzZSBhZGQgdGhl
ICcgKyAnZm9sbG93aW5nIHRhZyB0byB5b3VyIEhUTUwgdG8gcHJldmVudCB0aGlzIGZyb20gaGFw
cGVuaW5nOiAnICsgJzxtZXRhIGh0dHAtZXF1aXY9IlgtVUEtQ29tcGF0aWJsZSIgY29udGVudD0i
SUU9ZWRnZSIgLz4nKSA6IHZvaWQgMDsKKworICAgIHZhciBleHBlY3RlZEZlYXR1cmVzID0gWwor
ICAgIC8vIHNoaW1zCisgICAgQXJyYXkuaXNBcnJheSwgQXJyYXkucHJvdG90eXBlLmV2ZXJ5LCBB
cnJheS5wcm90b3R5cGUuZm9yRWFjaCwgQXJyYXkucHJvdG90eXBlLmluZGV4T2YsIEFycmF5LnBy
b3RvdHlwZS5tYXAsIERhdGUubm93LCBGdW5jdGlvbi5wcm90b3R5cGUuYmluZCwgT2JqZWN0Lmtl
eXMsIFN0cmluZy5wcm90b3R5cGUudHJpbV07CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGV4
cGVjdGVkRmVhdHVyZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgIGlmICghZXhwZWN0ZWRGZWF0dXJl
c1tpXSkgeworICAgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5n
KGZhbHNlLCAnT25lIG9yIG1vcmUgRVM1IHNoaW1zIGV4cGVjdGVkIGJ5IFJlYWN0IGFyZSBub3Qg
YXZhaWxhYmxlOiAnICsgJ2h0dHBzOi8vZmIubWUvcmVhY3Qtd2FybmluZy1wb2x5ZmlsbHMnKSA6
IHZvaWQgMDsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgfQorICB9Cit9CisKK2lmICgi
ZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgdmFyIFJlYWN0SW5zdHJ1bWVudGF0
aW9uID0gX2RlcmVxXyg2NCk7CisgIHZhciBSZWFjdERPTVVua25vd25Qcm9wZXJ0eUhvb2sgPSBf
ZGVyZXFfKDQ5KTsKKyAgdmFyIFJlYWN0RE9NTnVsbElucHV0VmFsdWVQcm9wSG9vayA9IF9kZXJl
cV8oNDEpOworICB2YXIgUmVhY3RET01JbnZhbGlkQVJJQUhvb2sgPSBfZGVyZXFfKDQwKTsKKwor
ICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wuYWRkSG9vayhSZWFjdERPTVVua25vd25Q
cm9wZXJ0eUhvb2spOworICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wuYWRkSG9vayhS
ZWFjdERPTU51bGxJbnB1dFZhbHVlUHJvcEhvb2spOworICBSZWFjdEluc3RydW1lbnRhdGlvbi5k
ZWJ1Z1Rvb2wuYWRkSG9vayhSZWFjdERPTUludmFsaWRBUklBSG9vayk7Cit9CisKK21vZHVsZS5l
eHBvcnRzID0gUmVhY3RET007Cit9LHsiMTA4IjoxMDgsIjExNSI6MTE1LCIxMjYiOjEyNiwiMTM2
IjoxMzYsIjE1NyI6MTU3LCIzNCI6MzQsIjQwIjo0MCwiNDEiOjQxLCI0OSI6NDksIjUyIjo1Miwi
NjQiOjY0LCI2NyI6NjcsIjc1Ijo3NSwiODIiOjgyLCI4MyI6ODN9XSwzMjpbZnVuY3Rpb24oX2Rl
cmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZh
Y2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNl
IGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRo
ZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0
cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKwor
LyogZ2xvYmFsIGhhc093blByb3BlcnR5OnRydWUgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIg
X3Byb2RJbnZhcmlhbnQgPSBfZGVyZXFfKDEyNSksCisgICAgX2Fzc2lnbiA9IF9kZXJlcV8oMTU4
KTsKKwordmFyIEF1dG9Gb2N1c1V0aWxzID0gX2RlcmVxXygyKTsKK3ZhciBDU1NQcm9wZXJ0eU9w
ZXJhdGlvbnMgPSBfZGVyZXFfKDUpOwordmFyIERPTUxhenlUcmVlID0gX2RlcmVxXyg5KTsKK3Zh
ciBET01OYW1lc3BhY2VzID0gX2RlcmVxXygxMCk7Cit2YXIgRE9NUHJvcGVydHkgPSBfZGVyZXFf
KDExKTsKK3ZhciBET01Qcm9wZXJ0eU9wZXJhdGlvbnMgPSBfZGVyZXFfKDEyKTsKK3ZhciBFdmVu
dFBsdWdpbkh1YiA9IF9kZXJlcV8oMTcpOwordmFyIEV2ZW50UGx1Z2luUmVnaXN0cnkgPSBfZGVy
ZXFfKDE4KTsKK3ZhciBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIgPSBfZGVyZXFfKDI2KTsKK3Zh
ciBSZWFjdERPTUNvbXBvbmVudEZsYWdzID0gX2RlcmVxXygzMyk7Cit2YXIgUmVhY3RET01Db21w
b25lbnRUcmVlID0gX2RlcmVxXygzNCk7Cit2YXIgUmVhY3RET01JbnB1dCA9IF9kZXJlcV8oMzkp
OwordmFyIFJlYWN0RE9NT3B0aW9uID0gX2RlcmVxXyg0Mik7Cit2YXIgUmVhY3RET01TZWxlY3Qg
PSBfZGVyZXFfKDQzKTsKK3ZhciBSZWFjdERPTVRleHRhcmVhID0gX2RlcmVxXyg0Nik7Cit2YXIg
UmVhY3RJbnN0cnVtZW50YXRpb24gPSBfZGVyZXFfKDY0KTsKK3ZhciBSZWFjdE11bHRpQ2hpbGQg
PSBfZGVyZXFfKDY4KTsKK3ZhciBSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9uID0gX2Rl
cmVxXyg3Nyk7CisKK3ZhciBlbXB0eUZ1bmN0aW9uID0gX2RlcmVxXygxNDIpOwordmFyIGVzY2Fw
ZVRleHRDb250ZW50Rm9yQnJvd3NlciA9IF9kZXJlcV8oMTA3KTsKK3ZhciBpbnZhcmlhbnQgPSBf
ZGVyZXFfKDE1MCk7Cit2YXIgaXNFdmVudFN1cHBvcnRlZCA9IF9kZXJlcV8oMTIyKTsKK3ZhciBz
aGFsbG93RXF1YWwgPSBfZGVyZXFfKDE1Nik7Cit2YXIgdmFsaWRhdGVET01OZXN0aW5nID0gX2Rl
cmVxXygxMzEpOwordmFyIHdhcm5pbmcgPSBfZGVyZXFfKDE1Nyk7CisKK3ZhciBGbGFncyA9IFJl
YWN0RE9NQ29tcG9uZW50RmxhZ3M7Cit2YXIgZGVsZXRlTGlzdGVuZXIgPSBFdmVudFBsdWdpbkh1
Yi5kZWxldGVMaXN0ZW5lcjsKK3ZhciBnZXROb2RlID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdl
dE5vZGVGcm9tSW5zdGFuY2U7Cit2YXIgbGlzdGVuVG8gPSBSZWFjdEJyb3dzZXJFdmVudEVtaXR0
ZXIubGlzdGVuVG87Cit2YXIgcmVnaXN0cmF0aW9uTmFtZU1vZHVsZXMgPSBFdmVudFBsdWdpblJl
Z2lzdHJ5LnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzOworCisvLyBGb3IgcXVpY2tseSBtYXRjaGlu
ZyBjaGlsZHJlbiB0eXBlLCB0byB0ZXN0IGlmIGNhbiBiZSB0cmVhdGVkIGFzIGNvbnRlbnQuCit2
YXIgQ09OVEVOVF9UWVBFUyA9IHsgJ3N0cmluZyc6IHRydWUsICdudW1iZXInOiB0cnVlIH07CisK
K3ZhciBTVFlMRSA9ICdzdHlsZSc7Cit2YXIgSFRNTCA9ICdfX2h0bWwnOwordmFyIFJFU0VSVkVE
X1BST1BTID0geworICBjaGlsZHJlbjogbnVsbCwKKyAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6
IG51bGwsCisgIHN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZzogbnVsbAorfTsKKworLy8g
Tm9kZSB0eXBlIGZvciBkb2N1bWVudCBmcmFnbWVudHMgKE5vZGUuRE9DVU1FTlRfRlJBR01FTlRf
Tk9ERSkuCit2YXIgRE9DX0ZSQUdNRU5UX1RZUEUgPSAxMTsKKworZnVuY3Rpb24gZ2V0RGVjbGFy
YXRpb25FcnJvckFkZGVuZHVtKGludGVybmFsSW5zdGFuY2UpIHsKKyAgaWYgKGludGVybmFsSW5z
dGFuY2UpIHsKKyAgICB2YXIgb3duZXIgPSBpbnRlcm5hbEluc3RhbmNlLl9jdXJyZW50RWxlbWVu
dC5fb3duZXIgfHwgbnVsbDsKKyAgICBpZiAob3duZXIpIHsKKyAgICAgIHZhciBuYW1lID0gb3du
ZXIuZ2V0TmFtZSgpOworICAgICAgaWYgKG5hbWUpIHsKKyAgICAgICAgcmV0dXJuICcgVGhpcyBE
T00gbm9kZSB3YXMgcmVuZGVyZWQgYnkgYCcgKyBuYW1lICsgJ2AuJzsKKyAgICAgIH0KKyAgICB9
CisgIH0KKyAgcmV0dXJuICcnOworfQorCitmdW5jdGlvbiBmcmllbmRseVN0cmluZ2lmeShvYmop
IHsKKyAgaWYgKHR5cGVvZiBvYmogPT09ICdvYmplY3QnKSB7CisgICAgaWYgKEFycmF5LmlzQXJy
YXkob2JqKSkgeworICAgICAgcmV0dXJuICdbJyArIG9iai5tYXAoZnJpZW5kbHlTdHJpbmdpZnkp
LmpvaW4oJywgJykgKyAnXSc7CisgICAgfSBlbHNlIHsKKyAgICAgIHZhciBwYWlycyA9IFtdOwor
ICAgICAgZm9yICh2YXIga2V5IGluIG9iaikgeworICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlw
ZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkgeworICAgICAgICAgIHZhciBrZXlFc2Nh
cGVkID0gL15bYS16JF9dW1x3JF9dKiQvaS50ZXN0KGtleSkgPyBrZXkgOiBKU09OLnN0cmluZ2lm
eShrZXkpOworICAgICAgICAgIHBhaXJzLnB1c2goa2V5RXNjYXBlZCArICc6ICcgKyBmcmllbmRs
eVN0cmluZ2lmeShvYmpba2V5XSkpOworICAgICAgICB9CisgICAgICB9CisgICAgICByZXR1cm4g
J3snICsgcGFpcnMuam9pbignLCAnKSArICd9JzsKKyAgICB9CisgIH0gZWxzZSBpZiAodHlwZW9m
IG9iaiA9PT0gJ3N0cmluZycpIHsKKyAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkob2JqKTsKKyAg
fSBlbHNlIGlmICh0eXBlb2Ygb2JqID09PSAnZnVuY3Rpb24nKSB7CisgICAgcmV0dXJuICdbZnVu
Y3Rpb24gb2JqZWN0XSc7CisgIH0KKyAgLy8gRGlmZmVycyBmcm9tIEpTT04uc3RyaW5naWZ5IGlu
IHRoYXQgdW5kZWZpbmVkIGJlY2F1c2UgdW5kZWZpbmVkIGFuZCB0aGF0CisgIC8vIGluZiBhbmQg
bmFuIGRvbid0IGJlY29tZSBudWxsCisgIHJldHVybiBTdHJpbmcob2JqKTsKK30KKwordmFyIHN0
eWxlTXV0YXRpb25XYXJuaW5nID0ge307CisKK2Z1bmN0aW9uIGNoZWNrQW5kV2FybkZvck11dGF0
ZWRTdHlsZShzdHlsZTEsIHN0eWxlMiwgY29tcG9uZW50KSB7CisgIGlmIChzdHlsZTEgPT0gbnVs
bCB8fCBzdHlsZTIgPT0gbnVsbCkgeworICAgIHJldHVybjsKKyAgfQorICBpZiAoc2hhbGxvd0Vx
dWFsKHN0eWxlMSwgc3R5bGUyKSkgeworICAgIHJldHVybjsKKyAgfQorCisgIHZhciBjb21wb25l
bnROYW1lID0gY29tcG9uZW50Ll90YWc7CisgIHZhciBvd25lciA9IGNvbXBvbmVudC5fY3VycmVu
dEVsZW1lbnQuX293bmVyOworICB2YXIgb3duZXJOYW1lOworICBpZiAob3duZXIpIHsKKyAgICBv
d25lck5hbWUgPSBvd25lci5nZXROYW1lKCk7CisgIH0KKworICB2YXIgaGFzaCA9IG93bmVyTmFt
ZSArICd8JyArIGNvbXBvbmVudE5hbWU7CisKKyAgaWYgKHN0eWxlTXV0YXRpb25XYXJuaW5nLmhh
c093blByb3BlcnR5KGhhc2gpKSB7CisgICAgcmV0dXJuOworICB9CisKKyAgc3R5bGVNdXRhdGlv
bldhcm5pbmdbaGFzaF0gPSB0cnVlOworCisgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9u
JyA/IHdhcm5pbmcoZmFsc2UsICdgJXNgIHdhcyBwYXNzZWQgYSBzdHlsZSBvYmplY3QgdGhhdCBo
YXMgcHJldmlvdXNseSBiZWVuIG11dGF0ZWQuICcgKyAnTXV0YXRpbmcgYHN0eWxlYCBpcyBkZXBy
ZWNhdGVkLiBDb25zaWRlciBjbG9uaW5nIGl0IGJlZm9yZWhhbmQuIENoZWNrICcgKyAndGhlIGBy
ZW5kZXJgICVzLiBQcmV2aW91cyBzdHlsZTogJXMuIE11dGF0ZWQgc3R5bGU6ICVzLicsIGNvbXBv
bmVudE5hbWUsIG93bmVyID8gJ29mIGAnICsgb3duZXJOYW1lICsgJ2AnIDogJ3VzaW5nIDwnICsg
Y29tcG9uZW50TmFtZSArICc+JywgZnJpZW5kbHlTdHJpbmdpZnkoc3R5bGUxKSwgZnJpZW5kbHlT
dHJpbmdpZnkoc3R5bGUyKSkgOiB2b2lkIDA7Cit9CisKKy8qKgorICogQHBhcmFtIHtvYmplY3R9
IGNvbXBvbmVudAorICogQHBhcmFtIHs/b2JqZWN0fSBwcm9wcworICovCitmdW5jdGlvbiBhc3Nl
cnRWYWxpZFByb3BzKGNvbXBvbmVudCwgcHJvcHMpIHsKKyAgaWYgKCFwcm9wcykgeworICAgIHJl
dHVybjsKKyAgfQorICAvLyBOb3RlIHRoZSB1c2Ugb2YgYD09YCB3aGljaCBjaGVja3MgZm9yIG51
bGwgb3IgdW5kZWZpbmVkLgorICBpZiAodm9pZEVsZW1lbnRUYWdzW2NvbXBvbmVudC5fdGFnXSkg
eworICAgICEocHJvcHMuY2hpbGRyZW4gPT0gbnVsbCAmJiBwcm9wcy5kYW5nZXJvdXNseVNldElu
bmVySFRNTCA9PSBudWxsKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFy
aWFudChmYWxzZSwgJyVzIGlzIGEgdm9pZCBlbGVtZW50IHRhZyBhbmQgbXVzdCBuZWl0aGVyIGhh
dmUgYGNoaWxkcmVuYCBub3IgdXNlIGBkYW5nZXJvdXNseVNldElubmVySFRNTGAuJXMnLCBjb21w
b25lbnQuX3RhZywgY29tcG9uZW50Ll9jdXJyZW50RWxlbWVudC5fb3duZXIgPyAnIENoZWNrIHRo
ZSByZW5kZXIgbWV0aG9kIG9mICcgKyBjb21wb25lbnQuX2N1cnJlbnRFbGVtZW50Ll9vd25lci5n
ZXROYW1lKCkgKyAnLicgOiAnJykgOiBfcHJvZEludmFyaWFudCgnMTM3JywgY29tcG9uZW50Ll90
YWcsIGNvbXBvbmVudC5fY3VycmVudEVsZW1lbnQuX293bmVyID8gJyBDaGVjayB0aGUgcmVuZGVy
IG1ldGhvZCBvZiAnICsgY29tcG9uZW50Ll9jdXJyZW50RWxlbWVudC5fb3duZXIuZ2V0TmFtZSgp
ICsgJy4nIDogJycpIDogdm9pZCAwOworICB9CisgIGlmIChwcm9wcy5kYW5nZXJvdXNseVNldElu
bmVySFRNTCAhPSBudWxsKSB7CisgICAgIShwcm9wcy5jaGlsZHJlbiA9PSBudWxsKSA/ICJkZXZl
bG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0NhbiBvbmx5IHNl
dCBvbmUgb2YgYGNoaWxkcmVuYCBvciBgcHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxgLicp
IDogX3Byb2RJbnZhcmlhbnQoJzYwJykgOiB2b2lkIDA7CisgICAgISh0eXBlb2YgcHJvcHMuZGFu
Z2Vyb3VzbHlTZXRJbm5lckhUTUwgPT09ICdvYmplY3QnICYmIEhUTUwgaW4gcHJvcHMuZGFuZ2Vy
b3VzbHlTZXRJbm5lckhUTUwpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52
YXJpYW50KGZhbHNlLCAnYHByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MYCBtdXN0IGJlIGlu
IHRoZSBmb3JtIGB7X19odG1sOiAuLi59YC4gUGxlYXNlIHZpc2l0IGh0dHBzOi8vZmIubWUvcmVh
Y3QtaW52YXJpYW50LWRhbmdlcm91c2x5LXNldC1pbm5lci1odG1sIGZvciBtb3JlIGluZm9ybWF0
aW9uLicpIDogX3Byb2RJbnZhcmlhbnQoJzYxJykgOiB2b2lkIDA7CisgIH0KKyAgaWYgKCJkZXZl
bG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9k
dWN0aW9uJyA/IHdhcm5pbmcocHJvcHMuaW5uZXJIVE1MID09IG51bGwsICdEaXJlY3RseSBzZXR0
aW5nIHByb3BlcnR5IGBpbm5lckhUTUxgIGlzIG5vdCBwZXJtaXR0ZWQuICcgKyAnRm9yIG1vcmUg
aW5mb3JtYXRpb24sIGxvb2t1cCBkb2N1bWVudGF0aW9uIG9uIGBkYW5nZXJvdXNseVNldElubmVy
SFRNTGAuJykgOiB2b2lkIDA7CisgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8g
d2FybmluZyhwcm9wcy5zdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmcgfHwgIXByb3BzLmNv
bnRlbnRFZGl0YWJsZSB8fCBwcm9wcy5jaGlsZHJlbiA9PSBudWxsLCAnQSBjb21wb25lbnQgaXMg
YGNvbnRlbnRFZGl0YWJsZWAgYW5kIGNvbnRhaW5zIGBjaGlsZHJlbmAgbWFuYWdlZCBieSAnICsg
J1JlYWN0LiBJdCBpcyBub3cgeW91ciByZXNwb25zaWJpbGl0eSB0byBndWFyYW50ZWUgdGhhdCBu
b25lIG9mICcgKyAndGhvc2Ugbm9kZXMgYXJlIHVuZXhwZWN0ZWRseSBtb2RpZmllZCBvciBkdXBs
aWNhdGVkLiBUaGlzIGlzICcgKyAncHJvYmFibHkgbm90IGludGVudGlvbmFsLicpIDogdm9pZCAw
OworICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcocHJvcHMub25G
b2N1c0luID09IG51bGwgJiYgcHJvcHMub25Gb2N1c091dCA9PSBudWxsLCAnUmVhY3QgdXNlcyBv
bkZvY3VzIGFuZCBvbkJsdXIgaW5zdGVhZCBvZiBvbkZvY3VzSW4gYW5kIG9uRm9jdXNPdXQuICcg
KyAnQWxsIFJlYWN0IGV2ZW50cyBhcmUgbm9ybWFsaXplZCB0byBidWJibGUsIHNvIG9uRm9jdXNJ
biBhbmQgb25Gb2N1c091dCAnICsgJ2FyZSBub3QgbmVlZGVkL3N1cHBvcnRlZCBieSBSZWFjdC4n
KSA6IHZvaWQgMDsKKyAgfQorICAhKHByb3BzLnN0eWxlID09IG51bGwgfHwgdHlwZW9mIHByb3Bz
LnN0eWxlID09PSAnb2JqZWN0JykgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBp
bnZhcmlhbnQoZmFsc2UsICdUaGUgYHN0eWxlYCBwcm9wIGV4cGVjdHMgYSBtYXBwaW5nIGZyb20g
c3R5bGUgcHJvcGVydGllcyB0byB2YWx1ZXMsIG5vdCBhIHN0cmluZy4gRm9yIGV4YW1wbGUsIHN0
eWxlPXt7bWFyZ2luUmlnaHQ6IHNwYWNpbmcgKyBcJ2VtXCd9fSB3aGVuIHVzaW5nIEpTWC4lcycs
IGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bShjb21wb25lbnQpKSA6IF9wcm9kSW52YXJpYW50
KCc2MicsIGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bShjb21wb25lbnQpKSA6IHZvaWQgMDsK
K30KKworZnVuY3Rpb24gZW5xdWV1ZVB1dExpc3RlbmVyKGluc3QsIHJlZ2lzdHJhdGlvbk5hbWUs
IGxpc3RlbmVyLCB0cmFuc2FjdGlvbikgeworICBpZiAodHJhbnNhY3Rpb24gaW5zdGFuY2VvZiBS
ZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9uKSB7CisgICAgcmV0dXJuOworICB9CisgIGlm
ICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAvLyBJRTggaGFzIG5vIEFQ
SSBmb3IgZXZlbnQgY2FwdHVyaW5nIGFuZCB0aGUgYG9uU2Nyb2xsYCBldmVudCBkb2Vzbid0Cisg
ICAgLy8gYnViYmxlLgorICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5p
bmcocmVnaXN0cmF0aW9uTmFtZSAhPT0gJ29uU2Nyb2xsJyB8fCBpc0V2ZW50U3VwcG9ydGVkKCdz
Y3JvbGwnLCB0cnVlKSwgJ1RoaXMgYnJvd3NlciBkb2VzblwndCBzdXBwb3J0IHRoZSBgb25TY3Jv
bGxgIGV2ZW50JykgOiB2b2lkIDA7CisgIH0KKyAgdmFyIGNvbnRhaW5lckluZm8gPSBpbnN0Ll9o
b3N0Q29udGFpbmVySW5mbzsKKyAgdmFyIGlzRG9jdW1lbnRGcmFnbWVudCA9IGNvbnRhaW5lcklu
Zm8uX25vZGUgJiYgY29udGFpbmVySW5mby5fbm9kZS5ub2RlVHlwZSA9PT0gRE9DX0ZSQUdNRU5U
X1RZUEU7CisgIHZhciBkb2MgPSBpc0RvY3VtZW50RnJhZ21lbnQgPyBjb250YWluZXJJbmZvLl9u
b2RlIDogY29udGFpbmVySW5mby5fb3duZXJEb2N1bWVudDsKKyAgbGlzdGVuVG8ocmVnaXN0cmF0
aW9uTmFtZSwgZG9jKTsKKyAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1
ZShwdXRMaXN0ZW5lciwgeworICAgIGluc3Q6IGluc3QsCisgICAgcmVnaXN0cmF0aW9uTmFtZTog
cmVnaXN0cmF0aW9uTmFtZSwKKyAgICBsaXN0ZW5lcjogbGlzdGVuZXIKKyAgfSk7Cit9CisKK2Z1
bmN0aW9uIHB1dExpc3RlbmVyKCkgeworICB2YXIgbGlzdGVuZXJUb1B1dCA9IHRoaXM7CisgIEV2
ZW50UGx1Z2luSHViLnB1dExpc3RlbmVyKGxpc3RlbmVyVG9QdXQuaW5zdCwgbGlzdGVuZXJUb1B1
dC5yZWdpc3RyYXRpb25OYW1lLCBsaXN0ZW5lclRvUHV0Lmxpc3RlbmVyKTsKK30KKworZnVuY3Rp
b24gaW5wdXRQb3N0TW91bnQoKSB7CisgIHZhciBpbnN0ID0gdGhpczsKKyAgUmVhY3RET01JbnB1
dC5wb3N0TW91bnRXcmFwcGVyKGluc3QpOworfQorCitmdW5jdGlvbiB0ZXh0YXJlYVBvc3RNb3Vu
dCgpIHsKKyAgdmFyIGluc3QgPSB0aGlzOworICBSZWFjdERPTVRleHRhcmVhLnBvc3RNb3VudFdy
YXBwZXIoaW5zdCk7Cit9CisKK2Z1bmN0aW9uIG9wdGlvblBvc3RNb3VudCgpIHsKKyAgdmFyIGlu
c3QgPSB0aGlzOworICBSZWFjdERPTU9wdGlvbi5wb3N0TW91bnRXcmFwcGVyKGluc3QpOworfQor
Cit2YXIgc2V0QW5kVmFsaWRhdGVDb250ZW50Q2hpbGREZXYgPSBlbXB0eUZ1bmN0aW9uOworaWYg
KCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICBzZXRBbmRWYWxpZGF0ZUNvbnRl
bnRDaGlsZERldiA9IGZ1bmN0aW9uIChjb250ZW50KSB7CisgICAgdmFyIGhhc0V4aXN0aW5nQ29u
dGVudCA9IHRoaXMuX2NvbnRlbnREZWJ1Z0lEICE9IG51bGw7CisgICAgdmFyIGRlYnVnSUQgPSB0
aGlzLl9kZWJ1Z0lEOworICAgIC8vIFRoaXMgSUQgcmVwcmVzZW50cyB0aGUgaW5saW5lZCBjaGls
ZCB0aGF0IGhhcyBubyBiYWNraW5nIGluc3RhbmNlOgorICAgIHZhciBjb250ZW50RGVidWdJRCA9
IC1kZWJ1Z0lEOworCisgICAgaWYgKGNvbnRlbnQgPT0gbnVsbCkgeworICAgICAgaWYgKGhhc0V4
aXN0aW5nQ29udGVudCkgeworICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wu
b25Vbm1vdW50Q29tcG9uZW50KHRoaXMuX2NvbnRlbnREZWJ1Z0lEKTsKKyAgICAgIH0KKyAgICAg
IHRoaXMuX2NvbnRlbnREZWJ1Z0lEID0gbnVsbDsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICB2YWxpZGF0ZURPTU5lc3RpbmcobnVsbCwgU3RyaW5nKGNvbnRlbnQpLCB0aGlzLCB0aGlzLl9h
bmNlc3RvckluZm8pOworICAgIHRoaXMuX2NvbnRlbnREZWJ1Z0lEID0gY29udGVudERlYnVnSUQ7
CisgICAgaWYgKGhhc0V4aXN0aW5nQ29udGVudCkgeworICAgICAgUmVhY3RJbnN0cnVtZW50YXRp
b24uZGVidWdUb29sLm9uQmVmb3JlVXBkYXRlQ29tcG9uZW50KGNvbnRlbnREZWJ1Z0lELCBjb250
ZW50KTsKKyAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vblVwZGF0ZUNvbXBv
bmVudChjb250ZW50RGVidWdJRCk7CisgICAgfSBlbHNlIHsKKyAgICAgIFJlYWN0SW5zdHJ1bWVu
dGF0aW9uLmRlYnVnVG9vbC5vbkJlZm9yZU1vdW50Q29tcG9uZW50KGNvbnRlbnREZWJ1Z0lELCBj
b250ZW50LCBkZWJ1Z0lEKTsKKyAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5v
bk1vdW50Q29tcG9uZW50KGNvbnRlbnREZWJ1Z0lEKTsKKyAgICAgIFJlYWN0SW5zdHJ1bWVudGF0
aW9uLmRlYnVnVG9vbC5vblNldENoaWxkcmVuKGRlYnVnSUQsIFtjb250ZW50RGVidWdJRF0pOwor
ICAgIH0KKyAgfTsKK30KKworLy8gVGhlcmUgYXJlIHNvIG1hbnkgbWVkaWEgZXZlbnRzLCBpdCBt
YWtlcyBzZW5zZSB0byBqdXN0CisvLyBtYWludGFpbiBhIGxpc3QgcmF0aGVyIHRoYW4gY3JlYXRl
IGEgYHRyYXBCdWJibGVkRXZlbnRgIGZvciBlYWNoCit2YXIgbWVkaWFFdmVudHMgPSB7CisgIHRv
cEFib3J0OiAnYWJvcnQnLAorICB0b3BDYW5QbGF5OiAnY2FucGxheScsCisgIHRvcENhblBsYXlU
aHJvdWdoOiAnY2FucGxheXRocm91Z2gnLAorICB0b3BEdXJhdGlvbkNoYW5nZTogJ2R1cmF0aW9u
Y2hhbmdlJywKKyAgdG9wRW1wdGllZDogJ2VtcHRpZWQnLAorICB0b3BFbmNyeXB0ZWQ6ICdlbmNy
eXB0ZWQnLAorICB0b3BFbmRlZDogJ2VuZGVkJywKKyAgdG9wRXJyb3I6ICdlcnJvcicsCisgIHRv
cExvYWRlZERhdGE6ICdsb2FkZWRkYXRhJywKKyAgdG9wTG9hZGVkTWV0YWRhdGE6ICdsb2FkZWRt
ZXRhZGF0YScsCisgIHRvcExvYWRTdGFydDogJ2xvYWRzdGFydCcsCisgIHRvcFBhdXNlOiAncGF1
c2UnLAorICB0b3BQbGF5OiAncGxheScsCisgIHRvcFBsYXlpbmc6ICdwbGF5aW5nJywKKyAgdG9w
UHJvZ3Jlc3M6ICdwcm9ncmVzcycsCisgIHRvcFJhdGVDaGFuZ2U6ICdyYXRlY2hhbmdlJywKKyAg
dG9wU2Vla2VkOiAnc2Vla2VkJywKKyAgdG9wU2Vla2luZzogJ3NlZWtpbmcnLAorICB0b3BTdGFs
bGVkOiAnc3RhbGxlZCcsCisgIHRvcFN1c3BlbmQ6ICdzdXNwZW5kJywKKyAgdG9wVGltZVVwZGF0
ZTogJ3RpbWV1cGRhdGUnLAorICB0b3BWb2x1bWVDaGFuZ2U6ICd2b2x1bWVjaGFuZ2UnLAorICB0
b3BXYWl0aW5nOiAnd2FpdGluZycKK307CisKK2Z1bmN0aW9uIHRyYXBCdWJibGVkRXZlbnRzTG9j
YWwoKSB7CisgIHZhciBpbnN0ID0gdGhpczsKKyAgLy8gSWYgYSBjb21wb25lbnQgcmVuZGVycyB0
byBudWxsIG9yIGlmIGFub3RoZXIgY29tcG9uZW50IGZhdGFscyBhbmQgY2F1c2VzCisgIC8vIHRo
ZSBzdGF0ZSBvZiB0aGUgdHJlZSB0byBiZSBjb3JydXB0ZWQsIGBub2RlYCBoZXJlIGNhbiBiZSBu
dWxsLgorICAhaW5zdC5fcm9vdE5vZGVJRCA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9u
JyA/IGludmFyaWFudChmYWxzZSwgJ011c3QgYmUgbW91bnRlZCB0byB0cmFwIGV2ZW50cycpIDog
X3Byb2RJbnZhcmlhbnQoJzYzJykgOiB2b2lkIDA7CisgIHZhciBub2RlID0gZ2V0Tm9kZShpbnN0
KTsKKyAgIW5vZGUgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQo
ZmFsc2UsICd0cmFwQnViYmxlZEV2ZW50KC4uLik6IFJlcXVpcmVzIG5vZGUgdG8gYmUgcmVuZGVy
ZWQuJykgOiBfcHJvZEludmFyaWFudCgnNjQnKSA6IHZvaWQgMDsKKworICBzd2l0Y2ggKGluc3Qu
X3RhZykgeworICAgIGNhc2UgJ2lmcmFtZSc6CisgICAgY2FzZSAnb2JqZWN0JzoKKyAgICAgIGlu
c3QuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnMgPSBbUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLnRy
YXBCdWJibGVkRXZlbnQoJ3RvcExvYWQnLCAnbG9hZCcsIG5vZGUpXTsKKyAgICAgIGJyZWFrOwor
ICAgIGNhc2UgJ3ZpZGVvJzoKKyAgICBjYXNlICdhdWRpbyc6CisKKyAgICAgIGluc3QuX3dyYXBw
ZXJTdGF0ZS5saXN0ZW5lcnMgPSBbXTsKKyAgICAgIC8vIENyZWF0ZSBsaXN0ZW5lciBmb3IgZWFj
aCBtZWRpYSBldmVudAorICAgICAgZm9yICh2YXIgZXZlbnQgaW4gbWVkaWFFdmVudHMpIHsKKyAg
ICAgICAgaWYgKG1lZGlhRXZlbnRzLmhhc093blByb3BlcnR5KGV2ZW50KSkgeworICAgICAgICAg
IGluc3QuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnMucHVzaChSZWFjdEJyb3dzZXJFdmVudEVtaXR0
ZXIudHJhcEJ1YmJsZWRFdmVudChldmVudCwgbWVkaWFFdmVudHNbZXZlbnRdLCBub2RlKSk7Cisg
ICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGJyZWFrOworICAgIGNhc2UgJ3NvdXJjZSc6CisgICAg
ICBpbnN0Ll93cmFwcGVyU3RhdGUubGlzdGVuZXJzID0gW1JlYWN0QnJvd3NlckV2ZW50RW1pdHRl
ci50cmFwQnViYmxlZEV2ZW50KCd0b3BFcnJvcicsICdlcnJvcicsIG5vZGUpXTsKKyAgICAgIGJy
ZWFrOworICAgIGNhc2UgJ2ltZyc6CisgICAgICBpbnN0Ll93cmFwcGVyU3RhdGUubGlzdGVuZXJz
ID0gW1JlYWN0QnJvd3NlckV2ZW50RW1pdHRlci50cmFwQnViYmxlZEV2ZW50KCd0b3BFcnJvcics
ICdlcnJvcicsIG5vZGUpLCBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIudHJhcEJ1YmJsZWRFdmVu
dCgndG9wTG9hZCcsICdsb2FkJywgbm9kZSldOworICAgICAgYnJlYWs7CisgICAgY2FzZSAnZm9y
bSc6CisgICAgICBpbnN0Ll93cmFwcGVyU3RhdGUubGlzdGVuZXJzID0gW1JlYWN0QnJvd3NlckV2
ZW50RW1pdHRlci50cmFwQnViYmxlZEV2ZW50KCd0b3BSZXNldCcsICdyZXNldCcsIG5vZGUpLCBS
ZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIudHJhcEJ1YmJsZWRFdmVudCgndG9wU3VibWl0JywgJ3N1
Ym1pdCcsIG5vZGUpXTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgJ2lucHV0JzoKKyAgICBjYXNl
ICdzZWxlY3QnOgorICAgIGNhc2UgJ3RleHRhcmVhJzoKKyAgICAgIGluc3QuX3dyYXBwZXJTdGF0
ZS5saXN0ZW5lcnMgPSBbUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLnRyYXBCdWJibGVkRXZlbnQo
J3RvcEludmFsaWQnLCAnaW52YWxpZCcsIG5vZGUpXTsKKyAgICAgIGJyZWFrOworICB9Cit9CisK
K2Z1bmN0aW9uIHBvc3RVcGRhdGVTZWxlY3RXcmFwcGVyKCkgeworICBSZWFjdERPTVNlbGVjdC5w
b3N0VXBkYXRlV3JhcHBlcih0aGlzKTsKK30KKworLy8gRm9yIEhUTUwsIGNlcnRhaW4gdGFncyBz
aG91bGQgb21pdCB0aGVpciBjbG9zZSB0YWcuIFdlIGtlZXAgYSB3aGl0ZWxpc3QgZm9yCisvLyB0
aG9zZSBzcGVjaWFsLWNhc2UgdGFncy4KKwordmFyIG9taXR0ZWRDbG9zZVRhZ3MgPSB7CisgICdh
cmVhJzogdHJ1ZSwKKyAgJ2Jhc2UnOiB0cnVlLAorICAnYnInOiB0cnVlLAorICAnY29sJzogdHJ1
ZSwKKyAgJ2VtYmVkJzogdHJ1ZSwKKyAgJ2hyJzogdHJ1ZSwKKyAgJ2ltZyc6IHRydWUsCisgICdp
bnB1dCc6IHRydWUsCisgICdrZXlnZW4nOiB0cnVlLAorICAnbGluayc6IHRydWUsCisgICdtZXRh
JzogdHJ1ZSwKKyAgJ3BhcmFtJzogdHJ1ZSwKKyAgJ3NvdXJjZSc6IHRydWUsCisgICd0cmFjayc6
IHRydWUsCisgICd3YnInOiB0cnVlCit9OworCit2YXIgbmV3bGluZUVhdGluZ1RhZ3MgPSB7Cisg
ICdsaXN0aW5nJzogdHJ1ZSwKKyAgJ3ByZSc6IHRydWUsCisgICd0ZXh0YXJlYSc6IHRydWUKK307
CisKKy8vIEZvciBIVE1MLCBjZXJ0YWluIHRhZ3MgY2Fubm90IGhhdmUgY2hpbGRyZW4uIFRoaXMg
aGFzIHRoZSBzYW1lIHB1cnBvc2UgYXMKKy8vIGBvbWl0dGVkQ2xvc2VUYWdzYCBleGNlcHQgdGhh
dCBgbWVudWl0ZW1gIHNob3VsZCBzdGlsbCBoYXZlIGl0cyBjbG9zaW5nIHRhZy4KKwordmFyIHZv
aWRFbGVtZW50VGFncyA9IF9hc3NpZ24oeworICAnbWVudWl0ZW0nOiB0cnVlCit9LCBvbWl0dGVk
Q2xvc2VUYWdzKTsKKworLy8gV2UgYWNjZXB0IGFueSB0YWcgdG8gYmUgcmVuZGVyZWQgYnV0IHNp
bmNlIHRoaXMgZ2V0cyBpbmplY3RlZCBpbnRvIGFyYml0cmFyeQorLy8gSFRNTCwgd2Ugd2FudCB0
byBtYWtlIHN1cmUgdGhhdCBpdCdzIGEgc2FmZSB0YWcuCisvLyBodHRwOi8vd3d3LnczLm9yZy9U
Ui9SRUMteG1sLyNOVC1OYW1lCisKK3ZhciBWQUxJRF9UQUdfUkVHRVggPSAvXlthLXpBLVpdW2Et
ekEtWjpfXC5cLVxkXSokLzsgLy8gU2ltcGxpZmllZCBzdWJzZXQKK3ZhciB2YWxpZGF0ZWRUYWdD
YWNoZSA9IHt9OwordmFyIGhhc093blByb3BlcnR5ID0ge30uaGFzT3duUHJvcGVydHk7CisKK2Z1
bmN0aW9uIHZhbGlkYXRlRGFuZ2Vyb3VzVGFnKHRhZykgeworICBpZiAoIWhhc093blByb3BlcnR5
LmNhbGwodmFsaWRhdGVkVGFnQ2FjaGUsIHRhZykpIHsKKyAgICAhVkFMSURfVEFHX1JFR0VYLnRl
c3QodGFnKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxz
ZSwgJ0ludmFsaWQgdGFnOiAlcycsIHRhZykgOiBfcHJvZEludmFyaWFudCgnNjUnLCB0YWcpIDog
dm9pZCAwOworICAgIHZhbGlkYXRlZFRhZ0NhY2hlW3RhZ10gPSB0cnVlOworICB9Cit9CisKK2Z1
bmN0aW9uIGlzQ3VzdG9tQ29tcG9uZW50KHRhZ05hbWUsIHByb3BzKSB7CisgIHJldHVybiB0YWdO
YW1lLmluZGV4T2YoJy0nKSA+PSAwIHx8IHByb3BzLmlzICE9IG51bGw7Cit9CisKK3ZhciBnbG9i
YWxJZENvdW50ZXIgPSAxOworCisvKioKKyAqIENyZWF0ZXMgYSBuZXcgUmVhY3QgY2xhc3MgdGhh
dCBpcyBpZGVtcG90ZW50IGFuZCBjYXBhYmxlIG9mIGNvbnRhaW5pbmcgb3RoZXIKKyAqIFJlYWN0
IGNvbXBvbmVudHMuIEl0IGFjY2VwdHMgZXZlbnQgbGlzdGVuZXJzIGFuZCBET00gcHJvcGVydGll
cyB0aGF0IGFyZQorICogdmFsaWQgYWNjb3JkaW5nIHRvIGBET01Qcm9wZXJ0eWAuCisgKgorICog
IC0gRXZlbnQgbGlzdGVuZXJzOiBgb25DbGlja2AsIGBvbk1vdXNlRG93bmAsIGV0Yy4KKyAqICAt
IERPTSBwcm9wZXJ0aWVzOiBgY2xhc3NOYW1lYCwgYG5hbWVgLCBgdGl0bGVgLCBldGMuCisgKgor
ICogVGhlIGBzdHlsZWAgcHJvcGVydHkgZnVuY3Rpb25zIGRpZmZlcmVudGx5IGZyb20gdGhlIERP
TSBBUEkuIEl0IGFjY2VwdHMgYW4KKyAqIG9iamVjdCBtYXBwaW5nIG9mIHN0eWxlIHByb3BlcnRp
ZXMgdG8gdmFsdWVzLgorICoKKyAqIEBjb25zdHJ1Y3RvciBSZWFjdERPTUNvbXBvbmVudAorICog
QGV4dGVuZHMgUmVhY3RNdWx0aUNoaWxkCisgKi8KK2Z1bmN0aW9uIFJlYWN0RE9NQ29tcG9uZW50
KGVsZW1lbnQpIHsKKyAgdmFyIHRhZyA9IGVsZW1lbnQudHlwZTsKKyAgdmFsaWRhdGVEYW5nZXJv
dXNUYWcodGFnKTsKKyAgdGhpcy5fY3VycmVudEVsZW1lbnQgPSBlbGVtZW50OworICB0aGlzLl90
YWcgPSB0YWcudG9Mb3dlckNhc2UoKTsKKyAgdGhpcy5fbmFtZXNwYWNlVVJJID0gbnVsbDsKKyAg
dGhpcy5fcmVuZGVyZWRDaGlsZHJlbiA9IG51bGw7CisgIHRoaXMuX3ByZXZpb3VzU3R5bGUgPSBu
dWxsOworICB0aGlzLl9wcmV2aW91c1N0eWxlQ29weSA9IG51bGw7CisgIHRoaXMuX2hvc3ROb2Rl
ID0gbnVsbDsKKyAgdGhpcy5faG9zdFBhcmVudCA9IG51bGw7CisgIHRoaXMuX3Jvb3ROb2RlSUQg
PSAwOworICB0aGlzLl9kb21JRCA9IDA7CisgIHRoaXMuX2hvc3RDb250YWluZXJJbmZvID0gbnVs
bDsKKyAgdGhpcy5fd3JhcHBlclN0YXRlID0gbnVsbDsKKyAgdGhpcy5fdG9wTGV2ZWxXcmFwcGVy
ID0gbnVsbDsKKyAgdGhpcy5fZmxhZ3MgPSAwOworICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3By
b2R1Y3Rpb24nKSB7CisgICAgdGhpcy5fYW5jZXN0b3JJbmZvID0gbnVsbDsKKyAgICBzZXRBbmRW
YWxpZGF0ZUNvbnRlbnRDaGlsZERldi5jYWxsKHRoaXMsIG51bGwpOworICB9Cit9CisKK1JlYWN0
RE9NQ29tcG9uZW50LmRpc3BsYXlOYW1lID0gJ1JlYWN0RE9NQ29tcG9uZW50JzsKKworUmVhY3RE
T01Db21wb25lbnQuTWl4aW4gPSB7CisKKyAgLyoqCisgICAqIEdlbmVyYXRlcyByb290IHRhZyBt
YXJrdXAgdGhlbiByZWN1cnNlcy4gVGhpcyBtZXRob2QgaGFzIHNpZGUgZWZmZWN0cyBhbmQKKyAg
ICogaXMgbm90IGlkZW1wb3RlbnQuCisgICAqCisgICAqIEBpbnRlcm5hbAorICAgKiBAcGFyYW0g
e1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb258UmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlv
bn0gdHJhbnNhY3Rpb24KKyAgICogQHBhcmFtIHs/UmVhY3RET01Db21wb25lbnR9IHRoZSBwYXJl
bnQgY29tcG9uZW50IGluc3RhbmNlCisgICAqIEBwYXJhbSB7P29iamVjdH0gaW5mbyBhYm91dCB0
aGUgaG9zdCBjb250YWluZXIKKyAgICogQHBhcmFtIHtvYmplY3R9IGNvbnRleHQKKyAgICogQHJl
dHVybiB7c3RyaW5nfSBUaGUgY29tcHV0ZWQgbWFya3VwLgorICAgKi8KKyAgbW91bnRDb21wb25l
bnQ6IGZ1bmN0aW9uICh0cmFuc2FjdGlvbiwgaG9zdFBhcmVudCwgaG9zdENvbnRhaW5lckluZm8s
IGNvbnRleHQpIHsKKyAgICB0aGlzLl9yb290Tm9kZUlEID0gZ2xvYmFsSWRDb3VudGVyKys7Cisg
ICAgdGhpcy5fZG9tSUQgPSBob3N0Q29udGFpbmVySW5mby5faWRDb3VudGVyKys7CisgICAgdGhp
cy5faG9zdFBhcmVudCA9IGhvc3RQYXJlbnQ7CisgICAgdGhpcy5faG9zdENvbnRhaW5lckluZm8g
PSBob3N0Q29udGFpbmVySW5mbzsKKworICAgIHZhciBwcm9wcyA9IHRoaXMuX2N1cnJlbnRFbGVt
ZW50LnByb3BzOworCisgICAgc3dpdGNoICh0aGlzLl90YWcpIHsKKyAgICAgIGNhc2UgJ2F1ZGlv
JzoKKyAgICAgIGNhc2UgJ2Zvcm0nOgorICAgICAgY2FzZSAnaWZyYW1lJzoKKyAgICAgIGNhc2Ug
J2ltZyc6CisgICAgICBjYXNlICdsaW5rJzoKKyAgICAgIGNhc2UgJ29iamVjdCc6CisgICAgICBj
YXNlICdzb3VyY2UnOgorICAgICAgY2FzZSAndmlkZW8nOgorICAgICAgICB0aGlzLl93cmFwcGVy
U3RhdGUgPSB7CisgICAgICAgICAgbGlzdGVuZXJzOiBudWxsCisgICAgICAgIH07CisgICAgICAg
IHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUodHJhcEJ1YmJsZWRFdmVu
dHNMb2NhbCwgdGhpcyk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAnaW5wdXQnOgorICAg
ICAgICBSZWFjdERPTUlucHV0Lm1vdW50V3JhcHBlcih0aGlzLCBwcm9wcywgaG9zdFBhcmVudCk7
CisgICAgICAgIHByb3BzID0gUmVhY3RET01JbnB1dC5nZXRIb3N0UHJvcHModGhpcywgcHJvcHMp
OworICAgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHRyYXBC
dWJibGVkRXZlbnRzTG9jYWwsIHRoaXMpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJ29w
dGlvbic6CisgICAgICAgIFJlYWN0RE9NT3B0aW9uLm1vdW50V3JhcHBlcih0aGlzLCBwcm9wcywg
aG9zdFBhcmVudCk7CisgICAgICAgIHByb3BzID0gUmVhY3RET01PcHRpb24uZ2V0SG9zdFByb3Bz
KHRoaXMsIHByb3BzKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICdzZWxlY3QnOgorICAg
ICAgICBSZWFjdERPTVNlbGVjdC5tb3VudFdyYXBwZXIodGhpcywgcHJvcHMsIGhvc3RQYXJlbnQp
OworICAgICAgICBwcm9wcyA9IFJlYWN0RE9NU2VsZWN0LmdldEhvc3RQcm9wcyh0aGlzLCBwcm9w
cyk7CisgICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUodHJh
cEJ1YmJsZWRFdmVudHNMb2NhbCwgdGhpcyk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAn
dGV4dGFyZWEnOgorICAgICAgICBSZWFjdERPTVRleHRhcmVhLm1vdW50V3JhcHBlcih0aGlzLCBw
cm9wcywgaG9zdFBhcmVudCk7CisgICAgICAgIHByb3BzID0gUmVhY3RET01UZXh0YXJlYS5nZXRI
b3N0UHJvcHModGhpcywgcHJvcHMpOworICAgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50
UmVhZHkoKS5lbnF1ZXVlKHRyYXBCdWJibGVkRXZlbnRzTG9jYWwsIHRoaXMpOworICAgICAgICBi
cmVhazsKKyAgICB9CisKKyAgICBhc3NlcnRWYWxpZFByb3BzKHRoaXMsIHByb3BzKTsKKworICAg
IC8vIFdlIGNyZWF0ZSB0YWdzIGluIHRoZSBuYW1lc3BhY2Ugb2YgdGhlaXIgcGFyZW50IGNvbnRh
aW5lciwgZXhjZXB0IEhUTUwKKyAgICAvLyB0YWdzIGdldCBubyBuYW1lc3BhY2UuCisgICAgdmFy
IG5hbWVzcGFjZVVSSTsKKyAgICB2YXIgcGFyZW50VGFnOworICAgIGlmIChob3N0UGFyZW50ICE9
IG51bGwpIHsKKyAgICAgIG5hbWVzcGFjZVVSSSA9IGhvc3RQYXJlbnQuX25hbWVzcGFjZVVSSTsK
KyAgICAgIHBhcmVudFRhZyA9IGhvc3RQYXJlbnQuX3RhZzsKKyAgICB9IGVsc2UgaWYgKGhvc3RD
b250YWluZXJJbmZvLl90YWcpIHsKKyAgICAgIG5hbWVzcGFjZVVSSSA9IGhvc3RDb250YWluZXJJ
bmZvLl9uYW1lc3BhY2VVUkk7CisgICAgICBwYXJlbnRUYWcgPSBob3N0Q29udGFpbmVySW5mby5f
dGFnOworICAgIH0KKyAgICBpZiAobmFtZXNwYWNlVVJJID09IG51bGwgfHwgbmFtZXNwYWNlVVJJ
ID09PSBET01OYW1lc3BhY2VzLnN2ZyAmJiBwYXJlbnRUYWcgPT09ICdmb3JlaWdub2JqZWN0Jykg
eworICAgICAgbmFtZXNwYWNlVVJJID0gRE9NTmFtZXNwYWNlcy5odG1sOworICAgIH0KKyAgICBp
ZiAobmFtZXNwYWNlVVJJID09PSBET01OYW1lc3BhY2VzLmh0bWwpIHsKKyAgICAgIGlmICh0aGlz
Ll90YWcgPT09ICdzdmcnKSB7CisgICAgICAgIG5hbWVzcGFjZVVSSSA9IERPTU5hbWVzcGFjZXMu
c3ZnOworICAgICAgfSBlbHNlIGlmICh0aGlzLl90YWcgPT09ICdtYXRoJykgeworICAgICAgICBu
YW1lc3BhY2VVUkkgPSBET01OYW1lc3BhY2VzLm1hdGhtbDsKKyAgICAgIH0KKyAgICB9CisgICAg
dGhpcy5fbmFtZXNwYWNlVVJJID0gbmFtZXNwYWNlVVJJOworCisgICAgaWYgKCJkZXZlbG9wbWVu
dCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgdmFyIHBhcmVudEluZm87CisgICAgICBpZiAo
aG9zdFBhcmVudCAhPSBudWxsKSB7CisgICAgICAgIHBhcmVudEluZm8gPSBob3N0UGFyZW50Ll9h
bmNlc3RvckluZm87CisgICAgICB9IGVsc2UgaWYgKGhvc3RDb250YWluZXJJbmZvLl90YWcpIHsK
KyAgICAgICAgcGFyZW50SW5mbyA9IGhvc3RDb250YWluZXJJbmZvLl9hbmNlc3RvckluZm87Cisg
ICAgICB9CisgICAgICBpZiAocGFyZW50SW5mbykgeworICAgICAgICAvLyBwYXJlbnRJbmZvIHNo
b3VsZCBhbHdheXMgYmUgcHJlc2VudCBleGNlcHQgZm9yIHRoZSB0b3AtbGV2ZWwKKyAgICAgICAg
Ly8gY29tcG9uZW50IHdoZW4gc2VydmVyIHJlbmRlcmluZworICAgICAgICB2YWxpZGF0ZURPTU5l
c3RpbmcodGhpcy5fdGFnLCBudWxsLCB0aGlzLCBwYXJlbnRJbmZvKTsKKyAgICAgIH0KKyAgICAg
IHRoaXMuX2FuY2VzdG9ySW5mbyA9IHZhbGlkYXRlRE9NTmVzdGluZy51cGRhdGVkQW5jZXN0b3JJ
bmZvKHBhcmVudEluZm8sIHRoaXMuX3RhZywgdGhpcyk7CisgICAgfQorCisgICAgdmFyIG1vdW50
SW1hZ2U7CisgICAgaWYgKHRyYW5zYWN0aW9uLnVzZUNyZWF0ZUVsZW1lbnQpIHsKKyAgICAgIHZh
ciBvd25lckRvY3VtZW50ID0gaG9zdENvbnRhaW5lckluZm8uX293bmVyRG9jdW1lbnQ7CisgICAg
ICB2YXIgZWw7CisgICAgICBpZiAobmFtZXNwYWNlVVJJID09PSBET01OYW1lc3BhY2VzLmh0bWwp
IHsKKyAgICAgICAgaWYgKHRoaXMuX3RhZyA9PT0gJ3NjcmlwdCcpIHsKKyAgICAgICAgICAvLyBD
cmVhdGUgdGhlIHNjcmlwdCB2aWEgLmlubmVySFRNTCBzbyBpdHMgInBhcnNlci1pbnNlcnRlZCIg
ZmxhZyBpcworICAgICAgICAgIC8vIHNldCB0byB0cnVlIGFuZCBpdCBkb2VzIG5vdCBleGVjdXRl
CisgICAgICAgICAgdmFyIGRpdiA9IG93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7
CisgICAgICAgICAgdmFyIHR5cGUgPSB0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlOworICAgICAg
ICAgIGRpdi5pbm5lckhUTUwgPSAnPCcgKyB0eXBlICsgJz48LycgKyB0eXBlICsgJz4nOworICAg
ICAgICAgIGVsID0gZGl2LnJlbW92ZUNoaWxkKGRpdi5maXJzdENoaWxkKTsKKyAgICAgICAgfSBl
bHNlIGlmIChwcm9wcy5pcykgeworICAgICAgICAgIGVsID0gb3duZXJEb2N1bWVudC5jcmVhdGVF
bGVtZW50KHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGUsIHByb3BzLmlzKTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAvLyBTZXBhcmF0ZSBlbHNlIGJyYW5jaCBpbnN0ZWFkIG9mIHVzaW5n
IGBwcm9wcy5pcyB8fCB1bmRlZmluZWRgIGFib3ZlIGJlY3Vhc2Ugb2YgYSBGaXJlZm94IGJ1Zy4K
KyAgICAgICAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJv
b2svcmVhY3QvcHVsbC82ODk2CisgICAgICAgICAgLy8gYW5kIGRpc2N1c3Npb24gaW4gaHR0cHM6
Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3NjI0MAorICAgICAgICAg
IGVsID0gb3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5
cGUpOworICAgICAgICB9CisgICAgICB9IGVsc2UgeworICAgICAgICBlbCA9IG93bmVyRG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKG5hbWVzcGFjZVVSSSwgdGhpcy5fY3VycmVudEVsZW1lbnQudHlw
ZSk7CisgICAgICB9CisgICAgICBSZWFjdERPTUNvbXBvbmVudFRyZWUucHJlY2FjaGVOb2RlKHRo
aXMsIGVsKTsKKyAgICAgIHRoaXMuX2ZsYWdzIHw9IEZsYWdzLmhhc0NhY2hlZENoaWxkTm9kZXM7
CisgICAgICBpZiAoIXRoaXMuX2hvc3RQYXJlbnQpIHsKKyAgICAgICAgRE9NUHJvcGVydHlPcGVy
YXRpb25zLnNldEF0dHJpYnV0ZUZvclJvb3QoZWwpOworICAgICAgfQorICAgICAgdGhpcy5fdXBk
YXRlRE9NUHJvcGVydGllcyhudWxsLCBwcm9wcywgdHJhbnNhY3Rpb24pOworICAgICAgdmFyIGxh
enlUcmVlID0gRE9NTGF6eVRyZWUoZWwpOworICAgICAgdGhpcy5fY3JlYXRlSW5pdGlhbENoaWxk
cmVuKHRyYW5zYWN0aW9uLCBwcm9wcywgY29udGV4dCwgbGF6eVRyZWUpOworICAgICAgbW91bnRJ
bWFnZSA9IGxhenlUcmVlOworICAgIH0gZWxzZSB7CisgICAgICB2YXIgdGFnT3BlbiA9IHRoaXMu
X2NyZWF0ZU9wZW5UYWdNYXJrdXBBbmRQdXRMaXN0ZW5lcnModHJhbnNhY3Rpb24sIHByb3BzKTsK
KyAgICAgIHZhciB0YWdDb250ZW50ID0gdGhpcy5fY3JlYXRlQ29udGVudE1hcmt1cCh0cmFuc2Fj
dGlvbiwgcHJvcHMsIGNvbnRleHQpOworICAgICAgaWYgKCF0YWdDb250ZW50ICYmIG9taXR0ZWRD
bG9zZVRhZ3NbdGhpcy5fdGFnXSkgeworICAgICAgICBtb3VudEltYWdlID0gdGFnT3BlbiArICcv
Pic7CisgICAgICB9IGVsc2UgeworICAgICAgICBtb3VudEltYWdlID0gdGFnT3BlbiArICc+JyAr
IHRhZ0NvbnRlbnQgKyAnPC8nICsgdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZSArICc+JzsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICBzd2l0Y2ggKHRoaXMuX3RhZykgeworICAgICAgY2FzZSAnaW5w
dXQnOgorICAgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGlu
cHV0UG9zdE1vdW50LCB0aGlzKTsKKyAgICAgICAgaWYgKHByb3BzLmF1dG9Gb2N1cykgeworICAg
ICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoQXV0b0ZvY3Vz
VXRpbHMuZm9jdXNET01Db21wb25lbnQsIHRoaXMpOworICAgICAgICB9CisgICAgICAgIGJyZWFr
OworICAgICAgY2FzZSAndGV4dGFyZWEnOgorICAgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1v
dW50UmVhZHkoKS5lbnF1ZXVlKHRleHRhcmVhUG9zdE1vdW50LCB0aGlzKTsKKyAgICAgICAgaWYg
KHByb3BzLmF1dG9Gb2N1cykgeworICAgICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRS
ZWFkeSgpLmVucXVldWUoQXV0b0ZvY3VzVXRpbHMuZm9jdXNET01Db21wb25lbnQsIHRoaXMpOwor
ICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAnc2VsZWN0JzoKKyAgICAgICAg
aWYgKHByb3BzLmF1dG9Gb2N1cykgeworICAgICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91
bnRSZWFkeSgpLmVucXVldWUoQXV0b0ZvY3VzVXRpbHMuZm9jdXNET01Db21wb25lbnQsIHRoaXMp
OworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAnYnV0dG9uJzoKKyAgICAg
ICAgaWYgKHByb3BzLmF1dG9Gb2N1cykgeworICAgICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0
TW91bnRSZWFkeSgpLmVucXVldWUoQXV0b0ZvY3VzVXRpbHMuZm9jdXNET01Db21wb25lbnQsIHRo
aXMpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAnb3B0aW9uJzoKKyAg
ICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShvcHRpb25Qb3N0
TW91bnQsIHRoaXMpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gbW91bnRJ
bWFnZTsKKyAgfSwKKworICAvKioKKyAgICogQ3JlYXRlcyBtYXJrdXAgZm9yIHRoZSBvcGVuIHRh
ZyBhbmQgYWxsIGF0dHJpYnV0ZXMuCisgICAqCisgICAqIFRoaXMgbWV0aG9kIGhhcyBzaWRlIGVm
ZmVjdHMgYmVjYXVzZSBldmVudHMgZ2V0IHJlZ2lzdGVyZWQuCisgICAqCisgICAqIEl0ZXJhdGlu
ZyBvdmVyIG9iamVjdCBwcm9wZXJ0aWVzIGlzIGZhc3RlciB0aGFuIGl0ZXJhdGluZyBvdmVyIGFy
cmF5cy4KKyAgICogQHNlZSBodHRwOi8vanNwZXJmLmNvbS9vYmotdnMtYXJyLWl0ZXJhdGlvbgor
ICAgKgorICAgKiBAcHJpdmF0ZQorICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rp
b258UmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb24KKyAgICogQHBh
cmFtIHtvYmplY3R9IHByb3BzCisgICAqIEByZXR1cm4ge3N0cmluZ30gTWFya3VwIG9mIG9wZW5p
bmcgdGFnLgorICAgKi8KKyAgX2NyZWF0ZU9wZW5UYWdNYXJrdXBBbmRQdXRMaXN0ZW5lcnM6IGZ1
bmN0aW9uICh0cmFuc2FjdGlvbiwgcHJvcHMpIHsKKyAgICB2YXIgcmV0ID0gJzwnICsgdGhpcy5f
Y3VycmVudEVsZW1lbnQudHlwZTsKKworICAgIGZvciAodmFyIHByb3BLZXkgaW4gcHJvcHMpIHsK
KyAgICAgIGlmICghcHJvcHMuaGFzT3duUHJvcGVydHkocHJvcEtleSkpIHsKKyAgICAgICAgY29u
dGludWU7CisgICAgICB9CisgICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcEtleV07Cisg
ICAgICBpZiAocHJvcFZhbHVlID09IG51bGwpIHsKKyAgICAgICAgY29udGludWU7CisgICAgICB9
CisgICAgICBpZiAocmVnaXN0cmF0aW9uTmFtZU1vZHVsZXMuaGFzT3duUHJvcGVydHkocHJvcEtl
eSkpIHsKKyAgICAgICAgaWYgKHByb3BWYWx1ZSkgeworICAgICAgICAgIGVucXVldWVQdXRMaXN0
ZW5lcih0aGlzLCBwcm9wS2V5LCBwcm9wVmFsdWUsIHRyYW5zYWN0aW9uKTsKKyAgICAgICAgfQor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKHByb3BLZXkgPT09IFNUWUxFKSB7CisgICAgICAg
ICAgaWYgKHByb3BWYWx1ZSkgeworICAgICAgICAgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdw
cm9kdWN0aW9uJykgeworICAgICAgICAgICAgICAvLyBTZWUgYF91cGRhdGVET01Qcm9wZXJ0aWVz
YC4gc3R5bGUgYmxvY2sKKyAgICAgICAgICAgICAgdGhpcy5fcHJldmlvdXNTdHlsZSA9IHByb3BW
YWx1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHByb3BWYWx1ZSA9IHRoaXMuX3ByZXZp
b3VzU3R5bGVDb3B5ID0gX2Fzc2lnbih7fSwgcHJvcHMuc3R5bGUpOworICAgICAgICAgIH0KKyAg
ICAgICAgICBwcm9wVmFsdWUgPSBDU1NQcm9wZXJ0eU9wZXJhdGlvbnMuY3JlYXRlTWFya3VwRm9y
U3R5bGVzKHByb3BWYWx1ZSwgdGhpcyk7CisgICAgICAgIH0KKyAgICAgICAgdmFyIG1hcmt1cCA9
IG51bGw7CisgICAgICAgIGlmICh0aGlzLl90YWcgIT0gbnVsbCAmJiBpc0N1c3RvbUNvbXBvbmVu
dCh0aGlzLl90YWcsIHByb3BzKSkgeworICAgICAgICAgIGlmICghUkVTRVJWRURfUFJPUFMuaGFz
T3duUHJvcGVydHkocHJvcEtleSkpIHsKKyAgICAgICAgICAgIG1hcmt1cCA9IERPTVByb3BlcnR5
T3BlcmF0aW9ucy5jcmVhdGVNYXJrdXBGb3JDdXN0b21BdHRyaWJ1dGUocHJvcEtleSwgcHJvcFZh
bHVlKTsKKyAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgbWFya3VwID0g
RE9NUHJvcGVydHlPcGVyYXRpb25zLmNyZWF0ZU1hcmt1cEZvclByb3BlcnR5KHByb3BLZXksIHBy
b3BWYWx1ZSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1hcmt1cCkgeworICAgICAgICAgIHJl
dCArPSAnICcgKyBtYXJrdXA7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisKKyAgICAvLyBG
b3Igc3RhdGljIHBhZ2VzLCBubyBuZWVkIHRvIHB1dCBSZWFjdCBJRCBhbmQgY2hlY2tzdW0uIFNh
dmVzIGxvdHMgb2YKKyAgICAvLyBieXRlcy4KKyAgICBpZiAodHJhbnNhY3Rpb24ucmVuZGVyVG9T
dGF0aWNNYXJrdXApIHsKKyAgICAgIHJldHVybiByZXQ7CisgICAgfQorCisgICAgaWYgKCF0aGlz
Ll9ob3N0UGFyZW50KSB7CisgICAgICByZXQgKz0gJyAnICsgRE9NUHJvcGVydHlPcGVyYXRpb25z
LmNyZWF0ZU1hcmt1cEZvclJvb3QoKTsKKyAgICB9CisgICAgcmV0ICs9ICcgJyArIERPTVByb3Bl
cnR5T3BlcmF0aW9ucy5jcmVhdGVNYXJrdXBGb3JJRCh0aGlzLl9kb21JRCk7CisgICAgcmV0dXJu
IHJldDsKKyAgfSwKKworICAvKioKKyAgICogQ3JlYXRlcyBtYXJrdXAgZm9yIHRoZSBjb250ZW50
IGJldHdlZW4gdGhlIHRhZ3MuCisgICAqCisgICAqIEBwcml2YXRlCisgICAqIEBwYXJhbSB7UmVh
Y3RSZWNvbmNpbGVUcmFuc2FjdGlvbnxSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9ufSB0
cmFuc2FjdGlvbgorICAgKiBAcGFyYW0ge29iamVjdH0gcHJvcHMKKyAgICogQHBhcmFtIHtvYmpl
Y3R9IGNvbnRleHQKKyAgICogQHJldHVybiB7c3RyaW5nfSBDb250ZW50IG1hcmt1cC4KKyAgICov
CisgIF9jcmVhdGVDb250ZW50TWFya3VwOiBmdW5jdGlvbiAodHJhbnNhY3Rpb24sIHByb3BzLCBj
b250ZXh0KSB7CisgICAgdmFyIHJldCA9ICcnOworCisgICAgLy8gSW50ZW50aW9uYWwgdXNlIG9m
ICE9IHRvIGF2b2lkIGNhdGNoaW5nIHplcm8vZmFsc2UuCisgICAgdmFyIGlubmVySFRNTCA9IHBy
b3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOworICAgIGlmIChpbm5lckhUTUwgIT0gbnVsbCkg
eworICAgICAgaWYgKGlubmVySFRNTC5fX2h0bWwgIT0gbnVsbCkgeworICAgICAgICByZXQgPSBp
bm5lckhUTUwuX19odG1sOworICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICB2YXIgY29udGVu
dFRvVXNlID0gQ09OVEVOVF9UWVBFU1t0eXBlb2YgcHJvcHMuY2hpbGRyZW5dID8gcHJvcHMuY2hp
bGRyZW4gOiBudWxsOworICAgICAgdmFyIGNoaWxkcmVuVG9Vc2UgPSBjb250ZW50VG9Vc2UgIT0g
bnVsbCA/IG51bGwgOiBwcm9wcy5jaGlsZHJlbjsKKyAgICAgIGlmIChjb250ZW50VG9Vc2UgIT0g
bnVsbCkgeworICAgICAgICAvLyBUT0RPOiBWYWxpZGF0ZSB0aGF0IHRleHQgaXMgYWxsb3dlZCBh
cyBhIGNoaWxkIG9mIHRoaXMgbm9kZQorICAgICAgICByZXQgPSBlc2NhcGVUZXh0Q29udGVudEZv
ckJyb3dzZXIoY29udGVudFRvVXNlKTsKKyAgICAgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdw
cm9kdWN0aW9uJykgeworICAgICAgICAgIHNldEFuZFZhbGlkYXRlQ29udGVudENoaWxkRGV2LmNh
bGwodGhpcywgY29udGVudFRvVXNlKTsKKyAgICAgICAgfQorICAgICAgfSBlbHNlIGlmIChjaGls
ZHJlblRvVXNlICE9IG51bGwpIHsKKyAgICAgICAgdmFyIG1vdW50SW1hZ2VzID0gdGhpcy5tb3Vu
dENoaWxkcmVuKGNoaWxkcmVuVG9Vc2UsIHRyYW5zYWN0aW9uLCBjb250ZXh0KTsKKyAgICAgICAg
cmV0ID0gbW91bnRJbWFnZXMuam9pbignJyk7CisgICAgICB9CisgICAgfQorICAgIGlmIChuZXds
aW5lRWF0aW5nVGFnc1t0aGlzLl90YWddICYmIHJldC5jaGFyQXQoMCkgPT09ICdcbicpIHsKKyAg
ICAgIC8vIHRleHQvaHRtbCBpZ25vcmVzIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaW4gdGhlc2UgdGFn
cyBpZiBpdCdzIGEgbmV3bGluZQorICAgICAgLy8gUHJlZmVyIHRvIGJyZWFrIGFwcGxpY2F0aW9u
L3htbCBvdmVyIHRleHQvaHRtbCAoZm9yIG5vdykgYnkgYWRkaW5nCisgICAgICAvLyBhIG5ld2xp
bmUgc3BlY2lmaWNhbGx5IHRvIGdldCBlYXRlbiBieSB0aGUgcGFyc2VyLiAoQWx0ZXJuYXRlbHkg
Zm9yCisgICAgICAvLyB0ZXh0YXJlYXMsIHJlcGxhY2luZyAiXlxuIiB3aXRoICJcclxuIiBkb2Vz
bid0IGdldCBlYXRlbiwgYW5kIHRoZSBmaXJzdAorICAgICAgLy8gXHIgaXMgbm9ybWFsaXplZCBv
dXQgYnkgSFRNTFRleHRBcmVhRWxlbWVudCN2YWx1ZS4pCisgICAgICAvLyBTZWU6IDxodHRwOi8v
d3d3LnczLm9yZy9UUi9odG1sLXBvbHlnbG90LyNuZXdsaW5lcy1pbi10ZXh0YXJlYS1hbmQtcHJl
PgorICAgICAgLy8gU2VlOiA8aHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDUvc3ludGF4Lmh0bWwj
ZWxlbWVudC1yZXN0cmljdGlvbnM+CisgICAgICAvLyBTZWU6IDxodHRwOi8vd3d3LnczLm9yZy9U
Ui9odG1sNS9zeW50YXguaHRtbCNuZXdsaW5lcz4KKyAgICAgIC8vIFNlZTogUGFyc2luZyBvZiAi
dGV4dGFyZWEiICJsaXN0aW5nIiBhbmQgInByZSIgZWxlbWVudHMKKyAgICAgIC8vICBmcm9tIDxo
dHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS9zeW50YXguaHRtbCNwYXJzaW5nLW1haW4taW5ib2R5
PgorICAgICAgcmV0dXJuICdcbicgKyByZXQ7CisgICAgfSBlbHNlIHsKKyAgICAgIHJldHVybiBy
ZXQ7CisgICAgfQorICB9LAorCisgIF9jcmVhdGVJbml0aWFsQ2hpbGRyZW46IGZ1bmN0aW9uICh0
cmFuc2FjdGlvbiwgcHJvcHMsIGNvbnRleHQsIGxhenlUcmVlKSB7CisgICAgLy8gSW50ZW50aW9u
YWwgdXNlIG9mICE9IHRvIGF2b2lkIGNhdGNoaW5nIHplcm8vZmFsc2UuCisgICAgdmFyIGlubmVy
SFRNTCA9IHByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOworICAgIGlmIChpbm5lckhUTUwg
IT0gbnVsbCkgeworICAgICAgaWYgKGlubmVySFRNTC5fX2h0bWwgIT0gbnVsbCkgeworICAgICAg
ICBET01MYXp5VHJlZS5xdWV1ZUhUTUwobGF6eVRyZWUsIGlubmVySFRNTC5fX2h0bWwpOworICAg
ICAgfQorICAgIH0gZWxzZSB7CisgICAgICB2YXIgY29udGVudFRvVXNlID0gQ09OVEVOVF9UWVBF
U1t0eXBlb2YgcHJvcHMuY2hpbGRyZW5dID8gcHJvcHMuY2hpbGRyZW4gOiBudWxsOworICAgICAg
dmFyIGNoaWxkcmVuVG9Vc2UgPSBjb250ZW50VG9Vc2UgIT0gbnVsbCA/IG51bGwgOiBwcm9wcy5j
aGlsZHJlbjsKKyAgICAgIGlmIChjb250ZW50VG9Vc2UgIT0gbnVsbCkgeworICAgICAgICAvLyBU
T0RPOiBWYWxpZGF0ZSB0aGF0IHRleHQgaXMgYWxsb3dlZCBhcyBhIGNoaWxkIG9mIHRoaXMgbm9k
ZQorICAgICAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAg
ICAgc2V0QW5kVmFsaWRhdGVDb250ZW50Q2hpbGREZXYuY2FsbCh0aGlzLCBjb250ZW50VG9Vc2Up
OworICAgICAgICB9CisgICAgICAgIERPTUxhenlUcmVlLnF1ZXVlVGV4dChsYXp5VHJlZSwgY29u
dGVudFRvVXNlKTsKKyAgICAgIH0gZWxzZSBpZiAoY2hpbGRyZW5Ub1VzZSAhPSBudWxsKSB7Cisg
ICAgICAgIHZhciBtb3VudEltYWdlcyA9IHRoaXMubW91bnRDaGlsZHJlbihjaGlsZHJlblRvVXNl
LCB0cmFuc2FjdGlvbiwgY29udGV4dCk7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbW91
bnRJbWFnZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICBET01MYXp5VHJlZS5xdWV1ZUNoaWxk
KGxhenlUcmVlLCBtb3VudEltYWdlc1tpXSk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9Cisg
IH0sCisKKyAgLyoqCisgICAqIFJlY2VpdmVzIGEgbmV4dCBlbGVtZW50IGFuZCB1cGRhdGVzIHRo
ZSBjb21wb25lbnQuCisgICAqCisgICAqIEBpbnRlcm5hbAorICAgKiBAcGFyYW0ge1JlYWN0RWxl
bWVudH0gbmV4dEVsZW1lbnQKKyAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9u
fFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uCisgICAqIEBwYXJh
bSB7b2JqZWN0fSBjb250ZXh0CisgICAqLworICByZWNlaXZlQ29tcG9uZW50OiBmdW5jdGlvbiAo
bmV4dEVsZW1lbnQsIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7CisgICAgdmFyIHByZXZFbGVtZW50
ID0gdGhpcy5fY3VycmVudEVsZW1lbnQ7CisgICAgdGhpcy5fY3VycmVudEVsZW1lbnQgPSBuZXh0
RWxlbWVudDsKKyAgICB0aGlzLnVwZGF0ZUNvbXBvbmVudCh0cmFuc2FjdGlvbiwgcHJldkVsZW1l
bnQsIG5leHRFbGVtZW50LCBjb250ZXh0KTsKKyAgfSwKKworICAvKioKKyAgICogVXBkYXRlcyBh
IERPTSBjb21wb25lbnQgYWZ0ZXIgaXQgaGFzIGFscmVhZHkgYmVlbiBhbGxvY2F0ZWQgYW5kCisg
ICAqIGF0dGFjaGVkIHRvIHRoZSBET00uIFJlY29uY2lsZXMgdGhlIHJvb3QgRE9NIG5vZGUsIHRo
ZW4gcmVjdXJzZXMuCisgICAqCisgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlv
bn0gdHJhbnNhY3Rpb24KKyAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IHByZXZFbGVtZW50Cisg
ICAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBuZXh0RWxlbWVudAorICAgKiBAaW50ZXJuYWwKKyAg
ICogQG92ZXJyaWRhYmxlCisgICAqLworICB1cGRhdGVDb21wb25lbnQ6IGZ1bmN0aW9uICh0cmFu
c2FjdGlvbiwgcHJldkVsZW1lbnQsIG5leHRFbGVtZW50LCBjb250ZXh0KSB7CisgICAgdmFyIGxh
c3RQcm9wcyA9IHByZXZFbGVtZW50LnByb3BzOworICAgIHZhciBuZXh0UHJvcHMgPSB0aGlzLl9j
dXJyZW50RWxlbWVudC5wcm9wczsKKworICAgIHN3aXRjaCAodGhpcy5fdGFnKSB7CisgICAgICBj
YXNlICdpbnB1dCc6CisgICAgICAgIGxhc3RQcm9wcyA9IFJlYWN0RE9NSW5wdXQuZ2V0SG9zdFBy
b3BzKHRoaXMsIGxhc3RQcm9wcyk7CisgICAgICAgIG5leHRQcm9wcyA9IFJlYWN0RE9NSW5wdXQu
Z2V0SG9zdFByb3BzKHRoaXMsIG5leHRQcm9wcyk7CisgICAgICAgIGJyZWFrOworICAgICAgY2Fz
ZSAnb3B0aW9uJzoKKyAgICAgICAgbGFzdFByb3BzID0gUmVhY3RET01PcHRpb24uZ2V0SG9zdFBy
b3BzKHRoaXMsIGxhc3RQcm9wcyk7CisgICAgICAgIG5leHRQcm9wcyA9IFJlYWN0RE9NT3B0aW9u
LmdldEhvc3RQcm9wcyh0aGlzLCBuZXh0UHJvcHMpOworICAgICAgICBicmVhazsKKyAgICAgIGNh
c2UgJ3NlbGVjdCc6CisgICAgICAgIGxhc3RQcm9wcyA9IFJlYWN0RE9NU2VsZWN0LmdldEhvc3RQ
cm9wcyh0aGlzLCBsYXN0UHJvcHMpOworICAgICAgICBuZXh0UHJvcHMgPSBSZWFjdERPTVNlbGVj
dC5nZXRIb3N0UHJvcHModGhpcywgbmV4dFByb3BzKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBj
YXNlICd0ZXh0YXJlYSc6CisgICAgICAgIGxhc3RQcm9wcyA9IFJlYWN0RE9NVGV4dGFyZWEuZ2V0
SG9zdFByb3BzKHRoaXMsIGxhc3RQcm9wcyk7CisgICAgICAgIG5leHRQcm9wcyA9IFJlYWN0RE9N
VGV4dGFyZWEuZ2V0SG9zdFByb3BzKHRoaXMsIG5leHRQcm9wcyk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKworICAgIGFzc2VydFZhbGlkUHJvcHModGhpcywgbmV4dFByb3BzKTsKKyAgICB0aGlz
Ll91cGRhdGVET01Qcm9wZXJ0aWVzKGxhc3RQcm9wcywgbmV4dFByb3BzLCB0cmFuc2FjdGlvbik7
CisgICAgdGhpcy5fdXBkYXRlRE9NQ2hpbGRyZW4obGFzdFByb3BzLCBuZXh0UHJvcHMsIHRyYW5z
YWN0aW9uLCBjb250ZXh0KTsKKworICAgIHN3aXRjaCAodGhpcy5fdGFnKSB7CisgICAgICBjYXNl
ICdpbnB1dCc6CisgICAgICAgIC8vIFVwZGF0ZSB0aGUgd3JhcHBlciBhcm91bmQgaW5wdXRzICph
ZnRlciogdXBkYXRpbmcgcHJvcHMuIFRoaXMgaGFzIHRvCisgICAgICAgIC8vIGhhcHBlbiBhZnRl
ciBgX3VwZGF0ZURPTVByb3BlcnRpZXNgLiBPdGhlcndpc2UgSFRNTDUgaW5wdXQgdmFsaWRhdGlv
bnMKKyAgICAgICAgLy8gcmFpc2Ugd2FybmluZ3MgYW5kIHByZXZlbnQgdGhlIG5ldyB2YWx1ZSBm
cm9tIGJlaW5nIGFzc2lnbmVkLgorICAgICAgICBSZWFjdERPTUlucHV0LnVwZGF0ZVdyYXBwZXIo
dGhpcyk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAndGV4dGFyZWEnOgorICAgICAgICBS
ZWFjdERPTVRleHRhcmVhLnVwZGF0ZVdyYXBwZXIodGhpcyk7CisgICAgICAgIGJyZWFrOworICAg
ICAgY2FzZSAnc2VsZWN0JzoKKyAgICAgICAgLy8gPHNlbGVjdD4gdmFsdWUgdXBkYXRlIG5lZWRz
IHRvIG9jY3VyIGFmdGVyIDxvcHRpb24+IGNoaWxkcmVuCisgICAgICAgIC8vIHJlY29uY2lsaWF0
aW9uCisgICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUocG9z
dFVwZGF0ZVNlbGVjdFdyYXBwZXIsIHRoaXMpOworICAgICAgICBicmVhazsKKyAgICB9CisgIH0s
CisKKyAgLyoqCisgICAqIFJlY29uY2lsZXMgdGhlIHByb3BlcnRpZXMgYnkgZGV0ZWN0aW5nIGRp
ZmZlcmVuY2VzIGluIHByb3BlcnR5IHZhbHVlcyBhbmQKKyAgICogdXBkYXRpbmcgdGhlIERPTSBh
cyBuZWNlc3NhcnkuIFRoaXMgZnVuY3Rpb24gaXMgcHJvYmFibHkgdGhlIHNpbmdsZSBtb3N0Cisg
ICAqIGNyaXRpY2FsIHBhdGggZm9yIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbi4KKyAgICoKKyAg
ICogVE9ETzogQmVuY2htYXJrIHdoZXRoZXIgY2hlY2tpbmcgZm9yIGNoYW5nZWQgdmFsdWVzIGlu
IG1lbW9yeSBhY3R1YWxseQorICAgKiAgICAgICBpbXByb3ZlcyBwZXJmb3JtYW5jZSAoZXNwZWNp
YWxseSBzdGF0aWNhbGx5IHBvc2l0aW9uZWQgZWxlbWVudHMpLgorICAgKiBUT0RPOiBCZW5jaG1h
cmsgdGhlIGVmZmVjdHMgb2YgcHV0dGluZyB0aGlzIGF0IHRoZSB0b3Agc2luY2UgOTklIG9mIHBy
b3BzCisgICAqICAgICAgIGRvIG5vdCBjaGFuZ2UgZm9yIGEgZ2l2ZW4gcmVjb25jaWxpYXRpb24u
CisgICAqIFRPRE86IEJlbmNobWFyayBhcmVhcyB0aGF0IGNhbiBiZSBpbXByb3ZlZCB3aXRoIGNh
Y2hpbmcuCisgICAqCisgICAqIEBwcml2YXRlCisgICAqIEBwYXJhbSB7b2JqZWN0fSBsYXN0UHJv
cHMKKyAgICogQHBhcmFtIHtvYmplY3R9IG5leHRQcm9wcworICAgKiBAcGFyYW0gez9ET01FbGVt
ZW50fSBub2RlCisgICAqLworICBfdXBkYXRlRE9NUHJvcGVydGllczogZnVuY3Rpb24gKGxhc3RQ
cm9wcywgbmV4dFByb3BzLCB0cmFuc2FjdGlvbikgeworICAgIHZhciBwcm9wS2V5OworICAgIHZh
ciBzdHlsZU5hbWU7CisgICAgdmFyIHN0eWxlVXBkYXRlczsKKyAgICBmb3IgKHByb3BLZXkgaW4g
bGFzdFByb3BzKSB7CisgICAgICBpZiAobmV4dFByb3BzLmhhc093blByb3BlcnR5KHByb3BLZXkp
IHx8ICFsYXN0UHJvcHMuaGFzT3duUHJvcGVydHkocHJvcEtleSkgfHwgbGFzdFByb3BzW3Byb3BL
ZXldID09IG51bGwpIHsKKyAgICAgICAgY29udGludWU7CisgICAgICB9CisgICAgICBpZiAocHJv
cEtleSA9PT0gU1RZTEUpIHsKKyAgICAgICAgdmFyIGxhc3RTdHlsZSA9IHRoaXMuX3ByZXZpb3Vz
U3R5bGVDb3B5OworICAgICAgICBmb3IgKHN0eWxlTmFtZSBpbiBsYXN0U3R5bGUpIHsKKyAgICAg
ICAgICBpZiAobGFzdFN0eWxlLmhhc093blByb3BlcnR5KHN0eWxlTmFtZSkpIHsKKyAgICAgICAg
ICAgIHN0eWxlVXBkYXRlcyA9IHN0eWxlVXBkYXRlcyB8fCB7fTsKKyAgICAgICAgICAgIHN0eWxl
VXBkYXRlc1tzdHlsZU5hbWVdID0gJyc7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IHRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5ID0gbnVsbDsKKyAgICAgIH0gZWxzZSBpZiAocmVnaXN0
cmF0aW9uTmFtZU1vZHVsZXMuaGFzT3duUHJvcGVydHkocHJvcEtleSkpIHsKKyAgICAgICAgaWYg
KGxhc3RQcm9wc1twcm9wS2V5XSkgeworICAgICAgICAgIC8vIE9ubHkgY2FsbCBkZWxldGVMaXN0
ZW5lciBpZiB0aGVyZSB3YXMgYSBsaXN0ZW5lciBwcmV2aW91c2x5IG9yCisgICAgICAgICAgLy8g
ZWxzZSB3aWxsRGVsZXRlTGlzdGVuZXIgZ2V0cyBjYWxsZWQgd2hlbiB0aGVyZSB3YXNuJ3QgYWN0
dWFsbHkgYQorICAgICAgICAgIC8vIGxpc3RlbmVyIChlLmcuLCBvbkNsaWNrPXtudWxsfSkKKyAg
ICAgICAgICBkZWxldGVMaXN0ZW5lcih0aGlzLCBwcm9wS2V5KTsKKyAgICAgICAgfQorICAgICAg
fSBlbHNlIGlmIChpc0N1c3RvbUNvbXBvbmVudCh0aGlzLl90YWcsIGxhc3RQcm9wcykpIHsKKyAg
ICAgICAgaWYgKCFSRVNFUlZFRF9QUk9QUy5oYXNPd25Qcm9wZXJ0eShwcm9wS2V5KSkgeworICAg
ICAgICAgIERPTVByb3BlcnR5T3BlcmF0aW9ucy5kZWxldGVWYWx1ZUZvckF0dHJpYnV0ZShnZXRO
b2RlKHRoaXMpLCBwcm9wS2V5KTsKKyAgICAgICAgfQorICAgICAgfSBlbHNlIGlmIChET01Qcm9w
ZXJ0eS5wcm9wZXJ0aWVzW3Byb3BLZXldIHx8IERPTVByb3BlcnR5LmlzQ3VzdG9tQXR0cmlidXRl
KHByb3BLZXkpKSB7CisgICAgICAgIERPTVByb3BlcnR5T3BlcmF0aW9ucy5kZWxldGVWYWx1ZUZv
clByb3BlcnR5KGdldE5vZGUodGhpcyksIHByb3BLZXkpOworICAgICAgfQorICAgIH0KKyAgICBm
b3IgKHByb3BLZXkgaW4gbmV4dFByb3BzKSB7CisgICAgICB2YXIgbmV4dFByb3AgPSBuZXh0UHJv
cHNbcHJvcEtleV07CisgICAgICB2YXIgbGFzdFByb3AgPSBwcm9wS2V5ID09PSBTVFlMRSA/IHRo
aXMuX3ByZXZpb3VzU3R5bGVDb3B5IDogbGFzdFByb3BzICE9IG51bGwgPyBsYXN0UHJvcHNbcHJv
cEtleV0gOiB1bmRlZmluZWQ7CisgICAgICBpZiAoIW5leHRQcm9wcy5oYXNPd25Qcm9wZXJ0eShw
cm9wS2V5KSB8fCBuZXh0UHJvcCA9PT0gbGFzdFByb3AgfHwgbmV4dFByb3AgPT0gbnVsbCAmJiBs
YXN0UHJvcCA9PSBudWxsKSB7CisgICAgICAgIGNvbnRpbnVlOworICAgICAgfQorICAgICAgaWYg
KHByb3BLZXkgPT09IFNUWUxFKSB7CisgICAgICAgIGlmIChuZXh0UHJvcCkgeworICAgICAgICAg
IGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICAgICAgIGNoZWNr
QW5kV2FybkZvck11dGF0ZWRTdHlsZSh0aGlzLl9wcmV2aW91c1N0eWxlQ29weSwgdGhpcy5fcHJl
dmlvdXNTdHlsZSwgdGhpcyk7CisgICAgICAgICAgICB0aGlzLl9wcmV2aW91c1N0eWxlID0gbmV4
dFByb3A7CisgICAgICAgICAgfQorICAgICAgICAgIG5leHRQcm9wID0gdGhpcy5fcHJldmlvdXNT
dHlsZUNvcHkgPSBfYXNzaWduKHt9LCBuZXh0UHJvcCk7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgdGhpcy5fcHJldmlvdXNTdHlsZUNvcHkgPSBudWxsOworICAgICAgICB9CisgICAgICAg
IGlmIChsYXN0UHJvcCkgeworICAgICAgICAgIC8vIFVuc2V0IHN0eWxlcyBvbiBgbGFzdFByb3Bg
IGJ1dCBub3Qgb24gYG5leHRQcm9wYC4KKyAgICAgICAgICBmb3IgKHN0eWxlTmFtZSBpbiBsYXN0
UHJvcCkgeworICAgICAgICAgICAgaWYgKGxhc3RQcm9wLmhhc093blByb3BlcnR5KHN0eWxlTmFt
ZSkgJiYgKCFuZXh0UHJvcCB8fCAhbmV4dFByb3AuaGFzT3duUHJvcGVydHkoc3R5bGVOYW1lKSkp
IHsKKyAgICAgICAgICAgICAgc3R5bGVVcGRhdGVzID0gc3R5bGVVcGRhdGVzIHx8IHt9OworICAg
ICAgICAgICAgICBzdHlsZVVwZGF0ZXNbc3R5bGVOYW1lXSA9ICcnOworICAgICAgICAgICAgfQor
ICAgICAgICAgIH0KKyAgICAgICAgICAvLyBVcGRhdGUgc3R5bGVzIHRoYXQgY2hhbmdlZCBzaW5j
ZSBgbGFzdFByb3BgLgorICAgICAgICAgIGZvciAoc3R5bGVOYW1lIGluIG5leHRQcm9wKSB7Cisg
ICAgICAgICAgICBpZiAobmV4dFByb3AuaGFzT3duUHJvcGVydHkoc3R5bGVOYW1lKSAmJiBsYXN0
UHJvcFtzdHlsZU5hbWVdICE9PSBuZXh0UHJvcFtzdHlsZU5hbWVdKSB7CisgICAgICAgICAgICAg
IHN0eWxlVXBkYXRlcyA9IHN0eWxlVXBkYXRlcyB8fCB7fTsKKyAgICAgICAgICAgICAgc3R5bGVV
cGRhdGVzW3N0eWxlTmFtZV0gPSBuZXh0UHJvcFtzdHlsZU5hbWVdOworICAgICAgICAgICAgfQor
ICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAvLyBSZWxpZXMgb24gYHVw
ZGF0ZVN0eWxlc0J5SURgIG5vdCBtdXRhdGluZyBgc3R5bGVVcGRhdGVzYC4KKyAgICAgICAgICBz
dHlsZVVwZGF0ZXMgPSBuZXh0UHJvcDsKKyAgICAgICAgfQorICAgICAgfSBlbHNlIGlmIChyZWdp
c3RyYXRpb25OYW1lTW9kdWxlcy5oYXNPd25Qcm9wZXJ0eShwcm9wS2V5KSkgeworICAgICAgICBp
ZiAobmV4dFByb3ApIHsKKyAgICAgICAgICBlbnF1ZXVlUHV0TGlzdGVuZXIodGhpcywgcHJvcEtl
eSwgbmV4dFByb3AsIHRyYW5zYWN0aW9uKTsKKyAgICAgICAgfSBlbHNlIGlmIChsYXN0UHJvcCkg
eworICAgICAgICAgIGRlbGV0ZUxpc3RlbmVyKHRoaXMsIHByb3BLZXkpOworICAgICAgICB9Cisg
ICAgICB9IGVsc2UgaWYgKGlzQ3VzdG9tQ29tcG9uZW50KHRoaXMuX3RhZywgbmV4dFByb3BzKSkg
eworICAgICAgICBpZiAoIVJFU0VSVkVEX1BST1BTLmhhc093blByb3BlcnR5KHByb3BLZXkpKSB7
CisgICAgICAgICAgRE9NUHJvcGVydHlPcGVyYXRpb25zLnNldFZhbHVlRm9yQXR0cmlidXRlKGdl
dE5vZGUodGhpcyksIHByb3BLZXksIG5leHRQcm9wKTsKKyAgICAgICAgfQorICAgICAgfSBlbHNl
IGlmIChET01Qcm9wZXJ0eS5wcm9wZXJ0aWVzW3Byb3BLZXldIHx8IERPTVByb3BlcnR5LmlzQ3Vz
dG9tQXR0cmlidXRlKHByb3BLZXkpKSB7CisgICAgICAgIHZhciBub2RlID0gZ2V0Tm9kZSh0aGlz
KTsKKyAgICAgICAgLy8gSWYgd2UncmUgdXBkYXRpbmcgdG8gbnVsbCBvciB1bmRlZmluZWQsIHdl
IHNob3VsZCByZW1vdmUgdGhlIHByb3BlcnR5CisgICAgICAgIC8vIGZyb20gdGhlIERPTSBub2Rl
IGluc3RlYWQgb2YgaW5hZHZlcnRlbnRseSBzZXR0aW5nIHRvIGEgc3RyaW5nLiBUaGlzCisgICAg
ICAgIC8vIGJyaW5ncyB1cyBpbiBsaW5lIHdpdGggdGhlIHNhbWUgYmVoYXZpb3Igd2UgaGF2ZSBv
biBpbml0aWFsIHJlbmRlci4KKyAgICAgICAgaWYgKG5leHRQcm9wICE9IG51bGwpIHsKKyAgICAg
ICAgICBET01Qcm9wZXJ0eU9wZXJhdGlvbnMuc2V0VmFsdWVGb3JQcm9wZXJ0eShub2RlLCBwcm9w
S2V5LCBuZXh0UHJvcCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgRE9NUHJvcGVydHlP
cGVyYXRpb25zLmRlbGV0ZVZhbHVlRm9yUHJvcGVydHkobm9kZSwgcHJvcEtleSk7CisgICAgICAg
IH0KKyAgICAgIH0KKyAgICB9CisgICAgaWYgKHN0eWxlVXBkYXRlcykgeworICAgICAgQ1NTUHJv
cGVydHlPcGVyYXRpb25zLnNldFZhbHVlRm9yU3R5bGVzKGdldE5vZGUodGhpcyksIHN0eWxlVXBk
YXRlcywgdGhpcyk7CisgICAgfQorICB9LAorCisgIC8qKgorICAgKiBSZWNvbmNpbGVzIHRoZSBj
aGlsZHJlbiB3aXRoIHRoZSB2YXJpb3VzIHByb3BlcnRpZXMgdGhhdCBhZmZlY3QgdGhlCisgICAq
IGNoaWxkcmVuIGNvbnRlbnQuCisgICAqCisgICAqIEBwYXJhbSB7b2JqZWN0fSBsYXN0UHJvcHMK
KyAgICogQHBhcmFtIHtvYmplY3R9IG5leHRQcm9wcworICAgKiBAcGFyYW0ge1JlYWN0UmVjb25j
aWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uCisgICAqIEBwYXJhbSB7b2JqZWN0fSBjb250ZXh0
CisgICAqLworICBfdXBkYXRlRE9NQ2hpbGRyZW46IGZ1bmN0aW9uIChsYXN0UHJvcHMsIG5leHRQ
cm9wcywgdHJhbnNhY3Rpb24sIGNvbnRleHQpIHsKKyAgICB2YXIgbGFzdENvbnRlbnQgPSBDT05U
RU5UX1RZUEVTW3R5cGVvZiBsYXN0UHJvcHMuY2hpbGRyZW5dID8gbGFzdFByb3BzLmNoaWxkcmVu
IDogbnVsbDsKKyAgICB2YXIgbmV4dENvbnRlbnQgPSBDT05URU5UX1RZUEVTW3R5cGVvZiBuZXh0
UHJvcHMuY2hpbGRyZW5dID8gbmV4dFByb3BzLmNoaWxkcmVuIDogbnVsbDsKKworICAgIHZhciBs
YXN0SHRtbCA9IGxhc3RQcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTCAmJiBsYXN0UHJvcHMu
ZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwuX19odG1sOworICAgIHZhciBuZXh0SHRtbCA9IG5leHRQ
cm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTCAmJiBuZXh0UHJvcHMuZGFuZ2Vyb3VzbHlTZXRJ
bm5lckhUTUwuX19odG1sOworCisgICAgLy8gTm90ZSB0aGUgdXNlIG9mIGAhPWAgd2hpY2ggY2hl
Y2tzIGZvciBudWxsIG9yIHVuZGVmaW5lZC4KKyAgICB2YXIgbGFzdENoaWxkcmVuID0gbGFzdENv
bnRlbnQgIT0gbnVsbCA/IG51bGwgOiBsYXN0UHJvcHMuY2hpbGRyZW47CisgICAgdmFyIG5leHRD
aGlsZHJlbiA9IG5leHRDb250ZW50ICE9IG51bGwgPyBudWxsIDogbmV4dFByb3BzLmNoaWxkcmVu
OworCisgICAgLy8gSWYgd2UncmUgc3dpdGNoaW5nIGZyb20gY2hpbGRyZW4gdG8gY29udGVudC9o
dG1sIG9yIHZpY2UgdmVyc2EsIHJlbW92ZQorICAgIC8vIHRoZSBvbGQgY29udGVudAorICAgIHZh
ciBsYXN0SGFzQ29udGVudE9ySHRtbCA9IGxhc3RDb250ZW50ICE9IG51bGwgfHwgbGFzdEh0bWwg
IT0gbnVsbDsKKyAgICB2YXIgbmV4dEhhc0NvbnRlbnRPckh0bWwgPSBuZXh0Q29udGVudCAhPSBu
dWxsIHx8IG5leHRIdG1sICE9IG51bGw7CisgICAgaWYgKGxhc3RDaGlsZHJlbiAhPSBudWxsICYm
IG5leHRDaGlsZHJlbiA9PSBudWxsKSB7CisgICAgICB0aGlzLnVwZGF0ZUNoaWxkcmVuKG51bGws
IHRyYW5zYWN0aW9uLCBjb250ZXh0KTsKKyAgICB9IGVsc2UgaWYgKGxhc3RIYXNDb250ZW50T3JI
dG1sICYmICFuZXh0SGFzQ29udGVudE9ySHRtbCkgeworICAgICAgdGhpcy51cGRhdGVUZXh0Q29u
dGVudCgnJyk7CisgICAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7Cisg
ICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vblNldENoaWxkcmVuKHRoaXMu
X2RlYnVnSUQsIFtdKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICBpZiAobmV4dENvbnRlbnQgIT0g
bnVsbCkgeworICAgICAgaWYgKGxhc3RDb250ZW50ICE9PSBuZXh0Q29udGVudCkgeworICAgICAg
ICB0aGlzLnVwZGF0ZVRleHRDb250ZW50KCcnICsgbmV4dENvbnRlbnQpOworICAgICAgICBpZiAo
ImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAgICAgc2V0QW5kVmFsaWRh
dGVDb250ZW50Q2hpbGREZXYuY2FsbCh0aGlzLCBuZXh0Q29udGVudCk7CisgICAgICAgIH0KKyAg
ICAgIH0KKyAgICB9IGVsc2UgaWYgKG5leHRIdG1sICE9IG51bGwpIHsKKyAgICAgIGlmIChsYXN0
SHRtbCAhPT0gbmV4dEh0bWwpIHsKKyAgICAgICAgdGhpcy51cGRhdGVNYXJrdXAoJycgKyBuZXh0
SHRtbCk7CisgICAgICB9CisgICAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24n
KSB7CisgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vblNldENoaWxkcmVu
KHRoaXMuX2RlYnVnSUQsIFtdKTsKKyAgICAgIH0KKyAgICB9IGVsc2UgaWYgKG5leHRDaGlsZHJl
biAhPSBudWxsKSB7CisgICAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7
CisgICAgICAgIHNldEFuZFZhbGlkYXRlQ29udGVudENoaWxkRGV2LmNhbGwodGhpcywgbnVsbCk7
CisgICAgICB9CisKKyAgICAgIHRoaXMudXBkYXRlQ2hpbGRyZW4obmV4dENoaWxkcmVuLCB0cmFu
c2FjdGlvbiwgY29udGV4dCk7CisgICAgfQorICB9LAorCisgIGdldEhvc3ROb2RlOiBmdW5jdGlv
biAoKSB7CisgICAgcmV0dXJuIGdldE5vZGUodGhpcyk7CisgIH0sCisKKyAgLyoqCisgICAqIERl
c3Ryb3lzIGFsbCBldmVudCByZWdpc3RyYXRpb25zIGZvciB0aGlzIGluc3RhbmNlLiBEb2VzIG5v
dCByZW1vdmUgZnJvbQorICAgKiB0aGUgRE9NLiBUaGF0IG11c3QgYmUgZG9uZSBieSB0aGUgcGFy
ZW50LgorICAgKgorICAgKiBAaW50ZXJuYWwKKyAgICovCisgIHVubW91bnRDb21wb25lbnQ6IGZ1
bmN0aW9uIChzYWZlbHkpIHsKKyAgICBzd2l0Y2ggKHRoaXMuX3RhZykgeworICAgICAgY2FzZSAn
YXVkaW8nOgorICAgICAgY2FzZSAnZm9ybSc6CisgICAgICBjYXNlICdpZnJhbWUnOgorICAgICAg
Y2FzZSAnaW1nJzoKKyAgICAgIGNhc2UgJ2xpbmsnOgorICAgICAgY2FzZSAnb2JqZWN0JzoKKyAg
ICAgIGNhc2UgJ3NvdXJjZSc6CisgICAgICBjYXNlICd2aWRlbyc6CisgICAgICAgIHZhciBsaXN0
ZW5lcnMgPSB0aGlzLl93cmFwcGVyU3RhdGUubGlzdGVuZXJzOworICAgICAgICBpZiAobGlzdGVu
ZXJzKSB7CisgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0ZW5lcnMubGVuZ3RoOyBp
KyspIHsKKyAgICAgICAgICAgIGxpc3RlbmVyc1tpXS5yZW1vdmUoKTsKKyAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICdodG1sJzoKKyAgICAgIGNhc2Ug
J2hlYWQnOgorICAgICAgY2FzZSAnYm9keSc6CisgICAgICAgIC8qKgorICAgICAgICAgKiBDb21w
b25lbnRzIGxpa2UgPGh0bWw+IDxoZWFkPiBhbmQgPGJvZHk+IGNhbid0IGJlIHJlbW92ZWQgb3Ig
YWRkZWQKKyAgICAgICAgICogZWFzaWx5IGluIGEgY3Jvc3MtYnJvd3NlciB3YXksIGhvd2V2ZXIg
aXQncyB2YWx1YWJsZSB0byBiZSBhYmxlIHRvCisgICAgICAgICAqIHRha2UgYWR2YW50YWdlIG9m
IFJlYWN0J3MgcmVjb25jaWxpYXRpb24gZm9yIHN0eWxpbmcgYW5kIDx0aXRsZT4KKyAgICAgICAg
ICogbWFuYWdlbWVudC4gU28gd2UganVzdCBkb2N1bWVudCBpdCBhbmQgdGhyb3cgaW4gZGFuZ2Vy
b3VzIGNhc2VzLgorICAgICAgICAgKi8KKyAgICAgICAgIWZhbHNlID8gImRldmVsb3BtZW50IiAh
PT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnPCVzPiB0cmllZCB0byB1bm1vdW50
LiBCZWNhdXNlIG9mIGNyb3NzLWJyb3dzZXIgcXVpcmtzIGl0IGlzIGltcG9zc2libGUgdG8gdW5t
b3VudCBzb21lIHRvcC1sZXZlbCBjb21wb25lbnRzIChlZyA8aHRtbD4sIDxoZWFkPiwgYW5kIDxi
b2R5PikgcmVsaWFibHkgYW5kIGVmZmljaWVudGx5LiBUbyBmaXggdGhpcywgaGF2ZSBhIHNpbmds
ZSB0b3AtbGV2ZWwgY29tcG9uZW50IHRoYXQgbmV2ZXIgdW5tb3VudHMgcmVuZGVyIHRoZXNlIGVs
ZW1lbnRzLicsIHRoaXMuX3RhZykgOiBfcHJvZEludmFyaWFudCgnNjYnLCB0aGlzLl90YWcpIDog
dm9pZCAwOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICB0aGlzLnVubW91bnRDaGlsZHJl
bihzYWZlbHkpOworICAgIFJlYWN0RE9NQ29tcG9uZW50VHJlZS51bmNhY2hlTm9kZSh0aGlzKTsK
KyAgICBFdmVudFBsdWdpbkh1Yi5kZWxldGVBbGxMaXN0ZW5lcnModGhpcyk7CisgICAgdGhpcy5f
cm9vdE5vZGVJRCA9IDA7CisgICAgdGhpcy5fZG9tSUQgPSAwOworICAgIHRoaXMuX3dyYXBwZXJT
dGF0ZSA9IG51bGw7CisKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7
CisgICAgICBzZXRBbmRWYWxpZGF0ZUNvbnRlbnRDaGlsZERldi5jYWxsKHRoaXMsIG51bGwpOwor
ICAgIH0KKyAgfSwKKworICBnZXRQdWJsaWNJbnN0YW5jZTogZnVuY3Rpb24gKCkgeworICAgIHJl
dHVybiBnZXROb2RlKHRoaXMpOworICB9CisKK307CisKK19hc3NpZ24oUmVhY3RET01Db21wb25l
bnQucHJvdG90eXBlLCBSZWFjdERPTUNvbXBvbmVudC5NaXhpbiwgUmVhY3RNdWx0aUNoaWxkLk1p
eGluKTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTUNvbXBvbmVudDsKK30seyIxMCI6MTAs
IjEwNyI6MTA3LCIxMSI6MTEsIjEyIjoxMiwiMTIyIjoxMjIsIjEyNSI6MTI1LCIxMzEiOjEzMSwi
MTQyIjoxNDIsIjE1MCI6MTUwLCIxNTYiOjE1NiwiMTU3IjoxNTcsIjE1OCI6MTU4LCIxNyI6MTcs
IjE4IjoxOCwiMiI6MiwiMjYiOjI2LCIzMyI6MzMsIjM0IjozNCwiMzkiOjM5LCI0MiI6NDIsIjQz
Ijo0MywiNDYiOjQ2LCI1Ijo1LCI2NCI6NjQsIjY4Ijo2OCwiNzciOjc3LCI5Ijo5fV0sMzM6W2Z1
bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxNS1w
cmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBU
aGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBm
b3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBj
YW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisg
KgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIFJlYWN0RE9NQ29tcG9uZW50RmxhZ3MgPSB7
CisgIGhhc0NhY2hlZENoaWxkTm9kZXM6IDEgPDwgMAorfTsKKworbW9kdWxlLmV4cG9ydHMgPSBS
ZWFjdERPTUNvbXBvbmVudEZsYWdzOworfSx7fV0sMzQ6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxl
LGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5j
LgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxp
Y2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRk
aXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBB
VEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0
JzsKKwordmFyIF9wcm9kSW52YXJpYW50ID0gX2RlcmVxXygxMjUpOworCit2YXIgRE9NUHJvcGVy
dHkgPSBfZGVyZXFfKDExKTsKK3ZhciBSZWFjdERPTUNvbXBvbmVudEZsYWdzID0gX2RlcmVxXygz
Myk7CisKK3ZhciBpbnZhcmlhbnQgPSBfZGVyZXFfKDE1MCk7CisKK3ZhciBBVFRSX05BTUUgPSBE
T01Qcm9wZXJ0eS5JRF9BVFRSSUJVVEVfTkFNRTsKK3ZhciBGbGFncyA9IFJlYWN0RE9NQ29tcG9u
ZW50RmxhZ3M7CisKK3ZhciBpbnRlcm5hbEluc3RhbmNlS2V5ID0gJ19fcmVhY3RJbnRlcm5hbElu
c3RhbmNlJCcgKyBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyKTsKKworLyoqCisg
KiBEcmlsbCBkb3duICh0aHJvdWdoIGNvbXBvc2l0ZXMgYW5kIGVtcHR5IGNvbXBvbmVudHMpIHVu
dGlsIHdlIGdldCBhIGhvc3Qgb3IKKyAqIGhvc3QgdGV4dCBjb21wb25lbnQuCisgKgorICogVGhp
cyBpcyBwcmV0dHkgcG9seW1vcnBoaWMgYnV0IHVuYXZvaWRhYmxlIHdpdGggdGhlIGN1cnJlbnQg
c3RydWN0dXJlIHdlIGhhdmUKKyAqIGZvciBgX3JlbmRlcmVkQ2hpbGRyZW5gLgorICovCitmdW5j
dGlvbiBnZXRSZW5kZXJlZEhvc3RPclRleHRGcm9tQ29tcG9uZW50KGNvbXBvbmVudCkgeworICB2
YXIgcmVuZGVyZWQ7CisgIHdoaWxlIChyZW5kZXJlZCA9IGNvbXBvbmVudC5fcmVuZGVyZWRDb21w
b25lbnQpIHsKKyAgICBjb21wb25lbnQgPSByZW5kZXJlZDsKKyAgfQorICByZXR1cm4gY29tcG9u
ZW50OworfQorCisvKioKKyAqIFBvcHVsYXRlIGBfaG9zdE5vZGVgIG9uIHRoZSByZW5kZXJlZCBo
b3N0L3RleHQgY29tcG9uZW50IHdpdGggdGhlIGdpdmVuCisgKiBET00gbm9kZS4gVGhlIHBhc3Nl
ZCBgaW5zdGAgY2FuIGJlIGEgY29tcG9zaXRlLgorICovCitmdW5jdGlvbiBwcmVjYWNoZU5vZGUo
aW5zdCwgbm9kZSkgeworICB2YXIgaG9zdEluc3QgPSBnZXRSZW5kZXJlZEhvc3RPclRleHRGcm9t
Q29tcG9uZW50KGluc3QpOworICBob3N0SW5zdC5faG9zdE5vZGUgPSBub2RlOworICBub2RlW2lu
dGVybmFsSW5zdGFuY2VLZXldID0gaG9zdEluc3Q7Cit9CisKK2Z1bmN0aW9uIHVuY2FjaGVOb2Rl
KGluc3QpIHsKKyAgdmFyIG5vZGUgPSBpbnN0Ll9ob3N0Tm9kZTsKKyAgaWYgKG5vZGUpIHsKKyAg
ICBkZWxldGUgbm9kZVtpbnRlcm5hbEluc3RhbmNlS2V5XTsKKyAgICBpbnN0Ll9ob3N0Tm9kZSA9
IG51bGw7CisgIH0KK30KKworLyoqCisgKiBQb3B1bGF0ZSBgX2hvc3ROb2RlYCBvbiBlYWNoIGNo
aWxkIG9mIGBpbnN0YCwgYXNzdW1pbmcgdGhhdCB0aGUgY2hpbGRyZW4KKyAqIG1hdGNoIHVwIHdp
dGggdGhlIERPTSAoZWxlbWVudCkgY2hpbGRyZW4gb2YgYG5vZGVgLgorICoKKyAqIFdlIGNhY2hl
IGVudGlyZSBsZXZlbHMgYXQgb25jZSB0byBhdm9pZCBhbiBuXjIgcHJvYmxlbSB3aGVyZSB3ZSBh
Y2Nlc3MgdGhlCisgKiBjaGlsZHJlbiBvZiBhIG5vZGUgc2VxdWVudGlhbGx5IGFuZCBoYXZlIHRv
IHdhbGsgZnJvbSB0aGUgc3RhcnQgdG8gb3VyIHRhcmdldAorICogbm9kZSBldmVyeSB0aW1lLgor
ICoKKyAqIFNpbmNlIHdlIHVwZGF0ZSBgX3JlbmRlcmVkQ2hpbGRyZW5gIGFuZCB0aGUgYWN0dWFs
IERPTSBhdCAoc2xpZ2h0bHkpCisgKiBkaWZmZXJlbnQgdGltZXMsIHdlIGNvdWxkIHJhY2UgaGVy
ZSBhbmQgc2VlIGEgbmV3ZXIgYF9yZW5kZXJlZENoaWxkcmVuYCB0aGFuCisgKiB0aGUgRE9NIG5v
ZGVzIHdlIHNlZS4gVG8gYXZvaWQgdGhpcywgUmVhY3RNdWx0aUNoaWxkIGNhbGxzCisgKiBgcHJl
cGFyZVRvTWFuYWdlQ2hpbGRyZW5gIGJlZm9yZSB3ZSBjaGFuZ2UgYF9yZW5kZXJlZENoaWxkcmVu
YCwgYXQgd2hpY2gKKyAqIHRpbWUgdGhlIGNvbnRhaW5lcidzIGNoaWxkIG5vZGVzIGFyZSBhbHdh
eXMgY2FjaGVkICh1bnRpbCBpdCB1bm1vdW50cykuCisgKi8KK2Z1bmN0aW9uIHByZWNhY2hlQ2hp
bGROb2RlcyhpbnN0LCBub2RlKSB7CisgIGlmIChpbnN0Ll9mbGFncyAmIEZsYWdzLmhhc0NhY2hl
ZENoaWxkTm9kZXMpIHsKKyAgICByZXR1cm47CisgIH0KKyAgdmFyIGNoaWxkcmVuID0gaW5zdC5f
cmVuZGVyZWRDaGlsZHJlbjsKKyAgdmFyIGNoaWxkTm9kZSA9IG5vZGUuZmlyc3RDaGlsZDsKKyAg
b3V0ZXI6IGZvciAodmFyIG5hbWUgaW4gY2hpbGRyZW4pIHsKKyAgICBpZiAoIWNoaWxkcmVuLmhh
c093blByb3BlcnR5KG5hbWUpKSB7CisgICAgICBjb250aW51ZTsKKyAgICB9CisgICAgdmFyIGNo
aWxkSW5zdCA9IGNoaWxkcmVuW25hbWVdOworICAgIHZhciBjaGlsZElEID0gZ2V0UmVuZGVyZWRI
b3N0T3JUZXh0RnJvbUNvbXBvbmVudChjaGlsZEluc3QpLl9kb21JRDsKKyAgICBpZiAoY2hpbGRJ
RCA9PT0gMCkgeworICAgICAgLy8gV2UncmUgY3VycmVudGx5IHVubW91bnRpbmcgdGhpcyBjaGls
ZCBpbiBSZWFjdE11bHRpQ2hpbGQ7IHNraXAgaXQuCisgICAgICBjb250aW51ZTsKKyAgICB9Cisg
ICAgLy8gV2UgYXNzdW1lIHRoZSBjaGlsZCBub2RlcyBhcmUgaW4gdGhlIHNhbWUgb3JkZXIgYXMg
dGhlIGNoaWxkIGluc3RhbmNlcy4KKyAgICBmb3IgKDsgY2hpbGROb2RlICE9PSBudWxsOyBjaGls
ZE5vZGUgPSBjaGlsZE5vZGUubmV4dFNpYmxpbmcpIHsKKyAgICAgIGlmIChjaGlsZE5vZGUubm9k
ZVR5cGUgPT09IDEgJiYgY2hpbGROb2RlLmdldEF0dHJpYnV0ZShBVFRSX05BTUUpID09PSBTdHJp
bmcoY2hpbGRJRCkgfHwgY2hpbGROb2RlLm5vZGVUeXBlID09PSA4ICYmIGNoaWxkTm9kZS5ub2Rl
VmFsdWUgPT09ICcgcmVhY3QtdGV4dDogJyArIGNoaWxkSUQgKyAnICcgfHwgY2hpbGROb2RlLm5v
ZGVUeXBlID09PSA4ICYmIGNoaWxkTm9kZS5ub2RlVmFsdWUgPT09ICcgcmVhY3QtZW1wdHk6ICcg
KyBjaGlsZElEICsgJyAnKSB7CisgICAgICAgIHByZWNhY2hlTm9kZShjaGlsZEluc3QsIGNoaWxk
Tm9kZSk7CisgICAgICAgIGNvbnRpbnVlIG91dGVyOworICAgICAgfQorICAgIH0KKyAgICAvLyBX
ZSByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIERPTSBjaGlsZHJlbiB3aXRob3V0IGZpbmRpbmcgYW4g
SUQgbWF0Y2guCisgICAgIWZhbHNlID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8g
aW52YXJpYW50KGZhbHNlLCAnVW5hYmxlIHRvIGZpbmQgZWxlbWVudCB3aXRoIElEICVzLicsIGNo
aWxkSUQpIDogX3Byb2RJbnZhcmlhbnQoJzMyJywgY2hpbGRJRCkgOiB2b2lkIDA7CisgIH0KKyAg
aW5zdC5fZmxhZ3MgfD0gRmxhZ3MuaGFzQ2FjaGVkQ2hpbGROb2RlczsKK30KKworLyoqCisgKiBH
aXZlbiBhIERPTSBub2RlLCByZXR1cm4gdGhlIGNsb3Nlc3QgUmVhY3RET01Db21wb25lbnQgb3IK
KyAqIFJlYWN0RE9NVGV4dENvbXBvbmVudCBpbnN0YW5jZSBhbmNlc3Rvci4KKyAqLworZnVuY3Rp
b24gZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGUobm9kZSkgeworICBpZiAobm9kZVtpbnRlcm5h
bEluc3RhbmNlS2V5XSkgeworICAgIHJldHVybiBub2RlW2ludGVybmFsSW5zdGFuY2VLZXldOwor
ICB9CisKKyAgLy8gV2FsayB1cCB0aGUgdHJlZSB1bnRpbCB3ZSBmaW5kIGFuIGFuY2VzdG9yIHdo
b3NlIGluc3RhbmNlIHdlIGhhdmUgY2FjaGVkLgorICB2YXIgcGFyZW50cyA9IFtdOworICB3aGls
ZSAoIW5vZGVbaW50ZXJuYWxJbnN0YW5jZUtleV0pIHsKKyAgICBwYXJlbnRzLnB1c2gobm9kZSk7
CisgICAgaWYgKG5vZGUucGFyZW50Tm9kZSkgeworICAgICAgbm9kZSA9IG5vZGUucGFyZW50Tm9k
ZTsKKyAgICB9IGVsc2UgeworICAgICAgLy8gVG9wIG9mIHRoZSB0cmVlLiBUaGlzIG5vZGUgbXVz
dCBub3QgYmUgcGFydCBvZiBhIFJlYWN0IHRyZWUgKG9yIGlzCisgICAgICAvLyB1bm1vdW50ZWQs
IHBvdGVudGlhbGx5KS4KKyAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAgfQorCisgIHZhciBj
bG9zZXN0OworICB2YXIgaW5zdDsKKyAgZm9yICg7IG5vZGUgJiYgKGluc3QgPSBub2RlW2ludGVy
bmFsSW5zdGFuY2VLZXldKTsgbm9kZSA9IHBhcmVudHMucG9wKCkpIHsKKyAgICBjbG9zZXN0ID0g
aW5zdDsKKyAgICBpZiAocGFyZW50cy5sZW5ndGgpIHsKKyAgICAgIHByZWNhY2hlQ2hpbGROb2Rl
cyhpbnN0LCBub2RlKTsKKyAgICB9CisgIH0KKworICByZXR1cm4gY2xvc2VzdDsKK30KKworLyoq
CisgKiBHaXZlbiBhIERPTSBub2RlLCByZXR1cm4gdGhlIFJlYWN0RE9NQ29tcG9uZW50IG9yIFJl
YWN0RE9NVGV4dENvbXBvbmVudAorICogaW5zdGFuY2UsIG9yIG51bGwgaWYgdGhlIG5vZGUgd2Fz
IG5vdCByZW5kZXJlZCBieSB0aGlzIFJlYWN0LgorICovCitmdW5jdGlvbiBnZXRJbnN0YW5jZUZy
b21Ob2RlKG5vZGUpIHsKKyAgdmFyIGluc3QgPSBnZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZShu
b2RlKTsKKyAgaWYgKGluc3QgIT0gbnVsbCAmJiBpbnN0Ll9ob3N0Tm9kZSA9PT0gbm9kZSkgewor
ICAgIHJldHVybiBpbnN0OworICB9IGVsc2UgeworICAgIHJldHVybiBudWxsOworICB9Cit9CisK
Ky8qKgorICogR2l2ZW4gYSBSZWFjdERPTUNvbXBvbmVudCBvciBSZWFjdERPTVRleHRDb21wb25l
bnQsIHJldHVybiB0aGUgY29ycmVzcG9uZGluZworICogRE9NIG5vZGUuCisgKi8KK2Z1bmN0aW9u
IGdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCkgeworICAvLyBXaXRob3V0IHRoaXMgZmlyc3QgaW52
YXJpYW50LCBwYXNzaW5nIGEgbm9uLURPTS1jb21wb25lbnQgdHJpZ2dlcnMgdGhlIG5leHQKKyAg
Ly8gaW52YXJpYW50IGZvciBhIG1pc3NpbmcgcGFyZW50LCB3aGljaCBpcyBzdXBlciBjb25mdXNp
bmcuCisgICEoaW5zdC5faG9zdE5vZGUgIT09IHVuZGVmaW5lZCkgPyAiZGV2ZWxvcG1lbnQiICE9
PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdnZXROb2RlRnJvbUluc3RhbmNlOiBJ
bnZhbGlkIGFyZ3VtZW50LicpIDogX3Byb2RJbnZhcmlhbnQoJzMzJykgOiB2b2lkIDA7CisKKyAg
aWYgKGluc3QuX2hvc3ROb2RlKSB7CisgICAgcmV0dXJuIGluc3QuX2hvc3ROb2RlOworICB9CisK
KyAgLy8gV2FsayB1cCB0aGUgdHJlZSB1bnRpbCB3ZSBmaW5kIGFuIGFuY2VzdG9yIHdob3NlIERP
TSBub2RlIHdlIGhhdmUgY2FjaGVkLgorICB2YXIgcGFyZW50cyA9IFtdOworICB3aGlsZSAoIWlu
c3QuX2hvc3ROb2RlKSB7CisgICAgcGFyZW50cy5wdXNoKGluc3QpOworICAgICFpbnN0Ll9ob3N0
UGFyZW50ID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNl
LCAnUmVhY3QgRE9NIHRyZWUgcm9vdCBzaG91bGQgYWx3YXlzIGhhdmUgYSBub2RlIHJlZmVyZW5j
ZS4nKSA6IF9wcm9kSW52YXJpYW50KCczNCcpIDogdm9pZCAwOworICAgIGluc3QgPSBpbnN0Ll9o
b3N0UGFyZW50OworICB9CisKKyAgLy8gTm93IHBhcmVudHMgY29udGFpbnMgZWFjaCBhbmNlc3Rv
ciB0aGF0IGRvZXMgKm5vdCogaGF2ZSBhIGNhY2hlZCBuYXRpdmUKKyAgLy8gbm9kZSwgYW5kIGBp
bnN0YCBpcyB0aGUgZGVlcGVzdCBhbmNlc3RvciB0aGF0IGRvZXMuCisgIGZvciAoOyBwYXJlbnRz
Lmxlbmd0aDsgaW5zdCA9IHBhcmVudHMucG9wKCkpIHsKKyAgICBwcmVjYWNoZUNoaWxkTm9kZXMo
aW5zdCwgaW5zdC5faG9zdE5vZGUpOworICB9CisKKyAgcmV0dXJuIGluc3QuX2hvc3ROb2RlOwor
fQorCit2YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0geworICBnZXRDbG9zZXN0SW5zdGFuY2VG
cm9tTm9kZTogZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGUsCisgIGdldEluc3RhbmNlRnJvbU5v
ZGU6IGdldEluc3RhbmNlRnJvbU5vZGUsCisgIGdldE5vZGVGcm9tSW5zdGFuY2U6IGdldE5vZGVG
cm9tSW5zdGFuY2UsCisgIHByZWNhY2hlQ2hpbGROb2RlczogcHJlY2FjaGVDaGlsZE5vZGVzLAor
ICBwcmVjYWNoZU5vZGU6IHByZWNhY2hlTm9kZSwKKyAgdW5jYWNoZU5vZGU6IHVuY2FjaGVOb2Rl
Cit9OworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZTsKK30seyIxMSI6
MTEsIjEyNSI6MTI1LCIxNTAiOjE1MCwiMzMiOjMzfV0sMzU6W2Z1bmN0aW9uKF9kZXJlcV8sbW9k
dWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhl
IFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3Ry
aWN0JzsKKwordmFyIHZhbGlkYXRlRE9NTmVzdGluZyA9IF9kZXJlcV8oMTMxKTsKKwordmFyIERP
Q19OT0RFX1RZUEUgPSA5OworCitmdW5jdGlvbiBSZWFjdERPTUNvbnRhaW5lckluZm8odG9wTGV2
ZWxXcmFwcGVyLCBub2RlKSB7CisgIHZhciBpbmZvID0geworICAgIF90b3BMZXZlbFdyYXBwZXI6
IHRvcExldmVsV3JhcHBlciwKKyAgICBfaWRDb3VudGVyOiAxLAorICAgIF9vd25lckRvY3VtZW50
OiBub2RlID8gbm9kZS5ub2RlVHlwZSA9PT0gRE9DX05PREVfVFlQRSA/IG5vZGUgOiBub2RlLm93
bmVyRG9jdW1lbnQgOiBudWxsLAorICAgIF9ub2RlOiBub2RlLAorICAgIF90YWc6IG5vZGUgPyBu
b2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgOiBudWxsLAorICAgIF9uYW1lc3BhY2VVUkk6IG5v
ZGUgPyBub2RlLm5hbWVzcGFjZVVSSSA6IG51bGwKKyAgfTsKKyAgaWYgKCJkZXZlbG9wbWVudCIg
IT09ICdwcm9kdWN0aW9uJykgeworICAgIGluZm8uX2FuY2VzdG9ySW5mbyA9IG5vZGUgPyB2YWxp
ZGF0ZURPTU5lc3RpbmcudXBkYXRlZEFuY2VzdG9ySW5mbyhudWxsLCBpbmZvLl90YWcsIG51bGwp
IDogbnVsbDsKKyAgfQorICByZXR1cm4gaW5mbzsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBSZWFj
dERPTUNvbnRhaW5lckluZm87Cit9LHsiMTMxIjoxMzF9XSwzNjpbZnVuY3Rpb24oX2RlcmVxXyxt
b2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQsIEZhY2Vib29r
LCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUg
aXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICog
TElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBB
biBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0
aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBz
dHJpY3QnOworCit2YXIgX2Fzc2lnbiA9IF9kZXJlcV8oMTU4KTsKKwordmFyIERPTUxhenlUcmVl
ID0gX2RlcmVxXyg5KTsKK3ZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSBfZGVyZXFfKDM0KTsK
KwordmFyIFJlYWN0RE9NRW1wdHlDb21wb25lbnQgPSBmdW5jdGlvbiAoaW5zdGFudGlhdGUpIHsK
KyAgLy8gUmVhY3RDb21wb3NpdGVDb21wb25lbnQgdXNlcyB0aGlzOgorICB0aGlzLl9jdXJyZW50
RWxlbWVudCA9IG51bGw7CisgIC8vIFJlYWN0RE9NQ29tcG9uZW50VHJlZSB1c2VzIHRoZXNlOgor
ICB0aGlzLl9ob3N0Tm9kZSA9IG51bGw7CisgIHRoaXMuX2hvc3RQYXJlbnQgPSBudWxsOworICB0
aGlzLl9ob3N0Q29udGFpbmVySW5mbyA9IG51bGw7CisgIHRoaXMuX2RvbUlEID0gMDsKK307Citf
YXNzaWduKFJlYWN0RE9NRW1wdHlDb21wb25lbnQucHJvdG90eXBlLCB7CisgIG1vdW50Q29tcG9u
ZW50OiBmdW5jdGlvbiAodHJhbnNhY3Rpb24sIGhvc3RQYXJlbnQsIGhvc3RDb250YWluZXJJbmZv
LCBjb250ZXh0KSB7CisgICAgdmFyIGRvbUlEID0gaG9zdENvbnRhaW5lckluZm8uX2lkQ291bnRl
cisrOworICAgIHRoaXMuX2RvbUlEID0gZG9tSUQ7CisgICAgdGhpcy5faG9zdFBhcmVudCA9IGhv
c3RQYXJlbnQ7CisgICAgdGhpcy5faG9zdENvbnRhaW5lckluZm8gPSBob3N0Q29udGFpbmVySW5m
bzsKKworICAgIHZhciBub2RlVmFsdWUgPSAnIHJlYWN0LWVtcHR5OiAnICsgdGhpcy5fZG9tSUQg
KyAnICc7CisgICAgaWYgKHRyYW5zYWN0aW9uLnVzZUNyZWF0ZUVsZW1lbnQpIHsKKyAgICAgIHZh
ciBvd25lckRvY3VtZW50ID0gaG9zdENvbnRhaW5lckluZm8uX293bmVyRG9jdW1lbnQ7CisgICAg
ICB2YXIgbm9kZSA9IG93bmVyRG9jdW1lbnQuY3JlYXRlQ29tbWVudChub2RlVmFsdWUpOworICAg
ICAgUmVhY3RET01Db21wb25lbnRUcmVlLnByZWNhY2hlTm9kZSh0aGlzLCBub2RlKTsKKyAgICAg
IHJldHVybiBET01MYXp5VHJlZShub2RlKTsKKyAgICB9IGVsc2UgeworICAgICAgaWYgKHRyYW5z
YWN0aW9uLnJlbmRlclRvU3RhdGljTWFya3VwKSB7CisgICAgICAgIC8vIE5vcm1hbGx5IHdlJ2Qg
aW5zZXJ0IGEgY29tbWVudCBub2RlLCBidXQgc2luY2UgdGhpcyBpcyBhIHNpdHVhdGlvbgorICAg
ICAgICAvLyB3aGVyZSBSZWFjdCB3b24ndCB0YWtlIG92ZXIgKHN0YXRpYyBwYWdlcyksIHdlIGNh
biBzaW1wbHkgcmV0dXJuCisgICAgICAgIC8vIG5vdGhpbmcuCisgICAgICAgIHJldHVybiAnJzsK
KyAgICAgIH0KKyAgICAgIHJldHVybiAnPCEtLScgKyBub2RlVmFsdWUgKyAnLS0+JzsKKyAgICB9
CisgIH0sCisgIHJlY2VpdmVDb21wb25lbnQ6IGZ1bmN0aW9uICgpIHt9LAorICBnZXRIb3N0Tm9k
ZTogZnVuY3Rpb24gKCkgeworICAgIHJldHVybiBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9k
ZUZyb21JbnN0YW5jZSh0aGlzKTsKKyAgfSwKKyAgdW5tb3VudENvbXBvbmVudDogZnVuY3Rpb24g
KCkgeworICAgIFJlYWN0RE9NQ29tcG9uZW50VHJlZS51bmNhY2hlTm9kZSh0aGlzKTsKKyAgfQor
fSk7CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RET01FbXB0eUNvbXBvbmVudDsKK30seyIxNTgi
OjE1OCwiMzQiOjM0LCI5Ijo5fV0sMzc6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMp
eworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBn
cmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmls
ZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFy
IFJlYWN0RE9NRmVhdHVyZUZsYWdzID0geworICB1c2VDcmVhdGVFbGVtZW50OiB0cnVlLAorICB1
c2VGaWJlcjogZmFsc2UKK307CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RET01GZWF0dXJlRmxh
Z3M7Cit9LHt9XSwzODpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAq
IENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgRE9NQ2hpbGRy
ZW5PcGVyYXRpb25zID0gX2RlcmVxXyg4KTsKK3ZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSBf
ZGVyZXFfKDM0KTsKKworLyoqCisgKiBPcGVyYXRpb25zIHVzZWQgdG8gcHJvY2VzcyB1cGRhdGVz
IHRvIERPTSBub2Rlcy4KKyAqLwordmFyIFJlYWN0RE9NSURPcGVyYXRpb25zID0geworCisgIC8q
KgorICAgKiBVcGRhdGVzIGEgY29tcG9uZW50J3MgY2hpbGRyZW4gYnkgcHJvY2Vzc2luZyBhIHNl
cmllcyBvZiB1cGRhdGVzLgorICAgKgorICAgKiBAcGFyYW0ge2FycmF5PG9iamVjdD59IHVwZGF0
ZXMgTGlzdCBvZiB1cGRhdGUgY29uZmlndXJhdGlvbnMuCisgICAqIEBpbnRlcm5hbAorICAgKi8K
KyAgZGFuZ2Vyb3VzbHlQcm9jZXNzQ2hpbGRyZW5VcGRhdGVzOiBmdW5jdGlvbiAocGFyZW50SW5z
dCwgdXBkYXRlcykgeworICAgIHZhciBub2RlID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5v
ZGVGcm9tSW5zdGFuY2UocGFyZW50SW5zdCk7CisgICAgRE9NQ2hpbGRyZW5PcGVyYXRpb25zLnBy
b2Nlc3NVcGRhdGVzKG5vZGUsIHVwZGF0ZXMpOworICB9Cit9OworCittb2R1bGUuZXhwb3J0cyA9
IFJlYWN0RE9NSURPcGVyYXRpb25zOworfSx7IjM0IjozNCwiOCI6OH1dLDM5OltmdW5jdGlvbihf
ZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwg
RmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3Vy
Y2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4g
dGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNl
IHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLwor
CisndXNlIHN0cmljdCc7CisKK3ZhciBfcHJvZEludmFyaWFudCA9IF9kZXJlcV8oMTI1KSwKKyAg
ICBfYXNzaWduID0gX2RlcmVxXygxNTgpOworCit2YXIgRE9NUHJvcGVydHlPcGVyYXRpb25zID0g
X2RlcmVxXygxMik7Cit2YXIgTGlua2VkVmFsdWVVdGlscyA9IF9kZXJlcV8oMjQpOwordmFyIFJl
YWN0RE9NQ29tcG9uZW50VHJlZSA9IF9kZXJlcV8oMzQpOwordmFyIFJlYWN0VXBkYXRlcyA9IF9k
ZXJlcV8oODIpOworCit2YXIgaW52YXJpYW50ID0gX2RlcmVxXygxNTApOwordmFyIHdhcm5pbmcg
PSBfZGVyZXFfKDE1Nyk7CisKK3ZhciBkaWRXYXJuVmFsdWVMaW5rID0gZmFsc2U7Cit2YXIgZGlk
V2FybkNoZWNrZWRMaW5rID0gZmFsc2U7Cit2YXIgZGlkV2FyblZhbHVlRGVmYXVsdFZhbHVlID0g
ZmFsc2U7Cit2YXIgZGlkV2FybkNoZWNrZWREZWZhdWx0Q2hlY2tlZCA9IGZhbHNlOwordmFyIGRp
ZFdhcm5Db250cm9sbGVkVG9VbmNvbnRyb2xsZWQgPSBmYWxzZTsKK3ZhciBkaWRXYXJuVW5jb250
cm9sbGVkVG9Db250cm9sbGVkID0gZmFsc2U7CisKK2Z1bmN0aW9uIGZvcmNlVXBkYXRlSWZNb3Vu
dGVkKCkgeworICBpZiAodGhpcy5fcm9vdE5vZGVJRCkgeworICAgIC8vIERPTSBjb21wb25lbnQg
aXMgc3RpbGwgbW91bnRlZDsgdXBkYXRlCisgICAgUmVhY3RET01JbnB1dC51cGRhdGVXcmFwcGVy
KHRoaXMpOworICB9Cit9CisKK2Z1bmN0aW9uIGlzQ29udHJvbGxlZChwcm9wcykgeworICB2YXIg
dXNlc0NoZWNrZWQgPSBwcm9wcy50eXBlID09PSAnY2hlY2tib3gnIHx8IHByb3BzLnR5cGUgPT09
ICdyYWRpbyc7CisgIHJldHVybiB1c2VzQ2hlY2tlZCA/IHByb3BzLmNoZWNrZWQgIT0gbnVsbCA6
IHByb3BzLnZhbHVlICE9IG51bGw7Cit9CisKKy8qKgorICogSW1wbGVtZW50cyBhbiA8aW5wdXQ+
IGhvc3QgY29tcG9uZW50IHRoYXQgYWxsb3dzIHNldHRpbmcgdGhlc2Ugb3B0aW9uYWwKKyAqIHBy
b3BzOiBgY2hlY2tlZGAsIGB2YWx1ZWAsIGBkZWZhdWx0Q2hlY2tlZGAsIGFuZCBgZGVmYXVsdFZh
bHVlYC4KKyAqCisgKiBJZiBgY2hlY2tlZGAgb3IgYHZhbHVlYCBhcmUgbm90IHN1cHBsaWVkIChv
ciBudWxsL3VuZGVmaW5lZCksIHVzZXIgYWN0aW9ucworICogdGhhdCBhZmZlY3QgdGhlIGNoZWNr
ZWQgc3RhdGUgb3IgdmFsdWUgd2lsbCB0cmlnZ2VyIHVwZGF0ZXMgdG8gdGhlIGVsZW1lbnQuCisg
KgorICogSWYgdGhleSBhcmUgc3VwcGxpZWQgKGFuZCBub3QgbnVsbC91bmRlZmluZWQpLCB0aGUg
cmVuZGVyZWQgZWxlbWVudCB3aWxsIG5vdAorICogdHJpZ2dlciB1cGRhdGVzIHRvIHRoZSBlbGVt
ZW50LiBJbnN0ZWFkLCB0aGUgcHJvcHMgbXVzdCBjaGFuZ2UgaW4gb3JkZXIgZm9yCisgKiB0aGUg
cmVuZGVyZWQgZWxlbWVudCB0byBiZSB1cGRhdGVkLgorICoKKyAqIFRoZSByZW5kZXJlZCBlbGVt
ZW50IHdpbGwgYmUgaW5pdGlhbGl6ZWQgYXMgdW5jaGVja2VkIChvciBgZGVmYXVsdENoZWNrZWRg
KQorICogd2l0aCBhbiBlbXB0eSB2YWx1ZSAob3IgYGRlZmF1bHRWYWx1ZWApLgorICoKKyAqIEBz
ZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMjAxMi9XRC1odG1sNS0yMDEyMTAyNS90aGUtaW5wdXQt
ZWxlbWVudC5odG1sCisgKi8KK3ZhciBSZWFjdERPTUlucHV0ID0geworICBnZXRIb3N0UHJvcHM6
IGZ1bmN0aW9uIChpbnN0LCBwcm9wcykgeworICAgIHZhciB2YWx1ZSA9IExpbmtlZFZhbHVlVXRp
bHMuZ2V0VmFsdWUocHJvcHMpOworICAgIHZhciBjaGVja2VkID0gTGlua2VkVmFsdWVVdGlscy5n
ZXRDaGVja2VkKHByb3BzKTsKKworICAgIHZhciBob3N0UHJvcHMgPSBfYXNzaWduKHsKKyAgICAg
IC8vIE1ha2Ugc3VyZSB3ZSBzZXQgLnR5cGUgYmVmb3JlIGFueSBvdGhlciBwcm9wZXJ0aWVzIChz
ZXR0aW5nIC52YWx1ZQorICAgICAgLy8gYmVmb3JlIC50eXBlIG1lYW5zIC52YWx1ZSBpcyBsb3N0
IGluIElFMTEgYW5kIGJlbG93KQorICAgICAgdHlwZTogdW5kZWZpbmVkLAorICAgICAgLy8gTWFr
ZSBzdXJlIHdlIHNldCAuc3RlcCBiZWZvcmUgLnZhbHVlIChzZXR0aW5nIC52YWx1ZSBiZWZvcmUg
LnN0ZXAKKyAgICAgIC8vIG1lYW5zIC52YWx1ZSBpcyByb3VuZGVkIG9uIG1vdW50LCBiYXNlZCB1
cG9uIHN0ZXAgcHJlY2lzaW9uKQorICAgICAgc3RlcDogdW5kZWZpbmVkLAorICAgICAgLy8gTWFr
ZSBzdXJlIHdlIHNldCAubWluICYgLm1heCBiZWZvcmUgLnZhbHVlICh0byBlbnN1cmUgcHJvcGVy
IG9yZGVyCisgICAgICAvLyBpbiBjb3JuZXIgY2FzZXMgc3VjaCBhcyBtaW4gb3IgbWF4IGRlcml2
aW5nIGZyb20gdmFsdWUsIGUuZy4gSXNzdWUgIzcxNzApCisgICAgICBtaW46IHVuZGVmaW5lZCwK
KyAgICAgIG1heDogdW5kZWZpbmVkCisgICAgfSwgcHJvcHMsIHsKKyAgICAgIGRlZmF1bHRDaGVj
a2VkOiB1bmRlZmluZWQsCisgICAgICBkZWZhdWx0VmFsdWU6IHVuZGVmaW5lZCwKKyAgICAgIHZh
bHVlOiB2YWx1ZSAhPSBudWxsID8gdmFsdWUgOiBpbnN0Ll93cmFwcGVyU3RhdGUuaW5pdGlhbFZh
bHVlLAorICAgICAgY2hlY2tlZDogY2hlY2tlZCAhPSBudWxsID8gY2hlY2tlZCA6IGluc3QuX3dy
YXBwZXJTdGF0ZS5pbml0aWFsQ2hlY2tlZCwKKyAgICAgIG9uQ2hhbmdlOiBpbnN0Ll93cmFwcGVy
U3RhdGUub25DaGFuZ2UKKyAgICB9KTsKKworICAgIHJldHVybiBob3N0UHJvcHM7CisgIH0sCisK
KyAgbW91bnRXcmFwcGVyOiBmdW5jdGlvbiAoaW5zdCwgcHJvcHMpIHsKKyAgICBpZiAoImRldmVs
b3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICBMaW5rZWRWYWx1ZVV0aWxzLmNoZWNr
UHJvcFR5cGVzKCdpbnB1dCcsIHByb3BzLCBpbnN0Ll9jdXJyZW50RWxlbWVudC5fb3duZXIpOwor
CisgICAgICB2YXIgb3duZXIgPSBpbnN0Ll9jdXJyZW50RWxlbWVudC5fb3duZXI7CisKKyAgICAg
IGlmIChwcm9wcy52YWx1ZUxpbmsgIT09IHVuZGVmaW5lZCAmJiAhZGlkV2FyblZhbHVlTGluaykg
eworICAgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNl
LCAnYHZhbHVlTGlua2AgcHJvcCBvbiBgaW5wdXRgIGlzIGRlcHJlY2F0ZWQ7IHNldCBgdmFsdWVg
IGFuZCBgb25DaGFuZ2VgIGluc3RlYWQuJykgOiB2b2lkIDA7CisgICAgICAgIGRpZFdhcm5WYWx1
ZUxpbmsgPSB0cnVlOworICAgICAgfQorICAgICAgaWYgKHByb3BzLmNoZWNrZWRMaW5rICE9PSB1
bmRlZmluZWQgJiYgIWRpZFdhcm5DaGVja2VkTGluaykgeworICAgICAgICAiZGV2ZWxvcG1lbnQi
ICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnYGNoZWNrZWRMaW5rYCBwcm9wIG9u
IGBpbnB1dGAgaXMgZGVwcmVjYXRlZDsgc2V0IGB2YWx1ZWAgYW5kIGBvbkNoYW5nZWAgaW5zdGVh
ZC4nKSA6IHZvaWQgMDsKKyAgICAgICAgZGlkV2FybkNoZWNrZWRMaW5rID0gdHJ1ZTsKKyAgICAg
IH0KKyAgICAgIGlmIChwcm9wcy5jaGVja2VkICE9PSB1bmRlZmluZWQgJiYgcHJvcHMuZGVmYXVs
dENoZWNrZWQgIT09IHVuZGVmaW5lZCAmJiAhZGlkV2FybkNoZWNrZWREZWZhdWx0Q2hlY2tlZCkg
eworICAgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNl
LCAnJXMgY29udGFpbnMgYW4gaW5wdXQgb2YgdHlwZSAlcyB3aXRoIGJvdGggY2hlY2tlZCBhbmQg
ZGVmYXVsdENoZWNrZWQgcHJvcHMuICcgKyAnSW5wdXQgZWxlbWVudHMgbXVzdCBiZSBlaXRoZXIg
Y29udHJvbGxlZCBvciB1bmNvbnRyb2xsZWQgJyArICcoc3BlY2lmeSBlaXRoZXIgdGhlIGNoZWNr
ZWQgcHJvcCwgb3IgdGhlIGRlZmF1bHRDaGVja2VkIHByb3AsIGJ1dCBub3QgJyArICdib3RoKS4g
RGVjaWRlIGJldHdlZW4gdXNpbmcgYSBjb250cm9sbGVkIG9yIHVuY29udHJvbGxlZCBpbnB1dCAn
ICsgJ2VsZW1lbnQgYW5kIHJlbW92ZSBvbmUgb2YgdGhlc2UgcHJvcHMuIE1vcmUgaW5mbzogJyAr
ICdodHRwczovL2ZiLm1lL3JlYWN0LWNvbnRyb2xsZWQtY29tcG9uZW50cycsIG93bmVyICYmIG93
bmVyLmdldE5hbWUoKSB8fCAnQSBjb21wb25lbnQnLCBwcm9wcy50eXBlKSA6IHZvaWQgMDsKKyAg
ICAgICAgZGlkV2FybkNoZWNrZWREZWZhdWx0Q2hlY2tlZCA9IHRydWU7CisgICAgICB9CisgICAg
ICBpZiAocHJvcHMudmFsdWUgIT09IHVuZGVmaW5lZCAmJiBwcm9wcy5kZWZhdWx0VmFsdWUgIT09
IHVuZGVmaW5lZCAmJiAhZGlkV2FyblZhbHVlRGVmYXVsdFZhbHVlKSB7CisgICAgICAgICJkZXZl
bG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICclcyBjb250YWlucyBh
biBpbnB1dCBvZiB0eXBlICVzIHdpdGggYm90aCB2YWx1ZSBhbmQgZGVmYXVsdFZhbHVlIHByb3Bz
LiAnICsgJ0lucHV0IGVsZW1lbnRzIG11c3QgYmUgZWl0aGVyIGNvbnRyb2xsZWQgb3IgdW5jb250
cm9sbGVkICcgKyAnKHNwZWNpZnkgZWl0aGVyIHRoZSB2YWx1ZSBwcm9wLCBvciB0aGUgZGVmYXVs
dFZhbHVlIHByb3AsIGJ1dCBub3QgJyArICdib3RoKS4gRGVjaWRlIGJldHdlZW4gdXNpbmcgYSBj
b250cm9sbGVkIG9yIHVuY29udHJvbGxlZCBpbnB1dCAnICsgJ2VsZW1lbnQgYW5kIHJlbW92ZSBv
bmUgb2YgdGhlc2UgcHJvcHMuIE1vcmUgaW5mbzogJyArICdodHRwczovL2ZiLm1lL3JlYWN0LWNv
bnRyb2xsZWQtY29tcG9uZW50cycsIG93bmVyICYmIG93bmVyLmdldE5hbWUoKSB8fCAnQSBjb21w
b25lbnQnLCBwcm9wcy50eXBlKSA6IHZvaWQgMDsKKyAgICAgICAgZGlkV2FyblZhbHVlRGVmYXVs
dFZhbHVlID0gdHJ1ZTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgZGVmYXVsdFZhbHVlID0g
cHJvcHMuZGVmYXVsdFZhbHVlOworICAgIGluc3QuX3dyYXBwZXJTdGF0ZSA9IHsKKyAgICAgIGlu
aXRpYWxDaGVja2VkOiBwcm9wcy5jaGVja2VkICE9IG51bGwgPyBwcm9wcy5jaGVja2VkIDogcHJv
cHMuZGVmYXVsdENoZWNrZWQsCisgICAgICBpbml0aWFsVmFsdWU6IHByb3BzLnZhbHVlICE9IG51
bGwgPyBwcm9wcy52YWx1ZSA6IGRlZmF1bHRWYWx1ZSwKKyAgICAgIGxpc3RlbmVyczogbnVsbCwK
KyAgICAgIG9uQ2hhbmdlOiBfaGFuZGxlQ2hhbmdlLmJpbmQoaW5zdCkKKyAgICB9OworCisgICAg
aWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgaW5zdC5fd3JhcHBl
clN0YXRlLmNvbnRyb2xsZWQgPSBpc0NvbnRyb2xsZWQocHJvcHMpOworICAgIH0KKyAgfSwKKwor
ICB1cGRhdGVXcmFwcGVyOiBmdW5jdGlvbiAoaW5zdCkgeworICAgIHZhciBwcm9wcyA9IGluc3Qu
X2N1cnJlbnRFbGVtZW50LnByb3BzOworCisgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9k
dWN0aW9uJykgeworICAgICAgdmFyIGNvbnRyb2xsZWQgPSBpc0NvbnRyb2xsZWQocHJvcHMpOwor
ICAgICAgdmFyIG93bmVyID0gaW5zdC5fY3VycmVudEVsZW1lbnQuX293bmVyOworCisgICAgICBp
ZiAoIWluc3QuX3dyYXBwZXJTdGF0ZS5jb250cm9sbGVkICYmIGNvbnRyb2xsZWQgJiYgIWRpZFdh
cm5VbmNvbnRyb2xsZWRUb0NvbnRyb2xsZWQpIHsKKyAgICAgICAgImRldmVsb3BtZW50IiAhPT0g
J3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJyVzIGlzIGNoYW5naW5nIGFuIHVuY29udHJv
bGxlZCBpbnB1dCBvZiB0eXBlICVzIHRvIGJlIGNvbnRyb2xsZWQuICcgKyAnSW5wdXQgZWxlbWVu
dHMgc2hvdWxkIG5vdCBzd2l0Y2ggZnJvbSB1bmNvbnRyb2xsZWQgdG8gY29udHJvbGxlZCAob3Ig
dmljZSB2ZXJzYSkuICcgKyAnRGVjaWRlIGJldHdlZW4gdXNpbmcgYSBjb250cm9sbGVkIG9yIHVu
Y29udHJvbGxlZCBpbnB1dCAnICsgJ2VsZW1lbnQgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgY29t
cG9uZW50LiBNb3JlIGluZm86IGh0dHBzOi8vZmIubWUvcmVhY3QtY29udHJvbGxlZC1jb21wb25l
bnRzJywgb3duZXIgJiYgb3duZXIuZ2V0TmFtZSgpIHx8ICdBIGNvbXBvbmVudCcsIHByb3BzLnR5
cGUpIDogdm9pZCAwOworICAgICAgICBkaWRXYXJuVW5jb250cm9sbGVkVG9Db250cm9sbGVkID0g
dHJ1ZTsKKyAgICAgIH0KKyAgICAgIGlmIChpbnN0Ll93cmFwcGVyU3RhdGUuY29udHJvbGxlZCAm
JiAhY29udHJvbGxlZCAmJiAhZGlkV2FybkNvbnRyb2xsZWRUb1VuY29udHJvbGxlZCkgeworICAg
ICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnJXMg
aXMgY2hhbmdpbmcgYSBjb250cm9sbGVkIGlucHV0IG9mIHR5cGUgJXMgdG8gYmUgdW5jb250cm9s
bGVkLiAnICsgJ0lucHV0IGVsZW1lbnRzIHNob3VsZCBub3Qgc3dpdGNoIGZyb20gY29udHJvbGxl
ZCB0byB1bmNvbnRyb2xsZWQgKG9yIHZpY2UgdmVyc2EpLiAnICsgJ0RlY2lkZSBiZXR3ZWVuIHVz
aW5nIGEgY29udHJvbGxlZCBvciB1bmNvbnRyb2xsZWQgaW5wdXQgJyArICdlbGVtZW50IGZvciB0
aGUgbGlmZXRpbWUgb2YgdGhlIGNvbXBvbmVudC4gTW9yZSBpbmZvOiBodHRwczovL2ZiLm1lL3Jl
YWN0LWNvbnRyb2xsZWQtY29tcG9uZW50cycsIG93bmVyICYmIG93bmVyLmdldE5hbWUoKSB8fCAn
QSBjb21wb25lbnQnLCBwcm9wcy50eXBlKSA6IHZvaWQgMDsKKyAgICAgICAgZGlkV2FybkNvbnRy
b2xsZWRUb1VuY29udHJvbGxlZCA9IHRydWU7CisgICAgICB9CisgICAgfQorCisgICAgLy8gVE9E
TzogU2hvdWxkbid0IHRoaXMgYmUgZ2V0Q2hlY2tlZChwcm9wcyk/CisgICAgdmFyIGNoZWNrZWQg
PSBwcm9wcy5jaGVja2VkOworICAgIGlmIChjaGVja2VkICE9IG51bGwpIHsKKyAgICAgIERPTVBy
b3BlcnR5T3BlcmF0aW9ucy5zZXRWYWx1ZUZvclByb3BlcnR5KFJlYWN0RE9NQ29tcG9uZW50VHJl
ZS5nZXROb2RlRnJvbUluc3RhbmNlKGluc3QpLCAnY2hlY2tlZCcsIGNoZWNrZWQgfHwgZmFsc2Up
OworICAgIH0KKworICAgIHZhciBub2RlID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVG
cm9tSW5zdGFuY2UoaW5zdCk7CisgICAgdmFyIHZhbHVlID0gTGlua2VkVmFsdWVVdGlscy5nZXRW
YWx1ZShwcm9wcyk7CisgICAgaWYgKHZhbHVlICE9IG51bGwpIHsKKworICAgICAgLy8gQ2FzdCBg
dmFsdWVgIHRvIGEgc3RyaW5nIHRvIGVuc3VyZSB0aGUgdmFsdWUgaXMgc2V0IGNvcnJlY3RseS4g
V2hpbGUKKyAgICAgIC8vIGJyb3dzZXJzIHR5cGljYWxseSBkbyB0aGlzIGFzIG5lY2Vzc2FyeSwg
anNkb20gZG9lc24ndC4KKyAgICAgIHZhciBuZXdWYWx1ZSA9ICcnICsgdmFsdWU7CisKKyAgICAg
IC8vIFRvIGF2b2lkIHNpZGUgZWZmZWN0cyAoc3VjaCBhcyBsb3NpbmcgdGV4dCBzZWxlY3Rpb24p
LCBvbmx5IHNldCB2YWx1ZSBpZiBjaGFuZ2VkCisgICAgICBpZiAobmV3VmFsdWUgIT09IG5vZGUu
dmFsdWUpIHsKKyAgICAgICAgbm9kZS52YWx1ZSA9IG5ld1ZhbHVlOworICAgICAgfQorICAgIH0g
ZWxzZSB7CisgICAgICBpZiAocHJvcHMudmFsdWUgPT0gbnVsbCAmJiBwcm9wcy5kZWZhdWx0VmFs
dWUgIT0gbnVsbCkgeworICAgICAgICBub2RlLmRlZmF1bHRWYWx1ZSA9ICcnICsgcHJvcHMuZGVm
YXVsdFZhbHVlOworICAgICAgfQorICAgICAgaWYgKHByb3BzLmNoZWNrZWQgPT0gbnVsbCAmJiBw
cm9wcy5kZWZhdWx0Q2hlY2tlZCAhPSBudWxsKSB7CisgICAgICAgIG5vZGUuZGVmYXVsdENoZWNr
ZWQgPSAhIXByb3BzLmRlZmF1bHRDaGVja2VkOworICAgICAgfQorICAgIH0KKyAgfSwKKworICBw
b3N0TW91bnRXcmFwcGVyOiBmdW5jdGlvbiAoaW5zdCkgeworICAgIHZhciBwcm9wcyA9IGluc3Qu
X2N1cnJlbnRFbGVtZW50LnByb3BzOworCisgICAgLy8gVGhpcyBpcyBpbiBwb3N0TW91bnQgYmVj
YXVzZSB3ZSBuZWVkIGFjY2VzcyB0byB0aGUgRE9NIG5vZGUsIHdoaWNoIGlzIG5vdAorICAgIC8v
IGF2YWlsYWJsZSB1bnRpbCBhZnRlciB0aGUgY29tcG9uZW50IGhhcyBtb3VudGVkLgorICAgIHZh
ciBub2RlID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCk7
CisKKyAgICAvLyBEZXRhY2ggdmFsdWUgZnJvbSBkZWZhdWx0VmFsdWUuIFdlIHdvbid0IGRvIGFu
eXRoaW5nIGlmIHdlJ3JlIHdvcmtpbmcgb24KKyAgICAvLyBzdWJtaXQgb3IgcmVzZXQgaW5wdXRz
IGFzIHRob3NlIHZhbHVlcyAmIGRlZmF1bHRWYWx1ZXMgYXJlIGxpbmtlZC4gVGhleQorICAgIC8v
IGFyZSBub3QgcmVzZXRhYmxlIG5vZGVzIHNvIHRoaXMgb3BlcmF0aW9uIGRvZXNuJ3QgbWF0dGVy
IGFuZCBhY3R1YWxseQorICAgIC8vIHJlbW92ZXMgYnJvd3Nlci1kZWZhdWx0IHZhbHVlcyAoZWcg
IlN1Ym1pdCBRdWVyeSIpIHdoZW4gbm8gdmFsdWUgaXMKKyAgICAvLyBwcm92aWRlZC4KKworICAg
IHN3aXRjaCAocHJvcHMudHlwZSkgeworICAgICAgY2FzZSAnc3VibWl0JzoKKyAgICAgIGNhc2Ug
J3Jlc2V0JzoKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICdjb2xvcic6CisgICAgICBjYXNl
ICdkYXRlJzoKKyAgICAgIGNhc2UgJ2RhdGV0aW1lJzoKKyAgICAgIGNhc2UgJ2RhdGV0aW1lLWxv
Y2FsJzoKKyAgICAgIGNhc2UgJ21vbnRoJzoKKyAgICAgIGNhc2UgJ3RpbWUnOgorICAgICAgY2Fz
ZSAnd2Vlayc6CisgICAgICAgIC8vIFRoaXMgZml4ZXMgdGhlIG5vLXNob3cgaXNzdWUgb24gaU9T
IFNhZmFyaSBhbmQgQW5kcm9pZCBDaHJvbWU6CisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNv
bS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvNzIzMworICAgICAgICBub2RlLnZhbHVlID0gJyc7Cisg
ICAgICAgIG5vZGUudmFsdWUgPSBub2RlLmRlZmF1bHRWYWx1ZTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgICBkZWZhdWx0OgorICAgICAgICBub2RlLnZhbHVlID0gbm9kZS52YWx1ZTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorCisgICAgLy8gTm9ybWFsbHksIHdlJ2QganVzdCBkbyBgbm9kZS5jaGVj
a2VkID0gbm9kZS5jaGVja2VkYCB1cG9uIGluaXRpYWwgbW91bnQsIGxlc3MgdGhpcyBidWcKKyAg
ICAvLyB0aGlzIGlzIG5lZWRlZCB0byB3b3JrIGFyb3VuZCBhIGNocm9tZSBidWcgd2hlcmUgc2V0
dGluZyBkZWZhdWx0Q2hlY2tlZAorICAgIC8vIHdpbGwgc29tZXRpbWVzIGluZmx1ZW5jZSB0aGUg
dmFsdWUgb2YgY2hlY2tlZCAoZXZlbiBhZnRlciBkZXRhY2htZW50KS4KKyAgICAvLyBSZWZlcmVu
Y2U6IGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lk
PTYwODQxNgorICAgIC8vIFdlIG5lZWQgdG8gdGVtcG9yYXJpbHkgdW5zZXQgbmFtZSB0byBhdm9p
ZCBkaXNydXB0aW5nIHJhZGlvIGJ1dHRvbiBncm91cHMuCisgICAgdmFyIG5hbWUgPSBub2RlLm5h
bWU7CisgICAgaWYgKG5hbWUgIT09ICcnKSB7CisgICAgICBub2RlLm5hbWUgPSAnJzsKKyAgICB9
CisgICAgbm9kZS5kZWZhdWx0Q2hlY2tlZCA9ICFub2RlLmRlZmF1bHRDaGVja2VkOworICAgIG5v
ZGUuZGVmYXVsdENoZWNrZWQgPSAhbm9kZS5kZWZhdWx0Q2hlY2tlZDsKKyAgICBpZiAobmFtZSAh
PT0gJycpIHsKKyAgICAgIG5vZGUubmFtZSA9IG5hbWU7CisgICAgfQorICB9Cit9OworCitmdW5j
dGlvbiBfaGFuZGxlQ2hhbmdlKGV2ZW50KSB7CisgIHZhciBwcm9wcyA9IHRoaXMuX2N1cnJlbnRF
bGVtZW50LnByb3BzOworCisgIHZhciByZXR1cm5WYWx1ZSA9IExpbmtlZFZhbHVlVXRpbHMuZXhl
Y3V0ZU9uQ2hhbmdlKHByb3BzLCBldmVudCk7CisKKyAgLy8gSGVyZSB3ZSB1c2UgYXNhcCB0byB3
YWl0IHVudGlsIGFsbCB1cGRhdGVzIGhhdmUgcHJvcGFnYXRlZCwgd2hpY2gKKyAgLy8gaXMgaW1w
b3J0YW50IHdoZW4gdXNpbmcgY29udHJvbGxlZCBjb21wb25lbnRzIHdpdGhpbiBsYXllcnM6Cisg
IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvMTY5OAorICBSZWFj
dFVwZGF0ZXMuYXNhcChmb3JjZVVwZGF0ZUlmTW91bnRlZCwgdGhpcyk7CisKKyAgdmFyIG5hbWUg
PSBwcm9wcy5uYW1lOworICBpZiAocHJvcHMudHlwZSA9PT0gJ3JhZGlvJyAmJiBuYW1lICE9IG51
bGwpIHsKKyAgICB2YXIgcm9vdE5vZGUgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZy
b21JbnN0YW5jZSh0aGlzKTsKKyAgICB2YXIgcXVlcnlSb290ID0gcm9vdE5vZGU7CisKKyAgICB3
aGlsZSAocXVlcnlSb290LnBhcmVudE5vZGUpIHsKKyAgICAgIHF1ZXJ5Um9vdCA9IHF1ZXJ5Um9v
dC5wYXJlbnROb2RlOworICAgIH0KKworICAgIC8vIElmIGByb290Tm9kZS5mb3JtYCB3YXMgbm9u
LW51bGwsIHRoZW4gd2UgY291bGQgdHJ5IGBmb3JtLmVsZW1lbnRzYCwKKyAgICAvLyBidXQgdGhh
dCBzb21ldGltZXMgYmVoYXZlcyBzdHJhbmdlbHkgaW4gSUU4LiBXZSBjb3VsZCBhbHNvIHRyeSB1
c2luZworICAgIC8vIGBmb3JtLmdldEVsZW1lbnRzQnlOYW1lYCwgYnV0IHRoYXQgd2lsbCBvbmx5
IHJldHVybiBkaXJlY3QgY2hpbGRyZW4KKyAgICAvLyBhbmQgd29uJ3QgaW5jbHVkZSBpbnB1dHMg
dGhhdCB1c2UgdGhlIEhUTUw1IGBmb3JtPWAgYXR0cmlidXRlLiBTaW5jZQorICAgIC8vIHRoZSBp
bnB1dCBtaWdodCBub3QgZXZlbiBiZSBpbiBhIGZvcm0sIGxldCdzIGp1c3QgdXNlIHRoZSBnbG9i
YWwKKyAgICAvLyBgcXVlcnlTZWxlY3RvckFsbGAgdG8gZW5zdXJlIHdlIGRvbid0IG1pc3MgYW55
dGhpbmcuCisgICAgdmFyIGdyb3VwID0gcXVlcnlSb290LnF1ZXJ5U2VsZWN0b3JBbGwoJ2lucHV0
W25hbWU9JyArIEpTT04uc3RyaW5naWZ5KCcnICsgbmFtZSkgKyAnXVt0eXBlPSJyYWRpbyJdJyk7
CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGdyb3VwLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgb3RoZXJOb2RlID0gZ3JvdXBbaV07CisgICAgICBpZiAob3RoZXJOb2RlID09PSByb290Tm9k
ZSB8fCBvdGhlck5vZGUuZm9ybSAhPT0gcm9vdE5vZGUuZm9ybSkgeworICAgICAgICBjb250aW51
ZTsKKyAgICAgIH0KKyAgICAgIC8vIFRoaXMgd2lsbCB0aHJvdyBpZiByYWRpbyBidXR0b25zIHJl
bmRlcmVkIGJ5IGRpZmZlcmVudCBjb3BpZXMgb2YgUmVhY3QKKyAgICAgIC8vIGFuZCB0aGUgc2Ft
ZSBuYW1lIGFyZSByZW5kZXJlZCBpbnRvIHRoZSBzYW1lIGZvcm0gKHNhbWUgYXMgIzE5MzkpLgor
ICAgICAgLy8gVGhhdCdzIHByb2JhYmx5IG9rYXk7IHdlIGRvbid0IHN1cHBvcnQgaXQganVzdCBh
cyB3ZSBkb24ndCBzdXBwb3J0CisgICAgICAvLyBtaXhpbmcgUmVhY3QgcmFkaW8gYnV0dG9ucyB3
aXRoIG5vbi1SZWFjdCBvbmVzLgorICAgICAgdmFyIG90aGVySW5zdGFuY2UgPSBSZWFjdERPTUNv
bXBvbmVudFRyZWUuZ2V0SW5zdGFuY2VGcm9tTm9kZShvdGhlck5vZGUpOworICAgICAgIW90aGVy
SW5zdGFuY2UgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFs
c2UsICdSZWFjdERPTUlucHV0OiBNaXhpbmcgUmVhY3QgYW5kIG5vbi1SZWFjdCByYWRpbyBpbnB1
dHMgd2l0aCB0aGUgc2FtZSBgbmFtZWAgaXMgbm90IHN1cHBvcnRlZC4nKSA6IF9wcm9kSW52YXJp
YW50KCc5MCcpIDogdm9pZCAwOworICAgICAgLy8gSWYgdGhpcyBpcyBhIGNvbnRyb2xsZWQgcmFk
aW8gYnV0dG9uIGdyb3VwLCBmb3JjaW5nIHRoZSBpbnB1dCB0aGF0CisgICAgICAvLyB3YXMgcHJl
dmlvdXNseSBjaGVja2VkIHRvIHVwZGF0ZSB3aWxsIGNhdXNlIGl0IHRvIGJlIGNvbWUgcmUtY2hl
Y2tlZAorICAgICAgLy8gYXMgYXBwcm9wcmlhdGUuCisgICAgICBSZWFjdFVwZGF0ZXMuYXNhcChm
b3JjZVVwZGF0ZUlmTW91bnRlZCwgb3RoZXJJbnN0YW5jZSk7CisgICAgfQorICB9CisKKyAgcmV0
dXJuIHJldHVyblZhbHVlOworfQorCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9NSW5wdXQ7Cit9
LHsiMTIiOjEyLCIxMjUiOjEyNSwiMTUwIjoxNTAsIjE1NyI6MTU3LCIxNTgiOjE1OCwiMjQiOjI0
LCIzNCI6MzQsIjgyIjo4Mn1dLDQwOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsK
Ky8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRl
ciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3Jh
bnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUg
aW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBE
T01Qcm9wZXJ0eSA9IF9kZXJlcV8oMTEpOwordmFyIFJlYWN0Q29tcG9uZW50VHJlZUhvb2sgPSBf
ZGVyZXFfKDEzMik7CisKK3ZhciB3YXJuaW5nID0gX2RlcmVxXygxNTcpOworCit2YXIgd2FybmVk
UHJvcGVydGllcyA9IHt9OwordmFyIHJBUklBID0gbmV3IFJlZ0V4cCgnXihhcmlhKS1bJyArIERP
TVByb3BlcnR5LkFUVFJJQlVURV9OQU1FX0NIQVIgKyAnXSokJyk7CisKK2Z1bmN0aW9uIHZhbGlk
YXRlUHJvcGVydHkodGFnTmFtZSwgbmFtZSwgZGVidWdJRCkgeworICBpZiAod2FybmVkUHJvcGVy
dGllcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSAmJiB3YXJuZWRQcm9wZXJ0aWVzW25hbWVdKSB7Cisg
ICAgcmV0dXJuIHRydWU7CisgIH0KKworICBpZiAockFSSUEudGVzdChuYW1lKSkgeworICAgIHZh
ciBsb3dlckNhc2VkTmFtZSA9IG5hbWUudG9Mb3dlckNhc2UoKTsKKyAgICB2YXIgc3RhbmRhcmRO
YW1lID0gRE9NUHJvcGVydHkuZ2V0UG9zc2libGVTdGFuZGFyZE5hbWUuaGFzT3duUHJvcGVydHko
bG93ZXJDYXNlZE5hbWUpID8gRE9NUHJvcGVydHkuZ2V0UG9zc2libGVTdGFuZGFyZE5hbWVbbG93
ZXJDYXNlZE5hbWVdIDogbnVsbDsKKworICAgIC8vIElmIHRoaXMgaXMgYW4gYXJpYS0qIGF0dHJp
YnV0ZSwgYnV0IGlzIG5vdCBsaXN0ZWQgaW4gdGhlIGtub3duIERPTQorICAgIC8vIERPTSBwcm9w
ZXJ0aWVzLCB0aGVuIGl0IGlzIGFuIGludmFsaWQgYXJpYS0qIGF0dHJpYnV0ZS4KKyAgICBpZiAo
c3RhbmRhcmROYW1lID09IG51bGwpIHsKKyAgICAgIHdhcm5lZFByb3BlcnRpZXNbbmFtZV0gPSB0
cnVlOworICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAvLyBhcmlhLSogYXR0cmlidXRl
cyBzaG91bGQgYmUgbG93ZXJjYXNlOyBzdWdnZXN0IHRoZSBsb3dlcmNhc2UgdmVyc2lvbi4KKyAg
ICBpZiAobmFtZSAhPT0gc3RhbmRhcmROYW1lKSB7CisgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAn
cHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnVW5rbm93biBBUklBIGF0dHJpYnV0ZSAlcy4g
RGlkIHlvdSBtZWFuICVzPyVzJywgbmFtZSwgc3RhbmRhcmROYW1lLCBSZWFjdENvbXBvbmVudFRy
ZWVIb29rLmdldFN0YWNrQWRkZW5kdW1CeUlEKGRlYnVnSUQpKSA6IHZvaWQgMDsKKyAgICAgIHdh
cm5lZFByb3BlcnRpZXNbbmFtZV0gPSB0cnVlOworICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
ICB9CisKKyAgcmV0dXJuIHRydWU7Cit9CisKK2Z1bmN0aW9uIHdhcm5JbnZhbGlkQVJJQVByb3Bz
KGRlYnVnSUQsIGVsZW1lbnQpIHsKKyAgdmFyIGludmFsaWRQcm9wcyA9IFtdOworCisgIGZvciAo
dmFyIGtleSBpbiBlbGVtZW50LnByb3BzKSB7CisgICAgdmFyIGlzVmFsaWQgPSB2YWxpZGF0ZVBy
b3BlcnR5KGVsZW1lbnQudHlwZSwga2V5LCBkZWJ1Z0lEKTsKKyAgICBpZiAoIWlzVmFsaWQpIHsK
KyAgICAgIGludmFsaWRQcm9wcy5wdXNoKGtleSk7CisgICAgfQorICB9CisKKyAgdmFyIHVua25v
d25Qcm9wU3RyaW5nID0gaW52YWxpZFByb3BzLm1hcChmdW5jdGlvbiAocHJvcCkgeworICAgIHJl
dHVybiAnYCcgKyBwcm9wICsgJ2AnOworICB9KS5qb2luKCcsICcpOworCisgIGlmIChpbnZhbGlk
UHJvcHMubGVuZ3RoID09PSAxKSB7CisgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24n
ID8gd2FybmluZyhmYWxzZSwgJ0ludmFsaWQgYXJpYSBwcm9wICVzIG9uIDwlcz4gdGFnLiAnICsg
J0ZvciBkZXRhaWxzLCBzZWUgaHR0cHM6Ly9mYi5tZS9pbnZhbGlkLWFyaWEtcHJvcCVzJywgdW5r
bm93blByb3BTdHJpbmcsIGVsZW1lbnQudHlwZSwgUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRT
dGFja0FkZGVuZHVtQnlJRChkZWJ1Z0lEKSkgOiB2b2lkIDA7CisgIH0gZWxzZSBpZiAoaW52YWxp
ZFByb3BzLmxlbmd0aCA+IDEpIHsKKyAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicg
PyB3YXJuaW5nKGZhbHNlLCAnSW52YWxpZCBhcmlhIHByb3BzICVzIG9uIDwlcz4gdGFnLiAnICsg
J0ZvciBkZXRhaWxzLCBzZWUgaHR0cHM6Ly9mYi5tZS9pbnZhbGlkLWFyaWEtcHJvcCVzJywgdW5r
bm93blByb3BTdHJpbmcsIGVsZW1lbnQudHlwZSwgUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRT
dGFja0FkZGVuZHVtQnlJRChkZWJ1Z0lEKSkgOiB2b2lkIDA7CisgIH0KK30KKworZnVuY3Rpb24g
aGFuZGxlRWxlbWVudChkZWJ1Z0lELCBlbGVtZW50KSB7CisgIGlmIChlbGVtZW50ID09IG51bGwg
fHwgdHlwZW9mIGVsZW1lbnQudHlwZSAhPT0gJ3N0cmluZycpIHsKKyAgICByZXR1cm47CisgIH0K
KyAgaWYgKGVsZW1lbnQudHlwZS5pbmRleE9mKCctJykgPj0gMCB8fCBlbGVtZW50LnByb3BzLmlz
KSB7CisgICAgcmV0dXJuOworICB9CisKKyAgd2FybkludmFsaWRBUklBUHJvcHMoZGVidWdJRCwg
ZWxlbWVudCk7Cit9CisKK3ZhciBSZWFjdERPTUludmFsaWRBUklBSG9vayA9IHsKKyAgb25CZWZv
cmVNb3VudENvbXBvbmVudDogZnVuY3Rpb24gKGRlYnVnSUQsIGVsZW1lbnQpIHsKKyAgICBpZiAo
ImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICBoYW5kbGVFbGVtZW50KGRl
YnVnSUQsIGVsZW1lbnQpOworICAgIH0KKyAgfSwKKyAgb25CZWZvcmVVcGRhdGVDb21wb25lbnQ6
IGZ1bmN0aW9uIChkZWJ1Z0lELCBlbGVtZW50KSB7CisgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09
ICdwcm9kdWN0aW9uJykgeworICAgICAgaGFuZGxlRWxlbWVudChkZWJ1Z0lELCBlbGVtZW50KTsK
KyAgICB9CisgIH0KK307CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RET01JbnZhbGlkQVJJQUhv
b2s7Cit9LHsiMTEiOjExLCIxMzIiOjEzMiwiMTU3IjoxNTd9XSw0MTpbZnVuY3Rpb24oX2RlcmVx
Xyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNv
ZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQor
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBp
biB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3Vz
ZSBzdHJpY3QnOworCit2YXIgUmVhY3RDb21wb25lbnRUcmVlSG9vayA9IF9kZXJlcV8oMTMyKTsK
KwordmFyIHdhcm5pbmcgPSBfZGVyZXFfKDE1Nyk7CisKK3ZhciBkaWRXYXJuVmFsdWVOdWxsID0g
ZmFsc2U7CisKK2Z1bmN0aW9uIGhhbmRsZUVsZW1lbnQoZGVidWdJRCwgZWxlbWVudCkgeworICBp
ZiAoZWxlbWVudCA9PSBudWxsKSB7CisgICAgcmV0dXJuOworICB9CisgIGlmIChlbGVtZW50LnR5
cGUgIT09ICdpbnB1dCcgJiYgZWxlbWVudC50eXBlICE9PSAndGV4dGFyZWEnICYmIGVsZW1lbnQu
dHlwZSAhPT0gJ3NlbGVjdCcpIHsKKyAgICByZXR1cm47CisgIH0KKyAgaWYgKGVsZW1lbnQucHJv
cHMgIT0gbnVsbCAmJiBlbGVtZW50LnByb3BzLnZhbHVlID09PSBudWxsICYmICFkaWRXYXJuVmFs
dWVOdWxsKSB7CisgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhm
YWxzZSwgJ2B2YWx1ZWAgcHJvcCBvbiBgJXNgIHNob3VsZCBub3QgYmUgbnVsbC4gJyArICdDb25z
aWRlciB1c2luZyB0aGUgZW1wdHkgc3RyaW5nIHRvIGNsZWFyIHRoZSBjb21wb25lbnQgb3IgYHVu
ZGVmaW5lZGAgJyArICdmb3IgdW5jb250cm9sbGVkIGNvbXBvbmVudHMuJXMnLCBlbGVtZW50LnR5
cGUsIFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0U3RhY2tBZGRlbmR1bUJ5SUQoZGVidWdJRCkp
IDogdm9pZCAwOworCisgICAgZGlkV2FyblZhbHVlTnVsbCA9IHRydWU7CisgIH0KK30KKwordmFy
IFJlYWN0RE9NTnVsbElucHV0VmFsdWVQcm9wSG9vayA9IHsKKyAgb25CZWZvcmVNb3VudENvbXBv
bmVudDogZnVuY3Rpb24gKGRlYnVnSUQsIGVsZW1lbnQpIHsKKyAgICBoYW5kbGVFbGVtZW50KGRl
YnVnSUQsIGVsZW1lbnQpOworICB9LAorICBvbkJlZm9yZVVwZGF0ZUNvbXBvbmVudDogZnVuY3Rp
b24gKGRlYnVnSUQsIGVsZW1lbnQpIHsKKyAgICBoYW5kbGVFbGVtZW50KGRlYnVnSUQsIGVsZW1l
bnQpOworICB9Cit9OworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9NTnVsbElucHV0VmFsdWVQ
cm9wSG9vazsKK30seyIxMzIiOjEzMiwiMTU3IjoxNTd9XSw0MjpbZnVuY3Rpb24oX2RlcmVxXyxt
b2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29r
LCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUg
aXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICog
TElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBB
biBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0
aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBz
dHJpY3QnOworCit2YXIgX2Fzc2lnbiA9IF9kZXJlcV8oMTU4KTsKKwordmFyIFJlYWN0ID0gX2Rl
cmVxXygxMzQpOwordmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IF9kZXJlcV8oMzQpOwordmFy
IFJlYWN0RE9NU2VsZWN0ID0gX2RlcmVxXyg0Myk7CisKK3ZhciB3YXJuaW5nID0gX2RlcmVxXygx
NTcpOwordmFyIGRpZFdhcm5JbnZhbGlkT3B0aW9uQ2hpbGRyZW4gPSBmYWxzZTsKKworZnVuY3Rp
b24gZmxhdHRlbkNoaWxkcmVuKGNoaWxkcmVuKSB7CisgIHZhciBjb250ZW50ID0gJyc7CisKKyAg
Ly8gRmxhdHRlbiBjaGlsZHJlbiBhbmQgd2FybiBpZiB0aGV5IGFyZW4ndCBzdHJpbmdzIG9yIG51
bWJlcnM7CisgIC8vIGludmFsaWQgdHlwZXMgYXJlIGlnbm9yZWQuCisgIFJlYWN0LkNoaWxkcmVu
LmZvckVhY2goY2hpbGRyZW4sIGZ1bmN0aW9uIChjaGlsZCkgeworICAgIGlmIChjaGlsZCA9PSBu
dWxsKSB7CisgICAgICByZXR1cm47CisgICAgfQorICAgIGlmICh0eXBlb2YgY2hpbGQgPT09ICdz
dHJpbmcnIHx8IHR5cGVvZiBjaGlsZCA9PT0gJ251bWJlcicpIHsKKyAgICAgIGNvbnRlbnQgKz0g
Y2hpbGQ7CisgICAgfSBlbHNlIGlmICghZGlkV2FybkludmFsaWRPcHRpb25DaGlsZHJlbikgewor
ICAgICAgZGlkV2FybkludmFsaWRPcHRpb25DaGlsZHJlbiA9IHRydWU7CisgICAgICAiZGV2ZWxv
cG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnT25seSBzdHJpbmdzIGFu
ZCBudW1iZXJzIGFyZSBzdXBwb3J0ZWQgYXMgPG9wdGlvbj4gY2hpbGRyZW4uJykgOiB2b2lkIDA7
CisgICAgfQorICB9KTsKKworICByZXR1cm4gY29udGVudDsKK30KKworLyoqCisgKiBJbXBsZW1l
bnRzIGFuIDxvcHRpb24+IGhvc3QgY29tcG9uZW50IHRoYXQgd2FybnMgd2hlbiBgc2VsZWN0ZWRg
IGlzIHNldC4KKyAqLwordmFyIFJlYWN0RE9NT3B0aW9uID0geworICBtb3VudFdyYXBwZXI6IGZ1
bmN0aW9uIChpbnN0LCBwcm9wcywgaG9zdFBhcmVudCkgeworICAgIC8vIFRPRE8gKHl1bmdzdGVy
cyk6IFJlbW92ZSBzdXBwb3J0IGZvciBgc2VsZWN0ZWRgIGluIDxvcHRpb24+LgorICAgIGlmICgi
ZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICJkZXZlbG9wbWVudCIgIT09
ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcocHJvcHMuc2VsZWN0ZWQgPT0gbnVsbCwgJ1VzZSB0aGUg
YGRlZmF1bHRWYWx1ZWAgb3IgYHZhbHVlYCBwcm9wcyBvbiA8c2VsZWN0PiBpbnN0ZWFkIG9mICcg
KyAnc2V0dGluZyBgc2VsZWN0ZWRgIG9uIDxvcHRpb24+LicpIDogdm9pZCAwOworICAgIH0KKwor
ICAgIC8vIExvb2sgdXAgd2hldGhlciB0aGlzIG9wdGlvbiBpcyAnc2VsZWN0ZWQnCisgICAgdmFy
IHNlbGVjdFZhbHVlID0gbnVsbDsKKyAgICBpZiAoaG9zdFBhcmVudCAhPSBudWxsKSB7CisgICAg
ICB2YXIgc2VsZWN0UGFyZW50ID0gaG9zdFBhcmVudDsKKworICAgICAgaWYgKHNlbGVjdFBhcmVu
dC5fdGFnID09PSAnb3B0Z3JvdXAnKSB7CisgICAgICAgIHNlbGVjdFBhcmVudCA9IHNlbGVjdFBh
cmVudC5faG9zdFBhcmVudDsKKyAgICAgIH0KKworICAgICAgaWYgKHNlbGVjdFBhcmVudCAhPSBu
dWxsICYmIHNlbGVjdFBhcmVudC5fdGFnID09PSAnc2VsZWN0JykgeworICAgICAgICBzZWxlY3RW
YWx1ZSA9IFJlYWN0RE9NU2VsZWN0LmdldFNlbGVjdFZhbHVlQ29udGV4dChzZWxlY3RQYXJlbnQp
OworICAgICAgfQorICAgIH0KKworICAgIC8vIElmIHRoZSB2YWx1ZSBpcyBudWxsIChlLmcuLCBu
byBzcGVjaWZpZWQgdmFsdWUgb3IgYWZ0ZXIgaW5pdGlhbCBtb3VudCkKKyAgICAvLyBvciBtaXNz
aW5nIChlLmcuLCBmb3IgPGRhdGFsaXN0PiksIHdlIGRvbid0IGNoYW5nZSBwcm9wcy5zZWxlY3Rl
ZAorICAgIHZhciBzZWxlY3RlZCA9IG51bGw7CisgICAgaWYgKHNlbGVjdFZhbHVlICE9IG51bGwp
IHsKKyAgICAgIHZhciB2YWx1ZTsKKyAgICAgIGlmIChwcm9wcy52YWx1ZSAhPSBudWxsKSB7Cisg
ICAgICAgIHZhbHVlID0gcHJvcHMudmFsdWUgKyAnJzsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHZhbHVlID0gZmxhdHRlbkNoaWxkcmVuKHByb3BzLmNoaWxkcmVuKTsKKyAgICAgIH0KKyAgICAg
IHNlbGVjdGVkID0gZmFsc2U7CisgICAgICBpZiAoQXJyYXkuaXNBcnJheShzZWxlY3RWYWx1ZSkp
IHsKKyAgICAgICAgLy8gbXVsdGlwbGUKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWxl
Y3RWYWx1ZS5sZW5ndGg7IGkrKykgeworICAgICAgICAgIGlmICgnJyArIHNlbGVjdFZhbHVlW2ld
ID09PSB2YWx1ZSkgeworICAgICAgICAgICAgc2VsZWN0ZWQgPSB0cnVlOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9IGVsc2UgeworICAgICAgICBz
ZWxlY3RlZCA9ICcnICsgc2VsZWN0VmFsdWUgPT09IHZhbHVlOworICAgICAgfQorICAgIH0KKwor
ICAgIGluc3QuX3dyYXBwZXJTdGF0ZSA9IHsgc2VsZWN0ZWQ6IHNlbGVjdGVkIH07CisgIH0sCisK
KyAgcG9zdE1vdW50V3JhcHBlcjogZnVuY3Rpb24gKGluc3QpIHsKKyAgICAvLyB2YWx1ZT0iIiBz
aG91bGQgbWFrZSBhIHZhbHVlIGF0dHJpYnV0ZSAoIzYyMTkpCisgICAgdmFyIHByb3BzID0gaW5z
dC5fY3VycmVudEVsZW1lbnQucHJvcHM7CisgICAgaWYgKHByb3BzLnZhbHVlICE9IG51bGwpIHsK
KyAgICAgIHZhciBub2RlID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFu
Y2UoaW5zdCk7CisgICAgICBub2RlLnNldEF0dHJpYnV0ZSgndmFsdWUnLCBwcm9wcy52YWx1ZSk7
CisgICAgfQorICB9LAorCisgIGdldEhvc3RQcm9wczogZnVuY3Rpb24gKGluc3QsIHByb3BzKSB7
CisgICAgdmFyIGhvc3RQcm9wcyA9IF9hc3NpZ24oeyBzZWxlY3RlZDogdW5kZWZpbmVkLCBjaGls
ZHJlbjogdW5kZWZpbmVkIH0sIHByb3BzKTsKKworICAgIC8vIFJlYWQgc3RhdGUgb25seSBmcm9t
IGluaXRpYWwgbW91bnQgYmVjYXVzZSA8c2VsZWN0PiB1cGRhdGVzIHZhbHVlCisgICAgLy8gbWFu
dWFsbHk7IHdlIG5lZWQgdGhlIGluaXRpYWwgc3RhdGUgb25seSBmb3Igc2VydmVyIHJlbmRlcmlu
ZworICAgIGlmIChpbnN0Ll93cmFwcGVyU3RhdGUuc2VsZWN0ZWQgIT0gbnVsbCkgeworICAgICAg
aG9zdFByb3BzLnNlbGVjdGVkID0gaW5zdC5fd3JhcHBlclN0YXRlLnNlbGVjdGVkOworICAgIH0K
KworICAgIHZhciBjb250ZW50ID0gZmxhdHRlbkNoaWxkcmVuKHByb3BzLmNoaWxkcmVuKTsKKwor
ICAgIGlmIChjb250ZW50KSB7CisgICAgICBob3N0UHJvcHMuY2hpbGRyZW4gPSBjb250ZW50Owor
ICAgIH0KKworICAgIHJldHVybiBob3N0UHJvcHM7CisgIH0KKworfTsKKworbW9kdWxlLmV4cG9y
dHMgPSBSZWFjdERPTU9wdGlvbjsKK30seyIxMzQiOjEzNCwiMTU3IjoxNTcsIjE1OCI6MTU4LCIz
NCI6MzQsIjQzIjo0M31dLDQzOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8q
KgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQK
KyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBfYXNz
aWduID0gX2RlcmVxXygxNTgpOworCit2YXIgTGlua2VkVmFsdWVVdGlscyA9IF9kZXJlcV8oMjQp
OwordmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IF9kZXJlcV8oMzQpOwordmFyIFJlYWN0VXBk
YXRlcyA9IF9kZXJlcV8oODIpOworCit2YXIgd2FybmluZyA9IF9kZXJlcV8oMTU3KTsKKwordmFy
IGRpZFdhcm5WYWx1ZUxpbmsgPSBmYWxzZTsKK3ZhciBkaWRXYXJuVmFsdWVEZWZhdWx0VmFsdWUg
PSBmYWxzZTsKKworZnVuY3Rpb24gdXBkYXRlT3B0aW9uc0lmUGVuZGluZ1VwZGF0ZUFuZE1vdW50
ZWQoKSB7CisgIGlmICh0aGlzLl9yb290Tm9kZUlEICYmIHRoaXMuX3dyYXBwZXJTdGF0ZS5wZW5k
aW5nVXBkYXRlKSB7CisgICAgdGhpcy5fd3JhcHBlclN0YXRlLnBlbmRpbmdVcGRhdGUgPSBmYWxz
ZTsKKworICAgIHZhciBwcm9wcyA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3BzOworICAgIHZh
ciB2YWx1ZSA9IExpbmtlZFZhbHVlVXRpbHMuZ2V0VmFsdWUocHJvcHMpOworCisgICAgaWYgKHZh
bHVlICE9IG51bGwpIHsKKyAgICAgIHVwZGF0ZU9wdGlvbnModGhpcywgQm9vbGVhbihwcm9wcy5t
dWx0aXBsZSksIHZhbHVlKTsKKyAgICB9CisgIH0KK30KKworZnVuY3Rpb24gZ2V0RGVjbGFyYXRp
b25FcnJvckFkZGVuZHVtKG93bmVyKSB7CisgIGlmIChvd25lcikgeworICAgIHZhciBuYW1lID0g
b3duZXIuZ2V0TmFtZSgpOworICAgIGlmIChuYW1lKSB7CisgICAgICByZXR1cm4gJyBDaGVjayB0
aGUgcmVuZGVyIG1ldGhvZCBvZiBgJyArIG5hbWUgKyAnYC4nOworICAgIH0KKyAgfQorICByZXR1
cm4gJyc7Cit9CisKK3ZhciB2YWx1ZVByb3BOYW1lcyA9IFsndmFsdWUnLCAnZGVmYXVsdFZhbHVl
J107CisKKy8qKgorICogVmFsaWRhdGlvbiBmdW5jdGlvbiBmb3IgYHZhbHVlYCBhbmQgYGRlZmF1
bHRWYWx1ZWAuCisgKiBAcHJpdmF0ZQorICovCitmdW5jdGlvbiBjaGVja1NlbGVjdFByb3BUeXBl
cyhpbnN0LCBwcm9wcykgeworICB2YXIgb3duZXIgPSBpbnN0Ll9jdXJyZW50RWxlbWVudC5fb3du
ZXI7CisgIExpbmtlZFZhbHVlVXRpbHMuY2hlY2tQcm9wVHlwZXMoJ3NlbGVjdCcsIHByb3BzLCBv
d25lcik7CisKKyAgaWYgKHByb3BzLnZhbHVlTGluayAhPT0gdW5kZWZpbmVkICYmICFkaWRXYXJu
VmFsdWVMaW5rKSB7CisgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2Fybmlu
ZyhmYWxzZSwgJ2B2YWx1ZUxpbmtgIHByb3Agb24gYHNlbGVjdGAgaXMgZGVwcmVjYXRlZDsgc2V0
IGB2YWx1ZWAgYW5kIGBvbkNoYW5nZWAgaW5zdGVhZC4nKSA6IHZvaWQgMDsKKyAgICBkaWRXYXJu
VmFsdWVMaW5rID0gdHJ1ZTsKKyAgfQorCisgIGZvciAodmFyIGkgPSAwOyBpIDwgdmFsdWVQcm9w
TmFtZXMubGVuZ3RoOyBpKyspIHsKKyAgICB2YXIgcHJvcE5hbWUgPSB2YWx1ZVByb3BOYW1lc1tp
XTsKKyAgICBpZiAocHJvcHNbcHJvcE5hbWVdID09IG51bGwpIHsKKyAgICAgIGNvbnRpbnVlOwor
ICAgIH0KKyAgICB2YXIgaXNBcnJheSA9IEFycmF5LmlzQXJyYXkocHJvcHNbcHJvcE5hbWVdKTsK
KyAgICBpZiAocHJvcHMubXVsdGlwbGUgJiYgIWlzQXJyYXkpIHsKKyAgICAgICJkZXZlbG9wbWVu
dCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdUaGUgYCVzYCBwcm9wIHN1cHBs
aWVkIHRvIDxzZWxlY3Q+IG11c3QgYmUgYW4gYXJyYXkgaWYgJyArICdgbXVsdGlwbGVgIGlzIHRy
dWUuJXMnLCBwcm9wTmFtZSwgZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKG93bmVyKSkgOiB2
b2lkIDA7CisgICAgfSBlbHNlIGlmICghcHJvcHMubXVsdGlwbGUgJiYgaXNBcnJheSkgeworICAg
ICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1RoZSBg
JXNgIHByb3Agc3VwcGxpZWQgdG8gPHNlbGVjdD4gbXVzdCBiZSBhIHNjYWxhciAnICsgJ3ZhbHVl
IGlmIGBtdWx0aXBsZWAgaXMgZmFsc2UuJXMnLCBwcm9wTmFtZSwgZ2V0RGVjbGFyYXRpb25FcnJv
ckFkZGVuZHVtKG93bmVyKSkgOiB2b2lkIDA7CisgICAgfQorICB9Cit9CisKKy8qKgorICogQHBh
cmFtIHtSZWFjdERPTUNvbXBvbmVudH0gaW5zdAorICogQHBhcmFtIHtib29sZWFufSBtdWx0aXBs
ZQorICogQHBhcmFtIHsqfSBwcm9wVmFsdWUgQSBzdHJpbmdhYmxlICh3aXRoIGBtdWx0aXBsZWAs
IGEgbGlzdCBvZiBzdHJpbmdhYmxlcykuCisgKiBAcHJpdmF0ZQorICovCitmdW5jdGlvbiB1cGRh
dGVPcHRpb25zKGluc3QsIG11bHRpcGxlLCBwcm9wVmFsdWUpIHsKKyAgdmFyIHNlbGVjdGVkVmFs
dWUsIGk7CisgIHZhciBvcHRpb25zID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9t
SW5zdGFuY2UoaW5zdCkub3B0aW9uczsKKworICBpZiAobXVsdGlwbGUpIHsKKyAgICBzZWxlY3Rl
ZFZhbHVlID0ge307CisgICAgZm9yIChpID0gMDsgaSA8IHByb3BWYWx1ZS5sZW5ndGg7IGkrKykg
eworICAgICAgc2VsZWN0ZWRWYWx1ZVsnJyArIHByb3BWYWx1ZVtpXV0gPSB0cnVlOworICAgIH0K
KyAgICBmb3IgKGkgPSAwOyBpIDwgb3B0aW9ucy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHNl
bGVjdGVkID0gc2VsZWN0ZWRWYWx1ZS5oYXNPd25Qcm9wZXJ0eShvcHRpb25zW2ldLnZhbHVlKTsK
KyAgICAgIGlmIChvcHRpb25zW2ldLnNlbGVjdGVkICE9PSBzZWxlY3RlZCkgeworICAgICAgICBv
cHRpb25zW2ldLnNlbGVjdGVkID0gc2VsZWN0ZWQ7CisgICAgICB9CisgICAgfQorICB9IGVsc2Ug
eworICAgIC8vIERvIG5vdCBzZXQgYHNlbGVjdC52YWx1ZWAgYXMgZXhhY3QgYmVoYXZpb3IgaXNu
J3QgY29uc2lzdGVudCBhY3Jvc3MgYWxsCisgICAgLy8gYnJvd3NlcnMgZm9yIGFsbCBjYXNlcy4K
KyAgICBzZWxlY3RlZFZhbHVlID0gJycgKyBwcm9wVmFsdWU7CisgICAgZm9yIChpID0gMDsgaSA8
IG9wdGlvbnMubGVuZ3RoOyBpKyspIHsKKyAgICAgIGlmIChvcHRpb25zW2ldLnZhbHVlID09PSBz
ZWxlY3RlZFZhbHVlKSB7CisgICAgICAgIG9wdGlvbnNbaV0uc2VsZWN0ZWQgPSB0cnVlOworICAg
ICAgICByZXR1cm47CisgICAgICB9CisgICAgfQorICAgIGlmIChvcHRpb25zLmxlbmd0aCkgewor
ICAgICAgb3B0aW9uc1swXS5zZWxlY3RlZCA9IHRydWU7CisgICAgfQorICB9Cit9CisKKy8qKgor
ICogSW1wbGVtZW50cyBhIDxzZWxlY3Q+IGhvc3QgY29tcG9uZW50IHRoYXQgYWxsb3dzIG9wdGlv
bmFsbHkgc2V0dGluZyB0aGUKKyAqIHByb3BzIGB2YWx1ZWAgYW5kIGBkZWZhdWx0VmFsdWVgLiBJ
ZiBgbXVsdGlwbGVgIGlzIGZhbHNlLCB0aGUgcHJvcCBtdXN0IGJlIGEKKyAqIHN0cmluZ2FibGUu
IElmIGBtdWx0aXBsZWAgaXMgdHJ1ZSwgdGhlIHByb3AgbXVzdCBiZSBhbiBhcnJheSBvZiBzdHJp
bmdhYmxlcy4KKyAqCisgKiBJZiBgdmFsdWVgIGlzIG5vdCBzdXBwbGllZCAob3IgbnVsbC91bmRl
ZmluZWQpLCB1c2VyIGFjdGlvbnMgdGhhdCBjaGFuZ2UgdGhlCisgKiBzZWxlY3RlZCBvcHRpb24g
d2lsbCB0cmlnZ2VyIHVwZGF0ZXMgdG8gdGhlIHJlbmRlcmVkIG9wdGlvbnMuCisgKgorICogSWYg
aXQgaXMgc3VwcGxpZWQgKGFuZCBub3QgbnVsbC91bmRlZmluZWQpLCB0aGUgcmVuZGVyZWQgb3B0
aW9ucyB3aWxsIG5vdAorICogdXBkYXRlIGluIHJlc3BvbnNlIHRvIHVzZXIgYWN0aW9ucy4gSW5z
dGVhZCwgdGhlIGB2YWx1ZWAgcHJvcCBtdXN0IGNoYW5nZSBpbgorICogb3JkZXIgZm9yIHRoZSBy
ZW5kZXJlZCBvcHRpb25zIHRvIHVwZGF0ZS4KKyAqCisgKiBJZiBgZGVmYXVsdFZhbHVlYCBpcyBw
cm92aWRlZCwgYW55IG9wdGlvbnMgd2l0aCB0aGUgc3VwcGxpZWQgdmFsdWVzIHdpbGwgYmUKKyAq
IHNlbGVjdGVkLgorICovCit2YXIgUmVhY3RET01TZWxlY3QgPSB7CisgIGdldEhvc3RQcm9wczog
ZnVuY3Rpb24gKGluc3QsIHByb3BzKSB7CisgICAgcmV0dXJuIF9hc3NpZ24oe30sIHByb3BzLCB7
CisgICAgICBvbkNoYW5nZTogaW5zdC5fd3JhcHBlclN0YXRlLm9uQ2hhbmdlLAorICAgICAgdmFs
dWU6IHVuZGVmaW5lZAorICAgIH0pOworICB9LAorCisgIG1vdW50V3JhcHBlcjogZnVuY3Rpb24g
KGluc3QsIHByb3BzKSB7CisgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykg
eworICAgICAgY2hlY2tTZWxlY3RQcm9wVHlwZXMoaW5zdCwgcHJvcHMpOworICAgIH0KKworICAg
IHZhciB2YWx1ZSA9IExpbmtlZFZhbHVlVXRpbHMuZ2V0VmFsdWUocHJvcHMpOworICAgIGluc3Qu
X3dyYXBwZXJTdGF0ZSA9IHsKKyAgICAgIHBlbmRpbmdVcGRhdGU6IGZhbHNlLAorICAgICAgaW5p
dGlhbFZhbHVlOiB2YWx1ZSAhPSBudWxsID8gdmFsdWUgOiBwcm9wcy5kZWZhdWx0VmFsdWUsCisg
ICAgICBsaXN0ZW5lcnM6IG51bGwsCisgICAgICBvbkNoYW5nZTogX2hhbmRsZUNoYW5nZS5iaW5k
KGluc3QpLAorICAgICAgd2FzTXVsdGlwbGU6IEJvb2xlYW4ocHJvcHMubXVsdGlwbGUpCisgICAg
fTsKKworICAgIGlmIChwcm9wcy52YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHByb3BzLmRlZmF1bHRW
YWx1ZSAhPT0gdW5kZWZpbmVkICYmICFkaWRXYXJuVmFsdWVEZWZhdWx0VmFsdWUpIHsKKyAgICAg
ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdTZWxlY3Qg
ZWxlbWVudHMgbXVzdCBiZSBlaXRoZXIgY29udHJvbGxlZCBvciB1bmNvbnRyb2xsZWQgJyArICco
c3BlY2lmeSBlaXRoZXIgdGhlIHZhbHVlIHByb3AsIG9yIHRoZSBkZWZhdWx0VmFsdWUgcHJvcCwg
YnV0IG5vdCAnICsgJ2JvdGgpLiBEZWNpZGUgYmV0d2VlbiB1c2luZyBhIGNvbnRyb2xsZWQgb3Ig
dW5jb250cm9sbGVkIHNlbGVjdCAnICsgJ2VsZW1lbnQgYW5kIHJlbW92ZSBvbmUgb2YgdGhlc2Ug
cHJvcHMuIE1vcmUgaW5mbzogJyArICdodHRwczovL2ZiLm1lL3JlYWN0LWNvbnRyb2xsZWQtY29t
cG9uZW50cycpIDogdm9pZCAwOworICAgICAgZGlkV2FyblZhbHVlRGVmYXVsdFZhbHVlID0gdHJ1
ZTsKKyAgICB9CisgIH0sCisKKyAgZ2V0U2VsZWN0VmFsdWVDb250ZXh0OiBmdW5jdGlvbiAoaW5z
dCkgeworICAgIC8vIFJlYWN0RE9NT3B0aW9uIGxvb2tzIGF0IHRoaXMgaW5pdGlhbCB2YWx1ZSBz
byB0aGUgaW5pdGlhbCBnZW5lcmF0ZWQKKyAgICAvLyBtYXJrdXAgaGFzIGNvcnJlY3QgYHNlbGVj
dGVkYCBhdHRyaWJ1dGVzCisgICAgcmV0dXJuIGluc3QuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFs
dWU7CisgIH0sCisKKyAgcG9zdFVwZGF0ZVdyYXBwZXI6IGZ1bmN0aW9uIChpbnN0KSB7CisgICAg
dmFyIHByb3BzID0gaW5zdC5fY3VycmVudEVsZW1lbnQucHJvcHM7CisKKyAgICAvLyBBZnRlciB0
aGUgaW5pdGlhbCBtb3VudCwgd2UgY29udHJvbCBzZWxlY3RlZC1uZXNzIG1hbnVhbGx5IHNvIGRv
bid0IHBhc3MKKyAgICAvLyB0aGlzIHZhbHVlIGRvd24KKyAgICBpbnN0Ll93cmFwcGVyU3RhdGUu
aW5pdGlhbFZhbHVlID0gdW5kZWZpbmVkOworCisgICAgdmFyIHdhc011bHRpcGxlID0gaW5zdC5f
d3JhcHBlclN0YXRlLndhc011bHRpcGxlOworICAgIGluc3QuX3dyYXBwZXJTdGF0ZS53YXNNdWx0
aXBsZSA9IEJvb2xlYW4ocHJvcHMubXVsdGlwbGUpOworCisgICAgdmFyIHZhbHVlID0gTGlua2Vk
VmFsdWVVdGlscy5nZXRWYWx1ZShwcm9wcyk7CisgICAgaWYgKHZhbHVlICE9IG51bGwpIHsKKyAg
ICAgIGluc3QuX3dyYXBwZXJTdGF0ZS5wZW5kaW5nVXBkYXRlID0gZmFsc2U7CisgICAgICB1cGRh
dGVPcHRpb25zKGluc3QsIEJvb2xlYW4ocHJvcHMubXVsdGlwbGUpLCB2YWx1ZSk7CisgICAgfSBl
bHNlIGlmICh3YXNNdWx0aXBsZSAhPT0gQm9vbGVhbihwcm9wcy5tdWx0aXBsZSkpIHsKKyAgICAg
IC8vIEZvciBzaW1wbGljaXR5LCByZWFwcGx5IGBkZWZhdWx0VmFsdWVgIGlmIGBtdWx0aXBsZWAg
aXMgdG9nZ2xlZC4KKyAgICAgIGlmIChwcm9wcy5kZWZhdWx0VmFsdWUgIT0gbnVsbCkgeworICAg
ICAgICB1cGRhdGVPcHRpb25zKGluc3QsIEJvb2xlYW4ocHJvcHMubXVsdGlwbGUpLCBwcm9wcy5k
ZWZhdWx0VmFsdWUpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gUmV2ZXJ0IHRoZSBzZWxl
Y3QgYmFjayB0byBpdHMgZGVmYXVsdCB1bnNlbGVjdGVkIHN0YXRlLgorICAgICAgICB1cGRhdGVP
cHRpb25zKGluc3QsIEJvb2xlYW4ocHJvcHMubXVsdGlwbGUpLCBwcm9wcy5tdWx0aXBsZSA/IFtd
IDogJycpOworICAgICAgfQorICAgIH0KKyAgfQorfTsKKworZnVuY3Rpb24gX2hhbmRsZUNoYW5n
ZShldmVudCkgeworICB2YXIgcHJvcHMgPSB0aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wczsKKyAg
dmFyIHJldHVyblZhbHVlID0gTGlua2VkVmFsdWVVdGlscy5leGVjdXRlT25DaGFuZ2UocHJvcHMs
IGV2ZW50KTsKKworICBpZiAodGhpcy5fcm9vdE5vZGVJRCkgeworICAgIHRoaXMuX3dyYXBwZXJT
dGF0ZS5wZW5kaW5nVXBkYXRlID0gdHJ1ZTsKKyAgfQorICBSZWFjdFVwZGF0ZXMuYXNhcCh1cGRh
dGVPcHRpb25zSWZQZW5kaW5nVXBkYXRlQW5kTW91bnRlZCwgdGhpcyk7CisgIHJldHVybiByZXR1
cm5WYWx1ZTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTVNlbGVjdDsKK30seyIxNTci
OjE1NywiMTU4IjoxNTgsIjI0IjoyNCwiMzQiOjM0LCI4MiI6ODJ9XSw0NDpbZnVuY3Rpb24oX2Rl
cmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZh
Y2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNl
IGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRo
ZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0
cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKwor
J3VzZSBzdHJpY3QnOworCit2YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSBfZGVyZXFfKDEzNik7
CisKK3ZhciBnZXROb2RlRm9yQ2hhcmFjdGVyT2Zmc2V0ID0gX2RlcmVxXygxMTgpOwordmFyIGdl
dFRleHRDb250ZW50QWNjZXNzb3IgPSBfZGVyZXFfKDExOSk7CisKKy8qKgorICogV2hpbGUgYGlz
Q29sbGFwc2VkYCBpcyBhdmFpbGFibGUgb24gdGhlIFNlbGVjdGlvbiBvYmplY3QgYW5kIGBjb2xs
YXBzZWRgCisgKiBpcyBhdmFpbGFibGUgb24gdGhlIFJhbmdlIG9iamVjdCwgSUUxMSBzb21ldGlt
ZXMgZ2V0cyB0aGVtIHdyb25nLgorICogSWYgdGhlIGFuY2hvci9mb2N1cyBub2RlcyBhbmQgb2Zm
c2V0cyBhcmUgdGhlIHNhbWUsIHRoZSByYW5nZSBpcyBjb2xsYXBzZWQuCisgKi8KK2Z1bmN0aW9u
IGlzQ29sbGFwc2VkKGFuY2hvck5vZGUsIGFuY2hvck9mZnNldCwgZm9jdXNOb2RlLCBmb2N1c09m
ZnNldCkgeworICByZXR1cm4gYW5jaG9yTm9kZSA9PT0gZm9jdXNOb2RlICYmIGFuY2hvck9mZnNl
dCA9PT0gZm9jdXNPZmZzZXQ7Cit9CisKKy8qKgorICogR2V0IHRoZSBhcHByb3ByaWF0ZSBhbmNo
b3IgYW5kIGZvY3VzIG5vZGUvb2Zmc2V0IHBhaXJzIGZvciBJRS4KKyAqCisgKiBUaGUgY2F0Y2gg
aGVyZSBpcyB0aGF0IElFJ3Mgc2VsZWN0aW9uIEFQSSBkb2Vzbid0IHByb3ZpZGUgaW5mb3JtYXRp
b24KKyAqIGFib3V0IHdoZXRoZXIgdGhlIHNlbGVjdGlvbiBpcyBmb3J3YXJkIG9yIGJhY2t3YXJk
LCBzbyB3ZSBoYXZlIHRvCisgKiBiZWhhdmUgYXMgdGhvdWdoIGl0J3MgYWx3YXlzIGZvcndhcmQu
CisgKgorICogSUUgdGV4dCBkaWZmZXJzIGZyb20gbW9kZXJuIHNlbGVjdGlvbiBpbiB0aGF0IGl0
IGJlaGF2ZXMgYXMgdGhvdWdoCisgKiBibG9jayBlbGVtZW50cyBlbmQgd2l0aCBhIG5ldyBsaW5l
LiBUaGlzIG1lYW5zIGNoYXJhY3RlciBvZmZzZXRzIHdpbGwKKyAqIGRpZmZlciBiZXR3ZWVuIHRo
ZSB0d28gQVBJcy4KKyAqCisgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IG5vZGUKKyAqIEByZXR1cm4g
e29iamVjdH0KKyAqLworZnVuY3Rpb24gZ2V0SUVPZmZzZXRzKG5vZGUpIHsKKyAgdmFyIHNlbGVj
dGlvbiA9IGRvY3VtZW50LnNlbGVjdGlvbjsKKyAgdmFyIHNlbGVjdGVkUmFuZ2UgPSBzZWxlY3Rp
b24uY3JlYXRlUmFuZ2UoKTsKKyAgdmFyIHNlbGVjdGVkTGVuZ3RoID0gc2VsZWN0ZWRSYW5nZS50
ZXh0Lmxlbmd0aDsKKworICAvLyBEdXBsaWNhdGUgc2VsZWN0aW9uIHNvIHdlIGNhbiBtb3ZlIHJh
bmdlIHdpdGhvdXQgYnJlYWtpbmcgdXNlciBzZWxlY3Rpb24uCisgIHZhciBmcm9tU3RhcnQgPSBz
ZWxlY3RlZFJhbmdlLmR1cGxpY2F0ZSgpOworICBmcm9tU3RhcnQubW92ZVRvRWxlbWVudFRleHQo
bm9kZSk7CisgIGZyb21TdGFydC5zZXRFbmRQb2ludCgnRW5kVG9TdGFydCcsIHNlbGVjdGVkUmFu
Z2UpOworCisgIHZhciBzdGFydE9mZnNldCA9IGZyb21TdGFydC50ZXh0Lmxlbmd0aDsKKyAgdmFy
IGVuZE9mZnNldCA9IHN0YXJ0T2Zmc2V0ICsgc2VsZWN0ZWRMZW5ndGg7CisKKyAgcmV0dXJuIHsK
KyAgICBzdGFydDogc3RhcnRPZmZzZXQsCisgICAgZW5kOiBlbmRPZmZzZXQKKyAgfTsKK30KKwor
LyoqCisgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IG5vZGUKKyAqIEByZXR1cm4gez9vYmplY3R9Cisg
Ki8KK2Z1bmN0aW9uIGdldE1vZGVybk9mZnNldHMobm9kZSkgeworICB2YXIgc2VsZWN0aW9uID0g
d2luZG93LmdldFNlbGVjdGlvbiAmJiB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CisKKyAgaWYgKCFz
ZWxlY3Rpb24gfHwgc2VsZWN0aW9uLnJhbmdlQ291bnQgPT09IDApIHsKKyAgICByZXR1cm4gbnVs
bDsKKyAgfQorCisgIHZhciBhbmNob3JOb2RlID0gc2VsZWN0aW9uLmFuY2hvck5vZGU7CisgIHZh
ciBhbmNob3JPZmZzZXQgPSBzZWxlY3Rpb24uYW5jaG9yT2Zmc2V0OworICB2YXIgZm9jdXNOb2Rl
ID0gc2VsZWN0aW9uLmZvY3VzTm9kZTsKKyAgdmFyIGZvY3VzT2Zmc2V0ID0gc2VsZWN0aW9uLmZv
Y3VzT2Zmc2V0OworCisgIHZhciBjdXJyZW50UmFuZ2UgPSBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgw
KTsKKworICAvLyBJbiBGaXJlZm94LCByYW5nZS5zdGFydENvbnRhaW5lciBhbmQgcmFuZ2UuZW5k
Q29udGFpbmVyIGNhbiBiZSAiYW5vbnltb3VzCisgIC8vIGRpdnMiLCBlLmcuIHRoZSB1cC9kb3du
IGJ1dHRvbnMgb24gYW4gPGlucHV0IHR5cGU9Im51bWJlciI+LiBBbm9ueW1vdXMKKyAgLy8gZGl2
cyBkbyBub3Qgc2VlbSB0byBleHBvc2UgcHJvcGVydGllcywgdHJpZ2dlcmluZyBhICJQZXJtaXNz
aW9uIGRlbmllZAorICAvLyBlcnJvciIgaWYgYW55IG9mIGl0cyBwcm9wZXJ0aWVzIGFyZSBhY2Nl
c3NlZC4gVGhlIG9ubHkgc2VlbWluZ2x5IHBvc3NpYmxlCisgIC8vIHdheSB0byBhdm9pZCBlcnJv
cmluZyBpcyB0byBhY2Nlc3MgYSBwcm9wZXJ0eSB0aGF0IHR5cGljYWxseSB3b3JrcyBmb3IKKyAg
Ly8gbm9uLWFub255bW91cyBkaXZzIGFuZCBjYXRjaCBhbnkgZXJyb3IgdGhhdCBtYXkgb3RoZXJ3
aXNlIGFyaXNlLiBTZWUKKyAgLy8gaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA4NDI3CisgIHRyeSB7CisgICAgLyogZXNsaW50LWRpc2FibGUgbm8tdW51c2Vk
LWV4cHJlc3Npb25zICovCisgICAgY3VycmVudFJhbmdlLnN0YXJ0Q29udGFpbmVyLm5vZGVUeXBl
OworICAgIGN1cnJlbnRSYW5nZS5lbmRDb250YWluZXIubm9kZVR5cGU7CisgICAgLyogZXNsaW50
LWVuYWJsZSBuby11bnVzZWQtZXhwcmVzc2lvbnMgKi8KKyAgfSBjYXRjaCAoZSkgeworICAgIHJl
dHVybiBudWxsOworICB9CisKKyAgLy8gSWYgdGhlIG5vZGUgYW5kIG9mZnNldCB2YWx1ZXMgYXJl
IHRoZSBzYW1lLCB0aGUgc2VsZWN0aW9uIGlzIGNvbGxhcHNlZC4KKyAgLy8gYFNlbGVjdGlvbi5p
c0NvbGxhcHNlZGAgaXMgYXZhaWxhYmxlIG5hdGl2ZWx5LCBidXQgSUUgc29tZXRpbWVzIGdldHMK
KyAgLy8gdGhpcyB2YWx1ZSB3cm9uZy4KKyAgdmFyIGlzU2VsZWN0aW9uQ29sbGFwc2VkID0gaXND
b2xsYXBzZWQoc2VsZWN0aW9uLmFuY2hvck5vZGUsIHNlbGVjdGlvbi5hbmNob3JPZmZzZXQsIHNl
bGVjdGlvbi5mb2N1c05vZGUsIHNlbGVjdGlvbi5mb2N1c09mZnNldCk7CisKKyAgdmFyIHJhbmdl
TGVuZ3RoID0gaXNTZWxlY3Rpb25Db2xsYXBzZWQgPyAwIDogY3VycmVudFJhbmdlLnRvU3RyaW5n
KCkubGVuZ3RoOworCisgIHZhciB0ZW1wUmFuZ2UgPSBjdXJyZW50UmFuZ2UuY2xvbmVSYW5nZSgp
OworICB0ZW1wUmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKG5vZGUpOworICB0ZW1wUmFuZ2Uuc2V0
RW5kKGN1cnJlbnRSYW5nZS5zdGFydENvbnRhaW5lciwgY3VycmVudFJhbmdlLnN0YXJ0T2Zmc2V0
KTsKKworICB2YXIgaXNUZW1wUmFuZ2VDb2xsYXBzZWQgPSBpc0NvbGxhcHNlZCh0ZW1wUmFuZ2Uu
c3RhcnRDb250YWluZXIsIHRlbXBSYW5nZS5zdGFydE9mZnNldCwgdGVtcFJhbmdlLmVuZENvbnRh
aW5lciwgdGVtcFJhbmdlLmVuZE9mZnNldCk7CisKKyAgdmFyIHN0YXJ0ID0gaXNUZW1wUmFuZ2VD
b2xsYXBzZWQgPyAwIDogdGVtcFJhbmdlLnRvU3RyaW5nKCkubGVuZ3RoOworICB2YXIgZW5kID0g
c3RhcnQgKyByYW5nZUxlbmd0aDsKKworICAvLyBEZXRlY3Qgd2hldGhlciB0aGUgc2VsZWN0aW9u
IGlzIGJhY2t3YXJkLgorICB2YXIgZGV0ZWN0aW9uUmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICBkZXRlY3Rpb25SYW5nZS5zZXRTdGFydChhbmNob3JOb2RlLCBhbmNob3JPZmZzZXQp
OworICBkZXRlY3Rpb25SYW5nZS5zZXRFbmQoZm9jdXNOb2RlLCBmb2N1c09mZnNldCk7CisgIHZh
ciBpc0JhY2t3YXJkID0gZGV0ZWN0aW9uUmFuZ2UuY29sbGFwc2VkOworCisgIHJldHVybiB7Cisg
ICAgc3RhcnQ6IGlzQmFja3dhcmQgPyBlbmQgOiBzdGFydCwKKyAgICBlbmQ6IGlzQmFja3dhcmQg
PyBzdGFydCA6IGVuZAorICB9OworfQorCisvKioKKyAqIEBwYXJhbSB7RE9NRWxlbWVudHxET01U
ZXh0Tm9kZX0gbm9kZQorICogQHBhcmFtIHtvYmplY3R9IG9mZnNldHMKKyAqLworZnVuY3Rpb24g
c2V0SUVPZmZzZXRzKG5vZGUsIG9mZnNldHMpIHsKKyAgdmFyIHJhbmdlID0gZG9jdW1lbnQuc2Vs
ZWN0aW9uLmNyZWF0ZVJhbmdlKCkuZHVwbGljYXRlKCk7CisgIHZhciBzdGFydCwgZW5kOworCisg
IGlmIChvZmZzZXRzLmVuZCA9PT0gdW5kZWZpbmVkKSB7CisgICAgc3RhcnQgPSBvZmZzZXRzLnN0
YXJ0OworICAgIGVuZCA9IHN0YXJ0OworICB9IGVsc2UgaWYgKG9mZnNldHMuc3RhcnQgPiBvZmZz
ZXRzLmVuZCkgeworICAgIHN0YXJ0ID0gb2Zmc2V0cy5lbmQ7CisgICAgZW5kID0gb2Zmc2V0cy5z
dGFydDsKKyAgfSBlbHNlIHsKKyAgICBzdGFydCA9IG9mZnNldHMuc3RhcnQ7CisgICAgZW5kID0g
b2Zmc2V0cy5lbmQ7CisgIH0KKworICByYW5nZS5tb3ZlVG9FbGVtZW50VGV4dChub2RlKTsKKyAg
cmFuZ2UubW92ZVN0YXJ0KCdjaGFyYWN0ZXInLCBzdGFydCk7CisgIHJhbmdlLnNldEVuZFBvaW50
KCdFbmRUb1N0YXJ0JywgcmFuZ2UpOworICByYW5nZS5tb3ZlRW5kKCdjaGFyYWN0ZXInLCBlbmQg
LSBzdGFydCk7CisgIHJhbmdlLnNlbGVjdCgpOworfQorCisvKioKKyAqIEluIG1vZGVybiBub24t
SUUgYnJvd3NlcnMsIHdlIGNhbiBzdXBwb3J0IGJvdGggZm9yd2FyZCBhbmQgYmFja3dhcmQKKyAq
IHNlbGVjdGlvbnMuCisgKgorICogTm90ZTogSUUxMCsgc3VwcG9ydHMgdGhlIFNlbGVjdGlvbiBv
YmplY3QsIGJ1dCBpdCBkb2VzIG5vdCBzdXBwb3J0CisgKiB0aGUgYGV4dGVuZGAgbWV0aG9kLCB3
aGljaCBtZWFucyB0aGF0IGV2ZW4gaW4gbW9kZXJuIElFLCBpdCdzIG5vdCBwb3NzaWJsZQorICog
dG8gcHJvZ3JhbW1hdGljYWxseSBjcmVhdGUgYSBiYWNrd2FyZCBzZWxlY3Rpb24uIFRodXMsIGZv
ciBhbGwgSUUKKyAqIHZlcnNpb25zLCB3ZSB1c2UgdGhlIG9sZCBJRSBBUEkgdG8gY3JlYXRlIG91
ciBzZWxlY3Rpb25zLgorICoKKyAqIEBwYXJhbSB7RE9NRWxlbWVudHxET01UZXh0Tm9kZX0gbm9k
ZQorICogQHBhcmFtIHtvYmplY3R9IG9mZnNldHMKKyAqLworZnVuY3Rpb24gc2V0TW9kZXJuT2Zm
c2V0cyhub2RlLCBvZmZzZXRzKSB7CisgIGlmICghd2luZG93LmdldFNlbGVjdGlvbikgeworICAg
IHJldHVybjsKKyAgfQorCisgIHZhciBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7
CisgIHZhciBsZW5ndGggPSBub2RlW2dldFRleHRDb250ZW50QWNjZXNzb3IoKV0ubGVuZ3RoOwor
ICB2YXIgc3RhcnQgPSBNYXRoLm1pbihvZmZzZXRzLnN0YXJ0LCBsZW5ndGgpOworICB2YXIgZW5k
ID0gb2Zmc2V0cy5lbmQgPT09IHVuZGVmaW5lZCA/IHN0YXJ0IDogTWF0aC5taW4ob2Zmc2V0cy5l
bmQsIGxlbmd0aCk7CisKKyAgLy8gSUUgMTEgdXNlcyBtb2Rlcm4gc2VsZWN0aW9uLCBidXQgZG9l
c24ndCBzdXBwb3J0IHRoZSBleHRlbmQgbWV0aG9kLgorICAvLyBGbGlwIGJhY2t3YXJkIHNlbGVj
dGlvbnMsIHNvIHdlIGNhbiBzZXQgd2l0aCBhIHNpbmdsZSByYW5nZS4KKyAgaWYgKCFzZWxlY3Rp
b24uZXh0ZW5kICYmIHN0YXJ0ID4gZW5kKSB7CisgICAgdmFyIHRlbXAgPSBlbmQ7CisgICAgZW5k
ID0gc3RhcnQ7CisgICAgc3RhcnQgPSB0ZW1wOworICB9CisKKyAgdmFyIHN0YXJ0TWFya2VyID0g
Z2V0Tm9kZUZvckNoYXJhY3Rlck9mZnNldChub2RlLCBzdGFydCk7CisgIHZhciBlbmRNYXJrZXIg
PSBnZXROb2RlRm9yQ2hhcmFjdGVyT2Zmc2V0KG5vZGUsIGVuZCk7CisKKyAgaWYgKHN0YXJ0TWFy
a2VyICYmIGVuZE1hcmtlcikgeworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQoc3RhcnRNYXJrZXIubm9kZSwgc3RhcnRNYXJrZXIub2Zm
c2V0KTsKKyAgICBzZWxlY3Rpb24ucmVtb3ZlQWxsUmFuZ2VzKCk7CisKKyAgICBpZiAoc3RhcnQg
PiBlbmQpIHsKKyAgICAgIHNlbGVjdGlvbi5hZGRSYW5nZShyYW5nZSk7CisgICAgICBzZWxlY3Rp
b24uZXh0ZW5kKGVuZE1hcmtlci5ub2RlLCBlbmRNYXJrZXIub2Zmc2V0KTsKKyAgICB9IGVsc2Ug
eworICAgICAgcmFuZ2Uuc2V0RW5kKGVuZE1hcmtlci5ub2RlLCBlbmRNYXJrZXIub2Zmc2V0KTsK
KyAgICAgIHNlbGVjdGlvbi5hZGRSYW5nZShyYW5nZSk7CisgICAgfQorICB9Cit9CisKK3ZhciB1
c2VJRU9mZnNldHMgPSBFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00gJiYgJ3NlbGVjdGlv
bicgaW4gZG9jdW1lbnQgJiYgISgnZ2V0U2VsZWN0aW9uJyBpbiB3aW5kb3cpOworCit2YXIgUmVh
Y3RET01TZWxlY3Rpb24gPSB7CisgIC8qKgorICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IG5vZGUK
KyAgICovCisgIGdldE9mZnNldHM6IHVzZUlFT2Zmc2V0cyA/IGdldElFT2Zmc2V0cyA6IGdldE1v
ZGVybk9mZnNldHMsCisKKyAgLyoqCisgICAqIEBwYXJhbSB7RE9NRWxlbWVudHxET01UZXh0Tm9k
ZX0gbm9kZQorICAgKiBAcGFyYW0ge29iamVjdH0gb2Zmc2V0cworICAgKi8KKyAgc2V0T2Zmc2V0
czogdXNlSUVPZmZzZXRzID8gc2V0SUVPZmZzZXRzIDogc2V0TW9kZXJuT2Zmc2V0cworfTsKKwor
bW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTVNlbGVjdGlvbjsKK30seyIxMTgiOjExOCwiMTE5Ijox
MTksIjEzNiI6MTM2fV0sNDU6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoq
CisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRo
ZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAor
ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0
aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9wcm9k
SW52YXJpYW50ID0gX2RlcmVxXygxMjUpLAorICAgIF9hc3NpZ24gPSBfZGVyZXFfKDE1OCk7CisK
K3ZhciBET01DaGlsZHJlbk9wZXJhdGlvbnMgPSBfZGVyZXFfKDgpOwordmFyIERPTUxhenlUcmVl
ID0gX2RlcmVxXyg5KTsKK3ZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSBfZGVyZXFfKDM0KTsK
KwordmFyIGVzY2FwZVRleHRDb250ZW50Rm9yQnJvd3NlciA9IF9kZXJlcV8oMTA3KTsKK3ZhciBp
bnZhcmlhbnQgPSBfZGVyZXFfKDE1MCk7Cit2YXIgdmFsaWRhdGVET01OZXN0aW5nID0gX2RlcmVx
XygxMzEpOworCisvKioKKyAqIFRleHQgbm9kZXMgdmlvbGF0ZSBhIGNvdXBsZSBhc3N1bXB0aW9u
cyB0aGF0IFJlYWN0IG1ha2VzIGFib3V0IGNvbXBvbmVudHM6CisgKgorICogIC0gV2hlbiBtb3Vu
dGluZyB0ZXh0IGludG8gdGhlIERPTSwgYWRqYWNlbnQgdGV4dCBub2RlcyBhcmUgbWVyZ2VkLgor
ICogIC0gVGV4dCBub2RlcyBjYW5ub3QgYmUgYXNzaWduZWQgYSBSZWFjdCByb290IElELgorICoK
KyAqIFRoaXMgY29tcG9uZW50IGlzIHVzZWQgdG8gd3JhcCBzdHJpbmdzIGJldHdlZW4gY29tbWVu
dCBub2RlcyBzbyB0aGF0IHRoZXkKKyAqIGNhbiB1bmRlcmdvIHRoZSBzYW1lIHJlY29uY2lsaWF0
aW9uIHRoYXQgaXMgYXBwbGllZCB0byBlbGVtZW50cy4KKyAqCisgKiBUT0RPOiBJbnZlc3RpZ2F0
ZSByZXByZXNlbnRpbmcgUmVhY3QgY29tcG9uZW50cyBpbiB0aGUgRE9NIHdpdGggdGV4dCBub2Rl
cy4KKyAqCisgKiBAY2xhc3MgUmVhY3RET01UZXh0Q29tcG9uZW50CisgKiBAZXh0ZW5kcyBSZWFj
dENvbXBvbmVudAorICogQGludGVybmFsCisgKi8KK3ZhciBSZWFjdERPTVRleHRDb21wb25lbnQg
PSBmdW5jdGlvbiAodGV4dCkgeworICAvLyBUT0RPOiBUaGlzIGlzIHJlYWxseSBhIFJlYWN0VGV4
dCAoUmVhY3ROb2RlKSwgbm90IGEgUmVhY3RFbGVtZW50CisgIHRoaXMuX2N1cnJlbnRFbGVtZW50
ID0gdGV4dDsKKyAgdGhpcy5fc3RyaW5nVGV4dCA9ICcnICsgdGV4dDsKKyAgLy8gUmVhY3RET01D
b21wb25lbnRUcmVlIHVzZXMgdGhlc2U6CisgIHRoaXMuX2hvc3ROb2RlID0gbnVsbDsKKyAgdGhp
cy5faG9zdFBhcmVudCA9IG51bGw7CisKKyAgLy8gUHJvcGVydGllcworICB0aGlzLl9kb21JRCA9
IDA7CisgIHRoaXMuX21vdW50SW5kZXggPSAwOworICB0aGlzLl9jbG9zaW5nQ29tbWVudCA9IG51
bGw7CisgIHRoaXMuX2NvbW1lbnROb2RlcyA9IG51bGw7Cit9OworCitfYXNzaWduKFJlYWN0RE9N
VGV4dENvbXBvbmVudC5wcm90b3R5cGUsIHsKKworICAvKioKKyAgICogQ3JlYXRlcyB0aGUgbWFy
a3VwIGZvciB0aGlzIHRleHQgbm9kZS4gVGhpcyBub2RlIGlzIG5vdCBpbnRlbmRlZCB0byBoYXZl
CisgICAqIGFueSBmZWF0dXJlcyBiZXNpZGVzIGNvbnRhaW5pbmcgdGV4dCBjb250ZW50LgorICAg
KgorICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb258UmVhY3RTZXJ2ZXJSZW5k
ZXJpbmdUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb24KKyAgICogQHJldHVybiB7c3RyaW5nfSBNYXJr
dXAgZm9yIHRoaXMgdGV4dCBub2RlLgorICAgKiBAaW50ZXJuYWwKKyAgICovCisgIG1vdW50Q29t
cG9uZW50OiBmdW5jdGlvbiAodHJhbnNhY3Rpb24sIGhvc3RQYXJlbnQsIGhvc3RDb250YWluZXJJ
bmZvLCBjb250ZXh0KSB7CisgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykg
eworICAgICAgdmFyIHBhcmVudEluZm87CisgICAgICBpZiAoaG9zdFBhcmVudCAhPSBudWxsKSB7
CisgICAgICAgIHBhcmVudEluZm8gPSBob3N0UGFyZW50Ll9hbmNlc3RvckluZm87CisgICAgICB9
IGVsc2UgaWYgKGhvc3RDb250YWluZXJJbmZvICE9IG51bGwpIHsKKyAgICAgICAgcGFyZW50SW5m
byA9IGhvc3RDb250YWluZXJJbmZvLl9hbmNlc3RvckluZm87CisgICAgICB9CisgICAgICBpZiAo
cGFyZW50SW5mbykgeworICAgICAgICAvLyBwYXJlbnRJbmZvIHNob3VsZCBhbHdheXMgYmUgcHJl
c2VudCBleGNlcHQgZm9yIHRoZSB0b3AtbGV2ZWwKKyAgICAgICAgLy8gY29tcG9uZW50IHdoZW4g
c2VydmVyIHJlbmRlcmluZworICAgICAgICB2YWxpZGF0ZURPTU5lc3RpbmcobnVsbCwgdGhpcy5f
c3RyaW5nVGV4dCwgdGhpcywgcGFyZW50SW5mbyk7CisgICAgICB9CisgICAgfQorCisgICAgdmFy
IGRvbUlEID0gaG9zdENvbnRhaW5lckluZm8uX2lkQ291bnRlcisrOworICAgIHZhciBvcGVuaW5n
VmFsdWUgPSAnIHJlYWN0LXRleHQ6ICcgKyBkb21JRCArICcgJzsKKyAgICB2YXIgY2xvc2luZ1Zh
bHVlID0gJyAvcmVhY3QtdGV4dCAnOworICAgIHRoaXMuX2RvbUlEID0gZG9tSUQ7CisgICAgdGhp
cy5faG9zdFBhcmVudCA9IGhvc3RQYXJlbnQ7CisgICAgaWYgKHRyYW5zYWN0aW9uLnVzZUNyZWF0
ZUVsZW1lbnQpIHsKKyAgICAgIHZhciBvd25lckRvY3VtZW50ID0gaG9zdENvbnRhaW5lckluZm8u
X293bmVyRG9jdW1lbnQ7CisgICAgICB2YXIgb3BlbmluZ0NvbW1lbnQgPSBvd25lckRvY3VtZW50
LmNyZWF0ZUNvbW1lbnQob3BlbmluZ1ZhbHVlKTsKKyAgICAgIHZhciBjbG9zaW5nQ29tbWVudCA9
IG93bmVyRG9jdW1lbnQuY3JlYXRlQ29tbWVudChjbG9zaW5nVmFsdWUpOworICAgICAgdmFyIGxh
enlUcmVlID0gRE9NTGF6eVRyZWUob3duZXJEb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50
KCkpOworICAgICAgRE9NTGF6eVRyZWUucXVldWVDaGlsZChsYXp5VHJlZSwgRE9NTGF6eVRyZWUo
b3BlbmluZ0NvbW1lbnQpKTsKKyAgICAgIGlmICh0aGlzLl9zdHJpbmdUZXh0KSB7CisgICAgICAg
IERPTUxhenlUcmVlLnF1ZXVlQ2hpbGQobGF6eVRyZWUsIERPTUxhenlUcmVlKG93bmVyRG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUodGhpcy5fc3RyaW5nVGV4dCkpKTsKKyAgICAgIH0KKyAgICAgIERP
TUxhenlUcmVlLnF1ZXVlQ2hpbGQobGF6eVRyZWUsIERPTUxhenlUcmVlKGNsb3NpbmdDb21tZW50
KSk7CisgICAgICBSZWFjdERPTUNvbXBvbmVudFRyZWUucHJlY2FjaGVOb2RlKHRoaXMsIG9wZW5p
bmdDb21tZW50KTsKKyAgICAgIHRoaXMuX2Nsb3NpbmdDb21tZW50ID0gY2xvc2luZ0NvbW1lbnQ7
CisgICAgICByZXR1cm4gbGF6eVRyZWU7CisgICAgfSBlbHNlIHsKKyAgICAgIHZhciBlc2NhcGVk
VGV4dCA9IGVzY2FwZVRleHRDb250ZW50Rm9yQnJvd3Nlcih0aGlzLl9zdHJpbmdUZXh0KTsKKwor
ICAgICAgaWYgKHRyYW5zYWN0aW9uLnJlbmRlclRvU3RhdGljTWFya3VwKSB7CisgICAgICAgIC8v
IE5vcm1hbGx5IHdlJ2Qgd3JhcCB0aGlzIGJldHdlZW4gY29tbWVudCBub2RlcyBmb3IgdGhlIHJl
YXNvbnMgc3RhdGVkCisgICAgICAgIC8vIGFib3ZlLCBidXQgc2luY2UgdGhpcyBpcyBhIHNpdHVh
dGlvbiB3aGVyZSBSZWFjdCB3b24ndCB0YWtlIG92ZXIKKyAgICAgICAgLy8gKHN0YXRpYyBwYWdl
cyksIHdlIGNhbiBzaW1wbHkgcmV0dXJuIHRoZSB0ZXh0IGFzIGl0IGlzLgorICAgICAgICByZXR1
cm4gZXNjYXBlZFRleHQ7CisgICAgICB9CisKKyAgICAgIHJldHVybiAnPCEtLScgKyBvcGVuaW5n
VmFsdWUgKyAnLS0+JyArIGVzY2FwZWRUZXh0ICsgJzwhLS0nICsgY2xvc2luZ1ZhbHVlICsgJy0t
Pic7CisgICAgfQorICB9LAorCisgIC8qKgorICAgKiBVcGRhdGVzIHRoaXMgY29tcG9uZW50IGJ5
IHVwZGF0aW5nIHRoZSB0ZXh0IGNvbnRlbnQuCisgICAqCisgICAqIEBwYXJhbSB7UmVhY3RUZXh0
fSBuZXh0VGV4dCBUaGUgbmV4dCB0ZXh0IGNvbnRlbnQKKyAgICogQHBhcmFtIHtSZWFjdFJlY29u
Y2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvbgorICAgKiBAaW50ZXJuYWwKKyAgICovCisgIHJl
Y2VpdmVDb21wb25lbnQ6IGZ1bmN0aW9uIChuZXh0VGV4dCwgdHJhbnNhY3Rpb24pIHsKKyAgICBp
ZiAobmV4dFRleHQgIT09IHRoaXMuX2N1cnJlbnRFbGVtZW50KSB7CisgICAgICB0aGlzLl9jdXJy
ZW50RWxlbWVudCA9IG5leHRUZXh0OworICAgICAgdmFyIG5leHRTdHJpbmdUZXh0ID0gJycgKyBu
ZXh0VGV4dDsKKyAgICAgIGlmIChuZXh0U3RyaW5nVGV4dCAhPT0gdGhpcy5fc3RyaW5nVGV4dCkg
eworICAgICAgICAvLyBUT0RPOiBTYXZlIHRoaXMgYXMgcGVuZGluZyBwcm9wcyBhbmQgdXNlIHBl
cmZvcm1VcGRhdGVJZk5lY2Vzc2FyeQorICAgICAgICAvLyBhbmQvb3IgdXBkYXRlQ29tcG9uZW50
IHRvIGRvIHRoZSBhY3R1YWwgdXBkYXRlIGZvciBjb25zaXN0ZW5jeSB3aXRoCisgICAgICAgIC8v
IG90aGVyIGNvbXBvbmVudCB0eXBlcz8KKyAgICAgICAgdGhpcy5fc3RyaW5nVGV4dCA9IG5leHRT
dHJpbmdUZXh0OworICAgICAgICB2YXIgY29tbWVudE5vZGVzID0gdGhpcy5nZXRIb3N0Tm9kZSgp
OworICAgICAgICBET01DaGlsZHJlbk9wZXJhdGlvbnMucmVwbGFjZURlbGltaXRlZFRleHQoY29t
bWVudE5vZGVzWzBdLCBjb21tZW50Tm9kZXNbMV0sIG5leHRTdHJpbmdUZXh0KTsKKyAgICAgIH0K
KyAgICB9CisgIH0sCisKKyAgZ2V0SG9zdE5vZGU6IGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgaG9z
dE5vZGUgPSB0aGlzLl9jb21tZW50Tm9kZXM7CisgICAgaWYgKGhvc3ROb2RlKSB7CisgICAgICBy
ZXR1cm4gaG9zdE5vZGU7CisgICAgfQorICAgIGlmICghdGhpcy5fY2xvc2luZ0NvbW1lbnQpIHsK
KyAgICAgIHZhciBvcGVuaW5nQ29tbWVudCA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2Rl
RnJvbUluc3RhbmNlKHRoaXMpOworICAgICAgdmFyIG5vZGUgPSBvcGVuaW5nQ29tbWVudC5uZXh0
U2libGluZzsKKyAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICEobm9kZSAhPSBudWxsKSA/
ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ01pc3Np
bmcgY2xvc2luZyBjb21tZW50IGZvciB0ZXh0IGNvbXBvbmVudCAlcycsIHRoaXMuX2RvbUlEKSA6
IF9wcm9kSW52YXJpYW50KCc2NycsIHRoaXMuX2RvbUlEKSA6IHZvaWQgMDsKKyAgICAgICAgaWYg
KG5vZGUubm9kZVR5cGUgPT09IDggJiYgbm9kZS5ub2RlVmFsdWUgPT09ICcgL3JlYWN0LXRleHQg
JykgeworICAgICAgICAgIHRoaXMuX2Nsb3NpbmdDb21tZW50ID0gbm9kZTsKKyAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgICAgICBub2RlID0gbm9kZS5uZXh0U2libGluZzsKKyAgICAg
IH0KKyAgICB9CisgICAgaG9zdE5vZGUgPSBbdGhpcy5faG9zdE5vZGUsIHRoaXMuX2Nsb3NpbmdD
b21tZW50XTsKKyAgICB0aGlzLl9jb21tZW50Tm9kZXMgPSBob3N0Tm9kZTsKKyAgICByZXR1cm4g
aG9zdE5vZGU7CisgIH0sCisKKyAgdW5tb3VudENvbXBvbmVudDogZnVuY3Rpb24gKCkgeworICAg
IHRoaXMuX2Nsb3NpbmdDb21tZW50ID0gbnVsbDsKKyAgICB0aGlzLl9jb21tZW50Tm9kZXMgPSBu
dWxsOworICAgIFJlYWN0RE9NQ29tcG9uZW50VHJlZS51bmNhY2hlTm9kZSh0aGlzKTsKKyAgfQor
Cit9KTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTVRleHRDb21wb25lbnQ7Cit9LHsiMTA3
IjoxMDcsIjEyNSI6MTI1LCIxMzEiOjEzMSwiMTUwIjoxNTAsIjE1OCI6MTU4LCIzNCI6MzQsIjgi
OjgsIjkiOjl9XSw0NjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAq
IENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJbnZh
cmlhbnQgPSBfZGVyZXFfKDEyNSksCisgICAgX2Fzc2lnbiA9IF9kZXJlcV8oMTU4KTsKKwordmFy
IExpbmtlZFZhbHVlVXRpbHMgPSBfZGVyZXFfKDI0KTsKK3ZhciBSZWFjdERPTUNvbXBvbmVudFRy
ZWUgPSBfZGVyZXFfKDM0KTsKK3ZhciBSZWFjdFVwZGF0ZXMgPSBfZGVyZXFfKDgyKTsKKwordmFy
IGludmFyaWFudCA9IF9kZXJlcV8oMTUwKTsKK3ZhciB3YXJuaW5nID0gX2RlcmVxXygxNTcpOwor
Cit2YXIgZGlkV2FyblZhbHVlTGluayA9IGZhbHNlOwordmFyIGRpZFdhcm5WYWxEZWZhdWx0VmFs
ID0gZmFsc2U7CisKK2Z1bmN0aW9uIGZvcmNlVXBkYXRlSWZNb3VudGVkKCkgeworICBpZiAodGhp
cy5fcm9vdE5vZGVJRCkgeworICAgIC8vIERPTSBjb21wb25lbnQgaXMgc3RpbGwgbW91bnRlZDsg
dXBkYXRlCisgICAgUmVhY3RET01UZXh0YXJlYS51cGRhdGVXcmFwcGVyKHRoaXMpOworICB9Cit9
CisKKy8qKgorICogSW1wbGVtZW50cyBhIDx0ZXh0YXJlYT4gaG9zdCBjb21wb25lbnQgdGhhdCBh
bGxvd3Mgc2V0dGluZyBgdmFsdWVgLCBhbmQKKyAqIGBkZWZhdWx0VmFsdWVgLiBUaGlzIGRpZmZl
cnMgZnJvbSB0aGUgdHJhZGl0aW9uYWwgRE9NIEFQSSBiZWNhdXNlIHZhbHVlIGlzCisgKiB1c3Vh
bGx5IHNldCBhcyBQQ0RBVEEgY2hpbGRyZW4uCisgKgorICogSWYgYHZhbHVlYCBpcyBub3Qgc3Vw
cGxpZWQgKG9yIG51bGwvdW5kZWZpbmVkKSwgdXNlciBhY3Rpb25zIHRoYXQgYWZmZWN0IHRoZQor
ICogdmFsdWUgd2lsbCB0cmlnZ2VyIHVwZGF0ZXMgdG8gdGhlIGVsZW1lbnQuCisgKgorICogSWYg
YHZhbHVlYCBpcyBzdXBwbGllZCAoYW5kIG5vdCBudWxsL3VuZGVmaW5lZCksIHRoZSByZW5kZXJl
ZCBlbGVtZW50IHdpbGwKKyAqIG5vdCB0cmlnZ2VyIHVwZGF0ZXMgdG8gdGhlIGVsZW1lbnQuIElu
c3RlYWQsIHRoZSBgdmFsdWVgIHByb3AgbXVzdCBjaGFuZ2UgaW4KKyAqIG9yZGVyIGZvciB0aGUg
cmVuZGVyZWQgZWxlbWVudCB0byBiZSB1cGRhdGVkLgorICoKKyAqIFRoZSByZW5kZXJlZCBlbGVt
ZW50IHdpbGwgYmUgaW5pdGlhbGl6ZWQgd2l0aCBhbiBlbXB0eSB2YWx1ZSwgdGhlIHByb3AKKyAq
IGBkZWZhdWx0VmFsdWVgIGlmIHNwZWNpZmllZCwgb3IgdGhlIGNoaWxkcmVuIGNvbnRlbnQgKGRl
cHJlY2F0ZWQpLgorICovCit2YXIgUmVhY3RET01UZXh0YXJlYSA9IHsKKyAgZ2V0SG9zdFByb3Bz
OiBmdW5jdGlvbiAoaW5zdCwgcHJvcHMpIHsKKyAgICAhKHByb3BzLmRhbmdlcm91c2x5U2V0SW5u
ZXJIVE1MID09IG51bGwpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJp
YW50KGZhbHNlLCAnYGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MYCBkb2VzIG5vdCBtYWtlIHNlbnNl
IG9uIDx0ZXh0YXJlYT4uJykgOiBfcHJvZEludmFyaWFudCgnOTEnKSA6IHZvaWQgMDsKKworICAg
IC8vIEFsd2F5cyBzZXQgY2hpbGRyZW4gdG8gdGhlIHNhbWUgdGhpbmcuIEluIElFOSwgdGhlIHNl
bGVjdGlvbiByYW5nZSB3aWxsCisgICAgLy8gZ2V0IHJlc2V0IGlmIGB0ZXh0Q29udGVudGAgaXMg
bXV0YXRlZC4gIFdlIGNvdWxkIGFkZCBhIGNoZWNrIGluIHNldFRleHRDb250ZW50CisgICAgLy8g
dG8gb25seSBzZXQgdGhlIHZhbHVlIGlmL3doZW4gdGhlIHZhbHVlIGRpZmZlcnMgZnJvbSB0aGUg
bm9kZSB2YWx1ZSAod2hpY2ggd291bGQKKyAgICAvLyBjb21wbGV0ZWx5IHNvbHZlIHRoaXMgSUU5
IGJ1ZyksIGJ1dCBTZWJhc3RpYW4rQmVuIHNlZW1lZCB0byBsaWtlIHRoaXMgc29sdXRpb24uCisg
ICAgLy8gVGhlIHZhbHVlIGNhbiBiZSBhIGJvb2xlYW4gb3Igb2JqZWN0IHNvIHRoYXQncyB3aHkg
aXQncyBmb3JjZWQgdG8gYmUgYSBzdHJpbmcuCisgICAgdmFyIGhvc3RQcm9wcyA9IF9hc3NpZ24o
e30sIHByb3BzLCB7CisgICAgICB2YWx1ZTogdW5kZWZpbmVkLAorICAgICAgZGVmYXVsdFZhbHVl
OiB1bmRlZmluZWQsCisgICAgICBjaGlsZHJlbjogJycgKyBpbnN0Ll93cmFwcGVyU3RhdGUuaW5p
dGlhbFZhbHVlLAorICAgICAgb25DaGFuZ2U6IGluc3QuX3dyYXBwZXJTdGF0ZS5vbkNoYW5nZQor
ICAgIH0pOworCisgICAgcmV0dXJuIGhvc3RQcm9wczsKKyAgfSwKKworICBtb3VudFdyYXBwZXI6
IGZ1bmN0aW9uIChpbnN0LCBwcm9wcykgeworICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJv
ZHVjdGlvbicpIHsKKyAgICAgIExpbmtlZFZhbHVlVXRpbHMuY2hlY2tQcm9wVHlwZXMoJ3RleHRh
cmVhJywgcHJvcHMsIGluc3QuX2N1cnJlbnRFbGVtZW50Ll9vd25lcik7CisgICAgICBpZiAocHJv
cHMudmFsdWVMaW5rICE9PSB1bmRlZmluZWQgJiYgIWRpZFdhcm5WYWx1ZUxpbmspIHsKKyAgICAg
ICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ2B2YWx1
ZUxpbmtgIHByb3Agb24gYHRleHRhcmVhYCBpcyBkZXByZWNhdGVkOyBzZXQgYHZhbHVlYCBhbmQg
YG9uQ2hhbmdlYCBpbnN0ZWFkLicpIDogdm9pZCAwOworICAgICAgICBkaWRXYXJuVmFsdWVMaW5r
ID0gdHJ1ZTsKKyAgICAgIH0KKyAgICAgIGlmIChwcm9wcy52YWx1ZSAhPT0gdW5kZWZpbmVkICYm
IHByb3BzLmRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkICYmICFkaWRXYXJuVmFsRGVmYXVsdFZh
bCkgeworICAgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZh
bHNlLCAnVGV4dGFyZWEgZWxlbWVudHMgbXVzdCBiZSBlaXRoZXIgY29udHJvbGxlZCBvciB1bmNv
bnRyb2xsZWQgJyArICcoc3BlY2lmeSBlaXRoZXIgdGhlIHZhbHVlIHByb3AsIG9yIHRoZSBkZWZh
dWx0VmFsdWUgcHJvcCwgYnV0IG5vdCAnICsgJ2JvdGgpLiBEZWNpZGUgYmV0d2VlbiB1c2luZyBh
IGNvbnRyb2xsZWQgb3IgdW5jb250cm9sbGVkIHRleHRhcmVhICcgKyAnYW5kIHJlbW92ZSBvbmUg
b2YgdGhlc2UgcHJvcHMuIE1vcmUgaW5mbzogJyArICdodHRwczovL2ZiLm1lL3JlYWN0LWNvbnRy
b2xsZWQtY29tcG9uZW50cycpIDogdm9pZCAwOworICAgICAgICBkaWRXYXJuVmFsRGVmYXVsdFZh
bCA9IHRydWU7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIHZhbHVlID0gTGlua2VkVmFsdWVV
dGlscy5nZXRWYWx1ZShwcm9wcyk7CisgICAgdmFyIGluaXRpYWxWYWx1ZSA9IHZhbHVlOworCisg
ICAgLy8gT25seSBib3RoZXIgZmV0Y2hpbmcgZGVmYXVsdCB2YWx1ZSBpZiB3ZSdyZSBnb2luZyB0
byB1c2UgaXQKKyAgICBpZiAodmFsdWUgPT0gbnVsbCkgeworICAgICAgdmFyIGRlZmF1bHRWYWx1
ZSA9IHByb3BzLmRlZmF1bHRWYWx1ZTsKKyAgICAgIC8vIFRPRE8gKHl1bmdzdGVycyk6IFJlbW92
ZSBzdXBwb3J0IGZvciBjaGlsZHJlbiBjb250ZW50IGluIDx0ZXh0YXJlYT4uCisgICAgICB2YXIg
Y2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbjsKKyAgICAgIGlmIChjaGlsZHJlbiAhPSBudWxsKSB7
CisgICAgICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICAg
ICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnVXNlIHRo
ZSBgZGVmYXVsdFZhbHVlYCBvciBgdmFsdWVgIHByb3BzIGluc3RlYWQgb2Ygc2V0dGluZyAnICsg
J2NoaWxkcmVuIG9uIDx0ZXh0YXJlYT4uJykgOiB2b2lkIDA7CisgICAgICAgIH0KKyAgICAgICAg
IShkZWZhdWx0VmFsdWUgPT0gbnVsbCkgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicg
PyBpbnZhcmlhbnQoZmFsc2UsICdJZiB5b3Ugc3VwcGx5IGBkZWZhdWx0VmFsdWVgIG9uIGEgPHRl
eHRhcmVhPiwgZG8gbm90IHBhc3MgY2hpbGRyZW4uJykgOiBfcHJvZEludmFyaWFudCgnOTInKSA6
IHZvaWQgMDsKKyAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7CisgICAgICAg
ICAgIShjaGlsZHJlbi5sZW5ndGggPD0gMSkgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlv
bicgPyBpbnZhcmlhbnQoZmFsc2UsICc8dGV4dGFyZWE+IGNhbiBvbmx5IGhhdmUgYXQgbW9zdCBv
bmUgY2hpbGQuJykgOiBfcHJvZEludmFyaWFudCgnOTMnKSA6IHZvaWQgMDsKKyAgICAgICAgICBj
aGlsZHJlbiA9IGNoaWxkcmVuWzBdOworICAgICAgICB9CisKKyAgICAgICAgZGVmYXVsdFZhbHVl
ID0gJycgKyBjaGlsZHJlbjsKKyAgICAgIH0KKyAgICAgIGlmIChkZWZhdWx0VmFsdWUgPT0gbnVs
bCkgeworICAgICAgICBkZWZhdWx0VmFsdWUgPSAnJzsKKyAgICAgIH0KKyAgICAgIGluaXRpYWxW
YWx1ZSA9IGRlZmF1bHRWYWx1ZTsKKyAgICB9CisKKyAgICBpbnN0Ll93cmFwcGVyU3RhdGUgPSB7
CisgICAgICBpbml0aWFsVmFsdWU6ICcnICsgaW5pdGlhbFZhbHVlLAorICAgICAgbGlzdGVuZXJz
OiBudWxsLAorICAgICAgb25DaGFuZ2U6IF9oYW5kbGVDaGFuZ2UuYmluZChpbnN0KQorICAgIH07
CisgIH0sCisKKyAgdXBkYXRlV3JhcHBlcjogZnVuY3Rpb24gKGluc3QpIHsKKyAgICB2YXIgcHJv
cHMgPSBpbnN0Ll9jdXJyZW50RWxlbWVudC5wcm9wczsKKworICAgIHZhciBub2RlID0gUmVhY3RE
T01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCk7CisgICAgdmFyIHZhbHVl
ID0gTGlua2VkVmFsdWVVdGlscy5nZXRWYWx1ZShwcm9wcyk7CisgICAgaWYgKHZhbHVlICE9IG51
bGwpIHsKKyAgICAgIC8vIENhc3QgYHZhbHVlYCB0byBhIHN0cmluZyB0byBlbnN1cmUgdGhlIHZh
bHVlIGlzIHNldCBjb3JyZWN0bHkuIFdoaWxlCisgICAgICAvLyBicm93c2VycyB0eXBpY2FsbHkg
ZG8gdGhpcyBhcyBuZWNlc3NhcnksIGpzZG9tIGRvZXNuJ3QuCisgICAgICB2YXIgbmV3VmFsdWUg
PSAnJyArIHZhbHVlOworCisgICAgICAvLyBUbyBhdm9pZCBzaWRlIGVmZmVjdHMgKHN1Y2ggYXMg
bG9zaW5nIHRleHQgc2VsZWN0aW9uKSwgb25seSBzZXQgdmFsdWUgaWYgY2hhbmdlZAorICAgICAg
aWYgKG5ld1ZhbHVlICE9PSBub2RlLnZhbHVlKSB7CisgICAgICAgIG5vZGUudmFsdWUgPSBuZXdW
YWx1ZTsKKyAgICAgIH0KKyAgICAgIGlmIChwcm9wcy5kZWZhdWx0VmFsdWUgPT0gbnVsbCkgewor
ICAgICAgICBub2RlLmRlZmF1bHRWYWx1ZSA9IG5ld1ZhbHVlOworICAgICAgfQorICAgIH0KKyAg
ICBpZiAocHJvcHMuZGVmYXVsdFZhbHVlICE9IG51bGwpIHsKKyAgICAgIG5vZGUuZGVmYXVsdFZh
bHVlID0gcHJvcHMuZGVmYXVsdFZhbHVlOworICAgIH0KKyAgfSwKKworICBwb3N0TW91bnRXcmFw
cGVyOiBmdW5jdGlvbiAoaW5zdCkgeworICAgIC8vIFRoaXMgaXMgaW4gcG9zdE1vdW50IGJlY2F1
c2Ugd2UgbmVlZCBhY2Nlc3MgdG8gdGhlIERPTSBub2RlLCB3aGljaCBpcyBub3QKKyAgICAvLyBh
dmFpbGFibGUgdW50aWwgYWZ0ZXIgdGhlIGNvbXBvbmVudCBoYXMgbW91bnRlZC4KKyAgICB2YXIg
bm9kZSA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKGluc3QpOwor
CisgICAgLy8gV2FybmluZzogbm9kZS52YWx1ZSBtYXkgYmUgdGhlIGVtcHR5IHN0cmluZyBhdCB0
aGlzIHBvaW50IChJRTExKSBpZiBwbGFjZWhvbGRlciBpcyBzZXQuCisgICAgbm9kZS52YWx1ZSA9
IG5vZGUudGV4dENvbnRlbnQ7IC8vIERldGFjaCB2YWx1ZSBmcm9tIGRlZmF1bHRWYWx1ZQorICB9
Cit9OworCitmdW5jdGlvbiBfaGFuZGxlQ2hhbmdlKGV2ZW50KSB7CisgIHZhciBwcm9wcyA9IHRo
aXMuX2N1cnJlbnRFbGVtZW50LnByb3BzOworICB2YXIgcmV0dXJuVmFsdWUgPSBMaW5rZWRWYWx1
ZVV0aWxzLmV4ZWN1dGVPbkNoYW5nZShwcm9wcywgZXZlbnQpOworICBSZWFjdFVwZGF0ZXMuYXNh
cChmb3JjZVVwZGF0ZUlmTW91bnRlZCwgdGhpcyk7CisgIHJldHVybiByZXR1cm5WYWx1ZTsKK30K
KworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTVRleHRhcmVhOworfSx7IjEyNSI6MTI1LCIxNTAi
OjE1MCwiMTU3IjoxNTcsIjE1OCI6MTU4LCIyNCI6MjQsIjM0IjozNCwiODIiOjgyfV0sNDc6W2Z1
bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxNS1w
cmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBU
aGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBm
b3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBj
YW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisg
KgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9wcm9kSW52YXJpYW50ID0gX2RlcmVxXygx
MjUpOworCit2YXIgaW52YXJpYW50ID0gX2RlcmVxXygxNTApOworCisvKioKKyAqIFJldHVybiB0
aGUgbG93ZXN0IGNvbW1vbiBhbmNlc3RvciBvZiBBIGFuZCBCLCBvciBudWxsIGlmIHRoZXkgYXJl
IGluCisgKiBkaWZmZXJlbnQgdHJlZXMuCisgKi8KK2Z1bmN0aW9uIGdldExvd2VzdENvbW1vbkFu
Y2VzdG9yKGluc3RBLCBpbnN0QikgeworICAhKCdfaG9zdE5vZGUnIGluIGluc3RBKSA/ICJkZXZl
bG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2dldE5vZGVGcm9t
SW5zdGFuY2U6IEludmFsaWQgYXJndW1lbnQuJykgOiBfcHJvZEludmFyaWFudCgnMzMnKSA6IHZv
aWQgMDsKKyAgISgnX2hvc3ROb2RlJyBpbiBpbnN0QikgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJv
ZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdnZXROb2RlRnJvbUluc3RhbmNlOiBJbnZhbGlk
IGFyZ3VtZW50LicpIDogX3Byb2RJbnZhcmlhbnQoJzMzJykgOiB2b2lkIDA7CisKKyAgdmFyIGRl
cHRoQSA9IDA7CisgIGZvciAodmFyIHRlbXBBID0gaW5zdEE7IHRlbXBBOyB0ZW1wQSA9IHRlbXBB
Ll9ob3N0UGFyZW50KSB7CisgICAgZGVwdGhBKys7CisgIH0KKyAgdmFyIGRlcHRoQiA9IDA7Cisg
IGZvciAodmFyIHRlbXBCID0gaW5zdEI7IHRlbXBCOyB0ZW1wQiA9IHRlbXBCLl9ob3N0UGFyZW50
KSB7CisgICAgZGVwdGhCKys7CisgIH0KKworICAvLyBJZiBBIGlzIGRlZXBlciwgY3Jhd2wgdXAu
CisgIHdoaWxlIChkZXB0aEEgLSBkZXB0aEIgPiAwKSB7CisgICAgaW5zdEEgPSBpbnN0QS5faG9z
dFBhcmVudDsKKyAgICBkZXB0aEEtLTsKKyAgfQorCisgIC8vIElmIEIgaXMgZGVlcGVyLCBjcmF3
bCB1cC4KKyAgd2hpbGUgKGRlcHRoQiAtIGRlcHRoQSA+IDApIHsKKyAgICBpbnN0QiA9IGluc3RC
Ll9ob3N0UGFyZW50OworICAgIGRlcHRoQi0tOworICB9CisKKyAgLy8gV2FsayBpbiBsb2Nrc3Rl
cCB1bnRpbCB3ZSBmaW5kIGEgbWF0Y2guCisgIHZhciBkZXB0aCA9IGRlcHRoQTsKKyAgd2hpbGUg
KGRlcHRoLS0pIHsKKyAgICBpZiAoaW5zdEEgPT09IGluc3RCKSB7CisgICAgICByZXR1cm4gaW5z
dEE7CisgICAgfQorICAgIGluc3RBID0gaW5zdEEuX2hvc3RQYXJlbnQ7CisgICAgaW5zdEIgPSBp
bnN0Qi5faG9zdFBhcmVudDsKKyAgfQorICByZXR1cm4gbnVsbDsKK30KKworLyoqCisgKiBSZXR1
cm4gaWYgQSBpcyBhbiBhbmNlc3RvciBvZiBCLgorICovCitmdW5jdGlvbiBpc0FuY2VzdG9yKGlu
c3RBLCBpbnN0QikgeworICAhKCdfaG9zdE5vZGUnIGluIGluc3RBKSA/ICJkZXZlbG9wbWVudCIg
IT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2lzQW5jZXN0b3I6IEludmFsaWQg
YXJndW1lbnQuJykgOiBfcHJvZEludmFyaWFudCgnMzUnKSA6IHZvaWQgMDsKKyAgISgnX2hvc3RO
b2RlJyBpbiBpbnN0QikgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlh
bnQoZmFsc2UsICdpc0FuY2VzdG9yOiBJbnZhbGlkIGFyZ3VtZW50LicpIDogX3Byb2RJbnZhcmlh
bnQoJzM1JykgOiB2b2lkIDA7CisKKyAgd2hpbGUgKGluc3RCKSB7CisgICAgaWYgKGluc3RCID09
PSBpbnN0QSkgeworICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGluc3RCID0gaW5zdEIu
X2hvc3RQYXJlbnQ7CisgIH0KKyAgcmV0dXJuIGZhbHNlOworfQorCisvKioKKyAqIFJldHVybiB0
aGUgcGFyZW50IGluc3RhbmNlIG9mIHRoZSBwYXNzZWQtaW4gaW5zdGFuY2UuCisgKi8KK2Z1bmN0
aW9uIGdldFBhcmVudEluc3RhbmNlKGluc3QpIHsKKyAgISgnX2hvc3ROb2RlJyBpbiBpbnN0KSA/
ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2dldFBh
cmVudEluc3RhbmNlOiBJbnZhbGlkIGFyZ3VtZW50LicpIDogX3Byb2RJbnZhcmlhbnQoJzM2Jykg
OiB2b2lkIDA7CisKKyAgcmV0dXJuIGluc3QuX2hvc3RQYXJlbnQ7Cit9CisKKy8qKgorICogU2lt
dWxhdGVzIHRoZSB0cmF2ZXJzYWwgb2YgYSB0d28tcGhhc2UsIGNhcHR1cmUvYnViYmxlIGV2ZW50
IGRpc3BhdGNoLgorICovCitmdW5jdGlvbiB0cmF2ZXJzZVR3b1BoYXNlKGluc3QsIGZuLCBhcmcp
IHsKKyAgdmFyIHBhdGggPSBbXTsKKyAgd2hpbGUgKGluc3QpIHsKKyAgICBwYXRoLnB1c2goaW5z
dCk7CisgICAgaW5zdCA9IGluc3QuX2hvc3RQYXJlbnQ7CisgIH0KKyAgdmFyIGk7CisgIGZvciAo
aSA9IHBhdGgubGVuZ3RoOyBpLS0gPiAwOykgeworICAgIGZuKHBhdGhbaV0sICdjYXB0dXJlZCcs
IGFyZyk7CisgIH0KKyAgZm9yIChpID0gMDsgaSA8IHBhdGgubGVuZ3RoOyBpKyspIHsKKyAgICBm
bihwYXRoW2ldLCAnYnViYmxlZCcsIGFyZyk7CisgIH0KK30KKworLyoqCisgKiBUcmF2ZXJzZXMg
dGhlIElEIGhpZXJhcmNoeSBhbmQgaW52b2tlcyB0aGUgc3VwcGxpZWQgYGNiYCBvbiBhbnkgSURz
IHRoYXQKKyAqIHNob3VsZCB3b3VsZCByZWNlaXZlIGEgYG1vdXNlRW50ZXJgIG9yIGBtb3VzZUxl
YXZlYCBldmVudC4KKyAqCisgKiBEb2VzIG5vdCBpbnZva2UgdGhlIGNhbGxiYWNrIG9uIHRoZSBu
ZWFyZXN0IGNvbW1vbiBhbmNlc3RvciBiZWNhdXNlIG5vdGhpbmcKKyAqICJlbnRlcmVkIiBvciAi
bGVmdCIgdGhhdCBlbGVtZW50LgorICovCitmdW5jdGlvbiB0cmF2ZXJzZUVudGVyTGVhdmUoZnJv
bSwgdG8sIGZuLCBhcmdGcm9tLCBhcmdUbykgeworICB2YXIgY29tbW9uID0gZnJvbSAmJiB0byA/
IGdldExvd2VzdENvbW1vbkFuY2VzdG9yKGZyb20sIHRvKSA6IG51bGw7CisgIHZhciBwYXRoRnJv
bSA9IFtdOworICB3aGlsZSAoZnJvbSAmJiBmcm9tICE9PSBjb21tb24pIHsKKyAgICBwYXRoRnJv
bS5wdXNoKGZyb20pOworICAgIGZyb20gPSBmcm9tLl9ob3N0UGFyZW50OworICB9CisgIHZhciBw
YXRoVG8gPSBbXTsKKyAgd2hpbGUgKHRvICYmIHRvICE9PSBjb21tb24pIHsKKyAgICBwYXRoVG8u
cHVzaCh0byk7CisgICAgdG8gPSB0by5faG9zdFBhcmVudDsKKyAgfQorICB2YXIgaTsKKyAgZm9y
IChpID0gMDsgaSA8IHBhdGhGcm9tLmxlbmd0aDsgaSsrKSB7CisgICAgZm4ocGF0aEZyb21baV0s
ICdidWJibGVkJywgYXJnRnJvbSk7CisgIH0KKyAgZm9yIChpID0gcGF0aFRvLmxlbmd0aDsgaS0t
ID4gMDspIHsKKyAgICBmbihwYXRoVG9baV0sICdjYXB0dXJlZCcsIGFyZ1RvKTsKKyAgfQorfQor
Cittb2R1bGUuZXhwb3J0cyA9IHsKKyAgaXNBbmNlc3RvcjogaXNBbmNlc3RvciwKKyAgZ2V0TG93
ZXN0Q29tbW9uQW5jZXN0b3I6IGdldExvd2VzdENvbW1vbkFuY2VzdG9yLAorICBnZXRQYXJlbnRJ
bnN0YW5jZTogZ2V0UGFyZW50SW5zdGFuY2UsCisgIHRyYXZlcnNlVHdvUGhhc2U6IHRyYXZlcnNl
VHdvUGhhc2UsCisgIHRyYXZlcnNlRW50ZXJMZWF2ZTogdHJhdmVyc2VFbnRlckxlYXZlCit9Owor
fSx7IjEyNSI6MTI1LCIxNTAiOjE1MH1dLDQ4OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBv
cnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisK
K3ZhciBfYXNzaWduID0gX2RlcmVxXygxNTgpOworCit2YXIgUmVhY3RET00gPSBfZGVyZXFfKDMx
KTsKKwordmFyIFJlYWN0RE9NVU1ERW50cnkgPSBfYXNzaWduKHsKKyAgX19TRUNSRVRfSU5URVJO
QUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQ6IHsKKyAgICBSZWFjdEluc3RhbmNl
TWFwOiBfZGVyZXFfKDYzKQorICB9Cit9LCBSZWFjdERPTSk7CisKK2lmICgiZGV2ZWxvcG1lbnQi
ICE9PSAncHJvZHVjdGlvbicpIHsKKyAgX2Fzc2lnbihSZWFjdERPTVVNREVudHJ5Ll9fU0VDUkVU
X0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELCB7CisgICAgLy8gUmVh
Y3RQZXJmIGFuZCBSZWFjdFRlc3RVdGlscyBjdXJyZW50bHkgb25seSB3b3JrIHdpdGggdGhlIERP
TSByZW5kZXJlcgorICAgIC8vIHNvIHdlIGV4cG9zZSB0aGVtIGZyb20gaGVyZSwgYnV0IG9ubHkg
aW4gREVWIG1vZGUuCisgICAgUmVhY3RQZXJmOiBfZGVyZXFfKDcxKSwKKyAgICBSZWFjdFRlc3RV
dGlsczogX2RlcmVxXyg4MCkKKyAgfSk7Cit9CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RET01V
TURFbnRyeTsKK30seyIxNTgiOjE1OCwiMzEiOjMxLCI2MyI6NjMsIjcxIjo3MSwiODAiOjgwfV0s
NDk6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQg
MjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGlj
ZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkg
b2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJp
Z2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rv
cnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIERPTVByb3BlcnR5ID0gX2RlcmVx
XygxMSk7Cit2YXIgRXZlbnRQbHVnaW5SZWdpc3RyeSA9IF9kZXJlcV8oMTgpOwordmFyIFJlYWN0
Q29tcG9uZW50VHJlZUhvb2sgPSBfZGVyZXFfKDEzMik7CisKK3ZhciB3YXJuaW5nID0gX2RlcmVx
XygxNTcpOworCitpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgIHZhciBy
ZWFjdFByb3BzID0geworICAgIGNoaWxkcmVuOiB0cnVlLAorICAgIGRhbmdlcm91c2x5U2V0SW5u
ZXJIVE1MOiB0cnVlLAorICAgIGtleTogdHJ1ZSwKKyAgICByZWY6IHRydWUsCisKKyAgICBhdXRv
Rm9jdXM6IHRydWUsCisgICAgZGVmYXVsdFZhbHVlOiB0cnVlLAorICAgIHZhbHVlTGluazogdHJ1
ZSwKKyAgICBkZWZhdWx0Q2hlY2tlZDogdHJ1ZSwKKyAgICBjaGVja2VkTGluazogdHJ1ZSwKKyAg
ICBpbm5lckhUTUw6IHRydWUsCisgICAgc3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nOiB0
cnVlLAorICAgIG9uRm9jdXNJbjogdHJ1ZSwKKyAgICBvbkZvY3VzT3V0OiB0cnVlCisgIH07Cisg
IHZhciB3YXJuZWRQcm9wZXJ0aWVzID0ge307CisKKyAgdmFyIHZhbGlkYXRlUHJvcGVydHkgPSBm
dW5jdGlvbiAodGFnTmFtZSwgbmFtZSwgZGVidWdJRCkgeworICAgIGlmIChET01Qcm9wZXJ0eS5w
cm9wZXJ0aWVzLmhhc093blByb3BlcnR5KG5hbWUpIHx8IERPTVByb3BlcnR5LmlzQ3VzdG9tQXR0
cmlidXRlKG5hbWUpKSB7CisgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgaWYgKHJlYWN0
UHJvcHMuaGFzT3duUHJvcGVydHkobmFtZSkgJiYgcmVhY3RQcm9wc1tuYW1lXSB8fCB3YXJuZWRQ
cm9wZXJ0aWVzLmhhc093blByb3BlcnR5KG5hbWUpICYmIHdhcm5lZFByb3BlcnRpZXNbbmFtZV0p
IHsKKyAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBpZiAoRXZlbnRQbHVnaW5SZWdpc3Ry
eS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkgeworICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorICAgIHdhcm5lZFByb3BlcnRpZXNbbmFtZV0gPSB0cnVlOwor
ICAgIHZhciBsb3dlckNhc2VkTmFtZSA9IG5hbWUudG9Mb3dlckNhc2UoKTsKKworICAgIC8vIGRh
dGEtKiBhdHRyaWJ1dGVzIHNob3VsZCBiZSBsb3dlcmNhc2U7IHN1Z2dlc3QgdGhlIGxvd2VyY2Fz
ZSB2ZXJzaW9uCisgICAgdmFyIHN0YW5kYXJkTmFtZSA9IERPTVByb3BlcnR5LmlzQ3VzdG9tQXR0
cmlidXRlKGxvd2VyQ2FzZWROYW1lKSA/IGxvd2VyQ2FzZWROYW1lIDogRE9NUHJvcGVydHkuZ2V0
UG9zc2libGVTdGFuZGFyZE5hbWUuaGFzT3duUHJvcGVydHkobG93ZXJDYXNlZE5hbWUpID8gRE9N
UHJvcGVydHkuZ2V0UG9zc2libGVTdGFuZGFyZE5hbWVbbG93ZXJDYXNlZE5hbWVdIDogbnVsbDsK
KworICAgIHZhciByZWdpc3RyYXRpb25OYW1lID0gRXZlbnRQbHVnaW5SZWdpc3RyeS5wb3NzaWJs
ZVJlZ2lzdHJhdGlvbk5hbWVzLmhhc093blByb3BlcnR5KGxvd2VyQ2FzZWROYW1lKSA/IEV2ZW50
UGx1Z2luUmVnaXN0cnkucG9zc2libGVSZWdpc3RyYXRpb25OYW1lc1tsb3dlckNhc2VkTmFtZV0g
OiBudWxsOworCisgICAgaWYgKHN0YW5kYXJkTmFtZSAhPSBudWxsKSB7CisgICAgICAiZGV2ZWxv
cG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnVW5rbm93biBET00gcHJv
cGVydHkgJXMuIERpZCB5b3UgbWVhbiAlcz8lcycsIG5hbWUsIHN0YW5kYXJkTmFtZSwgUmVhY3RD
b21wb25lbnRUcmVlSG9vay5nZXRTdGFja0FkZGVuZHVtQnlJRChkZWJ1Z0lEKSkgOiB2b2lkIDA7
CisgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9IGVsc2UgaWYgKHJlZ2lzdHJhdGlvbk5hbWUgIT0g
bnVsbCkgeworICAgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhm
YWxzZSwgJ1Vua25vd24gZXZlbnQgaGFuZGxlciBwcm9wZXJ0eSAlcy4gRGlkIHlvdSBtZWFuIGAl
c2A/JXMnLCBuYW1lLCByZWdpc3RyYXRpb25OYW1lLCBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdl
dFN0YWNrQWRkZW5kdW1CeUlEKGRlYnVnSUQpKSA6IHZvaWQgMDsKKyAgICAgIHJldHVybiB0cnVl
OworICAgIH0gZWxzZSB7CisgICAgICAvLyBXZSB3ZXJlIHVuYWJsZSB0byBndWVzcyB3aGljaCBw
cm9wIHRoZSB1c2VyIGludGVuZGVkLgorICAgICAgLy8gSXQgaXMgbGlrZWx5IHRoYXQgdGhlIHVz
ZXIgd2FzIGp1c3QgYmxpbmRseSBzcHJlYWRpbmcvZm9yd2FyZGluZyBwcm9wcworICAgICAgLy8g
Q29tcG9uZW50cyBzaG91bGQgYmUgY2FyZWZ1bCB0byBvbmx5IHJlbmRlciB2YWxpZCBwcm9wcy9h
dHRyaWJ1dGVzLgorICAgICAgLy8gV2FybmluZyB3aWxsIGJlIGludm9rZWQgaW4gd2FyblVua25v
d25Qcm9wZXJ0aWVzIHRvIGFsbG93IGdyb3VwaW5nLgorICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKyAgfTsKK30KKwordmFyIHdhcm5Vbmtub3duUHJvcGVydGllcyA9IGZ1bmN0aW9uIChkZWJ1
Z0lELCBlbGVtZW50KSB7CisgIHZhciB1bmtub3duUHJvcHMgPSBbXTsKKyAgZm9yICh2YXIga2V5
IGluIGVsZW1lbnQucHJvcHMpIHsKKyAgICB2YXIgaXNWYWxpZCA9IHZhbGlkYXRlUHJvcGVydHko
ZWxlbWVudC50eXBlLCBrZXksIGRlYnVnSUQpOworICAgIGlmICghaXNWYWxpZCkgeworICAgICAg
dW5rbm93blByb3BzLnB1c2goa2V5KTsKKyAgICB9CisgIH0KKworICB2YXIgdW5rbm93blByb3BT
dHJpbmcgPSB1bmtub3duUHJvcHMubWFwKGZ1bmN0aW9uIChwcm9wKSB7CisgICAgcmV0dXJuICdg
JyArIHByb3AgKyAnYCc7CisgIH0pLmpvaW4oJywgJyk7CisKKyAgaWYgKHVua25vd25Qcm9wcy5s
ZW5ndGggPT09IDEpIHsKKyAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJu
aW5nKGZhbHNlLCAnVW5rbm93biBwcm9wICVzIG9uIDwlcz4gdGFnLiBSZW1vdmUgdGhpcyBwcm9w
IGZyb20gdGhlIGVsZW1lbnQuICcgKyAnRm9yIGRldGFpbHMsIHNlZSBodHRwczovL2ZiLm1lL3Jl
YWN0LXVua25vd24tcHJvcCVzJywgdW5rbm93blByb3BTdHJpbmcsIGVsZW1lbnQudHlwZSwgUmVh
Y3RDb21wb25lbnRUcmVlSG9vay5nZXRTdGFja0FkZGVuZHVtQnlJRChkZWJ1Z0lEKSkgOiB2b2lk
IDA7CisgIH0gZWxzZSBpZiAodW5rbm93blByb3BzLmxlbmd0aCA+IDEpIHsKKyAgICAiZGV2ZWxv
cG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnVW5rbm93biBwcm9wcyAl
cyBvbiA8JXM+IHRhZy4gUmVtb3ZlIHRoZXNlIHByb3BzIGZyb20gdGhlIGVsZW1lbnQuICcgKyAn
Rm9yIGRldGFpbHMsIHNlZSBodHRwczovL2ZiLm1lL3JlYWN0LXVua25vd24tcHJvcCVzJywgdW5r
bm93blByb3BTdHJpbmcsIGVsZW1lbnQudHlwZSwgUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRT
dGFja0FkZGVuZHVtQnlJRChkZWJ1Z0lEKSkgOiB2b2lkIDA7CisgIH0KK307CisKK2Z1bmN0aW9u
IGhhbmRsZUVsZW1lbnQoZGVidWdJRCwgZWxlbWVudCkgeworICBpZiAoZWxlbWVudCA9PSBudWxs
IHx8IHR5cGVvZiBlbGVtZW50LnR5cGUgIT09ICdzdHJpbmcnKSB7CisgICAgcmV0dXJuOworICB9
CisgIGlmIChlbGVtZW50LnR5cGUuaW5kZXhPZignLScpID49IDAgfHwgZWxlbWVudC5wcm9wcy5p
cykgeworICAgIHJldHVybjsKKyAgfQorICB3YXJuVW5rbm93blByb3BlcnRpZXMoZGVidWdJRCwg
ZWxlbWVudCk7Cit9CisKK3ZhciBSZWFjdERPTVVua25vd25Qcm9wZXJ0eUhvb2sgPSB7CisgIG9u
QmVmb3JlTW91bnRDb21wb25lbnQ6IGZ1bmN0aW9uIChkZWJ1Z0lELCBlbGVtZW50KSB7CisgICAg
aGFuZGxlRWxlbWVudChkZWJ1Z0lELCBlbGVtZW50KTsKKyAgfSwKKyAgb25CZWZvcmVVcGRhdGVD
b21wb25lbnQ6IGZ1bmN0aW9uIChkZWJ1Z0lELCBlbGVtZW50KSB7CisgICAgaGFuZGxlRWxlbWVu
dChkZWJ1Z0lELCBlbGVtZW50KTsKKyAgfQorfTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdERP
TVVua25vd25Qcm9wZXJ0eUhvb2s7Cit9LHsiMTEiOjExLCIxMzIiOjEzMiwiMTU3IjoxNTcsIjE4
IjoxOH1dLDUwOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29w
eXJpZ2h0IDIwMTYtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0
eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LgorICoKKyAqIAorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIFJlYWN0SW52
YWxpZFNldFN0YXRlV2FybmluZ0hvb2sgPSBfZGVyZXFfKDY1KTsKK3ZhciBSZWFjdEhvc3RPcGVy
YXRpb25IaXN0b3J5SG9vayA9IF9kZXJlcV8oNjApOwordmFyIFJlYWN0Q29tcG9uZW50VHJlZUhv
b2sgPSBfZGVyZXFfKDEzMik7Cit2YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSBfZGVyZXFfKDEz
Nik7CisKK3ZhciBwZXJmb3JtYW5jZU5vdyA9IF9kZXJlcV8oMTU1KTsKK3ZhciB3YXJuaW5nID0g
X2RlcmVxXygxNTcpOworCit2YXIgaG9va3MgPSBbXTsKK3ZhciBkaWRIb29rVGhyb3dGb3JFdmVu
dCA9IHt9OworCitmdW5jdGlvbiBjYWxsSG9vayhldmVudCwgZm4sIGNvbnRleHQsIGFyZzEsIGFy
ZzIsIGFyZzMsIGFyZzQsIGFyZzUpIHsKKyAgdHJ5IHsKKyAgICBmbi5jYWxsKGNvbnRleHQsIGFy
ZzEsIGFyZzIsIGFyZzMsIGFyZzQsIGFyZzUpOworICB9IGNhdGNoIChlKSB7CisgICAgImRldmVs
b3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhkaWRIb29rVGhyb3dGb3JFdmVudFtl
dmVudF0sICdFeGNlcHRpb24gdGhyb3duIGJ5IGhvb2sgd2hpbGUgaGFuZGxpbmcgJXM6ICVzJywg
ZXZlbnQsIGUgKyAnXG4nICsgZS5zdGFjaykgOiB2b2lkIDA7CisgICAgZGlkSG9va1Rocm93Rm9y
RXZlbnRbZXZlbnRdID0gdHJ1ZTsKKyAgfQorfQorCitmdW5jdGlvbiBlbWl0RXZlbnQoZXZlbnQs
IGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQsIGFyZzUpIHsKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBo
b29rcy5sZW5ndGg7IGkrKykgeworICAgIHZhciBob29rID0gaG9va3NbaV07CisgICAgdmFyIGZu
ID0gaG9va1tldmVudF07CisgICAgaWYgKGZuKSB7CisgICAgICBjYWxsSG9vayhldmVudCwgZm4s
IGhvb2ssIGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQsIGFyZzUpOworICAgIH0KKyAgfQorfQorCit2
YXIgaXNQcm9maWxpbmcgPSBmYWxzZTsKK3ZhciBmbHVzaEhpc3RvcnkgPSBbXTsKK3ZhciBsaWZl
Q3ljbGVUaW1lclN0YWNrID0gW107Cit2YXIgY3VycmVudEZsdXNoTmVzdGluZyA9IDA7Cit2YXIg
Y3VycmVudEZsdXNoTWVhc3VyZW1lbnRzID0gW107Cit2YXIgY3VycmVudEZsdXNoU3RhcnRUaW1l
ID0gMDsKK3ZhciBjdXJyZW50VGltZXJEZWJ1Z0lEID0gbnVsbDsKK3ZhciBjdXJyZW50VGltZXJT
dGFydFRpbWUgPSAwOwordmFyIGN1cnJlbnRUaW1lck5lc3RlZEZsdXNoRHVyYXRpb24gPSAwOwor
dmFyIGN1cnJlbnRUaW1lclR5cGUgPSBudWxsOworCit2YXIgbGlmZUN5Y2xlVGltZXJIYXNXYXJu
ZWQgPSBmYWxzZTsKKworZnVuY3Rpb24gY2xlYXJIaXN0b3J5KCkgeworICBSZWFjdENvbXBvbmVu
dFRyZWVIb29rLnB1cmdlVW5tb3VudGVkQ29tcG9uZW50cygpOworICBSZWFjdEhvc3RPcGVyYXRp
b25IaXN0b3J5SG9vay5jbGVhckhpc3RvcnkoKTsKK30KKworZnVuY3Rpb24gZ2V0VHJlZVNuYXBz
aG90KHJlZ2lzdGVyZWRJRHMpIHsKKyAgcmV0dXJuIHJlZ2lzdGVyZWRJRHMucmVkdWNlKGZ1bmN0
aW9uICh0cmVlLCBpZCkgeworICAgIHZhciBvd25lcklEID0gUmVhY3RDb21wb25lbnRUcmVlSG9v
ay5nZXRPd25lcklEKGlkKTsKKyAgICB2YXIgcGFyZW50SUQgPSBSZWFjdENvbXBvbmVudFRyZWVI
b29rLmdldFBhcmVudElEKGlkKTsKKyAgICB0cmVlW2lkXSA9IHsKKyAgICAgIGRpc3BsYXlOYW1l
OiBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldERpc3BsYXlOYW1lKGlkKSwKKyAgICAgIHRleHQ6
IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0VGV4dChpZCksCisgICAgICB1cGRhdGVDb3VudDog
UmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRVcGRhdGVDb3VudChpZCksCisgICAgICBjaGlsZElE
czogUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRDaGlsZElEcyhpZCksCisgICAgICAvLyBUZXh0
IG5vZGVzIGRvbid0IGhhdmUgb3duZXJzIGJ1dCB0aGlzIGlzIGNsb3NlIGVub3VnaC4KKyAgICAg
IG93bmVySUQ6IG93bmVySUQgfHwgcGFyZW50SUQgJiYgUmVhY3RDb21wb25lbnRUcmVlSG9vay5n
ZXRPd25lcklEKHBhcmVudElEKSB8fCAwLAorICAgICAgcGFyZW50SUQ6IHBhcmVudElECisgICAg
fTsKKyAgICByZXR1cm4gdHJlZTsKKyAgfSwge30pOworfQorCitmdW5jdGlvbiByZXNldE1lYXN1
cmVtZW50cygpIHsKKyAgdmFyIHByZXZpb3VzU3RhcnRUaW1lID0gY3VycmVudEZsdXNoU3RhcnRU
aW1lOworICB2YXIgcHJldmlvdXNNZWFzdXJlbWVudHMgPSBjdXJyZW50Rmx1c2hNZWFzdXJlbWVu
dHM7CisgIHZhciBwcmV2aW91c09wZXJhdGlvbnMgPSBSZWFjdEhvc3RPcGVyYXRpb25IaXN0b3J5
SG9vay5nZXRIaXN0b3J5KCk7CisKKyAgaWYgKGN1cnJlbnRGbHVzaE5lc3RpbmcgPT09IDApIHsK
KyAgICBjdXJyZW50Rmx1c2hTdGFydFRpbWUgPSAwOworICAgIGN1cnJlbnRGbHVzaE1lYXN1cmVt
ZW50cyA9IFtdOworICAgIGNsZWFySGlzdG9yeSgpOworICAgIHJldHVybjsKKyAgfQorCisgIGlm
IChwcmV2aW91c01lYXN1cmVtZW50cy5sZW5ndGggfHwgcHJldmlvdXNPcGVyYXRpb25zLmxlbmd0
aCkgeworICAgIHZhciByZWdpc3RlcmVkSURzID0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRS
ZWdpc3RlcmVkSURzKCk7CisgICAgZmx1c2hIaXN0b3J5LnB1c2goeworICAgICAgZHVyYXRpb246
IHBlcmZvcm1hbmNlTm93KCkgLSBwcmV2aW91c1N0YXJ0VGltZSwKKyAgICAgIG1lYXN1cmVtZW50
czogcHJldmlvdXNNZWFzdXJlbWVudHMgfHwgW10sCisgICAgICBvcGVyYXRpb25zOiBwcmV2aW91
c09wZXJhdGlvbnMgfHwgW10sCisgICAgICB0cmVlU25hcHNob3Q6IGdldFRyZWVTbmFwc2hvdChy
ZWdpc3RlcmVkSURzKQorICAgIH0pOworICB9CisKKyAgY2xlYXJIaXN0b3J5KCk7CisgIGN1cnJl
bnRGbHVzaFN0YXJ0VGltZSA9IHBlcmZvcm1hbmNlTm93KCk7CisgIGN1cnJlbnRGbHVzaE1lYXN1
cmVtZW50cyA9IFtdOworfQorCitmdW5jdGlvbiBjaGVja0RlYnVnSUQoZGVidWdJRCkgeworICB2
YXIgYWxsb3dSb290ID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1
bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiBmYWxzZTsKKworICBpZiAoYWxsb3dSb290ICYmIGRl
YnVnSUQgPT09IDApIHsKKyAgICByZXR1cm47CisgIH0KKyAgaWYgKCFkZWJ1Z0lEKSB7CisgICAg
ImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1JlYWN0RGVi
dWdUb29sOiBkZWJ1Z0lEIG1heSBub3QgYmUgZW1wdHkuJykgOiB2b2lkIDA7CisgIH0KK30KKwor
ZnVuY3Rpb24gYmVnaW5MaWZlQ3ljbGVUaW1lcihkZWJ1Z0lELCB0aW1lclR5cGUpIHsKKyAgaWYg
KGN1cnJlbnRGbHVzaE5lc3RpbmcgPT09IDApIHsKKyAgICByZXR1cm47CisgIH0KKyAgaWYgKGN1
cnJlbnRUaW1lclR5cGUgJiYgIWxpZmVDeWNsZVRpbWVySGFzV2FybmVkKSB7CisgICAgImRldmVs
b3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1RoZXJlIGlzIGFuIGlu
dGVybmFsIGVycm9yIGluIHRoZSBSZWFjdCBwZXJmb3JtYW5jZSBtZWFzdXJlbWVudCBjb2RlLiAn
ICsgJ0RpZCBub3QgZXhwZWN0ICVzIHRpbWVyIHRvIHN0YXJ0IHdoaWxlICVzIHRpbWVyIGlzIHN0
aWxsIGluICcgKyAncHJvZ3Jlc3MgZm9yICVzIGluc3RhbmNlLicsIHRpbWVyVHlwZSwgY3VycmVu
dFRpbWVyVHlwZSB8fCAnbm8nLCBkZWJ1Z0lEID09PSBjdXJyZW50VGltZXJEZWJ1Z0lEID8gJ3Ro
ZSBzYW1lJyA6ICdhbm90aGVyJykgOiB2b2lkIDA7CisgICAgbGlmZUN5Y2xlVGltZXJIYXNXYXJu
ZWQgPSB0cnVlOworICB9CisgIGN1cnJlbnRUaW1lclN0YXJ0VGltZSA9IHBlcmZvcm1hbmNlTm93
KCk7CisgIGN1cnJlbnRUaW1lck5lc3RlZEZsdXNoRHVyYXRpb24gPSAwOworICBjdXJyZW50VGlt
ZXJEZWJ1Z0lEID0gZGVidWdJRDsKKyAgY3VycmVudFRpbWVyVHlwZSA9IHRpbWVyVHlwZTsKK30K
KworZnVuY3Rpb24gZW5kTGlmZUN5Y2xlVGltZXIoZGVidWdJRCwgdGltZXJUeXBlKSB7CisgIGlm
IChjdXJyZW50Rmx1c2hOZXN0aW5nID09PSAwKSB7CisgICAgcmV0dXJuOworICB9CisgIGlmIChj
dXJyZW50VGltZXJUeXBlICE9PSB0aW1lclR5cGUgJiYgIWxpZmVDeWNsZVRpbWVySGFzV2FybmVk
KSB7CisgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwg
J1RoZXJlIGlzIGFuIGludGVybmFsIGVycm9yIGluIHRoZSBSZWFjdCBwZXJmb3JtYW5jZSBtZWFz
dXJlbWVudCBjb2RlLiAnICsgJ1dlIGRpZCBub3QgZXhwZWN0ICVzIHRpbWVyIHRvIHN0b3Agd2hp
bGUgJXMgdGltZXIgaXMgc3RpbGwgaW4gJyArICdwcm9ncmVzcyBmb3IgJXMgaW5zdGFuY2UuIFBs
ZWFzZSByZXBvcnQgdGhpcyBhcyBhIGJ1ZyBpbiBSZWFjdC4nLCB0aW1lclR5cGUsIGN1cnJlbnRU
aW1lclR5cGUgfHwgJ25vJywgZGVidWdJRCA9PT0gY3VycmVudFRpbWVyRGVidWdJRCA/ICd0aGUg
c2FtZScgOiAnYW5vdGhlcicpIDogdm9pZCAwOworICAgIGxpZmVDeWNsZVRpbWVySGFzV2FybmVk
ID0gdHJ1ZTsKKyAgfQorICBpZiAoaXNQcm9maWxpbmcpIHsKKyAgICBjdXJyZW50Rmx1c2hNZWFz
dXJlbWVudHMucHVzaCh7CisgICAgICB0aW1lclR5cGU6IHRpbWVyVHlwZSwKKyAgICAgIGluc3Rh
bmNlSUQ6IGRlYnVnSUQsCisgICAgICBkdXJhdGlvbjogcGVyZm9ybWFuY2VOb3coKSAtIGN1cnJl
bnRUaW1lclN0YXJ0VGltZSAtIGN1cnJlbnRUaW1lck5lc3RlZEZsdXNoRHVyYXRpb24KKyAgICB9
KTsKKyAgfQorICBjdXJyZW50VGltZXJTdGFydFRpbWUgPSAwOworICBjdXJyZW50VGltZXJOZXN0
ZWRGbHVzaER1cmF0aW9uID0gMDsKKyAgY3VycmVudFRpbWVyRGVidWdJRCA9IG51bGw7CisgIGN1
cnJlbnRUaW1lclR5cGUgPSBudWxsOworfQorCitmdW5jdGlvbiBwYXVzZUN1cnJlbnRMaWZlQ3lj
bGVUaW1lcigpIHsKKyAgdmFyIGN1cnJlbnRUaW1lciA9IHsKKyAgICBzdGFydFRpbWU6IGN1cnJl
bnRUaW1lclN0YXJ0VGltZSwKKyAgICBuZXN0ZWRGbHVzaFN0YXJ0VGltZTogcGVyZm9ybWFuY2VO
b3coKSwKKyAgICBkZWJ1Z0lEOiBjdXJyZW50VGltZXJEZWJ1Z0lELAorICAgIHRpbWVyVHlwZTog
Y3VycmVudFRpbWVyVHlwZQorICB9OworICBsaWZlQ3ljbGVUaW1lclN0YWNrLnB1c2goY3VycmVu
dFRpbWVyKTsKKyAgY3VycmVudFRpbWVyU3RhcnRUaW1lID0gMDsKKyAgY3VycmVudFRpbWVyTmVz
dGVkRmx1c2hEdXJhdGlvbiA9IDA7CisgIGN1cnJlbnRUaW1lckRlYnVnSUQgPSBudWxsOworICBj
dXJyZW50VGltZXJUeXBlID0gbnVsbDsKK30KKworZnVuY3Rpb24gcmVzdW1lQ3VycmVudExpZmVD
eWNsZVRpbWVyKCkgeworICB2YXIgX2xpZmVDeWNsZVRpbWVyU3RhY2skID0gbGlmZUN5Y2xlVGlt
ZXJTdGFjay5wb3AoKSwKKyAgICAgIHN0YXJ0VGltZSA9IF9saWZlQ3ljbGVUaW1lclN0YWNrJC5z
dGFydFRpbWUsCisgICAgICBuZXN0ZWRGbHVzaFN0YXJ0VGltZSA9IF9saWZlQ3ljbGVUaW1lclN0
YWNrJC5uZXN0ZWRGbHVzaFN0YXJ0VGltZSwKKyAgICAgIGRlYnVnSUQgPSBfbGlmZUN5Y2xlVGlt
ZXJTdGFjayQuZGVidWdJRCwKKyAgICAgIHRpbWVyVHlwZSA9IF9saWZlQ3ljbGVUaW1lclN0YWNr
JC50aW1lclR5cGU7CisKKyAgdmFyIG5lc3RlZEZsdXNoRHVyYXRpb24gPSBwZXJmb3JtYW5jZU5v
dygpIC0gbmVzdGVkRmx1c2hTdGFydFRpbWU7CisgIGN1cnJlbnRUaW1lclN0YXJ0VGltZSA9IHN0
YXJ0VGltZTsKKyAgY3VycmVudFRpbWVyTmVzdGVkRmx1c2hEdXJhdGlvbiArPSBuZXN0ZWRGbHVz
aER1cmF0aW9uOworICBjdXJyZW50VGltZXJEZWJ1Z0lEID0gZGVidWdJRDsKKyAgY3VycmVudFRp
bWVyVHlwZSA9IHRpbWVyVHlwZTsKK30KKwordmFyIGxhc3RNYXJrVGltZVN0YW1wID0gMDsKK3Zh
ciBjYW5Vc2VQZXJmb3JtYW5jZU1lYXN1cmUgPQorLy8gJEZsb3dGaXhNZSBodHRwczovL2dpdGh1
Yi5jb20vZmFjZWJvb2svZmxvdy9pc3N1ZXMvMjM0NQordHlwZW9mIHBlcmZvcm1hbmNlICE9PSAn
dW5kZWZpbmVkJyAmJiB0eXBlb2YgcGVyZm9ybWFuY2UubWFyayA9PT0gJ2Z1bmN0aW9uJyAmJiB0
eXBlb2YgcGVyZm9ybWFuY2UuY2xlYXJNYXJrcyA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgcGVy
Zm9ybWFuY2UubWVhc3VyZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgcGVyZm9ybWFuY2UuY2xl
YXJNZWFzdXJlcyA9PT0gJ2Z1bmN0aW9uJzsKKworZnVuY3Rpb24gc2hvdWxkTWFyayhkZWJ1Z0lE
KSB7CisgIGlmICghaXNQcm9maWxpbmcgfHwgIWNhblVzZVBlcmZvcm1hbmNlTWVhc3VyZSkgewor
ICAgIHJldHVybiBmYWxzZTsKKyAgfQorICB2YXIgZWxlbWVudCA9IFJlYWN0Q29tcG9uZW50VHJl
ZUhvb2suZ2V0RWxlbWVudChkZWJ1Z0lEKTsKKyAgaWYgKGVsZW1lbnQgPT0gbnVsbCB8fCB0eXBl
b2YgZWxlbWVudCAhPT0gJ29iamVjdCcpIHsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKyAgdmFy
IGlzSG9zdEVsZW1lbnQgPSB0eXBlb2YgZWxlbWVudC50eXBlID09PSAnc3RyaW5nJzsKKyAgaWYg
KGlzSG9zdEVsZW1lbnQpIHsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKyAgcmV0dXJuIHRydWU7
Cit9CisKK2Z1bmN0aW9uIG1hcmtCZWdpbihkZWJ1Z0lELCBtYXJrVHlwZSkgeworICBpZiAoIXNo
b3VsZE1hcmsoZGVidWdJRCkpIHsKKyAgICByZXR1cm47CisgIH0KKworICB2YXIgbWFya05hbWUg
PSBkZWJ1Z0lEICsgJzo6JyArIG1hcmtUeXBlOworICBsYXN0TWFya1RpbWVTdGFtcCA9IHBlcmZv
cm1hbmNlTm93KCk7CisgIHBlcmZvcm1hbmNlLm1hcmsobWFya05hbWUpOworfQorCitmdW5jdGlv
biBtYXJrRW5kKGRlYnVnSUQsIG1hcmtUeXBlKSB7CisgIGlmICghc2hvdWxkTWFyayhkZWJ1Z0lE
KSkgeworICAgIHJldHVybjsKKyAgfQorCisgIHZhciBtYXJrTmFtZSA9IGRlYnVnSUQgKyAnOjon
ICsgbWFya1R5cGU7CisgIHZhciBkaXNwbGF5TmFtZSA9IFJlYWN0Q29tcG9uZW50VHJlZUhvb2su
Z2V0RGlzcGxheU5hbWUoZGVidWdJRCkgfHwgJ1Vua25vd24nOworCisgIC8vIENocm9tZSBoYXMg
YW4gaXNzdWUgb2YgZHJvcHBpbmcgbWFya2VycyByZWNvcmRlZCB0b28gZmFzdDoKKyAgLy8gaHR0
cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9NjQwNjUy
CisgIC8vIFRvIHdvcmsgYXJvdW5kIHRoaXMsIHdlIHdpbGwgbm90IHJlcG9ydCB2ZXJ5IHNtYWxs
IG1lYXN1cmVtZW50cy4KKyAgLy8gSSBkZXRlcm1pbmVkIHRoZSBtYWdpYyBudW1iZXIgYnkgdHdl
YWtpbmcgaXQgYmFjayBhbmQgZm9ydGguCisgIC8vIDAuMDVtcyB3YXMgZW5vdWdoIHRvIHByZXZl
bnQgdGhlIGlzc3VlLCBidXQgSSBzZXQgaXQgdG8gMC4xbXMgdG8gYmUgc2FmZS4KKyAgLy8gV2hl
biB0aGUgYnVnIGlzIGZpeGVkLCB3ZSBjYW4gYG1lYXN1cmUoKWAgdW5jb25kaXRpb25hbGx5IGlm
IHdlIHdhbnQgdG8uCisgIHZhciB0aW1lU3RhbXAgPSBwZXJmb3JtYW5jZU5vdygpOworICBpZiAo
dGltZVN0YW1wIC0gbGFzdE1hcmtUaW1lU3RhbXAgPiAwLjEpIHsKKyAgICB2YXIgbWVhc3VyZW1l
bnROYW1lID0gZGlzcGxheU5hbWUgKyAnIFsnICsgbWFya1R5cGUgKyAnXSc7CisgICAgcGVyZm9y
bWFuY2UubWVhc3VyZShtZWFzdXJlbWVudE5hbWUsIG1hcmtOYW1lKTsKKyAgfQorCisgIHBlcmZv
cm1hbmNlLmNsZWFyTWFya3MobWFya05hbWUpOworICBwZXJmb3JtYW5jZS5jbGVhck1lYXN1cmVz
KG1lYXN1cmVtZW50TmFtZSk7Cit9CisKK3ZhciBSZWFjdERlYnVnVG9vbCA9IHsKKyAgYWRkSG9v
azogZnVuY3Rpb24gKGhvb2spIHsKKyAgICBob29rcy5wdXNoKGhvb2spOworICB9LAorICByZW1v
dmVIb29rOiBmdW5jdGlvbiAoaG9vaykgeworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaG9va3Mu
bGVuZ3RoOyBpKyspIHsKKyAgICAgIGlmIChob29rc1tpXSA9PT0gaG9vaykgeworICAgICAgICBo
b29rcy5zcGxpY2UoaSwgMSk7CisgICAgICAgIGktLTsKKyAgICAgIH0KKyAgICB9CisgIH0sCisg
IGlzUHJvZmlsaW5nOiBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIGlzUHJvZmlsaW5nOworICB9
LAorICBiZWdpblByb2ZpbGluZzogZnVuY3Rpb24gKCkgeworICAgIGlmIChpc1Byb2ZpbGluZykg
eworICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlzUHJvZmlsaW5nID0gdHJ1ZTsKKyAgICBm
bHVzaEhpc3RvcnkubGVuZ3RoID0gMDsKKyAgICByZXNldE1lYXN1cmVtZW50cygpOworICAgIFJl
YWN0RGVidWdUb29sLmFkZEhvb2soUmVhY3RIb3N0T3BlcmF0aW9uSGlzdG9yeUhvb2spOworICB9
LAorICBlbmRQcm9maWxpbmc6IGZ1bmN0aW9uICgpIHsKKyAgICBpZiAoIWlzUHJvZmlsaW5nKSB7
CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgaXNQcm9maWxpbmcgPSBmYWxzZTsKKyAgICBy
ZXNldE1lYXN1cmVtZW50cygpOworICAgIFJlYWN0RGVidWdUb29sLnJlbW92ZUhvb2soUmVhY3RI
b3N0T3BlcmF0aW9uSGlzdG9yeUhvb2spOworICB9LAorICBnZXRGbHVzaEhpc3Rvcnk6IGZ1bmN0
aW9uICgpIHsKKyAgICByZXR1cm4gZmx1c2hIaXN0b3J5OworICB9LAorICBvbkJlZ2luRmx1c2g6
IGZ1bmN0aW9uICgpIHsKKyAgICBjdXJyZW50Rmx1c2hOZXN0aW5nKys7CisgICAgcmVzZXRNZWFz
dXJlbWVudHMoKTsKKyAgICBwYXVzZUN1cnJlbnRMaWZlQ3ljbGVUaW1lcigpOworICAgIGVtaXRF
dmVudCgnb25CZWdpbkZsdXNoJyk7CisgIH0sCisgIG9uRW5kRmx1c2g6IGZ1bmN0aW9uICgpIHsK
KyAgICByZXNldE1lYXN1cmVtZW50cygpOworICAgIGN1cnJlbnRGbHVzaE5lc3RpbmctLTsKKyAg
ICByZXN1bWVDdXJyZW50TGlmZUN5Y2xlVGltZXIoKTsKKyAgICBlbWl0RXZlbnQoJ29uRW5kRmx1
c2gnKTsKKyAgfSwKKyAgb25CZWdpbkxpZmVDeWNsZVRpbWVyOiBmdW5jdGlvbiAoZGVidWdJRCwg
dGltZXJUeXBlKSB7CisgICAgY2hlY2tEZWJ1Z0lEKGRlYnVnSUQpOworICAgIGVtaXRFdmVudCgn
b25CZWdpbkxpZmVDeWNsZVRpbWVyJywgZGVidWdJRCwgdGltZXJUeXBlKTsKKyAgICBtYXJrQmVn
aW4oZGVidWdJRCwgdGltZXJUeXBlKTsKKyAgICBiZWdpbkxpZmVDeWNsZVRpbWVyKGRlYnVnSUQs
IHRpbWVyVHlwZSk7CisgIH0sCisgIG9uRW5kTGlmZUN5Y2xlVGltZXI6IGZ1bmN0aW9uIChkZWJ1
Z0lELCB0aW1lclR5cGUpIHsKKyAgICBjaGVja0RlYnVnSUQoZGVidWdJRCk7CisgICAgZW5kTGlm
ZUN5Y2xlVGltZXIoZGVidWdJRCwgdGltZXJUeXBlKTsKKyAgICBtYXJrRW5kKGRlYnVnSUQsIHRp
bWVyVHlwZSk7CisgICAgZW1pdEV2ZW50KCdvbkVuZExpZmVDeWNsZVRpbWVyJywgZGVidWdJRCwg
dGltZXJUeXBlKTsKKyAgfSwKKyAgb25CZWdpblByb2Nlc3NpbmdDaGlsZENvbnRleHQ6IGZ1bmN0
aW9uICgpIHsKKyAgICBlbWl0RXZlbnQoJ29uQmVnaW5Qcm9jZXNzaW5nQ2hpbGRDb250ZXh0Jyk7
CisgIH0sCisgIG9uRW5kUHJvY2Vzc2luZ0NoaWxkQ29udGV4dDogZnVuY3Rpb24gKCkgeworICAg
IGVtaXRFdmVudCgnb25FbmRQcm9jZXNzaW5nQ2hpbGRDb250ZXh0Jyk7CisgIH0sCisgIG9uSG9z
dE9wZXJhdGlvbjogZnVuY3Rpb24gKG9wZXJhdGlvbikgeworICAgIGNoZWNrRGVidWdJRChvcGVy
YXRpb24uaW5zdGFuY2VJRCk7CisgICAgZW1pdEV2ZW50KCdvbkhvc3RPcGVyYXRpb24nLCBvcGVy
YXRpb24pOworICB9LAorICBvblNldFN0YXRlOiBmdW5jdGlvbiAoKSB7CisgICAgZW1pdEV2ZW50
KCdvblNldFN0YXRlJyk7CisgIH0sCisgIG9uU2V0Q2hpbGRyZW46IGZ1bmN0aW9uIChkZWJ1Z0lE
LCBjaGlsZERlYnVnSURzKSB7CisgICAgY2hlY2tEZWJ1Z0lEKGRlYnVnSUQpOworICAgIGNoaWxk
RGVidWdJRHMuZm9yRWFjaChjaGVja0RlYnVnSUQpOworICAgIGVtaXRFdmVudCgnb25TZXRDaGls
ZHJlbicsIGRlYnVnSUQsIGNoaWxkRGVidWdJRHMpOworICB9LAorICBvbkJlZm9yZU1vdW50Q29t
cG9uZW50OiBmdW5jdGlvbiAoZGVidWdJRCwgZWxlbWVudCwgcGFyZW50RGVidWdJRCkgeworICAg
IGNoZWNrRGVidWdJRChkZWJ1Z0lEKTsKKyAgICBjaGVja0RlYnVnSUQocGFyZW50RGVidWdJRCwg
dHJ1ZSk7CisgICAgZW1pdEV2ZW50KCdvbkJlZm9yZU1vdW50Q29tcG9uZW50JywgZGVidWdJRCwg
ZWxlbWVudCwgcGFyZW50RGVidWdJRCk7CisgICAgbWFya0JlZ2luKGRlYnVnSUQsICdtb3VudCcp
OworICB9LAorICBvbk1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAoZGVidWdJRCkgeworICAgIGNo
ZWNrRGVidWdJRChkZWJ1Z0lEKTsKKyAgICBtYXJrRW5kKGRlYnVnSUQsICdtb3VudCcpOworICAg
IGVtaXRFdmVudCgnb25Nb3VudENvbXBvbmVudCcsIGRlYnVnSUQpOworICB9LAorICBvbkJlZm9y
ZVVwZGF0ZUNvbXBvbmVudDogZnVuY3Rpb24gKGRlYnVnSUQsIGVsZW1lbnQpIHsKKyAgICBjaGVj
a0RlYnVnSUQoZGVidWdJRCk7CisgICAgZW1pdEV2ZW50KCdvbkJlZm9yZVVwZGF0ZUNvbXBvbmVu
dCcsIGRlYnVnSUQsIGVsZW1lbnQpOworICAgIG1hcmtCZWdpbihkZWJ1Z0lELCAndXBkYXRlJyk7
CisgIH0sCisgIG9uVXBkYXRlQ29tcG9uZW50OiBmdW5jdGlvbiAoZGVidWdJRCkgeworICAgIGNo
ZWNrRGVidWdJRChkZWJ1Z0lEKTsKKyAgICBtYXJrRW5kKGRlYnVnSUQsICd1cGRhdGUnKTsKKyAg
ICBlbWl0RXZlbnQoJ29uVXBkYXRlQ29tcG9uZW50JywgZGVidWdJRCk7CisgIH0sCisgIG9uQmVm
b3JlVW5tb3VudENvbXBvbmVudDogZnVuY3Rpb24gKGRlYnVnSUQpIHsKKyAgICBjaGVja0RlYnVn
SUQoZGVidWdJRCk7CisgICAgZW1pdEV2ZW50KCdvbkJlZm9yZVVubW91bnRDb21wb25lbnQnLCBk
ZWJ1Z0lEKTsKKyAgICBtYXJrQmVnaW4oZGVidWdJRCwgJ3VubW91bnQnKTsKKyAgfSwKKyAgb25V
bm1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAoZGVidWdJRCkgeworICAgIGNoZWNrRGVidWdJRChk
ZWJ1Z0lEKTsKKyAgICBtYXJrRW5kKGRlYnVnSUQsICd1bm1vdW50Jyk7CisgICAgZW1pdEV2ZW50
KCdvblVubW91bnRDb21wb25lbnQnLCBkZWJ1Z0lEKTsKKyAgfSwKKyAgb25UZXN0RXZlbnQ6IGZ1
bmN0aW9uICgpIHsKKyAgICBlbWl0RXZlbnQoJ29uVGVzdEV2ZW50Jyk7CisgIH0KK307CisKKy8v
IFRPRE8gcmVtb3ZlIHRoZXNlIHdoZW4gUk4vd3d3IGdldHMgdXBkYXRlZAorUmVhY3REZWJ1Z1Rv
b2wuYWRkRGV2dG9vbCA9IFJlYWN0RGVidWdUb29sLmFkZEhvb2s7CitSZWFjdERlYnVnVG9vbC5y
ZW1vdmVEZXZ0b29sID0gUmVhY3REZWJ1Z1Rvb2wucmVtb3ZlSG9vazsKKworUmVhY3REZWJ1Z1Rv
b2wuYWRkSG9vayhSZWFjdEludmFsaWRTZXRTdGF0ZVdhcm5pbmdIb29rKTsKK1JlYWN0RGVidWdU
b29sLmFkZEhvb2soUmVhY3RDb21wb25lbnRUcmVlSG9vayk7Cit2YXIgdXJsID0gRXhlY3V0aW9u
RW52aXJvbm1lbnQuY2FuVXNlRE9NICYmIHdpbmRvdy5sb2NhdGlvbi5ocmVmIHx8ICcnOworaWYg
KC9bPyZdcmVhY3RfcGVyZlxiLy50ZXN0KHVybCkpIHsKKyAgUmVhY3REZWJ1Z1Rvb2wuYmVnaW5Q
cm9maWxpbmcoKTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdERlYnVnVG9vbDsKK30seyIx
MzIiOjEzMiwiMTM2IjoxMzYsIjE1NSI6MTU1LCIxNTciOjE1NywiNjAiOjYwLCI2NSI6NjV9XSw1
MTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAy
MDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNl
bnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBv
ZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmln
aHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9y
eS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX2Fzc2lnbiA9IF9kZXJlcV8oMTU4
KTsKKwordmFyIFJlYWN0VXBkYXRlcyA9IF9kZXJlcV8oODIpOwordmFyIFRyYW5zYWN0aW9uID0g
X2RlcmVxXygxMDApOworCit2YXIgZW1wdHlGdW5jdGlvbiA9IF9kZXJlcV8oMTQyKTsKKwordmFy
IFJFU0VUX0JBVENIRURfVVBEQVRFUyA9IHsKKyAgaW5pdGlhbGl6ZTogZW1wdHlGdW5jdGlvbiwK
KyAgY2xvc2U6IGZ1bmN0aW9uICgpIHsKKyAgICBSZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5
LmlzQmF0Y2hpbmdVcGRhdGVzID0gZmFsc2U7CisgIH0KK307CisKK3ZhciBGTFVTSF9CQVRDSEVE
X1VQREFURVMgPSB7CisgIGluaXRpYWxpemU6IGVtcHR5RnVuY3Rpb24sCisgIGNsb3NlOiBSZWFj
dFVwZGF0ZXMuZmx1c2hCYXRjaGVkVXBkYXRlcy5iaW5kKFJlYWN0VXBkYXRlcykKK307CisKK3Zh
ciBUUkFOU0FDVElPTl9XUkFQUEVSUyA9IFtGTFVTSF9CQVRDSEVEX1VQREFURVMsIFJFU0VUX0JB
VENIRURfVVBEQVRFU107CisKK2Z1bmN0aW9uIFJlYWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3lU
cmFuc2FjdGlvbigpIHsKKyAgdGhpcy5yZWluaXRpYWxpemVUcmFuc2FjdGlvbigpOworfQorCitf
YXNzaWduKFJlYWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3lUcmFuc2FjdGlvbi5wcm90b3R5cGUs
IFRyYW5zYWN0aW9uLCB7CisgIGdldFRyYW5zYWN0aW9uV3JhcHBlcnM6IGZ1bmN0aW9uICgpIHsK
KyAgICByZXR1cm4gVFJBTlNBQ1RJT05fV1JBUFBFUlM7CisgIH0KK30pOworCit2YXIgdHJhbnNh
Y3Rpb24gPSBuZXcgUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneVRyYW5zYWN0aW9uKCk7CisK
K3ZhciBSZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5ID0geworICBpc0JhdGNoaW5nVXBkYXRl
czogZmFsc2UsCisKKyAgLyoqCisgICAqIENhbGwgdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIGluIGEg
Y29udGV4dCB3aXRoaW4gd2hpY2ggY2FsbHMgdG8gYHNldFN0YXRlYAorICAgKiBhbmQgZnJpZW5k
cyBhcmUgYmF0Y2hlZCBzdWNoIHRoYXQgY29tcG9uZW50cyBhcmVuJ3QgdXBkYXRlZCB1bm5lY2Vz
c2FyaWx5LgorICAgKi8KKyAgYmF0Y2hlZFVwZGF0ZXM6IGZ1bmN0aW9uIChjYWxsYmFjaywgYSwg
YiwgYywgZCwgZSkgeworICAgIHZhciBhbHJlYWR5QmF0Y2hpbmdVcGRhdGVzID0gUmVhY3REZWZh
dWx0QmF0Y2hpbmdTdHJhdGVneS5pc0JhdGNoaW5nVXBkYXRlczsKKworICAgIFJlYWN0RGVmYXVs
dEJhdGNoaW5nU3RyYXRlZ3kuaXNCYXRjaGluZ1VwZGF0ZXMgPSB0cnVlOworCisgICAgLy8gVGhl
IGNvZGUgaXMgd3JpdHRlbiB0aGlzIHdheSB0byBhdm9pZCBleHRyYSBhbGxvY2F0aW9ucworICAg
IGlmIChhbHJlYWR5QmF0Y2hpbmdVcGRhdGVzKSB7CisgICAgICByZXR1cm4gY2FsbGJhY2soYSwg
YiwgYywgZCwgZSk7CisgICAgfSBlbHNlIHsKKyAgICAgIHJldHVybiB0cmFuc2FjdGlvbi5wZXJm
b3JtKGNhbGxiYWNrLCBudWxsLCBhLCBiLCBjLCBkLCBlKTsKKyAgICB9CisgIH0KK307CisKK21v
ZHVsZS5leHBvcnRzID0gUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneTsKK30seyIxMDAiOjEw
MCwiMTQyIjoxNDIsIjE1OCI6MTU4LCI4MiI6ODJ9XSw1MjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1
bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJ
bmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElD
RU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUg
UEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJp
Y3QnOworCit2YXIgQVJJQURPTVByb3BlcnR5Q29uZmlnID0gX2RlcmVxXygxKTsKK3ZhciBCZWZv
cmVJbnB1dEV2ZW50UGx1Z2luID0gX2RlcmVxXygzKTsKK3ZhciBDaGFuZ2VFdmVudFBsdWdpbiA9
IF9kZXJlcV8oNyk7Cit2YXIgRGVmYXVsdEV2ZW50UGx1Z2luT3JkZXIgPSBfZGVyZXFfKDE0KTsK
K3ZhciBFbnRlckxlYXZlRXZlbnRQbHVnaW4gPSBfZGVyZXFfKDE1KTsKK3ZhciBIVE1MRE9NUHJv
cGVydHlDb25maWcgPSBfZGVyZXFfKDIyKTsKK3ZhciBSZWFjdENvbXBvbmVudEJyb3dzZXJFbnZp
cm9ubWVudCA9IF9kZXJlcV8oMjgpOwordmFyIFJlYWN0RE9NQ29tcG9uZW50ID0gX2RlcmVxXygz
Mik7Cit2YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gX2RlcmVxXygzNCk7Cit2YXIgUmVhY3RE
T01FbXB0eUNvbXBvbmVudCA9IF9kZXJlcV8oMzYpOwordmFyIFJlYWN0RE9NVHJlZVRyYXZlcnNh
bCA9IF9kZXJlcV8oNDcpOwordmFyIFJlYWN0RE9NVGV4dENvbXBvbmVudCA9IF9kZXJlcV8oNDUp
OwordmFyIFJlYWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3kgPSBfZGVyZXFfKDUxKTsKK3ZhciBS
ZWFjdEV2ZW50TGlzdGVuZXIgPSBfZGVyZXFfKDU3KTsKK3ZhciBSZWFjdEluamVjdGlvbiA9IF9k
ZXJlcV8oNjEpOwordmFyIFJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24gPSBfZGVyZXFfKDc0KTsK
K3ZhciBTVkdET01Qcm9wZXJ0eUNvbmZpZyA9IF9kZXJlcV8oODQpOwordmFyIFNlbGVjdEV2ZW50
UGx1Z2luID0gX2RlcmVxXyg4NSk7Cit2YXIgU2ltcGxlRXZlbnRQbHVnaW4gPSBfZGVyZXFfKDg2
KTsKKwordmFyIGFscmVhZHlJbmplY3RlZCA9IGZhbHNlOworCitmdW5jdGlvbiBpbmplY3QoKSB7
CisgIGlmIChhbHJlYWR5SW5qZWN0ZWQpIHsKKyAgICAvLyBUT0RPOiBUaGlzIGlzIGN1cnJlbnRs
eSB0cnVlIGJlY2F1c2UgdGhlc2UgaW5qZWN0aW9ucyBhcmUgc2hhcmVkIGJldHdlZW4KKyAgICAv
LyB0aGUgY2xpZW50IGFuZCB0aGUgc2VydmVyIHBhY2thZ2UuIFRoZXkgc2hvdWxkIGJlIGJ1aWx0
IGluZGVwZW5kZW50bHkKKyAgICAvLyBhbmQgbm90IHNoYXJlIGFueSBpbmplY3Rpb24gc3RhdGUu
IFRoZW4gdGhpcyBwcm9ibGVtIHdpbGwgYmUgc29sdmVkLgorICAgIHJldHVybjsKKyAgfQorICBh
bHJlYWR5SW5qZWN0ZWQgPSB0cnVlOworCisgIFJlYWN0SW5qZWN0aW9uLkV2ZW50RW1pdHRlci5p
bmplY3RSZWFjdEV2ZW50TGlzdGVuZXIoUmVhY3RFdmVudExpc3RlbmVyKTsKKworICAvKioKKyAg
ICogSW5qZWN0IG1vZHVsZXMgZm9yIHJlc29sdmluZyBET00gaGllcmFyY2h5IGFuZCBwbHVnaW4g
b3JkZXJpbmcuCisgICAqLworICBSZWFjdEluamVjdGlvbi5FdmVudFBsdWdpbkh1Yi5pbmplY3RF
dmVudFBsdWdpbk9yZGVyKERlZmF1bHRFdmVudFBsdWdpbk9yZGVyKTsKKyAgUmVhY3RJbmplY3Rp
b24uRXZlbnRQbHVnaW5VdGlscy5pbmplY3RDb21wb25lbnRUcmVlKFJlYWN0RE9NQ29tcG9uZW50
VHJlZSk7CisgIFJlYWN0SW5qZWN0aW9uLkV2ZW50UGx1Z2luVXRpbHMuaW5qZWN0VHJlZVRyYXZl
cnNhbChSZWFjdERPTVRyZWVUcmF2ZXJzYWwpOworCisgIC8qKgorICAgKiBTb21lIGltcG9ydGFu
dCBldmVudCBwbHVnaW5zIGluY2x1ZGVkIGJ5IGRlZmF1bHQgKHdpdGhvdXQgaGF2aW5nIHRvIHJl
cXVpcmUKKyAgICogdGhlbSkuCisgICAqLworICBSZWFjdEluamVjdGlvbi5FdmVudFBsdWdpbkh1
Yi5pbmplY3RFdmVudFBsdWdpbnNCeU5hbWUoeworICAgIFNpbXBsZUV2ZW50UGx1Z2luOiBTaW1w
bGVFdmVudFBsdWdpbiwKKyAgICBFbnRlckxlYXZlRXZlbnRQbHVnaW46IEVudGVyTGVhdmVFdmVu
dFBsdWdpbiwKKyAgICBDaGFuZ2VFdmVudFBsdWdpbjogQ2hhbmdlRXZlbnRQbHVnaW4sCisgICAg
U2VsZWN0RXZlbnRQbHVnaW46IFNlbGVjdEV2ZW50UGx1Z2luLAorICAgIEJlZm9yZUlucHV0RXZl
bnRQbHVnaW46IEJlZm9yZUlucHV0RXZlbnRQbHVnaW4KKyAgfSk7CisKKyAgUmVhY3RJbmplY3Rp
b24uSG9zdENvbXBvbmVudC5pbmplY3RHZW5lcmljQ29tcG9uZW50Q2xhc3MoUmVhY3RET01Db21w
b25lbnQpOworCisgIFJlYWN0SW5qZWN0aW9uLkhvc3RDb21wb25lbnQuaW5qZWN0VGV4dENvbXBv
bmVudENsYXNzKFJlYWN0RE9NVGV4dENvbXBvbmVudCk7CisKKyAgUmVhY3RJbmplY3Rpb24uRE9N
UHJvcGVydHkuaW5qZWN0RE9NUHJvcGVydHlDb25maWcoQVJJQURPTVByb3BlcnR5Q29uZmlnKTsK
KyAgUmVhY3RJbmplY3Rpb24uRE9NUHJvcGVydHkuaW5qZWN0RE9NUHJvcGVydHlDb25maWcoSFRN
TERPTVByb3BlcnR5Q29uZmlnKTsKKyAgUmVhY3RJbmplY3Rpb24uRE9NUHJvcGVydHkuaW5qZWN0
RE9NUHJvcGVydHlDb25maWcoU1ZHRE9NUHJvcGVydHlDb25maWcpOworCisgIFJlYWN0SW5qZWN0
aW9uLkVtcHR5Q29tcG9uZW50LmluamVjdEVtcHR5Q29tcG9uZW50RmFjdG9yeShmdW5jdGlvbiAo
aW5zdGFudGlhdGUpIHsKKyAgICByZXR1cm4gbmV3IFJlYWN0RE9NRW1wdHlDb21wb25lbnQoaW5z
dGFudGlhdGUpOworICB9KTsKKworICBSZWFjdEluamVjdGlvbi5VcGRhdGVzLmluamVjdFJlY29u
Y2lsZVRyYW5zYWN0aW9uKFJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24pOworICBSZWFjdEluamVj
dGlvbi5VcGRhdGVzLmluamVjdEJhdGNoaW5nU3RyYXRlZ3koUmVhY3REZWZhdWx0QmF0Y2hpbmdT
dHJhdGVneSk7CisKKyAgUmVhY3RJbmplY3Rpb24uQ29tcG9uZW50LmluamVjdEVudmlyb25tZW50
KFJlYWN0Q29tcG9uZW50QnJvd3NlckVudmlyb25tZW50KTsKK30KKworbW9kdWxlLmV4cG9ydHMg
PSB7CisgIGluamVjdDogaW5qZWN0Cit9OworfSx7IjEiOjEsIjE0IjoxNCwiMTUiOjE1LCIyMiI6
MjIsIjI4IjoyOCwiMyI6MywiMzIiOjMyLCIzNCI6MzQsIjM2IjozNiwiNDUiOjQ1LCI0NyI6NDcs
IjUxIjo1MSwiNTciOjU3LCI2MSI6NjEsIjciOjcsIjc0Ijo3NCwiODQiOjg0LCI4NSI6ODUsIjg2
Ijo4Nn1dLDUzOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29w
eXJpZ2h0IDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0
eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LgorICoKKyAqIAorICovCisKKyd1c2Ugc3RyaWN0JzsKKworLy8gVGhlIFN5bWJv
bCB1c2VkIHRvIHRhZyB0aGUgUmVhY3RFbGVtZW50IHR5cGUuIElmIHRoZXJlIGlzIG5vIG5hdGl2
ZSBTeW1ib2wKKy8vIG5vciBwb2x5ZmlsbCwgdGhlbiBhIHBsYWluIG51bWJlciBpcyB1c2VkIGZv
ciBwZXJmb3JtYW5jZS4KKwordmFyIFJFQUNUX0VMRU1FTlRfVFlQRSA9IHR5cGVvZiBTeW1ib2wg
PT09ICdmdW5jdGlvbicgJiYgU3ltYm9sWydmb3InXSAmJiBTeW1ib2xbJ2ZvciddKCdyZWFjdC5l
bGVtZW50JykgfHwgMHhlYWM3OworCittb2R1bGUuZXhwb3J0cyA9IFJFQUNUX0VMRU1FTlRfVFlQ
RTsKK30se31dLDU0OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICog
Q29weXJpZ2h0IDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
ZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9m
IHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNh
bWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBlbXB0eUNvbXBv
bmVudEZhY3Rvcnk7CisKK3ZhciBSZWFjdEVtcHR5Q29tcG9uZW50SW5qZWN0aW9uID0geworICBp
bmplY3RFbXB0eUNvbXBvbmVudEZhY3Rvcnk6IGZ1bmN0aW9uIChmYWN0b3J5KSB7CisgICAgZW1w
dHlDb21wb25lbnRGYWN0b3J5ID0gZmFjdG9yeTsKKyAgfQorfTsKKwordmFyIFJlYWN0RW1wdHlD
b21wb25lbnQgPSB7CisgIGNyZWF0ZTogZnVuY3Rpb24gKGluc3RhbnRpYXRlKSB7CisgICAgcmV0
dXJuIGVtcHR5Q29tcG9uZW50RmFjdG9yeShpbnN0YW50aWF0ZSk7CisgIH0KK307CisKK1JlYWN0
RW1wdHlDb21wb25lbnQuaW5qZWN0aW9uID0gUmVhY3RFbXB0eUNvbXBvbmVudEluamVjdGlvbjsK
KworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdEVtcHR5Q29tcG9uZW50OworfSx7fV0sNTU6W2Z1bmN0
aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBz
b3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgor
ICogCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgY2F1Z2h0RXJyb3IgPSBudWxsOworCisv
KioKKyAqIENhbGwgYSBmdW5jdGlvbiB3aGlsZSBndWFyZGluZyBhZ2FpbnN0IGVycm9ycyB0aGF0
IGhhcHBlbnMgd2l0aGluIGl0LgorICoKKyAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lIG9mIHRoZSBn
dWFyZCB0byB1c2UgZm9yIGxvZ2dpbmcgb3IgZGVidWdnaW5nCisgKiBAcGFyYW0ge0Z1bmN0aW9u
fSBmdW5jIFRoZSBmdW5jdGlvbiB0byBpbnZva2UKKyAqIEBwYXJhbSB7Kn0gYSBGaXJzdCBhcmd1
bWVudAorICogQHBhcmFtIHsqfSBiIFNlY29uZCBhcmd1bWVudAorICovCitmdW5jdGlvbiBpbnZv
a2VHdWFyZGVkQ2FsbGJhY2sobmFtZSwgZnVuYywgYSkgeworICB0cnkgeworICAgIGZ1bmMoYSk7
CisgIH0gY2F0Y2ggKHgpIHsKKyAgICBpZiAoY2F1Z2h0RXJyb3IgPT09IG51bGwpIHsKKyAgICAg
IGNhdWdodEVycm9yID0geDsKKyAgICB9CisgIH0KK30KKwordmFyIFJlYWN0RXJyb3JVdGlscyA9
IHsKKyAgaW52b2tlR3VhcmRlZENhbGxiYWNrOiBpbnZva2VHdWFyZGVkQ2FsbGJhY2ssCisKKyAg
LyoqCisgICAqIEludm9rZWQgYnkgUmVhY3RUZXN0VXRpbHMuU2ltdWxhdGUgc28gdGhhdCBhbnkg
ZXJyb3JzIHRocm93biBieSB0aGUgZXZlbnQKKyAgICogaGFuZGxlciBhcmUgc3VyZSB0byBiZSBy
ZXRocm93biBieSByZXRocm93Q2F1Z2h0RXJyb3IuCisgICAqLworICBpbnZva2VHdWFyZGVkQ2Fs
bGJhY2tXaXRoQ2F0Y2g6IGludm9rZUd1YXJkZWRDYWxsYmFjaywKKworICAvKioKKyAgICogRHVy
aW5nIGV4ZWN1dGlvbiBvZiBndWFyZGVkIGZ1bmN0aW9ucyB3ZSB3aWxsIGNhcHR1cmUgdGhlIGZp
cnN0IGVycm9yIHdoaWNoCisgICAqIHdlIHdpbGwgcmV0aHJvdyB0byBiZSBoYW5kbGVkIGJ5IHRo
ZSB0b3AgbGV2ZWwgZXJyb3IgaGFuZGxlci4KKyAgICovCisgIHJldGhyb3dDYXVnaHRFcnJvcjog
ZnVuY3Rpb24gKCkgeworICAgIGlmIChjYXVnaHRFcnJvcikgeworICAgICAgdmFyIGVycm9yID0g
Y2F1Z2h0RXJyb3I7CisgICAgICBjYXVnaHRFcnJvciA9IG51bGw7CisgICAgICB0aHJvdyBlcnJv
cjsKKyAgICB9CisgIH0KK307CisKK2lmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicp
IHsKKyAgLyoqCisgICAqIFRvIGhlbHAgZGV2ZWxvcG1lbnQgd2UgY2FuIGdldCBiZXR0ZXIgZGV2
dG9vbHMgaW50ZWdyYXRpb24gYnkgc2ltdWxhdGluZyBhCisgICAqIHJlYWwgYnJvd3NlciBldmVu
dC4KKyAgICovCisgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2Yg
d2luZG93LmRpc3BhdGNoRXZlbnQgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIGRvY3VtZW50ICE9
PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgZG9jdW1lbnQuY3JlYXRlRXZlbnQgPT09ICdmdW5jdGlv
bicpIHsKKyAgICB2YXIgZmFrZU5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdyZWFjdCcp
OworICAgIFJlYWN0RXJyb3JVdGlscy5pbnZva2VHdWFyZGVkQ2FsbGJhY2sgPSBmdW5jdGlvbiAo
bmFtZSwgZnVuYywgYSkgeworICAgICAgdmFyIGJvdW5kRnVuYyA9IGZ1bmMuYmluZChudWxsLCBh
KTsKKyAgICAgIHZhciBldnRUeXBlID0gJ3JlYWN0LScgKyBuYW1lOworICAgICAgZmFrZU5vZGUu
YWRkRXZlbnRMaXN0ZW5lcihldnRUeXBlLCBib3VuZEZ1bmMsIGZhbHNlKTsKKyAgICAgIHZhciBl
dnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQnKTsKKyAgICAgIC8vICRGbG93Rml4TWUg
aHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2Zsb3cvaXNzdWVzLzIzMzYKKyAgICAgIGV2dC5p
bml0RXZlbnQoZXZ0VHlwZSwgZmFsc2UsIGZhbHNlKTsKKyAgICAgIGZha2VOb2RlLmRpc3BhdGNo
RXZlbnQoZXZ0KTsKKyAgICAgIGZha2VOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZ0VHlwZSwg
Ym91bmRGdW5jLCBmYWxzZSk7CisgICAgfTsKKyAgfQorfQorCittb2R1bGUuZXhwb3J0cyA9IFJl
YWN0RXJyb3JVdGlsczsKK30se31dLDU2OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRz
KXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1
bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3Zh
ciBFdmVudFBsdWdpbkh1YiA9IF9kZXJlcV8oMTcpOworCitmdW5jdGlvbiBydW5FdmVudFF1ZXVl
SW5CYXRjaChldmVudHMpIHsKKyAgRXZlbnRQbHVnaW5IdWIuZW5xdWV1ZUV2ZW50cyhldmVudHMp
OworICBFdmVudFBsdWdpbkh1Yi5wcm9jZXNzRXZlbnRRdWV1ZShmYWxzZSk7Cit9CisKK3ZhciBS
ZWFjdEV2ZW50RW1pdHRlck1peGluID0geworCisgIC8qKgorICAgKiBTdHJlYW1zIGEgZmlyZWQg
dG9wLWxldmVsIGV2ZW50IHRvIGBFdmVudFBsdWdpbkh1YmAgd2hlcmUgcGx1Z2lucyBoYXZlIHRo
ZQorICAgKiBvcHBvcnR1bml0eSB0byBjcmVhdGUgYFJlYWN0RXZlbnRgcyB0byBiZSBkaXNwYXRj
aGVkLgorICAgKi8KKyAgaGFuZGxlVG9wTGV2ZWw6IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUsIHRh
cmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkgeworICAgIHZhciBldmVu
dHMgPSBFdmVudFBsdWdpbkh1Yi5leHRyYWN0RXZlbnRzKHRvcExldmVsVHlwZSwgdGFyZ2V0SW5z
dCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTsKKyAgICBydW5FdmVudFF1ZXVlSW5C
YXRjaChldmVudHMpOworICB9Cit9OworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0RXZlbnRFbWl0
dGVyTWl4aW47Cit9LHsiMTciOjE3fV0sNTc6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9y
dHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICog
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2Vk
IHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25h
bCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMg
ZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwor
dmFyIF9hc3NpZ24gPSBfZGVyZXFfKDE1OCk7CisKK3ZhciBFdmVudExpc3RlbmVyID0gX2RlcmVx
XygxMzUpOwordmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gX2RlcmVxXygxMzYpOwordmFyIFBv
b2xlZENsYXNzID0gX2RlcmVxXygyNSk7Cit2YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gX2Rl
cmVxXygzNCk7Cit2YXIgUmVhY3RVcGRhdGVzID0gX2RlcmVxXyg4Mik7CisKK3ZhciBnZXRFdmVu
dFRhcmdldCA9IF9kZXJlcV8oMTE0KTsKK3ZhciBnZXRVbmJvdW5kZWRTY3JvbGxQb3NpdGlvbiA9
IF9kZXJlcV8oMTQ3KTsKKworLyoqCisgKiBGaW5kIHRoZSBkZWVwZXN0IFJlYWN0IGNvbXBvbmVu
dCBjb21wbGV0ZWx5IGNvbnRhaW5pbmcgdGhlIHJvb3Qgb2YgdGhlCisgKiBwYXNzZWQtaW4gaW5z
dGFuY2UgKGZvciB1c2Ugd2hlbiBlbnRpcmUgUmVhY3QgdHJlZXMgYXJlIG5lc3RlZCB3aXRoaW4g
ZWFjaAorICogb3RoZXIpLiBJZiBSZWFjdCB0cmVlcyBhcmUgbm90IG5lc3RlZCwgcmV0dXJucyBu
dWxsLgorICovCitmdW5jdGlvbiBmaW5kUGFyZW50KGluc3QpIHsKKyAgLy8gVE9ETzogSXQgbWF5
IGJlIGEgZ29vZCBpZGVhIHRvIGNhY2hlIHRoaXMgdG8gcHJldmVudCB1bm5lY2Vzc2FyeSBET00K
KyAgLy8gdHJhdmVyc2FsLCBidXQgY2FjaGluZyBpcyBkaWZmaWN1bHQgdG8gZG8gY29ycmVjdGx5
IHdpdGhvdXQgdXNpbmcgYQorICAvLyBtdXRhdGlvbiBvYnNlcnZlciB0byBsaXN0ZW4gZm9yIGFs
bCBET00gY2hhbmdlcy4KKyAgd2hpbGUgKGluc3QuX2hvc3RQYXJlbnQpIHsKKyAgICBpbnN0ID0g
aW5zdC5faG9zdFBhcmVudDsKKyAgfQorICB2YXIgcm9vdE5vZGUgPSBSZWFjdERPTUNvbXBvbmVu
dFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZShpbnN0KTsKKyAgdmFyIGNvbnRhaW5lciA9IHJvb3RO
b2RlLnBhcmVudE5vZGU7CisgIHJldHVybiBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Q2xvc2Vz
dEluc3RhbmNlRnJvbU5vZGUoY29udGFpbmVyKTsKK30KKworLy8gVXNlZCB0byBzdG9yZSBhbmNl
c3RvciBoaWVyYXJjaHkgaW4gdG9wIGxldmVsIGNhbGxiYWNrCitmdW5jdGlvbiBUb3BMZXZlbENh
bGxiYWNrQm9va0tlZXBpbmcodG9wTGV2ZWxUeXBlLCBuYXRpdmVFdmVudCkgeworICB0aGlzLnRv
cExldmVsVHlwZSA9IHRvcExldmVsVHlwZTsKKyAgdGhpcy5uYXRpdmVFdmVudCA9IG5hdGl2ZUV2
ZW50OworICB0aGlzLmFuY2VzdG9ycyA9IFtdOworfQorX2Fzc2lnbihUb3BMZXZlbENhbGxiYWNr
Qm9va0tlZXBpbmcucHJvdG90eXBlLCB7CisgIGRlc3RydWN0b3I6IGZ1bmN0aW9uICgpIHsKKyAg
ICB0aGlzLnRvcExldmVsVHlwZSA9IG51bGw7CisgICAgdGhpcy5uYXRpdmVFdmVudCA9IG51bGw7
CisgICAgdGhpcy5hbmNlc3RvcnMubGVuZ3RoID0gMDsKKyAgfQorfSk7CitQb29sZWRDbGFzcy5h
ZGRQb29saW5nVG8oVG9wTGV2ZWxDYWxsYmFja0Jvb2tLZWVwaW5nLCBQb29sZWRDbGFzcy50d29B
cmd1bWVudFBvb2xlcik7CisKK2Z1bmN0aW9uIGhhbmRsZVRvcExldmVsSW1wbChib29rS2VlcGlu
ZykgeworICB2YXIgbmF0aXZlRXZlbnRUYXJnZXQgPSBnZXRFdmVudFRhcmdldChib29rS2VlcGlu
Zy5uYXRpdmVFdmVudCk7CisgIHZhciB0YXJnZXRJbnN0ID0gUmVhY3RET01Db21wb25lbnRUcmVl
LmdldENsb3Nlc3RJbnN0YW5jZUZyb21Ob2RlKG5hdGl2ZUV2ZW50VGFyZ2V0KTsKKworICAvLyBM
b29wIHRocm91Z2ggdGhlIGhpZXJhcmNoeSwgaW4gY2FzZSB0aGVyZSdzIGFueSBuZXN0ZWQgY29t
cG9uZW50cy4KKyAgLy8gSXQncyBpbXBvcnRhbnQgdGhhdCB3ZSBidWlsZCB0aGUgYXJyYXkgb2Yg
YW5jZXN0b3JzIGJlZm9yZSBjYWxsaW5nIGFueQorICAvLyBldmVudCBoYW5kbGVycywgYmVjYXVz
ZSBldmVudCBoYW5kbGVycyBjYW4gbW9kaWZ5IHRoZSBET00sIGxlYWRpbmcgdG8KKyAgLy8gaW5j
b25zaXN0ZW5jaWVzIHdpdGggUmVhY3RNb3VudCdzIG5vZGUgY2FjaGUuIFNlZSAjMTEwNS4KKyAg
dmFyIGFuY2VzdG9yID0gdGFyZ2V0SW5zdDsKKyAgZG8geworICAgIGJvb2tLZWVwaW5nLmFuY2Vz
dG9ycy5wdXNoKGFuY2VzdG9yKTsKKyAgICBhbmNlc3RvciA9IGFuY2VzdG9yICYmIGZpbmRQYXJl
bnQoYW5jZXN0b3IpOworICB9IHdoaWxlIChhbmNlc3Rvcik7CisKKyAgZm9yICh2YXIgaSA9IDA7
IGkgPCBib29rS2VlcGluZy5hbmNlc3RvcnMubGVuZ3RoOyBpKyspIHsKKyAgICB0YXJnZXRJbnN0
ID0gYm9va0tlZXBpbmcuYW5jZXN0b3JzW2ldOworICAgIFJlYWN0RXZlbnRMaXN0ZW5lci5faGFu
ZGxlVG9wTGV2ZWwoYm9va0tlZXBpbmcudG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBib29rS2Vl
cGluZy5uYXRpdmVFdmVudCwgZ2V0RXZlbnRUYXJnZXQoYm9va0tlZXBpbmcubmF0aXZlRXZlbnQp
KTsKKyAgfQorfQorCitmdW5jdGlvbiBzY3JvbGxWYWx1ZU1vbml0b3IoY2IpIHsKKyAgdmFyIHNj
cm9sbFBvc2l0aW9uID0gZ2V0VW5ib3VuZGVkU2Nyb2xsUG9zaXRpb24od2luZG93KTsKKyAgY2Io
c2Nyb2xsUG9zaXRpb24pOworfQorCit2YXIgUmVhY3RFdmVudExpc3RlbmVyID0geworICBfZW5h
YmxlZDogdHJ1ZSwKKyAgX2hhbmRsZVRvcExldmVsOiBudWxsLAorCisgIFdJTkRPV19IQU5ETEU6
IEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSA/IHdpbmRvdyA6IG51bGwsCisKKyAgc2V0
SGFuZGxlVG9wTGV2ZWw6IGZ1bmN0aW9uIChoYW5kbGVUb3BMZXZlbCkgeworICAgIFJlYWN0RXZl
bnRMaXN0ZW5lci5faGFuZGxlVG9wTGV2ZWwgPSBoYW5kbGVUb3BMZXZlbDsKKyAgfSwKKworICBz
ZXRFbmFibGVkOiBmdW5jdGlvbiAoZW5hYmxlZCkgeworICAgIFJlYWN0RXZlbnRMaXN0ZW5lci5f
ZW5hYmxlZCA9ICEhZW5hYmxlZDsKKyAgfSwKKworICBpc0VuYWJsZWQ6IGZ1bmN0aW9uICgpIHsK
KyAgICByZXR1cm4gUmVhY3RFdmVudExpc3RlbmVyLl9lbmFibGVkOworICB9LAorCisgIC8qKgor
ICAgKiBUcmFwcyB0b3AtbGV2ZWwgZXZlbnRzIGJ5IHVzaW5nIGV2ZW50IGJ1YmJsaW5nLgorICAg
KgorICAgKiBAcGFyYW0ge3N0cmluZ30gdG9wTGV2ZWxUeXBlIFJlY29yZCBmcm9tIGBFdmVudENv
bnN0YW50c2AuCisgICAqIEBwYXJhbSB7c3RyaW5nfSBoYW5kbGVyQmFzZU5hbWUgRXZlbnQgbmFt
ZSAoZS5nLiAiY2xpY2siKS4KKyAgICogQHBhcmFtIHtvYmplY3R9IGVsZW1lbnQgRWxlbWVudCBv
biB3aGljaCB0byBhdHRhY2ggbGlzdGVuZXIuCisgICAqIEByZXR1cm4gez9vYmplY3R9IEFuIG9i
amVjdCB3aXRoIGEgcmVtb3ZlIGZ1bmN0aW9uIHdoaWNoIHdpbGwgZm9yY2VmdWxseQorICAgKiAg
ICAgICAgICAgICAgICAgIHJlbW92ZSB0aGUgbGlzdGVuZXIuCisgICAqIEBpbnRlcm5hbAorICAg
Ki8KKyAgdHJhcEJ1YmJsZWRFdmVudDogZnVuY3Rpb24gKHRvcExldmVsVHlwZSwgaGFuZGxlckJh
c2VOYW1lLCBlbGVtZW50KSB7CisgICAgaWYgKCFlbGVtZW50KSB7CisgICAgICByZXR1cm4gbnVs
bDsKKyAgICB9CisgICAgcmV0dXJuIEV2ZW50TGlzdGVuZXIubGlzdGVuKGVsZW1lbnQsIGhhbmRs
ZXJCYXNlTmFtZSwgUmVhY3RFdmVudExpc3RlbmVyLmRpc3BhdGNoRXZlbnQuYmluZChudWxsLCB0
b3BMZXZlbFR5cGUpKTsKKyAgfSwKKworICAvKioKKyAgICogVHJhcHMgYSB0b3AtbGV2ZWwgZXZl
bnQgYnkgdXNpbmcgZXZlbnQgY2FwdHVyaW5nLgorICAgKgorICAgKiBAcGFyYW0ge3N0cmluZ30g
dG9wTGV2ZWxUeXBlIFJlY29yZCBmcm9tIGBFdmVudENvbnN0YW50c2AuCisgICAqIEBwYXJhbSB7
c3RyaW5nfSBoYW5kbGVyQmFzZU5hbWUgRXZlbnQgbmFtZSAoZS5nLiAiY2xpY2siKS4KKyAgICog
QHBhcmFtIHtvYmplY3R9IGVsZW1lbnQgRWxlbWVudCBvbiB3aGljaCB0byBhdHRhY2ggbGlzdGVu
ZXIuCisgICAqIEByZXR1cm4gez9vYmplY3R9IEFuIG9iamVjdCB3aXRoIGEgcmVtb3ZlIGZ1bmN0
aW9uIHdoaWNoIHdpbGwgZm9yY2VmdWxseQorICAgKiAgICAgICAgICAgICAgICAgIHJlbW92ZSB0
aGUgbGlzdGVuZXIuCisgICAqIEBpbnRlcm5hbAorICAgKi8KKyAgdHJhcENhcHR1cmVkRXZlbnQ6
IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUsIGhhbmRsZXJCYXNlTmFtZSwgZWxlbWVudCkgeworICAg
IGlmICghZWxlbWVudCkgeworICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorICAgIHJldHVybiBF
dmVudExpc3RlbmVyLmNhcHR1cmUoZWxlbWVudCwgaGFuZGxlckJhc2VOYW1lLCBSZWFjdEV2ZW50
TGlzdGVuZXIuZGlzcGF0Y2hFdmVudC5iaW5kKG51bGwsIHRvcExldmVsVHlwZSkpOworICB9LAor
CisgIG1vbml0b3JTY3JvbGxWYWx1ZTogZnVuY3Rpb24gKHJlZnJlc2gpIHsKKyAgICB2YXIgY2Fs
bGJhY2sgPSBzY3JvbGxWYWx1ZU1vbml0b3IuYmluZChudWxsLCByZWZyZXNoKTsKKyAgICBFdmVu
dExpc3RlbmVyLmxpc3Rlbih3aW5kb3csICdzY3JvbGwnLCBjYWxsYmFjayk7CisgIH0sCisKKyAg
ZGlzcGF0Y2hFdmVudDogZnVuY3Rpb24gKHRvcExldmVsVHlwZSwgbmF0aXZlRXZlbnQpIHsKKyAg
ICBpZiAoIVJlYWN0RXZlbnRMaXN0ZW5lci5fZW5hYmxlZCkgeworICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIHZhciBib29rS2VlcGluZyA9IFRvcExldmVsQ2FsbGJhY2tCb29rS2VlcGluZy5n
ZXRQb29sZWQodG9wTGV2ZWxUeXBlLCBuYXRpdmVFdmVudCk7CisgICAgdHJ5IHsKKyAgICAgIC8v
IEV2ZW50IHF1ZXVlIGJlaW5nIHByb2Nlc3NlZCBpbiB0aGUgc2FtZSBjeWNsZSBhbGxvd3MKKyAg
ICAgIC8vIGBwcmV2ZW50RGVmYXVsdGAuCisgICAgICBSZWFjdFVwZGF0ZXMuYmF0Y2hlZFVwZGF0
ZXMoaGFuZGxlVG9wTGV2ZWxJbXBsLCBib29rS2VlcGluZyk7CisgICAgfSBmaW5hbGx5IHsKKyAg
ICAgIFRvcExldmVsQ2FsbGJhY2tCb29rS2VlcGluZy5yZWxlYXNlKGJvb2tLZWVwaW5nKTsKKyAg
ICB9CisgIH0KK307CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RFdmVudExpc3RlbmVyOworfSx7
IjExNCI6MTE0LCIxMzUiOjEzNSwiMTM2IjoxMzYsIjE0NyI6MTQ3LCIxNTgiOjE1OCwiMjUiOjI1
LCIzNCI6MzQsIjgyIjo4Mn1dLDU4OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsK
Ky8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRl
ciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3Jh
bnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUg
aW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIAorICovCisKKyd1c2Ugc3RyaWN0JzsKKwor
dmFyIFJlYWN0RmVhdHVyZUZsYWdzID0geworICAvLyBXaGVuIHRydWUsIGNhbGwgY29uc29sZS50
aW1lKCkgYmVmb3JlIGFuZCAudGltZUVuZCgpIGFmdGVyIGVhY2ggdG9wLWxldmVsCisgIC8vIHJl
bmRlciAoYm90aCBpbml0aWFsIHJlbmRlcnMgYW5kIHVwZGF0ZXMpLiBVc2VmdWwgd2hlbiBsb29r
aW5nIGF0IHByb2QtbW9kZQorICAvLyB0aW1lbGluZSBwcm9maWxlcyBpbiBDaHJvbWUsIGZvciBl
eGFtcGxlLgorICBsb2dUb3BMZXZlbFJlbmRlcnM6IGZhbHNlCit9OworCittb2R1bGUuZXhwb3J0
cyA9IFJlYWN0RmVhdHVyZUZsYWdzOworfSx7fV0sNTk6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxl
LGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5j
LgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxp
Y2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRk
aXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBB
VEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0
JzsKKwordmFyIF9wcm9kSW52YXJpYW50ID0gX2RlcmVxXygxMjUpLAorICAgIF9hc3NpZ24gPSBf
ZGVyZXFfKDE1OCk7CisKK3ZhciBpbnZhcmlhbnQgPSBfZGVyZXFfKDE1MCk7CisKK3ZhciBnZW5l
cmljQ29tcG9uZW50Q2xhc3MgPSBudWxsOworLy8gVGhpcyByZWdpc3RyeSBrZWVwcyB0cmFjayBv
ZiB3cmFwcGVyIGNsYXNzZXMgYXJvdW5kIGhvc3QgdGFncy4KK3ZhciB0YWdUb0NvbXBvbmVudENs
YXNzID0ge307Cit2YXIgdGV4dENvbXBvbmVudENsYXNzID0gbnVsbDsKKwordmFyIFJlYWN0SG9z
dENvbXBvbmVudEluamVjdGlvbiA9IHsKKyAgLy8gVGhpcyBhY2NlcHRzIGEgY2xhc3MgdGhhdCBy
ZWNlaXZlcyB0aGUgdGFnIHN0cmluZy4gVGhpcyBpcyBhIGNhdGNoIGFsbAorICAvLyB0aGF0IGNh
biByZW5kZXIgYW55IGtpbmQgb2YgdGFnLgorICBpbmplY3RHZW5lcmljQ29tcG9uZW50Q2xhc3M6
IGZ1bmN0aW9uIChjb21wb25lbnRDbGFzcykgeworICAgIGdlbmVyaWNDb21wb25lbnRDbGFzcyA9
IGNvbXBvbmVudENsYXNzOworICB9LAorICAvLyBUaGlzIGFjY2VwdHMgYSB0ZXh0IGNvbXBvbmVu
dCBjbGFzcyB0aGF0IHRha2VzIHRoZSB0ZXh0IHN0cmluZyB0byBiZQorICAvLyByZW5kZXJlZCBh
cyBwcm9wcy4KKyAgaW5qZWN0VGV4dENvbXBvbmVudENsYXNzOiBmdW5jdGlvbiAoY29tcG9uZW50
Q2xhc3MpIHsKKyAgICB0ZXh0Q29tcG9uZW50Q2xhc3MgPSBjb21wb25lbnRDbGFzczsKKyAgfSwK
KyAgLy8gVGhpcyBhY2NlcHRzIGEga2V5ZWQgb2JqZWN0IHdpdGggY2xhc3NlcyBhcyB2YWx1ZXMu
IEVhY2gga2V5IHJlcHJlc2VudHMgYQorICAvLyB0YWcuIFRoYXQgcGFydGljdWxhciB0YWcgd2ls
bCB1c2UgdGhpcyBjbGFzcyBpbnN0ZWFkIG9mIHRoZSBnZW5lcmljIG9uZS4KKyAgaW5qZWN0Q29t
cG9uZW50Q2xhc3NlczogZnVuY3Rpb24gKGNvbXBvbmVudENsYXNzZXMpIHsKKyAgICBfYXNzaWdu
KHRhZ1RvQ29tcG9uZW50Q2xhc3MsIGNvbXBvbmVudENsYXNzZXMpOworICB9Cit9OworCisvKioK
KyAqIEdldCBhIGhvc3QgaW50ZXJuYWwgY29tcG9uZW50IGNsYXNzIGZvciBhIHNwZWNpZmljIHRh
Zy4KKyAqCisgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gZWxlbWVudCBUaGUgZWxlbWVudCB0byBj
cmVhdGUuCisgKiBAcmV0dXJuIHtmdW5jdGlvbn0gVGhlIGludGVybmFsIGNsYXNzIGNvbnN0cnVj
dG9yIGZ1bmN0aW9uLgorICovCitmdW5jdGlvbiBjcmVhdGVJbnRlcm5hbENvbXBvbmVudChlbGVt
ZW50KSB7CisgICFnZW5lcmljQ29tcG9uZW50Q2xhc3MgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJv
ZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdUaGVyZSBpcyBubyByZWdpc3RlcmVkIGNvbXBv
bmVudCBmb3IgdGhlIHRhZyAlcycsIGVsZW1lbnQudHlwZSkgOiBfcHJvZEludmFyaWFudCgnMTEx
JywgZWxlbWVudC50eXBlKSA6IHZvaWQgMDsKKyAgcmV0dXJuIG5ldyBnZW5lcmljQ29tcG9uZW50
Q2xhc3MoZWxlbWVudCk7Cit9CisKKy8qKgorICogQHBhcmFtIHtSZWFjdFRleHR9IHRleHQKKyAq
IEByZXR1cm4ge1JlYWN0Q29tcG9uZW50fQorICovCitmdW5jdGlvbiBjcmVhdGVJbnN0YW5jZUZv
clRleHQodGV4dCkgeworICByZXR1cm4gbmV3IHRleHRDb21wb25lbnRDbGFzcyh0ZXh0KTsKK30K
KworLyoqCisgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBjb21wb25lbnQKKyAqIEByZXR1cm4g
e2Jvb2xlYW59CisgKi8KK2Z1bmN0aW9uIGlzVGV4dENvbXBvbmVudChjb21wb25lbnQpIHsKKyAg
cmV0dXJuIGNvbXBvbmVudCBpbnN0YW5jZW9mIHRleHRDb21wb25lbnRDbGFzczsKK30KKwordmFy
IFJlYWN0SG9zdENvbXBvbmVudCA9IHsKKyAgY3JlYXRlSW50ZXJuYWxDb21wb25lbnQ6IGNyZWF0
ZUludGVybmFsQ29tcG9uZW50LAorICBjcmVhdGVJbnN0YW5jZUZvclRleHQ6IGNyZWF0ZUluc3Rh
bmNlRm9yVGV4dCwKKyAgaXNUZXh0Q29tcG9uZW50OiBpc1RleHRDb21wb25lbnQsCisgIGluamVj
dGlvbjogUmVhY3RIb3N0Q29tcG9uZW50SW5qZWN0aW9uCit9OworCittb2R1bGUuZXhwb3J0cyA9
IFJlYWN0SG9zdENvbXBvbmVudDsKK30seyIxMjUiOjEyNSwiMTUwIjoxNTAsIjE1OCI6MTU4fV0s
NjA6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQg
MjAxNi1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGlj
ZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkg
b2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJp
Z2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rv
cnkuCisgKgorICogCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgaGlzdG9yeSA9IFtdOwor
Cit2YXIgUmVhY3RIb3N0T3BlcmF0aW9uSGlzdG9yeUhvb2sgPSB7CisgIG9uSG9zdE9wZXJhdGlv
bjogZnVuY3Rpb24gKG9wZXJhdGlvbikgeworICAgIGhpc3RvcnkucHVzaChvcGVyYXRpb24pOwor
ICB9LAorICBjbGVhckhpc3Rvcnk6IGZ1bmN0aW9uICgpIHsKKyAgICBpZiAoUmVhY3RIb3N0T3Bl
cmF0aW9uSGlzdG9yeUhvb2suX3ByZXZlbnRDbGVhcmluZykgeworICAgICAgLy8gU2hvdWxkIG9u
bHkgYmUgdXNlZCBmb3IgdGVzdHMuCisgICAgICByZXR1cm47CisgICAgfQorCisgICAgaGlzdG9y
eSA9IFtdOworICB9LAorICBnZXRIaXN0b3J5OiBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIGhp
c3Rvcnk7CisgIH0KK307CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RIb3N0T3BlcmF0aW9uSGlz
dG9yeUhvb2s7Cit9LHt9XSw2MTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7Cisv
KioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgRE9N
UHJvcGVydHkgPSBfZGVyZXFfKDExKTsKK3ZhciBFdmVudFBsdWdpbkh1YiA9IF9kZXJlcV8oMTcp
OwordmFyIEV2ZW50UGx1Z2luVXRpbHMgPSBfZGVyZXFfKDE5KTsKK3ZhciBSZWFjdENvbXBvbmVu
dEVudmlyb25tZW50ID0gX2RlcmVxXygyOSk7Cit2YXIgUmVhY3RFbXB0eUNvbXBvbmVudCA9IF9k
ZXJlcV8oNTQpOwordmFyIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlciA9IF9kZXJlcV8oMjYpOwor
dmFyIFJlYWN0SG9zdENvbXBvbmVudCA9IF9kZXJlcV8oNTkpOwordmFyIFJlYWN0VXBkYXRlcyA9
IF9kZXJlcV8oODIpOworCit2YXIgUmVhY3RJbmplY3Rpb24gPSB7CisgIENvbXBvbmVudDogUmVh
Y3RDb21wb25lbnRFbnZpcm9ubWVudC5pbmplY3Rpb24sCisgIERPTVByb3BlcnR5OiBET01Qcm9w
ZXJ0eS5pbmplY3Rpb24sCisgIEVtcHR5Q29tcG9uZW50OiBSZWFjdEVtcHR5Q29tcG9uZW50Lmlu
amVjdGlvbiwKKyAgRXZlbnRQbHVnaW5IdWI6IEV2ZW50UGx1Z2luSHViLmluamVjdGlvbiwKKyAg
RXZlbnRQbHVnaW5VdGlsczogRXZlbnRQbHVnaW5VdGlscy5pbmplY3Rpb24sCisgIEV2ZW50RW1p
dHRlcjogUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLmluamVjdGlvbiwKKyAgSG9zdENvbXBvbmVu
dDogUmVhY3RIb3N0Q29tcG9uZW50LmluamVjdGlvbiwKKyAgVXBkYXRlczogUmVhY3RVcGRhdGVz
LmluamVjdGlvbgorfTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdEluamVjdGlvbjsKK30seyIx
MSI6MTEsIjE3IjoxNywiMTkiOjE5LCIyNiI6MjYsIjI5IjoyOSwiNTQiOjU0LCI1OSI6NTksIjgy
Ijo4Mn1dLDYyOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29w
eXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0
eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBSZWFjdERPTVNlbGVj
dGlvbiA9IF9kZXJlcV8oNDQpOworCit2YXIgY29udGFpbnNOb2RlID0gX2RlcmVxXygxMzkpOwor
dmFyIGZvY3VzTm9kZSA9IF9kZXJlcV8oMTQ0KTsKK3ZhciBnZXRBY3RpdmVFbGVtZW50ID0gX2Rl
cmVxXygxNDUpOworCitmdW5jdGlvbiBpc0luRG9jdW1lbnQobm9kZSkgeworICByZXR1cm4gY29u
dGFpbnNOb2RlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgbm9kZSk7Cit9CisKKy8qKgorICog
QFJlYWN0SW5wdXRTZWxlY3Rpb246IFJlYWN0IGlucHV0IHNlbGVjdGlvbiBtb2R1bGUuIEJhc2Vk
IG9uIFNlbGVjdGlvbi5qcywKKyAqIGJ1dCBtb2RpZmllZCB0byBiZSBzdWl0YWJsZSBmb3IgcmVh
Y3QgYW5kIGhhcyBhIGNvdXBsZSBvZiBidWcgZml4ZXMgKGRvZXNuJ3QKKyAqIGFzc3VtZSBidXR0
b25zIGhhdmUgcmFuZ2Ugc2VsZWN0aW9ucyBhbGxvd2VkKS4KKyAqIElucHV0IHNlbGVjdGlvbiBt
b2R1bGUgZm9yIFJlYWN0LgorICovCit2YXIgUmVhY3RJbnB1dFNlbGVjdGlvbiA9IHsKKworICBo
YXNTZWxlY3Rpb25DYXBhYmlsaXRpZXM6IGZ1bmN0aW9uIChlbGVtKSB7CisgICAgdmFyIG5vZGVO
YW1lID0gZWxlbSAmJiBlbGVtLm5vZGVOYW1lICYmIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2Uo
KTsKKyAgICByZXR1cm4gbm9kZU5hbWUgJiYgKG5vZGVOYW1lID09PSAnaW5wdXQnICYmIGVsZW0u
dHlwZSA9PT0gJ3RleHQnIHx8IG5vZGVOYW1lID09PSAndGV4dGFyZWEnIHx8IGVsZW0uY29udGVu
dEVkaXRhYmxlID09PSAndHJ1ZScpOworICB9LAorCisgIGdldFNlbGVjdGlvbkluZm9ybWF0aW9u
OiBmdW5jdGlvbiAoKSB7CisgICAgdmFyIGZvY3VzZWRFbGVtID0gZ2V0QWN0aXZlRWxlbWVudCgp
OworICAgIHJldHVybiB7CisgICAgICBmb2N1c2VkRWxlbTogZm9jdXNlZEVsZW0sCisgICAgICBz
ZWxlY3Rpb25SYW5nZTogUmVhY3RJbnB1dFNlbGVjdGlvbi5oYXNTZWxlY3Rpb25DYXBhYmlsaXRp
ZXMoZm9jdXNlZEVsZW0pID8gUmVhY3RJbnB1dFNlbGVjdGlvbi5nZXRTZWxlY3Rpb24oZm9jdXNl
ZEVsZW0pIDogbnVsbAorICAgIH07CisgIH0sCisKKyAgLyoqCisgICAqIEByZXN0b3JlU2VsZWN0
aW9uOiBJZiBhbnkgc2VsZWN0aW9uIGluZm9ybWF0aW9uIHdhcyBwb3RlbnRpYWxseSBsb3N0LAor
ICAgKiByZXN0b3JlIGl0LiBUaGlzIGlzIHVzZWZ1bCB3aGVuIHBlcmZvcm1pbmcgb3BlcmF0aW9u
cyB0aGF0IGNvdWxkIHJlbW92ZSBkb20KKyAgICogbm9kZXMgYW5kIHBsYWNlIHRoZW0gYmFjayBp
biwgcmVzdWx0aW5nIGluIGZvY3VzIGJlaW5nIGxvc3QuCisgICAqLworICByZXN0b3JlU2VsZWN0
aW9uOiBmdW5jdGlvbiAocHJpb3JTZWxlY3Rpb25JbmZvcm1hdGlvbikgeworICAgIHZhciBjdXJG
b2N1c2VkRWxlbSA9IGdldEFjdGl2ZUVsZW1lbnQoKTsKKyAgICB2YXIgcHJpb3JGb2N1c2VkRWxl
bSA9IHByaW9yU2VsZWN0aW9uSW5mb3JtYXRpb24uZm9jdXNlZEVsZW07CisgICAgdmFyIHByaW9y
U2VsZWN0aW9uUmFuZ2UgPSBwcmlvclNlbGVjdGlvbkluZm9ybWF0aW9uLnNlbGVjdGlvblJhbmdl
OworICAgIGlmIChjdXJGb2N1c2VkRWxlbSAhPT0gcHJpb3JGb2N1c2VkRWxlbSAmJiBpc0luRG9j
dW1lbnQocHJpb3JGb2N1c2VkRWxlbSkpIHsKKyAgICAgIGlmIChSZWFjdElucHV0U2VsZWN0aW9u
Lmhhc1NlbGVjdGlvbkNhcGFiaWxpdGllcyhwcmlvckZvY3VzZWRFbGVtKSkgeworICAgICAgICBS
ZWFjdElucHV0U2VsZWN0aW9uLnNldFNlbGVjdGlvbihwcmlvckZvY3VzZWRFbGVtLCBwcmlvclNl
bGVjdGlvblJhbmdlKTsKKyAgICAgIH0KKyAgICAgIGZvY3VzTm9kZShwcmlvckZvY3VzZWRFbGVt
KTsKKyAgICB9CisgIH0sCisKKyAgLyoqCisgICAqIEBnZXRTZWxlY3Rpb246IEdldHMgdGhlIHNl
bGVjdGlvbiBib3VuZHMgb2YgYSBmb2N1c2VkIHRleHRhcmVhLCBpbnB1dCBvcgorICAgKiBjb250
ZW50RWRpdGFibGUgbm9kZS4KKyAgICogLUBpbnB1dDogTG9vayB1cCBzZWxlY3Rpb24gYm91bmRz
IG9mIHRoaXMgaW5wdXQKKyAgICogLUByZXR1cm4ge3N0YXJ0OiBzZWxlY3Rpb25TdGFydCwgZW5k
OiBzZWxlY3Rpb25FbmR9CisgICAqLworICBnZXRTZWxlY3Rpb246IGZ1bmN0aW9uIChpbnB1dCkg
eworICAgIHZhciBzZWxlY3Rpb247CisKKyAgICBpZiAoJ3NlbGVjdGlvblN0YXJ0JyBpbiBpbnB1
dCkgeworICAgICAgLy8gTW9kZXJuIGJyb3dzZXIgd2l0aCBpbnB1dCBvciB0ZXh0YXJlYS4KKyAg
ICAgIHNlbGVjdGlvbiA9IHsKKyAgICAgICAgc3RhcnQ6IGlucHV0LnNlbGVjdGlvblN0YXJ0LAor
ICAgICAgICBlbmQ6IGlucHV0LnNlbGVjdGlvbkVuZAorICAgICAgfTsKKyAgICB9IGVsc2UgaWYg
KGRvY3VtZW50LnNlbGVjdGlvbiAmJiBpbnB1dC5ub2RlTmFtZSAmJiBpbnB1dC5ub2RlTmFtZS50
b0xvd2VyQ2FzZSgpID09PSAnaW5wdXQnKSB7CisgICAgICAvLyBJRTggaW5wdXQuCisgICAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5zZWxlY3Rpb24uY3JlYXRlUmFuZ2UoKTsKKyAgICAgIC8vIFRo
ZXJlIGNhbiBvbmx5IGJlIG9uZSBzZWxlY3Rpb24gcGVyIGRvY3VtZW50IGluIElFLCBzbyBpdCBt
dXN0CisgICAgICAvLyBiZSBpbiBvdXIgZWxlbWVudC4KKyAgICAgIGlmIChyYW5nZS5wYXJlbnRF
bGVtZW50KCkgPT09IGlucHV0KSB7CisgICAgICAgIHNlbGVjdGlvbiA9IHsKKyAgICAgICAgICBz
dGFydDogLXJhbmdlLm1vdmVTdGFydCgnY2hhcmFjdGVyJywgLWlucHV0LnZhbHVlLmxlbmd0aCks
CisgICAgICAgICAgZW5kOiAtcmFuZ2UubW92ZUVuZCgnY2hhcmFjdGVyJywgLWlucHV0LnZhbHVl
Lmxlbmd0aCkKKyAgICAgICAgfTsKKyAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgLy8gQ29u
dGVudCBlZGl0YWJsZSBvciBvbGQgSUUgdGV4dGFyZWEuCisgICAgICBzZWxlY3Rpb24gPSBSZWFj
dERPTVNlbGVjdGlvbi5nZXRPZmZzZXRzKGlucHV0KTsKKyAgICB9CisKKyAgICByZXR1cm4gc2Vs
ZWN0aW9uIHx8IHsgc3RhcnQ6IDAsIGVuZDogMCB9OworICB9LAorCisgIC8qKgorICAgKiBAc2V0
U2VsZWN0aW9uOiBTZXRzIHRoZSBzZWxlY3Rpb24gYm91bmRzIG9mIGEgdGV4dGFyZWEgb3IgaW5w
dXQgYW5kIGZvY3VzZXMKKyAgICogdGhlIGlucHV0LgorICAgKiAtQGlucHV0ICAgICBTZXQgc2Vs
ZWN0aW9uIGJvdW5kcyBvZiB0aGlzIGlucHV0IG9yIHRleHRhcmVhCisgICAqIC1Ab2Zmc2V0cyAg
IE9iamVjdCBvZiBzYW1lIGZvcm0gdGhhdCBpcyByZXR1cm5lZCBmcm9tIGdldCoKKyAgICovCisg
IHNldFNlbGVjdGlvbjogZnVuY3Rpb24gKGlucHV0LCBvZmZzZXRzKSB7CisgICAgdmFyIHN0YXJ0
ID0gb2Zmc2V0cy5zdGFydDsKKyAgICB2YXIgZW5kID0gb2Zmc2V0cy5lbmQ7CisgICAgaWYgKGVu
ZCA9PT0gdW5kZWZpbmVkKSB7CisgICAgICBlbmQgPSBzdGFydDsKKyAgICB9CisKKyAgICBpZiAo
J3NlbGVjdGlvblN0YXJ0JyBpbiBpbnB1dCkgeworICAgICAgaW5wdXQuc2VsZWN0aW9uU3RhcnQg
PSBzdGFydDsKKyAgICAgIGlucHV0LnNlbGVjdGlvbkVuZCA9IE1hdGgubWluKGVuZCwgaW5wdXQu
dmFsdWUubGVuZ3RoKTsKKyAgICB9IGVsc2UgaWYgKGRvY3VtZW50LnNlbGVjdGlvbiAmJiBpbnB1
dC5ub2RlTmFtZSAmJiBpbnB1dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnaW5wdXQnKSB7
CisgICAgICB2YXIgcmFuZ2UgPSBpbnB1dC5jcmVhdGVUZXh0UmFuZ2UoKTsKKyAgICAgIHJhbmdl
LmNvbGxhcHNlKHRydWUpOworICAgICAgcmFuZ2UubW92ZVN0YXJ0KCdjaGFyYWN0ZXInLCBzdGFy
dCk7CisgICAgICByYW5nZS5tb3ZlRW5kKCdjaGFyYWN0ZXInLCBlbmQgLSBzdGFydCk7CisgICAg
ICByYW5nZS5zZWxlY3QoKTsKKyAgICB9IGVsc2UgeworICAgICAgUmVhY3RET01TZWxlY3Rpb24u
c2V0T2Zmc2V0cyhpbnB1dCwgb2Zmc2V0cyk7CisgICAgfQorICB9Cit9OworCittb2R1bGUuZXhw
b3J0cyA9IFJlYWN0SW5wdXRTZWxlY3Rpb247Cit9LHsiMTM5IjoxMzksIjE0NCI6MTQ0LCIxNDUi
OjE0NSwiNDQiOjQ0fV0sNjM6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoq
CisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRo
ZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAor
ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0
aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKworLyoqCisgKiBg
UmVhY3RJbnN0YW5jZU1hcGAgbWFpbnRhaW5zIGEgbWFwcGluZyBmcm9tIGEgcHVibGljIGZhY2lu
ZyBzdGF0ZWZ1bAorICogaW5zdGFuY2UgKGtleSkgYW5kIHRoZSBpbnRlcm5hbCByZXByZXNlbnRh
dGlvbiAodmFsdWUpLiBUaGlzIGFsbG93cyBwdWJsaWMKKyAqIG1ldGhvZHMgdG8gYWNjZXB0IHRo
ZSB1c2VyIGZhY2luZyBpbnN0YW5jZSBhcyBhbiBhcmd1bWVudCBhbmQgbWFwIHRoZW0gYmFjawor
ICogdG8gaW50ZXJuYWwgbWV0aG9kcy4KKyAqLworCisvLyBUT0RPOiBSZXBsYWNlIHRoaXMgd2l0
aCBFUzY6IHZhciBSZWFjdEluc3RhbmNlTWFwID0gbmV3IE1hcCgpOworCit2YXIgUmVhY3RJbnN0
YW5jZU1hcCA9IHsKKworICAvKioKKyAgICogVGhpcyBBUEkgc2hvdWxkIGJlIGNhbGxlZCBgZGVs
ZXRlYCBidXQgd2UnZCBoYXZlIHRvIG1ha2Ugc3VyZSB0byBhbHdheXMKKyAgICogdHJhbnNmb3Jt
IHRoZXNlIHRvIHN0cmluZ3MgZm9yIElFIHN1cHBvcnQuIFdoZW4gdGhpcyB0cmFuc2Zvcm0gaXMg
ZnVsbHkKKyAgICogc3VwcG9ydGVkIHdlIGNhbiByZW5hbWUgaXQuCisgICAqLworICByZW1vdmU6
IGZ1bmN0aW9uIChrZXkpIHsKKyAgICBrZXkuX3JlYWN0SW50ZXJuYWxJbnN0YW5jZSA9IHVuZGVm
aW5lZDsKKyAgfSwKKworICBnZXQ6IGZ1bmN0aW9uIChrZXkpIHsKKyAgICByZXR1cm4ga2V5Ll9y
ZWFjdEludGVybmFsSW5zdGFuY2U7CisgIH0sCisKKyAgaGFzOiBmdW5jdGlvbiAoa2V5KSB7Cisg
ICAgcmV0dXJuIGtleS5fcmVhY3RJbnRlcm5hbEluc3RhbmNlICE9PSB1bmRlZmluZWQ7CisgIH0s
CisKKyAgc2V0OiBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkgeworICAgIGtleS5fcmVhY3RJbnRlcm5h
bEluc3RhbmNlID0gdmFsdWU7CisgIH0KKworfTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdElu
c3RhbmNlTWFwOworfSx7fV0sNjQ6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpewor
LyoqCisgKiBDb3B5cmlnaHQgMjAxNi1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy
IHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFu
dAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogCisgKi8KKworJ3VzZSBzdHJpY3QnOworCisv
LyBUcnVzdCB0aGUgZGV2ZWxvcGVyIHRvIG9ubHkgdXNlIFJlYWN0SW5zdHJ1bWVudGF0aW9uIHdp
dGggYSBfX0RFVl9fIGNoZWNrCisKK3ZhciBkZWJ1Z1Rvb2wgPSBudWxsOworCitpZiAoImRldmVs
b3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgIHZhciBSZWFjdERlYnVnVG9vbCA9IF9kZXJl
cV8oNTApOworICBkZWJ1Z1Rvb2wgPSBSZWFjdERlYnVnVG9vbDsKK30KKworbW9kdWxlLmV4cG9y
dHMgPSB7IGRlYnVnVG9vbDogZGVidWdUb29sIH07Cit9LHsiNTAiOjUwfV0sNjU6W2Z1bmN0aW9u
KF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxNi1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICog
CisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgd2FybmluZyA9IF9kZXJlcV8oMTU3KTsKKwor
aWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICB2YXIgcHJvY2Vzc2luZ0No
aWxkQ29udGV4dCA9IGZhbHNlOworCisgIHZhciB3YXJuSW52YWxpZFNldFN0YXRlID0gZnVuY3Rp
b24gKCkgeworICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIXBy
b2Nlc3NpbmdDaGlsZENvbnRleHQsICdzZXRTdGF0ZSguLi4pOiBDYW5ub3QgY2FsbCBzZXRTdGF0
ZSgpIGluc2lkZSBnZXRDaGlsZENvbnRleHQoKScpIDogdm9pZCAwOworICB9OworfQorCit2YXIg
UmVhY3RJbnZhbGlkU2V0U3RhdGVXYXJuaW5nSG9vayA9IHsKKyAgb25CZWdpblByb2Nlc3NpbmdD
aGlsZENvbnRleHQ6IGZ1bmN0aW9uICgpIHsKKyAgICBwcm9jZXNzaW5nQ2hpbGRDb250ZXh0ID0g
dHJ1ZTsKKyAgfSwKKyAgb25FbmRQcm9jZXNzaW5nQ2hpbGRDb250ZXh0OiBmdW5jdGlvbiAoKSB7
CisgICAgcHJvY2Vzc2luZ0NoaWxkQ29udGV4dCA9IGZhbHNlOworICB9LAorICBvblNldFN0YXRl
OiBmdW5jdGlvbiAoKSB7CisgICAgd2FybkludmFsaWRTZXRTdGF0ZSgpOworICB9Cit9OworCitt
b2R1bGUuZXhwb3J0cyA9IFJlYWN0SW52YWxpZFNldFN0YXRlV2FybmluZ0hvb2s7Cit9LHsiMTU3
IjoxNTd9XSw2NjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENv
cHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1z
dHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRp
cmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBw
YXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1l
IGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgYWRsZXIzMiA9IF9k
ZXJlcV8oMTAzKTsKKwordmFyIFRBR19FTkQgPSAvXC8/Pi87Cit2YXIgQ09NTUVOVF9TVEFSVCA9
IC9ePFwhXC1cLS87CisKK3ZhciBSZWFjdE1hcmt1cENoZWNrc3VtID0geworICBDSEVDS1NVTV9B
VFRSX05BTUU6ICdkYXRhLXJlYWN0LWNoZWNrc3VtJywKKworICAvKioKKyAgICogQHBhcmFtIHtz
dHJpbmd9IG1hcmt1cCBNYXJrdXAgc3RyaW5nCisgICAqIEByZXR1cm4ge3N0cmluZ30gTWFya3Vw
IHN0cmluZyB3aXRoIGNoZWNrc3VtIGF0dHJpYnV0ZSBhdHRhY2hlZAorICAgKi8KKyAgYWRkQ2hl
Y2tzdW1Ub01hcmt1cDogZnVuY3Rpb24gKG1hcmt1cCkgeworICAgIHZhciBjaGVja3N1bSA9IGFk
bGVyMzIobWFya3VwKTsKKworICAgIC8vIEFkZCBjaGVja3N1bSAoaGFuZGxlIGJvdGggcGFyZW50
IHRhZ3MsIGNvbW1lbnRzIGFuZCBzZWxmLWNsb3NpbmcgdGFncykKKyAgICBpZiAoQ09NTUVOVF9T
VEFSVC50ZXN0KG1hcmt1cCkpIHsKKyAgICAgIHJldHVybiBtYXJrdXA7CisgICAgfSBlbHNlIHsK
KyAgICAgIHJldHVybiBtYXJrdXAucmVwbGFjZShUQUdfRU5ELCAnICcgKyBSZWFjdE1hcmt1cENo
ZWNrc3VtLkNIRUNLU1VNX0FUVFJfTkFNRSArICc9IicgKyBjaGVja3N1bSArICciJCYnKTsKKyAg
ICB9CisgIH0sCisKKyAgLyoqCisgICAqIEBwYXJhbSB7c3RyaW5nfSBtYXJrdXAgdG8gdXNlCisg
ICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gZWxlbWVudCByb290IFJlYWN0IGVsZW1lbnQKKyAgICog
QHJldHVybnMge2Jvb2xlYW59IHdoZXRoZXIgb3Igbm90IHRoZSBtYXJrdXAgaXMgdGhlIHNhbWUK
KyAgICovCisgIGNhblJldXNlTWFya3VwOiBmdW5jdGlvbiAobWFya3VwLCBlbGVtZW50KSB7Cisg
ICAgdmFyIGV4aXN0aW5nQ2hlY2tzdW0gPSBlbGVtZW50LmdldEF0dHJpYnV0ZShSZWFjdE1hcmt1
cENoZWNrc3VtLkNIRUNLU1VNX0FUVFJfTkFNRSk7CisgICAgZXhpc3RpbmdDaGVja3N1bSA9IGV4
aXN0aW5nQ2hlY2tzdW0gJiYgcGFyc2VJbnQoZXhpc3RpbmdDaGVja3N1bSwgMTApOworICAgIHZh
ciBtYXJrdXBDaGVja3N1bSA9IGFkbGVyMzIobWFya3VwKTsKKyAgICByZXR1cm4gbWFya3VwQ2hl
Y2tzdW0gPT09IGV4aXN0aW5nQ2hlY2tzdW07CisgIH0KK307CisKK21vZHVsZS5leHBvcnRzID0g
UmVhY3RNYXJrdXBDaGVja3N1bTsKK30seyIxMDMiOjEwM31dLDY3OltmdW5jdGlvbihfZGVyZXFf
LG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJv
b2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29k
ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisg
KiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUu
IEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNl
IHN0cmljdCc7CisKK3ZhciBfcHJvZEludmFyaWFudCA9IF9kZXJlcV8oMTI1KTsKKwordmFyIERP
TUxhenlUcmVlID0gX2RlcmVxXyg5KTsKK3ZhciBET01Qcm9wZXJ0eSA9IF9kZXJlcV8oMTEpOwor
dmFyIFJlYWN0ID0gX2RlcmVxXygxMzQpOwordmFyIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlciA9
IF9kZXJlcV8oMjYpOwordmFyIFJlYWN0Q3VycmVudE93bmVyID0gX2RlcmVxXygxMzMpOwordmFy
IFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IF9kZXJlcV8oMzQpOwordmFyIFJlYWN0RE9NQ29udGFp
bmVySW5mbyA9IF9kZXJlcV8oMzUpOwordmFyIFJlYWN0RE9NRmVhdHVyZUZsYWdzID0gX2RlcmVx
XygzNyk7Cit2YXIgUmVhY3RGZWF0dXJlRmxhZ3MgPSBfZGVyZXFfKDU4KTsKK3ZhciBSZWFjdElu
c3RhbmNlTWFwID0gX2RlcmVxXyg2Myk7Cit2YXIgUmVhY3RJbnN0cnVtZW50YXRpb24gPSBfZGVy
ZXFfKDY0KTsKK3ZhciBSZWFjdE1hcmt1cENoZWNrc3VtID0gX2RlcmVxXyg2Nik7Cit2YXIgUmVh
Y3RSZWNvbmNpbGVyID0gX2RlcmVxXyg3NSk7Cit2YXIgUmVhY3RVcGRhdGVRdWV1ZSA9IF9kZXJl
cV8oODEpOwordmFyIFJlYWN0VXBkYXRlcyA9IF9kZXJlcV8oODIpOworCit2YXIgZW1wdHlPYmpl
Y3QgPSBfZGVyZXFfKDE0Myk7Cit2YXIgaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudCA9IF9kZXJl
cV8oMTIxKTsKK3ZhciBpbnZhcmlhbnQgPSBfZGVyZXFfKDE1MCk7Cit2YXIgc2V0SW5uZXJIVE1M
ID0gX2RlcmVxXygxMjcpOwordmFyIHNob3VsZFVwZGF0ZVJlYWN0Q29tcG9uZW50ID0gX2RlcmVx
XygxMjkpOwordmFyIHdhcm5pbmcgPSBfZGVyZXFfKDE1Nyk7CisKK3ZhciBBVFRSX05BTUUgPSBE
T01Qcm9wZXJ0eS5JRF9BVFRSSUJVVEVfTkFNRTsKK3ZhciBST09UX0FUVFJfTkFNRSA9IERPTVBy
b3BlcnR5LlJPT1RfQVRUUklCVVRFX05BTUU7CisKK3ZhciBFTEVNRU5UX05PREVfVFlQRSA9IDE7
Cit2YXIgRE9DX05PREVfVFlQRSA9IDk7Cit2YXIgRE9DVU1FTlRfRlJBR01FTlRfTk9ERV9UWVBF
ID0gMTE7CisKK3ZhciBpbnN0YW5jZXNCeVJlYWN0Um9vdElEID0ge307CisKKy8qKgorICogRmlu
ZHMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIKKyAqIHRoYXQncyBub3QgY29tbW9u
IGJldHdlZW4gdGhlIHR3byBnaXZlbiBzdHJpbmdzLgorICoKKyAqIEByZXR1cm4ge251bWJlcn0g
dGhlIGluZGV4IG9mIHRoZSBjaGFyYWN0ZXIgd2hlcmUgdGhlIHN0cmluZ3MgZGl2ZXJnZQorICov
CitmdW5jdGlvbiBmaXJzdERpZmZlcmVuY2VJbmRleChzdHJpbmcxLCBzdHJpbmcyKSB7CisgIHZh
ciBtaW5MZW4gPSBNYXRoLm1pbihzdHJpbmcxLmxlbmd0aCwgc3RyaW5nMi5sZW5ndGgpOworICBm
b3IgKHZhciBpID0gMDsgaSA8IG1pbkxlbjsgaSsrKSB7CisgICAgaWYgKHN0cmluZzEuY2hhckF0
KGkpICE9PSBzdHJpbmcyLmNoYXJBdChpKSkgeworICAgICAgcmV0dXJuIGk7CisgICAgfQorICB9
CisgIHJldHVybiBzdHJpbmcxLmxlbmd0aCA9PT0gc3RyaW5nMi5sZW5ndGggPyAtMSA6IG1pbkxl
bjsKK30KKworLyoqCisgKiBAcGFyYW0ge0RPTUVsZW1lbnR8RE9NRG9jdW1lbnR9IGNvbnRhaW5l
ciBET00gZWxlbWVudCB0aGF0IG1heSBjb250YWluCisgKiBhIFJlYWN0IGNvbXBvbmVudAorICog
QHJldHVybiB7Pyp9IERPTSBlbGVtZW50IHRoYXQgbWF5IGhhdmUgdGhlIHJlYWN0Um9vdCBJRCwg
b3IgbnVsbC4KKyAqLworZnVuY3Rpb24gZ2V0UmVhY3RSb290RWxlbWVudEluQ29udGFpbmVyKGNv
bnRhaW5lcikgeworICBpZiAoIWNvbnRhaW5lcikgeworICAgIHJldHVybiBudWxsOworICB9CisK
KyAgaWYgKGNvbnRhaW5lci5ub2RlVHlwZSA9PT0gRE9DX05PREVfVFlQRSkgeworICAgIHJldHVy
biBjb250YWluZXIuZG9jdW1lbnRFbGVtZW50OworICB9IGVsc2UgeworICAgIHJldHVybiBjb250
YWluZXIuZmlyc3RDaGlsZDsKKyAgfQorfQorCitmdW5jdGlvbiBpbnRlcm5hbEdldElEKG5vZGUp
IHsKKyAgLy8gSWYgbm9kZSBpcyBzb21ldGhpbmcgbGlrZSBhIHdpbmRvdywgZG9jdW1lbnQsIG9y
IHRleHQgbm9kZSwgbm9uZSBvZgorICAvLyB3aGljaCBzdXBwb3J0IGF0dHJpYnV0ZXMgb3IgYSAu
Z2V0QXR0cmlidXRlIG1ldGhvZCwgZ3JhY2VmdWxseSByZXR1cm4KKyAgLy8gdGhlIGVtcHR5IHN0
cmluZywgYXMgaWYgdGhlIGF0dHJpYnV0ZSB3ZXJlIG1pc3NpbmcuCisgIHJldHVybiBub2RlLmdl
dEF0dHJpYnV0ZSAmJiBub2RlLmdldEF0dHJpYnV0ZShBVFRSX05BTUUpIHx8ICcnOworfQorCisv
KioKKyAqIE1vdW50cyB0aGlzIGNvbXBvbmVudCBhbmQgaW5zZXJ0cyBpdCBpbnRvIHRoZSBET00u
CisgKgorICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gY29tcG9uZW50SW5zdGFuY2UgVGhlIGlu
c3RhbmNlIHRvIG1vdW50LgorICogQHBhcmFtIHtET01FbGVtZW50fSBjb250YWluZXIgRE9NIGVs
ZW1lbnQgdG8gbW91bnQgaW50by4KKyAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlv
bn0gdHJhbnNhY3Rpb24KKyAqIEBwYXJhbSB7Ym9vbGVhbn0gc2hvdWxkUmV1c2VNYXJrdXAgSWYg
dHJ1ZSwgZG8gbm90IGluc2VydCBtYXJrdXAKKyAqLworZnVuY3Rpb24gbW91bnRDb21wb25lbnRJ
bnRvTm9kZSh3cmFwcGVySW5zdGFuY2UsIGNvbnRhaW5lciwgdHJhbnNhY3Rpb24sIHNob3VsZFJl
dXNlTWFya3VwLCBjb250ZXh0KSB7CisgIHZhciBtYXJrZXJOYW1lOworICBpZiAoUmVhY3RGZWF0
dXJlRmxhZ3MubG9nVG9wTGV2ZWxSZW5kZXJzKSB7CisgICAgdmFyIHdyYXBwZWRFbGVtZW50ID0g
d3JhcHBlckluc3RhbmNlLl9jdXJyZW50RWxlbWVudC5wcm9wcy5jaGlsZDsKKyAgICB2YXIgdHlw
ZSA9IHdyYXBwZWRFbGVtZW50LnR5cGU7CisgICAgbWFya2VyTmFtZSA9ICdSZWFjdCBtb3VudDog
JyArICh0eXBlb2YgdHlwZSA9PT0gJ3N0cmluZycgPyB0eXBlIDogdHlwZS5kaXNwbGF5TmFtZSB8
fCB0eXBlLm5hbWUpOworICAgIGNvbnNvbGUudGltZShtYXJrZXJOYW1lKTsKKyAgfQorCisgIHZh
ciBtYXJrdXAgPSBSZWFjdFJlY29uY2lsZXIubW91bnRDb21wb25lbnQod3JhcHBlckluc3RhbmNl
LCB0cmFuc2FjdGlvbiwgbnVsbCwgUmVhY3RET01Db250YWluZXJJbmZvKHdyYXBwZXJJbnN0YW5j
ZSwgY29udGFpbmVyKSwgY29udGV4dCwgMCAvKiBwYXJlbnREZWJ1Z0lEICovCisgICk7CisKKyAg
aWYgKG1hcmtlck5hbWUpIHsKKyAgICBjb25zb2xlLnRpbWVFbmQobWFya2VyTmFtZSk7CisgIH0K
KworICB3cmFwcGVySW5zdGFuY2UuX3JlbmRlcmVkQ29tcG9uZW50Ll90b3BMZXZlbFdyYXBwZXIg
PSB3cmFwcGVySW5zdGFuY2U7CisgIFJlYWN0TW91bnQuX21vdW50SW1hZ2VJbnRvTm9kZShtYXJr
dXAsIGNvbnRhaW5lciwgd3JhcHBlckluc3RhbmNlLCBzaG91bGRSZXVzZU1hcmt1cCwgdHJhbnNh
Y3Rpb24pOworfQorCisvKioKKyAqIEJhdGNoZWQgbW91bnQuCisgKgorICogQHBhcmFtIHtSZWFj
dENvbXBvbmVudH0gY29tcG9uZW50SW5zdGFuY2UgVGhlIGluc3RhbmNlIHRvIG1vdW50LgorICog
QHBhcmFtIHtET01FbGVtZW50fSBjb250YWluZXIgRE9NIGVsZW1lbnQgdG8gbW91bnQgaW50by4K
KyAqIEBwYXJhbSB7Ym9vbGVhbn0gc2hvdWxkUmV1c2VNYXJrdXAgSWYgdHJ1ZSwgZG8gbm90IGlu
c2VydCBtYXJrdXAKKyAqLworZnVuY3Rpb24gYmF0Y2hlZE1vdW50Q29tcG9uZW50SW50b05vZGUo
Y29tcG9uZW50SW5zdGFuY2UsIGNvbnRhaW5lciwgc2hvdWxkUmV1c2VNYXJrdXAsIGNvbnRleHQp
IHsKKyAgdmFyIHRyYW5zYWN0aW9uID0gUmVhY3RVcGRhdGVzLlJlYWN0UmVjb25jaWxlVHJhbnNh
Y3Rpb24uZ2V0UG9vbGVkKAorICAvKiB1c2VDcmVhdGVFbGVtZW50ICovCisgICFzaG91bGRSZXVz
ZU1hcmt1cCAmJiBSZWFjdERPTUZlYXR1cmVGbGFncy51c2VDcmVhdGVFbGVtZW50KTsKKyAgdHJh
bnNhY3Rpb24ucGVyZm9ybShtb3VudENvbXBvbmVudEludG9Ob2RlLCBudWxsLCBjb21wb25lbnRJ
bnN0YW5jZSwgY29udGFpbmVyLCB0cmFuc2FjdGlvbiwgc2hvdWxkUmV1c2VNYXJrdXAsIGNvbnRl
eHQpOworICBSZWFjdFVwZGF0ZXMuUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbi5yZWxlYXNlKHRy
YW5zYWN0aW9uKTsKK30KKworLyoqCisgKiBVbm1vdW50cyBhIGNvbXBvbmVudCBhbmQgcmVtb3Zl
cyBpdCBmcm9tIHRoZSBET00uCisgKgorICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gaW5zdGFu
Y2UgUmVhY3QgY29tcG9uZW50IGluc3RhbmNlLgorICogQHBhcmFtIHtET01FbGVtZW50fSBjb250
YWluZXIgRE9NIGVsZW1lbnQgdG8gdW5tb3VudCBmcm9tLgorICogQGZpbmFsCisgKiBAaW50ZXJu
YWwKKyAqIEBzZWUge1JlYWN0TW91bnQudW5tb3VudENvbXBvbmVudEF0Tm9kZX0KKyAqLworZnVu
Y3Rpb24gdW5tb3VudENvbXBvbmVudEZyb21Ob2RlKGluc3RhbmNlLCBjb250YWluZXIsIHNhZmVs
eSkgeworICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgUmVhY3RJ
bnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uQmVnaW5GbHVzaCgpOworICB9CisgIFJlYWN0UmVj
b25jaWxlci51bm1vdW50Q29tcG9uZW50KGluc3RhbmNlLCBzYWZlbHkpOworICBpZiAoImRldmVs
b3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVi
dWdUb29sLm9uRW5kRmx1c2goKTsKKyAgfQorCisgIGlmIChjb250YWluZXIubm9kZVR5cGUgPT09
IERPQ19OT0RFX1RZUEUpIHsKKyAgICBjb250YWluZXIgPSBjb250YWluZXIuZG9jdW1lbnRFbGVt
ZW50OworICB9CisKKyAgLy8gaHR0cDovL2pzcGVyZi5jb20vZW1wdHlpbmctYS1ub2RlCisgIHdo
aWxlIChjb250YWluZXIubGFzdENoaWxkKSB7CisgICAgY29udGFpbmVyLnJlbW92ZUNoaWxkKGNv
bnRhaW5lci5sYXN0Q2hpbGQpOworICB9Cit9CisKKy8qKgorICogVHJ1ZSBpZiB0aGUgc3VwcGxp
ZWQgRE9NIG5vZGUgaGFzIGEgZGlyZWN0IFJlYWN0LXJlbmRlcmVkIGNoaWxkIHRoYXQgaXMKKyAq
IG5vdCBhIFJlYWN0IHJvb3QgZWxlbWVudC4gVXNlZnVsIGZvciB3YXJuaW5nIGluIGByZW5kZXJg
LAorICogYHVubW91bnRDb21wb25lbnRBdE5vZGVgLCBldGMuCisgKgorICogQHBhcmFtIHs/RE9N
RWxlbWVudH0gbm9kZSBUaGUgY2FuZGlkYXRlIERPTSBub2RlLgorICogQHJldHVybiB7Ym9vbGVh
bn0gVHJ1ZSBpZiB0aGUgRE9NIGVsZW1lbnQgY29udGFpbnMgYSBkaXJlY3QgY2hpbGQgdGhhdCB3
YXMKKyAqIHJlbmRlcmVkIGJ5IFJlYWN0IGJ1dCBpcyBub3QgYSByb290IGVsZW1lbnQuCisgKiBA
aW50ZXJuYWwKKyAqLworZnVuY3Rpb24gaGFzTm9uUm9vdFJlYWN0Q2hpbGQoY29udGFpbmVyKSB7
CisgIHZhciByb290RWwgPSBnZXRSZWFjdFJvb3RFbGVtZW50SW5Db250YWluZXIoY29udGFpbmVy
KTsKKyAgaWYgKHJvb3RFbCkgeworICAgIHZhciBpbnN0ID0gUmVhY3RET01Db21wb25lbnRUcmVl
LmdldEluc3RhbmNlRnJvbU5vZGUocm9vdEVsKTsKKyAgICByZXR1cm4gISEoaW5zdCAmJiBpbnN0
Ll9ob3N0UGFyZW50KTsKKyAgfQorfQorCisvKioKKyAqIFRydWUgaWYgdGhlIHN1cHBsaWVkIERP
TSBub2RlIGlzIGEgUmVhY3QgRE9NIGVsZW1lbnQgYW5kCisgKiBpdCBoYXMgYmVlbiByZW5kZXJl
ZCBieSBhbm90aGVyIGNvcHkgb2YgUmVhY3QuCisgKgorICogQHBhcmFtIHs/RE9NRWxlbWVudH0g
bm9kZSBUaGUgY2FuZGlkYXRlIERPTSBub2RlLgorICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBp
ZiB0aGUgRE9NIGhhcyBiZWVuIHJlbmRlcmVkIGJ5IGFub3RoZXIgY29weSBvZiBSZWFjdAorICog
QGludGVybmFsCisgKi8KK2Z1bmN0aW9uIG5vZGVJc1JlbmRlcmVkQnlPdGhlckluc3RhbmNlKGNv
bnRhaW5lcikgeworICB2YXIgcm9vdEVsID0gZ2V0UmVhY3RSb290RWxlbWVudEluQ29udGFpbmVy
KGNvbnRhaW5lcik7CisgIHJldHVybiAhIShyb290RWwgJiYgaXNSZWFjdE5vZGUocm9vdEVsKSAm
JiAhUmVhY3RET01Db21wb25lbnRUcmVlLmdldEluc3RhbmNlRnJvbU5vZGUocm9vdEVsKSk7Cit9
CisKKy8qKgorICogVHJ1ZSBpZiB0aGUgc3VwcGxpZWQgRE9NIG5vZGUgaXMgYSB2YWxpZCBub2Rl
IGVsZW1lbnQuCisgKgorICogQHBhcmFtIHs/RE9NRWxlbWVudH0gbm9kZSBUaGUgY2FuZGlkYXRl
IERPTSBub2RlLgorICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgRE9NIGlzIGEgdmFs
aWQgRE9NIG5vZGUuCisgKiBAaW50ZXJuYWwKKyAqLworZnVuY3Rpb24gaXNWYWxpZENvbnRhaW5l
cihub2RlKSB7CisgIHJldHVybiAhIShub2RlICYmIChub2RlLm5vZGVUeXBlID09PSBFTEVNRU5U
X05PREVfVFlQRSB8fCBub2RlLm5vZGVUeXBlID09PSBET0NfTk9ERV9UWVBFIHx8IG5vZGUubm9k
ZVR5cGUgPT09IERPQ1VNRU5UX0ZSQUdNRU5UX05PREVfVFlQRSkpOworfQorCisvKioKKyAqIFRy
dWUgaWYgdGhlIHN1cHBsaWVkIERPTSBub2RlIGlzIGEgdmFsaWQgUmVhY3Qgbm9kZSBlbGVtZW50
LgorICoKKyAqIEBwYXJhbSB7P0RPTUVsZW1lbnR9IG5vZGUgVGhlIGNhbmRpZGF0ZSBET00gbm9k
ZS4KKyAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdGhlIERPTSBpcyBhIHZhbGlkIFJlYWN0
IERPTSBub2RlLgorICogQGludGVybmFsCisgKi8KK2Z1bmN0aW9uIGlzUmVhY3ROb2RlKG5vZGUp
IHsKKyAgcmV0dXJuIGlzVmFsaWRDb250YWluZXIobm9kZSkgJiYgKG5vZGUuaGFzQXR0cmlidXRl
KFJPT1RfQVRUUl9OQU1FKSB8fCBub2RlLmhhc0F0dHJpYnV0ZShBVFRSX05BTUUpKTsKK30KKwor
ZnVuY3Rpb24gZ2V0SG9zdFJvb3RJbnN0YW5jZUluQ29udGFpbmVyKGNvbnRhaW5lcikgeworICB2
YXIgcm9vdEVsID0gZ2V0UmVhY3RSb290RWxlbWVudEluQ29udGFpbmVyKGNvbnRhaW5lcik7Cisg
IHZhciBwcmV2SG9zdEluc3RhbmNlID0gcm9vdEVsICYmIFJlYWN0RE9NQ29tcG9uZW50VHJlZS5n
ZXRJbnN0YW5jZUZyb21Ob2RlKHJvb3RFbCk7CisgIHJldHVybiBwcmV2SG9zdEluc3RhbmNlICYm
ICFwcmV2SG9zdEluc3RhbmNlLl9ob3N0UGFyZW50ID8gcHJldkhvc3RJbnN0YW5jZSA6IG51bGw7
Cit9CisKK2Z1bmN0aW9uIGdldFRvcExldmVsV3JhcHBlckluQ29udGFpbmVyKGNvbnRhaW5lcikg
eworICB2YXIgcm9vdCA9IGdldEhvc3RSb290SW5zdGFuY2VJbkNvbnRhaW5lcihjb250YWluZXIp
OworICByZXR1cm4gcm9vdCA/IHJvb3QuX2hvc3RDb250YWluZXJJbmZvLl90b3BMZXZlbFdyYXBw
ZXIgOiBudWxsOworfQorCisvKioKKyAqIFRlbXBvcmFyeSAoPykgaGFjayBzbyB0aGF0IHdlIGNh
biBzdG9yZSBhbGwgdG9wLWxldmVsIHBlbmRpbmcgdXBkYXRlcyBvbgorICogY29tcG9zaXRlcyBp
bnN0ZWFkIG9mIGhhdmluZyB0byB3b3JyeSBhYm91dCBkaWZmZXJlbnQgdHlwZXMgb2YgY29tcG9u
ZW50cworICogaGVyZS4KKyAqLwordmFyIHRvcExldmVsUm9vdENvdW50ZXIgPSAxOwordmFyIFRv
cExldmVsV3JhcHBlciA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5yb290SUQgPSB0b3BMZXZlbFJv
b3RDb3VudGVyKys7Cit9OworVG9wTGV2ZWxXcmFwcGVyLnByb3RvdHlwZS5pc1JlYWN0Q29tcG9u
ZW50ID0ge307CitpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgIFRvcExl
dmVsV3JhcHBlci5kaXNwbGF5TmFtZSA9ICdUb3BMZXZlbFdyYXBwZXInOworfQorVG9wTGV2ZWxX
cmFwcGVyLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiB0aGlzLnBy
b3BzLmNoaWxkOworfTsKK1RvcExldmVsV3JhcHBlci5pc1JlYWN0VG9wTGV2ZWxXcmFwcGVyID0g
dHJ1ZTsKKworLyoqCisgKiBNb3VudGluZyBpcyB0aGUgcHJvY2VzcyBvZiBpbml0aWFsaXppbmcg
YSBSZWFjdCBjb21wb25lbnQgYnkgY3JlYXRpbmcgaXRzCisgKiByZXByZXNlbnRhdGl2ZSBET00g
ZWxlbWVudHMgYW5kIGluc2VydGluZyB0aGVtIGludG8gYSBzdXBwbGllZCBgY29udGFpbmVyYC4K
KyAqIEFueSBwcmlvciBjb250ZW50IGluc2lkZSBgY29udGFpbmVyYCBpcyBkZXN0cm95ZWQgaW4g
dGhlIHByb2Nlc3MuCisgKgorICogICBSZWFjdE1vdW50LnJlbmRlcigKKyAqICAgICBjb21wb25l
bnQsCisgKiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpCisgKiAgICk7
CisgKgorICogICA8ZGl2IGlkPSJjb250YWluZXIiPiAgICAgICAgICAgICAgICAgICA8LS0gU3Vw
cGxpZWQgYGNvbnRhaW5lcmAuCisgKiAgICAgPGRpdiBkYXRhLXJlYWN0aWQ9Ii4zIj4gICAgICAg
ICAgICAgIDwtLSBSZW5kZXJlZCByZWFjdFJvb3Qgb2YgUmVhY3QKKyAqICAgICAgIC8vIC4uLiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC4KKyAqICAgICA8L2Rpdj4K
KyAqICAgPC9kaXY+CisgKgorICogSW5zaWRlIG9mIGBjb250YWluZXJgLCB0aGUgZmlyc3QgZWxl
bWVudCByZW5kZXJlZCBpcyB0aGUgInJlYWN0Um9vdCIuCisgKi8KK3ZhciBSZWFjdE1vdW50ID0g
eworCisgIFRvcExldmVsV3JhcHBlcjogVG9wTGV2ZWxXcmFwcGVyLAorCisgIC8qKgorICAgKiBV
c2VkIGJ5IGRldnRvb2xzLiBUaGUga2V5cyBhcmUgbm90IGltcG9ydGFudC4KKyAgICovCisgIF9p
bnN0YW5jZXNCeVJlYWN0Um9vdElEOiBpbnN0YW5jZXNCeVJlYWN0Um9vdElELAorCisgIC8qKgor
ICAgKiBUaGlzIGlzIGEgaG9vayBwcm92aWRlZCB0byBzdXBwb3J0IHJlbmRlcmluZyBSZWFjdCBj
b21wb25lbnRzIHdoaWxlCisgICAqIGVuc3VyaW5nIHRoYXQgdGhlIGFwcGFyZW50IHNjcm9sbCBw
b3NpdGlvbiBvZiBpdHMgYGNvbnRhaW5lcmAgZG9lcyBub3QKKyAgICogY2hhbmdlLgorICAgKgor
ICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGNvbnRhaW5lciBUaGUgYGNvbnRhaW5lcmAgYmVpbmcg
cmVuZGVyZWQgaW50by4KKyAgICogQHBhcmFtIHtmdW5jdGlvbn0gcmVuZGVyQ2FsbGJhY2sgVGhp
cyBtdXN0IGJlIGNhbGxlZCBvbmNlIHRvIGRvIHRoZSByZW5kZXIuCisgICAqLworICBzY3JvbGxN
b25pdG9yOiBmdW5jdGlvbiAoY29udGFpbmVyLCByZW5kZXJDYWxsYmFjaykgeworICAgIHJlbmRl
ckNhbGxiYWNrKCk7CisgIH0sCisKKyAgLyoqCisgICAqIFRha2UgYSBjb21wb25lbnQgdGhhdCdz
IGFscmVhZHkgbW91bnRlZCBpbnRvIHRoZSBET00gYW5kIHJlcGxhY2UgaXRzIHByb3BzCisgICAq
IEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IHByZXZDb21wb25lbnQgY29tcG9uZW50IGluc3RhbmNl
IGFscmVhZHkgaW4gdGhlIERPTQorICAgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gbmV4dEVsZW1l
bnQgY29tcG9uZW50IGluc3RhbmNlIHRvIHJlbmRlcgorICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9
IGNvbnRhaW5lciBjb250YWluZXIgdG8gcmVuZGVyIGludG8KKyAgICogQHBhcmFtIHs/ZnVuY3Rp
b259IGNhbGxiYWNrIGZ1bmN0aW9uIHRyaWdnZXJlZCBvbiBjb21wbGV0aW9uCisgICAqLworICBf
dXBkYXRlUm9vdENvbXBvbmVudDogZnVuY3Rpb24gKHByZXZDb21wb25lbnQsIG5leHRFbGVtZW50
LCBuZXh0Q29udGV4dCwgY29udGFpbmVyLCBjYWxsYmFjaykgeworICAgIFJlYWN0TW91bnQuc2Ny
b2xsTW9uaXRvcihjb250YWluZXIsIGZ1bmN0aW9uICgpIHsKKyAgICAgIFJlYWN0VXBkYXRlUXVl
dWUuZW5xdWV1ZUVsZW1lbnRJbnRlcm5hbChwcmV2Q29tcG9uZW50LCBuZXh0RWxlbWVudCwgbmV4
dENvbnRleHQpOworICAgICAgaWYgKGNhbGxiYWNrKSB7CisgICAgICAgIFJlYWN0VXBkYXRlUXVl
dWUuZW5xdWV1ZUNhbGxiYWNrSW50ZXJuYWwocHJldkNvbXBvbmVudCwgY2FsbGJhY2spOworICAg
ICAgfQorICAgIH0pOworCisgICAgcmV0dXJuIHByZXZDb21wb25lbnQ7CisgIH0sCisKKyAgLyoq
CisgICAqIFJlbmRlciBhIG5ldyBjb21wb25lbnQgaW50byB0aGUgRE9NLiBIb29rZWQgYnkgaG9v
a3MhCisgICAqCisgICAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBuZXh0RWxlbWVudCBlbGVtZW50
IHRvIHJlbmRlcgorICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGNvbnRhaW5lciBjb250YWluZXIg
dG8gcmVuZGVyIGludG8KKyAgICogQHBhcmFtIHtib29sZWFufSBzaG91bGRSZXVzZU1hcmt1cCBp
ZiB3ZSBzaG91bGQgc2tpcCB0aGUgbWFya3VwIGluc2VydGlvbgorICAgKiBAcmV0dXJuIHtSZWFj
dENvbXBvbmVudH0gbmV4dENvbXBvbmVudAorICAgKi8KKyAgX3JlbmRlck5ld1Jvb3RDb21wb25l
bnQ6IGZ1bmN0aW9uIChuZXh0RWxlbWVudCwgY29udGFpbmVyLCBzaG91bGRSZXVzZU1hcmt1cCwg
Y29udGV4dCkgeworICAgIC8vIFZhcmlvdXMgcGFydHMgb2Ygb3VyIGNvZGUgKHN1Y2ggYXMgUmVh
Y3RDb21wb3NpdGVDb21wb25lbnQncworICAgIC8vIF9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnQp
IGFzc3VtZSB0aGF0IGNhbGxzIHRvIHJlbmRlciBhcmVuJ3QgbmVzdGVkOworICAgIC8vIHZlcmlm
eSB0aGF0IHRoYXQncyB0aGUgY2FzZS4KKyAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlv
bicgPyB3YXJuaW5nKFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPT0gbnVsbCwgJ19yZW5kZXJO
ZXdSb290Q29tcG9uZW50KCk6IFJlbmRlciBtZXRob2RzIHNob3VsZCBiZSBhIHB1cmUgZnVuY3Rp
b24gJyArICdvZiBwcm9wcyBhbmQgc3RhdGU7IHRyaWdnZXJpbmcgbmVzdGVkIGNvbXBvbmVudCB1
cGRhdGVzIGZyb20gJyArICdyZW5kZXIgaXMgbm90IGFsbG93ZWQuIElmIG5lY2Vzc2FyeSwgdHJp
Z2dlciBuZXN0ZWQgdXBkYXRlcyBpbiAnICsgJ2NvbXBvbmVudERpZFVwZGF0ZS4gQ2hlY2sgdGhl
IHJlbmRlciBtZXRob2Qgb2YgJXMuJywgUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCAmJiBSZWFj
dEN1cnJlbnRPd25lci5jdXJyZW50LmdldE5hbWUoKSB8fCAnUmVhY3RDb21wb3NpdGVDb21wb25l
bnQnKSA6IHZvaWQgMDsKKworICAgICFpc1ZhbGlkQ29udGFpbmVyKGNvbnRhaW5lcikgPyAiZGV2
ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdfcmVnaXN0ZXJD
b21wb25lbnQoLi4uKTogVGFyZ2V0IGNvbnRhaW5lciBpcyBub3QgYSBET00gZWxlbWVudC4nKSA6
IF9wcm9kSW52YXJpYW50KCczNycpIDogdm9pZCAwOworCisgICAgUmVhY3RCcm93c2VyRXZlbnRF
bWl0dGVyLmVuc3VyZVNjcm9sbFZhbHVlTW9uaXRvcmluZygpOworICAgIHZhciBjb21wb25lbnRJ
bnN0YW5jZSA9IGluc3RhbnRpYXRlUmVhY3RDb21wb25lbnQobmV4dEVsZW1lbnQsIGZhbHNlKTsK
KworICAgIC8vIFRoZSBpbml0aWFsIHJlbmRlciBpcyBzeW5jaHJvbm91cyBidXQgYW55IHVwZGF0
ZXMgdGhhdCBoYXBwZW4gZHVyaW5nCisgICAgLy8gcmVuZGVyaW5nLCBpbiBjb21wb25lbnRXaWxs
TW91bnQgb3IgY29tcG9uZW50RGlkTW91bnQsIHdpbGwgYmUgYmF0Y2hlZAorICAgIC8vIGFjY29y
ZGluZyB0byB0aGUgY3VycmVudCBiYXRjaGluZyBzdHJhdGVneS4KKworICAgIFJlYWN0VXBkYXRl
cy5iYXRjaGVkVXBkYXRlcyhiYXRjaGVkTW91bnRDb21wb25lbnRJbnRvTm9kZSwgY29tcG9uZW50
SW5zdGFuY2UsIGNvbnRhaW5lciwgc2hvdWxkUmV1c2VNYXJrdXAsIGNvbnRleHQpOworCisgICAg
dmFyIHdyYXBwZXJJRCA9IGNvbXBvbmVudEluc3RhbmNlLl9pbnN0YW5jZS5yb290SUQ7CisgICAg
aW5zdGFuY2VzQnlSZWFjdFJvb3RJRFt3cmFwcGVySURdID0gY29tcG9uZW50SW5zdGFuY2U7CisK
KyAgICByZXR1cm4gY29tcG9uZW50SW5zdGFuY2U7CisgIH0sCisKKyAgLyoqCisgICAqIFJlbmRl
cnMgYSBSZWFjdCBjb21wb25lbnQgaW50byB0aGUgRE9NIGluIHRoZSBzdXBwbGllZCBgY29udGFp
bmVyYC4KKyAgICoKKyAgICogSWYgdGhlIFJlYWN0IGNvbXBvbmVudCB3YXMgcHJldmlvdXNseSBy
ZW5kZXJlZCBpbnRvIGBjb250YWluZXJgLCB0aGlzIHdpbGwKKyAgICogcGVyZm9ybSBhbiB1cGRh
dGUgb24gaXQgYW5kIG9ubHkgbXV0YXRlIHRoZSBET00gYXMgbmVjZXNzYXJ5IHRvIHJlZmxlY3Qg
dGhlCisgICAqIGxhdGVzdCBSZWFjdCBjb21wb25lbnQuCisgICAqCisgICAqIEBwYXJhbSB7UmVh
Y3RDb21wb25lbnR9IHBhcmVudENvbXBvbmVudCBUaGUgY29uY2VwdHVhbCBwYXJlbnQgb2YgdGhp
cyByZW5kZXIgdHJlZS4KKyAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IG5leHRFbGVtZW50IENv
bXBvbmVudCBlbGVtZW50IHRvIHJlbmRlci4KKyAgICogQHBhcmFtIHtET01FbGVtZW50fSBjb250
YWluZXIgRE9NIGVsZW1lbnQgdG8gcmVuZGVyIGludG8uCisgICAqIEBwYXJhbSB7P2Z1bmN0aW9u
fSBjYWxsYmFjayBmdW5jdGlvbiB0cmlnZ2VyZWQgb24gY29tcGxldGlvbgorICAgKiBAcmV0dXJu
IHtSZWFjdENvbXBvbmVudH0gQ29tcG9uZW50IGluc3RhbmNlIHJlbmRlcmVkIGluIGBjb250YWlu
ZXJgLgorICAgKi8KKyAgcmVuZGVyU3VidHJlZUludG9Db250YWluZXI6IGZ1bmN0aW9uIChwYXJl
bnRDb21wb25lbnQsIG5leHRFbGVtZW50LCBjb250YWluZXIsIGNhbGxiYWNrKSB7CisgICAgIShw
YXJlbnRDb21wb25lbnQgIT0gbnVsbCAmJiBSZWFjdEluc3RhbmNlTWFwLmhhcyhwYXJlbnRDb21w
b25lbnQpKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxz
ZSwgJ3BhcmVudENvbXBvbmVudCBtdXN0IGJlIGEgdmFsaWQgUmVhY3QgQ29tcG9uZW50JykgOiBf
cHJvZEludmFyaWFudCgnMzgnKSA6IHZvaWQgMDsKKyAgICByZXR1cm4gUmVhY3RNb3VudC5fcmVu
ZGVyU3VidHJlZUludG9Db250YWluZXIocGFyZW50Q29tcG9uZW50LCBuZXh0RWxlbWVudCwgY29u
dGFpbmVyLCBjYWxsYmFjayk7CisgIH0sCisKKyAgX3JlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVy
OiBmdW5jdGlvbiAocGFyZW50Q29tcG9uZW50LCBuZXh0RWxlbWVudCwgY29udGFpbmVyLCBjYWxs
YmFjaykgeworICAgIFJlYWN0VXBkYXRlUXVldWUudmFsaWRhdGVDYWxsYmFjayhjYWxsYmFjaywg
J1JlYWN0RE9NLnJlbmRlcicpOworICAgICFSZWFjdC5pc1ZhbGlkRWxlbWVudChuZXh0RWxlbWVu
dCkgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdS
ZWFjdERPTS5yZW5kZXIoKTogSW52YWxpZCBjb21wb25lbnQgZWxlbWVudC4lcycsIHR5cGVvZiBu
ZXh0RWxlbWVudCA9PT0gJ3N0cmluZycgPyAnIEluc3RlYWQgb2YgcGFzc2luZyBhIHN0cmluZyBs
aWtlIFwnZGl2XCcsIHBhc3MgJyArICdSZWFjdC5jcmVhdGVFbGVtZW50KFwnZGl2XCcpIG9yIDxk
aXYgLz4uJyA6IHR5cGVvZiBuZXh0RWxlbWVudCA9PT0gJ2Z1bmN0aW9uJyA/ICcgSW5zdGVhZCBv
ZiBwYXNzaW5nIGEgY2xhc3MgbGlrZSBGb28sIHBhc3MgJyArICdSZWFjdC5jcmVhdGVFbGVtZW50
KEZvbykgb3IgPEZvbyAvPi4nIDoKKyAgICAvLyBDaGVjayBpZiBpdCBxdWFja3MgbGlrZSBhbiBl
bGVtZW50CisgICAgbmV4dEVsZW1lbnQgIT0gbnVsbCAmJiBuZXh0RWxlbWVudC5wcm9wcyAhPT0g
dW5kZWZpbmVkID8gJyBUaGlzIG1heSBiZSBjYXVzZWQgYnkgdW5pbnRlbnRpb25hbGx5IGxvYWRp
bmcgdHdvIGluZGVwZW5kZW50ICcgKyAnY29waWVzIG9mIFJlYWN0LicgOiAnJykgOiBfcHJvZElu
dmFyaWFudCgnMzknLCB0eXBlb2YgbmV4dEVsZW1lbnQgPT09ICdzdHJpbmcnID8gJyBJbnN0ZWFk
IG9mIHBhc3NpbmcgYSBzdHJpbmcgbGlrZSBcJ2RpdlwnLCBwYXNzICcgKyAnUmVhY3QuY3JlYXRl
RWxlbWVudChcJ2RpdlwnKSBvciA8ZGl2IC8+LicgOiB0eXBlb2YgbmV4dEVsZW1lbnQgPT09ICdm
dW5jdGlvbicgPyAnIEluc3RlYWQgb2YgcGFzc2luZyBhIGNsYXNzIGxpa2UgRm9vLCBwYXNzICcg
KyAnUmVhY3QuY3JlYXRlRWxlbWVudChGb28pIG9yIDxGb28gLz4uJyA6IG5leHRFbGVtZW50ICE9
IG51bGwgJiYgbmV4dEVsZW1lbnQucHJvcHMgIT09IHVuZGVmaW5lZCA/ICcgVGhpcyBtYXkgYmUg
Y2F1c2VkIGJ5IHVuaW50ZW50aW9uYWxseSBsb2FkaW5nIHR3byBpbmRlcGVuZGVudCAnICsgJ2Nv
cGllcyBvZiBSZWFjdC4nIDogJycpIDogdm9pZCAwOworCisgICAgImRldmVsb3BtZW50IiAhPT0g
J3Byb2R1Y3Rpb24nID8gd2FybmluZyghY29udGFpbmVyIHx8ICFjb250YWluZXIudGFnTmFtZSB8
fCBjb250YWluZXIudGFnTmFtZS50b1VwcGVyQ2FzZSgpICE9PSAnQk9EWScsICdyZW5kZXIoKTog
UmVuZGVyaW5nIGNvbXBvbmVudHMgZGlyZWN0bHkgaW50byBkb2N1bWVudC5ib2R5IGlzICcgKyAn
ZGlzY291cmFnZWQsIHNpbmNlIGl0cyBjaGlsZHJlbiBhcmUgb2Z0ZW4gbWFuaXB1bGF0ZWQgYnkg
dGhpcmQtcGFydHkgJyArICdzY3JpcHRzIGFuZCBicm93c2VyIGV4dGVuc2lvbnMuIFRoaXMgbWF5
IGxlYWQgdG8gc3VidGxlICcgKyAncmVjb25jaWxpYXRpb24gaXNzdWVzLiBUcnkgcmVuZGVyaW5n
IGludG8gYSBjb250YWluZXIgZWxlbWVudCBjcmVhdGVkICcgKyAnZm9yIHlvdXIgYXBwLicpIDog
dm9pZCAwOworCisgICAgdmFyIG5leHRXcmFwcGVkRWxlbWVudCA9IFJlYWN0LmNyZWF0ZUVsZW1l
bnQoVG9wTGV2ZWxXcmFwcGVyLCB7IGNoaWxkOiBuZXh0RWxlbWVudCB9KTsKKworICAgIHZhciBu
ZXh0Q29udGV4dDsKKyAgICBpZiAocGFyZW50Q29tcG9uZW50KSB7CisgICAgICB2YXIgcGFyZW50
SW5zdCA9IFJlYWN0SW5zdGFuY2VNYXAuZ2V0KHBhcmVudENvbXBvbmVudCk7CisgICAgICBuZXh0
Q29udGV4dCA9IHBhcmVudEluc3QuX3Byb2Nlc3NDaGlsZENvbnRleHQocGFyZW50SW5zdC5fY29u
dGV4dCk7CisgICAgfSBlbHNlIHsKKyAgICAgIG5leHRDb250ZXh0ID0gZW1wdHlPYmplY3Q7Cisg
ICAgfQorCisgICAgdmFyIHByZXZDb21wb25lbnQgPSBnZXRUb3BMZXZlbFdyYXBwZXJJbkNvbnRh
aW5lcihjb250YWluZXIpOworCisgICAgaWYgKHByZXZDb21wb25lbnQpIHsKKyAgICAgIHZhciBw
cmV2V3JhcHBlZEVsZW1lbnQgPSBwcmV2Q29tcG9uZW50Ll9jdXJyZW50RWxlbWVudDsKKyAgICAg
IHZhciBwcmV2RWxlbWVudCA9IHByZXZXcmFwcGVkRWxlbWVudC5wcm9wcy5jaGlsZDsKKyAgICAg
IGlmIChzaG91bGRVcGRhdGVSZWFjdENvbXBvbmVudChwcmV2RWxlbWVudCwgbmV4dEVsZW1lbnQp
KSB7CisgICAgICAgIHZhciBwdWJsaWNJbnN0ID0gcHJldkNvbXBvbmVudC5fcmVuZGVyZWRDb21w
b25lbnQuZ2V0UHVibGljSW5zdGFuY2UoKTsKKyAgICAgICAgdmFyIHVwZGF0ZWRDYWxsYmFjayA9
IGNhbGxiYWNrICYmIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICBjYWxsYmFjay5jYWxsKHB1Ymxp
Y0luc3QpOworICAgICAgICB9OworICAgICAgICBSZWFjdE1vdW50Ll91cGRhdGVSb290Q29tcG9u
ZW50KHByZXZDb21wb25lbnQsIG5leHRXcmFwcGVkRWxlbWVudCwgbmV4dENvbnRleHQsIGNvbnRh
aW5lciwgdXBkYXRlZENhbGxiYWNrKTsKKyAgICAgICAgcmV0dXJuIHB1YmxpY0luc3Q7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBSZWFjdE1vdW50LnVubW91bnRDb21wb25lbnRBdE5vZGUoY29u
dGFpbmVyKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgcmVhY3RSb290RWxlbWVudCA9IGdl
dFJlYWN0Um9vdEVsZW1lbnRJbkNvbnRhaW5lcihjb250YWluZXIpOworICAgIHZhciBjb250YWlu
ZXJIYXNSZWFjdE1hcmt1cCA9IHJlYWN0Um9vdEVsZW1lbnQgJiYgISFpbnRlcm5hbEdldElEKHJl
YWN0Um9vdEVsZW1lbnQpOworICAgIHZhciBjb250YWluZXJIYXNOb25Sb290UmVhY3RDaGlsZCA9
IGhhc05vblJvb3RSZWFjdENoaWxkKGNvbnRhaW5lcik7CisKKyAgICBpZiAoImRldmVsb3BtZW50
IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlv
bicgPyB3YXJuaW5nKCFjb250YWluZXJIYXNOb25Sb290UmVhY3RDaGlsZCwgJ3JlbmRlciguLi4p
OiBSZXBsYWNpbmcgUmVhY3QtcmVuZGVyZWQgY2hpbGRyZW4gd2l0aCBhIG5ldyByb290ICcgKyAn
Y29tcG9uZW50LiBJZiB5b3UgaW50ZW5kZWQgdG8gdXBkYXRlIHRoZSBjaGlsZHJlbiBvZiB0aGlz
IG5vZGUsICcgKyAneW91IHNob3VsZCBpbnN0ZWFkIGhhdmUgdGhlIGV4aXN0aW5nIGNoaWxkcmVu
IHVwZGF0ZSB0aGVpciBzdGF0ZSAnICsgJ2FuZCByZW5kZXIgdGhlIG5ldyBjb21wb25lbnRzIGlu
c3RlYWQgb2YgY2FsbGluZyBSZWFjdERPTS5yZW5kZXIuJykgOiB2b2lkIDA7CisKKyAgICAgIGlm
ICghY29udGFpbmVySGFzUmVhY3RNYXJrdXAgfHwgcmVhY3RSb290RWxlbWVudC5uZXh0U2libGlu
ZykgeworICAgICAgICB2YXIgcm9vdEVsZW1lbnRTaWJsaW5nID0gcmVhY3RSb290RWxlbWVudDsK
KyAgICAgICAgd2hpbGUgKHJvb3RFbGVtZW50U2libGluZykgeworICAgICAgICAgIGlmIChpbnRl
cm5hbEdldElEKHJvb3RFbGVtZW50U2libGluZykpIHsKKyAgICAgICAgICAgICJkZXZlbG9wbWVu
dCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdyZW5kZXIoKTogVGFyZ2V0IG5v
ZGUgaGFzIG1hcmt1cCByZW5kZXJlZCBieSBSZWFjdCwgYnV0IHRoZXJlICcgKyAnYXJlIHVucmVs
YXRlZCBub2RlcyBhcyB3ZWxsLiBUaGlzIGlzIG1vc3QgY29tbW9ubHkgY2F1c2VkIGJ5ICcgKyAn
d2hpdGUtc3BhY2UgaW5zZXJ0ZWQgYXJvdW5kIHNlcnZlci1yZW5kZXJlZCBtYXJrdXAuJykgOiB2
b2lkIDA7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICB9CisgICAgICAgICAgcm9vdEVs
ZW1lbnRTaWJsaW5nID0gcm9vdEVsZW1lbnRTaWJsaW5nLm5leHRTaWJsaW5nOworICAgICAgICB9
CisgICAgICB9CisgICAgfQorCisgICAgdmFyIHNob3VsZFJldXNlTWFya3VwID0gY29udGFpbmVy
SGFzUmVhY3RNYXJrdXAgJiYgIXByZXZDb21wb25lbnQgJiYgIWNvbnRhaW5lckhhc05vblJvb3RS
ZWFjdENoaWxkOworICAgIHZhciBjb21wb25lbnQgPSBSZWFjdE1vdW50Ll9yZW5kZXJOZXdSb290
Q29tcG9uZW50KG5leHRXcmFwcGVkRWxlbWVudCwgY29udGFpbmVyLCBzaG91bGRSZXVzZU1hcmt1
cCwgbmV4dENvbnRleHQpLl9yZW5kZXJlZENvbXBvbmVudC5nZXRQdWJsaWNJbnN0YW5jZSgpOwor
ICAgIGlmIChjYWxsYmFjaykgeworICAgICAgY2FsbGJhY2suY2FsbChjb21wb25lbnQpOworICAg
IH0KKyAgICByZXR1cm4gY29tcG9uZW50OworICB9LAorCisgIC8qKgorICAgKiBSZW5kZXJzIGEg
UmVhY3QgY29tcG9uZW50IGludG8gdGhlIERPTSBpbiB0aGUgc3VwcGxpZWQgYGNvbnRhaW5lcmAu
CisgICAqIFNlZSBodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL3RvcC1sZXZl
bC1hcGkuaHRtbCNyZWFjdGRvbS5yZW5kZXIKKyAgICoKKyAgICogSWYgdGhlIFJlYWN0IGNvbXBv
bmVudCB3YXMgcHJldmlvdXNseSByZW5kZXJlZCBpbnRvIGBjb250YWluZXJgLCB0aGlzIHdpbGwK
KyAgICogcGVyZm9ybSBhbiB1cGRhdGUgb24gaXQgYW5kIG9ubHkgbXV0YXRlIHRoZSBET00gYXMg
bmVjZXNzYXJ5IHRvIHJlZmxlY3QgdGhlCisgICAqIGxhdGVzdCBSZWFjdCBjb21wb25lbnQuCisg
ICAqCisgICAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBuZXh0RWxlbWVudCBDb21wb25lbnQgZWxl
bWVudCB0byByZW5kZXIuCisgICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gY29udGFpbmVyIERPTSBl
bGVtZW50IHRvIHJlbmRlciBpbnRvLgorICAgKiBAcGFyYW0gez9mdW5jdGlvbn0gY2FsbGJhY2sg
ZnVuY3Rpb24gdHJpZ2dlcmVkIG9uIGNvbXBsZXRpb24KKyAgICogQHJldHVybiB7UmVhY3RDb21w
b25lbnR9IENvbXBvbmVudCBpbnN0YW5jZSByZW5kZXJlZCBpbiBgY29udGFpbmVyYC4KKyAgICov
CisgIHJlbmRlcjogZnVuY3Rpb24gKG5leHRFbGVtZW50LCBjb250YWluZXIsIGNhbGxiYWNrKSB7
CisgICAgcmV0dXJuIFJlYWN0TW91bnQuX3JlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyKG51bGws
IG5leHRFbGVtZW50LCBjb250YWluZXIsIGNhbGxiYWNrKTsKKyAgfSwKKworICAvKioKKyAgICog
VW5tb3VudHMgYW5kIGRlc3Ryb3lzIHRoZSBSZWFjdCBjb21wb25lbnQgcmVuZGVyZWQgaW4gdGhl
IGBjb250YWluZXJgLgorICAgKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3Qv
ZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3Rkb20udW5tb3VudGNvbXBvbmVudGF0bm9kZQor
ICAgKgorICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGNvbnRhaW5lciBET00gZWxlbWVudCBjb250
YWluaW5nIGEgUmVhY3QgY29tcG9uZW50LgorICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlm
IGEgY29tcG9uZW50IHdhcyBmb3VuZCBpbiBhbmQgdW5tb3VudGVkIGZyb20KKyAgICogICAgICAg
ICAgICAgICAgICAgYGNvbnRhaW5lcmAKKyAgICovCisgIHVubW91bnRDb21wb25lbnRBdE5vZGU6
IGZ1bmN0aW9uIChjb250YWluZXIpIHsKKyAgICAvLyBWYXJpb3VzIHBhcnRzIG9mIG91ciBjb2Rl
IChzdWNoIGFzIFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50J3MKKyAgICAvLyBfcmVuZGVyVmFsaWRh
dGVkQ29tcG9uZW50KSBhc3N1bWUgdGhhdCBjYWxscyB0byByZW5kZXIgYXJlbid0IG5lc3RlZDsK
KyAgICAvLyB2ZXJpZnkgdGhhdCB0aGF0J3MgdGhlIGNhc2UuIChTdHJpY3RseSBzcGVha2luZywg
dW5tb3VudGluZyB3b24ndCBjYXVzZSBhCisgICAgLy8gcmVuZGVyIGJ1dCB3ZSBzdGlsbCBkb24n
dCBleHBlY3QgdG8gYmUgaW4gYSByZW5kZXIgY2FsbCBoZXJlLikKKyAgICAiZGV2ZWxvcG1lbnQi
ICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPT0g
bnVsbCwgJ3VubW91bnRDb21wb25lbnRBdE5vZGUoKTogUmVuZGVyIG1ldGhvZHMgc2hvdWxkIGJl
IGEgcHVyZSBmdW5jdGlvbiAnICsgJ29mIHByb3BzIGFuZCBzdGF0ZTsgdHJpZ2dlcmluZyBuZXN0
ZWQgY29tcG9uZW50IHVwZGF0ZXMgZnJvbSByZW5kZXIgJyArICdpcyBub3QgYWxsb3dlZC4gSWYg
bmVjZXNzYXJ5LCB0cmlnZ2VyIG5lc3RlZCB1cGRhdGVzIGluICcgKyAnY29tcG9uZW50RGlkVXBk
YXRlLiBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiAlcy4nLCBSZWFjdEN1cnJlbnRPd25lci5j
dXJyZW50ICYmIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQuZ2V0TmFtZSgpIHx8ICdSZWFjdENv
bXBvc2l0ZUNvbXBvbmVudCcpIDogdm9pZCAwOworCisgICAgIWlzVmFsaWRDb250YWluZXIoY29u
dGFpbmVyKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxz
ZSwgJ3VubW91bnRDb21wb25lbnRBdE5vZGUoLi4uKTogVGFyZ2V0IGNvbnRhaW5lciBpcyBub3Qg
YSBET00gZWxlbWVudC4nKSA6IF9wcm9kSW52YXJpYW50KCc0MCcpIDogdm9pZCAwOworCisgICAg
aWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgImRldmVsb3BtZW50
IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyghbm9kZUlzUmVuZGVyZWRCeU90aGVySW5zdGFu
Y2UoY29udGFpbmVyKSwgJ3VubW91bnRDb21wb25lbnRBdE5vZGUoKTogVGhlIG5vZGUgeW91XCdy
ZSBhdHRlbXB0aW5nIHRvIHVubW91bnQgJyArICd3YXMgcmVuZGVyZWQgYnkgYW5vdGhlciBjb3B5
IG9mIFJlYWN0LicpIDogdm9pZCAwOworICAgIH0KKworICAgIHZhciBwcmV2Q29tcG9uZW50ID0g
Z2V0VG9wTGV2ZWxXcmFwcGVySW5Db250YWluZXIoY29udGFpbmVyKTsKKyAgICBpZiAoIXByZXZD
b21wb25lbnQpIHsKKyAgICAgIC8vIENoZWNrIGlmIHRoZSBub2RlIGJlaW5nIHVubW91bnRlZCB3
YXMgcmVuZGVyZWQgYnkgUmVhY3QsIGJ1dCBpc24ndCBhCisgICAgICAvLyByb290IG5vZGUuCisg
ICAgICB2YXIgY29udGFpbmVySGFzTm9uUm9vdFJlYWN0Q2hpbGQgPSBoYXNOb25Sb290UmVhY3RD
aGlsZChjb250YWluZXIpOworCisgICAgICAvLyBDaGVjayBpZiB0aGUgY29udGFpbmVyIGl0c2Vs
ZiBpcyBhIFJlYWN0IHJvb3Qgbm9kZS4KKyAgICAgIHZhciBpc0NvbnRhaW5lclJlYWN0Um9vdCA9
IGNvbnRhaW5lci5ub2RlVHlwZSA9PT0gMSAmJiBjb250YWluZXIuaGFzQXR0cmlidXRlKFJPT1Rf
QVRUUl9OQU1FKTsKKworICAgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykg
eworICAgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCFjb250
YWluZXJIYXNOb25Sb290UmVhY3RDaGlsZCwgJ3VubW91bnRDb21wb25lbnRBdE5vZGUoKTogVGhl
IG5vZGUgeW91XCdyZSBhdHRlbXB0aW5nIHRvIHVubW91bnQgJyArICd3YXMgcmVuZGVyZWQgYnkg
UmVhY3QgYW5kIGlzIG5vdCBhIHRvcC1sZXZlbCBjb250YWluZXIuICVzJywgaXNDb250YWluZXJS
ZWFjdFJvb3QgPyAnWW91IG1heSBoYXZlIGFjY2lkZW50YWxseSBwYXNzZWQgaW4gYSBSZWFjdCBy
b290IG5vZGUgaW5zdGVhZCAnICsgJ29mIGl0cyBjb250YWluZXIuJyA6ICdJbnN0ZWFkLCBoYXZl
IHRoZSBwYXJlbnQgY29tcG9uZW50IHVwZGF0ZSBpdHMgc3RhdGUgYW5kICcgKyAncmVyZW5kZXIg
aW4gb3JkZXIgdG8gcmVtb3ZlIHRoaXMgY29tcG9uZW50LicpIDogdm9pZCAwOworICAgICAgfQor
CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGRlbGV0ZSBpbnN0YW5jZXNCeVJlYWN0
Um9vdElEW3ByZXZDb21wb25lbnQuX2luc3RhbmNlLnJvb3RJRF07CisgICAgUmVhY3RVcGRhdGVz
LmJhdGNoZWRVcGRhdGVzKHVubW91bnRDb21wb25lbnRGcm9tTm9kZSwgcHJldkNvbXBvbmVudCwg
Y29udGFpbmVyLCBmYWxzZSk7CisgICAgcmV0dXJuIHRydWU7CisgIH0sCisKKyAgX21vdW50SW1h
Z2VJbnRvTm9kZTogZnVuY3Rpb24gKG1hcmt1cCwgY29udGFpbmVyLCBpbnN0YW5jZSwgc2hvdWxk
UmV1c2VNYXJrdXAsIHRyYW5zYWN0aW9uKSB7CisgICAgIWlzVmFsaWRDb250YWluZXIoY29udGFp
bmVyKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwg
J21vdW50Q29tcG9uZW50SW50b05vZGUoLi4uKTogVGFyZ2V0IGNvbnRhaW5lciBpcyBub3QgdmFs
aWQuJykgOiBfcHJvZEludmFyaWFudCgnNDEnKSA6IHZvaWQgMDsKKworICAgIGlmIChzaG91bGRS
ZXVzZU1hcmt1cCkgeworICAgICAgdmFyIHJvb3RFbGVtZW50ID0gZ2V0UmVhY3RSb290RWxlbWVu
dEluQ29udGFpbmVyKGNvbnRhaW5lcik7CisgICAgICBpZiAoUmVhY3RNYXJrdXBDaGVja3N1bS5j
YW5SZXVzZU1hcmt1cChtYXJrdXAsIHJvb3RFbGVtZW50KSkgeworICAgICAgICBSZWFjdERPTUNv
bXBvbmVudFRyZWUucHJlY2FjaGVOb2RlKGluc3RhbmNlLCByb290RWxlbWVudCk7CisgICAgICAg
IHJldHVybjsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHZhciBjaGVja3N1bSA9IHJvb3RFbGVt
ZW50LmdldEF0dHJpYnV0ZShSZWFjdE1hcmt1cENoZWNrc3VtLkNIRUNLU1VNX0FUVFJfTkFNRSk7
CisgICAgICAgIHJvb3RFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShSZWFjdE1hcmt1cENoZWNrc3Vt
LkNIRUNLU1VNX0FUVFJfTkFNRSk7CisKKyAgICAgICAgdmFyIHJvb3RNYXJrdXAgPSByb290RWxl
bWVudC5vdXRlckhUTUw7CisgICAgICAgIHJvb3RFbGVtZW50LnNldEF0dHJpYnV0ZShSZWFjdE1h
cmt1cENoZWNrc3VtLkNIRUNLU1VNX0FUVFJfTkFNRSwgY2hlY2tzdW0pOworCisgICAgICAgIHZh
ciBub3JtYWxpemVkTWFya3VwID0gbWFya3VwOworICAgICAgICBpZiAoImRldmVsb3BtZW50IiAh
PT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAgICAgLy8gYmVjYXVzZSByb290TWFya3VwIGlzIHJl
dHJpZXZlZCBmcm9tIHRoZSBET00sIHZhcmlvdXMgbm9ybWFsaXphdGlvbnMKKyAgICAgICAgICAv
LyB3aWxsIGhhdmUgb2NjdXJyZWQgd2hpY2ggd2lsbCBub3QgYmUgcHJlc2VudCBpbiBgbWFya3Vw
YC4gSGVyZSwKKyAgICAgICAgICAvLyBpbnNlcnQgbWFya3VwIGludG8gYSA8ZGl2PiBvciA8aWZy
YW1lPiBkZXBlbmRpbmcgb24gdGhlIGNvbnRhaW5lcgorICAgICAgICAgIC8vIHR5cGUgdG8gcGVy
Zm9ybSB0aGUgc2FtZSBub3JtYWxpemF0aW9ucyBiZWZvcmUgY29tcGFyaW5nLgorICAgICAgICAg
IHZhciBub3JtYWxpemVyOworICAgICAgICAgIGlmIChjb250YWluZXIubm9kZVR5cGUgPT09IEVM
RU1FTlRfTk9ERV9UWVBFKSB7CisgICAgICAgICAgICBub3JtYWxpemVyID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgICAgICBub3JtYWxpemVyLmlubmVySFRNTCA9IG1h
cmt1cDsKKyAgICAgICAgICAgIG5vcm1hbGl6ZWRNYXJrdXAgPSBub3JtYWxpemVyLmlubmVySFRN
TDsKKyAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbm9ybWFsaXplciA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpOworICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBl
bmRDaGlsZChub3JtYWxpemVyKTsKKyAgICAgICAgICAgIG5vcm1hbGl6ZXIuY29udGVudERvY3Vt
ZW50LndyaXRlKG1hcmt1cCk7CisgICAgICAgICAgICBub3JtYWxpemVkTWFya3VwID0gbm9ybWFs
aXplci5jb250ZW50RG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lm91dGVySFRNTDsKKyAgICAgICAg
ICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobm9ybWFsaXplcik7CisgICAgICAgICAgfQor
ICAgICAgICB9CisKKyAgICAgICAgdmFyIGRpZmZJbmRleCA9IGZpcnN0RGlmZmVyZW5jZUluZGV4
KG5vcm1hbGl6ZWRNYXJrdXAsIHJvb3RNYXJrdXApOworICAgICAgICB2YXIgZGlmZmVyZW5jZSA9
ICcgKGNsaWVudCkgJyArIG5vcm1hbGl6ZWRNYXJrdXAuc3Vic3RyaW5nKGRpZmZJbmRleCAtIDIw
LCBkaWZmSW5kZXggKyAyMCkgKyAnXG4gKHNlcnZlcikgJyArIHJvb3RNYXJrdXAuc3Vic3RyaW5n
KGRpZmZJbmRleCAtIDIwLCBkaWZmSW5kZXggKyAyMCk7CisKKyAgICAgICAgIShjb250YWluZXIu
bm9kZVR5cGUgIT09IERPQ19OT0RFX1RZUEUpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rp
b24nID8gaW52YXJpYW50KGZhbHNlLCAnWW91XCdyZSB0cnlpbmcgdG8gcmVuZGVyIGEgY29tcG9u
ZW50IHRvIHRoZSBkb2N1bWVudCB1c2luZyBzZXJ2ZXIgcmVuZGVyaW5nIGJ1dCB0aGUgY2hlY2tz
dW0gd2FzIGludmFsaWQuIFRoaXMgdXN1YWxseSBtZWFucyB5b3UgcmVuZGVyZWQgYSBkaWZmZXJl
bnQgY29tcG9uZW50IHR5cGUgb3IgcHJvcHMgb24gdGhlIGNsaWVudCBmcm9tIHRoZSBvbmUgb24g
dGhlIHNlcnZlciwgb3IgeW91ciByZW5kZXIoKSBtZXRob2RzIGFyZSBpbXB1cmUuIFJlYWN0IGNh
bm5vdCBoYW5kbGUgdGhpcyBjYXNlIGR1ZSB0byBjcm9zcy1icm93c2VyIHF1aXJrcyBieSByZW5k
ZXJpbmcgYXQgdGhlIGRvY3VtZW50IHJvb3QuIFlvdSBzaG91bGQgbG9vayBmb3IgZW52aXJvbm1l
bnQgZGVwZW5kZW50IGNvZGUgaW4geW91ciBjb21wb25lbnRzIGFuZCBlbnN1cmUgdGhlIHByb3Bz
IGFyZSB0aGUgc2FtZSBjbGllbnQgYW5kIHNlcnZlciBzaWRlOlxuJXMnLCBkaWZmZXJlbmNlKSA6
IF9wcm9kSW52YXJpYW50KCc0MicsIGRpZmZlcmVuY2UpIDogdm9pZCAwOworCisgICAgICAgIGlm
ICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICAgICAiZGV2ZWxvcG1l
bnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnUmVhY3QgYXR0ZW1wdGVkIHRv
IHJldXNlIG1hcmt1cCBpbiBhIGNvbnRhaW5lciBidXQgdGhlICcgKyAnY2hlY2tzdW0gd2FzIGlu
dmFsaWQuIFRoaXMgZ2VuZXJhbGx5IG1lYW5zIHRoYXQgeW91IGFyZSAnICsgJ3VzaW5nIHNlcnZl
ciByZW5kZXJpbmcgYW5kIHRoZSBtYXJrdXAgZ2VuZXJhdGVkIG9uIHRoZSAnICsgJ3NlcnZlciB3
YXMgbm90IHdoYXQgdGhlIGNsaWVudCB3YXMgZXhwZWN0aW5nLiBSZWFjdCBpbmplY3RlZCAnICsg
J25ldyBtYXJrdXAgdG8gY29tcGVuc2F0ZSB3aGljaCB3b3JrcyBidXQgeW91IGhhdmUgbG9zdCBt
YW55ICcgKyAnb2YgdGhlIGJlbmVmaXRzIG9mIHNlcnZlciByZW5kZXJpbmcuIEluc3RlYWQsIGZp
Z3VyZSBvdXQgJyArICd3aHkgdGhlIG1hcmt1cCBiZWluZyBnZW5lcmF0ZWQgaXMgZGlmZmVyZW50
IG9uIHRoZSBjbGllbnQgJyArICdvciBzZXJ2ZXI6XG4lcycsIGRpZmZlcmVuY2UpIDogdm9pZCAw
OworICAgICAgICB9CisgICAgICB9CisgICAgfQorCisgICAgIShjb250YWluZXIubm9kZVR5cGUg
IT09IERPQ19OT0RFX1RZUEUpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52
YXJpYW50KGZhbHNlLCAnWW91XCdyZSB0cnlpbmcgdG8gcmVuZGVyIGEgY29tcG9uZW50IHRvIHRo
ZSBkb2N1bWVudCBidXQgeW91IGRpZG5cJ3QgdXNlIHNlcnZlciByZW5kZXJpbmcuIFdlIGNhblwn
dCBkbyB0aGlzIHdpdGhvdXQgdXNpbmcgc2VydmVyIHJlbmRlcmluZyBkdWUgdG8gY3Jvc3MtYnJv
d3NlciBxdWlya3MuIFNlZSBSZWFjdERPTVNlcnZlci5yZW5kZXJUb1N0cmluZygpIGZvciBzZXJ2
ZXIgcmVuZGVyaW5nLicpIDogX3Byb2RJbnZhcmlhbnQoJzQzJykgOiB2b2lkIDA7CisKKyAgICBp
ZiAodHJhbnNhY3Rpb24udXNlQ3JlYXRlRWxlbWVudCkgeworICAgICAgd2hpbGUgKGNvbnRhaW5l
ci5sYXN0Q2hpbGQpIHsKKyAgICAgICAgY29udGFpbmVyLnJlbW92ZUNoaWxkKGNvbnRhaW5lci5s
YXN0Q2hpbGQpOworICAgICAgfQorICAgICAgRE9NTGF6eVRyZWUuaW5zZXJ0VHJlZUJlZm9yZShj
b250YWluZXIsIG1hcmt1cCwgbnVsbCk7CisgICAgfSBlbHNlIHsKKyAgICAgIHNldElubmVySFRN
TChjb250YWluZXIsIG1hcmt1cCk7CisgICAgICBSZWFjdERPTUNvbXBvbmVudFRyZWUucHJlY2Fj
aGVOb2RlKGluc3RhbmNlLCBjb250YWluZXIuZmlyc3RDaGlsZCk7CisgICAgfQorCisgICAgaWYg
KCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgdmFyIGhvc3ROb2RlID0g
UmVhY3RET01Db21wb25lbnRUcmVlLmdldEluc3RhbmNlRnJvbU5vZGUoY29udGFpbmVyLmZpcnN0
Q2hpbGQpOworICAgICAgaWYgKGhvc3ROb2RlLl9kZWJ1Z0lEICE9PSAwKSB7CisgICAgICAgIFJl
YWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhvc3RPcGVyYXRpb24oeworICAgICAgICAg
IGluc3RhbmNlSUQ6IGhvc3ROb2RlLl9kZWJ1Z0lELAorICAgICAgICAgIHR5cGU6ICdtb3VudCcs
CisgICAgICAgICAgcGF5bG9hZDogbWFya3VwLnRvU3RyaW5nKCkKKyAgICAgICAgfSk7CisgICAg
ICB9CisgICAgfQorICB9Cit9OworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0TW91bnQ7Cit9LHsi
MTEiOjExLCIxMjEiOjEyMSwiMTI1IjoxMjUsIjEyNyI6MTI3LCIxMjkiOjEyOSwiMTMzIjoxMzMs
IjEzNCI6MTM0LCIxNDMiOjE0MywiMTUwIjoxNTAsIjE1NyI6MTU3LCIyNiI6MjYsIjM0IjozNCwi
MzUiOjM1LCIzNyI6MzcsIjU4Ijo1OCwiNjMiOjYzLCI2NCI6NjQsIjY2Ijo2NiwiNzUiOjc1LCI4
MSI6ODEsIjgyIjo4MiwiOSI6OX1dLDY4OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRz
KXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1
bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3Zh
ciBfcHJvZEludmFyaWFudCA9IF9kZXJlcV8oMTI1KTsKKwordmFyIFJlYWN0Q29tcG9uZW50RW52
aXJvbm1lbnQgPSBfZGVyZXFfKDI5KTsKK3ZhciBSZWFjdEluc3RhbmNlTWFwID0gX2RlcmVxXyg2
Myk7Cit2YXIgUmVhY3RJbnN0cnVtZW50YXRpb24gPSBfZGVyZXFfKDY0KTsKKwordmFyIFJlYWN0
Q3VycmVudE93bmVyID0gX2RlcmVxXygxMzMpOwordmFyIFJlYWN0UmVjb25jaWxlciA9IF9kZXJl
cV8oNzUpOwordmFyIFJlYWN0Q2hpbGRSZWNvbmNpbGVyID0gX2RlcmVxXygyNyk7CisKK3ZhciBl
bXB0eUZ1bmN0aW9uID0gX2RlcmVxXygxNDIpOwordmFyIGZsYXR0ZW5DaGlsZHJlbiA9IF9kZXJl
cV8oMTA5KTsKK3ZhciBpbnZhcmlhbnQgPSBfZGVyZXFfKDE1MCk7CisKKy8qKgorICogTWFrZSBh
biB1cGRhdGUgZm9yIG1hcmt1cCB0byBiZSByZW5kZXJlZCBhbmQgaW5zZXJ0ZWQgYXQgYSBzdXBw
bGllZCBpbmRleC4KKyAqCisgKiBAcGFyYW0ge3N0cmluZ30gbWFya3VwIE1hcmt1cCB0aGF0IHJl
bmRlcnMgaW50byBhbiBlbGVtZW50LgorICogQHBhcmFtIHtudW1iZXJ9IHRvSW5kZXggRGVzdGlu
YXRpb24gaW5kZXguCisgKiBAcHJpdmF0ZQorICovCitmdW5jdGlvbiBtYWtlSW5zZXJ0TWFya3Vw
KG1hcmt1cCwgYWZ0ZXJOb2RlLCB0b0luZGV4KSB7CisgIC8vIE5PVEU6IE51bGwgdmFsdWVzIHJl
ZHVjZSBoaWRkZW4gY2xhc3Nlcy4KKyAgcmV0dXJuIHsKKyAgICB0eXBlOiAnSU5TRVJUX01BUktV
UCcsCisgICAgY29udGVudDogbWFya3VwLAorICAgIGZyb21JbmRleDogbnVsbCwKKyAgICBmcm9t
Tm9kZTogbnVsbCwKKyAgICB0b0luZGV4OiB0b0luZGV4LAorICAgIGFmdGVyTm9kZTogYWZ0ZXJO
b2RlCisgIH07Cit9CisKKy8qKgorICogTWFrZSBhbiB1cGRhdGUgZm9yIG1vdmluZyBhbiBleGlz
dGluZyBlbGVtZW50IHRvIGFub3RoZXIgaW5kZXguCisgKgorICogQHBhcmFtIHtudW1iZXJ9IGZy
b21JbmRleCBTb3VyY2UgaW5kZXggb2YgdGhlIGV4aXN0aW5nIGVsZW1lbnQuCisgKiBAcGFyYW0g
e251bWJlcn0gdG9JbmRleCBEZXN0aW5hdGlvbiBpbmRleCBvZiB0aGUgZWxlbWVudC4KKyAqIEBw
cml2YXRlCisgKi8KK2Z1bmN0aW9uIG1ha2VNb3ZlKGNoaWxkLCBhZnRlck5vZGUsIHRvSW5kZXgp
IHsKKyAgLy8gTk9URTogTnVsbCB2YWx1ZXMgcmVkdWNlIGhpZGRlbiBjbGFzc2VzLgorICByZXR1
cm4geworICAgIHR5cGU6ICdNT1ZFX0VYSVNUSU5HJywKKyAgICBjb250ZW50OiBudWxsLAorICAg
IGZyb21JbmRleDogY2hpbGQuX21vdW50SW5kZXgsCisgICAgZnJvbU5vZGU6IFJlYWN0UmVjb25j
aWxlci5nZXRIb3N0Tm9kZShjaGlsZCksCisgICAgdG9JbmRleDogdG9JbmRleCwKKyAgICBhZnRl
ck5vZGU6IGFmdGVyTm9kZQorICB9OworfQorCisvKioKKyAqIE1ha2UgYW4gdXBkYXRlIGZvciBy
ZW1vdmluZyBhbiBlbGVtZW50IGF0IGFuIGluZGV4LgorICoKKyAqIEBwYXJhbSB7bnVtYmVyfSBm
cm9tSW5kZXggSW5kZXggb2YgdGhlIGVsZW1lbnQgdG8gcmVtb3ZlLgorICogQHByaXZhdGUKKyAq
LworZnVuY3Rpb24gbWFrZVJlbW92ZShjaGlsZCwgbm9kZSkgeworICAvLyBOT1RFOiBOdWxsIHZh
bHVlcyByZWR1Y2UgaGlkZGVuIGNsYXNzZXMuCisgIHJldHVybiB7CisgICAgdHlwZTogJ1JFTU9W
RV9OT0RFJywKKyAgICBjb250ZW50OiBudWxsLAorICAgIGZyb21JbmRleDogY2hpbGQuX21vdW50
SW5kZXgsCisgICAgZnJvbU5vZGU6IG5vZGUsCisgICAgdG9JbmRleDogbnVsbCwKKyAgICBhZnRl
ck5vZGU6IG51bGwKKyAgfTsKK30KKworLyoqCisgKiBNYWtlIGFuIHVwZGF0ZSBmb3Igc2V0dGlu
ZyB0aGUgbWFya3VwIG9mIGEgbm9kZS4KKyAqCisgKiBAcGFyYW0ge3N0cmluZ30gbWFya3VwIE1h
cmt1cCB0aGF0IHJlbmRlcnMgaW50byBhbiBlbGVtZW50LgorICogQHByaXZhdGUKKyAqLworZnVu
Y3Rpb24gbWFrZVNldE1hcmt1cChtYXJrdXApIHsKKyAgLy8gTk9URTogTnVsbCB2YWx1ZXMgcmVk
dWNlIGhpZGRlbiBjbGFzc2VzLgorICByZXR1cm4geworICAgIHR5cGU6ICdTRVRfTUFSS1VQJywK
KyAgICBjb250ZW50OiBtYXJrdXAsCisgICAgZnJvbUluZGV4OiBudWxsLAorICAgIGZyb21Ob2Rl
OiBudWxsLAorICAgIHRvSW5kZXg6IG51bGwsCisgICAgYWZ0ZXJOb2RlOiBudWxsCisgIH07Cit9
CisKKy8qKgorICogTWFrZSBhbiB1cGRhdGUgZm9yIHNldHRpbmcgdGhlIHRleHQgY29udGVudC4K
KyAqCisgKiBAcGFyYW0ge3N0cmluZ30gdGV4dENvbnRlbnQgVGV4dCBjb250ZW50IHRvIHNldC4K
KyAqIEBwcml2YXRlCisgKi8KK2Z1bmN0aW9uIG1ha2VUZXh0Q29udGVudCh0ZXh0Q29udGVudCkg
eworICAvLyBOT1RFOiBOdWxsIHZhbHVlcyByZWR1Y2UgaGlkZGVuIGNsYXNzZXMuCisgIHJldHVy
biB7CisgICAgdHlwZTogJ1RFWFRfQ09OVEVOVCcsCisgICAgY29udGVudDogdGV4dENvbnRlbnQs
CisgICAgZnJvbUluZGV4OiBudWxsLAorICAgIGZyb21Ob2RlOiBudWxsLAorICAgIHRvSW5kZXg6
IG51bGwsCisgICAgYWZ0ZXJOb2RlOiBudWxsCisgIH07Cit9CisKKy8qKgorICogUHVzaCBhbiB1
cGRhdGUsIGlmIGFueSwgb250byB0aGUgcXVldWUuIENyZWF0ZXMgYSBuZXcgcXVldWUgaWYgbm9u
ZSBpcworICogcGFzc2VkIGFuZCBhbHdheXMgcmV0dXJucyB0aGUgcXVldWUuIE11dGF0aXZlLgor
ICovCitmdW5jdGlvbiBlbnF1ZXVlKHF1ZXVlLCB1cGRhdGUpIHsKKyAgaWYgKHVwZGF0ZSkgewor
ICAgIHF1ZXVlID0gcXVldWUgfHwgW107CisgICAgcXVldWUucHVzaCh1cGRhdGUpOworICB9Cisg
IHJldHVybiBxdWV1ZTsKK30KKworLyoqCisgKiBQcm9jZXNzZXMgYW55IGVucXVldWVkIHVwZGF0
ZXMuCisgKgorICogQHByaXZhdGUKKyAqLworZnVuY3Rpb24gcHJvY2Vzc1F1ZXVlKGluc3QsIHVw
ZGF0ZVF1ZXVlKSB7CisgIFJlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQucHJvY2Vzc0NoaWxkcmVu
VXBkYXRlcyhpbnN0LCB1cGRhdGVRdWV1ZSk7Cit9CisKK3ZhciBzZXRDaGlsZHJlbkZvckluc3Ry
dW1lbnRhdGlvbiA9IGVtcHR5RnVuY3Rpb247CitpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1
Y3Rpb24nKSB7CisgIHZhciBnZXREZWJ1Z0lEID0gZnVuY3Rpb24gKGluc3QpIHsKKyAgICBpZiAo
IWluc3QuX2RlYnVnSUQpIHsKKyAgICAgIC8vIENoZWNrIGZvciBBUlQtbGlrZSBpbnN0YW5jZXMu
IFRPRE86IFRoaXMgaXMgc2lsbHkvZ3Jvc3MuCisgICAgICB2YXIgaW50ZXJuYWw7CisgICAgICBp
ZiAoaW50ZXJuYWwgPSBSZWFjdEluc3RhbmNlTWFwLmdldChpbnN0KSkgeworICAgICAgICBpbnN0
ID0gaW50ZXJuYWw7CisgICAgICB9CisgICAgfQorICAgIHJldHVybiBpbnN0Ll9kZWJ1Z0lEOwor
ICB9OworICBzZXRDaGlsZHJlbkZvckluc3RydW1lbnRhdGlvbiA9IGZ1bmN0aW9uIChjaGlsZHJl
bikgeworICAgIHZhciBkZWJ1Z0lEID0gZ2V0RGVidWdJRCh0aGlzKTsKKyAgICAvLyBUT0RPOiBS
ZWFjdCBOYXRpdmUgZW1wdHkgY29tcG9uZW50cyBhcmUgYWxzbyBtdWx0aWNoaWxkLgorICAgIC8v
IFRoaXMgbWVhbnMgdGhleSBzdGlsbCBnZXQgaW50byB0aGlzIG1ldGhvZCBidXQgZG9uJ3QgaGF2
ZSBfZGVidWdJRC4KKyAgICBpZiAoZGVidWdJRCAhPT0gMCkgeworICAgICAgUmVhY3RJbnN0cnVt
ZW50YXRpb24uZGVidWdUb29sLm9uU2V0Q2hpbGRyZW4oZGVidWdJRCwgY2hpbGRyZW4gPyBPYmpl
Y3Qua2V5cyhjaGlsZHJlbikubWFwKGZ1bmN0aW9uIChrZXkpIHsKKyAgICAgICAgcmV0dXJuIGNo
aWxkcmVuW2tleV0uX2RlYnVnSUQ7CisgICAgICB9KSA6IFtdKTsKKyAgICB9CisgIH07Cit9CisK
Ky8qKgorICogUmVhY3RNdWx0aUNoaWxkIGFyZSBjYXBhYmxlIG9mIHJlY29uY2lsaW5nIG11bHRp
cGxlIGNoaWxkcmVuLgorICoKKyAqIEBjbGFzcyBSZWFjdE11bHRpQ2hpbGQKKyAqIEBpbnRlcm5h
bAorICovCit2YXIgUmVhY3RNdWx0aUNoaWxkID0geworCisgIC8qKgorICAgKiBQcm92aWRlcyBj
b21tb24gZnVuY3Rpb25hbGl0eSBmb3IgY29tcG9uZW50cyB0aGF0IG11c3QgcmVjb25jaWxlIG11
bHRpcGxlCisgICAqIGNoaWxkcmVuLiBUaGlzIGlzIHVzZWQgYnkgYFJlYWN0RE9NQ29tcG9uZW50
YCB0byBtb3VudCwgdXBkYXRlLCBhbmQKKyAgICogdW5tb3VudCBjaGlsZCBjb21wb25lbnRzLgor
ICAgKgorICAgKiBAbGVuZHMge1JlYWN0TXVsdGlDaGlsZC5wcm90b3R5cGV9CisgICAqLworICBN
aXhpbjogeworCisgICAgX3JlY29uY2lsZXJJbnN0YW50aWF0ZUNoaWxkcmVuOiBmdW5jdGlvbiAo
bmVzdGVkQ2hpbGRyZW4sIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7CisgICAgICBpZiAoImRldmVs
b3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAgIHZhciBzZWxmRGVidWdJRCA9IGdl
dERlYnVnSUQodGhpcyk7CisgICAgICAgIGlmICh0aGlzLl9jdXJyZW50RWxlbWVudCkgeworICAg
ICAgICAgIHRyeSB7CisgICAgICAgICAgICBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ID0gdGhp
cy5fY3VycmVudEVsZW1lbnQuX293bmVyOworICAgICAgICAgICAgcmV0dXJuIFJlYWN0Q2hpbGRS
ZWNvbmNpbGVyLmluc3RhbnRpYXRlQ2hpbGRyZW4obmVzdGVkQ2hpbGRyZW4sIHRyYW5zYWN0aW9u
LCBjb250ZXh0LCBzZWxmRGVidWdJRCk7CisgICAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAg
ICAgIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPSBudWxsOworICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgfQorICAgICAgcmV0dXJuIFJlYWN0Q2hpbGRSZWNvbmNpbGVyLmluc3RhbnRp
YXRlQ2hpbGRyZW4obmVzdGVkQ2hpbGRyZW4sIHRyYW5zYWN0aW9uLCBjb250ZXh0KTsKKyAgICB9
LAorCisgICAgX3JlY29uY2lsZXJVcGRhdGVDaGlsZHJlbjogZnVuY3Rpb24gKHByZXZDaGlsZHJl
biwgbmV4dE5lc3RlZENoaWxkcmVuRWxlbWVudHMsIG1vdW50SW1hZ2VzLCByZW1vdmVkTm9kZXMs
IHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7CisgICAgICB2YXIgbmV4dENoaWxkcmVuOworICAgICAg
dmFyIHNlbGZEZWJ1Z0lEID0gMDsKKyAgICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVj
dGlvbicpIHsKKyAgICAgICAgc2VsZkRlYnVnSUQgPSBnZXREZWJ1Z0lEKHRoaXMpOworICAgICAg
ICBpZiAodGhpcy5fY3VycmVudEVsZW1lbnQpIHsKKyAgICAgICAgICB0cnkgeworICAgICAgICAg
ICAgUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCA9IHRoaXMuX2N1cnJlbnRFbGVtZW50Ll9vd25l
cjsKKyAgICAgICAgICAgIG5leHRDaGlsZHJlbiA9IGZsYXR0ZW5DaGlsZHJlbihuZXh0TmVzdGVk
Q2hpbGRyZW5FbGVtZW50cywgc2VsZkRlYnVnSUQpOworICAgICAgICAgIH0gZmluYWxseSB7Cisg
ICAgICAgICAgICBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ID0gbnVsbDsKKyAgICAgICAgICB9
CisgICAgICAgICAgUmVhY3RDaGlsZFJlY29uY2lsZXIudXBkYXRlQ2hpbGRyZW4ocHJldkNoaWxk
cmVuLCBuZXh0Q2hpbGRyZW4sIG1vdW50SW1hZ2VzLCByZW1vdmVkTm9kZXMsIHRyYW5zYWN0aW9u
LCB0aGlzLCB0aGlzLl9ob3N0Q29udGFpbmVySW5mbywgY29udGV4dCwgc2VsZkRlYnVnSUQpOwor
ICAgICAgICAgIHJldHVybiBuZXh0Q2hpbGRyZW47CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAg
IG5leHRDaGlsZHJlbiA9IGZsYXR0ZW5DaGlsZHJlbihuZXh0TmVzdGVkQ2hpbGRyZW5FbGVtZW50
cywgc2VsZkRlYnVnSUQpOworICAgICAgUmVhY3RDaGlsZFJlY29uY2lsZXIudXBkYXRlQ2hpbGRy
ZW4ocHJldkNoaWxkcmVuLCBuZXh0Q2hpbGRyZW4sIG1vdW50SW1hZ2VzLCByZW1vdmVkTm9kZXMs
IHRyYW5zYWN0aW9uLCB0aGlzLCB0aGlzLl9ob3N0Q29udGFpbmVySW5mbywgY29udGV4dCwgc2Vs
ZkRlYnVnSUQpOworICAgICAgcmV0dXJuIG5leHRDaGlsZHJlbjsKKyAgICB9LAorCisgICAgLyoq
CisgICAgICogR2VuZXJhdGVzIGEgIm1vdW50IGltYWdlIiBmb3IgZWFjaCBvZiB0aGUgc3VwcGxp
ZWQgY2hpbGRyZW4uIEluIHRoZSBjYXNlCisgICAgICogb2YgYFJlYWN0RE9NQ29tcG9uZW50YCwg
YSBtb3VudCBpbWFnZSBpcyBhIHN0cmluZyBvZiBtYXJrdXAuCisgICAgICoKKyAgICAgKiBAcGFy
YW0gez9vYmplY3R9IG5lc3RlZENoaWxkcmVuIE5lc3RlZCBjaGlsZCBtYXBzLgorICAgICAqIEBy
ZXR1cm4ge2FycmF5fSBBbiBhcnJheSBvZiBtb3VudGVkIHJlcHJlc2VudGF0aW9ucy4KKyAgICAg
KiBAaW50ZXJuYWwKKyAgICAgKi8KKyAgICBtb3VudENoaWxkcmVuOiBmdW5jdGlvbiAobmVzdGVk
Q2hpbGRyZW4sIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7CisgICAgICB2YXIgY2hpbGRyZW4gPSB0
aGlzLl9yZWNvbmNpbGVySW5zdGFudGlhdGVDaGlsZHJlbihuZXN0ZWRDaGlsZHJlbiwgdHJhbnNh
Y3Rpb24sIGNvbnRleHQpOworICAgICAgdGhpcy5fcmVuZGVyZWRDaGlsZHJlbiA9IGNoaWxkcmVu
OworCisgICAgICB2YXIgbW91bnRJbWFnZXMgPSBbXTsKKyAgICAgIHZhciBpbmRleCA9IDA7Cisg
ICAgICBmb3IgKHZhciBuYW1lIGluIGNoaWxkcmVuKSB7CisgICAgICAgIGlmIChjaGlsZHJlbi5o
YXNPd25Qcm9wZXJ0eShuYW1lKSkgeworICAgICAgICAgIHZhciBjaGlsZCA9IGNoaWxkcmVuW25h
bWVdOworICAgICAgICAgIHZhciBzZWxmRGVidWdJRCA9IDA7CisgICAgICAgICAgaWYgKCJkZXZl
bG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgICAgICAgc2VsZkRlYnVnSUQgPSBn
ZXREZWJ1Z0lEKHRoaXMpOworICAgICAgICAgIH0KKyAgICAgICAgICB2YXIgbW91bnRJbWFnZSA9
IFJlYWN0UmVjb25jaWxlci5tb3VudENvbXBvbmVudChjaGlsZCwgdHJhbnNhY3Rpb24sIHRoaXMs
IHRoaXMuX2hvc3RDb250YWluZXJJbmZvLCBjb250ZXh0LCBzZWxmRGVidWdJRCk7CisgICAgICAg
ICAgY2hpbGQuX21vdW50SW5kZXggPSBpbmRleCsrOworICAgICAgICAgIG1vdW50SW1hZ2VzLnB1
c2gobW91bnRJbWFnZSk7CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgaWYgKCJkZXZlbG9w
bWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgICBzZXRDaGlsZHJlbkZvckluc3RydW1l
bnRhdGlvbi5jYWxsKHRoaXMsIGNoaWxkcmVuKTsKKyAgICAgIH0KKworICAgICAgcmV0dXJuIG1v
dW50SW1hZ2VzOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBSZXBsYWNlcyBhbnkgcmVuZGVy
ZWQgY2hpbGRyZW4gd2l0aCBhIHRleHQgY29udGVudCBzdHJpbmcuCisgICAgICoKKyAgICAgKiBA
cGFyYW0ge3N0cmluZ30gbmV4dENvbnRlbnQgU3RyaW5nIG9mIGNvbnRlbnQuCisgICAgICogQGlu
dGVybmFsCisgICAgICovCisgICAgdXBkYXRlVGV4dENvbnRlbnQ6IGZ1bmN0aW9uIChuZXh0Q29u
dGVudCkgeworICAgICAgdmFyIHByZXZDaGlsZHJlbiA9IHRoaXMuX3JlbmRlcmVkQ2hpbGRyZW47
CisgICAgICAvLyBSZW1vdmUgYW55IHJlbmRlcmVkIGNoaWxkcmVuLgorICAgICAgUmVhY3RDaGls
ZFJlY29uY2lsZXIudW5tb3VudENoaWxkcmVuKHByZXZDaGlsZHJlbiwgZmFsc2UpOworICAgICAg
Zm9yICh2YXIgbmFtZSBpbiBwcmV2Q2hpbGRyZW4pIHsKKyAgICAgICAgaWYgKHByZXZDaGlsZHJl
bi5oYXNPd25Qcm9wZXJ0eShuYW1lKSkgeworICAgICAgICAgICFmYWxzZSA/ICJkZXZlbG9wbWVu
dCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3VwZGF0ZVRleHRDb250ZW50
IGNhbGxlZCBvbiBub24tZW1wdHkgY29tcG9uZW50LicpIDogX3Byb2RJbnZhcmlhbnQoJzExOCcp
IDogdm9pZCAwOworICAgICAgICB9CisgICAgICB9CisgICAgICAvLyBTZXQgbmV3IHRleHQgY29u
dGVudC4KKyAgICAgIHZhciB1cGRhdGVzID0gW21ha2VUZXh0Q29udGVudChuZXh0Q29udGVudCld
OworICAgICAgcHJvY2Vzc1F1ZXVlKHRoaXMsIHVwZGF0ZXMpOworICAgIH0sCisKKyAgICAvKioK
KyAgICAgKiBSZXBsYWNlcyBhbnkgcmVuZGVyZWQgY2hpbGRyZW4gd2l0aCBhIG1hcmt1cCBzdHJp
bmcuCisgICAgICoKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmV4dE1hcmt1cCBTdHJpbmcgb2Yg
bWFya3VwLgorICAgICAqIEBpbnRlcm5hbAorICAgICAqLworICAgIHVwZGF0ZU1hcmt1cDogZnVu
Y3Rpb24gKG5leHRNYXJrdXApIHsKKyAgICAgIHZhciBwcmV2Q2hpbGRyZW4gPSB0aGlzLl9yZW5k
ZXJlZENoaWxkcmVuOworICAgICAgLy8gUmVtb3ZlIGFueSByZW5kZXJlZCBjaGlsZHJlbi4KKyAg
ICAgIFJlYWN0Q2hpbGRSZWNvbmNpbGVyLnVubW91bnRDaGlsZHJlbihwcmV2Q2hpbGRyZW4sIGZh
bHNlKTsKKyAgICAgIGZvciAodmFyIG5hbWUgaW4gcHJldkNoaWxkcmVuKSB7CisgICAgICAgIGlm
IChwcmV2Q2hpbGRyZW4uaGFzT3duUHJvcGVydHkobmFtZSkpIHsKKyAgICAgICAgICAhZmFsc2Ug
PyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICd1cGRh
dGVUZXh0Q29udGVudCBjYWxsZWQgb24gbm9uLWVtcHR5IGNvbXBvbmVudC4nKSA6IF9wcm9kSW52
YXJpYW50KCcxMTgnKSA6IHZvaWQgMDsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgdmFyIHVw
ZGF0ZXMgPSBbbWFrZVNldE1hcmt1cChuZXh0TWFya3VwKV07CisgICAgICBwcm9jZXNzUXVldWUo
dGhpcywgdXBkYXRlcyk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIFVwZGF0ZXMgdGhlIHJl
bmRlcmVkIGNoaWxkcmVuIHdpdGggbmV3IGNoaWxkcmVuLgorICAgICAqCisgICAgICogQHBhcmFt
IHs/b2JqZWN0fSBuZXh0TmVzdGVkQ2hpbGRyZW5FbGVtZW50cyBOZXN0ZWQgY2hpbGQgZWxlbWVu
dCBtYXBzLgorICAgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNh
Y3Rpb24KKyAgICAgKiBAaW50ZXJuYWwKKyAgICAgKi8KKyAgICB1cGRhdGVDaGlsZHJlbjogZnVu
Y3Rpb24gKG5leHROZXN0ZWRDaGlsZHJlbkVsZW1lbnRzLCB0cmFuc2FjdGlvbiwgY29udGV4dCkg
eworICAgICAgLy8gSG9vayB1c2VkIGJ5IFJlYWN0IEFSVAorICAgICAgdGhpcy5fdXBkYXRlQ2hp
bGRyZW4obmV4dE5lc3RlZENoaWxkcmVuRWxlbWVudHMsIHRyYW5zYWN0aW9uLCBjb250ZXh0KTsK
KyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXh0TmVzdGVkQ2hp
bGRyZW5FbGVtZW50cyBOZXN0ZWQgY2hpbGQgZWxlbWVudCBtYXBzLgorICAgICAqIEBwYXJhbSB7
UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb24KKyAgICAgKiBAZmluYWwKKyAg
ICAgKiBAcHJvdGVjdGVkCisgICAgICovCisgICAgX3VwZGF0ZUNoaWxkcmVuOiBmdW5jdGlvbiAo
bmV4dE5lc3RlZENoaWxkcmVuRWxlbWVudHMsIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7CisgICAg
ICB2YXIgcHJldkNoaWxkcmVuID0gdGhpcy5fcmVuZGVyZWRDaGlsZHJlbjsKKyAgICAgIHZhciBy
ZW1vdmVkTm9kZXMgPSB7fTsKKyAgICAgIHZhciBtb3VudEltYWdlcyA9IFtdOworICAgICAgdmFy
IG5leHRDaGlsZHJlbiA9IHRoaXMuX3JlY29uY2lsZXJVcGRhdGVDaGlsZHJlbihwcmV2Q2hpbGRy
ZW4sIG5leHROZXN0ZWRDaGlsZHJlbkVsZW1lbnRzLCBtb3VudEltYWdlcywgcmVtb3ZlZE5vZGVz
LCB0cmFuc2FjdGlvbiwgY29udGV4dCk7CisgICAgICBpZiAoIW5leHRDaGlsZHJlbiAmJiAhcHJl
dkNoaWxkcmVuKSB7CisgICAgICAgIHJldHVybjsKKyAgICAgIH0KKyAgICAgIHZhciB1cGRhdGVz
ID0gbnVsbDsKKyAgICAgIHZhciBuYW1lOworICAgICAgLy8gYG5leHRJbmRleGAgd2lsbCBpbmNy
ZW1lbnQgZm9yIGVhY2ggY2hpbGQgaW4gYG5leHRDaGlsZHJlbmAsIGJ1dAorICAgICAgLy8gYGxh
c3RJbmRleGAgd2lsbCBiZSB0aGUgbGFzdCBpbmRleCB2aXNpdGVkIGluIGBwcmV2Q2hpbGRyZW5g
LgorICAgICAgdmFyIG5leHRJbmRleCA9IDA7CisgICAgICB2YXIgbGFzdEluZGV4ID0gMDsKKyAg
ICAgIC8vIGBuZXh0TW91bnRJbmRleGAgd2lsbCBpbmNyZW1lbnQgZm9yIGVhY2ggbmV3bHkgbW91
bnRlZCBjaGlsZC4KKyAgICAgIHZhciBuZXh0TW91bnRJbmRleCA9IDA7CisgICAgICB2YXIgbGFz
dFBsYWNlZE5vZGUgPSBudWxsOworICAgICAgZm9yIChuYW1lIGluIG5leHRDaGlsZHJlbikgewor
ICAgICAgICBpZiAoIW5leHRDaGlsZHJlbi5oYXNPd25Qcm9wZXJ0eShuYW1lKSkgeworICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIHZhciBwcmV2Q2hpbGQgPSBwcmV2Q2hp
bGRyZW4gJiYgcHJldkNoaWxkcmVuW25hbWVdOworICAgICAgICB2YXIgbmV4dENoaWxkID0gbmV4
dENoaWxkcmVuW25hbWVdOworICAgICAgICBpZiAocHJldkNoaWxkID09PSBuZXh0Q2hpbGQpIHsK
KyAgICAgICAgICB1cGRhdGVzID0gZW5xdWV1ZSh1cGRhdGVzLCB0aGlzLm1vdmVDaGlsZChwcmV2
Q2hpbGQsIGxhc3RQbGFjZWROb2RlLCBuZXh0SW5kZXgsIGxhc3RJbmRleCkpOworICAgICAgICAg
IGxhc3RJbmRleCA9IE1hdGgubWF4KHByZXZDaGlsZC5fbW91bnRJbmRleCwgbGFzdEluZGV4KTsK
KyAgICAgICAgICBwcmV2Q2hpbGQuX21vdW50SW5kZXggPSBuZXh0SW5kZXg7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgaWYgKHByZXZDaGlsZCkgeworICAgICAgICAgICAgLy8gVXBkYXRl
IGBsYXN0SW5kZXhgIGJlZm9yZSBgX21vdW50SW5kZXhgIGdldHMgdW5zZXQgYnkgdW5tb3VudGlu
Zy4KKyAgICAgICAgICAgIGxhc3RJbmRleCA9IE1hdGgubWF4KHByZXZDaGlsZC5fbW91bnRJbmRl
eCwgbGFzdEluZGV4KTsKKyAgICAgICAgICAgIC8vIFRoZSBgcmVtb3ZlZE5vZGVzYCBsb29wIGJl
bG93IHdpbGwgYWN0dWFsbHkgcmVtb3ZlIHRoZSBjaGlsZC4KKyAgICAgICAgICB9CisgICAgICAg
ICAgLy8gVGhlIGNoaWxkIG11c3QgYmUgaW5zdGFudGlhdGVkIGJlZm9yZSBpdCdzIG1vdW50ZWQu
CisgICAgICAgICAgdXBkYXRlcyA9IGVucXVldWUodXBkYXRlcywgdGhpcy5fbW91bnRDaGlsZEF0
SW5kZXgobmV4dENoaWxkLCBtb3VudEltYWdlc1tuZXh0TW91bnRJbmRleF0sIGxhc3RQbGFjZWRO
b2RlLCBuZXh0SW5kZXgsIHRyYW5zYWN0aW9uLCBjb250ZXh0KSk7CisgICAgICAgICAgbmV4dE1v
dW50SW5kZXgrKzsKKyAgICAgICAgfQorICAgICAgICBuZXh0SW5kZXgrKzsKKyAgICAgICAgbGFz
dFBsYWNlZE5vZGUgPSBSZWFjdFJlY29uY2lsZXIuZ2V0SG9zdE5vZGUobmV4dENoaWxkKTsKKyAg
ICAgIH0KKyAgICAgIC8vIFJlbW92ZSBjaGlsZHJlbiB0aGF0IGFyZSBubyBsb25nZXIgcHJlc2Vu
dC4KKyAgICAgIGZvciAobmFtZSBpbiByZW1vdmVkTm9kZXMpIHsKKyAgICAgICAgaWYgKHJlbW92
ZWROb2Rlcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkgeworICAgICAgICAgIHVwZGF0ZXMgPSBlbnF1
ZXVlKHVwZGF0ZXMsIHRoaXMuX3VubW91bnRDaGlsZChwcmV2Q2hpbGRyZW5bbmFtZV0sIHJlbW92
ZWROb2Rlc1tuYW1lXSkpOworICAgICAgICB9CisgICAgICB9CisgICAgICBpZiAodXBkYXRlcykg
eworICAgICAgICBwcm9jZXNzUXVldWUodGhpcywgdXBkYXRlcyk7CisgICAgICB9CisgICAgICB0
aGlzLl9yZW5kZXJlZENoaWxkcmVuID0gbmV4dENoaWxkcmVuOworCisgICAgICBpZiAoImRldmVs
b3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAgIHNldENoaWxkcmVuRm9ySW5zdHJ1
bWVudGF0aW9uLmNhbGwodGhpcywgbmV4dENoaWxkcmVuKTsKKyAgICAgIH0KKyAgICB9LAorCisg
ICAgLyoqCisgICAgICogVW5tb3VudHMgYWxsIHJlbmRlcmVkIGNoaWxkcmVuLiBUaGlzIHNob3Vs
ZCBiZSB1c2VkIHRvIGNsZWFuIHVwIGNoaWxkcmVuCisgICAgICogd2hlbiB0aGlzIGNvbXBvbmVu
dCBpcyB1bm1vdW50ZWQuIEl0IGRvZXMgbm90IGFjdHVhbGx5IHBlcmZvcm0gYW55CisgICAgICog
YmFja2VuZCBvcGVyYXRpb25zLgorICAgICAqCisgICAgICogQGludGVybmFsCisgICAgICovCisg
ICAgdW5tb3VudENoaWxkcmVuOiBmdW5jdGlvbiAoc2FmZWx5KSB7CisgICAgICB2YXIgcmVuZGVy
ZWRDaGlsZHJlbiA9IHRoaXMuX3JlbmRlcmVkQ2hpbGRyZW47CisgICAgICBSZWFjdENoaWxkUmVj
b25jaWxlci51bm1vdW50Q2hpbGRyZW4ocmVuZGVyZWRDaGlsZHJlbiwgc2FmZWx5KTsKKyAgICAg
IHRoaXMuX3JlbmRlcmVkQ2hpbGRyZW4gPSBudWxsOworICAgIH0sCisKKyAgICAvKioKKyAgICAg
KiBNb3ZlcyBhIGNoaWxkIGNvbXBvbmVudCB0byB0aGUgc3VwcGxpZWQgaW5kZXguCisgICAgICoK
KyAgICAgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBjaGlsZCBDb21wb25lbnQgdG8gbW92ZS4K
KyAgICAgKiBAcGFyYW0ge251bWJlcn0gdG9JbmRleCBEZXN0aW5hdGlvbiBpbmRleCBvZiB0aGUg
ZWxlbWVudC4KKyAgICAgKiBAcGFyYW0ge251bWJlcn0gbGFzdEluZGV4IExhc3QgaW5kZXggdmlz
aXRlZCBvZiB0aGUgc2libGluZ3Mgb2YgYGNoaWxkYC4KKyAgICAgKiBAcHJvdGVjdGVkCisgICAg
ICovCisgICAgbW92ZUNoaWxkOiBmdW5jdGlvbiAoY2hpbGQsIGFmdGVyTm9kZSwgdG9JbmRleCwg
bGFzdEluZGV4KSB7CisgICAgICAvLyBJZiB0aGUgaW5kZXggb2YgYGNoaWxkYCBpcyBsZXNzIHRo
YW4gYGxhc3RJbmRleGAsIHRoZW4gaXQgbmVlZHMgdG8KKyAgICAgIC8vIGJlIG1vdmVkLiBPdGhl
cndpc2UsIHdlIGRvIG5vdCBuZWVkIHRvIG1vdmUgaXQgYmVjYXVzZSBhIGNoaWxkIHdpbGwgYmUK
KyAgICAgIC8vIGluc2VydGVkIG9yIG1vdmVkIGJlZm9yZSBgY2hpbGRgLgorICAgICAgaWYgKGNo
aWxkLl9tb3VudEluZGV4IDwgbGFzdEluZGV4KSB7CisgICAgICAgIHJldHVybiBtYWtlTW92ZShj
aGlsZCwgYWZ0ZXJOb2RlLCB0b0luZGV4KTsKKyAgICAgIH0KKyAgICB9LAorCisgICAgLyoqCisg
ICAgICogQ3JlYXRlcyBhIGNoaWxkIGNvbXBvbmVudC4KKyAgICAgKgorICAgICAqIEBwYXJhbSB7
UmVhY3RDb21wb25lbnR9IGNoaWxkIENvbXBvbmVudCB0byBjcmVhdGUuCisgICAgICogQHBhcmFt
IHtzdHJpbmd9IG1vdW50SW1hZ2UgTWFya3VwIHRvIGluc2VydC4KKyAgICAgKiBAcHJvdGVjdGVk
CisgICAgICovCisgICAgY3JlYXRlQ2hpbGQ6IGZ1bmN0aW9uIChjaGlsZCwgYWZ0ZXJOb2RlLCBt
b3VudEltYWdlKSB7CisgICAgICByZXR1cm4gbWFrZUluc2VydE1hcmt1cChtb3VudEltYWdlLCBh
ZnRlck5vZGUsIGNoaWxkLl9tb3VudEluZGV4KTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICog
UmVtb3ZlcyBhIGNoaWxkIGNvbXBvbmVudC4KKyAgICAgKgorICAgICAqIEBwYXJhbSB7UmVhY3RD
b21wb25lbnR9IGNoaWxkIENoaWxkIHRvIHJlbW92ZS4KKyAgICAgKiBAcHJvdGVjdGVkCisgICAg
ICovCisgICAgcmVtb3ZlQ2hpbGQ6IGZ1bmN0aW9uIChjaGlsZCwgbm9kZSkgeworICAgICAgcmV0
dXJuIG1ha2VSZW1vdmUoY2hpbGQsIG5vZGUpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBN
b3VudHMgYSBjaGlsZCB3aXRoIHRoZSBzdXBwbGllZCBuYW1lLgorICAgICAqCisgICAgICogTk9U
RTogVGhpcyBpcyBwYXJ0IG9mIGB1cGRhdGVDaGlsZHJlbmAgYW5kIGlzIGhlcmUgZm9yIHJlYWRh
YmlsaXR5LgorICAgICAqCisgICAgICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gY2hpbGQgQ29t
cG9uZW50IHRvIG1vdW50LgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIE5hbWUgb2YgdGhl
IGNoaWxkLgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleCBJbmRleCBhdCB3aGljaCB0byBp
bnNlcnQgdGhlIGNoaWxkLgorICAgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlv
bn0gdHJhbnNhY3Rpb24KKyAgICAgKiBAcHJpdmF0ZQorICAgICAqLworICAgIF9tb3VudENoaWxk
QXRJbmRleDogZnVuY3Rpb24gKGNoaWxkLCBtb3VudEltYWdlLCBhZnRlck5vZGUsIGluZGV4LCB0
cmFuc2FjdGlvbiwgY29udGV4dCkgeworICAgICAgY2hpbGQuX21vdW50SW5kZXggPSBpbmRleDsK
KyAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUNoaWxkKGNoaWxkLCBhZnRlck5vZGUsIG1vdW50SW1h
Z2UpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBVbm1vdW50cyBhIHJlbmRlcmVkIGNoaWxk
LgorICAgICAqCisgICAgICogTk9URTogVGhpcyBpcyBwYXJ0IG9mIGB1cGRhdGVDaGlsZHJlbmAg
YW5kIGlzIGhlcmUgZm9yIHJlYWRhYmlsaXR5LgorICAgICAqCisgICAgICogQHBhcmFtIHtSZWFj
dENvbXBvbmVudH0gY2hpbGQgQ29tcG9uZW50IHRvIHVubW91bnQuCisgICAgICogQHByaXZhdGUK
KyAgICAgKi8KKyAgICBfdW5tb3VudENoaWxkOiBmdW5jdGlvbiAoY2hpbGQsIG5vZGUpIHsKKyAg
ICAgIHZhciB1cGRhdGUgPSB0aGlzLnJlbW92ZUNoaWxkKGNoaWxkLCBub2RlKTsKKyAgICAgIGNo
aWxkLl9tb3VudEluZGV4ID0gbnVsbDsKKyAgICAgIHJldHVybiB1cGRhdGU7CisgICAgfQorCisg
IH0KKworfTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdE11bHRpQ2hpbGQ7Cit9LHsiMTA5Ijox
MDksIjEyNSI6MTI1LCIxMzMiOjEzMywiMTQyIjoxNDIsIjE1MCI6MTUwLCIyNyI6MjcsIjI5Ijoy
OSwiNjMiOjYzLCI2NCI6NjQsIjc1Ijo3NX1dLDY5OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxl
eHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4K
KyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNl
bnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0
aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRF
TlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIAorICovCisKKyd1c2Ugc3Ry
aWN0JzsKKwordmFyIF9wcm9kSW52YXJpYW50ID0gX2RlcmVxXygxMjUpOworCit2YXIgUmVhY3Qg
PSBfZGVyZXFfKDEzNCk7CisKK3ZhciBpbnZhcmlhbnQgPSBfZGVyZXFfKDE1MCk7CisKK3ZhciBS
ZWFjdE5vZGVUeXBlcyA9IHsKKyAgSE9TVDogMCwKKyAgQ09NUE9TSVRFOiAxLAorICBFTVBUWTog
MiwKKworICBnZXRUeXBlOiBmdW5jdGlvbiAobm9kZSkgeworICAgIGlmIChub2RlID09PSBudWxs
IHx8IG5vZGUgPT09IGZhbHNlKSB7CisgICAgICByZXR1cm4gUmVhY3ROb2RlVHlwZXMuRU1QVFk7
CisgICAgfSBlbHNlIGlmIChSZWFjdC5pc1ZhbGlkRWxlbWVudChub2RlKSkgeworICAgICAgaWYg
KHR5cGVvZiBub2RlLnR5cGUgPT09ICdmdW5jdGlvbicpIHsKKyAgICAgICAgcmV0dXJuIFJlYWN0
Tm9kZVR5cGVzLkNPTVBPU0lURTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiBSZWFj
dE5vZGVUeXBlcy5IT1NUOworICAgICAgfQorICAgIH0KKyAgICAhZmFsc2UgPyAiZGV2ZWxvcG1l
bnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdVbmV4cGVjdGVkIG5vZGU6
ICVzJywgbm9kZSkgOiBfcHJvZEludmFyaWFudCgnMjYnLCBub2RlKSA6IHZvaWQgMDsKKyAgfQor
fTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdE5vZGVUeXBlczsKK30seyIxMjUiOjEyNSwiMTM0
IjoxMzQsIjE1MCI6MTUwfV0sNzA6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpewor
LyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy
IHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFu
dAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2
YXIgX3Byb2RJbnZhcmlhbnQgPSBfZGVyZXFfKDEyNSk7CisKK3ZhciBpbnZhcmlhbnQgPSBfZGVy
ZXFfKDE1MCk7CisKKy8qKgorICogQHBhcmFtIHs/b2JqZWN0fSBvYmplY3QKKyAqIEByZXR1cm4g
e2Jvb2xlYW59IFRydWUgaWYgYG9iamVjdGAgaXMgYSB2YWxpZCBvd25lci4KKyAqIEBmaW5hbAor
ICovCitmdW5jdGlvbiBpc1ZhbGlkT3duZXIob2JqZWN0KSB7CisgIHJldHVybiAhIShvYmplY3Qg
JiYgdHlwZW9mIG9iamVjdC5hdHRhY2hSZWYgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIG9iamVj
dC5kZXRhY2hSZWYgPT09ICdmdW5jdGlvbicpOworfQorCisvKioKKyAqIFJlYWN0T3duZXJzIGFy
ZSBjYXBhYmxlIG9mIHN0b3JpbmcgcmVmZXJlbmNlcyB0byBvd25lZCBjb21wb25lbnRzLgorICoK
KyAqIEFsbCBjb21wb25lbnRzIGFyZSBjYXBhYmxlIG9mIC8vYmVpbmcvLyByZWZlcmVuY2VkIGJ5
IG93bmVyIGNvbXBvbmVudHMsIGJ1dAorICogb25seSBSZWFjdE93bmVyIGNvbXBvbmVudHMgYXJl
IGNhcGFibGUgb2YgLy9yZWZlcmVuY2luZy8vIG93bmVkIGNvbXBvbmVudHMuCisgKiBUaGUgbmFt
ZWQgcmVmZXJlbmNlIGlzIGtub3duIGFzIGEgInJlZiIuCisgKgorICogUmVmcyBhcmUgYXZhaWxh
YmxlIHdoZW4gbW91bnRlZCBhbmQgdXBkYXRlZCBkdXJpbmcgcmVjb25jaWxpYXRpb24uCisgKgor
ICogICB2YXIgTXlDb21wb25lbnQgPSBSZWFjdC5jcmVhdGVDbGFzcyh7CisgKiAgICAgcmVuZGVy
OiBmdW5jdGlvbigpIHsKKyAqICAgICAgIHJldHVybiAoCisgKiAgICAgICAgIDxkaXYgb25DbGlj
az17dGhpcy5oYW5kbGVDbGlja30+CisgKiAgICAgICAgICAgPEN1c3RvbUNvbXBvbmVudCByZWY9
ImN1c3RvbSIgLz4KKyAqICAgICAgICAgPC9kaXY+CisgKiAgICAgICApOworICogICAgIH0sCisg
KiAgICAgaGFuZGxlQ2xpY2s6IGZ1bmN0aW9uKCkgeworICogICAgICAgdGhpcy5yZWZzLmN1c3Rv
bS5oYW5kbGVDbGljaygpOworICogICAgIH0sCisgKiAgICAgY29tcG9uZW50RGlkTW91bnQ6IGZ1
bmN0aW9uKCkgeworICogICAgICAgdGhpcy5yZWZzLmN1c3RvbS5pbml0aWFsaXplKCk7CisgKiAg
ICAgfQorICogICB9KTsKKyAqCisgKiBSZWZzIHNob3VsZCByYXJlbHkgYmUgdXNlZC4gV2hlbiBy
ZWZzIGFyZSB1c2VkLCB0aGV5IHNob3VsZCBvbmx5IGJlIGRvbmUgdG8KKyAqIGNvbnRyb2wgZGF0
YSB0aGF0IGlzIG5vdCBoYW5kbGVkIGJ5IFJlYWN0J3MgZGF0YSBmbG93LgorICoKKyAqIEBjbGFz
cyBSZWFjdE93bmVyCisgKi8KK3ZhciBSZWFjdE93bmVyID0geworICAvKioKKyAgICogQWRkcyBh
IGNvbXBvbmVudCBieSByZWYgdG8gYW4gb3duZXIgY29tcG9uZW50LgorICAgKgorICAgKiBAcGFy
YW0ge1JlYWN0Q29tcG9uZW50fSBjb21wb25lbnQgQ29tcG9uZW50IHRvIHJlZmVyZW5jZS4KKyAg
ICogQHBhcmFtIHtzdHJpbmd9IHJlZiBOYW1lIGJ5IHdoaWNoIHRvIHJlZmVyIHRvIHRoZSBjb21w
b25lbnQuCisgICAqIEBwYXJhbSB7UmVhY3RPd25lcn0gb3duZXIgQ29tcG9uZW50IG9uIHdoaWNo
IHRvIHJlY29yZCB0aGUgcmVmLgorICAgKiBAZmluYWwKKyAgICogQGludGVybmFsCisgICAqLwor
ICBhZGRDb21wb25lbnRBc1JlZlRvOiBmdW5jdGlvbiAoY29tcG9uZW50LCByZWYsIG93bmVyKSB7
CisgICAgIWlzVmFsaWRPd25lcihvd25lcikgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlv
bicgPyBpbnZhcmlhbnQoZmFsc2UsICdhZGRDb21wb25lbnRBc1JlZlRvKC4uLik6IE9ubHkgYSBS
ZWFjdE93bmVyIGNhbiBoYXZlIHJlZnMuIFlvdSBtaWdodCBiZSBhZGRpbmcgYSByZWYgdG8gYSBj
b21wb25lbnQgdGhhdCB3YXMgbm90IGNyZWF0ZWQgaW5zaWRlIGEgY29tcG9uZW50XCdzIGByZW5k
ZXJgIG1ldGhvZCwgb3IgeW91IGhhdmUgbXVsdGlwbGUgY29waWVzIG9mIFJlYWN0IGxvYWRlZCAo
ZGV0YWlsczogaHR0cHM6Ly9mYi5tZS9yZWFjdC1yZWZzLW11c3QtaGF2ZS1vd25lcikuJykgOiBf
cHJvZEludmFyaWFudCgnMTE5JykgOiB2b2lkIDA7CisgICAgb3duZXIuYXR0YWNoUmVmKHJlZiwg
Y29tcG9uZW50KTsKKyAgfSwKKworICAvKioKKyAgICogUmVtb3ZlcyBhIGNvbXBvbmVudCBieSBy
ZWYgZnJvbSBhbiBvd25lciBjb21wb25lbnQuCisgICAqCisgICAqIEBwYXJhbSB7UmVhY3RDb21w
b25lbnR9IGNvbXBvbmVudCBDb21wb25lbnQgdG8gZGVyZWZlcmVuY2UuCisgICAqIEBwYXJhbSB7
c3RyaW5nfSByZWYgTmFtZSBvZiB0aGUgcmVmIHRvIHJlbW92ZS4KKyAgICogQHBhcmFtIHtSZWFj
dE93bmVyfSBvd25lciBDb21wb25lbnQgb24gd2hpY2ggdGhlIHJlZiBpcyByZWNvcmRlZC4KKyAg
ICogQGZpbmFsCisgICAqIEBpbnRlcm5hbAorICAgKi8KKyAgcmVtb3ZlQ29tcG9uZW50QXNSZWZG
cm9tOiBmdW5jdGlvbiAoY29tcG9uZW50LCByZWYsIG93bmVyKSB7CisgICAgIWlzVmFsaWRPd25l
cihvd25lcikgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFs
c2UsICdyZW1vdmVDb21wb25lbnRBc1JlZkZyb20oLi4uKTogT25seSBhIFJlYWN0T3duZXIgY2Fu
IGhhdmUgcmVmcy4gWW91IG1pZ2h0IGJlIHJlbW92aW5nIGEgcmVmIHRvIGEgY29tcG9uZW50IHRo
YXQgd2FzIG5vdCBjcmVhdGVkIGluc2lkZSBhIGNvbXBvbmVudFwncyBgcmVuZGVyYCBtZXRob2Qs
IG9yIHlvdSBoYXZlIG11bHRpcGxlIGNvcGllcyBvZiBSZWFjdCBsb2FkZWQgKGRldGFpbHM6IGh0
dHBzOi8vZmIubWUvcmVhY3QtcmVmcy1tdXN0LWhhdmUtb3duZXIpLicpIDogX3Byb2RJbnZhcmlh
bnQoJzEyMCcpIDogdm9pZCAwOworICAgIHZhciBvd25lclB1YmxpY0luc3RhbmNlID0gb3duZXIu
Z2V0UHVibGljSW5zdGFuY2UoKTsKKyAgICAvLyBDaGVjayB0aGF0IGBjb21wb25lbnRgJ3Mgb3du
ZXIgaXMgc3RpbGwgYWxpdmUgYW5kIHRoYXQgYGNvbXBvbmVudGAgaXMgc3RpbGwgdGhlIGN1cnJl
bnQgcmVmCisgICAgLy8gYmVjYXVzZSB3ZSBkbyBub3Qgd2FudCB0byBkZXRhY2ggdGhlIHJlZiBp
ZiBhbm90aGVyIGNvbXBvbmVudCBzdG9sZSBpdC4KKyAgICBpZiAob3duZXJQdWJsaWNJbnN0YW5j
ZSAmJiBvd25lclB1YmxpY0luc3RhbmNlLnJlZnNbcmVmXSA9PT0gY29tcG9uZW50LmdldFB1Ymxp
Y0luc3RhbmNlKCkpIHsKKyAgICAgIG93bmVyLmRldGFjaFJlZihyZWYpOworICAgIH0KKyAgfQor
Cit9OworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0T3duZXI7Cit9LHsiMTI1IjoxMjUsIjE1MCI6
MTUwfV0sNzE6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5
cmlnaHQgMjAxNi1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5
bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJl
Y3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0
ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuCisgKgorICogCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX2Fzc2lnbiA9
IF9kZXJlcV8oMTU4KTsKKwordmFyIF9leHRlbmRzID0gX2Fzc2lnbiB8fCBmdW5jdGlvbiAodGFy
Z2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBz
b3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVj
dC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tl
eV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsKKwordmFyIFJlYWN0RGVi
dWdUb29sID0gX2RlcmVxXyg1MCk7Cit2YXIgd2FybmluZyA9IF9kZXJlcV8oMTU3KTsKK3ZhciBh
bHJlYWR5V2FybmVkID0gZmFsc2U7CisKK2Z1bmN0aW9uIHJvdW5kRmxvYXQodmFsKSB7CisgIHZh
ciBiYXNlID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmlu
ZWQgPyBhcmd1bWVudHNbMV0gOiAyOworCisgIHZhciBuID0gTWF0aC5wb3coMTAsIGJhc2UpOwor
ICByZXR1cm4gTWF0aC5mbG9vcih2YWwgKiBuKSAvIG47Cit9CisKKy8vIEZsb3cgdHlwZSBkZWZp
bml0aW9uIG9mIGNvbnNvbGUudGFibGUgaXMgdG9vIHN0cmljdCByaWdodCBub3csIHNlZQorLy8g
aHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2Zsb3cvcHVsbC8yMzUzIGZvciB1cGRhdGVzCitm
dW5jdGlvbiBjb25zb2xlVGFibGUodGFibGUpIHsKKyAgY29uc29sZS50YWJsZSh0YWJsZSk7Cit9
CisKK2Z1bmN0aW9uIHdhcm5JblByb2R1Y3Rpb24oKSB7CisgIGlmIChhbHJlYWR5V2FybmVkKSB7
CisgICAgcmV0dXJuOworICB9CisgIGFscmVhZHlXYXJuZWQgPSB0cnVlOworICBpZiAodHlwZW9m
IGNvbnNvbGUgIT09ICd1bmRlZmluZWQnKSB7CisgICAgY29uc29sZS5lcnJvcignUmVhY3RQZXJm
IGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhlIHByb2R1Y3Rpb24gYnVpbGRzIG9mIFJlYWN0LiAnICsg
J1RvIGNvbGxlY3QgbWVhc3VyZW1lbnRzLCBwbGVhc2UgdXNlIHRoZSBkZXZlbG9wbWVudCBidWls
ZCBvZiBSZWFjdCBpbnN0ZWFkLicpOworICB9Cit9CisKK2Z1bmN0aW9uIGdldExhc3RNZWFzdXJl
bWVudHMoKSB7CisgIGlmICghKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykpIHsKKyAg
ICB3YXJuSW5Qcm9kdWN0aW9uKCk7CisgICAgcmV0dXJuIFtdOworICB9CisKKyAgcmV0dXJuIFJl
YWN0RGVidWdUb29sLmdldEZsdXNoSGlzdG9yeSgpOworfQorCitmdW5jdGlvbiBnZXRFeGNsdXNp
dmUoKSB7CisgIHZhciBmbHVzaEhpc3RvcnkgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1
bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IGdldExhc3RNZWFzdXJlbWVu
dHMoKTsKKworICBpZiAoISgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpKSB7CisgICAg
d2FybkluUHJvZHVjdGlvbigpOworICAgIHJldHVybiBbXTsKKyAgfQorCisgIHZhciBhZ2dyZWdh
dGVkU3RhdHMgPSB7fTsKKyAgdmFyIGFmZmVjdGVkSURzID0ge307CisKKyAgZnVuY3Rpb24gdXBk
YXRlQWdncmVnYXRlZFN0YXRzKHRyZWVTbmFwc2hvdCwgaW5zdGFuY2VJRCwgdGltZXJUeXBlLCBh
cHBseVVwZGF0ZSkgeworICAgIHZhciBkaXNwbGF5TmFtZSA9IHRyZWVTbmFwc2hvdFtpbnN0YW5j
ZUlEXS5kaXNwbGF5TmFtZTsKKworICAgIHZhciBrZXkgPSBkaXNwbGF5TmFtZTsKKyAgICB2YXIg
c3RhdHMgPSBhZ2dyZWdhdGVkU3RhdHNba2V5XTsKKyAgICBpZiAoIXN0YXRzKSB7CisgICAgICBh
ZmZlY3RlZElEc1trZXldID0ge307CisgICAgICBzdGF0cyA9IGFnZ3JlZ2F0ZWRTdGF0c1trZXld
ID0geworICAgICAgICBrZXk6IGtleSwKKyAgICAgICAgaW5zdGFuY2VDb3VudDogMCwKKyAgICAg
ICAgY291bnRzOiB7fSwKKyAgICAgICAgZHVyYXRpb25zOiB7fSwKKyAgICAgICAgdG90YWxEdXJh
dGlvbjogMAorICAgICAgfTsKKyAgICB9CisgICAgaWYgKCFzdGF0cy5kdXJhdGlvbnNbdGltZXJU
eXBlXSkgeworICAgICAgc3RhdHMuZHVyYXRpb25zW3RpbWVyVHlwZV0gPSAwOworICAgIH0KKyAg
ICBpZiAoIXN0YXRzLmNvdW50c1t0aW1lclR5cGVdKSB7CisgICAgICBzdGF0cy5jb3VudHNbdGlt
ZXJUeXBlXSA9IDA7CisgICAgfQorICAgIGFmZmVjdGVkSURzW2tleV1baW5zdGFuY2VJRF0gPSB0
cnVlOworICAgIGFwcGx5VXBkYXRlKHN0YXRzKTsKKyAgfQorCisgIGZsdXNoSGlzdG9yeS5mb3JF
YWNoKGZ1bmN0aW9uIChmbHVzaCkgeworICAgIHZhciBtZWFzdXJlbWVudHMgPSBmbHVzaC5tZWFz
dXJlbWVudHMsCisgICAgICAgIHRyZWVTbmFwc2hvdCA9IGZsdXNoLnRyZWVTbmFwc2hvdDsKKwor
ICAgIG1lYXN1cmVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChtZWFzdXJlbWVudCkgeworICAgICAg
dmFyIGR1cmF0aW9uID0gbWVhc3VyZW1lbnQuZHVyYXRpb24sCisgICAgICAgICAgaW5zdGFuY2VJ
RCA9IG1lYXN1cmVtZW50Lmluc3RhbmNlSUQsCisgICAgICAgICAgdGltZXJUeXBlID0gbWVhc3Vy
ZW1lbnQudGltZXJUeXBlOworCisgICAgICB1cGRhdGVBZ2dyZWdhdGVkU3RhdHModHJlZVNuYXBz
aG90LCBpbnN0YW5jZUlELCB0aW1lclR5cGUsIGZ1bmN0aW9uIChzdGF0cykgeworICAgICAgICBz
dGF0cy50b3RhbER1cmF0aW9uICs9IGR1cmF0aW9uOworICAgICAgICBzdGF0cy5kdXJhdGlvbnNb
dGltZXJUeXBlXSArPSBkdXJhdGlvbjsKKyAgICAgICAgc3RhdHMuY291bnRzW3RpbWVyVHlwZV0r
KzsKKyAgICAgIH0pOworICAgIH0pOworICB9KTsKKworICByZXR1cm4gT2JqZWN0LmtleXMoYWdn
cmVnYXRlZFN0YXRzKS5tYXAoZnVuY3Rpb24gKGtleSkgeworICAgIHJldHVybiBfZXh0ZW5kcyh7
fSwgYWdncmVnYXRlZFN0YXRzW2tleV0sIHsKKyAgICAgIGluc3RhbmNlQ291bnQ6IE9iamVjdC5r
ZXlzKGFmZmVjdGVkSURzW2tleV0pLmxlbmd0aAorICAgIH0pOworICB9KS5zb3J0KGZ1bmN0aW9u
IChhLCBiKSB7CisgICAgcmV0dXJuIGIudG90YWxEdXJhdGlvbiAtIGEudG90YWxEdXJhdGlvbjsK
KyAgfSk7Cit9CisKK2Z1bmN0aW9uIGdldEluY2x1c2l2ZSgpIHsKKyAgdmFyIGZsdXNoSGlzdG9y
eSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8g
YXJndW1lbnRzWzBdIDogZ2V0TGFzdE1lYXN1cmVtZW50cygpOworCisgIGlmICghKCJkZXZlbG9w
bWVudCIgIT09ICdwcm9kdWN0aW9uJykpIHsKKyAgICB3YXJuSW5Qcm9kdWN0aW9uKCk7CisgICAg
cmV0dXJuIFtdOworICB9CisKKyAgdmFyIGFnZ3JlZ2F0ZWRTdGF0cyA9IHt9OworICB2YXIgYWZm
ZWN0ZWRJRHMgPSB7fTsKKworICBmdW5jdGlvbiB1cGRhdGVBZ2dyZWdhdGVkU3RhdHModHJlZVNu
YXBzaG90LCBpbnN0YW5jZUlELCBhcHBseVVwZGF0ZSkgeworICAgIHZhciBfdHJlZVNuYXBzaG90
JGluc3RhbmMgPSB0cmVlU25hcHNob3RbaW5zdGFuY2VJRF0sCisgICAgICAgIGRpc3BsYXlOYW1l
ID0gX3RyZWVTbmFwc2hvdCRpbnN0YW5jLmRpc3BsYXlOYW1lLAorICAgICAgICBvd25lcklEID0g
X3RyZWVTbmFwc2hvdCRpbnN0YW5jLm93bmVySUQ7CisKKyAgICB2YXIgb3duZXIgPSB0cmVlU25h
cHNob3Rbb3duZXJJRF07CisgICAgdmFyIGtleSA9IChvd25lciA/IG93bmVyLmRpc3BsYXlOYW1l
ICsgJyA+ICcgOiAnJykgKyBkaXNwbGF5TmFtZTsKKyAgICB2YXIgc3RhdHMgPSBhZ2dyZWdhdGVk
U3RhdHNba2V5XTsKKyAgICBpZiAoIXN0YXRzKSB7CisgICAgICBhZmZlY3RlZElEc1trZXldID0g
e307CisgICAgICBzdGF0cyA9IGFnZ3JlZ2F0ZWRTdGF0c1trZXldID0geworICAgICAgICBrZXk6
IGtleSwKKyAgICAgICAgaW5zdGFuY2VDb3VudDogMCwKKyAgICAgICAgaW5jbHVzaXZlUmVuZGVy
RHVyYXRpb246IDAsCisgICAgICAgIHJlbmRlckNvdW50OiAwCisgICAgICB9OworICAgIH0KKyAg
ICBhZmZlY3RlZElEc1trZXldW2luc3RhbmNlSURdID0gdHJ1ZTsKKyAgICBhcHBseVVwZGF0ZShz
dGF0cyk7CisgIH0KKworICB2YXIgaXNDb21wb3NpdGVCeUlEID0ge307CisgIGZsdXNoSGlzdG9y
eS5mb3JFYWNoKGZ1bmN0aW9uIChmbHVzaCkgeworICAgIHZhciBtZWFzdXJlbWVudHMgPSBmbHVz
aC5tZWFzdXJlbWVudHM7CisKKyAgICBtZWFzdXJlbWVudHMuZm9yRWFjaChmdW5jdGlvbiAobWVh
c3VyZW1lbnQpIHsKKyAgICAgIHZhciBpbnN0YW5jZUlEID0gbWVhc3VyZW1lbnQuaW5zdGFuY2VJ
RCwKKyAgICAgICAgICB0aW1lclR5cGUgPSBtZWFzdXJlbWVudC50aW1lclR5cGU7CisKKyAgICAg
IGlmICh0aW1lclR5cGUgIT09ICdyZW5kZXInKSB7CisgICAgICAgIHJldHVybjsKKyAgICAgIH0K
KyAgICAgIGlzQ29tcG9zaXRlQnlJRFtpbnN0YW5jZUlEXSA9IHRydWU7CisgICAgfSk7CisgIH0p
OworCisgIGZsdXNoSGlzdG9yeS5mb3JFYWNoKGZ1bmN0aW9uIChmbHVzaCkgeworICAgIHZhciBt
ZWFzdXJlbWVudHMgPSBmbHVzaC5tZWFzdXJlbWVudHMsCisgICAgICAgIHRyZWVTbmFwc2hvdCA9
IGZsdXNoLnRyZWVTbmFwc2hvdDsKKworICAgIG1lYXN1cmVtZW50cy5mb3JFYWNoKGZ1bmN0aW9u
IChtZWFzdXJlbWVudCkgeworICAgICAgdmFyIGR1cmF0aW9uID0gbWVhc3VyZW1lbnQuZHVyYXRp
b24sCisgICAgICAgICAgaW5zdGFuY2VJRCA9IG1lYXN1cmVtZW50Lmluc3RhbmNlSUQsCisgICAg
ICAgICAgdGltZXJUeXBlID0gbWVhc3VyZW1lbnQudGltZXJUeXBlOworCisgICAgICBpZiAodGlt
ZXJUeXBlICE9PSAncmVuZGVyJykgeworICAgICAgICByZXR1cm47CisgICAgICB9CisgICAgICB1
cGRhdGVBZ2dyZWdhdGVkU3RhdHModHJlZVNuYXBzaG90LCBpbnN0YW5jZUlELCBmdW5jdGlvbiAo
c3RhdHMpIHsKKyAgICAgICAgc3RhdHMucmVuZGVyQ291bnQrKzsKKyAgICAgIH0pOworICAgICAg
dmFyIG5leHRQYXJlbnRJRCA9IGluc3RhbmNlSUQ7CisgICAgICB3aGlsZSAobmV4dFBhcmVudElE
KSB7CisgICAgICAgIC8vIEFzIHdlIHRyYXZlcnNlIHBhcmVudHMsIG9ubHkgY291bnQgaW5jbHVz
aXZlIHRpbWUgdG93YXJkcyBjb21wb3NpdGVzLgorICAgICAgICAvLyBXZSBrbm93IHNvbWV0aGlu
ZyBpcyBhIGNvbXBvc2l0ZSBpZiBpdHMgcmVuZGVyKCkgd2FzIGNhbGxlZC4KKyAgICAgICAgaWYg
KGlzQ29tcG9zaXRlQnlJRFtuZXh0UGFyZW50SURdKSB7CisgICAgICAgICAgdXBkYXRlQWdncmVn
YXRlZFN0YXRzKHRyZWVTbmFwc2hvdCwgbmV4dFBhcmVudElELCBmdW5jdGlvbiAoc3RhdHMpIHsK
KyAgICAgICAgICAgIHN0YXRzLmluY2x1c2l2ZVJlbmRlckR1cmF0aW9uICs9IGR1cmF0aW9uOwor
ICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgICAgIG5leHRQYXJlbnRJRCA9IHRyZWVTbmFw
c2hvdFtuZXh0UGFyZW50SURdLnBhcmVudElEOworICAgICAgfQorICAgIH0pOworICB9KTsKKwor
ICByZXR1cm4gT2JqZWN0LmtleXMoYWdncmVnYXRlZFN0YXRzKS5tYXAoZnVuY3Rpb24gKGtleSkg
eworICAgIHJldHVybiBfZXh0ZW5kcyh7fSwgYWdncmVnYXRlZFN0YXRzW2tleV0sIHsKKyAgICAg
IGluc3RhbmNlQ291bnQ6IE9iamVjdC5rZXlzKGFmZmVjdGVkSURzW2tleV0pLmxlbmd0aAorICAg
IH0pOworICB9KS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7CisgICAgcmV0dXJuIGIuaW5jbHVzaXZl
UmVuZGVyRHVyYXRpb24gLSBhLmluY2x1c2l2ZVJlbmRlckR1cmF0aW9uOworICB9KTsKK30KKwor
ZnVuY3Rpb24gZ2V0V2FzdGVkKCkgeworICB2YXIgZmx1c2hIaXN0b3J5ID0gYXJndW1lbnRzLmxl
bmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiBn
ZXRMYXN0TWVhc3VyZW1lbnRzKCk7CisKKyAgaWYgKCEoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1
Y3Rpb24nKSkgeworICAgIHdhcm5JblByb2R1Y3Rpb24oKTsKKyAgICByZXR1cm4gW107CisgIH0K
KworICB2YXIgYWdncmVnYXRlZFN0YXRzID0ge307CisgIHZhciBhZmZlY3RlZElEcyA9IHt9Owor
CisgIGZ1bmN0aW9uIHVwZGF0ZUFnZ3JlZ2F0ZWRTdGF0cyh0cmVlU25hcHNob3QsIGluc3RhbmNl
SUQsIGFwcGx5VXBkYXRlKSB7CisgICAgdmFyIF90cmVlU25hcHNob3QkaW5zdGFuYzIgPSB0cmVl
U25hcHNob3RbaW5zdGFuY2VJRF0sCisgICAgICAgIGRpc3BsYXlOYW1lID0gX3RyZWVTbmFwc2hv
dCRpbnN0YW5jMi5kaXNwbGF5TmFtZSwKKyAgICAgICAgb3duZXJJRCA9IF90cmVlU25hcHNob3Qk
aW5zdGFuYzIub3duZXJJRDsKKworICAgIHZhciBvd25lciA9IHRyZWVTbmFwc2hvdFtvd25lcklE
XTsKKyAgICB2YXIga2V5ID0gKG93bmVyID8gb3duZXIuZGlzcGxheU5hbWUgKyAnID4gJyA6ICcn
KSArIGRpc3BsYXlOYW1lOworICAgIHZhciBzdGF0cyA9IGFnZ3JlZ2F0ZWRTdGF0c1trZXldOwor
ICAgIGlmICghc3RhdHMpIHsKKyAgICAgIGFmZmVjdGVkSURzW2tleV0gPSB7fTsKKyAgICAgIHN0
YXRzID0gYWdncmVnYXRlZFN0YXRzW2tleV0gPSB7CisgICAgICAgIGtleToga2V5LAorICAgICAg
ICBpbnN0YW5jZUNvdW50OiAwLAorICAgICAgICBpbmNsdXNpdmVSZW5kZXJEdXJhdGlvbjogMCwK
KyAgICAgICAgcmVuZGVyQ291bnQ6IDAKKyAgICAgIH07CisgICAgfQorICAgIGFmZmVjdGVkSURz
W2tleV1baW5zdGFuY2VJRF0gPSB0cnVlOworICAgIGFwcGx5VXBkYXRlKHN0YXRzKTsKKyAgfQor
CisgIGZsdXNoSGlzdG9yeS5mb3JFYWNoKGZ1bmN0aW9uIChmbHVzaCkgeworICAgIHZhciBtZWFz
dXJlbWVudHMgPSBmbHVzaC5tZWFzdXJlbWVudHMsCisgICAgICAgIHRyZWVTbmFwc2hvdCA9IGZs
dXNoLnRyZWVTbmFwc2hvdCwKKyAgICAgICAgb3BlcmF0aW9ucyA9IGZsdXNoLm9wZXJhdGlvbnM7
CisKKyAgICB2YXIgaXNEZWZpbml0ZWx5Tm90V2FzdGVkQnlJRCA9IHt9OworCisgICAgLy8gRmlu
ZCBob3N0IGNvbXBvbmVudHMgYXNzb2NpYXRlZCB3aXRoIGFuIG9wZXJhdGlvbiBpbiB0aGlzIGJh
dGNoLgorICAgIC8vIE1hcmsgYWxsIGNvbXBvbmVudHMgaW4gdGhlaXIgcGFyZW50IHRyZWUgYXMg
ZGVmaW5pdGVseSBub3Qgd2FzdGVkLgorICAgIG9wZXJhdGlvbnMuZm9yRWFjaChmdW5jdGlvbiAo
b3BlcmF0aW9uKSB7CisgICAgICB2YXIgaW5zdGFuY2VJRCA9IG9wZXJhdGlvbi5pbnN0YW5jZUlE
OworCisgICAgICB2YXIgbmV4dFBhcmVudElEID0gaW5zdGFuY2VJRDsKKyAgICAgIHdoaWxlIChu
ZXh0UGFyZW50SUQpIHsKKyAgICAgICAgaXNEZWZpbml0ZWx5Tm90V2FzdGVkQnlJRFtuZXh0UGFy
ZW50SURdID0gdHJ1ZTsKKyAgICAgICAgbmV4dFBhcmVudElEID0gdHJlZVNuYXBzaG90W25leHRQ
YXJlbnRJRF0ucGFyZW50SUQ7CisgICAgICB9CisgICAgfSk7CisKKyAgICAvLyBGaW5kIGNvbXBv
c2l0ZSBjb21wb25lbnRzIHRoYXQgcmVuZGVyZWQgaW4gdGhpcyBiYXRjaC4KKyAgICAvLyBUaGVz
ZSBhcmUgcG90ZW50aWFsIGNhbmRpZGF0ZXMgZm9yIGJlaW5nIHdhc3RlZCByZW5kZXJzLgorICAg
IHZhciByZW5kZXJlZENvbXBvc2l0ZUlEcyA9IHt9OworICAgIG1lYXN1cmVtZW50cy5mb3JFYWNo
KGZ1bmN0aW9uIChtZWFzdXJlbWVudCkgeworICAgICAgdmFyIGluc3RhbmNlSUQgPSBtZWFzdXJl
bWVudC5pbnN0YW5jZUlELAorICAgICAgICAgIHRpbWVyVHlwZSA9IG1lYXN1cmVtZW50LnRpbWVy
VHlwZTsKKworICAgICAgaWYgKHRpbWVyVHlwZSAhPT0gJ3JlbmRlcicpIHsKKyAgICAgICAgcmV0
dXJuOworICAgICAgfQorICAgICAgcmVuZGVyZWRDb21wb3NpdGVJRHNbaW5zdGFuY2VJRF0gPSB0
cnVlOworICAgIH0pOworCisgICAgbWVhc3VyZW1lbnRzLmZvckVhY2goZnVuY3Rpb24gKG1lYXN1
cmVtZW50KSB7CisgICAgICB2YXIgZHVyYXRpb24gPSBtZWFzdXJlbWVudC5kdXJhdGlvbiwKKyAg
ICAgICAgICBpbnN0YW5jZUlEID0gbWVhc3VyZW1lbnQuaW5zdGFuY2VJRCwKKyAgICAgICAgICB0
aW1lclR5cGUgPSBtZWFzdXJlbWVudC50aW1lclR5cGU7CisKKyAgICAgIGlmICh0aW1lclR5cGUg
IT09ICdyZW5kZXInKSB7CisgICAgICAgIHJldHVybjsKKyAgICAgIH0KKworICAgICAgLy8gSWYg
dGhlcmUgd2FzIGEgRE9NIHVwZGF0ZSBiZWxvdyB0aGlzIGNvbXBvbmVudCwgb3IgaXQgaGFzIGp1
c3QgYmVlbgorICAgICAgLy8gbW91bnRlZCwgaXRzIHJlbmRlcigpIGlzIG5vdCBjb25zaWRlcmVk
IHdhc3RlZC4KKyAgICAgIHZhciB1cGRhdGVDb3VudCA9IHRyZWVTbmFwc2hvdFtpbnN0YW5jZUlE
XS51cGRhdGVDb3VudDsKKworICAgICAgaWYgKGlzRGVmaW5pdGVseU5vdFdhc3RlZEJ5SURbaW5z
dGFuY2VJRF0gfHwgdXBkYXRlQ291bnQgPT09IDApIHsKKyAgICAgICAgcmV0dXJuOworICAgICAg
fQorCisgICAgICAvLyBXZSBjb25zaWRlciB0aGlzIHJlbmRlcigpIHdhc3RlZC4KKyAgICAgIHVw
ZGF0ZUFnZ3JlZ2F0ZWRTdGF0cyh0cmVlU25hcHNob3QsIGluc3RhbmNlSUQsIGZ1bmN0aW9uIChz
dGF0cykgeworICAgICAgICBzdGF0cy5yZW5kZXJDb3VudCsrOworICAgICAgfSk7CisKKyAgICAg
IHZhciBuZXh0UGFyZW50SUQgPSBpbnN0YW5jZUlEOworICAgICAgd2hpbGUgKG5leHRQYXJlbnRJ
RCkgeworICAgICAgICAvLyBBbnkgcGFyZW50cyByZW5kZXJlZCBkdXJpbmcgdGhpcyBiYXRjaCBh
cmUgY29uc2lkZXJlZCB3YXN0ZWQKKyAgICAgICAgLy8gdW5sZXNzIHdlIHByZXZpb3VzbHkgbWFy
a2VkIHRoZW0gYXMgZGlydHkuCisgICAgICAgIHZhciBpc1dhc3RlZCA9IHJlbmRlcmVkQ29tcG9z
aXRlSURzW25leHRQYXJlbnRJRF0gJiYgIWlzRGVmaW5pdGVseU5vdFdhc3RlZEJ5SURbbmV4dFBh
cmVudElEXTsKKyAgICAgICAgaWYgKGlzV2FzdGVkKSB7CisgICAgICAgICAgdXBkYXRlQWdncmVn
YXRlZFN0YXRzKHRyZWVTbmFwc2hvdCwgbmV4dFBhcmVudElELCBmdW5jdGlvbiAoc3RhdHMpIHsK
KyAgICAgICAgICAgIHN0YXRzLmluY2x1c2l2ZVJlbmRlckR1cmF0aW9uICs9IGR1cmF0aW9uOwor
ICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgICAgIG5leHRQYXJlbnRJRCA9IHRyZWVTbmFw
c2hvdFtuZXh0UGFyZW50SURdLnBhcmVudElEOworICAgICAgfQorICAgIH0pOworICB9KTsKKwor
ICByZXR1cm4gT2JqZWN0LmtleXMoYWdncmVnYXRlZFN0YXRzKS5tYXAoZnVuY3Rpb24gKGtleSkg
eworICAgIHJldHVybiBfZXh0ZW5kcyh7fSwgYWdncmVnYXRlZFN0YXRzW2tleV0sIHsKKyAgICAg
IGluc3RhbmNlQ291bnQ6IE9iamVjdC5rZXlzKGFmZmVjdGVkSURzW2tleV0pLmxlbmd0aAorICAg
IH0pOworICB9KS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7CisgICAgcmV0dXJuIGIuaW5jbHVzaXZl
UmVuZGVyRHVyYXRpb24gLSBhLmluY2x1c2l2ZVJlbmRlckR1cmF0aW9uOworICB9KTsKK30KKwor
ZnVuY3Rpb24gZ2V0T3BlcmF0aW9ucygpIHsKKyAgdmFyIGZsdXNoSGlzdG9yeSA9IGFyZ3VtZW50
cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBd
IDogZ2V0TGFzdE1lYXN1cmVtZW50cygpOworCisgIGlmICghKCJkZXZlbG9wbWVudCIgIT09ICdw
cm9kdWN0aW9uJykpIHsKKyAgICB3YXJuSW5Qcm9kdWN0aW9uKCk7CisgICAgcmV0dXJuIFtdOwor
ICB9CisKKyAgdmFyIHN0YXRzID0gW107CisgIGZsdXNoSGlzdG9yeS5mb3JFYWNoKGZ1bmN0aW9u
IChmbHVzaCwgZmx1c2hJbmRleCkgeworICAgIHZhciBvcGVyYXRpb25zID0gZmx1c2gub3BlcmF0
aW9ucywKKyAgICAgICAgdHJlZVNuYXBzaG90ID0gZmx1c2gudHJlZVNuYXBzaG90OworCisgICAg
b3BlcmF0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uIChvcGVyYXRpb24pIHsKKyAgICAgIHZhciBpbnN0
YW5jZUlEID0gb3BlcmF0aW9uLmluc3RhbmNlSUQsCisgICAgICAgICAgdHlwZSA9IG9wZXJhdGlv
bi50eXBlLAorICAgICAgICAgIHBheWxvYWQgPSBvcGVyYXRpb24ucGF5bG9hZDsKKyAgICAgIHZh
ciBfdHJlZVNuYXBzaG90JGluc3RhbmMzID0gdHJlZVNuYXBzaG90W2luc3RhbmNlSURdLAorICAg
ICAgICAgIGRpc3BsYXlOYW1lID0gX3RyZWVTbmFwc2hvdCRpbnN0YW5jMy5kaXNwbGF5TmFtZSwK
KyAgICAgICAgICBvd25lcklEID0gX3RyZWVTbmFwc2hvdCRpbnN0YW5jMy5vd25lcklEOworCisg
ICAgICB2YXIgb3duZXIgPSB0cmVlU25hcHNob3Rbb3duZXJJRF07CisgICAgICB2YXIga2V5ID0g
KG93bmVyID8gb3duZXIuZGlzcGxheU5hbWUgKyAnID4gJyA6ICcnKSArIGRpc3BsYXlOYW1lOwor
CisgICAgICBzdGF0cy5wdXNoKHsKKyAgICAgICAgZmx1c2hJbmRleDogZmx1c2hJbmRleCwKKyAg
ICAgICAgaW5zdGFuY2VJRDogaW5zdGFuY2VJRCwKKyAgICAgICAga2V5OiBrZXksCisgICAgICAg
IHR5cGU6IHR5cGUsCisgICAgICAgIG93bmVySUQ6IG93bmVySUQsCisgICAgICAgIHBheWxvYWQ6
IHBheWxvYWQKKyAgICAgIH0pOworICAgIH0pOworICB9KTsKKyAgcmV0dXJuIHN0YXRzOworfQor
CitmdW5jdGlvbiBwcmludEV4Y2x1c2l2ZShmbHVzaEhpc3RvcnkpIHsKKyAgaWYgKCEoImRldmVs
b3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSkgeworICAgIHdhcm5JblByb2R1Y3Rpb24oKTsKKyAg
ICByZXR1cm47CisgIH0KKworICB2YXIgc3RhdHMgPSBnZXRFeGNsdXNpdmUoZmx1c2hIaXN0b3J5
KTsKKyAgdmFyIHRhYmxlID0gc3RhdHMubWFwKGZ1bmN0aW9uIChpdGVtKSB7CisgICAgdmFyIGtl
eSA9IGl0ZW0ua2V5LAorICAgICAgICBpbnN0YW5jZUNvdW50ID0gaXRlbS5pbnN0YW5jZUNvdW50
LAorICAgICAgICB0b3RhbER1cmF0aW9uID0gaXRlbS50b3RhbER1cmF0aW9uOworCisgICAgdmFy
IHJlbmRlckNvdW50ID0gaXRlbS5jb3VudHMucmVuZGVyIHx8IDA7CisgICAgdmFyIHJlbmRlckR1
cmF0aW9uID0gaXRlbS5kdXJhdGlvbnMucmVuZGVyIHx8IDA7CisgICAgcmV0dXJuIHsKKyAgICAg
ICdDb21wb25lbnQnOiBrZXksCisgICAgICAnVG90YWwgdGltZSAobXMpJzogcm91bmRGbG9hdCh0
b3RhbER1cmF0aW9uKSwKKyAgICAgICdJbnN0YW5jZSBjb3VudCc6IGluc3RhbmNlQ291bnQsCisg
ICAgICAnVG90YWwgcmVuZGVyIHRpbWUgKG1zKSc6IHJvdW5kRmxvYXQocmVuZGVyRHVyYXRpb24p
LAorICAgICAgJ0F2ZXJhZ2UgcmVuZGVyIHRpbWUgKG1zKSc6IHJlbmRlckNvdW50ID8gcm91bmRG
bG9hdChyZW5kZXJEdXJhdGlvbiAvIHJlbmRlckNvdW50KSA6IHVuZGVmaW5lZCwKKyAgICAgICdS
ZW5kZXIgY291bnQnOiByZW5kZXJDb3VudCwKKyAgICAgICdUb3RhbCBsaWZlY3ljbGUgdGltZSAo
bXMpJzogcm91bmRGbG9hdCh0b3RhbER1cmF0aW9uIC0gcmVuZGVyRHVyYXRpb24pCisgICAgfTsK
KyAgfSk7CisgIGNvbnNvbGVUYWJsZSh0YWJsZSk7Cit9CisKK2Z1bmN0aW9uIHByaW50SW5jbHVz
aXZlKGZsdXNoSGlzdG9yeSkgeworICBpZiAoISgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlv
bicpKSB7CisgICAgd2FybkluUHJvZHVjdGlvbigpOworICAgIHJldHVybjsKKyAgfQorCisgIHZh
ciBzdGF0cyA9IGdldEluY2x1c2l2ZShmbHVzaEhpc3RvcnkpOworICB2YXIgdGFibGUgPSBzdGF0
cy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKKyAgICB2YXIga2V5ID0gaXRlbS5rZXksCisgICAgICAg
IGluc3RhbmNlQ291bnQgPSBpdGVtLmluc3RhbmNlQ291bnQsCisgICAgICAgIGluY2x1c2l2ZVJl
bmRlckR1cmF0aW9uID0gaXRlbS5pbmNsdXNpdmVSZW5kZXJEdXJhdGlvbiwKKyAgICAgICAgcmVu
ZGVyQ291bnQgPSBpdGVtLnJlbmRlckNvdW50OworCisgICAgcmV0dXJuIHsKKyAgICAgICdPd25l
ciA+IENvbXBvbmVudCc6IGtleSwKKyAgICAgICdJbmNsdXNpdmUgcmVuZGVyIHRpbWUgKG1zKSc6
IHJvdW5kRmxvYXQoaW5jbHVzaXZlUmVuZGVyRHVyYXRpb24pLAorICAgICAgJ0luc3RhbmNlIGNv
dW50JzogaW5zdGFuY2VDb3VudCwKKyAgICAgICdSZW5kZXIgY291bnQnOiByZW5kZXJDb3VudAor
ICAgIH07CisgIH0pOworICBjb25zb2xlVGFibGUodGFibGUpOworfQorCitmdW5jdGlvbiBwcmlu
dFdhc3RlZChmbHVzaEhpc3RvcnkpIHsKKyAgaWYgKCEoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1
Y3Rpb24nKSkgeworICAgIHdhcm5JblByb2R1Y3Rpb24oKTsKKyAgICByZXR1cm47CisgIH0KKwor
ICB2YXIgc3RhdHMgPSBnZXRXYXN0ZWQoZmx1c2hIaXN0b3J5KTsKKyAgdmFyIHRhYmxlID0gc3Rh
dHMubWFwKGZ1bmN0aW9uIChpdGVtKSB7CisgICAgdmFyIGtleSA9IGl0ZW0ua2V5LAorICAgICAg
ICBpbnN0YW5jZUNvdW50ID0gaXRlbS5pbnN0YW5jZUNvdW50LAorICAgICAgICBpbmNsdXNpdmVS
ZW5kZXJEdXJhdGlvbiA9IGl0ZW0uaW5jbHVzaXZlUmVuZGVyRHVyYXRpb24sCisgICAgICAgIHJl
bmRlckNvdW50ID0gaXRlbS5yZW5kZXJDb3VudDsKKworICAgIHJldHVybiB7CisgICAgICAnT3du
ZXIgPiBDb21wb25lbnQnOiBrZXksCisgICAgICAnSW5jbHVzaXZlIHdhc3RlZCB0aW1lIChtcykn
OiByb3VuZEZsb2F0KGluY2x1c2l2ZVJlbmRlckR1cmF0aW9uKSwKKyAgICAgICdJbnN0YW5jZSBj
b3VudCc6IGluc3RhbmNlQ291bnQsCisgICAgICAnUmVuZGVyIGNvdW50JzogcmVuZGVyQ291bnQK
KyAgICB9OworICB9KTsKKyAgY29uc29sZVRhYmxlKHRhYmxlKTsKK30KKworZnVuY3Rpb24gcHJp
bnRPcGVyYXRpb25zKGZsdXNoSGlzdG9yeSkgeworICBpZiAoISgiZGV2ZWxvcG1lbnQiICE9PSAn
cHJvZHVjdGlvbicpKSB7CisgICAgd2FybkluUHJvZHVjdGlvbigpOworICAgIHJldHVybjsKKyAg
fQorCisgIHZhciBzdGF0cyA9IGdldE9wZXJhdGlvbnMoZmx1c2hIaXN0b3J5KTsKKyAgdmFyIHRh
YmxlID0gc3RhdHMubWFwKGZ1bmN0aW9uIChzdGF0KSB7CisgICAgcmV0dXJuIHsKKyAgICAgICdP
d25lciA+IE5vZGUnOiBzdGF0LmtleSwKKyAgICAgICdPcGVyYXRpb24nOiBzdGF0LnR5cGUsCisg
ICAgICAnUGF5bG9hZCc6IHR5cGVvZiBzdGF0LnBheWxvYWQgPT09ICdvYmplY3QnID8gSlNPTi5z
dHJpbmdpZnkoc3RhdC5wYXlsb2FkKSA6IHN0YXQucGF5bG9hZCwKKyAgICAgICdGbHVzaCBpbmRl
eCc6IHN0YXQuZmx1c2hJbmRleCwKKyAgICAgICdPd25lciBDb21wb25lbnQgSUQnOiBzdGF0Lm93
bmVySUQsCisgICAgICAnRE9NIENvbXBvbmVudCBJRCc6IHN0YXQuaW5zdGFuY2VJRAorICAgIH07
CisgIH0pOworICBjb25zb2xlVGFibGUodGFibGUpOworfQorCit2YXIgd2FybmVkQWJvdXRQcmlu
dERPTSA9IGZhbHNlOworZnVuY3Rpb24gcHJpbnRET00obWVhc3VyZW1lbnRzKSB7CisgICJkZXZl
bG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcod2FybmVkQWJvdXRQcmludERPTSwg
J2BSZWFjdFBlcmYucHJpbnRET00oLi4uKWAgaXMgZGVwcmVjYXRlZC4gVXNlICcgKyAnYFJlYWN0
UGVyZi5wcmludE9wZXJhdGlvbnMoLi4uKWAgaW5zdGVhZC4nKSA6IHZvaWQgMDsKKyAgd2FybmVk
QWJvdXRQcmludERPTSA9IHRydWU7CisgIHJldHVybiBwcmludE9wZXJhdGlvbnMobWVhc3VyZW1l
bnRzKTsKK30KKwordmFyIHdhcm5lZEFib3V0R2V0TWVhc3VyZW1lbnRzU3VtbWFyeU1hcCA9IGZh
bHNlOworZnVuY3Rpb24gZ2V0TWVhc3VyZW1lbnRzU3VtbWFyeU1hcChtZWFzdXJlbWVudHMpIHsK
KyAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyh3YXJuZWRBYm91dEdl
dE1lYXN1cmVtZW50c1N1bW1hcnlNYXAsICdgUmVhY3RQZXJmLmdldE1lYXN1cmVtZW50c1N1bW1h
cnlNYXAoLi4uKWAgaXMgZGVwcmVjYXRlZC4gVXNlICcgKyAnYFJlYWN0UGVyZi5nZXRXYXN0ZWQo
Li4uKWAgaW5zdGVhZC4nKSA6IHZvaWQgMDsKKyAgd2FybmVkQWJvdXRHZXRNZWFzdXJlbWVudHNT
dW1tYXJ5TWFwID0gdHJ1ZTsKKyAgcmV0dXJuIGdldFdhc3RlZChtZWFzdXJlbWVudHMpOworfQor
CitmdW5jdGlvbiBzdGFydCgpIHsKKyAgaWYgKCEoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rp
b24nKSkgeworICAgIHdhcm5JblByb2R1Y3Rpb24oKTsKKyAgICByZXR1cm47CisgIH0KKworICBS
ZWFjdERlYnVnVG9vbC5iZWdpblByb2ZpbGluZygpOworfQorCitmdW5jdGlvbiBzdG9wKCkgewor
ICBpZiAoISgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpKSB7CisgICAgd2FybkluUHJv
ZHVjdGlvbigpOworICAgIHJldHVybjsKKyAgfQorCisgIFJlYWN0RGVidWdUb29sLmVuZFByb2Zp
bGluZygpOworfQorCitmdW5jdGlvbiBpc1J1bm5pbmcoKSB7CisgIGlmICghKCJkZXZlbG9wbWVu
dCIgIT09ICdwcm9kdWN0aW9uJykpIHsKKyAgICB3YXJuSW5Qcm9kdWN0aW9uKCk7CisgICAgcmV0
dXJuIGZhbHNlOworICB9CisKKyAgcmV0dXJuIFJlYWN0RGVidWdUb29sLmlzUHJvZmlsaW5nKCk7
Cit9CisKK3ZhciBSZWFjdFBlcmZBbmFseXNpcyA9IHsKKyAgZ2V0TGFzdE1lYXN1cmVtZW50czog
Z2V0TGFzdE1lYXN1cmVtZW50cywKKyAgZ2V0RXhjbHVzaXZlOiBnZXRFeGNsdXNpdmUsCisgIGdl
dEluY2x1c2l2ZTogZ2V0SW5jbHVzaXZlLAorICBnZXRXYXN0ZWQ6IGdldFdhc3RlZCwKKyAgZ2V0
T3BlcmF0aW9uczogZ2V0T3BlcmF0aW9ucywKKyAgcHJpbnRFeGNsdXNpdmU6IHByaW50RXhjbHVz
aXZlLAorICBwcmludEluY2x1c2l2ZTogcHJpbnRJbmNsdXNpdmUsCisgIHByaW50V2FzdGVkOiBw
cmludFdhc3RlZCwKKyAgcHJpbnRPcGVyYXRpb25zOiBwcmludE9wZXJhdGlvbnMsCisgIHN0YXJ0
OiBzdGFydCwKKyAgc3RvcDogc3RvcCwKKyAgaXNSdW5uaW5nOiBpc1J1bm5pbmcsCisgIC8vIERl
cHJlY2F0ZWQ6CisgIHByaW50RE9NOiBwcmludERPTSwKKyAgZ2V0TWVhc3VyZW1lbnRzU3VtbWFy
eU1hcDogZ2V0TWVhc3VyZW1lbnRzU3VtbWFyeU1hcAorfTsKKworbW9kdWxlLmV4cG9ydHMgPSBS
ZWFjdFBlcmZBbmFseXNpczsKK30seyIxNTciOjE1NywiMTU4IjoxNTgsIjUwIjo1MH1dLDcyOltm
dW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMt
cHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
VGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2Ug
Zm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRo
aXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMg
Y2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Lgor
ICoKKyAqIAorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIFJlYWN0UHJvcFR5cGVMb2NhdGlv
bk5hbWVzID0ge307CisKK2lmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAg
UmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXMgPSB7CisgICAgcHJvcDogJ3Byb3AnLAorICAgIGNv
bnRleHQ6ICdjb250ZXh0JywKKyAgICBjaGlsZENvbnRleHQ6ICdjaGlsZCBjb250ZXh0JworICB9
OworfQorCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzOworfSx7
fV0sNzM6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmln
aHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUg
bGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rv
cnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50
IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJl
Y3RvcnkuCisgKgorICogCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgUmVhY3RQcm9wVHlw
ZXNTZWNyZXQgPSAnU0VDUkVUX0RPX05PVF9QQVNTX1RISVNfT1JfWU9VX1dJTExfQkVfRklSRUQn
OworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0UHJvcFR5cGVzU2VjcmV0OworfSx7fV0sNzQ6W2Z1
bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1w
cmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBU
aGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBm
b3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBj
YW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisg
KgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9hc3NpZ24gPSBfZGVyZXFfKDE1OCk7CisK
K3ZhciBDYWxsYmFja1F1ZXVlID0gX2RlcmVxXyg2KTsKK3ZhciBQb29sZWRDbGFzcyA9IF9kZXJl
cV8oMjUpOwordmFyIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlciA9IF9kZXJlcV8oMjYpOwordmFy
IFJlYWN0SW5wdXRTZWxlY3Rpb24gPSBfZGVyZXFfKDYyKTsKK3ZhciBSZWFjdEluc3RydW1lbnRh
dGlvbiA9IF9kZXJlcV8oNjQpOwordmFyIFRyYW5zYWN0aW9uID0gX2RlcmVxXygxMDApOwordmFy
IFJlYWN0VXBkYXRlUXVldWUgPSBfZGVyZXFfKDgxKTsKKworLyoqCisgKiBFbnN1cmVzIHRoYXQs
IHdoZW4gcG9zc2libGUsIHRoZSBzZWxlY3Rpb24gcmFuZ2UgKGN1cnJlbnRseSBzZWxlY3RlZCB0
ZXh0CisgKiBpbnB1dCkgaXMgbm90IGRpc3R1cmJlZCBieSBwZXJmb3JtaW5nIHRoZSB0cmFuc2Fj
dGlvbi4KKyAqLwordmFyIFNFTEVDVElPTl9SRVNUT1JBVElPTiA9IHsKKyAgLyoqCisgICAqIEBy
ZXR1cm4ge1NlbGVjdGlvbn0gU2VsZWN0aW9uIGluZm9ybWF0aW9uLgorICAgKi8KKyAgaW5pdGlh
bGl6ZTogUmVhY3RJbnB1dFNlbGVjdGlvbi5nZXRTZWxlY3Rpb25JbmZvcm1hdGlvbiwKKyAgLyoq
CisgICAqIEBwYXJhbSB7U2VsZWN0aW9ufSBzZWwgU2VsZWN0aW9uIGluZm9ybWF0aW9uIHJldHVy
bmVkIGZyb20gYGluaXRpYWxpemVgLgorICAgKi8KKyAgY2xvc2U6IFJlYWN0SW5wdXRTZWxlY3Rp
b24ucmVzdG9yZVNlbGVjdGlvbgorfTsKKworLyoqCisgKiBTdXBwcmVzc2VzIGV2ZW50cyAoYmx1
ci9mb2N1cykgdGhhdCBjb3VsZCBiZSBpbmFkdmVydGVudGx5IGRpc3BhdGNoZWQgZHVlIHRvCisg
KiBoaWdoIGxldmVsIERPTSBtYW5pcHVsYXRpb25zIChsaWtlIHRlbXBvcmFyaWx5IHJlbW92aW5n
IGEgdGV4dCBpbnB1dCBmcm9tIHRoZQorICogRE9NKS4KKyAqLwordmFyIEVWRU5UX1NVUFBSRVNT
SU9OID0geworICAvKioKKyAgICogQHJldHVybiB7Ym9vbGVhbn0gVGhlIGVuYWJsZWQgc3RhdHVz
IG9mIGBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXJgIGJlZm9yZQorICAgKiB0aGUgcmVjb25jaWxp
YXRpb24uCisgICAqLworICBpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7CisgICAgdmFyIGN1cnJl
bnRseUVuYWJsZWQgPSBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuaXNFbmFibGVkKCk7CisgICAg
UmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLnNldEVuYWJsZWQoZmFsc2UpOworICAgIHJldHVybiBj
dXJyZW50bHlFbmFibGVkOworICB9LAorCisgIC8qKgorICAgKiBAcGFyYW0ge2Jvb2xlYW59IHBy
ZXZpb3VzbHlFbmFibGVkIEVuYWJsZWQgc3RhdHVzIG9mCisgICAqICAgYFJlYWN0QnJvd3NlckV2
ZW50RW1pdHRlcmAgYmVmb3JlIHRoZSByZWNvbmNpbGlhdGlvbiBvY2N1cnJlZC4gYGNsb3NlYAor
ICAgKiAgIHJlc3RvcmVzIHRoZSBwcmV2aW91cyB2YWx1ZS4KKyAgICovCisgIGNsb3NlOiBmdW5j
dGlvbiAocHJldmlvdXNseUVuYWJsZWQpIHsKKyAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIu
c2V0RW5hYmxlZChwcmV2aW91c2x5RW5hYmxlZCk7CisgIH0KK307CisKKy8qKgorICogUHJvdmlk
ZXMgYSBxdWV1ZSBmb3IgY29sbGVjdGluZyBgY29tcG9uZW50RGlkTW91bnRgIGFuZAorICogYGNv
bXBvbmVudERpZFVwZGF0ZWAgY2FsbGJhY2tzIGR1cmluZyB0aGUgdHJhbnNhY3Rpb24uCisgKi8K
K3ZhciBPTl9ET01fUkVBRFlfUVVFVUVJTkcgPSB7CisgIC8qKgorICAgKiBJbml0aWFsaXplcyB0
aGUgaW50ZXJuYWwgYG9uRE9NUmVhZHlgIHF1ZXVlLgorICAgKi8KKyAgaW5pdGlhbGl6ZTogZnVu
Y3Rpb24gKCkgeworICAgIHRoaXMucmVhY3RNb3VudFJlYWR5LnJlc2V0KCk7CisgIH0sCisKKyAg
LyoqCisgICAqIEFmdGVyIERPTSBpcyBmbHVzaGVkLCBpbnZva2UgYWxsIHJlZ2lzdGVyZWQgYG9u
RE9NUmVhZHlgIGNhbGxiYWNrcy4KKyAgICovCisgIGNsb3NlOiBmdW5jdGlvbiAoKSB7CisgICAg
dGhpcy5yZWFjdE1vdW50UmVhZHkubm90aWZ5QWxsKCk7CisgIH0KK307CisKKy8qKgorICogRXhl
Y3V0ZWQgd2l0aGluIHRoZSBzY29wZSBvZiB0aGUgYFRyYW5zYWN0aW9uYCBpbnN0YW5jZS4gQ29u
c2lkZXIgdGhlc2UgYXMKKyAqIGJlaW5nIG1lbWJlciBtZXRob2RzLCBidXQgd2l0aCBhbiBpbXBs
aWVkIG9yZGVyaW5nIHdoaWxlIGJlaW5nIGlzb2xhdGVkIGZyb20KKyAqIGVhY2ggb3RoZXIuCisg
Ki8KK3ZhciBUUkFOU0FDVElPTl9XUkFQUEVSUyA9IFtTRUxFQ1RJT05fUkVTVE9SQVRJT04sIEVW
RU5UX1NVUFBSRVNTSU9OLCBPTl9ET01fUkVBRFlfUVVFVUVJTkddOworCitpZiAoImRldmVsb3Bt
ZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgIFRSQU5TQUNUSU9OX1dSQVBQRVJTLnB1c2goewor
ICAgIGluaXRpYWxpemU6IFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkJlZ2luRmx1
c2gsCisgICAgY2xvc2U6IFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkVuZEZsdXNo
CisgIH0pOworfQorCisvKioKKyAqIEN1cnJlbnRseToKKyAqIC0gVGhlIG9yZGVyIHRoYXQgdGhl
c2UgYXJlIGxpc3RlZCBpbiB0aGUgdHJhbnNhY3Rpb24gaXMgY3JpdGljYWw6CisgKiAtIFN1cHBy
ZXNzZXMgZXZlbnRzLgorICogLSBSZXN0b3JlcyBzZWxlY3Rpb24gcmFuZ2UuCisgKgorICogRnV0
dXJlOgorICogLSBSZXN0b3JlIGRvY3VtZW50L292ZXJmbG93IHNjcm9sbCBwb3NpdGlvbnMgdGhh
dCB3ZXJlIHVuaW50ZW50aW9uYWxseQorICogICBtb2RpZmllZCB2aWEgRE9NIGluc2VydGlvbnMg
YWJvdmUgdGhlIHRvcCB2aWV3cG9ydCBib3VuZGFyeS4KKyAqIC0gSW1wbGVtZW50L2ludGVncmF0
ZSB3aXRoIGN1c3RvbWl6ZWQgY29uc3RyYWludCBiYXNlZCBsYXlvdXQgc3lzdGVtIGFuZCBrZWVw
CisgKiAgIHRyYWNrIG9mIHdoaWNoIGRpbWVuc2lvbnMgbXVzdCBiZSByZW1lYXN1cmVkLgorICoK
KyAqIEBjbGFzcyBSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uCisgKi8KK2Z1bmN0aW9uIFJlYWN0
UmVjb25jaWxlVHJhbnNhY3Rpb24odXNlQ3JlYXRlRWxlbWVudCkgeworICB0aGlzLnJlaW5pdGlh
bGl6ZVRyYW5zYWN0aW9uKCk7CisgIC8vIE9ubHkgc2VydmVyLXNpZGUgcmVuZGVyaW5nIHJlYWxs
eSBuZWVkcyB0aGlzIG9wdGlvbiAoc2VlCisgIC8vIGBSZWFjdFNlcnZlclJlbmRlcmluZ2ApLCBi
dXQgc2VydmVyLXNpZGUgdXNlcworICAvLyBgUmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlv
bmAgaW5zdGVhZC4gVGhpcyBvcHRpb24gaXMgaGVyZSBzbyB0aGF0IGl0J3MKKyAgLy8gYWNjZXNz
aWJsZSBhbmQgZGVmYXVsdHMgdG8gZmFsc2Ugd2hlbiBgUmVhY3RET01Db21wb25lbnRgIGFuZAor
ICAvLyBgUmVhY3RET01UZXh0Q29tcG9uZW50YCBjaGVja3MgaXQgaW4gYG1vdW50Q29tcG9uZW50
YC5gCisgIHRoaXMucmVuZGVyVG9TdGF0aWNNYXJrdXAgPSBmYWxzZTsKKyAgdGhpcy5yZWFjdE1v
dW50UmVhZHkgPSBDYWxsYmFja1F1ZXVlLmdldFBvb2xlZChudWxsKTsKKyAgdGhpcy51c2VDcmVh
dGVFbGVtZW50ID0gdXNlQ3JlYXRlRWxlbWVudDsKK30KKwordmFyIE1peGluID0geworICAvKioK
KyAgICogQHNlZSBUcmFuc2FjdGlvbgorICAgKiBAYWJzdHJhY3QKKyAgICogQGZpbmFsCisgICAq
IEByZXR1cm4ge2FycmF5PG9iamVjdD59IExpc3Qgb2Ygb3BlcmF0aW9uIHdyYXAgcHJvY2VkdXJl
cy4KKyAgICogICBUT0RPOiBjb252ZXJ0IHRvIGFycmF5PFRyYW5zYWN0aW9uV3JhcHBlcj4KKyAg
ICovCisgIGdldFRyYW5zYWN0aW9uV3JhcHBlcnM6IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4g
VFJBTlNBQ1RJT05fV1JBUFBFUlM7CisgIH0sCisKKyAgLyoqCisgICAqIEByZXR1cm4ge29iamVj
dH0gVGhlIHF1ZXVlIHRvIGNvbGxlY3QgYG9uRE9NUmVhZHlgIGNhbGxiYWNrcyB3aXRoLgorICAg
Ki8KKyAgZ2V0UmVhY3RNb3VudFJlYWR5OiBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIHRoaXMu
cmVhY3RNb3VudFJlYWR5OworICB9LAorCisgIC8qKgorICAgKiBAcmV0dXJuIHtvYmplY3R9IFRo
ZSBxdWV1ZSB0byBjb2xsZWN0IFJlYWN0IGFzeW5jIGV2ZW50cy4KKyAgICovCisgIGdldFVwZGF0
ZVF1ZXVlOiBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIFJlYWN0VXBkYXRlUXVldWU7CisgIH0s
CisKKyAgLyoqCisgICAqIFNhdmUgY3VycmVudCB0cmFuc2FjdGlvbiBzdGF0ZSAtLSBpZiB0aGUg
cmV0dXJuIHZhbHVlIGZyb20gdGhpcyBtZXRob2QgaXMKKyAgICogcGFzc2VkIHRvIGByb2xsYmFj
a2AsIHRoZSB0cmFuc2FjdGlvbiB3aWxsIGJlIHJlc2V0IHRvIHRoYXQgc3RhdGUuCisgICAqLwor
ICBjaGVja3BvaW50OiBmdW5jdGlvbiAoKSB7CisgICAgLy8gcmVhY3RNb3VudFJlYWR5IGlzIHRo
ZSBvdXIgb25seSBzdGF0ZWZ1bCB3cmFwcGVyCisgICAgcmV0dXJuIHRoaXMucmVhY3RNb3VudFJl
YWR5LmNoZWNrcG9pbnQoKTsKKyAgfSwKKworICByb2xsYmFjazogZnVuY3Rpb24gKGNoZWNrcG9p
bnQpIHsKKyAgICB0aGlzLnJlYWN0TW91bnRSZWFkeS5yb2xsYmFjayhjaGVja3BvaW50KTsKKyAg
fSwKKworICAvKioKKyAgICogYFBvb2xlZENsYXNzYCBsb29rcyBmb3IgdGhpcywgYW5kIHdpbGwg
aW52b2tlIHRoaXMgYmVmb3JlIGFsbG93aW5nIHRoaXMKKyAgICogaW5zdGFuY2UgdG8gYmUgcmV1
c2VkLgorICAgKi8KKyAgZGVzdHJ1Y3RvcjogZnVuY3Rpb24gKCkgeworICAgIENhbGxiYWNrUXVl
dWUucmVsZWFzZSh0aGlzLnJlYWN0TW91bnRSZWFkeSk7CisgICAgdGhpcy5yZWFjdE1vdW50UmVh
ZHkgPSBudWxsOworICB9Cit9OworCitfYXNzaWduKFJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24u
cHJvdG90eXBlLCBUcmFuc2FjdGlvbiwgTWl4aW4pOworCitQb29sZWRDbGFzcy5hZGRQb29saW5n
VG8oUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbik7CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RS
ZWNvbmNpbGVUcmFuc2FjdGlvbjsKK30seyIxMDAiOjEwMCwiMTU4IjoxNTgsIjI1IjoyNSwiMjYi
OjI2LCI2Ijo2LCI2MiI6NjIsIjY0Ijo2NCwiODEiOjgxfV0sNzU6W2Z1bmN0aW9uKF9kZXJlcV8s
bW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9v
aywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAq
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4g
QW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ug
c3RyaWN0JzsKKwordmFyIFJlYWN0UmVmID0gX2RlcmVxXyg3Nik7Cit2YXIgUmVhY3RJbnN0cnVt
ZW50YXRpb24gPSBfZGVyZXFfKDY0KTsKKwordmFyIHdhcm5pbmcgPSBfZGVyZXFfKDE1Nyk7CisK
Ky8qKgorICogSGVscGVyIHRvIGNhbGwgUmVhY3RSZWYuYXR0YWNoUmVmcyB3aXRoIHRoaXMgY29t
cG9zaXRlIGNvbXBvbmVudCwgc3BsaXQgb3V0CisgKiB0byBhdm9pZCBhbGxvY2F0aW9ucyBpbiB0
aGUgdHJhbnNhY3Rpb24gbW91bnQtcmVhZHkgcXVldWUuCisgKi8KK2Z1bmN0aW9uIGF0dGFjaFJl
ZnMoKSB7CisgIFJlYWN0UmVmLmF0dGFjaFJlZnModGhpcywgdGhpcy5fY3VycmVudEVsZW1lbnQp
OworfQorCit2YXIgUmVhY3RSZWNvbmNpbGVyID0geworCisgIC8qKgorICAgKiBJbml0aWFsaXpl
cyB0aGUgY29tcG9uZW50LCByZW5kZXJzIG1hcmt1cCwgYW5kIHJlZ2lzdGVycyBldmVudCBsaXN0
ZW5lcnMuCisgICAqCisgICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGludGVybmFsSW5zdGFu
Y2UKKyAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufFJlYWN0U2VydmVyUmVu
ZGVyaW5nVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uCisgICAqIEBwYXJhbSB7P29iamVjdH0gdGhl
IGNvbnRhaW5pbmcgaG9zdCBjb21wb25lbnQgaW5zdGFuY2UKKyAgICogQHBhcmFtIHs/b2JqZWN0
fSBpbmZvIGFib3V0IHRoZSBob3N0IGNvbnRhaW5lcgorICAgKiBAcmV0dXJuIHs/c3RyaW5nfSBS
ZW5kZXJlZCBtYXJrdXAgdG8gYmUgaW5zZXJ0ZWQgaW50byB0aGUgRE9NLgorICAgKiBAZmluYWwK
KyAgICogQGludGVybmFsCisgICAqLworICBtb3VudENvbXBvbmVudDogZnVuY3Rpb24gKGludGVy
bmFsSW5zdGFuY2UsIHRyYW5zYWN0aW9uLCBob3N0UGFyZW50LCBob3N0Q29udGFpbmVySW5mbywg
Y29udGV4dCwgcGFyZW50RGVidWdJRCAvLyAwIGluIHByb2R1Y3Rpb24gYW5kIGZvciByb290cwor
ICApIHsKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICBp
ZiAoaW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCAhPT0gMCkgeworICAgICAgICBSZWFjdEluc3Ry
dW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25CZWZvcmVNb3VudENvbXBvbmVudChpbnRlcm5hbEluc3Rh
bmNlLl9kZWJ1Z0lELCBpbnRlcm5hbEluc3RhbmNlLl9jdXJyZW50RWxlbWVudCwgcGFyZW50RGVi
dWdJRCk7CisgICAgICB9CisgICAgfQorICAgIHZhciBtYXJrdXAgPSBpbnRlcm5hbEluc3RhbmNl
Lm1vdW50Q29tcG9uZW50KHRyYW5zYWN0aW9uLCBob3N0UGFyZW50LCBob3N0Q29udGFpbmVySW5m
bywgY29udGV4dCwgcGFyZW50RGVidWdJRCk7CisgICAgaWYgKGludGVybmFsSW5zdGFuY2UuX2N1
cnJlbnRFbGVtZW50ICYmIGludGVybmFsSW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50LnJlZiAhPSBu
dWxsKSB7CisgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGF0
dGFjaFJlZnMsIGludGVybmFsSW5zdGFuY2UpOworICAgIH0KKyAgICBpZiAoImRldmVsb3BtZW50
IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICBpZiAoaW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJ
RCAhPT0gMCkgeworICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25Nb3Vu
dENvbXBvbmVudChpbnRlcm5hbEluc3RhbmNlLl9kZWJ1Z0lEKTsKKyAgICAgIH0KKyAgICB9Cisg
ICAgcmV0dXJuIG1hcmt1cDsKKyAgfSwKKworICAvKioKKyAgICogUmV0dXJucyBhIHZhbHVlIHRo
YXQgY2FuIGJlIHBhc3NlZCB0bworICAgKiBSZWFjdENvbXBvbmVudEVudmlyb25tZW50LnJlcGxh
Y2VOb2RlV2l0aE1hcmt1cC4KKyAgICovCisgIGdldEhvc3ROb2RlOiBmdW5jdGlvbiAoaW50ZXJu
YWxJbnN0YW5jZSkgeworICAgIHJldHVybiBpbnRlcm5hbEluc3RhbmNlLmdldEhvc3ROb2RlKCk7
CisgIH0sCisKKyAgLyoqCisgICAqIFJlbGVhc2VzIGFueSByZXNvdXJjZXMgYWxsb2NhdGVkIGJ5
IGBtb3VudENvbXBvbmVudGAuCisgICAqCisgICAqIEBmaW5hbAorICAgKiBAaW50ZXJuYWwKKyAg
ICovCisgIHVubW91bnRDb21wb25lbnQ6IGZ1bmN0aW9uIChpbnRlcm5hbEluc3RhbmNlLCBzYWZl
bHkpIHsKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICBp
ZiAoaW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCAhPT0gMCkgeworICAgICAgICBSZWFjdEluc3Ry
dW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25CZWZvcmVVbm1vdW50Q29tcG9uZW50KGludGVybmFsSW5z
dGFuY2UuX2RlYnVnSUQpOworICAgICAgfQorICAgIH0KKyAgICBSZWFjdFJlZi5kZXRhY2hSZWZz
KGludGVybmFsSW5zdGFuY2UsIGludGVybmFsSW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50KTsKKyAg
ICBpbnRlcm5hbEluc3RhbmNlLnVubW91bnRDb21wb25lbnQoc2FmZWx5KTsKKyAgICBpZiAoImRl
dmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICBpZiAoaW50ZXJuYWxJbnN0YW5j
ZS5fZGVidWdJRCAhPT0gMCkgeworICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rv
b2wub25Vbm1vdW50Q29tcG9uZW50KGludGVybmFsSW5zdGFuY2UuX2RlYnVnSUQpOworICAgICAg
fQorICAgIH0KKyAgfSwKKworICAvKioKKyAgICogVXBkYXRlIGEgY29tcG9uZW50IHVzaW5nIGEg
bmV3IGVsZW1lbnQuCisgICAqCisgICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGludGVybmFs
SW5zdGFuY2UKKyAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IG5leHRFbGVtZW50CisgICAqIEBw
YXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb24KKyAgICogQHBhcmFt
IHtvYmplY3R9IGNvbnRleHQKKyAgICogQGludGVybmFsCisgICAqLworICByZWNlaXZlQ29tcG9u
ZW50OiBmdW5jdGlvbiAoaW50ZXJuYWxJbnN0YW5jZSwgbmV4dEVsZW1lbnQsIHRyYW5zYWN0aW9u
LCBjb250ZXh0KSB7CisgICAgdmFyIHByZXZFbGVtZW50ID0gaW50ZXJuYWxJbnN0YW5jZS5fY3Vy
cmVudEVsZW1lbnQ7CisKKyAgICBpZiAobmV4dEVsZW1lbnQgPT09IHByZXZFbGVtZW50ICYmIGNv
bnRleHQgPT09IGludGVybmFsSW5zdGFuY2UuX2NvbnRleHQpIHsKKyAgICAgIC8vIFNpbmNlIGVs
ZW1lbnRzIGFyZSBpbW11dGFibGUgYWZ0ZXIgdGhlIG93bmVyIGlzIHJlbmRlcmVkLAorICAgICAg
Ly8gd2UgY2FuIGRvIGEgY2hlYXAgaWRlbnRpdHkgY29tcGFyZSBoZXJlIHRvIGRldGVybWluZSBp
ZiB0aGlzIGlzIGEKKyAgICAgIC8vIHN1cGVyZmx1b3VzIHJlY29uY2lsZS4gSXQncyBwb3NzaWJs
ZSBmb3Igc3RhdGUgdG8gYmUgbXV0YWJsZSBidXQgc3VjaAorICAgICAgLy8gY2hhbmdlIHNob3Vs
ZCB0cmlnZ2VyIGFuIHVwZGF0ZSBvZiB0aGUgb3duZXIgd2hpY2ggd291bGQgcmVjcmVhdGUKKyAg
ICAgIC8vIHRoZSBlbGVtZW50LiBXZSBleHBsaWNpdGx5IGNoZWNrIGZvciB0aGUgZXhpc3RlbmNl
IG9mIGFuIG93bmVyIHNpbmNlCisgICAgICAvLyBpdCdzIHBvc3NpYmxlIGZvciBhbiBlbGVtZW50
IGNyZWF0ZWQgb3V0c2lkZSBhIGNvbXBvc2l0ZSB0byBiZQorICAgICAgLy8gZGVlcGx5IG11dGF0
ZWQgYW5kIHJldXNlZC4KKworICAgICAgLy8gVE9ETzogQmFpbGluZyBvdXQgZWFybHkgaXMganVz
dCBhIHBlcmYgb3B0aW1pemF0aW9uIHJpZ2h0PworICAgICAgLy8gVE9ETzogUmVtb3ZpbmcgdGhl
IHJldHVybiBzdGF0ZW1lbnQgc2hvdWxkIGFmZmVjdCBjb3JyZWN0bmVzcz8KKyAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7Cisg
ICAgICBpZiAoaW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCAhPT0gMCkgeworICAgICAgICBSZWFj
dEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25CZWZvcmVVcGRhdGVDb21wb25lbnQoaW50ZXJu
YWxJbnN0YW5jZS5fZGVidWdJRCwgbmV4dEVsZW1lbnQpOworICAgICAgfQorICAgIH0KKworICAg
IHZhciByZWZzQ2hhbmdlZCA9IFJlYWN0UmVmLnNob3VsZFVwZGF0ZVJlZnMocHJldkVsZW1lbnQs
IG5leHRFbGVtZW50KTsKKworICAgIGlmIChyZWZzQ2hhbmdlZCkgeworICAgICAgUmVhY3RSZWYu
ZGV0YWNoUmVmcyhpbnRlcm5hbEluc3RhbmNlLCBwcmV2RWxlbWVudCk7CisgICAgfQorCisgICAg
aW50ZXJuYWxJbnN0YW5jZS5yZWNlaXZlQ29tcG9uZW50KG5leHRFbGVtZW50LCB0cmFuc2FjdGlv
biwgY29udGV4dCk7CisKKyAgICBpZiAocmVmc0NoYW5nZWQgJiYgaW50ZXJuYWxJbnN0YW5jZS5f
Y3VycmVudEVsZW1lbnQgJiYgaW50ZXJuYWxJbnN0YW5jZS5fY3VycmVudEVsZW1lbnQucmVmICE9
IG51bGwpIHsKKyAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUo
YXR0YWNoUmVmcywgaW50ZXJuYWxJbnN0YW5jZSk7CisgICAgfQorCisgICAgaWYgKCJkZXZlbG9w
bWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgaWYgKGludGVybmFsSW5zdGFuY2UuX2Rl
YnVnSUQgIT09IDApIHsKKyAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9u
VXBkYXRlQ29tcG9uZW50KGludGVybmFsSW5zdGFuY2UuX2RlYnVnSUQpOworICAgICAgfQorICAg
IH0KKyAgfSwKKworICAvKioKKyAgICogRmx1c2ggYW55IGRpcnR5IGNoYW5nZXMgaW4gYSBjb21w
b25lbnQuCisgICAqCisgICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGludGVybmFsSW5zdGFu
Y2UKKyAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvbgor
ICAgKiBAaW50ZXJuYWwKKyAgICovCisgIHBlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeTogZnVuY3Rp
b24gKGludGVybmFsSW5zdGFuY2UsIHRyYW5zYWN0aW9uLCB1cGRhdGVCYXRjaE51bWJlcikgewor
ICAgIGlmIChpbnRlcm5hbEluc3RhbmNlLl91cGRhdGVCYXRjaE51bWJlciAhPT0gdXBkYXRlQmF0
Y2hOdW1iZXIpIHsKKyAgICAgIC8vIFRoZSBjb21wb25lbnQncyBlbnF1ZXVlZCBiYXRjaCBudW1i
ZXIgc2hvdWxkIGFsd2F5cyBiZSB0aGUgY3VycmVudAorICAgICAgLy8gYmF0Y2ggb3IgdGhlIGZv
bGxvd2luZyBvbmUuCisgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJu
aW5nKGludGVybmFsSW5zdGFuY2UuX3VwZGF0ZUJhdGNoTnVtYmVyID09IG51bGwgfHwgaW50ZXJu
YWxJbnN0YW5jZS5fdXBkYXRlQmF0Y2hOdW1iZXIgPT09IHVwZGF0ZUJhdGNoTnVtYmVyICsgMSwg
J3BlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeTogVW5leHBlY3RlZCBiYXRjaCBudW1iZXIgKGN1cnJl
bnQgJXMsICcgKyAncGVuZGluZyAlcyknLCB1cGRhdGVCYXRjaE51bWJlciwgaW50ZXJuYWxJbnN0
YW5jZS5fdXBkYXRlQmF0Y2hOdW1iZXIpIDogdm9pZCAwOworICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICBpZiAoaW50
ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCAhPT0gMCkgeworICAgICAgICBSZWFjdEluc3RydW1lbnRh
dGlvbi5kZWJ1Z1Rvb2wub25CZWZvcmVVcGRhdGVDb21wb25lbnQoaW50ZXJuYWxJbnN0YW5jZS5f
ZGVidWdJRCwgaW50ZXJuYWxJbnN0YW5jZS5fY3VycmVudEVsZW1lbnQpOworICAgICAgfQorICAg
IH0KKyAgICBpbnRlcm5hbEluc3RhbmNlLnBlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeSh0cmFuc2Fj
dGlvbik7CisgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAg
aWYgKGludGVybmFsSW5zdGFuY2UuX2RlYnVnSUQgIT09IDApIHsKKyAgICAgICAgUmVhY3RJbnN0
cnVtZW50YXRpb24uZGVidWdUb29sLm9uVXBkYXRlQ29tcG9uZW50KGludGVybmFsSW5zdGFuY2Uu
X2RlYnVnSUQpOworICAgICAgfQorICAgIH0KKyAgfQorCit9OworCittb2R1bGUuZXhwb3J0cyA9
IFJlYWN0UmVjb25jaWxlcjsKK30seyIxNTciOjE1NywiNjQiOjY0LCI3NiI6NzZ9XSw3NjpbZnVu
Y3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXBy
ZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRo
aXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZv
dW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlz
IHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNh
biBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAq
CisgKiAKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBSZWFjdE93bmVyID0gX2RlcmVxXyg3
MCk7CisKK3ZhciBSZWFjdFJlZiA9IHt9OworCitmdW5jdGlvbiBhdHRhY2hSZWYocmVmLCBjb21w
b25lbnQsIG93bmVyKSB7CisgIGlmICh0eXBlb2YgcmVmID09PSAnZnVuY3Rpb24nKSB7CisgICAg
cmVmKGNvbXBvbmVudC5nZXRQdWJsaWNJbnN0YW5jZSgpKTsKKyAgfSBlbHNlIHsKKyAgICAvLyBM
ZWdhY3kgcmVmCisgICAgUmVhY3RPd25lci5hZGRDb21wb25lbnRBc1JlZlRvKGNvbXBvbmVudCwg
cmVmLCBvd25lcik7CisgIH0KK30KKworZnVuY3Rpb24gZGV0YWNoUmVmKHJlZiwgY29tcG9uZW50
LCBvd25lcikgeworICBpZiAodHlwZW9mIHJlZiA9PT0gJ2Z1bmN0aW9uJykgeworICAgIHJlZihu
dWxsKTsKKyAgfSBlbHNlIHsKKyAgICAvLyBMZWdhY3kgcmVmCisgICAgUmVhY3RPd25lci5yZW1v
dmVDb21wb25lbnRBc1JlZkZyb20oY29tcG9uZW50LCByZWYsIG93bmVyKTsKKyAgfQorfQorCitS
ZWFjdFJlZi5hdHRhY2hSZWZzID0gZnVuY3Rpb24gKGluc3RhbmNlLCBlbGVtZW50KSB7CisgIGlm
IChlbGVtZW50ID09PSBudWxsIHx8IHR5cGVvZiBlbGVtZW50ICE9PSAnb2JqZWN0JykgeworICAg
IHJldHVybjsKKyAgfQorICB2YXIgcmVmID0gZWxlbWVudC5yZWY7CisgIGlmIChyZWYgIT0gbnVs
bCkgeworICAgIGF0dGFjaFJlZihyZWYsIGluc3RhbmNlLCBlbGVtZW50Ll9vd25lcik7CisgIH0K
K307CisKK1JlYWN0UmVmLnNob3VsZFVwZGF0ZVJlZnMgPSBmdW5jdGlvbiAocHJldkVsZW1lbnQs
IG5leHRFbGVtZW50KSB7CisgIC8vIElmIGVpdGhlciB0aGUgb3duZXIgb3IgYSBgcmVmYCBoYXMg
Y2hhbmdlZCwgbWFrZSBzdXJlIHRoZSBuZXdlc3Qgb3duZXIKKyAgLy8gaGFzIHN0b3JlZCBhIHJl
ZmVyZW5jZSB0byBgdGhpc2AsIGFuZCB0aGUgcHJldmlvdXMgb3duZXIgKGlmIGRpZmZlcmVudCkK
KyAgLy8gaGFzIGZvcmdvdHRlbiB0aGUgcmVmZXJlbmNlIHRvIGB0aGlzYC4gV2UgdXNlIHRoZSBl
bGVtZW50IGluc3RlYWQKKyAgLy8gb2YgdGhlIHB1YmxpYyB0aGlzLnByb3BzIGJlY2F1c2UgdGhl
IHBvc3QgcHJvY2Vzc2luZyBjYW5ub3QgZGV0ZXJtaW5lCisgIC8vIGEgcmVmLiBUaGUgcmVmIGNv
bmNlcHR1YWxseSBsaXZlcyBvbiB0aGUgZWxlbWVudC4KKworICAvLyBUT0RPOiBTaG91bGQgdGhp
cyBldmVuIGJlIHBvc3NpYmxlPyBUaGUgb3duZXIgY2Fubm90IGNoYW5nZSBiZWNhdXNlCisgIC8v
IGl0J3MgZm9yYmlkZGVuIGJ5IHNob3VsZFVwZGF0ZVJlYWN0Q29tcG9uZW50LiBUaGUgcmVmIGNh
biBjaGFuZ2UKKyAgLy8gaWYgeW91IHN3YXAgdGhlIGtleXMgb2YgYnV0IG5vdCB0aGUgcmVmcy4g
UmVjb25zaWRlciB3aGVyZSB0aGlzIGNoZWNrCisgIC8vIGlzIG1hZGUuIEl0IHByb2JhYmx5IGJl
bG9uZ3Mgd2hlcmUgdGhlIGtleSBjaGVja2luZyBhbmQKKyAgLy8gaW5zdGFudGlhdGVSZWFjdENv
bXBvbmVudCBpcyBkb25lLgorCisgIHZhciBwcmV2UmVmID0gbnVsbDsKKyAgdmFyIHByZXZPd25l
ciA9IG51bGw7CisgIGlmIChwcmV2RWxlbWVudCAhPT0gbnVsbCAmJiB0eXBlb2YgcHJldkVsZW1l
bnQgPT09ICdvYmplY3QnKSB7CisgICAgcHJldlJlZiA9IHByZXZFbGVtZW50LnJlZjsKKyAgICBw
cmV2T3duZXIgPSBwcmV2RWxlbWVudC5fb3duZXI7CisgIH0KKworICB2YXIgbmV4dFJlZiA9IG51
bGw7CisgIHZhciBuZXh0T3duZXIgPSBudWxsOworICBpZiAobmV4dEVsZW1lbnQgIT09IG51bGwg
JiYgdHlwZW9mIG5leHRFbGVtZW50ID09PSAnb2JqZWN0JykgeworICAgIG5leHRSZWYgPSBuZXh0
RWxlbWVudC5yZWY7CisgICAgbmV4dE93bmVyID0gbmV4dEVsZW1lbnQuX293bmVyOworICB9CisK
KyAgcmV0dXJuIHByZXZSZWYgIT09IG5leHRSZWYgfHwKKyAgLy8gSWYgb3duZXIgY2hhbmdlcyBi
dXQgd2UgaGF2ZSBhbiB1bmNoYW5nZWQgZnVuY3Rpb24gcmVmLCBkb24ndCB1cGRhdGUgcmVmcwor
ICB0eXBlb2YgbmV4dFJlZiA9PT0gJ3N0cmluZycgJiYgbmV4dE93bmVyICE9PSBwcmV2T3duZXI7
Cit9OworCitSZWFjdFJlZi5kZXRhY2hSZWZzID0gZnVuY3Rpb24gKGluc3RhbmNlLCBlbGVtZW50
KSB7CisgIGlmIChlbGVtZW50ID09PSBudWxsIHx8IHR5cGVvZiBlbGVtZW50ICE9PSAnb2JqZWN0
JykgeworICAgIHJldHVybjsKKyAgfQorICB2YXIgcmVmID0gZWxlbWVudC5yZWY7CisgIGlmIChy
ZWYgIT0gbnVsbCkgeworICAgIGRldGFjaFJlZihyZWYsIGluc3RhbmNlLCBlbGVtZW50Ll9vd25l
cik7CisgIH0KK307CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RSZWY7Cit9LHsiNzAiOjcwfV0s
Nzc6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQg
MjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGlj
ZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkg
b2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJp
Z2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rv
cnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9hc3NpZ24gPSBfZGVyZXFfKDE1
OCk7CisKK3ZhciBQb29sZWRDbGFzcyA9IF9kZXJlcV8oMjUpOwordmFyIFRyYW5zYWN0aW9uID0g
X2RlcmVxXygxMDApOwordmFyIFJlYWN0SW5zdHJ1bWVudGF0aW9uID0gX2RlcmVxXyg2NCk7Cit2
YXIgUmVhY3RTZXJ2ZXJVcGRhdGVRdWV1ZSA9IF9kZXJlcV8oNzgpOworCisvKioKKyAqIEV4ZWN1
dGVkIHdpdGhpbiB0aGUgc2NvcGUgb2YgdGhlIGBUcmFuc2FjdGlvbmAgaW5zdGFuY2UuIENvbnNp
ZGVyIHRoZXNlIGFzCisgKiBiZWluZyBtZW1iZXIgbWV0aG9kcywgYnV0IHdpdGggYW4gaW1wbGll
ZCBvcmRlcmluZyB3aGlsZSBiZWluZyBpc29sYXRlZCBmcm9tCisgKiBlYWNoIG90aGVyLgorICov
Cit2YXIgVFJBTlNBQ1RJT05fV1JBUFBFUlMgPSBbXTsKKworaWYgKCJkZXZlbG9wbWVudCIgIT09
ICdwcm9kdWN0aW9uJykgeworICBUUkFOU0FDVElPTl9XUkFQUEVSUy5wdXNoKHsKKyAgICBpbml0
aWFsaXplOiBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25CZWdpbkZsdXNoLAorICAg
IGNsb3NlOiBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25FbmRGbHVzaAorICB9KTsK
K30KKwordmFyIG5vb3BDYWxsYmFja1F1ZXVlID0geworICBlbnF1ZXVlOiBmdW5jdGlvbiAoKSB7
fQorfTsKKworLyoqCisgKiBAY2xhc3MgUmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbgor
ICogQHBhcmFtIHtib29sZWFufSByZW5kZXJUb1N0YXRpY01hcmt1cAorICovCitmdW5jdGlvbiBS
ZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9uKHJlbmRlclRvU3RhdGljTWFya3VwKSB7Cisg
IHRoaXMucmVpbml0aWFsaXplVHJhbnNhY3Rpb24oKTsKKyAgdGhpcy5yZW5kZXJUb1N0YXRpY01h
cmt1cCA9IHJlbmRlclRvU3RhdGljTWFya3VwOworICB0aGlzLnVzZUNyZWF0ZUVsZW1lbnQgPSBm
YWxzZTsKKyAgdGhpcy51cGRhdGVRdWV1ZSA9IG5ldyBSZWFjdFNlcnZlclVwZGF0ZVF1ZXVlKHRo
aXMpOworfQorCit2YXIgTWl4aW4gPSB7CisgIC8qKgorICAgKiBAc2VlIFRyYW5zYWN0aW9uCisg
ICAqIEBhYnN0cmFjdAorICAgKiBAZmluYWwKKyAgICogQHJldHVybiB7YXJyYXl9IEVtcHR5IGxp
c3Qgb2Ygb3BlcmF0aW9uIHdyYXAgcHJvY2VkdXJlcy4KKyAgICovCisgIGdldFRyYW5zYWN0aW9u
V3JhcHBlcnM6IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gVFJBTlNBQ1RJT05fV1JBUFBFUlM7
CisgIH0sCisKKyAgLyoqCisgICAqIEByZXR1cm4ge29iamVjdH0gVGhlIHF1ZXVlIHRvIGNvbGxl
Y3QgYG9uRE9NUmVhZHlgIGNhbGxiYWNrcyB3aXRoLgorICAgKi8KKyAgZ2V0UmVhY3RNb3VudFJl
YWR5OiBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIG5vb3BDYWxsYmFja1F1ZXVlOworICB9LAor
CisgIC8qKgorICAgKiBAcmV0dXJuIHtvYmplY3R9IFRoZSBxdWV1ZSB0byBjb2xsZWN0IFJlYWN0
IGFzeW5jIGV2ZW50cy4KKyAgICovCisgIGdldFVwZGF0ZVF1ZXVlOiBmdW5jdGlvbiAoKSB7Cisg
ICAgcmV0dXJuIHRoaXMudXBkYXRlUXVldWU7CisgIH0sCisKKyAgLyoqCisgICAqIGBQb29sZWRD
bGFzc2AgbG9va3MgZm9yIHRoaXMsIGFuZCB3aWxsIGludm9rZSB0aGlzIGJlZm9yZSBhbGxvd2lu
ZyB0aGlzCisgICAqIGluc3RhbmNlIHRvIGJlIHJldXNlZC4KKyAgICovCisgIGRlc3RydWN0b3I6
IGZ1bmN0aW9uICgpIHt9LAorCisgIGNoZWNrcG9pbnQ6IGZ1bmN0aW9uICgpIHt9LAorCisgIHJv
bGxiYWNrOiBmdW5jdGlvbiAoKSB7fQorfTsKKworX2Fzc2lnbihSZWFjdFNlcnZlclJlbmRlcmlu
Z1RyYW5zYWN0aW9uLnByb3RvdHlwZSwgVHJhbnNhY3Rpb24sIE1peGluKTsKKworUG9vbGVkQ2xh
c3MuYWRkUG9vbGluZ1RvKFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb24pOworCittb2R1
bGUuZXhwb3J0cyA9IFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb247Cit9LHsiMTAwIjox
MDAsIjE1OCI6MTU4LCIyNSI6MjUsIjY0Ijo2NCwiNzgiOjc4fV0sNzg6W2Z1bmN0aW9uKF9kZXJl
cV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxNS1wcmVzZW50LCBGYWNl
Ym9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBj
b2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUK
KyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJl
ZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQg
aW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogCisgKi8K
KworJ3VzZSBzdHJpY3QnOworCitmdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENv
bnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRo
cm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpOyB9
IH0KKwordmFyIFJlYWN0VXBkYXRlUXVldWUgPSBfZGVyZXFfKDgxKTsKKwordmFyIHdhcm5pbmcg
PSBfZGVyZXFfKDE1Nyk7CisKK2Z1bmN0aW9uIHdhcm5Ob29wKHB1YmxpY0luc3RhbmNlLCBjYWxs
ZXJOYW1lKSB7CisgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICB2
YXIgY29uc3RydWN0b3IgPSBwdWJsaWNJbnN0YW5jZS5jb25zdHJ1Y3RvcjsKKyAgICAiZGV2ZWxv
cG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnJXMoLi4uKTogQ2FuIG9u
bHkgdXBkYXRlIGEgbW91bnRpbmcgY29tcG9uZW50LiAnICsgJ1RoaXMgdXN1YWxseSBtZWFucyB5
b3UgY2FsbGVkICVzKCkgb3V0c2lkZSBjb21wb25lbnRXaWxsTW91bnQoKSBvbiB0aGUgc2VydmVy
LiAnICsgJ1RoaXMgaXMgYSBuby1vcC4gUGxlYXNlIGNoZWNrIHRoZSBjb2RlIGZvciB0aGUgJXMg
Y29tcG9uZW50LicsIGNhbGxlck5hbWUsIGNhbGxlck5hbWUsIGNvbnN0cnVjdG9yICYmIChjb25z
dHJ1Y3Rvci5kaXNwbGF5TmFtZSB8fCBjb25zdHJ1Y3Rvci5uYW1lKSB8fCAnUmVhY3RDbGFzcycp
IDogdm9pZCAwOworICB9Cit9CisKKy8qKgorICogVGhpcyBpcyB0aGUgdXBkYXRlIHF1ZXVlIHVz
ZWQgZm9yIHNlcnZlciByZW5kZXJpbmcuCisgKiBJdCBkZWxlZ2F0ZXMgdG8gUmVhY3RVcGRhdGVR
dWV1ZSB3aGlsZSBzZXJ2ZXIgcmVuZGVyaW5nIGlzIGluIHByb2dyZXNzIGFuZAorICogc3dpdGNo
ZXMgdG8gUmVhY3ROb29wVXBkYXRlUXVldWUgYWZ0ZXIgdGhlIHRyYW5zYWN0aW9uIGhhcyBjb21w
bGV0ZWQuCisgKiBAY2xhc3MgUmVhY3RTZXJ2ZXJVcGRhdGVRdWV1ZQorICogQHBhcmFtIHtUcmFu
c2FjdGlvbn0gdHJhbnNhY3Rpb24KKyAqLworCit2YXIgUmVhY3RTZXJ2ZXJVcGRhdGVRdWV1ZSA9
IGZ1bmN0aW9uICgpIHsKKyAgZnVuY3Rpb24gUmVhY3RTZXJ2ZXJVcGRhdGVRdWV1ZSh0cmFuc2Fj
dGlvbikgeworICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBSZWFjdFNlcnZlclVwZGF0ZVF1ZXVl
KTsKKworICAgIHRoaXMudHJhbnNhY3Rpb24gPSB0cmFuc2FjdGlvbjsKKyAgfQorCisgIC8qKgor
ICAgKiBDaGVja3Mgd2hldGhlciBvciBub3QgdGhpcyBjb21wb3NpdGUgY29tcG9uZW50IGlzIG1v
dW50ZWQuCisgICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3Rh
bmNlIHdlIHdhbnQgdG8gdGVzdC4KKyAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBtb3Vu
dGVkLCBmYWxzZSBvdGhlcndpc2UuCisgICAqIEBwcm90ZWN0ZWQKKyAgICogQGZpbmFsCisgICAq
LworCisKKyAgUmVhY3RTZXJ2ZXJVcGRhdGVRdWV1ZS5wcm90b3R5cGUuaXNNb3VudGVkID0gZnVu
Y3Rpb24gaXNNb3VudGVkKHB1YmxpY0luc3RhbmNlKSB7CisgICAgcmV0dXJuIGZhbHNlOworICB9
OworCisgIC8qKgorICAgKiBFbnF1ZXVlIGEgY2FsbGJhY2sgdGhhdCB3aWxsIGJlIGV4ZWN1dGVk
IGFmdGVyIGFsbCB0aGUgcGVuZGluZyB1cGRhdGVzCisgICAqIGhhdmUgcHJvY2Vzc2VkLgorICAg
KgorICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0
byB1c2UgYXMgYHRoaXNgIGNvbnRleHQuCisgICAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBjYWxsYmFj
ayBDYWxsZWQgYWZ0ZXIgc3RhdGUgaXMgdXBkYXRlZC4KKyAgICogQGludGVybmFsCisgICAqLwor
CisKKyAgUmVhY3RTZXJ2ZXJVcGRhdGVRdWV1ZS5wcm90b3R5cGUuZW5xdWV1ZUNhbGxiYWNrID0g
ZnVuY3Rpb24gZW5xdWV1ZUNhbGxiYWNrKHB1YmxpY0luc3RhbmNlLCBjYWxsYmFjaywgY2FsbGVy
TmFtZSkgeworICAgIGlmICh0aGlzLnRyYW5zYWN0aW9uLmlzSW5UcmFuc2FjdGlvbigpKSB7Cisg
ICAgICBSZWFjdFVwZGF0ZVF1ZXVlLmVucXVldWVDYWxsYmFjayhwdWJsaWNJbnN0YW5jZSwgY2Fs
bGJhY2ssIGNhbGxlck5hbWUpOworICAgIH0KKyAgfTsKKworICAvKioKKyAgICogRm9yY2VzIGFu
IHVwZGF0ZS4gVGhpcyBzaG91bGQgb25seSBiZSBpbnZva2VkIHdoZW4gaXQgaXMga25vd24gd2l0
aAorICAgKiBjZXJ0YWludHkgdGhhdCB3ZSBhcmUgKipub3QqKiBpbiBhIERPTSB0cmFuc2FjdGlv
bi4KKyAgICoKKyAgICogWW91IG1heSB3YW50IHRvIGNhbGwgdGhpcyB3aGVuIHlvdSBrbm93IHRo
YXQgc29tZSBkZWVwZXIgYXNwZWN0IG9mIHRoZQorICAgKiBjb21wb25lbnQncyBzdGF0ZSBoYXMg
Y2hhbmdlZCBidXQgYHNldFN0YXRlYCB3YXMgbm90IGNhbGxlZC4KKyAgICoKKyAgICogVGhpcyB3
aWxsIG5vdCBpbnZva2UgYHNob3VsZENvbXBvbmVudFVwZGF0ZWAsIGJ1dCBpdCB3aWxsIGludm9r
ZQorICAgKiBgY29tcG9uZW50V2lsbFVwZGF0ZWAgYW5kIGBjb21wb25lbnREaWRVcGRhdGVgLgor
ICAgKgorICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5j
ZSB0aGF0IHNob3VsZCByZXJlbmRlci4KKyAgICogQGludGVybmFsCisgICAqLworCisKKyAgUmVh
Y3RTZXJ2ZXJVcGRhdGVRdWV1ZS5wcm90b3R5cGUuZW5xdWV1ZUZvcmNlVXBkYXRlID0gZnVuY3Rp
b24gZW5xdWV1ZUZvcmNlVXBkYXRlKHB1YmxpY0luc3RhbmNlKSB7CisgICAgaWYgKHRoaXMudHJh
bnNhY3Rpb24uaXNJblRyYW5zYWN0aW9uKCkpIHsKKyAgICAgIFJlYWN0VXBkYXRlUXVldWUuZW5x
dWV1ZUZvcmNlVXBkYXRlKHB1YmxpY0luc3RhbmNlKTsKKyAgICB9IGVsc2UgeworICAgICAgd2Fy
bk5vb3AocHVibGljSW5zdGFuY2UsICdmb3JjZVVwZGF0ZScpOworICAgIH0KKyAgfTsKKworICAv
KioKKyAgICogUmVwbGFjZXMgYWxsIG9mIHRoZSBzdGF0ZS4gQWx3YXlzIHVzZSB0aGlzIG9yIGBz
ZXRTdGF0ZWAgdG8gbXV0YXRlIHN0YXRlLgorICAgKiBZb3Ugc2hvdWxkIHRyZWF0IGB0aGlzLnN0
YXRlYCBhcyBpbW11dGFibGUuCisgICAqCisgICAqIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0
IGB0aGlzLnN0YXRlYCB3aWxsIGJlIGltbWVkaWF0ZWx5IHVwZGF0ZWQsIHNvCisgICAqIGFjY2Vz
c2luZyBgdGhpcy5zdGF0ZWAgYWZ0ZXIgY2FsbGluZyB0aGlzIG1ldGhvZCBtYXkgcmV0dXJuIHRo
ZSBvbGQgdmFsdWUuCisgICAqCisgICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFu
Y2UgVGhlIGluc3RhbmNlIHRoYXQgc2hvdWxkIHJlcmVuZGVyLgorICAgKiBAcGFyYW0ge29iamVj
dHxmdW5jdGlvbn0gY29tcGxldGVTdGF0ZSBOZXh0IHN0YXRlLgorICAgKiBAaW50ZXJuYWwKKyAg
ICovCisKKworICBSZWFjdFNlcnZlclVwZGF0ZVF1ZXVlLnByb3RvdHlwZS5lbnF1ZXVlUmVwbGFj
ZVN0YXRlID0gZnVuY3Rpb24gZW5xdWV1ZVJlcGxhY2VTdGF0ZShwdWJsaWNJbnN0YW5jZSwgY29t
cGxldGVTdGF0ZSkgeworICAgIGlmICh0aGlzLnRyYW5zYWN0aW9uLmlzSW5UcmFuc2FjdGlvbigp
KSB7CisgICAgICBSZWFjdFVwZGF0ZVF1ZXVlLmVucXVldWVSZXBsYWNlU3RhdGUocHVibGljSW5z
dGFuY2UsIGNvbXBsZXRlU3RhdGUpOworICAgIH0gZWxzZSB7CisgICAgICB3YXJuTm9vcChwdWJs
aWNJbnN0YW5jZSwgJ3JlcGxhY2VTdGF0ZScpOworICAgIH0KKyAgfTsKKworICAvKioKKyAgICog
U2V0cyBhIHN1YnNldCBvZiB0aGUgc3RhdGUuIFRoaXMgb25seSBleGlzdHMgYmVjYXVzZSBfcGVu
ZGluZ1N0YXRlIGlzCisgICAqIGludGVybmFsLiBUaGlzIHByb3ZpZGVzIGEgbWVyZ2luZyBzdHJh
dGVneSB0aGF0IGlzIG5vdCBhdmFpbGFibGUgdG8gZGVlcAorICAgKiBwcm9wZXJ0aWVzIHdoaWNo
IGlzIGNvbmZ1c2luZy4gVE9ETzogRXhwb3NlIHBlbmRpbmdTdGF0ZSBvciBkb24ndCB1c2UgaXQK
KyAgICogZHVyaW5nIHRoZSBtZXJnZS4KKyAgICoKKyAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBw
dWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdGhhdCBzaG91bGQgcmVyZW5kZXIuCisgICAqIEBw
YXJhbSB7b2JqZWN0fGZ1bmN0aW9ufSBwYXJ0aWFsU3RhdGUgTmV4dCBwYXJ0aWFsIHN0YXRlIHRv
IGJlIG1lcmdlZCB3aXRoIHN0YXRlLgorICAgKiBAaW50ZXJuYWwKKyAgICovCisKKworICBSZWFj
dFNlcnZlclVwZGF0ZVF1ZXVlLnByb3RvdHlwZS5lbnF1ZXVlU2V0U3RhdGUgPSBmdW5jdGlvbiBl
bnF1ZXVlU2V0U3RhdGUocHVibGljSW5zdGFuY2UsIHBhcnRpYWxTdGF0ZSkgeworICAgIGlmICh0
aGlzLnRyYW5zYWN0aW9uLmlzSW5UcmFuc2FjdGlvbigpKSB7CisgICAgICBSZWFjdFVwZGF0ZVF1
ZXVlLmVucXVldWVTZXRTdGF0ZShwdWJsaWNJbnN0YW5jZSwgcGFydGlhbFN0YXRlKTsKKyAgICB9
IGVsc2UgeworICAgICAgd2Fybk5vb3AocHVibGljSW5zdGFuY2UsICdzZXRTdGF0ZScpOworICAg
IH0KKyAgfTsKKworICByZXR1cm4gUmVhY3RTZXJ2ZXJVcGRhdGVRdWV1ZTsKK30oKTsKKworbW9k
dWxlLmV4cG9ydHMgPSBSZWFjdFNlcnZlclVwZGF0ZVF1ZXVlOworfSx7IjE1NyI6MTU3LCI4MSI6
ODF9XSw3OTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHly
aWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJbnZhcmlhbnQg
PSBfZGVyZXFfKDEyNSksCisgICAgX2Fzc2lnbiA9IF9kZXJlcV8oMTU4KTsKKworZnVuY3Rpb24g
X2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBp
bnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2Fs
bCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKTsgfSB9CisKK3ZhciBSZWFjdCA9IF9kZXJlcV8oMTM0
KTsKK3ZhciBSZWFjdERlZmF1bHRJbmplY3Rpb24gPSBfZGVyZXFfKDUyKTsKK3ZhciBSZWFjdENv
bXBvc2l0ZUNvbXBvbmVudCA9IF9kZXJlcV8oMzApOwordmFyIFJlYWN0UmVjb25jaWxlciA9IF9k
ZXJlcV8oNzUpOwordmFyIFJlYWN0VXBkYXRlcyA9IF9kZXJlcV8oODIpOworCit2YXIgZW1wdHlP
YmplY3QgPSBfZGVyZXFfKDE0Myk7Cit2YXIgZ2V0TmV4dERlYnVnSUQgPSBfZGVyZXFfKDExNyk7
Cit2YXIgaW52YXJpYW50ID0gX2RlcmVxXygxNTApOworCit2YXIgTm9vcEludGVybmFsQ29tcG9u
ZW50ID0gZnVuY3Rpb24gKCkgeworICBmdW5jdGlvbiBOb29wSW50ZXJuYWxDb21wb25lbnQoZWxl
bWVudCkgeworICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBOb29wSW50ZXJuYWxDb21wb25lbnQp
OworCisgICAgdGhpcy5fcmVuZGVyZWRPdXRwdXQgPSBlbGVtZW50OworICAgIHRoaXMuX2N1cnJl
bnRFbGVtZW50ID0gZWxlbWVudDsKKworICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVj
dGlvbicpIHsKKyAgICAgIHRoaXMuX2RlYnVnSUQgPSBnZXROZXh0RGVidWdJRCgpOworICAgIH0K
KyAgfQorCisgIE5vb3BJbnRlcm5hbENvbXBvbmVudC5wcm90b3R5cGUubW91bnRDb21wb25lbnQg
PSBmdW5jdGlvbiBtb3VudENvbXBvbmVudCgpIHt9OworCisgIE5vb3BJbnRlcm5hbENvbXBvbmVu
dC5wcm90b3R5cGUucmVjZWl2ZUNvbXBvbmVudCA9IGZ1bmN0aW9uIHJlY2VpdmVDb21wb25lbnQo
ZWxlbWVudCkgeworICAgIHRoaXMuX3JlbmRlcmVkT3V0cHV0ID0gZWxlbWVudDsKKyAgICB0aGlz
Ll9jdXJyZW50RWxlbWVudCA9IGVsZW1lbnQ7CisgIH07CisKKyAgTm9vcEludGVybmFsQ29tcG9u
ZW50LnByb3RvdHlwZS51bm1vdW50Q29tcG9uZW50ID0gZnVuY3Rpb24gdW5tb3VudENvbXBvbmVu
dCgpIHt9OworCisgIE5vb3BJbnRlcm5hbENvbXBvbmVudC5wcm90b3R5cGUuZ2V0SG9zdE5vZGUg
PSBmdW5jdGlvbiBnZXRIb3N0Tm9kZSgpIHsKKyAgICByZXR1cm4gdW5kZWZpbmVkOworICB9Owor
CisgIE5vb3BJbnRlcm5hbENvbXBvbmVudC5wcm90b3R5cGUuZ2V0UHVibGljSW5zdGFuY2UgPSBm
dW5jdGlvbiBnZXRQdWJsaWNJbnN0YW5jZSgpIHsKKyAgICByZXR1cm4gbnVsbDsKKyAgfTsKKwor
ICByZXR1cm4gTm9vcEludGVybmFsQ29tcG9uZW50OworfSgpOworCit2YXIgU2hhbGxvd0NvbXBv
bmVudFdyYXBwZXIgPSBmdW5jdGlvbiAoZWxlbWVudCkgeworICAvLyBUT0RPOiBDb25zb2xpZGF0
ZSB3aXRoIGluc3RhbnRpYXRlUmVhY3RDb21wb25lbnQKKyAgaWYgKCJkZXZlbG9wbWVudCIgIT09
ICdwcm9kdWN0aW9uJykgeworICAgIHRoaXMuX2RlYnVnSUQgPSBnZXROZXh0RGVidWdJRCgpOwor
ICB9CisKKyAgdGhpcy5jb25zdHJ1Y3QoZWxlbWVudCk7Cit9OworX2Fzc2lnbihTaGFsbG93Q29t
cG9uZW50V3JhcHBlci5wcm90b3R5cGUsIFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50LCB7CisgIF9j
b25zdHJ1Y3RDb21wb25lbnQ6IFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50Ll9jb25zdHJ1Y3RDb21w
b25lbnRXaXRob3V0T3duZXIsCisgIF9pbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50OiBmdW5jdGlv
biAoZWxlbWVudCkgeworICAgIHJldHVybiBuZXcgTm9vcEludGVybmFsQ29tcG9uZW50KGVsZW1l
bnQpOworICB9LAorICBfcmVwbGFjZU5vZGVXaXRoTWFya3VwOiBmdW5jdGlvbiAoKSB7fSwKKyAg
X3JlbmRlclZhbGlkYXRlZENvbXBvbmVudDogUmVhY3RDb21wb3NpdGVDb21wb25lbnQuX3JlbmRl
clZhbGlkYXRlZENvbXBvbmVudFdpdGhvdXRPd25lck9yQ29udGV4dAorfSk7CisKK2Z1bmN0aW9u
IF9iYXRjaGVkUmVuZGVyKHJlbmRlcmVyLCBlbGVtZW50LCBjb250ZXh0KSB7CisgIHZhciB0cmFu
c2FjdGlvbiA9IFJlYWN0VXBkYXRlcy5SZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uLmdldFBvb2xl
ZCh0cnVlKTsKKyAgcmVuZGVyZXIuX3JlbmRlcihlbGVtZW50LCB0cmFuc2FjdGlvbiwgY29udGV4
dCk7CisgIFJlYWN0VXBkYXRlcy5SZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uLnJlbGVhc2UodHJh
bnNhY3Rpb24pOworfQorCit2YXIgUmVhY3RTaGFsbG93UmVuZGVyZXIgPSBmdW5jdGlvbiAoKSB7
CisgIGZ1bmN0aW9uIFJlYWN0U2hhbGxvd1JlbmRlcmVyKCkgeworICAgIF9jbGFzc0NhbGxDaGVj
ayh0aGlzLCBSZWFjdFNoYWxsb3dSZW5kZXJlcik7CisKKyAgICB0aGlzLl9pbnN0YW5jZSA9IG51
bGw7CisgIH0KKworICBSZWFjdFNoYWxsb3dSZW5kZXJlci5wcm90b3R5cGUuZ2V0TW91bnRlZElu
c3RhbmNlID0gZnVuY3Rpb24gZ2V0TW91bnRlZEluc3RhbmNlKCkgeworICAgIHJldHVybiB0aGlz
Ll9pbnN0YW5jZSA/IHRoaXMuX2luc3RhbmNlLl9pbnN0YW5jZSA6IG51bGw7CisgIH07CisKKyAg
UmVhY3RTaGFsbG93UmVuZGVyZXIucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uIHJlbmRlcihl
bGVtZW50LCBjb250ZXh0KSB7CisgICAgLy8gRW5zdXJlIHdlJ3ZlIGRvbmUgdGhlIGRlZmF1bHQg
aW5qZWN0aW9ucy4gVGhpcyBtaWdodCBub3QgYmUgdHJ1ZSBpbiB0aGUKKyAgICAvLyBjYXNlIG9m
IGEgc2ltcGxlIHRlc3QgdGhhdCBvbmx5IHJlcXVpcmVzIFJlYWN0IGFuZCB0aGUgVGVzdFV0aWxz
IGluCisgICAgLy8gY29uanVuY3Rpb24gd2l0aCBhbiBpbmxpbmUtcmVxdWlyZXMgdHJhbnNmb3Jt
LgorICAgIFJlYWN0RGVmYXVsdEluamVjdGlvbi5pbmplY3QoKTsKKworICAgICFSZWFjdC5pc1Zh
bGlkRWxlbWVudChlbGVtZW50KSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGlu
dmFyaWFudChmYWxzZSwgJ1JlYWN0U2hhbGxvd1JlbmRlcmVyIHJlbmRlcigpOiBJbnZhbGlkIGNv
bXBvbmVudCBlbGVtZW50LiVzJywgdHlwZW9mIGVsZW1lbnQgPT09ICdmdW5jdGlvbicgPyAnIElu
c3RlYWQgb2YgcGFzc2luZyBhIGNvbXBvbmVudCBjbGFzcywgbWFrZSBzdXJlIHRvIGluc3RhbnRp
YXRlICcgKyAnaXQgYnkgcGFzc2luZyBpdCB0byBSZWFjdC5jcmVhdGVFbGVtZW50LicgOiAnJykg
OiBfcHJvZEludmFyaWFudCgnMTInLCB0eXBlb2YgZWxlbWVudCA9PT0gJ2Z1bmN0aW9uJyA/ICcg
SW5zdGVhZCBvZiBwYXNzaW5nIGEgY29tcG9uZW50IGNsYXNzLCBtYWtlIHN1cmUgdG8gaW5zdGFu
dGlhdGUgJyArICdpdCBieSBwYXNzaW5nIGl0IHRvIFJlYWN0LmNyZWF0ZUVsZW1lbnQuJyA6ICcn
KSA6IHZvaWQgMDsKKyAgICAhKHR5cGVvZiBlbGVtZW50LnR5cGUgIT09ICdzdHJpbmcnKSA/ICJk
ZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0U2hh
bGxvd1JlbmRlcmVyIHJlbmRlcigpOiBTaGFsbG93IHJlbmRlcmluZyB3b3JrcyBvbmx5IHdpdGgg
Y3VzdG9tIGNvbXBvbmVudHMsIG5vdCBwcmltaXRpdmVzICglcykuIEluc3RlYWQgb2YgY2FsbGlu
ZyBgLnJlbmRlcihlbClgIGFuZCBpbnNwZWN0aW5nIHRoZSByZW5kZXJlZCBvdXRwdXQsIGxvb2sg
YXQgYGVsLnByb3BzYCBkaXJlY3RseSBpbnN0ZWFkLicsIGVsZW1lbnQudHlwZSkgOiBfcHJvZElu
dmFyaWFudCgnMTMnLCBlbGVtZW50LnR5cGUpIDogdm9pZCAwOworCisgICAgaWYgKCFjb250ZXh0
KSB7CisgICAgICBjb250ZXh0ID0gZW1wdHlPYmplY3Q7CisgICAgfQorICAgIFJlYWN0VXBkYXRl
cy5iYXRjaGVkVXBkYXRlcyhfYmF0Y2hlZFJlbmRlciwgdGhpcywgZWxlbWVudCwgY29udGV4dCk7
CisKKyAgICByZXR1cm4gdGhpcy5nZXRSZW5kZXJPdXRwdXQoKTsKKyAgfTsKKworICBSZWFjdFNo
YWxsb3dSZW5kZXJlci5wcm90b3R5cGUuZ2V0UmVuZGVyT3V0cHV0ID0gZnVuY3Rpb24gZ2V0UmVu
ZGVyT3V0cHV0KCkgeworICAgIHJldHVybiB0aGlzLl9pbnN0YW5jZSAmJiB0aGlzLl9pbnN0YW5j
ZS5fcmVuZGVyZWRDb21wb25lbnQgJiYgdGhpcy5faW5zdGFuY2UuX3JlbmRlcmVkQ29tcG9uZW50
Ll9yZW5kZXJlZE91dHB1dCB8fCBudWxsOworICB9OworCisgIFJlYWN0U2hhbGxvd1JlbmRlcmVy
LnByb3RvdHlwZS51bm1vdW50ID0gZnVuY3Rpb24gdW5tb3VudCgpIHsKKyAgICBpZiAodGhpcy5f
aW5zdGFuY2UpIHsKKyAgICAgIFJlYWN0UmVjb25jaWxlci51bm1vdW50Q29tcG9uZW50KHRoaXMu
X2luc3RhbmNlLCBmYWxzZSk7CisgICAgfQorICB9OworCisgIFJlYWN0U2hhbGxvd1JlbmRlcmVy
LnByb3RvdHlwZS5fcmVuZGVyID0gZnVuY3Rpb24gX3JlbmRlcihlbGVtZW50LCB0cmFuc2FjdGlv
biwgY29udGV4dCkgeworICAgIGlmICh0aGlzLl9pbnN0YW5jZSkgeworICAgICAgUmVhY3RSZWNv
bmNpbGVyLnJlY2VpdmVDb21wb25lbnQodGhpcy5faW5zdGFuY2UsIGVsZW1lbnQsIHRyYW5zYWN0
aW9uLCBjb250ZXh0KTsKKyAgICB9IGVsc2UgeworICAgICAgdmFyIGluc3RhbmNlID0gbmV3IFNo
YWxsb3dDb21wb25lbnRXcmFwcGVyKGVsZW1lbnQpOworICAgICAgUmVhY3RSZWNvbmNpbGVyLm1v
dW50Q29tcG9uZW50KGluc3RhbmNlLCB0cmFuc2FjdGlvbiwgbnVsbCwgbnVsbCwgY29udGV4dCwg
MCk7CisgICAgICB0aGlzLl9pbnN0YW5jZSA9IGluc3RhbmNlOworICAgIH0KKyAgfTsKKworICBy
ZXR1cm4gUmVhY3RTaGFsbG93UmVuZGVyZXI7Cit9KCk7CisKK21vZHVsZS5leHBvcnRzID0gUmVh
Y3RTaGFsbG93UmVuZGVyZXI7Cit9LHsiMTE3IjoxMTcsIjEyNSI6MTI1LCIxMzQiOjEzNCwiMTQz
IjoxNDMsIjE1MCI6MTUwLCIxNTgiOjE1OCwiMzAiOjMwLCI1MiI6NTIsIjc1Ijo3NSwiODIiOjgy
fV0sODA6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmln
aHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUg
bGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rv
cnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50
IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJl
Y3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9wcm9kSW52YXJpYW50ID0g
X2RlcmVxXygxMjUpLAorICAgIF9hc3NpZ24gPSBfZGVyZXFfKDE1OCk7CisKK3ZhciBFdmVudENv
bnN0YW50cyA9IF9kZXJlcV8oMTYpOwordmFyIEV2ZW50UGx1Z2luSHViID0gX2RlcmVxXygxNyk7
Cit2YXIgRXZlbnRQbHVnaW5SZWdpc3RyeSA9IF9kZXJlcV8oMTgpOwordmFyIEV2ZW50UHJvcGFn
YXRvcnMgPSBfZGVyZXFfKDIwKTsKK3ZhciBSZWFjdCA9IF9kZXJlcV8oMTM0KTsKK3ZhciBSZWFj
dERPTSA9IF9kZXJlcV8oMzEpOwordmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IF9kZXJlcV8o
MzQpOwordmFyIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlciA9IF9kZXJlcV8oMjYpOwordmFyIFJl
YWN0SW5zdGFuY2VNYXAgPSBfZGVyZXFfKDYzKTsKK3ZhciBSZWFjdFVwZGF0ZXMgPSBfZGVyZXFf
KDgyKTsKK3ZhciBTeW50aGV0aWNFdmVudCA9IF9kZXJlcV8oOTEpOwordmFyIFJlYWN0U2hhbGxv
d1JlbmRlcmVyID0gX2RlcmVxXyg3OSk7CisKK3ZhciBmaW5kRE9NTm9kZSA9IF9kZXJlcV8oMTA4
KTsKK3ZhciBpbnZhcmlhbnQgPSBfZGVyZXFfKDE1MCk7CisKK3ZhciB0b3BMZXZlbFR5cGVzID0g
RXZlbnRDb25zdGFudHMudG9wTGV2ZWxUeXBlczsKKworZnVuY3Rpb24gRXZlbnQoc3VmZml4KSB7
fQorCisvKioKKyAqIEBjbGFzcyBSZWFjdFRlc3RVdGlscworICovCisKK2Z1bmN0aW9uIGZpbmRB
bGxJblJlbmRlcmVkVHJlZUludGVybmFsKGluc3QsIHRlc3QpIHsKKyAgaWYgKCFpbnN0IHx8ICFp
bnN0LmdldFB1YmxpY0luc3RhbmNlKSB7CisgICAgcmV0dXJuIFtdOworICB9CisgIHZhciBwdWJs
aWNJbnN0ID0gaW5zdC5nZXRQdWJsaWNJbnN0YW5jZSgpOworICB2YXIgcmV0ID0gdGVzdChwdWJs
aWNJbnN0KSA/IFtwdWJsaWNJbnN0XSA6IFtdOworICB2YXIgY3VycmVudEVsZW1lbnQgPSBpbnN0
Ll9jdXJyZW50RWxlbWVudDsKKyAgaWYgKFJlYWN0VGVzdFV0aWxzLmlzRE9NQ29tcG9uZW50KHB1
YmxpY0luc3QpKSB7CisgICAgdmFyIHJlbmRlcmVkQ2hpbGRyZW4gPSBpbnN0Ll9yZW5kZXJlZENo
aWxkcmVuOworICAgIHZhciBrZXk7CisgICAgZm9yIChrZXkgaW4gcmVuZGVyZWRDaGlsZHJlbikg
eworICAgICAgaWYgKCFyZW5kZXJlZENoaWxkcmVuLmhhc093blByb3BlcnR5KGtleSkpIHsKKyAg
ICAgICAgY29udGludWU7CisgICAgICB9CisgICAgICByZXQgPSByZXQuY29uY2F0KGZpbmRBbGxJ
blJlbmRlcmVkVHJlZUludGVybmFsKHJlbmRlcmVkQ2hpbGRyZW5ba2V5XSwgdGVzdCkpOworICAg
IH0KKyAgfSBlbHNlIGlmIChSZWFjdC5pc1ZhbGlkRWxlbWVudChjdXJyZW50RWxlbWVudCkgJiYg
dHlwZW9mIGN1cnJlbnRFbGVtZW50LnR5cGUgPT09ICdmdW5jdGlvbicpIHsKKyAgICByZXQgPSBy
ZXQuY29uY2F0KGZpbmRBbGxJblJlbmRlcmVkVHJlZUludGVybmFsKGluc3QuX3JlbmRlcmVkQ29t
cG9uZW50LCB0ZXN0KSk7CisgIH0KKyAgcmV0dXJuIHJldDsKK30KKworLyoqCisgKiBVdGlsaXRp
ZXMgZm9yIG1ha2luZyBpdCBlYXN5IHRvIHRlc3QgUmVhY3QgY29tcG9uZW50cy4KKyAqCisgKiBT
ZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90ZXN0LXV0aWxzLmh0bWwK
KyAqCisgKiBUb2RvOiBTdXBwb3J0IHRoZSBlbnRpcmUgRE9NLnNjcnkgcXVlcnkgc3ludGF4LiBG
b3Igbm93LCB0aGVzZSBzaW1wbGUKKyAqIHV0aWxpdGllcyB3aWxsIHN1ZmZpY2UgZm9yIHRlc3Rp
bmcgcHVycG9zZXMuCisgKiBAbGVuZHMgUmVhY3RUZXN0VXRpbHMKKyAqLwordmFyIFJlYWN0VGVz
dFV0aWxzID0geworICByZW5kZXJJbnRvRG9jdW1lbnQ6IGZ1bmN0aW9uIChlbGVtZW50KSB7Cisg
ICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIC8vIE5vbmUg
b2Ygb3VyIHRlc3RzIGFjdHVhbGx5IHJlcXVpcmUgYXR0YWNoaW5nIHRoZSBjb250YWluZXIgdG8g
dGhlCisgICAgLy8gRE9NLCBhbmQgZG9pbmcgc28gY3JlYXRlcyBhIG1lc3MgdGhhdCB3ZSByZWx5
IG9uIHRlc3QgaXNvbGF0aW9uIHRvCisgICAgLy8gY2xlYW4gdXAsIHNvIHdlJ3JlIGdvaW5nIHRv
IHN0b3AgaG9ub3JpbmcgdGhlIG5hbWUgb2YgdGhpcyBtZXRob2QKKyAgICAvLyAoYW5kIHByb2Jh
Ymx5IHJlbmFtZSBpdCBldmVudHVhbGx5KSBpZiBubyBwcm9ibGVtcyBhcmlzZS4KKyAgICAvLyBk
b2N1bWVudC5kb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoZGl2KTsKKyAgICByZXR1cm4gUmVh
Y3RET00ucmVuZGVyKGVsZW1lbnQsIGRpdik7CisgIH0sCisKKyAgaXNFbGVtZW50OiBmdW5jdGlv
biAoZWxlbWVudCkgeworICAgIHJldHVybiBSZWFjdC5pc1ZhbGlkRWxlbWVudChlbGVtZW50KTsK
KyAgfSwKKworICBpc0VsZW1lbnRPZlR5cGU6IGZ1bmN0aW9uIChpbnN0LCBjb252ZW5pZW5jZUNv
bnN0cnVjdG9yKSB7CisgICAgcmV0dXJuIFJlYWN0LmlzVmFsaWRFbGVtZW50KGluc3QpICYmIGlu
c3QudHlwZSA9PT0gY29udmVuaWVuY2VDb25zdHJ1Y3RvcjsKKyAgfSwKKworICBpc0RPTUNvbXBv
bmVudDogZnVuY3Rpb24gKGluc3QpIHsKKyAgICByZXR1cm4gISEoaW5zdCAmJiBpbnN0Lm5vZGVU
eXBlID09PSAxICYmIGluc3QudGFnTmFtZSk7CisgIH0sCisKKyAgaXNET01Db21wb25lbnRFbGVt
ZW50OiBmdW5jdGlvbiAoaW5zdCkgeworICAgIHJldHVybiAhIShpbnN0ICYmIFJlYWN0LmlzVmFs
aWRFbGVtZW50KGluc3QpICYmICEhaW5zdC50YWdOYW1lKTsKKyAgfSwKKworICBpc0NvbXBvc2l0
ZUNvbXBvbmVudDogZnVuY3Rpb24gKGluc3QpIHsKKyAgICBpZiAoUmVhY3RUZXN0VXRpbHMuaXNE
T01Db21wb25lbnQoaW5zdCkpIHsKKyAgICAgIC8vIEFjY2Vzc2luZyBpbnN0LnNldFN0YXRlIHdh
cm5zOyBqdXN0IHJldHVybiBmYWxzZSBhcyB0aGF0J2xsIGJlIHdoYXQKKyAgICAgIC8vIHRoaXMg
cmV0dXJucyB3aGVuIHdlIGhhdmUgRE9NIG5vZGVzIGFzIHJlZnMgZGlyZWN0bHkKKyAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIGluc3QgIT0gbnVsbCAmJiB0eXBlb2YgaW5z
dC5yZW5kZXIgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIGluc3Quc2V0U3RhdGUgPT09ICdmdW5j
dGlvbic7CisgIH0sCisKKyAgaXNDb21wb3NpdGVDb21wb25lbnRXaXRoVHlwZTogZnVuY3Rpb24g
KGluc3QsIHR5cGUpIHsKKyAgICBpZiAoIVJlYWN0VGVzdFV0aWxzLmlzQ29tcG9zaXRlQ29tcG9u
ZW50KGluc3QpKSB7CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHZhciBpbnRlcm5h
bEluc3RhbmNlID0gUmVhY3RJbnN0YW5jZU1hcC5nZXQoaW5zdCk7CisgICAgdmFyIGNvbnN0cnVj
dG9yID0gaW50ZXJuYWxJbnN0YW5jZS5fY3VycmVudEVsZW1lbnQudHlwZTsKKworICAgIHJldHVy
biBjb25zdHJ1Y3RvciA9PT0gdHlwZTsKKyAgfSwKKworICBpc0NvbXBvc2l0ZUNvbXBvbmVudEVs
ZW1lbnQ6IGZ1bmN0aW9uIChpbnN0KSB7CisgICAgaWYgKCFSZWFjdC5pc1ZhbGlkRWxlbWVudChp
bnN0KSkgeworICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAvLyBXZSBjaGVjayB0aGUg
cHJvdG90eXBlIG9mIHRoZSB0eXBlIHRoYXQgd2lsbCBnZXQgbW91bnRlZCwgbm90IHRoZQorICAg
IC8vIGluc3RhbmNlIGl0c2VsZi4gVGhpcyBpcyBhIGZ1dHVyZSBwcm9vZiB3YXkgb2YgZHVjayB0
eXBpbmcuCisgICAgdmFyIHByb3RvdHlwZSA9IGluc3QudHlwZS5wcm90b3R5cGU7CisgICAgcmV0
dXJuIHR5cGVvZiBwcm90b3R5cGUucmVuZGVyID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBwcm90
b3R5cGUuc2V0U3RhdGUgPT09ICdmdW5jdGlvbic7CisgIH0sCisKKyAgaXNDb21wb3NpdGVDb21w
b25lbnRFbGVtZW50V2l0aFR5cGU6IGZ1bmN0aW9uIChpbnN0LCB0eXBlKSB7CisgICAgdmFyIGlu
dGVybmFsSW5zdGFuY2UgPSBSZWFjdEluc3RhbmNlTWFwLmdldChpbnN0KTsKKyAgICB2YXIgY29u
c3RydWN0b3IgPSBpbnRlcm5hbEluc3RhbmNlLl9jdXJyZW50RWxlbWVudC50eXBlOworCisgICAg
cmV0dXJuICEhKFJlYWN0VGVzdFV0aWxzLmlzQ29tcG9zaXRlQ29tcG9uZW50RWxlbWVudChpbnN0
KSAmJiBjb25zdHJ1Y3RvciA9PT0gdHlwZSk7CisgIH0sCisKKyAgZ2V0UmVuZGVyZWRDaGlsZE9m
Q29tcG9zaXRlQ29tcG9uZW50OiBmdW5jdGlvbiAoaW5zdCkgeworICAgIGlmICghUmVhY3RUZXN0
VXRpbHMuaXNDb21wb3NpdGVDb21wb25lbnQoaW5zdCkpIHsKKyAgICAgIHJldHVybiBudWxsOwor
ICAgIH0KKyAgICB2YXIgaW50ZXJuYWxJbnN0YW5jZSA9IFJlYWN0SW5zdGFuY2VNYXAuZ2V0KGlu
c3QpOworICAgIHJldHVybiBpbnRlcm5hbEluc3RhbmNlLl9yZW5kZXJlZENvbXBvbmVudC5nZXRQ
dWJsaWNJbnN0YW5jZSgpOworICB9LAorCisgIGZpbmRBbGxJblJlbmRlcmVkVHJlZTogZnVuY3Rp
b24gKGluc3QsIHRlc3QpIHsKKyAgICBpZiAoIWluc3QpIHsKKyAgICAgIHJldHVybiBbXTsKKyAg
ICB9CisgICAgIVJlYWN0VGVzdFV0aWxzLmlzQ29tcG9zaXRlQ29tcG9uZW50KGluc3QpID8gImRl
dmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnZmluZEFsbElu
UmVuZGVyZWRUcmVlKC4uLik6IGluc3RhbmNlIG11c3QgYmUgYSBjb21wb3NpdGUgY29tcG9uZW50
JykgOiBfcHJvZEludmFyaWFudCgnMTAnKSA6IHZvaWQgMDsKKyAgICByZXR1cm4gZmluZEFsbElu
UmVuZGVyZWRUcmVlSW50ZXJuYWwoUmVhY3RJbnN0YW5jZU1hcC5nZXQoaW5zdCksIHRlc3QpOwor
ICB9LAorCisgIC8qKgorICAgKiBGaW5kcyBhbGwgaW5zdGFuY2Ugb2YgY29tcG9uZW50cyBpbiB0
aGUgcmVuZGVyZWQgdHJlZSB0aGF0IGFyZSBET00KKyAgICogY29tcG9uZW50cyB3aXRoIHRoZSBj
bGFzcyBuYW1lIG1hdGNoaW5nIGBjbGFzc05hbWVgLgorICAgKiBAcmV0dXJuIHthcnJheX0gYW4g
YXJyYXkgb2YgYWxsIHRoZSBtYXRjaGVzLgorICAgKi8KKyAgc2NyeVJlbmRlcmVkRE9NQ29tcG9u
ZW50c1dpdGhDbGFzczogZnVuY3Rpb24gKHJvb3QsIGNsYXNzTmFtZXMpIHsKKyAgICByZXR1cm4g
UmVhY3RUZXN0VXRpbHMuZmluZEFsbEluUmVuZGVyZWRUcmVlKHJvb3QsIGZ1bmN0aW9uIChpbnN0
KSB7CisgICAgICBpZiAoUmVhY3RUZXN0VXRpbHMuaXNET01Db21wb25lbnQoaW5zdCkpIHsKKyAg
ICAgICAgdmFyIGNsYXNzTmFtZSA9IGluc3QuY2xhc3NOYW1lOworICAgICAgICBpZiAodHlwZW9m
IGNsYXNzTmFtZSAhPT0gJ3N0cmluZycpIHsKKyAgICAgICAgICAvLyBTVkcsIHByb2JhYmx5Lgor
ICAgICAgICAgIGNsYXNzTmFtZSA9IGluc3QuZ2V0QXR0cmlidXRlKCdjbGFzcycpIHx8ICcnOwor
ICAgICAgICB9CisgICAgICAgIHZhciBjbGFzc0xpc3QgPSBjbGFzc05hbWUuc3BsaXQoL1xzKy8p
OworCisgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShjbGFzc05hbWVzKSkgeworICAgICAgICAg
ICEoY2xhc3NOYW1lcyAhPT0gdW5kZWZpbmVkKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0
aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1Rlc3RVdGlscy5zY3J5UmVuZGVyZWRET01Db21wb25l
bnRzV2l0aENsYXNzIGV4cGVjdHMgYSBjbGFzc05hbWUgYXMgYSBzZWNvbmQgYXJndW1lbnQuJykg
OiBfcHJvZEludmFyaWFudCgnMTEnKSA6IHZvaWQgMDsKKyAgICAgICAgICBjbGFzc05hbWVzID0g
Y2xhc3NOYW1lcy5zcGxpdCgvXHMrLyk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGNsYXNz
TmFtZXMuZXZlcnkoZnVuY3Rpb24gKG5hbWUpIHsKKyAgICAgICAgICByZXR1cm4gY2xhc3NMaXN0
LmluZGV4T2YobmFtZSkgIT09IC0xOworICAgICAgICB9KTsKKyAgICAgIH0KKyAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9KTsKKyAgfSwKKworICAvKioKKyAgICogTGlrZSBzY3J5UmVuZGVyZWRE
T01Db21wb25lbnRzV2l0aENsYXNzIGJ1dCBleHBlY3RzIHRoZXJlIHRvIGJlIG9uZSByZXN1bHQs
CisgICAqIGFuZCByZXR1cm5zIHRoYXQgb25lIHJlc3VsdCwgb3IgdGhyb3dzIGV4Y2VwdGlvbiBp
ZiB0aGVyZSBpcyBhbnkgb3RoZXIKKyAgICogbnVtYmVyIG9mIG1hdGNoZXMgYmVzaWRlcyBvbmUu
CisgICAqIEByZXR1cm4geyFSZWFjdERPTUNvbXBvbmVudH0gVGhlIG9uZSBtYXRjaC4KKyAgICov
CisgIGZpbmRSZW5kZXJlZERPTUNvbXBvbmVudFdpdGhDbGFzczogZnVuY3Rpb24gKHJvb3QsIGNs
YXNzTmFtZSkgeworICAgIHZhciBhbGwgPSBSZWFjdFRlc3RVdGlscy5zY3J5UmVuZGVyZWRET01D
b21wb25lbnRzV2l0aENsYXNzKHJvb3QsIGNsYXNzTmFtZSk7CisgICAgaWYgKGFsbC5sZW5ndGgg
IT09IDEpIHsKKyAgICAgIHRocm93IG5ldyBFcnJvcignRGlkIG5vdCBmaW5kIGV4YWN0bHkgb25l
IG1hdGNoIChmb3VuZDogJyArIGFsbC5sZW5ndGggKyAnKSAnICsgJ2ZvciBjbGFzczonICsgY2xh
c3NOYW1lKTsKKyAgICB9CisgICAgcmV0dXJuIGFsbFswXTsKKyAgfSwKKworICAvKioKKyAgICog
RmluZHMgYWxsIGluc3RhbmNlIG9mIGNvbXBvbmVudHMgaW4gdGhlIHJlbmRlcmVkIHRyZWUgdGhh
dCBhcmUgRE9NCisgICAqIGNvbXBvbmVudHMgd2l0aCB0aGUgdGFnIG5hbWUgbWF0Y2hpbmcgYHRh
Z05hbWVgLgorICAgKiBAcmV0dXJuIHthcnJheX0gYW4gYXJyYXkgb2YgYWxsIHRoZSBtYXRjaGVz
LgorICAgKi8KKyAgc2NyeVJlbmRlcmVkRE9NQ29tcG9uZW50c1dpdGhUYWc6IGZ1bmN0aW9uIChy
b290LCB0YWdOYW1lKSB7CisgICAgcmV0dXJuIFJlYWN0VGVzdFV0aWxzLmZpbmRBbGxJblJlbmRl
cmVkVHJlZShyb290LCBmdW5jdGlvbiAoaW5zdCkgeworICAgICAgcmV0dXJuIFJlYWN0VGVzdFV0
aWxzLmlzRE9NQ29tcG9uZW50KGluc3QpICYmIGluc3QudGFnTmFtZS50b1VwcGVyQ2FzZSgpID09
PSB0YWdOYW1lLnRvVXBwZXJDYXNlKCk7CisgICAgfSk7CisgIH0sCisKKyAgLyoqCisgICAqIExp
a2Ugc2NyeVJlbmRlcmVkRE9NQ29tcG9uZW50c1dpdGhUYWcgYnV0IGV4cGVjdHMgdGhlcmUgdG8g
YmUgb25lIHJlc3VsdCwKKyAgICogYW5kIHJldHVybnMgdGhhdCBvbmUgcmVzdWx0LCBvciB0aHJv
d3MgZXhjZXB0aW9uIGlmIHRoZXJlIGlzIGFueSBvdGhlcgorICAgKiBudW1iZXIgb2YgbWF0Y2hl
cyBiZXNpZGVzIG9uZS4KKyAgICogQHJldHVybiB7IVJlYWN0RE9NQ29tcG9uZW50fSBUaGUgb25l
IG1hdGNoLgorICAgKi8KKyAgZmluZFJlbmRlcmVkRE9NQ29tcG9uZW50V2l0aFRhZzogZnVuY3Rp
b24gKHJvb3QsIHRhZ05hbWUpIHsKKyAgICB2YXIgYWxsID0gUmVhY3RUZXN0VXRpbHMuc2NyeVJl
bmRlcmVkRE9NQ29tcG9uZW50c1dpdGhUYWcocm9vdCwgdGFnTmFtZSk7CisgICAgaWYgKGFsbC5s
ZW5ndGggIT09IDEpIHsKKyAgICAgIHRocm93IG5ldyBFcnJvcignRGlkIG5vdCBmaW5kIGV4YWN0
bHkgb25lIG1hdGNoIChmb3VuZDogJyArIGFsbC5sZW5ndGggKyAnKSAnICsgJ2ZvciB0YWc6JyAr
IHRhZ05hbWUpOworICAgIH0KKyAgICByZXR1cm4gYWxsWzBdOworICB9LAorCisgIC8qKgorICAg
KiBGaW5kcyBhbGwgaW5zdGFuY2VzIG9mIGNvbXBvbmVudHMgd2l0aCB0eXBlIGVxdWFsIHRvIGBj
b21wb25lbnRUeXBlYC4KKyAgICogQHJldHVybiB7YXJyYXl9IGFuIGFycmF5IG9mIGFsbCB0aGUg
bWF0Y2hlcy4KKyAgICovCisgIHNjcnlSZW5kZXJlZENvbXBvbmVudHNXaXRoVHlwZTogZnVuY3Rp
b24gKHJvb3QsIGNvbXBvbmVudFR5cGUpIHsKKyAgICByZXR1cm4gUmVhY3RUZXN0VXRpbHMuZmlu
ZEFsbEluUmVuZGVyZWRUcmVlKHJvb3QsIGZ1bmN0aW9uIChpbnN0KSB7CisgICAgICByZXR1cm4g
UmVhY3RUZXN0VXRpbHMuaXNDb21wb3NpdGVDb21wb25lbnRXaXRoVHlwZShpbnN0LCBjb21wb25l
bnRUeXBlKTsKKyAgICB9KTsKKyAgfSwKKworICAvKioKKyAgICogU2FtZSBhcyBgc2NyeVJlbmRl
cmVkQ29tcG9uZW50c1dpdGhUeXBlYCBidXQgZXhwZWN0cyB0aGVyZSB0byBiZSBvbmUgcmVzdWx0
CisgICAqIGFuZCByZXR1cm5zIHRoYXQgb25lIHJlc3VsdCwgb3IgdGhyb3dzIGV4Y2VwdGlvbiBp
ZiB0aGVyZSBpcyBhbnkgb3RoZXIKKyAgICogbnVtYmVyIG9mIG1hdGNoZXMgYmVzaWRlcyBvbmUu
CisgICAqIEByZXR1cm4geyFSZWFjdENvbXBvbmVudH0gVGhlIG9uZSBtYXRjaC4KKyAgICovCisg
IGZpbmRSZW5kZXJlZENvbXBvbmVudFdpdGhUeXBlOiBmdW5jdGlvbiAocm9vdCwgY29tcG9uZW50
VHlwZSkgeworICAgIHZhciBhbGwgPSBSZWFjdFRlc3RVdGlscy5zY3J5UmVuZGVyZWRDb21wb25l
bnRzV2l0aFR5cGUocm9vdCwgY29tcG9uZW50VHlwZSk7CisgICAgaWYgKGFsbC5sZW5ndGggIT09
IDEpIHsKKyAgICAgIHRocm93IG5ldyBFcnJvcignRGlkIG5vdCBmaW5kIGV4YWN0bHkgb25lIG1h
dGNoIChmb3VuZDogJyArIGFsbC5sZW5ndGggKyAnKSAnICsgJ2ZvciBjb21wb25lbnRUeXBlOicg
KyBjb21wb25lbnRUeXBlKTsKKyAgICB9CisgICAgcmV0dXJuIGFsbFswXTsKKyAgfSwKKworICAv
KioKKyAgICogUGFzcyBhIG1vY2tlZCBjb21wb25lbnQgbW9kdWxlIHRvIHRoaXMgbWV0aG9kIHRv
IGF1Z21lbnQgaXQgd2l0aAorICAgKiB1c2VmdWwgbWV0aG9kcyB0aGF0IGFsbG93IGl0IHRvIGJl
IHVzZWQgYXMgYSBkdW1teSBSZWFjdCBjb21wb25lbnQuCisgICAqIEluc3RlYWQgb2YgcmVuZGVy
aW5nIGFzIHVzdWFsLCB0aGUgY29tcG9uZW50IHdpbGwgYmVjb21lIGEgc2ltcGxlCisgICAqIDxk
aXY+IGNvbnRhaW5pbmcgYW55IHByb3ZpZGVkIGNoaWxkcmVuLgorICAgKgorICAgKiBAcGFyYW0g
e29iamVjdH0gbW9kdWxlIHRoZSBtb2NrIGZ1bmN0aW9uIG9iamVjdCBleHBvcnRlZCBmcm9tIGEK
KyAgICogICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUgdGhhdCBkZWZpbmVzIHRoZSBjb21w
b25lbnQgdG8gYmUgbW9ja2VkCisgICAqIEBwYXJhbSB7P3N0cmluZ30gbW9ja1RhZ05hbWUgb3B0
aW9uYWwgZHVtbXkgcm9vdCB0YWcgbmFtZSB0byByZXR1cm4KKyAgICogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmcm9tIHJlbmRlciBtZXRob2QgKG92ZXJyaWRlcworICAgKiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZS5tb2NrVGFnTmFtZSBpZiBwcm92aWRlZCkKKyAg
ICogQHJldHVybiB7b2JqZWN0fSB0aGUgUmVhY3RUZXN0VXRpbHMgb2JqZWN0IChmb3IgY2hhaW5p
bmcpCisgICAqLworICBtb2NrQ29tcG9uZW50OiBmdW5jdGlvbiAobW9kdWxlLCBtb2NrVGFnTmFt
ZSkgeworICAgIG1vY2tUYWdOYW1lID0gbW9ja1RhZ05hbWUgfHwgbW9kdWxlLm1vY2tUYWdOYW1l
IHx8ICdkaXYnOworCisgICAgbW9kdWxlLnByb3RvdHlwZS5yZW5kZXIubW9ja0ltcGxlbWVudGF0
aW9uKGZ1bmN0aW9uICgpIHsKKyAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KG1vY2tU
YWdOYW1lLCBudWxsLCB0aGlzLnByb3BzLmNoaWxkcmVuKTsKKyAgICB9KTsKKworICAgIHJldHVy
biB0aGlzOworICB9LAorCisgIC8qKgorICAgKiBTaW11bGF0ZXMgYSB0b3AgbGV2ZWwgZXZlbnQg
YmVpbmcgZGlzcGF0Y2hlZCBmcm9tIGEgcmF3IGV2ZW50IHRoYXQgb2NjdXJyZWQKKyAgICogb24g
YW4gYEVsZW1lbnRgIG5vZGUuCisgICAqIEBwYXJhbSB7T2JqZWN0fSB0b3BMZXZlbFR5cGUgQSB0
eXBlIGZyb20gYEV2ZW50Q29uc3RhbnRzLnRvcExldmVsVHlwZXNgCisgICAqIEBwYXJhbSB7IUVs
ZW1lbnR9IG5vZGUgVGhlIGRvbSB0byBzaW11bGF0ZSBhbiBldmVudCBvY2N1cnJpbmcgb24uCisg
ICAqIEBwYXJhbSB7P0V2ZW50fSBmYWtlTmF0aXZlRXZlbnQgRmFrZSBuYXRpdmUgZXZlbnQgdG8g
dXNlIGluIFN5bnRoZXRpY0V2ZW50LgorICAgKi8KKyAgc2ltdWxhdGVOYXRpdmVFdmVudE9uTm9k
ZTogZnVuY3Rpb24gKHRvcExldmVsVHlwZSwgbm9kZSwgZmFrZU5hdGl2ZUV2ZW50KSB7CisgICAg
ZmFrZU5hdGl2ZUV2ZW50LnRhcmdldCA9IG5vZGU7CisgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0
dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci5kaXNwYXRjaEV2ZW50KHRvcExldmVsVHlwZSwgZmFrZU5h
dGl2ZUV2ZW50KTsKKyAgfSwKKworICAvKioKKyAgICogU2ltdWxhdGVzIGEgdG9wIGxldmVsIGV2
ZW50IGJlaW5nIGRpc3BhdGNoZWQgZnJvbSBhIHJhdyBldmVudCB0aGF0IG9jY3VycmVkCisgICAq
IG9uIHRoZSBgUmVhY3RET01Db21wb25lbnRgIGBjb21wYC4KKyAgICogQHBhcmFtIHtPYmplY3R9
IHRvcExldmVsVHlwZSBBIHR5cGUgZnJvbSBgRXZlbnRDb25zdGFudHMudG9wTGV2ZWxUeXBlc2Au
CisgICAqIEBwYXJhbSB7IVJlYWN0RE9NQ29tcG9uZW50fSBjb21wCisgICAqIEBwYXJhbSB7P0V2
ZW50fSBmYWtlTmF0aXZlRXZlbnQgRmFrZSBuYXRpdmUgZXZlbnQgdG8gdXNlIGluIFN5bnRoZXRp
Y0V2ZW50LgorICAgKi8KKyAgc2ltdWxhdGVOYXRpdmVFdmVudE9uRE9NQ29tcG9uZW50OiBmdW5j
dGlvbiAodG9wTGV2ZWxUeXBlLCBjb21wLCBmYWtlTmF0aXZlRXZlbnQpIHsKKyAgICBSZWFjdFRl
c3RVdGlscy5zaW11bGF0ZU5hdGl2ZUV2ZW50T25Ob2RlKHRvcExldmVsVHlwZSwgZmluZERPTU5v
ZGUoY29tcCksIGZha2VOYXRpdmVFdmVudCk7CisgIH0sCisKKyAgbmF0aXZlVG91Y2hEYXRhOiBm
dW5jdGlvbiAoeCwgeSkgeworICAgIHJldHVybiB7CisgICAgICB0b3VjaGVzOiBbeyBwYWdlWDog
eCwgcGFnZVk6IHkgfV0KKyAgICB9OworICB9LAorCisgIGNyZWF0ZVJlbmRlcmVyOiBmdW5jdGlv
biAoKSB7CisgICAgcmV0dXJuIG5ldyBSZWFjdFNoYWxsb3dSZW5kZXJlcigpOworICB9LAorCisg
IFNpbXVsYXRlOiBudWxsLAorICBTaW11bGF0ZU5hdGl2ZToge30KK307CisKKy8qKgorICogRXhw
b3J0czoKKyAqCisgKiAtIGBSZWFjdFRlc3RVdGlscy5TaW11bGF0ZS5jbGljayhFbGVtZW50L1Jl
YWN0RE9NQ29tcG9uZW50KWAKKyAqIC0gYFJlYWN0VGVzdFV0aWxzLlNpbXVsYXRlLm1vdXNlTW92
ZShFbGVtZW50L1JlYWN0RE9NQ29tcG9uZW50KWAKKyAqIC0gYFJlYWN0VGVzdFV0aWxzLlNpbXVs
YXRlLmNoYW5nZShFbGVtZW50L1JlYWN0RE9NQ29tcG9uZW50KWAKKyAqIC0gLi4uIChBbGwga2V5
cyBmcm9tIGV2ZW50IHBsdWdpbiBgZXZlbnRUeXBlc2Agb2JqZWN0cykKKyAqLworZnVuY3Rpb24g
bWFrZVNpbXVsYXRvcihldmVudFR5cGUpIHsKKyAgcmV0dXJuIGZ1bmN0aW9uIChkb21Db21wb25l
bnRPck5vZGUsIGV2ZW50RGF0YSkgeworICAgIHZhciBub2RlOworICAgICEhUmVhY3QuaXNWYWxp
ZEVsZW1lbnQoZG9tQ29tcG9uZW50T3JOb2RlKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0
aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1Rlc3RVdGlscy5TaW11bGF0ZSBleHBlY3RzIGEgY29t
cG9uZW50IGluc3RhbmNlIGFuZCBub3QgYSBSZWFjdEVsZW1lbnQuVGVzdFV0aWxzLlNpbXVsYXRl
IHdpbGwgbm90IHdvcmsgaWYgeW91IGFyZSB1c2luZyBzaGFsbG93IHJlbmRlcmluZy4nKSA6IF9w
cm9kSW52YXJpYW50KCcxNCcpIDogdm9pZCAwOworICAgIGlmIChSZWFjdFRlc3RVdGlscy5pc0RP
TUNvbXBvbmVudChkb21Db21wb25lbnRPck5vZGUpKSB7CisgICAgICBub2RlID0gZmluZERPTU5v
ZGUoZG9tQ29tcG9uZW50T3JOb2RlKTsKKyAgICB9IGVsc2UgaWYgKGRvbUNvbXBvbmVudE9yTm9k
ZS50YWdOYW1lKSB7CisgICAgICBub2RlID0gZG9tQ29tcG9uZW50T3JOb2RlOworICAgIH0KKwor
ICAgIHZhciBkaXNwYXRjaENvbmZpZyA9IEV2ZW50UGx1Z2luUmVnaXN0cnkuZXZlbnROYW1lRGlz
cGF0Y2hDb25maWdzW2V2ZW50VHlwZV07CisKKyAgICB2YXIgZmFrZU5hdGl2ZUV2ZW50ID0gbmV3
IEV2ZW50KCk7CisgICAgZmFrZU5hdGl2ZUV2ZW50LnRhcmdldCA9IG5vZGU7CisgICAgZmFrZU5h
dGl2ZUV2ZW50LnR5cGUgPSBldmVudFR5cGUudG9Mb3dlckNhc2UoKTsKKworICAgIC8vIFdlIGRv
bid0IHVzZSBTeW50aGV0aWNFdmVudC5nZXRQb29sZWQgaW4gb3JkZXIgdG8gbm90IGhhdmUgdG8g
d29ycnkgYWJvdXQKKyAgICAvLyBwcm9wZXJseSBkZXN0cm95aW5nIGFueSBwcm9wZXJ0aWVzIGFz
c2lnbmVkIGZyb20gYGV2ZW50RGF0YWAgdXBvbiByZWxlYXNlCisgICAgdmFyIGV2ZW50ID0gbmV3
IFN5bnRoZXRpY0V2ZW50KGRpc3BhdGNoQ29uZmlnLCBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0
SW5zdGFuY2VGcm9tTm9kZShub2RlKSwgZmFrZU5hdGl2ZUV2ZW50LCBub2RlKTsKKyAgICAvLyBT
aW5jZSB3ZSBhcmVuJ3QgdXNpbmcgcG9vbGluZywgYWx3YXlzIHBlcnNpc3QgdGhlIGV2ZW50LiBU
aGlzIHdpbGwgbWFrZQorICAgIC8vIHN1cmUgaXQncyBtYXJrZWQgYW5kIHdvbid0IHdhcm4gd2hl
biBzZXR0aW5nIGFkZGl0aW9uYWwgcHJvcGVydGllcy4KKyAgICBldmVudC5wZXJzaXN0KCk7Cisg
ICAgX2Fzc2lnbihldmVudCwgZXZlbnREYXRhKTsKKworICAgIGlmIChkaXNwYXRjaENvbmZpZy5w
aGFzZWRSZWdpc3RyYXRpb25OYW1lcykgeworICAgICAgRXZlbnRQcm9wYWdhdG9ycy5hY2N1bXVs
YXRlVHdvUGhhc2VEaXNwYXRjaGVzKGV2ZW50KTsKKyAgICB9IGVsc2UgeworICAgICAgRXZlbnRQ
cm9wYWdhdG9ycy5hY2N1bXVsYXRlRGlyZWN0RGlzcGF0Y2hlcyhldmVudCk7CisgICAgfQorCisg
ICAgUmVhY3RVcGRhdGVzLmJhdGNoZWRVcGRhdGVzKGZ1bmN0aW9uICgpIHsKKyAgICAgIEV2ZW50
UGx1Z2luSHViLmVucXVldWVFdmVudHMoZXZlbnQpOworICAgICAgRXZlbnRQbHVnaW5IdWIucHJv
Y2Vzc0V2ZW50UXVldWUodHJ1ZSk7CisgICAgfSk7CisgIH07Cit9CisKK2Z1bmN0aW9uIGJ1aWxk
U2ltdWxhdG9ycygpIHsKKyAgUmVhY3RUZXN0VXRpbHMuU2ltdWxhdGUgPSB7fTsKKworICB2YXIg
ZXZlbnRUeXBlOworICBmb3IgKGV2ZW50VHlwZSBpbiBFdmVudFBsdWdpblJlZ2lzdHJ5LmV2ZW50
TmFtZURpc3BhdGNoQ29uZmlncykgeworICAgIC8qKgorICAgICAqIEBwYXJhbSB7IUVsZW1lbnR8
UmVhY3RET01Db21wb25lbnR9IGRvbUNvbXBvbmVudE9yTm9kZQorICAgICAqIEBwYXJhbSB7P29i
amVjdH0gZXZlbnREYXRhIEZha2UgZXZlbnQgZGF0YSB0byB1c2UgaW4gU3ludGhldGljRXZlbnQu
CisgICAgICovCisgICAgUmVhY3RUZXN0VXRpbHMuU2ltdWxhdGVbZXZlbnRUeXBlXSA9IG1ha2VT
aW11bGF0b3IoZXZlbnRUeXBlKTsKKyAgfQorfQorCisvLyBSZWJ1aWxkIFJlYWN0VGVzdFV0aWxz
LlNpbXVsYXRlIHdoZW5ldmVyIGV2ZW50IHBsdWdpbnMgYXJlIGluamVjdGVkCit2YXIgb2xkSW5q
ZWN0RXZlbnRQbHVnaW5PcmRlciA9IEV2ZW50UGx1Z2luSHViLmluamVjdGlvbi5pbmplY3RFdmVu
dFBsdWdpbk9yZGVyOworRXZlbnRQbHVnaW5IdWIuaW5qZWN0aW9uLmluamVjdEV2ZW50UGx1Z2lu
T3JkZXIgPSBmdW5jdGlvbiAoKSB7CisgIG9sZEluamVjdEV2ZW50UGx1Z2luT3JkZXIuYXBwbHko
dGhpcywgYXJndW1lbnRzKTsKKyAgYnVpbGRTaW11bGF0b3JzKCk7Cit9OwordmFyIG9sZEluamVj
dEV2ZW50UGx1Z2lucyA9IEV2ZW50UGx1Z2luSHViLmluamVjdGlvbi5pbmplY3RFdmVudFBsdWdp
bnNCeU5hbWU7CitFdmVudFBsdWdpbkh1Yi5pbmplY3Rpb24uaW5qZWN0RXZlbnRQbHVnaW5zQnlO
YW1lID0gZnVuY3Rpb24gKCkgeworICBvbGRJbmplY3RFdmVudFBsdWdpbnMuYXBwbHkodGhpcywg
YXJndW1lbnRzKTsKKyAgYnVpbGRTaW11bGF0b3JzKCk7Cit9OworCitidWlsZFNpbXVsYXRvcnMo
KTsKKworLyoqCisgKiBFeHBvcnRzOgorICoKKyAqIC0gYFJlYWN0VGVzdFV0aWxzLlNpbXVsYXRl
TmF0aXZlLmNsaWNrKEVsZW1lbnQvUmVhY3RET01Db21wb25lbnQpYAorICogLSBgUmVhY3RUZXN0
VXRpbHMuU2ltdWxhdGVOYXRpdmUubW91c2VNb3ZlKEVsZW1lbnQvUmVhY3RET01Db21wb25lbnQp
YAorICogLSBgUmVhY3RUZXN0VXRpbHMuU2ltdWxhdGVOYXRpdmUubW91c2VJbi9SZWFjdERPTUNv
bXBvbmVudClgCisgKiAtIGBSZWFjdFRlc3RVdGlscy5TaW11bGF0ZU5hdGl2ZS5tb3VzZU91dChF
bGVtZW50L1JlYWN0RE9NQ29tcG9uZW50KWAKKyAqIC0gLi4uIChBbGwga2V5cyBmcm9tIGBFdmVu
dENvbnN0YW50cy50b3BMZXZlbFR5cGVzYCkKKyAqCisgKiBOb3RlOiBUb3AgbGV2ZWwgZXZlbnQg
dHlwZXMgYXJlIGEgc3Vic2V0IG9mIHRoZSBlbnRpcmUgc2V0IG9mIGhhbmRsZXIgdHlwZXMKKyAq
ICh3aGljaCBpbmNsdWRlIGEgYnJvYWRlciBzZXQgb2YgInN5bnRoZXRpYyIgZXZlbnRzKS4gRm9y
IGV4YW1wbGUsIG9uRHJhZ0RvbmUKKyAqIGlzIGEgc3ludGhldGljIGV2ZW50LiBFeGNlcHQgd2hl
biB0ZXN0aW5nIGFuIGV2ZW50IHBsdWdpbiBvciBSZWFjdCdzIGV2ZW50CisgKiBoYW5kbGluZyBj
b2RlIHNwZWNpZmljYWxseSwgeW91IHByb2JhYmx5IHdhbnQgdG8gdXNlIFJlYWN0VGVzdFV0aWxz
LlNpbXVsYXRlCisgKiB0byBkaXNwYXRjaCBzeW50aGV0aWMgZXZlbnRzLgorICovCisKK2Z1bmN0
aW9uIG1ha2VOYXRpdmVTaW11bGF0b3IoZXZlbnRUeXBlKSB7CisgIHJldHVybiBmdW5jdGlvbiAo
ZG9tQ29tcG9uZW50T3JOb2RlLCBuYXRpdmVFdmVudERhdGEpIHsKKyAgICB2YXIgZmFrZU5hdGl2
ZUV2ZW50ID0gbmV3IEV2ZW50KGV2ZW50VHlwZSk7CisgICAgX2Fzc2lnbihmYWtlTmF0aXZlRXZl
bnQsIG5hdGl2ZUV2ZW50RGF0YSk7CisgICAgaWYgKFJlYWN0VGVzdFV0aWxzLmlzRE9NQ29tcG9u
ZW50KGRvbUNvbXBvbmVudE9yTm9kZSkpIHsKKyAgICAgIFJlYWN0VGVzdFV0aWxzLnNpbXVsYXRl
TmF0aXZlRXZlbnRPbkRPTUNvbXBvbmVudChldmVudFR5cGUsIGRvbUNvbXBvbmVudE9yTm9kZSwg
ZmFrZU5hdGl2ZUV2ZW50KTsKKyAgICB9IGVsc2UgaWYgKGRvbUNvbXBvbmVudE9yTm9kZS50YWdO
YW1lKSB7CisgICAgICAvLyBXaWxsIGFsbG93IG9uIGFjdHVhbCBkb20gbm9kZXMuCisgICAgICBS
ZWFjdFRlc3RVdGlscy5zaW11bGF0ZU5hdGl2ZUV2ZW50T25Ob2RlKGV2ZW50VHlwZSwgZG9tQ29t
cG9uZW50T3JOb2RlLCBmYWtlTmF0aXZlRXZlbnQpOworICAgIH0KKyAgfTsKK30KKworT2JqZWN0
LmtleXModG9wTGV2ZWxUeXBlcykuZm9yRWFjaChmdW5jdGlvbiAoZXZlbnRUeXBlKSB7CisgIC8v
IEV2ZW50IHR5cGUgaXMgc3RvcmVkIGFzICd0b3BDbGljaycgLSB3ZSB0cmFuc2Zvcm0gdGhhdCB0
byAnY2xpY2snCisgIHZhciBjb252ZW5pZW5jZU5hbWUgPSBldmVudFR5cGUuaW5kZXhPZigndG9w
JykgPT09IDAgPyBldmVudFR5cGUuY2hhckF0KDMpLnRvTG93ZXJDYXNlKCkgKyBldmVudFR5cGUu
c3Vic3RyKDQpIDogZXZlbnRUeXBlOworICAvKioKKyAgICogQHBhcmFtIHshRWxlbWVudHxSZWFj
dERPTUNvbXBvbmVudH0gZG9tQ29tcG9uZW50T3JOb2RlCisgICAqIEBwYXJhbSB7P0V2ZW50fSBu
YXRpdmVFdmVudERhdGEgRmFrZSBuYXRpdmUgZXZlbnQgdG8gdXNlIGluIFN5bnRoZXRpY0V2ZW50
LgorICAgKi8KKyAgUmVhY3RUZXN0VXRpbHMuU2ltdWxhdGVOYXRpdmVbY29udmVuaWVuY2VOYW1l
XSA9IG1ha2VOYXRpdmVTaW11bGF0b3IoZXZlbnRUeXBlKTsKK30pOworCittb2R1bGUuZXhwb3J0
cyA9IFJlYWN0VGVzdFV0aWxzOworfSx7IjEwOCI6MTA4LCIxMjUiOjEyNSwiMTM0IjoxMzQsIjE1
MCI6MTUwLCIxNTgiOjE1OCwiMTYiOjE2LCIxNyI6MTcsIjE4IjoxOCwiMjAiOjIwLCIyNiI6MjYs
IjMxIjozMSwiMzQiOjM0LCI2MyI6NjMsIjc5Ijo3OSwiODIiOjgyLCI5MSI6OTF9XSw4MTpbZnVu
Y3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDE1LXBy
ZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRo
aXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZv
dW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlz
IHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNh
biBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAq
CisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJbnZhcmlhbnQgPSBfZGVyZXFfKDEy
NSk7CisKK3ZhciBSZWFjdEN1cnJlbnRPd25lciA9IF9kZXJlcV8oMTMzKTsKK3ZhciBSZWFjdElu
c3RhbmNlTWFwID0gX2RlcmVxXyg2Myk7Cit2YXIgUmVhY3RJbnN0cnVtZW50YXRpb24gPSBfZGVy
ZXFfKDY0KTsKK3ZhciBSZWFjdFVwZGF0ZXMgPSBfZGVyZXFfKDgyKTsKKwordmFyIGludmFyaWFu
dCA9IF9kZXJlcV8oMTUwKTsKK3ZhciB3YXJuaW5nID0gX2RlcmVxXygxNTcpOworCitmdW5jdGlv
biBlbnF1ZXVlVXBkYXRlKGludGVybmFsSW5zdGFuY2UpIHsKKyAgUmVhY3RVcGRhdGVzLmVucXVl
dWVVcGRhdGUoaW50ZXJuYWxJbnN0YW5jZSk7Cit9CisKK2Z1bmN0aW9uIGZvcm1hdFVuZXhwZWN0
ZWRBcmd1bWVudChhcmcpIHsKKyAgdmFyIHR5cGUgPSB0eXBlb2YgYXJnOworICBpZiAodHlwZSAh
PT0gJ29iamVjdCcpIHsKKyAgICByZXR1cm4gdHlwZTsKKyAgfQorICB2YXIgZGlzcGxheU5hbWUg
PSBhcmcuY29uc3RydWN0b3IgJiYgYXJnLmNvbnN0cnVjdG9yLm5hbWUgfHwgdHlwZTsKKyAgdmFy
IGtleXMgPSBPYmplY3Qua2V5cyhhcmcpOworICBpZiAoa2V5cy5sZW5ndGggPiAwICYmIGtleXMu
bGVuZ3RoIDwgMjApIHsKKyAgICByZXR1cm4gZGlzcGxheU5hbWUgKyAnIChrZXlzOiAnICsga2V5
cy5qb2luKCcsICcpICsgJyknOworICB9CisgIHJldHVybiBkaXNwbGF5TmFtZTsKK30KKworZnVu
Y3Rpb24gZ2V0SW50ZXJuYWxJbnN0YW5jZVJlYWR5Rm9yVXBkYXRlKHB1YmxpY0luc3RhbmNlLCBj
YWxsZXJOYW1lKSB7CisgIHZhciBpbnRlcm5hbEluc3RhbmNlID0gUmVhY3RJbnN0YW5jZU1hcC5n
ZXQocHVibGljSW5zdGFuY2UpOworICBpZiAoIWludGVybmFsSW5zdGFuY2UpIHsKKyAgICBpZiAo
ImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICB2YXIgY3RvciA9IHB1Ymxp
Y0luc3RhbmNlLmNvbnN0cnVjdG9yOworICAgICAgLy8gT25seSB3YXJuIHdoZW4gd2UgaGF2ZSBh
IGNhbGxlck5hbWUuIE90aGVyd2lzZSB3ZSBzaG91bGQgYmUgc2lsZW50LgorICAgICAgLy8gV2Un
cmUgcHJvYmFibHkgY2FsbGluZyBmcm9tIGVucXVldWVDYWxsYmFjay4gV2UgZG9uJ3Qgd2FudCB0
byB3YXJuCisgICAgICAvLyB0aGVyZSBiZWNhdXNlIHdlIGFscmVhZHkgd2FybmVkIGZvciB0aGUg
Y29ycmVzcG9uZGluZyBsaWZlY3ljbGUgbWV0aG9kLgorICAgICAgImRldmVsb3BtZW50IiAhPT0g
J3Byb2R1Y3Rpb24nID8gd2FybmluZyghY2FsbGVyTmFtZSwgJyVzKC4uLik6IENhbiBvbmx5IHVw
ZGF0ZSBhIG1vdW50ZWQgb3IgbW91bnRpbmcgY29tcG9uZW50LiAnICsgJ1RoaXMgdXN1YWxseSBt
ZWFucyB5b3UgY2FsbGVkICVzKCkgb24gYW4gdW5tb3VudGVkIGNvbXBvbmVudC4gJyArICdUaGlz
IGlzIGEgbm8tb3AuIFBsZWFzZSBjaGVjayB0aGUgY29kZSBmb3IgdGhlICVzIGNvbXBvbmVudC4n
LCBjYWxsZXJOYW1lLCBjYWxsZXJOYW1lLCBjdG9yICYmIChjdG9yLmRpc3BsYXlOYW1lIHx8IGN0
b3IubmFtZSkgfHwgJ1JlYWN0Q2xhc3MnKSA6IHZvaWQgMDsKKyAgICB9CisgICAgcmV0dXJuIG51
bGw7CisgIH0KKworICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAg
ImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhSZWFjdEN1cnJlbnRPd25l
ci5jdXJyZW50ID09IG51bGwsICclcyguLi4pOiBDYW5ub3QgdXBkYXRlIGR1cmluZyBhbiBleGlz
dGluZyBzdGF0ZSB0cmFuc2l0aW9uIChzdWNoIGFzICcgKyAnd2l0aGluIGByZW5kZXJgIG9yIGFu
b3RoZXIgY29tcG9uZW50XCdzIGNvbnN0cnVjdG9yKS4gUmVuZGVyIG1ldGhvZHMgJyArICdzaG91
bGQgYmUgYSBwdXJlIGZ1bmN0aW9uIG9mIHByb3BzIGFuZCBzdGF0ZTsgY29uc3RydWN0b3IgJyAr
ICdzaWRlLWVmZmVjdHMgYXJlIGFuIGFudGktcGF0dGVybiwgYnV0IGNhbiBiZSBtb3ZlZCB0byAn
ICsgJ2Bjb21wb25lbnRXaWxsTW91bnRgLicsIGNhbGxlck5hbWUpIDogdm9pZCAwOworICB9CisK
KyAgcmV0dXJuIGludGVybmFsSW5zdGFuY2U7Cit9CisKKy8qKgorICogUmVhY3RVcGRhdGVRdWV1
ZSBhbGxvd3MgZm9yIHN0YXRlIHVwZGF0ZXMgdG8gYmUgc2NoZWR1bGVkIGludG8gYSBsYXRlcgor
ICogcmVjb25jaWxpYXRpb24gc3RlcC4KKyAqLwordmFyIFJlYWN0VXBkYXRlUXVldWUgPSB7CisK
KyAgLyoqCisgICAqIENoZWNrcyB3aGV0aGVyIG9yIG5vdCB0aGlzIGNvbXBvc2l0ZSBjb21wb25l
bnQgaXMgbW91bnRlZC4KKyAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBU
aGUgaW5zdGFuY2Ugd2Ugd2FudCB0byB0ZXN0LgorICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVl
IGlmIG1vdW50ZWQsIGZhbHNlIG90aGVyd2lzZS4KKyAgICogQHByb3RlY3RlZAorICAgKiBAZmlu
YWwKKyAgICovCisgIGlzTW91bnRlZDogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNlKSB7CisgICAg
aWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgdmFyIG93bmVyID0g
UmVhY3RDdXJyZW50T3duZXIuY3VycmVudDsKKyAgICAgIGlmIChvd25lciAhPT0gbnVsbCkgewor
ICAgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKG93bmVyLl93
YXJuZWRBYm91dFJlZnNJblJlbmRlciwgJyVzIGlzIGFjY2Vzc2luZyBpc01vdW50ZWQgaW5zaWRl
IGl0cyByZW5kZXIoKSBmdW5jdGlvbi4gJyArICdyZW5kZXIoKSBzaG91bGQgYmUgYSBwdXJlIGZ1
bmN0aW9uIG9mIHByb3BzIGFuZCBzdGF0ZS4gSXQgc2hvdWxkICcgKyAnbmV2ZXIgYWNjZXNzIHNv
bWV0aGluZyB0aGF0IHJlcXVpcmVzIHN0YWxlIGRhdGEgZnJvbSB0aGUgcHJldmlvdXMgJyArICdy
ZW5kZXIsIHN1Y2ggYXMgcmVmcy4gTW92ZSB0aGlzIGxvZ2ljIHRvIGNvbXBvbmVudERpZE1vdW50
IGFuZCAnICsgJ2NvbXBvbmVudERpZFVwZGF0ZSBpbnN0ZWFkLicsIG93bmVyLmdldE5hbWUoKSB8
fCAnQSBjb21wb25lbnQnKSA6IHZvaWQgMDsKKyAgICAgICAgb3duZXIuX3dhcm5lZEFib3V0UmVm
c0luUmVuZGVyID0gdHJ1ZTsKKyAgICAgIH0KKyAgICB9CisgICAgdmFyIGludGVybmFsSW5zdGFu
Y2UgPSBSZWFjdEluc3RhbmNlTWFwLmdldChwdWJsaWNJbnN0YW5jZSk7CisgICAgaWYgKGludGVy
bmFsSW5zdGFuY2UpIHsKKyAgICAgIC8vIER1cmluZyBjb21wb25lbnRXaWxsTW91bnQgYW5kIHJl
bmRlciB0aGlzIHdpbGwgc3RpbGwgYmUgbnVsbCBidXQgYWZ0ZXIKKyAgICAgIC8vIHRoYXQgd2ls
bCBhbHdheXMgcmVuZGVyIHRvIHNvbWV0aGluZy4gQXQgbGVhc3QgZm9yIG5vdy4gU28gd2UgY2Fu
IHVzZQorICAgICAgLy8gdGhpcyBoYWNrLgorICAgICAgcmV0dXJuICEhaW50ZXJuYWxJbnN0YW5j
ZS5fcmVuZGVyZWRDb21wb25lbnQ7CisgICAgfSBlbHNlIHsKKyAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisgIH0sCisKKyAgLyoqCisgICAqIEVucXVldWUgYSBjYWxsYmFjayB0aGF0IHdpbGwg
YmUgZXhlY3V0ZWQgYWZ0ZXIgYWxsIHRoZSBwZW5kaW5nIHVwZGF0ZXMKKyAgICogaGF2ZSBwcm9j
ZXNzZWQuCisgICAqCisgICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhl
IGluc3RhbmNlIHRvIHVzZSBhcyBgdGhpc2AgY29udGV4dC4KKyAgICogQHBhcmFtIHs/ZnVuY3Rp
b259IGNhbGxiYWNrIENhbGxlZCBhZnRlciBzdGF0ZSBpcyB1cGRhdGVkLgorICAgKiBAcGFyYW0g
e3N0cmluZ30gY2FsbGVyTmFtZSBOYW1lIG9mIHRoZSBjYWxsaW5nIGZ1bmN0aW9uIGluIHRoZSBw
dWJsaWMgQVBJLgorICAgKiBAaW50ZXJuYWwKKyAgICovCisgIGVucXVldWVDYWxsYmFjazogZnVu
Y3Rpb24gKHB1YmxpY0luc3RhbmNlLCBjYWxsYmFjaywgY2FsbGVyTmFtZSkgeworICAgIFJlYWN0
VXBkYXRlUXVldWUudmFsaWRhdGVDYWxsYmFjayhjYWxsYmFjaywgY2FsbGVyTmFtZSk7CisgICAg
dmFyIGludGVybmFsSW5zdGFuY2UgPSBnZXRJbnRlcm5hbEluc3RhbmNlUmVhZHlGb3JVcGRhdGUo
cHVibGljSW5zdGFuY2UpOworCisgICAgLy8gUHJldmlvdXNseSB3ZSB3b3VsZCB0aHJvdyBhbiBl
cnJvciBpZiB3ZSBkaWRuJ3QgaGF2ZSBhbiBpbnRlcm5hbAorICAgIC8vIGluc3RhbmNlLiBTaW5j
ZSB3ZSB3YW50IHRvIG1ha2UgaXQgYSBuby1vcCBpbnN0ZWFkLCB3ZSBtaXJyb3IgdGhlIHNhbWUK
KyAgICAvLyBiZWhhdmlvciB3ZSBoYXZlIGluIG90aGVyIGVucXVldWUqIG1ldGhvZHMuCisgICAg
Ly8gV2UgYWxzbyBuZWVkIHRvIGlnbm9yZSBjYWxsYmFja3MgaW4gY29tcG9uZW50V2lsbE1vdW50
LiBTZWUKKyAgICAvLyBlbnF1ZXVlVXBkYXRlcy4KKyAgICBpZiAoIWludGVybmFsSW5zdGFuY2Up
IHsKKyAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIGlmIChpbnRlcm5hbEluc3RhbmNl
Ll9wZW5kaW5nQ2FsbGJhY2tzKSB7CisgICAgICBpbnRlcm5hbEluc3RhbmNlLl9wZW5kaW5nQ2Fs
bGJhY2tzLnB1c2goY2FsbGJhY2spOworICAgIH0gZWxzZSB7CisgICAgICBpbnRlcm5hbEluc3Rh
bmNlLl9wZW5kaW5nQ2FsbGJhY2tzID0gW2NhbGxiYWNrXTsKKyAgICB9CisgICAgLy8gVE9ETzog
VGhlIGNhbGxiYWNrIGhlcmUgaXMgaWdub3JlZCB3aGVuIHNldFN0YXRlIGlzIGNhbGxlZCBmcm9t
CisgICAgLy8gY29tcG9uZW50V2lsbE1vdW50LiBFaXRoZXIgZml4IGl0IG9yIGRpc2FsbG93IGRv
aW5nIHNvIGNvbXBsZXRlbHkgaW4KKyAgICAvLyBmYXZvciBvZiBnZXRJbml0aWFsU3RhdGUuIEFs
dGVybmF0aXZlbHksIHdlIGNhbiBkaXNhbGxvdworICAgIC8vIGNvbXBvbmVudFdpbGxNb3VudCBk
dXJpbmcgc2VydmVyLXNpZGUgcmVuZGVyaW5nLgorICAgIGVucXVldWVVcGRhdGUoaW50ZXJuYWxJ
bnN0YW5jZSk7CisgIH0sCisKKyAgZW5xdWV1ZUNhbGxiYWNrSW50ZXJuYWw6IGZ1bmN0aW9uIChp
bnRlcm5hbEluc3RhbmNlLCBjYWxsYmFjaykgeworICAgIGlmIChpbnRlcm5hbEluc3RhbmNlLl9w
ZW5kaW5nQ2FsbGJhY2tzKSB7CisgICAgICBpbnRlcm5hbEluc3RhbmNlLl9wZW5kaW5nQ2FsbGJh
Y2tzLnB1c2goY2FsbGJhY2spOworICAgIH0gZWxzZSB7CisgICAgICBpbnRlcm5hbEluc3RhbmNl
Ll9wZW5kaW5nQ2FsbGJhY2tzID0gW2NhbGxiYWNrXTsKKyAgICB9CisgICAgZW5xdWV1ZVVwZGF0
ZShpbnRlcm5hbEluc3RhbmNlKTsKKyAgfSwKKworICAvKioKKyAgICogRm9yY2VzIGFuIHVwZGF0
ZS4gVGhpcyBzaG91bGQgb25seSBiZSBpbnZva2VkIHdoZW4gaXQgaXMga25vd24gd2l0aAorICAg
KiBjZXJ0YWludHkgdGhhdCB3ZSBhcmUgKipub3QqKiBpbiBhIERPTSB0cmFuc2FjdGlvbi4KKyAg
ICoKKyAgICogWW91IG1heSB3YW50IHRvIGNhbGwgdGhpcyB3aGVuIHlvdSBrbm93IHRoYXQgc29t
ZSBkZWVwZXIgYXNwZWN0IG9mIHRoZQorICAgKiBjb21wb25lbnQncyBzdGF0ZSBoYXMgY2hhbmdl
ZCBidXQgYHNldFN0YXRlYCB3YXMgbm90IGNhbGxlZC4KKyAgICoKKyAgICogVGhpcyB3aWxsIG5v
dCBpbnZva2UgYHNob3VsZENvbXBvbmVudFVwZGF0ZWAsIGJ1dCBpdCB3aWxsIGludm9rZQorICAg
KiBgY29tcG9uZW50V2lsbFVwZGF0ZWAgYW5kIGBjb21wb25lbnREaWRVcGRhdGVgLgorICAgKgor
ICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0aGF0
IHNob3VsZCByZXJlbmRlci4KKyAgICogQGludGVybmFsCisgICAqLworICBlbnF1ZXVlRm9yY2VV
cGRhdGU6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSkgeworICAgIHZhciBpbnRlcm5hbEluc3Rh
bmNlID0gZ2V0SW50ZXJuYWxJbnN0YW5jZVJlYWR5Rm9yVXBkYXRlKHB1YmxpY0luc3RhbmNlLCAn
Zm9yY2VVcGRhdGUnKTsKKworICAgIGlmICghaW50ZXJuYWxJbnN0YW5jZSkgeworICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdGb3JjZVVwZGF0ZSA9
IHRydWU7CisKKyAgICBlbnF1ZXVlVXBkYXRlKGludGVybmFsSW5zdGFuY2UpOworICB9LAorCisg
IC8qKgorICAgKiBSZXBsYWNlcyBhbGwgb2YgdGhlIHN0YXRlLiBBbHdheXMgdXNlIHRoaXMgb3Ig
YHNldFN0YXRlYCB0byBtdXRhdGUgc3RhdGUuCisgICAqIFlvdSBzaG91bGQgdHJlYXQgYHRoaXMu
c3RhdGVgIGFzIGltbXV0YWJsZS4KKyAgICoKKyAgICogVGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRo
YXQgYHRoaXMuc3RhdGVgIHdpbGwgYmUgaW1tZWRpYXRlbHkgdXBkYXRlZCwgc28KKyAgICogYWNj
ZXNzaW5nIGB0aGlzLnN0YXRlYCBhZnRlciBjYWxsaW5nIHRoaXMgbWV0aG9kIG1heSByZXR1cm4g
dGhlIG9sZCB2YWx1ZS4KKyAgICoKKyAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0
YW5jZSBUaGUgaW5zdGFuY2UgdGhhdCBzaG91bGQgcmVyZW5kZXIuCisgICAqIEBwYXJhbSB7b2Jq
ZWN0fSBjb21wbGV0ZVN0YXRlIE5leHQgc3RhdGUuCisgICAqIEBpbnRlcm5hbAorICAgKi8KKyAg
ZW5xdWV1ZVJlcGxhY2VTdGF0ZTogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNlLCBjb21wbGV0ZVN0
YXRlKSB7CisgICAgdmFyIGludGVybmFsSW5zdGFuY2UgPSBnZXRJbnRlcm5hbEluc3RhbmNlUmVh
ZHlGb3JVcGRhdGUocHVibGljSW5zdGFuY2UsICdyZXBsYWNlU3RhdGUnKTsKKworICAgIGlmICgh
aW50ZXJuYWxJbnN0YW5jZSkgeworICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGludGVybmFs
SW5zdGFuY2UuX3BlbmRpbmdTdGF0ZVF1ZXVlID0gW2NvbXBsZXRlU3RhdGVdOworICAgIGludGVy
bmFsSW5zdGFuY2UuX3BlbmRpbmdSZXBsYWNlU3RhdGUgPSB0cnVlOworCisgICAgZW5xdWV1ZVVw
ZGF0ZShpbnRlcm5hbEluc3RhbmNlKTsKKyAgfSwKKworICAvKioKKyAgICogU2V0cyBhIHN1YnNl
dCBvZiB0aGUgc3RhdGUuIFRoaXMgb25seSBleGlzdHMgYmVjYXVzZSBfcGVuZGluZ1N0YXRlIGlz
CisgICAqIGludGVybmFsLiBUaGlzIHByb3ZpZGVzIGEgbWVyZ2luZyBzdHJhdGVneSB0aGF0IGlz
IG5vdCBhdmFpbGFibGUgdG8gZGVlcAorICAgKiBwcm9wZXJ0aWVzIHdoaWNoIGlzIGNvbmZ1c2lu
Zy4gVE9ETzogRXhwb3NlIHBlbmRpbmdTdGF0ZSBvciBkb24ndCB1c2UgaXQKKyAgICogZHVyaW5n
IHRoZSBtZXJnZS4KKyAgICoKKyAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5j
ZSBUaGUgaW5zdGFuY2UgdGhhdCBzaG91bGQgcmVyZW5kZXIuCisgICAqIEBwYXJhbSB7b2JqZWN0
fSBwYXJ0aWFsU3RhdGUgTmV4dCBwYXJ0aWFsIHN0YXRlIHRvIGJlIG1lcmdlZCB3aXRoIHN0YXRl
LgorICAgKiBAaW50ZXJuYWwKKyAgICovCisgIGVucXVldWVTZXRTdGF0ZTogZnVuY3Rpb24gKHB1
YmxpY0luc3RhbmNlLCBwYXJ0aWFsU3RhdGUpIHsKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0g
J3Byb2R1Y3Rpb24nKSB7CisgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25T
ZXRTdGF0ZSgpOworICAgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2Fybmlu
ZyhwYXJ0aWFsU3RhdGUgIT0gbnVsbCwgJ3NldFN0YXRlKC4uLik6IFlvdSBwYXNzZWQgYW4gdW5k
ZWZpbmVkIG9yIG51bGwgc3RhdGUgb2JqZWN0OyAnICsgJ2luc3RlYWQsIHVzZSBmb3JjZVVwZGF0
ZSgpLicpIDogdm9pZCAwOworICAgIH0KKworICAgIHZhciBpbnRlcm5hbEluc3RhbmNlID0gZ2V0
SW50ZXJuYWxJbnN0YW5jZVJlYWR5Rm9yVXBkYXRlKHB1YmxpY0luc3RhbmNlLCAnc2V0U3RhdGUn
KTsKKworICAgIGlmICghaW50ZXJuYWxJbnN0YW5jZSkgeworICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIHZhciBxdWV1ZSA9IGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdTdGF0ZVF1ZXVlIHx8
IChpbnRlcm5hbEluc3RhbmNlLl9wZW5kaW5nU3RhdGVRdWV1ZSA9IFtdKTsKKyAgICBxdWV1ZS5w
dXNoKHBhcnRpYWxTdGF0ZSk7CisKKyAgICBlbnF1ZXVlVXBkYXRlKGludGVybmFsSW5zdGFuY2Up
OworICB9LAorCisgIGVucXVldWVFbGVtZW50SW50ZXJuYWw6IGZ1bmN0aW9uIChpbnRlcm5hbElu
c3RhbmNlLCBuZXh0RWxlbWVudCwgbmV4dENvbnRleHQpIHsKKyAgICBpbnRlcm5hbEluc3RhbmNl
Ll9wZW5kaW5nRWxlbWVudCA9IG5leHRFbGVtZW50OworICAgIC8vIFRPRE86IGludHJvZHVjZSBf
cGVuZGluZ0NvbnRleHQgaW5zdGVhZCBvZiBzZXR0aW5nIGl0IGRpcmVjdGx5LgorICAgIGludGVy
bmFsSW5zdGFuY2UuX2NvbnRleHQgPSBuZXh0Q29udGV4dDsKKyAgICBlbnF1ZXVlVXBkYXRlKGlu
dGVybmFsSW5zdGFuY2UpOworICB9LAorCisgIHZhbGlkYXRlQ2FsbGJhY2s6IGZ1bmN0aW9uIChj
YWxsYmFjaywgY2FsbGVyTmFtZSkgeworICAgICEoIWNhbGxiYWNrIHx8IHR5cGVvZiBjYWxsYmFj
ayA9PT0gJ2Z1bmN0aW9uJykgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZh
cmlhbnQoZmFsc2UsICclcyguLi4pOiBFeHBlY3RlZCB0aGUgbGFzdCBvcHRpb25hbCBgY2FsbGJh
Y2tgIGFyZ3VtZW50IHRvIGJlIGEgZnVuY3Rpb24uIEluc3RlYWQgcmVjZWl2ZWQ6ICVzLicsIGNh
bGxlck5hbWUsIGZvcm1hdFVuZXhwZWN0ZWRBcmd1bWVudChjYWxsYmFjaykpIDogX3Byb2RJbnZh
cmlhbnQoJzEyMicsIGNhbGxlck5hbWUsIGZvcm1hdFVuZXhwZWN0ZWRBcmd1bWVudChjYWxsYmFj
aykpIDogdm9pZCAwOworICB9CisKK307CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RVcGRhdGVR
dWV1ZTsKK30seyIxMjUiOjEyNSwiMTMzIjoxMzMsIjE1MCI6MTUwLCIxNTciOjE1NywiNjMiOjYz
LCI2NCI6NjQsIjgyIjo4Mn1dLDgyOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsK
Ky8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRl
ciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3Jh
bnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUg
aW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBf
cHJvZEludmFyaWFudCA9IF9kZXJlcV8oMTI1KSwKKyAgICBfYXNzaWduID0gX2RlcmVxXygxNTgp
OworCit2YXIgQ2FsbGJhY2tRdWV1ZSA9IF9kZXJlcV8oNik7Cit2YXIgUG9vbGVkQ2xhc3MgPSBf
ZGVyZXFfKDI1KTsKK3ZhciBSZWFjdEZlYXR1cmVGbGFncyA9IF9kZXJlcV8oNTgpOwordmFyIFJl
YWN0UmVjb25jaWxlciA9IF9kZXJlcV8oNzUpOwordmFyIFRyYW5zYWN0aW9uID0gX2RlcmVxXygx
MDApOworCit2YXIgaW52YXJpYW50ID0gX2RlcmVxXygxNTApOworCit2YXIgZGlydHlDb21wb25l
bnRzID0gW107Cit2YXIgdXBkYXRlQmF0Y2hOdW1iZXIgPSAwOwordmFyIGFzYXBDYWxsYmFja1F1
ZXVlID0gQ2FsbGJhY2tRdWV1ZS5nZXRQb29sZWQoKTsKK3ZhciBhc2FwRW5xdWV1ZWQgPSBmYWxz
ZTsKKwordmFyIGJhdGNoaW5nU3RyYXRlZ3kgPSBudWxsOworCitmdW5jdGlvbiBlbnN1cmVJbmpl
Y3RlZCgpIHsKKyAgIShSZWFjdFVwZGF0ZXMuUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbiAmJiBi
YXRjaGluZ1N0cmF0ZWd5KSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFy
aWFudChmYWxzZSwgJ1JlYWN0VXBkYXRlczogbXVzdCBpbmplY3QgYSByZWNvbmNpbGUgdHJhbnNh
Y3Rpb24gY2xhc3MgYW5kIGJhdGNoaW5nIHN0cmF0ZWd5JykgOiBfcHJvZEludmFyaWFudCgnMTIz
JykgOiB2b2lkIDA7Cit9CisKK3ZhciBORVNURURfVVBEQVRFUyA9IHsKKyAgaW5pdGlhbGl6ZTog
ZnVuY3Rpb24gKCkgeworICAgIHRoaXMuZGlydHlDb21wb25lbnRzTGVuZ3RoID0gZGlydHlDb21w
b25lbnRzLmxlbmd0aDsKKyAgfSwKKyAgY2xvc2U6IGZ1bmN0aW9uICgpIHsKKyAgICBpZiAodGhp
cy5kaXJ0eUNvbXBvbmVudHNMZW5ndGggIT09IGRpcnR5Q29tcG9uZW50cy5sZW5ndGgpIHsKKyAg
ICAgIC8vIEFkZGl0aW9uYWwgdXBkYXRlcyB3ZXJlIGVucXVldWVkIGJ5IGNvbXBvbmVudERpZFVw
ZGF0ZSBoYW5kbGVycyBvcgorICAgICAgLy8gc2ltaWxhcjsgYmVmb3JlIG91ciBvd24gVVBEQVRF
X1FVRVVFSU5HIHdyYXBwZXIgY2xvc2VzLCB3ZSB3YW50IHRvIHJ1bgorICAgICAgLy8gdGhlc2Ug
bmV3IHVwZGF0ZXMgc28gdGhhdCBpZiBBJ3MgY29tcG9uZW50RGlkVXBkYXRlIGNhbGxzIHNldFN0
YXRlIG9uCisgICAgICAvLyBCLCBCIHdpbGwgdXBkYXRlIGJlZm9yZSB0aGUgY2FsbGJhY2sgQSdz
IHVwZGF0ZXIgcHJvdmlkZWQgd2hlbiBjYWxsaW5nCisgICAgICAvLyBzZXRTdGF0ZS4KKyAgICAg
IGRpcnR5Q29tcG9uZW50cy5zcGxpY2UoMCwgdGhpcy5kaXJ0eUNvbXBvbmVudHNMZW5ndGgpOwor
ICAgICAgZmx1c2hCYXRjaGVkVXBkYXRlcygpOworICAgIH0gZWxzZSB7CisgICAgICBkaXJ0eUNv
bXBvbmVudHMubGVuZ3RoID0gMDsKKyAgICB9CisgIH0KK307CisKK3ZhciBVUERBVEVfUVVFVUVJ
TkcgPSB7CisgIGluaXRpYWxpemU6IGZ1bmN0aW9uICgpIHsKKyAgICB0aGlzLmNhbGxiYWNrUXVl
dWUucmVzZXQoKTsKKyAgfSwKKyAgY2xvc2U6IGZ1bmN0aW9uICgpIHsKKyAgICB0aGlzLmNhbGxi
YWNrUXVldWUubm90aWZ5QWxsKCk7CisgIH0KK307CisKK3ZhciBUUkFOU0FDVElPTl9XUkFQUEVS
UyA9IFtORVNURURfVVBEQVRFUywgVVBEQVRFX1FVRVVFSU5HXTsKKworZnVuY3Rpb24gUmVhY3RV
cGRhdGVzRmx1c2hUcmFuc2FjdGlvbigpIHsKKyAgdGhpcy5yZWluaXRpYWxpemVUcmFuc2FjdGlv
bigpOworICB0aGlzLmRpcnR5Q29tcG9uZW50c0xlbmd0aCA9IG51bGw7CisgIHRoaXMuY2FsbGJh
Y2tRdWV1ZSA9IENhbGxiYWNrUXVldWUuZ2V0UG9vbGVkKCk7CisgIHRoaXMucmVjb25jaWxlVHJh
bnNhY3Rpb24gPSBSZWFjdFVwZGF0ZXMuUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbi5nZXRQb29s
ZWQoCisgIC8qIHVzZUNyZWF0ZUVsZW1lbnQgKi90cnVlKTsKK30KKworX2Fzc2lnbihSZWFjdFVw
ZGF0ZXNGbHVzaFRyYW5zYWN0aW9uLnByb3RvdHlwZSwgVHJhbnNhY3Rpb24sIHsKKyAgZ2V0VHJh
bnNhY3Rpb25XcmFwcGVyczogZnVuY3Rpb24gKCkgeworICAgIHJldHVybiBUUkFOU0FDVElPTl9X
UkFQUEVSUzsKKyAgfSwKKworICBkZXN0cnVjdG9yOiBmdW5jdGlvbiAoKSB7CisgICAgdGhpcy5k
aXJ0eUNvbXBvbmVudHNMZW5ndGggPSBudWxsOworICAgIENhbGxiYWNrUXVldWUucmVsZWFzZSh0
aGlzLmNhbGxiYWNrUXVldWUpOworICAgIHRoaXMuY2FsbGJhY2tRdWV1ZSA9IG51bGw7CisgICAg
UmVhY3RVcGRhdGVzLlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24ucmVsZWFzZSh0aGlzLnJlY29u
Y2lsZVRyYW5zYWN0aW9uKTsKKyAgICB0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uID0gbnVsbDsK
KyAgfSwKKworICBwZXJmb3JtOiBmdW5jdGlvbiAobWV0aG9kLCBzY29wZSwgYSkgeworICAgIC8v
IEVzc2VudGlhbGx5IGNhbGxzIGB0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uLnBlcmZvcm0obWV0
aG9kLCBzY29wZSwgYSlgCisgICAgLy8gd2l0aCB0aGlzIHRyYW5zYWN0aW9uJ3Mgd3JhcHBlcnMg
YXJvdW5kIGl0LgorICAgIHJldHVybiBUcmFuc2FjdGlvbi5wZXJmb3JtLmNhbGwodGhpcywgdGhp
cy5yZWNvbmNpbGVUcmFuc2FjdGlvbi5wZXJmb3JtLCB0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9u
LCBtZXRob2QsIHNjb3BlLCBhKTsKKyAgfQorfSk7CisKK1Bvb2xlZENsYXNzLmFkZFBvb2xpbmdU
byhSZWFjdFVwZGF0ZXNGbHVzaFRyYW5zYWN0aW9uKTsKKworZnVuY3Rpb24gYmF0Y2hlZFVwZGF0
ZXMoY2FsbGJhY2ssIGEsIGIsIGMsIGQsIGUpIHsKKyAgZW5zdXJlSW5qZWN0ZWQoKTsKKyAgcmV0
dXJuIGJhdGNoaW5nU3RyYXRlZ3kuYmF0Y2hlZFVwZGF0ZXMoY2FsbGJhY2ssIGEsIGIsIGMsIGQs
IGUpOworfQorCisvKioKKyAqIEFycmF5IGNvbXBhcmF0b3IgZm9yIFJlYWN0Q29tcG9uZW50cyBi
eSBtb3VudCBvcmRlcmluZy4KKyAqCisgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBjMSBmaXJz
dCBjb21wb25lbnQgeW91J3JlIGNvbXBhcmluZworICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0g
YzIgc2Vjb25kIGNvbXBvbmVudCB5b3UncmUgY29tcGFyaW5nCisgKiBAcmV0dXJuIHtudW1iZXJ9
IFJldHVybiB2YWx1ZSB1c2FibGUgYnkgQXJyYXkucHJvdG90eXBlLnNvcnQoKS4KKyAqLworZnVu
Y3Rpb24gbW91bnRPcmRlckNvbXBhcmF0b3IoYzEsIGMyKSB7CisgIHJldHVybiBjMS5fbW91bnRP
cmRlciAtIGMyLl9tb3VudE9yZGVyOworfQorCitmdW5jdGlvbiBydW5CYXRjaGVkVXBkYXRlcyh0
cmFuc2FjdGlvbikgeworICB2YXIgbGVuID0gdHJhbnNhY3Rpb24uZGlydHlDb21wb25lbnRzTGVu
Z3RoOworICAhKGxlbiA9PT0gZGlydHlDb21wb25lbnRzLmxlbmd0aCkgPyAiZGV2ZWxvcG1lbnQi
ICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdFeHBlY3RlZCBmbHVzaCB0cmFu
c2FjdGlvblwncyBzdG9yZWQgZGlydHktY29tcG9uZW50cyBsZW5ndGggKCVzKSB0byBtYXRjaCBk
aXJ0eS1jb21wb25lbnRzIGFycmF5IGxlbmd0aCAoJXMpLicsIGxlbiwgZGlydHlDb21wb25lbnRz
Lmxlbmd0aCkgOiBfcHJvZEludmFyaWFudCgnMTI0JywgbGVuLCBkaXJ0eUNvbXBvbmVudHMubGVu
Z3RoKSA6IHZvaWQgMDsKKworICAvLyBTaW5jZSByZWNvbmNpbGluZyBhIGNvbXBvbmVudCBoaWdo
ZXIgaW4gdGhlIG93bmVyIGhpZXJhcmNoeSB1c3VhbGx5IChub3QKKyAgLy8gYWx3YXlzIC0tIHNl
ZSBzaG91bGRDb21wb25lbnRVcGRhdGUoKSkgd2lsbCByZWNvbmNpbGUgY2hpbGRyZW4sIHJlY29u
Y2lsZQorICAvLyB0aGVtIGJlZm9yZSB0aGVpciBjaGlsZHJlbiBieSBzb3J0aW5nIHRoZSBhcnJh
eS4KKyAgZGlydHlDb21wb25lbnRzLnNvcnQobW91bnRPcmRlckNvbXBhcmF0b3IpOworCisgIC8v
IEFueSB1cGRhdGVzIGVucXVldWVkIHdoaWxlIHJlY29uY2lsaW5nIG11c3QgYmUgcGVyZm9ybWVk
IGFmdGVyIHRoaXMgZW50aXJlCisgIC8vIGJhdGNoLiBPdGhlcndpc2UsIGlmIGRpcnR5Q29tcG9u
ZW50cyBpcyBbQSwgQl0gd2hlcmUgQSBoYXMgY2hpbGRyZW4gQiBhbmQKKyAgLy8gQywgQiBjb3Vs
ZCB1cGRhdGUgdHdpY2UgaW4gYSBzaW5nbGUgYmF0Y2ggaWYgQydzIHJlbmRlciBlbnF1ZXVlcyBh
biB1cGRhdGUKKyAgLy8gdG8gQiAoc2luY2UgQiB3b3VsZCBoYXZlIGFscmVhZHkgdXBkYXRlZCwg
d2Ugc2hvdWxkIHNraXAgaXQsIGFuZCB0aGUgb25seQorICAvLyB3YXkgd2UgY2FuIGtub3cgdG8g
ZG8gc28gaXMgYnkgY2hlY2tpbmcgdGhlIGJhdGNoIGNvdW50ZXIpLgorICB1cGRhdGVCYXRjaE51
bWJlcisrOworCisgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAvLyBJZiBh
IGNvbXBvbmVudCBpcyB1bm1vdW50ZWQgYmVmb3JlIHBlbmRpbmcgY2hhbmdlcyBhcHBseSwgaXQg
d2lsbCBzdGlsbAorICAgIC8vIGJlIGhlcmUsIGJ1dCB3ZSBhc3N1bWUgdGhhdCBpdCBoYXMgY2xl
YXJlZCBpdHMgX3BlbmRpbmdDYWxsYmFja3MgYW5kCisgICAgLy8gdGhhdCBwZXJmb3JtVXBkYXRl
SWZOZWNlc3NhcnkgaXMgYSBub29wLgorICAgIHZhciBjb21wb25lbnQgPSBkaXJ0eUNvbXBvbmVu
dHNbaV07CisKKyAgICAvLyBJZiBwZXJmb3JtVXBkYXRlSWZOZWNlc3NhcnkgaGFwcGVucyB0byBl
bnF1ZXVlIGFueSBuZXcgdXBkYXRlcywgd2UKKyAgICAvLyBzaG91bGRuJ3QgZXhlY3V0ZSB0aGUg
Y2FsbGJhY2tzIHVudGlsIHRoZSBuZXh0IHJlbmRlciBoYXBwZW5zLCBzbworICAgIC8vIHN0YXNo
IHRoZSBjYWxsYmFja3MgZmlyc3QKKyAgICB2YXIgY2FsbGJhY2tzID0gY29tcG9uZW50Ll9wZW5k
aW5nQ2FsbGJhY2tzOworICAgIGNvbXBvbmVudC5fcGVuZGluZ0NhbGxiYWNrcyA9IG51bGw7CisK
KyAgICB2YXIgbWFya2VyTmFtZTsKKyAgICBpZiAoUmVhY3RGZWF0dXJlRmxhZ3MubG9nVG9wTGV2
ZWxSZW5kZXJzKSB7CisgICAgICB2YXIgbmFtZWRDb21wb25lbnQgPSBjb21wb25lbnQ7CisgICAg
ICAvLyBEdWNrIHR5cGUgVG9wTGV2ZWxXcmFwcGVyLiBUaGlzIGlzIHByb2JhYmx5IGFsd2F5cyB0
cnVlLgorICAgICAgaWYgKGNvbXBvbmVudC5fY3VycmVudEVsZW1lbnQudHlwZS5pc1JlYWN0VG9w
TGV2ZWxXcmFwcGVyKSB7CisgICAgICAgIG5hbWVkQ29tcG9uZW50ID0gY29tcG9uZW50Ll9yZW5k
ZXJlZENvbXBvbmVudDsKKyAgICAgIH0KKyAgICAgIG1hcmtlck5hbWUgPSAnUmVhY3QgdXBkYXRl
OiAnICsgbmFtZWRDb21wb25lbnQuZ2V0TmFtZSgpOworICAgICAgY29uc29sZS50aW1lKG1hcmtl
ck5hbWUpOworICAgIH0KKworICAgIFJlYWN0UmVjb25jaWxlci5wZXJmb3JtVXBkYXRlSWZOZWNl
c3NhcnkoY29tcG9uZW50LCB0cmFuc2FjdGlvbi5yZWNvbmNpbGVUcmFuc2FjdGlvbiwgdXBkYXRl
QmF0Y2hOdW1iZXIpOworCisgICAgaWYgKG1hcmtlck5hbWUpIHsKKyAgICAgIGNvbnNvbGUudGlt
ZUVuZChtYXJrZXJOYW1lKTsKKyAgICB9CisKKyAgICBpZiAoY2FsbGJhY2tzKSB7CisgICAgICBm
b3IgKHZhciBqID0gMDsgaiA8IGNhbGxiYWNrcy5sZW5ndGg7IGorKykgeworICAgICAgICB0cmFu
c2FjdGlvbi5jYWxsYmFja1F1ZXVlLmVucXVldWUoY2FsbGJhY2tzW2pdLCBjb21wb25lbnQuZ2V0
UHVibGljSW5zdGFuY2UoKSk7CisgICAgICB9CisgICAgfQorICB9Cit9CisKK3ZhciBmbHVzaEJh
dGNoZWRVcGRhdGVzID0gZnVuY3Rpb24gKCkgeworICAvLyBSZWFjdFVwZGF0ZXNGbHVzaFRyYW5z
YWN0aW9uJ3Mgd3JhcHBlcnMgd2lsbCBjbGVhciB0aGUgZGlydHlDb21wb25lbnRzCisgIC8vIGFy
cmF5IGFuZCBwZXJmb3JtIGFueSB1cGRhdGVzIGVucXVldWVkIGJ5IG1vdW50LXJlYWR5IGhhbmRs
ZXJzIChpLmUuLAorICAvLyBjb21wb25lbnREaWRVcGRhdGUpIGJ1dCB3ZSBuZWVkIHRvIGNoZWNr
IGhlcmUgdG9vIGluIG9yZGVyIHRvIGNhdGNoCisgIC8vIHVwZGF0ZXMgZW5xdWV1ZWQgYnkgc2V0
U3RhdGUgY2FsbGJhY2tzIGFuZCBhc2FwIGNhbGxzLgorICB3aGlsZSAoZGlydHlDb21wb25lbnRz
Lmxlbmd0aCB8fCBhc2FwRW5xdWV1ZWQpIHsKKyAgICBpZiAoZGlydHlDb21wb25lbnRzLmxlbmd0
aCkgeworICAgICAgdmFyIHRyYW5zYWN0aW9uID0gUmVhY3RVcGRhdGVzRmx1c2hUcmFuc2FjdGlv
bi5nZXRQb29sZWQoKTsKKyAgICAgIHRyYW5zYWN0aW9uLnBlcmZvcm0ocnVuQmF0Y2hlZFVwZGF0
ZXMsIG51bGwsIHRyYW5zYWN0aW9uKTsKKyAgICAgIFJlYWN0VXBkYXRlc0ZsdXNoVHJhbnNhY3Rp
b24ucmVsZWFzZSh0cmFuc2FjdGlvbik7CisgICAgfQorCisgICAgaWYgKGFzYXBFbnF1ZXVlZCkg
eworICAgICAgYXNhcEVucXVldWVkID0gZmFsc2U7CisgICAgICB2YXIgcXVldWUgPSBhc2FwQ2Fs
bGJhY2tRdWV1ZTsKKyAgICAgIGFzYXBDYWxsYmFja1F1ZXVlID0gQ2FsbGJhY2tRdWV1ZS5nZXRQ
b29sZWQoKTsKKyAgICAgIHF1ZXVlLm5vdGlmeUFsbCgpOworICAgICAgQ2FsbGJhY2tRdWV1ZS5y
ZWxlYXNlKHF1ZXVlKTsKKyAgICB9CisgIH0KK307CisKKy8qKgorICogTWFyayBhIGNvbXBvbmVu
dCBhcyBuZWVkaW5nIGEgcmVyZW5kZXIsIGFkZGluZyBhbiBvcHRpb25hbCBjYWxsYmFjayB0byBh
CisgKiBsaXN0IG9mIGZ1bmN0aW9ucyB3aGljaCB3aWxsIGJlIGV4ZWN1dGVkIG9uY2UgdGhlIHJl
cmVuZGVyIG9jY3Vycy4KKyAqLworZnVuY3Rpb24gZW5xdWV1ZVVwZGF0ZShjb21wb25lbnQpIHsK
KyAgZW5zdXJlSW5qZWN0ZWQoKTsKKworICAvLyBWYXJpb3VzIHBhcnRzIG9mIG91ciBjb2RlIChz
dWNoIGFzIFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50J3MKKyAgLy8gX3JlbmRlclZhbGlkYXRlZENv
bXBvbmVudCkgYXNzdW1lIHRoYXQgY2FsbHMgdG8gcmVuZGVyIGFyZW4ndCBuZXN0ZWQ7CisgIC8v
IHZlcmlmeSB0aGF0IHRoYXQncyB0aGUgY2FzZS4gKFRoaXMgaXMgY2FsbGVkIGJ5IGVhY2ggdG9w
LWxldmVsIHVwZGF0ZQorICAvLyBmdW5jdGlvbiwgbGlrZSBzZXRTdGF0ZSwgZm9yY2VVcGRhdGUs
IGV0Yy47IGNyZWF0aW9uIGFuZAorICAvLyBkZXN0cnVjdGlvbiBvZiB0b3AtbGV2ZWwgY29tcG9u
ZW50cyBpcyBndWFyZGVkIGluIFJlYWN0TW91bnQuKQorCisgIGlmICghYmF0Y2hpbmdTdHJhdGVn
eS5pc0JhdGNoaW5nVXBkYXRlcykgeworICAgIGJhdGNoaW5nU3RyYXRlZ3kuYmF0Y2hlZFVwZGF0
ZXMoZW5xdWV1ZVVwZGF0ZSwgY29tcG9uZW50KTsKKyAgICByZXR1cm47CisgIH0KKworICBkaXJ0
eUNvbXBvbmVudHMucHVzaChjb21wb25lbnQpOworICBpZiAoY29tcG9uZW50Ll91cGRhdGVCYXRj
aE51bWJlciA9PSBudWxsKSB7CisgICAgY29tcG9uZW50Ll91cGRhdGVCYXRjaE51bWJlciA9IHVw
ZGF0ZUJhdGNoTnVtYmVyICsgMTsKKyAgfQorfQorCisvKioKKyAqIEVucXVldWUgYSBjYWxsYmFj
ayB0byBiZSBydW4gYXQgdGhlIGVuZCBvZiB0aGUgY3VycmVudCBiYXRjaGluZyBjeWNsZS4gVGhy
b3dzCisgKiBpZiBubyB1cGRhdGVzIGFyZSBjdXJyZW50bHkgYmVpbmcgcGVyZm9ybWVkLgorICov
CitmdW5jdGlvbiBhc2FwKGNhbGxiYWNrLCBjb250ZXh0KSB7CisgICFiYXRjaGluZ1N0cmF0ZWd5
LmlzQmF0Y2hpbmdVcGRhdGVzID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52
YXJpYW50KGZhbHNlLCAnUmVhY3RVcGRhdGVzLmFzYXA6IENhblwndCBlbnF1ZXVlIGFuIGFzYXAg
Y2FsbGJhY2sgaW4gYSBjb250ZXh0IHdoZXJldXBkYXRlcyBhcmUgbm90IGJlaW5nIGJhdGNoZWQu
JykgOiBfcHJvZEludmFyaWFudCgnMTI1JykgOiB2b2lkIDA7CisgIGFzYXBDYWxsYmFja1F1ZXVl
LmVucXVldWUoY2FsbGJhY2ssIGNvbnRleHQpOworICBhc2FwRW5xdWV1ZWQgPSB0cnVlOworfQor
Cit2YXIgUmVhY3RVcGRhdGVzSW5qZWN0aW9uID0geworICBpbmplY3RSZWNvbmNpbGVUcmFuc2Fj
dGlvbjogZnVuY3Rpb24gKFJlY29uY2lsZVRyYW5zYWN0aW9uKSB7CisgICAgIVJlY29uY2lsZVRy
YW5zYWN0aW9uID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZh
bHNlLCAnUmVhY3RVcGRhdGVzOiBtdXN0IHByb3ZpZGUgYSByZWNvbmNpbGUgdHJhbnNhY3Rpb24g
Y2xhc3MnKSA6IF9wcm9kSW52YXJpYW50KCcxMjYnKSA6IHZvaWQgMDsKKyAgICBSZWFjdFVwZGF0
ZXMuUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbiA9IFJlY29uY2lsZVRyYW5zYWN0aW9uOworICB9
LAorCisgIGluamVjdEJhdGNoaW5nU3RyYXRlZ3k6IGZ1bmN0aW9uIChfYmF0Y2hpbmdTdHJhdGVn
eSkgeworICAgICFfYmF0Y2hpbmdTdHJhdGVneSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0
aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0VXBkYXRlczogbXVzdCBwcm92aWRlIGEgYmF0
Y2hpbmcgc3RyYXRlZ3knKSA6IF9wcm9kSW52YXJpYW50KCcxMjcnKSA6IHZvaWQgMDsKKyAgICAh
KHR5cGVvZiBfYmF0Y2hpbmdTdHJhdGVneS5iYXRjaGVkVXBkYXRlcyA9PT0gJ2Z1bmN0aW9uJykg
PyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFj
dFVwZGF0ZXM6IG11c3QgcHJvdmlkZSBhIGJhdGNoZWRVcGRhdGVzKCkgZnVuY3Rpb24nKSA6IF9w
cm9kSW52YXJpYW50KCcxMjgnKSA6IHZvaWQgMDsKKyAgICAhKHR5cGVvZiBfYmF0Y2hpbmdTdHJh
dGVneS5pc0JhdGNoaW5nVXBkYXRlcyA9PT0gJ2Jvb2xlYW4nKSA/ICJkZXZlbG9wbWVudCIgIT09
ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0VXBkYXRlczogbXVzdCBwcm92
aWRlIGFuIGlzQmF0Y2hpbmdVcGRhdGVzIGJvb2xlYW4gYXR0cmlidXRlJykgOiBfcHJvZEludmFy
aWFudCgnMTI5JykgOiB2b2lkIDA7CisgICAgYmF0Y2hpbmdTdHJhdGVneSA9IF9iYXRjaGluZ1N0
cmF0ZWd5OworICB9Cit9OworCit2YXIgUmVhY3RVcGRhdGVzID0geworICAvKioKKyAgICogUmVh
Y3QgcmVmZXJlbmNlcyBgUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbmAgdXNpbmcgdGhpcyBwcm9w
ZXJ0eSBpbiBvcmRlcgorICAgKiB0byBhbGxvdyBkZXBlbmRlbmN5IGluamVjdGlvbi4KKyAgICoK
KyAgICogQGludGVybmFsCisgICAqLworICBSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uOiBudWxs
LAorCisgIGJhdGNoZWRVcGRhdGVzOiBiYXRjaGVkVXBkYXRlcywKKyAgZW5xdWV1ZVVwZGF0ZTog
ZW5xdWV1ZVVwZGF0ZSwKKyAgZmx1c2hCYXRjaGVkVXBkYXRlczogZmx1c2hCYXRjaGVkVXBkYXRl
cywKKyAgaW5qZWN0aW9uOiBSZWFjdFVwZGF0ZXNJbmplY3Rpb24sCisgIGFzYXA6IGFzYXAKK307
CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RVcGRhdGVzOworfSx7IjEwMCI6MTAwLCIxMjUiOjEy
NSwiMTUwIjoxNTAsIjE1OCI6MTU4LCIyNSI6MjUsIjU4Ijo1OCwiNiI6NiwiNzUiOjc1fV0sODM6
W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAx
My1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5z
ZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2Yg
dGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0
cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnku
CisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKworbW9kdWxlLmV4cG9ydHMgPSAnMTUuNC4wJzsK
K30se31dLDg0OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29w
eXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0
eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBOUyA9IHsKKyAgeGxp
bms6ICdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rJywKKyAgeG1sOiAnaHR0cDovL3d3dy53
My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlJworfTsKKworLy8gV2UgdXNlIGF0dHJpYnV0ZXMgZm9y
IGV2ZXJ5dGhpbmcgU1ZHIHNvIGxldCdzIGF2b2lkIHNvbWUgZHVwbGljYXRpb24gYW5kIHJ1bgor
Ly8gY29kZSBpbnN0ZWFkLgorLy8gVGhlIGZvbGxvd2luZyBhcmUgYWxsIHNwZWNpZmllZCBpbiB0
aGUgSFRNTCBjb25maWcgYWxyZWFkeSBzbyB3ZSBleGNsdWRlIGhlcmUuCisvLyAtIGNsYXNzIChh
cyBjbGFzc05hbWUpCisvLyAtIGNvbG9yCisvLyAtIGhlaWdodAorLy8gLSBpZAorLy8gLSBsYW5n
CisvLyAtIG1heAorLy8gLSBtZWRpYQorLy8gLSBtZXRob2QKKy8vIC0gbWluCisvLyAtIG5hbWUK
Ky8vIC0gc3R5bGUKKy8vIC0gdGFyZ2V0CisvLyAtIHR5cGUKKy8vIC0gd2lkdGgKK3ZhciBBVFRS
UyA9IHsKKyAgYWNjZW50SGVpZ2h0OiAnYWNjZW50LWhlaWdodCcsCisgIGFjY3VtdWxhdGU6IDAs
CisgIGFkZGl0aXZlOiAwLAorICBhbGlnbm1lbnRCYXNlbGluZTogJ2FsaWdubWVudC1iYXNlbGlu
ZScsCisgIGFsbG93UmVvcmRlcjogJ2FsbG93UmVvcmRlcicsCisgIGFscGhhYmV0aWM6IDAsCisg
IGFtcGxpdHVkZTogMCwKKyAgYXJhYmljRm9ybTogJ2FyYWJpYy1mb3JtJywKKyAgYXNjZW50OiAw
LAorICBhdHRyaWJ1dGVOYW1lOiAnYXR0cmlidXRlTmFtZScsCisgIGF0dHJpYnV0ZVR5cGU6ICdh
dHRyaWJ1dGVUeXBlJywKKyAgYXV0b1JldmVyc2U6ICdhdXRvUmV2ZXJzZScsCisgIGF6aW11dGg6
IDAsCisgIGJhc2VGcmVxdWVuY3k6ICdiYXNlRnJlcXVlbmN5JywKKyAgYmFzZVByb2ZpbGU6ICdi
YXNlUHJvZmlsZScsCisgIGJhc2VsaW5lU2hpZnQ6ICdiYXNlbGluZS1zaGlmdCcsCisgIGJib3g6
IDAsCisgIGJlZ2luOiAwLAorICBiaWFzOiAwLAorICBieTogMCwKKyAgY2FsY01vZGU6ICdjYWxj
TW9kZScsCisgIGNhcEhlaWdodDogJ2NhcC1oZWlnaHQnLAorICBjbGlwOiAwLAorICBjbGlwUGF0
aDogJ2NsaXAtcGF0aCcsCisgIGNsaXBSdWxlOiAnY2xpcC1ydWxlJywKKyAgY2xpcFBhdGhVbml0
czogJ2NsaXBQYXRoVW5pdHMnLAorICBjb2xvckludGVycG9sYXRpb246ICdjb2xvci1pbnRlcnBv
bGF0aW9uJywKKyAgY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVyczogJ2NvbG9yLWludGVycG9sYXRp
b24tZmlsdGVycycsCisgIGNvbG9yUHJvZmlsZTogJ2NvbG9yLXByb2ZpbGUnLAorICBjb2xvclJl
bmRlcmluZzogJ2NvbG9yLXJlbmRlcmluZycsCisgIGNvbnRlbnRTY3JpcHRUeXBlOiAnY29udGVu
dFNjcmlwdFR5cGUnLAorICBjb250ZW50U3R5bGVUeXBlOiAnY29udGVudFN0eWxlVHlwZScsCisg
IGN1cnNvcjogMCwKKyAgY3g6IDAsCisgIGN5OiAwLAorICBkOiAwLAorICBkZWNlbGVyYXRlOiAw
LAorICBkZXNjZW50OiAwLAorICBkaWZmdXNlQ29uc3RhbnQ6ICdkaWZmdXNlQ29uc3RhbnQnLAor
ICBkaXJlY3Rpb246IDAsCisgIGRpc3BsYXk6IDAsCisgIGRpdmlzb3I6IDAsCisgIGRvbWluYW50
QmFzZWxpbmU6ICdkb21pbmFudC1iYXNlbGluZScsCisgIGR1cjogMCwKKyAgZHg6IDAsCisgIGR5
OiAwLAorICBlZGdlTW9kZTogJ2VkZ2VNb2RlJywKKyAgZWxldmF0aW9uOiAwLAorICBlbmFibGVC
YWNrZ3JvdW5kOiAnZW5hYmxlLWJhY2tncm91bmQnLAorICBlbmQ6IDAsCisgIGV4cG9uZW50OiAw
LAorICBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOiAnZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCcsCisgIGZpbGw6IDAsCisgIGZpbGxPcGFjaXR5OiAnZmlsbC1vcGFjaXR5JywKKyAgZmlsbFJ1
bGU6ICdmaWxsLXJ1bGUnLAorICBmaWx0ZXI6IDAsCisgIGZpbHRlclJlczogJ2ZpbHRlclJlcycs
CisgIGZpbHRlclVuaXRzOiAnZmlsdGVyVW5pdHMnLAorICBmbG9vZENvbG9yOiAnZmxvb2QtY29s
b3InLAorICBmbG9vZE9wYWNpdHk6ICdmbG9vZC1vcGFjaXR5JywKKyAgZm9jdXNhYmxlOiAwLAor
ICBmb250RmFtaWx5OiAnZm9udC1mYW1pbHknLAorICBmb250U2l6ZTogJ2ZvbnQtc2l6ZScsCisg
IGZvbnRTaXplQWRqdXN0OiAnZm9udC1zaXplLWFkanVzdCcsCisgIGZvbnRTdHJldGNoOiAnZm9u
dC1zdHJldGNoJywKKyAgZm9udFN0eWxlOiAnZm9udC1zdHlsZScsCisgIGZvbnRWYXJpYW50OiAn
Zm9udC12YXJpYW50JywKKyAgZm9udFdlaWdodDogJ2ZvbnQtd2VpZ2h0JywKKyAgZm9ybWF0OiAw
LAorICBmcm9tOiAwLAorICBmeDogMCwKKyAgZnk6IDAsCisgIGcxOiAwLAorICBnMjogMCwKKyAg
Z2x5cGhOYW1lOiAnZ2x5cGgtbmFtZScsCisgIGdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsOiAn
Z2x5cGgtb3JpZW50YXRpb24taG9yaXpvbnRhbCcsCisgIGdseXBoT3JpZW50YXRpb25WZXJ0aWNh
bDogJ2dseXBoLW9yaWVudGF0aW9uLXZlcnRpY2FsJywKKyAgZ2x5cGhSZWY6ICdnbHlwaFJlZics
CisgIGdyYWRpZW50VHJhbnNmb3JtOiAnZ3JhZGllbnRUcmFuc2Zvcm0nLAorICBncmFkaWVudFVu
aXRzOiAnZ3JhZGllbnRVbml0cycsCisgIGhhbmdpbmc6IDAsCisgIGhvcml6QWR2WDogJ2hvcml6
LWFkdi14JywKKyAgaG9yaXpPcmlnaW5YOiAnaG9yaXotb3JpZ2luLXgnLAorICBpZGVvZ3JhcGhp
YzogMCwKKyAgaW1hZ2VSZW5kZXJpbmc6ICdpbWFnZS1yZW5kZXJpbmcnLAorICAnaW4nOiAwLAor
ICBpbjI6IDAsCisgIGludGVyY2VwdDogMCwKKyAgazogMCwKKyAgazE6IDAsCisgIGsyOiAwLAor
ICBrMzogMCwKKyAgazQ6IDAsCisgIGtlcm5lbE1hdHJpeDogJ2tlcm5lbE1hdHJpeCcsCisgIGtl
cm5lbFVuaXRMZW5ndGg6ICdrZXJuZWxVbml0TGVuZ3RoJywKKyAga2VybmluZzogMCwKKyAga2V5
UG9pbnRzOiAna2V5UG9pbnRzJywKKyAga2V5U3BsaW5lczogJ2tleVNwbGluZXMnLAorICBrZXlU
aW1lczogJ2tleVRpbWVzJywKKyAgbGVuZ3RoQWRqdXN0OiAnbGVuZ3RoQWRqdXN0JywKKyAgbGV0
dGVyU3BhY2luZzogJ2xldHRlci1zcGFjaW5nJywKKyAgbGlnaHRpbmdDb2xvcjogJ2xpZ2h0aW5n
LWNvbG9yJywKKyAgbGltaXRpbmdDb25lQW5nbGU6ICdsaW1pdGluZ0NvbmVBbmdsZScsCisgIGxv
Y2FsOiAwLAorICBtYXJrZXJFbmQ6ICdtYXJrZXItZW5kJywKKyAgbWFya2VyTWlkOiAnbWFya2Vy
LW1pZCcsCisgIG1hcmtlclN0YXJ0OiAnbWFya2VyLXN0YXJ0JywKKyAgbWFya2VySGVpZ2h0OiAn
bWFya2VySGVpZ2h0JywKKyAgbWFya2VyVW5pdHM6ICdtYXJrZXJVbml0cycsCisgIG1hcmtlcldp
ZHRoOiAnbWFya2VyV2lkdGgnLAorICBtYXNrOiAwLAorICBtYXNrQ29udGVudFVuaXRzOiAnbWFz
a0NvbnRlbnRVbml0cycsCisgIG1hc2tVbml0czogJ21hc2tVbml0cycsCisgIG1hdGhlbWF0aWNh
bDogMCwKKyAgbW9kZTogMCwKKyAgbnVtT2N0YXZlczogJ251bU9jdGF2ZXMnLAorICBvZmZzZXQ6
IDAsCisgIG9wYWNpdHk6IDAsCisgIG9wZXJhdG9yOiAwLAorICBvcmRlcjogMCwKKyAgb3JpZW50
OiAwLAorICBvcmllbnRhdGlvbjogMCwKKyAgb3JpZ2luOiAwLAorICBvdmVyZmxvdzogMCwKKyAg
b3ZlcmxpbmVQb3NpdGlvbjogJ292ZXJsaW5lLXBvc2l0aW9uJywKKyAgb3ZlcmxpbmVUaGlja25l
c3M6ICdvdmVybGluZS10aGlja25lc3MnLAorICBwYWludE9yZGVyOiAncGFpbnQtb3JkZXInLAor
ICBwYW5vc2UxOiAncGFub3NlLTEnLAorICBwYXRoTGVuZ3RoOiAncGF0aExlbmd0aCcsCisgIHBh
dHRlcm5Db250ZW50VW5pdHM6ICdwYXR0ZXJuQ29udGVudFVuaXRzJywKKyAgcGF0dGVyblRyYW5z
Zm9ybTogJ3BhdHRlcm5UcmFuc2Zvcm0nLAorICBwYXR0ZXJuVW5pdHM6ICdwYXR0ZXJuVW5pdHMn
LAorICBwb2ludGVyRXZlbnRzOiAncG9pbnRlci1ldmVudHMnLAorICBwb2ludHM6IDAsCisgIHBv
aW50c0F0WDogJ3BvaW50c0F0WCcsCisgIHBvaW50c0F0WTogJ3BvaW50c0F0WScsCisgIHBvaW50
c0F0WjogJ3BvaW50c0F0WicsCisgIHByZXNlcnZlQWxwaGE6ICdwcmVzZXJ2ZUFscGhhJywKKyAg
cHJlc2VydmVBc3BlY3RSYXRpbzogJ3ByZXNlcnZlQXNwZWN0UmF0aW8nLAorICBwcmltaXRpdmVV
bml0czogJ3ByaW1pdGl2ZVVuaXRzJywKKyAgcjogMCwKKyAgcmFkaXVzOiAwLAorICByZWZYOiAn
cmVmWCcsCisgIHJlZlk6ICdyZWZZJywKKyAgcmVuZGVyaW5nSW50ZW50OiAncmVuZGVyaW5nLWlu
dGVudCcsCisgIHJlcGVhdENvdW50OiAncmVwZWF0Q291bnQnLAorICByZXBlYXREdXI6ICdyZXBl
YXREdXInLAorICByZXF1aXJlZEV4dGVuc2lvbnM6ICdyZXF1aXJlZEV4dGVuc2lvbnMnLAorICBy
ZXF1aXJlZEZlYXR1cmVzOiAncmVxdWlyZWRGZWF0dXJlcycsCisgIHJlc3RhcnQ6IDAsCisgIHJl
c3VsdDogMCwKKyAgcm90YXRlOiAwLAorICByeDogMCwKKyAgcnk6IDAsCisgIHNjYWxlOiAwLAor
ICBzZWVkOiAwLAorICBzaGFwZVJlbmRlcmluZzogJ3NoYXBlLXJlbmRlcmluZycsCisgIHNsb3Bl
OiAwLAorICBzcGFjaW5nOiAwLAorICBzcGVjdWxhckNvbnN0YW50OiAnc3BlY3VsYXJDb25zdGFu
dCcsCisgIHNwZWN1bGFyRXhwb25lbnQ6ICdzcGVjdWxhckV4cG9uZW50JywKKyAgc3BlZWQ6IDAs
CisgIHNwcmVhZE1ldGhvZDogJ3NwcmVhZE1ldGhvZCcsCisgIHN0YXJ0T2Zmc2V0OiAnc3RhcnRP
ZmZzZXQnLAorICBzdGREZXZpYXRpb246ICdzdGREZXZpYXRpb24nLAorICBzdGVtaDogMCwKKyAg
c3RlbXY6IDAsCisgIHN0aXRjaFRpbGVzOiAnc3RpdGNoVGlsZXMnLAorICBzdG9wQ29sb3I6ICdz
dG9wLWNvbG9yJywKKyAgc3RvcE9wYWNpdHk6ICdzdG9wLW9wYWNpdHknLAorICBzdHJpa2V0aHJv
dWdoUG9zaXRpb246ICdzdHJpa2V0aHJvdWdoLXBvc2l0aW9uJywKKyAgc3RyaWtldGhyb3VnaFRo
aWNrbmVzczogJ3N0cmlrZXRocm91Z2gtdGhpY2tuZXNzJywKKyAgc3RyaW5nOiAwLAorICBzdHJv
a2U6IDAsCisgIHN0cm9rZURhc2hhcnJheTogJ3N0cm9rZS1kYXNoYXJyYXknLAorICBzdHJva2VE
YXNob2Zmc2V0OiAnc3Ryb2tlLWRhc2hvZmZzZXQnLAorICBzdHJva2VMaW5lY2FwOiAnc3Ryb2tl
LWxpbmVjYXAnLAorICBzdHJva2VMaW5lam9pbjogJ3N0cm9rZS1saW5lam9pbicsCisgIHN0cm9r
ZU1pdGVybGltaXQ6ICdzdHJva2UtbWl0ZXJsaW1pdCcsCisgIHN0cm9rZU9wYWNpdHk6ICdzdHJv
a2Utb3BhY2l0eScsCisgIHN0cm9rZVdpZHRoOiAnc3Ryb2tlLXdpZHRoJywKKyAgc3VyZmFjZVNj
YWxlOiAnc3VyZmFjZVNjYWxlJywKKyAgc3lzdGVtTGFuZ3VhZ2U6ICdzeXN0ZW1MYW5ndWFnZScs
CisgIHRhYmxlVmFsdWVzOiAndGFibGVWYWx1ZXMnLAorICB0YXJnZXRYOiAndGFyZ2V0WCcsCisg
IHRhcmdldFk6ICd0YXJnZXRZJywKKyAgdGV4dEFuY2hvcjogJ3RleHQtYW5jaG9yJywKKyAgdGV4
dERlY29yYXRpb246ICd0ZXh0LWRlY29yYXRpb24nLAorICB0ZXh0UmVuZGVyaW5nOiAndGV4dC1y
ZW5kZXJpbmcnLAorICB0ZXh0TGVuZ3RoOiAndGV4dExlbmd0aCcsCisgIHRvOiAwLAorICB0cmFu
c2Zvcm06IDAsCisgIHUxOiAwLAorICB1MjogMCwKKyAgdW5kZXJsaW5lUG9zaXRpb246ICd1bmRl
cmxpbmUtcG9zaXRpb24nLAorICB1bmRlcmxpbmVUaGlja25lc3M6ICd1bmRlcmxpbmUtdGhpY2tu
ZXNzJywKKyAgdW5pY29kZTogMCwKKyAgdW5pY29kZUJpZGk6ICd1bmljb2RlLWJpZGknLAorICB1
bmljb2RlUmFuZ2U6ICd1bmljb2RlLXJhbmdlJywKKyAgdW5pdHNQZXJFbTogJ3VuaXRzLXBlci1l
bScsCisgIHZBbHBoYWJldGljOiAndi1hbHBoYWJldGljJywKKyAgdkhhbmdpbmc6ICd2LWhhbmdp
bmcnLAorICB2SWRlb2dyYXBoaWM6ICd2LWlkZW9ncmFwaGljJywKKyAgdk1hdGhlbWF0aWNhbDog
J3YtbWF0aGVtYXRpY2FsJywKKyAgdmFsdWVzOiAwLAorICB2ZWN0b3JFZmZlY3Q6ICd2ZWN0b3It
ZWZmZWN0JywKKyAgdmVyc2lvbjogMCwKKyAgdmVydEFkdlk6ICd2ZXJ0LWFkdi15JywKKyAgdmVy
dE9yaWdpblg6ICd2ZXJ0LW9yaWdpbi14JywKKyAgdmVydE9yaWdpblk6ICd2ZXJ0LW9yaWdpbi15
JywKKyAgdmlld0JveDogJ3ZpZXdCb3gnLAorICB2aWV3VGFyZ2V0OiAndmlld1RhcmdldCcsCisg
IHZpc2liaWxpdHk6IDAsCisgIHdpZHRoczogMCwKKyAgd29yZFNwYWNpbmc6ICd3b3JkLXNwYWNp
bmcnLAorICB3cml0aW5nTW9kZTogJ3dyaXRpbmctbW9kZScsCisgIHg6IDAsCisgIHhIZWlnaHQ6
ICd4LWhlaWdodCcsCisgIHgxOiAwLAorICB4MjogMCwKKyAgeENoYW5uZWxTZWxlY3RvcjogJ3hD
aGFubmVsU2VsZWN0b3InLAorICB4bGlua0FjdHVhdGU6ICd4bGluazphY3R1YXRlJywKKyAgeGxp
bmtBcmNyb2xlOiAneGxpbms6YXJjcm9sZScsCisgIHhsaW5rSHJlZjogJ3hsaW5rOmhyZWYnLAor
ICB4bGlua1JvbGU6ICd4bGluazpyb2xlJywKKyAgeGxpbmtTaG93OiAneGxpbms6c2hvdycsCisg
IHhsaW5rVGl0bGU6ICd4bGluazp0aXRsZScsCisgIHhsaW5rVHlwZTogJ3hsaW5rOnR5cGUnLAor
ICB4bWxCYXNlOiAneG1sOmJhc2UnLAorICB4bWxuczogMCwKKyAgeG1sbnNYbGluazogJ3htbG5z
OnhsaW5rJywKKyAgeG1sTGFuZzogJ3htbDpsYW5nJywKKyAgeG1sU3BhY2U6ICd4bWw6c3BhY2Un
LAorICB5OiAwLAorICB5MTogMCwKKyAgeTI6IDAsCisgIHlDaGFubmVsU2VsZWN0b3I6ICd5Q2hh
bm5lbFNlbGVjdG9yJywKKyAgejogMCwKKyAgem9vbUFuZFBhbjogJ3pvb21BbmRQYW4nCit9Owor
Cit2YXIgU1ZHRE9NUHJvcGVydHlDb25maWcgPSB7CisgIFByb3BlcnRpZXM6IHt9LAorICBET01B
dHRyaWJ1dGVOYW1lc3BhY2VzOiB7CisgICAgeGxpbmtBY3R1YXRlOiBOUy54bGluaywKKyAgICB4
bGlua0FyY3JvbGU6IE5TLnhsaW5rLAorICAgIHhsaW5rSHJlZjogTlMueGxpbmssCisgICAgeGxp
bmtSb2xlOiBOUy54bGluaywKKyAgICB4bGlua1Nob3c6IE5TLnhsaW5rLAorICAgIHhsaW5rVGl0
bGU6IE5TLnhsaW5rLAorICAgIHhsaW5rVHlwZTogTlMueGxpbmssCisgICAgeG1sQmFzZTogTlMu
eG1sLAorICAgIHhtbExhbmc6IE5TLnhtbCwKKyAgICB4bWxTcGFjZTogTlMueG1sCisgIH0sCisg
IERPTUF0dHJpYnV0ZU5hbWVzOiB7fQorfTsKKworT2JqZWN0LmtleXMoQVRUUlMpLmZvckVhY2go
ZnVuY3Rpb24gKGtleSkgeworICBTVkdET01Qcm9wZXJ0eUNvbmZpZy5Qcm9wZXJ0aWVzW2tleV0g
PSAwOworICBpZiAoQVRUUlNba2V5XSkgeworICAgIFNWR0RPTVByb3BlcnR5Q29uZmlnLkRPTUF0
dHJpYnV0ZU5hbWVzW2tleV0gPSBBVFRSU1trZXldOworICB9Cit9KTsKKworbW9kdWxlLmV4cG9y
dHMgPSBTVkdET01Qcm9wZXJ0eUNvbmZpZzsKK30se31dLDg1OltmdW5jdGlvbihfZGVyZXFfLG1v
ZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ss
IEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBp
cyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFu
IGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRo
ZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0
cmljdCc7CisKK3ZhciBFdmVudFByb3BhZ2F0b3JzID0gX2RlcmVxXygyMCk7Cit2YXIgRXhlY3V0
aW9uRW52aXJvbm1lbnQgPSBfZGVyZXFfKDEzNik7Cit2YXIgUmVhY3RET01Db21wb25lbnRUcmVl
ID0gX2RlcmVxXygzNCk7Cit2YXIgUmVhY3RJbnB1dFNlbGVjdGlvbiA9IF9kZXJlcV8oNjIpOwor
dmFyIFN5bnRoZXRpY0V2ZW50ID0gX2RlcmVxXyg5MSk7CisKK3ZhciBnZXRBY3RpdmVFbGVtZW50
ID0gX2RlcmVxXygxNDUpOwordmFyIGlzVGV4dElucHV0RWxlbWVudCA9IF9kZXJlcV8oMTIzKTsK
K3ZhciBzaGFsbG93RXF1YWwgPSBfZGVyZXFfKDE1Nik7CisKK3ZhciBza2lwU2VsZWN0aW9uQ2hh
bmdlRXZlbnQgPSBFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00gJiYgJ2RvY3VtZW50TW9k
ZScgaW4gZG9jdW1lbnQgJiYgZG9jdW1lbnQuZG9jdW1lbnRNb2RlIDw9IDExOworCit2YXIgZXZl
bnRUeXBlcyA9IHsKKyAgc2VsZWN0OiB7CisgICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHsK
KyAgICAgIGJ1YmJsZWQ6ICdvblNlbGVjdCcsCisgICAgICBjYXB0dXJlZDogJ29uU2VsZWN0Q2Fw
dHVyZScKKyAgICB9LAorICAgIGRlcGVuZGVuY2llczogWyd0b3BCbHVyJywgJ3RvcENvbnRleHRN
ZW51JywgJ3RvcEZvY3VzJywgJ3RvcEtleURvd24nLCAndG9wS2V5VXAnLCAndG9wTW91c2VEb3du
JywgJ3RvcE1vdXNlVXAnLCAndG9wU2VsZWN0aW9uQ2hhbmdlJ10KKyAgfQorfTsKKwordmFyIGFj
dGl2ZUVsZW1lbnQgPSBudWxsOwordmFyIGFjdGl2ZUVsZW1lbnRJbnN0ID0gbnVsbDsKK3ZhciBs
YXN0U2VsZWN0aW9uID0gbnVsbDsKK3ZhciBtb3VzZURvd24gPSBmYWxzZTsKKworLy8gVHJhY2sg
d2hldGhlciBhIGxpc3RlbmVyIGV4aXN0cyBmb3IgdGhpcyBwbHVnaW4uIElmIG5vbmUgZXhpc3Qs
IHdlIGRvCisvLyBub3QgZXh0cmFjdCBldmVudHMuIFNlZSAjMzYzOS4KK3ZhciBoYXNMaXN0ZW5l
ciA9IGZhbHNlOworCisvKioKKyAqIEdldCBhbiBvYmplY3Qgd2hpY2ggaXMgYSB1bmlxdWUgcmVw
cmVzZW50YXRpb24gb2YgdGhlIGN1cnJlbnQgc2VsZWN0aW9uLgorICoKKyAqIFRoZSByZXR1cm4g
dmFsdWUgd2lsbCBub3QgYmUgY29uc2lzdGVudCBhY3Jvc3Mgbm9kZXMgb3IgYnJvd3NlcnMsIGJ1
dAorICogdHdvIGlkZW50aWNhbCBzZWxlY3Rpb25zIG9uIHRoZSBzYW1lIG5vZGUgd2lsbCByZXR1
cm4gaWRlbnRpY2FsIG9iamVjdHMuCisgKgorICogQHBhcmFtIHtET01FbGVtZW50fSBub2RlCisg
KiBAcmV0dXJuIHtvYmplY3R9CisgKi8KK2Z1bmN0aW9uIGdldFNlbGVjdGlvbihub2RlKSB7Cisg
IGlmICgnc2VsZWN0aW9uU3RhcnQnIGluIG5vZGUgJiYgUmVhY3RJbnB1dFNlbGVjdGlvbi5oYXNT
ZWxlY3Rpb25DYXBhYmlsaXRpZXMobm9kZSkpIHsKKyAgICByZXR1cm4geworICAgICAgc3RhcnQ6
IG5vZGUuc2VsZWN0aW9uU3RhcnQsCisgICAgICBlbmQ6IG5vZGUuc2VsZWN0aW9uRW5kCisgICAg
fTsKKyAgfSBlbHNlIGlmICh3aW5kb3cuZ2V0U2VsZWN0aW9uKSB7CisgICAgdmFyIHNlbGVjdGlv
biA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKKyAgICByZXR1cm4geworICAgICAgYW5jaG9yTm9k
ZTogc2VsZWN0aW9uLmFuY2hvck5vZGUsCisgICAgICBhbmNob3JPZmZzZXQ6IHNlbGVjdGlvbi5h
bmNob3JPZmZzZXQsCisgICAgICBmb2N1c05vZGU6IHNlbGVjdGlvbi5mb2N1c05vZGUsCisgICAg
ICBmb2N1c09mZnNldDogc2VsZWN0aW9uLmZvY3VzT2Zmc2V0CisgICAgfTsKKyAgfSBlbHNlIGlm
IChkb2N1bWVudC5zZWxlY3Rpb24pIHsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5zZWxlY3Rp
b24uY3JlYXRlUmFuZ2UoKTsKKyAgICByZXR1cm4geworICAgICAgcGFyZW50RWxlbWVudDogcmFu
Z2UucGFyZW50RWxlbWVudCgpLAorICAgICAgdGV4dDogcmFuZ2UudGV4dCwKKyAgICAgIHRvcDog
cmFuZ2UuYm91bmRpbmdUb3AsCisgICAgICBsZWZ0OiByYW5nZS5ib3VuZGluZ0xlZnQKKyAgICB9
OworICB9Cit9CisKKy8qKgorICogUG9sbCBzZWxlY3Rpb24gdG8gc2VlIHdoZXRoZXIgaXQncyBj
aGFuZ2VkLgorICoKKyAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudAorICogQHJldHVybiB7
P1N5bnRoZXRpY0V2ZW50fQorICovCitmdW5jdGlvbiBjb25zdHJ1Y3RTZWxlY3RFdmVudChuYXRp
dmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHsKKyAgLy8gRW5zdXJlIHdlIGhhdmUgdGhlIHJp
Z2h0IGVsZW1lbnQsIGFuZCB0aGF0IHRoZSB1c2VyIGlzIG5vdCBkcmFnZ2luZyBhCisgIC8vIHNl
bGVjdGlvbiAodGhpcyBtYXRjaGVzIG5hdGl2ZSBgc2VsZWN0YCBldmVudCBiZWhhdmlvcikuIElu
IEhUTUw1LCBzZWxlY3QKKyAgLy8gZmlyZXMgb25seSBvbiBpbnB1dCBhbmQgdGV4dGFyZWEgdGh1
cyBpZiB0aGVyZSdzIG5vIGZvY3VzZWQgZWxlbWVudCB3ZQorICAvLyB3b24ndCBkaXNwYXRjaC4K
KyAgaWYgKG1vdXNlRG93biB8fCBhY3RpdmVFbGVtZW50ID09IG51bGwgfHwgYWN0aXZlRWxlbWVu
dCAhPT0gZ2V0QWN0aXZlRWxlbWVudCgpKSB7CisgICAgcmV0dXJuIG51bGw7CisgIH0KKworICAv
LyBPbmx5IGZpcmUgd2hlbiBzZWxlY3Rpb24gaGFzIGFjdHVhbGx5IGNoYW5nZWQuCisgIHZhciBj
dXJyZW50U2VsZWN0aW9uID0gZ2V0U2VsZWN0aW9uKGFjdGl2ZUVsZW1lbnQpOworICBpZiAoIWxh
c3RTZWxlY3Rpb24gfHwgIXNoYWxsb3dFcXVhbChsYXN0U2VsZWN0aW9uLCBjdXJyZW50U2VsZWN0
aW9uKSkgeworICAgIGxhc3RTZWxlY3Rpb24gPSBjdXJyZW50U2VsZWN0aW9uOworCisgICAgdmFy
IHN5bnRoZXRpY0V2ZW50ID0gU3ludGhldGljRXZlbnQuZ2V0UG9vbGVkKGV2ZW50VHlwZXMuc2Vs
ZWN0LCBhY3RpdmVFbGVtZW50SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTsK
KworICAgIHN5bnRoZXRpY0V2ZW50LnR5cGUgPSAnc2VsZWN0JzsKKyAgICBzeW50aGV0aWNFdmVu
dC50YXJnZXQgPSBhY3RpdmVFbGVtZW50OworCisgICAgRXZlbnRQcm9wYWdhdG9ycy5hY2N1bXVs
YXRlVHdvUGhhc2VEaXNwYXRjaGVzKHN5bnRoZXRpY0V2ZW50KTsKKworICAgIHJldHVybiBzeW50
aGV0aWNFdmVudDsKKyAgfQorCisgIHJldHVybiBudWxsOworfQorCisvKioKKyAqIFRoaXMgcGx1
Z2luIGNyZWF0ZXMgYW4gYG9uU2VsZWN0YCBldmVudCB0aGF0IG5vcm1hbGl6ZXMgc2VsZWN0IGV2
ZW50cworICogYWNyb3NzIGZvcm0gZWxlbWVudHMuCisgKgorICogU3VwcG9ydGVkIGVsZW1lbnRz
IGFyZToKKyAqIC0gaW5wdXQgKHNlZSBgaXNUZXh0SW5wdXRFbGVtZW50YCkKKyAqIC0gdGV4dGFy
ZWEKKyAqIC0gY29udGVudEVkaXRhYmxlCisgKgorICogVGhpcyBkaWZmZXJzIGZyb20gbmF0aXZl
IGJyb3dzZXIgaW1wbGVtZW50YXRpb25zIGluIHRoZSBmb2xsb3dpbmcgd2F5czoKKyAqIC0gRmly
ZXMgb24gY29udGVudEVkaXRhYmxlIGZpZWxkcyBhcyB3ZWxsIGFzIGlucHV0cy4KKyAqIC0gRmly
ZXMgZm9yIGNvbGxhcHNlZCBzZWxlY3Rpb24uCisgKiAtIEZpcmVzIGFmdGVyIHVzZXIgaW5wdXQu
CisgKi8KK3ZhciBTZWxlY3RFdmVudFBsdWdpbiA9IHsKKworICBldmVudFR5cGVzOiBldmVudFR5
cGVzLAorCisgIGV4dHJhY3RFdmVudHM6IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUsIHRhcmdldElu
c3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkgeworICAgIGlmICghaGFzTGlzdGVu
ZXIpIHsKKyAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIHZhciB0YXJnZXROb2RlID0g
dGFyZ2V0SW5zdCA/IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKHRh
cmdldEluc3QpIDogd2luZG93OworCisgICAgc3dpdGNoICh0b3BMZXZlbFR5cGUpIHsKKyAgICAg
IC8vIFRyYWNrIHRoZSBpbnB1dCBub2RlIHRoYXQgaGFzIGZvY3VzLgorICAgICAgY2FzZSAndG9w
Rm9jdXMnOgorICAgICAgICBpZiAoaXNUZXh0SW5wdXRFbGVtZW50KHRhcmdldE5vZGUpIHx8IHRh
cmdldE5vZGUuY29udGVudEVkaXRhYmxlID09PSAndHJ1ZScpIHsKKyAgICAgICAgICBhY3RpdmVF
bGVtZW50ID0gdGFyZ2V0Tm9kZTsKKyAgICAgICAgICBhY3RpdmVFbGVtZW50SW5zdCA9IHRhcmdl
dEluc3Q7CisgICAgICAgICAgbGFzdFNlbGVjdGlvbiA9IG51bGw7CisgICAgICAgIH0KKyAgICAg
ICAgYnJlYWs7CisgICAgICBjYXNlICd0b3BCbHVyJzoKKyAgICAgICAgYWN0aXZlRWxlbWVudCA9
IG51bGw7CisgICAgICAgIGFjdGl2ZUVsZW1lbnRJbnN0ID0gbnVsbDsKKyAgICAgICAgbGFzdFNl
bGVjdGlvbiA9IG51bGw7CisgICAgICAgIGJyZWFrOworCisgICAgICAvLyBEb24ndCBmaXJlIHRo
ZSBldmVudCB3aGlsZSB0aGUgdXNlciBpcyBkcmFnZ2luZy4gVGhpcyBtYXRjaGVzIHRoZQorICAg
ICAgLy8gc2VtYW50aWNzIG9mIHRoZSBuYXRpdmUgc2VsZWN0IGV2ZW50LgorICAgICAgY2FzZSAn
dG9wTW91c2VEb3duJzoKKyAgICAgICAgbW91c2VEb3duID0gdHJ1ZTsKKyAgICAgICAgYnJlYWs7
CisgICAgICBjYXNlICd0b3BDb250ZXh0TWVudSc6CisgICAgICBjYXNlICd0b3BNb3VzZVVwJzoK
KyAgICAgICAgbW91c2VEb3duID0gZmFsc2U7CisgICAgICAgIHJldHVybiBjb25zdHJ1Y3RTZWxl
Y3RFdmVudChuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpOworCisgICAgICAvLyBDaHJv
bWUgYW5kIElFIGZpcmUgbm9uLXN0YW5kYXJkIGV2ZW50IHdoZW4gc2VsZWN0aW9uIGlzIGNoYW5n
ZWQgKGFuZAorICAgICAgLy8gc29tZXRpbWVzIHdoZW4gaXQgaGFzbid0KS4gSUUncyBldmVudCBm
aXJlcyBvdXQgb2Ygb3JkZXIgd2l0aCByZXNwZWN0CisgICAgICAvLyB0byBrZXkgYW5kIGlucHV0
IGV2ZW50cyBvbiBkZWxldGlvbiwgc28gd2UgZGlzY2FyZCBpdC4KKyAgICAgIC8vCisgICAgICAv
LyBGaXJlZm94IGRvZXNuJ3Qgc3VwcG9ydCBzZWxlY3Rpb25jaGFuZ2UsIHNvIGNoZWNrIHNlbGVj
dGlvbiBzdGF0dXMKKyAgICAgIC8vIGFmdGVyIGVhY2gga2V5IGVudHJ5LiBUaGUgc2VsZWN0aW9u
IGNoYW5nZXMgYWZ0ZXIga2V5ZG93biBhbmQgYmVmb3JlCisgICAgICAvLyBrZXl1cCwgYnV0IHdl
IGNoZWNrIG9uIGtleWRvd24gYXMgd2VsbCBpbiB0aGUgY2FzZSBvZiBob2xkaW5nIGRvd24gYQor
ICAgICAgLy8ga2V5LCB3aGVuIG11bHRpcGxlIGtleWRvd24gZXZlbnRzIGFyZSBmaXJlZCBidXQg
b25seSBvbmUga2V5dXAgaXMuCisgICAgICAvLyBUaGlzIGlzIGFsc28gb3VyIGFwcHJvYWNoIGZv
ciBJRSBoYW5kbGluZywgZm9yIHRoZSByZWFzb24gYWJvdmUuCisgICAgICBjYXNlICd0b3BTZWxl
Y3Rpb25DaGFuZ2UnOgorICAgICAgICBpZiAoc2tpcFNlbGVjdGlvbkNoYW5nZUV2ZW50KSB7Cisg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgIC8vIGZhbGxzIHRocm91Z2gKKyAgICAg
IGNhc2UgJ3RvcEtleURvd24nOgorICAgICAgY2FzZSAndG9wS2V5VXAnOgorICAgICAgICByZXR1
cm4gY29uc3RydWN0U2VsZWN0RXZlbnQobmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTsK
KyAgICB9CisKKyAgICByZXR1cm4gbnVsbDsKKyAgfSwKKworICBkaWRQdXRMaXN0ZW5lcjogZnVu
Y3Rpb24gKGluc3QsIHJlZ2lzdHJhdGlvbk5hbWUsIGxpc3RlbmVyKSB7CisgICAgaWYgKHJlZ2lz
dHJhdGlvbk5hbWUgPT09ICdvblNlbGVjdCcpIHsKKyAgICAgIGhhc0xpc3RlbmVyID0gdHJ1ZTsK
KyAgICB9CisgIH0KK307CisKK21vZHVsZS5leHBvcnRzID0gU2VsZWN0RXZlbnRQbHVnaW47Cit9
LHsiMTIzIjoxMjMsIjEzNiI6MTM2LCIxNDUiOjE0NSwiMTU2IjoxNTYsIjIwIjoyMCwiMzQiOjM0
LCI2MiI6NjIsIjkxIjo5MX1dLDg2OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsK
Ky8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRl
ciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3Jh
bnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUg
aW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIAorICovCisKKyd1c2Ugc3RyaWN0JzsKKwor
dmFyIF9wcm9kSW52YXJpYW50ID0gX2RlcmVxXygxMjUpOworCit2YXIgRXZlbnRMaXN0ZW5lciA9
IF9kZXJlcV8oMTM1KTsKK3ZhciBFdmVudFByb3BhZ2F0b3JzID0gX2RlcmVxXygyMCk7Cit2YXIg
UmVhY3RET01Db21wb25lbnRUcmVlID0gX2RlcmVxXygzNCk7Cit2YXIgU3ludGhldGljQW5pbWF0
aW9uRXZlbnQgPSBfZGVyZXFfKDg3KTsKK3ZhciBTeW50aGV0aWNDbGlwYm9hcmRFdmVudCA9IF9k
ZXJlcV8oODgpOwordmFyIFN5bnRoZXRpY0V2ZW50ID0gX2RlcmVxXyg5MSk7Cit2YXIgU3ludGhl
dGljRm9jdXNFdmVudCA9IF9kZXJlcV8oOTIpOwordmFyIFN5bnRoZXRpY0tleWJvYXJkRXZlbnQg
PSBfZGVyZXFfKDk0KTsKK3ZhciBTeW50aGV0aWNNb3VzZUV2ZW50ID0gX2RlcmVxXyg5NSk7Cit2
YXIgU3ludGhldGljRHJhZ0V2ZW50ID0gX2RlcmVxXyg5MCk7Cit2YXIgU3ludGhldGljVG91Y2hF
dmVudCA9IF9kZXJlcV8oOTYpOwordmFyIFN5bnRoZXRpY1RyYW5zaXRpb25FdmVudCA9IF9kZXJl
cV8oOTcpOwordmFyIFN5bnRoZXRpY1VJRXZlbnQgPSBfZGVyZXFfKDk4KTsKK3ZhciBTeW50aGV0
aWNXaGVlbEV2ZW50ID0gX2RlcmVxXyg5OSk7CisKK3ZhciBlbXB0eUZ1bmN0aW9uID0gX2RlcmVx
XygxNDIpOwordmFyIGdldEV2ZW50Q2hhckNvZGUgPSBfZGVyZXFfKDExMSk7Cit2YXIgaW52YXJp
YW50ID0gX2RlcmVxXygxNTApOworCisvKioKKyAqIFR1cm5zCisgKiBbJ2Fib3J0JywgLi4uXQor
ICogaW50bworICogZXZlbnRUeXBlcyA9IHsKKyAqICAgJ2Fib3J0JzogeworICogICAgIHBoYXNl
ZFJlZ2lzdHJhdGlvbk5hbWVzOiB7CisgKiAgICAgICBidWJibGVkOiAnb25BYm9ydCcsCisgKiAg
ICAgICBjYXB0dXJlZDogJ29uQWJvcnRDYXB0dXJlJywKKyAqICAgICB9LAorICogICAgIGRlcGVu
ZGVuY2llczogWyd0b3BBYm9ydCddLAorICogICB9LAorICogICAuLi4KKyAqIH07CisgKiB0b3BM
ZXZlbEV2ZW50c1RvRGlzcGF0Y2hDb25maWcgPSB7CisgKiAgICd0b3BBYm9ydCc6IHsgc2FtZUNv
bmZpZyB9CisgKiB9OworICovCit2YXIgZXZlbnRUeXBlcyA9IHt9OwordmFyIHRvcExldmVsRXZl
bnRzVG9EaXNwYXRjaENvbmZpZyA9IHt9OworWydhYm9ydCcsICdhbmltYXRpb25FbmQnLCAnYW5p
bWF0aW9uSXRlcmF0aW9uJywgJ2FuaW1hdGlvblN0YXJ0JywgJ2JsdXInLCAnY2FuUGxheScsICdj
YW5QbGF5VGhyb3VnaCcsICdjbGljaycsICdjb250ZXh0TWVudScsICdjb3B5JywgJ2N1dCcsICdk
b3VibGVDbGljaycsICdkcmFnJywgJ2RyYWdFbmQnLCAnZHJhZ0VudGVyJywgJ2RyYWdFeGl0Jywg
J2RyYWdMZWF2ZScsICdkcmFnT3ZlcicsICdkcmFnU3RhcnQnLCAnZHJvcCcsICdkdXJhdGlvbkNo
YW5nZScsICdlbXB0aWVkJywgJ2VuY3J5cHRlZCcsICdlbmRlZCcsICdlcnJvcicsICdmb2N1cycs
ICdpbnB1dCcsICdpbnZhbGlkJywgJ2tleURvd24nLCAna2V5UHJlc3MnLCAna2V5VXAnLCAnbG9h
ZCcsICdsb2FkZWREYXRhJywgJ2xvYWRlZE1ldGFkYXRhJywgJ2xvYWRTdGFydCcsICdtb3VzZURv
d24nLCAnbW91c2VNb3ZlJywgJ21vdXNlT3V0JywgJ21vdXNlT3ZlcicsICdtb3VzZVVwJywgJ3Bh
c3RlJywgJ3BhdXNlJywgJ3BsYXknLCAncGxheWluZycsICdwcm9ncmVzcycsICdyYXRlQ2hhbmdl
JywgJ3Jlc2V0JywgJ3Njcm9sbCcsICdzZWVrZWQnLCAnc2Vla2luZycsICdzdGFsbGVkJywgJ3N1
Ym1pdCcsICdzdXNwZW5kJywgJ3RpbWVVcGRhdGUnLCAndG91Y2hDYW5jZWwnLCAndG91Y2hFbmQn
LCAndG91Y2hNb3ZlJywgJ3RvdWNoU3RhcnQnLCAndHJhbnNpdGlvbkVuZCcsICd2b2x1bWVDaGFu
Z2UnLCAnd2FpdGluZycsICd3aGVlbCddLmZvckVhY2goZnVuY3Rpb24gKGV2ZW50KSB7CisgIHZh
ciBjYXBpdGFsaXplZEV2ZW50ID0gZXZlbnRbMF0udG9VcHBlckNhc2UoKSArIGV2ZW50LnNsaWNl
KDEpOworICB2YXIgb25FdmVudCA9ICdvbicgKyBjYXBpdGFsaXplZEV2ZW50OworICB2YXIgdG9w
RXZlbnQgPSAndG9wJyArIGNhcGl0YWxpemVkRXZlbnQ7CisKKyAgdmFyIHR5cGUgPSB7CisgICAg
cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHsKKyAgICAgIGJ1YmJsZWQ6IG9uRXZlbnQsCisgICAg
ICBjYXB0dXJlZDogb25FdmVudCArICdDYXB0dXJlJworICAgIH0sCisgICAgZGVwZW5kZW5jaWVz
OiBbdG9wRXZlbnRdCisgIH07CisgIGV2ZW50VHlwZXNbZXZlbnRdID0gdHlwZTsKKyAgdG9wTGV2
ZWxFdmVudHNUb0Rpc3BhdGNoQ29uZmlnW3RvcEV2ZW50XSA9IHR5cGU7Cit9KTsKKwordmFyIG9u
Q2xpY2tMaXN0ZW5lcnMgPSB7fTsKKworZnVuY3Rpb24gZ2V0RGljdGlvbmFyeUtleShpbnN0KSB7
CisgIC8vIFByZXZlbnRzIFY4IHBlcmZvcm1hbmNlIGlzc3VlOgorICAvLyBodHRwczovL2dpdGh1
Yi5jb20vZmFjZWJvb2svcmVhY3QvcHVsbC83MjMyCisgIHJldHVybiAnLicgKyBpbnN0Ll9yb290
Tm9kZUlEOworfQorCitmdW5jdGlvbiBpc0ludGVyYWN0aXZlKHRhZykgeworICByZXR1cm4gdGFn
ID09PSAnYnV0dG9uJyB8fCB0YWcgPT09ICdpbnB1dCcgfHwgdGFnID09PSAnc2VsZWN0JyB8fCB0
YWcgPT09ICd0ZXh0YXJlYSc7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFByZXZlbnRNb3VzZUV2ZW50
KGluc3QpIHsKKyAgaWYgKGluc3QpIHsKKyAgICB2YXIgZGlzYWJsZWQgPSBpbnN0Ll9jdXJyZW50
RWxlbWVudCAmJiBpbnN0Ll9jdXJyZW50RWxlbWVudC5wcm9wcy5kaXNhYmxlZDsKKworICAgIGlm
IChkaXNhYmxlZCkgeworICAgICAgcmV0dXJuIGlzSW50ZXJhY3RpdmUoaW5zdC5fdGFnKTsKKyAg
ICB9CisgIH0KKworICByZXR1cm4gZmFsc2U7Cit9CisKK3ZhciBTaW1wbGVFdmVudFBsdWdpbiA9
IHsKKworICBldmVudFR5cGVzOiBldmVudFR5cGVzLAorCisgIGV4dHJhY3RFdmVudHM6IGZ1bmN0
aW9uICh0b3BMZXZlbFR5cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRh
cmdldCkgeworICAgIHZhciBkaXNwYXRjaENvbmZpZyA9IHRvcExldmVsRXZlbnRzVG9EaXNwYXRj
aENvbmZpZ1t0b3BMZXZlbFR5cGVdOworICAgIGlmICghZGlzcGF0Y2hDb25maWcpIHsKKyAgICAg
IHJldHVybiBudWxsOworICAgIH0KKyAgICB2YXIgRXZlbnRDb25zdHJ1Y3RvcjsKKyAgICBzd2l0
Y2ggKHRvcExldmVsVHlwZSkgeworICAgICAgY2FzZSAndG9wQWJvcnQnOgorICAgICAgY2FzZSAn
dG9wQ2FuUGxheSc6CisgICAgICBjYXNlICd0b3BDYW5QbGF5VGhyb3VnaCc6CisgICAgICBjYXNl
ICd0b3BEdXJhdGlvbkNoYW5nZSc6CisgICAgICBjYXNlICd0b3BFbXB0aWVkJzoKKyAgICAgIGNh
c2UgJ3RvcEVuY3J5cHRlZCc6CisgICAgICBjYXNlICd0b3BFbmRlZCc6CisgICAgICBjYXNlICd0
b3BFcnJvcic6CisgICAgICBjYXNlICd0b3BJbnB1dCc6CisgICAgICBjYXNlICd0b3BJbnZhbGlk
JzoKKyAgICAgIGNhc2UgJ3RvcExvYWQnOgorICAgICAgY2FzZSAndG9wTG9hZGVkRGF0YSc6Cisg
ICAgICBjYXNlICd0b3BMb2FkZWRNZXRhZGF0YSc6CisgICAgICBjYXNlICd0b3BMb2FkU3RhcnQn
OgorICAgICAgY2FzZSAndG9wUGF1c2UnOgorICAgICAgY2FzZSAndG9wUGxheSc6CisgICAgICBj
YXNlICd0b3BQbGF5aW5nJzoKKyAgICAgIGNhc2UgJ3RvcFByb2dyZXNzJzoKKyAgICAgIGNhc2Ug
J3RvcFJhdGVDaGFuZ2UnOgorICAgICAgY2FzZSAndG9wUmVzZXQnOgorICAgICAgY2FzZSAndG9w
U2Vla2VkJzoKKyAgICAgIGNhc2UgJ3RvcFNlZWtpbmcnOgorICAgICAgY2FzZSAndG9wU3RhbGxl
ZCc6CisgICAgICBjYXNlICd0b3BTdWJtaXQnOgorICAgICAgY2FzZSAndG9wU3VzcGVuZCc6Cisg
ICAgICBjYXNlICd0b3BUaW1lVXBkYXRlJzoKKyAgICAgIGNhc2UgJ3RvcFZvbHVtZUNoYW5nZSc6
CisgICAgICBjYXNlICd0b3BXYWl0aW5nJzoKKyAgICAgICAgLy8gSFRNTCBFdmVudHMKKyAgICAg
ICAgLy8gQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS9pbmRleC5odG1sI2V2ZW50cy0w
CisgICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0aWNFdmVudDsKKyAgICAgICAgYnJl
YWs7CisgICAgICBjYXNlICd0b3BLZXlQcmVzcyc6CisgICAgICAgIC8vIEZpcmVmb3ggY3JlYXRl
cyBhIGtleXByZXNzIGV2ZW50IGZvciBmdW5jdGlvbiBrZXlzIHRvby4gVGhpcyByZW1vdmVzCisg
ICAgICAgIC8vIHRoZSB1bndhbnRlZCBrZXlwcmVzcyBldmVudHMuIEVudGVyIGlzIGhvd2V2ZXIg
Ym90aCBwcmludGFibGUgYW5kCisgICAgICAgIC8vIG5vbi1wcmludGFibGUuIE9uZSB3b3VsZCBl
eHBlY3QgVGFiIHRvIGJlIGFzIHdlbGwgKGJ1dCBpdCBpc24ndCkuCisgICAgICAgIGlmIChnZXRF
dmVudENoYXJDb2RlKG5hdGl2ZUV2ZW50KSA9PT0gMCkgeworICAgICAgICAgIHJldHVybiBudWxs
OworICAgICAgICB9CisgICAgICAvKiBmYWxscyB0aHJvdWdoICovCisgICAgICBjYXNlICd0b3BL
ZXlEb3duJzoKKyAgICAgIGNhc2UgJ3RvcEtleVVwJzoKKyAgICAgICAgRXZlbnRDb25zdHJ1Y3Rv
ciA9IFN5bnRoZXRpY0tleWJvYXJkRXZlbnQ7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAn
dG9wQmx1cic6CisgICAgICBjYXNlICd0b3BGb2N1cyc6CisgICAgICAgIEV2ZW50Q29uc3RydWN0
b3IgPSBTeW50aGV0aWNGb2N1c0V2ZW50OworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJ3Rv
cENsaWNrJzoKKyAgICAgICAgLy8gRmlyZWZveCBjcmVhdGVzIGEgY2xpY2sgZXZlbnQgb24gcmln
aHQgbW91c2UgY2xpY2tzLiBUaGlzIHJlbW92ZXMgdGhlCisgICAgICAgIC8vIHVud2FudGVkIGNs
aWNrIGV2ZW50cy4KKyAgICAgICAgaWYgKG5hdGl2ZUV2ZW50LmJ1dHRvbiA9PT0gMikgeworICAg
ICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisgICAgICAvKiBmYWxscyB0aHJvdWdoICov
CisgICAgICBjYXNlICd0b3BEb3VibGVDbGljayc6CisgICAgICBjYXNlICd0b3BNb3VzZURvd24n
OgorICAgICAgY2FzZSAndG9wTW91c2VNb3ZlJzoKKyAgICAgIGNhc2UgJ3RvcE1vdXNlVXAnOgor
ICAgICAgICAvLyBEaXNhYmxlZCBlbGVtZW50cyBzaG91bGQgbm90IHJlc3BvbmQgdG8gbW91c2Ug
ZXZlbnRzCisgICAgICAgIGlmIChzaG91bGRQcmV2ZW50TW91c2VFdmVudCh0YXJnZXRJbnN0KSkg
eworICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisgICAgICAvKiBmYWxscyB0aHJv
dWdoICovCisgICAgICBjYXNlICd0b3BNb3VzZU91dCc6CisgICAgICBjYXNlICd0b3BNb3VzZU92
ZXInOgorICAgICAgY2FzZSAndG9wQ29udGV4dE1lbnUnOgorICAgICAgICBFdmVudENvbnN0cnVj
dG9yID0gU3ludGhldGljTW91c2VFdmVudDsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICd0
b3BEcmFnJzoKKyAgICAgIGNhc2UgJ3RvcERyYWdFbmQnOgorICAgICAgY2FzZSAndG9wRHJhZ0Vu
dGVyJzoKKyAgICAgIGNhc2UgJ3RvcERyYWdFeGl0JzoKKyAgICAgIGNhc2UgJ3RvcERyYWdMZWF2
ZSc6CisgICAgICBjYXNlICd0b3BEcmFnT3Zlcic6CisgICAgICBjYXNlICd0b3BEcmFnU3RhcnQn
OgorICAgICAgY2FzZSAndG9wRHJvcCc6CisgICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBTeW50
aGV0aWNEcmFnRXZlbnQ7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAndG9wVG91Y2hDYW5j
ZWwnOgorICAgICAgY2FzZSAndG9wVG91Y2hFbmQnOgorICAgICAgY2FzZSAndG9wVG91Y2hNb3Zl
JzoKKyAgICAgIGNhc2UgJ3RvcFRvdWNoU3RhcnQnOgorICAgICAgICBFdmVudENvbnN0cnVjdG9y
ID0gU3ludGhldGljVG91Y2hFdmVudDsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICd0b3BB
bmltYXRpb25FbmQnOgorICAgICAgY2FzZSAndG9wQW5pbWF0aW9uSXRlcmF0aW9uJzoKKyAgICAg
IGNhc2UgJ3RvcEFuaW1hdGlvblN0YXJ0JzoKKyAgICAgICAgRXZlbnRDb25zdHJ1Y3RvciA9IFN5
bnRoZXRpY0FuaW1hdGlvbkV2ZW50OworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJ3RvcFRy
YW5zaXRpb25FbmQnOgorICAgICAgICBFdmVudENvbnN0cnVjdG9yID0gU3ludGhldGljVHJhbnNp
dGlvbkV2ZW50OworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJ3RvcFNjcm9sbCc6CisgICAg
ICAgIEV2ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0aWNVSUV2ZW50OworICAgICAgICBicmVhazsK
KyAgICAgIGNhc2UgJ3RvcFdoZWVsJzoKKyAgICAgICAgRXZlbnRDb25zdHJ1Y3RvciA9IFN5bnRo
ZXRpY1doZWVsRXZlbnQ7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAndG9wQ29weSc6Cisg
ICAgICBjYXNlICd0b3BDdXQnOgorICAgICAgY2FzZSAndG9wUGFzdGUnOgorICAgICAgICBFdmVu
dENvbnN0cnVjdG9yID0gU3ludGhldGljQ2xpcGJvYXJkRXZlbnQ7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICAhRXZlbnRDb25zdHJ1Y3RvciA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0
aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1NpbXBsZUV2ZW50UGx1Z2luOiBVbmhhbmRsZWQgZXZl
bnQgdHlwZSwgYCVzYC4nLCB0b3BMZXZlbFR5cGUpIDogX3Byb2RJbnZhcmlhbnQoJzg2JywgdG9w
TGV2ZWxUeXBlKSA6IHZvaWQgMDsKKyAgICB2YXIgZXZlbnQgPSBFdmVudENvbnN0cnVjdG9yLmdl
dFBvb2xlZChkaXNwYXRjaENvbmZpZywgdGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2
ZW50VGFyZ2V0KTsKKyAgICBFdmVudFByb3BhZ2F0b3JzLmFjY3VtdWxhdGVUd29QaGFzZURpc3Bh
dGNoZXMoZXZlbnQpOworICAgIHJldHVybiBldmVudDsKKyAgfSwKKworICBkaWRQdXRMaXN0ZW5l
cjogZnVuY3Rpb24gKGluc3QsIHJlZ2lzdHJhdGlvbk5hbWUsIGxpc3RlbmVyKSB7CisgICAgLy8g
TW9iaWxlIFNhZmFyaSBkb2VzIG5vdCBmaXJlIHByb3Blcmx5IGJ1YmJsZSBjbGljayBldmVudHMg
b24KKyAgICAvLyBub24taW50ZXJhY3RpdmUgZWxlbWVudHMsIHdoaWNoIG1lYW5zIGRlbGVnYXRl
ZCBjbGljayBsaXN0ZW5lcnMgZG8gbm90CisgICAgLy8gZmlyZS4gVGhlIHdvcmthcm91bmQgZm9y
IHRoaXMgYnVnIGludm9sdmVzIGF0dGFjaGluZyBhbiBlbXB0eSBjbGljaworICAgIC8vIGxpc3Rl
bmVyIG9uIHRoZSB0YXJnZXQgbm9kZS4KKyAgICAvLyBodHRwOi8vd3d3LnF1aXJrc21vZGUub3Jn
L2Jsb2cvYXJjaGl2ZXMvMjAxMC8wOS9jbGlja19ldmVudF9kZWwuaHRtbAorICAgIGlmIChyZWdp
c3RyYXRpb25OYW1lID09PSAnb25DbGljaycgJiYgIWlzSW50ZXJhY3RpdmUoaW5zdC5fdGFnKSkg
eworICAgICAgdmFyIGtleSA9IGdldERpY3Rpb25hcnlLZXkoaW5zdCk7CisgICAgICB2YXIgbm9k
ZSA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKGluc3QpOworICAg
ICAgaWYgKCFvbkNsaWNrTGlzdGVuZXJzW2tleV0pIHsKKyAgICAgICAgb25DbGlja0xpc3RlbmVy
c1trZXldID0gRXZlbnRMaXN0ZW5lci5saXN0ZW4obm9kZSwgJ2NsaWNrJywgZW1wdHlGdW5jdGlv
bik7CisgICAgICB9CisgICAgfQorICB9LAorCisgIHdpbGxEZWxldGVMaXN0ZW5lcjogZnVuY3Rp
b24gKGluc3QsIHJlZ2lzdHJhdGlvbk5hbWUpIHsKKyAgICBpZiAocmVnaXN0cmF0aW9uTmFtZSA9
PT0gJ29uQ2xpY2snICYmICFpc0ludGVyYWN0aXZlKGluc3QuX3RhZykpIHsKKyAgICAgIHZhciBr
ZXkgPSBnZXREaWN0aW9uYXJ5S2V5KGluc3QpOworICAgICAgb25DbGlja0xpc3RlbmVyc1trZXld
LnJlbW92ZSgpOworICAgICAgZGVsZXRlIG9uQ2xpY2tMaXN0ZW5lcnNba2V5XTsKKyAgICB9Cisg
IH0KKworfTsKKworbW9kdWxlLmV4cG9ydHMgPSBTaW1wbGVFdmVudFBsdWdpbjsKK30seyIxMTEi
OjExMSwiMTI1IjoxMjUsIjEzNSI6MTM1LCIxNDIiOjE0MiwiMTUwIjoxNTAsIjIwIjoyMCwiMzQi
OjM0LCI4NyI6ODcsIjg4Ijo4OCwiOTAiOjkwLCI5MSI6OTEsIjkyIjo5MiwiOTQiOjk0LCI5NSI6
OTUsIjk2Ijo5NiwiOTciOjk3LCI5OCI6OTgsIjk5Ijo5OX1dLDg3OltmdW5jdGlvbihfZGVyZXFf
LG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJv
b2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29k
ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisg
KiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUu
IEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNl
IHN0cmljdCc7CisKK3ZhciBTeW50aGV0aWNFdmVudCA9IF9kZXJlcV8oOTEpOworCisvKioKKyAq
IEBpbnRlcmZhY2UgRXZlbnQKKyAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1hbmlt
YXRpb25zLyNBbmltYXRpb25FdmVudC1pbnRlcmZhY2UKKyAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9w
ZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0FuaW1hdGlvbkV2ZW50CisgKi8KK3Zh
ciBBbmltYXRpb25FdmVudEludGVyZmFjZSA9IHsKKyAgYW5pbWF0aW9uTmFtZTogbnVsbCwKKyAg
ZWxhcHNlZFRpbWU6IG51bGwsCisgIHBzZXVkb0VsZW1lbnQ6IG51bGwKK307CisKKy8qKgorICog
QHBhcmFtIHtvYmplY3R9IGRpc3BhdGNoQ29uZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNw
YXRjaCB0aGlzIGV2ZW50LgorICogQHBhcmFtIHtzdHJpbmd9IGRpc3BhdGNoTWFya2VyIE1hcmtl
ciBpZGVudGlmeWluZyB0aGUgZXZlbnQgdGFyZ2V0LgorICogQHBhcmFtIHtvYmplY3R9IG5hdGl2
ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LgorICogQGV4dGVuZHMge1N5bnRoZXRpY0V2ZW50
fQorICovCitmdW5jdGlvbiBTeW50aGV0aWNBbmltYXRpb25FdmVudChkaXNwYXRjaENvbmZpZywg
ZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkgeworICByZXR1
cm4gU3ludGhldGljRXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJr
ZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7Cit9CisKK1N5bnRoZXRpY0V2ZW50
LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNBbmltYXRpb25FdmVudCwgQW5pbWF0aW9uRXZlbnRJbnRl
cmZhY2UpOworCittb2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRpY0FuaW1hdGlvbkV2ZW50OworfSx7
IjkxIjo5MX1dLDg4OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICog
Q29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
ZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9m
IHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNh
bWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBTeW50aGV0aWNF
dmVudCA9IF9kZXJlcV8oOTEpOworCisvKioKKyAqIEBpbnRlcmZhY2UgRXZlbnQKKyAqIEBzZWUg
aHR0cDovL3d3dy53My5vcmcvVFIvY2xpcGJvYXJkLWFwaXMvCisgKi8KK3ZhciBDbGlwYm9hcmRF
dmVudEludGVyZmFjZSA9IHsKKyAgY2xpcGJvYXJkRGF0YTogZnVuY3Rpb24gKGV2ZW50KSB7Cisg
ICAgcmV0dXJuICdjbGlwYm9hcmREYXRhJyBpbiBldmVudCA/IGV2ZW50LmNsaXBib2FyZERhdGEg
OiB3aW5kb3cuY2xpcGJvYXJkRGF0YTsKKyAgfQorfTsKKworLyoqCisgKiBAcGFyYW0ge29iamVj
dH0gZGlzcGF0Y2hDb25maWcgQ29uZmlndXJhdGlvbiB1c2VkIHRvIGRpc3BhdGNoIHRoaXMgZXZl
bnQuCisgKiBAcGFyYW0ge3N0cmluZ30gZGlzcGF0Y2hNYXJrZXIgTWFya2VyIGlkZW50aWZ5aW5n
IHRoZSBldmVudCB0YXJnZXQuCisgKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZl
IGJyb3dzZXIgZXZlbnQuCisgKiBAZXh0ZW5kcyB7U3ludGhldGljVUlFdmVudH0KKyAqLworZnVu
Y3Rpb24gU3ludGhldGljQ2xpcGJvYXJkRXZlbnQoZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFy
a2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHsKKyAgcmV0dXJuIFN5bnRoZXRp
Y0V2ZW50LmNhbGwodGhpcywgZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVF
dmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpOworfQorCitTeW50aGV0aWNFdmVudC5hdWdtZW50Q2xh
c3MoU3ludGhldGljQ2xpcGJvYXJkRXZlbnQsIENsaXBib2FyZEV2ZW50SW50ZXJmYWNlKTsKKwor
bW9kdWxlLmV4cG9ydHMgPSBTeW50aGV0aWNDbGlwYm9hcmRFdmVudDsKK30seyI5MSI6OTF9XSw4
OTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAy
MDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNl
bnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBv
ZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmln
aHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9y
eS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgU3ludGhldGljRXZlbnQgPSBfZGVy
ZXFfKDkxKTsKKworLyoqCisgKiBAaW50ZXJmYWNlIEV2ZW50CisgKiBAc2VlIGh0dHA6Ly93d3cu
dzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy8jZXZlbnRzLWNvbXBvc2l0aW9uZXZlbnRzCisg
Ki8KK3ZhciBDb21wb3NpdGlvbkV2ZW50SW50ZXJmYWNlID0geworICBkYXRhOiBudWxsCit9Owor
CisvKioKKyAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBDb25maWd1cmF0aW9uIHVz
ZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVudC4KKyAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwYXRjaE1h
cmtlciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC4KKyAqIEBwYXJhbSB7b2Jq
ZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC4KKyAqIEBleHRlbmRzIHtTeW50
aGV0aWNVSUV2ZW50fQorICovCitmdW5jdGlvbiBTeW50aGV0aWNDb21wb3NpdGlvbkV2ZW50KGRp
c3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFy
Z2V0KSB7CisgIHJldHVybiBTeW50aGV0aWNFdmVudC5jYWxsKHRoaXMsIGRpc3BhdGNoQ29uZmln
LCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTsKK30KKwor
U3ludGhldGljRXZlbnQuYXVnbWVudENsYXNzKFN5bnRoZXRpY0NvbXBvc2l0aW9uRXZlbnQsIENv
bXBvc2l0aW9uRXZlbnRJbnRlcmZhY2UpOworCittb2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRpY0Nv
bXBvc2l0aW9uRXZlbnQ7Cit9LHsiOTEiOjkxfV0sOTA6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxl
LGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5j
LgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxp
Y2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRk
aXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBB
VEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0
JzsKKwordmFyIFN5bnRoZXRpY01vdXNlRXZlbnQgPSBfZGVyZXFfKDk1KTsKKworLyoqCisgKiBA
aW50ZXJmYWNlIERyYWdFdmVudAorICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2
ZWwtMy1FdmVudHMvCisgKi8KK3ZhciBEcmFnRXZlbnRJbnRlcmZhY2UgPSB7CisgIGRhdGFUcmFu
c2ZlcjogbnVsbAorfTsKKworLyoqCisgKiBAcGFyYW0ge29iamVjdH0gZGlzcGF0Y2hDb25maWcg
Q29uZmlndXJhdGlvbiB1c2VkIHRvIGRpc3BhdGNoIHRoaXMgZXZlbnQuCisgKiBAcGFyYW0ge3N0
cmluZ30gZGlzcGF0Y2hNYXJrZXIgTWFya2VyIGlkZW50aWZ5aW5nIHRoZSBldmVudCB0YXJnZXQu
CisgKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuCisg
KiBAZXh0ZW5kcyB7U3ludGhldGljVUlFdmVudH0KKyAqLworZnVuY3Rpb24gU3ludGhldGljRHJh
Z0V2ZW50KGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2
ZUV2ZW50VGFyZ2V0KSB7CisgIHJldHVybiBTeW50aGV0aWNNb3VzZUV2ZW50LmNhbGwodGhpcywg
ZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRU
YXJnZXQpOworfQorCitTeW50aGV0aWNNb3VzZUV2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNE
cmFnRXZlbnQsIERyYWdFdmVudEludGVyZmFjZSk7CisKK21vZHVsZS5leHBvcnRzID0gU3ludGhl
dGljRHJhZ0V2ZW50OworfSx7Ijk1Ijo5NX1dLDkxOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxl
eHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4K
KyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNl
bnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0
aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRF
TlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7
CisKK3ZhciBfYXNzaWduID0gX2RlcmVxXygxNTgpOworCit2YXIgUG9vbGVkQ2xhc3MgPSBfZGVy
ZXFfKDI1KTsKKwordmFyIGVtcHR5RnVuY3Rpb24gPSBfZGVyZXFfKDE0Mik7Cit2YXIgd2Fybmlu
ZyA9IF9kZXJlcV8oMTU3KTsKKwordmFyIGRpZFdhcm5Gb3JBZGRlZE5ld1Byb3BlcnR5ID0gZmFs
c2U7Cit2YXIgaXNQcm94eVN1cHBvcnRlZCA9IHR5cGVvZiBQcm94eSA9PT0gJ2Z1bmN0aW9uJzsK
KwordmFyIHNob3VsZEJlUmVsZWFzZWRQcm9wZXJ0aWVzID0gWydkaXNwYXRjaENvbmZpZycsICdf
dGFyZ2V0SW5zdCcsICduYXRpdmVFdmVudCcsICdpc0RlZmF1bHRQcmV2ZW50ZWQnLCAnaXNQcm9w
YWdhdGlvblN0b3BwZWQnLCAnX2Rpc3BhdGNoTGlzdGVuZXJzJywgJ19kaXNwYXRjaEluc3RhbmNl
cyddOworCisvKioKKyAqIEBpbnRlcmZhY2UgRXZlbnQKKyAqIEBzZWUgaHR0cDovL3d3dy53My5v
cmcvVFIvRE9NLUxldmVsLTMtRXZlbnRzLworICovCit2YXIgRXZlbnRJbnRlcmZhY2UgPSB7Cisg
IHR5cGU6IG51bGwsCisgIHRhcmdldDogbnVsbCwKKyAgLy8gY3VycmVudFRhcmdldCBpcyBzZXQg
d2hlbiBkaXNwYXRjaGluZzsgbm8gdXNlIGluIGNvcHlpbmcgaXQgaGVyZQorICBjdXJyZW50VGFy
Z2V0OiBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zTnVsbCwKKyAgZXZlbnRQaGFzZTogbnVsbCwK
KyAgYnViYmxlczogbnVsbCwKKyAgY2FuY2VsYWJsZTogbnVsbCwKKyAgdGltZVN0YW1wOiBmdW5j
dGlvbiAoZXZlbnQpIHsKKyAgICByZXR1cm4gZXZlbnQudGltZVN0YW1wIHx8IERhdGUubm93KCk7
CisgIH0sCisgIGRlZmF1bHRQcmV2ZW50ZWQ6IG51bGwsCisgIGlzVHJ1c3RlZDogbnVsbAorfTsK
KworLyoqCisgKiBTeW50aGV0aWMgZXZlbnRzIGFyZSBkaXNwYXRjaGVkIGJ5IGV2ZW50IHBsdWdp
bnMsIHR5cGljYWxseSBpbiByZXNwb25zZSB0byBhCisgKiB0b3AtbGV2ZWwgZXZlbnQgZGVsZWdh
dGlvbiBoYW5kbGVyLgorICoKKyAqIFRoZXNlIHN5c3RlbXMgc2hvdWxkIGdlbmVyYWxseSB1c2Ug
cG9vbGluZyB0byByZWR1Y2UgdGhlIGZyZXF1ZW5jeSBvZiBnYXJiYWdlCisgKiBjb2xsZWN0aW9u
LiBUaGUgc3lzdGVtIHNob3VsZCBjaGVjayBgaXNQZXJzaXN0ZW50YCB0byBkZXRlcm1pbmUgd2hl
dGhlciB0aGUKKyAqIGV2ZW50IHNob3VsZCBiZSByZWxlYXNlZCBpbnRvIHRoZSBwb29sIGFmdGVy
IGJlaW5nIGRpc3BhdGNoZWQuIFVzZXJzIHRoYXQKKyAqIG5lZWQgYSBwZXJzaXN0ZWQgZXZlbnQg
c2hvdWxkIGludm9rZSBgcGVyc2lzdGAuCisgKgorICogU3ludGhldGljIGV2ZW50cyAoYW5kIHN1
YmNsYXNzZXMpIGltcGxlbWVudCB0aGUgRE9NIExldmVsIDMgRXZlbnRzIEFQSSBieQorICogbm9y
bWFsaXppbmcgYnJvd3NlciBxdWlya3MuIFN1YmNsYXNzZXMgZG8gbm90IG5lY2Vzc2FyaWx5IGhh
dmUgdG8gaW1wbGVtZW50IGEKKyAqIERPTSBpbnRlcmZhY2U7IGN1c3RvbSBhcHBsaWNhdGlvbi1z
cGVjaWZpYyBldmVudHMgY2FuIGFsc28gc3ViY2xhc3MgdGhpcy4KKyAqCisgKiBAcGFyYW0ge29i
amVjdH0gZGlzcGF0Y2hDb25maWcgQ29uZmlndXJhdGlvbiB1c2VkIHRvIGRpc3BhdGNoIHRoaXMg
ZXZlbnQuCisgKiBAcGFyYW0geyp9IHRhcmdldEluc3QgTWFya2VyIGlkZW50aWZ5aW5nIHRoZSBl
dmVudCB0YXJnZXQuCisgKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dz
ZXIgZXZlbnQuCisgKiBAcGFyYW0ge0RPTUV2ZW50VGFyZ2V0fSBuYXRpdmVFdmVudFRhcmdldCBU
YXJnZXQgbm9kZS4KKyAqLworZnVuY3Rpb24gU3ludGhldGljRXZlbnQoZGlzcGF0Y2hDb25maWcs
IHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkgeworICBpZiAoImRl
dmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgLy8gdGhlc2UgaGF2ZSBhIGdldHRl
ci9zZXR0ZXIgZm9yIHdhcm5pbmdzCisgICAgZGVsZXRlIHRoaXMubmF0aXZlRXZlbnQ7CisgICAg
ZGVsZXRlIHRoaXMucHJldmVudERlZmF1bHQ7CisgICAgZGVsZXRlIHRoaXMuc3RvcFByb3BhZ2F0
aW9uOworICB9CisKKyAgdGhpcy5kaXNwYXRjaENvbmZpZyA9IGRpc3BhdGNoQ29uZmlnOworICB0
aGlzLl90YXJnZXRJbnN0ID0gdGFyZ2V0SW5zdDsKKyAgdGhpcy5uYXRpdmVFdmVudCA9IG5hdGl2
ZUV2ZW50OworCisgIHZhciBJbnRlcmZhY2UgPSB0aGlzLmNvbnN0cnVjdG9yLkludGVyZmFjZTsK
KyAgZm9yICh2YXIgcHJvcE5hbWUgaW4gSW50ZXJmYWNlKSB7CisgICAgaWYgKCFJbnRlcmZhY2Uu
aGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7CisgICAgICBjb250aW51ZTsKKyAgICB9CisgICAg
aWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgZGVsZXRlIHRoaXNb
cHJvcE5hbWVdOyAvLyB0aGlzIGhhcyBhIGdldHRlci9zZXR0ZXIgZm9yIHdhcm5pbmdzCisgICAg
fQorICAgIHZhciBub3JtYWxpemUgPSBJbnRlcmZhY2VbcHJvcE5hbWVdOworICAgIGlmIChub3Jt
YWxpemUpIHsKKyAgICAgIHRoaXNbcHJvcE5hbWVdID0gbm9ybWFsaXplKG5hdGl2ZUV2ZW50KTsK
KyAgICB9IGVsc2UgeworICAgICAgaWYgKHByb3BOYW1lID09PSAndGFyZ2V0JykgeworICAgICAg
ICB0aGlzLnRhcmdldCA9IG5hdGl2ZUV2ZW50VGFyZ2V0OworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgdGhpc1twcm9wTmFtZV0gPSBuYXRpdmVFdmVudFtwcm9wTmFtZV07CisgICAgICB9CisgICAg
fQorICB9CisKKyAgdmFyIGRlZmF1bHRQcmV2ZW50ZWQgPSBuYXRpdmVFdmVudC5kZWZhdWx0UHJl
dmVudGVkICE9IG51bGwgPyBuYXRpdmVFdmVudC5kZWZhdWx0UHJldmVudGVkIDogbmF0aXZlRXZl
bnQucmV0dXJuVmFsdWUgPT09IGZhbHNlOworICBpZiAoZGVmYXVsdFByZXZlbnRlZCkgeworICAg
IHRoaXMuaXNEZWZhdWx0UHJldmVudGVkID0gZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc1RydWU7
CisgIH0gZWxzZSB7CisgICAgdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQgPSBlbXB0eUZ1bmN0aW9u
LnRoYXRSZXR1cm5zRmFsc2U7CisgIH0KKyAgdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZCA9IGVt
cHR5RnVuY3Rpb24udGhhdFJldHVybnNGYWxzZTsKKyAgcmV0dXJuIHRoaXM7Cit9CisKK19hc3Np
Z24oU3ludGhldGljRXZlbnQucHJvdG90eXBlLCB7CisKKyAgcHJldmVudERlZmF1bHQ6IGZ1bmN0
aW9uICgpIHsKKyAgICB0aGlzLmRlZmF1bHRQcmV2ZW50ZWQgPSB0cnVlOworICAgIHZhciBldmVu
dCA9IHRoaXMubmF0aXZlRXZlbnQ7CisgICAgaWYgKCFldmVudCkgeworICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGlmIChldmVudC5wcmV2ZW50RGVmYXVsdCkgeworICAgICAgZXZlbnQucHJl
dmVudERlZmF1bHQoKTsKKyAgICB9IGVsc2UgaWYgKHR5cGVvZiBldmVudC5yZXR1cm5WYWx1ZSAh
PT0gJ3Vua25vd24nKSB7CisgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHZhbGlkLXR5cGVv
ZgorICAgICAgZXZlbnQucmV0dXJuVmFsdWUgPSBmYWxzZTsKKyAgICB9CisgICAgdGhpcy5pc0Rl
ZmF1bHRQcmV2ZW50ZWQgPSBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zVHJ1ZTsKKyAgfSwKKwor
ICBzdG9wUHJvcGFnYXRpb246IGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgZXZlbnQgPSB0aGlzLm5h
dGl2ZUV2ZW50OworICAgIGlmICghZXZlbnQpIHsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBpZiAoZXZlbnQuc3RvcFByb3BhZ2F0aW9uKSB7CisgICAgICBldmVudC5zdG9wUHJvcGFnYXRp
b24oKTsKKyAgICB9IGVsc2UgaWYgKHR5cGVvZiBldmVudC5jYW5jZWxCdWJibGUgIT09ICd1bmtu
b3duJykgeworICAgICAgLy8gZXNsaW50LWRpc2FibGUtbGluZSB2YWxpZC10eXBlb2YKKyAgICAg
IC8vIFRoZSBDaGFuZ2VFdmVudFBsdWdpbiByZWdpc3RlcnMgYSAicHJvcGVydHljaGFuZ2UiIGV2
ZW50IGZvcgorICAgICAgLy8gSUUuIFRoaXMgZXZlbnQgZG9lcyBub3Qgc3VwcG9ydCBidWJibGlu
ZyBvciBjYW5jZWxsaW5nLCBhbmQKKyAgICAgIC8vIGFueSByZWZlcmVuY2VzIHRvIGNhbmNlbEJ1
YmJsZSB0aHJvdyAiTWVtYmVyIG5vdCBmb3VuZCIuICBBCisgICAgICAvLyB0eXBlb2YgY2hlY2sg
b2YgInVua25vd24iIGNpcmN1bXZlbnRzIHRoaXMgaXNzdWUgKGFuZCBpcyBhbHNvCisgICAgICAv
LyBJRSBzcGVjaWZpYykuCisgICAgICBldmVudC5jYW5jZWxCdWJibGUgPSB0cnVlOworICAgIH0K
KworICAgIHRoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQgPSBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1
cm5zVHJ1ZTsKKyAgfSwKKworICAvKioKKyAgICogV2UgcmVsZWFzZSBhbGwgZGlzcGF0Y2hlZCBg
U3ludGhldGljRXZlbnRgcyBhZnRlciBlYWNoIGV2ZW50IGxvb3AsIGFkZGluZworICAgKiB0aGVt
IGJhY2sgaW50byB0aGUgcG9vbC4gVGhpcyBhbGxvd3MgYSB3YXkgdG8gaG9sZCBvbnRvIGEgcmVm
ZXJlbmNlIHRoYXQKKyAgICogd29uJ3QgYmUgYWRkZWQgYmFjayBpbnRvIHRoZSBwb29sLgorICAg
Ki8KKyAgcGVyc2lzdDogZnVuY3Rpb24gKCkgeworICAgIHRoaXMuaXNQZXJzaXN0ZW50ID0gZW1w
dHlGdW5jdGlvbi50aGF0UmV0dXJuc1RydWU7CisgIH0sCisKKyAgLyoqCisgICAqIENoZWNrcyBp
ZiB0aGlzIGV2ZW50IHNob3VsZCBiZSByZWxlYXNlZCBiYWNrIGludG8gdGhlIHBvb2wuCisgICAq
CisgICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdGhpcyBzaG91bGQgbm90IGJlIHJlbGVh
c2VkLCBmYWxzZSBvdGhlcndpc2UuCisgICAqLworICBpc1BlcnNpc3RlbnQ6IGVtcHR5RnVuY3Rp
b24udGhhdFJldHVybnNGYWxzZSwKKworICAvKioKKyAgICogYFBvb2xlZENsYXNzYCBsb29rcyBm
b3IgYGRlc3RydWN0b3JgIG9uIGVhY2ggaW5zdGFuY2UgaXQgcmVsZWFzZXMuCisgICAqLworICBk
ZXN0cnVjdG9yOiBmdW5jdGlvbiAoKSB7CisgICAgdmFyIEludGVyZmFjZSA9IHRoaXMuY29uc3Ry
dWN0b3IuSW50ZXJmYWNlOworICAgIGZvciAodmFyIHByb3BOYW1lIGluIEludGVyZmFjZSkgewor
ICAgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgICBPYmpl
Y3QuZGVmaW5lUHJvcGVydHkodGhpcywgcHJvcE5hbWUsIGdldFBvb2xlZFdhcm5pbmdQcm9wZXJ0
eURlZmluaXRpb24ocHJvcE5hbWUsIEludGVyZmFjZVtwcm9wTmFtZV0pKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHRoaXNbcHJvcE5hbWVdID0gbnVsbDsKKyAgICAgIH0KKyAgICB9CisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBzaG91bGRCZVJlbGVhc2VkUHJvcGVydGllcy5sZW5ndGg7IGkr
KykgeworICAgICAgdGhpc1tzaG91bGRCZVJlbGVhc2VkUHJvcGVydGllc1tpXV0gPSBudWxsOwor
ICAgIH0KKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICBP
YmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ25hdGl2ZUV2ZW50JywgZ2V0UG9vbGVkV2Fybmlu
Z1Byb3BlcnR5RGVmaW5pdGlvbignbmF0aXZlRXZlbnQnLCBudWxsKSk7CisgICAgICBPYmplY3Qu
ZGVmaW5lUHJvcGVydHkodGhpcywgJ3ByZXZlbnREZWZhdWx0JywgZ2V0UG9vbGVkV2FybmluZ1By
b3BlcnR5RGVmaW5pdGlvbigncHJldmVudERlZmF1bHQnLCBlbXB0eUZ1bmN0aW9uKSk7CisgICAg
ICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ3N0b3BQcm9wYWdhdGlvbicsIGdldFBvb2xl
ZFdhcm5pbmdQcm9wZXJ0eURlZmluaXRpb24oJ3N0b3BQcm9wYWdhdGlvbicsIGVtcHR5RnVuY3Rp
b24pKTsKKyAgICB9CisgIH0KKworfSk7CisKK1N5bnRoZXRpY0V2ZW50LkludGVyZmFjZSA9IEV2
ZW50SW50ZXJmYWNlOworCitpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7Cisg
IGlmIChpc1Byb3h5U3VwcG9ydGVkKSB7CisgICAgLyplc2xpbnQtZGlzYWJsZSBuby1mdW5jLWFz
c2lnbiAqLworICAgIFN5bnRoZXRpY0V2ZW50ID0gbmV3IFByb3h5KFN5bnRoZXRpY0V2ZW50LCB7
CisgICAgICBjb25zdHJ1Y3Q6IGZ1bmN0aW9uICh0YXJnZXQsIGFyZ3MpIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMuYXBwbHkodGFyZ2V0LCBPYmplY3QuY3JlYXRlKHRhcmdldC5wcm90b3R5cGUpLCBh
cmdzKTsKKyAgICAgIH0sCisgICAgICBhcHBseTogZnVuY3Rpb24gKGNvbnN0cnVjdG9yLCB0aGF0
LCBhcmdzKSB7CisgICAgICAgIHJldHVybiBuZXcgUHJveHkoY29uc3RydWN0b3IuYXBwbHkodGhh
dCwgYXJncyksIHsKKyAgICAgICAgICBzZXQ6IGZ1bmN0aW9uICh0YXJnZXQsIHByb3AsIHZhbHVl
KSB7CisgICAgICAgICAgICBpZiAocHJvcCAhPT0gJ2lzUGVyc2lzdGVudCcgJiYgIXRhcmdldC5j
b25zdHJ1Y3Rvci5JbnRlcmZhY2UuaGFzT3duUHJvcGVydHkocHJvcCkgJiYgc2hvdWxkQmVSZWxl
YXNlZFByb3BlcnRpZXMuaW5kZXhPZihwcm9wKSA9PT0gLTEpIHsKKyAgICAgICAgICAgICAgImRl
dmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhkaWRXYXJuRm9yQWRkZWROZXdQ
cm9wZXJ0eSB8fCB0YXJnZXQuaXNQZXJzaXN0ZW50KCksICdUaGlzIHN5bnRoZXRpYyBldmVudCBp
cyByZXVzZWQgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuIElmIHlvdVwncmUgJyArICdzZWVpbmcg
dGhpcywgeW91XCdyZSBhZGRpbmcgYSBuZXcgcHJvcGVydHkgaW4gdGhlIHN5bnRoZXRpYyBldmVu
dCBvYmplY3QuICcgKyAnVGhlIHByb3BlcnR5IGlzIG5ldmVyIHJlbGVhc2VkLiBTZWUgJyArICdo
dHRwczovL2ZiLm1lL3JlYWN0LWV2ZW50LXBvb2xpbmcgZm9yIG1vcmUgaW5mb3JtYXRpb24uJykg
OiB2b2lkIDA7CisgICAgICAgICAgICAgIGRpZFdhcm5Gb3JBZGRlZE5ld1Byb3BlcnR5ID0gdHJ1
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRhcmdldFtwcm9wXSA9IHZhbHVlOworICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICAgIH0K
KyAgICB9KTsKKyAgICAvKmVzbGludC1lbmFibGUgbm8tZnVuYy1hc3NpZ24gKi8KKyAgfQorfQor
LyoqCisgKiBIZWxwZXIgdG8gcmVkdWNlIGJvaWxlcnBsYXRlIHdoZW4gY3JlYXRpbmcgc3ViY2xh
c3Nlcy4KKyAqCisgKiBAcGFyYW0ge2Z1bmN0aW9ufSBDbGFzcworICogQHBhcmFtIHs/b2JqZWN0
fSBJbnRlcmZhY2UKKyAqLworU3ludGhldGljRXZlbnQuYXVnbWVudENsYXNzID0gZnVuY3Rpb24g
KENsYXNzLCBJbnRlcmZhY2UpIHsKKyAgdmFyIFN1cGVyID0gdGhpczsKKworICB2YXIgRSA9IGZ1
bmN0aW9uICgpIHt9OworICBFLnByb3RvdHlwZSA9IFN1cGVyLnByb3RvdHlwZTsKKyAgdmFyIHBy
b3RvdHlwZSA9IG5ldyBFKCk7CisKKyAgX2Fzc2lnbihwcm90b3R5cGUsIENsYXNzLnByb3RvdHlw
ZSk7CisgIENsYXNzLnByb3RvdHlwZSA9IHByb3RvdHlwZTsKKyAgQ2xhc3MucHJvdG90eXBlLmNv
bnN0cnVjdG9yID0gQ2xhc3M7CisKKyAgQ2xhc3MuSW50ZXJmYWNlID0gX2Fzc2lnbih7fSwgU3Vw
ZXIuSW50ZXJmYWNlLCBJbnRlcmZhY2UpOworICBDbGFzcy5hdWdtZW50Q2xhc3MgPSBTdXBlci5h
dWdtZW50Q2xhc3M7CisKKyAgUG9vbGVkQ2xhc3MuYWRkUG9vbGluZ1RvKENsYXNzLCBQb29sZWRD
bGFzcy5mb3VyQXJndW1lbnRQb29sZXIpOworfTsKKworUG9vbGVkQ2xhc3MuYWRkUG9vbGluZ1Rv
KFN5bnRoZXRpY0V2ZW50LCBQb29sZWRDbGFzcy5mb3VyQXJndW1lbnRQb29sZXIpOworCittb2R1
bGUuZXhwb3J0cyA9IFN5bnRoZXRpY0V2ZW50OworCisvKioKKyAgKiBIZWxwZXIgdG8gbnVsbGlm
eSBzeW50aGV0aWNFdmVudCBpbnN0YW5jZSBwcm9wZXJ0aWVzIHdoZW4gZGVzdHJ1Y3RpbmcKKyAg
KgorICAqIEBwYXJhbSB7b2JqZWN0fSBTeW50aGV0aWNFdmVudAorICAqIEBwYXJhbSB7U3RyaW5n
fSBwcm9wTmFtZQorICAqIEByZXR1cm4ge29iamVjdH0gZGVmaW5lUHJvcGVydHkgb2JqZWN0Cisg
ICovCitmdW5jdGlvbiBnZXRQb29sZWRXYXJuaW5nUHJvcGVydHlEZWZpbml0aW9uKHByb3BOYW1l
LCBnZXRWYWwpIHsKKyAgdmFyIGlzRnVuY3Rpb24gPSB0eXBlb2YgZ2V0VmFsID09PSAnZnVuY3Rp
b24nOworICByZXR1cm4geworICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSwKKyAgICBzZXQ6IHNldCwK
KyAgICBnZXQ6IGdldAorICB9OworCisgIGZ1bmN0aW9uIHNldCh2YWwpIHsKKyAgICB2YXIgYWN0
aW9uID0gaXNGdW5jdGlvbiA/ICdzZXR0aW5nIHRoZSBtZXRob2QnIDogJ3NldHRpbmcgdGhlIHBy
b3BlcnR5JzsKKyAgICB3YXJuKGFjdGlvbiwgJ1RoaXMgaXMgZWZmZWN0aXZlbHkgYSBuby1vcCcp
OworICAgIHJldHVybiB2YWw7CisgIH0KKworICBmdW5jdGlvbiBnZXQoKSB7CisgICAgdmFyIGFj
dGlvbiA9IGlzRnVuY3Rpb24gPyAnYWNjZXNzaW5nIHRoZSBtZXRob2QnIDogJ2FjY2Vzc2luZyB0
aGUgcHJvcGVydHknOworICAgIHZhciByZXN1bHQgPSBpc0Z1bmN0aW9uID8gJ1RoaXMgaXMgYSBu
by1vcCBmdW5jdGlvbicgOiAnVGhpcyBpcyBzZXQgdG8gbnVsbCc7CisgICAgd2FybihhY3Rpb24s
IHJlc3VsdCk7CisgICAgcmV0dXJuIGdldFZhbDsKKyAgfQorCisgIGZ1bmN0aW9uIHdhcm4oYWN0
aW9uLCByZXN1bHQpIHsKKyAgICB2YXIgd2FybmluZ0NvbmRpdGlvbiA9IGZhbHNlOworICAgICJk
ZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcod2FybmluZ0NvbmRpdGlvbiwg
J1RoaXMgc3ludGhldGljIGV2ZW50IGlzIHJldXNlZCBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucy4g
SWYgeW91XCdyZSBzZWVpbmcgdGhpcywgJyArICd5b3VcJ3JlICVzIGAlc2Agb24gYSByZWxlYXNl
ZC9udWxsaWZpZWQgc3ludGhldGljIGV2ZW50LiAlcy4gJyArICdJZiB5b3UgbXVzdCBrZWVwIHRo
ZSBvcmlnaW5hbCBzeW50aGV0aWMgZXZlbnQgYXJvdW5kLCB1c2UgZXZlbnQucGVyc2lzdCgpLiAn
ICsgJ1NlZSBodHRwczovL2ZiLm1lL3JlYWN0LWV2ZW50LXBvb2xpbmcgZm9yIG1vcmUgaW5mb3Jt
YXRpb24uJywgYWN0aW9uLCBwcm9wTmFtZSwgcmVzdWx0KSA6IHZvaWQgMDsKKyAgfQorfQorfSx7
IjE0MiI6MTQyLCIxNTciOjE1NywiMTU4IjoxNTgsIjI1IjoyNX1dLDkyOltmdW5jdGlvbihfZGVy
ZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFj
ZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2Ug
Y29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhl
CisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisn
dXNlIHN0cmljdCc7CisKK3ZhciBTeW50aGV0aWNVSUV2ZW50ID0gX2RlcmVxXyg5OCk7CisKKy8q
KgorICogQGludGVyZmFjZSBGb2N1c0V2ZW50CisgKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RS
L0RPTS1MZXZlbC0zLUV2ZW50cy8KKyAqLwordmFyIEZvY3VzRXZlbnRJbnRlcmZhY2UgPSB7Cisg
IHJlbGF0ZWRUYXJnZXQ6IG51bGwKK307CisKKy8qKgorICogQHBhcmFtIHtvYmplY3R9IGRpc3Bh
dGNoQ29uZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRjaCB0aGlzIGV2ZW50LgorICog
QHBhcmFtIHtzdHJpbmd9IGRpc3BhdGNoTWFya2VyIE1hcmtlciBpZGVudGlmeWluZyB0aGUgZXZl
bnQgdGFyZ2V0LgorICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2Vy
IGV2ZW50LgorICogQGV4dGVuZHMge1N5bnRoZXRpY1VJRXZlbnR9CisgKi8KK2Z1bmN0aW9uIFN5
bnRoZXRpY0ZvY3VzRXZlbnQoZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVF
dmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHsKKyAgcmV0dXJuIFN5bnRoZXRpY1VJRXZlbnQuY2Fs
bCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRp
dmVFdmVudFRhcmdldCk7Cit9CisKK1N5bnRoZXRpY1VJRXZlbnQuYXVnbWVudENsYXNzKFN5bnRo
ZXRpY0ZvY3VzRXZlbnQsIEZvY3VzRXZlbnRJbnRlcmZhY2UpOworCittb2R1bGUuZXhwb3J0cyA9
IFN5bnRoZXRpY0ZvY3VzRXZlbnQ7Cit9LHsiOTgiOjk4fV0sOTM6W2Z1bmN0aW9uKF9kZXJlcV8s
bW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9v
aywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAq
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4g
QW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ug
c3RyaWN0JzsKKwordmFyIFN5bnRoZXRpY0V2ZW50ID0gX2RlcmVxXyg5MSk7CisKKy8qKgorICog
QGludGVyZmFjZSBFdmVudAorICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDEzL1dELURP
TS1MZXZlbC0zLUV2ZW50cy0yMDEzMTEwNQorICogICAgICAvI2V2ZW50cy1pbnB1dGV2ZW50cwor
ICovCit2YXIgSW5wdXRFdmVudEludGVyZmFjZSA9IHsKKyAgZGF0YTogbnVsbAorfTsKKworLyoq
CisgKiBAcGFyYW0ge29iamVjdH0gZGlzcGF0Y2hDb25maWcgQ29uZmlndXJhdGlvbiB1c2VkIHRv
IGRpc3BhdGNoIHRoaXMgZXZlbnQuCisgKiBAcGFyYW0ge3N0cmluZ30gZGlzcGF0Y2hNYXJrZXIg
TWFya2VyIGlkZW50aWZ5aW5nIHRoZSBldmVudCB0YXJnZXQuCisgKiBAcGFyYW0ge29iamVjdH0g
bmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuCisgKiBAZXh0ZW5kcyB7U3ludGhldGlj
VUlFdmVudH0KKyAqLworZnVuY3Rpb24gU3ludGhldGljSW5wdXRFdmVudChkaXNwYXRjaENvbmZp
ZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkgeworICBy
ZXR1cm4gU3ludGhldGljRXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hN
YXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7Cit9CisKK1N5bnRoZXRpY0V2
ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNJbnB1dEV2ZW50LCBJbnB1dEV2ZW50SW50ZXJmYWNl
KTsKKworbW9kdWxlLmV4cG9ydHMgPSBTeW50aGV0aWNJbnB1dEV2ZW50OworfSx7IjkxIjo5MX1d
LDk0OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0
IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxp
Y2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5
IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCBy
aWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0
b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBTeW50aGV0aWNVSUV2ZW50ID0g
X2RlcmVxXyg5OCk7CisKK3ZhciBnZXRFdmVudENoYXJDb2RlID0gX2RlcmVxXygxMTEpOwordmFy
IGdldEV2ZW50S2V5ID0gX2RlcmVxXygxMTIpOwordmFyIGdldEV2ZW50TW9kaWZpZXJTdGF0ZSA9
IF9kZXJlcV8oMTEzKTsKKworLyoqCisgKiBAaW50ZXJmYWNlIEtleWJvYXJkRXZlbnQKKyAqIEBz
ZWUgaHR0cDovL3d3dy53My5vcmcvVFIvRE9NLUxldmVsLTMtRXZlbnRzLworICovCit2YXIgS2V5
Ym9hcmRFdmVudEludGVyZmFjZSA9IHsKKyAga2V5OiBnZXRFdmVudEtleSwKKyAgbG9jYXRpb246
IG51bGwsCisgIGN0cmxLZXk6IG51bGwsCisgIHNoaWZ0S2V5OiBudWxsLAorICBhbHRLZXk6IG51
bGwsCisgIG1ldGFLZXk6IG51bGwsCisgIHJlcGVhdDogbnVsbCwKKyAgbG9jYWxlOiBudWxsLAor
ICBnZXRNb2RpZmllclN0YXRlOiBnZXRFdmVudE1vZGlmaWVyU3RhdGUsCisgIC8vIExlZ2FjeSBJ
bnRlcmZhY2UKKyAgY2hhckNvZGU6IGZ1bmN0aW9uIChldmVudCkgeworICAgIC8vIGBjaGFyQ29k
ZWAgaXMgdGhlIHJlc3VsdCBvZiBhIEtleVByZXNzIGV2ZW50IGFuZCByZXByZXNlbnRzIHRoZSB2
YWx1ZSBvZgorICAgIC8vIHRoZSBhY3R1YWwgcHJpbnRhYmxlIGNoYXJhY3Rlci4KKworICAgIC8v
IEtleVByZXNzIGlzIGRlcHJlY2F0ZWQsIGJ1dCBpdHMgcmVwbGFjZW1lbnQgaXMgbm90IHlldCBm
aW5hbCBhbmQgbm90CisgICAgLy8gaW1wbGVtZW50ZWQgaW4gYW55IG1ham9yIGJyb3dzZXIuIE9u
bHkgS2V5UHJlc3MgaGFzIGNoYXJDb2RlLgorICAgIGlmIChldmVudC50eXBlID09PSAna2V5cHJl
c3MnKSB7CisgICAgICByZXR1cm4gZ2V0RXZlbnRDaGFyQ29kZShldmVudCk7CisgICAgfQorICAg
IHJldHVybiAwOworICB9LAorICBrZXlDb2RlOiBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAvLyBg
a2V5Q29kZWAgaXMgdGhlIHJlc3VsdCBvZiBhIEtleURvd24vVXAgZXZlbnQgYW5kIHJlcHJlc2Vu
dHMgdGhlIHZhbHVlIG9mCisgICAgLy8gcGh5c2ljYWwga2V5Ym9hcmQga2V5LgorCisgICAgLy8g
VGhlIGFjdHVhbCBtZWFuaW5nIG9mIHRoZSB2YWx1ZSBkZXBlbmRzIG9uIHRoZSB1c2Vycycga2V5
Ym9hcmQgbGF5b3V0CisgICAgLy8gd2hpY2ggY2Fubm90IGJlIGRldGVjdGVkLiBBc3N1bWluZyB0
aGF0IGl0IGlzIGEgVVMga2V5Ym9hcmQgbGF5b3V0CisgICAgLy8gcHJvdmlkZXMgYSBzdXJwcmlz
aW5nbHkgYWNjdXJhdGUgbWFwcGluZyBmb3IgVVMgYW5kIEV1cm9wZWFuIHVzZXJzLgorICAgIC8v
IER1ZSB0byB0aGlzLCBpdCBpcyBsZWZ0IHRvIHRoZSB1c2VyIHRvIGltcGxlbWVudCBhdCB0aGlz
IHRpbWUuCisgICAgaWYgKGV2ZW50LnR5cGUgPT09ICdrZXlkb3duJyB8fCBldmVudC50eXBlID09
PSAna2V5dXAnKSB7CisgICAgICByZXR1cm4gZXZlbnQua2V5Q29kZTsKKyAgICB9CisgICAgcmV0
dXJuIDA7CisgIH0sCisgIHdoaWNoOiBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAvLyBgd2hpY2hg
IGlzIGFuIGFsaWFzIGZvciBlaXRoZXIgYGtleUNvZGVgIG9yIGBjaGFyQ29kZWAgZGVwZW5kaW5n
IG9uIHRoZQorICAgIC8vIHR5cGUgb2YgdGhlIGV2ZW50LgorICAgIGlmIChldmVudC50eXBlID09
PSAna2V5cHJlc3MnKSB7CisgICAgICByZXR1cm4gZ2V0RXZlbnRDaGFyQ29kZShldmVudCk7Cisg
ICAgfQorICAgIGlmIChldmVudC50eXBlID09PSAna2V5ZG93bicgfHwgZXZlbnQudHlwZSA9PT0g
J2tleXVwJykgeworICAgICAgcmV0dXJuIGV2ZW50LmtleUNvZGU7CisgICAgfQorICAgIHJldHVy
biAwOworICB9Cit9OworCisvKioKKyAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBD
b25maWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVudC4KKyAqIEBwYXJhbSB7c3Ry
aW5nfSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC4K
KyAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC4KKyAq
IEBleHRlbmRzIHtTeW50aGV0aWNVSUV2ZW50fQorICovCitmdW5jdGlvbiBTeW50aGV0aWNLZXli
b2FyZEV2ZW50KGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5h
dGl2ZUV2ZW50VGFyZ2V0KSB7CisgIHJldHVybiBTeW50aGV0aWNVSUV2ZW50LmNhbGwodGhpcywg
ZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRU
YXJnZXQpOworfQorCitTeW50aGV0aWNVSUV2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNLZXli
b2FyZEV2ZW50LCBLZXlib2FyZEV2ZW50SW50ZXJmYWNlKTsKKworbW9kdWxlLmV4cG9ydHMgPSBT
eW50aGV0aWNLZXlib2FyZEV2ZW50OworfSx7IjExMSI6MTExLCIxMTIiOjExMiwiMTEzIjoxMTMs
Ijk4Ijo5OH1dLDk1OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICog
Q29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
ZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9m
IHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNh
bWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBTeW50aGV0aWNV
SUV2ZW50ID0gX2RlcmVxXyg5OCk7Cit2YXIgVmlld3BvcnRNZXRyaWNzID0gX2RlcmVxXygxMDEp
OworCit2YXIgZ2V0RXZlbnRNb2RpZmllclN0YXRlID0gX2RlcmVxXygxMTMpOworCisvKioKKyAq
IEBpbnRlcmZhY2UgTW91c2VFdmVudAorICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9ET00t
TGV2ZWwtMy1FdmVudHMvCisgKi8KK3ZhciBNb3VzZUV2ZW50SW50ZXJmYWNlID0geworICBzY3Jl
ZW5YOiBudWxsLAorICBzY3JlZW5ZOiBudWxsLAorICBjbGllbnRYOiBudWxsLAorICBjbGllbnRZ
OiBudWxsLAorICBjdHJsS2V5OiBudWxsLAorICBzaGlmdEtleTogbnVsbCwKKyAgYWx0S2V5OiBu
dWxsLAorICBtZXRhS2V5OiBudWxsLAorICBnZXRNb2RpZmllclN0YXRlOiBnZXRFdmVudE1vZGlm
aWVyU3RhdGUsCisgIGJ1dHRvbjogZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgLy8gV2Via2l0LCBG
aXJlZm94LCBJRTkrCisgICAgLy8gd2hpY2g6ICAxIDIgMworICAgIC8vIGJ1dHRvbjogMCAxIDIg
KHN0YW5kYXJkKQorICAgIHZhciBidXR0b24gPSBldmVudC5idXR0b247CisgICAgaWYgKCd3aGlj
aCcgaW4gZXZlbnQpIHsKKyAgICAgIHJldHVybiBidXR0b247CisgICAgfQorICAgIC8vIElFPDkK
KyAgICAvLyB3aGljaDogIHVuZGVmaW5lZAorICAgIC8vIGJ1dHRvbjogMCAwIDAKKyAgICAvLyBi
dXR0b246IDEgNCAyIChvbm1vdXNldXApCisgICAgcmV0dXJuIGJ1dHRvbiA9PT0gMiA/IDIgOiBi
dXR0b24gPT09IDQgPyAxIDogMDsKKyAgfSwKKyAgYnV0dG9uczogbnVsbCwKKyAgcmVsYXRlZFRh
cmdldDogZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgcmV0dXJuIGV2ZW50LnJlbGF0ZWRUYXJnZXQg
fHwgKGV2ZW50LmZyb21FbGVtZW50ID09PSBldmVudC5zcmNFbGVtZW50ID8gZXZlbnQudG9FbGVt
ZW50IDogZXZlbnQuZnJvbUVsZW1lbnQpOworICB9LAorICAvLyAiUHJvcHJpZXRhcnkiIEludGVy
ZmFjZS4KKyAgcGFnZVg6IGZ1bmN0aW9uIChldmVudCkgeworICAgIHJldHVybiAncGFnZVgnIGlu
IGV2ZW50ID8gZXZlbnQucGFnZVggOiBldmVudC5jbGllbnRYICsgVmlld3BvcnRNZXRyaWNzLmN1
cnJlbnRTY3JvbGxMZWZ0OworICB9LAorICBwYWdlWTogZnVuY3Rpb24gKGV2ZW50KSB7CisgICAg
cmV0dXJuICdwYWdlWScgaW4gZXZlbnQgPyBldmVudC5wYWdlWSA6IGV2ZW50LmNsaWVudFkgKyBW
aWV3cG9ydE1ldHJpY3MuY3VycmVudFNjcm9sbFRvcDsKKyAgfQorfTsKKworLyoqCisgKiBAcGFy
YW0ge29iamVjdH0gZGlzcGF0Y2hDb25maWcgQ29uZmlndXJhdGlvbiB1c2VkIHRvIGRpc3BhdGNo
IHRoaXMgZXZlbnQuCisgKiBAcGFyYW0ge3N0cmluZ30gZGlzcGF0Y2hNYXJrZXIgTWFya2VyIGlk
ZW50aWZ5aW5nIHRoZSBldmVudCB0YXJnZXQuCisgKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZl
bnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuCisgKiBAZXh0ZW5kcyB7U3ludGhldGljVUlFdmVudH0K
KyAqLworZnVuY3Rpb24gU3ludGhldGljTW91c2VFdmVudChkaXNwYXRjaENvbmZpZywgZGlzcGF0
Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkgeworICByZXR1cm4gU3lu
dGhldGljVUlFdmVudC5jYWxsKHRoaXMsIGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwg
bmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTsKK30KKworU3ludGhldGljVUlFdmVudC5h
dWdtZW50Q2xhc3MoU3ludGhldGljTW91c2VFdmVudCwgTW91c2VFdmVudEludGVyZmFjZSk7CisK
K21vZHVsZS5leHBvcnRzID0gU3ludGhldGljTW91c2VFdmVudDsKK30seyIxMDEiOjEwMSwiMTEz
IjoxMTMsIjk4Ijo5OH1dLDk2OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8q
KgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQK
KyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBTeW50
aGV0aWNVSUV2ZW50ID0gX2RlcmVxXyg5OCk7CisKK3ZhciBnZXRFdmVudE1vZGlmaWVyU3RhdGUg
PSBfZGVyZXFfKDExMyk7CisKKy8qKgorICogQGludGVyZmFjZSBUb3VjaEV2ZW50CisgKiBAc2Vl
IGh0dHA6Ly93d3cudzMub3JnL1RSL3RvdWNoLWV2ZW50cy8KKyAqLwordmFyIFRvdWNoRXZlbnRJ
bnRlcmZhY2UgPSB7CisgIHRvdWNoZXM6IG51bGwsCisgIHRhcmdldFRvdWNoZXM6IG51bGwsCisg
IGNoYW5nZWRUb3VjaGVzOiBudWxsLAorICBhbHRLZXk6IG51bGwsCisgIG1ldGFLZXk6IG51bGws
CisgIGN0cmxLZXk6IG51bGwsCisgIHNoaWZ0S2V5OiBudWxsLAorICBnZXRNb2RpZmllclN0YXRl
OiBnZXRFdmVudE1vZGlmaWVyU3RhdGUKK307CisKKy8qKgorICogQHBhcmFtIHtvYmplY3R9IGRp
c3BhdGNoQ29uZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRjaCB0aGlzIGV2ZW50Lgor
ICogQHBhcmFtIHtzdHJpbmd9IGRpc3BhdGNoTWFya2VyIE1hcmtlciBpZGVudGlmeWluZyB0aGUg
ZXZlbnQgdGFyZ2V0LgorICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93
c2VyIGV2ZW50LgorICogQGV4dGVuZHMge1N5bnRoZXRpY1VJRXZlbnR9CisgKi8KK2Z1bmN0aW9u
IFN5bnRoZXRpY1RvdWNoRXZlbnQoZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRp
dmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHsKKyAgcmV0dXJuIFN5bnRoZXRpY1VJRXZlbnQu
Y2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBu
YXRpdmVFdmVudFRhcmdldCk7Cit9CisKK1N5bnRoZXRpY1VJRXZlbnQuYXVnbWVudENsYXNzKFN5
bnRoZXRpY1RvdWNoRXZlbnQsIFRvdWNoRXZlbnRJbnRlcmZhY2UpOworCittb2R1bGUuZXhwb3J0
cyA9IFN5bnRoZXRpY1RvdWNoRXZlbnQ7Cit9LHsiMTEzIjoxMTMsIjk4Ijo5OH1dLDk3OltmdW5j
dGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJl
c2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhp
cyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91
bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMg
c291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2Fu
IGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoK
KyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBTeW50aGV0aWNFdmVudCA9IF9kZXJlcV8oOTEp
OworCisvKioKKyAqIEBpbnRlcmZhY2UgRXZlbnQKKyAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcv
VFIvMjAwOS9XRC1jc3MzLXRyYW5zaXRpb25zLTIwMDkwMzIwLyN0cmFuc2l0aW9uLWV2ZW50cy0K
KyAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJ
L1RyYW5zaXRpb25FdmVudAorICovCit2YXIgVHJhbnNpdGlvbkV2ZW50SW50ZXJmYWNlID0gewor
ICBwcm9wZXJ0eU5hbWU6IG51bGwsCisgIGVsYXBzZWRUaW1lOiBudWxsLAorICBwc2V1ZG9FbGVt
ZW50OiBudWxsCit9OworCisvKioKKyAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBD
b25maWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVudC4KKyAqIEBwYXJhbSB7c3Ry
aW5nfSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC4K
KyAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC4KKyAq
IEBleHRlbmRzIHtTeW50aGV0aWNFdmVudH0KKyAqLworZnVuY3Rpb24gU3ludGhldGljVHJhbnNp
dGlvbkV2ZW50KGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5h
dGl2ZUV2ZW50VGFyZ2V0KSB7CisgIHJldHVybiBTeW50aGV0aWNFdmVudC5jYWxsKHRoaXMsIGRp
c3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFy
Z2V0KTsKK30KKworU3ludGhldGljRXZlbnQuYXVnbWVudENsYXNzKFN5bnRoZXRpY1RyYW5zaXRp
b25FdmVudCwgVHJhbnNpdGlvbkV2ZW50SW50ZXJmYWNlKTsKKworbW9kdWxlLmV4cG9ydHMgPSBT
eW50aGV0aWNUcmFuc2l0aW9uRXZlbnQ7Cit9LHsiOTEiOjkxfV0sOTg6W2Z1bmN0aW9uKF9kZXJl
cV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNl
Ym9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBj
b2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUK
KyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJl
ZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQg
aW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1
c2Ugc3RyaWN0JzsKKwordmFyIFN5bnRoZXRpY0V2ZW50ID0gX2RlcmVxXyg5MSk7CisKK3ZhciBn
ZXRFdmVudFRhcmdldCA9IF9kZXJlcV8oMTE0KTsKKworLyoqCisgKiBAaW50ZXJmYWNlIFVJRXZl
bnQKKyAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvRE9NLUxldmVsLTMtRXZlbnRzLworICov
Cit2YXIgVUlFdmVudEludGVyZmFjZSA9IHsKKyAgdmlldzogZnVuY3Rpb24gKGV2ZW50KSB7Cisg
ICAgaWYgKGV2ZW50LnZpZXcpIHsKKyAgICAgIHJldHVybiBldmVudC52aWV3OworICAgIH0KKwor
ICAgIHZhciB0YXJnZXQgPSBnZXRFdmVudFRhcmdldChldmVudCk7CisgICAgaWYgKHRhcmdldC53
aW5kb3cgPT09IHRhcmdldCkgeworICAgICAgLy8gdGFyZ2V0IGlzIGEgd2luZG93IG9iamVjdAor
ICAgICAgcmV0dXJuIHRhcmdldDsKKyAgICB9CisKKyAgICB2YXIgZG9jID0gdGFyZ2V0Lm93bmVy
RG9jdW1lbnQ7CisgICAgLy8gVE9ETzogRmlndXJlIG91dCB3aHkgYG93bmVyRG9jdW1lbnRgIGlz
IHNvbWV0aW1lcyB1bmRlZmluZWQgaW4gSUU4LgorICAgIGlmIChkb2MpIHsKKyAgICAgIHJldHVy
biBkb2MuZGVmYXVsdFZpZXcgfHwgZG9jLnBhcmVudFdpbmRvdzsKKyAgICB9IGVsc2UgeworICAg
ICAgcmV0dXJuIHdpbmRvdzsKKyAgICB9CisgIH0sCisgIGRldGFpbDogZnVuY3Rpb24gKGV2ZW50
KSB7CisgICAgcmV0dXJuIGV2ZW50LmRldGFpbCB8fCAwOworICB9Cit9OworCisvKioKKyAqIEBw
YXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBDb25maWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0
Y2ggdGhpcyBldmVudC4KKyAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwYXRjaE1hcmtlciBNYXJrZXIg
aWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC4KKyAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVF
dmVudCBOYXRpdmUgYnJvd3NlciBldmVudC4KKyAqIEBleHRlbmRzIHtTeW50aGV0aWNFdmVudH0K
KyAqLworZnVuY3Rpb24gU3ludGhldGljVUlFdmVudChkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hN
YXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkgeworICByZXR1cm4gU3ludGhl
dGljRXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2
ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7Cit9CisKK1N5bnRoZXRpY0V2ZW50LmF1Z21lbnRD
bGFzcyhTeW50aGV0aWNVSUV2ZW50LCBVSUV2ZW50SW50ZXJmYWNlKTsKKworbW9kdWxlLmV4cG9y
dHMgPSBTeW50aGV0aWNVSUV2ZW50OworfSx7IjExNCI6MTE0LCI5MSI6OTF9XSw5OTpbZnVuY3Rp
b24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNl
bnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMg
c291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5k
IGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNv
dXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBi
ZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisg
Ki8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgU3ludGhldGljTW91c2VFdmVudCA9IF9kZXJlcV8o
OTUpOworCisvKioKKyAqIEBpbnRlcmZhY2UgV2hlZWxFdmVudAorICogQHNlZSBodHRwOi8vd3d3
LnczLm9yZy9UUi9ET00tTGV2ZWwtMy1FdmVudHMvCisgKi8KK3ZhciBXaGVlbEV2ZW50SW50ZXJm
YWNlID0geworICBkZWx0YVg6IGZ1bmN0aW9uIChldmVudCkgeworICAgIHJldHVybiAnZGVsdGFY
JyBpbiBldmVudCA/IGV2ZW50LmRlbHRhWCA6CisgICAgLy8gRmFsbGJhY2sgdG8gYHdoZWVsRGVs
dGFYYCBmb3IgV2Via2l0IGFuZCBub3JtYWxpemUgKHJpZ2h0IGlzIHBvc2l0aXZlKS4KKyAgICAn
d2hlZWxEZWx0YVgnIGluIGV2ZW50ID8gLWV2ZW50LndoZWVsRGVsdGFYIDogMDsKKyAgfSwKKyAg
ZGVsdGFZOiBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICByZXR1cm4gJ2RlbHRhWScgaW4gZXZlbnQg
PyBldmVudC5kZWx0YVkgOgorICAgIC8vIEZhbGxiYWNrIHRvIGB3aGVlbERlbHRhWWAgZm9yIFdl
YmtpdCBhbmQgbm9ybWFsaXplIChkb3duIGlzIHBvc2l0aXZlKS4KKyAgICAnd2hlZWxEZWx0YVkn
IGluIGV2ZW50ID8gLWV2ZW50LndoZWVsRGVsdGFZIDoKKyAgICAvLyBGYWxsYmFjayB0byBgd2hl
ZWxEZWx0YWAgZm9yIElFPDkgYW5kIG5vcm1hbGl6ZSAoZG93biBpcyBwb3NpdGl2ZSkuCisgICAg
J3doZWVsRGVsdGEnIGluIGV2ZW50ID8gLWV2ZW50LndoZWVsRGVsdGEgOiAwOworICB9LAorICBk
ZWx0YVo6IG51bGwsCisKKyAgLy8gQnJvd3NlcnMgd2l0aG91dCAiZGVsdGFNb2RlIiBpcyByZXBv
cnRpbmcgaW4gcmF3IHdoZWVsIGRlbHRhIHdoZXJlIG9uZQorICAvLyBub3RjaCBvbiB0aGUgc2Ny
b2xsIGlzIGFsd2F5cyArLy0gMTIwLCByb3VnaGx5IGVxdWl2YWxlbnQgdG8gcGl4ZWxzLgorICAv
LyBBIGdvb2QgYXBwcm94aW1hdGlvbiBvZiBET01fREVMVEFfTElORSAoMSkgaXMgNSUgb2Ygdmll
d3BvcnQgc2l6ZSBvcgorICAvLyB+NDAgcGl4ZWxzLCBmb3IgRE9NX0RFTFRBX1NDUkVFTiAoMikg
aXQgaXMgODcuNSUgb2Ygdmlld3BvcnQgc2l6ZS4KKyAgZGVsdGFNb2RlOiBudWxsCit9OworCisv
KioKKyAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBDb25maWd1cmF0aW9uIHVzZWQg
dG8gZGlzcGF0Y2ggdGhpcyBldmVudC4KKyAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwYXRjaE1hcmtl
ciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC4KKyAqIEBwYXJhbSB7b2JqZWN0
fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC4KKyAqIEBleHRlbmRzIHtTeW50aGV0
aWNNb3VzZUV2ZW50fQorICovCitmdW5jdGlvbiBTeW50aGV0aWNXaGVlbEV2ZW50KGRpc3BhdGNo
Q29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7
CisgIHJldHVybiBTeW50aGV0aWNNb3VzZUV2ZW50LmNhbGwodGhpcywgZGlzcGF0Y2hDb25maWcs
IGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpOworfQorCitT
eW50aGV0aWNNb3VzZUV2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNXaGVlbEV2ZW50LCBXaGVl
bEV2ZW50SW50ZXJmYWNlKTsKKworbW9kdWxlLmV4cG9ydHMgPSBTeW50aGV0aWNXaGVlbEV2ZW50
OworfSx7Ijk1Ijo5NX1dLDEwMDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7Cisv
KioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiAKKyAqLworCisndXNlIHN0cmljdCc7CisKK3Zh
ciBfcHJvZEludmFyaWFudCA9IF9kZXJlcV8oMTI1KTsKKwordmFyIGludmFyaWFudCA9IF9kZXJl
cV8oMTUwKTsKKwordmFyIE9CU0VSVkVEX0VSUk9SID0ge307CisKKy8qKgorICogYFRyYW5zYWN0
aW9uYCBjcmVhdGVzIGEgYmxhY2sgYm94IHRoYXQgaXMgYWJsZSB0byB3cmFwIGFueSBtZXRob2Qg
c3VjaCB0aGF0CisgKiBjZXJ0YWluIGludmFyaWFudHMgYXJlIG1haW50YWluZWQgYmVmb3JlIGFu
ZCBhZnRlciB0aGUgbWV0aG9kIGlzIGludm9rZWQKKyAqIChFdmVuIGlmIGFuIGV4Y2VwdGlvbiBp
cyB0aHJvd24gd2hpbGUgaW52b2tpbmcgdGhlIHdyYXBwZWQgbWV0aG9kKS4gV2hvZXZlcgorICog
aW5zdGFudGlhdGVzIGEgdHJhbnNhY3Rpb24gY2FuIHByb3ZpZGUgZW5mb3JjZXJzIG9mIHRoZSBp
bnZhcmlhbnRzIGF0CisgKiBjcmVhdGlvbiB0aW1lLiBUaGUgYFRyYW5zYWN0aW9uYCBjbGFzcyBp
dHNlbGYgd2lsbCBzdXBwbHkgb25lIGFkZGl0aW9uYWwKKyAqIGF1dG9tYXRpYyBpbnZhcmlhbnQg
Zm9yIHlvdSAtIHRoZSBpbnZhcmlhbnQgdGhhdCBhbnkgdHJhbnNhY3Rpb24gaW5zdGFuY2UKKyAq
IHNob3VsZCBub3QgYmUgcnVuIHdoaWxlIGl0IGlzIGFscmVhZHkgYmVpbmcgcnVuLiBZb3Ugd291
bGQgdHlwaWNhbGx5IGNyZWF0ZSBhCisgKiBzaW5nbGUgaW5zdGFuY2Ugb2YgYSBgVHJhbnNhY3Rp
b25gIGZvciByZXVzZSBtdWx0aXBsZSB0aW1lcywgdGhhdCBwb3RlbnRpYWxseQorICogaXMgdXNl
ZCB0byB3cmFwIHNldmVyYWwgZGlmZmVyZW50IG1ldGhvZHMuIFdyYXBwZXJzIGFyZSBleHRyZW1l
bHkgc2ltcGxlIC0KKyAqIHRoZXkgb25seSByZXF1aXJlIGltcGxlbWVudGluZyB0d28gbWV0aG9k
cy4KKyAqCisgKiA8cHJlPgorICogICAgICAgICAgICAgICAgICAgICAgIHdyYXBwZXJzIChpbmpl
Y3RlZCBhdCBjcmVhdGlvbiB0aW1lKQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICsgICAgICAgICsKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgICAgICB8CisgKiAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tfC0t
LS0tLS0tfC0tLS0tLS0tLS0tLS0tKworICogICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAg
ICAgICAgIHYgICAgICAgIHwgICAgICAgICAgICAgIHwKKyAqICAgICAgICAgICAgICAgICAgICB8
ICAgICAgKy0tLS0tLS0tLS0tLS0tLSsgICB8ICAgICAgICAgICAgICB8CisgKiAgICAgICAgICAg
ICAgICAgICAgfCAgICstLXwgICAgd3JhcHBlcjEgICB8LS0tfC0tLS0rICAgICAgICAgfAorICog
ICAgICAgICAgICAgICAgICAgIHwgICB8ICArLS0tLS0tLS0tLS0tLS0tKyAgIHYgICAgfCAgICAg
ICAgIHwKKyAqICAgICAgICAgICAgICAgICAgICB8ICAgfCAgICAgICAgICArLS0tLS0tLS0tLS0t
LSsgIHwgICAgICAgICB8CisgKiAgICAgICAgICAgICAgICAgICAgfCAgIHwgICAgICstLS0tfCAg
IHdyYXBwZXIyICB8LS0tLS0tLS0rICAgfAorICogICAgICAgICAgICAgICAgICAgIHwgICB8ICAg
ICB8ICAgICstLS0tLS0tLS0tLS0tKyAgfCAgICAgfCAgIHwKKyAqICAgICAgICAgICAgICAgICAg
ICB8ICAgfCAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgICB8CisgKiAgICAgICAg
ICAgICAgICAgICAgfCAgIHYgICAgIHYgICAgICAgICAgICAgICAgICAgICB2ICAgICB2ICAgfCB3
cmFwcGVyCisgKiAgICAgICAgICAgICAgICAgICAgfCArLS0tKyArLS0tKyAgICstLS0tLS0tLS0r
ICAgKy0tLSsgKy0tLSsgfCBpbnZhcmlhbnRzCisgKiBwZXJmb3JtKGFueU1ldGhvZCkgfCB8ICAg
fCB8ICAgfCAgIHwgICAgICAgICB8ICAgfCAgIHwgfCAgIHwgfCBtYWludGFpbmVkCisgKiArLS0t
LS0tLS0tLS0tLS0tLS0+fC18LS0tfC18LS0tfC0tPnxhbnlNZXRob2R8LS0tfC0tLXwtfC0tLXwt
fC0tLS0tLS0tPgorICogICAgICAgICAgICAgICAgICAgIHwgfCAgIHwgfCAgIHwgICB8ICAgICAg
ICAgfCAgIHwgICB8IHwgICB8IHwKKyAqICAgICAgICAgICAgICAgICAgICB8IHwgICB8IHwgICB8
ICAgfCAgICAgICAgIHwgICB8ICAgfCB8ICAgfCB8CisgKiAgICAgICAgICAgICAgICAgICAgfCB8
ICAgfCB8ICAgfCAgIHwgICAgICAgICB8ICAgfCAgIHwgfCAgIHwgfAorICogICAgICAgICAgICAg
ICAgICAgIHwgKy0tLSsgKy0tLSsgICArLS0tLS0tLS0tKyAgICstLS0rICstLS0rIHwKKyAqICAg
ICAgICAgICAgICAgICAgICB8ICBpbml0aWFsaXplICAgICAgICAgICAgICAgICAgICBjbG9zZSAg
ICB8CisgKiAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tKworICogPC9wcmU+CisgKgorICogVXNlIGNhc2VzOgorICogLSBQcmVzZXJ2
aW5nIHRoZSBpbnB1dCBzZWxlY3Rpb24gcmFuZ2VzIGJlZm9yZS9hZnRlciByZWNvbmNpbGlhdGlv
bi4KKyAqICAgUmVzdG9yaW5nIHNlbGVjdGlvbiBldmVuIGluIHRoZSBldmVudCBvZiBhbiB1bmV4
cGVjdGVkIGVycm9yLgorICogLSBEZWFjdGl2YXRpbmcgZXZlbnRzIHdoaWxlIHJlYXJyYW5naW5n
IHRoZSBET00sIHByZXZlbnRpbmcgYmx1cnMvZm9jdXNlcywKKyAqICAgd2hpbGUgZ3VhcmFudGVl
aW5nIHRoYXQgYWZ0ZXJ3YXJkcywgdGhlIGV2ZW50IHN5c3RlbSBpcyByZWFjdGl2YXRlZC4KKyAq
IC0gRmx1c2hpbmcgYSBxdWV1ZSBvZiBjb2xsZWN0ZWQgRE9NIG11dGF0aW9ucyB0byB0aGUgbWFp
biBVSSB0aHJlYWQgYWZ0ZXIgYQorICogICByZWNvbmNpbGlhdGlvbiB0YWtlcyBwbGFjZSBpbiBh
IHdvcmtlciB0aHJlYWQuCisgKiAtIEludm9raW5nIGFueSBjb2xsZWN0ZWQgYGNvbXBvbmVudERp
ZFVwZGF0ZWAgY2FsbGJhY2tzIGFmdGVyIHJlbmRlcmluZyBuZXcKKyAqICAgY29udGVudC4KKyAq
IC0gKEZ1dHVyZSB1c2UgY2FzZSk6IFdyYXBwaW5nIHBhcnRpY3VsYXIgZmx1c2hlcyBvZiB0aGUg
YFJlYWN0V29ya2VyYCBxdWV1ZQorICogICB0byBwcmVzZXJ2ZSB0aGUgYHNjcm9sbFRvcGAgKGFu
IGF1dG9tYXRpYyBzY3JvbGwgYXdhcmUgRE9NKS4KKyAqIC0gKEZ1dHVyZSB1c2UgY2FzZSk6IExh
eW91dCBjYWxjdWxhdGlvbnMgYmVmb3JlIGFuZCBhZnRlciBET00gdXBkYXRlcy4KKyAqCisgKiBU
cmFuc2FjdGlvbmFsIHBsdWdpbiBBUEk6CisgKiAtIEEgbW9kdWxlIHRoYXQgaGFzIGFuIGBpbml0
aWFsaXplYCBtZXRob2QgdGhhdCByZXR1cm5zIGFueSBwcmVjb21wdXRhdGlvbi4KKyAqIC0gYW5k
IGEgYGNsb3NlYCBtZXRob2QgdGhhdCBhY2NlcHRzIHRoZSBwcmVjb21wdXRhdGlvbi4gYGNsb3Nl
YCBpcyBpbnZva2VkCisgKiAgIHdoZW4gdGhlIHdyYXBwZWQgcHJvY2VzcyBpcyBjb21wbGV0ZWQs
IG9yIGhhcyBmYWlsZWQuCisgKgorICogQHBhcmFtIHtBcnJheTxUcmFuc2FjdGlvbmFsV3JhcHBl
cj59IHRyYW5zYWN0aW9uV3JhcHBlciBXcmFwcGVyIG1vZHVsZXMKKyAqIHRoYXQgaW1wbGVtZW50
IGBpbml0aWFsaXplYCBhbmQgYGNsb3NlYC4KKyAqIEByZXR1cm4ge1RyYW5zYWN0aW9ufSBTaW5n
bGUgdHJhbnNhY3Rpb24gZm9yIHJldXNlIGluIHRocmVhZC4KKyAqCisgKiBAY2xhc3MgVHJhbnNh
Y3Rpb24KKyAqLwordmFyIFRyYW5zYWN0aW9uSW1wbCA9IHsKKyAgLyoqCisgICAqIFNldHMgdXAg
dGhpcyBpbnN0YW5jZSBzbyB0aGF0IGl0IGlzIHByZXBhcmVkIGZvciBjb2xsZWN0aW5nIG1ldHJp
Y3MuIERvZXMKKyAgICogc28gc3VjaCB0aGF0IHRoaXMgc2V0dXAgbWV0aG9kIG1heSBiZSB1c2Vk
IG9uIGFuIGluc3RhbmNlIHRoYXQgaXMgYWxyZWFkeQorICAgKiBpbml0aWFsaXplZCwgaW4gYSB3
YXkgdGhhdCBkb2VzIG5vdCBjb25zdW1lIGFkZGl0aW9uYWwgbWVtb3J5IHVwb24gcmV1c2UuCisg
ICAqIFRoYXQgY2FuIGJlIHVzZWZ1bCBpZiB5b3UgZGVjaWRlIHRvIG1ha2UgeW91ciBzdWJjbGFz
cyBvZiB0aGlzIG1peGluIGEKKyAgICogIlBvb2xlZENsYXNzIi4KKyAgICovCisgIHJlaW5pdGlh
bGl6ZVRyYW5zYWN0aW9uOiBmdW5jdGlvbiAoKSB7CisgICAgdGhpcy50cmFuc2FjdGlvbldyYXBw
ZXJzID0gdGhpcy5nZXRUcmFuc2FjdGlvbldyYXBwZXJzKCk7CisgICAgaWYgKHRoaXMud3JhcHBl
ckluaXREYXRhKSB7CisgICAgICB0aGlzLndyYXBwZXJJbml0RGF0YS5sZW5ndGggPSAwOworICAg
IH0gZWxzZSB7CisgICAgICB0aGlzLndyYXBwZXJJbml0RGF0YSA9IFtdOworICAgIH0KKyAgICB0
aGlzLl9pc0luVHJhbnNhY3Rpb24gPSBmYWxzZTsKKyAgfSwKKworICBfaXNJblRyYW5zYWN0aW9u
OiBmYWxzZSwKKworICAvKioKKyAgICogQGFic3RyYWN0CisgICAqIEByZXR1cm4ge0FycmF5PFRy
YW5zYWN0aW9uV3JhcHBlcj59IEFycmF5IG9mIHRyYW5zYWN0aW9uIHdyYXBwZXJzLgorICAgKi8K
KyAgZ2V0VHJhbnNhY3Rpb25XcmFwcGVyczogbnVsbCwKKworICBpc0luVHJhbnNhY3Rpb246IGZ1
bmN0aW9uICgpIHsKKyAgICByZXR1cm4gISF0aGlzLl9pc0luVHJhbnNhY3Rpb247CisgIH0sCisK
KyAgLyoqCisgICAqIEV4ZWN1dGVzIHRoZSBmdW5jdGlvbiB3aXRoaW4gYSBzYWZldHkgd2luZG93
LiBVc2UgdGhpcyBmb3IgdGhlIHRvcCBsZXZlbAorICAgKiBtZXRob2RzIHRoYXQgcmVzdWx0IGlu
IGxhcmdlIGFtb3VudHMgb2YgY29tcHV0YXRpb24vbXV0YXRpb25zIHRoYXQgd291bGQKKyAgICog
bmVlZCB0byBiZSBzYWZldHkgY2hlY2tlZC4gVGhlIG9wdGlvbmFsIGFyZ3VtZW50cyBoZWxwcyBw
cmV2ZW50IHRoZSBuZWVkCisgICAqIHRvIGJpbmQgaW4gbWFueSBjYXNlcy4KKyAgICoKKyAgICog
QHBhcmFtIHtmdW5jdGlvbn0gbWV0aG9kIE1lbWJlciBvZiBzY29wZSB0byBjYWxsLgorICAgKiBA
cGFyYW0ge09iamVjdH0gc2NvcGUgU2NvcGUgdG8gaW52b2tlIGZyb20uCisgICAqIEBwYXJhbSB7
T2JqZWN0Pz19IGEgQXJndW1lbnQgdG8gcGFzcyB0byB0aGUgbWV0aG9kLgorICAgKiBAcGFyYW0g
e09iamVjdD89fSBiIEFyZ3VtZW50IHRvIHBhc3MgdG8gdGhlIG1ldGhvZC4KKyAgICogQHBhcmFt
IHtPYmplY3Q/PX0gYyBBcmd1bWVudCB0byBwYXNzIHRvIHRoZSBtZXRob2QuCisgICAqIEBwYXJh
bSB7T2JqZWN0Pz19IGQgQXJndW1lbnQgdG8gcGFzcyB0byB0aGUgbWV0aG9kLgorICAgKiBAcGFy
YW0ge09iamVjdD89fSBlIEFyZ3VtZW50IHRvIHBhc3MgdG8gdGhlIG1ldGhvZC4KKyAgICogQHBh
cmFtIHtPYmplY3Q/PX0gZiBBcmd1bWVudCB0byBwYXNzIHRvIHRoZSBtZXRob2QuCisgICAqCisg
ICAqIEByZXR1cm4geyp9IFJldHVybiB2YWx1ZSBmcm9tIGBtZXRob2RgLgorICAgKi8KKyAgcGVy
Zm9ybTogZnVuY3Rpb24gKG1ldGhvZCwgc2NvcGUsIGEsIGIsIGMsIGQsIGUsIGYpIHsKKyAgICAh
IXRoaXMuaXNJblRyYW5zYWN0aW9uKCkgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicg
PyBpbnZhcmlhbnQoZmFsc2UsICdUcmFuc2FjdGlvbi5wZXJmb3JtKC4uLik6IENhbm5vdCBpbml0
aWFsaXplIGEgdHJhbnNhY3Rpb24gd2hlbiB0aGVyZSBpcyBhbHJlYWR5IGFuIG91dHN0YW5kaW5n
IHRyYW5zYWN0aW9uLicpIDogX3Byb2RJbnZhcmlhbnQoJzI3JykgOiB2b2lkIDA7CisgICAgdmFy
IGVycm9yVGhyb3duOworICAgIHZhciByZXQ7CisgICAgdHJ5IHsKKyAgICAgIHRoaXMuX2lzSW5U
cmFuc2FjdGlvbiA9IHRydWU7CisgICAgICAvLyBDYXRjaGluZyBlcnJvcnMgbWFrZXMgZGVidWdn
aW5nIG1vcmUgZGlmZmljdWx0LCBzbyB3ZSBzdGFydCB3aXRoCisgICAgICAvLyBlcnJvclRocm93
biBzZXQgdG8gdHJ1ZSBiZWZvcmUgc2V0dGluZyBpdCB0byBmYWxzZSBhZnRlciBjYWxsaW5nCisg
ICAgICAvLyBjbG9zZSAtLSBpZiBpdCdzIHN0aWxsIHNldCB0byB0cnVlIGluIHRoZSBmaW5hbGx5
IGJsb2NrLCBpdCBtZWFucworICAgICAgLy8gb25lIG9mIHRoZXNlIGNhbGxzIHRocmV3LgorICAg
ICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgdGhpcy5pbml0aWFsaXplQWxsKDApOworICAg
ICAgcmV0ID0gbWV0aG9kLmNhbGwoc2NvcGUsIGEsIGIsIGMsIGQsIGUsIGYpOworICAgICAgZXJy
b3JUaHJvd24gPSBmYWxzZTsKKyAgICB9IGZpbmFsbHkgeworICAgICAgdHJ5IHsKKyAgICAgICAg
aWYgKGVycm9yVGhyb3duKSB7CisgICAgICAgICAgLy8gSWYgYG1ldGhvZGAgdGhyb3dzLCBwcmVm
ZXIgdG8gc2hvdyB0aGF0IHN0YWNrIHRyYWNlIG92ZXIgYW55IHRocm93bgorICAgICAgICAgIC8v
IGJ5IGludm9raW5nIGBjbG9zZUFsbGAuCisgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHRo
aXMuY2xvc2VBbGwoMCk7CisgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7fQorICAgICAgICB9IGVs
c2UgeworICAgICAgICAgIC8vIFNpbmNlIGBtZXRob2RgIGRpZG4ndCB0aHJvdywgd2UgZG9uJ3Qg
d2FudCB0byBzaWxlbmNlIHRoZSBleGNlcHRpb24KKyAgICAgICAgICAvLyBoZXJlLgorICAgICAg
ICAgIHRoaXMuY2xvc2VBbGwoMCk7CisgICAgICAgIH0KKyAgICAgIH0gZmluYWxseSB7CisgICAg
ICAgIHRoaXMuX2lzSW5UcmFuc2FjdGlvbiA9IGZhbHNlOworICAgICAgfQorICAgIH0KKyAgICBy
ZXR1cm4gcmV0OworICB9LAorCisgIGluaXRpYWxpemVBbGw6IGZ1bmN0aW9uIChzdGFydEluZGV4
KSB7CisgICAgdmFyIHRyYW5zYWN0aW9uV3JhcHBlcnMgPSB0aGlzLnRyYW5zYWN0aW9uV3JhcHBl
cnM7CisgICAgZm9yICh2YXIgaSA9IHN0YXJ0SW5kZXg7IGkgPCB0cmFuc2FjdGlvbldyYXBwZXJz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgd3JhcHBlciA9IHRyYW5zYWN0aW9uV3JhcHBlcnNb
aV07CisgICAgICB0cnkgeworICAgICAgICAvLyBDYXRjaGluZyBlcnJvcnMgbWFrZXMgZGVidWdn
aW5nIG1vcmUgZGlmZmljdWx0LCBzbyB3ZSBzdGFydCB3aXRoIHRoZQorICAgICAgICAvLyBPQlNF
UlZFRF9FUlJPUiBzdGF0ZSBiZWZvcmUgb3ZlcndyaXRpbmcgaXQgd2l0aCB0aGUgcmVhbCByZXR1
cm4gdmFsdWUKKyAgICAgICAgLy8gb2YgaW5pdGlhbGl6ZSAtLSBpZiBpdCdzIHN0aWxsIHNldCB0
byBPQlNFUlZFRF9FUlJPUiBpbiB0aGUgZmluYWxseQorICAgICAgICAvLyBibG9jaywgaXQgbWVh
bnMgd3JhcHBlci5pbml0aWFsaXplIHRocmV3LgorICAgICAgICB0aGlzLndyYXBwZXJJbml0RGF0
YVtpXSA9IE9CU0VSVkVEX0VSUk9SOworICAgICAgICB0aGlzLndyYXBwZXJJbml0RGF0YVtpXSA9
IHdyYXBwZXIuaW5pdGlhbGl6ZSA/IHdyYXBwZXIuaW5pdGlhbGl6ZS5jYWxsKHRoaXMpIDogbnVs
bDsKKyAgICAgIH0gZmluYWxseSB7CisgICAgICAgIGlmICh0aGlzLndyYXBwZXJJbml0RGF0YVtp
XSA9PT0gT0JTRVJWRURfRVJST1IpIHsKKyAgICAgICAgICAvLyBUaGUgaW5pdGlhbGl6ZXIgZm9y
IHdyYXBwZXIgaSB0aHJldyBhbiBlcnJvcjsgaW5pdGlhbGl6ZSB0aGUKKyAgICAgICAgICAvLyBy
ZW1haW5pbmcgd3JhcHBlcnMgYnV0IHNpbGVuY2UgYW55IGV4Y2VwdGlvbnMgZnJvbSB0aGVtIHRv
IGVuc3VyZQorICAgICAgICAgIC8vIHRoYXQgdGhlIGZpcnN0IGVycm9yIGlzIHRoZSBvbmUgdG8g
YnViYmxlIHVwLgorICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICB0aGlzLmluaXRpYWxpemVB
bGwoaSArIDEpOworICAgICAgICAgIH0gY2F0Y2ggKGVycikge30KKyAgICAgICAgfQorICAgICAg
fQorICAgIH0KKyAgfSwKKworICAvKioKKyAgICogSW52b2tlcyBlYWNoIG9mIGB0aGlzLnRyYW5z
YWN0aW9uV3JhcHBlcnMuY2xvc2VbaV1gIGZ1bmN0aW9ucywgcGFzc2luZyBpbnRvCisgICAqIHRo
ZW0gdGhlIHJlc3BlY3RpdmUgcmV0dXJuIHZhbHVlcyBvZiBgdGhpcy50cmFuc2FjdGlvbldyYXBw
ZXJzLmluaXRbaV1gCisgICAqIChgY2xvc2VgcnMgdGhhdCBjb3JyZXNwb25kIHRvIGluaXRpYWxp
emVycyB0aGF0IGZhaWxlZCB3aWxsIG5vdCBiZQorICAgKiBpbnZva2VkKS4KKyAgICovCisgIGNs
b3NlQWxsOiBmdW5jdGlvbiAoc3RhcnRJbmRleCkgeworICAgICF0aGlzLmlzSW5UcmFuc2FjdGlv
bigpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAn
VHJhbnNhY3Rpb24uY2xvc2VBbGwoKTogQ2Fubm90IGNsb3NlIHRyYW5zYWN0aW9uIHdoZW4gbm9u
ZSBhcmUgb3Blbi4nKSA6IF9wcm9kSW52YXJpYW50KCcyOCcpIDogdm9pZCAwOworICAgIHZhciB0
cmFuc2FjdGlvbldyYXBwZXJzID0gdGhpcy50cmFuc2FjdGlvbldyYXBwZXJzOworICAgIGZvciAo
dmFyIGkgPSBzdGFydEluZGV4OyBpIDwgdHJhbnNhY3Rpb25XcmFwcGVycy5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIHdyYXBwZXIgPSB0cmFuc2FjdGlvbldyYXBwZXJzW2ldOworICAgICAgdmFy
IGluaXREYXRhID0gdGhpcy53cmFwcGVySW5pdERhdGFbaV07CisgICAgICB2YXIgZXJyb3JUaHJv
d247CisgICAgICB0cnkgeworICAgICAgICAvLyBDYXRjaGluZyBlcnJvcnMgbWFrZXMgZGVidWdn
aW5nIG1vcmUgZGlmZmljdWx0LCBzbyB3ZSBzdGFydCB3aXRoCisgICAgICAgIC8vIGVycm9yVGhy
b3duIHNldCB0byB0cnVlIGJlZm9yZSBzZXR0aW5nIGl0IHRvIGZhbHNlIGFmdGVyIGNhbGxpbmcK
KyAgICAgICAgLy8gY2xvc2UgLS0gaWYgaXQncyBzdGlsbCBzZXQgdG8gdHJ1ZSBpbiB0aGUgZmlu
YWxseSBibG9jaywgaXQgbWVhbnMKKyAgICAgICAgLy8gd3JhcHBlci5jbG9zZSB0aHJldy4KKyAg
ICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBpZiAoaW5pdERhdGEgIT09IE9CU0VS
VkVEX0VSUk9SICYmIHdyYXBwZXIuY2xvc2UpIHsKKyAgICAgICAgICB3cmFwcGVyLmNsb3NlLmNh
bGwodGhpcywgaW5pdERhdGEpOworICAgICAgICB9CisgICAgICAgIGVycm9yVGhyb3duID0gZmFs
c2U7CisgICAgICB9IGZpbmFsbHkgeworICAgICAgICBpZiAoZXJyb3JUaHJvd24pIHsKKyAgICAg
ICAgICAvLyBUaGUgY2xvc2VyIGZvciB3cmFwcGVyIGkgdGhyZXcgYW4gZXJyb3I7IGNsb3NlIHRo
ZSByZW1haW5pbmcKKyAgICAgICAgICAvLyB3cmFwcGVycyBidXQgc2lsZW5jZSBhbnkgZXhjZXB0
aW9ucyBmcm9tIHRoZW0gdG8gZW5zdXJlIHRoYXQgdGhlCisgICAgICAgICAgLy8gZmlyc3QgZXJy
b3IgaXMgdGhlIG9uZSB0byBidWJibGUgdXAuCisgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAg
IHRoaXMuY2xvc2VBbGwoaSArIDEpOworICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9CisgICAgICAg
IH0KKyAgICAgIH0KKyAgICB9CisgICAgdGhpcy53cmFwcGVySW5pdERhdGEubGVuZ3RoID0gMDsK
KyAgfQorfTsKKworbW9kdWxlLmV4cG9ydHMgPSBUcmFuc2FjdGlvbkltcGw7Cit9LHsiMTI1Ijox
MjUsIjE1MCI6MTUwfV0sMTAxOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8q
KgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQK
KyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBWaWV3
cG9ydE1ldHJpY3MgPSB7CisKKyAgY3VycmVudFNjcm9sbExlZnQ6IDAsCisKKyAgY3VycmVudFNj
cm9sbFRvcDogMCwKKworICByZWZyZXNoU2Nyb2xsVmFsdWVzOiBmdW5jdGlvbiAoc2Nyb2xsUG9z
aXRpb24pIHsKKyAgICBWaWV3cG9ydE1ldHJpY3MuY3VycmVudFNjcm9sbExlZnQgPSBzY3JvbGxQ
b3NpdGlvbi54OworICAgIFZpZXdwb3J0TWV0cmljcy5jdXJyZW50U2Nyb2xsVG9wID0gc2Nyb2xs
UG9zaXRpb24ueTsKKyAgfQorCit9OworCittb2R1bGUuZXhwb3J0cyA9IFZpZXdwb3J0TWV0cmlj
czsKK30se31dLDEwMjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAq
IENvcHlyaWdodCAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS4KKyAqCisgKiAKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBfcHJv
ZEludmFyaWFudCA9IF9kZXJlcV8oMTI1KTsKKwordmFyIGludmFyaWFudCA9IF9kZXJlcV8oMTUw
KTsKKworLyoqCisgKiBBY2N1bXVsYXRlcyBpdGVtcyB0aGF0IG11c3Qgbm90IGJlIG51bGwgb3Ig
dW5kZWZpbmVkIGludG8gdGhlIGZpcnN0IG9uZS4gVGhpcworICogaXMgdXNlZCB0byBjb25zZXJ2
ZSBtZW1vcnkgYnkgYXZvaWRpbmcgYXJyYXkgYWxsb2NhdGlvbnMsIGFuZCB0aHVzIHNhY3JpZmlj
ZXMKKyAqIEFQSSBjbGVhbm5lc3MuIFNpbmNlIGBjdXJyZW50YCBjYW4gYmUgbnVsbCBiZWZvcmUg
YmVpbmcgcGFzc2VkIGluIGFuZCBub3QKKyAqIG51bGwgYWZ0ZXIgdGhpcyBmdW5jdGlvbiwgbWFr
ZSBzdXJlIHRvIGFzc2lnbiBpdCBiYWNrIHRvIGBjdXJyZW50YDoKKyAqCisgKiBgYSA9IGFjY3Vt
dWxhdGVJbnRvKGEsIGIpO2AKKyAqCisgKiBUaGlzIEFQSSBzaG91bGQgYmUgc3BhcmluZ2x5IHVz
ZWQuIFRyeSBgYWNjdW11bGF0ZWAgZm9yIHNvbWV0aGluZyBjbGVhbmVyLgorICoKKyAqIEByZXR1
cm4geyp8YXJyYXk8Kj59IEFuIGFjY3VtdWxhdGlvbiBvZiBpdGVtcy4KKyAqLworCitmdW5jdGlv
biBhY2N1bXVsYXRlSW50byhjdXJyZW50LCBuZXh0KSB7CisgICEobmV4dCAhPSBudWxsKSA/ICJk
ZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2FjY3VtdWxh
dGVJbnRvKC4uLik6IEFjY3VtdWxhdGVkIGl0ZW1zIG11c3Qgbm90IGJlIG51bGwgb3IgdW5kZWZp
bmVkLicpIDogX3Byb2RJbnZhcmlhbnQoJzMwJykgOiB2b2lkIDA7CisKKyAgaWYgKGN1cnJlbnQg
PT0gbnVsbCkgeworICAgIHJldHVybiBuZXh0OworICB9CisKKyAgLy8gQm90aCBhcmUgbm90IGVt
cHR5LiBXYXJuaW5nOiBOZXZlciBjYWxsIHguY29uY2F0KHkpIHdoZW4geW91IGFyZSBub3QKKyAg
Ly8gY2VydGFpbiB0aGF0IHggaXMgYW4gQXJyYXkgKHggY291bGQgYmUgYSBzdHJpbmcgd2l0aCBj
b25jYXQgbWV0aG9kKS4KKyAgaWYgKEFycmF5LmlzQXJyYXkoY3VycmVudCkpIHsKKyAgICBpZiAo
QXJyYXkuaXNBcnJheShuZXh0KSkgeworICAgICAgY3VycmVudC5wdXNoLmFwcGx5KGN1cnJlbnQs
IG5leHQpOworICAgICAgcmV0dXJuIGN1cnJlbnQ7CisgICAgfQorICAgIGN1cnJlbnQucHVzaChu
ZXh0KTsKKyAgICByZXR1cm4gY3VycmVudDsKKyAgfQorCisgIGlmIChBcnJheS5pc0FycmF5KG5l
eHQpKSB7CisgICAgLy8gQSBiaXQgdG9vIGRhbmdlcm91cyB0byBtdXRhdGUgYG5leHRgLgorICAg
IHJldHVybiBbY3VycmVudF0uY29uY2F0KG5leHQpOworICB9CisKKyAgcmV0dXJuIFtjdXJyZW50
LCBuZXh0XTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBhY2N1bXVsYXRlSW50bzsKK30seyIxMjUi
OjEyNSwiMTUwIjoxNTB9XSwxMDM6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpewor
LyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy
IHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFu
dAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2
YXIgTU9EID0gNjU1MjE7CisKKy8vIGFkbGVyMzIgaXMgbm90IGNyeXB0b2dyYXBoaWNhbGx5IHN0
cm9uZywgYW5kIGlzIG9ubHkgdXNlZCB0byBzYW5pdHkgY2hlY2sgdGhhdAorLy8gbWFya3VwIGdl
bmVyYXRlZCBvbiB0aGUgc2VydmVyIG1hdGNoZXMgdGhlIG1hcmt1cCBnZW5lcmF0ZWQgb24gdGhl
IGNsaWVudC4KKy8vIFRoaXMgaW1wbGVtZW50YXRpb24gKGEgbW9kaWZpZWQgdmVyc2lvbiBvZiB0
aGUgU2hlZXRKUyB2ZXJzaW9uKSBoYXMgYmVlbiBvcHRpbWl6ZWQKKy8vIGZvciBvdXIgdXNlIGNh
c2UsIGF0IHRoZSBleHBlbnNlIG9mIGNvbmZvcm1pbmcgdG8gdGhlIGFkbGVyMzIgc3BlY2lmaWNh
dGlvbgorLy8gZm9yIG5vbi1hc2NpaSBpbnB1dHMuCitmdW5jdGlvbiBhZGxlcjMyKGRhdGEpIHsK
KyAgdmFyIGEgPSAxOworICB2YXIgYiA9IDA7CisgIHZhciBpID0gMDsKKyAgdmFyIGwgPSBkYXRh
Lmxlbmd0aDsKKyAgdmFyIG0gPSBsICYgfjB4MzsKKyAgd2hpbGUgKGkgPCBtKSB7CisgICAgdmFy
IG4gPSBNYXRoLm1pbihpICsgNDA5NiwgbSk7CisgICAgZm9yICg7IGkgPCBuOyBpICs9IDQpIHsK
KyAgICAgIGIgKz0gKGEgKz0gZGF0YS5jaGFyQ29kZUF0KGkpKSArIChhICs9IGRhdGEuY2hhckNv
ZGVBdChpICsgMSkpICsgKGEgKz0gZGF0YS5jaGFyQ29kZUF0KGkgKyAyKSkgKyAoYSArPSBkYXRh
LmNoYXJDb2RlQXQoaSArIDMpKTsKKyAgICB9CisgICAgYSAlPSBNT0Q7CisgICAgYiAlPSBNT0Q7
CisgIH0KKyAgZm9yICg7IGkgPCBsOyBpKyspIHsKKyAgICBiICs9IGEgKz0gZGF0YS5jaGFyQ29k
ZUF0KGkpOworICB9CisgIGEgJT0gTU9EOworICBiICU9IE1PRDsKKyAgcmV0dXJuIGEgfCBiIDw8
IDE2OworfQorCittb2R1bGUuZXhwb3J0cyA9IGFkbGVyMzI7Cit9LHt9XSwxMDQ6W2Z1bmN0aW9u
KF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworKGZ1bmN0aW9uIChwcm9jZXNzKXsKKy8qKgorICog
Q29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
ZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9m
IHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNh
bWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBfcHJvZEludmFy
aWFudCA9IF9kZXJlcV8oMTI1KTsKKwordmFyIFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzID0g
X2RlcmVxXyg3Mik7Cit2YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSBfZGVyZXFfKDczKTsKKwor
dmFyIGludmFyaWFudCA9IF9kZXJlcV8oMTUwKTsKK3ZhciB3YXJuaW5nID0gX2RlcmVxXygxNTcp
OworCit2YXIgUmVhY3RDb21wb25lbnRUcmVlSG9vazsKKworaWYgKHR5cGVvZiBwcm9jZXNzICE9
PSAndW5kZWZpbmVkJyAmJiBwcm9jZXNzLmVudiAmJiAiZGV2ZWxvcG1lbnQiID09PSAndGVzdCcp
IHsKKyAgLy8gVGVtcG9yYXJ5IGhhY2suCisgIC8vIElubGluZSByZXF1aXJlcyBkb24ndCB3b3Jr
IHdlbGwgd2l0aCBKZXN0OgorICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3Qv
aXNzdWVzLzcyNDAKKyAgLy8gUmVtb3ZlIHRoZSBpbmxpbmUgcmVxdWlyZXMgd2hlbiB3ZSBkb24n
dCBuZWVkIHRoZW0gYW55bW9yZToKKyAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3Jl
YWN0L3B1bGwvNzE3OAorICBSZWFjdENvbXBvbmVudFRyZWVIb29rID0gX2RlcmVxXygxMzIpOwor
fQorCit2YXIgbG9nZ2VkVHlwZUZhaWx1cmVzID0ge307CisKKy8qKgorICogQXNzZXJ0IHRoYXQg
dGhlIHZhbHVlcyBtYXRjaCB3aXRoIHRoZSB0eXBlIHNwZWNzLgorICogRXJyb3IgbWVzc2FnZXMg
YXJlIG1lbW9yaXplZCBhbmQgd2lsbCBvbmx5IGJlIHNob3duIG9uY2UuCisgKgorICogQHBhcmFt
IHtvYmplY3R9IHR5cGVTcGVjcyBNYXAgb2YgbmFtZSB0byBhIFJlYWN0UHJvcFR5cGUKKyAqIEBw
YXJhbSB7b2JqZWN0fSB2YWx1ZXMgUnVudGltZSB2YWx1ZXMgdGhhdCBuZWVkIHRvIGJlIHR5cGUt
Y2hlY2tlZAorICogQHBhcmFtIHtzdHJpbmd9IGxvY2F0aW9uIGUuZy4gInByb3AiLCAiY29udGV4
dCIsICJjaGlsZCBjb250ZXh0IgorICogQHBhcmFtIHtzdHJpbmd9IGNvbXBvbmVudE5hbWUgTmFt
ZSBvZiB0aGUgY29tcG9uZW50IGZvciBlcnJvciBtZXNzYWdlcy4KKyAqIEBwYXJhbSB7P29iamVj
dH0gZWxlbWVudCBUaGUgUmVhY3QgZWxlbWVudCB0aGF0IGlzIGJlaW5nIHR5cGUtY2hlY2tlZAor
ICogQHBhcmFtIHs/bnVtYmVyfSBkZWJ1Z0lEIFRoZSBSZWFjdCBjb21wb25lbnQgaW5zdGFuY2Ug
dGhhdCBpcyBiZWluZyB0eXBlLWNoZWNrZWQKKyAqIEBwcml2YXRlCisgKi8KK2Z1bmN0aW9uIGNo
ZWNrUmVhY3RUeXBlU3BlYyh0eXBlU3BlY3MsIHZhbHVlcywgbG9jYXRpb24sIGNvbXBvbmVudE5h
bWUsIGVsZW1lbnQsIGRlYnVnSUQpIHsKKyAgZm9yICh2YXIgdHlwZVNwZWNOYW1lIGluIHR5cGVT
cGVjcykgeworICAgIGlmICh0eXBlU3BlY3MuaGFzT3duUHJvcGVydHkodHlwZVNwZWNOYW1lKSkg
eworICAgICAgdmFyIGVycm9yOworICAgICAgLy8gUHJvcCB0eXBlIHZhbGlkYXRpb24gbWF5IHRo
cm93LiBJbiBjYXNlIHRoZXkgZG8sIHdlIGRvbid0IHdhbnQgdG8KKyAgICAgIC8vIGZhaWwgdGhl
IHJlbmRlciBwaGFzZSB3aGVyZSBpdCBkaWRuJ3QgZmFpbCBiZWZvcmUuIFNvIHdlIGxvZyBpdC4K
KyAgICAgIC8vIEFmdGVyIHRoZXNlIGhhdmUgYmVlbiBjbGVhbmVkIHVwLCB3ZSdsbCBsZXQgdGhl
bSB0aHJvdy4KKyAgICAgIHRyeSB7CisgICAgICAgIC8vIFRoaXMgaXMgaW50ZW50aW9uYWxseSBh
biBpbnZhcmlhbnQgdGhhdCBnZXRzIGNhdWdodC4gSXQncyB0aGUgc2FtZQorICAgICAgICAvLyBi
ZWhhdmlvciBhcyB3aXRob3V0IHRoaXMgc3RhdGVtZW50IGV4Y2VwdCB3aXRoIGEgYmV0dGVyIG1l
c3NhZ2UuCisgICAgICAgICEodHlwZW9mIHR5cGVTcGVjc1t0eXBlU3BlY05hbWVdID09PSAnZnVu
Y3Rpb24nKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxz
ZSwgJyVzOiAlcyB0eXBlIGAlc2AgaXMgaW52YWxpZDsgaXQgbXVzdCBiZSBhIGZ1bmN0aW9uLCB1
c3VhbGx5IGZyb20gUmVhY3QuUHJvcFR5cGVzLicsIGNvbXBvbmVudE5hbWUgfHwgJ1JlYWN0IGNs
YXNzJywgUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXNbbG9jYXRpb25dLCB0eXBlU3BlY05hbWUp
IDogX3Byb2RJbnZhcmlhbnQoJzg0JywgY29tcG9uZW50TmFtZSB8fCAnUmVhY3QgY2xhc3MnLCBS
ZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lc1tsb2NhdGlvbl0sIHR5cGVTcGVjTmFtZSkgOiB2b2lk
IDA7CisgICAgICAgIGVycm9yID0gdHlwZVNwZWNzW3R5cGVTcGVjTmFtZV0odmFsdWVzLCB0eXBl
U3BlY05hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBudWxsLCBSZWFjdFByb3BUeXBlc1Nl
Y3JldCk7CisgICAgICB9IGNhdGNoIChleCkgeworICAgICAgICBlcnJvciA9IGV4OworICAgICAg
fQorICAgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyghZXJyb3Ig
fHwgZXJyb3IgaW5zdGFuY2VvZiBFcnJvciwgJyVzOiB0eXBlIHNwZWNpZmljYXRpb24gb2YgJXMg
YCVzYCBpcyBpbnZhbGlkOyB0aGUgdHlwZSBjaGVja2VyICcgKyAnZnVuY3Rpb24gbXVzdCByZXR1
cm4gYG51bGxgIG9yIGFuIGBFcnJvcmAgYnV0IHJldHVybmVkIGEgJXMuICcgKyAnWW91IG1heSBo
YXZlIGZvcmdvdHRlbiB0byBwYXNzIGFuIGFyZ3VtZW50IHRvIHRoZSB0eXBlIGNoZWNrZXIgJyAr
ICdjcmVhdG9yIChhcnJheU9mLCBpbnN0YW5jZU9mLCBvYmplY3RPZiwgb25lT2YsIG9uZU9mVHlw
ZSwgYW5kICcgKyAnc2hhcGUgYWxsIHJlcXVpcmUgYW4gYXJndW1lbnQpLicsIGNvbXBvbmVudE5h
bWUgfHwgJ1JlYWN0IGNsYXNzJywgUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXNbbG9jYXRpb25d
LCB0eXBlU3BlY05hbWUsIHR5cGVvZiBlcnJvcikgOiB2b2lkIDA7CisgICAgICBpZiAoZXJyb3Ig
aW5zdGFuY2VvZiBFcnJvciAmJiAhKGVycm9yLm1lc3NhZ2UgaW4gbG9nZ2VkVHlwZUZhaWx1cmVz
KSkgeworICAgICAgICAvLyBPbmx5IG1vbml0b3IgdGhpcyBmYWlsdXJlIG9uY2UgYmVjYXVzZSB0
aGVyZSB0ZW5kcyB0byBiZSBhIGxvdCBvZiB0aGUKKyAgICAgICAgLy8gc2FtZSBlcnJvci4KKyAg
ICAgICAgbG9nZ2VkVHlwZUZhaWx1cmVzW2Vycm9yLm1lc3NhZ2VdID0gdHJ1ZTsKKworICAgICAg
ICB2YXIgY29tcG9uZW50U3RhY2tJbmZvID0gJyc7CisKKyAgICAgICAgaWYgKCJkZXZlbG9wbWVu
dCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgICAgIGlmICghUmVhY3RDb21wb25lbnRUcmVl
SG9vaykgeworICAgICAgICAgICAgUmVhY3RDb21wb25lbnRUcmVlSG9vayA9IF9kZXJlcV8oMTMy
KTsKKyAgICAgICAgICB9CisgICAgICAgICAgaWYgKGRlYnVnSUQgIT09IG51bGwpIHsKKyAgICAg
ICAgICAgIGNvbXBvbmVudFN0YWNrSW5mbyA9IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0U3Rh
Y2tBZGRlbmR1bUJ5SUQoZGVidWdJRCk7CisgICAgICAgICAgfSBlbHNlIGlmIChlbGVtZW50ICE9
PSBudWxsKSB7CisgICAgICAgICAgICBjb21wb25lbnRTdGFja0luZm8gPSBSZWFjdENvbXBvbmVu
dFRyZWVIb29rLmdldEN1cnJlbnRTdGFja0FkZGVuZHVtKGVsZW1lbnQpOworICAgICAgICAgIH0K
KyAgICAgICAgfQorCisgICAgICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdh
cm5pbmcoZmFsc2UsICdGYWlsZWQgJXMgdHlwZTogJXMlcycsIGxvY2F0aW9uLCBlcnJvci5tZXNz
YWdlLCBjb21wb25lbnRTdGFja0luZm8pIDogdm9pZCAwOworICAgICAgfQorICAgIH0KKyAgfQor
fQorCittb2R1bGUuZXhwb3J0cyA9IGNoZWNrUmVhY3RUeXBlU3BlYzsKK30pLmNhbGwodGhpcyx1
bmRlZmluZWQpCit9LHsiMTI1IjoxMjUsIjEzMiI6MTMyLCIxNTAiOjE1MCwiMTU3IjoxNTcsIjcy
Ijo3MiwiNzMiOjczfV0sMTA1OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8q
KgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQK
KyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisvKiBnbG9iYWxzIE1TQXBwICovCisKKyd1
c2Ugc3RyaWN0JzsKKworLyoqCisgKiBDcmVhdGUgYSBmdW5jdGlvbiB3aGljaCBoYXMgJ3Vuc2Fm
ZScgcHJpdmlsZWdlcyAocmVxdWlyZWQgYnkgd2luZG93czggYXBwcykKKyAqLworCit2YXIgY3Jl
YXRlTWljcm9zb2Z0VW5zYWZlTG9jYWxGdW5jdGlvbiA9IGZ1bmN0aW9uIChmdW5jKSB7CisgIGlm
ICh0eXBlb2YgTVNBcHAgIT09ICd1bmRlZmluZWQnICYmIE1TQXBwLmV4ZWNVbnNhZmVMb2NhbEZ1
bmN0aW9uKSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChhcmcwLCBhcmcxLCBhcmcyLCBhcmczKSB7
CisgICAgICBNU0FwcC5leGVjVW5zYWZlTG9jYWxGdW5jdGlvbihmdW5jdGlvbiAoKSB7CisgICAg
ICAgIHJldHVybiBmdW5jKGFyZzAsIGFyZzEsIGFyZzIsIGFyZzMpOworICAgICAgfSk7CisgICAg
fTsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gZnVuYzsKKyAgfQorfTsKKworbW9kdWxlLmV4cG9y
dHMgPSBjcmVhdGVNaWNyb3NvZnRVbnNhZmVMb2NhbEZ1bmN0aW9uOworfSx7fV0sMTA2OltmdW5j
dGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJl
c2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhp
cyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91
bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMg
c291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2Fu
IGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoK
KyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBDU1NQcm9wZXJ0eSA9IF9kZXJlcV8oNCk7Cit2
YXIgd2FybmluZyA9IF9kZXJlcV8oMTU3KTsKKwordmFyIGlzVW5pdGxlc3NOdW1iZXIgPSBDU1NQ
cm9wZXJ0eS5pc1VuaXRsZXNzTnVtYmVyOwordmFyIHN0eWxlV2FybmluZ3MgPSB7fTsKKworLyoq
CisgKiBDb252ZXJ0IGEgdmFsdWUgaW50byB0aGUgcHJvcGVyIGNzcyB3cml0YWJsZSB2YWx1ZS4g
VGhlIHN0eWxlIG5hbWUgYG5hbWVgCisgKiBzaG91bGQgYmUgbG9naWNhbCAobm8gaHlwaGVucyks
IGFzIHNwZWNpZmllZAorICogaW4gYENTU1Byb3BlcnR5LmlzVW5pdGxlc3NOdW1iZXJgLgorICoK
KyAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIENTUyBwcm9wZXJ0eSBuYW1lIHN1Y2ggYXMgYHRvcE1h
cmdpbmAuCisgKiBAcGFyYW0geyp9IHZhbHVlIENTUyBwcm9wZXJ0eSB2YWx1ZSBzdWNoIGFzIGAx
MHB4YC4KKyAqIEBwYXJhbSB7UmVhY3RET01Db21wb25lbnR9IGNvbXBvbmVudAorICogQHJldHVy
biB7c3RyaW5nfSBOb3JtYWxpemVkIHN0eWxlIHZhbHVlIHdpdGggZGltZW5zaW9ucyBhcHBsaWVk
LgorICovCitmdW5jdGlvbiBkYW5nZXJvdXNTdHlsZVZhbHVlKG5hbWUsIHZhbHVlLCBjb21wb25l
bnQpIHsKKyAgLy8gTm90ZSB0aGF0IHdlJ3ZlIHJlbW92ZWQgZXNjYXBlVGV4dEZvckJyb3dzZXIo
KSBjYWxscyBoZXJlIHNpbmNlIHRoZQorICAvLyB3aG9sZSBzdHJpbmcgd2lsbCBiZSBlc2NhcGVk
IHdoZW4gdGhlIGF0dHJpYnV0ZSBpcyBpbmplY3RlZCBpbnRvCisgIC8vIHRoZSBtYXJrdXAuIElm
IHlvdSBwcm92aWRlIHVuc2FmZSB1c2VyIGRhdGEgaGVyZSB0aGV5IGNhbiBpbmplY3QKKyAgLy8g
YXJiaXRyYXJ5IENTUyB3aGljaCBtYXkgYmUgcHJvYmxlbWF0aWMgKEkgY291bGRuJ3QgcmVwcm8g
dGhpcyk6CisgIC8vIGh0dHBzOi8vd3d3Lm93YXNwLm9yZy9pbmRleC5waHAvWFNTX0ZpbHRlcl9F
dmFzaW9uX0NoZWF0X1NoZWV0CisgIC8vIGh0dHA6Ly93d3cudGhlc3Bhbm5lci5jby51ay8yMDA3
LzExLzI2L3VsdGltYXRlLXhzcy1jc3MtaW5qZWN0aW9uLworICAvLyBUaGlzIGlzIG5vdCBhbiBY
U1MgaG9sZSBidXQgaW5zdGVhZCBhIHBvdGVudGlhbCBDU1MgaW5qZWN0aW9uIGlzc3VlCisgIC8v
IHdoaWNoIGhhcyBsZWFkIHRvIGEgZ3JlYXRlciBkaXNjdXNzaW9uIGFib3V0IGhvdyB3ZSdyZSBn
b2luZyB0bworICAvLyB0cnVzdCBVUkxzIG1vdmluZyBmb3J3YXJkLiBTZWUgIzIxMTU5MDEKKwor
ICB2YXIgaXNFbXB0eSA9IHZhbHVlID09IG51bGwgfHwgdHlwZW9mIHZhbHVlID09PSAnYm9vbGVh
bicgfHwgdmFsdWUgPT09ICcnOworICBpZiAoaXNFbXB0eSkgeworICAgIHJldHVybiAnJzsKKyAg
fQorCisgIHZhciBpc05vbk51bWVyaWMgPSBpc05hTih2YWx1ZSk7CisgIGlmIChpc05vbk51bWVy
aWMgfHwgdmFsdWUgPT09IDAgfHwgaXNVbml0bGVzc051bWJlci5oYXNPd25Qcm9wZXJ0eShuYW1l
KSAmJiBpc1VuaXRsZXNzTnVtYmVyW25hbWVdKSB7CisgICAgcmV0dXJuICcnICsgdmFsdWU7IC8v
IGNhc3QgdG8gc3RyaW5nCisgIH0KKworICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykg
eworICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgIC8vIEFs
bG93ICcwJyB0byBwYXNzIHRocm91Z2ggd2l0aG91dCB3YXJuaW5nLiAwIGlzIGFscmVhZHkgc3Bl
Y2lhbCBhbmQKKyAgICAgIC8vIGRvZXNuJ3QgcmVxdWlyZSB1bml0cywgc28gd2UgZG9uJ3QgbmVl
ZCB0byB3YXJuIGFib3V0IGl0LgorICAgICAgaWYgKGNvbXBvbmVudCAmJiB2YWx1ZSAhPT0gJzAn
KSB7CisgICAgICAgIHZhciBvd25lciA9IGNvbXBvbmVudC5fY3VycmVudEVsZW1lbnQuX293bmVy
OworICAgICAgICB2YXIgb3duZXJOYW1lID0gb3duZXIgPyBvd25lci5nZXROYW1lKCkgOiBudWxs
OworICAgICAgICBpZiAob3duZXJOYW1lICYmICFzdHlsZVdhcm5pbmdzW293bmVyTmFtZV0pIHsK
KyAgICAgICAgICBzdHlsZVdhcm5pbmdzW293bmVyTmFtZV0gPSB7fTsKKyAgICAgICAgfQorICAg
ICAgICB2YXIgd2FybmVkID0gZmFsc2U7CisgICAgICAgIGlmIChvd25lck5hbWUpIHsKKyAgICAg
ICAgICB2YXIgd2FybmluZ3MgPSBzdHlsZVdhcm5pbmdzW293bmVyTmFtZV07CisgICAgICAgICAg
d2FybmVkID0gd2FybmluZ3NbbmFtZV07CisgICAgICAgICAgaWYgKCF3YXJuZWQpIHsKKyAgICAg
ICAgICAgIHdhcm5pbmdzW25hbWVdID0gdHJ1ZTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKCF3YXJuZWQpIHsKKyAgICAgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVj
dGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnYSBgJXNgIHRhZyAob3duZXI6IGAlc2ApIHdhcyBwYXNz
ZWQgYSBudW1lcmljIHN0cmluZyB2YWx1ZSAnICsgJ2ZvciBDU1MgcHJvcGVydHkgYCVzYCAodmFs
dWU6IGAlc2ApIHdoaWNoIHdpbGwgYmUgdHJlYXRlZCAnICsgJ2FzIGEgdW5pdGxlc3MgbnVtYmVy
IGluIGEgZnV0dXJlIHZlcnNpb24gb2YgUmVhY3QuJywgY29tcG9uZW50Ll9jdXJyZW50RWxlbWVu
dC50eXBlLCBvd25lck5hbWUgfHwgJ3Vua25vd24nLCBuYW1lLCB2YWx1ZSkgOiB2b2lkIDA7Cisg
ICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgICAgdmFsdWUgPSB2YWx1ZS50cmltKCk7CisgIH0K
KyAgcmV0dXJuIHZhbHVlICsgJ3B4JzsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBkYW5nZXJvdXNT
dHlsZVZhbHVlOworfSx7IjE1NyI6MTU3LCI0Ijo0fV0sMTA3OltmdW5jdGlvbihfZGVyZXFfLG1v
ZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTYtcHJlc2VudCwgRmFjZWJvb2ss
IEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBp
cyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFu
IGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRo
ZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIEJhc2VkIG9uIHRo
ZSBlc2NhcGUtaHRtbCBsaWJyYXJ5LCB3aGljaCBpcyB1c2VkIHVuZGVyIHRoZSBNSVQgTGljZW5z
ZSBiZWxvdzoKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTItMjAxMyBUSiBIb2xvd2F5Y2h1awor
ICogQ29weXJpZ2h0IChjKSAyMDE1IEFuZHJlYXMgTHViYmUKKyAqIENvcHlyaWdodCAoYykgMjAx
NSBUaWFuY2hlbmcgIlRpbW90aHkiIEd1CisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3Jh
bnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCisgKiBhIGNvcHkg
b2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUK
KyAqICdTb2Z0d2FyZScpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0
aW9uLCBpbmNsdWRpbmcKKyAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwg
Y29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKKyAqIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2Us
IGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bworICogcGVybWl0IHBl
cnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0
IHRvCisgKiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHly
aWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUKKyAqIGluY2x1
ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJl
LgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAnQVMgSVMnLCBXSVRIT1VUIFdBUlJB
TlRZIE9GIEFOWSBLSU5ELAorICogRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5P
VCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCisgKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuCisgKiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUg
Rk9SIEFOWQorICogQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElO
IEFOIEFDVElPTiBPRiBDT05UUkFDVCwKKyAqIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZS
T00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFCisgKiBTT0ZUV0FSRSBPUiBUSEUg
VVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKi8KKworJ3VzZSBz
dHJpY3QnOworCisvLyBjb2RlIGNvcGllZCBhbmQgbW9kaWZpZWQgZnJvbSBlc2NhcGUtaHRtbAor
LyoqCisgKiBNb2R1bGUgdmFyaWFibGVzLgorICogQHByaXZhdGUKKyAqLworCit2YXIgbWF0Y2hI
dG1sUmVnRXhwID0gL1siJyY8Pl0vOworCisvKioKKyAqIEVzY2FwZSBzcGVjaWFsIGNoYXJhY3Rl
cnMgaW4gdGhlIGdpdmVuIHN0cmluZyBvZiBodG1sLgorICoKKyAqIEBwYXJhbSAge3N0cmluZ30g
c3RyaW5nIFRoZSBzdHJpbmcgdG8gZXNjYXBlIGZvciBpbnNlcnRpbmcgaW50byBIVE1MCisgKiBA
cmV0dXJuIHtzdHJpbmd9CisgKiBAcHVibGljCisgKi8KKworZnVuY3Rpb24gZXNjYXBlSHRtbChz
dHJpbmcpIHsKKyAgdmFyIHN0ciA9ICcnICsgc3RyaW5nOworICB2YXIgbWF0Y2ggPSBtYXRjaEh0
bWxSZWdFeHAuZXhlYyhzdHIpOworCisgIGlmICghbWF0Y2gpIHsKKyAgICByZXR1cm4gc3RyOwor
ICB9CisKKyAgdmFyIGVzY2FwZTsKKyAgdmFyIGh0bWwgPSAnJzsKKyAgdmFyIGluZGV4ID0gMDsK
KyAgdmFyIGxhc3RJbmRleCA9IDA7CisKKyAgZm9yIChpbmRleCA9IG1hdGNoLmluZGV4OyBpbmRl
eCA8IHN0ci5sZW5ndGg7IGluZGV4KyspIHsKKyAgICBzd2l0Y2ggKHN0ci5jaGFyQ29kZUF0KGlu
ZGV4KSkgeworICAgICAgY2FzZSAzNDoKKyAgICAgICAgLy8gIgorICAgICAgICBlc2NhcGUgPSAn
JnF1b3Q7JzsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDM4OgorICAgICAgICAvLyAmCisg
ICAgICAgIGVzY2FwZSA9ICcmYW1wOyc7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAzOToK
KyAgICAgICAgLy8gJworICAgICAgICBlc2NhcGUgPSAnJiN4Mjc7JzsgLy8gbW9kaWZpZWQgZnJv
bSBlc2NhcGUtaHRtbDsgdXNlZCB0byBiZSAnJiMzOScKKyAgICAgICAgYnJlYWs7CisgICAgICBj
YXNlIDYwOgorICAgICAgICAvLyA8CisgICAgICAgIGVzY2FwZSA9ICcmbHQ7JzsKKyAgICAgICAg
YnJlYWs7CisgICAgICBjYXNlIDYyOgorICAgICAgICAvLyA+CisgICAgICAgIGVzY2FwZSA9ICcm
Z3Q7JzsKKyAgICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0OgorICAgICAgICBjb250aW51ZTsK
KyAgICB9CisKKyAgICBpZiAobGFzdEluZGV4ICE9PSBpbmRleCkgeworICAgICAgaHRtbCArPSBz
dHIuc3Vic3RyaW5nKGxhc3RJbmRleCwgaW5kZXgpOworICAgIH0KKworICAgIGxhc3RJbmRleCA9
IGluZGV4ICsgMTsKKyAgICBodG1sICs9IGVzY2FwZTsKKyAgfQorCisgIHJldHVybiBsYXN0SW5k
ZXggIT09IGluZGV4ID8gaHRtbCArIHN0ci5zdWJzdHJpbmcobGFzdEluZGV4LCBpbmRleCkgOiBo
dG1sOworfQorLy8gZW5kIGNvZGUgY29waWVkIGFuZCBtb2RpZmllZCBmcm9tIGVzY2FwZS1odG1s
CisKKworLyoqCisgKiBFc2NhcGVzIHRleHQgdG8gcHJldmVudCBzY3JpcHRpbmcgYXR0YWNrcy4K
KyAqCisgKiBAcGFyYW0geyp9IHRleHQgVGV4dCB2YWx1ZSB0byBlc2NhcGUuCisgKiBAcmV0dXJu
IHtzdHJpbmd9IEFuIGVzY2FwZWQgc3RyaW5nLgorICovCitmdW5jdGlvbiBlc2NhcGVUZXh0Q29u
dGVudEZvckJyb3dzZXIodGV4dCkgeworICBpZiAodHlwZW9mIHRleHQgPT09ICdib29sZWFuJyB8
fCB0eXBlb2YgdGV4dCA9PT0gJ251bWJlcicpIHsKKyAgICAvLyB0aGlzIHNob3J0Y2lyY3VpdCBo
ZWxwcyBwZXJmIGZvciB0eXBlcyB0aGF0IHdlIGtub3cgd2lsbCBuZXZlciBoYXZlCisgICAgLy8g
c3BlY2lhbCBjaGFyYWN0ZXJzLCBlc3BlY2lhbGx5IGdpdmVuIHRoYXQgdGhpcyBmdW5jdGlvbiBp
cyB1c2VkIG9mdGVuCisgICAgLy8gZm9yIG51bWVyaWMgZG9tIGlkcy4KKyAgICByZXR1cm4gJycg
KyB0ZXh0OworICB9CisgIHJldHVybiBlc2NhcGVIdG1sKHRleHQpOworfQorCittb2R1bGUuZXhw
b3J0cyA9IGVzY2FwZVRleHRDb250ZW50Rm9yQnJvd3NlcjsKK30se31dLDEwODpbZnVuY3Rpb24o
X2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQs
IEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291
cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGlu
IHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJj
ZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBm
b3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8K
KworJ3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJbnZhcmlhbnQgPSBfZGVyZXFfKDEyNSk7CisK
K3ZhciBSZWFjdEN1cnJlbnRPd25lciA9IF9kZXJlcV8oMTMzKTsKK3ZhciBSZWFjdERPTUNvbXBv
bmVudFRyZWUgPSBfZGVyZXFfKDM0KTsKK3ZhciBSZWFjdEluc3RhbmNlTWFwID0gX2RlcmVxXyg2
Myk7CisKK3ZhciBnZXRIb3N0Q29tcG9uZW50RnJvbUNvbXBvc2l0ZSA9IF9kZXJlcV8oMTE1KTsK
K3ZhciBpbnZhcmlhbnQgPSBfZGVyZXFfKDE1MCk7Cit2YXIgd2FybmluZyA9IF9kZXJlcV8oMTU3
KTsKKworLyoqCisgKiBSZXR1cm5zIHRoZSBET00gbm9kZSByZW5kZXJlZCBieSB0aGlzIGVsZW1l
bnQuCisgKgorICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdG9w
LWxldmVsLWFwaS5odG1sI3JlYWN0ZG9tLmZpbmRkb21ub2RlCisgKgorICogQHBhcmFtIHtSZWFj
dENvbXBvbmVudHxET01FbGVtZW50fSBjb21wb25lbnRPckVsZW1lbnQKKyAqIEByZXR1cm4gez9E
T01FbGVtZW50fSBUaGUgcm9vdCBub2RlIG9mIHRoaXMgZWxlbWVudC4KKyAqLworZnVuY3Rpb24g
ZmluZERPTU5vZGUoY29tcG9uZW50T3JFbGVtZW50KSB7CisgIGlmICgiZGV2ZWxvcG1lbnQiICE9
PSAncHJvZHVjdGlvbicpIHsKKyAgICB2YXIgb3duZXIgPSBSZWFjdEN1cnJlbnRPd25lci5jdXJy
ZW50OworICAgIGlmIChvd25lciAhPT0gbnVsbCkgeworICAgICAgImRldmVsb3BtZW50IiAhPT0g
J3Byb2R1Y3Rpb24nID8gd2FybmluZyhvd25lci5fd2FybmVkQWJvdXRSZWZzSW5SZW5kZXIsICcl
cyBpcyBhY2Nlc3NpbmcgZmluZERPTU5vZGUgaW5zaWRlIGl0cyByZW5kZXIoKS4gJyArICdyZW5k
ZXIoKSBzaG91bGQgYmUgYSBwdXJlIGZ1bmN0aW9uIG9mIHByb3BzIGFuZCBzdGF0ZS4gSXQgc2hv
dWxkICcgKyAnbmV2ZXIgYWNjZXNzIHNvbWV0aGluZyB0aGF0IHJlcXVpcmVzIHN0YWxlIGRhdGEg
ZnJvbSB0aGUgcHJldmlvdXMgJyArICdyZW5kZXIsIHN1Y2ggYXMgcmVmcy4gTW92ZSB0aGlzIGxv
Z2ljIHRvIGNvbXBvbmVudERpZE1vdW50IGFuZCAnICsgJ2NvbXBvbmVudERpZFVwZGF0ZSBpbnN0
ZWFkLicsIG93bmVyLmdldE5hbWUoKSB8fCAnQSBjb21wb25lbnQnKSA6IHZvaWQgMDsKKyAgICAg
IG93bmVyLl93YXJuZWRBYm91dFJlZnNJblJlbmRlciA9IHRydWU7CisgICAgfQorICB9CisgIGlm
IChjb21wb25lbnRPckVsZW1lbnQgPT0gbnVsbCkgeworICAgIHJldHVybiBudWxsOworICB9Cisg
IGlmIChjb21wb25lbnRPckVsZW1lbnQubm9kZVR5cGUgPT09IDEpIHsKKyAgICByZXR1cm4gY29t
cG9uZW50T3JFbGVtZW50OworICB9CisKKyAgdmFyIGluc3QgPSBSZWFjdEluc3RhbmNlTWFwLmdl
dChjb21wb25lbnRPckVsZW1lbnQpOworICBpZiAoaW5zdCkgeworICAgIGluc3QgPSBnZXRIb3N0
Q29tcG9uZW50RnJvbUNvbXBvc2l0ZShpbnN0KTsKKyAgICByZXR1cm4gaW5zdCA/IFJlYWN0RE9N
Q29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKGluc3QpIDogbnVsbDsKKyAgfQorCisg
IGlmICh0eXBlb2YgY29tcG9uZW50T3JFbGVtZW50LnJlbmRlciA9PT0gJ2Z1bmN0aW9uJykgewor
ICAgICFmYWxzZSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChm
YWxzZSwgJ2ZpbmRET01Ob2RlIHdhcyBjYWxsZWQgb24gYW4gdW5tb3VudGVkIGNvbXBvbmVudC4n
KSA6IF9wcm9kSW52YXJpYW50KCc0NCcpIDogdm9pZCAwOworICB9IGVsc2UgeworICAgICFmYWxz
ZSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0Vs
ZW1lbnQgYXBwZWFycyB0byBiZSBuZWl0aGVyIFJlYWN0Q29tcG9uZW50IG5vciBET01Ob2RlIChr
ZXlzOiAlcyknLCBPYmplY3Qua2V5cyhjb21wb25lbnRPckVsZW1lbnQpKSA6IF9wcm9kSW52YXJp
YW50KCc0NScsIE9iamVjdC5rZXlzKGNvbXBvbmVudE9yRWxlbWVudCkpIDogdm9pZCAwOworICB9
Cit9CisKK21vZHVsZS5leHBvcnRzID0gZmluZERPTU5vZGU7Cit9LHsiMTE1IjoxMTUsIjEyNSI6
MTI1LCIxMzMiOjEzMywiMTUwIjoxNTAsIjE1NyI6MTU3LCIzNCI6MzQsIjYzIjo2M31dLDEwOTpb
ZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisoZnVuY3Rpb24gKHByb2Nlc3Mpewor
LyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy
IHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFu
dAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2
YXIgS2V5RXNjYXBlVXRpbHMgPSBfZGVyZXFfKDIzKTsKK3ZhciB0cmF2ZXJzZUFsbENoaWxkcmVu
ID0gX2RlcmVxXygxMzApOwordmFyIHdhcm5pbmcgPSBfZGVyZXFfKDE1Nyk7CisKK3ZhciBSZWFj
dENvbXBvbmVudFRyZWVIb29rOworCitpZiAodHlwZW9mIHByb2Nlc3MgIT09ICd1bmRlZmluZWQn
ICYmIHByb2Nlc3MuZW52ICYmICJkZXZlbG9wbWVudCIgPT09ICd0ZXN0JykgeworICAvLyBUZW1w
b3JhcnkgaGFjay4KKyAgLy8gSW5saW5lIHJlcXVpcmVzIGRvbid0IHdvcmsgd2VsbCB3aXRoIEpl
c3Q6CisgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvNzI0MAor
ICAvLyBSZW1vdmUgdGhlIGlubGluZSByZXF1aXJlcyB3aGVuIHdlIGRvbid0IG5lZWQgdGhlbSBh
bnltb3JlOgorICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvcHVsbC83MTc4
CisgIFJlYWN0Q29tcG9uZW50VHJlZUhvb2sgPSBfZGVyZXFfKDEzMik7Cit9CisKKy8qKgorICog
QHBhcmFtIHtmdW5jdGlvbn0gdHJhdmVyc2VDb250ZXh0IENvbnRleHQgcGFzc2VkIHRocm91Z2gg
dHJhdmVyc2FsLgorICogQHBhcmFtIHs/UmVhY3RDb21wb25lbnR9IGNoaWxkIFJlYWN0IGNoaWxk
IGNvbXBvbmVudC4KKyAqIEBwYXJhbSB7IXN0cmluZ30gbmFtZSBTdHJpbmcgbmFtZSBvZiBrZXkg
cGF0aCB0byBjaGlsZC4KKyAqIEBwYXJhbSB7bnVtYmVyPX0gc2VsZkRlYnVnSUQgT3B0aW9uYWwg
ZGVidWdJRCBvZiB0aGUgY3VycmVudCBpbnRlcm5hbCBpbnN0YW5jZS4KKyAqLworZnVuY3Rpb24g
ZmxhdHRlblNpbmdsZUNoaWxkSW50b0NvbnRleHQodHJhdmVyc2VDb250ZXh0LCBjaGlsZCwgbmFt
ZSwgc2VsZkRlYnVnSUQpIHsKKyAgLy8gV2UgZm91bmQgYSBjb21wb25lbnQgaW5zdGFuY2UuCisg
IGlmICh0cmF2ZXJzZUNvbnRleHQgJiYgdHlwZW9mIHRyYXZlcnNlQ29udGV4dCA9PT0gJ29iamVj
dCcpIHsKKyAgICB2YXIgcmVzdWx0ID0gdHJhdmVyc2VDb250ZXh0OworICAgIHZhciBrZXlVbmlx
dWUgPSByZXN1bHRbbmFtZV0gPT09IHVuZGVmaW5lZDsKKyAgICBpZiAoImRldmVsb3BtZW50IiAh
PT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICBpZiAoIVJlYWN0Q29tcG9uZW50VHJlZUhvb2spIHsK
KyAgICAgICAgUmVhY3RDb21wb25lbnRUcmVlSG9vayA9IF9kZXJlcV8oMTMyKTsKKyAgICAgIH0K
KyAgICAgIGlmICgha2V5VW5pcXVlKSB7CisgICAgICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9k
dWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdmbGF0dGVuQ2hpbGRyZW4oLi4uKTogRW5jb3VudGVy
ZWQgdHdvIGNoaWxkcmVuIHdpdGggdGhlIHNhbWUga2V5LCAnICsgJ2Alc2AuIENoaWxkIGtleXMg
bXVzdCBiZSB1bmlxdWU7IHdoZW4gdHdvIGNoaWxkcmVuIHNoYXJlIGEga2V5LCBvbmx5ICcgKyAn
dGhlIGZpcnN0IGNoaWxkIHdpbGwgYmUgdXNlZC4lcycsIEtleUVzY2FwZVV0aWxzLnVuZXNjYXBl
KG5hbWUpLCBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldFN0YWNrQWRkZW5kdW1CeUlEKHNlbGZE
ZWJ1Z0lEKSkgOiB2b2lkIDA7CisgICAgICB9CisgICAgfQorICAgIGlmIChrZXlVbmlxdWUgJiYg
Y2hpbGQgIT0gbnVsbCkgeworICAgICAgcmVzdWx0W25hbWVdID0gY2hpbGQ7CisgICAgfQorICB9
Cit9CisKKy8qKgorICogRmxhdHRlbnMgY2hpbGRyZW4gdGhhdCBhcmUgdHlwaWNhbGx5IHNwZWNp
ZmllZCBhcyBgcHJvcHMuY2hpbGRyZW5gLiBBbnkgbnVsbAorICogY2hpbGRyZW4gd2lsbCBub3Qg
YmUgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdGluZyBvYmplY3QuCisgKiBAcmV0dXJuIHshb2JqZWN0
fSBmbGF0dGVuZWQgY2hpbGRyZW4ga2V5ZWQgYnkgbmFtZS4KKyAqLworZnVuY3Rpb24gZmxhdHRl
bkNoaWxkcmVuKGNoaWxkcmVuLCBzZWxmRGVidWdJRCkgeworICBpZiAoY2hpbGRyZW4gPT0gbnVs
bCkgeworICAgIHJldHVybiBjaGlsZHJlbjsKKyAgfQorICB2YXIgcmVzdWx0ID0ge307CisKKyAg
aWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgIHRyYXZlcnNlQWxsQ2hp
bGRyZW4oY2hpbGRyZW4sIGZ1bmN0aW9uICh0cmF2ZXJzZUNvbnRleHQsIGNoaWxkLCBuYW1lKSB7
CisgICAgICByZXR1cm4gZmxhdHRlblNpbmdsZUNoaWxkSW50b0NvbnRleHQodHJhdmVyc2VDb250
ZXh0LCBjaGlsZCwgbmFtZSwgc2VsZkRlYnVnSUQpOworICAgIH0sIHJlc3VsdCk7CisgIH0gZWxz
ZSB7CisgICAgdHJhdmVyc2VBbGxDaGlsZHJlbihjaGlsZHJlbiwgZmxhdHRlblNpbmdsZUNoaWxk
SW50b0NvbnRleHQsIHJlc3VsdCk7CisgIH0KKyAgcmV0dXJuIHJlc3VsdDsKK30KKworbW9kdWxl
LmV4cG9ydHMgPSBmbGF0dGVuQ2hpbGRyZW47Cit9KS5jYWxsKHRoaXMsdW5kZWZpbmVkKQorfSx7
IjEzMCI6MTMwLCIxMzIiOjEzMiwiMTU3IjoxNTcsIjIzIjoyM31dLDExMDpbZnVuY3Rpb24oX2Rl
cmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZh
Y2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNl
IGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRo
ZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0
cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiAKKyAq
LworCisndXNlIHN0cmljdCc7CisKKy8qKgorICogQHBhcmFtIHthcnJheX0gYXJyIGFuICJhY2N1
bXVsYXRpb24iIG9mIGl0ZW1zIHdoaWNoIGlzIGVpdGhlciBhbiBBcnJheSBvcgorICogYSBzaW5n
bGUgaXRlbS4gVXNlZnVsIHdoZW4gcGFpcmVkIHdpdGggdGhlIGBhY2N1bXVsYXRlYCBtb2R1bGUu
IFRoaXMgaXMgYQorICogc2ltcGxlIHV0aWxpdHkgdGhhdCBhbGxvd3MgdXMgdG8gcmVhc29uIGFi
b3V0IGEgY29sbGVjdGlvbiBvZiBpdGVtcywgYnV0CisgKiBoYW5kbGluZyB0aGUgY2FzZSB3aGVu
IHRoZXJlIGlzIGV4YWN0bHkgb25lIGl0ZW0gKGFuZCB3ZSBkbyBub3QgbmVlZCB0bworICogYWxs
b2NhdGUgYW4gYXJyYXkpLgorICovCisKK2Z1bmN0aW9uIGZvckVhY2hBY2N1bXVsYXRlZChhcnIs
IGNiLCBzY29wZSkgeworICBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSB7CisgICAgYXJyLmZvckVh
Y2goY2IsIHNjb3BlKTsKKyAgfSBlbHNlIGlmIChhcnIpIHsKKyAgICBjYi5jYWxsKHNjb3BlLCBh
cnIpOworICB9Cit9CisKK21vZHVsZS5leHBvcnRzID0gZm9yRWFjaEFjY3VtdWxhdGVkOworfSx7
fV0sMTExOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJp
Z2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxl
IGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0
b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVu
dCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGly
ZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKKy8qKgorICogYGNoYXJDb2RlYCBy
ZXByZXNlbnRzIHRoZSBhY3R1YWwgImNoYXJhY3RlciBjb2RlIiBhbmQgaXMgc2FmZSB0byB1c2Ug
d2l0aAorICogYFN0cmluZy5mcm9tQ2hhckNvZGVgLiBBcyBzdWNoLCBvbmx5IGtleXMgdGhhdCBj
b3JyZXNwb25kIHRvIHByaW50YWJsZQorICogY2hhcmFjdGVycyBwcm9kdWNlIGEgdmFsaWQgYGNo
YXJDb2RlYCwgdGhlIG9ubHkgZXhjZXB0aW9uIHRvIHRoaXMgaXMgRW50ZXIuCisgKiBUaGUgVGFi
LWtleSBpcyBjb25zaWRlcmVkIG5vbi1wcmludGFibGUgYW5kIGRvZXMgbm90IGhhdmUgYSBgY2hh
ckNvZGVgLAorICogcHJlc3VtYWJseSBiZWNhdXNlIGl0IGRvZXMgbm90IHByb2R1Y2UgYSB0YWIt
Y2hhcmFjdGVyIGluIGJyb3dzZXJzLgorICoKKyAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVu
dCBOYXRpdmUgYnJvd3NlciBldmVudC4KKyAqIEByZXR1cm4ge251bWJlcn0gTm9ybWFsaXplZCBg
Y2hhckNvZGVgIHByb3BlcnR5LgorICovCisKK2Z1bmN0aW9uIGdldEV2ZW50Q2hhckNvZGUobmF0
aXZlRXZlbnQpIHsKKyAgdmFyIGNoYXJDb2RlOworICB2YXIga2V5Q29kZSA9IG5hdGl2ZUV2ZW50
LmtleUNvZGU7CisKKyAgaWYgKCdjaGFyQ29kZScgaW4gbmF0aXZlRXZlbnQpIHsKKyAgICBjaGFy
Q29kZSA9IG5hdGl2ZUV2ZW50LmNoYXJDb2RlOworCisgICAgLy8gRkYgZG9lcyBub3Qgc2V0IGBj
aGFyQ29kZWAgZm9yIHRoZSBFbnRlci1rZXksIGNoZWNrIGFnYWluc3QgYGtleUNvZGVgLgorICAg
IGlmIChjaGFyQ29kZSA9PT0gMCAmJiBrZXlDb2RlID09PSAxMykgeworICAgICAgY2hhckNvZGUg
PSAxMzsKKyAgICB9CisgIH0gZWxzZSB7CisgICAgLy8gSUU4IGRvZXMgbm90IGltcGxlbWVudCBg
Y2hhckNvZGVgLCBidXQgYGtleUNvZGVgIGhhcyB0aGUgY29ycmVjdCB2YWx1ZS4KKyAgICBjaGFy
Q29kZSA9IGtleUNvZGU7CisgIH0KKworICAvLyBTb21lIG5vbi1wcmludGFibGUga2V5cyBhcmUg
cmVwb3J0ZWQgaW4gYGNoYXJDb2RlYC9ga2V5Q29kZWAsIGRpc2NhcmQgdGhlbS4KKyAgLy8gTXVz
dCBub3QgZGlzY2FyZCB0aGUgKG5vbi0pcHJpbnRhYmxlIEVudGVyLWtleS4KKyAgaWYgKGNoYXJD
b2RlID49IDMyIHx8IGNoYXJDb2RlID09PSAxMykgeworICAgIHJldHVybiBjaGFyQ29kZTsKKyAg
fQorCisgIHJldHVybiAwOworfQorCittb2R1bGUuZXhwb3J0cyA9IGdldEV2ZW50Q2hhckNvZGU7
Cit9LHt9XSwxMTI6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBD
b3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qt
c3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBk
aXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2Yg
cGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2Ft
ZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIGdldEV2ZW50Q2hh
ckNvZGUgPSBfZGVyZXFfKDExMSk7CisKKy8qKgorICogTm9ybWFsaXphdGlvbiBvZiBkZXByZWNh
dGVkIEhUTUw1IGBrZXlgIHZhbHVlcworICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxh
Lm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvS2V5Ym9hcmRFdmVudCNLZXlfbmFtZXMKKyAqLwordmFy
IG5vcm1hbGl6ZUtleSA9IHsKKyAgJ0VzYyc6ICdFc2NhcGUnLAorICAnU3BhY2ViYXInOiAnICcs
CisgICdMZWZ0JzogJ0Fycm93TGVmdCcsCisgICdVcCc6ICdBcnJvd1VwJywKKyAgJ1JpZ2h0Jzog
J0Fycm93UmlnaHQnLAorICAnRG93bic6ICdBcnJvd0Rvd24nLAorICAnRGVsJzogJ0RlbGV0ZScs
CisgICdXaW4nOiAnT1MnLAorICAnTWVudSc6ICdDb250ZXh0TWVudScsCisgICdBcHBzJzogJ0Nv
bnRleHRNZW51JywKKyAgJ1Njcm9sbCc6ICdTY3JvbGxMb2NrJywKKyAgJ01velByaW50YWJsZUtl
eSc6ICdVbmlkZW50aWZpZWQnCit9OworCisvKioKKyAqIFRyYW5zbGF0aW9uIGZyb20gbGVnYWN5
IGBrZXlDb2RlYCB0byBIVE1MNSBga2V5YAorICogT25seSBzcGVjaWFsIGtleXMgc3VwcG9ydGVk
LCBhbGwgb3RoZXJzIGRlcGVuZCBvbiBrZXlib2FyZCBsYXlvdXQgb3IgYnJvd3NlcgorICogQHNl
ZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvS2V5Ym9h
cmRFdmVudCNLZXlfbmFtZXMKKyAqLwordmFyIHRyYW5zbGF0ZVRvS2V5ID0geworICA4OiAnQmFj
a3NwYWNlJywKKyAgOTogJ1RhYicsCisgIDEyOiAnQ2xlYXInLAorICAxMzogJ0VudGVyJywKKyAg
MTY6ICdTaGlmdCcsCisgIDE3OiAnQ29udHJvbCcsCisgIDE4OiAnQWx0JywKKyAgMTk6ICdQYXVz
ZScsCisgIDIwOiAnQ2Fwc0xvY2snLAorICAyNzogJ0VzY2FwZScsCisgIDMyOiAnICcsCisgIDMz
OiAnUGFnZVVwJywKKyAgMzQ6ICdQYWdlRG93bicsCisgIDM1OiAnRW5kJywKKyAgMzY6ICdIb21l
JywKKyAgMzc6ICdBcnJvd0xlZnQnLAorICAzODogJ0Fycm93VXAnLAorICAzOTogJ0Fycm93Umln
aHQnLAorICA0MDogJ0Fycm93RG93bicsCisgIDQ1OiAnSW5zZXJ0JywKKyAgNDY6ICdEZWxldGUn
LAorICAxMTI6ICdGMScsIDExMzogJ0YyJywgMTE0OiAnRjMnLCAxMTU6ICdGNCcsIDExNjogJ0Y1
JywgMTE3OiAnRjYnLAorICAxMTg6ICdGNycsIDExOTogJ0Y4JywgMTIwOiAnRjknLCAxMjE6ICdG
MTAnLCAxMjI6ICdGMTEnLCAxMjM6ICdGMTInLAorICAxNDQ6ICdOdW1Mb2NrJywKKyAgMTQ1OiAn
U2Nyb2xsTG9jaycsCisgIDIyNDogJ01ldGEnCit9OworCisvKioKKyAqIEBwYXJhbSB7b2JqZWN0
fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC4KKyAqIEByZXR1cm4ge3N0cmluZ30g
Tm9ybWFsaXplZCBga2V5YCBwcm9wZXJ0eS4KKyAqLworZnVuY3Rpb24gZ2V0RXZlbnRLZXkobmF0
aXZlRXZlbnQpIHsKKyAgaWYgKG5hdGl2ZUV2ZW50LmtleSkgeworICAgIC8vIE5vcm1hbGl6ZSBp
bmNvbnNpc3RlbnQgdmFsdWVzIHJlcG9ydGVkIGJ5IGJyb3dzZXJzIGR1ZSB0bworICAgIC8vIGlt
cGxlbWVudGF0aW9ucyBvZiBhIHdvcmtpbmcgZHJhZnQgc3BlY2lmaWNhdGlvbi4KKworICAgIC8v
IEZpcmVGb3ggaW1wbGVtZW50cyBga2V5YCBidXQgcmV0dXJucyBgTW96UHJpbnRhYmxlS2V5YCBm
b3IgYWxsCisgICAgLy8gcHJpbnRhYmxlIGNoYXJhY3RlcnMgKG5vcm1hbGl6ZWQgdG8gYFVuaWRl
bnRpZmllZGApLCBpZ25vcmUgaXQuCisgICAgdmFyIGtleSA9IG5vcm1hbGl6ZUtleVtuYXRpdmVF
dmVudC5rZXldIHx8IG5hdGl2ZUV2ZW50LmtleTsKKyAgICBpZiAoa2V5ICE9PSAnVW5pZGVudGlm
aWVkJykgeworICAgICAgcmV0dXJuIGtleTsKKyAgICB9CisgIH0KKworICAvLyBCcm93c2VyIGRv
ZXMgbm90IGltcGxlbWVudCBga2V5YCwgcG9seWZpbGwgYXMgbXVjaCBvZiBpdCBhcyB3ZSBjYW4u
CisgIGlmIChuYXRpdmVFdmVudC50eXBlID09PSAna2V5cHJlc3MnKSB7CisgICAgdmFyIGNoYXJD
b2RlID0gZ2V0RXZlbnRDaGFyQ29kZShuYXRpdmVFdmVudCk7CisKKyAgICAvLyBUaGUgZW50ZXIt
a2V5IGlzIHRlY2huaWNhbGx5IGJvdGggcHJpbnRhYmxlIGFuZCBub24tcHJpbnRhYmxlIGFuZCBj
YW4KKyAgICAvLyB0aHVzIGJlIGNhcHR1cmVkIGJ5IGBrZXlwcmVzc2AsIG5vIG90aGVyIG5vbi1w
cmludGFibGUga2V5IHNob3VsZC4KKyAgICByZXR1cm4gY2hhckNvZGUgPT09IDEzID8gJ0VudGVy
JyA6IFN0cmluZy5mcm9tQ2hhckNvZGUoY2hhckNvZGUpOworICB9CisgIGlmIChuYXRpdmVFdmVu
dC50eXBlID09PSAna2V5ZG93bicgfHwgbmF0aXZlRXZlbnQudHlwZSA9PT0gJ2tleXVwJykgewor
ICAgIC8vIFdoaWxlIHVzZXIga2V5Ym9hcmQgbGF5b3V0IGRldGVybWluZXMgdGhlIGFjdHVhbCBt
ZWFuaW5nIG9mIGVhY2gKKyAgICAvLyBga2V5Q29kZWAgdmFsdWUsIGFsbW9zdCBhbGwgZnVuY3Rp
b24ga2V5cyBoYXZlIGEgdW5pdmVyc2FsIHZhbHVlLgorICAgIHJldHVybiB0cmFuc2xhdGVUb0tl
eVtuYXRpdmVFdmVudC5rZXlDb2RlXSB8fCAnVW5pZGVudGlmaWVkJzsKKyAgfQorICByZXR1cm4g
Jyc7Cit9CisKK21vZHVsZS5leHBvcnRzID0gZ2V0RXZlbnRLZXk7Cit9LHsiMTExIjoxMTF9XSwx
MTM6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQg
MjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGlj
ZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkg
b2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJp
Z2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rv
cnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKworLyoqCisgKiBUcmFuc2xhdGlvbiBmcm9t
IG1vZGlmaWVyIGtleSB0byB0aGUgYXNzb2NpYXRlZCBwcm9wZXJ0eSBpbiB0aGUgZXZlbnQuCisg
KiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy8ja2V5cy1Nb2Rp
ZmllcnMKKyAqLworCit2YXIgbW9kaWZpZXJLZXlUb1Byb3AgPSB7CisgICdBbHQnOiAnYWx0S2V5
JywKKyAgJ0NvbnRyb2wnOiAnY3RybEtleScsCisgICdNZXRhJzogJ21ldGFLZXknLAorICAnU2hp
ZnQnOiAnc2hpZnRLZXknCit9OworCisvLyBJRTggZG9lcyBub3QgaW1wbGVtZW50IGdldE1vZGlm
aWVyU3RhdGUgc28gd2Ugc2ltcGx5IG1hcCBpdCB0byB0aGUgb25seQorLy8gbW9kaWZpZXIga2V5
cyBleHBvc2VkIGJ5IHRoZSBldmVudCBpdHNlbGYsIGRvZXMgbm90IHN1cHBvcnQgTG9jay1rZXlz
LgorLy8gQ3VycmVudGx5LCBhbGwgbWFqb3IgYnJvd3NlcnMgZXhjZXB0IENocm9tZSBzZWVtcyB0
byBzdXBwb3J0IExvY2sta2V5cy4KK2Z1bmN0aW9uIG1vZGlmaWVyU3RhdGVHZXR0ZXIoa2V5QXJn
KSB7CisgIHZhciBzeW50aGV0aWNFdmVudCA9IHRoaXM7CisgIHZhciBuYXRpdmVFdmVudCA9IHN5
bnRoZXRpY0V2ZW50Lm5hdGl2ZUV2ZW50OworICBpZiAobmF0aXZlRXZlbnQuZ2V0TW9kaWZpZXJT
dGF0ZSkgeworICAgIHJldHVybiBuYXRpdmVFdmVudC5nZXRNb2RpZmllclN0YXRlKGtleUFyZyk7
CisgIH0KKyAgdmFyIGtleVByb3AgPSBtb2RpZmllcktleVRvUHJvcFtrZXlBcmddOworICByZXR1
cm4ga2V5UHJvcCA/ICEhbmF0aXZlRXZlbnRba2V5UHJvcF0gOiBmYWxzZTsKK30KKworZnVuY3Rp
b24gZ2V0RXZlbnRNb2RpZmllclN0YXRlKG5hdGl2ZUV2ZW50KSB7CisgIHJldHVybiBtb2RpZmll
clN0YXRlR2V0dGVyOworfQorCittb2R1bGUuZXhwb3J0cyA9IGdldEV2ZW50TW9kaWZpZXJTdGF0
ZTsKK30se31dLDExNDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAq
IENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCisvKioKKyAqIEdldHMg
dGhlIHRhcmdldCBub2RlIGZyb20gYSBuYXRpdmUgYnJvd3NlciBldmVudCBieSBhY2NvdW50aW5n
IGZvcgorICogaW5jb25zaXN0ZW5jaWVzIGluIGJyb3dzZXIgRE9NIEFQSXMuCisgKgorICogQHBh
cmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LgorICogQHJldHVy
biB7RE9NRXZlbnRUYXJnZXR9IFRhcmdldCBub2RlLgorICovCisKK2Z1bmN0aW9uIGdldEV2ZW50
VGFyZ2V0KG5hdGl2ZUV2ZW50KSB7CisgIHZhciB0YXJnZXQgPSBuYXRpdmVFdmVudC50YXJnZXQg
fHwgbmF0aXZlRXZlbnQuc3JjRWxlbWVudCB8fCB3aW5kb3c7CisKKyAgLy8gTm9ybWFsaXplIFNW
RyA8dXNlPiBlbGVtZW50IGV2ZW50cyAjNDk2MworICBpZiAodGFyZ2V0LmNvcnJlc3BvbmRpbmdV
c2VFbGVtZW50KSB7CisgICAgdGFyZ2V0ID0gdGFyZ2V0LmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50
OworICB9CisKKyAgLy8gU2FmYXJpIG1heSBmaXJlIGV2ZW50cyBvbiB0ZXh0IG5vZGVzIChOb2Rl
LlRFWFRfTk9ERSBpcyAzKS4KKyAgLy8gQHNlZSBodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2pz
L2V2ZW50c19wcm9wZXJ0aWVzLmh0bWwKKyAgcmV0dXJuIHRhcmdldC5ub2RlVHlwZSA9PT0gMyA/
IHRhcmdldC5wYXJlbnROb2RlIDogdGFyZ2V0OworfQorCittb2R1bGUuZXhwb3J0cyA9IGdldEV2
ZW50VGFyZ2V0OworfSx7fV0sMTE1OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsK
Ky8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRl
ciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3Jh
bnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUg
aW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBS
ZWFjdE5vZGVUeXBlcyA9IF9kZXJlcV8oNjkpOworCitmdW5jdGlvbiBnZXRIb3N0Q29tcG9uZW50
RnJvbUNvbXBvc2l0ZShpbnN0KSB7CisgIHZhciB0eXBlOworCisgIHdoaWxlICgodHlwZSA9IGlu
c3QuX3JlbmRlcmVkTm9kZVR5cGUpID09PSBSZWFjdE5vZGVUeXBlcy5DT01QT1NJVEUpIHsKKyAg
ICBpbnN0ID0gaW5zdC5fcmVuZGVyZWRDb21wb25lbnQ7CisgIH0KKworICBpZiAodHlwZSA9PT0g
UmVhY3ROb2RlVHlwZXMuSE9TVCkgeworICAgIHJldHVybiBpbnN0Ll9yZW5kZXJlZENvbXBvbmVu
dDsKKyAgfSBlbHNlIGlmICh0eXBlID09PSBSZWFjdE5vZGVUeXBlcy5FTVBUWSkgeworICAgIHJl
dHVybiBudWxsOworICB9Cit9CisKK21vZHVsZS5leHBvcnRzID0gZ2V0SG9zdENvbXBvbmVudEZy
b21Db21wb3NpdGU7Cit9LHsiNjkiOjY5fV0sMTE2OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxl
eHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4K
KyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNl
bnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0
aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRF
TlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIAorICovCisKKyd1c2Ugc3Ry
aWN0JzsKKworLyogZ2xvYmFsIFN5bWJvbCAqLworCit2YXIgSVRFUkFUT1JfU1lNQk9MID0gdHlw
ZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiBTeW1ib2wuaXRlcmF0b3I7Cit2YXIgRkFVWF9J
VEVSQVRPUl9TWU1CT0wgPSAnQEBpdGVyYXRvcic7IC8vIEJlZm9yZSBTeW1ib2wgc3BlYy4KKwor
LyoqCisgKiBSZXR1cm5zIHRoZSBpdGVyYXRvciBtZXRob2QgZnVuY3Rpb24gY29udGFpbmVkIG9u
IHRoZSBpdGVyYWJsZSBvYmplY3QuCisgKgorICogQmUgc3VyZSB0byBpbnZva2UgdGhlIGZ1bmN0
aW9uIHdpdGggdGhlIGl0ZXJhYmxlIGFzIGNvbnRleHQ6CisgKgorICogICAgIHZhciBpdGVyYXRv
ckZuID0gZ2V0SXRlcmF0b3JGbihteUl0ZXJhYmxlKTsKKyAqICAgICBpZiAoaXRlcmF0b3JGbikg
eworICogICAgICAgdmFyIGl0ZXJhdG9yID0gaXRlcmF0b3JGbi5jYWxsKG15SXRlcmFibGUpOwor
ICogICAgICAgLi4uCisgKiAgICAgfQorICoKKyAqIEBwYXJhbSB7P29iamVjdH0gbWF5YmVJdGVy
YWJsZQorICogQHJldHVybiB7P2Z1bmN0aW9ufQorICovCitmdW5jdGlvbiBnZXRJdGVyYXRvckZu
KG1heWJlSXRlcmFibGUpIHsKKyAgdmFyIGl0ZXJhdG9yRm4gPSBtYXliZUl0ZXJhYmxlICYmIChJ
VEVSQVRPUl9TWU1CT0wgJiYgbWF5YmVJdGVyYWJsZVtJVEVSQVRPUl9TWU1CT0xdIHx8IG1heWJl
SXRlcmFibGVbRkFVWF9JVEVSQVRPUl9TWU1CT0xdKTsKKyAgaWYgKHR5cGVvZiBpdGVyYXRvckZu
ID09PSAnZnVuY3Rpb24nKSB7CisgICAgcmV0dXJuIGl0ZXJhdG9yRm47CisgIH0KK30KKworbW9k
dWxlLmV4cG9ydHMgPSBnZXRJdGVyYXRvckZuOworfSx7fV0sMTE3OltmdW5jdGlvbihfZGVyZXFf
LG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJv
b2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29k
ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisg
KiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUu
IEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIAorICovCisK
Kyd1c2Ugc3RyaWN0JzsKKwordmFyIG5leHREZWJ1Z0lEID0gMTsKKworZnVuY3Rpb24gZ2V0TmV4
dERlYnVnSUQoKSB7CisgIHJldHVybiBuZXh0RGVidWdJRCsrOworfQorCittb2R1bGUuZXhwb3J0
cyA9IGdldE5leHREZWJ1Z0lEOworfSx7fV0sMTE4OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxl
eHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4K
KyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNl
bnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0
aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRF
TlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7
CisKKy8qKgorICogR2l2ZW4gYW55IG5vZGUgcmV0dXJuIHRoZSBmaXJzdCBsZWFmIG5vZGUgd2l0
aG91dCBjaGlsZHJlbi4KKyAqCisgKiBAcGFyYW0ge0RPTUVsZW1lbnR8RE9NVGV4dE5vZGV9IG5v
ZGUKKyAqIEByZXR1cm4ge0RPTUVsZW1lbnR8RE9NVGV4dE5vZGV9CisgKi8KKworZnVuY3Rpb24g
Z2V0TGVhZk5vZGUobm9kZSkgeworICB3aGlsZSAobm9kZSAmJiBub2RlLmZpcnN0Q2hpbGQpIHsK
KyAgICBub2RlID0gbm9kZS5maXJzdENoaWxkOworICB9CisgIHJldHVybiBub2RlOworfQorCisv
KioKKyAqIEdldCB0aGUgbmV4dCBzaWJsaW5nIHdpdGhpbiBhIGNvbnRhaW5lci4gVGhpcyB3aWxs
IHdhbGsgdXAgdGhlCisgKiBET00gaWYgYSBub2RlJ3Mgc2libGluZ3MgaGF2ZSBiZWVuIGV4aGF1
c3RlZC4KKyAqCisgKiBAcGFyYW0ge0RPTUVsZW1lbnR8RE9NVGV4dE5vZGV9IG5vZGUKKyAqIEBy
ZXR1cm4gez9ET01FbGVtZW50fERPTVRleHROb2RlfQorICovCitmdW5jdGlvbiBnZXRTaWJsaW5n
Tm9kZShub2RlKSB7CisgIHdoaWxlIChub2RlKSB7CisgICAgaWYgKG5vZGUubmV4dFNpYmxpbmcp
IHsKKyAgICAgIHJldHVybiBub2RlLm5leHRTaWJsaW5nOworICAgIH0KKyAgICBub2RlID0gbm9k
ZS5wYXJlbnROb2RlOworICB9Cit9CisKKy8qKgorICogR2V0IG9iamVjdCBkZXNjcmliaW5nIHRo
ZSBub2RlcyB3aGljaCBjb250YWluIGNoYXJhY3RlcnMgYXQgb2Zmc2V0LgorICoKKyAqIEBwYXJh
bSB7RE9NRWxlbWVudHxET01UZXh0Tm9kZX0gcm9vdAorICogQHBhcmFtIHtudW1iZXJ9IG9mZnNl
dAorICogQHJldHVybiB7P29iamVjdH0KKyAqLworZnVuY3Rpb24gZ2V0Tm9kZUZvckNoYXJhY3Rl
ck9mZnNldChyb290LCBvZmZzZXQpIHsKKyAgdmFyIG5vZGUgPSBnZXRMZWFmTm9kZShyb290KTsK
KyAgdmFyIG5vZGVTdGFydCA9IDA7CisgIHZhciBub2RlRW5kID0gMDsKKworICB3aGlsZSAobm9k
ZSkgeworICAgIGlmIChub2RlLm5vZGVUeXBlID09PSAzKSB7CisgICAgICBub2RlRW5kID0gbm9k
ZVN0YXJ0ICsgbm9kZS50ZXh0Q29udGVudC5sZW5ndGg7CisKKyAgICAgIGlmIChub2RlU3RhcnQg
PD0gb2Zmc2V0ICYmIG5vZGVFbmQgPj0gb2Zmc2V0KSB7CisgICAgICAgIHJldHVybiB7CisgICAg
ICAgICAgbm9kZTogbm9kZSwKKyAgICAgICAgICBvZmZzZXQ6IG9mZnNldCAtIG5vZGVTdGFydAor
ICAgICAgICB9OworICAgICAgfQorCisgICAgICBub2RlU3RhcnQgPSBub2RlRW5kOworICAgIH0K
KworICAgIG5vZGUgPSBnZXRMZWFmTm9kZShnZXRTaWJsaW5nTm9kZShub2RlKSk7CisgIH0KK30K
KworbW9kdWxlLmV4cG9ydHMgPSBnZXROb2RlRm9yQ2hhcmFjdGVyT2Zmc2V0OworfSx7fV0sMTE5
OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIw
MTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vu
c2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9m
IHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdo
dHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5
LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9
IF9kZXJlcV8oMTM2KTsKKwordmFyIGNvbnRlbnRLZXkgPSBudWxsOworCisvKioKKyAqIEdldHMg
dGhlIGtleSB1c2VkIHRvIGFjY2VzcyB0ZXh0IGNvbnRlbnQgb24gYSBET00gbm9kZS4KKyAqCisg
KiBAcmV0dXJuIHs/c3RyaW5nfSBLZXkgdXNlZCB0byBhY2Nlc3MgdGV4dCBjb250ZW50LgorICog
QGludGVybmFsCisgKi8KK2Z1bmN0aW9uIGdldFRleHRDb250ZW50QWNjZXNzb3IoKSB7CisgIGlm
ICghY29udGVudEtleSAmJiBFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00pIHsKKyAgICAv
LyBQcmVmZXIgdGV4dENvbnRlbnQgdG8gaW5uZXJUZXh0IGJlY2F1c2UgbWFueSBicm93c2VycyBz
dXBwb3J0IGJvdGggYnV0CisgICAgLy8gU1ZHIDx0ZXh0PiBlbGVtZW50cyBkb24ndCBzdXBwb3J0
IGlubmVyVGV4dCBldmVuIHdoZW4gPGRpdj4gZG9lcy4KKyAgICBjb250ZW50S2V5ID0gJ3RleHRD
b250ZW50JyBpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgPyAndGV4dENvbnRlbnQnIDogJ2lu
bmVyVGV4dCc7CisgIH0KKyAgcmV0dXJuIGNvbnRlbnRLZXk7Cit9CisKK21vZHVsZS5leHBvcnRz
ID0gZ2V0VGV4dENvbnRlbnRBY2Nlc3NvcjsKK30seyIxMzYiOjEzNn1dLDEyMDpbZnVuY3Rpb24o
X2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQs
IEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291
cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGlu
IHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJj
ZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBm
b3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8K
KworJ3VzZSBzdHJpY3QnOworCit2YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSBfZGVyZXFfKDEz
Nik7CisKKy8qKgorICogR2VuZXJhdGUgYSBtYXBwaW5nIG9mIHN0YW5kYXJkIHZlbmRvciBwcmVm
aXhlcyB1c2luZyB0aGUgZGVmaW5lZCBzdHlsZSBwcm9wZXJ0eSBhbmQgZXZlbnQgbmFtZS4KKyAq
CisgKiBAcGFyYW0ge3N0cmluZ30gc3R5bGVQcm9wCisgKiBAcGFyYW0ge3N0cmluZ30gZXZlbnRO
YW1lCisgKiBAcmV0dXJucyB7b2JqZWN0fQorICovCitmdW5jdGlvbiBtYWtlUHJlZml4TWFwKHN0
eWxlUHJvcCwgZXZlbnROYW1lKSB7CisgIHZhciBwcmVmaXhlcyA9IHt9OworCisgIHByZWZpeGVz
W3N0eWxlUHJvcC50b0xvd2VyQ2FzZSgpXSA9IGV2ZW50TmFtZS50b0xvd2VyQ2FzZSgpOworICBw
cmVmaXhlc1snV2Via2l0JyArIHN0eWxlUHJvcF0gPSAnd2Via2l0JyArIGV2ZW50TmFtZTsKKyAg
cHJlZml4ZXNbJ01veicgKyBzdHlsZVByb3BdID0gJ21veicgKyBldmVudE5hbWU7CisgIHByZWZp
eGVzWydtcycgKyBzdHlsZVByb3BdID0gJ01TJyArIGV2ZW50TmFtZTsKKyAgcHJlZml4ZXNbJ08n
ICsgc3R5bGVQcm9wXSA9ICdvJyArIGV2ZW50TmFtZS50b0xvd2VyQ2FzZSgpOworCisgIHJldHVy
biBwcmVmaXhlczsKK30KKworLyoqCisgKiBBIGxpc3Qgb2YgZXZlbnQgbmFtZXMgdG8gYSBjb25m
aWd1cmFibGUgbGlzdCBvZiB2ZW5kb3IgcHJlZml4ZXMuCisgKi8KK3ZhciB2ZW5kb3JQcmVmaXhl
cyA9IHsKKyAgYW5pbWF0aW9uZW5kOiBtYWtlUHJlZml4TWFwKCdBbmltYXRpb24nLCAnQW5pbWF0
aW9uRW5kJyksCisgIGFuaW1hdGlvbml0ZXJhdGlvbjogbWFrZVByZWZpeE1hcCgnQW5pbWF0aW9u
JywgJ0FuaW1hdGlvbkl0ZXJhdGlvbicpLAorICBhbmltYXRpb25zdGFydDogbWFrZVByZWZpeE1h
cCgnQW5pbWF0aW9uJywgJ0FuaW1hdGlvblN0YXJ0JyksCisgIHRyYW5zaXRpb25lbmQ6IG1ha2VQ
cmVmaXhNYXAoJ1RyYW5zaXRpb24nLCAnVHJhbnNpdGlvbkVuZCcpCit9OworCisvKioKKyAqIEV2
ZW50IG5hbWVzIHRoYXQgaGF2ZSBhbHJlYWR5IGJlZW4gZGV0ZWN0ZWQgYW5kIHByZWZpeGVkIChp
ZiBhcHBsaWNhYmxlKS4KKyAqLwordmFyIHByZWZpeGVkRXZlbnROYW1lcyA9IHt9OworCisvKioK
KyAqIEVsZW1lbnQgdG8gY2hlY2sgZm9yIHByZWZpeGVzIG9uLgorICovCit2YXIgc3R5bGUgPSB7
fTsKKworLyoqCisgKiBCb290c3RyYXAgaWYgYSBET00gZXhpc3RzLgorICovCitpZiAoRXhlY3V0
aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NKSB7CisgIHN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnZGl2Jykuc3R5bGU7CisKKyAgLy8gT24gc29tZSBwbGF0Zm9ybXMsIGluIHBhcnRpY3Vs
YXIgc29tZSByZWxlYXNlcyBvZiBBbmRyb2lkIDQueCwKKyAgLy8gdGhlIHVuLXByZWZpeGVkICJh
bmltYXRpb24iIGFuZCAidHJhbnNpdGlvbiIgcHJvcGVydGllcyBhcmUgZGVmaW5lZCBvbiB0aGUK
KyAgLy8gc3R5bGUgb2JqZWN0IGJ1dCB0aGUgZXZlbnRzIHRoYXQgZmlyZSB3aWxsIHN0aWxsIGJl
IHByZWZpeGVkLCBzbyB3ZSBuZWVkCisgIC8vIHRvIGNoZWNrIGlmIHRoZSB1bi1wcmVmaXhlZCBl
dmVudHMgYXJlIHVzYWJsZSwgYW5kIGlmIG5vdCByZW1vdmUgdGhlbSBmcm9tIHRoZSBtYXAuCisg
IGlmICghKCdBbmltYXRpb25FdmVudCcgaW4gd2luZG93KSkgeworICAgIGRlbGV0ZSB2ZW5kb3JQ
cmVmaXhlcy5hbmltYXRpb25lbmQuYW5pbWF0aW9uOworICAgIGRlbGV0ZSB2ZW5kb3JQcmVmaXhl
cy5hbmltYXRpb25pdGVyYXRpb24uYW5pbWF0aW9uOworICAgIGRlbGV0ZSB2ZW5kb3JQcmVmaXhl
cy5hbmltYXRpb25zdGFydC5hbmltYXRpb247CisgIH0KKworICAvLyBTYW1lIGFzIGFib3ZlCisg
IGlmICghKCdUcmFuc2l0aW9uRXZlbnQnIGluIHdpbmRvdykpIHsKKyAgICBkZWxldGUgdmVuZG9y
UHJlZml4ZXMudHJhbnNpdGlvbmVuZC50cmFuc2l0aW9uOworICB9Cit9CisKKy8qKgorICogQXR0
ZW1wdHMgdG8gZGV0ZXJtaW5lIHRoZSBjb3JyZWN0IHZlbmRvciBwcmVmaXhlZCBldmVudCBuYW1l
LgorICoKKyAqIEBwYXJhbSB7c3RyaW5nfSBldmVudE5hbWUKKyAqIEByZXR1cm5zIHtzdHJpbmd9
CisgKi8KK2Z1bmN0aW9uIGdldFZlbmRvclByZWZpeGVkRXZlbnROYW1lKGV2ZW50TmFtZSkgewor
ICBpZiAocHJlZml4ZWRFdmVudE5hbWVzW2V2ZW50TmFtZV0pIHsKKyAgICByZXR1cm4gcHJlZml4
ZWRFdmVudE5hbWVzW2V2ZW50TmFtZV07CisgIH0gZWxzZSBpZiAoIXZlbmRvclByZWZpeGVzW2V2
ZW50TmFtZV0pIHsKKyAgICByZXR1cm4gZXZlbnROYW1lOworICB9CisKKyAgdmFyIHByZWZpeE1h
cCA9IHZlbmRvclByZWZpeGVzW2V2ZW50TmFtZV07CisKKyAgZm9yICh2YXIgc3R5bGVQcm9wIGlu
IHByZWZpeE1hcCkgeworICAgIGlmIChwcmVmaXhNYXAuaGFzT3duUHJvcGVydHkoc3R5bGVQcm9w
KSAmJiBzdHlsZVByb3AgaW4gc3R5bGUpIHsKKyAgICAgIHJldHVybiBwcmVmaXhlZEV2ZW50TmFt
ZXNbZXZlbnROYW1lXSA9IHByZWZpeE1hcFtzdHlsZVByb3BdOworICAgIH0KKyAgfQorCisgIHJl
dHVybiAnJzsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBnZXRWZW5kb3JQcmVmaXhlZEV2ZW50TmFt
ZTsKK30seyIxMzYiOjEzNn1dLDEyMTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7
CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5k
ZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdy
YW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxl
IGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIg
X3Byb2RJbnZhcmlhbnQgPSBfZGVyZXFfKDEyNSksCisgICAgX2Fzc2lnbiA9IF9kZXJlcV8oMTU4
KTsKKwordmFyIFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50ID0gX2RlcmVxXygzMCk7Cit2YXIgUmVh
Y3RFbXB0eUNvbXBvbmVudCA9IF9kZXJlcV8oNTQpOwordmFyIFJlYWN0SG9zdENvbXBvbmVudCA9
IF9kZXJlcV8oNTkpOworCit2YXIgZ2V0TmV4dERlYnVnSUQgPSBfZGVyZXFfKDExNyk7Cit2YXIg
aW52YXJpYW50ID0gX2RlcmVxXygxNTApOwordmFyIHdhcm5pbmcgPSBfZGVyZXFfKDE1Nyk7CisK
Ky8vIFRvIGF2b2lkIGEgY3ljbGljIGRlcGVuZGVuY3ksIHdlIGNyZWF0ZSB0aGUgZmluYWwgY2xh
c3MgaW4gdGhpcyBtb2R1bGUKK3ZhciBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudFdyYXBwZXIgPSBm
dW5jdGlvbiAoZWxlbWVudCkgeworICB0aGlzLmNvbnN0cnVjdChlbGVtZW50KTsKK307CitfYXNz
aWduKFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50V3JhcHBlci5wcm90b3R5cGUsIFJlYWN0Q29tcG9z
aXRlQ29tcG9uZW50LCB7CisgIF9pbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50OiBpbnN0YW50aWF0
ZVJlYWN0Q29tcG9uZW50Cit9KTsKKworZnVuY3Rpb24gZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVu
ZHVtKG93bmVyKSB7CisgIGlmIChvd25lcikgeworICAgIHZhciBuYW1lID0gb3duZXIuZ2V0TmFt
ZSgpOworICAgIGlmIChuYW1lKSB7CisgICAgICByZXR1cm4gJyBDaGVjayB0aGUgcmVuZGVyIG1l
dGhvZCBvZiBgJyArIG5hbWUgKyAnYC4nOworICAgIH0KKyAgfQorICByZXR1cm4gJyc7Cit9CisK
Ky8qKgorICogQ2hlY2sgaWYgdGhlIHR5cGUgcmVmZXJlbmNlIGlzIGEga25vd24gaW50ZXJuYWwg
dHlwZS4gSS5lLiBub3QgYSB1c2VyCisgKiBwcm92aWRlZCBjb21wb3NpdGUgdHlwZS4KKyAqCisg
KiBAcGFyYW0ge2Z1bmN0aW9ufSB0eXBlCisgKiBAcmV0dXJuIHtib29sZWFufSBSZXR1cm5zIHRy
dWUgaWYgdGhpcyBpcyBhIHZhbGlkIGludGVybmFsIHR5cGUuCisgKi8KK2Z1bmN0aW9uIGlzSW50
ZXJuYWxDb21wb25lbnRUeXBlKHR5cGUpIHsKKyAgcmV0dXJuIHR5cGVvZiB0eXBlID09PSAnZnVu
Y3Rpb24nICYmIHR5cGVvZiB0eXBlLnByb3RvdHlwZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9m
IHR5cGUucHJvdG90eXBlLm1vdW50Q29tcG9uZW50ID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiB0
eXBlLnByb3RvdHlwZS5yZWNlaXZlQ29tcG9uZW50ID09PSAnZnVuY3Rpb24nOworfQorCisvKioK
KyAqIEdpdmVuIGEgUmVhY3ROb2RlLCBjcmVhdGUgYW4gaW5zdGFuY2UgdGhhdCB3aWxsIGFjdHVh
bGx5IGJlIG1vdW50ZWQuCisgKgorICogQHBhcmFtIHtSZWFjdE5vZGV9IG5vZGUKKyAqIEBwYXJh
bSB7Ym9vbGVhbn0gc2hvdWxkSGF2ZURlYnVnSUQKKyAqIEByZXR1cm4ge29iamVjdH0gQSBuZXcg
aW5zdGFuY2Ugb2YgdGhlIGVsZW1lbnQncyBjb25zdHJ1Y3Rvci4KKyAqIEBwcm90ZWN0ZWQKKyAq
LworZnVuY3Rpb24gaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudChub2RlLCBzaG91bGRIYXZlRGVi
dWdJRCkgeworICB2YXIgaW5zdGFuY2U7CisKKyAgaWYgKG5vZGUgPT09IG51bGwgfHwgbm9kZSA9
PT0gZmFsc2UpIHsKKyAgICBpbnN0YW5jZSA9IFJlYWN0RW1wdHlDb21wb25lbnQuY3JlYXRlKGlu
c3RhbnRpYXRlUmVhY3RDb21wb25lbnQpOworICB9IGVsc2UgaWYgKHR5cGVvZiBub2RlID09PSAn
b2JqZWN0JykgeworICAgIHZhciBlbGVtZW50ID0gbm9kZTsKKyAgICAhKGVsZW1lbnQgJiYgKHR5
cGVvZiBlbGVtZW50LnR5cGUgPT09ICdmdW5jdGlvbicgfHwgdHlwZW9mIGVsZW1lbnQudHlwZSA9
PT0gJ3N0cmluZycpKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFu
dChmYWxzZSwgJ0VsZW1lbnQgdHlwZSBpcyBpbnZhbGlkOiBleHBlY3RlZCBhIHN0cmluZyAoZm9y
IGJ1aWx0LWluIGNvbXBvbmVudHMpIG9yIGEgY2xhc3MvZnVuY3Rpb24gKGZvciBjb21wb3NpdGUg
Y29tcG9uZW50cykgYnV0IGdvdDogJXMuJXMnLCBlbGVtZW50LnR5cGUgPT0gbnVsbCA/IGVsZW1l
bnQudHlwZSA6IHR5cGVvZiBlbGVtZW50LnR5cGUsIGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1
bShlbGVtZW50Ll9vd25lcikpIDogX3Byb2RJbnZhcmlhbnQoJzEzMCcsIGVsZW1lbnQudHlwZSA9
PSBudWxsID8gZWxlbWVudC50eXBlIDogdHlwZW9mIGVsZW1lbnQudHlwZSwgZ2V0RGVjbGFyYXRp
b25FcnJvckFkZGVuZHVtKGVsZW1lbnQuX293bmVyKSkgOiB2b2lkIDA7CisKKyAgICAvLyBTcGVj
aWFsIGNhc2Ugc3RyaW5nIHZhbHVlcworICAgIGlmICh0eXBlb2YgZWxlbWVudC50eXBlID09PSAn
c3RyaW5nJykgeworICAgICAgaW5zdGFuY2UgPSBSZWFjdEhvc3RDb21wb25lbnQuY3JlYXRlSW50
ZXJuYWxDb21wb25lbnQoZWxlbWVudCk7CisgICAgfSBlbHNlIGlmIChpc0ludGVybmFsQ29tcG9u
ZW50VHlwZShlbGVtZW50LnR5cGUpKSB7CisgICAgICAvLyBUaGlzIGlzIHRlbXBvcmFyaWx5IGF2
YWlsYWJsZSBmb3IgY3VzdG9tIGNvbXBvbmVudHMgdGhhdCBhcmUgbm90IHN0cmluZworICAgICAg
Ly8gcmVwcmVzZW50YXRpb25zLiBJLmUuIEFSVC4gT25jZSB0aG9zZSBhcmUgdXBkYXRlZCB0byB1
c2UgdGhlIHN0cmluZworICAgICAgLy8gcmVwcmVzZW50YXRpb24sIHdlIGNhbiBkcm9wIHRoaXMg
Y29kZSBwYXRoLgorICAgICAgaW5zdGFuY2UgPSBuZXcgZWxlbWVudC50eXBlKGVsZW1lbnQpOwor
CisgICAgICAvLyBXZSByZW5hbWVkIHRoaXMuIEFsbG93IHRoZSBvbGQgbmFtZSBmb3IgY29tcGF0
LiA6KAorICAgICAgaWYgKCFpbnN0YW5jZS5nZXRIb3N0Tm9kZSkgeworICAgICAgICBpbnN0YW5j
ZS5nZXRIb3N0Tm9kZSA9IGluc3RhbmNlLmdldE5hdGl2ZU5vZGU7CisgICAgICB9CisgICAgfSBl
bHNlIHsKKyAgICAgIGluc3RhbmNlID0gbmV3IFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50V3JhcHBl
cihlbGVtZW50KTsKKyAgICB9CisgIH0gZWxzZSBpZiAodHlwZW9mIG5vZGUgPT09ICdzdHJpbmcn
IHx8IHR5cGVvZiBub2RlID09PSAnbnVtYmVyJykgeworICAgIGluc3RhbmNlID0gUmVhY3RIb3N0
Q29tcG9uZW50LmNyZWF0ZUluc3RhbmNlRm9yVGV4dChub2RlKTsKKyAgfSBlbHNlIHsKKyAgICAh
ZmFsc2UgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2Us
ICdFbmNvdW50ZXJlZCBpbnZhbGlkIFJlYWN0IG5vZGUgb2YgdHlwZSAlcycsIHR5cGVvZiBub2Rl
KSA6IF9wcm9kSW52YXJpYW50KCcxMzEnLCB0eXBlb2Ygbm9kZSkgOiB2b2lkIDA7CisgIH0KKwor
ICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgImRldmVsb3BtZW50
IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyh0eXBlb2YgaW5zdGFuY2UubW91bnRDb21wb25l
bnQgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIGluc3RhbmNlLnJlY2VpdmVDb21wb25lbnQgPT09
ICdmdW5jdGlvbicgJiYgdHlwZW9mIGluc3RhbmNlLmdldEhvc3ROb2RlID09PSAnZnVuY3Rpb24n
ICYmIHR5cGVvZiBpbnN0YW5jZS51bm1vdW50Q29tcG9uZW50ID09PSAnZnVuY3Rpb24nLCAnT25s
eSBSZWFjdCBDb21wb25lbnRzIGNhbiBiZSBtb3VudGVkLicpIDogdm9pZCAwOworICB9CisKKyAg
Ly8gVGhlc2UgdHdvIGZpZWxkcyBhcmUgdXNlZCBieSB0aGUgRE9NIGFuZCBBUlQgZGlmZmluZyBh
bGdvcml0aG1zCisgIC8vIHJlc3BlY3RpdmVseS4gSW5zdGVhZCBvZiB1c2luZyBleHBhbmRvcyBv
biBjb21wb25lbnRzLCB3ZSBzaG91bGQgYmUKKyAgLy8gc3RvcmluZyB0aGUgc3RhdGUgbmVlZGVk
IGJ5IHRoZSBkaWZmaW5nIGFsZ29yaXRobXMgZWxzZXdoZXJlLgorICBpbnN0YW5jZS5fbW91bnRJ
bmRleCA9IDA7CisgIGluc3RhbmNlLl9tb3VudEltYWdlID0gbnVsbDsKKworICBpZiAoImRldmVs
b3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgaW5zdGFuY2UuX2RlYnVnSUQgPSBzaG91
bGRIYXZlRGVidWdJRCA/IGdldE5leHREZWJ1Z0lEKCkgOiAwOworICB9CisKKyAgLy8gSW50ZXJu
YWwgaW5zdGFuY2VzIHNob3VsZCBmdWxseSBjb25zdHJ1Y3RlZCBhdCB0aGlzIHBvaW50LCBzbyB0
aGV5IHNob3VsZAorICAvLyBub3QgZ2V0IGFueSBuZXcgZmllbGRzIGFkZGVkIHRvIHRoZW0gYXQg
dGhpcyBwb2ludC4KKyAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAg
IGlmIChPYmplY3QucHJldmVudEV4dGVuc2lvbnMpIHsKKyAgICAgIE9iamVjdC5wcmV2ZW50RXh0
ZW5zaW9ucyhpbnN0YW5jZSk7CisgICAgfQorICB9CisKKyAgcmV0dXJuIGluc3RhbmNlOworfQor
Cittb2R1bGUuZXhwb3J0cyA9IGluc3RhbnRpYXRlUmVhY3RDb21wb25lbnQ7Cit9LHsiMTE3Ijox
MTcsIjEyNSI6MTI1LCIxNTAiOjE1MCwiMTU3IjoxNTcsIjE1OCI6MTU4LCIzMCI6MzAsIjU0Ijo1
NCwiNTkiOjU5fV0sMTIyOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgor
ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUg
QlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAq
IG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhl
IHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBFeGVjdXRp
b25FbnZpcm9ubWVudCA9IF9kZXJlcV8oMTM2KTsKKwordmFyIHVzZUhhc0ZlYXR1cmU7CitpZiAo
RXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NKSB7CisgIHVzZUhhc0ZlYXR1cmUgPSBkb2N1
bWVudC5pbXBsZW1lbnRhdGlvbiAmJiBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5oYXNGZWF0dXJl
ICYmCisgIC8vIGFsd2F5cyByZXR1cm5zIHRydWUgaW4gbmV3ZXIgYnJvd3NlcnMgYXMgcGVyIHRo
ZSBzdGFuZGFyZC4KKyAgLy8gQHNlZSBodHRwOi8vZG9tLnNwZWMud2hhdHdnLm9yZy8jZG9tLWRv
bWltcGxlbWVudGF0aW9uLWhhc2ZlYXR1cmUKKyAgZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uaGFz
RmVhdHVyZSgnJywgJycpICE9PSB0cnVlOworfQorCisvKioKKyAqIENoZWNrcyBpZiBhbiBldmVu
dCBpcyBzdXBwb3J0ZWQgaW4gdGhlIGN1cnJlbnQgZXhlY3V0aW9uIGVudmlyb25tZW50LgorICoK
KyAqIE5PVEU6IFRoaXMgd2lsbCBub3Qgd29yayBjb3JyZWN0bHkgZm9yIG5vbi1nZW5lcmljIGV2
ZW50cyBzdWNoIGFzIGBjaGFuZ2VgLAorICogYHJlc2V0YCwgYGxvYWRgLCBgZXJyb3JgLCBhbmQg
YHNlbGVjdGAuCisgKgorICogQm9ycm93cyBmcm9tIE1vZGVybml6ci4KKyAqCisgKiBAcGFyYW0g
e3N0cmluZ30gZXZlbnROYW1lU3VmZml4IEV2ZW50IG5hbWUsIGUuZy4gImNsaWNrIi4KKyAqIEBw
YXJhbSB7P2Jvb2xlYW59IGNhcHR1cmUgQ2hlY2sgaWYgdGhlIGNhcHR1cmUgcGhhc2UgaXMgc3Vw
cG9ydGVkLgorICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgZXZlbnQgaXMgc3VwcG9y
dGVkLgorICogQGludGVybmFsCisgKiBAbGljZW5zZSBNb2Rlcm5penIgMy4wLjBwcmUgKEN1c3Rv
bSBCdWlsZCkgfCBNSVQKKyAqLworZnVuY3Rpb24gaXNFdmVudFN1cHBvcnRlZChldmVudE5hbWVT
dWZmaXgsIGNhcHR1cmUpIHsKKyAgaWYgKCFFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00g
fHwgY2FwdHVyZSAmJiAhKCdhZGRFdmVudExpc3RlbmVyJyBpbiBkb2N1bWVudCkpIHsKKyAgICBy
ZXR1cm4gZmFsc2U7CisgIH0KKworICB2YXIgZXZlbnROYW1lID0gJ29uJyArIGV2ZW50TmFtZVN1
ZmZpeDsKKyAgdmFyIGlzU3VwcG9ydGVkID0gZXZlbnROYW1lIGluIGRvY3VtZW50OworCisgIGlm
ICghaXNTdXBwb3J0ZWQpIHsKKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2RpdicpOworICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKGV2ZW50TmFtZSwgJ3JldHVybjsn
KTsKKyAgICBpc1N1cHBvcnRlZCA9IHR5cGVvZiBlbGVtZW50W2V2ZW50TmFtZV0gPT09ICdmdW5j
dGlvbic7CisgIH0KKworICBpZiAoIWlzU3VwcG9ydGVkICYmIHVzZUhhc0ZlYXR1cmUgJiYgZXZl
bnROYW1lU3VmZml4ID09PSAnd2hlZWwnKSB7CisgICAgLy8gVGhpcyBpcyB0aGUgb25seSB3YXkg
dG8gdGVzdCBzdXBwb3J0IGZvciB0aGUgYHdoZWVsYCBldmVudCBpbiBJRTkrLgorICAgIGlzU3Vw
cG9ydGVkID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uaGFzRmVhdHVyZSgnRXZlbnRzLndoZWVs
JywgJzMuMCcpOworICB9CisKKyAgcmV0dXJuIGlzU3VwcG9ydGVkOworfQorCittb2R1bGUuZXhw
b3J0cyA9IGlzRXZlbnRTdXBwb3J0ZWQ7Cit9LHsiMTM2IjoxMzZ9XSwxMjM6W2Z1bmN0aW9uKF9k
ZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBG
YWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJj
ZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0
aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2Ug
dHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91
bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogCisg
Ki8KKworJ3VzZSBzdHJpY3QnOworCisvKioKKyAqIEBzZWUgaHR0cDovL3d3dy53aGF0d2cub3Jn
L3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvdGhlLWlucHV0LWVsZW1lbnQu
aHRtbCNpbnB1dC10eXBlLWF0dHItc3VtbWFyeQorICovCisKK3ZhciBzdXBwb3J0ZWRJbnB1dFR5
cGVzID0geworICAnY29sb3InOiB0cnVlLAorICAnZGF0ZSc6IHRydWUsCisgICdkYXRldGltZSc6
IHRydWUsCisgICdkYXRldGltZS1sb2NhbCc6IHRydWUsCisgICdlbWFpbCc6IHRydWUsCisgICdt
b250aCc6IHRydWUsCisgICdudW1iZXInOiB0cnVlLAorICAncGFzc3dvcmQnOiB0cnVlLAorICAn
cmFuZ2UnOiB0cnVlLAorICAnc2VhcmNoJzogdHJ1ZSwKKyAgJ3RlbCc6IHRydWUsCisgICd0ZXh0
JzogdHJ1ZSwKKyAgJ3RpbWUnOiB0cnVlLAorICAndXJsJzogdHJ1ZSwKKyAgJ3dlZWsnOiB0cnVl
Cit9OworCitmdW5jdGlvbiBpc1RleHRJbnB1dEVsZW1lbnQoZWxlbSkgeworICB2YXIgbm9kZU5h
bWUgPSBlbGVtICYmIGVsZW0ubm9kZU5hbWUgJiYgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgp
OworCisgIGlmIChub2RlTmFtZSA9PT0gJ2lucHV0JykgeworICAgIHJldHVybiAhIXN1cHBvcnRl
ZElucHV0VHlwZXNbZWxlbS50eXBlXTsKKyAgfQorCisgIGlmIChub2RlTmFtZSA9PT0gJ3RleHRh
cmVhJykgeworICAgIHJldHVybiB0cnVlOworICB9CisKKyAgcmV0dXJuIGZhbHNlOworfQorCitt
b2R1bGUuZXhwb3J0cyA9IGlzVGV4dElucHV0RWxlbWVudDsKK30se31dLDEyNDpbZnVuY3Rpb24o
X2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQs
IEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291
cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGlu
IHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJj
ZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBm
b3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8K
KworJ3VzZSBzdHJpY3QnOworCit2YXIgZXNjYXBlVGV4dENvbnRlbnRGb3JCcm93c2VyID0gX2Rl
cmVxXygxMDcpOworCisvKioKKyAqIEVzY2FwZXMgYXR0cmlidXRlIHZhbHVlIHRvIHByZXZlbnQg
c2NyaXB0aW5nIGF0dGFja3MuCisgKgorICogQHBhcmFtIHsqfSB2YWx1ZSBWYWx1ZSB0byBlc2Nh
cGUuCisgKiBAcmV0dXJuIHtzdHJpbmd9IEFuIGVzY2FwZWQgc3RyaW5nLgorICovCitmdW5jdGlv
biBxdW90ZUF0dHJpYnV0ZVZhbHVlRm9yQnJvd3Nlcih2YWx1ZSkgeworICByZXR1cm4gJyInICsg
ZXNjYXBlVGV4dENvbnRlbnRGb3JCcm93c2VyKHZhbHVlKSArICciJzsKK30KKworbW9kdWxlLmV4
cG9ydHMgPSBxdW90ZUF0dHJpYnV0ZVZhbHVlRm9yQnJvd3NlcjsKK30seyIxMDciOjEwN31dLDEy
NTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAo
YykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUg
bGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rv
cnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50
IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJl
Y3RvcnkuCisgKgorICogCisgKi8KKyd1c2Ugc3RyaWN0JzsKKworLyoqCisgKiBXQVJOSU5HOiBE
TyBOT1QgbWFudWFsbHkgcmVxdWlyZSB0aGlzIG1vZHVsZS4KKyAqIFRoaXMgaXMgYSByZXBsYWNl
bWVudCBmb3IgYGludmFyaWFudCguLi4pYCB1c2VkIGJ5IHRoZSBlcnJvciBjb2RlIHN5c3RlbQor
ICogYW5kIHdpbGwgX29ubHlfIGJlIHJlcXVpcmVkIGJ5IHRoZSBjb3JyZXNwb25kaW5nIGJhYmVs
IHBhc3MuCisgKiBJdCBhbHdheXMgdGhyb3dzLgorICovCisKK2Z1bmN0aW9uIHJlYWN0UHJvZElu
dmFyaWFudChjb2RlKSB7CisgIHZhciBhcmdDb3VudCA9IGFyZ3VtZW50cy5sZW5ndGggLSAxOwor
CisgIHZhciBtZXNzYWdlID0gJ01pbmlmaWVkIFJlYWN0IGVycm9yICMnICsgY29kZSArICc7IHZp
c2l0ICcgKyAnaHR0cDovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL2Vycm9yLWRlY29k
ZXIuaHRtbD9pbnZhcmlhbnQ9JyArIGNvZGU7CisKKyAgZm9yICh2YXIgYXJnSWR4ID0gMDsgYXJn
SWR4IDwgYXJnQ291bnQ7IGFyZ0lkeCsrKSB7CisgICAgbWVzc2FnZSArPSAnJmFyZ3NbXT0nICsg
ZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3VtZW50c1thcmdJZHggKyAxXSk7CisgIH0KKworICBtZXNz
YWdlICs9ICcgZm9yIHRoZSBmdWxsIG1lc3NhZ2Ugb3IgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2
IGVudmlyb25tZW50JyArICcgZm9yIGZ1bGwgZXJyb3JzIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwg
d2FybmluZ3MuJzsKKworICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IobWVzc2FnZSk7CisgIGVycm9y
Lm5hbWUgPSAnSW52YXJpYW50IFZpb2xhdGlvbic7CisgIGVycm9yLmZyYW1lc1RvUG9wID0gMTsg
Ly8gd2UgZG9uJ3QgY2FyZSBhYm91dCByZWFjdFByb2RJbnZhcmlhbnQncyBvd24gZnJhbWUKKwor
ICB0aHJvdyBlcnJvcjsKK30KKworbW9kdWxlLmV4cG9ydHMgPSByZWFjdFByb2RJbnZhcmlhbnQ7
Cit9LHt9XSwxMjY6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBD
b3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qt
c3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBk
aXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2Yg
cGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2Ft
ZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIFJlYWN0TW91bnQg
PSBfZGVyZXFfKDY3KTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdE1vdW50LnJlbmRlclN1YnRy
ZWVJbnRvQ29udGFpbmVyOworfSx7IjY3Ijo2N31dLDEyNzpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1
bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJ
bmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElD
RU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUg
UEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJp
Y3QnOworCit2YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSBfZGVyZXFfKDEzNik7Cit2YXIgRE9N
TmFtZXNwYWNlcyA9IF9kZXJlcV8oMTApOworCit2YXIgV0hJVEVTUEFDRV9URVNUID0gL15bIFxy
XG5cdFxmXS87Cit2YXIgTk9OVklTSUJMRV9URVNUID0gLzwoIS0tfGxpbmt8bm9zY3JpcHR8bWV0
YXxzY3JpcHR8c3R5bGUpWyBcclxuXHRcZlwvPl0vOworCit2YXIgY3JlYXRlTWljcm9zb2Z0VW5z
YWZlTG9jYWxGdW5jdGlvbiA9IF9kZXJlcV8oMTA1KTsKKworLy8gU1ZHIHRlbXAgY29udGFpbmVy
IGZvciBJRSBsYWNraW5nIGlubmVySFRNTAordmFyIHJldXNhYmxlU1ZHQ29udGFpbmVyOworCisv
KioKKyAqIFNldCB0aGUgaW5uZXJIVE1MIHByb3BlcnR5IG9mIGEgbm9kZSwgZW5zdXJpbmcgdGhh
dCB3aGl0ZXNwYWNlIGlzIHByZXNlcnZlZAorICogZXZlbiBpbiBJRTguCisgKgorICogQHBhcmFt
IHtET01FbGVtZW50fSBub2RlCisgKiBAcGFyYW0ge3N0cmluZ30gaHRtbAorICogQGludGVybmFs
CisgKi8KK3ZhciBzZXRJbm5lckhUTUwgPSBjcmVhdGVNaWNyb3NvZnRVbnNhZmVMb2NhbEZ1bmN0
aW9uKGZ1bmN0aW9uIChub2RlLCBodG1sKSB7CisgIC8vIElFIGRvZXMgbm90IGhhdmUgaW5uZXJI
VE1MIGZvciBTVkcgbm9kZXMsIHNvIGluc3RlYWQgd2UgaW5qZWN0IHRoZQorICAvLyBuZXcgbWFy
a3VwIGluIGEgdGVtcCBub2RlIGFuZCB0aGVuIG1vdmUgdGhlIGNoaWxkIG5vZGVzIGFjcm9zcyBp
bnRvCisgIC8vIHRoZSB0YXJnZXQgbm9kZQorICBpZiAobm9kZS5uYW1lc3BhY2VVUkkgPT09IERP
TU5hbWVzcGFjZXMuc3ZnICYmICEoJ2lubmVySFRNTCcgaW4gbm9kZSkpIHsKKyAgICByZXVzYWJs
ZVNWR0NvbnRhaW5lciA9IHJldXNhYmxlU1ZHQ29udGFpbmVyIHx8IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2RpdicpOworICAgIHJldXNhYmxlU1ZHQ29udGFpbmVyLmlubmVySFRNTCA9ICc8c3Zn
PicgKyBodG1sICsgJzwvc3ZnPic7CisgICAgdmFyIHN2Z05vZGUgPSByZXVzYWJsZVNWR0NvbnRh
aW5lci5maXJzdENoaWxkOworICAgIHdoaWxlIChzdmdOb2RlLmZpcnN0Q2hpbGQpIHsKKyAgICAg
IG5vZGUuYXBwZW5kQ2hpbGQoc3ZnTm9kZS5maXJzdENoaWxkKTsKKyAgICB9CisgIH0gZWxzZSB7
CisgICAgbm9kZS5pbm5lckhUTUwgPSBodG1sOworICB9Cit9KTsKKworaWYgKEV4ZWN1dGlvbkVu
dmlyb25tZW50LmNhblVzZURPTSkgeworICAvLyBJRTg6IFdoZW4gdXBkYXRpbmcgYSBqdXN0IGNy
ZWF0ZWQgbm9kZSB3aXRoIGlubmVySFRNTCBvbmx5IGxlYWRpbmcKKyAgLy8gd2hpdGVzcGFjZSBp
cyByZW1vdmVkLiBXaGVuIHVwZGF0aW5nIGFuIGV4aXN0aW5nIG5vZGUgd2l0aCBpbm5lckhUTUwK
KyAgLy8gd2hpdGVzcGFjZSBpbiByb290IFRleHROb2RlcyBpcyBhbHNvIGNvbGxhcHNlZC4KKyAg
Ly8gQHNlZSBxdWlya3Ntb2RlLm9yZy9idWdyZXBvcnRzL2FyY2hpdmVzLzIwMDQvMTEvaW5uZXJo
dG1sX2FuZF90Lmh0bWwKKworICAvLyBGZWF0dXJlIGRldGVjdGlvbjsgb25seSBJRTggaXMga25v
d24gdG8gYmVoYXZlIGltcHJvcGVybHkgbGlrZSB0aGlzLgorICB2YXIgdGVzdEVsZW1lbnQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgdGVzdEVsZW1lbnQuaW5uZXJIVE1MID0g
JyAnOworICBpZiAodGVzdEVsZW1lbnQuaW5uZXJIVE1MID09PSAnJykgeworICAgIHNldElubmVy
SFRNTCA9IGZ1bmN0aW9uIChub2RlLCBodG1sKSB7CisgICAgICAvLyBNYWdpYyB0aGVvcnk6IElF
OCBzdXBwb3NlZGx5IGRpZmZlcmVudGlhdGVzIGJldHdlZW4gYWRkZWQgYW5kIHVwZGF0ZWQKKyAg
ICAgIC8vIG5vZGVzIHdoZW4gcHJvY2Vzc2luZyBpbm5lckhUTUwsIGlubmVySFRNTCBvbiB1cGRh
dGVkIG5vZGVzIHN1ZmZlcnMKKyAgICAgIC8vIGZyb20gd29yc2Ugd2hpdGVzcGFjZSBiZWhhdmlv
ci4gUmUtYWRkaW5nIGEgbm9kZSBsaWtlIHRoaXMgdHJpZ2dlcnMKKyAgICAgIC8vIHRoZSBpbml0
aWFsIGFuZCBtb3JlIGZhdm9yYWJsZSB3aGl0ZXNwYWNlIGJlaGF2aW9yLgorICAgICAgLy8gVE9E
TzogV2hhdCB0byBkbyBvbiBhIGRldGFjaGVkIG5vZGU/CisgICAgICBpZiAobm9kZS5wYXJlbnRO
b2RlKSB7CisgICAgICAgIG5vZGUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobm9kZSwgbm9kZSk7
CisgICAgICB9CisKKyAgICAgIC8vIFdlIGFsc28gaW1wbGVtZW50IGEgd29ya2Fyb3VuZCBmb3Ig
bm9uLXZpc2libGUgdGFncyBkaXNhcHBlYXJpbmcgaW50bworICAgICAgLy8gdGhpbiBhaXIgb24g
SUU4LCB0aGlzIG9ubHkgaGFwcGVucyBpZiB0aGVyZSBpcyBubyB2aXNpYmxlIHRleHQKKyAgICAg
IC8vIGluLWZyb250IG9mIHRoZSBub24tdmlzaWJsZSB0YWdzLiBQaWdneWJhY2sgb24gdGhlIHdo
aXRlc3BhY2UgZml4CisgICAgICAvLyBhbmQgc2ltcGx5IGNoZWNrIGlmIGFueSBub24tdmlzaWJs
ZSB0YWdzIGFwcGVhciBpbiB0aGUgc291cmNlLgorICAgICAgaWYgKFdISVRFU1BBQ0VfVEVTVC50
ZXN0KGh0bWwpIHx8IGh0bWxbMF0gPT09ICc8JyAmJiBOT05WSVNJQkxFX1RFU1QudGVzdChodG1s
KSkgeworICAgICAgICAvLyBSZWNvdmVyIGxlYWRpbmcgd2hpdGVzcGFjZSBieSB0ZW1wb3Jhcmls
eSBwcmVwZW5kaW5nIGFueSBjaGFyYWN0ZXIuCisgICAgICAgIC8vIFx1RkVGRiBoYXMgdGhlIHBv
dGVudGlhbCBhZHZhbnRhZ2Ugb2YgYmVpbmcgemVyby13aWR0aC9pbnZpc2libGUuCisgICAgICAg
IC8vIFVnbGlmeUpTIGRyb3BzIFUrRkVGRiBjaGFycyB3aGVuIHBhcnNpbmcsIHNvIHVzZSBTdHJp
bmcuZnJvbUNoYXJDb2RlCisgICAgICAgIC8vIGluIGhvcGVzIHRoYXQgdGhpcyBpcyBwcmVzZXJ2
ZWQgZXZlbiBpZiAiXHVGRUZGIiBpcyB0cmFuc2Zvcm1lZCB0bworICAgICAgICAvLyB0aGUgYWN0
dWFsIFVuaWNvZGUgY2hhcmFjdGVyIChieSBCYWJlbCwgZm9yIGV4YW1wbGUpLgorICAgICAgICAv
LyBodHRwczovL2dpdGh1Yi5jb20vbWlzaG9vL1VnbGlmeUpTMi9ibG9iL3YyLjQuMjAvbGliL3Bh
cnNlLmpzI0wyMTYKKyAgICAgICAgbm9kZS5pbm5lckhUTUwgPSBTdHJpbmcuZnJvbUNoYXJDb2Rl
KDB4RkVGRikgKyBodG1sOworCisgICAgICAgIC8vIGRlbGV0ZURhdGEgbGVhdmVzIGFuIGVtcHR5
IGBUZXh0Tm9kZWAgd2hpY2ggb2Zmc2V0cyB0aGUgaW5kZXggb2YgYWxsCisgICAgICAgIC8vIGNo
aWxkcmVuLiBEZWZpbml0ZWx5IHdhbnQgdG8gYXZvaWQgdGhpcy4KKyAgICAgICAgdmFyIHRleHRO
b2RlID0gbm9kZS5maXJzdENoaWxkOworICAgICAgICBpZiAodGV4dE5vZGUuZGF0YS5sZW5ndGgg
PT09IDEpIHsKKyAgICAgICAgICBub2RlLnJlbW92ZUNoaWxkKHRleHROb2RlKTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICB0ZXh0Tm9kZS5kZWxldGVEYXRhKDAsIDEpOworICAgICAgICB9
CisgICAgICB9IGVsc2UgeworICAgICAgICBub2RlLmlubmVySFRNTCA9IGh0bWw7CisgICAgICB9
CisgICAgfTsKKyAgfQorICB0ZXN0RWxlbWVudCA9IG51bGw7Cit9CisKK21vZHVsZS5leHBvcnRz
ID0gc2V0SW5uZXJIVE1MOworfSx7IjEwIjoxMCwiMTA1IjoxMDUsIjEzNiI6MTM2fV0sMTI4Oltm
dW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMt
cHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
VGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2Ug
Zm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRo
aXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMg
Y2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Lgor
ICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IF9k
ZXJlcV8oMTM2KTsKK3ZhciBlc2NhcGVUZXh0Q29udGVudEZvckJyb3dzZXIgPSBfZGVyZXFfKDEw
Nyk7Cit2YXIgc2V0SW5uZXJIVE1MID0gX2RlcmVxXygxMjcpOworCisvKioKKyAqIFNldCB0aGUg
dGV4dENvbnRlbnQgcHJvcGVydHkgb2YgYSBub2RlLCBlbnN1cmluZyB0aGF0IHdoaXRlc3BhY2Ug
aXMgcHJlc2VydmVkCisgKiBldmVuIGluIElFOC4gaW5uZXJUZXh0IGlzIGEgcG9vciBzdWJzdGl0
dXRlIGZvciB0ZXh0Q29udGVudCBhbmQsIGFtb25nIG1hbnkKKyAqIGlzc3VlcywgaW5zZXJ0cyA8
YnI+IGluc3RlYWQgb2YgdGhlIGxpdGVyYWwgbmV3bGluZSBjaGFycy4gaW5uZXJIVE1MIGJlaGF2
ZXMKKyAqIGFzIGl0IHNob3VsZC4KKyAqCisgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IG5vZGUKKyAq
IEBwYXJhbSB7c3RyaW5nfSB0ZXh0CisgKiBAaW50ZXJuYWwKKyAqLwordmFyIHNldFRleHRDb250
ZW50ID0gZnVuY3Rpb24gKG5vZGUsIHRleHQpIHsKKyAgaWYgKHRleHQpIHsKKyAgICB2YXIgZmly
c3RDaGlsZCA9IG5vZGUuZmlyc3RDaGlsZDsKKworICAgIGlmIChmaXJzdENoaWxkICYmIGZpcnN0
Q2hpbGQgPT09IG5vZGUubGFzdENoaWxkICYmIGZpcnN0Q2hpbGQubm9kZVR5cGUgPT09IDMpIHsK
KyAgICAgIGZpcnN0Q2hpbGQubm9kZVZhbHVlID0gdGV4dDsKKyAgICAgIHJldHVybjsKKyAgICB9
CisgIH0KKyAgbm9kZS50ZXh0Q29udGVudCA9IHRleHQ7Cit9OworCitpZiAoRXhlY3V0aW9uRW52
aXJvbm1lbnQuY2FuVXNlRE9NKSB7CisgIGlmICghKCd0ZXh0Q29udGVudCcgaW4gZG9jdW1lbnQu
ZG9jdW1lbnRFbGVtZW50KSkgeworICAgIHNldFRleHRDb250ZW50ID0gZnVuY3Rpb24gKG5vZGUs
IHRleHQpIHsKKyAgICAgIGlmIChub2RlLm5vZGVUeXBlID09PSAzKSB7CisgICAgICAgIG5vZGUu
bm9kZVZhbHVlID0gdGV4dDsKKyAgICAgICAgcmV0dXJuOworICAgICAgfQorICAgICAgc2V0SW5u
ZXJIVE1MKG5vZGUsIGVzY2FwZVRleHRDb250ZW50Rm9yQnJvd3Nlcih0ZXh0KSk7CisgICAgfTsK
KyAgfQorfQorCittb2R1bGUuZXhwb3J0cyA9IHNldFRleHRDb250ZW50OworfSx7IjEwNyI6MTA3
LCIxMjciOjEyNywiMTM2IjoxMzZ9XSwxMjk6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9y
dHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICog
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2Vk
IHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25h
bCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMg
ZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwor
LyoqCisgKiBHaXZlbiBhIGBwcmV2RWxlbWVudGAgYW5kIGBuZXh0RWxlbWVudGAsIGRldGVybWlu
ZXMgaWYgdGhlIGV4aXN0aW5nCisgKiBpbnN0YW5jZSBzaG91bGQgYmUgdXBkYXRlZCBhcyBvcHBv
c2VkIHRvIGJlaW5nIGRlc3Ryb3llZCBvciByZXBsYWNlZCBieSBhIG5ldworICogaW5zdGFuY2Uu
IEJvdGggYXJndW1lbnRzIGFyZSBlbGVtZW50cy4gVGhpcyBlbnN1cmVzIHRoYXQgdGhpcyBsb2dp
YyBjYW4KKyAqIG9wZXJhdGUgb24gc3RhdGVsZXNzIHRyZWVzIHdpdGhvdXQgYW55IGJhY2tpbmcg
aW5zdGFuY2UuCisgKgorICogQHBhcmFtIHs/b2JqZWN0fSBwcmV2RWxlbWVudAorICogQHBhcmFt
IHs/b2JqZWN0fSBuZXh0RWxlbWVudAorICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUg
ZXhpc3RpbmcgaW5zdGFuY2Ugc2hvdWxkIGJlIHVwZGF0ZWQuCisgKiBAcHJvdGVjdGVkCisgKi8K
KworZnVuY3Rpb24gc2hvdWxkVXBkYXRlUmVhY3RDb21wb25lbnQocHJldkVsZW1lbnQsIG5leHRF
bGVtZW50KSB7CisgIHZhciBwcmV2RW1wdHkgPSBwcmV2RWxlbWVudCA9PT0gbnVsbCB8fCBwcmV2
RWxlbWVudCA9PT0gZmFsc2U7CisgIHZhciBuZXh0RW1wdHkgPSBuZXh0RWxlbWVudCA9PT0gbnVs
bCB8fCBuZXh0RWxlbWVudCA9PT0gZmFsc2U7CisgIGlmIChwcmV2RW1wdHkgfHwgbmV4dEVtcHR5
KSB7CisgICAgcmV0dXJuIHByZXZFbXB0eSA9PT0gbmV4dEVtcHR5OworICB9CisKKyAgdmFyIHBy
ZXZUeXBlID0gdHlwZW9mIHByZXZFbGVtZW50OworICB2YXIgbmV4dFR5cGUgPSB0eXBlb2YgbmV4
dEVsZW1lbnQ7CisgIGlmIChwcmV2VHlwZSA9PT0gJ3N0cmluZycgfHwgcHJldlR5cGUgPT09ICdu
dW1iZXInKSB7CisgICAgcmV0dXJuIG5leHRUeXBlID09PSAnc3RyaW5nJyB8fCBuZXh0VHlwZSA9
PT0gJ251bWJlcic7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIG5leHRUeXBlID09PSAnb2JqZWN0
JyAmJiBwcmV2RWxlbWVudC50eXBlID09PSBuZXh0RWxlbWVudC50eXBlICYmIHByZXZFbGVtZW50
LmtleSA9PT0gbmV4dEVsZW1lbnQua2V5OworICB9Cit9CisKK21vZHVsZS5leHBvcnRzID0gc2hv
dWxkVXBkYXRlUmVhY3RDb21wb25lbnQ7Cit9LHt9XSwxMzA6W2Z1bmN0aW9uKF9kZXJlcV8sbW9k
dWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhl
IFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3Ry
aWN0JzsKKwordmFyIF9wcm9kSW52YXJpYW50ID0gX2RlcmVxXygxMjUpOworCit2YXIgUmVhY3RD
dXJyZW50T3duZXIgPSBfZGVyZXFfKDEzMyk7Cit2YXIgUkVBQ1RfRUxFTUVOVF9UWVBFID0gX2Rl
cmVxXyg1Myk7CisKK3ZhciBnZXRJdGVyYXRvckZuID0gX2RlcmVxXygxMTYpOwordmFyIGludmFy
aWFudCA9IF9kZXJlcV8oMTUwKTsKK3ZhciBLZXlFc2NhcGVVdGlscyA9IF9kZXJlcV8oMjMpOwor
dmFyIHdhcm5pbmcgPSBfZGVyZXFfKDE1Nyk7CisKK3ZhciBTRVBBUkFUT1IgPSAnLic7Cit2YXIg
U1VCU0VQQVJBVE9SID0gJzonOworCisvKioKKyAqIFRoaXMgaXMgaW5saW5lZCBmcm9tIFJlYWN0
RWxlbWVudCBzaW5jZSB0aGlzIGZpbGUgaXMgc2hhcmVkIGJldHdlZW4KKyAqIGlzb21vcnBoaWMg
YW5kIHJlbmRlcmVycy4gV2UgY291bGQgZXh0cmFjdCB0aGlzIHRvIGEKKyAqCisgKi8KKworLyoq
CisgKiBUT0RPOiBUZXN0IHRoYXQgYSBzaW5nbGUgY2hpbGQgYW5kIGFuIGFycmF5IHdpdGggb25l
IGl0ZW0gaGF2ZSB0aGUgc2FtZSBrZXkKKyAqIHBhdHRlcm4uCisgKi8KKwordmFyIGRpZFdhcm5B
Ym91dE1hcHMgPSBmYWxzZTsKKworLyoqCisgKiBHZW5lcmF0ZSBhIGtleSBzdHJpbmcgdGhhdCBp
ZGVudGlmaWVzIGEgY29tcG9uZW50IHdpdGhpbiBhIHNldC4KKyAqCisgKiBAcGFyYW0geyp9IGNv
bXBvbmVudCBBIGNvbXBvbmVudCB0aGF0IGNvdWxkIGNvbnRhaW4gYSBtYW51YWwga2V5LgorICog
QHBhcmFtIHtudW1iZXJ9IGluZGV4IEluZGV4IHRoYXQgaXMgdXNlZCBpZiBhIG1hbnVhbCBrZXkg
aXMgbm90IHByb3ZpZGVkLgorICogQHJldHVybiB7c3RyaW5nfQorICovCitmdW5jdGlvbiBnZXRD
b21wb25lbnRLZXkoY29tcG9uZW50LCBpbmRleCkgeworICAvLyBEbyBzb21lIHR5cGVjaGVja2lu
ZyBoZXJlIHNpbmNlIHdlIGNhbGwgdGhpcyBibGluZGx5LiBXZSB3YW50IHRvIGVuc3VyZQorICAv
LyB0aGF0IHdlIGRvbid0IGJsb2NrIHBvdGVudGlhbCBmdXR1cmUgRVMgQVBJcy4KKyAgaWYgKGNv
bXBvbmVudCAmJiB0eXBlb2YgY29tcG9uZW50ID09PSAnb2JqZWN0JyAmJiBjb21wb25lbnQua2V5
ICE9IG51bGwpIHsKKyAgICAvLyBFeHBsaWNpdCBrZXkKKyAgICByZXR1cm4gS2V5RXNjYXBlVXRp
bHMuZXNjYXBlKGNvbXBvbmVudC5rZXkpOworICB9CisgIC8vIEltcGxpY2l0IGtleSBkZXRlcm1p
bmVkIGJ5IHRoZSBpbmRleCBpbiB0aGUgc2V0CisgIHJldHVybiBpbmRleC50b1N0cmluZygzNik7
Cit9CisKKy8qKgorICogQHBhcmFtIHs/Kn0gY2hpbGRyZW4gQ2hpbGRyZW4gdHJlZSBjb250YWlu
ZXIuCisgKiBAcGFyYW0geyFzdHJpbmd9IG5hbWVTb0ZhciBOYW1lIG9mIHRoZSBrZXkgcGF0aCBz
byBmYXIuCisgKiBAcGFyYW0geyFmdW5jdGlvbn0gY2FsbGJhY2sgQ2FsbGJhY2sgdG8gaW52b2tl
IHdpdGggZWFjaCBjaGlsZCBmb3VuZC4KKyAqIEBwYXJhbSB7Pyp9IHRyYXZlcnNlQ29udGV4dCBV
c2VkIHRvIHBhc3MgaW5mb3JtYXRpb24gdGhyb3VnaG91dCB0aGUgdHJhdmVyc2FsCisgKiBwcm9j
ZXNzLgorICogQHJldHVybiB7IW51bWJlcn0gVGhlIG51bWJlciBvZiBjaGlsZHJlbiBpbiB0aGlz
IHN1YnRyZWUuCisgKi8KK2Z1bmN0aW9uIHRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBsKGNoaWxkcmVu
LCBuYW1lU29GYXIsIGNhbGxiYWNrLCB0cmF2ZXJzZUNvbnRleHQpIHsKKyAgdmFyIHR5cGUgPSB0
eXBlb2YgY2hpbGRyZW47CisKKyAgaWYgKHR5cGUgPT09ICd1bmRlZmluZWQnIHx8IHR5cGUgPT09
ICdib29sZWFuJykgeworICAgIC8vIEFsbCBvZiB0aGUgYWJvdmUgYXJlIHBlcmNlaXZlZCBhcyBu
dWxsLgorICAgIGNoaWxkcmVuID0gbnVsbDsKKyAgfQorCisgIGlmIChjaGlsZHJlbiA9PT0gbnVs
bCB8fCB0eXBlID09PSAnc3RyaW5nJyB8fCB0eXBlID09PSAnbnVtYmVyJyB8fAorICAvLyBUaGUg
Zm9sbG93aW5nIGlzIGlubGluZWQgZnJvbSBSZWFjdEVsZW1lbnQuIFRoaXMgbWVhbnMgd2UgY2Fu
IG9wdGltaXplCisgIC8vIHNvbWUgY2hlY2tzLiBSZWFjdCBGaWJlciBhbHNvIGlubGluZXMgdGhp
cyBsb2dpYyBmb3Igc2ltaWxhciBwdXJwb3Nlcy4KKyAgdHlwZSA9PT0gJ29iamVjdCcgJiYgY2hp
bGRyZW4uJCR0eXBlb2YgPT09IFJFQUNUX0VMRU1FTlRfVFlQRSkgeworICAgIGNhbGxiYWNrKHRy
YXZlcnNlQ29udGV4dCwgY2hpbGRyZW4sCisgICAgLy8gSWYgaXQncyB0aGUgb25seSBjaGlsZCwg
dHJlYXQgdGhlIG5hbWUgYXMgaWYgaXQgd2FzIHdyYXBwZWQgaW4gYW4gYXJyYXkKKyAgICAvLyBz
byB0aGF0IGl0J3MgY29uc2lzdGVudCBpZiB0aGUgbnVtYmVyIG9mIGNoaWxkcmVuIGdyb3dzLgor
ICAgIG5hbWVTb0ZhciA9PT0gJycgPyBTRVBBUkFUT1IgKyBnZXRDb21wb25lbnRLZXkoY2hpbGRy
ZW4sIDApIDogbmFtZVNvRmFyKTsKKyAgICByZXR1cm4gMTsKKyAgfQorCisgIHZhciBjaGlsZDsK
KyAgdmFyIG5leHROYW1lOworICB2YXIgc3VidHJlZUNvdW50ID0gMDsgLy8gQ291bnQgb2YgY2hp
bGRyZW4gZm91bmQgaW4gdGhlIGN1cnJlbnQgc3VidHJlZS4KKyAgdmFyIG5leHROYW1lUHJlZml4
ID0gbmFtZVNvRmFyID09PSAnJyA/IFNFUEFSQVRPUiA6IG5hbWVTb0ZhciArIFNVQlNFUEFSQVRP
UjsKKworICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbikpIHsKKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7CisgICAgICBjaGlsZCA9IGNoaWxkcmVuW2ld
OworICAgICAgbmV4dE5hbWUgPSBuZXh0TmFtZVByZWZpeCArIGdldENvbXBvbmVudEtleShjaGls
ZCwgaSk7CisgICAgICBzdWJ0cmVlQ291bnQgKz0gdHJhdmVyc2VBbGxDaGlsZHJlbkltcGwoY2hp
bGQsIG5leHROYW1lLCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KTsKKyAgICB9CisgIH0gZWxz
ZSB7CisgICAgdmFyIGl0ZXJhdG9yRm4gPSBnZXRJdGVyYXRvckZuKGNoaWxkcmVuKTsKKyAgICBp
ZiAoaXRlcmF0b3JGbikgeworICAgICAgdmFyIGl0ZXJhdG9yID0gaXRlcmF0b3JGbi5jYWxsKGNo
aWxkcmVuKTsKKyAgICAgIHZhciBzdGVwOworICAgICAgaWYgKGl0ZXJhdG9yRm4gIT09IGNoaWxk
cmVuLmVudHJpZXMpIHsKKyAgICAgICAgdmFyIGlpID0gMDsKKyAgICAgICAgd2hpbGUgKCEoc3Rl
cCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkgeworICAgICAgICAgIGNoaWxkID0gc3RlcC52YWx1
ZTsKKyAgICAgICAgICBuZXh0TmFtZSA9IG5leHROYW1lUHJlZml4ICsgZ2V0Q29tcG9uZW50S2V5
KGNoaWxkLCBpaSsrKTsKKyAgICAgICAgICBzdWJ0cmVlQ291bnQgKz0gdHJhdmVyc2VBbGxDaGls
ZHJlbkltcGwoY2hpbGQsIG5leHROYW1lLCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KTsKKyAg
ICAgICAgfQorICAgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdw
cm9kdWN0aW9uJykgeworICAgICAgICAgIHZhciBtYXBzQXNDaGlsZHJlbkFkZGVuZHVtID0gJyc7
CisgICAgICAgICAgaWYgKFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQpIHsKKyAgICAgICAgICAg
IHZhciBtYXBzQXNDaGlsZHJlbk93bmVyTmFtZSA9IFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQu
Z2V0TmFtZSgpOworICAgICAgICAgICAgaWYgKG1hcHNBc0NoaWxkcmVuT3duZXJOYW1lKSB7Cisg
ICAgICAgICAgICAgIG1hcHNBc0NoaWxkcmVuQWRkZW5kdW0gPSAnIENoZWNrIHRoZSByZW5kZXIg
bWV0aG9kIG9mIGAnICsgbWFwc0FzQ2hpbGRyZW5Pd25lck5hbWUgKyAnYC4nOworICAgICAgICAg
ICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlv
bicgPyB3YXJuaW5nKGRpZFdhcm5BYm91dE1hcHMsICdVc2luZyBNYXBzIGFzIGNoaWxkcmVuIGlz
IG5vdCB5ZXQgZnVsbHkgc3VwcG9ydGVkLiBJdCBpcyBhbiAnICsgJ2V4cGVyaW1lbnRhbCBmZWF0
dXJlIHRoYXQgbWlnaHQgYmUgcmVtb3ZlZC4gQ29udmVydCBpdCB0byBhICcgKyAnc2VxdWVuY2Ug
LyBpdGVyYWJsZSBvZiBrZXllZCBSZWFjdEVsZW1lbnRzIGluc3RlYWQuJXMnLCBtYXBzQXNDaGls
ZHJlbkFkZGVuZHVtKSA6IHZvaWQgMDsKKyAgICAgICAgICBkaWRXYXJuQWJvdXRNYXBzID0gdHJ1
ZTsKKyAgICAgICAgfQorICAgICAgICAvLyBJdGVyYXRvciB3aWxsIHByb3ZpZGUgZW50cnkgW2ss
dl0gdHVwbGVzIHJhdGhlciB0aGFuIHZhbHVlcy4KKyAgICAgICAgd2hpbGUgKCEoc3RlcCA9IGl0
ZXJhdG9yLm5leHQoKSkuZG9uZSkgeworICAgICAgICAgIHZhciBlbnRyeSA9IHN0ZXAudmFsdWU7
CisgICAgICAgICAgaWYgKGVudHJ5KSB7CisgICAgICAgICAgICBjaGlsZCA9IGVudHJ5WzFdOwor
ICAgICAgICAgICAgbmV4dE5hbWUgPSBuZXh0TmFtZVByZWZpeCArIEtleUVzY2FwZVV0aWxzLmVz
Y2FwZShlbnRyeVswXSkgKyBTVUJTRVBBUkFUT1IgKyBnZXRDb21wb25lbnRLZXkoY2hpbGQsIDAp
OworICAgICAgICAgICAgc3VidHJlZUNvdW50ICs9IHRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBsKGNo
aWxkLCBuZXh0TmFtZSwgY2FsbGJhY2ssIHRyYXZlcnNlQ29udGV4dCk7CisgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICB9CisgICAgfSBlbHNlIGlmICh0eXBlID09PSAnb2JqZWN0Jykgewor
ICAgICAgdmFyIGFkZGVuZHVtID0gJyc7CisgICAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3By
b2R1Y3Rpb24nKSB7CisgICAgICAgIGFkZGVuZHVtID0gJyBJZiB5b3UgbWVhbnQgdG8gcmVuZGVy
IGEgY29sbGVjdGlvbiBvZiBjaGlsZHJlbiwgdXNlIGFuIGFycmF5ICcgKyAnaW5zdGVhZCBvciB3
cmFwIHRoZSBvYmplY3QgdXNpbmcgY3JlYXRlRnJhZ21lbnQob2JqZWN0KSBmcm9tIHRoZSAnICsg
J1JlYWN0IGFkZC1vbnMuJzsKKyAgICAgICAgaWYgKGNoaWxkcmVuLl9pc1JlYWN0RWxlbWVudCkg
eworICAgICAgICAgIGFkZGVuZHVtID0gJyBJdCBsb29rcyBsaWtlIHlvdVwncmUgdXNpbmcgYW4g
ZWxlbWVudCBjcmVhdGVkIGJ5IGEgZGlmZmVyZW50ICcgKyAndmVyc2lvbiBvZiBSZWFjdC4gTWFr
ZSBzdXJlIHRvIHVzZSBvbmx5IG9uZSBjb3B5IG9mIFJlYWN0Lic7CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQpIHsKKyAgICAgICAgICB2YXIgbmFtZSA9
IFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQuZ2V0TmFtZSgpOworICAgICAgICAgIGlmIChuYW1l
KSB7CisgICAgICAgICAgICBhZGRlbmR1bSArPSAnIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9m
IGAnICsgbmFtZSArICdgLic7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAg
ICB2YXIgY2hpbGRyZW5TdHJpbmcgPSBTdHJpbmcoY2hpbGRyZW4pOworICAgICAgIWZhbHNlID8g
ImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnT2JqZWN0
cyBhcmUgbm90IHZhbGlkIGFzIGEgUmVhY3QgY2hpbGQgKGZvdW5kOiAlcykuJXMnLCBjaGlsZHJl
blN0cmluZyA9PT0gJ1tvYmplY3QgT2JqZWN0XScgPyAnb2JqZWN0IHdpdGgga2V5cyB7JyArIE9i
amVjdC5rZXlzKGNoaWxkcmVuKS5qb2luKCcsICcpICsgJ30nIDogY2hpbGRyZW5TdHJpbmcsIGFk
ZGVuZHVtKSA6IF9wcm9kSW52YXJpYW50KCczMScsIGNoaWxkcmVuU3RyaW5nID09PSAnW29iamVj
dCBPYmplY3RdJyA/ICdvYmplY3Qgd2l0aCBrZXlzIHsnICsgT2JqZWN0LmtleXMoY2hpbGRyZW4p
LmpvaW4oJywgJykgKyAnfScgOiBjaGlsZHJlblN0cmluZywgYWRkZW5kdW0pIDogdm9pZCAwOwor
ICAgIH0KKyAgfQorCisgIHJldHVybiBzdWJ0cmVlQ291bnQ7Cit9CisKKy8qKgorICogVHJhdmVy
c2VzIGNoaWxkcmVuIHRoYXQgYXJlIHR5cGljYWxseSBzcGVjaWZpZWQgYXMgYHByb3BzLmNoaWxk
cmVuYCwgYnV0CisgKiBtaWdodCBhbHNvIGJlIHNwZWNpZmllZCB0aHJvdWdoIGF0dHJpYnV0ZXM6
CisgKgorICogLSBgdHJhdmVyc2VBbGxDaGlsZHJlbih0aGlzLnByb3BzLmNoaWxkcmVuLCAuLi4p
YAorICogLSBgdHJhdmVyc2VBbGxDaGlsZHJlbih0aGlzLnByb3BzLmxlZnRQYW5lbENoaWxkcmVu
LCAuLi4pYAorICoKKyAqIFRoZSBgdHJhdmVyc2VDb250ZXh0YCBpcyBhbiBvcHRpb25hbCBhcmd1
bWVudCB0aGF0IGlzIHBhc3NlZCB0aHJvdWdoIHRoZQorICogZW50aXJlIHRyYXZlcnNhbC4gSXQg
Y2FuIGJlIHVzZWQgdG8gc3RvcmUgYWNjdW11bGF0aW9ucyBvciBhbnl0aGluZyBlbHNlIHRoYXQK
KyAqIHRoZSBjYWxsYmFjayBtaWdodCBmaW5kIHJlbGV2YW50LgorICoKKyAqIEBwYXJhbSB7Pyp9
IGNoaWxkcmVuIENoaWxkcmVuIHRyZWUgb2JqZWN0LgorICogQHBhcmFtIHshZnVuY3Rpb259IGNh
bGxiYWNrIFRvIGludm9rZSB1cG9uIHRyYXZlcnNpbmcgZWFjaCBjaGlsZC4KKyAqIEBwYXJhbSB7
Pyp9IHRyYXZlcnNlQ29udGV4dCBDb250ZXh0IGZvciB0cmF2ZXJzYWwuCisgKiBAcmV0dXJuIHsh
bnVtYmVyfSBUaGUgbnVtYmVyIG9mIGNoaWxkcmVuIGluIHRoaXMgc3VidHJlZS4KKyAqLworZnVu
Y3Rpb24gdHJhdmVyc2VBbGxDaGlsZHJlbihjaGlsZHJlbiwgY2FsbGJhY2ssIHRyYXZlcnNlQ29u
dGV4dCkgeworICBpZiAoY2hpbGRyZW4gPT0gbnVsbCkgeworICAgIHJldHVybiAwOworICB9CisK
KyAgcmV0dXJuIHRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBsKGNoaWxkcmVuLCAnJywgY2FsbGJhY2ss
IHRyYXZlcnNlQ29udGV4dCk7Cit9CisKK21vZHVsZS5leHBvcnRzID0gdHJhdmVyc2VBbGxDaGls
ZHJlbjsKK30seyIxMTYiOjExNiwiMTI1IjoxMjUsIjEzMyI6MTMzLCIxNTAiOjE1MCwiMTU3Ijox
NTcsIjIzIjoyMywiNTMiOjUzfV0sMTMxOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRz
KXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTUtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1
bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3Zh
ciBfYXNzaWduID0gX2RlcmVxXygxNTgpOworCit2YXIgZW1wdHlGdW5jdGlvbiA9IF9kZXJlcV8o
MTQyKTsKK3ZhciB3YXJuaW5nID0gX2RlcmVxXygxNTcpOworCit2YXIgdmFsaWRhdGVET01OZXN0
aW5nID0gZW1wdHlGdW5jdGlvbjsKKworaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9u
JykgeworICAvLyBUaGlzIHZhbGlkYXRpb24gY29kZSB3YXMgd3JpdHRlbiBiYXNlZCBvbiB0aGUg
SFRNTDUgcGFyc2luZyBzcGVjOgorICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211
bHRpcGFnZS9zeW50YXguaHRtbCNoYXMtYW4tZWxlbWVudC1pbi1zY29wZQorICAvLworICAvLyBO
b3RlOiB0aGlzIGRvZXMgbm90IGNhdGNoIGFsbCBpbnZhbGlkIG5lc3RpbmcsIG5vciBkb2VzIGl0
IHRyeSB0byAoYXMgaXQncworICAvLyBub3QgY2xlYXIgd2hhdCBwcmFjdGljYWwgYmVuZWZpdCBk
b2luZyBzbyBwcm92aWRlcyk7IGluc3RlYWQsIHdlIHdhcm4gb25seQorICAvLyBmb3IgY2FzZXMg
d2hlcmUgdGhlIHBhcnNlciB3aWxsIGdpdmUgYSBwYXJzZSB0cmVlIGRpZmZlcmluZyBmcm9tIHdo
YXQgUmVhY3QKKyAgLy8gaW50ZW5kZWQuIEZvciBleGFtcGxlLCA8Yj48ZGl2PjwvZGl2PjwvYj4g
aXMgaW52YWxpZCBidXQgd2UgZG9uJ3Qgd2FybgorICAvLyBiZWNhdXNlIGl0IHN0aWxsIHBhcnNl
cyBjb3JyZWN0bHk7IHdlIGRvIHdhcm4gZm9yIG90aGVyIGNhc2VzIGxpa2UgbmVzdGVkCisgIC8v
IDxwPiB0YWdzIHdoZXJlIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHNlY29uZCBlbGVtZW50IGltcGxp
Y2l0bHkgY2xvc2VzIHRoZQorICAvLyBmaXJzdCwgY2F1c2luZyBhIGNvbmZ1c2luZyBtZXNzLgor
CisgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1s
I3NwZWNpYWwKKyAgdmFyIHNwZWNpYWxUYWdzID0gWydhZGRyZXNzJywgJ2FwcGxldCcsICdhcmVh
JywgJ2FydGljbGUnLCAnYXNpZGUnLCAnYmFzZScsICdiYXNlZm9udCcsICdiZ3NvdW5kJywgJ2Js
b2NrcXVvdGUnLCAnYm9keScsICdicicsICdidXR0b24nLCAnY2FwdGlvbicsICdjZW50ZXInLCAn
Y29sJywgJ2NvbGdyb3VwJywgJ2RkJywgJ2RldGFpbHMnLCAnZGlyJywgJ2RpdicsICdkbCcsICdk
dCcsICdlbWJlZCcsICdmaWVsZHNldCcsICdmaWdjYXB0aW9uJywgJ2ZpZ3VyZScsICdmb290ZXIn
LCAnZm9ybScsICdmcmFtZScsICdmcmFtZXNldCcsICdoMScsICdoMicsICdoMycsICdoNCcsICdo
NScsICdoNicsICdoZWFkJywgJ2hlYWRlcicsICdoZ3JvdXAnLCAnaHInLCAnaHRtbCcsICdpZnJh
bWUnLCAnaW1nJywgJ2lucHV0JywgJ2lzaW5kZXgnLCAnbGknLCAnbGluaycsICdsaXN0aW5nJywg
J21haW4nLCAnbWFycXVlZScsICdtZW51JywgJ21lbnVpdGVtJywgJ21ldGEnLCAnbmF2JywgJ25v
ZW1iZWQnLCAnbm9mcmFtZXMnLCAnbm9zY3JpcHQnLCAnb2JqZWN0JywgJ29sJywgJ3AnLCAncGFy
YW0nLCAncGxhaW50ZXh0JywgJ3ByZScsICdzY3JpcHQnLCAnc2VjdGlvbicsICdzZWxlY3QnLCAn
c291cmNlJywgJ3N0eWxlJywgJ3N1bW1hcnknLCAndGFibGUnLCAndGJvZHknLCAndGQnLCAndGVt
cGxhdGUnLCAndGV4dGFyZWEnLCAndGZvb3QnLCAndGgnLCAndGhlYWQnLCAndGl0bGUnLCAndHIn
LCAndHJhY2snLCAndWwnLCAnd2JyJywgJ3htcCddOworCisgIC8vIGh0dHBzOi8vaHRtbC5zcGVj
LndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI2hhcy1hbi1lbGVtZW50LWluLXNjb3Bl
CisgIHZhciBpblNjb3BlVGFncyA9IFsnYXBwbGV0JywgJ2NhcHRpb24nLCAnaHRtbCcsICd0YWJs
ZScsICd0ZCcsICd0aCcsICdtYXJxdWVlJywgJ29iamVjdCcsICd0ZW1wbGF0ZScsCisKKyAgLy8g
aHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjaHRtbC1p
bnRlZ3JhdGlvbi1wb2ludAorICAvLyBUT0RPOiBEaXN0aW5ndWlzaCBieSBuYW1lc3BhY2UgaGVy
ZSAtLSBmb3IgPHRpdGxlPiwgaW5jbHVkaW5nIGl0IGhlcmUKKyAgLy8gZXJycyBvbiB0aGUgc2lk
ZSBvZiBmZXdlciB3YXJuaW5ncworICAnZm9yZWlnbk9iamVjdCcsICdkZXNjJywgJ3RpdGxlJ107
CisKKyAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0
bWwjaGFzLWFuLWVsZW1lbnQtaW4tYnV0dG9uLXNjb3BlCisgIHZhciBidXR0b25TY29wZVRhZ3Mg
PSBpblNjb3BlVGFncy5jb25jYXQoWydidXR0b24nXSk7CisKKyAgLy8gaHR0cHM6Ly9odG1sLnNw
ZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjZ2VuZXJhdGUtaW1wbGllZC1lbmQt
dGFncworICB2YXIgaW1wbGllZEVuZFRhZ3MgPSBbJ2RkJywgJ2R0JywgJ2xpJywgJ29wdGlvbics
ICdvcHRncm91cCcsICdwJywgJ3JwJywgJ3J0J107CisKKyAgdmFyIGVtcHR5QW5jZXN0b3JJbmZv
ID0geworICAgIGN1cnJlbnQ6IG51bGwsCisKKyAgICBmb3JtVGFnOiBudWxsLAorICAgIGFUYWdJ
blNjb3BlOiBudWxsLAorICAgIGJ1dHRvblRhZ0luU2NvcGU6IG51bGwsCisgICAgbm9iclRhZ0lu
U2NvcGU6IG51bGwsCisgICAgcFRhZ0luQnV0dG9uU2NvcGU6IG51bGwsCisKKyAgICBsaXN0SXRl
bVRhZ0F1dG9jbG9zaW5nOiBudWxsLAorICAgIGRsSXRlbVRhZ0F1dG9jbG9zaW5nOiBudWxsCisg
IH07CisKKyAgdmFyIHVwZGF0ZWRBbmNlc3RvckluZm8gPSBmdW5jdGlvbiAob2xkSW5mbywgdGFn
LCBpbnN0YW5jZSkgeworICAgIHZhciBhbmNlc3RvckluZm8gPSBfYXNzaWduKHt9LCBvbGRJbmZv
IHx8IGVtcHR5QW5jZXN0b3JJbmZvKTsKKyAgICB2YXIgaW5mbyA9IHsgdGFnOiB0YWcsIGluc3Rh
bmNlOiBpbnN0YW5jZSB9OworCisgICAgaWYgKGluU2NvcGVUYWdzLmluZGV4T2YodGFnKSAhPT0g
LTEpIHsKKyAgICAgIGFuY2VzdG9ySW5mby5hVGFnSW5TY29wZSA9IG51bGw7CisgICAgICBhbmNl
c3RvckluZm8uYnV0dG9uVGFnSW5TY29wZSA9IG51bGw7CisgICAgICBhbmNlc3RvckluZm8ubm9i
clRhZ0luU2NvcGUgPSBudWxsOworICAgIH0KKyAgICBpZiAoYnV0dG9uU2NvcGVUYWdzLmluZGV4
T2YodGFnKSAhPT0gLTEpIHsKKyAgICAgIGFuY2VzdG9ySW5mby5wVGFnSW5CdXR0b25TY29wZSA9
IG51bGw7CisgICAgfQorCisgICAgLy8gU2VlIHJ1bGVzIGZvciAnbGknLCAnZGQnLCAnZHQnIHN0
YXJ0IHRhZ3MgaW4KKyAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFn
ZS9zeW50YXguaHRtbCNwYXJzaW5nLW1haW4taW5ib2R5CisgICAgaWYgKHNwZWNpYWxUYWdzLmlu
ZGV4T2YodGFnKSAhPT0gLTEgJiYgdGFnICE9PSAnYWRkcmVzcycgJiYgdGFnICE9PSAnZGl2JyAm
JiB0YWcgIT09ICdwJykgeworICAgICAgYW5jZXN0b3JJbmZvLmxpc3RJdGVtVGFnQXV0b2Nsb3Np
bmcgPSBudWxsOworICAgICAgYW5jZXN0b3JJbmZvLmRsSXRlbVRhZ0F1dG9jbG9zaW5nID0gbnVs
bDsKKyAgICB9CisKKyAgICBhbmNlc3RvckluZm8uY3VycmVudCA9IGluZm87CisKKyAgICBpZiAo
dGFnID09PSAnZm9ybScpIHsKKyAgICAgIGFuY2VzdG9ySW5mby5mb3JtVGFnID0gaW5mbzsKKyAg
ICB9CisgICAgaWYgKHRhZyA9PT0gJ2EnKSB7CisgICAgICBhbmNlc3RvckluZm8uYVRhZ0luU2Nv
cGUgPSBpbmZvOworICAgIH0KKyAgICBpZiAodGFnID09PSAnYnV0dG9uJykgeworICAgICAgYW5j
ZXN0b3JJbmZvLmJ1dHRvblRhZ0luU2NvcGUgPSBpbmZvOworICAgIH0KKyAgICBpZiAodGFnID09
PSAnbm9icicpIHsKKyAgICAgIGFuY2VzdG9ySW5mby5ub2JyVGFnSW5TY29wZSA9IGluZm87Cisg
ICAgfQorICAgIGlmICh0YWcgPT09ICdwJykgeworICAgICAgYW5jZXN0b3JJbmZvLnBUYWdJbkJ1
dHRvblNjb3BlID0gaW5mbzsKKyAgICB9CisgICAgaWYgKHRhZyA9PT0gJ2xpJykgeworICAgICAg
YW5jZXN0b3JJbmZvLmxpc3RJdGVtVGFnQXV0b2Nsb3NpbmcgPSBpbmZvOworICAgIH0KKyAgICBp
ZiAodGFnID09PSAnZGQnIHx8IHRhZyA9PT0gJ2R0JykgeworICAgICAgYW5jZXN0b3JJbmZvLmRs
SXRlbVRhZ0F1dG9jbG9zaW5nID0gaW5mbzsKKyAgICB9CisKKyAgICByZXR1cm4gYW5jZXN0b3JJ
bmZvOworICB9OworCisgIC8qKgorICAgKiBSZXR1cm5zIHdoZXRoZXIKKyAgICovCisgIHZhciBp
c1RhZ1ZhbGlkV2l0aFBhcmVudCA9IGZ1bmN0aW9uICh0YWcsIHBhcmVudFRhZykgeworICAgIC8v
IEZpcnN0LCBsZXQncyBjaGVjayBpZiB3ZSdyZSBpbiBhbiB1bnVzdWFsIHBhcnNpbmcgbW9kZS4u
LgorICAgIHN3aXRjaCAocGFyZW50VGFnKSB7CisgICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53
aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNwYXJzaW5nLW1haW4taW5zZWxlY3QKKyAg
ICAgIGNhc2UgJ3NlbGVjdCc6CisgICAgICAgIHJldHVybiB0YWcgPT09ICdvcHRpb24nIHx8IHRh
ZyA9PT0gJ29wdGdyb3VwJyB8fCB0YWcgPT09ICcjdGV4dCc7CisgICAgICBjYXNlICdvcHRncm91
cCc6CisgICAgICAgIHJldHVybiB0YWcgPT09ICdvcHRpb24nIHx8IHRhZyA9PT0gJyN0ZXh0JzsK
KyAgICAgIC8vIFN0cmljdGx5IHNwZWFraW5nLCBzZWVpbmcgYW4gPG9wdGlvbj4gZG9lc24ndCBt
ZWFuIHdlJ3JlIGluIGEgPHNlbGVjdD4KKyAgICAgIC8vIGJ1dAorICAgICAgY2FzZSAnb3B0aW9u
JzoKKyAgICAgICAgcmV0dXJuIHRhZyA9PT0gJyN0ZXh0JzsKKworICAgICAgLy8gaHR0cHM6Ly9o
dG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjcGFyc2luZy1tYWluLWlu
dGQKKyAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRh
eC5odG1sI3BhcnNpbmctbWFpbi1pbmNhcHRpb24KKyAgICAgIC8vIE5vIHNwZWNpYWwgYmVoYXZp
b3Igc2luY2UgdGhlc2UgcnVsZXMgZmFsbCBiYWNrIHRvICJpbiBib2R5IiBtb2RlIGZvcgorICAg
ICAgLy8gYWxsIGV4Y2VwdCBzcGVjaWFsIHRhYmxlIG5vZGVzIHdoaWNoIGNhdXNlIGJhZCBwYXJz
aW5nIGJlaGF2aW9yIGFueXdheS4KKworICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdn
Lm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjcGFyc2luZy1tYWluLWludHIKKyAgICAgIGNhc2Ug
J3RyJzoKKyAgICAgICAgcmV0dXJuIHRhZyA9PT0gJ3RoJyB8fCB0YWcgPT09ICd0ZCcgfHwgdGFn
ID09PSAnc3R5bGUnIHx8IHRhZyA9PT0gJ3NjcmlwdCcgfHwgdGFnID09PSAndGVtcGxhdGUnOwor
CisgICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXgu
aHRtbCNwYXJzaW5nLW1haW4taW50Ym9keQorICAgICAgY2FzZSAndGJvZHknOgorICAgICAgY2Fz
ZSAndGhlYWQnOgorICAgICAgY2FzZSAndGZvb3QnOgorICAgICAgICByZXR1cm4gdGFnID09PSAn
dHInIHx8IHRhZyA9PT0gJ3N0eWxlJyB8fCB0YWcgPT09ICdzY3JpcHQnIHx8IHRhZyA9PT0gJ3Rl
bXBsYXRlJzsKKworICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBh
Z2Uvc3ludGF4Lmh0bWwjcGFyc2luZy1tYWluLWluY29sZ3JvdXAKKyAgICAgIGNhc2UgJ2NvbGdy
b3VwJzoKKyAgICAgICAgcmV0dXJuIHRhZyA9PT0gJ2NvbCcgfHwgdGFnID09PSAndGVtcGxhdGUn
OworCisgICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50
YXguaHRtbCNwYXJzaW5nLW1haW4taW50YWJsZQorICAgICAgY2FzZSAndGFibGUnOgorICAgICAg
ICByZXR1cm4gdGFnID09PSAnY2FwdGlvbicgfHwgdGFnID09PSAnY29sZ3JvdXAnIHx8IHRhZyA9
PT0gJ3Rib2R5JyB8fCB0YWcgPT09ICd0Zm9vdCcgfHwgdGFnID09PSAndGhlYWQnIHx8IHRhZyA9
PT0gJ3N0eWxlJyB8fCB0YWcgPT09ICdzY3JpcHQnIHx8IHRhZyA9PT0gJ3RlbXBsYXRlJzsKKwor
ICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0
bWwjcGFyc2luZy1tYWluLWluaGVhZAorICAgICAgY2FzZSAnaGVhZCc6CisgICAgICAgIHJldHVy
biB0YWcgPT09ICdiYXNlJyB8fCB0YWcgPT09ICdiYXNlZm9udCcgfHwgdGFnID09PSAnYmdzb3Vu
ZCcgfHwgdGFnID09PSAnbGluaycgfHwgdGFnID09PSAnbWV0YScgfHwgdGFnID09PSAndGl0bGUn
IHx8IHRhZyA9PT0gJ25vc2NyaXB0JyB8fCB0YWcgPT09ICdub2ZyYW1lcycgfHwgdGFnID09PSAn
c3R5bGUnIHx8IHRhZyA9PT0gJ3NjcmlwdCcgfHwgdGFnID09PSAndGVtcGxhdGUnOworCisgICAg
ICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zZW1hbnRpY3MuaHRt
bCN0aGUtaHRtbC1lbGVtZW50CisgICAgICBjYXNlICdodG1sJzoKKyAgICAgICAgcmV0dXJuIHRh
ZyA9PT0gJ2hlYWQnIHx8IHRhZyA9PT0gJ2JvZHknOworICAgICAgY2FzZSAnI2RvY3VtZW50JzoK
KyAgICAgICAgcmV0dXJuIHRhZyA9PT0gJ2h0bWwnOworICAgIH0KKworICAgIC8vIFByb2JhYmx5
IGluIHRoZSAiaW4gYm9keSIgcGFyc2luZyBtb2RlLCBzbyB3ZSBvdXRsYXcgb25seSB0YWcgY29t
Ym9zCisgICAgLy8gd2hlcmUgdGhlIHBhcnNpbmcgcnVsZXMgY2F1c2UgaW1wbGljaXQgb3BlbnMg
b3IgY2xvc2VzIHRvIGJlIGFkZGVkLgorICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5v
cmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI3BhcnNpbmctbWFpbi1pbmJvZHkKKyAgICBzd2l0Y2gg
KHRhZykgeworICAgICAgY2FzZSAnaDEnOgorICAgICAgY2FzZSAnaDInOgorICAgICAgY2FzZSAn
aDMnOgorICAgICAgY2FzZSAnaDQnOgorICAgICAgY2FzZSAnaDUnOgorICAgICAgY2FzZSAnaDYn
OgorICAgICAgICByZXR1cm4gcGFyZW50VGFnICE9PSAnaDEnICYmIHBhcmVudFRhZyAhPT0gJ2gy
JyAmJiBwYXJlbnRUYWcgIT09ICdoMycgJiYgcGFyZW50VGFnICE9PSAnaDQnICYmIHBhcmVudFRh
ZyAhPT0gJ2g1JyAmJiBwYXJlbnRUYWcgIT09ICdoNic7CisKKyAgICAgIGNhc2UgJ3JwJzoKKyAg
ICAgIGNhc2UgJ3J0JzoKKyAgICAgICAgcmV0dXJuIGltcGxpZWRFbmRUYWdzLmluZGV4T2YocGFy
ZW50VGFnKSA9PT0gLTE7CisKKyAgICAgIGNhc2UgJ2JvZHknOgorICAgICAgY2FzZSAnY2FwdGlv
bic6CisgICAgICBjYXNlICdjb2wnOgorICAgICAgY2FzZSAnY29sZ3JvdXAnOgorICAgICAgY2Fz
ZSAnZnJhbWUnOgorICAgICAgY2FzZSAnaGVhZCc6CisgICAgICBjYXNlICdodG1sJzoKKyAgICAg
IGNhc2UgJ3Rib2R5JzoKKyAgICAgIGNhc2UgJ3RkJzoKKyAgICAgIGNhc2UgJ3Rmb290JzoKKyAg
ICAgIGNhc2UgJ3RoJzoKKyAgICAgIGNhc2UgJ3RoZWFkJzoKKyAgICAgIGNhc2UgJ3RyJzoKKyAg
ICAgICAgLy8gVGhlc2UgdGFncyBhcmUgb25seSB2YWxpZCB3aXRoIGEgZmV3IHBhcmVudHMgdGhh
dCBoYXZlIHNwZWNpYWwgY2hpbGQKKyAgICAgICAgLy8gcGFyc2luZyBydWxlcyAtLSBpZiB3ZSdy
ZSBkb3duIGhlcmUsIHRoZW4gbm9uZSBvZiB0aG9zZSBtYXRjaGVkIGFuZAorICAgICAgICAvLyBz
byB3ZSBhbGxvdyBpdCBvbmx5IGlmIHdlIGRvbid0IGtub3cgd2hhdCB0aGUgcGFyZW50IGlzLCBh
cyBhbGwgb3RoZXIKKyAgICAgICAgLy8gY2FzZXMgYXJlIGludmFsaWQuCisgICAgICAgIHJldHVy
biBwYXJlbnRUYWcgPT0gbnVsbDsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKKyAgfTsKKwor
ICAvKioKKyAgICogUmV0dXJucyB3aGV0aGVyCisgICAqLworICB2YXIgZmluZEludmFsaWRBbmNl
c3RvckZvclRhZyA9IGZ1bmN0aW9uICh0YWcsIGFuY2VzdG9ySW5mbykgeworICAgIHN3aXRjaCAo
dGFnKSB7CisgICAgICBjYXNlICdhZGRyZXNzJzoKKyAgICAgIGNhc2UgJ2FydGljbGUnOgorICAg
ICAgY2FzZSAnYXNpZGUnOgorICAgICAgY2FzZSAnYmxvY2txdW90ZSc6CisgICAgICBjYXNlICdj
ZW50ZXInOgorICAgICAgY2FzZSAnZGV0YWlscyc6CisgICAgICBjYXNlICdkaWFsb2cnOgorICAg
ICAgY2FzZSAnZGlyJzoKKyAgICAgIGNhc2UgJ2Rpdic6CisgICAgICBjYXNlICdkbCc6CisgICAg
ICBjYXNlICdmaWVsZHNldCc6CisgICAgICBjYXNlICdmaWdjYXB0aW9uJzoKKyAgICAgIGNhc2Ug
J2ZpZ3VyZSc6CisgICAgICBjYXNlICdmb290ZXInOgorICAgICAgY2FzZSAnaGVhZGVyJzoKKyAg
ICAgIGNhc2UgJ2hncm91cCc6CisgICAgICBjYXNlICdtYWluJzoKKyAgICAgIGNhc2UgJ21lbnUn
OgorICAgICAgY2FzZSAnbmF2JzoKKyAgICAgIGNhc2UgJ29sJzoKKyAgICAgIGNhc2UgJ3AnOgor
ICAgICAgY2FzZSAnc2VjdGlvbic6CisgICAgICBjYXNlICdzdW1tYXJ5JzoKKyAgICAgIGNhc2Ug
J3VsJzoKKworICAgICAgY2FzZSAncHJlJzoKKyAgICAgIGNhc2UgJ2xpc3RpbmcnOgorCisgICAg
ICBjYXNlICd0YWJsZSc6CisKKyAgICAgIGNhc2UgJ2hyJzoKKworICAgICAgY2FzZSAneG1wJzoK
KworICAgICAgY2FzZSAnaDEnOgorICAgICAgY2FzZSAnaDInOgorICAgICAgY2FzZSAnaDMnOgor
ICAgICAgY2FzZSAnaDQnOgorICAgICAgY2FzZSAnaDUnOgorICAgICAgY2FzZSAnaDYnOgorICAg
ICAgICByZXR1cm4gYW5jZXN0b3JJbmZvLnBUYWdJbkJ1dHRvblNjb3BlOworCisgICAgICBjYXNl
ICdmb3JtJzoKKyAgICAgICAgcmV0dXJuIGFuY2VzdG9ySW5mby5mb3JtVGFnIHx8IGFuY2VzdG9y
SW5mby5wVGFnSW5CdXR0b25TY29wZTsKKworICAgICAgY2FzZSAnbGknOgorICAgICAgICByZXR1
cm4gYW5jZXN0b3JJbmZvLmxpc3RJdGVtVGFnQXV0b2Nsb3Npbmc7CisKKyAgICAgIGNhc2UgJ2Rk
JzoKKyAgICAgIGNhc2UgJ2R0JzoKKyAgICAgICAgcmV0dXJuIGFuY2VzdG9ySW5mby5kbEl0ZW1U
YWdBdXRvY2xvc2luZzsKKworICAgICAgY2FzZSAnYnV0dG9uJzoKKyAgICAgICAgcmV0dXJuIGFu
Y2VzdG9ySW5mby5idXR0b25UYWdJblNjb3BlOworCisgICAgICBjYXNlICdhJzoKKyAgICAgICAg
Ly8gU3BlYyBzYXlzIHNvbWV0aGluZyBhYm91dCBzdG9yaW5nIGEgbGlzdCBvZiBtYXJrZXJzLCBi
dXQgaXQgc291bmRzCisgICAgICAgIC8vIGVxdWl2YWxlbnQgdG8gdGhpcyBjaGVjay4KKyAgICAg
ICAgcmV0dXJuIGFuY2VzdG9ySW5mby5hVGFnSW5TY29wZTsKKworICAgICAgY2FzZSAnbm9icic6
CisgICAgICAgIHJldHVybiBhbmNlc3RvckluZm8ubm9iclRhZ0luU2NvcGU7CisgICAgfQorCisg
ICAgcmV0dXJuIG51bGw7CisgIH07CisKKyAgLyoqCisgICAqIEdpdmVuIGEgUmVhY3RDb21wb3Np
dGVDb21wb25lbnQgaW5zdGFuY2UsIHJldHVybiBhIGxpc3Qgb2YgaXRzIHJlY3Vyc2l2ZQorICAg
KiBvd25lcnMsIHN0YXJ0aW5nIGF0IHRoZSByb290IGFuZCBlbmRpbmcgd2l0aCB0aGUgaW5zdGFu
Y2UgaXRzZWxmLgorICAgKi8KKyAgdmFyIGZpbmRPd25lclN0YWNrID0gZnVuY3Rpb24gKGluc3Rh
bmNlKSB7CisgICAgaWYgKCFpbnN0YW5jZSkgeworICAgICAgcmV0dXJuIFtdOworICAgIH0KKwor
ICAgIHZhciBzdGFjayA9IFtdOworICAgIGRvIHsKKyAgICAgIHN0YWNrLnB1c2goaW5zdGFuY2Up
OworICAgIH0gd2hpbGUgKGluc3RhbmNlID0gaW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50Ll9vd25l
cik7CisgICAgc3RhY2sucmV2ZXJzZSgpOworICAgIHJldHVybiBzdGFjazsKKyAgfTsKKworICB2
YXIgZGlkV2FybiA9IHt9OworCisgIHZhbGlkYXRlRE9NTmVzdGluZyA9IGZ1bmN0aW9uIChjaGls
ZFRhZywgY2hpbGRUZXh0LCBjaGlsZEluc3RhbmNlLCBhbmNlc3RvckluZm8pIHsKKyAgICBhbmNl
c3RvckluZm8gPSBhbmNlc3RvckluZm8gfHwgZW1wdHlBbmNlc3RvckluZm87CisgICAgdmFyIHBh
cmVudEluZm8gPSBhbmNlc3RvckluZm8uY3VycmVudDsKKyAgICB2YXIgcGFyZW50VGFnID0gcGFy
ZW50SW5mbyAmJiBwYXJlbnRJbmZvLnRhZzsKKworICAgIGlmIChjaGlsZFRleHQgIT0gbnVsbCkg
eworICAgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhjaGlsZFRh
ZyA9PSBudWxsLCAndmFsaWRhdGVET01OZXN0aW5nOiB3aGVuIGNoaWxkVGV4dCBpcyBwYXNzZWQs
IGNoaWxkVGFnIHNob3VsZCBiZSBudWxsJykgOiB2b2lkIDA7CisgICAgICBjaGlsZFRhZyA9ICcj
dGV4dCc7CisgICAgfQorCisgICAgdmFyIGludmFsaWRQYXJlbnQgPSBpc1RhZ1ZhbGlkV2l0aFBh
cmVudChjaGlsZFRhZywgcGFyZW50VGFnKSA/IG51bGwgOiBwYXJlbnRJbmZvOworICAgIHZhciBp
bnZhbGlkQW5jZXN0b3IgPSBpbnZhbGlkUGFyZW50ID8gbnVsbCA6IGZpbmRJbnZhbGlkQW5jZXN0
b3JGb3JUYWcoY2hpbGRUYWcsIGFuY2VzdG9ySW5mbyk7CisgICAgdmFyIHByb2JsZW1hdGljID0g
aW52YWxpZFBhcmVudCB8fCBpbnZhbGlkQW5jZXN0b3I7CisKKyAgICBpZiAocHJvYmxlbWF0aWMp
IHsKKyAgICAgIHZhciBhbmNlc3RvclRhZyA9IHByb2JsZW1hdGljLnRhZzsKKyAgICAgIHZhciBh
bmNlc3Rvckluc3RhbmNlID0gcHJvYmxlbWF0aWMuaW5zdGFuY2U7CisKKyAgICAgIHZhciBjaGls
ZE93bmVyID0gY2hpbGRJbnN0YW5jZSAmJiBjaGlsZEluc3RhbmNlLl9jdXJyZW50RWxlbWVudC5f
b3duZXI7CisgICAgICB2YXIgYW5jZXN0b3JPd25lciA9IGFuY2VzdG9ySW5zdGFuY2UgJiYgYW5j
ZXN0b3JJbnN0YW5jZS5fY3VycmVudEVsZW1lbnQuX293bmVyOworCisgICAgICB2YXIgY2hpbGRP
d25lcnMgPSBmaW5kT3duZXJTdGFjayhjaGlsZE93bmVyKTsKKyAgICAgIHZhciBhbmNlc3Rvck93
bmVycyA9IGZpbmRPd25lclN0YWNrKGFuY2VzdG9yT3duZXIpOworCisgICAgICB2YXIgbWluU3Rh
Y2tMZW4gPSBNYXRoLm1pbihjaGlsZE93bmVycy5sZW5ndGgsIGFuY2VzdG9yT3duZXJzLmxlbmd0
aCk7CisgICAgICB2YXIgaTsKKworICAgICAgdmFyIGRlZXBlc3RDb21tb24gPSAtMTsKKyAgICAg
IGZvciAoaSA9IDA7IGkgPCBtaW5TdGFja0xlbjsgaSsrKSB7CisgICAgICAgIGlmIChjaGlsZE93
bmVyc1tpXSA9PT0gYW5jZXN0b3JPd25lcnNbaV0pIHsKKyAgICAgICAgICBkZWVwZXN0Q29tbW9u
ID0gaTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
ICAgfQorCisgICAgICB2YXIgVU5LTk9XTiA9ICcodW5rbm93biknOworICAgICAgdmFyIGNoaWxk
T3duZXJOYW1lcyA9IGNoaWxkT3duZXJzLnNsaWNlKGRlZXBlc3RDb21tb24gKyAxKS5tYXAoZnVu
Y3Rpb24gKGluc3QpIHsKKyAgICAgICAgcmV0dXJuIGluc3QuZ2V0TmFtZSgpIHx8IFVOS05PV047
CisgICAgICB9KTsKKyAgICAgIHZhciBhbmNlc3Rvck93bmVyTmFtZXMgPSBhbmNlc3Rvck93bmVy
cy5zbGljZShkZWVwZXN0Q29tbW9uICsgMSkubWFwKGZ1bmN0aW9uIChpbnN0KSB7CisgICAgICAg
IHJldHVybiBpbnN0LmdldE5hbWUoKSB8fCBVTktOT1dOOworICAgICAgfSk7CisgICAgICB2YXIg
b3duZXJJbmZvID0gW10uY29uY2F0KAorICAgICAgLy8gSWYgdGhlIHBhcmVudCBhbmQgY2hpbGQg
aW5zdGFuY2VzIGhhdmUgYSBjb21tb24gb3duZXIgYW5jZXN0b3IsIHN0YXJ0CisgICAgICAvLyB3
aXRoIHRoYXQgLS0gb3RoZXJ3aXNlIHdlIGp1c3Qgc3RhcnQgd2l0aCB0aGUgcGFyZW50J3Mgb3du
ZXJzLgorICAgICAgZGVlcGVzdENvbW1vbiAhPT0gLTEgPyBjaGlsZE93bmVyc1tkZWVwZXN0Q29t
bW9uXS5nZXROYW1lKCkgfHwgVU5LTk9XTiA6IFtdLCBhbmNlc3Rvck93bmVyTmFtZXMsIGFuY2Vz
dG9yVGFnLAorICAgICAgLy8gSWYgd2UncmUgd2FybmluZyBhYm91dCBhbiBpbnZhbGlkIChub24t
cGFyZW50KSBhbmNlc3RyeSwgYWRkICcuLi4nCisgICAgICBpbnZhbGlkQW5jZXN0b3IgPyBbJy4u
LiddIDogW10sIGNoaWxkT3duZXJOYW1lcywgY2hpbGRUYWcpLmpvaW4oJyA+ICcpOworCisgICAg
ICB2YXIgd2FybktleSA9ICEhaW52YWxpZFBhcmVudCArICd8JyArIGNoaWxkVGFnICsgJ3wnICsg
YW5jZXN0b3JUYWcgKyAnfCcgKyBvd25lckluZm87CisgICAgICBpZiAoZGlkV2Fyblt3YXJuS2V5
XSkgeworICAgICAgICByZXR1cm47CisgICAgICB9CisgICAgICBkaWRXYXJuW3dhcm5LZXldID0g
dHJ1ZTsKKworICAgICAgdmFyIHRhZ0Rpc3BsYXlOYW1lID0gY2hpbGRUYWc7CisgICAgICB2YXIg
d2hpdGVzcGFjZUluZm8gPSAnJzsKKyAgICAgIGlmIChjaGlsZFRhZyA9PT0gJyN0ZXh0Jykgewor
ICAgICAgICBpZiAoL1xTLy50ZXN0KGNoaWxkVGV4dCkpIHsKKyAgICAgICAgICB0YWdEaXNwbGF5
TmFtZSA9ICdUZXh0IG5vZGVzJzsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICB0YWdEaXNw
bGF5TmFtZSA9ICdXaGl0ZXNwYWNlIHRleHQgbm9kZXMnOworICAgICAgICAgIHdoaXRlc3BhY2VJ
bmZvID0gJyBNYWtlIHN1cmUgeW91IGRvblwndCBoYXZlIGFueSBleHRyYSB3aGl0ZXNwYWNlIGJl
dHdlZW4gdGFncyBvbiAnICsgJ2VhY2ggbGluZSBvZiB5b3VyIHNvdXJjZSBjb2RlLic7CisgICAg
ICAgIH0KKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHRhZ0Rpc3BsYXlOYW1lID0gJzwnICsgY2hp
bGRUYWcgKyAnPic7CisgICAgICB9CisKKyAgICAgIGlmIChpbnZhbGlkUGFyZW50KSB7CisgICAg
ICAgIHZhciBpbmZvID0gJyc7CisgICAgICAgIGlmIChhbmNlc3RvclRhZyA9PT0gJ3RhYmxlJyAm
JiBjaGlsZFRhZyA9PT0gJ3RyJykgeworICAgICAgICAgIGluZm8gKz0gJyBBZGQgYSA8dGJvZHk+
IHRvIHlvdXIgY29kZSB0byBtYXRjaCB0aGUgRE9NIHRyZWUgZ2VuZXJhdGVkIGJ5ICcgKyAndGhl
IGJyb3dzZXIuJzsKKyAgICAgICAgfQorICAgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVj
dGlvbicgPyB3YXJuaW5nKGZhbHNlLCAndmFsaWRhdGVET01OZXN0aW5nKC4uLik6ICVzIGNhbm5v
dCBhcHBlYXIgYXMgYSBjaGlsZCBvZiA8JXM+LiVzICcgKyAnU2VlICVzLiVzJywgdGFnRGlzcGxh
eU5hbWUsIGFuY2VzdG9yVGFnLCB3aGl0ZXNwYWNlSW5mbywgb3duZXJJbmZvLCBpbmZvKSA6IHZv
aWQgMDsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0
aW9uJyA/IHdhcm5pbmcoZmFsc2UsICd2YWxpZGF0ZURPTU5lc3RpbmcoLi4uKTogJXMgY2Fubm90
IGFwcGVhciBhcyBhIGRlc2NlbmRhbnQgb2YgJyArICc8JXM+LiBTZWUgJXMuJywgdGFnRGlzcGxh
eU5hbWUsIGFuY2VzdG9yVGFnLCBvd25lckluZm8pIDogdm9pZCAwOworICAgICAgfQorICAgIH0K
KyAgfTsKKworICB2YWxpZGF0ZURPTU5lc3RpbmcudXBkYXRlZEFuY2VzdG9ySW5mbyA9IHVwZGF0
ZWRBbmNlc3RvckluZm87CisKKyAgLy8gRm9yIHRlc3RpbmcKKyAgdmFsaWRhdGVET01OZXN0aW5n
LmlzVGFnVmFsaWRJbkNvbnRleHQgPSBmdW5jdGlvbiAodGFnLCBhbmNlc3RvckluZm8pIHsKKyAg
ICBhbmNlc3RvckluZm8gPSBhbmNlc3RvckluZm8gfHwgZW1wdHlBbmNlc3RvckluZm87CisgICAg
dmFyIHBhcmVudEluZm8gPSBhbmNlc3RvckluZm8uY3VycmVudDsKKyAgICB2YXIgcGFyZW50VGFn
ID0gcGFyZW50SW5mbyAmJiBwYXJlbnRJbmZvLnRhZzsKKyAgICByZXR1cm4gaXNUYWdWYWxpZFdp
dGhQYXJlbnQodGFnLCBwYXJlbnRUYWcpICYmICFmaW5kSW52YWxpZEFuY2VzdG9yRm9yVGFnKHRh
ZywgYW5jZXN0b3JJbmZvKTsKKyAgfTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSB2YWxpZGF0ZURP
TU5lc3Rpbmc7Cit9LHsiMTQyIjoxNDIsIjE1NyI6MTU3LCIxNTgiOjE1OH1dLDEzMjpbZnVuY3Rp
b24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNl
bnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMg
c291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5k
IGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNv
dXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBi
ZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisg
Ki8KKworLyogZ2xvYmFscyBSZWFjdCAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBSZWFjdElu
dGVybmFscyA9IFJlYWN0Ll9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxM
X0JFX0ZJUkVEOworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0SW50ZXJuYWxzLlJlYWN0Q29tcG9u
ZW50VHJlZUhvb2s7Cit9LHt9XSwxMzM6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMp
eworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBn
cmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmls
ZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKy8qIGdsb2JhbHMgUmVhY3QgKi8K
KworJ3VzZSBzdHJpY3QnOworCit2YXIgUmVhY3RJbnRlcm5hbHMgPSBSZWFjdC5fX1NFQ1JFVF9J
TlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRDsKKworbW9kdWxlLmV4cG9y
dHMgPSBSZWFjdEludGVybmFscy5SZWFjdEN1cnJlbnRPd25lcjsKK30se31dLDEzNDpbZnVuY3Rp
b24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNl
bnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMg
c291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5k
IGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNv
dXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBi
ZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisg
Ki8KKworLyogZ2xvYmFscyBSZWFjdCAqLworCisndXNlIHN0cmljdCc7CisKK21vZHVsZS5leHBv
cnRzID0gUmVhY3Q7Cit9LHt9XSwxMzU6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMp
eworJ3VzZSBzdHJpY3QnOworCisvKioKKyAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBG
YWNlYm9vaywgSW5jLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwg
VmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmls
ZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRh
aW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2Fi
bGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQg
dW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAq
IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhw
cmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFu
Z3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhl
IExpY2Vuc2UuCisgKgorICogQHR5cGVjaGVja3MKKyAqLworCit2YXIgZW1wdHlGdW5jdGlvbiA9
IF9kZXJlcV8oMTQyKTsKKworLyoqCisgKiBVcHN0cmVhbSB2ZXJzaW9uIG9mIGV2ZW50IGxpc3Rl
bmVyLiBEb2VzIG5vdCB0YWtlIGludG8gYWNjb3VudCBzcGVjaWZpYworICogbmF0dXJlIG9mIHBs
YXRmb3JtLgorICovCit2YXIgRXZlbnRMaXN0ZW5lciA9IHsKKyAgLyoqCisgICAqIExpc3RlbiB0
byBET00gZXZlbnRzIGR1cmluZyB0aGUgYnViYmxlIHBoYXNlLgorICAgKgorICAgKiBAcGFyYW0g
e0RPTUV2ZW50VGFyZ2V0fSB0YXJnZXQgRE9NIGVsZW1lbnQgdG8gcmVnaXN0ZXIgbGlzdGVuZXIg
b24uCisgICAqIEBwYXJhbSB7c3RyaW5nfSBldmVudFR5cGUgRXZlbnQgdHlwZSwgZS5nLiAnY2xp
Y2snIG9yICdtb3VzZW92ZXInLgorICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayBDYWxs
YmFjayBmdW5jdGlvbi4KKyAgICogQHJldHVybiB7b2JqZWN0fSBPYmplY3Qgd2l0aCBhIGByZW1v
dmVgIG1ldGhvZC4KKyAgICovCisgIGxpc3RlbjogZnVuY3Rpb24gbGlzdGVuKHRhcmdldCwgZXZl
bnRUeXBlLCBjYWxsYmFjaykgeworICAgIGlmICh0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcikgewor
ICAgICAgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBjYWxsYmFjaywgZmFsc2Up
OworICAgICAgcmV0dXJuIHsKKyAgICAgICAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUoKSB7Cisg
ICAgICAgICAgdGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBjYWxsYmFjaywg
ZmFsc2UpOworICAgICAgICB9CisgICAgICB9OworICAgIH0gZWxzZSBpZiAodGFyZ2V0LmF0dGFj
aEV2ZW50KSB7CisgICAgICB0YXJnZXQuYXR0YWNoRXZlbnQoJ29uJyArIGV2ZW50VHlwZSwgY2Fs
bGJhY2spOworICAgICAgcmV0dXJuIHsKKyAgICAgICAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUo
KSB7CisgICAgICAgICAgdGFyZ2V0LmRldGFjaEV2ZW50KCdvbicgKyBldmVudFR5cGUsIGNhbGxi
YWNrKTsKKyAgICAgICAgfQorICAgICAgfTsKKyAgICB9CisgIH0sCisKKyAgLyoqCisgICAqIExp
c3RlbiB0byBET00gZXZlbnRzIGR1cmluZyB0aGUgY2FwdHVyZSBwaGFzZS4KKyAgICoKKyAgICog
QHBhcmFtIHtET01FdmVudFRhcmdldH0gdGFyZ2V0IERPTSBlbGVtZW50IHRvIHJlZ2lzdGVyIGxp
c3RlbmVyIG9uLgorICAgKiBAcGFyYW0ge3N0cmluZ30gZXZlbnRUeXBlIEV2ZW50IHR5cGUsIGUu
Zy4gJ2NsaWNrJyBvciAnbW91c2VvdmVyJy4KKyAgICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJh
Y2sgQ2FsbGJhY2sgZnVuY3Rpb24uCisgICAqIEByZXR1cm4ge29iamVjdH0gT2JqZWN0IHdpdGgg
YSBgcmVtb3ZlYCBtZXRob2QuCisgICAqLworICBjYXB0dXJlOiBmdW5jdGlvbiBjYXB0dXJlKHRh
cmdldCwgZXZlbnRUeXBlLCBjYWxsYmFjaykgeworICAgIGlmICh0YXJnZXQuYWRkRXZlbnRMaXN0
ZW5lcikgeworICAgICAgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBjYWxsYmFj
aywgdHJ1ZSk7CisgICAgICByZXR1cm4geworICAgICAgICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92
ZSgpIHsKKyAgICAgICAgICB0YXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGNh
bGxiYWNrLCB0cnVlKTsKKyAgICAgICAgfQorICAgICAgfTsKKyAgICB9IGVsc2UgeworICAgICAg
aWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgICBjb25zb2xlLmVy
cm9yKCdBdHRlbXB0ZWQgdG8gbGlzdGVuIHRvIGV2ZW50cyBkdXJpbmcgdGhlIGNhcHR1cmUgcGhh
c2Ugb24gYSAnICsgJ2Jyb3dzZXIgdGhhdCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBjYXB0dXJlIHBo
YXNlLiBZb3VyIGFwcGxpY2F0aW9uICcgKyAnd2lsbCBub3QgcmVjZWl2ZSBzb21lIGV2ZW50cy4n
KTsKKyAgICAgIH0KKyAgICAgIHJldHVybiB7CisgICAgICAgIHJlbW92ZTogZW1wdHlGdW5jdGlv
bgorICAgICAgfTsKKyAgICB9CisgIH0sCisKKyAgcmVnaXN0ZXJEZWZhdWx0OiBmdW5jdGlvbiBy
ZWdpc3RlckRlZmF1bHQoKSB7fQorfTsKKworbW9kdWxlLmV4cG9ydHMgPSBFdmVudExpc3RlbmVy
OworfSx7IjE0MiI6MTQyfV0sMTM2OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsK
Ky8qKgorICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQg
dW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxl
IGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFs
IGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBm
aWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2
YXIgY2FuVXNlRE9NID0gISEodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93
LmRvY3VtZW50ICYmIHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KTsKKworLyoqCisgKiBT
aW1wbGUsIGxpZ2h0d2VpZ2h0IG1vZHVsZSBhc3Npc3Rpbmcgd2l0aCB0aGUgZGV0ZWN0aW9uIGFu
ZCBjb250ZXh0IG9mCisgKiBXb3JrZXIuIEhlbHBzIGF2b2lkIGNpcmN1bGFyIGRlcGVuZGVuY2ll
cyBhbmQgYWxsb3dzIGNvZGUgdG8gcmVhc29uIGFib3V0CisgKiB3aGV0aGVyIG9yIG5vdCB0aGV5
IGFyZSBpbiBhIFdvcmtlciwgZXZlbiBpZiB0aGV5IG5ldmVyIGluY2x1ZGUgdGhlIG1haW4KKyAq
IGBSZWFjdFdvcmtlcmAgZGVwZW5kZW5jeS4KKyAqLwordmFyIEV4ZWN1dGlvbkVudmlyb25tZW50
ID0geworCisgIGNhblVzZURPTTogY2FuVXNlRE9NLAorCisgIGNhblVzZVdvcmtlcnM6IHR5cGVv
ZiBXb3JrZXIgIT09ICd1bmRlZmluZWQnLAorCisgIGNhblVzZUV2ZW50TGlzdGVuZXJzOiBjYW5V
c2VET00gJiYgISEod2luZG93LmFkZEV2ZW50TGlzdGVuZXIgfHwgd2luZG93LmF0dGFjaEV2ZW50
KSwKKworICBjYW5Vc2VWaWV3cG9ydDogY2FuVXNlRE9NICYmICEhd2luZG93LnNjcmVlbiwKKwor
ICBpc0luV29ya2VyOiAhY2FuVXNlRE9NIC8vIEZvciBub3csIHRoaXMgaXMgdHJ1ZSAtIG1pZ2h0
IGNoYW5nZSBpbiB0aGUgZnV0dXJlLgorCit9OworCittb2R1bGUuZXhwb3J0cyA9IEV4ZWN1dGlv
bkVudmlyb25tZW50OworfSx7fV0sMTM3OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRz
KXsKKyJ1c2Ugc3RyaWN0IjsKKworLyoqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwg
RmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3Vy
Y2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4g
dGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNl
IHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIEB0
eXBlY2hlY2tzCisgKi8KKwordmFyIF9oeXBoZW5QYXR0ZXJuID0gLy0oLikvZzsKKworLyoqCisg
KiBDYW1lbGNhc2VzIGEgaHlwaGVuYXRlZCBzdHJpbmcsIGZvciBleGFtcGxlOgorICoKKyAqICAg
PiBjYW1lbGl6ZSgnYmFja2dyb3VuZC1jb2xvcicpCisgKiAgIDwgImJhY2tncm91bmRDb2xvciIK
KyAqCisgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nCisgKiBAcmV0dXJuIHtzdHJpbmd9CisgKi8K
K2Z1bmN0aW9uIGNhbWVsaXplKHN0cmluZykgeworICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoX2h5
cGhlblBhdHRlcm4sIGZ1bmN0aW9uIChfLCBjaGFyYWN0ZXIpIHsKKyAgICByZXR1cm4gY2hhcmFj
dGVyLnRvVXBwZXJDYXNlKCk7CisgIH0pOworfQorCittb2R1bGUuZXhwb3J0cyA9IGNhbWVsaXpl
OworfSx7fV0sMTM4OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICog
Q29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl
IEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50Cisg
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiBAdHlwZWNoZWNrcworICovCisKKyd1c2Ugc3RyaWN0
JzsKKwordmFyIGNhbWVsaXplID0gX2RlcmVxXygxMzcpOworCit2YXIgbXNQYXR0ZXJuID0gL14t
bXMtLzsKKworLyoqCisgKiBDYW1lbGNhc2VzIGEgaHlwaGVuYXRlZCBDU1MgcHJvcGVydHkgbmFt
ZSwgZm9yIGV4YW1wbGU6CisgKgorICogICA+IGNhbWVsaXplU3R5bGVOYW1lKCdiYWNrZ3JvdW5k
LWNvbG9yJykKKyAqICAgPCAiYmFja2dyb3VuZENvbG9yIgorICogICA+IGNhbWVsaXplU3R5bGVO
YW1lKCctbW96LXRyYW5zaXRpb24nKQorICogICA8ICJNb3pUcmFuc2l0aW9uIgorICogICA+IGNh
bWVsaXplU3R5bGVOYW1lKCctbXMtdHJhbnNpdGlvbicpCisgKiAgIDwgIm1zVHJhbnNpdGlvbiIK
KyAqCisgKiBBcyBBbmRpIFNtaXRoIHN1Z2dlc3RzCisgKiAoaHR0cDovL3d3dy5hbmRpc21pdGgu
Y29tL2Jsb2cvMjAxMi8wMi9tb2Rlcm5penItcHJlZml4ZWQvKSwgYW4gYC1tc2AgcHJlZml4Cisg
KiBpcyBjb252ZXJ0ZWQgdG8gbG93ZXJjYXNlIGBtc2AuCisgKgorICogQHBhcmFtIHtzdHJpbmd9
IHN0cmluZworICogQHJldHVybiB7c3RyaW5nfQorICovCitmdW5jdGlvbiBjYW1lbGl6ZVN0eWxl
TmFtZShzdHJpbmcpIHsKKyAgcmV0dXJuIGNhbWVsaXplKHN0cmluZy5yZXBsYWNlKG1zUGF0dGVy
biwgJ21zLScpKTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBjYW1lbGl6ZVN0eWxlTmFtZTsKK30s
eyIxMzciOjEzN31dLDEzOTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisndXNl
IHN0cmljdCc7CisKKy8qKgorICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29r
LCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUg
aXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICog
TElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBB
biBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0
aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiAKKyAqLworCit2
YXIgaXNUZXh0Tm9kZSA9IF9kZXJlcV8oMTUyKTsKKworLyplc2xpbnQtZGlzYWJsZSBuby1iaXR3
aXNlICovCisKKy8qKgorICogQ2hlY2tzIGlmIGEgZ2l2ZW4gRE9NIG5vZGUgY29udGFpbnMgb3Ig
aXMgYW5vdGhlciBET00gbm9kZS4KKyAqLworZnVuY3Rpb24gY29udGFpbnNOb2RlKG91dGVyTm9k
ZSwgaW5uZXJOb2RlKSB7CisgIGlmICghb3V0ZXJOb2RlIHx8ICFpbm5lck5vZGUpIHsKKyAgICBy
ZXR1cm4gZmFsc2U7CisgIH0gZWxzZSBpZiAob3V0ZXJOb2RlID09PSBpbm5lck5vZGUpIHsKKyAg
ICByZXR1cm4gdHJ1ZTsKKyAgfSBlbHNlIGlmIChpc1RleHROb2RlKG91dGVyTm9kZSkpIHsKKyAg
ICByZXR1cm4gZmFsc2U7CisgIH0gZWxzZSBpZiAoaXNUZXh0Tm9kZShpbm5lck5vZGUpKSB7Cisg
ICAgcmV0dXJuIGNvbnRhaW5zTm9kZShvdXRlck5vZGUsIGlubmVyTm9kZS5wYXJlbnROb2RlKTsK
KyAgfSBlbHNlIGlmICgnY29udGFpbnMnIGluIG91dGVyTm9kZSkgeworICAgIHJldHVybiBvdXRl
ck5vZGUuY29udGFpbnMoaW5uZXJOb2RlKTsKKyAgfSBlbHNlIGlmIChvdXRlck5vZGUuY29tcGFy
ZURvY3VtZW50UG9zaXRpb24pIHsKKyAgICByZXR1cm4gISEob3V0ZXJOb2RlLmNvbXBhcmVEb2N1
bWVudFBvc2l0aW9uKGlubmVyTm9kZSkgJiAxNik7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIGZh
bHNlOworICB9Cit9CisKK21vZHVsZS5leHBvcnRzID0gY29udGFpbnNOb2RlOworfSx7IjE1MiI6
MTUyfV0sMTQwOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKyd1c2Ugc3RyaWN0
JzsKKworLyoqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4K
KyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNl
bnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0
aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRF
TlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIEB0eXBlY2hlY2tzCisgKi8K
KwordmFyIGludmFyaWFudCA9IF9kZXJlcV8oMTUwKTsKKworLyoqCisgKiBDb252ZXJ0IGFycmF5
LWxpa2Ugb2JqZWN0cyB0byBhcnJheXMuCisgKgorICogVGhpcyBBUEkgYXNzdW1lcyB0aGUgY2Fs
bGVyIGtub3dzIHRoZSBjb250ZW50cyBvZiB0aGUgZGF0YSB0eXBlLiBGb3IgbGVzcworICogd2Vs
bCBkZWZpbmVkIGlucHV0cyB1c2UgY3JlYXRlQXJyYXlGcm9tTWl4ZWQuCisgKgorICogQHBhcmFt
IHtvYmplY3R8ZnVuY3Rpb258ZmlsZWxpc3R9IG9iagorICogQHJldHVybiB7YXJyYXl9CisgKi8K
K2Z1bmN0aW9uIHRvQXJyYXkob2JqKSB7CisgIHZhciBsZW5ndGggPSBvYmoubGVuZ3RoOworCisg
IC8vIFNvbWUgYnJvd3NlcnMgYnVpbHRpbiBvYmplY3RzIGNhbiByZXBvcnQgdHlwZW9mICdmdW5j
dGlvbicgKGUuZy4gTm9kZUxpc3QKKyAgLy8gaW4gb2xkIHZlcnNpb25zIG9mIFNhZmFyaSkuCisg
ICEoIUFycmF5LmlzQXJyYXkob2JqKSAmJiAodHlwZW9mIG9iaiA9PT0gJ29iamVjdCcgfHwgdHlw
ZW9mIG9iaiA9PT0gJ2Z1bmN0aW9uJykpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24n
ID8gaW52YXJpYW50KGZhbHNlLCAndG9BcnJheTogQXJyYXktbGlrZSBvYmplY3QgZXhwZWN0ZWQn
KSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7CisKKyAgISh0eXBlb2YgbGVuZ3RoID09PSAn
bnVtYmVyJykgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFs
c2UsICd0b0FycmF5OiBPYmplY3QgbmVlZHMgYSBsZW5ndGggcHJvcGVydHknKSA6IGludmFyaWFu
dChmYWxzZSkgOiB2b2lkIDA7CisKKyAgIShsZW5ndGggPT09IDAgfHwgbGVuZ3RoIC0gMSBpbiBv
YmopID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAn
dG9BcnJheTogT2JqZWN0IHNob3VsZCBoYXZlIGtleXMgZm9yIGluZGljZXMnKSA6IGludmFyaWFu
dChmYWxzZSkgOiB2b2lkIDA7CisKKyAgISh0eXBlb2Ygb2JqLmNhbGxlZSAhPT0gJ2Z1bmN0aW9u
JykgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICd0
b0FycmF5OiBPYmplY3QgY2FuXCd0IGJlIGBhcmd1bWVudHNgLiBVc2UgcmVzdCBwYXJhbXMgJyAr
ICcoZnVuY3Rpb24oLi4uYXJncykge30pIG9yIEFycmF5LmZyb20oKSBpbnN0ZWFkLicpIDogaW52
YXJpYW50KGZhbHNlKSA6IHZvaWQgMDsKKworICAvLyBPbGQgSUUgZG9lc24ndCBnaXZlIGNvbGxl
Y3Rpb25zIGFjY2VzcyB0byBoYXNPd25Qcm9wZXJ0eS4gQXNzdW1lIGlucHV0cworICAvLyB3aXRo
b3V0IG1ldGhvZCB3aWxsIHRocm93IGR1cmluZyB0aGUgc2xpY2UgY2FsbCBhbmQgc2tpcCBzdHJh
aWdodCB0byB0aGUKKyAgLy8gZmFsbGJhY2suCisgIGlmIChvYmouaGFzT3duUHJvcGVydHkpIHsK
KyAgICB0cnkgeworICAgICAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKG9iaik7
CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgLy8gSUUgPCA5IGRvZXMgbm90IHN1cHBvcnQgQXJy
YXkjc2xpY2Ugb24gY29sbGVjdGlvbnMgb2JqZWN0cworICAgIH0KKyAgfQorCisgIC8vIEZhbGwg
YmFjayB0byBjb3B5aW5nIGtleSBieSBrZXkuIFRoaXMgYXNzdW1lcyBhbGwga2V5cyBoYXZlIGEg
dmFsdWUsCisgIC8vIHNvIHdpbGwgbm90IHByZXNlcnZlIHNwYXJzZWx5IHBvcHVsYXRlZCBpbnB1
dHMuCisgIHZhciByZXQgPSBBcnJheShsZW5ndGgpOworICBmb3IgKHZhciBpaSA9IDA7IGlpIDwg
bGVuZ3RoOyBpaSsrKSB7CisgICAgcmV0W2lpXSA9IG9ialtpaV07CisgIH0KKyAgcmV0dXJuIHJl
dDsKK30KKworLyoqCisgKiBQZXJmb3JtIGEgaGV1cmlzdGljIHRlc3QgdG8gZGV0ZXJtaW5lIGlm
IGFuIG9iamVjdCBpcyAiYXJyYXktbGlrZSIuCisgKgorICogICBBIG1vbmsgYXNrZWQgSm9zaHUs
IGEgWmVuIG1hc3RlciwgIkhhcyBhIGRvZyBCdWRkaGEgbmF0dXJlPyIKKyAqICAgSm9zaHUgcmVw
bGllZDogIk11LiIKKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGRldGVybWluZXMgaWYgaXRzIGFyZ3Vt
ZW50IGhhcyAiYXJyYXkgbmF0dXJlIjogaXQgcmV0dXJucworICogdHJ1ZSBpZiB0aGUgYXJndW1l
bnQgaXMgYW4gYWN0dWFsIGFycmF5LCBhbiBgYXJndW1lbnRzJyBvYmplY3QsIG9yIGFuCisgKiBI
VE1MQ29sbGVjdGlvbiAoZS5nLiBub2RlLmNoaWxkTm9kZXMgb3Igbm9kZS5nZXRFbGVtZW50c0J5
VGFnTmFtZSgpKS4KKyAqCisgKiBJdCB3aWxsIHJldHVybiBmYWxzZSBmb3Igb3RoZXIgYXJyYXkt
bGlrZSBvYmplY3RzIGxpa2UgRmlsZWxpc3QuCisgKgorICogQHBhcmFtIHsqfSBvYmoKKyAqIEBy
ZXR1cm4ge2Jvb2xlYW59CisgKi8KK2Z1bmN0aW9uIGhhc0FycmF5TmF0dXJlKG9iaikgeworICBy
ZXR1cm4gKAorICAgIC8vIG5vdCBudWxsL2ZhbHNlCisgICAgISFvYmogJiYgKAorICAgIC8vIGFy
cmF5cyBhcmUgb2JqZWN0cywgTm9kZUxpc3RzIGFyZSBmdW5jdGlvbnMgaW4gU2FmYXJpCisgICAg
dHlwZW9mIG9iaiA9PSAnb2JqZWN0JyB8fCB0eXBlb2Ygb2JqID09ICdmdW5jdGlvbicpICYmCisg
ICAgLy8gcXVhY2tzIGxpa2UgYW4gYXJyYXkKKyAgICAnbGVuZ3RoJyBpbiBvYmogJiYKKyAgICAv
LyBub3Qgd2luZG93CisgICAgISgnc2V0SW50ZXJ2YWwnIGluIG9iaikgJiYKKyAgICAvLyBubyBE
T00gbm9kZSBzaG91bGQgYmUgY29uc2lkZXJlZCBhbiBhcnJheS1saWtlCisgICAgLy8gYSAnc2Vs
ZWN0JyBlbGVtZW50IGhhcyAnbGVuZ3RoJyBhbmQgJ2l0ZW0nIHByb3BlcnRpZXMgb24gSUU4Cisg
ICAgdHlwZW9mIG9iai5ub2RlVHlwZSAhPSAnbnVtYmVyJyAmJiAoCisgICAgLy8gYSByZWFsIGFy
cmF5CisgICAgQXJyYXkuaXNBcnJheShvYmopIHx8CisgICAgLy8gYXJndW1lbnRzCisgICAgJ2Nh
bGxlZScgaW4gb2JqIHx8CisgICAgLy8gSFRNTENvbGxlY3Rpb24vTm9kZUxpc3QKKyAgICAnaXRl
bScgaW4gb2JqKQorICApOworfQorCisvKioKKyAqIEVuc3VyZSB0aGF0IHRoZSBhcmd1bWVudCBp
cyBhbiBhcnJheSBieSB3cmFwcGluZyBpdCBpbiBhbiBhcnJheSBpZiBpdCBpcyBub3QuCisgKiBD
cmVhdGVzIGEgY29weSBvZiB0aGUgYXJndW1lbnQgaWYgaXQgaXMgYWxyZWFkeSBhbiBhcnJheS4K
KyAqCisgKiBUaGlzIGlzIG1vc3RseSB1c2VmdWwgaWRpb21hdGljYWxseToKKyAqCisgKiAgIHZh
ciBjcmVhdGVBcnJheUZyb21NaXhlZCA9IHJlcXVpcmUoJ2NyZWF0ZUFycmF5RnJvbU1peGVkJyk7
CisgKgorICogICBmdW5jdGlvbiB0YWtlc09uZU9yTW9yZVRoaW5ncyh0aGluZ3MpIHsKKyAqICAg
ICB0aGluZ3MgPSBjcmVhdGVBcnJheUZyb21NaXhlZCh0aGluZ3MpOworICogICAgIC4uLgorICog
ICB9CisgKgorICogVGhpcyBhbGxvd3MgeW91IHRvIHRyZWF0IGB0aGluZ3MnIGFzIGFuIGFycmF5
LCBidXQgYWNjZXB0IHNjYWxhcnMgaW4gdGhlIEFQSS4KKyAqCisgKiBJZiB5b3UgbmVlZCB0byBj
b252ZXJ0IGFuIGFycmF5LWxpa2Ugb2JqZWN0LCBsaWtlIGBhcmd1bWVudHNgLCBpbnRvIGFuIGFy
cmF5CisgKiB1c2UgdG9BcnJheSBpbnN0ZWFkLgorICoKKyAqIEBwYXJhbSB7Kn0gb2JqCisgKiBA
cmV0dXJuIHthcnJheX0KKyAqLworZnVuY3Rpb24gY3JlYXRlQXJyYXlGcm9tTWl4ZWQob2JqKSB7
CisgIGlmICghaGFzQXJyYXlOYXR1cmUob2JqKSkgeworICAgIHJldHVybiBbb2JqXTsKKyAgfSBl
bHNlIGlmIChBcnJheS5pc0FycmF5KG9iaikpIHsKKyAgICByZXR1cm4gb2JqLnNsaWNlKCk7Cisg
IH0gZWxzZSB7CisgICAgcmV0dXJuIHRvQXJyYXkob2JqKTsKKyAgfQorfQorCittb2R1bGUuZXhw
b3J0cyA9IGNyZWF0ZUFycmF5RnJvbU1peGVkOworfSx7IjE1MCI6MTUwfV0sMTQxOltmdW5jdGlv
bihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKyd1c2Ugc3RyaWN0JzsKKworLyoqCisgKiBDb3B5
cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
ZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9m
IHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNh
bWUgZGlyZWN0b3J5LgorICoKKyAqIEB0eXBlY2hlY2tzCisgKi8KKworLyplc2xpbnQtZGlzYWJs
ZSBmYi13d3cvdW5zYWZlLWh0bWwqLworCit2YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSBfZGVy
ZXFfKDEzNik7CisKK3ZhciBjcmVhdGVBcnJheUZyb21NaXhlZCA9IF9kZXJlcV8oMTQwKTsKK3Zh
ciBnZXRNYXJrdXBXcmFwID0gX2RlcmVxXygxNDYpOwordmFyIGludmFyaWFudCA9IF9kZXJlcV8o
MTUwKTsKKworLyoqCisgKiBEdW1teSBjb250YWluZXIgdXNlZCB0byByZW5kZXIgYWxsIG1hcmt1
cC4KKyAqLwordmFyIGR1bW15Tm9kZSA9IEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSA/
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpIDogbnVsbDsKKworLyoqCisgKiBQYXR0ZXJu
IHVzZWQgYnkgYGdldE5vZGVOYW1lYC4KKyAqLwordmFyIG5vZGVOYW1lUGF0dGVybiA9IC9eXHMq
PChcdyspLzsKKworLyoqCisgKiBFeHRyYWN0cyB0aGUgYG5vZGVOYW1lYCBvZiB0aGUgZmlyc3Qg
ZWxlbWVudCBpbiBhIHN0cmluZyBvZiBtYXJrdXAuCisgKgorICogQHBhcmFtIHtzdHJpbmd9IG1h
cmt1cCBTdHJpbmcgb2YgbWFya3VwLgorICogQHJldHVybiB7P3N0cmluZ30gTm9kZSBuYW1lIG9m
IHRoZSBzdXBwbGllZCBtYXJrdXAuCisgKi8KK2Z1bmN0aW9uIGdldE5vZGVOYW1lKG1hcmt1cCkg
eworICB2YXIgbm9kZU5hbWVNYXRjaCA9IG1hcmt1cC5tYXRjaChub2RlTmFtZVBhdHRlcm4pOwor
ICByZXR1cm4gbm9kZU5hbWVNYXRjaCAmJiBub2RlTmFtZU1hdGNoWzFdLnRvTG93ZXJDYXNlKCk7
Cit9CisKKy8qKgorICogQ3JlYXRlcyBhbiBhcnJheSBjb250YWluaW5nIHRoZSBub2RlcyByZW5k
ZXJlZCBmcm9tIHRoZSBzdXBwbGllZCBtYXJrdXAuIFRoZQorICogb3B0aW9uYWxseSBzdXBwbGll
ZCBgaGFuZGxlU2NyaXB0YCBmdW5jdGlvbiB3aWxsIGJlIGludm9rZWQgb25jZSBmb3IgZWFjaAor
ICogPHNjcmlwdD4gZWxlbWVudCB0aGF0IGlzIHJlbmRlcmVkLiBJZiBubyBgaGFuZGxlU2NyaXB0
YCBmdW5jdGlvbiBpcyBzdXBwbGllZCwKKyAqIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24gaWYgYW55
IDxzY3JpcHQ+IGVsZW1lbnRzIGFyZSByZW5kZXJlZC4KKyAqCisgKiBAcGFyYW0ge3N0cmluZ30g
bWFya3VwIEEgc3RyaW5nIG9mIHZhbGlkIEhUTUwgbWFya3VwLgorICogQHBhcmFtIHs/ZnVuY3Rp
b259IGhhbmRsZVNjcmlwdCBJbnZva2VkIG9uY2UgZm9yIGVhY2ggcmVuZGVyZWQgPHNjcmlwdD4u
CisgKiBAcmV0dXJuIHthcnJheTxET01FbGVtZW50fERPTVRleHROb2RlPn0gQW4gYXJyYXkgb2Yg
cmVuZGVyZWQgbm9kZXMuCisgKi8KK2Z1bmN0aW9uIGNyZWF0ZU5vZGVzRnJvbU1hcmt1cChtYXJr
dXAsIGhhbmRsZVNjcmlwdCkgeworICB2YXIgbm9kZSA9IGR1bW15Tm9kZTsKKyAgISEhZHVtbXlO
b2RlID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAn
Y3JlYXRlTm9kZXNGcm9tTWFya3VwIGR1bW15IG5vdCBpbml0aWFsaXplZCcpIDogaW52YXJpYW50
KGZhbHNlKSA6IHZvaWQgMDsKKyAgdmFyIG5vZGVOYW1lID0gZ2V0Tm9kZU5hbWUobWFya3VwKTsK
KworICB2YXIgd3JhcCA9IG5vZGVOYW1lICYmIGdldE1hcmt1cFdyYXAobm9kZU5hbWUpOworICBp
ZiAod3JhcCkgeworICAgIG5vZGUuaW5uZXJIVE1MID0gd3JhcFsxXSArIG1hcmt1cCArIHdyYXBb
Ml07CisKKyAgICB2YXIgd3JhcERlcHRoID0gd3JhcFswXTsKKyAgICB3aGlsZSAod3JhcERlcHRo
LS0pIHsKKyAgICAgIG5vZGUgPSBub2RlLmxhc3RDaGlsZDsKKyAgICB9CisgIH0gZWxzZSB7Cisg
ICAgbm9kZS5pbm5lckhUTUwgPSBtYXJrdXA7CisgIH0KKworICB2YXIgc2NyaXB0cyA9IG5vZGUu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NjcmlwdCcpOworICBpZiAoc2NyaXB0cy5sZW5ndGgpIHsK
KyAgICAhaGFuZGxlU2NyaXB0ID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52
YXJpYW50KGZhbHNlLCAnY3JlYXRlTm9kZXNGcm9tTWFya3VwKC4uLik6IFVuZXhwZWN0ZWQgPHNj
cmlwdD4gZWxlbWVudCByZW5kZXJlZC4nKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7Cisg
ICAgY3JlYXRlQXJyYXlGcm9tTWl4ZWQoc2NyaXB0cykuZm9yRWFjaChoYW5kbGVTY3JpcHQpOwor
ICB9CisKKyAgdmFyIG5vZGVzID0gQXJyYXkuZnJvbShub2RlLmNoaWxkTm9kZXMpOworICB3aGls
ZSAobm9kZS5sYXN0Q2hpbGQpIHsKKyAgICBub2RlLnJlbW92ZUNoaWxkKG5vZGUubGFzdENoaWxk
KTsKKyAgfQorICByZXR1cm4gbm9kZXM7Cit9CisKK21vZHVsZS5leHBvcnRzID0gY3JlYXRlTm9k
ZXNGcm9tTWFya3VwOworfSx7IjEzNiI6MTM2LCIxNDAiOjE0MCwiMTQ2IjoxNDYsIjE1MCI6MTUw
fV0sMTQyOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKyJ1c2Ugc3RyaWN0IjsK
KworLyoqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIAorICovCisKK2Z1bmN0aW9uIG1h
a2VFbXB0eUZ1bmN0aW9uKGFyZykgeworICByZXR1cm4gZnVuY3Rpb24gKCkgeworICAgIHJldHVy
biBhcmc7CisgIH07Cit9CisKKy8qKgorICogVGhpcyBmdW5jdGlvbiBhY2NlcHRzIGFuZCBkaXNj
YXJkcyBpbnB1dHM7IGl0IGhhcyBubyBzaWRlIGVmZmVjdHMuIFRoaXMgaXMKKyAqIHByaW1hcmls
eSB1c2VmdWwgaWRpb21hdGljYWxseSBmb3Igb3ZlcnJpZGFibGUgZnVuY3Rpb24gZW5kcG9pbnRz
IHdoaWNoCisgKiBhbHdheXMgbmVlZCB0byBiZSBjYWxsYWJsZSwgc2luY2UgSlMgbGFja3MgYSBu
dWxsLWNhbGwgaWRpb20gYWxhIENvY29hLgorICovCit2YXIgZW1wdHlGdW5jdGlvbiA9IGZ1bmN0
aW9uIGVtcHR5RnVuY3Rpb24oKSB7fTsKKworZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJucyA9IG1h
a2VFbXB0eUZ1bmN0aW9uOworZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc0ZhbHNlID0gbWFrZUVt
cHR5RnVuY3Rpb24oZmFsc2UpOworZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc1RydWUgPSBtYWtl
RW1wdHlGdW5jdGlvbih0cnVlKTsKK2VtcHR5RnVuY3Rpb24udGhhdFJldHVybnNOdWxsID0gbWFr
ZUVtcHR5RnVuY3Rpb24obnVsbCk7CitlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zVGhpcyA9IGZ1
bmN0aW9uICgpIHsKKyAgcmV0dXJuIHRoaXM7Cit9OworZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJu
c0FyZ3VtZW50ID0gZnVuY3Rpb24gKGFyZykgeworICByZXR1cm4gYXJnOworfTsKKworbW9kdWxl
LmV4cG9ydHMgPSBlbXB0eUZ1bmN0aW9uOworfSx7fV0sMTQzOltmdW5jdGlvbihfZGVyZXFfLG1v
ZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNv
ZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQor
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBp
biB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3Vz
ZSBzdHJpY3QnOworCit2YXIgZW1wdHlPYmplY3QgPSB7fTsKKworaWYgKCJkZXZlbG9wbWVudCIg
IT09ICdwcm9kdWN0aW9uJykgeworICBPYmplY3QuZnJlZXplKGVtcHR5T2JqZWN0KTsKK30KKwor
bW9kdWxlLmV4cG9ydHMgPSBlbXB0eU9iamVjdDsKK30se31dLDE0NDpbZnVuY3Rpb24oX2RlcmVx
Xyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBG
YWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJj
ZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0
aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2Ug
dHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91
bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisK
Kyd1c2Ugc3RyaWN0JzsKKworLyoqCisgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IG5vZGUgaW5wdXQv
dGV4dGFyZWEgdG8gZm9jdXMKKyAqLworCitmdW5jdGlvbiBmb2N1c05vZGUobm9kZSkgeworICAv
LyBJRTggY2FuIHRocm93ICJDYW4ndCBtb3ZlIGZvY3VzIHRvIHRoZSBjb250cm9sIGJlY2F1c2Ug
aXQgaXMgaW52aXNpYmxlLAorICAvLyBub3QgZW5hYmxlZCwgb3Igb2YgYSB0eXBlIHRoYXQgZG9l
cyBub3QgYWNjZXB0IHRoZSBmb2N1cy4iIGZvciBhbGwga2luZHMgb2YKKyAgLy8gcmVhc29ucyB0
aGF0IGFyZSB0b28gZXhwZW5zaXZlIGFuZCBmcmFnaWxlIHRvIHRlc3QuCisgIHRyeSB7CisgICAg
bm9kZS5mb2N1cygpOworICB9IGNhdGNoIChlKSB7fQorfQorCittb2R1bGUuZXhwb3J0cyA9IGZv
Y3VzTm9kZTsKK30se31dLDE0NTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7Cisn
dXNlIHN0cmljdCc7CisKKy8qKgorICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNv
ZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQor
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBp
biB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiBAdHlwZWNo
ZWNrcworICovCisKKy8qIGVzbGludC1kaXNhYmxlIGZiLXd3dy90eXBlb2YtdW5kZWZpbmVkICov
CisKKy8qKgorICogU2FtZSBhcyBkb2N1bWVudC5hY3RpdmVFbGVtZW50IGJ1dCB3cmFwcyBpbiBh
IHRyeS1jYXRjaCBibG9jay4gSW4gSUUgaXQgaXMKKyAqIG5vdCBzYWZlIHRvIGNhbGwgZG9jdW1l
bnQuYWN0aXZlRWxlbWVudCBpZiB0aGVyZSBpcyBub3RoaW5nIGZvY3VzZWQuCisgKgorICogVGhl
IGFjdGl2ZUVsZW1lbnQgd2lsbCBiZSBudWxsIG9ubHkgaWYgdGhlIGRvY3VtZW50IG9yIGRvY3Vt
ZW50IGJvZHkgaXMgbm90CisgKiB5ZXQgZGVmaW5lZC4KKyAqLworZnVuY3Rpb24gZ2V0QWN0aXZl
RWxlbWVudCgpIC8qP0RPTUVsZW1lbnQqL3sKKyAgaWYgKHR5cGVvZiBkb2N1bWVudCA9PT0gJ3Vu
ZGVmaW5lZCcpIHsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorICB0cnkgeworICAgIHJldHVybiBk
b2N1bWVudC5hY3RpdmVFbGVtZW50IHx8IGRvY3VtZW50LmJvZHk7CisgIH0gY2F0Y2ggKGUpIHsK
KyAgICByZXR1cm4gZG9jdW1lbnQuYm9keTsKKyAgfQorfQorCittb2R1bGUuZXhwb3J0cyA9IGdl
dEFjdGl2ZUVsZW1lbnQ7Cit9LHt9XSwxNDY6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9y
dHMpeworJ3VzZSBzdHJpY3QnOworCisvKioKKyAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICov
CisKKy8qZXNsaW50LWRpc2FibGUgZmItd3d3L3Vuc2FmZS1odG1sICovCisKK3ZhciBFeGVjdXRp
b25FbnZpcm9ubWVudCA9IF9kZXJlcV8oMTM2KTsKKwordmFyIGludmFyaWFudCA9IF9kZXJlcV8o
MTUwKTsKKworLyoqCisgKiBEdW1teSBjb250YWluZXIgdXNlZCB0byBkZXRlY3Qgd2hpY2ggd3Jh
cHMgYXJlIG5lY2Vzc2FyeS4KKyAqLwordmFyIGR1bW15Tm9kZSA9IEV4ZWN1dGlvbkVudmlyb25t
ZW50LmNhblVzZURPTSA/IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpIDogbnVsbDsKKwor
LyoqCisgKiBTb21lIGJyb3dzZXJzIGNhbm5vdCB1c2UgYGlubmVySFRNTGAgdG8gcmVuZGVyIGNl
cnRhaW4gZWxlbWVudHMgc3RhbmRhbG9uZSwKKyAqIHNvIHdlIHdyYXAgdGhlbSwgcmVuZGVyIHRo
ZSB3cmFwcGVkIG5vZGVzLCB0aGVuIGV4dHJhY3QgdGhlIGRlc2lyZWQgbm9kZS4KKyAqCisgKiBJ
biBJRTgsIGNlcnRhaW4gZWxlbWVudHMgY2Fubm90IHJlbmRlciBhbG9uZSwgc28gd3JhcCBhbGwg
ZWxlbWVudHMgKCcqJykuCisgKi8KKwordmFyIHNob3VsZFdyYXAgPSB7fTsKKwordmFyIHNlbGVj
dFdyYXAgPSBbMSwgJzxzZWxlY3QgbXVsdGlwbGU9InRydWUiPicsICc8L3NlbGVjdD4nXTsKK3Zh
ciB0YWJsZVdyYXAgPSBbMSwgJzx0YWJsZT4nLCAnPC90YWJsZT4nXTsKK3ZhciB0cldyYXAgPSBb
MywgJzx0YWJsZT48dGJvZHk+PHRyPicsICc8L3RyPjwvdGJvZHk+PC90YWJsZT4nXTsKKwordmFy
IHN2Z1dyYXAgPSBbMSwgJzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4n
LCAnPC9zdmc+J107CisKK3ZhciBtYXJrdXBXcmFwID0geworICAnKic6IFsxLCAnPzxkaXY+Jywg
JzwvZGl2PiddLAorCisgICdhcmVhJzogWzEsICc8bWFwPicsICc8L21hcD4nXSwKKyAgJ2NvbCc6
IFsyLCAnPHRhYmxlPjx0Ym9keT48L3Rib2R5Pjxjb2xncm91cD4nLCAnPC9jb2xncm91cD48L3Rh
YmxlPiddLAorICAnbGVnZW5kJzogWzEsICc8ZmllbGRzZXQ+JywgJzwvZmllbGRzZXQ+J10sCisg
ICdwYXJhbSc6IFsxLCAnPG9iamVjdD4nLCAnPC9vYmplY3Q+J10sCisgICd0cic6IFsyLCAnPHRh
YmxlPjx0Ym9keT4nLCAnPC90Ym9keT48L3RhYmxlPiddLAorCisgICdvcHRncm91cCc6IHNlbGVj
dFdyYXAsCisgICdvcHRpb24nOiBzZWxlY3RXcmFwLAorCisgICdjYXB0aW9uJzogdGFibGVXcmFw
LAorICAnY29sZ3JvdXAnOiB0YWJsZVdyYXAsCisgICd0Ym9keSc6IHRhYmxlV3JhcCwKKyAgJ3Rm
b290JzogdGFibGVXcmFwLAorICAndGhlYWQnOiB0YWJsZVdyYXAsCisKKyAgJ3RkJzogdHJXcmFw
LAorICAndGgnOiB0cldyYXAKK307CisKKy8vIEluaXRpYWxpemUgdGhlIFNWRyBlbGVtZW50cyBz
aW5jZSB3ZSBrbm93IHRoZXknbGwgYWx3YXlzIG5lZWQgdG8gYmUgd3JhcHBlZAorLy8gY29uc2lz
dGVudGx5LiBJZiB0aGV5IGFyZSBjcmVhdGVkIGluc2lkZSBhIDxkaXY+IHRoZXkgd2lsbCBiZSBp
bml0aWFsaXplZCBpbgorLy8gdGhlIHdyb25nIG5hbWVzcGFjZSAoYW5kIHdpbGwgbm90IGRpc3Bs
YXkpLgordmFyIHN2Z0VsZW1lbnRzID0gWydjaXJjbGUnLCAnY2xpcFBhdGgnLCAnZGVmcycsICdl
bGxpcHNlJywgJ2cnLCAnaW1hZ2UnLCAnbGluZScsICdsaW5lYXJHcmFkaWVudCcsICdtYXNrJywg
J3BhdGgnLCAncGF0dGVybicsICdwb2x5Z29uJywgJ3BvbHlsaW5lJywgJ3JhZGlhbEdyYWRpZW50
JywgJ3JlY3QnLCAnc3RvcCcsICd0ZXh0JywgJ3RzcGFuJ107CitzdmdFbGVtZW50cy5mb3JFYWNo
KGZ1bmN0aW9uIChub2RlTmFtZSkgeworICBtYXJrdXBXcmFwW25vZGVOYW1lXSA9IHN2Z1dyYXA7
CisgIHNob3VsZFdyYXBbbm9kZU5hbWVdID0gdHJ1ZTsKK30pOworCisvKioKKyAqIEdldHMgdGhl
IG1hcmt1cCB3cmFwIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBzdXBwbGllZCBgbm9kZU5hbWVgLgor
ICoKKyAqIE5PVEU6IFRoaXMgbGF6aWx5IGRldGVjdHMgd2hpY2ggd3JhcHMgYXJlIG5lY2Vzc2Fy
eSBmb3IgdGhlIGN1cnJlbnQgYnJvd3Nlci4KKyAqCisgKiBAcGFyYW0ge3N0cmluZ30gbm9kZU5h
bWUgTG93ZXJjYXNlIGBub2RlTmFtZWAuCisgKiBAcmV0dXJuIHs/YXJyYXl9IE1hcmt1cCB3cmFw
IGNvbmZpZ3VyYXRpb24sIGlmIGFwcGxpY2FibGUuCisgKi8KK2Z1bmN0aW9uIGdldE1hcmt1cFdy
YXAobm9kZU5hbWUpIHsKKyAgISEhZHVtbXlOb2RlID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1
Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnTWFya3VwIHdyYXBwaW5nIG5vZGUgbm90IGluaXRp
YWxpemVkJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwOworICBpZiAoIW1hcmt1cFdyYXAu
aGFzT3duUHJvcGVydHkobm9kZU5hbWUpKSB7CisgICAgbm9kZU5hbWUgPSAnKic7CisgIH0KKyAg
aWYgKCFzaG91bGRXcmFwLmhhc093blByb3BlcnR5KG5vZGVOYW1lKSkgeworICAgIGlmIChub2Rl
TmFtZSA9PT0gJyonKSB7CisgICAgICBkdW1teU5vZGUuaW5uZXJIVE1MID0gJzxsaW5rIC8+JzsK
KyAgICB9IGVsc2UgeworICAgICAgZHVtbXlOb2RlLmlubmVySFRNTCA9ICc8JyArIG5vZGVOYW1l
ICsgJz48LycgKyBub2RlTmFtZSArICc+JzsKKyAgICB9CisgICAgc2hvdWxkV3JhcFtub2RlTmFt
ZV0gPSAhZHVtbXlOb2RlLmZpcnN0Q2hpbGQ7CisgIH0KKyAgcmV0dXJuIHNob3VsZFdyYXBbbm9k
ZU5hbWVdID8gbWFya3VwV3JhcFtub2RlTmFtZV0gOiBudWxsOworfQorCittb2R1bGUuZXhwb3J0
cyA9IGdldE1hcmt1cFdyYXA7Cit9LHsiMTM2IjoxMzYsIjE1MCI6MTUwfV0sMTQ3OltmdW5jdGlv
bihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IChjKSAyMDEzLXBy
ZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRo
aXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZv
dW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlz
IHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNh
biBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAq
CisgKiBAdHlwZWNoZWNrcworICovCisKKyd1c2Ugc3RyaWN0JzsKKworLyoqCisgKiBHZXRzIHRo
ZSBzY3JvbGwgcG9zaXRpb24gb2YgdGhlIHN1cHBsaWVkIGVsZW1lbnQgb3Igd2luZG93LgorICoK
KyAqIFRoZSByZXR1cm4gdmFsdWVzIGFyZSB1bmJvdW5kZWQsIHVubGlrZSBgZ2V0U2Nyb2xsUG9z
aXRpb25gLiBUaGlzIG1lYW5zIHRoZXkKKyAqIG1heSBiZSBuZWdhdGl2ZSBvciBleGNlZWQgdGhl
IGVsZW1lbnQgYm91bmRhcmllcyAod2hpY2ggaXMgcG9zc2libGUgdXNpbmcKKyAqIGluZXJ0aWFs
IHNjcm9sbGluZykuCisgKgorICogQHBhcmFtIHtET01XaW5kb3d8RE9NRWxlbWVudH0gc2Nyb2xs
YWJsZQorICogQHJldHVybiB7b2JqZWN0fSBNYXAgd2l0aCBgeGAgYW5kIGB5YCBrZXlzLgorICov
CisKK2Z1bmN0aW9uIGdldFVuYm91bmRlZFNjcm9sbFBvc2l0aW9uKHNjcm9sbGFibGUpIHsKKyAg
aWYgKHNjcm9sbGFibGUgPT09IHdpbmRvdykgeworICAgIHJldHVybiB7CisgICAgICB4OiB3aW5k
b3cucGFnZVhPZmZzZXQgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnQsCisg
ICAgICB5OiB3aW5kb3cucGFnZVlPZmZzZXQgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNj
cm9sbFRvcAorICAgIH07CisgIH0KKyAgcmV0dXJuIHsKKyAgICB4OiBzY3JvbGxhYmxlLnNjcm9s
bExlZnQsCisgICAgeTogc2Nyb2xsYWJsZS5zY3JvbGxUb3AKKyAgfTsKK30KKworbW9kdWxlLmV4
cG9ydHMgPSBnZXRVbmJvdW5kZWRTY3JvbGxQb3NpdGlvbjsKK30se31dLDE0ODpbZnVuY3Rpb24o
X2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisndXNlIHN0cmljdCc7CisKKy8qKgorICogQ29weXJp
Z2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1z
dHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRp
cmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBw
YXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1l
IGRpcmVjdG9yeS4KKyAqCisgKiBAdHlwZWNoZWNrcworICovCisKK3ZhciBfdXBwZXJjYXNlUGF0
dGVybiA9IC8oW0EtWl0pL2c7CisKKy8qKgorICogSHlwaGVuYXRlcyBhIGNhbWVsY2FzZWQgc3Ry
aW5nLCBmb3IgZXhhbXBsZToKKyAqCisgKiAgID4gaHlwaGVuYXRlKCdiYWNrZ3JvdW5kQ29sb3In
KQorICogICA8ICJiYWNrZ3JvdW5kLWNvbG9yIgorICoKKyAqIEZvciBDU1Mgc3R5bGUgbmFtZXMs
IHVzZSBgaHlwaGVuYXRlU3R5bGVOYW1lYCBpbnN0ZWFkIHdoaWNoIHdvcmtzIHByb3Blcmx5Cisg
KiB3aXRoIGFsbCB2ZW5kb3IgcHJlZml4ZXMsIGluY2x1ZGluZyBgbXNgLgorICoKKyAqIEBwYXJh
bSB7c3RyaW5nfSBzdHJpbmcKKyAqIEByZXR1cm4ge3N0cmluZ30KKyAqLworZnVuY3Rpb24gaHlw
aGVuYXRlKHN0cmluZykgeworICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoX3VwcGVyY2FzZVBhdHRl
cm4sICctJDEnKS50b0xvd2VyQ2FzZSgpOworfQorCittb2R1bGUuZXhwb3J0cyA9IGh5cGhlbmF0
ZTsKK30se31dLDE0OTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAq
IENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRo
ZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAor
ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0
aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogQHR5cGVjaGVja3MKKyAqLworCisndXNlIHN0cmlj
dCc7CisKK3ZhciBoeXBoZW5hdGUgPSBfZGVyZXFfKDE0OCk7CisKK3ZhciBtc1BhdHRlcm4gPSAv
Xm1zLS87CisKKy8qKgorICogSHlwaGVuYXRlcyBhIGNhbWVsY2FzZWQgQ1NTIHByb3BlcnR5IG5h
bWUsIGZvciBleGFtcGxlOgorICoKKyAqICAgPiBoeXBoZW5hdGVTdHlsZU5hbWUoJ2JhY2tncm91
bmRDb2xvcicpCisgKiAgIDwgImJhY2tncm91bmQtY29sb3IiCisgKiAgID4gaHlwaGVuYXRlU3R5
bGVOYW1lKCdNb3pUcmFuc2l0aW9uJykKKyAqICAgPCAiLW1vei10cmFuc2l0aW9uIgorICogICA+
IGh5cGhlbmF0ZVN0eWxlTmFtZSgnbXNUcmFuc2l0aW9uJykKKyAqICAgPCAiLW1zLXRyYW5zaXRp
b24iCisgKgorICogQXMgTW9kZXJuaXpyIHN1Z2dlc3RzIChodHRwOi8vbW9kZXJuaXpyLmNvbS9k
b2NzLyNwcmVmaXhlZCksIGFuIGBtc2AgcHJlZml4CisgKiBpcyBjb252ZXJ0ZWQgdG8gYC1tcy1g
LgorICoKKyAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcKKyAqIEByZXR1cm4ge3N0cmluZ30KKyAq
LworZnVuY3Rpb24gaHlwaGVuYXRlU3R5bGVOYW1lKHN0cmluZykgeworICByZXR1cm4gaHlwaGVu
YXRlKHN0cmluZykucmVwbGFjZShtc1BhdHRlcm4sICctbXMtJyk7Cit9CisKK21vZHVsZS5leHBv
cnRzID0gaHlwaGVuYXRlU3R5bGVOYW1lOworfSx7IjE0OCI6MTQ4fV0sMTUwOltmdW5jdGlvbihf
ZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNl
bnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMg
c291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5k
IGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNv
dXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBi
ZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisg
Ki8KKworJ3VzZSBzdHJpY3QnOworCisvKioKKyAqIFVzZSBpbnZhcmlhbnQoKSB0byBhc3NlcnQg
c3RhdGUgd2hpY2ggeW91ciBwcm9ncmFtIGFzc3VtZXMgdG8gYmUgdHJ1ZS4KKyAqCisgKiBQcm92
aWRlIHNwcmludGYtc3R5bGUgZm9ybWF0IChvbmx5ICVzIGlzIHN1cHBvcnRlZCkgYW5kIGFyZ3Vt
ZW50cworICogdG8gcHJvdmlkZSBpbmZvcm1hdGlvbiBhYm91dCB3aGF0IGJyb2tlIGFuZCB3aGF0
IHlvdSB3ZXJlCisgKiBleHBlY3RpbmcuCisgKgorICogVGhlIGludmFyaWFudCBtZXNzYWdlIHdp
bGwgYmUgc3RyaXBwZWQgaW4gcHJvZHVjdGlvbiwgYnV0IHRoZSBpbnZhcmlhbnQKKyAqIHdpbGwg
cmVtYWluIHRvIGVuc3VyZSBsb2dpYyBkb2VzIG5vdCBkaWZmZXIgaW4gcHJvZHVjdGlvbi4KKyAq
LworCitmdW5jdGlvbiBpbnZhcmlhbnQoY29uZGl0aW9uLCBmb3JtYXQsIGEsIGIsIGMsIGQsIGUs
IGYpIHsKKyAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgIGlmIChm
b3JtYXQgPT09IHVuZGVmaW5lZCkgeworICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhcmlhbnQg
cmVxdWlyZXMgYW4gZXJyb3IgbWVzc2FnZSBhcmd1bWVudCcpOworICAgIH0KKyAgfQorCisgIGlm
ICghY29uZGl0aW9uKSB7CisgICAgdmFyIGVycm9yOworICAgIGlmIChmb3JtYXQgPT09IHVuZGVm
aW5lZCkgeworICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoJ01pbmlmaWVkIGV4Y2VwdGlvbiBvY2N1
cnJlZDsgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50ICcgKyAnZm9yIHRoZSBm
dWxsIGVycm9yIG1lc3NhZ2UgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5ncy4nKTsKKyAg
ICB9IGVsc2UgeworICAgICAgdmFyIGFyZ3MgPSBbYSwgYiwgYywgZCwgZSwgZl07CisgICAgICB2
YXIgYXJnSW5kZXggPSAwOworICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoZm9ybWF0LnJlcGxhY2Uo
LyVzL2csIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgcmV0dXJuIGFyZ3NbYXJnSW5kZXgrK107Cisg
ICAgICB9KSk7CisgICAgICBlcnJvci5uYW1lID0gJ0ludmFyaWFudCBWaW9sYXRpb24nOworICAg
IH0KKworICAgIGVycm9yLmZyYW1lc1RvUG9wID0gMTsgLy8gd2UgZG9uJ3QgY2FyZSBhYm91dCBp
bnZhcmlhbnQncyBvd24gZnJhbWUKKyAgICB0aHJvdyBlcnJvcjsKKyAgfQorfQorCittb2R1bGUu
ZXhwb3J0cyA9IGludmFyaWFudDsKK30se31dLDE1MTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUs
ZXhwb3J0cyl7CisndXNlIHN0cmljdCc7CisKKy8qKgorICogQ29weXJpZ2h0IChjKSAyMDEzLXBy
ZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRo
aXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZv
dW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlz
IHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNh
biBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAq
CisgKiBAdHlwZWNoZWNrcworICovCisKKy8qKgorICogQHBhcmFtIHsqfSBvYmplY3QgVGhlIG9i
amVjdCB0byBjaGVjay4KKyAqIEByZXR1cm4ge2Jvb2xlYW59IFdoZXRoZXIgb3Igbm90IHRoZSBv
YmplY3QgaXMgYSBET00gbm9kZS4KKyAqLworZnVuY3Rpb24gaXNOb2RlKG9iamVjdCkgeworICBy
ZXR1cm4gISEob2JqZWN0ICYmICh0eXBlb2YgTm9kZSA9PT0gJ2Z1bmN0aW9uJyA/IG9iamVjdCBp
bnN0YW5jZW9mIE5vZGUgOiB0eXBlb2Ygb2JqZWN0ID09PSAnb2JqZWN0JyAmJiB0eXBlb2Ygb2Jq
ZWN0Lm5vZGVUeXBlID09PSAnbnVtYmVyJyAmJiB0eXBlb2Ygb2JqZWN0Lm5vZGVOYW1lID09PSAn
c3RyaW5nJykpOworfQorCittb2R1bGUuZXhwb3J0cyA9IGlzTm9kZTsKK30se31dLDE1MjpbZnVu
Y3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisndXNlIHN0cmljdCc7CisKKy8qKgorICog
Q29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl
IEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50Cisg
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiBAdHlwZWNoZWNrcworICovCisKK3ZhciBpc05vZGUg
PSBfZGVyZXFfKDE1MSk7CisKKy8qKgorICogQHBhcmFtIHsqfSBvYmplY3QgVGhlIG9iamVjdCB0
byBjaGVjay4KKyAqIEByZXR1cm4ge2Jvb2xlYW59IFdoZXRoZXIgb3Igbm90IHRoZSBvYmplY3Qg
aXMgYSBET00gdGV4dCBub2RlLgorICovCitmdW5jdGlvbiBpc1RleHROb2RlKG9iamVjdCkgewor
ICByZXR1cm4gaXNOb2RlKG9iamVjdCkgJiYgb2JqZWN0Lm5vZGVUeXBlID09IDM7Cit9CisKK21v
ZHVsZS5leHBvcnRzID0gaXNUZXh0Tm9kZTsKK30seyIxNTEiOjE1MX1dLDE1MzpbZnVuY3Rpb24o
X2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBz
b3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgor
ICogCisgKiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seQorICovCisKKyd1c2Ugc3RyaWN0JzsKKwor
LyoqCisgKiBNZW1vaXplcyB0aGUgcmV0dXJuIHZhbHVlIG9mIGEgZnVuY3Rpb24gdGhhdCBhY2Nl
cHRzIG9uZSBzdHJpbmcgYXJndW1lbnQuCisgKi8KKworZnVuY3Rpb24gbWVtb2l6ZVN0cmluZ09u
bHkoY2FsbGJhY2spIHsKKyAgdmFyIGNhY2hlID0ge307CisgIHJldHVybiBmdW5jdGlvbiAoc3Ry
aW5nKSB7CisgICAgaWYgKCFjYWNoZS5oYXNPd25Qcm9wZXJ0eShzdHJpbmcpKSB7CisgICAgICBj
YWNoZVtzdHJpbmddID0gY2FsbGJhY2suY2FsbCh0aGlzLCBzdHJpbmcpOworICAgIH0KKyAgICBy
ZXR1cm4gY2FjaGVbc3RyaW5nXTsKKyAgfTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBtZW1vaXpl
U3RyaW5nT25seTsKK30se31dLDE1NDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7
CisvKioKKyAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICog
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2Vk
IHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25h
bCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMg
ZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogQHR5cGVjaGVja3MKKyAqLworCisn
dXNlIHN0cmljdCc7CisKK3ZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IF9kZXJlcV8oMTM2KTsK
KwordmFyIHBlcmZvcm1hbmNlOworCitpZiAoRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9N
KSB7CisgIHBlcmZvcm1hbmNlID0gd2luZG93LnBlcmZvcm1hbmNlIHx8IHdpbmRvdy5tc1BlcmZv
cm1hbmNlIHx8IHdpbmRvdy53ZWJraXRQZXJmb3JtYW5jZTsKK30KKworbW9kdWxlLmV4cG9ydHMg
PSBwZXJmb3JtYW5jZSB8fCB7fTsKK30seyIxMzYiOjEzNn1dLDE1NTpbZnVuY3Rpb24oX2RlcmVx
Xyxtb2R1bGUsZXhwb3J0cyl7CisndXNlIHN0cmljdCc7CisKKy8qKgorICogQ29weXJpZ2h0IChj
KSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBs
aWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9y
eSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQg
cmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVj
dG9yeS4KKyAqCisgKiBAdHlwZWNoZWNrcworICovCisKK3ZhciBwZXJmb3JtYW5jZSA9IF9kZXJl
cV8oMTU0KTsKKwordmFyIHBlcmZvcm1hbmNlTm93OworCisvKioKKyAqIERldGVjdCBpZiB3ZSBj
YW4gdXNlIGB3aW5kb3cucGVyZm9ybWFuY2Uubm93KClgIGFuZCBncmFjZWZ1bGx5IGZhbGxiYWNr
IHRvCisgKiBgRGF0ZS5ub3coKWAgaWYgaXQgZG9lc24ndCBleGlzdC4gV2UgbmVlZCB0byBzdXBw
b3J0IEZpcmVmb3ggPCAxNSBmb3Igbm93CisgKiBiZWNhdXNlIG9mIEZhY2Vib29rJ3MgdGVzdGlu
ZyBpbmZyYXN0cnVjdHVyZS4KKyAqLworaWYgKHBlcmZvcm1hbmNlLm5vdykgeworICBwZXJmb3Jt
YW5jZU5vdyA9IGZ1bmN0aW9uIHBlcmZvcm1hbmNlTm93KCkgeworICAgIHJldHVybiBwZXJmb3Jt
YW5jZS5ub3coKTsKKyAgfTsKK30gZWxzZSB7CisgIHBlcmZvcm1hbmNlTm93ID0gZnVuY3Rpb24g
cGVyZm9ybWFuY2VOb3coKSB7CisgICAgcmV0dXJuIERhdGUubm93KCk7CisgIH07Cit9CisKK21v
ZHVsZS5leHBvcnRzID0gcGVyZm9ybWFuY2VOb3c7Cit9LHsiMTU0IjoxNTR9XSwxNTY6W2Z1bmN0
aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTMt
cHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
VGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2Ug
Zm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRo
aXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMg
Y2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Lgor
ICoKKyAqIEB0eXBlY2hlY2tzCisgKiAKKyAqLworCisvKmVzbGludC1kaXNhYmxlIG5vLXNlbGYt
Y29tcGFyZSAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVj
dC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7CisKKy8qKgorICogaW5saW5lZCBPYmplY3QuaXMg
cG9seWZpbGwgdG8gYXZvaWQgcmVxdWlyaW5nIGNvbnN1bWVycyBzaGlwIHRoZWlyIG93bgorICog
aHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9S
ZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvT2JqZWN0L2lzCisgKi8KK2Z1bmN0aW9uIGlzKHgsIHkp
IHsKKyAgLy8gU2FtZVZhbHVlIGFsZ29yaXRobQorICBpZiAoeCA9PT0geSkgeworICAgIC8vIFN0
ZXBzIDEtNSwgNy0xMAorICAgIC8vIFN0ZXBzIDYuYi02LmU6ICswICE9IC0wCisgICAgLy8gQWRk
ZWQgdGhlIG5vbnplcm8geSBjaGVjayB0byBtYWtlIEZsb3cgaGFwcHksIGJ1dCBpdCBpcyByZWR1
bmRhbnQKKyAgICByZXR1cm4geCAhPT0gMCB8fCB5ICE9PSAwIHx8IDEgLyB4ID09PSAxIC8geTsK
KyAgfSBlbHNlIHsKKyAgICAvLyBTdGVwIDYuYTogTmFOID09IE5hTgorICAgIHJldHVybiB4ICE9
PSB4ICYmIHkgIT09IHk7CisgIH0KK30KKworLyoqCisgKiBQZXJmb3JtcyBlcXVhbGl0eSBieSBp
dGVyYXRpbmcgdGhyb3VnaCBrZXlzIG9uIGFuIG9iamVjdCBhbmQgcmV0dXJuaW5nIGZhbHNlCisg
KiB3aGVuIGFueSBrZXkgaGFzIHZhbHVlcyB3aGljaCBhcmUgbm90IHN0cmljdGx5IGVxdWFsIGJl
dHdlZW4gdGhlIGFyZ3VtZW50cy4KKyAqIFJldHVybnMgdHJ1ZSB3aGVuIHRoZSB2YWx1ZXMgb2Yg
YWxsIGtleXMgYXJlIHN0cmljdGx5IGVxdWFsLgorICovCitmdW5jdGlvbiBzaGFsbG93RXF1YWwo
b2JqQSwgb2JqQikgeworICBpZiAoaXMob2JqQSwgb2JqQikpIHsKKyAgICByZXR1cm4gdHJ1ZTsK
KyAgfQorCisgIGlmICh0eXBlb2Ygb2JqQSAhPT0gJ29iamVjdCcgfHwgb2JqQSA9PT0gbnVsbCB8
fCB0eXBlb2Ygb2JqQiAhPT0gJ29iamVjdCcgfHwgb2JqQiA9PT0gbnVsbCkgeworICAgIHJldHVy
biBmYWxzZTsKKyAgfQorCisgIHZhciBrZXlzQSA9IE9iamVjdC5rZXlzKG9iakEpOworICB2YXIg
a2V5c0IgPSBPYmplY3Qua2V5cyhvYmpCKTsKKworICBpZiAoa2V5c0EubGVuZ3RoICE9PSBrZXlz
Qi5sZW5ndGgpIHsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKworICAvLyBUZXN0IGZvciBBJ3Mg
a2V5cyBkaWZmZXJlbnQgZnJvbSBCLgorICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXNBLmxlbmd0
aDsgaSsrKSB7CisgICAgaWYgKCFoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iakIsIGtleXNBW2ldKSB8
fCAhaXMob2JqQVtrZXlzQVtpXV0sIG9iakJba2V5c0FbaV1dKSkgeworICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKyAgfQorCisgIHJldHVybiB0cnVlOworfQorCittb2R1bGUuZXhwb3J0cyA9
IHNoYWxsb3dFcXVhbDsKK30se31dLDE1NzpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0
cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDE0LTIwMTUsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5k
ZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdy
YW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxl
IGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIg
ZW1wdHlGdW5jdGlvbiA9IF9kZXJlcV8oMTQyKTsKKworLyoqCisgKiBTaW1pbGFyIHRvIGludmFy
aWFudCBidXQgb25seSBsb2dzIGEgd2FybmluZyBpZiB0aGUgY29uZGl0aW9uIGlzIG5vdCBtZXQu
CisgKiBUaGlzIGNhbiBiZSB1c2VkIHRvIGxvZyBpc3N1ZXMgaW4gZGV2ZWxvcG1lbnQgZW52aXJv
bm1lbnRzIGluIGNyaXRpY2FsCisgKiBwYXRocy4gUmVtb3ZpbmcgdGhlIGxvZ2dpbmcgY29kZSBm
b3IgcHJvZHVjdGlvbiBlbnZpcm9ubWVudHMgd2lsbCBrZWVwIHRoZQorICogc2FtZSBsb2dpYyBh
bmQgZm9sbG93IHRoZSBzYW1lIGNvZGUgcGF0aHMuCisgKi8KKwordmFyIHdhcm5pbmcgPSBlbXB0
eUZ1bmN0aW9uOworCitpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgIChm
dW5jdGlvbiAoKSB7CisgICAgdmFyIHByaW50V2FybmluZyA9IGZ1bmN0aW9uIHByaW50V2Fybmlu
Zyhmb3JtYXQpIHsKKyAgICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdz
ID0gQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tleSA8IF9sZW47
IF9rZXkrKykgeworICAgICAgICBhcmdzW19rZXkgLSAxXSA9IGFyZ3VtZW50c1tfa2V5XTsKKyAg
ICAgIH0KKworICAgICAgdmFyIGFyZ0luZGV4ID0gMDsKKyAgICAgIHZhciBtZXNzYWdlID0gJ1dh
cm5pbmc6ICcgKyBmb3JtYXQucmVwbGFjZSgvJXMvZywgZnVuY3Rpb24gKCkgeworICAgICAgICBy
ZXR1cm4gYXJnc1thcmdJbmRleCsrXTsKKyAgICAgIH0pOworICAgICAgaWYgKHR5cGVvZiBjb25z
b2xlICE9PSAndW5kZWZpbmVkJykgeworICAgICAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UpOwor
ICAgICAgfQorICAgICAgdHJ5IHsKKyAgICAgICAgLy8gLS0tIFdlbGNvbWUgdG8gZGVidWdnaW5n
IFJlYWN0IC0tLQorICAgICAgICAvLyBUaGlzIGVycm9yIHdhcyB0aHJvd24gYXMgYSBjb252ZW5p
ZW5jZSBzbyB0aGF0IHlvdSBjYW4gdXNlIHRoaXMgc3RhY2sKKyAgICAgICAgLy8gdG8gZmluZCB0
aGUgY2FsbHNpdGUgdGhhdCBjYXVzZWQgdGhpcyB3YXJuaW5nIHRvIGZpcmUuCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcihtZXNzYWdlKTsKKyAgICAgIH0gY2F0Y2ggKHgpIHt9CisgICAgfTsKKwor
ICAgIHdhcm5pbmcgPSBmdW5jdGlvbiB3YXJuaW5nKGNvbmRpdGlvbiwgZm9ybWF0KSB7CisgICAg
ICBpZiAoZm9ybWF0ID09PSB1bmRlZmluZWQpIHsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdg
d2FybmluZyhjb25kaXRpb24sIGZvcm1hdCwgLi4uYXJncylgIHJlcXVpcmVzIGEgd2FybmluZyAn
ICsgJ21lc3NhZ2UgYXJndW1lbnQnKTsKKyAgICAgIH0KKworICAgICAgaWYgKGZvcm1hdC5pbmRl
eE9mKCdGYWlsZWQgQ29tcG9zaXRlIHByb3BUeXBlOiAnKSA9PT0gMCkgeworICAgICAgICByZXR1
cm47IC8vIElnbm9yZSBDb21wb3NpdGVDb21wb25lbnQgcHJvcHR5cGUgY2hlY2suCisgICAgICB9
CisKKyAgICAgIGlmICghY29uZGl0aW9uKSB7CisgICAgICAgIGZvciAodmFyIF9sZW4yID0gYXJn
dW1lbnRzLmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW4yID4gMiA/IF9sZW4yIC0gMiA6IDApLCBf
a2V5MiA9IDI7IF9rZXkyIDwgX2xlbjI7IF9rZXkyKyspIHsKKyAgICAgICAgICBhcmdzW19rZXky
IC0gMl0gPSBhcmd1bWVudHNbX2tleTJdOworICAgICAgICB9CisKKyAgICAgICAgcHJpbnRXYXJu
aW5nLmFwcGx5KHVuZGVmaW5lZCwgW2Zvcm1hdF0uY29uY2F0KGFyZ3MpKTsKKyAgICAgIH0KKyAg
ICB9OworICB9KSgpOworfQorCittb2R1bGUuZXhwb3J0cyA9IHdhcm5pbmc7Cit9LHsiMTQyIjox
NDJ9XSwxNTg6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworJ3VzZSBzdHJpY3Qn
OworLyogZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLXZhcnMgKi8KK3ZhciBoYXNPd25Qcm9wZXJ0
eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7Cit2YXIgcHJvcElzRW51bWVyYWJs
ZSA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7CisKK2Z1bmN0aW9uIHRv
T2JqZWN0KHZhbCkgeworICAgIGlmICh2YWwgPT09IG51bGwgfHwgdmFsID09PSB1bmRlZmluZWQp
IHsKKyAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignT2JqZWN0LmFzc2lnbiBjYW5ub3QgYmUg
Y2FsbGVkIHdpdGggbnVsbCBvciB1bmRlZmluZWQnKTsKKyAgICB9CisKKyAgICByZXR1cm4gT2Jq
ZWN0KHZhbCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFVzZU5hdGl2ZSgpIHsKKyAgICB0cnkgewor
ICAgICAgICBpZiAoIU9iamVjdC5hc3NpZ24pIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgfQorCisgICAgICAgIC8vIERldGVjdCBidWdneSBwcm9wZXJ0eSBlbnVtZXJhdGlv
biBvcmRlciBpbiBvbGRlciBWOCB2ZXJzaW9ucy4KKworICAgICAgICAvLyBodHRwczovL2J1Z3Mu
Y2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD00MTE4CisgICAgICAgIHZhciB0ZXN0
MSA9IG5ldyBTdHJpbmcoJ2FiYycpOyAgLy8gZXNsaW50LWRpc2FibGUtbGluZQorICAgICAgICB0
ZXN0MVs1XSA9ICdkZSc7CisgICAgICAgIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0
ZXN0MSlbMF0gPT09ICc1JykgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
CisKKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRh
aWw/aWQ9MzA1NgorICAgICAgICB2YXIgdGVzdDIgPSB7fTsKKyAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCAxMDsgaSsrKSB7CisgICAgICAgICAgICB0ZXN0MlsnXycgKyBTdHJpbmcuZnJvbUNo
YXJDb2RlKGkpXSA9IGk7CisgICAgICAgIH0KKyAgICAgICAgdmFyIG9yZGVyMiA9IE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eU5hbWVzKHRlc3QyKS5tYXAoZnVuY3Rpb24gKG4pIHsKKyAgICAgICAgICAg
IHJldHVybiB0ZXN0MltuXTsKKyAgICAgICAgfSk7CisgICAgICAgIGlmIChvcmRlcjIuam9pbign
JykgIT09ICcwMTIzNDU2Nzg5JykgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICB9CisKKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9k
ZXRhaWw/aWQ9MzA1NgorICAgICAgICB2YXIgdGVzdDMgPSB7fTsKKyAgICAgICAgJ2FiY2RlZmdo
aWprbG1ub3BxcnN0Jy5zcGxpdCgnJykuZm9yRWFjaChmdW5jdGlvbiAobGV0dGVyKSB7CisgICAg
ICAgICAgICB0ZXN0M1tsZXR0ZXJdID0gbGV0dGVyOworICAgICAgICB9KTsKKyAgICAgICAgaWYg
KE9iamVjdC5rZXlzKE9iamVjdC5hc3NpZ24oe30sIHRlc3QzKSkuam9pbignJykgIT09CisgICAg
ICAgICAgICAgICAgJ2FiY2RlZmdoaWprbG1ub3BxcnN0JykgeworICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSBjYXRjaCAo
ZSkgeworICAgICAgICAvLyBXZSBkb24ndCBleHBlY3QgYW55IG9mIHRoZSBhYm92ZSB0byB0aHJv
dywgYnV0IGJldHRlciB0byBiZSBzYWZlLgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
fQorCittb2R1bGUuZXhwb3J0cyA9IHNob3VsZFVzZU5hdGl2ZSgpID8gT2JqZWN0LmFzc2lnbiA6
IGZ1bmN0aW9uICh0YXJnZXQsIHNvdXJjZSkgeworICAgIHZhciBmcm9tOworICAgIHZhciB0byA9
IHRvT2JqZWN0KHRhcmdldCk7CisgICAgdmFyIHN5bWJvbHM7CisKKyAgICBmb3IgKHZhciBzID0g
MTsgcyA8IGFyZ3VtZW50cy5sZW5ndGg7IHMrKykgeworICAgICAgICBmcm9tID0gT2JqZWN0KGFy
Z3VtZW50c1tzXSk7CisKKyAgICAgICAgZm9yICh2YXIga2V5IGluIGZyb20pIHsKKyAgICAgICAg
ICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKGZyb20sIGtleSkpIHsKKyAgICAgICAgICAgICAg
ICB0b1trZXldID0gZnJvbVtrZXldOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAg
ICAgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsKKyAgICAgICAgICAgIHN5bWJv
bHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGZyb20pOworICAgICAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBzeW1ib2xzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAg
aWYgKHByb3BJc0VudW1lcmFibGUuY2FsbChmcm9tLCBzeW1ib2xzW2ldKSkgeworICAgICAgICAg
ICAgICAgICAgICB0b1tzeW1ib2xzW2ldXSA9IGZyb21bc3ltYm9sc1tpXV07CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHRv
OworfTsKKworfSx7fV19LHt9LFs0OF0pKDQ4KQorfSk7Cit9KTsKZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vZGlzdC9yZWFjdC1kb20ubWluLmpz
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9kaXN0L3JlYWN0LWRv
bS5taW4uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZGE5ZTUxYTM4M2Y0MDRmMmQ5OTE5NzNlYmVjZTM0ZTNlMWYx
MmNlNQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9y
ZWFjdC1kb20vZGlzdC9yZWFjdC1kb20ubWluLmpzCkBAIC0wLDAgKzEsMTUgQEAKKy8qKgorICog
UmVhY3RET00gdjE1LjQuMAorICoKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29r
LCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUg
aXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICog
TElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBB
biBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0
aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKyFmdW5jdGlv
bihlKXtpZigib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHMmJiJ1bmRlZmluZWQiIT10eXBlb2YgbW9k
dWxlKWUocmVxdWlyZSgicmVhY3QiKSk7ZWxzZSBpZigiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5l
JiZkZWZpbmUuYW1kKXJlcXVpcmUoWyJyZWFjdCJdLGUpO2Vsc2V7dmFyIHQ7dD0idW5kZWZpbmVk
IiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFs
OiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOnRoaXMsZSh0LlJlYWN0KX19KGZ1bmN0aW9u
KGUpeyFmdW5jdGlvbihlKXtpZigib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHMmJiJ1bmRlZmluZWQi
IT10eXBlb2YgbW9kdWxlKW1vZHVsZS5leHBvcnRzPWUoKTtlbHNlIGlmKCJmdW5jdGlvbiI9PXR5
cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQpZGVmaW5lKFtdLGUpO2Vsc2V7dmFyIHQ7dD0idW5kZWZp
bmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xv
YmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOnRoaXMsdC5SZWFjdERPTT1lKCl9fShm
dW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiBlKHQsbixyKXtmdW5jdGlvbiBvKGEscyl7aWYoIW5b
YV0pe2lmKCF0W2FdKXt2YXIgdT0iZnVuY3Rpb24iPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZTtp
ZighcyYmdSlyZXR1cm4gdShhLCEwKTtpZihpKXJldHVybiBpKGEsITApO3ZhciBsPW5ldyBFcnJv
cigiQ2Fubm90IGZpbmQgbW9kdWxlICciK2ErIiciKTt0aHJvdyBsLmNvZGU9Ik1PRFVMRV9OT1Rf
Rk9VTkQiLGx9dmFyIGM9blthXT17ZXhwb3J0czp7fX07dFthXVswXS5jYWxsKGMuZXhwb3J0cyxm
dW5jdGlvbihlKXt2YXIgbj10W2FdWzFdW2VdO3JldHVybiBvKG4/bjplKX0sYyxjLmV4cG9ydHMs
ZSx0LG4scil9cmV0dXJuIG5bYV0uZXhwb3J0c31mb3IodmFyIGk9ImZ1bmN0aW9uIj09dHlwZW9m
IHJlcXVpcmUmJnJlcXVpcmUsYT0wO2E8ci5sZW5ndGg7YSsrKW8oclthXSk7cmV0dXJuIG99KHsx
OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPXtQcm9wZXJ0aWVzOnsiYXJpYS1j
dXJyZW50IjowLCJhcmlhLWRldGFpbHMiOjAsImFyaWEtZGlzYWJsZWQiOjAsImFyaWEtaGlkZGVu
IjowLCJhcmlhLWludmFsaWQiOjAsImFyaWEta2V5c2hvcnRjdXRzIjowLCJhcmlhLWxhYmVsIjow
LCJhcmlhLXJvbGVkZXNjcmlwdGlvbiI6MCwiYXJpYS1hdXRvY29tcGxldGUiOjAsImFyaWEtY2hl
Y2tlZCI6MCwiYXJpYS1leHBhbmRlZCI6MCwiYXJpYS1oYXNwb3B1cCI6MCwiYXJpYS1sZXZlbCI6
MCwiYXJpYS1tb2RhbCI6MCwiYXJpYS1tdWx0aWxpbmUiOjAsImFyaWEtbXVsdGlzZWxlY3RhYmxl
IjowLCJhcmlhLW9yaWVudGF0aW9uIjowLCJhcmlhLXBsYWNlaG9sZGVyIjowLCJhcmlhLXByZXNz
ZWQiOjAsImFyaWEtcmVhZG9ubHkiOjAsImFyaWEtcmVxdWlyZWQiOjAsImFyaWEtc2VsZWN0ZWQi
OjAsImFyaWEtc29ydCI6MCwiYXJpYS12YWx1ZW1heCI6MCwiYXJpYS12YWx1ZW1pbiI6MCwiYXJp
YS12YWx1ZW5vdyI6MCwiYXJpYS12YWx1ZXRleHQiOjAsImFyaWEtYXRvbWljIjowLCJhcmlhLWJ1
c3kiOjAsImFyaWEtbGl2ZSI6MCwiYXJpYS1yZWxldmFudCI6MCwiYXJpYS1kcm9wZWZmZWN0Ijow
LCJhcmlhLWdyYWJiZWQiOjAsImFyaWEtYWN0aXZlZGVzY2VuZGFudCI6MCwiYXJpYS1jb2xjb3Vu
dCI6MCwiYXJpYS1jb2xpbmRleCI6MCwiYXJpYS1jb2xzcGFuIjowLCJhcmlhLWNvbnRyb2xzIjow
LCJhcmlhLWRlc2NyaWJlZGJ5IjowLCJhcmlhLWVycm9ybWVzc2FnZSI6MCwiYXJpYS1mbG93dG8i
OjAsImFyaWEtbGFiZWxsZWRieSI6MCwiYXJpYS1vd25zIjowLCJhcmlhLXBvc2luc2V0IjowLCJh
cmlhLXJvd2NvdW50IjowLCJhcmlhLXJvd2luZGV4IjowLCJhcmlhLXJvd3NwYW4iOjAsImFyaWEt
c2V0c2l6ZSI6MH0sRE9NQXR0cmlidXRlTmFtZXM6e30sRE9NUHJvcGVydHlOYW1lczp7fX07dC5l
eHBvcnRzPXJ9LHt9XSwyOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoMzMp
LG89ZSgxMzEpLGk9e2ZvY3VzRE9NQ29tcG9uZW50OmZ1bmN0aW9uKCl7byhyLmdldE5vZGVGcm9t
SW5zdGFuY2UodGhpcykpfX07dC5leHBvcnRzPWl9LHsxMzE6MTMxLDMzOjMzfV0sMzpbZnVuY3Rp
b24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7dmFyIGU9d2luZG93Lm9wZXJhO3Jl
dHVybiJvYmplY3QiPT10eXBlb2YgZSYmImZ1bmN0aW9uIj09dHlwZW9mIGUudmVyc2lvbiYmcGFy
c2VJbnQoZS52ZXJzaW9uKCksMTApPD0xMn1mdW5jdGlvbiBvKGUpe3JldHVybihlLmN0cmxLZXl8
fGUuYWx0S2V5fHxlLm1ldGFLZXkpJiYhKGUuY3RybEtleSYmZS5hbHRLZXkpfWZ1bmN0aW9uIGko
ZSl7c3dpdGNoKGUpe2Nhc2UidG9wQ29tcG9zaXRpb25TdGFydCI6cmV0dXJuIGsuY29tcG9zaXRp
b25TdGFydDtjYXNlInRvcENvbXBvc2l0aW9uRW5kIjpyZXR1cm4gay5jb21wb3NpdGlvbkVuZDtj
YXNlInRvcENvbXBvc2l0aW9uVXBkYXRlIjpyZXR1cm4gay5jb21wb3NpdGlvblVwZGF0ZX19ZnVu
Y3Rpb24gYShlLHQpe3JldHVybiJ0b3BLZXlEb3duIj09PWUmJnQua2V5Q29kZT09PV99ZnVuY3Rp
b24gcyhlLHQpe3N3aXRjaChlKXtjYXNlInRvcEtleVVwIjpyZXR1cm4geS5pbmRleE9mKHQua2V5
Q29kZSkhPT0tMTtjYXNlInRvcEtleURvd24iOnJldHVybiB0LmtleUNvZGUhPT1fO2Nhc2UidG9w
S2V5UHJlc3MiOmNhc2UidG9wTW91c2VEb3duIjpjYXNlInRvcEJsdXIiOnJldHVybiEwO2RlZmF1
bHQ6cmV0dXJuITF9fWZ1bmN0aW9uIHUoZSl7dmFyIHQ9ZS5kZXRhaWw7cmV0dXJuIm9iamVjdCI9
PXR5cGVvZiB0JiYiZGF0YSJpbiB0P3QuZGF0YTpudWxsfWZ1bmN0aW9uIGwoZSx0LG4scil7dmFy
IG8sbDtpZihDP289aShlKTpOP3MoZSxuKSYmKG89ay5jb21wb3NpdGlvbkVuZCk6YShlLG4pJiYo
bz1rLmNvbXBvc2l0aW9uU3RhcnQpLCFvKXJldHVybiBudWxsO3gmJihOfHxvIT09ay5jb21wb3Np
dGlvblN0YXJ0P289PT1rLmNvbXBvc2l0aW9uRW5kJiZOJiYobD1OLmdldERhdGEoKSk6Tj1tLmdl
dFBvb2xlZChyKSk7dmFyIGM9di5nZXRQb29sZWQobyx0LG4scik7aWYobCljLmRhdGE9bDtlbHNl
e3ZhciBwPXUobik7bnVsbCE9PXAmJihjLmRhdGE9cCl9cmV0dXJuIGYuYWNjdW11bGF0ZVR3b1Bo
YXNlRGlzcGF0Y2hlcyhjKSxjfWZ1bmN0aW9uIGMoZSx0KXtzd2l0Y2goZSl7Y2FzZSJ0b3BDb21w
b3NpdGlvbkVuZCI6cmV0dXJuIHUodCk7Y2FzZSJ0b3BLZXlQcmVzcyI6dmFyIG49dC53aGljaDty
ZXR1cm4gbiE9PXc/bnVsbDooUD0hMCxUKTtjYXNlInRvcFRleHRJbnB1dCI6dmFyIHI9dC5kYXRh
O3JldHVybiByPT09VCYmUD9udWxsOnI7ZGVmYXVsdDpyZXR1cm4gbnVsbH19ZnVuY3Rpb24gcChl
LHQpe2lmKE4pe2lmKCJ0b3BDb21wb3NpdGlvbkVuZCI9PT1lfHwhQyYmcyhlLHQpKXt2YXIgbj1O
LmdldERhdGEoKTtyZXR1cm4gbS5yZWxlYXNlKE4pLE49bnVsbCxufXJldHVybiBudWxsfXN3aXRj
aChlKXtjYXNlInRvcFBhc3RlIjpyZXR1cm4gbnVsbDtjYXNlInRvcEtleVByZXNzIjpyZXR1cm4g
dC53aGljaCYmIW8odCk/U3RyaW5nLmZyb21DaGFyQ29kZSh0LndoaWNoKTpudWxsO2Nhc2UidG9w
Q29tcG9zaXRpb25FbmQiOnJldHVybiB4P251bGw6dC5kYXRhO2RlZmF1bHQ6cmV0dXJuIG51bGx9
fWZ1bmN0aW9uIGQoZSx0LG4scil7dmFyIG87aWYobz1FP2MoZSxuKTpwKGUsbiksIW8pcmV0dXJu
IG51bGw7dmFyIGk9Zy5nZXRQb29sZWQoay5iZWZvcmVJbnB1dCx0LG4scik7cmV0dXJuIGkuZGF0
YT1vLGYuYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyhpKSxpfXZhciBmPWUoMTkpLGg9ZSgx
MjMpLG09ZSgyMCksdj1lKDc4KSxnPWUoODIpLHk9WzksMTMsMjcsMzJdLF89MjI5LEM9aC5jYW5V
c2VET00mJiJDb21wb3NpdGlvbkV2ZW50ImluIHdpbmRvdyxiPW51bGw7aC5jYW5Vc2VET00mJiJk
b2N1bWVudE1vZGUiaW4gZG9jdW1lbnQmJihiPWRvY3VtZW50LmRvY3VtZW50TW9kZSk7dmFyIEU9
aC5jYW5Vc2VET00mJiJUZXh0RXZlbnQiaW4gd2luZG93JiYhYiYmIXIoKSx4PWguY2FuVXNlRE9N
JiYoIUN8fGImJmI+OCYmYjw9MTEpLHc9MzIsVD1TdHJpbmcuZnJvbUNoYXJDb2RlKHcpLGs9e2Jl
Zm9yZUlucHV0OntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDoib25CZWZvcmVJbnB1
dCIsY2FwdHVyZWQ6Im9uQmVmb3JlSW5wdXRDYXB0dXJlIn0sZGVwZW5kZW5jaWVzOlsidG9wQ29t
cG9zaXRpb25FbmQiLCJ0b3BLZXlQcmVzcyIsInRvcFRleHRJbnB1dCIsInRvcFBhc3RlIl19LGNv
bXBvc2l0aW9uRW5kOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDoib25Db21wb3Np
dGlvbkVuZCIsY2FwdHVyZWQ6Im9uQ29tcG9zaXRpb25FbmRDYXB0dXJlIn0sZGVwZW5kZW5jaWVz
OlsidG9wQmx1ciIsInRvcENvbXBvc2l0aW9uRW5kIiwidG9wS2V5RG93biIsInRvcEtleVByZXNz
IiwidG9wS2V5VXAiLCJ0b3BNb3VzZURvd24iXX0sY29tcG9zaXRpb25TdGFydDp7cGhhc2VkUmVn
aXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6Im9uQ29tcG9zaXRpb25TdGFydCIsY2FwdHVyZWQ6Im9u
Q29tcG9zaXRpb25TdGFydENhcHR1cmUifSxkZXBlbmRlbmNpZXM6WyJ0b3BCbHVyIiwidG9wQ29t
cG9zaXRpb25TdGFydCIsInRvcEtleURvd24iLCJ0b3BLZXlQcmVzcyIsInRvcEtleVVwIiwidG9w
TW91c2VEb3duIl19LGNvbXBvc2l0aW9uVXBkYXRlOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7
YnViYmxlZDoib25Db21wb3NpdGlvblVwZGF0ZSIsY2FwdHVyZWQ6Im9uQ29tcG9zaXRpb25VcGRh
dGVDYXB0dXJlIn0sZGVwZW5kZW5jaWVzOlsidG9wQmx1ciIsInRvcENvbXBvc2l0aW9uVXBkYXRl
IiwidG9wS2V5RG93biIsInRvcEtleVByZXNzIiwidG9wS2V5VXAiLCJ0b3BNb3VzZURvd24iXX19
LFA9ITEsTj1udWxsLFM9e2V2ZW50VHlwZXM6ayxleHRyYWN0RXZlbnRzOmZ1bmN0aW9uKGUsdCxu
LHIpe3JldHVybltsKGUsdCxuLHIpLGQoZSx0LG4scildfX07dC5leHBvcnRzPVN9LHsxMjM6MTIz
LDE5OjE5LDIwOjIwLDc4Ojc4LDgyOjgyfV0sNDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiByKGUsdCl7cmV0dXJuIGUrdC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSt0LnN1
YnN0cmluZygxKX12YXIgbz17YW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6ITAsYm9yZGVySW1hZ2VP
dXRzZXQ6ITAsYm9yZGVySW1hZ2VTbGljZTohMCxib3JkZXJJbWFnZVdpZHRoOiEwLGJveEZsZXg6
ITAsYm94RmxleEdyb3VwOiEwLGJveE9yZGluYWxHcm91cDohMCxjb2x1bW5Db3VudDohMCxmbGV4
OiEwLGZsZXhHcm93OiEwLGZsZXhQb3NpdGl2ZTohMCxmbGV4U2hyaW5rOiEwLGZsZXhOZWdhdGl2
ZTohMCxmbGV4T3JkZXI6ITAsZ3JpZFJvdzohMCxncmlkQ29sdW1uOiEwLGZvbnRXZWlnaHQ6ITAs
bGluZUNsYW1wOiEwLGxpbmVIZWlnaHQ6ITAsb3BhY2l0eTohMCxvcmRlcjohMCxvcnBoYW5zOiEw
LHRhYlNpemU6ITAsd2lkb3dzOiEwLHpJbmRleDohMCx6b29tOiEwLGZpbGxPcGFjaXR5OiEwLGZs
b29kT3BhY2l0eTohMCxzdG9wT3BhY2l0eTohMCxzdHJva2VEYXNoYXJyYXk6ITAsc3Ryb2tlRGFz
aG9mZnNldDohMCxzdHJva2VNaXRlcmxpbWl0OiEwLHN0cm9rZU9wYWNpdHk6ITAsc3Ryb2tlV2lk
dGg6ITB9LGk9WyJXZWJraXQiLCJtcyIsIk1veiIsIk8iXTtPYmplY3Qua2V5cyhvKS5mb3JFYWNo
KGZ1bmN0aW9uKGUpe2kuZm9yRWFjaChmdW5jdGlvbih0KXtvW3IodCxlKV09b1tlXX0pfSk7dmFy
IGE9e2JhY2tncm91bmQ6e2JhY2tncm91bmRBdHRhY2htZW50OiEwLGJhY2tncm91bmRDb2xvcjoh
MCxiYWNrZ3JvdW5kSW1hZ2U6ITAsYmFja2dyb3VuZFBvc2l0aW9uWDohMCxiYWNrZ3JvdW5kUG9z
aXRpb25ZOiEwLGJhY2tncm91bmRSZXBlYXQ6ITB9LGJhY2tncm91bmRQb3NpdGlvbjp7YmFja2dy
b3VuZFBvc2l0aW9uWDohMCxiYWNrZ3JvdW5kUG9zaXRpb25ZOiEwfSxib3JkZXI6e2JvcmRlcldp
ZHRoOiEwLGJvcmRlclN0eWxlOiEwLGJvcmRlckNvbG9yOiEwfSxib3JkZXJCb3R0b206e2JvcmRl
ckJvdHRvbVdpZHRoOiEwLGJvcmRlckJvdHRvbVN0eWxlOiEwLGJvcmRlckJvdHRvbUNvbG9yOiEw
fSxib3JkZXJMZWZ0Ontib3JkZXJMZWZ0V2lkdGg6ITAsYm9yZGVyTGVmdFN0eWxlOiEwLGJvcmRl
ckxlZnRDb2xvcjohMH0sYm9yZGVyUmlnaHQ6e2JvcmRlclJpZ2h0V2lkdGg6ITAsYm9yZGVyUmln
aHRTdHlsZTohMCxib3JkZXJSaWdodENvbG9yOiEwfSxib3JkZXJUb3A6e2JvcmRlclRvcFdpZHRo
OiEwLGJvcmRlclRvcFN0eWxlOiEwLGJvcmRlclRvcENvbG9yOiEwfSxmb250Ontmb250U3R5bGU6
ITAsZm9udFZhcmlhbnQ6ITAsZm9udFdlaWdodDohMCxmb250U2l6ZTohMCxsaW5lSGVpZ2h0OiEw
LGZvbnRGYW1pbHk6ITB9LG91dGxpbmU6e291dGxpbmVXaWR0aDohMCxvdXRsaW5lU3R5bGU6ITAs
b3V0bGluZUNvbG9yOiEwfX0scz17aXNVbml0bGVzc051bWJlcjpvLHNob3J0aGFuZFByb3BlcnR5
RXhwYW5zaW9uczphfTt0LmV4cG9ydHM9c30se31dLDU6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7dmFyIHI9ZSg0KSxvPWUoMTIzKSxpPShlKDU4KSxlKDEyNSksZSg5NCkpLGE9ZSgxMzYp
LHM9ZSgxNDApLHU9KGUoMTQyKSxzKGZ1bmN0aW9uKGUpe3JldHVybiBhKGUpfSkpLGw9ITEsYz0i
Y3NzRmxvYXQiO2lmKG8uY2FuVXNlRE9NKXt2YXIgcD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKS5zdHlsZTt0cnl7cC5mb250PSIifWNhdGNoKGUpe2w9ITB9dm9pZCAwPT09ZG9jdW1lbnQu
ZG9jdW1lbnRFbGVtZW50LnN0eWxlLmNzc0Zsb2F0JiYoYz0ic3R5bGVGbG9hdCIpfXZhciBkPXtj
cmVhdGVNYXJrdXBGb3JTdHlsZXM6ZnVuY3Rpb24oZSx0KXt2YXIgbj0iIjtmb3IodmFyIHIgaW4g
ZSlpZihlLmhhc093blByb3BlcnR5KHIpKXt2YXIgbz1lW3JdO251bGwhPW8mJihuKz11KHIpKyI6
IixuKz1pKHIsbyx0KSsiOyIpfXJldHVybiBufHxudWxsfSxzZXRWYWx1ZUZvclN0eWxlczpmdW5j
dGlvbihlLHQsbil7dmFyIG89ZS5zdHlsZTtmb3IodmFyIGEgaW4gdClpZih0Lmhhc093blByb3Bl
cnR5KGEpKXt2YXIgcz1pKGEsdFthXSxuKTtpZigiZmxvYXQiIT09YSYmImNzc0Zsb2F0IiE9PWF8
fChhPWMpLHMpb1thXT1zO2Vsc2V7dmFyIHU9bCYmci5zaG9ydGhhbmRQcm9wZXJ0eUV4cGFuc2lv
bnNbYV07aWYodSlmb3IodmFyIHAgaW4gdSlvW3BdPSIiO2Vsc2Ugb1thXT0iIn19fX07dC5leHBv
cnRzPWR9LHsxMjM6MTIzLDEyNToxMjUsMTM2OjEzNiwxNDA6MTQwLDE0MjoxNDIsNDo0LDU4OjU4
LDk0Ojk0fV0sNjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7
aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBj
bGFzcyBhcyBhIGZ1bmN0aW9uIil9dmFyIG89ZSgxMTMpLGk9ZSgyNCksYT0oZSgxMzcpLGZ1bmN0
aW9uKCl7ZnVuY3Rpb24gZSh0KXtyKHRoaXMsZSksdGhpcy5fY2FsbGJhY2tzPW51bGwsdGhpcy5f
Y29udGV4dHM9bnVsbCx0aGlzLl9hcmc9dH1yZXR1cm4gZS5wcm90b3R5cGUuZW5xdWV1ZT1mdW5j
dGlvbihlLHQpe3RoaXMuX2NhbGxiYWNrcz10aGlzLl9jYWxsYmFja3N8fFtdLHRoaXMuX2NhbGxi
YWNrcy5wdXNoKGUpLHRoaXMuX2NvbnRleHRzPXRoaXMuX2NvbnRleHRzfHxbXSx0aGlzLl9jb250
ZXh0cy5wdXNoKHQpfSxlLnByb3RvdHlwZS5ub3RpZnlBbGw9ZnVuY3Rpb24oKXt2YXIgZT10aGlz
Ll9jYWxsYmFja3MsdD10aGlzLl9jb250ZXh0cyxuPXRoaXMuX2FyZztpZihlJiZ0KXtlLmxlbmd0
aCE9PXQubGVuZ3RoP28oIjI0Iik6dm9pZCAwLHRoaXMuX2NhbGxiYWNrcz1udWxsLHRoaXMuX2Nv
bnRleHRzPW51bGw7Zm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspZVtyXS5jYWxsKHRbcl0sbik7
ZS5sZW5ndGg9MCx0Lmxlbmd0aD0wfX0sZS5wcm90b3R5cGUuY2hlY2twb2ludD1mdW5jdGlvbigp
e3JldHVybiB0aGlzLl9jYWxsYmFja3M/dGhpcy5fY2FsbGJhY2tzLmxlbmd0aDowfSxlLnByb3Rv
dHlwZS5yb2xsYmFjaz1mdW5jdGlvbihlKXt0aGlzLl9jYWxsYmFja3MmJnRoaXMuX2NvbnRleHRz
JiYodGhpcy5fY2FsbGJhY2tzLmxlbmd0aD1lLHRoaXMuX2NvbnRleHRzLmxlbmd0aD1lKX0sZS5w
cm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLl9jYWxsYmFja3M9bnVsbCx0aGlzLl9jb250
ZXh0cz1udWxsfSxlLnByb3RvdHlwZS5kZXN0cnVjdG9yPWZ1bmN0aW9uKCl7dGhpcy5yZXNldCgp
fSxlfSgpKTt0LmV4cG9ydHM9aS5hZGRQb29saW5nVG8oYSl9LHsxMTM6MTEzLDEzNzoxMzcsMjQ6
MjR9XSw3OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQ9
ZS5ub2RlTmFtZSYmZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiJzZWxlY3QiPT09dHx8
ImlucHV0Ij09PXQmJiJmaWxlIj09PWUudHlwZX1mdW5jdGlvbiBvKGUpe3ZhciB0PXguZ2V0UG9v
bGVkKFAuY2hhbmdlLFMsZSx3KGUpKTtfLmFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXModCks
RS5iYXRjaGVkVXBkYXRlcyhpLHQpfWZ1bmN0aW9uIGkoZSl7eS5lbnF1ZXVlRXZlbnRzKGUpLHku
cHJvY2Vzc0V2ZW50UXVldWUoITEpfWZ1bmN0aW9uIGEoZSx0KXtOPWUsUz10LE4uYXR0YWNoRXZl
bnQoIm9uY2hhbmdlIixvKX1mdW5jdGlvbiBzKCl7TiYmKE4uZGV0YWNoRXZlbnQoIm9uY2hhbmdl
IixvKSxOPW51bGwsUz1udWxsKX1mdW5jdGlvbiB1KGUsdCl7aWYoInRvcENoYW5nZSI9PT1lKXJl
dHVybiB0fWZ1bmN0aW9uIGwoZSx0LG4peyJ0b3BGb2N1cyI9PT1lPyhzKCksYSh0LG4pKToidG9w
Qmx1ciI9PT1lJiZzKCl9ZnVuY3Rpb24gYyhlLHQpe049ZSxTPXQsTT1lLnZhbHVlLEk9T2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLmNvbnN0cnVjdG9yLnByb3RvdHlwZSwidmFsdWUi
KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTiwidmFsdWUiLEEpLE4uYXR0YWNoRXZlbnQ/Ti5hdHRh
Y2hFdmVudCgib25wcm9wZXJ0eWNoYW5nZSIsZCk6Ti5hZGRFdmVudExpc3RlbmVyKCJwcm9wZXJ0
eWNoYW5nZSIsZCwhMSl9ZnVuY3Rpb24gcCgpe04mJihkZWxldGUgTi52YWx1ZSxOLmRldGFjaEV2
ZW50P04uZGV0YWNoRXZlbnQoIm9ucHJvcGVydHljaGFuZ2UiLGQpOk4ucmVtb3ZlRXZlbnRMaXN0
ZW5lcigicHJvcGVydHljaGFuZ2UiLGQsITEpLE49bnVsbCxTPW51bGwsTT1udWxsLEk9bnVsbCl9
ZnVuY3Rpb24gZChlKXtpZigidmFsdWUiPT09ZS5wcm9wZXJ0eU5hbWUpe3ZhciB0PWUuc3JjRWxl
bWVudC52YWx1ZTt0IT09TSYmKE09dCxvKGUpKX19ZnVuY3Rpb24gZihlLHQpe2lmKCJ0b3BJbnB1
dCI9PT1lKXJldHVybiB0fWZ1bmN0aW9uIGgoZSx0LG4peyJ0b3BGb2N1cyI9PT1lPyhwKCksYyh0
LG4pKToidG9wQmx1ciI9PT1lJiZwKCl9ZnVuY3Rpb24gbShlLHQpe2lmKCgidG9wU2VsZWN0aW9u
Q2hhbmdlIj09PWV8fCJ0b3BLZXlVcCI9PT1lfHwidG9wS2V5RG93biI9PT1lKSYmTiYmTi52YWx1
ZSE9PU0pcmV0dXJuIE09Ti52YWx1ZSxTfWZ1bmN0aW9uIHYoZSl7cmV0dXJuIGUubm9kZU5hbWUm
JiJpbnB1dCI9PT1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkmJigiY2hlY2tib3giPT09ZS50eXBl
fHwicmFkaW8iPT09ZS50eXBlKX1mdW5jdGlvbiBnKGUsdCl7aWYoInRvcENsaWNrIj09PWUpcmV0
dXJuIHR9dmFyIHk9ZSgxNiksXz1lKDE5KSxDPWUoMTIzKSxiPWUoMzMpLEU9ZSg3MSkseD1lKDgw
KSx3PWUoMTAyKSxUPWUoMTEwKSxrPWUoMTExKSxQPXtjaGFuZ2U6e3BoYXNlZFJlZ2lzdHJhdGlv
bk5hbWVzOntidWJibGVkOiJvbkNoYW5nZSIsY2FwdHVyZWQ6Im9uQ2hhbmdlQ2FwdHVyZSJ9LGRl
cGVuZGVuY2llczpbInRvcEJsdXIiLCJ0b3BDaGFuZ2UiLCJ0b3BDbGljayIsInRvcEZvY3VzIiwi
dG9wSW5wdXQiLCJ0b3BLZXlEb3duIiwidG9wS2V5VXAiLCJ0b3BTZWxlY3Rpb25DaGFuZ2UiXX19
LE49bnVsbCxTPW51bGwsTT1udWxsLEk9bnVsbCxPPSExO0MuY2FuVXNlRE9NJiYoTz1UKCJjaGFu
Z2UiKSYmKCFkb2N1bWVudC5kb2N1bWVudE1vZGV8fGRvY3VtZW50LmRvY3VtZW50TW9kZT44KSk7
dmFyIFI9ITE7Qy5jYW5Vc2VET00mJihSPVQoImlucHV0IikmJighZG9jdW1lbnQuZG9jdW1lbnRN
b2RlfHxkb2N1bWVudC5kb2N1bWVudE1vZGU+MTEpKTt2YXIgQT17Z2V0OmZ1bmN0aW9uKCl7cmV0
dXJuIEkuZ2V0LmNhbGwodGhpcyl9LHNldDpmdW5jdGlvbihlKXtNPSIiK2UsSS5zZXQuY2FsbCh0
aGlzLGUpfX0sRD17ZXZlbnRUeXBlczpQLGV4dHJhY3RFdmVudHM6ZnVuY3Rpb24oZSx0LG4sbyl7
dmFyIGksYSxzPXQ/Yi5nZXROb2RlRnJvbUluc3RhbmNlKHQpOndpbmRvdztpZihyKHMpP08/aT11
OmE9bDprKHMpP1I/aT1mOihpPW0sYT1oKTp2KHMpJiYoaT1nKSxpKXt2YXIgYz1pKGUsdCk7aWYo
Yyl7dmFyIHA9eC5nZXRQb29sZWQoUC5jaGFuZ2UsYyxuLG8pO3JldHVybiBwLnR5cGU9ImNoYW5n
ZSIsXy5hY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKHApLHB9fWEmJmEoZSxzLHQpfX07dC5l
eHBvcnRzPUR9LHsxMDI6MTAyLDExMDoxMTAsMTExOjExMSwxMjM6MTIzLDE2OjE2LDE5OjE5LDMz
OjMzLDcxOjcxLDgwOjgwfV0sODpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biByKGUsdCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCkmJih0PXRbMV0pLHQ/dC5uZXh0U2libGlu
ZzplLmZpcnN0Q2hpbGR9ZnVuY3Rpb24gbyhlLHQsbil7Yy5pbnNlcnRUcmVlQmVmb3JlKGUsdCxu
KX1mdW5jdGlvbiBpKGUsdCxuKXtBcnJheS5pc0FycmF5KHQpP3MoZSx0WzBdLHRbMV0sbik6bShl
LHQsbil9ZnVuY3Rpb24gYShlLHQpe2lmKEFycmF5LmlzQXJyYXkodCkpe3ZhciBuPXRbMV07dD10
WzBdLHUoZSx0LG4pLGUucmVtb3ZlQ2hpbGQobil9ZS5yZW1vdmVDaGlsZCh0KX1mdW5jdGlvbiBz
KGUsdCxuLHIpe2Zvcih2YXIgbz10Ozspe3ZhciBpPW8ubmV4dFNpYmxpbmc7aWYobShlLG8sciks
bz09PW4pYnJlYWs7bz1pfX1mdW5jdGlvbiB1KGUsdCxuKXtmb3IoOzspe3ZhciByPXQubmV4dFNp
Ymxpbmc7aWYocj09PW4pYnJlYWs7ZS5yZW1vdmVDaGlsZChyKX19ZnVuY3Rpb24gbChlLHQsbil7
dmFyIHI9ZS5wYXJlbnROb2RlLG89ZS5uZXh0U2libGluZztvPT09dD9uJiZtKHIsZG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUobiksbyk6bj8oaChvLG4pLHUocixvLHQpKTp1KHIsZSx0KX12YXIgYz1l
KDkpLHA9ZSgxMyksZD0oZSgzMyksZSg1OCksZSg5MykpLGY9ZSgxMTUpLGg9ZSgxMTYpLG09ZChm
dW5jdGlvbihlLHQsbil7ZS5pbnNlcnRCZWZvcmUodCxuKX0pLHY9cC5kYW5nZXJvdXNseVJlcGxh
Y2VOb2RlV2l0aE1hcmt1cCxnPXtkYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cDp2LHJl
cGxhY2VEZWxpbWl0ZWRUZXh0OmwscHJvY2Vzc1VwZGF0ZXM6ZnVuY3Rpb24oZSx0KXtmb3IodmFy
IG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHM9dFtuXTtzd2l0Y2gocy50eXBlKXtjYXNlIklOU0VS
VF9NQVJLVVAiOm8oZSxzLmNvbnRlbnQscihlLHMuYWZ0ZXJOb2RlKSk7YnJlYWs7Y2FzZSJNT1ZF
X0VYSVNUSU5HIjppKGUscy5mcm9tTm9kZSxyKGUscy5hZnRlck5vZGUpKTticmVhaztjYXNlIlNF
VF9NQVJLVVAiOmYoZSxzLmNvbnRlbnQpO2JyZWFrO2Nhc2UiVEVYVF9DT05URU5UIjpoKGUscy5j
b250ZW50KTticmVhaztjYXNlIlJFTU9WRV9OT0RFIjphKGUscy5mcm9tTm9kZSl9fX19O3QuZXhw
b3J0cz1nfSx7MTE1OjExNSwxMTY6MTE2LDEzOjEzLDMzOjMzLDU4OjU4LDk6OSw5Mzo5M31dLDk6
W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtpZih2KXt2YXIgdD1l
Lm5vZGUsbj1lLmNoaWxkcmVuO2lmKG4ubGVuZ3RoKWZvcih2YXIgcj0wO3I8bi5sZW5ndGg7cisr
KWcodCxuW3JdLG51bGwpO2Vsc2UgbnVsbCE9ZS5odG1sP3AodCxlLmh0bWwpOm51bGwhPWUudGV4
dCYmZih0LGUudGV4dCl9fWZ1bmN0aW9uIG8oZSx0KXtlLnBhcmVudE5vZGUucmVwbGFjZUNoaWxk
KHQubm9kZSxlKSxyKHQpfWZ1bmN0aW9uIGkoZSx0KXt2P2UuY2hpbGRyZW4ucHVzaCh0KTplLm5v
ZGUuYXBwZW5kQ2hpbGQodC5ub2RlKX1mdW5jdGlvbiBhKGUsdCl7dj9lLmh0bWw9dDpwKGUubm9k
ZSx0KX1mdW5jdGlvbiBzKGUsdCl7dj9lLnRleHQ9dDpmKGUubm9kZSx0KX1mdW5jdGlvbiB1KCl7
cmV0dXJuIHRoaXMubm9kZS5ub2RlTmFtZX1mdW5jdGlvbiBsKGUpe3JldHVybntub2RlOmUsY2hp
bGRyZW46W10saHRtbDpudWxsLHRleHQ6bnVsbCx0b1N0cmluZzp1fX12YXIgYz1lKDEwKSxwPWUo
MTE1KSxkPWUoOTMpLGY9ZSgxMTYpLGg9MSxtPTExLHY9InVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1
bWVudCYmIm51bWJlciI9PXR5cGVvZiBkb2N1bWVudC5kb2N1bWVudE1vZGV8fCJ1bmRlZmluZWQi
IT10eXBlb2YgbmF2aWdhdG9yJiYic3RyaW5nIj09dHlwZW9mIG5hdmlnYXRvci51c2VyQWdlbnQm
Ji9cYkVkZ2VcL1xkLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpLGc9ZChmdW5jdGlvbihlLHQs
bil7dC5ub2RlLm5vZGVUeXBlPT09bXx8dC5ub2RlLm5vZGVUeXBlPT09aCYmIm9iamVjdCI9PT10
Lm5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSYmKG51bGw9PXQubm9kZS5uYW1lc3BhY2VVUkl8
fHQubm9kZS5uYW1lc3BhY2VVUkk9PT1jLmh0bWwpPyhyKHQpLGUuaW5zZXJ0QmVmb3JlKHQubm9k
ZSxuKSk6KGUuaW5zZXJ0QmVmb3JlKHQubm9kZSxuKSxyKHQpKX0pO2wuaW5zZXJ0VHJlZUJlZm9y
ZT1nLGwucmVwbGFjZUNoaWxkV2l0aFRyZWU9byxsLnF1ZXVlQ2hpbGQ9aSxsLnF1ZXVlSFRNTD1h
LGwucXVldWVUZXh0PXMsdC5leHBvcnRzPWx9LHsxMDoxMCwxMTU6MTE1LDExNjoxMTYsOTM6OTN9
XSwxMDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj17aHRtbDoiaHR0cDovL3d3
dy53My5vcmcvMTk5OS94aHRtbCIsbWF0aG1sOiJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgv
TWF0aE1MIixzdmc6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIn07dC5leHBvcnRzPXJ9LHt9
XSwxMTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7cmV0dXJu
KGUmdCk9PT10fXZhciBvPWUoMTEzKSxpPShlKDEzNykse01VU1RfVVNFX1BST1BFUlRZOjEsSEFT
X0JPT0xFQU5fVkFMVUU6NCxIQVNfTlVNRVJJQ19WQUxVRTo4LEhBU19QT1NJVElWRV9OVU1FUklD
X1ZBTFVFOjI0LEhBU19PVkVSTE9BREVEX0JPT0xFQU5fVkFMVUU6MzIsaW5qZWN0RE9NUHJvcGVy
dHlDb25maWc6ZnVuY3Rpb24oZSl7dmFyIHQ9aSxuPWUuUHJvcGVydGllc3x8e30sYT1lLkRPTUF0
dHJpYnV0ZU5hbWVzcGFjZXN8fHt9LHU9ZS5ET01BdHRyaWJ1dGVOYW1lc3x8e30sbD1lLkRPTVBy
b3BlcnR5TmFtZXN8fHt9LGM9ZS5ET01NdXRhdGlvbk1ldGhvZHN8fHt9O2UuaXNDdXN0b21BdHRy
aWJ1dGUmJnMuX2lzQ3VzdG9tQXR0cmlidXRlRnVuY3Rpb25zLnB1c2goZS5pc0N1c3RvbUF0dHJp
YnV0ZSk7Zm9yKHZhciBwIGluIG4pe3MucHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShwKT9vKCI0
OCIscCk6dm9pZCAwO3ZhciBkPXAudG9Mb3dlckNhc2UoKSxmPW5bcF0saD17YXR0cmlidXRlTmFt
ZTpkLGF0dHJpYnV0ZU5hbWVzcGFjZTpudWxsLHByb3BlcnR5TmFtZTpwLG11dGF0aW9uTWV0aG9k
Om51bGwsbXVzdFVzZVByb3BlcnR5OnIoZix0Lk1VU1RfVVNFX1BST1BFUlRZKSxoYXNCb29sZWFu
VmFsdWU6cihmLHQuSEFTX0JPT0xFQU5fVkFMVUUpLGhhc051bWVyaWNWYWx1ZTpyKGYsdC5IQVNf
TlVNRVJJQ19WQUxVRSksaGFzUG9zaXRpdmVOdW1lcmljVmFsdWU6cihmLHQuSEFTX1BPU0lUSVZF
X05VTUVSSUNfVkFMVUUpLGhhc092ZXJsb2FkZWRCb29sZWFuVmFsdWU6cihmLHQuSEFTX09WRVJM
T0FERURfQk9PTEVBTl9WQUxVRSl9O2lmKGguaGFzQm9vbGVhblZhbHVlK2guaGFzTnVtZXJpY1Zh
bHVlK2guaGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZTw9MT92b2lkIDA6bygiNTAiLHApLHUuaGFz
T3duUHJvcGVydHkocCkpe3ZhciBtPXVbcF07aC5hdHRyaWJ1dGVOYW1lPW19YS5oYXNPd25Qcm9w
ZXJ0eShwKSYmKGguYXR0cmlidXRlTmFtZXNwYWNlPWFbcF0pLGwuaGFzT3duUHJvcGVydHkocCkm
JihoLnByb3BlcnR5TmFtZT1sW3BdKSxjLmhhc093blByb3BlcnR5KHApJiYoaC5tdXRhdGlvbk1l
dGhvZD1jW3BdKSxzLnByb3BlcnRpZXNbcF09aH19fSksYT0iOkEtWl9hLXpcXHUwMEMwLVxcdTAw
RDZcXHUwMEQ4LVxcdTAwRjZcXHUwMEY4LVxcdTAyRkZcXHUwMzcwLVxcdTAzN0RcXHUwMzdGLVxc
dTFGRkZcXHUyMDBDLVxcdTIwMERcXHUyMDcwLVxcdTIxOEZcXHUyQzAwLVxcdTJGRUZcXHUzMDAx
LVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRkQiLHM9e0lEX0FUVFJJQlVURV9O
QU1FOiJkYXRhLXJlYWN0aWQiLFJPT1RfQVRUUklCVVRFX05BTUU6ImRhdGEtcmVhY3Ryb290IixB
VFRSSUJVVEVfTkFNRV9TVEFSVF9DSEFSOmEsQVRUUklCVVRFX05BTUVfQ0hBUjphKyJcXC0uMC05
XFx1MDBCN1xcdTAzMDAtXFx1MDM2RlxcdTIwM0YtXFx1MjA0MCIscHJvcGVydGllczp7fSxnZXRQ
b3NzaWJsZVN0YW5kYXJkTmFtZTpudWxsLF9pc0N1c3RvbUF0dHJpYnV0ZUZ1bmN0aW9uczpbXSxp
c0N1c3RvbUF0dHJpYnV0ZTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PHMuX2lzQ3VzdG9tQXR0
cmlidXRlRnVuY3Rpb25zLmxlbmd0aDt0Kyspe3ZhciBuPXMuX2lzQ3VzdG9tQXR0cmlidXRlRnVu
Y3Rpb25zW3RdO2lmKG4oZSkpcmV0dXJuITB9cmV0dXJuITF9LGluamVjdGlvbjppfTt0LmV4cG9y
dHM9c30sezExMzoxMTMsMTM3OjEzN31dLDEyOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIHIoZSl7cmV0dXJuISFsLmhhc093blByb3BlcnR5KGUpfHwhdS5oYXNPd25Qcm9w
ZXJ0eShlKSYmKHMudGVzdChlKT8obFtlXT0hMCwhMCk6KHVbZV09ITAsITEpKX1mdW5jdGlvbiBv
KGUsdCl7cmV0dXJuIG51bGw9PXR8fGUuaGFzQm9vbGVhblZhbHVlJiYhdHx8ZS5oYXNOdW1lcmlj
VmFsdWUmJmlzTmFOKHQpfHxlLmhhc1Bvc2l0aXZlTnVtZXJpY1ZhbHVlJiZ0PDF8fGUuaGFzT3Zl
cmxvYWRlZEJvb2xlYW5WYWx1ZSYmdD09PSExfXZhciBpPWUoMTEpLGE9KGUoMzMpLGUoNTgpLGUo
MTEyKSkscz0oZSgxNDIpLG5ldyBSZWdFeHAoIl5bIitpLkFUVFJJQlVURV9OQU1FX1NUQVJUX0NI
QVIrIl1bIitpLkFUVFJJQlVURV9OQU1FX0NIQVIrIl0qJCIpKSx1PXt9LGw9e30sYz17Y3JlYXRl
TWFya3VwRm9ySUQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGkuSURfQVRUUklCVVRFX05BTUUrIj0iK2Eo
ZSl9LHNldEF0dHJpYnV0ZUZvcklEOmZ1bmN0aW9uKGUsdCl7ZS5zZXRBdHRyaWJ1dGUoaS5JRF9B
VFRSSUJVVEVfTkFNRSx0KX0sY3JlYXRlTWFya3VwRm9yUm9vdDpmdW5jdGlvbigpe3JldHVybiBp
LlJPT1RfQVRUUklCVVRFX05BTUUrJz0iIid9LHNldEF0dHJpYnV0ZUZvclJvb3Q6ZnVuY3Rpb24o
ZSl7ZS5zZXRBdHRyaWJ1dGUoaS5ST09UX0FUVFJJQlVURV9OQU1FLCIiKX0sY3JlYXRlTWFya3Vw
Rm9yUHJvcGVydHk6ZnVuY3Rpb24oZSx0KXt2YXIgbj1pLnByb3BlcnRpZXMuaGFzT3duUHJvcGVy
dHkoZSk/aS5wcm9wZXJ0aWVzW2VdOm51bGw7aWYobil7aWYobyhuLHQpKXJldHVybiIiO3ZhciBy
PW4uYXR0cmlidXRlTmFtZTtyZXR1cm4gbi5oYXNCb29sZWFuVmFsdWV8fG4uaGFzT3ZlcmxvYWRl
ZEJvb2xlYW5WYWx1ZSYmdD09PSEwP3IrJz0iIic6cisiPSIrYSh0KX1yZXR1cm4gaS5pc0N1c3Rv
bUF0dHJpYnV0ZShlKT9udWxsPT10PyIiOmUrIj0iK2EodCk6bnVsbH0sY3JlYXRlTWFya3VwRm9y
Q3VzdG9tQXR0cmlidXRlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHIoZSkmJm51bGwhPXQ/ZSsiPSIr
YSh0KToiIn0sc2V0VmFsdWVGb3JQcm9wZXJ0eTpmdW5jdGlvbihlLHQsbil7dmFyIHI9aS5wcm9w
ZXJ0aWVzLmhhc093blByb3BlcnR5KHQpP2kucHJvcGVydGllc1t0XTpudWxsO2lmKHIpe3ZhciBh
PXIubXV0YXRpb25NZXRob2Q7aWYoYSlhKGUsbik7ZWxzZXtpZihvKHIsbikpcmV0dXJuIHZvaWQg
dGhpcy5kZWxldGVWYWx1ZUZvclByb3BlcnR5KGUsdCk7aWYoci5tdXN0VXNlUHJvcGVydHkpZVty
LnByb3BlcnR5TmFtZV09bjtlbHNle3ZhciBzPXIuYXR0cmlidXRlTmFtZSx1PXIuYXR0cmlidXRl
TmFtZXNwYWNlO3U/ZS5zZXRBdHRyaWJ1dGVOUyh1LHMsIiIrbik6ci5oYXNCb29sZWFuVmFsdWV8
fHIuaGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZSYmbj09PSEwP2Uuc2V0QXR0cmlidXRlKHMsIiIp
OmUuc2V0QXR0cmlidXRlKHMsIiIrbil9fX1lbHNlIGlmKGkuaXNDdXN0b21BdHRyaWJ1dGUodCkp
cmV0dXJuIHZvaWQgYy5zZXRWYWx1ZUZvckF0dHJpYnV0ZShlLHQsbil9LHNldFZhbHVlRm9yQXR0
cmlidXRlOmZ1bmN0aW9uKGUsdCxuKXtyKHQpJiYobnVsbD09bj9lLnJlbW92ZUF0dHJpYnV0ZSh0
KTplLnNldEF0dHJpYnV0ZSh0LCIiK24pKX0sZGVsZXRlVmFsdWVGb3JBdHRyaWJ1dGU6ZnVuY3Rp
b24oZSx0KXtlLnJlbW92ZUF0dHJpYnV0ZSh0KX0sZGVsZXRlVmFsdWVGb3JQcm9wZXJ0eTpmdW5j
dGlvbihlLHQpe3ZhciBuPWkucHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eSh0KT9pLnByb3BlcnRp
ZXNbdF06bnVsbDtpZihuKXt2YXIgcj1uLm11dGF0aW9uTWV0aG9kO2lmKHIpcihlLHZvaWQgMCk7
ZWxzZSBpZihuLm11c3RVc2VQcm9wZXJ0eSl7dmFyIG89bi5wcm9wZXJ0eU5hbWU7bi5oYXNCb29s
ZWFuVmFsdWU/ZVtvXT0hMTplW29dPSIifWVsc2UgZS5yZW1vdmVBdHRyaWJ1dGUobi5hdHRyaWJ1
dGVOYW1lKX1lbHNlIGkuaXNDdXN0b21BdHRyaWJ1dGUodCkmJmUucmVtb3ZlQXR0cmlidXRlKHQp
fX07dC5leHBvcnRzPWN9LHsxMToxMSwxMTI6MTEyLDE0MjoxNDIsMzM6MzMsNTg6NTh9XSwxMzpb
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDExMyksbz1lKDkpLGk9ZSgxMjMp
LGE9ZSgxMjgpLHM9ZSgxMjkpLHU9KGUoMTM3KSx7ZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhN
YXJrdXA6ZnVuY3Rpb24oZSx0KXtpZihpLmNhblVzZURPTT92b2lkIDA6cigiNTYiKSx0P3ZvaWQg
MDpyKCI1NyIpLCJIVE1MIj09PWUubm9kZU5hbWU/cigiNTgiKTp2b2lkIDAsInN0cmluZyI9PXR5
cGVvZiB0KXt2YXIgbj1hKHQscylbMF07ZS5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChuLGUpfWVs
c2Ugby5yZXBsYWNlQ2hpbGRXaXRoVHJlZShlLHQpfX0pO3QuZXhwb3J0cz11fSx7MTEzOjExMywx
MjM6MTIzLDEyODoxMjgsMTI5OjEyOSwxMzc6MTM3LDk6OX1dLDE0OltmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO3ZhciByPVsiUmVzcG9uZGVyRXZlbnRQbHVnaW4iLCJTaW1wbGVFdmVudFBs
dWdpbiIsIlRhcEV2ZW50UGx1Z2luIiwiRW50ZXJMZWF2ZUV2ZW50UGx1Z2luIiwiQ2hhbmdlRXZl
bnRQbHVnaW4iLCJTZWxlY3RFdmVudFBsdWdpbiIsIkJlZm9yZUlucHV0RXZlbnRQbHVnaW4iXTt0
LmV4cG9ydHM9cn0se31dLDE1OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUo
MTkpLG89ZSgzMyksaT1lKDg0KSxhPXttb3VzZUVudGVyOntyZWdpc3RyYXRpb25OYW1lOiJvbk1v
dXNlRW50ZXIiLGRlcGVuZGVuY2llczpbInRvcE1vdXNlT3V0IiwidG9wTW91c2VPdmVyIl19LG1v
dXNlTGVhdmU6e3JlZ2lzdHJhdGlvbk5hbWU6Im9uTW91c2VMZWF2ZSIsZGVwZW5kZW5jaWVzOlsi
dG9wTW91c2VPdXQiLCJ0b3BNb3VzZU92ZXIiXX19LHM9e2V2ZW50VHlwZXM6YSxleHRyYWN0RXZl
bnRzOmZ1bmN0aW9uKGUsdCxuLHMpe2lmKCJ0b3BNb3VzZU92ZXIiPT09ZSYmKG4ucmVsYXRlZFRh
cmdldHx8bi5mcm9tRWxlbWVudCkpcmV0dXJuIG51bGw7aWYoInRvcE1vdXNlT3V0IiE9PWUmJiJ0
b3BNb3VzZU92ZXIiIT09ZSlyZXR1cm4gbnVsbDt2YXIgdTtpZihzLndpbmRvdz09PXMpdT1zO2Vs
c2V7dmFyIGw9cy5vd25lckRvY3VtZW50O3U9bD9sLmRlZmF1bHRWaWV3fHxsLnBhcmVudFdpbmRv
dzp3aW5kb3d9dmFyIGMscDtpZigidG9wTW91c2VPdXQiPT09ZSl7Yz10O3ZhciBkPW4ucmVsYXRl
ZFRhcmdldHx8bi50b0VsZW1lbnQ7cD1kP28uZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGUoZCk6
bnVsbH1lbHNlIGM9bnVsbCxwPXQ7aWYoYz09PXApcmV0dXJuIG51bGw7dmFyIGY9bnVsbD09Yz91
Om8uZ2V0Tm9kZUZyb21JbnN0YW5jZShjKSxoPW51bGw9PXA/dTpvLmdldE5vZGVGcm9tSW5zdGFu
Y2UocCksbT1pLmdldFBvb2xlZChhLm1vdXNlTGVhdmUsYyxuLHMpO20udHlwZT0ibW91c2VsZWF2
ZSIsbS50YXJnZXQ9ZixtLnJlbGF0ZWRUYXJnZXQ9aDt2YXIgdj1pLmdldFBvb2xlZChhLm1vdXNl
RW50ZXIscCxuLHMpO3JldHVybiB2LnR5cGU9Im1vdXNlZW50ZXIiLHYudGFyZ2V0PWgsdi5yZWxh
dGVkVGFyZ2V0PWYsci5hY2N1bXVsYXRlRW50ZXJMZWF2ZURpc3BhdGNoZXMobSx2LGMscCksW20s
dl19fTt0LmV4cG9ydHM9c30sezE5OjE5LDMzOjMzLDg0Ojg0fV0sMTY6W2Z1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7dmFyIHI9ZSgxMTMpLG89ZSgxNyksaT1lKDE4KSxhPWUoNTApLHM9ZSg5
MSksdT1lKDk4KSxsPShlKDEzNykse30pLGM9bnVsbCxwPWZ1bmN0aW9uKGUsdCl7ZSYmKGkuZXhl
Y3V0ZURpc3BhdGNoZXNJbk9yZGVyKGUsdCksZS5pc1BlcnNpc3RlbnQoKXx8ZS5jb25zdHJ1Y3Rv
ci5yZWxlYXNlKGUpKX0sZD1mdW5jdGlvbihlKXtyZXR1cm4gcChlLCEwKX0sZj1mdW5jdGlvbihl
KXtyZXR1cm4gcChlLCExKX0saD1mdW5jdGlvbihlKXtyZXR1cm4iLiIrZS5fcm9vdE5vZGVJRH0s
bT17aW5qZWN0aW9uOntpbmplY3RFdmVudFBsdWdpbk9yZGVyOm8uaW5qZWN0RXZlbnRQbHVnaW5P
cmRlcixpbmplY3RFdmVudFBsdWdpbnNCeU5hbWU6by5pbmplY3RFdmVudFBsdWdpbnNCeU5hbWV9
LHB1dExpc3RlbmVyOmZ1bmN0aW9uKGUsdCxuKXsiZnVuY3Rpb24iIT10eXBlb2Ygbj9yKCI5NCIs
dCx0eXBlb2Ygbik6dm9pZCAwO3ZhciBpPWgoZSksYT1sW3RdfHwobFt0XT17fSk7YVtpXT1uO3Zh
ciBzPW8ucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbdF07cyYmcy5kaWRQdXRMaXN0ZW5lciYmcy5k
aWRQdXRMaXN0ZW5lcihlLHQsbil9LGdldExpc3RlbmVyOmZ1bmN0aW9uKGUsdCl7dmFyIG49bFt0
XSxyPWgoZSk7cmV0dXJuIG4mJm5bcl19LGRlbGV0ZUxpc3RlbmVyOmZ1bmN0aW9uKGUsdCl7dmFy
IG49by5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1t0XTtuJiZuLndpbGxEZWxldGVMaXN0ZW5lciYm
bi53aWxsRGVsZXRlTGlzdGVuZXIoZSx0KTt2YXIgcj1sW3RdO2lmKHIpe3ZhciBpPWgoZSk7ZGVs
ZXRlIHJbaV19fSxkZWxldGVBbGxMaXN0ZW5lcnM6ZnVuY3Rpb24oZSl7dmFyIHQ9aChlKTtmb3Io
dmFyIG4gaW4gbClpZihsLmhhc093blByb3BlcnR5KG4pJiZsW25dW3RdKXt2YXIgcj1vLnJlZ2lz
dHJhdGlvbk5hbWVNb2R1bGVzW25dO3ImJnIud2lsbERlbGV0ZUxpc3RlbmVyJiZyLndpbGxEZWxl
dGVMaXN0ZW5lcihlLG4pLGRlbGV0ZSBsW25dW3RdfX0sZXh0cmFjdEV2ZW50czpmdW5jdGlvbihl
LHQsbixyKXtmb3IodmFyIGksYT1vLnBsdWdpbnMsdT0wO3U8YS5sZW5ndGg7dSsrKXt2YXIgbD1h
W3VdO2lmKGwpe3ZhciBjPWwuZXh0cmFjdEV2ZW50cyhlLHQsbixyKTtjJiYoaT1zKGksYykpfX1y
ZXR1cm4gaX0sZW5xdWV1ZUV2ZW50czpmdW5jdGlvbihlKXtlJiYoYz1zKGMsZSkpfSxwcm9jZXNz
RXZlbnRRdWV1ZTpmdW5jdGlvbihlKXt2YXIgdD1jO2M9bnVsbCxlP3UodCxkKTp1KHQsZiksYz9y
KCI5NSIpOnZvaWQgMCxhLnJldGhyb3dDYXVnaHRFcnJvcigpfSxfX3B1cmdlOmZ1bmN0aW9uKCl7
bD17fX0sX19nZXRMaXN0ZW5lckJhbms6ZnVuY3Rpb24oKXtyZXR1cm4gbH19O3QuZXhwb3J0cz1t
fSx7MTEzOjExMywxMzc6MTM3LDE3OjE3LDE4OjE4LDUwOjUwLDkxOjkxLDk4Ojk4fV0sMTc6W2Z1
bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe2lmKHMpZm9yKHZhciBlIGlu
IHUpe3ZhciB0PXVbZV0sbj1zLmluZGV4T2YoZSk7aWYobj4tMT92b2lkIDA6YSgiOTYiLGUpLCFs
LnBsdWdpbnNbbl0pe3QuZXh0cmFjdEV2ZW50cz92b2lkIDA6YSgiOTciLGUpLGwucGx1Z2luc1tu
XT10O3ZhciByPXQuZXZlbnRUeXBlcztmb3IodmFyIGkgaW4gcilvKHJbaV0sdCxpKT92b2lkIDA6
YSgiOTgiLGksZSl9fX1mdW5jdGlvbiBvKGUsdCxuKXtsLmV2ZW50TmFtZURpc3BhdGNoQ29uZmln
cy5oYXNPd25Qcm9wZXJ0eShuKT9hKCI5OSIsbik6dm9pZCAwLGwuZXZlbnROYW1lRGlzcGF0Y2hD
b25maWdzW25dPWU7dmFyIHI9ZS5waGFzZWRSZWdpc3RyYXRpb25OYW1lcztpZihyKXtmb3IodmFy
IG8gaW4gcilpZihyLmhhc093blByb3BlcnR5KG8pKXt2YXIgcz1yW29dO2kocyx0LG4pfXJldHVy
biEwfXJldHVybiEhZS5yZWdpc3RyYXRpb25OYW1lJiYoaShlLnJlZ2lzdHJhdGlvbk5hbWUsdCxu
KSwhMCl9ZnVuY3Rpb24gaShlLHQsbil7bC5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tlXT9hKCIx
MDAiLGUpOnZvaWQgMCxsLnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW2VdPXQsbC5yZWdpc3RyYXRp
b25OYW1lRGVwZW5kZW5jaWVzW2VdPXQuZXZlbnRUeXBlc1tuXS5kZXBlbmRlbmNpZXN9dmFyIGE9
ZSgxMTMpLHM9KGUoMTM3KSxudWxsKSx1PXt9LGw9e3BsdWdpbnM6W10sZXZlbnROYW1lRGlzcGF0
Y2hDb25maWdzOnt9LHJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzOnt9LHJlZ2lzdHJhdGlvbk5hbWVE
ZXBlbmRlbmNpZXM6e30scG9zc2libGVSZWdpc3RyYXRpb25OYW1lczpudWxsLGluamVjdEV2ZW50
UGx1Z2luT3JkZXI6ZnVuY3Rpb24oZSl7cz9hKCIxMDEiKTp2b2lkIDAscz1BcnJheS5wcm90b3R5
cGUuc2xpY2UuY2FsbChlKSxyKCl9LGluamVjdEV2ZW50UGx1Z2luc0J5TmFtZTpmdW5jdGlvbihl
KXt2YXIgdD0hMTtmb3IodmFyIG4gaW4gZSlpZihlLmhhc093blByb3BlcnR5KG4pKXt2YXIgbz1l
W25dO3UuaGFzT3duUHJvcGVydHkobikmJnVbbl09PT1vfHwodVtuXT9hKCIxMDIiLG4pOnZvaWQg
MCx1W25dPW8sdD0hMCl9dCYmcigpfSxnZXRQbHVnaW5Nb2R1bGVGb3JFdmVudDpmdW5jdGlvbihl
KXt2YXIgdD1lLmRpc3BhdGNoQ29uZmlnO2lmKHQucmVnaXN0cmF0aW9uTmFtZSlyZXR1cm4gbC5y
ZWdpc3RyYXRpb25OYW1lTW9kdWxlc1t0LnJlZ2lzdHJhdGlvbk5hbWVdfHxudWxsO2lmKHZvaWQg
MCE9PXQucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMpe3ZhciBuPXQucGhhc2VkUmVnaXN0cmF0aW9u
TmFtZXM7Zm9yKHZhciByIGluIG4paWYobi5oYXNPd25Qcm9wZXJ0eShyKSl7dmFyIG89bC5yZWdp
c3RyYXRpb25OYW1lTW9kdWxlc1tuW3JdXTtpZihvKXJldHVybiBvfX1yZXR1cm4gbnVsbH0sX3Jl
c2V0RXZlbnRQbHVnaW5zOmZ1bmN0aW9uKCl7cz1udWxsO2Zvcih2YXIgZSBpbiB1KXUuaGFzT3du
UHJvcGVydHkoZSkmJmRlbGV0ZSB1W2VdO2wucGx1Z2lucy5sZW5ndGg9MDt2YXIgdD1sLmV2ZW50
TmFtZURpc3BhdGNoQ29uZmlncztmb3IodmFyIG4gaW4gdCl0Lmhhc093blByb3BlcnR5KG4pJiZk
ZWxldGUgdFtuXTt2YXIgcj1sLnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzO2Zvcih2YXIgbyBpbiBy
KXIuaGFzT3duUHJvcGVydHkobykmJmRlbGV0ZSByW29dfX07dC5leHBvcnRzPWx9LHsxMTM6MTEz
LDEzNzoxMzd9XSwxODpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUp
e3JldHVybiJ0b3BNb3VzZVVwIj09PWV8fCJ0b3BUb3VjaEVuZCI9PT1lfHwidG9wVG91Y2hDYW5j
ZWwiPT09ZX1mdW5jdGlvbiBvKGUpe3JldHVybiJ0b3BNb3VzZU1vdmUiPT09ZXx8InRvcFRvdWNo
TW92ZSI9PT1lfWZ1bmN0aW9uIGkoZSl7cmV0dXJuInRvcE1vdXNlRG93biI9PT1lfHwidG9wVG91
Y2hTdGFydCI9PT1lfWZ1bmN0aW9uIGEoZSx0LG4scil7dmFyIG89ZS50eXBlfHwidW5rbm93bi1l
dmVudCI7ZS5jdXJyZW50VGFyZ2V0PWcuZ2V0Tm9kZUZyb21JbnN0YW5jZShyKSx0P20uaW52b2tl
R3VhcmRlZENhbGxiYWNrV2l0aENhdGNoKG8sbixlKTptLmludm9rZUd1YXJkZWRDYWxsYmFjayhv
LG4sZSksZS5jdXJyZW50VGFyZ2V0PW51bGx9ZnVuY3Rpb24gcyhlLHQpe3ZhciBuPWUuX2Rpc3Bh
dGNoTGlzdGVuZXJzLHI9ZS5fZGlzcGF0Y2hJbnN0YW5jZXM7aWYoQXJyYXkuaXNBcnJheShuKSlm
b3IodmFyIG89MDtvPG4ubGVuZ3RoJiYhZS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpO28rKylhKGUs
dCxuW29dLHJbb10pO2Vsc2UgbiYmYShlLHQsbixyKTtlLl9kaXNwYXRjaExpc3RlbmVycz1udWxs
LGUuX2Rpc3BhdGNoSW5zdGFuY2VzPW51bGx9ZnVuY3Rpb24gdShlKXt2YXIgdD1lLl9kaXNwYXRj
aExpc3RlbmVycyxuPWUuX2Rpc3BhdGNoSW5zdGFuY2VzO2lmKEFycmF5LmlzQXJyYXkodCkpe2Zv
cih2YXIgcj0wO3I8dC5sZW5ndGgmJiFlLmlzUHJvcGFnYXRpb25TdG9wcGVkKCk7cisrKWlmKHRb
cl0oZSxuW3JdKSlyZXR1cm4gbltyXX1lbHNlIGlmKHQmJnQoZSxuKSlyZXR1cm4gbjtyZXR1cm4g
bnVsbH1mdW5jdGlvbiBsKGUpe3ZhciB0PXUoZSk7cmV0dXJuIGUuX2Rpc3BhdGNoSW5zdGFuY2Vz
PW51bGwsZS5fZGlzcGF0Y2hMaXN0ZW5lcnM9bnVsbCx0fWZ1bmN0aW9uIGMoZSl7dmFyIHQ9ZS5f
ZGlzcGF0Y2hMaXN0ZW5lcnMsbj1lLl9kaXNwYXRjaEluc3RhbmNlcztBcnJheS5pc0FycmF5KHQp
P2goIjEwMyIpOnZvaWQgMCxlLmN1cnJlbnRUYXJnZXQ9dD9nLmdldE5vZGVGcm9tSW5zdGFuY2Uo
bik6bnVsbDt2YXIgcj10P3QoZSk6bnVsbDtyZXR1cm4gZS5jdXJyZW50VGFyZ2V0PW51bGwsZS5f
ZGlzcGF0Y2hMaXN0ZW5lcnM9bnVsbCxlLl9kaXNwYXRjaEluc3RhbmNlcz1udWxsLHJ9ZnVuY3Rp
b24gcChlKXtyZXR1cm4hIWUuX2Rpc3BhdGNoTGlzdGVuZXJzfXZhciBkLGYsaD1lKDExMyksbT1l
KDUwKSx2PShlKDEzNyksZSgxNDIpLHtpbmplY3RDb21wb25lbnRUcmVlOmZ1bmN0aW9uKGUpe2Q9
ZX0saW5qZWN0VHJlZVRyYXZlcnNhbDpmdW5jdGlvbihlKXtmPWV9fSksZz17aXNFbmRpc2g6cixp
c01vdmVpc2g6byxpc1N0YXJ0aXNoOmksZXhlY3V0ZURpcmVjdERpc3BhdGNoOmMsZXhlY3V0ZURp
c3BhdGNoZXNJbk9yZGVyOnMsZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyU3RvcEF0VHJ1ZTpsLGhh
c0Rpc3BhdGNoZXM6cCxnZXRJbnN0YW5jZUZyb21Ob2RlOmZ1bmN0aW9uKGUpe3JldHVybiBkLmdl
dEluc3RhbmNlRnJvbU5vZGUoZSl9LGdldE5vZGVGcm9tSW5zdGFuY2U6ZnVuY3Rpb24oZSl7cmV0
dXJuIGQuZ2V0Tm9kZUZyb21JbnN0YW5jZShlKX0saXNBbmNlc3RvcjpmdW5jdGlvbihlLHQpe3Jl
dHVybiBmLmlzQW5jZXN0b3IoZSx0KX0sZ2V0TG93ZXN0Q29tbW9uQW5jZXN0b3I6ZnVuY3Rpb24o
ZSx0KXtyZXR1cm4gZi5nZXRMb3dlc3RDb21tb25BbmNlc3RvcihlLHQpfSxnZXRQYXJlbnRJbnN0
YW5jZTpmdW5jdGlvbihlKXtyZXR1cm4gZi5nZXRQYXJlbnRJbnN0YW5jZShlKX0sdHJhdmVyc2VU
d29QaGFzZTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIGYudHJhdmVyc2VUd29QaGFzZShlLHQsbil9
LHRyYXZlcnNlRW50ZXJMZWF2ZTpmdW5jdGlvbihlLHQsbixyLG8pe3JldHVybiBmLnRyYXZlcnNl
RW50ZXJMZWF2ZShlLHQsbixyLG8pfSxpbmplY3Rpb246dn07dC5leHBvcnRzPWd9LHsxMTM6MTEz
LDEzNzoxMzcsMTQyOjE0Miw1MDo1MH1dLDE5OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIHIoZSx0LG4pe3ZhciByPXQuZGlzcGF0Y2hDb25maWcucGhhc2VkUmVnaXN0cmF0
aW9uTmFtZXNbbl07cmV0dXJuIGcoZSxyKX1mdW5jdGlvbiBvKGUsdCxuKXt2YXIgbz1yKGUsbix0
KTtvJiYobi5fZGlzcGF0Y2hMaXN0ZW5lcnM9bShuLl9kaXNwYXRjaExpc3RlbmVycyxvKSxuLl9k
aXNwYXRjaEluc3RhbmNlcz1tKG4uX2Rpc3BhdGNoSW5zdGFuY2VzLGUpKX1mdW5jdGlvbiBpKGUp
e2UmJmUuZGlzcGF0Y2hDb25maWcucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMmJmgudHJhdmVyc2VU
d29QaGFzZShlLl90YXJnZXRJbnN0LG8sZSl9ZnVuY3Rpb24gYShlKXtpZihlJiZlLmRpc3BhdGNo
Q29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzKXt2YXIgdD1lLl90YXJnZXRJbnN0LG49dD9o
LmdldFBhcmVudEluc3RhbmNlKHQpOm51bGw7aC50cmF2ZXJzZVR3b1BoYXNlKG4sbyxlKX19ZnVu
Y3Rpb24gcyhlLHQsbil7aWYobiYmbi5kaXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1lKXt2
YXIgcj1uLmRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUsbz1nKGUscik7byYmKG4uX2Rp
c3BhdGNoTGlzdGVuZXJzPW0obi5fZGlzcGF0Y2hMaXN0ZW5lcnMsbyksbi5fZGlzcGF0Y2hJbnN0
YW5jZXM9bShuLl9kaXNwYXRjaEluc3RhbmNlcyxlKSl9fWZ1bmN0aW9uIHUoZSl7ZSYmZS5kaXNw
YXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1lJiZzKGUuX3RhcmdldEluc3QsbnVsbCxlKX1mdW5j
dGlvbiBsKGUpe3YoZSxpKX1mdW5jdGlvbiBjKGUpe3YoZSxhKX1mdW5jdGlvbiBwKGUsdCxuLHIp
e2gudHJhdmVyc2VFbnRlckxlYXZlKG4scixzLGUsdCl9ZnVuY3Rpb24gZChlKXt2KGUsdSl9dmFy
IGY9ZSgxNiksaD1lKDE4KSxtPWUoOTEpLHY9ZSg5OCksZz0oZSgxNDIpLGYuZ2V0TGlzdGVuZXIp
LHk9e2FjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXM6bCxhY2N1bXVsYXRlVHdvUGhhc2VEaXNw
YXRjaGVzU2tpcFRhcmdldDpjLGFjY3VtdWxhdGVEaXJlY3REaXNwYXRjaGVzOmQsYWNjdW11bGF0
ZUVudGVyTGVhdmVEaXNwYXRjaGVzOnB9O3QuZXhwb3J0cz15fSx7MTQyOjE0MiwxNjoxNiwxODox
OCw5MTo5MSw5ODo5OH1dLDIwOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IHIoZSl7dGhpcy5fcm9vdD1lLHRoaXMuX3N0YXJ0VGV4dD10aGlzLmdldFRleHQoKSx0aGlzLl9m
YWxsYmFja1RleHQ9bnVsbH12YXIgbz1lKDE0MyksaT1lKDI0KSxhPWUoMTA3KTtvKHIucHJvdG90
eXBlLHtkZXN0cnVjdG9yOmZ1bmN0aW9uKCl7dGhpcy5fcm9vdD1udWxsLHRoaXMuX3N0YXJ0VGV4
dD1udWxsLHRoaXMuX2ZhbGxiYWNrVGV4dD1udWxsfSxnZXRUZXh0OmZ1bmN0aW9uKCl7cmV0dXJu
InZhbHVlImluIHRoaXMuX3Jvb3Q/dGhpcy5fcm9vdC52YWx1ZTp0aGlzLl9yb290W2EoKV19LGdl
dERhdGE6ZnVuY3Rpb24oKXtpZih0aGlzLl9mYWxsYmFja1RleHQpcmV0dXJuIHRoaXMuX2ZhbGxi
YWNrVGV4dDt2YXIgZSx0LG49dGhpcy5fc3RhcnRUZXh0LHI9bi5sZW5ndGgsbz10aGlzLmdldFRl
eHQoKSxpPW8ubGVuZ3RoO2ZvcihlPTA7ZTxyJiZuW2VdPT09b1tlXTtlKyspO3ZhciBhPXItZTtm
b3IodD0xO3Q8PWEmJm5bci10XT09PW9baS10XTt0KyspO3ZhciBzPXQ+MT8xLXQ6dm9pZCAwO3Jl
dHVybiB0aGlzLl9mYWxsYmFja1RleHQ9by5zbGljZShlLHMpLHRoaXMuX2ZhbGxiYWNrVGV4dH19
KSxpLmFkZFBvb2xpbmdUbyhyKSx0LmV4cG9ydHM9cn0sezEwNzoxMDcsMTQzOjE0MywyNDoyNH1d
LDIxOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoMTEpLG89ci5pbmplY3Rp
b24uTVVTVF9VU0VfUFJPUEVSVFksaT1yLmluamVjdGlvbi5IQVNfQk9PTEVBTl9WQUxVRSxhPXIu
aW5qZWN0aW9uLkhBU19OVU1FUklDX1ZBTFVFLHM9ci5pbmplY3Rpb24uSEFTX1BPU0lUSVZFX05V
TUVSSUNfVkFMVUUsdT1yLmluamVjdGlvbi5IQVNfT1ZFUkxPQURFRF9CT09MRUFOX1ZBTFVFLGw9
e2lzQ3VzdG9tQXR0cmlidXRlOlJlZ0V4cC5wcm90b3R5cGUudGVzdC5iaW5kKG5ldyBSZWdFeHAo
Il4oZGF0YXxhcmlhKS1bIityLkFUVFJJQlVURV9OQU1FX0NIQVIrIl0qJCIpKSxQcm9wZXJ0aWVz
OnthY2NlcHQ6MCxhY2NlcHRDaGFyc2V0OjAsYWNjZXNzS2V5OjAsYWN0aW9uOjAsYWxsb3dGdWxs
U2NyZWVuOmksYWxsb3dUcmFuc3BhcmVuY3k6MCxhbHQ6MCxhczowLGFzeW5jOmksYXV0b0NvbXBs
ZXRlOjAsYXV0b1BsYXk6aSxjYXB0dXJlOmksY2VsbFBhZGRpbmc6MCxjZWxsU3BhY2luZzowLGNo
YXJTZXQ6MCxjaGFsbGVuZ2U6MCxjaGVja2VkOm98aSxjaXRlOjAsY2xhc3NJRDowLGNsYXNzTmFt
ZTowLGNvbHM6cyxjb2xTcGFuOjAsY29udGVudDowLGNvbnRlbnRFZGl0YWJsZTowLGNvbnRleHRN
ZW51OjAsY29udHJvbHM6aSxjb29yZHM6MCxjcm9zc09yaWdpbjowLGRhdGE6MCxkYXRlVGltZTow
LGRlZmF1bHQ6aSxkZWZlcjppLGRpcjowLGRpc2FibGVkOmksZG93bmxvYWQ6dSxkcmFnZ2FibGU6
MCxlbmNUeXBlOjAsZm9ybTowLGZvcm1BY3Rpb246MCxmb3JtRW5jVHlwZTowLGZvcm1NZXRob2Q6
MCxmb3JtTm9WYWxpZGF0ZTppLGZvcm1UYXJnZXQ6MCxmcmFtZUJvcmRlcjowLGhlYWRlcnM6MCxo
ZWlnaHQ6MCxoaWRkZW46aSxoaWdoOjAsaHJlZjowLGhyZWZMYW5nOjAsaHRtbEZvcjowLGh0dHBF
cXVpdjowLGljb246MCxpZDowLGlucHV0TW9kZTowLGludGVncml0eTowLGlzOjAsa2V5UGFyYW1z
OjAsa2V5VHlwZTowLGtpbmQ6MCxsYWJlbDowLGxhbmc6MCxsaXN0OjAsbG9vcDppLGxvdzowLG1h
bmlmZXN0OjAsbWFyZ2luSGVpZ2h0OjAsbWFyZ2luV2lkdGg6MCxtYXg6MCxtYXhMZW5ndGg6MCxt
ZWRpYTowLG1lZGlhR3JvdXA6MCxtZXRob2Q6MCxtaW46MCxtaW5MZW5ndGg6MCxtdWx0aXBsZTpv
fGksbXV0ZWQ6b3xpLG5hbWU6MCxub25jZTowLG5vVmFsaWRhdGU6aSxvcGVuOmksb3B0aW11bTow
LHBhdHRlcm46MCxwbGFjZWhvbGRlcjowLHBsYXlzSW5saW5lOmkscG9zdGVyOjAscHJlbG9hZDow
LHByb2ZpbGU6MCxyYWRpb0dyb3VwOjAscmVhZE9ubHk6aSxyZWZlcnJlclBvbGljeTowLHJlbDow
LHJlcXVpcmVkOmkscmV2ZXJzZWQ6aSxyb2xlOjAscm93czpzLHJvd1NwYW46YSxzYW5kYm94OjAs
c2NvcGU6MCxzY29wZWQ6aSxzY3JvbGxpbmc6MCxzZWFtbGVzczppLHNlbGVjdGVkOm98aSxzaGFw
ZTowLHNpemU6cyxzaXplczowLHNwYW46cyxzcGVsbENoZWNrOjAsc3JjOjAsc3JjRG9jOjAsc3Jj
TGFuZzowLHNyY1NldDowLHN0YXJ0OmEsc3RlcDowLHN0eWxlOjAsc3VtbWFyeTowLHRhYkluZGV4
OjAsdGFyZ2V0OjAsdGl0bGU6MCx0eXBlOjAsdXNlTWFwOjAsdmFsdWU6MCx3aWR0aDowLHdtb2Rl
OjAsd3JhcDowLGFib3V0OjAsZGF0YXR5cGU6MCxpbmxpc3Q6MCxwcmVmaXg6MCxwcm9wZXJ0eTow
LHJlc291cmNlOjAsdHlwZW9mOjAsdm9jYWI6MCxhdXRvQ2FwaXRhbGl6ZTowLGF1dG9Db3JyZWN0
OjAsYXV0b1NhdmU6MCxjb2xvcjowLGl0ZW1Qcm9wOjAsaXRlbVNjb3BlOmksaXRlbVR5cGU6MCxp
dGVtSUQ6MCxpdGVtUmVmOjAscmVzdWx0czowLHNlY3VyaXR5OjAsdW5zZWxlY3RhYmxlOjB9LERP
TUF0dHJpYnV0ZU5hbWVzOnthY2NlcHRDaGFyc2V0OiJhY2NlcHQtY2hhcnNldCIsY2xhc3NOYW1l
OiJjbGFzcyIsaHRtbEZvcjoiZm9yIixodHRwRXF1aXY6Imh0dHAtZXF1aXYifSxET01Qcm9wZXJ0
eU5hbWVzOnt9fTt0LmV4cG9ydHM9bH0sezExOjExfV0sMjI6W2Z1bmN0aW9uKGUsdCxuKXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIgdD0vWz06XS9nLG49eyI9IjoiPTAiLCI6IjoiPTIi
fSxyPSgiIitlKS5yZXBsYWNlKHQsZnVuY3Rpb24oZSl7cmV0dXJuIG5bZV19KTtyZXR1cm4iJCIr
cn1mdW5jdGlvbiBvKGUpe3ZhciB0PS8oPTB8PTIpL2csbj17Ij0wIjoiPSIsIj0yIjoiOiJ9LHI9
Ii4iPT09ZVswXSYmIiQiPT09ZVsxXT9lLnN1YnN0cmluZygyKTplLnN1YnN0cmluZygxKTtyZXR1
cm4oIiIrcikucmVwbGFjZSh0LGZ1bmN0aW9uKGUpe3JldHVybiBuW2VdfSl9dmFyIGk9e2VzY2Fw
ZTpyLHVuZXNjYXBlOm99O3QuZXhwb3J0cz1pfSx7fV0sMjM6W2Z1bmN0aW9uKGUsdCxuKXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gcihlKXtudWxsIT1lLmNoZWNrZWRMaW5rJiZudWxsIT1lLnZhbHVl
TGluaz9zKCI4NyIpOnZvaWQgMH1mdW5jdGlvbiBvKGUpe3IoZSksbnVsbCE9ZS52YWx1ZXx8bnVs
bCE9ZS5vbkNoYW5nZT9zKCI4OCIpOnZvaWQgMH1mdW5jdGlvbiBpKGUpe3IoZSksbnVsbCE9ZS5j
aGVja2VkfHxudWxsIT1lLm9uQ2hhbmdlP3MoIjg5Iik6dm9pZCAwfWZ1bmN0aW9uIGEoZSl7aWYo
ZSl7dmFyIHQ9ZS5nZXROYW1lKCk7aWYodClyZXR1cm4iIENoZWNrIHRoZSByZW5kZXIgbWV0aG9k
IG9mIGAiK3QrImAuIn1yZXR1cm4iIn12YXIgcz1lKDExMyksdT1lKDEyMSksbD1lKDY0KSxjPShl
KDEzNyksZSgxNDIpLHtidXR0b246ITAsY2hlY2tib3g6ITAsaW1hZ2U6ITAsaGlkZGVuOiEwLHJh
ZGlvOiEwLHJlc2V0OiEwLHN1Ym1pdDohMH0pLHA9e3ZhbHVlOmZ1bmN0aW9uKGUsdCxuKXtyZXR1
cm4hZVt0XXx8Y1tlLnR5cGVdfHxlLm9uQ2hhbmdlfHxlLnJlYWRPbmx5fHxlLmRpc2FibGVkP251
bGw6bmV3IEVycm9yKCJZb3UgcHJvdmlkZWQgYSBgdmFsdWVgIHByb3AgdG8gYSBmb3JtIGZpZWxk
IHdpdGhvdXQgYW4gYG9uQ2hhbmdlYCBoYW5kbGVyLiBUaGlzIHdpbGwgcmVuZGVyIGEgcmVhZC1v
bmx5IGZpZWxkLiBJZiB0aGUgZmllbGQgc2hvdWxkIGJlIG11dGFibGUgdXNlIGBkZWZhdWx0VmFs
dWVgLiBPdGhlcndpc2UsIHNldCBlaXRoZXIgYG9uQ2hhbmdlYCBvciBgcmVhZE9ubHlgLiIpfSxj
aGVja2VkOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4hZVt0XXx8ZS5vbkNoYW5nZXx8ZS5yZWFkT25s
eXx8ZS5kaXNhYmxlZD9udWxsOm5ldyBFcnJvcigiWW91IHByb3ZpZGVkIGEgYGNoZWNrZWRgIHBy
b3AgdG8gYSBmb3JtIGZpZWxkIHdpdGhvdXQgYW4gYG9uQ2hhbmdlYCBoYW5kbGVyLiBUaGlzIHdp
bGwgcmVuZGVyIGEgcmVhZC1vbmx5IGZpZWxkLiBJZiB0aGUgZmllbGQgc2hvdWxkIGJlIG11dGFi
bGUgdXNlIGBkZWZhdWx0Q2hlY2tlZGAuIE90aGVyd2lzZSwgc2V0IGVpdGhlciBgb25DaGFuZ2Vg
IG9yIGByZWFkT25seWAuIil9LG9uQ2hhbmdlOnUuUHJvcFR5cGVzLmZ1bmN9LGQ9e30sZj17Y2hl
Y2tQcm9wVHlwZXM6ZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgciBpbiBwKXtpZihwLmhhc093blBy
b3BlcnR5KHIpKXZhciBvPXBbcl0odCxyLGUsInByb3AiLG51bGwsbCk7byBpbnN0YW5jZW9mIEVy
cm9yJiYhKG8ubWVzc2FnZSBpbiBkKSYmKGRbby5tZXNzYWdlXT0hMCxhKG4pKX19LGdldFZhbHVl
OmZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHVlTGluaz8obyhlKSxlLnZhbHVlTGluay52YWx1ZSk6
ZS52YWx1ZX0sZ2V0Q2hlY2tlZDpmdW5jdGlvbihlKXtyZXR1cm4gZS5jaGVja2VkTGluaz8oaShl
KSxlLmNoZWNrZWRMaW5rLnZhbHVlKTplLmNoZWNrZWR9LGV4ZWN1dGVPbkNoYW5nZTpmdW5jdGlv
bihlLHQpe3JldHVybiBlLnZhbHVlTGluaz8obyhlKSxlLnZhbHVlTGluay5yZXF1ZXN0Q2hhbmdl
KHQudGFyZ2V0LnZhbHVlKSk6ZS5jaGVja2VkTGluaz8oaShlKSxlLmNoZWNrZWRMaW5rLnJlcXVl
c3RDaGFuZ2UodC50YXJnZXQuY2hlY2tlZCkpOmUub25DaGFuZ2U/ZS5vbkNoYW5nZS5jYWxsKHZv
aWQgMCx0KTp2b2lkIDB9fTt0LmV4cG9ydHM9Zn0sezExMzoxMTMsMTIxOjEyMSwxMzc6MTM3LDE0
MjoxNDIsNjQ6NjR9XSwyNDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDEx
Myksbz0oZSgxMzcpLGZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7aWYodC5pbnN0YW5jZVBvb2wubGVu
Z3RoKXt2YXIgbj10Lmluc3RhbmNlUG9vbC5wb3AoKTtyZXR1cm4gdC5jYWxsKG4sZSksbn1yZXR1
cm4gbmV3IHQoZSl9KSxpPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcztpZihuLmluc3RhbmNlUG9v
bC5sZW5ndGgpe3ZhciByPW4uaW5zdGFuY2VQb29sLnBvcCgpO3JldHVybiBuLmNhbGwocixlLHQp
LHJ9cmV0dXJuIG5ldyBuKGUsdCl9LGE9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXM7aWYoci5p
bnN0YW5jZVBvb2wubGVuZ3RoKXt2YXIgbz1yLmluc3RhbmNlUG9vbC5wb3AoKTtyZXR1cm4gci5j
YWxsKG8sZSx0LG4pLG99cmV0dXJuIG5ldyByKGUsdCxuKX0scz1mdW5jdGlvbihlLHQsbixyKXt2
YXIgbz10aGlzO2lmKG8uaW5zdGFuY2VQb29sLmxlbmd0aCl7dmFyIGk9by5pbnN0YW5jZVBvb2wu
cG9wKCk7cmV0dXJuIG8uY2FsbChpLGUsdCxuLHIpLGl9cmV0dXJuIG5ldyBvKGUsdCxuLHIpfSx1
PWZ1bmN0aW9uKGUsdCxuLHIsbyl7dmFyIGk9dGhpcztpZihpLmluc3RhbmNlUG9vbC5sZW5ndGgp
e3ZhciBhPWkuaW5zdGFuY2VQb29sLnBvcCgpO3JldHVybiBpLmNhbGwoYSxlLHQsbixyLG8pLGF9
cmV0dXJuIG5ldyBpKGUsdCxuLHIsbyl9LGw9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztlIGluc3Rh
bmNlb2YgdD92b2lkIDA6cigiMjUiKSxlLmRlc3RydWN0b3IoKSx0Lmluc3RhbmNlUG9vbC5sZW5n
dGg8dC5wb29sU2l6ZSYmdC5pbnN0YW5jZVBvb2wucHVzaChlKX0sYz0xMCxwPW8sZD1mdW5jdGlv
bihlLHQpe3ZhciBuPWU7cmV0dXJuIG4uaW5zdGFuY2VQb29sPVtdLG4uZ2V0UG9vbGVkPXR8fHAs
bi5wb29sU2l6ZXx8KG4ucG9vbFNpemU9Yyksbi5yZWxlYXNlPWwsbn0sZj17YWRkUG9vbGluZ1Rv
OmQsb25lQXJndW1lbnRQb29sZXI6byx0d29Bcmd1bWVudFBvb2xlcjppLHRocmVlQXJndW1lbnRQ
b29sZXI6YSxmb3VyQXJndW1lbnRQb29sZXI6cyxmaXZlQXJndW1lbnRQb29sZXI6dX07dC5leHBv
cnRzPWZ9LHsxMTM6MTEzLDEzNzoxMzd9XSwyNTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiByKGUpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNh
bGwoZSxtKXx8KGVbbV09ZisrLHBbZVttXV09e30pLHBbZVttXV19dmFyIG8saT1lKDE0MyksYT1l
KDE3KSxzPWUoNTEpLHU9ZSg5MCksbD1lKDEwOCksYz1lKDExMCkscD17fSxkPSExLGY9MCxoPXt0
b3BBYm9ydDoiYWJvcnQiLHRvcEFuaW1hdGlvbkVuZDpsKCJhbmltYXRpb25lbmQiKXx8ImFuaW1h
dGlvbmVuZCIsdG9wQW5pbWF0aW9uSXRlcmF0aW9uOmwoImFuaW1hdGlvbml0ZXJhdGlvbiIpfHwi
YW5pbWF0aW9uaXRlcmF0aW9uIix0b3BBbmltYXRpb25TdGFydDpsKCJhbmltYXRpb25zdGFydCIp
fHwiYW5pbWF0aW9uc3RhcnQiLHRvcEJsdXI6ImJsdXIiLHRvcENhblBsYXk6ImNhbnBsYXkiLHRv
cENhblBsYXlUaHJvdWdoOiJjYW5wbGF5dGhyb3VnaCIsdG9wQ2hhbmdlOiJjaGFuZ2UiLHRvcENs
aWNrOiJjbGljayIsdG9wQ29tcG9zaXRpb25FbmQ6ImNvbXBvc2l0aW9uZW5kIix0b3BDb21wb3Np
dGlvblN0YXJ0OiJjb21wb3NpdGlvbnN0YXJ0Iix0b3BDb21wb3NpdGlvblVwZGF0ZToiY29tcG9z
aXRpb251cGRhdGUiLHRvcENvbnRleHRNZW51OiJjb250ZXh0bWVudSIsdG9wQ29weToiY29weSIs
dG9wQ3V0OiJjdXQiLHRvcERvdWJsZUNsaWNrOiJkYmxjbGljayIsdG9wRHJhZzoiZHJhZyIsdG9w
RHJhZ0VuZDoiZHJhZ2VuZCIsdG9wRHJhZ0VudGVyOiJkcmFnZW50ZXIiLHRvcERyYWdFeGl0OiJk
cmFnZXhpdCIsdG9wRHJhZ0xlYXZlOiJkcmFnbGVhdmUiLHRvcERyYWdPdmVyOiJkcmFnb3ZlciIs
dG9wRHJhZ1N0YXJ0OiJkcmFnc3RhcnQiLHRvcERyb3A6ImRyb3AiLHRvcER1cmF0aW9uQ2hhbmdl
OiJkdXJhdGlvbmNoYW5nZSIsdG9wRW1wdGllZDoiZW1wdGllZCIsdG9wRW5jcnlwdGVkOiJlbmNy
eXB0ZWQiLHRvcEVuZGVkOiJlbmRlZCIsdG9wRXJyb3I6ImVycm9yIix0b3BGb2N1czoiZm9jdXMi
LHRvcElucHV0OiJpbnB1dCIsdG9wS2V5RG93bjoia2V5ZG93biIsdG9wS2V5UHJlc3M6ImtleXBy
ZXNzIix0b3BLZXlVcDoia2V5dXAiLHRvcExvYWRlZERhdGE6ImxvYWRlZGRhdGEiLHRvcExvYWRl
ZE1ldGFkYXRhOiJsb2FkZWRtZXRhZGF0YSIsdG9wTG9hZFN0YXJ0OiJsb2Fkc3RhcnQiLHRvcE1v
dXNlRG93bjoibW91c2Vkb3duIix0b3BNb3VzZU1vdmU6Im1vdXNlbW92ZSIsdG9wTW91c2VPdXQ6
Im1vdXNlb3V0Iix0b3BNb3VzZU92ZXI6Im1vdXNlb3ZlciIsdG9wTW91c2VVcDoibW91c2V1cCIs
dG9wUGFzdGU6InBhc3RlIix0b3BQYXVzZToicGF1c2UiLHRvcFBsYXk6InBsYXkiLHRvcFBsYXlp
bmc6InBsYXlpbmciLHRvcFByb2dyZXNzOiJwcm9ncmVzcyIsCit0b3BSYXRlQ2hhbmdlOiJyYXRl
Y2hhbmdlIix0b3BTY3JvbGw6InNjcm9sbCIsdG9wU2Vla2VkOiJzZWVrZWQiLHRvcFNlZWtpbmc6
InNlZWtpbmciLHRvcFNlbGVjdGlvbkNoYW5nZToic2VsZWN0aW9uY2hhbmdlIix0b3BTdGFsbGVk
OiJzdGFsbGVkIix0b3BTdXNwZW5kOiJzdXNwZW5kIix0b3BUZXh0SW5wdXQ6InRleHRJbnB1dCIs
dG9wVGltZVVwZGF0ZToidGltZXVwZGF0ZSIsdG9wVG91Y2hDYW5jZWw6InRvdWNoY2FuY2VsIix0
b3BUb3VjaEVuZDoidG91Y2hlbmQiLHRvcFRvdWNoTW92ZToidG91Y2htb3ZlIix0b3BUb3VjaFN0
YXJ0OiJ0b3VjaHN0YXJ0Iix0b3BUcmFuc2l0aW9uRW5kOmwoInRyYW5zaXRpb25lbmQiKXx8InRy
YW5zaXRpb25lbmQiLHRvcFZvbHVtZUNoYW5nZToidm9sdW1lY2hhbmdlIix0b3BXYWl0aW5nOiJ3
YWl0aW5nIix0b3BXaGVlbDoid2hlZWwifSxtPSJfcmVhY3RMaXN0ZW5lcnNJRCIrU3RyaW5nKE1h
dGgucmFuZG9tKCkpLnNsaWNlKDIpLHY9aSh7fSxzLHtSZWFjdEV2ZW50TGlzdGVuZXI6bnVsbCxp
bmplY3Rpb246e2luamVjdFJlYWN0RXZlbnRMaXN0ZW5lcjpmdW5jdGlvbihlKXtlLnNldEhhbmRs
ZVRvcExldmVsKHYuaGFuZGxlVG9wTGV2ZWwpLHYuUmVhY3RFdmVudExpc3RlbmVyPWV9fSxzZXRF
bmFibGVkOmZ1bmN0aW9uKGUpe3YuUmVhY3RFdmVudExpc3RlbmVyJiZ2LlJlYWN0RXZlbnRMaXN0
ZW5lci5zZXRFbmFibGVkKGUpfSxpc0VuYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hKCF2LlJlYWN0
RXZlbnRMaXN0ZW5lcnx8IXYuUmVhY3RFdmVudExpc3RlbmVyLmlzRW5hYmxlZCgpKX0sbGlzdGVu
VG86ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49dCxvPXIobiksaT1hLnJlZ2lzdHJhdGlvbk5hbWVE
ZXBlbmRlbmNpZXNbZV0scz0wO3M8aS5sZW5ndGg7cysrKXt2YXIgdT1pW3NdO28uaGFzT3duUHJv
cGVydHkodSkmJm9bdV18fCgidG9wV2hlZWwiPT09dT9jKCJ3aGVlbCIpP3YuUmVhY3RFdmVudExp
c3RlbmVyLnRyYXBCdWJibGVkRXZlbnQoInRvcFdoZWVsIiwid2hlZWwiLG4pOmMoIm1vdXNld2hl
ZWwiKT92LlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KCJ0b3BXaGVlbCIsIm1v
dXNld2hlZWwiLG4pOnYuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQoInRvcFdo
ZWVsIiwiRE9NTW91c2VTY3JvbGwiLG4pOiJ0b3BTY3JvbGwiPT09dT9jKCJzY3JvbGwiLCEwKT92
LlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQ2FwdHVyZWRFdmVudCgidG9wU2Nyb2xsIiwic2Nyb2xs
IixuKTp2LlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KCJ0b3BTY3JvbGwiLCJz
Y3JvbGwiLHYuUmVhY3RFdmVudExpc3RlbmVyLldJTkRPV19IQU5ETEUpOiJ0b3BGb2N1cyI9PT11
fHwidG9wQmx1ciI9PT11PyhjKCJmb2N1cyIsITApPyh2LlJlYWN0RXZlbnRMaXN0ZW5lci50cmFw
Q2FwdHVyZWRFdmVudCgidG9wRm9jdXMiLCJmb2N1cyIsbiksdi5SZWFjdEV2ZW50TGlzdGVuZXIu
dHJhcENhcHR1cmVkRXZlbnQoInRvcEJsdXIiLCJibHVyIixuKSk6YygiZm9jdXNpbiIpJiYodi5S
ZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudCgidG9wRm9jdXMiLCJmb2N1c2luIixu
KSx2LlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KCJ0b3BCbHVyIiwiZm9jdXNv
dXQiLG4pKSxvLnRvcEJsdXI9ITAsby50b3BGb2N1cz0hMCk6aC5oYXNPd25Qcm9wZXJ0eSh1KSYm
di5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudCh1LGhbdV0sbiksb1t1XT0hMCl9
fSx0cmFwQnViYmxlZEV2ZW50OmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdi5SZWFjdEV2ZW50TGlz
dGVuZXIudHJhcEJ1YmJsZWRFdmVudChlLHQsbil9LHRyYXBDYXB0dXJlZEV2ZW50OmZ1bmN0aW9u
KGUsdCxuKXtyZXR1cm4gdi5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcENhcHR1cmVkRXZlbnQoZSx0
LG4pfSxzdXBwb3J0c0V2ZW50UGFnZVhZOmZ1bmN0aW9uKCl7aWYoIWRvY3VtZW50LmNyZWF0ZUV2
ZW50KXJldHVybiExO3ZhciBlPWRvY3VtZW50LmNyZWF0ZUV2ZW50KCJNb3VzZUV2ZW50Iik7cmV0
dXJuIG51bGwhPWUmJiJwYWdlWCJpbiBlfSxlbnN1cmVTY3JvbGxWYWx1ZU1vbml0b3Jpbmc6ZnVu
Y3Rpb24oKXtpZih2b2lkIDA9PT1vJiYobz12LnN1cHBvcnRzRXZlbnRQYWdlWFkoKSksIW8mJiFk
KXt2YXIgZT11LnJlZnJlc2hTY3JvbGxWYWx1ZXM7di5SZWFjdEV2ZW50TGlzdGVuZXIubW9uaXRv
clNjcm9sbFZhbHVlKGUpLGQ9ITB9fX0pO3QuZXhwb3J0cz12fSx7MTA4OjEwOCwxMTA6MTEwLDE0
MzoxNDMsMTc6MTcsNTE6NTEsOTA6OTB9XSwyNjpbZnVuY3Rpb24oZSx0LG4peyhmdW5jdGlvbihu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXt2YXIgbz12b2lkIDA9PT1lW25dO251
bGwhPXQmJm8mJihlW25dPWkodCwhMCkpfXZhciBvPWUoNjYpLGk9ZSgxMDkpLGE9KGUoMjIpLGUo
MTE3KSkscz1lKDExOCk7ZSgxNDIpOyJ1bmRlZmluZWQiIT10eXBlb2YgbiYmbi5lbnYsMTt2YXIg
dT17aW5zdGFudGlhdGVDaGlsZHJlbjpmdW5jdGlvbihlLHQsbixvKXtpZihudWxsPT1lKXJldHVy
biBudWxsO3ZhciBpPXt9O3JldHVybiBzKGUscixpKSxpfSx1cGRhdGVDaGlsZHJlbjpmdW5jdGlv
bihlLHQsbixyLHMsdSxsLGMscCl7aWYodHx8ZSl7dmFyIGQsZjtmb3IoZCBpbiB0KWlmKHQuaGFz
T3duUHJvcGVydHkoZCkpe2Y9ZSYmZVtkXTt2YXIgaD1mJiZmLl9jdXJyZW50RWxlbWVudCxtPXRb
ZF07aWYobnVsbCE9ZiYmYShoLG0pKW8ucmVjZWl2ZUNvbXBvbmVudChmLG0scyxjKSx0W2RdPWY7
ZWxzZXtmJiYocltkXT1vLmdldEhvc3ROb2RlKGYpLG8udW5tb3VudENvbXBvbmVudChmLCExKSk7
dmFyIHY9aShtLCEwKTt0W2RdPXY7dmFyIGc9by5tb3VudENvbXBvbmVudCh2LHMsdSxsLGMscCk7
bi5wdXNoKGcpfX1mb3IoZCBpbiBlKSFlLmhhc093blByb3BlcnR5KGQpfHx0JiZ0Lmhhc093blBy
b3BlcnR5KGQpfHwoZj1lW2RdLHJbZF09by5nZXRIb3N0Tm9kZShmKSxvLnVubW91bnRDb21wb25l
bnQoZiwhMSkpfX0sdW5tb3VudENoaWxkcmVuOmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIGUp
aWYoZS5oYXNPd25Qcm9wZXJ0eShuKSl7dmFyIHI9ZVtuXTtvLnVubW91bnRDb21wb25lbnQocix0
KX19fTt0LmV4cG9ydHM9dX0pLmNhbGwodGhpcyx2b2lkIDApfSx7MTA5OjEwOSwxMTc6MTE3LDEx
ODoxMTgsMTQyOjE0MiwyMjoyMiw2Njo2Nn1dLDI3OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO3ZhciByPWUoOCksbz1lKDM3KSxpPXtwcm9jZXNzQ2hpbGRyZW5VcGRhdGVzOm8uZGFuZ2Vy
b3VzbHlQcm9jZXNzQ2hpbGRyZW5VcGRhdGVzLHJlcGxhY2VOb2RlV2l0aE1hcmt1cDpyLmRhbmdl
cm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwfTt0LmV4cG9ydHM9aX0sezM3OjM3LDg6OH1dLDI4
OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoMTEzKSxvPShlKDEzNyksITEp
LGk9e3JlcGxhY2VOb2RlV2l0aE1hcmt1cDpudWxsLHByb2Nlc3NDaGlsZHJlblVwZGF0ZXM6bnVs
bCxpbmplY3Rpb246e2luamVjdEVudmlyb25tZW50OmZ1bmN0aW9uKGUpe28/cigiMTA0Iik6dm9p
ZCAwLGkucmVwbGFjZU5vZGVXaXRoTWFya3VwPWUucmVwbGFjZU5vZGVXaXRoTWFya3VwLGkucHJv
Y2Vzc0NoaWxkcmVuVXBkYXRlcz1lLnByb2Nlc3NDaGlsZHJlblVwZGF0ZXMsbz0hMH19fTt0LmV4
cG9ydHM9aX0sezExMzoxMTMsMTM3OjEzN31dLDI5OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIHIoZSl7fWZ1bmN0aW9uIG8oZSx0KXt9ZnVuY3Rpb24gaShlKXtyZXR1cm4h
KCFlLnByb3RvdHlwZXx8IWUucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQpfWZ1bmN0aW9uIGEo
ZSl7cmV0dXJuISghZS5wcm90b3R5cGV8fCFlLnByb3RvdHlwZS5pc1B1cmVSZWFjdENvbXBvbmVu
dCl9dmFyIHM9ZSgxMTMpLHU9ZSgxNDMpLGw9ZSgxMjEpLGM9ZSgyOCkscD1lKDEyMCksZD1lKDUw
KSxmPWUoNTcpLGg9KGUoNTgpLGUoNjIpKSxtPWUoNjYpLHY9ZSgxMzApLGc9KGUoMTM3KSxlKDE0
MSkpLHk9ZSgxMTcpLF89KGUoMTQyKSx7SW1wdXJlQ2xhc3M6MCxQdXJlQ2xhc3M6MSxTdGF0ZWxl
c3NGdW5jdGlvbmFsOjJ9KTtyLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXt2YXIgZT1mLmdl
dCh0aGlzKS5fY3VycmVudEVsZW1lbnQudHlwZSx0PWUodGhpcy5wcm9wcyx0aGlzLmNvbnRleHQs
dGhpcy51cGRhdGVyKTtyZXR1cm4gbyhlLHQpLHR9O3ZhciBDPTEsYj17Y29uc3RydWN0OmZ1bmN0
aW9uKGUpe3RoaXMuX2N1cnJlbnRFbGVtZW50PWUsdGhpcy5fcm9vdE5vZGVJRD0wLHRoaXMuX2Nv
bXBvc2l0ZVR5cGU9bnVsbCx0aGlzLl9pbnN0YW5jZT1udWxsLHRoaXMuX2hvc3RQYXJlbnQ9bnVs
bCx0aGlzLl9ob3N0Q29udGFpbmVySW5mbz1udWxsLHRoaXMuX3VwZGF0ZUJhdGNoTnVtYmVyPW51
bGwsdGhpcy5fcGVuZGluZ0VsZW1lbnQ9bnVsbCx0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZT1udWxs
LHRoaXMuX3BlbmRpbmdSZXBsYWNlU3RhdGU9ITEsdGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRlPSEx
LHRoaXMuX3JlbmRlcmVkTm9kZVR5cGU9bnVsbCx0aGlzLl9yZW5kZXJlZENvbXBvbmVudD1udWxs
LHRoaXMuX2NvbnRleHQ9bnVsbCx0aGlzLl9tb3VudE9yZGVyPTAsdGhpcy5fdG9wTGV2ZWxXcmFw
cGVyPW51bGwsdGhpcy5fcGVuZGluZ0NhbGxiYWNrcz1udWxsLHRoaXMuX2NhbGxlZENvbXBvbmVu
dFdpbGxVbm1vdW50PSExfSxtb3VudENvbXBvbmVudDpmdW5jdGlvbihlLHQsbix1KXt0aGlzLl9j
b250ZXh0PXUsdGhpcy5fbW91bnRPcmRlcj1DKyssdGhpcy5faG9zdFBhcmVudD10LHRoaXMuX2hv
c3RDb250YWluZXJJbmZvPW47dmFyIGMscD10aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wcyxkPXRo
aXMuX3Byb2Nlc3NDb250ZXh0KHUpLGg9dGhpcy5fY3VycmVudEVsZW1lbnQudHlwZSxtPWUuZ2V0
VXBkYXRlUXVldWUoKSxnPWkoaCkseT10aGlzLl9jb25zdHJ1Y3RDb21wb25lbnQoZyxwLGQsbSk7
Z3x8bnVsbCE9eSYmbnVsbCE9eS5yZW5kZXI/YShoKT90aGlzLl9jb21wb3NpdGVUeXBlPV8uUHVy
ZUNsYXNzOnRoaXMuX2NvbXBvc2l0ZVR5cGU9Xy5JbXB1cmVDbGFzczooYz15LG8oaCxjKSxudWxs
PT09eXx8eT09PSExfHxsLmlzVmFsaWRFbGVtZW50KHkpP3ZvaWQgMDpzKCIxMDUiLGguZGlzcGxh
eU5hbWV8fGgubmFtZXx8IkNvbXBvbmVudCIpLHk9bmV3IHIoaCksdGhpcy5fY29tcG9zaXRlVHlw
ZT1fLlN0YXRlbGVzc0Z1bmN0aW9uYWwpLHkucHJvcHM9cCx5LmNvbnRleHQ9ZCx5LnJlZnM9dix5
LnVwZGF0ZXI9bSx0aGlzLl9pbnN0YW5jZT15LGYuc2V0KHksdGhpcyk7dmFyIGI9eS5zdGF0ZTt2
b2lkIDA9PT1iJiYoeS5zdGF0ZT1iPW51bGwpLCJvYmplY3QiIT10eXBlb2YgYnx8QXJyYXkuaXNB
cnJheShiKT9zKCIxMDYiLHRoaXMuZ2V0TmFtZSgpfHwiUmVhY3RDb21wb3NpdGVDb21wb25lbnQi
KTp2b2lkIDAsdGhpcy5fcGVuZGluZ1N0YXRlUXVldWU9bnVsbCx0aGlzLl9wZW5kaW5nUmVwbGFj
ZVN0YXRlPSExLHRoaXMuX3BlbmRpbmdGb3JjZVVwZGF0ZT0hMTt2YXIgRTtyZXR1cm4gRT15LnVu
c3RhYmxlX2hhbmRsZUVycm9yP3RoaXMucGVyZm9ybUluaXRpYWxNb3VudFdpdGhFcnJvckhhbmRs
aW5nKGMsdCxuLGUsdSk6dGhpcy5wZXJmb3JtSW5pdGlhbE1vdW50KGMsdCxuLGUsdSkseS5jb21w
b25lbnREaWRNb3VudCYmZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHkuY29tcG9uZW50
RGlkTW91bnQseSksRX0sX2NvbnN0cnVjdENvbXBvbmVudDpmdW5jdGlvbihlLHQsbixyKXtyZXR1
cm4gdGhpcy5fY29uc3RydWN0Q29tcG9uZW50V2l0aG91dE93bmVyKGUsdCxuLHIpfSxfY29uc3Ry
dWN0Q29tcG9uZW50V2l0aG91dE93bmVyOmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvPXRoaXMuX2N1
cnJlbnRFbGVtZW50LnR5cGU7cmV0dXJuIGU/bmV3IG8odCxuLHIpOm8odCxuLHIpfSxwZXJmb3Jt
SW5pdGlhbE1vdW50V2l0aEVycm9ySGFuZGxpbmc6ZnVuY3Rpb24oZSx0LG4scixvKXt2YXIgaSxh
PXIuY2hlY2twb2ludCgpO3RyeXtpPXRoaXMucGVyZm9ybUluaXRpYWxNb3VudChlLHQsbixyLG8p
fWNhdGNoKHMpe3Iucm9sbGJhY2soYSksdGhpcy5faW5zdGFuY2UudW5zdGFibGVfaGFuZGxlRXJy
b3IocyksdGhpcy5fcGVuZGluZ1N0YXRlUXVldWUmJih0aGlzLl9pbnN0YW5jZS5zdGF0ZT10aGlz
Ll9wcm9jZXNzUGVuZGluZ1N0YXRlKHRoaXMuX2luc3RhbmNlLnByb3BzLHRoaXMuX2luc3RhbmNl
LmNvbnRleHQpKSxhPXIuY2hlY2twb2ludCgpLHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50LnVubW91
bnRDb21wb25lbnQoITApLHIucm9sbGJhY2soYSksaT10aGlzLnBlcmZvcm1Jbml0aWFsTW91bnQo
ZSx0LG4scixvKX1yZXR1cm4gaX0scGVyZm9ybUluaXRpYWxNb3VudDpmdW5jdGlvbihlLHQsbixy
LG8pe3ZhciBpPXRoaXMuX2luc3RhbmNlLGE9MDtpLmNvbXBvbmVudFdpbGxNb3VudCYmKGkuY29t
cG9uZW50V2lsbE1vdW50KCksdGhpcy5fcGVuZGluZ1N0YXRlUXVldWUmJihpLnN0YXRlPXRoaXMu
X3Byb2Nlc3NQZW5kaW5nU3RhdGUoaS5wcm9wcyxpLmNvbnRleHQpKSksdm9pZCAwPT09ZSYmKGU9
dGhpcy5fcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50KCkpO3ZhciBzPWguZ2V0VHlwZShlKTt0aGlz
Ll9yZW5kZXJlZE5vZGVUeXBlPXM7dmFyIHU9dGhpcy5faW5zdGFudGlhdGVSZWFjdENvbXBvbmVu
dChlLHMhPT1oLkVNUFRZKTt0aGlzLl9yZW5kZXJlZENvbXBvbmVudD11O3ZhciBsPW0ubW91bnRD
b21wb25lbnQodSxyLHQsbix0aGlzLl9wcm9jZXNzQ2hpbGRDb250ZXh0KG8pLGEpO3JldHVybiBs
fSxnZXRIb3N0Tm9kZTpmdW5jdGlvbigpe3JldHVybiBtLmdldEhvc3ROb2RlKHRoaXMuX3JlbmRl
cmVkQ29tcG9uZW50KX0sdW5tb3VudENvbXBvbmVudDpmdW5jdGlvbihlKXtpZih0aGlzLl9yZW5k
ZXJlZENvbXBvbmVudCl7dmFyIHQ9dGhpcy5faW5zdGFuY2U7aWYodC5jb21wb25lbnRXaWxsVW5t
b3VudCYmIXQuX2NhbGxlZENvbXBvbmVudFdpbGxVbm1vdW50KWlmKHQuX2NhbGxlZENvbXBvbmVu
dFdpbGxVbm1vdW50PSEwLGUpe3ZhciBuPXRoaXMuZ2V0TmFtZSgpKyIuY29tcG9uZW50V2lsbFVu
bW91bnQoKSI7ZC5pbnZva2VHdWFyZGVkQ2FsbGJhY2sobix0LmNvbXBvbmVudFdpbGxVbm1vdW50
LmJpbmQodCkpfWVsc2UgdC5jb21wb25lbnRXaWxsVW5tb3VudCgpO3RoaXMuX3JlbmRlcmVkQ29t
cG9uZW50JiYobS51bm1vdW50Q29tcG9uZW50KHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50LGUpLHRo
aXMuX3JlbmRlcmVkTm9kZVR5cGU9bnVsbCx0aGlzLl9yZW5kZXJlZENvbXBvbmVudD1udWxsLHRo
aXMuX2luc3RhbmNlPW51bGwpLHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlPW51bGwsdGhpcy5fcGVu
ZGluZ1JlcGxhY2VTdGF0ZT0hMSx0aGlzLl9wZW5kaW5nRm9yY2VVcGRhdGU9ITEsdGhpcy5fcGVu
ZGluZ0NhbGxiYWNrcz1udWxsLHRoaXMuX3BlbmRpbmdFbGVtZW50PW51bGwsdGhpcy5fY29udGV4
dD1udWxsLHRoaXMuX3Jvb3ROb2RlSUQ9MCx0aGlzLl90b3BMZXZlbFdyYXBwZXI9bnVsbCxmLnJl
bW92ZSh0KX19LF9tYXNrQ29udGV4dDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLl9jdXJyZW50RWxl
bWVudC50eXBlLG49dC5jb250ZXh0VHlwZXM7aWYoIW4pcmV0dXJuIHY7dmFyIHI9e307Zm9yKHZh
ciBvIGluIG4pcltvXT1lW29dO3JldHVybiByfSxfcHJvY2Vzc0NvbnRleHQ6ZnVuY3Rpb24oZSl7
dmFyIHQ9dGhpcy5fbWFza0NvbnRleHQoZSk7cmV0dXJuIHR9LF9wcm9jZXNzQ2hpbGRDb250ZXh0
OmZ1bmN0aW9uKGUpe3ZhciB0LG49dGhpcy5fY3VycmVudEVsZW1lbnQudHlwZSxyPXRoaXMuX2lu
c3RhbmNlO2lmKHIuZ2V0Q2hpbGRDb250ZXh0JiYodD1yLmdldENoaWxkQ29udGV4dCgpKSx0KXsi
b2JqZWN0IiE9dHlwZW9mIG4uY2hpbGRDb250ZXh0VHlwZXM/cygiMTA3Iix0aGlzLmdldE5hbWUo
KXx8IlJlYWN0Q29tcG9zaXRlQ29tcG9uZW50Iik6dm9pZCAwO2Zvcih2YXIgbyBpbiB0KW8gaW4g
bi5jaGlsZENvbnRleHRUeXBlcz92b2lkIDA6cygiMTA4Iix0aGlzLmdldE5hbWUoKXx8IlJlYWN0
Q29tcG9zaXRlQ29tcG9uZW50IixvKTtyZXR1cm4gdSh7fSxlLHQpfXJldHVybiBlfSxfY2hlY2tD
b250ZXh0VHlwZXM6ZnVuY3Rpb24oZSx0LG4pe30scmVjZWl2ZUNvbXBvbmVudDpmdW5jdGlvbihl
LHQsbil7dmFyIHI9dGhpcy5fY3VycmVudEVsZW1lbnQsbz10aGlzLl9jb250ZXh0O3RoaXMuX3Bl
bmRpbmdFbGVtZW50PW51bGwsdGhpcy51cGRhdGVDb21wb25lbnQodCxyLGUsbyxuKX0scGVyZm9y
bVVwZGF0ZUlmTmVjZXNzYXJ5OmZ1bmN0aW9uKGUpe251bGwhPXRoaXMuX3BlbmRpbmdFbGVtZW50
P20ucmVjZWl2ZUNvbXBvbmVudCh0aGlzLHRoaXMuX3BlbmRpbmdFbGVtZW50LGUsdGhpcy5fY29u
dGV4dCk6bnVsbCE9PXRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlfHx0aGlzLl9wZW5kaW5nRm9yY2VV
cGRhdGU/dGhpcy51cGRhdGVDb21wb25lbnQoZSx0aGlzLl9jdXJyZW50RWxlbWVudCx0aGlzLl9j
dXJyZW50RWxlbWVudCx0aGlzLl9jb250ZXh0LHRoaXMuX2NvbnRleHQpOnRoaXMuX3VwZGF0ZUJh
dGNoTnVtYmVyPW51bGx9LHVwZGF0ZUNvbXBvbmVudDpmdW5jdGlvbihlLHQsbixyLG8pe3ZhciBp
PXRoaXMuX2luc3RhbmNlO251bGw9PWk/cygiMTM2Iix0aGlzLmdldE5hbWUoKXx8IlJlYWN0Q29t
cG9zaXRlQ29tcG9uZW50Iik6dm9pZCAwO3ZhciBhLHU9ITE7dGhpcy5fY29udGV4dD09PW8/YT1p
LmNvbnRleHQ6KGE9dGhpcy5fcHJvY2Vzc0NvbnRleHQobyksdT0hMCk7dmFyIGw9dC5wcm9wcyxj
PW4ucHJvcHM7dCE9PW4mJih1PSEwKSx1JiZpLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMmJmku
Y29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhjLGEpO3ZhciBwPXRoaXMuX3Byb2Nlc3NQZW5kaW5n
U3RhdGUoYyxhKSxkPSEwO3RoaXMuX3BlbmRpbmdGb3JjZVVwZGF0ZXx8KGkuc2hvdWxkQ29tcG9u
ZW50VXBkYXRlP2Q9aS5zaG91bGRDb21wb25lbnRVcGRhdGUoYyxwLGEpOnRoaXMuX2NvbXBvc2l0
ZVR5cGU9PT1fLlB1cmVDbGFzcyYmKGQ9IWcobCxjKXx8IWcoaS5zdGF0ZSxwKSkpLHRoaXMuX3Vw
ZGF0ZUJhdGNoTnVtYmVyPW51bGwsZD8odGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRlPSExLHRoaXMu
X3BlcmZvcm1Db21wb25lbnRVcGRhdGUobixjLHAsYSxlLG8pKToodGhpcy5fY3VycmVudEVsZW1l
bnQ9bix0aGlzLl9jb250ZXh0PW8saS5wcm9wcz1jLGkuc3RhdGU9cCxpLmNvbnRleHQ9YSl9LF9w
cm9jZXNzUGVuZGluZ1N0YXRlOmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5faW5zdGFuY2Uscj10
aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZSxvPXRoaXMuX3BlbmRpbmdSZXBsYWNlU3RhdGU7aWYodGhp
cy5fcGVuZGluZ1JlcGxhY2VTdGF0ZT0hMSx0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZT1udWxsLCFy
KXJldHVybiBuLnN0YXRlO2lmKG8mJjE9PT1yLmxlbmd0aClyZXR1cm4gclswXTtmb3IodmFyIGk9
dSh7fSxvP3JbMF06bi5zdGF0ZSksYT1vPzE6MDthPHIubGVuZ3RoO2ErKyl7dmFyIHM9clthXTt1
KGksImZ1bmN0aW9uIj09dHlwZW9mIHM/cy5jYWxsKG4saSxlLHQpOnMpfXJldHVybiBpfSxfcGVy
Zm9ybUNvbXBvbmVudFVwZGF0ZTpmdW5jdGlvbihlLHQsbixyLG8saSl7dmFyIGEscyx1LGw9dGhp
cy5faW5zdGFuY2UsYz1Cb29sZWFuKGwuY29tcG9uZW50RGlkVXBkYXRlKTtjJiYoYT1sLnByb3Bz
LHM9bC5zdGF0ZSx1PWwuY29udGV4dCksbC5jb21wb25lbnRXaWxsVXBkYXRlJiZsLmNvbXBvbmVu
dFdpbGxVcGRhdGUodCxuLHIpLHRoaXMuX2N1cnJlbnRFbGVtZW50PWUsdGhpcy5fY29udGV4dD1p
LGwucHJvcHM9dCxsLnN0YXRlPW4sbC5jb250ZXh0PXIsdGhpcy5fdXBkYXRlUmVuZGVyZWRDb21w
b25lbnQobyxpKSxjJiZvLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUobC5jb21wb25lbnRE
aWRVcGRhdGUuYmluZChsLGEscyx1KSxsKX0sX3VwZGF0ZVJlbmRlcmVkQ29tcG9uZW50OmZ1bmN0
aW9uKGUsdCl7dmFyIG49dGhpcy5fcmVuZGVyZWRDb21wb25lbnQscj1uLl9jdXJyZW50RWxlbWVu
dCxvPXRoaXMuX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudCgpLGk9MDtpZih5KHIsbykpbS5yZWNl
aXZlQ29tcG9uZW50KG4sbyxlLHRoaXMuX3Byb2Nlc3NDaGlsZENvbnRleHQodCkpO2Vsc2V7dmFy
IGE9bS5nZXRIb3N0Tm9kZShuKTttLnVubW91bnRDb21wb25lbnQobiwhMSk7dmFyIHM9aC5nZXRU
eXBlKG8pO3RoaXMuX3JlbmRlcmVkTm9kZVR5cGU9czt2YXIgdT10aGlzLl9pbnN0YW50aWF0ZVJl
YWN0Q29tcG9uZW50KG8scyE9PWguRU1QVFkpO3RoaXMuX3JlbmRlcmVkQ29tcG9uZW50PXU7dmFy
IGw9bS5tb3VudENvbXBvbmVudCh1LGUsdGhpcy5faG9zdFBhcmVudCx0aGlzLl9ob3N0Q29udGFp
bmVySW5mbyx0aGlzLl9wcm9jZXNzQ2hpbGRDb250ZXh0KHQpLGkpO3RoaXMuX3JlcGxhY2VOb2Rl
V2l0aE1hcmt1cChhLGwsbil9fSxfcmVwbGFjZU5vZGVXaXRoTWFya3VwOmZ1bmN0aW9uKGUsdCxu
KXtjLnJlcGxhY2VOb2RlV2l0aE1hcmt1cChlLHQsbil9LF9yZW5kZXJWYWxpZGF0ZWRDb21wb25l
bnRXaXRob3V0T3duZXJPckNvbnRleHQ6ZnVuY3Rpb24oKXt2YXIgZSx0PXRoaXMuX2luc3RhbmNl
O3JldHVybiBlPXQucmVuZGVyKCl9LF9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnQ6ZnVuY3Rpb24o
KXt2YXIgZTtpZih0aGlzLl9jb21wb3NpdGVUeXBlIT09Xy5TdGF0ZWxlc3NGdW5jdGlvbmFsKXtw
LmN1cnJlbnQ9dGhpczt0cnl7ZT10aGlzLl9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnRXaXRob3V0
T3duZXJPckNvbnRleHQoKX1maW5hbGx5e3AuY3VycmVudD1udWxsfX1lbHNlIGU9dGhpcy5fcmVu
ZGVyVmFsaWRhdGVkQ29tcG9uZW50V2l0aG91dE93bmVyT3JDb250ZXh0KCk7cmV0dXJuIG51bGw9
PT1lfHxlPT09ITF8fGwuaXNWYWxpZEVsZW1lbnQoZSk/dm9pZCAwOnMoIjEwOSIsdGhpcy5nZXRO
YW1lKCl8fCJSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCIpLGV9LGF0dGFjaFJlZjpmdW5jdGlvbihl
LHQpe3ZhciBuPXRoaXMuZ2V0UHVibGljSW5zdGFuY2UoKTtudWxsPT1uP3MoIjExMCIpOnZvaWQg
MDt2YXIgcj10LmdldFB1YmxpY0luc3RhbmNlKCksbz1uLnJlZnM9PT12P24ucmVmcz17fTpuLnJl
ZnM7b1tlXT1yfSxkZXRhY2hSZWY6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5nZXRQdWJsaWNJbnN0
YW5jZSgpLnJlZnM7ZGVsZXRlIHRbZV19LGdldE5hbWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9j
dXJyZW50RWxlbWVudC50eXBlLHQ9dGhpcy5faW5zdGFuY2UmJnRoaXMuX2luc3RhbmNlLmNvbnN0
cnVjdG9yO3JldHVybiBlLmRpc3BsYXlOYW1lfHx0JiZ0LmRpc3BsYXlOYW1lfHxlLm5hbWV8fHQm
JnQubmFtZXx8bnVsbH0sZ2V0UHVibGljSW5zdGFuY2U6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9p
bnN0YW5jZTtyZXR1cm4gdGhpcy5fY29tcG9zaXRlVHlwZT09PV8uU3RhdGVsZXNzRnVuY3Rpb25h
bD9udWxsOmV9LF9pbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50Om51bGx9O3QuZXhwb3J0cz1ifSx7
MTEzOjExMywxMTc6MTE3LDEyMDoxMjAsMTIxOjEyMSwxMzA6MTMwLDEzNzoxMzcsMTQxOjE0MSwx
NDI6MTQyLDE0MzoxNDMsMjg6MjgsNTA6NTAsNTc6NTcsNTg6NTgsNjI6NjIsNjY6NjZ9XSwzMDpb
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDMzKSxvPWUoNDcpLGk9ZSg2MCks
YT1lKDY2KSxzPWUoNzEpLHU9ZSg3MiksbD1lKDk2KSxjPWUoMTAzKSxwPWUoMTE0KTtlKDE0Mik7
by5pbmplY3QoKTt2YXIgZD17ZmluZERPTU5vZGU6bCxyZW5kZXI6aS5yZW5kZXIsdW5tb3VudENv
bXBvbmVudEF0Tm9kZTppLnVubW91bnRDb21wb25lbnRBdE5vZGUsdmVyc2lvbjp1LHVuc3RhYmxl
X2JhdGNoZWRVcGRhdGVzOnMuYmF0Y2hlZFVwZGF0ZXMsdW5zdGFibGVfcmVuZGVyU3VidHJlZUlu
dG9Db250YWluZXI6cH07InVuZGVmaW5lZCIhPXR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JB
TF9IT09LX18mJiJmdW5jdGlvbiI9PXR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09L
X18uaW5qZWN0JiZfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18uaW5qZWN0KHtDb21wb25l
bnRUcmVlOntnZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZTpyLmdldENsb3Nlc3RJbnN0YW5jZUZy
b21Ob2RlLGdldE5vZGVGcm9tSW5zdGFuY2U6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX3JlbmRlcmVk
Q29tcG9uZW50JiYoZT1jKGUpKSxlP3IuZ2V0Tm9kZUZyb21JbnN0YW5jZShlKTpudWxsfX0sTW91
bnQ6aSxSZWNvbmNpbGVyOmF9KTt0LmV4cG9ydHM9ZH0sezEwMzoxMDMsMTE0OjExNCwxNDI6MTQy
LDMzOjMzLDQ3OjQ3LDYwOjYwLDY2OjY2LDcxOjcxLDcyOjcyLDk2Ojk2fV0sMzE6W2Z1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtpZihlKXt2YXIgdD1lLl9jdXJyZW50
RWxlbWVudC5fb3duZXJ8fG51bGw7aWYodCl7dmFyIG49dC5nZXROYW1lKCk7aWYobilyZXR1cm4i
IFRoaXMgRE9NIG5vZGUgd2FzIHJlbmRlcmVkIGJ5IGAiK24rImAuIn19cmV0dXJuIiJ9ZnVuY3Rp
b24gbyhlLHQpe3QmJihYW2UuX3RhZ10mJihudWxsIT10LmNoaWxkcmVufHxudWxsIT10LmRhbmdl
cm91c2x5U2V0SW5uZXJIVE1MP20oIjEzNyIsZS5fdGFnLGUuX2N1cnJlbnRFbGVtZW50Ll9vd25l
cj8iIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mICIrZS5fY3VycmVudEVsZW1lbnQuX293bmVy
LmdldE5hbWUoKSsiLiI6IiIpOnZvaWQgMCksbnVsbCE9dC5kYW5nZXJvdXNseVNldElubmVySFRN
TCYmKG51bGwhPXQuY2hpbGRyZW4/bSgiNjAiKTp2b2lkIDAsIm9iamVjdCI9PXR5cGVvZiB0LmRh
bmdlcm91c2x5U2V0SW5uZXJIVE1MJiZXIGluIHQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw/dm9p
ZCAwOm0oIjYxIikpLG51bGwhPXQuc3R5bGUmJiJvYmplY3QiIT10eXBlb2YgdC5zdHlsZT9tKCI2
MiIscihlKSk6dm9pZCAwKX1mdW5jdGlvbiBpKGUsdCxuLHIpe2lmKCEociBpbnN0YW5jZW9mIFIp
KXt2YXIgbz1lLl9ob3N0Q29udGFpbmVySW5mbyxpPW8uX25vZGUmJm8uX25vZGUubm9kZVR5cGU9
PT1xLHM9aT9vLl9ub2RlOm8uX293bmVyRG9jdW1lbnQ7Rih0LHMpLHIuZ2V0UmVhY3RNb3VudFJl
YWR5KCkuZW5xdWV1ZShhLHtpbnN0OmUscmVnaXN0cmF0aW9uTmFtZTp0LGxpc3RlbmVyOm59KX19
ZnVuY3Rpb24gYSgpe3ZhciBlPXRoaXM7eC5wdXRMaXN0ZW5lcihlLmluc3QsZS5yZWdpc3RyYXRp
b25OYW1lLGUubGlzdGVuZXIpfWZ1bmN0aW9uIHMoKXt2YXIgZT10aGlzO04ucG9zdE1vdW50V3Jh
cHBlcihlKX1mdW5jdGlvbiB1KCl7dmFyIGU9dGhpcztJLnBvc3RNb3VudFdyYXBwZXIoZSl9ZnVu
Y3Rpb24gbCgpe3ZhciBlPXRoaXM7Uy5wb3N0TW91bnRXcmFwcGVyKGUpfWZ1bmN0aW9uIGMoKXt2
YXIgZT10aGlzO2UuX3Jvb3ROb2RlSUQ/dm9pZCAwOm0oIjYzIik7dmFyIHQ9VShlKTtzd2l0Y2go
dD92b2lkIDA6bSgiNjQiKSxlLl90YWcpe2Nhc2UiaWZyYW1lIjpjYXNlIm9iamVjdCI6ZS5fd3Jh
cHBlclN0YXRlLmxpc3RlbmVycz1bVC50cmFwQnViYmxlZEV2ZW50KCJ0b3BMb2FkIiwibG9hZCIs
dCldO2JyZWFrO2Nhc2UidmlkZW8iOmNhc2UiYXVkaW8iOmUuX3dyYXBwZXJTdGF0ZS5saXN0ZW5l
cnM9W107Zm9yKHZhciBuIGluIEspSy5oYXNPd25Qcm9wZXJ0eShuKSYmZS5fd3JhcHBlclN0YXRl
Lmxpc3RlbmVycy5wdXNoKFQudHJhcEJ1YmJsZWRFdmVudChuLEtbbl0sdCkpO2JyZWFrO2Nhc2Ui
c291cmNlIjplLl93cmFwcGVyU3RhdGUubGlzdGVuZXJzPVtULnRyYXBCdWJibGVkRXZlbnQoInRv
cEVycm9yIiwiZXJyb3IiLHQpXTticmVhaztjYXNlImltZyI6ZS5fd3JhcHBlclN0YXRlLmxpc3Rl
bmVycz1bVC50cmFwQnViYmxlZEV2ZW50KCJ0b3BFcnJvciIsImVycm9yIix0KSxULnRyYXBCdWJi
bGVkRXZlbnQoInRvcExvYWQiLCJsb2FkIix0KV07YnJlYWs7Y2FzZSJmb3JtIjplLl93cmFwcGVy
U3RhdGUubGlzdGVuZXJzPVtULnRyYXBCdWJibGVkRXZlbnQoInRvcFJlc2V0IiwicmVzZXQiLHQp
LFQudHJhcEJ1YmJsZWRFdmVudCgidG9wU3VibWl0Iiwic3VibWl0Iix0KV07YnJlYWs7Y2FzZSJp
bnB1dCI6Y2FzZSJzZWxlY3QiOmNhc2UidGV4dGFyZWEiOmUuX3dyYXBwZXJTdGF0ZS5saXN0ZW5l
cnM9W1QudHJhcEJ1YmJsZWRFdmVudCgidG9wSW52YWxpZCIsImludmFsaWQiLHQpXX19ZnVuY3Rp
b24gcCgpe00ucG9zdFVwZGF0ZVdyYXBwZXIodGhpcyl9ZnVuY3Rpb24gZChlKXskLmNhbGwoRyxl
KXx8KFEudGVzdChlKT92b2lkIDA6bSgiNjUiLGUpLEdbZV09ITApfWZ1bmN0aW9uIGYoZSx0KXty
ZXR1cm4gZS5pbmRleE9mKCItIik+PTB8fG51bGwhPXQuaXN9ZnVuY3Rpb24gaChlKXt2YXIgdD1l
LnR5cGU7ZCh0KSx0aGlzLl9jdXJyZW50RWxlbWVudD1lLHRoaXMuX3RhZz10LnRvTG93ZXJDYXNl
KCksdGhpcy5fbmFtZXNwYWNlVVJJPW51bGwsdGhpcy5fcmVuZGVyZWRDaGlsZHJlbj1udWxsLHRo
aXMuX3ByZXZpb3VzU3R5bGU9bnVsbCx0aGlzLl9wcmV2aW91c1N0eWxlQ29weT1udWxsLHRoaXMu
X2hvc3ROb2RlPW51bGwsdGhpcy5faG9zdFBhcmVudD1udWxsLHRoaXMuX3Jvb3ROb2RlSUQ9MCx0
aGlzLl9kb21JRD0wLHRoaXMuX2hvc3RDb250YWluZXJJbmZvPW51bGwsdGhpcy5fd3JhcHBlclN0
YXRlPW51bGwsdGhpcy5fdG9wTGV2ZWxXcmFwcGVyPW51bGwsdGhpcy5fZmxhZ3M9MH12YXIgbT1l
KDExMyksdj1lKDE0MyksZz1lKDIpLHk9ZSg1KSxfPWUoOSksQz1lKDEwKSxiPWUoMTEpLEU9ZSgx
MikseD1lKDE2KSx3PWUoMTcpLFQ9ZSgyNSksaz1lKDMyKSxQPWUoMzMpLE49ZSgzOCksUz1lKDM5
KSxNPWUoNDApLEk9ZSg0MyksTz0oZSg1OCksZSg2MSkpLFI9ZSg2OCksQT0oZSgxMjkpLGUoOTUp
KSxEPShlKDEzNyksZSgxMTApLGUoMTQxKSxlKDExOSksZSgxNDIpLGspLEw9eC5kZWxldGVMaXN0
ZW5lcixVPVAuZ2V0Tm9kZUZyb21JbnN0YW5jZSxGPVQubGlzdGVuVG8sQj13LnJlZ2lzdHJhdGlv
bk5hbWVNb2R1bGVzLFY9e3N0cmluZzohMCxudW1iZXI6ITB9LGo9InN0eWxlIixXPSJfX2h0bWwi
LEg9e2NoaWxkcmVuOm51bGwsZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6bnVsbCxzdXBwcmVzc0Nv
bnRlbnRFZGl0YWJsZVdhcm5pbmc6bnVsbH0scT0xMSxLPXt0b3BBYm9ydDoiYWJvcnQiLHRvcENh
blBsYXk6ImNhbnBsYXkiLHRvcENhblBsYXlUaHJvdWdoOiJjYW5wbGF5dGhyb3VnaCIsdG9wRHVy
YXRpb25DaGFuZ2U6ImR1cmF0aW9uY2hhbmdlIix0b3BFbXB0aWVkOiJlbXB0aWVkIix0b3BFbmNy
eXB0ZWQ6ImVuY3J5cHRlZCIsdG9wRW5kZWQ6ImVuZGVkIix0b3BFcnJvcjoiZXJyb3IiLHRvcExv
YWRlZERhdGE6ImxvYWRlZGRhdGEiLHRvcExvYWRlZE1ldGFkYXRhOiJsb2FkZWRtZXRhZGF0YSIs
dG9wTG9hZFN0YXJ0OiJsb2Fkc3RhcnQiLHRvcFBhdXNlOiJwYXVzZSIsdG9wUGxheToicGxheSIs
dG9wUGxheWluZzoicGxheWluZyIsdG9wUHJvZ3Jlc3M6InByb2dyZXNzIix0b3BSYXRlQ2hhbmdl
OiJyYXRlY2hhbmdlIix0b3BTZWVrZWQ6InNlZWtlZCIsdG9wU2Vla2luZzoic2Vla2luZyIsdG9w
U3RhbGxlZDoic3RhbGxlZCIsdG9wU3VzcGVuZDoic3VzcGVuZCIsdG9wVGltZVVwZGF0ZToidGlt
ZXVwZGF0ZSIsdG9wVm9sdW1lQ2hhbmdlOiJ2b2x1bWVjaGFuZ2UiLHRvcFdhaXRpbmc6IndhaXRp
bmcifSx6PXthcmVhOiEwLGJhc2U6ITAsYnI6ITAsY29sOiEwLGVtYmVkOiEwLGhyOiEwLGltZzoh
MCxpbnB1dDohMCxrZXlnZW46ITAsbGluazohMCxtZXRhOiEwLHBhcmFtOiEwLHNvdXJjZTohMCx0
cmFjazohMCx3YnI6ITB9LFk9e2xpc3Rpbmc6ITAscHJlOiEwLHRleHRhcmVhOiEwfSxYPXYoe21l
bnVpdGVtOiEwfSx6KSxRPS9eW2EtekEtWl1bYS16QS1aOl9cLlwtXGRdKiQvLEc9e30sJD17fS5o
YXNPd25Qcm9wZXJ0eSxaPTE7aC5kaXNwbGF5TmFtZT0iUmVhY3RET01Db21wb25lbnQiLGguTWl4
aW49e21vdW50Q29tcG9uZW50OmZ1bmN0aW9uKGUsdCxuLHIpe3RoaXMuX3Jvb3ROb2RlSUQ9Wisr
LHRoaXMuX2RvbUlEPW4uX2lkQ291bnRlcisrLHRoaXMuX2hvc3RQYXJlbnQ9dCx0aGlzLl9ob3N0
Q29udGFpbmVySW5mbz1uO3ZhciBpPXRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3BzO3N3aXRjaCh0
aGlzLl90YWcpe2Nhc2UiYXVkaW8iOmNhc2UiZm9ybSI6Y2FzZSJpZnJhbWUiOmNhc2UiaW1nIjpj
YXNlImxpbmsiOmNhc2Uib2JqZWN0IjpjYXNlInNvdXJjZSI6Y2FzZSJ2aWRlbyI6dGhpcy5fd3Jh
cHBlclN0YXRlPXtsaXN0ZW5lcnM6bnVsbH0sZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVl
KGMsdGhpcyk7YnJlYWs7Y2FzZSJpbnB1dCI6Ti5tb3VudFdyYXBwZXIodGhpcyxpLHQpLGk9Ti5n
ZXRIb3N0UHJvcHModGhpcyxpKSxlLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoYyx0aGlz
KTticmVhaztjYXNlIm9wdGlvbiI6Uy5tb3VudFdyYXBwZXIodGhpcyxpLHQpLGk9Uy5nZXRIb3N0
UHJvcHModGhpcyxpKTticmVhaztjYXNlInNlbGVjdCI6TS5tb3VudFdyYXBwZXIodGhpcyxpLHQp
LGk9TS5nZXRIb3N0UHJvcHModGhpcyxpKSxlLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUo
Yyx0aGlzKTticmVhaztjYXNlInRleHRhcmVhIjpJLm1vdW50V3JhcHBlcih0aGlzLGksdCksaT1J
LmdldEhvc3RQcm9wcyh0aGlzLGkpLGUuZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShjLHRo
aXMpfW8odGhpcyxpKTt2YXIgYSxwO251bGwhPXQ/KGE9dC5fbmFtZXNwYWNlVVJJLHA9dC5fdGFn
KTpuLl90YWcmJihhPW4uX25hbWVzcGFjZVVSSSxwPW4uX3RhZyksKG51bGw9PWF8fGE9PT1DLnN2
ZyYmImZvcmVpZ25vYmplY3QiPT09cCkmJihhPUMuaHRtbCksYT09PUMuaHRtbCYmKCJzdmciPT09
dGhpcy5fdGFnP2E9Qy5zdmc6Im1hdGgiPT09dGhpcy5fdGFnJiYoYT1DLm1hdGhtbCkpLHRoaXMu
X25hbWVzcGFjZVVSST1hO3ZhciBkO2lmKGUudXNlQ3JlYXRlRWxlbWVudCl7dmFyIGYsaD1uLl9v
d25lckRvY3VtZW50O2lmKGE9PT1DLmh0bWwpaWYoInNjcmlwdCI9PT10aGlzLl90YWcpe3ZhciBt
PWguY3JlYXRlRWxlbWVudCgiZGl2Iiksdj10aGlzLl9jdXJyZW50RWxlbWVudC50eXBlO20uaW5u
ZXJIVE1MPSI8Iit2KyI+PC8iK3YrIj4iLGY9bS5yZW1vdmVDaGlsZChtLmZpcnN0Q2hpbGQpfWVs
c2UgZj1pLmlzP2guY3JlYXRlRWxlbWVudCh0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlLGkuaXMp
OmguY3JlYXRlRWxlbWVudCh0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlKTtlbHNlIGY9aC5jcmVh
dGVFbGVtZW50TlMoYSx0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlKTtQLnByZWNhY2hlTm9kZSh0
aGlzLGYpLHRoaXMuX2ZsYWdzfD1ELmhhc0NhY2hlZENoaWxkTm9kZXMsdGhpcy5faG9zdFBhcmVu
dHx8RS5zZXRBdHRyaWJ1dGVGb3JSb290KGYpLHRoaXMuX3VwZGF0ZURPTVByb3BlcnRpZXMobnVs
bCxpLGUpO3ZhciB5PV8oZik7dGhpcy5fY3JlYXRlSW5pdGlhbENoaWxkcmVuKGUsaSxyLHkpLGQ9
eX1lbHNle3ZhciBiPXRoaXMuX2NyZWF0ZU9wZW5UYWdNYXJrdXBBbmRQdXRMaXN0ZW5lcnMoZSxp
KSx4PXRoaXMuX2NyZWF0ZUNvbnRlbnRNYXJrdXAoZSxpLHIpO2Q9IXgmJnpbdGhpcy5fdGFnXT9i
KyIvPiI6YisiPiIreCsiPC8iK3RoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGUrIj4ifXN3aXRjaCh0
aGlzLl90YWcpe2Nhc2UiaW5wdXQiOmUuZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShzLHRo
aXMpLGkuYXV0b0ZvY3VzJiZlLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoZy5mb2N1c0RP
TUNvbXBvbmVudCx0aGlzKTticmVhaztjYXNlInRleHRhcmVhIjplLmdldFJlYWN0TW91bnRSZWFk
eSgpLmVucXVldWUodSx0aGlzKSxpLmF1dG9Gb2N1cyYmZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5l
bnF1ZXVlKGcuZm9jdXNET01Db21wb25lbnQsdGhpcyk7YnJlYWs7Y2FzZSJzZWxlY3QiOmkuYXV0
b0ZvY3VzJiZlLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoZy5mb2N1c0RPTUNvbXBvbmVu
dCx0aGlzKTticmVhaztjYXNlImJ1dHRvbiI6aS5hdXRvRm9jdXMmJmUuZ2V0UmVhY3RNb3VudFJl
YWR5KCkuZW5xdWV1ZShnLmZvY3VzRE9NQ29tcG9uZW50LHRoaXMpO2JyZWFrO2Nhc2Uib3B0aW9u
IjplLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUobCx0aGlzKX1yZXR1cm4gZH0sX2NyZWF0
ZU9wZW5UYWdNYXJrdXBBbmRQdXRMaXN0ZW5lcnM6ZnVuY3Rpb24oZSx0KXt2YXIgbj0iPCIrdGhp
cy5fY3VycmVudEVsZW1lbnQudHlwZTtmb3IodmFyIHIgaW4gdClpZih0Lmhhc093blByb3BlcnR5
KHIpKXt2YXIgbz10W3JdO2lmKG51bGwhPW8paWYoQi5oYXNPd25Qcm9wZXJ0eShyKSlvJiZpKHRo
aXMscixvLGUpO2Vsc2V7cj09PWomJihvJiYobz10aGlzLl9wcmV2aW91c1N0eWxlQ29weT12KHt9
LHQuc3R5bGUpKSxvPXkuY3JlYXRlTWFya3VwRm9yU3R5bGVzKG8sdGhpcykpO3ZhciBhPW51bGw7
bnVsbCE9dGhpcy5fdGFnJiZmKHRoaXMuX3RhZyx0KT9ILmhhc093blByb3BlcnR5KHIpfHwoYT1F
LmNyZWF0ZU1hcmt1cEZvckN1c3RvbUF0dHJpYnV0ZShyLG8pKTphPUUuY3JlYXRlTWFya3VwRm9y
UHJvcGVydHkocixvKSxhJiYobis9IiAiK2EpfX1yZXR1cm4gZS5yZW5kZXJUb1N0YXRpY01hcmt1
cD9uOih0aGlzLl9ob3N0UGFyZW50fHwobis9IiAiK0UuY3JlYXRlTWFya3VwRm9yUm9vdCgpKSxu
Kz0iICIrRS5jcmVhdGVNYXJrdXBGb3JJRCh0aGlzLl9kb21JRCkpfSxfY3JlYXRlQ29udGVudE1h
cmt1cDpmdW5jdGlvbihlLHQsbil7dmFyIHI9IiIsbz10LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1M
O2lmKG51bGwhPW8pbnVsbCE9by5fX2h0bWwmJihyPW8uX19odG1sKTtlbHNle3ZhciBpPVZbdHlw
ZW9mIHQuY2hpbGRyZW5dP3QuY2hpbGRyZW46bnVsbCxhPW51bGwhPWk/bnVsbDp0LmNoaWxkcmVu
O2lmKG51bGwhPWkpcj1BKGkpO2Vsc2UgaWYobnVsbCE9YSl7dmFyIHM9dGhpcy5tb3VudENoaWxk
cmVuKGEsZSxuKTtyPXMuam9pbigiIil9fXJldHVybiBZW3RoaXMuX3RhZ10mJiJcbiI9PT1yLmNo
YXJBdCgwKT8iXG4iK3I6cn0sX2NyZWF0ZUluaXRpYWxDaGlsZHJlbjpmdW5jdGlvbihlLHQsbixy
KXt2YXIgbz10LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MO2lmKG51bGwhPW8pbnVsbCE9by5fX2h0
bWwmJl8ucXVldWVIVE1MKHIsby5fX2h0bWwpO2Vsc2V7dmFyIGk9Vlt0eXBlb2YgdC5jaGlsZHJl
bl0/dC5jaGlsZHJlbjpudWxsLGE9bnVsbCE9aT9udWxsOnQuY2hpbGRyZW47aWYobnVsbCE9aSlf
LnF1ZXVlVGV4dChyLGkpO2Vsc2UgaWYobnVsbCE9YSlmb3IodmFyIHM9dGhpcy5tb3VudENoaWxk
cmVuKGEsZSxuKSx1PTA7dTxzLmxlbmd0aDt1KyspXy5xdWV1ZUNoaWxkKHIsc1t1XSl9fSxyZWNl
aXZlQ29tcG9uZW50OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLl9jdXJyZW50RWxlbWVudDt0
aGlzLl9jdXJyZW50RWxlbWVudD1lLHRoaXMudXBkYXRlQ29tcG9uZW50KHQscixlLG4pfSx1cGRh
dGVDb21wb25lbnQ6ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9dC5wcm9wcyxhPXRoaXMuX2N1cnJl
bnRFbGVtZW50LnByb3BzO3N3aXRjaCh0aGlzLl90YWcpe2Nhc2UiaW5wdXQiOmk9Ti5nZXRIb3N0
UHJvcHModGhpcyxpKSxhPU4uZ2V0SG9zdFByb3BzKHRoaXMsYSk7YnJlYWs7Y2FzZSJvcHRpb24i
Omk9Uy5nZXRIb3N0UHJvcHModGhpcyxpKSxhPVMuZ2V0SG9zdFByb3BzKHRoaXMsYSk7YnJlYWs7
Y2FzZSJzZWxlY3QiOmk9TS5nZXRIb3N0UHJvcHModGhpcyxpKSxhPU0uZ2V0SG9zdFByb3BzKHRo
aXMsYSk7YnJlYWs7Y2FzZSJ0ZXh0YXJlYSI6aT1JLmdldEhvc3RQcm9wcyh0aGlzLGkpLGE9SS5n
ZXRIb3N0UHJvcHModGhpcyxhKX1zd2l0Y2gobyh0aGlzLGEpLHRoaXMuX3VwZGF0ZURPTVByb3Bl
cnRpZXMoaSxhLGUpLHRoaXMuX3VwZGF0ZURPTUNoaWxkcmVuKGksYSxlLHIpLHRoaXMuX3RhZyl7
Y2FzZSJpbnB1dCI6Ti51cGRhdGVXcmFwcGVyKHRoaXMpO2JyZWFrO2Nhc2UidGV4dGFyZWEiOkku
dXBkYXRlV3JhcHBlcih0aGlzKTticmVhaztjYXNlInNlbGVjdCI6ZS5nZXRSZWFjdE1vdW50UmVh
ZHkoKS5lbnF1ZXVlKHAsdGhpcyl9fSxfdXBkYXRlRE9NUHJvcGVydGllczpmdW5jdGlvbihlLHQs
bil7dmFyIHIsbyxhO2ZvcihyIGluIGUpaWYoIXQuaGFzT3duUHJvcGVydHkocikmJmUuaGFzT3du
UHJvcGVydHkocikmJm51bGwhPWVbcl0paWYocj09PWope3ZhciBzPXRoaXMuX3ByZXZpb3VzU3R5
bGVDb3B5O2ZvcihvIGluIHMpcy5oYXNPd25Qcm9wZXJ0eShvKSYmKGE9YXx8e30sYVtvXT0iIik7
dGhpcy5fcHJldmlvdXNTdHlsZUNvcHk9bnVsbH1lbHNlIEIuaGFzT3duUHJvcGVydHkocik/ZVty
XSYmTCh0aGlzLHIpOmYodGhpcy5fdGFnLGUpP0guaGFzT3duUHJvcGVydHkocil8fEUuZGVsZXRl
VmFsdWVGb3JBdHRyaWJ1dGUoVSh0aGlzKSxyKTooYi5wcm9wZXJ0aWVzW3JdfHxiLmlzQ3VzdG9t
QXR0cmlidXRlKHIpKSYmRS5kZWxldGVWYWx1ZUZvclByb3BlcnR5KFUodGhpcykscik7Zm9yKHIg
aW4gdCl7dmFyIHU9dFtyXSxsPXI9PT1qP3RoaXMuX3ByZXZpb3VzU3R5bGVDb3B5Om51bGwhPWU/
ZVtyXTp2b2lkIDA7aWYodC5oYXNPd25Qcm9wZXJ0eShyKSYmdSE9PWwmJihudWxsIT11fHxudWxs
IT1sKSlpZihyPT09ailpZih1P3U9dGhpcy5fcHJldmlvdXNTdHlsZUNvcHk9dih7fSx1KTp0aGlz
Ll9wcmV2aW91c1N0eWxlQ29weT1udWxsLGwpe2ZvcihvIGluIGwpIWwuaGFzT3duUHJvcGVydHko
byl8fHUmJnUuaGFzT3duUHJvcGVydHkobyl8fChhPWF8fHt9LGFbb109IiIpO2ZvcihvIGluIHUp
dS5oYXNPd25Qcm9wZXJ0eShvKSYmbFtvXSE9PXVbb10mJihhPWF8fHt9LGFbb109dVtvXSl9ZWxz
ZSBhPXU7ZWxzZSBpZihCLmhhc093blByb3BlcnR5KHIpKXU/aSh0aGlzLHIsdSxuKTpsJiZMKHRo
aXMscik7ZWxzZSBpZihmKHRoaXMuX3RhZyx0KSlILmhhc093blByb3BlcnR5KHIpfHxFLnNldFZh
bHVlRm9yQXR0cmlidXRlKFUodGhpcykscix1KTtlbHNlIGlmKGIucHJvcGVydGllc1tyXXx8Yi5p
c0N1c3RvbUF0dHJpYnV0ZShyKSl7dmFyIGM9VSh0aGlzKTtudWxsIT11P0Uuc2V0VmFsdWVGb3JQ
cm9wZXJ0eShjLHIsdSk6RS5kZWxldGVWYWx1ZUZvclByb3BlcnR5KGMscil9fWEmJnkuc2V0VmFs
dWVGb3JTdHlsZXMoVSh0aGlzKSxhLHRoaXMpfSxfdXBkYXRlRE9NQ2hpbGRyZW46ZnVuY3Rpb24o
ZSx0LG4scil7dmFyIG89Vlt0eXBlb2YgZS5jaGlsZHJlbl0/ZS5jaGlsZHJlbjpudWxsLGk9Vlt0
eXBlb2YgdC5jaGlsZHJlbl0/dC5jaGlsZHJlbjpudWxsLGE9ZS5kYW5nZXJvdXNseVNldElubmVy
SFRNTCYmZS5kYW5nZXJvdXNseVNldElubmVySFRNTC5fX2h0bWwscz10LmRhbmdlcm91c2x5U2V0
SW5uZXJIVE1MJiZ0LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MLl9faHRtbCx1PW51bGwhPW8/bnVs
bDplLmNoaWxkcmVuLGw9bnVsbCE9aT9udWxsOnQuY2hpbGRyZW4sYz1udWxsIT1vfHxudWxsIT1h
LHA9bnVsbCE9aXx8bnVsbCE9cztudWxsIT11JiZudWxsPT1sP3RoaXMudXBkYXRlQ2hpbGRyZW4o
bnVsbCxuLHIpOmMmJiFwJiZ0aGlzLnVwZGF0ZVRleHRDb250ZW50KCIiKSxudWxsIT1pP28hPT1p
JiZ0aGlzLnVwZGF0ZVRleHRDb250ZW50KCIiK2kpOm51bGwhPXM/YSE9PXMmJnRoaXMudXBkYXRl
TWFya3VwKCIiK3MpOm51bGwhPWwmJnRoaXMudXBkYXRlQ2hpbGRyZW4obCxuLHIpfSxnZXRIb3N0
Tm9kZTpmdW5jdGlvbigpe3JldHVybiBVKHRoaXMpfSx1bm1vdW50Q29tcG9uZW50OmZ1bmN0aW9u
KGUpe3N3aXRjaCh0aGlzLl90YWcpe2Nhc2UiYXVkaW8iOmNhc2UiZm9ybSI6Y2FzZSJpZnJhbWUi
OmNhc2UiaW1nIjpjYXNlImxpbmsiOmNhc2Uib2JqZWN0IjpjYXNlInNvdXJjZSI6Y2FzZSJ2aWRl
byI6dmFyIHQ9dGhpcy5fd3JhcHBlclN0YXRlLmxpc3RlbmVycztpZih0KWZvcih2YXIgbj0wO248
dC5sZW5ndGg7bisrKXRbbl0ucmVtb3ZlKCk7YnJlYWs7Y2FzZSJodG1sIjpjYXNlImhlYWQiOmNh
c2UiYm9keSI6bSgiNjYiLHRoaXMuX3RhZyl9dGhpcy51bm1vdW50Q2hpbGRyZW4oZSksUC51bmNh
Y2hlTm9kZSh0aGlzKSx4LmRlbGV0ZUFsbExpc3RlbmVycyh0aGlzKSx0aGlzLl9yb290Tm9kZUlE
PTAsdGhpcy5fZG9tSUQ9MCx0aGlzLl93cmFwcGVyU3RhdGU9bnVsbH0sZ2V0UHVibGljSW5zdGFu
Y2U6ZnVuY3Rpb24oKXtyZXR1cm4gVSh0aGlzKX19LHYoaC5wcm90b3R5cGUsaC5NaXhpbixPLk1p
eGluKSx0LmV4cG9ydHM9aH0sezEwOjEwLDExOjExLDExMDoxMTAsMTEzOjExMywxMTk6MTE5LDEy
OjEyLDEyOToxMjksMTM3OjEzNywxNDE6MTQxLDE0MjoxNDIsMTQzOjE0MywxNjoxNiwxNzoxNywy
OjIsMjU6MjUsMzI6MzIsMzM6MzMsMzg6MzgsMzk6MzksNDA6NDAsNDM6NDMsNTo1LDU4OjU4LDYx
OjYxLDY4OjY4LDk6OSw5NTo5NX1dLDMyOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3Zh
ciByPXtoYXNDYWNoZWRDaGlsZE5vZGVzOjF9O3QuZXhwb3J0cz1yfSx7fV0sMzM6W2Z1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtmb3IodmFyIHQ7dD1lLl9yZW5kZXJl
ZENvbXBvbmVudDspZT10O3JldHVybiBlfWZ1bmN0aW9uIG8oZSx0KXt2YXIgbj1yKGUpO24uX2hv
c3ROb2RlPXQsdFttXT1ufWZ1bmN0aW9uIGkoZSl7dmFyIHQ9ZS5faG9zdE5vZGU7dCYmKGRlbGV0
ZSB0W21dLGUuX2hvc3ROb2RlPW51bGwpfWZ1bmN0aW9uIGEoZSx0KXtpZighKGUuX2ZsYWdzJmgu
aGFzQ2FjaGVkQ2hpbGROb2Rlcykpe3ZhciBuPWUuX3JlbmRlcmVkQ2hpbGRyZW4saT10LmZpcnN0
Q2hpbGQ7ZTpmb3IodmFyIGEgaW4gbilpZihuLmhhc093blByb3BlcnR5KGEpKXt2YXIgcz1uW2Fd
LHU9cihzKS5fZG9tSUQ7aWYoMCE9PXUpe2Zvcig7bnVsbCE9PWk7aT1pLm5leHRTaWJsaW5nKWlm
KDE9PT1pLm5vZGVUeXBlJiZpLmdldEF0dHJpYnV0ZShmKT09PVN0cmluZyh1KXx8OD09PWkubm9k
ZVR5cGUmJmkubm9kZVZhbHVlPT09IiByZWFjdC10ZXh0OiAiK3UrIiAifHw4PT09aS5ub2RlVHlw
ZSYmaS5ub2RlVmFsdWU9PT0iIHJlYWN0LWVtcHR5OiAiK3UrIiAiKXtvKHMsaSk7Y29udGludWUg
ZX1jKCIzMiIsdSl9fWUuX2ZsYWdzfD1oLmhhc0NhY2hlZENoaWxkTm9kZXN9fWZ1bmN0aW9uIHMo
ZSl7aWYoZVttXSlyZXR1cm4gZVttXTtmb3IodmFyIHQ9W107IWVbbV07KXtpZih0LnB1c2goZSks
IWUucGFyZW50Tm9kZSlyZXR1cm4gbnVsbDtlPWUucGFyZW50Tm9kZX1mb3IodmFyIG4scjtlJiYo
cj1lW21dKTtlPXQucG9wKCkpbj1yLHQubGVuZ3RoJiZhKHIsZSk7cmV0dXJuIG59ZnVuY3Rpb24g
dShlKXt2YXIgdD1zKGUpO3JldHVybiBudWxsIT10JiZ0Ll9ob3N0Tm9kZT09PWU/dDpudWxsfWZ1
bmN0aW9uIGwoZSl7aWYodm9pZCAwPT09ZS5faG9zdE5vZGU/YygiMzMiKTp2b2lkIDAsZS5faG9z
dE5vZGUpcmV0dXJuIGUuX2hvc3ROb2RlO2Zvcih2YXIgdD1bXTshZS5faG9zdE5vZGU7KXQucHVz
aChlKSxlLl9ob3N0UGFyZW50P3ZvaWQgMDpjKCIzNCIpLGU9ZS5faG9zdFBhcmVudDtmb3IoO3Qu
bGVuZ3RoO2U9dC5wb3AoKSlhKGUsZS5faG9zdE5vZGUpO3JldHVybiBlLl9ob3N0Tm9kZX12YXIg
Yz1lKDExMykscD1lKDExKSxkPWUoMzIpLGY9KGUoMTM3KSxwLklEX0FUVFJJQlVURV9OQU1FKSxo
PWQsbT0iX19yZWFjdEludGVybmFsSW5zdGFuY2UkIitNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2
KS5zbGljZSgyKSx2PXtnZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZTpzLGdldEluc3RhbmNlRnJv
bU5vZGU6dSxnZXROb2RlRnJvbUluc3RhbmNlOmwscHJlY2FjaGVDaGlsZE5vZGVzOmEscHJlY2Fj
aGVOb2RlOm8sdW5jYWNoZU5vZGU6aX07dC5leHBvcnRzPXZ9LHsxMToxMSwxMTM6MTEzLDEzNzox
MzcsMzI6MzJ9XSwzNDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUs
dCl7dmFyIG49e190b3BMZXZlbFdyYXBwZXI6ZSxfaWRDb3VudGVyOjEsX293bmVyRG9jdW1lbnQ6
dD90Lm5vZGVUeXBlPT09bz90OnQub3duZXJEb2N1bWVudDpudWxsLF9ub2RlOnQsX3RhZzp0P3Qu
bm9kZU5hbWUudG9Mb3dlckNhc2UoKTpudWxsLF9uYW1lc3BhY2VVUkk6dD90Lm5hbWVzcGFjZVVS
STpudWxsfTtyZXR1cm4gbn12YXIgbz0oZSgxMTkpLDkpO3QuZXhwb3J0cz1yfSx7MTE5OjExOX1d
LDM1OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoMTQzKSxvPWUoOSksaT1l
KDMzKSxhPWZ1bmN0aW9uKGUpe3RoaXMuX2N1cnJlbnRFbGVtZW50PW51bGwsdGhpcy5faG9zdE5v
ZGU9bnVsbCx0aGlzLl9ob3N0UGFyZW50PW51bGwsdGhpcy5faG9zdENvbnRhaW5lckluZm89bnVs
bCx0aGlzLl9kb21JRD0wfTtyKGEucHJvdG90eXBlLHttb3VudENvbXBvbmVudDpmdW5jdGlvbihl
LHQsbixyKXt2YXIgYT1uLl9pZENvdW50ZXIrKzt0aGlzLl9kb21JRD1hLHRoaXMuX2hvc3RQYXJl
bnQ9dCx0aGlzLl9ob3N0Q29udGFpbmVySW5mbz1uO3ZhciBzPSIgcmVhY3QtZW1wdHk6ICIrdGhp
cy5fZG9tSUQrIiAiO2lmKGUudXNlQ3JlYXRlRWxlbWVudCl7dmFyIHU9bi5fb3duZXJEb2N1bWVu
dCxsPXUuY3JlYXRlQ29tbWVudChzKTtyZXR1cm4gaS5wcmVjYWNoZU5vZGUodGhpcyxsKSxvKGwp
fXJldHVybiBlLnJlbmRlclRvU3RhdGljTWFya3VwPyIiOiI8IS0tIitzKyItLT4ifSxyZWNlaXZl
Q29tcG9uZW50OmZ1bmN0aW9uKCl7fSxnZXRIb3N0Tm9kZTpmdW5jdGlvbigpe3JldHVybiBpLmdl
dE5vZGVGcm9tSW5zdGFuY2UodGhpcyl9LHVubW91bnRDb21wb25lbnQ6ZnVuY3Rpb24oKXtpLnVu
Y2FjaGVOb2RlKHRoaXMpfX0pLHQuZXhwb3J0cz1hfSx7MTQzOjE0MywzMzozMyw5Ojl9XSwzNjpb
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj17dXNlQ3JlYXRlRWxlbWVudDohMCx1
c2VGaWJlcjohMX07dC5leHBvcnRzPXJ9LHt9XSwzNzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0Ijt2YXIgcj1lKDgpLG89ZSgzMyksaT17ZGFuZ2Vyb3VzbHlQcm9jZXNzQ2hpbGRyZW5VcGRh
dGVzOmZ1bmN0aW9uKGUsdCl7dmFyIG49by5nZXROb2RlRnJvbUluc3RhbmNlKGUpO3IucHJvY2Vz
c1VwZGF0ZXMobix0KX19O3QuZXhwb3J0cz1pfSx7MzM6MzMsODo4fV0sMzg6W2Z1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe3RoaXMuX3Jvb3ROb2RlSUQmJnAudXBkYXRl
V3JhcHBlcih0aGlzKX1mdW5jdGlvbiBvKGUpe3ZhciB0PXRoaXMuX2N1cnJlbnRFbGVtZW50LnBy
b3BzLG49dS5leGVjdXRlT25DaGFuZ2UodCxlKTtjLmFzYXAocix0aGlzKTt2YXIgbz10Lm5hbWU7
aWYoInJhZGlvIj09PXQudHlwZSYmbnVsbCE9byl7Zm9yKHZhciBhPWwuZ2V0Tm9kZUZyb21JbnN0
YW5jZSh0aGlzKSxzPWE7cy5wYXJlbnROb2RlOylzPXMucGFyZW50Tm9kZTtmb3IodmFyIHA9cy5x
dWVyeVNlbGVjdG9yQWxsKCJpbnB1dFtuYW1lPSIrSlNPTi5zdHJpbmdpZnkoIiIrbykrJ11bdHlw
ZT0icmFkaW8iXScpLGQ9MDtkPHAubGVuZ3RoO2QrKyl7dmFyIGY9cFtkXTtpZihmIT09YSYmZi5m
b3JtPT09YS5mb3JtKXt2YXIgaD1sLmdldEluc3RhbmNlRnJvbU5vZGUoZik7aD92b2lkIDA6aSgi
OTAiKSxjLmFzYXAocixoKX19fXJldHVybiBufXZhciBpPWUoMTEzKSxhPWUoMTQzKSxzPWUoMTIp
LHU9ZSgyMyksbD1lKDMzKSxjPWUoNzEpLHA9KGUoMTM3KSxlKDE0Mikse2dldEhvc3RQcm9wczpm
dW5jdGlvbihlLHQpe3ZhciBuPXUuZ2V0VmFsdWUodCkscj11LmdldENoZWNrZWQodCksbz1hKHt0
eXBlOnZvaWQgMCxzdGVwOnZvaWQgMCxtaW46dm9pZCAwLG1heDp2b2lkIDB9LHQse2RlZmF1bHRD
aGVja2VkOnZvaWQgMCxkZWZhdWx0VmFsdWU6dm9pZCAwLHZhbHVlOm51bGwhPW4/bjplLl93cmFw
cGVyU3RhdGUuaW5pdGlhbFZhbHVlLGNoZWNrZWQ6bnVsbCE9cj9yOmUuX3dyYXBwZXJTdGF0ZS5p
bml0aWFsQ2hlY2tlZCxvbkNoYW5nZTplLl93cmFwcGVyU3RhdGUub25DaGFuZ2V9KTtyZXR1cm4g
b30sbW91bnRXcmFwcGVyOmZ1bmN0aW9uKGUsdCl7dmFyIG49dC5kZWZhdWx0VmFsdWU7ZS5fd3Jh
cHBlclN0YXRlPXtpbml0aWFsQ2hlY2tlZDpudWxsIT10LmNoZWNrZWQ/dC5jaGVja2VkOnQuZGVm
YXVsdENoZWNrZWQsaW5pdGlhbFZhbHVlOm51bGwhPXQudmFsdWU/dC52YWx1ZTpuLGxpc3RlbmVy
czpudWxsLG9uQ2hhbmdlOm8uYmluZChlKX19LHVwZGF0ZVdyYXBwZXI6ZnVuY3Rpb24oZSl7dmFy
IHQ9ZS5fY3VycmVudEVsZW1lbnQucHJvcHMsbj10LmNoZWNrZWQ7bnVsbCE9biYmcy5zZXRWYWx1
ZUZvclByb3BlcnR5KGwuZ2V0Tm9kZUZyb21JbnN0YW5jZShlKSwiY2hlY2tlZCIsbnx8ITEpO3Zh
ciByPWwuZ2V0Tm9kZUZyb21JbnN0YW5jZShlKSxvPXUuZ2V0VmFsdWUodCk7aWYobnVsbCE9byl7
dmFyIGk9IiIrbztpIT09ci52YWx1ZSYmKHIudmFsdWU9aSl9ZWxzZSBudWxsPT10LnZhbHVlJiZu
dWxsIT10LmRlZmF1bHRWYWx1ZSYmKHIuZGVmYXVsdFZhbHVlPSIiK3QuZGVmYXVsdFZhbHVlKSxu
dWxsPT10LmNoZWNrZWQmJm51bGwhPXQuZGVmYXVsdENoZWNrZWQmJihyLmRlZmF1bHRDaGVja2Vk
PSEhdC5kZWZhdWx0Q2hlY2tlZCl9LHBvc3RNb3VudFdyYXBwZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9
ZS5fY3VycmVudEVsZW1lbnQucHJvcHMsbj1sLmdldE5vZGVGcm9tSW5zdGFuY2UoZSk7c3dpdGNo
KHQudHlwZSl7Y2FzZSJzdWJtaXQiOmNhc2UicmVzZXQiOmJyZWFrO2Nhc2UiY29sb3IiOmNhc2Ui
ZGF0ZSI6Y2FzZSJkYXRldGltZSI6Y2FzZSJkYXRldGltZS1sb2NhbCI6Y2FzZSJtb250aCI6Y2Fz
ZSJ0aW1lIjpjYXNlIndlZWsiOm4udmFsdWU9IiIsbi52YWx1ZT1uLmRlZmF1bHRWYWx1ZTticmVh
aztkZWZhdWx0Om4udmFsdWU9bi52YWx1ZX12YXIgcj1uLm5hbWU7IiIhPT1yJiYobi5uYW1lPSIi
KSxuLmRlZmF1bHRDaGVja2VkPSFuLmRlZmF1bHRDaGVja2VkLG4uZGVmYXVsdENoZWNrZWQ9IW4u
ZGVmYXVsdENoZWNrZWQsIiIhPT1yJiYobi5uYW1lPXIpfX0pO3QuZXhwb3J0cz1wfSx7MTEzOjEx
MywxMjoxMiwxMzc6MTM3LDE0MjoxNDIsMTQzOjE0MywyMzoyMywzMzozMyw3MTo3MX1dLDM5Oltm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQ9IiI7cmV0dXJu
IGkuQ2hpbGRyZW4uZm9yRWFjaChlLGZ1bmN0aW9uKGUpe251bGwhPWUmJigic3RyaW5nIj09dHlw
ZW9mIGV8fCJudW1iZXIiPT10eXBlb2YgZT90Kz1lOnV8fCh1PSEwKSl9KSx0fXZhciBvPWUoMTQz
KSxpPWUoMTIxKSxhPWUoMzMpLHM9ZSg0MCksdT0oZSgxNDIpLCExKSxsPXttb3VudFdyYXBwZXI6
ZnVuY3Rpb24oZSx0LG4pe3ZhciBvPW51bGw7aWYobnVsbCE9bil7dmFyIGk9bjsib3B0Z3JvdXAi
PT09aS5fdGFnJiYoaT1pLl9ob3N0UGFyZW50KSxudWxsIT1pJiYic2VsZWN0Ij09PWkuX3RhZyYm
KG89cy5nZXRTZWxlY3RWYWx1ZUNvbnRleHQoaSkpfXZhciBhPW51bGw7aWYobnVsbCE9byl7dmFy
IHU7aWYodT1udWxsIT10LnZhbHVlP3QudmFsdWUrIiI6cih0LmNoaWxkcmVuKSxhPSExLEFycmF5
LmlzQXJyYXkobykpe2Zvcih2YXIgbD0wO2w8by5sZW5ndGg7bCsrKWlmKCIiK29bbF09PT11KXth
PSEwO2JyZWFrfX1lbHNlIGE9IiIrbz09PXV9ZS5fd3JhcHBlclN0YXRlPXtzZWxlY3RlZDphfX0s
cG9zdE1vdW50V3JhcHBlcjpmdW5jdGlvbihlKXt2YXIgdD1lLl9jdXJyZW50RWxlbWVudC5wcm9w
cztpZihudWxsIT10LnZhbHVlKXt2YXIgbj1hLmdldE5vZGVGcm9tSW5zdGFuY2UoZSk7bi5zZXRB
dHRyaWJ1dGUoInZhbHVlIix0LnZhbHVlKX19LGdldEhvc3RQcm9wczpmdW5jdGlvbihlLHQpe3Zh
ciBuPW8oe3NlbGVjdGVkOnZvaWQgMCxjaGlsZHJlbjp2b2lkIDB9LHQpO251bGwhPWUuX3dyYXBw
ZXJTdGF0ZS5zZWxlY3RlZCYmKG4uc2VsZWN0ZWQ9ZS5fd3JhcHBlclN0YXRlLnNlbGVjdGVkKTt2
YXIgaT1yKHQuY2hpbGRyZW4pO3JldHVybiBpJiYobi5jaGlsZHJlbj1pKSxufX07dC5leHBvcnRz
PWx9LHsxMjE6MTIxLDE0MjoxNDIsMTQzOjE0MywzMzozMyw0MDo0MH1dLDQwOltmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXtpZih0aGlzLl9yb290Tm9kZUlEJiZ0aGlz
Ll93cmFwcGVyU3RhdGUucGVuZGluZ1VwZGF0ZSl7dGhpcy5fd3JhcHBlclN0YXRlLnBlbmRpbmdV
cGRhdGU9ITE7dmFyIGU9dGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHMsdD1zLmdldFZhbHVlKGUp
O251bGwhPXQmJm8odGhpcyxCb29sZWFuKGUubXVsdGlwbGUpLHQpfX1mdW5jdGlvbiBvKGUsdCxu
KXt2YXIgcixvLGk9dS5nZXROb2RlRnJvbUluc3RhbmNlKGUpLm9wdGlvbnM7aWYodCl7Zm9yKHI9
e30sbz0wO288bi5sZW5ndGg7bysrKXJbIiIrbltvXV09ITA7Zm9yKG89MDtvPGkubGVuZ3RoO28r
Kyl7dmFyIGE9ci5oYXNPd25Qcm9wZXJ0eShpW29dLnZhbHVlKTtpW29dLnNlbGVjdGVkIT09YSYm
KGlbb10uc2VsZWN0ZWQ9YSl9fWVsc2V7Zm9yKHI9IiIrbixvPTA7bzxpLmxlbmd0aDtvKyspaWYo
aVtvXS52YWx1ZT09PXIpcmV0dXJuIHZvaWQoaVtvXS5zZWxlY3RlZD0hMCk7aS5sZW5ndGgmJihp
WzBdLnNlbGVjdGVkPSEwKX19ZnVuY3Rpb24gaShlKXt2YXIgdD10aGlzLl9jdXJyZW50RWxlbWVu
dC5wcm9wcyxuPXMuZXhlY3V0ZU9uQ2hhbmdlKHQsZSk7cmV0dXJuIHRoaXMuX3Jvb3ROb2RlSUQm
Jih0aGlzLl93cmFwcGVyU3RhdGUucGVuZGluZ1VwZGF0ZT0hMCksbC5hc2FwKHIsdGhpcyksbn12
YXIgYT1lKDE0Mykscz1lKDIzKSx1PWUoMzMpLGw9ZSg3MSksYz0oZSgxNDIpLCExKSxwPXtnZXRI
b3N0UHJvcHM6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gYSh7fSx0LHtvbkNoYW5nZTplLl93cmFwcGVy
U3RhdGUub25DaGFuZ2UsdmFsdWU6dm9pZCAwfSl9LG1vdW50V3JhcHBlcjpmdW5jdGlvbihlLHQp
e3ZhciBuPXMuZ2V0VmFsdWUodCk7ZS5fd3JhcHBlclN0YXRlPXtwZW5kaW5nVXBkYXRlOiExLGlu
aXRpYWxWYWx1ZTpudWxsIT1uP246dC5kZWZhdWx0VmFsdWUsbGlzdGVuZXJzOm51bGwsb25DaGFu
Z2U6aS5iaW5kKGUpLHdhc011bHRpcGxlOkJvb2xlYW4odC5tdWx0aXBsZSl9LHZvaWQgMD09PXQu
dmFsdWV8fHZvaWQgMD09PXQuZGVmYXVsdFZhbHVlfHxjfHwoYz0hMCl9LGdldFNlbGVjdFZhbHVl
Q29udGV4dDpmdW5jdGlvbihlKXtyZXR1cm4gZS5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZX0s
cG9zdFVwZGF0ZVdyYXBwZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5fY3VycmVudEVsZW1lbnQucHJv
cHM7ZS5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZT12b2lkIDA7dmFyIG49ZS5fd3JhcHBlclN0
YXRlLndhc011bHRpcGxlO2UuX3dyYXBwZXJTdGF0ZS53YXNNdWx0aXBsZT1Cb29sZWFuKHQubXVs
dGlwbGUpO3ZhciByPXMuZ2V0VmFsdWUodCk7bnVsbCE9cj8oZS5fd3JhcHBlclN0YXRlLnBlbmRp
bmdVcGRhdGU9ITEsbyhlLEJvb2xlYW4odC5tdWx0aXBsZSkscikpOm4hPT1Cb29sZWFuKHQubXVs
dGlwbGUpJiYobnVsbCE9dC5kZWZhdWx0VmFsdWU/byhlLEJvb2xlYW4odC5tdWx0aXBsZSksdC5k
ZWZhdWx0VmFsdWUpOm8oZSxCb29sZWFuKHQubXVsdGlwbGUpLHQubXVsdGlwbGU/W106IiIpKX19
O3QuZXhwb3J0cz1wfSx7MTQyOjE0MiwxNDM6MTQzLDIzOjIzLDMzOjMzLDcxOjcxfV0sNDE6W2Z1
bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gZT09
PW4mJnQ9PT1yfWZ1bmN0aW9uIG8oZSl7dmFyIHQ9ZG9jdW1lbnQuc2VsZWN0aW9uLG49dC5jcmVh
dGVSYW5nZSgpLHI9bi50ZXh0Lmxlbmd0aCxvPW4uZHVwbGljYXRlKCk7by5tb3ZlVG9FbGVtZW50
VGV4dChlKSxvLnNldEVuZFBvaW50KCJFbmRUb1N0YXJ0IixuKTt2YXIgaT1vLnRleHQubGVuZ3Ro
LGE9aStyO3JldHVybntzdGFydDppLGVuZDphfX1mdW5jdGlvbiBpKGUpe3ZhciB0PXdpbmRvdy5n
ZXRTZWxlY3Rpb24mJndpbmRvdy5nZXRTZWxlY3Rpb24oKTtpZighdHx8MD09PXQucmFuZ2VDb3Vu
dClyZXR1cm4gbnVsbDt2YXIgbj10LmFuY2hvck5vZGUsbz10LmFuY2hvck9mZnNldCxpPXQuZm9j
dXNOb2RlLGE9dC5mb2N1c09mZnNldCxzPXQuZ2V0UmFuZ2VBdCgwKTt0cnl7cy5zdGFydENvbnRh
aW5lci5ub2RlVHlwZSxzLmVuZENvbnRhaW5lci5ub2RlVHlwZX1jYXRjaChlKXtyZXR1cm4gbnVs
bH12YXIgdT1yKHQuYW5jaG9yTm9kZSx0LmFuY2hvck9mZnNldCx0LmZvY3VzTm9kZSx0LmZvY3Vz
T2Zmc2V0KSxsPXU/MDpzLnRvU3RyaW5nKCkubGVuZ3RoLGM9cy5jbG9uZVJhbmdlKCk7Yy5zZWxl
Y3ROb2RlQ29udGVudHMoZSksYy5zZXRFbmQocy5zdGFydENvbnRhaW5lcixzLnN0YXJ0T2Zmc2V0
KTt2YXIgcD1yKGMuc3RhcnRDb250YWluZXIsYy5zdGFydE9mZnNldCxjLmVuZENvbnRhaW5lcixj
LmVuZE9mZnNldCksZD1wPzA6Yy50b1N0cmluZygpLmxlbmd0aCxmPWQrbCxoPWRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7aC5zZXRTdGFydChuLG8pLGguc2V0RW5kKGksYSk7dmFyIG09aC5jb2xsYXBz
ZWQ7cmV0dXJue3N0YXJ0Om0/ZjpkLGVuZDptP2Q6Zn19ZnVuY3Rpb24gYShlLHQpe3ZhciBuLHIs
bz1kb2N1bWVudC5zZWxlY3Rpb24uY3JlYXRlUmFuZ2UoKS5kdXBsaWNhdGUoKTt2b2lkIDA9PT10
LmVuZD8obj10LnN0YXJ0LHI9bik6dC5zdGFydD50LmVuZD8obj10LmVuZCxyPXQuc3RhcnQpOihu
PXQuc3RhcnQscj10LmVuZCksby5tb3ZlVG9FbGVtZW50VGV4dChlKSxvLm1vdmVTdGFydCgiY2hh
cmFjdGVyIixuKSxvLnNldEVuZFBvaW50KCJFbmRUb1N0YXJ0IixvKSxvLm1vdmVFbmQoImNoYXJh
Y3RlciIsci1uKSxvLnNlbGVjdCgpfWZ1bmN0aW9uIHMoZSx0KXtpZih3aW5kb3cuZ2V0U2VsZWN0
aW9uKXt2YXIgbj13aW5kb3cuZ2V0U2VsZWN0aW9uKCkscj1lW2MoKV0ubGVuZ3RoLG89TWF0aC5t
aW4odC5zdGFydCxyKSxpPXZvaWQgMD09PXQuZW5kP286TWF0aC5taW4odC5lbmQscik7aWYoIW4u
ZXh0ZW5kJiZvPmkpe3ZhciBhPWk7aT1vLG89YX12YXIgcz1sKGUsbyksdT1sKGUsaSk7aWYocyYm
dSl7dmFyIHA9ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtwLnNldFN0YXJ0KHMubm9kZSxzLm9mZnNl
dCksbi5yZW1vdmVBbGxSYW5nZXMoKSxvPmk/KG4uYWRkUmFuZ2UocCksbi5leHRlbmQodS5ub2Rl
LHUub2Zmc2V0KSk6KHAuc2V0RW5kKHUubm9kZSx1Lm9mZnNldCksbi5hZGRSYW5nZShwKSl9fX12
YXIgdT1lKDEyMyksbD1lKDEwNiksYz1lKDEwNykscD11LmNhblVzZURPTSYmInNlbGVjdGlvbiJp
biBkb2N1bWVudCYmISgiZ2V0U2VsZWN0aW9uImluIHdpbmRvdyksZD17Z2V0T2Zmc2V0czpwP286
aSxzZXRPZmZzZXRzOnA/YTpzfTt0LmV4cG9ydHM9ZH0sezEwNjoxMDYsMTA3OjEwNywxMjM6MTIz
fV0sNDI6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSgxMTMpLG89ZSgxNDMp
LGk9ZSg4KSxhPWUoOSkscz1lKDMzKSx1PWUoOTUpLGw9KGUoMTM3KSxlKDExOSksZnVuY3Rpb24o
ZSl7dGhpcy5fY3VycmVudEVsZW1lbnQ9ZSx0aGlzLl9zdHJpbmdUZXh0PSIiK2UsdGhpcy5faG9z
dE5vZGU9bnVsbCx0aGlzLl9ob3N0UGFyZW50PW51bGwsdGhpcy5fZG9tSUQ9MCx0aGlzLl9tb3Vu
dEluZGV4PTAsdGhpcy5fY2xvc2luZ0NvbW1lbnQ9bnVsbCx0aGlzLl9jb21tZW50Tm9kZXM9bnVs
bH0pO28obC5wcm90b3R5cGUse21vdW50Q29tcG9uZW50OmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBv
PW4uX2lkQ291bnRlcisrLGk9IiByZWFjdC10ZXh0OiAiK28rIiAiLGw9IiAvcmVhY3QtdGV4dCAi
O2lmKHRoaXMuX2RvbUlEPW8sdGhpcy5faG9zdFBhcmVudD10LGUudXNlQ3JlYXRlRWxlbWVudCl7
dmFyIGM9bi5fb3duZXJEb2N1bWVudCxwPWMuY3JlYXRlQ29tbWVudChpKSxkPWMuY3JlYXRlQ29t
bWVudChsKSxmPWEoYy5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkpO3JldHVybiBhLnF1ZXVlQ2hp
bGQoZixhKHApKSwKK3RoaXMuX3N0cmluZ1RleHQmJmEucXVldWVDaGlsZChmLGEoYy5jcmVhdGVU
ZXh0Tm9kZSh0aGlzLl9zdHJpbmdUZXh0KSkpLGEucXVldWVDaGlsZChmLGEoZCkpLHMucHJlY2Fj
aGVOb2RlKHRoaXMscCksdGhpcy5fY2xvc2luZ0NvbW1lbnQ9ZCxmfXZhciBoPXUodGhpcy5fc3Ry
aW5nVGV4dCk7cmV0dXJuIGUucmVuZGVyVG9TdGF0aWNNYXJrdXA/aDoiPCEtLSIraSsiLS0+Iito
KyI8IS0tIitsKyItLT4ifSxyZWNlaXZlQ29tcG9uZW50OmZ1bmN0aW9uKGUsdCl7aWYoZSE9PXRo
aXMuX2N1cnJlbnRFbGVtZW50KXt0aGlzLl9jdXJyZW50RWxlbWVudD1lO3ZhciBuPSIiK2U7aWYo
biE9PXRoaXMuX3N0cmluZ1RleHQpe3RoaXMuX3N0cmluZ1RleHQ9bjt2YXIgcj10aGlzLmdldEhv
c3ROb2RlKCk7aS5yZXBsYWNlRGVsaW1pdGVkVGV4dChyWzBdLHJbMV0sbil9fX0sZ2V0SG9zdE5v
ZGU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9jb21tZW50Tm9kZXM7aWYoZSlyZXR1cm4gZTtpZigh
dGhpcy5fY2xvc2luZ0NvbW1lbnQpZm9yKHZhciB0PXMuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0aGlz
KSxuPXQubmV4dFNpYmxpbmc7Oyl7aWYobnVsbD09bj9yKCI2NyIsdGhpcy5fZG9tSUQpOnZvaWQg
MCw4PT09bi5ub2RlVHlwZSYmIiAvcmVhY3QtdGV4dCAiPT09bi5ub2RlVmFsdWUpe3RoaXMuX2Ns
b3NpbmdDb21tZW50PW47YnJlYWt9bj1uLm5leHRTaWJsaW5nfXJldHVybiBlPVt0aGlzLl9ob3N0
Tm9kZSx0aGlzLl9jbG9zaW5nQ29tbWVudF0sdGhpcy5fY29tbWVudE5vZGVzPWUsZX0sdW5tb3Vu
dENvbXBvbmVudDpmdW5jdGlvbigpe3RoaXMuX2Nsb3NpbmdDb21tZW50PW51bGwsdGhpcy5fY29t
bWVudE5vZGVzPW51bGwscy51bmNhY2hlTm9kZSh0aGlzKX19KSx0LmV4cG9ydHM9bH0sezExMzox
MTMsMTE5OjExOSwxMzc6MTM3LDE0MzoxNDMsMzM6MzMsODo4LDk6OSw5NTo5NX1dLDQzOltmdW5j
dGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXt0aGlzLl9yb290Tm9kZUlEJiZj
LnVwZGF0ZVdyYXBwZXIodGhpcyl9ZnVuY3Rpb24gbyhlKXt2YXIgdD10aGlzLl9jdXJyZW50RWxl
bWVudC5wcm9wcyxuPXMuZXhlY3V0ZU9uQ2hhbmdlKHQsZSk7cmV0dXJuIGwuYXNhcChyLHRoaXMp
LG59dmFyIGk9ZSgxMTMpLGE9ZSgxNDMpLHM9ZSgyMyksdT1lKDMzKSxsPWUoNzEpLGM9KGUoMTM3
KSxlKDE0Mikse2dldEhvc3RQcm9wczpmdW5jdGlvbihlLHQpe251bGwhPXQuZGFuZ2Vyb3VzbHlT
ZXRJbm5lckhUTUw/aSgiOTEiKTp2b2lkIDA7dmFyIG49YSh7fSx0LHt2YWx1ZTp2b2lkIDAsZGVm
YXVsdFZhbHVlOnZvaWQgMCxjaGlsZHJlbjoiIitlLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVl
LG9uQ2hhbmdlOmUuX3dyYXBwZXJTdGF0ZS5vbkNoYW5nZX0pO3JldHVybiBufSxtb3VudFdyYXBw
ZXI6ZnVuY3Rpb24oZSx0KXt2YXIgbj1zLmdldFZhbHVlKHQpLHI9bjtpZihudWxsPT1uKXt2YXIg
YT10LmRlZmF1bHRWYWx1ZSx1PXQuY2hpbGRyZW47bnVsbCE9dSYmKG51bGwhPWE/aSgiOTIiKTp2
b2lkIDAsQXJyYXkuaXNBcnJheSh1KSYmKHUubGVuZ3RoPD0xP3ZvaWQgMDppKCI5MyIpLHU9dVsw
XSksYT0iIit1KSxudWxsPT1hJiYoYT0iIikscj1hfWUuX3dyYXBwZXJTdGF0ZT17aW5pdGlhbFZh
bHVlOiIiK3IsbGlzdGVuZXJzOm51bGwsb25DaGFuZ2U6by5iaW5kKGUpfX0sdXBkYXRlV3JhcHBl
cjpmdW5jdGlvbihlKXt2YXIgdD1lLl9jdXJyZW50RWxlbWVudC5wcm9wcyxuPXUuZ2V0Tm9kZUZy
b21JbnN0YW5jZShlKSxyPXMuZ2V0VmFsdWUodCk7aWYobnVsbCE9cil7dmFyIG89IiIrcjtvIT09
bi52YWx1ZSYmKG4udmFsdWU9byksbnVsbD09dC5kZWZhdWx0VmFsdWUmJihuLmRlZmF1bHRWYWx1
ZT1vKX1udWxsIT10LmRlZmF1bHRWYWx1ZSYmKG4uZGVmYXVsdFZhbHVlPXQuZGVmYXVsdFZhbHVl
KX0scG9zdE1vdW50V3JhcHBlcjpmdW5jdGlvbihlKXt2YXIgdD11LmdldE5vZGVGcm9tSW5zdGFu
Y2UoZSk7dC52YWx1ZT10LnRleHRDb250ZW50fX0pO3QuZXhwb3J0cz1jfSx7MTEzOjExMywxMzc6
MTM3LDE0MjoxNDIsMTQzOjE0MywyMzoyMywzMzozMyw3MTo3MX1dLDQ0OltmdW5jdGlvbihlLHQs
bil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXsiX2hvc3ROb2RlImluIGU/dm9pZCAwOnUo
IjMzIiksIl9ob3N0Tm9kZSJpbiB0P3ZvaWQgMDp1KCIzMyIpO2Zvcih2YXIgbj0wLHI9ZTtyO3I9
ci5faG9zdFBhcmVudCluKys7Zm9yKHZhciBvPTAsaT10O2k7aT1pLl9ob3N0UGFyZW50KW8rKztm
b3IoO24tbz4wOyllPWUuX2hvc3RQYXJlbnQsbi0tO2Zvcig7by1uPjA7KXQ9dC5faG9zdFBhcmVu
dCxvLS07Zm9yKHZhciBhPW47YS0tOyl7aWYoZT09PXQpcmV0dXJuIGU7ZT1lLl9ob3N0UGFyZW50
LHQ9dC5faG9zdFBhcmVudH1yZXR1cm4gbnVsbH1mdW5jdGlvbiBvKGUsdCl7Il9ob3N0Tm9kZSJp
biBlP3ZvaWQgMDp1KCIzNSIpLCJfaG9zdE5vZGUiaW4gdD92b2lkIDA6dSgiMzUiKTtmb3IoO3Q7
KXtpZih0PT09ZSlyZXR1cm4hMDt0PXQuX2hvc3RQYXJlbnR9cmV0dXJuITF9ZnVuY3Rpb24gaShl
KXtyZXR1cm4iX2hvc3ROb2RlImluIGU/dm9pZCAwOnUoIjM2IiksZS5faG9zdFBhcmVudH1mdW5j
dGlvbiBhKGUsdCxuKXtmb3IodmFyIHI9W107ZTspci5wdXNoKGUpLGU9ZS5faG9zdFBhcmVudDt2
YXIgbztmb3Iobz1yLmxlbmd0aDtvLS0gPjA7KXQocltvXSwiY2FwdHVyZWQiLG4pO2ZvcihvPTA7
bzxyLmxlbmd0aDtvKyspdChyW29dLCJidWJibGVkIixuKX1mdW5jdGlvbiBzKGUsdCxuLG8saSl7
Zm9yKHZhciBhPWUmJnQ/cihlLHQpOm51bGwscz1bXTtlJiZlIT09YTspcy5wdXNoKGUpLGU9ZS5f
aG9zdFBhcmVudDtmb3IodmFyIHU9W107dCYmdCE9PWE7KXUucHVzaCh0KSx0PXQuX2hvc3RQYXJl
bnQ7dmFyIGw7Zm9yKGw9MDtsPHMubGVuZ3RoO2wrKyluKHNbbF0sImJ1YmJsZWQiLG8pO2Zvcihs
PXUubGVuZ3RoO2wtLSA+MDspbih1W2xdLCJjYXB0dXJlZCIsaSl9dmFyIHU9ZSgxMTMpO2UoMTM3
KTt0LmV4cG9ydHM9e2lzQW5jZXN0b3I6byxnZXRMb3dlc3RDb21tb25BbmNlc3RvcjpyLGdldFBh
cmVudEluc3RhbmNlOmksdHJhdmVyc2VUd29QaGFzZTphLHRyYXZlcnNlRW50ZXJMZWF2ZTpzfX0s
ezExMzoxMTMsMTM3OjEzN31dLDQ1OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciBy
PWUoMTQzKSxvPWUoMzApLGk9cih7X19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9V
X1dJTExfQkVfRklSRUQ6e1JlYWN0SW5zdGFuY2VNYXA6ZSg1Nyl9fSxvKTt0LmV4cG9ydHM9aX0s
ezE0MzoxNDMsMzA6MzAsNTc6NTd9XSw0NjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiByKCl7dGhpcy5yZWluaXRpYWxpemVUcmFuc2FjdGlvbigpfXZhciBvPWUoMTQzKSxp
PWUoNzEpLGE9ZSg4OSkscz1lKDEyOSksdT17aW5pdGlhbGl6ZTpzLGNsb3NlOmZ1bmN0aW9uKCl7
ZC5pc0JhdGNoaW5nVXBkYXRlcz0hMX19LGw9e2luaXRpYWxpemU6cyxjbG9zZTppLmZsdXNoQmF0
Y2hlZFVwZGF0ZXMuYmluZChpKX0sYz1bbCx1XTtvKHIucHJvdG90eXBlLGEse2dldFRyYW5zYWN0
aW9uV3JhcHBlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gY319KTt2YXIgcD1uZXcgcixkPXtpc0JhdGNo
aW5nVXBkYXRlczohMSxiYXRjaGVkVXBkYXRlczpmdW5jdGlvbihlLHQsbixyLG8saSl7dmFyIGE9
ZC5pc0JhdGNoaW5nVXBkYXRlcztyZXR1cm4gZC5pc0JhdGNoaW5nVXBkYXRlcz0hMCxhP2UodCxu
LHIsbyxpKTpwLnBlcmZvcm0oZSxudWxsLHQsbixyLG8saSl9fTt0LmV4cG9ydHM9ZH0sezEyOTox
MjksMTQzOjE0Myw3MTo3MSw4OTo4OX1dLDQ3OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIHIoKXt4fHwoeD0hMCx5LkV2ZW50RW1pdHRlci5pbmplY3RSZWFjdEV2ZW50TGlz
dGVuZXIoZykseS5FdmVudFBsdWdpbkh1Yi5pbmplY3RFdmVudFBsdWdpbk9yZGVyKHMpLHkuRXZl
bnRQbHVnaW5VdGlscy5pbmplY3RDb21wb25lbnRUcmVlKGQpLHkuRXZlbnRQbHVnaW5VdGlscy5p
bmplY3RUcmVlVHJhdmVyc2FsKGgpLHkuRXZlbnRQbHVnaW5IdWIuaW5qZWN0RXZlbnRQbHVnaW5z
QnlOYW1lKHtTaW1wbGVFdmVudFBsdWdpbjpFLEVudGVyTGVhdmVFdmVudFBsdWdpbjp1LENoYW5n
ZUV2ZW50UGx1Z2luOmEsU2VsZWN0RXZlbnRQbHVnaW46YixCZWZvcmVJbnB1dEV2ZW50UGx1Z2lu
Oml9KSx5Lkhvc3RDb21wb25lbnQuaW5qZWN0R2VuZXJpY0NvbXBvbmVudENsYXNzKHApLHkuSG9z
dENvbXBvbmVudC5pbmplY3RUZXh0Q29tcG9uZW50Q2xhc3MobSkseS5ET01Qcm9wZXJ0eS5pbmpl
Y3RET01Qcm9wZXJ0eUNvbmZpZyhvKSx5LkRPTVByb3BlcnR5LmluamVjdERPTVByb3BlcnR5Q29u
ZmlnKGwpLHkuRE9NUHJvcGVydHkuaW5qZWN0RE9NUHJvcGVydHlDb25maWcoQykseS5FbXB0eUNv
bXBvbmVudC5pbmplY3RFbXB0eUNvbXBvbmVudEZhY3RvcnkoZnVuY3Rpb24oZSl7cmV0dXJuIG5l
dyBmKGUpfSkseS5VcGRhdGVzLmluamVjdFJlY29uY2lsZVRyYW5zYWN0aW9uKF8pLHkuVXBkYXRl
cy5pbmplY3RCYXRjaGluZ1N0cmF0ZWd5KHYpLHkuQ29tcG9uZW50LmluamVjdEVudmlyb25tZW50
KGMpKX12YXIgbz1lKDEpLGk9ZSgzKSxhPWUoNykscz1lKDE0KSx1PWUoMTUpLGw9ZSgyMSksYz1l
KDI3KSxwPWUoMzEpLGQ9ZSgzMyksZj1lKDM1KSxoPWUoNDQpLG09ZSg0Miksdj1lKDQ2KSxnPWUo
NTIpLHk9ZSg1NSksXz1lKDY1KSxDPWUoNzMpLGI9ZSg3NCksRT1lKDc1KSx4PSExO3QuZXhwb3J0
cz17aW5qZWN0OnJ9fSx7MToxLDE0OjE0LDE1OjE1LDIxOjIxLDI3OjI3LDM6MywzMTozMSwzMzoz
MywzNTozNSw0Mjo0Miw0NDo0NCw0Njo0Niw1Mjo1Miw1NTo1NSw2NTo2NSw3OjcsNzM6NzMsNzQ6
NzQsNzU6NzV9XSw0ODpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj0iZnVuY3Rp
b24iPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuZm9yJiZTeW1ib2wuZm9yKCJyZWFjdC5lbGVtZW50
Iil8fDYwMTAzO3QuZXhwb3J0cz1yfSx7fV0sNDk6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7dmFyIHIsbz17aW5qZWN0RW1wdHlDb21wb25lbnRGYWN0b3J5OmZ1bmN0aW9uKGUpe3I9ZX19
LGk9e2NyZWF0ZTpmdW5jdGlvbihlKXtyZXR1cm4gcihlKX19O2kuaW5qZWN0aW9uPW8sdC5leHBv
cnRzPWl9LHt9XSw1MDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUs
dCxuKXt0cnl7dChuKX1jYXRjaChlKXtudWxsPT09byYmKG89ZSl9fXZhciBvPW51bGwsaT17aW52
b2tlR3VhcmRlZENhbGxiYWNrOnIsaW52b2tlR3VhcmRlZENhbGxiYWNrV2l0aENhdGNoOnIscmV0
aHJvd0NhdWdodEVycm9yOmZ1bmN0aW9uKCl7aWYobyl7dmFyIGU9bzt0aHJvdyBvPW51bGwsZX19
fTt0LmV4cG9ydHM9aX0se31dLDUxOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIoZSl7by5lbnF1ZXVlRXZlbnRzKGUpLG8ucHJvY2Vzc0V2ZW50UXVldWUoITEpfXZhciBv
PWUoMTYpLGk9e2hhbmRsZVRvcExldmVsOmZ1bmN0aW9uKGUsdCxuLGkpe3ZhciBhPW8uZXh0cmFj
dEV2ZW50cyhlLHQsbixpKTtyKGEpfX07dC5leHBvcnRzPWl9LHsxNjoxNn1dLDUyOltmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7Zm9yKDtlLl9ob3N0UGFyZW50Oyll
PWUuX2hvc3RQYXJlbnQ7dmFyIHQ9cC5nZXROb2RlRnJvbUluc3RhbmNlKGUpLG49dC5wYXJlbnRO
b2RlO3JldHVybiBwLmdldENsb3Nlc3RJbnN0YW5jZUZyb21Ob2RlKG4pfWZ1bmN0aW9uIG8oZSx0
KXt0aGlzLnRvcExldmVsVHlwZT1lLHRoaXMubmF0aXZlRXZlbnQ9dCx0aGlzLmFuY2VzdG9ycz1b
XX1mdW5jdGlvbiBpKGUpe3ZhciB0PWYoZS5uYXRpdmVFdmVudCksbj1wLmdldENsb3Nlc3RJbnN0
YW5jZUZyb21Ob2RlKHQpLG89bjtkbyBlLmFuY2VzdG9ycy5wdXNoKG8pLG89byYmcihvKTt3aGls
ZShvKTtmb3IodmFyIGk9MDtpPGUuYW5jZXN0b3JzLmxlbmd0aDtpKyspbj1lLmFuY2VzdG9yc1tp
XSxtLl9oYW5kbGVUb3BMZXZlbChlLnRvcExldmVsVHlwZSxuLGUubmF0aXZlRXZlbnQsZihlLm5h
dGl2ZUV2ZW50KSl9ZnVuY3Rpb24gYShlKXt2YXIgdD1oKHdpbmRvdyk7ZSh0KX12YXIgcz1lKDE0
MyksdT1lKDEyMiksbD1lKDEyMyksYz1lKDI0KSxwPWUoMzMpLGQ9ZSg3MSksZj1lKDEwMiksaD1l
KDEzNCk7cyhvLnByb3RvdHlwZSx7ZGVzdHJ1Y3RvcjpmdW5jdGlvbigpe3RoaXMudG9wTGV2ZWxU
eXBlPW51bGwsdGhpcy5uYXRpdmVFdmVudD1udWxsLHRoaXMuYW5jZXN0b3JzLmxlbmd0aD0wfX0p
LGMuYWRkUG9vbGluZ1RvKG8sYy50d29Bcmd1bWVudFBvb2xlcik7dmFyIG09e19lbmFibGVkOiEw
LF9oYW5kbGVUb3BMZXZlbDpudWxsLFdJTkRPV19IQU5ETEU6bC5jYW5Vc2VET00/d2luZG93Om51
bGwsc2V0SGFuZGxlVG9wTGV2ZWw6ZnVuY3Rpb24oZSl7bS5faGFuZGxlVG9wTGV2ZWw9ZX0sc2V0
RW5hYmxlZDpmdW5jdGlvbihlKXttLl9lbmFibGVkPSEhZX0saXNFbmFibGVkOmZ1bmN0aW9uKCl7
cmV0dXJuIG0uX2VuYWJsZWR9LHRyYXBCdWJibGVkRXZlbnQ6ZnVuY3Rpb24oZSx0LG4pe3JldHVy
biBuP3UubGlzdGVuKG4sdCxtLmRpc3BhdGNoRXZlbnQuYmluZChudWxsLGUpKTpudWxsfSx0cmFw
Q2FwdHVyZWRFdmVudDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIG4/dS5jYXB0dXJlKG4sdCxtLmRp
c3BhdGNoRXZlbnQuYmluZChudWxsLGUpKTpudWxsfSxtb25pdG9yU2Nyb2xsVmFsdWU6ZnVuY3Rp
b24oZSl7dmFyIHQ9YS5iaW5kKG51bGwsZSk7dS5saXN0ZW4od2luZG93LCJzY3JvbGwiLHQpfSxk
aXNwYXRjaEV2ZW50OmZ1bmN0aW9uKGUsdCl7aWYobS5fZW5hYmxlZCl7dmFyIG49by5nZXRQb29s
ZWQoZSx0KTt0cnl7ZC5iYXRjaGVkVXBkYXRlcyhpLG4pfWZpbmFsbHl7by5yZWxlYXNlKG4pfX19
fTt0LmV4cG9ydHM9bX0sezEwMjoxMDIsMTIyOjEyMiwxMjM6MTIzLDEzNDoxMzQsMTQzOjE0Mywy
NDoyNCwzMzozMyw3MTo3MX1dLDUzOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciBy
PXtsb2dUb3BMZXZlbFJlbmRlcnM6ITF9O3QuZXhwb3J0cz1yfSx7fV0sNTQ6W2Z1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gdT92b2lkIDA6YSgiMTExIixl
LnR5cGUpLG5ldyB1KGUpfWZ1bmN0aW9uIG8oZSl7cmV0dXJuIG5ldyBjKGUpfWZ1bmN0aW9uIGko
ZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBjfXZhciBhPWUoMTEzKSxzPWUoMTQzKSx1PShlKDEzNyks
bnVsbCksbD17fSxjPW51bGwscD17aW5qZWN0R2VuZXJpY0NvbXBvbmVudENsYXNzOmZ1bmN0aW9u
KGUpe3U9ZX0saW5qZWN0VGV4dENvbXBvbmVudENsYXNzOmZ1bmN0aW9uKGUpe2M9ZX0saW5qZWN0
Q29tcG9uZW50Q2xhc3NlczpmdW5jdGlvbihlKXtzKGwsZSl9fSxkPXtjcmVhdGVJbnRlcm5hbENv
bXBvbmVudDpyLGNyZWF0ZUluc3RhbmNlRm9yVGV4dDpvLGlzVGV4dENvbXBvbmVudDppLGluamVj
dGlvbjpwfTt0LmV4cG9ydHM9ZH0sezExMzoxMTMsMTM3OjEzNywxNDM6MTQzfV0sNTU6W2Z1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSgxMSksbz1lKDE2KSxpPWUoMTgpLGE9ZSgy
OCkscz1lKDQ5KSx1PWUoMjUpLGw9ZSg1NCksYz1lKDcxKSxwPXtDb21wb25lbnQ6YS5pbmplY3Rp
b24sRE9NUHJvcGVydHk6ci5pbmplY3Rpb24sRW1wdHlDb21wb25lbnQ6cy5pbmplY3Rpb24sRXZl
bnRQbHVnaW5IdWI6by5pbmplY3Rpb24sRXZlbnRQbHVnaW5VdGlsczppLmluamVjdGlvbixFdmVu
dEVtaXR0ZXI6dS5pbmplY3Rpb24sSG9zdENvbXBvbmVudDpsLmluamVjdGlvbixVcGRhdGVzOmMu
aW5qZWN0aW9ufTt0LmV4cG9ydHM9cH0sezExOjExLDE2OjE2LDE4OjE4LDI1OjI1LDI4OjI4LDQ5
OjQ5LDU0OjU0LDcxOjcxfV0sNTY6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gcihlKXtyZXR1cm4gaShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsZSl9dmFyIG89ZSg0MSks
aT1lKDEyNiksYT1lKDEzMSkscz1lKDEzMiksdT17aGFzU2VsZWN0aW9uQ2FwYWJpbGl0aWVzOmZ1
bmN0aW9uKGUpe3ZhciB0PWUmJmUubm9kZU5hbWUmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTty
ZXR1cm4gdCYmKCJpbnB1dCI9PT10JiYidGV4dCI9PT1lLnR5cGV8fCJ0ZXh0YXJlYSI9PT10fHwi
dHJ1ZSI9PT1lLmNvbnRlbnRFZGl0YWJsZSl9LGdldFNlbGVjdGlvbkluZm9ybWF0aW9uOmZ1bmN0
aW9uKCl7dmFyIGU9cygpO3JldHVybntmb2N1c2VkRWxlbTplLHNlbGVjdGlvblJhbmdlOnUuaGFz
U2VsZWN0aW9uQ2FwYWJpbGl0aWVzKGUpP3UuZ2V0U2VsZWN0aW9uKGUpOm51bGx9fSxyZXN0b3Jl
U2VsZWN0aW9uOmZ1bmN0aW9uKGUpe3ZhciB0PXMoKSxuPWUuZm9jdXNlZEVsZW0sbz1lLnNlbGVj
dGlvblJhbmdlO3QhPT1uJiZyKG4pJiYodS5oYXNTZWxlY3Rpb25DYXBhYmlsaXRpZXMobikmJnUu
c2V0U2VsZWN0aW9uKG4sbyksYShuKSl9LGdldFNlbGVjdGlvbjpmdW5jdGlvbihlKXt2YXIgdDtp
Zigic2VsZWN0aW9uU3RhcnQiaW4gZSl0PXtzdGFydDplLnNlbGVjdGlvblN0YXJ0LGVuZDplLnNl
bGVjdGlvbkVuZH07ZWxzZSBpZihkb2N1bWVudC5zZWxlY3Rpb24mJmUubm9kZU5hbWUmJiJpbnB1
dCI9PT1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpe3ZhciBuPWRvY3VtZW50LnNlbGVjdGlvbi5j
cmVhdGVSYW5nZSgpO24ucGFyZW50RWxlbWVudCgpPT09ZSYmKHQ9e3N0YXJ0Oi1uLm1vdmVTdGFy
dCgiY2hhcmFjdGVyIiwtZS52YWx1ZS5sZW5ndGgpLGVuZDotbi5tb3ZlRW5kKCJjaGFyYWN0ZXIi
LC1lLnZhbHVlLmxlbmd0aCl9KX1lbHNlIHQ9by5nZXRPZmZzZXRzKGUpO3JldHVybiB0fHx7c3Rh
cnQ6MCxlbmQ6MH19LHNldFNlbGVjdGlvbjpmdW5jdGlvbihlLHQpe3ZhciBuPXQuc3RhcnQscj10
LmVuZDtpZih2b2lkIDA9PT1yJiYocj1uKSwic2VsZWN0aW9uU3RhcnQiaW4gZSllLnNlbGVjdGlv
blN0YXJ0PW4sZS5zZWxlY3Rpb25FbmQ9TWF0aC5taW4ocixlLnZhbHVlLmxlbmd0aCk7ZWxzZSBp
Zihkb2N1bWVudC5zZWxlY3Rpb24mJmUubm9kZU5hbWUmJiJpbnB1dCI9PT1lLm5vZGVOYW1lLnRv
TG93ZXJDYXNlKCkpe3ZhciBpPWUuY3JlYXRlVGV4dFJhbmdlKCk7aS5jb2xsYXBzZSghMCksaS5t
b3ZlU3RhcnQoImNoYXJhY3RlciIsbiksaS5tb3ZlRW5kKCJjaGFyYWN0ZXIiLHItbiksaS5zZWxl
Y3QoKX1lbHNlIG8uc2V0T2Zmc2V0cyhlLHQpfX07dC5leHBvcnRzPXV9LHsxMjY6MTI2LDEzMTox
MzEsMTMyOjEzMiw0MTo0MX1dLDU3OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciBy
PXtyZW1vdmU6ZnVuY3Rpb24oZSl7ZS5fcmVhY3RJbnRlcm5hbEluc3RhbmNlPXZvaWQgMH0sZ2V0
OmZ1bmN0aW9uKGUpe3JldHVybiBlLl9yZWFjdEludGVybmFsSW5zdGFuY2V9LGhhczpmdW5jdGlv
bihlKXtyZXR1cm4gdm9pZCAwIT09ZS5fcmVhY3RJbnRlcm5hbEluc3RhbmNlfSxzZXQ6ZnVuY3Rp
b24oZSx0KXtlLl9yZWFjdEludGVybmFsSW5zdGFuY2U9dH19O3QuZXhwb3J0cz1yfSx7fV0sNTg6
W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bnVsbDt0LmV4cG9ydHM9e2RlYnVn
VG9vbDpyfX0se31dLDU5OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoOTIp
LG89L1wvPz4vLGk9L148XCFcLVwtLyxhPXtDSEVDS1NVTV9BVFRSX05BTUU6ImRhdGEtcmVhY3Qt
Y2hlY2tzdW0iLGFkZENoZWNrc3VtVG9NYXJrdXA6ZnVuY3Rpb24oZSl7dmFyIHQ9cihlKTtyZXR1
cm4gaS50ZXN0KGUpP2U6ZS5yZXBsYWNlKG8sIiAiK2EuQ0hFQ0tTVU1fQVRUUl9OQU1FKyc9Iicr
dCsnIiQmJyl9LGNhblJldXNlTWFya3VwOmZ1bmN0aW9uKGUsdCl7dmFyIG49dC5nZXRBdHRyaWJ1
dGUoYS5DSEVDS1NVTV9BVFRSX05BTUUpO249biYmcGFyc2VJbnQobiwxMCk7dmFyIG89cihlKTty
ZXR1cm4gbz09PW59fTt0LmV4cG9ydHM9YX0sezkyOjkyfV0sNjA6W2Z1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe2Zvcih2YXIgbj1NYXRoLm1pbihlLmxlbmd0aCx0
Lmxlbmd0aCkscj0wO3I8bjtyKyspaWYoZS5jaGFyQXQocikhPT10LmNoYXJBdChyKSlyZXR1cm4g
cjtyZXR1cm4gZS5sZW5ndGg9PT10Lmxlbmd0aD8tMTpufWZ1bmN0aW9uIG8oZSl7cmV0dXJuIGU/
ZS5ub2RlVHlwZT09PUE/ZS5kb2N1bWVudEVsZW1lbnQ6ZS5maXJzdENoaWxkOm51bGx9ZnVuY3Rp
b24gaShlKXtyZXR1cm4gZS5nZXRBdHRyaWJ1dGUmJmUuZ2V0QXR0cmlidXRlKEkpfHwiIn1mdW5j
dGlvbiBhKGUsdCxuLHIsbyl7dmFyIGk7aWYoYi5sb2dUb3BMZXZlbFJlbmRlcnMpe3ZhciBhPWUu
X2N1cnJlbnRFbGVtZW50LnByb3BzLmNoaWxkLHM9YS50eXBlO2k9IlJlYWN0IG1vdW50OiAiKygi
c3RyaW5nIj09dHlwZW9mIHM/czpzLmRpc3BsYXlOYW1lfHxzLm5hbWUpLGNvbnNvbGUudGltZShp
KX12YXIgdT13Lm1vdW50Q29tcG9uZW50KGUsbixudWxsLF8oZSx0KSxvLDApO2kmJmNvbnNvbGUu
dGltZUVuZChpKSxlLl9yZW5kZXJlZENvbXBvbmVudC5fdG9wTGV2ZWxXcmFwcGVyPWUsQi5fbW91
bnRJbWFnZUludG9Ob2RlKHUsdCxlLHIsbil9ZnVuY3Rpb24gcyhlLHQsbixyKXt2YXIgbz1rLlJl
YWN0UmVjb25jaWxlVHJhbnNhY3Rpb24uZ2V0UG9vbGVkKCFuJiZDLnVzZUNyZWF0ZUVsZW1lbnQp
O28ucGVyZm9ybShhLG51bGwsZSx0LG8sbixyKSxrLlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24u
cmVsZWFzZShvKX1mdW5jdGlvbiB1KGUsdCxuKXtmb3Iody51bm1vdW50Q29tcG9uZW50KGUsbiks
dC5ub2RlVHlwZT09PUEmJih0PXQuZG9jdW1lbnRFbGVtZW50KTt0Lmxhc3RDaGlsZDspdC5yZW1v
dmVDaGlsZCh0Lmxhc3RDaGlsZCl9ZnVuY3Rpb24gbChlKXt2YXIgdD1vKGUpO2lmKHQpe3ZhciBu
PXkuZ2V0SW5zdGFuY2VGcm9tTm9kZSh0KTtyZXR1cm4hKCFufHwhbi5faG9zdFBhcmVudCl9fWZ1
bmN0aW9uIGMoZSl7cmV0dXJuISghZXx8ZS5ub2RlVHlwZSE9PVImJmUubm9kZVR5cGUhPT1BJiZl
Lm5vZGVUeXBlIT09RCl9ZnVuY3Rpb24gcChlKXt2YXIgdD1vKGUpLG49dCYmeS5nZXRJbnN0YW5j
ZUZyb21Ob2RlKHQpO3JldHVybiBuJiYhbi5faG9zdFBhcmVudD9uOm51bGx9ZnVuY3Rpb24gZChl
KXt2YXIgdD1wKGUpO3JldHVybiB0P3QuX2hvc3RDb250YWluZXJJbmZvLl90b3BMZXZlbFdyYXBw
ZXI6bnVsbH12YXIgZj1lKDExMyksaD1lKDkpLG09ZSgxMSksdj1lKDEyMSksZz1lKDI1KSx5PShl
KDEyMCksZSgzMykpLF89ZSgzNCksQz1lKDM2KSxiPWUoNTMpLEU9ZSg1NykseD0oZSg1OCksZSg1
OSkpLHc9ZSg2NiksVD1lKDcwKSxrPWUoNzEpLFA9ZSgxMzApLE49ZSgxMDkpLFM9KGUoMTM3KSxl
KDExNSkpLE09ZSgxMTcpLEk9KGUoMTQyKSxtLklEX0FUVFJJQlVURV9OQU1FKSxPPW0uUk9PVF9B
VFRSSUJVVEVfTkFNRSxSPTEsQT05LEQ9MTEsTD17fSxVPTEsRj1mdW5jdGlvbigpe3RoaXMucm9v
dElEPVUrK307Ri5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudD17fSxGLnByb3RvdHlwZS5yZW5k
ZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcm9wcy5jaGlsZH0sRi5pc1JlYWN0VG9wTGV2ZWxX
cmFwcGVyPSEwO3ZhciBCPXtUb3BMZXZlbFdyYXBwZXI6RixfaW5zdGFuY2VzQnlSZWFjdFJvb3RJ
RDpMLHNjcm9sbE1vbml0b3I6ZnVuY3Rpb24oZSx0KXt0KCl9LF91cGRhdGVSb290Q29tcG9uZW50
OmZ1bmN0aW9uKGUsdCxuLHIsbyl7cmV0dXJuIEIuc2Nyb2xsTW9uaXRvcihyLGZ1bmN0aW9uKCl7
VC5lbnF1ZXVlRWxlbWVudEludGVybmFsKGUsdCxuKSxvJiZULmVucXVldWVDYWxsYmFja0ludGVy
bmFsKGUsbyl9KSxlfSxfcmVuZGVyTmV3Um9vdENvbXBvbmVudDpmdW5jdGlvbihlLHQsbixyKXtj
KHQpP3ZvaWQgMDpmKCIzNyIpLGcuZW5zdXJlU2Nyb2xsVmFsdWVNb25pdG9yaW5nKCk7dmFyIG89
TihlLCExKTtrLmJhdGNoZWRVcGRhdGVzKHMsbyx0LG4scik7dmFyIGk9by5faW5zdGFuY2Uucm9v
dElEO3JldHVybiBMW2ldPW8sb30scmVuZGVyU3VidHJlZUludG9Db250YWluZXI6ZnVuY3Rpb24o
ZSx0LG4scil7cmV0dXJuIG51bGwhPWUmJkUuaGFzKGUpP3ZvaWQgMDpmKCIzOCIpLEIuX3JlbmRl
clN1YnRyZWVJbnRvQ29udGFpbmVyKGUsdCxuLHIpfSxfcmVuZGVyU3VidHJlZUludG9Db250YWlu
ZXI6ZnVuY3Rpb24oZSx0LG4scil7VC52YWxpZGF0ZUNhbGxiYWNrKHIsIlJlYWN0RE9NLnJlbmRl
ciIpLHYuaXNWYWxpZEVsZW1lbnQodCk/dm9pZCAwOmYoIjM5Iiwic3RyaW5nIj09dHlwZW9mIHQ/
IiBJbnN0ZWFkIG9mIHBhc3NpbmcgYSBzdHJpbmcgbGlrZSAnZGl2JywgcGFzcyBSZWFjdC5jcmVh
dGVFbGVtZW50KCdkaXYnKSBvciA8ZGl2IC8+LiI6ImZ1bmN0aW9uIj09dHlwZW9mIHQ/IiBJbnN0
ZWFkIG9mIHBhc3NpbmcgYSBjbGFzcyBsaWtlIEZvbywgcGFzcyBSZWFjdC5jcmVhdGVFbGVtZW50
KEZvbykgb3IgPEZvbyAvPi4iOm51bGwhPXQmJnZvaWQgMCE9PXQucHJvcHM/IiBUaGlzIG1heSBi
ZSBjYXVzZWQgYnkgdW5pbnRlbnRpb25hbGx5IGxvYWRpbmcgdHdvIGluZGVwZW5kZW50IGNvcGll
cyBvZiBSZWFjdC4iOiIiKTt2YXIgYSxzPXYuY3JlYXRlRWxlbWVudChGLHtjaGlsZDp0fSk7aWYo
ZSl7dmFyIHU9RS5nZXQoZSk7YT11Ll9wcm9jZXNzQ2hpbGRDb250ZXh0KHUuX2NvbnRleHQpfWVs
c2UgYT1QO3ZhciBjPWQobik7aWYoYyl7dmFyIHA9Yy5fY3VycmVudEVsZW1lbnQsaD1wLnByb3Bz
LmNoaWxkO2lmKE0oaCx0KSl7dmFyIG09Yy5fcmVuZGVyZWRDb21wb25lbnQuZ2V0UHVibGljSW5z
dGFuY2UoKSxnPXImJmZ1bmN0aW9uKCl7ci5jYWxsKG0pfTtyZXR1cm4gQi5fdXBkYXRlUm9vdENv
bXBvbmVudChjLHMsYSxuLGcpLG19Qi51bm1vdW50Q29tcG9uZW50QXROb2RlKG4pfXZhciB5PW8o
biksXz15JiYhIWkoeSksQz1sKG4pLGI9XyYmIWMmJiFDLHg9Qi5fcmVuZGVyTmV3Um9vdENvbXBv
bmVudChzLG4sYixhKS5fcmVuZGVyZWRDb21wb25lbnQuZ2V0UHVibGljSW5zdGFuY2UoKTtyZXR1
cm4gciYmci5jYWxsKHgpLHh9LHJlbmRlcjpmdW5jdGlvbihlLHQsbil7cmV0dXJuIEIuX3JlbmRl
clN1YnRyZWVJbnRvQ29udGFpbmVyKG51bGwsZSx0LG4pfSx1bm1vdW50Q29tcG9uZW50QXROb2Rl
OmZ1bmN0aW9uKGUpe2MoZSk/dm9pZCAwOmYoIjQwIik7dmFyIHQ9ZChlKTtyZXR1cm4gdD8oZGVs
ZXRlIExbdC5faW5zdGFuY2Uucm9vdElEXSxrLmJhdGNoZWRVcGRhdGVzKHUsdCxlLCExKSwhMCk6
KGwoZSksMT09PWUubm9kZVR5cGUmJmUuaGFzQXR0cmlidXRlKE8pLCExKX0sX21vdW50SW1hZ2VJ
bnRvTm9kZTpmdW5jdGlvbihlLHQsbixpLGEpe2lmKGModCk/dm9pZCAwOmYoIjQxIiksaSl7dmFy
IHM9byh0KTtpZih4LmNhblJldXNlTWFya3VwKGUscykpcmV0dXJuIHZvaWQgeS5wcmVjYWNoZU5v
ZGUobixzKTt2YXIgdT1zLmdldEF0dHJpYnV0ZSh4LkNIRUNLU1VNX0FUVFJfTkFNRSk7cy5yZW1v
dmVBdHRyaWJ1dGUoeC5DSEVDS1NVTV9BVFRSX05BTUUpO3ZhciBsPXMub3V0ZXJIVE1MO3Muc2V0
QXR0cmlidXRlKHguQ0hFQ0tTVU1fQVRUUl9OQU1FLHUpO3ZhciBwPWUsZD1yKHAsbCksbT0iIChj
bGllbnQpICIrcC5zdWJzdHJpbmcoZC0yMCxkKzIwKSsiXG4gKHNlcnZlcikgIitsLnN1YnN0cmlu
ZyhkLTIwLGQrMjApO3Qubm9kZVR5cGU9PT1BP2YoIjQyIixtKTp2b2lkIDB9aWYodC5ub2RlVHlw
ZT09PUE/ZigiNDMiKTp2b2lkIDAsYS51c2VDcmVhdGVFbGVtZW50KXtmb3IoO3QubGFzdENoaWxk
Oyl0LnJlbW92ZUNoaWxkKHQubGFzdENoaWxkKTtoLmluc2VydFRyZWVCZWZvcmUodCxlLG51bGwp
fWVsc2UgUyh0LGUpLHkucHJlY2FjaGVOb2RlKG4sdC5maXJzdENoaWxkKX19O3QuZXhwb3J0cz1C
fSx7MTA5OjEwOSwxMToxMSwxMTM6MTEzLDExNToxMTUsMTE3OjExNywxMjA6MTIwLDEyMToxMjEs
MTMwOjEzMCwxMzc6MTM3LDE0MjoxNDIsMjU6MjUsMzM6MzMsMzQ6MzQsMzY6MzYsNTM6NTMsNTc6
NTcsNTg6NTgsNTk6NTksNjY6NjYsNzA6NzAsNzE6NzEsOTo5fV0sNjE6W2Z1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbil7cmV0dXJue3R5cGU6IklOU0VSVF9NQVJL
VVAiLGNvbnRlbnQ6ZSxmcm9tSW5kZXg6bnVsbCxmcm9tTm9kZTpudWxsLHRvSW5kZXg6bixhZnRl
ck5vZGU6dH19ZnVuY3Rpb24gbyhlLHQsbil7cmV0dXJue3R5cGU6Ik1PVkVfRVhJU1RJTkciLGNv
bnRlbnQ6bnVsbCxmcm9tSW5kZXg6ZS5fbW91bnRJbmRleCxmcm9tTm9kZTpkLmdldEhvc3ROb2Rl
KGUpLHRvSW5kZXg6bixhZnRlck5vZGU6dH19ZnVuY3Rpb24gaShlLHQpe3JldHVybnt0eXBlOiJS
RU1PVkVfTk9ERSIsY29udGVudDpudWxsLGZyb21JbmRleDplLl9tb3VudEluZGV4LGZyb21Ob2Rl
OnQsdG9JbmRleDpudWxsLGFmdGVyTm9kZTpudWxsfX1mdW5jdGlvbiBhKGUpe3JldHVybnt0eXBl
OiJTRVRfTUFSS1VQIixjb250ZW50OmUsZnJvbUluZGV4Om51bGwsZnJvbU5vZGU6bnVsbCx0b0lu
ZGV4Om51bGwsYWZ0ZXJOb2RlOm51bGx9fWZ1bmN0aW9uIHMoZSl7cmV0dXJue3R5cGU6IlRFWFRf
Q09OVEVOVCIsY29udGVudDplLGZyb21JbmRleDpudWxsLGZyb21Ob2RlOm51bGwsdG9JbmRleDpu
dWxsLGFmdGVyTm9kZTpudWxsfX1mdW5jdGlvbiB1KGUsdCl7cmV0dXJuIHQmJihlPWV8fFtdLGUu
cHVzaCh0KSksZX1mdW5jdGlvbiBsKGUsdCl7cC5wcm9jZXNzQ2hpbGRyZW5VcGRhdGVzKGUsdCl9
dmFyIGM9ZSgxMTMpLHA9ZSgyOCksZD0oZSg1NyksZSg1OCksZSgxMjApLGUoNjYpKSxmPWUoMjYp
LGg9KGUoMTI5KSxlKDk3KSksbT0oZSgxMzcpLHtNaXhpbjp7X3JlY29uY2lsZXJJbnN0YW50aWF0
ZUNoaWxkcmVuOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZi5pbnN0YW50aWF0ZUNoaWxkcmVuKGUs
dCxuKX0sX3JlY29uY2lsZXJVcGRhdGVDaGlsZHJlbjpmdW5jdGlvbihlLHQsbixyLG8saSl7dmFy
IGEscz0wO3JldHVybiBhPWgodCxzKSxmLnVwZGF0ZUNoaWxkcmVuKGUsYSxuLHIsbyx0aGlzLHRo
aXMuX2hvc3RDb250YWluZXJJbmZvLGkscyksYX0sbW91bnRDaGlsZHJlbjpmdW5jdGlvbihlLHQs
bil7dmFyIHI9dGhpcy5fcmVjb25jaWxlckluc3RhbnRpYXRlQ2hpbGRyZW4oZSx0LG4pO3RoaXMu
X3JlbmRlcmVkQ2hpbGRyZW49cjt2YXIgbz1bXSxpPTA7Zm9yKHZhciBhIGluIHIpaWYoci5oYXNP
d25Qcm9wZXJ0eShhKSl7dmFyIHM9clthXSx1PTAsbD1kLm1vdW50Q29tcG9uZW50KHMsdCx0aGlz
LHRoaXMuX2hvc3RDb250YWluZXJJbmZvLG4sdSk7cy5fbW91bnRJbmRleD1pKyssby5wdXNoKGwp
fXJldHVybiBvfSx1cGRhdGVUZXh0Q29udGVudDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLl9yZW5k
ZXJlZENoaWxkcmVuO2YudW5tb3VudENoaWxkcmVuKHQsITEpO2Zvcih2YXIgbiBpbiB0KXQuaGFz
T3duUHJvcGVydHkobikmJmMoIjExOCIpO3ZhciByPVtzKGUpXTtsKHRoaXMscil9LHVwZGF0ZU1h
cmt1cDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLl9yZW5kZXJlZENoaWxkcmVuO2YudW5tb3VudENo
aWxkcmVuKHQsITEpO2Zvcih2YXIgbiBpbiB0KXQuaGFzT3duUHJvcGVydHkobikmJmMoIjExOCIp
O3ZhciByPVthKGUpXTtsKHRoaXMscil9LHVwZGF0ZUNoaWxkcmVuOmZ1bmN0aW9uKGUsdCxuKXt0
aGlzLl91cGRhdGVDaGlsZHJlbihlLHQsbil9LF91cGRhdGVDaGlsZHJlbjpmdW5jdGlvbihlLHQs
bil7dmFyIHI9dGhpcy5fcmVuZGVyZWRDaGlsZHJlbixvPXt9LGk9W10sYT10aGlzLl9yZWNvbmNp
bGVyVXBkYXRlQ2hpbGRyZW4ocixlLGksbyx0LG4pO2lmKGF8fHIpe3ZhciBzLGM9bnVsbCxwPTAs
Zj0wLGg9MCxtPW51bGw7Zm9yKHMgaW4gYSlpZihhLmhhc093blByb3BlcnR5KHMpKXt2YXIgdj1y
JiZyW3NdLGc9YVtzXTt2PT09Zz8oYz11KGMsdGhpcy5tb3ZlQ2hpbGQodixtLHAsZikpLGY9TWF0
aC5tYXgodi5fbW91bnRJbmRleCxmKSx2Ll9tb3VudEluZGV4PXApOih2JiYoZj1NYXRoLm1heCh2
Ll9tb3VudEluZGV4LGYpKSxjPXUoYyx0aGlzLl9tb3VudENoaWxkQXRJbmRleChnLGlbaF0sbSxw
LHQsbikpLGgrKykscCsrLG09ZC5nZXRIb3N0Tm9kZShnKX1mb3IocyBpbiBvKW8uaGFzT3duUHJv
cGVydHkocykmJihjPXUoYyx0aGlzLl91bm1vdW50Q2hpbGQocltzXSxvW3NdKSkpO2MmJmwodGhp
cyxjKSx0aGlzLl9yZW5kZXJlZENoaWxkcmVuPWF9fSx1bm1vdW50Q2hpbGRyZW46ZnVuY3Rpb24o
ZSl7dmFyIHQ9dGhpcy5fcmVuZGVyZWRDaGlsZHJlbjtmLnVubW91bnRDaGlsZHJlbih0LGUpLHRo
aXMuX3JlbmRlcmVkQ2hpbGRyZW49bnVsbH0sbW92ZUNoaWxkOmZ1bmN0aW9uKGUsdCxuLHIpe2lm
KGUuX21vdW50SW5kZXg8cilyZXR1cm4gbyhlLHQsbil9LGNyZWF0ZUNoaWxkOmZ1bmN0aW9uKGUs
dCxuKXtyZXR1cm4gcihuLHQsZS5fbW91bnRJbmRleCl9LHJlbW92ZUNoaWxkOmZ1bmN0aW9uKGUs
dCl7cmV0dXJuIGkoZSx0KX0sX21vdW50Q2hpbGRBdEluZGV4OmZ1bmN0aW9uKGUsdCxuLHIsbyxp
KXtyZXR1cm4gZS5fbW91bnRJbmRleD1yLHRoaXMuY3JlYXRlQ2hpbGQoZSxuLHQpfSxfdW5tb3Vu
dENoaWxkOmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5yZW1vdmVDaGlsZChlLHQpO3JldHVybiBl
Ll9tb3VudEluZGV4PW51bGwsbn19fSk7dC5leHBvcnRzPW19LHsxMTM6MTEzLDEyMDoxMjAsMTI5
OjEyOSwxMzc6MTM3LDI2OjI2LDI4OjI4LDU3OjU3LDU4OjU4LDY2OjY2LDk3Ojk3fV0sNjI6W2Z1
bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSgxMTMpLG89ZSgxMjEpLGk9KGUoMTM3
KSx7SE9TVDowLENPTVBPU0lURToxLEVNUFRZOjIsZ2V0VHlwZTpmdW5jdGlvbihlKXtyZXR1cm4g
bnVsbD09PWV8fGU9PT0hMT9pLkVNUFRZOm8uaXNWYWxpZEVsZW1lbnQoZSk/ImZ1bmN0aW9uIj09
dHlwZW9mIGUudHlwZT9pLkNPTVBPU0lURTppLkhPU1Q6dm9pZCByKCIyNiIsZSl9fSk7dC5leHBv
cnRzPWl9LHsxMTM6MTEzLDEyMToxMjEsMTM3OjEzN31dLDYzOltmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuISghZXx8ImZ1bmN0aW9uIiE9dHlwZW9mIGUu
YXR0YWNoUmVmfHwiZnVuY3Rpb24iIT10eXBlb2YgZS5kZXRhY2hSZWYpfXZhciBvPWUoMTEzKSxp
PShlKDEzNykse2FkZENvbXBvbmVudEFzUmVmVG86ZnVuY3Rpb24oZSx0LG4pe3Iobik/dm9pZCAw
Om8oIjExOSIpLG4uYXR0YWNoUmVmKHQsZSl9LHJlbW92ZUNvbXBvbmVudEFzUmVmRnJvbTpmdW5j
dGlvbihlLHQsbil7cihuKT92b2lkIDA6bygiMTIwIik7dmFyIGk9bi5nZXRQdWJsaWNJbnN0YW5j
ZSgpO2kmJmkucmVmc1t0XT09PWUuZ2V0UHVibGljSW5zdGFuY2UoKSYmbi5kZXRhY2hSZWYodCl9
fSk7dC5leHBvcnRzPWl9LHsxMTM6MTEzLDEzNzoxMzd9XSw2NDpbZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0Ijt2YXIgcj0iU0VDUkVUX0RPX05PVF9QQVNTX1RISVNfT1JfWU9VX1dJTExfQkVf
RklSRUQiO3QuZXhwb3J0cz1yfSx7fV0sNjU6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gcihlKXt0aGlzLnJlaW5pdGlhbGl6ZVRyYW5zYWN0aW9uKCksdGhpcy5yZW5kZXJU
b1N0YXRpY01hcmt1cD0hMSx0aGlzLnJlYWN0TW91bnRSZWFkeT1pLmdldFBvb2xlZChudWxsKSx0
aGlzLnVzZUNyZWF0ZUVsZW1lbnQ9ZX12YXIgbz1lKDE0MyksaT1lKDYpLGE9ZSgyNCkscz1lKDI1
KSx1PWUoNTYpLGw9KGUoNTgpLGUoODkpKSxjPWUoNzApLHA9e2luaXRpYWxpemU6dS5nZXRTZWxl
Y3Rpb25JbmZvcm1hdGlvbixjbG9zZTp1LnJlc3RvcmVTZWxlY3Rpb259LGQ9e2luaXRpYWxpemU6
ZnVuY3Rpb24oKXt2YXIgZT1zLmlzRW5hYmxlZCgpO3JldHVybiBzLnNldEVuYWJsZWQoITEpLGV9
LGNsb3NlOmZ1bmN0aW9uKGUpe3Muc2V0RW5hYmxlZChlKX19LGY9e2luaXRpYWxpemU6ZnVuY3Rp
b24oKXt0aGlzLnJlYWN0TW91bnRSZWFkeS5yZXNldCgpfSxjbG9zZTpmdW5jdGlvbigpe3RoaXMu
cmVhY3RNb3VudFJlYWR5Lm5vdGlmeUFsbCgpfX0saD1bcCxkLGZdLG09e2dldFRyYW5zYWN0aW9u
V3JhcHBlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gaH0sZ2V0UmVhY3RNb3VudFJlYWR5OmZ1bmN0aW9u
KCl7cmV0dXJuIHRoaXMucmVhY3RNb3VudFJlYWR5fSxnZXRVcGRhdGVRdWV1ZTpmdW5jdGlvbigp
e3JldHVybiBjfSxjaGVja3BvaW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhY3RNb3VudFJl
YWR5LmNoZWNrcG9pbnQoKX0scm9sbGJhY2s6ZnVuY3Rpb24oZSl7dGhpcy5yZWFjdE1vdW50UmVh
ZHkucm9sbGJhY2soZSl9LGRlc3RydWN0b3I6ZnVuY3Rpb24oKXtpLnJlbGVhc2UodGhpcy5yZWFj
dE1vdW50UmVhZHkpLHRoaXMucmVhY3RNb3VudFJlYWR5PW51bGx9fTtvKHIucHJvdG90eXBlLGws
bSksYS5hZGRQb29saW5nVG8ociksdC5leHBvcnRzPXJ9LHsxNDM6MTQzLDI0OjI0LDI1OjI1LDU2
OjU2LDU4OjU4LDY6Niw3MDo3MCw4OTo4OX1dLDY2OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIHIoKXtvLmF0dGFjaFJlZnModGhpcyx0aGlzLl9jdXJyZW50RWxlbWVudCl9
dmFyIG89ZSg2NyksaT0oZSg1OCksZSgxNDIpLHttb3VudENvbXBvbmVudDpmdW5jdGlvbihlLHQs
bixvLGksYSl7dmFyIHM9ZS5tb3VudENvbXBvbmVudCh0LG4sbyxpLGEpO3JldHVybiBlLl9jdXJy
ZW50RWxlbWVudCYmbnVsbCE9ZS5fY3VycmVudEVsZW1lbnQucmVmJiZ0LmdldFJlYWN0TW91bnRS
ZWFkeSgpLmVucXVldWUocixlKSxzfSxnZXRIb3N0Tm9kZTpmdW5jdGlvbihlKXtyZXR1cm4gZS5n
ZXRIb3N0Tm9kZSgpfSx1bm1vdW50Q29tcG9uZW50OmZ1bmN0aW9uKGUsdCl7by5kZXRhY2hSZWZz
KGUsZS5fY3VycmVudEVsZW1lbnQpLGUudW5tb3VudENvbXBvbmVudCh0KX0scmVjZWl2ZUNvbXBv
bmVudDpmdW5jdGlvbihlLHQsbixpKXt2YXIgYT1lLl9jdXJyZW50RWxlbWVudDtpZih0IT09YXx8
aSE9PWUuX2NvbnRleHQpe3ZhciBzPW8uc2hvdWxkVXBkYXRlUmVmcyhhLHQpO3MmJm8uZGV0YWNo
UmVmcyhlLGEpLGUucmVjZWl2ZUNvbXBvbmVudCh0LG4saSkscyYmZS5fY3VycmVudEVsZW1lbnQm
Jm51bGwhPWUuX2N1cnJlbnRFbGVtZW50LnJlZiYmbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1
ZXVlKHIsZSl9fSxwZXJmb3JtVXBkYXRlSWZOZWNlc3Nhcnk6ZnVuY3Rpb24oZSx0LG4pe2UuX3Vw
ZGF0ZUJhdGNoTnVtYmVyPT09biYmZS5wZXJmb3JtVXBkYXRlSWZOZWNlc3NhcnkodCl9fSk7dC5l
eHBvcnRzPWl9LHsxNDI6MTQyLDU4OjU4LDY3OjY3fV0sNjc6W2Z1bmN0aW9uKGUsdCxuKXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbil7ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZSh0LmdldFB1
YmxpY0luc3RhbmNlKCkpOmkuYWRkQ29tcG9uZW50QXNSZWZUbyh0LGUsbil9ZnVuY3Rpb24gbyhl
LHQsbil7ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZShudWxsKTppLnJlbW92ZUNvbXBvbmVudEFzUmVm
RnJvbSh0LGUsbil9dmFyIGk9ZSg2MyksYT17fTthLmF0dGFjaFJlZnM9ZnVuY3Rpb24oZSx0KXtp
ZihudWxsIT09dCYmIm9iamVjdCI9PXR5cGVvZiB0KXt2YXIgbj10LnJlZjtudWxsIT1uJiZyKG4s
ZSx0Ll9vd25lcil9fSxhLnNob3VsZFVwZGF0ZVJlZnM9ZnVuY3Rpb24oZSx0KXt2YXIgbj1udWxs
LHI9bnVsbDtudWxsIT09ZSYmIm9iamVjdCI9PXR5cGVvZiBlJiYobj1lLnJlZixyPWUuX293bmVy
KTt2YXIgbz1udWxsLGk9bnVsbDtyZXR1cm4gbnVsbCE9PXQmJiJvYmplY3QiPT10eXBlb2YgdCYm
KG89dC5yZWYsaT10Ll9vd25lciksbiE9PW98fCJzdHJpbmciPT10eXBlb2YgbyYmaSE9PXJ9LGEu
ZGV0YWNoUmVmcz1mdW5jdGlvbihlLHQpe2lmKG51bGwhPT10JiYib2JqZWN0Ij09dHlwZW9mIHQp
e3ZhciBuPXQucmVmO251bGwhPW4mJm8obixlLHQuX293bmVyKX19LHQuZXhwb3J0cz1hfSx7NjM6
NjN9XSw2ODpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3RoaXMu
cmVpbml0aWFsaXplVHJhbnNhY3Rpb24oKSx0aGlzLnJlbmRlclRvU3RhdGljTWFya3VwPWUsdGhp
cy51c2VDcmVhdGVFbGVtZW50PSExLHRoaXMudXBkYXRlUXVldWU9bmV3IHModGhpcyl9dmFyIG89
ZSgxNDMpLGk9ZSgyNCksYT1lKDg5KSxzPShlKDU4KSxlKDY5KSksdT1bXSxsPXtlbnF1ZXVlOmZ1
bmN0aW9uKCl7fX0sYz17Z2V0VHJhbnNhY3Rpb25XcmFwcGVyczpmdW5jdGlvbigpe3JldHVybiB1
fSxnZXRSZWFjdE1vdW50UmVhZHk6ZnVuY3Rpb24oKXtyZXR1cm4gbH0sZ2V0VXBkYXRlUXVldWU6
ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy51cGRhdGVRdWV1ZX0sZGVzdHJ1Y3RvcjpmdW5jdGlvbigp
e30sY2hlY2twb2ludDpmdW5jdGlvbigpe30scm9sbGJhY2s6ZnVuY3Rpb24oKXt9fTtvKHIucHJv
dG90eXBlLGEsYyksaS5hZGRQb29saW5nVG8ociksdC5leHBvcnRzPXJ9LHsxNDM6MTQzLDI0OjI0
LDU4OjU4LDY5OjY5LDg5Ojg5fV0sNjk6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gcihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNh
bm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIG8oZSx0KXt9dmFyIGk9
ZSg3MCksYT0oZSgxNDIpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0KXtyKHRoaXMsZSksdGhpcy50
cmFuc2FjdGlvbj10fXJldHVybiBlLnByb3RvdHlwZS5pc01vdW50ZWQ9ZnVuY3Rpb24oZSl7cmV0
dXJuITF9LGUucHJvdG90eXBlLmVucXVldWVDYWxsYmFjaz1mdW5jdGlvbihlLHQsbil7dGhpcy50
cmFuc2FjdGlvbi5pc0luVHJhbnNhY3Rpb24oKSYmaS5lbnF1ZXVlQ2FsbGJhY2soZSx0LG4pfSxl
LnByb3RvdHlwZS5lbnF1ZXVlRm9yY2VVcGRhdGU9ZnVuY3Rpb24oZSl7dGhpcy50cmFuc2FjdGlv
bi5pc0luVHJhbnNhY3Rpb24oKT9pLmVucXVldWVGb3JjZVVwZGF0ZShlKTpvKGUsImZvcmNlVXBk
YXRlIil9LGUucHJvdG90eXBlLmVucXVldWVSZXBsYWNlU3RhdGU9ZnVuY3Rpb24oZSx0KXt0aGlz
LnRyYW5zYWN0aW9uLmlzSW5UcmFuc2FjdGlvbigpP2kuZW5xdWV1ZVJlcGxhY2VTdGF0ZShlLHQp
Om8oZSwicmVwbGFjZVN0YXRlIil9LGUucHJvdG90eXBlLmVucXVldWVTZXRTdGF0ZT1mdW5jdGlv
bihlLHQpe3RoaXMudHJhbnNhY3Rpb24uaXNJblRyYW5zYWN0aW9uKCk/aS5lbnF1ZXVlU2V0U3Rh
dGUoZSx0KTpvKGUsInNldFN0YXRlIil9LGV9KCkpO3QuZXhwb3J0cz1hfSx7MTQyOjE0Miw3MDo3
MH1dLDcwOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dS5lbnF1
ZXVlVXBkYXRlKGUpfWZ1bmN0aW9uIG8oZSl7dmFyIHQ9dHlwZW9mIGU7aWYoIm9iamVjdCIhPT10
KXJldHVybiB0O3ZhciBuPWUuY29uc3RydWN0b3ImJmUuY29uc3RydWN0b3IubmFtZXx8dCxyPU9i
amVjdC5rZXlzKGUpO3JldHVybiByLmxlbmd0aD4wJiZyLmxlbmd0aDwyMD9uKyIgKGtleXM6ICIr
ci5qb2luKCIsICIpKyIpIjpufWZ1bmN0aW9uIGkoZSx0KXt2YXIgbj1zLmdldChlKTtyZXR1cm4g
bj9uOm51bGx9dmFyIGE9ZSgxMTMpLHM9KGUoMTIwKSxlKDU3KSksdT0oZSg1OCksZSg3MSkpLGw9
KGUoMTM3KSxlKDE0Mikse2lzTW91bnRlZDpmdW5jdGlvbihlKXt2YXIgdD1zLmdldChlKTtyZXR1
cm4hIXQmJiEhdC5fcmVuZGVyZWRDb21wb25lbnR9LGVucXVldWVDYWxsYmFjazpmdW5jdGlvbihl
LHQsbil7bC52YWxpZGF0ZUNhbGxiYWNrKHQsbik7dmFyIG89aShlKTtyZXR1cm4gbz8oby5fcGVu
ZGluZ0NhbGxiYWNrcz9vLl9wZW5kaW5nQ2FsbGJhY2tzLnB1c2godCk6by5fcGVuZGluZ0NhbGxi
YWNrcz1bdF0sdm9pZCByKG8pKTpudWxsfSxlbnF1ZXVlQ2FsbGJhY2tJbnRlcm5hbDpmdW5jdGlv
bihlLHQpe2UuX3BlbmRpbmdDYWxsYmFja3M/ZS5fcGVuZGluZ0NhbGxiYWNrcy5wdXNoKHQpOmUu
X3BlbmRpbmdDYWxsYmFja3M9W3RdLHIoZSl9LGVucXVldWVGb3JjZVVwZGF0ZTpmdW5jdGlvbihl
KXt2YXIgdD1pKGUsImZvcmNlVXBkYXRlIik7dCYmKHQuX3BlbmRpbmdGb3JjZVVwZGF0ZT0hMCxy
KHQpKX0sZW5xdWV1ZVJlcGxhY2VTdGF0ZTpmdW5jdGlvbihlLHQpe3ZhciBuPWkoZSwicmVwbGFj
ZVN0YXRlIik7biYmKG4uX3BlbmRpbmdTdGF0ZVF1ZXVlPVt0XSxuLl9wZW5kaW5nUmVwbGFjZVN0
YXRlPSEwLHIobikpfSxlbnF1ZXVlU2V0U3RhdGU6ZnVuY3Rpb24oZSx0KXt2YXIgbj1pKGUsInNl
dFN0YXRlIik7aWYobil7dmFyIG89bi5fcGVuZGluZ1N0YXRlUXVldWV8fChuLl9wZW5kaW5nU3Rh
dGVRdWV1ZT1bXSk7by5wdXNoKHQpLHIobil9fSxlbnF1ZXVlRWxlbWVudEludGVybmFsOmZ1bmN0
aW9uKGUsdCxuKXtlLl9wZW5kaW5nRWxlbWVudD10LGUuX2NvbnRleHQ9bixyKGUpfSx2YWxpZGF0
ZUNhbGxiYWNrOmZ1bmN0aW9uKGUsdCl7ZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGU/YSgiMTIyIix0
LG8oZSkpOnZvaWQgMH19KTt0LmV4cG9ydHM9bH0sezExMzoxMTMsMTIwOjEyMCwxMzc6MTM3LDE0
MjoxNDIsNTc6NTcsNTg6NTgsNzE6NzF9XSw3MTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiByKCl7UC5SZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uJiZiP3ZvaWQgMDpjKCIx
MjMiKX1mdW5jdGlvbiBvKCl7dGhpcy5yZWluaXRpYWxpemVUcmFuc2FjdGlvbigpLHRoaXMuZGly
dHlDb21wb25lbnRzTGVuZ3RoPW51bGwsdGhpcy5jYWxsYmFja1F1ZXVlPWQuZ2V0UG9vbGVkKCks
dGhpcy5yZWNvbmNpbGVUcmFuc2FjdGlvbj1QLlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24uZ2V0
UG9vbGVkKCEwKX1mdW5jdGlvbiBpKGUsdCxuLG8saSxhKXtyZXR1cm4gcigpLGIuYmF0Y2hlZFVw
ZGF0ZXMoZSx0LG4sbyxpLGEpfWZ1bmN0aW9uIGEoZSx0KXtyZXR1cm4gZS5fbW91bnRPcmRlci10
Ll9tb3VudE9yZGVyfWZ1bmN0aW9uIHMoZSl7dmFyIHQ9ZS5kaXJ0eUNvbXBvbmVudHNMZW5ndGg7
dCE9PWcubGVuZ3RoP2MoIjEyNCIsdCxnLmxlbmd0aCk6dm9pZCAwLGcuc29ydChhKSx5Kys7Zm9y
KHZhciBuPTA7bjx0O24rKyl7dmFyIHI9Z1tuXSxvPXIuX3BlbmRpbmdDYWxsYmFja3M7ci5fcGVu
ZGluZ0NhbGxiYWNrcz1udWxsO3ZhciBpO2lmKGgubG9nVG9wTGV2ZWxSZW5kZXJzKXt2YXIgcz1y
O3IuX2N1cnJlbnRFbGVtZW50LnR5cGUuaXNSZWFjdFRvcExldmVsV3JhcHBlciYmKHM9ci5fcmVu
ZGVyZWRDb21wb25lbnQpLGk9IlJlYWN0IHVwZGF0ZTogIitzLmdldE5hbWUoKSxjb25zb2xlLnRp
bWUoaSl9aWYobS5wZXJmb3JtVXBkYXRlSWZOZWNlc3NhcnkocixlLnJlY29uY2lsZVRyYW5zYWN0
aW9uLHkpLGkmJmNvbnNvbGUudGltZUVuZChpKSxvKWZvcih2YXIgdT0wO3U8by5sZW5ndGg7dSsr
KWUuY2FsbGJhY2tRdWV1ZS5lbnF1ZXVlKG9bdV0sci5nZXRQdWJsaWNJbnN0YW5jZSgpKX19ZnVu
Y3Rpb24gdShlKXtyZXR1cm4gcigpLGIuaXNCYXRjaGluZ1VwZGF0ZXM/KGcucHVzaChlKSx2b2lk
KG51bGw9PWUuX3VwZGF0ZUJhdGNoTnVtYmVyJiYoZS5fdXBkYXRlQmF0Y2hOdW1iZXI9eSsxKSkp
OnZvaWQgYi5iYXRjaGVkVXBkYXRlcyh1LGUpfWZ1bmN0aW9uIGwoZSx0KXtiLmlzQmF0Y2hpbmdV
cGRhdGVzP3ZvaWQgMDpjKCIxMjUiKSxfLmVucXVldWUoZSx0KSxDPSEwfXZhciBjPWUoMTEzKSxw
PWUoMTQzKSxkPWUoNiksZj1lKDI0KSxoPWUoNTMpLG09ZSg2Niksdj1lKDg5KSxnPShlKDEzNyks
W10pLHk9MCxfPWQuZ2V0UG9vbGVkKCksQz0hMSxiPW51bGwsRT17aW5pdGlhbGl6ZTpmdW5jdGlv
bigpe3RoaXMuZGlydHlDb21wb25lbnRzTGVuZ3RoPWcubGVuZ3RofSxjbG9zZTpmdW5jdGlvbigp
e3RoaXMuZGlydHlDb21wb25lbnRzTGVuZ3RoIT09Zy5sZW5ndGg/KGcuc3BsaWNlKDAsdGhpcy5k
aXJ0eUNvbXBvbmVudHNMZW5ndGgpLFQoKSk6Zy5sZW5ndGg9MH19LHg9e2luaXRpYWxpemU6ZnVu
Y3Rpb24oKXt0aGlzLmNhbGxiYWNrUXVldWUucmVzZXQoKX0sY2xvc2U6ZnVuY3Rpb24oKXt0aGlz
LmNhbGxiYWNrUXVldWUubm90aWZ5QWxsKCl9fSx3PVtFLHhdO3Aoby5wcm90b3R5cGUsdix7Z2V0
VHJhbnNhY3Rpb25XcmFwcGVyczpmdW5jdGlvbigpe3JldHVybiB3fSxkZXN0cnVjdG9yOmZ1bmN0
aW9uKCl7dGhpcy5kaXJ0eUNvbXBvbmVudHNMZW5ndGg9bnVsbCxkLnJlbGVhc2UodGhpcy5jYWxs
YmFja1F1ZXVlKSx0aGlzLmNhbGxiYWNrUXVldWU9bnVsbCxQLlJlYWN0UmVjb25jaWxlVHJhbnNh
Y3Rpb24ucmVsZWFzZSh0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uKSx0aGlzLnJlY29uY2lsZVRy
YW5zYWN0aW9uPW51bGx9LHBlcmZvcm06ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB2LnBlcmZvcm0u
Y2FsbCh0aGlzLHRoaXMucmVjb25jaWxlVHJhbnNhY3Rpb24ucGVyZm9ybSx0aGlzLnJlY29uY2ls
ZVRyYW5zYWN0aW9uLGUsdCxuKX19KSxmLmFkZFBvb2xpbmdUbyhvKTt2YXIgVD1mdW5jdGlvbigp
e2Zvcig7Zy5sZW5ndGh8fEM7KXtpZihnLmxlbmd0aCl7dmFyIGU9by5nZXRQb29sZWQoKTtlLnBl
cmZvcm0ocyxudWxsLGUpLG8ucmVsZWFzZShlKX1pZihDKXtDPSExO3ZhciB0PV87Xz1kLmdldFBv
b2xlZCgpLHQubm90aWZ5QWxsKCksZC5yZWxlYXNlKHQpfX19LGs9e2luamVjdFJlY29uY2lsZVRy
YW5zYWN0aW9uOmZ1bmN0aW9uKGUpe2U/dm9pZCAwOmMoIjEyNiIpLFAuUmVhY3RSZWNvbmNpbGVU
cmFuc2FjdGlvbj1lfSxpbmplY3RCYXRjaGluZ1N0cmF0ZWd5OmZ1bmN0aW9uKGUpe2U/dm9pZCAw
OmMoIjEyNyIpLCJmdW5jdGlvbiIhPXR5cGVvZiBlLmJhdGNoZWRVcGRhdGVzP2MoIjEyOCIpOnZv
aWQgMCwiYm9vbGVhbiIhPXR5cGVvZiBlLmlzQmF0Y2hpbmdVcGRhdGVzP2MoIjEyOSIpOnZvaWQg
MCxiPWV9fSxQPXtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uOm51bGwsYmF0Y2hlZFVwZGF0ZXM6
aSxlbnF1ZXVlVXBkYXRlOnUsZmx1c2hCYXRjaGVkVXBkYXRlczpULGluamVjdGlvbjprLGFzYXA6
bH07dC5leHBvcnRzPVB9LHsxMTM6MTEzLDEzNzoxMzcsMTQzOjE0MywyNDoyNCw1Mzo1Myw2OjYs
NjY6NjYsODk6ODl9XSw3MjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt0LmV4cG9ydHM9
IjE1LjQuMCJ9LHt9XSw3MzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj17eGxp
bms6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLHhtbDoiaHR0cDovL3d3dy53My5vcmcv
WE1MLzE5OTgvbmFtZXNwYWNlIn0sbz17YWNjZW50SGVpZ2h0OiJhY2NlbnQtaGVpZ2h0IixhY2N1
bXVsYXRlOjAsYWRkaXRpdmU6MCxhbGlnbm1lbnRCYXNlbGluZToiYWxpZ25tZW50LWJhc2VsaW5l
IixhbGxvd1Jlb3JkZXI6ImFsbG93UmVvcmRlciIsYWxwaGFiZXRpYzowLGFtcGxpdHVkZTowLGFy
YWJpY0Zvcm06ImFyYWJpYy1mb3JtIixhc2NlbnQ6MCxhdHRyaWJ1dGVOYW1lOiJhdHRyaWJ1dGVO
YW1lIixhdHRyaWJ1dGVUeXBlOiJhdHRyaWJ1dGVUeXBlIixhdXRvUmV2ZXJzZToiYXV0b1JldmVy
c2UiLGF6aW11dGg6MCxiYXNlRnJlcXVlbmN5OiJiYXNlRnJlcXVlbmN5IixiYXNlUHJvZmlsZToi
YmFzZVByb2ZpbGUiLGJhc2VsaW5lU2hpZnQ6ImJhc2VsaW5lLXNoaWZ0IixiYm94OjAsYmVnaW46
MCxiaWFzOjAsYnk6MCxjYWxjTW9kZToiY2FsY01vZGUiLGNhcEhlaWdodDoiY2FwLWhlaWdodCIs
Y2xpcDowLGNsaXBQYXRoOiJjbGlwLXBhdGgiLGNsaXBSdWxlOiJjbGlwLXJ1bGUiLGNsaXBQYXRo
VW5pdHM6ImNsaXBQYXRoVW5pdHMiLGNvbG9ySW50ZXJwb2xhdGlvbjoiY29sb3ItaW50ZXJwb2xh
dGlvbiIsY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVyczoiY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0
ZXJzIixjb2xvclByb2ZpbGU6ImNvbG9yLXByb2ZpbGUiLGNvbG9yUmVuZGVyaW5nOiJjb2xvci1y
ZW5kZXJpbmciLGNvbnRlbnRTY3JpcHRUeXBlOiJjb250ZW50U2NyaXB0VHlwZSIsY29udGVudFN0
eWxlVHlwZToiY29udGVudFN0eWxlVHlwZSIsY3Vyc29yOjAsY3g6MCxjeTowLGQ6MCxkZWNlbGVy
YXRlOjAsZGVzY2VudDowLGRpZmZ1c2VDb25zdGFudDoiZGlmZnVzZUNvbnN0YW50IixkaXJlY3Rp
b246MCxkaXNwbGF5OjAsZGl2aXNvcjowLGRvbWluYW50QmFzZWxpbmU6ImRvbWluYW50LWJhc2Vs
aW5lIixkdXI6MCxkeDowLGR5OjAsZWRnZU1vZGU6ImVkZ2VNb2RlIixlbGV2YXRpb246MCxlbmFi
bGVCYWNrZ3JvdW5kOiJlbmFibGUtYmFja2dyb3VuZCIsZW5kOjAsZXhwb25lbnQ6MCxleHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkOiJleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkIixmaWxsOjAsZmls
bE9wYWNpdHk6ImZpbGwtb3BhY2l0eSIsZmlsbFJ1bGU6ImZpbGwtcnVsZSIsZmlsdGVyOjAsZmls
dGVyUmVzOiJmaWx0ZXJSZXMiLGZpbHRlclVuaXRzOiJmaWx0ZXJVbml0cyIsZmxvb2RDb2xvcjoi
Zmxvb2QtY29sb3IiLGZsb29kT3BhY2l0eToiZmxvb2Qtb3BhY2l0eSIsZm9jdXNhYmxlOjAsZm9u
dEZhbWlseToiZm9udC1mYW1pbHkiLGZvbnRTaXplOiJmb250LXNpemUiLGZvbnRTaXplQWRqdXN0
OiJmb250LXNpemUtYWRqdXN0Iixmb250U3RyZXRjaDoiZm9udC1zdHJldGNoIixmb250U3R5bGU6
ImZvbnQtc3R5bGUiLGZvbnRWYXJpYW50OiJmb250LXZhcmlhbnQiLGZvbnRXZWlnaHQ6ImZvbnQt
d2VpZ2h0Iixmb3JtYXQ6MCxmcm9tOjAsZng6MCxmeTowLGcxOjAsZzI6MCxnbHlwaE5hbWU6Imds
eXBoLW5hbWUiLGdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsOiJnbHlwaC1vcmllbnRhdGlvbi1o
b3Jpem9udGFsIixnbHlwaE9yaWVudGF0aW9uVmVydGljYWw6ImdseXBoLW9yaWVudGF0aW9uLXZl
cnRpY2FsIixnbHlwaFJlZjoiZ2x5cGhSZWYiLGdyYWRpZW50VHJhbnNmb3JtOiJncmFkaWVudFRy
YW5zZm9ybSIsZ3JhZGllbnRVbml0czoiZ3JhZGllbnRVbml0cyIsaGFuZ2luZzowLGhvcml6QWR2
WDoiaG9yaXotYWR2LXgiLGhvcml6T3JpZ2luWDoiaG9yaXotb3JpZ2luLXgiLGlkZW9ncmFwaGlj
OjAsaW1hZ2VSZW5kZXJpbmc6ImltYWdlLXJlbmRlcmluZyIsaW46MCxpbjI6MCxpbnRlcmNlcHQ6
MCxrOjAsazE6MCxrMjowLGszOjAsazQ6MCxrZXJuZWxNYXRyaXg6Imtlcm5lbE1hdHJpeCIsa2Vy
bmVsVW5pdExlbmd0aDoia2VybmVsVW5pdExlbmd0aCIsa2VybmluZzowLGtleVBvaW50czoia2V5
UG9pbnRzIixrZXlTcGxpbmVzOiJrZXlTcGxpbmVzIixrZXlUaW1lczoia2V5VGltZXMiLGxlbmd0
aEFkanVzdDoibGVuZ3RoQWRqdXN0IixsZXR0ZXJTcGFjaW5nOiJsZXR0ZXItc3BhY2luZyIsbGln
aHRpbmdDb2xvcjoibGlnaHRpbmctY29sb3IiLGxpbWl0aW5nQ29uZUFuZ2xlOiJsaW1pdGluZ0Nv
bmVBbmdsZSIsbG9jYWw6MCxtYXJrZXJFbmQ6Im1hcmtlci1lbmQiLG1hcmtlck1pZDoibWFya2Vy
LW1pZCIsbWFya2VyU3RhcnQ6Im1hcmtlci1zdGFydCIsbWFya2VySGVpZ2h0OiJtYXJrZXJIZWln
aHQiLG1hcmtlclVuaXRzOiJtYXJrZXJVbml0cyIsbWFya2VyV2lkdGg6Im1hcmtlcldpZHRoIixt
YXNrOjAsbWFza0NvbnRlbnRVbml0czoibWFza0NvbnRlbnRVbml0cyIsbWFza1VuaXRzOiJtYXNr
VW5pdHMiLG1hdGhlbWF0aWNhbDowLG1vZGU6MCxudW1PY3RhdmVzOiJudW1PY3RhdmVzIixvZmZz
ZXQ6MCxvcGFjaXR5OjAsb3BlcmF0b3I6MCxvcmRlcjowLG9yaWVudDowLG9yaWVudGF0aW9uOjAs
b3JpZ2luOjAsb3ZlcmZsb3c6MCxvdmVybGluZVBvc2l0aW9uOiJvdmVybGluZS1wb3NpdGlvbiIs
b3ZlcmxpbmVUaGlja25lc3M6Im92ZXJsaW5lLXRoaWNrbmVzcyIscGFpbnRPcmRlcjoicGFpbnQt
b3JkZXIiLHBhbm9zZTE6InBhbm9zZS0xIixwYXRoTGVuZ3RoOiJwYXRoTGVuZ3RoIixwYXR0ZXJu
Q29udGVudFVuaXRzOiJwYXR0ZXJuQ29udGVudFVuaXRzIixwYXR0ZXJuVHJhbnNmb3JtOiJwYXR0
ZXJuVHJhbnNmb3JtIixwYXR0ZXJuVW5pdHM6InBhdHRlcm5Vbml0cyIscG9pbnRlckV2ZW50czoi
cG9pbnRlci1ldmVudHMiLHBvaW50czowLHBvaW50c0F0WDoicG9pbnRzQXRYIixwb2ludHNBdFk6
InBvaW50c0F0WSIscG9pbnRzQXRaOiJwb2ludHNBdFoiLHByZXNlcnZlQWxwaGE6InByZXNlcnZl
QWxwaGEiLHByZXNlcnZlQXNwZWN0UmF0aW86InByZXNlcnZlQXNwZWN0UmF0aW8iLHByaW1pdGl2
ZVVuaXRzOiJwcmltaXRpdmVVbml0cyIscjowLHJhZGl1czowLHJlZlg6InJlZlgiLHJlZlk6InJl
ZlkiLHJlbmRlcmluZ0ludGVudDoicmVuZGVyaW5nLWludGVudCIscmVwZWF0Q291bnQ6InJlcGVh
dENvdW50IixyZXBlYXREdXI6InJlcGVhdER1ciIscmVxdWlyZWRFeHRlbnNpb25zOiJyZXF1aXJl
ZEV4dGVuc2lvbnMiLHJlcXVpcmVkRmVhdHVyZXM6InJlcXVpcmVkRmVhdHVyZXMiLHJlc3RhcnQ6
MCxyZXN1bHQ6MCxyb3RhdGU6MCxyeDowLHJ5OjAsc2NhbGU6MCxzZWVkOjAsc2hhcGVSZW5kZXJp
bmc6InNoYXBlLXJlbmRlcmluZyIsc2xvcGU6MCxzcGFjaW5nOjAsc3BlY3VsYXJDb25zdGFudDoi
c3BlY3VsYXJDb25zdGFudCIsc3BlY3VsYXJFeHBvbmVudDoic3BlY3VsYXJFeHBvbmVudCIsc3Bl
ZWQ6MCxzcHJlYWRNZXRob2Q6InNwcmVhZE1ldGhvZCIsc3RhcnRPZmZzZXQ6InN0YXJ0T2Zmc2V0
IixzdGREZXZpYXRpb246InN0ZERldmlhdGlvbiIsc3RlbWg6MCxzdGVtdjowLHN0aXRjaFRpbGVz
OiJzdGl0Y2hUaWxlcyIsc3RvcENvbG9yOiJzdG9wLWNvbG9yIixzdG9wT3BhY2l0eToic3RvcC1v
cGFjaXR5IixzdHJpa2V0aHJvdWdoUG9zaXRpb246InN0cmlrZXRocm91Z2gtcG9zaXRpb24iLHN0
cmlrZXRocm91Z2hUaGlja25lc3M6InN0cmlrZXRocm91Z2gtdGhpY2tuZXNzIixzdHJpbmc6MCxz
dHJva2U6MCxzdHJva2VEYXNoYXJyYXk6InN0cm9rZS1kYXNoYXJyYXkiLHN0cm9rZURhc2hvZmZz
ZXQ6InN0cm9rZS1kYXNob2Zmc2V0IixzdHJva2VMaW5lY2FwOiJzdHJva2UtbGluZWNhcCIsc3Ry
b2tlTGluZWpvaW46InN0cm9rZS1saW5lam9pbiIsc3Ryb2tlTWl0ZXJsaW1pdDoic3Ryb2tlLW1p
dGVybGltaXQiLHN0cm9rZU9wYWNpdHk6InN0cm9rZS1vcGFjaXR5IixzdHJva2VXaWR0aDoic3Ry
b2tlLXdpZHRoIixzdXJmYWNlU2NhbGU6InN1cmZhY2VTY2FsZSIsc3lzdGVtTGFuZ3VhZ2U6InN5
c3RlbUxhbmd1YWdlIix0YWJsZVZhbHVlczoidGFibGVWYWx1ZXMiLHRhcmdldFg6InRhcmdldFgi
LHRhcmdldFk6InRhcmdldFkiLHRleHRBbmNob3I6InRleHQtYW5jaG9yIix0ZXh0RGVjb3JhdGlv
bjoidGV4dC1kZWNvcmF0aW9uIix0ZXh0UmVuZGVyaW5nOiJ0ZXh0LXJlbmRlcmluZyIsdGV4dExl
bmd0aDoidGV4dExlbmd0aCIsdG86MCx0cmFuc2Zvcm06MCx1MTowLHUyOjAsdW5kZXJsaW5lUG9z
aXRpb246InVuZGVybGluZS1wb3NpdGlvbiIsdW5kZXJsaW5lVGhpY2tuZXNzOiJ1bmRlcmxpbmUt
dGhpY2tuZXNzIix1bmljb2RlOjAsdW5pY29kZUJpZGk6InVuaWNvZGUtYmlkaSIsdW5pY29kZVJh
bmdlOiJ1bmljb2RlLXJhbmdlIix1bml0c1BlckVtOiJ1bml0cy1wZXItZW0iLHZBbHBoYWJldGlj
OiJ2LWFscGhhYmV0aWMiLHZIYW5naW5nOiJ2LWhhbmdpbmciLHZJZGVvZ3JhcGhpYzoidi1pZGVv
Z3JhcGhpYyIsdk1hdGhlbWF0aWNhbDoidi1tYXRoZW1hdGljYWwiLHZhbHVlczowLHZlY3RvckVm
ZmVjdDoidmVjdG9yLWVmZmVjdCIsdmVyc2lvbjowLHZlcnRBZHZZOiJ2ZXJ0LWFkdi15Iix2ZXJ0
T3JpZ2luWDoidmVydC1vcmlnaW4teCIsdmVydE9yaWdpblk6InZlcnQtb3JpZ2luLXkiLHZpZXdC
b3g6InZpZXdCb3giLHZpZXdUYXJnZXQ6InZpZXdUYXJnZXQiLHZpc2liaWxpdHk6MCx3aWR0aHM6
MCx3b3JkU3BhY2luZzoid29yZC1zcGFjaW5nIix3cml0aW5nTW9kZToid3JpdGluZy1tb2RlIix4
OjAseEhlaWdodDoieC1oZWlnaHQiLHgxOjAseDI6MCx4Q2hhbm5lbFNlbGVjdG9yOiJ4Q2hhbm5l
bFNlbGVjdG9yIix4bGlua0FjdHVhdGU6InhsaW5rOmFjdHVhdGUiLHhsaW5rQXJjcm9sZToieGxp
bms6YXJjcm9sZSIseGxpbmtIcmVmOiJ4bGluazpocmVmIix4bGlua1JvbGU6InhsaW5rOnJvbGUi
LHhsaW5rU2hvdzoieGxpbms6c2hvdyIseGxpbmtUaXRsZToieGxpbms6dGl0bGUiLHhsaW5rVHlw
ZToieGxpbms6dHlwZSIseG1sQmFzZToieG1sOmJhc2UiLHhtbG5zOjAseG1sbnNYbGluazoieG1s
bnM6eGxpbmsiLHhtbExhbmc6InhtbDpsYW5nIix4bWxTcGFjZToieG1sOnNwYWNlIix5OjAseTE6
MCx5MjowLHlDaGFubmVsU2VsZWN0b3I6InlDaGFubmVsU2VsZWN0b3IiLHo6MCx6b29tQW5kUGFu
OiJ6b29tQW5kUGFuIn0saT17UHJvcGVydGllczp7fSxET01BdHRyaWJ1dGVOYW1lc3BhY2VzOnt4
bGlua0FjdHVhdGU6ci54bGluayx4bGlua0FyY3JvbGU6ci54bGluayx4bGlua0hyZWY6ci54bGlu
ayx4bGlua1JvbGU6ci54bGluayx4bGlua1Nob3c6ci54bGluayx4bGlua1RpdGxlOnIueGxpbmss
eGxpbmtUeXBlOnIueGxpbmsseG1sQmFzZTpyLnhtbCx4bWxMYW5nOnIueG1sLHhtbFNwYWNlOnIu
eG1sfSxET01BdHRyaWJ1dGVOYW1lczp7fX07T2JqZWN0LmtleXMobykuZm9yRWFjaChmdW5jdGlv
bihlKXtpLlByb3BlcnRpZXNbZV09MCxvW2VdJiYoaS5ET01BdHRyaWJ1dGVOYW1lc1tlXT1vW2Vd
KX0pLHQuZXhwb3J0cz1pfSx7fV0sNzQ6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gcihlKXtpZigic2VsZWN0aW9uU3RhcnQiaW4gZSYmdS5oYXNTZWxlY3Rpb25DYXBhYmls
aXRpZXMoZSkpcmV0dXJue3N0YXJ0OmUuc2VsZWN0aW9uU3RhcnQsZW5kOmUuc2VsZWN0aW9uRW5k
fTtpZih3aW5kb3cuZ2V0U2VsZWN0aW9uKXt2YXIgdD13aW5kb3cuZ2V0U2VsZWN0aW9uKCk7cmV0
dXJue2FuY2hvck5vZGU6dC5hbmNob3JOb2RlLGFuY2hvck9mZnNldDp0LmFuY2hvck9mZnNldCxm
b2N1c05vZGU6dC5mb2N1c05vZGUsZm9jdXNPZmZzZXQ6dC5mb2N1c09mZnNldH19aWYoZG9jdW1l
bnQuc2VsZWN0aW9uKXt2YXIgbj1kb2N1bWVudC5zZWxlY3Rpb24uY3JlYXRlUmFuZ2UoKTtyZXR1
cm57cGFyZW50RWxlbWVudDpuLnBhcmVudEVsZW1lbnQoKSx0ZXh0Om4udGV4dCx0b3A6bi5ib3Vu
ZGluZ1RvcCxsZWZ0Om4uYm91bmRpbmdMZWZ0fX19ZnVuY3Rpb24gbyhlLHQpe2lmKHl8fG51bGw9
PW18fG0hPT1jKCkpcmV0dXJuIG51bGw7dmFyIG49cihtKTtpZighZ3x8IWQoZyxuKSl7Zz1uO3Zh
ciBvPWwuZ2V0UG9vbGVkKGguc2VsZWN0LHYsZSx0KTtyZXR1cm4gby50eXBlPSJzZWxlY3QiLG8u
dGFyZ2V0PW0saS5hY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKG8pLG99cmV0dXJuIG51bGx9
dmFyIGk9ZSgxOSksYT1lKDEyMykscz1lKDMzKSx1PWUoNTYpLGw9ZSg4MCksYz1lKDEzMikscD1l
KDExMSksZD1lKDE0MSksZj1hLmNhblVzZURPTSYmImRvY3VtZW50TW9kZSJpbiBkb2N1bWVudCYm
ZG9jdW1lbnQuZG9jdW1lbnRNb2RlPD0xMSxoPXtzZWxlY3Q6e3BoYXNlZFJlZ2lzdHJhdGlvbk5h
bWVzOntidWJibGVkOiJvblNlbGVjdCIsY2FwdHVyZWQ6Im9uU2VsZWN0Q2FwdHVyZSJ9LGRlcGVu
ZGVuY2llczpbInRvcEJsdXIiLCJ0b3BDb250ZXh0TWVudSIsInRvcEZvY3VzIiwidG9wS2V5RG93
biIsInRvcEtleVVwIiwidG9wTW91c2VEb3duIiwidG9wTW91c2VVcCIsInRvcFNlbGVjdGlvbkNo
YW5nZSJdfX0sbT1udWxsLHY9bnVsbCxnPW51bGwseT0hMSxfPSExLEM9e2V2ZW50VHlwZXM6aCxl
eHRyYWN0RXZlbnRzOmZ1bmN0aW9uKGUsdCxuLHIpe2lmKCFfKXJldHVybiBudWxsO3ZhciBpPXQ/
cy5nZXROb2RlRnJvbUluc3RhbmNlKHQpOndpbmRvdztzd2l0Y2goZSl7Y2FzZSJ0b3BGb2N1cyI6
KHAoaSl8fCJ0cnVlIj09PWkuY29udGVudEVkaXRhYmxlKSYmKG09aSx2PXQsZz1udWxsKTticmVh
aztjYXNlInRvcEJsdXIiOm09bnVsbCx2PW51bGwsZz1udWxsO2JyZWFrO2Nhc2UidG9wTW91c2VE
b3duIjp5PSEwO2JyZWFrO2Nhc2UidG9wQ29udGV4dE1lbnUiOmNhc2UidG9wTW91c2VVcCI6cmV0
dXJuIHk9ITEsbyhuLHIpO2Nhc2UidG9wU2VsZWN0aW9uQ2hhbmdlIjppZihmKWJyZWFrO2Nhc2Ui
dG9wS2V5RG93biI6Y2FzZSJ0b3BLZXlVcCI6cmV0dXJuIG8obixyKTsKK31yZXR1cm4gbnVsbH0s
ZGlkUHV0TGlzdGVuZXI6ZnVuY3Rpb24oZSx0LG4peyJvblNlbGVjdCI9PT10JiYoXz0hMCl9fTt0
LmV4cG9ydHM9Q30sezExMToxMTEsMTIzOjEyMywxMzI6MTMyLDE0MToxNDEsMTk6MTksMzM6MzMs
NTY6NTYsODA6ODB9XSw3NTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBy
KGUpe3JldHVybiIuIitlLl9yb290Tm9kZUlEfWZ1bmN0aW9uIG8oZSl7cmV0dXJuImJ1dHRvbiI9
PT1lfHwiaW5wdXQiPT09ZXx8InNlbGVjdCI9PT1lfHwidGV4dGFyZWEiPT09ZX1mdW5jdGlvbiBp
KGUpe2lmKGUpe3ZhciB0PWUuX2N1cnJlbnRFbGVtZW50JiZlLl9jdXJyZW50RWxlbWVudC5wcm9w
cy5kaXNhYmxlZDtpZih0KXJldHVybiBvKGUuX3RhZyl9cmV0dXJuITF9dmFyIGE9ZSgxMTMpLHM9
ZSgxMjIpLHU9ZSgxOSksbD1lKDMzKSxjPWUoNzYpLHA9ZSg3NyksZD1lKDgwKSxmPWUoODEpLGg9
ZSg4MyksbT1lKDg0KSx2PWUoNzkpLGc9ZSg4NSkseT1lKDg2KSxfPWUoODcpLEM9ZSg4OCksYj1l
KDEyOSksRT1lKDk5KSx4PShlKDEzNykse30pLHc9e307WyJhYm9ydCIsImFuaW1hdGlvbkVuZCIs
ImFuaW1hdGlvbkl0ZXJhdGlvbiIsImFuaW1hdGlvblN0YXJ0IiwiYmx1ciIsImNhblBsYXkiLCJj
YW5QbGF5VGhyb3VnaCIsImNsaWNrIiwiY29udGV4dE1lbnUiLCJjb3B5IiwiY3V0IiwiZG91Ymxl
Q2xpY2siLCJkcmFnIiwiZHJhZ0VuZCIsImRyYWdFbnRlciIsImRyYWdFeGl0IiwiZHJhZ0xlYXZl
IiwiZHJhZ092ZXIiLCJkcmFnU3RhcnQiLCJkcm9wIiwiZHVyYXRpb25DaGFuZ2UiLCJlbXB0aWVk
IiwiZW5jcnlwdGVkIiwiZW5kZWQiLCJlcnJvciIsImZvY3VzIiwiaW5wdXQiLCJpbnZhbGlkIiwi
a2V5RG93biIsImtleVByZXNzIiwia2V5VXAiLCJsb2FkIiwibG9hZGVkRGF0YSIsImxvYWRlZE1l
dGFkYXRhIiwibG9hZFN0YXJ0IiwibW91c2VEb3duIiwibW91c2VNb3ZlIiwibW91c2VPdXQiLCJt
b3VzZU92ZXIiLCJtb3VzZVVwIiwicGFzdGUiLCJwYXVzZSIsInBsYXkiLCJwbGF5aW5nIiwicHJv
Z3Jlc3MiLCJyYXRlQ2hhbmdlIiwicmVzZXQiLCJzY3JvbGwiLCJzZWVrZWQiLCJzZWVraW5nIiwi
c3RhbGxlZCIsInN1Ym1pdCIsInN1c3BlbmQiLCJ0aW1lVXBkYXRlIiwidG91Y2hDYW5jZWwiLCJ0
b3VjaEVuZCIsInRvdWNoTW92ZSIsInRvdWNoU3RhcnQiLCJ0cmFuc2l0aW9uRW5kIiwidm9sdW1l
Q2hhbmdlIiwid2FpdGluZyIsIndoZWVsIl0uZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgdD1lWzBd
LnRvVXBwZXJDYXNlKCkrZS5zbGljZSgxKSxuPSJvbiIrdCxyPSJ0b3AiK3Qsbz17cGhhc2VkUmVn
aXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6bixjYXB0dXJlZDpuKyJDYXB0dXJlIn0sZGVwZW5kZW5j
aWVzOltyXX07eFtlXT1vLHdbcl09b30pO3ZhciBUPXt9LGs9e2V2ZW50VHlwZXM6eCxleHRyYWN0
RXZlbnRzOmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvPXdbZV07aWYoIW8pcmV0dXJuIG51bGw7dmFy
IHM7c3dpdGNoKGUpe2Nhc2UidG9wQWJvcnQiOmNhc2UidG9wQ2FuUGxheSI6Y2FzZSJ0b3BDYW5Q
bGF5VGhyb3VnaCI6Y2FzZSJ0b3BEdXJhdGlvbkNoYW5nZSI6Y2FzZSJ0b3BFbXB0aWVkIjpjYXNl
InRvcEVuY3J5cHRlZCI6Y2FzZSJ0b3BFbmRlZCI6Y2FzZSJ0b3BFcnJvciI6Y2FzZSJ0b3BJbnB1
dCI6Y2FzZSJ0b3BJbnZhbGlkIjpjYXNlInRvcExvYWQiOmNhc2UidG9wTG9hZGVkRGF0YSI6Y2Fz
ZSJ0b3BMb2FkZWRNZXRhZGF0YSI6Y2FzZSJ0b3BMb2FkU3RhcnQiOmNhc2UidG9wUGF1c2UiOmNh
c2UidG9wUGxheSI6Y2FzZSJ0b3BQbGF5aW5nIjpjYXNlInRvcFByb2dyZXNzIjpjYXNlInRvcFJh
dGVDaGFuZ2UiOmNhc2UidG9wUmVzZXQiOmNhc2UidG9wU2Vla2VkIjpjYXNlInRvcFNlZWtpbmci
OmNhc2UidG9wU3RhbGxlZCI6Y2FzZSJ0b3BTdWJtaXQiOmNhc2UidG9wU3VzcGVuZCI6Y2FzZSJ0
b3BUaW1lVXBkYXRlIjpjYXNlInRvcFZvbHVtZUNoYW5nZSI6Y2FzZSJ0b3BXYWl0aW5nIjpzPWQ7
YnJlYWs7Y2FzZSJ0b3BLZXlQcmVzcyI6aWYoMD09PUUobikpcmV0dXJuIG51bGw7Y2FzZSJ0b3BL
ZXlEb3duIjpjYXNlInRvcEtleVVwIjpzPWg7YnJlYWs7Y2FzZSJ0b3BCbHVyIjpjYXNlInRvcEZv
Y3VzIjpzPWY7YnJlYWs7Y2FzZSJ0b3BDbGljayI6aWYoMj09PW4uYnV0dG9uKXJldHVybiBudWxs
O2Nhc2UidG9wRG91YmxlQ2xpY2siOmNhc2UidG9wTW91c2VEb3duIjpjYXNlInRvcE1vdXNlTW92
ZSI6Y2FzZSJ0b3BNb3VzZVVwIjppZihpKHQpKXJldHVybiBudWxsO2Nhc2UidG9wTW91c2VPdXQi
OmNhc2UidG9wTW91c2VPdmVyIjpjYXNlInRvcENvbnRleHRNZW51IjpzPW07YnJlYWs7Y2FzZSJ0
b3BEcmFnIjpjYXNlInRvcERyYWdFbmQiOmNhc2UidG9wRHJhZ0VudGVyIjpjYXNlInRvcERyYWdF
eGl0IjpjYXNlInRvcERyYWdMZWF2ZSI6Y2FzZSJ0b3BEcmFnT3ZlciI6Y2FzZSJ0b3BEcmFnU3Rh
cnQiOmNhc2UidG9wRHJvcCI6cz12O2JyZWFrO2Nhc2UidG9wVG91Y2hDYW5jZWwiOmNhc2UidG9w
VG91Y2hFbmQiOmNhc2UidG9wVG91Y2hNb3ZlIjpjYXNlInRvcFRvdWNoU3RhcnQiOnM9ZzticmVh
aztjYXNlInRvcEFuaW1hdGlvbkVuZCI6Y2FzZSJ0b3BBbmltYXRpb25JdGVyYXRpb24iOmNhc2Ui
dG9wQW5pbWF0aW9uU3RhcnQiOnM9YzticmVhaztjYXNlInRvcFRyYW5zaXRpb25FbmQiOnM9eTti
cmVhaztjYXNlInRvcFNjcm9sbCI6cz1fO2JyZWFrO2Nhc2UidG9wV2hlZWwiOnM9QzticmVhaztj
YXNlInRvcENvcHkiOmNhc2UidG9wQ3V0IjpjYXNlInRvcFBhc3RlIjpzPXB9cz92b2lkIDA6YSgi
ODYiLGUpO3ZhciBsPXMuZ2V0UG9vbGVkKG8sdCxuLHIpO3JldHVybiB1LmFjY3VtdWxhdGVUd29Q
aGFzZURpc3BhdGNoZXMobCksbH0sZGlkUHV0TGlzdGVuZXI6ZnVuY3Rpb24oZSx0LG4pe2lmKCJv
bkNsaWNrIj09PXQmJiFvKGUuX3RhZykpe3ZhciBpPXIoZSksYT1sLmdldE5vZGVGcm9tSW5zdGFu
Y2UoZSk7VFtpXXx8KFRbaV09cy5saXN0ZW4oYSwiY2xpY2siLGIpKX19LHdpbGxEZWxldGVMaXN0
ZW5lcjpmdW5jdGlvbihlLHQpe2lmKCJvbkNsaWNrIj09PXQmJiFvKGUuX3RhZykpe3ZhciBuPXIo
ZSk7VFtuXS5yZW1vdmUoKSxkZWxldGUgVFtuXX19fTt0LmV4cG9ydHM9a30sezExMzoxMTMsMTIy
OjEyMiwxMjk6MTI5LDEzNzoxMzcsMTk6MTksMzM6MzMsNzY6NzYsNzc6NzcsNzk6NzksODA6ODAs
ODE6ODEsODM6ODMsODQ6ODQsODU6ODUsODY6ODYsODc6ODcsODg6ODgsOTk6OTl9XSw3NjpbZnVu
Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3JldHVybiBvLmNh
bGwodGhpcyxlLHQsbixyKX12YXIgbz1lKDgwKSxpPXthbmltYXRpb25OYW1lOm51bGwsZWxhcHNl
ZFRpbWU6bnVsbCxwc2V1ZG9FbGVtZW50Om51bGx9O28uYXVnbWVudENsYXNzKHIsaSksdC5leHBv
cnRzPXJ9LHs4MDo4MH1dLDc3OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IHIoZSx0LG4scil7cmV0dXJuIG8uY2FsbCh0aGlzLGUsdCxuLHIpfXZhciBvPWUoODApLGk9e2Ns
aXBib2FyZERhdGE6ZnVuY3Rpb24oZSl7cmV0dXJuImNsaXBib2FyZERhdGEiaW4gZT9lLmNsaXBi
b2FyZERhdGE6d2luZG93LmNsaXBib2FyZERhdGF9fTtvLmF1Z21lbnRDbGFzcyhyLGkpLHQuZXhw
b3J0cz1yfSx7ODA6ODB9XSw3ODpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biByKGUsdCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixyKX12YXIgbz1lKDgwKSxpPXtk
YXRhOm51bGx9O28uYXVnbWVudENsYXNzKHIsaSksdC5leHBvcnRzPXJ9LHs4MDo4MH1dLDc5Oltm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7cmV0dXJuIG8u
Y2FsbCh0aGlzLGUsdCxuLHIpfXZhciBvPWUoODQpLGk9e2RhdGFUcmFuc2ZlcjpudWxsfTtvLmF1
Z21lbnRDbGFzcyhyLGkpLHQuZXhwb3J0cz1yfSx7ODQ6ODR9XSw4MDpbZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3RoaXMuZGlzcGF0Y2hDb25maWc9ZSx0
aGlzLl90YXJnZXRJbnN0PXQsdGhpcy5uYXRpdmVFdmVudD1uO3ZhciBvPXRoaXMuY29uc3RydWN0
b3IuSW50ZXJmYWNlO2Zvcih2YXIgaSBpbiBvKWlmKG8uaGFzT3duUHJvcGVydHkoaSkpe3ZhciBz
PW9baV07cz90aGlzW2ldPXMobik6InRhcmdldCI9PT1pP3RoaXMudGFyZ2V0PXI6dGhpc1tpXT1u
W2ldfXZhciB1PW51bGwhPW4uZGVmYXVsdFByZXZlbnRlZD9uLmRlZmF1bHRQcmV2ZW50ZWQ6bi5y
ZXR1cm5WYWx1ZT09PSExO3JldHVybiB1P3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPWEudGhhdFJl
dHVybnNUcnVlOnRoaXMuaXNEZWZhdWx0UHJldmVudGVkPWEudGhhdFJldHVybnNGYWxzZSx0aGlz
LmlzUHJvcGFnYXRpb25TdG9wcGVkPWEudGhhdFJldHVybnNGYWxzZSx0aGlzfXZhciBvPWUoMTQz
KSxpPWUoMjQpLGE9ZSgxMjkpLHM9KGUoMTQyKSwiZnVuY3Rpb24iPT10eXBlb2YgUHJveHksWyJk
aXNwYXRjaENvbmZpZyIsIl90YXJnZXRJbnN0IiwibmF0aXZlRXZlbnQiLCJpc0RlZmF1bHRQcmV2
ZW50ZWQiLCJpc1Byb3BhZ2F0aW9uU3RvcHBlZCIsIl9kaXNwYXRjaExpc3RlbmVycyIsIl9kaXNw
YXRjaEluc3RhbmNlcyJdKSx1PXt0eXBlOm51bGwsdGFyZ2V0Om51bGwsY3VycmVudFRhcmdldDph
LnRoYXRSZXR1cm5zTnVsbCxldmVudFBoYXNlOm51bGwsYnViYmxlczpudWxsLGNhbmNlbGFibGU6
bnVsbCx0aW1lU3RhbXA6ZnVuY3Rpb24oZSl7cmV0dXJuIGUudGltZVN0YW1wfHxEYXRlLm5vdygp
fSxkZWZhdWx0UHJldmVudGVkOm51bGwsaXNUcnVzdGVkOm51bGx9O28oci5wcm90b3R5cGUse3By
ZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7dGhpcy5kZWZhdWx0UHJldmVudGVkPSEwO3ZhciBlPXRo
aXMubmF0aXZlRXZlbnQ7ZSYmKGUucHJldmVudERlZmF1bHQ/ZS5wcmV2ZW50RGVmYXVsdCgpOiJ1
bmtub3duIiE9dHlwZW9mIGUucmV0dXJuVmFsdWUmJihlLnJldHVyblZhbHVlPSExKSx0aGlzLmlz
RGVmYXVsdFByZXZlbnRlZD1hLnRoYXRSZXR1cm5zVHJ1ZSl9LHN0b3BQcm9wYWdhdGlvbjpmdW5j
dGlvbigpe3ZhciBlPXRoaXMubmF0aXZlRXZlbnQ7ZSYmKGUuc3RvcFByb3BhZ2F0aW9uP2Uuc3Rv
cFByb3BhZ2F0aW9uKCk6InVua25vd24iIT10eXBlb2YgZS5jYW5jZWxCdWJibGUmJihlLmNhbmNl
bEJ1YmJsZT0hMCksdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1hLnRoYXRSZXR1cm5zVHJ1ZSl9
LHBlcnNpc3Q6ZnVuY3Rpb24oKXt0aGlzLmlzUGVyc2lzdGVudD1hLnRoYXRSZXR1cm5zVHJ1ZX0s
aXNQZXJzaXN0ZW50OmEudGhhdFJldHVybnNGYWxzZSxkZXN0cnVjdG9yOmZ1bmN0aW9uKCl7dmFy
IGU9dGhpcy5jb25zdHJ1Y3Rvci5JbnRlcmZhY2U7Zm9yKHZhciB0IGluIGUpdGhpc1t0XT1udWxs
O2Zvcih2YXIgbj0wO248cy5sZW5ndGg7bisrKXRoaXNbc1tuXV09bnVsbH19KSxyLkludGVyZmFj
ZT11LHIuYXVnbWVudENsYXNzPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcyxyPWZ1bmN0aW9uKCl7
fTtyLnByb3RvdHlwZT1uLnByb3RvdHlwZTt2YXIgYT1uZXcgcjtvKGEsZS5wcm90b3R5cGUpLGUu
cHJvdG90eXBlPWEsZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLkludGVyZmFjZT1vKHt9LG4u
SW50ZXJmYWNlLHQpLGUuYXVnbWVudENsYXNzPW4uYXVnbWVudENsYXNzLGkuYWRkUG9vbGluZ1Rv
KGUsaS5mb3VyQXJndW1lbnRQb29sZXIpfSxpLmFkZFBvb2xpbmdUbyhyLGkuZm91ckFyZ3VtZW50
UG9vbGVyKSx0LmV4cG9ydHM9cn0sezEyOToxMjksMTQyOjE0MiwxNDM6MTQzLDI0OjI0fV0sODE6
W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4g
by5jYWxsKHRoaXMsZSx0LG4scil9dmFyIG89ZSg4NyksaT17cmVsYXRlZFRhcmdldDpudWxsfTtv
LmF1Z21lbnRDbGFzcyhyLGkpLHQuZXhwb3J0cz1yfSx7ODc6ODd9XSw4MjpbZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxl
LHQsbixyKX12YXIgbz1lKDgwKSxpPXtkYXRhOm51bGx9O28uYXVnbWVudENsYXNzKHIsaSksdC5l
eHBvcnRzPXJ9LHs4MDo4MH1dLDgzOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIoZSx0LG4scil7cmV0dXJuIG8uY2FsbCh0aGlzLGUsdCxuLHIpfXZhciBvPWUoODcpLGk9
ZSg5OSksYT1lKDEwMCkscz1lKDEwMSksdT17a2V5OmEsbG9jYXRpb246bnVsbCxjdHJsS2V5Om51
bGwsc2hpZnRLZXk6bnVsbCxhbHRLZXk6bnVsbCxtZXRhS2V5Om51bGwscmVwZWF0Om51bGwsbG9j
YWxlOm51bGwsZ2V0TW9kaWZpZXJTdGF0ZTpzLGNoYXJDb2RlOmZ1bmN0aW9uKGUpe3JldHVybiJr
ZXlwcmVzcyI9PT1lLnR5cGU/aShlKTowfSxrZXlDb2RlOmZ1bmN0aW9uKGUpe3JldHVybiJrZXlk
b3duIj09PWUudHlwZXx8ImtleXVwIj09PWUudHlwZT9lLmtleUNvZGU6MH0sd2hpY2g6ZnVuY3Rp
b24oZSl7cmV0dXJuImtleXByZXNzIj09PWUudHlwZT9pKGUpOiJrZXlkb3duIj09PWUudHlwZXx8
ImtleXVwIj09PWUudHlwZT9lLmtleUNvZGU6MH19O28uYXVnbWVudENsYXNzKHIsdSksdC5leHBv
cnRzPXJ9LHsxMDA6MTAwLDEwMToxMDEsODc6ODcsOTk6OTl9XSw4NDpbZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQs
bixyKX12YXIgbz1lKDg3KSxpPWUoOTApLGE9ZSgxMDEpLHM9e3NjcmVlblg6bnVsbCxzY3JlZW5Z
Om51bGwsY2xpZW50WDpudWxsLGNsaWVudFk6bnVsbCxjdHJsS2V5Om51bGwsc2hpZnRLZXk6bnVs
bCxhbHRLZXk6bnVsbCxtZXRhS2V5Om51bGwsZ2V0TW9kaWZpZXJTdGF0ZTphLGJ1dHRvbjpmdW5j
dGlvbihlKXt2YXIgdD1lLmJ1dHRvbjtyZXR1cm4id2hpY2giaW4gZT90OjI9PT10PzI6ND09PXQ/
MTowfSxidXR0b25zOm51bGwscmVsYXRlZFRhcmdldDpmdW5jdGlvbihlKXtyZXR1cm4gZS5yZWxh
dGVkVGFyZ2V0fHwoZS5mcm9tRWxlbWVudD09PWUuc3JjRWxlbWVudD9lLnRvRWxlbWVudDplLmZy
b21FbGVtZW50KX0scGFnZVg6ZnVuY3Rpb24oZSl7cmV0dXJuInBhZ2VYImluIGU/ZS5wYWdlWDpl
LmNsaWVudFgraS5jdXJyZW50U2Nyb2xsTGVmdH0scGFnZVk6ZnVuY3Rpb24oZSl7cmV0dXJuInBh
Z2VZImluIGU/ZS5wYWdlWTplLmNsaWVudFkraS5jdXJyZW50U2Nyb2xsVG9wfX07by5hdWdtZW50
Q2xhc3MocixzKSx0LmV4cG9ydHM9cn0sezEwMToxMDEsODc6ODcsOTA6OTB9XSw4NTpbZnVuY3Rp
b24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3JldHVybiBvLmNhbGwo
dGhpcyxlLHQsbixyKX12YXIgbz1lKDg3KSxpPWUoMTAxKSxhPXt0b3VjaGVzOm51bGwsdGFyZ2V0
VG91Y2hlczpudWxsLGNoYW5nZWRUb3VjaGVzOm51bGwsYWx0S2V5Om51bGwsbWV0YUtleTpudWxs
LGN0cmxLZXk6bnVsbCxzaGlmdEtleTpudWxsLGdldE1vZGlmaWVyU3RhdGU6aX07by5hdWdtZW50
Q2xhc3MocixhKSx0LmV4cG9ydHM9cn0sezEwMToxMDEsODc6ODd9XSw4NjpbZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxl
LHQsbixyKX12YXIgbz1lKDgwKSxpPXtwcm9wZXJ0eU5hbWU6bnVsbCxlbGFwc2VkVGltZTpudWxs
LHBzZXVkb0VsZW1lbnQ6bnVsbH07by5hdWdtZW50Q2xhc3MocixpKSx0LmV4cG9ydHM9cn0sezgw
OjgwfV0sODc6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixy
KXtyZXR1cm4gby5jYWxsKHRoaXMsZSx0LG4scil9dmFyIG89ZSg4MCksaT1lKDEwMiksYT17dmll
dzpmdW5jdGlvbihlKXtpZihlLnZpZXcpcmV0dXJuIGUudmlldzt2YXIgdD1pKGUpO2lmKHQud2lu
ZG93PT09dClyZXR1cm4gdDt2YXIgbj10Lm93bmVyRG9jdW1lbnQ7cmV0dXJuIG4/bi5kZWZhdWx0
Vmlld3x8bi5wYXJlbnRXaW5kb3c6d2luZG93fSxkZXRhaWw6ZnVuY3Rpb24oZSl7cmV0dXJuIGUu
ZGV0YWlsfHwwfX07by5hdWdtZW50Q2xhc3MocixhKSx0LmV4cG9ydHM9cn0sezEwMjoxMDIsODA6
ODB9XSw4ODpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIp
e3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixyKX12YXIgbz1lKDg0KSxpPXtkZWx0YVg6ZnVuY3Rp
b24oZSl7cmV0dXJuImRlbHRhWCJpbiBlP2UuZGVsdGFYOiJ3aGVlbERlbHRhWCJpbiBlPy1lLndo
ZWVsRGVsdGFYOjB9LGRlbHRhWTpmdW5jdGlvbihlKXtyZXR1cm4iZGVsdGFZImluIGU/ZS5kZWx0
YVk6IndoZWVsRGVsdGFZImluIGU/LWUud2hlZWxEZWx0YVk6IndoZWVsRGVsdGEiaW4gZT8tZS53
aGVlbERlbHRhOjB9LGRlbHRhWjpudWxsLGRlbHRhTW9kZTpudWxsfTtvLmF1Z21lbnRDbGFzcyhy
LGkpLHQuZXhwb3J0cz1yfSx7ODQ6ODR9XSw4OTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
Ijt2YXIgcj1lKDExMyksbz0oZSgxMzcpLHt9KSxpPXtyZWluaXRpYWxpemVUcmFuc2FjdGlvbjpm
dW5jdGlvbigpe3RoaXMudHJhbnNhY3Rpb25XcmFwcGVycz10aGlzLmdldFRyYW5zYWN0aW9uV3Jh
cHBlcnMoKSx0aGlzLndyYXBwZXJJbml0RGF0YT90aGlzLndyYXBwZXJJbml0RGF0YS5sZW5ndGg9
MDp0aGlzLndyYXBwZXJJbml0RGF0YT1bXSx0aGlzLl9pc0luVHJhbnNhY3Rpb249ITF9LF9pc0lu
VHJhbnNhY3Rpb246ITEsZ2V0VHJhbnNhY3Rpb25XcmFwcGVyczpudWxsLGlzSW5UcmFuc2FjdGlv
bjpmdW5jdGlvbigpe3JldHVybiEhdGhpcy5faXNJblRyYW5zYWN0aW9ufSxwZXJmb3JtOmZ1bmN0
aW9uKGUsdCxuLG8saSxhLHMsdSl7dGhpcy5pc0luVHJhbnNhY3Rpb24oKT9yKCIyNyIpOnZvaWQg
MDt2YXIgbCxjO3RyeXt0aGlzLl9pc0luVHJhbnNhY3Rpb249ITAsbD0hMCx0aGlzLmluaXRpYWxp
emVBbGwoMCksYz1lLmNhbGwodCxuLG8saSxhLHMsdSksbD0hMX1maW5hbGx5e3RyeXtpZihsKXRy
eXt0aGlzLmNsb3NlQWxsKDApfWNhdGNoKGUpe31lbHNlIHRoaXMuY2xvc2VBbGwoMCl9ZmluYWxs
eXt0aGlzLl9pc0luVHJhbnNhY3Rpb249ITF9fXJldHVybiBjfSxpbml0aWFsaXplQWxsOmZ1bmN0
aW9uKGUpe2Zvcih2YXIgdD10aGlzLnRyYW5zYWN0aW9uV3JhcHBlcnMsbj1lO248dC5sZW5ndGg7
bisrKXt2YXIgcj10W25dO3RyeXt0aGlzLndyYXBwZXJJbml0RGF0YVtuXT1vLHRoaXMud3JhcHBl
ckluaXREYXRhW25dPXIuaW5pdGlhbGl6ZT9yLmluaXRpYWxpemUuY2FsbCh0aGlzKTpudWxsfWZp
bmFsbHl7aWYodGhpcy53cmFwcGVySW5pdERhdGFbbl09PT1vKXRyeXt0aGlzLmluaXRpYWxpemVB
bGwobisxKX1jYXRjaChlKXt9fX19LGNsb3NlQWxsOmZ1bmN0aW9uKGUpe3RoaXMuaXNJblRyYW5z
YWN0aW9uKCk/dm9pZCAwOnIoIjI4Iik7Zm9yKHZhciB0PXRoaXMudHJhbnNhY3Rpb25XcmFwcGVy
cyxuPWU7bjx0Lmxlbmd0aDtuKyspe3ZhciBpLGE9dFtuXSxzPXRoaXMud3JhcHBlckluaXREYXRh
W25dO3RyeXtpPSEwLHMhPT1vJiZhLmNsb3NlJiZhLmNsb3NlLmNhbGwodGhpcyxzKSxpPSExfWZp
bmFsbHl7aWYoaSl0cnl7dGhpcy5jbG9zZUFsbChuKzEpfWNhdGNoKGUpe319fXRoaXMud3JhcHBl
ckluaXREYXRhLmxlbmd0aD0wfX07dC5leHBvcnRzPWl9LHsxMTM6MTEzLDEzNzoxMzd9XSw5MDpb
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj17Y3VycmVudFNjcm9sbExlZnQ6MCxj
dXJyZW50U2Nyb2xsVG9wOjAscmVmcmVzaFNjcm9sbFZhbHVlczpmdW5jdGlvbihlKXtyLmN1cnJl
bnRTY3JvbGxMZWZ0PWUueCxyLmN1cnJlbnRTY3JvbGxUb3A9ZS55fX07dC5leHBvcnRzPXJ9LHt9
XSw5MTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7cmV0dXJu
IG51bGw9PXQ/bygiMzAiKTp2b2lkIDAsbnVsbD09ZT90OkFycmF5LmlzQXJyYXkoZSk/QXJyYXku
aXNBcnJheSh0KT8oZS5wdXNoLmFwcGx5KGUsdCksZSk6KGUucHVzaCh0KSxlKTpBcnJheS5pc0Fy
cmF5KHQpP1tlXS5jb25jYXQodCk6W2UsdF19dmFyIG89ZSgxMTMpO2UoMTM3KTt0LmV4cG9ydHM9
cn0sezExMzoxMTMsMTM3OjEzN31dLDkyOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIHIoZSl7Zm9yKHZhciB0PTEsbj0wLHI9MCxpPWUubGVuZ3RoLGE9aSYtNDtyPGE7KXtm
b3IodmFyIHM9TWF0aC5taW4ocis0MDk2LGEpO3I8cztyKz00KW4rPSh0Kz1lLmNoYXJDb2RlQXQo
cikpKyh0Kz1lLmNoYXJDb2RlQXQocisxKSkrKHQrPWUuY2hhckNvZGVBdChyKzIpKSsodCs9ZS5j
aGFyQ29kZUF0KHIrMykpO3QlPW8sbiU9b31mb3IoO3I8aTtyKyspbis9dCs9ZS5jaGFyQ29kZUF0
KHIpO3JldHVybiB0JT1vLG4lPW8sdHxuPDwxNn12YXIgbz02NTUyMTt0LmV4cG9ydHM9cn0se31d
LDkzOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWZ1bmN0aW9uKGUpe3JldHVy
biJ1bmRlZmluZWQiIT10eXBlb2YgTVNBcHAmJk1TQXBwLmV4ZWNVbnNhZmVMb2NhbEZ1bmN0aW9u
P2Z1bmN0aW9uKHQsbixyLG8pe01TQXBwLmV4ZWNVbnNhZmVMb2NhbEZ1bmN0aW9uKGZ1bmN0aW9u
KCl7cmV0dXJuIGUodCxuLHIsbyl9KX06ZX07dC5leHBvcnRzPXJ9LHt9XSw5NDpbZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuKXt2YXIgcj1udWxsPT10fHwiYm9v
bGVhbiI9PXR5cGVvZiB0fHwiIj09PXQ7aWYocilyZXR1cm4iIjt2YXIgbz1pc05hTih0KTtyZXR1
cm4gb3x8MD09PXR8fGkuaGFzT3duUHJvcGVydHkoZSkmJmlbZV0/IiIrdDooInN0cmluZyI9PXR5
cGVvZiB0JiYodD10LnRyaW0oKSksdCsicHgiKX12YXIgbz1lKDQpLGk9KGUoMTQyKSxvLmlzVW5p
dGxlc3NOdW1iZXIpO3QuZXhwb3J0cz1yfSx7MTQyOjE0Miw0OjR9XSw5NTpbZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3ZhciB0PSIiK2Usbj1pLmV4ZWModCk7aWYo
IW4pcmV0dXJuIHQ7dmFyIHIsbz0iIixhPTAscz0wO2ZvcihhPW4uaW5kZXg7YTx0Lmxlbmd0aDth
Kyspe3N3aXRjaCh0LmNoYXJDb2RlQXQoYSkpe2Nhc2UgMzQ6cj0iJnF1b3Q7IjticmVhaztjYXNl
IDM4OnI9IiZhbXA7IjticmVhaztjYXNlIDM5OnI9IiYjeDI3OyI7YnJlYWs7Y2FzZSA2MDpyPSIm
bHQ7IjticmVhaztjYXNlIDYyOnI9IiZndDsiO2JyZWFrO2RlZmF1bHQ6Y29udGludWV9cyE9PWEm
JihvKz10LnN1YnN0cmluZyhzLGEpKSxzPWErMSxvKz1yfXJldHVybiBzIT09YT9vK3Quc3Vic3Ry
aW5nKHMsYSk6b31mdW5jdGlvbiBvKGUpe3JldHVybiJib29sZWFuIj09dHlwZW9mIGV8fCJudW1i
ZXIiPT10eXBlb2YgZT8iIitlOnIoZSl9dmFyIGk9L1siJyY8Pl0vO3QuZXhwb3J0cz1vfSx7fV0s
OTY6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtpZihudWxsPT1l
KXJldHVybiBudWxsO2lmKDE9PT1lLm5vZGVUeXBlKXJldHVybiBlO3ZhciB0PWEuZ2V0KGUpO3Jl
dHVybiB0Pyh0PXModCksdD9pLmdldE5vZGVGcm9tSW5zdGFuY2UodCk6bnVsbCk6dm9pZCgiZnVu
Y3Rpb24iPT10eXBlb2YgZS5yZW5kZXI/bygiNDQiKTpvKCI0NSIsT2JqZWN0LmtleXMoZSkpKX12
YXIgbz1lKDExMyksaT0oZSgxMjApLGUoMzMpKSxhPWUoNTcpLHM9ZSgxMDMpO2UoMTM3KSxlKDE0
Mik7dC5leHBvcnRzPXJ9LHsxMDM6MTAzLDExMzoxMTMsMTIwOjEyMCwxMzc6MTM3LDE0MjoxNDIs
MzM6MzMsNTc6NTd9XSw5NzpbZnVuY3Rpb24oZSx0LG4peyhmdW5jdGlvbihuKXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gcihlLHQsbixyKXtpZihlJiYib2JqZWN0Ij09dHlwZW9mIGUpe3ZhciBvPWUs
aT12b2lkIDA9PT1vW25dO2kmJm51bGwhPXQmJihvW25dPXQpfX1mdW5jdGlvbiBvKGUsdCl7aWYo
bnVsbD09ZSlyZXR1cm4gZTt2YXIgbj17fTtyZXR1cm4gaShlLHIsbiksbn12YXIgaT0oZSgyMiks
ZSgxMTgpKTtlKDE0Mik7InVuZGVmaW5lZCIhPXR5cGVvZiBuJiZuLmVudix0LmV4cG9ydHM9b30p
LmNhbGwodGhpcyx2b2lkIDApfSx7MTE4OjExOCwxNDI6MTQyLDIyOjIyfV0sOTg6W2Z1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbil7QXJyYXkuaXNBcnJheShlKT9l
LmZvckVhY2godCxuKTplJiZ0LmNhbGwobixlKX10LmV4cG9ydHM9cn0se31dLDk5OltmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQsbj1lLmtleUNvZGU7cmV0
dXJuImNoYXJDb2RlImluIGU/KHQ9ZS5jaGFyQ29kZSwwPT09dCYmMTM9PT1uJiYodD0xMykpOnQ9
bix0Pj0zMnx8MTM9PT10P3Q6MH10LmV4cG9ydHM9cn0se31dLDEwMDpbZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe2lmKGUua2V5KXt2YXIgdD1pW2Uua2V5XXx8ZS5r
ZXk7aWYoIlVuaWRlbnRpZmllZCIhPT10KXJldHVybiB0fWlmKCJrZXlwcmVzcyI9PT1lLnR5cGUp
e3ZhciBuPW8oZSk7cmV0dXJuIDEzPT09bj8iRW50ZXIiOlN0cmluZy5mcm9tQ2hhckNvZGUobil9
cmV0dXJuImtleWRvd24iPT09ZS50eXBlfHwia2V5dXAiPT09ZS50eXBlP2FbZS5rZXlDb2RlXXx8
IlVuaWRlbnRpZmllZCI6IiJ9dmFyIG89ZSg5OSksaT17RXNjOiJFc2NhcGUiLFNwYWNlYmFyOiIg
IixMZWZ0OiJBcnJvd0xlZnQiLFVwOiJBcnJvd1VwIixSaWdodDoiQXJyb3dSaWdodCIsRG93bjoi
QXJyb3dEb3duIixEZWw6IkRlbGV0ZSIsV2luOiJPUyIsTWVudToiQ29udGV4dE1lbnUiLEFwcHM6
IkNvbnRleHRNZW51IixTY3JvbGw6IlNjcm9sbExvY2siLE1velByaW50YWJsZUtleToiVW5pZGVu
dGlmaWVkIn0sYT17ODoiQmFja3NwYWNlIiw5OiJUYWIiLDEyOiJDbGVhciIsMTM6IkVudGVyIiwx
NjoiU2hpZnQiLDE3OiJDb250cm9sIiwxODoiQWx0IiwxOToiUGF1c2UiLDIwOiJDYXBzTG9jayIs
Mjc6IkVzY2FwZSIsMzI6IiAiLDMzOiJQYWdlVXAiLDM0OiJQYWdlRG93biIsMzU6IkVuZCIsMzY6
IkhvbWUiLDM3OiJBcnJvd0xlZnQiLDM4OiJBcnJvd1VwIiwzOToiQXJyb3dSaWdodCIsNDA6IkFy
cm93RG93biIsNDU6Ikluc2VydCIsNDY6IkRlbGV0ZSIsMTEyOiJGMSIsMTEzOiJGMiIsMTE0OiJG
MyIsMTE1OiJGNCIsMTE2OiJGNSIsMTE3OiJGNiIsMTE4OiJGNyIsMTE5OiJGOCIsMTIwOiJGOSIs
MTIxOiJGMTAiLDEyMjoiRjExIiwxMjM6IkYxMiIsMTQ0OiJOdW1Mb2NrIiwxNDU6IlNjcm9sbExv
Y2siLDIyNDoiTWV0YSJ9O3QuZXhwb3J0cz1yfSx7OTk6OTl9XSwxMDE6W2Z1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIgdD10aGlzLG49dC5uYXRpdmVFdmVudDtp
ZihuLmdldE1vZGlmaWVyU3RhdGUpcmV0dXJuIG4uZ2V0TW9kaWZpZXJTdGF0ZShlKTt2YXIgcj1p
W2VdO3JldHVybiEhciYmISFuW3JdfWZ1bmN0aW9uIG8oZSl7cmV0dXJuIHJ9dmFyIGk9e0FsdDoi
YWx0S2V5IixDb250cm9sOiJjdHJsS2V5IixNZXRhOiJtZXRhS2V5IixTaGlmdDoic2hpZnRLZXki
fTt0LmV4cG9ydHM9b30se31dLDEwMjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiByKGUpe3ZhciB0PWUudGFyZ2V0fHxlLnNyY0VsZW1lbnR8fHdpbmRvdztyZXR1cm4gdC5j
b3JyZXNwb25kaW5nVXNlRWxlbWVudCYmKHQ9dC5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCksMz09
PXQubm9kZVR5cGU/dC5wYXJlbnROb2RlOnR9dC5leHBvcnRzPXJ9LHt9XSwxMDM6W2Z1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtmb3IodmFyIHQ7KHQ9ZS5fcmVuZGVy
ZWROb2RlVHlwZSk9PT1vLkNPTVBPU0lURTspZT1lLl9yZW5kZXJlZENvbXBvbmVudDtyZXR1cm4g
dD09PW8uSE9TVD9lLl9yZW5kZXJlZENvbXBvbmVudDp0PT09by5FTVBUWT9udWxsOnZvaWQgMH12
YXIgbz1lKDYyKTt0LmV4cG9ydHM9cn0sezYyOjYyfV0sMTA0OltmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQ9ZSYmKG8mJmVbb118fGVbaV0pO2lmKCJmdW5j
dGlvbiI9PXR5cGVvZiB0KXJldHVybiB0fXZhciBvPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wm
JlN5bWJvbC5pdGVyYXRvcixpPSJAQGl0ZXJhdG9yIjt0LmV4cG9ydHM9cn0se31dLDEwNTpbZnVu
Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7cmV0dXJuIG8rK312YXIgbz0x
O3QuZXhwb3J0cz1yfSx7fV0sMTA2OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIoZSl7Zm9yKDtlJiZlLmZpcnN0Q2hpbGQ7KWU9ZS5maXJzdENoaWxkO3JldHVybiBlfWZ1
bmN0aW9uIG8oZSl7Zm9yKDtlOyl7aWYoZS5uZXh0U2libGluZylyZXR1cm4gZS5uZXh0U2libGlu
ZztlPWUucGFyZW50Tm9kZX19ZnVuY3Rpb24gaShlLHQpe2Zvcih2YXIgbj1yKGUpLGk9MCxhPTA7
bjspe2lmKDM9PT1uLm5vZGVUeXBlKXtpZihhPWkrbi50ZXh0Q29udGVudC5sZW5ndGgsaTw9dCYm
YT49dClyZXR1cm57bm9kZTpuLG9mZnNldDp0LWl9O2k9YX1uPXIobyhuKSl9fXQuZXhwb3J0cz1p
fSx7fV0sMTA3OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXtyZXR1
cm4haSYmby5jYW5Vc2VET00mJihpPSJ0ZXh0Q29udGVudCJpbiBkb2N1bWVudC5kb2N1bWVudEVs
ZW1lbnQ/InRleHRDb250ZW50IjoiaW5uZXJUZXh0IiksaX12YXIgbz1lKDEyMyksaT1udWxsO3Qu
ZXhwb3J0cz1yfSx7MTIzOjEyM31dLDEwODpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiByKGUsdCl7dmFyIG49e307cmV0dXJuIG5bZS50b0xvd2VyQ2FzZSgpXT10LnRvTG93
ZXJDYXNlKCksblsiV2Via2l0IitlXT0id2Via2l0Iit0LG5bIk1veiIrZV09Im1veiIrdCxuWyJt
cyIrZV09Ik1TIit0LG5bIk8iK2VdPSJvIit0LnRvTG93ZXJDYXNlKCksbn1mdW5jdGlvbiBvKGUp
e2lmKHNbZV0pcmV0dXJuIHNbZV07aWYoIWFbZV0pcmV0dXJuIGU7dmFyIHQ9YVtlXTtmb3IodmFy
IG4gaW4gdClpZih0Lmhhc093blByb3BlcnR5KG4pJiZuIGluIHUpcmV0dXJuIHNbZV09dFtuXTty
ZXR1cm4iIn12YXIgaT1lKDEyMyksYT17YW5pbWF0aW9uZW5kOnIoIkFuaW1hdGlvbiIsIkFuaW1h
dGlvbkVuZCIpLGFuaW1hdGlvbml0ZXJhdGlvbjpyKCJBbmltYXRpb24iLCJBbmltYXRpb25JdGVy
YXRpb24iKSxhbmltYXRpb25zdGFydDpyKCJBbmltYXRpb24iLCJBbmltYXRpb25TdGFydCIpLHRy
YW5zaXRpb25lbmQ6cigiVHJhbnNpdGlvbiIsIlRyYW5zaXRpb25FbmQiKX0scz17fSx1PXt9O2ku
Y2FuVXNlRE9NJiYodT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKS5zdHlsZSwiQW5pbWF0
aW9uRXZlbnQiaW4gd2luZG93fHwoZGVsZXRlIGEuYW5pbWF0aW9uZW5kLmFuaW1hdGlvbixkZWxl
dGUgYS5hbmltYXRpb25pdGVyYXRpb24uYW5pbWF0aW9uLGRlbGV0ZSBhLmFuaW1hdGlvbnN0YXJ0
LmFuaW1hdGlvbiksIlRyYW5zaXRpb25FdmVudCJpbiB3aW5kb3d8fGRlbGV0ZSBhLnRyYW5zaXRp
b25lbmQudHJhbnNpdGlvbiksdC5leHBvcnRzPW99LHsxMjM6MTIzfV0sMTA5OltmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7aWYoZSl7dmFyIHQ9ZS5nZXROYW1lKCk7
aWYodClyZXR1cm4iIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mIGAiK3QrImAuIn1yZXR1cm4i
In1mdW5jdGlvbiBvKGUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlJiYidW5kZWZpbmVkIiE9
dHlwZW9mIGUucHJvdG90eXBlJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5wcm90b3R5cGUubW91bnRD
b21wb25lbnQmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLnByb3RvdHlwZS5yZWNlaXZlQ29tcG9uZW50
fWZ1bmN0aW9uIGkoZSx0KXt2YXIgbjtpZihudWxsPT09ZXx8ZT09PSExKW49bC5jcmVhdGUoaSk7
ZWxzZSBpZigib2JqZWN0Ij09dHlwZW9mIGUpe3ZhciBzPWU7IXN8fCJmdW5jdGlvbiIhPXR5cGVv
ZiBzLnR5cGUmJiJzdHJpbmciIT10eXBlb2Ygcy50eXBlP2EoIjEzMCIsbnVsbD09cy50eXBlP3Mu
dHlwZTp0eXBlb2Ygcy50eXBlLHIocy5fb3duZXIpKTp2b2lkIDAsInN0cmluZyI9PXR5cGVvZiBz
LnR5cGU/bj1jLmNyZWF0ZUludGVybmFsQ29tcG9uZW50KHMpOm8ocy50eXBlKT8obj1uZXcgcy50
eXBlKHMpLG4uZ2V0SG9zdE5vZGV8fChuLmdldEhvc3ROb2RlPW4uZ2V0TmF0aXZlTm9kZSkpOm49
bmV3IHAocyl9ZWxzZSJzdHJpbmciPT10eXBlb2YgZXx8Im51bWJlciI9PXR5cGVvZiBlP249Yy5j
cmVhdGVJbnN0YW5jZUZvclRleHQoZSk6YSgiMTMxIix0eXBlb2YgZSk7cmV0dXJuIG4uX21vdW50
SW5kZXg9MCxuLl9tb3VudEltYWdlPW51bGwsbn12YXIgYT1lKDExMykscz1lKDE0MyksdT1lKDI5
KSxsPWUoNDkpLGM9ZSg1NCkscD0oZSgxMDUpLGUoMTM3KSxlKDE0MiksZnVuY3Rpb24oZSl7dGhp
cy5jb25zdHJ1Y3QoZSl9KTtzKHAucHJvdG90eXBlLHUse19pbnN0YW50aWF0ZVJlYWN0Q29tcG9u
ZW50Oml9KSx0LmV4cG9ydHM9aX0sezEwNToxMDUsMTEzOjExMywxMzc6MTM3LDE0MjoxNDIsMTQz
OjE0MywyOToyOSw0OTo0OSw1NDo1NH1dLDExMDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiByKGUsdCl7aWYoIWkuY2FuVXNlRE9NfHx0JiYhKCJhZGRFdmVudExpc3RlbmVy
ImluIGRvY3VtZW50KSlyZXR1cm4hMTt2YXIgbj0ib24iK2Uscj1uIGluIGRvY3VtZW50O2lmKCFy
KXt2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTthLnNldEF0dHJpYnV0ZShuLCJy
ZXR1cm47Iikscj0iZnVuY3Rpb24iPT10eXBlb2YgYVtuXX1yZXR1cm4hciYmbyYmIndoZWVsIj09
PWUmJihyPWRvY3VtZW50LmltcGxlbWVudGF0aW9uLmhhc0ZlYXR1cmUoIkV2ZW50cy53aGVlbCIs
IjMuMCIpKSxyfXZhciBvLGk9ZSgxMjMpO2kuY2FuVXNlRE9NJiYobz1kb2N1bWVudC5pbXBsZW1l
bnRhdGlvbiYmZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uaGFzRmVhdHVyZSYmZG9jdW1lbnQuaW1w
bGVtZW50YXRpb24uaGFzRmVhdHVyZSgiIiwiIikhPT0hMCksdC5leHBvcnRzPXJ9LHsxMjM6MTIz
fV0sMTExOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQ9
ZSYmZS5ub2RlTmFtZSYmZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiJpbnB1dCI9PT10
PyEhb1tlLnR5cGVdOiJ0ZXh0YXJlYSI9PT10fXZhciBvPXtjb2xvcjohMCxkYXRlOiEwLGRhdGV0
aW1lOiEwLCJkYXRldGltZS1sb2NhbCI6ITAsZW1haWw6ITAsbW9udGg6ITAsbnVtYmVyOiEwLHBh
c3N3b3JkOiEwLHJhbmdlOiEwLHNlYXJjaDohMCx0ZWw6ITAsdGV4dDohMCx0aW1lOiEwLHVybDoh
MCx3ZWVrOiEwfTt0LmV4cG9ydHM9cn0se31dLDExMjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiciJytvKGUpKyciJ312YXIgbz1lKDk1KTt0LmV4cG9y
dHM9cn0sezk1Ojk1fV0sMTEzOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IHIoZSl7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgtMSxuPSJNaW5pZmllZCBSZWFjdCBlcnJv
ciAjIitlKyI7IHZpc2l0IGh0dHA6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy9lcnJv
ci1kZWNvZGVyLmh0bWw/aW52YXJpYW50PSIrZSxyPTA7cjx0O3IrKyluKz0iJmFyZ3NbXT0iK2Vu
Y29kZVVSSUNvbXBvbmVudChhcmd1bWVudHNbcisxXSk7bis9IiBmb3IgdGhlIGZ1bGwgbWVzc2Fn
ZSBvciB1c2UgdGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQgZm9yIGZ1bGwgZXJyb3Jz
IGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuIjt2YXIgbz1uZXcgRXJyb3Iobik7dGhy
b3cgby5uYW1lPSJJbnZhcmlhbnQgVmlvbGF0aW9uIixvLmZyYW1lc1RvUG9wPTEsb310LmV4cG9y
dHM9cn0se31dLDExNDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDYwKTt0
LmV4cG9ydHM9ci5yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcn0sezYwOjYwfV0sMTE1OltmdW5j
dGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByLG89ZSgxMjMpLGk9ZSgxMCksYT0vXlsgXHJc
blx0XGZdLyxzPS88KCEtLXxsaW5rfG5vc2NyaXB0fG1ldGF8c2NyaXB0fHN0eWxlKVsgXHJcblx0
XGZcLz5dLyx1PWUoOTMpLGw9dShmdW5jdGlvbihlLHQpe2lmKGUubmFtZXNwYWNlVVJJIT09aS5z
dmd8fCJpbm5lckhUTUwiaW4gZSllLmlubmVySFRNTD10O2Vsc2V7cj1yfHxkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKSxyLmlubmVySFRNTD0iPHN2Zz4iK3QrIjwvc3ZnPiI7Zm9yKHZhciBu
PXIuZmlyc3RDaGlsZDtuLmZpcnN0Q2hpbGQ7KWUuYXBwZW5kQ2hpbGQobi5maXJzdENoaWxkKX19
KTtpZihvLmNhblVzZURPTSl7dmFyIGM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Yy5p
bm5lckhUTUw9IiAiLCIiPT09Yy5pbm5lckhUTUwmJihsPWZ1bmN0aW9uKGUsdCl7aWYoZS5wYXJl
bnROb2RlJiZlLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKGUsZSksYS50ZXN0KHQpfHwiPCI9PT10
WzBdJiZzLnRlc3QodCkpe2UuaW5uZXJIVE1MPVN0cmluZy5mcm9tQ2hhckNvZGUoNjUyNzkpK3Q7
dmFyIG49ZS5maXJzdENoaWxkOzE9PT1uLmRhdGEubGVuZ3RoP2UucmVtb3ZlQ2hpbGQobik6bi5k
ZWxldGVEYXRhKDAsMSl9ZWxzZSBlLmlubmVySFRNTD10fSksYz1udWxsfXQuZXhwb3J0cz1sfSx7
MTA6MTAsMTIzOjEyMyw5Mzo5M31dLDExNjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2
YXIgcj1lKDEyMyksbz1lKDk1KSxpPWUoMTE1KSxhPWZ1bmN0aW9uKGUsdCl7aWYodCl7dmFyIG49
ZS5maXJzdENoaWxkO2lmKG4mJm49PT1lLmxhc3RDaGlsZCYmMz09PW4ubm9kZVR5cGUpcmV0dXJu
IHZvaWQobi5ub2RlVmFsdWU9dCl9ZS50ZXh0Q29udGVudD10fTtyLmNhblVzZURPTSYmKCJ0ZXh0
Q29udGVudCJpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnR8fChhPWZ1bmN0aW9uKGUsdCl7cmV0
dXJuIDM9PT1lLm5vZGVUeXBlP3ZvaWQoZS5ub2RlVmFsdWU9dCk6dm9pZCBpKGUsbyh0KSl9KSks
dC5leHBvcnRzPWF9LHsxMTU6MTE1LDEyMzoxMjMsOTU6OTV9XSwxMTc6W2Z1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe3ZhciBuPW51bGw9PT1lfHxlPT09ITEscj1u
dWxsPT09dHx8dD09PSExO2lmKG58fHIpcmV0dXJuIG49PT1yO3ZhciBvPXR5cGVvZiBlLGk9dHlw
ZW9mIHQ7cmV0dXJuInN0cmluZyI9PT1vfHwibnVtYmVyIj09PW8/InN0cmluZyI9PT1pfHwibnVt
YmVyIj09PWk6Im9iamVjdCI9PT1pJiZlLnR5cGU9PT10LnR5cGUmJmUua2V5PT09dC5rZXl9dC5l
eHBvcnRzPXJ9LHt9XSwxMTg6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
cihlLHQpe3JldHVybiBlJiYib2JqZWN0Ij09dHlwZW9mIGUmJm51bGwhPWUua2V5P2wuZXNjYXBl
KGUua2V5KTp0LnRvU3RyaW5nKDM2KX1mdW5jdGlvbiBvKGUsdCxuLGkpe3ZhciBkPXR5cGVvZiBl
O2lmKCJ1bmRlZmluZWQiIT09ZCYmImJvb2xlYW4iIT09ZHx8KGU9bnVsbCksbnVsbD09PWV8fCJz
dHJpbmciPT09ZHx8Im51bWJlciI9PT1kfHwib2JqZWN0Ij09PWQmJmUuJCR0eXBlb2Y9PT1zKXJl
dHVybiBuKGksZSwiIj09PXQ/YytyKGUsMCk6dCksMTt2YXIgZixoLG09MCx2PSIiPT09dD9jOnQr
cDtpZihBcnJheS5pc0FycmF5KGUpKWZvcih2YXIgZz0wO2c8ZS5sZW5ndGg7ZysrKWY9ZVtnXSxo
PXYrcihmLGcpLG0rPW8oZixoLG4saSk7ZWxzZXt2YXIgeT11KGUpO2lmKHkpe3ZhciBfLEM9eS5j
YWxsKGUpO2lmKHkhPT1lLmVudHJpZXMpZm9yKHZhciBiPTA7IShfPUMubmV4dCgpKS5kb25lOylm
PV8udmFsdWUsaD12K3IoZixiKyspLG0rPW8oZixoLG4saSk7ZWxzZSBmb3IoOyEoXz1DLm5leHQo
KSkuZG9uZTspe3ZhciBFPV8udmFsdWU7RSYmKGY9RVsxXSxoPXYrbC5lc2NhcGUoRVswXSkrcCty
KGYsMCksbSs9byhmLGgsbixpKSl9fWVsc2UgaWYoIm9iamVjdCI9PT1kKXt2YXIgeD0iIix3PVN0
cmluZyhlKTthKCIzMSIsIltvYmplY3QgT2JqZWN0XSI9PT13PyJvYmplY3Qgd2l0aCBrZXlzIHsi
K09iamVjdC5rZXlzKGUpLmpvaW4oIiwgIikrIn0iOncseCl9fXJldHVybiBtfWZ1bmN0aW9uIGko
ZSx0LG4pe3JldHVybiBudWxsPT1lPzA6byhlLCIiLHQsbil9dmFyIGE9ZSgxMTMpLHM9KGUoMTIw
KSxlKDQ4KSksdT1lKDEwNCksbD0oZSgxMzcpLGUoMjIpKSxjPShlKDE0MiksIi4iKSxwPSI6Ijt0
LmV4cG9ydHM9aX0sezEwNDoxMDQsMTEzOjExMywxMjA6MTIwLDEzNzoxMzcsMTQyOjE0MiwyMjoy
Miw0ODo0OH1dLDExOTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj0oZSgxNDMp
LGUoMTI5KSksbz0oZSgxNDIpLHIpO3QuZXhwb3J0cz1vfSx7MTI5OjEyOSwxNDI6MTQyLDE0Mzox
NDN9XSwxMjA6W2Z1bmN0aW9uKHQsbixyKXsidXNlIHN0cmljdCI7dmFyIG89ZS5fX1NFQ1JFVF9J
TlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRDtuLmV4cG9ydHM9by5SZWFj
dEN1cnJlbnRPd25lcn0se31dLDEyMTpbZnVuY3Rpb24odCxuLHIpeyJ1c2Ugc3RyaWN0IjtuLmV4
cG9ydHM9ZX0se31dLDEyMjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDEy
OSksbz17bGlzdGVuOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZS5hZGRFdmVudExpc3RlbmVyPyhl
LmFkZEV2ZW50TGlzdGVuZXIodCxuLCExKSx7cmVtb3ZlOmZ1bmN0aW9uKCl7ZS5yZW1vdmVFdmVu
dExpc3RlbmVyKHQsbiwhMSl9fSk6ZS5hdHRhY2hFdmVudD8oZS5hdHRhY2hFdmVudCgib24iK3Qs
bikse3JlbW92ZTpmdW5jdGlvbigpe2UuZGV0YWNoRXZlbnQoIm9uIit0LG4pfX0pOnZvaWQgMH0s
Y2FwdHVyZTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIGUuYWRkRXZlbnRMaXN0ZW5lcj8oZS5hZGRF
dmVudExpc3RlbmVyKHQsbiwhMCkse3JlbW92ZTpmdW5jdGlvbigpe2UucmVtb3ZlRXZlbnRMaXN0
ZW5lcih0LG4sITApfX0pOntyZW1vdmU6cn19LHJlZ2lzdGVyRGVmYXVsdDpmdW5jdGlvbigpe319
O3QuZXhwb3J0cz1vfSx7MTI5OjEyOX1dLDEyMzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
Ijt2YXIgcj0hKCJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93fHwhd2luZG93LmRvY3VtZW50fHwh
d2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpLG89e2NhblVzZURPTTpyLGNhblVzZVdvcmtl
cnM6InVuZGVmaW5lZCIhPXR5cGVvZiBXb3JrZXIsY2FuVXNlRXZlbnRMaXN0ZW5lcnM6ciYmISgh
d2luZG93LmFkZEV2ZW50TGlzdGVuZXImJiF3aW5kb3cuYXR0YWNoRXZlbnQpLGNhblVzZVZpZXdw
b3J0OnImJiEhd2luZG93LnNjcmVlbixpc0luV29ya2VyOiFyfTt0LmV4cG9ydHM9b30se31dLDEy
NDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBlLnJl
cGxhY2UobyxmdW5jdGlvbihlLHQpe3JldHVybiB0LnRvVXBwZXJDYXNlKCl9KX12YXIgbz0vLSgu
KS9nO3QuZXhwb3J0cz1yfSx7fV0sMTI1OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIHIoZSl7cmV0dXJuIG8oZS5yZXBsYWNlKGksIm1zLSIpKX12YXIgbz1lKDEyNCksaT0v
Xi1tcy0vO3QuZXhwb3J0cz1yfSx7MTI0OjEyNH1dLDEyNjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7cmV0dXJuISghZXx8IXQpJiYoZT09PXR8fCFvKGUpJiYo
byh0KT9yKGUsdC5wYXJlbnROb2RlKToiY29udGFpbnMiaW4gZT9lLmNvbnRhaW5zKHQpOiEhZS5j
b21wYXJlRG9jdW1lbnRQb3NpdGlvbiYmISEoMTYmZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0
KSkpKX12YXIgbz1lKDEzOSk7dC5leHBvcnRzPXJ9LHsxMzk6MTM5fV0sMTI3OltmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQ9ZS5sZW5ndGg7aWYoQXJyYXku
aXNBcnJheShlKXx8Im9iamVjdCIhPXR5cGVvZiBlJiYiZnVuY3Rpb24iIT10eXBlb2YgZT9hKCEx
KTp2b2lkIDAsIm51bWJlciIhPXR5cGVvZiB0P2EoITEpOnZvaWQgMCwwPT09dHx8dC0xIGluIGU/
dm9pZCAwOmEoITEpLCJmdW5jdGlvbiI9PXR5cGVvZiBlLmNhbGxlZT9hKCExKTp2b2lkIDAsZS5o
YXNPd25Qcm9wZXJ0eSl0cnl7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGUpfWNh
dGNoKGUpe31mb3IodmFyIG49QXJyYXkodCkscj0wO3I8dDtyKyspbltyXT1lW3JdO3JldHVybiBu
fWZ1bmN0aW9uIG8oZSl7cmV0dXJuISFlJiYoIm9iamVjdCI9PXR5cGVvZiBlfHwiZnVuY3Rpb24i
PT10eXBlb2YgZSkmJiJsZW5ndGgiaW4gZSYmISgic2V0SW50ZXJ2YWwiaW4gZSkmJiJudW1iZXIi
IT10eXBlb2YgZS5ub2RlVHlwZSYmKEFycmF5LmlzQXJyYXkoZSl8fCJjYWxsZWUiaW4gZXx8Iml0
ZW0iaW4gZSl9ZnVuY3Rpb24gaShlKXtyZXR1cm4gbyhlKT9BcnJheS5pc0FycmF5KGUpP2Uuc2xp
Y2UoKTpyKGUpOltlXX12YXIgYT1lKDEzNyk7dC5leHBvcnRzPWl9LHsxMzc6MTM3fV0sMTI4Oltm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQ9ZS5tYXRjaChj
KTtyZXR1cm4gdCYmdFsxXS50b0xvd2VyQ2FzZSgpfWZ1bmN0aW9uIG8oZSx0KXt2YXIgbj1sO2w/
dm9pZCAwOnUoITEpO3ZhciBvPXIoZSksaT1vJiZzKG8pO2lmKGkpe24uaW5uZXJIVE1MPWlbMV0r
ZStpWzJdO2Zvcih2YXIgYz1pWzBdO2MtLTspbj1uLmxhc3RDaGlsZH1lbHNlIG4uaW5uZXJIVE1M
PWU7dmFyIHA9bi5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0Iik7cC5sZW5ndGgmJih0P3Zv
aWQgMDp1KCExKSxhKHApLmZvckVhY2godCkpO2Zvcih2YXIgZD1BcnJheS5mcm9tKG4uY2hpbGRO
b2Rlcyk7bi5sYXN0Q2hpbGQ7KW4ucmVtb3ZlQ2hpbGQobi5sYXN0Q2hpbGQpO3JldHVybiBkfXZh
ciBpPWUoMTIzKSxhPWUoMTI3KSxzPWUoMTMzKSx1PWUoMTM3KSxsPWkuY2FuVXNlRE9NP2RvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOm51bGwsYz0vXlxzKjwoXHcrKS87dC5leHBvcnRzPW99
LHsxMjM6MTIzLDEyNzoxMjcsMTMzOjEzMywxMzc6MTM3fV0sMTI5OltmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGV9fXZh
ciBvPWZ1bmN0aW9uKCl7fTtvLnRoYXRSZXR1cm5zPXIsby50aGF0UmV0dXJuc0ZhbHNlPXIoITEp
LG8udGhhdFJldHVybnNUcnVlPXIoITApLG8udGhhdFJldHVybnNOdWxsPXIobnVsbCksby50aGF0
UmV0dXJuc1RoaXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sby50aGF0UmV0dXJuc0FyZ3VtZW50
PWZ1bmN0aW9uKGUpe3JldHVybiBlfSx0LmV4cG9ydHM9b30se31dLDEzMDpbZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj17fTt0LmV4cG9ydHM9cn0se31dLDEzMTpbZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3RyeXtlLmZvY3VzKCl9Y2F0Y2goZSl7
fX10LmV4cG9ydHM9cn0se31dLDEzMjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiByKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBkb2N1bWVudClyZXR1cm4gbnVsbDt0cnl7
cmV0dXJuIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnR8fGRvY3VtZW50LmJvZHl9Y2F0Y2goZSl7cmV0
dXJuIGRvY3VtZW50LmJvZHl9fXQuZXhwb3J0cz1yfSx7fV0sMTMzOltmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGE/dm9pZCAwOmkoITEpLGQuaGFzT3du
UHJvcGVydHkoZSl8fChlPSIqIikscy5oYXNPd25Qcm9wZXJ0eShlKXx8KCIqIj09PWU/YS5pbm5l
ckhUTUw9IjxsaW5rIC8+IjphLmlubmVySFRNTD0iPCIrZSsiPjwvIitlKyI+IixzW2VdPSFhLmZp
cnN0Q2hpbGQpLHNbZV0/ZFtlXTpudWxsfXZhciBvPWUoMTIzKSxpPWUoMTM3KSxhPW8uY2FuVXNl
RE9NP2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOm51bGwscz17fSx1PVsxLCc8c2VsZWN0
IG11bHRpcGxlPSJ0cnVlIj4nLCI8L3NlbGVjdD4iXSxsPVsxLCI8dGFibGU+IiwiPC90YWJsZT4i
XSxjPVszLCI8dGFibGU+PHRib2R5Pjx0cj4iLCI8L3RyPjwvdGJvZHk+PC90YWJsZT4iXSxwPVsx
LCc8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+JywiPC9zdmc+Il0sZD17
IioiOlsxLCI/PGRpdj4iLCI8L2Rpdj4iXSxhcmVhOlsxLCI8bWFwPiIsIjwvbWFwPiJdLGNvbDpb
MiwiPHRhYmxlPjx0Ym9keT48L3Rib2R5Pjxjb2xncm91cD4iLCI8L2NvbGdyb3VwPjwvdGFibGU+
Il0sbGVnZW5kOlsxLCI8ZmllbGRzZXQ+IiwiPC9maWVsZHNldD4iXSxwYXJhbTpbMSwiPG9iamVj
dD4iLCI8L29iamVjdD4iXSx0cjpbMiwiPHRhYmxlPjx0Ym9keT4iLCI8L3Rib2R5PjwvdGFibGU+
Il0sb3B0Z3JvdXA6dSxvcHRpb246dSxjYXB0aW9uOmwsY29sZ3JvdXA6bCx0Ym9keTpsLHRmb290
OmwsdGhlYWQ6bCx0ZDpjLHRoOmN9LGY9WyJjaXJjbGUiLCJjbGlwUGF0aCIsImRlZnMiLCJlbGxp
cHNlIiwiZyIsImltYWdlIiwibGluZSIsImxpbmVhckdyYWRpZW50IiwibWFzayIsInBhdGgiLCJw
YXR0ZXJuIiwicG9seWdvbiIsInBvbHlsaW5lIiwicmFkaWFsR3JhZGllbnQiLCJyZWN0Iiwic3Rv
cCIsInRleHQiLCJ0c3BhbiJdO2YuZm9yRWFjaChmdW5jdGlvbihlKXtkW2VdPXAsc1tlXT0hMH0p
LHQuZXhwb3J0cz1yfSx7MTIzOjEyMywxMzc6MTM3fV0sMTM0OltmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGU9PT13aW5kb3c/e3g6d2luZG93LnBhZ2VY
T2Zmc2V0fHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdCx5OndpbmRvdy5wYWdl
WU9mZnNldHx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcH06e3g6ZS5zY3JvbGxM
ZWZ0LHk6ZS5zY3JvbGxUb3B9fXQuZXhwb3J0cz1yfSx7fV0sMTM1OltmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGUucmVwbGFjZShvLCItJDEiKS50b0xv
d2VyQ2FzZSgpfXZhciBvPS8oW0EtWl0pL2c7dC5leHBvcnRzPXJ9LHt9XSwxMzY6W2Z1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gbyhlKS5yZXBsYWNlKGks
Ii1tcy0iKX12YXIgbz1lKDEzNSksaT0vXm1zLS87dC5leHBvcnRzPXJ9LHsxMzU6MTM1fV0sMTM3
OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scixvLGksYSxz
KXtpZighZSl7dmFyIHU7aWYodm9pZCAwPT09dCl1PW5ldyBFcnJvcigiTWluaWZpZWQgZXhjZXB0
aW9uIG9jY3VycmVkOyB1c2UgdGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQgZm9yIHRo
ZSBmdWxsIGVycm9yIG1lc3NhZ2UgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5ncy4iKTtl
bHNle3ZhciBsPVtuLHIsbyxpLGEsc10sYz0wO3U9bmV3IEVycm9yKHQucmVwbGFjZSgvJXMvZyxm
dW5jdGlvbigpe3JldHVybiBsW2MrK119KSksdS5uYW1lPSJJbnZhcmlhbnQgVmlvbGF0aW9uIn10
aHJvdyB1LmZyYW1lc1RvUG9wPTEsdX19dC5leHBvcnRzPXJ9LHt9XSwxMzg6W2Z1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4hKCFlfHwhKCJmdW5jdGlvbiI9
PXR5cGVvZiBOb2RlP2UgaW5zdGFuY2VvZiBOb2RlOiJvYmplY3QiPT10eXBlb2YgZSYmIm51bWJl
ciI9PXR5cGVvZiBlLm5vZGVUeXBlJiYic3RyaW5nIj09dHlwZW9mIGUubm9kZU5hbWUpKX10LmV4
cG9ydHM9cn0se31dLDEzOTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBy
KGUpe3JldHVybiBvKGUpJiYzPT1lLm5vZGVUeXBlfXZhciBvPWUoMTM4KTt0LmV4cG9ydHM9cn0s
ezEzODoxMzh9XSwxNDA6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihl
KXt2YXIgdD17fTtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHQuaGFzT3duUHJvcGVydHkobil8
fCh0W25dPWUuY2FsbCh0aGlzLG4pKSx0W25dfX10LmV4cG9ydHM9cn0se31dLDE0MTpbZnVuY3Rp
b24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7cmV0dXJuIGU9PT10PzAhPT1l
fHwwIT09dHx8MS9lPT09MS90OmUhPT1lJiZ0IT09dH1mdW5jdGlvbiBvKGUsdCl7aWYocihlLHQp
KXJldHVybiEwO2lmKCJvYmplY3QiIT10eXBlb2YgZXx8bnVsbD09PWV8fCJvYmplY3QiIT10eXBl
b2YgdHx8bnVsbD09PXQpcmV0dXJuITE7dmFyIG49T2JqZWN0LmtleXMoZSksbz1PYmplY3Qua2V5
cyh0KTtpZihuLmxlbmd0aCE9PW8ubGVuZ3RoKXJldHVybiExO2Zvcih2YXIgYT0wO2E8bi5sZW5n
dGg7YSsrKWlmKCFpLmNhbGwodCxuW2FdKXx8IXIoZVtuW2FdXSx0W25bYV1dKSlyZXR1cm4hMTty
ZXR1cm4hMH12YXIgaT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3QuZXhwb3J0cz1v
fSx7fV0sMTQyOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoMTI5KSxvPXI7
dC5leHBvcnRzPW99LHsxMjk6MTI5fV0sMTQzOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIHIoZSl7aWYobnVsbD09PWV8fHZvaWQgMD09PWUpdGhyb3cgbmV3IFR5cGVFcnJv
cigiT2JqZWN0LmFzc2lnbiBjYW5ub3QgYmUgY2FsbGVkIHdpdGggbnVsbCBvciB1bmRlZmluZWQi
KTtyZXR1cm4gT2JqZWN0KGUpfWZ1bmN0aW9uIG8oKXt0cnl7aWYoIU9iamVjdC5hc3NpZ24pcmV0
dXJuITE7dmFyIGU9bmV3IFN0cmluZygiYWJjIik7aWYoZVs1XT0iZGUiLCI1Ij09PU9iamVjdC5n
ZXRPd25Qcm9wZXJ0eU5hbWVzKGUpWzBdKXJldHVybiExO2Zvcih2YXIgdD17fSxuPTA7bjwxMDtu
KyspdFsiXyIrU3RyaW5nLmZyb21DaGFyQ29kZShuKV09bjt2YXIgcj1PYmplY3QuZ2V0T3duUHJv
cGVydHlOYW1lcyh0KS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIHRbZV19KTtpZigiMDEyMzQ1Njc4
OSIhPT1yLmpvaW4oIiIpKXJldHVybiExO3ZhciBvPXt9O3JldHVybiJhYmNkZWZnaGlqa2xtbm9w
cXJzdCIuc3BsaXQoIiIpLmZvckVhY2goZnVuY3Rpb24oZSl7b1tlXT1lfSksImFiY2RlZmdoaWpr
bG1ub3BxcnN0Ij09PU9iamVjdC5rZXlzKE9iamVjdC5hc3NpZ24oe30sbykpLmpvaW4oIiIpfWNh
dGNoKGUpe3JldHVybiExfX12YXIgaT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LGE9
T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTt0LmV4cG9ydHM9bygpP09iamVj
dC5hc3NpZ246ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4sbyxzPXIoZSksdT0xO3U8YXJndW1lbnRz
Lmxlbmd0aDt1Kyspe249T2JqZWN0KGFyZ3VtZW50c1t1XSk7Zm9yKHZhciBsIGluIG4paS5jYWxs
KG4sbCkmJihzW2xdPW5bbF0pO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe289T2Jq
ZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhuKTtmb3IodmFyIGM9MDtjPG8ubGVuZ3RoO2MrKylh
LmNhbGwobixvW2NdKSYmKHNbb1tjXV09bltvW2NdXSl9fXJldHVybiBzfX0se31dfSx7fSxbNDVd
KSg0NSl9KX0pOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vaW5kZXguanMgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2luZGV4LmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJiZjk0
MTc5MzZmN2NiYmYwM2MwZjFkZWQ0MmNlOTMyMGEyMTRhY2IKLS0tIC9kZXYvbnVsbAorKysgYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2luZGV4LmpzCkBAIC0wLDAg
KzEsMyBAQAorJ3VzZSBzdHJpY3QnOworCittb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vbGli
L1JlYWN0RE9NJyk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMv
cmVhY3QtZG9tL2xpYi9BUklBRE9NUHJvcGVydHlDb25maWcuanMgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFj
dC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9BUklBRE9NUHJvcGVydHlDb25maWcuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYjZkOGEzZjkzNjk3OWFhZWMyZmU2NjgzYmE4MmZkYTk2ZGQ5ZWYyMAotLS0gL2Rl
di9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGli
L0FSSUFET01Qcm9wZXJ0eUNvbmZpZy5qcwpAQCAtMCwwICsxLDczIEBACisvKioKKyAqIENvcHly
aWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgQVJJQURPTVByb3BlcnR5
Q29uZmlnID0geworICBQcm9wZXJ0aWVzOiB7CisgICAgLy8gR2xvYmFsIFN0YXRlcyBhbmQgUHJv
cGVydGllcworICAgICdhcmlhLWN1cnJlbnQnOiAwLCAvLyBzdGF0ZQorICAgICdhcmlhLWRldGFp
bHMnOiAwLAorICAgICdhcmlhLWRpc2FibGVkJzogMCwgLy8gc3RhdGUKKyAgICAnYXJpYS1oaWRk
ZW4nOiAwLCAvLyBzdGF0ZQorICAgICdhcmlhLWludmFsaWQnOiAwLCAvLyBzdGF0ZQorICAgICdh
cmlhLWtleXNob3J0Y3V0cyc6IDAsCisgICAgJ2FyaWEtbGFiZWwnOiAwLAorICAgICdhcmlhLXJv
bGVkZXNjcmlwdGlvbic6IDAsCisgICAgLy8gV2lkZ2V0IEF0dHJpYnV0ZXMKKyAgICAnYXJpYS1h
dXRvY29tcGxldGUnOiAwLAorICAgICdhcmlhLWNoZWNrZWQnOiAwLAorICAgICdhcmlhLWV4cGFu
ZGVkJzogMCwKKyAgICAnYXJpYS1oYXNwb3B1cCc6IDAsCisgICAgJ2FyaWEtbGV2ZWwnOiAwLAor
ICAgICdhcmlhLW1vZGFsJzogMCwKKyAgICAnYXJpYS1tdWx0aWxpbmUnOiAwLAorICAgICdhcmlh
LW11bHRpc2VsZWN0YWJsZSc6IDAsCisgICAgJ2FyaWEtb3JpZW50YXRpb24nOiAwLAorICAgICdh
cmlhLXBsYWNlaG9sZGVyJzogMCwKKyAgICAnYXJpYS1wcmVzc2VkJzogMCwKKyAgICAnYXJpYS1y
ZWFkb25seSc6IDAsCisgICAgJ2FyaWEtcmVxdWlyZWQnOiAwLAorICAgICdhcmlhLXNlbGVjdGVk
JzogMCwKKyAgICAnYXJpYS1zb3J0JzogMCwKKyAgICAnYXJpYS12YWx1ZW1heCc6IDAsCisgICAg
J2FyaWEtdmFsdWVtaW4nOiAwLAorICAgICdhcmlhLXZhbHVlbm93JzogMCwKKyAgICAnYXJpYS12
YWx1ZXRleHQnOiAwLAorICAgIC8vIExpdmUgUmVnaW9uIEF0dHJpYnV0ZXMKKyAgICAnYXJpYS1h
dG9taWMnOiAwLAorICAgICdhcmlhLWJ1c3knOiAwLAorICAgICdhcmlhLWxpdmUnOiAwLAorICAg
ICdhcmlhLXJlbGV2YW50JzogMCwKKyAgICAvLyBEcmFnLWFuZC1Ecm9wIEF0dHJpYnV0ZXMKKyAg
ICAnYXJpYS1kcm9wZWZmZWN0JzogMCwKKyAgICAnYXJpYS1ncmFiYmVkJzogMCwKKyAgICAvLyBS
ZWxhdGlvbnNoaXAgQXR0cmlidXRlcworICAgICdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnOiAwLAor
ICAgICdhcmlhLWNvbGNvdW50JzogMCwKKyAgICAnYXJpYS1jb2xpbmRleCc6IDAsCisgICAgJ2Fy
aWEtY29sc3Bhbic6IDAsCisgICAgJ2FyaWEtY29udHJvbHMnOiAwLAorICAgICdhcmlhLWRlc2Ny
aWJlZGJ5JzogMCwKKyAgICAnYXJpYS1lcnJvcm1lc3NhZ2UnOiAwLAorICAgICdhcmlhLWZsb3d0
byc6IDAsCisgICAgJ2FyaWEtbGFiZWxsZWRieSc6IDAsCisgICAgJ2FyaWEtb3ducyc6IDAsCisg
ICAgJ2FyaWEtcG9zaW5zZXQnOiAwLAorICAgICdhcmlhLXJvd2NvdW50JzogMCwKKyAgICAnYXJp
YS1yb3dpbmRleCc6IDAsCisgICAgJ2FyaWEtcm93c3Bhbic6IDAsCisgICAgJ2FyaWEtc2V0c2l6
ZSc6IDAKKyAgfSwKKyAgRE9NQXR0cmlidXRlTmFtZXM6IHt9LAorICBET01Qcm9wZXJ0eU5hbWVz
OiB7fQorfTsKKworbW9kdWxlLmV4cG9ydHMgPSBBUklBRE9NUHJvcGVydHlDb25maWc7ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9k
ZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvQXV0b0ZvY3VzVXRpbHMuanMgYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9y
ZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9BdXRvRm9jdXNVdGlscy5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zMWU2NDY5MGZmZjQ2YmY4OGQ3MDFmMGE1YmU4YTFjYTRmOWQ1NjgxCi0tLSAvZGV2L251
bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvQXV0
b0ZvY3VzVXRpbHMuanMKQEAgLTAsMCArMSwyMyBAQAorLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1w
cmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBU
aGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBm
b3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBj
YW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisg
KgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IHJl
cXVpcmUoJy4vUmVhY3RET01Db21wb25lbnRUcmVlJyk7CisKK3ZhciBmb2N1c05vZGUgPSByZXF1
aXJlKCdmYmpzL2xpYi9mb2N1c05vZGUnKTsKKwordmFyIEF1dG9Gb2N1c1V0aWxzID0geworICBm
b2N1c0RPTUNvbXBvbmVudDogZnVuY3Rpb24gKCkgeworICAgIGZvY3VzTm9kZShSZWFjdERPTUNv
bXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0aGlzKSk7CisgIH0KK307CisKK21vZHVs
ZS5leHBvcnRzID0gQXV0b0ZvY3VzVXRpbHM7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIv
QmVmb3JlSW5wdXRFdmVudFBsdWdpbi5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxl
cy9yZWFjdC1kb20vbGliL0JlZm9yZUlucHV0RXZlbnRQbHVnaW4uanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjFl
ZjAwYTAzNzRlMGNhZmQ1YmZiNDcyMmYyNGRjY2E3OWQwNmQxZQotLS0gL2Rldi9udWxsCisrKyBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL0JlZm9yZUlucHV0
RXZlbnRQbHVnaW4uanMKQEAgLTAsMCArMSwzODQgQEAKKy8qKgorICogQ29weXJpZ2h0IDIwMTMt
cHJlc2VudCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBU
aGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBm
b3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBj
YW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisg
KgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIEV2ZW50UHJvcGFnYXRvcnMgPSByZXF1aXJl
KCcuL0V2ZW50UHJvcGFnYXRvcnMnKTsKK3ZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IHJlcXVp
cmUoJ2ZianMvbGliL0V4ZWN1dGlvbkVudmlyb25tZW50Jyk7Cit2YXIgRmFsbGJhY2tDb21wb3Np
dGlvblN0YXRlID0gcmVxdWlyZSgnLi9GYWxsYmFja0NvbXBvc2l0aW9uU3RhdGUnKTsKK3ZhciBT
eW50aGV0aWNDb21wb3NpdGlvbkV2ZW50ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNDb21wb3NpdGlv
bkV2ZW50Jyk7Cit2YXIgU3ludGhldGljSW5wdXRFdmVudCA9IHJlcXVpcmUoJy4vU3ludGhldGlj
SW5wdXRFdmVudCcpOworCit2YXIgRU5EX0tFWUNPREVTID0gWzksIDEzLCAyNywgMzJdOyAvLyBU
YWIsIFJldHVybiwgRXNjLCBTcGFjZQordmFyIFNUQVJUX0tFWUNPREUgPSAyMjk7CisKK3ZhciBj
YW5Vc2VDb21wb3NpdGlvbkV2ZW50ID0gRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NICYm
ICdDb21wb3NpdGlvbkV2ZW50JyBpbiB3aW5kb3c7CisKK3ZhciBkb2N1bWVudE1vZGUgPSBudWxs
OworaWYgKEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSAmJiAnZG9jdW1lbnRNb2RlJyBp
biBkb2N1bWVudCkgeworICBkb2N1bWVudE1vZGUgPSBkb2N1bWVudC5kb2N1bWVudE1vZGU7Cit9
CisKKy8vIFdlYmtpdCBvZmZlcnMgYSB2ZXJ5IHVzZWZ1bCBgdGV4dElucHV0YCBldmVudCB0aGF0
IGNhbiBiZSB1c2VkIHRvCisvLyBkaXJlY3RseSByZXByZXNlbnQgYGJlZm9yZUlucHV0YC4gVGhl
IElFIGB0ZXh0aW5wdXRgIGV2ZW50IGlzIG5vdCBhcworLy8gdXNlZnVsLCBzbyB3ZSBkb24ndCB1
c2UgaXQuCit2YXIgY2FuVXNlVGV4dElucHV0RXZlbnQgPSBFeGVjdXRpb25FbnZpcm9ubWVudC5j
YW5Vc2VET00gJiYgJ1RleHRFdmVudCcgaW4gd2luZG93ICYmICFkb2N1bWVudE1vZGUgJiYgIWlz
UHJlc3RvKCk7CisKKy8vIEluIElFOSssIHdlIGhhdmUgYWNjZXNzIHRvIGNvbXBvc2l0aW9uIGV2
ZW50cywgYnV0IHRoZSBkYXRhIHN1cHBsaWVkCisvLyBieSB0aGUgbmF0aXZlIGNvbXBvc2l0aW9u
ZW5kIGV2ZW50IG1heSBiZSBpbmNvcnJlY3QuIEphcGFuZXNlIGlkZW9ncmFwaGljCisvLyBzcGFj
ZXMsIGZvciBpbnN0YW5jZSAoXHUzMDAwKSBhcmUgbm90IHJlY29yZGVkIGNvcnJlY3RseS4KK3Zh
ciB1c2VGYWxsYmFja0NvbXBvc2l0aW9uRGF0YSA9IEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVz
ZURPTSAmJiAoIWNhblVzZUNvbXBvc2l0aW9uRXZlbnQgfHwgZG9jdW1lbnRNb2RlICYmIGRvY3Vt
ZW50TW9kZSA+IDggJiYgZG9jdW1lbnRNb2RlIDw9IDExKTsKKworLyoqCisgKiBPcGVyYSA8PSAx
MiBpbmNsdWRlcyBUZXh0RXZlbnQgaW4gd2luZG93LCBidXQgZG9lcyBub3QgZmlyZQorICogdGV4
dCBpbnB1dCBldmVudHMuIFJlbHkgb24ga2V5cHJlc3MgaW5zdGVhZC4KKyAqLworZnVuY3Rpb24g
aXNQcmVzdG8oKSB7CisgIHZhciBvcGVyYSA9IHdpbmRvdy5vcGVyYTsKKyAgcmV0dXJuIHR5cGVv
ZiBvcGVyYSA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG9wZXJhLnZlcnNpb24gPT09ICdmdW5jdGlv
bicgJiYgcGFyc2VJbnQob3BlcmEudmVyc2lvbigpLCAxMCkgPD0gMTI7Cit9CisKK3ZhciBTUEFD
RUJBUl9DT0RFID0gMzI7Cit2YXIgU1BBQ0VCQVJfQ0hBUiA9IFN0cmluZy5mcm9tQ2hhckNvZGUo
U1BBQ0VCQVJfQ09ERSk7CisKKy8vIEV2ZW50cyBhbmQgdGhlaXIgY29ycmVzcG9uZGluZyBwcm9w
ZXJ0eSBuYW1lcy4KK3ZhciBldmVudFR5cGVzID0geworICBiZWZvcmVJbnB1dDogeworICAgIHBo
YXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7CisgICAgICBidWJibGVkOiAnb25CZWZvcmVJbnB1dCcs
CisgICAgICBjYXB0dXJlZDogJ29uQmVmb3JlSW5wdXRDYXB0dXJlJworICAgIH0sCisgICAgZGVw
ZW5kZW5jaWVzOiBbJ3RvcENvbXBvc2l0aW9uRW5kJywgJ3RvcEtleVByZXNzJywgJ3RvcFRleHRJ
bnB1dCcsICd0b3BQYXN0ZSddCisgIH0sCisgIGNvbXBvc2l0aW9uRW5kOiB7CisgICAgcGhhc2Vk
UmVnaXN0cmF0aW9uTmFtZXM6IHsKKyAgICAgIGJ1YmJsZWQ6ICdvbkNvbXBvc2l0aW9uRW5kJywK
KyAgICAgIGNhcHR1cmVkOiAnb25Db21wb3NpdGlvbkVuZENhcHR1cmUnCisgICAgfSwKKyAgICBk
ZXBlbmRlbmNpZXM6IFsndG9wQmx1cicsICd0b3BDb21wb3NpdGlvbkVuZCcsICd0b3BLZXlEb3du
JywgJ3RvcEtleVByZXNzJywgJ3RvcEtleVVwJywgJ3RvcE1vdXNlRG93biddCisgIH0sCisgIGNv
bXBvc2l0aW9uU3RhcnQ6IHsKKyAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczogeworICAgICAg
YnViYmxlZDogJ29uQ29tcG9zaXRpb25TdGFydCcsCisgICAgICBjYXB0dXJlZDogJ29uQ29tcG9z
aXRpb25TdGFydENhcHR1cmUnCisgICAgfSwKKyAgICBkZXBlbmRlbmNpZXM6IFsndG9wQmx1cics
ICd0b3BDb21wb3NpdGlvblN0YXJ0JywgJ3RvcEtleURvd24nLCAndG9wS2V5UHJlc3MnLCAndG9w
S2V5VXAnLCAndG9wTW91c2VEb3duJ10KKyAgfSwKKyAgY29tcG9zaXRpb25VcGRhdGU6IHsKKyAg
ICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczogeworICAgICAgYnViYmxlZDogJ29uQ29tcG9zaXRp
b25VcGRhdGUnLAorICAgICAgY2FwdHVyZWQ6ICdvbkNvbXBvc2l0aW9uVXBkYXRlQ2FwdHVyZScK
KyAgICB9LAorICAgIGRlcGVuZGVuY2llczogWyd0b3BCbHVyJywgJ3RvcENvbXBvc2l0aW9uVXBk
YXRlJywgJ3RvcEtleURvd24nLCAndG9wS2V5UHJlc3MnLCAndG9wS2V5VXAnLCAndG9wTW91c2VE
b3duJ10KKyAgfQorfTsKKworLy8gVHJhY2sgd2hldGhlciB3ZSd2ZSBldmVyIGhhbmRsZWQgYSBr
ZXlwcmVzcyBvbiB0aGUgc3BhY2Uga2V5LgordmFyIGhhc1NwYWNlS2V5cHJlc3MgPSBmYWxzZTsK
KworLyoqCisgKiBSZXR1cm4gd2hldGhlciBhIG5hdGl2ZSBrZXlwcmVzcyBldmVudCBpcyBhc3N1
bWVkIHRvIGJlIGEgY29tbWFuZC4KKyAqIFRoaXMgaXMgcmVxdWlyZWQgYmVjYXVzZSBGaXJlZm94
IGZpcmVzIGBrZXlwcmVzc2AgZXZlbnRzIGZvciBrZXkgY29tbWFuZHMKKyAqIChjdXQsIGNvcHks
IHNlbGVjdC1hbGwsIGV0Yy4pIGV2ZW4gdGhvdWdoIG5vIGNoYXJhY3RlciBpcyBpbnNlcnRlZC4K
KyAqLworZnVuY3Rpb24gaXNLZXlwcmVzc0NvbW1hbmQobmF0aXZlRXZlbnQpIHsKKyAgcmV0dXJu
IChuYXRpdmVFdmVudC5jdHJsS2V5IHx8IG5hdGl2ZUV2ZW50LmFsdEtleSB8fCBuYXRpdmVFdmVu
dC5tZXRhS2V5KSAmJgorICAvLyBjdHJsS2V5ICYmIGFsdEtleSBpcyBlcXVpdmFsZW50IHRvIEFs
dEdyLCBhbmQgaXMgbm90IGEgY29tbWFuZC4KKyAgIShuYXRpdmVFdmVudC5jdHJsS2V5ICYmIG5h
dGl2ZUV2ZW50LmFsdEtleSk7Cit9CisKKy8qKgorICogVHJhbnNsYXRlIG5hdGl2ZSB0b3AgbGV2
ZWwgZXZlbnRzIGludG8gZXZlbnQgdHlwZXMuCisgKgorICogQHBhcmFtIHtzdHJpbmd9IHRvcExl
dmVsVHlwZQorICogQHJldHVybiB7b2JqZWN0fQorICovCitmdW5jdGlvbiBnZXRDb21wb3NpdGlv
bkV2ZW50VHlwZSh0b3BMZXZlbFR5cGUpIHsKKyAgc3dpdGNoICh0b3BMZXZlbFR5cGUpIHsKKyAg
ICBjYXNlICd0b3BDb21wb3NpdGlvblN0YXJ0JzoKKyAgICAgIHJldHVybiBldmVudFR5cGVzLmNv
bXBvc2l0aW9uU3RhcnQ7CisgICAgY2FzZSAndG9wQ29tcG9zaXRpb25FbmQnOgorICAgICAgcmV0
dXJuIGV2ZW50VHlwZXMuY29tcG9zaXRpb25FbmQ7CisgICAgY2FzZSAndG9wQ29tcG9zaXRpb25V
cGRhdGUnOgorICAgICAgcmV0dXJuIGV2ZW50VHlwZXMuY29tcG9zaXRpb25VcGRhdGU7CisgIH0K
K30KKworLyoqCisgKiBEb2VzIG91ciBmYWxsYmFjayBiZXN0LWd1ZXNzIG1vZGVsIHRoaW5rIHRo
aXMgZXZlbnQgc2lnbmlmaWVzIHRoYXQKKyAqIGNvbXBvc2l0aW9uIGhhcyBiZWd1bj8KKyAqCisg
KiBAcGFyYW0ge3N0cmluZ30gdG9wTGV2ZWxUeXBlCisgKiBAcGFyYW0ge29iamVjdH0gbmF0aXZl
RXZlbnQKKyAqIEByZXR1cm4ge2Jvb2xlYW59CisgKi8KK2Z1bmN0aW9uIGlzRmFsbGJhY2tDb21w
b3NpdGlvblN0YXJ0KHRvcExldmVsVHlwZSwgbmF0aXZlRXZlbnQpIHsKKyAgcmV0dXJuIHRvcExl
dmVsVHlwZSA9PT0gJ3RvcEtleURvd24nICYmIG5hdGl2ZUV2ZW50LmtleUNvZGUgPT09IFNUQVJU
X0tFWUNPREU7Cit9CisKKy8qKgorICogRG9lcyBvdXIgZmFsbGJhY2sgbW9kZSB0aGluayB0aGF0
IHRoaXMgZXZlbnQgaXMgdGhlIGVuZCBvZiBjb21wb3NpdGlvbj8KKyAqCisgKiBAcGFyYW0ge3N0
cmluZ30gdG9wTGV2ZWxUeXBlCisgKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQKKyAqIEBy
ZXR1cm4ge2Jvb2xlYW59CisgKi8KK2Z1bmN0aW9uIGlzRmFsbGJhY2tDb21wb3NpdGlvbkVuZCh0
b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KSB7CisgIHN3aXRjaCAodG9wTGV2ZWxUeXBlKSB7Cisg
ICAgY2FzZSAndG9wS2V5VXAnOgorICAgICAgLy8gQ29tbWFuZCBrZXlzIGluc2VydCBvciBjbGVh
ciBJTUUgaW5wdXQuCisgICAgICByZXR1cm4gRU5EX0tFWUNPREVTLmluZGV4T2YobmF0aXZlRXZl
bnQua2V5Q29kZSkgIT09IC0xOworICAgIGNhc2UgJ3RvcEtleURvd24nOgorICAgICAgLy8gRXhw
ZWN0IElNRSBrZXlDb2RlIG9uIGVhY2gga2V5ZG93bi4gSWYgd2UgZ2V0IGFueSBvdGhlcgorICAg
ICAgLy8gY29kZSB3ZSBtdXN0IGhhdmUgZXhpdGVkIGVhcmxpZXIuCisgICAgICByZXR1cm4gbmF0
aXZlRXZlbnQua2V5Q29kZSAhPT0gU1RBUlRfS0VZQ09ERTsKKyAgICBjYXNlICd0b3BLZXlQcmVz
cyc6CisgICAgY2FzZSAndG9wTW91c2VEb3duJzoKKyAgICBjYXNlICd0b3BCbHVyJzoKKyAgICAg
IC8vIEV2ZW50cyBhcmUgbm90IHBvc3NpYmxlIHdpdGhvdXQgY2FuY2VsbGluZyBJTUUuCisgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgcmV0dXJuIGZhbHNlOworICB9Cit9
CisKKy8qKgorICogR29vZ2xlIElucHV0IFRvb2xzIHByb3ZpZGVzIGNvbXBvc2l0aW9uIGRhdGEg
dmlhIGEgQ3VzdG9tRXZlbnQsCisgKiB3aXRoIHRoZSBgZGF0YWAgcHJvcGVydHkgcG9wdWxhdGVk
IGluIHRoZSBgZGV0YWlsYCBvYmplY3QuIElmIHRoaXMKKyAqIGlzIGF2YWlsYWJsZSBvbiB0aGUg
ZXZlbnQgb2JqZWN0LCB1c2UgaXQuIElmIG5vdCwgdGhpcyBpcyBhIHBsYWluCisgKiBjb21wb3Np
dGlvbiBldmVudCBhbmQgd2UgaGF2ZSBub3RoaW5nIHNwZWNpYWwgdG8gZXh0cmFjdC4KKyAqCisg
KiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQKKyAqIEByZXR1cm4gez9zdHJpbmd9CisgKi8K
K2Z1bmN0aW9uIGdldERhdGFGcm9tQ3VzdG9tRXZlbnQobmF0aXZlRXZlbnQpIHsKKyAgdmFyIGRl
dGFpbCA9IG5hdGl2ZUV2ZW50LmRldGFpbDsKKyAgaWYgKHR5cGVvZiBkZXRhaWwgPT09ICdvYmpl
Y3QnICYmICdkYXRhJyBpbiBkZXRhaWwpIHsKKyAgICByZXR1cm4gZGV0YWlsLmRhdGE7CisgIH0K
KyAgcmV0dXJuIG51bGw7Cit9CisKKy8vIFRyYWNrIHRoZSBjdXJyZW50IElNRSBjb21wb3NpdGlv
biBmYWxsYmFjayBvYmplY3QsIGlmIGFueS4KK3ZhciBjdXJyZW50Q29tcG9zaXRpb24gPSBudWxs
OworCisvKioKKyAqIEByZXR1cm4gez9vYmplY3R9IEEgU3ludGhldGljQ29tcG9zaXRpb25FdmVu
dC4KKyAqLworZnVuY3Rpb24gZXh0cmFjdENvbXBvc2l0aW9uRXZlbnQodG9wTGV2ZWxUeXBlLCB0
YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHsKKyAgdmFyIGV2ZW50
VHlwZTsKKyAgdmFyIGZhbGxiYWNrRGF0YTsKKworICBpZiAoY2FuVXNlQ29tcG9zaXRpb25FdmVu
dCkgeworICAgIGV2ZW50VHlwZSA9IGdldENvbXBvc2l0aW9uRXZlbnRUeXBlKHRvcExldmVsVHlw
ZSk7CisgIH0gZWxzZSBpZiAoIWN1cnJlbnRDb21wb3NpdGlvbikgeworICAgIGlmIChpc0ZhbGxi
YWNrQ29tcG9zaXRpb25TdGFydCh0b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KSkgeworICAgICAg
ZXZlbnRUeXBlID0gZXZlbnRUeXBlcy5jb21wb3NpdGlvblN0YXJ0OworICAgIH0KKyAgfSBlbHNl
IGlmIChpc0ZhbGxiYWNrQ29tcG9zaXRpb25FbmQodG9wTGV2ZWxUeXBlLCBuYXRpdmVFdmVudCkp
IHsKKyAgICBldmVudFR5cGUgPSBldmVudFR5cGVzLmNvbXBvc2l0aW9uRW5kOworICB9CisKKyAg
aWYgKCFldmVudFR5cGUpIHsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorCisgIGlmICh1c2VGYWxs
YmFja0NvbXBvc2l0aW9uRGF0YSkgeworICAgIC8vIFRoZSBjdXJyZW50IGNvbXBvc2l0aW9uIGlz
IHN0b3JlZCBzdGF0aWNhbGx5IGFuZCBtdXN0IG5vdCBiZQorICAgIC8vIG92ZXJ3cml0dGVuIHdo
aWxlIGNvbXBvc2l0aW9uIGNvbnRpbnVlcy4KKyAgICBpZiAoIWN1cnJlbnRDb21wb3NpdGlvbiAm
JiBldmVudFR5cGUgPT09IGV2ZW50VHlwZXMuY29tcG9zaXRpb25TdGFydCkgeworICAgICAgY3Vy
cmVudENvbXBvc2l0aW9uID0gRmFsbGJhY2tDb21wb3NpdGlvblN0YXRlLmdldFBvb2xlZChuYXRp
dmVFdmVudFRhcmdldCk7CisgICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT09IGV2ZW50VHlwZXMu
Y29tcG9zaXRpb25FbmQpIHsKKyAgICAgIGlmIChjdXJyZW50Q29tcG9zaXRpb24pIHsKKyAgICAg
ICAgZmFsbGJhY2tEYXRhID0gY3VycmVudENvbXBvc2l0aW9uLmdldERhdGEoKTsKKyAgICAgIH0K
KyAgICB9CisgIH0KKworICB2YXIgZXZlbnQgPSBTeW50aGV0aWNDb21wb3NpdGlvbkV2ZW50Lmdl
dFBvb2xlZChldmVudFR5cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRh
cmdldCk7CisKKyAgaWYgKGZhbGxiYWNrRGF0YSkgeworICAgIC8vIEluamVjdCBkYXRhIGdlbmVy
YXRlZCBmcm9tIGZhbGxiYWNrIHBhdGggaW50byB0aGUgc3ludGhldGljIGV2ZW50LgorICAgIC8v
IFRoaXMgbWF0Y2hlcyB0aGUgcHJvcGVydHkgb2YgbmF0aXZlIENvbXBvc2l0aW9uRXZlbnRJbnRl
cmZhY2UuCisgICAgZXZlbnQuZGF0YSA9IGZhbGxiYWNrRGF0YTsKKyAgfSBlbHNlIHsKKyAgICB2
YXIgY3VzdG9tRGF0YSA9IGdldERhdGFGcm9tQ3VzdG9tRXZlbnQobmF0aXZlRXZlbnQpOworICAg
IGlmIChjdXN0b21EYXRhICE9PSBudWxsKSB7CisgICAgICBldmVudC5kYXRhID0gY3VzdG9tRGF0
YTsKKyAgICB9CisgIH0KKworICBFdmVudFByb3BhZ2F0b3JzLmFjY3VtdWxhdGVUd29QaGFzZURp
c3BhdGNoZXMoZXZlbnQpOworICByZXR1cm4gZXZlbnQ7Cit9CisKKy8qKgorICogQHBhcmFtIHtz
dHJpbmd9IHRvcExldmVsVHlwZSBSZWNvcmQgZnJvbSBgRXZlbnRDb25zdGFudHNgLgorICogQHBh
cmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LgorICogQHJldHVy
biB7P3N0cmluZ30gVGhlIHN0cmluZyBjb3JyZXNwb25kaW5nIHRvIHRoaXMgYGJlZm9yZUlucHV0
YCBldmVudC4KKyAqLworZnVuY3Rpb24gZ2V0TmF0aXZlQmVmb3JlSW5wdXRDaGFycyh0b3BMZXZl
bFR5cGUsIG5hdGl2ZUV2ZW50KSB7CisgIHN3aXRjaCAodG9wTGV2ZWxUeXBlKSB7CisgICAgY2Fz
ZSAndG9wQ29tcG9zaXRpb25FbmQnOgorICAgICAgcmV0dXJuIGdldERhdGFGcm9tQ3VzdG9tRXZl
bnQobmF0aXZlRXZlbnQpOworICAgIGNhc2UgJ3RvcEtleVByZXNzJzoKKyAgICAgIC8qKgorICAg
ICAgICogSWYgbmF0aXZlIGB0ZXh0SW5wdXRgIGV2ZW50cyBhcmUgYXZhaWxhYmxlLCBvdXIgZ29h
bCBpcyB0byBtYWtlCisgICAgICAgKiB1c2Ugb2YgdGhlbS4gSG93ZXZlciwgdGhlcmUgaXMgYSBz
cGVjaWFsIGNhc2U6IHRoZSBzcGFjZWJhciBrZXkuCisgICAgICAgKiBJbiBXZWJraXQsIHByZXZl
bnRpbmcgZGVmYXVsdCBvbiBhIHNwYWNlYmFyIGB0ZXh0SW5wdXRgIGV2ZW50CisgICAgICAgKiBj
YW5jZWxzIGNoYXJhY3RlciBpbnNlcnRpb24sIGJ1dCBpdCAqYWxzbyogY2F1c2VzIHRoZSBicm93
c2VyCisgICAgICAgKiB0byBmYWxsIGJhY2sgdG8gaXRzIGRlZmF1bHQgc3BhY2ViYXIgYmVoYXZp
b3Igb2Ygc2Nyb2xsaW5nIHRoZQorICAgICAgICogcGFnZS4KKyAgICAgICAqCisgICAgICAgKiBU
cmFja2luZyBhdDoKKyAgICAgICAqIGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvY2hyb21pdW0v
aXNzdWVzL2RldGFpbD9pZD0zNTUxMDMKKyAgICAgICAqCisgICAgICAgKiBUbyBhdm9pZCB0aGlz
IGlzc3VlLCB1c2UgdGhlIGtleXByZXNzIGV2ZW50IGFzIGlmIG5vIGB0ZXh0SW5wdXRgCisgICAg
ICAgKiBldmVudCBpcyBhdmFpbGFibGUuCisgICAgICAgKi8KKyAgICAgIHZhciB3aGljaCA9IG5h
dGl2ZUV2ZW50LndoaWNoOworICAgICAgaWYgKHdoaWNoICE9PSBTUEFDRUJBUl9DT0RFKSB7Cisg
ICAgICAgIHJldHVybiBudWxsOworICAgICAgfQorCisgICAgICBoYXNTcGFjZUtleXByZXNzID0g
dHJ1ZTsKKyAgICAgIHJldHVybiBTUEFDRUJBUl9DSEFSOworCisgICAgY2FzZSAndG9wVGV4dElu
cHV0JzoKKyAgICAgIC8vIFJlY29yZCB0aGUgY2hhcmFjdGVycyB0byBiZSBhZGRlZCB0byB0aGUg
RE9NLgorICAgICAgdmFyIGNoYXJzID0gbmF0aXZlRXZlbnQuZGF0YTsKKworICAgICAgLy8gSWYg
aXQncyBhIHNwYWNlYmFyIGNoYXJhY3RlciwgYXNzdW1lIHRoYXQgd2UgaGF2ZSBhbHJlYWR5IGhh
bmRsZWQKKyAgICAgIC8vIGl0IGF0IHRoZSBrZXlwcmVzcyBsZXZlbCBhbmQgYmFpbCBpbW1lZGlh
dGVseS4gQW5kcm9pZCBDaHJvbWUKKyAgICAgIC8vIGRvZXNuJ3QgZ2l2ZSB1cyBrZXljb2Rlcywg
c28gd2UgbmVlZCB0byBibGFja2xpc3QgaXQuCisgICAgICBpZiAoY2hhcnMgPT09IFNQQUNFQkFS
X0NIQVIgJiYgaGFzU3BhY2VLZXlwcmVzcykgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAg
IH0KKworICAgICAgcmV0dXJuIGNoYXJzOworCisgICAgZGVmYXVsdDoKKyAgICAgIC8vIEZvciBv
dGhlciBuYXRpdmUgZXZlbnQgdHlwZXMsIGRvIG5vdGhpbmcuCisgICAgICByZXR1cm4gbnVsbDsK
KyAgfQorfQorCisvKioKKyAqIEZvciBicm93c2VycyB0aGF0IGRvIG5vdCBwcm92aWRlIHRoZSBg
dGV4dElucHV0YCBldmVudCwgZXh0cmFjdCB0aGUKKyAqIGFwcHJvcHJpYXRlIHN0cmluZyB0byB1
c2UgZm9yIFN5bnRoZXRpY0lucHV0RXZlbnQuCisgKgorICogQHBhcmFtIHtzdHJpbmd9IHRvcExl
dmVsVHlwZSBSZWNvcmQgZnJvbSBgRXZlbnRDb25zdGFudHNgLgorICogQHBhcmFtIHtvYmplY3R9
IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LgorICogQHJldHVybiB7P3N0cmluZ30g
VGhlIGZhbGxiYWNrIHN0cmluZyBmb3IgdGhpcyBgYmVmb3JlSW5wdXRgIGV2ZW50LgorICovCitm
dW5jdGlvbiBnZXRGYWxsYmFja0JlZm9yZUlucHV0Q2hhcnModG9wTGV2ZWxUeXBlLCBuYXRpdmVF
dmVudCkgeworICAvLyBJZiB3ZSBhcmUgY3VycmVudGx5IGNvbXBvc2luZyAoSU1FKSBhbmQgdXNp
bmcgYSBmYWxsYmFjayB0byBkbyBzbywKKyAgLy8gdHJ5IHRvIGV4dHJhY3QgdGhlIGNvbXBvc2Vk
IGNoYXJhY3RlcnMgZnJvbSB0aGUgZmFsbGJhY2sgb2JqZWN0LgorICAvLyBJZiBjb21wb3NpdGlv
biBldmVudCBpcyBhdmFpbGFibGUsIHdlIGV4dHJhY3QgYSBzdHJpbmcgb25seSBhdAorICAvLyBj
b21wb3NpdGlvbmV2ZW50LCBvdGhlcndpc2UgZXh0cmFjdCBpdCBhdCBmYWxsYmFjayBldmVudHMu
CisgIGlmIChjdXJyZW50Q29tcG9zaXRpb24pIHsKKyAgICBpZiAodG9wTGV2ZWxUeXBlID09PSAn
dG9wQ29tcG9zaXRpb25FbmQnIHx8ICFjYW5Vc2VDb21wb3NpdGlvbkV2ZW50ICYmIGlzRmFsbGJh
Y2tDb21wb3NpdGlvbkVuZCh0b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KSkgeworICAgICAgdmFy
IGNoYXJzID0gY3VycmVudENvbXBvc2l0aW9uLmdldERhdGEoKTsKKyAgICAgIEZhbGxiYWNrQ29t
cG9zaXRpb25TdGF0ZS5yZWxlYXNlKGN1cnJlbnRDb21wb3NpdGlvbik7CisgICAgICBjdXJyZW50
Q29tcG9zaXRpb24gPSBudWxsOworICAgICAgcmV0dXJuIGNoYXJzOworICAgIH0KKyAgICByZXR1
cm4gbnVsbDsKKyAgfQorCisgIHN3aXRjaCAodG9wTGV2ZWxUeXBlKSB7CisgICAgY2FzZSAndG9w
UGFzdGUnOgorICAgICAgLy8gSWYgYSBwYXN0ZSBldmVudCBvY2N1cnMgYWZ0ZXIgYSBrZXlwcmVz
cywgdGhyb3cgb3V0IHRoZSBpbnB1dAorICAgICAgLy8gY2hhcnMuIFBhc3RlIGV2ZW50cyBzaG91
bGQgbm90IGxlYWQgdG8gQmVmb3JlSW5wdXQgZXZlbnRzLgorICAgICAgcmV0dXJuIG51bGw7Cisg
ICAgY2FzZSAndG9wS2V5UHJlc3MnOgorICAgICAgLyoqCisgICAgICAgKiBBcyBvZiB2MjcsIEZp
cmVmb3ggbWF5IGZpcmUga2V5cHJlc3MgZXZlbnRzIGV2ZW4gd2hlbiBubyBjaGFyYWN0ZXIKKyAg
ICAgICAqIHdpbGwgYmUgaW5zZXJ0ZWQuIEEgZmV3IHBvc3NpYmlsaXRpZXM6CisgICAgICAgKgor
ICAgICAgICogLSBgd2hpY2hgIGlzIGAwYC4gQXJyb3cga2V5cywgRXNjIGtleSwgZXRjLgorICAg
ICAgICoKKyAgICAgICAqIC0gYHdoaWNoYCBpcyB0aGUgcHJlc3NlZCBrZXkgY29kZSwgYnV0IG5v
IGNoYXIgaXMgYXZhaWxhYmxlLgorICAgICAgICogICBFeDogJ0FsdEdyICsgZGAgaW4gUG9saXNo
LiBUaGVyZSBpcyBubyBtb2RpZmllZCBjaGFyYWN0ZXIgZm9yCisgICAgICAgKiAgIHRoaXMga2V5
IGNvbWJpbmF0aW9uIGFuZCBubyBjaGFyYWN0ZXIgaXMgaW5zZXJ0ZWQgaW50byB0aGUKKyAgICAg
ICAqICAgZG9jdW1lbnQsIGJ1dCBGRiBmaXJlcyB0aGUga2V5cHJlc3MgZm9yIGNoYXIgY29kZSBg
MTAwYCBhbnl3YXkuCisgICAgICAgKiAgIE5vIGBpbnB1dGAgZXZlbnQgd2lsbCBvY2N1ci4KKyAg
ICAgICAqCisgICAgICAgKiAtIGB3aGljaGAgaXMgdGhlIHByZXNzZWQga2V5IGNvZGUsIGJ1dCBh
IGNvbW1hbmQgY29tYmluYXRpb24gaXMKKyAgICAgICAqICAgYmVpbmcgdXNlZC4gRXg6IGBDbWQr
Q2AuIE5vIGNoYXJhY3RlciBpcyBpbnNlcnRlZCwgYW5kIG5vCisgICAgICAgKiAgIGBpbnB1dGAg
ZXZlbnQgd2lsbCBvY2N1ci4KKyAgICAgICAqLworICAgICAgaWYgKG5hdGl2ZUV2ZW50LndoaWNo
ICYmICFpc0tleXByZXNzQ29tbWFuZChuYXRpdmVFdmVudCkpIHsKKyAgICAgICAgcmV0dXJuIFN0
cmluZy5mcm9tQ2hhckNvZGUobmF0aXZlRXZlbnQud2hpY2gpOworICAgICAgfQorICAgICAgcmV0
dXJuIG51bGw7CisgICAgY2FzZSAndG9wQ29tcG9zaXRpb25FbmQnOgorICAgICAgcmV0dXJuIHVz
ZUZhbGxiYWNrQ29tcG9zaXRpb25EYXRhID8gbnVsbCA6IG5hdGl2ZUV2ZW50LmRhdGE7CisgICAg
ZGVmYXVsdDoKKyAgICAgIHJldHVybiBudWxsOworICB9Cit9CisKKy8qKgorICogRXh0cmFjdCBh
IFN5bnRoZXRpY0lucHV0RXZlbnQgZm9yIGBiZWZvcmVJbnB1dGAsIGJhc2VkIG9uIGVpdGhlciBu
YXRpdmUKKyAqIGB0ZXh0SW5wdXRgIG9yIGZhbGxiYWNrIGJlaGF2aW9yLgorICoKKyAqIEByZXR1
cm4gez9vYmplY3R9IEEgU3ludGhldGljSW5wdXRFdmVudC4KKyAqLworZnVuY3Rpb24gZXh0cmFj
dEJlZm9yZUlucHV0RXZlbnQodG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwg
bmF0aXZlRXZlbnRUYXJnZXQpIHsKKyAgdmFyIGNoYXJzOworCisgIGlmIChjYW5Vc2VUZXh0SW5w
dXRFdmVudCkgeworICAgIGNoYXJzID0gZ2V0TmF0aXZlQmVmb3JlSW5wdXRDaGFycyh0b3BMZXZl
bFR5cGUsIG5hdGl2ZUV2ZW50KTsKKyAgfSBlbHNlIHsKKyAgICBjaGFycyA9IGdldEZhbGxiYWNr
QmVmb3JlSW5wdXRDaGFycyh0b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KTsKKyAgfQorCisgIC8v
IElmIG5vIGNoYXJhY3RlcnMgYXJlIGJlaW5nIGluc2VydGVkLCBubyBCZWZvcmVJbnB1dCBldmVu
dCBzaG91bGQKKyAgLy8gYmUgZmlyZWQuCisgIGlmICghY2hhcnMpIHsKKyAgICByZXR1cm4gbnVs
bDsKKyAgfQorCisgIHZhciBldmVudCA9IFN5bnRoZXRpY0lucHV0RXZlbnQuZ2V0UG9vbGVkKGV2
ZW50VHlwZXMuYmVmb3JlSW5wdXQsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVu
dFRhcmdldCk7CisKKyAgZXZlbnQuZGF0YSA9IGNoYXJzOworICBFdmVudFByb3BhZ2F0b3JzLmFj
Y3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXMoZXZlbnQpOworICByZXR1cm4gZXZlbnQ7Cit9CisK
Ky8qKgorICogQ3JlYXRlIGFuIGBvbkJlZm9yZUlucHV0YCBldmVudCB0byBtYXRjaAorICogaHR0
cDovL3d3dy53My5vcmcvVFIvMjAxMy9XRC1ET00tTGV2ZWwtMy1FdmVudHMtMjAxMzExMDUvI2V2
ZW50cy1pbnB1dGV2ZW50cy4KKyAqCisgKiBUaGlzIGV2ZW50IHBsdWdpbiBpcyBiYXNlZCBvbiB0
aGUgbmF0aXZlIGB0ZXh0SW5wdXRgIGV2ZW50CisgKiBhdmFpbGFibGUgaW4gQ2hyb21lLCBTYWZh
cmksIE9wZXJhLCBhbmQgSUUuIFRoaXMgZXZlbnQgZmlyZXMgYWZ0ZXIKKyAqIGBvbktleVByZXNz
YCBhbmQgYG9uQ29tcG9zaXRpb25FbmRgLCBidXQgYmVmb3JlIGBvbklucHV0YC4KKyAqCisgKiBg
YmVmb3JlSW5wdXRgIGlzIHNwZWMnZCBidXQgbm90IGltcGxlbWVudGVkIGluIGFueSBicm93c2Vy
cywgYW5kCisgKiB0aGUgYGlucHV0YCBldmVudCBkb2VzIG5vdCBwcm92aWRlIGFueSB1c2VmdWwg
aW5mb3JtYXRpb24gYWJvdXQgd2hhdCBoYXMKKyAqIGFjdHVhbGx5IGJlZW4gYWRkZWQsIGNvbnRy
YXJ5IHRvIHRoZSBzcGVjLiBUaHVzLCBgdGV4dElucHV0YCBpcyB0aGUgYmVzdAorICogYXZhaWxh
YmxlIGV2ZW50IHRvIGlkZW50aWZ5IHRoZSBjaGFyYWN0ZXJzIHRoYXQgaGF2ZSBhY3R1YWxseSBi
ZWVuIGluc2VydGVkCisgKiBpbnRvIHRoZSB0YXJnZXQgbm9kZS4KKyAqCisgKiBUaGlzIHBsdWdp
biBpcyBhbHNvIHJlc3BvbnNpYmxlIGZvciBlbWl0dGluZyBgY29tcG9zaXRpb25gIGV2ZW50cywg
dGh1cworICogYWxsb3dpbmcgdXMgdG8gc2hhcmUgY29tcG9zaXRpb24gZmFsbGJhY2sgY29kZSBm
b3IgYm90aCBgYmVmb3JlSW5wdXRgIGFuZAorICogYGNvbXBvc2l0aW9uYCBldmVudCB0eXBlcy4K
KyAqLwordmFyIEJlZm9yZUlucHV0RXZlbnRQbHVnaW4gPSB7CisKKyAgZXZlbnRUeXBlczogZXZl
bnRUeXBlcywKKworICBleHRyYWN0RXZlbnRzOiBmdW5jdGlvbiAodG9wTGV2ZWxUeXBlLCB0YXJn
ZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHsKKyAgICByZXR1cm4gW2V4
dHJhY3RDb21wb3NpdGlvbkV2ZW50KHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCwgbmF0aXZlRXZl
bnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSwgZXh0cmFjdEJlZm9yZUlucHV0RXZlbnQodG9wTGV2ZWxU
eXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpXTsKKyAgfQor
fTsKKworbW9kdWxlLmV4cG9ydHMgPSBCZWZvcmVJbnB1dEV2ZW50UGx1Z2luOwpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9k
dWxlcy9yZWFjdC1kb20vbGliL0NTU1Byb3BlcnR5LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9k
ZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvQ1NTUHJvcGVydHkuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGMzMTk4
NzBiMDYxYTI4MmM4ZWU3ZGM1NTRhYjU0MTRlNDA5YjliOQotLS0gL2Rldi9udWxsCisrKyBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL0NTU1Byb3BlcnR5Lmpz
CkBAIC0wLDAgKzEsMTQ3IEBACisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNv
ZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQor
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBp
biB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3Vz
ZSBzdHJpY3QnOworCisvKioKKyAqIENTUyBwcm9wZXJ0aWVzIHdoaWNoIGFjY2VwdCBudW1iZXJz
IGJ1dCBhcmUgbm90IGluIHVuaXRzIG9mICJweCIuCisgKi8KKwordmFyIGlzVW5pdGxlc3NOdW1i
ZXIgPSB7CisgIGFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OiB0cnVlLAorICBib3JkZXJJbWFnZU91
dHNldDogdHJ1ZSwKKyAgYm9yZGVySW1hZ2VTbGljZTogdHJ1ZSwKKyAgYm9yZGVySW1hZ2VXaWR0
aDogdHJ1ZSwKKyAgYm94RmxleDogdHJ1ZSwKKyAgYm94RmxleEdyb3VwOiB0cnVlLAorICBib3hP
cmRpbmFsR3JvdXA6IHRydWUsCisgIGNvbHVtbkNvdW50OiB0cnVlLAorICBmbGV4OiB0cnVlLAor
ICBmbGV4R3JvdzogdHJ1ZSwKKyAgZmxleFBvc2l0aXZlOiB0cnVlLAorICBmbGV4U2hyaW5rOiB0
cnVlLAorICBmbGV4TmVnYXRpdmU6IHRydWUsCisgIGZsZXhPcmRlcjogdHJ1ZSwKKyAgZ3JpZFJv
dzogdHJ1ZSwKKyAgZ3JpZENvbHVtbjogdHJ1ZSwKKyAgZm9udFdlaWdodDogdHJ1ZSwKKyAgbGlu
ZUNsYW1wOiB0cnVlLAorICBsaW5lSGVpZ2h0OiB0cnVlLAorICBvcGFjaXR5OiB0cnVlLAorICBv
cmRlcjogdHJ1ZSwKKyAgb3JwaGFuczogdHJ1ZSwKKyAgdGFiU2l6ZTogdHJ1ZSwKKyAgd2lkb3dz
OiB0cnVlLAorICB6SW5kZXg6IHRydWUsCisgIHpvb206IHRydWUsCisKKyAgLy8gU1ZHLXJlbGF0
ZWQgcHJvcGVydGllcworICBmaWxsT3BhY2l0eTogdHJ1ZSwKKyAgZmxvb2RPcGFjaXR5OiB0cnVl
LAorICBzdG9wT3BhY2l0eTogdHJ1ZSwKKyAgc3Ryb2tlRGFzaGFycmF5OiB0cnVlLAorICBzdHJv
a2VEYXNob2Zmc2V0OiB0cnVlLAorICBzdHJva2VNaXRlcmxpbWl0OiB0cnVlLAorICBzdHJva2VP
cGFjaXR5OiB0cnVlLAorICBzdHJva2VXaWR0aDogdHJ1ZQorfTsKKworLyoqCisgKiBAcGFyYW0g
e3N0cmluZ30gcHJlZml4IHZlbmRvci1zcGVjaWZpYyBwcmVmaXgsIGVnOiBXZWJraXQKKyAqIEBw
YXJhbSB7c3RyaW5nfSBrZXkgc3R5bGUgbmFtZSwgZWc6IHRyYW5zaXRpb25EdXJhdGlvbgorICog
QHJldHVybiB7c3RyaW5nfSBzdHlsZSBuYW1lIHByZWZpeGVkIHdpdGggYHByZWZpeGAsIHByb3Bl
cmx5IGNhbWVsQ2FzZWQsIGVnOgorICogV2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uCisgKi8KK2Z1
bmN0aW9uIHByZWZpeEtleShwcmVmaXgsIGtleSkgeworICByZXR1cm4gcHJlZml4ICsga2V5LmNo
YXJBdCgwKS50b1VwcGVyQ2FzZSgpICsga2V5LnN1YnN0cmluZygxKTsKK30KKworLyoqCisgKiBT
dXBwb3J0IHN0eWxlIG5hbWVzIHRoYXQgbWF5IGNvbWUgcGFzc2VkIGluIHByZWZpeGVkIGJ5IGFk
ZGluZyBwZXJtdXRhdGlvbnMKKyAqIG9mIHZlbmRvciBwcmVmaXhlcy4KKyAqLwordmFyIHByZWZp
eGVzID0gWydXZWJraXQnLCAnbXMnLCAnTW96JywgJ08nXTsKKworLy8gVXNpbmcgT2JqZWN0Lmtl
eXMgaGVyZSwgb3IgZWxzZSB0aGUgdmFuaWxsYSBmb3ItaW4gbG9vcCBtYWtlcyBJRTggZ28gaW50
byBhbgorLy8gaW5maW5pdGUgbG9vcCwgYmVjYXVzZSBpdCBpdGVyYXRlcyBvdmVyIHRoZSBuZXds
eSBhZGRlZCBwcm9wcyB0b28uCitPYmplY3Qua2V5cyhpc1VuaXRsZXNzTnVtYmVyKS5mb3JFYWNo
KGZ1bmN0aW9uIChwcm9wKSB7CisgIHByZWZpeGVzLmZvckVhY2goZnVuY3Rpb24gKHByZWZpeCkg
eworICAgIGlzVW5pdGxlc3NOdW1iZXJbcHJlZml4S2V5KHByZWZpeCwgcHJvcCldID0gaXNVbml0
bGVzc051bWJlcltwcm9wXTsKKyAgfSk7Cit9KTsKKworLyoqCisgKiBNb3N0IHN0eWxlIHByb3Bl
cnRpZXMgY2FuIGJlIHVuc2V0IGJ5IGRvaW5nIC5zdHlsZVtwcm9wXSA9ICcnIGJ1dCBJRTgKKyAq
IGRvZXNuJ3QgbGlrZSBkb2luZyB0aGF0IHdpdGggc2hvcnRoYW5kIHByb3BlcnRpZXMgc28gZm9y
IHRoZSBwcm9wZXJ0aWVzIHRoYXQKKyAqIElFOCBicmVha3Mgb24sIHdoaWNoIGFyZSBsaXN0ZWQg
aGVyZSwgd2UgaW5zdGVhZCB1bnNldCBlYWNoIG9mIHRoZQorICogaW5kaXZpZHVhbCBwcm9wZXJ0
aWVzLiBTZWUgaHR0cDovL2J1Z3MuanF1ZXJ5LmNvbS90aWNrZXQvMTIzODUuCisgKiBUaGUgNC12
YWx1ZSAnY2xvY2snIHByb3BlcnRpZXMgbGlrZSBtYXJnaW4sIHBhZGRpbmcsIGJvcmRlci13aWR0
aCBzZWVtIHRvCisgKiBiZWhhdmUgd2l0aG91dCBhbnkgcHJvYmxlbXMuIEN1cmlvdXNseSwgbGlz
dC1zdHlsZSB3b3JrcyB0b28gd2l0aG91dCBhbnkKKyAqIHNwZWNpYWwgcHJvZGRpbmcuCisgKi8K
K3ZhciBzaG9ydGhhbmRQcm9wZXJ0eUV4cGFuc2lvbnMgPSB7CisgIGJhY2tncm91bmQ6IHsKKyAg
ICBiYWNrZ3JvdW5kQXR0YWNobWVudDogdHJ1ZSwKKyAgICBiYWNrZ3JvdW5kQ29sb3I6IHRydWUs
CisgICAgYmFja2dyb3VuZEltYWdlOiB0cnVlLAorICAgIGJhY2tncm91bmRQb3NpdGlvblg6IHRy
dWUsCisgICAgYmFja2dyb3VuZFBvc2l0aW9uWTogdHJ1ZSwKKyAgICBiYWNrZ3JvdW5kUmVwZWF0
OiB0cnVlCisgIH0sCisgIGJhY2tncm91bmRQb3NpdGlvbjogeworICAgIGJhY2tncm91bmRQb3Np
dGlvblg6IHRydWUsCisgICAgYmFja2dyb3VuZFBvc2l0aW9uWTogdHJ1ZQorICB9LAorICBib3Jk
ZXI6IHsKKyAgICBib3JkZXJXaWR0aDogdHJ1ZSwKKyAgICBib3JkZXJTdHlsZTogdHJ1ZSwKKyAg
ICBib3JkZXJDb2xvcjogdHJ1ZQorICB9LAorICBib3JkZXJCb3R0b206IHsKKyAgICBib3JkZXJC
b3R0b21XaWR0aDogdHJ1ZSwKKyAgICBib3JkZXJCb3R0b21TdHlsZTogdHJ1ZSwKKyAgICBib3Jk
ZXJCb3R0b21Db2xvcjogdHJ1ZQorICB9LAorICBib3JkZXJMZWZ0OiB7CisgICAgYm9yZGVyTGVm
dFdpZHRoOiB0cnVlLAorICAgIGJvcmRlckxlZnRTdHlsZTogdHJ1ZSwKKyAgICBib3JkZXJMZWZ0
Q29sb3I6IHRydWUKKyAgfSwKKyAgYm9yZGVyUmlnaHQ6IHsKKyAgICBib3JkZXJSaWdodFdpZHRo
OiB0cnVlLAorICAgIGJvcmRlclJpZ2h0U3R5bGU6IHRydWUsCisgICAgYm9yZGVyUmlnaHRDb2xv
cjogdHJ1ZQorICB9LAorICBib3JkZXJUb3A6IHsKKyAgICBib3JkZXJUb3BXaWR0aDogdHJ1ZSwK
KyAgICBib3JkZXJUb3BTdHlsZTogdHJ1ZSwKKyAgICBib3JkZXJUb3BDb2xvcjogdHJ1ZQorICB9
LAorICBmb250OiB7CisgICAgZm9udFN0eWxlOiB0cnVlLAorICAgIGZvbnRWYXJpYW50OiB0cnVl
LAorICAgIGZvbnRXZWlnaHQ6IHRydWUsCisgICAgZm9udFNpemU6IHRydWUsCisgICAgbGluZUhl
aWdodDogdHJ1ZSwKKyAgICBmb250RmFtaWx5OiB0cnVlCisgIH0sCisgIG91dGxpbmU6IHsKKyAg
ICBvdXRsaW5lV2lkdGg6IHRydWUsCisgICAgb3V0bGluZVN0eWxlOiB0cnVlLAorICAgIG91dGxp
bmVDb2xvcjogdHJ1ZQorICB9Cit9OworCit2YXIgQ1NTUHJvcGVydHkgPSB7CisgIGlzVW5pdGxl
c3NOdW1iZXI6IGlzVW5pdGxlc3NOdW1iZXIsCisgIHNob3J0aGFuZFByb3BlcnR5RXhwYW5zaW9u
czogc2hvcnRoYW5kUHJvcGVydHlFeHBhbnNpb25zCit9OworCittb2R1bGUuZXhwb3J0cyA9IENT
U1Byb3BlcnR5OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL0NTU1Byb3BlcnR5T3BlcmF0
aW9ucy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL0NT
U1Byb3BlcnR5T3BlcmF0aW9ucy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMzgzN2Q4YzlhMDRmMGZiN2Q5OWVi
NGJkMmZlMDNkZDU0MTM5YWZlCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qv
bm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvQ1NTUHJvcGVydHlPcGVyYXRpb25zLmpzCkBAIC0w
LDAgKzEsMjA4IEBACisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJ
bmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElD
RU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUg
UEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJp
Y3QnOworCit2YXIgQ1NTUHJvcGVydHkgPSByZXF1aXJlKCcuL0NTU1Byb3BlcnR5Jyk7Cit2YXIg
RXhlY3V0aW9uRW52aXJvbm1lbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9FeGVjdXRpb25FbnZpcm9u
bWVudCcpOwordmFyIFJlYWN0SW5zdHJ1bWVudGF0aW9uID0gcmVxdWlyZSgnLi9SZWFjdEluc3Ry
dW1lbnRhdGlvbicpOworCit2YXIgY2FtZWxpemVTdHlsZU5hbWUgPSByZXF1aXJlKCdmYmpzL2xp
Yi9jYW1lbGl6ZVN0eWxlTmFtZScpOwordmFyIGRhbmdlcm91c1N0eWxlVmFsdWUgPSByZXF1aXJl
KCcuL2Rhbmdlcm91c1N0eWxlVmFsdWUnKTsKK3ZhciBoeXBoZW5hdGVTdHlsZU5hbWUgPSByZXF1
aXJlKCdmYmpzL2xpYi9oeXBoZW5hdGVTdHlsZU5hbWUnKTsKK3ZhciBtZW1vaXplU3RyaW5nT25s
eSA9IHJlcXVpcmUoJ2ZianMvbGliL21lbW9pemVTdHJpbmdPbmx5Jyk7Cit2YXIgd2FybmluZyA9
IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTsKKwordmFyIHByb2Nlc3NTdHlsZU5hbWUgPSBt
ZW1vaXplU3RyaW5nT25seShmdW5jdGlvbiAoc3R5bGVOYW1lKSB7CisgIHJldHVybiBoeXBoZW5h
dGVTdHlsZU5hbWUoc3R5bGVOYW1lKTsKK30pOworCit2YXIgaGFzU2hvcnRoYW5kUHJvcGVydHlC
dWcgPSBmYWxzZTsKK3ZhciBzdHlsZUZsb2F0QWNjZXNzb3IgPSAnY3NzRmxvYXQnOworaWYgKEV4
ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSkgeworICB2YXIgdGVtcFN0eWxlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnZGl2Jykuc3R5bGU7CisgIHRyeSB7CisgICAgLy8gSUU4IHRocm93
cyAiSW52YWxpZCBhcmd1bWVudC4iIGlmIHJlc2V0dGluZyBzaG9ydGhhbmQgc3R5bGUgcHJvcGVy
dGllcy4KKyAgICB0ZW1wU3R5bGUuZm9udCA9ICcnOworICB9IGNhdGNoIChlKSB7CisgICAgaGFz
U2hvcnRoYW5kUHJvcGVydHlCdWcgPSB0cnVlOworICB9CisgIC8vIElFOCBvbmx5IHN1cHBvcnRz
IGFjY2Vzc2luZyBjc3NGbG9hdCAoc3RhbmRhcmQpIGFzIHN0eWxlRmxvYXQKKyAgaWYgKGRvY3Vt
ZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5jc3NGbG9hdCA9PT0gdW5kZWZpbmVkKSB7CisgICAg
c3R5bGVGbG9hdEFjY2Vzc29yID0gJ3N0eWxlRmxvYXQnOworICB9Cit9CisKK2lmIChwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgIC8vICdtc1RyYW5zZm9ybScgaXMg
Y29ycmVjdCwgYnV0IHRoZSBvdGhlciBwcmVmaXhlcyBzaG91bGQgYmUgY2FwaXRhbGl6ZWQKKyAg
dmFyIGJhZFZlbmRvcmVkU3R5bGVOYW1lUGF0dGVybiA9IC9eKD86d2Via2l0fG1venxvKVtBLVpd
LzsKKworICAvLyBzdHlsZSB2YWx1ZXMgc2hvdWxkbid0IGNvbnRhaW4gYSBzZW1pY29sb24KKyAg
dmFyIGJhZFN0eWxlVmFsdWVXaXRoU2VtaWNvbG9uUGF0dGVybiA9IC87XHMqJC87CisKKyAgdmFy
IHdhcm5lZFN0eWxlTmFtZXMgPSB7fTsKKyAgdmFyIHdhcm5lZFN0eWxlVmFsdWVzID0ge307Cisg
IHZhciB3YXJuZWRGb3JOYU5WYWx1ZSA9IGZhbHNlOworCisgIHZhciB3YXJuSHlwaGVuYXRlZFN0
eWxlTmFtZSA9IGZ1bmN0aW9uIChuYW1lLCBvd25lcikgeworICAgIGlmICh3YXJuZWRTdHlsZU5h
bWVzLmhhc093blByb3BlcnR5KG5hbWUpICYmIHdhcm5lZFN0eWxlTmFtZXNbbmFtZV0pIHsKKyAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICB3YXJuZWRTdHlsZU5hbWVzW25hbWVdID0gdHJ1ZTsK
KyAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxz
ZSwgJ1Vuc3VwcG9ydGVkIHN0eWxlIHByb3BlcnR5ICVzLiBEaWQgeW91IG1lYW4gJXM/JXMnLCBu
YW1lLCBjYW1lbGl6ZVN0eWxlTmFtZShuYW1lKSwgY2hlY2tSZW5kZXJNZXNzYWdlKG93bmVyKSkg
OiB2b2lkIDA7CisgIH07CisKKyAgdmFyIHdhcm5CYWRWZW5kb3JlZFN0eWxlTmFtZSA9IGZ1bmN0
aW9uIChuYW1lLCBvd25lcikgeworICAgIGlmICh3YXJuZWRTdHlsZU5hbWVzLmhhc093blByb3Bl
cnR5KG5hbWUpICYmIHdhcm5lZFN0eWxlTmFtZXNbbmFtZV0pIHsKKyAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICB3YXJuZWRTdHlsZU5hbWVzW25hbWVdID0gdHJ1ZTsKKyAgICBwcm9jZXNzLmVu
di5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1Vuc3VwcG9ydGVk
IHZlbmRvci1wcmVmaXhlZCBzdHlsZSBwcm9wZXJ0eSAlcy4gRGlkIHlvdSBtZWFuICVzPyVzJywg
bmFtZSwgbmFtZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIG5hbWUuc2xpY2UoMSksIGNoZWNr
UmVuZGVyTWVzc2FnZShvd25lcikpIDogdm9pZCAwOworICB9OworCisgIHZhciB3YXJuU3R5bGVW
YWx1ZVdpdGhTZW1pY29sb24gPSBmdW5jdGlvbiAobmFtZSwgdmFsdWUsIG93bmVyKSB7CisgICAg
aWYgKHdhcm5lZFN0eWxlVmFsdWVzLmhhc093blByb3BlcnR5KHZhbHVlKSAmJiB3YXJuZWRTdHls
ZVZhbHVlc1t2YWx1ZV0pIHsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB3YXJuZWRTdHls
ZVZhbHVlc1t2YWx1ZV0gPSB0cnVlOworICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJv
ZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnU3R5bGUgcHJvcGVydHkgdmFsdWVzIHNob3VsZG5c
J3QgY29udGFpbiBhIHNlbWljb2xvbi4lcyAnICsgJ1RyeSAiJXM6ICVzIiBpbnN0ZWFkLicsIGNo
ZWNrUmVuZGVyTWVzc2FnZShvd25lciksIG5hbWUsIHZhbHVlLnJlcGxhY2UoYmFkU3R5bGVWYWx1
ZVdpdGhTZW1pY29sb25QYXR0ZXJuLCAnJykpIDogdm9pZCAwOworICB9OworCisgIHZhciB3YXJu
U3R5bGVWYWx1ZUlzTmFOID0gZnVuY3Rpb24gKG5hbWUsIHZhbHVlLCBvd25lcikgeworICAgIGlm
ICh3YXJuZWRGb3JOYU5WYWx1ZSkgeworICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHdhcm5l
ZEZvck5hTlZhbHVlID0gdHJ1ZTsKKyAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ2BOYU5gIGlzIGFuIGludmFsaWQgdmFsdWUgZm9yIHRo
ZSBgJXNgIGNzcyBzdHlsZSBwcm9wZXJ0eS4lcycsIG5hbWUsIGNoZWNrUmVuZGVyTWVzc2FnZShv
d25lcikpIDogdm9pZCAwOworICB9OworCisgIHZhciBjaGVja1JlbmRlck1lc3NhZ2UgPSBmdW5j
dGlvbiAob3duZXIpIHsKKyAgICBpZiAob3duZXIpIHsKKyAgICAgIHZhciBuYW1lID0gb3duZXIu
Z2V0TmFtZSgpOworICAgICAgaWYgKG5hbWUpIHsKKyAgICAgICAgcmV0dXJuICcgQ2hlY2sgdGhl
IHJlbmRlciBtZXRob2Qgb2YgYCcgKyBuYW1lICsgJ2AuJzsKKyAgICAgIH0KKyAgICB9CisgICAg
cmV0dXJuICcnOworICB9OworCisgIC8qKgorICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAg
KiBAcGFyYW0geyp9IHZhbHVlCisgICAqIEBwYXJhbSB7UmVhY3RET01Db21wb25lbnR9IGNvbXBv
bmVudAorICAgKi8KKyAgdmFyIHdhcm5WYWxpZFN0eWxlID0gZnVuY3Rpb24gKG5hbWUsIHZhbHVl
LCBjb21wb25lbnQpIHsKKyAgICB2YXIgb3duZXI7CisgICAgaWYgKGNvbXBvbmVudCkgeworICAg
ICAgb3duZXIgPSBjb21wb25lbnQuX2N1cnJlbnRFbGVtZW50Ll9vd25lcjsKKyAgICB9CisgICAg
aWYgKG5hbWUuaW5kZXhPZignLScpID4gLTEpIHsKKyAgICAgIHdhcm5IeXBoZW5hdGVkU3R5bGVO
YW1lKG5hbWUsIG93bmVyKTsKKyAgICB9IGVsc2UgaWYgKGJhZFZlbmRvcmVkU3R5bGVOYW1lUGF0
dGVybi50ZXN0KG5hbWUpKSB7CisgICAgICB3YXJuQmFkVmVuZG9yZWRTdHlsZU5hbWUobmFtZSwg
b3duZXIpOworICAgIH0gZWxzZSBpZiAoYmFkU3R5bGVWYWx1ZVdpdGhTZW1pY29sb25QYXR0ZXJu
LnRlc3QodmFsdWUpKSB7CisgICAgICB3YXJuU3R5bGVWYWx1ZVdpdGhTZW1pY29sb24obmFtZSwg
dmFsdWUsIG93bmVyKTsKKyAgICB9CisKKyAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVy
JyAmJiBpc05hTih2YWx1ZSkpIHsKKyAgICAgIHdhcm5TdHlsZVZhbHVlSXNOYU4obmFtZSwgdmFs
dWUsIG93bmVyKTsKKyAgICB9CisgIH07Cit9CisKKy8qKgorICogT3BlcmF0aW9ucyBmb3IgZGVh
bGluZyB3aXRoIENTUyBwcm9wZXJ0aWVzLgorICovCit2YXIgQ1NTUHJvcGVydHlPcGVyYXRpb25z
ID0geworCisgIC8qKgorICAgKiBTZXJpYWxpemVzIGEgbWFwcGluZyBvZiBzdHlsZSBwcm9wZXJ0
aWVzIGZvciB1c2UgYXMgaW5saW5lIHN0eWxlczoKKyAgICoKKyAgICogICA+IGNyZWF0ZU1hcmt1
cEZvclN0eWxlcyh7d2lkdGg6ICcyMDBweCcsIGhlaWdodDogMH0pCisgICAqICAgIndpZHRoOjIw
MHB4O2hlaWdodDowOyIKKyAgICoKKyAgICogVW5kZWZpbmVkIHZhbHVlcyBhcmUgaWdub3JlZCBz
byB0aGF0IGRlY2xhcmF0aXZlIHByb2dyYW1taW5nIGlzIGVhc2llci4KKyAgICogVGhlIHJlc3Vs
dCBzaG91bGQgYmUgSFRNTC1lc2NhcGVkIGJlZm9yZSBpbnNlcnRpb24gaW50byB0aGUgRE9NLgor
ICAgKgorICAgKiBAcGFyYW0ge29iamVjdH0gc3R5bGVzCisgICAqIEBwYXJhbSB7UmVhY3RET01D
b21wb25lbnR9IGNvbXBvbmVudAorICAgKiBAcmV0dXJuIHs/c3RyaW5nfQorICAgKi8KKyAgY3Jl
YXRlTWFya3VwRm9yU3R5bGVzOiBmdW5jdGlvbiAoc3R5bGVzLCBjb21wb25lbnQpIHsKKyAgICB2
YXIgc2VyaWFsaXplZCA9ICcnOworICAgIGZvciAodmFyIHN0eWxlTmFtZSBpbiBzdHlsZXMpIHsK
KyAgICAgIGlmICghc3R5bGVzLmhhc093blByb3BlcnR5KHN0eWxlTmFtZSkpIHsKKyAgICAgICAg
Y29udGludWU7CisgICAgICB9CisgICAgICB2YXIgc3R5bGVWYWx1ZSA9IHN0eWxlc1tzdHlsZU5h
bWVdOworICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHsK
KyAgICAgICAgd2FyblZhbGlkU3R5bGUoc3R5bGVOYW1lLCBzdHlsZVZhbHVlLCBjb21wb25lbnQp
OworICAgICAgfQorICAgICAgaWYgKHN0eWxlVmFsdWUgIT0gbnVsbCkgeworICAgICAgICBzZXJp
YWxpemVkICs9IHByb2Nlc3NTdHlsZU5hbWUoc3R5bGVOYW1lKSArICc6JzsKKyAgICAgICAgc2Vy
aWFsaXplZCArPSBkYW5nZXJvdXNTdHlsZVZhbHVlKHN0eWxlTmFtZSwgc3R5bGVWYWx1ZSwgY29t
cG9uZW50KSArICc7JzsKKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHNlcmlhbGl6ZWQgfHwg
bnVsbDsKKyAgfSwKKworICAvKioKKyAgICogU2V0cyB0aGUgdmFsdWUgZm9yIG11bHRpcGxlIHN0
eWxlcyBvbiBhIG5vZGUuICBJZiBhIHZhbHVlIGlzIHNwZWNpZmllZCBhcworICAgKiAnJyAoZW1w
dHkgc3RyaW5nKSwgdGhlIGNvcnJlc3BvbmRpbmcgc3R5bGUgcHJvcGVydHkgd2lsbCBiZSB1bnNl
dC4KKyAgICoKKyAgICogQHBhcmFtIHtET01FbGVtZW50fSBub2RlCisgICAqIEBwYXJhbSB7b2Jq
ZWN0fSBzdHlsZXMKKyAgICogQHBhcmFtIHtSZWFjdERPTUNvbXBvbmVudH0gY29tcG9uZW50Cisg
ICAqLworICBzZXRWYWx1ZUZvclN0eWxlczogZnVuY3Rpb24gKG5vZGUsIHN0eWxlcywgY29tcG9u
ZW50KSB7CisgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHsK
KyAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhvc3RPcGVyYXRpb24oewor
ICAgICAgICBpbnN0YW5jZUlEOiBjb21wb25lbnQuX2RlYnVnSUQsCisgICAgICAgIHR5cGU6ICd1
cGRhdGUgc3R5bGVzJywKKyAgICAgICAgcGF5bG9hZDogc3R5bGVzCisgICAgICB9KTsKKyAgICB9
CisKKyAgICB2YXIgc3R5bGUgPSBub2RlLnN0eWxlOworICAgIGZvciAodmFyIHN0eWxlTmFtZSBp
biBzdHlsZXMpIHsKKyAgICAgIGlmICghc3R5bGVzLmhhc093blByb3BlcnR5KHN0eWxlTmFtZSkp
IHsKKyAgICAgICAgY29udGludWU7CisgICAgICB9CisgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9E
RV9FTlYgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgICB3YXJuVmFsaWRTdHlsZShzdHlsZU5h
bWUsIHN0eWxlc1tzdHlsZU5hbWVdLCBjb21wb25lbnQpOworICAgICAgfQorICAgICAgdmFyIHN0
eWxlVmFsdWUgPSBkYW5nZXJvdXNTdHlsZVZhbHVlKHN0eWxlTmFtZSwgc3R5bGVzW3N0eWxlTmFt
ZV0sIGNvbXBvbmVudCk7CisgICAgICBpZiAoc3R5bGVOYW1lID09PSAnZmxvYXQnIHx8IHN0eWxl
TmFtZSA9PT0gJ2Nzc0Zsb2F0JykgeworICAgICAgICBzdHlsZU5hbWUgPSBzdHlsZUZsb2F0QWNj
ZXNzb3I7CisgICAgICB9CisgICAgICBpZiAoc3R5bGVWYWx1ZSkgeworICAgICAgICBzdHlsZVtz
dHlsZU5hbWVdID0gc3R5bGVWYWx1ZTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHZhciBleHBh
bnNpb24gPSBoYXNTaG9ydGhhbmRQcm9wZXJ0eUJ1ZyAmJiBDU1NQcm9wZXJ0eS5zaG9ydGhhbmRQ
cm9wZXJ0eUV4cGFuc2lvbnNbc3R5bGVOYW1lXTsKKyAgICAgICAgaWYgKGV4cGFuc2lvbikgewor
ICAgICAgICAgIC8vIFNob3J0aGFuZCBwcm9wZXJ0eSB0aGF0IElFOCB3b24ndCBsaWtlIHVuc2V0
dGluZywgc28gdW5zZXQgZWFjaAorICAgICAgICAgIC8vIGNvbXBvbmVudCB0byBwbGFjYXRlIGl0
CisgICAgICAgICAgZm9yICh2YXIgaW5kaXZpZHVhbFN0eWxlTmFtZSBpbiBleHBhbnNpb24pIHsK
KyAgICAgICAgICAgIHN0eWxlW2luZGl2aWR1YWxTdHlsZU5hbWVdID0gJyc7CisgICAgICAgICAg
fQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgIHN0eWxlW3N0eWxlTmFtZV0gPSAnJzsKKyAg
ICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQorCit9OworCittb2R1bGUuZXhwb3J0cyA9IENT
U1Byb3BlcnR5T3BlcmF0aW9uczsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9DYWxsYmFj
a1F1ZXVlLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIv
Q2FsbGJhY2tRdWV1ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NDA1YzVmNDk0OTI4ZWQ5ZjBmZmY0ZjI5ZTI3
NjYxN2NjMzFiZjZjCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9t
b2R1bGVzL3JlYWN0LWRvbS9saWIvQ2FsbGJhY2tRdWV1ZS5qcwpAQCAtMCwwICsxLDExOCBAQAor
LyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy
IHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFu
dAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2
YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0UHJvZEludmFyaWFudCcpOworCitm
dW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGlu
c3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoIkNh
bm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpOyB9IH0KKwordmFyIFBvb2xlZENsYXNz
ID0gcmVxdWlyZSgnLi9Qb29sZWRDbGFzcycpOworCit2YXIgaW52YXJpYW50ID0gcmVxdWlyZSgn
ZmJqcy9saWIvaW52YXJpYW50Jyk7CisKKy8qKgorICogQSBzcGVjaWFsaXplZCBwc2V1ZG8tZXZl
bnQgbW9kdWxlIHRvIGhlbHAga2VlcCB0cmFjayBvZiBjb21wb25lbnRzIHdhaXRpbmcgdG8KKyAq
IGJlIG5vdGlmaWVkIHdoZW4gdGhlaXIgRE9NIHJlcHJlc2VudGF0aW9ucyBhcmUgYXZhaWxhYmxl
IGZvciB1c2UuCisgKgorICogVGhpcyBpbXBsZW1lbnRzIGBQb29sZWRDbGFzc2AsIHNvIHlvdSBz
aG91bGQgbmV2ZXIgbmVlZCB0byBpbnN0YW50aWF0ZSB0aGlzLgorICogSW5zdGVhZCwgdXNlIGBD
YWxsYmFja1F1ZXVlLmdldFBvb2xlZCgpYC4KKyAqCisgKiBAY2xhc3MgUmVhY3RNb3VudFJlYWR5
CisgKiBAaW1wbGVtZW50cyBQb29sZWRDbGFzcworICogQGludGVybmFsCisgKi8KKwordmFyIENh
bGxiYWNrUXVldWUgPSBmdW5jdGlvbiAoKSB7CisgIGZ1bmN0aW9uIENhbGxiYWNrUXVldWUoYXJn
KSB7CisgICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIENhbGxiYWNrUXVldWUpOworCisgICAgdGhp
cy5fY2FsbGJhY2tzID0gbnVsbDsKKyAgICB0aGlzLl9jb250ZXh0cyA9IG51bGw7CisgICAgdGhp
cy5fYXJnID0gYXJnOworICB9CisKKyAgLyoqCisgICAqIEVucXVldWVzIGEgY2FsbGJhY2sgdG8g
YmUgaW52b2tlZCB3aGVuIGBub3RpZnlBbGxgIGlzIGludm9rZWQuCisgICAqCisgICAqIEBwYXJh
bSB7ZnVuY3Rpb259IGNhbGxiYWNrIEludm9rZWQgd2hlbiBgbm90aWZ5QWxsYCBpcyBpbnZva2Vk
LgorICAgKiBAcGFyYW0gez9vYmplY3R9IGNvbnRleHQgQ29udGV4dCB0byBjYWxsIGBjYWxsYmFj
a2Agd2l0aC4KKyAgICogQGludGVybmFsCisgICAqLworCisKKyAgQ2FsbGJhY2tRdWV1ZS5wcm90
b3R5cGUuZW5xdWV1ZSA9IGZ1bmN0aW9uIGVucXVldWUoY2FsbGJhY2ssIGNvbnRleHQpIHsKKyAg
ICB0aGlzLl9jYWxsYmFja3MgPSB0aGlzLl9jYWxsYmFja3MgfHwgW107CisgICAgdGhpcy5fY2Fs
bGJhY2tzLnB1c2goY2FsbGJhY2spOworICAgIHRoaXMuX2NvbnRleHRzID0gdGhpcy5fY29udGV4
dHMgfHwgW107CisgICAgdGhpcy5fY29udGV4dHMucHVzaChjb250ZXh0KTsKKyAgfTsKKworICAv
KioKKyAgICogSW52b2tlcyBhbGwgZW5xdWV1ZWQgY2FsbGJhY2tzIGFuZCBjbGVhcnMgdGhlIHF1
ZXVlLiBUaGlzIGlzIGludm9rZWQgYWZ0ZXIKKyAgICogdGhlIERPTSByZXByZXNlbnRhdGlvbiBv
ZiBhIGNvbXBvbmVudCBoYXMgYmVlbiBjcmVhdGVkIG9yIHVwZGF0ZWQuCisgICAqCisgICAqIEBp
bnRlcm5hbAorICAgKi8KKworCisgIENhbGxiYWNrUXVldWUucHJvdG90eXBlLm5vdGlmeUFsbCA9
IGZ1bmN0aW9uIG5vdGlmeUFsbCgpIHsKKyAgICB2YXIgY2FsbGJhY2tzID0gdGhpcy5fY2FsbGJh
Y2tzOworICAgIHZhciBjb250ZXh0cyA9IHRoaXMuX2NvbnRleHRzOworICAgIHZhciBhcmcgPSB0
aGlzLl9hcmc7CisgICAgaWYgKGNhbGxiYWNrcyAmJiBjb250ZXh0cykgeworICAgICAgIShjYWxs
YmFja3MubGVuZ3RoID09PSBjb250ZXh0cy5sZW5ndGgpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ01pc21hdGNoZWQgbGlzdCBvZiBj
b250ZXh0cyBpbiBjYWxsYmFjayBxdWV1ZScpIDogX3Byb2RJbnZhcmlhbnQoJzI0JykgOiB2b2lk
IDA7CisgICAgICB0aGlzLl9jYWxsYmFja3MgPSBudWxsOworICAgICAgdGhpcy5fY29udGV4dHMg
PSBudWxsOworICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYWxsYmFja3MubGVuZ3RoOyBpKysp
IHsKKyAgICAgICAgY2FsbGJhY2tzW2ldLmNhbGwoY29udGV4dHNbaV0sIGFyZyk7CisgICAgICB9
CisgICAgICBjYWxsYmFja3MubGVuZ3RoID0gMDsKKyAgICAgIGNvbnRleHRzLmxlbmd0aCA9IDA7
CisgICAgfQorICB9OworCisgIENhbGxiYWNrUXVldWUucHJvdG90eXBlLmNoZWNrcG9pbnQgPSBm
dW5jdGlvbiBjaGVja3BvaW50KCkgeworICAgIHJldHVybiB0aGlzLl9jYWxsYmFja3MgPyB0aGlz
Ll9jYWxsYmFja3MubGVuZ3RoIDogMDsKKyAgfTsKKworICBDYWxsYmFja1F1ZXVlLnByb3RvdHlw
ZS5yb2xsYmFjayA9IGZ1bmN0aW9uIHJvbGxiYWNrKGxlbikgeworICAgIGlmICh0aGlzLl9jYWxs
YmFja3MgJiYgdGhpcy5fY29udGV4dHMpIHsKKyAgICAgIHRoaXMuX2NhbGxiYWNrcy5sZW5ndGgg
PSBsZW47CisgICAgICB0aGlzLl9jb250ZXh0cy5sZW5ndGggPSBsZW47CisgICAgfQorICB9Owor
CisgIC8qKgorICAgKiBSZXNldHMgdGhlIGludGVybmFsIHF1ZXVlLgorICAgKgorICAgKiBAaW50
ZXJuYWwKKyAgICovCisKKworICBDYWxsYmFja1F1ZXVlLnByb3RvdHlwZS5yZXNldCA9IGZ1bmN0
aW9uIHJlc2V0KCkgeworICAgIHRoaXMuX2NhbGxiYWNrcyA9IG51bGw7CisgICAgdGhpcy5fY29u
dGV4dHMgPSBudWxsOworICB9OworCisgIC8qKgorICAgKiBgUG9vbGVkQ2xhc3NgIGxvb2tzIGZv
ciB0aGlzLgorICAgKi8KKworCisgIENhbGxiYWNrUXVldWUucHJvdG90eXBlLmRlc3RydWN0b3Ig
PSBmdW5jdGlvbiBkZXN0cnVjdG9yKCkgeworICAgIHRoaXMucmVzZXQoKTsKKyAgfTsKKworICBy
ZXR1cm4gQ2FsbGJhY2tRdWV1ZTsKK30oKTsKKworbW9kdWxlLmV4cG9ydHMgPSBQb29sZWRDbGFz
cy5hZGRQb29saW5nVG8oQ2FsbGJhY2tRdWV1ZSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9s
aWIvQ2hhbmdlRXZlbnRQbHVnaW4uanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMv
cmVhY3QtZG9tL2xpYi9DaGFuZ2VFdmVudFBsdWdpbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZmVlYTU2MmZl
NGU0MGQ0NDI2OTM5MjA3ZWE2MTY4ZTI0NzMwMjFmCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvQ2hhbmdlRXZlbnRQbHVnaW4u
anMKQEAgLTAsMCArMSwzMjAgQEAKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFj
ZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2Ug
Y29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhl
CisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisn
dXNlIHN0cmljdCc7CisKK3ZhciBFdmVudFBsdWdpbkh1YiA9IHJlcXVpcmUoJy4vRXZlbnRQbHVn
aW5IdWInKTsKK3ZhciBFdmVudFByb3BhZ2F0b3JzID0gcmVxdWlyZSgnLi9FdmVudFByb3BhZ2F0
b3JzJyk7Cit2YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9FeGVj
dXRpb25FbnZpcm9ubWVudCcpOwordmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IHJlcXVpcmUo
Jy4vUmVhY3RET01Db21wb25lbnRUcmVlJyk7Cit2YXIgUmVhY3RVcGRhdGVzID0gcmVxdWlyZSgn
Li9SZWFjdFVwZGF0ZXMnKTsKK3ZhciBTeW50aGV0aWNFdmVudCA9IHJlcXVpcmUoJy4vU3ludGhl
dGljRXZlbnQnKTsKKwordmFyIGdldEV2ZW50VGFyZ2V0ID0gcmVxdWlyZSgnLi9nZXRFdmVudFRh
cmdldCcpOwordmFyIGlzRXZlbnRTdXBwb3J0ZWQgPSByZXF1aXJlKCcuL2lzRXZlbnRTdXBwb3J0
ZWQnKTsKK3ZhciBpc1RleHRJbnB1dEVsZW1lbnQgPSByZXF1aXJlKCcuL2lzVGV4dElucHV0RWxl
bWVudCcpOworCit2YXIgZXZlbnRUeXBlcyA9IHsKKyAgY2hhbmdlOiB7CisgICAgcGhhc2VkUmVn
aXN0cmF0aW9uTmFtZXM6IHsKKyAgICAgIGJ1YmJsZWQ6ICdvbkNoYW5nZScsCisgICAgICBjYXB0
dXJlZDogJ29uQ2hhbmdlQ2FwdHVyZScKKyAgICB9LAorICAgIGRlcGVuZGVuY2llczogWyd0b3BC
bHVyJywgJ3RvcENoYW5nZScsICd0b3BDbGljaycsICd0b3BGb2N1cycsICd0b3BJbnB1dCcsICd0
b3BLZXlEb3duJywgJ3RvcEtleVVwJywgJ3RvcFNlbGVjdGlvbkNoYW5nZSddCisgIH0KK307CisK
Ky8qKgorICogRm9yIElFIHNoaW1zCisgKi8KK3ZhciBhY3RpdmVFbGVtZW50ID0gbnVsbDsKK3Zh
ciBhY3RpdmVFbGVtZW50SW5zdCA9IG51bGw7Cit2YXIgYWN0aXZlRWxlbWVudFZhbHVlID0gbnVs
bDsKK3ZhciBhY3RpdmVFbGVtZW50VmFsdWVQcm9wID0gbnVsbDsKKworLyoqCisgKiBTRUNUSU9O
OiBoYW5kbGUgYGNoYW5nZWAgZXZlbnQKKyAqLworZnVuY3Rpb24gc2hvdWxkVXNlQ2hhbmdlRXZl
bnQoZWxlbSkgeworICB2YXIgbm9kZU5hbWUgPSBlbGVtLm5vZGVOYW1lICYmIGVsZW0ubm9kZU5h
bWUudG9Mb3dlckNhc2UoKTsKKyAgcmV0dXJuIG5vZGVOYW1lID09PSAnc2VsZWN0JyB8fCBub2Rl
TmFtZSA9PT0gJ2lucHV0JyAmJiBlbGVtLnR5cGUgPT09ICdmaWxlJzsKK30KKwordmFyIGRvZXND
aGFuZ2VFdmVudEJ1YmJsZSA9IGZhbHNlOworaWYgKEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVz
ZURPTSkgeworICAvLyBTZWUgYGhhbmRsZUNoYW5nZWAgY29tbWVudCBiZWxvdworICBkb2VzQ2hh
bmdlRXZlbnRCdWJibGUgPSBpc0V2ZW50U3VwcG9ydGVkKCdjaGFuZ2UnKSAmJiAoIWRvY3VtZW50
LmRvY3VtZW50TW9kZSB8fCBkb2N1bWVudC5kb2N1bWVudE1vZGUgPiA4KTsKK30KKworZnVuY3Rp
b24gbWFudWFsRGlzcGF0Y2hDaGFuZ2VFdmVudChuYXRpdmVFdmVudCkgeworICB2YXIgZXZlbnQg
PSBTeW50aGV0aWNFdmVudC5nZXRQb29sZWQoZXZlbnRUeXBlcy5jaGFuZ2UsIGFjdGl2ZUVsZW1l
bnRJbnN0LCBuYXRpdmVFdmVudCwgZ2V0RXZlbnRUYXJnZXQobmF0aXZlRXZlbnQpKTsKKyAgRXZl
bnRQcm9wYWdhdG9ycy5hY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKGV2ZW50KTsKKworICAv
LyBJZiBjaGFuZ2UgYW5kIHByb3BlcnR5Y2hhbmdlIGJ1YmJsZWQsIHdlJ2QganVzdCBiaW5kIHRv
IGl0IGxpa2UgYWxsIHRoZQorICAvLyBvdGhlciBldmVudHMgYW5kIGhhdmUgaXQgZ28gdGhyb3Vn
aCBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuIFNpbmNlIGl0CisgIC8vIGRvZXNuJ3QsIHdlIG1h
bnVhbGx5IGxpc3RlbiBmb3IgdGhlIGV2ZW50cyBhbmQgc28gd2UgaGF2ZSB0byBlbnF1ZXVlIGFu
ZAorICAvLyBwcm9jZXNzIHRoZSBhYnN0cmFjdCBldmVudCBtYW51YWxseS4KKyAgLy8KKyAgLy8g
QmF0Y2hpbmcgaXMgbmVjZXNzYXJ5IGhlcmUgaW4gb3JkZXIgdG8gZW5zdXJlIHRoYXQgYWxsIGV2
ZW50IGhhbmRsZXJzIHJ1bgorICAvLyBiZWZvcmUgdGhlIG5leHQgcmVyZW5kZXIgKGluY2x1ZGlu
ZyBldmVudCBoYW5kbGVycyBhdHRhY2hlZCB0byBhbmNlc3RvcgorICAvLyBlbGVtZW50cyBpbnN0
ZWFkIG9mIGRpcmVjdGx5IG9uIHRoZSBpbnB1dCkuIFdpdGhvdXQgdGhpcywgY29udHJvbGxlZAor
ICAvLyBjb21wb25lbnRzIGRvbid0IHdvcmsgcHJvcGVybHkgaW4gY29uanVuY3Rpb24gd2l0aCBl
dmVudCBidWJibGluZyBiZWNhdXNlCisgIC8vIHRoZSBjb21wb25lbnQgaXMgcmVyZW5kZXJlZCBh
bmQgdGhlIHZhbHVlIHJldmVydGVkIGJlZm9yZSBhbGwgdGhlIGV2ZW50CisgIC8vIGhhbmRsZXJz
IGNhbiBydW4uIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzcw
OC4KKyAgUmVhY3RVcGRhdGVzLmJhdGNoZWRVcGRhdGVzKHJ1bkV2ZW50SW5CYXRjaCwgZXZlbnQp
OworfQorCitmdW5jdGlvbiBydW5FdmVudEluQmF0Y2goZXZlbnQpIHsKKyAgRXZlbnRQbHVnaW5I
dWIuZW5xdWV1ZUV2ZW50cyhldmVudCk7CisgIEV2ZW50UGx1Z2luSHViLnByb2Nlc3NFdmVudFF1
ZXVlKGZhbHNlKTsKK30KKworZnVuY3Rpb24gc3RhcnRXYXRjaGluZ0ZvckNoYW5nZUV2ZW50SUU4
KHRhcmdldCwgdGFyZ2V0SW5zdCkgeworICBhY3RpdmVFbGVtZW50ID0gdGFyZ2V0OworICBhY3Rp
dmVFbGVtZW50SW5zdCA9IHRhcmdldEluc3Q7CisgIGFjdGl2ZUVsZW1lbnQuYXR0YWNoRXZlbnQo
J29uY2hhbmdlJywgbWFudWFsRGlzcGF0Y2hDaGFuZ2VFdmVudCk7Cit9CisKK2Z1bmN0aW9uIHN0
b3BXYXRjaGluZ0ZvckNoYW5nZUV2ZW50SUU4KCkgeworICBpZiAoIWFjdGl2ZUVsZW1lbnQpIHsK
KyAgICByZXR1cm47CisgIH0KKyAgYWN0aXZlRWxlbWVudC5kZXRhY2hFdmVudCgnb25jaGFuZ2Un
LCBtYW51YWxEaXNwYXRjaENoYW5nZUV2ZW50KTsKKyAgYWN0aXZlRWxlbWVudCA9IG51bGw7Cisg
IGFjdGl2ZUVsZW1lbnRJbnN0ID0gbnVsbDsKK30KKworZnVuY3Rpb24gZ2V0VGFyZ2V0SW5zdEZv
ckNoYW5nZUV2ZW50KHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCkgeworICBpZiAodG9wTGV2ZWxU
eXBlID09PSAndG9wQ2hhbmdlJykgeworICAgIHJldHVybiB0YXJnZXRJbnN0OworICB9Cit9Citm
dW5jdGlvbiBoYW5kbGVFdmVudHNGb3JDaGFuZ2VFdmVudElFOCh0b3BMZXZlbFR5cGUsIHRhcmdl
dCwgdGFyZ2V0SW5zdCkgeworICBpZiAodG9wTGV2ZWxUeXBlID09PSAndG9wRm9jdXMnKSB7Cisg
ICAgLy8gc3RvcFdhdGNoaW5nKCkgc2hvdWxkIGJlIGEgbm9vcCBoZXJlIGJ1dCB3ZSBjYWxsIGl0
IGp1c3QgaW4gY2FzZSB3ZQorICAgIC8vIG1pc3NlZCBhIGJsdXIgZXZlbnQgc29tZWhvdy4KKyAg
ICBzdG9wV2F0Y2hpbmdGb3JDaGFuZ2VFdmVudElFOCgpOworICAgIHN0YXJ0V2F0Y2hpbmdGb3JD
aGFuZ2VFdmVudElFOCh0YXJnZXQsIHRhcmdldEluc3QpOworICB9IGVsc2UgaWYgKHRvcExldmVs
VHlwZSA9PT0gJ3RvcEJsdXInKSB7CisgICAgc3RvcFdhdGNoaW5nRm9yQ2hhbmdlRXZlbnRJRTgo
KTsKKyAgfQorfQorCisvKioKKyAqIFNFQ1RJT046IGhhbmRsZSBgaW5wdXRgIGV2ZW50CisgKi8K
K3ZhciBpc0lucHV0RXZlbnRTdXBwb3J0ZWQgPSBmYWxzZTsKK2lmIChFeGVjdXRpb25FbnZpcm9u
bWVudC5jYW5Vc2VET00pIHsKKyAgLy8gSUU5IGNsYWltcyB0byBzdXBwb3J0IHRoZSBpbnB1dCBl
dmVudCBidXQgZmFpbHMgdG8gdHJpZ2dlciBpdCB3aGVuCisgIC8vIGRlbGV0aW5nIHRleHQsIHNv
IHdlIGlnbm9yZSBpdHMgaW5wdXQgZXZlbnRzLgorICAvLyBJRTEwKyBmaXJlIGlucHV0IGV2ZW50
cyB0byBvZnRlbiwgc3VjaCB3aGVuIGEgcGxhY2Vob2xkZXIKKyAgLy8gY2hhbmdlcyBvciB3aGVu
IGFuIGlucHV0IHdpdGggYSBwbGFjZWhvbGRlciBpcyBmb2N1c2VkLgorICBpc0lucHV0RXZlbnRT
dXBwb3J0ZWQgPSBpc0V2ZW50U3VwcG9ydGVkKCdpbnB1dCcpICYmICghZG9jdW1lbnQuZG9jdW1l
bnRNb2RlIHx8IGRvY3VtZW50LmRvY3VtZW50TW9kZSA+IDExKTsKK30KKworLyoqCisgKiAoRm9y
IElFIDw9MTEpIFJlcGxhY2VtZW50IGdldHRlci9zZXR0ZXIgZm9yIHRoZSBgdmFsdWVgIHByb3Bl
cnR5IHRoYXQgZ2V0cworICogc2V0IG9uIHRoZSBhY3RpdmUgZWxlbWVudC4KKyAqLwordmFyIG5l
d1ZhbHVlUHJvcCA9IHsKKyAgZ2V0OiBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIGFjdGl2ZUVs
ZW1lbnRWYWx1ZVByb3AuZ2V0LmNhbGwodGhpcyk7CisgIH0sCisgIHNldDogZnVuY3Rpb24gKHZh
bCkgeworICAgIC8vIENhc3QgdG8gYSBzdHJpbmcgc28gd2UgY2FuIGRvIGVxdWFsaXR5IGNoZWNr
cy4KKyAgICBhY3RpdmVFbGVtZW50VmFsdWUgPSAnJyArIHZhbDsKKyAgICBhY3RpdmVFbGVtZW50
VmFsdWVQcm9wLnNldC5jYWxsKHRoaXMsIHZhbCk7CisgIH0KK307CisKKy8qKgorICogKEZvciBJ
RSA8PTExKSBTdGFydHMgdHJhY2tpbmcgcHJvcGVydHljaGFuZ2UgZXZlbnRzIG9uIHRoZSBwYXNz
ZWQtaW4gZWxlbWVudAorICogYW5kIG92ZXJyaWRlIHRoZSB2YWx1ZSBwcm9wZXJ0eSBzbyB0aGF0
IHdlIGNhbiBkaXN0aW5ndWlzaCB1c2VyIGV2ZW50cyBmcm9tCisgKiB2YWx1ZSBjaGFuZ2VzIGlu
IEpTLgorICovCitmdW5jdGlvbiBzdGFydFdhdGNoaW5nRm9yVmFsdWVDaGFuZ2UodGFyZ2V0LCB0
YXJnZXRJbnN0KSB7CisgIGFjdGl2ZUVsZW1lbnQgPSB0YXJnZXQ7CisgIGFjdGl2ZUVsZW1lbnRJ
bnN0ID0gdGFyZ2V0SW5zdDsKKyAgYWN0aXZlRWxlbWVudFZhbHVlID0gdGFyZ2V0LnZhbHVlOwor
ICBhY3RpdmVFbGVtZW50VmFsdWVQcm9wID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cih0YXJnZXQuY29uc3RydWN0b3IucHJvdG90eXBlLCAndmFsdWUnKTsKKworICAvLyBOb3QgZ3Vh
cmRlZCBpbiBhIGNhbkRlZmluZVByb3BlcnR5IGNoZWNrOiBJRTggc3VwcG9ydHMgZGVmaW5lUHJv
cGVydHkgb25seQorICAvLyBvbiBET00gZWxlbWVudHMKKyAgT2JqZWN0LmRlZmluZVByb3BlcnR5
KGFjdGl2ZUVsZW1lbnQsICd2YWx1ZScsIG5ld1ZhbHVlUHJvcCk7CisgIGlmIChhY3RpdmVFbGVt
ZW50LmF0dGFjaEV2ZW50KSB7CisgICAgYWN0aXZlRWxlbWVudC5hdHRhY2hFdmVudCgnb25wcm9w
ZXJ0eWNoYW5nZScsIGhhbmRsZVByb3BlcnR5Q2hhbmdlKTsKKyAgfSBlbHNlIHsKKyAgICBhY3Rp
dmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Byb3BlcnR5Y2hhbmdlJywgaGFuZGxlUHJvcGVy
dHlDaGFuZ2UsIGZhbHNlKTsKKyAgfQorfQorCisvKioKKyAqIChGb3IgSUUgPD0xMSkgUmVtb3Zl
cyB0aGUgZXZlbnQgbGlzdGVuZXJzIGZyb20gdGhlIGN1cnJlbnRseS10cmFja2VkIGVsZW1lbnQs
CisgKiBpZiBhbnkgZXhpc3RzLgorICovCitmdW5jdGlvbiBzdG9wV2F0Y2hpbmdGb3JWYWx1ZUNo
YW5nZSgpIHsKKyAgaWYgKCFhY3RpdmVFbGVtZW50KSB7CisgICAgcmV0dXJuOworICB9CisKKyAg
Ly8gZGVsZXRlIHJlc3RvcmVzIHRoZSBvcmlnaW5hbCBwcm9wZXJ0eSBkZWZpbml0aW9uCisgIGRl
bGV0ZSBhY3RpdmVFbGVtZW50LnZhbHVlOworCisgIGlmIChhY3RpdmVFbGVtZW50LmRldGFjaEV2
ZW50KSB7CisgICAgYWN0aXZlRWxlbWVudC5kZXRhY2hFdmVudCgnb25wcm9wZXJ0eWNoYW5nZScs
IGhhbmRsZVByb3BlcnR5Q2hhbmdlKTsKKyAgfSBlbHNlIHsKKyAgICBhY3RpdmVFbGVtZW50LnJl
bW92ZUV2ZW50TGlzdGVuZXIoJ3Byb3BlcnR5Y2hhbmdlJywgaGFuZGxlUHJvcGVydHlDaGFuZ2Us
IGZhbHNlKTsKKyAgfQorCisgIGFjdGl2ZUVsZW1lbnQgPSBudWxsOworICBhY3RpdmVFbGVtZW50
SW5zdCA9IG51bGw7CisgIGFjdGl2ZUVsZW1lbnRWYWx1ZSA9IG51bGw7CisgIGFjdGl2ZUVsZW1l
bnRWYWx1ZVByb3AgPSBudWxsOworfQorCisvKioKKyAqIChGb3IgSUUgPD0xMSkgSGFuZGxlcyBh
IHByb3BlcnR5Y2hhbmdlIGV2ZW50LCBzZW5kaW5nIGEgYGNoYW5nZWAgZXZlbnQgaWYKKyAqIHRo
ZSB2YWx1ZSBvZiB0aGUgYWN0aXZlIGVsZW1lbnQgaGFzIGNoYW5nZWQuCisgKi8KK2Z1bmN0aW9u
IGhhbmRsZVByb3BlcnR5Q2hhbmdlKG5hdGl2ZUV2ZW50KSB7CisgIGlmIChuYXRpdmVFdmVudC5w
cm9wZXJ0eU5hbWUgIT09ICd2YWx1ZScpIHsKKyAgICByZXR1cm47CisgIH0KKyAgdmFyIHZhbHVl
ID0gbmF0aXZlRXZlbnQuc3JjRWxlbWVudC52YWx1ZTsKKyAgaWYgKHZhbHVlID09PSBhY3RpdmVF
bGVtZW50VmFsdWUpIHsKKyAgICByZXR1cm47CisgIH0KKyAgYWN0aXZlRWxlbWVudFZhbHVlID0g
dmFsdWU7CisKKyAgbWFudWFsRGlzcGF0Y2hDaGFuZ2VFdmVudChuYXRpdmVFdmVudCk7Cit9CisK
Ky8qKgorICogSWYgYSBgY2hhbmdlYCBldmVudCBzaG91bGQgYmUgZmlyZWQsIHJldHVybnMgdGhl
IHRhcmdldCdzIElELgorICovCitmdW5jdGlvbiBnZXRUYXJnZXRJbnN0Rm9ySW5wdXRFdmVudCh0
b3BMZXZlbFR5cGUsIHRhcmdldEluc3QpIHsKKyAgaWYgKHRvcExldmVsVHlwZSA9PT0gJ3RvcElu
cHV0JykgeworICAgIC8vIEluIG1vZGVybiBicm93c2VycyAoaS5lLiwgbm90IElFOCBvciBJRTkp
LCB0aGUgaW5wdXQgZXZlbnQgaXMgZXhhY3RseQorICAgIC8vIHdoYXQgd2Ugd2FudCBzbyBmYWxs
IHRocm91Z2ggaGVyZSBhbmQgdHJpZ2dlciBhbiBhYnN0cmFjdCBldmVudAorICAgIHJldHVybiB0
YXJnZXRJbnN0OworICB9Cit9CisKK2Z1bmN0aW9uIGhhbmRsZUV2ZW50c0ZvcklucHV0RXZlbnRJ
RSh0b3BMZXZlbFR5cGUsIHRhcmdldCwgdGFyZ2V0SW5zdCkgeworICBpZiAodG9wTGV2ZWxUeXBl
ID09PSAndG9wRm9jdXMnKSB7CisgICAgLy8gSW4gSUU4LCB3ZSBjYW4gY2FwdHVyZSBhbG1vc3Qg
YWxsIC52YWx1ZSBjaGFuZ2VzIGJ5IGFkZGluZyBhCisgICAgLy8gcHJvcGVydHljaGFuZ2UgaGFu
ZGxlciBhbmQgbG9va2luZyBmb3IgZXZlbnRzIHdpdGggcHJvcGVydHlOYW1lCisgICAgLy8gZXF1
YWwgdG8gJ3ZhbHVlJworICAgIC8vIEluIElFOS0xMSwgcHJvcGVydHljaGFuZ2UgZmlyZXMgZm9y
IG1vc3QgaW5wdXQgZXZlbnRzIGJ1dCBpcyBidWdneSBhbmQKKyAgICAvLyBkb2Vzbid0IGZpcmUg
d2hlbiB0ZXh0IGlzIGRlbGV0ZWQsIGJ1dCBjb252ZW5pZW50bHksIHNlbGVjdGlvbmNoYW5nZQor
ICAgIC8vIGFwcGVhcnMgdG8gZmlyZSBpbiBhbGwgb2YgdGhlIHJlbWFpbmluZyBjYXNlcyBzbyB3
ZSBjYXRjaCB0aG9zZSBhbmQKKyAgICAvLyBmb3J3YXJkIHRoZSBldmVudCBpZiB0aGUgdmFsdWUg
aGFzIGNoYW5nZWQKKyAgICAvLyBJbiBlaXRoZXIgY2FzZSwgd2UgZG9uJ3Qgd2FudCB0byBjYWxs
IHRoZSBldmVudCBoYW5kbGVyIGlmIHRoZSB2YWx1ZQorICAgIC8vIGlzIGNoYW5nZWQgZnJvbSBK
UyBzbyB3ZSByZWRlZmluZSBhIHNldHRlciBmb3IgYC52YWx1ZWAgdGhhdCB1cGRhdGVzCisgICAg
Ly8gb3VyIGFjdGl2ZUVsZW1lbnRWYWx1ZSB2YXJpYWJsZSwgYWxsb3dpbmcgdXMgdG8gaWdub3Jl
IHRob3NlIGNoYW5nZXMKKyAgICAvLworICAgIC8vIHN0b3BXYXRjaGluZygpIHNob3VsZCBiZSBh
IG5vb3AgaGVyZSBidXQgd2UgY2FsbCBpdCBqdXN0IGluIGNhc2Ugd2UKKyAgICAvLyBtaXNzZWQg
YSBibHVyIGV2ZW50IHNvbWVob3cuCisgICAgc3RvcFdhdGNoaW5nRm9yVmFsdWVDaGFuZ2UoKTsK
KyAgICBzdGFydFdhdGNoaW5nRm9yVmFsdWVDaGFuZ2UodGFyZ2V0LCB0YXJnZXRJbnN0KTsKKyAg
fSBlbHNlIGlmICh0b3BMZXZlbFR5cGUgPT09ICd0b3BCbHVyJykgeworICAgIHN0b3BXYXRjaGlu
Z0ZvclZhbHVlQ2hhbmdlKCk7CisgIH0KK30KKworLy8gRm9yIElFOCBhbmQgSUU5LgorZnVuY3Rp
b24gZ2V0VGFyZ2V0SW5zdEZvcklucHV0RXZlbnRJRSh0b3BMZXZlbFR5cGUsIHRhcmdldEluc3Qp
IHsKKyAgaWYgKHRvcExldmVsVHlwZSA9PT0gJ3RvcFNlbGVjdGlvbkNoYW5nZScgfHwgdG9wTGV2
ZWxUeXBlID09PSAndG9wS2V5VXAnIHx8IHRvcExldmVsVHlwZSA9PT0gJ3RvcEtleURvd24nKSB7
CisgICAgLy8gT24gdGhlIHNlbGVjdGlvbmNoYW5nZSBldmVudCwgdGhlIHRhcmdldCBpcyBqdXN0
IGRvY3VtZW50IHdoaWNoIGlzbid0CisgICAgLy8gaGVscGZ1bCBmb3IgdXMgc28ganVzdCBjaGVj
ayBhY3RpdmVFbGVtZW50IGluc3RlYWQuCisgICAgLy8KKyAgICAvLyA5OSUgb2YgdGhlIHRpbWUs
IGtleWRvd24gYW5kIGtleXVwIGFyZW4ndCBuZWNlc3NhcnkuIElFOCBmYWlscyB0byBmaXJlCisg
ICAgLy8gcHJvcGVydHljaGFuZ2Ugb24gdGhlIGZpcnN0IGlucHV0IGV2ZW50IGFmdGVyIHNldHRp
bmcgYHZhbHVlYCBmcm9tIGEKKyAgICAvLyBzY3JpcHQgYW5kIGZpcmVzIG9ubHkga2V5ZG93biwg
a2V5cHJlc3MsIGtleXVwLiBDYXRjaGluZyBrZXl1cCB1c3VhbGx5CisgICAgLy8gZ2V0cyBpdCBh
bmQgY2F0Y2hpbmcga2V5ZG93biBsZXRzIHVzIGZpcmUgYW4gZXZlbnQgZm9yIHRoZSBmaXJzdAor
ICAgIC8vIGtleXN0cm9rZSBpZiB1c2VyIGRvZXMgYSBrZXkgcmVwZWF0IChpdCdsbCBiZSBhIGxp
dHRsZSBkZWxheWVkOiByaWdodAorICAgIC8vIGJlZm9yZSB0aGUgc2Vjb25kIGtleXN0cm9rZSku
IE90aGVyIGlucHV0IG1ldGhvZHMgKGUuZy4sIHBhc3RlKSBzZWVtIHRvCisgICAgLy8gZmlyZSBz
ZWxlY3Rpb25jaGFuZ2Ugbm9ybWFsbHkuCisgICAgaWYgKGFjdGl2ZUVsZW1lbnQgJiYgYWN0aXZl
RWxlbWVudC52YWx1ZSAhPT0gYWN0aXZlRWxlbWVudFZhbHVlKSB7CisgICAgICBhY3RpdmVFbGVt
ZW50VmFsdWUgPSBhY3RpdmVFbGVtZW50LnZhbHVlOworICAgICAgcmV0dXJuIGFjdGl2ZUVsZW1l
bnRJbnN0OworICAgIH0KKyAgfQorfQorCisvKioKKyAqIFNFQ1RJT046IGhhbmRsZSBgY2xpY2tg
IGV2ZW50CisgKi8KK2Z1bmN0aW9uIHNob3VsZFVzZUNsaWNrRXZlbnQoZWxlbSkgeworICAvLyBV
c2UgdGhlIGBjbGlja2AgZXZlbnQgdG8gZGV0ZWN0IGNoYW5nZXMgdG8gY2hlY2tib3ggYW5kIHJh
ZGlvIGlucHV0cy4KKyAgLy8gVGhpcyBhcHByb2FjaCB3b3JrcyBhY3Jvc3MgYWxsIGJyb3dzZXJz
LCB3aGVyZWFzIGBjaGFuZ2VgIGRvZXMgbm90IGZpcmUKKyAgLy8gdW50aWwgYGJsdXJgIGluIElF
OC4KKyAgcmV0dXJuIGVsZW0ubm9kZU5hbWUgJiYgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgp
ID09PSAnaW5wdXQnICYmIChlbGVtLnR5cGUgPT09ICdjaGVja2JveCcgfHwgZWxlbS50eXBlID09
PSAncmFkaW8nKTsKK30KKworZnVuY3Rpb24gZ2V0VGFyZ2V0SW5zdEZvckNsaWNrRXZlbnQodG9w
TGV2ZWxUeXBlLCB0YXJnZXRJbnN0KSB7CisgIGlmICh0b3BMZXZlbFR5cGUgPT09ICd0b3BDbGlj
aycpIHsKKyAgICByZXR1cm4gdGFyZ2V0SW5zdDsKKyAgfQorfQorCisvKioKKyAqIFRoaXMgcGx1
Z2luIGNyZWF0ZXMgYW4gYG9uQ2hhbmdlYCBldmVudCB0aGF0IG5vcm1hbGl6ZXMgY2hhbmdlIGV2
ZW50cworICogYWNyb3NzIGZvcm0gZWxlbWVudHMuIFRoaXMgZXZlbnQgZmlyZXMgYXQgYSB0aW1l
IHdoZW4gaXQncyBwb3NzaWJsZSB0bworICogY2hhbmdlIHRoZSBlbGVtZW50J3MgdmFsdWUgd2l0
aG91dCBzZWVpbmcgYSBmbGlja2VyLgorICoKKyAqIFN1cHBvcnRlZCBlbGVtZW50cyBhcmU6Cisg
KiAtIGlucHV0IChzZWUgYGlzVGV4dElucHV0RWxlbWVudGApCisgKiAtIHRleHRhcmVhCisgKiAt
IHNlbGVjdAorICovCit2YXIgQ2hhbmdlRXZlbnRQbHVnaW4gPSB7CisKKyAgZXZlbnRUeXBlczog
ZXZlbnRUeXBlcywKKworICBleHRyYWN0RXZlbnRzOiBmdW5jdGlvbiAodG9wTGV2ZWxUeXBlLCB0
YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHsKKyAgICB2YXIgdGFy
Z2V0Tm9kZSA9IHRhcmdldEluc3QgPyBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21J
bnN0YW5jZSh0YXJnZXRJbnN0KSA6IHdpbmRvdzsKKworICAgIHZhciBnZXRUYXJnZXRJbnN0RnVu
YywgaGFuZGxlRXZlbnRGdW5jOworICAgIGlmIChzaG91bGRVc2VDaGFuZ2VFdmVudCh0YXJnZXRO
b2RlKSkgeworICAgICAgaWYgKGRvZXNDaGFuZ2VFdmVudEJ1YmJsZSkgeworICAgICAgICBnZXRU
YXJnZXRJbnN0RnVuYyA9IGdldFRhcmdldEluc3RGb3JDaGFuZ2VFdmVudDsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIGhhbmRsZUV2ZW50RnVuYyA9IGhhbmRsZUV2ZW50c0ZvckNoYW5nZUV2ZW50
SUU4OworICAgICAgfQorICAgIH0gZWxzZSBpZiAoaXNUZXh0SW5wdXRFbGVtZW50KHRhcmdldE5v
ZGUpKSB7CisgICAgICBpZiAoaXNJbnB1dEV2ZW50U3VwcG9ydGVkKSB7CisgICAgICAgIGdldFRh
cmdldEluc3RGdW5jID0gZ2V0VGFyZ2V0SW5zdEZvcklucHV0RXZlbnQ7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBnZXRUYXJnZXRJbnN0RnVuYyA9IGdldFRhcmdldEluc3RGb3JJbnB1dEV2ZW50
SUU7CisgICAgICAgIGhhbmRsZUV2ZW50RnVuYyA9IGhhbmRsZUV2ZW50c0ZvcklucHV0RXZlbnRJ
RTsKKyAgICAgIH0KKyAgICB9IGVsc2UgaWYgKHNob3VsZFVzZUNsaWNrRXZlbnQodGFyZ2V0Tm9k
ZSkpIHsKKyAgICAgIGdldFRhcmdldEluc3RGdW5jID0gZ2V0VGFyZ2V0SW5zdEZvckNsaWNrRXZl
bnQ7CisgICAgfQorCisgICAgaWYgKGdldFRhcmdldEluc3RGdW5jKSB7CisgICAgICB2YXIgaW5z
dCA9IGdldFRhcmdldEluc3RGdW5jKHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCk7CisgICAgICBp
ZiAoaW5zdCkgeworICAgICAgICB2YXIgZXZlbnQgPSBTeW50aGV0aWNFdmVudC5nZXRQb29sZWQo
ZXZlbnRUeXBlcy5jaGFuZ2UsIGluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7
CisgICAgICAgIGV2ZW50LnR5cGUgPSAnY2hhbmdlJzsKKyAgICAgICAgRXZlbnRQcm9wYWdhdG9y
cy5hY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKGV2ZW50KTsKKyAgICAgICAgcmV0dXJuIGV2
ZW50OworICAgICAgfQorICAgIH0KKworICAgIGlmIChoYW5kbGVFdmVudEZ1bmMpIHsKKyAgICAg
IGhhbmRsZUV2ZW50RnVuYyh0b3BMZXZlbFR5cGUsIHRhcmdldE5vZGUsIHRhcmdldEluc3QpOwor
ICAgIH0KKyAgfQorCit9OworCittb2R1bGUuZXhwb3J0cyA9IENoYW5nZUV2ZW50UGx1Z2luOwpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0
L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL0RPTUNoaWxkcmVuT3BlcmF0aW9ucy5qcyBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL0RPTUNoaWxkcmVuT3Bl
cmF0aW9ucy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDVkYzNlYzBmYzMzNjQ2NmQyZTkzMDc5NjcyYWU1ZjEz
ZGFjOWU4Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVz
L3JlYWN0LWRvbS9saWIvRE9NQ2hpbGRyZW5PcGVyYXRpb25zLmpzCkBAIC0wLDAgKzEsMjI0IEBA
CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5k
ZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdy
YW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxl
IGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIg
RE9NTGF6eVRyZWUgPSByZXF1aXJlKCcuL0RPTUxhenlUcmVlJyk7Cit2YXIgRGFuZ2VyID0gcmVx
dWlyZSgnLi9EYW5nZXInKTsKK3ZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSByZXF1aXJlKCcu
L1JlYWN0RE9NQ29tcG9uZW50VHJlZScpOwordmFyIFJlYWN0SW5zdHJ1bWVudGF0aW9uID0gcmVx
dWlyZSgnLi9SZWFjdEluc3RydW1lbnRhdGlvbicpOworCit2YXIgY3JlYXRlTWljcm9zb2Z0VW5z
YWZlTG9jYWxGdW5jdGlvbiA9IHJlcXVpcmUoJy4vY3JlYXRlTWljcm9zb2Z0VW5zYWZlTG9jYWxG
dW5jdGlvbicpOwordmFyIHNldElubmVySFRNTCA9IHJlcXVpcmUoJy4vc2V0SW5uZXJIVE1MJyk7
Cit2YXIgc2V0VGV4dENvbnRlbnQgPSByZXF1aXJlKCcuL3NldFRleHRDb250ZW50Jyk7CisKK2Z1
bmN0aW9uIGdldE5vZGVBZnRlcihwYXJlbnROb2RlLCBub2RlKSB7CisgIC8vIFNwZWNpYWwgY2Fz
ZSBmb3IgdGV4dCBjb21wb25lbnRzLCB3aGljaCByZXR1cm4gW29wZW4sIGNsb3NlXSBjb21tZW50
cworICAvLyBmcm9tIGdldEhvc3ROb2RlLgorICBpZiAoQXJyYXkuaXNBcnJheShub2RlKSkgewor
ICAgIG5vZGUgPSBub2RlWzFdOworICB9CisgIHJldHVybiBub2RlID8gbm9kZS5uZXh0U2libGlu
ZyA6IHBhcmVudE5vZGUuZmlyc3RDaGlsZDsKK30KKworLyoqCisgKiBJbnNlcnRzIGBjaGlsZE5v
ZGVgIGFzIGEgY2hpbGQgb2YgYHBhcmVudE5vZGVgIGF0IHRoZSBgaW5kZXhgLgorICoKKyAqIEBw
YXJhbSB7RE9NRWxlbWVudH0gcGFyZW50Tm9kZSBQYXJlbnQgbm9kZSBpbiB3aGljaCB0byBpbnNl
cnQuCisgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGNoaWxkTm9kZSBDaGlsZCBub2RlIHRvIGluc2Vy
dC4KKyAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleCBJbmRleCBhdCB3aGljaCB0byBpbnNlcnQgdGhl
IGNoaWxkLgorICogQGludGVybmFsCisgKi8KK3ZhciBpbnNlcnRDaGlsZEF0ID0gY3JlYXRlTWlj
cm9zb2Z0VW5zYWZlTG9jYWxGdW5jdGlvbihmdW5jdGlvbiAocGFyZW50Tm9kZSwgY2hpbGROb2Rl
LCByZWZlcmVuY2VOb2RlKSB7CisgIC8vIFdlIHJlbHkgZXhjbHVzaXZlbHkgb24gYGluc2VydEJl
Zm9yZShub2RlLCBudWxsKWAgaW5zdGVhZCBvZiBhbHNvIHVzaW5nCisgIC8vIGBhcHBlbmRDaGls
ZChub2RlKWAuIChVc2luZyBgdW5kZWZpbmVkYCBpcyBub3QgYWxsb3dlZCBieSBhbGwgYnJvd3Nl
cnMgc28KKyAgLy8gd2UgYXJlIGNhcmVmdWwgdG8gdXNlIGBudWxsYC4pCisgIHBhcmVudE5vZGUu
aW5zZXJ0QmVmb3JlKGNoaWxkTm9kZSwgcmVmZXJlbmNlTm9kZSk7Cit9KTsKKworZnVuY3Rpb24g
aW5zZXJ0TGF6eVRyZWVDaGlsZEF0KHBhcmVudE5vZGUsIGNoaWxkVHJlZSwgcmVmZXJlbmNlTm9k
ZSkgeworICBET01MYXp5VHJlZS5pbnNlcnRUcmVlQmVmb3JlKHBhcmVudE5vZGUsIGNoaWxkVHJl
ZSwgcmVmZXJlbmNlTm9kZSk7Cit9CisKK2Z1bmN0aW9uIG1vdmVDaGlsZChwYXJlbnROb2RlLCBj
aGlsZE5vZGUsIHJlZmVyZW5jZU5vZGUpIHsKKyAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGROb2Rl
KSkgeworICAgIG1vdmVEZWxpbWl0ZWRUZXh0KHBhcmVudE5vZGUsIGNoaWxkTm9kZVswXSwgY2hp
bGROb2RlWzFdLCByZWZlcmVuY2VOb2RlKTsKKyAgfSBlbHNlIHsKKyAgICBpbnNlcnRDaGlsZEF0
KHBhcmVudE5vZGUsIGNoaWxkTm9kZSwgcmVmZXJlbmNlTm9kZSk7CisgIH0KK30KKworZnVuY3Rp
b24gcmVtb3ZlQ2hpbGQocGFyZW50Tm9kZSwgY2hpbGROb2RlKSB7CisgIGlmIChBcnJheS5pc0Fy
cmF5KGNoaWxkTm9kZSkpIHsKKyAgICB2YXIgY2xvc2luZ0NvbW1lbnQgPSBjaGlsZE5vZGVbMV07
CisgICAgY2hpbGROb2RlID0gY2hpbGROb2RlWzBdOworICAgIHJlbW92ZURlbGltaXRlZFRleHQo
cGFyZW50Tm9kZSwgY2hpbGROb2RlLCBjbG9zaW5nQ29tbWVudCk7CisgICAgcGFyZW50Tm9kZS5y
ZW1vdmVDaGlsZChjbG9zaW5nQ29tbWVudCk7CisgIH0KKyAgcGFyZW50Tm9kZS5yZW1vdmVDaGls
ZChjaGlsZE5vZGUpOworfQorCitmdW5jdGlvbiBtb3ZlRGVsaW1pdGVkVGV4dChwYXJlbnROb2Rl
LCBvcGVuaW5nQ29tbWVudCwgY2xvc2luZ0NvbW1lbnQsIHJlZmVyZW5jZU5vZGUpIHsKKyAgdmFy
IG5vZGUgPSBvcGVuaW5nQ29tbWVudDsKKyAgd2hpbGUgKHRydWUpIHsKKyAgICB2YXIgbmV4dE5v
ZGUgPSBub2RlLm5leHRTaWJsaW5nOworICAgIGluc2VydENoaWxkQXQocGFyZW50Tm9kZSwgbm9k
ZSwgcmVmZXJlbmNlTm9kZSk7CisgICAgaWYgKG5vZGUgPT09IGNsb3NpbmdDb21tZW50KSB7Cisg
ICAgICBicmVhazsKKyAgICB9CisgICAgbm9kZSA9IG5leHROb2RlOworICB9Cit9CisKK2Z1bmN0
aW9uIHJlbW92ZURlbGltaXRlZFRleHQocGFyZW50Tm9kZSwgc3RhcnROb2RlLCBjbG9zaW5nQ29t
bWVudCkgeworICB3aGlsZSAodHJ1ZSkgeworICAgIHZhciBub2RlID0gc3RhcnROb2RlLm5leHRT
aWJsaW5nOworICAgIGlmIChub2RlID09PSBjbG9zaW5nQ29tbWVudCkgeworICAgICAgLy8gVGhl
IGNsb3NpbmcgY29tbWVudCBpcyByZW1vdmVkIGJ5IFJlYWN0TXVsdGlDaGlsZC4KKyAgICAgIGJy
ZWFrOworICAgIH0gZWxzZSB7CisgICAgICBwYXJlbnROb2RlLnJlbW92ZUNoaWxkKG5vZGUpOwor
ICAgIH0KKyAgfQorfQorCitmdW5jdGlvbiByZXBsYWNlRGVsaW1pdGVkVGV4dChvcGVuaW5nQ29t
bWVudCwgY2xvc2luZ0NvbW1lbnQsIHN0cmluZ1RleHQpIHsKKyAgdmFyIHBhcmVudE5vZGUgPSBv
cGVuaW5nQ29tbWVudC5wYXJlbnROb2RlOworICB2YXIgbm9kZUFmdGVyQ29tbWVudCA9IG9wZW5p
bmdDb21tZW50Lm5leHRTaWJsaW5nOworICBpZiAobm9kZUFmdGVyQ29tbWVudCA9PT0gY2xvc2lu
Z0NvbW1lbnQpIHsKKyAgICAvLyBUaGVyZSBhcmUgbm8gdGV4dCBub2RlcyBiZXR3ZWVuIHRoZSBv
cGVuaW5nIGFuZCBjbG9zaW5nIGNvbW1lbnRzOyBpbnNlcnQKKyAgICAvLyBhIG5ldyBvbmUgaWYg
c3RyaW5nVGV4dCBpc24ndCBlbXB0eS4KKyAgICBpZiAoc3RyaW5nVGV4dCkgeworICAgICAgaW5z
ZXJ0Q2hpbGRBdChwYXJlbnROb2RlLCBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzdHJpbmdUZXh0
KSwgbm9kZUFmdGVyQ29tbWVudCk7CisgICAgfQorICB9IGVsc2UgeworICAgIGlmIChzdHJpbmdU
ZXh0KSB7CisgICAgICAvLyBTZXQgdGhlIHRleHQgY29udGVudCBvZiB0aGUgZmlyc3Qgbm9kZSBh
ZnRlciB0aGUgb3BlbmluZyBjb21tZW50LCBhbmQKKyAgICAgIC8vIHJlbW92ZSBhbGwgZm9sbG93
aW5nIG5vZGVzIHVwIHVudGlsIHRoZSBjbG9zaW5nIGNvbW1lbnQuCisgICAgICBzZXRUZXh0Q29u
dGVudChub2RlQWZ0ZXJDb21tZW50LCBzdHJpbmdUZXh0KTsKKyAgICAgIHJlbW92ZURlbGltaXRl
ZFRleHQocGFyZW50Tm9kZSwgbm9kZUFmdGVyQ29tbWVudCwgY2xvc2luZ0NvbW1lbnQpOworICAg
IH0gZWxzZSB7CisgICAgICByZW1vdmVEZWxpbWl0ZWRUZXh0KHBhcmVudE5vZGUsIG9wZW5pbmdD
b21tZW50LCBjbG9zaW5nQ29tbWVudCk7CisgICAgfQorICB9CisKKyAgaWYgKHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5k
ZWJ1Z1Rvb2wub25Ib3N0T3BlcmF0aW9uKHsKKyAgICAgIGluc3RhbmNlSUQ6IFJlYWN0RE9NQ29t
cG9uZW50VHJlZS5nZXRJbnN0YW5jZUZyb21Ob2RlKG9wZW5pbmdDb21tZW50KS5fZGVidWdJRCwK
KyAgICAgIHR5cGU6ICdyZXBsYWNlIHRleHQnLAorICAgICAgcGF5bG9hZDogc3RyaW5nVGV4dAor
ICAgIH0pOworICB9Cit9CisKK3ZhciBkYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cCA9
IERhbmdlci5kYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cDsKK2lmIChwcm9jZXNzLmVu
di5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgIGRhbmdlcm91c2x5UmVwbGFjZU5vZGVX
aXRoTWFya3VwID0gZnVuY3Rpb24gKG9sZENoaWxkLCBtYXJrdXAsIHByZXZJbnN0YW5jZSkgewor
ICAgIERhbmdlci5kYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cChvbGRDaGlsZCwgbWFy
a3VwKTsKKyAgICBpZiAocHJldkluc3RhbmNlLl9kZWJ1Z0lEICE9PSAwKSB7CisgICAgICBSZWFj
dEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25Ib3N0T3BlcmF0aW9uKHsKKyAgICAgICAgaW5z
dGFuY2VJRDogcHJldkluc3RhbmNlLl9kZWJ1Z0lELAorICAgICAgICB0eXBlOiAncmVwbGFjZSB3
aXRoJywKKyAgICAgICAgcGF5bG9hZDogbWFya3VwLnRvU3RyaW5nKCkKKyAgICAgIH0pOworICAg
IH0gZWxzZSB7CisgICAgICB2YXIgbmV4dEluc3RhbmNlID0gUmVhY3RET01Db21wb25lbnRUcmVl
LmdldEluc3RhbmNlRnJvbU5vZGUobWFya3VwLm5vZGUpOworICAgICAgaWYgKG5leHRJbnN0YW5j
ZS5fZGVidWdJRCAhPT0gMCkgeworICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rv
b2wub25Ib3N0T3BlcmF0aW9uKHsKKyAgICAgICAgICBpbnN0YW5jZUlEOiBuZXh0SW5zdGFuY2Uu
X2RlYnVnSUQsCisgICAgICAgICAgdHlwZTogJ21vdW50JywKKyAgICAgICAgICBwYXlsb2FkOiBt
YXJrdXAudG9TdHJpbmcoKQorICAgICAgICB9KTsKKyAgICAgIH0KKyAgICB9CisgIH07Cit9CisK
Ky8qKgorICogT3BlcmF0aW9ucyBmb3IgdXBkYXRpbmcgd2l0aCBET00gY2hpbGRyZW4uCisgKi8K
K3ZhciBET01DaGlsZHJlbk9wZXJhdGlvbnMgPSB7CisKKyAgZGFuZ2Vyb3VzbHlSZXBsYWNlTm9k
ZVdpdGhNYXJrdXA6IGRhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwLAorCisgIHJlcGxh
Y2VEZWxpbWl0ZWRUZXh0OiByZXBsYWNlRGVsaW1pdGVkVGV4dCwKKworICAvKioKKyAgICogVXBk
YXRlcyBhIGNvbXBvbmVudCdzIGNoaWxkcmVuIGJ5IHByb2Nlc3NpbmcgYSBzZXJpZXMgb2YgdXBk
YXRlcy4gVGhlCisgICAqIHVwZGF0ZSBjb25maWd1cmF0aW9ucyBhcmUgZWFjaCBleHBlY3RlZCB0
byBoYXZlIGEgYHBhcmVudE5vZGVgIHByb3BlcnR5LgorICAgKgorICAgKiBAcGFyYW0ge2FycmF5
PG9iamVjdD59IHVwZGF0ZXMgTGlzdCBvZiB1cGRhdGUgY29uZmlndXJhdGlvbnMuCisgICAqIEBp
bnRlcm5hbAorICAgKi8KKyAgcHJvY2Vzc1VwZGF0ZXM6IGZ1bmN0aW9uIChwYXJlbnROb2RlLCB1
cGRhdGVzKSB7CisgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicp
IHsKKyAgICAgIHZhciBwYXJlbnROb2RlRGVidWdJRCA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5n
ZXRJbnN0YW5jZUZyb21Ob2RlKHBhcmVudE5vZGUpLl9kZWJ1Z0lEOworICAgIH0KKworICAgIGZv
ciAodmFyIGsgPSAwOyBrIDwgdXBkYXRlcy5sZW5ndGg7IGsrKykgeworICAgICAgdmFyIHVwZGF0
ZSA9IHVwZGF0ZXNba107CisgICAgICBzd2l0Y2ggKHVwZGF0ZS50eXBlKSB7CisgICAgICAgIGNh
c2UgJ0lOU0VSVF9NQVJLVVAnOgorICAgICAgICAgIGluc2VydExhenlUcmVlQ2hpbGRBdChwYXJl
bnROb2RlLCB1cGRhdGUuY29udGVudCwgZ2V0Tm9kZUFmdGVyKHBhcmVudE5vZGUsIHVwZGF0ZS5h
ZnRlck5vZGUpKTsKKyAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJykgeworICAgICAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9u
SG9zdE9wZXJhdGlvbih7CisgICAgICAgICAgICAgIGluc3RhbmNlSUQ6IHBhcmVudE5vZGVEZWJ1
Z0lELAorICAgICAgICAgICAgICB0eXBlOiAnaW5zZXJ0IGNoaWxkJywKKyAgICAgICAgICAgICAg
cGF5bG9hZDogeyB0b0luZGV4OiB1cGRhdGUudG9JbmRleCwgY29udGVudDogdXBkYXRlLmNvbnRl
bnQudG9TdHJpbmcoKSB9CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICB9CisgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgJ01PVkVfRVhJU1RJTkcnOgorICAgICAgICAgIG1vdmVDaGls
ZChwYXJlbnROb2RlLCB1cGRhdGUuZnJvbU5vZGUsIGdldE5vZGVBZnRlcihwYXJlbnROb2RlLCB1
cGRhdGUuYWZ0ZXJOb2RlKSk7CisgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9
PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVn
VG9vbC5vbkhvc3RPcGVyYXRpb24oeworICAgICAgICAgICAgICBpbnN0YW5jZUlEOiBwYXJlbnRO
b2RlRGVidWdJRCwKKyAgICAgICAgICAgICAgdHlwZTogJ21vdmUgY2hpbGQnLAorICAgICAgICAg
ICAgICBwYXlsb2FkOiB7IGZyb21JbmRleDogdXBkYXRlLmZyb21JbmRleCwgdG9JbmRleDogdXBk
YXRlLnRvSW5kZXggfQorICAgICAgICAgICAgfSk7CisgICAgICAgICAgfQorICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlICdTRVRfTUFSS1VQJzoKKyAgICAgICAgICBzZXRJbm5lckhUTUwo
cGFyZW50Tm9kZSwgdXBkYXRlLmNvbnRlbnQpOworICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5O
T0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAgICAgICBSZWFjdEluc3RydW1lbnRh
dGlvbi5kZWJ1Z1Rvb2wub25Ib3N0T3BlcmF0aW9uKHsKKyAgICAgICAgICAgICAgaW5zdGFuY2VJ
RDogcGFyZW50Tm9kZURlYnVnSUQsCisgICAgICAgICAgICAgIHR5cGU6ICdyZXBsYWNlIGNoaWxk
cmVuJywKKyAgICAgICAgICAgICAgcGF5bG9hZDogdXBkYXRlLmNvbnRlbnQudG9TdHJpbmcoKQor
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlICdURVhUX0NPTlRFTlQnOgorICAgICAgICAgIHNldFRleHRDb250ZW50KHBhcmVudE5vZGUs
IHVwZGF0ZS5jb250ZW50KTsKKyAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09
ICdwcm9kdWN0aW9uJykgeworICAgICAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdU
b29sLm9uSG9zdE9wZXJhdGlvbih7CisgICAgICAgICAgICAgIGluc3RhbmNlSUQ6IHBhcmVudE5v
ZGVEZWJ1Z0lELAorICAgICAgICAgICAgICB0eXBlOiAncmVwbGFjZSB0ZXh0JywKKyAgICAgICAg
ICAgICAgcGF5bG9hZDogdXBkYXRlLmNvbnRlbnQudG9TdHJpbmcoKQorICAgICAgICAgICAgfSk7
CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICdSRU1PVkVfTk9E
RSc6CisgICAgICAgICAgcmVtb3ZlQ2hpbGQocGFyZW50Tm9kZSwgdXBkYXRlLmZyb21Ob2RlKTsK
KyAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgewor
ICAgICAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uSG9zdE9wZXJhdGlv
bih7CisgICAgICAgICAgICAgIGluc3RhbmNlSUQ6IHBhcmVudE5vZGVEZWJ1Z0lELAorICAgICAg
ICAgICAgICB0eXBlOiAncmVtb3ZlIGNoaWxkJywKKyAgICAgICAgICAgICAgcGF5bG9hZDogeyBm
cm9tSW5kZXg6IHVwZGF0ZS5mcm9tSW5kZXggfQorICAgICAgICAgICAgfSk7CisgICAgICAgICAg
fQorICAgICAgICAgIGJyZWFrOworICAgICAgfQorICAgIH0KKyAgfQorCit9OworCittb2R1bGUu
ZXhwb3J0cyA9IERPTUNoaWxkcmVuT3BlcmF0aW9uczsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9t
L2xpYi9ET01MYXp5VHJlZS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFj
dC1kb20vbGliL0RPTUxhenlUcmVlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYyZjY0ZDViMGUyMmNmMDVhMWQx
MGU4NGQ1Y2M4MmU5NjBkYTk2MmUKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFj
dC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9ET01MYXp5VHJlZS5qcwpAQCAtMCwwICsxLDEx
NyBAQAorLyoqCisgKiBDb3B5cmlnaHQgMjAxNS1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICog
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2Vk
IHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25h
bCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMg
ZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwor
dmFyIERPTU5hbWVzcGFjZXMgPSByZXF1aXJlKCcuL0RPTU5hbWVzcGFjZXMnKTsKK3ZhciBzZXRJ
bm5lckhUTUwgPSByZXF1aXJlKCcuL3NldElubmVySFRNTCcpOworCit2YXIgY3JlYXRlTWljcm9z
b2Z0VW5zYWZlTG9jYWxGdW5jdGlvbiA9IHJlcXVpcmUoJy4vY3JlYXRlTWljcm9zb2Z0VW5zYWZl
TG9jYWxGdW5jdGlvbicpOwordmFyIHNldFRleHRDb250ZW50ID0gcmVxdWlyZSgnLi9zZXRUZXh0
Q29udGVudCcpOworCit2YXIgRUxFTUVOVF9OT0RFX1RZUEUgPSAxOwordmFyIERPQ1VNRU5UX0ZS
QUdNRU5UX05PREVfVFlQRSA9IDExOworCisvKioKKyAqIEluIElFICg4LTExKSBhbmQgRWRnZSwg
YXBwZW5kaW5nIG5vZGVzIHdpdGggbm8gY2hpbGRyZW4gaXMgZHJhbWF0aWNhbGx5CisgKiBmYXN0
ZXIgdGhhbiBhcHBlbmRpbmcgYSBmdWxsIHN1YnRyZWUsIHNvIHdlIGVzc2VudGlhbGx5IHF1ZXVl
IHVwIHRoZQorICogLmFwcGVuZENoaWxkIGNhbGxzIGhlcmUgYW5kIGFwcGx5IHRoZW0gc28gZWFj
aCBub2RlIGlzIGFkZGVkIHRvIGl0cyBwYXJlbnQKKyAqIGJlZm9yZSBhbnkgY2hpbGRyZW4gYXJl
IGFkZGVkLgorICoKKyAqIEluIG90aGVyIGJyb3dzZXJzLCBkb2luZyBzbyBpcyBzbG93ZXIgb3Ig
bmV1dHJhbCBjb21wYXJlZCB0byB0aGUgb3RoZXIgb3JkZXIKKyAqIChpbiBGaXJlZm94LCB0d2lj
ZSBhcyBzbG93KSBzbyB3ZSBvbmx5IGRvIHRoaXMgaW52ZXJzaW9uIGluIElFLgorICoKKyAqIFNl
ZSBodHRwczovL2dpdGh1Yi5jb20vc3BpY3lqL2lubmVyaHRtbC12cy1jcmVhdGVlbGVtZW50LXZz
LWNsb25lbm9kZS4KKyAqLwordmFyIGVuYWJsZUxhenkgPSB0eXBlb2YgZG9jdW1lbnQgIT09ICd1
bmRlZmluZWQnICYmIHR5cGVvZiBkb2N1bWVudC5kb2N1bWVudE1vZGUgPT09ICdudW1iZXInIHx8
IHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBuYXZpZ2F0b3IudXNl
ckFnZW50ID09PSAnc3RyaW5nJyAmJiAvXGJFZGdlXC9cZC8udGVzdChuYXZpZ2F0b3IudXNlckFn
ZW50KTsKKworZnVuY3Rpb24gaW5zZXJ0VHJlZUNoaWxkcmVuKHRyZWUpIHsKKyAgaWYgKCFlbmFi
bGVMYXp5KSB7CisgICAgcmV0dXJuOworICB9CisgIHZhciBub2RlID0gdHJlZS5ub2RlOworICB2
YXIgY2hpbGRyZW4gPSB0cmVlLmNoaWxkcmVuOworICBpZiAoY2hpbGRyZW4ubGVuZ3RoKSB7Cisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykgeworICAgICAgaW5z
ZXJ0VHJlZUJlZm9yZShub2RlLCBjaGlsZHJlbltpXSwgbnVsbCk7CisgICAgfQorICB9IGVsc2Ug
aWYgKHRyZWUuaHRtbCAhPSBudWxsKSB7CisgICAgc2V0SW5uZXJIVE1MKG5vZGUsIHRyZWUuaHRt
bCk7CisgIH0gZWxzZSBpZiAodHJlZS50ZXh0ICE9IG51bGwpIHsKKyAgICBzZXRUZXh0Q29udGVu
dChub2RlLCB0cmVlLnRleHQpOworICB9Cit9CisKK3ZhciBpbnNlcnRUcmVlQmVmb3JlID0gY3Jl
YXRlTWljcm9zb2Z0VW5zYWZlTG9jYWxGdW5jdGlvbihmdW5jdGlvbiAocGFyZW50Tm9kZSwgdHJl
ZSwgcmVmZXJlbmNlTm9kZSkgeworICAvLyBEb2N1bWVudEZyYWdtZW50cyBhcmVuJ3QgYWN0dWFs
bHkgcGFydCBvZiB0aGUgRE9NIGFmdGVyIGluc2VydGlvbiBzbworICAvLyBhcHBlbmRpbmcgY2hp
bGRyZW4gd29uJ3QgdXBkYXRlIHRoZSBET00uIFdlIG5lZWQgdG8gZW5zdXJlIHRoZSBmcmFnbWVu
dAorICAvLyBpcyBwcm9wZXJseSBwb3B1bGF0ZWQgZmlyc3QsIGJyZWFraW5nIG91dCBvZiBvdXIg
bGF6eSBhcHByb2FjaCBmb3IganVzdAorICAvLyB0aGlzIGxldmVsLiBBbHNvLCBzb21lIDxvYmpl
Y3Q+IHBsdWdpbnMgKGxpa2UgRmxhc2ggUGxheWVyKSB3aWxsIHJlYWQKKyAgLy8gPHBhcmFtPiBu
b2RlcyBpbW1lZGlhdGVseSB1cG9uIGluc2VydGlvbiBpbnRvIHRoZSBET00sIHNvIDxvYmplY3Q+
CisgIC8vIG11c3QgYWxzbyBiZSBwb3B1bGF0ZWQgcHJpb3IgdG8gaW5zZXJ0aW9uIGludG8gdGhl
IERPTS4KKyAgaWYgKHRyZWUubm9kZS5ub2RlVHlwZSA9PT0gRE9DVU1FTlRfRlJBR01FTlRfTk9E
RV9UWVBFIHx8IHRyZWUubm9kZS5ub2RlVHlwZSA9PT0gRUxFTUVOVF9OT0RFX1RZUEUgJiYgdHJl
ZS5ub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdvYmplY3QnICYmICh0cmVlLm5vZGUu
bmFtZXNwYWNlVVJJID09IG51bGwgfHwgdHJlZS5ub2RlLm5hbWVzcGFjZVVSSSA9PT0gRE9NTmFt
ZXNwYWNlcy5odG1sKSkgeworICAgIGluc2VydFRyZWVDaGlsZHJlbih0cmVlKTsKKyAgICBwYXJl
bnROb2RlLmluc2VydEJlZm9yZSh0cmVlLm5vZGUsIHJlZmVyZW5jZU5vZGUpOworICB9IGVsc2Ug
eworICAgIHBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRyZWUubm9kZSwgcmVmZXJlbmNlTm9kZSk7
CisgICAgaW5zZXJ0VHJlZUNoaWxkcmVuKHRyZWUpOworICB9Cit9KTsKKworZnVuY3Rpb24gcmVw
bGFjZUNoaWxkV2l0aFRyZWUob2xkTm9kZSwgbmV3VHJlZSkgeworICBvbGROb2RlLnBhcmVudE5v
ZGUucmVwbGFjZUNoaWxkKG5ld1RyZWUubm9kZSwgb2xkTm9kZSk7CisgIGluc2VydFRyZWVDaGls
ZHJlbihuZXdUcmVlKTsKK30KKworZnVuY3Rpb24gcXVldWVDaGlsZChwYXJlbnRUcmVlLCBjaGls
ZFRyZWUpIHsKKyAgaWYgKGVuYWJsZUxhenkpIHsKKyAgICBwYXJlbnRUcmVlLmNoaWxkcmVuLnB1
c2goY2hpbGRUcmVlKTsKKyAgfSBlbHNlIHsKKyAgICBwYXJlbnRUcmVlLm5vZGUuYXBwZW5kQ2hp
bGQoY2hpbGRUcmVlLm5vZGUpOworICB9Cit9CisKK2Z1bmN0aW9uIHF1ZXVlSFRNTCh0cmVlLCBo
dG1sKSB7CisgIGlmIChlbmFibGVMYXp5KSB7CisgICAgdHJlZS5odG1sID0gaHRtbDsKKyAgfSBl
bHNlIHsKKyAgICBzZXRJbm5lckhUTUwodHJlZS5ub2RlLCBodG1sKTsKKyAgfQorfQorCitmdW5j
dGlvbiBxdWV1ZVRleHQodHJlZSwgdGV4dCkgeworICBpZiAoZW5hYmxlTGF6eSkgeworICAgIHRy
ZWUudGV4dCA9IHRleHQ7CisgIH0gZWxzZSB7CisgICAgc2V0VGV4dENvbnRlbnQodHJlZS5ub2Rl
LCB0ZXh0KTsKKyAgfQorfQorCitmdW5jdGlvbiB0b1N0cmluZygpIHsKKyAgcmV0dXJuIHRoaXMu
bm9kZS5ub2RlTmFtZTsKK30KKworZnVuY3Rpb24gRE9NTGF6eVRyZWUobm9kZSkgeworICByZXR1
cm4geworICAgIG5vZGU6IG5vZGUsCisgICAgY2hpbGRyZW46IFtdLAorICAgIGh0bWw6IG51bGws
CisgICAgdGV4dDogbnVsbCwKKyAgICB0b1N0cmluZzogdG9TdHJpbmcKKyAgfTsKK30KKworRE9N
TGF6eVRyZWUuaW5zZXJ0VHJlZUJlZm9yZSA9IGluc2VydFRyZWVCZWZvcmU7CitET01MYXp5VHJl
ZS5yZXBsYWNlQ2hpbGRXaXRoVHJlZSA9IHJlcGxhY2VDaGlsZFdpdGhUcmVlOworRE9NTGF6eVRy
ZWUucXVldWVDaGlsZCA9IHF1ZXVlQ2hpbGQ7CitET01MYXp5VHJlZS5xdWV1ZUhUTUwgPSBxdWV1
ZUhUTUw7CitET01MYXp5VHJlZS5xdWV1ZVRleHQgPSBxdWV1ZVRleHQ7CisKK21vZHVsZS5leHBv
cnRzID0gRE9NTGF6eVRyZWU7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvRE9NTmFtZXNw
YWNlcy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL0RP
TU5hbWVzcGFjZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTE0ZWY4YWE1Yjk0MjdkMzdiMGRhMmRiZWM0Y2Mx
NDRiYWI4ZGVkYQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9k
dWxlcy9yZWFjdC1kb20vbGliL0RPTU5hbWVzcGFjZXMuanMKQEAgLTAsMCArMSwxOSBAQAorLyoq
CisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRo
ZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAor
ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0
aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIERPTU5h
bWVzcGFjZXMgPSB7CisgIGh0bWw6ICdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJywKKyAg
bWF0aG1sOiAnaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCcsCisgIHN2ZzogJ2h0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJworfTsKKworbW9kdWxlLmV4cG9ydHMgPSBET01OYW1l
c3BhY2VzOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL0RPTVByb3BlcnR5LmpzIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvRE9NUHJvcGVydHkuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uODdmN2U3M2NmODdlMTdiZDcyMzBlNmRjZDhiYzQ0Mjk1NjQyNDRmYwotLS0g
L2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20v
bGliL0RPTVByb3BlcnR5LmpzCkBAIC0wLDAgKzEsMjA5IEBACisvKioKKyAqIENvcHlyaWdodCAy
MDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNl
bnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBv
ZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmln
aHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9y
eS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1
aXJlKCcuL3JlYWN0UHJvZEludmFyaWFudCcpOworCit2YXIgaW52YXJpYW50ID0gcmVxdWlyZSgn
ZmJqcy9saWIvaW52YXJpYW50Jyk7CisKK2Z1bmN0aW9uIGNoZWNrTWFzayh2YWx1ZSwgYml0bWFz
aykgeworICByZXR1cm4gKHZhbHVlICYgYml0bWFzaykgPT09IGJpdG1hc2s7Cit9CisKK3ZhciBE
T01Qcm9wZXJ0eUluamVjdGlvbiA9IHsKKyAgLyoqCisgICAqIE1hcHBpbmcgZnJvbSBub3JtYWxp
emVkLCBjYW1lbGNhc2VkIHByb3BlcnR5IG5hbWVzIHRvIGEgY29uZmlndXJhdGlvbiB0aGF0Cisg
ICAqIHNwZWNpZmllcyBob3cgdGhlIGFzc29jaWF0ZWQgRE9NIHByb3BlcnR5IHNob3VsZCBiZSBh
Y2Nlc3NlZCBvciByZW5kZXJlZC4KKyAgICovCisgIE1VU1RfVVNFX1BST1BFUlRZOiAweDEsCisg
IEhBU19CT09MRUFOX1ZBTFVFOiAweDQsCisgIEhBU19OVU1FUklDX1ZBTFVFOiAweDgsCisgIEhB
U19QT1NJVElWRV9OVU1FUklDX1ZBTFVFOiAweDEwIHwgMHg4LAorICBIQVNfT1ZFUkxPQURFRF9C
T09MRUFOX1ZBTFVFOiAweDIwLAorCisgIC8qKgorICAgKiBJbmplY3Qgc29tZSBzcGVjaWFsaXpl
ZCBrbm93bGVkZ2UgYWJvdXQgdGhlIERPTS4gVGhpcyB0YWtlcyBhIGNvbmZpZyBvYmplY3QKKyAg
ICogd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6CisgICAqCisgICAqIGlzQ3VzdG9tQXR0
cmlidXRlOiBmdW5jdGlvbiB0aGF0IGdpdmVuIGFuIGF0dHJpYnV0ZSBuYW1lIHdpbGwgcmV0dXJu
IHRydWUKKyAgICogaWYgaXQgY2FuIGJlIGluc2VydGVkIGludG8gdGhlIERPTSB2ZXJiYXRpbS4g
VXNlZnVsIGZvciBkYXRhLSogb3IgYXJpYS0qCisgICAqIGF0dHJpYnV0ZXMgd2hlcmUgaXQncyBp
bXBvc3NpYmxlIHRvIGVudW1lcmF0ZSBhbGwgb2YgdGhlIHBvc3NpYmxlCisgICAqIGF0dHJpYnV0
ZSBuYW1lcywKKyAgICoKKyAgICogUHJvcGVydGllczogb2JqZWN0IG1hcHBpbmcgRE9NIHByb3Bl
cnR5IG5hbWUgdG8gb25lIG9mIHRoZQorICAgKiBET01Qcm9wZXJ0eUluamVjdGlvbiBjb25zdGFu
dHMgb3IgbnVsbC4gSWYgeW91ciBhdHRyaWJ1dGUgaXNuJ3QgaW4gaGVyZSwKKyAgICogaXQgd29u
J3QgZ2V0IHdyaXR0ZW4gdG8gdGhlIERPTS4KKyAgICoKKyAgICogRE9NQXR0cmlidXRlTmFtZXM6
IG9iamVjdCBtYXBwaW5nIFJlYWN0IGF0dHJpYnV0ZSBuYW1lIHRvIHRoZSBET00KKyAgICogYXR0
cmlidXRlIG5hbWUuIEF0dHJpYnV0ZSBuYW1lcyBub3Qgc3BlY2lmaWVkIHVzZSB0aGUgKipsb3dl
cmNhc2UqKgorICAgKiBub3JtYWxpemVkIG5hbWUuCisgICAqCisgICAqIERPTUF0dHJpYnV0ZU5h
bWVzcGFjZXM6IG9iamVjdCBtYXBwaW5nIFJlYWN0IGF0dHJpYnV0ZSBuYW1lIHRvIHRoZSBET00K
KyAgICogYXR0cmlidXRlIG5hbWVzcGFjZSBVUkwuIChBdHRyaWJ1dGUgbmFtZXMgbm90IHNwZWNp
ZmllZCB1c2Ugbm8gbmFtZXNwYWNlLikKKyAgICoKKyAgICogRE9NUHJvcGVydHlOYW1lczogc2lt
aWxhciB0byBET01BdHRyaWJ1dGVOYW1lcyBidXQgZm9yIERPTSBwcm9wZXJ0aWVzLgorICAgKiBQ
cm9wZXJ0eSBuYW1lcyBub3Qgc3BlY2lmaWVkIHVzZSB0aGUgbm9ybWFsaXplZCBuYW1lLgorICAg
KgorICAgKiBET01NdXRhdGlvbk1ldGhvZHM6IFByb3BlcnRpZXMgdGhhdCByZXF1aXJlIHNwZWNp
YWwgbXV0YXRpb24gbWV0aG9kcy4gSWYKKyAgICogYHZhbHVlYCBpcyB1bmRlZmluZWQsIHRoZSBt
dXRhdGlvbiBtZXRob2Qgc2hvdWxkIHVuc2V0IHRoZSBwcm9wZXJ0eS4KKyAgICoKKyAgICogQHBh
cmFtIHtvYmplY3R9IGRvbVByb3BlcnR5Q29uZmlnIHRoZSBjb25maWcgYXMgZGVzY3JpYmVkIGFi
b3ZlLgorICAgKi8KKyAgaW5qZWN0RE9NUHJvcGVydHlDb25maWc6IGZ1bmN0aW9uIChkb21Qcm9w
ZXJ0eUNvbmZpZykgeworICAgIHZhciBJbmplY3Rpb24gPSBET01Qcm9wZXJ0eUluamVjdGlvbjsK
KyAgICB2YXIgUHJvcGVydGllcyA9IGRvbVByb3BlcnR5Q29uZmlnLlByb3BlcnRpZXMgfHwge307
CisgICAgdmFyIERPTUF0dHJpYnV0ZU5hbWVzcGFjZXMgPSBkb21Qcm9wZXJ0eUNvbmZpZy5ET01B
dHRyaWJ1dGVOYW1lc3BhY2VzIHx8IHt9OworICAgIHZhciBET01BdHRyaWJ1dGVOYW1lcyA9IGRv
bVByb3BlcnR5Q29uZmlnLkRPTUF0dHJpYnV0ZU5hbWVzIHx8IHt9OworICAgIHZhciBET01Qcm9w
ZXJ0eU5hbWVzID0gZG9tUHJvcGVydHlDb25maWcuRE9NUHJvcGVydHlOYW1lcyB8fCB7fTsKKyAg
ICB2YXIgRE9NTXV0YXRpb25NZXRob2RzID0gZG9tUHJvcGVydHlDb25maWcuRE9NTXV0YXRpb25N
ZXRob2RzIHx8IHt9OworCisgICAgaWYgKGRvbVByb3BlcnR5Q29uZmlnLmlzQ3VzdG9tQXR0cmli
dXRlKSB7CisgICAgICBET01Qcm9wZXJ0eS5faXNDdXN0b21BdHRyaWJ1dGVGdW5jdGlvbnMucHVz
aChkb21Qcm9wZXJ0eUNvbmZpZy5pc0N1c3RvbUF0dHJpYnV0ZSk7CisgICAgfQorCisgICAgZm9y
ICh2YXIgcHJvcE5hbWUgaW4gUHJvcGVydGllcykgeworICAgICAgISFET01Qcm9wZXJ0eS5wcm9w
ZXJ0aWVzLmhhc093blByb3BlcnR5KHByb3BOYW1lKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9
PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdpbmplY3RET01Qcm9wZXJ0eUNvbmZp
ZyguLi4pOiBZb3VcJ3JlIHRyeWluZyB0byBpbmplY3QgRE9NIHByb3BlcnR5IFwnJXNcJyB3aGlj
aCBoYXMgYWxyZWFkeSBiZWVuIGluamVjdGVkLiBZb3UgbWF5IGJlIGFjY2lkZW50YWxseSBpbmpl
Y3RpbmcgdGhlIHNhbWUgRE9NIHByb3BlcnR5IGNvbmZpZyB0d2ljZSwgb3IgeW91IG1heSBiZSBp
bmplY3RpbmcgdHdvIGNvbmZpZ3MgdGhhdCBoYXZlIGNvbmZsaWN0aW5nIHByb3BlcnR5IG5hbWVz
LicsIHByb3BOYW1lKSA6IF9wcm9kSW52YXJpYW50KCc0OCcsIHByb3BOYW1lKSA6IHZvaWQgMDsK
KworICAgICAgdmFyIGxvd2VyQ2FzZWQgPSBwcm9wTmFtZS50b0xvd2VyQ2FzZSgpOworICAgICAg
dmFyIHByb3BDb25maWcgPSBQcm9wZXJ0aWVzW3Byb3BOYW1lXTsKKworICAgICAgdmFyIHByb3Bl
cnR5SW5mbyA9IHsKKyAgICAgICAgYXR0cmlidXRlTmFtZTogbG93ZXJDYXNlZCwKKyAgICAgICAg
YXR0cmlidXRlTmFtZXNwYWNlOiBudWxsLAorICAgICAgICBwcm9wZXJ0eU5hbWU6IHByb3BOYW1l
LAorICAgICAgICBtdXRhdGlvbk1ldGhvZDogbnVsbCwKKworICAgICAgICBtdXN0VXNlUHJvcGVy
dHk6IGNoZWNrTWFzayhwcm9wQ29uZmlnLCBJbmplY3Rpb24uTVVTVF9VU0VfUFJPUEVSVFkpLAor
ICAgICAgICBoYXNCb29sZWFuVmFsdWU6IGNoZWNrTWFzayhwcm9wQ29uZmlnLCBJbmplY3Rpb24u
SEFTX0JPT0xFQU5fVkFMVUUpLAorICAgICAgICBoYXNOdW1lcmljVmFsdWU6IGNoZWNrTWFzayhw
cm9wQ29uZmlnLCBJbmplY3Rpb24uSEFTX05VTUVSSUNfVkFMVUUpLAorICAgICAgICBoYXNQb3Np
dGl2ZU51bWVyaWNWYWx1ZTogY2hlY2tNYXNrKHByb3BDb25maWcsIEluamVjdGlvbi5IQVNfUE9T
SVRJVkVfTlVNRVJJQ19WQUxVRSksCisgICAgICAgIGhhc092ZXJsb2FkZWRCb29sZWFuVmFsdWU6
IGNoZWNrTWFzayhwcm9wQ29uZmlnLCBJbmplY3Rpb24uSEFTX09WRVJMT0FERURfQk9PTEVBTl9W
QUxVRSkKKyAgICAgIH07CisgICAgICAhKHByb3BlcnR5SW5mby5oYXNCb29sZWFuVmFsdWUgKyBw
cm9wZXJ0eUluZm8uaGFzTnVtZXJpY1ZhbHVlICsgcHJvcGVydHlJbmZvLmhhc092ZXJsb2FkZWRC
b29sZWFuVmFsdWUgPD0gMSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24n
ID8gaW52YXJpYW50KGZhbHNlLCAnRE9NUHJvcGVydHk6IFZhbHVlIGNhbiBiZSBvbmUgb2YgYm9v
bGVhbiwgb3ZlcmxvYWRlZCBib29sZWFuLCBvciBudW1lcmljIHZhbHVlLCBidXQgbm90IGEgY29t
YmluYXRpb246ICVzJywgcHJvcE5hbWUpIDogX3Byb2RJbnZhcmlhbnQoJzUwJywgcHJvcE5hbWUp
IDogdm9pZCAwOworCisgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJykgeworICAgICAgICBET01Qcm9wZXJ0eS5nZXRQb3NzaWJsZVN0YW5kYXJkTmFtZVtsb3dl
ckNhc2VkXSA9IHByb3BOYW1lOworICAgICAgfQorCisgICAgICBpZiAoRE9NQXR0cmlidXRlTmFt
ZXMuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7CisgICAgICAgIHZhciBhdHRyaWJ1dGVOYW1l
ID0gRE9NQXR0cmlidXRlTmFtZXNbcHJvcE5hbWVdOworICAgICAgICBwcm9wZXJ0eUluZm8uYXR0
cmlidXRlTmFtZSA9IGF0dHJpYnV0ZU5hbWU7CisgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAgICAgRE9NUHJvcGVydHkuZ2V0UG9zc2li
bGVTdGFuZGFyZE5hbWVbYXR0cmlidXRlTmFtZV0gPSBwcm9wTmFtZTsKKyAgICAgICAgfQorICAg
ICAgfQorCisgICAgICBpZiAoRE9NQXR0cmlidXRlTmFtZXNwYWNlcy5oYXNPd25Qcm9wZXJ0eShw
cm9wTmFtZSkpIHsKKyAgICAgICAgcHJvcGVydHlJbmZvLmF0dHJpYnV0ZU5hbWVzcGFjZSA9IERP
TUF0dHJpYnV0ZU5hbWVzcGFjZXNbcHJvcE5hbWVdOworICAgICAgfQorCisgICAgICBpZiAoRE9N
UHJvcGVydHlOYW1lcy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHsKKyAgICAgICAgcHJvcGVy
dHlJbmZvLnByb3BlcnR5TmFtZSA9IERPTVByb3BlcnR5TmFtZXNbcHJvcE5hbWVdOworICAgICAg
fQorCisgICAgICBpZiAoRE9NTXV0YXRpb25NZXRob2RzLmhhc093blByb3BlcnR5KHByb3BOYW1l
KSkgeworICAgICAgICBwcm9wZXJ0eUluZm8ubXV0YXRpb25NZXRob2QgPSBET01NdXRhdGlvbk1l
dGhvZHNbcHJvcE5hbWVdOworICAgICAgfQorCisgICAgICBET01Qcm9wZXJ0eS5wcm9wZXJ0aWVz
W3Byb3BOYW1lXSA9IHByb3BlcnR5SW5mbzsKKyAgICB9CisgIH0KK307CisKKy8qIGVzbGludC1k
aXNhYmxlIG1heC1sZW4gKi8KK3ZhciBBVFRSSUJVVEVfTkFNRV9TVEFSVF9DSEFSID0gJzpBLVpf
YS16XFx1MDBDMC1cXHUwMEQ2XFx1MDBEOC1cXHUwMEY2XFx1MDBGOC1cXHUwMkZGXFx1MDM3MC1c
XHUwMzdEXFx1MDM3Ri1cXHUxRkZGXFx1MjAwQy1cXHUyMDBEXFx1MjA3MC1cXHUyMThGXFx1MkMw
MC1cXHUyRkVGXFx1MzAwMS1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkZEJzsK
Ky8qIGVzbGludC1lbmFibGUgbWF4LWxlbiAqLworCisvKioKKyAqIERPTVByb3BlcnR5IGV4cG9y
dHMgbG9va3VwIG9iamVjdHMgdGhhdCBjYW4gYmUgdXNlZCBsaWtlIGZ1bmN0aW9uczoKKyAqCisg
KiAgID4gRE9NUHJvcGVydHkuaXNWYWxpZFsnaWQnXQorICogICB0cnVlCisgKiAgID4gRE9NUHJv
cGVydHkuaXNWYWxpZFsnZm9vYmFyJ10KKyAqICAgdW5kZWZpbmVkCisgKgorICogQWx0aG91Z2gg
dGhpcyBtYXkgYmUgY29uZnVzaW5nLCBpdCBwZXJmb3JtcyBiZXR0ZXIgaW4gZ2VuZXJhbC4KKyAq
CisgKiBAc2VlIGh0dHA6Ly9qc3BlcmYuY29tL2tleS1leGlzdHMKKyAqIEBzZWUgaHR0cDovL2pz
cGVyZi5jb20va2V5LW1pc3NpbmcKKyAqLwordmFyIERPTVByb3BlcnR5ID0geworCisgIElEX0FU
VFJJQlVURV9OQU1FOiAnZGF0YS1yZWFjdGlkJywKKyAgUk9PVF9BVFRSSUJVVEVfTkFNRTogJ2Rh
dGEtcmVhY3Ryb290JywKKworICBBVFRSSUJVVEVfTkFNRV9TVEFSVF9DSEFSOiBBVFRSSUJVVEVf
TkFNRV9TVEFSVF9DSEFSLAorICBBVFRSSUJVVEVfTkFNRV9DSEFSOiBBVFRSSUJVVEVfTkFNRV9T
VEFSVF9DSEFSICsgJ1xcLS4wLTlcXHUwMEI3XFx1MDMwMC1cXHUwMzZGXFx1MjAzRi1cXHUyMDQw
JywKKworICAvKioKKyAgICogTWFwIGZyb20gcHJvcGVydHkgInN0YW5kYXJkIG5hbWUiIHRvIGFu
IG9iamVjdCB3aXRoIGluZm8gYWJvdXQgaG93IHRvIHNldAorICAgKiB0aGUgcHJvcGVydHkgaW4g
dGhlIERPTS4gRWFjaCBvYmplY3QgY29udGFpbnM6CisgICAqCisgICAqIGF0dHJpYnV0ZU5hbWU6
CisgICAqICAgVXNlZCB3aGVuIHJlbmRlcmluZyBtYXJrdXAgb3Igd2l0aCBgKkF0dHJpYnV0ZSgp
YC4KKyAgICogYXR0cmlidXRlTmFtZXNwYWNlCisgICAqIHByb3BlcnR5TmFtZToKKyAgICogICBV
c2VkIG9uIERPTSBub2RlIGluc3RhbmNlcy4gKFRoaXMgaW5jbHVkZXMgcHJvcGVydGllcyB0aGF0
IG11dGF0ZSBkdWUgdG8KKyAgICogICBleHRlcm5hbCBmYWN0b3JzLikKKyAgICogbXV0YXRpb25N
ZXRob2Q6CisgICAqICAgSWYgbm9uLW51bGwsIHVzZWQgaW5zdGVhZCBvZiB0aGUgcHJvcGVydHkg
b3IgYHNldEF0dHJpYnV0ZSgpYCBhZnRlcgorICAgKiAgIGluaXRpYWwgcmVuZGVyLgorICAgKiBt
dXN0VXNlUHJvcGVydHk6CisgICAqICAgV2hldGhlciB0aGUgcHJvcGVydHkgbXVzdCBiZSBhY2Nl
c3NlZCBhbmQgbXV0YXRlZCBhcyBhbiBvYmplY3QgcHJvcGVydHkuCisgICAqIGhhc0Jvb2xlYW5W
YWx1ZToKKyAgICogICBXaGV0aGVyIHRoZSBwcm9wZXJ0eSBzaG91bGQgYmUgcmVtb3ZlZCB3aGVu
IHNldCB0byBhIGZhbHNleSB2YWx1ZS4KKyAgICogaGFzTnVtZXJpY1ZhbHVlOgorICAgKiAgIFdo
ZXRoZXIgdGhlIHByb3BlcnR5IG11c3QgYmUgbnVtZXJpYyBvciBwYXJzZSBhcyBhIG51bWVyaWMg
YW5kIHNob3VsZCBiZQorICAgKiAgIHJlbW92ZWQgd2hlbiBzZXQgdG8gYSBmYWxzZXkgdmFsdWUu
CisgICAqIGhhc1Bvc2l0aXZlTnVtZXJpY1ZhbHVlOgorICAgKiAgIFdoZXRoZXIgdGhlIHByb3Bl
cnR5IG11c3QgYmUgcG9zaXRpdmUgbnVtZXJpYyBvciBwYXJzZSBhcyBhIHBvc2l0aXZlCisgICAq
ICAgbnVtZXJpYyBhbmQgc2hvdWxkIGJlIHJlbW92ZWQgd2hlbiBzZXQgdG8gYSBmYWxzZXkgdmFs
dWUuCisgICAqIGhhc092ZXJsb2FkZWRCb29sZWFuVmFsdWU6CisgICAqICAgV2hldGhlciB0aGUg
cHJvcGVydHkgY2FuIGJlIHVzZWQgYXMgYSBmbGFnIGFzIHdlbGwgYXMgd2l0aCBhIHZhbHVlLgor
ICAgKiAgIFJlbW92ZWQgd2hlbiBzdHJpY3RseSBlcXVhbCB0byBmYWxzZTsgcHJlc2VudCB3aXRo
b3V0IGEgdmFsdWUgd2hlbgorICAgKiAgIHN0cmljdGx5IGVxdWFsIHRvIHRydWU7IHByZXNlbnQg
d2l0aCBhIHZhbHVlIG90aGVyd2lzZS4KKyAgICovCisgIHByb3BlcnRpZXM6IHt9LAorCisgIC8q
KgorICAgKiBNYXBwaW5nIGZyb20gbG93ZXJjYXNlIHByb3BlcnR5IG5hbWVzIHRvIHRoZSBwcm9w
ZXJseSBjYXNlZCB2ZXJzaW9uLCB1c2VkCisgICAqIHRvIHdhcm4gaW4gdGhlIGNhc2Ugb2YgbWlz
c2luZyBwcm9wZXJ0aWVzLiBBdmFpbGFibGUgb25seSBpbiBfX0RFVl9fLgorICAgKgorICAgKiBh
dXRvZm9jdXMgaXMgcHJlZGVmaW5lZCwgYmVjYXVzZSBhZGRpbmcgaXQgdG8gdGhlIHByb3BlcnR5
IHdoaXRlbGlzdAorICAgKiBjYXVzZXMgdW5pbnRlbmRlZCBzaWRlIGVmZmVjdHMuCisgICAqCisg
ICAqIEB0eXBlIHtPYmplY3R9CisgICAqLworICBnZXRQb3NzaWJsZVN0YW5kYXJkTmFtZTogcHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHsgYXV0b2ZvY3VzOiAnYXV0b0Zv
Y3VzJyB9IDogbnVsbCwKKworICAvKioKKyAgICogQWxsIG9mIHRoZSBpc0N1c3RvbUF0dHJpYnV0
ZSgpIGZ1bmN0aW9ucyB0aGF0IGhhdmUgYmVlbiBpbmplY3RlZC4KKyAgICovCisgIF9pc0N1c3Rv
bUF0dHJpYnV0ZUZ1bmN0aW9uczogW10sCisKKyAgLyoqCisgICAqIENoZWNrcyB3aGV0aGVyIGEg
cHJvcGVydHkgbmFtZSBpcyBhIGN1c3RvbSBhdHRyaWJ1dGUuCisgICAqIEBtZXRob2QKKyAgICov
CisgIGlzQ3VzdG9tQXR0cmlidXRlOiBmdW5jdGlvbiAoYXR0cmlidXRlTmFtZSkgeworICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgRE9NUHJvcGVydHkuX2lzQ3VzdG9tQXR0cmlidXRlRnVuY3Rpb25z
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgaXNDdXN0b21BdHRyaWJ1dGVGbiA9IERPTVByb3Bl
cnR5Ll9pc0N1c3RvbUF0dHJpYnV0ZUZ1bmN0aW9uc1tpXTsKKyAgICAgIGlmIChpc0N1c3RvbUF0
dHJpYnV0ZUZuKGF0dHJpYnV0ZU5hbWUpKSB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
fQorICAgIH0KKyAgICByZXR1cm4gZmFsc2U7CisgIH0sCisKKyAgaW5qZWN0aW9uOiBET01Qcm9w
ZXJ0eUluamVjdGlvbgorfTsKKworbW9kdWxlLmV4cG9ydHMgPSBET01Qcm9wZXJ0eTsKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2Rl
X21vZHVsZXMvcmVhY3QtZG9tL2xpYi9ET01Qcm9wZXJ0eU9wZXJhdGlvbnMuanMgYi9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9ET01Qcm9wZXJ0eU9wZXJhdGlv
bnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOTRiMTEwOTMwODA5MDFkNTE4YTQ0MTA2MjhhNzVlZTlkYjMzNWYx
OQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFj
dC1kb20vbGliL0RPTVByb3BlcnR5T3BlcmF0aW9ucy5qcwpAQCAtMCwwICsxLDIzNiBAQAorLyoq
CisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRo
ZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAor
ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0
aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIERPTVBy
b3BlcnR5ID0gcmVxdWlyZSgnLi9ET01Qcm9wZXJ0eScpOwordmFyIFJlYWN0RE9NQ29tcG9uZW50
VHJlZSA9IHJlcXVpcmUoJy4vUmVhY3RET01Db21wb25lbnRUcmVlJyk7Cit2YXIgUmVhY3RJbnN0
cnVtZW50YXRpb24gPSByZXF1aXJlKCcuL1JlYWN0SW5zdHJ1bWVudGF0aW9uJyk7CisKK3ZhciBx
dW90ZUF0dHJpYnV0ZVZhbHVlRm9yQnJvd3NlciA9IHJlcXVpcmUoJy4vcXVvdGVBdHRyaWJ1dGVW
YWx1ZUZvckJyb3dzZXInKTsKK3ZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2Fybmlu
ZycpOworCit2YXIgVkFMSURfQVRUUklCVVRFX05BTUVfUkVHRVggPSBuZXcgUmVnRXhwKCdeWycg
KyBET01Qcm9wZXJ0eS5BVFRSSUJVVEVfTkFNRV9TVEFSVF9DSEFSICsgJ11bJyArIERPTVByb3Bl
cnR5LkFUVFJJQlVURV9OQU1FX0NIQVIgKyAnXSokJyk7Cit2YXIgaWxsZWdhbEF0dHJpYnV0ZU5h
bWVDYWNoZSA9IHt9OwordmFyIHZhbGlkYXRlZEF0dHJpYnV0ZU5hbWVDYWNoZSA9IHt9OworCitm
dW5jdGlvbiBpc0F0dHJpYnV0ZU5hbWVTYWZlKGF0dHJpYnV0ZU5hbWUpIHsKKyAgaWYgKHZhbGlk
YXRlZEF0dHJpYnV0ZU5hbWVDYWNoZS5oYXNPd25Qcm9wZXJ0eShhdHRyaWJ1dGVOYW1lKSkgewor
ICAgIHJldHVybiB0cnVlOworICB9CisgIGlmIChpbGxlZ2FsQXR0cmlidXRlTmFtZUNhY2hlLmhh
c093blByb3BlcnR5KGF0dHJpYnV0ZU5hbWUpKSB7CisgICAgcmV0dXJuIGZhbHNlOworICB9Cisg
IGlmIChWQUxJRF9BVFRSSUJVVEVfTkFNRV9SRUdFWC50ZXN0KGF0dHJpYnV0ZU5hbWUpKSB7Cisg
ICAgdmFsaWRhdGVkQXR0cmlidXRlTmFtZUNhY2hlW2F0dHJpYnV0ZU5hbWVdID0gdHJ1ZTsKKyAg
ICByZXR1cm4gdHJ1ZTsKKyAgfQorICBpbGxlZ2FsQXR0cmlidXRlTmFtZUNhY2hlW2F0dHJpYnV0
ZU5hbWVdID0gdHJ1ZTsKKyAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/
IHdhcm5pbmcoZmFsc2UsICdJbnZhbGlkIGF0dHJpYnV0ZSBuYW1lOiBgJXNgJywgYXR0cmlidXRl
TmFtZSkgOiB2b2lkIDA7CisgIHJldHVybiBmYWxzZTsKK30KKworZnVuY3Rpb24gc2hvdWxkSWdu
b3JlVmFsdWUocHJvcGVydHlJbmZvLCB2YWx1ZSkgeworICByZXR1cm4gdmFsdWUgPT0gbnVsbCB8
fCBwcm9wZXJ0eUluZm8uaGFzQm9vbGVhblZhbHVlICYmICF2YWx1ZSB8fCBwcm9wZXJ0eUluZm8u
aGFzTnVtZXJpY1ZhbHVlICYmIGlzTmFOKHZhbHVlKSB8fCBwcm9wZXJ0eUluZm8uaGFzUG9zaXRp
dmVOdW1lcmljVmFsdWUgJiYgdmFsdWUgPCAxIHx8IHByb3BlcnR5SW5mby5oYXNPdmVybG9hZGVk
Qm9vbGVhblZhbHVlICYmIHZhbHVlID09PSBmYWxzZTsKK30KKworLyoqCisgKiBPcGVyYXRpb25z
IGZvciBkZWFsaW5nIHdpdGggRE9NIHByb3BlcnRpZXMuCisgKi8KK3ZhciBET01Qcm9wZXJ0eU9w
ZXJhdGlvbnMgPSB7CisKKyAgLyoqCisgICAqIENyZWF0ZXMgbWFya3VwIGZvciB0aGUgSUQgcHJv
cGVydHkuCisgICAqCisgICAqIEBwYXJhbSB7c3RyaW5nfSBpZCBVbmVzY2FwZWQgSUQuCisgICAq
IEByZXR1cm4ge3N0cmluZ30gTWFya3VwIHN0cmluZy4KKyAgICovCisgIGNyZWF0ZU1hcmt1cEZv
cklEOiBmdW5jdGlvbiAoaWQpIHsKKyAgICByZXR1cm4gRE9NUHJvcGVydHkuSURfQVRUUklCVVRF
X05BTUUgKyAnPScgKyBxdW90ZUF0dHJpYnV0ZVZhbHVlRm9yQnJvd3NlcihpZCk7CisgIH0sCisK
KyAgc2V0QXR0cmlidXRlRm9ySUQ6IGZ1bmN0aW9uIChub2RlLCBpZCkgeworICAgIG5vZGUuc2V0
QXR0cmlidXRlKERPTVByb3BlcnR5LklEX0FUVFJJQlVURV9OQU1FLCBpZCk7CisgIH0sCisKKyAg
Y3JlYXRlTWFya3VwRm9yUm9vdDogZnVuY3Rpb24gKCkgeworICAgIHJldHVybiBET01Qcm9wZXJ0
eS5ST09UX0FUVFJJQlVURV9OQU1FICsgJz0iIic7CisgIH0sCisKKyAgc2V0QXR0cmlidXRlRm9y
Um9vdDogZnVuY3Rpb24gKG5vZGUpIHsKKyAgICBub2RlLnNldEF0dHJpYnV0ZShET01Qcm9wZXJ0
eS5ST09UX0FUVFJJQlVURV9OQU1FLCAnJyk7CisgIH0sCisKKyAgLyoqCisgICAqIENyZWF0ZXMg
bWFya3VwIGZvciBhIHByb3BlcnR5LgorICAgKgorICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQor
ICAgKiBAcGFyYW0geyp9IHZhbHVlCisgICAqIEByZXR1cm4gez9zdHJpbmd9IE1hcmt1cCBzdHJp
bmcsIG9yIG51bGwgaWYgdGhlIHByb3BlcnR5IHdhcyBpbnZhbGlkLgorICAgKi8KKyAgY3JlYXRl
TWFya3VwRm9yUHJvcGVydHk6IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSkgeworICAgIHZhciBwcm9w
ZXJ0eUluZm8gPSBET01Qcm9wZXJ0eS5wcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KG5hbWUpID8g
RE9NUHJvcGVydHkucHJvcGVydGllc1tuYW1lXSA6IG51bGw7CisgICAgaWYgKHByb3BlcnR5SW5m
bykgeworICAgICAgaWYgKHNob3VsZElnbm9yZVZhbHVlKHByb3BlcnR5SW5mbywgdmFsdWUpKSB7
CisgICAgICAgIHJldHVybiAnJzsKKyAgICAgIH0KKyAgICAgIHZhciBhdHRyaWJ1dGVOYW1lID0g
cHJvcGVydHlJbmZvLmF0dHJpYnV0ZU5hbWU7CisgICAgICBpZiAocHJvcGVydHlJbmZvLmhhc0Jv
b2xlYW5WYWx1ZSB8fCBwcm9wZXJ0eUluZm8uaGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZSAmJiB2
YWx1ZSA9PT0gdHJ1ZSkgeworICAgICAgICByZXR1cm4gYXR0cmlidXRlTmFtZSArICc9IiInOwor
ICAgICAgfQorICAgICAgcmV0dXJuIGF0dHJpYnV0ZU5hbWUgKyAnPScgKyBxdW90ZUF0dHJpYnV0
ZVZhbHVlRm9yQnJvd3Nlcih2YWx1ZSk7CisgICAgfSBlbHNlIGlmIChET01Qcm9wZXJ0eS5pc0N1
c3RvbUF0dHJpYnV0ZShuYW1lKSkgeworICAgICAgaWYgKHZhbHVlID09IG51bGwpIHsKKyAgICAg
ICAgcmV0dXJuICcnOworICAgICAgfQorICAgICAgcmV0dXJuIG5hbWUgKyAnPScgKyBxdW90ZUF0
dHJpYnV0ZVZhbHVlRm9yQnJvd3Nlcih2YWx1ZSk7CisgICAgfQorICAgIHJldHVybiBudWxsOwor
ICB9LAorCisgIC8qKgorICAgKiBDcmVhdGVzIG1hcmt1cCBmb3IgYSBjdXN0b20gcHJvcGVydHku
CisgICAqCisgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAqIEBwYXJhbSB7Kn0gdmFsdWUK
KyAgICogQHJldHVybiB7c3RyaW5nfSBNYXJrdXAgc3RyaW5nLCBvciBlbXB0eSBzdHJpbmcgaWYg
dGhlIHByb3BlcnR5IHdhcyBpbnZhbGlkLgorICAgKi8KKyAgY3JlYXRlTWFya3VwRm9yQ3VzdG9t
QXR0cmlidXRlOiBmdW5jdGlvbiAobmFtZSwgdmFsdWUpIHsKKyAgICBpZiAoIWlzQXR0cmlidXRl
TmFtZVNhZmUobmFtZSkgfHwgdmFsdWUgPT0gbnVsbCkgeworICAgICAgcmV0dXJuICcnOworICAg
IH0KKyAgICByZXR1cm4gbmFtZSArICc9JyArIHF1b3RlQXR0cmlidXRlVmFsdWVGb3JCcm93c2Vy
KHZhbHVlKTsKKyAgfSwKKworICAvKioKKyAgICogU2V0cyB0aGUgdmFsdWUgZm9yIGEgcHJvcGVy
dHkgb24gYSBub2RlLgorICAgKgorICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IG5vZGUKKyAgICog
QHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICogQHBhcmFtIHsqfSB2YWx1ZQorICAgKi8KKyAgc2V0
VmFsdWVGb3JQcm9wZXJ0eTogZnVuY3Rpb24gKG5vZGUsIG5hbWUsIHZhbHVlKSB7CisgICAgdmFy
IHByb3BlcnR5SW5mbyA9IERPTVByb3BlcnR5LnByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkobmFt
ZSkgPyBET01Qcm9wZXJ0eS5wcm9wZXJ0aWVzW25hbWVdIDogbnVsbDsKKyAgICBpZiAocHJvcGVy
dHlJbmZvKSB7CisgICAgICB2YXIgbXV0YXRpb25NZXRob2QgPSBwcm9wZXJ0eUluZm8ubXV0YXRp
b25NZXRob2Q7CisgICAgICBpZiAobXV0YXRpb25NZXRob2QpIHsKKyAgICAgICAgbXV0YXRpb25N
ZXRob2Qobm9kZSwgdmFsdWUpOworICAgICAgfSBlbHNlIGlmIChzaG91bGRJZ25vcmVWYWx1ZShw
cm9wZXJ0eUluZm8sIHZhbHVlKSkgeworICAgICAgICB0aGlzLmRlbGV0ZVZhbHVlRm9yUHJvcGVy
dHkobm9kZSwgbmFtZSk7CisgICAgICAgIHJldHVybjsKKyAgICAgIH0gZWxzZSBpZiAocHJvcGVy
dHlJbmZvLm11c3RVc2VQcm9wZXJ0eSkgeworICAgICAgICAvLyBDb250cmFyeSB0byBgc2V0QXR0
cmlidXRlYCwgb2JqZWN0IHByb3BlcnRpZXMgYXJlIHByb3Blcmx5CisgICAgICAgIC8vIGB0b1N0
cmluZ2BlZCBieSBJRTgvOS4KKyAgICAgICAgbm9kZVtwcm9wZXJ0eUluZm8ucHJvcGVydHlOYW1l
XSA9IHZhbHVlOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgdmFyIGF0dHJpYnV0ZU5hbWUgPSBw
cm9wZXJ0eUluZm8uYXR0cmlidXRlTmFtZTsKKyAgICAgICAgdmFyIG5hbWVzcGFjZSA9IHByb3Bl
cnR5SW5mby5hdHRyaWJ1dGVOYW1lc3BhY2U7CisgICAgICAgIC8vIGBzZXRBdHRyaWJ1dGVgIHdp
dGggb2JqZWN0cyBiZWNvbWVzIG9ubHkgYFtvYmplY3RdYCBpbiBJRTgvOSwKKyAgICAgICAgLy8g
KCcnICsgdmFsdWUpIG1ha2VzIGl0IG91dHB1dCB0aGUgY29ycmVjdCB0b1N0cmluZygpLXZhbHVl
LgorICAgICAgICBpZiAobmFtZXNwYWNlKSB7CisgICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGVO
UyhuYW1lc3BhY2UsIGF0dHJpYnV0ZU5hbWUsICcnICsgdmFsdWUpOworICAgICAgICB9IGVsc2Ug
aWYgKHByb3BlcnR5SW5mby5oYXNCb29sZWFuVmFsdWUgfHwgcHJvcGVydHlJbmZvLmhhc092ZXJs
b2FkZWRCb29sZWFuVmFsdWUgJiYgdmFsdWUgPT09IHRydWUpIHsKKyAgICAgICAgICBub2RlLnNl
dEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lLCAnJyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgbm9kZS5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSwgJycgKyB2YWx1ZSk7CisgICAgICAg
IH0KKyAgICAgIH0KKyAgICB9IGVsc2UgaWYgKERPTVByb3BlcnR5LmlzQ3VzdG9tQXR0cmlidXRl
KG5hbWUpKSB7CisgICAgICBET01Qcm9wZXJ0eU9wZXJhdGlvbnMuc2V0VmFsdWVGb3JBdHRyaWJ1
dGUobm9kZSwgbmFtZSwgdmFsdWUpOworICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChw
cm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICB2YXIgcGF5bG9h
ZCA9IHt9OworICAgICAgcGF5bG9hZFtuYW1lXSA9IHZhbHVlOworICAgICAgUmVhY3RJbnN0cnVt
ZW50YXRpb24uZGVidWdUb29sLm9uSG9zdE9wZXJhdGlvbih7CisgICAgICAgIGluc3RhbmNlSUQ6
IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRJbnN0YW5jZUZyb21Ob2RlKG5vZGUpLl9kZWJ1Z0lE
LAorICAgICAgICB0eXBlOiAndXBkYXRlIGF0dHJpYnV0ZScsCisgICAgICAgIHBheWxvYWQ6IHBh
eWxvYWQKKyAgICAgIH0pOworICAgIH0KKyAgfSwKKworICBzZXRWYWx1ZUZvckF0dHJpYnV0ZTog
ZnVuY3Rpb24gKG5vZGUsIG5hbWUsIHZhbHVlKSB7CisgICAgaWYgKCFpc0F0dHJpYnV0ZU5hbWVT
YWZlKG5hbWUpKSB7CisgICAgICByZXR1cm47CisgICAgfQorICAgIGlmICh2YWx1ZSA9PSBudWxs
KSB7CisgICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShuYW1lKTsKKyAgICB9IGVsc2UgeworICAg
ICAgbm9kZS5zZXRBdHRyaWJ1dGUobmFtZSwgJycgKyB2YWx1ZSk7CisgICAgfQorCisgICAgaWYg
KHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgIHZhciBwYXls
b2FkID0ge307CisgICAgICBwYXlsb2FkW25hbWVdID0gdmFsdWU7CisgICAgICBSZWFjdEluc3Ry
dW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25Ib3N0T3BlcmF0aW9uKHsKKyAgICAgICAgaW5zdGFuY2VJ
RDogUmVhY3RET01Db21wb25lbnRUcmVlLmdldEluc3RhbmNlRnJvbU5vZGUobm9kZSkuX2RlYnVn
SUQsCisgICAgICAgIHR5cGU6ICd1cGRhdGUgYXR0cmlidXRlJywKKyAgICAgICAgcGF5bG9hZDog
cGF5bG9hZAorICAgICAgfSk7CisgICAgfQorICB9LAorCisgIC8qKgorICAgKiBEZWxldGVzIGFu
IGF0dHJpYnV0ZXMgZnJvbSBhIG5vZGUuCisgICAqCisgICAqIEBwYXJhbSB7RE9NRWxlbWVudH0g
bm9kZQorICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgKi8KKyAgZGVsZXRlVmFsdWVGb3JB
dHRyaWJ1dGU6IGZ1bmN0aW9uIChub2RlLCBuYW1lKSB7CisgICAgbm9kZS5yZW1vdmVBdHRyaWJ1
dGUobmFtZSk7CisgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicp
IHsKKyAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhvc3RPcGVyYXRpb24o
eworICAgICAgICBpbnN0YW5jZUlEOiBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0SW5zdGFuY2VG
cm9tTm9kZShub2RlKS5fZGVidWdJRCwKKyAgICAgICAgdHlwZTogJ3JlbW92ZSBhdHRyaWJ1dGUn
LAorICAgICAgICBwYXlsb2FkOiBuYW1lCisgICAgICB9KTsKKyAgICB9CisgIH0sCisKKyAgLyoq
CisgICAqIERlbGV0ZXMgdGhlIHZhbHVlIGZvciBhIHByb3BlcnR5IG9uIGEgbm9kZS4KKyAgICoK
KyAgICogQHBhcmFtIHtET01FbGVtZW50fSBub2RlCisgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1l
CisgICAqLworICBkZWxldGVWYWx1ZUZvclByb3BlcnR5OiBmdW5jdGlvbiAobm9kZSwgbmFtZSkg
eworICAgIHZhciBwcm9wZXJ0eUluZm8gPSBET01Qcm9wZXJ0eS5wcm9wZXJ0aWVzLmhhc093blBy
b3BlcnR5KG5hbWUpID8gRE9NUHJvcGVydHkucHJvcGVydGllc1tuYW1lXSA6IG51bGw7CisgICAg
aWYgKHByb3BlcnR5SW5mbykgeworICAgICAgdmFyIG11dGF0aW9uTWV0aG9kID0gcHJvcGVydHlJ
bmZvLm11dGF0aW9uTWV0aG9kOworICAgICAgaWYgKG11dGF0aW9uTWV0aG9kKSB7CisgICAgICAg
IG11dGF0aW9uTWV0aG9kKG5vZGUsIHVuZGVmaW5lZCk7CisgICAgICB9IGVsc2UgaWYgKHByb3Bl
cnR5SW5mby5tdXN0VXNlUHJvcGVydHkpIHsKKyAgICAgICAgdmFyIHByb3BOYW1lID0gcHJvcGVy
dHlJbmZvLnByb3BlcnR5TmFtZTsKKyAgICAgICAgaWYgKHByb3BlcnR5SW5mby5oYXNCb29sZWFu
VmFsdWUpIHsKKyAgICAgICAgICBub2RlW3Byb3BOYW1lXSA9IGZhbHNlOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgIG5vZGVbcHJvcE5hbWVdID0gJyc7CisgICAgICAgIH0KKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlKHByb3BlcnR5SW5mby5hdHRyaWJ1
dGVOYW1lKTsKKyAgICAgIH0KKyAgICB9IGVsc2UgaWYgKERPTVByb3BlcnR5LmlzQ3VzdG9tQXR0
cmlidXRlKG5hbWUpKSB7CisgICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShuYW1lKTsKKyAgICB9
CisKKyAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgeworICAg
ICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uSG9zdE9wZXJhdGlvbih7CisgICAg
ICAgIGluc3RhbmNlSUQ6IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRJbnN0YW5jZUZyb21Ob2Rl
KG5vZGUpLl9kZWJ1Z0lELAorICAgICAgICB0eXBlOiAncmVtb3ZlIGF0dHJpYnV0ZScsCisgICAg
ICAgIHBheWxvYWQ6IG5hbWUKKyAgICAgIH0pOworICAgIH0KKyAgfQorCit9OworCittb2R1bGUu
ZXhwb3J0cyA9IERPTVByb3BlcnR5T3BlcmF0aW9uczsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9t
L2xpYi9EYW5nZXIuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9t
L2xpYi9EYW5nZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2UzZTQ5MWNhMjkyNGQyNTVjZTExZmQ5OGVjMmM0
NDBhZTU0OWJjOAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9k
dWxlcy9yZWFjdC1kb20vbGliL0Rhbmdlci5qcwpAQCAtMCwwICsxLDQ3IEBACisvKioKKyAqIENv
cHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1z
dHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRp
cmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBw
YXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1l
IGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJbnZhcmlh
bnQgPSByZXF1aXJlKCcuL3JlYWN0UHJvZEludmFyaWFudCcpOworCit2YXIgRE9NTGF6eVRyZWUg
PSByZXF1aXJlKCcuL0RPTUxhenlUcmVlJyk7Cit2YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSBy
ZXF1aXJlKCdmYmpzL2xpYi9FeGVjdXRpb25FbnZpcm9ubWVudCcpOworCit2YXIgY3JlYXRlTm9k
ZXNGcm9tTWFya3VwID0gcmVxdWlyZSgnZmJqcy9saWIvY3JlYXRlTm9kZXNGcm9tTWFya3VwJyk7
Cit2YXIgZW1wdHlGdW5jdGlvbiA9IHJlcXVpcmUoJ2ZianMvbGliL2VtcHR5RnVuY3Rpb24nKTsK
K3ZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTsKKwordmFyIERh
bmdlciA9IHsKKworICAvKioKKyAgICogUmVwbGFjZXMgYSBub2RlIHdpdGggYSBzdHJpbmcgb2Yg
bWFya3VwIGF0IGl0cyBjdXJyZW50IHBvc2l0aW9uIHdpdGhpbiBpdHMKKyAgICogcGFyZW50LiBU
aGUgbWFya3VwIG11c3QgcmVuZGVyIGludG8gYSBzaW5nbGUgcm9vdCBub2RlLgorICAgKgorICAg
KiBAcGFyYW0ge0RPTUVsZW1lbnR9IG9sZENoaWxkIENoaWxkIG5vZGUgdG8gcmVwbGFjZS4KKyAg
ICogQHBhcmFtIHtzdHJpbmd9IG1hcmt1cCBNYXJrdXAgdG8gcmVuZGVyIGluIHBsYWNlIG9mIHRo
ZSBjaGlsZCBub2RlLgorICAgKiBAaW50ZXJuYWwKKyAgICovCisgIGRhbmdlcm91c2x5UmVwbGFj
ZU5vZGVXaXRoTWFya3VwOiBmdW5jdGlvbiAob2xkQ2hpbGQsIG1hcmt1cCkgeworICAgICFFeGVj
dXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00gPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3By
b2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhN
YXJrdXAoLi4uKTogQ2Fubm90IHJlbmRlciBtYXJrdXAgaW4gYSB3b3JrZXIgdGhyZWFkLiBNYWtl
IHN1cmUgYHdpbmRvd2AgYW5kIGBkb2N1bWVudGAgYXJlIGF2YWlsYWJsZSBnbG9iYWxseSBiZWZv
cmUgcmVxdWlyaW5nIFJlYWN0IHdoZW4gdW5pdCB0ZXN0aW5nIG9yIHVzZSBSZWFjdERPTVNlcnZl
ci5yZW5kZXJUb1N0cmluZygpIGZvciBzZXJ2ZXIgcmVuZGVyaW5nLicpIDogX3Byb2RJbnZhcmlh
bnQoJzU2JykgOiB2b2lkIDA7CisgICAgIW1hcmt1cCA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9
PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdkYW5nZXJvdXNseVJlcGxhY2VOb2Rl
V2l0aE1hcmt1cCguLi4pOiBNaXNzaW5nIG1hcmt1cC4nKSA6IF9wcm9kSW52YXJpYW50KCc1Nycp
IDogdm9pZCAwOworICAgICEob2xkQ2hpbGQubm9kZU5hbWUgIT09ICdIVE1MJykgPyBwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnZGFuZ2Vy
b3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXAoLi4uKTogQ2Fubm90IHJlcGxhY2UgbWFya3VwIG9m
IHRoZSA8aHRtbD4gbm9kZS4gVGhpcyBpcyBiZWNhdXNlIGJyb3dzZXIgcXVpcmtzIG1ha2UgdGhp
cyB1bnJlbGlhYmxlIGFuZC9vciBzbG93LiBJZiB5b3Ugd2FudCB0byByZW5kZXIgdG8gdGhlIHJv
b3QgeW91IG11c3QgdXNlIHNlcnZlciByZW5kZXJpbmcuIFNlZSBSZWFjdERPTVNlcnZlci5yZW5k
ZXJUb1N0cmluZygpLicpIDogX3Byb2RJbnZhcmlhbnQoJzU4JykgOiB2b2lkIDA7CisKKyAgICBp
ZiAodHlwZW9mIG1hcmt1cCA9PT0gJ3N0cmluZycpIHsKKyAgICAgIHZhciBuZXdDaGlsZCA9IGNy
ZWF0ZU5vZGVzRnJvbU1hcmt1cChtYXJrdXAsIGVtcHR5RnVuY3Rpb24pWzBdOworICAgICAgb2xk
Q2hpbGQucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3Q2hpbGQsIG9sZENoaWxkKTsKKyAgICB9
IGVsc2UgeworICAgICAgRE9NTGF6eVRyZWUucmVwbGFjZUNoaWxkV2l0aFRyZWUob2xkQ2hpbGQs
IG1hcmt1cCk7CisgICAgfQorICB9CisKK307CisKK21vZHVsZS5leHBvcnRzID0gRGFuZ2VyOwpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0
L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL0RlZmF1bHRFdmVudFBsdWdpbk9yZGVyLmpzIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvRGVmYXVsdEV2ZW50
UGx1Z2luT3JkZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjcyMzE4Y2I2ODk1ZWI3ZmU2MzYyNDEzMTM4OTc0
MTVlNTJiYWNhMgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9k
dWxlcy9yZWFjdC1kb20vbGliL0RlZmF1bHRFdmVudFBsdWdpbk9yZGVyLmpzCkBAIC0wLDAgKzEs
MjUgQEAKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisK
Ky8qKgorICogTW9kdWxlIHRoYXQgaXMgaW5qZWN0YWJsZSBpbnRvIGBFdmVudFBsdWdpbkh1YmAs
IHRoYXQgc3BlY2lmaWVzIGEKKyAqIGRldGVybWluaXN0aWMgb3JkZXJpbmcgb2YgYEV2ZW50UGx1
Z2luYHMuIEEgY29udmVuaWVudCB3YXkgdG8gcmVhc29uIGFib3V0CisgKiBwbHVnaW5zLCB3aXRo
b3V0IGhhdmluZyB0byBwYWNrYWdlIGV2ZXJ5IG9uZSBvZiB0aGVtLiBUaGlzIGlzIGJldHRlciB0
aGFuCisgKiBoYXZpbmcgcGx1Z2lucyBiZSBvcmRlcmVkIGluIHRoZSBzYW1lIG9yZGVyIHRoYXQg
dGhleSBhcmUgaW5qZWN0ZWQgYmVjYXVzZQorICogdGhhdCBvcmRlcmluZyB3b3VsZCBiZSBpbmZs
dWVuY2VkIGJ5IHRoZSBwYWNrYWdpbmcgb3JkZXIuCisgKiBgUmVzcG9uZGVyRXZlbnRQbHVnaW5g
IG11c3Qgb2NjdXIgYmVmb3JlIGBTaW1wbGVFdmVudFBsdWdpbmAgc28gdGhhdAorICogcHJldmVu
dGluZyBkZWZhdWx0IG9uIGV2ZW50cyBpcyBjb252ZW5pZW50IGluIGBTaW1wbGVFdmVudFBsdWdp
bmAgaGFuZGxlcnMuCisgKi8KKwordmFyIERlZmF1bHRFdmVudFBsdWdpbk9yZGVyID0gWydSZXNw
b25kZXJFdmVudFBsdWdpbicsICdTaW1wbGVFdmVudFBsdWdpbicsICdUYXBFdmVudFBsdWdpbics
ICdFbnRlckxlYXZlRXZlbnRQbHVnaW4nLCAnQ2hhbmdlRXZlbnRQbHVnaW4nLCAnU2VsZWN0RXZl
bnRQbHVnaW4nLCAnQmVmb3JlSW5wdXRFdmVudFBsdWdpbiddOworCittb2R1bGUuZXhwb3J0cyA9
IERlZmF1bHRFdmVudFBsdWdpbk9yZGVyOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL0Vu
dGVyTGVhdmVFdmVudFBsdWdpbi5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9y
ZWFjdC1kb20vbGliL0VudGVyTGVhdmVFdmVudFBsdWdpbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YjA3ZDA4
YTZmYWFkNWEzYTM5N2M1YjEyOWJlYzIzYjJiODgwNjVmCi0tLSAvZGV2L251bGwKKysrIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvRW50ZXJMZWF2ZUV2ZW50
UGx1Z2luLmpzCkBAIC0wLDAgKzEsOTkgQEAKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2Vu
dCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBz
b3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQg
aW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291
cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJl
IGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAq
LworCisndXNlIHN0cmljdCc7CisKK3ZhciBFdmVudFByb3BhZ2F0b3JzID0gcmVxdWlyZSgnLi9F
dmVudFByb3BhZ2F0b3JzJyk7Cit2YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gcmVxdWlyZSgn
Li9SZWFjdERPTUNvbXBvbmVudFRyZWUnKTsKK3ZhciBTeW50aGV0aWNNb3VzZUV2ZW50ID0gcmVx
dWlyZSgnLi9TeW50aGV0aWNNb3VzZUV2ZW50Jyk7CisKK3ZhciBldmVudFR5cGVzID0geworICBt
b3VzZUVudGVyOiB7CisgICAgcmVnaXN0cmF0aW9uTmFtZTogJ29uTW91c2VFbnRlcicsCisgICAg
ZGVwZW5kZW5jaWVzOiBbJ3RvcE1vdXNlT3V0JywgJ3RvcE1vdXNlT3ZlciddCisgIH0sCisgIG1v
dXNlTGVhdmU6IHsKKyAgICByZWdpc3RyYXRpb25OYW1lOiAnb25Nb3VzZUxlYXZlJywKKyAgICBk
ZXBlbmRlbmNpZXM6IFsndG9wTW91c2VPdXQnLCAndG9wTW91c2VPdmVyJ10KKyAgfQorfTsKKwor
dmFyIEVudGVyTGVhdmVFdmVudFBsdWdpbiA9IHsKKworICBldmVudFR5cGVzOiBldmVudFR5cGVz
LAorCisgIC8qKgorICAgKiBGb3IgYWxtb3N0IGV2ZXJ5IGludGVyYWN0aW9uIHdlIGNhcmUgYWJv
dXQsIHRoZXJlIHdpbGwgYmUgYm90aCBhIHRvcC1sZXZlbAorICAgKiBgbW91c2VvdmVyYCBhbmQg
YG1vdXNlb3V0YCBldmVudCB0aGF0IG9jY3Vycy4gT25seSB1c2UgYG1vdXNlb3V0YCBzbyB0aGF0
CisgICAqIHdlIGRvIG5vdCBleHRyYWN0IGR1cGxpY2F0ZSBldmVudHMuIEhvd2V2ZXIsIG1vdmlu
ZyB0aGUgbW91c2UgaW50byB0aGUKKyAgICogYnJvd3NlciBmcm9tIG91dHNpZGUgd2lsbCBub3Qg
ZmlyZSBhIGBtb3VzZW91dGAgZXZlbnQuIEluIHRoaXMgY2FzZSwgd2UgdXNlCisgICAqIHRoZSBg
bW91c2VvdmVyYCB0b3AtbGV2ZWwgZXZlbnQuCisgICAqLworICBleHRyYWN0RXZlbnRzOiBmdW5j
dGlvbiAodG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRU
YXJnZXQpIHsKKyAgICBpZiAodG9wTGV2ZWxUeXBlID09PSAndG9wTW91c2VPdmVyJyAmJiAobmF0
aXZlRXZlbnQucmVsYXRlZFRhcmdldCB8fCBuYXRpdmVFdmVudC5mcm9tRWxlbWVudCkpIHsKKyAg
ICAgIHJldHVybiBudWxsOworICAgIH0KKyAgICBpZiAodG9wTGV2ZWxUeXBlICE9PSAndG9wTW91
c2VPdXQnICYmIHRvcExldmVsVHlwZSAhPT0gJ3RvcE1vdXNlT3ZlcicpIHsKKyAgICAgIC8vIE11
c3Qgbm90IGJlIGEgbW91c2UgaW4gb3IgbW91c2Ugb3V0IC0gaWdub3JpbmcuCisgICAgICByZXR1
cm4gbnVsbDsKKyAgICB9CisKKyAgICB2YXIgd2luOworICAgIGlmIChuYXRpdmVFdmVudFRhcmdl
dC53aW5kb3cgPT09IG5hdGl2ZUV2ZW50VGFyZ2V0KSB7CisgICAgICAvLyBgbmF0aXZlRXZlbnRU
YXJnZXRgIGlzIHByb2JhYmx5IGEgd2luZG93IG9iamVjdC4KKyAgICAgIHdpbiA9IG5hdGl2ZUV2
ZW50VGFyZ2V0OworICAgIH0gZWxzZSB7CisgICAgICAvLyBUT0RPOiBGaWd1cmUgb3V0IHdoeSBg
b3duZXJEb2N1bWVudGAgaXMgc29tZXRpbWVzIHVuZGVmaW5lZCBpbiBJRTguCisgICAgICB2YXIg
ZG9jID0gbmF0aXZlRXZlbnRUYXJnZXQub3duZXJEb2N1bWVudDsKKyAgICAgIGlmIChkb2MpIHsK
KyAgICAgICAgd2luID0gZG9jLmRlZmF1bHRWaWV3IHx8IGRvYy5wYXJlbnRXaW5kb3c7CisgICAg
ICB9IGVsc2UgeworICAgICAgICB3aW4gPSB3aW5kb3c7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGZyb207CisgICAgdmFyIHRvOworICAgIGlmICh0b3BMZXZlbFR5cGUgPT09ICd0b3BNb3Vz
ZU91dCcpIHsKKyAgICAgIGZyb20gPSB0YXJnZXRJbnN0OworICAgICAgdmFyIHJlbGF0ZWQgPSBu
YXRpdmVFdmVudC5yZWxhdGVkVGFyZ2V0IHx8IG5hdGl2ZUV2ZW50LnRvRWxlbWVudDsKKyAgICAg
IHRvID0gcmVsYXRlZCA/IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRDbG9zZXN0SW5zdGFuY2VG
cm9tTm9kZShyZWxhdGVkKSA6IG51bGw7CisgICAgfSBlbHNlIHsKKyAgICAgIC8vIE1vdmluZyB0
byBhIG5vZGUgZnJvbSBvdXRzaWRlIHRoZSB3aW5kb3cuCisgICAgICBmcm9tID0gbnVsbDsKKyAg
ICAgIHRvID0gdGFyZ2V0SW5zdDsKKyAgICB9CisKKyAgICBpZiAoZnJvbSA9PT0gdG8pIHsKKyAg
ICAgIC8vIE5vdGhpbmcgcGVydGFpbnMgdG8gb3VyIG1hbmFnZWQgY29tcG9uZW50cy4KKyAgICAg
IHJldHVybiBudWxsOworICAgIH0KKworICAgIHZhciBmcm9tTm9kZSA9IGZyb20gPT0gbnVsbCA/
IHdpbiA6IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKGZyb20pOwor
ICAgIHZhciB0b05vZGUgPSB0byA9PSBudWxsID8gd2luIDogUmVhY3RET01Db21wb25lbnRUcmVl
LmdldE5vZGVGcm9tSW5zdGFuY2UodG8pOworCisgICAgdmFyIGxlYXZlID0gU3ludGhldGljTW91
c2VFdmVudC5nZXRQb29sZWQoZXZlbnRUeXBlcy5tb3VzZUxlYXZlLCBmcm9tLCBuYXRpdmVFdmVu
dCwgbmF0aXZlRXZlbnRUYXJnZXQpOworICAgIGxlYXZlLnR5cGUgPSAnbW91c2VsZWF2ZSc7Cisg
ICAgbGVhdmUudGFyZ2V0ID0gZnJvbU5vZGU7CisgICAgbGVhdmUucmVsYXRlZFRhcmdldCA9IHRv
Tm9kZTsKKworICAgIHZhciBlbnRlciA9IFN5bnRoZXRpY01vdXNlRXZlbnQuZ2V0UG9vbGVkKGV2
ZW50VHlwZXMubW91c2VFbnRlciwgdG8sIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7
CisgICAgZW50ZXIudHlwZSA9ICdtb3VzZWVudGVyJzsKKyAgICBlbnRlci50YXJnZXQgPSB0b05v
ZGU7CisgICAgZW50ZXIucmVsYXRlZFRhcmdldCA9IGZyb21Ob2RlOworCisgICAgRXZlbnRQcm9w
YWdhdG9ycy5hY2N1bXVsYXRlRW50ZXJMZWF2ZURpc3BhdGNoZXMobGVhdmUsIGVudGVyLCBmcm9t
LCB0byk7CisKKyAgICByZXR1cm4gW2xlYXZlLCBlbnRlcl07CisgIH0KKworfTsKKworbW9kdWxl
LmV4cG9ydHMgPSBFbnRlckxlYXZlRXZlbnRQbHVnaW47ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRv
bS9saWIvRXZlbnRDb25zdGFudHMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMv
cmVhY3QtZG9tL2xpYi9FdmVudENvbnN0YW50cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ODg2ODAzZGY3ODRi
YzcwMmFjNDE4NTZkNGQwZDRlZTQzZWQzMTY2Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvRXZlbnRDb25zdGFudHMuanMKQEAg
LTAsMCArMSw5MSBAQAorLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhl
IFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3Ry
aWN0JzsKKworLyoqCisgKiBUeXBlcyBvZiByYXcgc2lnbmFscyBmcm9tIHRoZSBicm93c2VyIGNh
dWdodCBhdCB0aGUgdG9wIGxldmVsLgorICovCit2YXIgdG9wTGV2ZWxUeXBlcyA9IHsKKyAgdG9w
QWJvcnQ6IG51bGwsCisgIHRvcEFuaW1hdGlvbkVuZDogbnVsbCwKKyAgdG9wQW5pbWF0aW9uSXRl
cmF0aW9uOiBudWxsLAorICB0b3BBbmltYXRpb25TdGFydDogbnVsbCwKKyAgdG9wQmx1cjogbnVs
bCwKKyAgdG9wQ2FuUGxheTogbnVsbCwKKyAgdG9wQ2FuUGxheVRocm91Z2g6IG51bGwsCisgIHRv
cENoYW5nZTogbnVsbCwKKyAgdG9wQ2xpY2s6IG51bGwsCisgIHRvcENvbXBvc2l0aW9uRW5kOiBu
dWxsLAorICB0b3BDb21wb3NpdGlvblN0YXJ0OiBudWxsLAorICB0b3BDb21wb3NpdGlvblVwZGF0
ZTogbnVsbCwKKyAgdG9wQ29udGV4dE1lbnU6IG51bGwsCisgIHRvcENvcHk6IG51bGwsCisgIHRv
cEN1dDogbnVsbCwKKyAgdG9wRG91YmxlQ2xpY2s6IG51bGwsCisgIHRvcERyYWc6IG51bGwsCisg
IHRvcERyYWdFbmQ6IG51bGwsCisgIHRvcERyYWdFbnRlcjogbnVsbCwKKyAgdG9wRHJhZ0V4aXQ6
IG51bGwsCisgIHRvcERyYWdMZWF2ZTogbnVsbCwKKyAgdG9wRHJhZ092ZXI6IG51bGwsCisgIHRv
cERyYWdTdGFydDogbnVsbCwKKyAgdG9wRHJvcDogbnVsbCwKKyAgdG9wRHVyYXRpb25DaGFuZ2U6
IG51bGwsCisgIHRvcEVtcHRpZWQ6IG51bGwsCisgIHRvcEVuY3J5cHRlZDogbnVsbCwKKyAgdG9w
RW5kZWQ6IG51bGwsCisgIHRvcEVycm9yOiBudWxsLAorICB0b3BGb2N1czogbnVsbCwKKyAgdG9w
SW5wdXQ6IG51bGwsCisgIHRvcEludmFsaWQ6IG51bGwsCisgIHRvcEtleURvd246IG51bGwsCisg
IHRvcEtleVByZXNzOiBudWxsLAorICB0b3BLZXlVcDogbnVsbCwKKyAgdG9wTG9hZDogbnVsbCwK
KyAgdG9wTG9hZGVkRGF0YTogbnVsbCwKKyAgdG9wTG9hZGVkTWV0YWRhdGE6IG51bGwsCisgIHRv
cExvYWRTdGFydDogbnVsbCwKKyAgdG9wTW91c2VEb3duOiBudWxsLAorICB0b3BNb3VzZU1vdmU6
IG51bGwsCisgIHRvcE1vdXNlT3V0OiBudWxsLAorICB0b3BNb3VzZU92ZXI6IG51bGwsCisgIHRv
cE1vdXNlVXA6IG51bGwsCisgIHRvcFBhc3RlOiBudWxsLAorICB0b3BQYXVzZTogbnVsbCwKKyAg
dG9wUGxheTogbnVsbCwKKyAgdG9wUGxheWluZzogbnVsbCwKKyAgdG9wUHJvZ3Jlc3M6IG51bGws
CisgIHRvcFJhdGVDaGFuZ2U6IG51bGwsCisgIHRvcFJlc2V0OiBudWxsLAorICB0b3BTY3JvbGw6
IG51bGwsCisgIHRvcFNlZWtlZDogbnVsbCwKKyAgdG9wU2Vla2luZzogbnVsbCwKKyAgdG9wU2Vs
ZWN0aW9uQ2hhbmdlOiBudWxsLAorICB0b3BTdGFsbGVkOiBudWxsLAorICB0b3BTdWJtaXQ6IG51
bGwsCisgIHRvcFN1c3BlbmQ6IG51bGwsCisgIHRvcFRleHRJbnB1dDogbnVsbCwKKyAgdG9wVGlt
ZVVwZGF0ZTogbnVsbCwKKyAgdG9wVG91Y2hDYW5jZWw6IG51bGwsCisgIHRvcFRvdWNoRW5kOiBu
dWxsLAorICB0b3BUb3VjaE1vdmU6IG51bGwsCisgIHRvcFRvdWNoU3RhcnQ6IG51bGwsCisgIHRv
cFRyYW5zaXRpb25FbmQ6IG51bGwsCisgIHRvcFZvbHVtZUNoYW5nZTogbnVsbCwKKyAgdG9wV2Fp
dGluZzogbnVsbCwKKyAgdG9wV2hlZWw6IG51bGwKK307CisKK3ZhciBFdmVudENvbnN0YW50cyA9
IHsKKyAgdG9wTGV2ZWxUeXBlczogdG9wTGV2ZWxUeXBlcworfTsKKworbW9kdWxlLmV4cG9ydHMg
PSBFdmVudENvbnN0YW50czsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9FdmVudFBsdWdp
bkh1Yi5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL0V2
ZW50UGx1Z2luSHViLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2ODhlMTk0Yjg2YzU3ZGYyMDM3OWRkMjhlNDI4
ODQ4MGI1YmNmNDYKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21v
ZHVsZXMvcmVhY3QtZG9tL2xpYi9FdmVudFBsdWdpbkh1Yi5qcwpAQCAtMCwwICsxLDI1MCBAQAor
LyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy
IHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFu
dAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9w
cm9kSW52YXJpYW50ID0gcmVxdWlyZSgnLi9yZWFjdFByb2RJbnZhcmlhbnQnKTsKKwordmFyIEV2
ZW50UGx1Z2luUmVnaXN0cnkgPSByZXF1aXJlKCcuL0V2ZW50UGx1Z2luUmVnaXN0cnknKTsKK3Zh
ciBFdmVudFBsdWdpblV0aWxzID0gcmVxdWlyZSgnLi9FdmVudFBsdWdpblV0aWxzJyk7Cit2YXIg
UmVhY3RFcnJvclV0aWxzID0gcmVxdWlyZSgnLi9SZWFjdEVycm9yVXRpbHMnKTsKKwordmFyIGFj
Y3VtdWxhdGVJbnRvID0gcmVxdWlyZSgnLi9hY2N1bXVsYXRlSW50bycpOwordmFyIGZvckVhY2hB
Y2N1bXVsYXRlZCA9IHJlcXVpcmUoJy4vZm9yRWFjaEFjY3VtdWxhdGVkJyk7Cit2YXIgaW52YXJp
YW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7CisKKy8qKgorICogSW50ZXJuYWwg
c3RvcmUgZm9yIGV2ZW50IGxpc3RlbmVycworICovCit2YXIgbGlzdGVuZXJCYW5rID0ge307CisK
Ky8qKgorICogSW50ZXJuYWwgcXVldWUgb2YgZXZlbnRzIHRoYXQgaGF2ZSBhY2N1bXVsYXRlZCB0
aGVpciBkaXNwYXRjaGVzIGFuZCBhcmUKKyAqIHdhaXRpbmcgdG8gaGF2ZSB0aGVpciBkaXNwYXRj
aGVzIGV4ZWN1dGVkLgorICovCit2YXIgZXZlbnRRdWV1ZSA9IG51bGw7CisKKy8qKgorICogRGlz
cGF0Y2hlcyBhbiBldmVudCBhbmQgcmVsZWFzZXMgaXQgYmFjayBpbnRvIHRoZSBwb29sLCB1bmxl
c3MgcGVyc2lzdGVudC4KKyAqCisgKiBAcGFyYW0gez9vYmplY3R9IGV2ZW50IFN5bnRoZXRpYyBl
dmVudCB0byBiZSBkaXNwYXRjaGVkLgorICogQHBhcmFtIHtib29sZWFufSBzaW11bGF0ZWQgSWYg
dGhlIGV2ZW50IGlzIHNpbXVsYXRlZCAoY2hhbmdlcyBleG4gYmVoYXZpb3IpCisgKiBAcHJpdmF0
ZQorICovCit2YXIgZXhlY3V0ZURpc3BhdGNoZXNBbmRSZWxlYXNlID0gZnVuY3Rpb24gKGV2ZW50
LCBzaW11bGF0ZWQpIHsKKyAgaWYgKGV2ZW50KSB7CisgICAgRXZlbnRQbHVnaW5VdGlscy5leGVj
dXRlRGlzcGF0Y2hlc0luT3JkZXIoZXZlbnQsIHNpbXVsYXRlZCk7CisKKyAgICBpZiAoIWV2ZW50
LmlzUGVyc2lzdGVudCgpKSB7CisgICAgICBldmVudC5jb25zdHJ1Y3Rvci5yZWxlYXNlKGV2ZW50
KTsKKyAgICB9CisgIH0KK307Cit2YXIgZXhlY3V0ZURpc3BhdGNoZXNBbmRSZWxlYXNlU2ltdWxh
dGVkID0gZnVuY3Rpb24gKGUpIHsKKyAgcmV0dXJuIGV4ZWN1dGVEaXNwYXRjaGVzQW5kUmVsZWFz
ZShlLCB0cnVlKTsKK307Cit2YXIgZXhlY3V0ZURpc3BhdGNoZXNBbmRSZWxlYXNlVG9wTGV2ZWwg
PSBmdW5jdGlvbiAoZSkgeworICByZXR1cm4gZXhlY3V0ZURpc3BhdGNoZXNBbmRSZWxlYXNlKGUs
IGZhbHNlKTsKK307CisKK3ZhciBnZXREaWN0aW9uYXJ5S2V5ID0gZnVuY3Rpb24gKGluc3QpIHsK
KyAgLy8gUHJldmVudHMgVjggcGVyZm9ybWFuY2UgaXNzdWU6CisgIC8vIGh0dHBzOi8vZ2l0aHVi
LmNvbS9mYWNlYm9vay9yZWFjdC9wdWxsLzcyMzIKKyAgcmV0dXJuICcuJyArIGluc3QuX3Jvb3RO
b2RlSUQ7Cit9OworCisvKioKKyAqIFRoaXMgaXMgYSB1bmlmaWVkIGludGVyZmFjZSBmb3IgZXZl
bnQgcGx1Z2lucyB0byBiZSBpbnN0YWxsZWQgYW5kIGNvbmZpZ3VyZWQuCisgKgorICogRXZlbnQg
cGx1Z2lucyBjYW4gaW1wbGVtZW50IHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczoKKyAqCisgKiAg
IGBleHRyYWN0RXZlbnRzYCB7ZnVuY3Rpb24oc3RyaW5nLCBET01FdmVudFRhcmdldCwgc3RyaW5n
LCBvYmplY3QpOiAqfQorICogICAgIFJlcXVpcmVkLiBXaGVuIGEgdG9wLWxldmVsIGV2ZW50IGlz
IGZpcmVkLCB0aGlzIG1ldGhvZCBpcyBleHBlY3RlZCB0bworICogICAgIGV4dHJhY3Qgc3ludGhl
dGljIGV2ZW50cyB0aGF0IHdpbGwgaW4gdHVybiBiZSBxdWV1ZWQgYW5kIGRpc3BhdGNoZWQuCisg
KgorICogICBgZXZlbnRUeXBlc2Age29iamVjdH0KKyAqICAgICBPcHRpb25hbCwgcGx1Z2lucyB0
aGF0IGZpcmUgZXZlbnRzIG11c3QgcHVibGlzaCBhIG1hcHBpbmcgb2YgcmVnaXN0cmF0aW9uCisg
KiAgICAgbmFtZXMgdGhhdCBhcmUgdXNlZCB0byByZWdpc3RlciBsaXN0ZW5lcnMuIFZhbHVlcyBv
ZiB0aGlzIG1hcHBpbmcgbXVzdAorICogICAgIGJlIG9iamVjdHMgdGhhdCBjb250YWluIGByZWdp
c3RyYXRpb25OYW1lYCBvciBgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXNgLgorICoKKyAqICAgYGV4
ZWN1dGVEaXNwYXRjaGAge2Z1bmN0aW9uKG9iamVjdCwgZnVuY3Rpb24sIHN0cmluZyl9CisgKiAg
ICAgT3B0aW9uYWwsIGFsbG93cyBwbHVnaW5zIHRvIG92ZXJyaWRlIGhvdyBhbiBldmVudCBnZXRz
IGRpc3BhdGNoZWQuIEJ5CisgKiAgICAgZGVmYXVsdCwgdGhlIGxpc3RlbmVyIGlzIHNpbXBseSBp
bnZva2VkLgorICoKKyAqIEVhY2ggcGx1Z2luIHRoYXQgaXMgaW5qZWN0ZWQgaW50byBgRXZlbnRz
UGx1Z2luSHViYCBpcyBpbW1lZGlhdGVseSBvcGVyYWJsZS4KKyAqCisgKiBAcHVibGljCisgKi8K
K3ZhciBFdmVudFBsdWdpbkh1YiA9IHsKKworICAvKioKKyAgICogTWV0aG9kcyBmb3IgaW5qZWN0
aW5nIGRlcGVuZGVuY2llcy4KKyAgICovCisgIGluamVjdGlvbjogeworCisgICAgLyoqCisgICAg
ICogQHBhcmFtIHthcnJheX0gSW5qZWN0ZWRFdmVudFBsdWdpbk9yZGVyCisgICAgICogQHB1Ymxp
YworICAgICAqLworICAgIGluamVjdEV2ZW50UGx1Z2luT3JkZXI6IEV2ZW50UGx1Z2luUmVnaXN0
cnkuaW5qZWN0RXZlbnRQbHVnaW5PcmRlciwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7b2Jq
ZWN0fSBpbmplY3RlZE5hbWVzVG9QbHVnaW5zIE1hcCBmcm9tIG5hbWVzIHRvIHBsdWdpbiBtb2R1
bGVzLgorICAgICAqLworICAgIGluamVjdEV2ZW50UGx1Z2luc0J5TmFtZTogRXZlbnRQbHVnaW5S
ZWdpc3RyeS5pbmplY3RFdmVudFBsdWdpbnNCeU5hbWUKKworICB9LAorCisgIC8qKgorICAgKiBT
dG9yZXMgYGxpc3RlbmVyYCBhdCBgbGlzdGVuZXJCYW5rW3JlZ2lzdHJhdGlvbk5hbWVdW2tleV1g
LiBJcyBpZGVtcG90ZW50LgorICAgKgorICAgKiBAcGFyYW0ge29iamVjdH0gaW5zdCBUaGUgaW5z
dGFuY2UsIHdoaWNoIGlzIHRoZSBzb3VyY2Ugb2YgZXZlbnRzLgorICAgKiBAcGFyYW0ge3N0cmlu
Z30gcmVnaXN0cmF0aW9uTmFtZSBOYW1lIG9mIGxpc3RlbmVyIChlLmcuIGBvbkNsaWNrYCkuCisg
ICAqIEBwYXJhbSB7ZnVuY3Rpb259IGxpc3RlbmVyIFRoZSBjYWxsYmFjayB0byBzdG9yZS4KKyAg
ICovCisgIHB1dExpc3RlbmVyOiBmdW5jdGlvbiAoaW5zdCwgcmVnaXN0cmF0aW9uTmFtZSwgbGlz
dGVuZXIpIHsKKyAgICAhKHR5cGVvZiBsaXN0ZW5lciA9PT0gJ2Z1bmN0aW9uJykgPyBwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRXhwZWN0
ZWQgJXMgbGlzdGVuZXIgdG8gYmUgYSBmdW5jdGlvbiwgaW5zdGVhZCBnb3QgdHlwZSAlcycsIHJl
Z2lzdHJhdGlvbk5hbWUsIHR5cGVvZiBsaXN0ZW5lcikgOiBfcHJvZEludmFyaWFudCgnOTQnLCBy
ZWdpc3RyYXRpb25OYW1lLCB0eXBlb2YgbGlzdGVuZXIpIDogdm9pZCAwOworCisgICAgdmFyIGtl
eSA9IGdldERpY3Rpb25hcnlLZXkoaW5zdCk7CisgICAgdmFyIGJhbmtGb3JSZWdpc3RyYXRpb25O
YW1lID0gbGlzdGVuZXJCYW5rW3JlZ2lzdHJhdGlvbk5hbWVdIHx8IChsaXN0ZW5lckJhbmtbcmVn
aXN0cmF0aW9uTmFtZV0gPSB7fSk7CisgICAgYmFua0ZvclJlZ2lzdHJhdGlvbk5hbWVba2V5XSA9
IGxpc3RlbmVyOworCisgICAgdmFyIFBsdWdpbk1vZHVsZSA9IEV2ZW50UGx1Z2luUmVnaXN0cnku
cmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbcmVnaXN0cmF0aW9uTmFtZV07CisgICAgaWYgKFBsdWdp
bk1vZHVsZSAmJiBQbHVnaW5Nb2R1bGUuZGlkUHV0TGlzdGVuZXIpIHsKKyAgICAgIFBsdWdpbk1v
ZHVsZS5kaWRQdXRMaXN0ZW5lcihpbnN0LCByZWdpc3RyYXRpb25OYW1lLCBsaXN0ZW5lcik7Cisg
ICAgfQorICB9LAorCisgIC8qKgorICAgKiBAcGFyYW0ge29iamVjdH0gaW5zdCBUaGUgaW5zdGFu
Y2UsIHdoaWNoIGlzIHRoZSBzb3VyY2Ugb2YgZXZlbnRzLgorICAgKiBAcGFyYW0ge3N0cmluZ30g
cmVnaXN0cmF0aW9uTmFtZSBOYW1lIG9mIGxpc3RlbmVyIChlLmcuIGBvbkNsaWNrYCkuCisgICAq
IEByZXR1cm4gez9mdW5jdGlvbn0gVGhlIHN0b3JlZCBjYWxsYmFjay4KKyAgICovCisgIGdldExp
c3RlbmVyOiBmdW5jdGlvbiAoaW5zdCwgcmVnaXN0cmF0aW9uTmFtZSkgeworICAgIHZhciBiYW5r
Rm9yUmVnaXN0cmF0aW9uTmFtZSA9IGxpc3RlbmVyQmFua1tyZWdpc3RyYXRpb25OYW1lXTsKKyAg
ICB2YXIga2V5ID0gZ2V0RGljdGlvbmFyeUtleShpbnN0KTsKKyAgICByZXR1cm4gYmFua0ZvclJl
Z2lzdHJhdGlvbk5hbWUgJiYgYmFua0ZvclJlZ2lzdHJhdGlvbk5hbWVba2V5XTsKKyAgfSwKKwor
ICAvKioKKyAgICogRGVsZXRlcyBhIGxpc3RlbmVyIGZyb20gdGhlIHJlZ2lzdHJhdGlvbiBiYW5r
LgorICAgKgorICAgKiBAcGFyYW0ge29iamVjdH0gaW5zdCBUaGUgaW5zdGFuY2UsIHdoaWNoIGlz
IHRoZSBzb3VyY2Ugb2YgZXZlbnRzLgorICAgKiBAcGFyYW0ge3N0cmluZ30gcmVnaXN0cmF0aW9u
TmFtZSBOYW1lIG9mIGxpc3RlbmVyIChlLmcuIGBvbkNsaWNrYCkuCisgICAqLworICBkZWxldGVM
aXN0ZW5lcjogZnVuY3Rpb24gKGluc3QsIHJlZ2lzdHJhdGlvbk5hbWUpIHsKKyAgICB2YXIgUGx1
Z2luTW9kdWxlID0gRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1ty
ZWdpc3RyYXRpb25OYW1lXTsKKyAgICBpZiAoUGx1Z2luTW9kdWxlICYmIFBsdWdpbk1vZHVsZS53
aWxsRGVsZXRlTGlzdGVuZXIpIHsKKyAgICAgIFBsdWdpbk1vZHVsZS53aWxsRGVsZXRlTGlzdGVu
ZXIoaW5zdCwgcmVnaXN0cmF0aW9uTmFtZSk7CisgICAgfQorCisgICAgdmFyIGJhbmtGb3JSZWdp
c3RyYXRpb25OYW1lID0gbGlzdGVuZXJCYW5rW3JlZ2lzdHJhdGlvbk5hbWVdOworICAgIC8vIFRP
RE86IFRoaXMgc2hvdWxkIG5ldmVyIGJlIG51bGwgLS0gd2hlbiBpcyBpdD8KKyAgICBpZiAoYmFu
a0ZvclJlZ2lzdHJhdGlvbk5hbWUpIHsKKyAgICAgIHZhciBrZXkgPSBnZXREaWN0aW9uYXJ5S2V5
KGluc3QpOworICAgICAgZGVsZXRlIGJhbmtGb3JSZWdpc3RyYXRpb25OYW1lW2tleV07CisgICAg
fQorICB9LAorCisgIC8qKgorICAgKiBEZWxldGVzIGFsbCBsaXN0ZW5lcnMgZm9yIHRoZSBET00g
ZWxlbWVudCB3aXRoIHRoZSBzdXBwbGllZCBJRC4KKyAgICoKKyAgICogQHBhcmFtIHtvYmplY3R9
IGluc3QgVGhlIGluc3RhbmNlLCB3aGljaCBpcyB0aGUgc291cmNlIG9mIGV2ZW50cy4KKyAgICov
CisgIGRlbGV0ZUFsbExpc3RlbmVyczogZnVuY3Rpb24gKGluc3QpIHsKKyAgICB2YXIga2V5ID0g
Z2V0RGljdGlvbmFyeUtleShpbnN0KTsKKyAgICBmb3IgKHZhciByZWdpc3RyYXRpb25OYW1lIGlu
IGxpc3RlbmVyQmFuaykgeworICAgICAgaWYgKCFsaXN0ZW5lckJhbmsuaGFzT3duUHJvcGVydHko
cmVnaXN0cmF0aW9uTmFtZSkpIHsKKyAgICAgICAgY29udGludWU7CisgICAgICB9CisKKyAgICAg
IGlmICghbGlzdGVuZXJCYW5rW3JlZ2lzdHJhdGlvbk5hbWVdW2tleV0pIHsKKyAgICAgICAgY29u
dGludWU7CisgICAgICB9CisKKyAgICAgIHZhciBQbHVnaW5Nb2R1bGUgPSBFdmVudFBsdWdpblJl
Z2lzdHJ5LnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW3JlZ2lzdHJhdGlvbk5hbWVdOworICAgICAg
aWYgKFBsdWdpbk1vZHVsZSAmJiBQbHVnaW5Nb2R1bGUud2lsbERlbGV0ZUxpc3RlbmVyKSB7Cisg
ICAgICAgIFBsdWdpbk1vZHVsZS53aWxsRGVsZXRlTGlzdGVuZXIoaW5zdCwgcmVnaXN0cmF0aW9u
TmFtZSk7CisgICAgICB9CisKKyAgICAgIGRlbGV0ZSBsaXN0ZW5lckJhbmtbcmVnaXN0cmF0aW9u
TmFtZV1ba2V5XTsKKyAgICB9CisgIH0sCisKKyAgLyoqCisgICAqIEFsbG93cyByZWdpc3RlcmVk
IHBsdWdpbnMgYW4gb3Bwb3J0dW5pdHkgdG8gZXh0cmFjdCBldmVudHMgZnJvbSB0b3AtbGV2ZWwK
KyAgICogbmF0aXZlIGJyb3dzZXIgZXZlbnRzLgorICAgKgorICAgKiBAcmV0dXJuIHsqfSBBbiBh
Y2N1bXVsYXRpb24gb2Ygc3ludGhldGljIGV2ZW50cy4KKyAgICogQGludGVybmFsCisgICAqLwor
ICBleHRyYWN0RXZlbnRzOiBmdW5jdGlvbiAodG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRp
dmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHsKKyAgICB2YXIgZXZlbnRzOworICAgIHZhciBw
bHVnaW5zID0gRXZlbnRQbHVnaW5SZWdpc3RyeS5wbHVnaW5zOworICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgcGx1Z2lucy5sZW5ndGg7IGkrKykgeworICAgICAgLy8gTm90IGV2ZXJ5IHBsdWdpbiBp
biB0aGUgb3JkZXJpbmcgbWF5IGJlIGxvYWRlZCBhdCBydW50aW1lLgorICAgICAgdmFyIHBvc3Np
YmxlUGx1Z2luID0gcGx1Z2luc1tpXTsKKyAgICAgIGlmIChwb3NzaWJsZVBsdWdpbikgeworICAg
ICAgICB2YXIgZXh0cmFjdGVkRXZlbnRzID0gcG9zc2libGVQbHVnaW4uZXh0cmFjdEV2ZW50cyh0
b3BMZXZlbFR5cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7
CisgICAgICAgIGlmIChleHRyYWN0ZWRFdmVudHMpIHsKKyAgICAgICAgICBldmVudHMgPSBhY2N1
bXVsYXRlSW50byhldmVudHMsIGV4dHJhY3RlZEV2ZW50cyk7CisgICAgICAgIH0KKyAgICAgIH0K
KyAgICB9CisgICAgcmV0dXJuIGV2ZW50czsKKyAgfSwKKworICAvKioKKyAgICogRW5xdWV1ZXMg
YSBzeW50aGV0aWMgZXZlbnQgdGhhdCBzaG91bGQgYmUgZGlzcGF0Y2hlZCB3aGVuCisgICAqIGBw
cm9jZXNzRXZlbnRRdWV1ZWAgaXMgaW52b2tlZC4KKyAgICoKKyAgICogQHBhcmFtIHsqfSBldmVu
dHMgQW4gYWNjdW11bGF0aW9uIG9mIHN5bnRoZXRpYyBldmVudHMuCisgICAqIEBpbnRlcm5hbAor
ICAgKi8KKyAgZW5xdWV1ZUV2ZW50czogZnVuY3Rpb24gKGV2ZW50cykgeworICAgIGlmIChldmVu
dHMpIHsKKyAgICAgIGV2ZW50UXVldWUgPSBhY2N1bXVsYXRlSW50byhldmVudFF1ZXVlLCBldmVu
dHMpOworICAgIH0KKyAgfSwKKworICAvKioKKyAgICogRGlzcGF0Y2hlcyBhbGwgc3ludGhldGlj
IGV2ZW50cyBvbiB0aGUgZXZlbnQgcXVldWUuCisgICAqCisgICAqIEBpbnRlcm5hbAorICAgKi8K
KyAgcHJvY2Vzc0V2ZW50UXVldWU6IGZ1bmN0aW9uIChzaW11bGF0ZWQpIHsKKyAgICAvLyBTZXQg
YGV2ZW50UXVldWVgIHRvIG51bGwgYmVmb3JlIHByb2Nlc3NpbmcgaXQgc28gdGhhdCB3ZSBjYW4g
dGVsbCBpZiBtb3JlCisgICAgLy8gZXZlbnRzIGdldCBlbnF1ZXVlZCB3aGlsZSBwcm9jZXNzaW5n
LgorICAgIHZhciBwcm9jZXNzaW5nRXZlbnRRdWV1ZSA9IGV2ZW50UXVldWU7CisgICAgZXZlbnRR
dWV1ZSA9IG51bGw7CisgICAgaWYgKHNpbXVsYXRlZCkgeworICAgICAgZm9yRWFjaEFjY3VtdWxh
dGVkKHByb2Nlc3NpbmdFdmVudFF1ZXVlLCBleGVjdXRlRGlzcGF0Y2hlc0FuZFJlbGVhc2VTaW11
bGF0ZWQpOworICAgIH0gZWxzZSB7CisgICAgICBmb3JFYWNoQWNjdW11bGF0ZWQocHJvY2Vzc2lu
Z0V2ZW50UXVldWUsIGV4ZWN1dGVEaXNwYXRjaGVzQW5kUmVsZWFzZVRvcExldmVsKTsKKyAgICB9
CisgICAgISFldmVudFF1ZXVlID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
JyA/IGludmFyaWFudChmYWxzZSwgJ3Byb2Nlc3NFdmVudFF1ZXVlKCk6IEFkZGl0aW9uYWwgZXZl
bnRzIHdlcmUgZW5xdWV1ZWQgd2hpbGUgcHJvY2Vzc2luZyBhbiBldmVudCBxdWV1ZS4gU3VwcG9y
dCBmb3IgdGhpcyBoYXMgbm90IHlldCBiZWVuIGltcGxlbWVudGVkLicpIDogX3Byb2RJbnZhcmlh
bnQoJzk1JykgOiB2b2lkIDA7CisgICAgLy8gVGhpcyB3b3VsZCBiZSBhIGdvb2QgdGltZSB0byBy
ZXRocm93IGlmIGFueSBvZiB0aGUgZXZlbnQgaGFuZGxlcnMgdGhyZXcuCisgICAgUmVhY3RFcnJv
clV0aWxzLnJldGhyb3dDYXVnaHRFcnJvcigpOworICB9LAorCisgIC8qKgorICAgKiBUaGVzZSBh
cmUgbmVlZGVkIGZvciB0ZXN0cyBvbmx5LiBEbyBub3QgdXNlIQorICAgKi8KKyAgX19wdXJnZTog
ZnVuY3Rpb24gKCkgeworICAgIGxpc3RlbmVyQmFuayA9IHt9OworICB9LAorCisgIF9fZ2V0TGlz
dGVuZXJCYW5rOiBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIGxpc3RlbmVyQmFuazsKKyAgfQor
Cit9OworCittb2R1bGUuZXhwb3J0cyA9IEV2ZW50UGx1Z2luSHViOwpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9y
ZWFjdC1kb20vbGliL0V2ZW50UGx1Z2luUmVnaXN0cnkuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9u
b2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9FdmVudFBsdWdpblJlZ2lzdHJ5LmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjM3OGRkZDRiMDdlNWI1NTVlOGQxMGI0NjIwOWIyNGVhNTU2NGJmNTQKLS0tIC9kZXYvbnVs
bAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9FdmVu
dFBsdWdpblJlZ2lzdHJ5LmpzCkBAIC0wLDAgKzEsMjU0IEBACisvKioKKyAqIENvcHlyaWdodCAy
MDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNl
bnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBv
ZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmln
aHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9y
eS4KKyAqCisgKiAKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBfcHJvZEludmFyaWFudCA9
IHJlcXVpcmUoJy4vcmVhY3RQcm9kSW52YXJpYW50Jyk7CisKK3ZhciBpbnZhcmlhbnQgPSByZXF1
aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTsKKworLyoqCisgKiBJbmplY3RhYmxlIG9yZGVyaW5n
IG9mIGV2ZW50IHBsdWdpbnMuCisgKi8KK3ZhciBldmVudFBsdWdpbk9yZGVyID0gbnVsbDsKKwor
LyoqCisgKiBJbmplY3RhYmxlIG1hcHBpbmcgZnJvbSBuYW1lcyB0byBldmVudCBwbHVnaW4gbW9k
dWxlcy4KKyAqLwordmFyIG5hbWVzVG9QbHVnaW5zID0ge307CisKKy8qKgorICogUmVjb21wdXRl
cyB0aGUgcGx1Z2luIGxpc3QgdXNpbmcgdGhlIGluamVjdGVkIHBsdWdpbnMgYW5kIHBsdWdpbiBv
cmRlcmluZy4KKyAqCisgKiBAcHJpdmF0ZQorICovCitmdW5jdGlvbiByZWNvbXB1dGVQbHVnaW5P
cmRlcmluZygpIHsKKyAgaWYgKCFldmVudFBsdWdpbk9yZGVyKSB7CisgICAgLy8gV2FpdCB1bnRp
bCBhbiBgZXZlbnRQbHVnaW5PcmRlcmAgaXMgaW5qZWN0ZWQuCisgICAgcmV0dXJuOworICB9Cisg
IGZvciAodmFyIHBsdWdpbk5hbWUgaW4gbmFtZXNUb1BsdWdpbnMpIHsKKyAgICB2YXIgcGx1Z2lu
TW9kdWxlID0gbmFtZXNUb1BsdWdpbnNbcGx1Z2luTmFtZV07CisgICAgdmFyIHBsdWdpbkluZGV4
ID0gZXZlbnRQbHVnaW5PcmRlci5pbmRleE9mKHBsdWdpbk5hbWUpOworICAgICEocGx1Z2luSW5k
ZXggPiAtMSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJp
YW50KGZhbHNlLCAnRXZlbnRQbHVnaW5SZWdpc3RyeTogQ2Fubm90IGluamVjdCBldmVudCBwbHVn
aW5zIHRoYXQgZG8gbm90IGV4aXN0IGluIHRoZSBwbHVnaW4gb3JkZXJpbmcsIGAlc2AuJywgcGx1
Z2luTmFtZSkgOiBfcHJvZEludmFyaWFudCgnOTYnLCBwbHVnaW5OYW1lKSA6IHZvaWQgMDsKKyAg
ICBpZiAoRXZlbnRQbHVnaW5SZWdpc3RyeS5wbHVnaW5zW3BsdWdpbkluZGV4XSkgeworICAgICAg
Y29udGludWU7CisgICAgfQorICAgICFwbHVnaW5Nb2R1bGUuZXh0cmFjdEV2ZW50cyA/IHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdFdmVu
dFBsdWdpblJlZ2lzdHJ5OiBFdmVudCBwbHVnaW5zIG11c3QgaW1wbGVtZW50IGFuIGBleHRyYWN0
RXZlbnRzYCBtZXRob2QsIGJ1dCBgJXNgIGRvZXMgbm90LicsIHBsdWdpbk5hbWUpIDogX3Byb2RJ
bnZhcmlhbnQoJzk3JywgcGx1Z2luTmFtZSkgOiB2b2lkIDA7CisgICAgRXZlbnRQbHVnaW5SZWdp
c3RyeS5wbHVnaW5zW3BsdWdpbkluZGV4XSA9IHBsdWdpbk1vZHVsZTsKKyAgICB2YXIgcHVibGlz
aGVkRXZlbnRzID0gcGx1Z2luTW9kdWxlLmV2ZW50VHlwZXM7CisgICAgZm9yICh2YXIgZXZlbnRO
YW1lIGluIHB1Ymxpc2hlZEV2ZW50cykgeworICAgICAgIXB1Ymxpc2hFdmVudEZvclBsdWdpbihw
dWJsaXNoZWRFdmVudHNbZXZlbnROYW1lXSwgcGx1Z2luTW9kdWxlLCBldmVudE5hbWUpID8gcHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0V2
ZW50UGx1Z2luUmVnaXN0cnk6IEZhaWxlZCB0byBwdWJsaXNoIGV2ZW50IGAlc2AgZm9yIHBsdWdp
biBgJXNgLicsIGV2ZW50TmFtZSwgcGx1Z2luTmFtZSkgOiBfcHJvZEludmFyaWFudCgnOTgnLCBl
dmVudE5hbWUsIHBsdWdpbk5hbWUpIDogdm9pZCAwOworICAgIH0KKyAgfQorfQorCisvKioKKyAq
IFB1Ymxpc2hlcyBhbiBldmVudCBzbyB0aGF0IGl0IGNhbiBiZSBkaXNwYXRjaGVkIGJ5IHRoZSBz
dXBwbGllZCBwbHVnaW4uCisgKgorICogQHBhcmFtIHtvYmplY3R9IGRpc3BhdGNoQ29uZmlnIERp
c3BhdGNoIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBldmVudC4KKyAqIEBwYXJhbSB7b2JqZWN0fSBQ
bHVnaW5Nb2R1bGUgUGx1Z2luIHB1Ymxpc2hpbmcgdGhlIGV2ZW50LgorICogQHJldHVybiB7Ym9v
bGVhbn0gVHJ1ZSBpZiB0aGUgZXZlbnQgd2FzIHN1Y2Nlc3NmdWxseSBwdWJsaXNoZWQuCisgKiBA
cHJpdmF0ZQorICovCitmdW5jdGlvbiBwdWJsaXNoRXZlbnRGb3JQbHVnaW4oZGlzcGF0Y2hDb25m
aWcsIHBsdWdpbk1vZHVsZSwgZXZlbnROYW1lKSB7CisgICEhRXZlbnRQbHVnaW5SZWdpc3RyeS5l
dmVudE5hbWVEaXNwYXRjaENvbmZpZ3MuaGFzT3duUHJvcGVydHkoZXZlbnROYW1lKSA/IHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdFdmVu
dFBsdWdpbkh1YjogTW9yZSB0aGFuIG9uZSBwbHVnaW4gYXR0ZW1wdGVkIHRvIHB1Ymxpc2ggdGhl
IHNhbWUgZXZlbnQgbmFtZSwgYCVzYC4nLCBldmVudE5hbWUpIDogX3Byb2RJbnZhcmlhbnQoJzk5
JywgZXZlbnROYW1lKSA6IHZvaWQgMDsKKyAgRXZlbnRQbHVnaW5SZWdpc3RyeS5ldmVudE5hbWVE
aXNwYXRjaENvbmZpZ3NbZXZlbnROYW1lXSA9IGRpc3BhdGNoQ29uZmlnOworCisgIHZhciBwaGFz
ZWRSZWdpc3RyYXRpb25OYW1lcyA9IGRpc3BhdGNoQ29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5h
bWVzOworICBpZiAocGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMpIHsKKyAgICBmb3IgKHZhciBwaGFz
ZU5hbWUgaW4gcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMpIHsKKyAgICAgIGlmIChwaGFzZWRSZWdp
c3RyYXRpb25OYW1lcy5oYXNPd25Qcm9wZXJ0eShwaGFzZU5hbWUpKSB7CisgICAgICAgIHZhciBw
aGFzZWRSZWdpc3RyYXRpb25OYW1lID0gcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXNbcGhhc2VOYW1l
XTsKKyAgICAgICAgcHVibGlzaFJlZ2lzdHJhdGlvbk5hbWUocGhhc2VkUmVnaXN0cmF0aW9uTmFt
ZSwgcGx1Z2luTW9kdWxlLCBldmVudE5hbWUpOworICAgICAgfQorICAgIH0KKyAgICByZXR1cm4g
dHJ1ZTsKKyAgfSBlbHNlIGlmIChkaXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1lKSB7Cisg
ICAgcHVibGlzaFJlZ2lzdHJhdGlvbk5hbWUoZGlzcGF0Y2hDb25maWcucmVnaXN0cmF0aW9uTmFt
ZSwgcGx1Z2luTW9kdWxlLCBldmVudE5hbWUpOworICAgIHJldHVybiB0cnVlOworICB9CisgIHJl
dHVybiBmYWxzZTsKK30KKworLyoqCisgKiBQdWJsaXNoZXMgYSByZWdpc3RyYXRpb24gbmFtZSB0
aGF0IGlzIHVzZWQgdG8gaWRlbnRpZnkgZGlzcGF0Y2hlZCBldmVudHMgYW5kCisgKiBjYW4gYmUg
dXNlZCB3aXRoIGBFdmVudFBsdWdpbkh1Yi5wdXRMaXN0ZW5lcmAgdG8gcmVnaXN0ZXIgbGlzdGVu
ZXJzLgorICoKKyAqIEBwYXJhbSB7c3RyaW5nfSByZWdpc3RyYXRpb25OYW1lIFJlZ2lzdHJhdGlv
biBuYW1lIHRvIGFkZC4KKyAqIEBwYXJhbSB7b2JqZWN0fSBQbHVnaW5Nb2R1bGUgUGx1Z2luIHB1
Ymxpc2hpbmcgdGhlIGV2ZW50LgorICogQHByaXZhdGUKKyAqLworZnVuY3Rpb24gcHVibGlzaFJl
Z2lzdHJhdGlvbk5hbWUocmVnaXN0cmF0aW9uTmFtZSwgcGx1Z2luTW9kdWxlLCBldmVudE5hbWUp
IHsKKyAgISFFdmVudFBsdWdpblJlZ2lzdHJ5LnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW3JlZ2lz
dHJhdGlvbk5hbWVdID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGlu
dmFyaWFudChmYWxzZSwgJ0V2ZW50UGx1Z2luSHViOiBNb3JlIHRoYW4gb25lIHBsdWdpbiBhdHRl
bXB0ZWQgdG8gcHVibGlzaCB0aGUgc2FtZSByZWdpc3RyYXRpb24gbmFtZSwgYCVzYC4nLCByZWdp
c3RyYXRpb25OYW1lKSA6IF9wcm9kSW52YXJpYW50KCcxMDAnLCByZWdpc3RyYXRpb25OYW1lKSA6
IHZvaWQgMDsKKyAgRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1ty
ZWdpc3RyYXRpb25OYW1lXSA9IHBsdWdpbk1vZHVsZTsKKyAgRXZlbnRQbHVnaW5SZWdpc3RyeS5y
ZWdpc3RyYXRpb25OYW1lRGVwZW5kZW5jaWVzW3JlZ2lzdHJhdGlvbk5hbWVdID0gcGx1Z2luTW9k
dWxlLmV2ZW50VHlwZXNbZXZlbnROYW1lXS5kZXBlbmRlbmNpZXM7CisKKyAgaWYgKHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICB2YXIgbG93ZXJDYXNlZE5hbWUg
PSByZWdpc3RyYXRpb25OYW1lLnRvTG93ZXJDYXNlKCk7CisgICAgRXZlbnRQbHVnaW5SZWdpc3Ry
eS5wb3NzaWJsZVJlZ2lzdHJhdGlvbk5hbWVzW2xvd2VyQ2FzZWROYW1lXSA9IHJlZ2lzdHJhdGlv
bk5hbWU7CisKKyAgICBpZiAocmVnaXN0cmF0aW9uTmFtZSA9PT0gJ29uRG91YmxlQ2xpY2snKSB7
CisgICAgICBFdmVudFBsdWdpblJlZ2lzdHJ5LnBvc3NpYmxlUmVnaXN0cmF0aW9uTmFtZXMub25k
YmxjbGljayA9IHJlZ2lzdHJhdGlvbk5hbWU7CisgICAgfQorICB9Cit9CisKKy8qKgorICogUmVn
aXN0ZXJzIHBsdWdpbnMgc28gdGhhdCB0aGV5IGNhbiBleHRyYWN0IGFuZCBkaXNwYXRjaCBldmVu
dHMuCisgKgorICogQHNlZSB7RXZlbnRQbHVnaW5IdWJ9CisgKi8KK3ZhciBFdmVudFBsdWdpblJl
Z2lzdHJ5ID0geworCisgIC8qKgorICAgKiBPcmRlcmVkIGxpc3Qgb2YgaW5qZWN0ZWQgcGx1Z2lu
cy4KKyAgICovCisgIHBsdWdpbnM6IFtdLAorCisgIC8qKgorICAgKiBNYXBwaW5nIGZyb20gZXZl
bnQgbmFtZSB0byBkaXNwYXRjaCBjb25maWcKKyAgICovCisgIGV2ZW50TmFtZURpc3BhdGNoQ29u
Zmlnczoge30sCisKKyAgLyoqCisgICAqIE1hcHBpbmcgZnJvbSByZWdpc3RyYXRpb24gbmFtZSB0
byBwbHVnaW4gbW9kdWxlCisgICAqLworICByZWdpc3RyYXRpb25OYW1lTW9kdWxlczoge30sCisK
KyAgLyoqCisgICAqIE1hcHBpbmcgZnJvbSByZWdpc3RyYXRpb24gbmFtZSB0byBldmVudCBuYW1l
CisgICAqLworICByZWdpc3RyYXRpb25OYW1lRGVwZW5kZW5jaWVzOiB7fSwKKworICAvKioKKyAg
ICogTWFwcGluZyBmcm9tIGxvd2VyY2FzZSByZWdpc3RyYXRpb24gbmFtZXMgdG8gdGhlIHByb3Bl
cmx5IGNhc2VkIHZlcnNpb24sCisgICAqIHVzZWQgdG8gd2FybiBpbiB0aGUgY2FzZSBvZiBtaXNz
aW5nIGV2ZW50IGhhbmRsZXJzLiBBdmFpbGFibGUKKyAgICogb25seSBpbiBfX0RFVl9fLgorICAg
KiBAdHlwZSB7T2JqZWN0fQorICAgKi8KKyAgcG9zc2libGVSZWdpc3RyYXRpb25OYW1lczogcHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHt9IDogbnVsbCwKKyAgLy8gVHJ1
c3QgdGhlIGRldmVsb3BlciB0byBvbmx5IHVzZSBwb3NzaWJsZVJlZ2lzdHJhdGlvbk5hbWVzIGlu
IF9fREVWX18KKworICAvKioKKyAgICogSW5qZWN0cyBhbiBvcmRlcmluZyBvZiBwbHVnaW5zIChi
eSBwbHVnaW4gbmFtZSkuIFRoaXMgYWxsb3dzIHRoZSBvcmRlcmluZworICAgKiB0byBiZSBkZWNv
dXBsZWQgZnJvbSBpbmplY3Rpb24gb2YgdGhlIGFjdHVhbCBwbHVnaW5zIHNvIHRoYXQgb3JkZXJp
bmcgaXMKKyAgICogYWx3YXlzIGRldGVybWluaXN0aWMgcmVnYXJkbGVzcyBvZiBwYWNrYWdpbmcs
IG9uLXRoZS1mbHkgaW5qZWN0aW9uLCBldGMuCisgICAqCisgICAqIEBwYXJhbSB7YXJyYXl9IElu
amVjdGVkRXZlbnRQbHVnaW5PcmRlcgorICAgKiBAaW50ZXJuYWwKKyAgICogQHNlZSB7RXZlbnRQ
bHVnaW5IdWIuaW5qZWN0aW9uLmluamVjdEV2ZW50UGx1Z2luT3JkZXJ9CisgICAqLworICBpbmpl
Y3RFdmVudFBsdWdpbk9yZGVyOiBmdW5jdGlvbiAoaW5qZWN0ZWRFdmVudFBsdWdpbk9yZGVyKSB7
CisgICAgISFldmVudFBsdWdpbk9yZGVyID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0V2ZW50UGx1Z2luUmVnaXN0cnk6IENhbm5vdCBp
bmplY3QgZXZlbnQgcGx1Z2luIG9yZGVyaW5nIG1vcmUgdGhhbiBvbmNlLiBZb3UgYXJlIGxpa2Vs
eSB0cnlpbmcgdG8gbG9hZCBtb3JlIHRoYW4gb25lIGNvcHkgb2YgUmVhY3QuJykgOiBfcHJvZElu
dmFyaWFudCgnMTAxJykgOiB2b2lkIDA7CisgICAgLy8gQ2xvbmUgdGhlIG9yZGVyaW5nIHNvIGl0
IGNhbm5vdCBiZSBkeW5hbWljYWxseSBtdXRhdGVkLgorICAgIGV2ZW50UGx1Z2luT3JkZXIgPSBB
cnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChpbmplY3RlZEV2ZW50UGx1Z2luT3JkZXIpOworICAg
IHJlY29tcHV0ZVBsdWdpbk9yZGVyaW5nKCk7CisgIH0sCisKKyAgLyoqCisgICAqIEluamVjdHMg
cGx1Z2lucyB0byBiZSB1c2VkIGJ5IGBFdmVudFBsdWdpbkh1YmAuIFRoZSBwbHVnaW4gbmFtZXMg
bXVzdCBiZQorICAgKiBpbiB0aGUgb3JkZXJpbmcgaW5qZWN0ZWQgYnkgYGluamVjdEV2ZW50UGx1
Z2luT3JkZXJgLgorICAgKgorICAgKiBQbHVnaW5zIGNhbiBiZSBpbmplY3RlZCBhcyBwYXJ0IG9m
IHBhZ2UgaW5pdGlhbGl6YXRpb24gb3Igb24tdGhlLWZseS4KKyAgICoKKyAgICogQHBhcmFtIHtv
YmplY3R9IGluamVjdGVkTmFtZXNUb1BsdWdpbnMgTWFwIGZyb20gbmFtZXMgdG8gcGx1Z2luIG1v
ZHVsZXMuCisgICAqIEBpbnRlcm5hbAorICAgKiBAc2VlIHtFdmVudFBsdWdpbkh1Yi5pbmplY3Rp
b24uaW5qZWN0RXZlbnRQbHVnaW5zQnlOYW1lfQorICAgKi8KKyAgaW5qZWN0RXZlbnRQbHVnaW5z
QnlOYW1lOiBmdW5jdGlvbiAoaW5qZWN0ZWROYW1lc1RvUGx1Z2lucykgeworICAgIHZhciBpc09y
ZGVyaW5nRGlydHkgPSBmYWxzZTsKKyAgICBmb3IgKHZhciBwbHVnaW5OYW1lIGluIGluamVjdGVk
TmFtZXNUb1BsdWdpbnMpIHsKKyAgICAgIGlmICghaW5qZWN0ZWROYW1lc1RvUGx1Z2lucy5oYXNP
d25Qcm9wZXJ0eShwbHVnaW5OYW1lKSkgeworICAgICAgICBjb250aW51ZTsKKyAgICAgIH0KKyAg
ICAgIHZhciBwbHVnaW5Nb2R1bGUgPSBpbmplY3RlZE5hbWVzVG9QbHVnaW5zW3BsdWdpbk5hbWVd
OworICAgICAgaWYgKCFuYW1lc1RvUGx1Z2lucy5oYXNPd25Qcm9wZXJ0eShwbHVnaW5OYW1lKSB8
fCBuYW1lc1RvUGx1Z2luc1twbHVnaW5OYW1lXSAhPT0gcGx1Z2luTW9kdWxlKSB7CisgICAgICAg
ICEhbmFtZXNUb1BsdWdpbnNbcGx1Z2luTmFtZV0gPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0g
J3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRXZlbnRQbHVnaW5SZWdpc3RyeTogQ2Fu
bm90IGluamVjdCB0d28gZGlmZmVyZW50IGV2ZW50IHBsdWdpbnMgdXNpbmcgdGhlIHNhbWUgbmFt
ZSwgYCVzYC4nLCBwbHVnaW5OYW1lKSA6IF9wcm9kSW52YXJpYW50KCcxMDInLCBwbHVnaW5OYW1l
KSA6IHZvaWQgMDsKKyAgICAgICAgbmFtZXNUb1BsdWdpbnNbcGx1Z2luTmFtZV0gPSBwbHVnaW5N
b2R1bGU7CisgICAgICAgIGlzT3JkZXJpbmdEaXJ0eSA9IHRydWU7CisgICAgICB9CisgICAgfQor
ICAgIGlmIChpc09yZGVyaW5nRGlydHkpIHsKKyAgICAgIHJlY29tcHV0ZVBsdWdpbk9yZGVyaW5n
KCk7CisgICAgfQorICB9LAorCisgIC8qKgorICAgKiBMb29rcyB1cCB0aGUgcGx1Z2luIGZvciB0
aGUgc3VwcGxpZWQgZXZlbnQuCisgICAqCisgICAqIEBwYXJhbSB7b2JqZWN0fSBldmVudCBBIHN5
bnRoZXRpYyBldmVudC4KKyAgICogQHJldHVybiB7P29iamVjdH0gVGhlIHBsdWdpbiB0aGF0IGNy
ZWF0ZWQgdGhlIHN1cHBsaWVkIGV2ZW50LgorICAgKiBAaW50ZXJuYWwKKyAgICovCisgIGdldFBs
dWdpbk1vZHVsZUZvckV2ZW50OiBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICB2YXIgZGlzcGF0Y2hD
b25maWcgPSBldmVudC5kaXNwYXRjaENvbmZpZzsKKyAgICBpZiAoZGlzcGF0Y2hDb25maWcucmVn
aXN0cmF0aW9uTmFtZSkgeworICAgICAgcmV0dXJuIEV2ZW50UGx1Z2luUmVnaXN0cnkucmVnaXN0
cmF0aW9uTmFtZU1vZHVsZXNbZGlzcGF0Y2hDb25maWcucmVnaXN0cmF0aW9uTmFtZV0gfHwgbnVs
bDsKKyAgICB9CisgICAgaWYgKGRpc3BhdGNoQ29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVz
ICE9PSB1bmRlZmluZWQpIHsKKyAgICAgIC8vIHB1bGxpbmcgcGhhc2VkUmVnaXN0cmF0aW9uTmFt
ZXMgb3V0IG9mIGRpc3BhdGNoQ29uZmlnIGhlbHBzIEZsb3cgc2VlCisgICAgICAvLyB0aGF0IGl0
IGlzIG5vdCB1bmRlZmluZWQuCisgICAgICB2YXIgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMgPSBk
aXNwYXRjaENvbmZpZy5waGFzZWRSZWdpc3RyYXRpb25OYW1lczsKKworICAgICAgZm9yICh2YXIg
cGhhc2UgaW4gcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMpIHsKKyAgICAgICAgaWYgKCFwaGFzZWRS
ZWdpc3RyYXRpb25OYW1lcy5oYXNPd25Qcm9wZXJ0eShwaGFzZSkpIHsKKyAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgfQorICAgICAgICB2YXIgcGx1Z2luTW9kdWxlID0gRXZlbnRQbHVnaW5S
ZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1twaGFzZWRSZWdpc3RyYXRpb25OYW1lc1tw
aGFzZV1dOworICAgICAgICBpZiAocGx1Z2luTW9kdWxlKSB7CisgICAgICAgICAgcmV0dXJuIHBs
dWdpbk1vZHVsZTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gbnVsbDsK
KyAgfSwKKworICAvKioKKyAgICogRXhwb3NlZCBmb3IgdW5pdCB0ZXN0aW5nLgorICAgKiBAcHJp
dmF0ZQorICAgKi8KKyAgX3Jlc2V0RXZlbnRQbHVnaW5zOiBmdW5jdGlvbiAoKSB7CisgICAgZXZl
bnRQbHVnaW5PcmRlciA9IG51bGw7CisgICAgZm9yICh2YXIgcGx1Z2luTmFtZSBpbiBuYW1lc1Rv
UGx1Z2lucykgeworICAgICAgaWYgKG5hbWVzVG9QbHVnaW5zLmhhc093blByb3BlcnR5KHBsdWdp
bk5hbWUpKSB7CisgICAgICAgIGRlbGV0ZSBuYW1lc1RvUGx1Z2luc1twbHVnaW5OYW1lXTsKKyAg
ICAgIH0KKyAgICB9CisgICAgRXZlbnRQbHVnaW5SZWdpc3RyeS5wbHVnaW5zLmxlbmd0aCA9IDA7
CisKKyAgICB2YXIgZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzID0gRXZlbnRQbHVnaW5SZWdpc3Ry
eS5ldmVudE5hbWVEaXNwYXRjaENvbmZpZ3M7CisgICAgZm9yICh2YXIgZXZlbnROYW1lIGluIGV2
ZW50TmFtZURpc3BhdGNoQ29uZmlncykgeworICAgICAgaWYgKGV2ZW50TmFtZURpc3BhdGNoQ29u
Zmlncy5oYXNPd25Qcm9wZXJ0eShldmVudE5hbWUpKSB7CisgICAgICAgIGRlbGV0ZSBldmVudE5h
bWVEaXNwYXRjaENvbmZpZ3NbZXZlbnROYW1lXTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
cmVnaXN0cmF0aW9uTmFtZU1vZHVsZXMgPSBFdmVudFBsdWdpblJlZ2lzdHJ5LnJlZ2lzdHJhdGlv
bk5hbWVNb2R1bGVzOworICAgIGZvciAodmFyIHJlZ2lzdHJhdGlvbk5hbWUgaW4gcmVnaXN0cmF0
aW9uTmFtZU1vZHVsZXMpIHsKKyAgICAgIGlmIChyZWdpc3RyYXRpb25OYW1lTW9kdWxlcy5oYXNP
d25Qcm9wZXJ0eShyZWdpc3RyYXRpb25OYW1lKSkgeworICAgICAgICBkZWxldGUgcmVnaXN0cmF0
aW9uTmFtZU1vZHVsZXNbcmVnaXN0cmF0aW9uTmFtZV07CisgICAgICB9CisgICAgfQorCisgICAg
aWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgIHZhciBw
b3NzaWJsZVJlZ2lzdHJhdGlvbk5hbWVzID0gRXZlbnRQbHVnaW5SZWdpc3RyeS5wb3NzaWJsZVJl
Z2lzdHJhdGlvbk5hbWVzOworICAgICAgZm9yICh2YXIgbG93ZXJDYXNlZE5hbWUgaW4gcG9zc2li
bGVSZWdpc3RyYXRpb25OYW1lcykgeworICAgICAgICBpZiAocG9zc2libGVSZWdpc3RyYXRpb25O
YW1lcy5oYXNPd25Qcm9wZXJ0eShsb3dlckNhc2VkTmFtZSkpIHsKKyAgICAgICAgICBkZWxldGUg
cG9zc2libGVSZWdpc3RyYXRpb25OYW1lc1tsb3dlckNhc2VkTmFtZV07CisgICAgICAgIH0KKyAg
ICAgIH0KKyAgICB9CisgIH0KKworfTsKKworbW9kdWxlLmV4cG9ydHMgPSBFdmVudFBsdWdpblJl
Z2lzdHJ5OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL0V2ZW50UGx1Z2luVXRpbHMuanMg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9FdmVudFBsdWdp
blV0aWxzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMzOTI5ZGI2MTIyZjc0NGZjNGI4MzZmNDljZDQ5YTNkYzUw
Y2MxOWYKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMv
cmVhY3QtZG9tL2xpYi9FdmVudFBsdWdpblV0aWxzLmpzCkBAIC0wLDAgKzEsMjI1IEBACisvKioK
KyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl
IEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50Cisg
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJ
bnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0UHJvZEludmFyaWFudCcpOworCit2YXIgUmVhY3RF
cnJvclV0aWxzID0gcmVxdWlyZSgnLi9SZWFjdEVycm9yVXRpbHMnKTsKKwordmFyIGludmFyaWFu
dCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpOwordmFyIHdhcm5pbmcgPSByZXF1aXJl
KCdmYmpzL2xpYi93YXJuaW5nJyk7CisKKy8qKgorICogSW5qZWN0ZWQgZGVwZW5kZW5jaWVzOgor
ICovCisKKy8qKgorICogLSBgQ29tcG9uZW50VHJlZWA6IFtyZXF1aXJlZF0gTW9kdWxlIHRoYXQg
Y2FuIGNvbnZlcnQgYmV0d2VlbiBSZWFjdCBpbnN0YW5jZXMKKyAqICAgYW5kIGFjdHVhbCBub2Rl
IHJlZmVyZW5jZXMuCisgKi8KK3ZhciBDb21wb25lbnRUcmVlOwordmFyIFRyZWVUcmF2ZXJzYWw7
Cit2YXIgaW5qZWN0aW9uID0geworICBpbmplY3RDb21wb25lbnRUcmVlOiBmdW5jdGlvbiAoSW5q
ZWN0ZWQpIHsKKyAgICBDb21wb25lbnRUcmVlID0gSW5qZWN0ZWQ7CisgICAgaWYgKHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgIHByb2Nlc3MuZW52Lk5PREVf
RU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKEluamVjdGVkICYmIEluamVjdGVkLmdldE5v
ZGVGcm9tSW5zdGFuY2UgJiYgSW5qZWN0ZWQuZ2V0SW5zdGFuY2VGcm9tTm9kZSwgJ0V2ZW50UGx1
Z2luVXRpbHMuaW5qZWN0aW9uLmluamVjdENvbXBvbmVudFRyZWUoLi4uKTogSW5qZWN0ZWQgJyAr
ICdtb2R1bGUgaXMgbWlzc2luZyBnZXROb2RlRnJvbUluc3RhbmNlIG9yIGdldEluc3RhbmNlRnJv
bU5vZGUuJykgOiB2b2lkIDA7CisgICAgfQorICB9LAorICBpbmplY3RUcmVlVHJhdmVyc2FsOiBm
dW5jdGlvbiAoSW5qZWN0ZWQpIHsKKyAgICBUcmVlVHJhdmVyc2FsID0gSW5qZWN0ZWQ7CisgICAg
aWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgIHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKEluamVjdGVkICYmIElu
amVjdGVkLmlzQW5jZXN0b3IgJiYgSW5qZWN0ZWQuZ2V0TG93ZXN0Q29tbW9uQW5jZXN0b3IsICdF
dmVudFBsdWdpblV0aWxzLmluamVjdGlvbi5pbmplY3RUcmVlVHJhdmVyc2FsKC4uLik6IEluamVj
dGVkICcgKyAnbW9kdWxlIGlzIG1pc3NpbmcgaXNBbmNlc3RvciBvciBnZXRMb3dlc3RDb21tb25B
bmNlc3Rvci4nKSA6IHZvaWQgMDsKKyAgICB9CisgIH0KK307CisKK2Z1bmN0aW9uIGlzRW5kaXNo
KHRvcExldmVsVHlwZSkgeworICByZXR1cm4gdG9wTGV2ZWxUeXBlID09PSAndG9wTW91c2VVcCcg
fHwgdG9wTGV2ZWxUeXBlID09PSAndG9wVG91Y2hFbmQnIHx8IHRvcExldmVsVHlwZSA9PT0gJ3Rv
cFRvdWNoQ2FuY2VsJzsKK30KKworZnVuY3Rpb24gaXNNb3ZlaXNoKHRvcExldmVsVHlwZSkgewor
ICByZXR1cm4gdG9wTGV2ZWxUeXBlID09PSAndG9wTW91c2VNb3ZlJyB8fCB0b3BMZXZlbFR5cGUg
PT09ICd0b3BUb3VjaE1vdmUnOworfQorZnVuY3Rpb24gaXNTdGFydGlzaCh0b3BMZXZlbFR5cGUp
IHsKKyAgcmV0dXJuIHRvcExldmVsVHlwZSA9PT0gJ3RvcE1vdXNlRG93bicgfHwgdG9wTGV2ZWxU
eXBlID09PSAndG9wVG91Y2hTdGFydCc7Cit9CisKK3ZhciB2YWxpZGF0ZUV2ZW50RGlzcGF0Y2hl
czsKK2lmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgIHZhbGlk
YXRlRXZlbnREaXNwYXRjaGVzID0gZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgdmFyIGRpc3BhdGNo
TGlzdGVuZXJzID0gZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJzOworICAgIHZhciBkaXNwYXRjaElu
c3RhbmNlcyA9IGV2ZW50Ll9kaXNwYXRjaEluc3RhbmNlczsKKworICAgIHZhciBsaXN0ZW5lcnNJ
c0FyciA9IEFycmF5LmlzQXJyYXkoZGlzcGF0Y2hMaXN0ZW5lcnMpOworICAgIHZhciBsaXN0ZW5l
cnNMZW4gPSBsaXN0ZW5lcnNJc0FyciA/IGRpc3BhdGNoTGlzdGVuZXJzLmxlbmd0aCA6IGRpc3Bh
dGNoTGlzdGVuZXJzID8gMSA6IDA7CisKKyAgICB2YXIgaW5zdGFuY2VzSXNBcnIgPSBBcnJheS5p
c0FycmF5KGRpc3BhdGNoSW5zdGFuY2VzKTsKKyAgICB2YXIgaW5zdGFuY2VzTGVuID0gaW5zdGFu
Y2VzSXNBcnIgPyBkaXNwYXRjaEluc3RhbmNlcy5sZW5ndGggOiBkaXNwYXRjaEluc3RhbmNlcyA/
IDEgOiAwOworCisgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdh
cm5pbmcoaW5zdGFuY2VzSXNBcnIgPT09IGxpc3RlbmVyc0lzQXJyICYmIGluc3RhbmNlc0xlbiA9
PT0gbGlzdGVuZXJzTGVuLCAnRXZlbnRQbHVnaW5VdGlsczogSW52YWxpZCBgZXZlbnRgLicpIDog
dm9pZCAwOworICB9OworfQorCisvKioKKyAqIERpc3BhdGNoIHRoZSBldmVudCB0byB0aGUgbGlz
dGVuZXIuCisgKiBAcGFyYW0ge1N5bnRoZXRpY0V2ZW50fSBldmVudCBTeW50aGV0aWNFdmVudCB0
byBoYW5kbGUKKyAqIEBwYXJhbSB7Ym9vbGVhbn0gc2ltdWxhdGVkIElmIHRoZSBldmVudCBpcyBz
aW11bGF0ZWQgKGNoYW5nZXMgZXhuIGJlaGF2aW9yKQorICogQHBhcmFtIHtmdW5jdGlvbn0gbGlz
dGVuZXIgQXBwbGljYXRpb24tbGV2ZWwgY2FsbGJhY2sKKyAqIEBwYXJhbSB7Kn0gaW5zdCBJbnRl
cm5hbCBjb21wb25lbnQgaW5zdGFuY2UKKyAqLworZnVuY3Rpb24gZXhlY3V0ZURpc3BhdGNoKGV2
ZW50LCBzaW11bGF0ZWQsIGxpc3RlbmVyLCBpbnN0KSB7CisgIHZhciB0eXBlID0gZXZlbnQudHlw
ZSB8fCAndW5rbm93bi1ldmVudCc7CisgIGV2ZW50LmN1cnJlbnRUYXJnZXQgPSBFdmVudFBsdWdp
blV0aWxzLmdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCk7CisgIGlmIChzaW11bGF0ZWQpIHsKKyAg
ICBSZWFjdEVycm9yVXRpbHMuaW52b2tlR3VhcmRlZENhbGxiYWNrV2l0aENhdGNoKHR5cGUsIGxp
c3RlbmVyLCBldmVudCk7CisgIH0gZWxzZSB7CisgICAgUmVhY3RFcnJvclV0aWxzLmludm9rZUd1
YXJkZWRDYWxsYmFjayh0eXBlLCBsaXN0ZW5lciwgZXZlbnQpOworICB9CisgIGV2ZW50LmN1cnJl
bnRUYXJnZXQgPSBudWxsOworfQorCisvKioKKyAqIFN0YW5kYXJkL3NpbXBsZSBpdGVyYXRpb24g
dGhyb3VnaCBhbiBldmVudCdzIGNvbGxlY3RlZCBkaXNwYXRjaGVzLgorICovCitmdW5jdGlvbiBl
eGVjdXRlRGlzcGF0Y2hlc0luT3JkZXIoZXZlbnQsIHNpbXVsYXRlZCkgeworICB2YXIgZGlzcGF0
Y2hMaXN0ZW5lcnMgPSBldmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnM7CisgIHZhciBkaXNwYXRjaElu
c3RhbmNlcyA9IGV2ZW50Ll9kaXNwYXRjaEluc3RhbmNlczsKKyAgaWYgKHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICB2YWxpZGF0ZUV2ZW50RGlzcGF0Y2hlcyhl
dmVudCk7CisgIH0KKyAgaWYgKEFycmF5LmlzQXJyYXkoZGlzcGF0Y2hMaXN0ZW5lcnMpKSB7Cisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkaXNwYXRjaExpc3RlbmVycy5sZW5ndGg7IGkrKykgewor
ICAgICAgaWYgKGV2ZW50LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpIHsKKyAgICAgICAgYnJlYWs7
CisgICAgICB9CisgICAgICAvLyBMaXN0ZW5lcnMgYW5kIEluc3RhbmNlcyBhcmUgdHdvIHBhcmFs
bGVsIGFycmF5cyB0aGF0IGFyZSBhbHdheXMgaW4gc3luYy4KKyAgICAgIGV4ZWN1dGVEaXNwYXRj
aChldmVudCwgc2ltdWxhdGVkLCBkaXNwYXRjaExpc3RlbmVyc1tpXSwgZGlzcGF0Y2hJbnN0YW5j
ZXNbaV0pOworICAgIH0KKyAgfSBlbHNlIGlmIChkaXNwYXRjaExpc3RlbmVycykgeworICAgIGV4
ZWN1dGVEaXNwYXRjaChldmVudCwgc2ltdWxhdGVkLCBkaXNwYXRjaExpc3RlbmVycywgZGlzcGF0
Y2hJbnN0YW5jZXMpOworICB9CisgIGV2ZW50Ll9kaXNwYXRjaExpc3RlbmVycyA9IG51bGw7Cisg
IGV2ZW50Ll9kaXNwYXRjaEluc3RhbmNlcyA9IG51bGw7Cit9CisKKy8qKgorICogU3RhbmRhcmQv
c2ltcGxlIGl0ZXJhdGlvbiB0aHJvdWdoIGFuIGV2ZW50J3MgY29sbGVjdGVkIGRpc3BhdGNoZXMs
IGJ1dCBzdG9wcworICogYXQgdGhlIGZpcnN0IGRpc3BhdGNoIGV4ZWN1dGlvbiByZXR1cm5pbmcg
dHJ1ZSwgYW5kIHJldHVybnMgdGhhdCBpZC4KKyAqCisgKiBAcmV0dXJuIHs/c3RyaW5nfSBpZCBv
ZiB0aGUgZmlyc3QgZGlzcGF0Y2ggZXhlY3V0aW9uIHdobydzIGxpc3RlbmVyIHJldHVybnMKKyAq
IHRydWUsIG9yIG51bGwgaWYgbm8gbGlzdGVuZXIgcmV0dXJuZWQgdHJ1ZS4KKyAqLworZnVuY3Rp
b24gZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyU3RvcEF0VHJ1ZUltcGwoZXZlbnQpIHsKKyAgdmFy
IGRpc3BhdGNoTGlzdGVuZXJzID0gZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJzOworICB2YXIgZGlz
cGF0Y2hJbnN0YW5jZXMgPSBldmVudC5fZGlzcGF0Y2hJbnN0YW5jZXM7CisgIGlmIChwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgdmFsaWRhdGVFdmVudERpc3Bh
dGNoZXMoZXZlbnQpOworICB9CisgIGlmIChBcnJheS5pc0FycmF5KGRpc3BhdGNoTGlzdGVuZXJz
KSkgeworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGlzcGF0Y2hMaXN0ZW5lcnMubGVuZ3RoOyBp
KyspIHsKKyAgICAgIGlmIChldmVudC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKSB7CisgICAgICAg
IGJyZWFrOworICAgICAgfQorICAgICAgLy8gTGlzdGVuZXJzIGFuZCBJbnN0YW5jZXMgYXJlIHR3
byBwYXJhbGxlbCBhcnJheXMgdGhhdCBhcmUgYWx3YXlzIGluIHN5bmMuCisgICAgICBpZiAoZGlz
cGF0Y2hMaXN0ZW5lcnNbaV0oZXZlbnQsIGRpc3BhdGNoSW5zdGFuY2VzW2ldKSkgeworICAgICAg
ICByZXR1cm4gZGlzcGF0Y2hJbnN0YW5jZXNbaV07CisgICAgICB9CisgICAgfQorICB9IGVsc2Ug
aWYgKGRpc3BhdGNoTGlzdGVuZXJzKSB7CisgICAgaWYgKGRpc3BhdGNoTGlzdGVuZXJzKGV2ZW50
LCBkaXNwYXRjaEluc3RhbmNlcykpIHsKKyAgICAgIHJldHVybiBkaXNwYXRjaEluc3RhbmNlczsK
KyAgICB9CisgIH0KKyAgcmV0dXJuIG51bGw7Cit9CisKKy8qKgorICogQHNlZSBleGVjdXRlRGlz
cGF0Y2hlc0luT3JkZXJTdG9wQXRUcnVlSW1wbAorICovCitmdW5jdGlvbiBleGVjdXRlRGlzcGF0
Y2hlc0luT3JkZXJTdG9wQXRUcnVlKGV2ZW50KSB7CisgIHZhciByZXQgPSBleGVjdXRlRGlzcGF0
Y2hlc0luT3JkZXJTdG9wQXRUcnVlSW1wbChldmVudCk7CisgIGV2ZW50Ll9kaXNwYXRjaEluc3Rh
bmNlcyA9IG51bGw7CisgIGV2ZW50Ll9kaXNwYXRjaExpc3RlbmVycyA9IG51bGw7CisgIHJldHVy
biByZXQ7Cit9CisKKy8qKgorICogRXhlY3V0aW9uIG9mIGEgImRpcmVjdCIgZGlzcGF0Y2ggLSB0
aGVyZSBtdXN0IGJlIGF0IG1vc3Qgb25lIGRpc3BhdGNoCisgKiBhY2N1bXVsYXRlZCBvbiB0aGUg
ZXZlbnQgb3IgaXQgaXMgY29uc2lkZXJlZCBhbiBlcnJvci4gSXQgZG9lc24ndCByZWFsbHkgbWFr
ZQorICogc2Vuc2UgZm9yIGFuIGV2ZW50IHdpdGggbXVsdGlwbGUgZGlzcGF0Y2hlcyAoYnViYmxl
ZCkgdG8ga2VlcCB0cmFjayBvZiB0aGUKKyAqIHJldHVybiB2YWx1ZXMgYXQgZWFjaCBkaXNwYXRj
aCBleGVjdXRpb24sIGJ1dCBpdCBkb2VzIHRlbmQgdG8gbWFrZSBzZW5zZSB3aGVuCisgKiBkZWFs
aW5nIHdpdGggImRpcmVjdCIgZGlzcGF0Y2hlcy4KKyAqCisgKiBAcmV0dXJuIHsqfSBUaGUgcmV0
dXJuIHZhbHVlIG9mIGV4ZWN1dGluZyB0aGUgc2luZ2xlIGRpc3BhdGNoLgorICovCitmdW5jdGlv
biBleGVjdXRlRGlyZWN0RGlzcGF0Y2goZXZlbnQpIHsKKyAgaWYgKHByb2Nlc3MuZW52Lk5PREVf
RU5WICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICB2YWxpZGF0ZUV2ZW50RGlzcGF0Y2hlcyhldmVu
dCk7CisgIH0KKyAgdmFyIGRpc3BhdGNoTGlzdGVuZXIgPSBldmVudC5fZGlzcGF0Y2hMaXN0ZW5l
cnM7CisgIHZhciBkaXNwYXRjaEluc3RhbmNlID0gZXZlbnQuX2Rpc3BhdGNoSW5zdGFuY2VzOwor
ICAhIUFycmF5LmlzQXJyYXkoZGlzcGF0Y2hMaXN0ZW5lcikgPyBwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnZXhlY3V0ZURpcmVjdERpc3Bh
dGNoKC4uLik6IEludmFsaWQgYGV2ZW50YC4nKSA6IF9wcm9kSW52YXJpYW50KCcxMDMnKSA6IHZv
aWQgMDsKKyAgZXZlbnQuY3VycmVudFRhcmdldCA9IGRpc3BhdGNoTGlzdGVuZXIgPyBFdmVudFBs
dWdpblV0aWxzLmdldE5vZGVGcm9tSW5zdGFuY2UoZGlzcGF0Y2hJbnN0YW5jZSkgOiBudWxsOwor
ICB2YXIgcmVzID0gZGlzcGF0Y2hMaXN0ZW5lciA/IGRpc3BhdGNoTGlzdGVuZXIoZXZlbnQpIDog
bnVsbDsKKyAgZXZlbnQuY3VycmVudFRhcmdldCA9IG51bGw7CisgIGV2ZW50Ll9kaXNwYXRjaExp
c3RlbmVycyA9IG51bGw7CisgIGV2ZW50Ll9kaXNwYXRjaEluc3RhbmNlcyA9IG51bGw7CisgIHJl
dHVybiByZXM7Cit9CisKKy8qKgorICogQHBhcmFtIHtTeW50aGV0aWNFdmVudH0gZXZlbnQKKyAq
IEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWZmIG51bWJlciBvZiBkaXNwYXRjaGVzIGFjY3VtdWxh
dGVkIGlzIGdyZWF0ZXIgdGhhbiAwLgorICovCitmdW5jdGlvbiBoYXNEaXNwYXRjaGVzKGV2ZW50
KSB7CisgIHJldHVybiAhIWV2ZW50Ll9kaXNwYXRjaExpc3RlbmVyczsKK30KKworLyoqCisgKiBH
ZW5lcmFsIHV0aWxpdGllcyB0aGF0IGFyZSB1c2VmdWwgaW4gY3JlYXRpbmcgY3VzdG9tIEV2ZW50
IFBsdWdpbnMuCisgKi8KK3ZhciBFdmVudFBsdWdpblV0aWxzID0geworICBpc0VuZGlzaDogaXNF
bmRpc2gsCisgIGlzTW92ZWlzaDogaXNNb3ZlaXNoLAorICBpc1N0YXJ0aXNoOiBpc1N0YXJ0aXNo
LAorCisgIGV4ZWN1dGVEaXJlY3REaXNwYXRjaDogZXhlY3V0ZURpcmVjdERpc3BhdGNoLAorICBl
eGVjdXRlRGlzcGF0Y2hlc0luT3JkZXI6IGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlciwKKyAgZXhl
Y3V0ZURpc3BhdGNoZXNJbk9yZGVyU3RvcEF0VHJ1ZTogZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVy
U3RvcEF0VHJ1ZSwKKyAgaGFzRGlzcGF0Y2hlczogaGFzRGlzcGF0Y2hlcywKKworICBnZXRJbnN0
YW5jZUZyb21Ob2RlOiBmdW5jdGlvbiAobm9kZSkgeworICAgIHJldHVybiBDb21wb25lbnRUcmVl
LmdldEluc3RhbmNlRnJvbU5vZGUobm9kZSk7CisgIH0sCisgIGdldE5vZGVGcm9tSW5zdGFuY2U6
IGZ1bmN0aW9uIChub2RlKSB7CisgICAgcmV0dXJuIENvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21J
bnN0YW5jZShub2RlKTsKKyAgfSwKKyAgaXNBbmNlc3RvcjogZnVuY3Rpb24gKGEsIGIpIHsKKyAg
ICByZXR1cm4gVHJlZVRyYXZlcnNhbC5pc0FuY2VzdG9yKGEsIGIpOworICB9LAorICBnZXRMb3dl
c3RDb21tb25BbmNlc3RvcjogZnVuY3Rpb24gKGEsIGIpIHsKKyAgICByZXR1cm4gVHJlZVRyYXZl
cnNhbC5nZXRMb3dlc3RDb21tb25BbmNlc3RvcihhLCBiKTsKKyAgfSwKKyAgZ2V0UGFyZW50SW5z
dGFuY2U6IGZ1bmN0aW9uIChpbnN0KSB7CisgICAgcmV0dXJuIFRyZWVUcmF2ZXJzYWwuZ2V0UGFy
ZW50SW5zdGFuY2UoaW5zdCk7CisgIH0sCisgIHRyYXZlcnNlVHdvUGhhc2U6IGZ1bmN0aW9uICh0
YXJnZXQsIGZuLCBhcmcpIHsKKyAgICByZXR1cm4gVHJlZVRyYXZlcnNhbC50cmF2ZXJzZVR3b1Bo
YXNlKHRhcmdldCwgZm4sIGFyZyk7CisgIH0sCisgIHRyYXZlcnNlRW50ZXJMZWF2ZTogZnVuY3Rp
b24gKGZyb20sIHRvLCBmbiwgYXJnRnJvbSwgYXJnVG8pIHsKKyAgICByZXR1cm4gVHJlZVRyYXZl
cnNhbC50cmF2ZXJzZUVudGVyTGVhdmUoZnJvbSwgdG8sIGZuLCBhcmdGcm9tLCBhcmdUbyk7Cisg
IH0sCisKKyAgaW5qZWN0aW9uOiBpbmplY3Rpb24KK307CisKK21vZHVsZS5leHBvcnRzID0gRXZl
bnRQbHVnaW5VdGlsczsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9FdmVudFByb3BhZ2F0
b3JzLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvRXZl
bnRQcm9wYWdhdG9ycy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NzA0ZTM3YmI5MGUwNWYwNTYyZWU4NjE0NmEz
NGQyOWI3ZDM3ODQwCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9t
b2R1bGVzL3JlYWN0LWRvbS9saWIvRXZlbnRQcm9wYWdhdG9ycy5qcwpAQCAtMCwwICsxLDEzMyBA
QAorLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBn
cmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmls
ZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFy
IEV2ZW50UGx1Z2luSHViID0gcmVxdWlyZSgnLi9FdmVudFBsdWdpbkh1YicpOwordmFyIEV2ZW50
UGx1Z2luVXRpbHMgPSByZXF1aXJlKCcuL0V2ZW50UGx1Z2luVXRpbHMnKTsKKwordmFyIGFjY3Vt
dWxhdGVJbnRvID0gcmVxdWlyZSgnLi9hY2N1bXVsYXRlSW50bycpOwordmFyIGZvckVhY2hBY2N1
bXVsYXRlZCA9IHJlcXVpcmUoJy4vZm9yRWFjaEFjY3VtdWxhdGVkJyk7Cit2YXIgd2FybmluZyA9
IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTsKKwordmFyIGdldExpc3RlbmVyID0gRXZlbnRQ
bHVnaW5IdWIuZ2V0TGlzdGVuZXI7CisKKy8qKgorICogU29tZSBldmVudCB0eXBlcyBoYXZlIGEg
bm90aW9uIG9mIGRpZmZlcmVudCByZWdpc3RyYXRpb24gbmFtZXMgZm9yIGRpZmZlcmVudAorICog
InBoYXNlcyIgb2YgcHJvcGFnYXRpb24uIFRoaXMgZmluZHMgbGlzdGVuZXJzIGJ5IGEgZ2l2ZW4g
cGhhc2UuCisgKi8KK2Z1bmN0aW9uIGxpc3RlbmVyQXRQaGFzZShpbnN0LCBldmVudCwgcHJvcGFn
YXRpb25QaGFzZSkgeworICB2YXIgcmVnaXN0cmF0aW9uTmFtZSA9IGV2ZW50LmRpc3BhdGNoQ29u
ZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzW3Byb3BhZ2F0aW9uUGhhc2VdOworICByZXR1cm4g
Z2V0TGlzdGVuZXIoaW5zdCwgcmVnaXN0cmF0aW9uTmFtZSk7Cit9CisKKy8qKgorICogVGFncyBh
IGBTeW50aGV0aWNFdmVudGAgd2l0aCBkaXNwYXRjaGVkIGxpc3RlbmVycy4gQ3JlYXRpbmcgdGhp
cyBmdW5jdGlvbgorICogaGVyZSwgYWxsb3dzIHVzIHRvIG5vdCBoYXZlIHRvIGJpbmQgb3IgY3Jl
YXRlIGZ1bmN0aW9ucyBmb3IgZWFjaCBldmVudC4KKyAqIE11dGF0aW5nIHRoZSBldmVudCdzIG1l
bWJlcnMgYWxsb3dzIHVzIHRvIG5vdCBoYXZlIHRvIGNyZWF0ZSBhIHdyYXBwaW5nCisgKiAiZGlz
cGF0Y2giIG9iamVjdCB0aGF0IHBhaXJzIHRoZSBldmVudCB3aXRoIHRoZSBsaXN0ZW5lci4KKyAq
LworZnVuY3Rpb24gYWNjdW11bGF0ZURpcmVjdGlvbmFsRGlzcGF0Y2hlcyhpbnN0LCBwaGFzZSwg
ZXZlbnQpIHsKKyAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHsK
KyAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhpbnN0
LCAnRGlzcGF0Y2hpbmcgaW5zdCBtdXN0IG5vdCBiZSBudWxsJykgOiB2b2lkIDA7CisgIH0KKyAg
dmFyIGxpc3RlbmVyID0gbGlzdGVuZXJBdFBoYXNlKGluc3QsIGV2ZW50LCBwaGFzZSk7CisgIGlm
IChsaXN0ZW5lcikgeworICAgIGV2ZW50Ll9kaXNwYXRjaExpc3RlbmVycyA9IGFjY3VtdWxhdGVJ
bnRvKGV2ZW50Ll9kaXNwYXRjaExpc3RlbmVycywgbGlzdGVuZXIpOworICAgIGV2ZW50Ll9kaXNw
YXRjaEluc3RhbmNlcyA9IGFjY3VtdWxhdGVJbnRvKGV2ZW50Ll9kaXNwYXRjaEluc3RhbmNlcywg
aW5zdCk7CisgIH0KK30KKworLyoqCisgKiBDb2xsZWN0IGRpc3BhdGNoZXMgKG11c3QgYmUgZW50
aXJlbHkgY29sbGVjdGVkIGJlZm9yZSBkaXNwYXRjaGluZyAtIHNlZSB1bml0CisgKiB0ZXN0cyku
IExhemlseSBhbGxvY2F0ZSB0aGUgYXJyYXkgdG8gY29uc2VydmUgbWVtb3J5LiAgV2UgbXVzdCBs
b29wIHRocm91Z2gKKyAqIGVhY2ggZXZlbnQgYW5kIHBlcmZvcm0gdGhlIHRyYXZlcnNhbCBmb3Ig
ZWFjaCBvbmUuIFdlIGNhbm5vdCBwZXJmb3JtIGEKKyAqIHNpbmdsZSB0cmF2ZXJzYWwgZm9yIHRo
ZSBlbnRpcmUgY29sbGVjdGlvbiBvZiBldmVudHMgYmVjYXVzZSBlYWNoIGV2ZW50IG1heQorICog
aGF2ZSBhIGRpZmZlcmVudCB0YXJnZXQuCisgKi8KK2Z1bmN0aW9uIGFjY3VtdWxhdGVUd29QaGFz
ZURpc3BhdGNoZXNTaW5nbGUoZXZlbnQpIHsKKyAgaWYgKGV2ZW50ICYmIGV2ZW50LmRpc3BhdGNo
Q29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzKSB7CisgICAgRXZlbnRQbHVnaW5VdGlscy50
cmF2ZXJzZVR3b1BoYXNlKGV2ZW50Ll90YXJnZXRJbnN0LCBhY2N1bXVsYXRlRGlyZWN0aW9uYWxE
aXNwYXRjaGVzLCBldmVudCk7CisgIH0KK30KKworLyoqCisgKiBTYW1lIGFzIGBhY2N1bXVsYXRl
VHdvUGhhc2VEaXNwYXRjaGVzU2luZ2xlYCwgYnV0IHNraXBzIG92ZXIgdGhlIHRhcmdldElELgor
ICovCitmdW5jdGlvbiBhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzU2luZ2xlU2tpcFRhcmdl
dChldmVudCkgeworICBpZiAoZXZlbnQgJiYgZXZlbnQuZGlzcGF0Y2hDb25maWcucGhhc2VkUmVn
aXN0cmF0aW9uTmFtZXMpIHsKKyAgICB2YXIgdGFyZ2V0SW5zdCA9IGV2ZW50Ll90YXJnZXRJbnN0
OworICAgIHZhciBwYXJlbnRJbnN0ID0gdGFyZ2V0SW5zdCA/IEV2ZW50UGx1Z2luVXRpbHMuZ2V0
UGFyZW50SW5zdGFuY2UodGFyZ2V0SW5zdCkgOiBudWxsOworICAgIEV2ZW50UGx1Z2luVXRpbHMu
dHJhdmVyc2VUd29QaGFzZShwYXJlbnRJbnN0LCBhY2N1bXVsYXRlRGlyZWN0aW9uYWxEaXNwYXRj
aGVzLCBldmVudCk7CisgIH0KK30KKworLyoqCisgKiBBY2N1bXVsYXRlcyB3aXRob3V0IHJlZ2Fy
ZCB0byBkaXJlY3Rpb24sIGRvZXMgbm90IGxvb2sgZm9yIHBoYXNlZAorICogcmVnaXN0cmF0aW9u
IG5hbWVzLiBTYW1lIGFzIGBhY2N1bXVsYXRlRGlyZWN0RGlzcGF0Y2hlc1NpbmdsZWAgYnV0IHdp
dGhvdXQKKyAqIHJlcXVpcmluZyB0aGF0IHRoZSBgZGlzcGF0Y2hNYXJrZXJgIGJlIHRoZSBzYW1l
IGFzIHRoZSBkaXNwYXRjaGVkIElELgorICovCitmdW5jdGlvbiBhY2N1bXVsYXRlRGlzcGF0Y2hl
cyhpbnN0LCBpZ25vcmVkRGlyZWN0aW9uLCBldmVudCkgeworICBpZiAoZXZlbnQgJiYgZXZlbnQu
ZGlzcGF0Y2hDb25maWcucmVnaXN0cmF0aW9uTmFtZSkgeworICAgIHZhciByZWdpc3RyYXRpb25O
YW1lID0gZXZlbnQuZGlzcGF0Y2hDb25maWcucmVnaXN0cmF0aW9uTmFtZTsKKyAgICB2YXIgbGlz
dGVuZXIgPSBnZXRMaXN0ZW5lcihpbnN0LCByZWdpc3RyYXRpb25OYW1lKTsKKyAgICBpZiAobGlz
dGVuZXIpIHsKKyAgICAgIGV2ZW50Ll9kaXNwYXRjaExpc3RlbmVycyA9IGFjY3VtdWxhdGVJbnRv
KGV2ZW50Ll9kaXNwYXRjaExpc3RlbmVycywgbGlzdGVuZXIpOworICAgICAgZXZlbnQuX2Rpc3Bh
dGNoSW5zdGFuY2VzID0gYWNjdW11bGF0ZUludG8oZXZlbnQuX2Rpc3BhdGNoSW5zdGFuY2VzLCBp
bnN0KTsKKyAgICB9CisgIH0KK30KKworLyoqCisgKiBBY2N1bXVsYXRlcyBkaXNwYXRjaGVzIG9u
IGFuIGBTeW50aGV0aWNFdmVudGAsIGJ1dCBvbmx5IGZvciB0aGUKKyAqIGBkaXNwYXRjaE1hcmtl
cmAuCisgKiBAcGFyYW0ge1N5bnRoZXRpY0V2ZW50fSBldmVudAorICovCitmdW5jdGlvbiBhY2N1
bXVsYXRlRGlyZWN0RGlzcGF0Y2hlc1NpbmdsZShldmVudCkgeworICBpZiAoZXZlbnQgJiYgZXZl
bnQuZGlzcGF0Y2hDb25maWcucmVnaXN0cmF0aW9uTmFtZSkgeworICAgIGFjY3VtdWxhdGVEaXNw
YXRjaGVzKGV2ZW50Ll90YXJnZXRJbnN0LCBudWxsLCBldmVudCk7CisgIH0KK30KKworZnVuY3Rp
b24gYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyhldmVudHMpIHsKKyAgZm9yRWFjaEFjY3Vt
dWxhdGVkKGV2ZW50cywgYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlc1NpbmdsZSk7Cit9CisK
K2Z1bmN0aW9uIGFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXNTa2lwVGFyZ2V0KGV2ZW50cykg
eworICBmb3JFYWNoQWNjdW11bGF0ZWQoZXZlbnRzLCBhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRj
aGVzU2luZ2xlU2tpcFRhcmdldCk7Cit9CisKK2Z1bmN0aW9uIGFjY3VtdWxhdGVFbnRlckxlYXZl
RGlzcGF0Y2hlcyhsZWF2ZSwgZW50ZXIsIGZyb20sIHRvKSB7CisgIEV2ZW50UGx1Z2luVXRpbHMu
dHJhdmVyc2VFbnRlckxlYXZlKGZyb20sIHRvLCBhY2N1bXVsYXRlRGlzcGF0Y2hlcywgbGVhdmUs
IGVudGVyKTsKK30KKworZnVuY3Rpb24gYWNjdW11bGF0ZURpcmVjdERpc3BhdGNoZXMoZXZlbnRz
KSB7CisgIGZvckVhY2hBY2N1bXVsYXRlZChldmVudHMsIGFjY3VtdWxhdGVEaXJlY3REaXNwYXRj
aGVzU2luZ2xlKTsKK30KKworLyoqCisgKiBBIHNtYWxsIHNldCBvZiBwcm9wYWdhdGlvbiBwYXR0
ZXJucywgZWFjaCBvZiB3aGljaCB3aWxsIGFjY2VwdCBhIHNtYWxsIGFtb3VudAorICogb2YgaW5m
b3JtYXRpb24sIGFuZCBnZW5lcmF0ZSBhIHNldCBvZiAiZGlzcGF0Y2ggcmVhZHkgZXZlbnQgb2Jq
ZWN0cyIgLSB3aGljaAorICogYXJlIHNldHMgb2YgZXZlbnRzIHRoYXQgaGF2ZSBhbHJlYWR5IGJl
ZW4gYW5ub3RhdGVkIHdpdGggYSBzZXQgb2YgZGlzcGF0Y2hlZAorICogbGlzdGVuZXIgZnVuY3Rp
b25zL2lkcy4gVGhlIEFQSSBpcyBkZXNpZ25lZCB0aGlzIHdheSB0byBkaXNjb3VyYWdlIHRoZXNl
CisgKiBwcm9wYWdhdGlvbiBzdHJhdGVnaWVzIGZyb20gYWN0dWFsbHkgZXhlY3V0aW5nIHRoZSBk
aXNwYXRjaGVzLCBzaW5jZSB3ZQorICogYWx3YXlzIHdhbnQgdG8gY29sbGVjdCB0aGUgZW50aXJl
IHNldCBvZiBkaXNwYXRjaGVzIGJlZm9yZSBleGVjdXRpbmcgZXZlbnQgYQorICogc2luZ2xlIG9u
ZS4KKyAqCisgKiBAY29uc3RydWN0b3IgRXZlbnRQcm9wYWdhdG9ycworICovCit2YXIgRXZlbnRQ
cm9wYWdhdG9ycyA9IHsKKyAgYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlczogYWNjdW11bGF0
ZVR3b1BoYXNlRGlzcGF0Y2hlcywKKyAgYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlc1NraXBU
YXJnZXQ6IGFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXNTa2lwVGFyZ2V0LAorICBhY2N1bXVs
YXRlRGlyZWN0RGlzcGF0Y2hlczogYWNjdW11bGF0ZURpcmVjdERpc3BhdGNoZXMsCisgIGFjY3Vt
dWxhdGVFbnRlckxlYXZlRGlzcGF0Y2hlczogYWNjdW11bGF0ZUVudGVyTGVhdmVEaXNwYXRjaGVz
Cit9OworCittb2R1bGUuZXhwb3J0cyA9IEV2ZW50UHJvcGFnYXRvcnM7ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVz
L3JlYWN0LWRvbS9saWIvRmFsbGJhY2tDb21wb3NpdGlvblN0YXRlLmpzIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
cmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvRmFsbGJhY2tDb21wb3NpdGlvblN0YXRl
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjQzYzBhMWM5MmM3NjA0NzU2OWI1MDA2NGRjNDQ2MzgyNGU2ZWNiMzAK
LS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3Qt
ZG9tL2xpYi9GYWxsYmFja0NvbXBvc2l0aW9uU3RhdGUuanMKQEAgLTAsMCArMSw5NCBAQAorLyoq
CisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRo
ZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAor
ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0
aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9hc3Np
Z24gPSByZXF1aXJlKCdvYmplY3QtYXNzaWduJyk7CisKK3ZhciBQb29sZWRDbGFzcyA9IHJlcXVp
cmUoJy4vUG9vbGVkQ2xhc3MnKTsKKwordmFyIGdldFRleHRDb250ZW50QWNjZXNzb3IgPSByZXF1
aXJlKCcuL2dldFRleHRDb250ZW50QWNjZXNzb3InKTsKKworLyoqCisgKiBUaGlzIGhlbHBlciBj
bGFzcyBzdG9yZXMgaW5mb3JtYXRpb24gYWJvdXQgdGV4dCBjb250ZW50IG9mIGEgdGFyZ2V0IG5v
ZGUsCisgKiBhbGxvd2luZyBjb21wYXJpc29uIG9mIGNvbnRlbnQgYmVmb3JlIGFuZCBhZnRlciBh
IGdpdmVuIGV2ZW50LgorICoKKyAqIElkZW50aWZ5IHRoZSBub2RlIHdoZXJlIHNlbGVjdGlvbiBj
dXJyZW50bHkgYmVnaW5zLCB0aGVuIG9ic2VydmUKKyAqIGJvdGggaXRzIHRleHQgY29udGVudCBh
bmQgaXRzIGN1cnJlbnQgcG9zaXRpb24gaW4gdGhlIERPTS4gU2luY2UgdGhlCisgKiBicm93c2Vy
IG1heSBuYXRpdmVseSByZXBsYWNlIHRoZSB0YXJnZXQgbm9kZSBkdXJpbmcgY29tcG9zaXRpb24s
IHdlIGNhbgorICogdXNlIGl0cyBwb3NpdGlvbiB0byBmaW5kIGl0cyByZXBsYWNlbWVudC4KKyAq
CisgKiBAcGFyYW0ge0RPTUV2ZW50VGFyZ2V0fSByb290CisgKi8KK2Z1bmN0aW9uIEZhbGxiYWNr
Q29tcG9zaXRpb25TdGF0ZShyb290KSB7CisgIHRoaXMuX3Jvb3QgPSByb290OworICB0aGlzLl9z
dGFydFRleHQgPSB0aGlzLmdldFRleHQoKTsKKyAgdGhpcy5fZmFsbGJhY2tUZXh0ID0gbnVsbDsK
K30KKworX2Fzc2lnbihGYWxsYmFja0NvbXBvc2l0aW9uU3RhdGUucHJvdG90eXBlLCB7CisgIGRl
c3RydWN0b3I6IGZ1bmN0aW9uICgpIHsKKyAgICB0aGlzLl9yb290ID0gbnVsbDsKKyAgICB0aGlz
Ll9zdGFydFRleHQgPSBudWxsOworICAgIHRoaXMuX2ZhbGxiYWNrVGV4dCA9IG51bGw7CisgIH0s
CisKKyAgLyoqCisgICAqIEdldCBjdXJyZW50IHRleHQgb2YgaW5wdXQuCisgICAqCisgICAqIEBy
ZXR1cm4ge3N0cmluZ30KKyAgICovCisgIGdldFRleHQ6IGZ1bmN0aW9uICgpIHsKKyAgICBpZiAo
J3ZhbHVlJyBpbiB0aGlzLl9yb290KSB7CisgICAgICByZXR1cm4gdGhpcy5fcm9vdC52YWx1ZTsK
KyAgICB9CisgICAgcmV0dXJuIHRoaXMuX3Jvb3RbZ2V0VGV4dENvbnRlbnRBY2Nlc3NvcigpXTsK
KyAgfSwKKworICAvKioKKyAgICogRGV0ZXJtaW5lIHRoZSBkaWZmZXJpbmcgc3Vic3RyaW5nIGJl
dHdlZW4gdGhlIGluaXRpYWxseSBzdG9yZWQKKyAgICogdGV4dCBjb250ZW50IGFuZCB0aGUgY3Vy
cmVudCBjb250ZW50LgorICAgKgorICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAqLworICBnZXRE
YXRhOiBmdW5jdGlvbiAoKSB7CisgICAgaWYgKHRoaXMuX2ZhbGxiYWNrVGV4dCkgeworICAgICAg
cmV0dXJuIHRoaXMuX2ZhbGxiYWNrVGV4dDsKKyAgICB9CisKKyAgICB2YXIgc3RhcnQ7CisgICAg
dmFyIHN0YXJ0VmFsdWUgPSB0aGlzLl9zdGFydFRleHQ7CisgICAgdmFyIHN0YXJ0TGVuZ3RoID0g
c3RhcnRWYWx1ZS5sZW5ndGg7CisgICAgdmFyIGVuZDsKKyAgICB2YXIgZW5kVmFsdWUgPSB0aGlz
LmdldFRleHQoKTsKKyAgICB2YXIgZW5kTGVuZ3RoID0gZW5kVmFsdWUubGVuZ3RoOworCisgICAg
Zm9yIChzdGFydCA9IDA7IHN0YXJ0IDwgc3RhcnRMZW5ndGg7IHN0YXJ0KyspIHsKKyAgICAgIGlm
IChzdGFydFZhbHVlW3N0YXJ0XSAhPT0gZW5kVmFsdWVbc3RhcnRdKSB7CisgICAgICAgIGJyZWFr
OworICAgICAgfQorICAgIH0KKworICAgIHZhciBtaW5FbmQgPSBzdGFydExlbmd0aCAtIHN0YXJ0
OworICAgIGZvciAoZW5kID0gMTsgZW5kIDw9IG1pbkVuZDsgZW5kKyspIHsKKyAgICAgIGlmIChz
dGFydFZhbHVlW3N0YXJ0TGVuZ3RoIC0gZW5kXSAhPT0gZW5kVmFsdWVbZW5kTGVuZ3RoIC0gZW5k
XSkgeworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgc2xpY2VUYWls
ID0gZW5kID4gMSA/IDEgLSBlbmQgOiB1bmRlZmluZWQ7CisgICAgdGhpcy5fZmFsbGJhY2tUZXh0
ID0gZW5kVmFsdWUuc2xpY2Uoc3RhcnQsIHNsaWNlVGFpbCk7CisgICAgcmV0dXJuIHRoaXMuX2Zh
bGxiYWNrVGV4dDsKKyAgfQorfSk7CisKK1Bvb2xlZENsYXNzLmFkZFBvb2xpbmdUbyhGYWxsYmFj
a0NvbXBvc2l0aW9uU3RhdGUpOworCittb2R1bGUuZXhwb3J0cyA9IEZhbGxiYWNrQ29tcG9zaXRp
b25TdGF0ZTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9IVE1MRE9NUHJvcGVydHlDb25m
aWcuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9IVE1M
RE9NUHJvcGVydHlDb25maWcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjU4N2YzZTA4ZmZiNDFlZGUwZGViMDkw
YzY4MmY3Y2QwMTM2M2JlNgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25v
ZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL0hUTUxET01Qcm9wZXJ0eUNvbmZpZy5qcwpAQCAtMCww
ICsxLDIxMSBAQAorLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5j
LgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxp
Y2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRk
aXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBB
VEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0
JzsKKwordmFyIERPTVByb3BlcnR5ID0gcmVxdWlyZSgnLi9ET01Qcm9wZXJ0eScpOworCit2YXIg
TVVTVF9VU0VfUFJPUEVSVFkgPSBET01Qcm9wZXJ0eS5pbmplY3Rpb24uTVVTVF9VU0VfUFJPUEVS
VFk7Cit2YXIgSEFTX0JPT0xFQU5fVkFMVUUgPSBET01Qcm9wZXJ0eS5pbmplY3Rpb24uSEFTX0JP
T0xFQU5fVkFMVUU7Cit2YXIgSEFTX05VTUVSSUNfVkFMVUUgPSBET01Qcm9wZXJ0eS5pbmplY3Rp
b24uSEFTX05VTUVSSUNfVkFMVUU7Cit2YXIgSEFTX1BPU0lUSVZFX05VTUVSSUNfVkFMVUUgPSBE
T01Qcm9wZXJ0eS5pbmplY3Rpb24uSEFTX1BPU0lUSVZFX05VTUVSSUNfVkFMVUU7Cit2YXIgSEFT
X09WRVJMT0FERURfQk9PTEVBTl9WQUxVRSA9IERPTVByb3BlcnR5LmluamVjdGlvbi5IQVNfT1ZF
UkxPQURFRF9CT09MRUFOX1ZBTFVFOworCit2YXIgSFRNTERPTVByb3BlcnR5Q29uZmlnID0gewor
ICBpc0N1c3RvbUF0dHJpYnV0ZTogUmVnRXhwLnByb3RvdHlwZS50ZXN0LmJpbmQobmV3IFJlZ0V4
cCgnXihkYXRhfGFyaWEpLVsnICsgRE9NUHJvcGVydHkuQVRUUklCVVRFX05BTUVfQ0hBUiArICdd
KiQnKSksCisgIFByb3BlcnRpZXM6IHsKKyAgICAvKioKKyAgICAgKiBTdGFuZGFyZCBQcm9wZXJ0
aWVzCisgICAgICovCisgICAgYWNjZXB0OiAwLAorICAgIGFjY2VwdENoYXJzZXQ6IDAsCisgICAg
YWNjZXNzS2V5OiAwLAorICAgIGFjdGlvbjogMCwKKyAgICBhbGxvd0Z1bGxTY3JlZW46IEhBU19C
T09MRUFOX1ZBTFVFLAorICAgIGFsbG93VHJhbnNwYXJlbmN5OiAwLAorICAgIGFsdDogMCwKKyAg
ICAvLyBzcGVjaWZpZXMgdGFyZ2V0IGNvbnRleHQgZm9yIGxpbmtzIHdpdGggYHByZWxvYWRgIHR5
cGUKKyAgICBhczogMCwKKyAgICBhc3luYzogSEFTX0JPT0xFQU5fVkFMVUUsCisgICAgYXV0b0Nv
bXBsZXRlOiAwLAorICAgIC8vIGF1dG9Gb2N1cyBpcyBwb2x5ZmlsbGVkL25vcm1hbGl6ZWQgYnkg
QXV0b0ZvY3VzVXRpbHMKKyAgICAvLyBhdXRvRm9jdXM6IEhBU19CT09MRUFOX1ZBTFVFLAorICAg
IGF1dG9QbGF5OiBIQVNfQk9PTEVBTl9WQUxVRSwKKyAgICBjYXB0dXJlOiBIQVNfQk9PTEVBTl9W
QUxVRSwKKyAgICBjZWxsUGFkZGluZzogMCwKKyAgICBjZWxsU3BhY2luZzogMCwKKyAgICBjaGFy
U2V0OiAwLAorICAgIGNoYWxsZW5nZTogMCwKKyAgICBjaGVja2VkOiBNVVNUX1VTRV9QUk9QRVJU
WSB8IEhBU19CT09MRUFOX1ZBTFVFLAorICAgIGNpdGU6IDAsCisgICAgY2xhc3NJRDogMCwKKyAg
ICBjbGFzc05hbWU6IDAsCisgICAgY29sczogSEFTX1BPU0lUSVZFX05VTUVSSUNfVkFMVUUsCisg
ICAgY29sU3BhbjogMCwKKyAgICBjb250ZW50OiAwLAorICAgIGNvbnRlbnRFZGl0YWJsZTogMCwK
KyAgICBjb250ZXh0TWVudTogMCwKKyAgICBjb250cm9sczogSEFTX0JPT0xFQU5fVkFMVUUsCisg
ICAgY29vcmRzOiAwLAorICAgIGNyb3NzT3JpZ2luOiAwLAorICAgIGRhdGE6IDAsIC8vIEZvciBg
PG9iamVjdCAvPmAgYWN0cyBhcyBgc3JjYC4KKyAgICBkYXRlVGltZTogMCwKKyAgICAnZGVmYXVs
dCc6IEhBU19CT09MRUFOX1ZBTFVFLAorICAgIGRlZmVyOiBIQVNfQk9PTEVBTl9WQUxVRSwKKyAg
ICBkaXI6IDAsCisgICAgZGlzYWJsZWQ6IEhBU19CT09MRUFOX1ZBTFVFLAorICAgIGRvd25sb2Fk
OiBIQVNfT1ZFUkxPQURFRF9CT09MRUFOX1ZBTFVFLAorICAgIGRyYWdnYWJsZTogMCwKKyAgICBl
bmNUeXBlOiAwLAorICAgIGZvcm06IDAsCisgICAgZm9ybUFjdGlvbjogMCwKKyAgICBmb3JtRW5j
VHlwZTogMCwKKyAgICBmb3JtTWV0aG9kOiAwLAorICAgIGZvcm1Ob1ZhbGlkYXRlOiBIQVNfQk9P
TEVBTl9WQUxVRSwKKyAgICBmb3JtVGFyZ2V0OiAwLAorICAgIGZyYW1lQm9yZGVyOiAwLAorICAg
IGhlYWRlcnM6IDAsCisgICAgaGVpZ2h0OiAwLAorICAgIGhpZGRlbjogSEFTX0JPT0xFQU5fVkFM
VUUsCisgICAgaGlnaDogMCwKKyAgICBocmVmOiAwLAorICAgIGhyZWZMYW5nOiAwLAorICAgIGh0
bWxGb3I6IDAsCisgICAgaHR0cEVxdWl2OiAwLAorICAgIGljb246IDAsCisgICAgaWQ6IDAsCisg
ICAgaW5wdXRNb2RlOiAwLAorICAgIGludGVncml0eTogMCwKKyAgICBpczogMCwKKyAgICBrZXlQ
YXJhbXM6IDAsCisgICAga2V5VHlwZTogMCwKKyAgICBraW5kOiAwLAorICAgIGxhYmVsOiAwLAor
ICAgIGxhbmc6IDAsCisgICAgbGlzdDogMCwKKyAgICBsb29wOiBIQVNfQk9PTEVBTl9WQUxVRSwK
KyAgICBsb3c6IDAsCisgICAgbWFuaWZlc3Q6IDAsCisgICAgbWFyZ2luSGVpZ2h0OiAwLAorICAg
IG1hcmdpbldpZHRoOiAwLAorICAgIG1heDogMCwKKyAgICBtYXhMZW5ndGg6IDAsCisgICAgbWVk
aWE6IDAsCisgICAgbWVkaWFHcm91cDogMCwKKyAgICBtZXRob2Q6IDAsCisgICAgbWluOiAwLAor
ICAgIG1pbkxlbmd0aDogMCwKKyAgICAvLyBDYXV0aW9uOyBgb3B0aW9uLnNlbGVjdGVkYCBpcyBu
b3QgdXBkYXRlZCBpZiBgc2VsZWN0Lm11bHRpcGxlYCBpcworICAgIC8vIGRpc2FibGVkIHdpdGgg
YHJlbW92ZUF0dHJpYnV0ZWAuCisgICAgbXVsdGlwbGU6IE1VU1RfVVNFX1BST1BFUlRZIHwgSEFT
X0JPT0xFQU5fVkFMVUUsCisgICAgbXV0ZWQ6IE1VU1RfVVNFX1BST1BFUlRZIHwgSEFTX0JPT0xF
QU5fVkFMVUUsCisgICAgbmFtZTogMCwKKyAgICBub25jZTogMCwKKyAgICBub1ZhbGlkYXRlOiBI
QVNfQk9PTEVBTl9WQUxVRSwKKyAgICBvcGVuOiBIQVNfQk9PTEVBTl9WQUxVRSwKKyAgICBvcHRp
bXVtOiAwLAorICAgIHBhdHRlcm46IDAsCisgICAgcGxhY2Vob2xkZXI6IDAsCisgICAgcGxheXNJ
bmxpbmU6IEhBU19CT09MRUFOX1ZBTFVFLAorICAgIHBvc3RlcjogMCwKKyAgICBwcmVsb2FkOiAw
LAorICAgIHByb2ZpbGU6IDAsCisgICAgcmFkaW9Hcm91cDogMCwKKyAgICByZWFkT25seTogSEFT
X0JPT0xFQU5fVkFMVUUsCisgICAgcmVmZXJyZXJQb2xpY3k6IDAsCisgICAgcmVsOiAwLAorICAg
IHJlcXVpcmVkOiBIQVNfQk9PTEVBTl9WQUxVRSwKKyAgICByZXZlcnNlZDogSEFTX0JPT0xFQU5f
VkFMVUUsCisgICAgcm9sZTogMCwKKyAgICByb3dzOiBIQVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxV
RSwKKyAgICByb3dTcGFuOiBIQVNfTlVNRVJJQ19WQUxVRSwKKyAgICBzYW5kYm94OiAwLAorICAg
IHNjb3BlOiAwLAorICAgIHNjb3BlZDogSEFTX0JPT0xFQU5fVkFMVUUsCisgICAgc2Nyb2xsaW5n
OiAwLAorICAgIHNlYW1sZXNzOiBIQVNfQk9PTEVBTl9WQUxVRSwKKyAgICBzZWxlY3RlZDogTVVT
VF9VU0VfUFJPUEVSVFkgfCBIQVNfQk9PTEVBTl9WQUxVRSwKKyAgICBzaGFwZTogMCwKKyAgICBz
aXplOiBIQVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxVRSwKKyAgICBzaXplczogMCwKKyAgICBzcGFu
OiBIQVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxVRSwKKyAgICBzcGVsbENoZWNrOiAwLAorICAgIHNy
YzogMCwKKyAgICBzcmNEb2M6IDAsCisgICAgc3JjTGFuZzogMCwKKyAgICBzcmNTZXQ6IDAsCisg
ICAgc3RhcnQ6IEhBU19OVU1FUklDX1ZBTFVFLAorICAgIHN0ZXA6IDAsCisgICAgc3R5bGU6IDAs
CisgICAgc3VtbWFyeTogMCwKKyAgICB0YWJJbmRleDogMCwKKyAgICB0YXJnZXQ6IDAsCisgICAg
dGl0bGU6IDAsCisgICAgLy8gU2V0dGluZyAudHlwZSB0aHJvd3Mgb24gbm9uLTxpbnB1dD4gdGFn
cworICAgIHR5cGU6IDAsCisgICAgdXNlTWFwOiAwLAorICAgIHZhbHVlOiAwLAorICAgIHdpZHRo
OiAwLAorICAgIHdtb2RlOiAwLAorICAgIHdyYXA6IDAsCisKKyAgICAvKioKKyAgICAgKiBSREZh
IFByb3BlcnRpZXMKKyAgICAgKi8KKyAgICBhYm91dDogMCwKKyAgICBkYXRhdHlwZTogMCwKKyAg
ICBpbmxpc3Q6IDAsCisgICAgcHJlZml4OiAwLAorICAgIC8vIHByb3BlcnR5IGlzIGFsc28gc3Vw
cG9ydGVkIGZvciBPcGVuR3JhcGggaW4gbWV0YSB0YWdzLgorICAgIHByb3BlcnR5OiAwLAorICAg
IHJlc291cmNlOiAwLAorICAgICd0eXBlb2YnOiAwLAorICAgIHZvY2FiOiAwLAorCisgICAgLyoq
CisgICAgICogTm9uLXN0YW5kYXJkIFByb3BlcnRpZXMKKyAgICAgKi8KKyAgICAvLyBhdXRvQ2Fw
aXRhbGl6ZSBhbmQgYXV0b0NvcnJlY3QgYXJlIHN1cHBvcnRlZCBpbiBNb2JpbGUgU2FmYXJpIGZv
cgorICAgIC8vIGtleWJvYXJkIGhpbnRzLgorICAgIGF1dG9DYXBpdGFsaXplOiAwLAorICAgIGF1
dG9Db3JyZWN0OiAwLAorICAgIC8vIGF1dG9TYXZlIGFsbG93cyBXZWJLaXQvQmxpbmsgdG8gcGVy
c2lzdCB2YWx1ZXMgb2YgaW5wdXQgZmllbGRzIG9uIHBhZ2UgcmVsb2FkcworICAgIGF1dG9TYXZl
OiAwLAorICAgIC8vIGNvbG9yIGlzIGZvciBTYWZhcmkgbWFzay1pY29uIGxpbmsKKyAgICBjb2xv
cjogMCwKKyAgICAvLyBpdGVtUHJvcCwgaXRlbVNjb3BlLCBpdGVtVHlwZSBhcmUgZm9yCisgICAg
Ly8gTWljcm9kYXRhIHN1cHBvcnQuIFNlZSBodHRwOi8vc2NoZW1hLm9yZy9kb2NzL2dzLmh0bWwK
KyAgICBpdGVtUHJvcDogMCwKKyAgICBpdGVtU2NvcGU6IEhBU19CT09MRUFOX1ZBTFVFLAorICAg
IGl0ZW1UeXBlOiAwLAorICAgIC8vIGl0ZW1JRCBhbmQgaXRlbVJlZiBhcmUgZm9yIE1pY3JvZGF0
YSBzdXBwb3J0IGFzIHdlbGwgYnV0CisgICAgLy8gb25seSBzcGVjaWZpZWQgaW4gdGhlIFdIQVRX
RyBzcGVjIGRvY3VtZW50LiBTZWUKKyAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3Jn
L211bHRpcGFnZS9taWNyb2RhdGEuaHRtbCNtaWNyb2RhdGEtZG9tLWFwaQorICAgIGl0ZW1JRDog
MCwKKyAgICBpdGVtUmVmOiAwLAorICAgIC8vIHJlc3VsdHMgc2hvdyBsb29raW5nIGdsYXNzIGlj
b24gYW5kIHJlY2VudCBzZWFyY2hlcyBvbiBpbnB1dAorICAgIC8vIHNlYXJjaCBmaWVsZHMgaW4g
V2ViS2l0L0JsaW5rCisgICAgcmVzdWx0czogMCwKKyAgICAvLyBJRS1vbmx5IGF0dHJpYnV0ZSB0
aGF0IHNwZWNpZmllcyBzZWN1cml0eSByZXN0cmljdGlvbnMgb24gYW4gaWZyYW1lCisgICAgLy8g
YXMgYW4gYWx0ZXJuYXRpdmUgdG8gdGhlIHNhbmRib3ggYXR0cmlidXRlIG9uIElFPDEwCisgICAg
c2VjdXJpdHk6IDAsCisgICAgLy8gSUUtb25seSBhdHRyaWJ1dGUgdGhhdCBjb250cm9scyBmb2N1
cyBiZWhhdmlvcgorICAgIHVuc2VsZWN0YWJsZTogMAorICB9LAorICBET01BdHRyaWJ1dGVOYW1l
czogeworICAgIGFjY2VwdENoYXJzZXQ6ICdhY2NlcHQtY2hhcnNldCcsCisgICAgY2xhc3NOYW1l
OiAnY2xhc3MnLAorICAgIGh0bWxGb3I6ICdmb3InLAorICAgIGh0dHBFcXVpdjogJ2h0dHAtZXF1
aXYnCisgIH0sCisgIERPTVByb3BlcnR5TmFtZXM6IHt9Cit9OworCittb2R1bGUuZXhwb3J0cyA9
IEhUTUxET01Qcm9wZXJ0eUNvbmZpZzsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9LZXlF
c2NhcGVVdGlscy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20v
bGliL0tleUVzY2FwZVV0aWxzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBhYmYxYTIyYzcxNjM1MjI5MWIyNTFl
MWZkMzkxODU3OTQ4YmU2ZDkKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9u
b2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9LZXlFc2NhcGVVdGlscy5qcwpAQCAtMCwwICsxLDU4
IEBACisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQg
dW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxl
IGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFs
IGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBm
aWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiAKKyAqLworCisndXNlIHN0cmljdCc7
CisKKy8qKgorICogRXNjYXBlIGFuZCB3cmFwIGtleSBzbyBpdCBpcyBzYWZlIHRvIHVzZSBhcyBh
IHJlYWN0aWQKKyAqCisgKiBAcGFyYW0ge3N0cmluZ30ga2V5IHRvIGJlIGVzY2FwZWQuCisgKiBA
cmV0dXJuIHtzdHJpbmd9IHRoZSBlc2NhcGVkIGtleS4KKyAqLworCitmdW5jdGlvbiBlc2NhcGUo
a2V5KSB7CisgIHZhciBlc2NhcGVSZWdleCA9IC9bPTpdL2c7CisgIHZhciBlc2NhcGVyTG9va3Vw
ID0geworICAgICc9JzogJz0wJywKKyAgICAnOic6ICc9MicKKyAgfTsKKyAgdmFyIGVzY2FwZWRT
dHJpbmcgPSAoJycgKyBrZXkpLnJlcGxhY2UoZXNjYXBlUmVnZXgsIGZ1bmN0aW9uIChtYXRjaCkg
eworICAgIHJldHVybiBlc2NhcGVyTG9va3VwW21hdGNoXTsKKyAgfSk7CisKKyAgcmV0dXJuICck
JyArIGVzY2FwZWRTdHJpbmc7Cit9CisKKy8qKgorICogVW5lc2NhcGUgYW5kIHVud3JhcCBrZXkg
Zm9yIGh1bWFuLXJlYWRhYmxlIGRpc3BsYXkKKyAqCisgKiBAcGFyYW0ge3N0cmluZ30ga2V5IHRv
IHVuZXNjYXBlLgorICogQHJldHVybiB7c3RyaW5nfSB0aGUgdW5lc2NhcGVkIGtleS4KKyAqLwor
ZnVuY3Rpb24gdW5lc2NhcGUoa2V5KSB7CisgIHZhciB1bmVzY2FwZVJlZ2V4ID0gLyg9MHw9Mikv
ZzsKKyAgdmFyIHVuZXNjYXBlckxvb2t1cCA9IHsKKyAgICAnPTAnOiAnPScsCisgICAgJz0yJzog
JzonCisgIH07CisgIHZhciBrZXlTdWJzdHJpbmcgPSBrZXlbMF0gPT09ICcuJyAmJiBrZXlbMV0g
PT09ICckJyA/IGtleS5zdWJzdHJpbmcoMikgOiBrZXkuc3Vic3RyaW5nKDEpOworCisgIHJldHVy
biAoJycgKyBrZXlTdWJzdHJpbmcpLnJlcGxhY2UodW5lc2NhcGVSZWdleCwgZnVuY3Rpb24gKG1h
dGNoKSB7CisgICAgcmV0dXJuIHVuZXNjYXBlckxvb2t1cFttYXRjaF07CisgIH0pOworfQorCit2
YXIgS2V5RXNjYXBlVXRpbHMgPSB7CisgIGVzY2FwZTogZXNjYXBlLAorICB1bmVzY2FwZTogdW5l
c2NhcGUKK307CisKK21vZHVsZS5leHBvcnRzID0gS2V5RXNjYXBlVXRpbHM7ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1
bGVzL3JlYWN0LWRvbS9saWIvTGlua2VkVmFsdWVVdGlscy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0
L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL0xpbmtlZFZhbHVlVXRpbHMuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYTMyZDRjYTliYzQwZTIzNjBkNGJmZTUwZWQ4MWVlZjBlYzQyMmI5YQotLS0gL2Rldi9udWxs
CisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL0xpbmtl
ZFZhbHVlVXRpbHMuanMKQEAgLTAsMCArMSwxMzQgQEAKKy8qKgorICogQ29weXJpZ2h0IDIwMTMt
cHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
VGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2Ug
Zm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRo
aXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMg
Y2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Lgor
ICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBfcHJvZEludmFyaWFudCA9IHJlcXVpcmUo
Jy4vcmVhY3RQcm9kSW52YXJpYW50Jyk7CisKK3ZhciBSZWFjdCA9IHJlcXVpcmUoJ3JlYWN0L2xp
Yi9SZWFjdCcpOwordmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gcmVxdWlyZSgnLi9SZWFjdFBy
b3BUeXBlc1NlY3JldCcpOworCit2YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52
YXJpYW50Jyk7Cit2YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTsKKwor
dmFyIGhhc1JlYWRPbmx5VmFsdWUgPSB7CisgICdidXR0b24nOiB0cnVlLAorICAnY2hlY2tib3gn
OiB0cnVlLAorICAnaW1hZ2UnOiB0cnVlLAorICAnaGlkZGVuJzogdHJ1ZSwKKyAgJ3JhZGlvJzog
dHJ1ZSwKKyAgJ3Jlc2V0JzogdHJ1ZSwKKyAgJ3N1Ym1pdCc6IHRydWUKK307CisKK2Z1bmN0aW9u
IF9hc3NlcnRTaW5nbGVMaW5rKGlucHV0UHJvcHMpIHsKKyAgIShpbnB1dFByb3BzLmNoZWNrZWRM
aW5rID09IG51bGwgfHwgaW5wdXRQcm9wcy52YWx1ZUxpbmsgPT0gbnVsbCkgPyBwcm9jZXNzLmVu
di5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnQ2Fubm90IHBy
b3ZpZGUgYSBjaGVja2VkTGluayBhbmQgYSB2YWx1ZUxpbmsuIElmIHlvdSB3YW50IHRvIHVzZSBj
aGVja2VkTGluaywgeW91IHByb2JhYmx5IGRvblwndCB3YW50IHRvIHVzZSB2YWx1ZUxpbmsgYW5k
IHZpY2UgdmVyc2EuJykgOiBfcHJvZEludmFyaWFudCgnODcnKSA6IHZvaWQgMDsKK30KK2Z1bmN0
aW9uIF9hc3NlcnRWYWx1ZUxpbmsoaW5wdXRQcm9wcykgeworICBfYXNzZXJ0U2luZ2xlTGluayhp
bnB1dFByb3BzKTsKKyAgIShpbnB1dFByb3BzLnZhbHVlID09IG51bGwgJiYgaW5wdXRQcm9wcy5v
bkNoYW5nZSA9PSBudWxsKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicg
PyBpbnZhcmlhbnQoZmFsc2UsICdDYW5ub3QgcHJvdmlkZSBhIHZhbHVlTGluayBhbmQgYSB2YWx1
ZSBvciBvbkNoYW5nZSBldmVudC4gSWYgeW91IHdhbnQgdG8gdXNlIHZhbHVlIG9yIG9uQ2hhbmdl
LCB5b3UgcHJvYmFibHkgZG9uXCd0IHdhbnQgdG8gdXNlIHZhbHVlTGluay4nKSA6IF9wcm9kSW52
YXJpYW50KCc4OCcpIDogdm9pZCAwOworfQorCitmdW5jdGlvbiBfYXNzZXJ0Q2hlY2tlZExpbmso
aW5wdXRQcm9wcykgeworICBfYXNzZXJ0U2luZ2xlTGluayhpbnB1dFByb3BzKTsKKyAgIShpbnB1
dFByb3BzLmNoZWNrZWQgPT0gbnVsbCAmJiBpbnB1dFByb3BzLm9uQ2hhbmdlID09IG51bGwpID8g
cHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwg
J0Nhbm5vdCBwcm92aWRlIGEgY2hlY2tlZExpbmsgYW5kIGEgY2hlY2tlZCBwcm9wZXJ0eSBvciBv
bkNoYW5nZSBldmVudC4gSWYgeW91IHdhbnQgdG8gdXNlIGNoZWNrZWQgb3Igb25DaGFuZ2UsIHlv
dSBwcm9iYWJseSBkb25cJ3Qgd2FudCB0byB1c2UgY2hlY2tlZExpbmsnKSA6IF9wcm9kSW52YXJp
YW50KCc4OScpIDogdm9pZCAwOworfQorCit2YXIgcHJvcFR5cGVzID0geworICB2YWx1ZTogZnVu
Y3Rpb24gKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSkgeworICAgIGlmICghcHJvcHNb
cHJvcE5hbWVdIHx8IGhhc1JlYWRPbmx5VmFsdWVbcHJvcHMudHlwZV0gfHwgcHJvcHMub25DaGFu
Z2UgfHwgcHJvcHMucmVhZE9ubHkgfHwgcHJvcHMuZGlzYWJsZWQpIHsKKyAgICAgIHJldHVybiBu
dWxsOworICAgIH0KKyAgICByZXR1cm4gbmV3IEVycm9yKCdZb3UgcHJvdmlkZWQgYSBgdmFsdWVg
IHByb3AgdG8gYSBmb3JtIGZpZWxkIHdpdGhvdXQgYW4gJyArICdgb25DaGFuZ2VgIGhhbmRsZXIu
IFRoaXMgd2lsbCByZW5kZXIgYSByZWFkLW9ubHkgZmllbGQuIElmICcgKyAndGhlIGZpZWxkIHNo
b3VsZCBiZSBtdXRhYmxlIHVzZSBgZGVmYXVsdFZhbHVlYC4gT3RoZXJ3aXNlLCAnICsgJ3NldCBl
aXRoZXIgYG9uQ2hhbmdlYCBvciBgcmVhZE9ubHlgLicpOworICB9LAorICBjaGVja2VkOiBmdW5j
dGlvbiAocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lKSB7CisgICAgaWYgKCFwcm9wc1tw
cm9wTmFtZV0gfHwgcHJvcHMub25DaGFuZ2UgfHwgcHJvcHMucmVhZE9ubHkgfHwgcHJvcHMuZGlz
YWJsZWQpIHsKKyAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAgICByZXR1cm4gbmV3IEVycm9y
KCdZb3UgcHJvdmlkZWQgYSBgY2hlY2tlZGAgcHJvcCB0byBhIGZvcm0gZmllbGQgd2l0aG91dCBh
biAnICsgJ2BvbkNoYW5nZWAgaGFuZGxlci4gVGhpcyB3aWxsIHJlbmRlciBhIHJlYWQtb25seSBm
aWVsZC4gSWYgJyArICd0aGUgZmllbGQgc2hvdWxkIGJlIG11dGFibGUgdXNlIGBkZWZhdWx0Q2hl
Y2tlZGAuIE90aGVyd2lzZSwgJyArICdzZXQgZWl0aGVyIGBvbkNoYW5nZWAgb3IgYHJlYWRPbmx5
YC4nKTsKKyAgfSwKKyAgb25DaGFuZ2U6IFJlYWN0LlByb3BUeXBlcy5mdW5jCit9OworCit2YXIg
bG9nZ2VkVHlwZUZhaWx1cmVzID0ge307CitmdW5jdGlvbiBnZXREZWNsYXJhdGlvbkVycm9yQWRk
ZW5kdW0ob3duZXIpIHsKKyAgaWYgKG93bmVyKSB7CisgICAgdmFyIG5hbWUgPSBvd25lci5nZXRO
YW1lKCk7CisgICAgaWYgKG5hbWUpIHsKKyAgICAgIHJldHVybiAnIENoZWNrIHRoZSByZW5kZXIg
bWV0aG9kIG9mIGAnICsgbmFtZSArICdgLic7CisgICAgfQorICB9CisgIHJldHVybiAnJzsKK30K
KworLyoqCisgKiBQcm92aWRlIGEgbGlua2VkIGB2YWx1ZWAgYXR0cmlidXRlIGZvciBjb250cm9s
bGVkIGZvcm1zLiBZb3Ugc2hvdWxkIG5vdCB1c2UKKyAqIHRoaXMgb3V0c2lkZSBvZiB0aGUgUmVh
Y3RET00gY29udHJvbGxlZCBmb3JtIGNvbXBvbmVudHMuCisgKi8KK3ZhciBMaW5rZWRWYWx1ZVV0
aWxzID0geworICBjaGVja1Byb3BUeXBlczogZnVuY3Rpb24gKHRhZ05hbWUsIHByb3BzLCBvd25l
cikgeworICAgIGZvciAodmFyIHByb3BOYW1lIGluIHByb3BUeXBlcykgeworICAgICAgaWYgKHBy
b3BUeXBlcy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHsKKyAgICAgICAgdmFyIGVycm9yID0g
cHJvcFR5cGVzW3Byb3BOYW1lXShwcm9wcywgcHJvcE5hbWUsIHRhZ05hbWUsICdwcm9wJywgbnVs
bCwgUmVhY3RQcm9wVHlwZXNTZWNyZXQpOworICAgICAgfQorICAgICAgaWYgKGVycm9yIGluc3Rh
bmNlb2YgRXJyb3IgJiYgIShlcnJvci5tZXNzYWdlIGluIGxvZ2dlZFR5cGVGYWlsdXJlcykpIHsK
KyAgICAgICAgLy8gT25seSBtb25pdG9yIHRoaXMgZmFpbHVyZSBvbmNlIGJlY2F1c2UgdGhlcmUg
dGVuZHMgdG8gYmUgYSBsb3Qgb2YgdGhlCisgICAgICAgIC8vIHNhbWUgZXJyb3IuCisgICAgICAg
IGxvZ2dlZFR5cGVGYWlsdXJlc1tlcnJvci5tZXNzYWdlXSA9IHRydWU7CisKKyAgICAgICAgdmFy
IGFkZGVuZHVtID0gZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKG93bmVyKTsKKyAgICAgICAg
cHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdG
YWlsZWQgZm9ybSBwcm9wVHlwZTogJXMlcycsIGVycm9yLm1lc3NhZ2UsIGFkZGVuZHVtKSA6IHZv
aWQgMDsKKyAgICAgIH0KKyAgICB9CisgIH0sCisKKyAgLyoqCisgICAqIEBwYXJhbSB7b2JqZWN0
fSBpbnB1dFByb3BzIFByb3BzIGZvciBmb3JtIGNvbXBvbmVudAorICAgKiBAcmV0dXJuIHsqfSBj
dXJyZW50IHZhbHVlIG9mIHRoZSBpbnB1dCBlaXRoZXIgZnJvbSB2YWx1ZSBwcm9wIG9yIGxpbmsu
CisgICAqLworICBnZXRWYWx1ZTogZnVuY3Rpb24gKGlucHV0UHJvcHMpIHsKKyAgICBpZiAoaW5w
dXRQcm9wcy52YWx1ZUxpbmspIHsKKyAgICAgIF9hc3NlcnRWYWx1ZUxpbmsoaW5wdXRQcm9wcyk7
CisgICAgICByZXR1cm4gaW5wdXRQcm9wcy52YWx1ZUxpbmsudmFsdWU7CisgICAgfQorICAgIHJl
dHVybiBpbnB1dFByb3BzLnZhbHVlOworICB9LAorCisgIC8qKgorICAgKiBAcGFyYW0ge29iamVj
dH0gaW5wdXRQcm9wcyBQcm9wcyBmb3IgZm9ybSBjb21wb25lbnQKKyAgICogQHJldHVybiB7Kn0g
Y3VycmVudCBjaGVja2VkIHN0YXR1cyBvZiB0aGUgaW5wdXQgZWl0aGVyIGZyb20gY2hlY2tlZCBw
cm9wCisgICAqICAgICAgICAgICAgIG9yIGxpbmsuCisgICAqLworICBnZXRDaGVja2VkOiBmdW5j
dGlvbiAoaW5wdXRQcm9wcykgeworICAgIGlmIChpbnB1dFByb3BzLmNoZWNrZWRMaW5rKSB7Cisg
ICAgICBfYXNzZXJ0Q2hlY2tlZExpbmsoaW5wdXRQcm9wcyk7CisgICAgICByZXR1cm4gaW5wdXRQ
cm9wcy5jaGVja2VkTGluay52YWx1ZTsKKyAgICB9CisgICAgcmV0dXJuIGlucHV0UHJvcHMuY2hl
Y2tlZDsKKyAgfSwKKworICAvKioKKyAgICogQHBhcmFtIHtvYmplY3R9IGlucHV0UHJvcHMgUHJv
cHMgZm9yIGZvcm0gY29tcG9uZW50CisgICAqIEBwYXJhbSB7U3ludGhldGljRXZlbnR9IGV2ZW50
IGNoYW5nZSBldmVudCB0byBoYW5kbGUKKyAgICovCisgIGV4ZWN1dGVPbkNoYW5nZTogZnVuY3Rp
b24gKGlucHV0UHJvcHMsIGV2ZW50KSB7CisgICAgaWYgKGlucHV0UHJvcHMudmFsdWVMaW5rKSB7
CisgICAgICBfYXNzZXJ0VmFsdWVMaW5rKGlucHV0UHJvcHMpOworICAgICAgcmV0dXJuIGlucHV0
UHJvcHMudmFsdWVMaW5rLnJlcXVlc3RDaGFuZ2UoZXZlbnQudGFyZ2V0LnZhbHVlKTsKKyAgICB9
IGVsc2UgaWYgKGlucHV0UHJvcHMuY2hlY2tlZExpbmspIHsKKyAgICAgIF9hc3NlcnRDaGVja2Vk
TGluayhpbnB1dFByb3BzKTsKKyAgICAgIHJldHVybiBpbnB1dFByb3BzLmNoZWNrZWRMaW5rLnJl
cXVlc3RDaGFuZ2UoZXZlbnQudGFyZ2V0LmNoZWNrZWQpOworICAgIH0gZWxzZSBpZiAoaW5wdXRQ
cm9wcy5vbkNoYW5nZSkgeworICAgICAgcmV0dXJuIGlucHV0UHJvcHMub25DaGFuZ2UuY2FsbCh1
bmRlZmluZWQsIGV2ZW50KTsKKyAgICB9CisgIH0KK307CisKK21vZHVsZS5leHBvcnRzID0gTGlu
a2VkVmFsdWVVdGlsczsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9QbHVnaW5Nb2R1bGVU
eXBlLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUGx1
Z2luTW9kdWxlVHlwZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZDk0Y2E4MWUzOWQ0Nzg2OGZkYTMyOGQ5NzU2
N2UzMDJkMDkzNmZhCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9t
b2R1bGVzL3JlYWN0LWRvbS9saWIvUGx1Z2luTW9kdWxlVHlwZS5qcwpAQCAtMCwwICsxLDEyIEBA
CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5k
ZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdy
YW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxl
IGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiAKKyAqLworCisndXNlIHN0cmljdCc7Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qv
bm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUG9vbGVkQ2xhc3MuanMgYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9y
ZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9Qb29sZWRDbGFzcy5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xMjk5YjQ5M2Q3ZmIwZmUyZTI5ODQ2M2U5ZDI3ZTk0NjM0NWIwOWU1Ci0tLSAvZGV2L251bGwK
KysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUG9vbGVk
Q2xhc3MuanMKQEAgLTAsMCArMSwxMjMgQEAKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2Vu
dCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBz
b3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQg
aW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291
cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJl
IGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAq
IAorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9wcm9kSW52YXJpYW50ID0gcmVxdWlyZSgn
Li9yZWFjdFByb2RJbnZhcmlhbnQnKTsKKwordmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMv
bGliL2ludmFyaWFudCcpOworCisvKioKKyAqIFN0YXRpYyBwb29sZXJzLiBTZXZlcmFsIGN1c3Rv
bSB2ZXJzaW9ucyBmb3IgZWFjaCBwb3RlbnRpYWwgbnVtYmVyIG9mCisgKiBhcmd1bWVudHMuIEEg
Y29tcGxldGVseSBnZW5lcmljIHBvb2xlciBpcyBlYXN5IHRvIGltcGxlbWVudCwgYnV0IHdvdWxk
CisgKiByZXF1aXJlIGFjY2Vzc2luZyB0aGUgYGFyZ3VtZW50c2Agb2JqZWN0LiBJbiBlYWNoIG9m
IHRoZXNlLCBgdGhpc2AgcmVmZXJzIHRvCisgKiB0aGUgQ2xhc3MgaXRzZWxmLCBub3QgYW4gaW5z
dGFuY2UuIElmIGFueSBvdGhlcnMgYXJlIG5lZWRlZCwgc2ltcGx5IGFkZCB0aGVtCisgKiBoZXJl
LCBvciBpbiB0aGVpciBvd24gZmlsZXMuCisgKi8KK3ZhciBvbmVBcmd1bWVudFBvb2xlciA9IGZ1
bmN0aW9uIChjb3B5RmllbGRzRnJvbSkgeworICB2YXIgS2xhc3MgPSB0aGlzOworICBpZiAoS2xh
c3MuaW5zdGFuY2VQb29sLmxlbmd0aCkgeworICAgIHZhciBpbnN0YW5jZSA9IEtsYXNzLmluc3Rh
bmNlUG9vbC5wb3AoKTsKKyAgICBLbGFzcy5jYWxsKGluc3RhbmNlLCBjb3B5RmllbGRzRnJvbSk7
CisgICAgcmV0dXJuIGluc3RhbmNlOworICB9IGVsc2UgeworICAgIHJldHVybiBuZXcgS2xhc3Mo
Y29weUZpZWxkc0Zyb20pOworICB9Cit9OworCit2YXIgdHdvQXJndW1lbnRQb29sZXIgPSBmdW5j
dGlvbiAoYTEsIGEyKSB7CisgIHZhciBLbGFzcyA9IHRoaXM7CisgIGlmIChLbGFzcy5pbnN0YW5j
ZVBvb2wubGVuZ3RoKSB7CisgICAgdmFyIGluc3RhbmNlID0gS2xhc3MuaW5zdGFuY2VQb29sLnBv
cCgpOworICAgIEtsYXNzLmNhbGwoaW5zdGFuY2UsIGExLCBhMik7CisgICAgcmV0dXJuIGluc3Rh
bmNlOworICB9IGVsc2UgeworICAgIHJldHVybiBuZXcgS2xhc3MoYTEsIGEyKTsKKyAgfQorfTsK
KwordmFyIHRocmVlQXJndW1lbnRQb29sZXIgPSBmdW5jdGlvbiAoYTEsIGEyLCBhMykgeworICB2
YXIgS2xhc3MgPSB0aGlzOworICBpZiAoS2xhc3MuaW5zdGFuY2VQb29sLmxlbmd0aCkgeworICAg
IHZhciBpbnN0YW5jZSA9IEtsYXNzLmluc3RhbmNlUG9vbC5wb3AoKTsKKyAgICBLbGFzcy5jYWxs
KGluc3RhbmNlLCBhMSwgYTIsIGEzKTsKKyAgICByZXR1cm4gaW5zdGFuY2U7CisgIH0gZWxzZSB7
CisgICAgcmV0dXJuIG5ldyBLbGFzcyhhMSwgYTIsIGEzKTsKKyAgfQorfTsKKwordmFyIGZvdXJB
cmd1bWVudFBvb2xlciA9IGZ1bmN0aW9uIChhMSwgYTIsIGEzLCBhNCkgeworICB2YXIgS2xhc3Mg
PSB0aGlzOworICBpZiAoS2xhc3MuaW5zdGFuY2VQb29sLmxlbmd0aCkgeworICAgIHZhciBpbnN0
YW5jZSA9IEtsYXNzLmluc3RhbmNlUG9vbC5wb3AoKTsKKyAgICBLbGFzcy5jYWxsKGluc3RhbmNl
LCBhMSwgYTIsIGEzLCBhNCk7CisgICAgcmV0dXJuIGluc3RhbmNlOworICB9IGVsc2UgeworICAg
IHJldHVybiBuZXcgS2xhc3MoYTEsIGEyLCBhMywgYTQpOworICB9Cit9OworCit2YXIgZml2ZUFy
Z3VtZW50UG9vbGVyID0gZnVuY3Rpb24gKGExLCBhMiwgYTMsIGE0LCBhNSkgeworICB2YXIgS2xh
c3MgPSB0aGlzOworICBpZiAoS2xhc3MuaW5zdGFuY2VQb29sLmxlbmd0aCkgeworICAgIHZhciBp
bnN0YW5jZSA9IEtsYXNzLmluc3RhbmNlUG9vbC5wb3AoKTsKKyAgICBLbGFzcy5jYWxsKGluc3Rh
bmNlLCBhMSwgYTIsIGEzLCBhNCwgYTUpOworICAgIHJldHVybiBpbnN0YW5jZTsKKyAgfSBlbHNl
IHsKKyAgICByZXR1cm4gbmV3IEtsYXNzKGExLCBhMiwgYTMsIGE0LCBhNSk7CisgIH0KK307CisK
K3ZhciBzdGFuZGFyZFJlbGVhc2VyID0gZnVuY3Rpb24gKGluc3RhbmNlKSB7CisgIHZhciBLbGFz
cyA9IHRoaXM7CisgICEoaW5zdGFuY2UgaW5zdGFuY2VvZiBLbGFzcykgPyBwcm9jZXNzLmVudi5O
T0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnVHJ5aW5nIHRvIHJl
bGVhc2UgYW4gaW5zdGFuY2UgaW50byBhIHBvb2wgb2YgYSBkaWZmZXJlbnQgdHlwZS4nKSA6IF9w
cm9kSW52YXJpYW50KCcyNScpIDogdm9pZCAwOworICBpbnN0YW5jZS5kZXN0cnVjdG9yKCk7Cisg
IGlmIChLbGFzcy5pbnN0YW5jZVBvb2wubGVuZ3RoIDwgS2xhc3MucG9vbFNpemUpIHsKKyAgICBL
bGFzcy5pbnN0YW5jZVBvb2wucHVzaChpbnN0YW5jZSk7CisgIH0KK307CisKK3ZhciBERUZBVUxU
X1BPT0xfU0laRSA9IDEwOwordmFyIERFRkFVTFRfUE9PTEVSID0gb25lQXJndW1lbnRQb29sZXI7
CisKKy8qKgorICogQXVnbWVudHMgYENvcHlDb25zdHJ1Y3RvcmAgdG8gYmUgYSBwb29sYWJsZSBj
bGFzcywgYXVnbWVudGluZyBvbmx5IHRoZSBjbGFzcworICogaXRzZWxmIChzdGF0aWNhbGx5KSBu
b3QgYWRkaW5nIGFueSBwcm90b3R5cGljYWwgZmllbGRzLiBBbnkgQ29weUNvbnN0cnVjdG9yCisg
KiB5b3UgZ2l2ZSB0aGlzIG1heSBoYXZlIGEgYHBvb2xTaXplYCBwcm9wZXJ0eSwgYW5kIHdpbGwg
bG9vayBmb3IgYQorICogcHJvdG90eXBpY2FsIGBkZXN0cnVjdG9yYCBvbiBpbnN0YW5jZXMuCisg
KgorICogQHBhcmFtIHtGdW5jdGlvbn0gQ29weUNvbnN0cnVjdG9yIENvbnN0cnVjdG9yIHRoYXQg
Y2FuIGJlIHVzZWQgdG8gcmVzZXQuCisgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwb29sZXIgQ3VzdG9t
aXphYmxlIHBvb2xlci4KKyAqLwordmFyIGFkZFBvb2xpbmdUbyA9IGZ1bmN0aW9uIChDb3B5Q29u
c3RydWN0b3IsIHBvb2xlcikgeworICAvLyBDYXN0aW5nIGFzIGFueSBzbyB0aGF0IGZsb3cgaWdu
b3JlcyB0aGUgYWN0dWFsIGltcGxlbWVudGF0aW9uIGFuZCB0cnVzdHMKKyAgLy8gaXQgdG8gbWF0
Y2ggdGhlIHR5cGUgd2UgZGVjbGFyZWQKKyAgdmFyIE5ld0tsYXNzID0gQ29weUNvbnN0cnVjdG9y
OworICBOZXdLbGFzcy5pbnN0YW5jZVBvb2wgPSBbXTsKKyAgTmV3S2xhc3MuZ2V0UG9vbGVkID0g
cG9vbGVyIHx8IERFRkFVTFRfUE9PTEVSOworICBpZiAoIU5ld0tsYXNzLnBvb2xTaXplKSB7Cisg
ICAgTmV3S2xhc3MucG9vbFNpemUgPSBERUZBVUxUX1BPT0xfU0laRTsKKyAgfQorICBOZXdLbGFz
cy5yZWxlYXNlID0gc3RhbmRhcmRSZWxlYXNlcjsKKyAgcmV0dXJuIE5ld0tsYXNzOworfTsKKwor
dmFyIFBvb2xlZENsYXNzID0geworICBhZGRQb29saW5nVG86IGFkZFBvb2xpbmdUbywKKyAgb25l
QXJndW1lbnRQb29sZXI6IG9uZUFyZ3VtZW50UG9vbGVyLAorICB0d29Bcmd1bWVudFBvb2xlcjog
dHdvQXJndW1lbnRQb29sZXIsCisgIHRocmVlQXJndW1lbnRQb29sZXI6IHRocmVlQXJndW1lbnRQ
b29sZXIsCisgIGZvdXJBcmd1bWVudFBvb2xlcjogZm91ckFyZ3VtZW50UG9vbGVyLAorICBmaXZl
QXJndW1lbnRQb29sZXI6IGZpdmVBcmd1bWVudFBvb2xlcgorfTsKKworbW9kdWxlLmV4cG9ydHMg
PSBQb29sZWRDbGFzczsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdEJyb3dzZXJF
dmVudEVtaXR0ZXIuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9t
L2xpYi9SZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGI4M2JjMDI1NTc1
MjQ5OGMzYTZhNzE1ZTZmZTgwN2E2YzJlNDU0ZQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0QnJvd3NlckV2ZW50RW1p
dHRlci5qcwpAQCAtMCwwICsxLDMyNyBAQAorLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICov
CisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9hc3NpZ24gPSByZXF1aXJlKCdvYmplY3QtYXNzaWdu
Jyk7CisKK3ZhciBFdmVudFBsdWdpblJlZ2lzdHJ5ID0gcmVxdWlyZSgnLi9FdmVudFBsdWdpblJl
Z2lzdHJ5Jyk7Cit2YXIgUmVhY3RFdmVudEVtaXR0ZXJNaXhpbiA9IHJlcXVpcmUoJy4vUmVhY3RF
dmVudEVtaXR0ZXJNaXhpbicpOwordmFyIFZpZXdwb3J0TWV0cmljcyA9IHJlcXVpcmUoJy4vVmll
d3BvcnRNZXRyaWNzJyk7CisKK3ZhciBnZXRWZW5kb3JQcmVmaXhlZEV2ZW50TmFtZSA9IHJlcXVp
cmUoJy4vZ2V0VmVuZG9yUHJlZml4ZWRFdmVudE5hbWUnKTsKK3ZhciBpc0V2ZW50U3VwcG9ydGVk
ID0gcmVxdWlyZSgnLi9pc0V2ZW50U3VwcG9ydGVkJyk7CisKKy8qKgorICogU3VtbWFyeSBvZiBg
UmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyYCBldmVudCBoYW5kbGluZzoKKyAqCisgKiAgLSBUb3At
bGV2ZWwgZGVsZWdhdGlvbiBpcyB1c2VkIHRvIHRyYXAgbW9zdCBuYXRpdmUgYnJvd3NlciBldmVu
dHMuIFRoaXMKKyAqICAgIG1heSBvbmx5IG9jY3VyIGluIHRoZSBtYWluIHRocmVhZCBhbmQgaXMg
dGhlIHJlc3BvbnNpYmlsaXR5IG9mCisgKiAgICBSZWFjdEV2ZW50TGlzdGVuZXIsIHdoaWNoIGlz
IGluamVjdGVkIGFuZCBjYW4gdGhlcmVmb3JlIHN1cHBvcnQgcGx1Z2dhYmxlCisgKiAgICBldmVu
dCBzb3VyY2VzLiBUaGlzIGlzIHRoZSBvbmx5IHdvcmsgdGhhdCBvY2N1cnMgaW4gdGhlIG1haW4g
dGhyZWFkLgorICoKKyAqICAtIFdlIG5vcm1hbGl6ZSBhbmQgZGUtZHVwbGljYXRlIGV2ZW50cyB0
byBhY2NvdW50IGZvciBicm93c2VyIHF1aXJrcy4gVGhpcworICogICAgbWF5IGJlIGRvbmUgaW4g
dGhlIHdvcmtlciB0aHJlYWQuCisgKgorICogIC0gRm9yd2FyZCB0aGVzZSBuYXRpdmUgZXZlbnRz
ICh3aXRoIHRoZSBhc3NvY2lhdGVkIHRvcC1sZXZlbCB0eXBlIHVzZWQgdG8KKyAqICAgIHRyYXAg
aXQpIHRvIGBFdmVudFBsdWdpbkh1YmAsIHdoaWNoIGluIHR1cm4gd2lsbCBhc2sgcGx1Z2lucyBp
ZiB0aGV5IHdhbnQKKyAqICAgIHRvIGV4dHJhY3QgYW55IHN5bnRoZXRpYyBldmVudHMuCisgKgor
ICogIC0gVGhlIGBFdmVudFBsdWdpbkh1YmAgd2lsbCB0aGVuIHByb2Nlc3MgZWFjaCBldmVudCBi
eSBhbm5vdGF0aW5nIHRoZW0gd2l0aAorICogICAgImRpc3BhdGNoZXMiLCBhIHNlcXVlbmNlIG9m
IGxpc3RlbmVycyBhbmQgSURzIHRoYXQgY2FyZSBhYm91dCB0aGF0IGV2ZW50LgorICoKKyAqICAt
IFRoZSBgRXZlbnRQbHVnaW5IdWJgIHRoZW4gZGlzcGF0Y2hlcyB0aGUgZXZlbnRzLgorICoKKyAq
IE92ZXJ2aWV3IG9mIFJlYWN0IGFuZCB0aGUgZXZlbnQgc3lzdGVtOgorICoKKyAqICstLS0tLS0t
LS0tLS0rICAgIC4KKyAqIHwgICAgRE9NICAgICB8ICAgIC4KKyAqICstLS0tLS0tLS0tLS0rICAg
IC4KKyAqICAgICAgIHwgICAgICAgICAgIC4KKyAqICAgICAgIHYgICAgICAgICAgIC4KKyAqICst
LS0tLS0tLS0tLS0rICAgIC4KKyAqIHwgUmVhY3RFdmVudCB8ICAgIC4KKyAqIHwgIExpc3RlbmVy
ICB8ICAgIC4KKyAqICstLS0tLS0tLS0tLS0rICAgIC4gICAgICAgICAgICAgICAgICAgICAgICAg
Ky0tLS0tLS0tLS0tKworICogICAgICAgfCAgICAgICAgICAgLiAgICAgICAgICAgICAgICstLS0t
LS0tLSt8U2ltcGxlRXZlbnR8CisgKiAgICAgICB8ICAgICAgICAgICAuICAgICAgICAgICAgICAg
fCAgICAgICAgIHxQbHVnaW4gICAgIHwKKyAqICstLS0tLXwtLS0tLS0rICAgIC4gICAgICAgICAg
ICAgICB2ICAgICAgICAgKy0tLS0tLS0tLS0tKworICogfCAgICAgfCAgICAgIHwgICAgLiAgICAr
LS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tKworICogfCAg
ICAgKy0tLS0tLS0tLS0tLi0tLT58RXZlbnRQbHVnaW5IdWJ8ICAgICAgICAgICAgICAgICAgICB8
ICAgIEV2ZW50ICAgfAorICogfCAgICAgICAgICAgIHwgICAgLiAgICB8ICAgICAgICAgICAgICB8
ICAgICArLS0tLS0tLS0tLS0rICB8IFByb3BhZ2F0b3JzfAorICogfCBSZWFjdEV2ZW50IHwgICAg
LiAgICB8ICAgICAgICAgICAgICB8ICAgICB8VGFwRXZlbnQgICB8ICB8LS0tLS0tLS0tLS0tfAor
ICogfCAgRW1pdHRlciAgIHwgICAgLiAgICB8ICAgICAgICAgICAgICB8PC0tLSt8UGx1Z2luICAg
ICB8ICB8b3RoZXIgcGx1Z2lufAorICogfCAgICAgICAgICAgIHwgICAgLiAgICB8ICAgICAgICAg
ICAgICB8ICAgICArLS0tLS0tLS0tLS0rICB8ICB1dGlsaXRpZXMgfAorICogfCAgICAgKy0tLS0t
LS0tLS0tLi0tLT58ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0t
LS0tKworICogfCAgICAgfCAgICAgIHwgICAgLiAgICArLS0tLS0tLS0tLS0tLS0rCisgKiArLS0t
LS18LS0tLS0tKyAgICAuICAgICAgICAgICAgICAgIF4gICAgICAgICstLS0tLS0tLS0tLSsKKyAq
ICAgICAgIHwgICAgICAgICAgIC4gICAgICAgICAgICAgICAgfCAgICAgICAgfEVudGVyL0xlYXZl
fAorICogICAgICAgKyAgICAgICAgICAgLiAgICAgICAgICAgICAgICArLS0tLS0tLSt8UGx1Z2lu
ICAgICB8CisgKiArLS0tLS0tLS0tLS0tLSsgICAuICAgICAgICAgICAgICAgICAgICAgICAgICst
LS0tLS0tLS0tLSsKKyAqIHwgYXBwbGljYXRpb24gfCAgIC4KKyAqIHwtLS0tLS0tLS0tLS0tfCAg
IC4KKyAqIHwgICAgICAgICAgICAgfCAgIC4KKyAqIHwgICAgICAgICAgICAgfCAgIC4KKyAqICst
LS0tLS0tLS0tLS0tKyAgIC4KKyAqICAgICAgICAgICAgICAgICAgIC4KKyAqICAgIFJlYWN0IENv
cmUgICAgIC4gIEdlbmVyYWwgUHVycG9zZSBFdmVudCBQbHVnaW4gU3lzdGVtCisgKi8KKwordmFy
IGhhc0V2ZW50UGFnZVhZOwordmFyIGFscmVhZHlMaXN0ZW5pbmdUbyA9IHt9OwordmFyIGlzTW9u
aXRvcmluZ1Njcm9sbFZhbHVlID0gZmFsc2U7Cit2YXIgcmVhY3RUb3BMaXN0ZW5lcnNDb3VudGVy
ID0gMDsKKworLy8gRm9yIGV2ZW50cyBsaWtlICdzdWJtaXQnIHdoaWNoIGRvbid0IGNvbnNpc3Rl
bnRseSBidWJibGUgKHdoaWNoIHdlIHRyYXAgYXQgYQorLy8gbG93ZXIgbm9kZSB0aGFuIGBkb2N1
bWVudGApLCBiaW5kaW5nIGF0IGBkb2N1bWVudGAgd291bGQgY2F1c2UgZHVwbGljYXRlCisvLyBl
dmVudHMgc28gd2UgZG9uJ3QgaW5jbHVkZSB0aGVtIGhlcmUKK3ZhciB0b3BFdmVudE1hcHBpbmcg
PSB7CisgIHRvcEFib3J0OiAnYWJvcnQnLAorICB0b3BBbmltYXRpb25FbmQ6IGdldFZlbmRvclBy
ZWZpeGVkRXZlbnROYW1lKCdhbmltYXRpb25lbmQnKSB8fCAnYW5pbWF0aW9uZW5kJywKKyAgdG9w
QW5pbWF0aW9uSXRlcmF0aW9uOiBnZXRWZW5kb3JQcmVmaXhlZEV2ZW50TmFtZSgnYW5pbWF0aW9u
aXRlcmF0aW9uJykgfHwgJ2FuaW1hdGlvbml0ZXJhdGlvbicsCisgIHRvcEFuaW1hdGlvblN0YXJ0
OiBnZXRWZW5kb3JQcmVmaXhlZEV2ZW50TmFtZSgnYW5pbWF0aW9uc3RhcnQnKSB8fCAnYW5pbWF0
aW9uc3RhcnQnLAorICB0b3BCbHVyOiAnYmx1cicsCisgIHRvcENhblBsYXk6ICdjYW5wbGF5JywK
KyAgdG9wQ2FuUGxheVRocm91Z2g6ICdjYW5wbGF5dGhyb3VnaCcsCisgIHRvcENoYW5nZTogJ2No
YW5nZScsCisgIHRvcENsaWNrOiAnY2xpY2snLAorICB0b3BDb21wb3NpdGlvbkVuZDogJ2NvbXBv
c2l0aW9uZW5kJywKKyAgdG9wQ29tcG9zaXRpb25TdGFydDogJ2NvbXBvc2l0aW9uc3RhcnQnLAor
ICB0b3BDb21wb3NpdGlvblVwZGF0ZTogJ2NvbXBvc2l0aW9udXBkYXRlJywKKyAgdG9wQ29udGV4
dE1lbnU6ICdjb250ZXh0bWVudScsCisgIHRvcENvcHk6ICdjb3B5JywKKyAgdG9wQ3V0OiAnY3V0
JywKKyAgdG9wRG91YmxlQ2xpY2s6ICdkYmxjbGljaycsCisgIHRvcERyYWc6ICdkcmFnJywKKyAg
dG9wRHJhZ0VuZDogJ2RyYWdlbmQnLAorICB0b3BEcmFnRW50ZXI6ICdkcmFnZW50ZXInLAorICB0
b3BEcmFnRXhpdDogJ2RyYWdleGl0JywKKyAgdG9wRHJhZ0xlYXZlOiAnZHJhZ2xlYXZlJywKKyAg
dG9wRHJhZ092ZXI6ICdkcmFnb3ZlcicsCisgIHRvcERyYWdTdGFydDogJ2RyYWdzdGFydCcsCisg
IHRvcERyb3A6ICdkcm9wJywKKyAgdG9wRHVyYXRpb25DaGFuZ2U6ICdkdXJhdGlvbmNoYW5nZScs
CisgIHRvcEVtcHRpZWQ6ICdlbXB0aWVkJywKKyAgdG9wRW5jcnlwdGVkOiAnZW5jcnlwdGVkJywK
KyAgdG9wRW5kZWQ6ICdlbmRlZCcsCisgIHRvcEVycm9yOiAnZXJyb3InLAorICB0b3BGb2N1czog
J2ZvY3VzJywKKyAgdG9wSW5wdXQ6ICdpbnB1dCcsCisgIHRvcEtleURvd246ICdrZXlkb3duJywK
KyAgdG9wS2V5UHJlc3M6ICdrZXlwcmVzcycsCisgIHRvcEtleVVwOiAna2V5dXAnLAorICB0b3BM
b2FkZWREYXRhOiAnbG9hZGVkZGF0YScsCisgIHRvcExvYWRlZE1ldGFkYXRhOiAnbG9hZGVkbWV0
YWRhdGEnLAorICB0b3BMb2FkU3RhcnQ6ICdsb2Fkc3RhcnQnLAorICB0b3BNb3VzZURvd246ICdt
b3VzZWRvd24nLAorICB0b3BNb3VzZU1vdmU6ICdtb3VzZW1vdmUnLAorICB0b3BNb3VzZU91dDog
J21vdXNlb3V0JywKKyAgdG9wTW91c2VPdmVyOiAnbW91c2VvdmVyJywKKyAgdG9wTW91c2VVcDog
J21vdXNldXAnLAorICB0b3BQYXN0ZTogJ3Bhc3RlJywKKyAgdG9wUGF1c2U6ICdwYXVzZScsCisg
IHRvcFBsYXk6ICdwbGF5JywKKyAgdG9wUGxheWluZzogJ3BsYXlpbmcnLAorICB0b3BQcm9ncmVz
czogJ3Byb2dyZXNzJywKKyAgdG9wUmF0ZUNoYW5nZTogJ3JhdGVjaGFuZ2UnLAorICB0b3BTY3Jv
bGw6ICdzY3JvbGwnLAorICB0b3BTZWVrZWQ6ICdzZWVrZWQnLAorICB0b3BTZWVraW5nOiAnc2Vl
a2luZycsCisgIHRvcFNlbGVjdGlvbkNoYW5nZTogJ3NlbGVjdGlvbmNoYW5nZScsCisgIHRvcFN0
YWxsZWQ6ICdzdGFsbGVkJywKKyAgdG9wU3VzcGVuZDogJ3N1c3BlbmQnLAorICB0b3BUZXh0SW5w
dXQ6ICd0ZXh0SW5wdXQnLAorICB0b3BUaW1lVXBkYXRlOiAndGltZXVwZGF0ZScsCisgIHRvcFRv
dWNoQ2FuY2VsOiAndG91Y2hjYW5jZWwnLAorICB0b3BUb3VjaEVuZDogJ3RvdWNoZW5kJywKKyAg
dG9wVG91Y2hNb3ZlOiAndG91Y2htb3ZlJywKKyAgdG9wVG91Y2hTdGFydDogJ3RvdWNoc3RhcnQn
LAorICB0b3BUcmFuc2l0aW9uRW5kOiBnZXRWZW5kb3JQcmVmaXhlZEV2ZW50TmFtZSgndHJhbnNp
dGlvbmVuZCcpIHx8ICd0cmFuc2l0aW9uZW5kJywKKyAgdG9wVm9sdW1lQ2hhbmdlOiAndm9sdW1l
Y2hhbmdlJywKKyAgdG9wV2FpdGluZzogJ3dhaXRpbmcnLAorICB0b3BXaGVlbDogJ3doZWVsJwor
fTsKKworLyoqCisgKiBUbyBlbnN1cmUgbm8gY29uZmxpY3RzIHdpdGggb3RoZXIgcG90ZW50aWFs
IFJlYWN0IGluc3RhbmNlcyBvbiB0aGUgcGFnZQorICovCit2YXIgdG9wTGlzdGVuZXJzSURLZXkg
PSAnX3JlYWN0TGlzdGVuZXJzSUQnICsgU3RyaW5nKE1hdGgucmFuZG9tKCkpLnNsaWNlKDIpOwor
CitmdW5jdGlvbiBnZXRMaXN0ZW5pbmdGb3JEb2N1bWVudChtb3VudEF0KSB7CisgIC8vIEluIElF
OCwgYG1vdW50QXRgIGlzIGEgaG9zdCBvYmplY3QgYW5kIGRvZXNuJ3QgaGF2ZSBgaGFzT3duUHJv
cGVydHlgCisgIC8vIGRpcmVjdGx5LgorICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJv
cGVydHkuY2FsbChtb3VudEF0LCB0b3BMaXN0ZW5lcnNJREtleSkpIHsKKyAgICBtb3VudEF0W3Rv
cExpc3RlbmVyc0lES2V5XSA9IHJlYWN0VG9wTGlzdGVuZXJzQ291bnRlcisrOworICAgIGFscmVh
ZHlMaXN0ZW5pbmdUb1ttb3VudEF0W3RvcExpc3RlbmVyc0lES2V5XV0gPSB7fTsKKyAgfQorICBy
ZXR1cm4gYWxyZWFkeUxpc3RlbmluZ1RvW21vdW50QXRbdG9wTGlzdGVuZXJzSURLZXldXTsKK30K
KworLyoqCisgKiBgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyYCBpcyB1c2VkIHRvIGF0dGFjaCB0
b3AtbGV2ZWwgZXZlbnQgbGlzdGVuZXJzLiBGb3IKKyAqIGV4YW1wbGU6CisgKgorICogICBFdmVu
dFBsdWdpbkh1Yi5wdXRMaXN0ZW5lcignbXlJRCcsICdvbkNsaWNrJywgbXlGdW5jdGlvbik7Cisg
KgorICogVGhpcyB3b3VsZCBhbGxvY2F0ZSBhICJyZWdpc3RyYXRpb24iIG9mIGAoJ29uQ2xpY2sn
LCBteUZ1bmN0aW9uKWAgb24gJ215SUQnLgorICoKKyAqIEBpbnRlcm5hbAorICovCit2YXIgUmVh
Y3RCcm93c2VyRXZlbnRFbWl0dGVyID0gX2Fzc2lnbih7fSwgUmVhY3RFdmVudEVtaXR0ZXJNaXhp
biwgeworCisgIC8qKgorICAgKiBJbmplY3RhYmxlIGV2ZW50IGJhY2tlbmQKKyAgICovCisgIFJl
YWN0RXZlbnRMaXN0ZW5lcjogbnVsbCwKKworICBpbmplY3Rpb246IHsKKyAgICAvKioKKyAgICAg
KiBAcGFyYW0ge29iamVjdH0gUmVhY3RFdmVudExpc3RlbmVyCisgICAgICovCisgICAgaW5qZWN0
UmVhY3RFdmVudExpc3RlbmVyOiBmdW5jdGlvbiAoUmVhY3RFdmVudExpc3RlbmVyKSB7CisgICAg
ICBSZWFjdEV2ZW50TGlzdGVuZXIuc2V0SGFuZGxlVG9wTGV2ZWwoUmVhY3RCcm93c2VyRXZlbnRF
bWl0dGVyLmhhbmRsZVRvcExldmVsKTsKKyAgICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5S
ZWFjdEV2ZW50TGlzdGVuZXIgPSBSZWFjdEV2ZW50TGlzdGVuZXI7CisgICAgfQorICB9LAorCisg
IC8qKgorICAgKiBTZXRzIHdoZXRoZXIgb3Igbm90IGFueSBjcmVhdGVkIGNhbGxiYWNrcyBzaG91
bGQgYmUgZW5hYmxlZC4KKyAgICoKKyAgICogQHBhcmFtIHtib29sZWFufSBlbmFibGVkIFRydWUg
aWYgY2FsbGJhY2tzIHNob3VsZCBiZSBlbmFibGVkLgorICAgKi8KKyAgc2V0RW5hYmxlZDogZnVu
Y3Rpb24gKGVuYWJsZWQpIHsKKyAgICBpZiAoUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0
RXZlbnRMaXN0ZW5lcikgeworICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZl
bnRMaXN0ZW5lci5zZXRFbmFibGVkKGVuYWJsZWQpOworICAgIH0KKyAgfSwKKworICAvKioKKyAg
ICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBjYWxsYmFja3MgYXJlIGVuYWJsZWQuCisgICAq
LworICBpc0VuYWJsZWQ6IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gISEoUmVhY3RCcm93c2Vy
RXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lciAmJiBSZWFjdEJyb3dzZXJFdmVudEVtaXR0
ZXIuUmVhY3RFdmVudExpc3RlbmVyLmlzRW5hYmxlZCgpKTsKKyAgfSwKKworICAvKioKKyAgICog
V2UgbGlzdGVuIGZvciBidWJibGVkIHRvdWNoIGV2ZW50cyBvbiB0aGUgZG9jdW1lbnQgb2JqZWN0
LgorICAgKgorICAgKiBGaXJlZm94IHY4LjAxIChhbmQgcG9zc2libHkgb3RoZXJzKSBleGhpYml0
ZWQgc3RyYW5nZSBiZWhhdmlvciB3aGVuCisgICAqIG1vdW50aW5nIGBvbm1vdXNlbW92ZWAgZXZl
bnRzIGF0IHNvbWUgbm9kZSB0aGF0IHdhcyBub3QgdGhlIGRvY3VtZW50CisgICAqIGVsZW1lbnQu
IFRoZSBzeW1wdG9tcyB3ZXJlIHRoYXQgaWYgeW91ciBtb3VzZSBpcyBub3QgbW92aW5nIG92ZXIg
c29tZXRoaW5nCisgICAqIGNvbnRhaW5lZCB3aXRoaW4gdGhhdCBtb3VudCBwb2ludCAoZm9yIGV4
YW1wbGUgb24gdGhlIGJhY2tncm91bmQpIHRoZQorICAgKiB0b3AtbGV2ZWwgbGlzdGVuZXJzIGZv
ciBgb25tb3VzZW1vdmVgIHdvbid0IGJlIGNhbGxlZC4gSG93ZXZlciwgaWYgeW91CisgICAqIHJl
Z2lzdGVyIHRoZSBgbW91c2Vtb3ZlYCBvbiB0aGUgZG9jdW1lbnQgb2JqZWN0LCB0aGVuIGl0IHdp
bGwgb2YgY291cnNlCisgICAqIGNhdGNoIGFsbCBgbW91c2Vtb3ZlYHMuIFRoaXMgYWxvbmcgd2l0
aCBpT1MgcXVpcmtzLCBqdXN0aWZpZXMgcmVzdHJpY3RpbmcKKyAgICogdG9wLWxldmVsIGxpc3Rl
bmVycyB0byB0aGUgZG9jdW1lbnQgb2JqZWN0IG9ubHksIGF0IGxlYXN0IGZvciB0aGVzZQorICAg
KiBtb3ZlbWVudCB0eXBlcyBvZiBldmVudHMgYW5kIHBvc3NpYmx5IGFsbCBldmVudHMuCisgICAq
CisgICAqIEBzZWUgaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9ibG9nL2FyY2hpdmVzLzIwMTAv
MDkvY2xpY2tfZXZlbnRfZGVsLmh0bWwKKyAgICoKKyAgICogQWxzbywgYGtleXVwYC9ga2V5cHJl
c3NgL2BrZXlkb3duYCBkbyBub3QgYnViYmxlIHRvIHRoZSB3aW5kb3cgb24gSUUsIGJ1dAorICAg
KiB0aGV5IGJ1YmJsZSB0byBkb2N1bWVudC4KKyAgICoKKyAgICogQHBhcmFtIHtzdHJpbmd9IHJl
Z2lzdHJhdGlvbk5hbWUgTmFtZSBvZiBsaXN0ZW5lciAoZS5nLiBgb25DbGlja2ApLgorICAgKiBA
cGFyYW0ge29iamVjdH0gY29udGVudERvY3VtZW50SGFuZGxlIERvY3VtZW50IHdoaWNoIG93bnMg
dGhlIGNvbnRhaW5lcgorICAgKi8KKyAgbGlzdGVuVG86IGZ1bmN0aW9uIChyZWdpc3RyYXRpb25O
YW1lLCBjb250ZW50RG9jdW1lbnRIYW5kbGUpIHsKKyAgICB2YXIgbW91bnRBdCA9IGNvbnRlbnRE
b2N1bWVudEhhbmRsZTsKKyAgICB2YXIgaXNMaXN0ZW5pbmcgPSBnZXRMaXN0ZW5pbmdGb3JEb2N1
bWVudChtb3VudEF0KTsKKyAgICB2YXIgZGVwZW5kZW5jaWVzID0gRXZlbnRQbHVnaW5SZWdpc3Ry
eS5yZWdpc3RyYXRpb25OYW1lRGVwZW5kZW5jaWVzW3JlZ2lzdHJhdGlvbk5hbWVdOworCisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBkZXBlbmRlbmNpZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZh
ciBkZXBlbmRlbmN5ID0gZGVwZW5kZW5jaWVzW2ldOworICAgICAgaWYgKCEoaXNMaXN0ZW5pbmcu
aGFzT3duUHJvcGVydHkoZGVwZW5kZW5jeSkgJiYgaXNMaXN0ZW5pbmdbZGVwZW5kZW5jeV0pKSB7
CisgICAgICAgIGlmIChkZXBlbmRlbmN5ID09PSAndG9wV2hlZWwnKSB7CisgICAgICAgICAgaWYg
KGlzRXZlbnRTdXBwb3J0ZWQoJ3doZWVsJykpIHsKKyAgICAgICAgICAgIFJlYWN0QnJvd3NlckV2
ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudCgndG9wV2hlZWwn
LCAnd2hlZWwnLCBtb3VudEF0KTsKKyAgICAgICAgICB9IGVsc2UgaWYgKGlzRXZlbnRTdXBwb3J0
ZWQoJ21vdXNld2hlZWwnKSkgeworICAgICAgICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVy
LlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KCd0b3BXaGVlbCcsICdtb3VzZXdo
ZWVsJywgbW91bnRBdCk7CisgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIEZpcmVm
b3ggbmVlZHMgdG8gY2FwdHVyZSBhIGRpZmZlcmVudCBtb3VzZSBzY3JvbGwgZXZlbnQuCisgICAg
ICAgICAgICAvLyBAc2VlIGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvZG9tL2V2ZW50cy90ZXN0
cy9zY3JvbGwuaHRtbAorICAgICAgICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0
RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KCd0b3BXaGVlbCcsICdET01Nb3VzZVNjcm9s
bCcsIG1vdW50QXQpOworICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChkZXBlbmRlbmN5
ID09PSAndG9wU2Nyb2xsJykgeworCisgICAgICAgICAgaWYgKGlzRXZlbnRTdXBwb3J0ZWQoJ3Nj
cm9sbCcsIHRydWUpKSB7CisgICAgICAgICAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVh
Y3RFdmVudExpc3RlbmVyLnRyYXBDYXB0dXJlZEV2ZW50KCd0b3BTY3JvbGwnLCAnc2Nyb2xsJywg
bW91bnRBdCk7CisgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFJlYWN0QnJvd3NlckV2
ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudCgndG9wU2Nyb2xs
JywgJ3Njcm9sbCcsIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIu
V0lORE9XX0hBTkRMRSk7CisgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKGRlcGVuZGVu
Y3kgPT09ICd0b3BGb2N1cycgfHwgZGVwZW5kZW5jeSA9PT0gJ3RvcEJsdXInKSB7CisKKyAgICAg
ICAgICBpZiAoaXNFdmVudFN1cHBvcnRlZCgnZm9jdXMnLCB0cnVlKSkgeworICAgICAgICAgICAg
UmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQ2FwdHVyZWRF
dmVudCgndG9wRm9jdXMnLCAnZm9jdXMnLCBtb3VudEF0KTsKKyAgICAgICAgICAgIFJlYWN0QnJv
d3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcENhcHR1cmVkRXZlbnQoJ3Rv
cEJsdXInLCAnYmx1cicsIG1vdW50QXQpOworICAgICAgICAgIH0gZWxzZSBpZiAoaXNFdmVudFN1
cHBvcnRlZCgnZm9jdXNpbicpKSB7CisgICAgICAgICAgICAvLyBJRSBoYXMgYGZvY3VzaW5gIGFu
ZCBgZm9jdXNvdXRgIGV2ZW50cyB3aGljaCBidWJibGUuCisgICAgICAgICAgICAvLyBAc2VlIGh0
dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvYmxvZy9hcmNoaXZlcy8yMDA4LzA0L2RlbGVnYXRpbmdf
dGhlLmh0bWwKKyAgICAgICAgICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50
TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudCgndG9wRm9jdXMnLCAnZm9jdXNpbicsIG1vdW50QXQp
OworICAgICAgICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5l
ci50cmFwQnViYmxlZEV2ZW50KCd0b3BCbHVyJywgJ2ZvY3Vzb3V0JywgbW91bnRBdCk7CisgICAg
ICAgICAgfQorCisgICAgICAgICAgLy8gdG8gbWFrZSBzdXJlIGJsdXIgYW5kIGZvY3VzIGV2ZW50
IGxpc3RlbmVycyBhcmUgb25seSBhdHRhY2hlZCBvbmNlCisgICAgICAgICAgaXNMaXN0ZW5pbmcu
dG9wQmx1ciA9IHRydWU7CisgICAgICAgICAgaXNMaXN0ZW5pbmcudG9wRm9jdXMgPSB0cnVlOwor
ICAgICAgICB9IGVsc2UgaWYgKHRvcEV2ZW50TWFwcGluZy5oYXNPd25Qcm9wZXJ0eShkZXBlbmRl
bmN5KSkgeworICAgICAgICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlz
dGVuZXIudHJhcEJ1YmJsZWRFdmVudChkZXBlbmRlbmN5LCB0b3BFdmVudE1hcHBpbmdbZGVwZW5k
ZW5jeV0sIG1vdW50QXQpOworICAgICAgICB9CisKKyAgICAgICAgaXNMaXN0ZW5pbmdbZGVwZW5k
ZW5jeV0gPSB0cnVlOworICAgICAgfQorICAgIH0KKyAgfSwKKworICB0cmFwQnViYmxlZEV2ZW50
OiBmdW5jdGlvbiAodG9wTGV2ZWxUeXBlLCBoYW5kbGVyQmFzZU5hbWUsIGhhbmRsZSkgeworICAg
IHJldHVybiBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBC
dWJibGVkRXZlbnQodG9wTGV2ZWxUeXBlLCBoYW5kbGVyQmFzZU5hbWUsIGhhbmRsZSk7CisgIH0s
CisKKyAgdHJhcENhcHR1cmVkRXZlbnQ6IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUsIGhhbmRsZXJC
YXNlTmFtZSwgaGFuZGxlKSB7CisgICAgcmV0dXJuIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5S
ZWFjdEV2ZW50TGlzdGVuZXIudHJhcENhcHR1cmVkRXZlbnQodG9wTGV2ZWxUeXBlLCBoYW5kbGVy
QmFzZU5hbWUsIGhhbmRsZSk7CisgIH0sCisKKyAgLyoqCisgICAqIFByb3RlY3QgYWdhaW5zdCBk
b2N1bWVudC5jcmVhdGVFdmVudCgpIHJldHVybmluZyBudWxsCisgICAqIFNvbWUgcG9wdXAgYmxv
Y2tlciBleHRlbnNpb25zIGFwcGVhciB0byBkbyB0aGlzOgorICAgKiBodHRwczovL2dpdGh1Yi5j
b20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzY4ODcKKyAgICovCisgIHN1cHBvcnRzRXZlbnRQYWdl
WFk6IGZ1bmN0aW9uICgpIHsKKyAgICBpZiAoIWRvY3VtZW50LmNyZWF0ZUV2ZW50KSB7CisgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHZhciBldiA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50
KCdNb3VzZUV2ZW50Jyk7CisgICAgcmV0dXJuIGV2ICE9IG51bGwgJiYgJ3BhZ2VYJyBpbiBldjsK
KyAgfSwKKworICAvKioKKyAgICogTGlzdGVucyB0byB3aW5kb3cgc2Nyb2xsIGFuZCByZXNpemUg
ZXZlbnRzLiBXZSBjYWNoZSBzY3JvbGwgdmFsdWVzIHNvIHRoYXQKKyAgICogYXBwbGljYXRpb24g
Y29kZSBjYW4gYWNjZXNzIHRoZW0gd2l0aG91dCB0cmlnZ2VyaW5nIHJlZmxvd3MuCisgICAqCisg
ICAqIFZpZXdwb3J0TWV0cmljcyBpcyBvbmx5IHVzZWQgYnkgU3ludGhldGljTW91c2UvVG91Y2hF
dmVudCBhbmQgb25seSB3aGVuCisgICAqIHBhZ2VYL3BhZ2VZIGlzbid0IHN1cHBvcnRlZCAobGVn
YWN5IGJyb3dzZXJzKS4KKyAgICoKKyAgICogTk9URTogU2Nyb2xsIGV2ZW50cyBkbyBub3QgYnVi
YmxlLgorICAgKgorICAgKiBAc2VlIGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvZG9tL2V2ZW50
cy9zY3JvbGwuaHRtbAorICAgKi8KKyAgZW5zdXJlU2Nyb2xsVmFsdWVNb25pdG9yaW5nOiBmdW5j
dGlvbiAoKSB7CisgICAgaWYgKGhhc0V2ZW50UGFnZVhZID09PSB1bmRlZmluZWQpIHsKKyAgICAg
IGhhc0V2ZW50UGFnZVhZID0gUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLnN1cHBvcnRzRXZlbnRQ
YWdlWFkoKTsKKyAgICB9CisgICAgaWYgKCFoYXNFdmVudFBhZ2VYWSAmJiAhaXNNb25pdG9yaW5n
U2Nyb2xsVmFsdWUpIHsKKyAgICAgIHZhciByZWZyZXNoID0gVmlld3BvcnRNZXRyaWNzLnJlZnJl
c2hTY3JvbGxWYWx1ZXM7CisgICAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVu
dExpc3RlbmVyLm1vbml0b3JTY3JvbGxWYWx1ZShyZWZyZXNoKTsKKyAgICAgIGlzTW9uaXRvcmlu
Z1Njcm9sbFZhbHVlID0gdHJ1ZTsKKyAgICB9CisgIH0KKworfSk7CisKK21vZHVsZS5leHBvcnRz
ID0gUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGli
L1JlYWN0Q2hpbGRGaWJlci5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFj
dC1kb20vbGliL1JlYWN0Q2hpbGRGaWJlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNzhjNjM4MDlmOWZjMjYw
YjJhMGYwZGE2Yjg5MmRhNWNiNjdmOGUzCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
cmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RDaGlsZEZpYmVyLmpzCkBAIC0w
LDAgKzEsMjQzIEBACisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJ
bmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElD
RU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUg
UEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiAKKyAqLworCisndXNl
IHN0cmljdCc7CisKK3ZhciBSRUFDVF9FTEVNRU5UX1RZUEUgPSByZXF1aXJlKCcuL1JlYWN0RWxl
bWVudFN5bWJvbCcpOworCit2YXIgX3JlcXVpcmUgPSByZXF1aXJlKCcuL1JlYWN0Q29yb3V0aW5l
JyksCisgICAgUkVBQ1RfQ09ST1VUSU5FX1RZUEUgPSBfcmVxdWlyZS5SRUFDVF9DT1JPVVRJTkVf
VFlQRSwKKyAgICBSRUFDVF9ZSUVMRF9UWVBFID0gX3JlcXVpcmUuUkVBQ1RfWUlFTERfVFlQRTsK
KwordmFyIFJlYWN0RmliZXIgPSByZXF1aXJlKCcuL1JlYWN0RmliZXInKTsKK3ZhciBSZWFjdFJl
aWZpZWRZaWVsZCA9IHJlcXVpcmUoJy4vUmVhY3RSZWlmaWVkWWllbGQnKTsKKwordmFyIGNsb25l
RmliZXIgPSBSZWFjdEZpYmVyLmNsb25lRmliZXIsCisgICAgY3JlYXRlRmliZXJGcm9tRWxlbWVu
dCA9IFJlYWN0RmliZXIuY3JlYXRlRmliZXJGcm9tRWxlbWVudCwKKyAgICBjcmVhdGVGaWJlckZy
b21Db3JvdXRpbmUgPSBSZWFjdEZpYmVyLmNyZWF0ZUZpYmVyRnJvbUNvcm91dGluZSwKKyAgICBj
cmVhdGVGaWJlckZyb21ZaWVsZCA9IFJlYWN0RmliZXIuY3JlYXRlRmliZXJGcm9tWWllbGQ7Cit2
YXIgY3JlYXRlUmVpZmllZFlpZWxkID0gUmVhY3RSZWlmaWVkWWllbGQuY3JlYXRlUmVpZmllZFlp
ZWxkOworCisKK3ZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheTsKKworZnVuY3Rpb24gQ2hpbGRS
ZWNvbmNpbGVyKHNob3VsZENsb25lKSB7CisKKyAgZnVuY3Rpb24gY3JlYXRlU3Vic2VxdWVudENo
aWxkKHJldHVybkZpYmVyLCBleGlzdGluZ0NoaWxkLCBwcmV2aW91c1NpYmxpbmcsIG5ld0NoaWxk
cmVuLCBwcmlvcml0eSkgeworICAgIGlmICh0eXBlb2YgbmV3Q2hpbGRyZW4gIT09ICdvYmplY3Qn
IHx8IG5ld0NoaWxkcmVuID09PSBudWxsKSB7CisgICAgICByZXR1cm4gcHJldmlvdXNTaWJsaW5n
OworICAgIH0KKworICAgIHN3aXRjaCAobmV3Q2hpbGRyZW4uJCR0eXBlb2YpIHsKKyAgICAgIGNh
c2UgUkVBQ1RfRUxFTUVOVF9UWVBFOgorICAgICAgICB7CisgICAgICAgICAgdmFyIGVsZW1lbnQg
PSBuZXdDaGlsZHJlbjsKKyAgICAgICAgICBpZiAoZXhpc3RpbmdDaGlsZCAmJiBlbGVtZW50LnR5
cGUgPT09IGV4aXN0aW5nQ2hpbGQudHlwZSAmJiBlbGVtZW50LmtleSA9PT0gZXhpc3RpbmdDaGls
ZC5rZXkpIHsKKyAgICAgICAgICAgIC8vIFRPRE86IFRoaXMgaXMgbm90IHN1ZmZpY2llbnQgc2lu
Y2UgcHJldmlvdXMgc2libGluZ3MgY291bGQgYmUgbmV3LgorICAgICAgICAgICAgLy8gV2lsbCBm
aXggcmVjb25jaWxpYXRpb24gcHJvcGVybHkgbGF0ZXIuCisgICAgICAgICAgICB2YXIgY2xvbmUg
PSBzaG91bGRDbG9uZSA/IGNsb25lRmliZXIoZXhpc3RpbmdDaGlsZCwgcHJpb3JpdHkpIDogZXhp
c3RpbmdDaGlsZDsKKyAgICAgICAgICAgIGlmICghc2hvdWxkQ2xvbmUpIHsKKyAgICAgICAgICAg
ICAgLy8gVE9ETzogVGhpcyBtaWdodCBiZSBsb3dlcmluZyB0aGUgcHJpb3JpdHkgb2YgbmVzdGVk
IHVuZmluaXNoZWQgd29yay4KKyAgICAgICAgICAgICAgY2xvbmUucGVuZGluZ1dvcmtQcmlvcml0
eSA9IHByaW9yaXR5OworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2xvbmUucGVuZGluZ1By
b3BzID0gZWxlbWVudC5wcm9wczsKKyAgICAgICAgICAgIGNsb25lLnNpYmxpbmcgPSBudWxsOwor
ICAgICAgICAgICAgY2xvbmVbJ3JldHVybiddID0gcmV0dXJuRmliZXI7CisgICAgICAgICAgICBw
cmV2aW91c1NpYmxpbmcuc2libGluZyA9IGNsb25lOworICAgICAgICAgICAgcmV0dXJuIGNsb25l
OworICAgICAgICAgIH0KKyAgICAgICAgICB2YXIgY2hpbGQgPSBjcmVhdGVGaWJlckZyb21FbGVt
ZW50KGVsZW1lbnQsIHByaW9yaXR5KTsKKyAgICAgICAgICBwcmV2aW91c1NpYmxpbmcuc2libGlu
ZyA9IGNoaWxkOworICAgICAgICAgIGNoaWxkWydyZXR1cm4nXSA9IHJldHVybkZpYmVyOworICAg
ICAgICAgIHJldHVybiBjaGlsZDsKKyAgICAgICAgfQorCisgICAgICBjYXNlIFJFQUNUX0NPUk9V
VElORV9UWVBFOgorICAgICAgICB7CisgICAgICAgICAgdmFyIGNvcm91dGluZSA9IG5ld0NoaWxk
cmVuOworICAgICAgICAgIHZhciBfY2hpbGQgPSBjcmVhdGVGaWJlckZyb21Db3JvdXRpbmUoY29y
b3V0aW5lLCBwcmlvcml0eSk7CisgICAgICAgICAgcHJldmlvdXNTaWJsaW5nLnNpYmxpbmcgPSBf
Y2hpbGQ7CisgICAgICAgICAgX2NoaWxkWydyZXR1cm4nXSA9IHJldHVybkZpYmVyOworICAgICAg
ICAgIHJldHVybiBfY2hpbGQ7CisgICAgICAgIH0KKworICAgICAgY2FzZSBSRUFDVF9ZSUVMRF9U
WVBFOgorICAgICAgICB7CisgICAgICAgICAgdmFyIHlpZWxkTm9kZSA9IG5ld0NoaWxkcmVuOwor
ICAgICAgICAgIHZhciByZWlmaWVkWWllbGQgPSBjcmVhdGVSZWlmaWVkWWllbGQoeWllbGROb2Rl
KTsKKyAgICAgICAgICB2YXIgX2NoaWxkMiA9IGNyZWF0ZUZpYmVyRnJvbVlpZWxkKHlpZWxkTm9k
ZSwgcHJpb3JpdHkpOworICAgICAgICAgIF9jaGlsZDIub3V0cHV0ID0gcmVpZmllZFlpZWxkOwor
ICAgICAgICAgIHByZXZpb3VzU2libGluZy5zaWJsaW5nID0gX2NoaWxkMjsKKyAgICAgICAgICBf
Y2hpbGQyWydyZXR1cm4nXSA9IHJldHVybkZpYmVyOworICAgICAgICAgIHJldHVybiBfY2hpbGQy
OworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGlzQXJyYXkobmV3Q2hpbGRyZW4pKSB7Cisg
ICAgICB2YXIgcHJldiA9IHByZXZpb3VzU2libGluZzsKKyAgICAgIHZhciBleGlzdGluZyA9IGV4
aXN0aW5nQ2hpbGQ7CisgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5ld0NoaWxkcmVuLmxlbmd0
aDsgaSsrKSB7CisgICAgICAgIHZhciBuZXh0RXhpc3RpbmcgPSBleGlzdGluZyAmJiBleGlzdGlu
Zy5zaWJsaW5nOworICAgICAgICBwcmV2ID0gY3JlYXRlU3Vic2VxdWVudENoaWxkKHJldHVybkZp
YmVyLCBleGlzdGluZywgcHJldiwgbmV3Q2hpbGRyZW5baV0sIHByaW9yaXR5KTsKKyAgICAgICAg
aWYgKHByZXYgJiYgZXhpc3RpbmcpIHsKKyAgICAgICAgICAvLyBUT0RPOiBUaGlzIGlzIG5vdCBj
b3JyZWN0IGJlY2F1c2UgdGhlcmUgY291bGQndmUgYmVlbiBtb3JlCisgICAgICAgICAgLy8gdGhh
biBvbmUgc2libGluZyBjb25zdW1lZCBidXQgSSBkb24ndCB3YW50IHRvIHJldHVybiBhIHR1cGxl
LgorICAgICAgICAgIGV4aXN0aW5nID0gbmV4dEV4aXN0aW5nOworICAgICAgICB9CisgICAgICB9
CisgICAgICByZXR1cm4gcHJldjsKKyAgICB9IGVsc2UgeworICAgICAgLy8gVE9ETzogVGhyb3cg
Zm9yIHVua25vd24gY2hpbGRyZW4uCisgICAgICByZXR1cm4gcHJldmlvdXNTaWJsaW5nOworICAg
IH0KKyAgfQorCisgIGZ1bmN0aW9uIGNyZWF0ZUZpcnN0Q2hpbGQocmV0dXJuRmliZXIsIGV4aXN0
aW5nQ2hpbGQsIG5ld0NoaWxkcmVuLCBwcmlvcml0eSkgeworICAgIGlmICh0eXBlb2YgbmV3Q2hp
bGRyZW4gIT09ICdvYmplY3QnIHx8IG5ld0NoaWxkcmVuID09PSBudWxsKSB7CisgICAgICByZXR1
cm4gbnVsbDsKKyAgICB9CisKKyAgICBzd2l0Y2ggKG5ld0NoaWxkcmVuLiQkdHlwZW9mKSB7Cisg
ICAgICBjYXNlIFJFQUNUX0VMRU1FTlRfVFlQRToKKyAgICAgICAgeworICAgICAgICAgIC8qICRG
bG93Rml4TWUoPj0wLjMxLjApOiBUaGlzIGlzIGFuIHVuc2FmZSBjYXN0LiBDb25zaWRlciBhZGRp
bmcgYSB0eXBlCisgICAgICAgICAgICogICAgICAgICAgICAgICAgICAgICAgIGFubm90YXRpb24g
dG8gdGhlIGBuZXdDaGlsZHJlbmAgcGFyYW0gb2YgdGhpcworICAgICAgICAgICAqICAgICAgICAg
ICAgICAgICAgICAgICBmdW5jdGlvbi4KKyAgICAgICAgICAgKi8KKyAgICAgICAgICB2YXIgZWxl
bWVudCA9IG5ld0NoaWxkcmVuOworICAgICAgICAgIGlmIChleGlzdGluZ0NoaWxkICYmIGVsZW1l
bnQudHlwZSA9PT0gZXhpc3RpbmdDaGlsZC50eXBlICYmIGVsZW1lbnQua2V5ID09PSBleGlzdGlu
Z0NoaWxkLmtleSkgeworICAgICAgICAgICAgLy8gR2V0IHRoZSBjbG9uZSBvZiB0aGUgZXhpc3Rp
bmcgZmliZXIuCisgICAgICAgICAgICB2YXIgY2xvbmUgPSBzaG91bGRDbG9uZSA/IGNsb25lRmli
ZXIoZXhpc3RpbmdDaGlsZCwgcHJpb3JpdHkpIDogZXhpc3RpbmdDaGlsZDsKKyAgICAgICAgICAg
IGlmICghc2hvdWxkQ2xvbmUpIHsKKyAgICAgICAgICAgICAgLy8gVE9ETzogVGhpcyBtaWdodCBi
ZSBsb3dlcmluZyB0aGUgcHJpb3JpdHkgb2YgbmVzdGVkIHVuZmluaXNoZWQgd29yay4KKyAgICAg
ICAgICAgICAgY2xvbmUucGVuZGluZ1dvcmtQcmlvcml0eSA9IHByaW9yaXR5OworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgY2xvbmUucGVuZGluZ1Byb3BzID0gZWxlbWVudC5wcm9wczsKKyAg
ICAgICAgICAgIGNsb25lLnNpYmxpbmcgPSBudWxsOworICAgICAgICAgICAgY2xvbmVbJ3JldHVy
biddID0gcmV0dXJuRmliZXI7CisgICAgICAgICAgICByZXR1cm4gY2xvbmU7CisgICAgICAgICAg
fQorICAgICAgICAgIHZhciBjaGlsZCA9IGNyZWF0ZUZpYmVyRnJvbUVsZW1lbnQoZWxlbWVudCwg
cHJpb3JpdHkpOworICAgICAgICAgIGNoaWxkWydyZXR1cm4nXSA9IHJldHVybkZpYmVyOworICAg
ICAgICAgIHJldHVybiBjaGlsZDsKKyAgICAgICAgfQorCisgICAgICBjYXNlIFJFQUNUX0NPUk9V
VElORV9UWVBFOgorICAgICAgICB7CisgICAgICAgICAgLyogJEZsb3dGaXhNZSg+PTAuMzEuMCk6
IE5vICdoYW5kbGVyJyBwcm9wZXJ0eSBmb3VuZCBpbiBvYmplY3QgdHlwZQorICAgICAgICAgICAq
LworICAgICAgICAgIHZhciBjb3JvdXRpbmUgPSBuZXdDaGlsZHJlbjsKKyAgICAgICAgICB2YXIg
X2NoaWxkMyA9IGNyZWF0ZUZpYmVyRnJvbUNvcm91dGluZShjb3JvdXRpbmUsIHByaW9yaXR5KTsK
KyAgICAgICAgICBfY2hpbGQzWydyZXR1cm4nXSA9IHJldHVybkZpYmVyOworICAgICAgICAgIHJl
dHVybiBfY2hpbGQzOworICAgICAgICB9CisKKyAgICAgIGNhc2UgUkVBQ1RfWUlFTERfVFlQRToK
KyAgICAgICAgeworICAgICAgICAgIC8vIEEgeWllbGQgcmVzdWx0cyBpbiBhIGZyYWdtZW50IGZp
YmVyIHdob3NlIG91dHB1dCBpcyB0aGUgY29udGludWF0aW9uLgorICAgICAgICAgIC8vIFRPRE86
IFdoZW4gdGhlcmUgaXMgb25seSBhIHNpbmdsZSBjaGlsZCwgd2UgY2FuIG9wdGltaXplIHRoaXMg
dG8gYXZvaWQKKyAgICAgICAgICAvLyB0aGUgZnJhZ21lbnQuCisgICAgICAgICAgLyogJEZsb3dG
aXhNZSg+PTAuMzEuMCk6IE5vICdjb250aW51YXRpb24nIHByb3BlcnR5IGZvdW5kIGluIG9iamVj
dAorICAgICAgICAgICAqIHR5cGUKKyAgICAgICAgICAgKi8KKyAgICAgICAgICB2YXIgeWllbGRO
b2RlID0gbmV3Q2hpbGRyZW47CisgICAgICAgICAgdmFyIHJlaWZpZWRZaWVsZCA9IGNyZWF0ZVJl
aWZpZWRZaWVsZCh5aWVsZE5vZGUpOworICAgICAgICAgIHZhciBfY2hpbGQ0ID0gY3JlYXRlRmli
ZXJGcm9tWWllbGQoeWllbGROb2RlLCBwcmlvcml0eSk7CisgICAgICAgICAgX2NoaWxkNC5vdXRw
dXQgPSByZWlmaWVkWWllbGQ7CisgICAgICAgICAgX2NoaWxkNFsncmV0dXJuJ10gPSByZXR1cm5G
aWJlcjsKKyAgICAgICAgICByZXR1cm4gX2NoaWxkNDsKKyAgICAgICAgfQorICAgIH0KKworICAg
IGlmIChpc0FycmF5KG5ld0NoaWxkcmVuKSkgeworICAgICAgdmFyIGZpcnN0ID0gbnVsbDsKKyAg
ICAgIHZhciBwcmV2ID0gbnVsbDsKKyAgICAgIHZhciBleGlzdGluZyA9IGV4aXN0aW5nQ2hpbGQ7
CisgICAgICAvKiAkRmxvd0lzc3VlKD49MC4zMS4wKSAjMTI3NDc3MDkKKyAgICAgICAqCisgICAg
ICAgKiBgQXJyYXkuaXNBcnJheWAgaXMgbWF0Y2hlZCBzeW50YWN0aWNhbGx5IGZvciBub3cgdW50
aWwgcHJlZGljYXRlCisgICAgICAgKiBzdXBwb3J0IGlzIGNvbXBsZXRlLgorICAgICAgICovCisg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5ld0NoaWxkcmVuLmxlbmd0aDsgaSsrKSB7CisgICAg
ICAgIHZhciBuZXh0RXhpc3RpbmcgPSBleGlzdGluZyAmJiBleGlzdGluZy5zaWJsaW5nOworICAg
ICAgICBpZiAocHJldiA9PSBudWxsKSB7CisgICAgICAgICAgcHJldiA9IGNyZWF0ZUZpcnN0Q2hp
bGQocmV0dXJuRmliZXIsIGV4aXN0aW5nLCBuZXdDaGlsZHJlbltpXSwgcHJpb3JpdHkpOworICAg
ICAgICAgIGZpcnN0ID0gcHJldjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBwcmV2ID0g
Y3JlYXRlU3Vic2VxdWVudENoaWxkKHJldHVybkZpYmVyLCBleGlzdGluZywgcHJldiwgbmV3Q2hp
bGRyZW5baV0sIHByaW9yaXR5KTsKKyAgICAgICAgfQorICAgICAgICBpZiAocHJldiAmJiBleGlz
dGluZykgeworICAgICAgICAgIC8vIFRPRE86IFRoaXMgaXMgbm90IGNvcnJlY3QgYmVjYXVzZSB0
aGVyZSBjb3VsZCd2ZSBiZWVuIG1vcmUKKyAgICAgICAgICAvLyB0aGFuIG9uZSBzaWJsaW5nIGNv
bnN1bWVkIGJ1dCBJIGRvbid0IHdhbnQgdG8gcmV0dXJuIGEgdHVwbGUuCisgICAgICAgICAgZXhp
c3RpbmcgPSBuZXh0RXhpc3Rpbmc7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIHJldHVybiBm
aXJzdDsKKyAgICB9IGVsc2UgeworICAgICAgLy8gVE9ETzogVGhyb3cgZm9yIHVua25vd24gY2hp
bGRyZW4uCisgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisgIH0KKworICAvLyBUT0RPOiBUaGlz
IEFQSSB3b24ndCB3b3JrIGJlY2F1c2Ugd2UnbGwgbmVlZCB0byB0cmFuc2ZlciB0aGUgc2lkZS1l
ZmZlY3RzIG9mCisgIC8vIHVubW91bnRpbmcgY2hpbGRyZW4gdG8gdGhlIHJldHVybkZpYmVyLgor
ICBmdW5jdGlvbiByZWNvbmNpbGVDaGlsZEZpYmVycyhyZXR1cm5GaWJlciwgY3VycmVudEZpcnN0
Q2hpbGQsIG5ld0NoaWxkcmVuLCBwcmlvcml0eSkgeworICAgIHJldHVybiBjcmVhdGVGaXJzdENo
aWxkKHJldHVybkZpYmVyLCBjdXJyZW50Rmlyc3RDaGlsZCwgbmV3Q2hpbGRyZW4sIHByaW9yaXR5
KTsKKyAgfQorCisgIHJldHVybiByZWNvbmNpbGVDaGlsZEZpYmVyczsKK30KKworZXhwb3J0cy5y
ZWNvbmNpbGVDaGlsZEZpYmVycyA9IENoaWxkUmVjb25jaWxlcih0cnVlKTsKKworZXhwb3J0cy5y
ZWNvbmNpbGVDaGlsZEZpYmVyc0luUGxhY2UgPSBDaGlsZFJlY29uY2lsZXIoZmFsc2UpOworCitm
dW5jdGlvbiBjbG9uZVNpYmxpbmdzKGN1cnJlbnQsIHdvcmtJblByb2dyZXNzLCByZXR1cm5GaWJl
cikgeworICB3b3JrSW5Qcm9ncmVzc1sncmV0dXJuJ10gPSByZXR1cm5GaWJlcjsKKyAgd2hpbGUg
KGN1cnJlbnQuc2libGluZykgeworICAgIGN1cnJlbnQgPSBjdXJyZW50LnNpYmxpbmc7CisgICAg
d29ya0luUHJvZ3Jlc3MgPSB3b3JrSW5Qcm9ncmVzcy5zaWJsaW5nID0gY2xvbmVGaWJlcihjdXJy
ZW50LCBjdXJyZW50LnBlbmRpbmdXb3JrUHJpb3JpdHkpOworICAgIHdvcmtJblByb2dyZXNzWydy
ZXR1cm4nXSA9IHJldHVybkZpYmVyOworICB9CisgIHdvcmtJblByb2dyZXNzLnNpYmxpbmcgPSBu
dWxsOworfQorCitleHBvcnRzLmNsb25lQ2hpbGRGaWJlcnMgPSBmdW5jdGlvbiAoY3VycmVudCwg
d29ya0luUHJvZ3Jlc3MpIHsKKyAgaWYgKCF3b3JrSW5Qcm9ncmVzcy5jaGlsZCkgeworICAgIHJl
dHVybjsKKyAgfQorICBpZiAoY3VycmVudCAmJiB3b3JrSW5Qcm9ncmVzcy5jaGlsZCA9PT0gY3Vy
cmVudC5jaGlsZCkgeworICAgIC8vIFdlIHVzZSB3b3JrSW5Qcm9ncmVzcy5jaGlsZCBzaW5jZSB0
aGF0IGxldHMgRmxvdyBrbm93IHRoYXQgaXQgY2FuJ3QgYmUKKyAgICAvLyBudWxsIHNpbmNlIHdl
IHZhbGlkYXRlZCB0aGF0IGFscmVhZHkuIEhvd2V2ZXIsIGFzIHRoZSBsaW5lIGFib3ZlIHN1Z2dl
c3RzCisgICAgLy8gdGhleSdyZSBhY3R1YWxseSB0aGUgc2FtZSB0aGluZy4KKyAgICB2YXIgY3Vy
cmVudENoaWxkID0gd29ya0luUHJvZ3Jlc3MuY2hpbGQ7CisgICAgLy8gVE9ETzogVGhpcyB1c2Vk
IHRvIHJlc2V0IHRoZSBwZW5kaW5nIHByaW9yaXR5LiBOb3Qgc3VyZSBpZiB0aGF0IGlzIG5lZWRl
ZC4KKyAgICAvLyB3b3JrSW5Qcm9ncmVzcy5wZW5kaW5nV29ya1ByaW9yaXR5ID0gY3VycmVudC5w
ZW5kaW5nV29ya1ByaW9yaXR5OworICAgIC8vIFRPRE86IFRoZSBiZWxvdyBwcmlvcml0eSB1c2Vk
IHRvIGJlIHNldCB0byBOb1dvcmsgd2hpY2ggd291bGQndmUKKyAgICAvLyBkcm9wcGVkIHdvcmsu
IFRoaXMgaXMgY3VycmVudGx5IHVub2JzZXJ2YWJsZSBidXQgd2lsbCBiZWNvbWUKKyAgICAvLyBv
YnNlcnZhYmxlIHdoZW4gdGhlIGZpcnN0IHNpYmxpbmcgaGFzIGxvd2VyIHByaW9yaXR5IHdvcmsg
cmVtYWluaW5nCisgICAgLy8gdGhhbiB0aGUgbmV4dCBzaWJsaW5nLiBBdCB0aGF0IHBvaW50IHdl
IHNob3VsZCBhZGQgdGVzdHMgdGhhdCBjYXRjaGVzCisgICAgLy8gdGhpcy4KKyAgICB2YXIgbmV3
Q2hpbGQgPSBjbG9uZUZpYmVyKGN1cnJlbnRDaGlsZCwgY3VycmVudENoaWxkLnBlbmRpbmdXb3Jr
UHJpb3JpdHkpOworICAgIHdvcmtJblByb2dyZXNzLmNoaWxkID0gbmV3Q2hpbGQ7CisgICAgY2xv
bmVTaWJsaW5ncyhjdXJyZW50Q2hpbGQsIG5ld0NoaWxkLCB3b3JrSW5Qcm9ncmVzcyk7CisgIH0K
KworICAvLyBJZiB0aGVyZSBpcyBubyBhbHRlcm5hdGUsIHRoZW4gd2UgZG9uJ3QgbmVlZCB0byBj
bG9uZSB0aGUgY2hpbGRyZW4uCisgIC8vIElmIHRoZSBjaGlsZHJlbiBvZiB0aGUgYWx0ZXJuYXRl
IGZpYmVyIGlzIGEgZGlmZmVyZW50IHNldCwgdGhlbiB3ZSBkb24ndAorICAvLyBuZWVkIHRvIGNs
b25lLiBXZSBuZWVkIHRvIHJlc2V0IHRoZSByZXR1cm4gZmliZXIgdGhvdWdoIHNpbmNlIHdlJ2xs
CisgIC8vIHRyYXZlcnNlIGRvd24gaW50byB0aGVtLgorICB2YXIgY2hpbGQgPSB3b3JrSW5Qcm9n
cmVzcy5jaGlsZDsKKyAgd2hpbGUgKGNoaWxkKSB7CisgICAgY2hpbGRbJ3JldHVybiddID0gd29y
a0luUHJvZ3Jlc3M7CisgICAgY2hpbGQgPSBjaGlsZC5zaWJsaW5nOworICB9Cit9OwpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVf
bW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0Q2hpbGRSZWNvbmNpbGVyLmpzIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RDaGlsZFJlY29uY2lsZXIu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uY2YzN2JkNjNiODNiOGY5YTc1YWQ2Zjk0OWRkZWI2ZWNlMjliNTIwNwot
LS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1k
b20vbGliL1JlYWN0Q2hpbGRSZWNvbmNpbGVyLmpzCkBAIC0wLDAgKzEsMTUzIEBACisvKioKKyAq
IENvcHlyaWdodCAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgUmVhY3RSZWNv
bmNpbGVyID0gcmVxdWlyZSgnLi9SZWFjdFJlY29uY2lsZXInKTsKKwordmFyIGluc3RhbnRpYXRl
UmVhY3RDb21wb25lbnQgPSByZXF1aXJlKCcuL2luc3RhbnRpYXRlUmVhY3RDb21wb25lbnQnKTsK
K3ZhciBLZXlFc2NhcGVVdGlscyA9IHJlcXVpcmUoJy4vS2V5RXNjYXBlVXRpbHMnKTsKK3ZhciBz
aG91bGRVcGRhdGVSZWFjdENvbXBvbmVudCA9IHJlcXVpcmUoJy4vc2hvdWxkVXBkYXRlUmVhY3RD
b21wb25lbnQnKTsKK3ZhciB0cmF2ZXJzZUFsbENoaWxkcmVuID0gcmVxdWlyZSgnLi90cmF2ZXJz
ZUFsbENoaWxkcmVuJyk7Cit2YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcn
KTsKKwordmFyIFJlYWN0Q29tcG9uZW50VHJlZUhvb2s7CisKK2lmICh0eXBlb2YgcHJvY2VzcyAh
PT0gJ3VuZGVmaW5lZCcgJiYgcHJvY2Vzcy5lbnYgJiYgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09
ICd0ZXN0JykgeworICAvLyBUZW1wb3JhcnkgaGFjay4KKyAgLy8gSW5saW5lIHJlcXVpcmVzIGRv
bid0IHdvcmsgd2VsbCB3aXRoIEplc3Q6CisgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9v
ay9yZWFjdC9pc3N1ZXMvNzI0MAorICAvLyBSZW1vdmUgdGhlIGlubGluZSByZXF1aXJlcyB3aGVu
IHdlIGRvbid0IG5lZWQgdGhlbSBhbnltb3JlOgorICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFj
ZWJvb2svcmVhY3QvcHVsbC83MTc4CisgIFJlYWN0Q29tcG9uZW50VHJlZUhvb2sgPSByZXF1aXJl
KCdyZWFjdC9saWIvUmVhY3RDb21wb25lbnRUcmVlSG9vaycpOworfQorCitmdW5jdGlvbiBpbnN0
YW50aWF0ZUNoaWxkKGNoaWxkSW5zdGFuY2VzLCBjaGlsZCwgbmFtZSwgc2VsZkRlYnVnSUQpIHsK
KyAgLy8gV2UgZm91bmQgYSBjb21wb25lbnQgaW5zdGFuY2UuCisgIHZhciBrZXlVbmlxdWUgPSBj
aGlsZEluc3RhbmNlc1tuYW1lXSA9PT0gdW5kZWZpbmVkOworICBpZiAocHJvY2Vzcy5lbnYuTk9E
RV9FTlYgIT09ICdwcm9kdWN0aW9uJykgeworICAgIGlmICghUmVhY3RDb21wb25lbnRUcmVlSG9v
aykgeworICAgICAgUmVhY3RDb21wb25lbnRUcmVlSG9vayA9IHJlcXVpcmUoJ3JlYWN0L2xpYi9S
ZWFjdENvbXBvbmVudFRyZWVIb29rJyk7CisgICAgfQorICAgIGlmICgha2V5VW5pcXVlKSB7Cisg
ICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxz
ZSwgJ2ZsYXR0ZW5DaGlsZHJlbiguLi4pOiBFbmNvdW50ZXJlZCB0d28gY2hpbGRyZW4gd2l0aCB0
aGUgc2FtZSBrZXksICcgKyAnYCVzYC4gQ2hpbGQga2V5cyBtdXN0IGJlIHVuaXF1ZTsgd2hlbiB0
d28gY2hpbGRyZW4gc2hhcmUgYSBrZXksIG9ubHkgJyArICd0aGUgZmlyc3QgY2hpbGQgd2lsbCBi
ZSB1c2VkLiVzJywgS2V5RXNjYXBlVXRpbHMudW5lc2NhcGUobmFtZSksIFJlYWN0Q29tcG9uZW50
VHJlZUhvb2suZ2V0U3RhY2tBZGRlbmR1bUJ5SUQoc2VsZkRlYnVnSUQpKSA6IHZvaWQgMDsKKyAg
ICB9CisgIH0KKyAgaWYgKGNoaWxkICE9IG51bGwgJiYga2V5VW5pcXVlKSB7CisgICAgY2hpbGRJ
bnN0YW5jZXNbbmFtZV0gPSBpbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50KGNoaWxkLCB0cnVlKTsK
KyAgfQorfQorCisvKioKKyAqIFJlYWN0Q2hpbGRSZWNvbmNpbGVyIHByb3ZpZGVzIGhlbHBlcnMg
Zm9yIGluaXRpYWxpemluZyBvciB1cGRhdGluZyBhIHNldCBvZgorICogY2hpbGRyZW4uIEl0cyBv
dXRwdXQgaXMgc3VpdGFibGUgZm9yIHBhc3NpbmcgaXQgb250byBSZWFjdE11bHRpQ2hpbGQgd2hp
Y2gKKyAqIGRvZXMgZGlmZmVkIHJlb3JkZXJpbmcgYW5kIGluc2VydGlvbi4KKyAqLwordmFyIFJl
YWN0Q2hpbGRSZWNvbmNpbGVyID0geworICAvKioKKyAgICogR2VuZXJhdGVzIGEgIm1vdW50IGlt
YWdlIiBmb3IgZWFjaCBvZiB0aGUgc3VwcGxpZWQgY2hpbGRyZW4uIEluIHRoZSBjYXNlCisgICAq
IG9mIGBSZWFjdERPTUNvbXBvbmVudGAsIGEgbW91bnQgaW1hZ2UgaXMgYSBzdHJpbmcgb2YgbWFy
a3VwLgorICAgKgorICAgKiBAcGFyYW0gez9vYmplY3R9IG5lc3RlZENoaWxkTm9kZXMgTmVzdGVk
IGNoaWxkIG1hcHMuCisgICAqIEByZXR1cm4gez9vYmplY3R9IEEgc2V0IG9mIGNoaWxkIGluc3Rh
bmNlcy4KKyAgICogQGludGVybmFsCisgICAqLworICBpbnN0YW50aWF0ZUNoaWxkcmVuOiBmdW5j
dGlvbiAobmVzdGVkQ2hpbGROb2RlcywgdHJhbnNhY3Rpb24sIGNvbnRleHQsIHNlbGZEZWJ1Z0lE
IC8vIDAgaW4gcHJvZHVjdGlvbiBhbmQgZm9yIHJvb3RzCisgICkgeworICAgIGlmIChuZXN0ZWRD
aGlsZE5vZGVzID09IG51bGwpIHsKKyAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAgICB2YXIg
Y2hpbGRJbnN0YW5jZXMgPSB7fTsKKworICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0g
J3Byb2R1Y3Rpb24nKSB7CisgICAgICB0cmF2ZXJzZUFsbENoaWxkcmVuKG5lc3RlZENoaWxkTm9k
ZXMsIGZ1bmN0aW9uIChjaGlsZEluc3RzLCBjaGlsZCwgbmFtZSkgeworICAgICAgICByZXR1cm4g
aW5zdGFudGlhdGVDaGlsZChjaGlsZEluc3RzLCBjaGlsZCwgbmFtZSwgc2VsZkRlYnVnSUQpOwor
ICAgICAgfSwgY2hpbGRJbnN0YW5jZXMpOworICAgIH0gZWxzZSB7CisgICAgICB0cmF2ZXJzZUFs
bENoaWxkcmVuKG5lc3RlZENoaWxkTm9kZXMsIGluc3RhbnRpYXRlQ2hpbGQsIGNoaWxkSW5zdGFu
Y2VzKTsKKyAgICB9CisgICAgcmV0dXJuIGNoaWxkSW5zdGFuY2VzOworICB9LAorCisgIC8qKgor
ICAgKiBVcGRhdGVzIHRoZSByZW5kZXJlZCBjaGlsZHJlbiBhbmQgcmV0dXJucyBhIG5ldyBzZXQg
b2YgY2hpbGRyZW4uCisgICAqCisgICAqIEBwYXJhbSB7P29iamVjdH0gcHJldkNoaWxkcmVuIFBy
ZXZpb3VzbHkgaW5pdGlhbGl6ZWQgc2V0IG9mIGNoaWxkcmVuLgorICAgKiBAcGFyYW0gez9vYmpl
Y3R9IG5leHRDaGlsZHJlbiBGbGF0IGNoaWxkIGVsZW1lbnQgbWFwcy4KKyAgICogQHBhcmFtIHtS
ZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvbgorICAgKiBAcGFyYW0ge29iamVj
dH0gY29udGV4dAorICAgKiBAcmV0dXJuIHs/b2JqZWN0fSBBIG5ldyBzZXQgb2YgY2hpbGQgaW5z
dGFuY2VzLgorICAgKiBAaW50ZXJuYWwKKyAgICovCisgIHVwZGF0ZUNoaWxkcmVuOiBmdW5jdGlv
biAocHJldkNoaWxkcmVuLCBuZXh0Q2hpbGRyZW4sIG1vdW50SW1hZ2VzLCByZW1vdmVkTm9kZXMs
IHRyYW5zYWN0aW9uLCBob3N0UGFyZW50LCBob3N0Q29udGFpbmVySW5mbywgY29udGV4dCwgc2Vs
ZkRlYnVnSUQgLy8gMCBpbiBwcm9kdWN0aW9uIGFuZCBmb3Igcm9vdHMKKyAgKSB7CisgICAgLy8g
V2UgY3VycmVudGx5IGRvbid0IGhhdmUgYSB3YXkgdG8gdHJhY2sgbW92ZXMgaGVyZSBidXQgaWYg
d2UgdXNlIGl0ZXJhdG9ycworICAgIC8vIGluc3RlYWQgb2YgZm9yLi5pbiB3ZSBjYW4gemlwIHRo
ZSBpdGVyYXRvcnMgYW5kIGNoZWNrIGlmIGFuIGl0ZW0gaGFzCisgICAgLy8gbW92ZWQuCisgICAg
Ly8gVE9ETzogSWYgbm90aGluZyBoYXMgY2hhbmdlZCwgcmV0dXJuIHRoZSBwcmV2Q2hpbGRyZW4g
b2JqZWN0IHNvIHRoYXQgd2UKKyAgICAvLyBjYW4gcXVpY2tseSBiYWlsb3V0IGlmIG5vdGhpbmcg
aGFzIGNoYW5nZWQuCisgICAgaWYgKCFuZXh0Q2hpbGRyZW4gJiYgIXByZXZDaGlsZHJlbikgewor
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICB2YXIgbmFtZTsKKyAgICB2YXIgcHJldkNoaWxkOwor
ICAgIGZvciAobmFtZSBpbiBuZXh0Q2hpbGRyZW4pIHsKKyAgICAgIGlmICghbmV4dENoaWxkcmVu
Lmhhc093blByb3BlcnR5KG5hbWUpKSB7CisgICAgICAgIGNvbnRpbnVlOworICAgICAgfQorICAg
ICAgcHJldkNoaWxkID0gcHJldkNoaWxkcmVuICYmIHByZXZDaGlsZHJlbltuYW1lXTsKKyAgICAg
IHZhciBwcmV2RWxlbWVudCA9IHByZXZDaGlsZCAmJiBwcmV2Q2hpbGQuX2N1cnJlbnRFbGVtZW50
OworICAgICAgdmFyIG5leHRFbGVtZW50ID0gbmV4dENoaWxkcmVuW25hbWVdOworICAgICAgaWYg
KHByZXZDaGlsZCAhPSBudWxsICYmIHNob3VsZFVwZGF0ZVJlYWN0Q29tcG9uZW50KHByZXZFbGVt
ZW50LCBuZXh0RWxlbWVudCkpIHsKKyAgICAgICAgUmVhY3RSZWNvbmNpbGVyLnJlY2VpdmVDb21w
b25lbnQocHJldkNoaWxkLCBuZXh0RWxlbWVudCwgdHJhbnNhY3Rpb24sIGNvbnRleHQpOworICAg
ICAgICBuZXh0Q2hpbGRyZW5bbmFtZV0gPSBwcmV2Q2hpbGQ7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBpZiAocHJldkNoaWxkKSB7CisgICAgICAgICAgcmVtb3ZlZE5vZGVzW25hbWVdID0gUmVh
Y3RSZWNvbmNpbGVyLmdldEhvc3ROb2RlKHByZXZDaGlsZCk7CisgICAgICAgICAgUmVhY3RSZWNv
bmNpbGVyLnVubW91bnRDb21wb25lbnQocHJldkNoaWxkLCBmYWxzZSk7CisgICAgICAgIH0KKyAg
ICAgICAgLy8gVGhlIGNoaWxkIG11c3QgYmUgaW5zdGFudGlhdGVkIGJlZm9yZSBpdCdzIG1vdW50
ZWQuCisgICAgICAgIHZhciBuZXh0Q2hpbGRJbnN0YW5jZSA9IGluc3RhbnRpYXRlUmVhY3RDb21w
b25lbnQobmV4dEVsZW1lbnQsIHRydWUpOworICAgICAgICBuZXh0Q2hpbGRyZW5bbmFtZV0gPSBu
ZXh0Q2hpbGRJbnN0YW5jZTsKKyAgICAgICAgLy8gQ3JlYXRpbmcgbW91bnQgaW1hZ2Ugbm93IGVu
c3VyZXMgcmVmcyBhcmUgcmVzb2x2ZWQgaW4gcmlnaHQgb3JkZXIKKyAgICAgICAgLy8gKHNlZSBo
dHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvcHVsbC83MTAxIGZvciBleHBsYW5hdGlv
bikuCisgICAgICAgIHZhciBuZXh0Q2hpbGRNb3VudEltYWdlID0gUmVhY3RSZWNvbmNpbGVyLm1v
dW50Q29tcG9uZW50KG5leHRDaGlsZEluc3RhbmNlLCB0cmFuc2FjdGlvbiwgaG9zdFBhcmVudCwg
aG9zdENvbnRhaW5lckluZm8sIGNvbnRleHQsIHNlbGZEZWJ1Z0lEKTsKKyAgICAgICAgbW91bnRJ
bWFnZXMucHVzaChuZXh0Q2hpbGRNb3VudEltYWdlKTsKKyAgICAgIH0KKyAgICB9CisgICAgLy8g
VW5tb3VudCBjaGlsZHJlbiB0aGF0IGFyZSBubyBsb25nZXIgcHJlc2VudC4KKyAgICBmb3IgKG5h
bWUgaW4gcHJldkNoaWxkcmVuKSB7CisgICAgICBpZiAocHJldkNoaWxkcmVuLmhhc093blByb3Bl
cnR5KG5hbWUpICYmICEobmV4dENoaWxkcmVuICYmIG5leHRDaGlsZHJlbi5oYXNPd25Qcm9wZXJ0
eShuYW1lKSkpIHsKKyAgICAgICAgcHJldkNoaWxkID0gcHJldkNoaWxkcmVuW25hbWVdOworICAg
ICAgICByZW1vdmVkTm9kZXNbbmFtZV0gPSBSZWFjdFJlY29uY2lsZXIuZ2V0SG9zdE5vZGUocHJl
dkNoaWxkKTsKKyAgICAgICAgUmVhY3RSZWNvbmNpbGVyLnVubW91bnRDb21wb25lbnQocHJldkNo
aWxkLCBmYWxzZSk7CisgICAgICB9CisgICAgfQorICB9LAorCisgIC8qKgorICAgKiBVbm1vdW50
cyBhbGwgcmVuZGVyZWQgY2hpbGRyZW4uIFRoaXMgc2hvdWxkIGJlIHVzZWQgdG8gY2xlYW4gdXAg
Y2hpbGRyZW4KKyAgICogd2hlbiB0aGlzIGNvbXBvbmVudCBpcyB1bm1vdW50ZWQuCisgICAqCisg
ICAqIEBwYXJhbSB7P29iamVjdH0gcmVuZGVyZWRDaGlsZHJlbiBQcmV2aW91c2x5IGluaXRpYWxp
emVkIHNldCBvZiBjaGlsZHJlbi4KKyAgICogQGludGVybmFsCisgICAqLworICB1bm1vdW50Q2hp
bGRyZW46IGZ1bmN0aW9uIChyZW5kZXJlZENoaWxkcmVuLCBzYWZlbHkpIHsKKyAgICBmb3IgKHZh
ciBuYW1lIGluIHJlbmRlcmVkQ2hpbGRyZW4pIHsKKyAgICAgIGlmIChyZW5kZXJlZENoaWxkcmVu
Lmhhc093blByb3BlcnR5KG5hbWUpKSB7CisgICAgICAgIHZhciByZW5kZXJlZENoaWxkID0gcmVu
ZGVyZWRDaGlsZHJlbltuYW1lXTsKKyAgICAgICAgUmVhY3RSZWNvbmNpbGVyLnVubW91bnRDb21w
b25lbnQocmVuZGVyZWRDaGlsZCwgc2FmZWx5KTsKKyAgICAgIH0KKyAgICB9CisgIH0KKworfTsK
KworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdENoaWxkUmVjb25jaWxlcjsKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMv
cmVhY3QtZG9tL2xpYi9SZWFjdENvbXBvbmVudEJyb3dzZXJFbnZpcm9ubWVudC5qcyBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0Q29tcG9uZW50QnJv
d3NlckVudmlyb25tZW50LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA5NDhjMDFkNDk5MjliMjk5ZmVkYTU1NTVm
YTMwNWVjNTBjMzVmMWEKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2Rl
X21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdENvbXBvbmVudEJyb3dzZXJFbnZpcm9ubWVudC5q
cwpAQCAtMCwwICsxLDI5IEBACisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNv
ZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQor
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBp
biB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3Vz
ZSBzdHJpY3QnOworCit2YXIgRE9NQ2hpbGRyZW5PcGVyYXRpb25zID0gcmVxdWlyZSgnLi9ET01D
aGlsZHJlbk9wZXJhdGlvbnMnKTsKK3ZhciBSZWFjdERPTUlET3BlcmF0aW9ucyA9IHJlcXVpcmUo
Jy4vUmVhY3RET01JRE9wZXJhdGlvbnMnKTsKKworLyoqCisgKiBBYnN0cmFjdHMgYXdheSBhbGwg
ZnVuY3Rpb25hbGl0eSBvZiB0aGUgcmVjb25jaWxlciB0aGF0IHJlcXVpcmVzIGtub3dsZWRnZSBv
ZgorICogdGhlIGJyb3dzZXIgY29udGV4dC4gVE9ETzogVGhlc2UgY2FsbGVycyBzaG91bGQgYmUg
cmVmYWN0b3JlZCB0byBhdm9pZCB0aGUKKyAqIG5lZWQgZm9yIHRoaXMgaW5qZWN0aW9uLgorICov
Cit2YXIgUmVhY3RDb21wb25lbnRCcm93c2VyRW52aXJvbm1lbnQgPSB7CisKKyAgcHJvY2Vzc0No
aWxkcmVuVXBkYXRlczogUmVhY3RET01JRE9wZXJhdGlvbnMuZGFuZ2Vyb3VzbHlQcm9jZXNzQ2hp
bGRyZW5VcGRhdGVzLAorCisgIHJlcGxhY2VOb2RlV2l0aE1hcmt1cDogRE9NQ2hpbGRyZW5PcGVy
YXRpb25zLmRhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwCisKK307CisKK21vZHVsZS5l
eHBvcnRzID0gUmVhY3RDb21wb25lbnRCcm93c2VyRW52aXJvbm1lbnQ7ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVz
L3JlYWN0LWRvbS9saWIvUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudC5qcyBiL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0Q29tcG9uZW50RW52aXJvbm1l
bnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMTUyMTU5NGFhZmU4MTRjNmZiMjY5NDExZDJhMTJlNDZkOGJlYjYy
NgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFj
dC1kb20vbGliL1JlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQuanMKQEAgLTAsMCArMSw0NSBAQAor
LyoqCisgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy
IHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFu
dAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2
YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0UHJvZEludmFyaWFudCcpOworCit2
YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7CisKK3ZhciBpbmpl
Y3RlZCA9IGZhbHNlOworCit2YXIgUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudCA9IHsKKworICAv
KioKKyAgICogT3B0aW9uYWxseSBpbmplY3RhYmxlIGhvb2sgZm9yIHN3YXBwaW5nIG91dCBtb3Vu
dCBpbWFnZXMgaW4gdGhlIG1pZGRsZSBvZgorICAgKiB0aGUgdHJlZS4KKyAgICovCisgIHJlcGxh
Y2VOb2RlV2l0aE1hcmt1cDogbnVsbCwKKworICAvKioKKyAgICogT3B0aW9uYWxseSBpbmplY3Rh
YmxlIGhvb2sgZm9yIHByb2Nlc3NpbmcgYSBxdWV1ZSBvZiBjaGlsZCB1cGRhdGVzLiBXaWxsCisg
ICAqIGxhdGVyIG1vdmUgaW50byBNdWx0aUNoaWxkQ29tcG9uZW50cy4KKyAgICovCisgIHByb2Nl
c3NDaGlsZHJlblVwZGF0ZXM6IG51bGwsCisKKyAgaW5qZWN0aW9uOiB7CisgICAgaW5qZWN0RW52
aXJvbm1lbnQ6IGZ1bmN0aW9uIChlbnZpcm9ubWVudCkgeworICAgICAgISFpbmplY3RlZCA/IHBy
b2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdS
ZWFjdENvbXBvc2l0ZUNvbXBvbmVudDogaW5qZWN0RW52aXJvbm1lbnQoKSBjYW4gb25seSBiZSBj
YWxsZWQgb25jZS4nKSA6IF9wcm9kSW52YXJpYW50KCcxMDQnKSA6IHZvaWQgMDsKKyAgICAgIFJl
YWN0Q29tcG9uZW50RW52aXJvbm1lbnQucmVwbGFjZU5vZGVXaXRoTWFya3VwID0gZW52aXJvbm1l
bnQucmVwbGFjZU5vZGVXaXRoTWFya3VwOworICAgICAgUmVhY3RDb21wb25lbnRFbnZpcm9ubWVu
dC5wcm9jZXNzQ2hpbGRyZW5VcGRhdGVzID0gZW52aXJvbm1lbnQucHJvY2Vzc0NoaWxkcmVuVXBk
YXRlczsKKyAgICAgIGluamVjdGVkID0gdHJ1ZTsKKyAgICB9CisgIH0KKworfTsKKworbW9kdWxl
LmV4cG9ydHMgPSBSZWFjdENvbXBvbmVudEVudmlyb25tZW50OwpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFj
dC1kb20vbGliL1JlYWN0Q29tcG9uZW50VHJlZVRlc3RVdGlscy5qcyBiL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Jl
YWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0Q29tcG9uZW50VHJlZVRlc3RVdGls
cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zNDA4MTEwMjkyOTA5ZWUxMTYxYTRkZDhhMDI2MDAxODZlNDIwMjBm
Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0
LWRvbS9saWIvUmVhY3RDb21wb25lbnRUcmVlVGVzdFV0aWxzLmpzCkBAIC0wLDAgKzEsODYgQEAK
Ky8qKgorICogQ29weXJpZ2h0IDIwMTYtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRl
ciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3Jh
bnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUg
aW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBf
YXNzaWduID0gcmVxdWlyZSgnb2JqZWN0LWFzc2lnbicpOworCit2YXIgX2V4dGVuZHMgPSBfYXNz
aWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMu
bGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGlu
IHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJj
ZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0
OyB9OworCitmdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChr
ZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFs
dWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUg
fSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfQorCit2YXIgUmVh
Y3RDb21wb25lbnRUcmVlSG9vayA9IHJlcXVpcmUoJ3JlYWN0L2xpYi9SZWFjdENvbXBvbmVudFRy
ZWVIb29rJyk7CisKK2Z1bmN0aW9uIGdldFJvb3REaXNwbGF5TmFtZXMoKSB7CisgIHJldHVybiBS
ZWFjdENvbXBvbmVudFRyZWVIb29rLmdldFJvb3RJRHMoKS5tYXAoUmVhY3RDb21wb25lbnRUcmVl
SG9vay5nZXREaXNwbGF5TmFtZSk7Cit9CisKK2Z1bmN0aW9uIGdldFJlZ2lzdGVyZWREaXNwbGF5
TmFtZXMoKSB7CisgIHJldHVybiBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldFJlZ2lzdGVyZWRJ
RHMoKS5tYXAoUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXREaXNwbGF5TmFtZSk7Cit9CisKK2Z1
bmN0aW9uIGV4cGVjdFRyZWUocm9vdElELCBleHBlY3RlZFRyZWUsIHBhcmVudFBhdGgpIHsKKyAg
dmFyIGRpc3BsYXlOYW1lID0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXREaXNwbGF5TmFtZShy
b290SUQpOworICB2YXIgb3duZXJJRCA9IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0T3duZXJJ
RChyb290SUQpOworICB2YXIgcGFyZW50SUQgPSBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldFBh
cmVudElEKHJvb3RJRCk7CisgIHZhciBjaGlsZElEcyA9IFJlYWN0Q29tcG9uZW50VHJlZUhvb2su
Z2V0Q2hpbGRJRHMocm9vdElEKTsKKyAgdmFyIHRleHQgPSBSZWFjdENvbXBvbmVudFRyZWVIb29r
LmdldFRleHQocm9vdElEKTsKKyAgdmFyIGVsZW1lbnQgPSBSZWFjdENvbXBvbmVudFRyZWVIb29r
LmdldEVsZW1lbnQocm9vdElEKTsKKyAgdmFyIHBhdGggPSBwYXJlbnRQYXRoID8gcGFyZW50UGF0
aCArICcgPiAnICsgZGlzcGxheU5hbWUgOiBkaXNwbGF5TmFtZTsKKworICBmdW5jdGlvbiBleHBl
Y3RFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBuYW1lKSB7CisgICAgLy8gR2V0IEphc21pbmUgdG8g
cHJpbnQgZGVzY3JpcHRpdmUgZXJyb3IgbWVzc2FnZXMuCisgICAgLy8gV2UgcGFzcyBwYXRoIHNv
IHRoYXQgd2Uga25vdyB3aGVyZSB0aGUgbWlzbWF0Y2ggb2NjdXJyZWQuCisgICAgZXhwZWN0KF9k
ZWZpbmVQcm9wZXJ0eSh7CisgICAgICBwYXRoOiBwYXRoCisgICAgfSwgbmFtZSwgYWN0dWFsKSku
dG9FcXVhbChfZGVmaW5lUHJvcGVydHkoeworICAgICAgcGF0aDogcGF0aAorICAgIH0sIG5hbWUs
IGV4cGVjdGVkKSk7CisgIH0KKworICBpZiAoZXhwZWN0ZWRUcmVlLnBhcmVudERpc3BsYXlOYW1l
ICE9PSB1bmRlZmluZWQpIHsKKyAgICBleHBlY3RFcXVhbChSZWFjdENvbXBvbmVudFRyZWVIb29r
LmdldERpc3BsYXlOYW1lKHBhcmVudElEKSwgZXhwZWN0ZWRUcmVlLnBhcmVudERpc3BsYXlOYW1l
LCAncGFyZW50RGlzcGxheU5hbWUnKTsKKyAgfQorICBpZiAoZXhwZWN0ZWRUcmVlLm93bmVyRGlz
cGxheU5hbWUgIT09IHVuZGVmaW5lZCkgeworICAgIGV4cGVjdEVxdWFsKFJlYWN0Q29tcG9uZW50
VHJlZUhvb2suZ2V0RGlzcGxheU5hbWUob3duZXJJRCksIGV4cGVjdGVkVHJlZS5vd25lckRpc3Bs
YXlOYW1lLCAnb3duZXJEaXNwbGF5TmFtZScpOworICB9CisgIGlmIChleHBlY3RlZFRyZWUucGFy
ZW50SUQgIT09IHVuZGVmaW5lZCkgeworICAgIGV4cGVjdEVxdWFsKHBhcmVudElELCBleHBlY3Rl
ZFRyZWUucGFyZW50SUQsICdwYXJlbnRJRCcpOworICB9CisgIGlmIChleHBlY3RlZFRyZWUudGV4
dCAhPT0gdW5kZWZpbmVkKSB7CisgICAgZXhwZWN0RXF1YWwodGV4dCwgZXhwZWN0ZWRUcmVlLnRl
eHQsICd0ZXh0Jyk7CisgICAgZXhwZWN0RXF1YWwoJycgKyBlbGVtZW50LCBleHBlY3RlZFRyZWUu
dGV4dCwgJ2VsZW1lbnQudG9TdHJpbmcoKScpOworICB9IGVsc2UgeworICAgIGV4cGVjdEVxdWFs
KHRleHQsIG51bGwsICd0ZXh0Jyk7CisgIH0KKyAgaWYgKGV4cGVjdGVkVHJlZS5lbGVtZW50ICE9
PSB1bmRlZmluZWQpIHsKKyAgICAvLyBUT0RPOiBDb21wYXJpbmcgZWxlbWVudHMgbWFrZXMgdGVz
dHMgcnVuIG91dCBvZiBtZW1vcnkgb24gZXJyb3JzLgorICAgIC8vIEZvciBub3csIGNvbXBhcmUg
anVzdCB0eXBlcy4KKyAgICBleHBlY3RFcXVhbChlbGVtZW50ICYmIGVsZW1lbnQudHlwZSwgZXhw
ZWN0ZWRUcmVlLmVsZW1lbnQgJiYgZXhwZWN0ZWRUcmVlLmVsZW1lbnQudHlwZSwgJ2VsZW1lbnQu
dHlwZScpOworICB9IGVsc2UgaWYgKHRleHQgPT0gbnVsbCkgeworICAgIGV4cGVjdEVxdWFsKHR5
cGVvZiBlbGVtZW50LCAnb2JqZWN0JywgJ3R5cGVvZiBlbGVtZW50Jyk7CisgIH0KKyAgaWYgKGV4
cGVjdGVkVHJlZS5jaGlsZHJlbiAhPT0gdW5kZWZpbmVkKSB7CisgICAgZXhwZWN0RXF1YWwoY2hp
bGRJRHMubGVuZ3RoLCBleHBlY3RlZFRyZWUuY2hpbGRyZW4ubGVuZ3RoLCAnY2hpbGRyZW4ubGVu
Z3RoJyk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZElEcy5sZW5ndGg7IGkrKykgewor
ICAgICAgZXhwZWN0VHJlZShjaGlsZElEc1tpXSwgX2V4dGVuZHMoeyBwYXJlbnRJRDogcm9vdElE
IH0sIGV4cGVjdGVkVHJlZS5jaGlsZHJlbltpXSksIHBhdGgpOworICAgIH0KKyAgfSBlbHNlIHsK
KyAgICBleHBlY3RFcXVhbChjaGlsZElEcywgW10sICdjaGlsZElEcycpOworICB9Cit9CisKK3Zh
ciBSZWFjdENvbXBvbmVudFRyZWVUZXN0VXRpbHMgPSB7CisgIGV4cGVjdFRyZWU6IGV4cGVjdFRy
ZWUsCisgIGdldFJvb3REaXNwbGF5TmFtZXM6IGdldFJvb3REaXNwbGF5TmFtZXMsCisgIGdldFJl
Z2lzdGVyZWREaXNwbGF5TmFtZXM6IGdldFJlZ2lzdGVyZWREaXNwbGF5TmFtZXMKK307CisKK21v
ZHVsZS5leHBvcnRzID0gUmVhY3RDb21wb25lbnRUcmVlVGVzdFV0aWxzOwpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxl
cy9yZWFjdC1kb20vbGliL1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50LmpzIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
cmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RDb21wb3NpdGVDb21wb25lbnQu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMDQ4MmMzMGU0N2U0NDc4YmVhOTRlMTU5ZTdmODhkMTU1NDA5YjYyMwot
LS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1k
b20vbGliL1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50LmpzCkBAIC0wLDAgKzEsOTAxIEBACisvKioK
KyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl
IEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50Cisg
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJ
bnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0UHJvZEludmFyaWFudCcpLAorICAgIF9hc3NpZ24g
PSByZXF1aXJlKCdvYmplY3QtYXNzaWduJyk7CisKK3ZhciBSZWFjdCA9IHJlcXVpcmUoJ3JlYWN0
L2xpYi9SZWFjdCcpOwordmFyIFJlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQgPSByZXF1aXJlKCcu
L1JlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQnKTsKK3ZhciBSZWFjdEN1cnJlbnRPd25lciA9IHJl
cXVpcmUoJ3JlYWN0L2xpYi9SZWFjdEN1cnJlbnRPd25lcicpOwordmFyIFJlYWN0RXJyb3JVdGls
cyA9IHJlcXVpcmUoJy4vUmVhY3RFcnJvclV0aWxzJyk7Cit2YXIgUmVhY3RJbnN0YW5jZU1hcCA9
IHJlcXVpcmUoJy4vUmVhY3RJbnN0YW5jZU1hcCcpOwordmFyIFJlYWN0SW5zdHJ1bWVudGF0aW9u
ID0gcmVxdWlyZSgnLi9SZWFjdEluc3RydW1lbnRhdGlvbicpOwordmFyIFJlYWN0Tm9kZVR5cGVz
ID0gcmVxdWlyZSgnLi9SZWFjdE5vZGVUeXBlcycpOwordmFyIFJlYWN0UmVjb25jaWxlciA9IHJl
cXVpcmUoJy4vUmVhY3RSZWNvbmNpbGVyJyk7CisKK2lmIChwcm9jZXNzLmVudi5OT0RFX0VOViAh
PT0gJ3Byb2R1Y3Rpb24nKSB7CisgIHZhciBjaGVja1JlYWN0VHlwZVNwZWMgPSByZXF1aXJlKCcu
L2NoZWNrUmVhY3RUeXBlU3BlYycpOworfQorCit2YXIgZW1wdHlPYmplY3QgPSByZXF1aXJlKCdm
YmpzL2xpYi9lbXB0eU9iamVjdCcpOwordmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGli
L2ludmFyaWFudCcpOwordmFyIHNoYWxsb3dFcXVhbCA9IHJlcXVpcmUoJ2ZianMvbGliL3NoYWxs
b3dFcXVhbCcpOwordmFyIHNob3VsZFVwZGF0ZVJlYWN0Q29tcG9uZW50ID0gcmVxdWlyZSgnLi9z
aG91bGRVcGRhdGVSZWFjdENvbXBvbmVudCcpOwordmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpz
L2xpYi93YXJuaW5nJyk7CisKK3ZhciBDb21wb3NpdGVUeXBlcyA9IHsKKyAgSW1wdXJlQ2xhc3M6
IDAsCisgIFB1cmVDbGFzczogMSwKKyAgU3RhdGVsZXNzRnVuY3Rpb25hbDogMgorfTsKKworZnVu
Y3Rpb24gU3RhdGVsZXNzQ29tcG9uZW50KENvbXBvbmVudCkge30KK1N0YXRlbGVzc0NvbXBvbmVu
dC5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkgeworICB2YXIgQ29tcG9uZW50ID0gUmVh
Y3RJbnN0YW5jZU1hcC5nZXQodGhpcykuX2N1cnJlbnRFbGVtZW50LnR5cGU7CisgIHZhciBlbGVt
ZW50ID0gQ29tcG9uZW50KHRoaXMucHJvcHMsIHRoaXMuY29udGV4dCwgdGhpcy51cGRhdGVyKTsK
KyAgd2FybklmSW52YWxpZEVsZW1lbnQoQ29tcG9uZW50LCBlbGVtZW50KTsKKyAgcmV0dXJuIGVs
ZW1lbnQ7Cit9OworCitmdW5jdGlvbiB3YXJuSWZJbnZhbGlkRWxlbWVudChDb21wb25lbnQsIGVs
ZW1lbnQpIHsKKyAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHsK
KyAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhlbGVt
ZW50ID09PSBudWxsIHx8IGVsZW1lbnQgPT09IGZhbHNlIHx8IFJlYWN0LmlzVmFsaWRFbGVtZW50
KGVsZW1lbnQpLCAnJXMoLi4uKTogQSB2YWxpZCBSZWFjdCBlbGVtZW50IChvciBudWxsKSBtdXN0
IGJlIHJldHVybmVkLiBZb3UgbWF5IGhhdmUgJyArICdyZXR1cm5lZCB1bmRlZmluZWQsIGFuIGFy
cmF5IG9yIHNvbWUgb3RoZXIgaW52YWxpZCBvYmplY3QuJywgQ29tcG9uZW50LmRpc3BsYXlOYW1l
IHx8IENvbXBvbmVudC5uYW1lIHx8ICdDb21wb25lbnQnKSA6IHZvaWQgMDsKKyAgICBwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyghQ29tcG9uZW50LmNoaWxk
Q29udGV4dFR5cGVzLCAnJXMoLi4uKTogY2hpbGRDb250ZXh0VHlwZXMgY2Fubm90IGJlIGRlZmlu
ZWQgb24gYSBmdW5jdGlvbmFsIGNvbXBvbmVudC4nLCBDb21wb25lbnQuZGlzcGxheU5hbWUgfHwg
Q29tcG9uZW50Lm5hbWUgfHwgJ0NvbXBvbmVudCcpIDogdm9pZCAwOworICB9Cit9CisKK2Z1bmN0
aW9uIHNob3VsZENvbnN0cnVjdChDb21wb25lbnQpIHsKKyAgcmV0dXJuICEhKENvbXBvbmVudC5w
cm90b3R5cGUgJiYgQ29tcG9uZW50LnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50KTsKK30KKwor
ZnVuY3Rpb24gaXNQdXJlQ29tcG9uZW50KENvbXBvbmVudCkgeworICByZXR1cm4gISEoQ29tcG9u
ZW50LnByb3RvdHlwZSAmJiBDb21wb25lbnQucHJvdG90eXBlLmlzUHVyZVJlYWN0Q29tcG9uZW50
KTsKK30KKworLy8gU2VwYXJhdGVkIGludG8gYSBmdW5jdGlvbiB0byBjb250YWluIGRlb3B0aW1p
emF0aW9ucyBjYXVzZWQgYnkgdHJ5L2ZpbmFsbHkuCitmdW5jdGlvbiBtZWFzdXJlTGlmZUN5Y2xl
UGVyZihmbiwgZGVidWdJRCwgdGltZXJUeXBlKSB7CisgIGlmIChkZWJ1Z0lEID09PSAwKSB7Cisg
ICAgLy8gVG9wLWxldmVsIHdyYXBwZXJzIChzZWUgUmVhY3RNb3VudCkgYW5kIGVtcHR5IGNvbXBv
bmVudHMgKHNlZQorICAgIC8vIFJlYWN0RE9NRW1wdHlDb21wb25lbnQpIGFyZSBpbnZpc2libGUg
dG8gaG9va3MgYW5kIGRldnRvb2xzLgorICAgIC8vIEJvdGggYXJlIGltcGxlbWVudGF0aW9uIGRl
dGFpbHMgdGhhdCBzaG91bGQgZ28gYXdheSBpbiB0aGUgZnV0dXJlLgorICAgIHJldHVybiBmbigp
OworICB9CisKKyAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uQmVnaW5MaWZlQ3lj
bGVUaW1lcihkZWJ1Z0lELCB0aW1lclR5cGUpOworICB0cnkgeworICAgIHJldHVybiBmbigpOwor
ICB9IGZpbmFsbHkgeworICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkVuZExp
ZmVDeWNsZVRpbWVyKGRlYnVnSUQsIHRpbWVyVHlwZSk7CisgIH0KK30KKworLyoqCisgKiAtLS0t
LS0tLS0tLS0tLS0tLS0gVGhlIExpZmUtQ3ljbGUgb2YgYSBDb21wb3NpdGUgQ29tcG9uZW50IC0t
LS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIC0gY29uc3RydWN0b3I6IEluaXRpYWxpemF0aW9uIG9m
IHN0YXRlLiBUaGUgaW5zdGFuY2UgaXMgbm93IHJldGFpbmVkLgorICogICAtIGNvbXBvbmVudFdp
bGxNb3VudAorICogICAtIHJlbmRlcgorICogICAtIFtjaGlsZHJlbidzIGNvbnN0cnVjdG9yc10K
KyAqICAgICAtIFtjaGlsZHJlbidzIGNvbXBvbmVudFdpbGxNb3VudCBhbmQgcmVuZGVyXQorICog
ICAgIC0gW2NoaWxkcmVuJ3MgY29tcG9uZW50RGlkTW91bnRdCisgKiAgICAgLSBjb21wb25lbnRE
aWRNb3VudAorICoKKyAqICAgICAgIFVwZGF0ZSBQaGFzZXM6CisgKiAgICAgICAtIGNvbXBvbmVu
dFdpbGxSZWNlaXZlUHJvcHMgKG9ubHkgY2FsbGVkIGlmIHBhcmVudCB1cGRhdGVkKQorICogICAg
ICAgLSBzaG91bGRDb21wb25lbnRVcGRhdGUKKyAqICAgICAgICAgLSBjb21wb25lbnRXaWxsVXBk
YXRlCisgKiAgICAgICAgICAgLSByZW5kZXIKKyAqICAgICAgICAgICAtIFtjaGlsZHJlbidzIGNv
bnN0cnVjdG9ycyBvciByZWNlaXZlIHByb3BzIHBoYXNlc10KKyAqICAgICAgICAgLSBjb21wb25l
bnREaWRVcGRhdGUKKyAqCisgKiAgICAgLSBjb21wb25lbnRXaWxsVW5tb3VudAorICogICAgIC0g
W2NoaWxkcmVuJ3MgY29tcG9uZW50V2lsbFVubW91bnRdCisgKiAgIC0gW2NoaWxkcmVuIGRlc3Ry
b3llZF0KKyAqIC0gKGRlc3Ryb3llZCk6IFRoZSBpbnN0YW5jZSBpcyBub3cgYmxhbmssIHJlbGVh
c2VkIGJ5IFJlYWN0IGFuZCByZWFkeSBmb3IgR0MuCisgKgorICogLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKyAqLworCisvKioKKyAqIEFuIGluY3JlbWVudGluZyBJRCBhc3NpZ25lZCB0byBlYWNoIGNv
bXBvbmVudCB3aGVuIGl0IGlzIG1vdW50ZWQuIFRoaXMgaXMKKyAqIHVzZWQgdG8gZW5mb3JjZSB0
aGUgb3JkZXIgaW4gd2hpY2ggYFJlYWN0VXBkYXRlc2AgdXBkYXRlcyBkaXJ0eSBjb21wb25lbnRz
LgorICoKKyAqIEBwcml2YXRlCisgKi8KK3ZhciBuZXh0TW91bnRJRCA9IDE7CisKKy8qKgorICog
QGxlbmRzIHtSZWFjdENvbXBvc2l0ZUNvbXBvbmVudC5wcm90b3R5cGV9CisgKi8KK3ZhciBSZWFj
dENvbXBvc2l0ZUNvbXBvbmVudCA9IHsKKworICAvKioKKyAgICogQmFzZSBjb25zdHJ1Y3RvciBm
b3IgYWxsIGNvbXBvc2l0ZSBjb21wb25lbnQuCisgICAqCisgICAqIEBwYXJhbSB7UmVhY3RFbGVt
ZW50fSBlbGVtZW50CisgICAqIEBmaW5hbAorICAgKiBAaW50ZXJuYWwKKyAgICovCisgIGNvbnN0
cnVjdDogZnVuY3Rpb24gKGVsZW1lbnQpIHsKKyAgICB0aGlzLl9jdXJyZW50RWxlbWVudCA9IGVs
ZW1lbnQ7CisgICAgdGhpcy5fcm9vdE5vZGVJRCA9IDA7CisgICAgdGhpcy5fY29tcG9zaXRlVHlw
ZSA9IG51bGw7CisgICAgdGhpcy5faW5zdGFuY2UgPSBudWxsOworICAgIHRoaXMuX2hvc3RQYXJl
bnQgPSBudWxsOworICAgIHRoaXMuX2hvc3RDb250YWluZXJJbmZvID0gbnVsbDsKKworICAgIC8v
IFNlZSBSZWFjdFVwZGF0ZVF1ZXVlCisgICAgdGhpcy5fdXBkYXRlQmF0Y2hOdW1iZXIgPSBudWxs
OworICAgIHRoaXMuX3BlbmRpbmdFbGVtZW50ID0gbnVsbDsKKyAgICB0aGlzLl9wZW5kaW5nU3Rh
dGVRdWV1ZSA9IG51bGw7CisgICAgdGhpcy5fcGVuZGluZ1JlcGxhY2VTdGF0ZSA9IGZhbHNlOwor
ICAgIHRoaXMuX3BlbmRpbmdGb3JjZVVwZGF0ZSA9IGZhbHNlOworCisgICAgdGhpcy5fcmVuZGVy
ZWROb2RlVHlwZSA9IG51bGw7CisgICAgdGhpcy5fcmVuZGVyZWRDb21wb25lbnQgPSBudWxsOwor
ICAgIHRoaXMuX2NvbnRleHQgPSBudWxsOworICAgIHRoaXMuX21vdW50T3JkZXIgPSAwOworICAg
IHRoaXMuX3RvcExldmVsV3JhcHBlciA9IG51bGw7CisKKyAgICAvLyBTZWUgUmVhY3RVcGRhdGVz
IGFuZCBSZWFjdFVwZGF0ZVF1ZXVlLgorICAgIHRoaXMuX3BlbmRpbmdDYWxsYmFja3MgPSBudWxs
OworCisgICAgLy8gQ29tcG9uZW50V2lsbFVubW91bnQgc2hhbGwgb25seSBiZSBjYWxsZWQgb25j
ZQorICAgIHRoaXMuX2NhbGxlZENvbXBvbmVudFdpbGxVbm1vdW50ID0gZmFsc2U7CisKKyAgICBp
ZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgdGhpcy5f
d2FybmVkQWJvdXRSZWZzSW5SZW5kZXIgPSBmYWxzZTsKKyAgICB9CisgIH0sCisKKyAgLyoqCisg
ICAqIEluaXRpYWxpemVzIHRoZSBjb21wb25lbnQsIHJlbmRlcnMgbWFya3VwLCBhbmQgcmVnaXN0
ZXJzIGV2ZW50IGxpc3RlbmVycy4KKyAgICoKKyAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRy
YW5zYWN0aW9ufFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uCisg
ICAqIEBwYXJhbSB7P29iamVjdH0gaG9zdFBhcmVudAorICAgKiBAcGFyYW0gez9vYmplY3R9IGhv
c3RDb250YWluZXJJbmZvCisgICAqIEBwYXJhbSB7P29iamVjdH0gY29udGV4dAorICAgKiBAcmV0
dXJuIHs/c3RyaW5nfSBSZW5kZXJlZCBtYXJrdXAgdG8gYmUgaW5zZXJ0ZWQgaW50byB0aGUgRE9N
LgorICAgKiBAZmluYWwKKyAgICogQGludGVybmFsCisgICAqLworICBtb3VudENvbXBvbmVudDog
ZnVuY3Rpb24gKHRyYW5zYWN0aW9uLCBob3N0UGFyZW50LCBob3N0Q29udGFpbmVySW5mbywgY29u
dGV4dCkgeworICAgIHZhciBfdGhpcyA9IHRoaXM7CisKKyAgICB0aGlzLl9jb250ZXh0ID0gY29u
dGV4dDsKKyAgICB0aGlzLl9tb3VudE9yZGVyID0gbmV4dE1vdW50SUQrKzsKKyAgICB0aGlzLl9o
b3N0UGFyZW50ID0gaG9zdFBhcmVudDsKKyAgICB0aGlzLl9ob3N0Q29udGFpbmVySW5mbyA9IGhv
c3RDb250YWluZXJJbmZvOworCisgICAgdmFyIHB1YmxpY1Byb3BzID0gdGhpcy5fY3VycmVudEVs
ZW1lbnQucHJvcHM7CisgICAgdmFyIHB1YmxpY0NvbnRleHQgPSB0aGlzLl9wcm9jZXNzQ29udGV4
dChjb250ZXh0KTsKKworICAgIHZhciBDb21wb25lbnQgPSB0aGlzLl9jdXJyZW50RWxlbWVudC50
eXBlOworCisgICAgdmFyIHVwZGF0ZVF1ZXVlID0gdHJhbnNhY3Rpb24uZ2V0VXBkYXRlUXVldWUo
KTsKKworICAgIC8vIEluaXRpYWxpemUgdGhlIHB1YmxpYyBjbGFzcworICAgIHZhciBkb0NvbnN0
cnVjdCA9IHNob3VsZENvbnN0cnVjdChDb21wb25lbnQpOworICAgIHZhciBpbnN0ID0gdGhpcy5f
Y29uc3RydWN0Q29tcG9uZW50KGRvQ29uc3RydWN0LCBwdWJsaWNQcm9wcywgcHVibGljQ29udGV4
dCwgdXBkYXRlUXVldWUpOworICAgIHZhciByZW5kZXJlZEVsZW1lbnQ7CisKKyAgICAvLyBTdXBw
b3J0IGZ1bmN0aW9uYWwgY29tcG9uZW50cworICAgIGlmICghZG9Db25zdHJ1Y3QgJiYgKGluc3Qg
PT0gbnVsbCB8fCBpbnN0LnJlbmRlciA9PSBudWxsKSkgeworICAgICAgcmVuZGVyZWRFbGVtZW50
ID0gaW5zdDsKKyAgICAgIHdhcm5JZkludmFsaWRFbGVtZW50KENvbXBvbmVudCwgcmVuZGVyZWRF
bGVtZW50KTsKKyAgICAgICEoaW5zdCA9PT0gbnVsbCB8fCBpbnN0ID09PSBmYWxzZSB8fCBSZWFj
dC5pc1ZhbGlkRWxlbWVudChpbnN0KSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnJXMoLi4uKTogQSB2YWxpZCBSZWFjdCBlbGVtZW50
IChvciBudWxsKSBtdXN0IGJlIHJldHVybmVkLiBZb3UgbWF5IGhhdmUgcmV0dXJuZWQgdW5kZWZp
bmVkLCBhbiBhcnJheSBvciBzb21lIG90aGVyIGludmFsaWQgb2JqZWN0LicsIENvbXBvbmVudC5k
aXNwbGF5TmFtZSB8fCBDb21wb25lbnQubmFtZSB8fCAnQ29tcG9uZW50JykgOiBfcHJvZEludmFy
aWFudCgnMTA1JywgQ29tcG9uZW50LmRpc3BsYXlOYW1lIHx8IENvbXBvbmVudC5uYW1lIHx8ICdD
b21wb25lbnQnKSA6IHZvaWQgMDsKKyAgICAgIGluc3QgPSBuZXcgU3RhdGVsZXNzQ29tcG9uZW50
KENvbXBvbmVudCk7CisgICAgICB0aGlzLl9jb21wb3NpdGVUeXBlID0gQ29tcG9zaXRlVHlwZXMu
U3RhdGVsZXNzRnVuY3Rpb25hbDsKKyAgICB9IGVsc2UgeworICAgICAgaWYgKGlzUHVyZUNvbXBv
bmVudChDb21wb25lbnQpKSB7CisgICAgICAgIHRoaXMuX2NvbXBvc2l0ZVR5cGUgPSBDb21wb3Np
dGVUeXBlcy5QdXJlQ2xhc3M7CisgICAgICB9IGVsc2UgeworICAgICAgICB0aGlzLl9jb21wb3Np
dGVUeXBlID0gQ29tcG9zaXRlVHlwZXMuSW1wdXJlQ2xhc3M7CisgICAgICB9CisgICAgfQorCisg
ICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgIC8v
IFRoaXMgd2lsbCB0aHJvdyBsYXRlciBpbiBfcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50LCBidXQg
YWRkIGFuIGVhcmx5CisgICAgICAvLyB3YXJuaW5nIG5vdyB0byBoZWxwIGRlYnVnZ2luZworICAg
ICAgaWYgKGluc3QucmVuZGVyID09IG51bGwpIHsKKyAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICclcyguLi4pOiBObyBgcmVuZGVy
YCBtZXRob2QgZm91bmQgb24gdGhlIHJldHVybmVkIGNvbXBvbmVudCAnICsgJ2luc3RhbmNlOiB5
b3UgbWF5IGhhdmUgZm9yZ290dGVuIHRvIGRlZmluZSBgcmVuZGVyYC4nLCBDb21wb25lbnQuZGlz
cGxheU5hbWUgfHwgQ29tcG9uZW50Lm5hbWUgfHwgJ0NvbXBvbmVudCcpIDogdm9pZCAwOworICAg
ICAgfQorCisgICAgICB2YXIgcHJvcHNNdXRhdGVkID0gaW5zdC5wcm9wcyAhPT0gcHVibGljUHJv
cHM7CisgICAgICB2YXIgY29tcG9uZW50TmFtZSA9IENvbXBvbmVudC5kaXNwbGF5TmFtZSB8fCBD
b21wb25lbnQubmFtZSB8fCAnQ29tcG9uZW50JzsKKworICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoaW5zdC5wcm9wcyA9PT0gdW5kZWZpbmVkIHx8
ICFwcm9wc011dGF0ZWQsICclcyguLi4pOiBXaGVuIGNhbGxpbmcgc3VwZXIoKSBpbiBgJXNgLCBt
YWtlIHN1cmUgdG8gcGFzcyAnICsgJ3VwIHRoZSBzYW1lIHByb3BzIHRoYXQgeW91ciBjb21wb25l
bnRcJ3MgY29uc3RydWN0b3Igd2FzIHBhc3NlZC4nLCBjb21wb25lbnROYW1lLCBjb21wb25lbnRO
YW1lKSA6IHZvaWQgMDsKKyAgICB9CisKKyAgICAvLyBUaGVzZSBzaG91bGQgYmUgc2V0IHVwIGlu
IHRoZSBjb25zdHJ1Y3RvciwgYnV0IGFzIGEgY29udmVuaWVuY2UgZm9yCisgICAgLy8gc2ltcGxl
ciBjbGFzcyBhYnN0cmFjdGlvbnMsIHdlIHNldCB0aGVtIHVwIGFmdGVyIHRoZSBmYWN0LgorICAg
IGluc3QucHJvcHMgPSBwdWJsaWNQcm9wczsKKyAgICBpbnN0LmNvbnRleHQgPSBwdWJsaWNDb250
ZXh0OworICAgIGluc3QucmVmcyA9IGVtcHR5T2JqZWN0OworICAgIGluc3QudXBkYXRlciA9IHVw
ZGF0ZVF1ZXVlOworCisgICAgdGhpcy5faW5zdGFuY2UgPSBpbnN0OworCisgICAgLy8gU3RvcmUg
YSByZWZlcmVuY2UgZnJvbSB0aGUgaW5zdGFuY2UgYmFjayB0byB0aGUgaW50ZXJuYWwgcmVwcmVz
ZW50YXRpb24KKyAgICBSZWFjdEluc3RhbmNlTWFwLnNldChpbnN0LCB0aGlzKTsKKworICAgIGlm
IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAvLyBTaW5j
ZSBwbGFpbiBKUyBjbGFzc2VzIGFyZSBkZWZpbmVkIHdpdGhvdXQgYW55IHNwZWNpYWwgaW5pdGlh
bGl6YXRpb24KKyAgICAgIC8vIGxvZ2ljLCB3ZSBjYW4gbm90IGNhdGNoIGNvbW1vbiBlcnJvcnMg
ZWFybHkuIFRoZXJlZm9yZSwgd2UgaGF2ZSB0bworICAgICAgLy8gY2F0Y2ggdGhlbSBoZXJlLCBh
dCBpbml0aWFsaXphdGlvbiB0aW1lLCBpbnN0ZWFkLgorICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIWluc3QuZ2V0SW5pdGlhbFN0YXRlIHx8IGlu
c3QuZ2V0SW5pdGlhbFN0YXRlLmlzUmVhY3RDbGFzc0FwcHJvdmVkLCAnZ2V0SW5pdGlhbFN0YXRl
IHdhcyBkZWZpbmVkIG9uICVzLCBhIHBsYWluIEphdmFTY3JpcHQgY2xhc3MuICcgKyAnVGhpcyBp
cyBvbmx5IHN1cHBvcnRlZCBmb3IgY2xhc3NlcyBjcmVhdGVkIHVzaW5nIFJlYWN0LmNyZWF0ZUNs
YXNzLiAnICsgJ0RpZCB5b3UgbWVhbiB0byBkZWZpbmUgYSBzdGF0ZSBwcm9wZXJ0eSBpbnN0ZWFk
PycsIHRoaXMuZ2V0TmFtZSgpIHx8ICdhIGNvbXBvbmVudCcpIDogdm9pZCAwOworICAgICAgcHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIWluc3QuZ2V0RGVm
YXVsdFByb3BzIHx8IGluc3QuZ2V0RGVmYXVsdFByb3BzLmlzUmVhY3RDbGFzc0FwcHJvdmVkLCAn
Z2V0RGVmYXVsdFByb3BzIHdhcyBkZWZpbmVkIG9uICVzLCBhIHBsYWluIEphdmFTY3JpcHQgY2xh
c3MuICcgKyAnVGhpcyBpcyBvbmx5IHN1cHBvcnRlZCBmb3IgY2xhc3NlcyBjcmVhdGVkIHVzaW5n
IFJlYWN0LmNyZWF0ZUNsYXNzLiAnICsgJ1VzZSBhIHN0YXRpYyBwcm9wZXJ0eSB0byBkZWZpbmUg
ZGVmYXVsdFByb3BzIGluc3RlYWQuJywgdGhpcy5nZXROYW1lKCkgfHwgJ2EgY29tcG9uZW50Jykg
OiB2b2lkIDA7CisgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8g
d2FybmluZyghaW5zdC5wcm9wVHlwZXMsICdwcm9wVHlwZXMgd2FzIGRlZmluZWQgYXMgYW4gaW5z
dGFuY2UgcHJvcGVydHkgb24gJXMuIFVzZSBhIHN0YXRpYyAnICsgJ3Byb3BlcnR5IHRvIGRlZmlu
ZSBwcm9wVHlwZXMgaW5zdGVhZC4nLCB0aGlzLmdldE5hbWUoKSB8fCAnYSBjb21wb25lbnQnKSA6
IHZvaWQgMDsKKyAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3
YXJuaW5nKCFpbnN0LmNvbnRleHRUeXBlcywgJ2NvbnRleHRUeXBlcyB3YXMgZGVmaW5lZCBhcyBh
biBpbnN0YW5jZSBwcm9wZXJ0eSBvbiAlcy4gVXNlIGEgJyArICdzdGF0aWMgcHJvcGVydHkgdG8g
ZGVmaW5lIGNvbnRleHRUeXBlcyBpbnN0ZWFkLicsIHRoaXMuZ2V0TmFtZSgpIHx8ICdhIGNvbXBv
bmVudCcpIDogdm9pZCAwOworICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJyA/IHdhcm5pbmcodHlwZW9mIGluc3QuY29tcG9uZW50U2hvdWxkVXBkYXRlICE9PSAnZnVu
Y3Rpb24nLCAnJXMgaGFzIGEgbWV0aG9kIGNhbGxlZCAnICsgJ2NvbXBvbmVudFNob3VsZFVwZGF0
ZSgpLiBEaWQgeW91IG1lYW4gc2hvdWxkQ29tcG9uZW50VXBkYXRlKCk/ICcgKyAnVGhlIG5hbWUg
aXMgcGhyYXNlZCBhcyBhIHF1ZXN0aW9uIGJlY2F1c2UgdGhlIGZ1bmN0aW9uIGlzICcgKyAnZXhw
ZWN0ZWQgdG8gcmV0dXJuIGEgdmFsdWUuJywgdGhpcy5nZXROYW1lKCkgfHwgJ0EgY29tcG9uZW50
JykgOiB2b2lkIDA7CisgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24n
ID8gd2FybmluZyh0eXBlb2YgaW5zdC5jb21wb25lbnREaWRVbm1vdW50ICE9PSAnZnVuY3Rpb24n
LCAnJXMgaGFzIGEgbWV0aG9kIGNhbGxlZCAnICsgJ2NvbXBvbmVudERpZFVubW91bnQoKS4gQnV0
IHRoZXJlIGlzIG5vIHN1Y2ggbGlmZWN5Y2xlIG1ldGhvZC4gJyArICdEaWQgeW91IG1lYW4gY29t
cG9uZW50V2lsbFVubW91bnQoKT8nLCB0aGlzLmdldE5hbWUoKSB8fCAnQSBjb21wb25lbnQnKSA6
IHZvaWQgMDsKKyAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3
YXJuaW5nKHR5cGVvZiBpbnN0LmNvbXBvbmVudFdpbGxSZWNpZXZlUHJvcHMgIT09ICdmdW5jdGlv
bicsICclcyBoYXMgYSBtZXRob2QgY2FsbGVkICcgKyAnY29tcG9uZW50V2lsbFJlY2lldmVQcm9w
cygpLiBEaWQgeW91IG1lYW4gY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcygpPycsIHRoaXMuZ2V0
TmFtZSgpIHx8ICdBIGNvbXBvbmVudCcpIDogdm9pZCAwOworICAgIH0KKworICAgIHZhciBpbml0
aWFsU3RhdGUgPSBpbnN0LnN0YXRlOworICAgIGlmIChpbml0aWFsU3RhdGUgPT09IHVuZGVmaW5l
ZCkgeworICAgICAgaW5zdC5zdGF0ZSA9IGluaXRpYWxTdGF0ZSA9IG51bGw7CisgICAgfQorICAg
ICEodHlwZW9mIGluaXRpYWxTdGF0ZSA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkoaW5p
dGlhbFN0YXRlKSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52
YXJpYW50KGZhbHNlLCAnJXMuc3RhdGU6IG11c3QgYmUgc2V0IHRvIGFuIG9iamVjdCBvciBudWxs
JywgdGhpcy5nZXROYW1lKCkgfHwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50JykgOiBfcHJvZElu
dmFyaWFudCgnMTA2JywgdGhpcy5nZXROYW1lKCkgfHwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50
JykgOiB2b2lkIDA7CisKKyAgICB0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZSA9IG51bGw7CisgICAg
dGhpcy5fcGVuZGluZ1JlcGxhY2VTdGF0ZSA9IGZhbHNlOworICAgIHRoaXMuX3BlbmRpbmdGb3Jj
ZVVwZGF0ZSA9IGZhbHNlOworCisgICAgdmFyIG1hcmt1cDsKKyAgICBpZiAoaW5zdC51bnN0YWJs
ZV9oYW5kbGVFcnJvcikgeworICAgICAgbWFya3VwID0gdGhpcy5wZXJmb3JtSW5pdGlhbE1vdW50
V2l0aEVycm9ySGFuZGxpbmcocmVuZGVyZWRFbGVtZW50LCBob3N0UGFyZW50LCBob3N0Q29udGFp
bmVySW5mbywgdHJhbnNhY3Rpb24sIGNvbnRleHQpOworICAgIH0gZWxzZSB7CisgICAgICBtYXJr
dXAgPSB0aGlzLnBlcmZvcm1Jbml0aWFsTW91bnQocmVuZGVyZWRFbGVtZW50LCBob3N0UGFyZW50
LCBob3N0Q29udGFpbmVySW5mbywgdHJhbnNhY3Rpb24sIGNvbnRleHQpOworICAgIH0KKworICAg
IGlmIChpbnN0LmNvbXBvbmVudERpZE1vdW50KSB7CisgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9E
RV9FTlYgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1v
dW50UmVhZHkoKS5lbnF1ZXVlKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICBtZWFzdXJlTGlmZUN5
Y2xlUGVyZihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICByZXR1cm4gaW5zdC5jb21wb25lbnRE
aWRNb3VudCgpOworICAgICAgICAgIH0sIF90aGlzLl9kZWJ1Z0lELCAnY29tcG9uZW50RGlkTW91
bnQnKTsKKyAgICAgICAgfSk7CisgICAgICB9IGVsc2UgeworICAgICAgICB0cmFuc2FjdGlvbi5n
ZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGluc3QuY29tcG9uZW50RGlkTW91bnQsIGluc3Qp
OworICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBtYXJrdXA7CisgIH0sCisKKyAgX2NvbnN0
cnVjdENvbXBvbmVudDogZnVuY3Rpb24gKGRvQ29uc3RydWN0LCBwdWJsaWNQcm9wcywgcHVibGlj
Q29udGV4dCwgdXBkYXRlUXVldWUpIHsKKyAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09
ICdwcm9kdWN0aW9uJykgeworICAgICAgUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCA9IHRoaXM7
CisgICAgICB0cnkgeworICAgICAgICByZXR1cm4gdGhpcy5fY29uc3RydWN0Q29tcG9uZW50V2l0
aG91dE93bmVyKGRvQ29uc3RydWN0LCBwdWJsaWNQcm9wcywgcHVibGljQ29udGV4dCwgdXBkYXRl
UXVldWUpOworICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgUmVhY3RDdXJyZW50T3duZXIuY3Vy
cmVudCA9IG51bGw7CisgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgIHJldHVybiB0aGlzLl9j
b25zdHJ1Y3RDb21wb25lbnRXaXRob3V0T3duZXIoZG9Db25zdHJ1Y3QsIHB1YmxpY1Byb3BzLCBw
dWJsaWNDb250ZXh0LCB1cGRhdGVRdWV1ZSk7CisgICAgfQorICB9LAorCisgIF9jb25zdHJ1Y3RD
b21wb25lbnRXaXRob3V0T3duZXI6IGZ1bmN0aW9uIChkb0NvbnN0cnVjdCwgcHVibGljUHJvcHMs
IHB1YmxpY0NvbnRleHQsIHVwZGF0ZVF1ZXVlKSB7CisgICAgdmFyIENvbXBvbmVudCA9IHRoaXMu
X2N1cnJlbnRFbGVtZW50LnR5cGU7CisKKyAgICBpZiAoZG9Db25zdHJ1Y3QpIHsKKyAgICAgIGlm
IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAgIHJldHVy
biBtZWFzdXJlTGlmZUN5Y2xlUGVyZihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgcmV0dXJuIG5l
dyBDb21wb25lbnQocHVibGljUHJvcHMsIHB1YmxpY0NvbnRleHQsIHVwZGF0ZVF1ZXVlKTsKKyAg
ICAgICAgfSwgdGhpcy5fZGVidWdJRCwgJ2N0b3InKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHJldHVybiBuZXcgQ29tcG9uZW50KHB1YmxpY1Byb3BzLCBwdWJsaWNDb250ZXh0LCB1cGRhdGVR
dWV1ZSk7CisgICAgICB9CisgICAgfQorCisgICAgLy8gVGhpcyBjYW4gc3RpbGwgYmUgYW4gaW5z
dGFuY2UgaW4gY2FzZSBvZiBmYWN0b3J5IGNvbXBvbmVudHMKKyAgICAvLyBidXQgd2UnbGwgY291
bnQgdGhpcyBhcyB0aW1lIHNwZW50IHJlbmRlcmluZyBhcyB0aGUgbW9yZSBjb21tb24gY2FzZS4K
KyAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAg
cmV0dXJuIG1lYXN1cmVMaWZlQ3ljbGVQZXJmKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgcmV0dXJu
IENvbXBvbmVudChwdWJsaWNQcm9wcywgcHVibGljQ29udGV4dCwgdXBkYXRlUXVldWUpOworICAg
ICAgfSwgdGhpcy5fZGVidWdJRCwgJ3JlbmRlcicpOworICAgIH0gZWxzZSB7CisgICAgICByZXR1
cm4gQ29tcG9uZW50KHB1YmxpY1Byb3BzLCBwdWJsaWNDb250ZXh0LCB1cGRhdGVRdWV1ZSk7Cisg
ICAgfQorICB9LAorCisgIHBlcmZvcm1Jbml0aWFsTW91bnRXaXRoRXJyb3JIYW5kbGluZzogZnVu
Y3Rpb24gKHJlbmRlcmVkRWxlbWVudCwgaG9zdFBhcmVudCwgaG9zdENvbnRhaW5lckluZm8sIHRy
YW5zYWN0aW9uLCBjb250ZXh0KSB7CisgICAgdmFyIG1hcmt1cDsKKyAgICB2YXIgY2hlY2twb2lu
dCA9IHRyYW5zYWN0aW9uLmNoZWNrcG9pbnQoKTsKKyAgICB0cnkgeworICAgICAgbWFya3VwID0g
dGhpcy5wZXJmb3JtSW5pdGlhbE1vdW50KHJlbmRlcmVkRWxlbWVudCwgaG9zdFBhcmVudCwgaG9z
dENvbnRhaW5lckluZm8sIHRyYW5zYWN0aW9uLCBjb250ZXh0KTsKKyAgICB9IGNhdGNoIChlKSB7
CisgICAgICAvLyBSb2xsIGJhY2sgdG8gY2hlY2twb2ludCwgaGFuZGxlIGVycm9yICh3aGljaCBt
YXkgYWRkIGl0ZW1zIHRvIHRoZSB0cmFuc2FjdGlvbiksIGFuZCB0YWtlIGEgbmV3IGNoZWNrcG9p
bnQKKyAgICAgIHRyYW5zYWN0aW9uLnJvbGxiYWNrKGNoZWNrcG9pbnQpOworICAgICAgdGhpcy5f
aW5zdGFuY2UudW5zdGFibGVfaGFuZGxlRXJyb3IoZSk7CisgICAgICBpZiAodGhpcy5fcGVuZGlu
Z1N0YXRlUXVldWUpIHsKKyAgICAgICAgdGhpcy5faW5zdGFuY2Uuc3RhdGUgPSB0aGlzLl9wcm9j
ZXNzUGVuZGluZ1N0YXRlKHRoaXMuX2luc3RhbmNlLnByb3BzLCB0aGlzLl9pbnN0YW5jZS5jb250
ZXh0KTsKKyAgICAgIH0KKyAgICAgIGNoZWNrcG9pbnQgPSB0cmFuc2FjdGlvbi5jaGVja3BvaW50
KCk7CisKKyAgICAgIHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50LnVubW91bnRDb21wb25lbnQodHJ1
ZSk7CisgICAgICB0cmFuc2FjdGlvbi5yb2xsYmFjayhjaGVja3BvaW50KTsKKworICAgICAgLy8g
VHJ5IGFnYWluIC0gd2UndmUgaW5mb3JtZWQgdGhlIGNvbXBvbmVudCBhYm91dCB0aGUgZXJyb3Is
IHNvIHRoZXkgY2FuIHJlbmRlciBhbiBlcnJvciBtZXNzYWdlIHRoaXMgdGltZS4KKyAgICAgIC8v
IElmIHRoaXMgdGhyb3dzIGFnYWluLCB0aGUgZXJyb3Igd2lsbCBidWJibGUgdXAgKGFuZCBjYW4g
YmUgY2F1Z2h0IGJ5IGEgaGlnaGVyIGVycm9yIGJvdW5kYXJ5KS4KKyAgICAgIG1hcmt1cCA9IHRo
aXMucGVyZm9ybUluaXRpYWxNb3VudChyZW5kZXJlZEVsZW1lbnQsIGhvc3RQYXJlbnQsIGhvc3RD
b250YWluZXJJbmZvLCB0cmFuc2FjdGlvbiwgY29udGV4dCk7CisgICAgfQorICAgIHJldHVybiBt
YXJrdXA7CisgIH0sCisKKyAgcGVyZm9ybUluaXRpYWxNb3VudDogZnVuY3Rpb24gKHJlbmRlcmVk
RWxlbWVudCwgaG9zdFBhcmVudCwgaG9zdENvbnRhaW5lckluZm8sIHRyYW5zYWN0aW9uLCBjb250
ZXh0KSB7CisgICAgdmFyIGluc3QgPSB0aGlzLl9pbnN0YW5jZTsKKworICAgIHZhciBkZWJ1Z0lE
ID0gMDsKKyAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgewor
ICAgICAgZGVidWdJRCA9IHRoaXMuX2RlYnVnSUQ7CisgICAgfQorCisgICAgaWYgKGluc3QuY29t
cG9uZW50V2lsbE1vdW50KSB7CisgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJykgeworICAgICAgICBtZWFzdXJlTGlmZUN5Y2xlUGVyZihmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgcmV0dXJuIGluc3QuY29tcG9uZW50V2lsbE1vdW50KCk7CisgICAgICAgIH0s
IGRlYnVnSUQsICdjb21wb25lbnRXaWxsTW91bnQnKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IGluc3QuY29tcG9uZW50V2lsbE1vdW50KCk7CisgICAgICB9CisgICAgICAvLyBXaGVuIG1vdW50
aW5nLCBjYWxscyB0byBgc2V0U3RhdGVgIGJ5IGBjb21wb25lbnRXaWxsTW91bnRgIHdpbGwgc2V0
CisgICAgICAvLyBgdGhpcy5fcGVuZGluZ1N0YXRlUXVldWVgIHdpdGhvdXQgdHJpZ2dlcmluZyBh
IHJlLXJlbmRlci4KKyAgICAgIGlmICh0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZSkgeworICAgICAg
ICBpbnN0LnN0YXRlID0gdGhpcy5fcHJvY2Vzc1BlbmRpbmdTdGF0ZShpbnN0LnByb3BzLCBpbnN0
LmNvbnRleHQpOworICAgICAgfQorICAgIH0KKworICAgIC8vIElmIG5vdCBhIHN0YXRlbGVzcyBj
b21wb25lbnQsIHdlIG5vdyByZW5kZXIKKyAgICBpZiAocmVuZGVyZWRFbGVtZW50ID09PSB1bmRl
ZmluZWQpIHsKKyAgICAgIHJlbmRlcmVkRWxlbWVudCA9IHRoaXMuX3JlbmRlclZhbGlkYXRlZENv
bXBvbmVudCgpOworICAgIH0KKworICAgIHZhciBub2RlVHlwZSA9IFJlYWN0Tm9kZVR5cGVzLmdl
dFR5cGUocmVuZGVyZWRFbGVtZW50KTsKKyAgICB0aGlzLl9yZW5kZXJlZE5vZGVUeXBlID0gbm9k
ZVR5cGU7CisgICAgdmFyIGNoaWxkID0gdGhpcy5faW5zdGFudGlhdGVSZWFjdENvbXBvbmVudChy
ZW5kZXJlZEVsZW1lbnQsIG5vZGVUeXBlICE9PSBSZWFjdE5vZGVUeXBlcy5FTVBUWSAvKiBzaG91
bGRIYXZlRGVidWdJRCAqLworICAgICk7CisgICAgdGhpcy5fcmVuZGVyZWRDb21wb25lbnQgPSBj
aGlsZDsKKworICAgIHZhciBtYXJrdXAgPSBSZWFjdFJlY29uY2lsZXIubW91bnRDb21wb25lbnQo
Y2hpbGQsIHRyYW5zYWN0aW9uLCBob3N0UGFyZW50LCBob3N0Q29udGFpbmVySW5mbywgdGhpcy5f
cHJvY2Vzc0NoaWxkQ29udGV4dChjb250ZXh0KSwgZGVidWdJRCk7CisKKyAgICBpZiAocHJvY2Vz
cy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgaWYgKGRlYnVnSUQgIT09
IDApIHsKKyAgICAgICAgdmFyIGNoaWxkRGVidWdJRHMgPSBjaGlsZC5fZGVidWdJRCAhPT0gMCA/
IFtjaGlsZC5fZGVidWdJRF0gOiBbXTsKKyAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVi
dWdUb29sLm9uU2V0Q2hpbGRyZW4oZGVidWdJRCwgY2hpbGREZWJ1Z0lEcyk7CisgICAgICB9Cisg
ICAgfQorCisgICAgcmV0dXJuIG1hcmt1cDsKKyAgfSwKKworICBnZXRIb3N0Tm9kZTogZnVuY3Rp
b24gKCkgeworICAgIHJldHVybiBSZWFjdFJlY29uY2lsZXIuZ2V0SG9zdE5vZGUodGhpcy5fcmVu
ZGVyZWRDb21wb25lbnQpOworICB9LAorCisgIC8qKgorICAgKiBSZWxlYXNlcyBhbnkgcmVzb3Vy
Y2VzIGFsbG9jYXRlZCBieSBgbW91bnRDb21wb25lbnRgLgorICAgKgorICAgKiBAZmluYWwKKyAg
ICogQGludGVybmFsCisgICAqLworICB1bm1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAoc2FmZWx5
KSB7CisgICAgaWYgKCF0aGlzLl9yZW5kZXJlZENvbXBvbmVudCkgeworICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIHZhciBpbnN0ID0gdGhpcy5faW5zdGFuY2U7CisKKyAgICBpZiAoaW5zdC5j
b21wb25lbnRXaWxsVW5tb3VudCAmJiAhaW5zdC5fY2FsbGVkQ29tcG9uZW50V2lsbFVubW91bnQp
IHsKKyAgICAgIGluc3QuX2NhbGxlZENvbXBvbmVudFdpbGxVbm1vdW50ID0gdHJ1ZTsKKworICAg
ICAgaWYgKHNhZmVseSkgeworICAgICAgICB2YXIgbmFtZSA9IHRoaXMuZ2V0TmFtZSgpICsgJy5j
b21wb25lbnRXaWxsVW5tb3VudCgpJzsKKyAgICAgICAgUmVhY3RFcnJvclV0aWxzLmludm9rZUd1
YXJkZWRDYWxsYmFjayhuYW1lLCBpbnN0LmNvbXBvbmVudFdpbGxVbm1vdW50LmJpbmQoaW5zdCkp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicpIHsKKyAgICAgICAgICBtZWFzdXJlTGlmZUN5Y2xlUGVyZihmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICByZXR1cm4gaW5zdC5jb21wb25lbnRXaWxsVW5tb3VudCgpOworICAg
ICAgICAgIH0sIHRoaXMuX2RlYnVnSUQsICdjb21wb25lbnRXaWxsVW5tb3VudCcpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgIGluc3QuY29tcG9uZW50V2lsbFVubW91bnQoKTsKKyAgICAg
ICAgfQorICAgICAgfQorICAgIH0KKworICAgIGlmICh0aGlzLl9yZW5kZXJlZENvbXBvbmVudCkg
eworICAgICAgUmVhY3RSZWNvbmNpbGVyLnVubW91bnRDb21wb25lbnQodGhpcy5fcmVuZGVyZWRD
b21wb25lbnQsIHNhZmVseSk7CisgICAgICB0aGlzLl9yZW5kZXJlZE5vZGVUeXBlID0gbnVsbDsK
KyAgICAgIHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50ID0gbnVsbDsKKyAgICAgIHRoaXMuX2luc3Rh
bmNlID0gbnVsbDsKKyAgICB9CisKKyAgICAvLyBSZXNldCBwZW5kaW5nIGZpZWxkcworICAgIC8v
IEV2ZW4gaWYgdGhpcyBjb21wb25lbnQgaXMgc2NoZWR1bGVkIGZvciBhbm90aGVyIHVwZGF0ZSBp
biBSZWFjdFVwZGF0ZXMsCisgICAgLy8gaXQgd291bGQgc3RpbGwgYmUgaWdub3JlZCBiZWNhdXNl
IHRoZXNlIGZpZWxkcyBhcmUgcmVzZXQuCisgICAgdGhpcy5fcGVuZGluZ1N0YXRlUXVldWUgPSBu
dWxsOworICAgIHRoaXMuX3BlbmRpbmdSZXBsYWNlU3RhdGUgPSBmYWxzZTsKKyAgICB0aGlzLl9w
ZW5kaW5nRm9yY2VVcGRhdGUgPSBmYWxzZTsKKyAgICB0aGlzLl9wZW5kaW5nQ2FsbGJhY2tzID0g
bnVsbDsKKyAgICB0aGlzLl9wZW5kaW5nRWxlbWVudCA9IG51bGw7CisKKyAgICAvLyBUaGVzZSBm
aWVsZHMgZG8gbm90IHJlYWxseSBuZWVkIHRvIGJlIHJlc2V0IHNpbmNlIHRoaXMgb2JqZWN0IGlz
IG5vCisgICAgLy8gbG9uZ2VyIGFjY2Vzc2libGUuCisgICAgdGhpcy5fY29udGV4dCA9IG51bGw7
CisgICAgdGhpcy5fcm9vdE5vZGVJRCA9IDA7CisgICAgdGhpcy5fdG9wTGV2ZWxXcmFwcGVyID0g
bnVsbDsKKworICAgIC8vIERlbGV0ZSB0aGUgcmVmZXJlbmNlIGZyb20gdGhlIGluc3RhbmNlIHRv
IHRoaXMgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24KKyAgICAvLyB3aGljaCBhbGxvdyB0aGUgaW50
ZXJuYWxzIHRvIGJlIHByb3Blcmx5IGNsZWFuZWQgdXAgZXZlbiBpZiB0aGUgdXNlcgorICAgIC8v
IGxlYWtzIGEgcmVmZXJlbmNlIHRvIHRoZSBwdWJsaWMgaW5zdGFuY2UuCisgICAgUmVhY3RJbnN0
YW5jZU1hcC5yZW1vdmUoaW5zdCk7CisKKyAgICAvLyBTb21lIGV4aXN0aW5nIGNvbXBvbmVudHMg
cmVseSBvbiBpbnN0LnByb3BzIGV2ZW4gYWZ0ZXIgdGhleSd2ZSBiZWVuCisgICAgLy8gZGVzdHJv
eWVkIChpbiBldmVudCBoYW5kbGVycykuCisgICAgLy8gVE9ETzogaW5zdC5wcm9wcyA9IG51bGw7
CisgICAgLy8gVE9ETzogaW5zdC5zdGF0ZSA9IG51bGw7CisgICAgLy8gVE9ETzogaW5zdC5jb250
ZXh0ID0gbnVsbDsKKyAgfSwKKworICAvKioKKyAgICogRmlsdGVycyB0aGUgY29udGV4dCBvYmpl
Y3QgdG8gb25seSBjb250YWluIGtleXMgc3BlY2lmaWVkIGluCisgICAqIGBjb250ZXh0VHlwZXNg
CisgICAqCisgICAqIEBwYXJhbSB7b2JqZWN0fSBjb250ZXh0CisgICAqIEByZXR1cm4gez9vYmpl
Y3R9CisgICAqIEBwcml2YXRlCisgICAqLworICBfbWFza0NvbnRleHQ6IGZ1bmN0aW9uIChjb250
ZXh0KSB7CisgICAgdmFyIENvbXBvbmVudCA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGU7Cisg
ICAgdmFyIGNvbnRleHRUeXBlcyA9IENvbXBvbmVudC5jb250ZXh0VHlwZXM7CisgICAgaWYgKCFj
b250ZXh0VHlwZXMpIHsKKyAgICAgIHJldHVybiBlbXB0eU9iamVjdDsKKyAgICB9CisgICAgdmFy
IG1hc2tlZENvbnRleHQgPSB7fTsKKyAgICBmb3IgKHZhciBjb250ZXh0TmFtZSBpbiBjb250ZXh0
VHlwZXMpIHsKKyAgICAgIG1hc2tlZENvbnRleHRbY29udGV4dE5hbWVdID0gY29udGV4dFtjb250
ZXh0TmFtZV07CisgICAgfQorICAgIHJldHVybiBtYXNrZWRDb250ZXh0OworICB9LAorCisgIC8q
KgorICAgKiBGaWx0ZXJzIHRoZSBjb250ZXh0IG9iamVjdCB0byBvbmx5IGNvbnRhaW4ga2V5cyBz
cGVjaWZpZWQgaW4KKyAgICogYGNvbnRleHRUeXBlc2AsIGFuZCBhc3NlcnRzIHRoYXQgdGhleSBh
cmUgdmFsaWQuCisgICAqCisgICAqIEBwYXJhbSB7b2JqZWN0fSBjb250ZXh0CisgICAqIEByZXR1
cm4gez9vYmplY3R9CisgICAqIEBwcml2YXRlCisgICAqLworICBfcHJvY2Vzc0NvbnRleHQ6IGZ1
bmN0aW9uIChjb250ZXh0KSB7CisgICAgdmFyIG1hc2tlZENvbnRleHQgPSB0aGlzLl9tYXNrQ29u
dGV4dChjb250ZXh0KTsKKyAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJykgeworICAgICAgdmFyIENvbXBvbmVudCA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGU7
CisgICAgICBpZiAoQ29tcG9uZW50LmNvbnRleHRUeXBlcykgeworICAgICAgICB0aGlzLl9jaGVj
a0NvbnRleHRUeXBlcyhDb21wb25lbnQuY29udGV4dFR5cGVzLCBtYXNrZWRDb250ZXh0LCAnY29u
dGV4dCcpOworICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gbWFza2VkQ29udGV4dDsKKyAgfSwK
KworICAvKioKKyAgICogQHBhcmFtIHtvYmplY3R9IGN1cnJlbnRDb250ZXh0CisgICAqIEByZXR1
cm4ge29iamVjdH0KKyAgICogQHByaXZhdGUKKyAgICovCisgIF9wcm9jZXNzQ2hpbGRDb250ZXh0
OiBmdW5jdGlvbiAoY3VycmVudENvbnRleHQpIHsKKyAgICB2YXIgQ29tcG9uZW50ID0gdGhpcy5f
Y3VycmVudEVsZW1lbnQudHlwZTsKKyAgICB2YXIgaW5zdCA9IHRoaXMuX2luc3RhbmNlOworICAg
IHZhciBjaGlsZENvbnRleHQ7CisKKyAgICBpZiAoaW5zdC5nZXRDaGlsZENvbnRleHQpIHsKKyAg
ICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAg
IFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkJlZ2luUHJvY2Vzc2luZ0NoaWxkQ29u
dGV4dCgpOworICAgICAgICB0cnkgeworICAgICAgICAgIGNoaWxkQ29udGV4dCA9IGluc3QuZ2V0
Q2hpbGRDb250ZXh0KCk7CisgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgUmVhY3RJbnN0
cnVtZW50YXRpb24uZGVidWdUb29sLm9uRW5kUHJvY2Vzc2luZ0NoaWxkQ29udGV4dCgpOworICAg
ICAgICB9CisgICAgICB9IGVsc2UgeworICAgICAgICBjaGlsZENvbnRleHQgPSBpbnN0LmdldENo
aWxkQ29udGV4dCgpOworICAgICAgfQorICAgIH0KKworICAgIGlmIChjaGlsZENvbnRleHQpIHsK
KyAgICAgICEodHlwZW9mIENvbXBvbmVudC5jaGlsZENvbnRleHRUeXBlcyA9PT0gJ29iamVjdCcp
ID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxz
ZSwgJyVzLmdldENoaWxkQ29udGV4dCgpOiBjaGlsZENvbnRleHRUeXBlcyBtdXN0IGJlIGRlZmlu
ZWQgaW4gb3JkZXIgdG8gdXNlIGdldENoaWxkQ29udGV4dCgpLicsIHRoaXMuZ2V0TmFtZSgpIHx8
ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDogX3Byb2RJbnZhcmlhbnQoJzEwNycsIHRoaXMu
Z2V0TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDogdm9pZCAwOworICAgICAg
aWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICAgdGhp
cy5fY2hlY2tDb250ZXh0VHlwZXMoQ29tcG9uZW50LmNoaWxkQ29udGV4dFR5cGVzLCBjaGlsZENv
bnRleHQsICdjaGlsZENvbnRleHQnKTsKKyAgICAgIH0KKyAgICAgIGZvciAodmFyIG5hbWUgaW4g
Y2hpbGRDb250ZXh0KSB7CisgICAgICAgICEobmFtZSBpbiBDb21wb25lbnQuY2hpbGRDb250ZXh0
VHlwZXMpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFu
dChmYWxzZSwgJyVzLmdldENoaWxkQ29udGV4dCgpOiBrZXkgIiVzIiBpcyBub3QgZGVmaW5lZCBp
biBjaGlsZENvbnRleHRUeXBlcy4nLCB0aGlzLmdldE5hbWUoKSB8fCAnUmVhY3RDb21wb3NpdGVD
b21wb25lbnQnLCBuYW1lKSA6IF9wcm9kSW52YXJpYW50KCcxMDgnLCB0aGlzLmdldE5hbWUoKSB8
fCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQnLCBuYW1lKSA6IHZvaWQgMDsKKyAgICAgIH0KKyAg
ICAgIHJldHVybiBfYXNzaWduKHt9LCBjdXJyZW50Q29udGV4dCwgY2hpbGRDb250ZXh0KTsKKyAg
ICB9CisgICAgcmV0dXJuIGN1cnJlbnRDb250ZXh0OworICB9LAorCisgIC8qKgorICAgKiBBc3Nl
cnQgdGhhdCB0aGUgY29udGV4dCB0eXBlcyBhcmUgdmFsaWQKKyAgICoKKyAgICogQHBhcmFtIHtv
YmplY3R9IHR5cGVTcGVjcyBNYXAgb2YgY29udGV4dCBmaWVsZCB0byBhIFJlYWN0UHJvcFR5cGUK
KyAgICogQHBhcmFtIHtvYmplY3R9IHZhbHVlcyBSdW50aW1lIHZhbHVlcyB0aGF0IG5lZWQgdG8g
YmUgdHlwZS1jaGVja2VkCisgICAqIEBwYXJhbSB7c3RyaW5nfSBsb2NhdGlvbiBlLmcuICJwcm9w
IiwgImNvbnRleHQiLCAiY2hpbGQgY29udGV4dCIKKyAgICogQHByaXZhdGUKKyAgICovCisgIF9j
aGVja0NvbnRleHRUeXBlczogZnVuY3Rpb24gKHR5cGVTcGVjcywgdmFsdWVzLCBsb2NhdGlvbikg
eworICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAg
ICBjaGVja1JlYWN0VHlwZVNwZWModHlwZVNwZWNzLCB2YWx1ZXMsIGxvY2F0aW9uLCB0aGlzLmdl
dE5hbWUoKSwgbnVsbCwgdGhpcy5fZGVidWdJRCk7CisgICAgfQorICB9LAorCisgIHJlY2VpdmVD
b21wb25lbnQ6IGZ1bmN0aW9uIChuZXh0RWxlbWVudCwgdHJhbnNhY3Rpb24sIG5leHRDb250ZXh0
KSB7CisgICAgdmFyIHByZXZFbGVtZW50ID0gdGhpcy5fY3VycmVudEVsZW1lbnQ7CisgICAgdmFy
IHByZXZDb250ZXh0ID0gdGhpcy5fY29udGV4dDsKKworICAgIHRoaXMuX3BlbmRpbmdFbGVtZW50
ID0gbnVsbDsKKworICAgIHRoaXMudXBkYXRlQ29tcG9uZW50KHRyYW5zYWN0aW9uLCBwcmV2RWxl
bWVudCwgbmV4dEVsZW1lbnQsIHByZXZDb250ZXh0LCBuZXh0Q29udGV4dCk7CisgIH0sCisKKyAg
LyoqCisgICAqIElmIGFueSBvZiBgX3BlbmRpbmdFbGVtZW50YCwgYF9wZW5kaW5nU3RhdGVRdWV1
ZWAsIG9yIGBfcGVuZGluZ0ZvcmNlVXBkYXRlYAorICAgKiBpcyBzZXQsIHVwZGF0ZSB0aGUgY29t
cG9uZW50LgorICAgKgorICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRy
YW5zYWN0aW9uCisgICAqIEBpbnRlcm5hbAorICAgKi8KKyAgcGVyZm9ybVVwZGF0ZUlmTmVjZXNz
YXJ5OiBmdW5jdGlvbiAodHJhbnNhY3Rpb24pIHsKKyAgICBpZiAodGhpcy5fcGVuZGluZ0VsZW1l
bnQgIT0gbnVsbCkgeworICAgICAgUmVhY3RSZWNvbmNpbGVyLnJlY2VpdmVDb21wb25lbnQodGhp
cywgdGhpcy5fcGVuZGluZ0VsZW1lbnQsIHRyYW5zYWN0aW9uLCB0aGlzLl9jb250ZXh0KTsKKyAg
ICB9IGVsc2UgaWYgKHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlICE9PSBudWxsIHx8IHRoaXMuX3Bl
bmRpbmdGb3JjZVVwZGF0ZSkgeworICAgICAgdGhpcy51cGRhdGVDb21wb25lbnQodHJhbnNhY3Rp
b24sIHRoaXMuX2N1cnJlbnRFbGVtZW50LCB0aGlzLl9jdXJyZW50RWxlbWVudCwgdGhpcy5fY29u
dGV4dCwgdGhpcy5fY29udGV4dCk7CisgICAgfSBlbHNlIHsKKyAgICAgIHRoaXMuX3VwZGF0ZUJh
dGNoTnVtYmVyID0gbnVsbDsKKyAgICB9CisgIH0sCisKKyAgLyoqCisgICAqIFBlcmZvcm0gYW4g
dXBkYXRlIHRvIGEgbW91bnRlZCBjb21wb25lbnQuIFRoZSBjb21wb25lbnRXaWxsUmVjZWl2ZVBy
b3BzIGFuZAorICAgKiBzaG91bGRDb21wb25lbnRVcGRhdGUgbWV0aG9kcyBhcmUgY2FsbGVkLCB0
aGVuIChhc3N1bWluZyB0aGUgdXBkYXRlIGlzbid0CisgICAqIHNraXBwZWQpIHRoZSByZW1haW5p
bmcgdXBkYXRlIGxpZmVjeWNsZSBtZXRob2RzIGFyZSBjYWxsZWQgYW5kIHRoZSBET00KKyAgICog
cmVwcmVzZW50YXRpb24gaXMgdXBkYXRlZC4KKyAgICoKKyAgICogQnkgZGVmYXVsdCwgdGhpcyBp
bXBsZW1lbnRzIFJlYWN0J3MgcmVuZGVyaW5nIGFuZCByZWNvbmNpbGlhdGlvbiBhbGdvcml0aG0u
CisgICAqIFNvcGhpc3RpY2F0ZWQgY2xpZW50cyBtYXkgd2lzaCB0byBvdmVycmlkZSB0aGlzLgor
ICAgKgorICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9u
CisgICAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBwcmV2UGFyZW50RWxlbWVudAorICAgKiBAcGFy
YW0ge1JlYWN0RWxlbWVudH0gbmV4dFBhcmVudEVsZW1lbnQKKyAgICogQGludGVybmFsCisgICAq
IEBvdmVycmlkYWJsZQorICAgKi8KKyAgdXBkYXRlQ29tcG9uZW50OiBmdW5jdGlvbiAodHJhbnNh
Y3Rpb24sIHByZXZQYXJlbnRFbGVtZW50LCBuZXh0UGFyZW50RWxlbWVudCwgcHJldlVubWFza2Vk
Q29udGV4dCwgbmV4dFVubWFza2VkQ29udGV4dCkgeworICAgIHZhciBpbnN0ID0gdGhpcy5faW5z
dGFuY2U7CisgICAgIShpbnN0ICE9IG51bGwpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0F0dGVtcHRlZCB0byB1cGRhdGUgY29tcG9u
ZW50IGAlc2AgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIHVubW91bnRlZCAob3IgZmFpbGVkIHRvIG1v
dW50KS4nLCB0aGlzLmdldE5hbWUoKSB8fCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQnKSA6IF9w
cm9kSW52YXJpYW50KCcxMzYnLCB0aGlzLmdldE5hbWUoKSB8fCAnUmVhY3RDb21wb3NpdGVDb21w
b25lbnQnKSA6IHZvaWQgMDsKKworICAgIHZhciB3aWxsUmVjZWl2ZSA9IGZhbHNlOworICAgIHZh
ciBuZXh0Q29udGV4dDsKKworICAgIC8vIERldGVybWluZSBpZiB0aGUgY29udGV4dCBoYXMgY2hh
bmdlZCBvciBub3QKKyAgICBpZiAodGhpcy5fY29udGV4dCA9PT0gbmV4dFVubWFza2VkQ29udGV4
dCkgeworICAgICAgbmV4dENvbnRleHQgPSBpbnN0LmNvbnRleHQ7CisgICAgfSBlbHNlIHsKKyAg
ICAgIG5leHRDb250ZXh0ID0gdGhpcy5fcHJvY2Vzc0NvbnRleHQobmV4dFVubWFza2VkQ29udGV4
dCk7CisgICAgICB3aWxsUmVjZWl2ZSA9IHRydWU7CisgICAgfQorCisgICAgdmFyIHByZXZQcm9w
cyA9IHByZXZQYXJlbnRFbGVtZW50LnByb3BzOworICAgIHZhciBuZXh0UHJvcHMgPSBuZXh0UGFy
ZW50RWxlbWVudC5wcm9wczsKKworICAgIC8vIE5vdCBhIHNpbXBsZSBzdGF0ZSB1cGRhdGUgYnV0
IGEgcHJvcHMgdXBkYXRlCisgICAgaWYgKHByZXZQYXJlbnRFbGVtZW50ICE9PSBuZXh0UGFyZW50
RWxlbWVudCkgeworICAgICAgd2lsbFJlY2VpdmUgPSB0cnVlOworICAgIH0KKworICAgIC8vIEFu
IHVwZGF0ZSBoZXJlIHdpbGwgc2NoZWR1bGUgYW4gdXBkYXRlIGJ1dCBpbW1lZGlhdGVseSBzZXQK
KyAgICAvLyBfcGVuZGluZ1N0YXRlUXVldWUgd2hpY2ggd2lsbCBlbnN1cmUgdGhhdCBhbnkgc3Rh
dGUgdXBkYXRlcyBnZXRzCisgICAgLy8gaW1tZWRpYXRlbHkgcmVjb25jaWxlZCBpbnN0ZWFkIG9m
IHdhaXRpbmcgZm9yIHRoZSBuZXh0IGJhdGNoLgorICAgIGlmICh3aWxsUmVjZWl2ZSAmJiBpbnN0
LmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMpIHsKKyAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAgIG1lYXN1cmVMaWZlQ3ljbGVQZXJmKGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICByZXR1cm4gaW5zdC5jb21wb25lbnRXaWxsUmVjZWl2ZVBy
b3BzKG5leHRQcm9wcywgbmV4dENvbnRleHQpOworICAgICAgICB9LCB0aGlzLl9kZWJ1Z0lELCAn
Y29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcycpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgaW5z
dC5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKG5leHRQcm9wcywgbmV4dENvbnRleHQpOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBuZXh0U3RhdGUgPSB0aGlzLl9wcm9jZXNzUGVuZGluZ1N0
YXRlKG5leHRQcm9wcywgbmV4dENvbnRleHQpOworICAgIHZhciBzaG91bGRVcGRhdGUgPSB0cnVl
OworCisgICAgaWYgKCF0aGlzLl9wZW5kaW5nRm9yY2VVcGRhdGUpIHsKKyAgICAgIGlmIChpbnN0
LnNob3VsZENvbXBvbmVudFVwZGF0ZSkgeworICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgICAgIHNob3VsZFVwZGF0ZSA9IG1lYXN1cmVM
aWZlQ3ljbGVQZXJmKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHJldHVybiBpbnN0LnNob3Vs
ZENvbXBvbmVudFVwZGF0ZShuZXh0UHJvcHMsIG5leHRTdGF0ZSwgbmV4dENvbnRleHQpOworICAg
ICAgICAgIH0sIHRoaXMuX2RlYnVnSUQsICdzaG91bGRDb21wb25lbnRVcGRhdGUnKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICBzaG91bGRVcGRhdGUgPSBpbnN0LnNob3VsZENvbXBvbmVu
dFVwZGF0ZShuZXh0UHJvcHMsIG5leHRTdGF0ZSwgbmV4dENvbnRleHQpOworICAgICAgICB9Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBpZiAodGhpcy5fY29tcG9zaXRlVHlwZSA9PT0gQ29tcG9z
aXRlVHlwZXMuUHVyZUNsYXNzKSB7CisgICAgICAgICAgc2hvdWxkVXBkYXRlID0gIXNoYWxsb3dF
cXVhbChwcmV2UHJvcHMsIG5leHRQcm9wcykgfHwgIXNoYWxsb3dFcXVhbChpbnN0LnN0YXRlLCBu
ZXh0U3RhdGUpOworICAgICAgICB9CisgICAgICB9CisgICAgfQorCisgICAgaWYgKHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgIHByb2Nlc3MuZW52Lk5PREVf
RU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHNob3VsZFVwZGF0ZSAhPT0gdW5kZWZpbmVk
LCAnJXMuc2hvdWxkQ29tcG9uZW50VXBkYXRlKCk6IFJldHVybmVkIHVuZGVmaW5lZCBpbnN0ZWFk
IG9mIGEgJyArICdib29sZWFuIHZhbHVlLiBNYWtlIHN1cmUgdG8gcmV0dXJuIHRydWUgb3IgZmFs
c2UuJywgdGhpcy5nZXROYW1lKCkgfHwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50JykgOiB2b2lk
IDA7CisgICAgfQorCisgICAgdGhpcy5fdXBkYXRlQmF0Y2hOdW1iZXIgPSBudWxsOworICAgIGlm
IChzaG91bGRVcGRhdGUpIHsKKyAgICAgIHRoaXMuX3BlbmRpbmdGb3JjZVVwZGF0ZSA9IGZhbHNl
OworICAgICAgLy8gV2lsbCBzZXQgYHRoaXMucHJvcHNgLCBgdGhpcy5zdGF0ZWAgYW5kIGB0aGlz
LmNvbnRleHRgLgorICAgICAgdGhpcy5fcGVyZm9ybUNvbXBvbmVudFVwZGF0ZShuZXh0UGFyZW50
RWxlbWVudCwgbmV4dFByb3BzLCBuZXh0U3RhdGUsIG5leHRDb250ZXh0LCB0cmFuc2FjdGlvbiwg
bmV4dFVubWFza2VkQ29udGV4dCk7CisgICAgfSBlbHNlIHsKKyAgICAgIC8vIElmIGl0J3MgZGV0
ZXJtaW5lZCB0aGF0IGEgY29tcG9uZW50IHNob3VsZCBub3QgdXBkYXRlLCB3ZSBzdGlsbCB3YW50
CisgICAgICAvLyB0byBzZXQgcHJvcHMgYW5kIHN0YXRlIGJ1dCB3ZSBzaG9ydGN1dCB0aGUgcmVz
dCBvZiB0aGUgdXBkYXRlLgorICAgICAgdGhpcy5fY3VycmVudEVsZW1lbnQgPSBuZXh0UGFyZW50
RWxlbWVudDsKKyAgICAgIHRoaXMuX2NvbnRleHQgPSBuZXh0VW5tYXNrZWRDb250ZXh0OworICAg
ICAgaW5zdC5wcm9wcyA9IG5leHRQcm9wczsKKyAgICAgIGluc3Quc3RhdGUgPSBuZXh0U3RhdGU7
CisgICAgICBpbnN0LmNvbnRleHQgPSBuZXh0Q29udGV4dDsKKyAgICB9CisgIH0sCisKKyAgX3By
b2Nlc3NQZW5kaW5nU3RhdGU6IGZ1bmN0aW9uIChwcm9wcywgY29udGV4dCkgeworICAgIHZhciBp
bnN0ID0gdGhpcy5faW5zdGFuY2U7CisgICAgdmFyIHF1ZXVlID0gdGhpcy5fcGVuZGluZ1N0YXRl
UXVldWU7CisgICAgdmFyIHJlcGxhY2UgPSB0aGlzLl9wZW5kaW5nUmVwbGFjZVN0YXRlOworICAg
IHRoaXMuX3BlbmRpbmdSZXBsYWNlU3RhdGUgPSBmYWxzZTsKKyAgICB0aGlzLl9wZW5kaW5nU3Rh
dGVRdWV1ZSA9IG51bGw7CisKKyAgICBpZiAoIXF1ZXVlKSB7CisgICAgICByZXR1cm4gaW5zdC5z
dGF0ZTsKKyAgICB9CisKKyAgICBpZiAocmVwbGFjZSAmJiBxdWV1ZS5sZW5ndGggPT09IDEpIHsK
KyAgICAgIHJldHVybiBxdWV1ZVswXTsKKyAgICB9CisKKyAgICB2YXIgbmV4dFN0YXRlID0gX2Fz
c2lnbih7fSwgcmVwbGFjZSA/IHF1ZXVlWzBdIDogaW5zdC5zdGF0ZSk7CisgICAgZm9yICh2YXIg
aSA9IHJlcGxhY2UgPyAxIDogMDsgaSA8IHF1ZXVlLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
cGFydGlhbCA9IHF1ZXVlW2ldOworICAgICAgX2Fzc2lnbihuZXh0U3RhdGUsIHR5cGVvZiBwYXJ0
aWFsID09PSAnZnVuY3Rpb24nID8gcGFydGlhbC5jYWxsKGluc3QsIG5leHRTdGF0ZSwgcHJvcHMs
IGNvbnRleHQpIDogcGFydGlhbCk7CisgICAgfQorCisgICAgcmV0dXJuIG5leHRTdGF0ZTsKKyAg
fSwKKworICAvKioKKyAgICogTWVyZ2VzIG5ldyBwcm9wcyBhbmQgc3RhdGUsIG5vdGlmaWVzIGRl
bGVnYXRlIG1ldGhvZHMgb2YgdXBkYXRlIGFuZAorICAgKiBwZXJmb3JtcyB1cGRhdGUuCisgICAq
CisgICAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBuZXh0RWxlbWVudCBOZXh0IGVsZW1lbnQKKyAg
ICogQHBhcmFtIHtvYmplY3R9IG5leHRQcm9wcyBOZXh0IHB1YmxpYyBvYmplY3QgdG8gc2V0IGFz
IHByb3BlcnRpZXMuCisgICAqIEBwYXJhbSB7P29iamVjdH0gbmV4dFN0YXRlIE5leHQgb2JqZWN0
IHRvIHNldCBhcyBzdGF0ZS4KKyAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXh0Q29udGV4dCBOZXh0
IHB1YmxpYyBvYmplY3QgdG8gc2V0IGFzIGNvbnRleHQuCisgICAqIEBwYXJhbSB7UmVhY3RSZWNv
bmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb24KKyAgICogQHBhcmFtIHs/b2JqZWN0fSB1bm1h
c2tlZENvbnRleHQKKyAgICogQHByaXZhdGUKKyAgICovCisgIF9wZXJmb3JtQ29tcG9uZW50VXBk
YXRlOiBmdW5jdGlvbiAobmV4dEVsZW1lbnQsIG5leHRQcm9wcywgbmV4dFN0YXRlLCBuZXh0Q29u
dGV4dCwgdHJhbnNhY3Rpb24sIHVubWFza2VkQ29udGV4dCkgeworICAgIHZhciBfdGhpczIgPSB0
aGlzOworCisgICAgdmFyIGluc3QgPSB0aGlzLl9pbnN0YW5jZTsKKworICAgIHZhciBoYXNDb21w
b25lbnREaWRVcGRhdGUgPSBCb29sZWFuKGluc3QuY29tcG9uZW50RGlkVXBkYXRlKTsKKyAgICB2
YXIgcHJldlByb3BzOworICAgIHZhciBwcmV2U3RhdGU7CisgICAgdmFyIHByZXZDb250ZXh0Owor
ICAgIGlmIChoYXNDb21wb25lbnREaWRVcGRhdGUpIHsKKyAgICAgIHByZXZQcm9wcyA9IGluc3Qu
cHJvcHM7CisgICAgICBwcmV2U3RhdGUgPSBpbnN0LnN0YXRlOworICAgICAgcHJldkNvbnRleHQg
PSBpbnN0LmNvbnRleHQ7CisgICAgfQorCisgICAgaWYgKGluc3QuY29tcG9uZW50V2lsbFVwZGF0
ZSkgeworICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHsK
KyAgICAgICAgbWVhc3VyZUxpZmVDeWNsZVBlcmYoZnVuY3Rpb24gKCkgeworICAgICAgICAgIHJl
dHVybiBpbnN0LmNvbXBvbmVudFdpbGxVcGRhdGUobmV4dFByb3BzLCBuZXh0U3RhdGUsIG5leHRD
b250ZXh0KTsKKyAgICAgICAgfSwgdGhpcy5fZGVidWdJRCwgJ2NvbXBvbmVudFdpbGxVcGRhdGUn
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGluc3QuY29tcG9uZW50V2lsbFVwZGF0ZShuZXh0
UHJvcHMsIG5leHRTdGF0ZSwgbmV4dENvbnRleHQpOworICAgICAgfQorICAgIH0KKworICAgIHRo
aXMuX2N1cnJlbnRFbGVtZW50ID0gbmV4dEVsZW1lbnQ7CisgICAgdGhpcy5fY29udGV4dCA9IHVu
bWFza2VkQ29udGV4dDsKKyAgICBpbnN0LnByb3BzID0gbmV4dFByb3BzOworICAgIGluc3Quc3Rh
dGUgPSBuZXh0U3RhdGU7CisgICAgaW5zdC5jb250ZXh0ID0gbmV4dENvbnRleHQ7CisKKyAgICB0
aGlzLl91cGRhdGVSZW5kZXJlZENvbXBvbmVudCh0cmFuc2FjdGlvbiwgdW5tYXNrZWRDb250ZXh0
KTsKKworICAgIGlmIChoYXNDb21wb25lbnREaWRVcGRhdGUpIHsKKyAgICAgIGlmIChwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAgIHRyYW5zYWN0aW9uLmdl
dFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoZnVuY3Rpb24gKCkgeworICAgICAgICAgIG1lYXN1
cmVMaWZlQ3ljbGVQZXJmKGluc3QuY29tcG9uZW50RGlkVXBkYXRlLmJpbmQoaW5zdCwgcHJldlBy
b3BzLCBwcmV2U3RhdGUsIHByZXZDb250ZXh0KSwgX3RoaXMyLl9kZWJ1Z0lELCAnY29tcG9uZW50
RGlkVXBkYXRlJyk7CisgICAgICAgIH0pOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgdHJhbnNh
Y3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShpbnN0LmNvbXBvbmVudERpZFVwZGF0
ZS5iaW5kKGluc3QsIHByZXZQcm9wcywgcHJldlN0YXRlLCBwcmV2Q29udGV4dCksIGluc3QpOwor
ICAgICAgfQorICAgIH0KKyAgfSwKKworICAvKioKKyAgICogQ2FsbCB0aGUgY29tcG9uZW50J3Mg
YHJlbmRlcmAgbWV0aG9kIGFuZCB1cGRhdGUgdGhlIERPTSBhY2NvcmRpbmdseS4KKyAgICoKKyAg
ICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvbgorICAgKiBA
aW50ZXJuYWwKKyAgICovCisgIF91cGRhdGVSZW5kZXJlZENvbXBvbmVudDogZnVuY3Rpb24gKHRy
YW5zYWN0aW9uLCBjb250ZXh0KSB7CisgICAgdmFyIHByZXZDb21wb25lbnRJbnN0YW5jZSA9IHRo
aXMuX3JlbmRlcmVkQ29tcG9uZW50OworICAgIHZhciBwcmV2UmVuZGVyZWRFbGVtZW50ID0gcHJl
dkNvbXBvbmVudEluc3RhbmNlLl9jdXJyZW50RWxlbWVudDsKKyAgICB2YXIgbmV4dFJlbmRlcmVk
RWxlbWVudCA9IHRoaXMuX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudCgpOworCisgICAgdmFyIGRl
YnVnSUQgPSAwOworICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24n
KSB7CisgICAgICBkZWJ1Z0lEID0gdGhpcy5fZGVidWdJRDsKKyAgICB9CisKKyAgICBpZiAoc2hv
dWxkVXBkYXRlUmVhY3RDb21wb25lbnQocHJldlJlbmRlcmVkRWxlbWVudCwgbmV4dFJlbmRlcmVk
RWxlbWVudCkpIHsKKyAgICAgIFJlYWN0UmVjb25jaWxlci5yZWNlaXZlQ29tcG9uZW50KHByZXZD
b21wb25lbnRJbnN0YW5jZSwgbmV4dFJlbmRlcmVkRWxlbWVudCwgdHJhbnNhY3Rpb24sIHRoaXMu
X3Byb2Nlc3NDaGlsZENvbnRleHQoY29udGV4dCkpOworICAgIH0gZWxzZSB7CisgICAgICB2YXIg
b2xkSG9zdE5vZGUgPSBSZWFjdFJlY29uY2lsZXIuZ2V0SG9zdE5vZGUocHJldkNvbXBvbmVudElu
c3RhbmNlKTsKKyAgICAgIFJlYWN0UmVjb25jaWxlci51bm1vdW50Q29tcG9uZW50KHByZXZDb21w
b25lbnRJbnN0YW5jZSwgZmFsc2UpOworCisgICAgICB2YXIgbm9kZVR5cGUgPSBSZWFjdE5vZGVU
eXBlcy5nZXRUeXBlKG5leHRSZW5kZXJlZEVsZW1lbnQpOworICAgICAgdGhpcy5fcmVuZGVyZWRO
b2RlVHlwZSA9IG5vZGVUeXBlOworICAgICAgdmFyIGNoaWxkID0gdGhpcy5faW5zdGFudGlhdGVS
ZWFjdENvbXBvbmVudChuZXh0UmVuZGVyZWRFbGVtZW50LCBub2RlVHlwZSAhPT0gUmVhY3ROb2Rl
VHlwZXMuRU1QVFkgLyogc2hvdWxkSGF2ZURlYnVnSUQgKi8KKyAgICAgICk7CisgICAgICB0aGlz
Ll9yZW5kZXJlZENvbXBvbmVudCA9IGNoaWxkOworCisgICAgICB2YXIgbmV4dE1hcmt1cCA9IFJl
YWN0UmVjb25jaWxlci5tb3VudENvbXBvbmVudChjaGlsZCwgdHJhbnNhY3Rpb24sIHRoaXMuX2hv
c3RQYXJlbnQsIHRoaXMuX2hvc3RDb250YWluZXJJbmZvLCB0aGlzLl9wcm9jZXNzQ2hpbGRDb250
ZXh0KGNvbnRleHQpLCBkZWJ1Z0lEKTsKKworICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICAgaWYgKGRlYnVnSUQgIT09IDApIHsKKyAgICAg
ICAgICB2YXIgY2hpbGREZWJ1Z0lEcyA9IGNoaWxkLl9kZWJ1Z0lEICE9PSAwID8gW2NoaWxkLl9k
ZWJ1Z0lEXSA6IFtdOworICAgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5v
blNldENoaWxkcmVuKGRlYnVnSUQsIGNoaWxkRGVidWdJRHMpOworICAgICAgICB9CisgICAgICB9
CisKKyAgICAgIHRoaXMuX3JlcGxhY2VOb2RlV2l0aE1hcmt1cChvbGRIb3N0Tm9kZSwgbmV4dE1h
cmt1cCwgcHJldkNvbXBvbmVudEluc3RhbmNlKTsKKyAgICB9CisgIH0sCisKKyAgLyoqCisgICAq
IE92ZXJyaWRkZW4gaW4gc2hhbGxvdyByZW5kZXJpbmcuCisgICAqCisgICAqIEBwcm90ZWN0ZWQK
KyAgICovCisgIF9yZXBsYWNlTm9kZVdpdGhNYXJrdXA6IGZ1bmN0aW9uIChvbGRIb3N0Tm9kZSwg
bmV4dE1hcmt1cCwgcHJldkluc3RhbmNlKSB7CisgICAgUmVhY3RDb21wb25lbnRFbnZpcm9ubWVu
dC5yZXBsYWNlTm9kZVdpdGhNYXJrdXAob2xkSG9zdE5vZGUsIG5leHRNYXJrdXAsIHByZXZJbnN0
YW5jZSk7CisgIH0sCisKKyAgLyoqCisgICAqIEBwcm90ZWN0ZWQKKyAgICovCisgIF9yZW5kZXJW
YWxpZGF0ZWRDb21wb25lbnRXaXRob3V0T3duZXJPckNvbnRleHQ6IGZ1bmN0aW9uICgpIHsKKyAg
ICB2YXIgaW5zdCA9IHRoaXMuX2luc3RhbmNlOworICAgIHZhciByZW5kZXJlZEVsZW1lbnQ7CisK
KyAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAg
cmVuZGVyZWRFbGVtZW50ID0gbWVhc3VyZUxpZmVDeWNsZVBlcmYoZnVuY3Rpb24gKCkgeworICAg
ICAgICByZXR1cm4gaW5zdC5yZW5kZXIoKTsKKyAgICAgIH0sIHRoaXMuX2RlYnVnSUQsICdyZW5k
ZXInKTsKKyAgICB9IGVsc2UgeworICAgICAgcmVuZGVyZWRFbGVtZW50ID0gaW5zdC5yZW5kZXIo
KTsKKyAgICB9CisKKyAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
JykgeworICAgICAgLy8gV2UgYWxsb3cgYXV0by1tb2NrcyB0byBwcm9jZWVkIGFzIGlmIHRoZXkn
cmUgcmV0dXJuaW5nIG51bGwuCisgICAgICBpZiAocmVuZGVyZWRFbGVtZW50ID09PSB1bmRlZmlu
ZWQgJiYgaW5zdC5yZW5kZXIuX2lzTW9ja0Z1bmN0aW9uKSB7CisgICAgICAgIC8vIFRoaXMgaXMg
cHJvYmFibHkgYmFkIHByYWN0aWNlLiBDb25zaWRlciB3YXJuaW5nIGhlcmUgYW5kCisgICAgICAg
IC8vIGRlcHJlY2F0aW5nIHRoaXMgY29udmVuaWVuY2UuCisgICAgICAgIHJlbmRlcmVkRWxlbWVu
dCA9IG51bGw7CisgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHJlbmRlcmVkRWxlbWVudDsK
KyAgfSwKKworICAvKioKKyAgICogQHByaXZhdGUKKyAgICovCisgIF9yZW5kZXJWYWxpZGF0ZWRD
b21wb25lbnQ6IGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgcmVuZGVyZWRFbGVtZW50OworICAgIGlm
IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nIHx8IHRoaXMuX2NvbXBvc2l0
ZVR5cGUgIT09IENvbXBvc2l0ZVR5cGVzLlN0YXRlbGVzc0Z1bmN0aW9uYWwpIHsKKyAgICAgIFJl
YWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPSB0aGlzOworICAgICAgdHJ5IHsKKyAgICAgICAgcmVu
ZGVyZWRFbGVtZW50ID0gdGhpcy5fcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50V2l0aG91dE93bmVy
T3JDb250ZXh0KCk7CisgICAgICB9IGZpbmFsbHkgeworICAgICAgICBSZWFjdEN1cnJlbnRPd25l
ci5jdXJyZW50ID0gbnVsbDsKKyAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgcmVuZGVyZWRF
bGVtZW50ID0gdGhpcy5fcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50V2l0aG91dE93bmVyT3JDb250
ZXh0KCk7CisgICAgfQorICAgICEoCisgICAgLy8gVE9ETzogQW4gYGlzVmFsaWROb2RlYCBmdW5j
dGlvbiB3b3VsZCBwcm9iYWJseSBiZSBtb3JlIGFwcHJvcHJpYXRlCisgICAgcmVuZGVyZWRFbGVt
ZW50ID09PSBudWxsIHx8IHJlbmRlcmVkRWxlbWVudCA9PT0gZmFsc2UgfHwgUmVhY3QuaXNWYWxp
ZEVsZW1lbnQocmVuZGVyZWRFbGVtZW50KSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3By
b2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnJXMucmVuZGVyKCk6IEEgdmFsaWQgUmVhY3Qg
ZWxlbWVudCAob3IgbnVsbCkgbXVzdCBiZSByZXR1cm5lZC4gWW91IG1heSBoYXZlIHJldHVybmVk
IHVuZGVmaW5lZCwgYW4gYXJyYXkgb3Igc29tZSBvdGhlciBpbnZhbGlkIG9iamVjdC4nLCB0aGlz
LmdldE5hbWUoKSB8fCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQnKSA6IF9wcm9kSW52YXJpYW50
KCcxMDknLCB0aGlzLmdldE5hbWUoKSB8fCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQnKSA6IHZv
aWQgMDsKKworICAgIHJldHVybiByZW5kZXJlZEVsZW1lbnQ7CisgIH0sCisKKyAgLyoqCisgICAq
IExhemlseSBhbGxvY2F0ZXMgdGhlIHJlZnMgb2JqZWN0IGFuZCBzdG9yZXMgYGNvbXBvbmVudGAg
YXMgYHJlZmAuCisgICAqCisgICAqIEBwYXJhbSB7c3RyaW5nfSByZWYgUmVmZXJlbmNlIG5hbWUu
CisgICAqIEBwYXJhbSB7Y29tcG9uZW50fSBjb21wb25lbnQgQ29tcG9uZW50IHRvIHN0b3JlIGFz
IGByZWZgLgorICAgKiBAZmluYWwKKyAgICogQHByaXZhdGUKKyAgICovCisgIGF0dGFjaFJlZjog
ZnVuY3Rpb24gKHJlZiwgY29tcG9uZW50KSB7CisgICAgdmFyIGluc3QgPSB0aGlzLmdldFB1Ymxp
Y0luc3RhbmNlKCk7CisgICAgIShpbnN0ICE9IG51bGwpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1N0YXRlbGVzcyBmdW5jdGlvbiBj
b21wb25lbnRzIGNhbm5vdCBoYXZlIHJlZnMuJykgOiBfcHJvZEludmFyaWFudCgnMTEwJykgOiB2
b2lkIDA7CisgICAgdmFyIHB1YmxpY0NvbXBvbmVudEluc3RhbmNlID0gY29tcG9uZW50LmdldFB1
YmxpY0luc3RhbmNlKCk7CisgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVj
dGlvbicpIHsKKyAgICAgIHZhciBjb21wb25lbnROYW1lID0gY29tcG9uZW50ICYmIGNvbXBvbmVu
dC5nZXROYW1lID8gY29tcG9uZW50LmdldE5hbWUoKSA6ICdhIGNvbXBvbmVudCc7CisgICAgICBw
cm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhwdWJsaWNDb21w
b25lbnRJbnN0YW5jZSAhPSBudWxsIHx8IGNvbXBvbmVudC5fY29tcG9zaXRlVHlwZSAhPT0gQ29t
cG9zaXRlVHlwZXMuU3RhdGVsZXNzRnVuY3Rpb25hbCwgJ1N0YXRlbGVzcyBmdW5jdGlvbiBjb21w
b25lbnRzIGNhbm5vdCBiZSBnaXZlbiByZWZzICcgKyAnKFNlZSByZWYgIiVzIiBpbiAlcyBjcmVh
dGVkIGJ5ICVzKS4gJyArICdBdHRlbXB0cyB0byBhY2Nlc3MgdGhpcyByZWYgd2lsbCBmYWlsLics
IHJlZiwgY29tcG9uZW50TmFtZSwgdGhpcy5nZXROYW1lKCkpIDogdm9pZCAwOworICAgIH0KKyAg
ICB2YXIgcmVmcyA9IGluc3QucmVmcyA9PT0gZW1wdHlPYmplY3QgPyBpbnN0LnJlZnMgPSB7fSA6
IGluc3QucmVmczsKKyAgICByZWZzW3JlZl0gPSBwdWJsaWNDb21wb25lbnRJbnN0YW5jZTsKKyAg
fSwKKworICAvKioKKyAgICogRGV0YWNoZXMgYSByZWZlcmVuY2UgbmFtZS4KKyAgICoKKyAgICog
QHBhcmFtIHtzdHJpbmd9IHJlZiBOYW1lIHRvIGRlcmVmZXJlbmNlLgorICAgKiBAZmluYWwKKyAg
ICogQHByaXZhdGUKKyAgICovCisgIGRldGFjaFJlZjogZnVuY3Rpb24gKHJlZikgeworICAgIHZh
ciByZWZzID0gdGhpcy5nZXRQdWJsaWNJbnN0YW5jZSgpLnJlZnM7CisgICAgZGVsZXRlIHJlZnNb
cmVmXTsKKyAgfSwKKworICAvKioKKyAgICogR2V0IGEgdGV4dCBkZXNjcmlwdGlvbiBvZiB0aGUg
Y29tcG9uZW50IHRoYXQgY2FuIGJlIHVzZWQgdG8gaWRlbnRpZnkgaXQKKyAgICogaW4gZXJyb3Ig
bWVzc2FnZXMuCisgICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIG5hbWUgb3IgbnVsbC4KKyAgICog
QGludGVybmFsCisgICAqLworICBnZXROYW1lOiBmdW5jdGlvbiAoKSB7CisgICAgdmFyIHR5cGUg
PSB0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlOworICAgIHZhciBjb25zdHJ1Y3RvciA9IHRoaXMu
X2luc3RhbmNlICYmIHRoaXMuX2luc3RhbmNlLmNvbnN0cnVjdG9yOworICAgIHJldHVybiB0eXBl
LmRpc3BsYXlOYW1lIHx8IGNvbnN0cnVjdG9yICYmIGNvbnN0cnVjdG9yLmRpc3BsYXlOYW1lIHx8
IHR5cGUubmFtZSB8fCBjb25zdHJ1Y3RvciAmJiBjb25zdHJ1Y3Rvci5uYW1lIHx8IG51bGw7Cisg
IH0sCisKKyAgLyoqCisgICAqIEdldCB0aGUgcHVibGljbHkgYWNjZXNzaWJsZSByZXByZXNlbnRh
dGlvbiBvZiB0aGlzIGNvbXBvbmVudCAtIGkuZS4gd2hhdAorICAgKiBpcyBleHBvc2VkIGJ5IHJl
ZnMgYW5kIHJldHVybmVkIGJ5IHJlbmRlci4gQ2FuIGJlIG51bGwgZm9yIHN0YXRlbGVzcworICAg
KiBjb21wb25lbnRzLgorICAgKgorICAgKiBAcmV0dXJuIHtSZWFjdENvbXBvbmVudH0gdGhlIHB1
YmxpYyBjb21wb25lbnQgaW5zdGFuY2UuCisgICAqIEBpbnRlcm5hbAorICAgKi8KKyAgZ2V0UHVi
bGljSW5zdGFuY2U6IGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgaW5zdCA9IHRoaXMuX2luc3RhbmNl
OworICAgIGlmICh0aGlzLl9jb21wb3NpdGVUeXBlID09PSBDb21wb3NpdGVUeXBlcy5TdGF0ZWxl
c3NGdW5jdGlvbmFsKSB7CisgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisgICAgcmV0dXJuIGlu
c3Q7CisgIH0sCisKKyAgLy8gU3R1YgorICBfaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudDogbnVs
bAorCit9OworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50OwpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25v
ZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0Q29yb3V0aW5lLmpzIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
cmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RDb3JvdXRpbmUuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNzI4MTEyNjMzYzY0NTE2MzcwZWI4YmZhN2ZjOTY5ZDQ5YzA4ODRiZAotLS0gL2Rldi9u
dWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1Jl
YWN0Q29yb3V0aW5lLmpzCkBAIC0wLDAgKzEsODAgQEAKKy8qKgorICogQ29weXJpZ2h0IDIwMTQt
cHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
VGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2Ug
Zm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRo
aXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMg
Y2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Lgor
ICoKKyAqIAorICovCisKKyd1c2Ugc3RyaWN0JzsKKworLy8gVGhlIFN5bWJvbCB1c2VkIHRvIHRh
ZyB0aGUgc3BlY2lhbCBSZWFjdCB0eXBlcy4gSWYgdGhlcmUgaXMgbm8gbmF0aXZlIFN5bWJvbAor
Ly8gbm9yIHBvbHlmaWxsLCB0aGVuIGEgcGxhaW4gbnVtYmVyIGlzIHVzZWQgZm9yIHBlcmZvcm1h
bmNlLgordmFyIFJFQUNUX0NPUk9VVElORV9UWVBFID0gdHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0
aW9uJyAmJiBTeW1ib2xbJ2ZvciddICYmIFN5bWJvbFsnZm9yJ10oJ3JlYWN0LmNvcm91dGluZScp
IHx8IDB4ZWFjODsKKwordmFyIFJFQUNUX1lJRUxEX1RZUEUgPSB0eXBlb2YgU3ltYm9sID09PSAn
ZnVuY3Rpb24nICYmIFN5bWJvbFsnZm9yJ10gJiYgU3ltYm9sWydmb3InXSgncmVhY3QueWllbGQn
KSB8fCAweGVhYzk7CisKK2V4cG9ydHMuY3JlYXRlQ29yb3V0aW5lID0gZnVuY3Rpb24gKGNoaWxk
cmVuLCBoYW5kbGVyLCBwcm9wcykgeworICB2YXIga2V5ID0gYXJndW1lbnRzLmxlbmd0aCA+IDMg
JiYgYXJndW1lbnRzWzNdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbM10gOiBudWxsOworCisg
IHZhciBjb3JvdXRpbmUgPSB7CisgICAgLy8gVGhpcyB0YWcgYWxsb3cgdXMgdG8gdW5pcXVlbHkg
aWRlbnRpZnkgdGhpcyBhcyBhIFJlYWN0IENvcm91dGluZQorICAgICQkdHlwZW9mOiBSRUFDVF9D
T1JPVVRJTkVfVFlQRSwKKyAgICBrZXk6IGtleSA9PSBudWxsID8gbnVsbCA6ICcnICsga2V5LAor
ICAgIGNoaWxkcmVuOiBjaGlsZHJlbiwKKyAgICBoYW5kbGVyOiBoYW5kbGVyLAorICAgIHByb3Bz
OiBwcm9wcworICB9OworCisgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nKSB7CisgICAgLy8gVE9ETzogQWRkIF9zdG9yZSBwcm9wZXJ0eSBmb3IgbWFya2luZyB0aGlz
IGFzIHZhbGlkYXRlZC4KKyAgICBpZiAoT2JqZWN0LmZyZWV6ZSkgeworICAgICAgT2JqZWN0LmZy
ZWV6ZShjb3JvdXRpbmUucHJvcHMpOworICAgICAgT2JqZWN0LmZyZWV6ZShjb3JvdXRpbmUpOwor
ICAgIH0KKyAgfQorCisgIHJldHVybiBjb3JvdXRpbmU7Cit9OworCitleHBvcnRzLmNyZWF0ZVlp
ZWxkID0gZnVuY3Rpb24gKHByb3BzLCBjb250aW51YXRpb24pIHsKKyAgdmFyIGtleSA9IGFyZ3Vt
ZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRz
WzJdIDogbnVsbDsKKworICB2YXIgeWllbGROb2RlID0geworICAgIC8vIFRoaXMgdGFnIGFsbG93
IHVzIHRvIHVuaXF1ZWx5IGlkZW50aWZ5IHRoaXMgYXMgYSBSZWFjdCBZaWVsZAorICAgICQkdHlw
ZW9mOiBSRUFDVF9ZSUVMRF9UWVBFLAorICAgIGtleToga2V5ID09IG51bGwgPyBudWxsIDogJycg
KyBrZXksCisgICAgcHJvcHM6IHByb3BzLAorICAgIGNvbnRpbnVhdGlvbjogY29udGludWF0aW9u
CisgIH07CisKKyAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHsK
KyAgICAvLyBUT0RPOiBBZGQgX3N0b3JlIHByb3BlcnR5IGZvciBtYXJraW5nIHRoaXMgYXMgdmFs
aWRhdGVkLgorICAgIGlmIChPYmplY3QuZnJlZXplKSB7CisgICAgICBPYmplY3QuZnJlZXplKHlp
ZWxkTm9kZS5wcm9wcyk7CisgICAgICBPYmplY3QuZnJlZXplKHlpZWxkTm9kZSk7CisgICAgfQor
ICB9CisKKyAgcmV0dXJuIHlpZWxkTm9kZTsKK307CisKKy8qKgorICogVmVyaWZpZXMgdGhlIG9i
amVjdCBpcyBhIGNvcm91dGluZSBvYmplY3QuCisgKi8KK2V4cG9ydHMuaXNDb3JvdXRpbmUgPSBm
dW5jdGlvbiAob2JqZWN0KSB7CisgIHJldHVybiB0eXBlb2Ygb2JqZWN0ID09PSAnb2JqZWN0JyAm
JiBvYmplY3QgIT09IG51bGwgJiYgb2JqZWN0LiQkdHlwZW9mID09PSBSRUFDVF9DT1JPVVRJTkVf
VFlQRTsKK307CisKKy8qKgorICogVmVyaWZpZXMgdGhlIG9iamVjdCBpcyBhIHlpZWxkIG9iamVj
dC4KKyAqLworZXhwb3J0cy5pc1lpZWxkID0gZnVuY3Rpb24gKG9iamVjdCkgeworICByZXR1cm4g
dHlwZW9mIG9iamVjdCA9PT0gJ29iamVjdCcgJiYgb2JqZWN0ICE9PSBudWxsICYmIG9iamVjdC4k
JHR5cGVvZiA9PT0gUkVBQ1RfWUlFTERfVFlQRTsKK307CisKK2V4cG9ydHMuUkVBQ1RfWUlFTERf
VFlQRSA9IFJFQUNUX1lJRUxEX1RZUEU7CitleHBvcnRzLlJFQUNUX0NPUk9VVElORV9UWVBFID0g
UkVBQ1RfQ09ST1VUSU5FX1RZUEU7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RE
T00uanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFj
dERPTS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xMDVjYWUxNDNmNTQ2NzA5ZDM4NTgwYjYxZjJhMzViMWYzM2Vl
ZDQyCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3Jl
YWN0LWRvbS9saWIvUmVhY3RET00uanMKQEAgLTAsMCArMSwxMTAgQEAKKy8qKgorICogQ29weXJp
Z2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxl
IGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0
b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVu
dCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGly
ZWN0b3J5LgorICoKKyAqLworCisvKiBnbG9iYWxzIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hP
T0tfXyovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IHJl
cXVpcmUoJy4vUmVhY3RET01Db21wb25lbnRUcmVlJyk7Cit2YXIgUmVhY3REZWZhdWx0SW5qZWN0
aW9uID0gcmVxdWlyZSgnLi9SZWFjdERlZmF1bHRJbmplY3Rpb24nKTsKK3ZhciBSZWFjdE1vdW50
ID0gcmVxdWlyZSgnLi9SZWFjdE1vdW50Jyk7Cit2YXIgUmVhY3RSZWNvbmNpbGVyID0gcmVxdWly
ZSgnLi9SZWFjdFJlY29uY2lsZXInKTsKK3ZhciBSZWFjdFVwZGF0ZXMgPSByZXF1aXJlKCcuL1Jl
YWN0VXBkYXRlcycpOwordmFyIFJlYWN0VmVyc2lvbiA9IHJlcXVpcmUoJy4vUmVhY3RWZXJzaW9u
Jyk7CisKK3ZhciBmaW5kRE9NTm9kZSA9IHJlcXVpcmUoJy4vZmluZERPTU5vZGUnKTsKK3ZhciBn
ZXRIb3N0Q29tcG9uZW50RnJvbUNvbXBvc2l0ZSA9IHJlcXVpcmUoJy4vZ2V0SG9zdENvbXBvbmVu
dEZyb21Db21wb3NpdGUnKTsKK3ZhciByZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lciA9IHJlcXVp
cmUoJy4vcmVuZGVyU3VidHJlZUludG9Db250YWluZXInKTsKK3ZhciB3YXJuaW5nID0gcmVxdWly
ZSgnZmJqcy9saWIvd2FybmluZycpOworCitSZWFjdERlZmF1bHRJbmplY3Rpb24uaW5qZWN0KCk7
CisKK3ZhciBSZWFjdERPTSA9IHsKKyAgZmluZERPTU5vZGU6IGZpbmRET01Ob2RlLAorICByZW5k
ZXI6IFJlYWN0TW91bnQucmVuZGVyLAorICB1bm1vdW50Q29tcG9uZW50QXROb2RlOiBSZWFjdE1v
dW50LnVubW91bnRDb21wb25lbnRBdE5vZGUsCisgIHZlcnNpb246IFJlYWN0VmVyc2lvbiwKKwor
ICAvKiBlc2xpbnQtZGlzYWJsZSBjYW1lbGNhc2UgKi8KKyAgdW5zdGFibGVfYmF0Y2hlZFVwZGF0
ZXM6IFJlYWN0VXBkYXRlcy5iYXRjaGVkVXBkYXRlcywKKyAgdW5zdGFibGVfcmVuZGVyU3VidHJl
ZUludG9Db250YWluZXI6IHJlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyCit9OworCisvLyBJbmpl
Y3QgdGhlIHJ1bnRpbWUgaW50byBhIGRldnRvb2xzIGdsb2JhbCBob29rIHJlZ2FyZGxlc3Mgb2Yg
YnJvd3Nlci4KKy8vIEFsbG93cyBmb3IgZGVidWdnaW5nIHdoZW4gdGhlIGhvb2sgaXMgaW5qZWN0
ZWQgb24gdGhlIHBhZ2UuCitpZiAodHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tf
XyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tf
Xy5pbmplY3QgPT09ICdmdW5jdGlvbicpIHsKKyAgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9P
S19fLmluamVjdCh7CisgICAgQ29tcG9uZW50VHJlZTogeworICAgICAgZ2V0Q2xvc2VzdEluc3Rh
bmNlRnJvbU5vZGU6IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRDbG9zZXN0SW5zdGFuY2VGcm9t
Tm9kZSwKKyAgICAgIGdldE5vZGVGcm9tSW5zdGFuY2U6IGZ1bmN0aW9uIChpbnN0KSB7CisgICAg
ICAgIC8vIGluc3QgaXMgYW4gaW50ZXJuYWwgaW5zdGFuY2UgKGJ1dCBjb3VsZCBiZSBhIGNvbXBv
c2l0ZSkKKyAgICAgICAgaWYgKGluc3QuX3JlbmRlcmVkQ29tcG9uZW50KSB7CisgICAgICAgICAg
aW5zdCA9IGdldEhvc3RDb21wb25lbnRGcm9tQ29tcG9zaXRlKGluc3QpOworICAgICAgICB9Cisg
ICAgICAgIGlmIChpbnN0KSB7CisgICAgICAgICAgcmV0dXJuIFJlYWN0RE9NQ29tcG9uZW50VHJl
ZS5nZXROb2RlRnJvbUluc3RhbmNlKGluc3QpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
IHJldHVybiBudWxsOworICAgICAgICB9CisgICAgICB9CisgICAgfSwKKyAgICBNb3VudDogUmVh
Y3RNb3VudCwKKyAgICBSZWNvbmNpbGVyOiBSZWFjdFJlY29uY2lsZXIKKyAgfSk7Cit9CisKK2lm
IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgIHZhciBFeGVjdXRp
b25FbnZpcm9ubWVudCA9IHJlcXVpcmUoJ2ZianMvbGliL0V4ZWN1dGlvbkVudmlyb25tZW50Jyk7
CisgIGlmIChFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00gJiYgd2luZG93LnRvcCA9PT0g
d2luZG93LnNlbGYpIHsKKworICAgIC8vIEZpcnN0IGNoZWNrIGlmIGRldnRvb2xzIGlzIG5vdCBp
bnN0YWxsZWQKKyAgICBpZiAodHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyA9
PT0gJ3VuZGVmaW5lZCcpIHsKKyAgICAgIC8vIElmIHdlJ3JlIGluIENocm9tZSBvciBGaXJlZm94
LCBwcm92aWRlIGEgZG93bmxvYWQgbGluayBpZiBub3QgaW5zdGFsbGVkLgorICAgICAgaWYgKG5h
dmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignQ2hyb21lJykgPiAtMSAmJiBuYXZpZ2F0b3IudXNl
ckFnZW50LmluZGV4T2YoJ0VkZ2UnKSA9PT0gLTEgfHwgbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRl
eE9mKCdGaXJlZm94JykgPiAtMSkgeworICAgICAgICAvLyBGaXJlZm94IGRvZXMgbm90IGhhdmUg
dGhlIGlzc3VlIHdpdGggZGV2dG9vbHMgbG9hZGVkIG92ZXIgZmlsZTovLworICAgICAgICB2YXIg
c2hvd0ZpbGVVcmxNZXNzYWdlID0gd2luZG93LmxvY2F0aW9uLnByb3RvY29sLmluZGV4T2YoJ2h0
dHAnKSA9PT0gLTEgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCdGaXJlZm94JykgPT09
IC0xOworICAgICAgICBjb25zb2xlLmRlYnVnKCdEb3dubG9hZCB0aGUgUmVhY3QgRGV2VG9vbHMg
JyArIChzaG93RmlsZVVybE1lc3NhZ2UgPyAnYW5kIHVzZSBhbiBIVFRQIHNlcnZlciAoaW5zdGVh
ZCBvZiBhIGZpbGU6IFVSTCkgJyA6ICcnKSArICdmb3IgYSBiZXR0ZXIgZGV2ZWxvcG1lbnQgZXhw
ZXJpZW5jZTogJyArICdodHRwczovL2ZiLm1lL3JlYWN0LWRldnRvb2xzJyk7CisgICAgICB9Cisg
ICAgfQorCisgICAgdmFyIHRlc3RGdW5jID0gZnVuY3Rpb24gdGVzdEZuKCkge307CisgICAgcHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoKHRlc3RGdW5jLm5h
bWUgfHwgdGVzdEZ1bmMudG9TdHJpbmcoKSkuaW5kZXhPZigndGVzdEZuJykgIT09IC0xLCAnSXQg
bG9va3MgbGlrZSB5b3VcJ3JlIHVzaW5nIGEgbWluaWZpZWQgY29weSBvZiB0aGUgZGV2ZWxvcG1l
bnQgYnVpbGQgJyArICdvZiBSZWFjdC4gV2hlbiBkZXBsb3lpbmcgUmVhY3QgYXBwcyB0byBwcm9k
dWN0aW9uLCBtYWtlIHN1cmUgdG8gdXNlICcgKyAndGhlIHByb2R1Y3Rpb24gYnVpbGQgd2hpY2gg
c2tpcHMgZGV2ZWxvcG1lbnQgd2FybmluZ3MgYW5kIGlzIGZhc3Rlci4gJyArICdTZWUgaHR0cHM6
Ly9mYi5tZS9yZWFjdC1taW5pZmljYXRpb24gZm9yIG1vcmUgZGV0YWlscy4nKSA6IHZvaWQgMDsK
KworICAgIC8vIElmIHdlJ3JlIGluIElFOCwgY2hlY2sgdG8gc2VlIGlmIHdlIGFyZSBpbiBjb21w
YXRpYmlsaXR5IG1vZGUgYW5kIHByb3ZpZGUKKyAgICAvLyBpbmZvcm1hdGlvbiBvbiBwcmV2ZW50
aW5nIGNvbXBhdGliaWxpdHkgbW9kZQorICAgIHZhciBpZUNvbXBhdGliaWxpdHlNb2RlID0gZG9j
dW1lbnQuZG9jdW1lbnRNb2RlICYmIGRvY3VtZW50LmRvY3VtZW50TW9kZSA8IDg7CisKKyAgICBw
cm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyghaWVDb21wYXRp
YmlsaXR5TW9kZSwgJ0ludGVybmV0IEV4cGxvcmVyIGlzIHJ1bm5pbmcgaW4gY29tcGF0aWJpbGl0
eSBtb2RlOyBwbGVhc2UgYWRkIHRoZSAnICsgJ2ZvbGxvd2luZyB0YWcgdG8geW91ciBIVE1MIHRv
IHByZXZlbnQgdGhpcyBmcm9tIGhhcHBlbmluZzogJyArICc8bWV0YSBodHRwLWVxdWl2PSJYLVVB
LUNvbXBhdGlibGUiIGNvbnRlbnQ9IklFPWVkZ2UiIC8+JykgOiB2b2lkIDA7CisKKyAgICB2YXIg
ZXhwZWN0ZWRGZWF0dXJlcyA9IFsKKyAgICAvLyBzaGltcworICAgIEFycmF5LmlzQXJyYXksIEFy
cmF5LnByb3RvdHlwZS5ldmVyeSwgQXJyYXkucHJvdG90eXBlLmZvckVhY2gsIEFycmF5LnByb3Rv
dHlwZS5pbmRleE9mLCBBcnJheS5wcm90b3R5cGUubWFwLCBEYXRlLm5vdywgRnVuY3Rpb24ucHJv
dG90eXBlLmJpbmQsIE9iamVjdC5rZXlzLCBTdHJpbmcucHJvdG90eXBlLnRyaW1dOworCisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBleHBlY3RlZEZlYXR1cmVzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICBpZiAoIWV4cGVjdGVkRmVhdHVyZXNbaV0pIHsKKyAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdPbmUgb3IgbW9yZSBFUzUgc2hp
bXMgZXhwZWN0ZWQgYnkgUmVhY3QgYXJlIG5vdCBhdmFpbGFibGU6ICcgKyAnaHR0cHM6Ly9mYi5t
ZS9yZWFjdC13YXJuaW5nLXBvbHlmaWxscycpIDogdm9pZCAwOworICAgICAgICBicmVhazsKKyAg
ICAgIH0KKyAgICB9CisgIH0KK30KKworaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJv
ZHVjdGlvbicpIHsKKyAgdmFyIFJlYWN0SW5zdHJ1bWVudGF0aW9uID0gcmVxdWlyZSgnLi9SZWFj
dEluc3RydW1lbnRhdGlvbicpOworICB2YXIgUmVhY3RET01Vbmtub3duUHJvcGVydHlIb29rID0g
cmVxdWlyZSgnLi9SZWFjdERPTVVua25vd25Qcm9wZXJ0eUhvb2snKTsKKyAgdmFyIFJlYWN0RE9N
TnVsbElucHV0VmFsdWVQcm9wSG9vayA9IHJlcXVpcmUoJy4vUmVhY3RET01OdWxsSW5wdXRWYWx1
ZVByb3BIb29rJyk7CisgIHZhciBSZWFjdERPTUludmFsaWRBUklBSG9vayA9IHJlcXVpcmUoJy4v
UmVhY3RET01JbnZhbGlkQVJJQUhvb2snKTsKKworICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1
Z1Rvb2wuYWRkSG9vayhSZWFjdERPTVVua25vd25Qcm9wZXJ0eUhvb2spOworICBSZWFjdEluc3Ry
dW1lbnRhdGlvbi5kZWJ1Z1Rvb2wuYWRkSG9vayhSZWFjdERPTU51bGxJbnB1dFZhbHVlUHJvcEhv
b2spOworICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wuYWRkSG9vayhSZWFjdERPTUlu
dmFsaWRBUklBSG9vayk7Cit9CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RET007ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9t
b2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RET01Db21wb25lbnQuanMgYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9y
ZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdERPTUNvbXBvbmVudC5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43NDc4ZWZiNWU3NzM4MWRhY2Y0NWQ3MjkwYzhhMmY5MmY0YjI5ZGFkCi0tLSAvZGV2
L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIv
UmVhY3RET01Db21wb25lbnQuanMKQEAgLTAsMCArMSw5OTQgQEAKKy8qKgorICogQ29weXJpZ2h0
IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxp
Y2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5
IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCBy
aWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0
b3J5LgorICoKKyAqLworCisvKiBnbG9iYWwgaGFzT3duUHJvcGVydHk6dHJ1ZSAqLworCisndXNl
IHN0cmljdCc7CisKK3ZhciBfcHJvZEludmFyaWFudCA9IHJlcXVpcmUoJy4vcmVhY3RQcm9kSW52
YXJpYW50JyksCisgICAgX2Fzc2lnbiA9IHJlcXVpcmUoJ29iamVjdC1hc3NpZ24nKTsKKwordmFy
IEF1dG9Gb2N1c1V0aWxzID0gcmVxdWlyZSgnLi9BdXRvRm9jdXNVdGlscycpOwordmFyIENTU1By
b3BlcnR5T3BlcmF0aW9ucyA9IHJlcXVpcmUoJy4vQ1NTUHJvcGVydHlPcGVyYXRpb25zJyk7Cit2
YXIgRE9NTGF6eVRyZWUgPSByZXF1aXJlKCcuL0RPTUxhenlUcmVlJyk7Cit2YXIgRE9NTmFtZXNw
YWNlcyA9IHJlcXVpcmUoJy4vRE9NTmFtZXNwYWNlcycpOwordmFyIERPTVByb3BlcnR5ID0gcmVx
dWlyZSgnLi9ET01Qcm9wZXJ0eScpOwordmFyIERPTVByb3BlcnR5T3BlcmF0aW9ucyA9IHJlcXVp
cmUoJy4vRE9NUHJvcGVydHlPcGVyYXRpb25zJyk7Cit2YXIgRXZlbnRQbHVnaW5IdWIgPSByZXF1
aXJlKCcuL0V2ZW50UGx1Z2luSHViJyk7Cit2YXIgRXZlbnRQbHVnaW5SZWdpc3RyeSA9IHJlcXVp
cmUoJy4vRXZlbnRQbHVnaW5SZWdpc3RyeScpOwordmFyIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRl
ciA9IHJlcXVpcmUoJy4vUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyJyk7Cit2YXIgUmVhY3RET01D
b21wb25lbnRGbGFncyA9IHJlcXVpcmUoJy4vUmVhY3RET01Db21wb25lbnRGbGFncycpOwordmFy
IFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IHJlcXVpcmUoJy4vUmVhY3RET01Db21wb25lbnRUcmVl
Jyk7Cit2YXIgUmVhY3RET01JbnB1dCA9IHJlcXVpcmUoJy4vUmVhY3RET01JbnB1dCcpOwordmFy
IFJlYWN0RE9NT3B0aW9uID0gcmVxdWlyZSgnLi9SZWFjdERPTU9wdGlvbicpOwordmFyIFJlYWN0
RE9NU2VsZWN0ID0gcmVxdWlyZSgnLi9SZWFjdERPTVNlbGVjdCcpOwordmFyIFJlYWN0RE9NVGV4
dGFyZWEgPSByZXF1aXJlKCcuL1JlYWN0RE9NVGV4dGFyZWEnKTsKK3ZhciBSZWFjdEluc3RydW1l
bnRhdGlvbiA9IHJlcXVpcmUoJy4vUmVhY3RJbnN0cnVtZW50YXRpb24nKTsKK3ZhciBSZWFjdE11
bHRpQ2hpbGQgPSByZXF1aXJlKCcuL1JlYWN0TXVsdGlDaGlsZCcpOwordmFyIFJlYWN0U2VydmVy
UmVuZGVyaW5nVHJhbnNhY3Rpb24gPSByZXF1aXJlKCcuL1JlYWN0U2VydmVyUmVuZGVyaW5nVHJh
bnNhY3Rpb24nKTsKKwordmFyIGVtcHR5RnVuY3Rpb24gPSByZXF1aXJlKCdmYmpzL2xpYi9lbXB0
eUZ1bmN0aW9uJyk7Cit2YXIgZXNjYXBlVGV4dENvbnRlbnRGb3JCcm93c2VyID0gcmVxdWlyZSgn
Li9lc2NhcGVUZXh0Q29udGVudEZvckJyb3dzZXInKTsKK3ZhciBpbnZhcmlhbnQgPSByZXF1aXJl
KCdmYmpzL2xpYi9pbnZhcmlhbnQnKTsKK3ZhciBpc0V2ZW50U3VwcG9ydGVkID0gcmVxdWlyZSgn
Li9pc0V2ZW50U3VwcG9ydGVkJyk7Cit2YXIgc2hhbGxvd0VxdWFsID0gcmVxdWlyZSgnZmJqcy9s
aWIvc2hhbGxvd0VxdWFsJyk7Cit2YXIgdmFsaWRhdGVET01OZXN0aW5nID0gcmVxdWlyZSgnLi92
YWxpZGF0ZURPTU5lc3RpbmcnKTsKK3ZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2Fy
bmluZycpOworCit2YXIgRmxhZ3MgPSBSZWFjdERPTUNvbXBvbmVudEZsYWdzOwordmFyIGRlbGV0
ZUxpc3RlbmVyID0gRXZlbnRQbHVnaW5IdWIuZGVsZXRlTGlzdGVuZXI7Cit2YXIgZ2V0Tm9kZSA9
IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlOwordmFyIGxpc3RlblRv
ID0gUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLmxpc3RlblRvOwordmFyIHJlZ2lzdHJhdGlvbk5h
bWVNb2R1bGVzID0gRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlczsK
KworLy8gRm9yIHF1aWNrbHkgbWF0Y2hpbmcgY2hpbGRyZW4gdHlwZSwgdG8gdGVzdCBpZiBjYW4g
YmUgdHJlYXRlZCBhcyBjb250ZW50LgordmFyIENPTlRFTlRfVFlQRVMgPSB7ICdzdHJpbmcnOiB0
cnVlLCAnbnVtYmVyJzogdHJ1ZSB9OworCit2YXIgU1RZTEUgPSAnc3R5bGUnOwordmFyIEhUTUwg
PSAnX19odG1sJzsKK3ZhciBSRVNFUlZFRF9QUk9QUyA9IHsKKyAgY2hpbGRyZW46IG51bGwsCisg
IGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOiBudWxsLAorICBzdXBwcmVzc0NvbnRlbnRFZGl0YWJs
ZVdhcm5pbmc6IG51bGwKK307CisKKy8vIE5vZGUgdHlwZSBmb3IgZG9jdW1lbnQgZnJhZ21lbnRz
IChOb2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUpLgordmFyIERPQ19GUkFHTUVOVF9UWVBFID0g
MTE7CisKK2Z1bmN0aW9uIGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bShpbnRlcm5hbEluc3Rh
bmNlKSB7CisgIGlmIChpbnRlcm5hbEluc3RhbmNlKSB7CisgICAgdmFyIG93bmVyID0gaW50ZXJu
YWxJbnN0YW5jZS5fY3VycmVudEVsZW1lbnQuX293bmVyIHx8IG51bGw7CisgICAgaWYgKG93bmVy
KSB7CisgICAgICB2YXIgbmFtZSA9IG93bmVyLmdldE5hbWUoKTsKKyAgICAgIGlmIChuYW1lKSB7
CisgICAgICAgIHJldHVybiAnIFRoaXMgRE9NIG5vZGUgd2FzIHJlbmRlcmVkIGJ5IGAnICsgbmFt
ZSArICdgLic7CisgICAgICB9CisgICAgfQorICB9CisgIHJldHVybiAnJzsKK30KKworZnVuY3Rp
b24gZnJpZW5kbHlTdHJpbmdpZnkob2JqKSB7CisgIGlmICh0eXBlb2Ygb2JqID09PSAnb2JqZWN0
JykgeworICAgIGlmIChBcnJheS5pc0FycmF5KG9iaikpIHsKKyAgICAgIHJldHVybiAnWycgKyBv
YmoubWFwKGZyaWVuZGx5U3RyaW5naWZ5KS5qb2luKCcsICcpICsgJ10nOworICAgIH0gZWxzZSB7
CisgICAgICB2YXIgcGFpcnMgPSBbXTsKKyAgICAgIGZvciAodmFyIGtleSBpbiBvYmopIHsKKyAg
ICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkp
IHsKKyAgICAgICAgICB2YXIga2V5RXNjYXBlZCA9IC9eW2EteiRfXVtcdyRfXSokL2kudGVzdChr
ZXkpID8ga2V5IDogSlNPTi5zdHJpbmdpZnkoa2V5KTsKKyAgICAgICAgICBwYWlycy5wdXNoKGtl
eUVzY2FwZWQgKyAnOiAnICsgZnJpZW5kbHlTdHJpbmdpZnkob2JqW2tleV0pKTsKKyAgICAgICAg
fQorICAgICAgfQorICAgICAgcmV0dXJuICd7JyArIHBhaXJzLmpvaW4oJywgJykgKyAnfSc7Cisg
ICAgfQorICB9IGVsc2UgaWYgKHR5cGVvZiBvYmogPT09ICdzdHJpbmcnKSB7CisgICAgcmV0dXJu
IEpTT04uc3RyaW5naWZ5KG9iaik7CisgIH0gZWxzZSBpZiAodHlwZW9mIG9iaiA9PT0gJ2Z1bmN0
aW9uJykgeworICAgIHJldHVybiAnW2Z1bmN0aW9uIG9iamVjdF0nOworICB9CisgIC8vIERpZmZl
cnMgZnJvbSBKU09OLnN0cmluZ2lmeSBpbiB0aGF0IHVuZGVmaW5lZCBiZWNhdXNlIHVuZGVmaW5l
ZCBhbmQgdGhhdAorICAvLyBpbmYgYW5kIG5hbiBkb24ndCBiZWNvbWUgbnVsbAorICByZXR1cm4g
U3RyaW5nKG9iaik7Cit9CisKK3ZhciBzdHlsZU11dGF0aW9uV2FybmluZyA9IHt9OworCitmdW5j
dGlvbiBjaGVja0FuZFdhcm5Gb3JNdXRhdGVkU3R5bGUoc3R5bGUxLCBzdHlsZTIsIGNvbXBvbmVu
dCkgeworICBpZiAoc3R5bGUxID09IG51bGwgfHwgc3R5bGUyID09IG51bGwpIHsKKyAgICByZXR1
cm47CisgIH0KKyAgaWYgKHNoYWxsb3dFcXVhbChzdHlsZTEsIHN0eWxlMikpIHsKKyAgICByZXR1
cm47CisgIH0KKworICB2YXIgY29tcG9uZW50TmFtZSA9IGNvbXBvbmVudC5fdGFnOworICB2YXIg
b3duZXIgPSBjb21wb25lbnQuX2N1cnJlbnRFbGVtZW50Ll9vd25lcjsKKyAgdmFyIG93bmVyTmFt
ZTsKKyAgaWYgKG93bmVyKSB7CisgICAgb3duZXJOYW1lID0gb3duZXIuZ2V0TmFtZSgpOworICB9
CisKKyAgdmFyIGhhc2ggPSBvd25lck5hbWUgKyAnfCcgKyBjb21wb25lbnROYW1lOworCisgIGlm
IChzdHlsZU11dGF0aW9uV2FybmluZy5oYXNPd25Qcm9wZXJ0eShoYXNoKSkgeworICAgIHJldHVy
bjsKKyAgfQorCisgIHN0eWxlTXV0YXRpb25XYXJuaW5nW2hhc2hdID0gdHJ1ZTsKKworICBwcm9j
ZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ2Alc2Ag
d2FzIHBhc3NlZCBhIHN0eWxlIG9iamVjdCB0aGF0IGhhcyBwcmV2aW91c2x5IGJlZW4gbXV0YXRl
ZC4gJyArICdNdXRhdGluZyBgc3R5bGVgIGlzIGRlcHJlY2F0ZWQuIENvbnNpZGVyIGNsb25pbmcg
aXQgYmVmb3JlaGFuZC4gQ2hlY2sgJyArICd0aGUgYHJlbmRlcmAgJXMuIFByZXZpb3VzIHN0eWxl
OiAlcy4gTXV0YXRlZCBzdHlsZTogJXMuJywgY29tcG9uZW50TmFtZSwgb3duZXIgPyAnb2YgYCcg
KyBvd25lck5hbWUgKyAnYCcgOiAndXNpbmcgPCcgKyBjb21wb25lbnROYW1lICsgJz4nLCBmcmll
bmRseVN0cmluZ2lmeShzdHlsZTEpLCBmcmllbmRseVN0cmluZ2lmeShzdHlsZTIpKSA6IHZvaWQg
MDsKK30KKworLyoqCisgKiBAcGFyYW0ge29iamVjdH0gY29tcG9uZW50CisgKiBAcGFyYW0gez9v
YmplY3R9IHByb3BzCisgKi8KK2Z1bmN0aW9uIGFzc2VydFZhbGlkUHJvcHMoY29tcG9uZW50LCBw
cm9wcykgeworICBpZiAoIXByb3BzKSB7CisgICAgcmV0dXJuOworICB9CisgIC8vIE5vdGUgdGhl
IHVzZSBvZiBgPT1gIHdoaWNoIGNoZWNrcyBmb3IgbnVsbCBvciB1bmRlZmluZWQuCisgIGlmICh2
b2lkRWxlbWVudFRhZ3NbY29tcG9uZW50Ll90YWddKSB7CisgICAgIShwcm9wcy5jaGlsZHJlbiA9
PSBudWxsICYmIHByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MID09IG51bGwpID8gcHJvY2Vz
cy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJyVzIGlz
IGEgdm9pZCBlbGVtZW50IHRhZyBhbmQgbXVzdCBuZWl0aGVyIGhhdmUgYGNoaWxkcmVuYCBub3Ig
dXNlIGBkYW5nZXJvdXNseVNldElubmVySFRNTGAuJXMnLCBjb21wb25lbnQuX3RhZywgY29tcG9u
ZW50Ll9jdXJyZW50RWxlbWVudC5fb3duZXIgPyAnIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9m
ICcgKyBjb21wb25lbnQuX2N1cnJlbnRFbGVtZW50Ll9vd25lci5nZXROYW1lKCkgKyAnLicgOiAn
JykgOiBfcHJvZEludmFyaWFudCgnMTM3JywgY29tcG9uZW50Ll90YWcsIGNvbXBvbmVudC5fY3Vy
cmVudEVsZW1lbnQuX293bmVyID8gJyBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiAnICsgY29t
cG9uZW50Ll9jdXJyZW50RWxlbWVudC5fb3duZXIuZ2V0TmFtZSgpICsgJy4nIDogJycpIDogdm9p
ZCAwOworICB9CisgIGlmIChwcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTCAhPSBudWxsKSB7
CisgICAgIShwcm9wcy5jaGlsZHJlbiA9PSBudWxsKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9
PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdDYW4gb25seSBzZXQgb25lIG9mIGBj
aGlsZHJlbmAgb3IgYHByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MYC4nKSA6IF9wcm9kSW52
YXJpYW50KCc2MCcpIDogdm9pZCAwOworICAgICEodHlwZW9mIHByb3BzLmRhbmdlcm91c2x5U2V0
SW5uZXJIVE1MID09PSAnb2JqZWN0JyAmJiBIVE1MIGluIHByb3BzLmRhbmdlcm91c2x5U2V0SW5u
ZXJIVE1MKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlh
bnQoZmFsc2UsICdgcHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxgIG11c3QgYmUgaW4gdGhl
IGZvcm0gYHtfX2h0bWw6IC4uLn1gLiBQbGVhc2UgdmlzaXQgaHR0cHM6Ly9mYi5tZS9yZWFjdC1p
bnZhcmlhbnQtZGFuZ2Vyb3VzbHktc2V0LWlubmVyLWh0bWwgZm9yIG1vcmUgaW5mb3JtYXRpb24u
JykgOiBfcHJvZEludmFyaWFudCgnNjEnKSA6IHZvaWQgMDsKKyAgfQorICBpZiAocHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgeworICAgIHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHByb3BzLmlubmVySFRNTCA9PSBudWxsLCAnRGly
ZWN0bHkgc2V0dGluZyBwcm9wZXJ0eSBgaW5uZXJIVE1MYCBpcyBub3QgcGVybWl0dGVkLiAnICsg
J0ZvciBtb3JlIGluZm9ybWF0aW9uLCBsb29rdXAgZG9jdW1lbnRhdGlvbiBvbiBgZGFuZ2Vyb3Vz
bHlTZXRJbm5lckhUTUxgLicpIDogdm9pZCAwOworICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9
PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHByb3BzLnN1cHByZXNzQ29udGVudEVkaXRhYmxlV2Fy
bmluZyB8fCAhcHJvcHMuY29udGVudEVkaXRhYmxlIHx8IHByb3BzLmNoaWxkcmVuID09IG51bGws
ICdBIGNvbXBvbmVudCBpcyBgY29udGVudEVkaXRhYmxlYCBhbmQgY29udGFpbnMgYGNoaWxkcmVu
YCBtYW5hZ2VkIGJ5ICcgKyAnUmVhY3QuIEl0IGlzIG5vdyB5b3VyIHJlc3BvbnNpYmlsaXR5IHRv
IGd1YXJhbnRlZSB0aGF0IG5vbmUgb2YgJyArICd0aG9zZSBub2RlcyBhcmUgdW5leHBlY3RlZGx5
IG1vZGlmaWVkIG9yIGR1cGxpY2F0ZWQuIFRoaXMgaXMgJyArICdwcm9iYWJseSBub3QgaW50ZW50
aW9uYWwuJykgOiB2b2lkIDA7CisgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJyA/IHdhcm5pbmcocHJvcHMub25Gb2N1c0luID09IG51bGwgJiYgcHJvcHMub25Gb2N1c091
dCA9PSBudWxsLCAnUmVhY3QgdXNlcyBvbkZvY3VzIGFuZCBvbkJsdXIgaW5zdGVhZCBvZiBvbkZv
Y3VzSW4gYW5kIG9uRm9jdXNPdXQuICcgKyAnQWxsIFJlYWN0IGV2ZW50cyBhcmUgbm9ybWFsaXpl
ZCB0byBidWJibGUsIHNvIG9uRm9jdXNJbiBhbmQgb25Gb2N1c091dCAnICsgJ2FyZSBub3QgbmVl
ZGVkL3N1cHBvcnRlZCBieSBSZWFjdC4nKSA6IHZvaWQgMDsKKyAgfQorICAhKHByb3BzLnN0eWxl
ID09IG51bGwgfHwgdHlwZW9mIHByb3BzLnN0eWxlID09PSAnb2JqZWN0JykgPyBwcm9jZXNzLmVu
di5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnVGhlIGBzdHls
ZWAgcHJvcCBleHBlY3RzIGEgbWFwcGluZyBmcm9tIHN0eWxlIHByb3BlcnRpZXMgdG8gdmFsdWVz
LCBub3QgYSBzdHJpbmcuIEZvciBleGFtcGxlLCBzdHlsZT17e21hcmdpblJpZ2h0OiBzcGFjaW5n
ICsgXCdlbVwnfX0gd2hlbiB1c2luZyBKU1guJXMnLCBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5k
dW0oY29tcG9uZW50KSkgOiBfcHJvZEludmFyaWFudCgnNjInLCBnZXREZWNsYXJhdGlvbkVycm9y
QWRkZW5kdW0oY29tcG9uZW50KSkgOiB2b2lkIDA7Cit9CisKK2Z1bmN0aW9uIGVucXVldWVQdXRM
aXN0ZW5lcihpbnN0LCByZWdpc3RyYXRpb25OYW1lLCBsaXN0ZW5lciwgdHJhbnNhY3Rpb24pIHsK
KyAgaWYgKHRyYW5zYWN0aW9uIGluc3RhbmNlb2YgUmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2Fj
dGlvbikgeworICAgIHJldHVybjsKKyAgfQorICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09
ICdwcm9kdWN0aW9uJykgeworICAgIC8vIElFOCBoYXMgbm8gQVBJIGZvciBldmVudCBjYXB0dXJp
bmcgYW5kIHRoZSBgb25TY3JvbGxgIGV2ZW50IGRvZXNuJ3QKKyAgICAvLyBidWJibGUuCisgICAg
cHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcocmVnaXN0cmF0
aW9uTmFtZSAhPT0gJ29uU2Nyb2xsJyB8fCBpc0V2ZW50U3VwcG9ydGVkKCdzY3JvbGwnLCB0cnVl
KSwgJ1RoaXMgYnJvd3NlciBkb2VzblwndCBzdXBwb3J0IHRoZSBgb25TY3JvbGxgIGV2ZW50Jykg
OiB2b2lkIDA7CisgIH0KKyAgdmFyIGNvbnRhaW5lckluZm8gPSBpbnN0Ll9ob3N0Q29udGFpbmVy
SW5mbzsKKyAgdmFyIGlzRG9jdW1lbnRGcmFnbWVudCA9IGNvbnRhaW5lckluZm8uX25vZGUgJiYg
Y29udGFpbmVySW5mby5fbm9kZS5ub2RlVHlwZSA9PT0gRE9DX0ZSQUdNRU5UX1RZUEU7CisgIHZh
ciBkb2MgPSBpc0RvY3VtZW50RnJhZ21lbnQgPyBjb250YWluZXJJbmZvLl9ub2RlIDogY29udGFp
bmVySW5mby5fb3duZXJEb2N1bWVudDsKKyAgbGlzdGVuVG8ocmVnaXN0cmF0aW9uTmFtZSwgZG9j
KTsKKyAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShwdXRMaXN0ZW5l
ciwgeworICAgIGluc3Q6IGluc3QsCisgICAgcmVnaXN0cmF0aW9uTmFtZTogcmVnaXN0cmF0aW9u
TmFtZSwKKyAgICBsaXN0ZW5lcjogbGlzdGVuZXIKKyAgfSk7Cit9CisKK2Z1bmN0aW9uIHB1dExp
c3RlbmVyKCkgeworICB2YXIgbGlzdGVuZXJUb1B1dCA9IHRoaXM7CisgIEV2ZW50UGx1Z2luSHVi
LnB1dExpc3RlbmVyKGxpc3RlbmVyVG9QdXQuaW5zdCwgbGlzdGVuZXJUb1B1dC5yZWdpc3RyYXRp
b25OYW1lLCBsaXN0ZW5lclRvUHV0Lmxpc3RlbmVyKTsKK30KKworZnVuY3Rpb24gaW5wdXRQb3N0
TW91bnQoKSB7CisgIHZhciBpbnN0ID0gdGhpczsKKyAgUmVhY3RET01JbnB1dC5wb3N0TW91bnRX
cmFwcGVyKGluc3QpOworfQorCitmdW5jdGlvbiB0ZXh0YXJlYVBvc3RNb3VudCgpIHsKKyAgdmFy
IGluc3QgPSB0aGlzOworICBSZWFjdERPTVRleHRhcmVhLnBvc3RNb3VudFdyYXBwZXIoaW5zdCk7
Cit9CisKK2Z1bmN0aW9uIG9wdGlvblBvc3RNb3VudCgpIHsKKyAgdmFyIGluc3QgPSB0aGlzOwor
ICBSZWFjdERPTU9wdGlvbi5wb3N0TW91bnRXcmFwcGVyKGluc3QpOworfQorCit2YXIgc2V0QW5k
VmFsaWRhdGVDb250ZW50Q2hpbGREZXYgPSBlbXB0eUZ1bmN0aW9uOworaWYgKHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHsKKyAgc2V0QW5kVmFsaWRhdGVDb250ZW50Q2hp
bGREZXYgPSBmdW5jdGlvbiAoY29udGVudCkgeworICAgIHZhciBoYXNFeGlzdGluZ0NvbnRlbnQg
PSB0aGlzLl9jb250ZW50RGVidWdJRCAhPSBudWxsOworICAgIHZhciBkZWJ1Z0lEID0gdGhpcy5f
ZGVidWdJRDsKKyAgICAvLyBUaGlzIElEIHJlcHJlc2VudHMgdGhlIGlubGluZWQgY2hpbGQgdGhh
dCBoYXMgbm8gYmFja2luZyBpbnN0YW5jZToKKyAgICB2YXIgY29udGVudERlYnVnSUQgPSAtZGVi
dWdJRDsKKworICAgIGlmIChjb250ZW50ID09IG51bGwpIHsKKyAgICAgIGlmIChoYXNFeGlzdGlu
Z0NvbnRlbnQpIHsKKyAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uVW5t
b3VudENvbXBvbmVudCh0aGlzLl9jb250ZW50RGVidWdJRCk7CisgICAgICB9CisgICAgICB0aGlz
Ll9jb250ZW50RGVidWdJRCA9IG51bGw7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgdmFs
aWRhdGVET01OZXN0aW5nKG51bGwsIFN0cmluZyhjb250ZW50KSwgdGhpcywgdGhpcy5fYW5jZXN0
b3JJbmZvKTsKKyAgICB0aGlzLl9jb250ZW50RGVidWdJRCA9IGNvbnRlbnREZWJ1Z0lEOworICAg
IGlmIChoYXNFeGlzdGluZ0NvbnRlbnQpIHsKKyAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRl
YnVnVG9vbC5vbkJlZm9yZVVwZGF0ZUNvbXBvbmVudChjb250ZW50RGVidWdJRCwgY29udGVudCk7
CisgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25VcGRhdGVDb21wb25lbnQo
Y29udGVudERlYnVnSUQpOworICAgIH0gZWxzZSB7CisgICAgICBSZWFjdEluc3RydW1lbnRhdGlv
bi5kZWJ1Z1Rvb2wub25CZWZvcmVNb3VudENvbXBvbmVudChjb250ZW50RGVidWdJRCwgY29udGVu
dCwgZGVidWdJRCk7CisgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25Nb3Vu
dENvbXBvbmVudChjb250ZW50RGVidWdJRCk7CisgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5k
ZWJ1Z1Rvb2wub25TZXRDaGlsZHJlbihkZWJ1Z0lELCBbY29udGVudERlYnVnSURdKTsKKyAgICB9
CisgIH07Cit9CisKKy8vIFRoZXJlIGFyZSBzbyBtYW55IG1lZGlhIGV2ZW50cywgaXQgbWFrZXMg
c2Vuc2UgdG8ganVzdAorLy8gbWFpbnRhaW4gYSBsaXN0IHJhdGhlciB0aGFuIGNyZWF0ZSBhIGB0
cmFwQnViYmxlZEV2ZW50YCBmb3IgZWFjaAordmFyIG1lZGlhRXZlbnRzID0geworICB0b3BBYm9y
dDogJ2Fib3J0JywKKyAgdG9wQ2FuUGxheTogJ2NhbnBsYXknLAorICB0b3BDYW5QbGF5VGhyb3Vn
aDogJ2NhbnBsYXl0aHJvdWdoJywKKyAgdG9wRHVyYXRpb25DaGFuZ2U6ICdkdXJhdGlvbmNoYW5n
ZScsCisgIHRvcEVtcHRpZWQ6ICdlbXB0aWVkJywKKyAgdG9wRW5jcnlwdGVkOiAnZW5jcnlwdGVk
JywKKyAgdG9wRW5kZWQ6ICdlbmRlZCcsCisgIHRvcEVycm9yOiAnZXJyb3InLAorICB0b3BMb2Fk
ZWREYXRhOiAnbG9hZGVkZGF0YScsCisgIHRvcExvYWRlZE1ldGFkYXRhOiAnbG9hZGVkbWV0YWRh
dGEnLAorICB0b3BMb2FkU3RhcnQ6ICdsb2Fkc3RhcnQnLAorICB0b3BQYXVzZTogJ3BhdXNlJywK
KyAgdG9wUGxheTogJ3BsYXknLAorICB0b3BQbGF5aW5nOiAncGxheWluZycsCisgIHRvcFByb2dy
ZXNzOiAncHJvZ3Jlc3MnLAorICB0b3BSYXRlQ2hhbmdlOiAncmF0ZWNoYW5nZScsCisgIHRvcFNl
ZWtlZDogJ3NlZWtlZCcsCisgIHRvcFNlZWtpbmc6ICdzZWVraW5nJywKKyAgdG9wU3RhbGxlZDog
J3N0YWxsZWQnLAorICB0b3BTdXNwZW5kOiAnc3VzcGVuZCcsCisgIHRvcFRpbWVVcGRhdGU6ICd0
aW1ldXBkYXRlJywKKyAgdG9wVm9sdW1lQ2hhbmdlOiAndm9sdW1lY2hhbmdlJywKKyAgdG9wV2Fp
dGluZzogJ3dhaXRpbmcnCit9OworCitmdW5jdGlvbiB0cmFwQnViYmxlZEV2ZW50c0xvY2FsKCkg
eworICB2YXIgaW5zdCA9IHRoaXM7CisgIC8vIElmIGEgY29tcG9uZW50IHJlbmRlcnMgdG8gbnVs
bCBvciBpZiBhbm90aGVyIGNvbXBvbmVudCBmYXRhbHMgYW5kIGNhdXNlcworICAvLyB0aGUgc3Rh
dGUgb2YgdGhlIHRyZWUgdG8gYmUgY29ycnVwdGVkLCBgbm9kZWAgaGVyZSBjYW4gYmUgbnVsbC4K
KyAgIWluc3QuX3Jvb3ROb2RlSUQgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nID8gaW52YXJpYW50KGZhbHNlLCAnTXVzdCBiZSBtb3VudGVkIHRvIHRyYXAgZXZlbnRzJykg
OiBfcHJvZEludmFyaWFudCgnNjMnKSA6IHZvaWQgMDsKKyAgdmFyIG5vZGUgPSBnZXROb2RlKGlu
c3QpOworICAhbm9kZSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBp
bnZhcmlhbnQoZmFsc2UsICd0cmFwQnViYmxlZEV2ZW50KC4uLik6IFJlcXVpcmVzIG5vZGUgdG8g
YmUgcmVuZGVyZWQuJykgOiBfcHJvZEludmFyaWFudCgnNjQnKSA6IHZvaWQgMDsKKworICBzd2l0
Y2ggKGluc3QuX3RhZykgeworICAgIGNhc2UgJ2lmcmFtZSc6CisgICAgY2FzZSAnb2JqZWN0JzoK
KyAgICAgIGluc3QuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnMgPSBbUmVhY3RCcm93c2VyRXZlbnRF
bWl0dGVyLnRyYXBCdWJibGVkRXZlbnQoJ3RvcExvYWQnLCAnbG9hZCcsIG5vZGUpXTsKKyAgICAg
IGJyZWFrOworICAgIGNhc2UgJ3ZpZGVvJzoKKyAgICBjYXNlICdhdWRpbyc6CisKKyAgICAgIGlu
c3QuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnMgPSBbXTsKKyAgICAgIC8vIENyZWF0ZSBsaXN0ZW5l
ciBmb3IgZWFjaCBtZWRpYSBldmVudAorICAgICAgZm9yICh2YXIgZXZlbnQgaW4gbWVkaWFFdmVu
dHMpIHsKKyAgICAgICAgaWYgKG1lZGlhRXZlbnRzLmhhc093blByb3BlcnR5KGV2ZW50KSkgewor
ICAgICAgICAgIGluc3QuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnMucHVzaChSZWFjdEJyb3dzZXJF
dmVudEVtaXR0ZXIudHJhcEJ1YmJsZWRFdmVudChldmVudCwgbWVkaWFFdmVudHNbZXZlbnRdLCBu
b2RlKSk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGJyZWFrOworICAgIGNhc2UgJ3NvdXJj
ZSc6CisgICAgICBpbnN0Ll93cmFwcGVyU3RhdGUubGlzdGVuZXJzID0gW1JlYWN0QnJvd3NlckV2
ZW50RW1pdHRlci50cmFwQnViYmxlZEV2ZW50KCd0b3BFcnJvcicsICdlcnJvcicsIG5vZGUpXTsK
KyAgICAgIGJyZWFrOworICAgIGNhc2UgJ2ltZyc6CisgICAgICBpbnN0Ll93cmFwcGVyU3RhdGUu
bGlzdGVuZXJzID0gW1JlYWN0QnJvd3NlckV2ZW50RW1pdHRlci50cmFwQnViYmxlZEV2ZW50KCd0
b3BFcnJvcicsICdlcnJvcicsIG5vZGUpLCBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIudHJhcEJ1
YmJsZWRFdmVudCgndG9wTG9hZCcsICdsb2FkJywgbm9kZSldOworICAgICAgYnJlYWs7CisgICAg
Y2FzZSAnZm9ybSc6CisgICAgICBpbnN0Ll93cmFwcGVyU3RhdGUubGlzdGVuZXJzID0gW1JlYWN0
QnJvd3NlckV2ZW50RW1pdHRlci50cmFwQnViYmxlZEV2ZW50KCd0b3BSZXNldCcsICdyZXNldCcs
IG5vZGUpLCBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIudHJhcEJ1YmJsZWRFdmVudCgndG9wU3Vi
bWl0JywgJ3N1Ym1pdCcsIG5vZGUpXTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgJ2lucHV0JzoK
KyAgICBjYXNlICdzZWxlY3QnOgorICAgIGNhc2UgJ3RleHRhcmVhJzoKKyAgICAgIGluc3QuX3dy
YXBwZXJTdGF0ZS5saXN0ZW5lcnMgPSBbUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLnRyYXBCdWJi
bGVkRXZlbnQoJ3RvcEludmFsaWQnLCAnaW52YWxpZCcsIG5vZGUpXTsKKyAgICAgIGJyZWFrOwor
ICB9Cit9CisKK2Z1bmN0aW9uIHBvc3RVcGRhdGVTZWxlY3RXcmFwcGVyKCkgeworICBSZWFjdERP
TVNlbGVjdC5wb3N0VXBkYXRlV3JhcHBlcih0aGlzKTsKK30KKworLy8gRm9yIEhUTUwsIGNlcnRh
aW4gdGFncyBzaG91bGQgb21pdCB0aGVpciBjbG9zZSB0YWcuIFdlIGtlZXAgYSB3aGl0ZWxpc3Qg
Zm9yCisvLyB0aG9zZSBzcGVjaWFsLWNhc2UgdGFncy4KKwordmFyIG9taXR0ZWRDbG9zZVRhZ3Mg
PSB7CisgICdhcmVhJzogdHJ1ZSwKKyAgJ2Jhc2UnOiB0cnVlLAorICAnYnInOiB0cnVlLAorICAn
Y29sJzogdHJ1ZSwKKyAgJ2VtYmVkJzogdHJ1ZSwKKyAgJ2hyJzogdHJ1ZSwKKyAgJ2ltZyc6IHRy
dWUsCisgICdpbnB1dCc6IHRydWUsCisgICdrZXlnZW4nOiB0cnVlLAorICAnbGluayc6IHRydWUs
CisgICdtZXRhJzogdHJ1ZSwKKyAgJ3BhcmFtJzogdHJ1ZSwKKyAgJ3NvdXJjZSc6IHRydWUsCisg
ICd0cmFjayc6IHRydWUsCisgICd3YnInOiB0cnVlCit9OworCit2YXIgbmV3bGluZUVhdGluZ1Rh
Z3MgPSB7CisgICdsaXN0aW5nJzogdHJ1ZSwKKyAgJ3ByZSc6IHRydWUsCisgICd0ZXh0YXJlYSc6
IHRydWUKK307CisKKy8vIEZvciBIVE1MLCBjZXJ0YWluIHRhZ3MgY2Fubm90IGhhdmUgY2hpbGRy
ZW4uIFRoaXMgaGFzIHRoZSBzYW1lIHB1cnBvc2UgYXMKKy8vIGBvbWl0dGVkQ2xvc2VUYWdzYCBl
eGNlcHQgdGhhdCBgbWVudWl0ZW1gIHNob3VsZCBzdGlsbCBoYXZlIGl0cyBjbG9zaW5nIHRhZy4K
KwordmFyIHZvaWRFbGVtZW50VGFncyA9IF9hc3NpZ24oeworICAnbWVudWl0ZW0nOiB0cnVlCit9
LCBvbWl0dGVkQ2xvc2VUYWdzKTsKKworLy8gV2UgYWNjZXB0IGFueSB0YWcgdG8gYmUgcmVuZGVy
ZWQgYnV0IHNpbmNlIHRoaXMgZ2V0cyBpbmplY3RlZCBpbnRvIGFyYml0cmFyeQorLy8gSFRNTCwg
d2Ugd2FudCB0byBtYWtlIHN1cmUgdGhhdCBpdCdzIGEgc2FmZSB0YWcuCisvLyBodHRwOi8vd3d3
LnczLm9yZy9UUi9SRUMteG1sLyNOVC1OYW1lCisKK3ZhciBWQUxJRF9UQUdfUkVHRVggPSAvXlth
LXpBLVpdW2EtekEtWjpfXC5cLVxkXSokLzsgLy8gU2ltcGxpZmllZCBzdWJzZXQKK3ZhciB2YWxp
ZGF0ZWRUYWdDYWNoZSA9IHt9OwordmFyIGhhc093blByb3BlcnR5ID0ge30uaGFzT3duUHJvcGVy
dHk7CisKK2Z1bmN0aW9uIHZhbGlkYXRlRGFuZ2Vyb3VzVGFnKHRhZykgeworICBpZiAoIWhhc093
blByb3BlcnR5LmNhbGwodmFsaWRhdGVkVGFnQ2FjaGUsIHRhZykpIHsKKyAgICAhVkFMSURfVEFH
X1JFR0VYLnRlc3QodGFnKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicg
PyBpbnZhcmlhbnQoZmFsc2UsICdJbnZhbGlkIHRhZzogJXMnLCB0YWcpIDogX3Byb2RJbnZhcmlh
bnQoJzY1JywgdGFnKSA6IHZvaWQgMDsKKyAgICB2YWxpZGF0ZWRUYWdDYWNoZVt0YWddID0gdHJ1
ZTsKKyAgfQorfQorCitmdW5jdGlvbiBpc0N1c3RvbUNvbXBvbmVudCh0YWdOYW1lLCBwcm9wcykg
eworICByZXR1cm4gdGFnTmFtZS5pbmRleE9mKCctJykgPj0gMCB8fCBwcm9wcy5pcyAhPSBudWxs
OworfQorCit2YXIgZ2xvYmFsSWRDb3VudGVyID0gMTsKKworLyoqCisgKiBDcmVhdGVzIGEgbmV3
IFJlYWN0IGNsYXNzIHRoYXQgaXMgaWRlbXBvdGVudCBhbmQgY2FwYWJsZSBvZiBjb250YWluaW5n
IG90aGVyCisgKiBSZWFjdCBjb21wb25lbnRzLiBJdCBhY2NlcHRzIGV2ZW50IGxpc3RlbmVycyBh
bmQgRE9NIHByb3BlcnRpZXMgdGhhdCBhcmUKKyAqIHZhbGlkIGFjY29yZGluZyB0byBgRE9NUHJv
cGVydHlgLgorICoKKyAqICAtIEV2ZW50IGxpc3RlbmVyczogYG9uQ2xpY2tgLCBgb25Nb3VzZURv
d25gLCBldGMuCisgKiAgLSBET00gcHJvcGVydGllczogYGNsYXNzTmFtZWAsIGBuYW1lYCwgYHRp
dGxlYCwgZXRjLgorICoKKyAqIFRoZSBgc3R5bGVgIHByb3BlcnR5IGZ1bmN0aW9ucyBkaWZmZXJl
bnRseSBmcm9tIHRoZSBET00gQVBJLiBJdCBhY2NlcHRzIGFuCisgKiBvYmplY3QgbWFwcGluZyBv
ZiBzdHlsZSBwcm9wZXJ0aWVzIHRvIHZhbHVlcy4KKyAqCisgKiBAY29uc3RydWN0b3IgUmVhY3RE
T01Db21wb25lbnQKKyAqIEBleHRlbmRzIFJlYWN0TXVsdGlDaGlsZAorICovCitmdW5jdGlvbiBS
ZWFjdERPTUNvbXBvbmVudChlbGVtZW50KSB7CisgIHZhciB0YWcgPSBlbGVtZW50LnR5cGU7Cisg
IHZhbGlkYXRlRGFuZ2Vyb3VzVGFnKHRhZyk7CisgIHRoaXMuX2N1cnJlbnRFbGVtZW50ID0gZWxl
bWVudDsKKyAgdGhpcy5fdGFnID0gdGFnLnRvTG93ZXJDYXNlKCk7CisgIHRoaXMuX25hbWVzcGFj
ZVVSSSA9IG51bGw7CisgIHRoaXMuX3JlbmRlcmVkQ2hpbGRyZW4gPSBudWxsOworICB0aGlzLl9w
cmV2aW91c1N0eWxlID0gbnVsbDsKKyAgdGhpcy5fcHJldmlvdXNTdHlsZUNvcHkgPSBudWxsOwor
ICB0aGlzLl9ob3N0Tm9kZSA9IG51bGw7CisgIHRoaXMuX2hvc3RQYXJlbnQgPSBudWxsOworICB0
aGlzLl9yb290Tm9kZUlEID0gMDsKKyAgdGhpcy5fZG9tSUQgPSAwOworICB0aGlzLl9ob3N0Q29u
dGFpbmVySW5mbyA9IG51bGw7CisgIHRoaXMuX3dyYXBwZXJTdGF0ZSA9IG51bGw7CisgIHRoaXMu
X3RvcExldmVsV3JhcHBlciA9IG51bGw7CisgIHRoaXMuX2ZsYWdzID0gMDsKKyAgaWYgKHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICB0aGlzLl9hbmNlc3Rvcklu
Zm8gPSBudWxsOworICAgIHNldEFuZFZhbGlkYXRlQ29udGVudENoaWxkRGV2LmNhbGwodGhpcywg
bnVsbCk7CisgIH0KK30KKworUmVhY3RET01Db21wb25lbnQuZGlzcGxheU5hbWUgPSAnUmVhY3RE
T01Db21wb25lbnQnOworCitSZWFjdERPTUNvbXBvbmVudC5NaXhpbiA9IHsKKworICAvKioKKyAg
ICogR2VuZXJhdGVzIHJvb3QgdGFnIG1hcmt1cCB0aGVuIHJlY3Vyc2VzLiBUaGlzIG1ldGhvZCBo
YXMgc2lkZSBlZmZlY3RzIGFuZAorICAgKiBpcyBub3QgaWRlbXBvdGVudC4KKyAgICoKKyAgICog
QGludGVybmFsCisgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbnxSZWFjdFNl
cnZlclJlbmRlcmluZ1RyYW5zYWN0aW9ufSB0cmFuc2FjdGlvbgorICAgKiBAcGFyYW0gez9SZWFj
dERPTUNvbXBvbmVudH0gdGhlIHBhcmVudCBjb21wb25lbnQgaW5zdGFuY2UKKyAgICogQHBhcmFt
IHs/b2JqZWN0fSBpbmZvIGFib3V0IHRoZSBob3N0IGNvbnRhaW5lcgorICAgKiBAcGFyYW0ge29i
amVjdH0gY29udGV4dAorICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBjb21wdXRlZCBtYXJrdXAu
CisgICAqLworICBtb3VudENvbXBvbmVudDogZnVuY3Rpb24gKHRyYW5zYWN0aW9uLCBob3N0UGFy
ZW50LCBob3N0Q29udGFpbmVySW5mbywgY29udGV4dCkgeworICAgIHRoaXMuX3Jvb3ROb2RlSUQg
PSBnbG9iYWxJZENvdW50ZXIrKzsKKyAgICB0aGlzLl9kb21JRCA9IGhvc3RDb250YWluZXJJbmZv
Ll9pZENvdW50ZXIrKzsKKyAgICB0aGlzLl9ob3N0UGFyZW50ID0gaG9zdFBhcmVudDsKKyAgICB0
aGlzLl9ob3N0Q29udGFpbmVySW5mbyA9IGhvc3RDb250YWluZXJJbmZvOworCisgICAgdmFyIHBy
b3BzID0gdGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHM7CisKKyAgICBzd2l0Y2ggKHRoaXMuX3Rh
ZykgeworICAgICAgY2FzZSAnYXVkaW8nOgorICAgICAgY2FzZSAnZm9ybSc6CisgICAgICBjYXNl
ICdpZnJhbWUnOgorICAgICAgY2FzZSAnaW1nJzoKKyAgICAgIGNhc2UgJ2xpbmsnOgorICAgICAg
Y2FzZSAnb2JqZWN0JzoKKyAgICAgIGNhc2UgJ3NvdXJjZSc6CisgICAgICBjYXNlICd2aWRlbyc6
CisgICAgICAgIHRoaXMuX3dyYXBwZXJTdGF0ZSA9IHsKKyAgICAgICAgICBsaXN0ZW5lcnM6IG51
bGwKKyAgICAgICAgfTsKKyAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCku
ZW5xdWV1ZSh0cmFwQnViYmxlZEV2ZW50c0xvY2FsLCB0aGlzKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgICBjYXNlICdpbnB1dCc6CisgICAgICAgIFJlYWN0RE9NSW5wdXQubW91bnRXcmFwcGVyKHRo
aXMsIHByb3BzLCBob3N0UGFyZW50KTsKKyAgICAgICAgcHJvcHMgPSBSZWFjdERPTUlucHV0Lmdl
dEhvc3RQcm9wcyh0aGlzLCBwcm9wcyk7CisgICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91
bnRSZWFkeSgpLmVucXVldWUodHJhcEJ1YmJsZWRFdmVudHNMb2NhbCwgdGhpcyk7CisgICAgICAg
IGJyZWFrOworICAgICAgY2FzZSAnb3B0aW9uJzoKKyAgICAgICAgUmVhY3RET01PcHRpb24ubW91
bnRXcmFwcGVyKHRoaXMsIHByb3BzLCBob3N0UGFyZW50KTsKKyAgICAgICAgcHJvcHMgPSBSZWFj
dERPTU9wdGlvbi5nZXRIb3N0UHJvcHModGhpcywgcHJvcHMpOworICAgICAgICBicmVhazsKKyAg
ICAgIGNhc2UgJ3NlbGVjdCc6CisgICAgICAgIFJlYWN0RE9NU2VsZWN0Lm1vdW50V3JhcHBlcih0
aGlzLCBwcm9wcywgaG9zdFBhcmVudCk7CisgICAgICAgIHByb3BzID0gUmVhY3RET01TZWxlY3Qu
Z2V0SG9zdFByb3BzKHRoaXMsIHByb3BzKTsKKyAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RN
b3VudFJlYWR5KCkuZW5xdWV1ZSh0cmFwQnViYmxlZEV2ZW50c0xvY2FsLCB0aGlzKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgICBjYXNlICd0ZXh0YXJlYSc6CisgICAgICAgIFJlYWN0RE9NVGV4dGFy
ZWEubW91bnRXcmFwcGVyKHRoaXMsIHByb3BzLCBob3N0UGFyZW50KTsKKyAgICAgICAgcHJvcHMg
PSBSZWFjdERPTVRleHRhcmVhLmdldEhvc3RQcm9wcyh0aGlzLCBwcm9wcyk7CisgICAgICAgIHRy
YW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUodHJhcEJ1YmJsZWRFdmVudHNM
b2NhbCwgdGhpcyk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGFzc2VydFZhbGlkUHJv
cHModGhpcywgcHJvcHMpOworCisgICAgLy8gV2UgY3JlYXRlIHRhZ3MgaW4gdGhlIG5hbWVzcGFj
ZSBvZiB0aGVpciBwYXJlbnQgY29udGFpbmVyLCBleGNlcHQgSFRNTAorICAgIC8vIHRhZ3MgZ2V0
IG5vIG5hbWVzcGFjZS4KKyAgICB2YXIgbmFtZXNwYWNlVVJJOworICAgIHZhciBwYXJlbnRUYWc7
CisgICAgaWYgKGhvc3RQYXJlbnQgIT0gbnVsbCkgeworICAgICAgbmFtZXNwYWNlVVJJID0gaG9z
dFBhcmVudC5fbmFtZXNwYWNlVVJJOworICAgICAgcGFyZW50VGFnID0gaG9zdFBhcmVudC5fdGFn
OworICAgIH0gZWxzZSBpZiAoaG9zdENvbnRhaW5lckluZm8uX3RhZykgeworICAgICAgbmFtZXNw
YWNlVVJJID0gaG9zdENvbnRhaW5lckluZm8uX25hbWVzcGFjZVVSSTsKKyAgICAgIHBhcmVudFRh
ZyA9IGhvc3RDb250YWluZXJJbmZvLl90YWc7CisgICAgfQorICAgIGlmIChuYW1lc3BhY2VVUkkg
PT0gbnVsbCB8fCBuYW1lc3BhY2VVUkkgPT09IERPTU5hbWVzcGFjZXMuc3ZnICYmIHBhcmVudFRh
ZyA9PT0gJ2ZvcmVpZ25vYmplY3QnKSB7CisgICAgICBuYW1lc3BhY2VVUkkgPSBET01OYW1lc3Bh
Y2VzLmh0bWw7CisgICAgfQorICAgIGlmIChuYW1lc3BhY2VVUkkgPT09IERPTU5hbWVzcGFjZXMu
aHRtbCkgeworICAgICAgaWYgKHRoaXMuX3RhZyA9PT0gJ3N2ZycpIHsKKyAgICAgICAgbmFtZXNw
YWNlVVJJID0gRE9NTmFtZXNwYWNlcy5zdmc7CisgICAgICB9IGVsc2UgaWYgKHRoaXMuX3RhZyA9
PT0gJ21hdGgnKSB7CisgICAgICAgIG5hbWVzcGFjZVVSSSA9IERPTU5hbWVzcGFjZXMubWF0aG1s
OworICAgICAgfQorICAgIH0KKyAgICB0aGlzLl9uYW1lc3BhY2VVUkkgPSBuYW1lc3BhY2VVUkk7
CisKKyAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgeworICAg
ICAgdmFyIHBhcmVudEluZm87CisgICAgICBpZiAoaG9zdFBhcmVudCAhPSBudWxsKSB7CisgICAg
ICAgIHBhcmVudEluZm8gPSBob3N0UGFyZW50Ll9hbmNlc3RvckluZm87CisgICAgICB9IGVsc2Ug
aWYgKGhvc3RDb250YWluZXJJbmZvLl90YWcpIHsKKyAgICAgICAgcGFyZW50SW5mbyA9IGhvc3RD
b250YWluZXJJbmZvLl9hbmNlc3RvckluZm87CisgICAgICB9CisgICAgICBpZiAocGFyZW50SW5m
bykgeworICAgICAgICAvLyBwYXJlbnRJbmZvIHNob3VsZCBhbHdheXMgYmUgcHJlc2VudCBleGNl
cHQgZm9yIHRoZSB0b3AtbGV2ZWwKKyAgICAgICAgLy8gY29tcG9uZW50IHdoZW4gc2VydmVyIHJl
bmRlcmluZworICAgICAgICB2YWxpZGF0ZURPTU5lc3RpbmcodGhpcy5fdGFnLCBudWxsLCB0aGlz
LCBwYXJlbnRJbmZvKTsKKyAgICAgIH0KKyAgICAgIHRoaXMuX2FuY2VzdG9ySW5mbyA9IHZhbGlk
YXRlRE9NTmVzdGluZy51cGRhdGVkQW5jZXN0b3JJbmZvKHBhcmVudEluZm8sIHRoaXMuX3RhZywg
dGhpcyk7CisgICAgfQorCisgICAgdmFyIG1vdW50SW1hZ2U7CisgICAgaWYgKHRyYW5zYWN0aW9u
LnVzZUNyZWF0ZUVsZW1lbnQpIHsKKyAgICAgIHZhciBvd25lckRvY3VtZW50ID0gaG9zdENvbnRh
aW5lckluZm8uX293bmVyRG9jdW1lbnQ7CisgICAgICB2YXIgZWw7CisgICAgICBpZiAobmFtZXNw
YWNlVVJJID09PSBET01OYW1lc3BhY2VzLmh0bWwpIHsKKyAgICAgICAgaWYgKHRoaXMuX3RhZyA9
PT0gJ3NjcmlwdCcpIHsKKyAgICAgICAgICAvLyBDcmVhdGUgdGhlIHNjcmlwdCB2aWEgLmlubmVy
SFRNTCBzbyBpdHMgInBhcnNlci1pbnNlcnRlZCIgZmxhZyBpcworICAgICAgICAgIC8vIHNldCB0
byB0cnVlIGFuZCBpdCBkb2VzIG5vdCBleGVjdXRlCisgICAgICAgICAgdmFyIGRpdiA9IG93bmVy
RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgICAgdmFyIHR5cGUgPSB0aGlz
Ll9jdXJyZW50RWxlbWVudC50eXBlOworICAgICAgICAgIGRpdi5pbm5lckhUTUwgPSAnPCcgKyB0
eXBlICsgJz48LycgKyB0eXBlICsgJz4nOworICAgICAgICAgIGVsID0gZGl2LnJlbW92ZUNoaWxk
KGRpdi5maXJzdENoaWxkKTsKKyAgICAgICAgfSBlbHNlIGlmIChwcm9wcy5pcykgeworICAgICAg
ICAgIGVsID0gb3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KHRoaXMuX2N1cnJlbnRFbGVtZW50
LnR5cGUsIHByb3BzLmlzKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAvLyBTZXBhcmF0
ZSBlbHNlIGJyYW5jaCBpbnN0ZWFkIG9mIHVzaW5nIGBwcm9wcy5pcyB8fCB1bmRlZmluZWRgIGFi
b3ZlIGJlY3Vhc2Ugb2YgYSBGaXJlZm94IGJ1Zy4KKyAgICAgICAgICAvLyBTZWUgZGlzY3Vzc2lv
biBpbiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvcHVsbC82ODk2CisgICAgICAg
ICAgLy8gYW5kIGRpc2N1c3Npb24gaW4gaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTI3NjI0MAorICAgICAgICAgIGVsID0gb3duZXJEb2N1bWVudC5jcmVhdGVF
bGVtZW50KHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGUpOworICAgICAgICB9CisgICAgICB9IGVs
c2UgeworICAgICAgICBlbCA9IG93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG5hbWVzcGFj
ZVVSSSwgdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZSk7CisgICAgICB9CisgICAgICBSZWFjdERP
TUNvbXBvbmVudFRyZWUucHJlY2FjaGVOb2RlKHRoaXMsIGVsKTsKKyAgICAgIHRoaXMuX2ZsYWdz
IHw9IEZsYWdzLmhhc0NhY2hlZENoaWxkTm9kZXM7CisgICAgICBpZiAoIXRoaXMuX2hvc3RQYXJl
bnQpIHsKKyAgICAgICAgRE9NUHJvcGVydHlPcGVyYXRpb25zLnNldEF0dHJpYnV0ZUZvclJvb3Qo
ZWwpOworICAgICAgfQorICAgICAgdGhpcy5fdXBkYXRlRE9NUHJvcGVydGllcyhudWxsLCBwcm9w
cywgdHJhbnNhY3Rpb24pOworICAgICAgdmFyIGxhenlUcmVlID0gRE9NTGF6eVRyZWUoZWwpOwor
ICAgICAgdGhpcy5fY3JlYXRlSW5pdGlhbENoaWxkcmVuKHRyYW5zYWN0aW9uLCBwcm9wcywgY29u
dGV4dCwgbGF6eVRyZWUpOworICAgICAgbW91bnRJbWFnZSA9IGxhenlUcmVlOworICAgIH0gZWxz
ZSB7CisgICAgICB2YXIgdGFnT3BlbiA9IHRoaXMuX2NyZWF0ZU9wZW5UYWdNYXJrdXBBbmRQdXRM
aXN0ZW5lcnModHJhbnNhY3Rpb24sIHByb3BzKTsKKyAgICAgIHZhciB0YWdDb250ZW50ID0gdGhp
cy5fY3JlYXRlQ29udGVudE1hcmt1cCh0cmFuc2FjdGlvbiwgcHJvcHMsIGNvbnRleHQpOworICAg
ICAgaWYgKCF0YWdDb250ZW50ICYmIG9taXR0ZWRDbG9zZVRhZ3NbdGhpcy5fdGFnXSkgeworICAg
ICAgICBtb3VudEltYWdlID0gdGFnT3BlbiArICcvPic7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBtb3VudEltYWdlID0gdGFnT3BlbiArICc+JyArIHRhZ0NvbnRlbnQgKyAnPC8nICsgdGhpcy5f
Y3VycmVudEVsZW1lbnQudHlwZSArICc+JzsKKyAgICAgIH0KKyAgICB9CisKKyAgICBzd2l0Y2gg
KHRoaXMuX3RhZykgeworICAgICAgY2FzZSAnaW5wdXQnOgorICAgICAgICB0cmFuc2FjdGlvbi5n
ZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGlucHV0UG9zdE1vdW50LCB0aGlzKTsKKyAgICAg
ICAgaWYgKHByb3BzLmF1dG9Gb2N1cykgeworICAgICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0
TW91bnRSZWFkeSgpLmVucXVldWUoQXV0b0ZvY3VzVXRpbHMuZm9jdXNET01Db21wb25lbnQsIHRo
aXMpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAndGV4dGFyZWEnOgor
ICAgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHRleHRhcmVh
UG9zdE1vdW50LCB0aGlzKTsKKyAgICAgICAgaWYgKHByb3BzLmF1dG9Gb2N1cykgeworICAgICAg
ICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoQXV0b0ZvY3VzVXRp
bHMuZm9jdXNET01Db21wb25lbnQsIHRoaXMpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOwor
ICAgICAgY2FzZSAnc2VsZWN0JzoKKyAgICAgICAgaWYgKHByb3BzLmF1dG9Gb2N1cykgeworICAg
ICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoQXV0b0ZvY3Vz
VXRpbHMuZm9jdXNET01Db21wb25lbnQsIHRoaXMpOworICAgICAgICB9CisgICAgICAgIGJyZWFr
OworICAgICAgY2FzZSAnYnV0dG9uJzoKKyAgICAgICAgaWYgKHByb3BzLmF1dG9Gb2N1cykgewor
ICAgICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoQXV0b0Zv
Y3VzVXRpbHMuZm9jdXNET01Db21wb25lbnQsIHRoaXMpOworICAgICAgICB9CisgICAgICAgIGJy
ZWFrOworICAgICAgY2FzZSAnb3B0aW9uJzoKKyAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RN
b3VudFJlYWR5KCkuZW5xdWV1ZShvcHRpb25Qb3N0TW91bnQsIHRoaXMpOworICAgICAgICBicmVh
azsKKyAgICB9CisKKyAgICByZXR1cm4gbW91bnRJbWFnZTsKKyAgfSwKKworICAvKioKKyAgICog
Q3JlYXRlcyBtYXJrdXAgZm9yIHRoZSBvcGVuIHRhZyBhbmQgYWxsIGF0dHJpYnV0ZXMuCisgICAq
CisgICAqIFRoaXMgbWV0aG9kIGhhcyBzaWRlIGVmZmVjdHMgYmVjYXVzZSBldmVudHMgZ2V0IHJl
Z2lzdGVyZWQuCisgICAqCisgICAqIEl0ZXJhdGluZyBvdmVyIG9iamVjdCBwcm9wZXJ0aWVzIGlz
IGZhc3RlciB0aGFuIGl0ZXJhdGluZyBvdmVyIGFycmF5cy4KKyAgICogQHNlZSBodHRwOi8vanNw
ZXJmLmNvbS9vYmotdnMtYXJyLWl0ZXJhdGlvbgorICAgKgorICAgKiBAcHJpdmF0ZQorICAgKiBA
cGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb258UmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFu
c2FjdGlvbn0gdHJhbnNhY3Rpb24KKyAgICogQHBhcmFtIHtvYmplY3R9IHByb3BzCisgICAqIEBy
ZXR1cm4ge3N0cmluZ30gTWFya3VwIG9mIG9wZW5pbmcgdGFnLgorICAgKi8KKyAgX2NyZWF0ZU9w
ZW5UYWdNYXJrdXBBbmRQdXRMaXN0ZW5lcnM6IGZ1bmN0aW9uICh0cmFuc2FjdGlvbiwgcHJvcHMp
IHsKKyAgICB2YXIgcmV0ID0gJzwnICsgdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTsKKworICAg
IGZvciAodmFyIHByb3BLZXkgaW4gcHJvcHMpIHsKKyAgICAgIGlmICghcHJvcHMuaGFzT3duUHJv
cGVydHkocHJvcEtleSkpIHsKKyAgICAgICAgY29udGludWU7CisgICAgICB9CisgICAgICB2YXIg
cHJvcFZhbHVlID0gcHJvcHNbcHJvcEtleV07CisgICAgICBpZiAocHJvcFZhbHVlID09IG51bGwp
IHsKKyAgICAgICAgY29udGludWU7CisgICAgICB9CisgICAgICBpZiAocmVnaXN0cmF0aW9uTmFt
ZU1vZHVsZXMuaGFzT3duUHJvcGVydHkocHJvcEtleSkpIHsKKyAgICAgICAgaWYgKHByb3BWYWx1
ZSkgeworICAgICAgICAgIGVucXVldWVQdXRMaXN0ZW5lcih0aGlzLCBwcm9wS2V5LCBwcm9wVmFs
dWUsIHRyYW5zYWN0aW9uKTsKKyAgICAgICAgfQorICAgICAgfSBlbHNlIHsKKyAgICAgICAgaWYg
KHByb3BLZXkgPT09IFNUWUxFKSB7CisgICAgICAgICAgaWYgKHByb3BWYWx1ZSkgeworICAgICAg
ICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAg
ICAgICAgICAgLy8gU2VlIGBfdXBkYXRlRE9NUHJvcGVydGllc2AuIHN0eWxlIGJsb2NrCisgICAg
ICAgICAgICAgIHRoaXMuX3ByZXZpb3VzU3R5bGUgPSBwcm9wVmFsdWU7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBwcm9wVmFsdWUgPSB0aGlzLl9wcmV2aW91c1N0eWxlQ29weSA9IF9hc3Np
Z24oe30sIHByb3BzLnN0eWxlKTsKKyAgICAgICAgICB9CisgICAgICAgICAgcHJvcFZhbHVlID0g
Q1NTUHJvcGVydHlPcGVyYXRpb25zLmNyZWF0ZU1hcmt1cEZvclN0eWxlcyhwcm9wVmFsdWUsIHRo
aXMpOworICAgICAgICB9CisgICAgICAgIHZhciBtYXJrdXAgPSBudWxsOworICAgICAgICBpZiAo
dGhpcy5fdGFnICE9IG51bGwgJiYgaXNDdXN0b21Db21wb25lbnQodGhpcy5fdGFnLCBwcm9wcykp
IHsKKyAgICAgICAgICBpZiAoIVJFU0VSVkVEX1BST1BTLmhhc093blByb3BlcnR5KHByb3BLZXkp
KSB7CisgICAgICAgICAgICBtYXJrdXAgPSBET01Qcm9wZXJ0eU9wZXJhdGlvbnMuY3JlYXRlTWFy
a3VwRm9yQ3VzdG9tQXR0cmlidXRlKHByb3BLZXksIHByb3BWYWx1ZSk7CisgICAgICAgICAgfQor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgIG1hcmt1cCA9IERPTVByb3BlcnR5T3BlcmF0aW9u
cy5jcmVhdGVNYXJrdXBGb3JQcm9wZXJ0eShwcm9wS2V5LCBwcm9wVmFsdWUpOworICAgICAgICB9
CisgICAgICAgIGlmIChtYXJrdXApIHsKKyAgICAgICAgICByZXQgKz0gJyAnICsgbWFya3VwOwor
ICAgICAgICB9CisgICAgICB9CisgICAgfQorCisgICAgLy8gRm9yIHN0YXRpYyBwYWdlcywgbm8g
bmVlZCB0byBwdXQgUmVhY3QgSUQgYW5kIGNoZWNrc3VtLiBTYXZlcyBsb3RzIG9mCisgICAgLy8g
Ynl0ZXMuCisgICAgaWYgKHRyYW5zYWN0aW9uLnJlbmRlclRvU3RhdGljTWFya3VwKSB7CisgICAg
ICByZXR1cm4gcmV0OworICAgIH0KKworICAgIGlmICghdGhpcy5faG9zdFBhcmVudCkgeworICAg
ICAgcmV0ICs9ICcgJyArIERPTVByb3BlcnR5T3BlcmF0aW9ucy5jcmVhdGVNYXJrdXBGb3JSb290
KCk7CisgICAgfQorICAgIHJldCArPSAnICcgKyBET01Qcm9wZXJ0eU9wZXJhdGlvbnMuY3JlYXRl
TWFya3VwRm9ySUQodGhpcy5fZG9tSUQpOworICAgIHJldHVybiByZXQ7CisgIH0sCisKKyAgLyoq
CisgICAqIENyZWF0ZXMgbWFya3VwIGZvciB0aGUgY29udGVudCBiZXR3ZWVuIHRoZSB0YWdzLgor
ICAgKgorICAgKiBAcHJpdmF0ZQorICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rp
b258UmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb24KKyAgICogQHBh
cmFtIHtvYmplY3R9IHByb3BzCisgICAqIEBwYXJhbSB7b2JqZWN0fSBjb250ZXh0CisgICAqIEBy
ZXR1cm4ge3N0cmluZ30gQ29udGVudCBtYXJrdXAuCisgICAqLworICBfY3JlYXRlQ29udGVudE1h
cmt1cDogZnVuY3Rpb24gKHRyYW5zYWN0aW9uLCBwcm9wcywgY29udGV4dCkgeworICAgIHZhciBy
ZXQgPSAnJzsKKworICAgIC8vIEludGVudGlvbmFsIHVzZSBvZiAhPSB0byBhdm9pZCBjYXRjaGlu
ZyB6ZXJvL2ZhbHNlLgorICAgIHZhciBpbm5lckhUTUwgPSBwcm9wcy5kYW5nZXJvdXNseVNldElu
bmVySFRNTDsKKyAgICBpZiAoaW5uZXJIVE1MICE9IG51bGwpIHsKKyAgICAgIGlmIChpbm5lckhU
TUwuX19odG1sICE9IG51bGwpIHsKKyAgICAgICAgcmV0ID0gaW5uZXJIVE1MLl9faHRtbDsKKyAg
ICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgdmFyIGNvbnRlbnRUb1VzZSA9IENPTlRFTlRfVFlQ
RVNbdHlwZW9mIHByb3BzLmNoaWxkcmVuXSA/IHByb3BzLmNoaWxkcmVuIDogbnVsbDsKKyAgICAg
IHZhciBjaGlsZHJlblRvVXNlID0gY29udGVudFRvVXNlICE9IG51bGwgPyBudWxsIDogcHJvcHMu
Y2hpbGRyZW47CisgICAgICBpZiAoY29udGVudFRvVXNlICE9IG51bGwpIHsKKyAgICAgICAgLy8g
VE9ETzogVmFsaWRhdGUgdGhhdCB0ZXh0IGlzIGFsbG93ZWQgYXMgYSBjaGlsZCBvZiB0aGlzIG5v
ZGUKKyAgICAgICAgcmV0ID0gZXNjYXBlVGV4dENvbnRlbnRGb3JCcm93c2VyKGNvbnRlbnRUb1Vz
ZSk7CisgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7
CisgICAgICAgICAgc2V0QW5kVmFsaWRhdGVDb250ZW50Q2hpbGREZXYuY2FsbCh0aGlzLCBjb250
ZW50VG9Vc2UpOworICAgICAgICB9CisgICAgICB9IGVsc2UgaWYgKGNoaWxkcmVuVG9Vc2UgIT0g
bnVsbCkgeworICAgICAgICB2YXIgbW91bnRJbWFnZXMgPSB0aGlzLm1vdW50Q2hpbGRyZW4oY2hp
bGRyZW5Ub1VzZSwgdHJhbnNhY3Rpb24sIGNvbnRleHQpOworICAgICAgICByZXQgPSBtb3VudElt
YWdlcy5qb2luKCcnKTsKKyAgICAgIH0KKyAgICB9CisgICAgaWYgKG5ld2xpbmVFYXRpbmdUYWdz
W3RoaXMuX3RhZ10gJiYgcmV0LmNoYXJBdCgwKSA9PT0gJ1xuJykgeworICAgICAgLy8gdGV4dC9o
dG1sIGlnbm9yZXMgdGhlIGZpcnN0IGNoYXJhY3RlciBpbiB0aGVzZSB0YWdzIGlmIGl0J3MgYSBu
ZXdsaW5lCisgICAgICAvLyBQcmVmZXIgdG8gYnJlYWsgYXBwbGljYXRpb24veG1sIG92ZXIgdGV4
dC9odG1sIChmb3Igbm93KSBieSBhZGRpbmcKKyAgICAgIC8vIGEgbmV3bGluZSBzcGVjaWZpY2Fs
bHkgdG8gZ2V0IGVhdGVuIGJ5IHRoZSBwYXJzZXIuIChBbHRlcm5hdGVseSBmb3IKKyAgICAgIC8v
IHRleHRhcmVhcywgcmVwbGFjaW5nICJeXG4iIHdpdGggIlxyXG4iIGRvZXNuJ3QgZ2V0IGVhdGVu
LCBhbmQgdGhlIGZpcnN0CisgICAgICAvLyBcciBpcyBub3JtYWxpemVkIG91dCBieSBIVE1MVGV4
dEFyZWFFbGVtZW50I3ZhbHVlLikKKyAgICAgIC8vIFNlZTogPGh0dHA6Ly93d3cudzMub3JnL1RS
L2h0bWwtcG9seWdsb3QvI25ld2xpbmVzLWluLXRleHRhcmVhLWFuZC1wcmU+CisgICAgICAvLyBT
ZWU6IDxodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS9zeW50YXguaHRtbCNlbGVtZW50LXJlc3Ry
aWN0aW9ucz4KKyAgICAgIC8vIFNlZTogPGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw1L3N5bnRh
eC5odG1sI25ld2xpbmVzPgorICAgICAgLy8gU2VlOiBQYXJzaW5nIG9mICJ0ZXh0YXJlYSIgImxp
c3RpbmciIGFuZCAicHJlIiBlbGVtZW50cworICAgICAgLy8gIGZyb20gPGh0dHA6Ly93d3cudzMu
b3JnL1RSL2h0bWw1L3N5bnRheC5odG1sI3BhcnNpbmctbWFpbi1pbmJvZHk+CisgICAgICByZXR1
cm4gJ1xuJyArIHJldDsKKyAgICB9IGVsc2UgeworICAgICAgcmV0dXJuIHJldDsKKyAgICB9Cisg
IH0sCisKKyAgX2NyZWF0ZUluaXRpYWxDaGlsZHJlbjogZnVuY3Rpb24gKHRyYW5zYWN0aW9uLCBw
cm9wcywgY29udGV4dCwgbGF6eVRyZWUpIHsKKyAgICAvLyBJbnRlbnRpb25hbCB1c2Ugb2YgIT0g
dG8gYXZvaWQgY2F0Y2hpbmcgemVyby9mYWxzZS4KKyAgICB2YXIgaW5uZXJIVE1MID0gcHJvcHMu
ZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw7CisgICAgaWYgKGlubmVySFRNTCAhPSBudWxsKSB7Cisg
ICAgICBpZiAoaW5uZXJIVE1MLl9faHRtbCAhPSBudWxsKSB7CisgICAgICAgIERPTUxhenlUcmVl
LnF1ZXVlSFRNTChsYXp5VHJlZSwgaW5uZXJIVE1MLl9faHRtbCk7CisgICAgICB9CisgICAgfSBl
bHNlIHsKKyAgICAgIHZhciBjb250ZW50VG9Vc2UgPSBDT05URU5UX1RZUEVTW3R5cGVvZiBwcm9w
cy5jaGlsZHJlbl0gPyBwcm9wcy5jaGlsZHJlbiA6IG51bGw7CisgICAgICB2YXIgY2hpbGRyZW5U
b1VzZSA9IGNvbnRlbnRUb1VzZSAhPSBudWxsID8gbnVsbCA6IHByb3BzLmNoaWxkcmVuOworICAg
ICAgaWYgKGNvbnRlbnRUb1VzZSAhPSBudWxsKSB7CisgICAgICAgIC8vIFRPRE86IFZhbGlkYXRl
IHRoYXQgdGV4dCBpcyBhbGxvd2VkIGFzIGEgY2hpbGQgb2YgdGhpcyBub2RlCisgICAgICAgIGlm
IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAgICAgc2V0
QW5kVmFsaWRhdGVDb250ZW50Q2hpbGREZXYuY2FsbCh0aGlzLCBjb250ZW50VG9Vc2UpOworICAg
ICAgICB9CisgICAgICAgIERPTUxhenlUcmVlLnF1ZXVlVGV4dChsYXp5VHJlZSwgY29udGVudFRv
VXNlKTsKKyAgICAgIH0gZWxzZSBpZiAoY2hpbGRyZW5Ub1VzZSAhPSBudWxsKSB7CisgICAgICAg
IHZhciBtb3VudEltYWdlcyA9IHRoaXMubW91bnRDaGlsZHJlbihjaGlsZHJlblRvVXNlLCB0cmFu
c2FjdGlvbiwgY29udGV4dCk7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbW91bnRJbWFn
ZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICBET01MYXp5VHJlZS5xdWV1ZUNoaWxkKGxhenlU
cmVlLCBtb3VudEltYWdlc1tpXSk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgIH0sCisK
KyAgLyoqCisgICAqIFJlY2VpdmVzIGEgbmV4dCBlbGVtZW50IGFuZCB1cGRhdGVzIHRoZSBjb21w
b25lbnQuCisgICAqCisgICAqIEBpbnRlcm5hbAorICAgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0g
bmV4dEVsZW1lbnQKKyAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufFJlYWN0
U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uCisgICAqIEBwYXJhbSB7b2Jq
ZWN0fSBjb250ZXh0CisgICAqLworICByZWNlaXZlQ29tcG9uZW50OiBmdW5jdGlvbiAobmV4dEVs
ZW1lbnQsIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7CisgICAgdmFyIHByZXZFbGVtZW50ID0gdGhp
cy5fY3VycmVudEVsZW1lbnQ7CisgICAgdGhpcy5fY3VycmVudEVsZW1lbnQgPSBuZXh0RWxlbWVu
dDsKKyAgICB0aGlzLnVwZGF0ZUNvbXBvbmVudCh0cmFuc2FjdGlvbiwgcHJldkVsZW1lbnQsIG5l
eHRFbGVtZW50LCBjb250ZXh0KTsKKyAgfSwKKworICAvKioKKyAgICogVXBkYXRlcyBhIERPTSBj
b21wb25lbnQgYWZ0ZXIgaXQgaGFzIGFscmVhZHkgYmVlbiBhbGxvY2F0ZWQgYW5kCisgICAqIGF0
dGFjaGVkIHRvIHRoZSBET00uIFJlY29uY2lsZXMgdGhlIHJvb3QgRE9NIG5vZGUsIHRoZW4gcmVj
dXJzZXMuCisgICAqCisgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJh
bnNhY3Rpb24KKyAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IHByZXZFbGVtZW50CisgICAqIEBw
YXJhbSB7UmVhY3RFbGVtZW50fSBuZXh0RWxlbWVudAorICAgKiBAaW50ZXJuYWwKKyAgICogQG92
ZXJyaWRhYmxlCisgICAqLworICB1cGRhdGVDb21wb25lbnQ6IGZ1bmN0aW9uICh0cmFuc2FjdGlv
biwgcHJldkVsZW1lbnQsIG5leHRFbGVtZW50LCBjb250ZXh0KSB7CisgICAgdmFyIGxhc3RQcm9w
cyA9IHByZXZFbGVtZW50LnByb3BzOworICAgIHZhciBuZXh0UHJvcHMgPSB0aGlzLl9jdXJyZW50
RWxlbWVudC5wcm9wczsKKworICAgIHN3aXRjaCAodGhpcy5fdGFnKSB7CisgICAgICBjYXNlICdp
bnB1dCc6CisgICAgICAgIGxhc3RQcm9wcyA9IFJlYWN0RE9NSW5wdXQuZ2V0SG9zdFByb3BzKHRo
aXMsIGxhc3RQcm9wcyk7CisgICAgICAgIG5leHRQcm9wcyA9IFJlYWN0RE9NSW5wdXQuZ2V0SG9z
dFByb3BzKHRoaXMsIG5leHRQcm9wcyk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAnb3B0
aW9uJzoKKyAgICAgICAgbGFzdFByb3BzID0gUmVhY3RET01PcHRpb24uZ2V0SG9zdFByb3BzKHRo
aXMsIGxhc3RQcm9wcyk7CisgICAgICAgIG5leHRQcm9wcyA9IFJlYWN0RE9NT3B0aW9uLmdldEhv
c3RQcm9wcyh0aGlzLCBuZXh0UHJvcHMpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJ3Nl
bGVjdCc6CisgICAgICAgIGxhc3RQcm9wcyA9IFJlYWN0RE9NU2VsZWN0LmdldEhvc3RQcm9wcyh0
aGlzLCBsYXN0UHJvcHMpOworICAgICAgICBuZXh0UHJvcHMgPSBSZWFjdERPTVNlbGVjdC5nZXRI
b3N0UHJvcHModGhpcywgbmV4dFByb3BzKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICd0
ZXh0YXJlYSc6CisgICAgICAgIGxhc3RQcm9wcyA9IFJlYWN0RE9NVGV4dGFyZWEuZ2V0SG9zdFBy
b3BzKHRoaXMsIGxhc3RQcm9wcyk7CisgICAgICAgIG5leHRQcm9wcyA9IFJlYWN0RE9NVGV4dGFy
ZWEuZ2V0SG9zdFByb3BzKHRoaXMsIG5leHRQcm9wcyk7CisgICAgICAgIGJyZWFrOworICAgIH0K
KworICAgIGFzc2VydFZhbGlkUHJvcHModGhpcywgbmV4dFByb3BzKTsKKyAgICB0aGlzLl91cGRh
dGVET01Qcm9wZXJ0aWVzKGxhc3RQcm9wcywgbmV4dFByb3BzLCB0cmFuc2FjdGlvbik7CisgICAg
dGhpcy5fdXBkYXRlRE9NQ2hpbGRyZW4obGFzdFByb3BzLCBuZXh0UHJvcHMsIHRyYW5zYWN0aW9u
LCBjb250ZXh0KTsKKworICAgIHN3aXRjaCAodGhpcy5fdGFnKSB7CisgICAgICBjYXNlICdpbnB1
dCc6CisgICAgICAgIC8vIFVwZGF0ZSB0aGUgd3JhcHBlciBhcm91bmQgaW5wdXRzICphZnRlciog
dXBkYXRpbmcgcHJvcHMuIFRoaXMgaGFzIHRvCisgICAgICAgIC8vIGhhcHBlbiBhZnRlciBgX3Vw
ZGF0ZURPTVByb3BlcnRpZXNgLiBPdGhlcndpc2UgSFRNTDUgaW5wdXQgdmFsaWRhdGlvbnMKKyAg
ICAgICAgLy8gcmFpc2Ugd2FybmluZ3MgYW5kIHByZXZlbnQgdGhlIG5ldyB2YWx1ZSBmcm9tIGJl
aW5nIGFzc2lnbmVkLgorICAgICAgICBSZWFjdERPTUlucHV0LnVwZGF0ZVdyYXBwZXIodGhpcyk7
CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAndGV4dGFyZWEnOgorICAgICAgICBSZWFjdERP
TVRleHRhcmVhLnVwZGF0ZVdyYXBwZXIodGhpcyk7CisgICAgICAgIGJyZWFrOworICAgICAgY2Fz
ZSAnc2VsZWN0JzoKKyAgICAgICAgLy8gPHNlbGVjdD4gdmFsdWUgdXBkYXRlIG5lZWRzIHRvIG9j
Y3VyIGFmdGVyIDxvcHRpb24+IGNoaWxkcmVuCisgICAgICAgIC8vIHJlY29uY2lsaWF0aW9uCisg
ICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUocG9zdFVwZGF0
ZVNlbGVjdFdyYXBwZXIsIHRoaXMpOworICAgICAgICBicmVhazsKKyAgICB9CisgIH0sCisKKyAg
LyoqCisgICAqIFJlY29uY2lsZXMgdGhlIHByb3BlcnRpZXMgYnkgZGV0ZWN0aW5nIGRpZmZlcmVu
Y2VzIGluIHByb3BlcnR5IHZhbHVlcyBhbmQKKyAgICogdXBkYXRpbmcgdGhlIERPTSBhcyBuZWNl
c3NhcnkuIFRoaXMgZnVuY3Rpb24gaXMgcHJvYmFibHkgdGhlIHNpbmdsZSBtb3N0CisgICAqIGNy
aXRpY2FsIHBhdGggZm9yIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbi4KKyAgICoKKyAgICogVE9E
TzogQmVuY2htYXJrIHdoZXRoZXIgY2hlY2tpbmcgZm9yIGNoYW5nZWQgdmFsdWVzIGluIG1lbW9y
eSBhY3R1YWxseQorICAgKiAgICAgICBpbXByb3ZlcyBwZXJmb3JtYW5jZSAoZXNwZWNpYWxseSBz
dGF0aWNhbGx5IHBvc2l0aW9uZWQgZWxlbWVudHMpLgorICAgKiBUT0RPOiBCZW5jaG1hcmsgdGhl
IGVmZmVjdHMgb2YgcHV0dGluZyB0aGlzIGF0IHRoZSB0b3Agc2luY2UgOTklIG9mIHByb3BzCisg
ICAqICAgICAgIGRvIG5vdCBjaGFuZ2UgZm9yIGEgZ2l2ZW4gcmVjb25jaWxpYXRpb24uCisgICAq
IFRPRE86IEJlbmNobWFyayBhcmVhcyB0aGF0IGNhbiBiZSBpbXByb3ZlZCB3aXRoIGNhY2hpbmcu
CisgICAqCisgICAqIEBwcml2YXRlCisgICAqIEBwYXJhbSB7b2JqZWN0fSBsYXN0UHJvcHMKKyAg
ICogQHBhcmFtIHtvYmplY3R9IG5leHRQcm9wcworICAgKiBAcGFyYW0gez9ET01FbGVtZW50fSBu
b2RlCisgICAqLworICBfdXBkYXRlRE9NUHJvcGVydGllczogZnVuY3Rpb24gKGxhc3RQcm9wcywg
bmV4dFByb3BzLCB0cmFuc2FjdGlvbikgeworICAgIHZhciBwcm9wS2V5OworICAgIHZhciBzdHls
ZU5hbWU7CisgICAgdmFyIHN0eWxlVXBkYXRlczsKKyAgICBmb3IgKHByb3BLZXkgaW4gbGFzdFBy
b3BzKSB7CisgICAgICBpZiAobmV4dFByb3BzLmhhc093blByb3BlcnR5KHByb3BLZXkpIHx8ICFs
YXN0UHJvcHMuaGFzT3duUHJvcGVydHkocHJvcEtleSkgfHwgbGFzdFByb3BzW3Byb3BLZXldID09
IG51bGwpIHsKKyAgICAgICAgY29udGludWU7CisgICAgICB9CisgICAgICBpZiAocHJvcEtleSA9
PT0gU1RZTEUpIHsKKyAgICAgICAgdmFyIGxhc3RTdHlsZSA9IHRoaXMuX3ByZXZpb3VzU3R5bGVD
b3B5OworICAgICAgICBmb3IgKHN0eWxlTmFtZSBpbiBsYXN0U3R5bGUpIHsKKyAgICAgICAgICBp
ZiAobGFzdFN0eWxlLmhhc093blByb3BlcnR5KHN0eWxlTmFtZSkpIHsKKyAgICAgICAgICAgIHN0
eWxlVXBkYXRlcyA9IHN0eWxlVXBkYXRlcyB8fCB7fTsKKyAgICAgICAgICAgIHN0eWxlVXBkYXRl
c1tzdHlsZU5hbWVdID0gJyc7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHRoaXMu
X3ByZXZpb3VzU3R5bGVDb3B5ID0gbnVsbDsKKyAgICAgIH0gZWxzZSBpZiAocmVnaXN0cmF0aW9u
TmFtZU1vZHVsZXMuaGFzT3duUHJvcGVydHkocHJvcEtleSkpIHsKKyAgICAgICAgaWYgKGxhc3RQ
cm9wc1twcm9wS2V5XSkgeworICAgICAgICAgIC8vIE9ubHkgY2FsbCBkZWxldGVMaXN0ZW5lciBp
ZiB0aGVyZSB3YXMgYSBsaXN0ZW5lciBwcmV2aW91c2x5IG9yCisgICAgICAgICAgLy8gZWxzZSB3
aWxsRGVsZXRlTGlzdGVuZXIgZ2V0cyBjYWxsZWQgd2hlbiB0aGVyZSB3YXNuJ3QgYWN0dWFsbHkg
YQorICAgICAgICAgIC8vIGxpc3RlbmVyIChlLmcuLCBvbkNsaWNrPXtudWxsfSkKKyAgICAgICAg
ICBkZWxldGVMaXN0ZW5lcih0aGlzLCBwcm9wS2V5KTsKKyAgICAgICAgfQorICAgICAgfSBlbHNl
IGlmIChpc0N1c3RvbUNvbXBvbmVudCh0aGlzLl90YWcsIGxhc3RQcm9wcykpIHsKKyAgICAgICAg
aWYgKCFSRVNFUlZFRF9QUk9QUy5oYXNPd25Qcm9wZXJ0eShwcm9wS2V5KSkgeworICAgICAgICAg
IERPTVByb3BlcnR5T3BlcmF0aW9ucy5kZWxldGVWYWx1ZUZvckF0dHJpYnV0ZShnZXROb2RlKHRo
aXMpLCBwcm9wS2V5KTsKKyAgICAgICAgfQorICAgICAgfSBlbHNlIGlmIChET01Qcm9wZXJ0eS5w
cm9wZXJ0aWVzW3Byb3BLZXldIHx8IERPTVByb3BlcnR5LmlzQ3VzdG9tQXR0cmlidXRlKHByb3BL
ZXkpKSB7CisgICAgICAgIERPTVByb3BlcnR5T3BlcmF0aW9ucy5kZWxldGVWYWx1ZUZvclByb3Bl
cnR5KGdldE5vZGUodGhpcyksIHByb3BLZXkpOworICAgICAgfQorICAgIH0KKyAgICBmb3IgKHBy
b3BLZXkgaW4gbmV4dFByb3BzKSB7CisgICAgICB2YXIgbmV4dFByb3AgPSBuZXh0UHJvcHNbcHJv
cEtleV07CisgICAgICB2YXIgbGFzdFByb3AgPSBwcm9wS2V5ID09PSBTVFlMRSA/IHRoaXMuX3By
ZXZpb3VzU3R5bGVDb3B5IDogbGFzdFByb3BzICE9IG51bGwgPyBsYXN0UHJvcHNbcHJvcEtleV0g
OiB1bmRlZmluZWQ7CisgICAgICBpZiAoIW5leHRQcm9wcy5oYXNPd25Qcm9wZXJ0eShwcm9wS2V5
KSB8fCBuZXh0UHJvcCA9PT0gbGFzdFByb3AgfHwgbmV4dFByb3AgPT0gbnVsbCAmJiBsYXN0UHJv
cCA9PSBudWxsKSB7CisgICAgICAgIGNvbnRpbnVlOworICAgICAgfQorICAgICAgaWYgKHByb3BL
ZXkgPT09IFNUWUxFKSB7CisgICAgICAgIGlmIChuZXh0UHJvcCkgeworICAgICAgICAgIGlmIChw
cm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAgICAgICBjaGVj
a0FuZFdhcm5Gb3JNdXRhdGVkU3R5bGUodGhpcy5fcHJldmlvdXNTdHlsZUNvcHksIHRoaXMuX3By
ZXZpb3VzU3R5bGUsIHRoaXMpOworICAgICAgICAgICAgdGhpcy5fcHJldmlvdXNTdHlsZSA9IG5l
eHRQcm9wOworICAgICAgICAgIH0KKyAgICAgICAgICBuZXh0UHJvcCA9IHRoaXMuX3ByZXZpb3Vz
U3R5bGVDb3B5ID0gX2Fzc2lnbih7fSwgbmV4dFByb3ApOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgIHRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5ID0gbnVsbDsKKyAgICAgICAgfQorICAgICAg
ICBpZiAobGFzdFByb3ApIHsKKyAgICAgICAgICAvLyBVbnNldCBzdHlsZXMgb24gYGxhc3RQcm9w
YCBidXQgbm90IG9uIGBuZXh0UHJvcGAuCisgICAgICAgICAgZm9yIChzdHlsZU5hbWUgaW4gbGFz
dFByb3ApIHsKKyAgICAgICAgICAgIGlmIChsYXN0UHJvcC5oYXNPd25Qcm9wZXJ0eShzdHlsZU5h
bWUpICYmICghbmV4dFByb3AgfHwgIW5leHRQcm9wLmhhc093blByb3BlcnR5KHN0eWxlTmFtZSkp
KSB7CisgICAgICAgICAgICAgIHN0eWxlVXBkYXRlcyA9IHN0eWxlVXBkYXRlcyB8fCB7fTsKKyAg
ICAgICAgICAgICAgc3R5bGVVcGRhdGVzW3N0eWxlTmFtZV0gPSAnJzsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICB9CisgICAgICAgICAgLy8gVXBkYXRlIHN0eWxlcyB0aGF0IGNoYW5nZWQgc2lu
Y2UgYGxhc3RQcm9wYC4KKyAgICAgICAgICBmb3IgKHN0eWxlTmFtZSBpbiBuZXh0UHJvcCkgewor
ICAgICAgICAgICAgaWYgKG5leHRQcm9wLmhhc093blByb3BlcnR5KHN0eWxlTmFtZSkgJiYgbGFz
dFByb3Bbc3R5bGVOYW1lXSAhPT0gbmV4dFByb3Bbc3R5bGVOYW1lXSkgeworICAgICAgICAgICAg
ICBzdHlsZVVwZGF0ZXMgPSBzdHlsZVVwZGF0ZXMgfHwge307CisgICAgICAgICAgICAgIHN0eWxl
VXBkYXRlc1tzdHlsZU5hbWVdID0gbmV4dFByb3Bbc3R5bGVOYW1lXTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgLy8gUmVsaWVzIG9uIGB1
cGRhdGVTdHlsZXNCeUlEYCBub3QgbXV0YXRpbmcgYHN0eWxlVXBkYXRlc2AuCisgICAgICAgICAg
c3R5bGVVcGRhdGVzID0gbmV4dFByb3A7CisgICAgICAgIH0KKyAgICAgIH0gZWxzZSBpZiAocmVn
aXN0cmF0aW9uTmFtZU1vZHVsZXMuaGFzT3duUHJvcGVydHkocHJvcEtleSkpIHsKKyAgICAgICAg
aWYgKG5leHRQcm9wKSB7CisgICAgICAgICAgZW5xdWV1ZVB1dExpc3RlbmVyKHRoaXMsIHByb3BL
ZXksIG5leHRQcm9wLCB0cmFuc2FjdGlvbik7CisgICAgICAgIH0gZWxzZSBpZiAobGFzdFByb3Ap
IHsKKyAgICAgICAgICBkZWxldGVMaXN0ZW5lcih0aGlzLCBwcm9wS2V5KTsKKyAgICAgICAgfQor
ICAgICAgfSBlbHNlIGlmIChpc0N1c3RvbUNvbXBvbmVudCh0aGlzLl90YWcsIG5leHRQcm9wcykp
IHsKKyAgICAgICAgaWYgKCFSRVNFUlZFRF9QUk9QUy5oYXNPd25Qcm9wZXJ0eShwcm9wS2V5KSkg
eworICAgICAgICAgIERPTVByb3BlcnR5T3BlcmF0aW9ucy5zZXRWYWx1ZUZvckF0dHJpYnV0ZShn
ZXROb2RlKHRoaXMpLCBwcm9wS2V5LCBuZXh0UHJvcCk7CisgICAgICAgIH0KKyAgICAgIH0gZWxz
ZSBpZiAoRE9NUHJvcGVydHkucHJvcGVydGllc1twcm9wS2V5XSB8fCBET01Qcm9wZXJ0eS5pc0N1
c3RvbUF0dHJpYnV0ZShwcm9wS2V5KSkgeworICAgICAgICB2YXIgbm9kZSA9IGdldE5vZGUodGhp
cyk7CisgICAgICAgIC8vIElmIHdlJ3JlIHVwZGF0aW5nIHRvIG51bGwgb3IgdW5kZWZpbmVkLCB3
ZSBzaG91bGQgcmVtb3ZlIHRoZSBwcm9wZXJ0eQorICAgICAgICAvLyBmcm9tIHRoZSBET00gbm9k
ZSBpbnN0ZWFkIG9mIGluYWR2ZXJ0ZW50bHkgc2V0dGluZyB0byBhIHN0cmluZy4gVGhpcworICAg
ICAgICAvLyBicmluZ3MgdXMgaW4gbGluZSB3aXRoIHRoZSBzYW1lIGJlaGF2aW9yIHdlIGhhdmUg
b24gaW5pdGlhbCByZW5kZXIuCisgICAgICAgIGlmIChuZXh0UHJvcCAhPSBudWxsKSB7CisgICAg
ICAgICAgRE9NUHJvcGVydHlPcGVyYXRpb25zLnNldFZhbHVlRm9yUHJvcGVydHkobm9kZSwgcHJv
cEtleSwgbmV4dFByb3ApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIERPTVByb3BlcnR5
T3BlcmF0aW9ucy5kZWxldGVWYWx1ZUZvclByb3BlcnR5KG5vZGUsIHByb3BLZXkpOworICAgICAg
ICB9CisgICAgICB9CisgICAgfQorICAgIGlmIChzdHlsZVVwZGF0ZXMpIHsKKyAgICAgIENTU1By
b3BlcnR5T3BlcmF0aW9ucy5zZXRWYWx1ZUZvclN0eWxlcyhnZXROb2RlKHRoaXMpLCBzdHlsZVVw
ZGF0ZXMsIHRoaXMpOworICAgIH0KKyAgfSwKKworICAvKioKKyAgICogUmVjb25jaWxlcyB0aGUg
Y2hpbGRyZW4gd2l0aCB0aGUgdmFyaW91cyBwcm9wZXJ0aWVzIHRoYXQgYWZmZWN0IHRoZQorICAg
KiBjaGlsZHJlbiBjb250ZW50LgorICAgKgorICAgKiBAcGFyYW0ge29iamVjdH0gbGFzdFByb3Bz
CisgICAqIEBwYXJhbSB7b2JqZWN0fSBuZXh0UHJvcHMKKyAgICogQHBhcmFtIHtSZWFjdFJlY29u
Y2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvbgorICAgKiBAcGFyYW0ge29iamVjdH0gY29udGV4
dAorICAgKi8KKyAgX3VwZGF0ZURPTUNoaWxkcmVuOiBmdW5jdGlvbiAobGFzdFByb3BzLCBuZXh0
UHJvcHMsIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7CisgICAgdmFyIGxhc3RDb250ZW50ID0gQ09O
VEVOVF9UWVBFU1t0eXBlb2YgbGFzdFByb3BzLmNoaWxkcmVuXSA/IGxhc3RQcm9wcy5jaGlsZHJl
biA6IG51bGw7CisgICAgdmFyIG5leHRDb250ZW50ID0gQ09OVEVOVF9UWVBFU1t0eXBlb2YgbmV4
dFByb3BzLmNoaWxkcmVuXSA/IG5leHRQcm9wcy5jaGlsZHJlbiA6IG51bGw7CisKKyAgICB2YXIg
bGFzdEh0bWwgPSBsYXN0UHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgJiYgbGFzdFByb3Bz
LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MLl9faHRtbDsKKyAgICB2YXIgbmV4dEh0bWwgPSBuZXh0
UHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgJiYgbmV4dFByb3BzLmRhbmdlcm91c2x5U2V0
SW5uZXJIVE1MLl9faHRtbDsKKworICAgIC8vIE5vdGUgdGhlIHVzZSBvZiBgIT1gIHdoaWNoIGNo
ZWNrcyBmb3IgbnVsbCBvciB1bmRlZmluZWQuCisgICAgdmFyIGxhc3RDaGlsZHJlbiA9IGxhc3RD
b250ZW50ICE9IG51bGwgPyBudWxsIDogbGFzdFByb3BzLmNoaWxkcmVuOworICAgIHZhciBuZXh0
Q2hpbGRyZW4gPSBuZXh0Q29udGVudCAhPSBudWxsID8gbnVsbCA6IG5leHRQcm9wcy5jaGlsZHJl
bjsKKworICAgIC8vIElmIHdlJ3JlIHN3aXRjaGluZyBmcm9tIGNoaWxkcmVuIHRvIGNvbnRlbnQv
aHRtbCBvciB2aWNlIHZlcnNhLCByZW1vdmUKKyAgICAvLyB0aGUgb2xkIGNvbnRlbnQKKyAgICB2
YXIgbGFzdEhhc0NvbnRlbnRPckh0bWwgPSBsYXN0Q29udGVudCAhPSBudWxsIHx8IGxhc3RIdG1s
ICE9IG51bGw7CisgICAgdmFyIG5leHRIYXNDb250ZW50T3JIdG1sID0gbmV4dENvbnRlbnQgIT0g
bnVsbCB8fCBuZXh0SHRtbCAhPSBudWxsOworICAgIGlmIChsYXN0Q2hpbGRyZW4gIT0gbnVsbCAm
JiBuZXh0Q2hpbGRyZW4gPT0gbnVsbCkgeworICAgICAgdGhpcy51cGRhdGVDaGlsZHJlbihudWxs
LCB0cmFuc2FjdGlvbiwgY29udGV4dCk7CisgICAgfSBlbHNlIGlmIChsYXN0SGFzQ29udGVudE9y
SHRtbCAmJiAhbmV4dEhhc0NvbnRlbnRPckh0bWwpIHsKKyAgICAgIHRoaXMudXBkYXRlVGV4dENv
bnRlbnQoJycpOworICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlv
bicpIHsKKyAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uU2V0Q2hpbGRy
ZW4odGhpcy5fZGVidWdJRCwgW10pOworICAgICAgfQorICAgIH0KKworICAgIGlmIChuZXh0Q29u
dGVudCAhPSBudWxsKSB7CisgICAgICBpZiAobGFzdENvbnRlbnQgIT09IG5leHRDb250ZW50KSB7
CisgICAgICAgIHRoaXMudXBkYXRlVGV4dENvbnRlbnQoJycgKyBuZXh0Q29udGVudCk7CisgICAg
ICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAg
ICAgc2V0QW5kVmFsaWRhdGVDb250ZW50Q2hpbGREZXYuY2FsbCh0aGlzLCBuZXh0Q29udGVudCk7
CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9IGVsc2UgaWYgKG5leHRIdG1sICE9IG51bGwpIHsK
KyAgICAgIGlmIChsYXN0SHRtbCAhPT0gbmV4dEh0bWwpIHsKKyAgICAgICAgdGhpcy51cGRhdGVN
YXJrdXAoJycgKyBuZXh0SHRtbCk7CisgICAgICB9CisgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9E
RV9FTlYgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5k
ZWJ1Z1Rvb2wub25TZXRDaGlsZHJlbih0aGlzLl9kZWJ1Z0lELCBbXSk7CisgICAgICB9CisgICAg
fSBlbHNlIGlmIChuZXh0Q2hpbGRyZW4gIT0gbnVsbCkgeworICAgICAgaWYgKHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICAgc2V0QW5kVmFsaWRhdGVDb250
ZW50Q2hpbGREZXYuY2FsbCh0aGlzLCBudWxsKTsKKyAgICAgIH0KKworICAgICAgdGhpcy51cGRh
dGVDaGlsZHJlbihuZXh0Q2hpbGRyZW4sIHRyYW5zYWN0aW9uLCBjb250ZXh0KTsKKyAgICB9Cisg
IH0sCisKKyAgZ2V0SG9zdE5vZGU6IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gZ2V0Tm9kZSh0
aGlzKTsKKyAgfSwKKworICAvKioKKyAgICogRGVzdHJveXMgYWxsIGV2ZW50IHJlZ2lzdHJhdGlv
bnMgZm9yIHRoaXMgaW5zdGFuY2UuIERvZXMgbm90IHJlbW92ZSBmcm9tCisgICAqIHRoZSBET00u
IFRoYXQgbXVzdCBiZSBkb25lIGJ5IHRoZSBwYXJlbnQuCisgICAqCisgICAqIEBpbnRlcm5hbAor
ICAgKi8KKyAgdW5tb3VudENvbXBvbmVudDogZnVuY3Rpb24gKHNhZmVseSkgeworICAgIHN3aXRj
aCAodGhpcy5fdGFnKSB7CisgICAgICBjYXNlICdhdWRpbyc6CisgICAgICBjYXNlICdmb3JtJzoK
KyAgICAgIGNhc2UgJ2lmcmFtZSc6CisgICAgICBjYXNlICdpbWcnOgorICAgICAgY2FzZSAnbGlu
ayc6CisgICAgICBjYXNlICdvYmplY3QnOgorICAgICAgY2FzZSAnc291cmNlJzoKKyAgICAgIGNh
c2UgJ3ZpZGVvJzoKKyAgICAgICAgdmFyIGxpc3RlbmVycyA9IHRoaXMuX3dyYXBwZXJTdGF0ZS5s
aXN0ZW5lcnM7CisgICAgICAgIGlmIChsaXN0ZW5lcnMpIHsKKyAgICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGxpc3RlbmVycy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgbGlzdGVuZXJz
W2ldLnJlbW92ZSgpOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAg
ICAgIGNhc2UgJ2h0bWwnOgorICAgICAgY2FzZSAnaGVhZCc6CisgICAgICBjYXNlICdib2R5JzoK
KyAgICAgICAgLyoqCisgICAgICAgICAqIENvbXBvbmVudHMgbGlrZSA8aHRtbD4gPGhlYWQ+IGFu
ZCA8Ym9keT4gY2FuJ3QgYmUgcmVtb3ZlZCBvciBhZGRlZAorICAgICAgICAgKiBlYXNpbHkgaW4g
YSBjcm9zcy1icm93c2VyIHdheSwgaG93ZXZlciBpdCdzIHZhbHVhYmxlIHRvIGJlIGFibGUgdG8K
KyAgICAgICAgICogdGFrZSBhZHZhbnRhZ2Ugb2YgUmVhY3QncyByZWNvbmNpbGlhdGlvbiBmb3Ig
c3R5bGluZyBhbmQgPHRpdGxlPgorICAgICAgICAgKiBtYW5hZ2VtZW50LiBTbyB3ZSBqdXN0IGRv
Y3VtZW50IGl0IGFuZCB0aHJvdyBpbiBkYW5nZXJvdXMgY2FzZXMuCisgICAgICAgICAqLworICAg
ICAgICAhZmFsc2UgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52
YXJpYW50KGZhbHNlLCAnPCVzPiB0cmllZCB0byB1bm1vdW50LiBCZWNhdXNlIG9mIGNyb3NzLWJy
b3dzZXIgcXVpcmtzIGl0IGlzIGltcG9zc2libGUgdG8gdW5tb3VudCBzb21lIHRvcC1sZXZlbCBj
b21wb25lbnRzIChlZyA8aHRtbD4sIDxoZWFkPiwgYW5kIDxib2R5PikgcmVsaWFibHkgYW5kIGVm
ZmljaWVudGx5LiBUbyBmaXggdGhpcywgaGF2ZSBhIHNpbmdsZSB0b3AtbGV2ZWwgY29tcG9uZW50
IHRoYXQgbmV2ZXIgdW5tb3VudHMgcmVuZGVyIHRoZXNlIGVsZW1lbnRzLicsIHRoaXMuX3RhZykg
OiBfcHJvZEludmFyaWFudCgnNjYnLCB0aGlzLl90YWcpIDogdm9pZCAwOworICAgICAgICBicmVh
azsKKyAgICB9CisKKyAgICB0aGlzLnVubW91bnRDaGlsZHJlbihzYWZlbHkpOworICAgIFJlYWN0
RE9NQ29tcG9uZW50VHJlZS51bmNhY2hlTm9kZSh0aGlzKTsKKyAgICBFdmVudFBsdWdpbkh1Yi5k
ZWxldGVBbGxMaXN0ZW5lcnModGhpcyk7CisgICAgdGhpcy5fcm9vdE5vZGVJRCA9IDA7CisgICAg
dGhpcy5fZG9tSUQgPSAwOworICAgIHRoaXMuX3dyYXBwZXJTdGF0ZSA9IG51bGw7CisKKyAgICBp
ZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgc2V0QW5k
VmFsaWRhdGVDb250ZW50Q2hpbGREZXYuY2FsbCh0aGlzLCBudWxsKTsKKyAgICB9CisgIH0sCisK
KyAgZ2V0UHVibGljSW5zdGFuY2U6IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gZ2V0Tm9kZSh0
aGlzKTsKKyAgfQorCit9OworCitfYXNzaWduKFJlYWN0RE9NQ29tcG9uZW50LnByb3RvdHlwZSwg
UmVhY3RET01Db21wb25lbnQuTWl4aW4sIFJlYWN0TXVsdGlDaGlsZC5NaXhpbik7CisKK21vZHVs
ZS5leHBvcnRzID0gUmVhY3RET01Db21wb25lbnQ7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9s
aWIvUmVhY3RET01Db21wb25lbnRGbGFncy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9k
dWxlcy9yZWFjdC1kb20vbGliL1JlYWN0RE9NQ29tcG9uZW50RmxhZ3MuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ODRmMmQxOTk0ODhjZTE3ZjgxNWZlYmRkYzY2Yzk3MjdjZGY0OWY4NwotLS0gL2Rldi9udWxsCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0RE9N
Q29tcG9uZW50RmxhZ3MuanMKQEAgLTAsMCArMSwxNyBAQAorLyoqCisgKiBDb3B5cmlnaHQgMjAx
NS1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5z
ZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2Yg
dGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0
cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnku
CisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIFJlYWN0RE9NQ29tcG9uZW50RmxhZ3Mg
PSB7CisgIGhhc0NhY2hlZENoaWxkTm9kZXM6IDEgPDwgMAorfTsKKworbW9kdWxlLmV4cG9ydHMg
PSBSZWFjdERPTUNvbXBvbmVudEZsYWdzOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1Jl
YWN0RE9NQ29tcG9uZW50VHJlZS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9y
ZWFjdC1kb20vbGliL1JlYWN0RE9NQ29tcG9uZW50VHJlZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMjBmZWVm
MmMwN2VlOTM4MzAxMTg2ZWMyNzI3ODhiNGJjNTI4MTBhCi0tLSAvZGV2L251bGwKKysrIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RET01Db21wb25l
bnRUcmVlLmpzCkBAIC0wLDAgKzEsMTg3IEBACisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNl
bnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMg
c291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5k
IGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNv
dXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBi
ZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisg
Ki8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1aXJlKCcuL3Jl
YWN0UHJvZEludmFyaWFudCcpOworCit2YXIgRE9NUHJvcGVydHkgPSByZXF1aXJlKCcuL0RPTVBy
b3BlcnR5Jyk7Cit2YXIgUmVhY3RET01Db21wb25lbnRGbGFncyA9IHJlcXVpcmUoJy4vUmVhY3RE
T01Db21wb25lbnRGbGFncycpOworCit2YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIv
aW52YXJpYW50Jyk7CisKK3ZhciBBVFRSX05BTUUgPSBET01Qcm9wZXJ0eS5JRF9BVFRSSUJVVEVf
TkFNRTsKK3ZhciBGbGFncyA9IFJlYWN0RE9NQ29tcG9uZW50RmxhZ3M7CisKK3ZhciBpbnRlcm5h
bEluc3RhbmNlS2V5ID0gJ19fcmVhY3RJbnRlcm5hbEluc3RhbmNlJCcgKyBNYXRoLnJhbmRvbSgp
LnRvU3RyaW5nKDM2KS5zbGljZSgyKTsKKworLyoqCisgKiBEcmlsbCBkb3duICh0aHJvdWdoIGNv
bXBvc2l0ZXMgYW5kIGVtcHR5IGNvbXBvbmVudHMpIHVudGlsIHdlIGdldCBhIGhvc3Qgb3IKKyAq
IGhvc3QgdGV4dCBjb21wb25lbnQuCisgKgorICogVGhpcyBpcyBwcmV0dHkgcG9seW1vcnBoaWMg
YnV0IHVuYXZvaWRhYmxlIHdpdGggdGhlIGN1cnJlbnQgc3RydWN0dXJlIHdlIGhhdmUKKyAqIGZv
ciBgX3JlbmRlcmVkQ2hpbGRyZW5gLgorICovCitmdW5jdGlvbiBnZXRSZW5kZXJlZEhvc3RPclRl
eHRGcm9tQ29tcG9uZW50KGNvbXBvbmVudCkgeworICB2YXIgcmVuZGVyZWQ7CisgIHdoaWxlIChy
ZW5kZXJlZCA9IGNvbXBvbmVudC5fcmVuZGVyZWRDb21wb25lbnQpIHsKKyAgICBjb21wb25lbnQg
PSByZW5kZXJlZDsKKyAgfQorICByZXR1cm4gY29tcG9uZW50OworfQorCisvKioKKyAqIFBvcHVs
YXRlIGBfaG9zdE5vZGVgIG9uIHRoZSByZW5kZXJlZCBob3N0L3RleHQgY29tcG9uZW50IHdpdGgg
dGhlIGdpdmVuCisgKiBET00gbm9kZS4gVGhlIHBhc3NlZCBgaW5zdGAgY2FuIGJlIGEgY29tcG9z
aXRlLgorICovCitmdW5jdGlvbiBwcmVjYWNoZU5vZGUoaW5zdCwgbm9kZSkgeworICB2YXIgaG9z
dEluc3QgPSBnZXRSZW5kZXJlZEhvc3RPclRleHRGcm9tQ29tcG9uZW50KGluc3QpOworICBob3N0
SW5zdC5faG9zdE5vZGUgPSBub2RlOworICBub2RlW2ludGVybmFsSW5zdGFuY2VLZXldID0gaG9z
dEluc3Q7Cit9CisKK2Z1bmN0aW9uIHVuY2FjaGVOb2RlKGluc3QpIHsKKyAgdmFyIG5vZGUgPSBp
bnN0Ll9ob3N0Tm9kZTsKKyAgaWYgKG5vZGUpIHsKKyAgICBkZWxldGUgbm9kZVtpbnRlcm5hbElu
c3RhbmNlS2V5XTsKKyAgICBpbnN0Ll9ob3N0Tm9kZSA9IG51bGw7CisgIH0KK30KKworLyoqCisg
KiBQb3B1bGF0ZSBgX2hvc3ROb2RlYCBvbiBlYWNoIGNoaWxkIG9mIGBpbnN0YCwgYXNzdW1pbmcg
dGhhdCB0aGUgY2hpbGRyZW4KKyAqIG1hdGNoIHVwIHdpdGggdGhlIERPTSAoZWxlbWVudCkgY2hp
bGRyZW4gb2YgYG5vZGVgLgorICoKKyAqIFdlIGNhY2hlIGVudGlyZSBsZXZlbHMgYXQgb25jZSB0
byBhdm9pZCBhbiBuXjIgcHJvYmxlbSB3aGVyZSB3ZSBhY2Nlc3MgdGhlCisgKiBjaGlsZHJlbiBv
ZiBhIG5vZGUgc2VxdWVudGlhbGx5IGFuZCBoYXZlIHRvIHdhbGsgZnJvbSB0aGUgc3RhcnQgdG8g
b3VyIHRhcmdldAorICogbm9kZSBldmVyeSB0aW1lLgorICoKKyAqIFNpbmNlIHdlIHVwZGF0ZSBg
X3JlbmRlcmVkQ2hpbGRyZW5gIGFuZCB0aGUgYWN0dWFsIERPTSBhdCAoc2xpZ2h0bHkpCisgKiBk
aWZmZXJlbnQgdGltZXMsIHdlIGNvdWxkIHJhY2UgaGVyZSBhbmQgc2VlIGEgbmV3ZXIgYF9yZW5k
ZXJlZENoaWxkcmVuYCB0aGFuCisgKiB0aGUgRE9NIG5vZGVzIHdlIHNlZS4gVG8gYXZvaWQgdGhp
cywgUmVhY3RNdWx0aUNoaWxkIGNhbGxzCisgKiBgcHJlcGFyZVRvTWFuYWdlQ2hpbGRyZW5gIGJl
Zm9yZSB3ZSBjaGFuZ2UgYF9yZW5kZXJlZENoaWxkcmVuYCwgYXQgd2hpY2gKKyAqIHRpbWUgdGhl
IGNvbnRhaW5lcidzIGNoaWxkIG5vZGVzIGFyZSBhbHdheXMgY2FjaGVkICh1bnRpbCBpdCB1bm1v
dW50cykuCisgKi8KK2Z1bmN0aW9uIHByZWNhY2hlQ2hpbGROb2RlcyhpbnN0LCBub2RlKSB7Cisg
IGlmIChpbnN0Ll9mbGFncyAmIEZsYWdzLmhhc0NhY2hlZENoaWxkTm9kZXMpIHsKKyAgICByZXR1
cm47CisgIH0KKyAgdmFyIGNoaWxkcmVuID0gaW5zdC5fcmVuZGVyZWRDaGlsZHJlbjsKKyAgdmFy
IGNoaWxkTm9kZSA9IG5vZGUuZmlyc3RDaGlsZDsKKyAgb3V0ZXI6IGZvciAodmFyIG5hbWUgaW4g
Y2hpbGRyZW4pIHsKKyAgICBpZiAoIWNoaWxkcmVuLmhhc093blByb3BlcnR5KG5hbWUpKSB7Cisg
ICAgICBjb250aW51ZTsKKyAgICB9CisgICAgdmFyIGNoaWxkSW5zdCA9IGNoaWxkcmVuW25hbWVd
OworICAgIHZhciBjaGlsZElEID0gZ2V0UmVuZGVyZWRIb3N0T3JUZXh0RnJvbUNvbXBvbmVudChj
aGlsZEluc3QpLl9kb21JRDsKKyAgICBpZiAoY2hpbGRJRCA9PT0gMCkgeworICAgICAgLy8gV2Un
cmUgY3VycmVudGx5IHVubW91bnRpbmcgdGhpcyBjaGlsZCBpbiBSZWFjdE11bHRpQ2hpbGQ7IHNr
aXAgaXQuCisgICAgICBjb250aW51ZTsKKyAgICB9CisgICAgLy8gV2UgYXNzdW1lIHRoZSBjaGls
ZCBub2RlcyBhcmUgaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhlIGNoaWxkIGluc3RhbmNlcy4KKyAg
ICBmb3IgKDsgY2hpbGROb2RlICE9PSBudWxsOyBjaGlsZE5vZGUgPSBjaGlsZE5vZGUubmV4dFNp
YmxpbmcpIHsKKyAgICAgIGlmIChjaGlsZE5vZGUubm9kZVR5cGUgPT09IDEgJiYgY2hpbGROb2Rl
LmdldEF0dHJpYnV0ZShBVFRSX05BTUUpID09PSBTdHJpbmcoY2hpbGRJRCkgfHwgY2hpbGROb2Rl
Lm5vZGVUeXBlID09PSA4ICYmIGNoaWxkTm9kZS5ub2RlVmFsdWUgPT09ICcgcmVhY3QtdGV4dDog
JyArIGNoaWxkSUQgKyAnICcgfHwgY2hpbGROb2RlLm5vZGVUeXBlID09PSA4ICYmIGNoaWxkTm9k
ZS5ub2RlVmFsdWUgPT09ICcgcmVhY3QtZW1wdHk6ICcgKyBjaGlsZElEICsgJyAnKSB7CisgICAg
ICAgIHByZWNhY2hlTm9kZShjaGlsZEluc3QsIGNoaWxkTm9kZSk7CisgICAgICAgIGNvbnRpbnVl
IG91dGVyOworICAgICAgfQorICAgIH0KKyAgICAvLyBXZSByZWFjaGVkIHRoZSBlbmQgb2YgdGhl
IERPTSBjaGlsZHJlbiB3aXRob3V0IGZpbmRpbmcgYW4gSUQgbWF0Y2guCisgICAgIWZhbHNlID8g
cHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwg
J1VuYWJsZSB0byBmaW5kIGVsZW1lbnQgd2l0aCBJRCAlcy4nLCBjaGlsZElEKSA6IF9wcm9kSW52
YXJpYW50KCczMicsIGNoaWxkSUQpIDogdm9pZCAwOworICB9CisgIGluc3QuX2ZsYWdzIHw9IEZs
YWdzLmhhc0NhY2hlZENoaWxkTm9kZXM7Cit9CisKKy8qKgorICogR2l2ZW4gYSBET00gbm9kZSwg
cmV0dXJuIHRoZSBjbG9zZXN0IFJlYWN0RE9NQ29tcG9uZW50IG9yCisgKiBSZWFjdERPTVRleHRD
b21wb25lbnQgaW5zdGFuY2UgYW5jZXN0b3IuCisgKi8KK2Z1bmN0aW9uIGdldENsb3Nlc3RJbnN0
YW5jZUZyb21Ob2RlKG5vZGUpIHsKKyAgaWYgKG5vZGVbaW50ZXJuYWxJbnN0YW5jZUtleV0pIHsK
KyAgICByZXR1cm4gbm9kZVtpbnRlcm5hbEluc3RhbmNlS2V5XTsKKyAgfQorCisgIC8vIFdhbGsg
dXAgdGhlIHRyZWUgdW50aWwgd2UgZmluZCBhbiBhbmNlc3RvciB3aG9zZSBpbnN0YW5jZSB3ZSBo
YXZlIGNhY2hlZC4KKyAgdmFyIHBhcmVudHMgPSBbXTsKKyAgd2hpbGUgKCFub2RlW2ludGVybmFs
SW5zdGFuY2VLZXldKSB7CisgICAgcGFyZW50cy5wdXNoKG5vZGUpOworICAgIGlmIChub2RlLnBh
cmVudE5vZGUpIHsKKyAgICAgIG5vZGUgPSBub2RlLnBhcmVudE5vZGU7CisgICAgfSBlbHNlIHsK
KyAgICAgIC8vIFRvcCBvZiB0aGUgdHJlZS4gVGhpcyBub2RlIG11c3Qgbm90IGJlIHBhcnQgb2Yg
YSBSZWFjdCB0cmVlIChvciBpcworICAgICAgLy8gdW5tb3VudGVkLCBwb3RlbnRpYWxseSkuCisg
ICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisgIH0KKworICB2YXIgY2xvc2VzdDsKKyAgdmFyIGlu
c3Q7CisgIGZvciAoOyBub2RlICYmIChpbnN0ID0gbm9kZVtpbnRlcm5hbEluc3RhbmNlS2V5XSk7
IG5vZGUgPSBwYXJlbnRzLnBvcCgpKSB7CisgICAgY2xvc2VzdCA9IGluc3Q7CisgICAgaWYgKHBh
cmVudHMubGVuZ3RoKSB7CisgICAgICBwcmVjYWNoZUNoaWxkTm9kZXMoaW5zdCwgbm9kZSk7Cisg
ICAgfQorICB9CisKKyAgcmV0dXJuIGNsb3Nlc3Q7Cit9CisKKy8qKgorICogR2l2ZW4gYSBET00g
bm9kZSwgcmV0dXJuIHRoZSBSZWFjdERPTUNvbXBvbmVudCBvciBSZWFjdERPTVRleHRDb21wb25l
bnQKKyAqIGluc3RhbmNlLCBvciBudWxsIGlmIHRoZSBub2RlIHdhcyBub3QgcmVuZGVyZWQgYnkg
dGhpcyBSZWFjdC4KKyAqLworZnVuY3Rpb24gZ2V0SW5zdGFuY2VGcm9tTm9kZShub2RlKSB7Cisg
IHZhciBpbnN0ID0gZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGUobm9kZSk7CisgIGlmIChpbnN0
ICE9IG51bGwgJiYgaW5zdC5faG9zdE5vZGUgPT09IG5vZGUpIHsKKyAgICByZXR1cm4gaW5zdDsK
KyAgfSBlbHNlIHsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorfQorCisvKioKKyAqIEdpdmVuIGEg
UmVhY3RET01Db21wb25lbnQgb3IgUmVhY3RET01UZXh0Q29tcG9uZW50LCByZXR1cm4gdGhlIGNv
cnJlc3BvbmRpbmcKKyAqIERPTSBub2RlLgorICovCitmdW5jdGlvbiBnZXROb2RlRnJvbUluc3Rh
bmNlKGluc3QpIHsKKyAgLy8gV2l0aG91dCB0aGlzIGZpcnN0IGludmFyaWFudCwgcGFzc2luZyBh
IG5vbi1ET00tY29tcG9uZW50IHRyaWdnZXJzIHRoZSBuZXh0CisgIC8vIGludmFyaWFudCBmb3Ig
YSBtaXNzaW5nIHBhcmVudCwgd2hpY2ggaXMgc3VwZXIgY29uZnVzaW5nLgorICAhKGluc3QuX2hv
c3ROb2RlICE9PSB1bmRlZmluZWQpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2dldE5vZGVGcm9tSW5zdGFuY2U6IEludmFsaWQgYXJn
dW1lbnQuJykgOiBfcHJvZEludmFyaWFudCgnMzMnKSA6IHZvaWQgMDsKKworICBpZiAoaW5zdC5f
aG9zdE5vZGUpIHsKKyAgICByZXR1cm4gaW5zdC5faG9zdE5vZGU7CisgIH0KKworICAvLyBXYWxr
IHVwIHRoZSB0cmVlIHVudGlsIHdlIGZpbmQgYW4gYW5jZXN0b3Igd2hvc2UgRE9NIG5vZGUgd2Ug
aGF2ZSBjYWNoZWQuCisgIHZhciBwYXJlbnRzID0gW107CisgIHdoaWxlICghaW5zdC5faG9zdE5v
ZGUpIHsKKyAgICBwYXJlbnRzLnB1c2goaW5zdCk7CisgICAgIWluc3QuX2hvc3RQYXJlbnQgPyBw
cm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAn
UmVhY3QgRE9NIHRyZWUgcm9vdCBzaG91bGQgYWx3YXlzIGhhdmUgYSBub2RlIHJlZmVyZW5jZS4n
KSA6IF9wcm9kSW52YXJpYW50KCczNCcpIDogdm9pZCAwOworICAgIGluc3QgPSBpbnN0Ll9ob3N0
UGFyZW50OworICB9CisKKyAgLy8gTm93IHBhcmVudHMgY29udGFpbnMgZWFjaCBhbmNlc3RvciB0
aGF0IGRvZXMgKm5vdCogaGF2ZSBhIGNhY2hlZCBuYXRpdmUKKyAgLy8gbm9kZSwgYW5kIGBpbnN0
YCBpcyB0aGUgZGVlcGVzdCBhbmNlc3RvciB0aGF0IGRvZXMuCisgIGZvciAoOyBwYXJlbnRzLmxl
bmd0aDsgaW5zdCA9IHBhcmVudHMucG9wKCkpIHsKKyAgICBwcmVjYWNoZUNoaWxkTm9kZXMoaW5z
dCwgaW5zdC5faG9zdE5vZGUpOworICB9CisKKyAgcmV0dXJuIGluc3QuX2hvc3ROb2RlOworfQor
Cit2YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0geworICBnZXRDbG9zZXN0SW5zdGFuY2VGcm9t
Tm9kZTogZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGUsCisgIGdldEluc3RhbmNlRnJvbU5vZGU6
IGdldEluc3RhbmNlRnJvbU5vZGUsCisgIGdldE5vZGVGcm9tSW5zdGFuY2U6IGdldE5vZGVGcm9t
SW5zdGFuY2UsCisgIHByZWNhY2hlQ2hpbGROb2RlczogcHJlY2FjaGVDaGlsZE5vZGVzLAorICBw
cmVjYWNoZU5vZGU6IHByZWNhY2hlTm9kZSwKKyAgdW5jYWNoZU5vZGU6IHVuY2FjaGVOb2RlCit9
OworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZTsKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVs
ZXMvcmVhY3QtZG9tL2xpYi9SZWFjdERPTUNvbnRhaW5lckluZm8uanMgYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9y
ZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdERPTUNvbnRhaW5lckluZm8uanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMDE1MjhhNGE0MDI3YzFlNTk2ZWM0MmExNWY4ZGNiYTJhMTExMDBlNgotLS0g
L2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20v
bGliL1JlYWN0RE9NQ29udGFpbmVySW5mby5qcwpAQCAtMCwwICsxLDMyIEBACisvKioKKyAqIENv
cHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1z
dHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRp
cmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBw
YXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1l
IGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgdmFsaWRhdGVET01O
ZXN0aW5nID0gcmVxdWlyZSgnLi92YWxpZGF0ZURPTU5lc3RpbmcnKTsKKwordmFyIERPQ19OT0RF
X1RZUEUgPSA5OworCitmdW5jdGlvbiBSZWFjdERPTUNvbnRhaW5lckluZm8odG9wTGV2ZWxXcmFw
cGVyLCBub2RlKSB7CisgIHZhciBpbmZvID0geworICAgIF90b3BMZXZlbFdyYXBwZXI6IHRvcExl
dmVsV3JhcHBlciwKKyAgICBfaWRDb3VudGVyOiAxLAorICAgIF9vd25lckRvY3VtZW50OiBub2Rl
ID8gbm9kZS5ub2RlVHlwZSA9PT0gRE9DX05PREVfVFlQRSA/IG5vZGUgOiBub2RlLm93bmVyRG9j
dW1lbnQgOiBudWxsLAorICAgIF9ub2RlOiBub2RlLAorICAgIF90YWc6IG5vZGUgPyBub2RlLm5v
ZGVOYW1lLnRvTG93ZXJDYXNlKCkgOiBudWxsLAorICAgIF9uYW1lc3BhY2VVUkk6IG5vZGUgPyBu
b2RlLm5hbWVzcGFjZVVSSSA6IG51bGwKKyAgfTsKKyAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICBpbmZvLl9hbmNlc3RvckluZm8gPSBub2RlID8gdmFs
aWRhdGVET01OZXN0aW5nLnVwZGF0ZWRBbmNlc3RvckluZm8obnVsbCwgaW5mby5fdGFnLCBudWxs
KSA6IG51bGw7CisgIH0KKyAgcmV0dXJuIGluZm87Cit9CisKK21vZHVsZS5leHBvcnRzID0gUmVh
Y3RET01Db250YWluZXJJbmZvOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0RE9N
RW1wdHlDb21wb25lbnQuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3Qt
ZG9tL2xpYi9SZWFjdERPTUVtcHR5Q29tcG9uZW50LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5ZWVjYzU2NjVj
NjNlYzAyZmE2YzgyMWY2OGJmOWQ3MDRkMGFlYjMKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdERPTUVtcHR5Q29tcG9u
ZW50LmpzCkBAIC0wLDAgKzEsNTkgQEAKKy8qKgorICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCwg
RmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3Vy
Y2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4g
dGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNl
IHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLwor
CisndXNlIHN0cmljdCc7CisKK3ZhciBfYXNzaWduID0gcmVxdWlyZSgnb2JqZWN0LWFzc2lnbicp
OworCit2YXIgRE9NTGF6eVRyZWUgPSByZXF1aXJlKCcuL0RPTUxhenlUcmVlJyk7Cit2YXIgUmVh
Y3RET01Db21wb25lbnRUcmVlID0gcmVxdWlyZSgnLi9SZWFjdERPTUNvbXBvbmVudFRyZWUnKTsK
KwordmFyIFJlYWN0RE9NRW1wdHlDb21wb25lbnQgPSBmdW5jdGlvbiAoaW5zdGFudGlhdGUpIHsK
KyAgLy8gUmVhY3RDb21wb3NpdGVDb21wb25lbnQgdXNlcyB0aGlzOgorICB0aGlzLl9jdXJyZW50
RWxlbWVudCA9IG51bGw7CisgIC8vIFJlYWN0RE9NQ29tcG9uZW50VHJlZSB1c2VzIHRoZXNlOgor
ICB0aGlzLl9ob3N0Tm9kZSA9IG51bGw7CisgIHRoaXMuX2hvc3RQYXJlbnQgPSBudWxsOworICB0
aGlzLl9ob3N0Q29udGFpbmVySW5mbyA9IG51bGw7CisgIHRoaXMuX2RvbUlEID0gMDsKK307Citf
YXNzaWduKFJlYWN0RE9NRW1wdHlDb21wb25lbnQucHJvdG90eXBlLCB7CisgIG1vdW50Q29tcG9u
ZW50OiBmdW5jdGlvbiAodHJhbnNhY3Rpb24sIGhvc3RQYXJlbnQsIGhvc3RDb250YWluZXJJbmZv
LCBjb250ZXh0KSB7CisgICAgdmFyIGRvbUlEID0gaG9zdENvbnRhaW5lckluZm8uX2lkQ291bnRl
cisrOworICAgIHRoaXMuX2RvbUlEID0gZG9tSUQ7CisgICAgdGhpcy5faG9zdFBhcmVudCA9IGhv
c3RQYXJlbnQ7CisgICAgdGhpcy5faG9zdENvbnRhaW5lckluZm8gPSBob3N0Q29udGFpbmVySW5m
bzsKKworICAgIHZhciBub2RlVmFsdWUgPSAnIHJlYWN0LWVtcHR5OiAnICsgdGhpcy5fZG9tSUQg
KyAnICc7CisgICAgaWYgKHRyYW5zYWN0aW9uLnVzZUNyZWF0ZUVsZW1lbnQpIHsKKyAgICAgIHZh
ciBvd25lckRvY3VtZW50ID0gaG9zdENvbnRhaW5lckluZm8uX293bmVyRG9jdW1lbnQ7CisgICAg
ICB2YXIgbm9kZSA9IG93bmVyRG9jdW1lbnQuY3JlYXRlQ29tbWVudChub2RlVmFsdWUpOworICAg
ICAgUmVhY3RET01Db21wb25lbnRUcmVlLnByZWNhY2hlTm9kZSh0aGlzLCBub2RlKTsKKyAgICAg
IHJldHVybiBET01MYXp5VHJlZShub2RlKTsKKyAgICB9IGVsc2UgeworICAgICAgaWYgKHRyYW5z
YWN0aW9uLnJlbmRlclRvU3RhdGljTWFya3VwKSB7CisgICAgICAgIC8vIE5vcm1hbGx5IHdlJ2Qg
aW5zZXJ0IGEgY29tbWVudCBub2RlLCBidXQgc2luY2UgdGhpcyBpcyBhIHNpdHVhdGlvbgorICAg
ICAgICAvLyB3aGVyZSBSZWFjdCB3b24ndCB0YWtlIG92ZXIgKHN0YXRpYyBwYWdlcyksIHdlIGNh
biBzaW1wbHkgcmV0dXJuCisgICAgICAgIC8vIG5vdGhpbmcuCisgICAgICAgIHJldHVybiAnJzsK
KyAgICAgIH0KKyAgICAgIHJldHVybiAnPCEtLScgKyBub2RlVmFsdWUgKyAnLS0+JzsKKyAgICB9
CisgIH0sCisgIHJlY2VpdmVDb21wb25lbnQ6IGZ1bmN0aW9uICgpIHt9LAorICBnZXRIb3N0Tm9k
ZTogZnVuY3Rpb24gKCkgeworICAgIHJldHVybiBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9k
ZUZyb21JbnN0YW5jZSh0aGlzKTsKKyAgfSwKKyAgdW5tb3VudENvbXBvbmVudDogZnVuY3Rpb24g
KCkgeworICAgIFJlYWN0RE9NQ29tcG9uZW50VHJlZS51bmNhY2hlTm9kZSh0aGlzKTsKKyAgfQor
fSk7CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RET01FbXB0eUNvbXBvbmVudDsKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21v
ZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdERPTUZlYXR1cmVGbGFncy5qcyBiL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0RE9NRmVhdHVyZUZsYWdzLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjczYjMzMDE5ZmFkZDE0OTY2ZmMyOGI4ODg3MDgzN2IyMmZlNzgyZDUKLS0t
IC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9t
L2xpYi9SZWFjdERPTUZlYXR1cmVGbGFncy5qcwpAQCAtMCwwICsxLDE4IEBACisvKioKKyAqIENv
cHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1z
dHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRp
cmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBw
YXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1l
IGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgUmVhY3RET01GZWF0
dXJlRmxhZ3MgPSB7CisgIHVzZUNyZWF0ZUVsZW1lbnQ6IHRydWUsCisgIHVzZUZpYmVyOiBmYWxz
ZQorfTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTUZlYXR1cmVGbGFnczsKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21v
ZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdERPTUZpYmVyLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qv
bm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RET01GaWJlci5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
YzlhMjE4MGE5ZTQ1YjUyMDc1MzAzNTdjZmQyNjRlOTdmZDQwYmU4Ci0tLSAvZGV2L251bGwKKysr
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RET01G
aWJlci5qcwpAQCAtMCwwICsxLDk3IEBACisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQs
IEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291
cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGlu
IHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJj
ZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBm
b3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiAK
KyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBSZWFjdEZpYmVyUmVjb25jaWxlciA9IHJlcXVp
cmUoJy4vUmVhY3RGaWJlclJlY29uY2lsZXInKTsKKwordmFyIHdhcm5pbmcgPSByZXF1aXJlKCdm
YmpzL2xpYi93YXJuaW5nJyk7CisKK2Z1bmN0aW9uIHJlY3Vyc2l2ZWx5QXBwZW5kQ2hpbGRyZW4o
cGFyZW50LCBjaGlsZCkgeworICBpZiAoIWNoaWxkKSB7CisgICAgcmV0dXJuOworICB9CisgIC8q
ICRGbG93Rml4TWU6IEVsZW1lbnQgc2hvdWxkIGhhdmUgdGhpcyBwcm9wZXJ0eS4gKi8KKyAgaWYg
KGNoaWxkLm5vZGVUeXBlID09PSAxKSB7CisgICAgLyogJEZsb3dGaXhNZTogUmVmaW5lbWVudCBp
c3N1ZS4gSSBkb24ndCBrbm93IGhvdyB0byBleHByZXNzIGRpZmZlcmVudC4gKi8KKyAgICBwYXJl
bnQuYXBwZW5kQ2hpbGQoY2hpbGQpOworICB9IGVsc2UgeworICAgIC8qIEFzIGEgcmVzdWx0IG9m
IHRoZSByZWZpbmVtZW50IGlzc3VlIHRoaXMgdHlwZSBpc24ndCBrbm93bi4gKi8KKyAgICB2YXIg
bm9kZSA9IGNoaWxkOworICAgIGRvIHsKKyAgICAgIHJlY3Vyc2l2ZWx5QXBwZW5kQ2hpbGRyZW4o
cGFyZW50LCBub2RlLm91dHB1dCk7CisgICAgfSB3aGlsZSAobm9kZSA9IG5vZGUuc2libGluZyk7
CisgIH0KK30KKwordmFyIERPTVJlbmRlcmVyID0gUmVhY3RGaWJlclJlY29uY2lsZXIoeworICB1
cGRhdGVDb250YWluZXI6IGZ1bmN0aW9uIChjb250YWluZXIsIGNoaWxkcmVuKSB7CisgICAgY29u
dGFpbmVyLmlubmVySFRNTCA9ICcnOworICAgIHJlY3Vyc2l2ZWx5QXBwZW5kQ2hpbGRyZW4oY29u
dGFpbmVyLCBjaGlsZHJlbik7CisgIH0sCisgIGNyZWF0ZUluc3RhbmNlOiBmdW5jdGlvbiAodHlw
ZSwgcHJvcHMsIGNoaWxkcmVuKSB7CisgICAgdmFyIGRvbUVsZW1lbnQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KHR5cGUpOworICAgIHJlY3Vyc2l2ZWx5QXBwZW5kQ2hpbGRyZW4oZG9tRWxlbWVu
dCwgY2hpbGRyZW4pOworICAgIGlmICh0eXBlb2YgcHJvcHMuY2hpbGRyZW4gPT09ICdzdHJpbmcn
KSB7CisgICAgICBkb21FbGVtZW50LnRleHRDb250ZW50ID0gcHJvcHMuY2hpbGRyZW47CisgICAg
fQorICAgIHJldHVybiBkb21FbGVtZW50OworICB9LAorICBwcmVwYXJlVXBkYXRlOiBmdW5jdGlv
biAoZG9tRWxlbWVudCwgb2xkUHJvcHMsIG5ld1Byb3BzLCBjaGlsZHJlbikgeworICAgIHJldHVy
biB0cnVlOworICB9LAorICBjb21taXRVcGRhdGU6IGZ1bmN0aW9uIChkb21FbGVtZW50LCBvbGRQ
cm9wcywgbmV3UHJvcHMsIGNoaWxkcmVuKSB7CisgICAgZG9tRWxlbWVudC5pbm5lckhUTUwgPSAn
JzsKKyAgICByZWN1cnNpdmVseUFwcGVuZENoaWxkcmVuKGRvbUVsZW1lbnQsIGNoaWxkcmVuKTsK
KyAgICBpZiAodHlwZW9mIG5ld1Byb3BzLmNoaWxkcmVuID09PSAnc3RyaW5nJykgeworICAgICAg
ZG9tRWxlbWVudC50ZXh0Q29udGVudCA9IG5ld1Byb3BzLmNoaWxkcmVuOworICAgIH0KKyAgfSwK
KyAgZGVsZXRlSW5zdGFuY2U6IGZ1bmN0aW9uIChpbnN0YW5jZSkgeworICAgIC8vIE5vb3AKKyAg
fSwKKworCisgIHNjaGVkdWxlQW5pbWF0aW9uQ2FsbGJhY2s6IHdpbmRvdy5yZXF1ZXN0QW5pbWF0
aW9uRnJhbWUsCisKKyAgc2NoZWR1bGVEZWZlcnJlZENhbGxiYWNrOiB3aW5kb3cucmVxdWVzdElk
bGVDYWxsYmFjaworCit9KTsKKwordmFyIHdhcm5lZCA9IGZhbHNlOworCitmdW5jdGlvbiB3YXJu
QWJvdXRVbnN0YWJsZVVzZSgpIHsKKyAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJyA/IHdhcm5pbmcod2FybmVkLCAnWW91IGFyZSB1c2luZyBSZWFjdCBET00gRmliZXIgd2hp
Y2ggaXMgYW4gZXhwZXJpbWVudGFsIHJlbmRlcmVyLiAnICsgJ0l0IGlzIGxpa2VseSB0byBoYXZl
IGJ1Z3MsIGJyZWFraW5nIGNoYW5nZXMgYW5kIGlzIHVuc3VwcG9ydGVkLicpIDogdm9pZCAwOwor
ICB3YXJuZWQgPSB0cnVlOworfQorCit2YXIgUmVhY3RET00gPSB7CisgIHJlbmRlcjogZnVuY3Rp
b24gKGVsZW1lbnQsIGNvbnRhaW5lcikgeworICAgIHdhcm5BYm91dFVuc3RhYmxlVXNlKCk7Cisg
ICAgaWYgKCFjb250YWluZXIuX3JlYWN0Um9vdENvbnRhaW5lcikgeworICAgICAgY29udGFpbmVy
Ll9yZWFjdFJvb3RDb250YWluZXIgPSBET01SZW5kZXJlci5tb3VudENvbnRhaW5lcihlbGVtZW50
LCBjb250YWluZXIpOworICAgIH0gZWxzZSB7CisgICAgICBET01SZW5kZXJlci51cGRhdGVDb250
YWluZXIoZWxlbWVudCwgY29udGFpbmVyLl9yZWFjdFJvb3RDb250YWluZXIpOworICAgIH0KKyAg
fSwKKyAgdW5tb3VudENvbXBvbmVudEF0Tm9kZTogZnVuY3Rpb24gKGNvbnRhaW5lcikgeworICAg
IHdhcm5BYm91dFVuc3RhYmxlVXNlKCk7CisgICAgdmFyIHJvb3QgPSBjb250YWluZXIuX3JlYWN0
Um9vdENvbnRhaW5lcjsKKyAgICBpZiAocm9vdCkgeworICAgICAgLy8gVE9ETzogSXMgaXQgc2Fm
ZSB0byByZXNldCB0aGlzIG5vdyBvciBzaG91bGQgSSB3YWl0IHNpbmNlIHRoaXMKKyAgICAgIC8v
IHVubW91bnQgY291bGQgYmUgZGVmZXJyZWQ/CisgICAgICBjb250YWluZXIuX3JlYWN0Um9vdENv
bnRhaW5lciA9IG51bGw7CisgICAgICBET01SZW5kZXJlci51bm1vdW50Q29udGFpbmVyKHJvb3Qp
OworICAgIH0KKyAgfQorfTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTTsKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21v
ZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdERPTUlET3BlcmF0aW9ucy5qcyBiL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0RE9NSURPcGVyYXRpb25zLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjExYzYxNTk4NDFjMjkwMjM5MTcwZDExYTY0MDdiMDAyNjUzODc1NjMKLS0t
IC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9t
L2xpYi9SZWFjdERPTUlET3BlcmF0aW9ucy5qcwpAQCAtMCwwICsxLDMzIEBACisvKioKKyAqIENv
cHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1z
dHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRp
cmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBw
YXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1l
IGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgRE9NQ2hpbGRyZW5P
cGVyYXRpb25zID0gcmVxdWlyZSgnLi9ET01DaGlsZHJlbk9wZXJhdGlvbnMnKTsKK3ZhciBSZWFj
dERPTUNvbXBvbmVudFRyZWUgPSByZXF1aXJlKCcuL1JlYWN0RE9NQ29tcG9uZW50VHJlZScpOwor
CisvKioKKyAqIE9wZXJhdGlvbnMgdXNlZCB0byBwcm9jZXNzIHVwZGF0ZXMgdG8gRE9NIG5vZGVz
LgorICovCit2YXIgUmVhY3RET01JRE9wZXJhdGlvbnMgPSB7CisKKyAgLyoqCisgICAqIFVwZGF0
ZXMgYSBjb21wb25lbnQncyBjaGlsZHJlbiBieSBwcm9jZXNzaW5nIGEgc2VyaWVzIG9mIHVwZGF0
ZXMuCisgICAqCisgICAqIEBwYXJhbSB7YXJyYXk8b2JqZWN0Pn0gdXBkYXRlcyBMaXN0IG9mIHVw
ZGF0ZSBjb25maWd1cmF0aW9ucy4KKyAgICogQGludGVybmFsCisgICAqLworICBkYW5nZXJvdXNs
eVByb2Nlc3NDaGlsZHJlblVwZGF0ZXM6IGZ1bmN0aW9uIChwYXJlbnRJbnN0LCB1cGRhdGVzKSB7
CisgICAgdmFyIG5vZGUgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5j
ZShwYXJlbnRJbnN0KTsKKyAgICBET01DaGlsZHJlbk9wZXJhdGlvbnMucHJvY2Vzc1VwZGF0ZXMo
bm9kZSwgdXBkYXRlcyk7CisgIH0KK307CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RET01JRE9w
ZXJhdGlvbnM7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RET01JbnB1dC5qcyBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0RE9NSW5w
dXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYjY0YjY0ZmQ4YjFlMDZlMWY3N2I1NmQ1MzRmZTFhNjVhM2Q1NzEz
OAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFj
dC1kb20vbGliL1JlYWN0RE9NSW5wdXQuanMKQEAgLTAsMCArMSwyNjcgQEAKKy8qKgorICogQ29w
eXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0
eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBfcHJvZEludmFyaWFu
dCA9IHJlcXVpcmUoJy4vcmVhY3RQcm9kSW52YXJpYW50JyksCisgICAgX2Fzc2lnbiA9IHJlcXVp
cmUoJ29iamVjdC1hc3NpZ24nKTsKKwordmFyIERPTVByb3BlcnR5T3BlcmF0aW9ucyA9IHJlcXVp
cmUoJy4vRE9NUHJvcGVydHlPcGVyYXRpb25zJyk7Cit2YXIgTGlua2VkVmFsdWVVdGlscyA9IHJl
cXVpcmUoJy4vTGlua2VkVmFsdWVVdGlscycpOwordmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9
IHJlcXVpcmUoJy4vUmVhY3RET01Db21wb25lbnRUcmVlJyk7Cit2YXIgUmVhY3RVcGRhdGVzID0g
cmVxdWlyZSgnLi9SZWFjdFVwZGF0ZXMnKTsKKwordmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2Zi
anMvbGliL2ludmFyaWFudCcpOwordmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJu
aW5nJyk7CisKK3ZhciBkaWRXYXJuVmFsdWVMaW5rID0gZmFsc2U7Cit2YXIgZGlkV2FybkNoZWNr
ZWRMaW5rID0gZmFsc2U7Cit2YXIgZGlkV2FyblZhbHVlRGVmYXVsdFZhbHVlID0gZmFsc2U7Cit2
YXIgZGlkV2FybkNoZWNrZWREZWZhdWx0Q2hlY2tlZCA9IGZhbHNlOwordmFyIGRpZFdhcm5Db250
cm9sbGVkVG9VbmNvbnRyb2xsZWQgPSBmYWxzZTsKK3ZhciBkaWRXYXJuVW5jb250cm9sbGVkVG9D
b250cm9sbGVkID0gZmFsc2U7CisKK2Z1bmN0aW9uIGZvcmNlVXBkYXRlSWZNb3VudGVkKCkgewor
ICBpZiAodGhpcy5fcm9vdE5vZGVJRCkgeworICAgIC8vIERPTSBjb21wb25lbnQgaXMgc3RpbGwg
bW91bnRlZDsgdXBkYXRlCisgICAgUmVhY3RET01JbnB1dC51cGRhdGVXcmFwcGVyKHRoaXMpOwor
ICB9Cit9CisKK2Z1bmN0aW9uIGlzQ29udHJvbGxlZChwcm9wcykgeworICB2YXIgdXNlc0NoZWNr
ZWQgPSBwcm9wcy50eXBlID09PSAnY2hlY2tib3gnIHx8IHByb3BzLnR5cGUgPT09ICdyYWRpbyc7
CisgIHJldHVybiB1c2VzQ2hlY2tlZCA/IHByb3BzLmNoZWNrZWQgIT0gbnVsbCA6IHByb3BzLnZh
bHVlICE9IG51bGw7Cit9CisKKy8qKgorICogSW1wbGVtZW50cyBhbiA8aW5wdXQ+IGhvc3QgY29t
cG9uZW50IHRoYXQgYWxsb3dzIHNldHRpbmcgdGhlc2Ugb3B0aW9uYWwKKyAqIHByb3BzOiBgY2hl
Y2tlZGAsIGB2YWx1ZWAsIGBkZWZhdWx0Q2hlY2tlZGAsIGFuZCBgZGVmYXVsdFZhbHVlYC4KKyAq
CisgKiBJZiBgY2hlY2tlZGAgb3IgYHZhbHVlYCBhcmUgbm90IHN1cHBsaWVkIChvciBudWxsL3Vu
ZGVmaW5lZCksIHVzZXIgYWN0aW9ucworICogdGhhdCBhZmZlY3QgdGhlIGNoZWNrZWQgc3RhdGUg
b3IgdmFsdWUgd2lsbCB0cmlnZ2VyIHVwZGF0ZXMgdG8gdGhlIGVsZW1lbnQuCisgKgorICogSWYg
dGhleSBhcmUgc3VwcGxpZWQgKGFuZCBub3QgbnVsbC91bmRlZmluZWQpLCB0aGUgcmVuZGVyZWQg
ZWxlbWVudCB3aWxsIG5vdAorICogdHJpZ2dlciB1cGRhdGVzIHRvIHRoZSBlbGVtZW50LiBJbnN0
ZWFkLCB0aGUgcHJvcHMgbXVzdCBjaGFuZ2UgaW4gb3JkZXIgZm9yCisgKiB0aGUgcmVuZGVyZWQg
ZWxlbWVudCB0byBiZSB1cGRhdGVkLgorICoKKyAqIFRoZSByZW5kZXJlZCBlbGVtZW50IHdpbGwg
YmUgaW5pdGlhbGl6ZWQgYXMgdW5jaGVja2VkIChvciBgZGVmYXVsdENoZWNrZWRgKQorICogd2l0
aCBhbiBlbXB0eSB2YWx1ZSAob3IgYGRlZmF1bHRWYWx1ZWApLgorICoKKyAqIEBzZWUgaHR0cDov
L3d3dy53My5vcmcvVFIvMjAxMi9XRC1odG1sNS0yMDEyMTAyNS90aGUtaW5wdXQtZWxlbWVudC5o
dG1sCisgKi8KK3ZhciBSZWFjdERPTUlucHV0ID0geworICBnZXRIb3N0UHJvcHM6IGZ1bmN0aW9u
IChpbnN0LCBwcm9wcykgeworICAgIHZhciB2YWx1ZSA9IExpbmtlZFZhbHVlVXRpbHMuZ2V0VmFs
dWUocHJvcHMpOworICAgIHZhciBjaGVja2VkID0gTGlua2VkVmFsdWVVdGlscy5nZXRDaGVja2Vk
KHByb3BzKTsKKworICAgIHZhciBob3N0UHJvcHMgPSBfYXNzaWduKHsKKyAgICAgIC8vIE1ha2Ug
c3VyZSB3ZSBzZXQgLnR5cGUgYmVmb3JlIGFueSBvdGhlciBwcm9wZXJ0aWVzIChzZXR0aW5nIC52
YWx1ZQorICAgICAgLy8gYmVmb3JlIC50eXBlIG1lYW5zIC52YWx1ZSBpcyBsb3N0IGluIElFMTEg
YW5kIGJlbG93KQorICAgICAgdHlwZTogdW5kZWZpbmVkLAorICAgICAgLy8gTWFrZSBzdXJlIHdl
IHNldCAuc3RlcCBiZWZvcmUgLnZhbHVlIChzZXR0aW5nIC52YWx1ZSBiZWZvcmUgLnN0ZXAKKyAg
ICAgIC8vIG1lYW5zIC52YWx1ZSBpcyByb3VuZGVkIG9uIG1vdW50LCBiYXNlZCB1cG9uIHN0ZXAg
cHJlY2lzaW9uKQorICAgICAgc3RlcDogdW5kZWZpbmVkLAorICAgICAgLy8gTWFrZSBzdXJlIHdl
IHNldCAubWluICYgLm1heCBiZWZvcmUgLnZhbHVlICh0byBlbnN1cmUgcHJvcGVyIG9yZGVyCisg
ICAgICAvLyBpbiBjb3JuZXIgY2FzZXMgc3VjaCBhcyBtaW4gb3IgbWF4IGRlcml2aW5nIGZyb20g
dmFsdWUsIGUuZy4gSXNzdWUgIzcxNzApCisgICAgICBtaW46IHVuZGVmaW5lZCwKKyAgICAgIG1h
eDogdW5kZWZpbmVkCisgICAgfSwgcHJvcHMsIHsKKyAgICAgIGRlZmF1bHRDaGVja2VkOiB1bmRl
ZmluZWQsCisgICAgICBkZWZhdWx0VmFsdWU6IHVuZGVmaW5lZCwKKyAgICAgIHZhbHVlOiB2YWx1
ZSAhPSBudWxsID8gdmFsdWUgOiBpbnN0Ll93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlLAorICAg
ICAgY2hlY2tlZDogY2hlY2tlZCAhPSBudWxsID8gY2hlY2tlZCA6IGluc3QuX3dyYXBwZXJTdGF0
ZS5pbml0aWFsQ2hlY2tlZCwKKyAgICAgIG9uQ2hhbmdlOiBpbnN0Ll93cmFwcGVyU3RhdGUub25D
aGFuZ2UKKyAgICB9KTsKKworICAgIHJldHVybiBob3N0UHJvcHM7CisgIH0sCisKKyAgbW91bnRX
cmFwcGVyOiBmdW5jdGlvbiAoaW5zdCwgcHJvcHMpIHsKKyAgICBpZiAocHJvY2Vzcy5lbnYuTk9E
RV9FTlYgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgTGlua2VkVmFsdWVVdGlscy5jaGVja1By
b3BUeXBlcygnaW5wdXQnLCBwcm9wcywgaW5zdC5fY3VycmVudEVsZW1lbnQuX293bmVyKTsKKwor
ICAgICAgdmFyIG93bmVyID0gaW5zdC5fY3VycmVudEVsZW1lbnQuX293bmVyOworCisgICAgICBp
ZiAocHJvcHMudmFsdWVMaW5rICE9PSB1bmRlZmluZWQgJiYgIWRpZFdhcm5WYWx1ZUxpbmspIHsK
KyAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmco
ZmFsc2UsICdgdmFsdWVMaW5rYCBwcm9wIG9uIGBpbnB1dGAgaXMgZGVwcmVjYXRlZDsgc2V0IGB2
YWx1ZWAgYW5kIGBvbkNoYW5nZWAgaW5zdGVhZC4nKSA6IHZvaWQgMDsKKyAgICAgICAgZGlkV2Fy
blZhbHVlTGluayA9IHRydWU7CisgICAgICB9CisgICAgICBpZiAocHJvcHMuY2hlY2tlZExpbmsg
IT09IHVuZGVmaW5lZCAmJiAhZGlkV2FybkNoZWNrZWRMaW5rKSB7CisgICAgICAgIHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnYGNoZWNrZWRM
aW5rYCBwcm9wIG9uIGBpbnB1dGAgaXMgZGVwcmVjYXRlZDsgc2V0IGB2YWx1ZWAgYW5kIGBvbkNo
YW5nZWAgaW5zdGVhZC4nKSA6IHZvaWQgMDsKKyAgICAgICAgZGlkV2FybkNoZWNrZWRMaW5rID0g
dHJ1ZTsKKyAgICAgIH0KKyAgICAgIGlmIChwcm9wcy5jaGVja2VkICE9PSB1bmRlZmluZWQgJiYg
cHJvcHMuZGVmYXVsdENoZWNrZWQgIT09IHVuZGVmaW5lZCAmJiAhZGlkV2FybkNoZWNrZWREZWZh
dWx0Q2hlY2tlZCkgeworICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nID8gd2FybmluZyhmYWxzZSwgJyVzIGNvbnRhaW5zIGFuIGlucHV0IG9mIHR5cGUgJXMgd2l0
aCBib3RoIGNoZWNrZWQgYW5kIGRlZmF1bHRDaGVja2VkIHByb3BzLiAnICsgJ0lucHV0IGVsZW1l
bnRzIG11c3QgYmUgZWl0aGVyIGNvbnRyb2xsZWQgb3IgdW5jb250cm9sbGVkICcgKyAnKHNwZWNp
ZnkgZWl0aGVyIHRoZSBjaGVja2VkIHByb3AsIG9yIHRoZSBkZWZhdWx0Q2hlY2tlZCBwcm9wLCBi
dXQgbm90ICcgKyAnYm90aCkuIERlY2lkZSBiZXR3ZWVuIHVzaW5nIGEgY29udHJvbGxlZCBvciB1
bmNvbnRyb2xsZWQgaW5wdXQgJyArICdlbGVtZW50IGFuZCByZW1vdmUgb25lIG9mIHRoZXNlIHBy
b3BzLiBNb3JlIGluZm86ICcgKyAnaHR0cHM6Ly9mYi5tZS9yZWFjdC1jb250cm9sbGVkLWNvbXBv
bmVudHMnLCBvd25lciAmJiBvd25lci5nZXROYW1lKCkgfHwgJ0EgY29tcG9uZW50JywgcHJvcHMu
dHlwZSkgOiB2b2lkIDA7CisgICAgICAgIGRpZFdhcm5DaGVja2VkRGVmYXVsdENoZWNrZWQgPSB0
cnVlOworICAgICAgfQorICAgICAgaWYgKHByb3BzLnZhbHVlICE9PSB1bmRlZmluZWQgJiYgcHJv
cHMuZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQgJiYgIWRpZFdhcm5WYWx1ZURlZmF1bHRWYWx1
ZSkgeworICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2Fy
bmluZyhmYWxzZSwgJyVzIGNvbnRhaW5zIGFuIGlucHV0IG9mIHR5cGUgJXMgd2l0aCBib3RoIHZh
bHVlIGFuZCBkZWZhdWx0VmFsdWUgcHJvcHMuICcgKyAnSW5wdXQgZWxlbWVudHMgbXVzdCBiZSBl
aXRoZXIgY29udHJvbGxlZCBvciB1bmNvbnRyb2xsZWQgJyArICcoc3BlY2lmeSBlaXRoZXIgdGhl
IHZhbHVlIHByb3AsIG9yIHRoZSBkZWZhdWx0VmFsdWUgcHJvcCwgYnV0IG5vdCAnICsgJ2JvdGgp
LiBEZWNpZGUgYmV0d2VlbiB1c2luZyBhIGNvbnRyb2xsZWQgb3IgdW5jb250cm9sbGVkIGlucHV0
ICcgKyAnZWxlbWVudCBhbmQgcmVtb3ZlIG9uZSBvZiB0aGVzZSBwcm9wcy4gTW9yZSBpbmZvOiAn
ICsgJ2h0dHBzOi8vZmIubWUvcmVhY3QtY29udHJvbGxlZC1jb21wb25lbnRzJywgb3duZXIgJiYg
b3duZXIuZ2V0TmFtZSgpIHx8ICdBIGNvbXBvbmVudCcsIHByb3BzLnR5cGUpIDogdm9pZCAwOwor
ICAgICAgICBkaWRXYXJuVmFsdWVEZWZhdWx0VmFsdWUgPSB0cnVlOworICAgICAgfQorICAgIH0K
KworICAgIHZhciBkZWZhdWx0VmFsdWUgPSBwcm9wcy5kZWZhdWx0VmFsdWU7CisgICAgaW5zdC5f
d3JhcHBlclN0YXRlID0geworICAgICAgaW5pdGlhbENoZWNrZWQ6IHByb3BzLmNoZWNrZWQgIT0g
bnVsbCA/IHByb3BzLmNoZWNrZWQgOiBwcm9wcy5kZWZhdWx0Q2hlY2tlZCwKKyAgICAgIGluaXRp
YWxWYWx1ZTogcHJvcHMudmFsdWUgIT0gbnVsbCA/IHByb3BzLnZhbHVlIDogZGVmYXVsdFZhbHVl
LAorICAgICAgbGlzdGVuZXJzOiBudWxsLAorICAgICAgb25DaGFuZ2U6IF9oYW5kbGVDaGFuZ2Uu
YmluZChpbnN0KQorICAgIH07CisKKyAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJykgeworICAgICAgaW5zdC5fd3JhcHBlclN0YXRlLmNvbnRyb2xsZWQgPSBpc0Nv
bnRyb2xsZWQocHJvcHMpOworICAgIH0KKyAgfSwKKworICB1cGRhdGVXcmFwcGVyOiBmdW5jdGlv
biAoaW5zdCkgeworICAgIHZhciBwcm9wcyA9IGluc3QuX2N1cnJlbnRFbGVtZW50LnByb3BzOwor
CisgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAg
IHZhciBjb250cm9sbGVkID0gaXNDb250cm9sbGVkKHByb3BzKTsKKyAgICAgIHZhciBvd25lciA9
IGluc3QuX2N1cnJlbnRFbGVtZW50Ll9vd25lcjsKKworICAgICAgaWYgKCFpbnN0Ll93cmFwcGVy
U3RhdGUuY29udHJvbGxlZCAmJiBjb250cm9sbGVkICYmICFkaWRXYXJuVW5jb250cm9sbGVkVG9D
b250cm9sbGVkKSB7CisgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlv
bicgPyB3YXJuaW5nKGZhbHNlLCAnJXMgaXMgY2hhbmdpbmcgYW4gdW5jb250cm9sbGVkIGlucHV0
IG9mIHR5cGUgJXMgdG8gYmUgY29udHJvbGxlZC4gJyArICdJbnB1dCBlbGVtZW50cyBzaG91bGQg
bm90IHN3aXRjaCBmcm9tIHVuY29udHJvbGxlZCB0byBjb250cm9sbGVkIChvciB2aWNlIHZlcnNh
KS4gJyArICdEZWNpZGUgYmV0d2VlbiB1c2luZyBhIGNvbnRyb2xsZWQgb3IgdW5jb250cm9sbGVk
IGlucHV0ICcgKyAnZWxlbWVudCBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBjb21wb25lbnQuIE1v
cmUgaW5mbzogaHR0cHM6Ly9mYi5tZS9yZWFjdC1jb250cm9sbGVkLWNvbXBvbmVudHMnLCBvd25l
ciAmJiBvd25lci5nZXROYW1lKCkgfHwgJ0EgY29tcG9uZW50JywgcHJvcHMudHlwZSkgOiB2b2lk
IDA7CisgICAgICAgIGRpZFdhcm5VbmNvbnRyb2xsZWRUb0NvbnRyb2xsZWQgPSB0cnVlOworICAg
ICAgfQorICAgICAgaWYgKGluc3QuX3dyYXBwZXJTdGF0ZS5jb250cm9sbGVkICYmICFjb250cm9s
bGVkICYmICFkaWRXYXJuQ29udHJvbGxlZFRvVW5jb250cm9sbGVkKSB7CisgICAgICAgIHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnJXMgaXMg
Y2hhbmdpbmcgYSBjb250cm9sbGVkIGlucHV0IG9mIHR5cGUgJXMgdG8gYmUgdW5jb250cm9sbGVk
LiAnICsgJ0lucHV0IGVsZW1lbnRzIHNob3VsZCBub3Qgc3dpdGNoIGZyb20gY29udHJvbGxlZCB0
byB1bmNvbnRyb2xsZWQgKG9yIHZpY2UgdmVyc2EpLiAnICsgJ0RlY2lkZSBiZXR3ZWVuIHVzaW5n
IGEgY29udHJvbGxlZCBvciB1bmNvbnRyb2xsZWQgaW5wdXQgJyArICdlbGVtZW50IGZvciB0aGUg
bGlmZXRpbWUgb2YgdGhlIGNvbXBvbmVudC4gTW9yZSBpbmZvOiBodHRwczovL2ZiLm1lL3JlYWN0
LWNvbnRyb2xsZWQtY29tcG9uZW50cycsIG93bmVyICYmIG93bmVyLmdldE5hbWUoKSB8fCAnQSBj
b21wb25lbnQnLCBwcm9wcy50eXBlKSA6IHZvaWQgMDsKKyAgICAgICAgZGlkV2FybkNvbnRyb2xs
ZWRUb1VuY29udHJvbGxlZCA9IHRydWU7CisgICAgICB9CisgICAgfQorCisgICAgLy8gVE9ETzog
U2hvdWxkbid0IHRoaXMgYmUgZ2V0Q2hlY2tlZChwcm9wcyk/CisgICAgdmFyIGNoZWNrZWQgPSBw
cm9wcy5jaGVja2VkOworICAgIGlmIChjaGVja2VkICE9IG51bGwpIHsKKyAgICAgIERPTVByb3Bl
cnR5T3BlcmF0aW9ucy5zZXRWYWx1ZUZvclByb3BlcnR5KFJlYWN0RE9NQ29tcG9uZW50VHJlZS5n
ZXROb2RlRnJvbUluc3RhbmNlKGluc3QpLCAnY2hlY2tlZCcsIGNoZWNrZWQgfHwgZmFsc2UpOwor
ICAgIH0KKworICAgIHZhciBub2RlID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9t
SW5zdGFuY2UoaW5zdCk7CisgICAgdmFyIHZhbHVlID0gTGlua2VkVmFsdWVVdGlscy5nZXRWYWx1
ZShwcm9wcyk7CisgICAgaWYgKHZhbHVlICE9IG51bGwpIHsKKworICAgICAgLy8gQ2FzdCBgdmFs
dWVgIHRvIGEgc3RyaW5nIHRvIGVuc3VyZSB0aGUgdmFsdWUgaXMgc2V0IGNvcnJlY3RseS4gV2hp
bGUKKyAgICAgIC8vIGJyb3dzZXJzIHR5cGljYWxseSBkbyB0aGlzIGFzIG5lY2Vzc2FyeSwganNk
b20gZG9lc24ndC4KKyAgICAgIHZhciBuZXdWYWx1ZSA9ICcnICsgdmFsdWU7CisKKyAgICAgIC8v
IFRvIGF2b2lkIHNpZGUgZWZmZWN0cyAoc3VjaCBhcyBsb3NpbmcgdGV4dCBzZWxlY3Rpb24pLCBv
bmx5IHNldCB2YWx1ZSBpZiBjaGFuZ2VkCisgICAgICBpZiAobmV3VmFsdWUgIT09IG5vZGUudmFs
dWUpIHsKKyAgICAgICAgbm9kZS52YWx1ZSA9IG5ld1ZhbHVlOworICAgICAgfQorICAgIH0gZWxz
ZSB7CisgICAgICBpZiAocHJvcHMudmFsdWUgPT0gbnVsbCAmJiBwcm9wcy5kZWZhdWx0VmFsdWUg
IT0gbnVsbCkgeworICAgICAgICBub2RlLmRlZmF1bHRWYWx1ZSA9ICcnICsgcHJvcHMuZGVmYXVs
dFZhbHVlOworICAgICAgfQorICAgICAgaWYgKHByb3BzLmNoZWNrZWQgPT0gbnVsbCAmJiBwcm9w
cy5kZWZhdWx0Q2hlY2tlZCAhPSBudWxsKSB7CisgICAgICAgIG5vZGUuZGVmYXVsdENoZWNrZWQg
PSAhIXByb3BzLmRlZmF1bHRDaGVja2VkOworICAgICAgfQorICAgIH0KKyAgfSwKKworICBwb3N0
TW91bnRXcmFwcGVyOiBmdW5jdGlvbiAoaW5zdCkgeworICAgIHZhciBwcm9wcyA9IGluc3QuX2N1
cnJlbnRFbGVtZW50LnByb3BzOworCisgICAgLy8gVGhpcyBpcyBpbiBwb3N0TW91bnQgYmVjYXVz
ZSB3ZSBuZWVkIGFjY2VzcyB0byB0aGUgRE9NIG5vZGUsIHdoaWNoIGlzIG5vdAorICAgIC8vIGF2
YWlsYWJsZSB1bnRpbCBhZnRlciB0aGUgY29tcG9uZW50IGhhcyBtb3VudGVkLgorICAgIHZhciBu
b2RlID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCk7CisK
KyAgICAvLyBEZXRhY2ggdmFsdWUgZnJvbSBkZWZhdWx0VmFsdWUuIFdlIHdvbid0IGRvIGFueXRo
aW5nIGlmIHdlJ3JlIHdvcmtpbmcgb24KKyAgICAvLyBzdWJtaXQgb3IgcmVzZXQgaW5wdXRzIGFz
IHRob3NlIHZhbHVlcyAmIGRlZmF1bHRWYWx1ZXMgYXJlIGxpbmtlZC4gVGhleQorICAgIC8vIGFy
ZSBub3QgcmVzZXRhYmxlIG5vZGVzIHNvIHRoaXMgb3BlcmF0aW9uIGRvZXNuJ3QgbWF0dGVyIGFu
ZCBhY3R1YWxseQorICAgIC8vIHJlbW92ZXMgYnJvd3Nlci1kZWZhdWx0IHZhbHVlcyAoZWcgIlN1
Ym1pdCBRdWVyeSIpIHdoZW4gbm8gdmFsdWUgaXMKKyAgICAvLyBwcm92aWRlZC4KKworICAgIHN3
aXRjaCAocHJvcHMudHlwZSkgeworICAgICAgY2FzZSAnc3VibWl0JzoKKyAgICAgIGNhc2UgJ3Jl
c2V0JzoKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICdjb2xvcic6CisgICAgICBjYXNlICdk
YXRlJzoKKyAgICAgIGNhc2UgJ2RhdGV0aW1lJzoKKyAgICAgIGNhc2UgJ2RhdGV0aW1lLWxvY2Fs
JzoKKyAgICAgIGNhc2UgJ21vbnRoJzoKKyAgICAgIGNhc2UgJ3RpbWUnOgorICAgICAgY2FzZSAn
d2Vlayc6CisgICAgICAgIC8vIFRoaXMgZml4ZXMgdGhlIG5vLXNob3cgaXNzdWUgb24gaU9TIFNh
ZmFyaSBhbmQgQW5kcm9pZCBDaHJvbWU6CisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9m
YWNlYm9vay9yZWFjdC9pc3N1ZXMvNzIzMworICAgICAgICBub2RlLnZhbHVlID0gJyc7CisgICAg
ICAgIG5vZGUudmFsdWUgPSBub2RlLmRlZmF1bHRWYWx1ZTsKKyAgICAgICAgYnJlYWs7CisgICAg
ICBkZWZhdWx0OgorICAgICAgICBub2RlLnZhbHVlID0gbm9kZS52YWx1ZTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorCisgICAgLy8gTm9ybWFsbHksIHdlJ2QganVzdCBkbyBgbm9kZS5jaGVja2Vk
ID0gbm9kZS5jaGVja2VkYCB1cG9uIGluaXRpYWwgbW91bnQsIGxlc3MgdGhpcyBidWcKKyAgICAv
LyB0aGlzIGlzIG5lZWRlZCB0byB3b3JrIGFyb3VuZCBhIGNocm9tZSBidWcgd2hlcmUgc2V0dGlu
ZyBkZWZhdWx0Q2hlY2tlZAorICAgIC8vIHdpbGwgc29tZXRpbWVzIGluZmx1ZW5jZSB0aGUgdmFs
dWUgb2YgY2hlY2tlZCAoZXZlbiBhZnRlciBkZXRhY2htZW50KS4KKyAgICAvLyBSZWZlcmVuY2U6
IGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTYw
ODQxNgorICAgIC8vIFdlIG5lZWQgdG8gdGVtcG9yYXJpbHkgdW5zZXQgbmFtZSB0byBhdm9pZCBk
aXNydXB0aW5nIHJhZGlvIGJ1dHRvbiBncm91cHMuCisgICAgdmFyIG5hbWUgPSBub2RlLm5hbWU7
CisgICAgaWYgKG5hbWUgIT09ICcnKSB7CisgICAgICBub2RlLm5hbWUgPSAnJzsKKyAgICB9Cisg
ICAgbm9kZS5kZWZhdWx0Q2hlY2tlZCA9ICFub2RlLmRlZmF1bHRDaGVja2VkOworICAgIG5vZGUu
ZGVmYXVsdENoZWNrZWQgPSAhbm9kZS5kZWZhdWx0Q2hlY2tlZDsKKyAgICBpZiAobmFtZSAhPT0g
JycpIHsKKyAgICAgIG5vZGUubmFtZSA9IG5hbWU7CisgICAgfQorICB9Cit9OworCitmdW5jdGlv
biBfaGFuZGxlQ2hhbmdlKGV2ZW50KSB7CisgIHZhciBwcm9wcyA9IHRoaXMuX2N1cnJlbnRFbGVt
ZW50LnByb3BzOworCisgIHZhciByZXR1cm5WYWx1ZSA9IExpbmtlZFZhbHVlVXRpbHMuZXhlY3V0
ZU9uQ2hhbmdlKHByb3BzLCBldmVudCk7CisKKyAgLy8gSGVyZSB3ZSB1c2UgYXNhcCB0byB3YWl0
IHVudGlsIGFsbCB1cGRhdGVzIGhhdmUgcHJvcGFnYXRlZCwgd2hpY2gKKyAgLy8gaXMgaW1wb3J0
YW50IHdoZW4gdXNpbmcgY29udHJvbGxlZCBjb21wb25lbnRzIHdpdGhpbiBsYXllcnM6CisgIC8v
IGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvMTY5OAorICBSZWFjdFVw
ZGF0ZXMuYXNhcChmb3JjZVVwZGF0ZUlmTW91bnRlZCwgdGhpcyk7CisKKyAgdmFyIG5hbWUgPSBw
cm9wcy5uYW1lOworICBpZiAocHJvcHMudHlwZSA9PT0gJ3JhZGlvJyAmJiBuYW1lICE9IG51bGwp
IHsKKyAgICB2YXIgcm9vdE5vZGUgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21J
bnN0YW5jZSh0aGlzKTsKKyAgICB2YXIgcXVlcnlSb290ID0gcm9vdE5vZGU7CisKKyAgICB3aGls
ZSAocXVlcnlSb290LnBhcmVudE5vZGUpIHsKKyAgICAgIHF1ZXJ5Um9vdCA9IHF1ZXJ5Um9vdC5w
YXJlbnROb2RlOworICAgIH0KKworICAgIC8vIElmIGByb290Tm9kZS5mb3JtYCB3YXMgbm9uLW51
bGwsIHRoZW4gd2UgY291bGQgdHJ5IGBmb3JtLmVsZW1lbnRzYCwKKyAgICAvLyBidXQgdGhhdCBz
b21ldGltZXMgYmVoYXZlcyBzdHJhbmdlbHkgaW4gSUU4LiBXZSBjb3VsZCBhbHNvIHRyeSB1c2lu
ZworICAgIC8vIGBmb3JtLmdldEVsZW1lbnRzQnlOYW1lYCwgYnV0IHRoYXQgd2lsbCBvbmx5IHJl
dHVybiBkaXJlY3QgY2hpbGRyZW4KKyAgICAvLyBhbmQgd29uJ3QgaW5jbHVkZSBpbnB1dHMgdGhh
dCB1c2UgdGhlIEhUTUw1IGBmb3JtPWAgYXR0cmlidXRlLiBTaW5jZQorICAgIC8vIHRoZSBpbnB1
dCBtaWdodCBub3QgZXZlbiBiZSBpbiBhIGZvcm0sIGxldCdzIGp1c3QgdXNlIHRoZSBnbG9iYWwK
KyAgICAvLyBgcXVlcnlTZWxlY3RvckFsbGAgdG8gZW5zdXJlIHdlIGRvbid0IG1pc3MgYW55dGhp
bmcuCisgICAgdmFyIGdyb3VwID0gcXVlcnlSb290LnF1ZXJ5U2VsZWN0b3JBbGwoJ2lucHV0W25h
bWU9JyArIEpTT04uc3RyaW5naWZ5KCcnICsgbmFtZSkgKyAnXVt0eXBlPSJyYWRpbyJdJyk7CisK
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGdyb3VwLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIg
b3RoZXJOb2RlID0gZ3JvdXBbaV07CisgICAgICBpZiAob3RoZXJOb2RlID09PSByb290Tm9kZSB8
fCBvdGhlck5vZGUuZm9ybSAhPT0gcm9vdE5vZGUuZm9ybSkgeworICAgICAgICBjb250aW51ZTsK
KyAgICAgIH0KKyAgICAgIC8vIFRoaXMgd2lsbCB0aHJvdyBpZiByYWRpbyBidXR0b25zIHJlbmRl
cmVkIGJ5IGRpZmZlcmVudCBjb3BpZXMgb2YgUmVhY3QKKyAgICAgIC8vIGFuZCB0aGUgc2FtZSBu
YW1lIGFyZSByZW5kZXJlZCBpbnRvIHRoZSBzYW1lIGZvcm0gKHNhbWUgYXMgIzE5MzkpLgorICAg
ICAgLy8gVGhhdCdzIHByb2JhYmx5IG9rYXk7IHdlIGRvbid0IHN1cHBvcnQgaXQganVzdCBhcyB3
ZSBkb24ndCBzdXBwb3J0CisgICAgICAvLyBtaXhpbmcgUmVhY3QgcmFkaW8gYnV0dG9ucyB3aXRo
IG5vbi1SZWFjdCBvbmVzLgorICAgICAgdmFyIG90aGVySW5zdGFuY2UgPSBSZWFjdERPTUNvbXBv
bmVudFRyZWUuZ2V0SW5zdGFuY2VGcm9tTm9kZShvdGhlck5vZGUpOworICAgICAgIW90aGVySW5z
dGFuY2UgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50
KGZhbHNlLCAnUmVhY3RET01JbnB1dDogTWl4aW5nIFJlYWN0IGFuZCBub24tUmVhY3QgcmFkaW8g
aW5wdXRzIHdpdGggdGhlIHNhbWUgYG5hbWVgIGlzIG5vdCBzdXBwb3J0ZWQuJykgOiBfcHJvZElu
dmFyaWFudCgnOTAnKSA6IHZvaWQgMDsKKyAgICAgIC8vIElmIHRoaXMgaXMgYSBjb250cm9sbGVk
IHJhZGlvIGJ1dHRvbiBncm91cCwgZm9yY2luZyB0aGUgaW5wdXQgdGhhdAorICAgICAgLy8gd2Fz
IHByZXZpb3VzbHkgY2hlY2tlZCB0byB1cGRhdGUgd2lsbCBjYXVzZSBpdCB0byBiZSBjb21lIHJl
LWNoZWNrZWQKKyAgICAgIC8vIGFzIGFwcHJvcHJpYXRlLgorICAgICAgUmVhY3RVcGRhdGVzLmFz
YXAoZm9yY2VVcGRhdGVJZk1vdW50ZWQsIG90aGVySW5zdGFuY2UpOworICAgIH0KKyAgfQorCisg
IHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTUlucHV0
OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Jl
YWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0RE9NSW52YWxpZEFSSUFIb29rLmpz
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RET01J
bnZhbGlkQVJJQUhvb2suanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWE4YmE3NWQyOGM2MDJhNDgyM2E4MTM3ZTVk
NDdhN2MyYTI5NDlkMAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVf
bW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0RE9NSW52YWxpZEFSSUFIb29rLmpzCkBAIC0wLDAg
KzEsOTIgQEAKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4K
KyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNl
bnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0
aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRF
TlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7
CisKK3ZhciBET01Qcm9wZXJ0eSA9IHJlcXVpcmUoJy4vRE9NUHJvcGVydHknKTsKK3ZhciBSZWFj
dENvbXBvbmVudFRyZWVIb29rID0gcmVxdWlyZSgncmVhY3QvbGliL1JlYWN0Q29tcG9uZW50VHJl
ZUhvb2snKTsKKwordmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7CisK
K3ZhciB3YXJuZWRQcm9wZXJ0aWVzID0ge307Cit2YXIgckFSSUEgPSBuZXcgUmVnRXhwKCdeKGFy
aWEpLVsnICsgRE9NUHJvcGVydHkuQVRUUklCVVRFX05BTUVfQ0hBUiArICddKiQnKTsKKworZnVu
Y3Rpb24gdmFsaWRhdGVQcm9wZXJ0eSh0YWdOYW1lLCBuYW1lLCBkZWJ1Z0lEKSB7CisgIGlmICh3
YXJuZWRQcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KG5hbWUpICYmIHdhcm5lZFByb3BlcnRpZXNb
bmFtZV0pIHsKKyAgICByZXR1cm4gdHJ1ZTsKKyAgfQorCisgIGlmIChyQVJJQS50ZXN0KG5hbWUp
KSB7CisgICAgdmFyIGxvd2VyQ2FzZWROYW1lID0gbmFtZS50b0xvd2VyQ2FzZSgpOworICAgIHZh
ciBzdGFuZGFyZE5hbWUgPSBET01Qcm9wZXJ0eS5nZXRQb3NzaWJsZVN0YW5kYXJkTmFtZS5oYXNP
d25Qcm9wZXJ0eShsb3dlckNhc2VkTmFtZSkgPyBET01Qcm9wZXJ0eS5nZXRQb3NzaWJsZVN0YW5k
YXJkTmFtZVtsb3dlckNhc2VkTmFtZV0gOiBudWxsOworCisgICAgLy8gSWYgdGhpcyBpcyBhbiBh
cmlhLSogYXR0cmlidXRlLCBidXQgaXMgbm90IGxpc3RlZCBpbiB0aGUga25vd24gRE9NCisgICAg
Ly8gRE9NIHByb3BlcnRpZXMsIHRoZW4gaXQgaXMgYW4gaW52YWxpZCBhcmlhLSogYXR0cmlidXRl
LgorICAgIGlmIChzdGFuZGFyZE5hbWUgPT0gbnVsbCkgeworICAgICAgd2FybmVkUHJvcGVydGll
c1tuYW1lXSA9IHRydWU7CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIC8vIGFyaWEt
KiBhdHRyaWJ1dGVzIHNob3VsZCBiZSBsb3dlcmNhc2U7IHN1Z2dlc3QgdGhlIGxvd2VyY2FzZSB2
ZXJzaW9uLgorICAgIGlmIChuYW1lICE9PSBzdGFuZGFyZE5hbWUpIHsKKyAgICAgIHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnVW5rbm93biBB
UklBIGF0dHJpYnV0ZSAlcy4gRGlkIHlvdSBtZWFuICVzPyVzJywgbmFtZSwgc3RhbmRhcmROYW1l
LCBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldFN0YWNrQWRkZW5kdW1CeUlEKGRlYnVnSUQpKSA6
IHZvaWQgMDsKKyAgICAgIHdhcm5lZFByb3BlcnRpZXNbbmFtZV0gPSB0cnVlOworICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorICB9CisKKyAgcmV0dXJuIHRydWU7Cit9CisKK2Z1bmN0aW9uIHdh
cm5JbnZhbGlkQVJJQVByb3BzKGRlYnVnSUQsIGVsZW1lbnQpIHsKKyAgdmFyIGludmFsaWRQcm9w
cyA9IFtdOworCisgIGZvciAodmFyIGtleSBpbiBlbGVtZW50LnByb3BzKSB7CisgICAgdmFyIGlz
VmFsaWQgPSB2YWxpZGF0ZVByb3BlcnR5KGVsZW1lbnQudHlwZSwga2V5LCBkZWJ1Z0lEKTsKKyAg
ICBpZiAoIWlzVmFsaWQpIHsKKyAgICAgIGludmFsaWRQcm9wcy5wdXNoKGtleSk7CisgICAgfQor
ICB9CisKKyAgdmFyIHVua25vd25Qcm9wU3RyaW5nID0gaW52YWxpZFByb3BzLm1hcChmdW5jdGlv
biAocHJvcCkgeworICAgIHJldHVybiAnYCcgKyBwcm9wICsgJ2AnOworICB9KS5qb2luKCcsICcp
OworCisgIGlmIChpbnZhbGlkUHJvcHMubGVuZ3RoID09PSAxKSB7CisgICAgcHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdJbnZhbGlkIGFyaWEg
cHJvcCAlcyBvbiA8JXM+IHRhZy4gJyArICdGb3IgZGV0YWlscywgc2VlIGh0dHBzOi8vZmIubWUv
aW52YWxpZC1hcmlhLXByb3AlcycsIHVua25vd25Qcm9wU3RyaW5nLCBlbGVtZW50LnR5cGUsIFJl
YWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0U3RhY2tBZGRlbmR1bUJ5SUQoZGVidWdJRCkpIDogdm9p
ZCAwOworICB9IGVsc2UgaWYgKGludmFsaWRQcm9wcy5sZW5ndGggPiAxKSB7CisgICAgcHJvY2Vz
cy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdJbnZhbGlk
IGFyaWEgcHJvcHMgJXMgb24gPCVzPiB0YWcuICcgKyAnRm9yIGRldGFpbHMsIHNlZSBodHRwczov
L2ZiLm1lL2ludmFsaWQtYXJpYS1wcm9wJXMnLCB1bmtub3duUHJvcFN0cmluZywgZWxlbWVudC50
eXBlLCBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldFN0YWNrQWRkZW5kdW1CeUlEKGRlYnVnSUQp
KSA6IHZvaWQgMDsKKyAgfQorfQorCitmdW5jdGlvbiBoYW5kbGVFbGVtZW50KGRlYnVnSUQsIGVs
ZW1lbnQpIHsKKyAgaWYgKGVsZW1lbnQgPT0gbnVsbCB8fCB0eXBlb2YgZWxlbWVudC50eXBlICE9
PSAnc3RyaW5nJykgeworICAgIHJldHVybjsKKyAgfQorICBpZiAoZWxlbWVudC50eXBlLmluZGV4
T2YoJy0nKSA+PSAwIHx8IGVsZW1lbnQucHJvcHMuaXMpIHsKKyAgICByZXR1cm47CisgIH0KKwor
ICB3YXJuSW52YWxpZEFSSUFQcm9wcyhkZWJ1Z0lELCBlbGVtZW50KTsKK30KKwordmFyIFJlYWN0
RE9NSW52YWxpZEFSSUFIb29rID0geworICBvbkJlZm9yZU1vdW50Q29tcG9uZW50OiBmdW5jdGlv
biAoZGVidWdJRCwgZWxlbWVudCkgeworICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0g
J3Byb2R1Y3Rpb24nKSB7CisgICAgICBoYW5kbGVFbGVtZW50KGRlYnVnSUQsIGVsZW1lbnQpOwor
ICAgIH0KKyAgfSwKKyAgb25CZWZvcmVVcGRhdGVDb21wb25lbnQ6IGZ1bmN0aW9uIChkZWJ1Z0lE
LCBlbGVtZW50KSB7CisgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlv
bicpIHsKKyAgICAgIGhhbmRsZUVsZW1lbnQoZGVidWdJRCwgZWxlbWVudCk7CisgICAgfQorICB9
Cit9OworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9NSW52YWxpZEFSSUFIb29rOwpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVf
bW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0RE9NTnVsbElucHV0VmFsdWVQcm9wSG9vay5qcyBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0RE9NTnVs
bElucHV0VmFsdWVQcm9wSG9vay5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNWM1ZjIyZTA1ZDZjY2ZhMWNkZTE2
NGY2YmE3N2M5MDhhODU5YzU3Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qv
bm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RET01OdWxsSW5wdXRWYWx1ZVByb3BIb29r
LmpzCkBAIC0wLDAgKzEsNDIgQEAKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFj
ZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2Ug
Y29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhl
CisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisn
dXNlIHN0cmljdCc7CisKK3ZhciBSZWFjdENvbXBvbmVudFRyZWVIb29rID0gcmVxdWlyZSgncmVh
Y3QvbGliL1JlYWN0Q29tcG9uZW50VHJlZUhvb2snKTsKKwordmFyIHdhcm5pbmcgPSByZXF1aXJl
KCdmYmpzL2xpYi93YXJuaW5nJyk7CisKK3ZhciBkaWRXYXJuVmFsdWVOdWxsID0gZmFsc2U7CisK
K2Z1bmN0aW9uIGhhbmRsZUVsZW1lbnQoZGVidWdJRCwgZWxlbWVudCkgeworICBpZiAoZWxlbWVu
dCA9PSBudWxsKSB7CisgICAgcmV0dXJuOworICB9CisgIGlmIChlbGVtZW50LnR5cGUgIT09ICdp
bnB1dCcgJiYgZWxlbWVudC50eXBlICE9PSAndGV4dGFyZWEnICYmIGVsZW1lbnQudHlwZSAhPT0g
J3NlbGVjdCcpIHsKKyAgICByZXR1cm47CisgIH0KKyAgaWYgKGVsZW1lbnQucHJvcHMgIT0gbnVs
bCAmJiBlbGVtZW50LnByb3BzLnZhbHVlID09PSBudWxsICYmICFkaWRXYXJuVmFsdWVOdWxsKSB7
CisgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFs
c2UsICdgdmFsdWVgIHByb3Agb24gYCVzYCBzaG91bGQgbm90IGJlIG51bGwuICcgKyAnQ29uc2lk
ZXIgdXNpbmcgdGhlIGVtcHR5IHN0cmluZyB0byBjbGVhciB0aGUgY29tcG9uZW50IG9yIGB1bmRl
ZmluZWRgICcgKyAnZm9yIHVuY29udHJvbGxlZCBjb21wb25lbnRzLiVzJywgZWxlbWVudC50eXBl
LCBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldFN0YWNrQWRkZW5kdW1CeUlEKGRlYnVnSUQpKSA6
IHZvaWQgMDsKKworICAgIGRpZFdhcm5WYWx1ZU51bGwgPSB0cnVlOworICB9Cit9CisKK3ZhciBS
ZWFjdERPTU51bGxJbnB1dFZhbHVlUHJvcEhvb2sgPSB7CisgIG9uQmVmb3JlTW91bnRDb21wb25l
bnQ6IGZ1bmN0aW9uIChkZWJ1Z0lELCBlbGVtZW50KSB7CisgICAgaGFuZGxlRWxlbWVudChkZWJ1
Z0lELCBlbGVtZW50KTsKKyAgfSwKKyAgb25CZWZvcmVVcGRhdGVDb21wb25lbnQ6IGZ1bmN0aW9u
IChkZWJ1Z0lELCBlbGVtZW50KSB7CisgICAgaGFuZGxlRWxlbWVudChkZWJ1Z0lELCBlbGVtZW50
KTsKKyAgfQorfTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTU51bGxJbnB1dFZhbHVlUHJv
cEhvb2s7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RET01PcHRpb24uanMgYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdERPTU9wdGlv
bi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ODQ2ZTlkNTFkYzkzYmQzMmQ1MzgxOGRjMWIzYjEzOGEzOGNkNjYw
Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0
LWRvbS9saWIvUmVhY3RET01PcHRpb24uanMKQEAgLTAsMCArMSwxMjIgQEAKKy8qKgorICogQ29w
eXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0
eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBfYXNzaWduID0gcmVx
dWlyZSgnb2JqZWN0LWFzc2lnbicpOworCit2YXIgUmVhY3QgPSByZXF1aXJlKCdyZWFjdC9saWIv
UmVhY3QnKTsKK3ZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSByZXF1aXJlKCcuL1JlYWN0RE9N
Q29tcG9uZW50VHJlZScpOwordmFyIFJlYWN0RE9NU2VsZWN0ID0gcmVxdWlyZSgnLi9SZWFjdERP
TVNlbGVjdCcpOworCit2YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTsK
K3ZhciBkaWRXYXJuSW52YWxpZE9wdGlvbkNoaWxkcmVuID0gZmFsc2U7CisKK2Z1bmN0aW9uIGZs
YXR0ZW5DaGlsZHJlbihjaGlsZHJlbikgeworICB2YXIgY29udGVudCA9ICcnOworCisgIC8vIEZs
YXR0ZW4gY2hpbGRyZW4gYW5kIHdhcm4gaWYgdGhleSBhcmVuJ3Qgc3RyaW5ncyBvciBudW1iZXJz
OworICAvLyBpbnZhbGlkIHR5cGVzIGFyZSBpZ25vcmVkLgorICBSZWFjdC5DaGlsZHJlbi5mb3JF
YWNoKGNoaWxkcmVuLCBmdW5jdGlvbiAoY2hpbGQpIHsKKyAgICBpZiAoY2hpbGQgPT0gbnVsbCkg
eworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAodHlwZW9mIGNoaWxkID09PSAnc3RyaW5n
JyB8fCB0eXBlb2YgY2hpbGQgPT09ICdudW1iZXInKSB7CisgICAgICBjb250ZW50ICs9IGNoaWxk
OworICAgIH0gZWxzZSBpZiAoIWRpZFdhcm5JbnZhbGlkT3B0aW9uQ2hpbGRyZW4pIHsKKyAgICAg
IGRpZFdhcm5JbnZhbGlkT3B0aW9uQ2hpbGRyZW4gPSB0cnVlOworICAgICAgcHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdPbmx5IHN0cmluZ3Mg
YW5kIG51bWJlcnMgYXJlIHN1cHBvcnRlZCBhcyA8b3B0aW9uPiBjaGlsZHJlbi4nKSA6IHZvaWQg
MDsKKyAgICB9CisgIH0pOworCisgIHJldHVybiBjb250ZW50OworfQorCisvKioKKyAqIEltcGxl
bWVudHMgYW4gPG9wdGlvbj4gaG9zdCBjb21wb25lbnQgdGhhdCB3YXJucyB3aGVuIGBzZWxlY3Rl
ZGAgaXMgc2V0LgorICovCit2YXIgUmVhY3RET01PcHRpb24gPSB7CisgIG1vdW50V3JhcHBlcjog
ZnVuY3Rpb24gKGluc3QsIHByb3BzLCBob3N0UGFyZW50KSB7CisgICAgLy8gVE9ETyAoeXVuZ3N0
ZXJzKTogUmVtb3ZlIHN1cHBvcnQgZm9yIGBzZWxlY3RlZGAgaW4gPG9wdGlvbj4uCisgICAgaWYg
KHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgIHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHByb3BzLnNlbGVjdGVkID09
IG51bGwsICdVc2UgdGhlIGBkZWZhdWx0VmFsdWVgIG9yIGB2YWx1ZWAgcHJvcHMgb24gPHNlbGVj
dD4gaW5zdGVhZCBvZiAnICsgJ3NldHRpbmcgYHNlbGVjdGVkYCBvbiA8b3B0aW9uPi4nKSA6IHZv
aWQgMDsKKyAgICB9CisKKyAgICAvLyBMb29rIHVwIHdoZXRoZXIgdGhpcyBvcHRpb24gaXMgJ3Nl
bGVjdGVkJworICAgIHZhciBzZWxlY3RWYWx1ZSA9IG51bGw7CisgICAgaWYgKGhvc3RQYXJlbnQg
IT0gbnVsbCkgeworICAgICAgdmFyIHNlbGVjdFBhcmVudCA9IGhvc3RQYXJlbnQ7CisKKyAgICAg
IGlmIChzZWxlY3RQYXJlbnQuX3RhZyA9PT0gJ29wdGdyb3VwJykgeworICAgICAgICBzZWxlY3RQ
YXJlbnQgPSBzZWxlY3RQYXJlbnQuX2hvc3RQYXJlbnQ7CisgICAgICB9CisKKyAgICAgIGlmIChz
ZWxlY3RQYXJlbnQgIT0gbnVsbCAmJiBzZWxlY3RQYXJlbnQuX3RhZyA9PT0gJ3NlbGVjdCcpIHsK
KyAgICAgICAgc2VsZWN0VmFsdWUgPSBSZWFjdERPTVNlbGVjdC5nZXRTZWxlY3RWYWx1ZUNvbnRl
eHQoc2VsZWN0UGFyZW50KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICAvLyBJZiB0aGUgdmFsdWUg
aXMgbnVsbCAoZS5nLiwgbm8gc3BlY2lmaWVkIHZhbHVlIG9yIGFmdGVyIGluaXRpYWwgbW91bnQp
CisgICAgLy8gb3IgbWlzc2luZyAoZS5nLiwgZm9yIDxkYXRhbGlzdD4pLCB3ZSBkb24ndCBjaGFu
Z2UgcHJvcHMuc2VsZWN0ZWQKKyAgICB2YXIgc2VsZWN0ZWQgPSBudWxsOworICAgIGlmIChzZWxl
Y3RWYWx1ZSAhPSBudWxsKSB7CisgICAgICB2YXIgdmFsdWU7CisgICAgICBpZiAocHJvcHMudmFs
dWUgIT0gbnVsbCkgeworICAgICAgICB2YWx1ZSA9IHByb3BzLnZhbHVlICsgJyc7CisgICAgICB9
IGVsc2UgeworICAgICAgICB2YWx1ZSA9IGZsYXR0ZW5DaGlsZHJlbihwcm9wcy5jaGlsZHJlbik7
CisgICAgICB9CisgICAgICBzZWxlY3RlZCA9IGZhbHNlOworICAgICAgaWYgKEFycmF5LmlzQXJy
YXkoc2VsZWN0VmFsdWUpKSB7CisgICAgICAgIC8vIG11bHRpcGxlCisgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgc2VsZWN0VmFsdWUubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICBpZiAoJycg
KyBzZWxlY3RWYWx1ZVtpXSA9PT0gdmFsdWUpIHsKKyAgICAgICAgICAgIHNlbGVjdGVkID0gdHJ1
ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfSBl
bHNlIHsKKyAgICAgICAgc2VsZWN0ZWQgPSAnJyArIHNlbGVjdFZhbHVlID09PSB2YWx1ZTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICBpbnN0Ll93cmFwcGVyU3RhdGUgPSB7IHNlbGVjdGVkOiBzZWxl
Y3RlZCB9OworICB9LAorCisgIHBvc3RNb3VudFdyYXBwZXI6IGZ1bmN0aW9uIChpbnN0KSB7Cisg
ICAgLy8gdmFsdWU9IiIgc2hvdWxkIG1ha2UgYSB2YWx1ZSBhdHRyaWJ1dGUgKCM2MjE5KQorICAg
IHZhciBwcm9wcyA9IGluc3QuX2N1cnJlbnRFbGVtZW50LnByb3BzOworICAgIGlmIChwcm9wcy52
YWx1ZSAhPSBudWxsKSB7CisgICAgICB2YXIgbm9kZSA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5n
ZXROb2RlRnJvbUluc3RhbmNlKGluc3QpOworICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoJ3ZhbHVl
JywgcHJvcHMudmFsdWUpOworICAgIH0KKyAgfSwKKworICBnZXRIb3N0UHJvcHM6IGZ1bmN0aW9u
IChpbnN0LCBwcm9wcykgeworICAgIHZhciBob3N0UHJvcHMgPSBfYXNzaWduKHsgc2VsZWN0ZWQ6
IHVuZGVmaW5lZCwgY2hpbGRyZW46IHVuZGVmaW5lZCB9LCBwcm9wcyk7CisKKyAgICAvLyBSZWFk
IHN0YXRlIG9ubHkgZnJvbSBpbml0aWFsIG1vdW50IGJlY2F1c2UgPHNlbGVjdD4gdXBkYXRlcyB2
YWx1ZQorICAgIC8vIG1hbnVhbGx5OyB3ZSBuZWVkIHRoZSBpbml0aWFsIHN0YXRlIG9ubHkgZm9y
IHNlcnZlciByZW5kZXJpbmcKKyAgICBpZiAoaW5zdC5fd3JhcHBlclN0YXRlLnNlbGVjdGVkICE9
IG51bGwpIHsKKyAgICAgIGhvc3RQcm9wcy5zZWxlY3RlZCA9IGluc3QuX3dyYXBwZXJTdGF0ZS5z
ZWxlY3RlZDsKKyAgICB9CisKKyAgICB2YXIgY29udGVudCA9IGZsYXR0ZW5DaGlsZHJlbihwcm9w
cy5jaGlsZHJlbik7CisKKyAgICBpZiAoY29udGVudCkgeworICAgICAgaG9zdFByb3BzLmNoaWxk
cmVuID0gY29udGVudDsKKyAgICB9CisKKyAgICByZXR1cm4gaG9zdFByb3BzOworICB9CisKK307
CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RET01PcHRpb247ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0
LWRvbS9saWIvUmVhY3RET01TZWxlY3QuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVs
ZXMvcmVhY3QtZG9tL2xpYi9SZWFjdERPTVNlbGVjdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NzE4MGFkNzVh
ODQ5MmM5ZjI5NWFjM2NmNDQ3ZjMzYmIxNjUyNjEyCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RET01TZWxlY3QuanMK
QEAgLTAsMCArMSwxOTkgQEAKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJv
b2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29k
ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisg
KiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUu
IEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNl
IHN0cmljdCc7CisKK3ZhciBfYXNzaWduID0gcmVxdWlyZSgnb2JqZWN0LWFzc2lnbicpOworCit2
YXIgTGlua2VkVmFsdWVVdGlscyA9IHJlcXVpcmUoJy4vTGlua2VkVmFsdWVVdGlscycpOwordmFy
IFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IHJlcXVpcmUoJy4vUmVhY3RET01Db21wb25lbnRUcmVl
Jyk7Cit2YXIgUmVhY3RVcGRhdGVzID0gcmVxdWlyZSgnLi9SZWFjdFVwZGF0ZXMnKTsKKwordmFy
IHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7CisKK3ZhciBkaWRXYXJuVmFs
dWVMaW5rID0gZmFsc2U7Cit2YXIgZGlkV2FyblZhbHVlRGVmYXVsdFZhbHVlID0gZmFsc2U7CisK
K2Z1bmN0aW9uIHVwZGF0ZU9wdGlvbnNJZlBlbmRpbmdVcGRhdGVBbmRNb3VudGVkKCkgeworICBp
ZiAodGhpcy5fcm9vdE5vZGVJRCAmJiB0aGlzLl93cmFwcGVyU3RhdGUucGVuZGluZ1VwZGF0ZSkg
eworICAgIHRoaXMuX3dyYXBwZXJTdGF0ZS5wZW5kaW5nVXBkYXRlID0gZmFsc2U7CisKKyAgICB2
YXIgcHJvcHMgPSB0aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wczsKKyAgICB2YXIgdmFsdWUgPSBM
aW5rZWRWYWx1ZVV0aWxzLmdldFZhbHVlKHByb3BzKTsKKworICAgIGlmICh2YWx1ZSAhPSBudWxs
KSB7CisgICAgICB1cGRhdGVPcHRpb25zKHRoaXMsIEJvb2xlYW4ocHJvcHMubXVsdGlwbGUpLCB2
YWx1ZSk7CisgICAgfQorICB9Cit9CisKK2Z1bmN0aW9uIGdldERlY2xhcmF0aW9uRXJyb3JBZGRl
bmR1bShvd25lcikgeworICBpZiAob3duZXIpIHsKKyAgICB2YXIgbmFtZSA9IG93bmVyLmdldE5h
bWUoKTsKKyAgICBpZiAobmFtZSkgeworICAgICAgcmV0dXJuICcgQ2hlY2sgdGhlIHJlbmRlciBt
ZXRob2Qgb2YgYCcgKyBuYW1lICsgJ2AuJzsKKyAgICB9CisgIH0KKyAgcmV0dXJuICcnOworfQor
Cit2YXIgdmFsdWVQcm9wTmFtZXMgPSBbJ3ZhbHVlJywgJ2RlZmF1bHRWYWx1ZSddOworCisvKioK
KyAqIFZhbGlkYXRpb24gZnVuY3Rpb24gZm9yIGB2YWx1ZWAgYW5kIGBkZWZhdWx0VmFsdWVgLgor
ICogQHByaXZhdGUKKyAqLworZnVuY3Rpb24gY2hlY2tTZWxlY3RQcm9wVHlwZXMoaW5zdCwgcHJv
cHMpIHsKKyAgdmFyIG93bmVyID0gaW5zdC5fY3VycmVudEVsZW1lbnQuX293bmVyOworICBMaW5r
ZWRWYWx1ZVV0aWxzLmNoZWNrUHJvcFR5cGVzKCdzZWxlY3QnLCBwcm9wcywgb3duZXIpOworCisg
IGlmIChwcm9wcy52YWx1ZUxpbmsgIT09IHVuZGVmaW5lZCAmJiAhZGlkV2FyblZhbHVlTGluaykg
eworICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZh
bHNlLCAnYHZhbHVlTGlua2AgcHJvcCBvbiBgc2VsZWN0YCBpcyBkZXByZWNhdGVkOyBzZXQgYHZh
bHVlYCBhbmQgYG9uQ2hhbmdlYCBpbnN0ZWFkLicpIDogdm9pZCAwOworICAgIGRpZFdhcm5WYWx1
ZUxpbmsgPSB0cnVlOworICB9CisKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWx1ZVByb3BOYW1l
cy5sZW5ndGg7IGkrKykgeworICAgIHZhciBwcm9wTmFtZSA9IHZhbHVlUHJvcE5hbWVzW2ldOwor
ICAgIGlmIChwcm9wc1twcm9wTmFtZV0gPT0gbnVsbCkgeworICAgICAgY29udGludWU7CisgICAg
fQorICAgIHZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheShwcm9wc1twcm9wTmFtZV0pOworICAg
IGlmIChwcm9wcy5tdWx0aXBsZSAmJiAhaXNBcnJheSkgeworICAgICAgcHJvY2Vzcy5lbnYuTk9E
RV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdUaGUgYCVzYCBwcm9wIHN1
cHBsaWVkIHRvIDxzZWxlY3Q+IG11c3QgYmUgYW4gYXJyYXkgaWYgJyArICdgbXVsdGlwbGVgIGlz
IHRydWUuJXMnLCBwcm9wTmFtZSwgZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKG93bmVyKSkg
OiB2b2lkIDA7CisgICAgfSBlbHNlIGlmICghcHJvcHMubXVsdGlwbGUgJiYgaXNBcnJheSkgewor
ICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFs
c2UsICdUaGUgYCVzYCBwcm9wIHN1cHBsaWVkIHRvIDxzZWxlY3Q+IG11c3QgYmUgYSBzY2FsYXIg
JyArICd2YWx1ZSBpZiBgbXVsdGlwbGVgIGlzIGZhbHNlLiVzJywgcHJvcE5hbWUsIGdldERlY2xh
cmF0aW9uRXJyb3JBZGRlbmR1bShvd25lcikpIDogdm9pZCAwOworICAgIH0KKyAgfQorfQorCisv
KioKKyAqIEBwYXJhbSB7UmVhY3RET01Db21wb25lbnR9IGluc3QKKyAqIEBwYXJhbSB7Ym9vbGVh
bn0gbXVsdGlwbGUKKyAqIEBwYXJhbSB7Kn0gcHJvcFZhbHVlIEEgc3RyaW5nYWJsZSAod2l0aCBg
bXVsdGlwbGVgLCBhIGxpc3Qgb2Ygc3RyaW5nYWJsZXMpLgorICogQHByaXZhdGUKKyAqLworZnVu
Y3Rpb24gdXBkYXRlT3B0aW9ucyhpbnN0LCBtdWx0aXBsZSwgcHJvcFZhbHVlKSB7CisgIHZhciBz
ZWxlY3RlZFZhbHVlLCBpOworICB2YXIgb3B0aW9ucyA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5n
ZXROb2RlRnJvbUluc3RhbmNlKGluc3QpLm9wdGlvbnM7CisKKyAgaWYgKG11bHRpcGxlKSB7Cisg
ICAgc2VsZWN0ZWRWYWx1ZSA9IHt9OworICAgIGZvciAoaSA9IDA7IGkgPCBwcm9wVmFsdWUubGVu
Z3RoOyBpKyspIHsKKyAgICAgIHNlbGVjdGVkVmFsdWVbJycgKyBwcm9wVmFsdWVbaV1dID0gdHJ1
ZTsKKyAgICB9CisgICAgZm9yIChpID0gMDsgaSA8IG9wdGlvbnMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgIHZhciBzZWxlY3RlZCA9IHNlbGVjdGVkVmFsdWUuaGFzT3duUHJvcGVydHkob3B0aW9uc1tp
XS52YWx1ZSk7CisgICAgICBpZiAob3B0aW9uc1tpXS5zZWxlY3RlZCAhPT0gc2VsZWN0ZWQpIHsK
KyAgICAgICAgb3B0aW9uc1tpXS5zZWxlY3RlZCA9IHNlbGVjdGVkOworICAgICAgfQorICAgIH0K
KyAgfSBlbHNlIHsKKyAgICAvLyBEbyBub3Qgc2V0IGBzZWxlY3QudmFsdWVgIGFzIGV4YWN0IGJl
aGF2aW9yIGlzbid0IGNvbnNpc3RlbnQgYWNyb3NzIGFsbAorICAgIC8vIGJyb3dzZXJzIGZvciBh
bGwgY2FzZXMuCisgICAgc2VsZWN0ZWRWYWx1ZSA9ICcnICsgcHJvcFZhbHVlOworICAgIGZvciAo
aSA9IDA7IGkgPCBvcHRpb25zLmxlbmd0aDsgaSsrKSB7CisgICAgICBpZiAob3B0aW9uc1tpXS52
YWx1ZSA9PT0gc2VsZWN0ZWRWYWx1ZSkgeworICAgICAgICBvcHRpb25zW2ldLnNlbGVjdGVkID0g
dHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAgICAgfQorICAgIH0KKyAgICBpZiAob3B0aW9ucy5s
ZW5ndGgpIHsKKyAgICAgIG9wdGlvbnNbMF0uc2VsZWN0ZWQgPSB0cnVlOworICAgIH0KKyAgfQor
fQorCisvKioKKyAqIEltcGxlbWVudHMgYSA8c2VsZWN0PiBob3N0IGNvbXBvbmVudCB0aGF0IGFs
bG93cyBvcHRpb25hbGx5IHNldHRpbmcgdGhlCisgKiBwcm9wcyBgdmFsdWVgIGFuZCBgZGVmYXVs
dFZhbHVlYC4gSWYgYG11bHRpcGxlYCBpcyBmYWxzZSwgdGhlIHByb3AgbXVzdCBiZSBhCisgKiBz
dHJpbmdhYmxlLiBJZiBgbXVsdGlwbGVgIGlzIHRydWUsIHRoZSBwcm9wIG11c3QgYmUgYW4gYXJy
YXkgb2Ygc3RyaW5nYWJsZXMuCisgKgorICogSWYgYHZhbHVlYCBpcyBub3Qgc3VwcGxpZWQgKG9y
IG51bGwvdW5kZWZpbmVkKSwgdXNlciBhY3Rpb25zIHRoYXQgY2hhbmdlIHRoZQorICogc2VsZWN0
ZWQgb3B0aW9uIHdpbGwgdHJpZ2dlciB1cGRhdGVzIHRvIHRoZSByZW5kZXJlZCBvcHRpb25zLgor
ICoKKyAqIElmIGl0IGlzIHN1cHBsaWVkIChhbmQgbm90IG51bGwvdW5kZWZpbmVkKSwgdGhlIHJl
bmRlcmVkIG9wdGlvbnMgd2lsbCBub3QKKyAqIHVwZGF0ZSBpbiByZXNwb25zZSB0byB1c2VyIGFj
dGlvbnMuIEluc3RlYWQsIHRoZSBgdmFsdWVgIHByb3AgbXVzdCBjaGFuZ2UgaW4KKyAqIG9yZGVy
IGZvciB0aGUgcmVuZGVyZWQgb3B0aW9ucyB0byB1cGRhdGUuCisgKgorICogSWYgYGRlZmF1bHRW
YWx1ZWAgaXMgcHJvdmlkZWQsIGFueSBvcHRpb25zIHdpdGggdGhlIHN1cHBsaWVkIHZhbHVlcyB3
aWxsIGJlCisgKiBzZWxlY3RlZC4KKyAqLwordmFyIFJlYWN0RE9NU2VsZWN0ID0geworICBnZXRI
b3N0UHJvcHM6IGZ1bmN0aW9uIChpbnN0LCBwcm9wcykgeworICAgIHJldHVybiBfYXNzaWduKHt9
LCBwcm9wcywgeworICAgICAgb25DaGFuZ2U6IGluc3QuX3dyYXBwZXJTdGF0ZS5vbkNoYW5nZSwK
KyAgICAgIHZhbHVlOiB1bmRlZmluZWQKKyAgICB9KTsKKyAgfSwKKworICBtb3VudFdyYXBwZXI6
IGZ1bmN0aW9uIChpbnN0LCBwcm9wcykgeworICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAh
PT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICBjaGVja1NlbGVjdFByb3BUeXBlcyhpbnN0LCBwcm9w
cyk7CisgICAgfQorCisgICAgdmFyIHZhbHVlID0gTGlua2VkVmFsdWVVdGlscy5nZXRWYWx1ZShw
cm9wcyk7CisgICAgaW5zdC5fd3JhcHBlclN0YXRlID0geworICAgICAgcGVuZGluZ1VwZGF0ZTog
ZmFsc2UsCisgICAgICBpbml0aWFsVmFsdWU6IHZhbHVlICE9IG51bGwgPyB2YWx1ZSA6IHByb3Bz
LmRlZmF1bHRWYWx1ZSwKKyAgICAgIGxpc3RlbmVyczogbnVsbCwKKyAgICAgIG9uQ2hhbmdlOiBf
aGFuZGxlQ2hhbmdlLmJpbmQoaW5zdCksCisgICAgICB3YXNNdWx0aXBsZTogQm9vbGVhbihwcm9w
cy5tdWx0aXBsZSkKKyAgICB9OworCisgICAgaWYgKHByb3BzLnZhbHVlICE9PSB1bmRlZmluZWQg
JiYgcHJvcHMuZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQgJiYgIWRpZFdhcm5WYWx1ZURlZmF1
bHRWYWx1ZSkgeworICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/
IHdhcm5pbmcoZmFsc2UsICdTZWxlY3QgZWxlbWVudHMgbXVzdCBiZSBlaXRoZXIgY29udHJvbGxl
ZCBvciB1bmNvbnRyb2xsZWQgJyArICcoc3BlY2lmeSBlaXRoZXIgdGhlIHZhbHVlIHByb3AsIG9y
IHRoZSBkZWZhdWx0VmFsdWUgcHJvcCwgYnV0IG5vdCAnICsgJ2JvdGgpLiBEZWNpZGUgYmV0d2Vl
biB1c2luZyBhIGNvbnRyb2xsZWQgb3IgdW5jb250cm9sbGVkIHNlbGVjdCAnICsgJ2VsZW1lbnQg
YW5kIHJlbW92ZSBvbmUgb2YgdGhlc2UgcHJvcHMuIE1vcmUgaW5mbzogJyArICdodHRwczovL2Zi
Lm1lL3JlYWN0LWNvbnRyb2xsZWQtY29tcG9uZW50cycpIDogdm9pZCAwOworICAgICAgZGlkV2Fy
blZhbHVlRGVmYXVsdFZhbHVlID0gdHJ1ZTsKKyAgICB9CisgIH0sCisKKyAgZ2V0U2VsZWN0VmFs
dWVDb250ZXh0OiBmdW5jdGlvbiAoaW5zdCkgeworICAgIC8vIFJlYWN0RE9NT3B0aW9uIGxvb2tz
IGF0IHRoaXMgaW5pdGlhbCB2YWx1ZSBzbyB0aGUgaW5pdGlhbCBnZW5lcmF0ZWQKKyAgICAvLyBt
YXJrdXAgaGFzIGNvcnJlY3QgYHNlbGVjdGVkYCBhdHRyaWJ1dGVzCisgICAgcmV0dXJuIGluc3Qu
X3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWU7CisgIH0sCisKKyAgcG9zdFVwZGF0ZVdyYXBwZXI6
IGZ1bmN0aW9uIChpbnN0KSB7CisgICAgdmFyIHByb3BzID0gaW5zdC5fY3VycmVudEVsZW1lbnQu
cHJvcHM7CisKKyAgICAvLyBBZnRlciB0aGUgaW5pdGlhbCBtb3VudCwgd2UgY29udHJvbCBzZWxl
Y3RlZC1uZXNzIG1hbnVhbGx5IHNvIGRvbid0IHBhc3MKKyAgICAvLyB0aGlzIHZhbHVlIGRvd24K
KyAgICBpbnN0Ll93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlID0gdW5kZWZpbmVkOworCisgICAg
dmFyIHdhc011bHRpcGxlID0gaW5zdC5fd3JhcHBlclN0YXRlLndhc011bHRpcGxlOworICAgIGlu
c3QuX3dyYXBwZXJTdGF0ZS53YXNNdWx0aXBsZSA9IEJvb2xlYW4ocHJvcHMubXVsdGlwbGUpOwor
CisgICAgdmFyIHZhbHVlID0gTGlua2VkVmFsdWVVdGlscy5nZXRWYWx1ZShwcm9wcyk7CisgICAg
aWYgKHZhbHVlICE9IG51bGwpIHsKKyAgICAgIGluc3QuX3dyYXBwZXJTdGF0ZS5wZW5kaW5nVXBk
YXRlID0gZmFsc2U7CisgICAgICB1cGRhdGVPcHRpb25zKGluc3QsIEJvb2xlYW4ocHJvcHMubXVs
dGlwbGUpLCB2YWx1ZSk7CisgICAgfSBlbHNlIGlmICh3YXNNdWx0aXBsZSAhPT0gQm9vbGVhbihw
cm9wcy5tdWx0aXBsZSkpIHsKKyAgICAgIC8vIEZvciBzaW1wbGljaXR5LCByZWFwcGx5IGBkZWZh
dWx0VmFsdWVgIGlmIGBtdWx0aXBsZWAgaXMgdG9nZ2xlZC4KKyAgICAgIGlmIChwcm9wcy5kZWZh
dWx0VmFsdWUgIT0gbnVsbCkgeworICAgICAgICB1cGRhdGVPcHRpb25zKGluc3QsIEJvb2xlYW4o
cHJvcHMubXVsdGlwbGUpLCBwcm9wcy5kZWZhdWx0VmFsdWUpOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgLy8gUmV2ZXJ0IHRoZSBzZWxlY3QgYmFjayB0byBpdHMgZGVmYXVsdCB1bnNlbGVjdGVk
IHN0YXRlLgorICAgICAgICB1cGRhdGVPcHRpb25zKGluc3QsIEJvb2xlYW4ocHJvcHMubXVsdGlw
bGUpLCBwcm9wcy5tdWx0aXBsZSA/IFtdIDogJycpOworICAgICAgfQorICAgIH0KKyAgfQorfTsK
KworZnVuY3Rpb24gX2hhbmRsZUNoYW5nZShldmVudCkgeworICB2YXIgcHJvcHMgPSB0aGlzLl9j
dXJyZW50RWxlbWVudC5wcm9wczsKKyAgdmFyIHJldHVyblZhbHVlID0gTGlua2VkVmFsdWVVdGls
cy5leGVjdXRlT25DaGFuZ2UocHJvcHMsIGV2ZW50KTsKKworICBpZiAodGhpcy5fcm9vdE5vZGVJ
RCkgeworICAgIHRoaXMuX3dyYXBwZXJTdGF0ZS5wZW5kaW5nVXBkYXRlID0gdHJ1ZTsKKyAgfQor
ICBSZWFjdFVwZGF0ZXMuYXNhcCh1cGRhdGVPcHRpb25zSWZQZW5kaW5nVXBkYXRlQW5kTW91bnRl
ZCwgdGhpcyk7CisgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBS
ZWFjdERPTVNlbGVjdDsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdERPTVNlbGVj
dGlvbi5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1Jl
YWN0RE9NU2VsZWN0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMyNDA0ZWYwOWRmMGRhNzZhYzI1YmQ1OTJm
YTRmOTRhOGVhYzFhMDYKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2Rl
X21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdERPTVNlbGVjdGlvbi5qcwpAQCAtMCwwICsxLDIx
MSBAQAorLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICog
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2Vk
IHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25h
bCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMg
ZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwor
dmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gcmVxdWlyZSgnZmJqcy9saWIvRXhlY3V0aW9uRW52
aXJvbm1lbnQnKTsKKwordmFyIGdldE5vZGVGb3JDaGFyYWN0ZXJPZmZzZXQgPSByZXF1aXJlKCcu
L2dldE5vZGVGb3JDaGFyYWN0ZXJPZmZzZXQnKTsKK3ZhciBnZXRUZXh0Q29udGVudEFjY2Vzc29y
ID0gcmVxdWlyZSgnLi9nZXRUZXh0Q29udGVudEFjY2Vzc29yJyk7CisKKy8qKgorICogV2hpbGUg
YGlzQ29sbGFwc2VkYCBpcyBhdmFpbGFibGUgb24gdGhlIFNlbGVjdGlvbiBvYmplY3QgYW5kIGBj
b2xsYXBzZWRgCisgKiBpcyBhdmFpbGFibGUgb24gdGhlIFJhbmdlIG9iamVjdCwgSUUxMSBzb21l
dGltZXMgZ2V0cyB0aGVtIHdyb25nLgorICogSWYgdGhlIGFuY2hvci9mb2N1cyBub2RlcyBhbmQg
b2Zmc2V0cyBhcmUgdGhlIHNhbWUsIHRoZSByYW5nZSBpcyBjb2xsYXBzZWQuCisgKi8KK2Z1bmN0
aW9uIGlzQ29sbGFwc2VkKGFuY2hvck5vZGUsIGFuY2hvck9mZnNldCwgZm9jdXNOb2RlLCBmb2N1
c09mZnNldCkgeworICByZXR1cm4gYW5jaG9yTm9kZSA9PT0gZm9jdXNOb2RlICYmIGFuY2hvck9m
ZnNldCA9PT0gZm9jdXNPZmZzZXQ7Cit9CisKKy8qKgorICogR2V0IHRoZSBhcHByb3ByaWF0ZSBh
bmNob3IgYW5kIGZvY3VzIG5vZGUvb2Zmc2V0IHBhaXJzIGZvciBJRS4KKyAqCisgKiBUaGUgY2F0
Y2ggaGVyZSBpcyB0aGF0IElFJ3Mgc2VsZWN0aW9uIEFQSSBkb2Vzbid0IHByb3ZpZGUgaW5mb3Jt
YXRpb24KKyAqIGFib3V0IHdoZXRoZXIgdGhlIHNlbGVjdGlvbiBpcyBmb3J3YXJkIG9yIGJhY2t3
YXJkLCBzbyB3ZSBoYXZlIHRvCisgKiBiZWhhdmUgYXMgdGhvdWdoIGl0J3MgYWx3YXlzIGZvcndh
cmQuCisgKgorICogSUUgdGV4dCBkaWZmZXJzIGZyb20gbW9kZXJuIHNlbGVjdGlvbiBpbiB0aGF0
IGl0IGJlaGF2ZXMgYXMgdGhvdWdoCisgKiBibG9jayBlbGVtZW50cyBlbmQgd2l0aCBhIG5ldyBs
aW5lLiBUaGlzIG1lYW5zIGNoYXJhY3RlciBvZmZzZXRzIHdpbGwKKyAqIGRpZmZlciBiZXR3ZWVu
IHRoZSB0d28gQVBJcy4KKyAqCisgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IG5vZGUKKyAqIEByZXR1
cm4ge29iamVjdH0KKyAqLworZnVuY3Rpb24gZ2V0SUVPZmZzZXRzKG5vZGUpIHsKKyAgdmFyIHNl
bGVjdGlvbiA9IGRvY3VtZW50LnNlbGVjdGlvbjsKKyAgdmFyIHNlbGVjdGVkUmFuZ2UgPSBzZWxl
Y3Rpb24uY3JlYXRlUmFuZ2UoKTsKKyAgdmFyIHNlbGVjdGVkTGVuZ3RoID0gc2VsZWN0ZWRSYW5n
ZS50ZXh0Lmxlbmd0aDsKKworICAvLyBEdXBsaWNhdGUgc2VsZWN0aW9uIHNvIHdlIGNhbiBtb3Zl
IHJhbmdlIHdpdGhvdXQgYnJlYWtpbmcgdXNlciBzZWxlY3Rpb24uCisgIHZhciBmcm9tU3RhcnQg
PSBzZWxlY3RlZFJhbmdlLmR1cGxpY2F0ZSgpOworICBmcm9tU3RhcnQubW92ZVRvRWxlbWVudFRl
eHQobm9kZSk7CisgIGZyb21TdGFydC5zZXRFbmRQb2ludCgnRW5kVG9TdGFydCcsIHNlbGVjdGVk
UmFuZ2UpOworCisgIHZhciBzdGFydE9mZnNldCA9IGZyb21TdGFydC50ZXh0Lmxlbmd0aDsKKyAg
dmFyIGVuZE9mZnNldCA9IHN0YXJ0T2Zmc2V0ICsgc2VsZWN0ZWRMZW5ndGg7CisKKyAgcmV0dXJu
IHsKKyAgICBzdGFydDogc3RhcnRPZmZzZXQsCisgICAgZW5kOiBlbmRPZmZzZXQKKyAgfTsKK30K
KworLyoqCisgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IG5vZGUKKyAqIEByZXR1cm4gez9vYmplY3R9
CisgKi8KK2Z1bmN0aW9uIGdldE1vZGVybk9mZnNldHMobm9kZSkgeworICB2YXIgc2VsZWN0aW9u
ID0gd2luZG93LmdldFNlbGVjdGlvbiAmJiB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CisKKyAgaWYg
KCFzZWxlY3Rpb24gfHwgc2VsZWN0aW9uLnJhbmdlQ291bnQgPT09IDApIHsKKyAgICByZXR1cm4g
bnVsbDsKKyAgfQorCisgIHZhciBhbmNob3JOb2RlID0gc2VsZWN0aW9uLmFuY2hvck5vZGU7Cisg
IHZhciBhbmNob3JPZmZzZXQgPSBzZWxlY3Rpb24uYW5jaG9yT2Zmc2V0OworICB2YXIgZm9jdXNO
b2RlID0gc2VsZWN0aW9uLmZvY3VzTm9kZTsKKyAgdmFyIGZvY3VzT2Zmc2V0ID0gc2VsZWN0aW9u
LmZvY3VzT2Zmc2V0OworCisgIHZhciBjdXJyZW50UmFuZ2UgPSBzZWxlY3Rpb24uZ2V0UmFuZ2VB
dCgwKTsKKworICAvLyBJbiBGaXJlZm94LCByYW5nZS5zdGFydENvbnRhaW5lciBhbmQgcmFuZ2Uu
ZW5kQ29udGFpbmVyIGNhbiBiZSAiYW5vbnltb3VzCisgIC8vIGRpdnMiLCBlLmcuIHRoZSB1cC9k
b3duIGJ1dHRvbnMgb24gYW4gPGlucHV0IHR5cGU9Im51bWJlciI+LiBBbm9ueW1vdXMKKyAgLy8g
ZGl2cyBkbyBub3Qgc2VlbSB0byBleHBvc2UgcHJvcGVydGllcywgdHJpZ2dlcmluZyBhICJQZXJt
aXNzaW9uIGRlbmllZAorICAvLyBlcnJvciIgaWYgYW55IG9mIGl0cyBwcm9wZXJ0aWVzIGFyZSBh
Y2Nlc3NlZC4gVGhlIG9ubHkgc2VlbWluZ2x5IHBvc3NpYmxlCisgIC8vIHdheSB0byBhdm9pZCBl
cnJvcmluZyBpcyB0byBhY2Nlc3MgYSBwcm9wZXJ0eSB0aGF0IHR5cGljYWxseSB3b3JrcyBmb3IK
KyAgLy8gbm9uLWFub255bW91cyBkaXZzIGFuZCBjYXRjaCBhbnkgZXJyb3IgdGhhdCBtYXkgb3Ro
ZXJ3aXNlIGFyaXNlLiBTZWUKKyAgLy8gaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjA4NDI3CisgIHRyeSB7CisgICAgLyogZXNsaW50LWRpc2FibGUgbm8tdW51
c2VkLWV4cHJlc3Npb25zICovCisgICAgY3VycmVudFJhbmdlLnN0YXJ0Q29udGFpbmVyLm5vZGVU
eXBlOworICAgIGN1cnJlbnRSYW5nZS5lbmRDb250YWluZXIubm9kZVR5cGU7CisgICAgLyogZXNs
aW50LWVuYWJsZSBuby11bnVzZWQtZXhwcmVzc2lvbnMgKi8KKyAgfSBjYXRjaCAoZSkgeworICAg
IHJldHVybiBudWxsOworICB9CisKKyAgLy8gSWYgdGhlIG5vZGUgYW5kIG9mZnNldCB2YWx1ZXMg
YXJlIHRoZSBzYW1lLCB0aGUgc2VsZWN0aW9uIGlzIGNvbGxhcHNlZC4KKyAgLy8gYFNlbGVjdGlv
bi5pc0NvbGxhcHNlZGAgaXMgYXZhaWxhYmxlIG5hdGl2ZWx5LCBidXQgSUUgc29tZXRpbWVzIGdl
dHMKKyAgLy8gdGhpcyB2YWx1ZSB3cm9uZy4KKyAgdmFyIGlzU2VsZWN0aW9uQ29sbGFwc2VkID0g
aXNDb2xsYXBzZWQoc2VsZWN0aW9uLmFuY2hvck5vZGUsIHNlbGVjdGlvbi5hbmNob3JPZmZzZXQs
IHNlbGVjdGlvbi5mb2N1c05vZGUsIHNlbGVjdGlvbi5mb2N1c09mZnNldCk7CisKKyAgdmFyIHJh
bmdlTGVuZ3RoID0gaXNTZWxlY3Rpb25Db2xsYXBzZWQgPyAwIDogY3VycmVudFJhbmdlLnRvU3Ry
aW5nKCkubGVuZ3RoOworCisgIHZhciB0ZW1wUmFuZ2UgPSBjdXJyZW50UmFuZ2UuY2xvbmVSYW5n
ZSgpOworICB0ZW1wUmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKG5vZGUpOworICB0ZW1wUmFuZ2Uu
c2V0RW5kKGN1cnJlbnRSYW5nZS5zdGFydENvbnRhaW5lciwgY3VycmVudFJhbmdlLnN0YXJ0T2Zm
c2V0KTsKKworICB2YXIgaXNUZW1wUmFuZ2VDb2xsYXBzZWQgPSBpc0NvbGxhcHNlZCh0ZW1wUmFu
Z2Uuc3RhcnRDb250YWluZXIsIHRlbXBSYW5nZS5zdGFydE9mZnNldCwgdGVtcFJhbmdlLmVuZENv
bnRhaW5lciwgdGVtcFJhbmdlLmVuZE9mZnNldCk7CisKKyAgdmFyIHN0YXJ0ID0gaXNUZW1wUmFu
Z2VDb2xsYXBzZWQgPyAwIDogdGVtcFJhbmdlLnRvU3RyaW5nKCkubGVuZ3RoOworICB2YXIgZW5k
ID0gc3RhcnQgKyByYW5nZUxlbmd0aDsKKworICAvLyBEZXRlY3Qgd2hldGhlciB0aGUgc2VsZWN0
aW9uIGlzIGJhY2t3YXJkLgorICB2YXIgZGV0ZWN0aW9uUmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworICBkZXRlY3Rpb25SYW5nZS5zZXRTdGFydChhbmNob3JOb2RlLCBhbmNob3JPZmZz
ZXQpOworICBkZXRlY3Rpb25SYW5nZS5zZXRFbmQoZm9jdXNOb2RlLCBmb2N1c09mZnNldCk7Cisg
IHZhciBpc0JhY2t3YXJkID0gZGV0ZWN0aW9uUmFuZ2UuY29sbGFwc2VkOworCisgIHJldHVybiB7
CisgICAgc3RhcnQ6IGlzQmFja3dhcmQgPyBlbmQgOiBzdGFydCwKKyAgICBlbmQ6IGlzQmFja3dh
cmQgPyBzdGFydCA6IGVuZAorICB9OworfQorCisvKioKKyAqIEBwYXJhbSB7RE9NRWxlbWVudHxE
T01UZXh0Tm9kZX0gbm9kZQorICogQHBhcmFtIHtvYmplY3R9IG9mZnNldHMKKyAqLworZnVuY3Rp
b24gc2V0SUVPZmZzZXRzKG5vZGUsIG9mZnNldHMpIHsKKyAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
c2VsZWN0aW9uLmNyZWF0ZVJhbmdlKCkuZHVwbGljYXRlKCk7CisgIHZhciBzdGFydCwgZW5kOwor
CisgIGlmIChvZmZzZXRzLmVuZCA9PT0gdW5kZWZpbmVkKSB7CisgICAgc3RhcnQgPSBvZmZzZXRz
LnN0YXJ0OworICAgIGVuZCA9IHN0YXJ0OworICB9IGVsc2UgaWYgKG9mZnNldHMuc3RhcnQgPiBv
ZmZzZXRzLmVuZCkgeworICAgIHN0YXJ0ID0gb2Zmc2V0cy5lbmQ7CisgICAgZW5kID0gb2Zmc2V0
cy5zdGFydDsKKyAgfSBlbHNlIHsKKyAgICBzdGFydCA9IG9mZnNldHMuc3RhcnQ7CisgICAgZW5k
ID0gb2Zmc2V0cy5lbmQ7CisgIH0KKworICByYW5nZS5tb3ZlVG9FbGVtZW50VGV4dChub2RlKTsK
KyAgcmFuZ2UubW92ZVN0YXJ0KCdjaGFyYWN0ZXInLCBzdGFydCk7CisgIHJhbmdlLnNldEVuZFBv
aW50KCdFbmRUb1N0YXJ0JywgcmFuZ2UpOworICByYW5nZS5tb3ZlRW5kKCdjaGFyYWN0ZXInLCBl
bmQgLSBzdGFydCk7CisgIHJhbmdlLnNlbGVjdCgpOworfQorCisvKioKKyAqIEluIG1vZGVybiBu
b24tSUUgYnJvd3NlcnMsIHdlIGNhbiBzdXBwb3J0IGJvdGggZm9yd2FyZCBhbmQgYmFja3dhcmQK
KyAqIHNlbGVjdGlvbnMuCisgKgorICogTm90ZTogSUUxMCsgc3VwcG9ydHMgdGhlIFNlbGVjdGlv
biBvYmplY3QsIGJ1dCBpdCBkb2VzIG5vdCBzdXBwb3J0CisgKiB0aGUgYGV4dGVuZGAgbWV0aG9k
LCB3aGljaCBtZWFucyB0aGF0IGV2ZW4gaW4gbW9kZXJuIElFLCBpdCdzIG5vdCBwb3NzaWJsZQor
ICogdG8gcHJvZ3JhbW1hdGljYWxseSBjcmVhdGUgYSBiYWNrd2FyZCBzZWxlY3Rpb24uIFRodXMs
IGZvciBhbGwgSUUKKyAqIHZlcnNpb25zLCB3ZSB1c2UgdGhlIG9sZCBJRSBBUEkgdG8gY3JlYXRl
IG91ciBzZWxlY3Rpb25zLgorICoKKyAqIEBwYXJhbSB7RE9NRWxlbWVudHxET01UZXh0Tm9kZX0g
bm9kZQorICogQHBhcmFtIHtvYmplY3R9IG9mZnNldHMKKyAqLworZnVuY3Rpb24gc2V0TW9kZXJu
T2Zmc2V0cyhub2RlLCBvZmZzZXRzKSB7CisgIGlmICghd2luZG93LmdldFNlbGVjdGlvbikgewor
ICAgIHJldHVybjsKKyAgfQorCisgIHZhciBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCk7CisgIHZhciBsZW5ndGggPSBub2RlW2dldFRleHRDb250ZW50QWNjZXNzb3IoKV0ubGVuZ3Ro
OworICB2YXIgc3RhcnQgPSBNYXRoLm1pbihvZmZzZXRzLnN0YXJ0LCBsZW5ndGgpOworICB2YXIg
ZW5kID0gb2Zmc2V0cy5lbmQgPT09IHVuZGVmaW5lZCA/IHN0YXJ0IDogTWF0aC5taW4ob2Zmc2V0
cy5lbmQsIGxlbmd0aCk7CisKKyAgLy8gSUUgMTEgdXNlcyBtb2Rlcm4gc2VsZWN0aW9uLCBidXQg
ZG9lc24ndCBzdXBwb3J0IHRoZSBleHRlbmQgbWV0aG9kLgorICAvLyBGbGlwIGJhY2t3YXJkIHNl
bGVjdGlvbnMsIHNvIHdlIGNhbiBzZXQgd2l0aCBhIHNpbmdsZSByYW5nZS4KKyAgaWYgKCFzZWxl
Y3Rpb24uZXh0ZW5kICYmIHN0YXJ0ID4gZW5kKSB7CisgICAgdmFyIHRlbXAgPSBlbmQ7CisgICAg
ZW5kID0gc3RhcnQ7CisgICAgc3RhcnQgPSB0ZW1wOworICB9CisKKyAgdmFyIHN0YXJ0TWFya2Vy
ID0gZ2V0Tm9kZUZvckNoYXJhY3Rlck9mZnNldChub2RlLCBzdGFydCk7CisgIHZhciBlbmRNYXJr
ZXIgPSBnZXROb2RlRm9yQ2hhcmFjdGVyT2Zmc2V0KG5vZGUsIGVuZCk7CisKKyAgaWYgKHN0YXJ0
TWFya2VyICYmIGVuZE1hcmtlcikgeworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQoc3RhcnRNYXJrZXIubm9kZSwgc3RhcnRNYXJrZXIu
b2Zmc2V0KTsKKyAgICBzZWxlY3Rpb24ucmVtb3ZlQWxsUmFuZ2VzKCk7CisKKyAgICBpZiAoc3Rh
cnQgPiBlbmQpIHsKKyAgICAgIHNlbGVjdGlvbi5hZGRSYW5nZShyYW5nZSk7CisgICAgICBzZWxl
Y3Rpb24uZXh0ZW5kKGVuZE1hcmtlci5ub2RlLCBlbmRNYXJrZXIub2Zmc2V0KTsKKyAgICB9IGVs
c2UgeworICAgICAgcmFuZ2Uuc2V0RW5kKGVuZE1hcmtlci5ub2RlLCBlbmRNYXJrZXIub2Zmc2V0
KTsKKyAgICAgIHNlbGVjdGlvbi5hZGRSYW5nZShyYW5nZSk7CisgICAgfQorICB9Cit9CisKK3Zh
ciB1c2VJRU9mZnNldHMgPSBFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00gJiYgJ3NlbGVj
dGlvbicgaW4gZG9jdW1lbnQgJiYgISgnZ2V0U2VsZWN0aW9uJyBpbiB3aW5kb3cpOworCit2YXIg
UmVhY3RET01TZWxlY3Rpb24gPSB7CisgIC8qKgorICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IG5v
ZGUKKyAgICovCisgIGdldE9mZnNldHM6IHVzZUlFT2Zmc2V0cyA/IGdldElFT2Zmc2V0cyA6IGdl
dE1vZGVybk9mZnNldHMsCisKKyAgLyoqCisgICAqIEBwYXJhbSB7RE9NRWxlbWVudHxET01UZXh0
Tm9kZX0gbm9kZQorICAgKiBAcGFyYW0ge29iamVjdH0gb2Zmc2V0cworICAgKi8KKyAgc2V0T2Zm
c2V0czogdXNlSUVPZmZzZXRzID8gc2V0SUVPZmZzZXRzIDogc2V0TW9kZXJuT2Zmc2V0cworfTsK
KworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTVNlbGVjdGlvbjsKXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVh
Y3QtZG9tL2xpYi9SZWFjdERPTVNlcnZlci5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9k
dWxlcy9yZWFjdC1kb20vbGliL1JlYWN0RE9NU2VydmVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ5ZGMwMjlh
M2U2NTRkNjJjMTYyOGZlMDA5NjFlNWU4MzUwZjQ4ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdERPTVNlcnZlci5q
cwpAQCAtMCwwICsxLDI1IEBACisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNv
ZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQor
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBp
biB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3Vz
ZSBzdHJpY3QnOworCit2YXIgUmVhY3REZWZhdWx0SW5qZWN0aW9uID0gcmVxdWlyZSgnLi9SZWFj
dERlZmF1bHRJbmplY3Rpb24nKTsKK3ZhciBSZWFjdFNlcnZlclJlbmRlcmluZyA9IHJlcXVpcmUo
Jy4vUmVhY3RTZXJ2ZXJSZW5kZXJpbmcnKTsKK3ZhciBSZWFjdFZlcnNpb24gPSByZXF1aXJlKCcu
L1JlYWN0VmVyc2lvbicpOworCitSZWFjdERlZmF1bHRJbmplY3Rpb24uaW5qZWN0KCk7CisKK3Zh
ciBSZWFjdERPTVNlcnZlciA9IHsKKyAgcmVuZGVyVG9TdHJpbmc6IFJlYWN0U2VydmVyUmVuZGVy
aW5nLnJlbmRlclRvU3RyaW5nLAorICByZW5kZXJUb1N0YXRpY01hcmt1cDogUmVhY3RTZXJ2ZXJS
ZW5kZXJpbmcucmVuZGVyVG9TdGF0aWNNYXJrdXAsCisgIHZlcnNpb246IFJlYWN0VmVyc2lvbgor
fTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTVNlcnZlcjsKXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVh
Y3QtZG9tL2xpYi9SZWFjdERPTVNlcnZlclVNREVudHJ5LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qv
bm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RET01TZXJ2ZXJVTURFbnRyeS5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44MGE4ZWFlMDlhMzIwMTJkZWRjYTc2NjZhMjIwZDcxZmU4NjQxMTMzCi0tLSAvZGV2
L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIv
UmVhY3RET01TZXJ2ZXJVTURFbnRyeS5qcwpAQCAtMCwwICsxLDE1IEBACisvKioKKyAqIENvcHly
aWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgUmVhY3RET01TZXJ2ZXIg
PSByZXF1aXJlKCcuL1JlYWN0RE9NU2VydmVyJyk7CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RE
T01TZXJ2ZXI7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RET01UZXh0Q29tcG9u
ZW50LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVh
Y3RET01UZXh0Q29tcG9uZW50LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjczYjQwMjZmMzYzNjNmYzAxNTUwZGYw
ZDM3YTZkNzg5MmUzOWExZGUKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9u
b2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdERPTVRleHRDb21wb25lbnQuanMKQEAgLTAs
MCArMSwxNjMgQEAKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIElu
Yy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBs
aWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQ
QVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmlj
dCc7CisKK3ZhciBfcHJvZEludmFyaWFudCA9IHJlcXVpcmUoJy4vcmVhY3RQcm9kSW52YXJpYW50
JyksCisgICAgX2Fzc2lnbiA9IHJlcXVpcmUoJ29iamVjdC1hc3NpZ24nKTsKKwordmFyIERPTUNo
aWxkcmVuT3BlcmF0aW9ucyA9IHJlcXVpcmUoJy4vRE9NQ2hpbGRyZW5PcGVyYXRpb25zJyk7Cit2
YXIgRE9NTGF6eVRyZWUgPSByZXF1aXJlKCcuL0RPTUxhenlUcmVlJyk7Cit2YXIgUmVhY3RET01D
b21wb25lbnRUcmVlID0gcmVxdWlyZSgnLi9SZWFjdERPTUNvbXBvbmVudFRyZWUnKTsKKwordmFy
IGVzY2FwZVRleHRDb250ZW50Rm9yQnJvd3NlciA9IHJlcXVpcmUoJy4vZXNjYXBlVGV4dENvbnRl
bnRGb3JCcm93c2VyJyk7Cit2YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJp
YW50Jyk7Cit2YXIgdmFsaWRhdGVET01OZXN0aW5nID0gcmVxdWlyZSgnLi92YWxpZGF0ZURPTU5l
c3RpbmcnKTsKKworLyoqCisgKiBUZXh0IG5vZGVzIHZpb2xhdGUgYSBjb3VwbGUgYXNzdW1wdGlv
bnMgdGhhdCBSZWFjdCBtYWtlcyBhYm91dCBjb21wb25lbnRzOgorICoKKyAqICAtIFdoZW4gbW91
bnRpbmcgdGV4dCBpbnRvIHRoZSBET00sIGFkamFjZW50IHRleHQgbm9kZXMgYXJlIG1lcmdlZC4K
KyAqICAtIFRleHQgbm9kZXMgY2Fubm90IGJlIGFzc2lnbmVkIGEgUmVhY3Qgcm9vdCBJRC4KKyAq
CisgKiBUaGlzIGNvbXBvbmVudCBpcyB1c2VkIHRvIHdyYXAgc3RyaW5ncyBiZXR3ZWVuIGNvbW1l
bnQgbm9kZXMgc28gdGhhdCB0aGV5CisgKiBjYW4gdW5kZXJnbyB0aGUgc2FtZSByZWNvbmNpbGlh
dGlvbiB0aGF0IGlzIGFwcGxpZWQgdG8gZWxlbWVudHMuCisgKgorICogVE9ETzogSW52ZXN0aWdh
dGUgcmVwcmVzZW50aW5nIFJlYWN0IGNvbXBvbmVudHMgaW4gdGhlIERPTSB3aXRoIHRleHQgbm9k
ZXMuCisgKgorICogQGNsYXNzIFJlYWN0RE9NVGV4dENvbXBvbmVudAorICogQGV4dGVuZHMgUmVh
Y3RDb21wb25lbnQKKyAqIEBpbnRlcm5hbAorICovCit2YXIgUmVhY3RET01UZXh0Q29tcG9uZW50
ID0gZnVuY3Rpb24gKHRleHQpIHsKKyAgLy8gVE9ETzogVGhpcyBpcyByZWFsbHkgYSBSZWFjdFRl
eHQgKFJlYWN0Tm9kZSksIG5vdCBhIFJlYWN0RWxlbWVudAorICB0aGlzLl9jdXJyZW50RWxlbWVu
dCA9IHRleHQ7CisgIHRoaXMuX3N0cmluZ1RleHQgPSAnJyArIHRleHQ7CisgIC8vIFJlYWN0RE9N
Q29tcG9uZW50VHJlZSB1c2VzIHRoZXNlOgorICB0aGlzLl9ob3N0Tm9kZSA9IG51bGw7CisgIHRo
aXMuX2hvc3RQYXJlbnQgPSBudWxsOworCisgIC8vIFByb3BlcnRpZXMKKyAgdGhpcy5fZG9tSUQg
PSAwOworICB0aGlzLl9tb3VudEluZGV4ID0gMDsKKyAgdGhpcy5fY2xvc2luZ0NvbW1lbnQgPSBu
dWxsOworICB0aGlzLl9jb21tZW50Tm9kZXMgPSBudWxsOworfTsKKworX2Fzc2lnbihSZWFjdERP
TVRleHRDb21wb25lbnQucHJvdG90eXBlLCB7CisKKyAgLyoqCisgICAqIENyZWF0ZXMgdGhlIG1h
cmt1cCBmb3IgdGhpcyB0ZXh0IG5vZGUuIFRoaXMgbm9kZSBpcyBub3QgaW50ZW5kZWQgdG8gaGF2
ZQorICAgKiBhbnkgZmVhdHVyZXMgYmVzaWRlcyBjb250YWluaW5nIHRleHQgY29udGVudC4KKyAg
ICoKKyAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufFJlYWN0U2VydmVyUmVu
ZGVyaW5nVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uCisgICAqIEByZXR1cm4ge3N0cmluZ30gTWFy
a3VwIGZvciB0aGlzIHRleHQgbm9kZS4KKyAgICogQGludGVybmFsCisgICAqLworICBtb3VudENv
bXBvbmVudDogZnVuY3Rpb24gKHRyYW5zYWN0aW9uLCBob3N0UGFyZW50LCBob3N0Q29udGFpbmVy
SW5mbywgY29udGV4dCkgeworICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nKSB7CisgICAgICB2YXIgcGFyZW50SW5mbzsKKyAgICAgIGlmIChob3N0UGFyZW50ICE9
IG51bGwpIHsKKyAgICAgICAgcGFyZW50SW5mbyA9IGhvc3RQYXJlbnQuX2FuY2VzdG9ySW5mbzsK
KyAgICAgIH0gZWxzZSBpZiAoaG9zdENvbnRhaW5lckluZm8gIT0gbnVsbCkgeworICAgICAgICBw
YXJlbnRJbmZvID0gaG9zdENvbnRhaW5lckluZm8uX2FuY2VzdG9ySW5mbzsKKyAgICAgIH0KKyAg
ICAgIGlmIChwYXJlbnRJbmZvKSB7CisgICAgICAgIC8vIHBhcmVudEluZm8gc2hvdWxkIGFsd2F5
cyBiZSBwcmVzZW50IGV4Y2VwdCBmb3IgdGhlIHRvcC1sZXZlbAorICAgICAgICAvLyBjb21wb25l
bnQgd2hlbiBzZXJ2ZXIgcmVuZGVyaW5nCisgICAgICAgIHZhbGlkYXRlRE9NTmVzdGluZyhudWxs
LCB0aGlzLl9zdHJpbmdUZXh0LCB0aGlzLCBwYXJlbnRJbmZvKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgZG9tSUQgPSBob3N0Q29udGFpbmVySW5mby5faWRDb3VudGVyKys7CisgICAgdmFy
IG9wZW5pbmdWYWx1ZSA9ICcgcmVhY3QtdGV4dDogJyArIGRvbUlEICsgJyAnOworICAgIHZhciBj
bG9zaW5nVmFsdWUgPSAnIC9yZWFjdC10ZXh0ICc7CisgICAgdGhpcy5fZG9tSUQgPSBkb21JRDsK
KyAgICB0aGlzLl9ob3N0UGFyZW50ID0gaG9zdFBhcmVudDsKKyAgICBpZiAodHJhbnNhY3Rpb24u
dXNlQ3JlYXRlRWxlbWVudCkgeworICAgICAgdmFyIG93bmVyRG9jdW1lbnQgPSBob3N0Q29udGFp
bmVySW5mby5fb3duZXJEb2N1bWVudDsKKyAgICAgIHZhciBvcGVuaW5nQ29tbWVudCA9IG93bmVy
RG9jdW1lbnQuY3JlYXRlQ29tbWVudChvcGVuaW5nVmFsdWUpOworICAgICAgdmFyIGNsb3NpbmdD
b21tZW50ID0gb3duZXJEb2N1bWVudC5jcmVhdGVDb21tZW50KGNsb3NpbmdWYWx1ZSk7CisgICAg
ICB2YXIgbGF6eVRyZWUgPSBET01MYXp5VHJlZShvd25lckRvY3VtZW50LmNyZWF0ZURvY3VtZW50
RnJhZ21lbnQoKSk7CisgICAgICBET01MYXp5VHJlZS5xdWV1ZUNoaWxkKGxhenlUcmVlLCBET01M
YXp5VHJlZShvcGVuaW5nQ29tbWVudCkpOworICAgICAgaWYgKHRoaXMuX3N0cmluZ1RleHQpIHsK
KyAgICAgICAgRE9NTGF6eVRyZWUucXVldWVDaGlsZChsYXp5VHJlZSwgRE9NTGF6eVRyZWUob3du
ZXJEb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0aGlzLl9zdHJpbmdUZXh0KSkpOworICAgICAgfQor
ICAgICAgRE9NTGF6eVRyZWUucXVldWVDaGlsZChsYXp5VHJlZSwgRE9NTGF6eVRyZWUoY2xvc2lu
Z0NvbW1lbnQpKTsKKyAgICAgIFJlYWN0RE9NQ29tcG9uZW50VHJlZS5wcmVjYWNoZU5vZGUodGhp
cywgb3BlbmluZ0NvbW1lbnQpOworICAgICAgdGhpcy5fY2xvc2luZ0NvbW1lbnQgPSBjbG9zaW5n
Q29tbWVudDsKKyAgICAgIHJldHVybiBsYXp5VHJlZTsKKyAgICB9IGVsc2UgeworICAgICAgdmFy
IGVzY2FwZWRUZXh0ID0gZXNjYXBlVGV4dENvbnRlbnRGb3JCcm93c2VyKHRoaXMuX3N0cmluZ1Rl
eHQpOworCisgICAgICBpZiAodHJhbnNhY3Rpb24ucmVuZGVyVG9TdGF0aWNNYXJrdXApIHsKKyAg
ICAgICAgLy8gTm9ybWFsbHkgd2UnZCB3cmFwIHRoaXMgYmV0d2VlbiBjb21tZW50IG5vZGVzIGZv
ciB0aGUgcmVhc29ucyBzdGF0ZWQKKyAgICAgICAgLy8gYWJvdmUsIGJ1dCBzaW5jZSB0aGlzIGlz
IGEgc2l0dWF0aW9uIHdoZXJlIFJlYWN0IHdvbid0IHRha2Ugb3ZlcgorICAgICAgICAvLyAoc3Rh
dGljIHBhZ2VzKSwgd2UgY2FuIHNpbXBseSByZXR1cm4gdGhlIHRleHQgYXMgaXQgaXMuCisgICAg
ICAgIHJldHVybiBlc2NhcGVkVGV4dDsKKyAgICAgIH0KKworICAgICAgcmV0dXJuICc8IS0tJyAr
IG9wZW5pbmdWYWx1ZSArICctLT4nICsgZXNjYXBlZFRleHQgKyAnPCEtLScgKyBjbG9zaW5nVmFs
dWUgKyAnLS0+JzsKKyAgICB9CisgIH0sCisKKyAgLyoqCisgICAqIFVwZGF0ZXMgdGhpcyBjb21w
b25lbnQgYnkgdXBkYXRpbmcgdGhlIHRleHQgY29udGVudC4KKyAgICoKKyAgICogQHBhcmFtIHtS
ZWFjdFRleHR9IG5leHRUZXh0IFRoZSBuZXh0IHRleHQgY29udGVudAorICAgKiBAcGFyYW0ge1Jl
YWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uCisgICAqIEBpbnRlcm5hbAorICAg
Ki8KKyAgcmVjZWl2ZUNvbXBvbmVudDogZnVuY3Rpb24gKG5leHRUZXh0LCB0cmFuc2FjdGlvbikg
eworICAgIGlmIChuZXh0VGV4dCAhPT0gdGhpcy5fY3VycmVudEVsZW1lbnQpIHsKKyAgICAgIHRo
aXMuX2N1cnJlbnRFbGVtZW50ID0gbmV4dFRleHQ7CisgICAgICB2YXIgbmV4dFN0cmluZ1RleHQg
PSAnJyArIG5leHRUZXh0OworICAgICAgaWYgKG5leHRTdHJpbmdUZXh0ICE9PSB0aGlzLl9zdHJp
bmdUZXh0KSB7CisgICAgICAgIC8vIFRPRE86IFNhdmUgdGhpcyBhcyBwZW5kaW5nIHByb3BzIGFu
ZCB1c2UgcGVyZm9ybVVwZGF0ZUlmTmVjZXNzYXJ5CisgICAgICAgIC8vIGFuZC9vciB1cGRhdGVD
b21wb25lbnQgdG8gZG8gdGhlIGFjdHVhbCB1cGRhdGUgZm9yIGNvbnNpc3RlbmN5IHdpdGgKKyAg
ICAgICAgLy8gb3RoZXIgY29tcG9uZW50IHR5cGVzPworICAgICAgICB0aGlzLl9zdHJpbmdUZXh0
ID0gbmV4dFN0cmluZ1RleHQ7CisgICAgICAgIHZhciBjb21tZW50Tm9kZXMgPSB0aGlzLmdldEhv
c3ROb2RlKCk7CisgICAgICAgIERPTUNoaWxkcmVuT3BlcmF0aW9ucy5yZXBsYWNlRGVsaW1pdGVk
VGV4dChjb21tZW50Tm9kZXNbMF0sIGNvbW1lbnROb2Rlc1sxXSwgbmV4dFN0cmluZ1RleHQpOwor
ICAgICAgfQorICAgIH0KKyAgfSwKKworICBnZXRIb3N0Tm9kZTogZnVuY3Rpb24gKCkgeworICAg
IHZhciBob3N0Tm9kZSA9IHRoaXMuX2NvbW1lbnROb2RlczsKKyAgICBpZiAoaG9zdE5vZGUpIHsK
KyAgICAgIHJldHVybiBob3N0Tm9kZTsKKyAgICB9CisgICAgaWYgKCF0aGlzLl9jbG9zaW5nQ29t
bWVudCkgeworICAgICAgdmFyIG9wZW5pbmdDb21tZW50ID0gUmVhY3RET01Db21wb25lbnRUcmVl
LmdldE5vZGVGcm9tSW5zdGFuY2UodGhpcyk7CisgICAgICB2YXIgbm9kZSA9IG9wZW5pbmdDb21t
ZW50Lm5leHRTaWJsaW5nOworICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgIShub2RlICE9
IG51bGwpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFu
dChmYWxzZSwgJ01pc3NpbmcgY2xvc2luZyBjb21tZW50IGZvciB0ZXh0IGNvbXBvbmVudCAlcycs
IHRoaXMuX2RvbUlEKSA6IF9wcm9kSW52YXJpYW50KCc2NycsIHRoaXMuX2RvbUlEKSA6IHZvaWQg
MDsKKyAgICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IDggJiYgbm9kZS5ub2RlVmFsdWUgPT09
ICcgL3JlYWN0LXRleHQgJykgeworICAgICAgICAgIHRoaXMuX2Nsb3NpbmdDb21tZW50ID0gbm9k
ZTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBub2RlID0gbm9kZS5uZXh0
U2libGluZzsKKyAgICAgIH0KKyAgICB9CisgICAgaG9zdE5vZGUgPSBbdGhpcy5faG9zdE5vZGUs
IHRoaXMuX2Nsb3NpbmdDb21tZW50XTsKKyAgICB0aGlzLl9jb21tZW50Tm9kZXMgPSBob3N0Tm9k
ZTsKKyAgICByZXR1cm4gaG9zdE5vZGU7CisgIH0sCisKKyAgdW5tb3VudENvbXBvbmVudDogZnVu
Y3Rpb24gKCkgeworICAgIHRoaXMuX2Nsb3NpbmdDb21tZW50ID0gbnVsbDsKKyAgICB0aGlzLl9j
b21tZW50Tm9kZXMgPSBudWxsOworICAgIFJlYWN0RE9NQ29tcG9uZW50VHJlZS51bmNhY2hlTm9k
ZSh0aGlzKTsKKyAgfQorCit9KTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTVRleHRDb21w
b25lbnQ7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RET01UZXh0YXJlYS5qcyBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0RE9NVGV4
dGFyZWEuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uM2RmNDhiZmFmOTU5NGJkMWRjYjJkZTIxODA0MjY3ZTEyYTA2
ZjBkZQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9y
ZWFjdC1kb20vbGliL1JlYWN0RE9NVGV4dGFyZWEuanMKQEAgLTAsMCArMSwxNTMgQEAKKy8qKgor
ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUg
QlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAq
IG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhl
IHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBfcHJvZElu
dmFyaWFudCA9IHJlcXVpcmUoJy4vcmVhY3RQcm9kSW52YXJpYW50JyksCisgICAgX2Fzc2lnbiA9
IHJlcXVpcmUoJ29iamVjdC1hc3NpZ24nKTsKKwordmFyIExpbmtlZFZhbHVlVXRpbHMgPSByZXF1
aXJlKCcuL0xpbmtlZFZhbHVlVXRpbHMnKTsKK3ZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSBy
ZXF1aXJlKCcuL1JlYWN0RE9NQ29tcG9uZW50VHJlZScpOwordmFyIFJlYWN0VXBkYXRlcyA9IHJl
cXVpcmUoJy4vUmVhY3RVcGRhdGVzJyk7CisKK3ZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpz
L2xpYi9pbnZhcmlhbnQnKTsKK3ZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2Fybmlu
ZycpOworCit2YXIgZGlkV2FyblZhbHVlTGluayA9IGZhbHNlOwordmFyIGRpZFdhcm5WYWxEZWZh
dWx0VmFsID0gZmFsc2U7CisKK2Z1bmN0aW9uIGZvcmNlVXBkYXRlSWZNb3VudGVkKCkgeworICBp
ZiAodGhpcy5fcm9vdE5vZGVJRCkgeworICAgIC8vIERPTSBjb21wb25lbnQgaXMgc3RpbGwgbW91
bnRlZDsgdXBkYXRlCisgICAgUmVhY3RET01UZXh0YXJlYS51cGRhdGVXcmFwcGVyKHRoaXMpOwor
ICB9Cit9CisKKy8qKgorICogSW1wbGVtZW50cyBhIDx0ZXh0YXJlYT4gaG9zdCBjb21wb25lbnQg
dGhhdCBhbGxvd3Mgc2V0dGluZyBgdmFsdWVgLCBhbmQKKyAqIGBkZWZhdWx0VmFsdWVgLiBUaGlz
IGRpZmZlcnMgZnJvbSB0aGUgdHJhZGl0aW9uYWwgRE9NIEFQSSBiZWNhdXNlIHZhbHVlIGlzCisg
KiB1c3VhbGx5IHNldCBhcyBQQ0RBVEEgY2hpbGRyZW4uCisgKgorICogSWYgYHZhbHVlYCBpcyBu
b3Qgc3VwcGxpZWQgKG9yIG51bGwvdW5kZWZpbmVkKSwgdXNlciBhY3Rpb25zIHRoYXQgYWZmZWN0
IHRoZQorICogdmFsdWUgd2lsbCB0cmlnZ2VyIHVwZGF0ZXMgdG8gdGhlIGVsZW1lbnQuCisgKgor
ICogSWYgYHZhbHVlYCBpcyBzdXBwbGllZCAoYW5kIG5vdCBudWxsL3VuZGVmaW5lZCksIHRoZSBy
ZW5kZXJlZCBlbGVtZW50IHdpbGwKKyAqIG5vdCB0cmlnZ2VyIHVwZGF0ZXMgdG8gdGhlIGVsZW1l
bnQuIEluc3RlYWQsIHRoZSBgdmFsdWVgIHByb3AgbXVzdCBjaGFuZ2UgaW4KKyAqIG9yZGVyIGZv
ciB0aGUgcmVuZGVyZWQgZWxlbWVudCB0byBiZSB1cGRhdGVkLgorICoKKyAqIFRoZSByZW5kZXJl
ZCBlbGVtZW50IHdpbGwgYmUgaW5pdGlhbGl6ZWQgd2l0aCBhbiBlbXB0eSB2YWx1ZSwgdGhlIHBy
b3AKKyAqIGBkZWZhdWx0VmFsdWVgIGlmIHNwZWNpZmllZCwgb3IgdGhlIGNoaWxkcmVuIGNvbnRl
bnQgKGRlcHJlY2F0ZWQpLgorICovCit2YXIgUmVhY3RET01UZXh0YXJlYSA9IHsKKyAgZ2V0SG9z
dFByb3BzOiBmdW5jdGlvbiAoaW5zdCwgcHJvcHMpIHsKKyAgICAhKHByb3BzLmRhbmdlcm91c2x5
U2V0SW5uZXJIVE1MID09IG51bGwpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2BkYW5nZXJvdXNseVNldElubmVySFRNTGAgZG9lcyBu
b3QgbWFrZSBzZW5zZSBvbiA8dGV4dGFyZWE+LicpIDogX3Byb2RJbnZhcmlhbnQoJzkxJykgOiB2
b2lkIDA7CisKKyAgICAvLyBBbHdheXMgc2V0IGNoaWxkcmVuIHRvIHRoZSBzYW1lIHRoaW5nLiBJ
biBJRTksIHRoZSBzZWxlY3Rpb24gcmFuZ2Ugd2lsbAorICAgIC8vIGdldCByZXNldCBpZiBgdGV4
dENvbnRlbnRgIGlzIG11dGF0ZWQuICBXZSBjb3VsZCBhZGQgYSBjaGVjayBpbiBzZXRUZXh0Q29u
dGVudAorICAgIC8vIHRvIG9ubHkgc2V0IHRoZSB2YWx1ZSBpZi93aGVuIHRoZSB2YWx1ZSBkaWZm
ZXJzIGZyb20gdGhlIG5vZGUgdmFsdWUgKHdoaWNoIHdvdWxkCisgICAgLy8gY29tcGxldGVseSBz
b2x2ZSB0aGlzIElFOSBidWcpLCBidXQgU2ViYXN0aWFuK0JlbiBzZWVtZWQgdG8gbGlrZSB0aGlz
IHNvbHV0aW9uLgorICAgIC8vIFRoZSB2YWx1ZSBjYW4gYmUgYSBib29sZWFuIG9yIG9iamVjdCBz
byB0aGF0J3Mgd2h5IGl0J3MgZm9yY2VkIHRvIGJlIGEgc3RyaW5nLgorICAgIHZhciBob3N0UHJv
cHMgPSBfYXNzaWduKHt9LCBwcm9wcywgeworICAgICAgdmFsdWU6IHVuZGVmaW5lZCwKKyAgICAg
IGRlZmF1bHRWYWx1ZTogdW5kZWZpbmVkLAorICAgICAgY2hpbGRyZW46ICcnICsgaW5zdC5fd3Jh
cHBlclN0YXRlLmluaXRpYWxWYWx1ZSwKKyAgICAgIG9uQ2hhbmdlOiBpbnN0Ll93cmFwcGVyU3Rh
dGUub25DaGFuZ2UKKyAgICB9KTsKKworICAgIHJldHVybiBob3N0UHJvcHM7CisgIH0sCisKKyAg
bW91bnRXcmFwcGVyOiBmdW5jdGlvbiAoaW5zdCwgcHJvcHMpIHsKKyAgICBpZiAocHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgTGlua2VkVmFsdWVVdGlscy5j
aGVja1Byb3BUeXBlcygndGV4dGFyZWEnLCBwcm9wcywgaW5zdC5fY3VycmVudEVsZW1lbnQuX293
bmVyKTsKKyAgICAgIGlmIChwcm9wcy52YWx1ZUxpbmsgIT09IHVuZGVmaW5lZCAmJiAhZGlkV2Fy
blZhbHVlTGluaykgeworICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nID8gd2FybmluZyhmYWxzZSwgJ2B2YWx1ZUxpbmtgIHByb3Agb24gYHRleHRhcmVhYCBpcyBk
ZXByZWNhdGVkOyBzZXQgYHZhbHVlYCBhbmQgYG9uQ2hhbmdlYCBpbnN0ZWFkLicpIDogdm9pZCAw
OworICAgICAgICBkaWRXYXJuVmFsdWVMaW5rID0gdHJ1ZTsKKyAgICAgIH0KKyAgICAgIGlmIChw
cm9wcy52YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHByb3BzLmRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZp
bmVkICYmICFkaWRXYXJuVmFsRGVmYXVsdFZhbCkgeworICAgICAgICBwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1RleHRhcmVhIGVsZW1lbnRz
IG11c3QgYmUgZWl0aGVyIGNvbnRyb2xsZWQgb3IgdW5jb250cm9sbGVkICcgKyAnKHNwZWNpZnkg
ZWl0aGVyIHRoZSB2YWx1ZSBwcm9wLCBvciB0aGUgZGVmYXVsdFZhbHVlIHByb3AsIGJ1dCBub3Qg
JyArICdib3RoKS4gRGVjaWRlIGJldHdlZW4gdXNpbmcgYSBjb250cm9sbGVkIG9yIHVuY29udHJv
bGxlZCB0ZXh0YXJlYSAnICsgJ2FuZCByZW1vdmUgb25lIG9mIHRoZXNlIHByb3BzLiBNb3JlIGlu
Zm86ICcgKyAnaHR0cHM6Ly9mYi5tZS9yZWFjdC1jb250cm9sbGVkLWNvbXBvbmVudHMnKSA6IHZv
aWQgMDsKKyAgICAgICAgZGlkV2FyblZhbERlZmF1bHRWYWwgPSB0cnVlOworICAgICAgfQorICAg
IH0KKworICAgIHZhciB2YWx1ZSA9IExpbmtlZFZhbHVlVXRpbHMuZ2V0VmFsdWUocHJvcHMpOwor
ICAgIHZhciBpbml0aWFsVmFsdWUgPSB2YWx1ZTsKKworICAgIC8vIE9ubHkgYm90aGVyIGZldGNo
aW5nIGRlZmF1bHQgdmFsdWUgaWYgd2UncmUgZ29pbmcgdG8gdXNlIGl0CisgICAgaWYgKHZhbHVl
ID09IG51bGwpIHsKKyAgICAgIHZhciBkZWZhdWx0VmFsdWUgPSBwcm9wcy5kZWZhdWx0VmFsdWU7
CisgICAgICAvLyBUT0RPICh5dW5nc3RlcnMpOiBSZW1vdmUgc3VwcG9ydCBmb3IgY2hpbGRyZW4g
Y29udGVudCBpbiA8dGV4dGFyZWE+LgorICAgICAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRy
ZW47CisgICAgICBpZiAoY2hpbGRyZW4gIT0gbnVsbCkgeworICAgICAgICBpZiAocHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgICAgIHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnVXNlIHRoZSBgZGVmYXVs
dFZhbHVlYCBvciBgdmFsdWVgIHByb3BzIGluc3RlYWQgb2Ygc2V0dGluZyAnICsgJ2NoaWxkcmVu
IG9uIDx0ZXh0YXJlYT4uJykgOiB2b2lkIDA7CisgICAgICAgIH0KKyAgICAgICAgIShkZWZhdWx0
VmFsdWUgPT0gbnVsbCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8g
aW52YXJpYW50KGZhbHNlLCAnSWYgeW91IHN1cHBseSBgZGVmYXVsdFZhbHVlYCBvbiBhIDx0ZXh0
YXJlYT4sIGRvIG5vdCBwYXNzIGNoaWxkcmVuLicpIDogX3Byb2RJbnZhcmlhbnQoJzkyJykgOiB2
b2lkIDA7CisgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkgeworICAgICAgICAg
ICEoY2hpbGRyZW4ubGVuZ3RoIDw9IDEpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJzx0ZXh0YXJlYT4gY2FuIG9ubHkgaGF2ZSBhdCBt
b3N0IG9uZSBjaGlsZC4nKSA6IF9wcm9kSW52YXJpYW50KCc5MycpIDogdm9pZCAwOworICAgICAg
ICAgIGNoaWxkcmVuID0gY2hpbGRyZW5bMF07CisgICAgICAgIH0KKworICAgICAgICBkZWZhdWx0
VmFsdWUgPSAnJyArIGNoaWxkcmVuOworICAgICAgfQorICAgICAgaWYgKGRlZmF1bHRWYWx1ZSA9
PSBudWxsKSB7CisgICAgICAgIGRlZmF1bHRWYWx1ZSA9ICcnOworICAgICAgfQorICAgICAgaW5p
dGlhbFZhbHVlID0gZGVmYXVsdFZhbHVlOworICAgIH0KKworICAgIGluc3QuX3dyYXBwZXJTdGF0
ZSA9IHsKKyAgICAgIGluaXRpYWxWYWx1ZTogJycgKyBpbml0aWFsVmFsdWUsCisgICAgICBsaXN0
ZW5lcnM6IG51bGwsCisgICAgICBvbkNoYW5nZTogX2hhbmRsZUNoYW5nZS5iaW5kKGluc3QpCisg
ICAgfTsKKyAgfSwKKworICB1cGRhdGVXcmFwcGVyOiBmdW5jdGlvbiAoaW5zdCkgeworICAgIHZh
ciBwcm9wcyA9IGluc3QuX2N1cnJlbnRFbGVtZW50LnByb3BzOworCisgICAgdmFyIG5vZGUgPSBS
ZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZShpbnN0KTsKKyAgICB2YXIg
dmFsdWUgPSBMaW5rZWRWYWx1ZVV0aWxzLmdldFZhbHVlKHByb3BzKTsKKyAgICBpZiAodmFsdWUg
IT0gbnVsbCkgeworICAgICAgLy8gQ2FzdCBgdmFsdWVgIHRvIGEgc3RyaW5nIHRvIGVuc3VyZSB0
aGUgdmFsdWUgaXMgc2V0IGNvcnJlY3RseS4gV2hpbGUKKyAgICAgIC8vIGJyb3dzZXJzIHR5cGlj
YWxseSBkbyB0aGlzIGFzIG5lY2Vzc2FyeSwganNkb20gZG9lc24ndC4KKyAgICAgIHZhciBuZXdW
YWx1ZSA9ICcnICsgdmFsdWU7CisKKyAgICAgIC8vIFRvIGF2b2lkIHNpZGUgZWZmZWN0cyAoc3Vj
aCBhcyBsb3NpbmcgdGV4dCBzZWxlY3Rpb24pLCBvbmx5IHNldCB2YWx1ZSBpZiBjaGFuZ2VkCisg
ICAgICBpZiAobmV3VmFsdWUgIT09IG5vZGUudmFsdWUpIHsKKyAgICAgICAgbm9kZS52YWx1ZSA9
IG5ld1ZhbHVlOworICAgICAgfQorICAgICAgaWYgKHByb3BzLmRlZmF1bHRWYWx1ZSA9PSBudWxs
KSB7CisgICAgICAgIG5vZGUuZGVmYXVsdFZhbHVlID0gbmV3VmFsdWU7CisgICAgICB9CisgICAg
fQorICAgIGlmIChwcm9wcy5kZWZhdWx0VmFsdWUgIT0gbnVsbCkgeworICAgICAgbm9kZS5kZWZh
dWx0VmFsdWUgPSBwcm9wcy5kZWZhdWx0VmFsdWU7CisgICAgfQorICB9LAorCisgIHBvc3RNb3Vu
dFdyYXBwZXI6IGZ1bmN0aW9uIChpbnN0KSB7CisgICAgLy8gVGhpcyBpcyBpbiBwb3N0TW91bnQg
YmVjYXVzZSB3ZSBuZWVkIGFjY2VzcyB0byB0aGUgRE9NIG5vZGUsIHdoaWNoIGlzIG5vdAorICAg
IC8vIGF2YWlsYWJsZSB1bnRpbCBhZnRlciB0aGUgY29tcG9uZW50IGhhcyBtb3VudGVkLgorICAg
IHZhciBub2RlID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UoaW5z
dCk7CisKKyAgICAvLyBXYXJuaW5nOiBub2RlLnZhbHVlIG1heSBiZSB0aGUgZW1wdHkgc3RyaW5n
IGF0IHRoaXMgcG9pbnQgKElFMTEpIGlmIHBsYWNlaG9sZGVyIGlzIHNldC4KKyAgICBub2RlLnZh
bHVlID0gbm9kZS50ZXh0Q29udGVudDsgLy8gRGV0YWNoIHZhbHVlIGZyb20gZGVmYXVsdFZhbHVl
CisgIH0KK307CisKK2Z1bmN0aW9uIF9oYW5kbGVDaGFuZ2UoZXZlbnQpIHsKKyAgdmFyIHByb3Bz
ID0gdGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHM7CisgIHZhciByZXR1cm5WYWx1ZSA9IExpbmtl
ZFZhbHVlVXRpbHMuZXhlY3V0ZU9uQ2hhbmdlKHByb3BzLCBldmVudCk7CisgIFJlYWN0VXBkYXRl
cy5hc2FwKGZvcmNlVXBkYXRlSWZNb3VudGVkLCB0aGlzKTsKKyAgcmV0dXJuIHJldHVyblZhbHVl
OworfQorCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9NVGV4dGFyZWE7ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVz
L3JlYWN0LWRvbS9saWIvUmVhY3RET01UcmVlVHJhdmVyc2FsLmpzIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVh
Y3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RET01UcmVlVHJhdmVyc2FsLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmQ5YmRlZjNmNjNjZjEwZmY3ZWRkMmI1MjY2MmY4MTAxOGE4YTA2NWEKLS0tIC9k
ZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xp
Yi9SZWFjdERPTVRyZWVUcmF2ZXJzYWwuanMKQEAgLTAsMCArMSwxMzUgQEAKKy8qKgorICogQ29w
eXJpZ2h0IDIwMTUtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0
eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBfcHJvZEludmFyaWFu
dCA9IHJlcXVpcmUoJy4vcmVhY3RQcm9kSW52YXJpYW50Jyk7CisKK3ZhciBpbnZhcmlhbnQgPSBy
ZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTsKKworLyoqCisgKiBSZXR1cm4gdGhlIGxvd2Vz
dCBjb21tb24gYW5jZXN0b3Igb2YgQSBhbmQgQiwgb3IgbnVsbCBpZiB0aGV5IGFyZSBpbgorICog
ZGlmZmVyZW50IHRyZWVzLgorICovCitmdW5jdGlvbiBnZXRMb3dlc3RDb21tb25BbmNlc3Rvcihp
bnN0QSwgaW5zdEIpIHsKKyAgISgnX2hvc3ROb2RlJyBpbiBpbnN0QSkgPyBwcm9jZXNzLmVudi5O
T0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnZ2V0Tm9kZUZyb21J
bnN0YW5jZTogSW52YWxpZCBhcmd1bWVudC4nKSA6IF9wcm9kSW52YXJpYW50KCczMycpIDogdm9p
ZCAwOworICAhKCdfaG9zdE5vZGUnIGluIGluc3RCKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9
PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdnZXROb2RlRnJvbUluc3RhbmNlOiBJ
bnZhbGlkIGFyZ3VtZW50LicpIDogX3Byb2RJbnZhcmlhbnQoJzMzJykgOiB2b2lkIDA7CisKKyAg
dmFyIGRlcHRoQSA9IDA7CisgIGZvciAodmFyIHRlbXBBID0gaW5zdEE7IHRlbXBBOyB0ZW1wQSA9
IHRlbXBBLl9ob3N0UGFyZW50KSB7CisgICAgZGVwdGhBKys7CisgIH0KKyAgdmFyIGRlcHRoQiA9
IDA7CisgIGZvciAodmFyIHRlbXBCID0gaW5zdEI7IHRlbXBCOyB0ZW1wQiA9IHRlbXBCLl9ob3N0
UGFyZW50KSB7CisgICAgZGVwdGhCKys7CisgIH0KKworICAvLyBJZiBBIGlzIGRlZXBlciwgY3Jh
d2wgdXAuCisgIHdoaWxlIChkZXB0aEEgLSBkZXB0aEIgPiAwKSB7CisgICAgaW5zdEEgPSBpbnN0
QS5faG9zdFBhcmVudDsKKyAgICBkZXB0aEEtLTsKKyAgfQorCisgIC8vIElmIEIgaXMgZGVlcGVy
LCBjcmF3bCB1cC4KKyAgd2hpbGUgKGRlcHRoQiAtIGRlcHRoQSA+IDApIHsKKyAgICBpbnN0QiA9
IGluc3RCLl9ob3N0UGFyZW50OworICAgIGRlcHRoQi0tOworICB9CisKKyAgLy8gV2FsayBpbiBs
b2Nrc3RlcCB1bnRpbCB3ZSBmaW5kIGEgbWF0Y2guCisgIHZhciBkZXB0aCA9IGRlcHRoQTsKKyAg
d2hpbGUgKGRlcHRoLS0pIHsKKyAgICBpZiAoaW5zdEEgPT09IGluc3RCKSB7CisgICAgICByZXR1
cm4gaW5zdEE7CisgICAgfQorICAgIGluc3RBID0gaW5zdEEuX2hvc3RQYXJlbnQ7CisgICAgaW5z
dEIgPSBpbnN0Qi5faG9zdFBhcmVudDsKKyAgfQorICByZXR1cm4gbnVsbDsKK30KKworLyoqCisg
KiBSZXR1cm4gaWYgQSBpcyBhbiBhbmNlc3RvciBvZiBCLgorICovCitmdW5jdGlvbiBpc0FuY2Vz
dG9yKGluc3RBLCBpbnN0QikgeworICAhKCdfaG9zdE5vZGUnIGluIGluc3RBKSA/IHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdpc0FuY2Vz
dG9yOiBJbnZhbGlkIGFyZ3VtZW50LicpIDogX3Byb2RJbnZhcmlhbnQoJzM1JykgOiB2b2lkIDA7
CisgICEoJ19ob3N0Tm9kZScgaW4gaW5zdEIpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2lzQW5jZXN0b3I6IEludmFsaWQgYXJndW1l
bnQuJykgOiBfcHJvZEludmFyaWFudCgnMzUnKSA6IHZvaWQgMDsKKworICB3aGlsZSAoaW5zdEIp
IHsKKyAgICBpZiAoaW5zdEIgPT09IGluc3RBKSB7CisgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisgICAgaW5zdEIgPSBpbnN0Qi5faG9zdFBhcmVudDsKKyAgfQorICByZXR1cm4gZmFsc2U7Cit9
CisKKy8qKgorICogUmV0dXJuIHRoZSBwYXJlbnQgaW5zdGFuY2Ugb2YgdGhlIHBhc3NlZC1pbiBp
bnN0YW5jZS4KKyAqLworZnVuY3Rpb24gZ2V0UGFyZW50SW5zdGFuY2UoaW5zdCkgeworICAhKCdf
aG9zdE5vZGUnIGluIGluc3QpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
JyA/IGludmFyaWFudChmYWxzZSwgJ2dldFBhcmVudEluc3RhbmNlOiBJbnZhbGlkIGFyZ3VtZW50
LicpIDogX3Byb2RJbnZhcmlhbnQoJzM2JykgOiB2b2lkIDA7CisKKyAgcmV0dXJuIGluc3QuX2hv
c3RQYXJlbnQ7Cit9CisKKy8qKgorICogU2ltdWxhdGVzIHRoZSB0cmF2ZXJzYWwgb2YgYSB0d28t
cGhhc2UsIGNhcHR1cmUvYnViYmxlIGV2ZW50IGRpc3BhdGNoLgorICovCitmdW5jdGlvbiB0cmF2
ZXJzZVR3b1BoYXNlKGluc3QsIGZuLCBhcmcpIHsKKyAgdmFyIHBhdGggPSBbXTsKKyAgd2hpbGUg
KGluc3QpIHsKKyAgICBwYXRoLnB1c2goaW5zdCk7CisgICAgaW5zdCA9IGluc3QuX2hvc3RQYXJl
bnQ7CisgIH0KKyAgdmFyIGk7CisgIGZvciAoaSA9IHBhdGgubGVuZ3RoOyBpLS0gPiAwOykgewor
ICAgIGZuKHBhdGhbaV0sICdjYXB0dXJlZCcsIGFyZyk7CisgIH0KKyAgZm9yIChpID0gMDsgaSA8
IHBhdGgubGVuZ3RoOyBpKyspIHsKKyAgICBmbihwYXRoW2ldLCAnYnViYmxlZCcsIGFyZyk7Cisg
IH0KK30KKworLyoqCisgKiBUcmF2ZXJzZXMgdGhlIElEIGhpZXJhcmNoeSBhbmQgaW52b2tlcyB0
aGUgc3VwcGxpZWQgYGNiYCBvbiBhbnkgSURzIHRoYXQKKyAqIHNob3VsZCB3b3VsZCByZWNlaXZl
IGEgYG1vdXNlRW50ZXJgIG9yIGBtb3VzZUxlYXZlYCBldmVudC4KKyAqCisgKiBEb2VzIG5vdCBp
bnZva2UgdGhlIGNhbGxiYWNrIG9uIHRoZSBuZWFyZXN0IGNvbW1vbiBhbmNlc3RvciBiZWNhdXNl
IG5vdGhpbmcKKyAqICJlbnRlcmVkIiBvciAibGVmdCIgdGhhdCBlbGVtZW50LgorICovCitmdW5j
dGlvbiB0cmF2ZXJzZUVudGVyTGVhdmUoZnJvbSwgdG8sIGZuLCBhcmdGcm9tLCBhcmdUbykgewor
ICB2YXIgY29tbW9uID0gZnJvbSAmJiB0byA/IGdldExvd2VzdENvbW1vbkFuY2VzdG9yKGZyb20s
IHRvKSA6IG51bGw7CisgIHZhciBwYXRoRnJvbSA9IFtdOworICB3aGlsZSAoZnJvbSAmJiBmcm9t
ICE9PSBjb21tb24pIHsKKyAgICBwYXRoRnJvbS5wdXNoKGZyb20pOworICAgIGZyb20gPSBmcm9t
Ll9ob3N0UGFyZW50OworICB9CisgIHZhciBwYXRoVG8gPSBbXTsKKyAgd2hpbGUgKHRvICYmIHRv
ICE9PSBjb21tb24pIHsKKyAgICBwYXRoVG8ucHVzaCh0byk7CisgICAgdG8gPSB0by5faG9zdFBh
cmVudDsKKyAgfQorICB2YXIgaTsKKyAgZm9yIChpID0gMDsgaSA8IHBhdGhGcm9tLmxlbmd0aDsg
aSsrKSB7CisgICAgZm4ocGF0aEZyb21baV0sICdidWJibGVkJywgYXJnRnJvbSk7CisgIH0KKyAg
Zm9yIChpID0gcGF0aFRvLmxlbmd0aDsgaS0tID4gMDspIHsKKyAgICBmbihwYXRoVG9baV0sICdj
YXB0dXJlZCcsIGFyZ1RvKTsKKyAgfQorfQorCittb2R1bGUuZXhwb3J0cyA9IHsKKyAgaXNBbmNl
c3RvcjogaXNBbmNlc3RvciwKKyAgZ2V0TG93ZXN0Q29tbW9uQW5jZXN0b3I6IGdldExvd2VzdENv
bW1vbkFuY2VzdG9yLAorICBnZXRQYXJlbnRJbnN0YW5jZTogZ2V0UGFyZW50SW5zdGFuY2UsCisg
IHRyYXZlcnNlVHdvUGhhc2U6IHRyYXZlcnNlVHdvUGhhc2UsCisgIHRyYXZlcnNlRW50ZXJMZWF2
ZTogdHJhdmVyc2VFbnRlckxlYXZlCit9OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1Jl
YWN0RE9NVU1ERW50cnkuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3Qt
ZG9tL2xpYi9SZWFjdERPTVVNREVudHJ5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5MTBiYTI1MzNkNjk2OGUz
NjA2YzYxZmRiYzdmMzhlOGQ0MjFlOGEKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9y
ZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdERPTVVNREVudHJ5LmpzCkBAIC0w
LDAgKzEsMzIgQEAKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIElu
Yy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBs
aWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQ
QVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmlj
dCc7CisKK3ZhciBfYXNzaWduID0gcmVxdWlyZSgnb2JqZWN0LWFzc2lnbicpOworCit2YXIgUmVh
Y3RET00gPSByZXF1aXJlKCcuL1JlYWN0RE9NJyk7CisKK3ZhciBSZWFjdERPTVVNREVudHJ5ID0g
X2Fzc2lnbih7CisgIF9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JF
X0ZJUkVEOiB7CisgICAgUmVhY3RJbnN0YW5jZU1hcDogcmVxdWlyZSgnLi9SZWFjdEluc3RhbmNl
TWFwJykKKyAgfQorfSwgUmVhY3RET00pOworCitpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09
ICdwcm9kdWN0aW9uJykgeworICBfYXNzaWduKFJlYWN0RE9NVU1ERW50cnkuX19TRUNSRVRfSU5U
RVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQsIHsKKyAgICAvLyBSZWFjdFBl
cmYgYW5kIFJlYWN0VGVzdFV0aWxzIGN1cnJlbnRseSBvbmx5IHdvcmsgd2l0aCB0aGUgRE9NIHJl
bmRlcmVyCisgICAgLy8gc28gd2UgZXhwb3NlIHRoZW0gZnJvbSBoZXJlLCBidXQgb25seSBpbiBE
RVYgbW9kZS4KKyAgICBSZWFjdFBlcmY6IHJlcXVpcmUoJy4vUmVhY3RQZXJmJyksCisgICAgUmVh
Y3RUZXN0VXRpbHM6IHJlcXVpcmUoJy4vUmVhY3RUZXN0VXRpbHMnKQorICB9KTsKK30KKworbW9k
dWxlLmV4cG9ydHMgPSBSZWFjdERPTVVNREVudHJ5OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20v
bGliL1JlYWN0RE9NVW5rbm93blByb3BlcnR5SG9vay5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25v
ZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0RE9NVW5rbm93blByb3BlcnR5SG9vay5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5hYjZhOTE0ZmNlNGY4Y2M5M2ExYWMwOTcyMzk3MTllNzMwYTNmZTI1Ci0tLSAv
ZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9s
aWIvUmVhY3RET01Vbmtub3duUHJvcGVydHlIb29rLmpzCkBAIC0wLDAgKzEsMTExIEBACisvKioK
KyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl
IEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50Cisg
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgRE9NUHJv
cGVydHkgPSByZXF1aXJlKCcuL0RPTVByb3BlcnR5Jyk7Cit2YXIgRXZlbnRQbHVnaW5SZWdpc3Ry
eSA9IHJlcXVpcmUoJy4vRXZlbnRQbHVnaW5SZWdpc3RyeScpOwordmFyIFJlYWN0Q29tcG9uZW50
VHJlZUhvb2sgPSByZXF1aXJlKCdyZWFjdC9saWIvUmVhY3RDb21wb25lbnRUcmVlSG9vaycpOwor
Cit2YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTsKKworaWYgKHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHsKKyAgdmFyIHJlYWN0UHJvcHMgPSB7
CisgICAgY2hpbGRyZW46IHRydWUsCisgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6IHRydWUs
CisgICAga2V5OiB0cnVlLAorICAgIHJlZjogdHJ1ZSwKKworICAgIGF1dG9Gb2N1czogdHJ1ZSwK
KyAgICBkZWZhdWx0VmFsdWU6IHRydWUsCisgICAgdmFsdWVMaW5rOiB0cnVlLAorICAgIGRlZmF1
bHRDaGVja2VkOiB0cnVlLAorICAgIGNoZWNrZWRMaW5rOiB0cnVlLAorICAgIGlubmVySFRNTDog
dHJ1ZSwKKyAgICBzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmc6IHRydWUsCisgICAgb25G
b2N1c0luOiB0cnVlLAorICAgIG9uRm9jdXNPdXQ6IHRydWUKKyAgfTsKKyAgdmFyIHdhcm5lZFBy
b3BlcnRpZXMgPSB7fTsKKworICB2YXIgdmFsaWRhdGVQcm9wZXJ0eSA9IGZ1bmN0aW9uICh0YWdO
YW1lLCBuYW1lLCBkZWJ1Z0lEKSB7CisgICAgaWYgKERPTVByb3BlcnR5LnByb3BlcnRpZXMuaGFz
T3duUHJvcGVydHkobmFtZSkgfHwgRE9NUHJvcGVydHkuaXNDdXN0b21BdHRyaWJ1dGUobmFtZSkp
IHsKKyAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBpZiAocmVhY3RQcm9wcy5oYXNPd25Q
cm9wZXJ0eShuYW1lKSAmJiByZWFjdFByb3BzW25hbWVdIHx8IHdhcm5lZFByb3BlcnRpZXMuaGFz
T3duUHJvcGVydHkobmFtZSkgJiYgd2FybmVkUHJvcGVydGllc1tuYW1lXSkgeworICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorICAgIGlmIChFdmVudFBsdWdpblJlZ2lzdHJ5LnJlZ2lzdHJhdGlv
bk5hbWVNb2R1bGVzLmhhc093blByb3BlcnR5KG5hbWUpKSB7CisgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisgICAgd2FybmVkUHJvcGVydGllc1tuYW1lXSA9IHRydWU7CisgICAgdmFyIGxvd2Vy
Q2FzZWROYW1lID0gbmFtZS50b0xvd2VyQ2FzZSgpOworCisgICAgLy8gZGF0YS0qIGF0dHJpYnV0
ZXMgc2hvdWxkIGJlIGxvd2VyY2FzZTsgc3VnZ2VzdCB0aGUgbG93ZXJjYXNlIHZlcnNpb24KKyAg
ICB2YXIgc3RhbmRhcmROYW1lID0gRE9NUHJvcGVydHkuaXNDdXN0b21BdHRyaWJ1dGUobG93ZXJD
YXNlZE5hbWUpID8gbG93ZXJDYXNlZE5hbWUgOiBET01Qcm9wZXJ0eS5nZXRQb3NzaWJsZVN0YW5k
YXJkTmFtZS5oYXNPd25Qcm9wZXJ0eShsb3dlckNhc2VkTmFtZSkgPyBET01Qcm9wZXJ0eS5nZXRQ
b3NzaWJsZVN0YW5kYXJkTmFtZVtsb3dlckNhc2VkTmFtZV0gOiBudWxsOworCisgICAgdmFyIHJl
Z2lzdHJhdGlvbk5hbWUgPSBFdmVudFBsdWdpblJlZ2lzdHJ5LnBvc3NpYmxlUmVnaXN0cmF0aW9u
TmFtZXMuaGFzT3duUHJvcGVydHkobG93ZXJDYXNlZE5hbWUpID8gRXZlbnRQbHVnaW5SZWdpc3Ry
eS5wb3NzaWJsZVJlZ2lzdHJhdGlvbk5hbWVzW2xvd2VyQ2FzZWROYW1lXSA6IG51bGw7CisKKyAg
ICBpZiAoc3RhbmRhcmROYW1lICE9IG51bGwpIHsKKyAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnVW5rbm93biBET00gcHJvcGVydHkg
JXMuIERpZCB5b3UgbWVhbiAlcz8lcycsIG5hbWUsIHN0YW5kYXJkTmFtZSwgUmVhY3RDb21wb25l
bnRUcmVlSG9vay5nZXRTdGFja0FkZGVuZHVtQnlJRChkZWJ1Z0lEKSkgOiB2b2lkIDA7CisgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9IGVsc2UgaWYgKHJlZ2lzdHJhdGlvbk5hbWUgIT0gbnVsbCkg
eworICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmco
ZmFsc2UsICdVbmtub3duIGV2ZW50IGhhbmRsZXIgcHJvcGVydHkgJXMuIERpZCB5b3UgbWVhbiBg
JXNgPyVzJywgbmFtZSwgcmVnaXN0cmF0aW9uTmFtZSwgUmVhY3RDb21wb25lbnRUcmVlSG9vay5n
ZXRTdGFja0FkZGVuZHVtQnlJRChkZWJ1Z0lEKSkgOiB2b2lkIDA7CisgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9IGVsc2UgeworICAgICAgLy8gV2Ugd2VyZSB1bmFibGUgdG8gZ3Vlc3Mgd2hpY2gg
cHJvcCB0aGUgdXNlciBpbnRlbmRlZC4KKyAgICAgIC8vIEl0IGlzIGxpa2VseSB0aGF0IHRoZSB1
c2VyIHdhcyBqdXN0IGJsaW5kbHkgc3ByZWFkaW5nL2ZvcndhcmRpbmcgcHJvcHMKKyAgICAgIC8v
IENvbXBvbmVudHMgc2hvdWxkIGJlIGNhcmVmdWwgdG8gb25seSByZW5kZXIgdmFsaWQgcHJvcHMv
YXR0cmlidXRlcy4KKyAgICAgIC8vIFdhcm5pbmcgd2lsbCBiZSBpbnZva2VkIGluIHdhcm5Vbmtu
b3duUHJvcGVydGllcyB0byBhbGxvdyBncm91cGluZy4KKyAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisgIH07Cit9CisKK3ZhciB3YXJuVW5rbm93blByb3BlcnRpZXMgPSBmdW5jdGlvbiAoZGVi
dWdJRCwgZWxlbWVudCkgeworICB2YXIgdW5rbm93blByb3BzID0gW107CisgIGZvciAodmFyIGtl
eSBpbiBlbGVtZW50LnByb3BzKSB7CisgICAgdmFyIGlzVmFsaWQgPSB2YWxpZGF0ZVByb3BlcnR5
KGVsZW1lbnQudHlwZSwga2V5LCBkZWJ1Z0lEKTsKKyAgICBpZiAoIWlzVmFsaWQpIHsKKyAgICAg
IHVua25vd25Qcm9wcy5wdXNoKGtleSk7CisgICAgfQorICB9CisKKyAgdmFyIHVua25vd25Qcm9w
U3RyaW5nID0gdW5rbm93blByb3BzLm1hcChmdW5jdGlvbiAocHJvcCkgeworICAgIHJldHVybiAn
YCcgKyBwcm9wICsgJ2AnOworICB9KS5qb2luKCcsICcpOworCisgIGlmICh1bmtub3duUHJvcHMu
bGVuZ3RoID09PSAxKSB7CisgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
JyA/IHdhcm5pbmcoZmFsc2UsICdVbmtub3duIHByb3AgJXMgb24gPCVzPiB0YWcuIFJlbW92ZSB0
aGlzIHByb3AgZnJvbSB0aGUgZWxlbWVudC4gJyArICdGb3IgZGV0YWlscywgc2VlIGh0dHBzOi8v
ZmIubWUvcmVhY3QtdW5rbm93bi1wcm9wJXMnLCB1bmtub3duUHJvcFN0cmluZywgZWxlbWVudC50
eXBlLCBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldFN0YWNrQWRkZW5kdW1CeUlEKGRlYnVnSUQp
KSA6IHZvaWQgMDsKKyAgfSBlbHNlIGlmICh1bmtub3duUHJvcHMubGVuZ3RoID4gMSkgeworICAg
IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAn
VW5rbm93biBwcm9wcyAlcyBvbiA8JXM+IHRhZy4gUmVtb3ZlIHRoZXNlIHByb3BzIGZyb20gdGhl
IGVsZW1lbnQuICcgKyAnRm9yIGRldGFpbHMsIHNlZSBodHRwczovL2ZiLm1lL3JlYWN0LXVua25v
d24tcHJvcCVzJywgdW5rbm93blByb3BTdHJpbmcsIGVsZW1lbnQudHlwZSwgUmVhY3RDb21wb25l
bnRUcmVlSG9vay5nZXRTdGFja0FkZGVuZHVtQnlJRChkZWJ1Z0lEKSkgOiB2b2lkIDA7CisgIH0K
K307CisKK2Z1bmN0aW9uIGhhbmRsZUVsZW1lbnQoZGVidWdJRCwgZWxlbWVudCkgeworICBpZiAo
ZWxlbWVudCA9PSBudWxsIHx8IHR5cGVvZiBlbGVtZW50LnR5cGUgIT09ICdzdHJpbmcnKSB7Cisg
ICAgcmV0dXJuOworICB9CisgIGlmIChlbGVtZW50LnR5cGUuaW5kZXhPZignLScpID49IDAgfHwg
ZWxlbWVudC5wcm9wcy5pcykgeworICAgIHJldHVybjsKKyAgfQorICB3YXJuVW5rbm93blByb3Bl
cnRpZXMoZGVidWdJRCwgZWxlbWVudCk7Cit9CisKK3ZhciBSZWFjdERPTVVua25vd25Qcm9wZXJ0
eUhvb2sgPSB7CisgIG9uQmVmb3JlTW91bnRDb21wb25lbnQ6IGZ1bmN0aW9uIChkZWJ1Z0lELCBl
bGVtZW50KSB7CisgICAgaGFuZGxlRWxlbWVudChkZWJ1Z0lELCBlbGVtZW50KTsKKyAgfSwKKyAg
b25CZWZvcmVVcGRhdGVDb21wb25lbnQ6IGZ1bmN0aW9uIChkZWJ1Z0lELCBlbGVtZW50KSB7Cisg
ICAgaGFuZGxlRWxlbWVudChkZWJ1Z0lELCBlbGVtZW50KTsKKyAgfQorfTsKKworbW9kdWxlLmV4
cG9ydHMgPSBSZWFjdERPTVVua25vd25Qcm9wZXJ0eUhvb2s7ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0
LWRvbS9saWIvUmVhY3REZWJ1Z1Rvb2wuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVs
ZXMvcmVhY3QtZG9tL2xpYi9SZWFjdERlYnVnVG9vbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NGE1ZGYwYTgz
Y2NjYjUzYjZhMGYzYTI4Y2M2NWI3NmIxOTU2MTMzCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3REZWJ1Z1Rvb2wuanMK
QEAgLTAsMCArMSwzNjAgQEAKKy8qKgorICogQ29weXJpZ2h0IDIwMTYtcHJlc2VudCwgRmFjZWJv
b2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29k
ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisg
KiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUu
IEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIAorICovCisK
Kyd1c2Ugc3RyaWN0JzsKKwordmFyIFJlYWN0SW52YWxpZFNldFN0YXRlV2FybmluZ0hvb2sgPSBy
ZXF1aXJlKCcuL1JlYWN0SW52YWxpZFNldFN0YXRlV2FybmluZ0hvb2snKTsKK3ZhciBSZWFjdEhv
c3RPcGVyYXRpb25IaXN0b3J5SG9vayA9IHJlcXVpcmUoJy4vUmVhY3RIb3N0T3BlcmF0aW9uSGlz
dG9yeUhvb2snKTsKK3ZhciBSZWFjdENvbXBvbmVudFRyZWVIb29rID0gcmVxdWlyZSgncmVhY3Qv
bGliL1JlYWN0Q29tcG9uZW50VHJlZUhvb2snKTsKK3ZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9
IHJlcXVpcmUoJ2ZianMvbGliL0V4ZWN1dGlvbkVudmlyb25tZW50Jyk7CisKK3ZhciBwZXJmb3Jt
YW5jZU5vdyA9IHJlcXVpcmUoJ2ZianMvbGliL3BlcmZvcm1hbmNlTm93Jyk7Cit2YXIgd2Fybmlu
ZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTsKKwordmFyIGhvb2tzID0gW107Cit2YXIg
ZGlkSG9va1Rocm93Rm9yRXZlbnQgPSB7fTsKKworZnVuY3Rpb24gY2FsbEhvb2soZXZlbnQsIGZu
LCBjb250ZXh0LCBhcmcxLCBhcmcyLCBhcmczLCBhcmc0LCBhcmc1KSB7CisgIHRyeSB7CisgICAg
Zm4uY2FsbChjb250ZXh0LCBhcmcxLCBhcmcyLCBhcmczLCBhcmc0LCBhcmc1KTsKKyAgfSBjYXRj
aCAoZSkgeworICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJu
aW5nKGRpZEhvb2tUaHJvd0ZvckV2ZW50W2V2ZW50XSwgJ0V4Y2VwdGlvbiB0aHJvd24gYnkgaG9v
ayB3aGlsZSBoYW5kbGluZyAlczogJXMnLCBldmVudCwgZSArICdcbicgKyBlLnN0YWNrKSA6IHZv
aWQgMDsKKyAgICBkaWRIb29rVGhyb3dGb3JFdmVudFtldmVudF0gPSB0cnVlOworICB9Cit9CisK
K2Z1bmN0aW9uIGVtaXRFdmVudChldmVudCwgYXJnMSwgYXJnMiwgYXJnMywgYXJnNCwgYXJnNSkg
eworICBmb3IgKHZhciBpID0gMDsgaSA8IGhvb2tzLmxlbmd0aDsgaSsrKSB7CisgICAgdmFyIGhv
b2sgPSBob29rc1tpXTsKKyAgICB2YXIgZm4gPSBob29rW2V2ZW50XTsKKyAgICBpZiAoZm4pIHsK
KyAgICAgIGNhbGxIb29rKGV2ZW50LCBmbiwgaG9vaywgYXJnMSwgYXJnMiwgYXJnMywgYXJnNCwg
YXJnNSk7CisgICAgfQorICB9Cit9CisKK3ZhciBpc1Byb2ZpbGluZyA9IGZhbHNlOwordmFyIGZs
dXNoSGlzdG9yeSA9IFtdOwordmFyIGxpZmVDeWNsZVRpbWVyU3RhY2sgPSBbXTsKK3ZhciBjdXJy
ZW50Rmx1c2hOZXN0aW5nID0gMDsKK3ZhciBjdXJyZW50Rmx1c2hNZWFzdXJlbWVudHMgPSBbXTsK
K3ZhciBjdXJyZW50Rmx1c2hTdGFydFRpbWUgPSAwOwordmFyIGN1cnJlbnRUaW1lckRlYnVnSUQg
PSBudWxsOwordmFyIGN1cnJlbnRUaW1lclN0YXJ0VGltZSA9IDA7Cit2YXIgY3VycmVudFRpbWVy
TmVzdGVkRmx1c2hEdXJhdGlvbiA9IDA7Cit2YXIgY3VycmVudFRpbWVyVHlwZSA9IG51bGw7CisK
K3ZhciBsaWZlQ3ljbGVUaW1lckhhc1dhcm5lZCA9IGZhbHNlOworCitmdW5jdGlvbiBjbGVhckhp
c3RvcnkoKSB7CisgIFJlYWN0Q29tcG9uZW50VHJlZUhvb2sucHVyZ2VVbm1vdW50ZWRDb21wb25l
bnRzKCk7CisgIFJlYWN0SG9zdE9wZXJhdGlvbkhpc3RvcnlIb29rLmNsZWFySGlzdG9yeSgpOwor
fQorCitmdW5jdGlvbiBnZXRUcmVlU25hcHNob3QocmVnaXN0ZXJlZElEcykgeworICByZXR1cm4g
cmVnaXN0ZXJlZElEcy5yZWR1Y2UoZnVuY3Rpb24gKHRyZWUsIGlkKSB7CisgICAgdmFyIG93bmVy
SUQgPSBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldE93bmVySUQoaWQpOworICAgIHZhciBwYXJl
bnRJRCA9IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0UGFyZW50SUQoaWQpOworICAgIHRyZWVb
aWRdID0geworICAgICAgZGlzcGxheU5hbWU6IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0RGlz
cGxheU5hbWUoaWQpLAorICAgICAgdGV4dDogUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRUZXh0
KGlkKSwKKyAgICAgIHVwZGF0ZUNvdW50OiBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldFVwZGF0
ZUNvdW50KGlkKSwKKyAgICAgIGNoaWxkSURzOiBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldENo
aWxkSURzKGlkKSwKKyAgICAgIC8vIFRleHQgbm9kZXMgZG9uJ3QgaGF2ZSBvd25lcnMgYnV0IHRo
aXMgaXMgY2xvc2UgZW5vdWdoLgorICAgICAgb3duZXJJRDogb3duZXJJRCB8fCBwYXJlbnRJRCAm
JiBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldE93bmVySUQocGFyZW50SUQpIHx8IDAsCisgICAg
ICBwYXJlbnRJRDogcGFyZW50SUQKKyAgICB9OworICAgIHJldHVybiB0cmVlOworICB9LCB7fSk7
Cit9CisKK2Z1bmN0aW9uIHJlc2V0TWVhc3VyZW1lbnRzKCkgeworICB2YXIgcHJldmlvdXNTdGFy
dFRpbWUgPSBjdXJyZW50Rmx1c2hTdGFydFRpbWU7CisgIHZhciBwcmV2aW91c01lYXN1cmVtZW50
cyA9IGN1cnJlbnRGbHVzaE1lYXN1cmVtZW50czsKKyAgdmFyIHByZXZpb3VzT3BlcmF0aW9ucyA9
IFJlYWN0SG9zdE9wZXJhdGlvbkhpc3RvcnlIb29rLmdldEhpc3RvcnkoKTsKKworICBpZiAoY3Vy
cmVudEZsdXNoTmVzdGluZyA9PT0gMCkgeworICAgIGN1cnJlbnRGbHVzaFN0YXJ0VGltZSA9IDA7
CisgICAgY3VycmVudEZsdXNoTWVhc3VyZW1lbnRzID0gW107CisgICAgY2xlYXJIaXN0b3J5KCk7
CisgICAgcmV0dXJuOworICB9CisKKyAgaWYgKHByZXZpb3VzTWVhc3VyZW1lbnRzLmxlbmd0aCB8
fCBwcmV2aW91c09wZXJhdGlvbnMubGVuZ3RoKSB7CisgICAgdmFyIHJlZ2lzdGVyZWRJRHMgPSBS
ZWFjdENvbXBvbmVudFRyZWVIb29rLmdldFJlZ2lzdGVyZWRJRHMoKTsKKyAgICBmbHVzaEhpc3Rv
cnkucHVzaCh7CisgICAgICBkdXJhdGlvbjogcGVyZm9ybWFuY2VOb3coKSAtIHByZXZpb3VzU3Rh
cnRUaW1lLAorICAgICAgbWVhc3VyZW1lbnRzOiBwcmV2aW91c01lYXN1cmVtZW50cyB8fCBbXSwK
KyAgICAgIG9wZXJhdGlvbnM6IHByZXZpb3VzT3BlcmF0aW9ucyB8fCBbXSwKKyAgICAgIHRyZWVT
bmFwc2hvdDogZ2V0VHJlZVNuYXBzaG90KHJlZ2lzdGVyZWRJRHMpCisgICAgfSk7CisgIH0KKwor
ICBjbGVhckhpc3RvcnkoKTsKKyAgY3VycmVudEZsdXNoU3RhcnRUaW1lID0gcGVyZm9ybWFuY2VO
b3coKTsKKyAgY3VycmVudEZsdXNoTWVhc3VyZW1lbnRzID0gW107Cit9CisKK2Z1bmN0aW9uIGNo
ZWNrRGVidWdJRChkZWJ1Z0lEKSB7CisgIHZhciBhbGxvd1Jvb3QgPSBhcmd1bWVudHMubGVuZ3Ro
ID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IGZhbHNl
OworCisgIGlmIChhbGxvd1Jvb3QgJiYgZGVidWdJRCA9PT0gMCkgeworICAgIHJldHVybjsKKyAg
fQorICBpZiAoIWRlYnVnSUQpIHsKKyAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1JlYWN0RGVidWdUb29sOiBkZWJ1Z0lEIG1heSBub3Qg
YmUgZW1wdHkuJykgOiB2b2lkIDA7CisgIH0KK30KKworZnVuY3Rpb24gYmVnaW5MaWZlQ3ljbGVU
aW1lcihkZWJ1Z0lELCB0aW1lclR5cGUpIHsKKyAgaWYgKGN1cnJlbnRGbHVzaE5lc3RpbmcgPT09
IDApIHsKKyAgICByZXR1cm47CisgIH0KKyAgaWYgKGN1cnJlbnRUaW1lclR5cGUgJiYgIWxpZmVD
eWNsZVRpbWVySGFzV2FybmVkKSB7CisgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdUaGVyZSBpcyBhbiBpbnRlcm5hbCBlcnJvciBpbiB0
aGUgUmVhY3QgcGVyZm9ybWFuY2UgbWVhc3VyZW1lbnQgY29kZS4gJyArICdEaWQgbm90IGV4cGVj
dCAlcyB0aW1lciB0byBzdGFydCB3aGlsZSAlcyB0aW1lciBpcyBzdGlsbCBpbiAnICsgJ3Byb2dy
ZXNzIGZvciAlcyBpbnN0YW5jZS4nLCB0aW1lclR5cGUsIGN1cnJlbnRUaW1lclR5cGUgfHwgJ25v
JywgZGVidWdJRCA9PT0gY3VycmVudFRpbWVyRGVidWdJRCA/ICd0aGUgc2FtZScgOiAnYW5vdGhl
cicpIDogdm9pZCAwOworICAgIGxpZmVDeWNsZVRpbWVySGFzV2FybmVkID0gdHJ1ZTsKKyAgfQor
ICBjdXJyZW50VGltZXJTdGFydFRpbWUgPSBwZXJmb3JtYW5jZU5vdygpOworICBjdXJyZW50VGlt
ZXJOZXN0ZWRGbHVzaER1cmF0aW9uID0gMDsKKyAgY3VycmVudFRpbWVyRGVidWdJRCA9IGRlYnVn
SUQ7CisgIGN1cnJlbnRUaW1lclR5cGUgPSB0aW1lclR5cGU7Cit9CisKK2Z1bmN0aW9uIGVuZExp
ZmVDeWNsZVRpbWVyKGRlYnVnSUQsIHRpbWVyVHlwZSkgeworICBpZiAoY3VycmVudEZsdXNoTmVz
dGluZyA9PT0gMCkgeworICAgIHJldHVybjsKKyAgfQorICBpZiAoY3VycmVudFRpbWVyVHlwZSAh
PT0gdGltZXJUeXBlICYmICFsaWZlQ3ljbGVUaW1lckhhc1dhcm5lZCkgeworICAgIHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnVGhlcmUgaXMg
YW4gaW50ZXJuYWwgZXJyb3IgaW4gdGhlIFJlYWN0IHBlcmZvcm1hbmNlIG1lYXN1cmVtZW50IGNv
ZGUuICcgKyAnV2UgZGlkIG5vdCBleHBlY3QgJXMgdGltZXIgdG8gc3RvcCB3aGlsZSAlcyB0aW1l
ciBpcyBzdGlsbCBpbiAnICsgJ3Byb2dyZXNzIGZvciAlcyBpbnN0YW5jZS4gUGxlYXNlIHJlcG9y
dCB0aGlzIGFzIGEgYnVnIGluIFJlYWN0LicsIHRpbWVyVHlwZSwgY3VycmVudFRpbWVyVHlwZSB8
fCAnbm8nLCBkZWJ1Z0lEID09PSBjdXJyZW50VGltZXJEZWJ1Z0lEID8gJ3RoZSBzYW1lJyA6ICdh
bm90aGVyJykgOiB2b2lkIDA7CisgICAgbGlmZUN5Y2xlVGltZXJIYXNXYXJuZWQgPSB0cnVlOwor
ICB9CisgIGlmIChpc1Byb2ZpbGluZykgeworICAgIGN1cnJlbnRGbHVzaE1lYXN1cmVtZW50cy5w
dXNoKHsKKyAgICAgIHRpbWVyVHlwZTogdGltZXJUeXBlLAorICAgICAgaW5zdGFuY2VJRDogZGVi
dWdJRCwKKyAgICAgIGR1cmF0aW9uOiBwZXJmb3JtYW5jZU5vdygpIC0gY3VycmVudFRpbWVyU3Rh
cnRUaW1lIC0gY3VycmVudFRpbWVyTmVzdGVkRmx1c2hEdXJhdGlvbgorICAgIH0pOworICB9Cisg
IGN1cnJlbnRUaW1lclN0YXJ0VGltZSA9IDA7CisgIGN1cnJlbnRUaW1lck5lc3RlZEZsdXNoRHVy
YXRpb24gPSAwOworICBjdXJyZW50VGltZXJEZWJ1Z0lEID0gbnVsbDsKKyAgY3VycmVudFRpbWVy
VHlwZSA9IG51bGw7Cit9CisKK2Z1bmN0aW9uIHBhdXNlQ3VycmVudExpZmVDeWNsZVRpbWVyKCkg
eworICB2YXIgY3VycmVudFRpbWVyID0geworICAgIHN0YXJ0VGltZTogY3VycmVudFRpbWVyU3Rh
cnRUaW1lLAorICAgIG5lc3RlZEZsdXNoU3RhcnRUaW1lOiBwZXJmb3JtYW5jZU5vdygpLAorICAg
IGRlYnVnSUQ6IGN1cnJlbnRUaW1lckRlYnVnSUQsCisgICAgdGltZXJUeXBlOiBjdXJyZW50VGlt
ZXJUeXBlCisgIH07CisgIGxpZmVDeWNsZVRpbWVyU3RhY2sucHVzaChjdXJyZW50VGltZXIpOwor
ICBjdXJyZW50VGltZXJTdGFydFRpbWUgPSAwOworICBjdXJyZW50VGltZXJOZXN0ZWRGbHVzaER1
cmF0aW9uID0gMDsKKyAgY3VycmVudFRpbWVyRGVidWdJRCA9IG51bGw7CisgIGN1cnJlbnRUaW1l
clR5cGUgPSBudWxsOworfQorCitmdW5jdGlvbiByZXN1bWVDdXJyZW50TGlmZUN5Y2xlVGltZXIo
KSB7CisgIHZhciBfbGlmZUN5Y2xlVGltZXJTdGFjayQgPSBsaWZlQ3ljbGVUaW1lclN0YWNrLnBv
cCgpLAorICAgICAgc3RhcnRUaW1lID0gX2xpZmVDeWNsZVRpbWVyU3RhY2skLnN0YXJ0VGltZSwK
KyAgICAgIG5lc3RlZEZsdXNoU3RhcnRUaW1lID0gX2xpZmVDeWNsZVRpbWVyU3RhY2skLm5lc3Rl
ZEZsdXNoU3RhcnRUaW1lLAorICAgICAgZGVidWdJRCA9IF9saWZlQ3ljbGVUaW1lclN0YWNrJC5k
ZWJ1Z0lELAorICAgICAgdGltZXJUeXBlID0gX2xpZmVDeWNsZVRpbWVyU3RhY2skLnRpbWVyVHlw
ZTsKKworICB2YXIgbmVzdGVkRmx1c2hEdXJhdGlvbiA9IHBlcmZvcm1hbmNlTm93KCkgLSBuZXN0
ZWRGbHVzaFN0YXJ0VGltZTsKKyAgY3VycmVudFRpbWVyU3RhcnRUaW1lID0gc3RhcnRUaW1lOwor
ICBjdXJyZW50VGltZXJOZXN0ZWRGbHVzaER1cmF0aW9uICs9IG5lc3RlZEZsdXNoRHVyYXRpb247
CisgIGN1cnJlbnRUaW1lckRlYnVnSUQgPSBkZWJ1Z0lEOworICBjdXJyZW50VGltZXJUeXBlID0g
dGltZXJUeXBlOworfQorCit2YXIgbGFzdE1hcmtUaW1lU3RhbXAgPSAwOwordmFyIGNhblVzZVBl
cmZvcm1hbmNlTWVhc3VyZSA9CisvLyAkRmxvd0ZpeE1lIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNl
Ym9vay9mbG93L2lzc3Vlcy8yMzQ1Cit0eXBlb2YgcGVyZm9ybWFuY2UgIT09ICd1bmRlZmluZWQn
ICYmIHR5cGVvZiBwZXJmb3JtYW5jZS5tYXJrID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBwZXJm
b3JtYW5jZS5jbGVhck1hcmtzID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBwZXJmb3JtYW5jZS5t
ZWFzdXJlID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBwZXJmb3JtYW5jZS5jbGVhck1lYXN1cmVz
ID09PSAnZnVuY3Rpb24nOworCitmdW5jdGlvbiBzaG91bGRNYXJrKGRlYnVnSUQpIHsKKyAgaWYg
KCFpc1Byb2ZpbGluZyB8fCAhY2FuVXNlUGVyZm9ybWFuY2VNZWFzdXJlKSB7CisgICAgcmV0dXJu
IGZhbHNlOworICB9CisgIHZhciBlbGVtZW50ID0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRF
bGVtZW50KGRlYnVnSUQpOworICBpZiAoZWxlbWVudCA9PSBudWxsIHx8IHR5cGVvZiBlbGVtZW50
ICE9PSAnb2JqZWN0JykgeworICAgIHJldHVybiBmYWxzZTsKKyAgfQorICB2YXIgaXNIb3N0RWxl
bWVudCA9IHR5cGVvZiBlbGVtZW50LnR5cGUgPT09ICdzdHJpbmcnOworICBpZiAoaXNIb3N0RWxl
bWVudCkgeworICAgIHJldHVybiBmYWxzZTsKKyAgfQorICByZXR1cm4gdHJ1ZTsKK30KKworZnVu
Y3Rpb24gbWFya0JlZ2luKGRlYnVnSUQsIG1hcmtUeXBlKSB7CisgIGlmICghc2hvdWxkTWFyayhk
ZWJ1Z0lEKSkgeworICAgIHJldHVybjsKKyAgfQorCisgIHZhciBtYXJrTmFtZSA9IGRlYnVnSUQg
KyAnOjonICsgbWFya1R5cGU7CisgIGxhc3RNYXJrVGltZVN0YW1wID0gcGVyZm9ybWFuY2VOb3co
KTsKKyAgcGVyZm9ybWFuY2UubWFyayhtYXJrTmFtZSk7Cit9CisKK2Z1bmN0aW9uIG1hcmtFbmQo
ZGVidWdJRCwgbWFya1R5cGUpIHsKKyAgaWYgKCFzaG91bGRNYXJrKGRlYnVnSUQpKSB7CisgICAg
cmV0dXJuOworICB9CisKKyAgdmFyIG1hcmtOYW1lID0gZGVidWdJRCArICc6OicgKyBtYXJrVHlw
ZTsKKyAgdmFyIGRpc3BsYXlOYW1lID0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXREaXNwbGF5
TmFtZShkZWJ1Z0lEKSB8fCAnVW5rbm93bic7CisKKyAgLy8gQ2hyb21lIGhhcyBhbiBpc3N1ZSBv
ZiBkcm9wcGluZyBtYXJrZXJzIHJlY29yZGVkIHRvbyBmYXN0OgorICAvLyBodHRwczovL2J1Z3Mu
Y2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD02NDA2NTIKKyAgLy8gVG8g
d29yayBhcm91bmQgdGhpcywgd2Ugd2lsbCBub3QgcmVwb3J0IHZlcnkgc21hbGwgbWVhc3VyZW1l
bnRzLgorICAvLyBJIGRldGVybWluZWQgdGhlIG1hZ2ljIG51bWJlciBieSB0d2Vha2luZyBpdCBi
YWNrIGFuZCBmb3J0aC4KKyAgLy8gMC4wNW1zIHdhcyBlbm91Z2ggdG8gcHJldmVudCB0aGUgaXNz
dWUsIGJ1dCBJIHNldCBpdCB0byAwLjFtcyB0byBiZSBzYWZlLgorICAvLyBXaGVuIHRoZSBidWcg
aXMgZml4ZWQsIHdlIGNhbiBgbWVhc3VyZSgpYCB1bmNvbmRpdGlvbmFsbHkgaWYgd2Ugd2FudCB0
by4KKyAgdmFyIHRpbWVTdGFtcCA9IHBlcmZvcm1hbmNlTm93KCk7CisgIGlmICh0aW1lU3RhbXAg
LSBsYXN0TWFya1RpbWVTdGFtcCA+IDAuMSkgeworICAgIHZhciBtZWFzdXJlbWVudE5hbWUgPSBk
aXNwbGF5TmFtZSArICcgWycgKyBtYXJrVHlwZSArICddJzsKKyAgICBwZXJmb3JtYW5jZS5tZWFz
dXJlKG1lYXN1cmVtZW50TmFtZSwgbWFya05hbWUpOworICB9CisKKyAgcGVyZm9ybWFuY2UuY2xl
YXJNYXJrcyhtYXJrTmFtZSk7CisgIHBlcmZvcm1hbmNlLmNsZWFyTWVhc3VyZXMobWVhc3VyZW1l
bnROYW1lKTsKK30KKwordmFyIFJlYWN0RGVidWdUb29sID0geworICBhZGRIb29rOiBmdW5jdGlv
biAoaG9vaykgeworICAgIGhvb2tzLnB1c2goaG9vayk7CisgIH0sCisgIHJlbW92ZUhvb2s6IGZ1
bmN0aW9uIChob29rKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBob29rcy5sZW5ndGg7IGkr
KykgeworICAgICAgaWYgKGhvb2tzW2ldID09PSBob29rKSB7CisgICAgICAgIGhvb2tzLnNwbGlj
ZShpLCAxKTsKKyAgICAgICAgaS0tOworICAgICAgfQorICAgIH0KKyAgfSwKKyAgaXNQcm9maWxp
bmc6IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gaXNQcm9maWxpbmc7CisgIH0sCisgIGJlZ2lu
UHJvZmlsaW5nOiBmdW5jdGlvbiAoKSB7CisgICAgaWYgKGlzUHJvZmlsaW5nKSB7CisgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgaXNQcm9maWxpbmcgPSB0cnVlOworICAgIGZsdXNoSGlzdG9y
eS5sZW5ndGggPSAwOworICAgIHJlc2V0TWVhc3VyZW1lbnRzKCk7CisgICAgUmVhY3REZWJ1Z1Rv
b2wuYWRkSG9vayhSZWFjdEhvc3RPcGVyYXRpb25IaXN0b3J5SG9vayk7CisgIH0sCisgIGVuZFBy
b2ZpbGluZzogZnVuY3Rpb24gKCkgeworICAgIGlmICghaXNQcm9maWxpbmcpIHsKKyAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBpc1Byb2ZpbGluZyA9IGZhbHNlOworICAgIHJlc2V0TWVhc3Vy
ZW1lbnRzKCk7CisgICAgUmVhY3REZWJ1Z1Rvb2wucmVtb3ZlSG9vayhSZWFjdEhvc3RPcGVyYXRp
b25IaXN0b3J5SG9vayk7CisgIH0sCisgIGdldEZsdXNoSGlzdG9yeTogZnVuY3Rpb24gKCkgewor
ICAgIHJldHVybiBmbHVzaEhpc3Rvcnk7CisgIH0sCisgIG9uQmVnaW5GbHVzaDogZnVuY3Rpb24g
KCkgeworICAgIGN1cnJlbnRGbHVzaE5lc3RpbmcrKzsKKyAgICByZXNldE1lYXN1cmVtZW50cygp
OworICAgIHBhdXNlQ3VycmVudExpZmVDeWNsZVRpbWVyKCk7CisgICAgZW1pdEV2ZW50KCdvbkJl
Z2luRmx1c2gnKTsKKyAgfSwKKyAgb25FbmRGbHVzaDogZnVuY3Rpb24gKCkgeworICAgIHJlc2V0
TWVhc3VyZW1lbnRzKCk7CisgICAgY3VycmVudEZsdXNoTmVzdGluZy0tOworICAgIHJlc3VtZUN1
cnJlbnRMaWZlQ3ljbGVUaW1lcigpOworICAgIGVtaXRFdmVudCgnb25FbmRGbHVzaCcpOworICB9
LAorICBvbkJlZ2luTGlmZUN5Y2xlVGltZXI6IGZ1bmN0aW9uIChkZWJ1Z0lELCB0aW1lclR5cGUp
IHsKKyAgICBjaGVja0RlYnVnSUQoZGVidWdJRCk7CisgICAgZW1pdEV2ZW50KCdvbkJlZ2luTGlm
ZUN5Y2xlVGltZXInLCBkZWJ1Z0lELCB0aW1lclR5cGUpOworICAgIG1hcmtCZWdpbihkZWJ1Z0lE
LCB0aW1lclR5cGUpOworICAgIGJlZ2luTGlmZUN5Y2xlVGltZXIoZGVidWdJRCwgdGltZXJUeXBl
KTsKKyAgfSwKKyAgb25FbmRMaWZlQ3ljbGVUaW1lcjogZnVuY3Rpb24gKGRlYnVnSUQsIHRpbWVy
VHlwZSkgeworICAgIGNoZWNrRGVidWdJRChkZWJ1Z0lEKTsKKyAgICBlbmRMaWZlQ3ljbGVUaW1l
cihkZWJ1Z0lELCB0aW1lclR5cGUpOworICAgIG1hcmtFbmQoZGVidWdJRCwgdGltZXJUeXBlKTsK
KyAgICBlbWl0RXZlbnQoJ29uRW5kTGlmZUN5Y2xlVGltZXInLCBkZWJ1Z0lELCB0aW1lclR5cGUp
OworICB9LAorICBvbkJlZ2luUHJvY2Vzc2luZ0NoaWxkQ29udGV4dDogZnVuY3Rpb24gKCkgewor
ICAgIGVtaXRFdmVudCgnb25CZWdpblByb2Nlc3NpbmdDaGlsZENvbnRleHQnKTsKKyAgfSwKKyAg
b25FbmRQcm9jZXNzaW5nQ2hpbGRDb250ZXh0OiBmdW5jdGlvbiAoKSB7CisgICAgZW1pdEV2ZW50
KCdvbkVuZFByb2Nlc3NpbmdDaGlsZENvbnRleHQnKTsKKyAgfSwKKyAgb25Ib3N0T3BlcmF0aW9u
OiBmdW5jdGlvbiAob3BlcmF0aW9uKSB7CisgICAgY2hlY2tEZWJ1Z0lEKG9wZXJhdGlvbi5pbnN0
YW5jZUlEKTsKKyAgICBlbWl0RXZlbnQoJ29uSG9zdE9wZXJhdGlvbicsIG9wZXJhdGlvbik7Cisg
IH0sCisgIG9uU2V0U3RhdGU6IGZ1bmN0aW9uICgpIHsKKyAgICBlbWl0RXZlbnQoJ29uU2V0U3Rh
dGUnKTsKKyAgfSwKKyAgb25TZXRDaGlsZHJlbjogZnVuY3Rpb24gKGRlYnVnSUQsIGNoaWxkRGVi
dWdJRHMpIHsKKyAgICBjaGVja0RlYnVnSUQoZGVidWdJRCk7CisgICAgY2hpbGREZWJ1Z0lEcy5m
b3JFYWNoKGNoZWNrRGVidWdJRCk7CisgICAgZW1pdEV2ZW50KCdvblNldENoaWxkcmVuJywgZGVi
dWdJRCwgY2hpbGREZWJ1Z0lEcyk7CisgIH0sCisgIG9uQmVmb3JlTW91bnRDb21wb25lbnQ6IGZ1
bmN0aW9uIChkZWJ1Z0lELCBlbGVtZW50LCBwYXJlbnREZWJ1Z0lEKSB7CisgICAgY2hlY2tEZWJ1
Z0lEKGRlYnVnSUQpOworICAgIGNoZWNrRGVidWdJRChwYXJlbnREZWJ1Z0lELCB0cnVlKTsKKyAg
ICBlbWl0RXZlbnQoJ29uQmVmb3JlTW91bnRDb21wb25lbnQnLCBkZWJ1Z0lELCBlbGVtZW50LCBw
YXJlbnREZWJ1Z0lEKTsKKyAgICBtYXJrQmVnaW4oZGVidWdJRCwgJ21vdW50Jyk7CisgIH0sCisg
IG9uTW91bnRDb21wb25lbnQ6IGZ1bmN0aW9uIChkZWJ1Z0lEKSB7CisgICAgY2hlY2tEZWJ1Z0lE
KGRlYnVnSUQpOworICAgIG1hcmtFbmQoZGVidWdJRCwgJ21vdW50Jyk7CisgICAgZW1pdEV2ZW50
KCdvbk1vdW50Q29tcG9uZW50JywgZGVidWdJRCk7CisgIH0sCisgIG9uQmVmb3JlVXBkYXRlQ29t
cG9uZW50OiBmdW5jdGlvbiAoZGVidWdJRCwgZWxlbWVudCkgeworICAgIGNoZWNrRGVidWdJRChk
ZWJ1Z0lEKTsKKyAgICBlbWl0RXZlbnQoJ29uQmVmb3JlVXBkYXRlQ29tcG9uZW50JywgZGVidWdJ
RCwgZWxlbWVudCk7CisgICAgbWFya0JlZ2luKGRlYnVnSUQsICd1cGRhdGUnKTsKKyAgfSwKKyAg
b25VcGRhdGVDb21wb25lbnQ6IGZ1bmN0aW9uIChkZWJ1Z0lEKSB7CisgICAgY2hlY2tEZWJ1Z0lE
KGRlYnVnSUQpOworICAgIG1hcmtFbmQoZGVidWdJRCwgJ3VwZGF0ZScpOworICAgIGVtaXRFdmVu
dCgnb25VcGRhdGVDb21wb25lbnQnLCBkZWJ1Z0lEKTsKKyAgfSwKKyAgb25CZWZvcmVVbm1vdW50
Q29tcG9uZW50OiBmdW5jdGlvbiAoZGVidWdJRCkgeworICAgIGNoZWNrRGVidWdJRChkZWJ1Z0lE
KTsKKyAgICBlbWl0RXZlbnQoJ29uQmVmb3JlVW5tb3VudENvbXBvbmVudCcsIGRlYnVnSUQpOwor
ICAgIG1hcmtCZWdpbihkZWJ1Z0lELCAndW5tb3VudCcpOworICB9LAorICBvblVubW91bnRDb21w
b25lbnQ6IGZ1bmN0aW9uIChkZWJ1Z0lEKSB7CisgICAgY2hlY2tEZWJ1Z0lEKGRlYnVnSUQpOwor
ICAgIG1hcmtFbmQoZGVidWdJRCwgJ3VubW91bnQnKTsKKyAgICBlbWl0RXZlbnQoJ29uVW5tb3Vu
dENvbXBvbmVudCcsIGRlYnVnSUQpOworICB9LAorICBvblRlc3RFdmVudDogZnVuY3Rpb24gKCkg
eworICAgIGVtaXRFdmVudCgnb25UZXN0RXZlbnQnKTsKKyAgfQorfTsKKworLy8gVE9ETyByZW1v
dmUgdGhlc2Ugd2hlbiBSTi93d3cgZ2V0cyB1cGRhdGVkCitSZWFjdERlYnVnVG9vbC5hZGREZXZ0
b29sID0gUmVhY3REZWJ1Z1Rvb2wuYWRkSG9vazsKK1JlYWN0RGVidWdUb29sLnJlbW92ZURldnRv
b2wgPSBSZWFjdERlYnVnVG9vbC5yZW1vdmVIb29rOworCitSZWFjdERlYnVnVG9vbC5hZGRIb29r
KFJlYWN0SW52YWxpZFNldFN0YXRlV2FybmluZ0hvb2spOworUmVhY3REZWJ1Z1Rvb2wuYWRkSG9v
ayhSZWFjdENvbXBvbmVudFRyZWVIb29rKTsKK3ZhciB1cmwgPSBFeGVjdXRpb25FbnZpcm9ubWVu
dC5jYW5Vc2VET00gJiYgd2luZG93LmxvY2F0aW9uLmhyZWYgfHwgJyc7CitpZiAoL1s/Jl1yZWFj
dF9wZXJmXGIvLnRlc3QodXJsKSkgeworICBSZWFjdERlYnVnVG9vbC5iZWdpblByb2ZpbGluZygp
OworfQorCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0RGVidWdUb29sOwpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9y
ZWFjdC1kb20vbGliL1JlYWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3kuanMgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdERlZmF1bHRCYXRjaGluZ1N0
cmF0ZWd5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVlMTQ5ZjA2ZTZhZjRkN2I2Y2U1ODVlMDQyZWIxNmZiYzQ0
YWFlNWQKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMv
cmVhY3QtZG9tL2xpYi9SZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5LmpzCkBAIC0wLDAgKzEs
NjcgQEAKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisK
K3ZhciBfYXNzaWduID0gcmVxdWlyZSgnb2JqZWN0LWFzc2lnbicpOworCit2YXIgUmVhY3RVcGRh
dGVzID0gcmVxdWlyZSgnLi9SZWFjdFVwZGF0ZXMnKTsKK3ZhciBUcmFuc2FjdGlvbiA9IHJlcXVp
cmUoJy4vVHJhbnNhY3Rpb24nKTsKKwordmFyIGVtcHR5RnVuY3Rpb24gPSByZXF1aXJlKCdmYmpz
L2xpYi9lbXB0eUZ1bmN0aW9uJyk7CisKK3ZhciBSRVNFVF9CQVRDSEVEX1VQREFURVMgPSB7Cisg
IGluaXRpYWxpemU6IGVtcHR5RnVuY3Rpb24sCisgIGNsb3NlOiBmdW5jdGlvbiAoKSB7CisgICAg
UmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneS5pc0JhdGNoaW5nVXBkYXRlcyA9IGZhbHNlOwor
ICB9Cit9OworCit2YXIgRkxVU0hfQkFUQ0hFRF9VUERBVEVTID0geworICBpbml0aWFsaXplOiBl
bXB0eUZ1bmN0aW9uLAorICBjbG9zZTogUmVhY3RVcGRhdGVzLmZsdXNoQmF0Y2hlZFVwZGF0ZXMu
YmluZChSZWFjdFVwZGF0ZXMpCit9OworCit2YXIgVFJBTlNBQ1RJT05fV1JBUFBFUlMgPSBbRkxV
U0hfQkFUQ0hFRF9VUERBVEVTLCBSRVNFVF9CQVRDSEVEX1VQREFURVNdOworCitmdW5jdGlvbiBS
ZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5VHJhbnNhY3Rpb24oKSB7CisgIHRoaXMucmVpbml0
aWFsaXplVHJhbnNhY3Rpb24oKTsKK30KKworX2Fzc2lnbihSZWFjdERlZmF1bHRCYXRjaGluZ1N0
cmF0ZWd5VHJhbnNhY3Rpb24ucHJvdG90eXBlLCBUcmFuc2FjdGlvbiwgeworICBnZXRUcmFuc2Fj
dGlvbldyYXBwZXJzOiBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIFRSQU5TQUNUSU9OX1dSQVBQ
RVJTOworICB9Cit9KTsKKwordmFyIHRyYW5zYWN0aW9uID0gbmV3IFJlYWN0RGVmYXVsdEJhdGNo
aW5nU3RyYXRlZ3lUcmFuc2FjdGlvbigpOworCit2YXIgUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJh
dGVneSA9IHsKKyAgaXNCYXRjaGluZ1VwZGF0ZXM6IGZhbHNlLAorCisgIC8qKgorICAgKiBDYWxs
IHRoZSBwcm92aWRlZCBmdW5jdGlvbiBpbiBhIGNvbnRleHQgd2l0aGluIHdoaWNoIGNhbGxzIHRv
IGBzZXRTdGF0ZWAKKyAgICogYW5kIGZyaWVuZHMgYXJlIGJhdGNoZWQgc3VjaCB0aGF0IGNvbXBv
bmVudHMgYXJlbid0IHVwZGF0ZWQgdW5uZWNlc3NhcmlseS4KKyAgICovCisgIGJhdGNoZWRVcGRh
dGVzOiBmdW5jdGlvbiAoY2FsbGJhY2ssIGEsIGIsIGMsIGQsIGUpIHsKKyAgICB2YXIgYWxyZWFk
eUJhdGNoaW5nVXBkYXRlcyA9IFJlYWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3kuaXNCYXRjaGlu
Z1VwZGF0ZXM7CisKKyAgICBSZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5LmlzQmF0Y2hpbmdV
cGRhdGVzID0gdHJ1ZTsKKworICAgIC8vIFRoZSBjb2RlIGlzIHdyaXR0ZW4gdGhpcyB3YXkgdG8g
YXZvaWQgZXh0cmEgYWxsb2NhdGlvbnMKKyAgICBpZiAoYWxyZWFkeUJhdGNoaW5nVXBkYXRlcykg
eworICAgICAgcmV0dXJuIGNhbGxiYWNrKGEsIGIsIGMsIGQsIGUpOworICAgIH0gZWxzZSB7Cisg
ICAgICByZXR1cm4gdHJhbnNhY3Rpb24ucGVyZm9ybShjYWxsYmFjaywgbnVsbCwgYSwgYiwgYywg
ZCwgZSk7CisgICAgfQorICB9Cit9OworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0RGVmYXVsdEJh
dGNoaW5nU3RyYXRlZ3k7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3REZWZhdWx0
SW5qZWN0aW9uLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9s
aWIvUmVhY3REZWZhdWx0SW5qZWN0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJmZWQwZjE1MGFhNTdjZDlk
YTUwMzQ2NzZjZTY1NGM5NDFjMzIyYzkKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9y
ZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdERlZmF1bHRJbmplY3Rpb24uanMK
QEAgLTAsMCArMSw4NSBAQAorLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9v
aywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAq
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4g
QW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ug
c3RyaWN0JzsKKwordmFyIEFSSUFET01Qcm9wZXJ0eUNvbmZpZyA9IHJlcXVpcmUoJy4vQVJJQURP
TVByb3BlcnR5Q29uZmlnJyk7Cit2YXIgQmVmb3JlSW5wdXRFdmVudFBsdWdpbiA9IHJlcXVpcmUo
Jy4vQmVmb3JlSW5wdXRFdmVudFBsdWdpbicpOwordmFyIENoYW5nZUV2ZW50UGx1Z2luID0gcmVx
dWlyZSgnLi9DaGFuZ2VFdmVudFBsdWdpbicpOwordmFyIERlZmF1bHRFdmVudFBsdWdpbk9yZGVy
ID0gcmVxdWlyZSgnLi9EZWZhdWx0RXZlbnRQbHVnaW5PcmRlcicpOwordmFyIEVudGVyTGVhdmVF
dmVudFBsdWdpbiA9IHJlcXVpcmUoJy4vRW50ZXJMZWF2ZUV2ZW50UGx1Z2luJyk7Cit2YXIgSFRN
TERPTVByb3BlcnR5Q29uZmlnID0gcmVxdWlyZSgnLi9IVE1MRE9NUHJvcGVydHlDb25maWcnKTsK
K3ZhciBSZWFjdENvbXBvbmVudEJyb3dzZXJFbnZpcm9ubWVudCA9IHJlcXVpcmUoJy4vUmVhY3RD
b21wb25lbnRCcm93c2VyRW52aXJvbm1lbnQnKTsKK3ZhciBSZWFjdERPTUNvbXBvbmVudCA9IHJl
cXVpcmUoJy4vUmVhY3RET01Db21wb25lbnQnKTsKK3ZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUg
PSByZXF1aXJlKCcuL1JlYWN0RE9NQ29tcG9uZW50VHJlZScpOwordmFyIFJlYWN0RE9NRW1wdHlD
b21wb25lbnQgPSByZXF1aXJlKCcuL1JlYWN0RE9NRW1wdHlDb21wb25lbnQnKTsKK3ZhciBSZWFj
dERPTVRyZWVUcmF2ZXJzYWwgPSByZXF1aXJlKCcuL1JlYWN0RE9NVHJlZVRyYXZlcnNhbCcpOwor
dmFyIFJlYWN0RE9NVGV4dENvbXBvbmVudCA9IHJlcXVpcmUoJy4vUmVhY3RET01UZXh0Q29tcG9u
ZW50Jyk7Cit2YXIgUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneSA9IHJlcXVpcmUoJy4vUmVh
Y3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneScpOwordmFyIFJlYWN0RXZlbnRMaXN0ZW5lciA9IHJl
cXVpcmUoJy4vUmVhY3RFdmVudExpc3RlbmVyJyk7Cit2YXIgUmVhY3RJbmplY3Rpb24gPSByZXF1
aXJlKCcuL1JlYWN0SW5qZWN0aW9uJyk7Cit2YXIgUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbiA9
IHJlcXVpcmUoJy4vUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbicpOwordmFyIFNWR0RPTVByb3Bl
cnR5Q29uZmlnID0gcmVxdWlyZSgnLi9TVkdET01Qcm9wZXJ0eUNvbmZpZycpOwordmFyIFNlbGVj
dEV2ZW50UGx1Z2luID0gcmVxdWlyZSgnLi9TZWxlY3RFdmVudFBsdWdpbicpOwordmFyIFNpbXBs
ZUV2ZW50UGx1Z2luID0gcmVxdWlyZSgnLi9TaW1wbGVFdmVudFBsdWdpbicpOworCit2YXIgYWxy
ZWFkeUluamVjdGVkID0gZmFsc2U7CisKK2Z1bmN0aW9uIGluamVjdCgpIHsKKyAgaWYgKGFscmVh
ZHlJbmplY3RlZCkgeworICAgIC8vIFRPRE86IFRoaXMgaXMgY3VycmVudGx5IHRydWUgYmVjYXVz
ZSB0aGVzZSBpbmplY3Rpb25zIGFyZSBzaGFyZWQgYmV0d2VlbgorICAgIC8vIHRoZSBjbGllbnQg
YW5kIHRoZSBzZXJ2ZXIgcGFja2FnZS4gVGhleSBzaG91bGQgYmUgYnVpbHQgaW5kZXBlbmRlbnRs
eQorICAgIC8vIGFuZCBub3Qgc2hhcmUgYW55IGluamVjdGlvbiBzdGF0ZS4gVGhlbiB0aGlzIHBy
b2JsZW0gd2lsbCBiZSBzb2x2ZWQuCisgICAgcmV0dXJuOworICB9CisgIGFscmVhZHlJbmplY3Rl
ZCA9IHRydWU7CisKKyAgUmVhY3RJbmplY3Rpb24uRXZlbnRFbWl0dGVyLmluamVjdFJlYWN0RXZl
bnRMaXN0ZW5lcihSZWFjdEV2ZW50TGlzdGVuZXIpOworCisgIC8qKgorICAgKiBJbmplY3QgbW9k
dWxlcyBmb3IgcmVzb2x2aW5nIERPTSBoaWVyYXJjaHkgYW5kIHBsdWdpbiBvcmRlcmluZy4KKyAg
ICovCisgIFJlYWN0SW5qZWN0aW9uLkV2ZW50UGx1Z2luSHViLmluamVjdEV2ZW50UGx1Z2luT3Jk
ZXIoRGVmYXVsdEV2ZW50UGx1Z2luT3JkZXIpOworICBSZWFjdEluamVjdGlvbi5FdmVudFBsdWdp
blV0aWxzLmluamVjdENvbXBvbmVudFRyZWUoUmVhY3RET01Db21wb25lbnRUcmVlKTsKKyAgUmVh
Y3RJbmplY3Rpb24uRXZlbnRQbHVnaW5VdGlscy5pbmplY3RUcmVlVHJhdmVyc2FsKFJlYWN0RE9N
VHJlZVRyYXZlcnNhbCk7CisKKyAgLyoqCisgICAqIFNvbWUgaW1wb3J0YW50IGV2ZW50IHBsdWdp
bnMgaW5jbHVkZWQgYnkgZGVmYXVsdCAod2l0aG91dCBoYXZpbmcgdG8gcmVxdWlyZQorICAgKiB0
aGVtKS4KKyAgICovCisgIFJlYWN0SW5qZWN0aW9uLkV2ZW50UGx1Z2luSHViLmluamVjdEV2ZW50
UGx1Z2luc0J5TmFtZSh7CisgICAgU2ltcGxlRXZlbnRQbHVnaW46IFNpbXBsZUV2ZW50UGx1Z2lu
LAorICAgIEVudGVyTGVhdmVFdmVudFBsdWdpbjogRW50ZXJMZWF2ZUV2ZW50UGx1Z2luLAorICAg
IENoYW5nZUV2ZW50UGx1Z2luOiBDaGFuZ2VFdmVudFBsdWdpbiwKKyAgICBTZWxlY3RFdmVudFBs
dWdpbjogU2VsZWN0RXZlbnRQbHVnaW4sCisgICAgQmVmb3JlSW5wdXRFdmVudFBsdWdpbjogQmVm
b3JlSW5wdXRFdmVudFBsdWdpbgorICB9KTsKKworICBSZWFjdEluamVjdGlvbi5Ib3N0Q29tcG9u
ZW50LmluamVjdEdlbmVyaWNDb21wb25lbnRDbGFzcyhSZWFjdERPTUNvbXBvbmVudCk7CisKKyAg
UmVhY3RJbmplY3Rpb24uSG9zdENvbXBvbmVudC5pbmplY3RUZXh0Q29tcG9uZW50Q2xhc3MoUmVh
Y3RET01UZXh0Q29tcG9uZW50KTsKKworICBSZWFjdEluamVjdGlvbi5ET01Qcm9wZXJ0eS5pbmpl
Y3RET01Qcm9wZXJ0eUNvbmZpZyhBUklBRE9NUHJvcGVydHlDb25maWcpOworICBSZWFjdEluamVj
dGlvbi5ET01Qcm9wZXJ0eS5pbmplY3RET01Qcm9wZXJ0eUNvbmZpZyhIVE1MRE9NUHJvcGVydHlD
b25maWcpOworICBSZWFjdEluamVjdGlvbi5ET01Qcm9wZXJ0eS5pbmplY3RET01Qcm9wZXJ0eUNv
bmZpZyhTVkdET01Qcm9wZXJ0eUNvbmZpZyk7CisKKyAgUmVhY3RJbmplY3Rpb24uRW1wdHlDb21w
b25lbnQuaW5qZWN0RW1wdHlDb21wb25lbnRGYWN0b3J5KGZ1bmN0aW9uIChpbnN0YW50aWF0ZSkg
eworICAgIHJldHVybiBuZXcgUmVhY3RET01FbXB0eUNvbXBvbmVudChpbnN0YW50aWF0ZSk7Cisg
IH0pOworCisgIFJlYWN0SW5qZWN0aW9uLlVwZGF0ZXMuaW5qZWN0UmVjb25jaWxlVHJhbnNhY3Rp
b24oUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbik7CisgIFJlYWN0SW5qZWN0aW9uLlVwZGF0ZXMu
aW5qZWN0QmF0Y2hpbmdTdHJhdGVneShSZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5KTsKKwor
ICBSZWFjdEluamVjdGlvbi5Db21wb25lbnQuaW5qZWN0RW52aXJvbm1lbnQoUmVhY3RDb21wb25l
bnRCcm93c2VyRW52aXJvbm1lbnQpOworfQorCittb2R1bGUuZXhwb3J0cyA9IHsKKyAgaW5qZWN0
OiBpbmplY3QKK307ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RFbGVtZW50U3lt
Ym9sLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVh
Y3RFbGVtZW50U3ltYm9sLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMxMzc2NWI5ZDRmZTM0MDNlOWUwNzdkYmQw
Yzc2NjhmOTUyMTQzYTAKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2Rl
X21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdEVsZW1lbnRTeW1ib2wuanMKQEAgLTAsMCArMSwx
OSBAQAorLyoqCisgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICog
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2Vk
IHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25h
bCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMg
ZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogCisgKi8KKworJ3VzZSBzdHJpY3Qn
OworCisvLyBUaGUgU3ltYm9sIHVzZWQgdG8gdGFnIHRoZSBSZWFjdEVsZW1lbnQgdHlwZS4gSWYg
dGhlcmUgaXMgbm8gbmF0aXZlIFN5bWJvbAorLy8gbm9yIHBvbHlmaWxsLCB0aGVuIGEgcGxhaW4g
bnVtYmVyIGlzIHVzZWQgZm9yIHBlcmZvcm1hbmNlLgorCit2YXIgUkVBQ1RfRUxFTUVOVF9UWVBF
ID0gdHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiBTeW1ib2xbJ2ZvciddICYmIFN5bWJv
bFsnZm9yJ10oJ3JlYWN0LmVsZW1lbnQnKSB8fCAweGVhYzc7CisKK21vZHVsZS5leHBvcnRzID0g
UkVBQ1RfRUxFTUVOVF9UWVBFOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0RW1w
dHlDb21wb25lbnQuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9t
L2xpYi9SZWFjdEVtcHR5Q29tcG9uZW50LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZiZWE5NDA5NjU2ZTEwMWRk
NjExOTM4NTY1MWJkZmU1NmMyZGNjOTEKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9y
ZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdEVtcHR5Q29tcG9uZW50LmpzCkBA
IC0wLDAgKzEsMjkgQEAKKy8qKgorICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCwgRmFjZWJvb2ss
IEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBp
cyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFu
IGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRo
ZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0
cmljdCc7CisKK3ZhciBlbXB0eUNvbXBvbmVudEZhY3Rvcnk7CisKK3ZhciBSZWFjdEVtcHR5Q29t
cG9uZW50SW5qZWN0aW9uID0geworICBpbmplY3RFbXB0eUNvbXBvbmVudEZhY3Rvcnk6IGZ1bmN0
aW9uIChmYWN0b3J5KSB7CisgICAgZW1wdHlDb21wb25lbnRGYWN0b3J5ID0gZmFjdG9yeTsKKyAg
fQorfTsKKwordmFyIFJlYWN0RW1wdHlDb21wb25lbnQgPSB7CisgIGNyZWF0ZTogZnVuY3Rpb24g
KGluc3RhbnRpYXRlKSB7CisgICAgcmV0dXJuIGVtcHR5Q29tcG9uZW50RmFjdG9yeShpbnN0YW50
aWF0ZSk7CisgIH0KK307CisKK1JlYWN0RW1wdHlDb21wb25lbnQuaW5qZWN0aW9uID0gUmVhY3RF
bXB0eUNvbXBvbmVudEluamVjdGlvbjsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdEVtcHR5Q29t
cG9uZW50OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0RXJyb3JVdGlscy5qcyBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0RXJyb3JV
dGlscy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44YTViM2Y0NTFlMTE1YmRhOGMxZWE5YWVlYjg5YmQ4YzZhNDQ0
Mzk1Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3Jl
YWN0LWRvbS9saWIvUmVhY3RFcnJvclV0aWxzLmpzCkBAIC0wLDAgKzEsNzYgQEAKKy8qKgorICog
Q29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
ZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9m
IHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNh
bWUgZGlyZWN0b3J5LgorICoKKyAqIAorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIGNhdWdo
dEVycm9yID0gbnVsbDsKKworLyoqCisgKiBDYWxsIGEgZnVuY3Rpb24gd2hpbGUgZ3VhcmRpbmcg
YWdhaW5zdCBlcnJvcnMgdGhhdCBoYXBwZW5zIHdpdGhpbiBpdC4KKyAqCisgKiBAcGFyYW0ge1N0
cmluZ30gbmFtZSBvZiB0aGUgZ3VhcmQgdG8gdXNlIGZvciBsb2dnaW5nIG9yIGRlYnVnZ2luZwor
ICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gaW52b2tlCisgKiBAcGFy
YW0geyp9IGEgRmlyc3QgYXJndW1lbnQKKyAqIEBwYXJhbSB7Kn0gYiBTZWNvbmQgYXJndW1lbnQK
KyAqLworZnVuY3Rpb24gaW52b2tlR3VhcmRlZENhbGxiYWNrKG5hbWUsIGZ1bmMsIGEpIHsKKyAg
dHJ5IHsKKyAgICBmdW5jKGEpOworICB9IGNhdGNoICh4KSB7CisgICAgaWYgKGNhdWdodEVycm9y
ID09PSBudWxsKSB7CisgICAgICBjYXVnaHRFcnJvciA9IHg7CisgICAgfQorICB9Cit9CisKK3Zh
ciBSZWFjdEVycm9yVXRpbHMgPSB7CisgIGludm9rZUd1YXJkZWRDYWxsYmFjazogaW52b2tlR3Vh
cmRlZENhbGxiYWNrLAorCisgIC8qKgorICAgKiBJbnZva2VkIGJ5IFJlYWN0VGVzdFV0aWxzLlNp
bXVsYXRlIHNvIHRoYXQgYW55IGVycm9ycyB0aHJvd24gYnkgdGhlIGV2ZW50CisgICAqIGhhbmRs
ZXIgYXJlIHN1cmUgdG8gYmUgcmV0aHJvd24gYnkgcmV0aHJvd0NhdWdodEVycm9yLgorICAgKi8K
KyAgaW52b2tlR3VhcmRlZENhbGxiYWNrV2l0aENhdGNoOiBpbnZva2VHdWFyZGVkQ2FsbGJhY2ss
CisKKyAgLyoqCisgICAqIER1cmluZyBleGVjdXRpb24gb2YgZ3VhcmRlZCBmdW5jdGlvbnMgd2Ug
d2lsbCBjYXB0dXJlIHRoZSBmaXJzdCBlcnJvciB3aGljaAorICAgKiB3ZSB3aWxsIHJldGhyb3cg
dG8gYmUgaGFuZGxlZCBieSB0aGUgdG9wIGxldmVsIGVycm9yIGhhbmRsZXIuCisgICAqLworICBy
ZXRocm93Q2F1Z2h0RXJyb3I6IGZ1bmN0aW9uICgpIHsKKyAgICBpZiAoY2F1Z2h0RXJyb3IpIHsK
KyAgICAgIHZhciBlcnJvciA9IGNhdWdodEVycm9yOworICAgICAgY2F1Z2h0RXJyb3IgPSBudWxs
OworICAgICAgdGhyb3cgZXJyb3I7CisgICAgfQorICB9Cit9OworCitpZiAocHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgeworICAvKioKKyAgICogVG8gaGVscCBkZXZlbG9w
bWVudCB3ZSBjYW4gZ2V0IGJldHRlciBkZXZ0b29scyBpbnRlZ3JhdGlvbiBieSBzaW11bGF0aW5n
IGEKKyAgICogcmVhbCBicm93c2VyIGV2ZW50LgorICAgKi8KKyAgaWYgKHR5cGVvZiB3aW5kb3cg
IT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiB3aW5kb3cuZGlzcGF0Y2hFdmVudCA9PT0gJ2Z1bmN0
aW9uJyAmJiB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBkb2N1bWVu
dC5jcmVhdGVFdmVudCA9PT0gJ2Z1bmN0aW9uJykgeworICAgIHZhciBmYWtlTm9kZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ3JlYWN0Jyk7CisgICAgUmVhY3RFcnJvclV0aWxzLmludm9rZUd1
YXJkZWRDYWxsYmFjayA9IGZ1bmN0aW9uIChuYW1lLCBmdW5jLCBhKSB7CisgICAgICB2YXIgYm91
bmRGdW5jID0gZnVuYy5iaW5kKG51bGwsIGEpOworICAgICAgdmFyIGV2dFR5cGUgPSAncmVhY3Qt
JyArIG5hbWU7CisgICAgICBmYWtlTm9kZS5hZGRFdmVudExpc3RlbmVyKGV2dFR5cGUsIGJvdW5k
RnVuYywgZmFsc2UpOworICAgICAgdmFyIGV2dCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdFdmVu
dCcpOworICAgICAgLy8gJEZsb3dGaXhNZSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svZmxv
dy9pc3N1ZXMvMjMzNgorICAgICAgZXZ0LmluaXRFdmVudChldnRUeXBlLCBmYWxzZSwgZmFsc2Up
OworICAgICAgZmFrZU5vZGUuZGlzcGF0Y2hFdmVudChldnQpOworICAgICAgZmFrZU5vZGUucmVt
b3ZlRXZlbnRMaXN0ZW5lcihldnRUeXBlLCBib3VuZEZ1bmMsIGZhbHNlKTsKKyAgICB9OworICB9
Cit9CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RFcnJvclV0aWxzOwpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9y
ZWFjdC1kb20vbGliL1JlYWN0RXZlbnRFbWl0dGVyTWl4aW4uanMgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFj
dC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdEV2ZW50RW1pdHRlck1peGluLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmZjOWMwY2Q1Mzk4ZDcwMzFlZDM5ODhjODc1ODA2NTBiYjFlZTQ4OTAKLS0tIC9k
ZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xp
Yi9SZWFjdEV2ZW50RW1pdHRlck1peGluLmpzCkBAIC0wLDAgKzEsMzIgQEAKKy8qKgorICogQ29w
eXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0
eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBFdmVudFBsdWdpbkh1
YiA9IHJlcXVpcmUoJy4vRXZlbnRQbHVnaW5IdWInKTsKKworZnVuY3Rpb24gcnVuRXZlbnRRdWV1
ZUluQmF0Y2goZXZlbnRzKSB7CisgIEV2ZW50UGx1Z2luSHViLmVucXVldWVFdmVudHMoZXZlbnRz
KTsKKyAgRXZlbnRQbHVnaW5IdWIucHJvY2Vzc0V2ZW50UXVldWUoZmFsc2UpOworfQorCit2YXIg
UmVhY3RFdmVudEVtaXR0ZXJNaXhpbiA9IHsKKworICAvKioKKyAgICogU3RyZWFtcyBhIGZpcmVk
IHRvcC1sZXZlbCBldmVudCB0byBgRXZlbnRQbHVnaW5IdWJgIHdoZXJlIHBsdWdpbnMgaGF2ZSB0
aGUKKyAgICogb3Bwb3J0dW5pdHkgdG8gY3JlYXRlIGBSZWFjdEV2ZW50YHMgdG8gYmUgZGlzcGF0
Y2hlZC4KKyAgICovCisgIGhhbmRsZVRvcExldmVsOiBmdW5jdGlvbiAodG9wTGV2ZWxUeXBlLCB0
YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHsKKyAgICB2YXIgZXZl
bnRzID0gRXZlbnRQbHVnaW5IdWIuZXh0cmFjdEV2ZW50cyh0b3BMZXZlbFR5cGUsIHRhcmdldElu
c3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7CisgICAgcnVuRXZlbnRRdWV1ZUlu
QmF0Y2goZXZlbnRzKTsKKyAgfQorfTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdEV2ZW50RW1p
dHRlck1peGluOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0RXZlbnRMaXN0ZW5l
ci5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0
RXZlbnRMaXN0ZW5lci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lODFiMTRkMjZkYmZhODVlNzUwZGViY2Y0MDI0
MDlhYzVmMDhmZWJmCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9t
b2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RFdmVudExpc3RlbmVyLmpzCkBAIC0wLDAgKzEsMTU0
IEBACisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQg
dW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxl
IGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFs
IGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBm
aWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2
YXIgX2Fzc2lnbiA9IHJlcXVpcmUoJ29iamVjdC1hc3NpZ24nKTsKKwordmFyIEV2ZW50TGlzdGVu
ZXIgPSByZXF1aXJlKCdmYmpzL2xpYi9FdmVudExpc3RlbmVyJyk7Cit2YXIgRXhlY3V0aW9uRW52
aXJvbm1lbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9FeGVjdXRpb25FbnZpcm9ubWVudCcpOwordmFy
IFBvb2xlZENsYXNzID0gcmVxdWlyZSgnLi9Qb29sZWRDbGFzcycpOwordmFyIFJlYWN0RE9NQ29t
cG9uZW50VHJlZSA9IHJlcXVpcmUoJy4vUmVhY3RET01Db21wb25lbnRUcmVlJyk7Cit2YXIgUmVh
Y3RVcGRhdGVzID0gcmVxdWlyZSgnLi9SZWFjdFVwZGF0ZXMnKTsKKwordmFyIGdldEV2ZW50VGFy
Z2V0ID0gcmVxdWlyZSgnLi9nZXRFdmVudFRhcmdldCcpOwordmFyIGdldFVuYm91bmRlZFNjcm9s
bFBvc2l0aW9uID0gcmVxdWlyZSgnZmJqcy9saWIvZ2V0VW5ib3VuZGVkU2Nyb2xsUG9zaXRpb24n
KTsKKworLyoqCisgKiBGaW5kIHRoZSBkZWVwZXN0IFJlYWN0IGNvbXBvbmVudCBjb21wbGV0ZWx5
IGNvbnRhaW5pbmcgdGhlIHJvb3Qgb2YgdGhlCisgKiBwYXNzZWQtaW4gaW5zdGFuY2UgKGZvciB1
c2Ugd2hlbiBlbnRpcmUgUmVhY3QgdHJlZXMgYXJlIG5lc3RlZCB3aXRoaW4gZWFjaAorICogb3Ro
ZXIpLiBJZiBSZWFjdCB0cmVlcyBhcmUgbm90IG5lc3RlZCwgcmV0dXJucyBudWxsLgorICovCitm
dW5jdGlvbiBmaW5kUGFyZW50KGluc3QpIHsKKyAgLy8gVE9ETzogSXQgbWF5IGJlIGEgZ29vZCBp
ZGVhIHRvIGNhY2hlIHRoaXMgdG8gcHJldmVudCB1bm5lY2Vzc2FyeSBET00KKyAgLy8gdHJhdmVy
c2FsLCBidXQgY2FjaGluZyBpcyBkaWZmaWN1bHQgdG8gZG8gY29ycmVjdGx5IHdpdGhvdXQgdXNp
bmcgYQorICAvLyBtdXRhdGlvbiBvYnNlcnZlciB0byBsaXN0ZW4gZm9yIGFsbCBET00gY2hhbmdl
cy4KKyAgd2hpbGUgKGluc3QuX2hvc3RQYXJlbnQpIHsKKyAgICBpbnN0ID0gaW5zdC5faG9zdFBh
cmVudDsKKyAgfQorICB2YXIgcm9vdE5vZGUgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9k
ZUZyb21JbnN0YW5jZShpbnN0KTsKKyAgdmFyIGNvbnRhaW5lciA9IHJvb3ROb2RlLnBhcmVudE5v
ZGU7CisgIHJldHVybiBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Q2xvc2VzdEluc3RhbmNlRnJv
bU5vZGUoY29udGFpbmVyKTsKK30KKworLy8gVXNlZCB0byBzdG9yZSBhbmNlc3RvciBoaWVyYXJj
aHkgaW4gdG9wIGxldmVsIGNhbGxiYWNrCitmdW5jdGlvbiBUb3BMZXZlbENhbGxiYWNrQm9va0tl
ZXBpbmcodG9wTGV2ZWxUeXBlLCBuYXRpdmVFdmVudCkgeworICB0aGlzLnRvcExldmVsVHlwZSA9
IHRvcExldmVsVHlwZTsKKyAgdGhpcy5uYXRpdmVFdmVudCA9IG5hdGl2ZUV2ZW50OworICB0aGlz
LmFuY2VzdG9ycyA9IFtdOworfQorX2Fzc2lnbihUb3BMZXZlbENhbGxiYWNrQm9va0tlZXBpbmcu
cHJvdG90eXBlLCB7CisgIGRlc3RydWN0b3I6IGZ1bmN0aW9uICgpIHsKKyAgICB0aGlzLnRvcExl
dmVsVHlwZSA9IG51bGw7CisgICAgdGhpcy5uYXRpdmVFdmVudCA9IG51bGw7CisgICAgdGhpcy5h
bmNlc3RvcnMubGVuZ3RoID0gMDsKKyAgfQorfSk7CitQb29sZWRDbGFzcy5hZGRQb29saW5nVG8o
VG9wTGV2ZWxDYWxsYmFja0Jvb2tLZWVwaW5nLCBQb29sZWRDbGFzcy50d29Bcmd1bWVudFBvb2xl
cik7CisKK2Z1bmN0aW9uIGhhbmRsZVRvcExldmVsSW1wbChib29rS2VlcGluZykgeworICB2YXIg
bmF0aXZlRXZlbnRUYXJnZXQgPSBnZXRFdmVudFRhcmdldChib29rS2VlcGluZy5uYXRpdmVFdmVu
dCk7CisgIHZhciB0YXJnZXRJbnN0ID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldENsb3Nlc3RJ
bnN0YW5jZUZyb21Ob2RlKG5hdGl2ZUV2ZW50VGFyZ2V0KTsKKworICAvLyBMb29wIHRocm91Z2gg
dGhlIGhpZXJhcmNoeSwgaW4gY2FzZSB0aGVyZSdzIGFueSBuZXN0ZWQgY29tcG9uZW50cy4KKyAg
Ly8gSXQncyBpbXBvcnRhbnQgdGhhdCB3ZSBidWlsZCB0aGUgYXJyYXkgb2YgYW5jZXN0b3JzIGJl
Zm9yZSBjYWxsaW5nIGFueQorICAvLyBldmVudCBoYW5kbGVycywgYmVjYXVzZSBldmVudCBoYW5k
bGVycyBjYW4gbW9kaWZ5IHRoZSBET00sIGxlYWRpbmcgdG8KKyAgLy8gaW5jb25zaXN0ZW5jaWVz
IHdpdGggUmVhY3RNb3VudCdzIG5vZGUgY2FjaGUuIFNlZSAjMTEwNS4KKyAgdmFyIGFuY2VzdG9y
ID0gdGFyZ2V0SW5zdDsKKyAgZG8geworICAgIGJvb2tLZWVwaW5nLmFuY2VzdG9ycy5wdXNoKGFu
Y2VzdG9yKTsKKyAgICBhbmNlc3RvciA9IGFuY2VzdG9yICYmIGZpbmRQYXJlbnQoYW5jZXN0b3Ip
OworICB9IHdoaWxlIChhbmNlc3Rvcik7CisKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBib29rS2Vl
cGluZy5hbmNlc3RvcnMubGVuZ3RoOyBpKyspIHsKKyAgICB0YXJnZXRJbnN0ID0gYm9va0tlZXBp
bmcuYW5jZXN0b3JzW2ldOworICAgIFJlYWN0RXZlbnRMaXN0ZW5lci5faGFuZGxlVG9wTGV2ZWwo
Ym9va0tlZXBpbmcudG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBib29rS2VlcGluZy5uYXRpdmVF
dmVudCwgZ2V0RXZlbnRUYXJnZXQoYm9va0tlZXBpbmcubmF0aXZlRXZlbnQpKTsKKyAgfQorfQor
CitmdW5jdGlvbiBzY3JvbGxWYWx1ZU1vbml0b3IoY2IpIHsKKyAgdmFyIHNjcm9sbFBvc2l0aW9u
ID0gZ2V0VW5ib3VuZGVkU2Nyb2xsUG9zaXRpb24od2luZG93KTsKKyAgY2Ioc2Nyb2xsUG9zaXRp
b24pOworfQorCit2YXIgUmVhY3RFdmVudExpc3RlbmVyID0geworICBfZW5hYmxlZDogdHJ1ZSwK
KyAgX2hhbmRsZVRvcExldmVsOiBudWxsLAorCisgIFdJTkRPV19IQU5ETEU6IEV4ZWN1dGlvbkVu
dmlyb25tZW50LmNhblVzZURPTSA/IHdpbmRvdyA6IG51bGwsCisKKyAgc2V0SGFuZGxlVG9wTGV2
ZWw6IGZ1bmN0aW9uIChoYW5kbGVUb3BMZXZlbCkgeworICAgIFJlYWN0RXZlbnRMaXN0ZW5lci5f
aGFuZGxlVG9wTGV2ZWwgPSBoYW5kbGVUb3BMZXZlbDsKKyAgfSwKKworICBzZXRFbmFibGVkOiBm
dW5jdGlvbiAoZW5hYmxlZCkgeworICAgIFJlYWN0RXZlbnRMaXN0ZW5lci5fZW5hYmxlZCA9ICEh
ZW5hYmxlZDsKKyAgfSwKKworICBpc0VuYWJsZWQ6IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4g
UmVhY3RFdmVudExpc3RlbmVyLl9lbmFibGVkOworICB9LAorCisgIC8qKgorICAgKiBUcmFwcyB0
b3AtbGV2ZWwgZXZlbnRzIGJ5IHVzaW5nIGV2ZW50IGJ1YmJsaW5nLgorICAgKgorICAgKiBAcGFy
YW0ge3N0cmluZ30gdG9wTGV2ZWxUeXBlIFJlY29yZCBmcm9tIGBFdmVudENvbnN0YW50c2AuCisg
ICAqIEBwYXJhbSB7c3RyaW5nfSBoYW5kbGVyQmFzZU5hbWUgRXZlbnQgbmFtZSAoZS5nLiAiY2xp
Y2siKS4KKyAgICogQHBhcmFtIHtvYmplY3R9IGVsZW1lbnQgRWxlbWVudCBvbiB3aGljaCB0byBh
dHRhY2ggbGlzdGVuZXIuCisgICAqIEByZXR1cm4gez9vYmplY3R9IEFuIG9iamVjdCB3aXRoIGEg
cmVtb3ZlIGZ1bmN0aW9uIHdoaWNoIHdpbGwgZm9yY2VmdWxseQorICAgKiAgICAgICAgICAgICAg
ICAgIHJlbW92ZSB0aGUgbGlzdGVuZXIuCisgICAqIEBpbnRlcm5hbAorICAgKi8KKyAgdHJhcEJ1
YmJsZWRFdmVudDogZnVuY3Rpb24gKHRvcExldmVsVHlwZSwgaGFuZGxlckJhc2VOYW1lLCBlbGVt
ZW50KSB7CisgICAgaWYgKCFlbGVtZW50KSB7CisgICAgICByZXR1cm4gbnVsbDsKKyAgICB9Cisg
ICAgcmV0dXJuIEV2ZW50TGlzdGVuZXIubGlzdGVuKGVsZW1lbnQsIGhhbmRsZXJCYXNlTmFtZSwg
UmVhY3RFdmVudExpc3RlbmVyLmRpc3BhdGNoRXZlbnQuYmluZChudWxsLCB0b3BMZXZlbFR5cGUp
KTsKKyAgfSwKKworICAvKioKKyAgICogVHJhcHMgYSB0b3AtbGV2ZWwgZXZlbnQgYnkgdXNpbmcg
ZXZlbnQgY2FwdHVyaW5nLgorICAgKgorICAgKiBAcGFyYW0ge3N0cmluZ30gdG9wTGV2ZWxUeXBl
IFJlY29yZCBmcm9tIGBFdmVudENvbnN0YW50c2AuCisgICAqIEBwYXJhbSB7c3RyaW5nfSBoYW5k
bGVyQmFzZU5hbWUgRXZlbnQgbmFtZSAoZS5nLiAiY2xpY2siKS4KKyAgICogQHBhcmFtIHtvYmpl
Y3R9IGVsZW1lbnQgRWxlbWVudCBvbiB3aGljaCB0byBhdHRhY2ggbGlzdGVuZXIuCisgICAqIEBy
ZXR1cm4gez9vYmplY3R9IEFuIG9iamVjdCB3aXRoIGEgcmVtb3ZlIGZ1bmN0aW9uIHdoaWNoIHdp
bGwgZm9yY2VmdWxseQorICAgKiAgICAgICAgICAgICAgICAgIHJlbW92ZSB0aGUgbGlzdGVuZXIu
CisgICAqIEBpbnRlcm5hbAorICAgKi8KKyAgdHJhcENhcHR1cmVkRXZlbnQ6IGZ1bmN0aW9uICh0
b3BMZXZlbFR5cGUsIGhhbmRsZXJCYXNlTmFtZSwgZWxlbWVudCkgeworICAgIGlmICghZWxlbWVu
dCkgeworICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorICAgIHJldHVybiBFdmVudExpc3RlbmVy
LmNhcHR1cmUoZWxlbWVudCwgaGFuZGxlckJhc2VOYW1lLCBSZWFjdEV2ZW50TGlzdGVuZXIuZGlz
cGF0Y2hFdmVudC5iaW5kKG51bGwsIHRvcExldmVsVHlwZSkpOworICB9LAorCisgIG1vbml0b3JT
Y3JvbGxWYWx1ZTogZnVuY3Rpb24gKHJlZnJlc2gpIHsKKyAgICB2YXIgY2FsbGJhY2sgPSBzY3Jv
bGxWYWx1ZU1vbml0b3IuYmluZChudWxsLCByZWZyZXNoKTsKKyAgICBFdmVudExpc3RlbmVyLmxp
c3Rlbih3aW5kb3csICdzY3JvbGwnLCBjYWxsYmFjayk7CisgIH0sCisKKyAgZGlzcGF0Y2hFdmVu
dDogZnVuY3Rpb24gKHRvcExldmVsVHlwZSwgbmF0aXZlRXZlbnQpIHsKKyAgICBpZiAoIVJlYWN0
RXZlbnRMaXN0ZW5lci5fZW5hYmxlZCkgeworICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHZh
ciBib29rS2VlcGluZyA9IFRvcExldmVsQ2FsbGJhY2tCb29rS2VlcGluZy5nZXRQb29sZWQodG9w
TGV2ZWxUeXBlLCBuYXRpdmVFdmVudCk7CisgICAgdHJ5IHsKKyAgICAgIC8vIEV2ZW50IHF1ZXVl
IGJlaW5nIHByb2Nlc3NlZCBpbiB0aGUgc2FtZSBjeWNsZSBhbGxvd3MKKyAgICAgIC8vIGBwcmV2
ZW50RGVmYXVsdGAuCisgICAgICBSZWFjdFVwZGF0ZXMuYmF0Y2hlZFVwZGF0ZXMoaGFuZGxlVG9w
TGV2ZWxJbXBsLCBib29rS2VlcGluZyk7CisgICAgfSBmaW5hbGx5IHsKKyAgICAgIFRvcExldmVs
Q2FsbGJhY2tCb29rS2VlcGluZy5yZWxlYXNlKGJvb2tLZWVwaW5nKTsKKyAgICB9CisgIH0KK307
CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RFdmVudExpc3RlbmVyOwpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9y
ZWFjdC1kb20vbGliL1JlYWN0RmVhdHVyZUZsYWdzLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9k
ZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RGZWF0dXJlRmxhZ3MuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MjdiOGNhZjUyNGFhZjkzNDYzYWE0ZWQwNWEwYThiZTg1MDBhZmQ0MAotLS0gL2Rldi9udWxsCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0RmVh
dHVyZUZsYWdzLmpzCkBAIC0wLDAgKzEsMjEgQEAKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJl
c2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhp
cyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91
bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMg
c291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2Fu
IGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoK
KyAqIAorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIFJlYWN0RmVhdHVyZUZsYWdzID0gewor
ICAvLyBXaGVuIHRydWUsIGNhbGwgY29uc29sZS50aW1lKCkgYmVmb3JlIGFuZCAudGltZUVuZCgp
IGFmdGVyIGVhY2ggdG9wLWxldmVsCisgIC8vIHJlbmRlciAoYm90aCBpbml0aWFsIHJlbmRlcnMg
YW5kIHVwZGF0ZXMpLiBVc2VmdWwgd2hlbiBsb29raW5nIGF0IHByb2QtbW9kZQorICAvLyB0aW1l
bGluZSBwcm9maWxlcyBpbiBDaHJvbWUsIGZvciBleGFtcGxlLgorICBsb2dUb3BMZXZlbFJlbmRl
cnM6IGZhbHNlCit9OworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0RmVhdHVyZUZsYWdzOwpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25v
ZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0RmliZXIuanMgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFj
dC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdEZpYmVyLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA3
NzM3ZWNjNDNhYjZmNWI1NjBjZGNhMTE4NTc0Y2EwMWRiY2ZiODEKLS0tIC9kZXYvbnVsbAorKysg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdEZpYmVy
LmpzCkBAIC0wLDAgKzEsMTkwIEBACisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZh
Y2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNl
IGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRo
ZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0
cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiAKKyAq
LworCisndXNlIHN0cmljdCc7CisKK3ZhciBSZWFjdFR5cGVPZldvcmsgPSByZXF1aXJlKCcuL1Jl
YWN0VHlwZU9mV29yaycpOwordmFyIEluZGV0ZXJtaW5hdGVDb21wb25lbnQgPSBSZWFjdFR5cGVP
ZldvcmsuSW5kZXRlcm1pbmF0ZUNvbXBvbmVudCwKKyAgICBDbGFzc0NvbXBvbmVudCA9IFJlYWN0
VHlwZU9mV29yay5DbGFzc0NvbXBvbmVudCwKKyAgICBIb3N0Q29udGFpbmVyID0gUmVhY3RUeXBl
T2ZXb3JrLkhvc3RDb250YWluZXIsCisgICAgSG9zdENvbXBvbmVudCA9IFJlYWN0VHlwZU9mV29y
ay5Ib3N0Q29tcG9uZW50LAorICAgIENvcm91dGluZUNvbXBvbmVudCA9IFJlYWN0VHlwZU9mV29y
ay5Db3JvdXRpbmVDb21wb25lbnQsCisgICAgWWllbGRDb21wb25lbnQgPSBSZWFjdFR5cGVPZldv
cmsuWWllbGRDb21wb25lbnQ7CisKK3ZhciBfcmVxdWlyZSA9IHJlcXVpcmUoJy4vUmVhY3RQcmlv
cml0eUxldmVsJyksCisgICAgTm9Xb3JrID0gX3JlcXVpcmUuTm9Xb3JrOworCisvLyBBbiBJbnN0
YW5jZSBpcyBzaGFyZWQgYmV0d2VlbiBhbGwgdmVyc2lvbnMgb2YgYSBjb21wb25lbnQuIFdlIGNh
biBlYXNpbHkKKy8vIGJyZWFrIHRoaXMgb3V0IGludG8gYSBzZXBhcmF0ZSBvYmplY3QgdG8gYXZv
aWQgY29weWluZyBzbyBtdWNoIHRvIHRoZQorLy8gYWx0ZXJuYXRlIHZlcnNpb25zIG9mIHRoZSB0
cmVlLiBXZSBwdXQgdGhpcyBvbiBhIHNpbmdsZSBvYmplY3QgZm9yIG5vdyB0bworLy8gbWluaW1p
emUgdGhlIG51bWJlciBvZiBvYmplY3RzIGNyZWF0ZWQgZHVyaW5nIHRoZSBpbml0aWFsIHJlbmRl
ci4KKworCisvLyBBIEZpYmVyIGlzIHdvcmsgb24gYSBDb21wb25lbnQgdGhhdCBuZWVkcyB0byBi
ZSBkb25lIG9yIHdhcyBkb25lLiBUaGVyZSBjYW4KKy8vIGJlIG1vcmUgdGhhbiBvbmUgcGVyIGNv
bXBvbmVudC4KKworCisvLyBUaGlzIGlzIGEgY29uc3RydWN0b3Igb2YgYSBQT0pPIGluc3RlYWQg
b2YgYSBjb25zdHJ1Y3RvciBmdW5jdGlvbiBmb3IgYSBmZXcKKy8vIHJlYXNvbnM6CisvLyAxKSBO
b2JvZHkgc2hvdWxkIGFkZCBhbnkgaW5zdGFuY2UgbWV0aG9kcyBvbiB0aGlzLiBJbnN0YW5jZSBt
ZXRob2RzIGNhbiBiZQorLy8gICAgbW9yZSBkaWZmaWN1bHQgdG8gcHJlZGljdCB3aGVuIHRoZXkg
Z2V0IG9wdGltaXplZCBhbmQgdGhleSBhcmUgYWxtb3N0CisvLyAgICBuZXZlciBpbmxpbmVkIHBy
b3Blcmx5IGluIHN0YXRpYyBjb21waWxlcnMuCisvLyAyKSBOb2JvZHkgc2hvdWxkIHJlbHkgb24g
YGluc3RhbmNlb2YgRmliZXJgIGZvciB0eXBlIHRlc3RpbmcuIFdlIHNob3VsZAorLy8gICAgYWx3
YXlzIGtub3cgd2hlbiBpdCBpcyBhIGZpYmVyLgorLy8gMykgV2UgY2FuIGVhc2lseSBnbyBmcm9t
IGEgY3JlYXRlRmliZXIgY2FsbCB0byBjYWxsaW5nIGEgY29uc3RydWN0b3IgaWYgdGhhdAorLy8g
ICAgaXMgZmFzdGVyLiBUaGUgb3Bwb3NpdGUgaXMgbm90IHRydWUuCisvLyA0KSBXZSBtaWdodCB3
YW50IHRvIGV4cGVyaW1lbnQgd2l0aCB1c2luZyBudW1lcmljIGtleXMgc2luY2UgdGhleSBhcmUg
ZWFzaWVyCisvLyAgICB0byBvcHRpbWl6ZSBpbiBhIG5vbi1KSVQgZW52aXJvbm1lbnQuCisvLyA1
KSBJdCBzaG91bGQgYmUgZWFzeSB0byBwb3J0IHRoaXMgdG8gYSBDIHN0cnVjdCBhbmQga2VlcCBh
IEMgaW1wbGVtZW50YXRpb24KKy8vICAgIGNvbXBhdGlibGUuCit2YXIgY3JlYXRlRmliZXIgPSBm
dW5jdGlvbiAodGFnLCBrZXkpIHsKKyAgcmV0dXJuIHsKKworICAgIC8vIEluc3RhbmNlCisKKyAg
ICB0YWc6IHRhZywKKworICAgIGtleToga2V5LAorCisgICAgdHlwZTogbnVsbCwKKworICAgIHN0
YXRlTm9kZTogbnVsbCwKKworICAgIC8vIEZpYmVyCisKKyAgICAncmV0dXJuJzogbnVsbCwKKwor
ICAgIGNoaWxkOiBudWxsLAorICAgIHNpYmxpbmc6IG51bGwsCisKKyAgICByZWY6IG51bGwsCisK
KyAgICBwZW5kaW5nUHJvcHM6IG51bGwsCisgICAgbWVtb2l6ZWRQcm9wczogbnVsbCwKKyAgICB1
cGRhdGVRdWV1ZTogbnVsbCwKKyAgICBtZW1vaXplZFN0YXRlOiBudWxsLAorICAgIGNhbGxiYWNr
TGlzdDogbnVsbCwKKyAgICBvdXRwdXQ6IG51bGwsCisKKyAgICBuZXh0RWZmZWN0OiBudWxsLAor
ICAgIGZpcnN0RWZmZWN0OiBudWxsLAorICAgIGxhc3RFZmZlY3Q6IG51bGwsCisKKyAgICBwZW5k
aW5nV29ya1ByaW9yaXR5OiBOb1dvcmssCisgICAgcHJvZ3Jlc3NlZFByaW9yaXR5OiBOb1dvcmss
CisgICAgcHJvZ3Jlc3NlZENoaWxkOiBudWxsLAorCisgICAgYWx0ZXJuYXRlOiBudWxsCisKKyAg
fTsKK307CisKK2Z1bmN0aW9uIHNob3VsZENvbnN0cnVjdChDb21wb25lbnQpIHsKKyAgcmV0dXJu
ICEhKENvbXBvbmVudC5wcm90b3R5cGUgJiYgQ29tcG9uZW50LnByb3RvdHlwZS5pc1JlYWN0Q29t
cG9uZW50KTsKK30KKworLy8gVGhpcyBpcyB1c2VkIHRvIGNyZWF0ZSBhbiBhbHRlcm5hdGUgZmli
ZXIgdG8gZG8gd29yayBvbi4KKy8vIFRPRE86IFJlbmFtZSB0byBjcmVhdGVXb3JrSW5Qcm9ncmVz
c0ZpYmVyIG9yIHNvbWV0aGluZyBsaWtlIHRoYXQuCitleHBvcnRzLmNsb25lRmliZXIgPSBmdW5j
dGlvbiAoZmliZXIsIHByaW9yaXR5TGV2ZWwpIHsKKyAgLy8gV2UgY2xvbmUgdG8gZ2V0IGEgd29y
ayBpbiBwcm9ncmVzcy4gVGhhdCBtZWFucyB0aGF0IHRoaXMgZmliZXIgaXMgdGhlCisgIC8vIGN1
cnJlbnQuIFRvIG1ha2UgaXQgc2FmZSB0byByZXVzZSB0aGF0IGZpYmVyIGxhdGVyIG9uIGFzIHdv
cmsgaW4gcHJvZ3Jlc3MKKyAgLy8gd2UgbmVlZCB0byByZXNldCBpdHMgd29yayBpbiBwcm9ncmVz
cyBmbGFnIG5vdy4gV2UgZG9uJ3QgaGF2ZSBhbgorICAvLyBvcHBvcnR1bml0eSB0byBkbyB0aGlz
IGVhcmxpZXIgc2luY2Ugd2UgZG9uJ3QgdHJhdmVyc2UgdGhlIHRyZWUgd2hlbgorICAvLyB0aGUg
d29yayBpbiBwcm9ncmVzcyB0cmVlIGJlY29tZXMgdGhlIGN1cnJlbnQgdHJlZS4KKyAgLy8gZmli
ZXIucHJvZ3Jlc3NlZFByaW9yaXR5ID0gTm9Xb3JrOworICAvLyBmaWJlci5wcm9ncmVzc2VkQ2hp
bGQgPSBudWxsOworCisgIC8vIFdlIHVzZSBhIGRvdWJsZSBidWZmZXJpbmcgcG9vbGluZyB0ZWNo
bmlxdWUgYmVjYXVzZSB3ZSBrbm93IHRoYXQgd2UnbGwgb25seQorICAvLyBldmVyIG5lZWQgYXQg
bW9zdCB0d28gdmVyc2lvbnMgb2YgYSB0cmVlLiBXZSBwb29sIHRoZSAib3RoZXIiIHVudXNlZCBu
b2RlCisgIC8vIHRoYXQgd2UncmUgZnJlZSB0byByZXVzZS4gVGhpcyBpcyBsYXppbHkgY3JlYXRl
ZCB0byBhdm9pZCBhbGxvY2F0aW5nIGV4dHJhCisgIC8vIG9iamVjdHMgZm9yIHRoaW5ncyB0aGF0
IGFyZSBuZXZlciB1cGRhdGVkLiBJdCBhbHNvIGFsbG93IHVzIHRvIHJlY2xhaW0gdGhlCisgIC8v
IGV4dHJhIG1lbW9yeSBpZiBuZWVkZWQuCisgIHZhciBhbHQgPSBmaWJlci5hbHRlcm5hdGU7Cisg
IGlmIChhbHQpIHsKKyAgICAvLyBXaGVuZXZlciB3ZSBjbG9uZSwgd2UgZG8gc28gdG8gZ2V0IGEg
bmV3IHdvcmsgaW4gcHJvZ3Jlc3MuCisgICAgLy8gVGhpcyBlbnN1cmVzIHRoYXQgd2UndmUgcmVz
ZXQgdGhlc2UgaW4gdGhlIG5ldyB0cmVlLgorICAgIGFsdC5uZXh0RWZmZWN0ID0gbnVsbDsKKyAg
ICBhbHQuZmlyc3RFZmZlY3QgPSBudWxsOworICAgIGFsdC5sYXN0RWZmZWN0ID0gbnVsbDsKKyAg
fSBlbHNlIHsKKyAgICAvLyBUaGlzIHNob3VsZCBub3QgaGF2ZSBhbiBhbHRlcm5hdGUgYWxyZWFk
eQorICAgIGFsdCA9IGNyZWF0ZUZpYmVyKGZpYmVyLnRhZywgZmliZXIua2V5KTsKKyAgICBhbHQu
dHlwZSA9IGZpYmVyLnR5cGU7CisKKyAgICBhbHQucHJvZ3Jlc3NlZENoaWxkID0gZmliZXIucHJv
Z3Jlc3NlZENoaWxkOworICAgIGFsdC5wcm9ncmVzc2VkUHJpb3JpdHkgPSBmaWJlci5wcm9ncmVz
c2VkUHJpb3JpdHk7CisKKyAgICBhbHQuYWx0ZXJuYXRlID0gZmliZXI7CisgICAgZmliZXIuYWx0
ZXJuYXRlID0gYWx0OworICB9CisKKyAgYWx0LnN0YXRlTm9kZSA9IGZpYmVyLnN0YXRlTm9kZTsK
KyAgYWx0LmNoaWxkID0gZmliZXIuY2hpbGQ7CisgIGFsdC5zaWJsaW5nID0gZmliZXIuc2libGlu
ZzsgLy8gVGhpcyBzaG91bGQgYWx3YXlzIGJlIG92ZXJyaWRkZW4uIFRPRE86IG51bGwKKyAgYWx0
LnJlZiA9IGZpYmVyLnJlZjsKKyAgLy8gcGVuZGluZ1Byb3BzIGlzIGhlcmUgZm9yIHN5bW1ldHJ5
IGJ1dCBpcyB1bm5lY2Vzc2FyeSBpbiBwcmFjdGljZSBmb3Igbm93LgorICAvLyBUT0RPOiBQYXNz
IGluIHRoZSBuZXcgcGVuZGluZ1Byb3BzIGFzIGFuIGFyZ3VtZW50IG1heWJlPworICBhbHQucGVu
ZGluZ1Byb3BzID0gZmliZXIucGVuZGluZ1Byb3BzOworICBhbHQudXBkYXRlUXVldWUgPSBmaWJl
ci51cGRhdGVRdWV1ZTsKKyAgYWx0LmNhbGxiYWNrTGlzdCA9IGZpYmVyLmNhbGxiYWNrTGlzdDsK
KyAgYWx0LnBlbmRpbmdXb3JrUHJpb3JpdHkgPSBwcmlvcml0eUxldmVsOworCisgIGFsdC5tZW1v
aXplZFByb3BzID0gZmliZXIubWVtb2l6ZWRQcm9wczsKKyAgYWx0Lm91dHB1dCA9IGZpYmVyLm91
dHB1dDsKKworICByZXR1cm4gYWx0OworfTsKKworZXhwb3J0cy5jcmVhdGVIb3N0Q29udGFpbmVy
RmliZXIgPSBmdW5jdGlvbiAoKSB7CisgIHZhciBmaWJlciA9IGNyZWF0ZUZpYmVyKEhvc3RDb250
YWluZXIsIG51bGwpOworICByZXR1cm4gZmliZXI7Cit9OworCitleHBvcnRzLmNyZWF0ZUZpYmVy
RnJvbUVsZW1lbnQgPSBmdW5jdGlvbiAoZWxlbWVudCwgcHJpb3JpdHlMZXZlbCkgeworICAvLyAk
Rmxvd0ZpeE1lOiBSZWFjdEVsZW1lbnQua2V5IGlzIGN1cnJlbnRseSBkZWZpbmVkIGFzID9zdHJp
bmcgYnV0IHNob3VsZCBiZSBkZWZpbmVkIGFzIG51bGwgfCBzdHJpbmcgaW4gRmxvdy4KKyAgdmFy
IGZpYmVyID0gY3JlYXRlRmliZXJGcm9tRWxlbWVudFR5cGUoZWxlbWVudC50eXBlLCBlbGVtZW50
LmtleSk7CisgIGZpYmVyLnBlbmRpbmdQcm9wcyA9IGVsZW1lbnQucHJvcHM7CisgIGZpYmVyLnBl
bmRpbmdXb3JrUHJpb3JpdHkgPSBwcmlvcml0eUxldmVsOworICByZXR1cm4gZmliZXI7Cit9Owor
CitmdW5jdGlvbiBjcmVhdGVGaWJlckZyb21FbGVtZW50VHlwZSh0eXBlLCBrZXkpIHsKKyAgdmFy
IGZpYmVyID0gdm9pZCAwOworICBpZiAodHlwZW9mIHR5cGUgPT09ICdmdW5jdGlvbicpIHsKKyAg
ICBmaWJlciA9IHNob3VsZENvbnN0cnVjdCh0eXBlKSA/IGNyZWF0ZUZpYmVyKENsYXNzQ29tcG9u
ZW50LCBrZXkpIDogY3JlYXRlRmliZXIoSW5kZXRlcm1pbmF0ZUNvbXBvbmVudCwga2V5KTsKKyAg
ICBmaWJlci50eXBlID0gdHlwZTsKKyAgfSBlbHNlIGlmICh0eXBlb2YgdHlwZSA9PT0gJ3N0cmlu
ZycpIHsKKyAgICBmaWJlciA9IGNyZWF0ZUZpYmVyKEhvc3RDb21wb25lbnQsIGtleSk7CisgICAg
ZmliZXIudHlwZSA9IHR5cGU7CisgIH0gZWxzZSBpZiAodHlwZW9mIHR5cGUgPT09ICdvYmplY3Qn
ICYmIHR5cGUgIT09IG51bGwpIHsKKyAgICAvLyBDdXJyZW50bHkgYXNzdW1lZCB0byBiZSBhIGNv
bnRpbnVhdGlvbiBhbmQgdGhlcmVmb3JlIGlzIGEgZmliZXIgYWxyZWFkeS4KKyAgICBmaWJlciA9
IHR5cGU7CisgIH0gZWxzZSB7CisgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIGNvbXBvbmVu
dCB0eXBlOiAnICsgdHlwZW9mIHR5cGUpOworICB9CisgIHJldHVybiBmaWJlcjsKK30KKworZXhw
b3J0cy5jcmVhdGVGaWJlckZyb21FbGVtZW50VHlwZSA9IGNyZWF0ZUZpYmVyRnJvbUVsZW1lbnRU
eXBlOworCitleHBvcnRzLmNyZWF0ZUZpYmVyRnJvbUNvcm91dGluZSA9IGZ1bmN0aW9uIChjb3Jv
dXRpbmUsIHByaW9yaXR5TGV2ZWwpIHsKKyAgdmFyIGZpYmVyID0gY3JlYXRlRmliZXIoQ29yb3V0
aW5lQ29tcG9uZW50LCBjb3JvdXRpbmUua2V5KTsKKyAgZmliZXIudHlwZSA9IGNvcm91dGluZS5o
YW5kbGVyOworICBmaWJlci5wZW5kaW5nUHJvcHMgPSBjb3JvdXRpbmU7CisgIGZpYmVyLnBlbmRp
bmdXb3JrUHJpb3JpdHkgPSBwcmlvcml0eUxldmVsOworICByZXR1cm4gZmliZXI7Cit9OworCitl
eHBvcnRzLmNyZWF0ZUZpYmVyRnJvbVlpZWxkID0gZnVuY3Rpb24gKHlpZWxkTm9kZSwgcHJpb3Jp
dHlMZXZlbCkgeworICB2YXIgZmliZXIgPSBjcmVhdGVGaWJlcihZaWVsZENvbXBvbmVudCwgeWll
bGROb2RlLmtleSk7CisgIGZpYmVyLnBlbmRpbmdQcm9wcyA9IHt9OworICByZXR1cm4gZmliZXI7
Cit9OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0RmliZXJCZWdpbldvcmsuanMg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdEZpYmVy
QmVnaW5Xb3JrLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk1OWExZDMzMGNkNTFhMmNkOWJjODNmZTI2ZjZjNzY0
MmM3MWRiZjIKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVs
ZXMvcmVhY3QtZG9tL2xpYi9SZWFjdEZpYmVyQmVnaW5Xb3JrLmpzCkBAIC0wLDAgKzEsMzgwIEBA
CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5k
ZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdy
YW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxl
IGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiAKKyAqLworCisndXNlIHN0cmljdCc7CisK
K3ZhciBfcmVxdWlyZSA9IHJlcXVpcmUoJy4vUmVhY3RDaGlsZEZpYmVyJyksCisgICAgcmVjb25j
aWxlQ2hpbGRGaWJlcnMgPSBfcmVxdWlyZS5yZWNvbmNpbGVDaGlsZEZpYmVycywKKyAgICByZWNv
bmNpbGVDaGlsZEZpYmVyc0luUGxhY2UgPSBfcmVxdWlyZS5yZWNvbmNpbGVDaGlsZEZpYmVyc0lu
UGxhY2UsCisgICAgY2xvbmVDaGlsZEZpYmVycyA9IF9yZXF1aXJlLmNsb25lQ2hpbGRGaWJlcnM7
CisKK3ZhciBfcmVxdWlyZTIgPSByZXF1aXJlKCcuL1JlYWN0UHJpb3JpdHlMZXZlbCcpLAorICAg
IExvd1ByaW9yaXR5ID0gX3JlcXVpcmUyLkxvd1ByaW9yaXR5OworCit2YXIgUmVhY3RUeXBlT2ZX
b3JrID0gcmVxdWlyZSgnLi9SZWFjdFR5cGVPZldvcmsnKTsKK3ZhciBJbmRldGVybWluYXRlQ29t
cG9uZW50ID0gUmVhY3RUeXBlT2ZXb3JrLkluZGV0ZXJtaW5hdGVDb21wb25lbnQsCisgICAgRnVu
Y3Rpb25hbENvbXBvbmVudCA9IFJlYWN0VHlwZU9mV29yay5GdW5jdGlvbmFsQ29tcG9uZW50LAor
ICAgIENsYXNzQ29tcG9uZW50ID0gUmVhY3RUeXBlT2ZXb3JrLkNsYXNzQ29tcG9uZW50LAorICAg
IEhvc3RDb250YWluZXIgPSBSZWFjdFR5cGVPZldvcmsuSG9zdENvbnRhaW5lciwKKyAgICBIb3N0
Q29tcG9uZW50ID0gUmVhY3RUeXBlT2ZXb3JrLkhvc3RDb21wb25lbnQsCisgICAgQ29yb3V0aW5l
Q29tcG9uZW50ID0gUmVhY3RUeXBlT2ZXb3JrLkNvcm91dGluZUNvbXBvbmVudCwKKyAgICBDb3Jv
dXRpbmVIYW5kbGVyUGhhc2UgPSBSZWFjdFR5cGVPZldvcmsuQ29yb3V0aW5lSGFuZGxlclBoYXNl
LAorICAgIFlpZWxkQ29tcG9uZW50ID0gUmVhY3RUeXBlT2ZXb3JrLllpZWxkQ29tcG9uZW50Owor
Cit2YXIgX3JlcXVpcmUzID0gcmVxdWlyZSgnLi9SZWFjdFByaW9yaXR5TGV2ZWwnKSwKKyAgICBO
b1dvcmsgPSBfcmVxdWlyZTMuTm9Xb3JrLAorICAgIE9mZnNjcmVlblByaW9yaXR5ID0gX3JlcXVp
cmUzLk9mZnNjcmVlblByaW9yaXR5OworCit2YXIgX3JlcXVpcmU0ID0gcmVxdWlyZSgnLi9SZWFj
dEZpYmVyVXBkYXRlUXVldWUnKSwKKyAgICBjcmVhdGVVcGRhdGVRdWV1ZSA9IF9yZXF1aXJlNC5j
cmVhdGVVcGRhdGVRdWV1ZSwKKyAgICBhZGRUb1F1ZXVlID0gX3JlcXVpcmU0LmFkZFRvUXVldWUs
CisgICAgYWRkQ2FsbGJhY2tUb1F1ZXVlID0gX3JlcXVpcmU0LmFkZENhbGxiYWNrVG9RdWV1ZSwK
KyAgICBtZXJnZVVwZGF0ZVF1ZXVlID0gX3JlcXVpcmU0Lm1lcmdlVXBkYXRlUXVldWU7CisKK3Zh
ciBSZWFjdEluc3RhbmNlTWFwID0gcmVxdWlyZSgnLi9SZWFjdEluc3RhbmNlTWFwJyk7CisKK21v
ZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGNvbmZpZywgZ2V0U2NoZWR1bGVyKSB7CisKKyAgZnVu
Y3Rpb24gbWFya0NoaWxkQXNQcm9ncmVzc2VkKGN1cnJlbnQsIHdvcmtJblByb2dyZXNzLCBwcmlv
cml0eUxldmVsKSB7CisgICAgLy8gV2Ugbm93IGhhdmUgY2xvbmVzLiBMZXQncyBzdG9yZSB0aGVt
IGFzIHRoZSBjdXJyZW50bHkgcHJvZ3Jlc3NlZCB3b3JrLgorICAgIHdvcmtJblByb2dyZXNzLnBy
b2dyZXNzZWRDaGlsZCA9IHdvcmtJblByb2dyZXNzLmNoaWxkOworICAgIHdvcmtJblByb2dyZXNz
LnByb2dyZXNzZWRQcmlvcml0eSA9IHByaW9yaXR5TGV2ZWw7CisgICAgaWYgKGN1cnJlbnQpIHsK
KyAgICAgIC8vIFdlIGFsc28gc3RvcmUgaXQgb24gdGhlIGN1cnJlbnQuIFdoZW4gdGhlIGFsdGVy
bmF0ZSBzd2FwcyBpbiB3ZSBjYW4KKyAgICAgIC8vIGNvbnRpbnVlIGZyb20gdGhpcyBwb2ludC4K
KyAgICAgIGN1cnJlbnQucHJvZ3Jlc3NlZENoaWxkID0gd29ya0luUHJvZ3Jlc3MucHJvZ3Jlc3Nl
ZENoaWxkOworICAgICAgY3VycmVudC5wcm9ncmVzc2VkUHJpb3JpdHkgPSB3b3JrSW5Qcm9ncmVz
cy5wcm9ncmVzc2VkUHJpb3JpdHk7CisgICAgfQorICB9CisKKyAgZnVuY3Rpb24gcmVjb25jaWxl
Q2hpbGRyZW4oY3VycmVudCwgd29ya0luUHJvZ3Jlc3MsIG5leHRDaGlsZHJlbikgeworICAgIHZh
ciBwcmlvcml0eUxldmVsID0gd29ya0luUHJvZ3Jlc3MucGVuZGluZ1dvcmtQcmlvcml0eTsKKyAg
ICByZWNvbmNpbGVDaGlsZHJlbkF0UHJpb3JpdHkoY3VycmVudCwgd29ya0luUHJvZ3Jlc3MsIG5l
eHRDaGlsZHJlbiwgcHJpb3JpdHlMZXZlbCk7CisgIH0KKworICBmdW5jdGlvbiByZWNvbmNpbGVD
aGlsZHJlbkF0UHJpb3JpdHkoY3VycmVudCwgd29ya0luUHJvZ3Jlc3MsIG5leHRDaGlsZHJlbiwg
cHJpb3JpdHlMZXZlbCkgeworICAgIC8vIEF0IHRoaXMgcG9pbnQgYW55IG1lbW9pemF0aW9uIGlz
IG5vIGxvbmdlciB2YWxpZCBzaW5jZSB3ZSdsbCBoYXZlIGNoYW5nZWQKKyAgICAvLyB0aGUgY2hp
bGRyZW4uCisgICAgd29ya0luUHJvZ3Jlc3MubWVtb2l6ZWRQcm9wcyA9IG51bGw7CisgICAgaWYg
KGN1cnJlbnQgJiYgY3VycmVudC5jaGlsZCA9PT0gd29ya0luUHJvZ3Jlc3MuY2hpbGQpIHsKKyAg
ICAgIC8vIElmIHRoZSBjdXJyZW50IGNoaWxkIGlzIHRoZSBzYW1lIGFzIHRoZSB3b3JrIGluIHBy
b2dyZXNzLCBpdCBtZWFucyB0aGF0CisgICAgICAvLyB3ZSBoYXZlbid0IHlldCBzdGFydGVkIGFu
eSB3b3JrIG9uIHRoZXNlIGNoaWxkcmVuLiBUaGVyZWZvcmUsIHdlIHVzZQorICAgICAgLy8gdGhl
IGNsb25lIGFsZ29yaXRobSB0byBjcmVhdGUgYSBjb3B5IG9mIGFsbCB0aGUgY3VycmVudCBjaGls
ZHJlbi4KKyAgICAgIHdvcmtJblByb2dyZXNzLmNoaWxkID0gcmVjb25jaWxlQ2hpbGRGaWJlcnMo
d29ya0luUHJvZ3Jlc3MsIHdvcmtJblByb2dyZXNzLmNoaWxkLCBuZXh0Q2hpbGRyZW4sIHByaW9y
aXR5TGV2ZWwpOworICAgIH0gZWxzZSB7CisgICAgICAvLyBJZiwgb24gdGhlIG90aGVyIGhhbmQs
IHdlIGRvbid0IGhhdmUgYSBjdXJyZW50IGZpYmVyIG9yIGlmIGl0IGlzCisgICAgICAvLyBhbHJl
YWR5IHVzaW5nIGEgY2xvbmUsIHRoYXQgbWVhbnMgd2UndmUgYWxyZWFkeSBiZWd1biBzb21lIHdv
cmsgb24gdGhpcworICAgICAgLy8gdHJlZSBhbmQgd2UgY2FuIGNvbnRpbnVlIHdoZXJlIHdlIGxl
ZnQgb2ZmIGJ5IHJlY29uY2lsaW5nIGFnYWluc3QgdGhlCisgICAgICAvLyBleGlzdGluZyBjaGls
ZHJlbi4KKyAgICAgIHdvcmtJblByb2dyZXNzLmNoaWxkID0gcmVjb25jaWxlQ2hpbGRGaWJlcnNJ
blBsYWNlKHdvcmtJblByb2dyZXNzLCB3b3JrSW5Qcm9ncmVzcy5jaGlsZCwgbmV4dENoaWxkcmVu
LCBwcmlvcml0eUxldmVsKTsKKyAgICB9CisgICAgbWFya0NoaWxkQXNQcm9ncmVzc2VkKGN1cnJl
bnQsIHdvcmtJblByb2dyZXNzLCBwcmlvcml0eUxldmVsKTsKKyAgfQorCisgIGZ1bmN0aW9uIHVw
ZGF0ZUZ1bmN0aW9uYWxDb21wb25lbnQoY3VycmVudCwgd29ya0luUHJvZ3Jlc3MpIHsKKyAgICB2
YXIgZm4gPSB3b3JrSW5Qcm9ncmVzcy50eXBlOworICAgIHZhciBwcm9wcyA9IHdvcmtJblByb2dy
ZXNzLnBlbmRpbmdQcm9wczsKKworICAgIC8vIFRPRE86IERpc2FibGUgdGhpcyBiZWZvcmUgcmVs
ZWFzZSwgc2luY2UgaXQgaXMgbm90IHBhcnQgb2YgdGhlIHB1YmxpYyBBUEkKKyAgICAvLyBJIHVz
ZSB0aGlzIGZvciB0ZXN0aW5nIHRvIGNvbXBhcmUgdGhlIHJlbGF0aXZlIG92ZXJoZWFkIG9mIGNs
YXNzZXMuCisgICAgaWYgKHR5cGVvZiBmbi5zaG91bGRDb21wb25lbnRVcGRhdGUgPT09ICdmdW5j
dGlvbicpIHsKKyAgICAgIGlmICh3b3JrSW5Qcm9ncmVzcy5tZW1vaXplZFByb3BzICE9PSBudWxs
KSB7CisgICAgICAgIGlmICghZm4uc2hvdWxkQ29tcG9uZW50VXBkYXRlKHdvcmtJblByb2dyZXNz
Lm1lbW9pemVkUHJvcHMsIHByb3BzKSkgeworICAgICAgICAgIHJldHVybiBiYWlsb3V0T25BbHJl
YWR5RmluaXNoZWRXb3JrKGN1cnJlbnQsIHdvcmtJblByb2dyZXNzKTsKKyAgICAgICAgfQorICAg
ICAgfQorICAgIH0KKworICAgIHZhciBuZXh0Q2hpbGRyZW4gPSBmbihwcm9wcyk7CisgICAgcmVj
b25jaWxlQ2hpbGRyZW4oY3VycmVudCwgd29ya0luUHJvZ3Jlc3MsIG5leHRDaGlsZHJlbik7Cisg
ICAgcmV0dXJuIHdvcmtJblByb2dyZXNzLmNoaWxkOworICB9CisKKyAgZnVuY3Rpb24gc2NoZWR1
bGVVcGRhdGUoZmliZXIsIHVwZGF0ZVF1ZXVlLCBwcmlvcml0eUxldmVsKSB7CisgICAgdmFyIF9n
ZXRTY2hlZHVsZXIgPSBnZXRTY2hlZHVsZXIoKSwKKyAgICAgICAgc2NoZWR1bGVEZWZlcnJlZFdv
cmsgPSBfZ2V0U2NoZWR1bGVyLnNjaGVkdWxlRGVmZXJyZWRXb3JrOworCisgICAgZmliZXIudXBk
YXRlUXVldWUgPSB1cGRhdGVRdWV1ZTsKKyAgICAvLyBTY2hlZHVsZSB1cGRhdGUgb24gdGhlIGFs
dGVybmF0ZSBhcyB3ZWxsLCBzaW5jZSB3ZSBkb24ndCBrbm93IHdoaWNoIHRyZWUKKyAgICAvLyBp
cyBjdXJyZW50LgorICAgIGlmIChmaWJlci5hbHRlcm5hdGUpIHsKKyAgICAgIGZpYmVyLmFsdGVy
bmF0ZS51cGRhdGVRdWV1ZSA9IHVwZGF0ZVF1ZXVlOworICAgIH0KKyAgICB3aGlsZSAodHJ1ZSkg
eworICAgICAgaWYgKGZpYmVyLnBlbmRpbmdXb3JrUHJpb3JpdHkgPT09IE5vV29yayB8fCBmaWJl
ci5wZW5kaW5nV29ya1ByaW9yaXR5ID49IHByaW9yaXR5TGV2ZWwpIHsKKyAgICAgICAgZmliZXIu
cGVuZGluZ1dvcmtQcmlvcml0eSA9IHByaW9yaXR5TGV2ZWw7CisgICAgICB9CisgICAgICBpZiAo
ZmliZXIuYWx0ZXJuYXRlKSB7CisgICAgICAgIGlmIChmaWJlci5hbHRlcm5hdGUucGVuZGluZ1dv
cmtQcmlvcml0eSA9PT0gTm9Xb3JrIHx8IGZpYmVyLmFsdGVybmF0ZS5wZW5kaW5nV29ya1ByaW9y
aXR5ID49IHByaW9yaXR5TGV2ZWwpIHsKKyAgICAgICAgICBmaWJlci5hbHRlcm5hdGUucGVuZGlu
Z1dvcmtQcmlvcml0eSA9IHByaW9yaXR5TGV2ZWw7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAg
IC8vIER1Y2sgdHlwZSByb290CisgICAgICBpZiAoZmliZXIuc3RhdGVOb2RlICYmIGZpYmVyLnN0
YXRlTm9kZS5jb250YWluZXJJbmZvKSB7CisgICAgICAgIHZhciByb290ID0gZmliZXIuc3RhdGVO
b2RlOworICAgICAgICBzY2hlZHVsZURlZmVycmVkV29yayhyb290LCBwcmlvcml0eUxldmVsKTsK
KyAgICAgICAgcmV0dXJuOworICAgICAgfQorICAgICAgaWYgKCFmaWJlclsncmV0dXJuJ10pIHsK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyByb290IScpOworICAgICAgfQorICAgICAgZmli
ZXIgPSBmaWJlclsncmV0dXJuJ107CisgICAgfQorICB9CisKKyAgLy8gQ2xhc3MgY29tcG9uZW50
IHN0YXRlIHVwZGF0ZXIKKyAgdmFyIHVwZGF0ZXIgPSB7CisgICAgZW5xdWV1ZVNldFN0YXRlOiBm
dW5jdGlvbiAoaW5zdGFuY2UsIHBhcnRpYWxTdGF0ZSkgeworICAgICAgdmFyIGZpYmVyID0gUmVh
Y3RJbnN0YW5jZU1hcC5nZXQoaW5zdGFuY2UpOworICAgICAgdmFyIHVwZGF0ZVF1ZXVlID0gZmli
ZXIudXBkYXRlUXVldWUgPyBhZGRUb1F1ZXVlKGZpYmVyLnVwZGF0ZVF1ZXVlLCBwYXJ0aWFsU3Rh
dGUpIDogY3JlYXRlVXBkYXRlUXVldWUocGFydGlhbFN0YXRlKTsKKyAgICAgIHNjaGVkdWxlVXBk
YXRlKGZpYmVyLCB1cGRhdGVRdWV1ZSwgTG93UHJpb3JpdHkpOworICAgIH0sCisgICAgZW5xdWV1
ZVJlcGxhY2VTdGF0ZTogZnVuY3Rpb24gKGluc3RhbmNlLCBzdGF0ZSkgeworICAgICAgdmFyIGZp
YmVyID0gUmVhY3RJbnN0YW5jZU1hcC5nZXQoaW5zdGFuY2UpOworICAgICAgdmFyIHVwZGF0ZVF1
ZXVlID0gY3JlYXRlVXBkYXRlUXVldWUoc3RhdGUpOworICAgICAgdXBkYXRlUXVldWUuaXNSZXBs
YWNlID0gdHJ1ZTsKKyAgICAgIHNjaGVkdWxlVXBkYXRlKGZpYmVyLCB1cGRhdGVRdWV1ZSwgTG93
UHJpb3JpdHkpOworICAgIH0sCisgICAgZW5xdWV1ZUZvcmNlVXBkYXRlOiBmdW5jdGlvbiAoaW5z
dGFuY2UpIHsKKyAgICAgIHZhciBmaWJlciA9IFJlYWN0SW5zdGFuY2VNYXAuZ2V0KGluc3RhbmNl
KTsKKyAgICAgIHZhciB1cGRhdGVRdWV1ZSA9IGZpYmVyLnVwZGF0ZVF1ZXVlIHx8IGNyZWF0ZVVw
ZGF0ZVF1ZXVlKG51bGwpOworICAgICAgdXBkYXRlUXVldWUuaXNGb3JjZWQgPSB0cnVlOworICAg
ICAgc2NoZWR1bGVVcGRhdGUoZmliZXIsIHVwZGF0ZVF1ZXVlLCBMb3dQcmlvcml0eSk7CisgICAg
fSwKKyAgICBlbnF1ZXVlQ2FsbGJhY2s6IGZ1bmN0aW9uIChpbnN0YW5jZSwgY2FsbGJhY2spIHsK
KyAgICAgIHZhciBmaWJlciA9IFJlYWN0SW5zdGFuY2VNYXAuZ2V0KGluc3RhbmNlKTsKKyAgICAg
IHZhciB1cGRhdGVRdWV1ZSA9IGZpYmVyLnVwZGF0ZVF1ZXVlID8gZmliZXIudXBkYXRlUXVldWUg
OiBjcmVhdGVVcGRhdGVRdWV1ZShudWxsKTsKKyAgICAgIGFkZENhbGxiYWNrVG9RdWV1ZSh1cGRh
dGVRdWV1ZSwgY2FsbGJhY2spOworICAgICAgZmliZXIudXBkYXRlUXVldWUgPSB1cGRhdGVRdWV1
ZTsKKyAgICAgIGlmIChmaWJlci5hbHRlcm5hdGUpIHsKKyAgICAgICAgZmliZXIuYWx0ZXJuYXRl
LnVwZGF0ZVF1ZXVlID0gdXBkYXRlUXVldWU7CisgICAgICB9CisgICAgfQorICB9OworCisgIGZ1
bmN0aW9uIHVwZGF0ZUNsYXNzQ29tcG9uZW50KGN1cnJlbnQsIHdvcmtJblByb2dyZXNzKSB7Cisg
ICAgLy8gQSBjbGFzcyBjb21wb25lbnQgdXBkYXRlIGlzIHRoZSByZXN1bHQgb2YgZWl0aGVyIG5l
dyBwcm9wcyBvciBuZXcgc3RhdGUuCisgICAgLy8gQWNjb3VudCBmb3IgdGhlIHBvc3NpYmx5IG9m
IG1pc3NpbmcgcGVuZGluZyBwcm9wcyBieSBmYWxsaW5nIGJhY2sgdG8gdGhlCisgICAgLy8gbWVt
b2l6ZWQgcHJvcHMuCisgICAgdmFyIHByb3BzID0gd29ya0luUHJvZ3Jlc3MucGVuZGluZ1Byb3Bz
OworICAgIGlmICghcHJvcHMgJiYgY3VycmVudCkgeworICAgICAgcHJvcHMgPSBjdXJyZW50Lm1l
bW9pemVkUHJvcHM7CisgICAgfQorICAgIC8vIENvbXB1dGUgdGhlIHN0YXRlIHVzaW5nIHRoZSBt
ZW1vaXplZCBzdGF0ZSBhbmQgdGhlIHVwZGF0ZSBxdWV1ZS4KKyAgICB2YXIgdXBkYXRlUXVldWUg
PSB3b3JrSW5Qcm9ncmVzcy51cGRhdGVRdWV1ZTsKKyAgICB2YXIgcHJldmlvdXNTdGF0ZSA9IGN1
cnJlbnQgPyBjdXJyZW50Lm1lbW9pemVkU3RhdGUgOiBudWxsOworICAgIHZhciBzdGF0ZSA9IHVw
ZGF0ZVF1ZXVlID8gbWVyZ2VVcGRhdGVRdWV1ZSh1cGRhdGVRdWV1ZSwgcHJldmlvdXNTdGF0ZSwg
cHJvcHMpIDogcHJldmlvdXNTdGF0ZTsKKworICAgIHZhciBpbnN0YW5jZSA9IHdvcmtJblByb2dy
ZXNzLnN0YXRlTm9kZTsKKyAgICBpZiAoIWluc3RhbmNlKSB7CisgICAgICB2YXIgY3RvciA9IHdv
cmtJblByb2dyZXNzLnR5cGU7CisgICAgICB3b3JrSW5Qcm9ncmVzcy5zdGF0ZU5vZGUgPSBpbnN0
YW5jZSA9IG5ldyBjdG9yKHByb3BzKTsKKyAgICAgIHN0YXRlID0gaW5zdGFuY2Uuc3RhdGUgfHwg
bnVsbDsKKyAgICAgIC8vIFRoZSBpbml0aWFsIHN0YXRlIG11c3QgYmUgYWRkZWQgdG8gdGhlIHVw
ZGF0ZSBxdWV1ZSBpbiBjYXNlCisgICAgICAvLyBzZXRTdGF0ZSBpcyBjYWxsZWQgYmVmb3JlIHRo
ZSBpbml0aWFsIHJlbmRlci4KKyAgICAgIGlmIChzdGF0ZSAhPT0gbnVsbCkgeworICAgICAgICB3
b3JrSW5Qcm9ncmVzcy51cGRhdGVRdWV1ZSA9IGNyZWF0ZVVwZGF0ZVF1ZXVlKHN0YXRlKTsKKyAg
ICAgIH0KKyAgICAgIC8vIFRoZSBpbnN0YW5jZSBuZWVkcyBhY2Nlc3MgdG8gdGhlIGZpYmVyIHNv
IHRoYXQgaXQgY2FuIHNjaGVkdWxlIHVwZGF0ZXMKKyAgICAgIFJlYWN0SW5zdGFuY2VNYXAuc2V0
KGluc3RhbmNlLCB3b3JrSW5Qcm9ncmVzcyk7CisgICAgICBpbnN0YW5jZS51cGRhdGVyID0gdXBk
YXRlcjsKKyAgICB9IGVsc2UgaWYgKHR5cGVvZiBpbnN0YW5jZS5zaG91bGRDb21wb25lbnRVcGRh
dGUgPT09ICdmdW5jdGlvbicgJiYgISh1cGRhdGVRdWV1ZSAmJiB1cGRhdGVRdWV1ZS5pc0ZvcmNl
ZCkpIHsKKyAgICAgIGlmICh3b3JrSW5Qcm9ncmVzcy5tZW1vaXplZFByb3BzICE9PSBudWxsKSB7
CisgICAgICAgIC8vIFJlc2V0IHRoZSBwcm9wcywgaW4gY2FzZSB0aGlzIGlzIGEgcGluZy1wb25n
IGNhc2UgcmF0aGVyIHRoYW4gYQorICAgICAgICAvLyBjb21wbGV0ZWQgdXBkYXRlIGNhc2UuIEZv
ciB0aGUgY29tcGxldGVkIHVwZGF0ZSBjYXNlLCB0aGUgaW5zdGFuY2UKKyAgICAgICAgLy8gcHJv
cHMgd2lsbCBhbHJlYWR5IGJlIHRoZSBtZW1vaXplZFByb3BzLgorICAgICAgICBpbnN0YW5jZS5w
cm9wcyA9IHdvcmtJblByb2dyZXNzLm1lbW9pemVkUHJvcHM7CisgICAgICAgIGluc3RhbmNlLnN0
YXRlID0gd29ya0luUHJvZ3Jlc3MubWVtb2l6ZWRTdGF0ZTsKKyAgICAgICAgaWYgKCFpbnN0YW5j
ZS5zaG91bGRDb21wb25lbnRVcGRhdGUocHJvcHMsIHN0YXRlKSkgeworICAgICAgICAgIHJldHVy
biBiYWlsb3V0T25BbHJlYWR5RmluaXNoZWRXb3JrKGN1cnJlbnQsIHdvcmtJblByb2dyZXNzKTsK
KyAgICAgICAgfQorICAgICAgfQorICAgIH0KKworICAgIGluc3RhbmNlLnByb3BzID0gcHJvcHM7
CisgICAgaW5zdGFuY2Uuc3RhdGUgPSBzdGF0ZTsKKyAgICB2YXIgbmV4dENoaWxkcmVuID0gaW5z
dGFuY2UucmVuZGVyKCk7CisgICAgcmVjb25jaWxlQ2hpbGRyZW4oY3VycmVudCwgd29ya0luUHJv
Z3Jlc3MsIG5leHRDaGlsZHJlbik7CisKKyAgICByZXR1cm4gd29ya0luUHJvZ3Jlc3MuY2hpbGQ7
CisgIH0KKworICBmdW5jdGlvbiB1cGRhdGVIb3N0Q29tcG9uZW50KGN1cnJlbnQsIHdvcmtJblBy
b2dyZXNzKSB7CisgICAgdmFyIG5leHRDaGlsZHJlbiA9IHdvcmtJblByb2dyZXNzLnBlbmRpbmdQ
cm9wcy5jaGlsZHJlbjsKKyAgICBpZiAod29ya0luUHJvZ3Jlc3MucGVuZGluZ1Byb3BzLmhpZGRl
biAmJiB3b3JrSW5Qcm9ncmVzcy5wZW5kaW5nV29ya1ByaW9yaXR5ICE9PSBPZmZzY3JlZW5Qcmlv
cml0eSkgeworICAgICAgLy8gSWYgdGhpcyBob3N0IGNvbXBvbmVudCBpcyBoaWRkZW4sIHdlIGNh
biBiYWlsIG91dCBvbiB0aGUgY2hpbGRyZW4uCisgICAgICAvLyBXZSdsbCByZXJlbmRlciB0aGUg
Y2hpbGRyZW4gbGF0ZXIgYXQgdGhlIGxvd2VyIHByaW9yaXR5LgorCisgICAgICAvLyBJdCBpcyB1
bmZvcnR1bmF0ZSB0aGF0IHdlIGhhdmUgdG8gZG8gdGhlIHJlY29uY2lsaWF0aW9uIG9mIHRoZXNl
CisgICAgICAvLyBjaGlsZHJlbiBhbHJlYWR5IHNpbmNlIHRoYXQgd2lsbCBhZGQgdGhlbSB0byB0
aGUgdHJlZSBldmVuIHRob3VnaAorICAgICAgLy8gdGhleSBhcmUgbm90IGFjdHVhbGx5IGRvbmUg
eWV0LiBJZiB0aGlzIGlzIGEgbGFyZ2Ugc2V0IGl0IGlzIGFsc28KKyAgICAgIC8vIGNvbmZ1c2lu
ZyB0aGF0IHRoaXMgdGFrZXMgdGltZSB0byBkbyByaWdodCBub3cgaW5zdGVhZCBvZiBsYXRlci4K
KworICAgICAgaWYgKHdvcmtJblByb2dyZXNzLnByb2dyZXNzZWRQcmlvcml0eSA9PT0gT2Zmc2Ny
ZWVuUHJpb3JpdHkpIHsKKyAgICAgICAgLy8gSWYgd2UgYWxyZWFkeSBtYWRlIHNvbWUgcHJvZ3Jl
c3Mgb24gdGhlIG9mZnNjcmVlbiBwcmlvcml0eSBiZWZvcmUsCisgICAgICAgIC8vIHRoZW4gd2Ug
c2hvdWxkIGNvbnRpbnVlIGZyb20gd2hlcmUgd2UgbGVmdCBvZmYuCisgICAgICAgIHdvcmtJblBy
b2dyZXNzLmNoaWxkID0gd29ya0luUHJvZ3Jlc3MucHJvZ3Jlc3NlZENoaWxkOworICAgICAgfQor
CisgICAgICAvLyBSZWNvbmNpbGUgdGhlIGNoaWxkcmVuIGFuZCBzdGFzaCB0aGVtIGZvciBsYXRl
ciB3b3JrLgorICAgICAgcmVjb25jaWxlQ2hpbGRyZW5BdFByaW9yaXR5KGN1cnJlbnQsIHdvcmtJ
blByb2dyZXNzLCBuZXh0Q2hpbGRyZW4sIE9mZnNjcmVlblByaW9yaXR5KTsKKyAgICAgIHdvcmtJ
blByb2dyZXNzLmNoaWxkID0gY3VycmVudCA/IGN1cnJlbnQuY2hpbGQgOiBudWxsOworICAgICAg
Ly8gQWJvcnQgYW5kIGRvbid0IHByb2Nlc3MgY2hpbGRyZW4geWV0LgorICAgICAgcmV0dXJuIG51
bGw7CisgICAgfSBlbHNlIHsKKyAgICAgIHJlY29uY2lsZUNoaWxkcmVuKGN1cnJlbnQsIHdvcmtJ
blByb2dyZXNzLCBuZXh0Q2hpbGRyZW4pOworICAgICAgcmV0dXJuIHdvcmtJblByb2dyZXNzLmNo
aWxkOworICAgIH0KKyAgfQorCisgIGZ1bmN0aW9uIG1vdW50SW5kZXRlcm1pbmF0ZUNvbXBvbmVu
dChjdXJyZW50LCB3b3JrSW5Qcm9ncmVzcykgeworICAgIHZhciBmbiA9IHdvcmtJblByb2dyZXNz
LnR5cGU7CisgICAgdmFyIHByb3BzID0gd29ya0luUHJvZ3Jlc3MucGVuZGluZ1Byb3BzOworICAg
IHZhciB2YWx1ZSA9IGZuKHByb3BzKTsKKyAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0
JyAmJiB2YWx1ZSAmJiB0eXBlb2YgdmFsdWUucmVuZGVyID09PSAnZnVuY3Rpb24nKSB7CisgICAg
ICAvLyBQcm9jZWVkIHVuZGVyIHRoZSBhc3N1bXB0aW9uIHRoYXQgdGhpcyBpcyBhIGNsYXNzIGlu
c3RhbmNlCisgICAgICB3b3JrSW5Qcm9ncmVzcy50YWcgPSBDbGFzc0NvbXBvbmVudDsKKyAgICAg
IGlmIChjdXJyZW50KSB7CisgICAgICAgIGN1cnJlbnQudGFnID0gQ2xhc3NDb21wb25lbnQ7Cisg
ICAgICB9CisgICAgICB2YWx1ZSA9IHZhbHVlLnJlbmRlcigpOworICAgIH0gZWxzZSB7CisgICAg
ICAvLyBQcm9jZWVkIHVuZGVyIHRoZSBhc3N1bXB0aW9uIHRoYXQgdGhpcyBpcyBhIGZ1bmN0aW9u
YWwgY29tcG9uZW50CisgICAgICB3b3JrSW5Qcm9ncmVzcy50YWcgPSBGdW5jdGlvbmFsQ29tcG9u
ZW50OworICAgICAgaWYgKGN1cnJlbnQpIHsKKyAgICAgICAgY3VycmVudC50YWcgPSBGdW5jdGlv
bmFsQ29tcG9uZW50OworICAgICAgfQorICAgIH0KKyAgICByZWNvbmNpbGVDaGlsZHJlbihjdXJy
ZW50LCB3b3JrSW5Qcm9ncmVzcywgdmFsdWUpOworICAgIHJldHVybiB3b3JrSW5Qcm9ncmVzcy5j
aGlsZDsKKyAgfQorCisgIGZ1bmN0aW9uIHVwZGF0ZUNvcm91dGluZUNvbXBvbmVudChjdXJyZW50
LCB3b3JrSW5Qcm9ncmVzcykgeworICAgIHZhciBjb3JvdXRpbmUgPSB3b3JrSW5Qcm9ncmVzcy5w
ZW5kaW5nUHJvcHM7CisgICAgaWYgKCFjb3JvdXRpbmUpIHsKKyAgICAgIHRocm93IG5ldyBFcnJv
cignU2hvdWxkIGJlIHJlc29sdmVkIGJ5IG5vdycpOworICAgIH0KKyAgICByZWNvbmNpbGVDaGls
ZHJlbihjdXJyZW50LCB3b3JrSW5Qcm9ncmVzcywgY29yb3V0aW5lLmNoaWxkcmVuKTsKKyAgfQor
CisgIC8qCisgIGZ1bmN0aW9uIHJldXNlQ2hpbGRyZW5FZmZlY3RzKHJldHVybkZpYmVyIDogRmli
ZXIsIGZpcnN0Q2hpbGQgOiBGaWJlcikgeworICAgIGxldCBjaGlsZCA9IGZpcnN0Q2hpbGQ7Cisg
ICAgZG8geworICAgICAgLy8gRW5zdXJlIHRoYXQgdGhlIGZpcnN0IGFuZCBsYXN0IGVmZmVjdCBv
ZiB0aGUgcGFyZW50IGNvcnJlc3BvbmRzCisgICAgICAvLyB0byB0aGUgY2hpbGRyZW4ncyBmaXJz
dCBhbmQgbGFzdCBlZmZlY3QuCisgICAgICBpZiAoIXJldHVybkZpYmVyLmZpcnN0RWZmZWN0KSB7
CisgICAgICAgIHJldHVybkZpYmVyLmZpcnN0RWZmZWN0ID0gY2hpbGQuZmlyc3RFZmZlY3Q7Cisg
ICAgICB9CisgICAgICBpZiAoY2hpbGQubGFzdEVmZmVjdCkgeworICAgICAgICBpZiAocmV0dXJu
RmliZXIubGFzdEVmZmVjdCkgeworICAgICAgICAgIHJldHVybkZpYmVyLmxhc3RFZmZlY3QubmV4
dEVmZmVjdCA9IGNoaWxkLmZpcnN0RWZmZWN0OworICAgICAgICB9CisgICAgICAgIHJldHVybkZp
YmVyLmxhc3RFZmZlY3QgPSBjaGlsZC5sYXN0RWZmZWN0OworICAgICAgfQorICAgIH0gd2hpbGUg
KGNoaWxkID0gY2hpbGQuc2libGluZyk7CisgIH0KKyAgKi8KKworICBmdW5jdGlvbiBiYWlsb3V0
T25BbHJlYWR5RmluaXNoZWRXb3JrKGN1cnJlbnQsIHdvcmtJblByb2dyZXNzKSB7CisgICAgdmFy
IHByaW9yaXR5TGV2ZWwgPSB3b3JrSW5Qcm9ncmVzcy5wZW5kaW5nV29ya1ByaW9yaXR5OworCisg
ICAgLy8gVE9ETzogV2Ugc2hvdWxkIGlkZWFsbHkgYmUgYWJsZSB0byBiYWlsIG91dCBlYXJseSBp
ZiB0aGUgY2hpbGRyZW4gaGF2ZSBubworICAgIC8vIG1vcmUgd29yayB0byBkby4gSG93ZXZlciwg
c2luY2Ugd2UgZG9uJ3QgaGF2ZSBhIHNlcGFyYXRpb24gb2YgdGhpcworICAgIC8vIEZpYmVyJ3Mg
cHJpb3JpdHkgYW5kIGl0cyBjaGlsZHJlbiB5ZXQgLSB3ZSBkb24ndCBrbm93IHdpdGhvdXQgZG9p
bmcgbG90cworICAgIC8vIG9mIHRoZSBzYW1lIHdvcmsgd2UgZG8gYW55d2F5LiBPbmNlIHdlIGhh
dmUgdGhhdCBzZXBhcmF0aW9uIHdlIGNhbiBqdXN0CisgICAgLy8gYmFpbCBvdXQgaGVyZSBpZiB0
aGUgY2hpbGRyZW4gaGFzIG5vIG1vcmUgd29yayBhdCB0aGlzIHByaW9yaXR5IGxldmVsLgorICAg
IC8vIGlmICh3b3JrSW5Qcm9ncmVzcy5wcmlvcml0eU9mQ2hpbGRyZW4gPD0gcHJpb3JpdHlMZXZl
bCkgeworICAgIC8vICAgLy8gSWYgdGhlcmUgYXJlIHNpZGUtZWZmZWN0cyBpbiB0aGVzZSBjaGls
ZHJlbiB0aGF0IGhhdmUgbm90IHlldCBiZWVuCisgICAgLy8gICAvLyBjb21taXR0ZWQgd2UgbmVl
ZCB0byBlbnN1cmUgdGhhdCB0aGV5IGdldCBwcm9wZXJseSB0cmFuc2ZlcnJlZCB1cC4KKyAgICAv
LyAgIGlmIChjdXJyZW50ICYmIGN1cnJlbnQuY2hpbGQgIT09IHdvcmtJblByb2dyZXNzLmNoaWxk
KSB7CisgICAgLy8gICAgIHJldXNlQ2hpbGRyZW5FZmZlY3RzKHdvcmtJblByb2dyZXNzLCBjaGls
ZCk7CisgICAgLy8gICB9CisgICAgLy8gICByZXR1cm4gbnVsbDsKKyAgICAvLyB9CisKKyAgICBj
bG9uZUNoaWxkRmliZXJzKGN1cnJlbnQsIHdvcmtJblByb2dyZXNzKTsKKyAgICBtYXJrQ2hpbGRB
c1Byb2dyZXNzZWQoY3VycmVudCwgd29ya0luUHJvZ3Jlc3MsIHByaW9yaXR5TGV2ZWwpOworICAg
IHJldHVybiB3b3JrSW5Qcm9ncmVzcy5jaGlsZDsKKyAgfQorCisgIGZ1bmN0aW9uIGJhaWxvdXRP
bkxvd1ByaW9yaXR5KGN1cnJlbnQsIHdvcmtJblByb2dyZXNzKSB7CisgICAgaWYgKGN1cnJlbnQp
IHsKKyAgICAgIHdvcmtJblByb2dyZXNzLmNoaWxkID0gY3VycmVudC5jaGlsZDsKKyAgICAgIHdv
cmtJblByb2dyZXNzLm1lbW9pemVkUHJvcHMgPSBjdXJyZW50Lm1lbW9pemVkUHJvcHM7CisgICAg
ICB3b3JrSW5Qcm9ncmVzcy5vdXRwdXQgPSBjdXJyZW50Lm91dHB1dDsKKyAgICB9CisgICAgcmV0
dXJuIG51bGw7CisgIH0KKworICBmdW5jdGlvbiBiZWdpbldvcmsoY3VycmVudCwgd29ya0luUHJv
Z3Jlc3MsIHByaW9yaXR5TGV2ZWwpIHsKKyAgICBpZiAod29ya0luUHJvZ3Jlc3MucGVuZGluZ1dv
cmtQcmlvcml0eSA9PT0gTm9Xb3JrIHx8IHdvcmtJblByb2dyZXNzLnBlbmRpbmdXb3JrUHJpb3Jp
dHkgPiBwcmlvcml0eUxldmVsKSB7CisgICAgICByZXR1cm4gYmFpbG91dE9uTG93UHJpb3JpdHko
Y3VycmVudCwgd29ya0luUHJvZ3Jlc3MpOworICAgIH0KKworICAgIGlmICh3b3JrSW5Qcm9ncmVz
cy5wcm9ncmVzc2VkUHJpb3JpdHkgPT09IHByaW9yaXR5TGV2ZWwpIHsKKyAgICAgIC8vIElmIHdl
IGhhdmUgcHJvZ3Jlc3NlZCB3b3JrIG9uIHRoaXMgcHJpb3JpdHkgbGV2ZWwgYWxyZWFkeSwgd2Ug
Y2FuCisgICAgICAvLyBwcm9jZWVkIHRoaXMgdGhhdCBhcyB0aGUgY2hpbGQuCisgICAgICB3b3Jr
SW5Qcm9ncmVzcy5jaGlsZCA9IHdvcmtJblByb2dyZXNzLnByb2dyZXNzZWRDaGlsZDsKKyAgICB9
CisKKyAgICBpZiAoKHdvcmtJblByb2dyZXNzLnBlbmRpbmdQcm9wcyA9PT0gbnVsbCB8fCB3b3Jr
SW5Qcm9ncmVzcy5tZW1vaXplZFByb3BzICE9PSBudWxsICYmIHdvcmtJblByb2dyZXNzLnBlbmRp
bmdQcm9wcyA9PT0gd29ya0luUHJvZ3Jlc3MubWVtb2l6ZWRQcm9wcykgJiYgd29ya0luUHJvZ3Jl
c3MudXBkYXRlUXVldWUgPT09IG51bGwpIHsKKyAgICAgIHJldHVybiBiYWlsb3V0T25BbHJlYWR5
RmluaXNoZWRXb3JrKGN1cnJlbnQsIHdvcmtJblByb2dyZXNzKTsKKyAgICB9CisKKyAgICBzd2l0
Y2ggKHdvcmtJblByb2dyZXNzLnRhZykgeworICAgICAgY2FzZSBJbmRldGVybWluYXRlQ29tcG9u
ZW50OgorICAgICAgICByZXR1cm4gbW91bnRJbmRldGVybWluYXRlQ29tcG9uZW50KGN1cnJlbnQs
IHdvcmtJblByb2dyZXNzKTsKKyAgICAgIGNhc2UgRnVuY3Rpb25hbENvbXBvbmVudDoKKyAgICAg
ICAgcmV0dXJuIHVwZGF0ZUZ1bmN0aW9uYWxDb21wb25lbnQoY3VycmVudCwgd29ya0luUHJvZ3Jl
c3MpOworICAgICAgY2FzZSBDbGFzc0NvbXBvbmVudDoKKyAgICAgICAgcmV0dXJuIHVwZGF0ZUNs
YXNzQ29tcG9uZW50KGN1cnJlbnQsIHdvcmtJblByb2dyZXNzKTsKKyAgICAgIGNhc2UgSG9zdENv
bnRhaW5lcjoKKyAgICAgICAgcmVjb25jaWxlQ2hpbGRyZW4oY3VycmVudCwgd29ya0luUHJvZ3Jl
c3MsIHdvcmtJblByb2dyZXNzLnBlbmRpbmdQcm9wcyk7CisgICAgICAgIC8vIEEgeWllbGQgY29t
cG9uZW50IGlzIGp1c3QgYSBwbGFjZWhvbGRlciwgd2UgY2FuIGp1c3QgcnVuIHRocm91Z2ggdGhl
CisgICAgICAgIC8vIG5leHQgb25lIGltbWVkaWF0ZWx5LgorICAgICAgICBpZiAod29ya0luUHJv
Z3Jlc3MuY2hpbGQpIHsKKyAgICAgICAgICByZXR1cm4gYmVnaW5Xb3JrKHdvcmtJblByb2dyZXNz
LmNoaWxkLmFsdGVybmF0ZSwgd29ya0luUHJvZ3Jlc3MuY2hpbGQsIHByaW9yaXR5TGV2ZWwpOwor
ICAgICAgICB9CisgICAgICAgIHJldHVybiBudWxsOworICAgICAgY2FzZSBIb3N0Q29tcG9uZW50
OgorICAgICAgICBpZiAod29ya0luUHJvZ3Jlc3Muc3RhdGVOb2RlICYmIGNvbmZpZy5iZWdpblVw
ZGF0ZSkgeworICAgICAgICAgIGNvbmZpZy5iZWdpblVwZGF0ZSh3b3JrSW5Qcm9ncmVzcy5zdGF0
ZU5vZGUpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB1cGRhdGVIb3N0Q29tcG9uZW50KGN1
cnJlbnQsIHdvcmtJblByb2dyZXNzKTsKKyAgICAgIGNhc2UgQ29yb3V0aW5lSGFuZGxlclBoYXNl
OgorICAgICAgICAvLyBUaGlzIGlzIGEgcmVzdGFydC4gUmVzZXQgdGhlIHRhZyB0byB0aGUgaW5p
dGlhbCBwaGFzZS4KKyAgICAgICAgd29ya0luUHJvZ3Jlc3MudGFnID0gQ29yb3V0aW5lQ29tcG9u
ZW50OworICAgICAgLy8gSW50ZW50aW9uYWxseSBmYWxsIHRocm91Z2ggc2luY2UgdGhpcyBpcyBu
b3cgdGhlIHNhbWUuCisgICAgICBjYXNlIENvcm91dGluZUNvbXBvbmVudDoKKyAgICAgICAgdXBk
YXRlQ29yb3V0aW5lQ29tcG9uZW50KGN1cnJlbnQsIHdvcmtJblByb2dyZXNzKTsKKyAgICAgICAg
Ly8gVGhpcyBkb2Vzbid0IHRha2UgYXJiaXRyYXJ5IHRpbWUgc28gd2UgY291bGQgc3luY2hyb25v
dXNseSBqdXN0IGJlZ2luCisgICAgICAgIC8vIGVhZ2VybHkgZG8gdGhlIHdvcmsgb2Ygd29ya0lu
UHJvZ3Jlc3MuY2hpbGQgYXMgYW4gb3B0aW1pemF0aW9uLgorICAgICAgICBpZiAod29ya0luUHJv
Z3Jlc3MuY2hpbGQpIHsKKyAgICAgICAgICByZXR1cm4gYmVnaW5Xb3JrKHdvcmtJblByb2dyZXNz
LmNoaWxkLmFsdGVybmF0ZSwgd29ya0luUHJvZ3Jlc3MuY2hpbGQsIHByaW9yaXR5TGV2ZWwpOwor
ICAgICAgICB9CisgICAgICAgIHJldHVybiB3b3JrSW5Qcm9ncmVzcy5jaGlsZDsKKyAgICAgIGNh
c2UgWWllbGRDb21wb25lbnQ6CisgICAgICAgIC8vIEEgeWllbGQgY29tcG9uZW50IGlzIGp1c3Qg
YSBwbGFjZWhvbGRlciwgd2UgY2FuIGp1c3QgcnVuIHRocm91Z2ggdGhlCisgICAgICAgIC8vIG5l
eHQgb25lIGltbWVkaWF0ZWx5LgorICAgICAgICBpZiAod29ya0luUHJvZ3Jlc3Muc2libGluZykg
eworICAgICAgICAgIHJldHVybiBiZWdpbldvcmsod29ya0luUHJvZ3Jlc3Muc2libGluZy5hbHRl
cm5hdGUsIHdvcmtJblByb2dyZXNzLnNpYmxpbmcsIHByaW9yaXR5TGV2ZWwpOworICAgICAgICB9
CisgICAgICAgIHJldHVybiBudWxsOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCdVbmtub3duIHVuaXQgb2Ygd29yayB0YWcnKTsKKyAgICB9CisgIH0KKworICByZXR1
cm4geworICAgIGJlZ2luV29yazogYmVnaW5Xb3JrCisgIH07Cit9OwpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9y
ZWFjdC1kb20vbGliL1JlYWN0RmliZXJDb21taXRXb3JrLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qv
bm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RGaWJlckNvbW1pdFdvcmsuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uN2U1MTMyZjNjYjZhZjI4MDVjNTJmOWUyYjgwMzAwMjE2OGU2OGRhOAotLS0gL2Rldi9u
dWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1Jl
YWN0RmliZXJDb21taXRXb3JrLmpzCkBAIC0wLDAgKzEsNzggQEAKKy8qKgorICogQ29weXJpZ2h0
IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxp
Y2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5
IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCBy
aWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0
b3J5LgorICoKKyAqIAorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIFJlYWN0VHlwZU9mV29y
ayA9IHJlcXVpcmUoJy4vUmVhY3RUeXBlT2ZXb3JrJyk7Cit2YXIgQ2xhc3NDb21wb25lbnQgPSBS
ZWFjdFR5cGVPZldvcmsuQ2xhc3NDb21wb25lbnQsCisgICAgSG9zdENvbnRhaW5lciA9IFJlYWN0
VHlwZU9mV29yay5Ib3N0Q29udGFpbmVyLAorICAgIEhvc3RDb21wb25lbnQgPSBSZWFjdFR5cGVP
ZldvcmsuSG9zdENvbXBvbmVudDsKKwordmFyIF9yZXF1aXJlID0gcmVxdWlyZSgnLi9SZWFjdEZp
YmVyVXBkYXRlUXVldWUnKSwKKyAgICBjYWxsQ2FsbGJhY2tzID0gX3JlcXVpcmUuY2FsbENhbGxi
YWNrczsKKworbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoY29uZmlnKSB7CisKKyAgdmFyIHVw
ZGF0ZUNvbnRhaW5lciA9IGNvbmZpZy51cGRhdGVDb250YWluZXI7CisgIHZhciBjb21taXRVcGRh
dGUgPSBjb25maWcuY29tbWl0VXBkYXRlOworCisgIGZ1bmN0aW9uIGNvbW1pdFdvcmsoY3VycmVu
dCwgZmluaXNoZWRXb3JrKSB7CisgICAgc3dpdGNoIChmaW5pc2hlZFdvcmsudGFnKSB7CisgICAg
ICBjYXNlIENsYXNzQ29tcG9uZW50OgorICAgICAgICB7CisgICAgICAgICAgLy8gQ2xlYXIgdXBk
YXRlcyBmcm9tIGN1cnJlbnQgZmliZXIuIFRoaXMgbXVzdCBnbyBiZWZvcmUgdGhlIGNhbGxiYWNr
cworICAgICAgICAgIC8vIGFyZSByZXNldCwgaW4gY2FzZSBhbiB1cGRhdGUgaXMgdHJpZ2dlcmVk
IGZyb20gaW5zaWRlIGEgY2FsbGJhY2suIElzCisgICAgICAgICAgLy8gdGhpcyBzYWZlPyBSZWxp
ZXMgb24gdGhlIGFzc3VtcHRpb24gdGhhdCB3b3JrIGlzIG9ubHkgY29tbWl0dGVkIGlmCisgICAg
ICAgICAgLy8gdGhlIHVwZGF0ZSBxdWV1ZSBpcyBlbXB0eS4KKyAgICAgICAgICBpZiAoZmluaXNo
ZWRXb3JrLmFsdGVybmF0ZSkgeworICAgICAgICAgICAgZmluaXNoZWRXb3JrLmFsdGVybmF0ZS51
cGRhdGVRdWV1ZSA9IG51bGw7CisgICAgICAgICAgfQorICAgICAgICAgIGlmIChmaW5pc2hlZFdv
cmsuY2FsbGJhY2tMaXN0KSB7CisgICAgICAgICAgICB2YXIgY2FsbGJhY2tMaXN0ID0gZmluaXNo
ZWRXb3JrLmNhbGxiYWNrTGlzdDsKKworICAgICAgICAgICAgZmluaXNoZWRXb3JrLmNhbGxiYWNr
TGlzdCA9IG51bGw7CisgICAgICAgICAgICBjYWxsQ2FsbGJhY2tzKGNhbGxiYWNrTGlzdCwgZmlu
aXNoZWRXb3JrLnN0YXRlTm9kZSk7CisgICAgICAgICAgfQorICAgICAgICAgIC8vIFRPRE86IEZp
cmUgY29tcG9uZW50RGlkTW91bnQvY29tcG9uZW50RGlkVXBkYXRlLCB1cGRhdGUgcmVmcworICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgY2FzZSBIb3N0Q29udGFpbmVyOgorICAg
ICAgICB7CisgICAgICAgICAgLy8gVE9ETzogQXR0YWNoIGNoaWxkcmVuIHRvIHJvb3QgY29udGFp
bmVyLgorICAgICAgICAgIHZhciBjaGlsZHJlbiA9IGZpbmlzaGVkV29yay5vdXRwdXQ7CisgICAg
ICAgICAgdmFyIHJvb3QgPSBmaW5pc2hlZFdvcmsuc3RhdGVOb2RlOworICAgICAgICAgIHZhciBj
b250YWluZXJJbmZvID0gcm9vdC5jb250YWluZXJJbmZvOworICAgICAgICAgIHVwZGF0ZUNvbnRh
aW5lcihjb250YWluZXJJbmZvLCBjaGlsZHJlbik7CisgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgICBjYXNlIEhvc3RDb21wb25lbnQ6CisgICAgICAgIHsKKyAgICAgICAgICBpZiAo
ZmluaXNoZWRXb3JrLnN0YXRlTm9kZSA9PSBudWxsIHx8ICFjdXJyZW50KSB7CisgICAgICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoJ1RoaXMgc2hvdWxkIG9ubHkgYmUgZG9uZSBkdXJpbmcgdXBkYXRl
cy4nKTsKKyAgICAgICAgICB9CisgICAgICAgICAgLy8gQ29tbWl0IHRoZSB3b3JrIHByZXBhcmVk
IGVhcmxpZXIuCisgICAgICAgICAgdmFyIGNoaWxkID0gZmluaXNoZWRXb3JrLmNoaWxkOworICAg
ICAgICAgIHZhciBfY2hpbGRyZW4gPSBjaGlsZCAmJiAhY2hpbGQuc2libGluZyA/IGNoaWxkLm91
dHB1dCA6IGNoaWxkOworICAgICAgICAgIHZhciBuZXdQcm9wcyA9IGZpbmlzaGVkV29yay5tZW1v
aXplZFByb3BzOworICAgICAgICAgIHZhciBvbGRQcm9wcyA9IGN1cnJlbnQubWVtb2l6ZWRQcm9w
czsKKyAgICAgICAgICB2YXIgaW5zdGFuY2UgPSBmaW5pc2hlZFdvcmsuc3RhdGVOb2RlOworICAg
ICAgICAgIGNvbW1pdFVwZGF0ZShpbnN0YW5jZSwgb2xkUHJvcHMsIG5ld1Byb3BzLCBfY2hpbGRy
ZW4pOworICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCdUaGlzIHVuaXQgb2Ygd29yayB0YWcgc2hvdWxkIG5vdCBoYXZl
IHNpZGUtZWZmZWN0cy4nKTsKKyAgICB9CisgIH0KKworICByZXR1cm4geworICAgIGNvbW1pdFdv
cms6IGNvbW1pdFdvcmsKKyAgfTsKK307ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVh
Y3RGaWJlckNvbXBsZXRlV29yay5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9y
ZWFjdC1kb20vbGliL1JlYWN0RmliZXJDb21wbGV0ZVdvcmsuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTY4MzY3
NTVhNjUyMDg1MTFjZjJjMzJiNWY2YWZlZTkzMjQzNWJlZgotLS0gL2Rldi9udWxsCisrKyBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0RmliZXJDb21w
bGV0ZVdvcmsuanMKQEAgLTAsMCArMSwyMDggQEAKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJl
c2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhp
cyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91
bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMg
c291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2Fu
IGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoK
KyAqIAorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9yZXF1aXJlID0gcmVxdWlyZSgnLi9S
ZWFjdENoaWxkRmliZXInKSwKKyAgICByZWNvbmNpbGVDaGlsZEZpYmVycyA9IF9yZXF1aXJlLnJl
Y29uY2lsZUNoaWxkRmliZXJzOworCit2YXIgUmVhY3RUeXBlT2ZXb3JrID0gcmVxdWlyZSgnLi9S
ZWFjdFR5cGVPZldvcmsnKTsKK3ZhciBJbmRldGVybWluYXRlQ29tcG9uZW50ID0gUmVhY3RUeXBl
T2ZXb3JrLkluZGV0ZXJtaW5hdGVDb21wb25lbnQsCisgICAgRnVuY3Rpb25hbENvbXBvbmVudCA9
IFJlYWN0VHlwZU9mV29yay5GdW5jdGlvbmFsQ29tcG9uZW50LAorICAgIENsYXNzQ29tcG9uZW50
ID0gUmVhY3RUeXBlT2ZXb3JrLkNsYXNzQ29tcG9uZW50LAorICAgIEhvc3RDb250YWluZXIgPSBS
ZWFjdFR5cGVPZldvcmsuSG9zdENvbnRhaW5lciwKKyAgICBIb3N0Q29tcG9uZW50ID0gUmVhY3RU
eXBlT2ZXb3JrLkhvc3RDb21wb25lbnQsCisgICAgQ29yb3V0aW5lQ29tcG9uZW50ID0gUmVhY3RU
eXBlT2ZXb3JrLkNvcm91dGluZUNvbXBvbmVudCwKKyAgICBDb3JvdXRpbmVIYW5kbGVyUGhhc2Ug
PSBSZWFjdFR5cGVPZldvcmsuQ29yb3V0aW5lSGFuZGxlclBoYXNlLAorICAgIFlpZWxkQ29tcG9u
ZW50ID0gUmVhY3RUeXBlT2ZXb3JrLllpZWxkQ29tcG9uZW50OworCisKK21vZHVsZS5leHBvcnRz
ID0gZnVuY3Rpb24gKGNvbmZpZykgeworCisgIHZhciBjcmVhdGVJbnN0YW5jZSA9IGNvbmZpZy5j
cmVhdGVJbnN0YW5jZTsKKyAgdmFyIHByZXBhcmVVcGRhdGUgPSBjb25maWcucHJlcGFyZVVwZGF0
ZTsKKworICBmdW5jdGlvbiBtYXJrRm9yUHJlRWZmZWN0KHdvcmtJblByb2dyZXNzKSB7CisgICAg
Ly8gU2NoZWR1bGUgYSBzaWRlLWVmZmVjdCBvbiB0aGlzIGZpYmVyLCBCRUZPUkUgdGhlIGNoaWxk
cmVuJ3Mgc2lkZS1lZmZlY3RzLgorICAgIGlmICh3b3JrSW5Qcm9ncmVzcy5maXJzdEVmZmVjdCkg
eworICAgICAgd29ya0luUHJvZ3Jlc3MubmV4dEVmZmVjdCA9IHdvcmtJblByb2dyZXNzLmZpcnN0
RWZmZWN0OworICAgICAgd29ya0luUHJvZ3Jlc3MuZmlyc3RFZmZlY3QgPSB3b3JrSW5Qcm9ncmVz
czsKKyAgICB9IGVsc2UgeworICAgICAgd29ya0luUHJvZ3Jlc3MuZmlyc3RFZmZlY3QgPSB3b3Jr
SW5Qcm9ncmVzczsKKyAgICAgIHdvcmtJblByb2dyZXNzLmxhc3RFZmZlY3QgPSB3b3JrSW5Qcm9n
cmVzczsKKyAgICB9CisgIH0KKworICAvLyBUT0RPOiBJdCdzIHBvc3NpYmxlIHRoaXMgd2lsbCBj
cmVhdGUgbGF5b3V0IHRocmFzaCBpc3N1ZXMgYmVjYXVzZSBtdXRhdGlvbnMKKyAgLy8gb2YgdGhl
IERPTSBhbmQgbGlmZS1jeWNsZXMgYXJlIGludGVybGVhdmVkLiBFLmcuIGlmIGEgY29tcG9uZW50
RGlkTW91bnQKKyAgLy8gb2YgYSBzaWJsaW5nIHJlYWRzLCB0aGVuIHRoZSBuZXh0IHNpYmxpbmcg
dXBkYXRlcyBhbmQgcmVhZHMgZXRjLgorICBmdW5jdGlvbiBtYXJrRm9yUG9zdEVmZmVjdCh3b3Jr
SW5Qcm9ncmVzcykgeworICAgIC8vIFNjaGVkdWxlIGEgc2lkZS1lZmZlY3Qgb24gdGhpcyBmaWJl
ciwgQUZURVIgdGhlIGNoaWxkcmVuJ3Mgc2lkZS1lZmZlY3RzLgorICAgIGlmICh3b3JrSW5Qcm9n
cmVzcy5sYXN0RWZmZWN0KSB7CisgICAgICB3b3JrSW5Qcm9ncmVzcy5sYXN0RWZmZWN0Lm5leHRF
ZmZlY3QgPSB3b3JrSW5Qcm9ncmVzczsKKyAgICB9IGVsc2UgeworICAgICAgd29ya0luUHJvZ3Jl
c3MuZmlyc3RFZmZlY3QgPSB3b3JrSW5Qcm9ncmVzczsKKyAgICB9CisgICAgd29ya0luUHJvZ3Jl
c3MubGFzdEVmZmVjdCA9IHdvcmtJblByb2dyZXNzOworICB9CisKKyAgZnVuY3Rpb24gdHJhbnNm
ZXJPdXRwdXQoY2hpbGQsIHJldHVybkZpYmVyKSB7CisgICAgLy8gSWYgd2UgaGF2ZSBhIHNpbmds
ZSByZXN1bHQsIHdlIGp1c3QgcGFzcyB0aGF0IHRocm91Z2ggYXMgdGhlIG91dHB1dCB0bworICAg
IC8vIGF2b2lkIHVubmVjZXNzYXJ5IHRyYXZlcnNhbC4gV2hlbiB3ZSBoYXZlIG11bHRpcGxlIG91
dHB1dCwgd2UganVzdCBwYXNzCisgICAgLy8gdGhlIGxpbmtlZCBsaXN0IG9mIGZpYmVycyB0aGF0
IGhhcyB0aGUgaW5kaXZpZHVhbCBvdXRwdXQgdmFsdWVzLgorICAgIHJldHVybkZpYmVyLm91dHB1
dCA9IGNoaWxkICYmICFjaGlsZC5zaWJsaW5nID8gY2hpbGQub3V0cHV0IDogY2hpbGQ7CisgICAg
cmV0dXJuRmliZXIubWVtb2l6ZWRQcm9wcyA9IHJldHVybkZpYmVyLnBlbmRpbmdQcm9wczsKKyAg
fQorCisgIGZ1bmN0aW9uIHJlY3Vyc2l2ZWx5RmlsbFlpZWxkcyh5aWVsZHMsIG91dHB1dCkgewor
ICAgIGlmICghb3V0cHV0KSB7CisgICAgICAvLyBJZ25vcmUgbnVsbHMgZXRjLgorICAgIH0gZWxz
ZSBpZiAob3V0cHV0LnRhZyAhPT0gdW5kZWZpbmVkKSB7CisgICAgICAvLyBUT0RPOiBGaXggdGhp
cyBmcmFnaWxlIGR1Y2sgdGVzdC4KKyAgICAgIC8vIERldGVjdCBpZiB0aGlzIGlzIGEgZmliZXIs
IGlmIHNvIGl0IGlzIGEgZnJhZ21lbnQgcmVzdWx0LgorICAgICAgLy8gJEZsb3dGaXhNZTogUmVm
aW5lbWVudCBpc3N1ZS4KKyAgICAgIHZhciBpdGVtID0gb3V0cHV0OworICAgICAgZG8geworICAg
ICAgICByZWN1cnNpdmVseUZpbGxZaWVsZHMoeWllbGRzLCBpdGVtLm91dHB1dCk7CisgICAgICAg
IGl0ZW0gPSBpdGVtLnNpYmxpbmc7CisgICAgICB9IHdoaWxlIChpdGVtKTsKKyAgICB9IGVsc2Ug
eworICAgICAgLy8gJEZsb3dGaXhNZTogUmVmaW5lbWVudCBpc3N1ZS4gSWYgaXQgaXMgbm90IGEg
RmliZXIgb3IgbnVsbCwgaXQgaXMgYSB5aWVsZAorICAgICAgeWllbGRzLnB1c2gob3V0cHV0KTsK
KyAgICB9CisgIH0KKworICBmdW5jdGlvbiBtb3ZlQ29yb3V0aW5lVG9IYW5kbGVyUGhhc2UoY3Vy
cmVudCwgd29ya0luUHJvZ3Jlc3MpIHsKKyAgICB2YXIgY29yb3V0aW5lID0gd29ya0luUHJvZ3Jl
c3MucGVuZGluZ1Byb3BzOworICAgIGlmICghY29yb3V0aW5lKSB7CisgICAgICB0aHJvdyBuZXcg
RXJyb3IoJ1Nob3VsZCBiZSByZXNvbHZlZCBieSBub3cnKTsKKyAgICB9CisKKyAgICAvLyBGaXJz
dCBzdGVwIG9mIHRoZSBjb3JvdXRpbmUgaGFzIGNvbXBsZXRlZC4gTm93IHdlIG5lZWQgdG8gZG8g
dGhlIHNlY29uZC4KKyAgICAvLyBUT0RPOiBJdCB3b3VsZCBiZSBuaWNlIHRvIGhhdmUgYSBtdWx0
aSBzdGFnZSBjb3JvdXRpbmUgcmVwcmVzZW50ZWQgYnkgYQorICAgIC8vIHNpbmdsZSBjb21wb25l
bnQsIG9yIGF0IGxlYXN0IHRhaWwgY2FsbCBvcHRpbWl6ZSBuZXN0ZWQgb25lcy4gQ3VycmVudGx5
CisgICAgLy8gdGhhdCByZXF1aXJlcyBhZGRpdGlvbmFsIGZpZWxkcyB0aGF0IHdlIGRvbid0IHdh
bnQgdG8gYWRkIHRvIHRoZSBmaWJlci4KKyAgICAvLyBTbyB0aGlzIHJlcXVpcmVzIG5lc3RlZCBo
YW5kbGVycy4KKyAgICAvLyBOb3RlOiBUaGlzIGRvZXNuJ3QgbXV0YXRlIHRoZSBhbHRlcm5hdGUg
bm9kZS4gSSBkb24ndCB0aGluayBpdCBuZWVkcyB0bworICAgIC8vIHNpbmNlIHRoaXMgc3RhZ2Ug
aXMgcmVzZXQgZm9yIGV2ZXJ5IHBhc3MuCisgICAgd29ya0luUHJvZ3Jlc3MudGFnID0gQ29yb3V0
aW5lSGFuZGxlclBoYXNlOworCisgICAgLy8gQnVpbGQgdXAgdGhlIHlpZWxkcy4KKyAgICAvLyBU
T0RPOiBDb21wYXJlIHRoaXMgdG8gYSBnZW5lcmF0b3Igb3Igb3BhcXVlIGhlbHBlcnMgbGlrZSBD
aGlsZHJlbi4KKyAgICB2YXIgeWllbGRzID0gW107CisgICAgdmFyIGNoaWxkID0gd29ya0luUHJv
Z3Jlc3MuY2hpbGQ7CisgICAgd2hpbGUgKGNoaWxkKSB7CisgICAgICByZWN1cnNpdmVseUZpbGxZ
aWVsZHMoeWllbGRzLCBjaGlsZC5vdXRwdXQpOworICAgICAgY2hpbGQgPSBjaGlsZC5zaWJsaW5n
OworICAgIH0KKyAgICB2YXIgZm4gPSBjb3JvdXRpbmUuaGFuZGxlcjsKKyAgICB2YXIgcHJvcHMg
PSBjb3JvdXRpbmUucHJvcHM7CisgICAgdmFyIG5leHRDaGlsZHJlbiA9IGZuKHByb3BzLCB5aWVs
ZHMpOworCisgICAgdmFyIGN1cnJlbnRGaXJzdENoaWxkID0gY3VycmVudCA/IGN1cnJlbnQuc3Rh
dGVOb2RlIDogbnVsbDsKKyAgICAvLyBJbmhlcml0IHRoZSBwcmlvcml0eSBvZiB0aGUgcmV0dXJu
RmliZXIuCisgICAgdmFyIHByaW9yaXR5ID0gd29ya0luUHJvZ3Jlc3MucGVuZGluZ1dvcmtQcmlv
cml0eTsKKyAgICB3b3JrSW5Qcm9ncmVzcy5zdGF0ZU5vZGUgPSByZWNvbmNpbGVDaGlsZEZpYmVy
cyh3b3JrSW5Qcm9ncmVzcywgY3VycmVudEZpcnN0Q2hpbGQsIG5leHRDaGlsZHJlbiwgcHJpb3Jp
dHkpOworICAgIHJldHVybiB3b3JrSW5Qcm9ncmVzcy5zdGF0ZU5vZGU7CisgIH0KKworICBmdW5j
dGlvbiBjb21wbGV0ZVdvcmsoY3VycmVudCwgd29ya0luUHJvZ3Jlc3MpIHsKKyAgICBzd2l0Y2gg
KHdvcmtJblByb2dyZXNzLnRhZykgeworICAgICAgY2FzZSBGdW5jdGlvbmFsQ29tcG9uZW50Ogor
ICAgICAgICB0cmFuc2Zlck91dHB1dCh3b3JrSW5Qcm9ncmVzcy5jaGlsZCwgd29ya0luUHJvZ3Jl
c3MpOworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgIGNhc2UgQ2xhc3NDb21wb25lbnQ6Cisg
ICAgICAgIHRyYW5zZmVyT3V0cHV0KHdvcmtJblByb2dyZXNzLmNoaWxkLCB3b3JrSW5Qcm9ncmVz
cyk7CisgICAgICAgIC8vIERvbid0IHVzZSB0aGUgc3RhdGUgcXVldWUgdG8gY29tcHV0ZSB0aGUg
bWVtb2l6ZWQgc3RhdGUuIFdlIGFscmVhZHkKKyAgICAgICAgLy8gbWVyZ2VkIGl0IGFuZCBhc3Np
Z25lZCBpdCB0byB0aGUgaW5zdGFuY2UuIFRyYW5zZmVyIGl0IGZyb20gdGhlcmUuCisgICAgICAg
IC8vIEFsc28gbmVlZCB0byB0cmFuc2ZlciB0aGUgcHJvcHMsIGJlY2F1c2UgcGVuZGluZ1Byb3Bz
IHdpbGwgYmUgbnVsbAorICAgICAgICAvLyBpbiB0aGUgY2FzZSBvZiBhbiB1cGRhdGUKKyAgICAg
ICAgdmFyIF93b3JrSW5Qcm9ncmVzcyRzdGF0ZSA9IHdvcmtJblByb2dyZXNzLnN0YXRlTm9kZSwK
KyAgICAgICAgICAgIHN0YXRlID0gX3dvcmtJblByb2dyZXNzJHN0YXRlLnN0YXRlLAorICAgICAg
ICAgICAgcHJvcHMgPSBfd29ya0luUHJvZ3Jlc3Mkc3RhdGUucHJvcHM7CisKKyAgICAgICAgd29y
a0luUHJvZ3Jlc3MubWVtb2l6ZWRTdGF0ZSA9IHN0YXRlOworICAgICAgICB3b3JrSW5Qcm9ncmVz
cy5tZW1vaXplZFByb3BzID0gcHJvcHM7CisgICAgICAgIC8vIFRyYW5zZmVyIHVwZGF0ZSBxdWV1
ZSB0byBjYWxsYmFja0xpc3QgZmllbGQgc28gY2FsbGJhY2tzIGNhbiBiZQorICAgICAgICAvLyBj
YWxsZWQgZHVyaW5nIGNvbW1pdCBwaGFzZS4KKyAgICAgICAgd29ya0luUHJvZ3Jlc3MuY2FsbGJh
Y2tMaXN0ID0gd29ya0luUHJvZ3Jlc3MudXBkYXRlUXVldWU7CisgICAgICAgIG1hcmtGb3JQb3N0
RWZmZWN0KHdvcmtJblByb2dyZXNzKTsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICBjYXNl
IEhvc3RDb250YWluZXI6CisgICAgICAgIHRyYW5zZmVyT3V0cHV0KHdvcmtJblByb2dyZXNzLmNo
aWxkLCB3b3JrSW5Qcm9ncmVzcyk7CisgICAgICAgIC8vIFdlIGRvbid0IGtub3cgaWYgYSBjb250
YWluZXIgaGFzIHVwZGF0ZWQgYW55IGNoaWxkcmVuIHNvIHdlIGFsd2F5cworICAgICAgICAvLyBu
ZWVkIHRvIHVwZGF0ZSBpdCByaWdodCBub3cuIFdlIHNjaGVkdWxlIHRoaXMgc2lkZS1lZmZlY3Qg
YmVmb3JlCisgICAgICAgIC8vIGFsbCB0aGUgb3RoZXIgc2lkZS1lZmZlY3RzIGluIHRoZSBzdWJ0
cmVlLiBXZSBuZWVkIHRvIHNjaGVkdWxlIGl0CisgICAgICAgIC8vIGJlZm9yZSBzbyB0aGF0IHRo
ZSBlbnRpcmUgdHJlZSBpcyB1cC10by1kYXRlIGJlZm9yZSB0aGUgbGlmZS1jeWNsZXMKKyAgICAg
ICAgLy8gYXJlIGludm9rZWQuCisgICAgICAgIG1hcmtGb3JQcmVFZmZlY3Qod29ya0luUHJvZ3Jl
c3MpOworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgIGNhc2UgSG9zdENvbXBvbmVudDoKKyAg
ICAgICAgdmFyIG5ld1Byb3BzID0gd29ya0luUHJvZ3Jlc3MucGVuZGluZ1Byb3BzOworICAgICAg
ICB2YXIgY2hpbGQgPSB3b3JrSW5Qcm9ncmVzcy5jaGlsZDsKKyAgICAgICAgdmFyIGNoaWxkcmVu
ID0gY2hpbGQgJiYgIWNoaWxkLnNpYmxpbmcgPyBjaGlsZC5vdXRwdXQgOiBjaGlsZDsKKyAgICAg
ICAgaWYgKGN1cnJlbnQgJiYgd29ya0luUHJvZ3Jlc3Muc3RhdGVOb2RlICE9IG51bGwpIHsKKyAg
ICAgICAgICAvLyBJZiB3ZSBoYXZlIGFuIGFsdGVybmF0ZSwgdGhhdCBtZWFucyB0aGlzIGlzIGFu
IHVwZGF0ZSBhbmQgd2UgbmVlZCB0bworICAgICAgICAgIC8vIHNjaGVkdWxlIGEgc2lkZS1lZmZl
Y3QgdG8gZG8gdGhlIHVwZGF0ZXMuCisgICAgICAgICAgdmFyIG9sZFByb3BzID0gY3VycmVudC5t
ZW1vaXplZFByb3BzOworICAgICAgICAgIC8vIElmIHdlIGdldCB1cGRhdGVkIGJlY2F1c2Ugb25l
IG9mIG91ciBjaGlsZHJlbiB1cGRhdGVkLCB3ZSBkb24ndAorICAgICAgICAgIC8vIGhhdmUgbmV3
UHJvcHMgc28gd2UnbGwgaGF2ZSB0byByZXVzZSB0aGVtLgorICAgICAgICAgIC8vIFRPRE86IFNw
bGl0IHRoZSB1cGRhdGUgQVBJIGFzIHNlcGFyYXRlIGZvciB0aGUgcHJvcHMgdnMuIGNoaWxkcmVu
LgorICAgICAgICAgIC8vIEV2ZW4gYmV0dGVyIHdvdWxkIGJlIGlmIGNoaWxkcmVuIHdlcmVuJ3Qg
c3BlY2lhbCBjYXNlZCBhdCBhbGwgdGhvLgorICAgICAgICAgIGlmICghbmV3UHJvcHMpIHsKKyAg
ICAgICAgICAgIG5ld1Byb3BzID0gb2xkUHJvcHM7CisgICAgICAgICAgfQorICAgICAgICAgIHZh
ciBpbnN0YW5jZSA9IHdvcmtJblByb2dyZXNzLnN0YXRlTm9kZTsKKyAgICAgICAgICBpZiAocHJl
cGFyZVVwZGF0ZShpbnN0YW5jZSwgb2xkUHJvcHMsIG5ld1Byb3BzLCBjaGlsZHJlbikpIHsKKyAg
ICAgICAgICAgIC8vIFRoaXMgcmV0dXJucyB0cnVlIGlmIHRoZXJlIHdhcyBzb21ldGhpbmcgdG8g
dXBkYXRlLgorICAgICAgICAgICAgbWFya0ZvclByZUVmZmVjdCh3b3JrSW5Qcm9ncmVzcyk7Cisg
ICAgICAgICAgfQorICAgICAgICAgIC8vIFRPRE86IElzIHRoaXMgYWN0dWFsbHkgZXZlciBnb2lu
ZyB0byBjaGFuZ2U/IFdoeSBzZXQgaXQgZXZlcnkgdGltZT8KKyAgICAgICAgICB3b3JrSW5Qcm9n
cmVzcy5vdXRwdXQgPSBpbnN0YW5jZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBpZiAo
IW5ld1Byb3BzKSB7CisgICAgICAgICAgICBpZiAod29ya0luUHJvZ3Jlc3Muc3RhdGVOb2RlID09
PSBudWxsKSB7CisgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignV2UgbXVzdCBoYXZlIG5l
dyBwcm9wcyBmb3IgbmV3IG1vdW50cy4nKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgIC8vIFRoaXMgY2FuIGhhcHBlbiB3aGVuIHdlIGFib3J0IHdvcmsuCisgICAgICAgICAg
ICAgIHJldHVybiBudWxsOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICB2
YXIgX2luc3RhbmNlID0gY3JlYXRlSW5zdGFuY2Uod29ya0luUHJvZ3Jlc3MudHlwZSwgbmV3UHJv
cHMsIGNoaWxkcmVuKTsKKyAgICAgICAgICAvLyBUT0RPOiBUaGlzIHNlZW1zIGxpa2UgdW5uZWNl
c3NhcnkgZHVwbGljYXRpb24uCisgICAgICAgICAgd29ya0luUHJvZ3Jlc3Muc3RhdGVOb2RlID0g
X2luc3RhbmNlOworICAgICAgICAgIHdvcmtJblByb2dyZXNzLm91dHB1dCA9IF9pbnN0YW5jZTsK
KyAgICAgICAgfQorICAgICAgICB3b3JrSW5Qcm9ncmVzcy5tZW1vaXplZFByb3BzID0gbmV3UHJv
cHM7CisgICAgICAgIHJldHVybiBudWxsOworICAgICAgY2FzZSBDb3JvdXRpbmVDb21wb25lbnQ6
CisgICAgICAgIHJldHVybiBtb3ZlQ29yb3V0aW5lVG9IYW5kbGVyUGhhc2UoY3VycmVudCwgd29y
a0luUHJvZ3Jlc3MpOworICAgICAgY2FzZSBDb3JvdXRpbmVIYW5kbGVyUGhhc2U6CisgICAgICAg
IHRyYW5zZmVyT3V0cHV0KHdvcmtJblByb2dyZXNzLnN0YXRlTm9kZSwgd29ya0luUHJvZ3Jlc3Mp
OworICAgICAgICAvLyBSZXNldCB0aGUgdGFnIHRvIG5vdyBiZSBhIGZpcnN0IHBoYXNlIGNvcm91
dGluZS4KKyAgICAgICAgd29ya0luUHJvZ3Jlc3MudGFnID0gQ29yb3V0aW5lQ29tcG9uZW50Owor
ICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgIGNhc2UgWWllbGRDb21wb25lbnQ6CisgICAgICAg
IC8vIERvZXMgbm90aGluZy4KKyAgICAgICAgcmV0dXJuIG51bGw7CisKKyAgICAgIC8vIEVycm9y
IGNhc2VzCisgICAgICBjYXNlIEluZGV0ZXJtaW5hdGVDb21wb25lbnQ6CisgICAgICAgIHRocm93
IG5ldyBFcnJvcignQW4gaW5kZXRlcm1pbmF0ZSBjb21wb25lbnQgc2hvdWxkIGhhdmUgYmVjb21l
IGRldGVybWluYXRlIGJlZm9yZSBjb21wbGV0aW5nLicpOworICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIHVuaXQgb2Ygd29yayB0YWcnKTsKKyAgICB9Cisg
IH0KKworICByZXR1cm4geworICAgIGNvbXBsZXRlV29yazogY29tcGxldGVXb3JrCisgIH07Cit9
OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Jl
YWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0RmliZXJSZWNvbmNpbGVyLmpzIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RGaWJlclJl
Y29uY2lsZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2E2NTVkOTFhYjRjMDQ5MTUxZTRjYTA4ZmFiMzQ3ZDBi
ZTlkY2MyMwotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxl
cy9yZWFjdC1kb20vbGliL1JlYWN0RmliZXJSZWNvbmNpbGVyLmpzCkBAIC0wLDAgKzEsNjQgQEAK
Ky8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRl
ciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3Jh
bnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUg
aW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIAorICovCisKKyd1c2Ugc3RyaWN0JzsKKwor
dmFyIF9yZXF1aXJlID0gcmVxdWlyZSgnLi9SZWFjdEZpYmVyUm9vdCcpLAorICAgIGNyZWF0ZUZp
YmVyUm9vdCA9IF9yZXF1aXJlLmNyZWF0ZUZpYmVyUm9vdDsKKwordmFyIFJlYWN0RmliZXJTY2hl
ZHVsZXIgPSByZXF1aXJlKCcuL1JlYWN0RmliZXJTY2hlZHVsZXInKTsKKworbW9kdWxlLmV4cG9y
dHMgPSBmdW5jdGlvbiAoY29uZmlnKSB7CisgIHZhciBfUmVhY3RGaWJlclNjaGVkdWxlciA9IFJl
YWN0RmliZXJTY2hlZHVsZXIoY29uZmlnKSwKKyAgICAgIHNjaGVkdWxlV29yayA9IF9SZWFjdEZp
YmVyU2NoZWR1bGVyLnNjaGVkdWxlV29yaywKKyAgICAgIHBlcmZvcm1XaXRoUHJpb3JpdHkgPSBf
UmVhY3RGaWJlclNjaGVkdWxlci5wZXJmb3JtV2l0aFByaW9yaXR5OworCisgIHJldHVybiB7Cisg
ICAgbW91bnRDb250YWluZXI6IGZ1bmN0aW9uIChlbGVtZW50LCBjb250YWluZXJJbmZvKSB7Cisg
ICAgICB2YXIgcm9vdCA9IGNyZWF0ZUZpYmVyUm9vdChjb250YWluZXJJbmZvKTsKKyAgICAgIHZh
ciBjb250YWluZXIgPSByb290LmN1cnJlbnQ7CisgICAgICAvLyBUT0RPOiBVc2UgcGVuZGluZyB3
b3JrL3N0YXRlIGluc3RlYWQgb2YgcHJvcHMuCisgICAgICAvLyBUT0RPOiBUaGlzIHNob3VsZCBu
b3Qgb3ZlcnJpZGUgdGhlIHBlbmRpbmdXb3JrUHJpb3JpdHkgaWYgdGhlcmUgaXMKKyAgICAgIC8v
IGhpZ2hlciBwcmlvcml0eSB3b3JrIGluIHRoZSBzdWJ0cmVlLgorICAgICAgY29udGFpbmVyLnBl
bmRpbmdQcm9wcyA9IGVsZW1lbnQ7CisKKyAgICAgIHNjaGVkdWxlV29yayhyb290KTsKKworICAg
ICAgLy8gSXQgbWF5IHNlZW0gc3RyYW5nZSB0aGF0IHdlIGRvbid0IHJldHVybiB0aGUgcm9vdCBo
ZXJlLCBidXQgdGhhdCB3aWxsCisgICAgICAvLyBhbGxvdyB1cyB0byBoYXZlIGNvbnRhaW5lcnMg
dGhhdCBhcmUgaW4gdGhlIG1pZGRsZSBvZiB0aGUgdHJlZSBpbnN0ZWFkCisgICAgICAvLyBvZiBi
ZWluZyByb290cy4KKyAgICAgIHJldHVybiBjb250YWluZXI7CisgICAgfSwKKyAgICB1cGRhdGVD
b250YWluZXI6IGZ1bmN0aW9uIChlbGVtZW50LCBjb250YWluZXIpIHsKKyAgICAgIC8vIFRPRE86
IElmIHRoaXMgaXMgYSBuZXN0ZWQgY29udGFpbmVyLCB0aGlzIHdvbid0IGJlIHRoZSByb290Lgor
ICAgICAgdmFyIHJvb3QgPSBjb250YWluZXIuc3RhdGVOb2RlOworICAgICAgLy8gVE9ETzogVXNl
IHBlbmRpbmcgd29yay9zdGF0ZSBpbnN0ZWFkIG9mIHByb3BzLgorICAgICAgcm9vdC5jdXJyZW50
LnBlbmRpbmdQcm9wcyA9IGVsZW1lbnQ7CisKKyAgICAgIHNjaGVkdWxlV29yayhyb290KTsKKyAg
ICB9LAorICAgIHVubW91bnRDb250YWluZXI6IGZ1bmN0aW9uIChjb250YWluZXIpIHsKKyAgICAg
IC8vIFRPRE86IElmIHRoaXMgaXMgYSBuZXN0ZWQgY29udGFpbmVyLCB0aGlzIHdvbid0IGJlIHRo
ZSByb290LgorICAgICAgdmFyIHJvb3QgPSBjb250YWluZXIuc3RhdGVOb2RlOworICAgICAgLy8g
VE9ETzogVXNlIHBlbmRpbmcgd29yay9zdGF0ZSBpbnN0ZWFkIG9mIHByb3BzLgorICAgICAgcm9v
dC5jdXJyZW50LnBlbmRpbmdQcm9wcyA9IFtdOworCisgICAgICBzY2hlZHVsZVdvcmsocm9vdCk7
CisgICAgfSwKKworCisgICAgcGVyZm9ybVdpdGhQcmlvcml0eTogcGVyZm9ybVdpdGhQcmlvcml0
eSwKKworICAgIGdldFB1YmxpY1Jvb3RJbnN0YW5jZTogZnVuY3Rpb24gKGNvbnRhaW5lcikgewor
ICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorICB9OworfTsKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3Qt
ZG9tL2xpYi9SZWFjdEZpYmVyUm9vdC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxl
cy9yZWFjdC1kb20vbGliL1JlYWN0RmliZXJSb290LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYyYmVkODY0ZDFj
NjkwNmJjOThmMzU0YmU5Y2IwODUyMzhmZTQ5MGQKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdEZpYmVyUm9vdC5qcwpA
QCAtMCwwICsxLDI5IEBACisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29r
LCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUg
aXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICog
TElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBB
biBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0
aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiAKKyAqLworCisn
dXNlIHN0cmljdCc7CisKK3ZhciBfcmVxdWlyZSA9IHJlcXVpcmUoJy4vUmVhY3RGaWJlcicpLAor
ICAgIGNyZWF0ZUhvc3RDb250YWluZXJGaWJlciA9IF9yZXF1aXJlLmNyZWF0ZUhvc3RDb250YWlu
ZXJGaWJlcjsKKworZXhwb3J0cy5jcmVhdGVGaWJlclJvb3QgPSBmdW5jdGlvbiAoY29udGFpbmVy
SW5mbykgeworICAvLyBDeWNsaWMgY29uc3RydWN0aW9uLiBUaGlzIGNoZWF0cyB0aGUgdHlwZSBz
eXN0ZW0gcmlnaHQgbm93IGJlY2F1c2UKKyAgLy8gc3RhdGVOb2RlIGlzIGFueS4KKyAgdmFyIHVu
aW5pdGlhbGl6ZWRGaWJlciA9IGNyZWF0ZUhvc3RDb250YWluZXJGaWJlcigpOworICB2YXIgcm9v
dCA9IHsKKyAgICBjdXJyZW50OiB1bmluaXRpYWxpemVkRmliZXIsCisgICAgY29udGFpbmVySW5m
bzogY29udGFpbmVySW5mbywKKyAgICBpc1NjaGVkdWxlZDogZmFsc2UsCisgICAgbmV4dFNjaGVk
dWxlZFJvb3Q6IG51bGwKKyAgfTsKKyAgdW5pbml0aWFsaXplZEZpYmVyLnN0YXRlTm9kZSA9IHJv
b3Q7CisgIHJldHVybiByb290OworfTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFj
dEZpYmVyU2NoZWR1bGVyLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0
LWRvbS9saWIvUmVhY3RGaWJlclNjaGVkdWxlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYjE0OTA2MDgzMmVi
YjJmMzIzMDJmMjkzOTI2NTA2Mjc4NzFhNmI0Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RGaWJlclNjaGVkdWxlci5q
cwpAQCAtMCwwICsxLDMzMSBAQAorLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNl
Ym9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBj
b2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUK
KyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJl
ZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQg
aW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogCisgKi8K
KworJ3VzZSBzdHJpY3QnOworCit2YXIgUmVhY3RGaWJlckJlZ2luV29yayA9IHJlcXVpcmUoJy4v
UmVhY3RGaWJlckJlZ2luV29yaycpOwordmFyIFJlYWN0RmliZXJDb21wbGV0ZVdvcmsgPSByZXF1
aXJlKCcuL1JlYWN0RmliZXJDb21wbGV0ZVdvcmsnKTsKK3ZhciBSZWFjdEZpYmVyQ29tbWl0V29y
ayA9IHJlcXVpcmUoJy4vUmVhY3RGaWJlckNvbW1pdFdvcmsnKTsKKwordmFyIF9yZXF1aXJlID0g
cmVxdWlyZSgnLi9SZWFjdEZpYmVyJyksCisgICAgY2xvbmVGaWJlciA9IF9yZXF1aXJlLmNsb25l
RmliZXI7CisKK3ZhciBfcmVxdWlyZTIgPSByZXF1aXJlKCcuL1JlYWN0UHJpb3JpdHlMZXZlbCcp
LAorICAgIE5vV29yayA9IF9yZXF1aXJlMi5Ob1dvcmssCisgICAgTG93UHJpb3JpdHkgPSBfcmVx
dWlyZTIuTG93UHJpb3JpdHksCisgICAgQW5pbWF0aW9uUHJpb3JpdHkgPSBfcmVxdWlyZTIuQW5p
bWF0aW9uUHJpb3JpdHksCisgICAgU3luY2hyb25vdXNQcmlvcml0eSA9IF9yZXF1aXJlMi5TeW5j
aHJvbm91c1ByaW9yaXR5OworCit2YXIgdGltZUhldXJpc3RpY0ZvclVuaXRPZldvcmsgPSAxOwor
Cittb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChjb25maWcpIHsKKyAgLy8gVXNlIGEgY2xvc3Vy
ZSB0byBjaXJjdW12ZW50IHRoZSBjaXJjdWxhciBkZXBlbmRlbmN5IGJldHdlZW4gdGhlIHNjaGVk
dWxlcgorICAvLyBhbmQgUmVhY3RGaWJlckJlZ2luV29yay4gRG9uJ3Qga25vdyBpZiB0aGVyZSdz
IGEgYmV0dGVyIHdheSB0byBkbyB0aGlzLgorICB2YXIgc2NoZWR1bGVyID0gdm9pZCAwOworICBm
dW5jdGlvbiBnZXRTY2hlZHVsZXIoKSB7CisgICAgcmV0dXJuIHNjaGVkdWxlcjsKKyAgfQorCisg
IHZhciBfUmVhY3RGaWJlckJlZ2luV29yayA9IFJlYWN0RmliZXJCZWdpbldvcmsoY29uZmlnLCBn
ZXRTY2hlZHVsZXIpLAorICAgICAgYmVnaW5Xb3JrID0gX1JlYWN0RmliZXJCZWdpbldvcmsuYmVn
aW5Xb3JrOworCisgIHZhciBfUmVhY3RGaWJlckNvbXBsZXRlV28gPSBSZWFjdEZpYmVyQ29tcGxl
dGVXb3JrKGNvbmZpZyksCisgICAgICBjb21wbGV0ZVdvcmsgPSBfUmVhY3RGaWJlckNvbXBsZXRl
V28uY29tcGxldGVXb3JrOworCisgIHZhciBfUmVhY3RGaWJlckNvbW1pdFdvcmsgPSBSZWFjdEZp
YmVyQ29tbWl0V29yayhjb25maWcpLAorICAgICAgY29tbWl0V29yayA9IF9SZWFjdEZpYmVyQ29t
bWl0V29yay5jb21taXRXb3JrOworCisgIHZhciBzY2hlZHVsZUFuaW1hdGlvbkNhbGxiYWNrID0g
Y29uZmlnLnNjaGVkdWxlQW5pbWF0aW9uQ2FsbGJhY2s7CisgIHZhciBzY2hlZHVsZURlZmVycmVk
Q2FsbGJhY2sgPSBjb25maWcuc2NoZWR1bGVEZWZlcnJlZENhbGxiYWNrOworCisgIC8vIFRoZSBk
ZWZhdWx0IHByaW9yaXR5IHRvIHVzZSBmb3IgdXBkYXRlcy4KKyAgdmFyIGRlZmF1bHRQcmlvcml0
eSA9IExvd1ByaW9yaXR5OworCisgIC8vIFRoZSBuZXh0IHdvcmsgaW4gcHJvZ3Jlc3MgZmliZXIg
dGhhdCB3ZSdyZSBjdXJyZW50bHkgd29ya2luZyBvbi4KKyAgdmFyIG5leHRVbml0T2ZXb3JrID0g
bnVsbDsKKyAgdmFyIG5leHRQcmlvcml0eUxldmVsID0gTm9Xb3JrOworCisgIC8vIExpbmtlZCBs
aXN0IG9mIHJvb3RzIHdpdGggc2NoZWR1bGVkIHdvcmsgb24gdGhlbS4KKyAgdmFyIG5leHRTY2hl
ZHVsZWRSb290ID0gbnVsbDsKKyAgdmFyIGxhc3RTY2hlZHVsZWRSb290ID0gbnVsbDsKKworICBm
dW5jdGlvbiBmaW5kTmV4dFVuaXRPZldvcmsoKSB7CisgICAgLy8gQ2xlYXIgb3V0IHJvb3RzIHdp
dGggbm8gbW9yZSB3b3JrIG9uIHRoZW0uCisgICAgd2hpbGUgKG5leHRTY2hlZHVsZWRSb290ICYm
IG5leHRTY2hlZHVsZWRSb290LmN1cnJlbnQucGVuZGluZ1dvcmtQcmlvcml0eSA9PT0gTm9Xb3Jr
KSB7CisgICAgICBuZXh0U2NoZWR1bGVkUm9vdC5pc1NjaGVkdWxlZCA9IGZhbHNlOworICAgICAg
aWYgKG5leHRTY2hlZHVsZWRSb290ID09PSBsYXN0U2NoZWR1bGVkUm9vdCkgeworICAgICAgICBu
ZXh0U2NoZWR1bGVkUm9vdCA9IG51bGw7CisgICAgICAgIGxhc3RTY2hlZHVsZWRSb290ID0gbnVs
bDsKKyAgICAgICAgbmV4dFByaW9yaXR5TGV2ZWwgPSBOb1dvcms7CisgICAgICAgIHJldHVybiBu
dWxsOworICAgICAgfQorICAgICAgbmV4dFNjaGVkdWxlZFJvb3QgPSBuZXh0U2NoZWR1bGVkUm9v
dC5uZXh0U2NoZWR1bGVkUm9vdDsKKyAgICB9CisgICAgLy8gVE9ETzogVGhpcyBpcyBzY2Fubmlu
ZyBvbmUgcm9vdCBhdCBhIHRpbWUuIEl0IHNob3VsZCBiZSBzY2FubmluZyBhbGwKKyAgICAvLyBy
b290cyBmb3IgaGlnaCBwcmlvcml0eSB3b3JrIGJlZm9yZSBtb3Zpbmcgb24gdG8gbG93ZXIgcHJp
b3JpdGllcy4KKyAgICB2YXIgcm9vdCA9IG5leHRTY2hlZHVsZWRSb290OworICAgIHZhciBoaWdo
ZXN0UHJpb3JpdHlSb290ID0gbnVsbDsKKyAgICB2YXIgaGlnaGVzdFByaW9yaXR5TGV2ZWwgPSBO
b1dvcms7CisgICAgd2hpbGUgKHJvb3QpIHsKKyAgICAgIGlmIChoaWdoZXN0UHJpb3JpdHlMZXZl
bCA9PT0gTm9Xb3JrIHx8IGhpZ2hlc3RQcmlvcml0eUxldmVsID4gcm9vdC5jdXJyZW50LnBlbmRp
bmdXb3JrUHJpb3JpdHkpIHsKKyAgICAgICAgaGlnaGVzdFByaW9yaXR5TGV2ZWwgPSByb290LmN1
cnJlbnQucGVuZGluZ1dvcmtQcmlvcml0eTsKKyAgICAgICAgaGlnaGVzdFByaW9yaXR5Um9vdCA9
IHJvb3Q7CisgICAgICB9CisgICAgICAvLyBXZSBkaWRuJ3QgZmluZCBhbnl0aGluZyB0byBkbyBp
biB0aGlzIHJvb3QsIHNvIGxldCdzIHRyeSB0aGUgbmV4dCBvbmUuCisgICAgICByb290ID0gcm9v
dC5uZXh0U2NoZWR1bGVkUm9vdDsKKyAgICB9CisgICAgaWYgKGhpZ2hlc3RQcmlvcml0eVJvb3Qp
IHsKKyAgICAgIG5leHRQcmlvcml0eUxldmVsID0gaGlnaGVzdFByaW9yaXR5TGV2ZWw7CisgICAg
ICByZXR1cm4gY2xvbmVGaWJlcihoaWdoZXN0UHJpb3JpdHlSb290LmN1cnJlbnQsIGhpZ2hlc3RQ
cmlvcml0eUxldmVsKTsKKyAgICB9CisKKyAgICBuZXh0UHJpb3JpdHlMZXZlbCA9IE5vV29yazsK
KyAgICByZXR1cm4gbnVsbDsKKyAgfQorCisgIGZ1bmN0aW9uIGNvbW1pdEFsbFdvcmsoZmluaXNo
ZWRXb3JrKSB7CisgICAgLy8gQ29tbWl0IGFsbCB0aGUgc2lkZS1lZmZlY3RzIHdpdGhpbiBhIHRy
ZWUuCisgICAgLy8gVE9ETzogRXJyb3IgaGFuZGxpbmcuCisgICAgdmFyIGVmZmVjdGZ1bEZpYmVy
ID0gZmluaXNoZWRXb3JrLmZpcnN0RWZmZWN0OworICAgIHdoaWxlIChlZmZlY3RmdWxGaWJlcikg
eworICAgICAgdmFyIGN1cnJlbnQgPSBlZmZlY3RmdWxGaWJlci5hbHRlcm5hdGU7CisgICAgICBj
b21taXRXb3JrKGN1cnJlbnQsIGVmZmVjdGZ1bEZpYmVyKTsKKyAgICAgIHZhciBuZXh0ID0gZWZm
ZWN0ZnVsRmliZXIubmV4dEVmZmVjdDsKKyAgICAgIC8vIEVuc3VyZSB0aGF0IHdlIGNsZWFuIHRo
ZXNlIHVwIHNvIHRoYXQgd2UgZG9uJ3QgYWNjaWRlbnRhbGx5IGtlZXAgdGhlbS4KKyAgICAgIC8v
IEknbSBub3QgYWN0dWFsbHkgc3VyZSB0aGlzIG1hdHRlcnMgYmVjYXVzZSB3ZSBjYW4ndCByZXNl
dCBmaXJzdEVmZmVjdAorICAgICAgLy8gYW5kIGxhc3RFZmZlY3Qgc2luY2UgdGhleSdyZSBvbiBl
dmVyeSBub2RlLCBub3QganVzdCB0aGUgZWZmZWN0ZnVsCisgICAgICAvLyBvbmVzLiBTbyB3ZSBo
YXZlIHRvIGNsZWFuIGV2ZXJ5dGhpbmcgYXMgd2UgcmV1c2Ugbm9kZXMgYW55d2F5LgorICAgICAg
ZWZmZWN0ZnVsRmliZXIubmV4dEVmZmVjdCA9IG51bGw7CisgICAgICBlZmZlY3RmdWxGaWJlciA9
IG5leHQ7CisgICAgfQorICB9CisKKyAgZnVuY3Rpb24gcmVzZXRXb3JrUHJpb3JpdHkod29ya0lu
UHJvZ3Jlc3MpIHsKKyAgICB2YXIgbmV3UHJpb3JpdHkgPSBOb1dvcms7CisgICAgLy8gcHJvZ3Jl
c3NlZENoaWxkIGlzIGdvaW5nIHRvIGJlIHRoZSBjaGlsZCBzZXQgd2l0aCB0aGUgaGlnaGVzdCBw
cmlvcml0eS4KKyAgICAvLyBFaXRoZXIgaXQgaXMgdGhlIHNhbWUgYXMgY2hpbGQsIG9yIGl0IGp1
c3QgYmFpbGVkIG91dCBiZWNhdXNlIGl0IGNob29zZQorICAgIC8vIG5vdCB0byBkbyB0aGUgd29y
ay4KKyAgICB2YXIgY2hpbGQgPSB3b3JrSW5Qcm9ncmVzcy5wcm9ncmVzc2VkQ2hpbGQ7CisgICAg
d2hpbGUgKGNoaWxkKSB7CisgICAgICAvLyBFbnN1cmUgdGhhdCByZW1haW5pbmcgd29yayBwcmlv
cml0eSBidWJibGVzIHVwLgorICAgICAgaWYgKGNoaWxkLnBlbmRpbmdXb3JrUHJpb3JpdHkgIT09
IE5vV29yayAmJiAobmV3UHJpb3JpdHkgPT09IE5vV29yayB8fCBuZXdQcmlvcml0eSA+IGNoaWxk
LnBlbmRpbmdXb3JrUHJpb3JpdHkpKSB7CisgICAgICAgIG5ld1ByaW9yaXR5ID0gY2hpbGQucGVu
ZGluZ1dvcmtQcmlvcml0eTsKKyAgICAgIH0KKyAgICAgIGNoaWxkID0gY2hpbGQuc2libGluZzsK
KyAgICB9CisgICAgd29ya0luUHJvZ3Jlc3MucGVuZGluZ1dvcmtQcmlvcml0eSA9IG5ld1ByaW9y
aXR5OworICB9CisKKyAgZnVuY3Rpb24gY29tcGxldGVVbml0T2ZXb3JrKHdvcmtJblByb2dyZXNz
KSB7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgIC8vIFRoZSBjdXJyZW50LCBmbHVzaGVkLCBz
dGF0ZSBvZiB0aGlzIGZpYmVyIGlzIHRoZSBhbHRlcm5hdGUuCisgICAgICAvLyBJZGVhbGx5IG5v
dGhpbmcgc2hvdWxkIHJlbHkgb24gdGhpcywgYnV0IHJlbHlpbmcgb24gaXQgaGVyZQorICAgICAg
Ly8gbWVhbnMgdGhhdCB3ZSBkb24ndCBuZWVkIGFuIGFkZGl0aW9uYWwgZmllbGQgb24gdGhlIHdv
cmsgaW4KKyAgICAgIC8vIHByb2dyZXNzLgorICAgICAgdmFyIGN1cnJlbnQgPSB3b3JrSW5Qcm9n
cmVzcy5hbHRlcm5hdGU7CisgICAgICB2YXIgbmV4dCA9IGNvbXBsZXRlV29yayhjdXJyZW50LCB3
b3JrSW5Qcm9ncmVzcyk7CisKKyAgICAgIHJlc2V0V29ya1ByaW9yaXR5KHdvcmtJblByb2dyZXNz
KTsKKworICAgICAgLy8gVGhlIHdvcmsgaXMgbm93IGRvbmUuIFdlIGRvbid0IG5lZWQgdGhpcyBh
bnltb3JlLiBUaGlzIGZsYWdzCisgICAgICAvLyB0byB0aGUgc3lzdGVtIG5vdCB0byByZWRvIGFu
eSB3b3JrIGhlcmUuCisgICAgICB3b3JrSW5Qcm9ncmVzcy5wZW5kaW5nUHJvcHMgPSBudWxsOwor
ICAgICAgd29ya0luUHJvZ3Jlc3MudXBkYXRlUXVldWUgPSBudWxsOworCisgICAgICB2YXIgcmV0
dXJuRmliZXIgPSB3b3JrSW5Qcm9ncmVzc1sncmV0dXJuJ107CisKKyAgICAgIGlmIChyZXR1cm5G
aWJlcikgeworICAgICAgICAvLyBFbnN1cmUgdGhhdCB0aGUgZmlyc3QgYW5kIGxhc3QgZWZmZWN0
IG9mIHRoZSBwYXJlbnQgY29ycmVzcG9uZHMKKyAgICAgICAgLy8gdG8gdGhlIGNoaWxkcmVuJ3Mg
Zmlyc3QgYW5kIGxhc3QgZWZmZWN0LiBUaGlzIHByb2JhYmx5IHJlbGllcyBvbgorICAgICAgICAv
LyBjaGlsZHJlbiBjb21wbGV0aW5nIGluIG9yZGVyLgorICAgICAgICBpZiAoIXJldHVybkZpYmVy
LmZpcnN0RWZmZWN0KSB7CisgICAgICAgICAgcmV0dXJuRmliZXIuZmlyc3RFZmZlY3QgPSB3b3Jr
SW5Qcm9ncmVzcy5maXJzdEVmZmVjdDsKKyAgICAgICAgfQorICAgICAgICBpZiAod29ya0luUHJv
Z3Jlc3MubGFzdEVmZmVjdCkgeworICAgICAgICAgIGlmIChyZXR1cm5GaWJlci5sYXN0RWZmZWN0
KSB7CisgICAgICAgICAgICByZXR1cm5GaWJlci5sYXN0RWZmZWN0Lm5leHRFZmZlY3QgPSB3b3Jr
SW5Qcm9ncmVzcy5maXJzdEVmZmVjdDsKKyAgICAgICAgICB9CisgICAgICAgICAgcmV0dXJuRmli
ZXIubGFzdEVmZmVjdCA9IHdvcmtJblByb2dyZXNzLmxhc3RFZmZlY3Q7CisgICAgICAgIH0KKyAg
ICAgIH0KKworICAgICAgaWYgKG5leHQpIHsKKyAgICAgICAgLy8gSWYgY29tcGxldGluZyB0aGlz
IHdvcmsgc3Bhd25lZCBuZXcgd29yaywgZG8gdGhhdCBuZXh0LgorICAgICAgICByZXR1cm4gbmV4
dDsKKyAgICAgIH0gZWxzZSBpZiAod29ya0luUHJvZ3Jlc3Muc2libGluZykgeworICAgICAgICAv
LyBJZiB0aGVyZSBpcyBtb3JlIHdvcmsgdG8gZG8gaW4gdGhpcyByZXR1cm5GaWJlciwgZG8gdGhh
dCBuZXh0LgorICAgICAgICByZXR1cm4gd29ya0luUHJvZ3Jlc3Muc2libGluZzsKKyAgICAgIH0g
ZWxzZSBpZiAocmV0dXJuRmliZXIpIHsKKyAgICAgICAgLy8gSWYgdGhlcmUncyBubyBtb3JlIHdv
cmsgaW4gdGhpcyByZXR1cm5GaWJlci4gQ29tcGxldGUgdGhlIHJldHVybkZpYmVyLgorICAgICAg
ICB3b3JrSW5Qcm9ncmVzcyA9IHJldHVybkZpYmVyOworICAgICAgICBjb250aW51ZTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIC8vIElmIHdlJ3JlIGF0IHRoZSByb290LCB0aGVyZSdzIG5vIG1v
cmUgd29yayB0byBkby4gV2UgY2FuIGZsdXNoIGl0LgorICAgICAgICB2YXIgX3Jvb3QgPSB3b3Jr
SW5Qcm9ncmVzcy5zdGF0ZU5vZGU7CisgICAgICAgIGlmIChfcm9vdC5jdXJyZW50ID09PSB3b3Jr
SW5Qcm9ncmVzcykgeworICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGNvbW1pdCB0
aGUgc2FtZSB0cmVlIGFzIGJlZm9yZS4gVGhpcyBpcyBwcm9iYWJseSBhIGJ1ZyAnICsgJ3JlbGF0
ZWQgdG8gdGhlIHJldHVybiBmaWVsZC4nKTsKKyAgICAgICAgfQorICAgICAgICBfcm9vdC5jdXJy
ZW50ID0gd29ya0luUHJvZ3Jlc3M7CisgICAgICAgIC8vIFRPRE86IFdlIGNhbiBiZSBzbWFydGVy
IGhlcmUgYW5kIG9ubHkgbG9vayBmb3IgbW9yZSB3b3JrIGluIHRoZQorICAgICAgICAvLyAibmV4
dCIgc2NoZWR1bGVkIHdvcmsgc2luY2Ugd2UndmUgYWxyZWFkeSBzY2FubmVkIHBhc3NlZC4gVGhh
dAorICAgICAgICAvLyBhbHNvIGVuc3VyZXMgdGhhdCB3b3JrIHNjaGVkdWxlZCBkdXJpbmcgcmVj
b25jaWxpYXRpb24gZ2V0cyBkZWZlcnJlZC4KKyAgICAgICAgLy8gY29uc3QgaGFzTW9yZVdvcmsg
PSB3b3JrSW5Qcm9ncmVzcy5wZW5kaW5nV29ya1ByaW9yaXR5ICE9PSBOb1dvcms7CisgICAgICAg
IGNvbW1pdEFsbFdvcmsod29ya0luUHJvZ3Jlc3MpOworICAgICAgICB2YXIgbmV4dFdvcmsgPSBm
aW5kTmV4dFVuaXRPZldvcmsoKTsKKyAgICAgICAgLy8gaWYgKCFuZXh0V29yayAmJiBoYXNNb3Jl
V29yaykgeworICAgICAgICAvLyBUT0RPOiBUaGlzIGNhbiBoYXBwZW4gd2hlbiBzb21lIGRlZXAg
d29yayBjb21wbGV0ZXMgYW5kIHdlIGRvbid0CisgICAgICAgIC8vIGtub3cgaWYgdGhpcyB3YXMg
dGhlIGxhc3Qgb25lLiBXZSBzaG91bGQgYmUgYWJsZSB0byBrZWVwIHRyYWNrIG9mCisgICAgICAg
IC8vIHRoZSBoaWdoZXN0IHByaW9yaXR5IHN0aWxsIGluIHRoZSB0cmVlIGZvciBvbmUgcGFzcy4g
QnV0IGlmIHdlCisgICAgICAgIC8vIHRlcm1pbmF0ZSBhbiB1cGRhdGUgd2UgZG9uJ3Qga25vdy4K
KyAgICAgICAgLy8gdGhyb3cgbmV3IEVycm9yKCdGaWJlclJvb3RzIHNob3VsZCBub3QgaGF2ZSBm
bGFnZ2VkIG1vcmUgd29yayBpZiB0aGVyZSBpcyBub25lLicpOworICAgICAgICAvLyB9CisgICAg
ICAgIHJldHVybiBuZXh0V29yazsKKyAgICAgIH0KKyAgICB9CisgIH0KKworICBmdW5jdGlvbiBw
ZXJmb3JtVW5pdE9mV29yayh3b3JrSW5Qcm9ncmVzcykgeworICAgIC8vIFRoZSBjdXJyZW50LCBm
bHVzaGVkLCBzdGF0ZSBvZiB0aGlzIGZpYmVyIGlzIHRoZSBhbHRlcm5hdGUuCisgICAgLy8gSWRl
YWxseSBub3RoaW5nIHNob3VsZCByZWx5IG9uIHRoaXMsIGJ1dCByZWx5aW5nIG9uIGl0IGhlcmUK
KyAgICAvLyBtZWFucyB0aGF0IHdlIGRvbid0IG5lZWQgYW4gYWRkaXRpb25hbCBmaWVsZCBvbiB0
aGUgd29yayBpbgorICAgIC8vIHByb2dyZXNzLgorICAgIHZhciBjdXJyZW50ID0gd29ya0luUHJv
Z3Jlc3MuYWx0ZXJuYXRlOworICAgIHZhciBuZXh0ID0gYmVnaW5Xb3JrKGN1cnJlbnQsIHdvcmtJ
blByb2dyZXNzLCBuZXh0UHJpb3JpdHlMZXZlbCk7CisKKyAgICBpZiAobmV4dCkgeworICAgICAg
Ly8gSWYgdGhpcyBzcGF3bnMgbmV3IHdvcmssIGRvIHRoYXQgbmV4dC4KKyAgICAgIHJldHVybiBu
ZXh0OworICAgIH0gZWxzZSB7CisgICAgICAvLyBPdGhlcndpc2UsIGNvbXBsZXRlIHRoZSBjdXJy
ZW50IHdvcmsuCisgICAgICByZXR1cm4gY29tcGxldGVVbml0T2ZXb3JrKHdvcmtJblByb2dyZXNz
KTsKKyAgICB9CisgIH0KKworICBmdW5jdGlvbiBwZXJmb3JtRGVmZXJyZWRXb3JrKGRlYWRsaW5l
KSB7CisgICAgaWYgKCFuZXh0VW5pdE9mV29yaykgeworICAgICAgbmV4dFVuaXRPZldvcmsgPSBm
aW5kTmV4dFVuaXRPZldvcmsoKTsKKyAgICB9CisgICAgd2hpbGUgKG5leHRVbml0T2ZXb3JrKSB7
CisgICAgICBpZiAoZGVhZGxpbmUudGltZVJlbWFpbmluZygpID4gdGltZUhldXJpc3RpY0ZvclVu
aXRPZldvcmspIHsKKyAgICAgICAgbmV4dFVuaXRPZldvcmsgPSBwZXJmb3JtVW5pdE9mV29yayhu
ZXh0VW5pdE9mV29yayk7CisgICAgICAgIGlmICghbmV4dFVuaXRPZldvcmspIHsKKyAgICAgICAg
ICAvLyBGaW5kIG1vcmUgd29yay4gV2UgbWlnaHQgaGF2ZSB0aW1lIHRvIGNvbXBsZXRlIHNvbWUg
bW9yZS4KKyAgICAgICAgICBuZXh0VW5pdE9mV29yayA9IGZpbmROZXh0VW5pdE9mV29yaygpOwor
ICAgICAgICB9CisgICAgICB9IGVsc2UgeworICAgICAgICBzY2hlZHVsZURlZmVycmVkQ2FsbGJh
Y2socGVyZm9ybURlZmVycmVkV29yayk7CisgICAgICAgIHJldHVybjsKKyAgICAgIH0KKyAgICB9
CisgIH0KKworICBmdW5jdGlvbiBzY2hlZHVsZURlZmVycmVkV29yayhyb290LCBwcmlvcml0eSkg
eworICAgIC8vIFdlIG11c3QgcmVzZXQgdGhlIGN1cnJlbnQgdW5pdCBvZiB3b3JrIHBvaW50ZXIg
c28gdGhhdCB3ZSByZXN0YXJ0IHRoZQorICAgIC8vIHNlYXJjaCBmcm9tIHRoZSByb290IGR1cmlu
ZyB0aGUgbmV4dCB0aWNrLCBpbiBjYXNlIHRoZXJlIGlzIG5vdyBoaWdoZXIKKyAgICAvLyBwcmlv
cml0eSB3b3JrIHNvbWV3aGVyZSBlYXJsaWVyIHRoYW4gYmVmb3JlLgorICAgIGlmIChwcmlvcml0
eSA8PSBuZXh0UHJpb3JpdHlMZXZlbCkgeworICAgICAgbmV4dFVuaXRPZldvcmsgPSBudWxsOwor
ICAgIH0KKworICAgIC8vIFNldCB0aGUgcHJpb3JpdHkgb24gdGhlIHJvb3QsIHdpdGhvdXQgZGVw
cmlvcml0aXppbmcKKyAgICBpZiAocm9vdC5jdXJyZW50LnBlbmRpbmdXb3JrUHJpb3JpdHkgPT09
IE5vV29yayB8fCBwcmlvcml0eSA8PSByb290LmN1cnJlbnQucGVuZGluZ1dvcmtQcmlvcml0eSkg
eworICAgICAgcm9vdC5jdXJyZW50LnBlbmRpbmdXb3JrUHJpb3JpdHkgPSBwcmlvcml0eTsKKyAg
ICB9CisKKyAgICBpZiAocm9vdC5pc1NjaGVkdWxlZCkgeworICAgICAgLy8gSWYgd2UncmUgYWxy
ZWFkeSBzY2hlZHVsZWQsIHdlIGNhbiBiYWlsIG91dC4KKyAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgcm9vdC5pc1NjaGVkdWxlZCA9IHRydWU7CisgICAgaWYgKGxhc3RTY2hlZHVsZWRSb290KSB7
CisgICAgICAvLyBTY2hlZHVsZSBvdXJzZWx2ZXMgdG8gdGhlIGVuZC4KKyAgICAgIGxhc3RTY2hl
ZHVsZWRSb290Lm5leHRTY2hlZHVsZWRSb290ID0gcm9vdDsKKyAgICAgIGxhc3RTY2hlZHVsZWRS
b290ID0gcm9vdDsKKyAgICB9IGVsc2UgeworICAgICAgLy8gV2UncmUgdGhlIG9ubHkgd29yayBz
Y2hlZHVsZWQuCisgICAgICBuZXh0U2NoZWR1bGVkUm9vdCA9IHJvb3Q7CisgICAgICBsYXN0U2No
ZWR1bGVkUm9vdCA9IHJvb3Q7CisgICAgICBzY2hlZHVsZURlZmVycmVkQ2FsbGJhY2socGVyZm9y
bURlZmVycmVkV29yayk7CisgICAgfQorICB9CisKKyAgZnVuY3Rpb24gcGVyZm9ybUFuaW1hdGlv
bldvcmsoKSB7CisgICAgLy8gQWx3YXlzIHN0YXJ0IGZyb20gdGhlIHJvb3QKKyAgICBuZXh0VW5p
dE9mV29yayA9IGZpbmROZXh0VW5pdE9mV29yaygpOworICAgIHdoaWxlIChuZXh0VW5pdE9mV29y
ayAmJiBuZXh0UHJpb3JpdHlMZXZlbCAhPT0gTm9Xb3JrKSB7CisgICAgICBuZXh0VW5pdE9mV29y
ayA9IHBlcmZvcm1Vbml0T2ZXb3JrKG5leHRVbml0T2ZXb3JrKTsKKyAgICAgIGlmICghbmV4dFVu
aXRPZldvcmspIHsKKyAgICAgICAgLy8gS2VlcCBzZWFyY2hpbmcgZm9yIGFuaW1hdGlvbiB3b3Jr
IHVudGlsIHRoZXJlJ3Mgbm8gbW9yZSBsZWZ0CisgICAgICAgIG5leHRVbml0T2ZXb3JrID0gZmlu
ZE5leHRVbml0T2ZXb3JrKCk7CisgICAgICB9CisgICAgICAvLyBTdG9wIGlmIHRoZSBuZXh0IHVu
aXQgb2Ygd29yayBpcyBsb3cgcHJpb3JpdHkKKyAgICAgIGlmIChuZXh0UHJpb3JpdHlMZXZlbCA+
IEFuaW1hdGlvblByaW9yaXR5KSB7CisgICAgICAgIHNjaGVkdWxlRGVmZXJyZWRDYWxsYmFjayhw
ZXJmb3JtRGVmZXJyZWRXb3JrKTsKKyAgICAgICAgcmV0dXJuOworICAgICAgfQorICAgIH0KKyAg
fQorCisgIGZ1bmN0aW9uIHNjaGVkdWxlQW5pbWF0aW9uV29yayhyb290LCBwcmlvcml0eUxldmVs
KSB7CisgICAgLy8gU2V0IHRoZSBwcmlvcml0eSBvbiB0aGUgcm9vdCwgd2l0aG91dCBkZXByaW9y
aXRpemluZworICAgIGlmIChyb290LmN1cnJlbnQucGVuZGluZ1dvcmtQcmlvcml0eSA9PT0gTm9X
b3JrIHx8IHByaW9yaXR5TGV2ZWwgPD0gcm9vdC5jdXJyZW50LnBlbmRpbmdXb3JrUHJpb3JpdHkp
IHsKKyAgICAgIHJvb3QuY3VycmVudC5wZW5kaW5nV29ya1ByaW9yaXR5ID0gcHJpb3JpdHlMZXZl
bDsKKyAgICB9CisKKyAgICBpZiAocm9vdC5pc1NjaGVkdWxlZCkgeworICAgICAgLy8gSWYgd2Un
cmUgYWxyZWFkeSBzY2hlZHVsZWQsIHdlIGNhbiBiYWlsIG91dC4KKyAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgcm9vdC5pc1NjaGVkdWxlZCA9IHRydWU7CisgICAgaWYgKGxhc3RTY2hlZHVsZWRS
b290KSB7CisgICAgICAvLyBTY2hlZHVsZSBvdXJzZWx2ZXMgdG8gdGhlIGVuZC4KKyAgICAgIGxh
c3RTY2hlZHVsZWRSb290Lm5leHRTY2hlZHVsZWRSb290ID0gcm9vdDsKKyAgICAgIGxhc3RTY2hl
ZHVsZWRSb290ID0gcm9vdDsKKyAgICB9IGVsc2UgeworICAgICAgLy8gV2UncmUgdGhlIG9ubHkg
d29yayBzY2hlZHVsZWQuCisgICAgICBuZXh0U2NoZWR1bGVkUm9vdCA9IHJvb3Q7CisgICAgICBs
YXN0U2NoZWR1bGVkUm9vdCA9IHJvb3Q7CisgICAgICBzY2hlZHVsZUFuaW1hdGlvbkNhbGxiYWNr
KHBlcmZvcm1BbmltYXRpb25Xb3JrKTsKKyAgICB9CisgIH0KKworICBmdW5jdGlvbiBzY2hlZHVs
ZVdvcmsocm9vdCkgeworICAgIGlmIChkZWZhdWx0UHJpb3JpdHkgPT09IFN5bmNocm9ub3VzUHJp
b3JpdHkpIHsKKyAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkIHlldCcpOwor
ICAgIH0KKworICAgIGlmIChkZWZhdWx0UHJpb3JpdHkgPT09IE5vV29yaykgeworICAgICAgcmV0
dXJuOworICAgIH0KKyAgICBpZiAoZGVmYXVsdFByaW9yaXR5ID4gQW5pbWF0aW9uUHJpb3JpdHkp
IHsKKyAgICAgIHNjaGVkdWxlRGVmZXJyZWRXb3JrKHJvb3QsIGRlZmF1bHRQcmlvcml0eSk7Cisg
ICAgICByZXR1cm47CisgICAgfQorICAgIHNjaGVkdWxlQW5pbWF0aW9uV29yayhyb290LCBkZWZh
dWx0UHJpb3JpdHkpOworICB9CisKKyAgZnVuY3Rpb24gcGVyZm9ybVdpdGhQcmlvcml0eShwcmlv
cml0eUxldmVsLCBmbikgeworICAgIHZhciBwcmV2aW91c0RlZmF1bHRQcmlvcml0eSA9IGRlZmF1
bHRQcmlvcml0eTsKKyAgICBkZWZhdWx0UHJpb3JpdHkgPSBwcmlvcml0eUxldmVsOworICAgIHRy
eSB7CisgICAgICBmbigpOworICAgIH0gZmluYWxseSB7CisgICAgICBkZWZhdWx0UHJpb3JpdHkg
PSBwcmV2aW91c0RlZmF1bHRQcmlvcml0eTsKKyAgICB9CisgIH0KKworICBzY2hlZHVsZXIgPSB7
CisgICAgc2NoZWR1bGVXb3JrOiBzY2hlZHVsZVdvcmssCisgICAgc2NoZWR1bGVEZWZlcnJlZFdv
cms6IHNjaGVkdWxlRGVmZXJyZWRXb3JrLAorICAgIHBlcmZvcm1XaXRoUHJpb3JpdHk6IHBlcmZv
cm1XaXRoUHJpb3JpdHkKKyAgfTsKKyAgcmV0dXJuIHNjaGVkdWxlcjsKK307ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1
bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RGaWJlclVwZGF0ZVF1ZXVlLmpzIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
cmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RGaWJlclVwZGF0ZVF1ZXVlLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmYxMDRhNWEzNjZkMTMyZTVjYTU3YWU2ZmRhYmYzNDg0M2M3NWU1MDkKLS0t
IC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9t
L2xpYi9SZWFjdEZpYmVyVXBkYXRlUXVldWUuanMKQEAgLTAsMCArMSw3NyBAQAorLyoqCisgKiBD
b3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qt
c3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBk
aXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2Yg
cGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2Ft
ZSBkaXJlY3RvcnkuCisgKgorICogCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX2Fzc2ln
biA9IHJlcXVpcmUoJ29iamVjdC1hc3NpZ24nKTsKKworZXhwb3J0cy5jcmVhdGVVcGRhdGVRdWV1
ZSA9IGZ1bmN0aW9uIChwYXJ0aWFsU3RhdGUpIHsKKyAgdmFyIHF1ZXVlID0geworICAgIHBhcnRp
YWxTdGF0ZTogcGFydGlhbFN0YXRlLAorICAgIGNhbGxiYWNrOiBudWxsLAorICAgIGNhbGxiYWNr
V2FzQ2FsbGVkOiBmYWxzZSwKKyAgICBuZXh0OiBudWxsLAorICAgIGlzUmVwbGFjZTogZmFsc2Us
CisgICAgaXNGb3JjZWQ6IGZhbHNlLAorICAgIHRhaWw6IG51bGwKKyAgfTsKKyAgcXVldWUudGFp
bCA9IHF1ZXVlOworICByZXR1cm4gcXVldWU7Cit9OworCitleHBvcnRzLmFkZFRvUXVldWUgPSBm
dW5jdGlvbiAocXVldWUsIHBhcnRpYWxTdGF0ZSkgeworICB2YXIgbm9kZSA9IHsKKyAgICBwYXJ0
aWFsU3RhdGU6IHBhcnRpYWxTdGF0ZSwKKyAgICBjYWxsYmFjazogbnVsbCwKKyAgICBjYWxsYmFj
a1dhc0NhbGxlZDogZmFsc2UsCisgICAgbmV4dDogbnVsbAorICB9OworICBxdWV1ZS50YWlsLm5l
eHQgPSBub2RlOworICBxdWV1ZS50YWlsID0gbm9kZTsKKyAgcmV0dXJuIHF1ZXVlOworfTsKKwor
ZXhwb3J0cy5hZGRDYWxsYmFja1RvUXVldWUgPSBmdW5jdGlvbiAocXVldWUsIGNhbGxiYWNrKSB7
CisgIGlmIChxdWV1ZS50YWlsLmNhbGxiYWNrKSB7CisgICAgLy8gSWYgdGhlIHRhaWwgYWxyZWFk
eSBhcyBhIGNhbGxiYWNrLCBhZGQgYW4gZW1wdHkgbm9kZSB0byBxdWV1ZQorICAgIGV4cG9ydHMu
YWRkVG9RdWV1ZShxdWV1ZSwgbnVsbCk7CisgIH0KKyAgcXVldWUudGFpbC5jYWxsYmFjayA9IGNh
bGxiYWNrOworICByZXR1cm4gcXVldWU7Cit9OworCitleHBvcnRzLmNhbGxDYWxsYmFja3MgPSBm
dW5jdGlvbiAocXVldWUsIGNvbnRleHQpIHsKKyAgdmFyIG5vZGUgPSBxdWV1ZTsKKyAgd2hpbGUg
KG5vZGUpIHsKKyAgICBpZiAobm9kZS5jYWxsYmFjayAmJiAhbm9kZS5jYWxsYmFja1dhc0NhbGxl
ZCkgeworICAgICAgbm9kZS5jYWxsYmFja1dhc0NhbGxlZCA9IHRydWU7CisgICAgICBub2RlLmNh
bGxiYWNrLmNhbGwoY29udGV4dCk7CisgICAgfQorICAgIG5vZGUgPSBub2RlLm5leHQ7CisgIH0K
K307CisKK2V4cG9ydHMubWVyZ2VVcGRhdGVRdWV1ZSA9IGZ1bmN0aW9uIChxdWV1ZSwgcHJldlN0
YXRlLCBwcm9wcykgeworICB2YXIgbm9kZSA9IHF1ZXVlOworICB2YXIgc3RhdGUgPSBxdWV1ZS5p
c1JlcGxhY2UgPyBudWxsIDogX2Fzc2lnbih7fSwgcHJldlN0YXRlKTsKKyAgd2hpbGUgKG5vZGUp
IHsKKyAgICB2YXIgX3BhcnRpYWxTdGF0ZSA9IHZvaWQgMDsKKyAgICBpZiAodHlwZW9mIG5vZGUu
cGFydGlhbFN0YXRlID09PSAnZnVuY3Rpb24nKSB7CisgICAgICB2YXIgdXBkYXRlRm4gPSBub2Rl
LnBhcnRpYWxTdGF0ZTsKKyAgICAgIF9wYXJ0aWFsU3RhdGUgPSB1cGRhdGVGbihzdGF0ZSwgcHJv
cHMpOworICAgIH0gZWxzZSB7CisgICAgICBfcGFydGlhbFN0YXRlID0gbm9kZS5wYXJ0aWFsU3Rh
dGU7CisgICAgfQorICAgIHN0YXRlID0gX2Fzc2lnbihzdGF0ZSB8fCB7fSwgX3BhcnRpYWxTdGF0
ZSk7CisgICAgbm9kZSA9IG5vZGUubmV4dDsKKyAgfQorICByZXR1cm4gc3RhdGU7Cit9OwpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25v
ZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0SG9zdENvbXBvbmVudC5qcyBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0SG9zdENvbXBvbmVudC5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42MTQ5ZDQwYTUwNzA3OTEyZThiZjQ4YjVkYjk4MGYzMjQ2NDNkNTM0Ci0t
LSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRv
bS9saWIvUmVhY3RIb3N0Q29tcG9uZW50LmpzCkBAIC0wLDAgKzEsNzUgQEAKKy8qKgorICogQ29w
eXJpZ2h0IDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0
eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBfcHJvZEludmFyaWFu
dCA9IHJlcXVpcmUoJy4vcmVhY3RQcm9kSW52YXJpYW50JyksCisgICAgX2Fzc2lnbiA9IHJlcXVp
cmUoJ29iamVjdC1hc3NpZ24nKTsKKwordmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGli
L2ludmFyaWFudCcpOworCit2YXIgZ2VuZXJpY0NvbXBvbmVudENsYXNzID0gbnVsbDsKKy8vIFRo
aXMgcmVnaXN0cnkga2VlcHMgdHJhY2sgb2Ygd3JhcHBlciBjbGFzc2VzIGFyb3VuZCBob3N0IHRh
Z3MuCit2YXIgdGFnVG9Db21wb25lbnRDbGFzcyA9IHt9OwordmFyIHRleHRDb21wb25lbnRDbGFz
cyA9IG51bGw7CisKK3ZhciBSZWFjdEhvc3RDb21wb25lbnRJbmplY3Rpb24gPSB7CisgIC8vIFRo
aXMgYWNjZXB0cyBhIGNsYXNzIHRoYXQgcmVjZWl2ZXMgdGhlIHRhZyBzdHJpbmcuIFRoaXMgaXMg
YSBjYXRjaCBhbGwKKyAgLy8gdGhhdCBjYW4gcmVuZGVyIGFueSBraW5kIG9mIHRhZy4KKyAgaW5q
ZWN0R2VuZXJpY0NvbXBvbmVudENsYXNzOiBmdW5jdGlvbiAoY29tcG9uZW50Q2xhc3MpIHsKKyAg
ICBnZW5lcmljQ29tcG9uZW50Q2xhc3MgPSBjb21wb25lbnRDbGFzczsKKyAgfSwKKyAgLy8gVGhp
cyBhY2NlcHRzIGEgdGV4dCBjb21wb25lbnQgY2xhc3MgdGhhdCB0YWtlcyB0aGUgdGV4dCBzdHJp
bmcgdG8gYmUKKyAgLy8gcmVuZGVyZWQgYXMgcHJvcHMuCisgIGluamVjdFRleHRDb21wb25lbnRD
bGFzczogZnVuY3Rpb24gKGNvbXBvbmVudENsYXNzKSB7CisgICAgdGV4dENvbXBvbmVudENsYXNz
ID0gY29tcG9uZW50Q2xhc3M7CisgIH0sCisgIC8vIFRoaXMgYWNjZXB0cyBhIGtleWVkIG9iamVj
dCB3aXRoIGNsYXNzZXMgYXMgdmFsdWVzLiBFYWNoIGtleSByZXByZXNlbnRzIGEKKyAgLy8gdGFn
LiBUaGF0IHBhcnRpY3VsYXIgdGFnIHdpbGwgdXNlIHRoaXMgY2xhc3MgaW5zdGVhZCBvZiB0aGUg
Z2VuZXJpYyBvbmUuCisgIGluamVjdENvbXBvbmVudENsYXNzZXM6IGZ1bmN0aW9uIChjb21wb25l
bnRDbGFzc2VzKSB7CisgICAgX2Fzc2lnbih0YWdUb0NvbXBvbmVudENsYXNzLCBjb21wb25lbnRD
bGFzc2VzKTsKKyAgfQorfTsKKworLyoqCisgKiBHZXQgYSBob3N0IGludGVybmFsIGNvbXBvbmVu
dCBjbGFzcyBmb3IgYSBzcGVjaWZpYyB0YWcuCisgKgorICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9
IGVsZW1lbnQgVGhlIGVsZW1lbnQgdG8gY3JlYXRlLgorICogQHJldHVybiB7ZnVuY3Rpb259IFRo
ZSBpbnRlcm5hbCBjbGFzcyBjb25zdHJ1Y3RvciBmdW5jdGlvbi4KKyAqLworZnVuY3Rpb24gY3Jl
YXRlSW50ZXJuYWxDb21wb25lbnQoZWxlbWVudCkgeworICAhZ2VuZXJpY0NvbXBvbmVudENsYXNz
ID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxz
ZSwgJ1RoZXJlIGlzIG5vIHJlZ2lzdGVyZWQgY29tcG9uZW50IGZvciB0aGUgdGFnICVzJywgZWxl
bWVudC50eXBlKSA6IF9wcm9kSW52YXJpYW50KCcxMTEnLCBlbGVtZW50LnR5cGUpIDogdm9pZCAw
OworICByZXR1cm4gbmV3IGdlbmVyaWNDb21wb25lbnRDbGFzcyhlbGVtZW50KTsKK30KKworLyoq
CisgKiBAcGFyYW0ge1JlYWN0VGV4dH0gdGV4dAorICogQHJldHVybiB7UmVhY3RDb21wb25lbnR9
CisgKi8KK2Z1bmN0aW9uIGNyZWF0ZUluc3RhbmNlRm9yVGV4dCh0ZXh0KSB7CisgIHJldHVybiBu
ZXcgdGV4dENvbXBvbmVudENsYXNzKHRleHQpOworfQorCisvKioKKyAqIEBwYXJhbSB7UmVhY3RD
b21wb25lbnR9IGNvbXBvbmVudAorICogQHJldHVybiB7Ym9vbGVhbn0KKyAqLworZnVuY3Rpb24g
aXNUZXh0Q29tcG9uZW50KGNvbXBvbmVudCkgeworICByZXR1cm4gY29tcG9uZW50IGluc3RhbmNl
b2YgdGV4dENvbXBvbmVudENsYXNzOworfQorCit2YXIgUmVhY3RIb3N0Q29tcG9uZW50ID0gewor
ICBjcmVhdGVJbnRlcm5hbENvbXBvbmVudDogY3JlYXRlSW50ZXJuYWxDb21wb25lbnQsCisgIGNy
ZWF0ZUluc3RhbmNlRm9yVGV4dDogY3JlYXRlSW5zdGFuY2VGb3JUZXh0LAorICBpc1RleHRDb21w
b25lbnQ6IGlzVGV4dENvbXBvbmVudCwKKyAgaW5qZWN0aW9uOiBSZWFjdEhvc3RDb21wb25lbnRJ
bmplY3Rpb24KK307CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RIb3N0Q29tcG9uZW50OwpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25v
ZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0SG9zdE9wZXJhdGlvbkhpc3RvcnlIb29rLmpz
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RIb3N0
T3BlcmF0aW9uSGlzdG9yeUhvb2suanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjdkM2Y5MzQwMmM4MDk2NmFjZmQy
ZjUwYjY1MWVhNTg5ZGNhNjU4MwotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0
L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0SG9zdE9wZXJhdGlvbkhpc3RvcnlIb29r
LmpzCkBAIC0wLDAgKzEsMzMgQEAKKy8qKgorICogQ29weXJpZ2h0IDIwMTYtcHJlc2VudCwgRmFj
ZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2Ug
Y29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhl
CisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIAorICov
CisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIGhpc3RvcnkgPSBbXTsKKwordmFyIFJlYWN0SG9zdE9w
ZXJhdGlvbkhpc3RvcnlIb29rID0geworICBvbkhvc3RPcGVyYXRpb246IGZ1bmN0aW9uIChvcGVy
YXRpb24pIHsKKyAgICBoaXN0b3J5LnB1c2gob3BlcmF0aW9uKTsKKyAgfSwKKyAgY2xlYXJIaXN0
b3J5OiBmdW5jdGlvbiAoKSB7CisgICAgaWYgKFJlYWN0SG9zdE9wZXJhdGlvbkhpc3RvcnlIb29r
Ll9wcmV2ZW50Q2xlYXJpbmcpIHsKKyAgICAgIC8vIFNob3VsZCBvbmx5IGJlIHVzZWQgZm9yIHRl
c3RzLgorICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGhpc3RvcnkgPSBbXTsKKyAgfSwKKyAg
Z2V0SGlzdG9yeTogZnVuY3Rpb24gKCkgeworICAgIHJldHVybiBoaXN0b3J5OworICB9Cit9Owor
Cittb2R1bGUuZXhwb3J0cyA9IFJlYWN0SG9zdE9wZXJhdGlvbkhpc3RvcnlIb29rOwpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVf
bW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0SW5qZWN0aW9uLmpzIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVh
Y3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RJbmplY3Rpb24uanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmEyYmJkMTBhMjdkYzEyNGYxNTkxMjUzMzVkNzJkMjQ4OTQwMzBjOQotLS0gL2Rldi9udWxs
CisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0
SW5qZWN0aW9uLmpzCkBAIC0wLDAgKzEsMzMgQEAKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJl
c2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhp
cyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91
bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMg
c291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2Fu
IGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoK
KyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBET01Qcm9wZXJ0eSA9IHJlcXVpcmUoJy4vRE9N
UHJvcGVydHknKTsKK3ZhciBFdmVudFBsdWdpbkh1YiA9IHJlcXVpcmUoJy4vRXZlbnRQbHVnaW5I
dWInKTsKK3ZhciBFdmVudFBsdWdpblV0aWxzID0gcmVxdWlyZSgnLi9FdmVudFBsdWdpblV0aWxz
Jyk7Cit2YXIgUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudCA9IHJlcXVpcmUoJy4vUmVhY3RDb21w
b25lbnRFbnZpcm9ubWVudCcpOwordmFyIFJlYWN0RW1wdHlDb21wb25lbnQgPSByZXF1aXJlKCcu
L1JlYWN0RW1wdHlDb21wb25lbnQnKTsKK3ZhciBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIgPSBy
ZXF1aXJlKCcuL1JlYWN0QnJvd3NlckV2ZW50RW1pdHRlcicpOwordmFyIFJlYWN0SG9zdENvbXBv
bmVudCA9IHJlcXVpcmUoJy4vUmVhY3RIb3N0Q29tcG9uZW50Jyk7Cit2YXIgUmVhY3RVcGRhdGVz
ID0gcmVxdWlyZSgnLi9SZWFjdFVwZGF0ZXMnKTsKKwordmFyIFJlYWN0SW5qZWN0aW9uID0gewor
ICBDb21wb25lbnQ6IFJlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQuaW5qZWN0aW9uLAorICBET01Q
cm9wZXJ0eTogRE9NUHJvcGVydHkuaW5qZWN0aW9uLAorICBFbXB0eUNvbXBvbmVudDogUmVhY3RF
bXB0eUNvbXBvbmVudC5pbmplY3Rpb24sCisgIEV2ZW50UGx1Z2luSHViOiBFdmVudFBsdWdpbkh1
Yi5pbmplY3Rpb24sCisgIEV2ZW50UGx1Z2luVXRpbHM6IEV2ZW50UGx1Z2luVXRpbHMuaW5qZWN0
aW9uLAorICBFdmVudEVtaXR0ZXI6IFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5pbmplY3Rpb24s
CisgIEhvc3RDb21wb25lbnQ6IFJlYWN0SG9zdENvbXBvbmVudC5pbmplY3Rpb24sCisgIFVwZGF0
ZXM6IFJlYWN0VXBkYXRlcy5pbmplY3Rpb24KK307CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RJ
bmplY3Rpb247ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RJbnB1dFNlbGVjdGlv
bi5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0
SW5wdXRTZWxlY3Rpb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTEzMDg2NDZmNjYwMmJmY2YyZDY0MmMyNWJi
MGYwOGJiODcxZTkzNAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVf
bW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0SW5wdXRTZWxlY3Rpb24uanMKQEAgLTAsMCArMSwx
MjMgQEAKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisK
K3ZhciBSZWFjdERPTVNlbGVjdGlvbiA9IHJlcXVpcmUoJy4vUmVhY3RET01TZWxlY3Rpb24nKTsK
KwordmFyIGNvbnRhaW5zTm9kZSA9IHJlcXVpcmUoJ2ZianMvbGliL2NvbnRhaW5zTm9kZScpOwor
dmFyIGZvY3VzTm9kZSA9IHJlcXVpcmUoJ2ZianMvbGliL2ZvY3VzTm9kZScpOwordmFyIGdldEFj
dGl2ZUVsZW1lbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9nZXRBY3RpdmVFbGVtZW50Jyk7CisKK2Z1
bmN0aW9uIGlzSW5Eb2N1bWVudChub2RlKSB7CisgIHJldHVybiBjb250YWluc05vZGUoZG9jdW1l
bnQuZG9jdW1lbnRFbGVtZW50LCBub2RlKTsKK30KKworLyoqCisgKiBAUmVhY3RJbnB1dFNlbGVj
dGlvbjogUmVhY3QgaW5wdXQgc2VsZWN0aW9uIG1vZHVsZS4gQmFzZWQgb24gU2VsZWN0aW9uLmpz
LAorICogYnV0IG1vZGlmaWVkIHRvIGJlIHN1aXRhYmxlIGZvciByZWFjdCBhbmQgaGFzIGEgY291
cGxlIG9mIGJ1ZyBmaXhlcyAoZG9lc24ndAorICogYXNzdW1lIGJ1dHRvbnMgaGF2ZSByYW5nZSBz
ZWxlY3Rpb25zIGFsbG93ZWQpLgorICogSW5wdXQgc2VsZWN0aW9uIG1vZHVsZSBmb3IgUmVhY3Qu
CisgKi8KK3ZhciBSZWFjdElucHV0U2VsZWN0aW9uID0geworCisgIGhhc1NlbGVjdGlvbkNhcGFi
aWxpdGllczogZnVuY3Rpb24gKGVsZW0pIHsKKyAgICB2YXIgbm9kZU5hbWUgPSBlbGVtICYmIGVs
ZW0ubm9kZU5hbWUgJiYgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOworICAgIHJldHVybiBu
b2RlTmFtZSAmJiAobm9kZU5hbWUgPT09ICdpbnB1dCcgJiYgZWxlbS50eXBlID09PSAndGV4dCcg
fHwgbm9kZU5hbWUgPT09ICd0ZXh0YXJlYScgfHwgZWxlbS5jb250ZW50RWRpdGFibGUgPT09ICd0
cnVlJyk7CisgIH0sCisKKyAgZ2V0U2VsZWN0aW9uSW5mb3JtYXRpb246IGZ1bmN0aW9uICgpIHsK
KyAgICB2YXIgZm9jdXNlZEVsZW0gPSBnZXRBY3RpdmVFbGVtZW50KCk7CisgICAgcmV0dXJuIHsK
KyAgICAgIGZvY3VzZWRFbGVtOiBmb2N1c2VkRWxlbSwKKyAgICAgIHNlbGVjdGlvblJhbmdlOiBS
ZWFjdElucHV0U2VsZWN0aW9uLmhhc1NlbGVjdGlvbkNhcGFiaWxpdGllcyhmb2N1c2VkRWxlbSkg
PyBSZWFjdElucHV0U2VsZWN0aW9uLmdldFNlbGVjdGlvbihmb2N1c2VkRWxlbSkgOiBudWxsCisg
ICAgfTsKKyAgfSwKKworICAvKioKKyAgICogQHJlc3RvcmVTZWxlY3Rpb246IElmIGFueSBzZWxl
Y3Rpb24gaW5mb3JtYXRpb24gd2FzIHBvdGVudGlhbGx5IGxvc3QsCisgICAqIHJlc3RvcmUgaXQu
IFRoaXMgaXMgdXNlZnVsIHdoZW4gcGVyZm9ybWluZyBvcGVyYXRpb25zIHRoYXQgY291bGQgcmVt
b3ZlIGRvbQorICAgKiBub2RlcyBhbmQgcGxhY2UgdGhlbSBiYWNrIGluLCByZXN1bHRpbmcgaW4g
Zm9jdXMgYmVpbmcgbG9zdC4KKyAgICovCisgIHJlc3RvcmVTZWxlY3Rpb246IGZ1bmN0aW9uIChw
cmlvclNlbGVjdGlvbkluZm9ybWF0aW9uKSB7CisgICAgdmFyIGN1ckZvY3VzZWRFbGVtID0gZ2V0
QWN0aXZlRWxlbWVudCgpOworICAgIHZhciBwcmlvckZvY3VzZWRFbGVtID0gcHJpb3JTZWxlY3Rp
b25JbmZvcm1hdGlvbi5mb2N1c2VkRWxlbTsKKyAgICB2YXIgcHJpb3JTZWxlY3Rpb25SYW5nZSA9
IHByaW9yU2VsZWN0aW9uSW5mb3JtYXRpb24uc2VsZWN0aW9uUmFuZ2U7CisgICAgaWYgKGN1ckZv
Y3VzZWRFbGVtICE9PSBwcmlvckZvY3VzZWRFbGVtICYmIGlzSW5Eb2N1bWVudChwcmlvckZvY3Vz
ZWRFbGVtKSkgeworICAgICAgaWYgKFJlYWN0SW5wdXRTZWxlY3Rpb24uaGFzU2VsZWN0aW9uQ2Fw
YWJpbGl0aWVzKHByaW9yRm9jdXNlZEVsZW0pKSB7CisgICAgICAgIFJlYWN0SW5wdXRTZWxlY3Rp
b24uc2V0U2VsZWN0aW9uKHByaW9yRm9jdXNlZEVsZW0sIHByaW9yU2VsZWN0aW9uUmFuZ2UpOwor
ICAgICAgfQorICAgICAgZm9jdXNOb2RlKHByaW9yRm9jdXNlZEVsZW0pOworICAgIH0KKyAgfSwK
KworICAvKioKKyAgICogQGdldFNlbGVjdGlvbjogR2V0cyB0aGUgc2VsZWN0aW9uIGJvdW5kcyBv
ZiBhIGZvY3VzZWQgdGV4dGFyZWEsIGlucHV0IG9yCisgICAqIGNvbnRlbnRFZGl0YWJsZSBub2Rl
LgorICAgKiAtQGlucHV0OiBMb29rIHVwIHNlbGVjdGlvbiBib3VuZHMgb2YgdGhpcyBpbnB1dAor
ICAgKiAtQHJldHVybiB7c3RhcnQ6IHNlbGVjdGlvblN0YXJ0LCBlbmQ6IHNlbGVjdGlvbkVuZH0K
KyAgICovCisgIGdldFNlbGVjdGlvbjogZnVuY3Rpb24gKGlucHV0KSB7CisgICAgdmFyIHNlbGVj
dGlvbjsKKworICAgIGlmICgnc2VsZWN0aW9uU3RhcnQnIGluIGlucHV0KSB7CisgICAgICAvLyBN
b2Rlcm4gYnJvd3NlciB3aXRoIGlucHV0IG9yIHRleHRhcmVhLgorICAgICAgc2VsZWN0aW9uID0g
eworICAgICAgICBzdGFydDogaW5wdXQuc2VsZWN0aW9uU3RhcnQsCisgICAgICAgIGVuZDogaW5w
dXQuc2VsZWN0aW9uRW5kCisgICAgICB9OworICAgIH0gZWxzZSBpZiAoZG9jdW1lbnQuc2VsZWN0
aW9uICYmIGlucHV0Lm5vZGVOYW1lICYmIGlucHV0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09
ICdpbnB1dCcpIHsKKyAgICAgIC8vIElFOCBpbnB1dC4KKyAgICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LnNlbGVjdGlvbi5jcmVhdGVSYW5nZSgpOworICAgICAgLy8gVGhlcmUgY2FuIG9ubHkgYmUg
b25lIHNlbGVjdGlvbiBwZXIgZG9jdW1lbnQgaW4gSUUsIHNvIGl0IG11c3QKKyAgICAgIC8vIGJl
IGluIG91ciBlbGVtZW50LgorICAgICAgaWYgKHJhbmdlLnBhcmVudEVsZW1lbnQoKSA9PT0gaW5w
dXQpIHsKKyAgICAgICAgc2VsZWN0aW9uID0geworICAgICAgICAgIHN0YXJ0OiAtcmFuZ2UubW92
ZVN0YXJ0KCdjaGFyYWN0ZXInLCAtaW5wdXQudmFsdWUubGVuZ3RoKSwKKyAgICAgICAgICBlbmQ6
IC1yYW5nZS5tb3ZlRW5kKCdjaGFyYWN0ZXInLCAtaW5wdXQudmFsdWUubGVuZ3RoKQorICAgICAg
ICB9OworICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAvLyBDb250ZW50IGVkaXRhYmxlIG9y
IG9sZCBJRSB0ZXh0YXJlYS4KKyAgICAgIHNlbGVjdGlvbiA9IFJlYWN0RE9NU2VsZWN0aW9uLmdl
dE9mZnNldHMoaW5wdXQpOworICAgIH0KKworICAgIHJldHVybiBzZWxlY3Rpb24gfHwgeyBzdGFy
dDogMCwgZW5kOiAwIH07CisgIH0sCisKKyAgLyoqCisgICAqIEBzZXRTZWxlY3Rpb246IFNldHMg
dGhlIHNlbGVjdGlvbiBib3VuZHMgb2YgYSB0ZXh0YXJlYSBvciBpbnB1dCBhbmQgZm9jdXNlcwor
ICAgKiB0aGUgaW5wdXQuCisgICAqIC1AaW5wdXQgICAgIFNldCBzZWxlY3Rpb24gYm91bmRzIG9m
IHRoaXMgaW5wdXQgb3IgdGV4dGFyZWEKKyAgICogLUBvZmZzZXRzICAgT2JqZWN0IG9mIHNhbWUg
Zm9ybSB0aGF0IGlzIHJldHVybmVkIGZyb20gZ2V0KgorICAgKi8KKyAgc2V0U2VsZWN0aW9uOiBm
dW5jdGlvbiAoaW5wdXQsIG9mZnNldHMpIHsKKyAgICB2YXIgc3RhcnQgPSBvZmZzZXRzLnN0YXJ0
OworICAgIHZhciBlbmQgPSBvZmZzZXRzLmVuZDsKKyAgICBpZiAoZW5kID09PSB1bmRlZmluZWQp
IHsKKyAgICAgIGVuZCA9IHN0YXJ0OworICAgIH0KKworICAgIGlmICgnc2VsZWN0aW9uU3RhcnQn
IGluIGlucHV0KSB7CisgICAgICBpbnB1dC5zZWxlY3Rpb25TdGFydCA9IHN0YXJ0OworICAgICAg
aW5wdXQuc2VsZWN0aW9uRW5kID0gTWF0aC5taW4oZW5kLCBpbnB1dC52YWx1ZS5sZW5ndGgpOwor
ICAgIH0gZWxzZSBpZiAoZG9jdW1lbnQuc2VsZWN0aW9uICYmIGlucHV0Lm5vZGVOYW1lICYmIGlu
cHV0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdpbnB1dCcpIHsKKyAgICAgIHZhciByYW5n
ZSA9IGlucHV0LmNyZWF0ZVRleHRSYW5nZSgpOworICAgICAgcmFuZ2UuY29sbGFwc2UodHJ1ZSk7
CisgICAgICByYW5nZS5tb3ZlU3RhcnQoJ2NoYXJhY3RlcicsIHN0YXJ0KTsKKyAgICAgIHJhbmdl
Lm1vdmVFbmQoJ2NoYXJhY3RlcicsIGVuZCAtIHN0YXJ0KTsKKyAgICAgIHJhbmdlLnNlbGVjdCgp
OworICAgIH0gZWxzZSB7CisgICAgICBSZWFjdERPTVNlbGVjdGlvbi5zZXRPZmZzZXRzKGlucHV0
LCBvZmZzZXRzKTsKKyAgICB9CisgIH0KK307CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RJbnB1
dFNlbGVjdGlvbjsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdEluc3RhbmNlTWFw
LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RJ
bnN0YW5jZU1hcC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MzAzYmI1MWUzNjhhNTRlN2U0YzI5YzJlYzQ4MzNh
MThmZGNlYzJjCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1
bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RJbnN0YW5jZU1hcC5qcwpAQCAtMCwwICsxLDQ3IEBACisv
KioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCisvKioKKyAq
IGBSZWFjdEluc3RhbmNlTWFwYCBtYWludGFpbnMgYSBtYXBwaW5nIGZyb20gYSBwdWJsaWMgZmFj
aW5nIHN0YXRlZnVsCisgKiBpbnN0YW5jZSAoa2V5KSBhbmQgdGhlIGludGVybmFsIHJlcHJlc2Vu
dGF0aW9uICh2YWx1ZSkuIFRoaXMgYWxsb3dzIHB1YmxpYworICogbWV0aG9kcyB0byBhY2NlcHQg
dGhlIHVzZXIgZmFjaW5nIGluc3RhbmNlIGFzIGFuIGFyZ3VtZW50IGFuZCBtYXAgdGhlbSBiYWNr
CisgKiB0byBpbnRlcm5hbCBtZXRob2RzLgorICovCisKKy8vIFRPRE86IFJlcGxhY2UgdGhpcyB3
aXRoIEVTNjogdmFyIFJlYWN0SW5zdGFuY2VNYXAgPSBuZXcgTWFwKCk7CisKK3ZhciBSZWFjdElu
c3RhbmNlTWFwID0geworCisgIC8qKgorICAgKiBUaGlzIEFQSSBzaG91bGQgYmUgY2FsbGVkIGBk
ZWxldGVgIGJ1dCB3ZSdkIGhhdmUgdG8gbWFrZSBzdXJlIHRvIGFsd2F5cworICAgKiB0cmFuc2Zv
cm0gdGhlc2UgdG8gc3RyaW5ncyBmb3IgSUUgc3VwcG9ydC4gV2hlbiB0aGlzIHRyYW5zZm9ybSBp
cyBmdWxseQorICAgKiBzdXBwb3J0ZWQgd2UgY2FuIHJlbmFtZSBpdC4KKyAgICovCisgIHJlbW92
ZTogZnVuY3Rpb24gKGtleSkgeworICAgIGtleS5fcmVhY3RJbnRlcm5hbEluc3RhbmNlID0gdW5k
ZWZpbmVkOworICB9LAorCisgIGdldDogZnVuY3Rpb24gKGtleSkgeworICAgIHJldHVybiBrZXku
X3JlYWN0SW50ZXJuYWxJbnN0YW5jZTsKKyAgfSwKKworICBoYXM6IGZ1bmN0aW9uIChrZXkpIHsK
KyAgICByZXR1cm4ga2V5Ll9yZWFjdEludGVybmFsSW5zdGFuY2UgIT09IHVuZGVmaW5lZDsKKyAg
fSwKKworICBzZXQ6IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7CisgICAga2V5Ll9yZWFjdEludGVy
bmFsSW5zdGFuY2UgPSB2YWx1ZTsKKyAgfQorCit9OworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0
SW5zdGFuY2VNYXA7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RJbnN0YW5jZVR5
cGUuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFj
dEluc3RhbmNlVHlwZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYjJlN2JiYzk4ZDA5OTY3MjE5MzdjMjliYTZh
Yjg2YTE1OGExZDZhCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9t
b2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RJbnN0YW5jZVR5cGUuanMKQEAgLTAsMCArMSwxMiBA
QAorLyoqCisgKiBDb3B5cmlnaHQgMjAxNi1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBn
cmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmls
ZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogCisgKi8KKworJ3VzZSBzdHJpY3QnOwpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0
L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0SW5zdHJ1bWVudGF0aW9uLmpzIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RJbnN0cnVtZW50
YXRpb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNjMyYTI2M2EzNmYzM2FkNjk3YzNjNjliODVmYTQ4Nzg5Mzhj
NTNhMQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9y
ZWFjdC1kb20vbGliL1JlYWN0SW5zdHJ1bWVudGF0aW9uLmpzCkBAIC0wLDAgKzEsMjMgQEAKKy8q
KgorICogQ29weXJpZ2h0IDIwMTYtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQK
KyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIAorICovCisKKyd1c2Ugc3RyaWN0JzsKKworLy8g
VHJ1c3QgdGhlIGRldmVsb3BlciB0byBvbmx5IHVzZSBSZWFjdEluc3RydW1lbnRhdGlvbiB3aXRo
IGEgX19ERVZfXyBjaGVjaworCit2YXIgZGVidWdUb29sID0gbnVsbDsKKworaWYgKHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHsKKyAgdmFyIFJlYWN0RGVidWdUb29sID0g
cmVxdWlyZSgnLi9SZWFjdERlYnVnVG9vbCcpOworICBkZWJ1Z1Rvb2wgPSBSZWFjdERlYnVnVG9v
bDsKK30KKworbW9kdWxlLmV4cG9ydHMgPSB7IGRlYnVnVG9vbDogZGVidWdUb29sIH07ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9k
ZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RJbnZhbGlkU2V0U3RhdGVXYXJuaW5nSG9vay5q
cyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0SW52
YWxpZFNldFN0YXRlV2FybmluZ0hvb2suanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWIxN2EzOGNlYjE5NzhkMzY3
YmQwZGMyNzVmZmQ1ODBlZjMyZDZjZQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Jl
YWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0SW52YWxpZFNldFN0YXRlV2Fybmlu
Z0hvb2suanMKQEAgLTAsMCArMSwzNiBAQAorLyoqCisgKiBDb3B5cmlnaHQgMjAxNi1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICog
CisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGli
L3dhcm5pbmcnKTsKKworaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicp
IHsKKyAgdmFyIHByb2Nlc3NpbmdDaGlsZENvbnRleHQgPSBmYWxzZTsKKworICB2YXIgd2Fybklu
dmFsaWRTZXRTdGF0ZSA9IGZ1bmN0aW9uICgpIHsKKyAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAh
PT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyghcHJvY2Vzc2luZ0NoaWxkQ29udGV4dCwgJ3NldFN0
YXRlKC4uLik6IENhbm5vdCBjYWxsIHNldFN0YXRlKCkgaW5zaWRlIGdldENoaWxkQ29udGV4dCgp
JykgOiB2b2lkIDA7CisgIH07Cit9CisKK3ZhciBSZWFjdEludmFsaWRTZXRTdGF0ZVdhcm5pbmdI
b29rID0geworICBvbkJlZ2luUHJvY2Vzc2luZ0NoaWxkQ29udGV4dDogZnVuY3Rpb24gKCkgewor
ICAgIHByb2Nlc3NpbmdDaGlsZENvbnRleHQgPSB0cnVlOworICB9LAorICBvbkVuZFByb2Nlc3Np
bmdDaGlsZENvbnRleHQ6IGZ1bmN0aW9uICgpIHsKKyAgICBwcm9jZXNzaW5nQ2hpbGRDb250ZXh0
ID0gZmFsc2U7CisgIH0sCisgIG9uU2V0U3RhdGU6IGZ1bmN0aW9uICgpIHsKKyAgICB3YXJuSW52
YWxpZFNldFN0YXRlKCk7CisgIH0KK307CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RJbnZhbGlk
U2V0U3RhdGVXYXJuaW5nSG9vazsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdE1h
cmt1cENoZWNrc3VtLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRv
bS9saWIvUmVhY3RNYXJrdXBDaGVja3N1bS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZGE0OTViZGZhODNkYmNm
MzgzNjExMGZhOTk5NTJkNDdjMjVjMzg2Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
cmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RNYXJrdXBDaGVja3N1bS5qcwpA
QCAtMCwwICsxLDQ5IEBACisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29r
LCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUg
aXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICog
TElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBB
biBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0
aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBz
dHJpY3QnOworCit2YXIgYWRsZXIzMiA9IHJlcXVpcmUoJy4vYWRsZXIzMicpOworCit2YXIgVEFH
X0VORCA9IC9cLz8+LzsKK3ZhciBDT01NRU5UX1NUQVJUID0gL148XCFcLVwtLzsKKwordmFyIFJl
YWN0TWFya3VwQ2hlY2tzdW0gPSB7CisgIENIRUNLU1VNX0FUVFJfTkFNRTogJ2RhdGEtcmVhY3Qt
Y2hlY2tzdW0nLAorCisgIC8qKgorICAgKiBAcGFyYW0ge3N0cmluZ30gbWFya3VwIE1hcmt1cCBz
dHJpbmcKKyAgICogQHJldHVybiB7c3RyaW5nfSBNYXJrdXAgc3RyaW5nIHdpdGggY2hlY2tzdW0g
YXR0cmlidXRlIGF0dGFjaGVkCisgICAqLworICBhZGRDaGVja3N1bVRvTWFya3VwOiBmdW5jdGlv
biAobWFya3VwKSB7CisgICAgdmFyIGNoZWNrc3VtID0gYWRsZXIzMihtYXJrdXApOworCisgICAg
Ly8gQWRkIGNoZWNrc3VtIChoYW5kbGUgYm90aCBwYXJlbnQgdGFncywgY29tbWVudHMgYW5kIHNl
bGYtY2xvc2luZyB0YWdzKQorICAgIGlmIChDT01NRU5UX1NUQVJULnRlc3QobWFya3VwKSkgewor
ICAgICAgcmV0dXJuIG1hcmt1cDsKKyAgICB9IGVsc2UgeworICAgICAgcmV0dXJuIG1hcmt1cC5y
ZXBsYWNlKFRBR19FTkQsICcgJyArIFJlYWN0TWFya3VwQ2hlY2tzdW0uQ0hFQ0tTVU1fQVRUUl9O
QU1FICsgJz0iJyArIGNoZWNrc3VtICsgJyIkJicpOworICAgIH0KKyAgfSwKKworICAvKioKKyAg
ICogQHBhcmFtIHtzdHJpbmd9IG1hcmt1cCB0byB1c2UKKyAgICogQHBhcmFtIHtET01FbGVtZW50
fSBlbGVtZW50IHJvb3QgUmVhY3QgZWxlbWVudAorICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gd2hl
dGhlciBvciBub3QgdGhlIG1hcmt1cCBpcyB0aGUgc2FtZQorICAgKi8KKyAgY2FuUmV1c2VNYXJr
dXA6IGZ1bmN0aW9uIChtYXJrdXAsIGVsZW1lbnQpIHsKKyAgICB2YXIgZXhpc3RpbmdDaGVja3N1
bSA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKFJlYWN0TWFya3VwQ2hlY2tzdW0uQ0hFQ0tTVU1fQVRU
Ul9OQU1FKTsKKyAgICBleGlzdGluZ0NoZWNrc3VtID0gZXhpc3RpbmdDaGVja3N1bSAmJiBwYXJz
ZUludChleGlzdGluZ0NoZWNrc3VtLCAxMCk7CisgICAgdmFyIG1hcmt1cENoZWNrc3VtID0gYWRs
ZXIzMihtYXJrdXApOworICAgIHJldHVybiBtYXJrdXBDaGVja3N1bSA9PT0gZXhpc3RpbmdDaGVj
a3N1bTsKKyAgfQorfTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdE1hcmt1cENoZWNrc3VtOwpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0
L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0TW91bnQuanMgYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9y
ZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdE1vdW50LmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmJiN2Q1YmY4MWE4NjQwMjIxYmVjOTQ4NGU5YTdmMGM0ZDA4NjkwMjgKLS0tIC9kZXYvbnVsbAor
KysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdE1v
dW50LmpzCkBAIC0wLDAgKzEsNTM3IEBACisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQs
IEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291
cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGlu
IHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJj
ZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBm
b3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8K
KworJ3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0
UHJvZEludmFyaWFudCcpOworCit2YXIgRE9NTGF6eVRyZWUgPSByZXF1aXJlKCcuL0RPTUxhenlU
cmVlJyk7Cit2YXIgRE9NUHJvcGVydHkgPSByZXF1aXJlKCcuL0RPTVByb3BlcnR5Jyk7Cit2YXIg
UmVhY3QgPSByZXF1aXJlKCdyZWFjdC9saWIvUmVhY3QnKTsKK3ZhciBSZWFjdEJyb3dzZXJFdmVu
dEVtaXR0ZXIgPSByZXF1aXJlKCcuL1JlYWN0QnJvd3NlckV2ZW50RW1pdHRlcicpOwordmFyIFJl
YWN0Q3VycmVudE93bmVyID0gcmVxdWlyZSgncmVhY3QvbGliL1JlYWN0Q3VycmVudE93bmVyJyk7
Cit2YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gcmVxdWlyZSgnLi9SZWFjdERPTUNvbXBvbmVu
dFRyZWUnKTsKK3ZhciBSZWFjdERPTUNvbnRhaW5lckluZm8gPSByZXF1aXJlKCcuL1JlYWN0RE9N
Q29udGFpbmVySW5mbycpOwordmFyIFJlYWN0RE9NRmVhdHVyZUZsYWdzID0gcmVxdWlyZSgnLi9S
ZWFjdERPTUZlYXR1cmVGbGFncycpOwordmFyIFJlYWN0RmVhdHVyZUZsYWdzID0gcmVxdWlyZSgn
Li9SZWFjdEZlYXR1cmVGbGFncycpOwordmFyIFJlYWN0SW5zdGFuY2VNYXAgPSByZXF1aXJlKCcu
L1JlYWN0SW5zdGFuY2VNYXAnKTsKK3ZhciBSZWFjdEluc3RydW1lbnRhdGlvbiA9IHJlcXVpcmUo
Jy4vUmVhY3RJbnN0cnVtZW50YXRpb24nKTsKK3ZhciBSZWFjdE1hcmt1cENoZWNrc3VtID0gcmVx
dWlyZSgnLi9SZWFjdE1hcmt1cENoZWNrc3VtJyk7Cit2YXIgUmVhY3RSZWNvbmNpbGVyID0gcmVx
dWlyZSgnLi9SZWFjdFJlY29uY2lsZXInKTsKK3ZhciBSZWFjdFVwZGF0ZVF1ZXVlID0gcmVxdWly
ZSgnLi9SZWFjdFVwZGF0ZVF1ZXVlJyk7Cit2YXIgUmVhY3RVcGRhdGVzID0gcmVxdWlyZSgnLi9S
ZWFjdFVwZGF0ZXMnKTsKKwordmFyIGVtcHR5T2JqZWN0ID0gcmVxdWlyZSgnZmJqcy9saWIvZW1w
dHlPYmplY3QnKTsKK3ZhciBpbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50ID0gcmVxdWlyZSgnLi9p
bnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50Jyk7Cit2YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJq
cy9saWIvaW52YXJpYW50Jyk7Cit2YXIgc2V0SW5uZXJIVE1MID0gcmVxdWlyZSgnLi9zZXRJbm5l
ckhUTUwnKTsKK3ZhciBzaG91bGRVcGRhdGVSZWFjdENvbXBvbmVudCA9IHJlcXVpcmUoJy4vc2hv
dWxkVXBkYXRlUmVhY3RDb21wb25lbnQnKTsKK3ZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9s
aWIvd2FybmluZycpOworCit2YXIgQVRUUl9OQU1FID0gRE9NUHJvcGVydHkuSURfQVRUUklCVVRF
X05BTUU7Cit2YXIgUk9PVF9BVFRSX05BTUUgPSBET01Qcm9wZXJ0eS5ST09UX0FUVFJJQlVURV9O
QU1FOworCit2YXIgRUxFTUVOVF9OT0RFX1RZUEUgPSAxOwordmFyIERPQ19OT0RFX1RZUEUgPSA5
OwordmFyIERPQ1VNRU5UX0ZSQUdNRU5UX05PREVfVFlQRSA9IDExOworCit2YXIgaW5zdGFuY2Vz
QnlSZWFjdFJvb3RJRCA9IHt9OworCisvKioKKyAqIEZpbmRzIHRoZSBpbmRleCBvZiB0aGUgZmly
c3QgY2hhcmFjdGVyCisgKiB0aGF0J3Mgbm90IGNvbW1vbiBiZXR3ZWVuIHRoZSB0d28gZ2l2ZW4g
c3RyaW5ncy4KKyAqCisgKiBAcmV0dXJuIHtudW1iZXJ9IHRoZSBpbmRleCBvZiB0aGUgY2hhcmFj
dGVyIHdoZXJlIHRoZSBzdHJpbmdzIGRpdmVyZ2UKKyAqLworZnVuY3Rpb24gZmlyc3REaWZmZXJl
bmNlSW5kZXgoc3RyaW5nMSwgc3RyaW5nMikgeworICB2YXIgbWluTGVuID0gTWF0aC5taW4oc3Ry
aW5nMS5sZW5ndGgsIHN0cmluZzIubGVuZ3RoKTsKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBtaW5M
ZW47IGkrKykgeworICAgIGlmIChzdHJpbmcxLmNoYXJBdChpKSAhPT0gc3RyaW5nMi5jaGFyQXQo
aSkpIHsKKyAgICAgIHJldHVybiBpOworICAgIH0KKyAgfQorICByZXR1cm4gc3RyaW5nMS5sZW5n
dGggPT09IHN0cmluZzIubGVuZ3RoID8gLTEgOiBtaW5MZW47Cit9CisKKy8qKgorICogQHBhcmFt
IHtET01FbGVtZW50fERPTURvY3VtZW50fSBjb250YWluZXIgRE9NIGVsZW1lbnQgdGhhdCBtYXkg
Y29udGFpbgorICogYSBSZWFjdCBjb21wb25lbnQKKyAqIEByZXR1cm4gez8qfSBET00gZWxlbWVu
dCB0aGF0IG1heSBoYXZlIHRoZSByZWFjdFJvb3QgSUQsIG9yIG51bGwuCisgKi8KK2Z1bmN0aW9u
IGdldFJlYWN0Um9vdEVsZW1lbnRJbkNvbnRhaW5lcihjb250YWluZXIpIHsKKyAgaWYgKCFjb250
YWluZXIpIHsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorCisgIGlmIChjb250YWluZXIubm9kZVR5
cGUgPT09IERPQ19OT0RFX1RZUEUpIHsKKyAgICByZXR1cm4gY29udGFpbmVyLmRvY3VtZW50RWxl
bWVudDsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gY29udGFpbmVyLmZpcnN0Q2hpbGQ7CisgIH0K
K30KKworZnVuY3Rpb24gaW50ZXJuYWxHZXRJRChub2RlKSB7CisgIC8vIElmIG5vZGUgaXMgc29t
ZXRoaW5nIGxpa2UgYSB3aW5kb3csIGRvY3VtZW50LCBvciB0ZXh0IG5vZGUsIG5vbmUgb2YKKyAg
Ly8gd2hpY2ggc3VwcG9ydCBhdHRyaWJ1dGVzIG9yIGEgLmdldEF0dHJpYnV0ZSBtZXRob2QsIGdy
YWNlZnVsbHkgcmV0dXJuCisgIC8vIHRoZSBlbXB0eSBzdHJpbmcsIGFzIGlmIHRoZSBhdHRyaWJ1
dGUgd2VyZSBtaXNzaW5nLgorICByZXR1cm4gbm9kZS5nZXRBdHRyaWJ1dGUgJiYgbm9kZS5nZXRB
dHRyaWJ1dGUoQVRUUl9OQU1FKSB8fCAnJzsKK30KKworLyoqCisgKiBNb3VudHMgdGhpcyBjb21w
b25lbnQgYW5kIGluc2VydHMgaXQgaW50byB0aGUgRE9NLgorICoKKyAqIEBwYXJhbSB7UmVhY3RD
b21wb25lbnR9IGNvbXBvbmVudEluc3RhbmNlIFRoZSBpbnN0YW5jZSB0byBtb3VudC4KKyAqIEBw
YXJhbSB7RE9NRWxlbWVudH0gY29udGFpbmVyIERPTSBlbGVtZW50IHRvIG1vdW50IGludG8uCisg
KiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uCisgKiBAcGFy
YW0ge2Jvb2xlYW59IHNob3VsZFJldXNlTWFya3VwIElmIHRydWUsIGRvIG5vdCBpbnNlcnQgbWFy
a3VwCisgKi8KK2Z1bmN0aW9uIG1vdW50Q29tcG9uZW50SW50b05vZGUod3JhcHBlckluc3RhbmNl
LCBjb250YWluZXIsIHRyYW5zYWN0aW9uLCBzaG91bGRSZXVzZU1hcmt1cCwgY29udGV4dCkgewor
ICB2YXIgbWFya2VyTmFtZTsKKyAgaWYgKFJlYWN0RmVhdHVyZUZsYWdzLmxvZ1RvcExldmVsUmVu
ZGVycykgeworICAgIHZhciB3cmFwcGVkRWxlbWVudCA9IHdyYXBwZXJJbnN0YW5jZS5fY3VycmVu
dEVsZW1lbnQucHJvcHMuY2hpbGQ7CisgICAgdmFyIHR5cGUgPSB3cmFwcGVkRWxlbWVudC50eXBl
OworICAgIG1hcmtlck5hbWUgPSAnUmVhY3QgbW91bnQ6ICcgKyAodHlwZW9mIHR5cGUgPT09ICdz
dHJpbmcnID8gdHlwZSA6IHR5cGUuZGlzcGxheU5hbWUgfHwgdHlwZS5uYW1lKTsKKyAgICBjb25z
b2xlLnRpbWUobWFya2VyTmFtZSk7CisgIH0KKworICB2YXIgbWFya3VwID0gUmVhY3RSZWNvbmNp
bGVyLm1vdW50Q29tcG9uZW50KHdyYXBwZXJJbnN0YW5jZSwgdHJhbnNhY3Rpb24sIG51bGwsIFJl
YWN0RE9NQ29udGFpbmVySW5mbyh3cmFwcGVySW5zdGFuY2UsIGNvbnRhaW5lciksIGNvbnRleHQs
IDAgLyogcGFyZW50RGVidWdJRCAqLworICApOworCisgIGlmIChtYXJrZXJOYW1lKSB7CisgICAg
Y29uc29sZS50aW1lRW5kKG1hcmtlck5hbWUpOworICB9CisKKyAgd3JhcHBlckluc3RhbmNlLl9y
ZW5kZXJlZENvbXBvbmVudC5fdG9wTGV2ZWxXcmFwcGVyID0gd3JhcHBlckluc3RhbmNlOworICBS
ZWFjdE1vdW50Ll9tb3VudEltYWdlSW50b05vZGUobWFya3VwLCBjb250YWluZXIsIHdyYXBwZXJJ
bnN0YW5jZSwgc2hvdWxkUmV1c2VNYXJrdXAsIHRyYW5zYWN0aW9uKTsKK30KKworLyoqCisgKiBC
YXRjaGVkIG1vdW50LgorICoKKyAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGNvbXBvbmVudElu
c3RhbmNlIFRoZSBpbnN0YW5jZSB0byBtb3VudC4KKyAqIEBwYXJhbSB7RE9NRWxlbWVudH0gY29u
dGFpbmVyIERPTSBlbGVtZW50IHRvIG1vdW50IGludG8uCisgKiBAcGFyYW0ge2Jvb2xlYW59IHNo
b3VsZFJldXNlTWFya3VwIElmIHRydWUsIGRvIG5vdCBpbnNlcnQgbWFya3VwCisgKi8KK2Z1bmN0
aW9uIGJhdGNoZWRNb3VudENvbXBvbmVudEludG9Ob2RlKGNvbXBvbmVudEluc3RhbmNlLCBjb250
YWluZXIsIHNob3VsZFJldXNlTWFya3VwLCBjb250ZXh0KSB7CisgIHZhciB0cmFuc2FjdGlvbiA9
IFJlYWN0VXBkYXRlcy5SZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uLmdldFBvb2xlZCgKKyAgLyog
dXNlQ3JlYXRlRWxlbWVudCAqLworICAhc2hvdWxkUmV1c2VNYXJrdXAgJiYgUmVhY3RET01GZWF0
dXJlRmxhZ3MudXNlQ3JlYXRlRWxlbWVudCk7CisgIHRyYW5zYWN0aW9uLnBlcmZvcm0obW91bnRD
b21wb25lbnRJbnRvTm9kZSwgbnVsbCwgY29tcG9uZW50SW5zdGFuY2UsIGNvbnRhaW5lciwgdHJh
bnNhY3Rpb24sIHNob3VsZFJldXNlTWFya3VwLCBjb250ZXh0KTsKKyAgUmVhY3RVcGRhdGVzLlJl
YWN0UmVjb25jaWxlVHJhbnNhY3Rpb24ucmVsZWFzZSh0cmFuc2FjdGlvbik7Cit9CisKKy8qKgor
ICogVW5tb3VudHMgYSBjb21wb25lbnQgYW5kIHJlbW92ZXMgaXQgZnJvbSB0aGUgRE9NLgorICoK
KyAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGluc3RhbmNlIFJlYWN0IGNvbXBvbmVudCBpbnN0
YW5jZS4KKyAqIEBwYXJhbSB7RE9NRWxlbWVudH0gY29udGFpbmVyIERPTSBlbGVtZW50IHRvIHVu
bW91bnQgZnJvbS4KKyAqIEBmaW5hbAorICogQGludGVybmFsCisgKiBAc2VlIHtSZWFjdE1vdW50
LnVubW91bnRDb21wb25lbnRBdE5vZGV9CisgKi8KK2Z1bmN0aW9uIHVubW91bnRDb21wb25lbnRG
cm9tTm9kZShpbnN0YW5jZSwgY29udGFpbmVyLCBzYWZlbHkpIHsKKyAgaWYgKHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5k
ZWJ1Z1Rvb2wub25CZWdpbkZsdXNoKCk7CisgIH0KKyAgUmVhY3RSZWNvbmNpbGVyLnVubW91bnRD
b21wb25lbnQoaW5zdGFuY2UsIHNhZmVseSk7CisgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAh
PT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9u
RW5kRmx1c2goKTsKKyAgfQorCisgIGlmIChjb250YWluZXIubm9kZVR5cGUgPT09IERPQ19OT0RF
X1RZUEUpIHsKKyAgICBjb250YWluZXIgPSBjb250YWluZXIuZG9jdW1lbnRFbGVtZW50OworICB9
CisKKyAgLy8gaHR0cDovL2pzcGVyZi5jb20vZW1wdHlpbmctYS1ub2RlCisgIHdoaWxlIChjb250
YWluZXIubGFzdENoaWxkKSB7CisgICAgY29udGFpbmVyLnJlbW92ZUNoaWxkKGNvbnRhaW5lci5s
YXN0Q2hpbGQpOworICB9Cit9CisKKy8qKgorICogVHJ1ZSBpZiB0aGUgc3VwcGxpZWQgRE9NIG5v
ZGUgaGFzIGEgZGlyZWN0IFJlYWN0LXJlbmRlcmVkIGNoaWxkIHRoYXQgaXMKKyAqIG5vdCBhIFJl
YWN0IHJvb3QgZWxlbWVudC4gVXNlZnVsIGZvciB3YXJuaW5nIGluIGByZW5kZXJgLAorICogYHVu
bW91bnRDb21wb25lbnRBdE5vZGVgLCBldGMuCisgKgorICogQHBhcmFtIHs/RE9NRWxlbWVudH0g
bm9kZSBUaGUgY2FuZGlkYXRlIERPTSBub2RlLgorICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBp
ZiB0aGUgRE9NIGVsZW1lbnQgY29udGFpbnMgYSBkaXJlY3QgY2hpbGQgdGhhdCB3YXMKKyAqIHJl
bmRlcmVkIGJ5IFJlYWN0IGJ1dCBpcyBub3QgYSByb290IGVsZW1lbnQuCisgKiBAaW50ZXJuYWwK
KyAqLworZnVuY3Rpb24gaGFzTm9uUm9vdFJlYWN0Q2hpbGQoY29udGFpbmVyKSB7CisgIHZhciBy
b290RWwgPSBnZXRSZWFjdFJvb3RFbGVtZW50SW5Db250YWluZXIoY29udGFpbmVyKTsKKyAgaWYg
KHJvb3RFbCkgeworICAgIHZhciBpbnN0ID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldEluc3Rh
bmNlRnJvbU5vZGUocm9vdEVsKTsKKyAgICByZXR1cm4gISEoaW5zdCAmJiBpbnN0Ll9ob3N0UGFy
ZW50KTsKKyAgfQorfQorCisvKioKKyAqIFRydWUgaWYgdGhlIHN1cHBsaWVkIERPTSBub2RlIGlz
IGEgUmVhY3QgRE9NIGVsZW1lbnQgYW5kCisgKiBpdCBoYXMgYmVlbiByZW5kZXJlZCBieSBhbm90
aGVyIGNvcHkgb2YgUmVhY3QuCisgKgorICogQHBhcmFtIHs/RE9NRWxlbWVudH0gbm9kZSBUaGUg
Y2FuZGlkYXRlIERPTSBub2RlLgorICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgRE9N
IGhhcyBiZWVuIHJlbmRlcmVkIGJ5IGFub3RoZXIgY29weSBvZiBSZWFjdAorICogQGludGVybmFs
CisgKi8KK2Z1bmN0aW9uIG5vZGVJc1JlbmRlcmVkQnlPdGhlckluc3RhbmNlKGNvbnRhaW5lcikg
eworICB2YXIgcm9vdEVsID0gZ2V0UmVhY3RSb290RWxlbWVudEluQ29udGFpbmVyKGNvbnRhaW5l
cik7CisgIHJldHVybiAhIShyb290RWwgJiYgaXNSZWFjdE5vZGUocm9vdEVsKSAmJiAhUmVhY3RE
T01Db21wb25lbnRUcmVlLmdldEluc3RhbmNlRnJvbU5vZGUocm9vdEVsKSk7Cit9CisKKy8qKgor
ICogVHJ1ZSBpZiB0aGUgc3VwcGxpZWQgRE9NIG5vZGUgaXMgYSB2YWxpZCBub2RlIGVsZW1lbnQu
CisgKgorICogQHBhcmFtIHs/RE9NRWxlbWVudH0gbm9kZSBUaGUgY2FuZGlkYXRlIERPTSBub2Rl
LgorICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgRE9NIGlzIGEgdmFsaWQgRE9NIG5v
ZGUuCisgKiBAaW50ZXJuYWwKKyAqLworZnVuY3Rpb24gaXNWYWxpZENvbnRhaW5lcihub2RlKSB7
CisgIHJldHVybiAhIShub2RlICYmIChub2RlLm5vZGVUeXBlID09PSBFTEVNRU5UX05PREVfVFlQ
RSB8fCBub2RlLm5vZGVUeXBlID09PSBET0NfTk9ERV9UWVBFIHx8IG5vZGUubm9kZVR5cGUgPT09
IERPQ1VNRU5UX0ZSQUdNRU5UX05PREVfVFlQRSkpOworfQorCisvKioKKyAqIFRydWUgaWYgdGhl
IHN1cHBsaWVkIERPTSBub2RlIGlzIGEgdmFsaWQgUmVhY3Qgbm9kZSBlbGVtZW50LgorICoKKyAq
IEBwYXJhbSB7P0RPTUVsZW1lbnR9IG5vZGUgVGhlIGNhbmRpZGF0ZSBET00gbm9kZS4KKyAqIEBy
ZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdGhlIERPTSBpcyBhIHZhbGlkIFJlYWN0IERPTSBub2Rl
LgorICogQGludGVybmFsCisgKi8KK2Z1bmN0aW9uIGlzUmVhY3ROb2RlKG5vZGUpIHsKKyAgcmV0
dXJuIGlzVmFsaWRDb250YWluZXIobm9kZSkgJiYgKG5vZGUuaGFzQXR0cmlidXRlKFJPT1RfQVRU
Ul9OQU1FKSB8fCBub2RlLmhhc0F0dHJpYnV0ZShBVFRSX05BTUUpKTsKK30KKworZnVuY3Rpb24g
Z2V0SG9zdFJvb3RJbnN0YW5jZUluQ29udGFpbmVyKGNvbnRhaW5lcikgeworICB2YXIgcm9vdEVs
ID0gZ2V0UmVhY3RSb290RWxlbWVudEluQ29udGFpbmVyKGNvbnRhaW5lcik7CisgIHZhciBwcmV2
SG9zdEluc3RhbmNlID0gcm9vdEVsICYmIFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRJbnN0YW5j
ZUZyb21Ob2RlKHJvb3RFbCk7CisgIHJldHVybiBwcmV2SG9zdEluc3RhbmNlICYmICFwcmV2SG9z
dEluc3RhbmNlLl9ob3N0UGFyZW50ID8gcHJldkhvc3RJbnN0YW5jZSA6IG51bGw7Cit9CisKK2Z1
bmN0aW9uIGdldFRvcExldmVsV3JhcHBlckluQ29udGFpbmVyKGNvbnRhaW5lcikgeworICB2YXIg
cm9vdCA9IGdldEhvc3RSb290SW5zdGFuY2VJbkNvbnRhaW5lcihjb250YWluZXIpOworICByZXR1
cm4gcm9vdCA/IHJvb3QuX2hvc3RDb250YWluZXJJbmZvLl90b3BMZXZlbFdyYXBwZXIgOiBudWxs
OworfQorCisvKioKKyAqIFRlbXBvcmFyeSAoPykgaGFjayBzbyB0aGF0IHdlIGNhbiBzdG9yZSBh
bGwgdG9wLWxldmVsIHBlbmRpbmcgdXBkYXRlcyBvbgorICogY29tcG9zaXRlcyBpbnN0ZWFkIG9m
IGhhdmluZyB0byB3b3JyeSBhYm91dCBkaWZmZXJlbnQgdHlwZXMgb2YgY29tcG9uZW50cworICog
aGVyZS4KKyAqLwordmFyIHRvcExldmVsUm9vdENvdW50ZXIgPSAxOwordmFyIFRvcExldmVsV3Jh
cHBlciA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5yb290SUQgPSB0b3BMZXZlbFJvb3RDb3VudGVy
Kys7Cit9OworVG9wTGV2ZWxXcmFwcGVyLnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50ID0ge307
CitpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgeworICBUb3BMZXZl
bFdyYXBwZXIuZGlzcGxheU5hbWUgPSAnVG9wTGV2ZWxXcmFwcGVyJzsKK30KK1RvcExldmVsV3Jh
cHBlci5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkgeworICByZXR1cm4gdGhpcy5wcm9w
cy5jaGlsZDsKK307CitUb3BMZXZlbFdyYXBwZXIuaXNSZWFjdFRvcExldmVsV3JhcHBlciA9IHRy
dWU7CisKKy8qKgorICogTW91bnRpbmcgaXMgdGhlIHByb2Nlc3Mgb2YgaW5pdGlhbGl6aW5nIGEg
UmVhY3QgY29tcG9uZW50IGJ5IGNyZWF0aW5nIGl0cworICogcmVwcmVzZW50YXRpdmUgRE9NIGVs
ZW1lbnRzIGFuZCBpbnNlcnRpbmcgdGhlbSBpbnRvIGEgc3VwcGxpZWQgYGNvbnRhaW5lcmAuCisg
KiBBbnkgcHJpb3IgY29udGVudCBpbnNpZGUgYGNvbnRhaW5lcmAgaXMgZGVzdHJveWVkIGluIHRo
ZSBwcm9jZXNzLgorICoKKyAqICAgUmVhY3RNb3VudC5yZW5kZXIoCisgKiAgICAgY29tcG9uZW50
LAorICogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKQorICogICApOwor
ICoKKyAqICAgPGRpdiBpZD0iY29udGFpbmVyIj4gICAgICAgICAgICAgICAgICAgPC0tIFN1cHBs
aWVkIGBjb250YWluZXJgLgorICogICAgIDxkaXYgZGF0YS1yZWFjdGlkPSIuMyI+ICAgICAgICAg
ICAgICA8LS0gUmVuZGVyZWQgcmVhY3RSb290IG9mIFJlYWN0CisgKiAgICAgICAvLyAuLi4gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQuCisgKiAgICAgPC9kaXY+Cisg
KiAgIDwvZGl2PgorICoKKyAqIEluc2lkZSBvZiBgY29udGFpbmVyYCwgdGhlIGZpcnN0IGVsZW1l
bnQgcmVuZGVyZWQgaXMgdGhlICJyZWFjdFJvb3QiLgorICovCit2YXIgUmVhY3RNb3VudCA9IHsK
KworICBUb3BMZXZlbFdyYXBwZXI6IFRvcExldmVsV3JhcHBlciwKKworICAvKioKKyAgICogVXNl
ZCBieSBkZXZ0b29scy4gVGhlIGtleXMgYXJlIG5vdCBpbXBvcnRhbnQuCisgICAqLworICBfaW5z
dGFuY2VzQnlSZWFjdFJvb3RJRDogaW5zdGFuY2VzQnlSZWFjdFJvb3RJRCwKKworICAvKioKKyAg
ICogVGhpcyBpcyBhIGhvb2sgcHJvdmlkZWQgdG8gc3VwcG9ydCByZW5kZXJpbmcgUmVhY3QgY29t
cG9uZW50cyB3aGlsZQorICAgKiBlbnN1cmluZyB0aGF0IHRoZSBhcHBhcmVudCBzY3JvbGwgcG9z
aXRpb24gb2YgaXRzIGBjb250YWluZXJgIGRvZXMgbm90CisgICAqIGNoYW5nZS4KKyAgICoKKyAg
ICogQHBhcmFtIHtET01FbGVtZW50fSBjb250YWluZXIgVGhlIGBjb250YWluZXJgIGJlaW5nIHJl
bmRlcmVkIGludG8uCisgICAqIEBwYXJhbSB7ZnVuY3Rpb259IHJlbmRlckNhbGxiYWNrIFRoaXMg
bXVzdCBiZSBjYWxsZWQgb25jZSB0byBkbyB0aGUgcmVuZGVyLgorICAgKi8KKyAgc2Nyb2xsTW9u
aXRvcjogZnVuY3Rpb24gKGNvbnRhaW5lciwgcmVuZGVyQ2FsbGJhY2spIHsKKyAgICByZW5kZXJD
YWxsYmFjaygpOworICB9LAorCisgIC8qKgorICAgKiBUYWtlIGEgY29tcG9uZW50IHRoYXQncyBh
bHJlYWR5IG1vdW50ZWQgaW50byB0aGUgRE9NIGFuZCByZXBsYWNlIGl0cyBwcm9wcworICAgKiBA
cGFyYW0ge1JlYWN0Q29tcG9uZW50fSBwcmV2Q29tcG9uZW50IGNvbXBvbmVudCBpbnN0YW5jZSBh
bHJlYWR5IGluIHRoZSBET00KKyAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IG5leHRFbGVtZW50
IGNvbXBvbmVudCBpbnN0YW5jZSB0byByZW5kZXIKKyAgICogQHBhcmFtIHtET01FbGVtZW50fSBj
b250YWluZXIgY29udGFpbmVyIHRvIHJlbmRlciBpbnRvCisgICAqIEBwYXJhbSB7P2Z1bmN0aW9u
fSBjYWxsYmFjayBmdW5jdGlvbiB0cmlnZ2VyZWQgb24gY29tcGxldGlvbgorICAgKi8KKyAgX3Vw
ZGF0ZVJvb3RDb21wb25lbnQ6IGZ1bmN0aW9uIChwcmV2Q29tcG9uZW50LCBuZXh0RWxlbWVudCwg
bmV4dENvbnRleHQsIGNvbnRhaW5lciwgY2FsbGJhY2spIHsKKyAgICBSZWFjdE1vdW50LnNjcm9s
bE1vbml0b3IoY29udGFpbmVyLCBmdW5jdGlvbiAoKSB7CisgICAgICBSZWFjdFVwZGF0ZVF1ZXVl
LmVucXVldWVFbGVtZW50SW50ZXJuYWwocHJldkNvbXBvbmVudCwgbmV4dEVsZW1lbnQsIG5leHRD
b250ZXh0KTsKKyAgICAgIGlmIChjYWxsYmFjaykgeworICAgICAgICBSZWFjdFVwZGF0ZVF1ZXVl
LmVucXVldWVDYWxsYmFja0ludGVybmFsKHByZXZDb21wb25lbnQsIGNhbGxiYWNrKTsKKyAgICAg
IH0KKyAgICB9KTsKKworICAgIHJldHVybiBwcmV2Q29tcG9uZW50OworICB9LAorCisgIC8qKgor
ICAgKiBSZW5kZXIgYSBuZXcgY29tcG9uZW50IGludG8gdGhlIERPTS4gSG9va2VkIGJ5IGhvb2tz
IQorICAgKgorICAgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gbmV4dEVsZW1lbnQgZWxlbWVudCB0
byByZW5kZXIKKyAgICogQHBhcmFtIHtET01FbGVtZW50fSBjb250YWluZXIgY29udGFpbmVyIHRv
IHJlbmRlciBpbnRvCisgICAqIEBwYXJhbSB7Ym9vbGVhbn0gc2hvdWxkUmV1c2VNYXJrdXAgaWYg
d2Ugc2hvdWxkIHNraXAgdGhlIG1hcmt1cCBpbnNlcnRpb24KKyAgICogQHJldHVybiB7UmVhY3RD
b21wb25lbnR9IG5leHRDb21wb25lbnQKKyAgICovCisgIF9yZW5kZXJOZXdSb290Q29tcG9uZW50
OiBmdW5jdGlvbiAobmV4dEVsZW1lbnQsIGNvbnRhaW5lciwgc2hvdWxkUmV1c2VNYXJrdXAsIGNv
bnRleHQpIHsKKyAgICAvLyBWYXJpb3VzIHBhcnRzIG9mIG91ciBjb2RlIChzdWNoIGFzIFJlYWN0
Q29tcG9zaXRlQ29tcG9uZW50J3MKKyAgICAvLyBfcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50KSBh
c3N1bWUgdGhhdCBjYWxscyB0byByZW5kZXIgYXJlbid0IG5lc3RlZDsKKyAgICAvLyB2ZXJpZnkg
dGhhdCB0aGF0J3MgdGhlIGNhc2UuCisgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJyA/IHdhcm5pbmcoUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCA9PSBudWxsLCAnX3Jl
bmRlck5ld1Jvb3RDb21wb25lbnQoKTogUmVuZGVyIG1ldGhvZHMgc2hvdWxkIGJlIGEgcHVyZSBm
dW5jdGlvbiAnICsgJ29mIHByb3BzIGFuZCBzdGF0ZTsgdHJpZ2dlcmluZyBuZXN0ZWQgY29tcG9u
ZW50IHVwZGF0ZXMgZnJvbSAnICsgJ3JlbmRlciBpcyBub3QgYWxsb3dlZC4gSWYgbmVjZXNzYXJ5
LCB0cmlnZ2VyIG5lc3RlZCB1cGRhdGVzIGluICcgKyAnY29tcG9uZW50RGlkVXBkYXRlLiBDaGVj
ayB0aGUgcmVuZGVyIG1ldGhvZCBvZiAlcy4nLCBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ICYm
IFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQuZ2V0TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNv
bXBvbmVudCcpIDogdm9pZCAwOworCisgICAgIWlzVmFsaWRDb250YWluZXIoY29udGFpbmVyKSA/
IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2Us
ICdfcmVnaXN0ZXJDb21wb25lbnQoLi4uKTogVGFyZ2V0IGNvbnRhaW5lciBpcyBub3QgYSBET00g
ZWxlbWVudC4nKSA6IF9wcm9kSW52YXJpYW50KCczNycpIDogdm9pZCAwOworCisgICAgUmVhY3RC
cm93c2VyRXZlbnRFbWl0dGVyLmVuc3VyZVNjcm9sbFZhbHVlTW9uaXRvcmluZygpOworICAgIHZh
ciBjb21wb25lbnRJbnN0YW5jZSA9IGluc3RhbnRpYXRlUmVhY3RDb21wb25lbnQobmV4dEVsZW1l
bnQsIGZhbHNlKTsKKworICAgIC8vIFRoZSBpbml0aWFsIHJlbmRlciBpcyBzeW5jaHJvbm91cyBi
dXQgYW55IHVwZGF0ZXMgdGhhdCBoYXBwZW4gZHVyaW5nCisgICAgLy8gcmVuZGVyaW5nLCBpbiBj
b21wb25lbnRXaWxsTW91bnQgb3IgY29tcG9uZW50RGlkTW91bnQsIHdpbGwgYmUgYmF0Y2hlZAor
ICAgIC8vIGFjY29yZGluZyB0byB0aGUgY3VycmVudCBiYXRjaGluZyBzdHJhdGVneS4KKworICAg
IFJlYWN0VXBkYXRlcy5iYXRjaGVkVXBkYXRlcyhiYXRjaGVkTW91bnRDb21wb25lbnRJbnRvTm9k
ZSwgY29tcG9uZW50SW5zdGFuY2UsIGNvbnRhaW5lciwgc2hvdWxkUmV1c2VNYXJrdXAsIGNvbnRl
eHQpOworCisgICAgdmFyIHdyYXBwZXJJRCA9IGNvbXBvbmVudEluc3RhbmNlLl9pbnN0YW5jZS5y
b290SUQ7CisgICAgaW5zdGFuY2VzQnlSZWFjdFJvb3RJRFt3cmFwcGVySURdID0gY29tcG9uZW50
SW5zdGFuY2U7CisKKyAgICByZXR1cm4gY29tcG9uZW50SW5zdGFuY2U7CisgIH0sCisKKyAgLyoq
CisgICAqIFJlbmRlcnMgYSBSZWFjdCBjb21wb25lbnQgaW50byB0aGUgRE9NIGluIHRoZSBzdXBw
bGllZCBgY29udGFpbmVyYC4KKyAgICoKKyAgICogSWYgdGhlIFJlYWN0IGNvbXBvbmVudCB3YXMg
cHJldmlvdXNseSByZW5kZXJlZCBpbnRvIGBjb250YWluZXJgLCB0aGlzIHdpbGwKKyAgICogcGVy
Zm9ybSBhbiB1cGRhdGUgb24gaXQgYW5kIG9ubHkgbXV0YXRlIHRoZSBET00gYXMgbmVjZXNzYXJ5
IHRvIHJlZmxlY3QgdGhlCisgICAqIGxhdGVzdCBSZWFjdCBjb21wb25lbnQuCisgICAqCisgICAq
IEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IHBhcmVudENvbXBvbmVudCBUaGUgY29uY2VwdHVhbCBw
YXJlbnQgb2YgdGhpcyByZW5kZXIgdHJlZS4KKyAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IG5l
eHRFbGVtZW50IENvbXBvbmVudCBlbGVtZW50IHRvIHJlbmRlci4KKyAgICogQHBhcmFtIHtET01F
bGVtZW50fSBjb250YWluZXIgRE9NIGVsZW1lbnQgdG8gcmVuZGVyIGludG8uCisgICAqIEBwYXJh
bSB7P2Z1bmN0aW9ufSBjYWxsYmFjayBmdW5jdGlvbiB0cmlnZ2VyZWQgb24gY29tcGxldGlvbgor
ICAgKiBAcmV0dXJuIHtSZWFjdENvbXBvbmVudH0gQ29tcG9uZW50IGluc3RhbmNlIHJlbmRlcmVk
IGluIGBjb250YWluZXJgLgorICAgKi8KKyAgcmVuZGVyU3VidHJlZUludG9Db250YWluZXI6IGZ1
bmN0aW9uIChwYXJlbnRDb21wb25lbnQsIG5leHRFbGVtZW50LCBjb250YWluZXIsIGNhbGxiYWNr
KSB7CisgICAgIShwYXJlbnRDb21wb25lbnQgIT0gbnVsbCAmJiBSZWFjdEluc3RhbmNlTWFwLmhh
cyhwYXJlbnRDb21wb25lbnQpKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlv
bicgPyBpbnZhcmlhbnQoZmFsc2UsICdwYXJlbnRDb21wb25lbnQgbXVzdCBiZSBhIHZhbGlkIFJl
YWN0IENvbXBvbmVudCcpIDogX3Byb2RJbnZhcmlhbnQoJzM4JykgOiB2b2lkIDA7CisgICAgcmV0
dXJuIFJlYWN0TW91bnQuX3JlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyKHBhcmVudENvbXBvbmVu
dCwgbmV4dEVsZW1lbnQsIGNvbnRhaW5lciwgY2FsbGJhY2spOworICB9LAorCisgIF9yZW5kZXJT
dWJ0cmVlSW50b0NvbnRhaW5lcjogZnVuY3Rpb24gKHBhcmVudENvbXBvbmVudCwgbmV4dEVsZW1l
bnQsIGNvbnRhaW5lciwgY2FsbGJhY2spIHsKKyAgICBSZWFjdFVwZGF0ZVF1ZXVlLnZhbGlkYXRl
Q2FsbGJhY2soY2FsbGJhY2ssICdSZWFjdERPTS5yZW5kZXInKTsKKyAgICAhUmVhY3QuaXNWYWxp
ZEVsZW1lbnQobmV4dEVsZW1lbnQpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0RE9NLnJlbmRlcigpOiBJbnZhbGlkIGNvbXBv
bmVudCBlbGVtZW50LiVzJywgdHlwZW9mIG5leHRFbGVtZW50ID09PSAnc3RyaW5nJyA/ICcgSW5z
dGVhZCBvZiBwYXNzaW5nIGEgc3RyaW5nIGxpa2UgXCdkaXZcJywgcGFzcyAnICsgJ1JlYWN0LmNy
ZWF0ZUVsZW1lbnQoXCdkaXZcJykgb3IgPGRpdiAvPi4nIDogdHlwZW9mIG5leHRFbGVtZW50ID09
PSAnZnVuY3Rpb24nID8gJyBJbnN0ZWFkIG9mIHBhc3NpbmcgYSBjbGFzcyBsaWtlIEZvbywgcGFz
cyAnICsgJ1JlYWN0LmNyZWF0ZUVsZW1lbnQoRm9vKSBvciA8Rm9vIC8+LicgOgorICAgIC8vIENo
ZWNrIGlmIGl0IHF1YWNrcyBsaWtlIGFuIGVsZW1lbnQKKyAgICBuZXh0RWxlbWVudCAhPSBudWxs
ICYmIG5leHRFbGVtZW50LnByb3BzICE9PSB1bmRlZmluZWQgPyAnIFRoaXMgbWF5IGJlIGNhdXNl
ZCBieSB1bmludGVudGlvbmFsbHkgbG9hZGluZyB0d28gaW5kZXBlbmRlbnQgJyArICdjb3BpZXMg
b2YgUmVhY3QuJyA6ICcnKSA6IF9wcm9kSW52YXJpYW50KCczOScsIHR5cGVvZiBuZXh0RWxlbWVu
dCA9PT0gJ3N0cmluZycgPyAnIEluc3RlYWQgb2YgcGFzc2luZyBhIHN0cmluZyBsaWtlIFwnZGl2
XCcsIHBhc3MgJyArICdSZWFjdC5jcmVhdGVFbGVtZW50KFwnZGl2XCcpIG9yIDxkaXYgLz4uJyA6
IHR5cGVvZiBuZXh0RWxlbWVudCA9PT0gJ2Z1bmN0aW9uJyA/ICcgSW5zdGVhZCBvZiBwYXNzaW5n
IGEgY2xhc3MgbGlrZSBGb28sIHBhc3MgJyArICdSZWFjdC5jcmVhdGVFbGVtZW50KEZvbykgb3Ig
PEZvbyAvPi4nIDogbmV4dEVsZW1lbnQgIT0gbnVsbCAmJiBuZXh0RWxlbWVudC5wcm9wcyAhPT0g
dW5kZWZpbmVkID8gJyBUaGlzIG1heSBiZSBjYXVzZWQgYnkgdW5pbnRlbnRpb25hbGx5IGxvYWRp
bmcgdHdvIGluZGVwZW5kZW50ICcgKyAnY29waWVzIG9mIFJlYWN0LicgOiAnJykgOiB2b2lkIDA7
CisKKyAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZygh
Y29udGFpbmVyIHx8ICFjb250YWluZXIudGFnTmFtZSB8fCBjb250YWluZXIudGFnTmFtZS50b1Vw
cGVyQ2FzZSgpICE9PSAnQk9EWScsICdyZW5kZXIoKTogUmVuZGVyaW5nIGNvbXBvbmVudHMgZGly
ZWN0bHkgaW50byBkb2N1bWVudC5ib2R5IGlzICcgKyAnZGlzY291cmFnZWQsIHNpbmNlIGl0cyBj
aGlsZHJlbiBhcmUgb2Z0ZW4gbWFuaXB1bGF0ZWQgYnkgdGhpcmQtcGFydHkgJyArICdzY3JpcHRz
IGFuZCBicm93c2VyIGV4dGVuc2lvbnMuIFRoaXMgbWF5IGxlYWQgdG8gc3VidGxlICcgKyAncmVj
b25jaWxpYXRpb24gaXNzdWVzLiBUcnkgcmVuZGVyaW5nIGludG8gYSBjb250YWluZXIgZWxlbWVu
dCBjcmVhdGVkICcgKyAnZm9yIHlvdXIgYXBwLicpIDogdm9pZCAwOworCisgICAgdmFyIG5leHRX
cmFwcGVkRWxlbWVudCA9IFJlYWN0LmNyZWF0ZUVsZW1lbnQoVG9wTGV2ZWxXcmFwcGVyLCB7IGNo
aWxkOiBuZXh0RWxlbWVudCB9KTsKKworICAgIHZhciBuZXh0Q29udGV4dDsKKyAgICBpZiAocGFy
ZW50Q29tcG9uZW50KSB7CisgICAgICB2YXIgcGFyZW50SW5zdCA9IFJlYWN0SW5zdGFuY2VNYXAu
Z2V0KHBhcmVudENvbXBvbmVudCk7CisgICAgICBuZXh0Q29udGV4dCA9IHBhcmVudEluc3QuX3By
b2Nlc3NDaGlsZENvbnRleHQocGFyZW50SW5zdC5fY29udGV4dCk7CisgICAgfSBlbHNlIHsKKyAg
ICAgIG5leHRDb250ZXh0ID0gZW1wdHlPYmplY3Q7CisgICAgfQorCisgICAgdmFyIHByZXZDb21w
b25lbnQgPSBnZXRUb3BMZXZlbFdyYXBwZXJJbkNvbnRhaW5lcihjb250YWluZXIpOworCisgICAg
aWYgKHByZXZDb21wb25lbnQpIHsKKyAgICAgIHZhciBwcmV2V3JhcHBlZEVsZW1lbnQgPSBwcmV2
Q29tcG9uZW50Ll9jdXJyZW50RWxlbWVudDsKKyAgICAgIHZhciBwcmV2RWxlbWVudCA9IHByZXZX
cmFwcGVkRWxlbWVudC5wcm9wcy5jaGlsZDsKKyAgICAgIGlmIChzaG91bGRVcGRhdGVSZWFjdENv
bXBvbmVudChwcmV2RWxlbWVudCwgbmV4dEVsZW1lbnQpKSB7CisgICAgICAgIHZhciBwdWJsaWNJ
bnN0ID0gcHJldkNvbXBvbmVudC5fcmVuZGVyZWRDb21wb25lbnQuZ2V0UHVibGljSW5zdGFuY2Uo
KTsKKyAgICAgICAgdmFyIHVwZGF0ZWRDYWxsYmFjayA9IGNhbGxiYWNrICYmIGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgICBjYWxsYmFjay5jYWxsKHB1YmxpY0luc3QpOworICAgICAgICB9OworICAg
ICAgICBSZWFjdE1vdW50Ll91cGRhdGVSb290Q29tcG9uZW50KHByZXZDb21wb25lbnQsIG5leHRX
cmFwcGVkRWxlbWVudCwgbmV4dENvbnRleHQsIGNvbnRhaW5lciwgdXBkYXRlZENhbGxiYWNrKTsK
KyAgICAgICAgcmV0dXJuIHB1YmxpY0luc3Q7CisgICAgICB9IGVsc2UgeworICAgICAgICBSZWFj
dE1vdW50LnVubW91bnRDb21wb25lbnRBdE5vZGUoY29udGFpbmVyKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgcmVhY3RSb290RWxlbWVudCA9IGdldFJlYWN0Um9vdEVsZW1lbnRJbkNvbnRh
aW5lcihjb250YWluZXIpOworICAgIHZhciBjb250YWluZXJIYXNSZWFjdE1hcmt1cCA9IHJlYWN0
Um9vdEVsZW1lbnQgJiYgISFpbnRlcm5hbEdldElEKHJlYWN0Um9vdEVsZW1lbnQpOworICAgIHZh
ciBjb250YWluZXJIYXNOb25Sb290UmVhY3RDaGlsZCA9IGhhc05vblJvb3RSZWFjdENoaWxkKGNv
bnRhaW5lcik7CisKKyAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
JykgeworICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5p
bmcoIWNvbnRhaW5lckhhc05vblJvb3RSZWFjdENoaWxkLCAncmVuZGVyKC4uLik6IFJlcGxhY2lu
ZyBSZWFjdC1yZW5kZXJlZCBjaGlsZHJlbiB3aXRoIGEgbmV3IHJvb3QgJyArICdjb21wb25lbnQu
IElmIHlvdSBpbnRlbmRlZCB0byB1cGRhdGUgdGhlIGNoaWxkcmVuIG9mIHRoaXMgbm9kZSwgJyAr
ICd5b3Ugc2hvdWxkIGluc3RlYWQgaGF2ZSB0aGUgZXhpc3RpbmcgY2hpbGRyZW4gdXBkYXRlIHRo
ZWlyIHN0YXRlICcgKyAnYW5kIHJlbmRlciB0aGUgbmV3IGNvbXBvbmVudHMgaW5zdGVhZCBvZiBj
YWxsaW5nIFJlYWN0RE9NLnJlbmRlci4nKSA6IHZvaWQgMDsKKworICAgICAgaWYgKCFjb250YWlu
ZXJIYXNSZWFjdE1hcmt1cCB8fCByZWFjdFJvb3RFbGVtZW50Lm5leHRTaWJsaW5nKSB7CisgICAg
ICAgIHZhciByb290RWxlbWVudFNpYmxpbmcgPSByZWFjdFJvb3RFbGVtZW50OworICAgICAgICB3
aGlsZSAocm9vdEVsZW1lbnRTaWJsaW5nKSB7CisgICAgICAgICAgaWYgKGludGVybmFsR2V0SUQo
cm9vdEVsZW1lbnRTaWJsaW5nKSkgeworICAgICAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdyZW5kZXIoKTogVGFyZ2V0IG5vZGUg
aGFzIG1hcmt1cCByZW5kZXJlZCBieSBSZWFjdCwgYnV0IHRoZXJlICcgKyAnYXJlIHVucmVsYXRl
ZCBub2RlcyBhcyB3ZWxsLiBUaGlzIGlzIG1vc3QgY29tbW9ubHkgY2F1c2VkIGJ5ICcgKyAnd2hp
dGUtc3BhY2UgaW5zZXJ0ZWQgYXJvdW5kIHNlcnZlci1yZW5kZXJlZCBtYXJrdXAuJykgOiB2b2lk
IDA7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICB9CisgICAgICAgICAgcm9vdEVsZW1l
bnRTaWJsaW5nID0gcm9vdEVsZW1lbnRTaWJsaW5nLm5leHRTaWJsaW5nOworICAgICAgICB9Cisg
ICAgICB9CisgICAgfQorCisgICAgdmFyIHNob3VsZFJldXNlTWFya3VwID0gY29udGFpbmVySGFz
UmVhY3RNYXJrdXAgJiYgIXByZXZDb21wb25lbnQgJiYgIWNvbnRhaW5lckhhc05vblJvb3RSZWFj
dENoaWxkOworICAgIHZhciBjb21wb25lbnQgPSBSZWFjdE1vdW50Ll9yZW5kZXJOZXdSb290Q29t
cG9uZW50KG5leHRXcmFwcGVkRWxlbWVudCwgY29udGFpbmVyLCBzaG91bGRSZXVzZU1hcmt1cCwg
bmV4dENvbnRleHQpLl9yZW5kZXJlZENvbXBvbmVudC5nZXRQdWJsaWNJbnN0YW5jZSgpOworICAg
IGlmIChjYWxsYmFjaykgeworICAgICAgY2FsbGJhY2suY2FsbChjb21wb25lbnQpOworICAgIH0K
KyAgICByZXR1cm4gY29tcG9uZW50OworICB9LAorCisgIC8qKgorICAgKiBSZW5kZXJzIGEgUmVh
Y3QgY29tcG9uZW50IGludG8gdGhlIERPTSBpbiB0aGUgc3VwcGxpZWQgYGNvbnRhaW5lcmAuCisg
ICAqIFNlZSBodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL3RvcC1sZXZlbC1h
cGkuaHRtbCNyZWFjdGRvbS5yZW5kZXIKKyAgICoKKyAgICogSWYgdGhlIFJlYWN0IGNvbXBvbmVu
dCB3YXMgcHJldmlvdXNseSByZW5kZXJlZCBpbnRvIGBjb250YWluZXJgLCB0aGlzIHdpbGwKKyAg
ICogcGVyZm9ybSBhbiB1cGRhdGUgb24gaXQgYW5kIG9ubHkgbXV0YXRlIHRoZSBET00gYXMgbmVj
ZXNzYXJ5IHRvIHJlZmxlY3QgdGhlCisgICAqIGxhdGVzdCBSZWFjdCBjb21wb25lbnQuCisgICAq
CisgICAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBuZXh0RWxlbWVudCBDb21wb25lbnQgZWxlbWVu
dCB0byByZW5kZXIuCisgICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gY29udGFpbmVyIERPTSBlbGVt
ZW50IHRvIHJlbmRlciBpbnRvLgorICAgKiBAcGFyYW0gez9mdW5jdGlvbn0gY2FsbGJhY2sgZnVu
Y3Rpb24gdHJpZ2dlcmVkIG9uIGNvbXBsZXRpb24KKyAgICogQHJldHVybiB7UmVhY3RDb21wb25l
bnR9IENvbXBvbmVudCBpbnN0YW5jZSByZW5kZXJlZCBpbiBgY29udGFpbmVyYC4KKyAgICovCisg
IHJlbmRlcjogZnVuY3Rpb24gKG5leHRFbGVtZW50LCBjb250YWluZXIsIGNhbGxiYWNrKSB7Cisg
ICAgcmV0dXJuIFJlYWN0TW91bnQuX3JlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyKG51bGwsIG5l
eHRFbGVtZW50LCBjb250YWluZXIsIGNhbGxiYWNrKTsKKyAgfSwKKworICAvKioKKyAgICogVW5t
b3VudHMgYW5kIGRlc3Ryb3lzIHRoZSBSZWFjdCBjb21wb25lbnQgcmVuZGVyZWQgaW4gdGhlIGBj
b250YWluZXJgLgorICAgKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9j
cy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3Rkb20udW5tb3VudGNvbXBvbmVudGF0bm9kZQorICAg
KgorICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGNvbnRhaW5lciBET00gZWxlbWVudCBjb250YWlu
aW5nIGEgUmVhY3QgY29tcG9uZW50LgorICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIGEg
Y29tcG9uZW50IHdhcyBmb3VuZCBpbiBhbmQgdW5tb3VudGVkIGZyb20KKyAgICogICAgICAgICAg
ICAgICAgICAgYGNvbnRhaW5lcmAKKyAgICovCisgIHVubW91bnRDb21wb25lbnRBdE5vZGU6IGZ1
bmN0aW9uIChjb250YWluZXIpIHsKKyAgICAvLyBWYXJpb3VzIHBhcnRzIG9mIG91ciBjb2RlIChz
dWNoIGFzIFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50J3MKKyAgICAvLyBfcmVuZGVyVmFsaWRhdGVk
Q29tcG9uZW50KSBhc3N1bWUgdGhhdCBjYWxscyB0byByZW5kZXIgYXJlbid0IG5lc3RlZDsKKyAg
ICAvLyB2ZXJpZnkgdGhhdCB0aGF0J3MgdGhlIGNhc2UuIChTdHJpY3RseSBzcGVha2luZywgdW5t
b3VudGluZyB3b24ndCBjYXVzZSBhCisgICAgLy8gcmVuZGVyIGJ1dCB3ZSBzdGlsbCBkb24ndCBl
eHBlY3QgdG8gYmUgaW4gYSByZW5kZXIgY2FsbCBoZXJlLikKKyAgICBwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50
ID09IG51bGwsICd1bm1vdW50Q29tcG9uZW50QXROb2RlKCk6IFJlbmRlciBtZXRob2RzIHNob3Vs
ZCBiZSBhIHB1cmUgZnVuY3Rpb24gJyArICdvZiBwcm9wcyBhbmQgc3RhdGU7IHRyaWdnZXJpbmcg
bmVzdGVkIGNvbXBvbmVudCB1cGRhdGVzIGZyb20gcmVuZGVyICcgKyAnaXMgbm90IGFsbG93ZWQu
IElmIG5lY2Vzc2FyeSwgdHJpZ2dlciBuZXN0ZWQgdXBkYXRlcyBpbiAnICsgJ2NvbXBvbmVudERp
ZFVwZGF0ZS4gQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgJXMuJywgUmVhY3RDdXJyZW50T3du
ZXIuY3VycmVudCAmJiBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50LmdldE5hbWUoKSB8fCAnUmVh
Y3RDb21wb3NpdGVDb21wb25lbnQnKSA6IHZvaWQgMDsKKworICAgICFpc1ZhbGlkQ29udGFpbmVy
KGNvbnRhaW5lcikgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52
YXJpYW50KGZhbHNlLCAndW5tb3VudENvbXBvbmVudEF0Tm9kZSguLi4pOiBUYXJnZXQgY29udGFp
bmVyIGlzIG5vdCBhIERPTSBlbGVtZW50LicpIDogX3Byb2RJbnZhcmlhbnQoJzQwJykgOiB2b2lk
IDA7CisKKyAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgewor
ICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIW5v
ZGVJc1JlbmRlcmVkQnlPdGhlckluc3RhbmNlKGNvbnRhaW5lciksICd1bm1vdW50Q29tcG9uZW50
QXROb2RlKCk6IFRoZSBub2RlIHlvdVwncmUgYXR0ZW1wdGluZyB0byB1bm1vdW50ICcgKyAnd2Fz
IHJlbmRlcmVkIGJ5IGFub3RoZXIgY29weSBvZiBSZWFjdC4nKSA6IHZvaWQgMDsKKyAgICB9CisK
KyAgICB2YXIgcHJldkNvbXBvbmVudCA9IGdldFRvcExldmVsV3JhcHBlckluQ29udGFpbmVyKGNv
bnRhaW5lcik7CisgICAgaWYgKCFwcmV2Q29tcG9uZW50KSB7CisgICAgICAvLyBDaGVjayBpZiB0
aGUgbm9kZSBiZWluZyB1bm1vdW50ZWQgd2FzIHJlbmRlcmVkIGJ5IFJlYWN0LCBidXQgaXNuJ3Qg
YQorICAgICAgLy8gcm9vdCBub2RlLgorICAgICAgdmFyIGNvbnRhaW5lckhhc05vblJvb3RSZWFj
dENoaWxkID0gaGFzTm9uUm9vdFJlYWN0Q2hpbGQoY29udGFpbmVyKTsKKworICAgICAgLy8gQ2hl
Y2sgaWYgdGhlIGNvbnRhaW5lciBpdHNlbGYgaXMgYSBSZWFjdCByb290IG5vZGUuCisgICAgICB2
YXIgaXNDb250YWluZXJSZWFjdFJvb3QgPSBjb250YWluZXIubm9kZVR5cGUgPT09IDEgJiYgY29u
dGFpbmVyLmhhc0F0dHJpYnV0ZShST09UX0FUVFJfTkFNRSk7CisKKyAgICAgIGlmIChwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAgIHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCFjb250YWluZXJIYXNOb25Sb290UmVh
Y3RDaGlsZCwgJ3VubW91bnRDb21wb25lbnRBdE5vZGUoKTogVGhlIG5vZGUgeW91XCdyZSBhdHRl
bXB0aW5nIHRvIHVubW91bnQgJyArICd3YXMgcmVuZGVyZWQgYnkgUmVhY3QgYW5kIGlzIG5vdCBh
IHRvcC1sZXZlbCBjb250YWluZXIuICVzJywgaXNDb250YWluZXJSZWFjdFJvb3QgPyAnWW91IG1h
eSBoYXZlIGFjY2lkZW50YWxseSBwYXNzZWQgaW4gYSBSZWFjdCByb290IG5vZGUgaW5zdGVhZCAn
ICsgJ29mIGl0cyBjb250YWluZXIuJyA6ICdJbnN0ZWFkLCBoYXZlIHRoZSBwYXJlbnQgY29tcG9u
ZW50IHVwZGF0ZSBpdHMgc3RhdGUgYW5kICcgKyAncmVyZW5kZXIgaW4gb3JkZXIgdG8gcmVtb3Zl
IHRoaXMgY29tcG9uZW50LicpIDogdm9pZCAwOworICAgICAgfQorCisgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorICAgIGRlbGV0ZSBpbnN0YW5jZXNCeVJlYWN0Um9vdElEW3ByZXZDb21wb25l
bnQuX2luc3RhbmNlLnJvb3RJRF07CisgICAgUmVhY3RVcGRhdGVzLmJhdGNoZWRVcGRhdGVzKHVu
bW91bnRDb21wb25lbnRGcm9tTm9kZSwgcHJldkNvbXBvbmVudCwgY29udGFpbmVyLCBmYWxzZSk7
CisgICAgcmV0dXJuIHRydWU7CisgIH0sCisKKyAgX21vdW50SW1hZ2VJbnRvTm9kZTogZnVuY3Rp
b24gKG1hcmt1cCwgY29udGFpbmVyLCBpbnN0YW5jZSwgc2hvdWxkUmV1c2VNYXJrdXAsIHRyYW5z
YWN0aW9uKSB7CisgICAgIWlzVmFsaWRDb250YWluZXIoY29udGFpbmVyKSA/IHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdtb3VudENvbXBv
bmVudEludG9Ob2RlKC4uLik6IFRhcmdldCBjb250YWluZXIgaXMgbm90IHZhbGlkLicpIDogX3By
b2RJbnZhcmlhbnQoJzQxJykgOiB2b2lkIDA7CisKKyAgICBpZiAoc2hvdWxkUmV1c2VNYXJrdXAp
IHsKKyAgICAgIHZhciByb290RWxlbWVudCA9IGdldFJlYWN0Um9vdEVsZW1lbnRJbkNvbnRhaW5l
cihjb250YWluZXIpOworICAgICAgaWYgKFJlYWN0TWFya3VwQ2hlY2tzdW0uY2FuUmV1c2VNYXJr
dXAobWFya3VwLCByb290RWxlbWVudCkpIHsKKyAgICAgICAgUmVhY3RET01Db21wb25lbnRUcmVl
LnByZWNhY2hlTm9kZShpbnN0YW5jZSwgcm9vdEVsZW1lbnQpOworICAgICAgICByZXR1cm47Cisg
ICAgICB9IGVsc2UgeworICAgICAgICB2YXIgY2hlY2tzdW0gPSByb290RWxlbWVudC5nZXRBdHRy
aWJ1dGUoUmVhY3RNYXJrdXBDaGVja3N1bS5DSEVDS1NVTV9BVFRSX05BTUUpOworICAgICAgICBy
b290RWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoUmVhY3RNYXJrdXBDaGVja3N1bS5DSEVDS1NVTV9B
VFRSX05BTUUpOworCisgICAgICAgIHZhciByb290TWFya3VwID0gcm9vdEVsZW1lbnQub3V0ZXJI
VE1MOworICAgICAgICByb290RWxlbWVudC5zZXRBdHRyaWJ1dGUoUmVhY3RNYXJrdXBDaGVja3N1
bS5DSEVDS1NVTV9BVFRSX05BTUUsIGNoZWNrc3VtKTsKKworICAgICAgICB2YXIgbm9ybWFsaXpl
ZE1hcmt1cCA9IG1hcmt1cDsKKyAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicpIHsKKyAgICAgICAgICAvLyBiZWNhdXNlIHJvb3RNYXJrdXAgaXMgcmV0cmll
dmVkIGZyb20gdGhlIERPTSwgdmFyaW91cyBub3JtYWxpemF0aW9ucworICAgICAgICAgIC8vIHdp
bGwgaGF2ZSBvY2N1cnJlZCB3aGljaCB3aWxsIG5vdCBiZSBwcmVzZW50IGluIGBtYXJrdXBgLiBI
ZXJlLAorICAgICAgICAgIC8vIGluc2VydCBtYXJrdXAgaW50byBhIDxkaXY+IG9yIDxpZnJhbWU+
IGRlcGVuZGluZyBvbiB0aGUgY29udGFpbmVyCisgICAgICAgICAgLy8gdHlwZSB0byBwZXJmb3Jt
IHRoZSBzYW1lIG5vcm1hbGl6YXRpb25zIGJlZm9yZSBjb21wYXJpbmcuCisgICAgICAgICAgdmFy
IG5vcm1hbGl6ZXI7CisgICAgICAgICAgaWYgKGNvbnRhaW5lci5ub2RlVHlwZSA9PT0gRUxFTUVO
VF9OT0RFX1RZUEUpIHsKKyAgICAgICAgICAgIG5vcm1hbGl6ZXIgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdkaXYnKTsKKyAgICAgICAgICAgIG5vcm1hbGl6ZXIuaW5uZXJIVE1MID0gbWFya3Vw
OworICAgICAgICAgICAgbm9ybWFsaXplZE1hcmt1cCA9IG5vcm1hbGl6ZXIuaW5uZXJIVE1MOwor
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBub3JtYWxpemVyID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnaWZyYW1lJyk7CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENo
aWxkKG5vcm1hbGl6ZXIpOworICAgICAgICAgICAgbm9ybWFsaXplci5jb250ZW50RG9jdW1lbnQu
d3JpdGUobWFya3VwKTsKKyAgICAgICAgICAgIG5vcm1hbGl6ZWRNYXJrdXAgPSBub3JtYWxpemVy
LmNvbnRlbnREb2N1bWVudC5kb2N1bWVudEVsZW1lbnQub3V0ZXJIVE1MOworICAgICAgICAgICAg
ZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChub3JtYWxpemVyKTsKKyAgICAgICAgICB9CisgICAg
ICAgIH0KKworICAgICAgICB2YXIgZGlmZkluZGV4ID0gZmlyc3REaWZmZXJlbmNlSW5kZXgobm9y
bWFsaXplZE1hcmt1cCwgcm9vdE1hcmt1cCk7CisgICAgICAgIHZhciBkaWZmZXJlbmNlID0gJyAo
Y2xpZW50KSAnICsgbm9ybWFsaXplZE1hcmt1cC5zdWJzdHJpbmcoZGlmZkluZGV4IC0gMjAsIGRp
ZmZJbmRleCArIDIwKSArICdcbiAoc2VydmVyKSAnICsgcm9vdE1hcmt1cC5zdWJzdHJpbmcoZGlm
ZkluZGV4IC0gMjAsIGRpZmZJbmRleCArIDIwKTsKKworICAgICAgICAhKGNvbnRhaW5lci5ub2Rl
VHlwZSAhPT0gRE9DX05PREVfVFlQRSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnWW91XCdyZSB0cnlpbmcgdG8gcmVuZGVyIGEgY29t
cG9uZW50IHRvIHRoZSBkb2N1bWVudCB1c2luZyBzZXJ2ZXIgcmVuZGVyaW5nIGJ1dCB0aGUgY2hl
Y2tzdW0gd2FzIGludmFsaWQuIFRoaXMgdXN1YWxseSBtZWFucyB5b3UgcmVuZGVyZWQgYSBkaWZm
ZXJlbnQgY29tcG9uZW50IHR5cGUgb3IgcHJvcHMgb24gdGhlIGNsaWVudCBmcm9tIHRoZSBvbmUg
b24gdGhlIHNlcnZlciwgb3IgeW91ciByZW5kZXIoKSBtZXRob2RzIGFyZSBpbXB1cmUuIFJlYWN0
IGNhbm5vdCBoYW5kbGUgdGhpcyBjYXNlIGR1ZSB0byBjcm9zcy1icm93c2VyIHF1aXJrcyBieSBy
ZW5kZXJpbmcgYXQgdGhlIGRvY3VtZW50IHJvb3QuIFlvdSBzaG91bGQgbG9vayBmb3IgZW52aXJv
bm1lbnQgZGVwZW5kZW50IGNvZGUgaW4geW91ciBjb21wb25lbnRzIGFuZCBlbnN1cmUgdGhlIHBy
b3BzIGFyZSB0aGUgc2FtZSBjbGllbnQgYW5kIHNlcnZlciBzaWRlOlxuJXMnLCBkaWZmZXJlbmNl
KSA6IF9wcm9kSW52YXJpYW50KCc0MicsIGRpZmZlcmVuY2UpIDogdm9pZCAwOworCisgICAgICAg
IGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAgICAg
cHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdS
ZWFjdCBhdHRlbXB0ZWQgdG8gcmV1c2UgbWFya3VwIGluIGEgY29udGFpbmVyIGJ1dCB0aGUgJyAr
ICdjaGVja3N1bSB3YXMgaW52YWxpZC4gVGhpcyBnZW5lcmFsbHkgbWVhbnMgdGhhdCB5b3UgYXJl
ICcgKyAndXNpbmcgc2VydmVyIHJlbmRlcmluZyBhbmQgdGhlIG1hcmt1cCBnZW5lcmF0ZWQgb24g
dGhlICcgKyAnc2VydmVyIHdhcyBub3Qgd2hhdCB0aGUgY2xpZW50IHdhcyBleHBlY3RpbmcuIFJl
YWN0IGluamVjdGVkICcgKyAnbmV3IG1hcmt1cCB0byBjb21wZW5zYXRlIHdoaWNoIHdvcmtzIGJ1
dCB5b3UgaGF2ZSBsb3N0IG1hbnkgJyArICdvZiB0aGUgYmVuZWZpdHMgb2Ygc2VydmVyIHJlbmRl
cmluZy4gSW5zdGVhZCwgZmlndXJlIG91dCAnICsgJ3doeSB0aGUgbWFya3VwIGJlaW5nIGdlbmVy
YXRlZCBpcyBkaWZmZXJlbnQgb24gdGhlIGNsaWVudCAnICsgJ29yIHNlcnZlcjpcbiVzJywgZGlm
ZmVyZW5jZSkgOiB2b2lkIDA7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisKKyAgICAhKGNv
bnRhaW5lci5ub2RlVHlwZSAhPT0gRE9DX05PREVfVFlQRSkgPyBwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnWW91XCdyZSB0cnlpbmcgdG8g
cmVuZGVyIGEgY29tcG9uZW50IHRvIHRoZSBkb2N1bWVudCBidXQgeW91IGRpZG5cJ3QgdXNlIHNl
cnZlciByZW5kZXJpbmcuIFdlIGNhblwndCBkbyB0aGlzIHdpdGhvdXQgdXNpbmcgc2VydmVyIHJl
bmRlcmluZyBkdWUgdG8gY3Jvc3MtYnJvd3NlciBxdWlya3MuIFNlZSBSZWFjdERPTVNlcnZlci5y
ZW5kZXJUb1N0cmluZygpIGZvciBzZXJ2ZXIgcmVuZGVyaW5nLicpIDogX3Byb2RJbnZhcmlhbnQo
JzQzJykgOiB2b2lkIDA7CisKKyAgICBpZiAodHJhbnNhY3Rpb24udXNlQ3JlYXRlRWxlbWVudCkg
eworICAgICAgd2hpbGUgKGNvbnRhaW5lci5sYXN0Q2hpbGQpIHsKKyAgICAgICAgY29udGFpbmVy
LnJlbW92ZUNoaWxkKGNvbnRhaW5lci5sYXN0Q2hpbGQpOworICAgICAgfQorICAgICAgRE9NTGF6
eVRyZWUuaW5zZXJ0VHJlZUJlZm9yZShjb250YWluZXIsIG1hcmt1cCwgbnVsbCk7CisgICAgfSBl
bHNlIHsKKyAgICAgIHNldElubmVySFRNTChjb250YWluZXIsIG1hcmt1cCk7CisgICAgICBSZWFj
dERPTUNvbXBvbmVudFRyZWUucHJlY2FjaGVOb2RlKGluc3RhbmNlLCBjb250YWluZXIuZmlyc3RD
aGlsZCk7CisgICAgfQorCisgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVj
dGlvbicpIHsKKyAgICAgIHZhciBob3N0Tm9kZSA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRJ
bnN0YW5jZUZyb21Ob2RlKGNvbnRhaW5lci5maXJzdENoaWxkKTsKKyAgICAgIGlmIChob3N0Tm9k
ZS5fZGVidWdJRCAhPT0gMCkgeworICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rv
b2wub25Ib3N0T3BlcmF0aW9uKHsKKyAgICAgICAgICBpbnN0YW5jZUlEOiBob3N0Tm9kZS5fZGVi
dWdJRCwKKyAgICAgICAgICB0eXBlOiAnbW91bnQnLAorICAgICAgICAgIHBheWxvYWQ6IG1hcmt1
cC50b1N0cmluZygpCisgICAgICAgIH0pOworICAgICAgfQorICAgIH0KKyAgfQorfTsKKworbW9k
dWxlLmV4cG9ydHMgPSBSZWFjdE1vdW50OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1Jl
YWN0TXVsdGlDaGlsZC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1k
b20vbGliL1JlYWN0TXVsdGlDaGlsZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNTIwMDVmZjIwYzcyYjAzNzBi
YjU1YmNkY2U3YzUzYWNkZGJhZTBkCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVh
Y3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RNdWx0aUNoaWxkLmpzCkBAIC0wLDAg
KzEsNDQ5IEBACisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMu
CisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGlj
ZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5T
RSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRp
dGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFU
RU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3Qn
OworCit2YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0UHJvZEludmFyaWFudCcp
OworCit2YXIgUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudCA9IHJlcXVpcmUoJy4vUmVhY3RDb21w
b25lbnRFbnZpcm9ubWVudCcpOwordmFyIFJlYWN0SW5zdGFuY2VNYXAgPSByZXF1aXJlKCcuL1Jl
YWN0SW5zdGFuY2VNYXAnKTsKK3ZhciBSZWFjdEluc3RydW1lbnRhdGlvbiA9IHJlcXVpcmUoJy4v
UmVhY3RJbnN0cnVtZW50YXRpb24nKTsKKwordmFyIFJlYWN0Q3VycmVudE93bmVyID0gcmVxdWly
ZSgncmVhY3QvbGliL1JlYWN0Q3VycmVudE93bmVyJyk7Cit2YXIgUmVhY3RSZWNvbmNpbGVyID0g
cmVxdWlyZSgnLi9SZWFjdFJlY29uY2lsZXInKTsKK3ZhciBSZWFjdENoaWxkUmVjb25jaWxlciA9
IHJlcXVpcmUoJy4vUmVhY3RDaGlsZFJlY29uY2lsZXInKTsKKwordmFyIGVtcHR5RnVuY3Rpb24g
PSByZXF1aXJlKCdmYmpzL2xpYi9lbXB0eUZ1bmN0aW9uJyk7Cit2YXIgZmxhdHRlbkNoaWxkcmVu
ID0gcmVxdWlyZSgnLi9mbGF0dGVuQ2hpbGRyZW4nKTsKK3ZhciBpbnZhcmlhbnQgPSByZXF1aXJl
KCdmYmpzL2xpYi9pbnZhcmlhbnQnKTsKKworLyoqCisgKiBNYWtlIGFuIHVwZGF0ZSBmb3IgbWFy
a3VwIHRvIGJlIHJlbmRlcmVkIGFuZCBpbnNlcnRlZCBhdCBhIHN1cHBsaWVkIGluZGV4LgorICoK
KyAqIEBwYXJhbSB7c3RyaW5nfSBtYXJrdXAgTWFya3VwIHRoYXQgcmVuZGVycyBpbnRvIGFuIGVs
ZW1lbnQuCisgKiBAcGFyYW0ge251bWJlcn0gdG9JbmRleCBEZXN0aW5hdGlvbiBpbmRleC4KKyAq
IEBwcml2YXRlCisgKi8KK2Z1bmN0aW9uIG1ha2VJbnNlcnRNYXJrdXAobWFya3VwLCBhZnRlck5v
ZGUsIHRvSW5kZXgpIHsKKyAgLy8gTk9URTogTnVsbCB2YWx1ZXMgcmVkdWNlIGhpZGRlbiBjbGFz
c2VzLgorICByZXR1cm4geworICAgIHR5cGU6ICdJTlNFUlRfTUFSS1VQJywKKyAgICBjb250ZW50
OiBtYXJrdXAsCisgICAgZnJvbUluZGV4OiBudWxsLAorICAgIGZyb21Ob2RlOiBudWxsLAorICAg
IHRvSW5kZXg6IHRvSW5kZXgsCisgICAgYWZ0ZXJOb2RlOiBhZnRlck5vZGUKKyAgfTsKK30KKwor
LyoqCisgKiBNYWtlIGFuIHVwZGF0ZSBmb3IgbW92aW5nIGFuIGV4aXN0aW5nIGVsZW1lbnQgdG8g
YW5vdGhlciBpbmRleC4KKyAqCisgKiBAcGFyYW0ge251bWJlcn0gZnJvbUluZGV4IFNvdXJjZSBp
bmRleCBvZiB0aGUgZXhpc3RpbmcgZWxlbWVudC4KKyAqIEBwYXJhbSB7bnVtYmVyfSB0b0luZGV4
IERlc3RpbmF0aW9uIGluZGV4IG9mIHRoZSBlbGVtZW50LgorICogQHByaXZhdGUKKyAqLworZnVu
Y3Rpb24gbWFrZU1vdmUoY2hpbGQsIGFmdGVyTm9kZSwgdG9JbmRleCkgeworICAvLyBOT1RFOiBO
dWxsIHZhbHVlcyByZWR1Y2UgaGlkZGVuIGNsYXNzZXMuCisgIHJldHVybiB7CisgICAgdHlwZTog
J01PVkVfRVhJU1RJTkcnLAorICAgIGNvbnRlbnQ6IG51bGwsCisgICAgZnJvbUluZGV4OiBjaGls
ZC5fbW91bnRJbmRleCwKKyAgICBmcm9tTm9kZTogUmVhY3RSZWNvbmNpbGVyLmdldEhvc3ROb2Rl
KGNoaWxkKSwKKyAgICB0b0luZGV4OiB0b0luZGV4LAorICAgIGFmdGVyTm9kZTogYWZ0ZXJOb2Rl
CisgIH07Cit9CisKKy8qKgorICogTWFrZSBhbiB1cGRhdGUgZm9yIHJlbW92aW5nIGFuIGVsZW1l
bnQgYXQgYW4gaW5kZXguCisgKgorICogQHBhcmFtIHtudW1iZXJ9IGZyb21JbmRleCBJbmRleCBv
ZiB0aGUgZWxlbWVudCB0byByZW1vdmUuCisgKiBAcHJpdmF0ZQorICovCitmdW5jdGlvbiBtYWtl
UmVtb3ZlKGNoaWxkLCBub2RlKSB7CisgIC8vIE5PVEU6IE51bGwgdmFsdWVzIHJlZHVjZSBoaWRk
ZW4gY2xhc3Nlcy4KKyAgcmV0dXJuIHsKKyAgICB0eXBlOiAnUkVNT1ZFX05PREUnLAorICAgIGNv
bnRlbnQ6IG51bGwsCisgICAgZnJvbUluZGV4OiBjaGlsZC5fbW91bnRJbmRleCwKKyAgICBmcm9t
Tm9kZTogbm9kZSwKKyAgICB0b0luZGV4OiBudWxsLAorICAgIGFmdGVyTm9kZTogbnVsbAorICB9
OworfQorCisvKioKKyAqIE1ha2UgYW4gdXBkYXRlIGZvciBzZXR0aW5nIHRoZSBtYXJrdXAgb2Yg
YSBub2RlLgorICoKKyAqIEBwYXJhbSB7c3RyaW5nfSBtYXJrdXAgTWFya3VwIHRoYXQgcmVuZGVy
cyBpbnRvIGFuIGVsZW1lbnQuCisgKiBAcHJpdmF0ZQorICovCitmdW5jdGlvbiBtYWtlU2V0TWFy
a3VwKG1hcmt1cCkgeworICAvLyBOT1RFOiBOdWxsIHZhbHVlcyByZWR1Y2UgaGlkZGVuIGNsYXNz
ZXMuCisgIHJldHVybiB7CisgICAgdHlwZTogJ1NFVF9NQVJLVVAnLAorICAgIGNvbnRlbnQ6IG1h
cmt1cCwKKyAgICBmcm9tSW5kZXg6IG51bGwsCisgICAgZnJvbU5vZGU6IG51bGwsCisgICAgdG9J
bmRleDogbnVsbCwKKyAgICBhZnRlck5vZGU6IG51bGwKKyAgfTsKK30KKworLyoqCisgKiBNYWtl
IGFuIHVwZGF0ZSBmb3Igc2V0dGluZyB0aGUgdGV4dCBjb250ZW50LgorICoKKyAqIEBwYXJhbSB7
c3RyaW5nfSB0ZXh0Q29udGVudCBUZXh0IGNvbnRlbnQgdG8gc2V0LgorICogQHByaXZhdGUKKyAq
LworZnVuY3Rpb24gbWFrZVRleHRDb250ZW50KHRleHRDb250ZW50KSB7CisgIC8vIE5PVEU6IE51
bGwgdmFsdWVzIHJlZHVjZSBoaWRkZW4gY2xhc3Nlcy4KKyAgcmV0dXJuIHsKKyAgICB0eXBlOiAn
VEVYVF9DT05URU5UJywKKyAgICBjb250ZW50OiB0ZXh0Q29udGVudCwKKyAgICBmcm9tSW5kZXg6
IG51bGwsCisgICAgZnJvbU5vZGU6IG51bGwsCisgICAgdG9JbmRleDogbnVsbCwKKyAgICBhZnRl
ck5vZGU6IG51bGwKKyAgfTsKK30KKworLyoqCisgKiBQdXNoIGFuIHVwZGF0ZSwgaWYgYW55LCBv
bnRvIHRoZSBxdWV1ZS4gQ3JlYXRlcyBhIG5ldyBxdWV1ZSBpZiBub25lIGlzCisgKiBwYXNzZWQg
YW5kIGFsd2F5cyByZXR1cm5zIHRoZSBxdWV1ZS4gTXV0YXRpdmUuCisgKi8KK2Z1bmN0aW9uIGVu
cXVldWUocXVldWUsIHVwZGF0ZSkgeworICBpZiAodXBkYXRlKSB7CisgICAgcXVldWUgPSBxdWV1
ZSB8fCBbXTsKKyAgICBxdWV1ZS5wdXNoKHVwZGF0ZSk7CisgIH0KKyAgcmV0dXJuIHF1ZXVlOwor
fQorCisvKioKKyAqIFByb2Nlc3NlcyBhbnkgZW5xdWV1ZWQgdXBkYXRlcy4KKyAqCisgKiBAcHJp
dmF0ZQorICovCitmdW5jdGlvbiBwcm9jZXNzUXVldWUoaW5zdCwgdXBkYXRlUXVldWUpIHsKKyAg
UmVhY3RDb21wb25lbnRFbnZpcm9ubWVudC5wcm9jZXNzQ2hpbGRyZW5VcGRhdGVzKGluc3QsIHVw
ZGF0ZVF1ZXVlKTsKK30KKwordmFyIHNldENoaWxkcmVuRm9ySW5zdHJ1bWVudGF0aW9uID0gZW1w
dHlGdW5jdGlvbjsKK2lmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7
CisgIHZhciBnZXREZWJ1Z0lEID0gZnVuY3Rpb24gKGluc3QpIHsKKyAgICBpZiAoIWluc3QuX2Rl
YnVnSUQpIHsKKyAgICAgIC8vIENoZWNrIGZvciBBUlQtbGlrZSBpbnN0YW5jZXMuIFRPRE86IFRo
aXMgaXMgc2lsbHkvZ3Jvc3MuCisgICAgICB2YXIgaW50ZXJuYWw7CisgICAgICBpZiAoaW50ZXJu
YWwgPSBSZWFjdEluc3RhbmNlTWFwLmdldChpbnN0KSkgeworICAgICAgICBpbnN0ID0gaW50ZXJu
YWw7CisgICAgICB9CisgICAgfQorICAgIHJldHVybiBpbnN0Ll9kZWJ1Z0lEOworICB9OworICBz
ZXRDaGlsZHJlbkZvckluc3RydW1lbnRhdGlvbiA9IGZ1bmN0aW9uIChjaGlsZHJlbikgeworICAg
IHZhciBkZWJ1Z0lEID0gZ2V0RGVidWdJRCh0aGlzKTsKKyAgICAvLyBUT0RPOiBSZWFjdCBOYXRp
dmUgZW1wdHkgY29tcG9uZW50cyBhcmUgYWxzbyBtdWx0aWNoaWxkLgorICAgIC8vIFRoaXMgbWVh
bnMgdGhleSBzdGlsbCBnZXQgaW50byB0aGlzIG1ldGhvZCBidXQgZG9uJ3QgaGF2ZSBfZGVidWdJ
RC4KKyAgICBpZiAoZGVidWdJRCAhPT0gMCkgeworICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24u
ZGVidWdUb29sLm9uU2V0Q2hpbGRyZW4oZGVidWdJRCwgY2hpbGRyZW4gPyBPYmplY3Qua2V5cyhj
aGlsZHJlbikubWFwKGZ1bmN0aW9uIChrZXkpIHsKKyAgICAgICAgcmV0dXJuIGNoaWxkcmVuW2tl
eV0uX2RlYnVnSUQ7CisgICAgICB9KSA6IFtdKTsKKyAgICB9CisgIH07Cit9CisKKy8qKgorICog
UmVhY3RNdWx0aUNoaWxkIGFyZSBjYXBhYmxlIG9mIHJlY29uY2lsaW5nIG11bHRpcGxlIGNoaWxk
cmVuLgorICoKKyAqIEBjbGFzcyBSZWFjdE11bHRpQ2hpbGQKKyAqIEBpbnRlcm5hbAorICovCit2
YXIgUmVhY3RNdWx0aUNoaWxkID0geworCisgIC8qKgorICAgKiBQcm92aWRlcyBjb21tb24gZnVu
Y3Rpb25hbGl0eSBmb3IgY29tcG9uZW50cyB0aGF0IG11c3QgcmVjb25jaWxlIG11bHRpcGxlCisg
ICAqIGNoaWxkcmVuLiBUaGlzIGlzIHVzZWQgYnkgYFJlYWN0RE9NQ29tcG9uZW50YCB0byBtb3Vu
dCwgdXBkYXRlLCBhbmQKKyAgICogdW5tb3VudCBjaGlsZCBjb21wb25lbnRzLgorICAgKgorICAg
KiBAbGVuZHMge1JlYWN0TXVsdGlDaGlsZC5wcm90b3R5cGV9CisgICAqLworICBNaXhpbjogewor
CisgICAgX3JlY29uY2lsZXJJbnN0YW50aWF0ZUNoaWxkcmVuOiBmdW5jdGlvbiAobmVzdGVkQ2hp
bGRyZW4sIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7CisgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9E
RV9FTlYgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgICB2YXIgc2VsZkRlYnVnSUQgPSBnZXRE
ZWJ1Z0lEKHRoaXMpOworICAgICAgICBpZiAodGhpcy5fY3VycmVudEVsZW1lbnQpIHsKKyAgICAg
ICAgICB0cnkgeworICAgICAgICAgICAgUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCA9IHRoaXMu
X2N1cnJlbnRFbGVtZW50Ll9vd25lcjsKKyAgICAgICAgICAgIHJldHVybiBSZWFjdENoaWxkUmVj
b25jaWxlci5pbnN0YW50aWF0ZUNoaWxkcmVuKG5lc3RlZENoaWxkcmVuLCB0cmFuc2FjdGlvbiwg
Y29udGV4dCwgc2VsZkRlYnVnSUQpOworICAgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAg
ICBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ID0gbnVsbDsKKyAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgIH0KKyAgICAgIHJldHVybiBSZWFjdENoaWxkUmVjb25jaWxlci5pbnN0YW50aWF0
ZUNoaWxkcmVuKG5lc3RlZENoaWxkcmVuLCB0cmFuc2FjdGlvbiwgY29udGV4dCk7CisgICAgfSwK
KworICAgIF9yZWNvbmNpbGVyVXBkYXRlQ2hpbGRyZW46IGZ1bmN0aW9uIChwcmV2Q2hpbGRyZW4s
IG5leHROZXN0ZWRDaGlsZHJlbkVsZW1lbnRzLCBtb3VudEltYWdlcywgcmVtb3ZlZE5vZGVzLCB0
cmFuc2FjdGlvbiwgY29udGV4dCkgeworICAgICAgdmFyIG5leHRDaGlsZHJlbjsKKyAgICAgIHZh
ciBzZWxmRGVidWdJRCA9IDA7CisgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJykgeworICAgICAgICBzZWxmRGVidWdJRCA9IGdldERlYnVnSUQodGhpcyk7Cisg
ICAgICAgIGlmICh0aGlzLl9jdXJyZW50RWxlbWVudCkgeworICAgICAgICAgIHRyeSB7CisgICAg
ICAgICAgICBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ID0gdGhpcy5fY3VycmVudEVsZW1lbnQu
X293bmVyOworICAgICAgICAgICAgbmV4dENoaWxkcmVuID0gZmxhdHRlbkNoaWxkcmVuKG5leHRO
ZXN0ZWRDaGlsZHJlbkVsZW1lbnRzLCBzZWxmRGVidWdJRCk7CisgICAgICAgICAgfSBmaW5hbGx5
IHsKKyAgICAgICAgICAgIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPSBudWxsOworICAgICAg
ICAgIH0KKyAgICAgICAgICBSZWFjdENoaWxkUmVjb25jaWxlci51cGRhdGVDaGlsZHJlbihwcmV2
Q2hpbGRyZW4sIG5leHRDaGlsZHJlbiwgbW91bnRJbWFnZXMsIHJlbW92ZWROb2RlcywgdHJhbnNh
Y3Rpb24sIHRoaXMsIHRoaXMuX2hvc3RDb250YWluZXJJbmZvLCBjb250ZXh0LCBzZWxmRGVidWdJ
RCk7CisgICAgICAgICAgcmV0dXJuIG5leHRDaGlsZHJlbjsKKyAgICAgICAgfQorICAgICAgfQor
ICAgICAgbmV4dENoaWxkcmVuID0gZmxhdHRlbkNoaWxkcmVuKG5leHROZXN0ZWRDaGlsZHJlbkVs
ZW1lbnRzLCBzZWxmRGVidWdJRCk7CisgICAgICBSZWFjdENoaWxkUmVjb25jaWxlci51cGRhdGVD
aGlsZHJlbihwcmV2Q2hpbGRyZW4sIG5leHRDaGlsZHJlbiwgbW91bnRJbWFnZXMsIHJlbW92ZWRO
b2RlcywgdHJhbnNhY3Rpb24sIHRoaXMsIHRoaXMuX2hvc3RDb250YWluZXJJbmZvLCBjb250ZXh0
LCBzZWxmRGVidWdJRCk7CisgICAgICByZXR1cm4gbmV4dENoaWxkcmVuOworICAgIH0sCisKKyAg
ICAvKioKKyAgICAgKiBHZW5lcmF0ZXMgYSAibW91bnQgaW1hZ2UiIGZvciBlYWNoIG9mIHRoZSBz
dXBwbGllZCBjaGlsZHJlbi4gSW4gdGhlIGNhc2UKKyAgICAgKiBvZiBgUmVhY3RET01Db21wb25l
bnRgLCBhIG1vdW50IGltYWdlIGlzIGEgc3RyaW5nIG9mIG1hcmt1cC4KKyAgICAgKgorICAgICAq
IEBwYXJhbSB7P29iamVjdH0gbmVzdGVkQ2hpbGRyZW4gTmVzdGVkIGNoaWxkIG1hcHMuCisgICAg
ICogQHJldHVybiB7YXJyYXl9IEFuIGFycmF5IG9mIG1vdW50ZWQgcmVwcmVzZW50YXRpb25zLgor
ICAgICAqIEBpbnRlcm5hbAorICAgICAqLworICAgIG1vdW50Q2hpbGRyZW46IGZ1bmN0aW9uIChu
ZXN0ZWRDaGlsZHJlbiwgdHJhbnNhY3Rpb24sIGNvbnRleHQpIHsKKyAgICAgIHZhciBjaGlsZHJl
biA9IHRoaXMuX3JlY29uY2lsZXJJbnN0YW50aWF0ZUNoaWxkcmVuKG5lc3RlZENoaWxkcmVuLCB0
cmFuc2FjdGlvbiwgY29udGV4dCk7CisgICAgICB0aGlzLl9yZW5kZXJlZENoaWxkcmVuID0gY2hp
bGRyZW47CisKKyAgICAgIHZhciBtb3VudEltYWdlcyA9IFtdOworICAgICAgdmFyIGluZGV4ID0g
MDsKKyAgICAgIGZvciAodmFyIG5hbWUgaW4gY2hpbGRyZW4pIHsKKyAgICAgICAgaWYgKGNoaWxk
cmVuLmhhc093blByb3BlcnR5KG5hbWUpKSB7CisgICAgICAgICAgdmFyIGNoaWxkID0gY2hpbGRy
ZW5bbmFtZV07CisgICAgICAgICAgdmFyIHNlbGZEZWJ1Z0lEID0gMDsKKyAgICAgICAgICBpZiAo
cHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgICAgICAgc2Vs
ZkRlYnVnSUQgPSBnZXREZWJ1Z0lEKHRoaXMpOworICAgICAgICAgIH0KKyAgICAgICAgICB2YXIg
bW91bnRJbWFnZSA9IFJlYWN0UmVjb25jaWxlci5tb3VudENvbXBvbmVudChjaGlsZCwgdHJhbnNh
Y3Rpb24sIHRoaXMsIHRoaXMuX2hvc3RDb250YWluZXJJbmZvLCBjb250ZXh0LCBzZWxmRGVidWdJ
RCk7CisgICAgICAgICAgY2hpbGQuX21vdW50SW5kZXggPSBpbmRleCsrOworICAgICAgICAgIG1v
dW50SW1hZ2VzLnB1c2gobW91bnRJbWFnZSk7CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAg
aWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICAgc2V0
Q2hpbGRyZW5Gb3JJbnN0cnVtZW50YXRpb24uY2FsbCh0aGlzLCBjaGlsZHJlbik7CisgICAgICB9
CisKKyAgICAgIHJldHVybiBtb3VudEltYWdlczsKKyAgICB9LAorCisgICAgLyoqCisgICAgICog
UmVwbGFjZXMgYW55IHJlbmRlcmVkIGNoaWxkcmVuIHdpdGggYSB0ZXh0IGNvbnRlbnQgc3RyaW5n
LgorICAgICAqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5leHRDb250ZW50IFN0cmluZyBvZiBj
b250ZW50LgorICAgICAqIEBpbnRlcm5hbAorICAgICAqLworICAgIHVwZGF0ZVRleHRDb250ZW50
OiBmdW5jdGlvbiAobmV4dENvbnRlbnQpIHsKKyAgICAgIHZhciBwcmV2Q2hpbGRyZW4gPSB0aGlz
Ll9yZW5kZXJlZENoaWxkcmVuOworICAgICAgLy8gUmVtb3ZlIGFueSByZW5kZXJlZCBjaGlsZHJl
bi4KKyAgICAgIFJlYWN0Q2hpbGRSZWNvbmNpbGVyLnVubW91bnRDaGlsZHJlbihwcmV2Q2hpbGRy
ZW4sIGZhbHNlKTsKKyAgICAgIGZvciAodmFyIG5hbWUgaW4gcHJldkNoaWxkcmVuKSB7CisgICAg
ICAgIGlmIChwcmV2Q2hpbGRyZW4uaGFzT3duUHJvcGVydHkobmFtZSkpIHsKKyAgICAgICAgICAh
ZmFsc2UgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50
KGZhbHNlLCAndXBkYXRlVGV4dENvbnRlbnQgY2FsbGVkIG9uIG5vbi1lbXB0eSBjb21wb25lbnQu
JykgOiBfcHJvZEludmFyaWFudCgnMTE4JykgOiB2b2lkIDA7CisgICAgICAgIH0KKyAgICAgIH0K
KyAgICAgIC8vIFNldCBuZXcgdGV4dCBjb250ZW50LgorICAgICAgdmFyIHVwZGF0ZXMgPSBbbWFr
ZVRleHRDb250ZW50KG5leHRDb250ZW50KV07CisgICAgICBwcm9jZXNzUXVldWUodGhpcywgdXBk
YXRlcyk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIFJlcGxhY2VzIGFueSByZW5kZXJlZCBj
aGlsZHJlbiB3aXRoIGEgbWFya3VwIHN0cmluZy4KKyAgICAgKgorICAgICAqIEBwYXJhbSB7c3Ry
aW5nfSBuZXh0TWFya3VwIFN0cmluZyBvZiBtYXJrdXAuCisgICAgICogQGludGVybmFsCisgICAg
ICovCisgICAgdXBkYXRlTWFya3VwOiBmdW5jdGlvbiAobmV4dE1hcmt1cCkgeworICAgICAgdmFy
IHByZXZDaGlsZHJlbiA9IHRoaXMuX3JlbmRlcmVkQ2hpbGRyZW47CisgICAgICAvLyBSZW1vdmUg
YW55IHJlbmRlcmVkIGNoaWxkcmVuLgorICAgICAgUmVhY3RDaGlsZFJlY29uY2lsZXIudW5tb3Vu
dENoaWxkcmVuKHByZXZDaGlsZHJlbiwgZmFsc2UpOworICAgICAgZm9yICh2YXIgbmFtZSBpbiBw
cmV2Q2hpbGRyZW4pIHsKKyAgICAgICAgaWYgKHByZXZDaGlsZHJlbi5oYXNPd25Qcm9wZXJ0eShu
YW1lKSkgeworICAgICAgICAgICFmYWxzZSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJv
ZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICd1cGRhdGVUZXh0Q29udGVudCBjYWxsZWQgb24g
bm9uLWVtcHR5IGNvbXBvbmVudC4nKSA6IF9wcm9kSW52YXJpYW50KCcxMTgnKSA6IHZvaWQgMDsK
KyAgICAgICAgfQorICAgICAgfQorICAgICAgdmFyIHVwZGF0ZXMgPSBbbWFrZVNldE1hcmt1cChu
ZXh0TWFya3VwKV07CisgICAgICBwcm9jZXNzUXVldWUodGhpcywgdXBkYXRlcyk7CisgICAgfSwK
KworICAgIC8qKgorICAgICAqIFVwZGF0ZXMgdGhlIHJlbmRlcmVkIGNoaWxkcmVuIHdpdGggbmV3
IGNoaWxkcmVuLgorICAgICAqCisgICAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXh0TmVzdGVkQ2hp
bGRyZW5FbGVtZW50cyBOZXN0ZWQgY2hpbGQgZWxlbWVudCBtYXBzLgorICAgICAqIEBwYXJhbSB7
UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb24KKyAgICAgKiBAaW50ZXJuYWwK
KyAgICAgKi8KKyAgICB1cGRhdGVDaGlsZHJlbjogZnVuY3Rpb24gKG5leHROZXN0ZWRDaGlsZHJl
bkVsZW1lbnRzLCB0cmFuc2FjdGlvbiwgY29udGV4dCkgeworICAgICAgLy8gSG9vayB1c2VkIGJ5
IFJlYWN0IEFSVAorICAgICAgdGhpcy5fdXBkYXRlQ2hpbGRyZW4obmV4dE5lc3RlZENoaWxkcmVu
RWxlbWVudHMsIHRyYW5zYWN0aW9uLCBjb250ZXh0KTsKKyAgICB9LAorCisgICAgLyoqCisgICAg
ICogQHBhcmFtIHs/b2JqZWN0fSBuZXh0TmVzdGVkQ2hpbGRyZW5FbGVtZW50cyBOZXN0ZWQgY2hp
bGQgZWxlbWVudCBtYXBzLgorICAgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlv
bn0gdHJhbnNhY3Rpb24KKyAgICAgKiBAZmluYWwKKyAgICAgKiBAcHJvdGVjdGVkCisgICAgICov
CisgICAgX3VwZGF0ZUNoaWxkcmVuOiBmdW5jdGlvbiAobmV4dE5lc3RlZENoaWxkcmVuRWxlbWVu
dHMsIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7CisgICAgICB2YXIgcHJldkNoaWxkcmVuID0gdGhp
cy5fcmVuZGVyZWRDaGlsZHJlbjsKKyAgICAgIHZhciByZW1vdmVkTm9kZXMgPSB7fTsKKyAgICAg
IHZhciBtb3VudEltYWdlcyA9IFtdOworICAgICAgdmFyIG5leHRDaGlsZHJlbiA9IHRoaXMuX3Jl
Y29uY2lsZXJVcGRhdGVDaGlsZHJlbihwcmV2Q2hpbGRyZW4sIG5leHROZXN0ZWRDaGlsZHJlbkVs
ZW1lbnRzLCBtb3VudEltYWdlcywgcmVtb3ZlZE5vZGVzLCB0cmFuc2FjdGlvbiwgY29udGV4dCk7
CisgICAgICBpZiAoIW5leHRDaGlsZHJlbiAmJiAhcHJldkNoaWxkcmVuKSB7CisgICAgICAgIHJl
dHVybjsKKyAgICAgIH0KKyAgICAgIHZhciB1cGRhdGVzID0gbnVsbDsKKyAgICAgIHZhciBuYW1l
OworICAgICAgLy8gYG5leHRJbmRleGAgd2lsbCBpbmNyZW1lbnQgZm9yIGVhY2ggY2hpbGQgaW4g
YG5leHRDaGlsZHJlbmAsIGJ1dAorICAgICAgLy8gYGxhc3RJbmRleGAgd2lsbCBiZSB0aGUgbGFz
dCBpbmRleCB2aXNpdGVkIGluIGBwcmV2Q2hpbGRyZW5gLgorICAgICAgdmFyIG5leHRJbmRleCA9
IDA7CisgICAgICB2YXIgbGFzdEluZGV4ID0gMDsKKyAgICAgIC8vIGBuZXh0TW91bnRJbmRleGAg
d2lsbCBpbmNyZW1lbnQgZm9yIGVhY2ggbmV3bHkgbW91bnRlZCBjaGlsZC4KKyAgICAgIHZhciBu
ZXh0TW91bnRJbmRleCA9IDA7CisgICAgICB2YXIgbGFzdFBsYWNlZE5vZGUgPSBudWxsOworICAg
ICAgZm9yIChuYW1lIGluIG5leHRDaGlsZHJlbikgeworICAgICAgICBpZiAoIW5leHRDaGlsZHJl
bi5oYXNPd25Qcm9wZXJ0eShuYW1lKSkgeworICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9
CisgICAgICAgIHZhciBwcmV2Q2hpbGQgPSBwcmV2Q2hpbGRyZW4gJiYgcHJldkNoaWxkcmVuW25h
bWVdOworICAgICAgICB2YXIgbmV4dENoaWxkID0gbmV4dENoaWxkcmVuW25hbWVdOworICAgICAg
ICBpZiAocHJldkNoaWxkID09PSBuZXh0Q2hpbGQpIHsKKyAgICAgICAgICB1cGRhdGVzID0gZW5x
dWV1ZSh1cGRhdGVzLCB0aGlzLm1vdmVDaGlsZChwcmV2Q2hpbGQsIGxhc3RQbGFjZWROb2RlLCBu
ZXh0SW5kZXgsIGxhc3RJbmRleCkpOworICAgICAgICAgIGxhc3RJbmRleCA9IE1hdGgubWF4KHBy
ZXZDaGlsZC5fbW91bnRJbmRleCwgbGFzdEluZGV4KTsKKyAgICAgICAgICBwcmV2Q2hpbGQuX21v
dW50SW5kZXggPSBuZXh0SW5kZXg7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgaWYgKHBy
ZXZDaGlsZCkgeworICAgICAgICAgICAgLy8gVXBkYXRlIGBsYXN0SW5kZXhgIGJlZm9yZSBgX21v
dW50SW5kZXhgIGdldHMgdW5zZXQgYnkgdW5tb3VudGluZy4KKyAgICAgICAgICAgIGxhc3RJbmRl
eCA9IE1hdGgubWF4KHByZXZDaGlsZC5fbW91bnRJbmRleCwgbGFzdEluZGV4KTsKKyAgICAgICAg
ICAgIC8vIFRoZSBgcmVtb3ZlZE5vZGVzYCBsb29wIGJlbG93IHdpbGwgYWN0dWFsbHkgcmVtb3Zl
IHRoZSBjaGlsZC4KKyAgICAgICAgICB9CisgICAgICAgICAgLy8gVGhlIGNoaWxkIG11c3QgYmUg
aW5zdGFudGlhdGVkIGJlZm9yZSBpdCdzIG1vdW50ZWQuCisgICAgICAgICAgdXBkYXRlcyA9IGVu
cXVldWUodXBkYXRlcywgdGhpcy5fbW91bnRDaGlsZEF0SW5kZXgobmV4dENoaWxkLCBtb3VudElt
YWdlc1tuZXh0TW91bnRJbmRleF0sIGxhc3RQbGFjZWROb2RlLCBuZXh0SW5kZXgsIHRyYW5zYWN0
aW9uLCBjb250ZXh0KSk7CisgICAgICAgICAgbmV4dE1vdW50SW5kZXgrKzsKKyAgICAgICAgfQor
ICAgICAgICBuZXh0SW5kZXgrKzsKKyAgICAgICAgbGFzdFBsYWNlZE5vZGUgPSBSZWFjdFJlY29u
Y2lsZXIuZ2V0SG9zdE5vZGUobmV4dENoaWxkKTsKKyAgICAgIH0KKyAgICAgIC8vIFJlbW92ZSBj
aGlsZHJlbiB0aGF0IGFyZSBubyBsb25nZXIgcHJlc2VudC4KKyAgICAgIGZvciAobmFtZSBpbiBy
ZW1vdmVkTm9kZXMpIHsKKyAgICAgICAgaWYgKHJlbW92ZWROb2Rlcy5oYXNPd25Qcm9wZXJ0eShu
YW1lKSkgeworICAgICAgICAgIHVwZGF0ZXMgPSBlbnF1ZXVlKHVwZGF0ZXMsIHRoaXMuX3VubW91
bnRDaGlsZChwcmV2Q2hpbGRyZW5bbmFtZV0sIHJlbW92ZWROb2Rlc1tuYW1lXSkpOworICAgICAg
ICB9CisgICAgICB9CisgICAgICBpZiAodXBkYXRlcykgeworICAgICAgICBwcm9jZXNzUXVldWUo
dGhpcywgdXBkYXRlcyk7CisgICAgICB9CisgICAgICB0aGlzLl9yZW5kZXJlZENoaWxkcmVuID0g
bmV4dENoaWxkcmVuOworCisgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJykgeworICAgICAgICBzZXRDaGlsZHJlbkZvckluc3RydW1lbnRhdGlvbi5jYWxsKHRo
aXMsIG5leHRDaGlsZHJlbik7CisgICAgICB9CisgICAgfSwKKworICAgIC8qKgorICAgICAqIFVu
bW91bnRzIGFsbCByZW5kZXJlZCBjaGlsZHJlbi4gVGhpcyBzaG91bGQgYmUgdXNlZCB0byBjbGVh
biB1cCBjaGlsZHJlbgorICAgICAqIHdoZW4gdGhpcyBjb21wb25lbnQgaXMgdW5tb3VudGVkLiBJ
dCBkb2VzIG5vdCBhY3R1YWxseSBwZXJmb3JtIGFueQorICAgICAqIGJhY2tlbmQgb3BlcmF0aW9u
cy4KKyAgICAgKgorICAgICAqIEBpbnRlcm5hbAorICAgICAqLworICAgIHVubW91bnRDaGlsZHJl
bjogZnVuY3Rpb24gKHNhZmVseSkgeworICAgICAgdmFyIHJlbmRlcmVkQ2hpbGRyZW4gPSB0aGlz
Ll9yZW5kZXJlZENoaWxkcmVuOworICAgICAgUmVhY3RDaGlsZFJlY29uY2lsZXIudW5tb3VudENo
aWxkcmVuKHJlbmRlcmVkQ2hpbGRyZW4sIHNhZmVseSk7CisgICAgICB0aGlzLl9yZW5kZXJlZENo
aWxkcmVuID0gbnVsbDsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogTW92ZXMgYSBjaGlsZCBj
b21wb25lbnQgdG8gdGhlIHN1cHBsaWVkIGluZGV4LgorICAgICAqCisgICAgICogQHBhcmFtIHtS
ZWFjdENvbXBvbmVudH0gY2hpbGQgQ29tcG9uZW50IHRvIG1vdmUuCisgICAgICogQHBhcmFtIHtu
dW1iZXJ9IHRvSW5kZXggRGVzdGluYXRpb24gaW5kZXggb2YgdGhlIGVsZW1lbnQuCisgICAgICog
QHBhcmFtIHtudW1iZXJ9IGxhc3RJbmRleCBMYXN0IGluZGV4IHZpc2l0ZWQgb2YgdGhlIHNpYmxp
bmdzIG9mIGBjaGlsZGAuCisgICAgICogQHByb3RlY3RlZAorICAgICAqLworICAgIG1vdmVDaGls
ZDogZnVuY3Rpb24gKGNoaWxkLCBhZnRlck5vZGUsIHRvSW5kZXgsIGxhc3RJbmRleCkgeworICAg
ICAgLy8gSWYgdGhlIGluZGV4IG9mIGBjaGlsZGAgaXMgbGVzcyB0aGFuIGBsYXN0SW5kZXhgLCB0
aGVuIGl0IG5lZWRzIHRvCisgICAgICAvLyBiZSBtb3ZlZC4gT3RoZXJ3aXNlLCB3ZSBkbyBub3Qg
bmVlZCB0byBtb3ZlIGl0IGJlY2F1c2UgYSBjaGlsZCB3aWxsIGJlCisgICAgICAvLyBpbnNlcnRl
ZCBvciBtb3ZlZCBiZWZvcmUgYGNoaWxkYC4KKyAgICAgIGlmIChjaGlsZC5fbW91bnRJbmRleCA8
IGxhc3RJbmRleCkgeworICAgICAgICByZXR1cm4gbWFrZU1vdmUoY2hpbGQsIGFmdGVyTm9kZSwg
dG9JbmRleCk7CisgICAgICB9CisgICAgfSwKKworICAgIC8qKgorICAgICAqIENyZWF0ZXMgYSBj
aGlsZCBjb21wb25lbnQuCisgICAgICoKKyAgICAgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBj
aGlsZCBDb21wb25lbnQgdG8gY3JlYXRlLgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtb3VudElt
YWdlIE1hcmt1cCB0byBpbnNlcnQuCisgICAgICogQHByb3RlY3RlZAorICAgICAqLworICAgIGNy
ZWF0ZUNoaWxkOiBmdW5jdGlvbiAoY2hpbGQsIGFmdGVyTm9kZSwgbW91bnRJbWFnZSkgeworICAg
ICAgcmV0dXJuIG1ha2VJbnNlcnRNYXJrdXAobW91bnRJbWFnZSwgYWZ0ZXJOb2RlLCBjaGlsZC5f
bW91bnRJbmRleCk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIFJlbW92ZXMgYSBjaGlsZCBj
b21wb25lbnQuCisgICAgICoKKyAgICAgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBjaGlsZCBD
aGlsZCB0byByZW1vdmUuCisgICAgICogQHByb3RlY3RlZAorICAgICAqLworICAgIHJlbW92ZUNo
aWxkOiBmdW5jdGlvbiAoY2hpbGQsIG5vZGUpIHsKKyAgICAgIHJldHVybiBtYWtlUmVtb3ZlKGNo
aWxkLCBub2RlKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogTW91bnRzIGEgY2hpbGQgd2l0
aCB0aGUgc3VwcGxpZWQgbmFtZS4KKyAgICAgKgorICAgICAqIE5PVEU6IFRoaXMgaXMgcGFydCBv
ZiBgdXBkYXRlQ2hpbGRyZW5gIGFuZCBpcyBoZXJlIGZvciByZWFkYWJpbGl0eS4KKyAgICAgKgor
ICAgICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGNoaWxkIENvbXBvbmVudCB0byBtb3VudC4K
KyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBOYW1lIG9mIHRoZSBjaGlsZC4KKyAgICAgKiBA
cGFyYW0ge251bWJlcn0gaW5kZXggSW5kZXggYXQgd2hpY2ggdG8gaW5zZXJ0IHRoZSBjaGlsZC4K
KyAgICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uCisg
ICAgICogQHByaXZhdGUKKyAgICAgKi8KKyAgICBfbW91bnRDaGlsZEF0SW5kZXg6IGZ1bmN0aW9u
IChjaGlsZCwgbW91bnRJbWFnZSwgYWZ0ZXJOb2RlLCBpbmRleCwgdHJhbnNhY3Rpb24sIGNvbnRl
eHQpIHsKKyAgICAgIGNoaWxkLl9tb3VudEluZGV4ID0gaW5kZXg7CisgICAgICByZXR1cm4gdGhp
cy5jcmVhdGVDaGlsZChjaGlsZCwgYWZ0ZXJOb2RlLCBtb3VudEltYWdlKTsKKyAgICB9LAorCisg
ICAgLyoqCisgICAgICogVW5tb3VudHMgYSByZW5kZXJlZCBjaGlsZC4KKyAgICAgKgorICAgICAq
IE5PVEU6IFRoaXMgaXMgcGFydCBvZiBgdXBkYXRlQ2hpbGRyZW5gIGFuZCBpcyBoZXJlIGZvciBy
ZWFkYWJpbGl0eS4KKyAgICAgKgorICAgICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGNoaWxk
IENvbXBvbmVudCB0byB1bm1vdW50LgorICAgICAqIEBwcml2YXRlCisgICAgICovCisgICAgX3Vu
bW91bnRDaGlsZDogZnVuY3Rpb24gKGNoaWxkLCBub2RlKSB7CisgICAgICB2YXIgdXBkYXRlID0g
dGhpcy5yZW1vdmVDaGlsZChjaGlsZCwgbm9kZSk7CisgICAgICBjaGlsZC5fbW91bnRJbmRleCA9
IG51bGw7CisgICAgICByZXR1cm4gdXBkYXRlOworICAgIH0KKworICB9CisKK307CisKK21vZHVs
ZS5leHBvcnRzID0gUmVhY3RNdWx0aUNoaWxkOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGli
L1JlYWN0TXVsdGlDaGlsZFVwZGF0ZVR5cGVzLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9t
b2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RNdWx0aUNoaWxkVXBkYXRlVHlwZXMuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDdjMjM1MzIyMWQzYTc1MWVkMzBlODZkNzExZjIwOTQ5ODRkYjk0ZgotLS0gL2Rldi9u
dWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1Jl
YWN0TXVsdGlDaGlsZFVwZGF0ZVR5cGVzLmpzCkBAIC0wLDAgKzEsMTggQEAKKy8qKgorICogQ29w
eXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0
eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKKy8qKgorICogV2hlbiBhIGNv
bXBvbmVudCdzIGNoaWxkcmVuIGFyZSB1cGRhdGVkLCBhIHNlcmllcyBvZiB1cGRhdGUgY29uZmln
dXJhdGlvbgorICogb2JqZWN0cyBhcmUgY3JlYXRlZCBpbiBvcmRlciB0byBiYXRjaCBhbmQgc2Vy
aWFsaXplIHRoZSByZXF1aXJlZCBjaGFuZ2VzLgorICoKKyAqIEVudW1lcmF0ZXMgYWxsIHRoZSBw
b3NzaWJsZSB0eXBlcyBvZiB1cGRhdGUgY29uZmlndXJhdGlvbnMuCisgKi8KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVs
ZXMvcmVhY3QtZG9tL2xpYi9SZWFjdE5vZGVUeXBlcy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25v
ZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0Tm9kZVR5cGVzLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4
YWE3NTAxOWJiMDVlNWNjODc0MWQxMzIyNzhlNjg5MGU0NzFjZWYKLS0tIC9kZXYvbnVsbAorKysg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdE5vZGVU
eXBlcy5qcwpAQCAtMCwwICsxLDM5IEBACisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQs
IEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291
cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGlu
IHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJj
ZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBm
b3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiAK
KyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBfcHJvZEludmFyaWFudCA9IHJlcXVpcmUoJy4v
cmVhY3RQcm9kSW52YXJpYW50Jyk7CisKK3ZhciBSZWFjdCA9IHJlcXVpcmUoJ3JlYWN0L2xpYi9S
ZWFjdCcpOworCit2YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7
CisKK3ZhciBSZWFjdE5vZGVUeXBlcyA9IHsKKyAgSE9TVDogMCwKKyAgQ09NUE9TSVRFOiAxLAor
ICBFTVBUWTogMiwKKworICBnZXRUeXBlOiBmdW5jdGlvbiAobm9kZSkgeworICAgIGlmIChub2Rl
ID09PSBudWxsIHx8IG5vZGUgPT09IGZhbHNlKSB7CisgICAgICByZXR1cm4gUmVhY3ROb2RlVHlw
ZXMuRU1QVFk7CisgICAgfSBlbHNlIGlmIChSZWFjdC5pc1ZhbGlkRWxlbWVudChub2RlKSkgewor
ICAgICAgaWYgKHR5cGVvZiBub2RlLnR5cGUgPT09ICdmdW5jdGlvbicpIHsKKyAgICAgICAgcmV0
dXJuIFJlYWN0Tm9kZVR5cGVzLkNPTVBPU0lURTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHJl
dHVybiBSZWFjdE5vZGVUeXBlcy5IT1NUOworICAgICAgfQorICAgIH0KKyAgICAhZmFsc2UgPyBw
cm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAn
VW5leHBlY3RlZCBub2RlOiAlcycsIG5vZGUpIDogX3Byb2RJbnZhcmlhbnQoJzI2Jywgbm9kZSkg
OiB2b2lkIDA7CisgIH0KK307CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3ROb2RlVHlwZXM7Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qv
bm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RPd25lci5qcyBiL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Jl
YWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0T3duZXIuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmE2ZmJiOTIyZTEwMWI5NGFlNTA5NDExNmI0Y2MxODFkM2VmY2JjMAotLS0gL2Rldi9udWxsCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0T3du
ZXIuanMKQEAgLTAsMCArMSw5MyBAQAorLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBG
YWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJj
ZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0
aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2Ug
dHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91
bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogCisg
Ki8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1aXJlKCcuL3Jl
YWN0UHJvZEludmFyaWFudCcpOworCit2YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIv
aW52YXJpYW50Jyk7CisKKy8qKgorICogQHBhcmFtIHs/b2JqZWN0fSBvYmplY3QKKyAqIEByZXR1
cm4ge2Jvb2xlYW59IFRydWUgaWYgYG9iamVjdGAgaXMgYSB2YWxpZCBvd25lci4KKyAqIEBmaW5h
bAorICovCitmdW5jdGlvbiBpc1ZhbGlkT3duZXIob2JqZWN0KSB7CisgIHJldHVybiAhIShvYmpl
Y3QgJiYgdHlwZW9mIG9iamVjdC5hdHRhY2hSZWYgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIG9i
amVjdC5kZXRhY2hSZWYgPT09ICdmdW5jdGlvbicpOworfQorCisvKioKKyAqIFJlYWN0T3duZXJz
IGFyZSBjYXBhYmxlIG9mIHN0b3JpbmcgcmVmZXJlbmNlcyB0byBvd25lZCBjb21wb25lbnRzLgor
ICoKKyAqIEFsbCBjb21wb25lbnRzIGFyZSBjYXBhYmxlIG9mIC8vYmVpbmcvLyByZWZlcmVuY2Vk
IGJ5IG93bmVyIGNvbXBvbmVudHMsIGJ1dAorICogb25seSBSZWFjdE93bmVyIGNvbXBvbmVudHMg
YXJlIGNhcGFibGUgb2YgLy9yZWZlcmVuY2luZy8vIG93bmVkIGNvbXBvbmVudHMuCisgKiBUaGUg
bmFtZWQgcmVmZXJlbmNlIGlzIGtub3duIGFzIGEgInJlZiIuCisgKgorICogUmVmcyBhcmUgYXZh
aWxhYmxlIHdoZW4gbW91bnRlZCBhbmQgdXBkYXRlZCBkdXJpbmcgcmVjb25jaWxpYXRpb24uCisg
KgorICogICB2YXIgTXlDb21wb25lbnQgPSBSZWFjdC5jcmVhdGVDbGFzcyh7CisgKiAgICAgcmVu
ZGVyOiBmdW5jdGlvbigpIHsKKyAqICAgICAgIHJldHVybiAoCisgKiAgICAgICAgIDxkaXYgb25D
bGljaz17dGhpcy5oYW5kbGVDbGlja30+CisgKiAgICAgICAgICAgPEN1c3RvbUNvbXBvbmVudCBy
ZWY9ImN1c3RvbSIgLz4KKyAqICAgICAgICAgPC9kaXY+CisgKiAgICAgICApOworICogICAgIH0s
CisgKiAgICAgaGFuZGxlQ2xpY2s6IGZ1bmN0aW9uKCkgeworICogICAgICAgdGhpcy5yZWZzLmN1
c3RvbS5oYW5kbGVDbGljaygpOworICogICAgIH0sCisgKiAgICAgY29tcG9uZW50RGlkTW91bnQ6
IGZ1bmN0aW9uKCkgeworICogICAgICAgdGhpcy5yZWZzLmN1c3RvbS5pbml0aWFsaXplKCk7Cisg
KiAgICAgfQorICogICB9KTsKKyAqCisgKiBSZWZzIHNob3VsZCByYXJlbHkgYmUgdXNlZC4gV2hl
biByZWZzIGFyZSB1c2VkLCB0aGV5IHNob3VsZCBvbmx5IGJlIGRvbmUgdG8KKyAqIGNvbnRyb2wg
ZGF0YSB0aGF0IGlzIG5vdCBoYW5kbGVkIGJ5IFJlYWN0J3MgZGF0YSBmbG93LgorICoKKyAqIEBj
bGFzcyBSZWFjdE93bmVyCisgKi8KK3ZhciBSZWFjdE93bmVyID0geworICAvKioKKyAgICogQWRk
cyBhIGNvbXBvbmVudCBieSByZWYgdG8gYW4gb3duZXIgY29tcG9uZW50LgorICAgKgorICAgKiBA
cGFyYW0ge1JlYWN0Q29tcG9uZW50fSBjb21wb25lbnQgQ29tcG9uZW50IHRvIHJlZmVyZW5jZS4K
KyAgICogQHBhcmFtIHtzdHJpbmd9IHJlZiBOYW1lIGJ5IHdoaWNoIHRvIHJlZmVyIHRvIHRoZSBj
b21wb25lbnQuCisgICAqIEBwYXJhbSB7UmVhY3RPd25lcn0gb3duZXIgQ29tcG9uZW50IG9uIHdo
aWNoIHRvIHJlY29yZCB0aGUgcmVmLgorICAgKiBAZmluYWwKKyAgICogQGludGVybmFsCisgICAq
LworICBhZGRDb21wb25lbnRBc1JlZlRvOiBmdW5jdGlvbiAoY29tcG9uZW50LCByZWYsIG93bmVy
KSB7CisgICAgIWlzVmFsaWRPd25lcihvd25lcikgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0g
J3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnYWRkQ29tcG9uZW50QXNSZWZUbyguLi4p
OiBPbmx5IGEgUmVhY3RPd25lciBjYW4gaGF2ZSByZWZzLiBZb3UgbWlnaHQgYmUgYWRkaW5nIGEg
cmVmIHRvIGEgY29tcG9uZW50IHRoYXQgd2FzIG5vdCBjcmVhdGVkIGluc2lkZSBhIGNvbXBvbmVu
dFwncyBgcmVuZGVyYCBtZXRob2QsIG9yIHlvdSBoYXZlIG11bHRpcGxlIGNvcGllcyBvZiBSZWFj
dCBsb2FkZWQgKGRldGFpbHM6IGh0dHBzOi8vZmIubWUvcmVhY3QtcmVmcy1tdXN0LWhhdmUtb3du
ZXIpLicpIDogX3Byb2RJbnZhcmlhbnQoJzExOScpIDogdm9pZCAwOworICAgIG93bmVyLmF0dGFj
aFJlZihyZWYsIGNvbXBvbmVudCk7CisgIH0sCisKKyAgLyoqCisgICAqIFJlbW92ZXMgYSBjb21w
b25lbnQgYnkgcmVmIGZyb20gYW4gb3duZXIgY29tcG9uZW50LgorICAgKgorICAgKiBAcGFyYW0g
e1JlYWN0Q29tcG9uZW50fSBjb21wb25lbnQgQ29tcG9uZW50IHRvIGRlcmVmZXJlbmNlLgorICAg
KiBAcGFyYW0ge3N0cmluZ30gcmVmIE5hbWUgb2YgdGhlIHJlZiB0byByZW1vdmUuCisgICAqIEBw
YXJhbSB7UmVhY3RPd25lcn0gb3duZXIgQ29tcG9uZW50IG9uIHdoaWNoIHRoZSByZWYgaXMgcmVj
b3JkZWQuCisgICAqIEBmaW5hbAorICAgKiBAaW50ZXJuYWwKKyAgICovCisgIHJlbW92ZUNvbXBv
bmVudEFzUmVmRnJvbTogZnVuY3Rpb24gKGNvbXBvbmVudCwgcmVmLCBvd25lcikgeworICAgICFp
c1ZhbGlkT3duZXIob3duZXIpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
JyA/IGludmFyaWFudChmYWxzZSwgJ3JlbW92ZUNvbXBvbmVudEFzUmVmRnJvbSguLi4pOiBPbmx5
IGEgUmVhY3RPd25lciBjYW4gaGF2ZSByZWZzLiBZb3UgbWlnaHQgYmUgcmVtb3ZpbmcgYSByZWYg
dG8gYSBjb21wb25lbnQgdGhhdCB3YXMgbm90IGNyZWF0ZWQgaW5zaWRlIGEgY29tcG9uZW50XCdz
IGByZW5kZXJgIG1ldGhvZCwgb3IgeW91IGhhdmUgbXVsdGlwbGUgY29waWVzIG9mIFJlYWN0IGxv
YWRlZCAoZGV0YWlsczogaHR0cHM6Ly9mYi5tZS9yZWFjdC1yZWZzLW11c3QtaGF2ZS1vd25lciku
JykgOiBfcHJvZEludmFyaWFudCgnMTIwJykgOiB2b2lkIDA7CisgICAgdmFyIG93bmVyUHVibGlj
SW5zdGFuY2UgPSBvd25lci5nZXRQdWJsaWNJbnN0YW5jZSgpOworICAgIC8vIENoZWNrIHRoYXQg
YGNvbXBvbmVudGAncyBvd25lciBpcyBzdGlsbCBhbGl2ZSBhbmQgdGhhdCBgY29tcG9uZW50YCBp
cyBzdGlsbCB0aGUgY3VycmVudCByZWYKKyAgICAvLyBiZWNhdXNlIHdlIGRvIG5vdCB3YW50IHRv
IGRldGFjaCB0aGUgcmVmIGlmIGFub3RoZXIgY29tcG9uZW50IHN0b2xlIGl0LgorICAgIGlmIChv
d25lclB1YmxpY0luc3RhbmNlICYmIG93bmVyUHVibGljSW5zdGFuY2UucmVmc1tyZWZdID09PSBj
b21wb25lbnQuZ2V0UHVibGljSW5zdGFuY2UoKSkgeworICAgICAgb3duZXIuZGV0YWNoUmVmKHJl
Zik7CisgICAgfQorICB9CisKK307CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RPd25lcjsKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9u
b2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdFBlcmYuanMgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFj
dC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdFBlcmYuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTdl
MTIwMWJjYzE1NGYzYTUwZmY2NTU1MjljYWUyYmIyZjU2ZjA2MgotLS0gL2Rldi9udWxsCisrKyBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0UGVyZi5q
cwpAQCAtMCwwICsxLDUwMCBAQAorLyoqCisgKiBDb3B5cmlnaHQgMjAxNi1wcmVzZW50LCBGYWNl
Ym9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBj
b2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUK
KyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJl
ZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQg
aW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogCisgKi8K
KworJ3VzZSBzdHJpY3QnOworCit2YXIgX2Fzc2lnbiA9IHJlcXVpcmUoJ29iamVjdC1hc3NpZ24n
KTsKKwordmFyIF9leHRlbmRzID0gX2Fzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAo
dmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1
bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUu
aGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vb
a2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsKKwordmFyIFJlYWN0RGVidWdUb29sID0gcmVx
dWlyZSgnLi9SZWFjdERlYnVnVG9vbCcpOwordmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xp
Yi93YXJuaW5nJyk7Cit2YXIgYWxyZWFkeVdhcm5lZCA9IGZhbHNlOworCitmdW5jdGlvbiByb3Vu
ZEZsb2F0KHZhbCkgeworICB2YXIgYmFzZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3Vt
ZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogMjsKKworICB2YXIgbiA9IE1h
dGgucG93KDEwLCBiYXNlKTsKKyAgcmV0dXJuIE1hdGguZmxvb3IodmFsICogbikgLyBuOworfQor
CisvLyBGbG93IHR5cGUgZGVmaW5pdGlvbiBvZiBjb25zb2xlLnRhYmxlIGlzIHRvbyBzdHJpY3Qg
cmlnaHQgbm93LCBzZWUKKy8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9mbG93L3B1bGwv
MjM1MyBmb3IgdXBkYXRlcworZnVuY3Rpb24gY29uc29sZVRhYmxlKHRhYmxlKSB7CisgIGNvbnNv
bGUudGFibGUodGFibGUpOworfQorCitmdW5jdGlvbiB3YXJuSW5Qcm9kdWN0aW9uKCkgeworICBp
ZiAoYWxyZWFkeVdhcm5lZCkgeworICAgIHJldHVybjsKKyAgfQorICBhbHJlYWR5V2FybmVkID0g
dHJ1ZTsKKyAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJykgeworICAgIGNvbnNv
bGUuZXJyb3IoJ1JlYWN0UGVyZiBpcyBub3Qgc3VwcG9ydGVkIGluIHRoZSBwcm9kdWN0aW9uIGJ1
aWxkcyBvZiBSZWFjdC4gJyArICdUbyBjb2xsZWN0IG1lYXN1cmVtZW50cywgcGxlYXNlIHVzZSB0
aGUgZGV2ZWxvcG1lbnQgYnVpbGQgb2YgUmVhY3QgaW5zdGVhZC4nKTsKKyAgfQorfQorCitmdW5j
dGlvbiBnZXRMYXN0TWVhc3VyZW1lbnRzKCkgeworICBpZiAoIShwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nKSkgeworICAgIHdhcm5JblByb2R1Y3Rpb24oKTsKKyAgICByZXR1
cm4gW107CisgIH0KKworICByZXR1cm4gUmVhY3REZWJ1Z1Rvb2wuZ2V0Rmx1c2hIaXN0b3J5KCk7
Cit9CisKK2Z1bmN0aW9uIGdldEV4Y2x1c2l2ZSgpIHsKKyAgdmFyIGZsdXNoSGlzdG9yeSA9IGFy
Z3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1l
bnRzWzBdIDogZ2V0TGFzdE1lYXN1cmVtZW50cygpOworCisgIGlmICghKHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7CisgICAgd2FybkluUHJvZHVjdGlvbigpOworICAg
IHJldHVybiBbXTsKKyAgfQorCisgIHZhciBhZ2dyZWdhdGVkU3RhdHMgPSB7fTsKKyAgdmFyIGFm
ZmVjdGVkSURzID0ge307CisKKyAgZnVuY3Rpb24gdXBkYXRlQWdncmVnYXRlZFN0YXRzKHRyZWVT
bmFwc2hvdCwgaW5zdGFuY2VJRCwgdGltZXJUeXBlLCBhcHBseVVwZGF0ZSkgeworICAgIHZhciBk
aXNwbGF5TmFtZSA9IHRyZWVTbmFwc2hvdFtpbnN0YW5jZUlEXS5kaXNwbGF5TmFtZTsKKworICAg
IHZhciBrZXkgPSBkaXNwbGF5TmFtZTsKKyAgICB2YXIgc3RhdHMgPSBhZ2dyZWdhdGVkU3RhdHNb
a2V5XTsKKyAgICBpZiAoIXN0YXRzKSB7CisgICAgICBhZmZlY3RlZElEc1trZXldID0ge307Cisg
ICAgICBzdGF0cyA9IGFnZ3JlZ2F0ZWRTdGF0c1trZXldID0geworICAgICAgICBrZXk6IGtleSwK
KyAgICAgICAgaW5zdGFuY2VDb3VudDogMCwKKyAgICAgICAgY291bnRzOiB7fSwKKyAgICAgICAg
ZHVyYXRpb25zOiB7fSwKKyAgICAgICAgdG90YWxEdXJhdGlvbjogMAorICAgICAgfTsKKyAgICB9
CisgICAgaWYgKCFzdGF0cy5kdXJhdGlvbnNbdGltZXJUeXBlXSkgeworICAgICAgc3RhdHMuZHVy
YXRpb25zW3RpbWVyVHlwZV0gPSAwOworICAgIH0KKyAgICBpZiAoIXN0YXRzLmNvdW50c1t0aW1l
clR5cGVdKSB7CisgICAgICBzdGF0cy5jb3VudHNbdGltZXJUeXBlXSA9IDA7CisgICAgfQorICAg
IGFmZmVjdGVkSURzW2tleV1baW5zdGFuY2VJRF0gPSB0cnVlOworICAgIGFwcGx5VXBkYXRlKHN0
YXRzKTsKKyAgfQorCisgIGZsdXNoSGlzdG9yeS5mb3JFYWNoKGZ1bmN0aW9uIChmbHVzaCkgewor
ICAgIHZhciBtZWFzdXJlbWVudHMgPSBmbHVzaC5tZWFzdXJlbWVudHMsCisgICAgICAgIHRyZWVT
bmFwc2hvdCA9IGZsdXNoLnRyZWVTbmFwc2hvdDsKKworICAgIG1lYXN1cmVtZW50cy5mb3JFYWNo
KGZ1bmN0aW9uIChtZWFzdXJlbWVudCkgeworICAgICAgdmFyIGR1cmF0aW9uID0gbWVhc3VyZW1l
bnQuZHVyYXRpb24sCisgICAgICAgICAgaW5zdGFuY2VJRCA9IG1lYXN1cmVtZW50Lmluc3RhbmNl
SUQsCisgICAgICAgICAgdGltZXJUeXBlID0gbWVhc3VyZW1lbnQudGltZXJUeXBlOworCisgICAg
ICB1cGRhdGVBZ2dyZWdhdGVkU3RhdHModHJlZVNuYXBzaG90LCBpbnN0YW5jZUlELCB0aW1lclR5
cGUsIGZ1bmN0aW9uIChzdGF0cykgeworICAgICAgICBzdGF0cy50b3RhbER1cmF0aW9uICs9IGR1
cmF0aW9uOworICAgICAgICBzdGF0cy5kdXJhdGlvbnNbdGltZXJUeXBlXSArPSBkdXJhdGlvbjsK
KyAgICAgICAgc3RhdHMuY291bnRzW3RpbWVyVHlwZV0rKzsKKyAgICAgIH0pOworICAgIH0pOwor
ICB9KTsKKworICByZXR1cm4gT2JqZWN0LmtleXMoYWdncmVnYXRlZFN0YXRzKS5tYXAoZnVuY3Rp
b24gKGtleSkgeworICAgIHJldHVybiBfZXh0ZW5kcyh7fSwgYWdncmVnYXRlZFN0YXRzW2tleV0s
IHsKKyAgICAgIGluc3RhbmNlQ291bnQ6IE9iamVjdC5rZXlzKGFmZmVjdGVkSURzW2tleV0pLmxl
bmd0aAorICAgIH0pOworICB9KS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7CisgICAgcmV0dXJuIGIu
dG90YWxEdXJhdGlvbiAtIGEudG90YWxEdXJhdGlvbjsKKyAgfSk7Cit9CisKK2Z1bmN0aW9uIGdl
dEluY2x1c2l2ZSgpIHsKKyAgdmFyIGZsdXNoSGlzdG9yeSA9IGFyZ3VtZW50cy5sZW5ndGggPiAw
ICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogZ2V0TGFzdE1l
YXN1cmVtZW50cygpOworCisgIGlmICghKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVj
dGlvbicpKSB7CisgICAgd2FybkluUHJvZHVjdGlvbigpOworICAgIHJldHVybiBbXTsKKyAgfQor
CisgIHZhciBhZ2dyZWdhdGVkU3RhdHMgPSB7fTsKKyAgdmFyIGFmZmVjdGVkSURzID0ge307CisK
KyAgZnVuY3Rpb24gdXBkYXRlQWdncmVnYXRlZFN0YXRzKHRyZWVTbmFwc2hvdCwgaW5zdGFuY2VJ
RCwgYXBwbHlVcGRhdGUpIHsKKyAgICB2YXIgX3RyZWVTbmFwc2hvdCRpbnN0YW5jID0gdHJlZVNu
YXBzaG90W2luc3RhbmNlSURdLAorICAgICAgICBkaXNwbGF5TmFtZSA9IF90cmVlU25hcHNob3Qk
aW5zdGFuYy5kaXNwbGF5TmFtZSwKKyAgICAgICAgb3duZXJJRCA9IF90cmVlU25hcHNob3QkaW5z
dGFuYy5vd25lcklEOworCisgICAgdmFyIG93bmVyID0gdHJlZVNuYXBzaG90W293bmVySURdOwor
ICAgIHZhciBrZXkgPSAob3duZXIgPyBvd25lci5kaXNwbGF5TmFtZSArICcgPiAnIDogJycpICsg
ZGlzcGxheU5hbWU7CisgICAgdmFyIHN0YXRzID0gYWdncmVnYXRlZFN0YXRzW2tleV07CisgICAg
aWYgKCFzdGF0cykgeworICAgICAgYWZmZWN0ZWRJRHNba2V5XSA9IHt9OworICAgICAgc3RhdHMg
PSBhZ2dyZWdhdGVkU3RhdHNba2V5XSA9IHsKKyAgICAgICAga2V5OiBrZXksCisgICAgICAgIGlu
c3RhbmNlQ291bnQ6IDAsCisgICAgICAgIGluY2x1c2l2ZVJlbmRlckR1cmF0aW9uOiAwLAorICAg
ICAgICByZW5kZXJDb3VudDogMAorICAgICAgfTsKKyAgICB9CisgICAgYWZmZWN0ZWRJRHNba2V5
XVtpbnN0YW5jZUlEXSA9IHRydWU7CisgICAgYXBwbHlVcGRhdGUoc3RhdHMpOworICB9CisKKyAg
dmFyIGlzQ29tcG9zaXRlQnlJRCA9IHt9OworICBmbHVzaEhpc3RvcnkuZm9yRWFjaChmdW5jdGlv
biAoZmx1c2gpIHsKKyAgICB2YXIgbWVhc3VyZW1lbnRzID0gZmx1c2gubWVhc3VyZW1lbnRzOwor
CisgICAgbWVhc3VyZW1lbnRzLmZvckVhY2goZnVuY3Rpb24gKG1lYXN1cmVtZW50KSB7CisgICAg
ICB2YXIgaW5zdGFuY2VJRCA9IG1lYXN1cmVtZW50Lmluc3RhbmNlSUQsCisgICAgICAgICAgdGlt
ZXJUeXBlID0gbWVhc3VyZW1lbnQudGltZXJUeXBlOworCisgICAgICBpZiAodGltZXJUeXBlICE9
PSAncmVuZGVyJykgeworICAgICAgICByZXR1cm47CisgICAgICB9CisgICAgICBpc0NvbXBvc2l0
ZUJ5SURbaW5zdGFuY2VJRF0gPSB0cnVlOworICAgIH0pOworICB9KTsKKworICBmbHVzaEhpc3Rv
cnkuZm9yRWFjaChmdW5jdGlvbiAoZmx1c2gpIHsKKyAgICB2YXIgbWVhc3VyZW1lbnRzID0gZmx1
c2gubWVhc3VyZW1lbnRzLAorICAgICAgICB0cmVlU25hcHNob3QgPSBmbHVzaC50cmVlU25hcHNo
b3Q7CisKKyAgICBtZWFzdXJlbWVudHMuZm9yRWFjaChmdW5jdGlvbiAobWVhc3VyZW1lbnQpIHsK
KyAgICAgIHZhciBkdXJhdGlvbiA9IG1lYXN1cmVtZW50LmR1cmF0aW9uLAorICAgICAgICAgIGlu
c3RhbmNlSUQgPSBtZWFzdXJlbWVudC5pbnN0YW5jZUlELAorICAgICAgICAgIHRpbWVyVHlwZSA9
IG1lYXN1cmVtZW50LnRpbWVyVHlwZTsKKworICAgICAgaWYgKHRpbWVyVHlwZSAhPT0gJ3JlbmRl
cicpIHsKKyAgICAgICAgcmV0dXJuOworICAgICAgfQorICAgICAgdXBkYXRlQWdncmVnYXRlZFN0
YXRzKHRyZWVTbmFwc2hvdCwgaW5zdGFuY2VJRCwgZnVuY3Rpb24gKHN0YXRzKSB7CisgICAgICAg
IHN0YXRzLnJlbmRlckNvdW50Kys7CisgICAgICB9KTsKKyAgICAgIHZhciBuZXh0UGFyZW50SUQg
PSBpbnN0YW5jZUlEOworICAgICAgd2hpbGUgKG5leHRQYXJlbnRJRCkgeworICAgICAgICAvLyBB
cyB3ZSB0cmF2ZXJzZSBwYXJlbnRzLCBvbmx5IGNvdW50IGluY2x1c2l2ZSB0aW1lIHRvd2FyZHMg
Y29tcG9zaXRlcy4KKyAgICAgICAgLy8gV2Uga25vdyBzb21ldGhpbmcgaXMgYSBjb21wb3NpdGUg
aWYgaXRzIHJlbmRlcigpIHdhcyBjYWxsZWQuCisgICAgICAgIGlmIChpc0NvbXBvc2l0ZUJ5SURb
bmV4dFBhcmVudElEXSkgeworICAgICAgICAgIHVwZGF0ZUFnZ3JlZ2F0ZWRTdGF0cyh0cmVlU25h
cHNob3QsIG5leHRQYXJlbnRJRCwgZnVuY3Rpb24gKHN0YXRzKSB7CisgICAgICAgICAgICBzdGF0
cy5pbmNsdXNpdmVSZW5kZXJEdXJhdGlvbiArPSBkdXJhdGlvbjsKKyAgICAgICAgICB9KTsKKyAg
ICAgICAgfQorICAgICAgICBuZXh0UGFyZW50SUQgPSB0cmVlU25hcHNob3RbbmV4dFBhcmVudElE
XS5wYXJlbnRJRDsKKyAgICAgIH0KKyAgICB9KTsKKyAgfSk7CisKKyAgcmV0dXJuIE9iamVjdC5r
ZXlzKGFnZ3JlZ2F0ZWRTdGF0cykubWFwKGZ1bmN0aW9uIChrZXkpIHsKKyAgICByZXR1cm4gX2V4
dGVuZHMoe30sIGFnZ3JlZ2F0ZWRTdGF0c1trZXldLCB7CisgICAgICBpbnN0YW5jZUNvdW50OiBP
YmplY3Qua2V5cyhhZmZlY3RlZElEc1trZXldKS5sZW5ndGgKKyAgICB9KTsKKyAgfSkuc29ydChm
dW5jdGlvbiAoYSwgYikgeworICAgIHJldHVybiBiLmluY2x1c2l2ZVJlbmRlckR1cmF0aW9uIC0g
YS5pbmNsdXNpdmVSZW5kZXJEdXJhdGlvbjsKKyAgfSk7Cit9CisKK2Z1bmN0aW9uIGdldFdhc3Rl
ZCgpIHsKKyAgdmFyIGZsdXNoSGlzdG9yeSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3Vt
ZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogZ2V0TGFzdE1lYXN1cmVtZW50
cygpOworCisgIGlmICghKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7
CisgICAgd2FybkluUHJvZHVjdGlvbigpOworICAgIHJldHVybiBbXTsKKyAgfQorCisgIHZhciBh
Z2dyZWdhdGVkU3RhdHMgPSB7fTsKKyAgdmFyIGFmZmVjdGVkSURzID0ge307CisKKyAgZnVuY3Rp
b24gdXBkYXRlQWdncmVnYXRlZFN0YXRzKHRyZWVTbmFwc2hvdCwgaW5zdGFuY2VJRCwgYXBwbHlV
cGRhdGUpIHsKKyAgICB2YXIgX3RyZWVTbmFwc2hvdCRpbnN0YW5jMiA9IHRyZWVTbmFwc2hvdFtp
bnN0YW5jZUlEXSwKKyAgICAgICAgZGlzcGxheU5hbWUgPSBfdHJlZVNuYXBzaG90JGluc3RhbmMy
LmRpc3BsYXlOYW1lLAorICAgICAgICBvd25lcklEID0gX3RyZWVTbmFwc2hvdCRpbnN0YW5jMi5v
d25lcklEOworCisgICAgdmFyIG93bmVyID0gdHJlZVNuYXBzaG90W293bmVySURdOworICAgIHZh
ciBrZXkgPSAob3duZXIgPyBvd25lci5kaXNwbGF5TmFtZSArICcgPiAnIDogJycpICsgZGlzcGxh
eU5hbWU7CisgICAgdmFyIHN0YXRzID0gYWdncmVnYXRlZFN0YXRzW2tleV07CisgICAgaWYgKCFz
dGF0cykgeworICAgICAgYWZmZWN0ZWRJRHNba2V5XSA9IHt9OworICAgICAgc3RhdHMgPSBhZ2dy
ZWdhdGVkU3RhdHNba2V5XSA9IHsKKyAgICAgICAga2V5OiBrZXksCisgICAgICAgIGluc3RhbmNl
Q291bnQ6IDAsCisgICAgICAgIGluY2x1c2l2ZVJlbmRlckR1cmF0aW9uOiAwLAorICAgICAgICBy
ZW5kZXJDb3VudDogMAorICAgICAgfTsKKyAgICB9CisgICAgYWZmZWN0ZWRJRHNba2V5XVtpbnN0
YW5jZUlEXSA9IHRydWU7CisgICAgYXBwbHlVcGRhdGUoc3RhdHMpOworICB9CisKKyAgZmx1c2hI
aXN0b3J5LmZvckVhY2goZnVuY3Rpb24gKGZsdXNoKSB7CisgICAgdmFyIG1lYXN1cmVtZW50cyA9
IGZsdXNoLm1lYXN1cmVtZW50cywKKyAgICAgICAgdHJlZVNuYXBzaG90ID0gZmx1c2gudHJlZVNu
YXBzaG90LAorICAgICAgICBvcGVyYXRpb25zID0gZmx1c2gub3BlcmF0aW9uczsKKworICAgIHZh
ciBpc0RlZmluaXRlbHlOb3RXYXN0ZWRCeUlEID0ge307CisKKyAgICAvLyBGaW5kIGhvc3QgY29t
cG9uZW50cyBhc3NvY2lhdGVkIHdpdGggYW4gb3BlcmF0aW9uIGluIHRoaXMgYmF0Y2guCisgICAg
Ly8gTWFyayBhbGwgY29tcG9uZW50cyBpbiB0aGVpciBwYXJlbnQgdHJlZSBhcyBkZWZpbml0ZWx5
IG5vdCB3YXN0ZWQuCisgICAgb3BlcmF0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uIChvcGVyYXRpb24p
IHsKKyAgICAgIHZhciBpbnN0YW5jZUlEID0gb3BlcmF0aW9uLmluc3RhbmNlSUQ7CisKKyAgICAg
IHZhciBuZXh0UGFyZW50SUQgPSBpbnN0YW5jZUlEOworICAgICAgd2hpbGUgKG5leHRQYXJlbnRJ
RCkgeworICAgICAgICBpc0RlZmluaXRlbHlOb3RXYXN0ZWRCeUlEW25leHRQYXJlbnRJRF0gPSB0
cnVlOworICAgICAgICBuZXh0UGFyZW50SUQgPSB0cmVlU25hcHNob3RbbmV4dFBhcmVudElEXS5w
YXJlbnRJRDsKKyAgICAgIH0KKyAgICB9KTsKKworICAgIC8vIEZpbmQgY29tcG9zaXRlIGNvbXBv
bmVudHMgdGhhdCByZW5kZXJlZCBpbiB0aGlzIGJhdGNoLgorICAgIC8vIFRoZXNlIGFyZSBwb3Rl
bnRpYWwgY2FuZGlkYXRlcyBmb3IgYmVpbmcgd2FzdGVkIHJlbmRlcnMuCisgICAgdmFyIHJlbmRl
cmVkQ29tcG9zaXRlSURzID0ge307CisgICAgbWVhc3VyZW1lbnRzLmZvckVhY2goZnVuY3Rpb24g
KG1lYXN1cmVtZW50KSB7CisgICAgICB2YXIgaW5zdGFuY2VJRCA9IG1lYXN1cmVtZW50Lmluc3Rh
bmNlSUQsCisgICAgICAgICAgdGltZXJUeXBlID0gbWVhc3VyZW1lbnQudGltZXJUeXBlOworCisg
ICAgICBpZiAodGltZXJUeXBlICE9PSAncmVuZGVyJykgeworICAgICAgICByZXR1cm47CisgICAg
ICB9CisgICAgICByZW5kZXJlZENvbXBvc2l0ZUlEc1tpbnN0YW5jZUlEXSA9IHRydWU7CisgICAg
fSk7CisKKyAgICBtZWFzdXJlbWVudHMuZm9yRWFjaChmdW5jdGlvbiAobWVhc3VyZW1lbnQpIHsK
KyAgICAgIHZhciBkdXJhdGlvbiA9IG1lYXN1cmVtZW50LmR1cmF0aW9uLAorICAgICAgICAgIGlu
c3RhbmNlSUQgPSBtZWFzdXJlbWVudC5pbnN0YW5jZUlELAorICAgICAgICAgIHRpbWVyVHlwZSA9
IG1lYXN1cmVtZW50LnRpbWVyVHlwZTsKKworICAgICAgaWYgKHRpbWVyVHlwZSAhPT0gJ3JlbmRl
cicpIHsKKyAgICAgICAgcmV0dXJuOworICAgICAgfQorCisgICAgICAvLyBJZiB0aGVyZSB3YXMg
YSBET00gdXBkYXRlIGJlbG93IHRoaXMgY29tcG9uZW50LCBvciBpdCBoYXMganVzdCBiZWVuCisg
ICAgICAvLyBtb3VudGVkLCBpdHMgcmVuZGVyKCkgaXMgbm90IGNvbnNpZGVyZWQgd2FzdGVkLgor
ICAgICAgdmFyIHVwZGF0ZUNvdW50ID0gdHJlZVNuYXBzaG90W2luc3RhbmNlSURdLnVwZGF0ZUNv
dW50OworCisgICAgICBpZiAoaXNEZWZpbml0ZWx5Tm90V2FzdGVkQnlJRFtpbnN0YW5jZUlEXSB8
fCB1cGRhdGVDb3VudCA9PT0gMCkgeworICAgICAgICByZXR1cm47CisgICAgICB9CisKKyAgICAg
IC8vIFdlIGNvbnNpZGVyIHRoaXMgcmVuZGVyKCkgd2FzdGVkLgorICAgICAgdXBkYXRlQWdncmVn
YXRlZFN0YXRzKHRyZWVTbmFwc2hvdCwgaW5zdGFuY2VJRCwgZnVuY3Rpb24gKHN0YXRzKSB7Cisg
ICAgICAgIHN0YXRzLnJlbmRlckNvdW50Kys7CisgICAgICB9KTsKKworICAgICAgdmFyIG5leHRQ
YXJlbnRJRCA9IGluc3RhbmNlSUQ7CisgICAgICB3aGlsZSAobmV4dFBhcmVudElEKSB7CisgICAg
ICAgIC8vIEFueSBwYXJlbnRzIHJlbmRlcmVkIGR1cmluZyB0aGlzIGJhdGNoIGFyZSBjb25zaWRl
cmVkIHdhc3RlZAorICAgICAgICAvLyB1bmxlc3Mgd2UgcHJldmlvdXNseSBtYXJrZWQgdGhlbSBh
cyBkaXJ0eS4KKyAgICAgICAgdmFyIGlzV2FzdGVkID0gcmVuZGVyZWRDb21wb3NpdGVJRHNbbmV4
dFBhcmVudElEXSAmJiAhaXNEZWZpbml0ZWx5Tm90V2FzdGVkQnlJRFtuZXh0UGFyZW50SURdOwor
ICAgICAgICBpZiAoaXNXYXN0ZWQpIHsKKyAgICAgICAgICB1cGRhdGVBZ2dyZWdhdGVkU3RhdHMo
dHJlZVNuYXBzaG90LCBuZXh0UGFyZW50SUQsIGZ1bmN0aW9uIChzdGF0cykgeworICAgICAgICAg
ICAgc3RhdHMuaW5jbHVzaXZlUmVuZGVyRHVyYXRpb24gKz0gZHVyYXRpb247CisgICAgICAgICAg
fSk7CisgICAgICAgIH0KKyAgICAgICAgbmV4dFBhcmVudElEID0gdHJlZVNuYXBzaG90W25leHRQ
YXJlbnRJRF0ucGFyZW50SUQ7CisgICAgICB9CisgICAgfSk7CisgIH0pOworCisgIHJldHVybiBP
YmplY3Qua2V5cyhhZ2dyZWdhdGVkU3RhdHMpLm1hcChmdW5jdGlvbiAoa2V5KSB7CisgICAgcmV0
dXJuIF9leHRlbmRzKHt9LCBhZ2dyZWdhdGVkU3RhdHNba2V5XSwgeworICAgICAgaW5zdGFuY2VD
b3VudDogT2JqZWN0LmtleXMoYWZmZWN0ZWRJRHNba2V5XSkubGVuZ3RoCisgICAgfSk7CisgIH0p
LnNvcnQoZnVuY3Rpb24gKGEsIGIpIHsKKyAgICByZXR1cm4gYi5pbmNsdXNpdmVSZW5kZXJEdXJh
dGlvbiAtIGEuaW5jbHVzaXZlUmVuZGVyRHVyYXRpb247CisgIH0pOworfQorCitmdW5jdGlvbiBn
ZXRPcGVyYXRpb25zKCkgeworICB2YXIgZmx1c2hIaXN0b3J5ID0gYXJndW1lbnRzLmxlbmd0aCA+
IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiBnZXRMYXN0
TWVhc3VyZW1lbnRzKCk7CisKKyAgaWYgKCEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJykpIHsKKyAgICB3YXJuSW5Qcm9kdWN0aW9uKCk7CisgICAgcmV0dXJuIFtdOworICB9
CisKKyAgdmFyIHN0YXRzID0gW107CisgIGZsdXNoSGlzdG9yeS5mb3JFYWNoKGZ1bmN0aW9uIChm
bHVzaCwgZmx1c2hJbmRleCkgeworICAgIHZhciBvcGVyYXRpb25zID0gZmx1c2gub3BlcmF0aW9u
cywKKyAgICAgICAgdHJlZVNuYXBzaG90ID0gZmx1c2gudHJlZVNuYXBzaG90OworCisgICAgb3Bl
cmF0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uIChvcGVyYXRpb24pIHsKKyAgICAgIHZhciBpbnN0YW5j
ZUlEID0gb3BlcmF0aW9uLmluc3RhbmNlSUQsCisgICAgICAgICAgdHlwZSA9IG9wZXJhdGlvbi50
eXBlLAorICAgICAgICAgIHBheWxvYWQgPSBvcGVyYXRpb24ucGF5bG9hZDsKKyAgICAgIHZhciBf
dHJlZVNuYXBzaG90JGluc3RhbmMzID0gdHJlZVNuYXBzaG90W2luc3RhbmNlSURdLAorICAgICAg
ICAgIGRpc3BsYXlOYW1lID0gX3RyZWVTbmFwc2hvdCRpbnN0YW5jMy5kaXNwbGF5TmFtZSwKKyAg
ICAgICAgICBvd25lcklEID0gX3RyZWVTbmFwc2hvdCRpbnN0YW5jMy5vd25lcklEOworCisgICAg
ICB2YXIgb3duZXIgPSB0cmVlU25hcHNob3Rbb3duZXJJRF07CisgICAgICB2YXIga2V5ID0gKG93
bmVyID8gb3duZXIuZGlzcGxheU5hbWUgKyAnID4gJyA6ICcnKSArIGRpc3BsYXlOYW1lOworCisg
ICAgICBzdGF0cy5wdXNoKHsKKyAgICAgICAgZmx1c2hJbmRleDogZmx1c2hJbmRleCwKKyAgICAg
ICAgaW5zdGFuY2VJRDogaW5zdGFuY2VJRCwKKyAgICAgICAga2V5OiBrZXksCisgICAgICAgIHR5
cGU6IHR5cGUsCisgICAgICAgIG93bmVySUQ6IG93bmVySUQsCisgICAgICAgIHBheWxvYWQ6IHBh
eWxvYWQKKyAgICAgIH0pOworICAgIH0pOworICB9KTsKKyAgcmV0dXJuIHN0YXRzOworfQorCitm
dW5jdGlvbiBwcmludEV4Y2x1c2l2ZShmbHVzaEhpc3RvcnkpIHsKKyAgaWYgKCEocHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHsKKyAgICB3YXJuSW5Qcm9kdWN0aW9uKCk7
CisgICAgcmV0dXJuOworICB9CisKKyAgdmFyIHN0YXRzID0gZ2V0RXhjbHVzaXZlKGZsdXNoSGlz
dG9yeSk7CisgIHZhciB0YWJsZSA9IHN0YXRzLm1hcChmdW5jdGlvbiAoaXRlbSkgeworICAgIHZh
ciBrZXkgPSBpdGVtLmtleSwKKyAgICAgICAgaW5zdGFuY2VDb3VudCA9IGl0ZW0uaW5zdGFuY2VD
b3VudCwKKyAgICAgICAgdG90YWxEdXJhdGlvbiA9IGl0ZW0udG90YWxEdXJhdGlvbjsKKworICAg
IHZhciByZW5kZXJDb3VudCA9IGl0ZW0uY291bnRzLnJlbmRlciB8fCAwOworICAgIHZhciByZW5k
ZXJEdXJhdGlvbiA9IGl0ZW0uZHVyYXRpb25zLnJlbmRlciB8fCAwOworICAgIHJldHVybiB7Cisg
ICAgICAnQ29tcG9uZW50Jzoga2V5LAorICAgICAgJ1RvdGFsIHRpbWUgKG1zKSc6IHJvdW5kRmxv
YXQodG90YWxEdXJhdGlvbiksCisgICAgICAnSW5zdGFuY2UgY291bnQnOiBpbnN0YW5jZUNvdW50
LAorICAgICAgJ1RvdGFsIHJlbmRlciB0aW1lIChtcyknOiByb3VuZEZsb2F0KHJlbmRlckR1cmF0
aW9uKSwKKyAgICAgICdBdmVyYWdlIHJlbmRlciB0aW1lIChtcyknOiByZW5kZXJDb3VudCA/IHJv
dW5kRmxvYXQocmVuZGVyRHVyYXRpb24gLyByZW5kZXJDb3VudCkgOiB1bmRlZmluZWQsCisgICAg
ICAnUmVuZGVyIGNvdW50JzogcmVuZGVyQ291bnQsCisgICAgICAnVG90YWwgbGlmZWN5Y2xlIHRp
bWUgKG1zKSc6IHJvdW5kRmxvYXQodG90YWxEdXJhdGlvbiAtIHJlbmRlckR1cmF0aW9uKQorICAg
IH07CisgIH0pOworICBjb25zb2xlVGFibGUodGFibGUpOworfQorCitmdW5jdGlvbiBwcmludElu
Y2x1c2l2ZShmbHVzaEhpc3RvcnkpIHsKKyAgaWYgKCEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09
ICdwcm9kdWN0aW9uJykpIHsKKyAgICB3YXJuSW5Qcm9kdWN0aW9uKCk7CisgICAgcmV0dXJuOwor
ICB9CisKKyAgdmFyIHN0YXRzID0gZ2V0SW5jbHVzaXZlKGZsdXNoSGlzdG9yeSk7CisgIHZhciB0
YWJsZSA9IHN0YXRzLm1hcChmdW5jdGlvbiAoaXRlbSkgeworICAgIHZhciBrZXkgPSBpdGVtLmtl
eSwKKyAgICAgICAgaW5zdGFuY2VDb3VudCA9IGl0ZW0uaW5zdGFuY2VDb3VudCwKKyAgICAgICAg
aW5jbHVzaXZlUmVuZGVyRHVyYXRpb24gPSBpdGVtLmluY2x1c2l2ZVJlbmRlckR1cmF0aW9uLAor
ICAgICAgICByZW5kZXJDb3VudCA9IGl0ZW0ucmVuZGVyQ291bnQ7CisKKyAgICByZXR1cm4gewor
ICAgICAgJ093bmVyID4gQ29tcG9uZW50Jzoga2V5LAorICAgICAgJ0luY2x1c2l2ZSByZW5kZXIg
dGltZSAobXMpJzogcm91bmRGbG9hdChpbmNsdXNpdmVSZW5kZXJEdXJhdGlvbiksCisgICAgICAn
SW5zdGFuY2UgY291bnQnOiBpbnN0YW5jZUNvdW50LAorICAgICAgJ1JlbmRlciBjb3VudCc6IHJl
bmRlckNvdW50CisgICAgfTsKKyAgfSk7CisgIGNvbnNvbGVUYWJsZSh0YWJsZSk7Cit9CisKK2Z1
bmN0aW9uIHByaW50V2FzdGVkKGZsdXNoSGlzdG9yeSkgeworICBpZiAoIShwcm9jZXNzLmVudi5O
T0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkgeworICAgIHdhcm5JblByb2R1Y3Rpb24oKTsKKyAg
ICByZXR1cm47CisgIH0KKworICB2YXIgc3RhdHMgPSBnZXRXYXN0ZWQoZmx1c2hIaXN0b3J5KTsK
KyAgdmFyIHRhYmxlID0gc3RhdHMubWFwKGZ1bmN0aW9uIChpdGVtKSB7CisgICAgdmFyIGtleSA9
IGl0ZW0ua2V5LAorICAgICAgICBpbnN0YW5jZUNvdW50ID0gaXRlbS5pbnN0YW5jZUNvdW50LAor
ICAgICAgICBpbmNsdXNpdmVSZW5kZXJEdXJhdGlvbiA9IGl0ZW0uaW5jbHVzaXZlUmVuZGVyRHVy
YXRpb24sCisgICAgICAgIHJlbmRlckNvdW50ID0gaXRlbS5yZW5kZXJDb3VudDsKKworICAgIHJl
dHVybiB7CisgICAgICAnT3duZXIgPiBDb21wb25lbnQnOiBrZXksCisgICAgICAnSW5jbHVzaXZl
IHdhc3RlZCB0aW1lIChtcyknOiByb3VuZEZsb2F0KGluY2x1c2l2ZVJlbmRlckR1cmF0aW9uKSwK
KyAgICAgICdJbnN0YW5jZSBjb3VudCc6IGluc3RhbmNlQ291bnQsCisgICAgICAnUmVuZGVyIGNv
dW50JzogcmVuZGVyQ291bnQKKyAgICB9OworICB9KTsKKyAgY29uc29sZVRhYmxlKHRhYmxlKTsK
K30KKworZnVuY3Rpb24gcHJpbnRPcGVyYXRpb25zKGZsdXNoSGlzdG9yeSkgeworICBpZiAoIShw
cm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkgeworICAgIHdhcm5JblByb2R1
Y3Rpb24oKTsKKyAgICByZXR1cm47CisgIH0KKworICB2YXIgc3RhdHMgPSBnZXRPcGVyYXRpb25z
KGZsdXNoSGlzdG9yeSk7CisgIHZhciB0YWJsZSA9IHN0YXRzLm1hcChmdW5jdGlvbiAoc3RhdCkg
eworICAgIHJldHVybiB7CisgICAgICAnT3duZXIgPiBOb2RlJzogc3RhdC5rZXksCisgICAgICAn
T3BlcmF0aW9uJzogc3RhdC50eXBlLAorICAgICAgJ1BheWxvYWQnOiB0eXBlb2Ygc3RhdC5wYXls
b2FkID09PSAnb2JqZWN0JyA/IEpTT04uc3RyaW5naWZ5KHN0YXQucGF5bG9hZCkgOiBzdGF0LnBh
eWxvYWQsCisgICAgICAnRmx1c2ggaW5kZXgnOiBzdGF0LmZsdXNoSW5kZXgsCisgICAgICAnT3du
ZXIgQ29tcG9uZW50IElEJzogc3RhdC5vd25lcklELAorICAgICAgJ0RPTSBDb21wb25lbnQgSUQn
OiBzdGF0Lmluc3RhbmNlSUQKKyAgICB9OworICB9KTsKKyAgY29uc29sZVRhYmxlKHRhYmxlKTsK
K30KKwordmFyIHdhcm5lZEFib3V0UHJpbnRET00gPSBmYWxzZTsKK2Z1bmN0aW9uIHByaW50RE9N
KG1lYXN1cmVtZW50cykgeworICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24n
ID8gd2FybmluZyh3YXJuZWRBYm91dFByaW50RE9NLCAnYFJlYWN0UGVyZi5wcmludERPTSguLi4p
YCBpcyBkZXByZWNhdGVkLiBVc2UgJyArICdgUmVhY3RQZXJmLnByaW50T3BlcmF0aW9ucyguLi4p
YCBpbnN0ZWFkLicpIDogdm9pZCAwOworICB3YXJuZWRBYm91dFByaW50RE9NID0gdHJ1ZTsKKyAg
cmV0dXJuIHByaW50T3BlcmF0aW9ucyhtZWFzdXJlbWVudHMpOworfQorCit2YXIgd2FybmVkQWJv
dXRHZXRNZWFzdXJlbWVudHNTdW1tYXJ5TWFwID0gZmFsc2U7CitmdW5jdGlvbiBnZXRNZWFzdXJl
bWVudHNTdW1tYXJ5TWFwKG1lYXN1cmVtZW50cykgeworICBwcm9jZXNzLmVudi5OT0RFX0VOViAh
PT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyh3YXJuZWRBYm91dEdldE1lYXN1cmVtZW50c1N1bW1h
cnlNYXAsICdgUmVhY3RQZXJmLmdldE1lYXN1cmVtZW50c1N1bW1hcnlNYXAoLi4uKWAgaXMgZGVw
cmVjYXRlZC4gVXNlICcgKyAnYFJlYWN0UGVyZi5nZXRXYXN0ZWQoLi4uKWAgaW5zdGVhZC4nKSA6
IHZvaWQgMDsKKyAgd2FybmVkQWJvdXRHZXRNZWFzdXJlbWVudHNTdW1tYXJ5TWFwID0gdHJ1ZTsK
KyAgcmV0dXJuIGdldFdhc3RlZChtZWFzdXJlbWVudHMpOworfQorCitmdW5jdGlvbiBzdGFydCgp
IHsKKyAgaWYgKCEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHsKKyAg
ICB3YXJuSW5Qcm9kdWN0aW9uKCk7CisgICAgcmV0dXJuOworICB9CisKKyAgUmVhY3REZWJ1Z1Rv
b2wuYmVnaW5Qcm9maWxpbmcoKTsKK30KKworZnVuY3Rpb24gc3RvcCgpIHsKKyAgaWYgKCEocHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHsKKyAgICB3YXJuSW5Qcm9kdWN0
aW9uKCk7CisgICAgcmV0dXJuOworICB9CisKKyAgUmVhY3REZWJ1Z1Rvb2wuZW5kUHJvZmlsaW5n
KCk7Cit9CisKK2Z1bmN0aW9uIGlzUnVubmluZygpIHsKKyAgaWYgKCEocHJvY2Vzcy5lbnYuTk9E
RV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHsKKyAgICB3YXJuSW5Qcm9kdWN0aW9uKCk7CisgICAg
cmV0dXJuIGZhbHNlOworICB9CisKKyAgcmV0dXJuIFJlYWN0RGVidWdUb29sLmlzUHJvZmlsaW5n
KCk7Cit9CisKK3ZhciBSZWFjdFBlcmZBbmFseXNpcyA9IHsKKyAgZ2V0TGFzdE1lYXN1cmVtZW50
czogZ2V0TGFzdE1lYXN1cmVtZW50cywKKyAgZ2V0RXhjbHVzaXZlOiBnZXRFeGNsdXNpdmUsCisg
IGdldEluY2x1c2l2ZTogZ2V0SW5jbHVzaXZlLAorICBnZXRXYXN0ZWQ6IGdldFdhc3RlZCwKKyAg
Z2V0T3BlcmF0aW9uczogZ2V0T3BlcmF0aW9ucywKKyAgcHJpbnRFeGNsdXNpdmU6IHByaW50RXhj
bHVzaXZlLAorICBwcmludEluY2x1c2l2ZTogcHJpbnRJbmNsdXNpdmUsCisgIHByaW50V2FzdGVk
OiBwcmludFdhc3RlZCwKKyAgcHJpbnRPcGVyYXRpb25zOiBwcmludE9wZXJhdGlvbnMsCisgIHN0
YXJ0OiBzdGFydCwKKyAgc3RvcDogc3RvcCwKKyAgaXNSdW5uaW5nOiBpc1J1bm5pbmcsCisgIC8v
IERlcHJlY2F0ZWQ6CisgIHByaW50RE9NOiBwcmludERPTSwKKyAgZ2V0TWVhc3VyZW1lbnRzU3Vt
bWFyeU1hcDogZ2V0TWVhc3VyZW1lbnRzU3VtbWFyeU1hcAorfTsKKworbW9kdWxlLmV4cG9ydHMg
PSBSZWFjdFBlcmZBbmFseXNpczsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdFBy
aW9yaXR5TGV2ZWwuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9t
L2xpYi9SZWFjdFByaW9yaXR5TGV2ZWwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTg0YmE4OTIwNjQ3MjZlZTlh
YzJkYWZkZDNmMjk5MzczNjIyNThmNwotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Jl
YWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0UHJpb3JpdHlMZXZlbC5qcwpAQCAt
MCwwICsxLDIwIEBACisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJ
bmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElD
RU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUg
UEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiAKKyAqLworCisndXNl
IHN0cmljdCc7CisKK21vZHVsZS5leHBvcnRzID0geworICBOb1dvcms6IDAsIC8vIE5vIHdvcmsg
aXMgcGVuZGluZy4KKyAgU3luY2hyb25vdXNQcmlvcml0eTogMSwgLy8gRm9yIGNvbnRyb2xsZWQg
dGV4dCBpbnB1dHMuIFN5bmNocm9ub3VzIHNpZGUtZWZmZWN0cy4KKyAgQW5pbWF0aW9uUHJpb3Jp
dHk6IDIsIC8vIE5lZWRzIHRvIGNvbXBsZXRlIGJlZm9yZSB0aGUgbmV4dCBmcmFtZS4KKyAgSGln
aFByaW9yaXR5OiAzLCAvLyBJbnRlcmFjdGlvbiB0aGF0IG5lZWRzIHRvIGNvbXBsZXRlIHByZXR0
eSBzb29uIHRvIGZlZWwgcmVzcG9uc2l2ZS4KKyAgTG93UHJpb3JpdHk6IDQsIC8vIERhdGEgZmV0
Y2hpbmcsIG9yIHJlc3VsdCBmcm9tIHVwZGF0aW5nIHN0b3Jlcy4KKyAgT2Zmc2NyZWVuUHJpb3Jp
dHk6IDUgfTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdFByb3BUeXBlTG9jYXRp
b25OYW1lcy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGli
L1JlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRiMDMzY2RhOGI4Yzcy
ZDIwZWQxZjRlNmJhODQzN2M2MTAwZjQ4MDAKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdFByb3BUeXBlTG9jYXRpb25O
YW1lcy5qcwpAQCAtMCwwICsxLDI0IEBACisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQs
IEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291
cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGlu
IHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJj
ZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBm
b3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiAK
KyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lcyA9
IHt9OworCitpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgeworICBS
ZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lcyA9IHsKKyAgICBwcm9wOiAncHJvcCcsCisgICAgY29u
dGV4dDogJ2NvbnRleHQnLAorICAgIGNoaWxkQ29udGV4dDogJ2NoaWxkIGNvbnRleHQnCisgIH07
Cit9CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXM7ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9k
ZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RQcm9wVHlwZUxvY2F0aW9ucy5qcyBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0UHJvcFR5cGVMb2Nh
dGlvbnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmQ5NGNhODFlMzlkNDc4NjhmZGEzMjhkOTc1NjdlMzAyZDA5
MzZmYQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9y
ZWFjdC1kb20vbGliL1JlYWN0UHJvcFR5cGVMb2NhdGlvbnMuanMKQEAgLTAsMCArMSwxMiBAQAor
LyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy
IHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFu
dAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogCisgKi8KKworJ3VzZSBzdHJpY3QnOwpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25v
ZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0LmpzIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RQcm9wVHlwZXNTZWNy
ZXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMzNkM2ZhYzAyN2Q4MzM2OWM4YzNhNWQxYTU3ZDIwZTg5ZmIxM2Y0
MwotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFj
dC1kb20vbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0LmpzCkBAIC0wLDAgKzEsMTYgQEAKKy8qKgor
ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUg
QlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAq
IG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhl
IHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIAorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIFJl
YWN0UHJvcFR5cGVzU2VjcmV0ID0gJ1NFQ1JFVF9ET19OT1RfUEFTU19USElTX09SX1lPVV9XSUxM
X0JFX0ZJUkVEJzsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdFByb3BUeXBlc1NlY3JldDsKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9u
b2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uLmpzIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RSZWNvbmNp
bGVUcmFuc2FjdGlvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYjFhYmFmOWNlMTM2MGUwNjhjODhkZDk2NDhl
ZmEwNjQ5MzUyODgyCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9t
b2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbi5qcwpAQCAtMCww
ICsxLDE3NyBAQAorLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5j
LgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxp
Y2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRk
aXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBB
VEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0
JzsKKwordmFyIF9hc3NpZ24gPSByZXF1aXJlKCdvYmplY3QtYXNzaWduJyk7CisKK3ZhciBDYWxs
YmFja1F1ZXVlID0gcmVxdWlyZSgnLi9DYWxsYmFja1F1ZXVlJyk7Cit2YXIgUG9vbGVkQ2xhc3Mg
PSByZXF1aXJlKCcuL1Bvb2xlZENsYXNzJyk7Cit2YXIgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVy
ID0gcmVxdWlyZSgnLi9SZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXInKTsKK3ZhciBSZWFjdElucHV0
U2VsZWN0aW9uID0gcmVxdWlyZSgnLi9SZWFjdElucHV0U2VsZWN0aW9uJyk7Cit2YXIgUmVhY3RJ
bnN0cnVtZW50YXRpb24gPSByZXF1aXJlKCcuL1JlYWN0SW5zdHJ1bWVudGF0aW9uJyk7Cit2YXIg
VHJhbnNhY3Rpb24gPSByZXF1aXJlKCcuL1RyYW5zYWN0aW9uJyk7Cit2YXIgUmVhY3RVcGRhdGVR
dWV1ZSA9IHJlcXVpcmUoJy4vUmVhY3RVcGRhdGVRdWV1ZScpOworCisvKioKKyAqIEVuc3VyZXMg
dGhhdCwgd2hlbiBwb3NzaWJsZSwgdGhlIHNlbGVjdGlvbiByYW5nZSAoY3VycmVudGx5IHNlbGVj
dGVkIHRleHQKKyAqIGlucHV0KSBpcyBub3QgZGlzdHVyYmVkIGJ5IHBlcmZvcm1pbmcgdGhlIHRy
YW5zYWN0aW9uLgorICovCit2YXIgU0VMRUNUSU9OX1JFU1RPUkFUSU9OID0geworICAvKioKKyAg
ICogQHJldHVybiB7U2VsZWN0aW9ufSBTZWxlY3Rpb24gaW5mb3JtYXRpb24uCisgICAqLworICBp
bml0aWFsaXplOiBSZWFjdElucHV0U2VsZWN0aW9uLmdldFNlbGVjdGlvbkluZm9ybWF0aW9uLAor
ICAvKioKKyAgICogQHBhcmFtIHtTZWxlY3Rpb259IHNlbCBTZWxlY3Rpb24gaW5mb3JtYXRpb24g
cmV0dXJuZWQgZnJvbSBgaW5pdGlhbGl6ZWAuCisgICAqLworICBjbG9zZTogUmVhY3RJbnB1dFNl
bGVjdGlvbi5yZXN0b3JlU2VsZWN0aW9uCit9OworCisvKioKKyAqIFN1cHByZXNzZXMgZXZlbnRz
IChibHVyL2ZvY3VzKSB0aGF0IGNvdWxkIGJlIGluYWR2ZXJ0ZW50bHkgZGlzcGF0Y2hlZCBkdWUg
dG8KKyAqIGhpZ2ggbGV2ZWwgRE9NIG1hbmlwdWxhdGlvbnMgKGxpa2UgdGVtcG9yYXJpbHkgcmVt
b3ZpbmcgYSB0ZXh0IGlucHV0IGZyb20gdGhlCisgKiBET00pLgorICovCit2YXIgRVZFTlRfU1VQ
UFJFU1NJT04gPSB7CisgIC8qKgorICAgKiBAcmV0dXJuIHtib29sZWFufSBUaGUgZW5hYmxlZCBz
dGF0dXMgb2YgYFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlcmAgYmVmb3JlCisgICAqIHRoZSByZWNv
bmNpbGlhdGlvbi4KKyAgICovCisgIGluaXRpYWxpemU6IGZ1bmN0aW9uICgpIHsKKyAgICB2YXIg
Y3VycmVudGx5RW5hYmxlZCA9IFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5pc0VuYWJsZWQoKTsK
KyAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuc2V0RW5hYmxlZChmYWxzZSk7CisgICAgcmV0
dXJuIGN1cnJlbnRseUVuYWJsZWQ7CisgIH0sCisKKyAgLyoqCisgICAqIEBwYXJhbSB7Ym9vbGVh
bn0gcHJldmlvdXNseUVuYWJsZWQgRW5hYmxlZCBzdGF0dXMgb2YKKyAgICogICBgUmVhY3RCcm93
c2VyRXZlbnRFbWl0dGVyYCBiZWZvcmUgdGhlIHJlY29uY2lsaWF0aW9uIG9jY3VycmVkLiBgY2xv
c2VgCisgICAqICAgcmVzdG9yZXMgdGhlIHByZXZpb3VzIHZhbHVlLgorICAgKi8KKyAgY2xvc2U6
IGZ1bmN0aW9uIChwcmV2aW91c2x5RW5hYmxlZCkgeworICAgIFJlYWN0QnJvd3NlckV2ZW50RW1p
dHRlci5zZXRFbmFibGVkKHByZXZpb3VzbHlFbmFibGVkKTsKKyAgfQorfTsKKworLyoqCisgKiBQ
cm92aWRlcyBhIHF1ZXVlIGZvciBjb2xsZWN0aW5nIGBjb21wb25lbnREaWRNb3VudGAgYW5kCisg
KiBgY29tcG9uZW50RGlkVXBkYXRlYCBjYWxsYmFja3MgZHVyaW5nIHRoZSB0cmFuc2FjdGlvbi4K
KyAqLwordmFyIE9OX0RPTV9SRUFEWV9RVUVVRUlORyA9IHsKKyAgLyoqCisgICAqIEluaXRpYWxp
emVzIHRoZSBpbnRlcm5hbCBgb25ET01SZWFkeWAgcXVldWUuCisgICAqLworICBpbml0aWFsaXpl
OiBmdW5jdGlvbiAoKSB7CisgICAgdGhpcy5yZWFjdE1vdW50UmVhZHkucmVzZXQoKTsKKyAgfSwK
KworICAvKioKKyAgICogQWZ0ZXIgRE9NIGlzIGZsdXNoZWQsIGludm9rZSBhbGwgcmVnaXN0ZXJl
ZCBgb25ET01SZWFkeWAgY2FsbGJhY2tzLgorICAgKi8KKyAgY2xvc2U6IGZ1bmN0aW9uICgpIHsK
KyAgICB0aGlzLnJlYWN0TW91bnRSZWFkeS5ub3RpZnlBbGwoKTsKKyAgfQorfTsKKworLyoqCisg
KiBFeGVjdXRlZCB3aXRoaW4gdGhlIHNjb3BlIG9mIHRoZSBgVHJhbnNhY3Rpb25gIGluc3RhbmNl
LiBDb25zaWRlciB0aGVzZSBhcworICogYmVpbmcgbWVtYmVyIG1ldGhvZHMsIGJ1dCB3aXRoIGFu
IGltcGxpZWQgb3JkZXJpbmcgd2hpbGUgYmVpbmcgaXNvbGF0ZWQgZnJvbQorICogZWFjaCBvdGhl
ci4KKyAqLwordmFyIFRSQU5TQUNUSU9OX1dSQVBQRVJTID0gW1NFTEVDVElPTl9SRVNUT1JBVElP
TiwgRVZFTlRfU1VQUFJFU1NJT04sIE9OX0RPTV9SRUFEWV9RVUVVRUlOR107CisKK2lmIChwcm9j
ZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgIFRSQU5TQUNUSU9OX1dSQVBQ
RVJTLnB1c2goeworICAgIGluaXRpYWxpemU6IFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9v
bC5vbkJlZ2luRmx1c2gsCisgICAgY2xvc2U6IFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9v
bC5vbkVuZEZsdXNoCisgIH0pOworfQorCisvKioKKyAqIEN1cnJlbnRseToKKyAqIC0gVGhlIG9y
ZGVyIHRoYXQgdGhlc2UgYXJlIGxpc3RlZCBpbiB0aGUgdHJhbnNhY3Rpb24gaXMgY3JpdGljYWw6
CisgKiAtIFN1cHByZXNzZXMgZXZlbnRzLgorICogLSBSZXN0b3JlcyBzZWxlY3Rpb24gcmFuZ2Uu
CisgKgorICogRnV0dXJlOgorICogLSBSZXN0b3JlIGRvY3VtZW50L292ZXJmbG93IHNjcm9sbCBw
b3NpdGlvbnMgdGhhdCB3ZXJlIHVuaW50ZW50aW9uYWxseQorICogICBtb2RpZmllZCB2aWEgRE9N
IGluc2VydGlvbnMgYWJvdmUgdGhlIHRvcCB2aWV3cG9ydCBib3VuZGFyeS4KKyAqIC0gSW1wbGVt
ZW50L2ludGVncmF0ZSB3aXRoIGN1c3RvbWl6ZWQgY29uc3RyYWludCBiYXNlZCBsYXlvdXQgc3lz
dGVtIGFuZCBrZWVwCisgKiAgIHRyYWNrIG9mIHdoaWNoIGRpbWVuc2lvbnMgbXVzdCBiZSByZW1l
YXN1cmVkLgorICoKKyAqIEBjbGFzcyBSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uCisgKi8KK2Z1
bmN0aW9uIFJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24odXNlQ3JlYXRlRWxlbWVudCkgeworICB0
aGlzLnJlaW5pdGlhbGl6ZVRyYW5zYWN0aW9uKCk7CisgIC8vIE9ubHkgc2VydmVyLXNpZGUgcmVu
ZGVyaW5nIHJlYWxseSBuZWVkcyB0aGlzIG9wdGlvbiAoc2VlCisgIC8vIGBSZWFjdFNlcnZlclJl
bmRlcmluZ2ApLCBidXQgc2VydmVyLXNpZGUgdXNlcworICAvLyBgUmVhY3RTZXJ2ZXJSZW5kZXJp
bmdUcmFuc2FjdGlvbmAgaW5zdGVhZC4gVGhpcyBvcHRpb24gaXMgaGVyZSBzbyB0aGF0IGl0J3MK
KyAgLy8gYWNjZXNzaWJsZSBhbmQgZGVmYXVsdHMgdG8gZmFsc2Ugd2hlbiBgUmVhY3RET01Db21w
b25lbnRgIGFuZAorICAvLyBgUmVhY3RET01UZXh0Q29tcG9uZW50YCBjaGVja3MgaXQgaW4gYG1v
dW50Q29tcG9uZW50YC5gCisgIHRoaXMucmVuZGVyVG9TdGF0aWNNYXJrdXAgPSBmYWxzZTsKKyAg
dGhpcy5yZWFjdE1vdW50UmVhZHkgPSBDYWxsYmFja1F1ZXVlLmdldFBvb2xlZChudWxsKTsKKyAg
dGhpcy51c2VDcmVhdGVFbGVtZW50ID0gdXNlQ3JlYXRlRWxlbWVudDsKK30KKwordmFyIE1peGlu
ID0geworICAvKioKKyAgICogQHNlZSBUcmFuc2FjdGlvbgorICAgKiBAYWJzdHJhY3QKKyAgICog
QGZpbmFsCisgICAqIEByZXR1cm4ge2FycmF5PG9iamVjdD59IExpc3Qgb2Ygb3BlcmF0aW9uIHdy
YXAgcHJvY2VkdXJlcy4KKyAgICogICBUT0RPOiBjb252ZXJ0IHRvIGFycmF5PFRyYW5zYWN0aW9u
V3JhcHBlcj4KKyAgICovCisgIGdldFRyYW5zYWN0aW9uV3JhcHBlcnM6IGZ1bmN0aW9uICgpIHsK
KyAgICByZXR1cm4gVFJBTlNBQ1RJT05fV1JBUFBFUlM7CisgIH0sCisKKyAgLyoqCisgICAqIEBy
ZXR1cm4ge29iamVjdH0gVGhlIHF1ZXVlIHRvIGNvbGxlY3QgYG9uRE9NUmVhZHlgIGNhbGxiYWNr
cyB3aXRoLgorICAgKi8KKyAgZ2V0UmVhY3RNb3VudFJlYWR5OiBmdW5jdGlvbiAoKSB7CisgICAg
cmV0dXJuIHRoaXMucmVhY3RNb3VudFJlYWR5OworICB9LAorCisgIC8qKgorICAgKiBAcmV0dXJu
IHtvYmplY3R9IFRoZSBxdWV1ZSB0byBjb2xsZWN0IFJlYWN0IGFzeW5jIGV2ZW50cy4KKyAgICov
CisgIGdldFVwZGF0ZVF1ZXVlOiBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIFJlYWN0VXBkYXRl
UXVldWU7CisgIH0sCisKKyAgLyoqCisgICAqIFNhdmUgY3VycmVudCB0cmFuc2FjdGlvbiBzdGF0
ZSAtLSBpZiB0aGUgcmV0dXJuIHZhbHVlIGZyb20gdGhpcyBtZXRob2QgaXMKKyAgICogcGFzc2Vk
IHRvIGByb2xsYmFja2AsIHRoZSB0cmFuc2FjdGlvbiB3aWxsIGJlIHJlc2V0IHRvIHRoYXQgc3Rh
dGUuCisgICAqLworICBjaGVja3BvaW50OiBmdW5jdGlvbiAoKSB7CisgICAgLy8gcmVhY3RNb3Vu
dFJlYWR5IGlzIHRoZSBvdXIgb25seSBzdGF0ZWZ1bCB3cmFwcGVyCisgICAgcmV0dXJuIHRoaXMu
cmVhY3RNb3VudFJlYWR5LmNoZWNrcG9pbnQoKTsKKyAgfSwKKworICByb2xsYmFjazogZnVuY3Rp
b24gKGNoZWNrcG9pbnQpIHsKKyAgICB0aGlzLnJlYWN0TW91bnRSZWFkeS5yb2xsYmFjayhjaGVj
a3BvaW50KTsKKyAgfSwKKworICAvKioKKyAgICogYFBvb2xlZENsYXNzYCBsb29rcyBmb3IgdGhp
cywgYW5kIHdpbGwgaW52b2tlIHRoaXMgYmVmb3JlIGFsbG93aW5nIHRoaXMKKyAgICogaW5zdGFu
Y2UgdG8gYmUgcmV1c2VkLgorICAgKi8KKyAgZGVzdHJ1Y3RvcjogZnVuY3Rpb24gKCkgeworICAg
IENhbGxiYWNrUXVldWUucmVsZWFzZSh0aGlzLnJlYWN0TW91bnRSZWFkeSk7CisgICAgdGhpcy5y
ZWFjdE1vdW50UmVhZHkgPSBudWxsOworICB9Cit9OworCitfYXNzaWduKFJlYWN0UmVjb25jaWxl
VHJhbnNhY3Rpb24ucHJvdG90eXBlLCBUcmFuc2FjdGlvbiwgTWl4aW4pOworCitQb29sZWRDbGFz
cy5hZGRQb29saW5nVG8oUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbik7CisKK21vZHVsZS5leHBv
cnRzID0gUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbjsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9t
L2xpYi9SZWFjdFJlY29uY2lsZXIuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMv
cmVhY3QtZG9tL2xpYi9SZWFjdFJlY29uY2lsZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2IzY2RmZGM0MDNh
MmRmYzU3NGE4ODRkNTQxZjMwM2FhYzA1NTUwMQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0UmVjb25jaWxlci5qcwpA
QCAtMCwwICsxLDE2NyBAQAorLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9v
aywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAq
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4g
QW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ug
c3RyaWN0JzsKKwordmFyIFJlYWN0UmVmID0gcmVxdWlyZSgnLi9SZWFjdFJlZicpOwordmFyIFJl
YWN0SW5zdHJ1bWVudGF0aW9uID0gcmVxdWlyZSgnLi9SZWFjdEluc3RydW1lbnRhdGlvbicpOwor
Cit2YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTsKKworLyoqCisgKiBI
ZWxwZXIgdG8gY2FsbCBSZWFjdFJlZi5hdHRhY2hSZWZzIHdpdGggdGhpcyBjb21wb3NpdGUgY29t
cG9uZW50LCBzcGxpdCBvdXQKKyAqIHRvIGF2b2lkIGFsbG9jYXRpb25zIGluIHRoZSB0cmFuc2Fj
dGlvbiBtb3VudC1yZWFkeSBxdWV1ZS4KKyAqLworZnVuY3Rpb24gYXR0YWNoUmVmcygpIHsKKyAg
UmVhY3RSZWYuYXR0YWNoUmVmcyh0aGlzLCB0aGlzLl9jdXJyZW50RWxlbWVudCk7Cit9CisKK3Zh
ciBSZWFjdFJlY29uY2lsZXIgPSB7CisKKyAgLyoqCisgICAqIEluaXRpYWxpemVzIHRoZSBjb21w
b25lbnQsIHJlbmRlcnMgbWFya3VwLCBhbmQgcmVnaXN0ZXJzIGV2ZW50IGxpc3RlbmVycy4KKyAg
ICoKKyAgICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gaW50ZXJuYWxJbnN0YW5jZQorICAgKiBA
cGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb258UmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFu
c2FjdGlvbn0gdHJhbnNhY3Rpb24KKyAgICogQHBhcmFtIHs/b2JqZWN0fSB0aGUgY29udGFpbmlu
ZyBob3N0IGNvbXBvbmVudCBpbnN0YW5jZQorICAgKiBAcGFyYW0gez9vYmplY3R9IGluZm8gYWJv
dXQgdGhlIGhvc3QgY29udGFpbmVyCisgICAqIEByZXR1cm4gez9zdHJpbmd9IFJlbmRlcmVkIG1h
cmt1cCB0byBiZSBpbnNlcnRlZCBpbnRvIHRoZSBET00uCisgICAqIEBmaW5hbAorICAgKiBAaW50
ZXJuYWwKKyAgICovCisgIG1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAoaW50ZXJuYWxJbnN0YW5j
ZSwgdHJhbnNhY3Rpb24sIGhvc3RQYXJlbnQsIGhvc3RDb250YWluZXJJbmZvLCBjb250ZXh0LCBw
YXJlbnREZWJ1Z0lEIC8vIDAgaW4gcHJvZHVjdGlvbiBhbmQgZm9yIHJvb3RzCisgICkgeworICAg
IGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICBpZiAo
aW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCAhPT0gMCkgeworICAgICAgICBSZWFjdEluc3RydW1l
bnRhdGlvbi5kZWJ1Z1Rvb2wub25CZWZvcmVNb3VudENvbXBvbmVudChpbnRlcm5hbEluc3RhbmNl
Ll9kZWJ1Z0lELCBpbnRlcm5hbEluc3RhbmNlLl9jdXJyZW50RWxlbWVudCwgcGFyZW50RGVidWdJ
RCk7CisgICAgICB9CisgICAgfQorICAgIHZhciBtYXJrdXAgPSBpbnRlcm5hbEluc3RhbmNlLm1v
dW50Q29tcG9uZW50KHRyYW5zYWN0aW9uLCBob3N0UGFyZW50LCBob3N0Q29udGFpbmVySW5mbywg
Y29udGV4dCwgcGFyZW50RGVidWdJRCk7CisgICAgaWYgKGludGVybmFsSW5zdGFuY2UuX2N1cnJl
bnRFbGVtZW50ICYmIGludGVybmFsSW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50LnJlZiAhPSBudWxs
KSB7CisgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGF0dGFj
aFJlZnMsIGludGVybmFsSW5zdGFuY2UpOworICAgIH0KKyAgICBpZiAocHJvY2Vzcy5lbnYuTk9E
RV9FTlYgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgaWYgKGludGVybmFsSW5zdGFuY2UuX2Rl
YnVnSUQgIT09IDApIHsKKyAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9u
TW91bnRDb21wb25lbnQoaW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCk7CisgICAgICB9CisgICAg
fQorICAgIHJldHVybiBtYXJrdXA7CisgIH0sCisKKyAgLyoqCisgICAqIFJldHVybnMgYSB2YWx1
ZSB0aGF0IGNhbiBiZSBwYXNzZWQgdG8KKyAgICogUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudC5y
ZXBsYWNlTm9kZVdpdGhNYXJrdXAuCisgICAqLworICBnZXRIb3N0Tm9kZTogZnVuY3Rpb24gKGlu
dGVybmFsSW5zdGFuY2UpIHsKKyAgICByZXR1cm4gaW50ZXJuYWxJbnN0YW5jZS5nZXRIb3N0Tm9k
ZSgpOworICB9LAorCisgIC8qKgorICAgKiBSZWxlYXNlcyBhbnkgcmVzb3VyY2VzIGFsbG9jYXRl
ZCBieSBgbW91bnRDb21wb25lbnRgLgorICAgKgorICAgKiBAZmluYWwKKyAgICogQGludGVybmFs
CisgICAqLworICB1bm1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAoaW50ZXJuYWxJbnN0YW5jZSwg
c2FmZWx5KSB7CisgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicp
IHsKKyAgICAgIGlmIChpbnRlcm5hbEluc3RhbmNlLl9kZWJ1Z0lEICE9PSAwKSB7CisgICAgICAg
IFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkJlZm9yZVVubW91bnRDb21wb25lbnQo
aW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCk7CisgICAgICB9CisgICAgfQorICAgIFJlYWN0UmVm
LmRldGFjaFJlZnMoaW50ZXJuYWxJbnN0YW5jZSwgaW50ZXJuYWxJbnN0YW5jZS5fY3VycmVudEVs
ZW1lbnQpOworICAgIGludGVybmFsSW5zdGFuY2UudW5tb3VudENvbXBvbmVudChzYWZlbHkpOwor
ICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICBp
ZiAoaW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCAhPT0gMCkgeworICAgICAgICBSZWFjdEluc3Ry
dW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25Vbm1vdW50Q29tcG9uZW50KGludGVybmFsSW5zdGFuY2Uu
X2RlYnVnSUQpOworICAgICAgfQorICAgIH0KKyAgfSwKKworICAvKioKKyAgICogVXBkYXRlIGEg
Y29tcG9uZW50IHVzaW5nIGEgbmV3IGVsZW1lbnQuCisgICAqCisgICAqIEBwYXJhbSB7UmVhY3RD
b21wb25lbnR9IGludGVybmFsSW5zdGFuY2UKKyAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IG5l
eHRFbGVtZW50CisgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNh
Y3Rpb24KKyAgICogQHBhcmFtIHtvYmplY3R9IGNvbnRleHQKKyAgICogQGludGVybmFsCisgICAq
LworICByZWNlaXZlQ29tcG9uZW50OiBmdW5jdGlvbiAoaW50ZXJuYWxJbnN0YW5jZSwgbmV4dEVs
ZW1lbnQsIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7CisgICAgdmFyIHByZXZFbGVtZW50ID0gaW50
ZXJuYWxJbnN0YW5jZS5fY3VycmVudEVsZW1lbnQ7CisKKyAgICBpZiAobmV4dEVsZW1lbnQgPT09
IHByZXZFbGVtZW50ICYmIGNvbnRleHQgPT09IGludGVybmFsSW5zdGFuY2UuX2NvbnRleHQpIHsK
KyAgICAgIC8vIFNpbmNlIGVsZW1lbnRzIGFyZSBpbW11dGFibGUgYWZ0ZXIgdGhlIG93bmVyIGlz
IHJlbmRlcmVkLAorICAgICAgLy8gd2UgY2FuIGRvIGEgY2hlYXAgaWRlbnRpdHkgY29tcGFyZSBo
ZXJlIHRvIGRldGVybWluZSBpZiB0aGlzIGlzIGEKKyAgICAgIC8vIHN1cGVyZmx1b3VzIHJlY29u
Y2lsZS4gSXQncyBwb3NzaWJsZSBmb3Igc3RhdGUgdG8gYmUgbXV0YWJsZSBidXQgc3VjaAorICAg
ICAgLy8gY2hhbmdlIHNob3VsZCB0cmlnZ2VyIGFuIHVwZGF0ZSBvZiB0aGUgb3duZXIgd2hpY2gg
d291bGQgcmVjcmVhdGUKKyAgICAgIC8vIHRoZSBlbGVtZW50LiBXZSBleHBsaWNpdGx5IGNoZWNr
IGZvciB0aGUgZXhpc3RlbmNlIG9mIGFuIG93bmVyIHNpbmNlCisgICAgICAvLyBpdCdzIHBvc3Np
YmxlIGZvciBhbiBlbGVtZW50IGNyZWF0ZWQgb3V0c2lkZSBhIGNvbXBvc2l0ZSB0byBiZQorICAg
ICAgLy8gZGVlcGx5IG11dGF0ZWQgYW5kIHJldXNlZC4KKworICAgICAgLy8gVE9ETzogQmFpbGlu
ZyBvdXQgZWFybHkgaXMganVzdCBhIHBlcmYgb3B0aW1pemF0aW9uIHJpZ2h0PworICAgICAgLy8g
VE9ETzogUmVtb3ZpbmcgdGhlIHJldHVybiBzdGF0ZW1lbnQgc2hvdWxkIGFmZmVjdCBjb3JyZWN0
bmVzcz8KKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgaWYgKGludGVybmFsSW5zdGFuY2UuX2RlYnVn
SUQgIT09IDApIHsKKyAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uQmVm
b3JlVXBkYXRlQ29tcG9uZW50KGludGVybmFsSW5zdGFuY2UuX2RlYnVnSUQsIG5leHRFbGVtZW50
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgcmVmc0NoYW5nZWQgPSBSZWFjdFJlZi5zaG91
bGRVcGRhdGVSZWZzKHByZXZFbGVtZW50LCBuZXh0RWxlbWVudCk7CisKKyAgICBpZiAocmVmc0No
YW5nZWQpIHsKKyAgICAgIFJlYWN0UmVmLmRldGFjaFJlZnMoaW50ZXJuYWxJbnN0YW5jZSwgcHJl
dkVsZW1lbnQpOworICAgIH0KKworICAgIGludGVybmFsSW5zdGFuY2UucmVjZWl2ZUNvbXBvbmVu
dChuZXh0RWxlbWVudCwgdHJhbnNhY3Rpb24sIGNvbnRleHQpOworCisgICAgaWYgKHJlZnNDaGFu
Z2VkICYmIGludGVybmFsSW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50ICYmIGludGVybmFsSW5zdGFu
Y2UuX2N1cnJlbnRFbGVtZW50LnJlZiAhPSBudWxsKSB7CisgICAgICB0cmFuc2FjdGlvbi5nZXRS
ZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGF0dGFjaFJlZnMsIGludGVybmFsSW5zdGFuY2UpOwor
ICAgIH0KKworICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7
CisgICAgICBpZiAoaW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCAhPT0gMCkgeworICAgICAgICBS
ZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25VcGRhdGVDb21wb25lbnQoaW50ZXJuYWxJ
bnN0YW5jZS5fZGVidWdJRCk7CisgICAgICB9CisgICAgfQorICB9LAorCisgIC8qKgorICAgKiBG
bHVzaCBhbnkgZGlydHkgY2hhbmdlcyBpbiBhIGNvbXBvbmVudC4KKyAgICoKKyAgICogQHBhcmFt
IHtSZWFjdENvbXBvbmVudH0gaW50ZXJuYWxJbnN0YW5jZQorICAgKiBAcGFyYW0ge1JlYWN0UmVj
b25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uCisgICAqIEBpbnRlcm5hbAorICAgKi8KKyAg
cGVyZm9ybVVwZGF0ZUlmTmVjZXNzYXJ5OiBmdW5jdGlvbiAoaW50ZXJuYWxJbnN0YW5jZSwgdHJh
bnNhY3Rpb24sIHVwZGF0ZUJhdGNoTnVtYmVyKSB7CisgICAgaWYgKGludGVybmFsSW5zdGFuY2Uu
X3VwZGF0ZUJhdGNoTnVtYmVyICE9PSB1cGRhdGVCYXRjaE51bWJlcikgeworICAgICAgLy8gVGhl
IGNvbXBvbmVudCdzIGVucXVldWVkIGJhdGNoIG51bWJlciBzaG91bGQgYWx3YXlzIGJlIHRoZSBj
dXJyZW50CisgICAgICAvLyBiYXRjaCBvciB0aGUgZm9sbG93aW5nIG9uZS4KKyAgICAgIHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGludGVybmFsSW5zdGFu
Y2UuX3VwZGF0ZUJhdGNoTnVtYmVyID09IG51bGwgfHwgaW50ZXJuYWxJbnN0YW5jZS5fdXBkYXRl
QmF0Y2hOdW1iZXIgPT09IHVwZGF0ZUJhdGNoTnVtYmVyICsgMSwgJ3BlcmZvcm1VcGRhdGVJZk5l
Y2Vzc2FyeTogVW5leHBlY3RlZCBiYXRjaCBudW1iZXIgKGN1cnJlbnQgJXMsICcgKyAncGVuZGlu
ZyAlcyknLCB1cGRhdGVCYXRjaE51bWJlciwgaW50ZXJuYWxJbnN0YW5jZS5fdXBkYXRlQmF0Y2hO
dW1iZXIpIDogdm9pZCAwOworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAocHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgaWYgKGludGVybmFsSW5zdGFu
Y2UuX2RlYnVnSUQgIT09IDApIHsKKyAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdU
b29sLm9uQmVmb3JlVXBkYXRlQ29tcG9uZW50KGludGVybmFsSW5zdGFuY2UuX2RlYnVnSUQsIGlu
dGVybmFsSW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50KTsKKyAgICAgIH0KKyAgICB9CisgICAgaW50
ZXJuYWxJbnN0YW5jZS5wZXJmb3JtVXBkYXRlSWZOZWNlc3NhcnkodHJhbnNhY3Rpb24pOworICAg
IGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICBpZiAo
aW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCAhPT0gMCkgeworICAgICAgICBSZWFjdEluc3RydW1l
bnRhdGlvbi5kZWJ1Z1Rvb2wub25VcGRhdGVDb21wb25lbnQoaW50ZXJuYWxJbnN0YW5jZS5fZGVi
dWdJRCk7CisgICAgICB9CisgICAgfQorICB9CisKK307CisKK21vZHVsZS5leHBvcnRzID0gUmVh
Y3RSZWNvbmNpbGVyOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0UmVmLmpzIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RSZWYuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMDU1ZTYzMmM3NzRkZWEwYWY5MDgzNmYwZjE2YmQ5MjQzODM5ZjViYQotLS0g
L2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20v
bGliL1JlYWN0UmVmLmpzCkBAIC0wLDAgKzEsODggQEAKKy8qKgorICogQ29weXJpZ2h0IDIwMTMt
cHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
VGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2Ug
Zm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRo
aXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMg
Y2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Lgor
ICoKKyAqIAorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIFJlYWN0T3duZXIgPSByZXF1aXJl
KCcuL1JlYWN0T3duZXInKTsKKwordmFyIFJlYWN0UmVmID0ge307CisKK2Z1bmN0aW9uIGF0dGFj
aFJlZihyZWYsIGNvbXBvbmVudCwgb3duZXIpIHsKKyAgaWYgKHR5cGVvZiByZWYgPT09ICdmdW5j
dGlvbicpIHsKKyAgICByZWYoY29tcG9uZW50LmdldFB1YmxpY0luc3RhbmNlKCkpOworICB9IGVs
c2UgeworICAgIC8vIExlZ2FjeSByZWYKKyAgICBSZWFjdE93bmVyLmFkZENvbXBvbmVudEFzUmVm
VG8oY29tcG9uZW50LCByZWYsIG93bmVyKTsKKyAgfQorfQorCitmdW5jdGlvbiBkZXRhY2hSZWYo
cmVmLCBjb21wb25lbnQsIG93bmVyKSB7CisgIGlmICh0eXBlb2YgcmVmID09PSAnZnVuY3Rpb24n
KSB7CisgICAgcmVmKG51bGwpOworICB9IGVsc2UgeworICAgIC8vIExlZ2FjeSByZWYKKyAgICBS
ZWFjdE93bmVyLnJlbW92ZUNvbXBvbmVudEFzUmVmRnJvbShjb21wb25lbnQsIHJlZiwgb3duZXIp
OworICB9Cit9CisKK1JlYWN0UmVmLmF0dGFjaFJlZnMgPSBmdW5jdGlvbiAoaW5zdGFuY2UsIGVs
ZW1lbnQpIHsKKyAgaWYgKGVsZW1lbnQgPT09IG51bGwgfHwgdHlwZW9mIGVsZW1lbnQgIT09ICdv
YmplY3QnKSB7CisgICAgcmV0dXJuOworICB9CisgIHZhciByZWYgPSBlbGVtZW50LnJlZjsKKyAg
aWYgKHJlZiAhPSBudWxsKSB7CisgICAgYXR0YWNoUmVmKHJlZiwgaW5zdGFuY2UsIGVsZW1lbnQu
X293bmVyKTsKKyAgfQorfTsKKworUmVhY3RSZWYuc2hvdWxkVXBkYXRlUmVmcyA9IGZ1bmN0aW9u
IChwcmV2RWxlbWVudCwgbmV4dEVsZW1lbnQpIHsKKyAgLy8gSWYgZWl0aGVyIHRoZSBvd25lciBv
ciBhIGByZWZgIGhhcyBjaGFuZ2VkLCBtYWtlIHN1cmUgdGhlIG5ld2VzdCBvd25lcgorICAvLyBo
YXMgc3RvcmVkIGEgcmVmZXJlbmNlIHRvIGB0aGlzYCwgYW5kIHRoZSBwcmV2aW91cyBvd25lciAo
aWYgZGlmZmVyZW50KQorICAvLyBoYXMgZm9yZ290dGVuIHRoZSByZWZlcmVuY2UgdG8gYHRoaXNg
LiBXZSB1c2UgdGhlIGVsZW1lbnQgaW5zdGVhZAorICAvLyBvZiB0aGUgcHVibGljIHRoaXMucHJv
cHMgYmVjYXVzZSB0aGUgcG9zdCBwcm9jZXNzaW5nIGNhbm5vdCBkZXRlcm1pbmUKKyAgLy8gYSBy
ZWYuIFRoZSByZWYgY29uY2VwdHVhbGx5IGxpdmVzIG9uIHRoZSBlbGVtZW50LgorCisgIC8vIFRP
RE86IFNob3VsZCB0aGlzIGV2ZW4gYmUgcG9zc2libGU/IFRoZSBvd25lciBjYW5ub3QgY2hhbmdl
IGJlY2F1c2UKKyAgLy8gaXQncyBmb3JiaWRkZW4gYnkgc2hvdWxkVXBkYXRlUmVhY3RDb21wb25l
bnQuIFRoZSByZWYgY2FuIGNoYW5nZQorICAvLyBpZiB5b3Ugc3dhcCB0aGUga2V5cyBvZiBidXQg
bm90IHRoZSByZWZzLiBSZWNvbnNpZGVyIHdoZXJlIHRoaXMgY2hlY2sKKyAgLy8gaXMgbWFkZS4g
SXQgcHJvYmFibHkgYmVsb25ncyB3aGVyZSB0aGUga2V5IGNoZWNraW5nIGFuZAorICAvLyBpbnN0
YW50aWF0ZVJlYWN0Q29tcG9uZW50IGlzIGRvbmUuCisKKyAgdmFyIHByZXZSZWYgPSBudWxsOwor
ICB2YXIgcHJldk93bmVyID0gbnVsbDsKKyAgaWYgKHByZXZFbGVtZW50ICE9PSBudWxsICYmIHR5
cGVvZiBwcmV2RWxlbWVudCA9PT0gJ29iamVjdCcpIHsKKyAgICBwcmV2UmVmID0gcHJldkVsZW1l
bnQucmVmOworICAgIHByZXZPd25lciA9IHByZXZFbGVtZW50Ll9vd25lcjsKKyAgfQorCisgIHZh
ciBuZXh0UmVmID0gbnVsbDsKKyAgdmFyIG5leHRPd25lciA9IG51bGw7CisgIGlmIChuZXh0RWxl
bWVudCAhPT0gbnVsbCAmJiB0eXBlb2YgbmV4dEVsZW1lbnQgPT09ICdvYmplY3QnKSB7CisgICAg
bmV4dFJlZiA9IG5leHRFbGVtZW50LnJlZjsKKyAgICBuZXh0T3duZXIgPSBuZXh0RWxlbWVudC5f
b3duZXI7CisgIH0KKworICByZXR1cm4gcHJldlJlZiAhPT0gbmV4dFJlZiB8fAorICAvLyBJZiBv
d25lciBjaGFuZ2VzIGJ1dCB3ZSBoYXZlIGFuIHVuY2hhbmdlZCBmdW5jdGlvbiByZWYsIGRvbid0
IHVwZGF0ZSByZWZzCisgIHR5cGVvZiBuZXh0UmVmID09PSAnc3RyaW5nJyAmJiBuZXh0T3duZXIg
IT09IHByZXZPd25lcjsKK307CisKK1JlYWN0UmVmLmRldGFjaFJlZnMgPSBmdW5jdGlvbiAoaW5z
dGFuY2UsIGVsZW1lbnQpIHsKKyAgaWYgKGVsZW1lbnQgPT09IG51bGwgfHwgdHlwZW9mIGVsZW1l
bnQgIT09ICdvYmplY3QnKSB7CisgICAgcmV0dXJuOworICB9CisgIHZhciByZWYgPSBlbGVtZW50
LnJlZjsKKyAgaWYgKHJlZiAhPSBudWxsKSB7CisgICAgZGV0YWNoUmVmKHJlZiwgaW5zdGFuY2Us
IGVsZW1lbnQuX293bmVyKTsKKyAgfQorfTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdFJlZjsK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFj
dC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdFJlaWZpZWRZaWVsZC5qcyBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0UmVpZmllZFlpZWxk
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjdjOTkyYTU4NGJmOTFlOWJhNmViY2JjOWM4OWJjZDNjNWVjOTZkNjcK
LS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3Qt
ZG9tL2xpYi9SZWFjdFJlaWZpZWRZaWVsZC5qcwpAQCAtMCwwICsxLDMwIEBACisvKioKKyAqIENv
cHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1z
dHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRp
cmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBw
YXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1l
IGRpcmVjdG9yeS4KKyAqCisgKiAKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBfcmVxdWly
ZSA9IHJlcXVpcmUoJy4vUmVhY3RGaWJlcicpLAorICAgIGNyZWF0ZUZpYmVyRnJvbUVsZW1lbnRU
eXBlID0gX3JlcXVpcmUuY3JlYXRlRmliZXJGcm9tRWxlbWVudFR5cGU7CisKK2V4cG9ydHMuY3Jl
YXRlUmVpZmllZFlpZWxkID0gZnVuY3Rpb24gKHlpZWxkTm9kZSkgeworICB2YXIgZmliZXIgPSBj
cmVhdGVGaWJlckZyb21FbGVtZW50VHlwZSh5aWVsZE5vZGUuY29udGludWF0aW9uLCB5aWVsZE5v
ZGUua2V5KTsKKyAgcmV0dXJuIHsKKyAgICBjb250aW51YXRpb246IGZpYmVyLAorICAgIHByb3Bz
OiB5aWVsZE5vZGUucHJvcHMKKyAgfTsKK307CisKK2V4cG9ydHMuY3JlYXRlVXBkYXRlZFJlaWZp
ZWRZaWVsZCA9IGZ1bmN0aW9uIChwcmV2aW91c1lpZWxkLCB5aWVsZE5vZGUpIHsKKyAgcmV0dXJu
IHsKKyAgICBjb250aW51YXRpb246IHByZXZpb3VzWWllbGQuY29udGludWF0aW9uLAorICAgIHBy
b3BzOiB5aWVsZE5vZGUucHJvcHMKKyAgfTsKK307ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9s
aWIvUmVhY3RTZXJ2ZXJCYXRjaGluZ1N0cmF0ZWd5LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9k
ZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RTZXJ2ZXJCYXRjaGluZ1N0cmF0ZWd5LmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjBmMDgyYTQyZGE0NzIyZWE3YzJiOThhNWNkZjYxYTRiZjUwNGJiMmMKLS0tIC9k
ZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xp
Yi9SZWFjdFNlcnZlckJhdGNoaW5nU3RyYXRlZ3kuanMKQEAgLTAsMCArMSwyMSBAQAorLyoqCisg
KiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBC
U0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICog
b2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUg
c2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIFJlYWN0U2Vy
dmVyQmF0Y2hpbmdTdHJhdGVneSA9IHsKKyAgaXNCYXRjaGluZ1VwZGF0ZXM6IGZhbHNlLAorICBi
YXRjaGVkVXBkYXRlczogZnVuY3Rpb24gKGNhbGxiYWNrKSB7CisgICAgLy8gRG9uJ3QgZG8gYW55
dGhpbmcgaGVyZS4gRHVyaW5nIHRoZSBzZXJ2ZXIgcmVuZGVyaW5nIHdlIGRvbid0IHdhbnQgdG8K
KyAgICAvLyBzY2hlZHVsZSBhbnkgdXBkYXRlcy4gV2Ugd2lsbCBzaW1wbHkgaWdub3JlIHRoZW0u
CisgIH0KK307CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RTZXJ2ZXJCYXRjaGluZ1N0cmF0ZWd5
OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Jl
YWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0U2VydmVyUmVuZGVyaW5nLmpzIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RTZXJ2ZXJS
ZW5kZXJpbmcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWY4ZTMwZTU2MDFkNjE4ZGFkZTU3OTBlMTEzM2U1ZjYx
NWRhNjRlOAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxl
cy9yZWFjdC1kb20vbGliL1JlYWN0U2VydmVyUmVuZGVyaW5nLmpzCkBAIC0wLDAgKzEsODkgQEAK
Ky8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRl
ciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3Jh
bnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUg
aW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworJ3VzZSBzdHJpY3QnOworCit2YXIgX3By
b2RJbnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0UHJvZEludmFyaWFudCcpOworCit2YXIgUmVh
Y3QgPSByZXF1aXJlKCdyZWFjdC9saWIvUmVhY3QnKTsKK3ZhciBSZWFjdERPTUNvbnRhaW5lcklu
Zm8gPSByZXF1aXJlKCcuL1JlYWN0RE9NQ29udGFpbmVySW5mbycpOwordmFyIFJlYWN0RGVmYXVs
dEJhdGNoaW5nU3RyYXRlZ3kgPSByZXF1aXJlKCcuL1JlYWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRl
Z3knKTsKK3ZhciBSZWFjdEluc3RydW1lbnRhdGlvbiA9IHJlcXVpcmUoJy4vUmVhY3RJbnN0cnVt
ZW50YXRpb24nKTsKK3ZhciBSZWFjdE1hcmt1cENoZWNrc3VtID0gcmVxdWlyZSgnLi9SZWFjdE1h
cmt1cENoZWNrc3VtJyk7Cit2YXIgUmVhY3RSZWNvbmNpbGVyID0gcmVxdWlyZSgnLi9SZWFjdFJl
Y29uY2lsZXInKTsKK3ZhciBSZWFjdFNlcnZlckJhdGNoaW5nU3RyYXRlZ3kgPSByZXF1aXJlKCcu
L1JlYWN0U2VydmVyQmF0Y2hpbmdTdHJhdGVneScpOwordmFyIFJlYWN0U2VydmVyUmVuZGVyaW5n
VHJhbnNhY3Rpb24gPSByZXF1aXJlKCcuL1JlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb24n
KTsKK3ZhciBSZWFjdFVwZGF0ZXMgPSByZXF1aXJlKCcuL1JlYWN0VXBkYXRlcycpOworCit2YXIg
ZW1wdHlPYmplY3QgPSByZXF1aXJlKCdmYmpzL2xpYi9lbXB0eU9iamVjdCcpOwordmFyIGluc3Rh
bnRpYXRlUmVhY3RDb21wb25lbnQgPSByZXF1aXJlKCcuL2luc3RhbnRpYXRlUmVhY3RDb21wb25l
bnQnKTsKK3ZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTsKKwor
dmFyIHBlbmRpbmdUcmFuc2FjdGlvbnMgPSAwOworCisvKioKKyAqIEBwYXJhbSB7UmVhY3RFbGVt
ZW50fSBlbGVtZW50CisgKiBAcmV0dXJuIHtzdHJpbmd9IHRoZSBIVE1MIG1hcmt1cAorICovCitm
dW5jdGlvbiByZW5kZXJUb1N0cmluZ0ltcGwoZWxlbWVudCwgbWFrZVN0YXRpY01hcmt1cCkgewor
ICB2YXIgdHJhbnNhY3Rpb247CisgIHRyeSB7CisgICAgUmVhY3RVcGRhdGVzLmluamVjdGlvbi5p
bmplY3RCYXRjaGluZ1N0cmF0ZWd5KFJlYWN0U2VydmVyQmF0Y2hpbmdTdHJhdGVneSk7CisKKyAg
ICB0cmFuc2FjdGlvbiA9IFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb24uZ2V0UG9vbGVk
KG1ha2VTdGF0aWNNYXJrdXApOworCisgICAgcGVuZGluZ1RyYW5zYWN0aW9ucysrOworCisgICAg
cmV0dXJuIHRyYW5zYWN0aW9uLnBlcmZvcm0oZnVuY3Rpb24gKCkgeworICAgICAgdmFyIGNvbXBv
bmVudEluc3RhbmNlID0gaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudChlbGVtZW50LCB0cnVlKTsK
KyAgICAgIHZhciBtYXJrdXAgPSBSZWFjdFJlY29uY2lsZXIubW91bnRDb21wb25lbnQoY29tcG9u
ZW50SW5zdGFuY2UsIHRyYW5zYWN0aW9uLCBudWxsLCBSZWFjdERPTUNvbnRhaW5lckluZm8oKSwg
ZW1wdHlPYmplY3QsIDAgLyogcGFyZW50RGVidWdJRCAqLworICAgICAgKTsKKyAgICAgIGlmIChw
cm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAgIFJlYWN0SW5z
dHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vblVubW91bnRDb21wb25lbnQoY29tcG9uZW50SW5zdGFu
Y2UuX2RlYnVnSUQpOworICAgICAgfQorICAgICAgaWYgKCFtYWtlU3RhdGljTWFya3VwKSB7Cisg
ICAgICAgIG1hcmt1cCA9IFJlYWN0TWFya3VwQ2hlY2tzdW0uYWRkQ2hlY2tzdW1Ub01hcmt1cCht
YXJrdXApOworICAgICAgfQorICAgICAgcmV0dXJuIG1hcmt1cDsKKyAgICB9LCBudWxsKTsKKyAg
fSBmaW5hbGx5IHsKKyAgICBwZW5kaW5nVHJhbnNhY3Rpb25zLS07CisgICAgUmVhY3RTZXJ2ZXJS
ZW5kZXJpbmdUcmFuc2FjdGlvbi5yZWxlYXNlKHRyYW5zYWN0aW9uKTsKKyAgICAvLyBSZXZlcnQg
dG8gdGhlIERPTSBiYXRjaGluZyBzdHJhdGVneSBzaW5jZSB0aGVzZSB0d28gcmVuZGVyZXJzCisg
ICAgLy8gY3VycmVudGx5IHNoYXJlIHRoZXNlIHN0YXRlZnVsIG1vZHVsZXMuCisgICAgaWYgKCFw
ZW5kaW5nVHJhbnNhY3Rpb25zKSB7CisgICAgICBSZWFjdFVwZGF0ZXMuaW5qZWN0aW9uLmluamVj
dEJhdGNoaW5nU3RyYXRlZ3koUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneSk7CisgICAgfQor
ICB9Cit9CisKKy8qKgorICogUmVuZGVyIGEgUmVhY3RFbGVtZW50IHRvIGl0cyBpbml0aWFsIEhU
TUwuIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBvbiB0aGUKKyAqIHNlcnZlci4KKyAqIFNlZSBo
dHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL3RvcC1sZXZlbC1hcGkuaHRtbCNy
ZWFjdGRvbXNlcnZlci5yZW5kZXJ0b3N0cmluZworICovCitmdW5jdGlvbiByZW5kZXJUb1N0cmlu
ZyhlbGVtZW50KSB7CisgICFSZWFjdC5pc1ZhbGlkRWxlbWVudChlbGVtZW50KSA/IHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdyZW5kZXJU
b1N0cmluZygpOiBZb3UgbXVzdCBwYXNzIGEgdmFsaWQgUmVhY3RFbGVtZW50LicpIDogX3Byb2RJ
bnZhcmlhbnQoJzQ2JykgOiB2b2lkIDA7CisgIHJldHVybiByZW5kZXJUb1N0cmluZ0ltcGwoZWxl
bWVudCwgZmFsc2UpOworfQorCisvKioKKyAqIFNpbWlsYXIgdG8gcmVuZGVyVG9TdHJpbmcsIGV4
Y2VwdCB0aGlzIGRvZXNuJ3QgY3JlYXRlIGV4dHJhIERPTSBhdHRyaWJ1dGVzCisgKiBzdWNoIGFz
IGRhdGEtcmVhY3QtaWQgdGhhdCBSZWFjdCB1c2VzIGludGVybmFsbHkuCisgKiBTZWUgaHR0cHM6
Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3Rk
b21zZXJ2ZXIucmVuZGVydG9zdGF0aWNtYXJrdXAKKyAqLworZnVuY3Rpb24gcmVuZGVyVG9TdGF0
aWNNYXJrdXAoZWxlbWVudCkgeworICAhUmVhY3QuaXNWYWxpZEVsZW1lbnQoZWxlbWVudCkgPyBw
cm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAn
cmVuZGVyVG9TdGF0aWNNYXJrdXAoKTogWW91IG11c3QgcGFzcyBhIHZhbGlkIFJlYWN0RWxlbWVu
dC4nKSA6IF9wcm9kSW52YXJpYW50KCc0NycpIDogdm9pZCAwOworICByZXR1cm4gcmVuZGVyVG9T
dHJpbmdJbXBsKGVsZW1lbnQsIHRydWUpOworfQorCittb2R1bGUuZXhwb3J0cyA9IHsKKyAgcmVu
ZGVyVG9TdHJpbmc6IHJlbmRlclRvU3RyaW5nLAorICByZW5kZXJUb1N0YXRpY01hcmt1cDogcmVu
ZGVyVG9TdGF0aWNNYXJrdXAKK307ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RT
ZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbi5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9k
dWxlcy9yZWFjdC1kb20vbGliL1JlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb24uanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTU1NDQ5OTE4MGJjNzg5ODYzMzlhZWZjODBjM2I5NTNkMmUxYTgxZQotLS0gL2Rl
di9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGli
L1JlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb24uanMKQEAgLTAsMCArMSw4OSBAQAorLyoq
CisgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRo
ZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAor
ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0
aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9hc3Np
Z24gPSByZXF1aXJlKCdvYmplY3QtYXNzaWduJyk7CisKK3ZhciBQb29sZWRDbGFzcyA9IHJlcXVp
cmUoJy4vUG9vbGVkQ2xhc3MnKTsKK3ZhciBUcmFuc2FjdGlvbiA9IHJlcXVpcmUoJy4vVHJhbnNh
Y3Rpb24nKTsKK3ZhciBSZWFjdEluc3RydW1lbnRhdGlvbiA9IHJlcXVpcmUoJy4vUmVhY3RJbnN0
cnVtZW50YXRpb24nKTsKK3ZhciBSZWFjdFNlcnZlclVwZGF0ZVF1ZXVlID0gcmVxdWlyZSgnLi9S
ZWFjdFNlcnZlclVwZGF0ZVF1ZXVlJyk7CisKKy8qKgorICogRXhlY3V0ZWQgd2l0aGluIHRoZSBz
Y29wZSBvZiB0aGUgYFRyYW5zYWN0aW9uYCBpbnN0YW5jZS4gQ29uc2lkZXIgdGhlc2UgYXMKKyAq
IGJlaW5nIG1lbWJlciBtZXRob2RzLCBidXQgd2l0aCBhbiBpbXBsaWVkIG9yZGVyaW5nIHdoaWxl
IGJlaW5nIGlzb2xhdGVkIGZyb20KKyAqIGVhY2ggb3RoZXIuCisgKi8KK3ZhciBUUkFOU0FDVElP
Tl9XUkFQUEVSUyA9IFtdOworCitpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJykgeworICBUUkFOU0FDVElPTl9XUkFQUEVSUy5wdXNoKHsKKyAgICBpbml0aWFsaXplOiBS
ZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25CZWdpbkZsdXNoLAorICAgIGNsb3NlOiBS
ZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25FbmRGbHVzaAorICB9KTsKK30KKwordmFy
IG5vb3BDYWxsYmFja1F1ZXVlID0geworICBlbnF1ZXVlOiBmdW5jdGlvbiAoKSB7fQorfTsKKwor
LyoqCisgKiBAY2xhc3MgUmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbgorICogQHBhcmFt
IHtib29sZWFufSByZW5kZXJUb1N0YXRpY01hcmt1cAorICovCitmdW5jdGlvbiBSZWFjdFNlcnZl
clJlbmRlcmluZ1RyYW5zYWN0aW9uKHJlbmRlclRvU3RhdGljTWFya3VwKSB7CisgIHRoaXMucmVp
bml0aWFsaXplVHJhbnNhY3Rpb24oKTsKKyAgdGhpcy5yZW5kZXJUb1N0YXRpY01hcmt1cCA9IHJl
bmRlclRvU3RhdGljTWFya3VwOworICB0aGlzLnVzZUNyZWF0ZUVsZW1lbnQgPSBmYWxzZTsKKyAg
dGhpcy51cGRhdGVRdWV1ZSA9IG5ldyBSZWFjdFNlcnZlclVwZGF0ZVF1ZXVlKHRoaXMpOworfQor
Cit2YXIgTWl4aW4gPSB7CisgIC8qKgorICAgKiBAc2VlIFRyYW5zYWN0aW9uCisgICAqIEBhYnN0
cmFjdAorICAgKiBAZmluYWwKKyAgICogQHJldHVybiB7YXJyYXl9IEVtcHR5IGxpc3Qgb2Ygb3Bl
cmF0aW9uIHdyYXAgcHJvY2VkdXJlcy4KKyAgICovCisgIGdldFRyYW5zYWN0aW9uV3JhcHBlcnM6
IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gVFJBTlNBQ1RJT05fV1JBUFBFUlM7CisgIH0sCisK
KyAgLyoqCisgICAqIEByZXR1cm4ge29iamVjdH0gVGhlIHF1ZXVlIHRvIGNvbGxlY3QgYG9uRE9N
UmVhZHlgIGNhbGxiYWNrcyB3aXRoLgorICAgKi8KKyAgZ2V0UmVhY3RNb3VudFJlYWR5OiBmdW5j
dGlvbiAoKSB7CisgICAgcmV0dXJuIG5vb3BDYWxsYmFja1F1ZXVlOworICB9LAorCisgIC8qKgor
ICAgKiBAcmV0dXJuIHtvYmplY3R9IFRoZSBxdWV1ZSB0byBjb2xsZWN0IFJlYWN0IGFzeW5jIGV2
ZW50cy4KKyAgICovCisgIGdldFVwZGF0ZVF1ZXVlOiBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJu
IHRoaXMudXBkYXRlUXVldWU7CisgIH0sCisKKyAgLyoqCisgICAqIGBQb29sZWRDbGFzc2AgbG9v
a3MgZm9yIHRoaXMsIGFuZCB3aWxsIGludm9rZSB0aGlzIGJlZm9yZSBhbGxvd2luZyB0aGlzCisg
ICAqIGluc3RhbmNlIHRvIGJlIHJldXNlZC4KKyAgICovCisgIGRlc3RydWN0b3I6IGZ1bmN0aW9u
ICgpIHt9LAorCisgIGNoZWNrcG9pbnQ6IGZ1bmN0aW9uICgpIHt9LAorCisgIHJvbGxiYWNrOiBm
dW5jdGlvbiAoKSB7fQorfTsKKworX2Fzc2lnbihSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0
aW9uLnByb3RvdHlwZSwgVHJhbnNhY3Rpb24sIE1peGluKTsKKworUG9vbGVkQ2xhc3MuYWRkUG9v
bGluZ1RvKFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb24pOworCittb2R1bGUuZXhwb3J0
cyA9IFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb247ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0
LWRvbS9saWIvUmVhY3RTZXJ2ZXJVcGRhdGVRdWV1ZS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25v
ZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0U2VydmVyVXBkYXRlUXVldWUuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uY2FiNjY5OTJjMTZhNzc0ODYyYTQzNGQwZDQzN2RmMTI3YTc2MDIwYwotLS0gL2Rldi9u
dWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1Jl
YWN0U2VydmVyVXBkYXRlUXVldWUuanMKQEAgLTAsMCArMSwxMzggQEAKKy8qKgorICogQ29weXJp
Z2h0IDIwMTUtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxl
IGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0
b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVu
dCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGly
ZWN0b3J5LgorICoKKyAqIAorICovCisKKyd1c2Ugc3RyaWN0JzsKKworZnVuY3Rpb24gX2NsYXNz
Q2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5j
ZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNs
YXNzIGFzIGEgZnVuY3Rpb24iKTsgfSB9CisKK3ZhciBSZWFjdFVwZGF0ZVF1ZXVlID0gcmVxdWly
ZSgnLi9SZWFjdFVwZGF0ZVF1ZXVlJyk7CisKK3ZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9s
aWIvd2FybmluZycpOworCitmdW5jdGlvbiB3YXJuTm9vcChwdWJsaWNJbnN0YW5jZSwgY2FsbGVy
TmFtZSkgeworICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgewor
ICAgIHZhciBjb25zdHJ1Y3RvciA9IHB1YmxpY0luc3RhbmNlLmNvbnN0cnVjdG9yOworICAgIHBy
b2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnJXMo
Li4uKTogQ2FuIG9ubHkgdXBkYXRlIGEgbW91bnRpbmcgY29tcG9uZW50LiAnICsgJ1RoaXMgdXN1
YWxseSBtZWFucyB5b3UgY2FsbGVkICVzKCkgb3V0c2lkZSBjb21wb25lbnRXaWxsTW91bnQoKSBv
biB0aGUgc2VydmVyLiAnICsgJ1RoaXMgaXMgYSBuby1vcC4gUGxlYXNlIGNoZWNrIHRoZSBjb2Rl
IGZvciB0aGUgJXMgY29tcG9uZW50LicsIGNhbGxlck5hbWUsIGNhbGxlck5hbWUsIGNvbnN0cnVj
dG9yICYmIChjb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZSB8fCBjb25zdHJ1Y3Rvci5uYW1lKSB8fCAn
UmVhY3RDbGFzcycpIDogdm9pZCAwOworICB9Cit9CisKKy8qKgorICogVGhpcyBpcyB0aGUgdXBk
YXRlIHF1ZXVlIHVzZWQgZm9yIHNlcnZlciByZW5kZXJpbmcuCisgKiBJdCBkZWxlZ2F0ZXMgdG8g
UmVhY3RVcGRhdGVRdWV1ZSB3aGlsZSBzZXJ2ZXIgcmVuZGVyaW5nIGlzIGluIHByb2dyZXNzIGFu
ZAorICogc3dpdGNoZXMgdG8gUmVhY3ROb29wVXBkYXRlUXVldWUgYWZ0ZXIgdGhlIHRyYW5zYWN0
aW9uIGhhcyBjb21wbGV0ZWQuCisgKiBAY2xhc3MgUmVhY3RTZXJ2ZXJVcGRhdGVRdWV1ZQorICog
QHBhcmFtIHtUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb24KKyAqLworCit2YXIgUmVhY3RTZXJ2ZXJV
cGRhdGVRdWV1ZSA9IGZ1bmN0aW9uICgpIHsKKyAgZnVuY3Rpb24gUmVhY3RTZXJ2ZXJVcGRhdGVR
dWV1ZSh0cmFuc2FjdGlvbikgeworICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBSZWFjdFNlcnZl
clVwZGF0ZVF1ZXVlKTsKKworICAgIHRoaXMudHJhbnNhY3Rpb24gPSB0cmFuc2FjdGlvbjsKKyAg
fQorCisgIC8qKgorICAgKiBDaGVja3Mgd2hldGhlciBvciBub3QgdGhpcyBjb21wb3NpdGUgY29t
cG9uZW50IGlzIG1vdW50ZWQuCisgICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFu
Y2UgVGhlIGluc3RhbmNlIHdlIHdhbnQgdG8gdGVzdC4KKyAgICogQHJldHVybiB7Ym9vbGVhbn0g
VHJ1ZSBpZiBtb3VudGVkLCBmYWxzZSBvdGhlcndpc2UuCisgICAqIEBwcm90ZWN0ZWQKKyAgICog
QGZpbmFsCisgICAqLworCisKKyAgUmVhY3RTZXJ2ZXJVcGRhdGVRdWV1ZS5wcm90b3R5cGUuaXNN
b3VudGVkID0gZnVuY3Rpb24gaXNNb3VudGVkKHB1YmxpY0luc3RhbmNlKSB7CisgICAgcmV0dXJu
IGZhbHNlOworICB9OworCisgIC8qKgorICAgKiBFbnF1ZXVlIGEgY2FsbGJhY2sgdGhhdCB3aWxs
IGJlIGV4ZWN1dGVkIGFmdGVyIGFsbCB0aGUgcGVuZGluZyB1cGRhdGVzCisgICAqIGhhdmUgcHJv
Y2Vzc2VkLgorICAgKgorICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRo
ZSBpbnN0YW5jZSB0byB1c2UgYXMgYHRoaXNgIGNvbnRleHQuCisgICAqIEBwYXJhbSB7P2Z1bmN0
aW9ufSBjYWxsYmFjayBDYWxsZWQgYWZ0ZXIgc3RhdGUgaXMgdXBkYXRlZC4KKyAgICogQGludGVy
bmFsCisgICAqLworCisKKyAgUmVhY3RTZXJ2ZXJVcGRhdGVRdWV1ZS5wcm90b3R5cGUuZW5xdWV1
ZUNhbGxiYWNrID0gZnVuY3Rpb24gZW5xdWV1ZUNhbGxiYWNrKHB1YmxpY0luc3RhbmNlLCBjYWxs
YmFjaywgY2FsbGVyTmFtZSkgeworICAgIGlmICh0aGlzLnRyYW5zYWN0aW9uLmlzSW5UcmFuc2Fj
dGlvbigpKSB7CisgICAgICBSZWFjdFVwZGF0ZVF1ZXVlLmVucXVldWVDYWxsYmFjayhwdWJsaWNJ
bnN0YW5jZSwgY2FsbGJhY2ssIGNhbGxlck5hbWUpOworICAgIH0KKyAgfTsKKworICAvKioKKyAg
ICogRm9yY2VzIGFuIHVwZGF0ZS4gVGhpcyBzaG91bGQgb25seSBiZSBpbnZva2VkIHdoZW4gaXQg
aXMga25vd24gd2l0aAorICAgKiBjZXJ0YWludHkgdGhhdCB3ZSBhcmUgKipub3QqKiBpbiBhIERP
TSB0cmFuc2FjdGlvbi4KKyAgICoKKyAgICogWW91IG1heSB3YW50IHRvIGNhbGwgdGhpcyB3aGVu
IHlvdSBrbm93IHRoYXQgc29tZSBkZWVwZXIgYXNwZWN0IG9mIHRoZQorICAgKiBjb21wb25lbnQn
cyBzdGF0ZSBoYXMgY2hhbmdlZCBidXQgYHNldFN0YXRlYCB3YXMgbm90IGNhbGxlZC4KKyAgICoK
KyAgICogVGhpcyB3aWxsIG5vdCBpbnZva2UgYHNob3VsZENvbXBvbmVudFVwZGF0ZWAsIGJ1dCBp
dCB3aWxsIGludm9rZQorICAgKiBgY29tcG9uZW50V2lsbFVwZGF0ZWAgYW5kIGBjb21wb25lbnRE
aWRVcGRhdGVgLgorICAgKgorICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNl
IFRoZSBpbnN0YW5jZSB0aGF0IHNob3VsZCByZXJlbmRlci4KKyAgICogQGludGVybmFsCisgICAq
LworCisKKyAgUmVhY3RTZXJ2ZXJVcGRhdGVRdWV1ZS5wcm90b3R5cGUuZW5xdWV1ZUZvcmNlVXBk
YXRlID0gZnVuY3Rpb24gZW5xdWV1ZUZvcmNlVXBkYXRlKHB1YmxpY0luc3RhbmNlKSB7CisgICAg
aWYgKHRoaXMudHJhbnNhY3Rpb24uaXNJblRyYW5zYWN0aW9uKCkpIHsKKyAgICAgIFJlYWN0VXBk
YXRlUXVldWUuZW5xdWV1ZUZvcmNlVXBkYXRlKHB1YmxpY0luc3RhbmNlKTsKKyAgICB9IGVsc2Ug
eworICAgICAgd2Fybk5vb3AocHVibGljSW5zdGFuY2UsICdmb3JjZVVwZGF0ZScpOworICAgIH0K
KyAgfTsKKworICAvKioKKyAgICogUmVwbGFjZXMgYWxsIG9mIHRoZSBzdGF0ZS4gQWx3YXlzIHVz
ZSB0aGlzIG9yIGBzZXRTdGF0ZWAgdG8gbXV0YXRlIHN0YXRlLgorICAgKiBZb3Ugc2hvdWxkIHRy
ZWF0IGB0aGlzLnN0YXRlYCBhcyBpbW11dGFibGUuCisgICAqCisgICAqIFRoZXJlIGlzIG5vIGd1
YXJhbnRlZSB0aGF0IGB0aGlzLnN0YXRlYCB3aWxsIGJlIGltbWVkaWF0ZWx5IHVwZGF0ZWQsIHNv
CisgICAqIGFjY2Vzc2luZyBgdGhpcy5zdGF0ZWAgYWZ0ZXIgY2FsbGluZyB0aGlzIG1ldGhvZCBt
YXkgcmV0dXJuIHRoZSBvbGQgdmFsdWUuCisgICAqCisgICAqIEBwYXJhbSB7UmVhY3RDbGFzc30g
cHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHRoYXQgc2hvdWxkIHJlcmVuZGVyLgorICAgKiBA
cGFyYW0ge29iamVjdHxmdW5jdGlvbn0gY29tcGxldGVTdGF0ZSBOZXh0IHN0YXRlLgorICAgKiBA
aW50ZXJuYWwKKyAgICovCisKKworICBSZWFjdFNlcnZlclVwZGF0ZVF1ZXVlLnByb3RvdHlwZS5l
bnF1ZXVlUmVwbGFjZVN0YXRlID0gZnVuY3Rpb24gZW5xdWV1ZVJlcGxhY2VTdGF0ZShwdWJsaWNJ
bnN0YW5jZSwgY29tcGxldGVTdGF0ZSkgeworICAgIGlmICh0aGlzLnRyYW5zYWN0aW9uLmlzSW5U
cmFuc2FjdGlvbigpKSB7CisgICAgICBSZWFjdFVwZGF0ZVF1ZXVlLmVucXVldWVSZXBsYWNlU3Rh
dGUocHVibGljSW5zdGFuY2UsIGNvbXBsZXRlU3RhdGUpOworICAgIH0gZWxzZSB7CisgICAgICB3
YXJuTm9vcChwdWJsaWNJbnN0YW5jZSwgJ3JlcGxhY2VTdGF0ZScpOworICAgIH0KKyAgfTsKKwor
ICAvKioKKyAgICogU2V0cyBhIHN1YnNldCBvZiB0aGUgc3RhdGUuIFRoaXMgb25seSBleGlzdHMg
YmVjYXVzZSBfcGVuZGluZ1N0YXRlIGlzCisgICAqIGludGVybmFsLiBUaGlzIHByb3ZpZGVzIGEg
bWVyZ2luZyBzdHJhdGVneSB0aGF0IGlzIG5vdCBhdmFpbGFibGUgdG8gZGVlcAorICAgKiBwcm9w
ZXJ0aWVzIHdoaWNoIGlzIGNvbmZ1c2luZy4gVE9ETzogRXhwb3NlIHBlbmRpbmdTdGF0ZSBvciBk
b24ndCB1c2UgaXQKKyAgICogZHVyaW5nIHRoZSBtZXJnZS4KKyAgICoKKyAgICogQHBhcmFtIHtS
ZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdGhhdCBzaG91bGQgcmVyZW5k
ZXIuCisgICAqIEBwYXJhbSB7b2JqZWN0fGZ1bmN0aW9ufSBwYXJ0aWFsU3RhdGUgTmV4dCBwYXJ0
aWFsIHN0YXRlIHRvIGJlIG1lcmdlZCB3aXRoIHN0YXRlLgorICAgKiBAaW50ZXJuYWwKKyAgICov
CisKKworICBSZWFjdFNlcnZlclVwZGF0ZVF1ZXVlLnByb3RvdHlwZS5lbnF1ZXVlU2V0U3RhdGUg
PSBmdW5jdGlvbiBlbnF1ZXVlU2V0U3RhdGUocHVibGljSW5zdGFuY2UsIHBhcnRpYWxTdGF0ZSkg
eworICAgIGlmICh0aGlzLnRyYW5zYWN0aW9uLmlzSW5UcmFuc2FjdGlvbigpKSB7CisgICAgICBS
ZWFjdFVwZGF0ZVF1ZXVlLmVucXVldWVTZXRTdGF0ZShwdWJsaWNJbnN0YW5jZSwgcGFydGlhbFN0
YXRlKTsKKyAgICB9IGVsc2UgeworICAgICAgd2Fybk5vb3AocHVibGljSW5zdGFuY2UsICdzZXRT
dGF0ZScpOworICAgIH0KKyAgfTsKKworICByZXR1cm4gUmVhY3RTZXJ2ZXJVcGRhdGVRdWV1ZTsK
K30oKTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdFNlcnZlclVwZGF0ZVF1ZXVlOwpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVf
bW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0U2hhbGxvd1JlbmRlcmVyLmpzIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RTaGFsbG93UmVuZGVyZXIu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTUwZmYzNzcwOTM3Mjk2NWZiNzExMzE0MGMwODljZDhhZjBjNTc1Zgot
LS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1k
b20vbGliL1JlYWN0U2hhbGxvd1JlbmRlcmVyLmpzCkBAIC0wLDAgKzEsMTM0IEBACisvKioKKyAq
IENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJbnZh
cmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0UHJvZEludmFyaWFudCcpLAorICAgIF9hc3NpZ24gPSBy
ZXF1aXJlKCdvYmplY3QtYXNzaWduJyk7CisKK2Z1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0
YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3Rv
cikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0
aW9uIik7IH0gfQorCit2YXIgUmVhY3QgPSByZXF1aXJlKCdyZWFjdC9saWIvUmVhY3QnKTsKK3Zh
ciBSZWFjdERlZmF1bHRJbmplY3Rpb24gPSByZXF1aXJlKCcuL1JlYWN0RGVmYXVsdEluamVjdGlv
bicpOwordmFyIFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50ID0gcmVxdWlyZSgnLi9SZWFjdENvbXBv
c2l0ZUNvbXBvbmVudCcpOwordmFyIFJlYWN0UmVjb25jaWxlciA9IHJlcXVpcmUoJy4vUmVhY3RS
ZWNvbmNpbGVyJyk7Cit2YXIgUmVhY3RVcGRhdGVzID0gcmVxdWlyZSgnLi9SZWFjdFVwZGF0ZXMn
KTsKKwordmFyIGVtcHR5T2JqZWN0ID0gcmVxdWlyZSgnZmJqcy9saWIvZW1wdHlPYmplY3QnKTsK
K3ZhciBnZXROZXh0RGVidWdJRCA9IHJlcXVpcmUoJy4vZ2V0TmV4dERlYnVnSUQnKTsKK3ZhciBp
bnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTsKKwordmFyIE5vb3BJbnRl
cm5hbENvbXBvbmVudCA9IGZ1bmN0aW9uICgpIHsKKyAgZnVuY3Rpb24gTm9vcEludGVybmFsQ29t
cG9uZW50KGVsZW1lbnQpIHsKKyAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgTm9vcEludGVybmFs
Q29tcG9uZW50KTsKKworICAgIHRoaXMuX3JlbmRlcmVkT3V0cHV0ID0gZWxlbWVudDsKKyAgICB0
aGlzLl9jdXJyZW50RWxlbWVudCA9IGVsZW1lbnQ7CisKKyAgICBpZiAocHJvY2Vzcy5lbnYuTk9E
RV9FTlYgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgdGhpcy5fZGVidWdJRCA9IGdldE5leHRE
ZWJ1Z0lEKCk7CisgICAgfQorICB9CisKKyAgTm9vcEludGVybmFsQ29tcG9uZW50LnByb3RvdHlw
ZS5tb3VudENvbXBvbmVudCA9IGZ1bmN0aW9uIG1vdW50Q29tcG9uZW50KCkge307CisKKyAgTm9v
cEludGVybmFsQ29tcG9uZW50LnByb3RvdHlwZS5yZWNlaXZlQ29tcG9uZW50ID0gZnVuY3Rpb24g
cmVjZWl2ZUNvbXBvbmVudChlbGVtZW50KSB7CisgICAgdGhpcy5fcmVuZGVyZWRPdXRwdXQgPSBl
bGVtZW50OworICAgIHRoaXMuX2N1cnJlbnRFbGVtZW50ID0gZWxlbWVudDsKKyAgfTsKKworICBO
b29wSW50ZXJuYWxDb21wb25lbnQucHJvdG90eXBlLnVubW91bnRDb21wb25lbnQgPSBmdW5jdGlv
biB1bm1vdW50Q29tcG9uZW50KCkge307CisKKyAgTm9vcEludGVybmFsQ29tcG9uZW50LnByb3Rv
dHlwZS5nZXRIb3N0Tm9kZSA9IGZ1bmN0aW9uIGdldEhvc3ROb2RlKCkgeworICAgIHJldHVybiB1
bmRlZmluZWQ7CisgIH07CisKKyAgTm9vcEludGVybmFsQ29tcG9uZW50LnByb3RvdHlwZS5nZXRQ
dWJsaWNJbnN0YW5jZSA9IGZ1bmN0aW9uIGdldFB1YmxpY0luc3RhbmNlKCkgeworICAgIHJldHVy
biBudWxsOworICB9OworCisgIHJldHVybiBOb29wSW50ZXJuYWxDb21wb25lbnQ7Cit9KCk7CisK
K3ZhciBTaGFsbG93Q29tcG9uZW50V3JhcHBlciA9IGZ1bmN0aW9uIChlbGVtZW50KSB7CisgIC8v
IFRPRE86IENvbnNvbGlkYXRlIHdpdGggaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudAorICBpZiAo
cHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgeworICAgIHRoaXMuX2RlYnVn
SUQgPSBnZXROZXh0RGVidWdJRCgpOworICB9CisKKyAgdGhpcy5jb25zdHJ1Y3QoZWxlbWVudCk7
Cit9OworX2Fzc2lnbihTaGFsbG93Q29tcG9uZW50V3JhcHBlci5wcm90b3R5cGUsIFJlYWN0Q29t
cG9zaXRlQ29tcG9uZW50LCB7CisgIF9jb25zdHJ1Y3RDb21wb25lbnQ6IFJlYWN0Q29tcG9zaXRl
Q29tcG9uZW50Ll9jb25zdHJ1Y3RDb21wb25lbnRXaXRob3V0T3duZXIsCisgIF9pbnN0YW50aWF0
ZVJlYWN0Q29tcG9uZW50OiBmdW5jdGlvbiAoZWxlbWVudCkgeworICAgIHJldHVybiBuZXcgTm9v
cEludGVybmFsQ29tcG9uZW50KGVsZW1lbnQpOworICB9LAorICBfcmVwbGFjZU5vZGVXaXRoTWFy
a3VwOiBmdW5jdGlvbiAoKSB7fSwKKyAgX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudDogUmVhY3RD
b21wb3NpdGVDb21wb25lbnQuX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudFdpdGhvdXRPd25lck9y
Q29udGV4dAorfSk7CisKK2Z1bmN0aW9uIF9iYXRjaGVkUmVuZGVyKHJlbmRlcmVyLCBlbGVtZW50
LCBjb250ZXh0KSB7CisgIHZhciB0cmFuc2FjdGlvbiA9IFJlYWN0VXBkYXRlcy5SZWFjdFJlY29u
Y2lsZVRyYW5zYWN0aW9uLmdldFBvb2xlZCh0cnVlKTsKKyAgcmVuZGVyZXIuX3JlbmRlcihlbGVt
ZW50LCB0cmFuc2FjdGlvbiwgY29udGV4dCk7CisgIFJlYWN0VXBkYXRlcy5SZWFjdFJlY29uY2ls
ZVRyYW5zYWN0aW9uLnJlbGVhc2UodHJhbnNhY3Rpb24pOworfQorCit2YXIgUmVhY3RTaGFsbG93
UmVuZGVyZXIgPSBmdW5jdGlvbiAoKSB7CisgIGZ1bmN0aW9uIFJlYWN0U2hhbGxvd1JlbmRlcmVy
KCkgeworICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBSZWFjdFNoYWxsb3dSZW5kZXJlcik7CisK
KyAgICB0aGlzLl9pbnN0YW5jZSA9IG51bGw7CisgIH0KKworICBSZWFjdFNoYWxsb3dSZW5kZXJl
ci5wcm90b3R5cGUuZ2V0TW91bnRlZEluc3RhbmNlID0gZnVuY3Rpb24gZ2V0TW91bnRlZEluc3Rh
bmNlKCkgeworICAgIHJldHVybiB0aGlzLl9pbnN0YW5jZSA/IHRoaXMuX2luc3RhbmNlLl9pbnN0
YW5jZSA6IG51bGw7CisgIH07CisKKyAgUmVhY3RTaGFsbG93UmVuZGVyZXIucHJvdG90eXBlLnJl
bmRlciA9IGZ1bmN0aW9uIHJlbmRlcihlbGVtZW50LCBjb250ZXh0KSB7CisgICAgLy8gRW5zdXJl
IHdlJ3ZlIGRvbmUgdGhlIGRlZmF1bHQgaW5qZWN0aW9ucy4gVGhpcyBtaWdodCBub3QgYmUgdHJ1
ZSBpbiB0aGUKKyAgICAvLyBjYXNlIG9mIGEgc2ltcGxlIHRlc3QgdGhhdCBvbmx5IHJlcXVpcmVz
IFJlYWN0IGFuZCB0aGUgVGVzdFV0aWxzIGluCisgICAgLy8gY29uanVuY3Rpb24gd2l0aCBhbiBp
bmxpbmUtcmVxdWlyZXMgdHJhbnNmb3JtLgorICAgIFJlYWN0RGVmYXVsdEluamVjdGlvbi5pbmpl
Y3QoKTsKKworICAgICFSZWFjdC5pc1ZhbGlkRWxlbWVudChlbGVtZW50KSA/IHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdFNoYWxs
b3dSZW5kZXJlciByZW5kZXIoKTogSW52YWxpZCBjb21wb25lbnQgZWxlbWVudC4lcycsIHR5cGVv
ZiBlbGVtZW50ID09PSAnZnVuY3Rpb24nID8gJyBJbnN0ZWFkIG9mIHBhc3NpbmcgYSBjb21wb25l
bnQgY2xhc3MsIG1ha2Ugc3VyZSB0byBpbnN0YW50aWF0ZSAnICsgJ2l0IGJ5IHBhc3NpbmcgaXQg
dG8gUmVhY3QuY3JlYXRlRWxlbWVudC4nIDogJycpIDogX3Byb2RJbnZhcmlhbnQoJzEyJywgdHlw
ZW9mIGVsZW1lbnQgPT09ICdmdW5jdGlvbicgPyAnIEluc3RlYWQgb2YgcGFzc2luZyBhIGNvbXBv
bmVudCBjbGFzcywgbWFrZSBzdXJlIHRvIGluc3RhbnRpYXRlICcgKyAnaXQgYnkgcGFzc2luZyBp
dCB0byBSZWFjdC5jcmVhdGVFbGVtZW50LicgOiAnJykgOiB2b2lkIDA7CisgICAgISh0eXBlb2Yg
ZWxlbWVudC50eXBlICE9PSAnc3RyaW5nJykgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3By
b2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3RTaGFsbG93UmVuZGVyZXIgcmVuZGVy
KCk6IFNoYWxsb3cgcmVuZGVyaW5nIHdvcmtzIG9ubHkgd2l0aCBjdXN0b20gY29tcG9uZW50cywg
bm90IHByaW1pdGl2ZXMgKCVzKS4gSW5zdGVhZCBvZiBjYWxsaW5nIGAucmVuZGVyKGVsKWAgYW5k
IGluc3BlY3RpbmcgdGhlIHJlbmRlcmVkIG91dHB1dCwgbG9vayBhdCBgZWwucHJvcHNgIGRpcmVj
dGx5IGluc3RlYWQuJywgZWxlbWVudC50eXBlKSA6IF9wcm9kSW52YXJpYW50KCcxMycsIGVsZW1l
bnQudHlwZSkgOiB2b2lkIDA7CisKKyAgICBpZiAoIWNvbnRleHQpIHsKKyAgICAgIGNvbnRleHQg
PSBlbXB0eU9iamVjdDsKKyAgICB9CisgICAgUmVhY3RVcGRhdGVzLmJhdGNoZWRVcGRhdGVzKF9i
YXRjaGVkUmVuZGVyLCB0aGlzLCBlbGVtZW50LCBjb250ZXh0KTsKKworICAgIHJldHVybiB0aGlz
LmdldFJlbmRlck91dHB1dCgpOworICB9OworCisgIFJlYWN0U2hhbGxvd1JlbmRlcmVyLnByb3Rv
dHlwZS5nZXRSZW5kZXJPdXRwdXQgPSBmdW5jdGlvbiBnZXRSZW5kZXJPdXRwdXQoKSB7CisgICAg
cmV0dXJuIHRoaXMuX2luc3RhbmNlICYmIHRoaXMuX2luc3RhbmNlLl9yZW5kZXJlZENvbXBvbmVu
dCAmJiB0aGlzLl9pbnN0YW5jZS5fcmVuZGVyZWRDb21wb25lbnQuX3JlbmRlcmVkT3V0cHV0IHx8
IG51bGw7CisgIH07CisKKyAgUmVhY3RTaGFsbG93UmVuZGVyZXIucHJvdG90eXBlLnVubW91bnQg
PSBmdW5jdGlvbiB1bm1vdW50KCkgeworICAgIGlmICh0aGlzLl9pbnN0YW5jZSkgeworICAgICAg
UmVhY3RSZWNvbmNpbGVyLnVubW91bnRDb21wb25lbnQodGhpcy5faW5zdGFuY2UsIGZhbHNlKTsK
KyAgICB9CisgIH07CisKKyAgUmVhY3RTaGFsbG93UmVuZGVyZXIucHJvdG90eXBlLl9yZW5kZXIg
PSBmdW5jdGlvbiBfcmVuZGVyKGVsZW1lbnQsIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7CisgICAg
aWYgKHRoaXMuX2luc3RhbmNlKSB7CisgICAgICBSZWFjdFJlY29uY2lsZXIucmVjZWl2ZUNvbXBv
bmVudCh0aGlzLl9pbnN0YW5jZSwgZWxlbWVudCwgdHJhbnNhY3Rpb24sIGNvbnRleHQpOworICAg
IH0gZWxzZSB7CisgICAgICB2YXIgaW5zdGFuY2UgPSBuZXcgU2hhbGxvd0NvbXBvbmVudFdyYXBw
ZXIoZWxlbWVudCk7CisgICAgICBSZWFjdFJlY29uY2lsZXIubW91bnRDb21wb25lbnQoaW5zdGFu
Y2UsIHRyYW5zYWN0aW9uLCBudWxsLCBudWxsLCBjb250ZXh0LCAwKTsKKyAgICAgIHRoaXMuX2lu
c3RhbmNlID0gaW5zdGFuY2U7CisgICAgfQorICB9OworCisgIHJldHVybiBSZWFjdFNoYWxsb3dS
ZW5kZXJlcjsKK30oKTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdFNoYWxsb3dSZW5kZXJlcjsK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFj
dC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdFNpbXBsZUVtcHR5Q29tcG9uZW50Lmpz
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RTaW1w
bGVFbXB0eUNvbXBvbmVudC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kM2MwNGVmYjhmNTVlYmU0NjIyNDEyNzk4
MDlkNDExMjIzZDNkODMxCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9k
ZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RTaW1wbGVFbXB0eUNvbXBvbmVudC5qcwpAQCAt
MCwwICsxLDM2IEBACisvKioKKyAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJ
bmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElD
RU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUg
UEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJp
Y3QnOworCit2YXIgX2Fzc2lnbiA9IHJlcXVpcmUoJ29iamVjdC1hc3NpZ24nKTsKKwordmFyIFJl
YWN0UmVjb25jaWxlciA9IHJlcXVpcmUoJy4vUmVhY3RSZWNvbmNpbGVyJyk7CisKK3ZhciBSZWFj
dFNpbXBsZUVtcHR5Q29tcG9uZW50ID0gZnVuY3Rpb24gKHBsYWNlaG9sZGVyRWxlbWVudCwgaW5z
dGFudGlhdGUpIHsKKyAgdGhpcy5fY3VycmVudEVsZW1lbnQgPSBudWxsOworICB0aGlzLl9yZW5k
ZXJlZENvbXBvbmVudCA9IGluc3RhbnRpYXRlKHBsYWNlaG9sZGVyRWxlbWVudCk7Cit9OworX2Fz
c2lnbihSZWFjdFNpbXBsZUVtcHR5Q29tcG9uZW50LnByb3RvdHlwZSwgeworICBtb3VudENvbXBv
bmVudDogZnVuY3Rpb24gKHRyYW5zYWN0aW9uLCBob3N0UGFyZW50LCBob3N0Q29udGFpbmVySW5m
bywgY29udGV4dCwgcGFyZW50RGVidWdJRCAvLyAwIGluIHByb2R1Y3Rpb24gYW5kIGZvciByb290
cworICApIHsKKyAgICByZXR1cm4gUmVhY3RSZWNvbmNpbGVyLm1vdW50Q29tcG9uZW50KHRoaXMu
X3JlbmRlcmVkQ29tcG9uZW50LCB0cmFuc2FjdGlvbiwgaG9zdFBhcmVudCwgaG9zdENvbnRhaW5l
ckluZm8sIGNvbnRleHQsIHBhcmVudERlYnVnSUQpOworICB9LAorICByZWNlaXZlQ29tcG9uZW50
OiBmdW5jdGlvbiAoKSB7fSwKKyAgZ2V0SG9zdE5vZGU6IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1
cm4gUmVhY3RSZWNvbmNpbGVyLmdldEhvc3ROb2RlKHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50KTsK
KyAgfSwKKyAgdW5tb3VudENvbXBvbmVudDogZnVuY3Rpb24gKCkgeworICAgIFJlYWN0UmVjb25j
aWxlci51bm1vdW50Q29tcG9uZW50KHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50KTsKKyAgICB0aGlz
Ll9yZW5kZXJlZENvbXBvbmVudCA9IG51bGw7CisgIH0KK30pOworCittb2R1bGUuZXhwb3J0cyA9
IFJlYWN0U2ltcGxlRW1wdHlDb21wb25lbnQ7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIv
UmVhY3RTeW50aGV0aWNFdmVudFR5cGUuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVs
ZXMvcmVhY3QtZG9tL2xpYi9SZWFjdFN5bnRoZXRpY0V2ZW50VHlwZS5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
NWFjYTFjNDg0YjI0M2Y3NDUxODJkNGViNzllM2ZlYjlhMGRmMjA4Ci0tLSAvZGV2L251bGwKKysr
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RTeW50
aGV0aWNFdmVudFR5cGUuanMKQEAgLTAsMCArMSwxNCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDEz
LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNl
IGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0
aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRz
IGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4K
KyAqCisgKiBGbG93IHR5cGUgZm9yIFN5bnRoZXRpY0V2ZW50IGNsYXNzIHRoYXQgaW5jbHVkZXMg
cHJpdmF0ZSBwcm9wZXJ0aWVzCisgKgorICogCisgKi8KKworJ3VzZSBzdHJpY3QnOwpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVf
bW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0VGVzdFV0aWxzLmpzIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVh
Y3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RUZXN0VXRpbHMuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNWI5NTA1NDVlNjQwZjgwMjI1ZmNlNjk1MTY4NWVlZmIzM2Q4MWZiNwotLS0gL2Rldi9udWxs
CisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0
VGVzdFV0aWxzLmpzCkBAIC0wLDAgKzEsNDExIEBACisvKioKKyAqIENvcHlyaWdodCAyMDEzLXBy
ZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRo
aXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZv
dW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlz
IHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNh
biBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAq
CisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1aXJlKCcu
L3JlYWN0UHJvZEludmFyaWFudCcpLAorICAgIF9hc3NpZ24gPSByZXF1aXJlKCdvYmplY3QtYXNz
aWduJyk7CisKK3ZhciBFdmVudENvbnN0YW50cyA9IHJlcXVpcmUoJy4vRXZlbnRDb25zdGFudHMn
KTsKK3ZhciBFdmVudFBsdWdpbkh1YiA9IHJlcXVpcmUoJy4vRXZlbnRQbHVnaW5IdWInKTsKK3Zh
ciBFdmVudFBsdWdpblJlZ2lzdHJ5ID0gcmVxdWlyZSgnLi9FdmVudFBsdWdpblJlZ2lzdHJ5Jyk7
Cit2YXIgRXZlbnRQcm9wYWdhdG9ycyA9IHJlcXVpcmUoJy4vRXZlbnRQcm9wYWdhdG9ycycpOwor
dmFyIFJlYWN0ID0gcmVxdWlyZSgncmVhY3QvbGliL1JlYWN0Jyk7Cit2YXIgUmVhY3RET00gPSBy
ZXF1aXJlKCcuL1JlYWN0RE9NJyk7Cit2YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gcmVxdWly
ZSgnLi9SZWFjdERPTUNvbXBvbmVudFRyZWUnKTsKK3ZhciBSZWFjdEJyb3dzZXJFdmVudEVtaXR0
ZXIgPSByZXF1aXJlKCcuL1JlYWN0QnJvd3NlckV2ZW50RW1pdHRlcicpOwordmFyIFJlYWN0SW5z
dGFuY2VNYXAgPSByZXF1aXJlKCcuL1JlYWN0SW5zdGFuY2VNYXAnKTsKK3ZhciBSZWFjdFVwZGF0
ZXMgPSByZXF1aXJlKCcuL1JlYWN0VXBkYXRlcycpOwordmFyIFN5bnRoZXRpY0V2ZW50ID0gcmVx
dWlyZSgnLi9TeW50aGV0aWNFdmVudCcpOwordmFyIFJlYWN0U2hhbGxvd1JlbmRlcmVyID0gcmVx
dWlyZSgnLi9SZWFjdFNoYWxsb3dSZW5kZXJlcicpOworCit2YXIgZmluZERPTU5vZGUgPSByZXF1
aXJlKCcuL2ZpbmRET01Ob2RlJyk7Cit2YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIv
aW52YXJpYW50Jyk7CisKK3ZhciB0b3BMZXZlbFR5cGVzID0gRXZlbnRDb25zdGFudHMudG9wTGV2
ZWxUeXBlczsKKworZnVuY3Rpb24gRXZlbnQoc3VmZml4KSB7fQorCisvKioKKyAqIEBjbGFzcyBS
ZWFjdFRlc3RVdGlscworICovCisKK2Z1bmN0aW9uIGZpbmRBbGxJblJlbmRlcmVkVHJlZUludGVy
bmFsKGluc3QsIHRlc3QpIHsKKyAgaWYgKCFpbnN0IHx8ICFpbnN0LmdldFB1YmxpY0luc3RhbmNl
KSB7CisgICAgcmV0dXJuIFtdOworICB9CisgIHZhciBwdWJsaWNJbnN0ID0gaW5zdC5nZXRQdWJs
aWNJbnN0YW5jZSgpOworICB2YXIgcmV0ID0gdGVzdChwdWJsaWNJbnN0KSA/IFtwdWJsaWNJbnN0
XSA6IFtdOworICB2YXIgY3VycmVudEVsZW1lbnQgPSBpbnN0Ll9jdXJyZW50RWxlbWVudDsKKyAg
aWYgKFJlYWN0VGVzdFV0aWxzLmlzRE9NQ29tcG9uZW50KHB1YmxpY0luc3QpKSB7CisgICAgdmFy
IHJlbmRlcmVkQ2hpbGRyZW4gPSBpbnN0Ll9yZW5kZXJlZENoaWxkcmVuOworICAgIHZhciBrZXk7
CisgICAgZm9yIChrZXkgaW4gcmVuZGVyZWRDaGlsZHJlbikgeworICAgICAgaWYgKCFyZW5kZXJl
ZENoaWxkcmVuLmhhc093blByb3BlcnR5KGtleSkpIHsKKyAgICAgICAgY29udGludWU7CisgICAg
ICB9CisgICAgICByZXQgPSByZXQuY29uY2F0KGZpbmRBbGxJblJlbmRlcmVkVHJlZUludGVybmFs
KHJlbmRlcmVkQ2hpbGRyZW5ba2V5XSwgdGVzdCkpOworICAgIH0KKyAgfSBlbHNlIGlmIChSZWFj
dC5pc1ZhbGlkRWxlbWVudChjdXJyZW50RWxlbWVudCkgJiYgdHlwZW9mIGN1cnJlbnRFbGVtZW50
LnR5cGUgPT09ICdmdW5jdGlvbicpIHsKKyAgICByZXQgPSByZXQuY29uY2F0KGZpbmRBbGxJblJl
bmRlcmVkVHJlZUludGVybmFsKGluc3QuX3JlbmRlcmVkQ29tcG9uZW50LCB0ZXN0KSk7CisgIH0K
KyAgcmV0dXJuIHJldDsKK30KKworLyoqCisgKiBVdGlsaXRpZXMgZm9yIG1ha2luZyBpdCBlYXN5
IHRvIHRlc3QgUmVhY3QgY29tcG9uZW50cy4KKyAqCisgKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5n
aXRodWIuaW8vcmVhY3QvZG9jcy90ZXN0LXV0aWxzLmh0bWwKKyAqCisgKiBUb2RvOiBTdXBwb3J0
IHRoZSBlbnRpcmUgRE9NLnNjcnkgcXVlcnkgc3ludGF4LiBGb3Igbm93LCB0aGVzZSBzaW1wbGUK
KyAqIHV0aWxpdGllcyB3aWxsIHN1ZmZpY2UgZm9yIHRlc3RpbmcgcHVycG9zZXMuCisgKiBAbGVu
ZHMgUmVhY3RUZXN0VXRpbHMKKyAqLwordmFyIFJlYWN0VGVzdFV0aWxzID0geworICByZW5kZXJJ
bnRvRG9jdW1lbnQ6IGZ1bmN0aW9uIChlbGVtZW50KSB7CisgICAgdmFyIGRpdiA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIC8vIE5vbmUgb2Ygb3VyIHRlc3RzIGFjdHVhbGx5
IHJlcXVpcmUgYXR0YWNoaW5nIHRoZSBjb250YWluZXIgdG8gdGhlCisgICAgLy8gRE9NLCBhbmQg
ZG9pbmcgc28gY3JlYXRlcyBhIG1lc3MgdGhhdCB3ZSByZWx5IG9uIHRlc3QgaXNvbGF0aW9uIHRv
CisgICAgLy8gY2xlYW4gdXAsIHNvIHdlJ3JlIGdvaW5nIHRvIHN0b3AgaG9ub3JpbmcgdGhlIG5h
bWUgb2YgdGhpcyBtZXRob2QKKyAgICAvLyAoYW5kIHByb2JhYmx5IHJlbmFtZSBpdCBldmVudHVh
bGx5KSBpZiBubyBwcm9ibGVtcyBhcmlzZS4KKyAgICAvLyBkb2N1bWVudC5kb2N1bWVudEVsZW1l
bnQuYXBwZW5kQ2hpbGQoZGl2KTsKKyAgICByZXR1cm4gUmVhY3RET00ucmVuZGVyKGVsZW1lbnQs
IGRpdik7CisgIH0sCisKKyAgaXNFbGVtZW50OiBmdW5jdGlvbiAoZWxlbWVudCkgeworICAgIHJl
dHVybiBSZWFjdC5pc1ZhbGlkRWxlbWVudChlbGVtZW50KTsKKyAgfSwKKworICBpc0VsZW1lbnRP
ZlR5cGU6IGZ1bmN0aW9uIChpbnN0LCBjb252ZW5pZW5jZUNvbnN0cnVjdG9yKSB7CisgICAgcmV0
dXJuIFJlYWN0LmlzVmFsaWRFbGVtZW50KGluc3QpICYmIGluc3QudHlwZSA9PT0gY29udmVuaWVu
Y2VDb25zdHJ1Y3RvcjsKKyAgfSwKKworICBpc0RPTUNvbXBvbmVudDogZnVuY3Rpb24gKGluc3Qp
IHsKKyAgICByZXR1cm4gISEoaW5zdCAmJiBpbnN0Lm5vZGVUeXBlID09PSAxICYmIGluc3QudGFn
TmFtZSk7CisgIH0sCisKKyAgaXNET01Db21wb25lbnRFbGVtZW50OiBmdW5jdGlvbiAoaW5zdCkg
eworICAgIHJldHVybiAhIShpbnN0ICYmIFJlYWN0LmlzVmFsaWRFbGVtZW50KGluc3QpICYmICEh
aW5zdC50YWdOYW1lKTsKKyAgfSwKKworICBpc0NvbXBvc2l0ZUNvbXBvbmVudDogZnVuY3Rpb24g
KGluc3QpIHsKKyAgICBpZiAoUmVhY3RUZXN0VXRpbHMuaXNET01Db21wb25lbnQoaW5zdCkpIHsK
KyAgICAgIC8vIEFjY2Vzc2luZyBpbnN0LnNldFN0YXRlIHdhcm5zOyBqdXN0IHJldHVybiBmYWxz
ZSBhcyB0aGF0J2xsIGJlIHdoYXQKKyAgICAgIC8vIHRoaXMgcmV0dXJucyB3aGVuIHdlIGhhdmUg
RE9NIG5vZGVzIGFzIHJlZnMgZGlyZWN0bHkKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cisg
ICAgcmV0dXJuIGluc3QgIT0gbnVsbCAmJiB0eXBlb2YgaW5zdC5yZW5kZXIgPT09ICdmdW5jdGlv
bicgJiYgdHlwZW9mIGluc3Quc2V0U3RhdGUgPT09ICdmdW5jdGlvbic7CisgIH0sCisKKyAgaXND
b21wb3NpdGVDb21wb25lbnRXaXRoVHlwZTogZnVuY3Rpb24gKGluc3QsIHR5cGUpIHsKKyAgICBp
ZiAoIVJlYWN0VGVzdFV0aWxzLmlzQ29tcG9zaXRlQ29tcG9uZW50KGluc3QpKSB7CisgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHZhciBpbnRlcm5hbEluc3RhbmNlID0gUmVhY3RJbnN0
YW5jZU1hcC5nZXQoaW5zdCk7CisgICAgdmFyIGNvbnN0cnVjdG9yID0gaW50ZXJuYWxJbnN0YW5j
ZS5fY3VycmVudEVsZW1lbnQudHlwZTsKKworICAgIHJldHVybiBjb25zdHJ1Y3RvciA9PT0gdHlw
ZTsKKyAgfSwKKworICBpc0NvbXBvc2l0ZUNvbXBvbmVudEVsZW1lbnQ6IGZ1bmN0aW9uIChpbnN0
KSB7CisgICAgaWYgKCFSZWFjdC5pc1ZhbGlkRWxlbWVudChpbnN0KSkgeworICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKyAgICAvLyBXZSBjaGVjayB0aGUgcHJvdG90eXBlIG9mIHRoZSB0eXBl
IHRoYXQgd2lsbCBnZXQgbW91bnRlZCwgbm90IHRoZQorICAgIC8vIGluc3RhbmNlIGl0c2VsZi4g
VGhpcyBpcyBhIGZ1dHVyZSBwcm9vZiB3YXkgb2YgZHVjayB0eXBpbmcuCisgICAgdmFyIHByb3Rv
dHlwZSA9IGluc3QudHlwZS5wcm90b3R5cGU7CisgICAgcmV0dXJuIHR5cGVvZiBwcm90b3R5cGUu
cmVuZGVyID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBwcm90b3R5cGUuc2V0U3RhdGUgPT09ICdm
dW5jdGlvbic7CisgIH0sCisKKyAgaXNDb21wb3NpdGVDb21wb25lbnRFbGVtZW50V2l0aFR5cGU6
IGZ1bmN0aW9uIChpbnN0LCB0eXBlKSB7CisgICAgdmFyIGludGVybmFsSW5zdGFuY2UgPSBSZWFj
dEluc3RhbmNlTWFwLmdldChpbnN0KTsKKyAgICB2YXIgY29uc3RydWN0b3IgPSBpbnRlcm5hbElu
c3RhbmNlLl9jdXJyZW50RWxlbWVudC50eXBlOworCisgICAgcmV0dXJuICEhKFJlYWN0VGVzdFV0
aWxzLmlzQ29tcG9zaXRlQ29tcG9uZW50RWxlbWVudChpbnN0KSAmJiBjb25zdHJ1Y3RvciA9PT0g
dHlwZSk7CisgIH0sCisKKyAgZ2V0UmVuZGVyZWRDaGlsZE9mQ29tcG9zaXRlQ29tcG9uZW50OiBm
dW5jdGlvbiAoaW5zdCkgeworICAgIGlmICghUmVhY3RUZXN0VXRpbHMuaXNDb21wb3NpdGVDb21w
b25lbnQoaW5zdCkpIHsKKyAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAgICB2YXIgaW50ZXJu
YWxJbnN0YW5jZSA9IFJlYWN0SW5zdGFuY2VNYXAuZ2V0KGluc3QpOworICAgIHJldHVybiBpbnRl
cm5hbEluc3RhbmNlLl9yZW5kZXJlZENvbXBvbmVudC5nZXRQdWJsaWNJbnN0YW5jZSgpOworICB9
LAorCisgIGZpbmRBbGxJblJlbmRlcmVkVHJlZTogZnVuY3Rpb24gKGluc3QsIHRlc3QpIHsKKyAg
ICBpZiAoIWluc3QpIHsKKyAgICAgIHJldHVybiBbXTsKKyAgICB9CisgICAgIVJlYWN0VGVzdFV0
aWxzLmlzQ29tcG9zaXRlQ29tcG9uZW50KGluc3QpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09
ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2ZpbmRBbGxJblJlbmRlcmVkVHJlZSgu
Li4pOiBpbnN0YW5jZSBtdXN0IGJlIGEgY29tcG9zaXRlIGNvbXBvbmVudCcpIDogX3Byb2RJbnZh
cmlhbnQoJzEwJykgOiB2b2lkIDA7CisgICAgcmV0dXJuIGZpbmRBbGxJblJlbmRlcmVkVHJlZUlu
dGVybmFsKFJlYWN0SW5zdGFuY2VNYXAuZ2V0KGluc3QpLCB0ZXN0KTsKKyAgfSwKKworICAvKioK
KyAgICogRmluZHMgYWxsIGluc3RhbmNlIG9mIGNvbXBvbmVudHMgaW4gdGhlIHJlbmRlcmVkIHRy
ZWUgdGhhdCBhcmUgRE9NCisgICAqIGNvbXBvbmVudHMgd2l0aCB0aGUgY2xhc3MgbmFtZSBtYXRj
aGluZyBgY2xhc3NOYW1lYC4KKyAgICogQHJldHVybiB7YXJyYXl9IGFuIGFycmF5IG9mIGFsbCB0
aGUgbWF0Y2hlcy4KKyAgICovCisgIHNjcnlSZW5kZXJlZERPTUNvbXBvbmVudHNXaXRoQ2xhc3M6
IGZ1bmN0aW9uIChyb290LCBjbGFzc05hbWVzKSB7CisgICAgcmV0dXJuIFJlYWN0VGVzdFV0aWxz
LmZpbmRBbGxJblJlbmRlcmVkVHJlZShyb290LCBmdW5jdGlvbiAoaW5zdCkgeworICAgICAgaWYg
KFJlYWN0VGVzdFV0aWxzLmlzRE9NQ29tcG9uZW50KGluc3QpKSB7CisgICAgICAgIHZhciBjbGFz
c05hbWUgPSBpbnN0LmNsYXNzTmFtZTsKKyAgICAgICAgaWYgKHR5cGVvZiBjbGFzc05hbWUgIT09
ICdzdHJpbmcnKSB7CisgICAgICAgICAgLy8gU1ZHLCBwcm9iYWJseS4KKyAgICAgICAgICBjbGFz
c05hbWUgPSBpbnN0LmdldEF0dHJpYnV0ZSgnY2xhc3MnKSB8fCAnJzsKKyAgICAgICAgfQorICAg
ICAgICB2YXIgY2xhc3NMaXN0ID0gY2xhc3NOYW1lLnNwbGl0KC9ccysvKTsKKworICAgICAgICBp
ZiAoIUFycmF5LmlzQXJyYXkoY2xhc3NOYW1lcykpIHsKKyAgICAgICAgICAhKGNsYXNzTmFtZXMg
IT09IHVuZGVmaW5lZCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8g
aW52YXJpYW50KGZhbHNlLCAnVGVzdFV0aWxzLnNjcnlSZW5kZXJlZERPTUNvbXBvbmVudHNXaXRo
Q2xhc3MgZXhwZWN0cyBhIGNsYXNzTmFtZSBhcyBhIHNlY29uZCBhcmd1bWVudC4nKSA6IF9wcm9k
SW52YXJpYW50KCcxMScpIDogdm9pZCAwOworICAgICAgICAgIGNsYXNzTmFtZXMgPSBjbGFzc05h
bWVzLnNwbGl0KC9ccysvKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gY2xhc3NOYW1lcy5l
dmVyeShmdW5jdGlvbiAobmFtZSkgeworICAgICAgICAgIHJldHVybiBjbGFzc0xpc3QuaW5kZXhP
ZihuYW1lKSAhPT0gLTE7CisgICAgICAgIH0pOworICAgICAgfQorICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0pOworICB9LAorCisgIC8qKgorICAgKiBMaWtlIHNjcnlSZW5kZXJlZERPTUNvbXBv
bmVudHNXaXRoQ2xhc3MgYnV0IGV4cGVjdHMgdGhlcmUgdG8gYmUgb25lIHJlc3VsdCwKKyAgICog
YW5kIHJldHVybnMgdGhhdCBvbmUgcmVzdWx0LCBvciB0aHJvd3MgZXhjZXB0aW9uIGlmIHRoZXJl
IGlzIGFueSBvdGhlcgorICAgKiBudW1iZXIgb2YgbWF0Y2hlcyBiZXNpZGVzIG9uZS4KKyAgICog
QHJldHVybiB7IVJlYWN0RE9NQ29tcG9uZW50fSBUaGUgb25lIG1hdGNoLgorICAgKi8KKyAgZmlu
ZFJlbmRlcmVkRE9NQ29tcG9uZW50V2l0aENsYXNzOiBmdW5jdGlvbiAocm9vdCwgY2xhc3NOYW1l
KSB7CisgICAgdmFyIGFsbCA9IFJlYWN0VGVzdFV0aWxzLnNjcnlSZW5kZXJlZERPTUNvbXBvbmVu
dHNXaXRoQ2xhc3Mocm9vdCwgY2xhc3NOYW1lKTsKKyAgICBpZiAoYWxsLmxlbmd0aCAhPT0gMSkg
eworICAgICAgdGhyb3cgbmV3IEVycm9yKCdEaWQgbm90IGZpbmQgZXhhY3RseSBvbmUgbWF0Y2gg
KGZvdW5kOiAnICsgYWxsLmxlbmd0aCArICcpICcgKyAnZm9yIGNsYXNzOicgKyBjbGFzc05hbWUp
OworICAgIH0KKyAgICByZXR1cm4gYWxsWzBdOworICB9LAorCisgIC8qKgorICAgKiBGaW5kcyBh
bGwgaW5zdGFuY2Ugb2YgY29tcG9uZW50cyBpbiB0aGUgcmVuZGVyZWQgdHJlZSB0aGF0IGFyZSBE
T00KKyAgICogY29tcG9uZW50cyB3aXRoIHRoZSB0YWcgbmFtZSBtYXRjaGluZyBgdGFnTmFtZWAu
CisgICAqIEByZXR1cm4ge2FycmF5fSBhbiBhcnJheSBvZiBhbGwgdGhlIG1hdGNoZXMuCisgICAq
LworICBzY3J5UmVuZGVyZWRET01Db21wb25lbnRzV2l0aFRhZzogZnVuY3Rpb24gKHJvb3QsIHRh
Z05hbWUpIHsKKyAgICByZXR1cm4gUmVhY3RUZXN0VXRpbHMuZmluZEFsbEluUmVuZGVyZWRUcmVl
KHJvb3QsIGZ1bmN0aW9uIChpbnN0KSB7CisgICAgICByZXR1cm4gUmVhY3RUZXN0VXRpbHMuaXNE
T01Db21wb25lbnQoaW5zdCkgJiYgaW5zdC50YWdOYW1lLnRvVXBwZXJDYXNlKCkgPT09IHRhZ05h
bWUudG9VcHBlckNhc2UoKTsKKyAgICB9KTsKKyAgfSwKKworICAvKioKKyAgICogTGlrZSBzY3J5
UmVuZGVyZWRET01Db21wb25lbnRzV2l0aFRhZyBidXQgZXhwZWN0cyB0aGVyZSB0byBiZSBvbmUg
cmVzdWx0LAorICAgKiBhbmQgcmV0dXJucyB0aGF0IG9uZSByZXN1bHQsIG9yIHRocm93cyBleGNl
cHRpb24gaWYgdGhlcmUgaXMgYW55IG90aGVyCisgICAqIG51bWJlciBvZiBtYXRjaGVzIGJlc2lk
ZXMgb25lLgorICAgKiBAcmV0dXJuIHshUmVhY3RET01Db21wb25lbnR9IFRoZSBvbmUgbWF0Y2gu
CisgICAqLworICBmaW5kUmVuZGVyZWRET01Db21wb25lbnRXaXRoVGFnOiBmdW5jdGlvbiAocm9v
dCwgdGFnTmFtZSkgeworICAgIHZhciBhbGwgPSBSZWFjdFRlc3RVdGlscy5zY3J5UmVuZGVyZWRE
T01Db21wb25lbnRzV2l0aFRhZyhyb290LCB0YWdOYW1lKTsKKyAgICBpZiAoYWxsLmxlbmd0aCAh
PT0gMSkgeworICAgICAgdGhyb3cgbmV3IEVycm9yKCdEaWQgbm90IGZpbmQgZXhhY3RseSBvbmUg
bWF0Y2ggKGZvdW5kOiAnICsgYWxsLmxlbmd0aCArICcpICcgKyAnZm9yIHRhZzonICsgdGFnTmFt
ZSk7CisgICAgfQorICAgIHJldHVybiBhbGxbMF07CisgIH0sCisKKyAgLyoqCisgICAqIEZpbmRz
IGFsbCBpbnN0YW5jZXMgb2YgY29tcG9uZW50cyB3aXRoIHR5cGUgZXF1YWwgdG8gYGNvbXBvbmVu
dFR5cGVgLgorICAgKiBAcmV0dXJuIHthcnJheX0gYW4gYXJyYXkgb2YgYWxsIHRoZSBtYXRjaGVz
LgorICAgKi8KKyAgc2NyeVJlbmRlcmVkQ29tcG9uZW50c1dpdGhUeXBlOiBmdW5jdGlvbiAocm9v
dCwgY29tcG9uZW50VHlwZSkgeworICAgIHJldHVybiBSZWFjdFRlc3RVdGlscy5maW5kQWxsSW5S
ZW5kZXJlZFRyZWUocm9vdCwgZnVuY3Rpb24gKGluc3QpIHsKKyAgICAgIHJldHVybiBSZWFjdFRl
c3RVdGlscy5pc0NvbXBvc2l0ZUNvbXBvbmVudFdpdGhUeXBlKGluc3QsIGNvbXBvbmVudFR5cGUp
OworICAgIH0pOworICB9LAorCisgIC8qKgorICAgKiBTYW1lIGFzIGBzY3J5UmVuZGVyZWRDb21w
b25lbnRzV2l0aFR5cGVgIGJ1dCBleHBlY3RzIHRoZXJlIHRvIGJlIG9uZSByZXN1bHQKKyAgICog
YW5kIHJldHVybnMgdGhhdCBvbmUgcmVzdWx0LCBvciB0aHJvd3MgZXhjZXB0aW9uIGlmIHRoZXJl
IGlzIGFueSBvdGhlcgorICAgKiBudW1iZXIgb2YgbWF0Y2hlcyBiZXNpZGVzIG9uZS4KKyAgICog
QHJldHVybiB7IVJlYWN0Q29tcG9uZW50fSBUaGUgb25lIG1hdGNoLgorICAgKi8KKyAgZmluZFJl
bmRlcmVkQ29tcG9uZW50V2l0aFR5cGU6IGZ1bmN0aW9uIChyb290LCBjb21wb25lbnRUeXBlKSB7
CisgICAgdmFyIGFsbCA9IFJlYWN0VGVzdFV0aWxzLnNjcnlSZW5kZXJlZENvbXBvbmVudHNXaXRo
VHlwZShyb290LCBjb21wb25lbnRUeXBlKTsKKyAgICBpZiAoYWxsLmxlbmd0aCAhPT0gMSkgewor
ICAgICAgdGhyb3cgbmV3IEVycm9yKCdEaWQgbm90IGZpbmQgZXhhY3RseSBvbmUgbWF0Y2ggKGZv
dW5kOiAnICsgYWxsLmxlbmd0aCArICcpICcgKyAnZm9yIGNvbXBvbmVudFR5cGU6JyArIGNvbXBv
bmVudFR5cGUpOworICAgIH0KKyAgICByZXR1cm4gYWxsWzBdOworICB9LAorCisgIC8qKgorICAg
KiBQYXNzIGEgbW9ja2VkIGNvbXBvbmVudCBtb2R1bGUgdG8gdGhpcyBtZXRob2QgdG8gYXVnbWVu
dCBpdCB3aXRoCisgICAqIHVzZWZ1bCBtZXRob2RzIHRoYXQgYWxsb3cgaXQgdG8gYmUgdXNlZCBh
cyBhIGR1bW15IFJlYWN0IGNvbXBvbmVudC4KKyAgICogSW5zdGVhZCBvZiByZW5kZXJpbmcgYXMg
dXN1YWwsIHRoZSBjb21wb25lbnQgd2lsbCBiZWNvbWUgYSBzaW1wbGUKKyAgICogPGRpdj4gY29u
dGFpbmluZyBhbnkgcHJvdmlkZWQgY2hpbGRyZW4uCisgICAqCisgICAqIEBwYXJhbSB7b2JqZWN0
fSBtb2R1bGUgdGhlIG1vY2sgZnVuY3Rpb24gb2JqZWN0IGV4cG9ydGVkIGZyb20gYQorICAgKiAg
ICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZSB0aGF0IGRlZmluZXMgdGhlIGNvbXBvbmVudCB0
byBiZSBtb2NrZWQKKyAgICogQHBhcmFtIHs/c3RyaW5nfSBtb2NrVGFnTmFtZSBvcHRpb25hbCBk
dW1teSByb290IHRhZyBuYW1lIHRvIHJldHVybgorICAgKiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZyb20gcmVuZGVyIG1ldGhvZCAob3ZlcnJpZGVzCisgICAqICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbW9kdWxlLm1vY2tUYWdOYW1lIGlmIHByb3ZpZGVkKQorICAgKiBAcmV0
dXJuIHtvYmplY3R9IHRoZSBSZWFjdFRlc3RVdGlscyBvYmplY3QgKGZvciBjaGFpbmluZykKKyAg
ICovCisgIG1vY2tDb21wb25lbnQ6IGZ1bmN0aW9uIChtb2R1bGUsIG1vY2tUYWdOYW1lKSB7Cisg
ICAgbW9ja1RhZ05hbWUgPSBtb2NrVGFnTmFtZSB8fCBtb2R1bGUubW9ja1RhZ05hbWUgfHwgJ2Rp
dic7CisKKyAgICBtb2R1bGUucHJvdG90eXBlLnJlbmRlci5tb2NrSW1wbGVtZW50YXRpb24oZnVu
Y3Rpb24gKCkgeworICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQobW9ja1RhZ05hbWUs
IG51bGwsIHRoaXMucHJvcHMuY2hpbGRyZW4pOworICAgIH0pOworCisgICAgcmV0dXJuIHRoaXM7
CisgIH0sCisKKyAgLyoqCisgICAqIFNpbXVsYXRlcyBhIHRvcCBsZXZlbCBldmVudCBiZWluZyBk
aXNwYXRjaGVkIGZyb20gYSByYXcgZXZlbnQgdGhhdCBvY2N1cnJlZAorICAgKiBvbiBhbiBgRWxl
bWVudGAgbm9kZS4KKyAgICogQHBhcmFtIHtPYmplY3R9IHRvcExldmVsVHlwZSBBIHR5cGUgZnJv
bSBgRXZlbnRDb25zdGFudHMudG9wTGV2ZWxUeXBlc2AKKyAgICogQHBhcmFtIHshRWxlbWVudH0g
bm9kZSBUaGUgZG9tIHRvIHNpbXVsYXRlIGFuIGV2ZW50IG9jY3VycmluZyBvbi4KKyAgICogQHBh
cmFtIHs/RXZlbnR9IGZha2VOYXRpdmVFdmVudCBGYWtlIG5hdGl2ZSBldmVudCB0byB1c2UgaW4g
U3ludGhldGljRXZlbnQuCisgICAqLworICBzaW11bGF0ZU5hdGl2ZUV2ZW50T25Ob2RlOiBmdW5j
dGlvbiAodG9wTGV2ZWxUeXBlLCBub2RlLCBmYWtlTmF0aXZlRXZlbnQpIHsKKyAgICBmYWtlTmF0
aXZlRXZlbnQudGFyZ2V0ID0gbm9kZTsKKyAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVh
Y3RFdmVudExpc3RlbmVyLmRpc3BhdGNoRXZlbnQodG9wTGV2ZWxUeXBlLCBmYWtlTmF0aXZlRXZl
bnQpOworICB9LAorCisgIC8qKgorICAgKiBTaW11bGF0ZXMgYSB0b3AgbGV2ZWwgZXZlbnQgYmVp
bmcgZGlzcGF0Y2hlZCBmcm9tIGEgcmF3IGV2ZW50IHRoYXQgb2NjdXJyZWQKKyAgICogb24gdGhl
IGBSZWFjdERPTUNvbXBvbmVudGAgYGNvbXBgLgorICAgKiBAcGFyYW0ge09iamVjdH0gdG9wTGV2
ZWxUeXBlIEEgdHlwZSBmcm9tIGBFdmVudENvbnN0YW50cy50b3BMZXZlbFR5cGVzYC4KKyAgICog
QHBhcmFtIHshUmVhY3RET01Db21wb25lbnR9IGNvbXAKKyAgICogQHBhcmFtIHs/RXZlbnR9IGZh
a2VOYXRpdmVFdmVudCBGYWtlIG5hdGl2ZSBldmVudCB0byB1c2UgaW4gU3ludGhldGljRXZlbnQu
CisgICAqLworICBzaW11bGF0ZU5hdGl2ZUV2ZW50T25ET01Db21wb25lbnQ6IGZ1bmN0aW9uICh0
b3BMZXZlbFR5cGUsIGNvbXAsIGZha2VOYXRpdmVFdmVudCkgeworICAgIFJlYWN0VGVzdFV0aWxz
LnNpbXVsYXRlTmF0aXZlRXZlbnRPbk5vZGUodG9wTGV2ZWxUeXBlLCBmaW5kRE9NTm9kZShjb21w
KSwgZmFrZU5hdGl2ZUV2ZW50KTsKKyAgfSwKKworICBuYXRpdmVUb3VjaERhdGE6IGZ1bmN0aW9u
ICh4LCB5KSB7CisgICAgcmV0dXJuIHsKKyAgICAgIHRvdWNoZXM6IFt7IHBhZ2VYOiB4LCBwYWdl
WTogeSB9XQorICAgIH07CisgIH0sCisKKyAgY3JlYXRlUmVuZGVyZXI6IGZ1bmN0aW9uICgpIHsK
KyAgICByZXR1cm4gbmV3IFJlYWN0U2hhbGxvd1JlbmRlcmVyKCk7CisgIH0sCisKKyAgU2ltdWxh
dGU6IG51bGwsCisgIFNpbXVsYXRlTmF0aXZlOiB7fQorfTsKKworLyoqCisgKiBFeHBvcnRzOgor
ICoKKyAqIC0gYFJlYWN0VGVzdFV0aWxzLlNpbXVsYXRlLmNsaWNrKEVsZW1lbnQvUmVhY3RET01D
b21wb25lbnQpYAorICogLSBgUmVhY3RUZXN0VXRpbHMuU2ltdWxhdGUubW91c2VNb3ZlKEVsZW1l
bnQvUmVhY3RET01Db21wb25lbnQpYAorICogLSBgUmVhY3RUZXN0VXRpbHMuU2ltdWxhdGUuY2hh
bmdlKEVsZW1lbnQvUmVhY3RET01Db21wb25lbnQpYAorICogLSAuLi4gKEFsbCBrZXlzIGZyb20g
ZXZlbnQgcGx1Z2luIGBldmVudFR5cGVzYCBvYmplY3RzKQorICovCitmdW5jdGlvbiBtYWtlU2lt
dWxhdG9yKGV2ZW50VHlwZSkgeworICByZXR1cm4gZnVuY3Rpb24gKGRvbUNvbXBvbmVudE9yTm9k
ZSwgZXZlbnREYXRhKSB7CisgICAgdmFyIG5vZGU7CisgICAgISFSZWFjdC5pc1ZhbGlkRWxlbWVu
dChkb21Db21wb25lbnRPck5vZGUpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1Rlc3RVdGlscy5TaW11bGF0ZSBleHBlY3RzIGEgY29t
cG9uZW50IGluc3RhbmNlIGFuZCBub3QgYSBSZWFjdEVsZW1lbnQuVGVzdFV0aWxzLlNpbXVsYXRl
IHdpbGwgbm90IHdvcmsgaWYgeW91IGFyZSB1c2luZyBzaGFsbG93IHJlbmRlcmluZy4nKSA6IF9w
cm9kSW52YXJpYW50KCcxNCcpIDogdm9pZCAwOworICAgIGlmIChSZWFjdFRlc3RVdGlscy5pc0RP
TUNvbXBvbmVudChkb21Db21wb25lbnRPck5vZGUpKSB7CisgICAgICBub2RlID0gZmluZERPTU5v
ZGUoZG9tQ29tcG9uZW50T3JOb2RlKTsKKyAgICB9IGVsc2UgaWYgKGRvbUNvbXBvbmVudE9yTm9k
ZS50YWdOYW1lKSB7CisgICAgICBub2RlID0gZG9tQ29tcG9uZW50T3JOb2RlOworICAgIH0KKwor
ICAgIHZhciBkaXNwYXRjaENvbmZpZyA9IEV2ZW50UGx1Z2luUmVnaXN0cnkuZXZlbnROYW1lRGlz
cGF0Y2hDb25maWdzW2V2ZW50VHlwZV07CisKKyAgICB2YXIgZmFrZU5hdGl2ZUV2ZW50ID0gbmV3
IEV2ZW50KCk7CisgICAgZmFrZU5hdGl2ZUV2ZW50LnRhcmdldCA9IG5vZGU7CisgICAgZmFrZU5h
dGl2ZUV2ZW50LnR5cGUgPSBldmVudFR5cGUudG9Mb3dlckNhc2UoKTsKKworICAgIC8vIFdlIGRv
bid0IHVzZSBTeW50aGV0aWNFdmVudC5nZXRQb29sZWQgaW4gb3JkZXIgdG8gbm90IGhhdmUgdG8g
d29ycnkgYWJvdXQKKyAgICAvLyBwcm9wZXJseSBkZXN0cm95aW5nIGFueSBwcm9wZXJ0aWVzIGFz
c2lnbmVkIGZyb20gYGV2ZW50RGF0YWAgdXBvbiByZWxlYXNlCisgICAgdmFyIGV2ZW50ID0gbmV3
IFN5bnRoZXRpY0V2ZW50KGRpc3BhdGNoQ29uZmlnLCBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0
SW5zdGFuY2VGcm9tTm9kZShub2RlKSwgZmFrZU5hdGl2ZUV2ZW50LCBub2RlKTsKKyAgICAvLyBT
aW5jZSB3ZSBhcmVuJ3QgdXNpbmcgcG9vbGluZywgYWx3YXlzIHBlcnNpc3QgdGhlIGV2ZW50LiBU
aGlzIHdpbGwgbWFrZQorICAgIC8vIHN1cmUgaXQncyBtYXJrZWQgYW5kIHdvbid0IHdhcm4gd2hl
biBzZXR0aW5nIGFkZGl0aW9uYWwgcHJvcGVydGllcy4KKyAgICBldmVudC5wZXJzaXN0KCk7Cisg
ICAgX2Fzc2lnbihldmVudCwgZXZlbnREYXRhKTsKKworICAgIGlmIChkaXNwYXRjaENvbmZpZy5w
aGFzZWRSZWdpc3RyYXRpb25OYW1lcykgeworICAgICAgRXZlbnRQcm9wYWdhdG9ycy5hY2N1bXVs
YXRlVHdvUGhhc2VEaXNwYXRjaGVzKGV2ZW50KTsKKyAgICB9IGVsc2UgeworICAgICAgRXZlbnRQ
cm9wYWdhdG9ycy5hY2N1bXVsYXRlRGlyZWN0RGlzcGF0Y2hlcyhldmVudCk7CisgICAgfQorCisg
ICAgUmVhY3RVcGRhdGVzLmJhdGNoZWRVcGRhdGVzKGZ1bmN0aW9uICgpIHsKKyAgICAgIEV2ZW50
UGx1Z2luSHViLmVucXVldWVFdmVudHMoZXZlbnQpOworICAgICAgRXZlbnRQbHVnaW5IdWIucHJv
Y2Vzc0V2ZW50UXVldWUodHJ1ZSk7CisgICAgfSk7CisgIH07Cit9CisKK2Z1bmN0aW9uIGJ1aWxk
U2ltdWxhdG9ycygpIHsKKyAgUmVhY3RUZXN0VXRpbHMuU2ltdWxhdGUgPSB7fTsKKworICB2YXIg
ZXZlbnRUeXBlOworICBmb3IgKGV2ZW50VHlwZSBpbiBFdmVudFBsdWdpblJlZ2lzdHJ5LmV2ZW50
TmFtZURpc3BhdGNoQ29uZmlncykgeworICAgIC8qKgorICAgICAqIEBwYXJhbSB7IUVsZW1lbnR8
UmVhY3RET01Db21wb25lbnR9IGRvbUNvbXBvbmVudE9yTm9kZQorICAgICAqIEBwYXJhbSB7P29i
amVjdH0gZXZlbnREYXRhIEZha2UgZXZlbnQgZGF0YSB0byB1c2UgaW4gU3ludGhldGljRXZlbnQu
CisgICAgICovCisgICAgUmVhY3RUZXN0VXRpbHMuU2ltdWxhdGVbZXZlbnRUeXBlXSA9IG1ha2VT
aW11bGF0b3IoZXZlbnRUeXBlKTsKKyAgfQorfQorCisvLyBSZWJ1aWxkIFJlYWN0VGVzdFV0aWxz
LlNpbXVsYXRlIHdoZW5ldmVyIGV2ZW50IHBsdWdpbnMgYXJlIGluamVjdGVkCit2YXIgb2xkSW5q
ZWN0RXZlbnRQbHVnaW5PcmRlciA9IEV2ZW50UGx1Z2luSHViLmluamVjdGlvbi5pbmplY3RFdmVu
dFBsdWdpbk9yZGVyOworRXZlbnRQbHVnaW5IdWIuaW5qZWN0aW9uLmluamVjdEV2ZW50UGx1Z2lu
T3JkZXIgPSBmdW5jdGlvbiAoKSB7CisgIG9sZEluamVjdEV2ZW50UGx1Z2luT3JkZXIuYXBwbHko
dGhpcywgYXJndW1lbnRzKTsKKyAgYnVpbGRTaW11bGF0b3JzKCk7Cit9OwordmFyIG9sZEluamVj
dEV2ZW50UGx1Z2lucyA9IEV2ZW50UGx1Z2luSHViLmluamVjdGlvbi5pbmplY3RFdmVudFBsdWdp
bnNCeU5hbWU7CitFdmVudFBsdWdpbkh1Yi5pbmplY3Rpb24uaW5qZWN0RXZlbnRQbHVnaW5zQnlO
YW1lID0gZnVuY3Rpb24gKCkgeworICBvbGRJbmplY3RFdmVudFBsdWdpbnMuYXBwbHkodGhpcywg
YXJndW1lbnRzKTsKKyAgYnVpbGRTaW11bGF0b3JzKCk7Cit9OworCitidWlsZFNpbXVsYXRvcnMo
KTsKKworLyoqCisgKiBFeHBvcnRzOgorICoKKyAqIC0gYFJlYWN0VGVzdFV0aWxzLlNpbXVsYXRl
TmF0aXZlLmNsaWNrKEVsZW1lbnQvUmVhY3RET01Db21wb25lbnQpYAorICogLSBgUmVhY3RUZXN0
VXRpbHMuU2ltdWxhdGVOYXRpdmUubW91c2VNb3ZlKEVsZW1lbnQvUmVhY3RET01Db21wb25lbnQp
YAorICogLSBgUmVhY3RUZXN0VXRpbHMuU2ltdWxhdGVOYXRpdmUubW91c2VJbi9SZWFjdERPTUNv
bXBvbmVudClgCisgKiAtIGBSZWFjdFRlc3RVdGlscy5TaW11bGF0ZU5hdGl2ZS5tb3VzZU91dChF
bGVtZW50L1JlYWN0RE9NQ29tcG9uZW50KWAKKyAqIC0gLi4uIChBbGwga2V5cyBmcm9tIGBFdmVu
dENvbnN0YW50cy50b3BMZXZlbFR5cGVzYCkKKyAqCisgKiBOb3RlOiBUb3AgbGV2ZWwgZXZlbnQg
dHlwZXMgYXJlIGEgc3Vic2V0IG9mIHRoZSBlbnRpcmUgc2V0IG9mIGhhbmRsZXIgdHlwZXMKKyAq
ICh3aGljaCBpbmNsdWRlIGEgYnJvYWRlciBzZXQgb2YgInN5bnRoZXRpYyIgZXZlbnRzKS4gRm9y
IGV4YW1wbGUsIG9uRHJhZ0RvbmUKKyAqIGlzIGEgc3ludGhldGljIGV2ZW50LiBFeGNlcHQgd2hl
biB0ZXN0aW5nIGFuIGV2ZW50IHBsdWdpbiBvciBSZWFjdCdzIGV2ZW50CisgKiBoYW5kbGluZyBj
b2RlIHNwZWNpZmljYWxseSwgeW91IHByb2JhYmx5IHdhbnQgdG8gdXNlIFJlYWN0VGVzdFV0aWxz
LlNpbXVsYXRlCisgKiB0byBkaXNwYXRjaCBzeW50aGV0aWMgZXZlbnRzLgorICovCisKK2Z1bmN0
aW9uIG1ha2VOYXRpdmVTaW11bGF0b3IoZXZlbnRUeXBlKSB7CisgIHJldHVybiBmdW5jdGlvbiAo
ZG9tQ29tcG9uZW50T3JOb2RlLCBuYXRpdmVFdmVudERhdGEpIHsKKyAgICB2YXIgZmFrZU5hdGl2
ZUV2ZW50ID0gbmV3IEV2ZW50KGV2ZW50VHlwZSk7CisgICAgX2Fzc2lnbihmYWtlTmF0aXZlRXZl
bnQsIG5hdGl2ZUV2ZW50RGF0YSk7CisgICAgaWYgKFJlYWN0VGVzdFV0aWxzLmlzRE9NQ29tcG9u
ZW50KGRvbUNvbXBvbmVudE9yTm9kZSkpIHsKKyAgICAgIFJlYWN0VGVzdFV0aWxzLnNpbXVsYXRl
TmF0aXZlRXZlbnRPbkRPTUNvbXBvbmVudChldmVudFR5cGUsIGRvbUNvbXBvbmVudE9yTm9kZSwg
ZmFrZU5hdGl2ZUV2ZW50KTsKKyAgICB9IGVsc2UgaWYgKGRvbUNvbXBvbmVudE9yTm9kZS50YWdO
YW1lKSB7CisgICAgICAvLyBXaWxsIGFsbG93IG9uIGFjdHVhbCBkb20gbm9kZXMuCisgICAgICBS
ZWFjdFRlc3RVdGlscy5zaW11bGF0ZU5hdGl2ZUV2ZW50T25Ob2RlKGV2ZW50VHlwZSwgZG9tQ29t
cG9uZW50T3JOb2RlLCBmYWtlTmF0aXZlRXZlbnQpOworICAgIH0KKyAgfTsKK30KKworT2JqZWN0
LmtleXModG9wTGV2ZWxUeXBlcykuZm9yRWFjaChmdW5jdGlvbiAoZXZlbnRUeXBlKSB7CisgIC8v
IEV2ZW50IHR5cGUgaXMgc3RvcmVkIGFzICd0b3BDbGljaycgLSB3ZSB0cmFuc2Zvcm0gdGhhdCB0
byAnY2xpY2snCisgIHZhciBjb252ZW5pZW5jZU5hbWUgPSBldmVudFR5cGUuaW5kZXhPZigndG9w
JykgPT09IDAgPyBldmVudFR5cGUuY2hhckF0KDMpLnRvTG93ZXJDYXNlKCkgKyBldmVudFR5cGUu
c3Vic3RyKDQpIDogZXZlbnRUeXBlOworICAvKioKKyAgICogQHBhcmFtIHshRWxlbWVudHxSZWFj
dERPTUNvbXBvbmVudH0gZG9tQ29tcG9uZW50T3JOb2RlCisgICAqIEBwYXJhbSB7P0V2ZW50fSBu
YXRpdmVFdmVudERhdGEgRmFrZSBuYXRpdmUgZXZlbnQgdG8gdXNlIGluIFN5bnRoZXRpY0V2ZW50
LgorICAgKi8KKyAgUmVhY3RUZXN0VXRpbHMuU2ltdWxhdGVOYXRpdmVbY29udmVuaWVuY2VOYW1l
XSA9IG1ha2VOYXRpdmVTaW11bGF0b3IoZXZlbnRUeXBlKTsKK30pOworCittb2R1bGUuZXhwb3J0
cyA9IFJlYWN0VGVzdFV0aWxzOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0VHlw
ZU9mV29yay5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGli
L1JlYWN0VHlwZU9mV29yay5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43OTQxNWQ5ZDI1NzliNjM5MDBkZGVkMGRm
MjkyNTYwMzkzODNkMGVkCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9k
ZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RUeXBlT2ZXb3JrLmpzCkBAIC0wLDAgKzEsMjMg
QEAKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1
bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIAorICovCisKKyd1c2Ugc3RyaWN0JzsK
KworbW9kdWxlLmV4cG9ydHMgPSB7CisgIEluZGV0ZXJtaW5hdGVDb21wb25lbnQ6IDAsIC8vIEJl
Zm9yZSB3ZSBrbm93IHdoZXRoZXIgaXQgaXMgZnVuY3Rpb25hbCBvciBjbGFzcworICBGdW5jdGlv
bmFsQ29tcG9uZW50OiAxLAorICBDbGFzc0NvbXBvbmVudDogMiwKKyAgSG9zdENvbnRhaW5lcjog
MywgLy8gUm9vdCBvZiBhIGhvc3QgdHJlZS4gQ291bGQgYmUgbmVzdGVkIGluc2lkZSBhbm90aGVy
IG5vZGUuCisgIEhvc3RDb21wb25lbnQ6IDQsCisgIENvcm91dGluZUNvbXBvbmVudDogNSwKKyAg
Q29yb3V0aW5lSGFuZGxlclBoYXNlOiA2LAorICBZaWVsZENvbXBvbmVudDogNworfTsKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2Rl
X21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdFR5cGVzLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qv
bm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RUeXBlcy5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YjAx
M2RmYmZlZjZiOWUwZTgxZmRkYWVjNzVlOTEzOTgzZDgxMzViCi0tLSAvZGV2L251bGwKKysrIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RUeXBlcy5q
cwpAQCAtMCwwICsxLDEyIEBACisvKioKKyAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNv
ZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQor
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBp
biB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiAKKyAqLwor
CisndXNlIHN0cmljdCc7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RVcGRhdGVR
dWV1ZS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1Jl
YWN0VXBkYXRlUXVldWUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzBmMmE1NzEyZjk3MDgwNjc1YmExZTNmZjc4
MTQyMTVlZjlhZjVlZAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVf
bW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0VXBkYXRlUXVldWUuanMKQEAgLTAsMCArMSwyMjUg
QEAKKy8qKgorICogQ29weXJpZ2h0IDIwMTUtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1
bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3Zh
ciBfcHJvZEludmFyaWFudCA9IHJlcXVpcmUoJy4vcmVhY3RQcm9kSW52YXJpYW50Jyk7CisKK3Zh
ciBSZWFjdEN1cnJlbnRPd25lciA9IHJlcXVpcmUoJ3JlYWN0L2xpYi9SZWFjdEN1cnJlbnRPd25l
cicpOwordmFyIFJlYWN0SW5zdGFuY2VNYXAgPSByZXF1aXJlKCcuL1JlYWN0SW5zdGFuY2VNYXAn
KTsKK3ZhciBSZWFjdEluc3RydW1lbnRhdGlvbiA9IHJlcXVpcmUoJy4vUmVhY3RJbnN0cnVtZW50
YXRpb24nKTsKK3ZhciBSZWFjdFVwZGF0ZXMgPSByZXF1aXJlKCcuL1JlYWN0VXBkYXRlcycpOwor
Cit2YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7Cit2YXIgd2Fy
bmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTsKKworZnVuY3Rpb24gZW5xdWV1ZVVw
ZGF0ZShpbnRlcm5hbEluc3RhbmNlKSB7CisgIFJlYWN0VXBkYXRlcy5lbnF1ZXVlVXBkYXRlKGlu
dGVybmFsSW5zdGFuY2UpOworfQorCitmdW5jdGlvbiBmb3JtYXRVbmV4cGVjdGVkQXJndW1lbnQo
YXJnKSB7CisgIHZhciB0eXBlID0gdHlwZW9mIGFyZzsKKyAgaWYgKHR5cGUgIT09ICdvYmplY3Qn
KSB7CisgICAgcmV0dXJuIHR5cGU7CisgIH0KKyAgdmFyIGRpc3BsYXlOYW1lID0gYXJnLmNvbnN0
cnVjdG9yICYmIGFyZy5jb25zdHJ1Y3Rvci5uYW1lIHx8IHR5cGU7CisgIHZhciBrZXlzID0gT2Jq
ZWN0LmtleXMoYXJnKTsKKyAgaWYgKGtleXMubGVuZ3RoID4gMCAmJiBrZXlzLmxlbmd0aCA8IDIw
KSB7CisgICAgcmV0dXJuIGRpc3BsYXlOYW1lICsgJyAoa2V5czogJyArIGtleXMuam9pbignLCAn
KSArICcpJzsKKyAgfQorICByZXR1cm4gZGlzcGxheU5hbWU7Cit9CisKK2Z1bmN0aW9uIGdldElu
dGVybmFsSW5zdGFuY2VSZWFkeUZvclVwZGF0ZShwdWJsaWNJbnN0YW5jZSwgY2FsbGVyTmFtZSkg
eworICB2YXIgaW50ZXJuYWxJbnN0YW5jZSA9IFJlYWN0SW5zdGFuY2VNYXAuZ2V0KHB1YmxpY0lu
c3RhbmNlKTsKKyAgaWYgKCFpbnRlcm5hbEluc3RhbmNlKSB7CisgICAgaWYgKHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgIHZhciBjdG9yID0gcHVibGljSW5z
dGFuY2UuY29uc3RydWN0b3I7CisgICAgICAvLyBPbmx5IHdhcm4gd2hlbiB3ZSBoYXZlIGEgY2Fs
bGVyTmFtZS4gT3RoZXJ3aXNlIHdlIHNob3VsZCBiZSBzaWxlbnQuCisgICAgICAvLyBXZSdyZSBw
cm9iYWJseSBjYWxsaW5nIGZyb20gZW5xdWV1ZUNhbGxiYWNrLiBXZSBkb24ndCB3YW50IHRvIHdh
cm4KKyAgICAgIC8vIHRoZXJlIGJlY2F1c2Ugd2UgYWxyZWFkeSB3YXJuZWQgZm9yIHRoZSBjb3Jy
ZXNwb25kaW5nIGxpZmVjeWNsZSBtZXRob2QuCisgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAh
PT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyghY2FsbGVyTmFtZSwgJyVzKC4uLik6IENhbiBvbmx5
IHVwZGF0ZSBhIG1vdW50ZWQgb3IgbW91bnRpbmcgY29tcG9uZW50LiAnICsgJ1RoaXMgdXN1YWxs
eSBtZWFucyB5b3UgY2FsbGVkICVzKCkgb24gYW4gdW5tb3VudGVkIGNvbXBvbmVudC4gJyArICdU
aGlzIGlzIGEgbm8tb3AuIFBsZWFzZSBjaGVjayB0aGUgY29kZSBmb3IgdGhlICVzIGNvbXBvbmVu
dC4nLCBjYWxsZXJOYW1lLCBjYWxsZXJOYW1lLCBjdG9yICYmIChjdG9yLmRpc3BsYXlOYW1lIHx8
IGN0b3IubmFtZSkgfHwgJ1JlYWN0Q2xhc3MnKSA6IHZvaWQgMDsKKyAgICB9CisgICAgcmV0dXJu
IG51bGw7CisgIH0KKworICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
JykgeworICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5n
KFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPT0gbnVsbCwgJyVzKC4uLik6IENhbm5vdCB1cGRh
dGUgZHVyaW5nIGFuIGV4aXN0aW5nIHN0YXRlIHRyYW5zaXRpb24gKHN1Y2ggYXMgJyArICd3aXRo
aW4gYHJlbmRlcmAgb3IgYW5vdGhlciBjb21wb25lbnRcJ3MgY29uc3RydWN0b3IpLiBSZW5kZXIg
bWV0aG9kcyAnICsgJ3Nob3VsZCBiZSBhIHB1cmUgZnVuY3Rpb24gb2YgcHJvcHMgYW5kIHN0YXRl
OyBjb25zdHJ1Y3RvciAnICsgJ3NpZGUtZWZmZWN0cyBhcmUgYW4gYW50aS1wYXR0ZXJuLCBidXQg
Y2FuIGJlIG1vdmVkIHRvICcgKyAnYGNvbXBvbmVudFdpbGxNb3VudGAuJywgY2FsbGVyTmFtZSkg
OiB2b2lkIDA7CisgIH0KKworICByZXR1cm4gaW50ZXJuYWxJbnN0YW5jZTsKK30KKworLyoqCisg
KiBSZWFjdFVwZGF0ZVF1ZXVlIGFsbG93cyBmb3Igc3RhdGUgdXBkYXRlcyB0byBiZSBzY2hlZHVs
ZWQgaW50byBhIGxhdGVyCisgKiByZWNvbmNpbGlhdGlvbiBzdGVwLgorICovCit2YXIgUmVhY3RV
cGRhdGVRdWV1ZSA9IHsKKworICAvKioKKyAgICogQ2hlY2tzIHdoZXRoZXIgb3Igbm90IHRoaXMg
Y29tcG9zaXRlIGNvbXBvbmVudCBpcyBtb3VudGVkLgorICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9
IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB3ZSB3YW50IHRvIHRlc3QuCisgICAqIEByZXR1
cm4ge2Jvb2xlYW59IFRydWUgaWYgbW91bnRlZCwgZmFsc2Ugb3RoZXJ3aXNlLgorICAgKiBAcHJv
dGVjdGVkCisgICAqIEBmaW5hbAorICAgKi8KKyAgaXNNb3VudGVkOiBmdW5jdGlvbiAocHVibGlj
SW5zdGFuY2UpIHsKKyAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
JykgeworICAgICAgdmFyIG93bmVyID0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVudDsKKyAgICAg
IGlmIChvd25lciAhPT0gbnVsbCkgeworICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0g
J3Byb2R1Y3Rpb24nID8gd2FybmluZyhvd25lci5fd2FybmVkQWJvdXRSZWZzSW5SZW5kZXIsICcl
cyBpcyBhY2Nlc3NpbmcgaXNNb3VudGVkIGluc2lkZSBpdHMgcmVuZGVyKCkgZnVuY3Rpb24uICcg
KyAncmVuZGVyKCkgc2hvdWxkIGJlIGEgcHVyZSBmdW5jdGlvbiBvZiBwcm9wcyBhbmQgc3RhdGUu
IEl0IHNob3VsZCAnICsgJ25ldmVyIGFjY2VzcyBzb21ldGhpbmcgdGhhdCByZXF1aXJlcyBzdGFs
ZSBkYXRhIGZyb20gdGhlIHByZXZpb3VzICcgKyAncmVuZGVyLCBzdWNoIGFzIHJlZnMuIE1vdmUg
dGhpcyBsb2dpYyB0byBjb21wb25lbnREaWRNb3VudCBhbmQgJyArICdjb21wb25lbnREaWRVcGRh
dGUgaW5zdGVhZC4nLCBvd25lci5nZXROYW1lKCkgfHwgJ0EgY29tcG9uZW50JykgOiB2b2lkIDA7
CisgICAgICAgIG93bmVyLl93YXJuZWRBYm91dFJlZnNJblJlbmRlciA9IHRydWU7CisgICAgICB9
CisgICAgfQorICAgIHZhciBpbnRlcm5hbEluc3RhbmNlID0gUmVhY3RJbnN0YW5jZU1hcC5nZXQo
cHVibGljSW5zdGFuY2UpOworICAgIGlmIChpbnRlcm5hbEluc3RhbmNlKSB7CisgICAgICAvLyBE
dXJpbmcgY29tcG9uZW50V2lsbE1vdW50IGFuZCByZW5kZXIgdGhpcyB3aWxsIHN0aWxsIGJlIG51
bGwgYnV0IGFmdGVyCisgICAgICAvLyB0aGF0IHdpbGwgYWx3YXlzIHJlbmRlciB0byBzb21ldGhp
bmcuIEF0IGxlYXN0IGZvciBub3cuIFNvIHdlIGNhbiB1c2UKKyAgICAgIC8vIHRoaXMgaGFjay4K
KyAgICAgIHJldHVybiAhIWludGVybmFsSW5zdGFuY2UuX3JlbmRlcmVkQ29tcG9uZW50OworICAg
IH0gZWxzZSB7CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICB9LAorCisgIC8qKgorICAg
KiBFbnF1ZXVlIGEgY2FsbGJhY2sgdGhhdCB3aWxsIGJlIGV4ZWN1dGVkIGFmdGVyIGFsbCB0aGUg
cGVuZGluZyB1cGRhdGVzCisgICAqIGhhdmUgcHJvY2Vzc2VkLgorICAgKgorICAgKiBAcGFyYW0g
e1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0byB1c2UgYXMgYHRoaXNg
IGNvbnRleHQuCisgICAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBjYWxsYmFjayBDYWxsZWQgYWZ0ZXIg
c3RhdGUgaXMgdXBkYXRlZC4KKyAgICogQHBhcmFtIHtzdHJpbmd9IGNhbGxlck5hbWUgTmFtZSBv
ZiB0aGUgY2FsbGluZyBmdW5jdGlvbiBpbiB0aGUgcHVibGljIEFQSS4KKyAgICogQGludGVybmFs
CisgICAqLworICBlbnF1ZXVlQ2FsbGJhY2s6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSwgY2Fs
bGJhY2ssIGNhbGxlck5hbWUpIHsKKyAgICBSZWFjdFVwZGF0ZVF1ZXVlLnZhbGlkYXRlQ2FsbGJh
Y2soY2FsbGJhY2ssIGNhbGxlck5hbWUpOworICAgIHZhciBpbnRlcm5hbEluc3RhbmNlID0gZ2V0
SW50ZXJuYWxJbnN0YW5jZVJlYWR5Rm9yVXBkYXRlKHB1YmxpY0luc3RhbmNlKTsKKworICAgIC8v
IFByZXZpb3VzbHkgd2Ugd291bGQgdGhyb3cgYW4gZXJyb3IgaWYgd2UgZGlkbid0IGhhdmUgYW4g
aW50ZXJuYWwKKyAgICAvLyBpbnN0YW5jZS4gU2luY2Ugd2Ugd2FudCB0byBtYWtlIGl0IGEgbm8t
b3AgaW5zdGVhZCwgd2UgbWlycm9yIHRoZSBzYW1lCisgICAgLy8gYmVoYXZpb3Igd2UgaGF2ZSBp
biBvdGhlciBlbnF1ZXVlKiBtZXRob2RzLgorICAgIC8vIFdlIGFsc28gbmVlZCB0byBpZ25vcmUg
Y2FsbGJhY2tzIGluIGNvbXBvbmVudFdpbGxNb3VudC4gU2VlCisgICAgLy8gZW5xdWV1ZVVwZGF0
ZXMuCisgICAgaWYgKCFpbnRlcm5hbEluc3RhbmNlKSB7CisgICAgICByZXR1cm4gbnVsbDsKKyAg
ICB9CisKKyAgICBpZiAoaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ0NhbGxiYWNrcykgeworICAg
ICAgaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ0NhbGxiYWNrcy5wdXNoKGNhbGxiYWNrKTsKKyAg
ICB9IGVsc2UgeworICAgICAgaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ0NhbGxiYWNrcyA9IFtj
YWxsYmFja107CisgICAgfQorICAgIC8vIFRPRE86IFRoZSBjYWxsYmFjayBoZXJlIGlzIGlnbm9y
ZWQgd2hlbiBzZXRTdGF0ZSBpcyBjYWxsZWQgZnJvbQorICAgIC8vIGNvbXBvbmVudFdpbGxNb3Vu
dC4gRWl0aGVyIGZpeCBpdCBvciBkaXNhbGxvdyBkb2luZyBzbyBjb21wbGV0ZWx5IGluCisgICAg
Ly8gZmF2b3Igb2YgZ2V0SW5pdGlhbFN0YXRlLiBBbHRlcm5hdGl2ZWx5LCB3ZSBjYW4gZGlzYWxs
b3cKKyAgICAvLyBjb21wb25lbnRXaWxsTW91bnQgZHVyaW5nIHNlcnZlci1zaWRlIHJlbmRlcmlu
Zy4KKyAgICBlbnF1ZXVlVXBkYXRlKGludGVybmFsSW5zdGFuY2UpOworICB9LAorCisgIGVucXVl
dWVDYWxsYmFja0ludGVybmFsOiBmdW5jdGlvbiAoaW50ZXJuYWxJbnN0YW5jZSwgY2FsbGJhY2sp
IHsKKyAgICBpZiAoaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ0NhbGxiYWNrcykgeworICAgICAg
aW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ0NhbGxiYWNrcy5wdXNoKGNhbGxiYWNrKTsKKyAgICB9
IGVsc2UgeworICAgICAgaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ0NhbGxiYWNrcyA9IFtjYWxs
YmFja107CisgICAgfQorICAgIGVucXVldWVVcGRhdGUoaW50ZXJuYWxJbnN0YW5jZSk7CisgIH0s
CisKKyAgLyoqCisgICAqIEZvcmNlcyBhbiB1cGRhdGUuIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW52
b2tlZCB3aGVuIGl0IGlzIGtub3duIHdpdGgKKyAgICogY2VydGFpbnR5IHRoYXQgd2UgYXJlICoq
bm90KiogaW4gYSBET00gdHJhbnNhY3Rpb24uCisgICAqCisgICAqIFlvdSBtYXkgd2FudCB0byBj
YWxsIHRoaXMgd2hlbiB5b3Uga25vdyB0aGF0IHNvbWUgZGVlcGVyIGFzcGVjdCBvZiB0aGUKKyAg
ICogY29tcG9uZW50J3Mgc3RhdGUgaGFzIGNoYW5nZWQgYnV0IGBzZXRTdGF0ZWAgd2FzIG5vdCBj
YWxsZWQuCisgICAqCisgICAqIFRoaXMgd2lsbCBub3QgaW52b2tlIGBzaG91bGRDb21wb25lbnRV
cGRhdGVgLCBidXQgaXQgd2lsbCBpbnZva2UKKyAgICogYGNvbXBvbmVudFdpbGxVcGRhdGVgIGFu
ZCBgY29tcG9uZW50RGlkVXBkYXRlYC4KKyAgICoKKyAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBw
dWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdGhhdCBzaG91bGQgcmVyZW5kZXIuCisgICAqIEBp
bnRlcm5hbAorICAgKi8KKyAgZW5xdWV1ZUZvcmNlVXBkYXRlOiBmdW5jdGlvbiAocHVibGljSW5z
dGFuY2UpIHsKKyAgICB2YXIgaW50ZXJuYWxJbnN0YW5jZSA9IGdldEludGVybmFsSW5zdGFuY2VS
ZWFkeUZvclVwZGF0ZShwdWJsaWNJbnN0YW5jZSwgJ2ZvcmNlVXBkYXRlJyk7CisKKyAgICBpZiAo
IWludGVybmFsSW5zdGFuY2UpIHsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpbnRlcm5h
bEluc3RhbmNlLl9wZW5kaW5nRm9yY2VVcGRhdGUgPSB0cnVlOworCisgICAgZW5xdWV1ZVVwZGF0
ZShpbnRlcm5hbEluc3RhbmNlKTsKKyAgfSwKKworICAvKioKKyAgICogUmVwbGFjZXMgYWxsIG9m
IHRoZSBzdGF0ZS4gQWx3YXlzIHVzZSB0aGlzIG9yIGBzZXRTdGF0ZWAgdG8gbXV0YXRlIHN0YXRl
LgorICAgKiBZb3Ugc2hvdWxkIHRyZWF0IGB0aGlzLnN0YXRlYCBhcyBpbW11dGFibGUuCisgICAq
CisgICAqIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IGB0aGlzLnN0YXRlYCB3aWxsIGJlIGlt
bWVkaWF0ZWx5IHVwZGF0ZWQsIHNvCisgICAqIGFjY2Vzc2luZyBgdGhpcy5zdGF0ZWAgYWZ0ZXIg
Y2FsbGluZyB0aGlzIG1ldGhvZCBtYXkgcmV0dXJuIHRoZSBvbGQgdmFsdWUuCisgICAqCisgICAq
IEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHRoYXQgc2hv
dWxkIHJlcmVuZGVyLgorICAgKiBAcGFyYW0ge29iamVjdH0gY29tcGxldGVTdGF0ZSBOZXh0IHN0
YXRlLgorICAgKiBAaW50ZXJuYWwKKyAgICovCisgIGVucXVldWVSZXBsYWNlU3RhdGU6IGZ1bmN0
aW9uIChwdWJsaWNJbnN0YW5jZSwgY29tcGxldGVTdGF0ZSkgeworICAgIHZhciBpbnRlcm5hbElu
c3RhbmNlID0gZ2V0SW50ZXJuYWxJbnN0YW5jZVJlYWR5Rm9yVXBkYXRlKHB1YmxpY0luc3RhbmNl
LCAncmVwbGFjZVN0YXRlJyk7CisKKyAgICBpZiAoIWludGVybmFsSW5zdGFuY2UpIHsKKyAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBpbnRlcm5hbEluc3RhbmNlLl9wZW5kaW5nU3RhdGVRdWV1
ZSA9IFtjb21wbGV0ZVN0YXRlXTsKKyAgICBpbnRlcm5hbEluc3RhbmNlLl9wZW5kaW5nUmVwbGFj
ZVN0YXRlID0gdHJ1ZTsKKworICAgIGVucXVldWVVcGRhdGUoaW50ZXJuYWxJbnN0YW5jZSk7Cisg
IH0sCisKKyAgLyoqCisgICAqIFNldHMgYSBzdWJzZXQgb2YgdGhlIHN0YXRlLiBUaGlzIG9ubHkg
ZXhpc3RzIGJlY2F1c2UgX3BlbmRpbmdTdGF0ZSBpcworICAgKiBpbnRlcm5hbC4gVGhpcyBwcm92
aWRlcyBhIG1lcmdpbmcgc3RyYXRlZ3kgdGhhdCBpcyBub3QgYXZhaWxhYmxlIHRvIGRlZXAKKyAg
ICogcHJvcGVydGllcyB3aGljaCBpcyBjb25mdXNpbmcuIFRPRE86IEV4cG9zZSBwZW5kaW5nU3Rh
dGUgb3IgZG9uJ3QgdXNlIGl0CisgICAqIGR1cmluZyB0aGUgbWVyZ2UuCisgICAqCisgICAqIEBw
YXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHRoYXQgc2hvdWxk
IHJlcmVuZGVyLgorICAgKiBAcGFyYW0ge29iamVjdH0gcGFydGlhbFN0YXRlIE5leHQgcGFydGlh
bCBzdGF0ZSB0byBiZSBtZXJnZWQgd2l0aCBzdGF0ZS4KKyAgICogQGludGVybmFsCisgICAqLwor
ICBlbnF1ZXVlU2V0U3RhdGU6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSwgcGFydGlhbFN0YXRl
KSB7CisgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHsKKyAg
ICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vblNldFN0YXRlKCk7CisgICAgICBw
cm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhwYXJ0aWFsU3Rh
dGUgIT0gbnVsbCwgJ3NldFN0YXRlKC4uLik6IFlvdSBwYXNzZWQgYW4gdW5kZWZpbmVkIG9yIG51
bGwgc3RhdGUgb2JqZWN0OyAnICsgJ2luc3RlYWQsIHVzZSBmb3JjZVVwZGF0ZSgpLicpIDogdm9p
ZCAwOworICAgIH0KKworICAgIHZhciBpbnRlcm5hbEluc3RhbmNlID0gZ2V0SW50ZXJuYWxJbnN0
YW5jZVJlYWR5Rm9yVXBkYXRlKHB1YmxpY0luc3RhbmNlLCAnc2V0U3RhdGUnKTsKKworICAgIGlm
ICghaW50ZXJuYWxJbnN0YW5jZSkgeworICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHZhciBx
dWV1ZSA9IGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdTdGF0ZVF1ZXVlIHx8IChpbnRlcm5hbElu
c3RhbmNlLl9wZW5kaW5nU3RhdGVRdWV1ZSA9IFtdKTsKKyAgICBxdWV1ZS5wdXNoKHBhcnRpYWxT
dGF0ZSk7CisKKyAgICBlbnF1ZXVlVXBkYXRlKGludGVybmFsSW5zdGFuY2UpOworICB9LAorCisg
IGVucXVldWVFbGVtZW50SW50ZXJuYWw6IGZ1bmN0aW9uIChpbnRlcm5hbEluc3RhbmNlLCBuZXh0
RWxlbWVudCwgbmV4dENvbnRleHQpIHsKKyAgICBpbnRlcm5hbEluc3RhbmNlLl9wZW5kaW5nRWxl
bWVudCA9IG5leHRFbGVtZW50OworICAgIC8vIFRPRE86IGludHJvZHVjZSBfcGVuZGluZ0NvbnRl
eHQgaW5zdGVhZCBvZiBzZXR0aW5nIGl0IGRpcmVjdGx5LgorICAgIGludGVybmFsSW5zdGFuY2Uu
X2NvbnRleHQgPSBuZXh0Q29udGV4dDsKKyAgICBlbnF1ZXVlVXBkYXRlKGludGVybmFsSW5zdGFu
Y2UpOworICB9LAorCisgIHZhbGlkYXRlQ2FsbGJhY2s6IGZ1bmN0aW9uIChjYWxsYmFjaywgY2Fs
bGVyTmFtZSkgeworICAgICEoIWNhbGxiYWNrIHx8IHR5cGVvZiBjYWxsYmFjayA9PT0gJ2Z1bmN0
aW9uJykgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50
KGZhbHNlLCAnJXMoLi4uKTogRXhwZWN0ZWQgdGhlIGxhc3Qgb3B0aW9uYWwgYGNhbGxiYWNrYCBh
cmd1bWVudCB0byBiZSBhIGZ1bmN0aW9uLiBJbnN0ZWFkIHJlY2VpdmVkOiAlcy4nLCBjYWxsZXJO
YW1lLCBmb3JtYXRVbmV4cGVjdGVkQXJndW1lbnQoY2FsbGJhY2spKSA6IF9wcm9kSW52YXJpYW50
KCcxMjInLCBjYWxsZXJOYW1lLCBmb3JtYXRVbmV4cGVjdGVkQXJndW1lbnQoY2FsbGJhY2spKSA6
IHZvaWQgMDsKKyAgfQorCit9OworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0VXBkYXRlUXVldWU7
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVh
Y3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RVcGRhdGVzLmpzIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RVcGRhdGVzLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjQyZjRhNzAzODBhYzdhZDgzMGRhNGEyMzhmZTY3NDkzMWZmY2ZhYTgKLS0tIC9kZXYv
bnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9S
ZWFjdFVwZGF0ZXMuanMKQEAgLTAsMCArMSwyNTAgQEAKKy8qKgorICogQ29weXJpZ2h0IDIwMTMt
cHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
VGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2Ug
Zm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRo
aXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMg
Y2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Lgor
ICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBfcHJvZEludmFyaWFudCA9IHJlcXVpcmUo
Jy4vcmVhY3RQcm9kSW52YXJpYW50JyksCisgICAgX2Fzc2lnbiA9IHJlcXVpcmUoJ29iamVjdC1h
c3NpZ24nKTsKKwordmFyIENhbGxiYWNrUXVldWUgPSByZXF1aXJlKCcuL0NhbGxiYWNrUXVldWUn
KTsKK3ZhciBQb29sZWRDbGFzcyA9IHJlcXVpcmUoJy4vUG9vbGVkQ2xhc3MnKTsKK3ZhciBSZWFj
dEZlYXR1cmVGbGFncyA9IHJlcXVpcmUoJy4vUmVhY3RGZWF0dXJlRmxhZ3MnKTsKK3ZhciBSZWFj
dFJlY29uY2lsZXIgPSByZXF1aXJlKCcuL1JlYWN0UmVjb25jaWxlcicpOwordmFyIFRyYW5zYWN0
aW9uID0gcmVxdWlyZSgnLi9UcmFuc2FjdGlvbicpOworCit2YXIgaW52YXJpYW50ID0gcmVxdWly
ZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7CisKK3ZhciBkaXJ0eUNvbXBvbmVudHMgPSBbXTsKK3Zh
ciB1cGRhdGVCYXRjaE51bWJlciA9IDA7Cit2YXIgYXNhcENhbGxiYWNrUXVldWUgPSBDYWxsYmFj
a1F1ZXVlLmdldFBvb2xlZCgpOwordmFyIGFzYXBFbnF1ZXVlZCA9IGZhbHNlOworCit2YXIgYmF0
Y2hpbmdTdHJhdGVneSA9IG51bGw7CisKK2Z1bmN0aW9uIGVuc3VyZUluamVjdGVkKCkgeworICAh
KFJlYWN0VXBkYXRlcy5SZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uICYmIGJhdGNoaW5nU3RyYXRl
Z3kpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChm
YWxzZSwgJ1JlYWN0VXBkYXRlczogbXVzdCBpbmplY3QgYSByZWNvbmNpbGUgdHJhbnNhY3Rpb24g
Y2xhc3MgYW5kIGJhdGNoaW5nIHN0cmF0ZWd5JykgOiBfcHJvZEludmFyaWFudCgnMTIzJykgOiB2
b2lkIDA7Cit9CisKK3ZhciBORVNURURfVVBEQVRFUyA9IHsKKyAgaW5pdGlhbGl6ZTogZnVuY3Rp
b24gKCkgeworICAgIHRoaXMuZGlydHlDb21wb25lbnRzTGVuZ3RoID0gZGlydHlDb21wb25lbnRz
Lmxlbmd0aDsKKyAgfSwKKyAgY2xvc2U6IGZ1bmN0aW9uICgpIHsKKyAgICBpZiAodGhpcy5kaXJ0
eUNvbXBvbmVudHNMZW5ndGggIT09IGRpcnR5Q29tcG9uZW50cy5sZW5ndGgpIHsKKyAgICAgIC8v
IEFkZGl0aW9uYWwgdXBkYXRlcyB3ZXJlIGVucXVldWVkIGJ5IGNvbXBvbmVudERpZFVwZGF0ZSBo
YW5kbGVycyBvcgorICAgICAgLy8gc2ltaWxhcjsgYmVmb3JlIG91ciBvd24gVVBEQVRFX1FVRVVF
SU5HIHdyYXBwZXIgY2xvc2VzLCB3ZSB3YW50IHRvIHJ1bgorICAgICAgLy8gdGhlc2UgbmV3IHVw
ZGF0ZXMgc28gdGhhdCBpZiBBJ3MgY29tcG9uZW50RGlkVXBkYXRlIGNhbGxzIHNldFN0YXRlIG9u
CisgICAgICAvLyBCLCBCIHdpbGwgdXBkYXRlIGJlZm9yZSB0aGUgY2FsbGJhY2sgQSdzIHVwZGF0
ZXIgcHJvdmlkZWQgd2hlbiBjYWxsaW5nCisgICAgICAvLyBzZXRTdGF0ZS4KKyAgICAgIGRpcnR5
Q29tcG9uZW50cy5zcGxpY2UoMCwgdGhpcy5kaXJ0eUNvbXBvbmVudHNMZW5ndGgpOworICAgICAg
Zmx1c2hCYXRjaGVkVXBkYXRlcygpOworICAgIH0gZWxzZSB7CisgICAgICBkaXJ0eUNvbXBvbmVu
dHMubGVuZ3RoID0gMDsKKyAgICB9CisgIH0KK307CisKK3ZhciBVUERBVEVfUVVFVUVJTkcgPSB7
CisgIGluaXRpYWxpemU6IGZ1bmN0aW9uICgpIHsKKyAgICB0aGlzLmNhbGxiYWNrUXVldWUucmVz
ZXQoKTsKKyAgfSwKKyAgY2xvc2U6IGZ1bmN0aW9uICgpIHsKKyAgICB0aGlzLmNhbGxiYWNrUXVl
dWUubm90aWZ5QWxsKCk7CisgIH0KK307CisKK3ZhciBUUkFOU0FDVElPTl9XUkFQUEVSUyA9IFtO
RVNURURfVVBEQVRFUywgVVBEQVRFX1FVRVVFSU5HXTsKKworZnVuY3Rpb24gUmVhY3RVcGRhdGVz
Rmx1c2hUcmFuc2FjdGlvbigpIHsKKyAgdGhpcy5yZWluaXRpYWxpemVUcmFuc2FjdGlvbigpOwor
ICB0aGlzLmRpcnR5Q29tcG9uZW50c0xlbmd0aCA9IG51bGw7CisgIHRoaXMuY2FsbGJhY2tRdWV1
ZSA9IENhbGxiYWNrUXVldWUuZ2V0UG9vbGVkKCk7CisgIHRoaXMucmVjb25jaWxlVHJhbnNhY3Rp
b24gPSBSZWFjdFVwZGF0ZXMuUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbi5nZXRQb29sZWQoCisg
IC8qIHVzZUNyZWF0ZUVsZW1lbnQgKi90cnVlKTsKK30KKworX2Fzc2lnbihSZWFjdFVwZGF0ZXNG
bHVzaFRyYW5zYWN0aW9uLnByb3RvdHlwZSwgVHJhbnNhY3Rpb24sIHsKKyAgZ2V0VHJhbnNhY3Rp
b25XcmFwcGVyczogZnVuY3Rpb24gKCkgeworICAgIHJldHVybiBUUkFOU0FDVElPTl9XUkFQUEVS
UzsKKyAgfSwKKworICBkZXN0cnVjdG9yOiBmdW5jdGlvbiAoKSB7CisgICAgdGhpcy5kaXJ0eUNv
bXBvbmVudHNMZW5ndGggPSBudWxsOworICAgIENhbGxiYWNrUXVldWUucmVsZWFzZSh0aGlzLmNh
bGxiYWNrUXVldWUpOworICAgIHRoaXMuY2FsbGJhY2tRdWV1ZSA9IG51bGw7CisgICAgUmVhY3RV
cGRhdGVzLlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24ucmVsZWFzZSh0aGlzLnJlY29uY2lsZVRy
YW5zYWN0aW9uKTsKKyAgICB0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uID0gbnVsbDsKKyAgfSwK
KworICBwZXJmb3JtOiBmdW5jdGlvbiAobWV0aG9kLCBzY29wZSwgYSkgeworICAgIC8vIEVzc2Vu
dGlhbGx5IGNhbGxzIGB0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uLnBlcmZvcm0obWV0aG9kLCBz
Y29wZSwgYSlgCisgICAgLy8gd2l0aCB0aGlzIHRyYW5zYWN0aW9uJ3Mgd3JhcHBlcnMgYXJvdW5k
IGl0LgorICAgIHJldHVybiBUcmFuc2FjdGlvbi5wZXJmb3JtLmNhbGwodGhpcywgdGhpcy5yZWNv
bmNpbGVUcmFuc2FjdGlvbi5wZXJmb3JtLCB0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uLCBtZXRo
b2QsIHNjb3BlLCBhKTsKKyAgfQorfSk7CisKK1Bvb2xlZENsYXNzLmFkZFBvb2xpbmdUbyhSZWFj
dFVwZGF0ZXNGbHVzaFRyYW5zYWN0aW9uKTsKKworZnVuY3Rpb24gYmF0Y2hlZFVwZGF0ZXMoY2Fs
bGJhY2ssIGEsIGIsIGMsIGQsIGUpIHsKKyAgZW5zdXJlSW5qZWN0ZWQoKTsKKyAgcmV0dXJuIGJh
dGNoaW5nU3RyYXRlZ3kuYmF0Y2hlZFVwZGF0ZXMoY2FsbGJhY2ssIGEsIGIsIGMsIGQsIGUpOwor
fQorCisvKioKKyAqIEFycmF5IGNvbXBhcmF0b3IgZm9yIFJlYWN0Q29tcG9uZW50cyBieSBtb3Vu
dCBvcmRlcmluZy4KKyAqCisgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBjMSBmaXJzdCBjb21w
b25lbnQgeW91J3JlIGNvbXBhcmluZworICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gYzIgc2Vj
b25kIGNvbXBvbmVudCB5b3UncmUgY29tcGFyaW5nCisgKiBAcmV0dXJuIHtudW1iZXJ9IFJldHVy
biB2YWx1ZSB1c2FibGUgYnkgQXJyYXkucHJvdG90eXBlLnNvcnQoKS4KKyAqLworZnVuY3Rpb24g
bW91bnRPcmRlckNvbXBhcmF0b3IoYzEsIGMyKSB7CisgIHJldHVybiBjMS5fbW91bnRPcmRlciAt
IGMyLl9tb3VudE9yZGVyOworfQorCitmdW5jdGlvbiBydW5CYXRjaGVkVXBkYXRlcyh0cmFuc2Fj
dGlvbikgeworICB2YXIgbGVuID0gdHJhbnNhY3Rpb24uZGlydHlDb21wb25lbnRzTGVuZ3RoOwor
ICAhKGxlbiA9PT0gZGlydHlDb21wb25lbnRzLmxlbmd0aCkgPyBwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRXhwZWN0ZWQgZmx1c2ggdHJh
bnNhY3Rpb25cJ3Mgc3RvcmVkIGRpcnR5LWNvbXBvbmVudHMgbGVuZ3RoICglcykgdG8gbWF0Y2gg
ZGlydHktY29tcG9uZW50cyBhcnJheSBsZW5ndGggKCVzKS4nLCBsZW4sIGRpcnR5Q29tcG9uZW50
cy5sZW5ndGgpIDogX3Byb2RJbnZhcmlhbnQoJzEyNCcsIGxlbiwgZGlydHlDb21wb25lbnRzLmxl
bmd0aCkgOiB2b2lkIDA7CisKKyAgLy8gU2luY2UgcmVjb25jaWxpbmcgYSBjb21wb25lbnQgaGln
aGVyIGluIHRoZSBvd25lciBoaWVyYXJjaHkgdXN1YWxseSAobm90CisgIC8vIGFsd2F5cyAtLSBz
ZWUgc2hvdWxkQ29tcG9uZW50VXBkYXRlKCkpIHdpbGwgcmVjb25jaWxlIGNoaWxkcmVuLCByZWNv
bmNpbGUKKyAgLy8gdGhlbSBiZWZvcmUgdGhlaXIgY2hpbGRyZW4gYnkgc29ydGluZyB0aGUgYXJy
YXkuCisgIGRpcnR5Q29tcG9uZW50cy5zb3J0KG1vdW50T3JkZXJDb21wYXJhdG9yKTsKKworICAv
LyBBbnkgdXBkYXRlcyBlbnF1ZXVlZCB3aGlsZSByZWNvbmNpbGluZyBtdXN0IGJlIHBlcmZvcm1l
ZCBhZnRlciB0aGlzIGVudGlyZQorICAvLyBiYXRjaC4gT3RoZXJ3aXNlLCBpZiBkaXJ0eUNvbXBv
bmVudHMgaXMgW0EsIEJdIHdoZXJlIEEgaGFzIGNoaWxkcmVuIEIgYW5kCisgIC8vIEMsIEIgY291
bGQgdXBkYXRlIHR3aWNlIGluIGEgc2luZ2xlIGJhdGNoIGlmIEMncyByZW5kZXIgZW5xdWV1ZXMg
YW4gdXBkYXRlCisgIC8vIHRvIEIgKHNpbmNlIEIgd291bGQgaGF2ZSBhbHJlYWR5IHVwZGF0ZWQs
IHdlIHNob3VsZCBza2lwIGl0LCBhbmQgdGhlIG9ubHkKKyAgLy8gd2F5IHdlIGNhbiBrbm93IHRv
IGRvIHNvIGlzIGJ5IGNoZWNraW5nIHRoZSBiYXRjaCBjb3VudGVyKS4KKyAgdXBkYXRlQmF0Y2hO
dW1iZXIrKzsKKworICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgLy8gSWYg
YSBjb21wb25lbnQgaXMgdW5tb3VudGVkIGJlZm9yZSBwZW5kaW5nIGNoYW5nZXMgYXBwbHksIGl0
IHdpbGwgc3RpbGwKKyAgICAvLyBiZSBoZXJlLCBidXQgd2UgYXNzdW1lIHRoYXQgaXQgaGFzIGNs
ZWFyZWQgaXRzIF9wZW5kaW5nQ2FsbGJhY2tzIGFuZAorICAgIC8vIHRoYXQgcGVyZm9ybVVwZGF0
ZUlmTmVjZXNzYXJ5IGlzIGEgbm9vcC4KKyAgICB2YXIgY29tcG9uZW50ID0gZGlydHlDb21wb25l
bnRzW2ldOworCisgICAgLy8gSWYgcGVyZm9ybVVwZGF0ZUlmTmVjZXNzYXJ5IGhhcHBlbnMgdG8g
ZW5xdWV1ZSBhbnkgbmV3IHVwZGF0ZXMsIHdlCisgICAgLy8gc2hvdWxkbid0IGV4ZWN1dGUgdGhl
IGNhbGxiYWNrcyB1bnRpbCB0aGUgbmV4dCByZW5kZXIgaGFwcGVucywgc28KKyAgICAvLyBzdGFz
aCB0aGUgY2FsbGJhY2tzIGZpcnN0CisgICAgdmFyIGNhbGxiYWNrcyA9IGNvbXBvbmVudC5fcGVu
ZGluZ0NhbGxiYWNrczsKKyAgICBjb21wb25lbnQuX3BlbmRpbmdDYWxsYmFja3MgPSBudWxsOwor
CisgICAgdmFyIG1hcmtlck5hbWU7CisgICAgaWYgKFJlYWN0RmVhdHVyZUZsYWdzLmxvZ1RvcExl
dmVsUmVuZGVycykgeworICAgICAgdmFyIG5hbWVkQ29tcG9uZW50ID0gY29tcG9uZW50OworICAg
ICAgLy8gRHVjayB0eXBlIFRvcExldmVsV3JhcHBlci4gVGhpcyBpcyBwcm9iYWJseSBhbHdheXMg
dHJ1ZS4KKyAgICAgIGlmIChjb21wb25lbnQuX2N1cnJlbnRFbGVtZW50LnR5cGUuaXNSZWFjdFRv
cExldmVsV3JhcHBlcikgeworICAgICAgICBuYW1lZENvbXBvbmVudCA9IGNvbXBvbmVudC5fcmVu
ZGVyZWRDb21wb25lbnQ7CisgICAgICB9CisgICAgICBtYXJrZXJOYW1lID0gJ1JlYWN0IHVwZGF0
ZTogJyArIG5hbWVkQ29tcG9uZW50LmdldE5hbWUoKTsKKyAgICAgIGNvbnNvbGUudGltZShtYXJr
ZXJOYW1lKTsKKyAgICB9CisKKyAgICBSZWFjdFJlY29uY2lsZXIucGVyZm9ybVVwZGF0ZUlmTmVj
ZXNzYXJ5KGNvbXBvbmVudCwgdHJhbnNhY3Rpb24ucmVjb25jaWxlVHJhbnNhY3Rpb24sIHVwZGF0
ZUJhdGNoTnVtYmVyKTsKKworICAgIGlmIChtYXJrZXJOYW1lKSB7CisgICAgICBjb25zb2xlLnRp
bWVFbmQobWFya2VyTmFtZSk7CisgICAgfQorCisgICAgaWYgKGNhbGxiYWNrcykgeworICAgICAg
Zm9yICh2YXIgaiA9IDA7IGogPCBjYWxsYmFja3MubGVuZ3RoOyBqKyspIHsKKyAgICAgICAgdHJh
bnNhY3Rpb24uY2FsbGJhY2tRdWV1ZS5lbnF1ZXVlKGNhbGxiYWNrc1tqXSwgY29tcG9uZW50Lmdl
dFB1YmxpY0luc3RhbmNlKCkpOworICAgICAgfQorICAgIH0KKyAgfQorfQorCit2YXIgZmx1c2hC
YXRjaGVkVXBkYXRlcyA9IGZ1bmN0aW9uICgpIHsKKyAgLy8gUmVhY3RVcGRhdGVzRmx1c2hUcmFu
c2FjdGlvbidzIHdyYXBwZXJzIHdpbGwgY2xlYXIgdGhlIGRpcnR5Q29tcG9uZW50cworICAvLyBh
cnJheSBhbmQgcGVyZm9ybSBhbnkgdXBkYXRlcyBlbnF1ZXVlZCBieSBtb3VudC1yZWFkeSBoYW5k
bGVycyAoaS5lLiwKKyAgLy8gY29tcG9uZW50RGlkVXBkYXRlKSBidXQgd2UgbmVlZCB0byBjaGVj
ayBoZXJlIHRvbyBpbiBvcmRlciB0byBjYXRjaAorICAvLyB1cGRhdGVzIGVucXVldWVkIGJ5IHNl
dFN0YXRlIGNhbGxiYWNrcyBhbmQgYXNhcCBjYWxscy4KKyAgd2hpbGUgKGRpcnR5Q29tcG9uZW50
cy5sZW5ndGggfHwgYXNhcEVucXVldWVkKSB7CisgICAgaWYgKGRpcnR5Q29tcG9uZW50cy5sZW5n
dGgpIHsKKyAgICAgIHZhciB0cmFuc2FjdGlvbiA9IFJlYWN0VXBkYXRlc0ZsdXNoVHJhbnNhY3Rp
b24uZ2V0UG9vbGVkKCk7CisgICAgICB0cmFuc2FjdGlvbi5wZXJmb3JtKHJ1bkJhdGNoZWRVcGRh
dGVzLCBudWxsLCB0cmFuc2FjdGlvbik7CisgICAgICBSZWFjdFVwZGF0ZXNGbHVzaFRyYW5zYWN0
aW9uLnJlbGVhc2UodHJhbnNhY3Rpb24pOworICAgIH0KKworICAgIGlmIChhc2FwRW5xdWV1ZWQp
IHsKKyAgICAgIGFzYXBFbnF1ZXVlZCA9IGZhbHNlOworICAgICAgdmFyIHF1ZXVlID0gYXNhcENh
bGxiYWNrUXVldWU7CisgICAgICBhc2FwQ2FsbGJhY2tRdWV1ZSA9IENhbGxiYWNrUXVldWUuZ2V0
UG9vbGVkKCk7CisgICAgICBxdWV1ZS5ub3RpZnlBbGwoKTsKKyAgICAgIENhbGxiYWNrUXVldWUu
cmVsZWFzZShxdWV1ZSk7CisgICAgfQorICB9Cit9OworCisvKioKKyAqIE1hcmsgYSBjb21wb25l
bnQgYXMgbmVlZGluZyBhIHJlcmVuZGVyLCBhZGRpbmcgYW4gb3B0aW9uYWwgY2FsbGJhY2sgdG8g
YQorICogbGlzdCBvZiBmdW5jdGlvbnMgd2hpY2ggd2lsbCBiZSBleGVjdXRlZCBvbmNlIHRoZSBy
ZXJlbmRlciBvY2N1cnMuCisgKi8KK2Z1bmN0aW9uIGVucXVldWVVcGRhdGUoY29tcG9uZW50KSB7
CisgIGVuc3VyZUluamVjdGVkKCk7CisKKyAgLy8gVmFyaW91cyBwYXJ0cyBvZiBvdXIgY29kZSAo
c3VjaCBhcyBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCdzCisgIC8vIF9yZW5kZXJWYWxpZGF0ZWRD
b21wb25lbnQpIGFzc3VtZSB0aGF0IGNhbGxzIHRvIHJlbmRlciBhcmVuJ3QgbmVzdGVkOworICAv
LyB2ZXJpZnkgdGhhdCB0aGF0J3MgdGhlIGNhc2UuIChUaGlzIGlzIGNhbGxlZCBieSBlYWNoIHRv
cC1sZXZlbCB1cGRhdGUKKyAgLy8gZnVuY3Rpb24sIGxpa2Ugc2V0U3RhdGUsIGZvcmNlVXBkYXRl
LCBldGMuOyBjcmVhdGlvbiBhbmQKKyAgLy8gZGVzdHJ1Y3Rpb24gb2YgdG9wLWxldmVsIGNvbXBv
bmVudHMgaXMgZ3VhcmRlZCBpbiBSZWFjdE1vdW50LikKKworICBpZiAoIWJhdGNoaW5nU3RyYXRl
Z3kuaXNCYXRjaGluZ1VwZGF0ZXMpIHsKKyAgICBiYXRjaGluZ1N0cmF0ZWd5LmJhdGNoZWRVcGRh
dGVzKGVucXVldWVVcGRhdGUsIGNvbXBvbmVudCk7CisgICAgcmV0dXJuOworICB9CisKKyAgZGly
dHlDb21wb25lbnRzLnB1c2goY29tcG9uZW50KTsKKyAgaWYgKGNvbXBvbmVudC5fdXBkYXRlQmF0
Y2hOdW1iZXIgPT0gbnVsbCkgeworICAgIGNvbXBvbmVudC5fdXBkYXRlQmF0Y2hOdW1iZXIgPSB1
cGRhdGVCYXRjaE51bWJlciArIDE7CisgIH0KK30KKworLyoqCisgKiBFbnF1ZXVlIGEgY2FsbGJh
Y2sgdG8gYmUgcnVuIGF0IHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgYmF0Y2hpbmcgY3ljbGUuIFRo
cm93cworICogaWYgbm8gdXBkYXRlcyBhcmUgY3VycmVudGx5IGJlaW5nIHBlcmZvcm1lZC4KKyAq
LworZnVuY3Rpb24gYXNhcChjYWxsYmFjaywgY29udGV4dCkgeworICAhYmF0Y2hpbmdTdHJhdGVn
eS5pc0JhdGNoaW5nVXBkYXRlcyA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlv
bicgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdFVwZGF0ZXMuYXNhcDogQ2FuXCd0IGVucXVldWUg
YW4gYXNhcCBjYWxsYmFjayBpbiBhIGNvbnRleHQgd2hlcmV1cGRhdGVzIGFyZSBub3QgYmVpbmcg
YmF0Y2hlZC4nKSA6IF9wcm9kSW52YXJpYW50KCcxMjUnKSA6IHZvaWQgMDsKKyAgYXNhcENhbGxi
YWNrUXVldWUuZW5xdWV1ZShjYWxsYmFjaywgY29udGV4dCk7CisgIGFzYXBFbnF1ZXVlZCA9IHRy
dWU7Cit9CisKK3ZhciBSZWFjdFVwZGF0ZXNJbmplY3Rpb24gPSB7CisgIGluamVjdFJlY29uY2ls
ZVRyYW5zYWN0aW9uOiBmdW5jdGlvbiAoUmVjb25jaWxlVHJhbnNhY3Rpb24pIHsKKyAgICAhUmVj
b25jaWxlVHJhbnNhY3Rpb24gPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24n
ID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3RVcGRhdGVzOiBtdXN0IHByb3ZpZGUgYSByZWNvbmNp
bGUgdHJhbnNhY3Rpb24gY2xhc3MnKSA6IF9wcm9kSW52YXJpYW50KCcxMjYnKSA6IHZvaWQgMDsK
KyAgICBSZWFjdFVwZGF0ZXMuUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbiA9IFJlY29uY2lsZVRy
YW5zYWN0aW9uOworICB9LAorCisgIGluamVjdEJhdGNoaW5nU3RyYXRlZ3k6IGZ1bmN0aW9uIChf
YmF0Y2hpbmdTdHJhdGVneSkgeworICAgICFfYmF0Y2hpbmdTdHJhdGVneSA/IHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdFVwZGF0
ZXM6IG11c3QgcHJvdmlkZSBhIGJhdGNoaW5nIHN0cmF0ZWd5JykgOiBfcHJvZEludmFyaWFudCgn
MTI3JykgOiB2b2lkIDA7CisgICAgISh0eXBlb2YgX2JhdGNoaW5nU3RyYXRlZ3kuYmF0Y2hlZFVw
ZGF0ZXMgPT09ICdmdW5jdGlvbicpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0VXBkYXRlczogbXVzdCBwcm92aWRlIGEgYmF0
Y2hlZFVwZGF0ZXMoKSBmdW5jdGlvbicpIDogX3Byb2RJbnZhcmlhbnQoJzEyOCcpIDogdm9pZCAw
OworICAgICEodHlwZW9mIF9iYXRjaGluZ1N0cmF0ZWd5LmlzQmF0Y2hpbmdVcGRhdGVzID09PSAn
Ym9vbGVhbicpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFy
aWFudChmYWxzZSwgJ1JlYWN0VXBkYXRlczogbXVzdCBwcm92aWRlIGFuIGlzQmF0Y2hpbmdVcGRh
dGVzIGJvb2xlYW4gYXR0cmlidXRlJykgOiBfcHJvZEludmFyaWFudCgnMTI5JykgOiB2b2lkIDA7
CisgICAgYmF0Y2hpbmdTdHJhdGVneSA9IF9iYXRjaGluZ1N0cmF0ZWd5OworICB9Cit9OworCit2
YXIgUmVhY3RVcGRhdGVzID0geworICAvKioKKyAgICogUmVhY3QgcmVmZXJlbmNlcyBgUmVhY3RS
ZWNvbmNpbGVUcmFuc2FjdGlvbmAgdXNpbmcgdGhpcyBwcm9wZXJ0eSBpbiBvcmRlcgorICAgKiB0
byBhbGxvdyBkZXBlbmRlbmN5IGluamVjdGlvbi4KKyAgICoKKyAgICogQGludGVybmFsCisgICAq
LworICBSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uOiBudWxsLAorCisgIGJhdGNoZWRVcGRhdGVz
OiBiYXRjaGVkVXBkYXRlcywKKyAgZW5xdWV1ZVVwZGF0ZTogZW5xdWV1ZVVwZGF0ZSwKKyAgZmx1
c2hCYXRjaGVkVXBkYXRlczogZmx1c2hCYXRjaGVkVXBkYXRlcywKKyAgaW5qZWN0aW9uOiBSZWFj
dFVwZGF0ZXNJbmplY3Rpb24sCisgIGFzYXA6IGFzYXAKK307CisKK21vZHVsZS5leHBvcnRzID0g
UmVhY3RVcGRhdGVzOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0VmVyc2lvbi5q
cyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0VmVy
c2lvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iNTUyZjcyM2M5NDM5ZDg3MTBjNzg2OTg1NGYyYzk4Mzg3NjE2
MDQzCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3Jl
YWN0LWRvbS9saWIvUmVhY3RWZXJzaW9uLmpzCkBAIC0wLDAgKzEsMTMgQEAKKy8qKgorICogQ29w
eXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0
eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK21vZHVsZS5leHBvcnRzID0g
JzE1LjQuMCc7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVzcG9uZGVyRXZlbnRQbHVn
aW4uanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZXNw
b25kZXJFdmVudFBsdWdpbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMmI5YmVmY2RlNjhjMTAzMzUzYmY0ZDZm
MjgwMWRhZmUyMThkODcyCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9k
ZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVzcG9uZGVyRXZlbnRQbHVnaW4uanMKQEAgLTAsMCAr
MSw1MDcgQEAKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4K
KyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNl
bnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0
aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRF
TlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7
CisKK3ZhciBFdmVudFBsdWdpblV0aWxzID0gcmVxdWlyZSgnLi9FdmVudFBsdWdpblV0aWxzJyk7
Cit2YXIgRXZlbnRQcm9wYWdhdG9ycyA9IHJlcXVpcmUoJy4vRXZlbnRQcm9wYWdhdG9ycycpOwor
dmFyIFJlc3BvbmRlclN5bnRoZXRpY0V2ZW50ID0gcmVxdWlyZSgnLi9SZXNwb25kZXJTeW50aGV0
aWNFdmVudCcpOwordmFyIFJlc3BvbmRlclRvdWNoSGlzdG9yeVN0b3JlID0gcmVxdWlyZSgnLi9S
ZXNwb25kZXJUb3VjaEhpc3RvcnlTdG9yZScpOworCit2YXIgYWNjdW11bGF0ZSA9IHJlcXVpcmUo
Jy4vYWNjdW11bGF0ZScpOworCit2YXIgaXNTdGFydGlzaCA9IEV2ZW50UGx1Z2luVXRpbHMuaXNT
dGFydGlzaDsKK3ZhciBpc01vdmVpc2ggPSBFdmVudFBsdWdpblV0aWxzLmlzTW92ZWlzaDsKK3Zh
ciBpc0VuZGlzaCA9IEV2ZW50UGx1Z2luVXRpbHMuaXNFbmRpc2g7Cit2YXIgZXhlY3V0ZURpcmVj
dERpc3BhdGNoID0gRXZlbnRQbHVnaW5VdGlscy5leGVjdXRlRGlyZWN0RGlzcGF0Y2g7Cit2YXIg
aGFzRGlzcGF0Y2hlcyA9IEV2ZW50UGx1Z2luVXRpbHMuaGFzRGlzcGF0Y2hlczsKK3ZhciBleGVj
dXRlRGlzcGF0Y2hlc0luT3JkZXJTdG9wQXRUcnVlID0gRXZlbnRQbHVnaW5VdGlscy5leGVjdXRl
RGlzcGF0Y2hlc0luT3JkZXJTdG9wQXRUcnVlOworCisvKioKKyAqIEluc3RhbmNlIG9mIGVsZW1l
bnQgdGhhdCBzaG91bGQgcmVzcG9uZCB0byB0b3VjaC9tb3ZlIHR5cGVzIG9mIGludGVyYWN0aW9u
cywKKyAqIGFzIGluZGljYXRlZCBleHBsaWNpdGx5IGJ5IHJlbGV2YW50IGNhbGxiYWNrcy4KKyAq
LwordmFyIHJlc3BvbmRlckluc3QgPSBudWxsOworCisvKioKKyAqIENvdW50IG9mIGN1cnJlbnQg
dG91Y2hlcy4gQSB0ZXh0SW5wdXQgc2hvdWxkIGJlY29tZSByZXNwb25kZXIgaWZmIHRoZQorICog
c2VsZWN0aW9uIGNoYW5nZXMgd2hpbGUgdGhlcmUgaXMgYSB0b3VjaCBvbiB0aGUgc2NyZWVuLgor
ICovCit2YXIgdHJhY2tlZFRvdWNoQ291bnQgPSAwOworCisvKioKKyAqIExhc3QgcmVwb3J0ZWQg
bnVtYmVyIG9mIGFjdGl2ZSB0b3VjaGVzLgorICovCit2YXIgcHJldmlvdXNBY3RpdmVUb3VjaGVz
ID0gMDsKKwordmFyIGNoYW5nZVJlc3BvbmRlciA9IGZ1bmN0aW9uIChuZXh0UmVzcG9uZGVySW5z
dCwgYmxvY2tIb3N0UmVzcG9uZGVyKSB7CisgIHZhciBvbGRSZXNwb25kZXJJbnN0ID0gcmVzcG9u
ZGVySW5zdDsKKyAgcmVzcG9uZGVySW5zdCA9IG5leHRSZXNwb25kZXJJbnN0OworICBpZiAoUmVz
cG9uZGVyRXZlbnRQbHVnaW4uR2xvYmFsUmVzcG9uZGVySGFuZGxlciAhPT0gbnVsbCkgeworICAg
IFJlc3BvbmRlckV2ZW50UGx1Z2luLkdsb2JhbFJlc3BvbmRlckhhbmRsZXIub25DaGFuZ2Uob2xk
UmVzcG9uZGVySW5zdCwgbmV4dFJlc3BvbmRlckluc3QsIGJsb2NrSG9zdFJlc3BvbmRlcik7Cisg
IH0KK307CisKK3ZhciBldmVudFR5cGVzID0geworICAvKioKKyAgICogT24gYSBgdG91Y2hTdGFy
dGAvYG1vdXNlRG93bmAsIGlzIGl0IGRlc2lyZWQgdGhhdCB0aGlzIGVsZW1lbnQgYmVjb21lIHRo
ZQorICAgKiByZXNwb25kZXI/CisgICAqLworICBzdGFydFNob3VsZFNldFJlc3BvbmRlcjogewor
ICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7CisgICAgICBidWJibGVkOiAnb25TdGFydFNo
b3VsZFNldFJlc3BvbmRlcicsCisgICAgICBjYXB0dXJlZDogJ29uU3RhcnRTaG91bGRTZXRSZXNw
b25kZXJDYXB0dXJlJworICAgIH0KKyAgfSwKKworICAvKioKKyAgICogT24gYSBgc2Nyb2xsYCwg
aXMgaXQgZGVzaXJlZCB0aGF0IHRoaXMgZWxlbWVudCBiZWNvbWUgdGhlIHJlc3BvbmRlcj8gVGhp
cworICAgKiBpcyB1c3VhbGx5IG5vdCBuZWVkZWQsIGJ1dCBzaG91bGQgYmUgdXNlZCB0byByZXRy
b2FjdGl2ZWx5IGluZmVyIHRoYXQgYQorICAgKiBgdG91Y2hTdGFydGAgaGFkIG9jY3VycmVkIGR1
cmluZyBtb21lbnR1bSBzY3JvbGwuIER1cmluZyBhIG1vbWVudHVtIHNjcm9sbCwKKyAgICogYSB0
b3VjaCBzdGFydCB3aWxsIGJlIGltbWVkaWF0ZWx5IGZvbGxvd2VkIGJ5IGEgc2Nyb2xsIGV2ZW50
IGlmIHRoZSB2aWV3IGlzCisgICAqIGN1cnJlbnRseSBzY3JvbGxpbmcuCisgICAqCisgICAqIFRP
RE86IFRoaXMgc2hvdWxkbid0IGJ1YmJsZS4KKyAgICovCisgIHNjcm9sbFNob3VsZFNldFJlc3Bv
bmRlcjogeworICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7CisgICAgICBidWJibGVkOiAn
b25TY3JvbGxTaG91bGRTZXRSZXNwb25kZXInLAorICAgICAgY2FwdHVyZWQ6ICdvblNjcm9sbFNo
b3VsZFNldFJlc3BvbmRlckNhcHR1cmUnCisgICAgfQorICB9LAorCisgIC8qKgorICAgKiBPbiB0
ZXh0IHNlbGVjdGlvbiBjaGFuZ2UsIHNob3VsZCB0aGlzIGVsZW1lbnQgYmVjb21lIHRoZSByZXNw
b25kZXI/IFRoaXMKKyAgICogaXMgbmVlZGVkIGZvciB0ZXh0IGlucHV0cyBvciBvdGhlciB2aWV3
cyB3aXRoIG5hdGl2ZSBzZWxlY3Rpb24sIHNvIHRoZQorICAgKiBKUyB2aWV3IGNhbiBjbGFpbSB0
aGUgcmVzcG9uZGVyLgorICAgKgorICAgKiBUT0RPOiBUaGlzIHNob3VsZG4ndCBidWJibGUuCisg
ICAqLworICBzZWxlY3Rpb25DaGFuZ2VTaG91bGRTZXRSZXNwb25kZXI6IHsKKyAgICBwaGFzZWRS
ZWdpc3RyYXRpb25OYW1lczogeworICAgICAgYnViYmxlZDogJ29uU2VsZWN0aW9uQ2hhbmdlU2hv
dWxkU2V0UmVzcG9uZGVyJywKKyAgICAgIGNhcHR1cmVkOiAnb25TZWxlY3Rpb25DaGFuZ2VTaG91
bGRTZXRSZXNwb25kZXJDYXB0dXJlJworICAgIH0KKyAgfSwKKworICAvKioKKyAgICogT24gYSBg
dG91Y2hNb3ZlYC9gbW91c2VNb3ZlYCwgaXMgaXQgZGVzaXJlZCB0aGF0IHRoaXMgZWxlbWVudCBi
ZWNvbWUgdGhlCisgICAqIHJlc3BvbmRlcj8KKyAgICovCisgIG1vdmVTaG91bGRTZXRSZXNwb25k
ZXI6IHsKKyAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczogeworICAgICAgYnViYmxlZDogJ29u
TW92ZVNob3VsZFNldFJlc3BvbmRlcicsCisgICAgICBjYXB0dXJlZDogJ29uTW92ZVNob3VsZFNl
dFJlc3BvbmRlckNhcHR1cmUnCisgICAgfQorICB9LAorCisgIC8qKgorICAgKiBEaXJlY3QgcmVz
cG9uZGVyIGV2ZW50cyBkaXNwYXRjaGVkIGRpcmVjdGx5IHRvIHJlc3BvbmRlci4gRG8gbm90IGJ1
YmJsZS4KKyAgICovCisgIHJlc3BvbmRlclN0YXJ0OiB7IHJlZ2lzdHJhdGlvbk5hbWU6ICdvblJl
c3BvbmRlclN0YXJ0JyB9LAorICByZXNwb25kZXJNb3ZlOiB7IHJlZ2lzdHJhdGlvbk5hbWU6ICdv
blJlc3BvbmRlck1vdmUnIH0sCisgIHJlc3BvbmRlckVuZDogeyByZWdpc3RyYXRpb25OYW1lOiAn
b25SZXNwb25kZXJFbmQnIH0sCisgIHJlc3BvbmRlclJlbGVhc2U6IHsgcmVnaXN0cmF0aW9uTmFt
ZTogJ29uUmVzcG9uZGVyUmVsZWFzZScgfSwKKyAgcmVzcG9uZGVyVGVybWluYXRpb25SZXF1ZXN0
OiB7CisgICAgcmVnaXN0cmF0aW9uTmFtZTogJ29uUmVzcG9uZGVyVGVybWluYXRpb25SZXF1ZXN0
JworICB9LAorICByZXNwb25kZXJHcmFudDogeyByZWdpc3RyYXRpb25OYW1lOiAnb25SZXNwb25k
ZXJHcmFudCcgfSwKKyAgcmVzcG9uZGVyUmVqZWN0OiB7IHJlZ2lzdHJhdGlvbk5hbWU6ICdvblJl
c3BvbmRlclJlamVjdCcgfSwKKyAgcmVzcG9uZGVyVGVybWluYXRlOiB7IHJlZ2lzdHJhdGlvbk5h
bWU6ICdvblJlc3BvbmRlclRlcm1pbmF0ZScgfQorfTsKKworLyoqCisgKgorICogUmVzcG9uZGVy
IFN5c3RlbToKKyAqIC0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiAtIEEgZ2xvYmFsLCBzb2xpdGFy
eSAiaW50ZXJhY3Rpb24gbG9jayIgb24gYSB2aWV3LgorICogLSBJZiBhIG5vZGUgYmVjb21lcyB0
aGUgcmVzcG9uZGVyLCBpdCBzaG91bGQgY29udmV5IHZpc3VhbCBmZWVkYmFjaworICogICBpbW1l
ZGlhdGVseSB0byBpbmRpY2F0ZSBzbywgZWl0aGVyIGJ5IGhpZ2hsaWdodGluZyBvciBtb3Zpbmcg
YWNjb3JkaW5nbHkuCisgKiAtIFRvIGJlIHRoZSByZXNwb25kZXIgbWVhbnMsIHRoYXQgdG91Y2hl
cyBhcmUgZXhjbHVzaXZlbHkgaW1wb3J0YW50IHRvIHRoYXQKKyAqICAgcmVzcG9uZGVyIHZpZXcs
IGFuZCBubyBvdGhlciB2aWV3LgorICogLSBXaGlsZSB0b3VjaGVzIGFyZSBzdGlsbCBvY2N1cnJp
bmcsIHRoZSByZXNwb25kZXIgbG9jayBjYW4gYmUgdHJhbnNmZXJyZWQgdG8KKyAqICAgYSBuZXcg
dmlldywgYnV0IG9ubHkgdG8gaW5jcmVhc2luZ2x5ICJoaWdoZXIiIHZpZXdzIChtZWFuaW5nIGFu
Y2VzdG9ycyBvZgorICogICB0aGUgY3VycmVudCByZXNwb25kZXIpLgorICoKKyAqIFJlc3BvbmRl
ciBiZWluZyBncmFudGVkOgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogLSBU
b3VjaCBzdGFydHMsIG1vdmVzLCBhbmQgc2Nyb2xscyBjYW4gY2F1c2UgYW4gSUQgdG8gYmVjb21l
IHRoZSByZXNwb25kZXIuCisgKiAtIFdlIGNhcHR1cmUvYnViYmxlIGBzdGFydFNob3VsZFNldFJl
c3BvbmRlcmAvYG1vdmVTaG91bGRTZXRSZXNwb25kZXJgIHRvCisgKiAgIHRoZSAiYXBwcm9wcmlh
dGUgcGxhY2UiLgorICogLSBJZiBub3RoaW5nIGlzIGN1cnJlbnRseSB0aGUgcmVzcG9uZGVyLCB0
aGUgImFwcHJvcHJpYXRlIHBsYWNlIiBpcyB0aGUKKyAqICAgaW5pdGlhdGluZyBldmVudCdzIGB0
YXJnZXRJRGAuCisgKiAtIElmIHNvbWV0aGluZyAqaXMqIGFscmVhZHkgdGhlIHJlc3BvbmRlciwg
dGhlICJhcHByb3ByaWF0ZSBwbGFjZSIgaXMgdGhlCisgKiAgIGZpcnN0IGNvbW1vbiBhbmNlc3Rv
ciBvZiB0aGUgZXZlbnQgdGFyZ2V0IGFuZCB0aGUgY3VycmVudCBgcmVzcG9uZGVySW5zdGAuCisg
KiAtIFNvbWUgbmVnb3RpYXRpb24gaGFwcGVuczogU2VlIHRoZSB0aW1pbmcgZGlhZ3JhbSBiZWxv
dy4KKyAqIC0gU2Nyb2xsZWQgdmlld3MgYXV0b21hdGljYWxseSBiZWNvbWUgcmVzcG9uZGVyLiBU
aGUgcmVhc29uaW5nIGlzIHRoYXQgYQorICogICBwbGF0Zm9ybSBzY3JvbGwgdmlldyB0aGF0IGlz
bid0IGJ1aWx0IG9uIHRvcCBvZiB0aGUgcmVzcG9uZGVyIHN5c3RlbSBoYXMKKyAqICAgYmVnYW4g
c2Nyb2xsaW5nLCBhbmQgdGhlIGFjdGl2ZSByZXNwb25kZXIgbXVzdCBub3cgYmUgbm90aWZpZWQg
dGhhdCB0aGUKKyAqICAgaW50ZXJhY3Rpb24gaXMgbm8gbG9uZ2VyIGxvY2tlZCB0byBpdCAtIHRo
ZSBzeXN0ZW0gaGFzIHRha2VuIG92ZXIuCisgKgorICogLSBSZXNwb25kZXIgYmVpbmcgcmVsZWFz
ZWQ6CisgKiAgIEFzIHNvb24gYXMgbm8gbW9yZSB0b3VjaGVzIHRoYXQgKnN0YXJ0ZWQqIGluc2lk
ZSBvZiBkZXNjZW5kYW50cyBvZiB0aGUKKyAqICAgKmN1cnJlbnQqIHJlc3BvbmRlckluc3QsIGFu
IGBvblJlc3BvbmRlclJlbGVhc2VgIGV2ZW50IGlzIGRpc3BhdGNoZWQgdG8gdGhlCisgKiAgIGN1
cnJlbnQgcmVzcG9uZGVyLCBhbmQgdGhlIHJlc3BvbmRlciBsb2NrIGlzIHJlbGVhc2VkLgorICoK
KyAqIFRPRE86CisgKiAtIG9uICJlbmQiLCBhIGNhbGxiYWNrIGhvb2sgZm9yIGBvblJlc3BvbmRl
ckVuZFNob3VsZFJlbWFpblJlc3BvbmRlcmAgdGhhdAorICogICBkZXRlcm1pbmVzIGlmIHRoZSBy
ZXNwb25kZXIgbG9jayBzaG91bGQgcmVtYWluLgorICogLSBJZiBhIHZpZXcgc2hvdWxkbid0ICJy
ZW1haW4iIHRoZSByZXNwb25kZXIsIGFueSBhY3RpdmUgdG91Y2hlcyBzaG91bGQgYnkKKyAqICAg
ZGVmYXVsdCBiZSBjb25zaWRlcmVkICJkZWFkIiBhbmQgZG8gbm90IGluZmx1ZW5jZSBmdXR1cmUg
bmVnb3RpYXRpb25zIG9yCisgKiAgIGJ1YmJsZSBwYXRocy4gSXQgc2hvdWxkIGJlIGFzIGlmIHRo
b3NlIHRvdWNoZXMgZG8gbm90IGV4aXN0LgorICogLS0gRm9yIG11bHRpdG91Y2g6IFVzdWFsbHkg
YSB0cmFuc2xhdGUteiB3aWxsIGNob29zZSB0byAicmVtYWluIiByZXNwb25kZXIKKyAqICBhZnRl
ciBvbmUgb3V0IG9mIG1hbnkgdG91Y2hlcyBlbmRlZC4gRm9yIHRyYW5zbGF0ZS15LCB1c3VhbGx5
IHRoZSB2aWV3CisgKiAgZG9lc24ndCB3aXNoIHRvICJyZW1haW4iIHJlc3BvbmRlciBhZnRlciBv
bmUgb2YgbWFueSB0b3VjaGVzIGVuZC4KKyAqIC0gQ29uc2lkZXIgYnVpbGRpbmcgdGhpcyBvbiB0
b3Agb2YgYSBgc3RvcFByb3BhZ2F0aW9uYCBtb2RlbCBzaW1pbGFyIHRvCisgKiAgIGBXM0NgIGV2
ZW50cy4KKyAqIC0gRW5zdXJlIHRoYXQgYG9uUmVzcG9uZGVyVGVybWluYXRlYCBpcyBjYWxsZWQg
b24gdG91Y2ggY2FuY2Vscywgd2hldGhlciBvcgorICogICBub3QgYG9uUmVzcG9uZGVyVGVybWlu
YXRpb25SZXF1ZXN0YCByZXR1cm5zIGB0cnVlYCBvciBgZmFsc2VgLgorICoKKyAqLworCisvKiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5lZ290aWF0aW9uIFBl
cmZvcm1lZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvICAgICAgICAgICAgICAgICAgICAgICAgIFwKK1Byb2Nlc3MgbG93IGxldmVs
IGV2ZW50cyB0byAgICArICAgICBDdXJyZW50IFJlc3BvbmRlciAgICAgICsgICB3YW50c1Jlc3Bv
bmRlcklECitkZXRlcm1pbmUgd2hvIHRvIHBlcmZvcm0gbmVnb3QtfCAgIChpZiBhbnkgZXhpc3Rz
IGF0IGFsbCkgICB8CitpYXRpb24vdHJhbnNpdGlvbiAgICAgICAgICAgICAgfCBPdGhlcndpc2Ug
anVzdCBwYXNzIHRocm91Z2h8CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKworQnViYmxlIHRvIGZp
bmQgZmlyc3QgSUQgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAordG8gcmV0
dXJuIHRydWU6d2FudHNSZXNwb25kZXJJRHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfAorICAgICArLS0tLS0tLS0tLS0tLSsgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfAorICAgICB8IG9uVG91Y2hTdGFydHwgICAgICAgICAgIHwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfAorICAgICArLS0tLS0tKy0tLS0tLSsgICAgIG5vbmUgIHwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgfCAgICAgICAgICAgIHJldHVybnwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tdi0tLS0tLS0tLS0tLS0r
dHJ1ZXwgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgfAorfG9uU3RhcnRTaG91bGRTZXRSZXNw
b25kZXJ8LS0tLS0+fG9uUmVzcG9uZGVyU3RhcnQgKGN1cikgIHw8LS0tLS0tLS0tLS0rCisrLS0t
LS0tLS0tLS0rLS0tLS0tLS0tLS0tLSsgICAgfCArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyB8
ICAgICAgICAgIHwKKyAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgKy0tLS0tLS0tKy0tLS0tLS0rCisgICAgICAgICAgICB8IHJldHVy
bmVkIHRydWUgZm9yfCAgICAgICBmYWxzZTpSRUpFQ1QgKy0tLS0tLS0tPnxvblJlc3BvbmRlclJl
amVjdAorICAgICAgICAgICAgfCB3YW50c1Jlc3BvbmRlcklEIHwgICAgICAgICAgICAgICAgICAg
IHwgICAgICAgfCArLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgICAgIHwgKG5vdyBhdHRlbXB0
ICAgICB8ICstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0rIHwKKyAgICAgICAgICAgIHwgIGhhbmRv
ZmYpICAgICAgICB8IHwgICBvblJlc3BvbmRlciAgICAgICAgICB8IHwKKyAgICAgICAgICAgICst
LS0tLS0tLS0tLS0tLS0tLS0tPnwgICAgICBUZXJtaW5hdGlvblJlcXVlc3R8IHwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8ICstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0rIHwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICB8ICAgICAg
IHwgKy0tLS0tLS0tLS0tLS0tLS0rCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg
ICAgICAgIHRydWU6R1JBTlQgKy0tLS0tLS0tPnxvblJlc3BvbmRlckdyYW50fAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCArLS0t
LS0tLS0rLS0tLS0tLSsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICstLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0rIHwgICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgfCAgIG9uUmVzcG9uZGVyVGVybWluYXRlIHw8LS0tLS0tLS0tLS0rCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCArLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tKyB8Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgfCAgICAg
ICB8ICstLS0tLS0tLS0tLS0tLS0tKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
ICAgICAgICAgICAgICAgICAgICstLS0tLS0tLT58b25SZXNwb25kZXJTdGFydHwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKy0t
LS0tLS0tLS0tLS0tLS0rCitCdWJibGUgdG8gZmluZCBmaXJzdCBJRCAgICAgICAgfCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8Cit0byByZXR1cm4gdHJ1ZTp3YW50c1Jlc3BvbmRlcklEfCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICstLS0tLS0tLS0tLS0tKyAg
ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgIHwgb25Ub3VjaE1v
dmUgfCAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICstLS0t
LS0rLS0tLS0tKyAgICAgbm9uZSAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAg
ICAgICAgICB8ICAgICAgICAgICAgcmV0dXJufCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
CisrLS0tLS0tLS0tLS12LS0tLS0tLS0tLS0tLSt0cnVlfCArLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tKyB8Cit8b25Nb3ZlU2hvdWxkU2V0UmVzcG9uZGVyIHwtLS0tLT58b25SZXNwb25kZXJNb3Zl
IChjdXIpICAgfDwtLS0tLS0tLS0tLSsKKystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKyAgICB8
ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIHwgICAgICAgICAgfAorICAgICAgICAgICAgfCAg
ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCArLS0tLS0tLS0r
LS0tLS0tLSsKKyAgICAgICAgICAgIHwgcmV0dXJuZWQgdHJ1ZSBmb3J8ICAgICAgIGZhbHNlOlJF
SkVDVCArLS0tLS0tLS0+fG9uUmVzcG9uZGVyUmVqZWN8CisgICAgICAgICAgICB8IHdhbnRzUmVz
cG9uZGVySUQgfCAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8ICstLS0tLS0tLS0tLS0tLS0t
KworICAgICAgICAgICAgfCAobm93IGF0dGVtcHQgICAgIHwgKy0tLS0tLS0tLS0tLS0tLS0tLSst
LS0tLSsgfAorICAgICAgICAgICAgfCAgaGFuZG9mZikgICAgICAgIHwgfCAgIG9uUmVzcG9uZGVy
ICAgICAgICAgIHwgfAorICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0+fCAgICAgIFRl
cm1pbmF0aW9uUmVxdWVzdHwgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKy0t
LS0tLS0tLS0tLS0tLS0tLSstLS0tLSsgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfCArLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgdHJ1ZTpHUkFOVCArLS0tLS0tLS0+
fG9uUmVzcG9uZGVyR3JhbnR8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8ICstLS0tLS0tLSstLS0tLS0tKworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgfCAgICAgICAg
ICB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8ICAgb25SZXNwb25kZXJUZXJt
aW5hdGUgfDwtLS0tLS0tLS0tLSsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICst
LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0rIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwgKy0tLS0tLS0tLS0tLS0tLS0rCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0t
PnxvblJlc3BvbmRlck1vdmUgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCArLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwK
KyAgICAgIFNvbWUgYWN0aXZlIHRvdWNoIHN0YXJ0ZWR8ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwKKyAgICAgIGluc2lkZSBjdXJyZW50IHJlc3BvbmRlciB8ICstLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0rIHwKKyAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPnwgICAgICBvblJl
c3BvbmRlckVuZCAgICB8IHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8ICstLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0rIHwKKyAgKy0tLSstLS0tLS0tLS0rICAgICAgICAgICAgICB8
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgfCBvblRvdWNoRW5kICB8ICAgICAgICAg
ICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgKy0tLSstLS0tLS0tLS0rICAg
ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgIHwgICAgICAg
ICAgICAgICAgICAgICAgICB8ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIHwKKyAgICAgICst
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPnwgICAgIG9uUmVzcG9uZGVyRW5kICAgICB8IHwKKyAg
ICAgIE5vIGFjdGl2ZSB0b3VjaGVzIHN0YXJ0ZWR8ICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r
IHwKKyAgICAgIGluc2lkZSBjdXJyZW50IHJlc3BvbmRlciB8ICAgICAgICAgICAgIHwgICAgICAg
ICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHYg
ICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICstLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0rIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwg
ICAgb25SZXNwb25kZXJSZWxlYXNlICB8IHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIHwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICArICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgKi8KKworLyoqCisg
KiBBIG5vdGUgYWJvdXQgZXZlbnQgb3JkZXJpbmcgaW4gdGhlIGBFdmVudFBsdWdpbkh1YmAuCisg
KgorICogU3VwcG9zZSBwbHVnaW5zIGFyZSBpbmplY3RlZCBpbiB0aGUgZm9sbG93aW5nIG9yZGVy
OgorICoKKyAqIGBbUiwgUywgQ11gCisgKgorICogVG8gaGVscCBpbGx1c3RyYXRlIHRoZSBleGFt
cGxlLCBhc3N1bWUgYFNgIGlzIGBTaW1wbGVFdmVudFBsdWdpbmAgKGZvcgorICogYG9uQ2xpY2tg
IGV0YykgYW5kIGBSYCBpcyBgUmVzcG9uZGVyRXZlbnRQbHVnaW5gLgorICoKKyAqICJEZWZlcnJl
ZC1EaXNwYXRjaGVkIEV2ZW50cyI6CisgKgorICogLSBUaGUgY3VycmVudCBldmVudCBwbHVnaW4g
c3lzdGVtIHdpbGwgdHJhdmVyc2UgdGhlIGxpc3Qgb2YgaW5qZWN0ZWQgcGx1Z2lucywKKyAqICAg
aW4gb3JkZXIsIGFuZCBleHRyYWN0IGV2ZW50cyBieSBjb2xsZWN0aW5nIHRoZSBwbHVnaW4ncyBy
ZXR1cm4gdmFsdWUgb2YKKyAqICAgYGV4dHJhY3RFdmVudHMoKWAuCisgKiAtIFRoZXNlIGV2ZW50
cyB0aGF0IGFyZSByZXR1cm5lZCBmcm9tIGBleHRyYWN0RXZlbnRzYCBhcmUgImRlZmVycmVkCisg
KiAgIGRpc3BhdGNoZWQgZXZlbnRzIi4KKyAqIC0gV2hlbiByZXR1cm5lZCBmcm9tIGBleHRyYWN0
RXZlbnRzYCwgZGVmZXJyZWQtZGlzcGF0Y2hlZCBldmVudHMgY29udGFpbiBhbgorICogICAiYWNj
dW11bGF0aW9uIiBvZiBkZWZlcnJlZCBkaXNwYXRjaGVzLgorICogLSBUaGVzZSBkZWZlcnJlZCBk
aXNwYXRjaGVzIGFyZSBhY2N1bXVsYXRlZC9jb2xsZWN0ZWQgYmVmb3JlIHRoZXkgYXJlCisgKiAg
IHJldHVybmVkLCBidXQgcHJvY2Vzc2VkIGF0IGEgbGF0ZXIgdGltZSBieSB0aGUgYEV2ZW50UGx1
Z2luSHViYCAoaGVuY2UgdGhlCisgKiAgIG5hbWUgZGVmZXJyZWQpLgorICoKKyAqIEluIHRoZSBw
cm9jZXNzIG9mIHJldHVybmluZyB0aGVpciBkZWZlcnJlZC1kaXNwYXRjaGVkIGV2ZW50cywgZXZl
bnQgcGx1Z2lucworICogdGhlbXNlbHZlcyBjYW4gZGlzcGF0Y2ggZXZlbnRzIG9uLWRlbWFuZCB3
aXRob3V0IHJldHVybmluZyB0aGVtIGZyb20KKyAqIGBleHRyYWN0RXZlbnRzYC4gUGx1Z2lucyBt
aWdodCB3YW50IHRvIGRvIHRoaXMsIHNvIHRoYXQgdGhleSBjYW4gdXNlIGV2ZW50CisgKiBkaXNw
YXRjaGluZyBhcyBhIHRvb2wgdGhhdCBoZWxwcyB0aGVtIGRlY2lkZSB3aGljaCBldmVudHMgc2hv
dWxkIGJlIGV4dHJhY3RlZAorICogaW4gdGhlIGZpcnN0IHBsYWNlLgorICoKKyAqICJPbi1EZW1h
bmQtRGlzcGF0Y2hlZCBFdmVudHMiOgorICoKKyAqIC0gT24tZGVtYW5kLWRpc3BhdGNoZWQgZXZl
bnRzIGFyZSBub3QgcmV0dXJuZWQgZnJvbSBgZXh0cmFjdEV2ZW50c2AuCisgKiAtIE9uLWRlbWFu
ZC1kaXNwYXRjaGVkIGV2ZW50cyBhcmUgZGlzcGF0Y2hlZCBkdXJpbmcgdGhlIHByb2Nlc3Mgb2Yg
cmV0dXJuaW5nCisgKiAgIHRoZSBkZWZlcnJlZC1kaXNwYXRjaGVkIGV2ZW50cy4KKyAqIC0gVGhl
eSBzaG91bGQgbm90IGhhdmUgc2lkZSBlZmZlY3RzLgorICogLSBUaGV5IHNob3VsZCBiZSBhdm9p
ZGVkLCBhbmQvb3IgZXZlbnR1YWxseSBiZSByZXBsYWNlZCB3aXRoIGFub3RoZXIKKyAqICAgYWJz
dHJhY3Rpb24gdGhhdCBhbGxvd3MgZXZlbnQgcGx1Z2lucyB0byBwZXJmb3JtIG11bHRpcGxlICJy
b3VuZHMiIG9mIGV2ZW50CisgKiAgIGV4dHJhY3Rpb24uCisgKgorICogVGhlcmVmb3JlLCB0aGUg
c2VxdWVuY2Ugb2YgZXZlbnQgZGlzcGF0Y2hlcyBiZWNvbWVzOgorICoKKyAqIC0gYFJgcyBvbi1k
ZW1hbmQgZXZlbnRzIChpZiBhbnkpICAgKGRpc3BhdGNoZWQgYnkgYFJgIG9uLWRlbWFuZCkKKyAq
IC0gYFNgcyBvbi1kZW1hbmQgZXZlbnRzIChpZiBhbnkpICAgKGRpc3BhdGNoZWQgYnkgYFNgIG9u
LWRlbWFuZCkKKyAqIC0gYENgcyBvbi1kZW1hbmQgZXZlbnRzIChpZiBhbnkpICAgKGRpc3BhdGNo
ZWQgYnkgYENgIG9uLWRlbWFuZCkKKyAqIC0gYFJgcyBleHRyYWN0ZWQgZXZlbnRzIChpZiBhbnkp
ICAgKGRpc3BhdGNoZWQgYnkgYEV2ZW50UGx1Z2luSHViYCkKKyAqIC0gYFNgcyBleHRyYWN0ZWQg
ZXZlbnRzIChpZiBhbnkpICAgKGRpc3BhdGNoZWQgYnkgYEV2ZW50UGx1Z2luSHViYCkKKyAqIC0g
YENgcyBleHRyYWN0ZWQgZXZlbnRzIChpZiBhbnkpICAgKGRpc3BhdGNoZWQgYnkgYEV2ZW50UGx1
Z2luSHViYCkKKyAqCisgKiBJbiB0aGUgY2FzZSBvZiBgUmVzcG9uZGVyRXZlbnRQbHVnaW5gOiBJ
ZiB0aGUgYHN0YXJ0U2hvdWxkU2V0UmVzcG9uZGVyYAorICogb24tZGVtYW5kIGRpc3BhdGNoIHJl
dHVybnMgYHRydWVgIChhbmQgc29tZSBvdGhlciBkZXRhaWxzIGFyZSBzYXRpc2ZpZWQpIHRoZQor
ICogYG9uUmVzcG9uZGVyR3JhbnRgIGRlZmVycmVkIGRpc3BhdGNoZWQgZXZlbnQgaXMgcmV0dXJu
ZWQgZnJvbQorICogYGV4dHJhY3RFdmVudHNgLiBUaGUgc2VxdWVuY2Ugb2YgZGlzcGF0Y2ggZXhl
Y3V0aW9ucyBpbiB0aGlzIGNhc2UKKyAqIHdpbGwgYXBwZWFyIGFzIGZvbGxvd3M6CisgKgorICog
LSBgc3RhcnRTaG91bGRTZXRSZXNwb25kZXJgIChgUmVzcG9uZGVyRXZlbnRQbHVnaW5gIGRpc3Bh
dGNoZXMgb24tZGVtYW5kKQorICogLSBgdG91Y2hTdGFydENhcHR1cmVgICAgICAgIChgRXZlbnRQ
bHVnaW5IdWJgIGRpc3BhdGNoZXMgYXMgdXN1YWwpCisgKiAtIGB0b3VjaFN0YXJ0YCAgICAgICAg
ICAgICAgKGBFdmVudFBsdWdpbkh1YmAgZGlzcGF0Y2hlcyBhcyB1c3VhbCkKKyAqIC0gYHJlc3Bv
bmRlckdyYW50L1JlamVjdGAgICAoYEV2ZW50UGx1Z2luSHViYCBkaXNwYXRjaGVzIGFzIHVzdWFs
KQorICovCisKK2Z1bmN0aW9uIHNldFJlc3BvbmRlckFuZEV4dHJhY3RUcmFuc2Zlcih0b3BMZXZl
bFR5cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkgeworICB2
YXIgc2hvdWxkU2V0RXZlbnRUeXBlID0gaXNTdGFydGlzaCh0b3BMZXZlbFR5cGUpID8gZXZlbnRU
eXBlcy5zdGFydFNob3VsZFNldFJlc3BvbmRlciA6IGlzTW92ZWlzaCh0b3BMZXZlbFR5cGUpID8g
ZXZlbnRUeXBlcy5tb3ZlU2hvdWxkU2V0UmVzcG9uZGVyIDogdG9wTGV2ZWxUeXBlID09PSAndG9w
U2VsZWN0aW9uQ2hhbmdlJyA/IGV2ZW50VHlwZXMuc2VsZWN0aW9uQ2hhbmdlU2hvdWxkU2V0UmVz
cG9uZGVyIDogZXZlbnRUeXBlcy5zY3JvbGxTaG91bGRTZXRSZXNwb25kZXI7CisKKyAgLy8gVE9E
Tzogc3RvcCBvbmUgc2hvcnQgb2YgdGhlIGN1cnJlbnQgcmVzcG9uZGVyLgorICB2YXIgYnViYmxl
U2hvdWxkU2V0RnJvbSA9ICFyZXNwb25kZXJJbnN0ID8gdGFyZ2V0SW5zdCA6IEV2ZW50UGx1Z2lu
VXRpbHMuZ2V0TG93ZXN0Q29tbW9uQW5jZXN0b3IocmVzcG9uZGVySW5zdCwgdGFyZ2V0SW5zdCk7
CisKKyAgLy8gV2hlbiBjYXB0dXJpbmcvYnViYmxpbmcgdGhlICJzaG91bGRTZXQiIGV2ZW50LCB3
ZSB3YW50IHRvIHNraXAgdGhlIHRhcmdldAorICAvLyAoZGVlcGVzdCBJRCkgaWYgaXQgaGFwcGVu
cyB0byBiZSB0aGUgY3VycmVudCByZXNwb25kZXIuIFRoZSByZWFzb25pbmc6CisgIC8vIEl0J3Mg
c3RyYW5nZSB0byBnZXQgYW4gYG9uTW92ZVNob3VsZFNldFJlc3BvbmRlcmAgd2hlbiB5b3UncmUg
KmFscmVhZHkqCisgIC8vIHRoZSByZXNwb25kZXIuCisgIHZhciBza2lwT3ZlckJ1YmJsZVNob3Vs
ZFNldEZyb20gPSBidWJibGVTaG91bGRTZXRGcm9tID09PSByZXNwb25kZXJJbnN0OworICB2YXIg
c2hvdWxkU2V0RXZlbnQgPSBSZXNwb25kZXJTeW50aGV0aWNFdmVudC5nZXRQb29sZWQoc2hvdWxk
U2V0RXZlbnRUeXBlLCBidWJibGVTaG91bGRTZXRGcm9tLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZl
bnRUYXJnZXQpOworICBzaG91bGRTZXRFdmVudC50b3VjaEhpc3RvcnkgPSBSZXNwb25kZXJUb3Vj
aEhpc3RvcnlTdG9yZS50b3VjaEhpc3Rvcnk7CisgIGlmIChza2lwT3ZlckJ1YmJsZVNob3VsZFNl
dEZyb20pIHsKKyAgICBFdmVudFByb3BhZ2F0b3JzLmFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNo
ZXNTa2lwVGFyZ2V0KHNob3VsZFNldEV2ZW50KTsKKyAgfSBlbHNlIHsKKyAgICBFdmVudFByb3Bh
Z2F0b3JzLmFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXMoc2hvdWxkU2V0RXZlbnQpOworICB9
CisgIHZhciB3YW50c1Jlc3BvbmRlckluc3QgPSBleGVjdXRlRGlzcGF0Y2hlc0luT3JkZXJTdG9w
QXRUcnVlKHNob3VsZFNldEV2ZW50KTsKKyAgaWYgKCFzaG91bGRTZXRFdmVudC5pc1BlcnNpc3Rl
bnQoKSkgeworICAgIHNob3VsZFNldEV2ZW50LmNvbnN0cnVjdG9yLnJlbGVhc2Uoc2hvdWxkU2V0
RXZlbnQpOworICB9CisKKyAgaWYgKCF3YW50c1Jlc3BvbmRlckluc3QgfHwgd2FudHNSZXNwb25k
ZXJJbnN0ID09PSByZXNwb25kZXJJbnN0KSB7CisgICAgcmV0dXJuIG51bGw7CisgIH0KKyAgdmFy
IGV4dHJhY3RlZDsKKyAgdmFyIGdyYW50RXZlbnQgPSBSZXNwb25kZXJTeW50aGV0aWNFdmVudC5n
ZXRQb29sZWQoZXZlbnRUeXBlcy5yZXNwb25kZXJHcmFudCwgd2FudHNSZXNwb25kZXJJbnN0LCBu
YXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpOworICBncmFudEV2ZW50LnRvdWNoSGlzdG9y
eSA9IFJlc3BvbmRlclRvdWNoSGlzdG9yeVN0b3JlLnRvdWNoSGlzdG9yeTsKKworICBFdmVudFBy
b3BhZ2F0b3JzLmFjY3VtdWxhdGVEaXJlY3REaXNwYXRjaGVzKGdyYW50RXZlbnQpOworICB2YXIg
YmxvY2tIb3N0UmVzcG9uZGVyID0gZXhlY3V0ZURpcmVjdERpc3BhdGNoKGdyYW50RXZlbnQpID09
PSB0cnVlOworICBpZiAocmVzcG9uZGVySW5zdCkgeworCisgICAgdmFyIHRlcm1pbmF0aW9uUmVx
dWVzdEV2ZW50ID0gUmVzcG9uZGVyU3ludGhldGljRXZlbnQuZ2V0UG9vbGVkKGV2ZW50VHlwZXMu
cmVzcG9uZGVyVGVybWluYXRpb25SZXF1ZXN0LCByZXNwb25kZXJJbnN0LCBuYXRpdmVFdmVudCwg
bmF0aXZlRXZlbnRUYXJnZXQpOworICAgIHRlcm1pbmF0aW9uUmVxdWVzdEV2ZW50LnRvdWNoSGlz
dG9yeSA9IFJlc3BvbmRlclRvdWNoSGlzdG9yeVN0b3JlLnRvdWNoSGlzdG9yeTsKKyAgICBFdmVu
dFByb3BhZ2F0b3JzLmFjY3VtdWxhdGVEaXJlY3REaXNwYXRjaGVzKHRlcm1pbmF0aW9uUmVxdWVz
dEV2ZW50KTsKKyAgICB2YXIgc2hvdWxkU3dpdGNoID0gIWhhc0Rpc3BhdGNoZXModGVybWluYXRp
b25SZXF1ZXN0RXZlbnQpIHx8IGV4ZWN1dGVEaXJlY3REaXNwYXRjaCh0ZXJtaW5hdGlvblJlcXVl
c3RFdmVudCk7CisgICAgaWYgKCF0ZXJtaW5hdGlvblJlcXVlc3RFdmVudC5pc1BlcnNpc3RlbnQo
KSkgeworICAgICAgdGVybWluYXRpb25SZXF1ZXN0RXZlbnQuY29uc3RydWN0b3IucmVsZWFzZSh0
ZXJtaW5hdGlvblJlcXVlc3RFdmVudCk7CisgICAgfQorCisgICAgaWYgKHNob3VsZFN3aXRjaCkg
eworICAgICAgdmFyIHRlcm1pbmF0ZUV2ZW50ID0gUmVzcG9uZGVyU3ludGhldGljRXZlbnQuZ2V0
UG9vbGVkKGV2ZW50VHlwZXMucmVzcG9uZGVyVGVybWluYXRlLCByZXNwb25kZXJJbnN0LCBuYXRp
dmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpOworICAgICAgdGVybWluYXRlRXZlbnQudG91Y2hI
aXN0b3J5ID0gUmVzcG9uZGVyVG91Y2hIaXN0b3J5U3RvcmUudG91Y2hIaXN0b3J5OworICAgICAg
RXZlbnRQcm9wYWdhdG9ycy5hY2N1bXVsYXRlRGlyZWN0RGlzcGF0Y2hlcyh0ZXJtaW5hdGVFdmVu
dCk7CisgICAgICBleHRyYWN0ZWQgPSBhY2N1bXVsYXRlKGV4dHJhY3RlZCwgW2dyYW50RXZlbnQs
IHRlcm1pbmF0ZUV2ZW50XSk7CisgICAgICBjaGFuZ2VSZXNwb25kZXIod2FudHNSZXNwb25kZXJJ
bnN0LCBibG9ja0hvc3RSZXNwb25kZXIpOworICAgIH0gZWxzZSB7CisgICAgICB2YXIgcmVqZWN0
RXZlbnQgPSBSZXNwb25kZXJTeW50aGV0aWNFdmVudC5nZXRQb29sZWQoZXZlbnRUeXBlcy5yZXNw
b25kZXJSZWplY3QsIHdhbnRzUmVzcG9uZGVySW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50
VGFyZ2V0KTsKKyAgICAgIHJlamVjdEV2ZW50LnRvdWNoSGlzdG9yeSA9IFJlc3BvbmRlclRvdWNo
SGlzdG9yeVN0b3JlLnRvdWNoSGlzdG9yeTsKKyAgICAgIEV2ZW50UHJvcGFnYXRvcnMuYWNjdW11
bGF0ZURpcmVjdERpc3BhdGNoZXMocmVqZWN0RXZlbnQpOworICAgICAgZXh0cmFjdGVkID0gYWNj
dW11bGF0ZShleHRyYWN0ZWQsIHJlamVjdEV2ZW50KTsKKyAgICB9CisgIH0gZWxzZSB7CisgICAg
ZXh0cmFjdGVkID0gYWNjdW11bGF0ZShleHRyYWN0ZWQsIGdyYW50RXZlbnQpOworICAgIGNoYW5n
ZVJlc3BvbmRlcih3YW50c1Jlc3BvbmRlckluc3QsIGJsb2NrSG9zdFJlc3BvbmRlcik7CisgIH0K
KyAgcmV0dXJuIGV4dHJhY3RlZDsKK30KKworLyoqCisgKiBBIHRyYW5zZmVyIGlzIGEgbmVnb3Rp
YXRpb24gYmV0d2VlbiBhIGN1cnJlbnRseSBzZXQgcmVzcG9uZGVyIGFuZCB0aGUgbmV4dAorICog
ZWxlbWVudCB0byBjbGFpbSByZXNwb25kZXIgc3RhdHVzLiBBbnkgc3RhcnQgZXZlbnQgY291bGQg
dHJpZ2dlciBhIHRyYW5zZmVyCisgKiBvZiByZXNwb25kZXJJbnN0LiBBbnkgbW92ZSBldmVudCBj
b3VsZCB0cmlnZ2VyIGEgdHJhbnNmZXIuCisgKgorICogQHBhcmFtIHtzdHJpbmd9IHRvcExldmVs
VHlwZSBSZWNvcmQgZnJvbSBgRXZlbnRDb25zdGFudHNgLgorICogQHJldHVybiB7Ym9vbGVhbn0g
VHJ1ZSBpZiBhIHRyYW5zZmVyIG9mIHJlc3BvbmRlciBjb3VsZCBwb3NzaWJseSBvY2N1ci4KKyAq
LworZnVuY3Rpb24gY2FuVHJpZ2dlclRyYW5zZmVyKHRvcExldmVsVHlwZSwgdG9wTGV2ZWxJbnN0
LCBuYXRpdmVFdmVudCkgeworICByZXR1cm4gdG9wTGV2ZWxJbnN0ICYmICgKKyAgLy8gcmVzcG9u
ZGVySWdub3JlU2Nyb2xsOiBXZSBhcmUgdHJ5aW5nIHRvIG1pZ3JhdGUgYXdheSBmcm9tIHNwZWNp
ZmljYWxseQorICAvLyB0cmFja2luZyBuYXRpdmUgc2Nyb2xsIGV2ZW50cyBoZXJlIGFuZCByZXNw
b25kZXJJZ25vcmVTY3JvbGwgaW5kaWNhdGVzIHdlCisgIC8vIHdpbGwgc2VuZCB0b3BUb3VjaENh
bmNlbCB0byBoYW5kbGUgY2FuY2VsaW5nIHRvdWNoIGV2ZW50cyBpbnN0ZWFkCisgIHRvcExldmVs
VHlwZSA9PT0gJ3RvcFNjcm9sbCcgJiYgIW5hdGl2ZUV2ZW50LnJlc3BvbmRlcklnbm9yZVNjcm9s
bCB8fCB0cmFja2VkVG91Y2hDb3VudCA+IDAgJiYgdG9wTGV2ZWxUeXBlID09PSAndG9wU2VsZWN0
aW9uQ2hhbmdlJyB8fCBpc1N0YXJ0aXNoKHRvcExldmVsVHlwZSkgfHwgaXNNb3ZlaXNoKHRvcExl
dmVsVHlwZSkpOworfQorCisvKioKKyAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhpcyB0b3Vj
aCBlbmQgZXZlbnQgbWFrZXMgaXQgc3VjaCB0aGF0IHRoZXJlIGFyZSBubworICogbG9uZ2VyIGFu
eSB0b3VjaGVzIHRoYXQgc3RhcnRlZCBpbnNpZGUgb2YgdGhlIGN1cnJlbnQgYHJlc3BvbmRlcklu
c3RgLgorICoKKyAqIEBwYXJhbSB7TmF0aXZlRXZlbnR9IG5hdGl2ZUV2ZW50IE5hdGl2ZSB0b3Vj
aCBlbmQgZXZlbnQuCisgKiBAcmV0dXJuIHtib29sZWFufSBXaGV0aGVyIG9yIG5vdCB0aGlzIHRv
dWNoIGVuZCBldmVudCBlbmRzIHRoZSByZXNwb25kZXIuCisgKi8KK2Z1bmN0aW9uIG5vUmVzcG9u
ZGVyVG91Y2hlcyhuYXRpdmVFdmVudCkgeworICB2YXIgdG91Y2hlcyA9IG5hdGl2ZUV2ZW50LnRv
dWNoZXM7CisgIGlmICghdG91Y2hlcyB8fCB0b3VjaGVzLmxlbmd0aCA9PT0gMCkgeworICAgIHJl
dHVybiB0cnVlOworICB9CisgIGZvciAodmFyIGkgPSAwOyBpIDwgdG91Y2hlcy5sZW5ndGg7IGkr
KykgeworICAgIHZhciBhY3RpdmVUb3VjaCA9IHRvdWNoZXNbaV07CisgICAgdmFyIHRhcmdldCA9
IGFjdGl2ZVRvdWNoLnRhcmdldDsKKyAgICBpZiAodGFyZ2V0ICE9PSBudWxsICYmIHRhcmdldCAh
PT0gdW5kZWZpbmVkICYmIHRhcmdldCAhPT0gMCkgeworICAgICAgLy8gSXMgdGhlIG9yaWdpbmFs
IHRvdWNoIGxvY2F0aW9uIGluc2lkZSBvZiB0aGUgY3VycmVudCByZXNwb25kZXI/CisgICAgICB2
YXIgdGFyZ2V0SW5zdCA9IEV2ZW50UGx1Z2luVXRpbHMuZ2V0SW5zdGFuY2VGcm9tTm9kZSh0YXJn
ZXQpOworICAgICAgaWYgKEV2ZW50UGx1Z2luVXRpbHMuaXNBbmNlc3RvcihyZXNwb25kZXJJbnN0
LCB0YXJnZXRJbnN0KSkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICB9CisgICAgfQor
ICB9CisgIHJldHVybiB0cnVlOworfQorCit2YXIgUmVzcG9uZGVyRXZlbnRQbHVnaW4gPSB7CisK
KyAgLyogRm9yIHVuaXQgdGVzdGluZyBvbmx5ICovCisgIF9nZXRSZXNwb25kZXJJRDogZnVuY3Rp
b24gKCkgeworICAgIHJldHVybiByZXNwb25kZXJJbnN0ID8gcmVzcG9uZGVySW5zdC5fcm9vdE5v
ZGVJRCA6IG51bGw7CisgIH0sCisKKyAgZXZlbnRUeXBlczogZXZlbnRUeXBlcywKKworICAvKioK
KyAgICogV2UgbXVzdCBiZSByZXNpbGllbnQgdG8gYHRhcmdldEluc3RgIGJlaW5nIGBudWxsYCBv
biBgdG91Y2hNb3ZlYCBvcgorICAgKiBgdG91Y2hFbmRgLiBPbiBjZXJ0YWluIHBsYXRmb3Jtcywg
dGhpcyBtZWFucyB0aGF0IGEgbmF0aXZlIHNjcm9sbCBoYXMKKyAgICogYXNzdW1lZCBjb250cm9s
IGFuZCB0aGUgb3JpZ2luYWwgdG91Y2ggdGFyZ2V0cyBhcmUgZGVzdHJveWVkLgorICAgKi8KKyAg
ZXh0cmFjdEV2ZW50czogZnVuY3Rpb24gKHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCwgbmF0aXZl
RXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7CisgICAgaWYgKGlzU3RhcnRpc2godG9wTGV2ZWxU
eXBlKSkgeworICAgICAgdHJhY2tlZFRvdWNoQ291bnQgKz0gMTsKKyAgICB9IGVsc2UgaWYgKGlz
RW5kaXNoKHRvcExldmVsVHlwZSkpIHsKKyAgICAgIGlmICh0cmFja2VkVG91Y2hDb3VudCA+PSAw
KSB7CisgICAgICAgIHRyYWNrZWRUb3VjaENvdW50IC09IDE7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBjb25zb2xlLmVycm9yKCdFbmRlZCBhIHRvdWNoIGV2ZW50IHdoaWNoIHdhcyBub3QgY291
bnRlZCBpbiBgdHJhY2tlZFRvdWNoQ291bnRgLicpOworICAgICAgICByZXR1cm4gbnVsbDsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICBSZXNwb25kZXJUb3VjaEhpc3RvcnlTdG9yZS5yZWNvcmRUb3Vj
aFRyYWNrKHRvcExldmVsVHlwZSwgbmF0aXZlRXZlbnQpOworCisgICAgdmFyIGV4dHJhY3RlZCA9
IGNhblRyaWdnZXJUcmFuc2Zlcih0b3BMZXZlbFR5cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50
KSA/IHNldFJlc3BvbmRlckFuZEV4dHJhY3RUcmFuc2Zlcih0b3BMZXZlbFR5cGUsIHRhcmdldElu
c3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkgOiBudWxsOworICAgIC8vIFJlc3Bv
bmRlciBtYXkgb3IgbWF5IG5vdCBoYXZlIHRyYW5zZmVycmVkIG9uIGEgbmV3IHRvdWNoIHN0YXJ0
L21vdmUuCisgICAgLy8gUmVnYXJkbGVzcywgd2hvZXZlciBpcyB0aGUgcmVzcG9uZGVyIGFmdGVy
IGFueSBwb3RlbnRpYWwgdHJhbnNmZXIsIHdlCisgICAgLy8gZGlyZWN0IGFsbCB0b3VjaCBzdGFy
dC9tb3ZlL2VuZHMgdG8gdGhlbSBpbiB0aGUgZm9ybSBvZgorICAgIC8vIGBvblJlc3BvbmRlck1v
dmUvU3RhcnQvRW5kYC4gVGhlc2Ugd2lsbCBiZSBjYWxsZWQgZm9yICpldmVyeSogYWRkaXRpb25h
bAorICAgIC8vIGZpbmdlciB0aGF0IG1vdmUvc3RhcnQvZW5kLCBkaXNwYXRjaGVkIGRpcmVjdGx5
IHRvIHdob2V2ZXIgaXMgdGhlCisgICAgLy8gY3VycmVudCByZXNwb25kZXIgYXQgdGhhdCBtb21l
bnQsIHVudGlsIHRoZSByZXNwb25kZXIgaXMgInJlbGVhc2VkIi4KKyAgICAvLworICAgIC8vIFRo
ZXNlIG11bHRpcGxlIGluZGl2aWR1YWwgY2hhbmdlIHRvdWNoIGV2ZW50cyBhcmUgYXJlIGFsd2F5
cyBib29rZW5kZWQKKyAgICAvLyBieSBgb25SZXNwb25kZXJHcmFudGAsIGFuZCBvbmUgb2YKKyAg
ICAvLyAoYG9uUmVzcG9uZGVyUmVsZWFzZS9vblJlc3BvbmRlclRlcm1pbmF0ZWApLgorICAgIHZh
ciBpc1Jlc3BvbmRlclRvdWNoU3RhcnQgPSByZXNwb25kZXJJbnN0ICYmIGlzU3RhcnRpc2godG9w
TGV2ZWxUeXBlKTsKKyAgICB2YXIgaXNSZXNwb25kZXJUb3VjaE1vdmUgPSByZXNwb25kZXJJbnN0
ICYmIGlzTW92ZWlzaCh0b3BMZXZlbFR5cGUpOworICAgIHZhciBpc1Jlc3BvbmRlclRvdWNoRW5k
ID0gcmVzcG9uZGVySW5zdCAmJiBpc0VuZGlzaCh0b3BMZXZlbFR5cGUpOworICAgIHZhciBpbmNy
ZW1lbnRhbFRvdWNoID0gaXNSZXNwb25kZXJUb3VjaFN0YXJ0ID8gZXZlbnRUeXBlcy5yZXNwb25k
ZXJTdGFydCA6IGlzUmVzcG9uZGVyVG91Y2hNb3ZlID8gZXZlbnRUeXBlcy5yZXNwb25kZXJNb3Zl
IDogaXNSZXNwb25kZXJUb3VjaEVuZCA/IGV2ZW50VHlwZXMucmVzcG9uZGVyRW5kIDogbnVsbDsK
KworICAgIGlmIChpbmNyZW1lbnRhbFRvdWNoKSB7CisgICAgICB2YXIgZ2VzdHVyZSA9IFJlc3Bv
bmRlclN5bnRoZXRpY0V2ZW50LmdldFBvb2xlZChpbmNyZW1lbnRhbFRvdWNoLCByZXNwb25kZXJJ
bnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpOworICAgICAgZ2VzdHVyZS50b3Vj
aEhpc3RvcnkgPSBSZXNwb25kZXJUb3VjaEhpc3RvcnlTdG9yZS50b3VjaEhpc3Rvcnk7CisgICAg
ICBFdmVudFByb3BhZ2F0b3JzLmFjY3VtdWxhdGVEaXJlY3REaXNwYXRjaGVzKGdlc3R1cmUpOwor
ICAgICAgZXh0cmFjdGVkID0gYWNjdW11bGF0ZShleHRyYWN0ZWQsIGdlc3R1cmUpOworICAgIH0K
KworICAgIHZhciBpc1Jlc3BvbmRlclRlcm1pbmF0ZSA9IHJlc3BvbmRlckluc3QgJiYgdG9wTGV2
ZWxUeXBlID09PSAndG9wVG91Y2hDYW5jZWwnOworICAgIHZhciBpc1Jlc3BvbmRlclJlbGVhc2Ug
PSByZXNwb25kZXJJbnN0ICYmICFpc1Jlc3BvbmRlclRlcm1pbmF0ZSAmJiBpc0VuZGlzaCh0b3BM
ZXZlbFR5cGUpICYmIG5vUmVzcG9uZGVyVG91Y2hlcyhuYXRpdmVFdmVudCk7CisgICAgdmFyIGZp
bmFsVG91Y2ggPSBpc1Jlc3BvbmRlclRlcm1pbmF0ZSA/IGV2ZW50VHlwZXMucmVzcG9uZGVyVGVy
bWluYXRlIDogaXNSZXNwb25kZXJSZWxlYXNlID8gZXZlbnRUeXBlcy5yZXNwb25kZXJSZWxlYXNl
IDogbnVsbDsKKyAgICBpZiAoZmluYWxUb3VjaCkgeworICAgICAgdmFyIGZpbmFsRXZlbnQgPSBS
ZXNwb25kZXJTeW50aGV0aWNFdmVudC5nZXRQb29sZWQoZmluYWxUb3VjaCwgcmVzcG9uZGVySW5z
dCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTsKKyAgICAgIGZpbmFsRXZlbnQudG91
Y2hIaXN0b3J5ID0gUmVzcG9uZGVyVG91Y2hIaXN0b3J5U3RvcmUudG91Y2hIaXN0b3J5OworICAg
ICAgRXZlbnRQcm9wYWdhdG9ycy5hY2N1bXVsYXRlRGlyZWN0RGlzcGF0Y2hlcyhmaW5hbEV2ZW50
KTsKKyAgICAgIGV4dHJhY3RlZCA9IGFjY3VtdWxhdGUoZXh0cmFjdGVkLCBmaW5hbEV2ZW50KTsK
KyAgICAgIGNoYW5nZVJlc3BvbmRlcihudWxsKTsKKyAgICB9CisKKyAgICB2YXIgbnVtYmVyQWN0
aXZlVG91Y2hlcyA9IFJlc3BvbmRlclRvdWNoSGlzdG9yeVN0b3JlLnRvdWNoSGlzdG9yeS5udW1i
ZXJBY3RpdmVUb3VjaGVzOworICAgIGlmIChSZXNwb25kZXJFdmVudFBsdWdpbi5HbG9iYWxJbnRl
cmFjdGlvbkhhbmRsZXIgJiYgbnVtYmVyQWN0aXZlVG91Y2hlcyAhPT0gcHJldmlvdXNBY3RpdmVU
b3VjaGVzKSB7CisgICAgICBSZXNwb25kZXJFdmVudFBsdWdpbi5HbG9iYWxJbnRlcmFjdGlvbkhh
bmRsZXIub25DaGFuZ2UobnVtYmVyQWN0aXZlVG91Y2hlcyk7CisgICAgfQorICAgIHByZXZpb3Vz
QWN0aXZlVG91Y2hlcyA9IG51bWJlckFjdGl2ZVRvdWNoZXM7CisKKyAgICByZXR1cm4gZXh0cmFj
dGVkOworICB9LAorCisgIEdsb2JhbFJlc3BvbmRlckhhbmRsZXI6IG51bGwsCisgIEdsb2JhbElu
dGVyYWN0aW9uSGFuZGxlcjogbnVsbCwKKworICBpbmplY3Rpb246IHsKKyAgICAvKioKKyAgICAg
KiBAcGFyYW0ge3tvbkNoYW5nZTogKFJlYWN0SUQsIFJlYWN0SUQpID0+IHZvaWR9IEdsb2JhbFJl
c3BvbmRlckhhbmRsZXIKKyAgICAgKiBPYmplY3QgdGhhdCBoYW5kbGVzIGFueSBjaGFuZ2UgaW4g
cmVzcG9uZGVyLiBVc2UgdGhpcyB0byBpbmplY3QKKyAgICAgKiBpbnRlZ3JhdGlvbiB3aXRoIGFu
IGV4aXN0aW5nIHRvdWNoIGhhbmRsaW5nIHN5c3RlbSBldGMuCisgICAgICovCisgICAgaW5qZWN0
R2xvYmFsUmVzcG9uZGVySGFuZGxlcjogZnVuY3Rpb24gKEdsb2JhbFJlc3BvbmRlckhhbmRsZXIp
IHsKKyAgICAgIFJlc3BvbmRlckV2ZW50UGx1Z2luLkdsb2JhbFJlc3BvbmRlckhhbmRsZXIgPSBH
bG9iYWxSZXNwb25kZXJIYW5kbGVyOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0g
e3tvbkNoYW5nZTogKG51bWJlckFjdGl2ZVRvdWNoZXMpID0+IHZvaWR9IEdsb2JhbEludGVyYWN0
aW9uSGFuZGxlcgorICAgICAqIE9iamVjdCB0aGF0IGhhbmRsZXMgYW55IGNoYW5nZSBpbiB0aGUg
bnVtYmVyIG9mIGFjdGl2ZSB0b3VjaGVzLgorICAgICAqLworICAgIGluamVjdEdsb2JhbEludGVy
YWN0aW9uSGFuZGxlcjogZnVuY3Rpb24gKEdsb2JhbEludGVyYWN0aW9uSGFuZGxlcikgeworICAg
ICAgUmVzcG9uZGVyRXZlbnRQbHVnaW4uR2xvYmFsSW50ZXJhY3Rpb25IYW5kbGVyID0gR2xvYmFs
SW50ZXJhY3Rpb25IYW5kbGVyOworICAgIH0KKyAgfQorfTsKKworbW9kdWxlLmV4cG9ydHMgPSBS
ZXNwb25kZXJFdmVudFBsdWdpbjsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZXNwb25k
ZXJTeW50aGV0aWNFdmVudC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFj
dC1kb20vbGliL1Jlc3BvbmRlclN5bnRoZXRpY0V2ZW50LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAxNjRkNmYz
ODM2YjIwMTZhZjc1N2Q0NDcxYmM5ODZjNDE3MjlkYjAKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZXNwb25kZXJTeW50aGV0
aWNFdmVudC5qcwpAQCAtMCwwICsxLDM4IEBACisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNl
bnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMg
c291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5k
IGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNv
dXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBi
ZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisg
Ki8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgU3ludGhldGljRXZlbnQgPSByZXF1aXJlKCcuL1N5
bnRoZXRpY0V2ZW50Jyk7CisKKy8qKgorICogYHRvdWNoSGlzdG9yeWAgaXNuJ3QgYWN0dWFsbHkg
b24gdGhlIG5hdGl2ZSBldmVudCwgYnV0IHB1dHRpbmcgaXQgaW4gdGhlCisgKiBpbnRlcmZhY2Ug
d2lsbCBlbnN1cmUgdGhhdCBpdCBpcyBjbGVhbmVkIHVwIHdoZW4gcG9vbGVkL2Rlc3Ryb3llZC4g
VGhlCisgKiBgUmVzcG9uZGVyRXZlbnRQbHVnaW5gIHdpbGwgcG9wdWxhdGUgaXQgYXBwcm9wcmlh
dGVseS4KKyAqLwordmFyIFJlc3BvbmRlckV2ZW50SW50ZXJmYWNlID0geworICB0b3VjaEhpc3Rv
cnk6IGZ1bmN0aW9uIChuYXRpdmVFdmVudCkgeworICAgIHJldHVybiBudWxsOyAvLyBBY3R1YWxs
eSBkb2Vzbid0IGV2ZW4gbG9vayBhdCB0aGUgbmF0aXZlIGV2ZW50LgorICB9Cit9OworCisvKioK
KyAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBDb25maWd1cmF0aW9uIHVzZWQgdG8g
ZGlzcGF0Y2ggdGhpcyBldmVudC4KKyAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwYXRjaE1hcmtlciBN
YXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC4KKyAqIEBwYXJhbSB7b2JqZWN0fSBu
YXRpdmVFdmVudCBOYXRpdmUgZXZlbnQuCisgKiBAZXh0ZW5kcyB7U3ludGhldGljRXZlbnR9Cisg
Ki8KK2Z1bmN0aW9uIFJlc3BvbmRlclN5bnRoZXRpY0V2ZW50KGRpc3BhdGNoQ29uZmlnLCBkaXNw
YXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7CisgIHJldHVybiBT
eW50aGV0aWNFdmVudC5jYWxsKHRoaXMsIGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwg
bmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTsKK30KKworU3ludGhldGljRXZlbnQuYXVn
bWVudENsYXNzKFJlc3BvbmRlclN5bnRoZXRpY0V2ZW50LCBSZXNwb25kZXJFdmVudEludGVyZmFj
ZSk7CisKK21vZHVsZS5leHBvcnRzID0gUmVzcG9uZGVyU3ludGhldGljRXZlbnQ7ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9t
b2R1bGVzL3JlYWN0LWRvbS9saWIvUmVzcG9uZGVyVG91Y2hIaXN0b3J5U3RvcmUuanMgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZXNwb25kZXJUb3VjaEhp
c3RvcnlTdG9yZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zODEzYmRhY2U5ZGY4YjNmNzNiYTRmZTUxODhmMWFh
NzkzZDFkYmUzCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1
bGVzL3JlYWN0LWRvbS9saWIvUmVzcG9uZGVyVG91Y2hIaXN0b3J5U3RvcmUuanMKQEAgLTAsMCAr
MSwxODMgQEAKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4K
KyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNl
bnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0
aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRF
TlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIAorICovCisKKyd1c2Ugc3Ry
aWN0JzsKKwordmFyIF9wcm9kSW52YXJpYW50ID0gcmVxdWlyZSgnLi9yZWFjdFByb2RJbnZhcmlh
bnQnKTsKKwordmFyIEV2ZW50UGx1Z2luVXRpbHMgPSByZXF1aXJlKCcuL0V2ZW50UGx1Z2luVXRp
bHMnKTsKKwordmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpOwor
dmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7CisKK3ZhciBpc0VuZGlz
aCA9IEV2ZW50UGx1Z2luVXRpbHMuaXNFbmRpc2gsCisgICAgaXNNb3ZlaXNoID0gRXZlbnRQbHVn
aW5VdGlscy5pc01vdmVpc2gsCisgICAgaXNTdGFydGlzaCA9IEV2ZW50UGx1Z2luVXRpbHMuaXNT
dGFydGlzaDsKKworLyoqCisgKiBUcmFja3MgdGhlIHBvc2l0aW9uIGFuZCB0aW1lIG9mIGVhY2gg
YWN0aXZlIHRvdWNoIGJ5IGB0b3VjaC5pZGVudGlmaWVyYC4gV2UKKyAqIHNob3VsZCB0eXBpY2Fs
bHkgb25seSBzZWUgSURzIGluIHRoZSByYW5nZSBvZiAxLTIwIGJlY2F1c2UgSURzIGdldCByZWN5
Y2xlZAorICogd2hlbiB0b3VjaGVzIGVuZCBhbmQgc3RhcnQgYWdhaW4uCisgKi8KKwordmFyIE1B
WF9UT1VDSF9CQU5LID0gMjA7Cit2YXIgdG91Y2hCYW5rID0gW107Cit2YXIgdG91Y2hIaXN0b3J5
ID0geworICB0b3VjaEJhbms6IHRvdWNoQmFuaywKKyAgbnVtYmVyQWN0aXZlVG91Y2hlczogMCwK
KyAgLy8gSWYgdGhlcmUgaXMgb25seSBvbmUgYWN0aXZlIHRvdWNoLCB3ZSByZW1lbWJlciBpdHMg
bG9jYXRpb24uIFRoaXMgcHJldmVudHMKKyAgLy8gdXMgaGF2aW5nIHRvIGxvb3AgdGhyb3VnaCBh
bGwgb2YgdGhlIHRvdWNoZXMgYWxsIHRoZSB0aW1lIGluIHRoZSBtb3N0CisgIC8vIGNvbW1vbiBj
YXNlLgorICBpbmRleE9mU2luZ2xlQWN0aXZlVG91Y2g6IC0xLAorICBtb3N0UmVjZW50VGltZVN0
YW1wOiAwCit9OworCitmdW5jdGlvbiB0aW1lc3RhbXBGb3JUb3VjaCh0b3VjaCkgeworICAvLyBU
aGUgbGVnYWN5IGludGVybmFsIGltcGxlbWVudGF0aW9uIHByb3ZpZGVzICJ0aW1lU3RhbXAiLCB3
aGljaCBoYXMgYmVlbgorICAvLyByZW5hbWVkIHRvICJ0aW1lc3RhbXAiLiBMZXQgYm90aCB3b3Jr
IGZvciBub3cgd2hpbGUgd2UgaXJvbiBpdCBvdXQKKyAgLy8gVE9ETyAoZXZ2KTogcmVuYW1lIHRp
bWVTdGFtcCB0byB0aW1lc3RhbXAgaW4gaW50ZXJuYWwgY29kZQorICByZXR1cm4gdG91Y2gudGlt
ZVN0YW1wIHx8IHRvdWNoLnRpbWVzdGFtcDsKK30KKworLyoqCisgKiBUT0RPOiBJbnN0ZWFkIG9m
IG1ha2luZyBnZXN0dXJlcyByZWNvbXB1dGUgZmlsdGVyZWQgdmVsb2NpdHksIHdlIGNvdWxkCisg
KiBpbmNsdWRlIGEgYnVpbHQgaW4gdmVsb2NpdHkgY29tcHV0YXRpb24gdGhhdCBjYW4gYmUgcmV1
c2VkIGdsb2JhbGx5LgorICovCitmdW5jdGlvbiBjcmVhdGVUb3VjaFJlY29yZCh0b3VjaCkgewor
ICByZXR1cm4geworICAgIHRvdWNoQWN0aXZlOiB0cnVlLAorICAgIHN0YXJ0UGFnZVg6IHRvdWNo
LnBhZ2VYLAorICAgIHN0YXJ0UGFnZVk6IHRvdWNoLnBhZ2VZLAorICAgIHN0YXJ0VGltZVN0YW1w
OiB0aW1lc3RhbXBGb3JUb3VjaCh0b3VjaCksCisgICAgY3VycmVudFBhZ2VYOiB0b3VjaC5wYWdl
WCwKKyAgICBjdXJyZW50UGFnZVk6IHRvdWNoLnBhZ2VZLAorICAgIGN1cnJlbnRUaW1lU3RhbXA6
IHRpbWVzdGFtcEZvclRvdWNoKHRvdWNoKSwKKyAgICBwcmV2aW91c1BhZ2VYOiB0b3VjaC5wYWdl
WCwKKyAgICBwcmV2aW91c1BhZ2VZOiB0b3VjaC5wYWdlWSwKKyAgICBwcmV2aW91c1RpbWVTdGFt
cDogdGltZXN0YW1wRm9yVG91Y2godG91Y2gpCisgIH07Cit9CisKK2Z1bmN0aW9uIHJlc2V0VG91
Y2hSZWNvcmQodG91Y2hSZWNvcmQsIHRvdWNoKSB7CisgIHRvdWNoUmVjb3JkLnRvdWNoQWN0aXZl
ID0gdHJ1ZTsKKyAgdG91Y2hSZWNvcmQuc3RhcnRQYWdlWCA9IHRvdWNoLnBhZ2VYOworICB0b3Vj
aFJlY29yZC5zdGFydFBhZ2VZID0gdG91Y2gucGFnZVk7CisgIHRvdWNoUmVjb3JkLnN0YXJ0VGlt
ZVN0YW1wID0gdGltZXN0YW1wRm9yVG91Y2godG91Y2gpOworICB0b3VjaFJlY29yZC5jdXJyZW50
UGFnZVggPSB0b3VjaC5wYWdlWDsKKyAgdG91Y2hSZWNvcmQuY3VycmVudFBhZ2VZID0gdG91Y2gu
cGFnZVk7CisgIHRvdWNoUmVjb3JkLmN1cnJlbnRUaW1lU3RhbXAgPSB0aW1lc3RhbXBGb3JUb3Vj
aCh0b3VjaCk7CisgIHRvdWNoUmVjb3JkLnByZXZpb3VzUGFnZVggPSB0b3VjaC5wYWdlWDsKKyAg
dG91Y2hSZWNvcmQucHJldmlvdXNQYWdlWSA9IHRvdWNoLnBhZ2VZOworICB0b3VjaFJlY29yZC5w
cmV2aW91c1RpbWVTdGFtcCA9IHRpbWVzdGFtcEZvclRvdWNoKHRvdWNoKTsKK30KKworZnVuY3Rp
b24gZ2V0VG91Y2hJZGVudGlmaWVyKF9yZWYpIHsKKyAgdmFyIGlkZW50aWZpZXIgPSBfcmVmLmlk
ZW50aWZpZXI7CisKKyAgIShpZGVudGlmaWVyICE9IG51bGwpID8gcHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1RvdWNoIG9iamVjdCBpcyBt
aXNzaW5nIGlkZW50aWZpZXIuJykgOiBfcHJvZEludmFyaWFudCgnMTM4JykgOiB2b2lkIDA7Cisg
IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGlkZW50aWZp
ZXIgPD0gTUFYX1RPVUNIX0JBTkssICdUb3VjaCBpZGVudGlmaWVyICVzIGlzIGdyZWF0ZXIgdGhh
biBtYXhpbXVtIHN1cHBvcnRlZCAlcyB3aGljaCBjYXVzZXMgJyArICdwZXJmb3JtYW5jZSBpc3N1
ZXMgYmFja2ZpbGxpbmcgYXJyYXkgbG9jYXRpb25zIGZvciBhbGwgb2YgdGhlIGluZGljZXMuJywg
aWRlbnRpZmllciwgTUFYX1RPVUNIX0JBTkspIDogdm9pZCAwOworICByZXR1cm4gaWRlbnRpZmll
cjsKK30KKworZnVuY3Rpb24gcmVjb3JkVG91Y2hTdGFydCh0b3VjaCkgeworICB2YXIgaWRlbnRp
ZmllciA9IGdldFRvdWNoSWRlbnRpZmllcih0b3VjaCk7CisgIHZhciB0b3VjaFJlY29yZCA9IHRv
dWNoQmFua1tpZGVudGlmaWVyXTsKKyAgaWYgKHRvdWNoUmVjb3JkKSB7CisgICAgcmVzZXRUb3Vj
aFJlY29yZCh0b3VjaFJlY29yZCwgdG91Y2gpOworICB9IGVsc2UgeworICAgIHRvdWNoQmFua1tp
ZGVudGlmaWVyXSA9IGNyZWF0ZVRvdWNoUmVjb3JkKHRvdWNoKTsKKyAgfQorICB0b3VjaEhpc3Rv
cnkubW9zdFJlY2VudFRpbWVTdGFtcCA9IHRpbWVzdGFtcEZvclRvdWNoKHRvdWNoKTsKK30KKwor
ZnVuY3Rpb24gcmVjb3JkVG91Y2hNb3ZlKHRvdWNoKSB7CisgIHZhciB0b3VjaFJlY29yZCA9IHRv
dWNoQmFua1tnZXRUb3VjaElkZW50aWZpZXIodG91Y2gpXTsKKyAgaWYgKHRvdWNoUmVjb3JkKSB7
CisgICAgdG91Y2hSZWNvcmQudG91Y2hBY3RpdmUgPSB0cnVlOworICAgIHRvdWNoUmVjb3JkLnBy
ZXZpb3VzUGFnZVggPSB0b3VjaFJlY29yZC5jdXJyZW50UGFnZVg7CisgICAgdG91Y2hSZWNvcmQu
cHJldmlvdXNQYWdlWSA9IHRvdWNoUmVjb3JkLmN1cnJlbnRQYWdlWTsKKyAgICB0b3VjaFJlY29y
ZC5wcmV2aW91c1RpbWVTdGFtcCA9IHRvdWNoUmVjb3JkLmN1cnJlbnRUaW1lU3RhbXA7CisgICAg
dG91Y2hSZWNvcmQuY3VycmVudFBhZ2VYID0gdG91Y2gucGFnZVg7CisgICAgdG91Y2hSZWNvcmQu
Y3VycmVudFBhZ2VZID0gdG91Y2gucGFnZVk7CisgICAgdG91Y2hSZWNvcmQuY3VycmVudFRpbWVT
dGFtcCA9IHRpbWVzdGFtcEZvclRvdWNoKHRvdWNoKTsKKyAgICB0b3VjaEhpc3RvcnkubW9zdFJl
Y2VudFRpbWVTdGFtcCA9IHRpbWVzdGFtcEZvclRvdWNoKHRvdWNoKTsKKyAgfSBlbHNlIHsKKyAg
ICBjb25zb2xlLmVycm9yKCdDYW5ub3QgcmVjb3JkIHRvdWNoIG1vdmUgd2l0aG91dCBhIHRvdWNo
IHN0YXJ0LlxuJyArICdUb3VjaCBNb3ZlOiAlc1xuJywgJ1RvdWNoIEJhbms6ICVzJywgcHJpbnRU
b3VjaCh0b3VjaCksIHByaW50VG91Y2hCYW5rKCkpOworICB9Cit9CisKK2Z1bmN0aW9uIHJlY29y
ZFRvdWNoRW5kKHRvdWNoKSB7CisgIHZhciB0b3VjaFJlY29yZCA9IHRvdWNoQmFua1tnZXRUb3Vj
aElkZW50aWZpZXIodG91Y2gpXTsKKyAgaWYgKHRvdWNoUmVjb3JkKSB7CisgICAgdG91Y2hSZWNv
cmQudG91Y2hBY3RpdmUgPSBmYWxzZTsKKyAgICB0b3VjaFJlY29yZC5wcmV2aW91c1BhZ2VYID0g
dG91Y2hSZWNvcmQuY3VycmVudFBhZ2VYOworICAgIHRvdWNoUmVjb3JkLnByZXZpb3VzUGFnZVkg
PSB0b3VjaFJlY29yZC5jdXJyZW50UGFnZVk7CisgICAgdG91Y2hSZWNvcmQucHJldmlvdXNUaW1l
U3RhbXAgPSB0b3VjaFJlY29yZC5jdXJyZW50VGltZVN0YW1wOworICAgIHRvdWNoUmVjb3JkLmN1
cnJlbnRQYWdlWCA9IHRvdWNoLnBhZ2VYOworICAgIHRvdWNoUmVjb3JkLmN1cnJlbnRQYWdlWSA9
IHRvdWNoLnBhZ2VZOworICAgIHRvdWNoUmVjb3JkLmN1cnJlbnRUaW1lU3RhbXAgPSB0aW1lc3Rh
bXBGb3JUb3VjaCh0b3VjaCk7CisgICAgdG91Y2hIaXN0b3J5Lm1vc3RSZWNlbnRUaW1lU3RhbXAg
PSB0aW1lc3RhbXBGb3JUb3VjaCh0b3VjaCk7CisgIH0gZWxzZSB7CisgICAgY29uc29sZS5lcnJv
cignQ2Fubm90IHJlY29yZCB0b3VjaCBlbmQgd2l0aG91dCBhIHRvdWNoIHN0YXJ0LlxuJyArICdU
b3VjaCBFbmQ6ICVzXG4nLCAnVG91Y2ggQmFuazogJXMnLCBwcmludFRvdWNoKHRvdWNoKSwgcHJp
bnRUb3VjaEJhbmsoKSk7CisgIH0KK30KKworZnVuY3Rpb24gcHJpbnRUb3VjaCh0b3VjaCkgewor
ICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoeworICAgIGlkZW50aWZpZXI6IHRvdWNoLmlkZW50aWZp
ZXIsCisgICAgcGFnZVg6IHRvdWNoLnBhZ2VYLAorICAgIHBhZ2VZOiB0b3VjaC5wYWdlWSwKKyAg
ICB0aW1lc3RhbXA6IHRpbWVzdGFtcEZvclRvdWNoKHRvdWNoKQorICB9KTsKK30KKworZnVuY3Rp
b24gcHJpbnRUb3VjaEJhbmsoKSB7CisgIHZhciBwcmludGVkID0gSlNPTi5zdHJpbmdpZnkodG91
Y2hCYW5rLnNsaWNlKDAsIE1BWF9UT1VDSF9CQU5LKSk7CisgIGlmICh0b3VjaEJhbmsubGVuZ3Ro
ID4gTUFYX1RPVUNIX0JBTkspIHsKKyAgICBwcmludGVkICs9ICcgKG9yaWdpbmFsIHNpemU6ICcg
KyB0b3VjaEJhbmsubGVuZ3RoICsgJyknOworICB9CisgIHJldHVybiBwcmludGVkOworfQorCit2
YXIgUmVzcG9uZGVyVG91Y2hIaXN0b3J5U3RvcmUgPSB7CisgIHJlY29yZFRvdWNoVHJhY2s6IGZ1
bmN0aW9uICh0b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KSB7CisgICAgaWYgKGlzTW92ZWlzaCh0
b3BMZXZlbFR5cGUpKSB7CisgICAgICBuYXRpdmVFdmVudC5jaGFuZ2VkVG91Y2hlcy5mb3JFYWNo
KHJlY29yZFRvdWNoTW92ZSk7CisgICAgfSBlbHNlIGlmIChpc1N0YXJ0aXNoKHRvcExldmVsVHlw
ZSkpIHsKKyAgICAgIG5hdGl2ZUV2ZW50LmNoYW5nZWRUb3VjaGVzLmZvckVhY2gocmVjb3JkVG91
Y2hTdGFydCk7CisgICAgICB0b3VjaEhpc3RvcnkubnVtYmVyQWN0aXZlVG91Y2hlcyA9IG5hdGl2
ZUV2ZW50LnRvdWNoZXMubGVuZ3RoOworICAgICAgaWYgKHRvdWNoSGlzdG9yeS5udW1iZXJBY3Rp
dmVUb3VjaGVzID09PSAxKSB7CisgICAgICAgIHRvdWNoSGlzdG9yeS5pbmRleE9mU2luZ2xlQWN0
aXZlVG91Y2ggPSBuYXRpdmVFdmVudC50b3VjaGVzWzBdLmlkZW50aWZpZXI7CisgICAgICB9Cisg
ICAgfSBlbHNlIGlmIChpc0VuZGlzaCh0b3BMZXZlbFR5cGUpKSB7CisgICAgICBuYXRpdmVFdmVu
dC5jaGFuZ2VkVG91Y2hlcy5mb3JFYWNoKHJlY29yZFRvdWNoRW5kKTsKKyAgICAgIHRvdWNoSGlz
dG9yeS5udW1iZXJBY3RpdmVUb3VjaGVzID0gbmF0aXZlRXZlbnQudG91Y2hlcy5sZW5ndGg7Cisg
ICAgICBpZiAodG91Y2hIaXN0b3J5Lm51bWJlckFjdGl2ZVRvdWNoZXMgPT09IDEpIHsKKyAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b3VjaEJhbmsubGVuZ3RoOyBpKyspIHsKKyAgICAgICAg
ICB2YXIgdG91Y2hUcmFja1RvQ2hlY2sgPSB0b3VjaEJhbmtbaV07CisgICAgICAgICAgaWYgKHRv
dWNoVHJhY2tUb0NoZWNrICE9IG51bGwgJiYgdG91Y2hUcmFja1RvQ2hlY2sudG91Y2hBY3RpdmUp
IHsKKyAgICAgICAgICAgIHRvdWNoSGlzdG9yeS5pbmRleE9mU2luZ2xlQWN0aXZlVG91Y2ggPSBp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlm
IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAgICAgdmFy
IGFjdGl2ZVJlY29yZCA9IHRvdWNoQmFua1t0b3VjaEhpc3RvcnkuaW5kZXhPZlNpbmdsZUFjdGl2
ZVRvdWNoXTsKKyAgICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24n
ID8gd2FybmluZyhhY3RpdmVSZWNvcmQgIT0gbnVsbCAmJiBhY3RpdmVSZWNvcmQudG91Y2hBY3Rp
dmUsICdDYW5ub3QgZmluZCBzaW5nbGUgYWN0aXZlIHRvdWNoLicpIDogdm9pZCAwOworICAgICAg
ICB9CisgICAgICB9CisgICAgfQorICB9LAorCisKKyAgdG91Y2hIaXN0b3J5OiB0b3VjaEhpc3Rv
cnkKK307CisKK21vZHVsZS5leHBvcnRzID0gUmVzcG9uZGVyVG91Y2hIaXN0b3J5U3RvcmU7Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qv
bm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvU1ZHRE9NUHJvcGVydHlDb25maWcuanMgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9TVkdET01Qcm9wZXJ0eUNv
bmZpZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45M2RmNzg5N2Q3YzZmOTZkOTllY2U3N2ZiNTRmOWY1MDc4NmRl
MjdkCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3Jl
YWN0LWRvbS9saWIvU1ZHRE9NUHJvcGVydHlDb25maWcuanMKQEAgLTAsMCArMSwzMDEgQEAKKy8q
KgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQK
KyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBOUyA9
IHsKKyAgeGxpbms6ICdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rJywKKyAgeG1sOiAnaHR0
cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlJworfTsKKworLy8gV2UgdXNlIGF0dHJp
YnV0ZXMgZm9yIGV2ZXJ5dGhpbmcgU1ZHIHNvIGxldCdzIGF2b2lkIHNvbWUgZHVwbGljYXRpb24g
YW5kIHJ1bgorLy8gY29kZSBpbnN0ZWFkLgorLy8gVGhlIGZvbGxvd2luZyBhcmUgYWxsIHNwZWNp
ZmllZCBpbiB0aGUgSFRNTCBjb25maWcgYWxyZWFkeSBzbyB3ZSBleGNsdWRlIGhlcmUuCisvLyAt
IGNsYXNzIChhcyBjbGFzc05hbWUpCisvLyAtIGNvbG9yCisvLyAtIGhlaWdodAorLy8gLSBpZAor
Ly8gLSBsYW5nCisvLyAtIG1heAorLy8gLSBtZWRpYQorLy8gLSBtZXRob2QKKy8vIC0gbWluCisv
LyAtIG5hbWUKKy8vIC0gc3R5bGUKKy8vIC0gdGFyZ2V0CisvLyAtIHR5cGUKKy8vIC0gd2lkdGgK
K3ZhciBBVFRSUyA9IHsKKyAgYWNjZW50SGVpZ2h0OiAnYWNjZW50LWhlaWdodCcsCisgIGFjY3Vt
dWxhdGU6IDAsCisgIGFkZGl0aXZlOiAwLAorICBhbGlnbm1lbnRCYXNlbGluZTogJ2FsaWdubWVu
dC1iYXNlbGluZScsCisgIGFsbG93UmVvcmRlcjogJ2FsbG93UmVvcmRlcicsCisgIGFscGhhYmV0
aWM6IDAsCisgIGFtcGxpdHVkZTogMCwKKyAgYXJhYmljRm9ybTogJ2FyYWJpYy1mb3JtJywKKyAg
YXNjZW50OiAwLAorICBhdHRyaWJ1dGVOYW1lOiAnYXR0cmlidXRlTmFtZScsCisgIGF0dHJpYnV0
ZVR5cGU6ICdhdHRyaWJ1dGVUeXBlJywKKyAgYXV0b1JldmVyc2U6ICdhdXRvUmV2ZXJzZScsCisg
IGF6aW11dGg6IDAsCisgIGJhc2VGcmVxdWVuY3k6ICdiYXNlRnJlcXVlbmN5JywKKyAgYmFzZVBy
b2ZpbGU6ICdiYXNlUHJvZmlsZScsCisgIGJhc2VsaW5lU2hpZnQ6ICdiYXNlbGluZS1zaGlmdCcs
CisgIGJib3g6IDAsCisgIGJlZ2luOiAwLAorICBiaWFzOiAwLAorICBieTogMCwKKyAgY2FsY01v
ZGU6ICdjYWxjTW9kZScsCisgIGNhcEhlaWdodDogJ2NhcC1oZWlnaHQnLAorICBjbGlwOiAwLAor
ICBjbGlwUGF0aDogJ2NsaXAtcGF0aCcsCisgIGNsaXBSdWxlOiAnY2xpcC1ydWxlJywKKyAgY2xp
cFBhdGhVbml0czogJ2NsaXBQYXRoVW5pdHMnLAorICBjb2xvckludGVycG9sYXRpb246ICdjb2xv
ci1pbnRlcnBvbGF0aW9uJywKKyAgY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVyczogJ2NvbG9yLWlu
dGVycG9sYXRpb24tZmlsdGVycycsCisgIGNvbG9yUHJvZmlsZTogJ2NvbG9yLXByb2ZpbGUnLAor
ICBjb2xvclJlbmRlcmluZzogJ2NvbG9yLXJlbmRlcmluZycsCisgIGNvbnRlbnRTY3JpcHRUeXBl
OiAnY29udGVudFNjcmlwdFR5cGUnLAorICBjb250ZW50U3R5bGVUeXBlOiAnY29udGVudFN0eWxl
VHlwZScsCisgIGN1cnNvcjogMCwKKyAgY3g6IDAsCisgIGN5OiAwLAorICBkOiAwLAorICBkZWNl
bGVyYXRlOiAwLAorICBkZXNjZW50OiAwLAorICBkaWZmdXNlQ29uc3RhbnQ6ICdkaWZmdXNlQ29u
c3RhbnQnLAorICBkaXJlY3Rpb246IDAsCisgIGRpc3BsYXk6IDAsCisgIGRpdmlzb3I6IDAsCisg
IGRvbWluYW50QmFzZWxpbmU6ICdkb21pbmFudC1iYXNlbGluZScsCisgIGR1cjogMCwKKyAgZHg6
IDAsCisgIGR5OiAwLAorICBlZGdlTW9kZTogJ2VkZ2VNb2RlJywKKyAgZWxldmF0aW9uOiAwLAor
ICBlbmFibGVCYWNrZ3JvdW5kOiAnZW5hYmxlLWJhY2tncm91bmQnLAorICBlbmQ6IDAsCisgIGV4
cG9uZW50OiAwLAorICBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOiAnZXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCcsCisgIGZpbGw6IDAsCisgIGZpbGxPcGFjaXR5OiAnZmlsbC1vcGFjaXR5JywK
KyAgZmlsbFJ1bGU6ICdmaWxsLXJ1bGUnLAorICBmaWx0ZXI6IDAsCisgIGZpbHRlclJlczogJ2Zp
bHRlclJlcycsCisgIGZpbHRlclVuaXRzOiAnZmlsdGVyVW5pdHMnLAorICBmbG9vZENvbG9yOiAn
Zmxvb2QtY29sb3InLAorICBmbG9vZE9wYWNpdHk6ICdmbG9vZC1vcGFjaXR5JywKKyAgZm9jdXNh
YmxlOiAwLAorICBmb250RmFtaWx5OiAnZm9udC1mYW1pbHknLAorICBmb250U2l6ZTogJ2ZvbnQt
c2l6ZScsCisgIGZvbnRTaXplQWRqdXN0OiAnZm9udC1zaXplLWFkanVzdCcsCisgIGZvbnRTdHJl
dGNoOiAnZm9udC1zdHJldGNoJywKKyAgZm9udFN0eWxlOiAnZm9udC1zdHlsZScsCisgIGZvbnRW
YXJpYW50OiAnZm9udC12YXJpYW50JywKKyAgZm9udFdlaWdodDogJ2ZvbnQtd2VpZ2h0JywKKyAg
Zm9ybWF0OiAwLAorICBmcm9tOiAwLAorICBmeDogMCwKKyAgZnk6IDAsCisgIGcxOiAwLAorICBn
MjogMCwKKyAgZ2x5cGhOYW1lOiAnZ2x5cGgtbmFtZScsCisgIGdseXBoT3JpZW50YXRpb25Ib3Jp
em9udGFsOiAnZ2x5cGgtb3JpZW50YXRpb24taG9yaXpvbnRhbCcsCisgIGdseXBoT3JpZW50YXRp
b25WZXJ0aWNhbDogJ2dseXBoLW9yaWVudGF0aW9uLXZlcnRpY2FsJywKKyAgZ2x5cGhSZWY6ICdn
bHlwaFJlZicsCisgIGdyYWRpZW50VHJhbnNmb3JtOiAnZ3JhZGllbnRUcmFuc2Zvcm0nLAorICBn
cmFkaWVudFVuaXRzOiAnZ3JhZGllbnRVbml0cycsCisgIGhhbmdpbmc6IDAsCisgIGhvcml6QWR2
WDogJ2hvcml6LWFkdi14JywKKyAgaG9yaXpPcmlnaW5YOiAnaG9yaXotb3JpZ2luLXgnLAorICBp
ZGVvZ3JhcGhpYzogMCwKKyAgaW1hZ2VSZW5kZXJpbmc6ICdpbWFnZS1yZW5kZXJpbmcnLAorICAn
aW4nOiAwLAorICBpbjI6IDAsCisgIGludGVyY2VwdDogMCwKKyAgazogMCwKKyAgazE6IDAsCisg
IGsyOiAwLAorICBrMzogMCwKKyAgazQ6IDAsCisgIGtlcm5lbE1hdHJpeDogJ2tlcm5lbE1hdHJp
eCcsCisgIGtlcm5lbFVuaXRMZW5ndGg6ICdrZXJuZWxVbml0TGVuZ3RoJywKKyAga2VybmluZzog
MCwKKyAga2V5UG9pbnRzOiAna2V5UG9pbnRzJywKKyAga2V5U3BsaW5lczogJ2tleVNwbGluZXMn
LAorICBrZXlUaW1lczogJ2tleVRpbWVzJywKKyAgbGVuZ3RoQWRqdXN0OiAnbGVuZ3RoQWRqdXN0
JywKKyAgbGV0dGVyU3BhY2luZzogJ2xldHRlci1zcGFjaW5nJywKKyAgbGlnaHRpbmdDb2xvcjog
J2xpZ2h0aW5nLWNvbG9yJywKKyAgbGltaXRpbmdDb25lQW5nbGU6ICdsaW1pdGluZ0NvbmVBbmds
ZScsCisgIGxvY2FsOiAwLAorICBtYXJrZXJFbmQ6ICdtYXJrZXItZW5kJywKKyAgbWFya2VyTWlk
OiAnbWFya2VyLW1pZCcsCisgIG1hcmtlclN0YXJ0OiAnbWFya2VyLXN0YXJ0JywKKyAgbWFya2Vy
SGVpZ2h0OiAnbWFya2VySGVpZ2h0JywKKyAgbWFya2VyVW5pdHM6ICdtYXJrZXJVbml0cycsCisg
IG1hcmtlcldpZHRoOiAnbWFya2VyV2lkdGgnLAorICBtYXNrOiAwLAorICBtYXNrQ29udGVudFVu
aXRzOiAnbWFza0NvbnRlbnRVbml0cycsCisgIG1hc2tVbml0czogJ21hc2tVbml0cycsCisgIG1h
dGhlbWF0aWNhbDogMCwKKyAgbW9kZTogMCwKKyAgbnVtT2N0YXZlczogJ251bU9jdGF2ZXMnLAor
ICBvZmZzZXQ6IDAsCisgIG9wYWNpdHk6IDAsCisgIG9wZXJhdG9yOiAwLAorICBvcmRlcjogMCwK
KyAgb3JpZW50OiAwLAorICBvcmllbnRhdGlvbjogMCwKKyAgb3JpZ2luOiAwLAorICBvdmVyZmxv
dzogMCwKKyAgb3ZlcmxpbmVQb3NpdGlvbjogJ292ZXJsaW5lLXBvc2l0aW9uJywKKyAgb3Zlcmxp
bmVUaGlja25lc3M6ICdvdmVybGluZS10aGlja25lc3MnLAorICBwYWludE9yZGVyOiAncGFpbnQt
b3JkZXInLAorICBwYW5vc2UxOiAncGFub3NlLTEnLAorICBwYXRoTGVuZ3RoOiAncGF0aExlbmd0
aCcsCisgIHBhdHRlcm5Db250ZW50VW5pdHM6ICdwYXR0ZXJuQ29udGVudFVuaXRzJywKKyAgcGF0
dGVyblRyYW5zZm9ybTogJ3BhdHRlcm5UcmFuc2Zvcm0nLAorICBwYXR0ZXJuVW5pdHM6ICdwYXR0
ZXJuVW5pdHMnLAorICBwb2ludGVyRXZlbnRzOiAncG9pbnRlci1ldmVudHMnLAorICBwb2ludHM6
IDAsCisgIHBvaW50c0F0WDogJ3BvaW50c0F0WCcsCisgIHBvaW50c0F0WTogJ3BvaW50c0F0WScs
CisgIHBvaW50c0F0WjogJ3BvaW50c0F0WicsCisgIHByZXNlcnZlQWxwaGE6ICdwcmVzZXJ2ZUFs
cGhhJywKKyAgcHJlc2VydmVBc3BlY3RSYXRpbzogJ3ByZXNlcnZlQXNwZWN0UmF0aW8nLAorICBw
cmltaXRpdmVVbml0czogJ3ByaW1pdGl2ZVVuaXRzJywKKyAgcjogMCwKKyAgcmFkaXVzOiAwLAor
ICByZWZYOiAncmVmWCcsCisgIHJlZlk6ICdyZWZZJywKKyAgcmVuZGVyaW5nSW50ZW50OiAncmVu
ZGVyaW5nLWludGVudCcsCisgIHJlcGVhdENvdW50OiAncmVwZWF0Q291bnQnLAorICByZXBlYXRE
dXI6ICdyZXBlYXREdXInLAorICByZXF1aXJlZEV4dGVuc2lvbnM6ICdyZXF1aXJlZEV4dGVuc2lv
bnMnLAorICByZXF1aXJlZEZlYXR1cmVzOiAncmVxdWlyZWRGZWF0dXJlcycsCisgIHJlc3RhcnQ6
IDAsCisgIHJlc3VsdDogMCwKKyAgcm90YXRlOiAwLAorICByeDogMCwKKyAgcnk6IDAsCisgIHNj
YWxlOiAwLAorICBzZWVkOiAwLAorICBzaGFwZVJlbmRlcmluZzogJ3NoYXBlLXJlbmRlcmluZycs
CisgIHNsb3BlOiAwLAorICBzcGFjaW5nOiAwLAorICBzcGVjdWxhckNvbnN0YW50OiAnc3BlY3Vs
YXJDb25zdGFudCcsCisgIHNwZWN1bGFyRXhwb25lbnQ6ICdzcGVjdWxhckV4cG9uZW50JywKKyAg
c3BlZWQ6IDAsCisgIHNwcmVhZE1ldGhvZDogJ3NwcmVhZE1ldGhvZCcsCisgIHN0YXJ0T2Zmc2V0
OiAnc3RhcnRPZmZzZXQnLAorICBzdGREZXZpYXRpb246ICdzdGREZXZpYXRpb24nLAorICBzdGVt
aDogMCwKKyAgc3RlbXY6IDAsCisgIHN0aXRjaFRpbGVzOiAnc3RpdGNoVGlsZXMnLAorICBzdG9w
Q29sb3I6ICdzdG9wLWNvbG9yJywKKyAgc3RvcE9wYWNpdHk6ICdzdG9wLW9wYWNpdHknLAorICBz
dHJpa2V0aHJvdWdoUG9zaXRpb246ICdzdHJpa2V0aHJvdWdoLXBvc2l0aW9uJywKKyAgc3RyaWtl
dGhyb3VnaFRoaWNrbmVzczogJ3N0cmlrZXRocm91Z2gtdGhpY2tuZXNzJywKKyAgc3RyaW5nOiAw
LAorICBzdHJva2U6IDAsCisgIHN0cm9rZURhc2hhcnJheTogJ3N0cm9rZS1kYXNoYXJyYXknLAor
ICBzdHJva2VEYXNob2Zmc2V0OiAnc3Ryb2tlLWRhc2hvZmZzZXQnLAorICBzdHJva2VMaW5lY2Fw
OiAnc3Ryb2tlLWxpbmVjYXAnLAorICBzdHJva2VMaW5lam9pbjogJ3N0cm9rZS1saW5lam9pbics
CisgIHN0cm9rZU1pdGVybGltaXQ6ICdzdHJva2UtbWl0ZXJsaW1pdCcsCisgIHN0cm9rZU9wYWNp
dHk6ICdzdHJva2Utb3BhY2l0eScsCisgIHN0cm9rZVdpZHRoOiAnc3Ryb2tlLXdpZHRoJywKKyAg
c3VyZmFjZVNjYWxlOiAnc3VyZmFjZVNjYWxlJywKKyAgc3lzdGVtTGFuZ3VhZ2U6ICdzeXN0ZW1M
YW5ndWFnZScsCisgIHRhYmxlVmFsdWVzOiAndGFibGVWYWx1ZXMnLAorICB0YXJnZXRYOiAndGFy
Z2V0WCcsCisgIHRhcmdldFk6ICd0YXJnZXRZJywKKyAgdGV4dEFuY2hvcjogJ3RleHQtYW5jaG9y
JywKKyAgdGV4dERlY29yYXRpb246ICd0ZXh0LWRlY29yYXRpb24nLAorICB0ZXh0UmVuZGVyaW5n
OiAndGV4dC1yZW5kZXJpbmcnLAorICB0ZXh0TGVuZ3RoOiAndGV4dExlbmd0aCcsCisgIHRvOiAw
LAorICB0cmFuc2Zvcm06IDAsCisgIHUxOiAwLAorICB1MjogMCwKKyAgdW5kZXJsaW5lUG9zaXRp
b246ICd1bmRlcmxpbmUtcG9zaXRpb24nLAorICB1bmRlcmxpbmVUaGlja25lc3M6ICd1bmRlcmxp
bmUtdGhpY2tuZXNzJywKKyAgdW5pY29kZTogMCwKKyAgdW5pY29kZUJpZGk6ICd1bmljb2RlLWJp
ZGknLAorICB1bmljb2RlUmFuZ2U6ICd1bmljb2RlLXJhbmdlJywKKyAgdW5pdHNQZXJFbTogJ3Vu
aXRzLXBlci1lbScsCisgIHZBbHBoYWJldGljOiAndi1hbHBoYWJldGljJywKKyAgdkhhbmdpbmc6
ICd2LWhhbmdpbmcnLAorICB2SWRlb2dyYXBoaWM6ICd2LWlkZW9ncmFwaGljJywKKyAgdk1hdGhl
bWF0aWNhbDogJ3YtbWF0aGVtYXRpY2FsJywKKyAgdmFsdWVzOiAwLAorICB2ZWN0b3JFZmZlY3Q6
ICd2ZWN0b3ItZWZmZWN0JywKKyAgdmVyc2lvbjogMCwKKyAgdmVydEFkdlk6ICd2ZXJ0LWFkdi15
JywKKyAgdmVydE9yaWdpblg6ICd2ZXJ0LW9yaWdpbi14JywKKyAgdmVydE9yaWdpblk6ICd2ZXJ0
LW9yaWdpbi15JywKKyAgdmlld0JveDogJ3ZpZXdCb3gnLAorICB2aWV3VGFyZ2V0OiAndmlld1Rh
cmdldCcsCisgIHZpc2liaWxpdHk6IDAsCisgIHdpZHRoczogMCwKKyAgd29yZFNwYWNpbmc6ICd3
b3JkLXNwYWNpbmcnLAorICB3cml0aW5nTW9kZTogJ3dyaXRpbmctbW9kZScsCisgIHg6IDAsCisg
IHhIZWlnaHQ6ICd4LWhlaWdodCcsCisgIHgxOiAwLAorICB4MjogMCwKKyAgeENoYW5uZWxTZWxl
Y3RvcjogJ3hDaGFubmVsU2VsZWN0b3InLAorICB4bGlua0FjdHVhdGU6ICd4bGluazphY3R1YXRl
JywKKyAgeGxpbmtBcmNyb2xlOiAneGxpbms6YXJjcm9sZScsCisgIHhsaW5rSHJlZjogJ3hsaW5r
OmhyZWYnLAorICB4bGlua1JvbGU6ICd4bGluazpyb2xlJywKKyAgeGxpbmtTaG93OiAneGxpbms6
c2hvdycsCisgIHhsaW5rVGl0bGU6ICd4bGluazp0aXRsZScsCisgIHhsaW5rVHlwZTogJ3hsaW5r
OnR5cGUnLAorICB4bWxCYXNlOiAneG1sOmJhc2UnLAorICB4bWxuczogMCwKKyAgeG1sbnNYbGlu
azogJ3htbG5zOnhsaW5rJywKKyAgeG1sTGFuZzogJ3htbDpsYW5nJywKKyAgeG1sU3BhY2U6ICd4
bWw6c3BhY2UnLAorICB5OiAwLAorICB5MTogMCwKKyAgeTI6IDAsCisgIHlDaGFubmVsU2VsZWN0
b3I6ICd5Q2hhbm5lbFNlbGVjdG9yJywKKyAgejogMCwKKyAgem9vbUFuZFBhbjogJ3pvb21BbmRQ
YW4nCit9OworCit2YXIgU1ZHRE9NUHJvcGVydHlDb25maWcgPSB7CisgIFByb3BlcnRpZXM6IHt9
LAorICBET01BdHRyaWJ1dGVOYW1lc3BhY2VzOiB7CisgICAgeGxpbmtBY3R1YXRlOiBOUy54bGlu
aywKKyAgICB4bGlua0FyY3JvbGU6IE5TLnhsaW5rLAorICAgIHhsaW5rSHJlZjogTlMueGxpbmss
CisgICAgeGxpbmtSb2xlOiBOUy54bGluaywKKyAgICB4bGlua1Nob3c6IE5TLnhsaW5rLAorICAg
IHhsaW5rVGl0bGU6IE5TLnhsaW5rLAorICAgIHhsaW5rVHlwZTogTlMueGxpbmssCisgICAgeG1s
QmFzZTogTlMueG1sLAorICAgIHhtbExhbmc6IE5TLnhtbCwKKyAgICB4bWxTcGFjZTogTlMueG1s
CisgIH0sCisgIERPTUF0dHJpYnV0ZU5hbWVzOiB7fQorfTsKKworT2JqZWN0LmtleXMoQVRUUlMp
LmZvckVhY2goZnVuY3Rpb24gKGtleSkgeworICBTVkdET01Qcm9wZXJ0eUNvbmZpZy5Qcm9wZXJ0
aWVzW2tleV0gPSAwOworICBpZiAoQVRUUlNba2V5XSkgeworICAgIFNWR0RPTVByb3BlcnR5Q29u
ZmlnLkRPTUF0dHJpYnV0ZU5hbWVzW2tleV0gPSBBVFRSU1trZXldOworICB9Cit9KTsKKworbW9k
dWxlLmV4cG9ydHMgPSBTVkdET01Qcm9wZXJ0eUNvbmZpZzsKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3Qt
ZG9tL2xpYi9TZWxlY3RFdmVudFBsdWdpbi5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9k
dWxlcy9yZWFjdC1kb20vbGliL1NlbGVjdEV2ZW50UGx1Z2luLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBkMGFm
MjExMDk4ZTZkMGVmMjY3MDU0NGQxYTdjMmJiNDhiMWYxNGMKLS0tIC9kZXYvbnVsbAorKysgYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9TZWxlY3RFdmVudFBs
dWdpbi5qcwpAQCAtMCwwICsxLDE5MCBAQAorLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICov
CisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIEV2ZW50UHJvcGFnYXRvcnMgPSByZXF1aXJlKCcuL0V2
ZW50UHJvcGFnYXRvcnMnKTsKK3ZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IHJlcXVpcmUoJ2Zi
anMvbGliL0V4ZWN1dGlvbkVudmlyb25tZW50Jyk7Cit2YXIgUmVhY3RET01Db21wb25lbnRUcmVl
ID0gcmVxdWlyZSgnLi9SZWFjdERPTUNvbXBvbmVudFRyZWUnKTsKK3ZhciBSZWFjdElucHV0U2Vs
ZWN0aW9uID0gcmVxdWlyZSgnLi9SZWFjdElucHV0U2VsZWN0aW9uJyk7Cit2YXIgU3ludGhldGlj
RXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY0V2ZW50Jyk7CisKK3ZhciBnZXRBY3RpdmVFbGVt
ZW50ID0gcmVxdWlyZSgnZmJqcy9saWIvZ2V0QWN0aXZlRWxlbWVudCcpOwordmFyIGlzVGV4dElu
cHV0RWxlbWVudCA9IHJlcXVpcmUoJy4vaXNUZXh0SW5wdXRFbGVtZW50Jyk7Cit2YXIgc2hhbGxv
d0VxdWFsID0gcmVxdWlyZSgnZmJqcy9saWIvc2hhbGxvd0VxdWFsJyk7CisKK3ZhciBza2lwU2Vs
ZWN0aW9uQ2hhbmdlRXZlbnQgPSBFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00gJiYgJ2Rv
Y3VtZW50TW9kZScgaW4gZG9jdW1lbnQgJiYgZG9jdW1lbnQuZG9jdW1lbnRNb2RlIDw9IDExOwor
Cit2YXIgZXZlbnRUeXBlcyA9IHsKKyAgc2VsZWN0OiB7CisgICAgcGhhc2VkUmVnaXN0cmF0aW9u
TmFtZXM6IHsKKyAgICAgIGJ1YmJsZWQ6ICdvblNlbGVjdCcsCisgICAgICBjYXB0dXJlZDogJ29u
U2VsZWN0Q2FwdHVyZScKKyAgICB9LAorICAgIGRlcGVuZGVuY2llczogWyd0b3BCbHVyJywgJ3Rv
cENvbnRleHRNZW51JywgJ3RvcEZvY3VzJywgJ3RvcEtleURvd24nLCAndG9wS2V5VXAnLCAndG9w
TW91c2VEb3duJywgJ3RvcE1vdXNlVXAnLCAndG9wU2VsZWN0aW9uQ2hhbmdlJ10KKyAgfQorfTsK
KwordmFyIGFjdGl2ZUVsZW1lbnQgPSBudWxsOwordmFyIGFjdGl2ZUVsZW1lbnRJbnN0ID0gbnVs
bDsKK3ZhciBsYXN0U2VsZWN0aW9uID0gbnVsbDsKK3ZhciBtb3VzZURvd24gPSBmYWxzZTsKKwor
Ly8gVHJhY2sgd2hldGhlciBhIGxpc3RlbmVyIGV4aXN0cyBmb3IgdGhpcyBwbHVnaW4uIElmIG5v
bmUgZXhpc3QsIHdlIGRvCisvLyBub3QgZXh0cmFjdCBldmVudHMuIFNlZSAjMzYzOS4KK3ZhciBo
YXNMaXN0ZW5lciA9IGZhbHNlOworCisvKioKKyAqIEdldCBhbiBvYmplY3Qgd2hpY2ggaXMgYSB1
bmlxdWUgcmVwcmVzZW50YXRpb24gb2YgdGhlIGN1cnJlbnQgc2VsZWN0aW9uLgorICoKKyAqIFRo
ZSByZXR1cm4gdmFsdWUgd2lsbCBub3QgYmUgY29uc2lzdGVudCBhY3Jvc3Mgbm9kZXMgb3IgYnJv
d3NlcnMsIGJ1dAorICogdHdvIGlkZW50aWNhbCBzZWxlY3Rpb25zIG9uIHRoZSBzYW1lIG5vZGUg
d2lsbCByZXR1cm4gaWRlbnRpY2FsIG9iamVjdHMuCisgKgorICogQHBhcmFtIHtET01FbGVtZW50
fSBub2RlCisgKiBAcmV0dXJuIHtvYmplY3R9CisgKi8KK2Z1bmN0aW9uIGdldFNlbGVjdGlvbihu
b2RlKSB7CisgIGlmICgnc2VsZWN0aW9uU3RhcnQnIGluIG5vZGUgJiYgUmVhY3RJbnB1dFNlbGVj
dGlvbi5oYXNTZWxlY3Rpb25DYXBhYmlsaXRpZXMobm9kZSkpIHsKKyAgICByZXR1cm4geworICAg
ICAgc3RhcnQ6IG5vZGUuc2VsZWN0aW9uU3RhcnQsCisgICAgICBlbmQ6IG5vZGUuc2VsZWN0aW9u
RW5kCisgICAgfTsKKyAgfSBlbHNlIGlmICh3aW5kb3cuZ2V0U2VsZWN0aW9uKSB7CisgICAgdmFy
IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKKyAgICByZXR1cm4geworICAgICAg
YW5jaG9yTm9kZTogc2VsZWN0aW9uLmFuY2hvck5vZGUsCisgICAgICBhbmNob3JPZmZzZXQ6IHNl
bGVjdGlvbi5hbmNob3JPZmZzZXQsCisgICAgICBmb2N1c05vZGU6IHNlbGVjdGlvbi5mb2N1c05v
ZGUsCisgICAgICBmb2N1c09mZnNldDogc2VsZWN0aW9uLmZvY3VzT2Zmc2V0CisgICAgfTsKKyAg
fSBlbHNlIGlmIChkb2N1bWVudC5zZWxlY3Rpb24pIHsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5zZWxlY3Rpb24uY3JlYXRlUmFuZ2UoKTsKKyAgICByZXR1cm4geworICAgICAgcGFyZW50RWxl
bWVudDogcmFuZ2UucGFyZW50RWxlbWVudCgpLAorICAgICAgdGV4dDogcmFuZ2UudGV4dCwKKyAg
ICAgIHRvcDogcmFuZ2UuYm91bmRpbmdUb3AsCisgICAgICBsZWZ0OiByYW5nZS5ib3VuZGluZ0xl
ZnQKKyAgICB9OworICB9Cit9CisKKy8qKgorICogUG9sbCBzZWxlY3Rpb24gdG8gc2VlIHdoZXRo
ZXIgaXQncyBjaGFuZ2VkLgorICoKKyAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudAorICog
QHJldHVybiB7P1N5bnRoZXRpY0V2ZW50fQorICovCitmdW5jdGlvbiBjb25zdHJ1Y3RTZWxlY3RF
dmVudChuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHsKKyAgLy8gRW5zdXJlIHdlIGhh
dmUgdGhlIHJpZ2h0IGVsZW1lbnQsIGFuZCB0aGF0IHRoZSB1c2VyIGlzIG5vdCBkcmFnZ2luZyBh
CisgIC8vIHNlbGVjdGlvbiAodGhpcyBtYXRjaGVzIG5hdGl2ZSBgc2VsZWN0YCBldmVudCBiZWhh
dmlvcikuIEluIEhUTUw1LCBzZWxlY3QKKyAgLy8gZmlyZXMgb25seSBvbiBpbnB1dCBhbmQgdGV4
dGFyZWEgdGh1cyBpZiB0aGVyZSdzIG5vIGZvY3VzZWQgZWxlbWVudCB3ZQorICAvLyB3b24ndCBk
aXNwYXRjaC4KKyAgaWYgKG1vdXNlRG93biB8fCBhY3RpdmVFbGVtZW50ID09IG51bGwgfHwgYWN0
aXZlRWxlbWVudCAhPT0gZ2V0QWN0aXZlRWxlbWVudCgpKSB7CisgICAgcmV0dXJuIG51bGw7Cisg
IH0KKworICAvLyBPbmx5IGZpcmUgd2hlbiBzZWxlY3Rpb24gaGFzIGFjdHVhbGx5IGNoYW5nZWQu
CisgIHZhciBjdXJyZW50U2VsZWN0aW9uID0gZ2V0U2VsZWN0aW9uKGFjdGl2ZUVsZW1lbnQpOwor
ICBpZiAoIWxhc3RTZWxlY3Rpb24gfHwgIXNoYWxsb3dFcXVhbChsYXN0U2VsZWN0aW9uLCBjdXJy
ZW50U2VsZWN0aW9uKSkgeworICAgIGxhc3RTZWxlY3Rpb24gPSBjdXJyZW50U2VsZWN0aW9uOwor
CisgICAgdmFyIHN5bnRoZXRpY0V2ZW50ID0gU3ludGhldGljRXZlbnQuZ2V0UG9vbGVkKGV2ZW50
VHlwZXMuc2VsZWN0LCBhY3RpdmVFbGVtZW50SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50
VGFyZ2V0KTsKKworICAgIHN5bnRoZXRpY0V2ZW50LnR5cGUgPSAnc2VsZWN0JzsKKyAgICBzeW50
aGV0aWNFdmVudC50YXJnZXQgPSBhY3RpdmVFbGVtZW50OworCisgICAgRXZlbnRQcm9wYWdhdG9y
cy5hY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKHN5bnRoZXRpY0V2ZW50KTsKKworICAgIHJl
dHVybiBzeW50aGV0aWNFdmVudDsKKyAgfQorCisgIHJldHVybiBudWxsOworfQorCisvKioKKyAq
IFRoaXMgcGx1Z2luIGNyZWF0ZXMgYW4gYG9uU2VsZWN0YCBldmVudCB0aGF0IG5vcm1hbGl6ZXMg
c2VsZWN0IGV2ZW50cworICogYWNyb3NzIGZvcm0gZWxlbWVudHMuCisgKgorICogU3VwcG9ydGVk
IGVsZW1lbnRzIGFyZToKKyAqIC0gaW5wdXQgKHNlZSBgaXNUZXh0SW5wdXRFbGVtZW50YCkKKyAq
IC0gdGV4dGFyZWEKKyAqIC0gY29udGVudEVkaXRhYmxlCisgKgorICogVGhpcyBkaWZmZXJzIGZy
b20gbmF0aXZlIGJyb3dzZXIgaW1wbGVtZW50YXRpb25zIGluIHRoZSBmb2xsb3dpbmcgd2F5czoK
KyAqIC0gRmlyZXMgb24gY29udGVudEVkaXRhYmxlIGZpZWxkcyBhcyB3ZWxsIGFzIGlucHV0cy4K
KyAqIC0gRmlyZXMgZm9yIGNvbGxhcHNlZCBzZWxlY3Rpb24uCisgKiAtIEZpcmVzIGFmdGVyIHVz
ZXIgaW5wdXQuCisgKi8KK3ZhciBTZWxlY3RFdmVudFBsdWdpbiA9IHsKKworICBldmVudFR5cGVz
OiBldmVudFR5cGVzLAorCisgIGV4dHJhY3RFdmVudHM6IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUs
IHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkgeworICAgIGlmICgh
aGFzTGlzdGVuZXIpIHsKKyAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIHZhciB0YXJn
ZXROb2RlID0gdGFyZ2V0SW5zdCA/IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUlu
c3RhbmNlKHRhcmdldEluc3QpIDogd2luZG93OworCisgICAgc3dpdGNoICh0b3BMZXZlbFR5cGUp
IHsKKyAgICAgIC8vIFRyYWNrIHRoZSBpbnB1dCBub2RlIHRoYXQgaGFzIGZvY3VzLgorICAgICAg
Y2FzZSAndG9wRm9jdXMnOgorICAgICAgICBpZiAoaXNUZXh0SW5wdXRFbGVtZW50KHRhcmdldE5v
ZGUpIHx8IHRhcmdldE5vZGUuY29udGVudEVkaXRhYmxlID09PSAndHJ1ZScpIHsKKyAgICAgICAg
ICBhY3RpdmVFbGVtZW50ID0gdGFyZ2V0Tm9kZTsKKyAgICAgICAgICBhY3RpdmVFbGVtZW50SW5z
dCA9IHRhcmdldEluc3Q7CisgICAgICAgICAgbGFzdFNlbGVjdGlvbiA9IG51bGw7CisgICAgICAg
IH0KKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICd0b3BCbHVyJzoKKyAgICAgICAgYWN0aXZl
RWxlbWVudCA9IG51bGw7CisgICAgICAgIGFjdGl2ZUVsZW1lbnRJbnN0ID0gbnVsbDsKKyAgICAg
ICAgbGFzdFNlbGVjdGlvbiA9IG51bGw7CisgICAgICAgIGJyZWFrOworCisgICAgICAvLyBEb24n
dCBmaXJlIHRoZSBldmVudCB3aGlsZSB0aGUgdXNlciBpcyBkcmFnZ2luZy4gVGhpcyBtYXRjaGVz
IHRoZQorICAgICAgLy8gc2VtYW50aWNzIG9mIHRoZSBuYXRpdmUgc2VsZWN0IGV2ZW50LgorICAg
ICAgY2FzZSAndG9wTW91c2VEb3duJzoKKyAgICAgICAgbW91c2VEb3duID0gdHJ1ZTsKKyAgICAg
ICAgYnJlYWs7CisgICAgICBjYXNlICd0b3BDb250ZXh0TWVudSc6CisgICAgICBjYXNlICd0b3BN
b3VzZVVwJzoKKyAgICAgICAgbW91c2VEb3duID0gZmFsc2U7CisgICAgICAgIHJldHVybiBjb25z
dHJ1Y3RTZWxlY3RFdmVudChuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpOworCisgICAg
ICAvLyBDaHJvbWUgYW5kIElFIGZpcmUgbm9uLXN0YW5kYXJkIGV2ZW50IHdoZW4gc2VsZWN0aW9u
IGlzIGNoYW5nZWQgKGFuZAorICAgICAgLy8gc29tZXRpbWVzIHdoZW4gaXQgaGFzbid0KS4gSUUn
cyBldmVudCBmaXJlcyBvdXQgb2Ygb3JkZXIgd2l0aCByZXNwZWN0CisgICAgICAvLyB0byBrZXkg
YW5kIGlucHV0IGV2ZW50cyBvbiBkZWxldGlvbiwgc28gd2UgZGlzY2FyZCBpdC4KKyAgICAgIC8v
CisgICAgICAvLyBGaXJlZm94IGRvZXNuJ3Qgc3VwcG9ydCBzZWxlY3Rpb25jaGFuZ2UsIHNvIGNo
ZWNrIHNlbGVjdGlvbiBzdGF0dXMKKyAgICAgIC8vIGFmdGVyIGVhY2gga2V5IGVudHJ5LiBUaGUg
c2VsZWN0aW9uIGNoYW5nZXMgYWZ0ZXIga2V5ZG93biBhbmQgYmVmb3JlCisgICAgICAvLyBrZXl1
cCwgYnV0IHdlIGNoZWNrIG9uIGtleWRvd24gYXMgd2VsbCBpbiB0aGUgY2FzZSBvZiBob2xkaW5n
IGRvd24gYQorICAgICAgLy8ga2V5LCB3aGVuIG11bHRpcGxlIGtleWRvd24gZXZlbnRzIGFyZSBm
aXJlZCBidXQgb25seSBvbmUga2V5dXAgaXMuCisgICAgICAvLyBUaGlzIGlzIGFsc28gb3VyIGFw
cHJvYWNoIGZvciBJRSBoYW5kbGluZywgZm9yIHRoZSByZWFzb24gYWJvdmUuCisgICAgICBjYXNl
ICd0b3BTZWxlY3Rpb25DaGFuZ2UnOgorICAgICAgICBpZiAoc2tpcFNlbGVjdGlvbkNoYW5nZUV2
ZW50KSB7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgIC8vIGZhbGxzIHRocm91
Z2gKKyAgICAgIGNhc2UgJ3RvcEtleURvd24nOgorICAgICAgY2FzZSAndG9wS2V5VXAnOgorICAg
ICAgICByZXR1cm4gY29uc3RydWN0U2VsZWN0RXZlbnQobmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50
VGFyZ2V0KTsKKyAgICB9CisKKyAgICByZXR1cm4gbnVsbDsKKyAgfSwKKworICBkaWRQdXRMaXN0
ZW5lcjogZnVuY3Rpb24gKGluc3QsIHJlZ2lzdHJhdGlvbk5hbWUsIGxpc3RlbmVyKSB7CisgICAg
aWYgKHJlZ2lzdHJhdGlvbk5hbWUgPT09ICdvblNlbGVjdCcpIHsKKyAgICAgIGhhc0xpc3RlbmVy
ID0gdHJ1ZTsKKyAgICB9CisgIH0KK307CisKK21vZHVsZS5leHBvcnRzID0gU2VsZWN0RXZlbnRQ
bHVnaW47ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvU2ltcGxlRXZlbnRQbHVnaW4uanMg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9TaW1wbGVFdmVu
dFBsdWdpbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNmUwYjIxNDhlYzgyNDUxNmY2Nzc1YjE4YzQ0NDBlYzhj
YzI2ZDU5Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVz
L3JlYWN0LWRvbS9saWIvU2ltcGxlRXZlbnRQbHVnaW4uanMKQEAgLTAsMCArMSwyNDIgQEAKKy8q
KgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQK
KyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIAorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFy
IF9wcm9kSW52YXJpYW50ID0gcmVxdWlyZSgnLi9yZWFjdFByb2RJbnZhcmlhbnQnKTsKKwordmFy
IEV2ZW50TGlzdGVuZXIgPSByZXF1aXJlKCdmYmpzL2xpYi9FdmVudExpc3RlbmVyJyk7Cit2YXIg
RXZlbnRQcm9wYWdhdG9ycyA9IHJlcXVpcmUoJy4vRXZlbnRQcm9wYWdhdG9ycycpOwordmFyIFJl
YWN0RE9NQ29tcG9uZW50VHJlZSA9IHJlcXVpcmUoJy4vUmVhY3RET01Db21wb25lbnRUcmVlJyk7
Cit2YXIgU3ludGhldGljQW5pbWF0aW9uRXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY0FuaW1h
dGlvbkV2ZW50Jyk7Cit2YXIgU3ludGhldGljQ2xpcGJvYXJkRXZlbnQgPSByZXF1aXJlKCcuL1N5
bnRoZXRpY0NsaXBib2FyZEV2ZW50Jyk7Cit2YXIgU3ludGhldGljRXZlbnQgPSByZXF1aXJlKCcu
L1N5bnRoZXRpY0V2ZW50Jyk7Cit2YXIgU3ludGhldGljRm9jdXNFdmVudCA9IHJlcXVpcmUoJy4v
U3ludGhldGljRm9jdXNFdmVudCcpOwordmFyIFN5bnRoZXRpY0tleWJvYXJkRXZlbnQgPSByZXF1
aXJlKCcuL1N5bnRoZXRpY0tleWJvYXJkRXZlbnQnKTsKK3ZhciBTeW50aGV0aWNNb3VzZUV2ZW50
ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNNb3VzZUV2ZW50Jyk7Cit2YXIgU3ludGhldGljRHJhZ0V2
ZW50ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNEcmFnRXZlbnQnKTsKK3ZhciBTeW50aGV0aWNUb3Vj
aEV2ZW50ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNUb3VjaEV2ZW50Jyk7Cit2YXIgU3ludGhldGlj
VHJhbnNpdGlvbkV2ZW50ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNUcmFuc2l0aW9uRXZlbnQnKTsK
K3ZhciBTeW50aGV0aWNVSUV2ZW50ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNVSUV2ZW50Jyk7Cit2
YXIgU3ludGhldGljV2hlZWxFdmVudCA9IHJlcXVpcmUoJy4vU3ludGhldGljV2hlZWxFdmVudCcp
OworCit2YXIgZW1wdHlGdW5jdGlvbiA9IHJlcXVpcmUoJ2ZianMvbGliL2VtcHR5RnVuY3Rpb24n
KTsKK3ZhciBnZXRFdmVudENoYXJDb2RlID0gcmVxdWlyZSgnLi9nZXRFdmVudENoYXJDb2RlJyk7
Cit2YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7CisKKy8qKgor
ICogVHVybnMKKyAqIFsnYWJvcnQnLCAuLi5dCisgKiBpbnRvCisgKiBldmVudFR5cGVzID0gewor
ICogICAnYWJvcnQnOiB7CisgKiAgICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHsKKyAqICAg
ICAgIGJ1YmJsZWQ6ICdvbkFib3J0JywKKyAqICAgICAgIGNhcHR1cmVkOiAnb25BYm9ydENhcHR1
cmUnLAorICogICAgIH0sCisgKiAgICAgZGVwZW5kZW5jaWVzOiBbJ3RvcEFib3J0J10sCisgKiAg
IH0sCisgKiAgIC4uLgorICogfTsKKyAqIHRvcExldmVsRXZlbnRzVG9EaXNwYXRjaENvbmZpZyA9
IHsKKyAqICAgJ3RvcEFib3J0JzogeyBzYW1lQ29uZmlnIH0KKyAqIH07CisgKi8KK3ZhciBldmVu
dFR5cGVzID0ge307Cit2YXIgdG9wTGV2ZWxFdmVudHNUb0Rpc3BhdGNoQ29uZmlnID0ge307Citb
J2Fib3J0JywgJ2FuaW1hdGlvbkVuZCcsICdhbmltYXRpb25JdGVyYXRpb24nLCAnYW5pbWF0aW9u
U3RhcnQnLCAnYmx1cicsICdjYW5QbGF5JywgJ2NhblBsYXlUaHJvdWdoJywgJ2NsaWNrJywgJ2Nv
bnRleHRNZW51JywgJ2NvcHknLCAnY3V0JywgJ2RvdWJsZUNsaWNrJywgJ2RyYWcnLCAnZHJhZ0Vu
ZCcsICdkcmFnRW50ZXInLCAnZHJhZ0V4aXQnLCAnZHJhZ0xlYXZlJywgJ2RyYWdPdmVyJywgJ2Ry
YWdTdGFydCcsICdkcm9wJywgJ2R1cmF0aW9uQ2hhbmdlJywgJ2VtcHRpZWQnLCAnZW5jcnlwdGVk
JywgJ2VuZGVkJywgJ2Vycm9yJywgJ2ZvY3VzJywgJ2lucHV0JywgJ2ludmFsaWQnLCAna2V5RG93
bicsICdrZXlQcmVzcycsICdrZXlVcCcsICdsb2FkJywgJ2xvYWRlZERhdGEnLCAnbG9hZGVkTWV0
YWRhdGEnLCAnbG9hZFN0YXJ0JywgJ21vdXNlRG93bicsICdtb3VzZU1vdmUnLCAnbW91c2VPdXQn
LCAnbW91c2VPdmVyJywgJ21vdXNlVXAnLCAncGFzdGUnLCAncGF1c2UnLCAncGxheScsICdwbGF5
aW5nJywgJ3Byb2dyZXNzJywgJ3JhdGVDaGFuZ2UnLCAncmVzZXQnLCAnc2Nyb2xsJywgJ3NlZWtl
ZCcsICdzZWVraW5nJywgJ3N0YWxsZWQnLCAnc3VibWl0JywgJ3N1c3BlbmQnLCAndGltZVVwZGF0
ZScsICd0b3VjaENhbmNlbCcsICd0b3VjaEVuZCcsICd0b3VjaE1vdmUnLCAndG91Y2hTdGFydCcs
ICd0cmFuc2l0aW9uRW5kJywgJ3ZvbHVtZUNoYW5nZScsICd3YWl0aW5nJywgJ3doZWVsJ10uZm9y
RWFjaChmdW5jdGlvbiAoZXZlbnQpIHsKKyAgdmFyIGNhcGl0YWxpemVkRXZlbnQgPSBldmVudFsw
XS50b1VwcGVyQ2FzZSgpICsgZXZlbnQuc2xpY2UoMSk7CisgIHZhciBvbkV2ZW50ID0gJ29uJyAr
IGNhcGl0YWxpemVkRXZlbnQ7CisgIHZhciB0b3BFdmVudCA9ICd0b3AnICsgY2FwaXRhbGl6ZWRF
dmVudDsKKworICB2YXIgdHlwZSA9IHsKKyAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczogewor
ICAgICAgYnViYmxlZDogb25FdmVudCwKKyAgICAgIGNhcHR1cmVkOiBvbkV2ZW50ICsgJ0NhcHR1
cmUnCisgICAgfSwKKyAgICBkZXBlbmRlbmNpZXM6IFt0b3BFdmVudF0KKyAgfTsKKyAgZXZlbnRU
eXBlc1tldmVudF0gPSB0eXBlOworICB0b3BMZXZlbEV2ZW50c1RvRGlzcGF0Y2hDb25maWdbdG9w
RXZlbnRdID0gdHlwZTsKK30pOworCit2YXIgb25DbGlja0xpc3RlbmVycyA9IHt9OworCitmdW5j
dGlvbiBnZXREaWN0aW9uYXJ5S2V5KGluc3QpIHsKKyAgLy8gUHJldmVudHMgVjggcGVyZm9ybWFu
Y2UgaXNzdWU6CisgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9wdWxsLzcy
MzIKKyAgcmV0dXJuICcuJyArIGluc3QuX3Jvb3ROb2RlSUQ7Cit9CisKK2Z1bmN0aW9uIGlzSW50
ZXJhY3RpdmUodGFnKSB7CisgIHJldHVybiB0YWcgPT09ICdidXR0b24nIHx8IHRhZyA9PT0gJ2lu
cHV0JyB8fCB0YWcgPT09ICdzZWxlY3QnIHx8IHRhZyA9PT0gJ3RleHRhcmVhJzsKK30KKworZnVu
Y3Rpb24gc2hvdWxkUHJldmVudE1vdXNlRXZlbnQoaW5zdCkgeworICBpZiAoaW5zdCkgeworICAg
IHZhciBkaXNhYmxlZCA9IGluc3QuX2N1cnJlbnRFbGVtZW50ICYmIGluc3QuX2N1cnJlbnRFbGVt
ZW50LnByb3BzLmRpc2FibGVkOworCisgICAgaWYgKGRpc2FibGVkKSB7CisgICAgICByZXR1cm4g
aXNJbnRlcmFjdGl2ZShpbnN0Ll90YWcpOworICAgIH0KKyAgfQorCisgIHJldHVybiBmYWxzZTsK
K30KKwordmFyIFNpbXBsZUV2ZW50UGx1Z2luID0geworCisgIGV2ZW50VHlwZXM6IGV2ZW50VHlw
ZXMsCisKKyAgZXh0cmFjdEV2ZW50czogZnVuY3Rpb24gKHRvcExldmVsVHlwZSwgdGFyZ2V0SW5z
dCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7CisgICAgdmFyIGRpc3BhdGNoQ29u
ZmlnID0gdG9wTGV2ZWxFdmVudHNUb0Rpc3BhdGNoQ29uZmlnW3RvcExldmVsVHlwZV07CisgICAg
aWYgKCFkaXNwYXRjaENvbmZpZykgeworICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorICAgIHZh
ciBFdmVudENvbnN0cnVjdG9yOworICAgIHN3aXRjaCAodG9wTGV2ZWxUeXBlKSB7CisgICAgICBj
YXNlICd0b3BBYm9ydCc6CisgICAgICBjYXNlICd0b3BDYW5QbGF5JzoKKyAgICAgIGNhc2UgJ3Rv
cENhblBsYXlUaHJvdWdoJzoKKyAgICAgIGNhc2UgJ3RvcER1cmF0aW9uQ2hhbmdlJzoKKyAgICAg
IGNhc2UgJ3RvcEVtcHRpZWQnOgorICAgICAgY2FzZSAndG9wRW5jcnlwdGVkJzoKKyAgICAgIGNh
c2UgJ3RvcEVuZGVkJzoKKyAgICAgIGNhc2UgJ3RvcEVycm9yJzoKKyAgICAgIGNhc2UgJ3RvcElu
cHV0JzoKKyAgICAgIGNhc2UgJ3RvcEludmFsaWQnOgorICAgICAgY2FzZSAndG9wTG9hZCc6Cisg
ICAgICBjYXNlICd0b3BMb2FkZWREYXRhJzoKKyAgICAgIGNhc2UgJ3RvcExvYWRlZE1ldGFkYXRh
JzoKKyAgICAgIGNhc2UgJ3RvcExvYWRTdGFydCc6CisgICAgICBjYXNlICd0b3BQYXVzZSc6Cisg
ICAgICBjYXNlICd0b3BQbGF5JzoKKyAgICAgIGNhc2UgJ3RvcFBsYXlpbmcnOgorICAgICAgY2Fz
ZSAndG9wUHJvZ3Jlc3MnOgorICAgICAgY2FzZSAndG9wUmF0ZUNoYW5nZSc6CisgICAgICBjYXNl
ICd0b3BSZXNldCc6CisgICAgICBjYXNlICd0b3BTZWVrZWQnOgorICAgICAgY2FzZSAndG9wU2Vl
a2luZyc6CisgICAgICBjYXNlICd0b3BTdGFsbGVkJzoKKyAgICAgIGNhc2UgJ3RvcFN1Ym1pdCc6
CisgICAgICBjYXNlICd0b3BTdXNwZW5kJzoKKyAgICAgIGNhc2UgJ3RvcFRpbWVVcGRhdGUnOgor
ICAgICAgY2FzZSAndG9wVm9sdW1lQ2hhbmdlJzoKKyAgICAgIGNhc2UgJ3RvcFdhaXRpbmcnOgor
ICAgICAgICAvLyBIVE1MIEV2ZW50cworICAgICAgICAvLyBAc2VlIGh0dHA6Ly93d3cudzMub3Jn
L1RSL2h0bWw1L2luZGV4Lmh0bWwjZXZlbnRzLTAKKyAgICAgICAgRXZlbnRDb25zdHJ1Y3RvciA9
IFN5bnRoZXRpY0V2ZW50OworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJ3RvcEtleVByZXNz
JzoKKyAgICAgICAgLy8gRmlyZWZveCBjcmVhdGVzIGEga2V5cHJlc3MgZXZlbnQgZm9yIGZ1bmN0
aW9uIGtleXMgdG9vLiBUaGlzIHJlbW92ZXMKKyAgICAgICAgLy8gdGhlIHVud2FudGVkIGtleXBy
ZXNzIGV2ZW50cy4gRW50ZXIgaXMgaG93ZXZlciBib3RoIHByaW50YWJsZSBhbmQKKyAgICAgICAg
Ly8gbm9uLXByaW50YWJsZS4gT25lIHdvdWxkIGV4cGVjdCBUYWIgdG8gYmUgYXMgd2VsbCAoYnV0
IGl0IGlzbid0KS4KKyAgICAgICAgaWYgKGdldEV2ZW50Q2hhckNvZGUobmF0aXZlRXZlbnQpID09
PSAwKSB7CisgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKyAgICAgIC8qIGZhbGxz
IHRocm91Z2ggKi8KKyAgICAgIGNhc2UgJ3RvcEtleURvd24nOgorICAgICAgY2FzZSAndG9wS2V5
VXAnOgorICAgICAgICBFdmVudENvbnN0cnVjdG9yID0gU3ludGhldGljS2V5Ym9hcmRFdmVudDsK
KyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICd0b3BCbHVyJzoKKyAgICAgIGNhc2UgJ3RvcEZv
Y3VzJzoKKyAgICAgICAgRXZlbnRDb25zdHJ1Y3RvciA9IFN5bnRoZXRpY0ZvY3VzRXZlbnQ7Cisg
ICAgICAgIGJyZWFrOworICAgICAgY2FzZSAndG9wQ2xpY2snOgorICAgICAgICAvLyBGaXJlZm94
IGNyZWF0ZXMgYSBjbGljayBldmVudCBvbiByaWdodCBtb3VzZSBjbGlja3MuIFRoaXMgcmVtb3Zl
cyB0aGUKKyAgICAgICAgLy8gdW53YW50ZWQgY2xpY2sgZXZlbnRzLgorICAgICAgICBpZiAobmF0
aXZlRXZlbnQuYnV0dG9uID09PSAyKSB7CisgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAg
IH0KKyAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi8KKyAgICAgIGNhc2UgJ3RvcERvdWJsZUNsaWNr
JzoKKyAgICAgIGNhc2UgJ3RvcE1vdXNlRG93bic6CisgICAgICBjYXNlICd0b3BNb3VzZU1vdmUn
OgorICAgICAgY2FzZSAndG9wTW91c2VVcCc6CisgICAgICAgIC8vIERpc2FibGVkIGVsZW1lbnRz
IHNob3VsZCBub3QgcmVzcG9uZCB0byBtb3VzZSBldmVudHMKKyAgICAgICAgaWYgKHNob3VsZFBy
ZXZlbnRNb3VzZUV2ZW50KHRhcmdldEluc3QpKSB7CisgICAgICAgICAgcmV0dXJuIG51bGw7Cisg
ICAgICAgIH0KKyAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi8KKyAgICAgIGNhc2UgJ3RvcE1vdXNl
T3V0JzoKKyAgICAgIGNhc2UgJ3RvcE1vdXNlT3Zlcic6CisgICAgICBjYXNlICd0b3BDb250ZXh0
TWVudSc6CisgICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0aWNNb3VzZUV2ZW50Owor
ICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJ3RvcERyYWcnOgorICAgICAgY2FzZSAndG9wRHJh
Z0VuZCc6CisgICAgICBjYXNlICd0b3BEcmFnRW50ZXInOgorICAgICAgY2FzZSAndG9wRHJhZ0V4
aXQnOgorICAgICAgY2FzZSAndG9wRHJhZ0xlYXZlJzoKKyAgICAgIGNhc2UgJ3RvcERyYWdPdmVy
JzoKKyAgICAgIGNhc2UgJ3RvcERyYWdTdGFydCc6CisgICAgICBjYXNlICd0b3BEcm9wJzoKKyAg
ICAgICAgRXZlbnRDb25zdHJ1Y3RvciA9IFN5bnRoZXRpY0RyYWdFdmVudDsKKyAgICAgICAgYnJl
YWs7CisgICAgICBjYXNlICd0b3BUb3VjaENhbmNlbCc6CisgICAgICBjYXNlICd0b3BUb3VjaEVu
ZCc6CisgICAgICBjYXNlICd0b3BUb3VjaE1vdmUnOgorICAgICAgY2FzZSAndG9wVG91Y2hTdGFy
dCc6CisgICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0aWNUb3VjaEV2ZW50OworICAg
ICAgICBicmVhazsKKyAgICAgIGNhc2UgJ3RvcEFuaW1hdGlvbkVuZCc6CisgICAgICBjYXNlICd0
b3BBbmltYXRpb25JdGVyYXRpb24nOgorICAgICAgY2FzZSAndG9wQW5pbWF0aW9uU3RhcnQnOgor
ICAgICAgICBFdmVudENvbnN0cnVjdG9yID0gU3ludGhldGljQW5pbWF0aW9uRXZlbnQ7CisgICAg
ICAgIGJyZWFrOworICAgICAgY2FzZSAndG9wVHJhbnNpdGlvbkVuZCc6CisgICAgICAgIEV2ZW50
Q29uc3RydWN0b3IgPSBTeW50aGV0aWNUcmFuc2l0aW9uRXZlbnQ7CisgICAgICAgIGJyZWFrOwor
ICAgICAgY2FzZSAndG9wU2Nyb2xsJzoKKyAgICAgICAgRXZlbnRDb25zdHJ1Y3RvciA9IFN5bnRo
ZXRpY1VJRXZlbnQ7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAndG9wV2hlZWwnOgorICAg
ICAgICBFdmVudENvbnN0cnVjdG9yID0gU3ludGhldGljV2hlZWxFdmVudDsKKyAgICAgICAgYnJl
YWs7CisgICAgICBjYXNlICd0b3BDb3B5JzoKKyAgICAgIGNhc2UgJ3RvcEN1dCc6CisgICAgICBj
YXNlICd0b3BQYXN0ZSc6CisgICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0aWNDbGlw
Ym9hcmRFdmVudDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgICFFdmVudENvbnN0cnVjdG9y
ID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxz
ZSwgJ1NpbXBsZUV2ZW50UGx1Z2luOiBVbmhhbmRsZWQgZXZlbnQgdHlwZSwgYCVzYC4nLCB0b3BM
ZXZlbFR5cGUpIDogX3Byb2RJbnZhcmlhbnQoJzg2JywgdG9wTGV2ZWxUeXBlKSA6IHZvaWQgMDsK
KyAgICB2YXIgZXZlbnQgPSBFdmVudENvbnN0cnVjdG9yLmdldFBvb2xlZChkaXNwYXRjaENvbmZp
ZywgdGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTsKKyAgICBFdmVu
dFByb3BhZ2F0b3JzLmFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXMoZXZlbnQpOworICAgIHJl
dHVybiBldmVudDsKKyAgfSwKKworICBkaWRQdXRMaXN0ZW5lcjogZnVuY3Rpb24gKGluc3QsIHJl
Z2lzdHJhdGlvbk5hbWUsIGxpc3RlbmVyKSB7CisgICAgLy8gTW9iaWxlIFNhZmFyaSBkb2VzIG5v
dCBmaXJlIHByb3Blcmx5IGJ1YmJsZSBjbGljayBldmVudHMgb24KKyAgICAvLyBub24taW50ZXJh
Y3RpdmUgZWxlbWVudHMsIHdoaWNoIG1lYW5zIGRlbGVnYXRlZCBjbGljayBsaXN0ZW5lcnMgZG8g
bm90CisgICAgLy8gZmlyZS4gVGhlIHdvcmthcm91bmQgZm9yIHRoaXMgYnVnIGludm9sdmVzIGF0
dGFjaGluZyBhbiBlbXB0eSBjbGljaworICAgIC8vIGxpc3RlbmVyIG9uIHRoZSB0YXJnZXQgbm9k
ZS4KKyAgICAvLyBodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2Jsb2cvYXJjaGl2ZXMvMjAxMC8w
OS9jbGlja19ldmVudF9kZWwuaHRtbAorICAgIGlmIChyZWdpc3RyYXRpb25OYW1lID09PSAnb25D
bGljaycgJiYgIWlzSW50ZXJhY3RpdmUoaW5zdC5fdGFnKSkgeworICAgICAgdmFyIGtleSA9IGdl
dERpY3Rpb25hcnlLZXkoaW5zdCk7CisgICAgICB2YXIgbm9kZSA9IFJlYWN0RE9NQ29tcG9uZW50
VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKGluc3QpOworICAgICAgaWYgKCFvbkNsaWNrTGlzdGVu
ZXJzW2tleV0pIHsKKyAgICAgICAgb25DbGlja0xpc3RlbmVyc1trZXldID0gRXZlbnRMaXN0ZW5l
ci5saXN0ZW4obm9kZSwgJ2NsaWNrJywgZW1wdHlGdW5jdGlvbik7CisgICAgICB9CisgICAgfQor
ICB9LAorCisgIHdpbGxEZWxldGVMaXN0ZW5lcjogZnVuY3Rpb24gKGluc3QsIHJlZ2lzdHJhdGlv
bk5hbWUpIHsKKyAgICBpZiAocmVnaXN0cmF0aW9uTmFtZSA9PT0gJ29uQ2xpY2snICYmICFpc0lu
dGVyYWN0aXZlKGluc3QuX3RhZykpIHsKKyAgICAgIHZhciBrZXkgPSBnZXREaWN0aW9uYXJ5S2V5
KGluc3QpOworICAgICAgb25DbGlja0xpc3RlbmVyc1trZXldLnJlbW92ZSgpOworICAgICAgZGVs
ZXRlIG9uQ2xpY2tMaXN0ZW5lcnNba2V5XTsKKyAgICB9CisgIH0KKworfTsKKworbW9kdWxlLmV4
cG9ydHMgPSBTaW1wbGVFdmVudFBsdWdpbjsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9T
eW50aGV0aWNBbmltYXRpb25FdmVudC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxl
cy9yZWFjdC1kb20vbGliL1N5bnRoZXRpY0FuaW1hdGlvbkV2ZW50LmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVi
OGQ0MTAyZTRiM2NkMmJiOTMzMmMyMTMyNzBjNGZiYjYwMjlkN2YKLS0tIC9kZXYvbnVsbAorKysg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9TeW50aGV0aWNB
bmltYXRpb25FdmVudC5qcwpAQCAtMCwwICsxLDM4IEBACisvKioKKyAqIENvcHlyaWdodCAyMDEz
LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNl
IGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0
aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRz
IGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4K
KyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgU3ludGhldGljRXZlbnQgPSByZXF1aXJl
KCcuL1N5bnRoZXRpY0V2ZW50Jyk7CisKKy8qKgorICogQGludGVyZmFjZSBFdmVudAorICogQHNl
ZSBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLWFuaW1hdGlvbnMvI0FuaW1hdGlvbkV2ZW50LWlu
dGVyZmFjZQorICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2Nz
L1dlYi9BUEkvQW5pbWF0aW9uRXZlbnQKKyAqLwordmFyIEFuaW1hdGlvbkV2ZW50SW50ZXJmYWNl
ID0geworICBhbmltYXRpb25OYW1lOiBudWxsLAorICBlbGFwc2VkVGltZTogbnVsbCwKKyAgcHNl
dWRvRWxlbWVudDogbnVsbAorfTsKKworLyoqCisgKiBAcGFyYW0ge29iamVjdH0gZGlzcGF0Y2hD
b25maWcgQ29uZmlndXJhdGlvbiB1c2VkIHRvIGRpc3BhdGNoIHRoaXMgZXZlbnQuCisgKiBAcGFy
YW0ge3N0cmluZ30gZGlzcGF0Y2hNYXJrZXIgTWFya2VyIGlkZW50aWZ5aW5nIHRoZSBldmVudCB0
YXJnZXQuCisgKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZl
bnQuCisgKiBAZXh0ZW5kcyB7U3ludGhldGljRXZlbnR9CisgKi8KK2Z1bmN0aW9uIFN5bnRoZXRp
Y0FuaW1hdGlvbkV2ZW50KGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZl
bnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7CisgIHJldHVybiBTeW50aGV0aWNFdmVudC5jYWxsKHRo
aXMsIGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2
ZW50VGFyZ2V0KTsKK30KKworU3ludGhldGljRXZlbnQuYXVnbWVudENsYXNzKFN5bnRoZXRpY0Fu
aW1hdGlvbkV2ZW50LCBBbmltYXRpb25FdmVudEludGVyZmFjZSk7CisKK21vZHVsZS5leHBvcnRz
ID0gU3ludGhldGljQW5pbWF0aW9uRXZlbnQ7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIv
U3ludGhldGljQ2xpcGJvYXJkRXZlbnQuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVs
ZXMvcmVhY3QtZG9tL2xpYi9TeW50aGV0aWNDbGlwYm9hcmRFdmVudC5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
NTM3NTQ1YjAwNzg5MzFmMTRlYTllNTVhYzIxZjYxYTYzYzY1YWViCi0tLSAvZGV2L251bGwKKysr
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvU3ludGhldGlj
Q2xpcGJvYXJkRXZlbnQuanMKQEAgLTAsMCArMSwzNyBAQAorLyoqCisgKiBDb3B5cmlnaHQgMjAx
My1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5z
ZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2Yg
dGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0
cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnku
CisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIFN5bnRoZXRpY0V2ZW50ID0gcmVxdWly
ZSgnLi9TeW50aGV0aWNFdmVudCcpOworCisvKioKKyAqIEBpbnRlcmZhY2UgRXZlbnQKKyAqIEBz
ZWUgaHR0cDovL3d3dy53My5vcmcvVFIvY2xpcGJvYXJkLWFwaXMvCisgKi8KK3ZhciBDbGlwYm9h
cmRFdmVudEludGVyZmFjZSA9IHsKKyAgY2xpcGJvYXJkRGF0YTogZnVuY3Rpb24gKGV2ZW50KSB7
CisgICAgcmV0dXJuICdjbGlwYm9hcmREYXRhJyBpbiBldmVudCA/IGV2ZW50LmNsaXBib2FyZERh
dGEgOiB3aW5kb3cuY2xpcGJvYXJkRGF0YTsKKyAgfQorfTsKKworLyoqCisgKiBAcGFyYW0ge29i
amVjdH0gZGlzcGF0Y2hDb25maWcgQ29uZmlndXJhdGlvbiB1c2VkIHRvIGRpc3BhdGNoIHRoaXMg
ZXZlbnQuCisgKiBAcGFyYW0ge3N0cmluZ30gZGlzcGF0Y2hNYXJrZXIgTWFya2VyIGlkZW50aWZ5
aW5nIHRoZSBldmVudCB0YXJnZXQuCisgKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0
aXZlIGJyb3dzZXIgZXZlbnQuCisgKiBAZXh0ZW5kcyB7U3ludGhldGljVUlFdmVudH0KKyAqLwor
ZnVuY3Rpb24gU3ludGhldGljQ2xpcGJvYXJkRXZlbnQoZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNo
TWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHsKKyAgcmV0dXJuIFN5bnRo
ZXRpY0V2ZW50LmNhbGwodGhpcywgZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRp
dmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpOworfQorCitTeW50aGV0aWNFdmVudC5hdWdtZW50
Q2xhc3MoU3ludGhldGljQ2xpcGJvYXJkRXZlbnQsIENsaXBib2FyZEV2ZW50SW50ZXJmYWNlKTsK
KworbW9kdWxlLmV4cG9ydHMgPSBTeW50aGV0aWNDbGlwYm9hcmRFdmVudDsKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVs
ZXMvcmVhY3QtZG9tL2xpYi9TeW50aGV0aWNDb21wb3NpdGlvbkV2ZW50LmpzIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvU3ludGhldGljQ29tcG9zaXRpb25F
dmVudC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45NmNjM2QzNjlmZmM5NTJiMWIzNjNhZmFkNWExNzRjMTIwNzQx
ZTY2Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3Jl
YWN0LWRvbS9saWIvU3ludGhldGljQ29tcG9zaXRpb25FdmVudC5qcwpAQCAtMCwwICsxLDM1IEBA
CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5k
ZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdy
YW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxl
IGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIg
U3ludGhldGljRXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY0V2ZW50Jyk7CisKKy8qKgorICog
QGludGVyZmFjZSBFdmVudAorICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2ZWwt
My1FdmVudHMvI2V2ZW50cy1jb21wb3NpdGlvbmV2ZW50cworICovCit2YXIgQ29tcG9zaXRpb25F
dmVudEludGVyZmFjZSA9IHsKKyAgZGF0YTogbnVsbAorfTsKKworLyoqCisgKiBAcGFyYW0ge29i
amVjdH0gZGlzcGF0Y2hDb25maWcgQ29uZmlndXJhdGlvbiB1c2VkIHRvIGRpc3BhdGNoIHRoaXMg
ZXZlbnQuCisgKiBAcGFyYW0ge3N0cmluZ30gZGlzcGF0Y2hNYXJrZXIgTWFya2VyIGlkZW50aWZ5
aW5nIHRoZSBldmVudCB0YXJnZXQuCisgKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0
aXZlIGJyb3dzZXIgZXZlbnQuCisgKiBAZXh0ZW5kcyB7U3ludGhldGljVUlFdmVudH0KKyAqLwor
ZnVuY3Rpb24gU3ludGhldGljQ29tcG9zaXRpb25FdmVudChkaXNwYXRjaENvbmZpZywgZGlzcGF0
Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkgeworICByZXR1cm4gU3lu
dGhldGljRXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5h
dGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7Cit9CisKK1N5bnRoZXRpY0V2ZW50LmF1Z21l
bnRDbGFzcyhTeW50aGV0aWNDb21wb3NpdGlvbkV2ZW50LCBDb21wb3NpdGlvbkV2ZW50SW50ZXJm
YWNlKTsKKworbW9kdWxlLmV4cG9ydHMgPSBTeW50aGV0aWNDb21wb3NpdGlvbkV2ZW50OwpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25v
ZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1N5bnRoZXRpY0RyYWdFdmVudC5qcyBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1N5bnRoZXRpY0RyYWdFdmVudC5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43YjVlOTg4MmJmYmQ2MjA0YWZkZjQ1NzE2NDU4NDQ5YWJhMjVlM2Y2Ci0t
LSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRv
bS9saWIvU3ludGhldGljRHJhZ0V2ZW50LmpzCkBAIC0wLDAgKzEsMzUgQEAKKy8qKgorICogQ29w
eXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0
eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBTeW50aGV0aWNNb3Vz
ZUV2ZW50ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNNb3VzZUV2ZW50Jyk7CisKKy8qKgorICogQGlu
dGVyZmFjZSBEcmFnRXZlbnQKKyAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvRE9NLUxldmVs
LTMtRXZlbnRzLworICovCit2YXIgRHJhZ0V2ZW50SW50ZXJmYWNlID0geworICBkYXRhVHJhbnNm
ZXI6IG51bGwKK307CisKKy8qKgorICogQHBhcmFtIHtvYmplY3R9IGRpc3BhdGNoQ29uZmlnIENv
bmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRjaCB0aGlzIGV2ZW50LgorICogQHBhcmFtIHtzdHJp
bmd9IGRpc3BhdGNoTWFya2VyIE1hcmtlciBpZGVudGlmeWluZyB0aGUgZXZlbnQgdGFyZ2V0Lgor
ICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LgorICog
QGV4dGVuZHMge1N5bnRoZXRpY1VJRXZlbnR9CisgKi8KK2Z1bmN0aW9uIFN5bnRoZXRpY0RyYWdF
dmVudChkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVF
dmVudFRhcmdldCkgeworICByZXR1cm4gU3ludGhldGljTW91c2VFdmVudC5jYWxsKHRoaXMsIGRp
c3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFy
Z2V0KTsKK30KKworU3ludGhldGljTW91c2VFdmVudC5hdWdtZW50Q2xhc3MoU3ludGhldGljRHJh
Z0V2ZW50LCBEcmFnRXZlbnRJbnRlcmZhY2UpOworCittb2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRp
Y0RyYWdFdmVudDsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9TeW50aGV0aWNFdmVudC5q
cyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1N5bnRoZXRp
Y0V2ZW50LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZiNzQ1Y2NjYzQ0Mzg5M2M1NmYwM2JmZWVjMjZmNDQ5NTMz
NDZlY2IKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMv
cmVhY3QtZG9tL2xpYi9TeW50aGV0aWNFdmVudC5qcwpAQCAtMCwwICsxLDI2NyBAQAorLyoqCisg
KiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBC
U0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICog
b2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUg
c2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9hc3NpZ24g
PSByZXF1aXJlKCdvYmplY3QtYXNzaWduJyk7CisKK3ZhciBQb29sZWRDbGFzcyA9IHJlcXVpcmUo
Jy4vUG9vbGVkQ2xhc3MnKTsKKwordmFyIGVtcHR5RnVuY3Rpb24gPSByZXF1aXJlKCdmYmpzL2xp
Yi9lbXB0eUZ1bmN0aW9uJyk7Cit2YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5p
bmcnKTsKKwordmFyIGRpZFdhcm5Gb3JBZGRlZE5ld1Byb3BlcnR5ID0gZmFsc2U7Cit2YXIgaXNQ
cm94eVN1cHBvcnRlZCA9IHR5cGVvZiBQcm94eSA9PT0gJ2Z1bmN0aW9uJzsKKwordmFyIHNob3Vs
ZEJlUmVsZWFzZWRQcm9wZXJ0aWVzID0gWydkaXNwYXRjaENvbmZpZycsICdfdGFyZ2V0SW5zdCcs
ICduYXRpdmVFdmVudCcsICdpc0RlZmF1bHRQcmV2ZW50ZWQnLCAnaXNQcm9wYWdhdGlvblN0b3Bw
ZWQnLCAnX2Rpc3BhdGNoTGlzdGVuZXJzJywgJ19kaXNwYXRjaEluc3RhbmNlcyddOworCisvKioK
KyAqIEBpbnRlcmZhY2UgRXZlbnQKKyAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvRE9NLUxl
dmVsLTMtRXZlbnRzLworICovCit2YXIgRXZlbnRJbnRlcmZhY2UgPSB7CisgIHR5cGU6IG51bGws
CisgIHRhcmdldDogbnVsbCwKKyAgLy8gY3VycmVudFRhcmdldCBpcyBzZXQgd2hlbiBkaXNwYXRj
aGluZzsgbm8gdXNlIGluIGNvcHlpbmcgaXQgaGVyZQorICBjdXJyZW50VGFyZ2V0OiBlbXB0eUZ1
bmN0aW9uLnRoYXRSZXR1cm5zTnVsbCwKKyAgZXZlbnRQaGFzZTogbnVsbCwKKyAgYnViYmxlczog
bnVsbCwKKyAgY2FuY2VsYWJsZTogbnVsbCwKKyAgdGltZVN0YW1wOiBmdW5jdGlvbiAoZXZlbnQp
IHsKKyAgICByZXR1cm4gZXZlbnQudGltZVN0YW1wIHx8IERhdGUubm93KCk7CisgIH0sCisgIGRl
ZmF1bHRQcmV2ZW50ZWQ6IG51bGwsCisgIGlzVHJ1c3RlZDogbnVsbAorfTsKKworLyoqCisgKiBT
eW50aGV0aWMgZXZlbnRzIGFyZSBkaXNwYXRjaGVkIGJ5IGV2ZW50IHBsdWdpbnMsIHR5cGljYWxs
eSBpbiByZXNwb25zZSB0byBhCisgKiB0b3AtbGV2ZWwgZXZlbnQgZGVsZWdhdGlvbiBoYW5kbGVy
LgorICoKKyAqIFRoZXNlIHN5c3RlbXMgc2hvdWxkIGdlbmVyYWxseSB1c2UgcG9vbGluZyB0byBy
ZWR1Y2UgdGhlIGZyZXF1ZW5jeSBvZiBnYXJiYWdlCisgKiBjb2xsZWN0aW9uLiBUaGUgc3lzdGVt
IHNob3VsZCBjaGVjayBgaXNQZXJzaXN0ZW50YCB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUKKyAq
IGV2ZW50IHNob3VsZCBiZSByZWxlYXNlZCBpbnRvIHRoZSBwb29sIGFmdGVyIGJlaW5nIGRpc3Bh
dGNoZWQuIFVzZXJzIHRoYXQKKyAqIG5lZWQgYSBwZXJzaXN0ZWQgZXZlbnQgc2hvdWxkIGludm9r
ZSBgcGVyc2lzdGAuCisgKgorICogU3ludGhldGljIGV2ZW50cyAoYW5kIHN1YmNsYXNzZXMpIGlt
cGxlbWVudCB0aGUgRE9NIExldmVsIDMgRXZlbnRzIEFQSSBieQorICogbm9ybWFsaXppbmcgYnJv
d3NlciBxdWlya3MuIFN1YmNsYXNzZXMgZG8gbm90IG5lY2Vzc2FyaWx5IGhhdmUgdG8gaW1wbGVt
ZW50IGEKKyAqIERPTSBpbnRlcmZhY2U7IGN1c3RvbSBhcHBsaWNhdGlvbi1zcGVjaWZpYyBldmVu
dHMgY2FuIGFsc28gc3ViY2xhc3MgdGhpcy4KKyAqCisgKiBAcGFyYW0ge29iamVjdH0gZGlzcGF0
Y2hDb25maWcgQ29uZmlndXJhdGlvbiB1c2VkIHRvIGRpc3BhdGNoIHRoaXMgZXZlbnQuCisgKiBA
cGFyYW0geyp9IHRhcmdldEluc3QgTWFya2VyIGlkZW50aWZ5aW5nIHRoZSBldmVudCB0YXJnZXQu
CisgKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuCisg
KiBAcGFyYW0ge0RPTUV2ZW50VGFyZ2V0fSBuYXRpdmVFdmVudFRhcmdldCBUYXJnZXQgbm9kZS4K
KyAqLworZnVuY3Rpb24gU3ludGhldGljRXZlbnQoZGlzcGF0Y2hDb25maWcsIHRhcmdldEluc3Qs
IG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkgeworICBpZiAocHJvY2Vzcy5lbnYuTk9E
RV9FTlYgIT09ICdwcm9kdWN0aW9uJykgeworICAgIC8vIHRoZXNlIGhhdmUgYSBnZXR0ZXIvc2V0
dGVyIGZvciB3YXJuaW5ncworICAgIGRlbGV0ZSB0aGlzLm5hdGl2ZUV2ZW50OworICAgIGRlbGV0
ZSB0aGlzLnByZXZlbnREZWZhdWx0OworICAgIGRlbGV0ZSB0aGlzLnN0b3BQcm9wYWdhdGlvbjsK
KyAgfQorCisgIHRoaXMuZGlzcGF0Y2hDb25maWcgPSBkaXNwYXRjaENvbmZpZzsKKyAgdGhpcy5f
dGFyZ2V0SW5zdCA9IHRhcmdldEluc3Q7CisgIHRoaXMubmF0aXZlRXZlbnQgPSBuYXRpdmVFdmVu
dDsKKworICB2YXIgSW50ZXJmYWNlID0gdGhpcy5jb25zdHJ1Y3Rvci5JbnRlcmZhY2U7CisgIGZv
ciAodmFyIHByb3BOYW1lIGluIEludGVyZmFjZSkgeworICAgIGlmICghSW50ZXJmYWNlLmhhc093
blByb3BlcnR5KHByb3BOYW1lKSkgeworICAgICAgY29udGludWU7CisgICAgfQorICAgIGlmIChw
cm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICBkZWxldGUgdGhp
c1twcm9wTmFtZV07IC8vIHRoaXMgaGFzIGEgZ2V0dGVyL3NldHRlciBmb3Igd2FybmluZ3MKKyAg
ICB9CisgICAgdmFyIG5vcm1hbGl6ZSA9IEludGVyZmFjZVtwcm9wTmFtZV07CisgICAgaWYgKG5v
cm1hbGl6ZSkgeworICAgICAgdGhpc1twcm9wTmFtZV0gPSBub3JtYWxpemUobmF0aXZlRXZlbnQp
OworICAgIH0gZWxzZSB7CisgICAgICBpZiAocHJvcE5hbWUgPT09ICd0YXJnZXQnKSB7CisgICAg
ICAgIHRoaXMudGFyZ2V0ID0gbmF0aXZlRXZlbnRUYXJnZXQ7CisgICAgICB9IGVsc2UgeworICAg
ICAgICB0aGlzW3Byb3BOYW1lXSA9IG5hdGl2ZUV2ZW50W3Byb3BOYW1lXTsKKyAgICAgIH0KKyAg
ICB9CisgIH0KKworICB2YXIgZGVmYXVsdFByZXZlbnRlZCA9IG5hdGl2ZUV2ZW50LmRlZmF1bHRQ
cmV2ZW50ZWQgIT0gbnVsbCA/IG5hdGl2ZUV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQgOiBuYXRpdmVF
dmVudC5yZXR1cm5WYWx1ZSA9PT0gZmFsc2U7CisgIGlmIChkZWZhdWx0UHJldmVudGVkKSB7Cisg
ICAgdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQgPSBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zVHJ1
ZTsKKyAgfSBlbHNlIHsKKyAgICB0aGlzLmlzRGVmYXVsdFByZXZlbnRlZCA9IGVtcHR5RnVuY3Rp
b24udGhhdFJldHVybnNGYWxzZTsKKyAgfQorICB0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkID0g
ZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc0ZhbHNlOworICByZXR1cm4gdGhpczsKK30KKworX2Fz
c2lnbihTeW50aGV0aWNFdmVudC5wcm90b3R5cGUsIHsKKworICBwcmV2ZW50RGVmYXVsdDogZnVu
Y3Rpb24gKCkgeworICAgIHRoaXMuZGVmYXVsdFByZXZlbnRlZCA9IHRydWU7CisgICAgdmFyIGV2
ZW50ID0gdGhpcy5uYXRpdmVFdmVudDsKKyAgICBpZiAoIWV2ZW50KSB7CisgICAgICByZXR1cm47
CisgICAgfQorCisgICAgaWYgKGV2ZW50LnByZXZlbnREZWZhdWx0KSB7CisgICAgICBldmVudC5w
cmV2ZW50RGVmYXVsdCgpOworICAgIH0gZWxzZSBpZiAodHlwZW9mIGV2ZW50LnJldHVyblZhbHVl
ICE9PSAndW5rbm93bicpIHsKKyAgICAgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgdmFsaWQtdHlw
ZW9mCisgICAgICBldmVudC5yZXR1cm5WYWx1ZSA9IGZhbHNlOworICAgIH0KKyAgICB0aGlzLmlz
RGVmYXVsdFByZXZlbnRlZCA9IGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNUcnVlOworICB9LAor
CisgIHN0b3BQcm9wYWdhdGlvbjogZnVuY3Rpb24gKCkgeworICAgIHZhciBldmVudCA9IHRoaXMu
bmF0aXZlRXZlbnQ7CisgICAgaWYgKCFldmVudCkgeworICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGlmIChldmVudC5zdG9wUHJvcGFnYXRpb24pIHsKKyAgICAgIGV2ZW50LnN0b3BQcm9wYWdh
dGlvbigpOworICAgIH0gZWxzZSBpZiAodHlwZW9mIGV2ZW50LmNhbmNlbEJ1YmJsZSAhPT0gJ3Vu
a25vd24nKSB7CisgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHZhbGlkLXR5cGVvZgorICAg
ICAgLy8gVGhlIENoYW5nZUV2ZW50UGx1Z2luIHJlZ2lzdGVycyBhICJwcm9wZXJ0eWNoYW5nZSIg
ZXZlbnQgZm9yCisgICAgICAvLyBJRS4gVGhpcyBldmVudCBkb2VzIG5vdCBzdXBwb3J0IGJ1YmJs
aW5nIG9yIGNhbmNlbGxpbmcsIGFuZAorICAgICAgLy8gYW55IHJlZmVyZW5jZXMgdG8gY2FuY2Vs
QnViYmxlIHRocm93ICJNZW1iZXIgbm90IGZvdW5kIi4gIEEKKyAgICAgIC8vIHR5cGVvZiBjaGVj
ayBvZiAidW5rbm93biIgY2lyY3VtdmVudHMgdGhpcyBpc3N1ZSAoYW5kIGlzIGFsc28KKyAgICAg
IC8vIElFIHNwZWNpZmljKS4KKyAgICAgIGV2ZW50LmNhbmNlbEJ1YmJsZSA9IHRydWU7CisgICAg
fQorCisgICAgdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZCA9IGVtcHR5RnVuY3Rpb24udGhhdFJl
dHVybnNUcnVlOworICB9LAorCisgIC8qKgorICAgKiBXZSByZWxlYXNlIGFsbCBkaXNwYXRjaGVk
IGBTeW50aGV0aWNFdmVudGBzIGFmdGVyIGVhY2ggZXZlbnQgbG9vcCwgYWRkaW5nCisgICAqIHRo
ZW0gYmFjayBpbnRvIHRoZSBwb29sLiBUaGlzIGFsbG93cyBhIHdheSB0byBob2xkIG9udG8gYSBy
ZWZlcmVuY2UgdGhhdAorICAgKiB3b24ndCBiZSBhZGRlZCBiYWNrIGludG8gdGhlIHBvb2wuCisg
ICAqLworICBwZXJzaXN0OiBmdW5jdGlvbiAoKSB7CisgICAgdGhpcy5pc1BlcnNpc3RlbnQgPSBl
bXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zVHJ1ZTsKKyAgfSwKKworICAvKioKKyAgICogQ2hlY2tz
IGlmIHRoaXMgZXZlbnQgc2hvdWxkIGJlIHJlbGVhc2VkIGJhY2sgaW50byB0aGUgcG9vbC4KKyAg
ICoKKyAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGlzIHNob3VsZCBub3QgYmUgcmVs
ZWFzZWQsIGZhbHNlIG90aGVyd2lzZS4KKyAgICovCisgIGlzUGVyc2lzdGVudDogZW1wdHlGdW5j
dGlvbi50aGF0UmV0dXJuc0ZhbHNlLAorCisgIC8qKgorICAgKiBgUG9vbGVkQ2xhc3NgIGxvb2tz
IGZvciBgZGVzdHJ1Y3RvcmAgb24gZWFjaCBpbnN0YW5jZSBpdCByZWxlYXNlcy4KKyAgICovCisg
IGRlc3RydWN0b3I6IGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgSW50ZXJmYWNlID0gdGhpcy5jb25z
dHJ1Y3Rvci5JbnRlcmZhY2U7CisgICAgZm9yICh2YXIgcHJvcE5hbWUgaW4gSW50ZXJmYWNlKSB7
CisgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgeworICAg
ICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgcHJvcE5hbWUsIGdldFBvb2xlZFdhcm5p
bmdQcm9wZXJ0eURlZmluaXRpb24ocHJvcE5hbWUsIEludGVyZmFjZVtwcm9wTmFtZV0pKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHRoaXNbcHJvcE5hbWVdID0gbnVsbDsKKyAgICAgIH0KKyAg
ICB9CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaG91bGRCZVJlbGVhc2VkUHJvcGVydGllcy5s
ZW5ndGg7IGkrKykgeworICAgICAgdGhpc1tzaG91bGRCZVJlbGVhc2VkUHJvcGVydGllc1tpXV0g
PSBudWxsOworICAgIH0KKyAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJykgeworICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICduYXRpdmVFdmVudCcs
IGdldFBvb2xlZFdhcm5pbmdQcm9wZXJ0eURlZmluaXRpb24oJ25hdGl2ZUV2ZW50JywgbnVsbCkp
OworICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICdwcmV2ZW50RGVmYXVsdCcsIGdl
dFBvb2xlZFdhcm5pbmdQcm9wZXJ0eURlZmluaXRpb24oJ3ByZXZlbnREZWZhdWx0JywgZW1wdHlG
dW5jdGlvbikpOworICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICdzdG9wUHJvcGFn
YXRpb24nLCBnZXRQb29sZWRXYXJuaW5nUHJvcGVydHlEZWZpbml0aW9uKCdzdG9wUHJvcGFnYXRp
b24nLCBlbXB0eUZ1bmN0aW9uKSk7CisgICAgfQorICB9CisKK30pOworCitTeW50aGV0aWNFdmVu
dC5JbnRlcmZhY2UgPSBFdmVudEludGVyZmFjZTsKKworaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicpIHsKKyAgaWYgKGlzUHJveHlTdXBwb3J0ZWQpIHsKKyAgICAvKmVz
bGludC1kaXNhYmxlIG5vLWZ1bmMtYXNzaWduICovCisgICAgU3ludGhldGljRXZlbnQgPSBuZXcg
UHJveHkoU3ludGhldGljRXZlbnQsIHsKKyAgICAgIGNvbnN0cnVjdDogZnVuY3Rpb24gKHRhcmdl
dCwgYXJncykgeworICAgICAgICByZXR1cm4gdGhpcy5hcHBseSh0YXJnZXQsIE9iamVjdC5jcmVh
dGUodGFyZ2V0LnByb3RvdHlwZSksIGFyZ3MpOworICAgICAgfSwKKyAgICAgIGFwcGx5OiBmdW5j
dGlvbiAoY29uc3RydWN0b3IsIHRoYXQsIGFyZ3MpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQcm94
eShjb25zdHJ1Y3Rvci5hcHBseSh0aGF0LCBhcmdzKSwgeworICAgICAgICAgIHNldDogZnVuY3Rp
b24gKHRhcmdldCwgcHJvcCwgdmFsdWUpIHsKKyAgICAgICAgICAgIGlmIChwcm9wICE9PSAnaXNQ
ZXJzaXN0ZW50JyAmJiAhdGFyZ2V0LmNvbnN0cnVjdG9yLkludGVyZmFjZS5oYXNPd25Qcm9wZXJ0
eShwcm9wKSAmJiBzaG91bGRCZVJlbGVhc2VkUHJvcGVydGllcy5pbmRleE9mKHByb3ApID09PSAt
MSkgeworICAgICAgICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24n
ID8gd2FybmluZyhkaWRXYXJuRm9yQWRkZWROZXdQcm9wZXJ0eSB8fCB0YXJnZXQuaXNQZXJzaXN0
ZW50KCksICdUaGlzIHN5bnRoZXRpYyBldmVudCBpcyByZXVzZWQgZm9yIHBlcmZvcm1hbmNlIHJl
YXNvbnMuIElmIHlvdVwncmUgJyArICdzZWVpbmcgdGhpcywgeW91XCdyZSBhZGRpbmcgYSBuZXcg
cHJvcGVydHkgaW4gdGhlIHN5bnRoZXRpYyBldmVudCBvYmplY3QuICcgKyAnVGhlIHByb3BlcnR5
IGlzIG5ldmVyIHJlbGVhc2VkLiBTZWUgJyArICdodHRwczovL2ZiLm1lL3JlYWN0LWV2ZW50LXBv
b2xpbmcgZm9yIG1vcmUgaW5mb3JtYXRpb24uJykgOiB2b2lkIDA7CisgICAgICAgICAgICAgIGRp
ZFdhcm5Gb3JBZGRlZE5ld1Byb3BlcnR5ID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIHRhcmdldFtwcm9wXSA9IHZhbHVlOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgICAgfQorICAgICAgICB9KTsKKyAgICAgIH0KKyAgICB9KTsKKyAgICAvKmVzbGludC1lbmFi
bGUgbm8tZnVuYy1hc3NpZ24gKi8KKyAgfQorfQorLyoqCisgKiBIZWxwZXIgdG8gcmVkdWNlIGJv
aWxlcnBsYXRlIHdoZW4gY3JlYXRpbmcgc3ViY2xhc3Nlcy4KKyAqCisgKiBAcGFyYW0ge2Z1bmN0
aW9ufSBDbGFzcworICogQHBhcmFtIHs/b2JqZWN0fSBJbnRlcmZhY2UKKyAqLworU3ludGhldGlj
RXZlbnQuYXVnbWVudENsYXNzID0gZnVuY3Rpb24gKENsYXNzLCBJbnRlcmZhY2UpIHsKKyAgdmFy
IFN1cGVyID0gdGhpczsKKworICB2YXIgRSA9IGZ1bmN0aW9uICgpIHt9OworICBFLnByb3RvdHlw
ZSA9IFN1cGVyLnByb3RvdHlwZTsKKyAgdmFyIHByb3RvdHlwZSA9IG5ldyBFKCk7CisKKyAgX2Fz
c2lnbihwcm90b3R5cGUsIENsYXNzLnByb3RvdHlwZSk7CisgIENsYXNzLnByb3RvdHlwZSA9IHBy
b3RvdHlwZTsKKyAgQ2xhc3MucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQ2xhc3M7CisKKyAgQ2xh
c3MuSW50ZXJmYWNlID0gX2Fzc2lnbih7fSwgU3VwZXIuSW50ZXJmYWNlLCBJbnRlcmZhY2UpOwor
ICBDbGFzcy5hdWdtZW50Q2xhc3MgPSBTdXBlci5hdWdtZW50Q2xhc3M7CisKKyAgUG9vbGVkQ2xh
c3MuYWRkUG9vbGluZ1RvKENsYXNzLCBQb29sZWRDbGFzcy5mb3VyQXJndW1lbnRQb29sZXIpOwor
fTsKKworUG9vbGVkQ2xhc3MuYWRkUG9vbGluZ1RvKFN5bnRoZXRpY0V2ZW50LCBQb29sZWRDbGFz
cy5mb3VyQXJndW1lbnRQb29sZXIpOworCittb2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRpY0V2ZW50
OworCisvKioKKyAgKiBIZWxwZXIgdG8gbnVsbGlmeSBzeW50aGV0aWNFdmVudCBpbnN0YW5jZSBw
cm9wZXJ0aWVzIHdoZW4gZGVzdHJ1Y3RpbmcKKyAgKgorICAqIEBwYXJhbSB7b2JqZWN0fSBTeW50
aGV0aWNFdmVudAorICAqIEBwYXJhbSB7U3RyaW5nfSBwcm9wTmFtZQorICAqIEByZXR1cm4ge29i
amVjdH0gZGVmaW5lUHJvcGVydHkgb2JqZWN0CisgICovCitmdW5jdGlvbiBnZXRQb29sZWRXYXJu
aW5nUHJvcGVydHlEZWZpbml0aW9uKHByb3BOYW1lLCBnZXRWYWwpIHsKKyAgdmFyIGlzRnVuY3Rp
b24gPSB0eXBlb2YgZ2V0VmFsID09PSAnZnVuY3Rpb24nOworICByZXR1cm4geworICAgIGNvbmZp
Z3VyYWJsZTogdHJ1ZSwKKyAgICBzZXQ6IHNldCwKKyAgICBnZXQ6IGdldAorICB9OworCisgIGZ1
bmN0aW9uIHNldCh2YWwpIHsKKyAgICB2YXIgYWN0aW9uID0gaXNGdW5jdGlvbiA/ICdzZXR0aW5n
IHRoZSBtZXRob2QnIDogJ3NldHRpbmcgdGhlIHByb3BlcnR5JzsKKyAgICB3YXJuKGFjdGlvbiwg
J1RoaXMgaXMgZWZmZWN0aXZlbHkgYSBuby1vcCcpOworICAgIHJldHVybiB2YWw7CisgIH0KKwor
ICBmdW5jdGlvbiBnZXQoKSB7CisgICAgdmFyIGFjdGlvbiA9IGlzRnVuY3Rpb24gPyAnYWNjZXNz
aW5nIHRoZSBtZXRob2QnIDogJ2FjY2Vzc2luZyB0aGUgcHJvcGVydHknOworICAgIHZhciByZXN1
bHQgPSBpc0Z1bmN0aW9uID8gJ1RoaXMgaXMgYSBuby1vcCBmdW5jdGlvbicgOiAnVGhpcyBpcyBz
ZXQgdG8gbnVsbCc7CisgICAgd2FybihhY3Rpb24sIHJlc3VsdCk7CisgICAgcmV0dXJuIGdldFZh
bDsKKyAgfQorCisgIGZ1bmN0aW9uIHdhcm4oYWN0aW9uLCByZXN1bHQpIHsKKyAgICB2YXIgd2Fy
bmluZ0NvbmRpdGlvbiA9IGZhbHNlOworICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJv
ZHVjdGlvbicgPyB3YXJuaW5nKHdhcm5pbmdDb25kaXRpb24sICdUaGlzIHN5bnRoZXRpYyBldmVu
dCBpcyByZXVzZWQgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuIElmIHlvdVwncmUgc2VlaW5nIHRo
aXMsICcgKyAneW91XCdyZSAlcyBgJXNgIG9uIGEgcmVsZWFzZWQvbnVsbGlmaWVkIHN5bnRoZXRp
YyBldmVudC4gJXMuICcgKyAnSWYgeW91IG11c3Qga2VlcCB0aGUgb3JpZ2luYWwgc3ludGhldGlj
IGV2ZW50IGFyb3VuZCwgdXNlIGV2ZW50LnBlcnNpc3QoKS4gJyArICdTZWUgaHR0cHM6Ly9mYi5t
ZS9yZWFjdC1ldmVudC1wb29saW5nIGZvciBtb3JlIGluZm9ybWF0aW9uLicsIGFjdGlvbiwgcHJv
cE5hbWUsIHJlc3VsdCkgOiB2b2lkIDA7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9t
L2xpYi9TeW50aGV0aWNGb2N1c0V2ZW50LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1
bGVzL3JlYWN0LWRvbS9saWIvU3ludGhldGljRm9jdXNFdmVudC5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NmU0
ZDZjMzY1YjRkNTg3MDYxNjNhN2JkOWIyZTQ0MTdhZmY2ZmJjCi0tLSAvZGV2L251bGwKKysrIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvU3ludGhldGljRm9j
dXNFdmVudC5qcwpAQCAtMCwwICsxLDM1IEBACisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNl
bnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMg
c291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5k
IGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNv
dXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBi
ZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisg
Ki8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgU3ludGhldGljVUlFdmVudCA9IHJlcXVpcmUoJy4v
U3ludGhldGljVUlFdmVudCcpOworCisvKioKKyAqIEBpbnRlcmZhY2UgRm9jdXNFdmVudAorICog
QHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2ZWwtMy1FdmVudHMvCisgKi8KK3ZhciBG
b2N1c0V2ZW50SW50ZXJmYWNlID0geworICByZWxhdGVkVGFyZ2V0OiBudWxsCit9OworCisvKioK
KyAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBDb25maWd1cmF0aW9uIHVzZWQgdG8g
ZGlzcGF0Y2ggdGhpcyBldmVudC4KKyAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwYXRjaE1hcmtlciBN
YXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC4KKyAqIEBwYXJhbSB7b2JqZWN0fSBu
YXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC4KKyAqIEBleHRlbmRzIHtTeW50aGV0aWNV
SUV2ZW50fQorICovCitmdW5jdGlvbiBTeW50aGV0aWNGb2N1c0V2ZW50KGRpc3BhdGNoQ29uZmln
LCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7CisgIHJl
dHVybiBTeW50aGV0aWNVSUV2ZW50LmNhbGwodGhpcywgZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNo
TWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpOworfQorCitTeW50aGV0aWNV
SUV2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNGb2N1c0V2ZW50LCBGb2N1c0V2ZW50SW50ZXJm
YWNlKTsKKworbW9kdWxlLmV4cG9ydHMgPSBTeW50aGV0aWNGb2N1c0V2ZW50OwpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9k
dWxlcy9yZWFjdC1kb20vbGliL1N5bnRoZXRpY0lucHV0RXZlbnQuanMgYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9y
ZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9TeW50aGV0aWNJbnB1dEV2ZW50LmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjYwZjNlZDY4YjczNjU2ZDdlZWJkNzQ1OWYwZGM3MmRmYjQ3MmY1MWMKLS0tIC9k
ZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xp
Yi9TeW50aGV0aWNJbnB1dEV2ZW50LmpzCkBAIC0wLDAgKzEsMzYgQEAKKy8qKgorICogQ29weXJp
Z2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxl
IGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0
b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVu
dCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGly
ZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBTeW50aGV0aWNFdmVudCA9
IHJlcXVpcmUoJy4vU3ludGhldGljRXZlbnQnKTsKKworLyoqCisgKiBAaW50ZXJmYWNlIEV2ZW50
CisgKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMTMvV0QtRE9NLUxldmVsLTMtRXZlbnRz
LTIwMTMxMTA1CisgKiAgICAgIC8jZXZlbnRzLWlucHV0ZXZlbnRzCisgKi8KK3ZhciBJbnB1dEV2
ZW50SW50ZXJmYWNlID0geworICBkYXRhOiBudWxsCit9OworCisvKioKKyAqIEBwYXJhbSB7b2Jq
ZWN0fSBkaXNwYXRjaENvbmZpZyBDb25maWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBl
dmVudC4KKyAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRlbnRpZnlp
bmcgdGhlIGV2ZW50IHRhcmdldC4KKyAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRp
dmUgYnJvd3NlciBldmVudC4KKyAqIEBleHRlbmRzIHtTeW50aGV0aWNVSUV2ZW50fQorICovCitm
dW5jdGlvbiBTeW50aGV0aWNJbnB1dEV2ZW50KGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtl
ciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7CisgIHJldHVybiBTeW50aGV0aWNF
dmVudC5jYWxsKHRoaXMsIGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZl
bnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTsKK30KKworU3ludGhldGljRXZlbnQuYXVnbWVudENsYXNz
KFN5bnRoZXRpY0lucHV0RXZlbnQsIElucHV0RXZlbnRJbnRlcmZhY2UpOworCittb2R1bGUuZXhw
b3J0cyA9IFN5bnRoZXRpY0lucHV0RXZlbnQ7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIv
U3ludGhldGljS2V5Ym9hcmRFdmVudC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxl
cy9yZWFjdC1kb20vbGliL1N5bnRoZXRpY0tleWJvYXJkRXZlbnQuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzli
ZTJiYzQ2YjAzNWQyMTM5NDQxMDE1OGU4ZDFiN2I3YzQ1YmQyMQotLS0gL2Rldi9udWxsCisrKyBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1N5bnRoZXRpY0tl
eWJvYXJkRXZlbnQuanMKQEAgLTAsMCArMSw4MyBAQAorLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1w
cmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBU
aGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBm
b3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBj
YW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisg
KgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIFN5bnRoZXRpY1VJRXZlbnQgPSByZXF1aXJl
KCcuL1N5bnRoZXRpY1VJRXZlbnQnKTsKKwordmFyIGdldEV2ZW50Q2hhckNvZGUgPSByZXF1aXJl
KCcuL2dldEV2ZW50Q2hhckNvZGUnKTsKK3ZhciBnZXRFdmVudEtleSA9IHJlcXVpcmUoJy4vZ2V0
RXZlbnRLZXknKTsKK3ZhciBnZXRFdmVudE1vZGlmaWVyU3RhdGUgPSByZXF1aXJlKCcuL2dldEV2
ZW50TW9kaWZpZXJTdGF0ZScpOworCisvKioKKyAqIEBpbnRlcmZhY2UgS2V5Ym9hcmRFdmVudAor
ICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2ZWwtMy1FdmVudHMvCisgKi8KK3Zh
ciBLZXlib2FyZEV2ZW50SW50ZXJmYWNlID0geworICBrZXk6IGdldEV2ZW50S2V5LAorICBsb2Nh
dGlvbjogbnVsbCwKKyAgY3RybEtleTogbnVsbCwKKyAgc2hpZnRLZXk6IG51bGwsCisgIGFsdEtl
eTogbnVsbCwKKyAgbWV0YUtleTogbnVsbCwKKyAgcmVwZWF0OiBudWxsLAorICBsb2NhbGU6IG51
bGwsCisgIGdldE1vZGlmaWVyU3RhdGU6IGdldEV2ZW50TW9kaWZpZXJTdGF0ZSwKKyAgLy8gTGVn
YWN5IEludGVyZmFjZQorICBjaGFyQ29kZTogZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgLy8gYGNo
YXJDb2RlYCBpcyB0aGUgcmVzdWx0IG9mIGEgS2V5UHJlc3MgZXZlbnQgYW5kIHJlcHJlc2VudHMg
dGhlIHZhbHVlIG9mCisgICAgLy8gdGhlIGFjdHVhbCBwcmludGFibGUgY2hhcmFjdGVyLgorCisg
ICAgLy8gS2V5UHJlc3MgaXMgZGVwcmVjYXRlZCwgYnV0IGl0cyByZXBsYWNlbWVudCBpcyBub3Qg
eWV0IGZpbmFsIGFuZCBub3QKKyAgICAvLyBpbXBsZW1lbnRlZCBpbiBhbnkgbWFqb3IgYnJvd3Nl
ci4gT25seSBLZXlQcmVzcyBoYXMgY2hhckNvZGUuCisgICAgaWYgKGV2ZW50LnR5cGUgPT09ICdr
ZXlwcmVzcycpIHsKKyAgICAgIHJldHVybiBnZXRFdmVudENoYXJDb2RlKGV2ZW50KTsKKyAgICB9
CisgICAgcmV0dXJuIDA7CisgIH0sCisgIGtleUNvZGU6IGZ1bmN0aW9uIChldmVudCkgeworICAg
IC8vIGBrZXlDb2RlYCBpcyB0aGUgcmVzdWx0IG9mIGEgS2V5RG93bi9VcCBldmVudCBhbmQgcmVw
cmVzZW50cyB0aGUgdmFsdWUgb2YKKyAgICAvLyBwaHlzaWNhbCBrZXlib2FyZCBrZXkuCisKKyAg
ICAvLyBUaGUgYWN0dWFsIG1lYW5pbmcgb2YgdGhlIHZhbHVlIGRlcGVuZHMgb24gdGhlIHVzZXJz
JyBrZXlib2FyZCBsYXlvdXQKKyAgICAvLyB3aGljaCBjYW5ub3QgYmUgZGV0ZWN0ZWQuIEFzc3Vt
aW5nIHRoYXQgaXQgaXMgYSBVUyBrZXlib2FyZCBsYXlvdXQKKyAgICAvLyBwcm92aWRlcyBhIHN1
cnByaXNpbmdseSBhY2N1cmF0ZSBtYXBwaW5nIGZvciBVUyBhbmQgRXVyb3BlYW4gdXNlcnMuCisg
ICAgLy8gRHVlIHRvIHRoaXMsIGl0IGlzIGxlZnQgdG8gdGhlIHVzZXIgdG8gaW1wbGVtZW50IGF0
IHRoaXMgdGltZS4KKyAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ2tleWRvd24nIHx8IGV2ZW50LnR5
cGUgPT09ICdrZXl1cCcpIHsKKyAgICAgIHJldHVybiBldmVudC5rZXlDb2RlOworICAgIH0KKyAg
ICByZXR1cm4gMDsKKyAgfSwKKyAgd2hpY2g6IGZ1bmN0aW9uIChldmVudCkgeworICAgIC8vIGB3
aGljaGAgaXMgYW4gYWxpYXMgZm9yIGVpdGhlciBga2V5Q29kZWAgb3IgYGNoYXJDb2RlYCBkZXBl
bmRpbmcgb24gdGhlCisgICAgLy8gdHlwZSBvZiB0aGUgZXZlbnQuCisgICAgaWYgKGV2ZW50LnR5
cGUgPT09ICdrZXlwcmVzcycpIHsKKyAgICAgIHJldHVybiBnZXRFdmVudENoYXJDb2RlKGV2ZW50
KTsKKyAgICB9CisgICAgaWYgKGV2ZW50LnR5cGUgPT09ICdrZXlkb3duJyB8fCBldmVudC50eXBl
ID09PSAna2V5dXAnKSB7CisgICAgICByZXR1cm4gZXZlbnQua2V5Q29kZTsKKyAgICB9CisgICAg
cmV0dXJuIDA7CisgIH0KK307CisKKy8qKgorICogQHBhcmFtIHtvYmplY3R9IGRpc3BhdGNoQ29u
ZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRjaCB0aGlzIGV2ZW50LgorICogQHBhcmFt
IHtzdHJpbmd9IGRpc3BhdGNoTWFya2VyIE1hcmtlciBpZGVudGlmeWluZyB0aGUgZXZlbnQgdGFy
Z2V0LgorICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50
LgorICogQGV4dGVuZHMge1N5bnRoZXRpY1VJRXZlbnR9CisgKi8KK2Z1bmN0aW9uIFN5bnRoZXRp
Y0tleWJvYXJkRXZlbnQoZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVu
dCwgbmF0aXZlRXZlbnRUYXJnZXQpIHsKKyAgcmV0dXJuIFN5bnRoZXRpY1VJRXZlbnQuY2FsbCh0
aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVF
dmVudFRhcmdldCk7Cit9CisKK1N5bnRoZXRpY1VJRXZlbnQuYXVnbWVudENsYXNzKFN5bnRoZXRp
Y0tleWJvYXJkRXZlbnQsIEtleWJvYXJkRXZlbnRJbnRlcmZhY2UpOworCittb2R1bGUuZXhwb3J0
cyA9IFN5bnRoZXRpY0tleWJvYXJkRXZlbnQ7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIv
U3ludGhldGljTW91c2VFdmVudC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9y
ZWFjdC1kb20vbGliL1N5bnRoZXRpY01vdXNlRXZlbnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTA3ZTBlNWMw
MWRhNGZkMGYxYTM5ODZmMDkxNWFhNWQxYmZjNDA1ZQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1N5bnRoZXRpY01vdXNlRXZl
bnQuanMKQEAgLTAsMCArMSw3MSBAQAorLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBG
YWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJj
ZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0
aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2Ug
dHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91
bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisK
Kyd1c2Ugc3RyaWN0JzsKKwordmFyIFN5bnRoZXRpY1VJRXZlbnQgPSByZXF1aXJlKCcuL1N5bnRo
ZXRpY1VJRXZlbnQnKTsKK3ZhciBWaWV3cG9ydE1ldHJpY3MgPSByZXF1aXJlKCcuL1ZpZXdwb3J0
TWV0cmljcycpOworCit2YXIgZ2V0RXZlbnRNb2RpZmllclN0YXRlID0gcmVxdWlyZSgnLi9nZXRF
dmVudE1vZGlmaWVyU3RhdGUnKTsKKworLyoqCisgKiBAaW50ZXJmYWNlIE1vdXNlRXZlbnQKKyAq
IEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvRE9NLUxldmVsLTMtRXZlbnRzLworICovCit2YXIg
TW91c2VFdmVudEludGVyZmFjZSA9IHsKKyAgc2NyZWVuWDogbnVsbCwKKyAgc2NyZWVuWTogbnVs
bCwKKyAgY2xpZW50WDogbnVsbCwKKyAgY2xpZW50WTogbnVsbCwKKyAgY3RybEtleTogbnVsbCwK
KyAgc2hpZnRLZXk6IG51bGwsCisgIGFsdEtleTogbnVsbCwKKyAgbWV0YUtleTogbnVsbCwKKyAg
Z2V0TW9kaWZpZXJTdGF0ZTogZ2V0RXZlbnRNb2RpZmllclN0YXRlLAorICBidXR0b246IGZ1bmN0
aW9uIChldmVudCkgeworICAgIC8vIFdlYmtpdCwgRmlyZWZveCwgSUU5KworICAgIC8vIHdoaWNo
OiAgMSAyIDMKKyAgICAvLyBidXR0b246IDAgMSAyIChzdGFuZGFyZCkKKyAgICB2YXIgYnV0dG9u
ID0gZXZlbnQuYnV0dG9uOworICAgIGlmICgnd2hpY2gnIGluIGV2ZW50KSB7CisgICAgICByZXR1
cm4gYnV0dG9uOworICAgIH0KKyAgICAvLyBJRTw5CisgICAgLy8gd2hpY2g6ICB1bmRlZmluZWQK
KyAgICAvLyBidXR0b246IDAgMCAwCisgICAgLy8gYnV0dG9uOiAxIDQgMiAob25tb3VzZXVwKQor
ICAgIHJldHVybiBidXR0b24gPT09IDIgPyAyIDogYnV0dG9uID09PSA0ID8gMSA6IDA7CisgIH0s
CisgIGJ1dHRvbnM6IG51bGwsCisgIHJlbGF0ZWRUYXJnZXQ6IGZ1bmN0aW9uIChldmVudCkgewor
ICAgIHJldHVybiBldmVudC5yZWxhdGVkVGFyZ2V0IHx8IChldmVudC5mcm9tRWxlbWVudCA9PT0g
ZXZlbnQuc3JjRWxlbWVudCA/IGV2ZW50LnRvRWxlbWVudCA6IGV2ZW50LmZyb21FbGVtZW50KTsK
KyAgfSwKKyAgLy8gIlByb3ByaWV0YXJ5IiBJbnRlcmZhY2UuCisgIHBhZ2VYOiBmdW5jdGlvbiAo
ZXZlbnQpIHsKKyAgICByZXR1cm4gJ3BhZ2VYJyBpbiBldmVudCA/IGV2ZW50LnBhZ2VYIDogZXZl
bnQuY2xpZW50WCArIFZpZXdwb3J0TWV0cmljcy5jdXJyZW50U2Nyb2xsTGVmdDsKKyAgfSwKKyAg
cGFnZVk6IGZ1bmN0aW9uIChldmVudCkgeworICAgIHJldHVybiAncGFnZVknIGluIGV2ZW50ID8g
ZXZlbnQucGFnZVkgOiBldmVudC5jbGllbnRZICsgVmlld3BvcnRNZXRyaWNzLmN1cnJlbnRTY3Jv
bGxUb3A7CisgIH0KK307CisKKy8qKgorICogQHBhcmFtIHtvYmplY3R9IGRpc3BhdGNoQ29uZmln
IENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRjaCB0aGlzIGV2ZW50LgorICogQHBhcmFtIHtz
dHJpbmd9IGRpc3BhdGNoTWFya2VyIE1hcmtlciBpZGVudGlmeWluZyB0aGUgZXZlbnQgdGFyZ2V0
LgorICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50Lgor
ICogQGV4dGVuZHMge1N5bnRoZXRpY1VJRXZlbnR9CisgKi8KK2Z1bmN0aW9uIFN5bnRoZXRpY01v
dXNlRXZlbnQoZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0
aXZlRXZlbnRUYXJnZXQpIHsKKyAgcmV0dXJuIFN5bnRoZXRpY1VJRXZlbnQuY2FsbCh0aGlzLCBk
aXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRh
cmdldCk7Cit9CisKK1N5bnRoZXRpY1VJRXZlbnQuYXVnbWVudENsYXNzKFN5bnRoZXRpY01vdXNl
RXZlbnQsIE1vdXNlRXZlbnRJbnRlcmZhY2UpOworCittb2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRp
Y01vdXNlRXZlbnQ7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvU3ludGhldGljVG91Y2hF
dmVudC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1N5
bnRoZXRpY1RvdWNoRXZlbnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjNiYjM0ZDI2MzA4YmFkMDAwOGNkZTk1
NDU2NzgwYWIxZGM2OWM3NgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25v
ZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1N5bnRoZXRpY1RvdWNoRXZlbnQuanMKQEAgLTAsMCAr
MSw0NCBAQAorLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgor
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vu
c2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRp
b25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVO
VFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsK
KwordmFyIFN5bnRoZXRpY1VJRXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY1VJRXZlbnQnKTsK
KwordmFyIGdldEV2ZW50TW9kaWZpZXJTdGF0ZSA9IHJlcXVpcmUoJy4vZ2V0RXZlbnRNb2RpZmll
clN0YXRlJyk7CisKKy8qKgorICogQGludGVyZmFjZSBUb3VjaEV2ZW50CisgKiBAc2VlIGh0dHA6
Ly93d3cudzMub3JnL1RSL3RvdWNoLWV2ZW50cy8KKyAqLwordmFyIFRvdWNoRXZlbnRJbnRlcmZh
Y2UgPSB7CisgIHRvdWNoZXM6IG51bGwsCisgIHRhcmdldFRvdWNoZXM6IG51bGwsCisgIGNoYW5n
ZWRUb3VjaGVzOiBudWxsLAorICBhbHRLZXk6IG51bGwsCisgIG1ldGFLZXk6IG51bGwsCisgIGN0
cmxLZXk6IG51bGwsCisgIHNoaWZ0S2V5OiBudWxsLAorICBnZXRNb2RpZmllclN0YXRlOiBnZXRF
dmVudE1vZGlmaWVyU3RhdGUKK307CisKKy8qKgorICogQHBhcmFtIHtvYmplY3R9IGRpc3BhdGNo
Q29uZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRjaCB0aGlzIGV2ZW50LgorICogQHBh
cmFtIHtzdHJpbmd9IGRpc3BhdGNoTWFya2VyIE1hcmtlciBpZGVudGlmeWluZyB0aGUgZXZlbnQg
dGFyZ2V0LgorICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2
ZW50LgorICogQGV4dGVuZHMge1N5bnRoZXRpY1VJRXZlbnR9CisgKi8KK2Z1bmN0aW9uIFN5bnRo
ZXRpY1RvdWNoRXZlbnQoZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVu
dCwgbmF0aXZlRXZlbnRUYXJnZXQpIHsKKyAgcmV0dXJuIFN5bnRoZXRpY1VJRXZlbnQuY2FsbCh0
aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVF
dmVudFRhcmdldCk7Cit9CisKK1N5bnRoZXRpY1VJRXZlbnQuYXVnbWVudENsYXNzKFN5bnRoZXRp
Y1RvdWNoRXZlbnQsIFRvdWNoRXZlbnRJbnRlcmZhY2UpOworCittb2R1bGUuZXhwb3J0cyA9IFN5
bnRoZXRpY1RvdWNoRXZlbnQ7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvU3ludGhldGlj
VHJhbnNpdGlvbkV2ZW50LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0
LWRvbS9saWIvU3ludGhldGljVHJhbnNpdGlvbkV2ZW50LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE2ZWMzNmZl
ZDI5MmRhYmM5MWJlMTE0YjRlZmM2MjQ4ZGM0Y2JiMGMKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9TeW50aGV0aWNUcmFuc2l0
aW9uRXZlbnQuanMKQEAgLTAsMCArMSwzOCBAQAorLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBz
b3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgor
ICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIFN5bnRoZXRpY0V2ZW50ID0gcmVxdWlyZSgnLi9T
eW50aGV0aWNFdmVudCcpOworCisvKioKKyAqIEBpbnRlcmZhY2UgRXZlbnQKKyAqIEBzZWUgaHR0
cDovL3d3dy53My5vcmcvVFIvMjAwOS9XRC1jc3MzLXRyYW5zaXRpb25zLTIwMDkwMzIwLyN0cmFu
c2l0aW9uLWV2ZW50cy0KKyAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4t
VVMvZG9jcy9XZWIvQVBJL1RyYW5zaXRpb25FdmVudAorICovCit2YXIgVHJhbnNpdGlvbkV2ZW50
SW50ZXJmYWNlID0geworICBwcm9wZXJ0eU5hbWU6IG51bGwsCisgIGVsYXBzZWRUaW1lOiBudWxs
LAorICBwc2V1ZG9FbGVtZW50OiBudWxsCit9OworCisvKioKKyAqIEBwYXJhbSB7b2JqZWN0fSBk
aXNwYXRjaENvbmZpZyBDb25maWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVudC4K
KyAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhl
IGV2ZW50IHRhcmdldC4KKyAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJv
d3NlciBldmVudC4KKyAqIEBleHRlbmRzIHtTeW50aGV0aWNFdmVudH0KKyAqLworZnVuY3Rpb24g
U3ludGhldGljVHJhbnNpdGlvbkV2ZW50KGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwg
bmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7CisgIHJldHVybiBTeW50aGV0aWNFdmVu
dC5jYWxsKHRoaXMsIGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQs
IG5hdGl2ZUV2ZW50VGFyZ2V0KTsKK30KKworU3ludGhldGljRXZlbnQuYXVnbWVudENsYXNzKFN5
bnRoZXRpY1RyYW5zaXRpb25FdmVudCwgVHJhbnNpdGlvbkV2ZW50SW50ZXJmYWNlKTsKKworbW9k
dWxlLmV4cG9ydHMgPSBTeW50aGV0aWNUcmFuc2l0aW9uRXZlbnQ7ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3Jl
YWN0LWRvbS9saWIvU3ludGhldGljVUlFdmVudC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVf
bW9kdWxlcy9yZWFjdC1kb20vbGliL1N5bnRoZXRpY1VJRXZlbnQuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTUz
ZjkyMGQyZTkzM2YxN2FiZTA3OTZiNmFmOWQ0YjkxNjc5ZDAwNgotLS0gL2Rldi9udWxsCisrKyBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1N5bnRoZXRpY1VJ
RXZlbnQuanMKQEAgLTAsMCArMSw1OCBAQAorLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICov
CisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIFN5bnRoZXRpY0V2ZW50ID0gcmVxdWlyZSgnLi9TeW50
aGV0aWNFdmVudCcpOworCit2YXIgZ2V0RXZlbnRUYXJnZXQgPSByZXF1aXJlKCcuL2dldEV2ZW50
VGFyZ2V0Jyk7CisKKy8qKgorICogQGludGVyZmFjZSBVSUV2ZW50CisgKiBAc2VlIGh0dHA6Ly93
d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy8KKyAqLwordmFyIFVJRXZlbnRJbnRlcmZh
Y2UgPSB7CisgIHZpZXc6IGZ1bmN0aW9uIChldmVudCkgeworICAgIGlmIChldmVudC52aWV3KSB7
CisgICAgICByZXR1cm4gZXZlbnQudmlldzsKKyAgICB9CisKKyAgICB2YXIgdGFyZ2V0ID0gZ2V0
RXZlbnRUYXJnZXQoZXZlbnQpOworICAgIGlmICh0YXJnZXQud2luZG93ID09PSB0YXJnZXQpIHsK
KyAgICAgIC8vIHRhcmdldCBpcyBhIHdpbmRvdyBvYmplY3QKKyAgICAgIHJldHVybiB0YXJnZXQ7
CisgICAgfQorCisgICAgdmFyIGRvYyA9IHRhcmdldC5vd25lckRvY3VtZW50OworICAgIC8vIFRP
RE86IEZpZ3VyZSBvdXQgd2h5IGBvd25lckRvY3VtZW50YCBpcyBzb21ldGltZXMgdW5kZWZpbmVk
IGluIElFOC4KKyAgICBpZiAoZG9jKSB7CisgICAgICByZXR1cm4gZG9jLmRlZmF1bHRWaWV3IHx8
IGRvYy5wYXJlbnRXaW5kb3c7CisgICAgfSBlbHNlIHsKKyAgICAgIHJldHVybiB3aW5kb3c7Cisg
ICAgfQorICB9LAorICBkZXRhaWw6IGZ1bmN0aW9uIChldmVudCkgeworICAgIHJldHVybiBldmVu
dC5kZXRhaWwgfHwgMDsKKyAgfQorfTsKKworLyoqCisgKiBAcGFyYW0ge29iamVjdH0gZGlzcGF0
Y2hDb25maWcgQ29uZmlndXJhdGlvbiB1c2VkIHRvIGRpc3BhdGNoIHRoaXMgZXZlbnQuCisgKiBA
cGFyYW0ge3N0cmluZ30gZGlzcGF0Y2hNYXJrZXIgTWFya2VyIGlkZW50aWZ5aW5nIHRoZSBldmVu
dCB0YXJnZXQuCisgKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIg
ZXZlbnQuCisgKiBAZXh0ZW5kcyB7U3ludGhldGljRXZlbnR9CisgKi8KK2Z1bmN0aW9uIFN5bnRo
ZXRpY1VJRXZlbnQoZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwg
bmF0aXZlRXZlbnRUYXJnZXQpIHsKKyAgcmV0dXJuIFN5bnRoZXRpY0V2ZW50LmNhbGwodGhpcywg
ZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRU
YXJnZXQpOworfQorCitTeW50aGV0aWNFdmVudC5hdWdtZW50Q2xhc3MoU3ludGhldGljVUlFdmVu
dCwgVUlFdmVudEludGVyZmFjZSk7CisKK21vZHVsZS5leHBvcnRzID0gU3ludGhldGljVUlFdmVu
dDsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9y
ZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9TeW50aGV0aWNXaGVlbEV2ZW50LmpzIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvU3ludGhldGljV2hl
ZWxFdmVudC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lM2FjOGY5ZmFlYjI3M2MxNzgwNWMyNjA0Zjk4MmJkMzI2
NDUxMTY2Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVz
L3JlYWN0LWRvbS9saWIvU3ludGhldGljV2hlZWxFdmVudC5qcwpAQCAtMCwwICsxLDUzIEBACisv
KioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgU3lu
dGhldGljTW91c2VFdmVudCA9IHJlcXVpcmUoJy4vU3ludGhldGljTW91c2VFdmVudCcpOworCisv
KioKKyAqIEBpbnRlcmZhY2UgV2hlZWxFdmVudAorICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9U
Ui9ET00tTGV2ZWwtMy1FdmVudHMvCisgKi8KK3ZhciBXaGVlbEV2ZW50SW50ZXJmYWNlID0gewor
ICBkZWx0YVg6IGZ1bmN0aW9uIChldmVudCkgeworICAgIHJldHVybiAnZGVsdGFYJyBpbiBldmVu
dCA/IGV2ZW50LmRlbHRhWCA6CisgICAgLy8gRmFsbGJhY2sgdG8gYHdoZWVsRGVsdGFYYCBmb3Ig
V2Via2l0IGFuZCBub3JtYWxpemUgKHJpZ2h0IGlzIHBvc2l0aXZlKS4KKyAgICAnd2hlZWxEZWx0
YVgnIGluIGV2ZW50ID8gLWV2ZW50LndoZWVsRGVsdGFYIDogMDsKKyAgfSwKKyAgZGVsdGFZOiBm
dW5jdGlvbiAoZXZlbnQpIHsKKyAgICByZXR1cm4gJ2RlbHRhWScgaW4gZXZlbnQgPyBldmVudC5k
ZWx0YVkgOgorICAgIC8vIEZhbGxiYWNrIHRvIGB3aGVlbERlbHRhWWAgZm9yIFdlYmtpdCBhbmQg
bm9ybWFsaXplIChkb3duIGlzIHBvc2l0aXZlKS4KKyAgICAnd2hlZWxEZWx0YVknIGluIGV2ZW50
ID8gLWV2ZW50LndoZWVsRGVsdGFZIDoKKyAgICAvLyBGYWxsYmFjayB0byBgd2hlZWxEZWx0YWAg
Zm9yIElFPDkgYW5kIG5vcm1hbGl6ZSAoZG93biBpcyBwb3NpdGl2ZSkuCisgICAgJ3doZWVsRGVs
dGEnIGluIGV2ZW50ID8gLWV2ZW50LndoZWVsRGVsdGEgOiAwOworICB9LAorICBkZWx0YVo6IG51
bGwsCisKKyAgLy8gQnJvd3NlcnMgd2l0aG91dCAiZGVsdGFNb2RlIiBpcyByZXBvcnRpbmcgaW4g
cmF3IHdoZWVsIGRlbHRhIHdoZXJlIG9uZQorICAvLyBub3RjaCBvbiB0aGUgc2Nyb2xsIGlzIGFs
d2F5cyArLy0gMTIwLCByb3VnaGx5IGVxdWl2YWxlbnQgdG8gcGl4ZWxzLgorICAvLyBBIGdvb2Qg
YXBwcm94aW1hdGlvbiBvZiBET01fREVMVEFfTElORSAoMSkgaXMgNSUgb2Ygdmlld3BvcnQgc2l6
ZSBvcgorICAvLyB+NDAgcGl4ZWxzLCBmb3IgRE9NX0RFTFRBX1NDUkVFTiAoMikgaXQgaXMgODcu
NSUgb2Ygdmlld3BvcnQgc2l6ZS4KKyAgZGVsdGFNb2RlOiBudWxsCit9OworCisvKioKKyAqIEBw
YXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBDb25maWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0
Y2ggdGhpcyBldmVudC4KKyAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwYXRjaE1hcmtlciBNYXJrZXIg
aWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC4KKyAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVF
dmVudCBOYXRpdmUgYnJvd3NlciBldmVudC4KKyAqIEBleHRlbmRzIHtTeW50aGV0aWNNb3VzZUV2
ZW50fQorICovCitmdW5jdGlvbiBTeW50aGV0aWNXaGVlbEV2ZW50KGRpc3BhdGNoQ29uZmlnLCBk
aXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7CisgIHJldHVy
biBTeW50aGV0aWNNb3VzZUV2ZW50LmNhbGwodGhpcywgZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNo
TWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpOworfQorCitTeW50aGV0aWNN
b3VzZUV2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNXaGVlbEV2ZW50LCBXaGVlbEV2ZW50SW50
ZXJmYWNlKTsKKworbW9kdWxlLmV4cG9ydHMgPSBTeW50aGV0aWNXaGVlbEV2ZW50OwpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVf
bW9kdWxlcy9yZWFjdC1kb20vbGliL1RhcEV2ZW50UGx1Z2luLmpzIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVh
Y3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvVGFwRXZlbnRQbHVnaW4uanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNDYzZmU5ODUxMjZiZWQ4NjAyN2M3ZTc1ZGU4OWE0ZTI2ZDAzMDJiMQotLS0gL2Rldi9udWxs
CisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1RhcEV2
ZW50UGx1Z2luLmpzCkBAIC0wLDAgKzEsMTE1IEBACisvKioKKyAqIENvcHlyaWdodCAyMDEzLXBy
ZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRo
aXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZv
dW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlz
IHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNh
biBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAq
CisgKiAKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBFdmVudFBsdWdpblV0aWxzID0gcmVx
dWlyZSgnLi9FdmVudFBsdWdpblV0aWxzJyk7Cit2YXIgRXZlbnRQcm9wYWdhdG9ycyA9IHJlcXVp
cmUoJy4vRXZlbnRQcm9wYWdhdG9ycycpOwordmFyIFN5bnRoZXRpY1VJRXZlbnQgPSByZXF1aXJl
KCcuL1N5bnRoZXRpY1VJRXZlbnQnKTsKK3ZhciBUb3VjaEV2ZW50VXRpbHMgPSByZXF1aXJlKCdm
YmpzL2xpYi9Ub3VjaEV2ZW50VXRpbHMnKTsKK3ZhciBWaWV3cG9ydE1ldHJpY3MgPSByZXF1aXJl
KCcuL1ZpZXdwb3J0TWV0cmljcycpOworCit2YXIgaXNTdGFydGlzaCA9IEV2ZW50UGx1Z2luVXRp
bHMuaXNTdGFydGlzaDsKK3ZhciBpc0VuZGlzaCA9IEV2ZW50UGx1Z2luVXRpbHMuaXNFbmRpc2g7
CisKKy8qKgorICogV2UgYXJlIGV4dGVuZGluZyB0aGUgRmxvdyAnVG91Y2gnIGRlY2xhcmF0aW9u
IHRvIGVuYWJsZSB1c2luZyBicmFja2V0CisgKiBub3RhdGlvbiB0byBhY2Nlc3MgcHJvcGVydGll
cy4KKyAqIFdpdGhvdXQgdGhpcyBhZGp1c3RtZW50IEZsb3cgdGhyb3dzCisgKiAiSW5kZXhhYmxl
IHNpZ25hdHVyZSBub3QgZm91bmQgaW4gVG91Y2giLgorICogU2VlIGh0dHBzOi8vZ2l0aHViLmNv
bS9mYWNlYm9vay9mbG93L2lzc3Vlcy8xMzIzCisgKi8KKworCisvKioKKyAqIE51bWJlciBvZiBw
aXhlbHMgdGhhdCBhcmUgdG9sZXJhdGVkIGluIGJldHdlZW4gYSBgdG91Y2hTdGFydGAgYW5kIGB0
b3VjaEVuZGAKKyAqIGluIG9yZGVyIHRvIHN0aWxsIGJlIGNvbnNpZGVyZWQgYSAndGFwJyBldmVu
dC4KKyAqLwordmFyIHRhcE1vdmVUaHJlc2hvbGQgPSAxMDsKK3ZhciBzdGFydENvb3JkcyA9IHsg
eDogMCwgeTogMCB9OworCit2YXIgQXhpcyA9IHsKKyAgeDogeyBwYWdlOiAncGFnZVgnLCBjbGll
bnQ6ICdjbGllbnRYJywgZW52U2Nyb2xsOiAnY3VycmVudFBhZ2VTY3JvbGxMZWZ0JyB9LAorICB5
OiB7IHBhZ2U6ICdwYWdlWScsIGNsaWVudDogJ2NsaWVudFknLCBlbnZTY3JvbGw6ICdjdXJyZW50
UGFnZVNjcm9sbFRvcCcgfQorfTsKKworZnVuY3Rpb24gZ2V0QXhpc0Nvb3JkT2ZFdmVudChheGlz
LCBuYXRpdmVFdmVudCkgeworICB2YXIgc2luZ2xlVG91Y2ggPSBUb3VjaEV2ZW50VXRpbHMuZXh0
cmFjdFNpbmdsZVRvdWNoKG5hdGl2ZUV2ZW50KTsKKyAgaWYgKHNpbmdsZVRvdWNoKSB7CisgICAg
cmV0dXJuIHNpbmdsZVRvdWNoW2F4aXMucGFnZV07CisgIH0KKyAgcmV0dXJuIGF4aXMucGFnZSBp
biBuYXRpdmVFdmVudCA/IG5hdGl2ZUV2ZW50W2F4aXMucGFnZV0gOiBuYXRpdmVFdmVudFtheGlz
LmNsaWVudF0gKyBWaWV3cG9ydE1ldHJpY3NbYXhpcy5lbnZTY3JvbGxdOworfQorCitmdW5jdGlv
biBnZXREaXN0YW5jZShjb29yZHMsIG5hdGl2ZUV2ZW50KSB7CisgIHZhciBwYWdlWCA9IGdldEF4
aXNDb29yZE9mRXZlbnQoQXhpcy54LCBuYXRpdmVFdmVudCk7CisgIHZhciBwYWdlWSA9IGdldEF4
aXNDb29yZE9mRXZlbnQoQXhpcy55LCBuYXRpdmVFdmVudCk7CisgIHJldHVybiBNYXRoLnBvdyhN
YXRoLnBvdyhwYWdlWCAtIGNvb3Jkcy54LCAyKSArIE1hdGgucG93KHBhZ2VZIC0gY29vcmRzLnks
IDIpLCAwLjUpOworfQorCit2YXIgdG91Y2hFdmVudHMgPSBbJ3RvcFRvdWNoU3RhcnQnLCAndG9w
VG91Y2hDYW5jZWwnLCAndG9wVG91Y2hFbmQnLCAndG9wVG91Y2hNb3ZlJ107CisKK3ZhciBkZXBl
bmRlbmNpZXMgPSBbJ3RvcE1vdXNlRG93bicsICd0b3BNb3VzZU1vdmUnLCAndG9wTW91c2VVcCdd
LmNvbmNhdCh0b3VjaEV2ZW50cyk7CisKK3ZhciBldmVudFR5cGVzID0geworICB0b3VjaFRhcDog
eworICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7CisgICAgICBidWJibGVkOiAnb25Ub3Vj
aFRhcCcsCisgICAgICBjYXB0dXJlZDogJ29uVG91Y2hUYXBDYXB0dXJlJworICAgIH0sCisgICAg
ZGVwZW5kZW5jaWVzOiBkZXBlbmRlbmNpZXMKKyAgfQorfTsKKwordmFyIHVzZWRUb3VjaCA9IGZh
bHNlOwordmFyIHVzZWRUb3VjaFRpbWUgPSAwOwordmFyIFRPVUNIX0RFTEFZID0gMTAwMDsKKwor
dmFyIFRhcEV2ZW50UGx1Z2luID0geworCisgIHRhcE1vdmVUaHJlc2hvbGQ6IHRhcE1vdmVUaHJl
c2hvbGQsCisKKyAgZXZlbnRUeXBlczogZXZlbnRUeXBlcywKKworICBleHRyYWN0RXZlbnRzOiBm
dW5jdGlvbiAodG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZl
bnRUYXJnZXQpIHsKKyAgICBpZiAoIWlzU3RhcnRpc2godG9wTGV2ZWxUeXBlKSAmJiAhaXNFbmRp
c2godG9wTGV2ZWxUeXBlKSkgeworICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorICAgIC8vIG9u
IGlvcywgdGhlcmUgaXMgYSBkZWxheSBhZnRlciB0b3VjaCBldmVudCBhbmQgc3ludGhldGljCisg
ICAgLy8gbW91c2UgZXZlbnRzLCBzbyB0aGF0IHVzZXIgY2FuIHBlcmZvcm0gZG91YmxlIHRhcAor
ICAgIC8vIHNvbHV0aW9uOiBpZ25vcmUgbW91c2UgZXZlbnRzIGZvbGxvd2luZyB0b3VjaGV2ZW50
IHdpdGhpbiBzbWFsbCB0aW1lZnJhbWUKKyAgICBpZiAodG91Y2hFdmVudHMuaW5kZXhPZih0b3BM
ZXZlbFR5cGUpICE9PSAtMSkgeworICAgICAgdXNlZFRvdWNoID0gdHJ1ZTsKKyAgICAgIHVzZWRU
b3VjaFRpbWUgPSBEYXRlLm5vdygpOworICAgIH0gZWxzZSB7CisgICAgICBpZiAodXNlZFRvdWNo
ICYmIERhdGUubm93KCkgLSB1c2VkVG91Y2hUaW1lIDwgVE9VQ0hfREVMQVkpIHsKKyAgICAgICAg
cmV0dXJuIG51bGw7CisgICAgICB9CisgICAgfQorICAgIHZhciBldmVudCA9IG51bGw7CisgICAg
dmFyIGRpc3RhbmNlID0gZ2V0RGlzdGFuY2Uoc3RhcnRDb29yZHMsIG5hdGl2ZUV2ZW50KTsKKyAg
ICBpZiAoaXNFbmRpc2godG9wTGV2ZWxUeXBlKSAmJiBkaXN0YW5jZSA8IHRhcE1vdmVUaHJlc2hv
bGQpIHsKKyAgICAgIGV2ZW50ID0gU3ludGhldGljVUlFdmVudC5nZXRQb29sZWQoZXZlbnRUeXBl
cy50b3VjaFRhcCwgdGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTsK
KyAgICB9CisgICAgaWYgKGlzU3RhcnRpc2godG9wTGV2ZWxUeXBlKSkgeworICAgICAgc3RhcnRD
b29yZHMueCA9IGdldEF4aXNDb29yZE9mRXZlbnQoQXhpcy54LCBuYXRpdmVFdmVudCk7CisgICAg
ICBzdGFydENvb3Jkcy55ID0gZ2V0QXhpc0Nvb3JkT2ZFdmVudChBeGlzLnksIG5hdGl2ZUV2ZW50
KTsKKyAgICB9IGVsc2UgaWYgKGlzRW5kaXNoKHRvcExldmVsVHlwZSkpIHsKKyAgICAgIHN0YXJ0
Q29vcmRzLnggPSAwOworICAgICAgc3RhcnRDb29yZHMueSA9IDA7CisgICAgfQorICAgIEV2ZW50
UHJvcGFnYXRvcnMuYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyhldmVudCk7CisgICAgcmV0
dXJuIGV2ZW50OworICB9CisKK307CisKK21vZHVsZS5leHBvcnRzID0gVGFwRXZlbnRQbHVnaW47
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVh
Y3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvVG91Y2hIaXN0b3J5TWF0aC5qcyBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1RvdWNoSGlzdG9yeU1hdGgu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMDc1NWIwZjlhMDhkNTIzMGNkMjQ2MTI1NzE0Mjk4YmVjZDdiZTdiYwot
LS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1k
b20vbGliL1RvdWNoSGlzdG9yeU1hdGguanMKQEAgLTAsMCArMSw5OCBAQAorLyoqCisgKi8KKwor
J3VzZSBzdHJpY3QnOworCit2YXIgVG91Y2hIaXN0b3J5TWF0aCA9IHsKKyAgLyoqCisgICAqIFRo
aXMgY29kZSBpcyBvcHRpbWl6ZWQgYW5kIG5vdCBpbnRlbmRlZCB0byBsb29rIGJlYXV0aWZ1bC4g
VGhpcyBhbGxvd3MKKyAgICogY29tcHV0aW5nIG9mIHRvdWNoIGNlbnRyb2lkcyB0aGF0IGhhdmUg
bW92ZWQgYWZ0ZXIgYHRvdWNoZXNDaGFuZ2VkQWZ0ZXJgCisgICAqIHRpbWVTdGFtcC4gWW91IGNh
biBjb21wdXRlIHRoZSBjdXJyZW50IGNlbnRyb2lkIGludm9sdmluZyBhbGwgdG91Y2hlcworICAg
KiBtb3ZlcyBhZnRlciBgdG91Y2hlc0NoYW5nZWRBZnRlcmAsIG9yIHlvdSBjYW4gY29tcHV0ZSB0
aGUgcHJldmlvdXMKKyAgICogY2VudHJvaWQgb2YgYWxsIHRvdWNoZXMgdGhhdCB3ZXJlIG1vdmVk
IGFmdGVyIGB0b3VjaGVzQ2hhbmdlZEFmdGVyYC4KKyAgICoKKyAgICogQHBhcmFtIHtUb3VjaEhp
c3RvcnlNYXRofSB0b3VjaEhpc3RvcnkgU3RhbmRhcmQgUmVzcG9uZGVyIHRvdWNoIHRyYWNrCisg
ICAqIGRhdGEuCisgICAqIEBwYXJhbSB7bnVtYmVyfSB0b3VjaGVzQ2hhbmdlZEFmdGVyIHRpbWVT
dGFtcCBhZnRlciB3aGljaCBtb3ZlZCB0b3VjaGVzCisgICAqIGFyZSBjb25zaWRlcmVkICJhY3Rp
dmVseSBtb3ZpbmciIC0gbm90IGp1c3QgImFjdGl2ZSIuCisgICAqIEBwYXJhbSB7Ym9vbGVhbn0g
aXNYQXhpcyBDb25zaWRlciBgeGAgZGltZW5zaW9uIHZzLiBgeWAgZGltZW5zaW9uLgorICAgKiBA
cGFyYW0ge2Jvb2xlYW59IG9mQ3VycmVudCBDb21wdXRlIGN1cnJlbnQgY2VudHJvaWQgZm9yIGFj
dGl2ZWx5IG1vdmluZworICAgKiB0b3VjaGVzIHZzLiBwcmV2aW91cyBjZW50cm9pZCBvZiBub3cg
YWN0aXZlbHkgbW92aW5nIHRvdWNoZXMuCisgICAqIEByZXR1cm4ge251bWJlcn0gdmFsdWUgb2Yg
Y2VudHJvaWQgaW4gc3BlY2lmaWVkIGRpbWVuc2lvbi4KKyAgICovCisgIGNlbnRyb2lkRGltZW5z
aW9uOiBmdW5jdGlvbiAodG91Y2hIaXN0b3J5LCB0b3VjaGVzQ2hhbmdlZEFmdGVyLCBpc1hBeGlz
LCBvZkN1cnJlbnQpIHsKKyAgICB2YXIgdG91Y2hCYW5rID0gdG91Y2hIaXN0b3J5LnRvdWNoQmFu
azsKKyAgICB2YXIgdG90YWwgPSAwOworICAgIHZhciBjb3VudCA9IDA7CisKKyAgICB2YXIgb25l
VG91Y2hEYXRhID0gdG91Y2hIaXN0b3J5Lm51bWJlckFjdGl2ZVRvdWNoZXMgPT09IDEgPyB0b3Vj
aEhpc3RvcnkudG91Y2hCYW5rW3RvdWNoSGlzdG9yeS5pbmRleE9mU2luZ2xlQWN0aXZlVG91Y2hd
IDogbnVsbDsKKworICAgIGlmIChvbmVUb3VjaERhdGEgIT09IG51bGwpIHsKKyAgICAgIGlmIChv
bmVUb3VjaERhdGEudG91Y2hBY3RpdmUgJiYgb25lVG91Y2hEYXRhLmN1cnJlbnRUaW1lU3RhbXAg
PiB0b3VjaGVzQ2hhbmdlZEFmdGVyKSB7CisgICAgICAgIHRvdGFsICs9IG9mQ3VycmVudCAmJiBp
c1hBeGlzID8gb25lVG91Y2hEYXRhLmN1cnJlbnRQYWdlWCA6IG9mQ3VycmVudCAmJiAhaXNYQXhp
cyA/IG9uZVRvdWNoRGF0YS5jdXJyZW50UGFnZVkgOiAhb2ZDdXJyZW50ICYmIGlzWEF4aXMgPyBv
bmVUb3VjaERhdGEucHJldmlvdXNQYWdlWCA6IG9uZVRvdWNoRGF0YS5wcmV2aW91c1BhZ2VZOwor
ICAgICAgICBjb3VudCA9IDE7CisgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgdG91Y2hCYW5rLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIHZhciB0b3VjaFRy
YWNrID0gdG91Y2hCYW5rW2ldOworICAgICAgICBpZiAodG91Y2hUcmFjayAhPT0gbnVsbCAmJiB0
b3VjaFRyYWNrICE9PSB1bmRlZmluZWQgJiYgdG91Y2hUcmFjay50b3VjaEFjdGl2ZSAmJiB0b3Vj
aFRyYWNrLmN1cnJlbnRUaW1lU3RhbXAgPj0gdG91Y2hlc0NoYW5nZWRBZnRlcikgeworICAgICAg
ICAgIHZhciB0b0FkZDsgLy8gWXVjaywgcHJvZ3JhbSB0ZW1wb3JhcmlseSBpbiBpbnZhbGlkIHN0
YXRlLgorICAgICAgICAgIGlmIChvZkN1cnJlbnQgJiYgaXNYQXhpcykgeworICAgICAgICAgICAg
dG9BZGQgPSB0b3VjaFRyYWNrLmN1cnJlbnRQYWdlWDsKKyAgICAgICAgICB9IGVsc2UgaWYgKG9m
Q3VycmVudCAmJiAhaXNYQXhpcykgeworICAgICAgICAgICAgdG9BZGQgPSB0b3VjaFRyYWNrLmN1
cnJlbnRQYWdlWTsKKyAgICAgICAgICB9IGVsc2UgaWYgKCFvZkN1cnJlbnQgJiYgaXNYQXhpcykg
eworICAgICAgICAgICAgdG9BZGQgPSB0b3VjaFRyYWNrLnByZXZpb3VzUGFnZVg7CisgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRvQWRkID0gdG91Y2hUcmFjay5wcmV2aW91c1BhZ2VZ
OworICAgICAgICAgIH0KKyAgICAgICAgICB0b3RhbCArPSB0b0FkZDsKKyAgICAgICAgICBjb3Vu
dCsrOworICAgICAgICB9CisgICAgICB9CisgICAgfQorICAgIHJldHVybiBjb3VudCA+IDAgPyB0
b3RhbCAvIGNvdW50IDogVG91Y2hIaXN0b3J5TWF0aC5ub0NlbnRyb2lkOworICB9LAorCisgIGN1
cnJlbnRDZW50cm9pZFhPZlRvdWNoZXNDaGFuZ2VkQWZ0ZXI6IGZ1bmN0aW9uICh0b3VjaEhpc3Rv
cnksIHRvdWNoZXNDaGFuZ2VkQWZ0ZXIpIHsKKyAgICByZXR1cm4gVG91Y2hIaXN0b3J5TWF0aC5j
ZW50cm9pZERpbWVuc2lvbih0b3VjaEhpc3RvcnksIHRvdWNoZXNDaGFuZ2VkQWZ0ZXIsIHRydWUs
IC8vIGlzWEF4aXMKKyAgICB0cnVlIC8vIG9mQ3VycmVudAorICAgICk7CisgIH0sCisKKyAgY3Vy
cmVudENlbnRyb2lkWU9mVG91Y2hlc0NoYW5nZWRBZnRlcjogZnVuY3Rpb24gKHRvdWNoSGlzdG9y
eSwgdG91Y2hlc0NoYW5nZWRBZnRlcikgeworICAgIHJldHVybiBUb3VjaEhpc3RvcnlNYXRoLmNl
bnRyb2lkRGltZW5zaW9uKHRvdWNoSGlzdG9yeSwgdG91Y2hlc0NoYW5nZWRBZnRlciwgZmFsc2Us
IC8vIGlzWEF4aXMKKyAgICB0cnVlIC8vIG9mQ3VycmVudAorICAgICk7CisgIH0sCisKKyAgcHJl
dmlvdXNDZW50cm9pZFhPZlRvdWNoZXNDaGFuZ2VkQWZ0ZXI6IGZ1bmN0aW9uICh0b3VjaEhpc3Rv
cnksIHRvdWNoZXNDaGFuZ2VkQWZ0ZXIpIHsKKyAgICByZXR1cm4gVG91Y2hIaXN0b3J5TWF0aC5j
ZW50cm9pZERpbWVuc2lvbih0b3VjaEhpc3RvcnksIHRvdWNoZXNDaGFuZ2VkQWZ0ZXIsIHRydWUs
IC8vIGlzWEF4aXMKKyAgICBmYWxzZSAvLyBvZkN1cnJlbnQKKyAgICApOworICB9LAorCisgIHBy
ZXZpb3VzQ2VudHJvaWRZT2ZUb3VjaGVzQ2hhbmdlZEFmdGVyOiBmdW5jdGlvbiAodG91Y2hIaXN0
b3J5LCB0b3VjaGVzQ2hhbmdlZEFmdGVyKSB7CisgICAgcmV0dXJuIFRvdWNoSGlzdG9yeU1hdGgu
Y2VudHJvaWREaW1lbnNpb24odG91Y2hIaXN0b3J5LCB0b3VjaGVzQ2hhbmdlZEFmdGVyLCBmYWxz
ZSwgLy8gaXNYQXhpcworICAgIGZhbHNlIC8vIG9mQ3VycmVudAorICAgICk7CisgIH0sCisKKyAg
Y3VycmVudENlbnRyb2lkWDogZnVuY3Rpb24gKHRvdWNoSGlzdG9yeSkgeworICAgIHJldHVybiBU
b3VjaEhpc3RvcnlNYXRoLmNlbnRyb2lkRGltZW5zaW9uKHRvdWNoSGlzdG9yeSwgMCwgLy8gdG91
Y2hlc0NoYW5nZWRBZnRlcgorICAgIHRydWUsIC8vIGlzWEF4aXMKKyAgICB0cnVlIC8vIG9mQ3Vy
cmVudAorICAgICk7CisgIH0sCisKKyAgY3VycmVudENlbnRyb2lkWTogZnVuY3Rpb24gKHRvdWNo
SGlzdG9yeSkgeworICAgIHJldHVybiBUb3VjaEhpc3RvcnlNYXRoLmNlbnRyb2lkRGltZW5zaW9u
KHRvdWNoSGlzdG9yeSwgMCwgLy8gdG91Y2hlc0NoYW5nZWRBZnRlcgorICAgIGZhbHNlLCAvLyBp
c1hBeGlzCisgICAgdHJ1ZSAvLyBvZkN1cnJlbnQKKyAgICApOworICB9LAorCisgIG5vQ2VudHJv
aWQ6IC0xCit9OworCittb2R1bGUuZXhwb3J0cyA9IFRvdWNoSGlzdG9yeU1hdGg7ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9t
b2R1bGVzL3JlYWN0LWRvbS9saWIvVHJhbnNhY3Rpb24uanMgYi9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9u
b2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9UcmFuc2FjdGlvbi5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NjVl
NTVhMGE0ZWI1MDZkNDVkODczZWNiMzFhN2JmNzU4NTViN2YxCi0tLSAvZGV2L251bGwKKysrIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvVHJhbnNhY3Rpb24u
anMKQEAgLTAsMCArMSwyMjQgQEAKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFj
ZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2Ug
Y29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhl
CisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIAorICov
CisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9wcm9kSW52YXJpYW50ID0gcmVxdWlyZSgnLi9yZWFj
dFByb2RJbnZhcmlhbnQnKTsKKwordmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2lu
dmFyaWFudCcpOworCit2YXIgT0JTRVJWRURfRVJST1IgPSB7fTsKKworLyoqCisgKiBgVHJhbnNh
Y3Rpb25gIGNyZWF0ZXMgYSBibGFjayBib3ggdGhhdCBpcyBhYmxlIHRvIHdyYXAgYW55IG1ldGhv
ZCBzdWNoIHRoYXQKKyAqIGNlcnRhaW4gaW52YXJpYW50cyBhcmUgbWFpbnRhaW5lZCBiZWZvcmUg
YW5kIGFmdGVyIHRoZSBtZXRob2QgaXMgaW52b2tlZAorICogKEV2ZW4gaWYgYW4gZXhjZXB0aW9u
IGlzIHRocm93biB3aGlsZSBpbnZva2luZyB0aGUgd3JhcHBlZCBtZXRob2QpLiBXaG9ldmVyCisg
KiBpbnN0YW50aWF0ZXMgYSB0cmFuc2FjdGlvbiBjYW4gcHJvdmlkZSBlbmZvcmNlcnMgb2YgdGhl
IGludmFyaWFudHMgYXQKKyAqIGNyZWF0aW9uIHRpbWUuIFRoZSBgVHJhbnNhY3Rpb25gIGNsYXNz
IGl0c2VsZiB3aWxsIHN1cHBseSBvbmUgYWRkaXRpb25hbAorICogYXV0b21hdGljIGludmFyaWFu
dCBmb3IgeW91IC0gdGhlIGludmFyaWFudCB0aGF0IGFueSB0cmFuc2FjdGlvbiBpbnN0YW5jZQor
ICogc2hvdWxkIG5vdCBiZSBydW4gd2hpbGUgaXQgaXMgYWxyZWFkeSBiZWluZyBydW4uIFlvdSB3
b3VsZCB0eXBpY2FsbHkgY3JlYXRlIGEKKyAqIHNpbmdsZSBpbnN0YW5jZSBvZiBhIGBUcmFuc2Fj
dGlvbmAgZm9yIHJldXNlIG11bHRpcGxlIHRpbWVzLCB0aGF0IHBvdGVudGlhbGx5CisgKiBpcyB1
c2VkIHRvIHdyYXAgc2V2ZXJhbCBkaWZmZXJlbnQgbWV0aG9kcy4gV3JhcHBlcnMgYXJlIGV4dHJl
bWVseSBzaW1wbGUgLQorICogdGhleSBvbmx5IHJlcXVpcmUgaW1wbGVtZW50aW5nIHR3byBtZXRo
b2RzLgorICoKKyAqIDxwcmU+CisgKiAgICAgICAgICAgICAgICAgICAgICAgd3JhcHBlcnMgKGlu
amVjdGVkIGF0IGNyZWF0aW9uIHRpbWUpCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKyAgICAgICAgKworICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgICAgICAgIHwKKyAqICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS18
LS0tLS0tLS18LS0tLS0tLS0tLS0tLS0rCisgKiAgICAgICAgICAgICAgICAgICAgfCAgICAgICAg
ICAgICAgICAgdiAgICAgICAgfCAgICAgICAgICAgICAgfAorICogICAgICAgICAgICAgICAgICAg
IHwgICAgICArLS0tLS0tLS0tLS0tLS0tKyAgIHwgICAgICAgICAgICAgIHwKKyAqICAgICAgICAg
ICAgICAgICAgICB8ICAgKy0tfCAgICB3cmFwcGVyMSAgIHwtLS18LS0tLSsgICAgICAgICB8Cisg
KiAgICAgICAgICAgICAgICAgICAgfCAgIHwgICstLS0tLS0tLS0tLS0tLS0rICAgdiAgICB8ICAg
ICAgICAgfAorICogICAgICAgICAgICAgICAgICAgIHwgICB8ICAgICAgICAgICstLS0tLS0tLS0t
LS0tKyAgfCAgICAgICAgIHwKKyAqICAgICAgICAgICAgICAgICAgICB8ICAgfCAgICAgKy0tLS18
ICAgd3JhcHBlcjIgIHwtLS0tLS0tLSsgICB8CisgKiAgICAgICAgICAgICAgICAgICAgfCAgIHwg
ICAgIHwgICAgKy0tLS0tLS0tLS0tLS0rICB8ICAgICB8ICAgfAorICogICAgICAgICAgICAgICAg
ICAgIHwgICB8ICAgICB8ICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCAgIHwKKyAqICAgICAg
ICAgICAgICAgICAgICB8ICAgdiAgICAgdiAgICAgICAgICAgICAgICAgICAgIHYgICAgIHYgICB8
IHdyYXBwZXIKKyAqICAgICAgICAgICAgICAgICAgICB8ICstLS0rICstLS0rICAgKy0tLS0tLS0t
LSsgICArLS0tKyArLS0tKyB8IGludmFyaWFudHMKKyAqIHBlcmZvcm0oYW55TWV0aG9kKSB8IHwg
ICB8IHwgICB8ICAgfCAgICAgICAgIHwgICB8ICAgfCB8ICAgfCB8IG1haW50YWluZWQKKyAqICst
LS0tLS0tLS0tLS0tLS0tLT58LXwtLS18LXwtLS18LS0+fGFueU1ldGhvZHwtLS18LS0tfC18LS0t
fC18LS0tLS0tLS0+CisgKiAgICAgICAgICAgICAgICAgICAgfCB8ICAgfCB8ICAgfCAgIHwgICAg
ICAgICB8ICAgfCAgIHwgfCAgIHwgfAorICogICAgICAgICAgICAgICAgICAgIHwgfCAgIHwgfCAg
IHwgICB8ICAgICAgICAgfCAgIHwgICB8IHwgICB8IHwKKyAqICAgICAgICAgICAgICAgICAgICB8
IHwgICB8IHwgICB8ICAgfCAgICAgICAgIHwgICB8ICAgfCB8ICAgfCB8CisgKiAgICAgICAgICAg
ICAgICAgICAgfCArLS0tKyArLS0tKyAgICstLS0tLS0tLS0rICAgKy0tLSsgKy0tLSsgfAorICog
ICAgICAgICAgICAgICAgICAgIHwgIGluaXRpYWxpemUgICAgICAgICAgICAgICAgICAgIGNsb3Nl
ICAgIHwKKyAqICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0rCisgKiA8L3ByZT4KKyAqCisgKiBVc2UgY2FzZXM6CisgKiAtIFByZXNl
cnZpbmcgdGhlIGlucHV0IHNlbGVjdGlvbiByYW5nZXMgYmVmb3JlL2FmdGVyIHJlY29uY2lsaWF0
aW9uLgorICogICBSZXN0b3Jpbmcgc2VsZWN0aW9uIGV2ZW4gaW4gdGhlIGV2ZW50IG9mIGFuIHVu
ZXhwZWN0ZWQgZXJyb3IuCisgKiAtIERlYWN0aXZhdGluZyBldmVudHMgd2hpbGUgcmVhcnJhbmdp
bmcgdGhlIERPTSwgcHJldmVudGluZyBibHVycy9mb2N1c2VzLAorICogICB3aGlsZSBndWFyYW50
ZWVpbmcgdGhhdCBhZnRlcndhcmRzLCB0aGUgZXZlbnQgc3lzdGVtIGlzIHJlYWN0aXZhdGVkLgor
ICogLSBGbHVzaGluZyBhIHF1ZXVlIG9mIGNvbGxlY3RlZCBET00gbXV0YXRpb25zIHRvIHRoZSBt
YWluIFVJIHRocmVhZCBhZnRlciBhCisgKiAgIHJlY29uY2lsaWF0aW9uIHRha2VzIHBsYWNlIGlu
IGEgd29ya2VyIHRocmVhZC4KKyAqIC0gSW52b2tpbmcgYW55IGNvbGxlY3RlZCBgY29tcG9uZW50
RGlkVXBkYXRlYCBjYWxsYmFja3MgYWZ0ZXIgcmVuZGVyaW5nIG5ldworICogICBjb250ZW50Lgor
ICogLSAoRnV0dXJlIHVzZSBjYXNlKTogV3JhcHBpbmcgcGFydGljdWxhciBmbHVzaGVzIG9mIHRo
ZSBgUmVhY3RXb3JrZXJgIHF1ZXVlCisgKiAgIHRvIHByZXNlcnZlIHRoZSBgc2Nyb2xsVG9wYCAo
YW4gYXV0b21hdGljIHNjcm9sbCBhd2FyZSBET00pLgorICogLSAoRnV0dXJlIHVzZSBjYXNlKTog
TGF5b3V0IGNhbGN1bGF0aW9ucyBiZWZvcmUgYW5kIGFmdGVyIERPTSB1cGRhdGVzLgorICoKKyAq
IFRyYW5zYWN0aW9uYWwgcGx1Z2luIEFQSToKKyAqIC0gQSBtb2R1bGUgdGhhdCBoYXMgYW4gYGlu
aXRpYWxpemVgIG1ldGhvZCB0aGF0IHJldHVybnMgYW55IHByZWNvbXB1dGF0aW9uLgorICogLSBh
bmQgYSBgY2xvc2VgIG1ldGhvZCB0aGF0IGFjY2VwdHMgdGhlIHByZWNvbXB1dGF0aW9uLiBgY2xv
c2VgIGlzIGludm9rZWQKKyAqICAgd2hlbiB0aGUgd3JhcHBlZCBwcm9jZXNzIGlzIGNvbXBsZXRl
ZCwgb3IgaGFzIGZhaWxlZC4KKyAqCisgKiBAcGFyYW0ge0FycmF5PFRyYW5zYWN0aW9uYWxXcmFw
cGVyPn0gdHJhbnNhY3Rpb25XcmFwcGVyIFdyYXBwZXIgbW9kdWxlcworICogdGhhdCBpbXBsZW1l
bnQgYGluaXRpYWxpemVgIGFuZCBgY2xvc2VgLgorICogQHJldHVybiB7VHJhbnNhY3Rpb259IFNp
bmdsZSB0cmFuc2FjdGlvbiBmb3IgcmV1c2UgaW4gdGhyZWFkLgorICoKKyAqIEBjbGFzcyBUcmFu
c2FjdGlvbgorICovCit2YXIgVHJhbnNhY3Rpb25JbXBsID0geworICAvKioKKyAgICogU2V0cyB1
cCB0aGlzIGluc3RhbmNlIHNvIHRoYXQgaXQgaXMgcHJlcGFyZWQgZm9yIGNvbGxlY3RpbmcgbWV0
cmljcy4gRG9lcworICAgKiBzbyBzdWNoIHRoYXQgdGhpcyBzZXR1cCBtZXRob2QgbWF5IGJlIHVz
ZWQgb24gYW4gaW5zdGFuY2UgdGhhdCBpcyBhbHJlYWR5CisgICAqIGluaXRpYWxpemVkLCBpbiBh
IHdheSB0aGF0IGRvZXMgbm90IGNvbnN1bWUgYWRkaXRpb25hbCBtZW1vcnkgdXBvbiByZXVzZS4K
KyAgICogVGhhdCBjYW4gYmUgdXNlZnVsIGlmIHlvdSBkZWNpZGUgdG8gbWFrZSB5b3VyIHN1YmNs
YXNzIG9mIHRoaXMgbWl4aW4gYQorICAgKiAiUG9vbGVkQ2xhc3MiLgorICAgKi8KKyAgcmVpbml0
aWFsaXplVHJhbnNhY3Rpb246IGZ1bmN0aW9uICgpIHsKKyAgICB0aGlzLnRyYW5zYWN0aW9uV3Jh
cHBlcnMgPSB0aGlzLmdldFRyYW5zYWN0aW9uV3JhcHBlcnMoKTsKKyAgICBpZiAodGhpcy53cmFw
cGVySW5pdERhdGEpIHsKKyAgICAgIHRoaXMud3JhcHBlckluaXREYXRhLmxlbmd0aCA9IDA7Cisg
ICAgfSBlbHNlIHsKKyAgICAgIHRoaXMud3JhcHBlckluaXREYXRhID0gW107CisgICAgfQorICAg
IHRoaXMuX2lzSW5UcmFuc2FjdGlvbiA9IGZhbHNlOworICB9LAorCisgIF9pc0luVHJhbnNhY3Rp
b246IGZhbHNlLAorCisgIC8qKgorICAgKiBAYWJzdHJhY3QKKyAgICogQHJldHVybiB7QXJyYXk8
VHJhbnNhY3Rpb25XcmFwcGVyPn0gQXJyYXkgb2YgdHJhbnNhY3Rpb24gd3JhcHBlcnMuCisgICAq
LworICBnZXRUcmFuc2FjdGlvbldyYXBwZXJzOiBudWxsLAorCisgIGlzSW5UcmFuc2FjdGlvbjog
ZnVuY3Rpb24gKCkgeworICAgIHJldHVybiAhIXRoaXMuX2lzSW5UcmFuc2FjdGlvbjsKKyAgfSwK
KworICAvKioKKyAgICogRXhlY3V0ZXMgdGhlIGZ1bmN0aW9uIHdpdGhpbiBhIHNhZmV0eSB3aW5k
b3cuIFVzZSB0aGlzIGZvciB0aGUgdG9wIGxldmVsCisgICAqIG1ldGhvZHMgdGhhdCByZXN1bHQg
aW4gbGFyZ2UgYW1vdW50cyBvZiBjb21wdXRhdGlvbi9tdXRhdGlvbnMgdGhhdCB3b3VsZAorICAg
KiBuZWVkIHRvIGJlIHNhZmV0eSBjaGVja2VkLiBUaGUgb3B0aW9uYWwgYXJndW1lbnRzIGhlbHBz
IHByZXZlbnQgdGhlIG5lZWQKKyAgICogdG8gYmluZCBpbiBtYW55IGNhc2VzLgorICAgKgorICAg
KiBAcGFyYW0ge2Z1bmN0aW9ufSBtZXRob2QgTWVtYmVyIG9mIHNjb3BlIHRvIGNhbGwuCisgICAq
IEBwYXJhbSB7T2JqZWN0fSBzY29wZSBTY29wZSB0byBpbnZva2UgZnJvbS4KKyAgICogQHBhcmFt
IHtPYmplY3Q/PX0gYSBBcmd1bWVudCB0byBwYXNzIHRvIHRoZSBtZXRob2QuCisgICAqIEBwYXJh
bSB7T2JqZWN0Pz19IGIgQXJndW1lbnQgdG8gcGFzcyB0byB0aGUgbWV0aG9kLgorICAgKiBAcGFy
YW0ge09iamVjdD89fSBjIEFyZ3VtZW50IHRvIHBhc3MgdG8gdGhlIG1ldGhvZC4KKyAgICogQHBh
cmFtIHtPYmplY3Q/PX0gZCBBcmd1bWVudCB0byBwYXNzIHRvIHRoZSBtZXRob2QuCisgICAqIEBw
YXJhbSB7T2JqZWN0Pz19IGUgQXJndW1lbnQgdG8gcGFzcyB0byB0aGUgbWV0aG9kLgorICAgKiBA
cGFyYW0ge09iamVjdD89fSBmIEFyZ3VtZW50IHRvIHBhc3MgdG8gdGhlIG1ldGhvZC4KKyAgICoK
KyAgICogQHJldHVybiB7Kn0gUmV0dXJuIHZhbHVlIGZyb20gYG1ldGhvZGAuCisgICAqLworICBw
ZXJmb3JtOiBmdW5jdGlvbiAobWV0aG9kLCBzY29wZSwgYSwgYiwgYywgZCwgZSwgZikgeworICAg
ICEhdGhpcy5pc0luVHJhbnNhY3Rpb24oKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJv
ZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdUcmFuc2FjdGlvbi5wZXJmb3JtKC4uLik6IENh
bm5vdCBpbml0aWFsaXplIGEgdHJhbnNhY3Rpb24gd2hlbiB0aGVyZSBpcyBhbHJlYWR5IGFuIG91
dHN0YW5kaW5nIHRyYW5zYWN0aW9uLicpIDogX3Byb2RJbnZhcmlhbnQoJzI3JykgOiB2b2lkIDA7
CisgICAgdmFyIGVycm9yVGhyb3duOworICAgIHZhciByZXQ7CisgICAgdHJ5IHsKKyAgICAgIHRo
aXMuX2lzSW5UcmFuc2FjdGlvbiA9IHRydWU7CisgICAgICAvLyBDYXRjaGluZyBlcnJvcnMgbWFr
ZXMgZGVidWdnaW5nIG1vcmUgZGlmZmljdWx0LCBzbyB3ZSBzdGFydCB3aXRoCisgICAgICAvLyBl
cnJvclRocm93biBzZXQgdG8gdHJ1ZSBiZWZvcmUgc2V0dGluZyBpdCB0byBmYWxzZSBhZnRlciBj
YWxsaW5nCisgICAgICAvLyBjbG9zZSAtLSBpZiBpdCdzIHN0aWxsIHNldCB0byB0cnVlIGluIHRo
ZSBmaW5hbGx5IGJsb2NrLCBpdCBtZWFucworICAgICAgLy8gb25lIG9mIHRoZXNlIGNhbGxzIHRo
cmV3LgorICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgdGhpcy5pbml0aWFsaXplQWxs
KDApOworICAgICAgcmV0ID0gbWV0aG9kLmNhbGwoc2NvcGUsIGEsIGIsIGMsIGQsIGUsIGYpOwor
ICAgICAgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB9IGZpbmFsbHkgeworICAgICAgdHJ5IHsK
KyAgICAgICAgaWYgKGVycm9yVGhyb3duKSB7CisgICAgICAgICAgLy8gSWYgYG1ldGhvZGAgdGhy
b3dzLCBwcmVmZXIgdG8gc2hvdyB0aGF0IHN0YWNrIHRyYWNlIG92ZXIgYW55IHRocm93bgorICAg
ICAgICAgIC8vIGJ5IGludm9raW5nIGBjbG9zZUFsbGAuCisgICAgICAgICAgdHJ5IHsKKyAgICAg
ICAgICAgIHRoaXMuY2xvc2VBbGwoMCk7CisgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7fQorICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgIC8vIFNpbmNlIGBtZXRob2RgIGRpZG4ndCB0aHJvdywg
d2UgZG9uJ3Qgd2FudCB0byBzaWxlbmNlIHRoZSBleGNlcHRpb24KKyAgICAgICAgICAvLyBoZXJl
LgorICAgICAgICAgIHRoaXMuY2xvc2VBbGwoMCk7CisgICAgICAgIH0KKyAgICAgIH0gZmluYWxs
eSB7CisgICAgICAgIHRoaXMuX2lzSW5UcmFuc2FjdGlvbiA9IGZhbHNlOworICAgICAgfQorICAg
IH0KKyAgICByZXR1cm4gcmV0OworICB9LAorCisgIGluaXRpYWxpemVBbGw6IGZ1bmN0aW9uIChz
dGFydEluZGV4KSB7CisgICAgdmFyIHRyYW5zYWN0aW9uV3JhcHBlcnMgPSB0aGlzLnRyYW5zYWN0
aW9uV3JhcHBlcnM7CisgICAgZm9yICh2YXIgaSA9IHN0YXJ0SW5kZXg7IGkgPCB0cmFuc2FjdGlv
bldyYXBwZXJzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgd3JhcHBlciA9IHRyYW5zYWN0aW9u
V3JhcHBlcnNbaV07CisgICAgICB0cnkgeworICAgICAgICAvLyBDYXRjaGluZyBlcnJvcnMgbWFr
ZXMgZGVidWdnaW5nIG1vcmUgZGlmZmljdWx0LCBzbyB3ZSBzdGFydCB3aXRoIHRoZQorICAgICAg
ICAvLyBPQlNFUlZFRF9FUlJPUiBzdGF0ZSBiZWZvcmUgb3ZlcndyaXRpbmcgaXQgd2l0aCB0aGUg
cmVhbCByZXR1cm4gdmFsdWUKKyAgICAgICAgLy8gb2YgaW5pdGlhbGl6ZSAtLSBpZiBpdCdzIHN0
aWxsIHNldCB0byBPQlNFUlZFRF9FUlJPUiBpbiB0aGUgZmluYWxseQorICAgICAgICAvLyBibG9j
aywgaXQgbWVhbnMgd3JhcHBlci5pbml0aWFsaXplIHRocmV3LgorICAgICAgICB0aGlzLndyYXBw
ZXJJbml0RGF0YVtpXSA9IE9CU0VSVkVEX0VSUk9SOworICAgICAgICB0aGlzLndyYXBwZXJJbml0
RGF0YVtpXSA9IHdyYXBwZXIuaW5pdGlhbGl6ZSA/IHdyYXBwZXIuaW5pdGlhbGl6ZS5jYWxsKHRo
aXMpIDogbnVsbDsKKyAgICAgIH0gZmluYWxseSB7CisgICAgICAgIGlmICh0aGlzLndyYXBwZXJJ
bml0RGF0YVtpXSA9PT0gT0JTRVJWRURfRVJST1IpIHsKKyAgICAgICAgICAvLyBUaGUgaW5pdGlh
bGl6ZXIgZm9yIHdyYXBwZXIgaSB0aHJldyBhbiBlcnJvcjsgaW5pdGlhbGl6ZSB0aGUKKyAgICAg
ICAgICAvLyByZW1haW5pbmcgd3JhcHBlcnMgYnV0IHNpbGVuY2UgYW55IGV4Y2VwdGlvbnMgZnJv
bSB0aGVtIHRvIGVuc3VyZQorICAgICAgICAgIC8vIHRoYXQgdGhlIGZpcnN0IGVycm9yIGlzIHRo
ZSBvbmUgdG8gYnViYmxlIHVwLgorICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICB0aGlzLmlu
aXRpYWxpemVBbGwoaSArIDEpOworICAgICAgICAgIH0gY2F0Y2ggKGVycikge30KKyAgICAgICAg
fQorICAgICAgfQorICAgIH0KKyAgfSwKKworICAvKioKKyAgICogSW52b2tlcyBlYWNoIG9mIGB0
aGlzLnRyYW5zYWN0aW9uV3JhcHBlcnMuY2xvc2VbaV1gIGZ1bmN0aW9ucywgcGFzc2luZyBpbnRv
CisgICAqIHRoZW0gdGhlIHJlc3BlY3RpdmUgcmV0dXJuIHZhbHVlcyBvZiBgdGhpcy50cmFuc2Fj
dGlvbldyYXBwZXJzLmluaXRbaV1gCisgICAqIChgY2xvc2VgcnMgdGhhdCBjb3JyZXNwb25kIHRv
IGluaXRpYWxpemVycyB0aGF0IGZhaWxlZCB3aWxsIG5vdCBiZQorICAgKiBpbnZva2VkKS4KKyAg
ICovCisgIGNsb3NlQWxsOiBmdW5jdGlvbiAoc3RhcnRJbmRleCkgeworICAgICF0aGlzLmlzSW5U
cmFuc2FjdGlvbigpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGlu
dmFyaWFudChmYWxzZSwgJ1RyYW5zYWN0aW9uLmNsb3NlQWxsKCk6IENhbm5vdCBjbG9zZSB0cmFu
c2FjdGlvbiB3aGVuIG5vbmUgYXJlIG9wZW4uJykgOiBfcHJvZEludmFyaWFudCgnMjgnKSA6IHZv
aWQgMDsKKyAgICB2YXIgdHJhbnNhY3Rpb25XcmFwcGVycyA9IHRoaXMudHJhbnNhY3Rpb25XcmFw
cGVyczsKKyAgICBmb3IgKHZhciBpID0gc3RhcnRJbmRleDsgaSA8IHRyYW5zYWN0aW9uV3JhcHBl
cnMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciB3cmFwcGVyID0gdHJhbnNhY3Rpb25XcmFwcGVy
c1tpXTsKKyAgICAgIHZhciBpbml0RGF0YSA9IHRoaXMud3JhcHBlckluaXREYXRhW2ldOworICAg
ICAgdmFyIGVycm9yVGhyb3duOworICAgICAgdHJ5IHsKKyAgICAgICAgLy8gQ2F0Y2hpbmcgZXJy
b3JzIG1ha2VzIGRlYnVnZ2luZyBtb3JlIGRpZmZpY3VsdCwgc28gd2Ugc3RhcnQgd2l0aAorICAg
ICAgICAvLyBlcnJvclRocm93biBzZXQgdG8gdHJ1ZSBiZWZvcmUgc2V0dGluZyBpdCB0byBmYWxz
ZSBhZnRlciBjYWxsaW5nCisgICAgICAgIC8vIGNsb3NlIC0tIGlmIGl0J3Mgc3RpbGwgc2V0IHRv
IHRydWUgaW4gdGhlIGZpbmFsbHkgYmxvY2ssIGl0IG1lYW5zCisgICAgICAgIC8vIHdyYXBwZXIu
Y2xvc2UgdGhyZXcuCisgICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTsKKyAgICAgICAgaWYgKGlu
aXREYXRhICE9PSBPQlNFUlZFRF9FUlJPUiAmJiB3cmFwcGVyLmNsb3NlKSB7CisgICAgICAgICAg
d3JhcHBlci5jbG9zZS5jYWxsKHRoaXMsIGluaXREYXRhKTsKKyAgICAgICAgfQorICAgICAgICBl
cnJvclRocm93biA9IGZhbHNlOworICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgaWYgKGVycm9y
VGhyb3duKSB7CisgICAgICAgICAgLy8gVGhlIGNsb3NlciBmb3Igd3JhcHBlciBpIHRocmV3IGFu
IGVycm9yOyBjbG9zZSB0aGUgcmVtYWluaW5nCisgICAgICAgICAgLy8gd3JhcHBlcnMgYnV0IHNp
bGVuY2UgYW55IGV4Y2VwdGlvbnMgZnJvbSB0aGVtIHRvIGVuc3VyZSB0aGF0IHRoZQorICAgICAg
ICAgIC8vIGZpcnN0IGVycm9yIGlzIHRoZSBvbmUgdG8gYnViYmxlIHVwLgorICAgICAgICAgIHRy
eSB7CisgICAgICAgICAgICB0aGlzLmNsb3NlQWxsKGkgKyAxKTsKKyAgICAgICAgICB9IGNhdGNo
IChlKSB7fQorICAgICAgICB9CisgICAgICB9CisgICAgfQorICAgIHRoaXMud3JhcHBlckluaXRE
YXRhLmxlbmd0aCA9IDA7CisgIH0KK307CisKK21vZHVsZS5leHBvcnRzID0gVHJhbnNhY3Rpb25J
bXBsOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1ZpZXdwb3J0TWV0cmljcy5qcyBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1ZpZXdwb3J0TWV0cmlj
cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jZmM5NDVhZTViNmY2NTAxMTVjM2U1ZGEzYzYzYzAyMmQyMzVhZGE2
Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0
LWRvbS9saWIvVmlld3BvcnRNZXRyaWNzLmpzCkBAIC0wLDAgKzEsMjYgQEAKKy8qKgorICogQ29w
eXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0
eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBWaWV3cG9ydE1ldHJp
Y3MgPSB7CisKKyAgY3VycmVudFNjcm9sbExlZnQ6IDAsCisKKyAgY3VycmVudFNjcm9sbFRvcDog
MCwKKworICByZWZyZXNoU2Nyb2xsVmFsdWVzOiBmdW5jdGlvbiAoc2Nyb2xsUG9zaXRpb24pIHsK
KyAgICBWaWV3cG9ydE1ldHJpY3MuY3VycmVudFNjcm9sbExlZnQgPSBzY3JvbGxQb3NpdGlvbi54
OworICAgIFZpZXdwb3J0TWV0cmljcy5jdXJyZW50U2Nyb2xsVG9wID0gc2Nyb2xsUG9zaXRpb24u
eTsKKyAgfQorCit9OworCittb2R1bGUuZXhwb3J0cyA9IFZpZXdwb3J0TWV0cmljczsKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2Rl
X21vZHVsZXMvcmVhY3QtZG9tL2xpYi9hY2N1bXVsYXRlLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qv
bm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvYWNjdW11bGF0ZS5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNGM3
NjNmZTQ3NjdmMWU4MTUwNGJhYWZhNWIxOTQ5MzJlNzdlN2VmCi0tLSAvZGV2L251bGwKKysrIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvYWNjdW11bGF0ZS5q
cwpAQCAtMCwwICsxLDQ1IEBACisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNv
ZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQor
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBp
biB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiAKKyAqLwor
CisndXNlIHN0cmljdCc7CisKK3ZhciBfcHJvZEludmFyaWFudCA9IHJlcXVpcmUoJy4vcmVhY3RQ
cm9kSW52YXJpYW50Jyk7CisKK3ZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZh
cmlhbnQnKTsKKworLyoqCisgKiBBY2N1bXVsYXRlcyBpdGVtcyB0aGF0IG11c3Qgbm90IGJlIG51
bGwgb3IgdW5kZWZpbmVkLgorICoKKyAqIFRoaXMgaXMgdXNlZCB0byBjb25zZXJ2ZSBtZW1vcnkg
YnkgYXZvaWRpbmcgYXJyYXkgYWxsb2NhdGlvbnMuCisgKgorICogQHJldHVybiB7KnxhcnJheTwq
Pn0gQW4gYWNjdW11bGF0aW9uIG9mIGl0ZW1zLgorICovCitmdW5jdGlvbiBhY2N1bXVsYXRlKGN1
cnJlbnQsIG5leHQpIHsKKyAgIShuZXh0ICE9IG51bGwpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2FjY3VtdWxhdGUoLi4uKTogQWNj
dW11bGF0ZWQgaXRlbXMgbXVzdCBiZSBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQuJykgOiBfcHJv
ZEludmFyaWFudCgnMjknKSA6IHZvaWQgMDsKKworICBpZiAoY3VycmVudCA9PSBudWxsKSB7Cisg
ICAgcmV0dXJuIG5leHQ7CisgIH0KKworICAvLyBCb3RoIGFyZSBub3QgZW1wdHkuIFdhcm5pbmc6
IE5ldmVyIGNhbGwgeC5jb25jYXQoeSkgd2hlbiB5b3UgYXJlIG5vdAorICAvLyBjZXJ0YWluIHRo
YXQgeCBpcyBhbiBBcnJheSAoeCBjb3VsZCBiZSBhIHN0cmluZyB3aXRoIGNvbmNhdCBtZXRob2Qp
LgorICBpZiAoQXJyYXkuaXNBcnJheShjdXJyZW50KSkgeworICAgIHJldHVybiBjdXJyZW50LmNv
bmNhdChuZXh0KTsKKyAgfQorCisgIGlmIChBcnJheS5pc0FycmF5KG5leHQpKSB7CisgICAgcmV0
dXJuIFtjdXJyZW50XS5jb25jYXQobmV4dCk7CisgIH0KKworICByZXR1cm4gW2N1cnJlbnQsIG5l
eHRdOworfQorCittb2R1bGUuZXhwb3J0cyA9IGFjY3VtdWxhdGU7ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3Jl
YWN0LWRvbS9saWIvYWNjdW11bGF0ZUludG8uanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21v
ZHVsZXMvcmVhY3QtZG9tL2xpYi9hY2N1bXVsYXRlSW50by5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZWE4Zjll
MTJjMzViYWZjN2U3NmYyMDI3YjBmOTFkNDVjYjRlMWU3Ci0tLSAvZGV2L251bGwKKysrIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvYWNjdW11bGF0ZUludG8u
anMKQEAgLTAsMCArMSw1NyBAQAorLyoqCisgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50LCBGYWNl
Ym9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBj
b2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUK
KyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJl
ZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQg
aW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogCisgKi8K
KworJ3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0
UHJvZEludmFyaWFudCcpOworCit2YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52
YXJpYW50Jyk7CisKKy8qKgorICogQWNjdW11bGF0ZXMgaXRlbXMgdGhhdCBtdXN0IG5vdCBiZSBu
dWxsIG9yIHVuZGVmaW5lZCBpbnRvIHRoZSBmaXJzdCBvbmUuIFRoaXMKKyAqIGlzIHVzZWQgdG8g
Y29uc2VydmUgbWVtb3J5IGJ5IGF2b2lkaW5nIGFycmF5IGFsbG9jYXRpb25zLCBhbmQgdGh1cyBz
YWNyaWZpY2VzCisgKiBBUEkgY2xlYW5uZXNzLiBTaW5jZSBgY3VycmVudGAgY2FuIGJlIG51bGwg
YmVmb3JlIGJlaW5nIHBhc3NlZCBpbiBhbmQgbm90CisgKiBudWxsIGFmdGVyIHRoaXMgZnVuY3Rp
b24sIG1ha2Ugc3VyZSB0byBhc3NpZ24gaXQgYmFjayB0byBgY3VycmVudGA6CisgKgorICogYGEg
PSBhY2N1bXVsYXRlSW50byhhLCBiKTtgCisgKgorICogVGhpcyBBUEkgc2hvdWxkIGJlIHNwYXJp
bmdseSB1c2VkLiBUcnkgYGFjY3VtdWxhdGVgIGZvciBzb21ldGhpbmcgY2xlYW5lci4KKyAqCisg
KiBAcmV0dXJuIHsqfGFycmF5PCo+fSBBbiBhY2N1bXVsYXRpb24gb2YgaXRlbXMuCisgKi8KKwor
ZnVuY3Rpb24gYWNjdW11bGF0ZUludG8oY3VycmVudCwgbmV4dCkgeworICAhKG5leHQgIT0gbnVs
bCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZh
bHNlLCAnYWNjdW11bGF0ZUludG8oLi4uKTogQWNjdW11bGF0ZWQgaXRlbXMgbXVzdCBub3QgYmUg
bnVsbCBvciB1bmRlZmluZWQuJykgOiBfcHJvZEludmFyaWFudCgnMzAnKSA6IHZvaWQgMDsKKwor
ICBpZiAoY3VycmVudCA9PSBudWxsKSB7CisgICAgcmV0dXJuIG5leHQ7CisgIH0KKworICAvLyBC
b3RoIGFyZSBub3QgZW1wdHkuIFdhcm5pbmc6IE5ldmVyIGNhbGwgeC5jb25jYXQoeSkgd2hlbiB5
b3UgYXJlIG5vdAorICAvLyBjZXJ0YWluIHRoYXQgeCBpcyBhbiBBcnJheSAoeCBjb3VsZCBiZSBh
IHN0cmluZyB3aXRoIGNvbmNhdCBtZXRob2QpLgorICBpZiAoQXJyYXkuaXNBcnJheShjdXJyZW50
KSkgeworICAgIGlmIChBcnJheS5pc0FycmF5KG5leHQpKSB7CisgICAgICBjdXJyZW50LnB1c2gu
YXBwbHkoY3VycmVudCwgbmV4dCk7CisgICAgICByZXR1cm4gY3VycmVudDsKKyAgICB9CisgICAg
Y3VycmVudC5wdXNoKG5leHQpOworICAgIHJldHVybiBjdXJyZW50OworICB9CisKKyAgaWYgKEFy
cmF5LmlzQXJyYXkobmV4dCkpIHsKKyAgICAvLyBBIGJpdCB0b28gZGFuZ2Vyb3VzIHRvIG11dGF0
ZSBgbmV4dGAuCisgICAgcmV0dXJuIFtjdXJyZW50XS5jb25jYXQobmV4dCk7CisgIH0KKworICBy
ZXR1cm4gW2N1cnJlbnQsIG5leHRdOworfQorCittb2R1bGUuZXhwb3J0cyA9IGFjY3VtdWxhdGVJ
bnRvOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL2FkbGVyMzIuanMgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9hZGxlcjMyLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmUxNTNhZGNiMzUxYzk4Yzk1MzY2OTczZGRiMmM1MTkzNDFiZmEzOTMKLS0tIC9kZXYvbnVsbAor
KysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9hZGxlcjMy
LmpzCkBAIC0wLDAgKzEsNDMgQEAKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFj
ZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2Ug
Y29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhl
CisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIAorICov
CisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIE1PRCA9IDY1NTIxOworCisvLyBhZGxlcjMyIGlzIG5v
dCBjcnlwdG9ncmFwaGljYWxseSBzdHJvbmcsIGFuZCBpcyBvbmx5IHVzZWQgdG8gc2FuaXR5IGNo
ZWNrIHRoYXQKKy8vIG1hcmt1cCBnZW5lcmF0ZWQgb24gdGhlIHNlcnZlciBtYXRjaGVzIHRoZSBt
YXJrdXAgZ2VuZXJhdGVkIG9uIHRoZSBjbGllbnQuCisvLyBUaGlzIGltcGxlbWVudGF0aW9uIChh
IG1vZGlmaWVkIHZlcnNpb24gb2YgdGhlIFNoZWV0SlMgdmVyc2lvbikgaGFzIGJlZW4gb3B0aW1p
emVkCisvLyBmb3Igb3VyIHVzZSBjYXNlLCBhdCB0aGUgZXhwZW5zZSBvZiBjb25mb3JtaW5nIHRv
IHRoZSBhZGxlcjMyIHNwZWNpZmljYXRpb24KKy8vIGZvciBub24tYXNjaWkgaW5wdXRzLgorZnVu
Y3Rpb24gYWRsZXIzMihkYXRhKSB7CisgIHZhciBhID0gMTsKKyAgdmFyIGIgPSAwOworICB2YXIg
aSA9IDA7CisgIHZhciBsID0gZGF0YS5sZW5ndGg7CisgIHZhciBtID0gbCAmIH4weDM7CisgIHdo
aWxlIChpIDwgbSkgeworICAgIHZhciBuID0gTWF0aC5taW4oaSArIDQwOTYsIG0pOworICAgIGZv
ciAoOyBpIDwgbjsgaSArPSA0KSB7CisgICAgICBiICs9IChhICs9IGRhdGEuY2hhckNvZGVBdChp
KSkgKyAoYSArPSBkYXRhLmNoYXJDb2RlQXQoaSArIDEpKSArIChhICs9IGRhdGEuY2hhckNvZGVB
dChpICsgMikpICsgKGEgKz0gZGF0YS5jaGFyQ29kZUF0KGkgKyAzKSk7CisgICAgfQorICAgIGEg
JT0gTU9EOworICAgIGIgJT0gTU9EOworICB9CisgIGZvciAoOyBpIDwgbDsgaSsrKSB7CisgICAg
YiArPSBhICs9IGRhdGEuY2hhckNvZGVBdChpKTsKKyAgfQorICBhICU9IE1PRDsKKyAgYiAlPSBN
T0Q7CisgIHJldHVybiBhIHwgYiA8PCAxNjsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBhZGxlcjMy
OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Jl
YWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL2NhbkRlZmluZVByb3BlcnR5LmpzIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvY2FuRGVmaW5lUHJvcGVy
dHkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uY2RlOWY1YzU1MjI2OGNlYjE1ZjM1OWUxNmM2OTFlNWM1OWUzZWFj
NAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFj
dC1kb20vbGliL2NhbkRlZmluZVByb3BlcnR5LmpzCkBAIC0wLDAgKzEsMjUgQEAKKy8qKgorICog
Q29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
ZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9m
IHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNh
bWUgZGlyZWN0b3J5LgorICoKKyAqIAorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIGNhbkRl
ZmluZVByb3BlcnR5ID0gZmFsc2U7CitpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJykgeworICB0cnkgeworICAgIC8vICRGbG93Rml4TWUgaHR0cHM6Ly9naXRodWIuY29t
L2ZhY2Vib29rL2Zsb3cvaXNzdWVzLzI4NQorICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwg
J3gnLCB7IGdldDogZnVuY3Rpb24gKCkge30gfSk7CisgICAgY2FuRGVmaW5lUHJvcGVydHkgPSB0
cnVlOworICB9IGNhdGNoICh4KSB7CisgICAgLy8gSUUgd2lsbCBmYWlsIG9uIGRlZmluZVByb3Bl
cnR5CisgIH0KK30KKworbW9kdWxlLmV4cG9ydHMgPSBjYW5EZWZpbmVQcm9wZXJ0eTsKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2Rl
X21vZHVsZXMvcmVhY3QtZG9tL2xpYi9jaGVja1JlYWN0VHlwZVNwZWMuanMgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9jaGVja1JlYWN0VHlwZVNwZWMuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNjNjMjdkNjRmNTc1M2QwZWE3N2ExZGU0NjU2OTE5NDhiMDA1OGZjMgotLS0g
L2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20v
bGliL2NoZWNrUmVhY3RUeXBlU3BlYy5qcwpAQCAtMCwwICsxLDg2IEBACisvKioKKyAqIENvcHly
aWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJbnZhcmlhbnQg
PSByZXF1aXJlKCcuL3JlYWN0UHJvZEludmFyaWFudCcpOworCit2YXIgUmVhY3RQcm9wVHlwZUxv
Y2F0aW9uTmFtZXMgPSByZXF1aXJlKCcuL1JlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzJyk7Cit2
YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSByZXF1aXJlKCcuL1JlYWN0UHJvcFR5cGVzU2VjcmV0
Jyk7CisKK3ZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTsKK3Zh
ciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpOworCit2YXIgUmVhY3RDb21w
b25lbnRUcmVlSG9vazsKKworaWYgKHR5cGVvZiBwcm9jZXNzICE9PSAndW5kZWZpbmVkJyAmJiBw
cm9jZXNzLmVudiAmJiBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Rlc3QnKSB7CisgIC8vIFRl
bXBvcmFyeSBoYWNrLgorICAvLyBJbmxpbmUgcmVxdWlyZXMgZG9uJ3Qgd29yayB3ZWxsIHdpdGgg
SmVzdDoKKyAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy83MjQw
CisgIC8vIFJlbW92ZSB0aGUgaW5saW5lIHJlcXVpcmVzIHdoZW4gd2UgZG9uJ3QgbmVlZCB0aGVt
IGFueW1vcmU6CisgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9wdWxsLzcx
NzgKKyAgUmVhY3RDb21wb25lbnRUcmVlSG9vayA9IHJlcXVpcmUoJ3JlYWN0L2xpYi9SZWFjdENv
bXBvbmVudFRyZWVIb29rJyk7Cit9CisKK3ZhciBsb2dnZWRUeXBlRmFpbHVyZXMgPSB7fTsKKwor
LyoqCisgKiBBc3NlcnQgdGhhdCB0aGUgdmFsdWVzIG1hdGNoIHdpdGggdGhlIHR5cGUgc3BlY3Mu
CisgKiBFcnJvciBtZXNzYWdlcyBhcmUgbWVtb3JpemVkIGFuZCB3aWxsIG9ubHkgYmUgc2hvd24g
b25jZS4KKyAqCisgKiBAcGFyYW0ge29iamVjdH0gdHlwZVNwZWNzIE1hcCBvZiBuYW1lIHRvIGEg
UmVhY3RQcm9wVHlwZQorICogQHBhcmFtIHtvYmplY3R9IHZhbHVlcyBSdW50aW1lIHZhbHVlcyB0
aGF0IG5lZWQgdG8gYmUgdHlwZS1jaGVja2VkCisgKiBAcGFyYW0ge3N0cmluZ30gbG9jYXRpb24g
ZS5nLiAicHJvcCIsICJjb250ZXh0IiwgImNoaWxkIGNvbnRleHQiCisgKiBAcGFyYW0ge3N0cmlu
Z30gY29tcG9uZW50TmFtZSBOYW1lIG9mIHRoZSBjb21wb25lbnQgZm9yIGVycm9yIG1lc3NhZ2Vz
LgorICogQHBhcmFtIHs/b2JqZWN0fSBlbGVtZW50IFRoZSBSZWFjdCBlbGVtZW50IHRoYXQgaXMg
YmVpbmcgdHlwZS1jaGVja2VkCisgKiBAcGFyYW0gez9udW1iZXJ9IGRlYnVnSUQgVGhlIFJlYWN0
IGNvbXBvbmVudCBpbnN0YW5jZSB0aGF0IGlzIGJlaW5nIHR5cGUtY2hlY2tlZAorICogQHByaXZh
dGUKKyAqLworZnVuY3Rpb24gY2hlY2tSZWFjdFR5cGVTcGVjKHR5cGVTcGVjcywgdmFsdWVzLCBs
b2NhdGlvbiwgY29tcG9uZW50TmFtZSwgZWxlbWVudCwgZGVidWdJRCkgeworICBmb3IgKHZhciB0
eXBlU3BlY05hbWUgaW4gdHlwZVNwZWNzKSB7CisgICAgaWYgKHR5cGVTcGVjcy5oYXNPd25Qcm9w
ZXJ0eSh0eXBlU3BlY05hbWUpKSB7CisgICAgICB2YXIgZXJyb3I7CisgICAgICAvLyBQcm9wIHR5
cGUgdmFsaWRhdGlvbiBtYXkgdGhyb3cuIEluIGNhc2UgdGhleSBkbywgd2UgZG9uJ3Qgd2FudCB0
bworICAgICAgLy8gZmFpbCB0aGUgcmVuZGVyIHBoYXNlIHdoZXJlIGl0IGRpZG4ndCBmYWlsIGJl
Zm9yZS4gU28gd2UgbG9nIGl0LgorICAgICAgLy8gQWZ0ZXIgdGhlc2UgaGF2ZSBiZWVuIGNsZWFu
ZWQgdXAsIHdlJ2xsIGxldCB0aGVtIHRocm93LgorICAgICAgdHJ5IHsKKyAgICAgICAgLy8gVGhp
cyBpcyBpbnRlbnRpb25hbGx5IGFuIGludmFyaWFudCB0aGF0IGdldHMgY2F1Z2h0LiBJdCdzIHRo
ZSBzYW1lCisgICAgICAgIC8vIGJlaGF2aW9yIGFzIHdpdGhvdXQgdGhpcyBzdGF0ZW1lbnQgZXhj
ZXB0IHdpdGggYSBiZXR0ZXIgbWVzc2FnZS4KKyAgICAgICAgISh0eXBlb2YgdHlwZVNwZWNzW3R5
cGVTcGVjTmFtZV0gPT09ICdmdW5jdGlvbicpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJyVzOiAlcyB0eXBlIGAlc2AgaXMgaW52YWxp
ZDsgaXQgbXVzdCBiZSBhIGZ1bmN0aW9uLCB1c3VhbGx5IGZyb20gUmVhY3QuUHJvcFR5cGVzLics
IGNvbXBvbmVudE5hbWUgfHwgJ1JlYWN0IGNsYXNzJywgUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFt
ZXNbbG9jYXRpb25dLCB0eXBlU3BlY05hbWUpIDogX3Byb2RJbnZhcmlhbnQoJzg0JywgY29tcG9u
ZW50TmFtZSB8fCAnUmVhY3QgY2xhc3MnLCBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lc1tsb2Nh
dGlvbl0sIHR5cGVTcGVjTmFtZSkgOiB2b2lkIDA7CisgICAgICAgIGVycm9yID0gdHlwZVNwZWNz
W3R5cGVTcGVjTmFtZV0odmFsdWVzLCB0eXBlU3BlY05hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0
aW9uLCBudWxsLCBSZWFjdFByb3BUeXBlc1NlY3JldCk7CisgICAgICB9IGNhdGNoIChleCkgewor
ICAgICAgICBlcnJvciA9IGV4OworICAgICAgfQorICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIWVycm9yIHx8IGVycm9yIGluc3RhbmNlb2YgRXJy
b3IsICclczogdHlwZSBzcGVjaWZpY2F0aW9uIG9mICVzIGAlc2AgaXMgaW52YWxpZDsgdGhlIHR5
cGUgY2hlY2tlciAnICsgJ2Z1bmN0aW9uIG11c3QgcmV0dXJuIGBudWxsYCBvciBhbiBgRXJyb3Jg
IGJ1dCByZXR1cm5lZCBhICVzLiAnICsgJ1lvdSBtYXkgaGF2ZSBmb3Jnb3R0ZW4gdG8gcGFzcyBh
biBhcmd1bWVudCB0byB0aGUgdHlwZSBjaGVja2VyICcgKyAnY3JlYXRvciAoYXJyYXlPZiwgaW5z
dGFuY2VPZiwgb2JqZWN0T2YsIG9uZU9mLCBvbmVPZlR5cGUsIGFuZCAnICsgJ3NoYXBlIGFsbCBy
ZXF1aXJlIGFuIGFyZ3VtZW50KS4nLCBjb21wb25lbnROYW1lIHx8ICdSZWFjdCBjbGFzcycsIFJl
YWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzW2xvY2F0aW9uXSwgdHlwZVNwZWNOYW1lLCB0eXBlb2Yg
ZXJyb3IpIDogdm9pZCAwOworICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IgJiYgIShl
cnJvci5tZXNzYWdlIGluIGxvZ2dlZFR5cGVGYWlsdXJlcykpIHsKKyAgICAgICAgLy8gT25seSBt
b25pdG9yIHRoaXMgZmFpbHVyZSBvbmNlIGJlY2F1c2UgdGhlcmUgdGVuZHMgdG8gYmUgYSBsb3Qg
b2YgdGhlCisgICAgICAgIC8vIHNhbWUgZXJyb3IuCisgICAgICAgIGxvZ2dlZFR5cGVGYWlsdXJl
c1tlcnJvci5tZXNzYWdlXSA9IHRydWU7CisKKyAgICAgICAgdmFyIGNvbXBvbmVudFN0YWNrSW5m
byA9ICcnOworCisgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nKSB7CisgICAgICAgICAgaWYgKCFSZWFjdENvbXBvbmVudFRyZWVIb29rKSB7CisgICAgICAg
ICAgICBSZWFjdENvbXBvbmVudFRyZWVIb29rID0gcmVxdWlyZSgncmVhY3QvbGliL1JlYWN0Q29t
cG9uZW50VHJlZUhvb2snKTsKKyAgICAgICAgICB9CisgICAgICAgICAgaWYgKGRlYnVnSUQgIT09
IG51bGwpIHsKKyAgICAgICAgICAgIGNvbXBvbmVudFN0YWNrSW5mbyA9IFJlYWN0Q29tcG9uZW50
VHJlZUhvb2suZ2V0U3RhY2tBZGRlbmR1bUJ5SUQoZGVidWdJRCk7CisgICAgICAgICAgfSBlbHNl
IGlmIChlbGVtZW50ICE9PSBudWxsKSB7CisgICAgICAgICAgICBjb21wb25lbnRTdGFja0luZm8g
PSBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldEN1cnJlbnRTdGFja0FkZGVuZHVtKGVsZW1lbnQp
OworICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnRmFpbGVkICVzIHR5cGU6ICVzJXMn
LCBsb2NhdGlvbiwgZXJyb3IubWVzc2FnZSwgY29tcG9uZW50U3RhY2tJbmZvKSA6IHZvaWQgMDsK
KyAgICAgIH0KKyAgICB9CisgIH0KK30KKworbW9kdWxlLmV4cG9ydHMgPSBjaGVja1JlYWN0VHlw
ZVNwZWM7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvY3JlYXRlTWljcm9zb2Z0VW5zYWZl
TG9jYWxGdW5jdGlvbi5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1k
b20vbGliL2NyZWF0ZU1pY3Jvc29mdFVuc2FmZUxvY2FsRnVuY3Rpb24uanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MWVkNzZmY2ZkYTQ1NmFiNmYxYmYxOTczMDAxZmI0OWNjMTNjNmQ1OAotLS0gL2Rldi9udWxsCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL2NyZWF0ZU1p
Y3Jvc29mdFVuc2FmZUxvY2FsRnVuY3Rpb24uanMKQEAgLTAsMCArMSwzMSBAQAorLyoqCisgKiBD
b3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qt
c3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBk
aXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2Yg
cGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2Ft
ZSBkaXJlY3RvcnkuCisgKgorICovCisKKy8qIGdsb2JhbHMgTVNBcHAgKi8KKworJ3VzZSBzdHJp
Y3QnOworCisvKioKKyAqIENyZWF0ZSBhIGZ1bmN0aW9uIHdoaWNoIGhhcyAndW5zYWZlJyBwcml2
aWxlZ2VzIChyZXF1aXJlZCBieSB3aW5kb3dzOCBhcHBzKQorICovCisKK3ZhciBjcmVhdGVNaWNy
b3NvZnRVbnNhZmVMb2NhbEZ1bmN0aW9uID0gZnVuY3Rpb24gKGZ1bmMpIHsKKyAgaWYgKHR5cGVv
ZiBNU0FwcCAhPT0gJ3VuZGVmaW5lZCcgJiYgTVNBcHAuZXhlY1Vuc2FmZUxvY2FsRnVuY3Rpb24p
IHsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGFyZzAsIGFyZzEsIGFyZzIsIGFyZzMpIHsKKyAgICAg
IE1TQXBwLmV4ZWNVbnNhZmVMb2NhbEZ1bmN0aW9uKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgcmV0
dXJuIGZ1bmMoYXJnMCwgYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgICB9KTsKKyAgICB9OworICB9
IGVsc2UgeworICAgIHJldHVybiBmdW5jOworICB9Cit9OworCittb2R1bGUuZXhwb3J0cyA9IGNy
ZWF0ZU1pY3Jvc29mdFVuc2FmZUxvY2FsRnVuY3Rpb247ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRv
bS9saWIvZGFuZ2Vyb3VzU3R5bGVWYWx1ZS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9k
dWxlcy9yZWFjdC1kb20vbGliL2Rhbmdlcm91c1N0eWxlVmFsdWUuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjk5
NmRmMmZlM2VjYTZmMjU2Y2U2NWY3ZGY1YjM5YzI1NTcyZWY4NAotLS0gL2Rldi9udWxsCisrKyBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL2Rhbmdlcm91c1N0
eWxlVmFsdWUuanMKQEAgLTAsMCArMSw3OCBAQAorLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBz
b3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgor
ICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIENTU1Byb3BlcnR5ID0gcmVxdWlyZSgnLi9DU1NQ
cm9wZXJ0eScpOwordmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7CisK
K3ZhciBpc1VuaXRsZXNzTnVtYmVyID0gQ1NTUHJvcGVydHkuaXNVbml0bGVzc051bWJlcjsKK3Zh
ciBzdHlsZVdhcm5pbmdzID0ge307CisKKy8qKgorICogQ29udmVydCBhIHZhbHVlIGludG8gdGhl
IHByb3BlciBjc3Mgd3JpdGFibGUgdmFsdWUuIFRoZSBzdHlsZSBuYW1lIGBuYW1lYAorICogc2hv
dWxkIGJlIGxvZ2ljYWwgKG5vIGh5cGhlbnMpLCBhcyBzcGVjaWZpZWQKKyAqIGluIGBDU1NQcm9w
ZXJ0eS5pc1VuaXRsZXNzTnVtYmVyYC4KKyAqCisgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBDU1Mg
cHJvcGVydHkgbmFtZSBzdWNoIGFzIGB0b3BNYXJnaW5gLgorICogQHBhcmFtIHsqfSB2YWx1ZSBD
U1MgcHJvcGVydHkgdmFsdWUgc3VjaCBhcyBgMTBweGAuCisgKiBAcGFyYW0ge1JlYWN0RE9NQ29t
cG9uZW50fSBjb21wb25lbnQKKyAqIEByZXR1cm4ge3N0cmluZ30gTm9ybWFsaXplZCBzdHlsZSB2
YWx1ZSB3aXRoIGRpbWVuc2lvbnMgYXBwbGllZC4KKyAqLworZnVuY3Rpb24gZGFuZ2Vyb3VzU3R5
bGVWYWx1ZShuYW1lLCB2YWx1ZSwgY29tcG9uZW50KSB7CisgIC8vIE5vdGUgdGhhdCB3ZSd2ZSBy
ZW1vdmVkIGVzY2FwZVRleHRGb3JCcm93c2VyKCkgY2FsbHMgaGVyZSBzaW5jZSB0aGUKKyAgLy8g
d2hvbGUgc3RyaW5nIHdpbGwgYmUgZXNjYXBlZCB3aGVuIHRoZSBhdHRyaWJ1dGUgaXMgaW5qZWN0
ZWQgaW50bworICAvLyB0aGUgbWFya3VwLiBJZiB5b3UgcHJvdmlkZSB1bnNhZmUgdXNlciBkYXRh
IGhlcmUgdGhleSBjYW4gaW5qZWN0CisgIC8vIGFyYml0cmFyeSBDU1Mgd2hpY2ggbWF5IGJlIHBy
b2JsZW1hdGljIChJIGNvdWxkbid0IHJlcHJvIHRoaXMpOgorICAvLyBodHRwczovL3d3dy5vd2Fz
cC5vcmcvaW5kZXgucGhwL1hTU19GaWx0ZXJfRXZhc2lvbl9DaGVhdF9TaGVldAorICAvLyBodHRw
Oi8vd3d3LnRoZXNwYW5uZXIuY28udWsvMjAwNy8xMS8yNi91bHRpbWF0ZS14c3MtY3NzLWluamVj
dGlvbi8KKyAgLy8gVGhpcyBpcyBub3QgYW4gWFNTIGhvbGUgYnV0IGluc3RlYWQgYSBwb3RlbnRp
YWwgQ1NTIGluamVjdGlvbiBpc3N1ZQorICAvLyB3aGljaCBoYXMgbGVhZCB0byBhIGdyZWF0ZXIg
ZGlzY3Vzc2lvbiBhYm91dCBob3cgd2UncmUgZ29pbmcgdG8KKyAgLy8gdHJ1c3QgVVJMcyBtb3Zp
bmcgZm9yd2FyZC4gU2VlICMyMTE1OTAxCisKKyAgdmFyIGlzRW1wdHkgPSB2YWx1ZSA9PSBudWxs
IHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nIHx8IHZhbHVlID09PSAnJzsKKyAgaWYgKGlz
RW1wdHkpIHsKKyAgICByZXR1cm4gJyc7CisgIH0KKworICB2YXIgaXNOb25OdW1lcmljID0gaXNO
YU4odmFsdWUpOworICBpZiAoaXNOb25OdW1lcmljIHx8IHZhbHVlID09PSAwIHx8IGlzVW5pdGxl
c3NOdW1iZXIuaGFzT3duUHJvcGVydHkobmFtZSkgJiYgaXNVbml0bGVzc051bWJlcltuYW1lXSkg
eworICAgIHJldHVybiAnJyArIHZhbHVlOyAvLyBjYXN0IHRvIHN0cmluZworICB9CisKKyAgaWYg
KHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHsKKyAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgLy8gQWxsb3cgJzAnIHRvIHBhc3MgdGhyb3Vn
aCB3aXRob3V0IHdhcm5pbmcuIDAgaXMgYWxyZWFkeSBzcGVjaWFsIGFuZAorICAgICAgLy8gZG9l
c24ndCByZXF1aXJlIHVuaXRzLCBzbyB3ZSBkb24ndCBuZWVkIHRvIHdhcm4gYWJvdXQgaXQuCisg
ICAgICBpZiAoY29tcG9uZW50ICYmIHZhbHVlICE9PSAnMCcpIHsKKyAgICAgICAgdmFyIG93bmVy
ID0gY29tcG9uZW50Ll9jdXJyZW50RWxlbWVudC5fb3duZXI7CisgICAgICAgIHZhciBvd25lck5h
bWUgPSBvd25lciA/IG93bmVyLmdldE5hbWUoKSA6IG51bGw7CisgICAgICAgIGlmIChvd25lck5h
bWUgJiYgIXN0eWxlV2FybmluZ3Nbb3duZXJOYW1lXSkgeworICAgICAgICAgIHN0eWxlV2Fybmlu
Z3Nbb3duZXJOYW1lXSA9IHt9OworICAgICAgICB9CisgICAgICAgIHZhciB3YXJuZWQgPSBmYWxz
ZTsKKyAgICAgICAgaWYgKG93bmVyTmFtZSkgeworICAgICAgICAgIHZhciB3YXJuaW5ncyA9IHN0
eWxlV2FybmluZ3Nbb3duZXJOYW1lXTsKKyAgICAgICAgICB3YXJuZWQgPSB3YXJuaW5nc1tuYW1l
XTsKKyAgICAgICAgICBpZiAoIXdhcm5lZCkgeworICAgICAgICAgICAgd2FybmluZ3NbbmFtZV0g
PSB0cnVlOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoIXdhcm5lZCkgewor
ICAgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5n
KGZhbHNlLCAnYSBgJXNgIHRhZyAob3duZXI6IGAlc2ApIHdhcyBwYXNzZWQgYSBudW1lcmljIHN0
cmluZyB2YWx1ZSAnICsgJ2ZvciBDU1MgcHJvcGVydHkgYCVzYCAodmFsdWU6IGAlc2ApIHdoaWNo
IHdpbGwgYmUgdHJlYXRlZCAnICsgJ2FzIGEgdW5pdGxlc3MgbnVtYmVyIGluIGEgZnV0dXJlIHZl
cnNpb24gb2YgUmVhY3QuJywgY29tcG9uZW50Ll9jdXJyZW50RWxlbWVudC50eXBlLCBvd25lck5h
bWUgfHwgJ3Vua25vd24nLCBuYW1lLCB2YWx1ZSkgOiB2b2lkIDA7CisgICAgICAgIH0KKyAgICAg
IH0KKyAgICB9CisgICAgdmFsdWUgPSB2YWx1ZS50cmltKCk7CisgIH0KKyAgcmV0dXJuIHZhbHVl
ICsgJ3B4JzsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBkYW5nZXJvdXNTdHlsZVZhbHVlOwpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25v
ZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL2RlcHJlY2F0ZWQuanMgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFj
dC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9kZXByZWNhdGVkLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFh
MGI0OWZjZWZhYzU1N2EyZDdkOWMzNTk2ZjY0MWU4OGZjYjIxZDcKLS0tIC9kZXYvbnVsbAorKysg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9kZXByZWNhdGVk
LmpzCkBAIC0wLDAgKzEsNTYgQEAKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFj
ZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2Ug
Y29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhl
CisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIAorICov
CisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9hc3NpZ24gPSByZXF1aXJlKCdvYmplY3QtYXNzaWdu
Jyk7CisKK3ZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpOworCisvKioK
KyAqIFRoaXMgd2lsbCBsb2cgYSBzaW5nbGUgZGVwcmVjYXRpb24gbm90aWNlIHBlciBmdW5jdGlv
biBhbmQgZm9yd2FyZCB0aGUgY2FsbAorICogb24gdG8gdGhlIG5ldyBBUEkuCisgKgorICogQHBh
cmFtIHtzdHJpbmd9IGZuTmFtZSBUaGUgbmFtZSBvZiB0aGUgZnVuY3Rpb24KKyAqIEBwYXJhbSB7
c3RyaW5nfSBuZXdNb2R1bGUgVGhlIG1vZHVsZSB0aGF0IGZuIHdpbGwgZXhpc3QgaW4KKyAqIEBw
YXJhbSB7c3RyaW5nfSBuZXdQYWNrYWdlIFRoZSBtb2R1bGUgdGhhdCBmbiB3aWxsIGV4aXN0IGlu
CisgKiBAcGFyYW0geyp9IGN0eCBUaGUgY29udGV4dCB0aGlzIGZvcndhcmRlZCBjYWxsIHNob3Vs
ZCBydW4gaW4KKyAqIEBwYXJhbSB7ZnVuY3Rpb259IGZuIFRoZSBmdW5jdGlvbiB0byBmb3J3YXJk
IG9uIHRvCisgKiBAcmV0dXJuIHtmdW5jdGlvbn0gVGhlIGZ1bmN0aW9uIHRoYXQgd2lsbCB3YXJu
IG9uY2UgYW5kIHRoZW4gY2FsbCBmbgorICovCitmdW5jdGlvbiBkZXByZWNhdGVkKGZuTmFtZSwg
bmV3TW9kdWxlLCBuZXdQYWNrYWdlLCBjdHgsIGZuKSB7CisgIHZhciB3YXJuZWQgPSBmYWxzZTsK
KyAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICB2YXIg
bmV3Rm4gPSBmdW5jdGlvbiAoKSB7CisgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3By
b2R1Y3Rpb24nID8gd2FybmluZyh3YXJuZWQsCisgICAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby11
c2VsZXNzLWNvbmNhdCAqLworICAgICAgLy8gUmVxdWlyZSBleGFtcGxlcyBpbiB0aGlzIHN0cmlu
ZyBtdXN0IGJlIHNwbGl0IHRvIHByZXZlbnQgUmVhY3QncworICAgICAgLy8gYnVpbGQgdG9vbHMg
ZnJvbSBtaXN0YWtpbmcgdGhlbSBmb3IgcmVhbCByZXF1aXJlcy4KKyAgICAgIC8vIE90aGVyd2lz
ZSB0aGUgYnVpbGQgdG9vbHMgd2lsbCBhdHRlbXB0IHRvIGJ1aWxkIGEgJyVzJyBtb2R1bGUuCisg
ICAgICAnUmVhY3QuJXMgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSAlcy4lcyBmcm9tIHJlcXVp
cmUnICsgJyhcJyVzXCcpICcgKyAnaW5zdGVhZC4nLCBmbk5hbWUsIG5ld01vZHVsZSwgZm5OYW1l
LCBuZXdQYWNrYWdlKSA6IHZvaWQgMDsKKyAgICAgIC8qIGVzbGludC1lbmFibGUgbm8tdXNlbGVz
cy1jb25jYXQgKi8KKyAgICAgIHdhcm5lZCA9IHRydWU7CisgICAgICByZXR1cm4gZm4uYXBwbHko
Y3R4LCBhcmd1bWVudHMpOworICAgIH07CisgICAgLy8gV2UgbmVlZCB0byBtYWtlIHN1cmUgYWxs
IHByb3BlcnRpZXMgb2YgdGhlIG9yaWdpbmFsIGZuIGFyZSBjb3BpZWQgb3Zlci4KKyAgICAvLyBJ
biBwYXJ0aWN1bGFyLCB0aGlzIGlzIG5lZWRlZCB0byBzdXBwb3J0IFByb3BUeXBlcworICAgIF9h
c3NpZ24obmV3Rm4sIGZuKTsKKworICAgIC8vIEZsb3cgaXMgbm90IHNtYXJ0IGVub3VnaCB0byBm
aWd1cmUgb3V0IHRoYXQgbmV3Rm4gaXMgb2YgdGhlIHNhbWUgdHlwZSBhcworICAgIC8vIGZuLiBT
aW5jZSB3ZSBkb24ndCB3YW50IHRvIGxvc2Ugb3V0IHRoZSB0eXBlIG9mIHRoZSBmdW5jdGlvbiwg
Y2FzdGluZworICAgIC8vIHRvIGFueSBhbmQgZm9yY2UgZmxvdyB0byB1c2UgVC4KKyAgICByZXR1
cm4gbmV3Rm47CisgIH0KKworICByZXR1cm4gZm47Cit9CisKK21vZHVsZS5leHBvcnRzID0gZGVw
cmVjYXRlZDsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9lc2NhcGVUZXh0Q29udGVudEZv
ckJyb3dzZXIuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xp
Yi9lc2NhcGVUZXh0Q29udGVudEZvckJyb3dzZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWMyOTgxOGQyZjc5
NTIyNzYzYmIzMzJkZWIwOWYwZmViNzNmNTk2MwotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL2VzY2FwZVRleHRDb250ZW50Rm9y
QnJvd3Nlci5qcwpAQCAtMCwwICsxLDEyMiBAQAorLyoqCisgKiBDb3B5cmlnaHQgMjAxNi1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBz
b3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgor
ICogQmFzZWQgb24gdGhlIGVzY2FwZS1odG1sIGxpYnJhcnksIHdoaWNoIGlzIHVzZWQgdW5kZXIg
dGhlIE1JVCBMaWNlbnNlIGJlbG93OgorICoKKyAqIENvcHlyaWdodCAoYykgMjAxMi0yMDEzIFRK
IEhvbG93YXljaHVrCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQW5kcmVhcyBMdWJiZQorICogQ29w
eXJpZ2h0IChjKSAyMDE1IFRpYW5jaGVuZyAiVGltb3RoeSIgR3UKKyAqCisgKiBQZXJtaXNzaW9u
IGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5p
bmcKKyAqIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRp
b24gZmlsZXMgKHRoZQorICogJ1NvZnR3YXJlJyksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdp
dGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZworICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSBy
aWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAorICogZGlzdHJpYnV0
ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRv
CisgKiBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8g
ZG8gc28sIHN1YmplY3QgdG8KKyAqIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBU
aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFs
bCBiZQorICogaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBv
ZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICdBUyBJUycs
IFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCisgKiBFWFBSRVNTIE9SIElNUExJRUQsIElO
Q0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKKyAqIE1FUkNIQU5U
QUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdF
TUVOVC4KKyAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xE
RVJTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULAorICogVE9SVCBPUiBPVEhFUldJ
U0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUKKyAqIFNP
RlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICoK
KyAqLworCisndXNlIHN0cmljdCc7CisKKy8vIGNvZGUgY29waWVkIGFuZCBtb2RpZmllZCBmcm9t
IGVzY2FwZS1odG1sCisvKioKKyAqIE1vZHVsZSB2YXJpYWJsZXMuCisgKiBAcHJpdmF0ZQorICov
CisKK3ZhciBtYXRjaEh0bWxSZWdFeHAgPSAvWyInJjw+XS87CisKKy8qKgorICogRXNjYXBlIHNw
ZWNpYWwgY2hhcmFjdGVycyBpbiB0aGUgZ2l2ZW4gc3RyaW5nIG9mIGh0bWwuCisgKgorICogQHBh
cmFtICB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBlc2NhcGUgZm9yIGluc2VydGluZyBp
bnRvIEhUTUwKKyAqIEByZXR1cm4ge3N0cmluZ30KKyAqIEBwdWJsaWMKKyAqLworCitmdW5jdGlv
biBlc2NhcGVIdG1sKHN0cmluZykgeworICB2YXIgc3RyID0gJycgKyBzdHJpbmc7CisgIHZhciBt
YXRjaCA9IG1hdGNoSHRtbFJlZ0V4cC5leGVjKHN0cik7CisKKyAgaWYgKCFtYXRjaCkgeworICAg
IHJldHVybiBzdHI7CisgIH0KKworICB2YXIgZXNjYXBlOworICB2YXIgaHRtbCA9ICcnOworICB2
YXIgaW5kZXggPSAwOworICB2YXIgbGFzdEluZGV4ID0gMDsKKworICBmb3IgKGluZGV4ID0gbWF0
Y2guaW5kZXg7IGluZGV4IDwgc3RyLmxlbmd0aDsgaW5kZXgrKykgeworICAgIHN3aXRjaCAoc3Ry
LmNoYXJDb2RlQXQoaW5kZXgpKSB7CisgICAgICBjYXNlIDM0OgorICAgICAgICAvLyAiCisgICAg
ICAgIGVzY2FwZSA9ICcmcXVvdDsnOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMzg6Cisg
ICAgICAgIC8vICYKKyAgICAgICAgZXNjYXBlID0gJyZhbXA7JzsKKyAgICAgICAgYnJlYWs7Cisg
ICAgICBjYXNlIDM5OgorICAgICAgICAvLyAnCisgICAgICAgIGVzY2FwZSA9ICcmI3gyNzsnOyAv
LyBtb2RpZmllZCBmcm9tIGVzY2FwZS1odG1sOyB1c2VkIHRvIGJlICcmIzM5JworICAgICAgICBi
cmVhazsKKyAgICAgIGNhc2UgNjA6CisgICAgICAgIC8vIDwKKyAgICAgICAgZXNjYXBlID0gJyZs
dDsnOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgNjI6CisgICAgICAgIC8vID4KKyAgICAg
ICAgZXNjYXBlID0gJyZndDsnOworICAgICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6CisgICAg
ICAgIGNvbnRpbnVlOworICAgIH0KKworICAgIGlmIChsYXN0SW5kZXggIT09IGluZGV4KSB7Cisg
ICAgICBodG1sICs9IHN0ci5zdWJzdHJpbmcobGFzdEluZGV4LCBpbmRleCk7CisgICAgfQorCisg
ICAgbGFzdEluZGV4ID0gaW5kZXggKyAxOworICAgIGh0bWwgKz0gZXNjYXBlOworICB9CisKKyAg
cmV0dXJuIGxhc3RJbmRleCAhPT0gaW5kZXggPyBodG1sICsgc3RyLnN1YnN0cmluZyhsYXN0SW5k
ZXgsIGluZGV4KSA6IGh0bWw7Cit9CisvLyBlbmQgY29kZSBjb3BpZWQgYW5kIG1vZGlmaWVkIGZy
b20gZXNjYXBlLWh0bWwKKworCisvKioKKyAqIEVzY2FwZXMgdGV4dCB0byBwcmV2ZW50IHNjcmlw
dGluZyBhdHRhY2tzLgorICoKKyAqIEBwYXJhbSB7Kn0gdGV4dCBUZXh0IHZhbHVlIHRvIGVzY2Fw
ZS4KKyAqIEByZXR1cm4ge3N0cmluZ30gQW4gZXNjYXBlZCBzdHJpbmcuCisgKi8KK2Z1bmN0aW9u
IGVzY2FwZVRleHRDb250ZW50Rm9yQnJvd3Nlcih0ZXh0KSB7CisgIGlmICh0eXBlb2YgdGV4dCA9
PT0gJ2Jvb2xlYW4nIHx8IHR5cGVvZiB0ZXh0ID09PSAnbnVtYmVyJykgeworICAgIC8vIHRoaXMg
c2hvcnRjaXJjdWl0IGhlbHBzIHBlcmYgZm9yIHR5cGVzIHRoYXQgd2Uga25vdyB3aWxsIG5ldmVy
IGhhdmUKKyAgICAvLyBzcGVjaWFsIGNoYXJhY3RlcnMsIGVzcGVjaWFsbHkgZ2l2ZW4gdGhhdCB0
aGlzIGZ1bmN0aW9uIGlzIHVzZWQgb2Z0ZW4KKyAgICAvLyBmb3IgbnVtZXJpYyBkb20gaWRzLgor
ICAgIHJldHVybiAnJyArIHRleHQ7CisgIH0KKyAgcmV0dXJuIGVzY2FwZUh0bWwodGV4dCk7Cit9
CisKK21vZHVsZS5leHBvcnRzID0gZXNjYXBlVGV4dENvbnRlbnRGb3JCcm93c2VyOwpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVf
bW9kdWxlcy9yZWFjdC1kb20vbGliL2ZpbmRET01Ob2RlLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qv
bm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvZmluZERPTU5vZGUuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmIw
ZGY5ZWJiOTA4N2QyMGJhZjRiNjU0OGU0NzEyOGFlNzYwNTQxZAotLS0gL2Rldi9udWxsCisrKyBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL2ZpbmRET01Ob2Rl
LmpzCkBAIC0wLDAgKzEsNTkgQEAKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFj
ZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2Ug
Y29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhl
CisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisn
dXNlIHN0cmljdCc7CisKK3ZhciBfcHJvZEludmFyaWFudCA9IHJlcXVpcmUoJy4vcmVhY3RQcm9k
SW52YXJpYW50Jyk7CisKK3ZhciBSZWFjdEN1cnJlbnRPd25lciA9IHJlcXVpcmUoJ3JlYWN0L2xp
Yi9SZWFjdEN1cnJlbnRPd25lcicpOwordmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IHJlcXVp
cmUoJy4vUmVhY3RET01Db21wb25lbnRUcmVlJyk7Cit2YXIgUmVhY3RJbnN0YW5jZU1hcCA9IHJl
cXVpcmUoJy4vUmVhY3RJbnN0YW5jZU1hcCcpOworCit2YXIgZ2V0SG9zdENvbXBvbmVudEZyb21D
b21wb3NpdGUgPSByZXF1aXJlKCcuL2dldEhvc3RDb21wb25lbnRGcm9tQ29tcG9zaXRlJyk7Cit2
YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7Cit2YXIgd2Fybmlu
ZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTsKKworLyoqCisgKiBSZXR1cm5zIHRoZSBE
T00gbm9kZSByZW5kZXJlZCBieSB0aGlzIGVsZW1lbnQuCisgKgorICogU2VlIGh0dHBzOi8vZmFj
ZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdG9wLWxldmVsLWFwaS5odG1sI3JlYWN0ZG9tLmZp
bmRkb21ub2RlCisgKgorICogQHBhcmFtIHtSZWFjdENvbXBvbmVudHxET01FbGVtZW50fSBjb21w
b25lbnRPckVsZW1lbnQKKyAqIEByZXR1cm4gez9ET01FbGVtZW50fSBUaGUgcm9vdCBub2RlIG9m
IHRoaXMgZWxlbWVudC4KKyAqLworZnVuY3Rpb24gZmluZERPTU5vZGUoY29tcG9uZW50T3JFbGVt
ZW50KSB7CisgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7Cisg
ICAgdmFyIG93bmVyID0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVudDsKKyAgICBpZiAob3duZXIg
IT09IG51bGwpIHsKKyAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicg
PyB3YXJuaW5nKG93bmVyLl93YXJuZWRBYm91dFJlZnNJblJlbmRlciwgJyVzIGlzIGFjY2Vzc2lu
ZyBmaW5kRE9NTm9kZSBpbnNpZGUgaXRzIHJlbmRlcigpLiAnICsgJ3JlbmRlcigpIHNob3VsZCBi
ZSBhIHB1cmUgZnVuY3Rpb24gb2YgcHJvcHMgYW5kIHN0YXRlLiBJdCBzaG91bGQgJyArICduZXZl
ciBhY2Nlc3Mgc29tZXRoaW5nIHRoYXQgcmVxdWlyZXMgc3RhbGUgZGF0YSBmcm9tIHRoZSBwcmV2
aW91cyAnICsgJ3JlbmRlciwgc3VjaCBhcyByZWZzLiBNb3ZlIHRoaXMgbG9naWMgdG8gY29tcG9u
ZW50RGlkTW91bnQgYW5kICcgKyAnY29tcG9uZW50RGlkVXBkYXRlIGluc3RlYWQuJywgb3duZXIu
Z2V0TmFtZSgpIHx8ICdBIGNvbXBvbmVudCcpIDogdm9pZCAwOworICAgICAgb3duZXIuX3dhcm5l
ZEFib3V0UmVmc0luUmVuZGVyID0gdHJ1ZTsKKyAgICB9CisgIH0KKyAgaWYgKGNvbXBvbmVudE9y
RWxlbWVudCA9PSBudWxsKSB7CisgICAgcmV0dXJuIG51bGw7CisgIH0KKyAgaWYgKGNvbXBvbmVu
dE9yRWxlbWVudC5ub2RlVHlwZSA9PT0gMSkgeworICAgIHJldHVybiBjb21wb25lbnRPckVsZW1l
bnQ7CisgIH0KKworICB2YXIgaW5zdCA9IFJlYWN0SW5zdGFuY2VNYXAuZ2V0KGNvbXBvbmVudE9y
RWxlbWVudCk7CisgIGlmIChpbnN0KSB7CisgICAgaW5zdCA9IGdldEhvc3RDb21wb25lbnRGcm9t
Q29tcG9zaXRlKGluc3QpOworICAgIHJldHVybiBpbnN0ID8gUmVhY3RET01Db21wb25lbnRUcmVl
LmdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCkgOiBudWxsOworICB9CisKKyAgaWYgKHR5cGVvZiBj
b21wb25lbnRPckVsZW1lbnQucmVuZGVyID09PSAnZnVuY3Rpb24nKSB7CisgICAgIWZhbHNlID8g
cHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwg
J2ZpbmRET01Ob2RlIHdhcyBjYWxsZWQgb24gYW4gdW5tb3VudGVkIGNvbXBvbmVudC4nKSA6IF9w
cm9kSW52YXJpYW50KCc0NCcpIDogdm9pZCAwOworICB9IGVsc2UgeworICAgICFmYWxzZSA/IHBy
b2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdF
bGVtZW50IGFwcGVhcnMgdG8gYmUgbmVpdGhlciBSZWFjdENvbXBvbmVudCBub3IgRE9NTm9kZSAo
a2V5czogJXMpJywgT2JqZWN0LmtleXMoY29tcG9uZW50T3JFbGVtZW50KSkgOiBfcHJvZEludmFy
aWFudCgnNDUnLCBPYmplY3Qua2V5cyhjb21wb25lbnRPckVsZW1lbnQpKSA6IHZvaWQgMDsKKyAg
fQorfQorCittb2R1bGUuZXhwb3J0cyA9IGZpbmRET01Ob2RlOwpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFj
dC1kb20vbGliL2ZsYXR0ZW5DaGlsZHJlbi5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9k
dWxlcy9yZWFjdC1kb20vbGliL2ZsYXR0ZW5DaGlsZHJlbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOGI5ZWFk
YzAwNDE3Njk5NjhhZjhlNGQ2NGUyZTFmZjkzNjc3N2Q1Ci0tLSAvZGV2L251bGwKKysrIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvZmxhdHRlbkNoaWxkcmVu
LmpzCkBAIC0wLDAgKzEsNzUgQEAKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFj
ZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2Ug
Y29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhl
CisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIAorICov
CisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIEtleUVzY2FwZVV0aWxzID0gcmVxdWlyZSgnLi9LZXlF
c2NhcGVVdGlscycpOwordmFyIHRyYXZlcnNlQWxsQ2hpbGRyZW4gPSByZXF1aXJlKCcuL3RyYXZl
cnNlQWxsQ2hpbGRyZW4nKTsKK3ZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2Fybmlu
ZycpOworCit2YXIgUmVhY3RDb21wb25lbnRUcmVlSG9vazsKKworaWYgKHR5cGVvZiBwcm9jZXNz
ICE9PSAndW5kZWZpbmVkJyAmJiBwcm9jZXNzLmVudiAmJiBwcm9jZXNzLmVudi5OT0RFX0VOViA9
PT0gJ3Rlc3QnKSB7CisgIC8vIFRlbXBvcmFyeSBoYWNrLgorICAvLyBJbmxpbmUgcmVxdWlyZXMg
ZG9uJ3Qgd29yayB3ZWxsIHdpdGggSmVzdDoKKyAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vi
b29rL3JlYWN0L2lzc3Vlcy83MjQwCisgIC8vIFJlbW92ZSB0aGUgaW5saW5lIHJlcXVpcmVzIHdo
ZW4gd2UgZG9uJ3QgbmVlZCB0aGVtIGFueW1vcmU6CisgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9m
YWNlYm9vay9yZWFjdC9wdWxsLzcxNzgKKyAgUmVhY3RDb21wb25lbnRUcmVlSG9vayA9IHJlcXVp
cmUoJ3JlYWN0L2xpYi9SZWFjdENvbXBvbmVudFRyZWVIb29rJyk7Cit9CisKKy8qKgorICogQHBh
cmFtIHtmdW5jdGlvbn0gdHJhdmVyc2VDb250ZXh0IENvbnRleHQgcGFzc2VkIHRocm91Z2ggdHJh
dmVyc2FsLgorICogQHBhcmFtIHs/UmVhY3RDb21wb25lbnR9IGNoaWxkIFJlYWN0IGNoaWxkIGNv
bXBvbmVudC4KKyAqIEBwYXJhbSB7IXN0cmluZ30gbmFtZSBTdHJpbmcgbmFtZSBvZiBrZXkgcGF0
aCB0byBjaGlsZC4KKyAqIEBwYXJhbSB7bnVtYmVyPX0gc2VsZkRlYnVnSUQgT3B0aW9uYWwgZGVi
dWdJRCBvZiB0aGUgY3VycmVudCBpbnRlcm5hbCBpbnN0YW5jZS4KKyAqLworZnVuY3Rpb24gZmxh
dHRlblNpbmdsZUNoaWxkSW50b0NvbnRleHQodHJhdmVyc2VDb250ZXh0LCBjaGlsZCwgbmFtZSwg
c2VsZkRlYnVnSUQpIHsKKyAgLy8gV2UgZm91bmQgYSBjb21wb25lbnQgaW5zdGFuY2UuCisgIGlm
ICh0cmF2ZXJzZUNvbnRleHQgJiYgdHlwZW9mIHRyYXZlcnNlQ29udGV4dCA9PT0gJ29iamVjdCcp
IHsKKyAgICB2YXIgcmVzdWx0ID0gdHJhdmVyc2VDb250ZXh0OworICAgIHZhciBrZXlVbmlxdWUg
PSByZXN1bHRbbmFtZV0gPT09IHVuZGVmaW5lZDsKKyAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgaWYgKCFSZWFjdENvbXBvbmVudFRyZWVIb29r
KSB7CisgICAgICAgIFJlYWN0Q29tcG9uZW50VHJlZUhvb2sgPSByZXF1aXJlKCdyZWFjdC9saWIv
UmVhY3RDb21wb25lbnRUcmVlSG9vaycpOworICAgICAgfQorICAgICAgaWYgKCFrZXlVbmlxdWUp
IHsKKyAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5p
bmcoZmFsc2UsICdmbGF0dGVuQ2hpbGRyZW4oLi4uKTogRW5jb3VudGVyZWQgdHdvIGNoaWxkcmVu
IHdpdGggdGhlIHNhbWUga2V5LCAnICsgJ2Alc2AuIENoaWxkIGtleXMgbXVzdCBiZSB1bmlxdWU7
IHdoZW4gdHdvIGNoaWxkcmVuIHNoYXJlIGEga2V5LCBvbmx5ICcgKyAndGhlIGZpcnN0IGNoaWxk
IHdpbGwgYmUgdXNlZC4lcycsIEtleUVzY2FwZVV0aWxzLnVuZXNjYXBlKG5hbWUpLCBSZWFjdENv
bXBvbmVudFRyZWVIb29rLmdldFN0YWNrQWRkZW5kdW1CeUlEKHNlbGZEZWJ1Z0lEKSkgOiB2b2lk
IDA7CisgICAgICB9CisgICAgfQorICAgIGlmIChrZXlVbmlxdWUgJiYgY2hpbGQgIT0gbnVsbCkg
eworICAgICAgcmVzdWx0W25hbWVdID0gY2hpbGQ7CisgICAgfQorICB9Cit9CisKKy8qKgorICog
RmxhdHRlbnMgY2hpbGRyZW4gdGhhdCBhcmUgdHlwaWNhbGx5IHNwZWNpZmllZCBhcyBgcHJvcHMu
Y2hpbGRyZW5gLiBBbnkgbnVsbAorICogY2hpbGRyZW4gd2lsbCBub3QgYmUgaW5jbHVkZWQgaW4g
dGhlIHJlc3VsdGluZyBvYmplY3QuCisgKiBAcmV0dXJuIHshb2JqZWN0fSBmbGF0dGVuZWQgY2hp
bGRyZW4ga2V5ZWQgYnkgbmFtZS4KKyAqLworZnVuY3Rpb24gZmxhdHRlbkNoaWxkcmVuKGNoaWxk
cmVuLCBzZWxmRGVidWdJRCkgeworICBpZiAoY2hpbGRyZW4gPT0gbnVsbCkgeworICAgIHJldHVy
biBjaGlsZHJlbjsKKyAgfQorICB2YXIgcmVzdWx0ID0ge307CisKKyAgaWYgKHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICB0cmF2ZXJzZUFsbENoaWxkcmVuKGNo
aWxkcmVuLCBmdW5jdGlvbiAodHJhdmVyc2VDb250ZXh0LCBjaGlsZCwgbmFtZSkgeworICAgICAg
cmV0dXJuIGZsYXR0ZW5TaW5nbGVDaGlsZEludG9Db250ZXh0KHRyYXZlcnNlQ29udGV4dCwgY2hp
bGQsIG5hbWUsIHNlbGZEZWJ1Z0lEKTsKKyAgICB9LCByZXN1bHQpOworICB9IGVsc2UgeworICAg
IHRyYXZlcnNlQWxsQ2hpbGRyZW4oY2hpbGRyZW4sIGZsYXR0ZW5TaW5nbGVDaGlsZEludG9Db250
ZXh0LCByZXN1bHQpOworICB9CisgIHJldHVybiByZXN1bHQ7Cit9CisKK21vZHVsZS5leHBvcnRz
ID0gZmxhdHRlbkNoaWxkcmVuOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL2ZvckVhY2hB
Y2N1bXVsYXRlZC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20v
bGliL2ZvckVhY2hBY2N1bXVsYXRlZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zN2IxMjY2MDAwYjk2MGFkODEx
NDdjNmQwMzRiZmZlODc0Y2U2M2M2Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVh
Y3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvZm9yRWFjaEFjY3VtdWxhdGVkLmpzCkBAIC0w
LDAgKzEsMzAgQEAKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIElu
Yy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBs
aWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQ
QVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIAorICovCisKKyd1c2Ug
c3RyaWN0JzsKKworLyoqCisgKiBAcGFyYW0ge2FycmF5fSBhcnIgYW4gImFjY3VtdWxhdGlvbiIg
b2YgaXRlbXMgd2hpY2ggaXMgZWl0aGVyIGFuIEFycmF5IG9yCisgKiBhIHNpbmdsZSBpdGVtLiBV
c2VmdWwgd2hlbiBwYWlyZWQgd2l0aCB0aGUgYGFjY3VtdWxhdGVgIG1vZHVsZS4gVGhpcyBpcyBh
CisgKiBzaW1wbGUgdXRpbGl0eSB0aGF0IGFsbG93cyB1cyB0byByZWFzb24gYWJvdXQgYSBjb2xs
ZWN0aW9uIG9mIGl0ZW1zLCBidXQKKyAqIGhhbmRsaW5nIHRoZSBjYXNlIHdoZW4gdGhlcmUgaXMg
ZXhhY3RseSBvbmUgaXRlbSAoYW5kIHdlIGRvIG5vdCBuZWVkIHRvCisgKiBhbGxvY2F0ZSBhbiBh
cnJheSkuCisgKi8KKworZnVuY3Rpb24gZm9yRWFjaEFjY3VtdWxhdGVkKGFyciwgY2IsIHNjb3Bl
KSB7CisgIGlmIChBcnJheS5pc0FycmF5KGFycikpIHsKKyAgICBhcnIuZm9yRWFjaChjYiwgc2Nv
cGUpOworICB9IGVsc2UgaWYgKGFycikgeworICAgIGNiLmNhbGwoc2NvcGUsIGFycik7CisgIH0K
K30KKworbW9kdWxlLmV4cG9ydHMgPSBmb3JFYWNoQWNjdW11bGF0ZWQ7ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVz
L3JlYWN0LWRvbS9saWIvZ2V0RXZlbnRDaGFyQ29kZS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25v
ZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL2dldEV2ZW50Q2hhckNvZGUuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MGZmZjg2YjhlMTc0OTU0NDliNGNjNTZkZjg1ZDNkMjFkMzM0OWJhYgotLS0gL2Rldi9udWxsCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL2dldEV2ZW50
Q2hhckNvZGUuanMKQEAgLTAsMCArMSw0OSBAQAorLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBz
b3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgor
ICovCisKKyd1c2Ugc3RyaWN0JzsKKworLyoqCisgKiBgY2hhckNvZGVgIHJlcHJlc2VudHMgdGhl
IGFjdHVhbCAiY2hhcmFjdGVyIGNvZGUiIGFuZCBpcyBzYWZlIHRvIHVzZSB3aXRoCisgKiBgU3Ry
aW5nLmZyb21DaGFyQ29kZWAuIEFzIHN1Y2gsIG9ubHkga2V5cyB0aGF0IGNvcnJlc3BvbmQgdG8g
cHJpbnRhYmxlCisgKiBjaGFyYWN0ZXJzIHByb2R1Y2UgYSB2YWxpZCBgY2hhckNvZGVgLCB0aGUg
b25seSBleGNlcHRpb24gdG8gdGhpcyBpcyBFbnRlci4KKyAqIFRoZSBUYWIta2V5IGlzIGNvbnNp
ZGVyZWQgbm9uLXByaW50YWJsZSBhbmQgZG9lcyBub3QgaGF2ZSBhIGBjaGFyQ29kZWAsCisgKiBw
cmVzdW1hYmx5IGJlY2F1c2UgaXQgZG9lcyBub3QgcHJvZHVjZSBhIHRhYi1jaGFyYWN0ZXIgaW4g
YnJvd3NlcnMuCisgKgorICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93
c2VyIGV2ZW50LgorICogQHJldHVybiB7bnVtYmVyfSBOb3JtYWxpemVkIGBjaGFyQ29kZWAgcHJv
cGVydHkuCisgKi8KKworZnVuY3Rpb24gZ2V0RXZlbnRDaGFyQ29kZShuYXRpdmVFdmVudCkgewor
ICB2YXIgY2hhckNvZGU7CisgIHZhciBrZXlDb2RlID0gbmF0aXZlRXZlbnQua2V5Q29kZTsKKwor
ICBpZiAoJ2NoYXJDb2RlJyBpbiBuYXRpdmVFdmVudCkgeworICAgIGNoYXJDb2RlID0gbmF0aXZl
RXZlbnQuY2hhckNvZGU7CisKKyAgICAvLyBGRiBkb2VzIG5vdCBzZXQgYGNoYXJDb2RlYCBmb3Ig
dGhlIEVudGVyLWtleSwgY2hlY2sgYWdhaW5zdCBga2V5Q29kZWAuCisgICAgaWYgKGNoYXJDb2Rl
ID09PSAwICYmIGtleUNvZGUgPT09IDEzKSB7CisgICAgICBjaGFyQ29kZSA9IDEzOworICAgIH0K
KyAgfSBlbHNlIHsKKyAgICAvLyBJRTggZG9lcyBub3QgaW1wbGVtZW50IGBjaGFyQ29kZWAsIGJ1
dCBga2V5Q29kZWAgaGFzIHRoZSBjb3JyZWN0IHZhbHVlLgorICAgIGNoYXJDb2RlID0ga2V5Q29k
ZTsKKyAgfQorCisgIC8vIFNvbWUgbm9uLXByaW50YWJsZSBrZXlzIGFyZSByZXBvcnRlZCBpbiBg
Y2hhckNvZGVgL2BrZXlDb2RlYCwgZGlzY2FyZCB0aGVtLgorICAvLyBNdXN0IG5vdCBkaXNjYXJk
IHRoZSAobm9uLSlwcmludGFibGUgRW50ZXIta2V5LgorICBpZiAoY2hhckNvZGUgPj0gMzIgfHwg
Y2hhckNvZGUgPT09IDEzKSB7CisgICAgcmV0dXJuIGNoYXJDb2RlOworICB9CisKKyAgcmV0dXJu
IDA7Cit9CisKK21vZHVsZS5leHBvcnRzID0gZ2V0RXZlbnRDaGFyQ29kZTsKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVs
ZXMvcmVhY3QtZG9tL2xpYi9nZXRFdmVudEtleS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVf
bW9kdWxlcy9yZWFjdC1kb20vbGliL2dldEV2ZW50S2V5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFkOTJiYmQ0
NzdhYWFmMTY4OWRiYjExYjhhMmNlMTdmZTE1MjQ3NTgKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9nZXRFdmVudEtleS5qcwpA
QCAtMCwwICsxLDEwMSBAQAorLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9v
aywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAq
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4g
QW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ug
c3RyaWN0JzsKKwordmFyIGdldEV2ZW50Q2hhckNvZGUgPSByZXF1aXJlKCcuL2dldEV2ZW50Q2hh
ckNvZGUnKTsKKworLyoqCisgKiBOb3JtYWxpemF0aW9uIG9mIGRlcHJlY2F0ZWQgSFRNTDUgYGtl
eWAgdmFsdWVzCisgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2Rv
Y3MvV2ViL0FQSS9LZXlib2FyZEV2ZW50I0tleV9uYW1lcworICovCit2YXIgbm9ybWFsaXplS2V5
ID0geworICAnRXNjJzogJ0VzY2FwZScsCisgICdTcGFjZWJhcic6ICcgJywKKyAgJ0xlZnQnOiAn
QXJyb3dMZWZ0JywKKyAgJ1VwJzogJ0Fycm93VXAnLAorICAnUmlnaHQnOiAnQXJyb3dSaWdodCcs
CisgICdEb3duJzogJ0Fycm93RG93bicsCisgICdEZWwnOiAnRGVsZXRlJywKKyAgJ1dpbic6ICdP
UycsCisgICdNZW51JzogJ0NvbnRleHRNZW51JywKKyAgJ0FwcHMnOiAnQ29udGV4dE1lbnUnLAor
ICAnU2Nyb2xsJzogJ1Njcm9sbExvY2snLAorICAnTW96UHJpbnRhYmxlS2V5JzogJ1VuaWRlbnRp
ZmllZCcKK307CisKKy8qKgorICogVHJhbnNsYXRpb24gZnJvbSBsZWdhY3kgYGtleUNvZGVgIHRv
IEhUTUw1IGBrZXlgCisgKiBPbmx5IHNwZWNpYWwga2V5cyBzdXBwb3J0ZWQsIGFsbCBvdGhlcnMg
ZGVwZW5kIG9uIGtleWJvYXJkIGxheW91dCBvciBicm93c2VyCisgKiBAc2VlIGh0dHBzOi8vZGV2
ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9LZXlib2FyZEV2ZW50I0tleV9u
YW1lcworICovCit2YXIgdHJhbnNsYXRlVG9LZXkgPSB7CisgIDg6ICdCYWNrc3BhY2UnLAorICA5
OiAnVGFiJywKKyAgMTI6ICdDbGVhcicsCisgIDEzOiAnRW50ZXInLAorICAxNjogJ1NoaWZ0JywK
KyAgMTc6ICdDb250cm9sJywKKyAgMTg6ICdBbHQnLAorICAxOTogJ1BhdXNlJywKKyAgMjA6ICdD
YXBzTG9jaycsCisgIDI3OiAnRXNjYXBlJywKKyAgMzI6ICcgJywKKyAgMzM6ICdQYWdlVXAnLAor
ICAzNDogJ1BhZ2VEb3duJywKKyAgMzU6ICdFbmQnLAorICAzNjogJ0hvbWUnLAorICAzNzogJ0Fy
cm93TGVmdCcsCisgIDM4OiAnQXJyb3dVcCcsCisgIDM5OiAnQXJyb3dSaWdodCcsCisgIDQwOiAn
QXJyb3dEb3duJywKKyAgNDU6ICdJbnNlcnQnLAorICA0NjogJ0RlbGV0ZScsCisgIDExMjogJ0Yx
JywgMTEzOiAnRjInLCAxMTQ6ICdGMycsIDExNTogJ0Y0JywgMTE2OiAnRjUnLCAxMTc6ICdGNics
CisgIDExODogJ0Y3JywgMTE5OiAnRjgnLCAxMjA6ICdGOScsIDEyMTogJ0YxMCcsIDEyMjogJ0Yx
MScsIDEyMzogJ0YxMicsCisgIDE0NDogJ051bUxvY2snLAorICAxNDU6ICdTY3JvbGxMb2NrJywK
KyAgMjI0OiAnTWV0YScKK307CisKKy8qKgorICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50
IE5hdGl2ZSBicm93c2VyIGV2ZW50LgorICogQHJldHVybiB7c3RyaW5nfSBOb3JtYWxpemVkIGBr
ZXlgIHByb3BlcnR5LgorICovCitmdW5jdGlvbiBnZXRFdmVudEtleShuYXRpdmVFdmVudCkgewor
ICBpZiAobmF0aXZlRXZlbnQua2V5KSB7CisgICAgLy8gTm9ybWFsaXplIGluY29uc2lzdGVudCB2
YWx1ZXMgcmVwb3J0ZWQgYnkgYnJvd3NlcnMgZHVlIHRvCisgICAgLy8gaW1wbGVtZW50YXRpb25z
IG9mIGEgd29ya2luZyBkcmFmdCBzcGVjaWZpY2F0aW9uLgorCisgICAgLy8gRmlyZUZveCBpbXBs
ZW1lbnRzIGBrZXlgIGJ1dCByZXR1cm5zIGBNb3pQcmludGFibGVLZXlgIGZvciBhbGwKKyAgICAv
LyBwcmludGFibGUgY2hhcmFjdGVycyAobm9ybWFsaXplZCB0byBgVW5pZGVudGlmaWVkYCksIGln
bm9yZSBpdC4KKyAgICB2YXIga2V5ID0gbm9ybWFsaXplS2V5W25hdGl2ZUV2ZW50LmtleV0gfHwg
bmF0aXZlRXZlbnQua2V5OworICAgIGlmIChrZXkgIT09ICdVbmlkZW50aWZpZWQnKSB7CisgICAg
ICByZXR1cm4ga2V5OworICAgIH0KKyAgfQorCisgIC8vIEJyb3dzZXIgZG9lcyBub3QgaW1wbGVt
ZW50IGBrZXlgLCBwb2x5ZmlsbCBhcyBtdWNoIG9mIGl0IGFzIHdlIGNhbi4KKyAgaWYgKG5hdGl2
ZUV2ZW50LnR5cGUgPT09ICdrZXlwcmVzcycpIHsKKyAgICB2YXIgY2hhckNvZGUgPSBnZXRFdmVu
dENoYXJDb2RlKG5hdGl2ZUV2ZW50KTsKKworICAgIC8vIFRoZSBlbnRlci1rZXkgaXMgdGVjaG5p
Y2FsbHkgYm90aCBwcmludGFibGUgYW5kIG5vbi1wcmludGFibGUgYW5kIGNhbgorICAgIC8vIHRo
dXMgYmUgY2FwdHVyZWQgYnkgYGtleXByZXNzYCwgbm8gb3RoZXIgbm9uLXByaW50YWJsZSBrZXkg
c2hvdWxkLgorICAgIHJldHVybiBjaGFyQ29kZSA9PT0gMTMgPyAnRW50ZXInIDogU3RyaW5nLmZy
b21DaGFyQ29kZShjaGFyQ29kZSk7CisgIH0KKyAgaWYgKG5hdGl2ZUV2ZW50LnR5cGUgPT09ICdr
ZXlkb3duJyB8fCBuYXRpdmVFdmVudC50eXBlID09PSAna2V5dXAnKSB7CisgICAgLy8gV2hpbGUg
dXNlciBrZXlib2FyZCBsYXlvdXQgZGV0ZXJtaW5lcyB0aGUgYWN0dWFsIG1lYW5pbmcgb2YgZWFj
aAorICAgIC8vIGBrZXlDb2RlYCB2YWx1ZSwgYWxtb3N0IGFsbCBmdW5jdGlvbiBrZXlzIGhhdmUg
YSB1bml2ZXJzYWwgdmFsdWUuCisgICAgcmV0dXJuIHRyYW5zbGF0ZVRvS2V5W25hdGl2ZUV2ZW50
LmtleUNvZGVdIHx8ICdVbmlkZW50aWZpZWQnOworICB9CisgIHJldHVybiAnJzsKK30KKworbW9k
dWxlLmV4cG9ydHMgPSBnZXRFdmVudEtleTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9n
ZXRFdmVudE1vZGlmaWVyU3RhdGUuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMv
cmVhY3QtZG9tL2xpYi9nZXRFdmVudE1vZGlmaWVyU3RhdGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzhhNjhm
Y2I5YzQyOTYxYWUzNWQ0YzY3NGYxMjI2NWEyMjZmY2Q5MQotLS0gL2Rldi9udWxsCisrKyBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL2dldEV2ZW50TW9kaWZp
ZXJTdGF0ZS5qcwpAQCAtMCwwICsxLDQyIEBACisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNl
bnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMg
c291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5k
IGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNv
dXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBi
ZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisg
Ki8KKworJ3VzZSBzdHJpY3QnOworCisvKioKKyAqIFRyYW5zbGF0aW9uIGZyb20gbW9kaWZpZXIg
a2V5IHRvIHRoZSBhc3NvY2lhdGVkIHByb3BlcnR5IGluIHRoZSBldmVudC4KKyAqIEBzZWUgaHR0
cDovL3d3dy53My5vcmcvVFIvRE9NLUxldmVsLTMtRXZlbnRzLyNrZXlzLU1vZGlmaWVycworICov
CisKK3ZhciBtb2RpZmllcktleVRvUHJvcCA9IHsKKyAgJ0FsdCc6ICdhbHRLZXknLAorICAnQ29u
dHJvbCc6ICdjdHJsS2V5JywKKyAgJ01ldGEnOiAnbWV0YUtleScsCisgICdTaGlmdCc6ICdzaGlm
dEtleScKK307CisKKy8vIElFOCBkb2VzIG5vdCBpbXBsZW1lbnQgZ2V0TW9kaWZpZXJTdGF0ZSBz
byB3ZSBzaW1wbHkgbWFwIGl0IHRvIHRoZSBvbmx5CisvLyBtb2RpZmllciBrZXlzIGV4cG9zZWQg
YnkgdGhlIGV2ZW50IGl0c2VsZiwgZG9lcyBub3Qgc3VwcG9ydCBMb2NrLWtleXMuCisvLyBDdXJy
ZW50bHksIGFsbCBtYWpvciBicm93c2VycyBleGNlcHQgQ2hyb21lIHNlZW1zIHRvIHN1cHBvcnQg
TG9jay1rZXlzLgorZnVuY3Rpb24gbW9kaWZpZXJTdGF0ZUdldHRlcihrZXlBcmcpIHsKKyAgdmFy
IHN5bnRoZXRpY0V2ZW50ID0gdGhpczsKKyAgdmFyIG5hdGl2ZUV2ZW50ID0gc3ludGhldGljRXZl
bnQubmF0aXZlRXZlbnQ7CisgIGlmIChuYXRpdmVFdmVudC5nZXRNb2RpZmllclN0YXRlKSB7Cisg
ICAgcmV0dXJuIG5hdGl2ZUV2ZW50LmdldE1vZGlmaWVyU3RhdGUoa2V5QXJnKTsKKyAgfQorICB2
YXIga2V5UHJvcCA9IG1vZGlmaWVyS2V5VG9Qcm9wW2tleUFyZ107CisgIHJldHVybiBrZXlQcm9w
ID8gISFuYXRpdmVFdmVudFtrZXlQcm9wXSA6IGZhbHNlOworfQorCitmdW5jdGlvbiBnZXRFdmVu
dE1vZGlmaWVyU3RhdGUobmF0aXZlRXZlbnQpIHsKKyAgcmV0dXJuIG1vZGlmaWVyU3RhdGVHZXR0
ZXI7Cit9CisKK21vZHVsZS5leHBvcnRzID0gZ2V0RXZlbnRNb2RpZmllclN0YXRlOwpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVf
bW9kdWxlcy9yZWFjdC1kb20vbGliL2dldEV2ZW50VGFyZ2V0LmpzIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVh
Y3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvZ2V0RXZlbnRUYXJnZXQuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMzdmZDNhZDk0OGI5OTJhMmE4MjAxM2JjNjlkZGE4NjRhYjZkZmY5OQotLS0gL2Rldi9udWxs
CisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL2dldEV2
ZW50VGFyZ2V0LmpzCkBAIC0wLDAgKzEsMzQgQEAKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJl
c2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhp
cyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91
bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMg
c291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2Fu
IGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoK
KyAqLworCisndXNlIHN0cmljdCc7CisKKy8qKgorICogR2V0cyB0aGUgdGFyZ2V0IG5vZGUgZnJv
bSBhIG5hdGl2ZSBicm93c2VyIGV2ZW50IGJ5IGFjY291bnRpbmcgZm9yCisgKiBpbmNvbnNpc3Rl
bmNpZXMgaW4gYnJvd3NlciBET00gQVBJcy4KKyAqCisgKiBAcGFyYW0ge29iamVjdH0gbmF0aXZl
RXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuCisgKiBAcmV0dXJuIHtET01FdmVudFRhcmdldH0g
VGFyZ2V0IG5vZGUuCisgKi8KKworZnVuY3Rpb24gZ2V0RXZlbnRUYXJnZXQobmF0aXZlRXZlbnQp
IHsKKyAgdmFyIHRhcmdldCA9IG5hdGl2ZUV2ZW50LnRhcmdldCB8fCBuYXRpdmVFdmVudC5zcmNF
bGVtZW50IHx8IHdpbmRvdzsKKworICAvLyBOb3JtYWxpemUgU1ZHIDx1c2U+IGVsZW1lbnQgZXZl
bnRzICM0OTYzCisgIGlmICh0YXJnZXQuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQpIHsKKyAgICB0
YXJnZXQgPSB0YXJnZXQuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQ7CisgIH0KKworICAvLyBTYWZh
cmkgbWF5IGZpcmUgZXZlbnRzIG9uIHRleHQgbm9kZXMgKE5vZGUuVEVYVF9OT0RFIGlzIDMpLgor
ICAvLyBAc2VlIGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvanMvZXZlbnRzX3Byb3BlcnRpZXMu
aHRtbAorICByZXR1cm4gdGFyZ2V0Lm5vZGVUeXBlID09PSAzID8gdGFyZ2V0LnBhcmVudE5vZGUg
OiB0YXJnZXQ7Cit9CisKK21vZHVsZS5leHBvcnRzID0gZ2V0RXZlbnRUYXJnZXQ7ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9t
b2R1bGVzL3JlYWN0LWRvbS9saWIvZ2V0SG9zdENvbXBvbmVudEZyb21Db21wb3NpdGUuanMgYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9nZXRIb3N0Q29tcG9u
ZW50RnJvbUNvbXBvc2l0ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MjJjZGZiNzM3MTlhYWY4MzQ0MmU1NzZm
OGVjMDJlNWU5Y2M2ZDkxCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9k
ZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvZ2V0SG9zdENvbXBvbmVudEZyb21Db21wb3NpdGUuanMK
QEAgLTAsMCArMSwyOSBAQAorLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9v
aywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAq
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4g
QW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ug
c3RyaWN0JzsKKwordmFyIFJlYWN0Tm9kZVR5cGVzID0gcmVxdWlyZSgnLi9SZWFjdE5vZGVUeXBl
cycpOworCitmdW5jdGlvbiBnZXRIb3N0Q29tcG9uZW50RnJvbUNvbXBvc2l0ZShpbnN0KSB7Cisg
IHZhciB0eXBlOworCisgIHdoaWxlICgodHlwZSA9IGluc3QuX3JlbmRlcmVkTm9kZVR5cGUpID09
PSBSZWFjdE5vZGVUeXBlcy5DT01QT1NJVEUpIHsKKyAgICBpbnN0ID0gaW5zdC5fcmVuZGVyZWRD
b21wb25lbnQ7CisgIH0KKworICBpZiAodHlwZSA9PT0gUmVhY3ROb2RlVHlwZXMuSE9TVCkgewor
ICAgIHJldHVybiBpbnN0Ll9yZW5kZXJlZENvbXBvbmVudDsKKyAgfSBlbHNlIGlmICh0eXBlID09
PSBSZWFjdE5vZGVUeXBlcy5FTVBUWSkgeworICAgIHJldHVybiBudWxsOworICB9Cit9CisKK21v
ZHVsZS5leHBvcnRzID0gZ2V0SG9zdENvbXBvbmVudEZyb21Db21wb3NpdGU7ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1
bGVzL3JlYWN0LWRvbS9saWIvZ2V0SXRlcmF0b3JGbi5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25v
ZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL2dldEl0ZXJhdG9yRm4uanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTVl
ZWQ0MjIxZWRiOWUwY2M2ZTk3OGRiZjgyMmJlMDNmZjQ0YWQyMgotLS0gL2Rldi9udWxsCisrKyBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL2dldEl0ZXJhdG9y
Rm4uanMKQEAgLTAsMCArMSw0MCBAQAorLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBG
YWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJj
ZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0
aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2Ug
dHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91
bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogCisg
Ki8KKworJ3VzZSBzdHJpY3QnOworCisvKiBnbG9iYWwgU3ltYm9sICovCisKK3ZhciBJVEVSQVRP
Ul9TWU1CT0wgPSB0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmIFN5bWJvbC5pdGVyYXRv
cjsKK3ZhciBGQVVYX0lURVJBVE9SX1NZTUJPTCA9ICdAQGl0ZXJhdG9yJzsgLy8gQmVmb3JlIFN5
bWJvbCBzcGVjLgorCisvKioKKyAqIFJldHVybnMgdGhlIGl0ZXJhdG9yIG1ldGhvZCBmdW5jdGlv
biBjb250YWluZWQgb24gdGhlIGl0ZXJhYmxlIG9iamVjdC4KKyAqCisgKiBCZSBzdXJlIHRvIGlu
dm9rZSB0aGUgZnVuY3Rpb24gd2l0aCB0aGUgaXRlcmFibGUgYXMgY29udGV4dDoKKyAqCisgKiAg
ICAgdmFyIGl0ZXJhdG9yRm4gPSBnZXRJdGVyYXRvckZuKG15SXRlcmFibGUpOworICogICAgIGlm
IChpdGVyYXRvckZuKSB7CisgKiAgICAgICB2YXIgaXRlcmF0b3IgPSBpdGVyYXRvckZuLmNhbGwo
bXlJdGVyYWJsZSk7CisgKiAgICAgICAuLi4KKyAqICAgICB9CisgKgorICogQHBhcmFtIHs/b2Jq
ZWN0fSBtYXliZUl0ZXJhYmxlCisgKiBAcmV0dXJuIHs/ZnVuY3Rpb259CisgKi8KK2Z1bmN0aW9u
IGdldEl0ZXJhdG9yRm4obWF5YmVJdGVyYWJsZSkgeworICB2YXIgaXRlcmF0b3JGbiA9IG1heWJl
SXRlcmFibGUgJiYgKElURVJBVE9SX1NZTUJPTCAmJiBtYXliZUl0ZXJhYmxlW0lURVJBVE9SX1NZ
TUJPTF0gfHwgbWF5YmVJdGVyYWJsZVtGQVVYX0lURVJBVE9SX1NZTUJPTF0pOworICBpZiAodHlw
ZW9mIGl0ZXJhdG9yRm4gPT09ICdmdW5jdGlvbicpIHsKKyAgICByZXR1cm4gaXRlcmF0b3JGbjsK
KyAgfQorfQorCittb2R1bGUuZXhwb3J0cyA9IGdldEl0ZXJhdG9yRm47ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVz
L3JlYWN0LWRvbS9saWIvZ2V0TmV4dERlYnVnSUQuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2Rl
X21vZHVsZXMvcmVhY3QtZG9tL2xpYi9nZXROZXh0RGVidWdJRC5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOGNk
NzhhNzE4MzQ3NzQzMmM1NWRmNjIxMGFiZWY5ZGQyMGVhNTRiCi0tLSAvZGV2L251bGwKKysrIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvZ2V0TmV4dERlYnVn
SUQuanMKQEAgLTAsMCArMSwyMCBAQAorLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBG
YWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJj
ZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0
aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2Ug
dHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91
bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogCisg
Ki8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgbmV4dERlYnVnSUQgPSAxOworCitmdW5jdGlvbiBn
ZXROZXh0RGVidWdJRCgpIHsKKyAgcmV0dXJuIG5leHREZWJ1Z0lEKys7Cit9CisKK21vZHVsZS5l
eHBvcnRzID0gZ2V0TmV4dERlYnVnSUQ7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvZ2V0
Tm9kZUZvckNoYXJhY3Rlck9mZnNldC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxl
cy9yZWFjdC1kb20vbGliL2dldE5vZGVGb3JDaGFyYWN0ZXJPZmZzZXQuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MzRjYTMzNzU2MjczMWEyMjZlZTFiZGJjNjhmNWE5ZWQ1ZTlhMDkyMQotLS0gL2Rldi9udWxsCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL2dldE5vZGVG
b3JDaGFyYWN0ZXJPZmZzZXQuanMKQEAgLTAsMCArMSw3MyBAQAorLyoqCisgKiBDb3B5cmlnaHQg
MjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGlj
ZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkg
b2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJp
Z2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rv
cnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKworLyoqCisgKiBHaXZlbiBhbnkgbm9kZSBy
ZXR1cm4gdGhlIGZpcnN0IGxlYWYgbm9kZSB3aXRob3V0IGNoaWxkcmVuLgorICoKKyAqIEBwYXJh
bSB7RE9NRWxlbWVudHxET01UZXh0Tm9kZX0gbm9kZQorICogQHJldHVybiB7RE9NRWxlbWVudHxE
T01UZXh0Tm9kZX0KKyAqLworCitmdW5jdGlvbiBnZXRMZWFmTm9kZShub2RlKSB7CisgIHdoaWxl
IChub2RlICYmIG5vZGUuZmlyc3RDaGlsZCkgeworICAgIG5vZGUgPSBub2RlLmZpcnN0Q2hpbGQ7
CisgIH0KKyAgcmV0dXJuIG5vZGU7Cit9CisKKy8qKgorICogR2V0IHRoZSBuZXh0IHNpYmxpbmcg
d2l0aGluIGEgY29udGFpbmVyLiBUaGlzIHdpbGwgd2FsayB1cCB0aGUKKyAqIERPTSBpZiBhIG5v
ZGUncyBzaWJsaW5ncyBoYXZlIGJlZW4gZXhoYXVzdGVkLgorICoKKyAqIEBwYXJhbSB7RE9NRWxl
bWVudHxET01UZXh0Tm9kZX0gbm9kZQorICogQHJldHVybiB7P0RPTUVsZW1lbnR8RE9NVGV4dE5v
ZGV9CisgKi8KK2Z1bmN0aW9uIGdldFNpYmxpbmdOb2RlKG5vZGUpIHsKKyAgd2hpbGUgKG5vZGUp
IHsKKyAgICBpZiAobm9kZS5uZXh0U2libGluZykgeworICAgICAgcmV0dXJuIG5vZGUubmV4dFNp
Ymxpbmc7CisgICAgfQorICAgIG5vZGUgPSBub2RlLnBhcmVudE5vZGU7CisgIH0KK30KKworLyoq
CisgKiBHZXQgb2JqZWN0IGRlc2NyaWJpbmcgdGhlIG5vZGVzIHdoaWNoIGNvbnRhaW4gY2hhcmFj
dGVycyBhdCBvZmZzZXQuCisgKgorICogQHBhcmFtIHtET01FbGVtZW50fERPTVRleHROb2RlfSBy
b290CisgKiBAcGFyYW0ge251bWJlcn0gb2Zmc2V0CisgKiBAcmV0dXJuIHs/b2JqZWN0fQorICov
CitmdW5jdGlvbiBnZXROb2RlRm9yQ2hhcmFjdGVyT2Zmc2V0KHJvb3QsIG9mZnNldCkgeworICB2
YXIgbm9kZSA9IGdldExlYWZOb2RlKHJvb3QpOworICB2YXIgbm9kZVN0YXJ0ID0gMDsKKyAgdmFy
IG5vZGVFbmQgPSAwOworCisgIHdoaWxlIChub2RlKSB7CisgICAgaWYgKG5vZGUubm9kZVR5cGUg
PT09IDMpIHsKKyAgICAgIG5vZGVFbmQgPSBub2RlU3RhcnQgKyBub2RlLnRleHRDb250ZW50Lmxl
bmd0aDsKKworICAgICAgaWYgKG5vZGVTdGFydCA8PSBvZmZzZXQgJiYgbm9kZUVuZCA+PSBvZmZz
ZXQpIHsKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICBub2RlOiBub2RlLAorICAgICAgICAg
IG9mZnNldDogb2Zmc2V0IC0gbm9kZVN0YXJ0CisgICAgICAgIH07CisgICAgICB9CisKKyAgICAg
IG5vZGVTdGFydCA9IG5vZGVFbmQ7CisgICAgfQorCisgICAgbm9kZSA9IGdldExlYWZOb2RlKGdl
dFNpYmxpbmdOb2RlKG5vZGUpKTsKKyAgfQorfQorCittb2R1bGUuZXhwb3J0cyA9IGdldE5vZGVG
b3JDaGFyYWN0ZXJPZmZzZXQ7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvZ2V0VGVzdERv
Y3VtZW50LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIv
Z2V0VGVzdERvY3VtZW50LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJkNWM1NzM3ZTM4Mzg1N2FmNTU3N2RkYzY1
ZjdiMjRlYTBiZWRjMmIKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2Rl
X21vZHVsZXMvcmVhY3QtZG9tL2xpYi9nZXRUZXN0RG9jdW1lbnQuanMKQEAgLTAsMCArMSwyMCBA
QAorLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBn
cmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmls
ZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKworZnVu
Y3Rpb24gZ2V0VGVzdERvY3VtZW50KG1hcmt1cCkgeworICBkb2N1bWVudC5vcGVuKCk7CisgIGRv
Y3VtZW50LndyaXRlKG1hcmt1cCB8fCAnPCFkb2N0eXBlIGh0bWw+PGh0bWw+PG1ldGEgY2hhcnNl
dD11dGYtOD48dGl0bGU+dGVzdCBkb2M8L3RpdGxlPicpOworICBkb2N1bWVudC5jbG9zZSgpOwor
ICByZXR1cm4gZG9jdW1lbnQ7Cit9CisKK21vZHVsZS5leHBvcnRzID0gZ2V0VGVzdERvY3VtZW50
OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Jl
YWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL2dldFRleHRDb250ZW50QWNjZXNzb3IuanMg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9nZXRUZXh0Q29u
dGVudEFjY2Vzc29yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyMjY3Njk5NWI5MzQ3NWJkZjdhMGIyZDVlN2Qy
NWYwMzIxNTMzMTUKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21v
ZHVsZXMvcmVhY3QtZG9tL2xpYi9nZXRUZXh0Q29udGVudEFjY2Vzc29yLmpzCkBAIC0wLDAgKzEs
MzIgQEAKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisK
K3ZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IHJlcXVpcmUoJ2ZianMvbGliL0V4ZWN1dGlvbkVu
dmlyb25tZW50Jyk7CisKK3ZhciBjb250ZW50S2V5ID0gbnVsbDsKKworLyoqCisgKiBHZXRzIHRo
ZSBrZXkgdXNlZCB0byBhY2Nlc3MgdGV4dCBjb250ZW50IG9uIGEgRE9NIG5vZGUuCisgKgorICog
QHJldHVybiB7P3N0cmluZ30gS2V5IHVzZWQgdG8gYWNjZXNzIHRleHQgY29udGVudC4KKyAqIEBp
bnRlcm5hbAorICovCitmdW5jdGlvbiBnZXRUZXh0Q29udGVudEFjY2Vzc29yKCkgeworICBpZiAo
IWNvbnRlbnRLZXkgJiYgRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NKSB7CisgICAgLy8g
UHJlZmVyIHRleHRDb250ZW50IHRvIGlubmVyVGV4dCBiZWNhdXNlIG1hbnkgYnJvd3NlcnMgc3Vw
cG9ydCBib3RoIGJ1dAorICAgIC8vIFNWRyA8dGV4dD4gZWxlbWVudHMgZG9uJ3Qgc3VwcG9ydCBp
bm5lclRleHQgZXZlbiB3aGVuIDxkaXY+IGRvZXMuCisgICAgY29udGVudEtleSA9ICd0ZXh0Q29u
dGVudCcgaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ID8gJ3RleHRDb250ZW50JyA6ICdpbm5l
clRleHQnOworICB9CisgIHJldHVybiBjb250ZW50S2V5OworfQorCittb2R1bGUuZXhwb3J0cyA9
IGdldFRleHRDb250ZW50QWNjZXNzb3I7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvZ2V0
VmVuZG9yUHJlZml4ZWRFdmVudE5hbWUuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVs
ZXMvcmVhY3QtZG9tL2xpYi9nZXRWZW5kb3JQcmVmaXhlZEV2ZW50TmFtZS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40YjA1MTQ0MmQyNzM5NDRlZWY3MjZmM2Y3MjE3NDNkMTRmZGY5NjEwCi0tLSAvZGV2L251bGwK
KysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvZ2V0VmVu
ZG9yUHJlZml4ZWRFdmVudE5hbWUuanMKQEAgLTAsMCArMSwxMDAgQEAKKy8qKgorICogQ29weXJp
Z2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxl
IGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0
b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVu
dCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGly
ZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBFeGVjdXRpb25FbnZpcm9u
bWVudCA9IHJlcXVpcmUoJ2ZianMvbGliL0V4ZWN1dGlvbkVudmlyb25tZW50Jyk7CisKKy8qKgor
ICogR2VuZXJhdGUgYSBtYXBwaW5nIG9mIHN0YW5kYXJkIHZlbmRvciBwcmVmaXhlcyB1c2luZyB0
aGUgZGVmaW5lZCBzdHlsZSBwcm9wZXJ0eSBhbmQgZXZlbnQgbmFtZS4KKyAqCisgKiBAcGFyYW0g
e3N0cmluZ30gc3R5bGVQcm9wCisgKiBAcGFyYW0ge3N0cmluZ30gZXZlbnROYW1lCisgKiBAcmV0
dXJucyB7b2JqZWN0fQorICovCitmdW5jdGlvbiBtYWtlUHJlZml4TWFwKHN0eWxlUHJvcCwgZXZl
bnROYW1lKSB7CisgIHZhciBwcmVmaXhlcyA9IHt9OworCisgIHByZWZpeGVzW3N0eWxlUHJvcC50
b0xvd2VyQ2FzZSgpXSA9IGV2ZW50TmFtZS50b0xvd2VyQ2FzZSgpOworICBwcmVmaXhlc1snV2Vi
a2l0JyArIHN0eWxlUHJvcF0gPSAnd2Via2l0JyArIGV2ZW50TmFtZTsKKyAgcHJlZml4ZXNbJ01v
eicgKyBzdHlsZVByb3BdID0gJ21veicgKyBldmVudE5hbWU7CisgIHByZWZpeGVzWydtcycgKyBz
dHlsZVByb3BdID0gJ01TJyArIGV2ZW50TmFtZTsKKyAgcHJlZml4ZXNbJ08nICsgc3R5bGVQcm9w
XSA9ICdvJyArIGV2ZW50TmFtZS50b0xvd2VyQ2FzZSgpOworCisgIHJldHVybiBwcmVmaXhlczsK
K30KKworLyoqCisgKiBBIGxpc3Qgb2YgZXZlbnQgbmFtZXMgdG8gYSBjb25maWd1cmFibGUgbGlz
dCBvZiB2ZW5kb3IgcHJlZml4ZXMuCisgKi8KK3ZhciB2ZW5kb3JQcmVmaXhlcyA9IHsKKyAgYW5p
bWF0aW9uZW5kOiBtYWtlUHJlZml4TWFwKCdBbmltYXRpb24nLCAnQW5pbWF0aW9uRW5kJyksCisg
IGFuaW1hdGlvbml0ZXJhdGlvbjogbWFrZVByZWZpeE1hcCgnQW5pbWF0aW9uJywgJ0FuaW1hdGlv
bkl0ZXJhdGlvbicpLAorICBhbmltYXRpb25zdGFydDogbWFrZVByZWZpeE1hcCgnQW5pbWF0aW9u
JywgJ0FuaW1hdGlvblN0YXJ0JyksCisgIHRyYW5zaXRpb25lbmQ6IG1ha2VQcmVmaXhNYXAoJ1Ry
YW5zaXRpb24nLCAnVHJhbnNpdGlvbkVuZCcpCit9OworCisvKioKKyAqIEV2ZW50IG5hbWVzIHRo
YXQgaGF2ZSBhbHJlYWR5IGJlZW4gZGV0ZWN0ZWQgYW5kIHByZWZpeGVkIChpZiBhcHBsaWNhYmxl
KS4KKyAqLwordmFyIHByZWZpeGVkRXZlbnROYW1lcyA9IHt9OworCisvKioKKyAqIEVsZW1lbnQg
dG8gY2hlY2sgZm9yIHByZWZpeGVzIG9uLgorICovCit2YXIgc3R5bGUgPSB7fTsKKworLyoqCisg
KiBCb290c3RyYXAgaWYgYSBET00gZXhpc3RzLgorICovCitpZiAoRXhlY3V0aW9uRW52aXJvbm1l
bnQuY2FuVXNlRE9NKSB7CisgIHN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyku
c3R5bGU7CisKKyAgLy8gT24gc29tZSBwbGF0Zm9ybXMsIGluIHBhcnRpY3VsYXIgc29tZSByZWxl
YXNlcyBvZiBBbmRyb2lkIDQueCwKKyAgLy8gdGhlIHVuLXByZWZpeGVkICJhbmltYXRpb24iIGFu
ZCAidHJhbnNpdGlvbiIgcHJvcGVydGllcyBhcmUgZGVmaW5lZCBvbiB0aGUKKyAgLy8gc3R5bGUg
b2JqZWN0IGJ1dCB0aGUgZXZlbnRzIHRoYXQgZmlyZSB3aWxsIHN0aWxsIGJlIHByZWZpeGVkLCBz
byB3ZSBuZWVkCisgIC8vIHRvIGNoZWNrIGlmIHRoZSB1bi1wcmVmaXhlZCBldmVudHMgYXJlIHVz
YWJsZSwgYW5kIGlmIG5vdCByZW1vdmUgdGhlbSBmcm9tIHRoZSBtYXAuCisgIGlmICghKCdBbmlt
YXRpb25FdmVudCcgaW4gd2luZG93KSkgeworICAgIGRlbGV0ZSB2ZW5kb3JQcmVmaXhlcy5hbmlt
YXRpb25lbmQuYW5pbWF0aW9uOworICAgIGRlbGV0ZSB2ZW5kb3JQcmVmaXhlcy5hbmltYXRpb25p
dGVyYXRpb24uYW5pbWF0aW9uOworICAgIGRlbGV0ZSB2ZW5kb3JQcmVmaXhlcy5hbmltYXRpb25z
dGFydC5hbmltYXRpb247CisgIH0KKworICAvLyBTYW1lIGFzIGFib3ZlCisgIGlmICghKCdUcmFu
c2l0aW9uRXZlbnQnIGluIHdpbmRvdykpIHsKKyAgICBkZWxldGUgdmVuZG9yUHJlZml4ZXMudHJh
bnNpdGlvbmVuZC50cmFuc2l0aW9uOworICB9Cit9CisKKy8qKgorICogQXR0ZW1wdHMgdG8gZGV0
ZXJtaW5lIHRoZSBjb3JyZWN0IHZlbmRvciBwcmVmaXhlZCBldmVudCBuYW1lLgorICoKKyAqIEBw
YXJhbSB7c3RyaW5nfSBldmVudE5hbWUKKyAqIEByZXR1cm5zIHtzdHJpbmd9CisgKi8KK2Z1bmN0
aW9uIGdldFZlbmRvclByZWZpeGVkRXZlbnROYW1lKGV2ZW50TmFtZSkgeworICBpZiAocHJlZml4
ZWRFdmVudE5hbWVzW2V2ZW50TmFtZV0pIHsKKyAgICByZXR1cm4gcHJlZml4ZWRFdmVudE5hbWVz
W2V2ZW50TmFtZV07CisgIH0gZWxzZSBpZiAoIXZlbmRvclByZWZpeGVzW2V2ZW50TmFtZV0pIHsK
KyAgICByZXR1cm4gZXZlbnROYW1lOworICB9CisKKyAgdmFyIHByZWZpeE1hcCA9IHZlbmRvclBy
ZWZpeGVzW2V2ZW50TmFtZV07CisKKyAgZm9yICh2YXIgc3R5bGVQcm9wIGluIHByZWZpeE1hcCkg
eworICAgIGlmIChwcmVmaXhNYXAuaGFzT3duUHJvcGVydHkoc3R5bGVQcm9wKSAmJiBzdHlsZVBy
b3AgaW4gc3R5bGUpIHsKKyAgICAgIHJldHVybiBwcmVmaXhlZEV2ZW50TmFtZXNbZXZlbnROYW1l
XSA9IHByZWZpeE1hcFtzdHlsZVByb3BdOworICAgIH0KKyAgfQorCisgIHJldHVybiAnJzsKK30K
KworbW9kdWxlLmV4cG9ydHMgPSBnZXRWZW5kb3JQcmVmaXhlZEV2ZW50TmFtZTsKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21v
ZHVsZXMvcmVhY3QtZG9tL2xpYi9pbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50LmpzIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvaW5zdGFudGlhdGVSZWFjdENv
bXBvbmVudC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kOTlmNzE2NDI4Yjg3OTYxODdhZDg0OTM1ZDVlNTYwMmRi
NDczZTFjCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVz
L3JlYWN0LWRvbS9saWIvaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudC5qcwpAQCAtMCwwICsxLDEx
NyBAQAorLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICog
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2Vk
IHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25h
bCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMg
ZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwor
dmFyIF9wcm9kSW52YXJpYW50ID0gcmVxdWlyZSgnLi9yZWFjdFByb2RJbnZhcmlhbnQnKSwKKyAg
ICBfYXNzaWduID0gcmVxdWlyZSgnb2JqZWN0LWFzc2lnbicpOworCit2YXIgUmVhY3RDb21wb3Np
dGVDb21wb25lbnQgPSByZXF1aXJlKCcuL1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50Jyk7Cit2YXIg
UmVhY3RFbXB0eUNvbXBvbmVudCA9IHJlcXVpcmUoJy4vUmVhY3RFbXB0eUNvbXBvbmVudCcpOwor
dmFyIFJlYWN0SG9zdENvbXBvbmVudCA9IHJlcXVpcmUoJy4vUmVhY3RIb3N0Q29tcG9uZW50Jyk7
CisKK3ZhciBnZXROZXh0RGVidWdJRCA9IHJlcXVpcmUoJy4vZ2V0TmV4dERlYnVnSUQnKTsKK3Zh
ciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTsKK3ZhciB3YXJuaW5n
ID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpOworCisvLyBUbyBhdm9pZCBhIGN5Y2xpYyBk
ZXBlbmRlbmN5LCB3ZSBjcmVhdGUgdGhlIGZpbmFsIGNsYXNzIGluIHRoaXMgbW9kdWxlCit2YXIg
UmVhY3RDb21wb3NpdGVDb21wb25lbnRXcmFwcGVyID0gZnVuY3Rpb24gKGVsZW1lbnQpIHsKKyAg
dGhpcy5jb25zdHJ1Y3QoZWxlbWVudCk7Cit9OworX2Fzc2lnbihSZWFjdENvbXBvc2l0ZUNvbXBv
bmVudFdyYXBwZXIucHJvdG90eXBlLCBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCwgeworICBfaW5z
dGFudGlhdGVSZWFjdENvbXBvbmVudDogaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudAorfSk7CisK
K2Z1bmN0aW9uIGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bShvd25lcikgeworICBpZiAob3du
ZXIpIHsKKyAgICB2YXIgbmFtZSA9IG93bmVyLmdldE5hbWUoKTsKKyAgICBpZiAobmFtZSkgewor
ICAgICAgcmV0dXJuICcgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgYCcgKyBuYW1lICsgJ2Au
JzsKKyAgICB9CisgIH0KKyAgcmV0dXJuICcnOworfQorCisvKioKKyAqIENoZWNrIGlmIHRoZSB0
eXBlIHJlZmVyZW5jZSBpcyBhIGtub3duIGludGVybmFsIHR5cGUuIEkuZS4gbm90IGEgdXNlcgor
ICogcHJvdmlkZWQgY29tcG9zaXRlIHR5cGUuCisgKgorICogQHBhcmFtIHtmdW5jdGlvbn0gdHlw
ZQorICogQHJldHVybiB7Ym9vbGVhbn0gUmV0dXJucyB0cnVlIGlmIHRoaXMgaXMgYSB2YWxpZCBp
bnRlcm5hbCB0eXBlLgorICovCitmdW5jdGlvbiBpc0ludGVybmFsQ29tcG9uZW50VHlwZSh0eXBl
KSB7CisgIHJldHVybiB0eXBlb2YgdHlwZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgdHlwZS5w
cm90b3R5cGUgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiB0eXBlLnByb3RvdHlwZS5tb3VudENv
bXBvbmVudCA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgdHlwZS5wcm90b3R5cGUucmVjZWl2ZUNv
bXBvbmVudCA9PT0gJ2Z1bmN0aW9uJzsKK30KKworLyoqCisgKiBHaXZlbiBhIFJlYWN0Tm9kZSwg
Y3JlYXRlIGFuIGluc3RhbmNlIHRoYXQgd2lsbCBhY3R1YWxseSBiZSBtb3VudGVkLgorICoKKyAq
IEBwYXJhbSB7UmVhY3ROb2RlfSBub2RlCisgKiBAcGFyYW0ge2Jvb2xlYW59IHNob3VsZEhhdmVE
ZWJ1Z0lECisgKiBAcmV0dXJuIHtvYmplY3R9IEEgbmV3IGluc3RhbmNlIG9mIHRoZSBlbGVtZW50
J3MgY29uc3RydWN0b3IuCisgKiBAcHJvdGVjdGVkCisgKi8KK2Z1bmN0aW9uIGluc3RhbnRpYXRl
UmVhY3RDb21wb25lbnQobm9kZSwgc2hvdWxkSGF2ZURlYnVnSUQpIHsKKyAgdmFyIGluc3RhbmNl
OworCisgIGlmIChub2RlID09PSBudWxsIHx8IG5vZGUgPT09IGZhbHNlKSB7CisgICAgaW5zdGFu
Y2UgPSBSZWFjdEVtcHR5Q29tcG9uZW50LmNyZWF0ZShpbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50
KTsKKyAgfSBlbHNlIGlmICh0eXBlb2Ygbm9kZSA9PT0gJ29iamVjdCcpIHsKKyAgICB2YXIgZWxl
bWVudCA9IG5vZGU7CisgICAgIShlbGVtZW50ICYmICh0eXBlb2YgZWxlbWVudC50eXBlID09PSAn
ZnVuY3Rpb24nIHx8IHR5cGVvZiBlbGVtZW50LnR5cGUgPT09ICdzdHJpbmcnKSkgPyBwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRWxlbWVu
dCB0eXBlIGlzIGludmFsaWQ6IGV4cGVjdGVkIGEgc3RyaW5nIChmb3IgYnVpbHQtaW4gY29tcG9u
ZW50cykgb3IgYSBjbGFzcy9mdW5jdGlvbiAoZm9yIGNvbXBvc2l0ZSBjb21wb25lbnRzKSBidXQg
Z290OiAlcy4lcycsIGVsZW1lbnQudHlwZSA9PSBudWxsID8gZWxlbWVudC50eXBlIDogdHlwZW9m
IGVsZW1lbnQudHlwZSwgZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKGVsZW1lbnQuX293bmVy
KSkgOiBfcHJvZEludmFyaWFudCgnMTMwJywgZWxlbWVudC50eXBlID09IG51bGwgPyBlbGVtZW50
LnR5cGUgOiB0eXBlb2YgZWxlbWVudC50eXBlLCBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0o
ZWxlbWVudC5fb3duZXIpKSA6IHZvaWQgMDsKKworICAgIC8vIFNwZWNpYWwgY2FzZSBzdHJpbmcg
dmFsdWVzCisgICAgaWYgKHR5cGVvZiBlbGVtZW50LnR5cGUgPT09ICdzdHJpbmcnKSB7CisgICAg
ICBpbnN0YW5jZSA9IFJlYWN0SG9zdENvbXBvbmVudC5jcmVhdGVJbnRlcm5hbENvbXBvbmVudChl
bGVtZW50KTsKKyAgICB9IGVsc2UgaWYgKGlzSW50ZXJuYWxDb21wb25lbnRUeXBlKGVsZW1lbnQu
dHlwZSkpIHsKKyAgICAgIC8vIFRoaXMgaXMgdGVtcG9yYXJpbHkgYXZhaWxhYmxlIGZvciBjdXN0
b20gY29tcG9uZW50cyB0aGF0IGFyZSBub3Qgc3RyaW5nCisgICAgICAvLyByZXByZXNlbnRhdGlv
bnMuIEkuZS4gQVJULiBPbmNlIHRob3NlIGFyZSB1cGRhdGVkIHRvIHVzZSB0aGUgc3RyaW5nCisg
ICAgICAvLyByZXByZXNlbnRhdGlvbiwgd2UgY2FuIGRyb3AgdGhpcyBjb2RlIHBhdGguCisgICAg
ICBpbnN0YW5jZSA9IG5ldyBlbGVtZW50LnR5cGUoZWxlbWVudCk7CisKKyAgICAgIC8vIFdlIHJl
bmFtZWQgdGhpcy4gQWxsb3cgdGhlIG9sZCBuYW1lIGZvciBjb21wYXQuIDooCisgICAgICBpZiAo
IWluc3RhbmNlLmdldEhvc3ROb2RlKSB7CisgICAgICAgIGluc3RhbmNlLmdldEhvc3ROb2RlID0g
aW5zdGFuY2UuZ2V0TmF0aXZlTm9kZTsKKyAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgaW5z
dGFuY2UgPSBuZXcgUmVhY3RDb21wb3NpdGVDb21wb25lbnRXcmFwcGVyKGVsZW1lbnQpOworICAg
IH0KKyAgfSBlbHNlIGlmICh0eXBlb2Ygbm9kZSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIG5vZGUg
PT09ICdudW1iZXInKSB7CisgICAgaW5zdGFuY2UgPSBSZWFjdEhvc3RDb21wb25lbnQuY3JlYXRl
SW5zdGFuY2VGb3JUZXh0KG5vZGUpOworICB9IGVsc2UgeworICAgICFmYWxzZSA/IHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdFbmNvdW50
ZXJlZCBpbnZhbGlkIFJlYWN0IG5vZGUgb2YgdHlwZSAlcycsIHR5cGVvZiBub2RlKSA6IF9wcm9k
SW52YXJpYW50KCcxMzEnLCB0eXBlb2Ygbm9kZSkgOiB2b2lkIDA7CisgIH0KKworICBpZiAocHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgeworICAgIHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHR5cGVvZiBpbnN0YW5jZS5tb3VudENv
bXBvbmVudCA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgaW5zdGFuY2UucmVjZWl2ZUNvbXBvbmVu
dCA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgaW5zdGFuY2UuZ2V0SG9zdE5vZGUgPT09ICdmdW5j
dGlvbicgJiYgdHlwZW9mIGluc3RhbmNlLnVubW91bnRDb21wb25lbnQgPT09ICdmdW5jdGlvbics
ICdPbmx5IFJlYWN0IENvbXBvbmVudHMgY2FuIGJlIG1vdW50ZWQuJykgOiB2b2lkIDA7CisgIH0K
KworICAvLyBUaGVzZSB0d28gZmllbGRzIGFyZSB1c2VkIGJ5IHRoZSBET00gYW5kIEFSVCBkaWZm
aW5nIGFsZ29yaXRobXMKKyAgLy8gcmVzcGVjdGl2ZWx5LiBJbnN0ZWFkIG9mIHVzaW5nIGV4cGFu
ZG9zIG9uIGNvbXBvbmVudHMsIHdlIHNob3VsZCBiZQorICAvLyBzdG9yaW5nIHRoZSBzdGF0ZSBu
ZWVkZWQgYnkgdGhlIGRpZmZpbmcgYWxnb3JpdGhtcyBlbHNld2hlcmUuCisgIGluc3RhbmNlLl9t
b3VudEluZGV4ID0gMDsKKyAgaW5zdGFuY2UuX21vdW50SW1hZ2UgPSBudWxsOworCisgIGlmIChw
cm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgaW5zdGFuY2UuX2Rl
YnVnSUQgPSBzaG91bGRIYXZlRGVidWdJRCA/IGdldE5leHREZWJ1Z0lEKCkgOiAwOworICB9CisK
KyAgLy8gSW50ZXJuYWwgaW5zdGFuY2VzIHNob3VsZCBmdWxseSBjb25zdHJ1Y3RlZCBhdCB0aGlz
IHBvaW50LCBzbyB0aGV5IHNob3VsZAorICAvLyBub3QgZ2V0IGFueSBuZXcgZmllbGRzIGFkZGVk
IHRvIHRoZW0gYXQgdGhpcyBwb2ludC4KKyAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicpIHsKKyAgICBpZiAoT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKSB7CisgICAg
ICBPYmplY3QucHJldmVudEV4dGVuc2lvbnMoaW5zdGFuY2UpOworICAgIH0KKyAgfQorCisgIHJl
dHVybiBpbnN0YW5jZTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBpbnN0YW50aWF0ZVJlYWN0Q29t
cG9uZW50OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL2lzRXZlbnRTdXBwb3J0ZWQuanMg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9pc0V2ZW50U3Vw
cG9ydGVkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4MGQ3ZWJlNjhkYTYzOTU0ZDU1ZDA1OTZiYTNkOGYyZTJm
NDY3ZTMKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMv
cmVhY3QtZG9tL2xpYi9pc0V2ZW50U3VwcG9ydGVkLmpzCkBAIC0wLDAgKzEsNTkgQEAKKy8qKgor
ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUg
QlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAq
IG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhl
IHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBFeGVjdXRp
b25FbnZpcm9ubWVudCA9IHJlcXVpcmUoJ2ZianMvbGliL0V4ZWN1dGlvbkVudmlyb25tZW50Jyk7
CisKK3ZhciB1c2VIYXNGZWF0dXJlOworaWYgKEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURP
TSkgeworICB1c2VIYXNGZWF0dXJlID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24gJiYgZG9jdW1l
bnQuaW1wbGVtZW50YXRpb24uaGFzRmVhdHVyZSAmJgorICAvLyBhbHdheXMgcmV0dXJucyB0cnVl
IGluIG5ld2VyIGJyb3dzZXJzIGFzIHBlciB0aGUgc3RhbmRhcmQuCisgIC8vIEBzZWUgaHR0cDov
L2RvbS5zcGVjLndoYXR3Zy5vcmcvI2RvbS1kb21pbXBsZW1lbnRhdGlvbi1oYXNmZWF0dXJlCisg
IGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmhhc0ZlYXR1cmUoJycsICcnKSAhPT0gdHJ1ZTsKK30K
KworLyoqCisgKiBDaGVja3MgaWYgYW4gZXZlbnQgaXMgc3VwcG9ydGVkIGluIHRoZSBjdXJyZW50
IGV4ZWN1dGlvbiBlbnZpcm9ubWVudC4KKyAqCisgKiBOT1RFOiBUaGlzIHdpbGwgbm90IHdvcmsg
Y29ycmVjdGx5IGZvciBub24tZ2VuZXJpYyBldmVudHMgc3VjaCBhcyBgY2hhbmdlYCwKKyAqIGBy
ZXNldGAsIGBsb2FkYCwgYGVycm9yYCwgYW5kIGBzZWxlY3RgLgorICoKKyAqIEJvcnJvd3MgZnJv
bSBNb2Rlcm5penIuCisgKgorICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50TmFtZVN1ZmZpeCBFdmVu
dCBuYW1lLCBlLmcuICJjbGljayIuCisgKiBAcGFyYW0gez9ib29sZWFufSBjYXB0dXJlIENoZWNr
IGlmIHRoZSBjYXB0dXJlIHBoYXNlIGlzIHN1cHBvcnRlZC4KKyAqIEByZXR1cm4ge2Jvb2xlYW59
IFRydWUgaWYgdGhlIGV2ZW50IGlzIHN1cHBvcnRlZC4KKyAqIEBpbnRlcm5hbAorICogQGxpY2Vu
c2UgTW9kZXJuaXpyIDMuMC4wcHJlIChDdXN0b20gQnVpbGQpIHwgTUlUCisgKi8KK2Z1bmN0aW9u
IGlzRXZlbnRTdXBwb3J0ZWQoZXZlbnROYW1lU3VmZml4LCBjYXB0dXJlKSB7CisgIGlmICghRXhl
Y3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NIHx8IGNhcHR1cmUgJiYgISgnYWRkRXZlbnRMaXN0
ZW5lcicgaW4gZG9jdW1lbnQpKSB7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisKKyAgdmFyIGV2
ZW50TmFtZSA9ICdvbicgKyBldmVudE5hbWVTdWZmaXg7CisgIHZhciBpc1N1cHBvcnRlZCA9IGV2
ZW50TmFtZSBpbiBkb2N1bWVudDsKKworICBpZiAoIWlzU3VwcG9ydGVkKSB7CisgICAgdmFyIGVs
ZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICBlbGVtZW50LnNldEF0
dHJpYnV0ZShldmVudE5hbWUsICdyZXR1cm47Jyk7CisgICAgaXNTdXBwb3J0ZWQgPSB0eXBlb2Yg
ZWxlbWVudFtldmVudE5hbWVdID09PSAnZnVuY3Rpb24nOworICB9CisKKyAgaWYgKCFpc1N1cHBv
cnRlZCAmJiB1c2VIYXNGZWF0dXJlICYmIGV2ZW50TmFtZVN1ZmZpeCA9PT0gJ3doZWVsJykgewor
ICAgIC8vIFRoaXMgaXMgdGhlIG9ubHkgd2F5IHRvIHRlc3Qgc3VwcG9ydCBmb3IgdGhlIGB3aGVl
bGAgZXZlbnQgaW4gSUU5Ky4KKyAgICBpc1N1cHBvcnRlZCA9IGRvY3VtZW50LmltcGxlbWVudGF0
aW9uLmhhc0ZlYXR1cmUoJ0V2ZW50cy53aGVlbCcsICczLjAnKTsKKyAgfQorCisgIHJldHVybiBp
c1N1cHBvcnRlZDsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBpc0V2ZW50U3VwcG9ydGVkOwpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25v
ZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL2lzVGV4dElucHV0RWxlbWVudC5qcyBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL2lzVGV4dElucHV0RWxlbWVudC5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xYjYxOTNlNWE1MjVlMDViMGY0YWU3NGZiOTk5Y2Y2ZDJlMTRjOTgyCi0t
LSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRv
bS9saWIvaXNUZXh0SW5wdXRFbGVtZW50LmpzCkBAIC0wLDAgKzEsNTAgQEAKKy8qKgorICogQ29w
eXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0
eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LgorICoKKyAqIAorICovCisKKyd1c2Ugc3RyaWN0JzsKKworLyoqCisgKiBAc2Vl
IGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlw
YWdlL3RoZS1pbnB1dC1lbGVtZW50Lmh0bWwjaW5wdXQtdHlwZS1hdHRyLXN1bW1hcnkKKyAqLwor
Cit2YXIgc3VwcG9ydGVkSW5wdXRUeXBlcyA9IHsKKyAgJ2NvbG9yJzogdHJ1ZSwKKyAgJ2RhdGUn
OiB0cnVlLAorICAnZGF0ZXRpbWUnOiB0cnVlLAorICAnZGF0ZXRpbWUtbG9jYWwnOiB0cnVlLAor
ICAnZW1haWwnOiB0cnVlLAorICAnbW9udGgnOiB0cnVlLAorICAnbnVtYmVyJzogdHJ1ZSwKKyAg
J3Bhc3N3b3JkJzogdHJ1ZSwKKyAgJ3JhbmdlJzogdHJ1ZSwKKyAgJ3NlYXJjaCc6IHRydWUsCisg
ICd0ZWwnOiB0cnVlLAorICAndGV4dCc6IHRydWUsCisgICd0aW1lJzogdHJ1ZSwKKyAgJ3VybCc6
IHRydWUsCisgICd3ZWVrJzogdHJ1ZQorfTsKKworZnVuY3Rpb24gaXNUZXh0SW5wdXRFbGVtZW50
KGVsZW0pIHsKKyAgdmFyIG5vZGVOYW1lID0gZWxlbSAmJiBlbGVtLm5vZGVOYW1lICYmIGVsZW0u
bm9kZU5hbWUudG9Mb3dlckNhc2UoKTsKKworICBpZiAobm9kZU5hbWUgPT09ICdpbnB1dCcpIHsK
KyAgICByZXR1cm4gISFzdXBwb3J0ZWRJbnB1dFR5cGVzW2VsZW0udHlwZV07CisgIH0KKworICBp
ZiAobm9kZU5hbWUgPT09ICd0ZXh0YXJlYScpIHsKKyAgICByZXR1cm4gdHJ1ZTsKKyAgfQorCisg
IHJldHVybiBmYWxzZTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBpc1RleHRJbnB1dEVsZW1lbnQ7
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVh
Y3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvcXVvdGVBdHRyaWJ1dGVWYWx1ZUZvckJyb3dz
ZXIuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9xdW90
ZUF0dHJpYnV0ZVZhbHVlRm9yQnJvd3Nlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZTc4MTUyY2RjNTQ5NWVj
MWQ2MzMxMWNlYTkwNDdmYmM3Mzc0ZmE5Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
cmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvcXVvdGVBdHRyaWJ1dGVWYWx1ZUZvckJy
b3dzZXIuanMKQEAgLTAsMCArMSwyNSBAQAorLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICov
CisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIGVzY2FwZVRleHRDb250ZW50Rm9yQnJvd3NlciA9IHJl
cXVpcmUoJy4vZXNjYXBlVGV4dENvbnRlbnRGb3JCcm93c2VyJyk7CisKKy8qKgorICogRXNjYXBl
cyBhdHRyaWJ1dGUgdmFsdWUgdG8gcHJldmVudCBzY3JpcHRpbmcgYXR0YWNrcy4KKyAqCisgKiBA
cGFyYW0geyp9IHZhbHVlIFZhbHVlIHRvIGVzY2FwZS4KKyAqIEByZXR1cm4ge3N0cmluZ30gQW4g
ZXNjYXBlZCBzdHJpbmcuCisgKi8KK2Z1bmN0aW9uIHF1b3RlQXR0cmlidXRlVmFsdWVGb3JCcm93
c2VyKHZhbHVlKSB7CisgIHJldHVybiAnIicgKyBlc2NhcGVUZXh0Q29udGVudEZvckJyb3dzZXIo
dmFsdWUpICsgJyInOworfQorCittb2R1bGUuZXhwb3J0cyA9IHF1b3RlQXR0cmlidXRlVmFsdWVG
b3JCcm93c2VyOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL3JlYWN0Q29tcG9uZW50RXhw
ZWN0LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvcmVh
Y3RDb21wb25lbnRFeHBlY3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWYzYmE5MWNmMjc5ZTk4ZTA4OGMzODkw
NjZkMGY5YjdkMmZhNDA0OQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25v
ZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL3JlYWN0Q29tcG9uZW50RXhwZWN0LmpzCkBAIC0wLDAg
KzEsMjE2IEBACisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMu
CisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGlj
ZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5T
RSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRp
dGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFU
RU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3Qn
OworCit2YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0UHJvZEludmFyaWFudCcp
LAorICAgIF9hc3NpZ24gPSByZXF1aXJlKCdvYmplY3QtYXNzaWduJyk7CisKK3ZhciBSZWFjdElu
c3RhbmNlTWFwID0gcmVxdWlyZSgnLi9SZWFjdEluc3RhbmNlTWFwJyk7Cit2YXIgUmVhY3RUZXN0
VXRpbHMgPSByZXF1aXJlKCcuL1JlYWN0VGVzdFV0aWxzJyk7CisKK3ZhciBpbnZhcmlhbnQgPSBy
ZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTsKKworZnVuY3Rpb24gcmVhY3RDb21wb25lbnRF
eHBlY3QoaW5zdGFuY2UpIHsKKyAgaWYgKGluc3RhbmNlIGluc3RhbmNlb2YgcmVhY3RDb21wb25l
bnRFeHBlY3RJbnRlcm5hbCkgeworICAgIHJldHVybiBpbnN0YW5jZTsKKyAgfQorCisgIGlmICgh
KHRoaXMgaW5zdGFuY2VvZiByZWFjdENvbXBvbmVudEV4cGVjdCkpIHsKKyAgICByZXR1cm4gbmV3
IHJlYWN0Q29tcG9uZW50RXhwZWN0KGluc3RhbmNlKTsKKyAgfQorCisgIGV4cGVjdChpbnN0YW5j
ZSkubm90LnRvQmVOdWxsKCk7CisgIGV4cGVjdChpbnN0YW5jZSkubm90LnRvQmVVbmRlZmluZWQo
KTsKKworICAhUmVhY3RUZXN0VXRpbHMuaXNDb21wb3NpdGVDb21wb25lbnQoaW5zdGFuY2UpID8g
cHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwg
J3JlYWN0Q29tcG9uZW50RXhwZWN0KC4uLik6IGluc3RhbmNlIG11c3QgYmUgYSBjb21wb3NpdGUg
Y29tcG9uZW50JykgOiBfcHJvZEludmFyaWFudCgnMTUnKSA6IHZvaWQgMDsKKyAgdmFyIGludGVy
bmFsSW5zdGFuY2UgPSBSZWFjdEluc3RhbmNlTWFwLmdldChpbnN0YW5jZSk7CisKKyAgZXhwZWN0
KHR5cGVvZiBpbnRlcm5hbEluc3RhbmNlKS50b0JlKCdvYmplY3QnKTsKKyAgZXhwZWN0KHR5cGVv
ZiBpbnRlcm5hbEluc3RhbmNlLmNvbnN0cnVjdG9yKS50b0JlKCdmdW5jdGlvbicpOworICBleHBl
Y3QoUmVhY3RUZXN0VXRpbHMuaXNFbGVtZW50KGludGVybmFsSW5zdGFuY2UpKS50b0JlKGZhbHNl
KTsKKworICByZXR1cm4gbmV3IHJlYWN0Q29tcG9uZW50RXhwZWN0SW50ZXJuYWwoaW50ZXJuYWxJ
bnN0YW5jZSk7Cit9CisKK2Z1bmN0aW9uIHJlYWN0Q29tcG9uZW50RXhwZWN0SW50ZXJuYWwoaW50
ZXJuYWxJbnN0YW5jZSkgeworICB0aGlzLl9pbnN0YW5jZSA9IGludGVybmFsSW5zdGFuY2U7Cit9
CisKK19hc3NpZ24ocmVhY3RDb21wb25lbnRFeHBlY3RJbnRlcm5hbC5wcm90b3R5cGUsIHsKKyAg
Ly8gR2V0dGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgLyoqCisgICAqIEBpbnN0YW5jZTogUmV0cmlldmVz
IHRoZSBiYWNraW5nIGluc3RhbmNlLgorICAgKi8KKyAgaW5zdGFuY2U6IGZ1bmN0aW9uICgpIHsK
KyAgICByZXR1cm4gdGhpcy5faW5zdGFuY2UuZ2V0UHVibGljSW5zdGFuY2UoKTsKKyAgfSwKKwor
ICAvKioKKyAgICogVGhlcmUgYXJlIHR3byB0eXBlcyBvZiBjb21wb25lbnRzIGluIHRoZSB3b3Js
ZC4KKyAgICogLSBBIGNvbXBvbmVudCBjcmVhdGVkIHZpYSBSZWFjdC5jcmVhdGVDbGFzcygpIC0g
SGFzIGEgc2luZ2xlIGNoaWxkCisgICAqICAgc3ViQ29tcG9uZW50IC0gdGhlIHJldHVybiB2YWx1
ZSBmcm9tIHRoZSAucmVuZGVyKCkgZnVuY3Rpb24uIFRoaXMKKyAgICogICBmdW5jdGlvbiBAc3Vi
Q29tcG9uZW50IGV4cGVjdHMgdGhhdCB0aGlzLl9pbnN0YW5jZSBpcyBjb21wb25lbnQgY3JlYXRl
ZAorICAgKiAgIHdpdGggUmVhY3QuY3JlYXRlQ2xhc3MoKS4KKyAgICogLSBBIHByaW1pdGl2ZSBE
T00gY29tcG9uZW50IC0gd2hpY2ggaGFzIG1hbnkgcmVuZGVyZWRDaGlsZHJlbiwgZWFjaCBvZgor
ICAgKiAgIHdoaWNoIG1heSBoYXZlIGEgbmFtZSB0aGF0IGlzIHVuaXF1ZSB3aXRoIHJlc3BlY3Qg
dG8gaXRzIHNpYmxpbmdzLiBUaGlzCisgICAqICAgbWV0aG9kIHdpbGwgZmFpbCBpZiB0aGlzLl9p
bnN0YW5jZSBpcyBhIHByaW1pdGl2ZSBjb21wb25lbnQuCisgICAqCisgICAqIFRMO0RSOiBBbiBp
bnN0YW5jZSBtYXkgaGF2ZSBhIHN1YkNvbXBvbmVudCAodGhpcy5fcmVuZGVyZWRDb21wb25lbnQp
IG9yCisgICAqIHJlbmRlcmVkQ2hpbGRyZW4sIGJ1dCBuZXZlciBib3RoLiBOZWl0aGVyIHdpbGwg
YWN0dWFsbHkgc2hvdyB1cCB1bnRpbCB5b3UKKyAgICogcmVuZGVyIHRoZSBjb21wb25lbnQgKHNp
bXBseSBpbnN0YW50aWF0aW5nIGlzIG5vdCBlbm91Z2gpLgorICAgKi8KKyAgZXhwZWN0UmVuZGVy
ZWRDaGlsZDogZnVuY3Rpb24gKCkgeworICAgIHRoaXMudG9CZUNvbXBvc2l0ZUNvbXBvbmVudCgp
OworICAgIHZhciBjaGlsZCA9IHRoaXMuX2luc3RhbmNlLl9yZW5kZXJlZENvbXBvbmVudDsKKyAg
ICAvLyBUT0RPOiBIaWRlIFJlYWN0RW1wdHlDb21wb25lbnQgaW5zdGFuY2VzIGhlcmU/CisgICAg
cmV0dXJuIG5ldyByZWFjdENvbXBvbmVudEV4cGVjdEludGVybmFsKGNoaWxkKTsKKyAgfSwKKwor
ICAvKioKKyAgICogVGhlIG50aCBjaGlsZCBvZiBhIERPTWlzaCBjb21wb25lbnQgaW5zdGFuY2Ug
dGhhdCBpcyBub3QgZmFsc3kuCisgICAqLworICBleHBlY3RSZW5kZXJlZENoaWxkQXQ6IGZ1bmN0
aW9uIChjaGlsZEluZGV4KSB7CisgICAgLy8gQ3VycmVudGx5IG9ubHkgZG9tIGNvbXBvbmVudHMg
aGF2ZSBhcnJheXMgb2YgY2hpbGRyZW4sIGJ1dCB0aGF0IHdpbGwKKyAgICAvLyBjaGFuZ2Ugc29v
bi4KKyAgICB0aGlzLnRvQmVET01Db21wb25lbnQoKTsKKyAgICB2YXIgcmVuZGVyZWRDaGlsZHJl
biA9IHRoaXMuX2luc3RhbmNlLl9yZW5kZXJlZENoaWxkcmVuIHx8IHt9OworICAgIGZvciAodmFy
IG5hbWUgaW4gcmVuZGVyZWRDaGlsZHJlbikgeworICAgICAgaWYgKCFyZW5kZXJlZENoaWxkcmVu
Lmhhc093blByb3BlcnR5KG5hbWUpKSB7CisgICAgICAgIGNvbnRpbnVlOworICAgICAgfQorICAg
ICAgaWYgKHJlbmRlcmVkQ2hpbGRyZW5bbmFtZV0pIHsKKyAgICAgICAgaWYgKHJlbmRlcmVkQ2hp
bGRyZW5bbmFtZV0uX21vdW50SW5kZXggPT09IGNoaWxkSW5kZXgpIHsKKyAgICAgICAgICByZXR1
cm4gbmV3IHJlYWN0Q29tcG9uZW50RXhwZWN0SW50ZXJuYWwocmVuZGVyZWRDaGlsZHJlbltuYW1l
XSk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgICAgdGhyb3cgbmV3IEVycm9yKCdDaGls
ZDonICsgY2hpbGRJbmRleCArICcgaXMgbm90IGZvdW5kJyk7CisgIH0sCisKKyAgdG9CZURPTUNv
bXBvbmVudFdpdGhDaGlsZENvdW50OiBmdW5jdGlvbiAoY291bnQpIHsKKyAgICB0aGlzLnRvQmVE
T01Db21wb25lbnQoKTsKKyAgICB2YXIgcmVuZGVyZWRDaGlsZHJlbiA9IHRoaXMuX2luc3RhbmNl
Ll9yZW5kZXJlZENoaWxkcmVuOworICAgIGV4cGVjdChyZW5kZXJlZENoaWxkcmVuKS50b0JlVHJ1
dGh5KCk7CisgICAgZXhwZWN0KE9iamVjdC5rZXlzKHJlbmRlcmVkQ2hpbGRyZW4pLmxlbmd0aCku
dG9CZShjb3VudCk7CisgICAgcmV0dXJuIHRoaXM7CisgIH0sCisKKyAgdG9CZURPTUNvbXBvbmVu
dFdpdGhOb0NoaWxkcmVuOiBmdW5jdGlvbiAoKSB7CisgICAgdGhpcy50b0JlRE9NQ29tcG9uZW50
KCk7CisgICAgZXhwZWN0KHRoaXMuX2luc3RhbmNlLl9yZW5kZXJlZENoaWxkcmVuKS50b0JlRmFs
c3koKTsKKyAgICByZXR1cm4gdGhpczsKKyAgfSwKKworICAvLyBNYXRjaGVycyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworICB0b0JlQ29tcG9uZW50T2ZUeXBlOiBmdW5jdGlvbiAoY29uc3RydWN0b3IpIHsKKyAgICBl
eHBlY3QodGhpcy5faW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50LnR5cGUgPT09IGNvbnN0cnVjdG9y
KS50b0JlKHRydWUpOworICAgIHJldHVybiB0aGlzOworICB9LAorCisgIC8qKgorICAgKiBBIGNv
bXBvbmVudCB0aGF0IGlzIGNyZWF0ZWQgd2l0aCBSZWFjdC5jcmVhdGVDbGFzcy4gSnVzdCBkdWNr
IHR5cGluZworICAgKiBoZXJlLgorICAgKi8KKyAgdG9CZUNvbXBvc2l0ZUNvbXBvbmVudDogZnVu
Y3Rpb24gKCkgeworICAgIGV4cGVjdCh0eXBlb2YgdGhpcy5pbnN0YW5jZSgpID09PSAnb2JqZWN0
JyAmJiB0eXBlb2YgdGhpcy5pbnN0YW5jZSgpLnJlbmRlciA9PT0gJ2Z1bmN0aW9uJykudG9CZSh0
cnVlKTsKKyAgICByZXR1cm4gdGhpczsKKyAgfSwKKworICB0b0JlQ29tcG9zaXRlQ29tcG9uZW50
V2l0aFR5cGU6IGZ1bmN0aW9uIChjb25zdHJ1Y3RvcikgeworICAgIHRoaXMudG9CZUNvbXBvc2l0
ZUNvbXBvbmVudCgpOworICAgIGV4cGVjdCh0aGlzLl9pbnN0YW5jZS5fY3VycmVudEVsZW1lbnQu
dHlwZSA9PT0gY29uc3RydWN0b3IpLnRvQmUodHJ1ZSk7CisgICAgcmV0dXJuIHRoaXM7CisgIH0s
CisKKyAgdG9CZVRleHRDb21wb25lbnRXaXRoVmFsdWU6IGZ1bmN0aW9uICh2YWwpIHsKKyAgICB2
YXIgZWxlbWVudFR5cGUgPSB0eXBlb2YgdGhpcy5faW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50Owor
ICAgIGV4cGVjdChlbGVtZW50VHlwZSA9PT0gJ3N0cmluZycgfHwgZWxlbWVudFR5cGUgPT09ICdu
dW1iZXInKS50b0JlKHRydWUpOworICAgIGV4cGVjdCh0aGlzLl9pbnN0YW5jZS5fc3RyaW5nVGV4
dCkudG9CZSh2YWwpOworICAgIHJldHVybiB0aGlzOworICB9LAorCisgIHRvQmVFbXB0eUNvbXBv
bmVudDogZnVuY3Rpb24gKCkgeworICAgIHZhciBlbGVtZW50ID0gdGhpcy5faW5zdGFuY2UuX2N1
cnJlbnRFbGVtZW50OworICAgIHJldHVybiBlbGVtZW50ID09PSBudWxsIHx8IGVsZW1lbnQgPT09
IGZhbHNlOworICB9LAorCisgIHRvQmVQcmVzZW50OiBmdW5jdGlvbiAoKSB7CisgICAgZXhwZWN0
KHRoaXMuaW5zdGFuY2UoKSkudG9CZVRydXRoeSgpOworICAgIHJldHVybiB0aGlzOworICB9LAor
CisgIC8qKgorICAgKiBBIHRlcm1pbmFsIHR5cGUgb2YgY29tcG9uZW50IHJlcHJlc2VudGluZyBz
b21lIHZpcnR1YWwgZG9tIG5vZGUuIEp1c3QgZHVjaworICAgKiB0eXBpbmcgaGVyZS4KKyAgICov
CisgIHRvQmVET01Db21wb25lbnQ6IGZ1bmN0aW9uICgpIHsKKyAgICBleHBlY3QoUmVhY3RUZXN0
VXRpbHMuaXNET01Db21wb25lbnQodGhpcy5pbnN0YW5jZSgpKSkudG9CZSh0cnVlKTsKKyAgICBy
ZXR1cm4gdGhpczsKKyAgfSwKKworICAvKioKKyAgICogQGRlcHJlY2F0ZWQKKyAgICogQHNlZSB0
b0JlQ29tcG9uZW50T2ZUeXBlCisgICAqLworICB0b0JlRE9NQ29tcG9uZW50V2l0aFRhZzogZnVu
Y3Rpb24gKHRhZykgeworICAgIHRoaXMudG9CZURPTUNvbXBvbmVudCgpOworICAgIGV4cGVjdCh0
aGlzLmluc3RhbmNlKCkudGFnTmFtZSkudG9CZSh0YWcudG9VcHBlckNhc2UoKSk7CisgICAgcmV0
dXJuIHRoaXM7CisgIH0sCisKKyAgLyoqCisgICAqIENoZWNrIHRoYXQgaW50ZXJuYWwgc3RhdGUg
dmFsdWVzIGFyZSBlcXVhbCB0byBhIHN0YXRlIG9mIGV4cGVjdGVkIHZhbHVlcy4KKyAgICovCisg
IHNjYWxhclN0YXRlRXF1YWw6IGZ1bmN0aW9uIChzdGF0ZU5hbWVUb0V4cGVjdGVkVmFsdWUpIHsK
KyAgICBleHBlY3QodGhpcy5pbnN0YW5jZSgpKS50b0JlVHJ1dGh5KCk7CisgICAgZm9yICh2YXIg
c3RhdGVOYW1lIGluIHN0YXRlTmFtZVRvRXhwZWN0ZWRWYWx1ZSkgeworICAgICAgaWYgKCFzdGF0
ZU5hbWVUb0V4cGVjdGVkVmFsdWUuaGFzT3duUHJvcGVydHkoc3RhdGVOYW1lKSkgeworICAgICAg
ICBjb250aW51ZTsKKyAgICAgIH0KKyAgICAgIGV4cGVjdCh0aGlzLmluc3RhbmNlKCkuc3RhdGVb
c3RhdGVOYW1lXSkudG9FcXVhbChzdGF0ZU5hbWVUb0V4cGVjdGVkVmFsdWVbc3RhdGVOYW1lXSk7
CisgICAgfQorICAgIHJldHVybiB0aGlzOworICB9LAorCisgIC8qKgorICAgKiBDaGVjayBhIHNl
dCBvZiBwcm9wcyBhcmUgZXF1YWwgdG8gYSBzZXQgb2YgZXhwZWN0ZWQgdmFsdWVzIC0gb25seSB3
b3JrcworICAgKiB3aXRoIHNjYWxhcnMuCisgICAqLworICBzY2FsYXJQcm9wc0VxdWFsOiBmdW5j
dGlvbiAocHJvcE5hbWVUb0V4cGVjdGVkVmFsdWUpIHsKKyAgICBleHBlY3QodGhpcy5pbnN0YW5j
ZSgpKS50b0JlVHJ1dGh5KCk7CisgICAgZm9yICh2YXIgcHJvcE5hbWUgaW4gcHJvcE5hbWVUb0V4
cGVjdGVkVmFsdWUpIHsKKyAgICAgIGlmICghcHJvcE5hbWVUb0V4cGVjdGVkVmFsdWUuaGFzT3du
UHJvcGVydHkocHJvcE5hbWUpKSB7CisgICAgICAgIGNvbnRpbnVlOworICAgICAgfQorICAgICAg
ZXhwZWN0KHRoaXMuaW5zdGFuY2UoKS5wcm9wc1twcm9wTmFtZV0pLnRvRXF1YWwocHJvcE5hbWVU
b0V4cGVjdGVkVmFsdWVbcHJvcE5hbWVdKTsKKyAgICB9CisgICAgcmV0dXJuIHRoaXM7CisgIH0s
CisKKyAgLyoqCisgICAqIENoZWNrIGEgc2V0IG9mIHByb3BzIGFyZSBlcXVhbCB0byBhIHNldCBv
ZiBleHBlY3RlZCB2YWx1ZXMgLSBvbmx5IHdvcmtzCisgICAqIHdpdGggc2NhbGFycy4KKyAgICov
CisgIHNjYWxhckNvbnRleHRFcXVhbDogZnVuY3Rpb24gKGNvbnRleHROYW1lVG9FeHBlY3RlZFZh
bHVlKSB7CisgICAgZXhwZWN0KHRoaXMuaW5zdGFuY2UoKSkudG9CZVRydXRoeSgpOworICAgIGZv
ciAodmFyIGNvbnRleHROYW1lIGluIGNvbnRleHROYW1lVG9FeHBlY3RlZFZhbHVlKSB7CisgICAg
ICBpZiAoIWNvbnRleHROYW1lVG9FeHBlY3RlZFZhbHVlLmhhc093blByb3BlcnR5KGNvbnRleHRO
YW1lKSkgeworICAgICAgICBjb250aW51ZTsKKyAgICAgIH0KKyAgICAgIGV4cGVjdCh0aGlzLmlu
c3RhbmNlKCkuY29udGV4dFtjb250ZXh0TmFtZV0pLnRvRXF1YWwoY29udGV4dE5hbWVUb0V4cGVj
dGVkVmFsdWVbY29udGV4dE5hbWVdKTsKKyAgICB9CisgICAgcmV0dXJuIHRoaXM7CisgIH0KK30p
OworCittb2R1bGUuZXhwb3J0cyA9IHJlYWN0Q29tcG9uZW50RXhwZWN0OwpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxl
cy9yZWFjdC1kb20vbGliL3JlYWN0UHJvZEludmFyaWFudC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0
L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL3JlYWN0UHJvZEludmFyaWFudC5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iOTBmOWViMDY0NjRmMzBkMThlNDRkNzEwN2FmY2M0NzQ4MDA4NjJmCi0tLSAvZGV2L251
bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvcmVh
Y3RQcm9kSW52YXJpYW50LmpzCkBAIC0wLDAgKzEsMzggQEAKKy8qKgorICogQ29weXJpZ2h0IChj
KSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBs
aWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9y
eSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQg
cmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVj
dG9yeS4KKyAqCisgKiAKKyAqLworJ3VzZSBzdHJpY3QnOworCisvKioKKyAqIFdBUk5JTkc6IERP
IE5PVCBtYW51YWxseSByZXF1aXJlIHRoaXMgbW9kdWxlLgorICogVGhpcyBpcyBhIHJlcGxhY2Vt
ZW50IGZvciBgaW52YXJpYW50KC4uLilgIHVzZWQgYnkgdGhlIGVycm9yIGNvZGUgc3lzdGVtCisg
KiBhbmQgd2lsbCBfb25seV8gYmUgcmVxdWlyZWQgYnkgdGhlIGNvcnJlc3BvbmRpbmcgYmFiZWwg
cGFzcy4KKyAqIEl0IGFsd2F5cyB0aHJvd3MuCisgKi8KKworZnVuY3Rpb24gcmVhY3RQcm9kSW52
YXJpYW50KGNvZGUpIHsKKyAgdmFyIGFyZ0NvdW50ID0gYXJndW1lbnRzLmxlbmd0aCAtIDE7CisK
KyAgdmFyIG1lc3NhZ2UgPSAnTWluaWZpZWQgUmVhY3QgZXJyb3IgIycgKyBjb2RlICsgJzsgdmlz
aXQgJyArICdodHRwOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvZXJyb3ItZGVjb2Rl
ci5odG1sP2ludmFyaWFudD0nICsgY29kZTsKKworICBmb3IgKHZhciBhcmdJZHggPSAwOyBhcmdJ
ZHggPCBhcmdDb3VudDsgYXJnSWR4KyspIHsKKyAgICBtZXNzYWdlICs9ICcmYXJnc1tdPScgKyBl
bmNvZGVVUklDb21wb25lbnQoYXJndW1lbnRzW2FyZ0lkeCArIDFdKTsKKyAgfQorCisgIG1lc3Nh
Z2UgKz0gJyBmb3IgdGhlIGZ1bGwgbWVzc2FnZSBvciB1c2UgdGhlIG5vbi1taW5pZmllZCBkZXYg
ZW52aXJvbm1lbnQnICsgJyBmb3IgZnVsbCBlcnJvcnMgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3
YXJuaW5ncy4nOworCisgIHZhciBlcnJvciA9IG5ldyBFcnJvcihtZXNzYWdlKTsKKyAgZXJyb3Iu
bmFtZSA9ICdJbnZhcmlhbnQgVmlvbGF0aW9uJzsKKyAgZXJyb3IuZnJhbWVzVG9Qb3AgPSAxOyAv
LyB3ZSBkb24ndCBjYXJlIGFib3V0IHJlYWN0UHJvZEludmFyaWFudCdzIG93biBmcmFtZQorCisg
IHRocm93IGVycm9yOworfQorCittb2R1bGUuZXhwb3J0cyA9IHJlYWN0UHJvZEludmFyaWFudDsK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFj
dC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lci5q
cyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL3JlbmRlclN1
YnRyZWVJbnRvQ29udGFpbmVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjExZTkyNjNmMjQ5OWY2MTA5ZDVmNTA4
NmQ1NWIzNDM2OGU0NTU3MmMKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9u
b2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lci5qcwpA
QCAtMCwwICsxLDE1IEBACisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29r
LCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUg
aXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICog
TElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBB
biBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0
aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBz
dHJpY3QnOworCit2YXIgUmVhY3RNb3VudCA9IHJlcXVpcmUoJy4vUmVhY3RNb3VudCcpOworCitt
b2R1bGUuZXhwb3J0cyA9IFJlYWN0TW91bnQucmVuZGVyU3VidHJlZUludG9Db250YWluZXI7Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qv
bm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvc2V0SW5uZXJIVE1MLmpzIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
cmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvc2V0SW5uZXJIVE1MLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZjNWYzZDMwMWIyZGE2MTUzOGYzMTNjZjhiYmY4MzZkM2UyZTRlNjUKLS0tIC9kZXYvbnVs
bAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9zZXRJ
bm5lckhUTUwuanMKQEAgLTAsMCArMSw5NyBAQAorLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBz
b3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgor
ICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gcmVxdWly
ZSgnZmJqcy9saWIvRXhlY3V0aW9uRW52aXJvbm1lbnQnKTsKK3ZhciBET01OYW1lc3BhY2VzID0g
cmVxdWlyZSgnLi9ET01OYW1lc3BhY2VzJyk7CisKK3ZhciBXSElURVNQQUNFX1RFU1QgPSAvXlsg
XHJcblx0XGZdLzsKK3ZhciBOT05WSVNJQkxFX1RFU1QgPSAvPCghLS18bGlua3xub3NjcmlwdHxt
ZXRhfHNjcmlwdHxzdHlsZSlbIFxyXG5cdFxmXC8+XS87CisKK3ZhciBjcmVhdGVNaWNyb3NvZnRV
bnNhZmVMb2NhbEZ1bmN0aW9uID0gcmVxdWlyZSgnLi9jcmVhdGVNaWNyb3NvZnRVbnNhZmVMb2Nh
bEZ1bmN0aW9uJyk7CisKKy8vIFNWRyB0ZW1wIGNvbnRhaW5lciBmb3IgSUUgbGFja2luZyBpbm5l
ckhUTUwKK3ZhciByZXVzYWJsZVNWR0NvbnRhaW5lcjsKKworLyoqCisgKiBTZXQgdGhlIGlubmVy
SFRNTCBwcm9wZXJ0eSBvZiBhIG5vZGUsIGVuc3VyaW5nIHRoYXQgd2hpdGVzcGFjZSBpcyBwcmVz
ZXJ2ZWQKKyAqIGV2ZW4gaW4gSUU4LgorICoKKyAqIEBwYXJhbSB7RE9NRWxlbWVudH0gbm9kZQor
ICogQHBhcmFtIHtzdHJpbmd9IGh0bWwKKyAqIEBpbnRlcm5hbAorICovCit2YXIgc2V0SW5uZXJI
VE1MID0gY3JlYXRlTWljcm9zb2Z0VW5zYWZlTG9jYWxGdW5jdGlvbihmdW5jdGlvbiAobm9kZSwg
aHRtbCkgeworICAvLyBJRSBkb2VzIG5vdCBoYXZlIGlubmVySFRNTCBmb3IgU1ZHIG5vZGVzLCBz
byBpbnN0ZWFkIHdlIGluamVjdCB0aGUKKyAgLy8gbmV3IG1hcmt1cCBpbiBhIHRlbXAgbm9kZSBh
bmQgdGhlbiBtb3ZlIHRoZSBjaGlsZCBub2RlcyBhY3Jvc3MgaW50bworICAvLyB0aGUgdGFyZ2V0
IG5vZGUKKyAgaWYgKG5vZGUubmFtZXNwYWNlVVJJID09PSBET01OYW1lc3BhY2VzLnN2ZyAmJiAh
KCdpbm5lckhUTUwnIGluIG5vZGUpKSB7CisgICAgcmV1c2FibGVTVkdDb250YWluZXIgPSByZXVz
YWJsZVNWR0NvbnRhaW5lciB8fCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICBy
ZXVzYWJsZVNWR0NvbnRhaW5lci5pbm5lckhUTUwgPSAnPHN2Zz4nICsgaHRtbCArICc8L3N2Zz4n
OworICAgIHZhciBzdmdOb2RlID0gcmV1c2FibGVTVkdDb250YWluZXIuZmlyc3RDaGlsZDsKKyAg
ICB3aGlsZSAoc3ZnTm9kZS5maXJzdENoaWxkKSB7CisgICAgICBub2RlLmFwcGVuZENoaWxkKHN2
Z05vZGUuZmlyc3RDaGlsZCk7CisgICAgfQorICB9IGVsc2UgeworICAgIG5vZGUuaW5uZXJIVE1M
ID0gaHRtbDsKKyAgfQorfSk7CisKK2lmIChFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00p
IHsKKyAgLy8gSUU4OiBXaGVuIHVwZGF0aW5nIGEganVzdCBjcmVhdGVkIG5vZGUgd2l0aCBpbm5l
ckhUTUwgb25seSBsZWFkaW5nCisgIC8vIHdoaXRlc3BhY2UgaXMgcmVtb3ZlZC4gV2hlbiB1cGRh
dGluZyBhbiBleGlzdGluZyBub2RlIHdpdGggaW5uZXJIVE1MCisgIC8vIHdoaXRlc3BhY2UgaW4g
cm9vdCBUZXh0Tm9kZXMgaXMgYWxzbyBjb2xsYXBzZWQuCisgIC8vIEBzZWUgcXVpcmtzbW9kZS5v
cmcvYnVncmVwb3J0cy9hcmNoaXZlcy8yMDA0LzExL2lubmVyaHRtbF9hbmRfdC5odG1sCisKKyAg
Ly8gRmVhdHVyZSBkZXRlY3Rpb247IG9ubHkgSUU4IGlzIGtub3duIHRvIGJlaGF2ZSBpbXByb3Bl
cmx5IGxpa2UgdGhpcy4KKyAgdmFyIHRlc3RFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnZGl2Jyk7CisgIHRlc3RFbGVtZW50LmlubmVySFRNTCA9ICcgJzsKKyAgaWYgKHRlc3RFbGVt
ZW50LmlubmVySFRNTCA9PT0gJycpIHsKKyAgICBzZXRJbm5lckhUTUwgPSBmdW5jdGlvbiAobm9k
ZSwgaHRtbCkgeworICAgICAgLy8gTWFnaWMgdGhlb3J5OiBJRTggc3VwcG9zZWRseSBkaWZmZXJl
bnRpYXRlcyBiZXR3ZWVuIGFkZGVkIGFuZCB1cGRhdGVkCisgICAgICAvLyBub2RlcyB3aGVuIHBy
b2Nlc3NpbmcgaW5uZXJIVE1MLCBpbm5lckhUTUwgb24gdXBkYXRlZCBub2RlcyBzdWZmZXJzCisg
ICAgICAvLyBmcm9tIHdvcnNlIHdoaXRlc3BhY2UgYmVoYXZpb3IuIFJlLWFkZGluZyBhIG5vZGUg
bGlrZSB0aGlzIHRyaWdnZXJzCisgICAgICAvLyB0aGUgaW5pdGlhbCBhbmQgbW9yZSBmYXZvcmFi
bGUgd2hpdGVzcGFjZSBiZWhhdmlvci4KKyAgICAgIC8vIFRPRE86IFdoYXQgdG8gZG8gb24gYSBk
ZXRhY2hlZCBub2RlPworICAgICAgaWYgKG5vZGUucGFyZW50Tm9kZSkgeworICAgICAgICBub2Rl
LnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKG5vZGUsIG5vZGUpOworICAgICAgfQorCisgICAgICAv
LyBXZSBhbHNvIGltcGxlbWVudCBhIHdvcmthcm91bmQgZm9yIG5vbi12aXNpYmxlIHRhZ3MgZGlz
YXBwZWFyaW5nIGludG8KKyAgICAgIC8vIHRoaW4gYWlyIG9uIElFOCwgdGhpcyBvbmx5IGhhcHBl
bnMgaWYgdGhlcmUgaXMgbm8gdmlzaWJsZSB0ZXh0CisgICAgICAvLyBpbi1mcm9udCBvZiB0aGUg
bm9uLXZpc2libGUgdGFncy4gUGlnZ3liYWNrIG9uIHRoZSB3aGl0ZXNwYWNlIGZpeAorICAgICAg
Ly8gYW5kIHNpbXBseSBjaGVjayBpZiBhbnkgbm9uLXZpc2libGUgdGFncyBhcHBlYXIgaW4gdGhl
IHNvdXJjZS4KKyAgICAgIGlmIChXSElURVNQQUNFX1RFU1QudGVzdChodG1sKSB8fCBodG1sWzBd
ID09PSAnPCcgJiYgTk9OVklTSUJMRV9URVNULnRlc3QoaHRtbCkpIHsKKyAgICAgICAgLy8gUmVj
b3ZlciBsZWFkaW5nIHdoaXRlc3BhY2UgYnkgdGVtcG9yYXJpbHkgcHJlcGVuZGluZyBhbnkgY2hh
cmFjdGVyLgorICAgICAgICAvLyBcdUZFRkYgaGFzIHRoZSBwb3RlbnRpYWwgYWR2YW50YWdlIG9m
IGJlaW5nIHplcm8td2lkdGgvaW52aXNpYmxlLgorICAgICAgICAvLyBVZ2xpZnlKUyBkcm9wcyBV
K0ZFRkYgY2hhcnMgd2hlbiBwYXJzaW5nLCBzbyB1c2UgU3RyaW5nLmZyb21DaGFyQ29kZQorICAg
ICAgICAvLyBpbiBob3BlcyB0aGF0IHRoaXMgaXMgcHJlc2VydmVkIGV2ZW4gaWYgIlx1RkVGRiIg
aXMgdHJhbnNmb3JtZWQgdG8KKyAgICAgICAgLy8gdGhlIGFjdHVhbCBVbmljb2RlIGNoYXJhY3Rl
ciAoYnkgQmFiZWwsIGZvciBleGFtcGxlKS4KKyAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29t
L21pc2hvby9VZ2xpZnlKUzIvYmxvYi92Mi40LjIwL2xpYi9wYXJzZS5qcyNMMjE2CisgICAgICAg
IG5vZGUuaW5uZXJIVE1MID0gU3RyaW5nLmZyb21DaGFyQ29kZSgweEZFRkYpICsgaHRtbDsKKwor
ICAgICAgICAvLyBkZWxldGVEYXRhIGxlYXZlcyBhbiBlbXB0eSBgVGV4dE5vZGVgIHdoaWNoIG9m
ZnNldHMgdGhlIGluZGV4IG9mIGFsbAorICAgICAgICAvLyBjaGlsZHJlbi4gRGVmaW5pdGVseSB3
YW50IHRvIGF2b2lkIHRoaXMuCisgICAgICAgIHZhciB0ZXh0Tm9kZSA9IG5vZGUuZmlyc3RDaGls
ZDsKKyAgICAgICAgaWYgKHRleHROb2RlLmRhdGEubGVuZ3RoID09PSAxKSB7CisgICAgICAgICAg
bm9kZS5yZW1vdmVDaGlsZCh0ZXh0Tm9kZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
dGV4dE5vZGUuZGVsZXRlRGF0YSgwLCAxKTsKKyAgICAgICAgfQorICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgbm9kZS5pbm5lckhUTUwgPSBodG1sOworICAgICAgfQorICAgIH07CisgIH0KKyAgdGVz
dEVsZW1lbnQgPSBudWxsOworfQorCittb2R1bGUuZXhwb3J0cyA9IHNldElubmVySFRNTDsKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9u
b2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9zZXRUZXh0Q29udGVudC5qcyBiL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL3NldFRleHRDb250ZW50LmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmY2MzMwOTM5MWNmMzkzZGQzNGU0YTkxODAwNjNmZmZhMjAyNTg4OGQKLS0tIC9kZXYv
bnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9z
ZXRUZXh0Q29udGVudC5qcwpAQCAtMCwwICsxLDUxIEBACisvKioKKyAqIENvcHlyaWdodCAyMDEz
LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNl
IGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0
aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRz
IGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4K
KyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSBy
ZXF1aXJlKCdmYmpzL2xpYi9FeGVjdXRpb25FbnZpcm9ubWVudCcpOwordmFyIGVzY2FwZVRleHRD
b250ZW50Rm9yQnJvd3NlciA9IHJlcXVpcmUoJy4vZXNjYXBlVGV4dENvbnRlbnRGb3JCcm93c2Vy
Jyk7Cit2YXIgc2V0SW5uZXJIVE1MID0gcmVxdWlyZSgnLi9zZXRJbm5lckhUTUwnKTsKKworLyoq
CisgKiBTZXQgdGhlIHRleHRDb250ZW50IHByb3BlcnR5IG9mIGEgbm9kZSwgZW5zdXJpbmcgdGhh
dCB3aGl0ZXNwYWNlIGlzIHByZXNlcnZlZAorICogZXZlbiBpbiBJRTguIGlubmVyVGV4dCBpcyBh
IHBvb3Igc3Vic3RpdHV0ZSBmb3IgdGV4dENvbnRlbnQgYW5kLCBhbW9uZyBtYW55CisgKiBpc3N1
ZXMsIGluc2VydHMgPGJyPiBpbnN0ZWFkIG9mIHRoZSBsaXRlcmFsIG5ld2xpbmUgY2hhcnMuIGlu
bmVySFRNTCBiZWhhdmVzCisgKiBhcyBpdCBzaG91bGQuCisgKgorICogQHBhcmFtIHtET01FbGVt
ZW50fSBub2RlCisgKiBAcGFyYW0ge3N0cmluZ30gdGV4dAorICogQGludGVybmFsCisgKi8KK3Zh
ciBzZXRUZXh0Q29udGVudCA9IGZ1bmN0aW9uIChub2RlLCB0ZXh0KSB7CisgIGlmICh0ZXh0KSB7
CisgICAgdmFyIGZpcnN0Q2hpbGQgPSBub2RlLmZpcnN0Q2hpbGQ7CisKKyAgICBpZiAoZmlyc3RD
aGlsZCAmJiBmaXJzdENoaWxkID09PSBub2RlLmxhc3RDaGlsZCAmJiBmaXJzdENoaWxkLm5vZGVU
eXBlID09PSAzKSB7CisgICAgICBmaXJzdENoaWxkLm5vZGVWYWx1ZSA9IHRleHQ7CisgICAgICBy
ZXR1cm47CisgICAgfQorICB9CisgIG5vZGUudGV4dENvbnRlbnQgPSB0ZXh0OworfTsKKworaWYg
KEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSkgeworICBpZiAoISgndGV4dENvbnRlbnQn
IGluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkpIHsKKyAgICBzZXRUZXh0Q29udGVudCA9IGZ1
bmN0aW9uIChub2RlLCB0ZXh0KSB7CisgICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gMykgewor
ICAgICAgICBub2RlLm5vZGVWYWx1ZSA9IHRleHQ7CisgICAgICAgIHJldHVybjsKKyAgICAgIH0K
KyAgICAgIHNldElubmVySFRNTChub2RlLCBlc2NhcGVUZXh0Q29udGVudEZvckJyb3dzZXIodGV4
dCkpOworICAgIH07CisgIH0KK30KKworbW9kdWxlLmV4cG9ydHMgPSBzZXRUZXh0Q29udGVudDsK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFj
dC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9zaG91bGRVcGRhdGVSZWFjdENvbXBvbmVudC5q
cyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL3Nob3VsZFVw
ZGF0ZVJlYWN0Q29tcG9uZW50LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQzOWI5NDhiZTljYzlkMGI4ZDE0YTFh
OWU1NjAxYWU5ZjA1ODcwYzQKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9u
b2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9zaG91bGRVcGRhdGVSZWFjdENvbXBvbmVudC5qcwpA
QCAtMCwwICsxLDQxIEBACisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29r
LCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUg
aXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICog
TElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBB
biBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0
aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBz
dHJpY3QnOworCisvKioKKyAqIEdpdmVuIGEgYHByZXZFbGVtZW50YCBhbmQgYG5leHRFbGVtZW50
YCwgZGV0ZXJtaW5lcyBpZiB0aGUgZXhpc3RpbmcKKyAqIGluc3RhbmNlIHNob3VsZCBiZSB1cGRh
dGVkIGFzIG9wcG9zZWQgdG8gYmVpbmcgZGVzdHJveWVkIG9yIHJlcGxhY2VkIGJ5IGEgbmV3Cisg
KiBpbnN0YW5jZS4gQm90aCBhcmd1bWVudHMgYXJlIGVsZW1lbnRzLiBUaGlzIGVuc3VyZXMgdGhh
dCB0aGlzIGxvZ2ljIGNhbgorICogb3BlcmF0ZSBvbiBzdGF0ZWxlc3MgdHJlZXMgd2l0aG91dCBh
bnkgYmFja2luZyBpbnN0YW5jZS4KKyAqCisgKiBAcGFyYW0gez9vYmplY3R9IHByZXZFbGVtZW50
CisgKiBAcGFyYW0gez9vYmplY3R9IG5leHRFbGVtZW50CisgKiBAcmV0dXJuIHtib29sZWFufSBU
cnVlIGlmIHRoZSBleGlzdGluZyBpbnN0YW5jZSBzaG91bGQgYmUgdXBkYXRlZC4KKyAqIEBwcm90
ZWN0ZWQKKyAqLworCitmdW5jdGlvbiBzaG91bGRVcGRhdGVSZWFjdENvbXBvbmVudChwcmV2RWxl
bWVudCwgbmV4dEVsZW1lbnQpIHsKKyAgdmFyIHByZXZFbXB0eSA9IHByZXZFbGVtZW50ID09PSBu
dWxsIHx8IHByZXZFbGVtZW50ID09PSBmYWxzZTsKKyAgdmFyIG5leHRFbXB0eSA9IG5leHRFbGVt
ZW50ID09PSBudWxsIHx8IG5leHRFbGVtZW50ID09PSBmYWxzZTsKKyAgaWYgKHByZXZFbXB0eSB8
fCBuZXh0RW1wdHkpIHsKKyAgICByZXR1cm4gcHJldkVtcHR5ID09PSBuZXh0RW1wdHk7CisgIH0K
KworICB2YXIgcHJldlR5cGUgPSB0eXBlb2YgcHJldkVsZW1lbnQ7CisgIHZhciBuZXh0VHlwZSA9
IHR5cGVvZiBuZXh0RWxlbWVudDsKKyAgaWYgKHByZXZUeXBlID09PSAnc3RyaW5nJyB8fCBwcmV2
VHlwZSA9PT0gJ251bWJlcicpIHsKKyAgICByZXR1cm4gbmV4dFR5cGUgPT09ICdzdHJpbmcnIHx8
IG5leHRUeXBlID09PSAnbnVtYmVyJzsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gbmV4dFR5cGUg
PT09ICdvYmplY3QnICYmIHByZXZFbGVtZW50LnR5cGUgPT09IG5leHRFbGVtZW50LnR5cGUgJiYg
cHJldkVsZW1lbnQua2V5ID09PSBuZXh0RWxlbWVudC5rZXk7CisgIH0KK30KKworbW9kdWxlLmV4
cG9ydHMgPSBzaG91bGRVcGRhdGVSZWFjdENvbXBvbmVudDsKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3Qt
ZG9tL2xpYi90cmF2ZXJzZUFsbENoaWxkcmVuLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9t
b2R1bGVzL3JlYWN0LWRvbS9saWIvdHJhdmVyc2VBbGxDaGlsZHJlbi5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
MDhhYjA4OGE1MmQzYTM4ZGRhZWM3YWMyMzBhN2I0YTM2NzBjZjhjCi0tLSAvZGV2L251bGwKKysr
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvdHJhdmVyc2VB
bGxDaGlsZHJlbi5qcwpAQCAtMCwwICsxLDE3NSBAQAorLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1w
cmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBU
aGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBm
b3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBj
YW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisg
KgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9wcm9kSW52YXJpYW50ID0gcmVxdWlyZSgn
Li9yZWFjdFByb2RJbnZhcmlhbnQnKTsKKwordmFyIFJlYWN0Q3VycmVudE93bmVyID0gcmVxdWly
ZSgncmVhY3QvbGliL1JlYWN0Q3VycmVudE93bmVyJyk7Cit2YXIgUkVBQ1RfRUxFTUVOVF9UWVBF
ID0gcmVxdWlyZSgnLi9SZWFjdEVsZW1lbnRTeW1ib2wnKTsKKwordmFyIGdldEl0ZXJhdG9yRm4g
PSByZXF1aXJlKCcuL2dldEl0ZXJhdG9yRm4nKTsKK3ZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdm
YmpzL2xpYi9pbnZhcmlhbnQnKTsKK3ZhciBLZXlFc2NhcGVVdGlscyA9IHJlcXVpcmUoJy4vS2V5
RXNjYXBlVXRpbHMnKTsKK3ZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycp
OworCit2YXIgU0VQQVJBVE9SID0gJy4nOwordmFyIFNVQlNFUEFSQVRPUiA9ICc6JzsKKworLyoq
CisgKiBUaGlzIGlzIGlubGluZWQgZnJvbSBSZWFjdEVsZW1lbnQgc2luY2UgdGhpcyBmaWxlIGlz
IHNoYXJlZCBiZXR3ZWVuCisgKiBpc29tb3JwaGljIGFuZCByZW5kZXJlcnMuIFdlIGNvdWxkIGV4
dHJhY3QgdGhpcyB0byBhCisgKgorICovCisKKy8qKgorICogVE9ETzogVGVzdCB0aGF0IGEgc2lu
Z2xlIGNoaWxkIGFuZCBhbiBhcnJheSB3aXRoIG9uZSBpdGVtIGhhdmUgdGhlIHNhbWUga2V5Cisg
KiBwYXR0ZXJuLgorICovCisKK3ZhciBkaWRXYXJuQWJvdXRNYXBzID0gZmFsc2U7CisKKy8qKgor
ICogR2VuZXJhdGUgYSBrZXkgc3RyaW5nIHRoYXQgaWRlbnRpZmllcyBhIGNvbXBvbmVudCB3aXRo
aW4gYSBzZXQuCisgKgorICogQHBhcmFtIHsqfSBjb21wb25lbnQgQSBjb21wb25lbnQgdGhhdCBj
b3VsZCBjb250YWluIGEgbWFudWFsIGtleS4KKyAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleCBJbmRl
eCB0aGF0IGlzIHVzZWQgaWYgYSBtYW51YWwga2V5IGlzIG5vdCBwcm92aWRlZC4KKyAqIEByZXR1
cm4ge3N0cmluZ30KKyAqLworZnVuY3Rpb24gZ2V0Q29tcG9uZW50S2V5KGNvbXBvbmVudCwgaW5k
ZXgpIHsKKyAgLy8gRG8gc29tZSB0eXBlY2hlY2tpbmcgaGVyZSBzaW5jZSB3ZSBjYWxsIHRoaXMg
YmxpbmRseS4gV2Ugd2FudCB0byBlbnN1cmUKKyAgLy8gdGhhdCB3ZSBkb24ndCBibG9jayBwb3Rl
bnRpYWwgZnV0dXJlIEVTIEFQSXMuCisgIGlmIChjb21wb25lbnQgJiYgdHlwZW9mIGNvbXBvbmVu
dCA9PT0gJ29iamVjdCcgJiYgY29tcG9uZW50LmtleSAhPSBudWxsKSB7CisgICAgLy8gRXhwbGlj
aXQga2V5CisgICAgcmV0dXJuIEtleUVzY2FwZVV0aWxzLmVzY2FwZShjb21wb25lbnQua2V5KTsK
KyAgfQorICAvLyBJbXBsaWNpdCBrZXkgZGV0ZXJtaW5lZCBieSB0aGUgaW5kZXggaW4gdGhlIHNl
dAorICByZXR1cm4gaW5kZXgudG9TdHJpbmcoMzYpOworfQorCisvKioKKyAqIEBwYXJhbSB7Pyp9
IGNoaWxkcmVuIENoaWxkcmVuIHRyZWUgY29udGFpbmVyLgorICogQHBhcmFtIHshc3RyaW5nfSBu
YW1lU29GYXIgTmFtZSBvZiB0aGUga2V5IHBhdGggc28gZmFyLgorICogQHBhcmFtIHshZnVuY3Rp
b259IGNhbGxiYWNrIENhbGxiYWNrIHRvIGludm9rZSB3aXRoIGVhY2ggY2hpbGQgZm91bmQuCisg
KiBAcGFyYW0gez8qfSB0cmF2ZXJzZUNvbnRleHQgVXNlZCB0byBwYXNzIGluZm9ybWF0aW9uIHRo
cm91Z2hvdXQgdGhlIHRyYXZlcnNhbAorICogcHJvY2Vzcy4KKyAqIEByZXR1cm4geyFudW1iZXJ9
IFRoZSBudW1iZXIgb2YgY2hpbGRyZW4gaW4gdGhpcyBzdWJ0cmVlLgorICovCitmdW5jdGlvbiB0
cmF2ZXJzZUFsbENoaWxkcmVuSW1wbChjaGlsZHJlbiwgbmFtZVNvRmFyLCBjYWxsYmFjaywgdHJh
dmVyc2VDb250ZXh0KSB7CisgIHZhciB0eXBlID0gdHlwZW9mIGNoaWxkcmVuOworCisgIGlmICh0
eXBlID09PSAndW5kZWZpbmVkJyB8fCB0eXBlID09PSAnYm9vbGVhbicpIHsKKyAgICAvLyBBbGwg
b2YgdGhlIGFib3ZlIGFyZSBwZXJjZWl2ZWQgYXMgbnVsbC4KKyAgICBjaGlsZHJlbiA9IG51bGw7
CisgIH0KKworICBpZiAoY2hpbGRyZW4gPT09IG51bGwgfHwgdHlwZSA9PT0gJ3N0cmluZycgfHwg
dHlwZSA9PT0gJ251bWJlcicgfHwKKyAgLy8gVGhlIGZvbGxvd2luZyBpcyBpbmxpbmVkIGZyb20g
UmVhY3RFbGVtZW50LiBUaGlzIG1lYW5zIHdlIGNhbiBvcHRpbWl6ZQorICAvLyBzb21lIGNoZWNr
cy4gUmVhY3QgRmliZXIgYWxzbyBpbmxpbmVzIHRoaXMgbG9naWMgZm9yIHNpbWlsYXIgcHVycG9z
ZXMuCisgIHR5cGUgPT09ICdvYmplY3QnICYmIGNoaWxkcmVuLiQkdHlwZW9mID09PSBSRUFDVF9F
TEVNRU5UX1RZUEUpIHsKKyAgICBjYWxsYmFjayh0cmF2ZXJzZUNvbnRleHQsIGNoaWxkcmVuLAor
ICAgIC8vIElmIGl0J3MgdGhlIG9ubHkgY2hpbGQsIHRyZWF0IHRoZSBuYW1lIGFzIGlmIGl0IHdh
cyB3cmFwcGVkIGluIGFuIGFycmF5CisgICAgLy8gc28gdGhhdCBpdCdzIGNvbnNpc3RlbnQgaWYg
dGhlIG51bWJlciBvZiBjaGlsZHJlbiBncm93cy4KKyAgICBuYW1lU29GYXIgPT09ICcnID8gU0VQ
QVJBVE9SICsgZ2V0Q29tcG9uZW50S2V5KGNoaWxkcmVuLCAwKSA6IG5hbWVTb0Zhcik7CisgICAg
cmV0dXJuIDE7CisgIH0KKworICB2YXIgY2hpbGQ7CisgIHZhciBuZXh0TmFtZTsKKyAgdmFyIHN1
YnRyZWVDb3VudCA9IDA7IC8vIENvdW50IG9mIGNoaWxkcmVuIGZvdW5kIGluIHRoZSBjdXJyZW50
IHN1YnRyZWUuCisgIHZhciBuZXh0TmFtZVByZWZpeCA9IG5hbWVTb0ZhciA9PT0gJycgPyBTRVBB
UkFUT1IgOiBuYW1lU29GYXIgKyBTVUJTRVBBUkFUT1I7CisKKyAgaWYgKEFycmF5LmlzQXJyYXko
Y2hpbGRyZW4pKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkr
KykgeworICAgICAgY2hpbGQgPSBjaGlsZHJlbltpXTsKKyAgICAgIG5leHROYW1lID0gbmV4dE5h
bWVQcmVmaXggKyBnZXRDb21wb25lbnRLZXkoY2hpbGQsIGkpOworICAgICAgc3VidHJlZUNvdW50
ICs9IHRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBsKGNoaWxkLCBuZXh0TmFtZSwgY2FsbGJhY2ssIHRy
YXZlcnNlQ29udGV4dCk7CisgICAgfQorICB9IGVsc2UgeworICAgIHZhciBpdGVyYXRvckZuID0g
Z2V0SXRlcmF0b3JGbihjaGlsZHJlbik7CisgICAgaWYgKGl0ZXJhdG9yRm4pIHsKKyAgICAgIHZh
ciBpdGVyYXRvciA9IGl0ZXJhdG9yRm4uY2FsbChjaGlsZHJlbik7CisgICAgICB2YXIgc3RlcDsK
KyAgICAgIGlmIChpdGVyYXRvckZuICE9PSBjaGlsZHJlbi5lbnRyaWVzKSB7CisgICAgICAgIHZh
ciBpaSA9IDA7CisgICAgICAgIHdoaWxlICghKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmUp
IHsKKyAgICAgICAgICBjaGlsZCA9IHN0ZXAudmFsdWU7CisgICAgICAgICAgbmV4dE5hbWUgPSBu
ZXh0TmFtZVByZWZpeCArIGdldENvbXBvbmVudEtleShjaGlsZCwgaWkrKyk7CisgICAgICAgICAg
c3VidHJlZUNvdW50ICs9IHRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBsKGNoaWxkLCBuZXh0TmFtZSwg
Y2FsbGJhY2ssIHRyYXZlcnNlQ29udGV4dCk7CisgICAgICAgIH0KKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAg
ICAgICAgdmFyIG1hcHNBc0NoaWxkcmVuQWRkZW5kdW0gPSAnJzsKKyAgICAgICAgICBpZiAoUmVh
Y3RDdXJyZW50T3duZXIuY3VycmVudCkgeworICAgICAgICAgICAgdmFyIG1hcHNBc0NoaWxkcmVu
T3duZXJOYW1lID0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVudC5nZXROYW1lKCk7CisgICAgICAg
ICAgICBpZiAobWFwc0FzQ2hpbGRyZW5Pd25lck5hbWUpIHsKKyAgICAgICAgICAgICAgbWFwc0Fz
Q2hpbGRyZW5BZGRlbmR1bSA9ICcgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgYCcgKyBtYXBz
QXNDaGlsZHJlbk93bmVyTmFtZSArICdgLic7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQor
ICAgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5n
KGRpZFdhcm5BYm91dE1hcHMsICdVc2luZyBNYXBzIGFzIGNoaWxkcmVuIGlzIG5vdCB5ZXQgZnVs
bHkgc3VwcG9ydGVkLiBJdCBpcyBhbiAnICsgJ2V4cGVyaW1lbnRhbCBmZWF0dXJlIHRoYXQgbWln
aHQgYmUgcmVtb3ZlZC4gQ29udmVydCBpdCB0byBhICcgKyAnc2VxdWVuY2UgLyBpdGVyYWJsZSBv
ZiBrZXllZCBSZWFjdEVsZW1lbnRzIGluc3RlYWQuJXMnLCBtYXBzQXNDaGlsZHJlbkFkZGVuZHVt
KSA6IHZvaWQgMDsKKyAgICAgICAgICBkaWRXYXJuQWJvdXRNYXBzID0gdHJ1ZTsKKyAgICAgICAg
fQorICAgICAgICAvLyBJdGVyYXRvciB3aWxsIHByb3ZpZGUgZW50cnkgW2ssdl0gdHVwbGVzIHJh
dGhlciB0aGFuIHZhbHVlcy4KKyAgICAgICAgd2hpbGUgKCEoc3RlcCA9IGl0ZXJhdG9yLm5leHQo
KSkuZG9uZSkgeworICAgICAgICAgIHZhciBlbnRyeSA9IHN0ZXAudmFsdWU7CisgICAgICAgICAg
aWYgKGVudHJ5KSB7CisgICAgICAgICAgICBjaGlsZCA9IGVudHJ5WzFdOworICAgICAgICAgICAg
bmV4dE5hbWUgPSBuZXh0TmFtZVByZWZpeCArIEtleUVzY2FwZVV0aWxzLmVzY2FwZShlbnRyeVsw
XSkgKyBTVUJTRVBBUkFUT1IgKyBnZXRDb21wb25lbnRLZXkoY2hpbGQsIDApOworICAgICAgICAg
ICAgc3VidHJlZUNvdW50ICs9IHRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBsKGNoaWxkLCBuZXh0TmFt
ZSwgY2FsbGJhY2ssIHRyYXZlcnNlQ29udGV4dCk7CisgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICB9CisgICAgfSBlbHNlIGlmICh0eXBlID09PSAnb2JqZWN0JykgeworICAgICAgdmFyIGFk
ZGVuZHVtID0gJyc7CisgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJykgeworICAgICAgICBhZGRlbmR1bSA9ICcgSWYgeW91IG1lYW50IHRvIHJlbmRlciBhIGNv
bGxlY3Rpb24gb2YgY2hpbGRyZW4sIHVzZSBhbiBhcnJheSAnICsgJ2luc3RlYWQgb3Igd3JhcCB0
aGUgb2JqZWN0IHVzaW5nIGNyZWF0ZUZyYWdtZW50KG9iamVjdCkgZnJvbSB0aGUgJyArICdSZWFj
dCBhZGQtb25zLic7CisgICAgICAgIGlmIChjaGlsZHJlbi5faXNSZWFjdEVsZW1lbnQpIHsKKyAg
ICAgICAgICBhZGRlbmR1bSA9ICcgSXQgbG9va3MgbGlrZSB5b3VcJ3JlIHVzaW5nIGFuIGVsZW1l
bnQgY3JlYXRlZCBieSBhIGRpZmZlcmVudCAnICsgJ3ZlcnNpb24gb2YgUmVhY3QuIE1ha2Ugc3Vy
ZSB0byB1c2Ugb25seSBvbmUgY29weSBvZiBSZWFjdC4nOworICAgICAgICB9CisgICAgICAgIGlm
IChSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50KSB7CisgICAgICAgICAgdmFyIG5hbWUgPSBSZWFj
dEN1cnJlbnRPd25lci5jdXJyZW50LmdldE5hbWUoKTsKKyAgICAgICAgICBpZiAobmFtZSkgewor
ICAgICAgICAgICAgYWRkZW5kdW0gKz0gJyBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiBgJyAr
IG5hbWUgKyAnYC4nOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgICAgdmFy
IGNoaWxkcmVuU3RyaW5nID0gU3RyaW5nKGNoaWxkcmVuKTsKKyAgICAgICFmYWxzZSA/IHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdPYmpl
Y3RzIGFyZSBub3QgdmFsaWQgYXMgYSBSZWFjdCBjaGlsZCAoZm91bmQ6ICVzKS4lcycsIGNoaWxk
cmVuU3RyaW5nID09PSAnW29iamVjdCBPYmplY3RdJyA/ICdvYmplY3Qgd2l0aCBrZXlzIHsnICsg
T2JqZWN0LmtleXMoY2hpbGRyZW4pLmpvaW4oJywgJykgKyAnfScgOiBjaGlsZHJlblN0cmluZywg
YWRkZW5kdW0pIDogX3Byb2RJbnZhcmlhbnQoJzMxJywgY2hpbGRyZW5TdHJpbmcgPT09ICdbb2Jq
ZWN0IE9iamVjdF0nID8gJ29iamVjdCB3aXRoIGtleXMgeycgKyBPYmplY3Qua2V5cyhjaGlsZHJl
bikuam9pbignLCAnKSArICd9JyA6IGNoaWxkcmVuU3RyaW5nLCBhZGRlbmR1bSkgOiB2b2lkIDA7
CisgICAgfQorICB9CisKKyAgcmV0dXJuIHN1YnRyZWVDb3VudDsKK30KKworLyoqCisgKiBUcmF2
ZXJzZXMgY2hpbGRyZW4gdGhhdCBhcmUgdHlwaWNhbGx5IHNwZWNpZmllZCBhcyBgcHJvcHMuY2hp
bGRyZW5gLCBidXQKKyAqIG1pZ2h0IGFsc28gYmUgc3BlY2lmaWVkIHRocm91Z2ggYXR0cmlidXRl
czoKKyAqCisgKiAtIGB0cmF2ZXJzZUFsbENoaWxkcmVuKHRoaXMucHJvcHMuY2hpbGRyZW4sIC4u
LilgCisgKiAtIGB0cmF2ZXJzZUFsbENoaWxkcmVuKHRoaXMucHJvcHMubGVmdFBhbmVsQ2hpbGRy
ZW4sIC4uLilgCisgKgorICogVGhlIGB0cmF2ZXJzZUNvbnRleHRgIGlzIGFuIG9wdGlvbmFsIGFy
Z3VtZW50IHRoYXQgaXMgcGFzc2VkIHRocm91Z2ggdGhlCisgKiBlbnRpcmUgdHJhdmVyc2FsLiBJ
dCBjYW4gYmUgdXNlZCB0byBzdG9yZSBhY2N1bXVsYXRpb25zIG9yIGFueXRoaW5nIGVsc2UgdGhh
dAorICogdGhlIGNhbGxiYWNrIG1pZ2h0IGZpbmQgcmVsZXZhbnQuCisgKgorICogQHBhcmFtIHs/
Kn0gY2hpbGRyZW4gQ2hpbGRyZW4gdHJlZSBvYmplY3QuCisgKiBAcGFyYW0geyFmdW5jdGlvbn0g
Y2FsbGJhY2sgVG8gaW52b2tlIHVwb24gdHJhdmVyc2luZyBlYWNoIGNoaWxkLgorICogQHBhcmFt
IHs/Kn0gdHJhdmVyc2VDb250ZXh0IENvbnRleHQgZm9yIHRyYXZlcnNhbC4KKyAqIEByZXR1cm4g
eyFudW1iZXJ9IFRoZSBudW1iZXIgb2YgY2hpbGRyZW4gaW4gdGhpcyBzdWJ0cmVlLgorICovCitm
dW5jdGlvbiB0cmF2ZXJzZUFsbENoaWxkcmVuKGNoaWxkcmVuLCBjYWxsYmFjaywgdHJhdmVyc2VD
b250ZXh0KSB7CisgIGlmIChjaGlsZHJlbiA9PSBudWxsKSB7CisgICAgcmV0dXJuIDA7CisgIH0K
KworICByZXR1cm4gdHJhdmVyc2VBbGxDaGlsZHJlbkltcGwoY2hpbGRyZW4sICcnLCBjYWxsYmFj
aywgdHJhdmVyc2VDb250ZXh0KTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSB0cmF2ZXJzZUFsbENo
aWxkcmVuOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL3ZhbGlkYXRlRE9NTmVzdGluZy5q
cyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL3ZhbGlkYXRl
RE9NTmVzdGluZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYjM3YWJkNjIwMDIwOTc1NDI2ZjIxYjRiN2RiOTM4
YjQ4YmQyZGMxCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1
bGVzL3JlYWN0LWRvbS9saWIvdmFsaWRhdGVET01OZXN0aW5nLmpzCkBAIC0wLDAgKzEsMzgxIEBA
CisvKioKKyAqIENvcHlyaWdodCAyMDE1LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5k
ZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdy
YW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxl
IGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIg
X2Fzc2lnbiA9IHJlcXVpcmUoJ29iamVjdC1hc3NpZ24nKTsKKwordmFyIGVtcHR5RnVuY3Rpb24g
PSByZXF1aXJlKCdmYmpzL2xpYi9lbXB0eUZ1bmN0aW9uJyk7Cit2YXIgd2FybmluZyA9IHJlcXVp
cmUoJ2ZianMvbGliL3dhcm5pbmcnKTsKKwordmFyIHZhbGlkYXRlRE9NTmVzdGluZyA9IGVtcHR5
RnVuY3Rpb247CisKK2lmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7
CisgIC8vIFRoaXMgdmFsaWRhdGlvbiBjb2RlIHdhcyB3cml0dGVuIGJhc2VkIG9uIHRoZSBIVE1M
NSBwYXJzaW5nIHNwZWM6CisgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlw
YWdlL3N5bnRheC5odG1sI2hhcy1hbi1lbGVtZW50LWluLXNjb3BlCisgIC8vCisgIC8vIE5vdGU6
IHRoaXMgZG9lcyBub3QgY2F0Y2ggYWxsIGludmFsaWQgbmVzdGluZywgbm9yIGRvZXMgaXQgdHJ5
IHRvIChhcyBpdCdzCisgIC8vIG5vdCBjbGVhciB3aGF0IHByYWN0aWNhbCBiZW5lZml0IGRvaW5n
IHNvIHByb3ZpZGVzKTsgaW5zdGVhZCwgd2Ugd2FybiBvbmx5CisgIC8vIGZvciBjYXNlcyB3aGVy
ZSB0aGUgcGFyc2VyIHdpbGwgZ2l2ZSBhIHBhcnNlIHRyZWUgZGlmZmVyaW5nIGZyb20gd2hhdCBS
ZWFjdAorICAvLyBpbnRlbmRlZC4gRm9yIGV4YW1wbGUsIDxiPjxkaXY+PC9kaXY+PC9iPiBpcyBp
bnZhbGlkIGJ1dCB3ZSBkb24ndCB3YXJuCisgIC8vIGJlY2F1c2UgaXQgc3RpbGwgcGFyc2VzIGNv
cnJlY3RseTsgd2UgZG8gd2FybiBmb3Igb3RoZXIgY2FzZXMgbGlrZSBuZXN0ZWQKKyAgLy8gPHA+
IHRhZ3Mgd2hlcmUgdGhlIGJlZ2lubmluZyBvZiB0aGUgc2Vjb25kIGVsZW1lbnQgaW1wbGljaXRs
eSBjbG9zZXMgdGhlCisgIC8vIGZpcnN0LCBjYXVzaW5nIGEgY29uZnVzaW5nIG1lc3MuCisKKyAg
Ly8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjc3Bl
Y2lhbAorICB2YXIgc3BlY2lhbFRhZ3MgPSBbJ2FkZHJlc3MnLCAnYXBwbGV0JywgJ2FyZWEnLCAn
YXJ0aWNsZScsICdhc2lkZScsICdiYXNlJywgJ2Jhc2Vmb250JywgJ2Jnc291bmQnLCAnYmxvY2tx
dW90ZScsICdib2R5JywgJ2JyJywgJ2J1dHRvbicsICdjYXB0aW9uJywgJ2NlbnRlcicsICdjb2wn
LCAnY29sZ3JvdXAnLCAnZGQnLCAnZGV0YWlscycsICdkaXInLCAnZGl2JywgJ2RsJywgJ2R0Jywg
J2VtYmVkJywgJ2ZpZWxkc2V0JywgJ2ZpZ2NhcHRpb24nLCAnZmlndXJlJywgJ2Zvb3RlcicsICdm
b3JtJywgJ2ZyYW1lJywgJ2ZyYW1lc2V0JywgJ2gxJywgJ2gyJywgJ2gzJywgJ2g0JywgJ2g1Jywg
J2g2JywgJ2hlYWQnLCAnaGVhZGVyJywgJ2hncm91cCcsICdocicsICdodG1sJywgJ2lmcmFtZScs
ICdpbWcnLCAnaW5wdXQnLCAnaXNpbmRleCcsICdsaScsICdsaW5rJywgJ2xpc3RpbmcnLCAnbWFp
bicsICdtYXJxdWVlJywgJ21lbnUnLCAnbWVudWl0ZW0nLCAnbWV0YScsICduYXYnLCAnbm9lbWJl
ZCcsICdub2ZyYW1lcycsICdub3NjcmlwdCcsICdvYmplY3QnLCAnb2wnLCAncCcsICdwYXJhbScs
ICdwbGFpbnRleHQnLCAncHJlJywgJ3NjcmlwdCcsICdzZWN0aW9uJywgJ3NlbGVjdCcsICdzb3Vy
Y2UnLCAnc3R5bGUnLCAnc3VtbWFyeScsICd0YWJsZScsICd0Ym9keScsICd0ZCcsICd0ZW1wbGF0
ZScsICd0ZXh0YXJlYScsICd0Zm9vdCcsICd0aCcsICd0aGVhZCcsICd0aXRsZScsICd0cicsICd0
cmFjaycsICd1bCcsICd3YnInLCAneG1wJ107CisKKyAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hh
dHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjaGFzLWFuLWVsZW1lbnQtaW4tc2NvcGUKKyAg
dmFyIGluU2NvcGVUYWdzID0gWydhcHBsZXQnLCAnY2FwdGlvbicsICdodG1sJywgJ3RhYmxlJywg
J3RkJywgJ3RoJywgJ21hcnF1ZWUnLCAnb2JqZWN0JywgJ3RlbXBsYXRlJywKKworICAvLyBodHRw
czovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNodG1sLWludGVn
cmF0aW9uLXBvaW50CisgIC8vIFRPRE86IERpc3Rpbmd1aXNoIGJ5IG5hbWVzcGFjZSBoZXJlIC0t
IGZvciA8dGl0bGU+LCBpbmNsdWRpbmcgaXQgaGVyZQorICAvLyBlcnJzIG9uIHRoZSBzaWRlIG9m
IGZld2VyIHdhcm5pbmdzCisgICdmb3JlaWduT2JqZWN0JywgJ2Rlc2MnLCAndGl0bGUnXTsKKwor
ICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNo
YXMtYW4tZWxlbWVudC1pbi1idXR0b24tc2NvcGUKKyAgdmFyIGJ1dHRvblNjb3BlVGFncyA9IGlu
U2NvcGVUYWdzLmNvbmNhdChbJ2J1dHRvbiddKTsKKworICAvLyBodHRwczovL2h0bWwuc3BlYy53
aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNnZW5lcmF0ZS1pbXBsaWVkLWVuZC10YWdz
CisgIHZhciBpbXBsaWVkRW5kVGFncyA9IFsnZGQnLCAnZHQnLCAnbGknLCAnb3B0aW9uJywgJ29w
dGdyb3VwJywgJ3AnLCAncnAnLCAncnQnXTsKKworICB2YXIgZW1wdHlBbmNlc3RvckluZm8gPSB7
CisgICAgY3VycmVudDogbnVsbCwKKworICAgIGZvcm1UYWc6IG51bGwsCisgICAgYVRhZ0luU2Nv
cGU6IG51bGwsCisgICAgYnV0dG9uVGFnSW5TY29wZTogbnVsbCwKKyAgICBub2JyVGFnSW5TY29w
ZTogbnVsbCwKKyAgICBwVGFnSW5CdXR0b25TY29wZTogbnVsbCwKKworICAgIGxpc3RJdGVtVGFn
QXV0b2Nsb3Npbmc6IG51bGwsCisgICAgZGxJdGVtVGFnQXV0b2Nsb3Npbmc6IG51bGwKKyAgfTsK
KworICB2YXIgdXBkYXRlZEFuY2VzdG9ySW5mbyA9IGZ1bmN0aW9uIChvbGRJbmZvLCB0YWcsIGlu
c3RhbmNlKSB7CisgICAgdmFyIGFuY2VzdG9ySW5mbyA9IF9hc3NpZ24oe30sIG9sZEluZm8gfHwg
ZW1wdHlBbmNlc3RvckluZm8pOworICAgIHZhciBpbmZvID0geyB0YWc6IHRhZywgaW5zdGFuY2U6
IGluc3RhbmNlIH07CisKKyAgICBpZiAoaW5TY29wZVRhZ3MuaW5kZXhPZih0YWcpICE9PSAtMSkg
eworICAgICAgYW5jZXN0b3JJbmZvLmFUYWdJblNjb3BlID0gbnVsbDsKKyAgICAgIGFuY2VzdG9y
SW5mby5idXR0b25UYWdJblNjb3BlID0gbnVsbDsKKyAgICAgIGFuY2VzdG9ySW5mby5ub2JyVGFn
SW5TY29wZSA9IG51bGw7CisgICAgfQorICAgIGlmIChidXR0b25TY29wZVRhZ3MuaW5kZXhPZih0
YWcpICE9PSAtMSkgeworICAgICAgYW5jZXN0b3JJbmZvLnBUYWdJbkJ1dHRvblNjb3BlID0gbnVs
bDsKKyAgICB9CisKKyAgICAvLyBTZWUgcnVsZXMgZm9yICdsaScsICdkZCcsICdkdCcgc3RhcnQg
dGFncyBpbgorICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5
bnRheC5odG1sI3BhcnNpbmctbWFpbi1pbmJvZHkKKyAgICBpZiAoc3BlY2lhbFRhZ3MuaW5kZXhP
Zih0YWcpICE9PSAtMSAmJiB0YWcgIT09ICdhZGRyZXNzJyAmJiB0YWcgIT09ICdkaXYnICYmIHRh
ZyAhPT0gJ3AnKSB7CisgICAgICBhbmNlc3RvckluZm8ubGlzdEl0ZW1UYWdBdXRvY2xvc2luZyA9
IG51bGw7CisgICAgICBhbmNlc3RvckluZm8uZGxJdGVtVGFnQXV0b2Nsb3NpbmcgPSBudWxsOwor
ICAgIH0KKworICAgIGFuY2VzdG9ySW5mby5jdXJyZW50ID0gaW5mbzsKKworICAgIGlmICh0YWcg
PT09ICdmb3JtJykgeworICAgICAgYW5jZXN0b3JJbmZvLmZvcm1UYWcgPSBpbmZvOworICAgIH0K
KyAgICBpZiAodGFnID09PSAnYScpIHsKKyAgICAgIGFuY2VzdG9ySW5mby5hVGFnSW5TY29wZSA9
IGluZm87CisgICAgfQorICAgIGlmICh0YWcgPT09ICdidXR0b24nKSB7CisgICAgICBhbmNlc3Rv
ckluZm8uYnV0dG9uVGFnSW5TY29wZSA9IGluZm87CisgICAgfQorICAgIGlmICh0YWcgPT09ICdu
b2JyJykgeworICAgICAgYW5jZXN0b3JJbmZvLm5vYnJUYWdJblNjb3BlID0gaW5mbzsKKyAgICB9
CisgICAgaWYgKHRhZyA9PT0gJ3AnKSB7CisgICAgICBhbmNlc3RvckluZm8ucFRhZ0luQnV0dG9u
U2NvcGUgPSBpbmZvOworICAgIH0KKyAgICBpZiAodGFnID09PSAnbGknKSB7CisgICAgICBhbmNl
c3RvckluZm8ubGlzdEl0ZW1UYWdBdXRvY2xvc2luZyA9IGluZm87CisgICAgfQorICAgIGlmICh0
YWcgPT09ICdkZCcgfHwgdGFnID09PSAnZHQnKSB7CisgICAgICBhbmNlc3RvckluZm8uZGxJdGVt
VGFnQXV0b2Nsb3NpbmcgPSBpbmZvOworICAgIH0KKworICAgIHJldHVybiBhbmNlc3RvckluZm87
CisgIH07CisKKyAgLyoqCisgICAqIFJldHVybnMgd2hldGhlcgorICAgKi8KKyAgdmFyIGlzVGFn
VmFsaWRXaXRoUGFyZW50ID0gZnVuY3Rpb24gKHRhZywgcGFyZW50VGFnKSB7CisgICAgLy8gRmly
c3QsIGxldCdzIGNoZWNrIGlmIHdlJ3JlIGluIGFuIHVudXN1YWwgcGFyc2luZyBtb2RlLi4uCisg
ICAgc3dpdGNoIChwYXJlbnRUYWcpIHsKKyAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3
Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI3BhcnNpbmctbWFpbi1pbnNlbGVjdAorICAgICAg
Y2FzZSAnc2VsZWN0JzoKKyAgICAgICAgcmV0dXJuIHRhZyA9PT0gJ29wdGlvbicgfHwgdGFnID09
PSAnb3B0Z3JvdXAnIHx8IHRhZyA9PT0gJyN0ZXh0JzsKKyAgICAgIGNhc2UgJ29wdGdyb3VwJzoK
KyAgICAgICAgcmV0dXJuIHRhZyA9PT0gJ29wdGlvbicgfHwgdGFnID09PSAnI3RleHQnOworICAg
ICAgLy8gU3RyaWN0bHkgc3BlYWtpbmcsIHNlZWluZyBhbiA8b3B0aW9uPiBkb2Vzbid0IG1lYW4g
d2UncmUgaW4gYSA8c2VsZWN0PgorICAgICAgLy8gYnV0CisgICAgICBjYXNlICdvcHRpb24nOgor
ICAgICAgICByZXR1cm4gdGFnID09PSAnI3RleHQnOworCisgICAgICAvLyBodHRwczovL2h0bWwu
c3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNwYXJzaW5nLW1haW4taW50ZAor
ICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0
bWwjcGFyc2luZy1tYWluLWluY2FwdGlvbgorICAgICAgLy8gTm8gc3BlY2lhbCBiZWhhdmlvciBz
aW5jZSB0aGVzZSBydWxlcyBmYWxsIGJhY2sgdG8gImluIGJvZHkiIG1vZGUgZm9yCisgICAgICAv
LyBhbGwgZXhjZXB0IHNwZWNpYWwgdGFibGUgbm9kZXMgd2hpY2ggY2F1c2UgYmFkIHBhcnNpbmcg
YmVoYXZpb3IgYW55d2F5LgorCisgICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3Jn
L211bHRpcGFnZS9zeW50YXguaHRtbCNwYXJzaW5nLW1haW4taW50cgorICAgICAgY2FzZSAndHIn
OgorICAgICAgICByZXR1cm4gdGFnID09PSAndGgnIHx8IHRhZyA9PT0gJ3RkJyB8fCB0YWcgPT09
ICdzdHlsZScgfHwgdGFnID09PSAnc2NyaXB0JyB8fCB0YWcgPT09ICd0ZW1wbGF0ZSc7CisKKyAg
ICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1s
I3BhcnNpbmctbWFpbi1pbnRib2R5CisgICAgICBjYXNlICd0Ym9keSc6CisgICAgICBjYXNlICd0
aGVhZCc6CisgICAgICBjYXNlICd0Zm9vdCc6CisgICAgICAgIHJldHVybiB0YWcgPT09ICd0cicg
fHwgdGFnID09PSAnc3R5bGUnIHx8IHRhZyA9PT0gJ3NjcmlwdCcgfHwgdGFnID09PSAndGVtcGxh
dGUnOworCisgICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9z
eW50YXguaHRtbCNwYXJzaW5nLW1haW4taW5jb2xncm91cAorICAgICAgY2FzZSAnY29sZ3JvdXAn
OgorICAgICAgICByZXR1cm4gdGFnID09PSAnY29sJyB8fCB0YWcgPT09ICd0ZW1wbGF0ZSc7CisK
KyAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5o
dG1sI3BhcnNpbmctbWFpbi1pbnRhYmxlCisgICAgICBjYXNlICd0YWJsZSc6CisgICAgICAgIHJl
dHVybiB0YWcgPT09ICdjYXB0aW9uJyB8fCB0YWcgPT09ICdjb2xncm91cCcgfHwgdGFnID09PSAn
dGJvZHknIHx8IHRhZyA9PT0gJ3Rmb290JyB8fCB0YWcgPT09ICd0aGVhZCcgfHwgdGFnID09PSAn
c3R5bGUnIHx8IHRhZyA9PT0gJ3NjcmlwdCcgfHwgdGFnID09PSAndGVtcGxhdGUnOworCisgICAg
ICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNw
YXJzaW5nLW1haW4taW5oZWFkCisgICAgICBjYXNlICdoZWFkJzoKKyAgICAgICAgcmV0dXJuIHRh
ZyA9PT0gJ2Jhc2UnIHx8IHRhZyA9PT0gJ2Jhc2Vmb250JyB8fCB0YWcgPT09ICdiZ3NvdW5kJyB8
fCB0YWcgPT09ICdsaW5rJyB8fCB0YWcgPT09ICdtZXRhJyB8fCB0YWcgPT09ICd0aXRsZScgfHwg
dGFnID09PSAnbm9zY3JpcHQnIHx8IHRhZyA9PT0gJ25vZnJhbWVzJyB8fCB0YWcgPT09ICdzdHls
ZScgfHwgdGFnID09PSAnc2NyaXB0JyB8fCB0YWcgPT09ICd0ZW1wbGF0ZSc7CisKKyAgICAgIC8v
IGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3NlbWFudGljcy5odG1sI3Ro
ZS1odG1sLWVsZW1lbnQKKyAgICAgIGNhc2UgJ2h0bWwnOgorICAgICAgICByZXR1cm4gdGFnID09
PSAnaGVhZCcgfHwgdGFnID09PSAnYm9keSc7CisgICAgICBjYXNlICcjZG9jdW1lbnQnOgorICAg
ICAgICByZXR1cm4gdGFnID09PSAnaHRtbCc7CisgICAgfQorCisgICAgLy8gUHJvYmFibHkgaW4g
dGhlICJpbiBib2R5IiBwYXJzaW5nIG1vZGUsIHNvIHdlIG91dGxhdyBvbmx5IHRhZyBjb21ib3MK
KyAgICAvLyB3aGVyZSB0aGUgcGFyc2luZyBydWxlcyBjYXVzZSBpbXBsaWNpdCBvcGVucyBvciBj
bG9zZXMgdG8gYmUgYWRkZWQuCisgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9t
dWx0aXBhZ2Uvc3ludGF4Lmh0bWwjcGFyc2luZy1tYWluLWluYm9keQorICAgIHN3aXRjaCAodGFn
KSB7CisgICAgICBjYXNlICdoMSc6CisgICAgICBjYXNlICdoMic6CisgICAgICBjYXNlICdoMyc6
CisgICAgICBjYXNlICdoNCc6CisgICAgICBjYXNlICdoNSc6CisgICAgICBjYXNlICdoNic6Cisg
ICAgICAgIHJldHVybiBwYXJlbnRUYWcgIT09ICdoMScgJiYgcGFyZW50VGFnICE9PSAnaDInICYm
IHBhcmVudFRhZyAhPT0gJ2gzJyAmJiBwYXJlbnRUYWcgIT09ICdoNCcgJiYgcGFyZW50VGFnICE9
PSAnaDUnICYmIHBhcmVudFRhZyAhPT0gJ2g2JzsKKworICAgICAgY2FzZSAncnAnOgorICAgICAg
Y2FzZSAncnQnOgorICAgICAgICByZXR1cm4gaW1wbGllZEVuZFRhZ3MuaW5kZXhPZihwYXJlbnRU
YWcpID09PSAtMTsKKworICAgICAgY2FzZSAnYm9keSc6CisgICAgICBjYXNlICdjYXB0aW9uJzoK
KyAgICAgIGNhc2UgJ2NvbCc6CisgICAgICBjYXNlICdjb2xncm91cCc6CisgICAgICBjYXNlICdm
cmFtZSc6CisgICAgICBjYXNlICdoZWFkJzoKKyAgICAgIGNhc2UgJ2h0bWwnOgorICAgICAgY2Fz
ZSAndGJvZHknOgorICAgICAgY2FzZSAndGQnOgorICAgICAgY2FzZSAndGZvb3QnOgorICAgICAg
Y2FzZSAndGgnOgorICAgICAgY2FzZSAndGhlYWQnOgorICAgICAgY2FzZSAndHInOgorICAgICAg
ICAvLyBUaGVzZSB0YWdzIGFyZSBvbmx5IHZhbGlkIHdpdGggYSBmZXcgcGFyZW50cyB0aGF0IGhh
dmUgc3BlY2lhbCBjaGlsZAorICAgICAgICAvLyBwYXJzaW5nIHJ1bGVzIC0tIGlmIHdlJ3JlIGRv
d24gaGVyZSwgdGhlbiBub25lIG9mIHRob3NlIG1hdGNoZWQgYW5kCisgICAgICAgIC8vIHNvIHdl
IGFsbG93IGl0IG9ubHkgaWYgd2UgZG9uJ3Qga25vdyB3aGF0IHRoZSBwYXJlbnQgaXMsIGFzIGFs
bCBvdGhlcgorICAgICAgICAvLyBjYXNlcyBhcmUgaW52YWxpZC4KKyAgICAgICAgcmV0dXJuIHBh
cmVudFRhZyA9PSBudWxsOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworICB9OworCisgIC8q
KgorICAgKiBSZXR1cm5zIHdoZXRoZXIKKyAgICovCisgIHZhciBmaW5kSW52YWxpZEFuY2VzdG9y
Rm9yVGFnID0gZnVuY3Rpb24gKHRhZywgYW5jZXN0b3JJbmZvKSB7CisgICAgc3dpdGNoICh0YWcp
IHsKKyAgICAgIGNhc2UgJ2FkZHJlc3MnOgorICAgICAgY2FzZSAnYXJ0aWNsZSc6CisgICAgICBj
YXNlICdhc2lkZSc6CisgICAgICBjYXNlICdibG9ja3F1b3RlJzoKKyAgICAgIGNhc2UgJ2NlbnRl
cic6CisgICAgICBjYXNlICdkZXRhaWxzJzoKKyAgICAgIGNhc2UgJ2RpYWxvZyc6CisgICAgICBj
YXNlICdkaXInOgorICAgICAgY2FzZSAnZGl2JzoKKyAgICAgIGNhc2UgJ2RsJzoKKyAgICAgIGNh
c2UgJ2ZpZWxkc2V0JzoKKyAgICAgIGNhc2UgJ2ZpZ2NhcHRpb24nOgorICAgICAgY2FzZSAnZmln
dXJlJzoKKyAgICAgIGNhc2UgJ2Zvb3Rlcic6CisgICAgICBjYXNlICdoZWFkZXInOgorICAgICAg
Y2FzZSAnaGdyb3VwJzoKKyAgICAgIGNhc2UgJ21haW4nOgorICAgICAgY2FzZSAnbWVudSc6Cisg
ICAgICBjYXNlICduYXYnOgorICAgICAgY2FzZSAnb2wnOgorICAgICAgY2FzZSAncCc6CisgICAg
ICBjYXNlICdzZWN0aW9uJzoKKyAgICAgIGNhc2UgJ3N1bW1hcnknOgorICAgICAgY2FzZSAndWwn
OgorCisgICAgICBjYXNlICdwcmUnOgorICAgICAgY2FzZSAnbGlzdGluZyc6CisKKyAgICAgIGNh
c2UgJ3RhYmxlJzoKKworICAgICAgY2FzZSAnaHInOgorCisgICAgICBjYXNlICd4bXAnOgorCisg
ICAgICBjYXNlICdoMSc6CisgICAgICBjYXNlICdoMic6CisgICAgICBjYXNlICdoMyc6CisgICAg
ICBjYXNlICdoNCc6CisgICAgICBjYXNlICdoNSc6CisgICAgICBjYXNlICdoNic6CisgICAgICAg
IHJldHVybiBhbmNlc3RvckluZm8ucFRhZ0luQnV0dG9uU2NvcGU7CisKKyAgICAgIGNhc2UgJ2Zv
cm0nOgorICAgICAgICByZXR1cm4gYW5jZXN0b3JJbmZvLmZvcm1UYWcgfHwgYW5jZXN0b3JJbmZv
LnBUYWdJbkJ1dHRvblNjb3BlOworCisgICAgICBjYXNlICdsaSc6CisgICAgICAgIHJldHVybiBh
bmNlc3RvckluZm8ubGlzdEl0ZW1UYWdBdXRvY2xvc2luZzsKKworICAgICAgY2FzZSAnZGQnOgor
ICAgICAgY2FzZSAnZHQnOgorICAgICAgICByZXR1cm4gYW5jZXN0b3JJbmZvLmRsSXRlbVRhZ0F1
dG9jbG9zaW5nOworCisgICAgICBjYXNlICdidXR0b24nOgorICAgICAgICByZXR1cm4gYW5jZXN0
b3JJbmZvLmJ1dHRvblRhZ0luU2NvcGU7CisKKyAgICAgIGNhc2UgJ2EnOgorICAgICAgICAvLyBT
cGVjIHNheXMgc29tZXRoaW5nIGFib3V0IHN0b3JpbmcgYSBsaXN0IG9mIG1hcmtlcnMsIGJ1dCBp
dCBzb3VuZHMKKyAgICAgICAgLy8gZXF1aXZhbGVudCB0byB0aGlzIGNoZWNrLgorICAgICAgICBy
ZXR1cm4gYW5jZXN0b3JJbmZvLmFUYWdJblNjb3BlOworCisgICAgICBjYXNlICdub2JyJzoKKyAg
ICAgICAgcmV0dXJuIGFuY2VzdG9ySW5mby5ub2JyVGFnSW5TY29wZTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gbnVsbDsKKyAgfTsKKworICAvKioKKyAgICogR2l2ZW4gYSBSZWFjdENvbXBvc2l0ZUNv
bXBvbmVudCBpbnN0YW5jZSwgcmV0dXJuIGEgbGlzdCBvZiBpdHMgcmVjdXJzaXZlCisgICAqIG93
bmVycywgc3RhcnRpbmcgYXQgdGhlIHJvb3QgYW5kIGVuZGluZyB3aXRoIHRoZSBpbnN0YW5jZSBp
dHNlbGYuCisgICAqLworICB2YXIgZmluZE93bmVyU3RhY2sgPSBmdW5jdGlvbiAoaW5zdGFuY2Up
IHsKKyAgICBpZiAoIWluc3RhbmNlKSB7CisgICAgICByZXR1cm4gW107CisgICAgfQorCisgICAg
dmFyIHN0YWNrID0gW107CisgICAgZG8geworICAgICAgc3RhY2sucHVzaChpbnN0YW5jZSk7Cisg
ICAgfSB3aGlsZSAoaW5zdGFuY2UgPSBpbnN0YW5jZS5fY3VycmVudEVsZW1lbnQuX293bmVyKTsK
KyAgICBzdGFjay5yZXZlcnNlKCk7CisgICAgcmV0dXJuIHN0YWNrOworICB9OworCisgIHZhciBk
aWRXYXJuID0ge307CisKKyAgdmFsaWRhdGVET01OZXN0aW5nID0gZnVuY3Rpb24gKGNoaWxkVGFn
LCBjaGlsZFRleHQsIGNoaWxkSW5zdGFuY2UsIGFuY2VzdG9ySW5mbykgeworICAgIGFuY2VzdG9y
SW5mbyA9IGFuY2VzdG9ySW5mbyB8fCBlbXB0eUFuY2VzdG9ySW5mbzsKKyAgICB2YXIgcGFyZW50
SW5mbyA9IGFuY2VzdG9ySW5mby5jdXJyZW50OworICAgIHZhciBwYXJlbnRUYWcgPSBwYXJlbnRJ
bmZvICYmIHBhcmVudEluZm8udGFnOworCisgICAgaWYgKGNoaWxkVGV4dCAhPSBudWxsKSB7Cisg
ICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhjaGls
ZFRhZyA9PSBudWxsLCAndmFsaWRhdGVET01OZXN0aW5nOiB3aGVuIGNoaWxkVGV4dCBpcyBwYXNz
ZWQsIGNoaWxkVGFnIHNob3VsZCBiZSBudWxsJykgOiB2b2lkIDA7CisgICAgICBjaGlsZFRhZyA9
ICcjdGV4dCc7CisgICAgfQorCisgICAgdmFyIGludmFsaWRQYXJlbnQgPSBpc1RhZ1ZhbGlkV2l0
aFBhcmVudChjaGlsZFRhZywgcGFyZW50VGFnKSA/IG51bGwgOiBwYXJlbnRJbmZvOworICAgIHZh
ciBpbnZhbGlkQW5jZXN0b3IgPSBpbnZhbGlkUGFyZW50ID8gbnVsbCA6IGZpbmRJbnZhbGlkQW5j
ZXN0b3JGb3JUYWcoY2hpbGRUYWcsIGFuY2VzdG9ySW5mbyk7CisgICAgdmFyIHByb2JsZW1hdGlj
ID0gaW52YWxpZFBhcmVudCB8fCBpbnZhbGlkQW5jZXN0b3I7CisKKyAgICBpZiAocHJvYmxlbWF0
aWMpIHsKKyAgICAgIHZhciBhbmNlc3RvclRhZyA9IHByb2JsZW1hdGljLnRhZzsKKyAgICAgIHZh
ciBhbmNlc3Rvckluc3RhbmNlID0gcHJvYmxlbWF0aWMuaW5zdGFuY2U7CisKKyAgICAgIHZhciBj
aGlsZE93bmVyID0gY2hpbGRJbnN0YW5jZSAmJiBjaGlsZEluc3RhbmNlLl9jdXJyZW50RWxlbWVu
dC5fb3duZXI7CisgICAgICB2YXIgYW5jZXN0b3JPd25lciA9IGFuY2VzdG9ySW5zdGFuY2UgJiYg
YW5jZXN0b3JJbnN0YW5jZS5fY3VycmVudEVsZW1lbnQuX293bmVyOworCisgICAgICB2YXIgY2hp
bGRPd25lcnMgPSBmaW5kT3duZXJTdGFjayhjaGlsZE93bmVyKTsKKyAgICAgIHZhciBhbmNlc3Rv
ck93bmVycyA9IGZpbmRPd25lclN0YWNrKGFuY2VzdG9yT3duZXIpOworCisgICAgICB2YXIgbWlu
U3RhY2tMZW4gPSBNYXRoLm1pbihjaGlsZE93bmVycy5sZW5ndGgsIGFuY2VzdG9yT3duZXJzLmxl
bmd0aCk7CisgICAgICB2YXIgaTsKKworICAgICAgdmFyIGRlZXBlc3RDb21tb24gPSAtMTsKKyAg
ICAgIGZvciAoaSA9IDA7IGkgPCBtaW5TdGFja0xlbjsgaSsrKSB7CisgICAgICAgIGlmIChjaGls
ZE93bmVyc1tpXSA9PT0gYW5jZXN0b3JPd25lcnNbaV0pIHsKKyAgICAgICAgICBkZWVwZXN0Q29t
bW9uID0gaTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgICAgfQorCisgICAgICB2YXIgVU5LTk9XTiA9ICcodW5rbm93biknOworICAgICAgdmFyIGNo
aWxkT3duZXJOYW1lcyA9IGNoaWxkT3duZXJzLnNsaWNlKGRlZXBlc3RDb21tb24gKyAxKS5tYXAo
ZnVuY3Rpb24gKGluc3QpIHsKKyAgICAgICAgcmV0dXJuIGluc3QuZ2V0TmFtZSgpIHx8IFVOS05P
V047CisgICAgICB9KTsKKyAgICAgIHZhciBhbmNlc3Rvck93bmVyTmFtZXMgPSBhbmNlc3Rvck93
bmVycy5zbGljZShkZWVwZXN0Q29tbW9uICsgMSkubWFwKGZ1bmN0aW9uIChpbnN0KSB7CisgICAg
ICAgIHJldHVybiBpbnN0LmdldE5hbWUoKSB8fCBVTktOT1dOOworICAgICAgfSk7CisgICAgICB2
YXIgb3duZXJJbmZvID0gW10uY29uY2F0KAorICAgICAgLy8gSWYgdGhlIHBhcmVudCBhbmQgY2hp
bGQgaW5zdGFuY2VzIGhhdmUgYSBjb21tb24gb3duZXIgYW5jZXN0b3IsIHN0YXJ0CisgICAgICAv
LyB3aXRoIHRoYXQgLS0gb3RoZXJ3aXNlIHdlIGp1c3Qgc3RhcnQgd2l0aCB0aGUgcGFyZW50J3Mg
b3duZXJzLgorICAgICAgZGVlcGVzdENvbW1vbiAhPT0gLTEgPyBjaGlsZE93bmVyc1tkZWVwZXN0
Q29tbW9uXS5nZXROYW1lKCkgfHwgVU5LTk9XTiA6IFtdLCBhbmNlc3Rvck93bmVyTmFtZXMsIGFu
Y2VzdG9yVGFnLAorICAgICAgLy8gSWYgd2UncmUgd2FybmluZyBhYm91dCBhbiBpbnZhbGlkIChu
b24tcGFyZW50KSBhbmNlc3RyeSwgYWRkICcuLi4nCisgICAgICBpbnZhbGlkQW5jZXN0b3IgPyBb
Jy4uLiddIDogW10sIGNoaWxkT3duZXJOYW1lcywgY2hpbGRUYWcpLmpvaW4oJyA+ICcpOworCisg
ICAgICB2YXIgd2FybktleSA9ICEhaW52YWxpZFBhcmVudCArICd8JyArIGNoaWxkVGFnICsgJ3wn
ICsgYW5jZXN0b3JUYWcgKyAnfCcgKyBvd25lckluZm87CisgICAgICBpZiAoZGlkV2Fyblt3YXJu
S2V5XSkgeworICAgICAgICByZXR1cm47CisgICAgICB9CisgICAgICBkaWRXYXJuW3dhcm5LZXld
ID0gdHJ1ZTsKKworICAgICAgdmFyIHRhZ0Rpc3BsYXlOYW1lID0gY2hpbGRUYWc7CisgICAgICB2
YXIgd2hpdGVzcGFjZUluZm8gPSAnJzsKKyAgICAgIGlmIChjaGlsZFRhZyA9PT0gJyN0ZXh0Jykg
eworICAgICAgICBpZiAoL1xTLy50ZXN0KGNoaWxkVGV4dCkpIHsKKyAgICAgICAgICB0YWdEaXNw
bGF5TmFtZSA9ICdUZXh0IG5vZGVzJzsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICB0YWdE
aXNwbGF5TmFtZSA9ICdXaGl0ZXNwYWNlIHRleHQgbm9kZXMnOworICAgICAgICAgIHdoaXRlc3Bh
Y2VJbmZvID0gJyBNYWtlIHN1cmUgeW91IGRvblwndCBoYXZlIGFueSBleHRyYSB3aGl0ZXNwYWNl
IGJldHdlZW4gdGFncyBvbiAnICsgJ2VhY2ggbGluZSBvZiB5b3VyIHNvdXJjZSBjb2RlLic7Cisg
ICAgICAgIH0KKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHRhZ0Rpc3BsYXlOYW1lID0gJzwnICsg
Y2hpbGRUYWcgKyAnPic7CisgICAgICB9CisKKyAgICAgIGlmIChpbnZhbGlkUGFyZW50KSB7Cisg
ICAgICAgIHZhciBpbmZvID0gJyc7CisgICAgICAgIGlmIChhbmNlc3RvclRhZyA9PT0gJ3RhYmxl
JyAmJiBjaGlsZFRhZyA9PT0gJ3RyJykgeworICAgICAgICAgIGluZm8gKz0gJyBBZGQgYSA8dGJv
ZHk+IHRvIHlvdXIgY29kZSB0byBtYXRjaCB0aGUgRE9NIHRyZWUgZ2VuZXJhdGVkIGJ5ICcgKyAn
dGhlIGJyb3dzZXIuJzsKKyAgICAgICAgfQorICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAh
PT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ3ZhbGlkYXRlRE9NTmVzdGluZyguLi4p
OiAlcyBjYW5ub3QgYXBwZWFyIGFzIGEgY2hpbGQgb2YgPCVzPi4lcyAnICsgJ1NlZSAlcy4lcycs
IHRhZ0Rpc3BsYXlOYW1lLCBhbmNlc3RvclRhZywgd2hpdGVzcGFjZUluZm8sIG93bmVySW5mbywg
aW5mbykgOiB2b2lkIDA7CisgICAgICB9IGVsc2UgeworICAgICAgICBwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ3ZhbGlkYXRlRE9NTmVzdGlu
ZyguLi4pOiAlcyBjYW5ub3QgYXBwZWFyIGFzIGEgZGVzY2VuZGFudCBvZiAnICsgJzwlcz4uIFNl
ZSAlcy4nLCB0YWdEaXNwbGF5TmFtZSwgYW5jZXN0b3JUYWcsIG93bmVySW5mbykgOiB2b2lkIDA7
CisgICAgICB9CisgICAgfQorICB9OworCisgIHZhbGlkYXRlRE9NTmVzdGluZy51cGRhdGVkQW5j
ZXN0b3JJbmZvID0gdXBkYXRlZEFuY2VzdG9ySW5mbzsKKworICAvLyBGb3IgdGVzdGluZworICB2
YWxpZGF0ZURPTU5lc3RpbmcuaXNUYWdWYWxpZEluQ29udGV4dCA9IGZ1bmN0aW9uICh0YWcsIGFu
Y2VzdG9ySW5mbykgeworICAgIGFuY2VzdG9ySW5mbyA9IGFuY2VzdG9ySW5mbyB8fCBlbXB0eUFu
Y2VzdG9ySW5mbzsKKyAgICB2YXIgcGFyZW50SW5mbyA9IGFuY2VzdG9ySW5mby5jdXJyZW50Owor
ICAgIHZhciBwYXJlbnRUYWcgPSBwYXJlbnRJbmZvICYmIHBhcmVudEluZm8udGFnOworICAgIHJl
dHVybiBpc1RhZ1ZhbGlkV2l0aFBhcmVudCh0YWcsIHBhcmVudFRhZykgJiYgIWZpbmRJbnZhbGlk
QW5jZXN0b3JGb3JUYWcodGFnLCBhbmNlc3RvckluZm8pOworICB9OworfQorCittb2R1bGUuZXhw
b3J0cyA9IHZhbGlkYXRlRE9NTmVzdGluZzsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL3BhY2th
Z2UuanNvbiBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vcGFja2Fn
ZS5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmM0ZGUzMzRhYjljM2UzNDhjMGVjZmE1ZWFhMGQ2OTM2YzAyOWI5
NjEKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVh
Y3QtZG9tL3BhY2thZ2UuanNvbgpAQCAtMCwwICsxLDgzIEBACit7CisgICJfYXJncyI6IFsKKyAg
ICBbCisgICAgICB7CisgICAgICAgICJyYXciOiAicmVhY3QtZG9tQGh0dHBzOi8vcmVnaXN0cnku
bnBtanMub3JnL3JlYWN0LWRvbS8tL3JlYWN0LWRvbS0xNS40LjAudGd6IiwKKyAgICAgICAgInNj
b3BlIjogbnVsbCwKKyAgICAgICAgImVzY2FwZWROYW1lIjogInJlYWN0LWRvbSIsCisgICAgICAg
ICJuYW1lIjogInJlYWN0LWRvbSIsCisgICAgICAgICJyYXdTcGVjIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL3JlYWN0LWRvbS8tL3JlYWN0LWRvbS0xNS40LjAudGd6IiwKKyAgICAgICAg
InNwZWMiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcmVhY3QtZG9tLy0vcmVhY3QtZG9t
LTE1LjQuMC50Z3oiLAorICAgICAgICAidHlwZSI6ICJyZW1vdGUiCisgICAgICB9LAorICAgICAg
Ii9Vc2Vycy9hZGR5by9wcm9qZWN0cy9zcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QiCisgICAgXQorICBdLAorICAiX2Zyb20iOiAicmVhY3Qt
ZG9tQDE1LjQuMCIsCisgICJfaWQiOiAicmVhY3QtZG9tQDE1LjQuMCIsCisgICJfaW5DYWNoZSI6
IHRydWUsCisgICJfbG9jYXRpb24iOiAiL3JlYWN0LWRvbSIsCisgICJfcGhhbnRvbUNoaWxkcmVu
Ijoge30sCisgICJfcmVxdWVzdGVkIjogeworICAgICJyYXciOiAicmVhY3QtZG9tQGh0dHBzOi8v
cmVnaXN0cnkubnBtanMub3JnL3JlYWN0LWRvbS8tL3JlYWN0LWRvbS0xNS40LjAudGd6IiwKKyAg
ICAic2NvcGUiOiBudWxsLAorICAgICJlc2NhcGVkTmFtZSI6ICJyZWFjdC1kb20iLAorICAgICJu
YW1lIjogInJlYWN0LWRvbSIsCisgICAgInJhd1NwZWMiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1q
cy5vcmcvcmVhY3QtZG9tLy0vcmVhY3QtZG9tLTE1LjQuMC50Z3oiLAorICAgICJzcGVjIjogImh0
dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3JlYWN0LWRvbS8tL3JlYWN0LWRvbS0xNS40LjAudGd6
IiwKKyAgICAidHlwZSI6ICJyZW1vdGUiCisgIH0sCisgICJfcmVxdWlyZWRCeSI6IFsKKyAgICAi
LyIKKyAgXSwKKyAgIl9yZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9yZWFj
dC1kb20vLS9yZWFjdC1kb20tMTUuNC4wLnRneiIsCisgICJfc2hhc3VtIjogIjZhOTdhNjkwMDA5
NjY1NzBkYjQ4Yzc0NmJjNGI3YjBjYTUwZDE1MzQiLAorICAiX3Nocmlua3dyYXAiOiBudWxsLAor
ICAiX3NwZWMiOiAicmVhY3QtZG9tQGh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3JlYWN0LWRv
bS8tL3JlYWN0LWRvbS0xNS40LjAudGd6IiwKKyAgIl93aGVyZSI6ICIvVXNlcnMvYWRkeW8vcHJv
amVjdHMvc3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L3JlYWN0IiwKKyAgImJyb3dzZXJpZnkiOiB7CisgICAgInRyYW5zZm9ybSI6IFsKKyAgICAgICJs
b29zZS1lbnZpZnkiCisgICAgXQorICB9LAorICAiYnVncyI6IHsKKyAgICAidXJsIjogImh0dHBz
Oi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMiCisgIH0sCisgICJkZXBlbmRlbmNp
ZXMiOiB7CisgICAgImZianMiOiAiXjAuOC4xIiwKKyAgICAibG9vc2UtZW52aWZ5IjogIl4xLjEu
MCIsCisgICAgIm9iamVjdC1hc3NpZ24iOiAiXjQuMS4wIgorICB9LAorICAiZGVzY3JpcHRpb24i
OiAiUmVhY3QgcGFja2FnZSBmb3Igd29ya2luZyB3aXRoIHRoZSBET00uIiwKKyAgImRldkRlcGVu
ZGVuY2llcyI6IHt9LAorICAiZmlsZXMiOiBbCisgICAgIkxJQ0VOU0UiLAorICAgICJQQVRFTlRT
IiwKKyAgICAiUkVBRE1FLm1kIiwKKyAgICAiZGlzdC8iLAorICAgICJsaWIvIiwKKyAgICAiaW5k
ZXguanMiLAorICAgICJzZXJ2ZXIuanMiCisgIF0sCisgICJob21lcGFnZSI6ICJodHRwczovL2Zh
Y2Vib29rLmdpdGh1Yi5pby9yZWFjdC8iLAorICAia2V5d29yZHMiOiBbCisgICAgInJlYWN0Igor
ICBdLAorICAibGljZW5zZSI6ICJCU0QtMy1DbGF1c2UiLAorICAibWFpbiI6ICJpbmRleC5qcyIs
CisgICJuYW1lIjogInJlYWN0LWRvbSIsCisgICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHt9LAor
ICAicGVlckRlcGVuZGVuY2llcyI6IHsKKyAgICAicmVhY3QiOiAiXjE1LjQuMCIKKyAgfSwKKyAg
InJlYWRtZSI6ICIjIGByZWFjdC1kb21gXG5cblRoaXMgcGFja2FnZSBzZXJ2ZXMgYXMgdGhlIGVu
dHJ5IHBvaW50IG9mIHRoZSBET00tcmVsYXRlZCByZW5kZXJpbmcgcGF0aHMuIEl0IGlzIGludGVu
ZGVkIHRvIGJlIHBhaXJlZCB3aXRoIHRoZSBpc29tb3JwaGljIFJlYWN0LCB3aGljaCB3aWxsIGJl
IHNoaXBwZWQgYXMgYHJlYWN0YCB0byBucG0uXG5cbiMjIEluc3RhbGxhdGlvblxuXG5gYGBzaFxu
bnBtIGluc3RhbGwgcmVhY3QgcmVhY3QtZG9tXG5gYGBcblxuIyMgVXNhZ2VcblxuIyMjIEluIHRo
ZSBicm93c2VyXG5cbmBgYGpzXG52YXIgUmVhY3QgPSByZXF1aXJlKCdyZWFjdCcpO1xudmFyIFJl
YWN0RE9NID0gcmVxdWlyZSgncmVhY3QtZG9tJyk7XG5cbmNsYXNzIE15Q29tcG9uZW50IGV4dGVu
ZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgcmVuZGVyKCkge1xuICAgIHJldHVybiA8ZGl2PkhlbGxv
IFdvcmxkPC9kaXY+O1xuICB9XG59XG5cblJlYWN0RE9NLnJlbmRlcig8TXlDb21wb25lbnQgLz4s
IG5vZGUpO1xuYGBgXG5cbiMjIyBPbiB0aGUgc2VydmVyXG5cbmBgYGpzXG52YXIgUmVhY3QgPSBy
ZXF1aXJlKCdyZWFjdCcpO1xudmFyIFJlYWN0RE9NU2VydmVyID0gcmVxdWlyZSgncmVhY3QtZG9t
L3NlcnZlcicpO1xuXG5jbGFzcyBNeUNvbXBvbmVudCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7
XG4gIHJlbmRlcigpIHtcbiAgICByZXR1cm4gPGRpdj5IZWxsbyBXb3JsZDwvZGl2PjtcbiAgfVxu
fVxuXG5SZWFjdERPTVNlcnZlci5yZW5kZXJUb1N0cmluZyg8TXlDb21wb25lbnQgLz4pO1xuYGBg
XG5cbiMjIEFQSVxuXG4jIyMgYHJlYWN0LWRvbWBcblxuLSBgZmluZERPTU5vZGVgXG4tIGByZW5k
ZXJgXG4tIGB1bm1vdW50Q29tcG9uZW50QXROb2RlYFxuXG4jIyMgYHJlYWN0LWRvbS9zZXJ2ZXJg
XG5cbi0gYHJlbmRlclRvU3RyaW5nYFxuLSBgcmVuZGVyVG9TdGF0aWNNYXJrdXBgXG4iLAorICAi
cmVhZG1lRmlsZW5hbWUiOiAiUkVBRE1FLm1kIiwKKyAgInJlcG9zaXRvcnkiOiB7CisgICAgInR5
cGUiOiAiZ2l0IiwKKyAgICAidXJsIjogImdpdCtodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2sv
cmVhY3QuZ2l0IgorICB9LAorICAic2NyaXB0cyI6IHsKKyAgICAic3RhcnQiOiAibm9kZSBzZXJ2
ZXIuanMiCisgIH0sCisgICJ2ZXJzaW9uIjogIjE1LjQuMCIKK30KZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vc2VydmVyLmpzIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9zZXJ2ZXIuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTU5
Njc2MTA5ZGE4YTY4NmU1NDQ1YzdhZjBlN2YxOGM4MGI5YTE0MAotLS0gL2Rldi9udWxsCisrKyBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vc2VydmVyLmpzCkBAIC0w
LDAgKzEsMyBAQAorJ3VzZSBzdHJpY3QnOworCittb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4v
bGliL1JlYWN0RE9NU2VydmVyJyk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2Rl
X21vZHVsZXMvcmVhY3QvTElDRU5TRSBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9y
ZWFjdC9MSUNFTlNFCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkxYjhmNmY3NmZmMDJhMTUzNmEzNjNkYjNhN2ExY2Nl
NDE4YWYzYzIKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVs
ZXMvcmVhY3QvTElDRU5TRQpAQCAtMCwwICsxLDMxIEBACitCU0QgTGljZW5zZQorCitGb3IgUmVh
Y3Qgc29mdHdhcmUKKworQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMu
CitBbGwgcmlnaHRzIHJlc2VydmVkLgorCitSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAorYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0Ogor
CisgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMKKyAgIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorCisgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCisgICB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVu
dGF0aW9uCisgICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKworICogTmVpdGhlciB0aGUgbmFtZSBGYWNlYm9vayBub3IgdGhlIG5hbWVzIG9m
IGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8KKyAgIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljCisgICBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisKK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKK0FOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECitXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCitESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgor
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CitMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04KK0FOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCmRpZmYg
LS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QvUEFURU5UUyBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC9QQVRFTlRTCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlj
OWY4ZTg3YThmNDkwZmY4NjE2OTBlYzI5ZjNkMTllZTYyZTE2YTUKLS0tIC9kZXYvbnVsbAorKysg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QvUEFURU5UUwpAQCAtMCwwICsx
LDMzIEBACitBZGRpdGlvbmFsIEdyYW50IG9mIFBhdGVudCBSaWdodHMgVmVyc2lvbiAyCisKKyJT
b2Z0d2FyZSIgbWVhbnMgdGhlIFJlYWN0IHNvZnR3YXJlIGRpc3RyaWJ1dGVkIGJ5IEZhY2Vib29r
LCBJbmMuCisKK0ZhY2Vib29rLCBJbmMuICgiRmFjZWJvb2siKSBoZXJlYnkgZ3JhbnRzIHRvIGVh
Y2ggcmVjaXBpZW50IG9mIHRoZSBTb2Z0d2FyZQorKCJ5b3UiKSBhIHBlcnBldHVhbCwgd29ybGR3
aWRlLCByb3lhbHR5LWZyZWUsIG5vbi1leGNsdXNpdmUsIGlycmV2b2NhYmxlCisoc3ViamVjdCB0
byB0aGUgdGVybWluYXRpb24gcHJvdmlzaW9uIGJlbG93KSBsaWNlbnNlIHVuZGVyIGFueSBOZWNl
c3NhcnkKK0NsYWltcywgdG8gbWFrZSwgaGF2ZSBtYWRlLCB1c2UsIHNlbGwsIG9mZmVyIHRvIHNl
bGwsIGltcG9ydCwgYW5kIG90aGVyd2lzZQordHJhbnNmZXIgdGhlIFNvZnR3YXJlLiBGb3IgYXZv
aWRhbmNlIG9mIGRvdWJ0LCBubyBsaWNlbnNlIGlzIGdyYW50ZWQgdW5kZXIKK0ZhY2Vib29rJ3Mg
cmlnaHRzIGluIGFueSBwYXRlbnQgY2xhaW1zIHRoYXQgYXJlIGluZnJpbmdlZCBieSAoaSkgbW9k
aWZpY2F0aW9ucwordG8gdGhlIFNvZnR3YXJlIG1hZGUgYnkgeW91IG9yIGFueSB0aGlyZCBwYXJ0
eSBvciAoaWkpIHRoZSBTb2Z0d2FyZSBpbgorY29tYmluYXRpb24gd2l0aCBhbnkgc29mdHdhcmUg
b3Igb3RoZXIgdGVjaG5vbG9neS4KKworVGhlIGxpY2Vuc2UgZ3JhbnRlZCBoZXJldW5kZXIgd2ls
bCB0ZXJtaW5hdGUsIGF1dG9tYXRpY2FsbHkgYW5kIHdpdGhvdXQgbm90aWNlLAoraWYgeW91IChv
ciBhbnkgb2YgeW91ciBzdWJzaWRpYXJpZXMsIGNvcnBvcmF0ZSBhZmZpbGlhdGVzIG9yIGFnZW50
cykgaW5pdGlhdGUKK2RpcmVjdGx5IG9yIGluZGlyZWN0bHksIG9yIHRha2UgYSBkaXJlY3QgZmlu
YW5jaWFsIGludGVyZXN0IGluLCBhbnkgUGF0ZW50CitBc3NlcnRpb246IChpKSBhZ2FpbnN0IEZh
Y2Vib29rIG9yIGFueSBvZiBpdHMgc3Vic2lkaWFyaWVzIG9yIGNvcnBvcmF0ZQorYWZmaWxpYXRl
cywgKGlpKSBhZ2FpbnN0IGFueSBwYXJ0eSBpZiBzdWNoIFBhdGVudCBBc3NlcnRpb24gYXJpc2Vz
IGluIHdob2xlIG9yCitpbiBwYXJ0IGZyb20gYW55IHNvZnR3YXJlLCB0ZWNobm9sb2d5LCBwcm9k
dWN0IG9yIHNlcnZpY2Ugb2YgRmFjZWJvb2sgb3IgYW55IG9mCitpdHMgc3Vic2lkaWFyaWVzIG9y
IGNvcnBvcmF0ZSBhZmZpbGlhdGVzLCBvciAoaWlpKSBhZ2FpbnN0IGFueSBwYXJ0eSByZWxhdGlu
ZwordG8gdGhlIFNvZnR3YXJlLiBOb3R3aXRoc3RhbmRpbmcgdGhlIGZvcmVnb2luZywgaWYgRmFj
ZWJvb2sgb3IgYW55IG9mIGl0cworc3Vic2lkaWFyaWVzIG9yIGNvcnBvcmF0ZSBhZmZpbGlhdGVz
IGZpbGVzIGEgbGF3c3VpdCBhbGxlZ2luZyBwYXRlbnQKK2luZnJpbmdlbWVudCBhZ2FpbnN0IHlv
dSBpbiB0aGUgZmlyc3QgaW5zdGFuY2UsIGFuZCB5b3UgcmVzcG9uZCBieSBmaWxpbmcgYQorcGF0
ZW50IGluZnJpbmdlbWVudCBjb3VudGVyY2xhaW0gaW4gdGhhdCBsYXdzdWl0IGFnYWluc3QgdGhh
dCBwYXJ0eSB0aGF0IGlzCit1bnJlbGF0ZWQgdG8gdGhlIFNvZnR3YXJlLCB0aGUgbGljZW5zZSBn
cmFudGVkIGhlcmV1bmRlciB3aWxsIG5vdCB0ZXJtaW5hdGUKK3VuZGVyIHNlY3Rpb24gKGkpIG9m
IHRoaXMgcGFyYWdyYXBoIGR1ZSB0byBzdWNoIGNvdW50ZXJjbGFpbS4KKworQSAiTmVjZXNzYXJ5
IENsYWltIiBpcyBhIGNsYWltIG9mIGEgcGF0ZW50IG93bmVkIGJ5IEZhY2Vib29rIHRoYXQgaXMK
K25lY2Vzc2FyaWx5IGluZnJpbmdlZCBieSB0aGUgU29mdHdhcmUgc3RhbmRpbmcgYWxvbmUuCisK
K0EgIlBhdGVudCBBc3NlcnRpb24iIGlzIGFueSBsYXdzdWl0IG9yIG90aGVyIGFjdGlvbiBhbGxl
Z2luZyBkaXJlY3QsIGluZGlyZWN0LAorb3IgY29udHJpYnV0b3J5IGluZnJpbmdlbWVudCBvciBp
bmR1Y2VtZW50IHRvIGluZnJpbmdlIGFueSBwYXRlbnQsIGluY2x1ZGluZyBhCitjcm9zcy1jbGFp
bSBvciBjb3VudGVyY2xhaW0uCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21v
ZHVsZXMvcmVhY3QvUkVBRE1FLm1kIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3Jl
YWN0L1JFQURNRS5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ODc1NGU3MjRiNmY3OGRjMTE4NTlmNTc1ZTllYWYx
Njc0ZWFmNDcxCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1
bGVzL3JlYWN0L1JFQURNRS5tZApAQCAtMCwwICsxLDIzIEBACisjIHJlYWN0CisKK0FuIG5wbSBw
YWNrYWdlIHRvIGdldCB5b3UgaW1tZWRpYXRlIGFjY2VzcyB0byBbUmVhY3RdKGh0dHBzOi8vZmFj
ZWJvb2suZ2l0aHViLmlvL3JlYWN0LyksCit3aXRob3V0IGFsc28gcmVxdWlyaW5nIHRoZSBKU1gg
dHJhbnNmb3JtZXIuIFRoaXMgaXMgZXNwZWNpYWxseSB1c2VmdWwgZm9yIGNhc2VzIHdoZXJlIHlv
dQord2FudCB0byBbYGJyb3dzZXJpZnlgXShodHRwczovL2dpdGh1Yi5jb20vc3Vic3RhY2svbm9k
ZS1icm93c2VyaWZ5KSB5b3VyIG1vZHVsZSB1c2luZworYFJlYWN0YC4KKworKipOb3RlOioqIGJ5
IGRlZmF1bHQsIFJlYWN0IHdpbGwgYmUgaW4gZGV2ZWxvcG1lbnQgbW9kZS4gVGhlIGRldmVsb3Bt
ZW50IHZlcnNpb24gaW5jbHVkZXMgZXh0cmEgd2FybmluZ3MgYWJvdXQgY29tbW9uIG1pc3Rha2Vz
LCB3aGVyZWFzIHRoZSBwcm9kdWN0aW9uIHZlcnNpb24gaW5jbHVkZXMgZXh0cmEgcGVyZm9ybWFu
Y2Ugb3B0aW1pemF0aW9ucyBhbmQgc3RyaXBzIGFsbCBlcnJvciBtZXNzYWdlcy4KKworVG8gdXNl
IFJlYWN0IGluIHByb2R1Y3Rpb24gbW9kZSwgc2V0IHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBg
Tk9ERV9FTlZgIHRvIGBwcm9kdWN0aW9uYC4gQSBtaW5pZmllciB0aGF0IHBlcmZvcm1zIGRlYWQt
Y29kZSBlbGltaW5hdGlvbiBzdWNoIGFzIFtVZ2xpZnlKU10oaHR0cHM6Ly9naXRodWIuY29tL21p
c2hvby9VZ2xpZnlKUzIpIGlzIHJlY29tbWVuZGVkIHRvIGNvbXBsZXRlbHkgcmVtb3ZlIHRoZSBl
eHRyYSBjb2RlIHByZXNlbnQgaW4gZGV2ZWxvcG1lbnQgbW9kZS4KKworIyMgRXhhbXBsZSBVc2Fn
ZQorCitgYGBqcwordmFyIFJlYWN0ID0gcmVxdWlyZSgncmVhY3QnKTsKKworLy8gQWRkb25zIGFy
ZSBpbiBzZXBhcmF0ZSBwYWNrYWdlczoKK3ZhciBjcmVhdGVGcmFnbWVudCA9IHJlcXVpcmUoJ3Jl
YWN0LWFkZG9ucy1jcmVhdGUtZnJhZ21lbnQnKTsKK3ZhciBpbW11dGFiaWxpdHlIZWxwZXJzID0g
cmVxdWlyZSgncmVhY3QtYWRkb25zLXVwZGF0ZScpOwordmFyIENTU1RyYW5zaXRpb25Hcm91cCA9
IHJlcXVpcmUoJ3JlYWN0LWFkZG9ucy1jc3MtdHJhbnNpdGlvbi1ncm91cCcpOworYGBgCisKK0Zv
ciBhIGNvbXBsZXRlIGxpc3Qgb2YgYWRkb25zIHZpc2l0IHRoZSBbYWRkb25zIGRvY3VtZW50YXRp
b24gcGFnZV0oaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy9hZGRvbnMuaHRt
bCkuCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QvZGlz
dC9yZWFjdC13aXRoLWFkZG9ucy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9y
ZWFjdC9kaXN0L3JlYWN0LXdpdGgtYWRkb25zLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk5YjVjNjY1ZWM1YjE3
MTg2MDk2OTU3NzJmYjBkYTlkMDM4YjY2MjQKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QvZGlzdC9yZWFjdC13aXRoLWFkZG9ucy5qcwpAQCAt
MCwwICsxLDU0MDAgQEAKKyAvKioKKyAgKiBSZWFjdCAod2l0aCBhZGRvbnMpIHYxNS40LjAKKyAg
Ki8KKyhmdW5jdGlvbihmKXtpZih0eXBlb2YgZXhwb3J0cz09PSJvYmplY3QiJiZ0eXBlb2YgbW9k
dWxlIT09InVuZGVmaW5lZCIpe21vZHVsZS5leHBvcnRzPWYoKX1lbHNlIGlmKHR5cGVvZiBkZWZp
bmU9PT0iZnVuY3Rpb24iJiZkZWZpbmUuYW1kKXtkZWZpbmUoW10sZil9ZWxzZXt2YXIgZztpZih0
eXBlb2Ygd2luZG93IT09InVuZGVmaW5lZCIpe2c9d2luZG93fWVsc2UgaWYodHlwZW9mIGdsb2Jh
bCE9PSJ1bmRlZmluZWQiKXtnPWdsb2JhbH1lbHNlIGlmKHR5cGVvZiBzZWxmIT09InVuZGVmaW5l
ZCIpe2c9c2VsZn1lbHNle2c9dGhpc31nLlJlYWN0ID0gZigpfX0pKGZ1bmN0aW9uKCl7dmFyIGRl
ZmluZSxtb2R1bGUsZXhwb3J0cztyZXR1cm4gKGZ1bmN0aW9uIGUodCxuLHIpe2Z1bmN0aW9uIHMo
byx1KXtpZighbltvXSl7aWYoIXRbb10pe3ZhciBhPXR5cGVvZiByZXF1aXJlPT0iZnVuY3Rpb24i
JiZyZXF1aXJlO2lmKCF1JiZhKXJldHVybiBhKG8sITApO2lmKGkpcmV0dXJuIGkobywhMCk7dmFy
IGY9bmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIrbysiJyIpO3Rocm93IGYuY29kZT0i
TU9EVUxFX05PVF9GT1VORCIsZn12YXIgbD1uW29dPXtleHBvcnRzOnt9fTt0W29dWzBdLmNhbGwo
bC5leHBvcnRzLGZ1bmN0aW9uKGUpe3ZhciBuPXRbb11bMV1bZV07cmV0dXJuIHMobj9uOmUpfSxs
LGwuZXhwb3J0cyxlLHQsbixyKX1yZXR1cm4gbltvXS5leHBvcnRzfXZhciBpPXR5cGVvZiByZXF1
aXJlPT0iZnVuY3Rpb24iJiZyZXF1aXJlO2Zvcih2YXIgbz0wO288ci5sZW5ndGg7bysrKXMocltv
XSk7cmV0dXJuIHN9KSh7MTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioK
KyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl
IEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50Cisg
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgRXhlY3V0
aW9uRW52aXJvbm1lbnQgPSBfZGVyZXFfKDQzKTsKKworLyoqCisgKiBHZW5lcmF0ZSBhIG1hcHBp
bmcgb2Ygc3RhbmRhcmQgdmVuZG9yIHByZWZpeGVzIHVzaW5nIHRoZSBkZWZpbmVkIHN0eWxlIHBy
b3BlcnR5IGFuZCBldmVudCBuYW1lLgorICoKKyAqIEBwYXJhbSB7c3RyaW5nfSBzdHlsZVByb3AK
KyAqIEBwYXJhbSB7c3RyaW5nfSBldmVudE5hbWUKKyAqIEByZXR1cm5zIHtvYmplY3R9CisgKi8K
K2Z1bmN0aW9uIG1ha2VQcmVmaXhNYXAoc3R5bGVQcm9wLCBldmVudE5hbWUpIHsKKyAgdmFyIHBy
ZWZpeGVzID0ge307CisKKyAgcHJlZml4ZXNbc3R5bGVQcm9wLnRvTG93ZXJDYXNlKCldID0gZXZl
bnROYW1lLnRvTG93ZXJDYXNlKCk7CisgIHByZWZpeGVzWydXZWJraXQnICsgc3R5bGVQcm9wXSA9
ICd3ZWJraXQnICsgZXZlbnROYW1lOworICBwcmVmaXhlc1snTW96JyArIHN0eWxlUHJvcF0gPSAn
bW96JyArIGV2ZW50TmFtZTsKKyAgcHJlZml4ZXNbJ21zJyArIHN0eWxlUHJvcF0gPSAnTVMnICsg
ZXZlbnROYW1lOworICBwcmVmaXhlc1snTycgKyBzdHlsZVByb3BdID0gJ28nICsgZXZlbnROYW1l
LnRvTG93ZXJDYXNlKCk7CisKKyAgcmV0dXJuIHByZWZpeGVzOworfQorCisvKioKKyAqIEEgbGlz
dCBvZiBldmVudCBuYW1lcyB0byBhIGNvbmZpZ3VyYWJsZSBsaXN0IG9mIHZlbmRvciBwcmVmaXhl
cy4KKyAqLwordmFyIHZlbmRvclByZWZpeGVzID0geworICBhbmltYXRpb25lbmQ6IG1ha2VQcmVm
aXhNYXAoJ0FuaW1hdGlvbicsICdBbmltYXRpb25FbmQnKSwKKyAgYW5pbWF0aW9uaXRlcmF0aW9u
OiBtYWtlUHJlZml4TWFwKCdBbmltYXRpb24nLCAnQW5pbWF0aW9uSXRlcmF0aW9uJyksCisgIGFu
aW1hdGlvbnN0YXJ0OiBtYWtlUHJlZml4TWFwKCdBbmltYXRpb24nLCAnQW5pbWF0aW9uU3RhcnQn
KSwKKyAgdHJhbnNpdGlvbmVuZDogbWFrZVByZWZpeE1hcCgnVHJhbnNpdGlvbicsICdUcmFuc2l0
aW9uRW5kJykKK307CisKKy8qKgorICogRXZlbnQgbmFtZXMgdGhhdCBoYXZlIGFscmVhZHkgYmVl
biBkZXRlY3RlZCBhbmQgcHJlZml4ZWQgKGlmIGFwcGxpY2FibGUpLgorICovCit2YXIgcHJlZml4
ZWRFdmVudE5hbWVzID0ge307CisKKy8qKgorICogRWxlbWVudCB0byBjaGVjayBmb3IgcHJlZml4
ZXMgb24uCisgKi8KK3ZhciBzdHlsZSA9IHt9OworCisvKioKKyAqIEJvb3RzdHJhcCBpZiBhIERP
TSBleGlzdHMuCisgKi8KK2lmIChFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00pIHsKKyAg
c3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKS5zdHlsZTsKKworICAvLyBPbiBz
b21lIHBsYXRmb3JtcywgaW4gcGFydGljdWxhciBzb21lIHJlbGVhc2VzIG9mIEFuZHJvaWQgNC54
LAorICAvLyB0aGUgdW4tcHJlZml4ZWQgImFuaW1hdGlvbiIgYW5kICJ0cmFuc2l0aW9uIiBwcm9w
ZXJ0aWVzIGFyZSBkZWZpbmVkIG9uIHRoZQorICAvLyBzdHlsZSBvYmplY3QgYnV0IHRoZSBldmVu
dHMgdGhhdCBmaXJlIHdpbGwgc3RpbGwgYmUgcHJlZml4ZWQsIHNvIHdlIG5lZWQKKyAgLy8gdG8g
Y2hlY2sgaWYgdGhlIHVuLXByZWZpeGVkIGV2ZW50cyBhcmUgdXNhYmxlLCBhbmQgaWYgbm90IHJl
bW92ZSB0aGVtIGZyb20gdGhlIG1hcC4KKyAgaWYgKCEoJ0FuaW1hdGlvbkV2ZW50JyBpbiB3aW5k
b3cpKSB7CisgICAgZGVsZXRlIHZlbmRvclByZWZpeGVzLmFuaW1hdGlvbmVuZC5hbmltYXRpb247
CisgICAgZGVsZXRlIHZlbmRvclByZWZpeGVzLmFuaW1hdGlvbml0ZXJhdGlvbi5hbmltYXRpb247
CisgICAgZGVsZXRlIHZlbmRvclByZWZpeGVzLmFuaW1hdGlvbnN0YXJ0LmFuaW1hdGlvbjsKKyAg
fQorCisgIC8vIFNhbWUgYXMgYWJvdmUKKyAgaWYgKCEoJ1RyYW5zaXRpb25FdmVudCcgaW4gd2lu
ZG93KSkgeworICAgIGRlbGV0ZSB2ZW5kb3JQcmVmaXhlcy50cmFuc2l0aW9uZW5kLnRyYW5zaXRp
b247CisgIH0KK30KKworLyoqCisgKiBBdHRlbXB0cyB0byBkZXRlcm1pbmUgdGhlIGNvcnJlY3Qg
dmVuZG9yIHByZWZpeGVkIGV2ZW50IG5hbWUuCisgKgorICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50
TmFtZQorICogQHJldHVybnMge3N0cmluZ30KKyAqLworZnVuY3Rpb24gZ2V0VmVuZG9yUHJlZml4
ZWRFdmVudE5hbWUoZXZlbnROYW1lKSB7CisgIGlmIChwcmVmaXhlZEV2ZW50TmFtZXNbZXZlbnRO
YW1lXSkgeworICAgIHJldHVybiBwcmVmaXhlZEV2ZW50TmFtZXNbZXZlbnROYW1lXTsKKyAgfSBl
bHNlIGlmICghdmVuZG9yUHJlZml4ZXNbZXZlbnROYW1lXSkgeworICAgIHJldHVybiBldmVudE5h
bWU7CisgIH0KKworICB2YXIgcHJlZml4TWFwID0gdmVuZG9yUHJlZml4ZXNbZXZlbnROYW1lXTsK
KworICBmb3IgKHZhciBzdHlsZVByb3AgaW4gcHJlZml4TWFwKSB7CisgICAgaWYgKHByZWZpeE1h
cC5oYXNPd25Qcm9wZXJ0eShzdHlsZVByb3ApICYmIHN0eWxlUHJvcCBpbiBzdHlsZSkgeworICAg
ICAgcmV0dXJuIHByZWZpeGVkRXZlbnROYW1lc1tldmVudE5hbWVdID0gcHJlZml4TWFwW3N0eWxl
UHJvcF07CisgICAgfQorICB9CisKKyAgcmV0dXJuICcnOworfQorCittb2R1bGUuZXhwb3J0cyA9
IGdldFZlbmRvclByZWZpeGVkRXZlbnROYW1lOworfSx7IjQzIjo0M31dLDI6W2Z1bmN0aW9uKF9k
ZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBG
YWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJj
ZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0
aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2Ug
dHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91
bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogCisg
Ki8KKworJ3VzZSBzdHJpY3QnOworCisvKioKKyAqIEVzY2FwZSBhbmQgd3JhcCBrZXkgc28gaXQg
aXMgc2FmZSB0byB1c2UgYXMgYSByZWFjdGlkCisgKgorICogQHBhcmFtIHtzdHJpbmd9IGtleSB0
byBiZSBlc2NhcGVkLgorICogQHJldHVybiB7c3RyaW5nfSB0aGUgZXNjYXBlZCBrZXkuCisgKi8K
KworZnVuY3Rpb24gZXNjYXBlKGtleSkgeworICB2YXIgZXNjYXBlUmVnZXggPSAvWz06XS9nOwor
ICB2YXIgZXNjYXBlckxvb2t1cCA9IHsKKyAgICAnPSc6ICc9MCcsCisgICAgJzonOiAnPTInCisg
IH07CisgIHZhciBlc2NhcGVkU3RyaW5nID0gKCcnICsga2V5KS5yZXBsYWNlKGVzY2FwZVJlZ2V4
LCBmdW5jdGlvbiAobWF0Y2gpIHsKKyAgICByZXR1cm4gZXNjYXBlckxvb2t1cFttYXRjaF07Cisg
IH0pOworCisgIHJldHVybiAnJCcgKyBlc2NhcGVkU3RyaW5nOworfQorCisvKioKKyAqIFVuZXNj
YXBlIGFuZCB1bndyYXAga2V5IGZvciBodW1hbi1yZWFkYWJsZSBkaXNwbGF5CisgKgorICogQHBh
cmFtIHtzdHJpbmd9IGtleSB0byB1bmVzY2FwZS4KKyAqIEByZXR1cm4ge3N0cmluZ30gdGhlIHVu
ZXNjYXBlZCBrZXkuCisgKi8KK2Z1bmN0aW9uIHVuZXNjYXBlKGtleSkgeworICB2YXIgdW5lc2Nh
cGVSZWdleCA9IC8oPTB8PTIpL2c7CisgIHZhciB1bmVzY2FwZXJMb29rdXAgPSB7CisgICAgJz0w
JzogJz0nLAorICAgICc9Mic6ICc6JworICB9OworICB2YXIga2V5U3Vic3RyaW5nID0ga2V5WzBd
ID09PSAnLicgJiYga2V5WzFdID09PSAnJCcgPyBrZXkuc3Vic3RyaW5nKDIpIDoga2V5LnN1YnN0
cmluZygxKTsKKworICByZXR1cm4gKCcnICsga2V5U3Vic3RyaW5nKS5yZXBsYWNlKHVuZXNjYXBl
UmVnZXgsIGZ1bmN0aW9uIChtYXRjaCkgeworICAgIHJldHVybiB1bmVzY2FwZXJMb29rdXBbbWF0
Y2hdOworICB9KTsKK30KKwordmFyIEtleUVzY2FwZVV0aWxzID0geworICBlc2NhcGU6IGVzY2Fw
ZSwKKyAgdW5lc2NhcGU6IHVuZXNjYXBlCit9OworCittb2R1bGUuZXhwb3J0cyA9IEtleUVzY2Fw
ZVV0aWxzOworfSx7fV0sMzpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioK
KyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl
IEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50Cisg
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgUmVhY3RM
aW5rID0gX2RlcmVxXygyMCk7Cit2YXIgUmVhY3RTdGF0ZVNldHRlcnMgPSBfZGVyZXFfKDI2KTsK
KworLyoqCisgKiBBIHNpbXBsZSBtaXhpbiBhcm91bmQgUmVhY3RMaW5rLmZvclN0YXRlKCkuCisg
KiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90d28td2F5LWJpbmRp
bmctaGVscGVycy5odG1sCisgKi8KK3ZhciBMaW5rZWRTdGF0ZU1peGluID0geworICAvKioKKyAg
ICogQ3JlYXRlIGEgUmVhY3RMaW5rIHRoYXQncyBsaW5rZWQgdG8gcGFydCBvZiB0aGlzIGNvbXBv
bmVudCdzIHN0YXRlLiBUaGUKKyAgICogUmVhY3RMaW5rIHdpbGwgaGF2ZSB0aGUgY3VycmVudCB2
YWx1ZSBvZiB0aGlzLnN0YXRlW2tleV0gYW5kIHdpbGwgY2FsbAorICAgKiBzZXRTdGF0ZSgpIHdo
ZW4gYSBjaGFuZ2UgaXMgcmVxdWVzdGVkLgorICAgKgorICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5
IHN0YXRlIGtleSB0byB1cGRhdGUuCisgICAqIEByZXR1cm4ge1JlYWN0TGlua30gUmVhY3RMaW5r
IGluc3RhbmNlIGxpbmtpbmcgdG8gdGhlIHN0YXRlLgorICAgKi8KKyAgbGlua1N0YXRlOiBmdW5j
dGlvbiAoa2V5KSB7CisgICAgcmV0dXJuIG5ldyBSZWFjdExpbmsodGhpcy5zdGF0ZVtrZXldLCBS
ZWFjdFN0YXRlU2V0dGVycy5jcmVhdGVTdGF0ZUtleVNldHRlcih0aGlzLCBrZXkpKTsKKyAgfQor
fTsKKworbW9kdWxlLmV4cG9ydHMgPSBMaW5rZWRTdGF0ZU1peGluOworfSx7IjIwIjoyMCwiMjYi
OjI2fV0sNDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHly
aWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS4KKyAqCisgKiAKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBfcHJvZEludmFy
aWFudCA9IF9kZXJlcV8oMzgpOworCit2YXIgaW52YXJpYW50ID0gX2RlcmVxXyg0Nik7CisKKy8q
KgorICogU3RhdGljIHBvb2xlcnMuIFNldmVyYWwgY3VzdG9tIHZlcnNpb25zIGZvciBlYWNoIHBv
dGVudGlhbCBudW1iZXIgb2YKKyAqIGFyZ3VtZW50cy4gQSBjb21wbGV0ZWx5IGdlbmVyaWMgcG9v
bGVyIGlzIGVhc3kgdG8gaW1wbGVtZW50LCBidXQgd291bGQKKyAqIHJlcXVpcmUgYWNjZXNzaW5n
IHRoZSBgYXJndW1lbnRzYCBvYmplY3QuIEluIGVhY2ggb2YgdGhlc2UsIGB0aGlzYCByZWZlcnMg
dG8KKyAqIHRoZSBDbGFzcyBpdHNlbGYsIG5vdCBhbiBpbnN0YW5jZS4gSWYgYW55IG90aGVycyBh
cmUgbmVlZGVkLCBzaW1wbHkgYWRkIHRoZW0KKyAqIGhlcmUsIG9yIGluIHRoZWlyIG93biBmaWxl
cy4KKyAqLwordmFyIG9uZUFyZ3VtZW50UG9vbGVyID0gZnVuY3Rpb24gKGNvcHlGaWVsZHNGcm9t
KSB7CisgIHZhciBLbGFzcyA9IHRoaXM7CisgIGlmIChLbGFzcy5pbnN0YW5jZVBvb2wubGVuZ3Ro
KSB7CisgICAgdmFyIGluc3RhbmNlID0gS2xhc3MuaW5zdGFuY2VQb29sLnBvcCgpOworICAgIEts
YXNzLmNhbGwoaW5zdGFuY2UsIGNvcHlGaWVsZHNGcm9tKTsKKyAgICByZXR1cm4gaW5zdGFuY2U7
CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIG5ldyBLbGFzcyhjb3B5RmllbGRzRnJvbSk7CisgIH0K
K307CisKK3ZhciB0d29Bcmd1bWVudFBvb2xlciA9IGZ1bmN0aW9uIChhMSwgYTIpIHsKKyAgdmFy
IEtsYXNzID0gdGhpczsKKyAgaWYgKEtsYXNzLmluc3RhbmNlUG9vbC5sZW5ndGgpIHsKKyAgICB2
YXIgaW5zdGFuY2UgPSBLbGFzcy5pbnN0YW5jZVBvb2wucG9wKCk7CisgICAgS2xhc3MuY2FsbChp
bnN0YW5jZSwgYTEsIGEyKTsKKyAgICByZXR1cm4gaW5zdGFuY2U7CisgIH0gZWxzZSB7CisgICAg
cmV0dXJuIG5ldyBLbGFzcyhhMSwgYTIpOworICB9Cit9OworCit2YXIgdGhyZWVBcmd1bWVudFBv
b2xlciA9IGZ1bmN0aW9uIChhMSwgYTIsIGEzKSB7CisgIHZhciBLbGFzcyA9IHRoaXM7CisgIGlm
IChLbGFzcy5pbnN0YW5jZVBvb2wubGVuZ3RoKSB7CisgICAgdmFyIGluc3RhbmNlID0gS2xhc3Mu
aW5zdGFuY2VQb29sLnBvcCgpOworICAgIEtsYXNzLmNhbGwoaW5zdGFuY2UsIGExLCBhMiwgYTMp
OworICAgIHJldHVybiBpbnN0YW5jZTsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gbmV3IEtsYXNz
KGExLCBhMiwgYTMpOworICB9Cit9OworCit2YXIgZm91ckFyZ3VtZW50UG9vbGVyID0gZnVuY3Rp
b24gKGExLCBhMiwgYTMsIGE0KSB7CisgIHZhciBLbGFzcyA9IHRoaXM7CisgIGlmIChLbGFzcy5p
bnN0YW5jZVBvb2wubGVuZ3RoKSB7CisgICAgdmFyIGluc3RhbmNlID0gS2xhc3MuaW5zdGFuY2VQ
b29sLnBvcCgpOworICAgIEtsYXNzLmNhbGwoaW5zdGFuY2UsIGExLCBhMiwgYTMsIGE0KTsKKyAg
ICByZXR1cm4gaW5zdGFuY2U7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIG5ldyBLbGFzcyhhMSwg
YTIsIGEzLCBhNCk7CisgIH0KK307CisKK3ZhciBmaXZlQXJndW1lbnRQb29sZXIgPSBmdW5jdGlv
biAoYTEsIGEyLCBhMywgYTQsIGE1KSB7CisgIHZhciBLbGFzcyA9IHRoaXM7CisgIGlmIChLbGFz
cy5pbnN0YW5jZVBvb2wubGVuZ3RoKSB7CisgICAgdmFyIGluc3RhbmNlID0gS2xhc3MuaW5zdGFu
Y2VQb29sLnBvcCgpOworICAgIEtsYXNzLmNhbGwoaW5zdGFuY2UsIGExLCBhMiwgYTMsIGE0LCBh
NSk7CisgICAgcmV0dXJuIGluc3RhbmNlOworICB9IGVsc2UgeworICAgIHJldHVybiBuZXcgS2xh
c3MoYTEsIGEyLCBhMywgYTQsIGE1KTsKKyAgfQorfTsKKwordmFyIHN0YW5kYXJkUmVsZWFzZXIg
PSBmdW5jdGlvbiAoaW5zdGFuY2UpIHsKKyAgdmFyIEtsYXNzID0gdGhpczsKKyAgIShpbnN0YW5j
ZSBpbnN0YW5jZW9mIEtsYXNzKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGlu
dmFyaWFudChmYWxzZSwgJ1RyeWluZyB0byByZWxlYXNlIGFuIGluc3RhbmNlIGludG8gYSBwb29s
IG9mIGEgZGlmZmVyZW50IHR5cGUuJykgOiBfcHJvZEludmFyaWFudCgnMjUnKSA6IHZvaWQgMDsK
KyAgaW5zdGFuY2UuZGVzdHJ1Y3RvcigpOworICBpZiAoS2xhc3MuaW5zdGFuY2VQb29sLmxlbmd0
aCA8IEtsYXNzLnBvb2xTaXplKSB7CisgICAgS2xhc3MuaW5zdGFuY2VQb29sLnB1c2goaW5zdGFu
Y2UpOworICB9Cit9OworCit2YXIgREVGQVVMVF9QT09MX1NJWkUgPSAxMDsKK3ZhciBERUZBVUxU
X1BPT0xFUiA9IG9uZUFyZ3VtZW50UG9vbGVyOworCisvKioKKyAqIEF1Z21lbnRzIGBDb3B5Q29u
c3RydWN0b3JgIHRvIGJlIGEgcG9vbGFibGUgY2xhc3MsIGF1Z21lbnRpbmcgb25seSB0aGUgY2xh
c3MKKyAqIGl0c2VsZiAoc3RhdGljYWxseSkgbm90IGFkZGluZyBhbnkgcHJvdG90eXBpY2FsIGZp
ZWxkcy4gQW55IENvcHlDb25zdHJ1Y3RvcgorICogeW91IGdpdmUgdGhpcyBtYXkgaGF2ZSBhIGBw
b29sU2l6ZWAgcHJvcGVydHksIGFuZCB3aWxsIGxvb2sgZm9yIGEKKyAqIHByb3RvdHlwaWNhbCBg
ZGVzdHJ1Y3RvcmAgb24gaW5zdGFuY2VzLgorICoKKyAqIEBwYXJhbSB7RnVuY3Rpb259IENvcHlD
b25zdHJ1Y3RvciBDb25zdHJ1Y3RvciB0aGF0IGNhbiBiZSB1c2VkIHRvIHJlc2V0LgorICogQHBh
cmFtIHtGdW5jdGlvbn0gcG9vbGVyIEN1c3RvbWl6YWJsZSBwb29sZXIuCisgKi8KK3ZhciBhZGRQ
b29saW5nVG8gPSBmdW5jdGlvbiAoQ29weUNvbnN0cnVjdG9yLCBwb29sZXIpIHsKKyAgLy8gQ2Fz
dGluZyBhcyBhbnkgc28gdGhhdCBmbG93IGlnbm9yZXMgdGhlIGFjdHVhbCBpbXBsZW1lbnRhdGlv
biBhbmQgdHJ1c3RzCisgIC8vIGl0IHRvIG1hdGNoIHRoZSB0eXBlIHdlIGRlY2xhcmVkCisgIHZh
ciBOZXdLbGFzcyA9IENvcHlDb25zdHJ1Y3RvcjsKKyAgTmV3S2xhc3MuaW5zdGFuY2VQb29sID0g
W107CisgIE5ld0tsYXNzLmdldFBvb2xlZCA9IHBvb2xlciB8fCBERUZBVUxUX1BPT0xFUjsKKyAg
aWYgKCFOZXdLbGFzcy5wb29sU2l6ZSkgeworICAgIE5ld0tsYXNzLnBvb2xTaXplID0gREVGQVVM
VF9QT09MX1NJWkU7CisgIH0KKyAgTmV3S2xhc3MucmVsZWFzZSA9IHN0YW5kYXJkUmVsZWFzZXI7
CisgIHJldHVybiBOZXdLbGFzczsKK307CisKK3ZhciBQb29sZWRDbGFzcyA9IHsKKyAgYWRkUG9v
bGluZ1RvOiBhZGRQb29saW5nVG8sCisgIG9uZUFyZ3VtZW50UG9vbGVyOiBvbmVBcmd1bWVudFBv
b2xlciwKKyAgdHdvQXJndW1lbnRQb29sZXI6IHR3b0FyZ3VtZW50UG9vbGVyLAorICB0aHJlZUFy
Z3VtZW50UG9vbGVyOiB0aHJlZUFyZ3VtZW50UG9vbGVyLAorICBmb3VyQXJndW1lbnRQb29sZXI6
IGZvdXJBcmd1bWVudFBvb2xlciwKKyAgZml2ZUFyZ3VtZW50UG9vbGVyOiBmaXZlQXJndW1lbnRQ
b29sZXIKK307CisKK21vZHVsZS5leHBvcnRzID0gUG9vbGVkQ2xhc3M7Cit9LHsiMzgiOjM4LCI0
NiI6NDZ9XSw1OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29w
eXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0
eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBfYXNzaWduID0gX2Rl
cmVxXyg0OSk7CisKK3ZhciBSZWFjdENoaWxkcmVuID0gX2RlcmVxXyg5KTsKK3ZhciBSZWFjdENv
bXBvbmVudCA9IF9kZXJlcV8oMTEpOwordmFyIFJlYWN0UHVyZUNvbXBvbmVudCA9IF9kZXJlcV8o
MjUpOwordmFyIFJlYWN0Q2xhc3MgPSBfZGVyZXFfKDEwKTsKK3ZhciBSZWFjdERPTUZhY3Rvcmll
cyA9IF9kZXJlcV8oMTUpOwordmFyIFJlYWN0RWxlbWVudCA9IF9kZXJlcV8oMTYpOwordmFyIFJl
YWN0UHJvcFR5cGVzID0gX2RlcmVxXygyMyk7Cit2YXIgUmVhY3RWZXJzaW9uID0gX2RlcmVxXygz
MCk7CisKK3ZhciBvbmx5Q2hpbGQgPSBfZGVyZXFfKDM3KTsKK3ZhciB3YXJuaW5nID0gX2RlcmVx
Xyg0OCk7CisKK3ZhciBjcmVhdGVFbGVtZW50ID0gUmVhY3RFbGVtZW50LmNyZWF0ZUVsZW1lbnQ7
Cit2YXIgY3JlYXRlRmFjdG9yeSA9IFJlYWN0RWxlbWVudC5jcmVhdGVGYWN0b3J5OwordmFyIGNs
b25lRWxlbWVudCA9IFJlYWN0RWxlbWVudC5jbG9uZUVsZW1lbnQ7CisKK2lmICgiZGV2ZWxvcG1l
bnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgdmFyIFJlYWN0RWxlbWVudFZhbGlkYXRvciA9IF9k
ZXJlcV8oMTgpOworICBjcmVhdGVFbGVtZW50ID0gUmVhY3RFbGVtZW50VmFsaWRhdG9yLmNyZWF0
ZUVsZW1lbnQ7CisgIGNyZWF0ZUZhY3RvcnkgPSBSZWFjdEVsZW1lbnRWYWxpZGF0b3IuY3JlYXRl
RmFjdG9yeTsKKyAgY2xvbmVFbGVtZW50ID0gUmVhY3RFbGVtZW50VmFsaWRhdG9yLmNsb25lRWxl
bWVudDsKK30KKwordmFyIF9fc3ByZWFkID0gX2Fzc2lnbjsKKworaWYgKCJkZXZlbG9wbWVudCIg
IT09ICdwcm9kdWN0aW9uJykgeworICB2YXIgd2FybmVkID0gZmFsc2U7CisgIF9fc3ByZWFkID0g
ZnVuY3Rpb24gKCkgeworICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5p
bmcod2FybmVkLCAnUmVhY3QuX19zcHJlYWQgaXMgZGVwcmVjYXRlZCBhbmQgc2hvdWxkIG5vdCBi
ZSB1c2VkLiBVc2UgJyArICdPYmplY3QuYXNzaWduIGRpcmVjdGx5IG9yIGFub3RoZXIgaGVscGVy
IGZ1bmN0aW9uIHdpdGggc2ltaWxhciAnICsgJ3NlbWFudGljcy4gWW91IG1heSBiZSBzZWVpbmcg
dGhpcyB3YXJuaW5nIGR1ZSB0byB5b3VyIGNvbXBpbGVyLiAnICsgJ1NlZSBodHRwczovL2ZiLm1l
L3JlYWN0LXNwcmVhZC1kZXByZWNhdGlvbiBmb3IgbW9yZSBkZXRhaWxzLicpIDogdm9pZCAwOwor
ICAgIHdhcm5lZCA9IHRydWU7CisgICAgcmV0dXJuIF9hc3NpZ24uYXBwbHkobnVsbCwgYXJndW1l
bnRzKTsKKyAgfTsKK30KKwordmFyIFJlYWN0ID0geworCisgIC8vIE1vZGVybgorCisgIENoaWxk
cmVuOiB7CisgICAgbWFwOiBSZWFjdENoaWxkcmVuLm1hcCwKKyAgICBmb3JFYWNoOiBSZWFjdENo
aWxkcmVuLmZvckVhY2gsCisgICAgY291bnQ6IFJlYWN0Q2hpbGRyZW4uY291bnQsCisgICAgdG9B
cnJheTogUmVhY3RDaGlsZHJlbi50b0FycmF5LAorICAgIG9ubHk6IG9ubHlDaGlsZAorICB9LAor
CisgIENvbXBvbmVudDogUmVhY3RDb21wb25lbnQsCisgIFB1cmVDb21wb25lbnQ6IFJlYWN0UHVy
ZUNvbXBvbmVudCwKKworICBjcmVhdGVFbGVtZW50OiBjcmVhdGVFbGVtZW50LAorICBjbG9uZUVs
ZW1lbnQ6IGNsb25lRWxlbWVudCwKKyAgaXNWYWxpZEVsZW1lbnQ6IFJlYWN0RWxlbWVudC5pc1Zh
bGlkRWxlbWVudCwKKworICAvLyBDbGFzc2ljCisKKyAgUHJvcFR5cGVzOiBSZWFjdFByb3BUeXBl
cywKKyAgY3JlYXRlQ2xhc3M6IFJlYWN0Q2xhc3MuY3JlYXRlQ2xhc3MsCisgIGNyZWF0ZUZhY3Rv
cnk6IGNyZWF0ZUZhY3RvcnksCisgIGNyZWF0ZU1peGluOiBmdW5jdGlvbiAobWl4aW4pIHsKKyAg
ICAvLyBDdXJyZW50bHkgYSBub29wLiBXaWxsIGJlIHVzZWQgdG8gdmFsaWRhdGUgYW5kIHRyYWNl
IG1peGlucy4KKyAgICByZXR1cm4gbWl4aW47CisgIH0sCisKKyAgLy8gVGhpcyBsb29rcyBET00g
c3BlY2lmaWMgYnV0IHRoZXNlIGFyZSBhY3R1YWxseSBpc29tb3JwaGljIGhlbHBlcnMKKyAgLy8g
c2luY2UgdGhleSBhcmUganVzdCBnZW5lcmF0aW5nIERPTSBzdHJpbmdzLgorICBET006IFJlYWN0
RE9NRmFjdG9yaWVzLAorCisgIHZlcnNpb246IFJlYWN0VmVyc2lvbiwKKworICAvLyBEZXByZWNh
dGVkIGhvb2sgZm9yIEpTWCBzcHJlYWQsIGRvbid0IHVzZSB0aGlzIGZvciBhbnl0aGluZy4KKyAg
X19zcHJlYWQ6IF9fc3ByZWFkCit9OworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0OworfSx7IjEw
IjoxMCwiMTEiOjExLCIxNSI6MTUsIjE2IjoxNiwiMTgiOjE4LCIyMyI6MjMsIjI1IjoyNSwiMzAi
OjMwLCIzNyI6MzcsIjQ4Ijo0OCwiNDkiOjQ5LCI5Ijo5fV0sNjpbZnVuY3Rpb24oX2RlcmVxXyxt
b2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29r
LCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUg
aXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICog
TElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBB
biBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0
aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworLyogZ2xv
YmFscyBSZWFjdERPTSAqLworCisndXNlIHN0cmljdCc7CisKK2V4cG9ydHMuZ2V0UmVhY3RET00g
PSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiBSZWFjdERPTTsKK307CisKK2V4cG9ydHMuZ2V0UmVh
Y3RJbnN0YW5jZU1hcCA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuIFJlYWN0RE9NLl9fU0VDUkVU
X0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELlJlYWN0SW5zdGFuY2VN
YXA7Cit9OworCitpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgIGV4cG9y
dHMuZ2V0UmVhY3RQZXJmID0gZnVuY3Rpb24gKCkgeworICAgIHJldHVybiBSZWFjdERPTS5fX1NF
Q1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRC5SZWFjdFBlcmY7
CisgIH07CisKKyAgZXhwb3J0cy5nZXRSZWFjdFRlc3RVdGlscyA9IGZ1bmN0aW9uICgpIHsKKyAg
ICByZXR1cm4gUmVhY3RET00uX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJ
TExfQkVfRklSRUQuUmVhY3RUZXN0VXRpbHM7CisgIH07Cit9Cit9LHt9XSw3OltmdW5jdGlvbihf
ZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwg
RmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3Vy
Y2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4g
dGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNl
IHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLwor
CisndXNlIHN0cmljdCc7CisKK3ZhciBfYXNzaWduID0gX2RlcmVxXyg0OSk7CisKK2Z1bmN0aW9u
IF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2Ug
aW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNh
bGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIik7IH0gfQorCitmdW5jdGlvbiBfcG9zc2libGVDb25z
dHJ1Y3RvclJldHVybihzZWxmLCBjYWxsKSB7IGlmICghc2VsZikgeyB0aHJvdyBuZXcgUmVmZXJl
bmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBi
ZWVuIGNhbGxlZCIpOyB9IHJldHVybiBjYWxsICYmICh0eXBlb2YgY2FsbCA9PT0gIm9iamVjdCIg
fHwgdHlwZW9mIGNhbGwgPT09ICJmdW5jdGlvbiIpID8gY2FsbCA6IHNlbGY7IH0KKworZnVuY3Rp
b24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFz
cyAhPT0gImZ1bmN0aW9uIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBl
RXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9u
LCBub3QgIiArIHR5cGVvZiBzdXBlckNsYXNzKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmpl
Y3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0
b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCBlbnVtZXJhYmxlOiBmYWxzZSwgd3JpdGFibGU6IHRydWUs
IGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgT2JqZWN0LnNldFByb3Rv
dHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKSA6IHN1
YkNsYXNzLl9fcHJvdG9fXyA9IHN1cGVyQ2xhc3M7IH0KKwordmFyIFJlYWN0ID0gX2RlcmVxXyg1
KTsKKwordmFyIFJlYWN0VHJhbnNpdGlvbkdyb3VwID0gX2RlcmVxXygyOSk7Cit2YXIgUmVhY3RD
U1NUcmFuc2l0aW9uR3JvdXBDaGlsZCA9IF9kZXJlcV8oOCk7CisKK2Z1bmN0aW9uIGNyZWF0ZVRy
YW5zaXRpb25UaW1lb3V0UHJvcFZhbGlkYXRvcih0cmFuc2l0aW9uVHlwZSkgeworICB2YXIgdGlt
ZW91dFByb3BOYW1lID0gJ3RyYW5zaXRpb24nICsgdHJhbnNpdGlvblR5cGUgKyAnVGltZW91dCc7
CisgIHZhciBlbmFibGVkUHJvcE5hbWUgPSAndHJhbnNpdGlvbicgKyB0cmFuc2l0aW9uVHlwZTsK
KworICByZXR1cm4gZnVuY3Rpb24gKHByb3BzKSB7CisgICAgLy8gSWYgdGhlIHRyYW5zaXRpb24g
aXMgZW5hYmxlZAorICAgIGlmIChwcm9wc1tlbmFibGVkUHJvcE5hbWVdKSB7CisgICAgICAvLyBJ
ZiBubyB0aW1lb3V0IGR1cmF0aW9uIGlzIHByb3ZpZGVkCisgICAgICBpZiAocHJvcHNbdGltZW91
dFByb3BOYW1lXSA9PSBudWxsKSB7CisgICAgICAgIHJldHVybiBuZXcgRXJyb3IodGltZW91dFBy
b3BOYW1lICsgJyB3YXNuXCd0IHN1cHBsaWVkIHRvIFJlYWN0Q1NTVHJhbnNpdGlvbkdyb3VwOiAn
ICsgJ3RoaXMgY2FuIGNhdXNlIHVucmVsaWFibGUgYW5pbWF0aW9ucyBhbmQgd29uXCd0IGJlIHN1
cHBvcnRlZCBpbiAnICsgJ2EgZnV0dXJlIHZlcnNpb24gb2YgUmVhY3QuIFNlZSAnICsgJ2h0dHBz
Oi8vZmIubWUvcmVhY3QtYW5pbWF0aW9uLXRyYW5zaXRpb24tZ3JvdXAtdGltZW91dCBmb3IgbW9y
ZSAnICsgJ2luZm9ybWF0aW9uLicpOworCisgICAgICAgIC8vIElmIHRoZSBkdXJhdGlvbiBpc24n
dCBhIG51bWJlcgorICAgICAgfSBlbHNlIGlmICh0eXBlb2YgcHJvcHNbdGltZW91dFByb3BOYW1l
XSAhPT0gJ251bWJlcicpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBFcnJvcih0aW1lb3V0UHJvcE5h
bWUgKyAnIG11c3QgYmUgYSBudW1iZXIgKGluIG1pbGxpc2Vjb25kcyknKTsKKyAgICAgIH0KKyAg
ICB9CisgIH07Cit9CisKKy8qKgorICogQW4gZWFzeSB3YXkgdG8gcGVyZm9ybSBDU1MgdHJhbnNp
dGlvbnMgYW5kIGFuaW1hdGlvbnMgd2hlbiBhIFJlYWN0IGNvbXBvbmVudAorICogZW50ZXJzIG9y
IGxlYXZlcyB0aGUgRE9NLgorICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0
L2RvY3MvYW5pbWF0aW9uLmh0bWwjaGlnaC1sZXZlbC1hcGktcmVhY3Rjc3N0cmFuc2l0aW9uZ3Jv
dXAKKyAqLworCit2YXIgUmVhY3RDU1NUcmFuc2l0aW9uR3JvdXAgPSBmdW5jdGlvbiAoX1JlYWN0
JENvbXBvbmVudCkgeworICBfaW5oZXJpdHMoUmVhY3RDU1NUcmFuc2l0aW9uR3JvdXAsIF9SZWFj
dCRDb21wb25lbnQpOworCisgIGZ1bmN0aW9uIFJlYWN0Q1NTVHJhbnNpdGlvbkdyb3VwKCkgewor
ICAgIHZhciBfdGVtcCwgX3RoaXMsIF9yZXQ7CisKKyAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywg
UmVhY3RDU1NUcmFuc2l0aW9uR3JvdXApOworCisgICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50
cy5sZW5ndGgsIGFyZ3MgPSBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5
KyspIHsKKyAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07CisgICAgfQorCisgICAg
cmV0dXJuIF9yZXQgPSAoX3RlbXAgPSAoX3RoaXMgPSBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVy
bih0aGlzLCBfUmVhY3QkQ29tcG9uZW50LmNhbGwuYXBwbHkoX1JlYWN0JENvbXBvbmVudCwgW3Ro
aXNdLmNvbmNhdChhcmdzKSkpLCBfdGhpcyksIF90aGlzLl93cmFwQ2hpbGQgPSBmdW5jdGlvbiAo
Y2hpbGQpIHsKKyAgICAgIC8vIFdlIG5lZWQgdG8gcHJvdmlkZSB0aGlzIGNoaWxkRmFjdG9yeSBz
byB0aGF0CisgICAgICAvLyBSZWFjdENTU1RyYW5zaXRpb25Hcm91cENoaWxkIGNhbiByZWNlaXZl
IHVwZGF0ZXMgdG8gbmFtZSwgZW50ZXIsIGFuZAorICAgICAgLy8gbGVhdmUgd2hpbGUgaXQgaXMg
bGVhdmluZy4KKyAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0Q1NTVHJhbnNp
dGlvbkdyb3VwQ2hpbGQsIHsKKyAgICAgICAgbmFtZTogX3RoaXMucHJvcHMudHJhbnNpdGlvbk5h
bWUsCisgICAgICAgIGFwcGVhcjogX3RoaXMucHJvcHMudHJhbnNpdGlvbkFwcGVhciwKKyAgICAg
ICAgZW50ZXI6IF90aGlzLnByb3BzLnRyYW5zaXRpb25FbnRlciwKKyAgICAgICAgbGVhdmU6IF90
aGlzLnByb3BzLnRyYW5zaXRpb25MZWF2ZSwKKyAgICAgICAgYXBwZWFyVGltZW91dDogX3RoaXMu
cHJvcHMudHJhbnNpdGlvbkFwcGVhclRpbWVvdXQsCisgICAgICAgIGVudGVyVGltZW91dDogX3Ro
aXMucHJvcHMudHJhbnNpdGlvbkVudGVyVGltZW91dCwKKyAgICAgICAgbGVhdmVUaW1lb3V0OiBf
dGhpcy5wcm9wcy50cmFuc2l0aW9uTGVhdmVUaW1lb3V0CisgICAgICB9LCBjaGlsZCk7CisgICAg
fSwgX3RlbXApLCBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihfdGhpcywgX3JldCk7CisgIH0K
KworICBSZWFjdENTU1RyYW5zaXRpb25Hcm91cC5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24g
cmVuZGVyKCkgeworICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0VHJhbnNpdGlv
bkdyb3VwLCBfYXNzaWduKHt9LCB0aGlzLnByb3BzLCB7IGNoaWxkRmFjdG9yeTogdGhpcy5fd3Jh
cENoaWxkIH0pKTsKKyAgfTsKKworICByZXR1cm4gUmVhY3RDU1NUcmFuc2l0aW9uR3JvdXA7Cit9
KFJlYWN0LkNvbXBvbmVudCk7CisKK1JlYWN0Q1NTVHJhbnNpdGlvbkdyb3VwLmRpc3BsYXlOYW1l
ID0gJ1JlYWN0Q1NTVHJhbnNpdGlvbkdyb3VwJzsKK1JlYWN0Q1NTVHJhbnNpdGlvbkdyb3VwLnBy
b3BUeXBlcyA9IHsKKyAgdHJhbnNpdGlvbk5hbWU6IFJlYWN0Q1NTVHJhbnNpdGlvbkdyb3VwQ2hp
bGQucHJvcFR5cGVzLm5hbWUsCisKKyAgdHJhbnNpdGlvbkFwcGVhcjogUmVhY3QuUHJvcFR5cGVz
LmJvb2wsCisgIHRyYW5zaXRpb25FbnRlcjogUmVhY3QuUHJvcFR5cGVzLmJvb2wsCisgIHRyYW5z
aXRpb25MZWF2ZTogUmVhY3QuUHJvcFR5cGVzLmJvb2wsCisgIHRyYW5zaXRpb25BcHBlYXJUaW1l
b3V0OiBjcmVhdGVUcmFuc2l0aW9uVGltZW91dFByb3BWYWxpZGF0b3IoJ0FwcGVhcicpLAorICB0
cmFuc2l0aW9uRW50ZXJUaW1lb3V0OiBjcmVhdGVUcmFuc2l0aW9uVGltZW91dFByb3BWYWxpZGF0
b3IoJ0VudGVyJyksCisgIHRyYW5zaXRpb25MZWF2ZVRpbWVvdXQ6IGNyZWF0ZVRyYW5zaXRpb25U
aW1lb3V0UHJvcFZhbGlkYXRvcignTGVhdmUnKQorfTsKK1JlYWN0Q1NTVHJhbnNpdGlvbkdyb3Vw
LmRlZmF1bHRQcm9wcyA9IHsKKyAgdHJhbnNpdGlvbkFwcGVhcjogZmFsc2UsCisgIHRyYW5zaXRp
b25FbnRlcjogdHJ1ZSwKKyAgdHJhbnNpdGlvbkxlYXZlOiB0cnVlCit9OworCisKK21vZHVsZS5l
eHBvcnRzID0gUmVhY3RDU1NUcmFuc2l0aW9uR3JvdXA7Cit9LHsiMjkiOjI5LCI0OSI6NDksIjUi
OjUsIjgiOjh9XSw4OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICog
Q29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
ZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9m
IHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNh
bWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBSZWFjdCA9IF9k
ZXJlcV8oNSk7Cit2YXIgUmVhY3RBZGRvbnNET01EZXBlbmRlbmNpZXMgPSBfZGVyZXFfKDYpOwor
Cit2YXIgQ1NTQ29yZSA9IF9kZXJlcV8oNDIpOwordmFyIFJlYWN0VHJhbnNpdGlvbkV2ZW50cyA9
IF9kZXJlcV8oMjgpOworCit2YXIgb25seUNoaWxkID0gX2RlcmVxXygzNyk7CisKK3ZhciBUSUNL
ID0gMTc7CisKK3ZhciBSZWFjdENTU1RyYW5zaXRpb25Hcm91cENoaWxkID0gUmVhY3QuY3JlYXRl
Q2xhc3MoeworICBkaXNwbGF5TmFtZTogJ1JlYWN0Q1NTVHJhbnNpdGlvbkdyb3VwQ2hpbGQnLAor
CisgIHByb3BUeXBlczogeworICAgIG5hbWU6IFJlYWN0LlByb3BUeXBlcy5vbmVPZlR5cGUoW1Jl
YWN0LlByb3BUeXBlcy5zdHJpbmcsIFJlYWN0LlByb3BUeXBlcy5zaGFwZSh7CisgICAgICBlbnRl
cjogUmVhY3QuUHJvcFR5cGVzLnN0cmluZywKKyAgICAgIGxlYXZlOiBSZWFjdC5Qcm9wVHlwZXMu
c3RyaW5nLAorICAgICAgYWN0aXZlOiBSZWFjdC5Qcm9wVHlwZXMuc3RyaW5nCisgICAgfSksIFJl
YWN0LlByb3BUeXBlcy5zaGFwZSh7CisgICAgICBlbnRlcjogUmVhY3QuUHJvcFR5cGVzLnN0cmlu
ZywKKyAgICAgIGVudGVyQWN0aXZlOiBSZWFjdC5Qcm9wVHlwZXMuc3RyaW5nLAorICAgICAgbGVh
dmU6IFJlYWN0LlByb3BUeXBlcy5zdHJpbmcsCisgICAgICBsZWF2ZUFjdGl2ZTogUmVhY3QuUHJv
cFR5cGVzLnN0cmluZywKKyAgICAgIGFwcGVhcjogUmVhY3QuUHJvcFR5cGVzLnN0cmluZywKKyAg
ICAgIGFwcGVhckFjdGl2ZTogUmVhY3QuUHJvcFR5cGVzLnN0cmluZworICAgIH0pXSkuaXNSZXF1
aXJlZCwKKworICAgIC8vIE9uY2Ugd2UgcmVxdWlyZSB0aW1lb3V0cyB0byBiZSBzcGVjaWZpZWQs
IHdlIGNhbiByZW1vdmUgdGhlCisgICAgLy8gYm9vbGVhbiBmbGFncyAoYXBwZWFyIGV0Yy4pIGFu
ZCBqdXN0IGFjY2VwdCBhIG51bWJlcgorICAgIC8vIG9yIGEgYm9vbCBmb3IgdGhlIHRpbWVvdXQg
ZmxhZ3MgKGFwcGVhclRpbWVvdXQgZXRjLikKKyAgICBhcHBlYXI6IFJlYWN0LlByb3BUeXBlcy5i
b29sLAorICAgIGVudGVyOiBSZWFjdC5Qcm9wVHlwZXMuYm9vbCwKKyAgICBsZWF2ZTogUmVhY3Qu
UHJvcFR5cGVzLmJvb2wsCisgICAgYXBwZWFyVGltZW91dDogUmVhY3QuUHJvcFR5cGVzLm51bWJl
ciwKKyAgICBlbnRlclRpbWVvdXQ6IFJlYWN0LlByb3BUeXBlcy5udW1iZXIsCisgICAgbGVhdmVU
aW1lb3V0OiBSZWFjdC5Qcm9wVHlwZXMubnVtYmVyCisgIH0sCisKKyAgdHJhbnNpdGlvbjogZnVu
Y3Rpb24gKGFuaW1hdGlvblR5cGUsIGZpbmlzaENhbGxiYWNrLCB1c2VyU3BlY2lmaWVkRGVsYXkp
IHsKKyAgICB2YXIgbm9kZSA9IFJlYWN0QWRkb25zRE9NRGVwZW5kZW5jaWVzLmdldFJlYWN0RE9N
KCkuZmluZERPTU5vZGUodGhpcyk7CisKKyAgICBpZiAoIW5vZGUpIHsKKyAgICAgIGlmIChmaW5p
c2hDYWxsYmFjaykgeworICAgICAgICBmaW5pc2hDYWxsYmFjaygpOworICAgICAgfQorICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIHZhciBjbGFzc05hbWUgPSB0aGlzLnByb3BzLm5hbWVbYW5p
bWF0aW9uVHlwZV0gfHwgdGhpcy5wcm9wcy5uYW1lICsgJy0nICsgYW5pbWF0aW9uVHlwZTsKKyAg
ICB2YXIgYWN0aXZlQ2xhc3NOYW1lID0gdGhpcy5wcm9wcy5uYW1lW2FuaW1hdGlvblR5cGUgKyAn
QWN0aXZlJ10gfHwgY2xhc3NOYW1lICsgJy1hY3RpdmUnOworICAgIHZhciB0aW1lb3V0ID0gbnVs
bDsKKworICAgIHZhciBlbmRMaXN0ZW5lciA9IGZ1bmN0aW9uIChlKSB7CisgICAgICBpZiAoZSAm
JiBlLnRhcmdldCAhPT0gbm9kZSkgeworICAgICAgICByZXR1cm47CisgICAgICB9CisKKyAgICAg
IGNsZWFyVGltZW91dCh0aW1lb3V0KTsKKworICAgICAgQ1NTQ29yZS5yZW1vdmVDbGFzcyhub2Rl
LCBjbGFzc05hbWUpOworICAgICAgQ1NTQ29yZS5yZW1vdmVDbGFzcyhub2RlLCBhY3RpdmVDbGFz
c05hbWUpOworCisgICAgICBSZWFjdFRyYW5zaXRpb25FdmVudHMucmVtb3ZlRW5kRXZlbnRMaXN0
ZW5lcihub2RlLCBlbmRMaXN0ZW5lcik7CisKKyAgICAgIC8vIFVzdWFsbHkgdGhpcyBvcHRpb25h
bCBjYWxsYmFjayBpcyB1c2VkIGZvciBpbmZvcm1pbmcgYW4gb3duZXIgb2YKKyAgICAgIC8vIGEg
bGVhdmUgYW5pbWF0aW9uIGFuZCB0ZWxsaW5nIGl0IHRvIHJlbW92ZSB0aGUgY2hpbGQuCisgICAg
ICBpZiAoZmluaXNoQ2FsbGJhY2spIHsKKyAgICAgICAgZmluaXNoQ2FsbGJhY2soKTsKKyAgICAg
IH0KKyAgICB9OworCisgICAgQ1NTQ29yZS5hZGRDbGFzcyhub2RlLCBjbGFzc05hbWUpOworCisg
ICAgLy8gTmVlZCB0byBkbyB0aGlzIHRvIGFjdHVhbGx5IHRyaWdnZXIgYSB0cmFuc2l0aW9uLgor
ICAgIHRoaXMucXVldWVDbGFzc0FuZE5vZGUoYWN0aXZlQ2xhc3NOYW1lLCBub2RlKTsKKworICAg
IC8vIElmIHRoZSB1c2VyIHNwZWNpZmllZCBhIHRpbWVvdXQgZGVsYXkuCisgICAgaWYgKHVzZXJT
cGVjaWZpZWREZWxheSkgeworICAgICAgLy8gQ2xlYW4tdXAgdGhlIGFuaW1hdGlvbiBhZnRlciB0
aGUgc3BlY2lmaWVkIGRlbGF5CisgICAgICB0aW1lb3V0ID0gc2V0VGltZW91dChlbmRMaXN0ZW5l
ciwgdXNlclNwZWNpZmllZERlbGF5KTsKKyAgICAgIHRoaXMudHJhbnNpdGlvblRpbWVvdXRzLnB1
c2godGltZW91dCk7CisgICAgfSBlbHNlIHsKKyAgICAgIC8vIERFUFJFQ0FURUQ6IHRoaXMgbGlz
dGVuZXIgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHZlcnNpb24gb2YgcmVhY3QKKyAgICAg
IFJlYWN0VHJhbnNpdGlvbkV2ZW50cy5hZGRFbmRFdmVudExpc3RlbmVyKG5vZGUsIGVuZExpc3Rl
bmVyKTsKKyAgICB9CisgIH0sCisKKyAgcXVldWVDbGFzc0FuZE5vZGU6IGZ1bmN0aW9uIChjbGFz
c05hbWUsIG5vZGUpIHsKKyAgICB0aGlzLmNsYXNzTmFtZUFuZE5vZGVRdWV1ZS5wdXNoKHsKKyAg
ICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lLAorICAgICAgbm9kZTogbm9kZQorICAgIH0pOworCisg
ICAgaWYgKCF0aGlzLnRpbWVvdXQpIHsKKyAgICAgIHRoaXMudGltZW91dCA9IHNldFRpbWVvdXQo
dGhpcy5mbHVzaENsYXNzTmFtZUFuZE5vZGVRdWV1ZSwgVElDSyk7CisgICAgfQorICB9LAorCisg
IGZsdXNoQ2xhc3NOYW1lQW5kTm9kZVF1ZXVlOiBmdW5jdGlvbiAoKSB7CisgICAgaWYgKHRoaXMu
aXNNb3VudGVkKCkpIHsKKyAgICAgIHRoaXMuY2xhc3NOYW1lQW5kTm9kZVF1ZXVlLmZvckVhY2go
ZnVuY3Rpb24gKG9iaikgeworICAgICAgICBDU1NDb3JlLmFkZENsYXNzKG9iai5ub2RlLCBvYmou
Y2xhc3NOYW1lKTsKKyAgICAgIH0pOworICAgIH0KKyAgICB0aGlzLmNsYXNzTmFtZUFuZE5vZGVR
dWV1ZS5sZW5ndGggPSAwOworICAgIHRoaXMudGltZW91dCA9IG51bGw7CisgIH0sCisKKyAgY29t
cG9uZW50V2lsbE1vdW50OiBmdW5jdGlvbiAoKSB7CisgICAgdGhpcy5jbGFzc05hbWVBbmROb2Rl
UXVldWUgPSBbXTsKKyAgICB0aGlzLnRyYW5zaXRpb25UaW1lb3V0cyA9IFtdOworICB9LAorCisg
IGNvbXBvbmVudFdpbGxVbm1vdW50OiBmdW5jdGlvbiAoKSB7CisgICAgaWYgKHRoaXMudGltZW91
dCkgeworICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dCk7CisgICAgfQorICAgIHRoaXMu
dHJhbnNpdGlvblRpbWVvdXRzLmZvckVhY2goZnVuY3Rpb24gKHRpbWVvdXQpIHsKKyAgICAgIGNs
ZWFyVGltZW91dCh0aW1lb3V0KTsKKyAgICB9KTsKKworICAgIHRoaXMuY2xhc3NOYW1lQW5kTm9k
ZVF1ZXVlLmxlbmd0aCA9IDA7CisgIH0sCisKKyAgY29tcG9uZW50V2lsbEFwcGVhcjogZnVuY3Rp
b24gKGRvbmUpIHsKKyAgICBpZiAodGhpcy5wcm9wcy5hcHBlYXIpIHsKKyAgICAgIHRoaXMudHJh
bnNpdGlvbignYXBwZWFyJywgZG9uZSwgdGhpcy5wcm9wcy5hcHBlYXJUaW1lb3V0KTsKKyAgICB9
IGVsc2UgeworICAgICAgZG9uZSgpOworICAgIH0KKyAgfSwKKworICBjb21wb25lbnRXaWxsRW50
ZXI6IGZ1bmN0aW9uIChkb25lKSB7CisgICAgaWYgKHRoaXMucHJvcHMuZW50ZXIpIHsKKyAgICAg
IHRoaXMudHJhbnNpdGlvbignZW50ZXInLCBkb25lLCB0aGlzLnByb3BzLmVudGVyVGltZW91dCk7
CisgICAgfSBlbHNlIHsKKyAgICAgIGRvbmUoKTsKKyAgICB9CisgIH0sCisKKyAgY29tcG9uZW50
V2lsbExlYXZlOiBmdW5jdGlvbiAoZG9uZSkgeworICAgIGlmICh0aGlzLnByb3BzLmxlYXZlKSB7
CisgICAgICB0aGlzLnRyYW5zaXRpb24oJ2xlYXZlJywgZG9uZSwgdGhpcy5wcm9wcy5sZWF2ZVRp
bWVvdXQpOworICAgIH0gZWxzZSB7CisgICAgICBkb25lKCk7CisgICAgfQorICB9LAorCisgIHJl
bmRlcjogZnVuY3Rpb24gKCkgeworICAgIHJldHVybiBvbmx5Q2hpbGQodGhpcy5wcm9wcy5jaGls
ZHJlbik7CisgIH0KK30pOworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0Q1NTVHJhbnNpdGlvbkdy
b3VwQ2hpbGQ7Cit9LHsiMjgiOjI4LCIzNyI6MzcsIjQyIjo0MiwiNSI6NSwiNiI6Nn1dLDk6W2Z1
bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1w
cmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBU
aGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBm
b3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBj
YW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisg
KgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIFBvb2xlZENsYXNzID0gX2RlcmVxXyg0KTsK
K3ZhciBSZWFjdEVsZW1lbnQgPSBfZGVyZXFfKDE2KTsKKwordmFyIGVtcHR5RnVuY3Rpb24gPSBf
ZGVyZXFfKDQ0KTsKK3ZhciB0cmF2ZXJzZUFsbENoaWxkcmVuID0gX2RlcmVxXyg0MCk7CisKK3Zh
ciB0d29Bcmd1bWVudFBvb2xlciA9IFBvb2xlZENsYXNzLnR3b0FyZ3VtZW50UG9vbGVyOwordmFy
IGZvdXJBcmd1bWVudFBvb2xlciA9IFBvb2xlZENsYXNzLmZvdXJBcmd1bWVudFBvb2xlcjsKKwor
dmFyIHVzZXJQcm92aWRlZEtleUVzY2FwZVJlZ2V4ID0gL1wvKy9nOworZnVuY3Rpb24gZXNjYXBl
VXNlclByb3ZpZGVkS2V5KHRleHQpIHsKKyAgcmV0dXJuICgnJyArIHRleHQpLnJlcGxhY2UodXNl
clByb3ZpZGVkS2V5RXNjYXBlUmVnZXgsICckJi8nKTsKK30KKworLyoqCisgKiBQb29sZWRDbGFz
cyByZXByZXNlbnRpbmcgdGhlIGJvb2trZWVwaW5nIGFzc29jaWF0ZWQgd2l0aCBwZXJmb3JtaW5n
IGEgY2hpbGQKKyAqIHRyYXZlcnNhbC4gQWxsb3dzIGF2b2lkaW5nIGJpbmRpbmcgY2FsbGJhY2tz
LgorICoKKyAqIEBjb25zdHJ1Y3RvciBGb3JFYWNoQm9va0tlZXBpbmcKKyAqIEBwYXJhbSB7IWZ1
bmN0aW9ufSBmb3JFYWNoRnVuY3Rpb24gRnVuY3Rpb24gdG8gcGVyZm9ybSB0cmF2ZXJzYWwgd2l0
aC4KKyAqIEBwYXJhbSB7Pyp9IGZvckVhY2hDb250ZXh0IENvbnRleHQgdG8gcGVyZm9ybSBjb250
ZXh0IHdpdGguCisgKi8KK2Z1bmN0aW9uIEZvckVhY2hCb29rS2VlcGluZyhmb3JFYWNoRnVuY3Rp
b24sIGZvckVhY2hDb250ZXh0KSB7CisgIHRoaXMuZnVuYyA9IGZvckVhY2hGdW5jdGlvbjsKKyAg
dGhpcy5jb250ZXh0ID0gZm9yRWFjaENvbnRleHQ7CisgIHRoaXMuY291bnQgPSAwOworfQorRm9y
RWFjaEJvb2tLZWVwaW5nLnByb3RvdHlwZS5kZXN0cnVjdG9yID0gZnVuY3Rpb24gKCkgeworICB0
aGlzLmZ1bmMgPSBudWxsOworICB0aGlzLmNvbnRleHQgPSBudWxsOworICB0aGlzLmNvdW50ID0g
MDsKK307CitQb29sZWRDbGFzcy5hZGRQb29saW5nVG8oRm9yRWFjaEJvb2tLZWVwaW5nLCB0d29B
cmd1bWVudFBvb2xlcik7CisKK2Z1bmN0aW9uIGZvckVhY2hTaW5nbGVDaGlsZChib29rS2VlcGlu
ZywgY2hpbGQsIG5hbWUpIHsKKyAgdmFyIGZ1bmMgPSBib29rS2VlcGluZy5mdW5jLAorICAgICAg
Y29udGV4dCA9IGJvb2tLZWVwaW5nLmNvbnRleHQ7CisKKyAgZnVuYy5jYWxsKGNvbnRleHQsIGNo
aWxkLCBib29rS2VlcGluZy5jb3VudCsrKTsKK30KKworLyoqCisgKiBJdGVyYXRlcyB0aHJvdWdo
IGNoaWxkcmVuIHRoYXQgYXJlIHR5cGljYWxseSBzcGVjaWZpZWQgYXMgYHByb3BzLmNoaWxkcmVu
YC4KKyAqCisgKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3At
bGV2ZWwtYXBpLmh0bWwjcmVhY3QuY2hpbGRyZW4uZm9yZWFjaAorICoKKyAqIFRoZSBwcm92aWRl
ZCBmb3JFYWNoRnVuYyhjaGlsZCwgaW5kZXgpIHdpbGwgYmUgY2FsbGVkIGZvciBlYWNoCisgKiBs
ZWFmIGNoaWxkLgorICoKKyAqIEBwYXJhbSB7Pyp9IGNoaWxkcmVuIENoaWxkcmVuIHRyZWUgY29u
dGFpbmVyLgorICogQHBhcmFtIHtmdW5jdGlvbigqLCBpbnQpfSBmb3JFYWNoRnVuYworICogQHBh
cmFtIHsqfSBmb3JFYWNoQ29udGV4dCBDb250ZXh0IGZvciBmb3JFYWNoQ29udGV4dC4KKyAqLwor
ZnVuY3Rpb24gZm9yRWFjaENoaWxkcmVuKGNoaWxkcmVuLCBmb3JFYWNoRnVuYywgZm9yRWFjaENv
bnRleHQpIHsKKyAgaWYgKGNoaWxkcmVuID09IG51bGwpIHsKKyAgICByZXR1cm4gY2hpbGRyZW47
CisgIH0KKyAgdmFyIHRyYXZlcnNlQ29udGV4dCA9IEZvckVhY2hCb29rS2VlcGluZy5nZXRQb29s
ZWQoZm9yRWFjaEZ1bmMsIGZvckVhY2hDb250ZXh0KTsKKyAgdHJhdmVyc2VBbGxDaGlsZHJlbihj
aGlsZHJlbiwgZm9yRWFjaFNpbmdsZUNoaWxkLCB0cmF2ZXJzZUNvbnRleHQpOworICBGb3JFYWNo
Qm9va0tlZXBpbmcucmVsZWFzZSh0cmF2ZXJzZUNvbnRleHQpOworfQorCisvKioKKyAqIFBvb2xl
ZENsYXNzIHJlcHJlc2VudGluZyB0aGUgYm9va2tlZXBpbmcgYXNzb2NpYXRlZCB3aXRoIHBlcmZv
cm1pbmcgYSBjaGlsZAorICogbWFwcGluZy4gQWxsb3dzIGF2b2lkaW5nIGJpbmRpbmcgY2FsbGJh
Y2tzLgorICoKKyAqIEBjb25zdHJ1Y3RvciBNYXBCb29rS2VlcGluZworICogQHBhcmFtIHshKn0g
bWFwUmVzdWx0IE9iamVjdCBjb250YWluaW5nIHRoZSBvcmRlcmVkIG1hcCBvZiByZXN1bHRzLgor
ICogQHBhcmFtIHshZnVuY3Rpb259IG1hcEZ1bmN0aW9uIEZ1bmN0aW9uIHRvIHBlcmZvcm0gbWFw
cGluZyB3aXRoLgorICogQHBhcmFtIHs/Kn0gbWFwQ29udGV4dCBDb250ZXh0IHRvIHBlcmZvcm0g
bWFwcGluZyB3aXRoLgorICovCitmdW5jdGlvbiBNYXBCb29rS2VlcGluZyhtYXBSZXN1bHQsIGtl
eVByZWZpeCwgbWFwRnVuY3Rpb24sIG1hcENvbnRleHQpIHsKKyAgdGhpcy5yZXN1bHQgPSBtYXBS
ZXN1bHQ7CisgIHRoaXMua2V5UHJlZml4ID0ga2V5UHJlZml4OworICB0aGlzLmZ1bmMgPSBtYXBG
dW5jdGlvbjsKKyAgdGhpcy5jb250ZXh0ID0gbWFwQ29udGV4dDsKKyAgdGhpcy5jb3VudCA9IDA7
Cit9CitNYXBCb29rS2VlcGluZy5wcm90b3R5cGUuZGVzdHJ1Y3RvciA9IGZ1bmN0aW9uICgpIHsK
KyAgdGhpcy5yZXN1bHQgPSBudWxsOworICB0aGlzLmtleVByZWZpeCA9IG51bGw7CisgIHRoaXMu
ZnVuYyA9IG51bGw7CisgIHRoaXMuY29udGV4dCA9IG51bGw7CisgIHRoaXMuY291bnQgPSAwOwor
fTsKK1Bvb2xlZENsYXNzLmFkZFBvb2xpbmdUbyhNYXBCb29rS2VlcGluZywgZm91ckFyZ3VtZW50
UG9vbGVyKTsKKworZnVuY3Rpb24gbWFwU2luZ2xlQ2hpbGRJbnRvQ29udGV4dChib29rS2VlcGlu
ZywgY2hpbGQsIGNoaWxkS2V5KSB7CisgIHZhciByZXN1bHQgPSBib29rS2VlcGluZy5yZXN1bHQs
CisgICAgICBrZXlQcmVmaXggPSBib29rS2VlcGluZy5rZXlQcmVmaXgsCisgICAgICBmdW5jID0g
Ym9va0tlZXBpbmcuZnVuYywKKyAgICAgIGNvbnRleHQgPSBib29rS2VlcGluZy5jb250ZXh0Owor
CisKKyAgdmFyIG1hcHBlZENoaWxkID0gZnVuYy5jYWxsKGNvbnRleHQsIGNoaWxkLCBib29rS2Vl
cGluZy5jb3VudCsrKTsKKyAgaWYgKEFycmF5LmlzQXJyYXkobWFwcGVkQ2hpbGQpKSB7CisgICAg
bWFwSW50b1dpdGhLZXlQcmVmaXhJbnRlcm5hbChtYXBwZWRDaGlsZCwgcmVzdWx0LCBjaGlsZEtl
eSwgZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc0FyZ3VtZW50KTsKKyAgfSBlbHNlIGlmIChtYXBw
ZWRDaGlsZCAhPSBudWxsKSB7CisgICAgaWYgKFJlYWN0RWxlbWVudC5pc1ZhbGlkRWxlbWVudCht
YXBwZWRDaGlsZCkpIHsKKyAgICAgIG1hcHBlZENoaWxkID0gUmVhY3RFbGVtZW50LmNsb25lQW5k
UmVwbGFjZUtleShtYXBwZWRDaGlsZCwKKyAgICAgIC8vIEtlZXAgYm90aCB0aGUgKG1hcHBlZCkg
YW5kIG9sZCBrZXlzIGlmIHRoZXkgZGlmZmVyLCBqdXN0IGFzCisgICAgICAvLyB0cmF2ZXJzZUFs
bENoaWxkcmVuIHVzZWQgdG8gZG8gZm9yIG9iamVjdHMgYXMgY2hpbGRyZW4KKyAgICAgIGtleVBy
ZWZpeCArIChtYXBwZWRDaGlsZC5rZXkgJiYgKCFjaGlsZCB8fCBjaGlsZC5rZXkgIT09IG1hcHBl
ZENoaWxkLmtleSkgPyBlc2NhcGVVc2VyUHJvdmlkZWRLZXkobWFwcGVkQ2hpbGQua2V5KSArICcv
JyA6ICcnKSArIGNoaWxkS2V5KTsKKyAgICB9CisgICAgcmVzdWx0LnB1c2gobWFwcGVkQ2hpbGQp
OworICB9Cit9CisKK2Z1bmN0aW9uIG1hcEludG9XaXRoS2V5UHJlZml4SW50ZXJuYWwoY2hpbGRy
ZW4sIGFycmF5LCBwcmVmaXgsIGZ1bmMsIGNvbnRleHQpIHsKKyAgdmFyIGVzY2FwZWRQcmVmaXgg
PSAnJzsKKyAgaWYgKHByZWZpeCAhPSBudWxsKSB7CisgICAgZXNjYXBlZFByZWZpeCA9IGVzY2Fw
ZVVzZXJQcm92aWRlZEtleShwcmVmaXgpICsgJy8nOworICB9CisgIHZhciB0cmF2ZXJzZUNvbnRl
eHQgPSBNYXBCb29rS2VlcGluZy5nZXRQb29sZWQoYXJyYXksIGVzY2FwZWRQcmVmaXgsIGZ1bmMs
IGNvbnRleHQpOworICB0cmF2ZXJzZUFsbENoaWxkcmVuKGNoaWxkcmVuLCBtYXBTaW5nbGVDaGls
ZEludG9Db250ZXh0LCB0cmF2ZXJzZUNvbnRleHQpOworICBNYXBCb29rS2VlcGluZy5yZWxlYXNl
KHRyYXZlcnNlQ29udGV4dCk7Cit9CisKKy8qKgorICogTWFwcyBjaGlsZHJlbiB0aGF0IGFyZSB0
eXBpY2FsbHkgc3BlY2lmaWVkIGFzIGBwcm9wcy5jaGlsZHJlbmAuCisgKgorICogU2VlIGh0dHBz
Oi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdG9wLWxldmVsLWFwaS5odG1sI3JlYWN0
LmNoaWxkcmVuLm1hcAorICoKKyAqIFRoZSBwcm92aWRlZCBtYXBGdW5jdGlvbihjaGlsZCwga2V5
LCBpbmRleCkgd2lsbCBiZSBjYWxsZWQgZm9yIGVhY2gKKyAqIGxlYWYgY2hpbGQuCisgKgorICog
QHBhcmFtIHs/Kn0gY2hpbGRyZW4gQ2hpbGRyZW4gdHJlZSBjb250YWluZXIuCisgKiBAcGFyYW0g
e2Z1bmN0aW9uKCosIGludCl9IGZ1bmMgVGhlIG1hcCBmdW5jdGlvbi4KKyAqIEBwYXJhbSB7Kn0g
Y29udGV4dCBDb250ZXh0IGZvciBtYXBGdW5jdGlvbi4KKyAqIEByZXR1cm4ge29iamVjdH0gT2Jq
ZWN0IGNvbnRhaW5pbmcgdGhlIG9yZGVyZWQgbWFwIG9mIHJlc3VsdHMuCisgKi8KK2Z1bmN0aW9u
IG1hcENoaWxkcmVuKGNoaWxkcmVuLCBmdW5jLCBjb250ZXh0KSB7CisgIGlmIChjaGlsZHJlbiA9
PSBudWxsKSB7CisgICAgcmV0dXJuIGNoaWxkcmVuOworICB9CisgIHZhciByZXN1bHQgPSBbXTsK
KyAgbWFwSW50b1dpdGhLZXlQcmVmaXhJbnRlcm5hbChjaGlsZHJlbiwgcmVzdWx0LCBudWxsLCBm
dW5jLCBjb250ZXh0KTsKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworZnVuY3Rpb24gZm9yRWFjaFNp
bmdsZUNoaWxkRHVtbXkodHJhdmVyc2VDb250ZXh0LCBjaGlsZCwgbmFtZSkgeworICByZXR1cm4g
bnVsbDsKK30KKworLyoqCisgKiBDb3VudCB0aGUgbnVtYmVyIG9mIGNoaWxkcmVuIHRoYXQgYXJl
IHR5cGljYWxseSBzcGVjaWZpZWQgYXMKKyAqIGBwcm9wcy5jaGlsZHJlbmAuCisgKgorICogU2Vl
IGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdG9wLWxldmVsLWFwaS5odG1s
I3JlYWN0LmNoaWxkcmVuLmNvdW50CisgKgorICogQHBhcmFtIHs/Kn0gY2hpbGRyZW4gQ2hpbGRy
ZW4gdHJlZSBjb250YWluZXIuCisgKiBAcmV0dXJuIHtudW1iZXJ9IFRoZSBudW1iZXIgb2YgY2hp
bGRyZW4uCisgKi8KK2Z1bmN0aW9uIGNvdW50Q2hpbGRyZW4oY2hpbGRyZW4sIGNvbnRleHQpIHsK
KyAgcmV0dXJuIHRyYXZlcnNlQWxsQ2hpbGRyZW4oY2hpbGRyZW4sIGZvckVhY2hTaW5nbGVDaGls
ZER1bW15LCBudWxsKTsKK30KKworLyoqCisgKiBGbGF0dGVuIGEgY2hpbGRyZW4gb2JqZWN0ICh0
eXBpY2FsbHkgc3BlY2lmaWVkIGFzIGBwcm9wcy5jaGlsZHJlbmApIGFuZAorICogcmV0dXJuIGFu
IGFycmF5IHdpdGggYXBwcm9wcmlhdGVseSByZS1rZXllZCBjaGlsZHJlbi4KKyAqCisgKiBTZWUg
aHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwj
cmVhY3QuY2hpbGRyZW4udG9hcnJheQorICovCitmdW5jdGlvbiB0b0FycmF5KGNoaWxkcmVuKSB7
CisgIHZhciByZXN1bHQgPSBbXTsKKyAgbWFwSW50b1dpdGhLZXlQcmVmaXhJbnRlcm5hbChjaGls
ZHJlbiwgcmVzdWx0LCBudWxsLCBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zQXJndW1lbnQpOwor
ICByZXR1cm4gcmVzdWx0OworfQorCit2YXIgUmVhY3RDaGlsZHJlbiA9IHsKKyAgZm9yRWFjaDog
Zm9yRWFjaENoaWxkcmVuLAorICBtYXA6IG1hcENoaWxkcmVuLAorICBtYXBJbnRvV2l0aEtleVBy
ZWZpeEludGVybmFsOiBtYXBJbnRvV2l0aEtleVByZWZpeEludGVybmFsLAorICBjb3VudDogY291
bnRDaGlsZHJlbiwKKyAgdG9BcnJheTogdG9BcnJheQorfTsKKworbW9kdWxlLmV4cG9ydHMgPSBS
ZWFjdENoaWxkcmVuOworfSx7IjE2IjoxNiwiNCI6NCwiNDAiOjQwLCI0NCI6NDR9XSwxMDpbZnVu
Y3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXBy
ZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRo
aXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZv
dW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlz
IHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNh
biBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAq
CisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJbnZhcmlhbnQgPSBfZGVyZXFfKDM4
KSwKKyAgICBfYXNzaWduID0gX2RlcmVxXyg0OSk7CisKK3ZhciBSZWFjdENvbXBvbmVudCA9IF9k
ZXJlcV8oMTEpOwordmFyIFJlYWN0RWxlbWVudCA9IF9kZXJlcV8oMTYpOwordmFyIFJlYWN0UHJv
cFR5cGVMb2NhdGlvbk5hbWVzID0gX2RlcmVxXygyMik7Cit2YXIgUmVhY3ROb29wVXBkYXRlUXVl
dWUgPSBfZGVyZXFfKDIxKTsKKwordmFyIGVtcHR5T2JqZWN0ID0gX2RlcmVxXyg0NSk7Cit2YXIg
aW52YXJpYW50ID0gX2RlcmVxXyg0Nik7Cit2YXIgd2FybmluZyA9IF9kZXJlcV8oNDgpOworCit2
YXIgTUlYSU5TX0tFWSA9ICdtaXhpbnMnOworCisvLyBIZWxwZXIgZnVuY3Rpb24gdG8gYWxsb3cg
dGhlIGNyZWF0aW9uIG9mIGFub255bW91cyBmdW5jdGlvbnMgd2hpY2ggZG8gbm90CisvLyBoYXZl
IC5uYW1lIHNldCB0byB0aGUgbmFtZSBvZiB0aGUgdmFyaWFibGUgYmVpbmcgYXNzaWduZWQgdG8u
CitmdW5jdGlvbiBpZGVudGl0eShmbikgeworICByZXR1cm4gZm47Cit9CisKKy8qKgorICogUG9s
aWNpZXMgdGhhdCBkZXNjcmliZSBtZXRob2RzIGluIGBSZWFjdENsYXNzSW50ZXJmYWNlYC4KKyAq
LworCisKK3ZhciBpbmplY3RlZE1peGlucyA9IFtdOworCisvKioKKyAqIENvbXBvc2l0ZSBjb21w
b25lbnRzIGFyZSBoaWdoZXItbGV2ZWwgY29tcG9uZW50cyB0aGF0IGNvbXBvc2Ugb3RoZXIgY29t
cG9zaXRlCisgKiBvciBob3N0IGNvbXBvbmVudHMuCisgKgorICogVG8gY3JlYXRlIGEgbmV3IHR5
cGUgb2YgYFJlYWN0Q2xhc3NgLCBwYXNzIGEgc3BlY2lmaWNhdGlvbiBvZgorICogeW91ciBuZXcg
Y2xhc3MgdG8gYFJlYWN0LmNyZWF0ZUNsYXNzYC4gVGhlIG9ubHkgcmVxdWlyZW1lbnQgb2YgeW91
ciBjbGFzcworICogc3BlY2lmaWNhdGlvbiBpcyB0aGF0IHlvdSBpbXBsZW1lbnQgYSBgcmVuZGVy
YCBtZXRob2QuCisgKgorICogICB2YXIgTXlDb21wb25lbnQgPSBSZWFjdC5jcmVhdGVDbGFzcyh7
CisgKiAgICAgcmVuZGVyOiBmdW5jdGlvbigpIHsKKyAqICAgICAgIHJldHVybiA8ZGl2PkhlbGxv
IFdvcmxkPC9kaXY+OworICogICAgIH0KKyAqICAgfSk7CisgKgorICogVGhlIGNsYXNzIHNwZWNp
ZmljYXRpb24gc3VwcG9ydHMgYSBzcGVjaWZpYyBwcm90b2NvbCBvZiBtZXRob2RzIHRoYXQgaGF2
ZQorICogc3BlY2lhbCBtZWFuaW5nIChlLmcuIGByZW5kZXJgKS4gU2VlIGBSZWFjdENsYXNzSW50
ZXJmYWNlYCBmb3IKKyAqIG1vcmUgdGhlIGNvbXByZWhlbnNpdmUgcHJvdG9jb2wuIEFueSBvdGhl
ciBwcm9wZXJ0aWVzIGFuZCBtZXRob2RzIGluIHRoZQorICogY2xhc3Mgc3BlY2lmaWNhdGlvbiB3
aWxsIGJlIGF2YWlsYWJsZSBvbiB0aGUgcHJvdG90eXBlLgorICoKKyAqIEBpbnRlcmZhY2UgUmVh
Y3RDbGFzc0ludGVyZmFjZQorICogQGludGVybmFsCisgKi8KK3ZhciBSZWFjdENsYXNzSW50ZXJm
YWNlID0geworCisgIC8qKgorICAgKiBBbiBhcnJheSBvZiBNaXhpbiBvYmplY3RzIHRvIGluY2x1
ZGUgd2hlbiBkZWZpbmluZyB5b3VyIGNvbXBvbmVudC4KKyAgICoKKyAgICogQHR5cGUge2FycmF5
fQorICAgKiBAb3B0aW9uYWwKKyAgICovCisgIG1peGluczogJ0RFRklORV9NQU5ZJywKKworICAv
KioKKyAgICogQW4gb2JqZWN0IGNvbnRhaW5pbmcgcHJvcGVydGllcyBhbmQgbWV0aG9kcyB0aGF0
IHNob3VsZCBiZSBkZWZpbmVkIG9uCisgICAqIHRoZSBjb21wb25lbnQncyBjb25zdHJ1Y3RvciBp
bnN0ZWFkIG9mIGl0cyBwcm90b3R5cGUgKHN0YXRpYyBtZXRob2RzKS4KKyAgICoKKyAgICogQHR5
cGUge29iamVjdH0KKyAgICogQG9wdGlvbmFsCisgICAqLworICBzdGF0aWNzOiAnREVGSU5FX01B
TlknLAorCisgIC8qKgorICAgKiBEZWZpbml0aW9uIG9mIHByb3AgdHlwZXMgZm9yIHRoaXMgY29t
cG9uZW50LgorICAgKgorICAgKiBAdHlwZSB7b2JqZWN0fQorICAgKiBAb3B0aW9uYWwKKyAgICov
CisgIHByb3BUeXBlczogJ0RFRklORV9NQU5ZJywKKworICAvKioKKyAgICogRGVmaW5pdGlvbiBv
ZiBjb250ZXh0IHR5cGVzIGZvciB0aGlzIGNvbXBvbmVudC4KKyAgICoKKyAgICogQHR5cGUge29i
amVjdH0KKyAgICogQG9wdGlvbmFsCisgICAqLworICBjb250ZXh0VHlwZXM6ICdERUZJTkVfTUFO
WScsCisKKyAgLyoqCisgICAqIERlZmluaXRpb24gb2YgY29udGV4dCB0eXBlcyB0aGlzIGNvbXBv
bmVudCBzZXRzIGZvciBpdHMgY2hpbGRyZW4uCisgICAqCisgICAqIEB0eXBlIHtvYmplY3R9Cisg
ICAqIEBvcHRpb25hbAorICAgKi8KKyAgY2hpbGRDb250ZXh0VHlwZXM6ICdERUZJTkVfTUFOWScs
CisKKyAgLy8gPT09PSBEZWZpbml0aW9uIG1ldGhvZHMgPT09PQorCisgIC8qKgorICAgKiBJbnZv
a2VkIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBtb3VudGVkLiBWYWx1ZXMgaW4gdGhlIG1hcHBpbmcg
d2lsbCBiZSBzZXQgb24KKyAgICogYHRoaXMucHJvcHNgIGlmIHRoYXQgcHJvcCBpcyBub3Qgc3Bl
Y2lmaWVkIChpLmUuIHVzaW5nIGFuIGBpbmAgY2hlY2spLgorICAgKgorICAgKiBUaGlzIG1ldGhv
ZCBpcyBpbnZva2VkIGJlZm9yZSBgZ2V0SW5pdGlhbFN0YXRlYCBhbmQgdGhlcmVmb3JlIGNhbm5v
dCByZWx5CisgICAqIG9uIGB0aGlzLnN0YXRlYCBvciB1c2UgYHRoaXMuc2V0U3RhdGVgLgorICAg
KgorICAgKiBAcmV0dXJuIHtvYmplY3R9CisgICAqIEBvcHRpb25hbAorICAgKi8KKyAgZ2V0RGVm
YXVsdFByb3BzOiAnREVGSU5FX01BTllfTUVSR0VEJywKKworICAvKioKKyAgICogSW52b2tlZCBv
bmNlIGJlZm9yZSB0aGUgY29tcG9uZW50IGlzIG1vdW50ZWQuIFRoZSByZXR1cm4gdmFsdWUgd2ls
bCBiZSB1c2VkCisgICAqIGFzIHRoZSBpbml0aWFsIHZhbHVlIG9mIGB0aGlzLnN0YXRlYC4KKyAg
ICoKKyAgICogICBnZXRJbml0aWFsU3RhdGU6IGZ1bmN0aW9uKCkgeworICAgKiAgICAgcmV0dXJu
IHsKKyAgICogICAgICAgaXNPbjogZmFsc2UsCisgICAqICAgICAgIGZvb0JhejogbmV3IEJhekZv
bygpCisgICAqICAgICB9CisgICAqICAgfQorICAgKgorICAgKiBAcmV0dXJuIHtvYmplY3R9Cisg
ICAqIEBvcHRpb25hbAorICAgKi8KKyAgZ2V0SW5pdGlhbFN0YXRlOiAnREVGSU5FX01BTllfTUVS
R0VEJywKKworICAvKioKKyAgICogQHJldHVybiB7b2JqZWN0fQorICAgKiBAb3B0aW9uYWwKKyAg
ICovCisgIGdldENoaWxkQ29udGV4dDogJ0RFRklORV9NQU5ZX01FUkdFRCcsCisKKyAgLyoqCisg
ICAqIFVzZXMgcHJvcHMgZnJvbSBgdGhpcy5wcm9wc2AgYW5kIHN0YXRlIGZyb20gYHRoaXMuc3Rh
dGVgIHRvIHJlbmRlciB0aGUKKyAgICogc3RydWN0dXJlIG9mIHRoZSBjb21wb25lbnQuCisgICAq
CisgICAqIE5vIGd1YXJhbnRlZXMgYXJlIG1hZGUgYWJvdXQgd2hlbiBvciBob3cgb2Z0ZW4gdGhp
cyBtZXRob2QgaXMgaW52b2tlZCwgc28KKyAgICogaXQgbXVzdCBub3QgaGF2ZSBzaWRlIGVmZmVj
dHMuCisgICAqCisgICAqICAgcmVuZGVyOiBmdW5jdGlvbigpIHsKKyAgICogICAgIHZhciBuYW1l
ID0gdGhpcy5wcm9wcy5uYW1lOworICAgKiAgICAgcmV0dXJuIDxkaXY+SGVsbG8sIHtuYW1lfSE8
L2Rpdj47CisgICAqICAgfQorICAgKgorICAgKiBAcmV0dXJuIHtSZWFjdENvbXBvbmVudH0KKyAg
ICogQG5vc2lkZWVmZmVjdHMKKyAgICogQHJlcXVpcmVkCisgICAqLworICByZW5kZXI6ICdERUZJ
TkVfT05DRScsCisKKyAgLy8gPT09PSBEZWxlZ2F0ZSBtZXRob2RzID09PT0KKworICAvKioKKyAg
ICogSW52b2tlZCB3aGVuIHRoZSBjb21wb25lbnQgaXMgaW5pdGlhbGx5IGNyZWF0ZWQgYW5kIGFi
b3V0IHRvIGJlIG1vdW50ZWQuCisgICAqIFRoaXMgbWF5IGhhdmUgc2lkZSBlZmZlY3RzLCBidXQg
YW55IGV4dGVybmFsIHN1YnNjcmlwdGlvbnMgb3IgZGF0YSBjcmVhdGVkCisgICAqIGJ5IHRoaXMg
bWV0aG9kIG11c3QgYmUgY2xlYW5lZCB1cCBpbiBgY29tcG9uZW50V2lsbFVubW91bnRgLgorICAg
KgorICAgKiBAb3B0aW9uYWwKKyAgICovCisgIGNvbXBvbmVudFdpbGxNb3VudDogJ0RFRklORV9N
QU5ZJywKKworICAvKioKKyAgICogSW52b2tlZCB3aGVuIHRoZSBjb21wb25lbnQgaGFzIGJlZW4g
bW91bnRlZCBhbmQgaGFzIGEgRE9NIHJlcHJlc2VudGF0aW9uLgorICAgKiBIb3dldmVyLCB0aGVy
ZSBpcyBubyBndWFyYW50ZWUgdGhhdCB0aGUgRE9NIG5vZGUgaXMgaW4gdGhlIGRvY3VtZW50Lgor
ICAgKgorICAgKiBVc2UgdGhpcyBhcyBhbiBvcHBvcnR1bml0eSB0byBvcGVyYXRlIG9uIHRoZSBE
T00gd2hlbiB0aGUgY29tcG9uZW50IGhhcworICAgKiBiZWVuIG1vdW50ZWQgKGluaXRpYWxpemVk
IGFuZCByZW5kZXJlZCkgZm9yIHRoZSBmaXJzdCB0aW1lLgorICAgKgorICAgKiBAcGFyYW0ge0RP
TUVsZW1lbnR9IHJvb3ROb2RlIERPTSBlbGVtZW50IHJlcHJlc2VudGluZyB0aGUgY29tcG9uZW50
LgorICAgKiBAb3B0aW9uYWwKKyAgICovCisgIGNvbXBvbmVudERpZE1vdW50OiAnREVGSU5FX01B
TlknLAorCisgIC8qKgorICAgKiBJbnZva2VkIGJlZm9yZSB0aGUgY29tcG9uZW50IHJlY2VpdmVz
IG5ldyBwcm9wcy4KKyAgICoKKyAgICogVXNlIHRoaXMgYXMgYW4gb3Bwb3J0dW5pdHkgdG8gcmVh
Y3QgdG8gYSBwcm9wIHRyYW5zaXRpb24gYnkgdXBkYXRpbmcgdGhlCisgICAqIHN0YXRlIHVzaW5n
IGB0aGlzLnNldFN0YXRlYC4gQ3VycmVudCBwcm9wcyBhcmUgYWNjZXNzZWQgdmlhIGB0aGlzLnBy
b3BzYC4KKyAgICoKKyAgICogICBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzOiBmdW5jdGlvbihu
ZXh0UHJvcHMsIG5leHRDb250ZXh0KSB7CisgICAqICAgICB0aGlzLnNldFN0YXRlKHsKKyAgICog
ICAgICAgbGlrZXNJbmNyZWFzaW5nOiBuZXh0UHJvcHMubGlrZUNvdW50ID4gdGhpcy5wcm9wcy5s
aWtlQ291bnQKKyAgICogICAgIH0pOworICAgKiAgIH0KKyAgICoKKyAgICogTk9URTogVGhlcmUg
aXMgbm8gZXF1aXZhbGVudCBgY29tcG9uZW50V2lsbFJlY2VpdmVTdGF0ZWAuIEFuIGluY29taW5n
IHByb3AKKyAgICogdHJhbnNpdGlvbiBtYXkgY2F1c2UgYSBzdGF0ZSBjaGFuZ2UsIGJ1dCB0aGUg
b3Bwb3NpdGUgaXMgbm90IHRydWUuIElmIHlvdQorICAgKiBuZWVkIGl0LCB5b3UgYXJlIHByb2Jh
Ymx5IGxvb2tpbmcgZm9yIGBjb21wb25lbnRXaWxsVXBkYXRlYC4KKyAgICoKKyAgICogQHBhcmFt
IHtvYmplY3R9IG5leHRQcm9wcworICAgKiBAb3B0aW9uYWwKKyAgICovCisgIGNvbXBvbmVudFdp
bGxSZWNlaXZlUHJvcHM6ICdERUZJTkVfTUFOWScsCisKKyAgLyoqCisgICAqIEludm9rZWQgd2hp
bGUgZGVjaWRpbmcgaWYgdGhlIGNvbXBvbmVudCBzaG91bGQgYmUgdXBkYXRlZCBhcyBhIHJlc3Vs
dCBvZgorICAgKiByZWNlaXZpbmcgbmV3IHByb3BzLCBzdGF0ZSBhbmQvb3IgY29udGV4dC4KKyAg
ICoKKyAgICogVXNlIHRoaXMgYXMgYW4gb3Bwb3J0dW5pdHkgdG8gYHJldHVybiBmYWxzZWAgd2hl
biB5b3UncmUgY2VydGFpbiB0aGF0IHRoZQorICAgKiB0cmFuc2l0aW9uIHRvIHRoZSBuZXcgcHJv
cHMvc3RhdGUvY29udGV4dCB3aWxsIG5vdCByZXF1aXJlIGEgY29tcG9uZW50CisgICAqIHVwZGF0
ZS4KKyAgICoKKyAgICogICBzaG91bGRDb21wb25lbnRVcGRhdGU6IGZ1bmN0aW9uKG5leHRQcm9w
cywgbmV4dFN0YXRlLCBuZXh0Q29udGV4dCkgeworICAgKiAgICAgcmV0dXJuICFlcXVhbChuZXh0
UHJvcHMsIHRoaXMucHJvcHMpIHx8CisgICAqICAgICAgICFlcXVhbChuZXh0U3RhdGUsIHRoaXMu
c3RhdGUpIHx8CisgICAqICAgICAgICFlcXVhbChuZXh0Q29udGV4dCwgdGhpcy5jb250ZXh0KTsK
KyAgICogICB9CisgICAqCisgICAqIEBwYXJhbSB7b2JqZWN0fSBuZXh0UHJvcHMKKyAgICogQHBh
cmFtIHs/b2JqZWN0fSBuZXh0U3RhdGUKKyAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXh0Q29udGV4
dAorICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHRoZSBjb21wb25lbnQgc2hvdWxkIHVw
ZGF0ZS4KKyAgICogQG9wdGlvbmFsCisgICAqLworICBzaG91bGRDb21wb25lbnRVcGRhdGU6ICdE
RUZJTkVfT05DRScsCisKKyAgLyoqCisgICAqIEludm9rZWQgd2hlbiB0aGUgY29tcG9uZW50IGlz
IGFib3V0IHRvIHVwZGF0ZSBkdWUgdG8gYSB0cmFuc2l0aW9uIGZyb20KKyAgICogYHRoaXMucHJv
cHNgLCBgdGhpcy5zdGF0ZWAgYW5kIGB0aGlzLmNvbnRleHRgIHRvIGBuZXh0UHJvcHNgLCBgbmV4
dFN0YXRlYAorICAgKiBhbmQgYG5leHRDb250ZXh0YC4KKyAgICoKKyAgICogVXNlIHRoaXMgYXMg
YW4gb3Bwb3J0dW5pdHkgdG8gcGVyZm9ybSBwcmVwYXJhdGlvbiBiZWZvcmUgYW4gdXBkYXRlIG9j
Y3Vycy4KKyAgICoKKyAgICogTk9URTogWW91ICoqY2Fubm90KiogdXNlIGB0aGlzLnNldFN0YXRl
KClgIGluIHRoaXMgbWV0aG9kLgorICAgKgorICAgKiBAcGFyYW0ge29iamVjdH0gbmV4dFByb3Bz
CisgICAqIEBwYXJhbSB7P29iamVjdH0gbmV4dFN0YXRlCisgICAqIEBwYXJhbSB7P29iamVjdH0g
bmV4dENvbnRleHQKKyAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFu
c2FjdGlvbgorICAgKiBAb3B0aW9uYWwKKyAgICovCisgIGNvbXBvbmVudFdpbGxVcGRhdGU6ICdE
RUZJTkVfTUFOWScsCisKKyAgLyoqCisgICAqIEludm9rZWQgd2hlbiB0aGUgY29tcG9uZW50J3Mg
RE9NIHJlcHJlc2VudGF0aW9uIGhhcyBiZWVuIHVwZGF0ZWQuCisgICAqCisgICAqIFVzZSB0aGlz
IGFzIGFuIG9wcG9ydHVuaXR5IHRvIG9wZXJhdGUgb24gdGhlIERPTSB3aGVuIHRoZSBjb21wb25l
bnQgaGFzCisgICAqIGJlZW4gdXBkYXRlZC4KKyAgICoKKyAgICogQHBhcmFtIHtvYmplY3R9IHBy
ZXZQcm9wcworICAgKiBAcGFyYW0gez9vYmplY3R9IHByZXZTdGF0ZQorICAgKiBAcGFyYW0gez9v
YmplY3R9IHByZXZDb250ZXh0CisgICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gcm9vdE5vZGUgRE9N
IGVsZW1lbnQgcmVwcmVzZW50aW5nIHRoZSBjb21wb25lbnQuCisgICAqIEBvcHRpb25hbAorICAg
Ki8KKyAgY29tcG9uZW50RGlkVXBkYXRlOiAnREVGSU5FX01BTlknLAorCisgIC8qKgorICAgKiBJ
bnZva2VkIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBhYm91dCB0byBiZSByZW1vdmVkIGZyb20gaXRz
IHBhcmVudCBhbmQgaGF2ZQorICAgKiBpdHMgRE9NIHJlcHJlc2VudGF0aW9uIGRlc3Ryb3llZC4K
KyAgICoKKyAgICogVXNlIHRoaXMgYXMgYW4gb3Bwb3J0dW5pdHkgdG8gZGVhbGxvY2F0ZSBhbnkg
ZXh0ZXJuYWwgcmVzb3VyY2VzLgorICAgKgorICAgKiBOT1RFOiBUaGVyZSBpcyBubyBgY29tcG9u
ZW50RGlkVW5tb3VudGAgc2luY2UgeW91ciBjb21wb25lbnQgd2lsbCBoYXZlIGJlZW4KKyAgICog
ZGVzdHJveWVkIGJ5IHRoYXQgcG9pbnQuCisgICAqCisgICAqIEBvcHRpb25hbAorICAgKi8KKyAg
Y29tcG9uZW50V2lsbFVubW91bnQ6ICdERUZJTkVfTUFOWScsCisKKyAgLy8gPT09PSBBZHZhbmNl
ZCBtZXRob2RzID09PT0KKworICAvKioKKyAgICogVXBkYXRlcyB0aGUgY29tcG9uZW50J3MgY3Vy
cmVudGx5IG1vdW50ZWQgRE9NIHJlcHJlc2VudGF0aW9uLgorICAgKgorICAgKiBCeSBkZWZhdWx0
LCB0aGlzIGltcGxlbWVudHMgUmVhY3QncyByZW5kZXJpbmcgYW5kIHJlY29uY2lsaWF0aW9uIGFs
Z29yaXRobS4KKyAgICogU29waGlzdGljYXRlZCBjbGllbnRzIG1heSB3aXNoIHRvIG92ZXJyaWRl
IHRoaXMuCisgICAqCisgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJh
bnNhY3Rpb24KKyAgICogQGludGVybmFsCisgICAqIEBvdmVycmlkYWJsZQorICAgKi8KKyAgdXBk
YXRlQ29tcG9uZW50OiAnT1ZFUlJJREVfQkFTRScKKworfTsKKworLyoqCisgKiBNYXBwaW5nIGZy
b20gY2xhc3Mgc3BlY2lmaWNhdGlvbiBrZXlzIHRvIHNwZWNpYWwgcHJvY2Vzc2luZyBmdW5jdGlv
bnMuCisgKgorICogQWx0aG91Z2ggdGhlc2UgYXJlIGRlY2xhcmVkIGxpa2UgaW5zdGFuY2UgcHJv
cGVydGllcyBpbiB0aGUgc3BlY2lmaWNhdGlvbgorICogd2hlbiBkZWZpbmluZyBjbGFzc2VzIHVz
aW5nIGBSZWFjdC5jcmVhdGVDbGFzc2AsIHRoZXkgYXJlIGFjdHVhbGx5IHN0YXRpYworICogYW5k
IGFyZSBhY2Nlc3NpYmxlIG9uIHRoZSBjb25zdHJ1Y3RvciBpbnN0ZWFkIG9mIHRoZSBwcm90b3R5
cGUuIERlc3BpdGUKKyAqIGJlaW5nIHN0YXRpYywgdGhleSBtdXN0IGJlIGRlZmluZWQgb3V0c2lk
ZSBvZiB0aGUgInN0YXRpY3MiIGtleSB1bmRlcgorICogd2hpY2ggYWxsIG90aGVyIHN0YXRpYyBt
ZXRob2RzIGFyZSBkZWZpbmVkLgorICovCit2YXIgUkVTRVJWRURfU1BFQ19LRVlTID0geworICBk
aXNwbGF5TmFtZTogZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBkaXNwbGF5TmFtZSkgeworICAgIENv
bnN0cnVjdG9yLmRpc3BsYXlOYW1lID0gZGlzcGxheU5hbWU7CisgIH0sCisgIG1peGluczogZnVu
Y3Rpb24gKENvbnN0cnVjdG9yLCBtaXhpbnMpIHsKKyAgICBpZiAobWl4aW5zKSB7CisgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IG1peGlucy5sZW5ndGg7IGkrKykgeworICAgICAgICBtaXhTcGVj
SW50b0NvbXBvbmVudChDb25zdHJ1Y3RvciwgbWl4aW5zW2ldKTsKKyAgICAgIH0KKyAgICB9Cisg
IH0sCisgIGNoaWxkQ29udGV4dFR5cGVzOiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIGNoaWxkQ29u
dGV4dFR5cGVzKSB7CisgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgewor
ICAgICAgdmFsaWRhdGVUeXBlRGVmKENvbnN0cnVjdG9yLCBjaGlsZENvbnRleHRUeXBlcywgJ2No
aWxkQ29udGV4dCcpOworICAgIH0KKyAgICBDb25zdHJ1Y3Rvci5jaGlsZENvbnRleHRUeXBlcyA9
IF9hc3NpZ24oe30sIENvbnN0cnVjdG9yLmNoaWxkQ29udGV4dFR5cGVzLCBjaGlsZENvbnRleHRU
eXBlcyk7CisgIH0sCisgIGNvbnRleHRUeXBlczogZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBjb250
ZXh0VHlwZXMpIHsKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7Cisg
ICAgICB2YWxpZGF0ZVR5cGVEZWYoQ29uc3RydWN0b3IsIGNvbnRleHRUeXBlcywgJ2NvbnRleHQn
KTsKKyAgICB9CisgICAgQ29uc3RydWN0b3IuY29udGV4dFR5cGVzID0gX2Fzc2lnbih7fSwgQ29u
c3RydWN0b3IuY29udGV4dFR5cGVzLCBjb250ZXh0VHlwZXMpOworICB9LAorICAvKioKKyAgICog
U3BlY2lhbCBjYXNlIGdldERlZmF1bHRQcm9wcyB3aGljaCBzaG91bGQgbW92ZSBpbnRvIHN0YXRp
Y3MgYnV0IHJlcXVpcmVzCisgICAqIGF1dG9tYXRpYyBtZXJnaW5nLgorICAgKi8KKyAgZ2V0RGVm
YXVsdFByb3BzOiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIGdldERlZmF1bHRQcm9wcykgeworICAg
IGlmIChDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMpIHsKKyAgICAgIENvbnN0cnVjdG9yLmdl
dERlZmF1bHRQcm9wcyA9IGNyZWF0ZU1lcmdlZFJlc3VsdEZ1bmN0aW9uKENvbnN0cnVjdG9yLmdl
dERlZmF1bHRQcm9wcywgZ2V0RGVmYXVsdFByb3BzKTsKKyAgICB9IGVsc2UgeworICAgICAgQ29u
c3RydWN0b3IuZ2V0RGVmYXVsdFByb3BzID0gZ2V0RGVmYXVsdFByb3BzOworICAgIH0KKyAgfSwK
KyAgcHJvcFR5cGVzOiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3BUeXBlcykgeworICAgIGlm
ICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgIHZhbGlkYXRlVHlwZURl
ZihDb25zdHJ1Y3RvciwgcHJvcFR5cGVzLCAncHJvcCcpOworICAgIH0KKyAgICBDb25zdHJ1Y3Rv
ci5wcm9wVHlwZXMgPSBfYXNzaWduKHt9LCBDb25zdHJ1Y3Rvci5wcm9wVHlwZXMsIHByb3BUeXBl
cyk7CisgIH0sCisgIHN0YXRpY3M6IGZ1bmN0aW9uIChDb25zdHJ1Y3Rvciwgc3RhdGljcykgewor
ICAgIG1peFN0YXRpY1NwZWNJbnRvQ29tcG9uZW50KENvbnN0cnVjdG9yLCBzdGF0aWNzKTsKKyAg
fSwKKyAgYXV0b2JpbmQ6IGZ1bmN0aW9uICgpIHt9IH07CisKK2Z1bmN0aW9uIHZhbGlkYXRlVHlw
ZURlZihDb25zdHJ1Y3RvciwgdHlwZURlZiwgbG9jYXRpb24pIHsKKyAgZm9yICh2YXIgcHJvcE5h
bWUgaW4gdHlwZURlZikgeworICAgIGlmICh0eXBlRGVmLmhhc093blByb3BlcnR5KHByb3BOYW1l
KSkgeworICAgICAgLy8gdXNlIGEgd2FybmluZyBpbnN0ZWFkIG9mIGFuIGludmFyaWFudCBzbyBj
b21wb25lbnRzCisgICAgICAvLyBkb24ndCBzaG93IHVwIGluIHByb2QgYnV0IG9ubHkgaW4gX19E
RVZfXworICAgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyh0eXBl
b2YgdHlwZURlZltwcm9wTmFtZV0gPT09ICdmdW5jdGlvbicsICclczogJXMgdHlwZSBgJXNgIGlz
IGludmFsaWQ7IGl0IG11c3QgYmUgYSBmdW5jdGlvbiwgdXN1YWxseSBmcm9tICcgKyAnUmVhY3Qu
UHJvcFR5cGVzLicsIENvbnN0cnVjdG9yLmRpc3BsYXlOYW1lIHx8ICdSZWFjdENsYXNzJywgUmVh
Y3RQcm9wVHlwZUxvY2F0aW9uTmFtZXNbbG9jYXRpb25dLCBwcm9wTmFtZSkgOiB2b2lkIDA7Cisg
ICAgfQorICB9Cit9CisKK2Z1bmN0aW9uIHZhbGlkYXRlTWV0aG9kT3ZlcnJpZGUoaXNBbHJlYWR5
RGVmaW5lZCwgbmFtZSkgeworICB2YXIgc3BlY1BvbGljeSA9IFJlYWN0Q2xhc3NJbnRlcmZhY2Uu
aGFzT3duUHJvcGVydHkobmFtZSkgPyBSZWFjdENsYXNzSW50ZXJmYWNlW25hbWVdIDogbnVsbDsK
KworICAvLyBEaXNhbGxvdyBvdmVycmlkaW5nIG9mIGJhc2UgY2xhc3MgbWV0aG9kcyB1bmxlc3Mg
ZXhwbGljaXRseSBhbGxvd2VkLgorICBpZiAoUmVhY3RDbGFzc01peGluLmhhc093blByb3BlcnR5
KG5hbWUpKSB7CisgICAgIShzcGVjUG9saWN5ID09PSAnT1ZFUlJJREVfQkFTRScpID8gImRldmVs
b3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3RDbGFzc0lu
dGVyZmFjZTogWW91IGFyZSBhdHRlbXB0aW5nIHRvIG92ZXJyaWRlIGAlc2AgZnJvbSB5b3VyIGNs
YXNzIHNwZWNpZmljYXRpb24uIEVuc3VyZSB0aGF0IHlvdXIgbWV0aG9kIG5hbWVzIGRvIG5vdCBv
dmVybGFwIHdpdGggUmVhY3QgbWV0aG9kcy4nLCBuYW1lKSA6IF9wcm9kSW52YXJpYW50KCc3Mycs
IG5hbWUpIDogdm9pZCAwOworICB9CisKKyAgLy8gRGlzYWxsb3cgZGVmaW5pbmcgbWV0aG9kcyBt
b3JlIHRoYW4gb25jZSB1bmxlc3MgZXhwbGljaXRseSBhbGxvd2VkLgorICBpZiAoaXNBbHJlYWR5
RGVmaW5lZCkgeworICAgICEoc3BlY1BvbGljeSA9PT0gJ0RFRklORV9NQU5ZJyB8fCBzcGVjUG9s
aWN5ID09PSAnREVGSU5FX01BTllfTUVSR0VEJykgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVj
dGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdENsYXNzSW50ZXJmYWNlOiBZb3UgYXJlIGF0
dGVtcHRpbmcgdG8gZGVmaW5lIGAlc2Agb24geW91ciBjb21wb25lbnQgbW9yZSB0aGFuIG9uY2Uu
IFRoaXMgY29uZmxpY3QgbWF5IGJlIGR1ZSB0byBhIG1peGluLicsIG5hbWUpIDogX3Byb2RJbnZh
cmlhbnQoJzc0JywgbmFtZSkgOiB2b2lkIDA7CisgIH0KK30KKworLyoqCisgKiBNaXhpbiBoZWxw
ZXIgd2hpY2ggaGFuZGxlcyBwb2xpY3kgdmFsaWRhdGlvbiBhbmQgcmVzZXJ2ZWQKKyAqIHNwZWNp
ZmljYXRpb24ga2V5cyB3aGVuIGJ1aWxkaW5nIFJlYWN0IGNsYXNzZXMuCisgKi8KK2Z1bmN0aW9u
IG1peFNwZWNJbnRvQ29tcG9uZW50KENvbnN0cnVjdG9yLCBzcGVjKSB7CisgIGlmICghc3BlYykg
eworICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgIHZhciB0
eXBlb2ZTcGVjID0gdHlwZW9mIHNwZWM7CisgICAgICB2YXIgaXNNaXhpblZhbGlkID0gdHlwZW9m
U3BlYyA9PT0gJ29iamVjdCcgJiYgc3BlYyAhPT0gbnVsbDsKKworICAgICAgImRldmVsb3BtZW50
IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhpc01peGluVmFsaWQsICclczogWW91XCdyZSBh
dHRlbXB0aW5nIHRvIGluY2x1ZGUgYSBtaXhpbiB0aGF0IGlzIGVpdGhlciBudWxsICcgKyAnb3Ig
bm90IGFuIG9iamVjdC4gQ2hlY2sgdGhlIG1peGlucyBpbmNsdWRlZCBieSB0aGUgY29tcG9uZW50
LCAnICsgJ2FzIHdlbGwgYXMgYW55IG1peGlucyB0aGV5IGluY2x1ZGUgdGhlbXNlbHZlcy4gJyAr
ICdFeHBlY3RlZCBvYmplY3QgYnV0IGdvdCAlcy4nLCBDb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZSB8
fCAnUmVhY3RDbGFzcycsIHNwZWMgPT09IG51bGwgPyBudWxsIDogdHlwZW9mU3BlYykgOiB2b2lk
IDA7CisgICAgfQorCisgICAgcmV0dXJuOworICB9CisKKyAgISh0eXBlb2Ygc3BlYyAhPT0gJ2Z1
bmN0aW9uJykgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFs
c2UsICdSZWFjdENsYXNzOiBZb3VcJ3JlIGF0dGVtcHRpbmcgdG8gdXNlIGEgY29tcG9uZW50IGNs
YXNzIG9yIGZ1bmN0aW9uIGFzIGEgbWl4aW4uIEluc3RlYWQsIGp1c3QgdXNlIGEgcmVndWxhciBv
YmplY3QuJykgOiBfcHJvZEludmFyaWFudCgnNzUnKSA6IHZvaWQgMDsKKyAgISFSZWFjdEVsZW1l
bnQuaXNWYWxpZEVsZW1lbnQoc3BlYykgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicg
PyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdENsYXNzOiBZb3VcJ3JlIGF0dGVtcHRpbmcgdG8gdXNl
IGEgY29tcG9uZW50IGFzIGEgbWl4aW4uIEluc3RlYWQsIGp1c3QgdXNlIGEgcmVndWxhciBvYmpl
Y3QuJykgOiBfcHJvZEludmFyaWFudCgnNzYnKSA6IHZvaWQgMDsKKworICB2YXIgcHJvdG8gPSBD
b25zdHJ1Y3Rvci5wcm90b3R5cGU7CisgIHZhciBhdXRvQmluZFBhaXJzID0gcHJvdG8uX19yZWFj
dEF1dG9CaW5kUGFpcnM7CisKKyAgLy8gQnkgaGFuZGxpbmcgbWl4aW5zIGJlZm9yZSBhbnkgb3Ro
ZXIgcHJvcGVydGllcywgd2UgZW5zdXJlIHRoZSBzYW1lCisgIC8vIGNoYWluaW5nIG9yZGVyIGlz
IGFwcGxpZWQgdG8gbWV0aG9kcyB3aXRoIERFRklORV9NQU5ZIHBvbGljeSwgd2hldGhlcgorICAv
LyBtaXhpbnMgYXJlIGxpc3RlZCBiZWZvcmUgb3IgYWZ0ZXIgdGhlc2UgbWV0aG9kcyBpbiB0aGUg
c3BlYy4KKyAgaWYgKHNwZWMuaGFzT3duUHJvcGVydHkoTUlYSU5TX0tFWSkpIHsKKyAgICBSRVNF
UlZFRF9TUEVDX0tFWVMubWl4aW5zKENvbnN0cnVjdG9yLCBzcGVjLm1peGlucyk7CisgIH0KKwor
ICBmb3IgKHZhciBuYW1lIGluIHNwZWMpIHsKKyAgICBpZiAoIXNwZWMuaGFzT3duUHJvcGVydHko
bmFtZSkpIHsKKyAgICAgIGNvbnRpbnVlOworICAgIH0KKworICAgIGlmIChuYW1lID09PSBNSVhJ
TlNfS0VZKSB7CisgICAgICAvLyBXZSBoYXZlIGFscmVhZHkgaGFuZGxlZCBtaXhpbnMgaW4gYSBz
cGVjaWFsIGNhc2UgYWJvdmUuCisgICAgICBjb250aW51ZTsKKyAgICB9CisKKyAgICB2YXIgcHJv
cGVydHkgPSBzcGVjW25hbWVdOworICAgIHZhciBpc0FscmVhZHlEZWZpbmVkID0gcHJvdG8uaGFz
T3duUHJvcGVydHkobmFtZSk7CisgICAgdmFsaWRhdGVNZXRob2RPdmVycmlkZShpc0FscmVhZHlE
ZWZpbmVkLCBuYW1lKTsKKworICAgIGlmIChSRVNFUlZFRF9TUEVDX0tFWVMuaGFzT3duUHJvcGVy
dHkobmFtZSkpIHsKKyAgICAgIFJFU0VSVkVEX1NQRUNfS0VZU1tuYW1lXShDb25zdHJ1Y3Rvciwg
cHJvcGVydHkpOworICAgIH0gZWxzZSB7CisgICAgICAvLyBTZXR1cCBtZXRob2RzIG9uIHByb3Rv
dHlwZToKKyAgICAgIC8vIFRoZSBmb2xsb3dpbmcgbWVtYmVyIG1ldGhvZHMgc2hvdWxkIG5vdCBi
ZSBhdXRvbWF0aWNhbGx5IGJvdW5kOgorICAgICAgLy8gMS4gRXhwZWN0ZWQgUmVhY3RDbGFzcyBt
ZXRob2RzIChpbiB0aGUgImludGVyZmFjZSIpLgorICAgICAgLy8gMi4gT3ZlcnJpZGRlbiBtZXRo
b2RzICh0aGF0IHdlcmUgbWl4ZWQgaW4pLgorICAgICAgdmFyIGlzUmVhY3RDbGFzc01ldGhvZCA9
IFJlYWN0Q2xhc3NJbnRlcmZhY2UuaGFzT3duUHJvcGVydHkobmFtZSk7CisgICAgICB2YXIgaXNG
dW5jdGlvbiA9IHR5cGVvZiBwcm9wZXJ0eSA9PT0gJ2Z1bmN0aW9uJzsKKyAgICAgIHZhciBzaG91
bGRBdXRvQmluZCA9IGlzRnVuY3Rpb24gJiYgIWlzUmVhY3RDbGFzc01ldGhvZCAmJiAhaXNBbHJl
YWR5RGVmaW5lZCAmJiBzcGVjLmF1dG9iaW5kICE9PSBmYWxzZTsKKworICAgICAgaWYgKHNob3Vs
ZEF1dG9CaW5kKSB7CisgICAgICAgIGF1dG9CaW5kUGFpcnMucHVzaChuYW1lLCBwcm9wZXJ0eSk7
CisgICAgICAgIHByb3RvW25hbWVdID0gcHJvcGVydHk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBpZiAoaXNBbHJlYWR5RGVmaW5lZCkgeworICAgICAgICAgIHZhciBzcGVjUG9saWN5ID0gUmVh
Y3RDbGFzc0ludGVyZmFjZVtuYW1lXTsKKworICAgICAgICAgIC8vIFRoZXNlIGNhc2VzIHNob3Vs
ZCBhbHJlYWR5IGJlIGNhdWdodCBieSB2YWxpZGF0ZU1ldGhvZE92ZXJyaWRlLgorICAgICAgICAg
ICEoaXNSZWFjdENsYXNzTWV0aG9kICYmIChzcGVjUG9saWN5ID09PSAnREVGSU5FX01BTllfTUVS
R0VEJyB8fCBzcGVjUG9saWN5ID09PSAnREVGSU5FX01BTlknKSkgPyAiZGV2ZWxvcG1lbnQiICE9
PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdENsYXNzOiBVbmV4cGVjdGVk
IHNwZWMgcG9saWN5ICVzIGZvciBrZXkgJXMgd2hlbiBtaXhpbmcgaW4gY29tcG9uZW50IHNwZWNz
LicsIHNwZWNQb2xpY3ksIG5hbWUpIDogX3Byb2RJbnZhcmlhbnQoJzc3Jywgc3BlY1BvbGljeSwg
bmFtZSkgOiB2b2lkIDA7CisKKyAgICAgICAgICAvLyBGb3IgbWV0aG9kcyB3aGljaCBhcmUgZGVm
aW5lZCBtb3JlIHRoYW4gb25jZSwgY2FsbCB0aGUgZXhpc3RpbmcKKyAgICAgICAgICAvLyBtZXRo
b2RzIGJlZm9yZSBjYWxsaW5nIHRoZSBuZXcgcHJvcGVydHksIG1lcmdpbmcgaWYgYXBwcm9wcmlh
dGUuCisgICAgICAgICAgaWYgKHNwZWNQb2xpY3kgPT09ICdERUZJTkVfTUFOWV9NRVJHRUQnKSB7
CisgICAgICAgICAgICBwcm90b1tuYW1lXSA9IGNyZWF0ZU1lcmdlZFJlc3VsdEZ1bmN0aW9uKHBy
b3RvW25hbWVdLCBwcm9wZXJ0eSk7CisgICAgICAgICAgfSBlbHNlIGlmIChzcGVjUG9saWN5ID09
PSAnREVGSU5FX01BTlknKSB7CisgICAgICAgICAgICBwcm90b1tuYW1lXSA9IGNyZWF0ZUNoYWlu
ZWRGdW5jdGlvbihwcm90b1tuYW1lXSwgcHJvcGVydHkpOworICAgICAgICAgIH0KKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICBwcm90b1tuYW1lXSA9IHByb3BlcnR5OworICAgICAgICAgIGlm
ICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICAgICAgIC8vIEFkZCB2
ZXJib3NlIGRpc3BsYXlOYW1lIHRvIHRoZSBmdW5jdGlvbiwgd2hpY2ggaGVscHMgd2hlbiBsb29r
aW5nCisgICAgICAgICAgICAvLyBhdCBwcm9maWxpbmcgdG9vbHMuCisgICAgICAgICAgICBpZiAo
dHlwZW9mIHByb3BlcnR5ID09PSAnZnVuY3Rpb24nICYmIHNwZWMuZGlzcGxheU5hbWUpIHsKKyAg
ICAgICAgICAgICAgcHJvdG9bbmFtZV0uZGlzcGxheU5hbWUgPSBzcGVjLmRpc3BsYXlOYW1lICsg
J18nICsgbmFtZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
IH0KKyAgICB9CisgIH0KK30KKworZnVuY3Rpb24gbWl4U3RhdGljU3BlY0ludG9Db21wb25lbnQo
Q29uc3RydWN0b3IsIHN0YXRpY3MpIHsKKyAgaWYgKCFzdGF0aWNzKSB7CisgICAgcmV0dXJuOwor
ICB9CisgIGZvciAodmFyIG5hbWUgaW4gc3RhdGljcykgeworICAgIHZhciBwcm9wZXJ0eSA9IHN0
YXRpY3NbbmFtZV07CisgICAgaWYgKCFzdGF0aWNzLmhhc093blByb3BlcnR5KG5hbWUpKSB7Cisg
ICAgICBjb250aW51ZTsKKyAgICB9CisKKyAgICB2YXIgaXNSZXNlcnZlZCA9IG5hbWUgaW4gUkVT
RVJWRURfU1BFQ19LRVlTOworICAgICEhaXNSZXNlcnZlZCA/ICJkZXZlbG9wbWVudCIgIT09ICdw
cm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0Q2xhc3M6IFlvdSBhcmUgYXR0ZW1w
dGluZyB0byBkZWZpbmUgYSByZXNlcnZlZCBwcm9wZXJ0eSwgYCVzYCwgdGhhdCBzaG91bGRuXCd0
IGJlIG9uIHRoZSAic3RhdGljcyIga2V5LiBEZWZpbmUgaXQgYXMgYW4gaW5zdGFuY2UgcHJvcGVy
dHkgaW5zdGVhZDsgaXQgd2lsbCBzdGlsbCBiZSBhY2Nlc3NpYmxlIG9uIHRoZSBjb25zdHJ1Y3Rv
ci4nLCBuYW1lKSA6IF9wcm9kSW52YXJpYW50KCc3OCcsIG5hbWUpIDogdm9pZCAwOworCisgICAg
dmFyIGlzSW5oZXJpdGVkID0gbmFtZSBpbiBDb25zdHJ1Y3RvcjsKKyAgICAhIWlzSW5oZXJpdGVk
ID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnUmVh
Y3RDbGFzczogWW91IGFyZSBhdHRlbXB0aW5nIHRvIGRlZmluZSBgJXNgIG9uIHlvdXIgY29tcG9u
ZW50IG1vcmUgdGhhbiBvbmNlLiBUaGlzIGNvbmZsaWN0IG1heSBiZSBkdWUgdG8gYSBtaXhpbi4n
LCBuYW1lKSA6IF9wcm9kSW52YXJpYW50KCc3OScsIG5hbWUpIDogdm9pZCAwOworICAgIENvbnN0
cnVjdG9yW25hbWVdID0gcHJvcGVydHk7CisgIH0KK30KKworLyoqCisgKiBNZXJnZSB0d28gb2Jq
ZWN0cywgYnV0IHRocm93IGlmIGJvdGggY29udGFpbiB0aGUgc2FtZSBrZXkuCisgKgorICogQHBh
cmFtIHtvYmplY3R9IG9uZSBUaGUgZmlyc3Qgb2JqZWN0LCB3aGljaCBpcyBtdXRhdGVkLgorICog
QHBhcmFtIHtvYmplY3R9IHR3byBUaGUgc2Vjb25kIG9iamVjdAorICogQHJldHVybiB7b2JqZWN0
fSBvbmUgYWZ0ZXIgaXQgaGFzIGJlZW4gbXV0YXRlZCB0byBjb250YWluIGV2ZXJ5dGhpbmcgaW4g
dHdvLgorICovCitmdW5jdGlvbiBtZXJnZUludG9XaXRoTm9EdXBsaWNhdGVLZXlzKG9uZSwgdHdv
KSB7CisgICEob25lICYmIHR3byAmJiB0eXBlb2Ygb25lID09PSAnb2JqZWN0JyAmJiB0eXBlb2Yg
dHdvID09PSAnb2JqZWN0JykgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZh
cmlhbnQoZmFsc2UsICdtZXJnZUludG9XaXRoTm9EdXBsaWNhdGVLZXlzKCk6IENhbm5vdCBtZXJn
ZSBub24tb2JqZWN0cy4nKSA6IF9wcm9kSW52YXJpYW50KCc4MCcpIDogdm9pZCAwOworCisgIGZv
ciAodmFyIGtleSBpbiB0d28pIHsKKyAgICBpZiAodHdvLmhhc093blByb3BlcnR5KGtleSkpIHsK
KyAgICAgICEob25lW2tleV0gPT09IHVuZGVmaW5lZCkgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJv
ZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdtZXJnZUludG9XaXRoTm9EdXBsaWNhdGVLZXlz
KCk6IFRyaWVkIHRvIG1lcmdlIHR3byBvYmplY3RzIHdpdGggdGhlIHNhbWUga2V5OiBgJXNgLiBU
aGlzIGNvbmZsaWN0IG1heSBiZSBkdWUgdG8gYSBtaXhpbjsgaW4gcGFydGljdWxhciwgdGhpcyBt
YXkgYmUgY2F1c2VkIGJ5IHR3byBnZXRJbml0aWFsU3RhdGUoKSBvciBnZXREZWZhdWx0UHJvcHMo
KSBtZXRob2RzIHJldHVybmluZyBvYmplY3RzIHdpdGggY2xhc2hpbmcga2V5cy4nLCBrZXkpIDog
X3Byb2RJbnZhcmlhbnQoJzgxJywga2V5KSA6IHZvaWQgMDsKKyAgICAgIG9uZVtrZXldID0gdHdv
W2tleV07CisgICAgfQorICB9CisgIHJldHVybiBvbmU7Cit9CisKKy8qKgorICogQ3JlYXRlcyBh
IGZ1bmN0aW9uIHRoYXQgaW52b2tlcyB0d28gZnVuY3Rpb25zIGFuZCBtZXJnZXMgdGhlaXIgcmV0
dXJuIHZhbHVlcy4KKyAqCisgKiBAcGFyYW0ge2Z1bmN0aW9ufSBvbmUgRnVuY3Rpb24gdG8gaW52
b2tlIGZpcnN0LgorICogQHBhcmFtIHtmdW5jdGlvbn0gdHdvIEZ1bmN0aW9uIHRvIGludm9rZSBz
ZWNvbmQuCisgKiBAcmV0dXJuIHtmdW5jdGlvbn0gRnVuY3Rpb24gdGhhdCBpbnZva2VzIHRoZSB0
d28gYXJndW1lbnQgZnVuY3Rpb25zLgorICogQHByaXZhdGUKKyAqLworZnVuY3Rpb24gY3JlYXRl
TWVyZ2VkUmVzdWx0RnVuY3Rpb24ob25lLCB0d28pIHsKKyAgcmV0dXJuIGZ1bmN0aW9uIG1lcmdl
ZFJlc3VsdCgpIHsKKyAgICB2YXIgYSA9IG9uZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOworICAg
IHZhciBiID0gdHdvLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CisgICAgaWYgKGEgPT0gbnVsbCkg
eworICAgICAgcmV0dXJuIGI7CisgICAgfSBlbHNlIGlmIChiID09IG51bGwpIHsKKyAgICAgIHJl
dHVybiBhOworICAgIH0KKyAgICB2YXIgYyA9IHt9OworICAgIG1lcmdlSW50b1dpdGhOb0R1cGxp
Y2F0ZUtleXMoYywgYSk7CisgICAgbWVyZ2VJbnRvV2l0aE5vRHVwbGljYXRlS2V5cyhjLCBiKTsK
KyAgICByZXR1cm4gYzsKKyAgfTsKK30KKworLyoqCisgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhh
dCBpbnZva2VzIHR3byBmdW5jdGlvbnMgYW5kIGlnbm9yZXMgdGhlaXIgcmV0dXJuIHZhbGVzLgor
ICoKKyAqIEBwYXJhbSB7ZnVuY3Rpb259IG9uZSBGdW5jdGlvbiB0byBpbnZva2UgZmlyc3QuCisg
KiBAcGFyYW0ge2Z1bmN0aW9ufSB0d28gRnVuY3Rpb24gdG8gaW52b2tlIHNlY29uZC4KKyAqIEBy
ZXR1cm4ge2Z1bmN0aW9ufSBGdW5jdGlvbiB0aGF0IGludm9rZXMgdGhlIHR3byBhcmd1bWVudCBm
dW5jdGlvbnMuCisgKiBAcHJpdmF0ZQorICovCitmdW5jdGlvbiBjcmVhdGVDaGFpbmVkRnVuY3Rp
b24ob25lLCB0d28pIHsKKyAgcmV0dXJuIGZ1bmN0aW9uIGNoYWluZWRGdW5jdGlvbigpIHsKKyAg
ICBvbmUuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKKyAgICB0d28uYXBwbHkodGhpcywgYXJndW1l
bnRzKTsKKyAgfTsKK30KKworLyoqCisgKiBCaW5kcyBhIG1ldGhvZCB0byB0aGUgY29tcG9uZW50
LgorICoKKyAqIEBwYXJhbSB7b2JqZWN0fSBjb21wb25lbnQgQ29tcG9uZW50IHdob3NlIG1ldGhv
ZCBpcyBnb2luZyB0byBiZSBib3VuZC4KKyAqIEBwYXJhbSB7ZnVuY3Rpb259IG1ldGhvZCBNZXRo
b2QgdG8gYmUgYm91bmQuCisgKiBAcmV0dXJuIHtmdW5jdGlvbn0gVGhlIGJvdW5kIG1ldGhvZC4K
KyAqLworZnVuY3Rpb24gYmluZEF1dG9CaW5kTWV0aG9kKGNvbXBvbmVudCwgbWV0aG9kKSB7Cisg
IHZhciBib3VuZE1ldGhvZCA9IG1ldGhvZC5iaW5kKGNvbXBvbmVudCk7CisgIGlmICgiZGV2ZWxv
cG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICBib3VuZE1ldGhvZC5fX3JlYWN0Qm91bmRD
b250ZXh0ID0gY29tcG9uZW50OworICAgIGJvdW5kTWV0aG9kLl9fcmVhY3RCb3VuZE1ldGhvZCA9
IG1ldGhvZDsKKyAgICBib3VuZE1ldGhvZC5fX3JlYWN0Qm91bmRBcmd1bWVudHMgPSBudWxsOwor
ICAgIHZhciBjb21wb25lbnROYW1lID0gY29tcG9uZW50LmNvbnN0cnVjdG9yLmRpc3BsYXlOYW1l
OworICAgIHZhciBfYmluZCA9IGJvdW5kTWV0aG9kLmJpbmQ7CisgICAgYm91bmRNZXRob2QuYmlu
ZCA9IGZ1bmN0aW9uIChuZXdUaGlzKSB7CisgICAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRz
Lmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW4gPiAxID8gX2xlbiAtIDEgOiAwKSwgX2tleSA9IDE7
IF9rZXkgPCBfbGVuOyBfa2V5KyspIHsKKyAgICAgICAgYXJnc1tfa2V5IC0gMV0gPSBhcmd1bWVu
dHNbX2tleV07CisgICAgICB9CisKKyAgICAgIC8vIFVzZXIgaXMgdHJ5aW5nIHRvIGJpbmQoKSBh
biBhdXRvYm91bmQgbWV0aG9kOyB3ZSBlZmZlY3RpdmVseSB3aWxsCisgICAgICAvLyBpZ25vcmUg
dGhlIHZhbHVlIG9mICJ0aGlzIiB0aGF0IHRoZSB1c2VyIGlzIHRyeWluZyB0byB1c2UsIHNvCisg
ICAgICAvLyBsZXQncyB3YXJuLgorICAgICAgaWYgKG5ld1RoaXMgIT09IGNvbXBvbmVudCAmJiBu
ZXdUaGlzICE9PSBudWxsKSB7CisgICAgICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9u
JyA/IHdhcm5pbmcoZmFsc2UsICdiaW5kKCk6IFJlYWN0IGNvbXBvbmVudCBtZXRob2RzIG1heSBv
bmx5IGJlIGJvdW5kIHRvIHRoZSAnICsgJ2NvbXBvbmVudCBpbnN0YW5jZS4gU2VlICVzJywgY29t
cG9uZW50TmFtZSkgOiB2b2lkIDA7CisgICAgICB9IGVsc2UgaWYgKCFhcmdzLmxlbmd0aCkgewor
ICAgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAn
YmluZCgpOiBZb3UgYXJlIGJpbmRpbmcgYSBjb21wb25lbnQgbWV0aG9kIHRvIHRoZSBjb21wb25l
bnQuICcgKyAnUmVhY3QgZG9lcyB0aGlzIGZvciB5b3UgYXV0b21hdGljYWxseSBpbiBhIGhpZ2gt
cGVyZm9ybWFuY2UgJyArICd3YXksIHNvIHlvdSBjYW4gc2FmZWx5IHJlbW92ZSB0aGlzIGNhbGwu
IFNlZSAlcycsIGNvbXBvbmVudE5hbWUpIDogdm9pZCAwOworICAgICAgICByZXR1cm4gYm91bmRN
ZXRob2Q7CisgICAgICB9CisgICAgICB2YXIgcmVib3VuZE1ldGhvZCA9IF9iaW5kLmFwcGx5KGJv
dW5kTWV0aG9kLCBhcmd1bWVudHMpOworICAgICAgcmVib3VuZE1ldGhvZC5fX3JlYWN0Qm91bmRD
b250ZXh0ID0gY29tcG9uZW50OworICAgICAgcmVib3VuZE1ldGhvZC5fX3JlYWN0Qm91bmRNZXRo
b2QgPSBtZXRob2Q7CisgICAgICByZWJvdW5kTWV0aG9kLl9fcmVhY3RCb3VuZEFyZ3VtZW50cyA9
IGFyZ3M7CisgICAgICByZXR1cm4gcmVib3VuZE1ldGhvZDsKKyAgICB9OworICB9CisgIHJldHVy
biBib3VuZE1ldGhvZDsKK30KKworLyoqCisgKiBCaW5kcyBhbGwgYXV0by1ib3VuZCBtZXRob2Rz
IGluIGEgY29tcG9uZW50LgorICoKKyAqIEBwYXJhbSB7b2JqZWN0fSBjb21wb25lbnQgQ29tcG9u
ZW50IHdob3NlIG1ldGhvZCBpcyBnb2luZyB0byBiZSBib3VuZC4KKyAqLworZnVuY3Rpb24gYmlu
ZEF1dG9CaW5kTWV0aG9kcyhjb21wb25lbnQpIHsKKyAgdmFyIHBhaXJzID0gY29tcG9uZW50Ll9f
cmVhY3RBdXRvQmluZFBhaXJzOworICBmb3IgKHZhciBpID0gMDsgaSA8IHBhaXJzLmxlbmd0aDsg
aSArPSAyKSB7CisgICAgdmFyIGF1dG9CaW5kS2V5ID0gcGFpcnNbaV07CisgICAgdmFyIG1ldGhv
ZCA9IHBhaXJzW2kgKyAxXTsKKyAgICBjb21wb25lbnRbYXV0b0JpbmRLZXldID0gYmluZEF1dG9C
aW5kTWV0aG9kKGNvbXBvbmVudCwgbWV0aG9kKTsKKyAgfQorfQorCisvKioKKyAqIEFkZCBtb3Jl
IHRvIHRoZSBSZWFjdENsYXNzIGJhc2UgY2xhc3MuIFRoZXNlIGFyZSBhbGwgbGVnYWN5IGZlYXR1
cmVzIGFuZAorICogdGhlcmVmb3JlIG5vdCBhbHJlYWR5IHBhcnQgb2YgdGhlIG1vZGVybiBSZWFj
dENvbXBvbmVudC4KKyAqLwordmFyIFJlYWN0Q2xhc3NNaXhpbiA9IHsKKworICAvKioKKyAgICog
VE9ETzogVGhpcyB3aWxsIGJlIGRlcHJlY2F0ZWQgYmVjYXVzZSBzdGF0ZSBzaG91bGQgYWx3YXlz
IGtlZXAgYSBjb25zaXN0ZW50CisgICAqIHR5cGUgc2lnbmF0dXJlIGFuZCB0aGUgb25seSB1c2Ug
Y2FzZSBmb3IgdGhpcywgaXMgdG8gYXZvaWQgdGhhdC4KKyAgICovCisgIHJlcGxhY2VTdGF0ZTog
ZnVuY3Rpb24gKG5ld1N0YXRlLCBjYWxsYmFjaykgeworICAgIHRoaXMudXBkYXRlci5lbnF1ZXVl
UmVwbGFjZVN0YXRlKHRoaXMsIG5ld1N0YXRlKTsKKyAgICBpZiAoY2FsbGJhY2spIHsKKyAgICAg
IHRoaXMudXBkYXRlci5lbnF1ZXVlQ2FsbGJhY2sodGhpcywgY2FsbGJhY2ssICdyZXBsYWNlU3Rh
dGUnKTsKKyAgICB9CisgIH0sCisKKyAgLyoqCisgICAqIENoZWNrcyB3aGV0aGVyIG9yIG5vdCB0
aGlzIGNvbXBvc2l0ZSBjb21wb25lbnQgaXMgbW91bnRlZC4KKyAgICogQHJldHVybiB7Ym9vbGVh
bn0gVHJ1ZSBpZiBtb3VudGVkLCBmYWxzZSBvdGhlcndpc2UuCisgICAqIEBwcm90ZWN0ZWQKKyAg
ICogQGZpbmFsCisgICAqLworICBpc01vdW50ZWQ6IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4g
dGhpcy51cGRhdGVyLmlzTW91bnRlZCh0aGlzKTsKKyAgfQorfTsKKwordmFyIFJlYWN0Q2xhc3ND
b21wb25lbnQgPSBmdW5jdGlvbiAoKSB7fTsKK19hc3NpZ24oUmVhY3RDbGFzc0NvbXBvbmVudC5w
cm90b3R5cGUsIFJlYWN0Q29tcG9uZW50LnByb3RvdHlwZSwgUmVhY3RDbGFzc01peGluKTsKKwor
LyoqCisgKiBNb2R1bGUgZm9yIGNyZWF0aW5nIGNvbXBvc2l0ZSBjb21wb25lbnRzLgorICoKKyAq
IEBjbGFzcyBSZWFjdENsYXNzCisgKi8KK3ZhciBSZWFjdENsYXNzID0geworCisgIC8qKgorICAg
KiBDcmVhdGVzIGEgY29tcG9zaXRlIGNvbXBvbmVudCBjbGFzcyBnaXZlbiBhIGNsYXNzIHNwZWNp
ZmljYXRpb24uCisgICAqIFNlZSBodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2Nz
L3RvcC1sZXZlbC1hcGkuaHRtbCNyZWFjdC5jcmVhdGVjbGFzcworICAgKgorICAgKiBAcGFyYW0g
e29iamVjdH0gc3BlYyBDbGFzcyBzcGVjaWZpY2F0aW9uICh3aGljaCBtdXN0IGRlZmluZSBgcmVu
ZGVyYCkuCisgICAqIEByZXR1cm4ge2Z1bmN0aW9ufSBDb21wb25lbnQgY29uc3RydWN0b3IgZnVu
Y3Rpb24uCisgICAqIEBwdWJsaWMKKyAgICovCisgIGNyZWF0ZUNsYXNzOiBmdW5jdGlvbiAoc3Bl
YykgeworICAgIC8vIFRvIGtlZXAgb3VyIHdhcm5pbmdzIG1vcmUgdW5kZXJzdGFuZGFibGUsIHdl
J2xsIHVzZSBhIGxpdHRsZSBoYWNrIGhlcmUgdG8KKyAgICAvLyBlbnN1cmUgdGhhdCBDb25zdHJ1
Y3Rvci5uYW1lICE9PSAnQ29uc3RydWN0b3InLiBUaGlzIG1ha2VzIHN1cmUgd2UgZG9uJ3QKKyAg
ICAvLyB1bm5lY2Vzc2FyaWx5IGlkZW50aWZ5IGEgY2xhc3Mgd2l0aG91dCBkaXNwbGF5TmFtZSBh
cyAnQ29uc3RydWN0b3InLgorICAgIHZhciBDb25zdHJ1Y3RvciA9IGlkZW50aXR5KGZ1bmN0aW9u
IChwcm9wcywgY29udGV4dCwgdXBkYXRlcikgeworICAgICAgLy8gVGhpcyBjb25zdHJ1Y3RvciBn
ZXRzIG92ZXJyaWRkZW4gYnkgbW9ja3MuIFRoZSBhcmd1bWVudCBpcyB1c2VkCisgICAgICAvLyBi
eSBtb2NrcyB0byBhc3NlcnQgb24gd2hhdCBnZXRzIG1vdW50ZWQuCisKKyAgICAgIGlmICgiZGV2
ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICAgImRldmVsb3BtZW50IiAhPT0g
J3Byb2R1Y3Rpb24nID8gd2FybmluZyh0aGlzIGluc3RhbmNlb2YgQ29uc3RydWN0b3IsICdTb21l
dGhpbmcgaXMgY2FsbGluZyBhIFJlYWN0IGNvbXBvbmVudCBkaXJlY3RseS4gVXNlIGEgZmFjdG9y
eSBvciAnICsgJ0pTWCBpbnN0ZWFkLiBTZWU6IGh0dHBzOi8vZmIubWUvcmVhY3QtbGVnYWN5ZmFj
dG9yeScpIDogdm9pZCAwOworICAgICAgfQorCisgICAgICAvLyBXaXJlIHVwIGF1dG8tYmluZGlu
ZworICAgICAgaWYgKHRoaXMuX19yZWFjdEF1dG9CaW5kUGFpcnMubGVuZ3RoKSB7CisgICAgICAg
IGJpbmRBdXRvQmluZE1ldGhvZHModGhpcyk7CisgICAgICB9CisKKyAgICAgIHRoaXMucHJvcHMg
PSBwcm9wczsKKyAgICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7CisgICAgICB0aGlzLnJlZnMg
PSBlbXB0eU9iamVjdDsKKyAgICAgIHRoaXMudXBkYXRlciA9IHVwZGF0ZXIgfHwgUmVhY3ROb29w
VXBkYXRlUXVldWU7CisKKyAgICAgIHRoaXMuc3RhdGUgPSBudWxsOworCisgICAgICAvLyBSZWFj
dENsYXNzZXMgZG9lc24ndCBoYXZlIGNvbnN0cnVjdG9ycy4gSW5zdGVhZCwgdGhleSB1c2UgdGhl
CisgICAgICAvLyBnZXRJbml0aWFsU3RhdGUgYW5kIGNvbXBvbmVudFdpbGxNb3VudCBtZXRob2Rz
IGZvciBpbml0aWFsaXphdGlvbi4KKworICAgICAgdmFyIGluaXRpYWxTdGF0ZSA9IHRoaXMuZ2V0
SW5pdGlhbFN0YXRlID8gdGhpcy5nZXRJbml0aWFsU3RhdGUoKSA6IG51bGw7CisgICAgICBpZiAo
ImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAgIC8vIFdlIGFsbG93IGF1
dG8tbW9ja3MgdG8gcHJvY2VlZCBhcyBpZiB0aGV5J3JlIHJldHVybmluZyBudWxsLgorICAgICAg
ICBpZiAoaW5pdGlhbFN0YXRlID09PSB1bmRlZmluZWQgJiYgdGhpcy5nZXRJbml0aWFsU3RhdGUu
X2lzTW9ja0Z1bmN0aW9uKSB7CisgICAgICAgICAgLy8gVGhpcyBpcyBwcm9iYWJseSBiYWQgcHJh
Y3RpY2UuIENvbnNpZGVyIHdhcm5pbmcgaGVyZSBhbmQKKyAgICAgICAgICAvLyBkZXByZWNhdGlu
ZyB0aGlzIGNvbnZlbmllbmNlLgorICAgICAgICAgIGluaXRpYWxTdGF0ZSA9IG51bGw7CisgICAg
ICAgIH0KKyAgICAgIH0KKyAgICAgICEodHlwZW9mIGluaXRpYWxTdGF0ZSA9PT0gJ29iamVjdCcg
JiYgIUFycmF5LmlzQXJyYXkoaW5pdGlhbFN0YXRlKSkgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJv
ZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICclcy5nZXRJbml0aWFsU3RhdGUoKTogbXVzdCBy
ZXR1cm4gYW4gb2JqZWN0IG9yIG51bGwnLCBDb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZSB8fCAnUmVh
Y3RDb21wb3NpdGVDb21wb25lbnQnKSA6IF9wcm9kSW52YXJpYW50KCc4MicsIENvbnN0cnVjdG9y
LmRpc3BsYXlOYW1lIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDogdm9pZCAwOworCisg
ICAgICB0aGlzLnN0YXRlID0gaW5pdGlhbFN0YXRlOworICAgIH0pOworICAgIENvbnN0cnVjdG9y
LnByb3RvdHlwZSA9IG5ldyBSZWFjdENsYXNzQ29tcG9uZW50KCk7CisgICAgQ29uc3RydWN0b3Iu
cHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQ29uc3RydWN0b3I7CisgICAgQ29uc3RydWN0b3IucHJv
dG90eXBlLl9fcmVhY3RBdXRvQmluZFBhaXJzID0gW107CisKKyAgICBpbmplY3RlZE1peGlucy5m
b3JFYWNoKG1peFNwZWNJbnRvQ29tcG9uZW50LmJpbmQobnVsbCwgQ29uc3RydWN0b3IpKTsKKwor
ICAgIG1peFNwZWNJbnRvQ29tcG9uZW50KENvbnN0cnVjdG9yLCBzcGVjKTsKKworICAgIC8vIElu
aXRpYWxpemUgdGhlIGRlZmF1bHRQcm9wcyBwcm9wZXJ0eSBhZnRlciBhbGwgbWl4aW5zIGhhdmUg
YmVlbiBtZXJnZWQuCisgICAgaWYgKENvbnN0cnVjdG9yLmdldERlZmF1bHRQcm9wcykgeworICAg
ICAgQ29uc3RydWN0b3IuZGVmYXVsdFByb3BzID0gQ29uc3RydWN0b3IuZ2V0RGVmYXVsdFByb3Bz
KCk7CisgICAgfQorCisgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgewor
ICAgICAgLy8gVGhpcyBpcyBhIHRhZyB0byBpbmRpY2F0ZSB0aGF0IHRoZSB1c2Ugb2YgdGhlc2Ug
bWV0aG9kIG5hbWVzIGlzIG9rLAorICAgICAgLy8gc2luY2UgaXQncyB1c2VkIHdpdGggY3JlYXRl
Q2xhc3MuIElmIGl0J3Mgbm90LCB0aGVuIGl0J3MgbGlrZWx5IGEKKyAgICAgIC8vIG1pc3Rha2Ug
c28gd2UnbGwgd2FybiB5b3UgdG8gdXNlIHRoZSBzdGF0aWMgcHJvcGVydHksIHByb3BlcnR5Cisg
ICAgICAvLyBpbml0aWFsaXplciBvciBjb25zdHJ1Y3RvciByZXNwZWN0aXZlbHkuCisgICAgICBp
ZiAoQ29uc3RydWN0b3IuZ2V0RGVmYXVsdFByb3BzKSB7CisgICAgICAgIENvbnN0cnVjdG9yLmdl
dERlZmF1bHRQcm9wcy5pc1JlYWN0Q2xhc3NBcHByb3ZlZCA9IHt9OworICAgICAgfQorICAgICAg
aWYgKENvbnN0cnVjdG9yLnByb3RvdHlwZS5nZXRJbml0aWFsU3RhdGUpIHsKKyAgICAgICAgQ29u
c3RydWN0b3IucHJvdG90eXBlLmdldEluaXRpYWxTdGF0ZS5pc1JlYWN0Q2xhc3NBcHByb3ZlZCA9
IHt9OworICAgICAgfQorICAgIH0KKworICAgICFDb25zdHJ1Y3Rvci5wcm90b3R5cGUucmVuZGVy
ID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnY3Jl
YXRlQ2xhc3MoLi4uKTogQ2xhc3Mgc3BlY2lmaWNhdGlvbiBtdXN0IGltcGxlbWVudCBhIGByZW5k
ZXJgIG1ldGhvZC4nKSA6IF9wcm9kSW52YXJpYW50KCc4MycpIDogdm9pZCAwOworCisgICAgaWYg
KCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgImRldmVsb3BtZW50IiAh
PT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyghQ29uc3RydWN0b3IucHJvdG90eXBlLmNvbXBvbmVu
dFNob3VsZFVwZGF0ZSwgJyVzIGhhcyBhIG1ldGhvZCBjYWxsZWQgJyArICdjb21wb25lbnRTaG91
bGRVcGRhdGUoKS4gRGlkIHlvdSBtZWFuIHNob3VsZENvbXBvbmVudFVwZGF0ZSgpPyAnICsgJ1Ro
ZSBuYW1lIGlzIHBocmFzZWQgYXMgYSBxdWVzdGlvbiBiZWNhdXNlIHRoZSBmdW5jdGlvbiBpcyAn
ICsgJ2V4cGVjdGVkIHRvIHJldHVybiBhIHZhbHVlLicsIHNwZWMuZGlzcGxheU5hbWUgfHwgJ0Eg
Y29tcG9uZW50JykgOiB2b2lkIDA7CisgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlv
bicgPyB3YXJuaW5nKCFDb25zdHJ1Y3Rvci5wcm90b3R5cGUuY29tcG9uZW50V2lsbFJlY2lldmVQ
cm9wcywgJyVzIGhhcyBhIG1ldGhvZCBjYWxsZWQgJyArICdjb21wb25lbnRXaWxsUmVjaWV2ZVBy
b3BzKCkuIERpZCB5b3UgbWVhbiBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKCk/Jywgc3BlYy5k
aXNwbGF5TmFtZSB8fCAnQSBjb21wb25lbnQnKSA6IHZvaWQgMDsKKyAgICB9CisKKyAgICAvLyBS
ZWR1Y2UgdGltZSBzcGVudCBkb2luZyBsb29rdXBzIGJ5IHNldHRpbmcgdGhlc2Ugb24gdGhlIHBy
b3RvdHlwZS4KKyAgICBmb3IgKHZhciBtZXRob2ROYW1lIGluIFJlYWN0Q2xhc3NJbnRlcmZhY2Up
IHsKKyAgICAgIGlmICghQ29uc3RydWN0b3IucHJvdG90eXBlW21ldGhvZE5hbWVdKSB7CisgICAg
ICAgIENvbnN0cnVjdG9yLnByb3RvdHlwZVttZXRob2ROYW1lXSA9IG51bGw7CisgICAgICB9Cisg
ICAgfQorCisgICAgcmV0dXJuIENvbnN0cnVjdG9yOworICB9LAorCisgIGluamVjdGlvbjogewor
ICAgIGluamVjdE1peGluOiBmdW5jdGlvbiAobWl4aW4pIHsKKyAgICAgIGluamVjdGVkTWl4aW5z
LnB1c2gobWl4aW4pOworICAgIH0KKyAgfQorCit9OworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0
Q2xhc3M7Cit9LHsiMTEiOjExLCIxNiI6MTYsIjIxIjoyMSwiMjIiOjIyLCIzOCI6MzgsIjQ1Ijo0
NSwiNDYiOjQ2LCI0OCI6NDgsIjQ5Ijo0OX1dLDExOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxl
eHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4K
KyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNl
bnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0
aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRF
TlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7
CisKK3ZhciBfcHJvZEludmFyaWFudCA9IF9kZXJlcV8oMzgpOworCit2YXIgUmVhY3ROb29wVXBk
YXRlUXVldWUgPSBfZGVyZXFfKDIxKTsKKwordmFyIGNhbkRlZmluZVByb3BlcnR5ID0gX2RlcmVx
XygzMyk7Cit2YXIgZW1wdHlPYmplY3QgPSBfZGVyZXFfKDQ1KTsKK3ZhciBpbnZhcmlhbnQgPSBf
ZGVyZXFfKDQ2KTsKK3ZhciB3YXJuaW5nID0gX2RlcmVxXyg0OCk7CisKKy8qKgorICogQmFzZSBj
bGFzcyBoZWxwZXJzIGZvciB0aGUgdXBkYXRpbmcgc3RhdGUgb2YgYSBjb21wb25lbnQuCisgKi8K
K2Z1bmN0aW9uIFJlYWN0Q29tcG9uZW50KHByb3BzLCBjb250ZXh0LCB1cGRhdGVyKSB7CisgIHRo
aXMucHJvcHMgPSBwcm9wczsKKyAgdGhpcy5jb250ZXh0ID0gY29udGV4dDsKKyAgdGhpcy5yZWZz
ID0gZW1wdHlPYmplY3Q7CisgIC8vIFdlIGluaXRpYWxpemUgdGhlIGRlZmF1bHQgdXBkYXRlciBi
dXQgdGhlIHJlYWwgb25lIGdldHMgaW5qZWN0ZWQgYnkgdGhlCisgIC8vIHJlbmRlcmVyLgorICB0
aGlzLnVwZGF0ZXIgPSB1cGRhdGVyIHx8IFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlOworfQorCitSZWFj
dENvbXBvbmVudC5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudCA9IHt9OworCisvKioKKyAqIFNl
dHMgYSBzdWJzZXQgb2YgdGhlIHN0YXRlLiBBbHdheXMgdXNlIHRoaXMgdG8gbXV0YXRlCisgKiBz
dGF0ZS4gWW91IHNob3VsZCB0cmVhdCBgdGhpcy5zdGF0ZWAgYXMgaW1tdXRhYmxlLgorICoKKyAq
IFRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IGB0aGlzLnN0YXRlYCB3aWxsIGJlIGltbWVkaWF0
ZWx5IHVwZGF0ZWQsIHNvCisgKiBhY2Nlc3NpbmcgYHRoaXMuc3RhdGVgIGFmdGVyIGNhbGxpbmcg
dGhpcyBtZXRob2QgbWF5IHJldHVybiB0aGUgb2xkIHZhbHVlLgorICoKKyAqIFRoZXJlIGlzIG5v
IGd1YXJhbnRlZSB0aGF0IGNhbGxzIHRvIGBzZXRTdGF0ZWAgd2lsbCBydW4gc3luY2hyb25vdXNs
eSwKKyAqIGFzIHRoZXkgbWF5IGV2ZW50dWFsbHkgYmUgYmF0Y2hlZCB0b2dldGhlci4gIFlvdSBj
YW4gcHJvdmlkZSBhbiBvcHRpb25hbAorICogY2FsbGJhY2sgdGhhdCB3aWxsIGJlIGV4ZWN1dGVk
IHdoZW4gdGhlIGNhbGwgdG8gc2V0U3RhdGUgaXMgYWN0dWFsbHkKKyAqIGNvbXBsZXRlZC4KKyAq
CisgKiBXaGVuIGEgZnVuY3Rpb24gaXMgcHJvdmlkZWQgdG8gc2V0U3RhdGUsIGl0IHdpbGwgYmUg
Y2FsbGVkIGF0IHNvbWUgcG9pbnQgaW4KKyAqIHRoZSBmdXR1cmUgKG5vdCBzeW5jaHJvbm91c2x5
KS4gSXQgd2lsbCBiZSBjYWxsZWQgd2l0aCB0aGUgdXAgdG8gZGF0ZQorICogY29tcG9uZW50IGFy
Z3VtZW50cyAoc3RhdGUsIHByb3BzLCBjb250ZXh0KS4gVGhlc2UgdmFsdWVzIGNhbiBiZSBkaWZm
ZXJlbnQKKyAqIGZyb20gdGhpcy4qIGJlY2F1c2UgeW91ciBmdW5jdGlvbiBtYXkgYmUgY2FsbGVk
IGFmdGVyIHJlY2VpdmVQcm9wcyBidXQgYmVmb3JlCisgKiBzaG91bGRDb21wb25lbnRVcGRhdGUs
IGFuZCB0aGlzIG5ldyBzdGF0ZSwgcHJvcHMsIGFuZCBjb250ZXh0IHdpbGwgbm90IHlldCBiZQor
ICogYXNzaWduZWQgdG8gdGhpcy4KKyAqCisgKiBAcGFyYW0ge29iamVjdHxmdW5jdGlvbn0gcGFy
dGlhbFN0YXRlIE5leHQgcGFydGlhbCBzdGF0ZSBvciBmdW5jdGlvbiB0bworICogICAgICAgIHBy
b2R1Y2UgbmV4dCBwYXJ0aWFsIHN0YXRlIHRvIGJlIG1lcmdlZCB3aXRoIGN1cnJlbnQgc3RhdGUu
CisgKiBAcGFyYW0gez9mdW5jdGlvbn0gY2FsbGJhY2sgQ2FsbGVkIGFmdGVyIHN0YXRlIGlzIHVw
ZGF0ZWQuCisgKiBAZmluYWwKKyAqIEBwcm90ZWN0ZWQKKyAqLworUmVhY3RDb21wb25lbnQucHJv
dG90eXBlLnNldFN0YXRlID0gZnVuY3Rpb24gKHBhcnRpYWxTdGF0ZSwgY2FsbGJhY2spIHsKKyAg
ISh0eXBlb2YgcGFydGlhbFN0YXRlID09PSAnb2JqZWN0JyB8fCB0eXBlb2YgcGFydGlhbFN0YXRl
ID09PSAnZnVuY3Rpb24nIHx8IHBhcnRpYWxTdGF0ZSA9PSBudWxsKSA/ICJkZXZlbG9wbWVudCIg
IT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3NldFN0YXRlKC4uLik6IHRha2Vz
IGFuIG9iamVjdCBvZiBzdGF0ZSB2YXJpYWJsZXMgdG8gdXBkYXRlIG9yIGEgZnVuY3Rpb24gd2hp
Y2ggcmV0dXJucyBhbiBvYmplY3Qgb2Ygc3RhdGUgdmFyaWFibGVzLicpIDogX3Byb2RJbnZhcmlh
bnQoJzg1JykgOiB2b2lkIDA7CisgIHRoaXMudXBkYXRlci5lbnF1ZXVlU2V0U3RhdGUodGhpcywg
cGFydGlhbFN0YXRlKTsKKyAgaWYgKGNhbGxiYWNrKSB7CisgICAgdGhpcy51cGRhdGVyLmVucXVl
dWVDYWxsYmFjayh0aGlzLCBjYWxsYmFjaywgJ3NldFN0YXRlJyk7CisgIH0KK307CisKKy8qKgor
ICogRm9yY2VzIGFuIHVwZGF0ZS4gVGhpcyBzaG91bGQgb25seSBiZSBpbnZva2VkIHdoZW4gaXQg
aXMga25vd24gd2l0aAorICogY2VydGFpbnR5IHRoYXQgd2UgYXJlICoqbm90KiogaW4gYSBET00g
dHJhbnNhY3Rpb24uCisgKgorICogWW91IG1heSB3YW50IHRvIGNhbGwgdGhpcyB3aGVuIHlvdSBr
bm93IHRoYXQgc29tZSBkZWVwZXIgYXNwZWN0IG9mIHRoZQorICogY29tcG9uZW50J3Mgc3RhdGUg
aGFzIGNoYW5nZWQgYnV0IGBzZXRTdGF0ZWAgd2FzIG5vdCBjYWxsZWQuCisgKgorICogVGhpcyB3
aWxsIG5vdCBpbnZva2UgYHNob3VsZENvbXBvbmVudFVwZGF0ZWAsIGJ1dCBpdCB3aWxsIGludm9r
ZQorICogYGNvbXBvbmVudFdpbGxVcGRhdGVgIGFuZCBgY29tcG9uZW50RGlkVXBkYXRlYC4KKyAq
CisgKiBAcGFyYW0gez9mdW5jdGlvbn0gY2FsbGJhY2sgQ2FsbGVkIGFmdGVyIHVwZGF0ZSBpcyBj
b21wbGV0ZS4KKyAqIEBmaW5hbAorICogQHByb3RlY3RlZAorICovCitSZWFjdENvbXBvbmVudC5w
cm90b3R5cGUuZm9yY2VVcGRhdGUgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHsKKyAgdGhpcy51cGRh
dGVyLmVucXVldWVGb3JjZVVwZGF0ZSh0aGlzKTsKKyAgaWYgKGNhbGxiYWNrKSB7CisgICAgdGhp
cy51cGRhdGVyLmVucXVldWVDYWxsYmFjayh0aGlzLCBjYWxsYmFjaywgJ2ZvcmNlVXBkYXRlJyk7
CisgIH0KK307CisKKy8qKgorICogRGVwcmVjYXRlZCBBUElzLiBUaGVzZSBBUElzIHVzZWQgdG8g
ZXhpc3Qgb24gY2xhc3NpYyBSZWFjdCBjbGFzc2VzIGJ1dCBzaW5jZQorICogd2Ugd291bGQgbGlr
ZSB0byBkZXByZWNhdGUgdGhlbSwgd2UncmUgbm90IGdvaW5nIHRvIG1vdmUgdGhlbSBvdmVyIHRv
IHRoaXMKKyAqIG1vZGVybiBiYXNlIGNsYXNzLiBJbnN0ZWFkLCB3ZSBkZWZpbmUgYSBnZXR0ZXIg
dGhhdCB3YXJucyBpZiBpdCdzIGFjY2Vzc2VkLgorICovCitpZiAoImRldmVsb3BtZW50IiAhPT0g
J3Byb2R1Y3Rpb24nKSB7CisgIHZhciBkZXByZWNhdGVkQVBJcyA9IHsKKyAgICBpc01vdW50ZWQ6
IFsnaXNNb3VudGVkJywgJ0luc3RlYWQsIG1ha2Ugc3VyZSB0byBjbGVhbiB1cCBzdWJzY3JpcHRp
b25zIGFuZCBwZW5kaW5nIHJlcXVlc3RzIGluICcgKyAnY29tcG9uZW50V2lsbFVubW91bnQgdG8g
cHJldmVudCBtZW1vcnkgbGVha3MuJ10sCisgICAgcmVwbGFjZVN0YXRlOiBbJ3JlcGxhY2VTdGF0
ZScsICdSZWZhY3RvciB5b3VyIGNvZGUgdG8gdXNlIHNldFN0YXRlIGluc3RlYWQgKHNlZSAnICsg
J2h0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvMzIzNikuJ10KKyAgfTsK
KyAgdmFyIGRlZmluZURlcHJlY2F0aW9uV2FybmluZyA9IGZ1bmN0aW9uIChtZXRob2ROYW1lLCBp
bmZvKSB7CisgICAgaWYgKGNhbkRlZmluZVByb3BlcnR5KSB7CisgICAgICBPYmplY3QuZGVmaW5l
UHJvcGVydHkoUmVhY3RDb21wb25lbnQucHJvdG90eXBlLCBtZXRob2ROYW1lLCB7CisgICAgICAg
IGdldDogZnVuY3Rpb24gKCkgeworICAgICAgICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0
aW9uJyA/IHdhcm5pbmcoZmFsc2UsICclcyguLi4pIGlzIGRlcHJlY2F0ZWQgaW4gcGxhaW4gSmF2
YVNjcmlwdCBSZWFjdCBjbGFzc2VzLiAlcycsIGluZm9bMF0sIGluZm9bMV0pIDogdm9pZCAwOwor
ICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7CisgICAgICAgIH0KKyAgICAgIH0pOworICAgIH0K
KyAgfTsKKyAgZm9yICh2YXIgZm5OYW1lIGluIGRlcHJlY2F0ZWRBUElzKSB7CisgICAgaWYgKGRl
cHJlY2F0ZWRBUElzLmhhc093blByb3BlcnR5KGZuTmFtZSkpIHsKKyAgICAgIGRlZmluZURlcHJl
Y2F0aW9uV2FybmluZyhmbk5hbWUsIGRlcHJlY2F0ZWRBUElzW2ZuTmFtZV0pOworICAgIH0KKyAg
fQorfQorCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0Q29tcG9uZW50OworfSx7IjIxIjoyMSwiMzMi
OjMzLCIzOCI6MzgsIjQ1Ijo0NSwiNDYiOjQ2LCI0OCI6NDh9XSwxMjpbZnVuY3Rpb24oX2RlcmVx
Xyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDE2LXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNv
ZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQor
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBp
biB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiAKKyAqLwor
CisndXNlIHN0cmljdCc7CisKK3ZhciBfcHJvZEludmFyaWFudCA9IF9kZXJlcV8oMzgpOworCit2
YXIgUmVhY3RDdXJyZW50T3duZXIgPSBfZGVyZXFfKDE0KTsKKwordmFyIGludmFyaWFudCA9IF9k
ZXJlcV8oNDYpOwordmFyIHdhcm5pbmcgPSBfZGVyZXFfKDQ4KTsKKworZnVuY3Rpb24gaXNOYXRp
dmUoZm4pIHsKKyAgLy8gQmFzZWQgb24gaXNOYXRpdmUoKSBmcm9tIExvZGFzaAorICB2YXIgZnVu
Y1RvU3RyaW5nID0gRnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nOworICB2YXIgaGFzT3duUHJv
cGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5OworICB2YXIgcmVJc05hdGl2
ZSA9IFJlZ0V4cCgnXicgKyBmdW5jVG9TdHJpbmcKKyAgLy8gVGFrZSBhbiBleGFtcGxlIG5hdGl2
ZSBmdW5jdGlvbiBzb3VyY2UgZm9yIGNvbXBhcmlzb24KKyAgLmNhbGwoaGFzT3duUHJvcGVydHkp
CisgIC8vIFN0cmlwIHJlZ2V4IGNoYXJhY3RlcnMgc28gd2UgY2FuIHVzZSBpdCBmb3IgcmVnZXgK
KyAgLnJlcGxhY2UoL1tcXF4kLiorPygpW1xde318XS9nLCAnXFwkJicpCisgIC8vIFJlbW92ZSBo
YXNPd25Qcm9wZXJ0eSBmcm9tIHRoZSB0ZW1wbGF0ZSB0byBtYWtlIGl0IGdlbmVyaWMKKyAgLnJl
cGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFwoKXwgZm9yIC4rPyg/PVxc
XF0pL2csICckMS4qPycpICsgJyQnKTsKKyAgdHJ5IHsKKyAgICB2YXIgc291cmNlID0gZnVuY1Rv
U3RyaW5nLmNhbGwoZm4pOworICAgIHJldHVybiByZUlzTmF0aXZlLnRlc3Qoc291cmNlKTsKKyAg
fSBjYXRjaCAoZXJyKSB7CisgICAgcmV0dXJuIGZhbHNlOworICB9Cit9CisKK3ZhciBjYW5Vc2VD
b2xsZWN0aW9ucyA9CisvLyBBcnJheS5mcm9tCit0eXBlb2YgQXJyYXkuZnJvbSA9PT0gJ2Z1bmN0
aW9uJyAmJgorLy8gTWFwCit0eXBlb2YgTWFwID09PSAnZnVuY3Rpb24nICYmIGlzTmF0aXZlKE1h
cCkgJiYKKy8vIE1hcC5wcm90b3R5cGUua2V5cworTWFwLnByb3RvdHlwZSAhPSBudWxsICYmIHR5
cGVvZiBNYXAucHJvdG90eXBlLmtleXMgPT09ICdmdW5jdGlvbicgJiYgaXNOYXRpdmUoTWFwLnBy
b3RvdHlwZS5rZXlzKSAmJgorLy8gU2V0Cit0eXBlb2YgU2V0ID09PSAnZnVuY3Rpb24nICYmIGlz
TmF0aXZlKFNldCkgJiYKKy8vIFNldC5wcm90b3R5cGUua2V5cworU2V0LnByb3RvdHlwZSAhPSBu
dWxsICYmIHR5cGVvZiBTZXQucHJvdG90eXBlLmtleXMgPT09ICdmdW5jdGlvbicgJiYgaXNOYXRp
dmUoU2V0LnByb3RvdHlwZS5rZXlzKTsKKworaWYgKGNhblVzZUNvbGxlY3Rpb25zKSB7CisgIHZh
ciBpdGVtTWFwID0gbmV3IE1hcCgpOworICB2YXIgcm9vdElEU2V0ID0gbmV3IFNldCgpOworCisg
IHZhciBzZXRJdGVtID0gZnVuY3Rpb24gKGlkLCBpdGVtKSB7CisgICAgaXRlbU1hcC5zZXQoaWQs
IGl0ZW0pOworICB9OworICB2YXIgZ2V0SXRlbSA9IGZ1bmN0aW9uIChpZCkgeworICAgIHJldHVy
biBpdGVtTWFwLmdldChpZCk7CisgIH07CisgIHZhciByZW1vdmVJdGVtID0gZnVuY3Rpb24gKGlk
KSB7CisgICAgaXRlbU1hcFsnZGVsZXRlJ10oaWQpOworICB9OworICB2YXIgZ2V0SXRlbUlEcyA9
IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gQXJyYXkuZnJvbShpdGVtTWFwLmtleXMoKSk7Cisg
IH07CisKKyAgdmFyIGFkZFJvb3QgPSBmdW5jdGlvbiAoaWQpIHsKKyAgICByb290SURTZXQuYWRk
KGlkKTsKKyAgfTsKKyAgdmFyIHJlbW92ZVJvb3QgPSBmdW5jdGlvbiAoaWQpIHsKKyAgICByb290
SURTZXRbJ2RlbGV0ZSddKGlkKTsKKyAgfTsKKyAgdmFyIGdldFJvb3RJRHMgPSBmdW5jdGlvbiAo
KSB7CisgICAgcmV0dXJuIEFycmF5LmZyb20ocm9vdElEU2V0LmtleXMoKSk7CisgIH07Cit9IGVs
c2UgeworICB2YXIgaXRlbUJ5S2V5ID0ge307CisgIHZhciByb290QnlLZXkgPSB7fTsKKworICAv
LyBVc2Ugbm9uLW51bWVyaWMga2V5cyB0byBwcmV2ZW50IFY4IHBlcmZvcm1hbmNlIGlzc3VlczoK
KyAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L3B1bGwvNzIzMgorICB2YXIg
Z2V0S2V5RnJvbUlEID0gZnVuY3Rpb24gKGlkKSB7CisgICAgcmV0dXJuICcuJyArIGlkOworICB9
OworICB2YXIgZ2V0SURGcm9tS2V5ID0gZnVuY3Rpb24gKGtleSkgeworICAgIHJldHVybiBwYXJz
ZUludChrZXkuc3Vic3RyKDEpLCAxMCk7CisgIH07CisKKyAgdmFyIHNldEl0ZW0gPSBmdW5jdGlv
biAoaWQsIGl0ZW0pIHsKKyAgICB2YXIga2V5ID0gZ2V0S2V5RnJvbUlEKGlkKTsKKyAgICBpdGVt
QnlLZXlba2V5XSA9IGl0ZW07CisgIH07CisgIHZhciBnZXRJdGVtID0gZnVuY3Rpb24gKGlkKSB7
CisgICAgdmFyIGtleSA9IGdldEtleUZyb21JRChpZCk7CisgICAgcmV0dXJuIGl0ZW1CeUtleVtr
ZXldOworICB9OworICB2YXIgcmVtb3ZlSXRlbSA9IGZ1bmN0aW9uIChpZCkgeworICAgIHZhciBr
ZXkgPSBnZXRLZXlGcm9tSUQoaWQpOworICAgIGRlbGV0ZSBpdGVtQnlLZXlba2V5XTsKKyAgfTsK
KyAgdmFyIGdldEl0ZW1JRHMgPSBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIE9iamVjdC5rZXlz
KGl0ZW1CeUtleSkubWFwKGdldElERnJvbUtleSk7CisgIH07CisKKyAgdmFyIGFkZFJvb3QgPSBm
dW5jdGlvbiAoaWQpIHsKKyAgICB2YXIga2V5ID0gZ2V0S2V5RnJvbUlEKGlkKTsKKyAgICByb290
QnlLZXlba2V5XSA9IHRydWU7CisgIH07CisgIHZhciByZW1vdmVSb290ID0gZnVuY3Rpb24gKGlk
KSB7CisgICAgdmFyIGtleSA9IGdldEtleUZyb21JRChpZCk7CisgICAgZGVsZXRlIHJvb3RCeUtl
eVtrZXldOworICB9OworICB2YXIgZ2V0Um9vdElEcyA9IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1
cm4gT2JqZWN0LmtleXMocm9vdEJ5S2V5KS5tYXAoZ2V0SURGcm9tS2V5KTsKKyAgfTsKK30KKwor
dmFyIHVubW91bnRlZElEcyA9IFtdOworCitmdW5jdGlvbiBwdXJnZURlZXAoaWQpIHsKKyAgdmFy
IGl0ZW0gPSBnZXRJdGVtKGlkKTsKKyAgaWYgKGl0ZW0pIHsKKyAgICB2YXIgY2hpbGRJRHMgPSBp
dGVtLmNoaWxkSURzOworCisgICAgcmVtb3ZlSXRlbShpZCk7CisgICAgY2hpbGRJRHMuZm9yRWFj
aChwdXJnZURlZXApOworICB9Cit9CisKK2Z1bmN0aW9uIGRlc2NyaWJlQ29tcG9uZW50RnJhbWUo
bmFtZSwgc291cmNlLCBvd25lck5hbWUpIHsKKyAgcmV0dXJuICdcbiAgICBpbiAnICsgKG5hbWUg
fHwgJ1Vua25vd24nKSArIChzb3VyY2UgPyAnIChhdCAnICsgc291cmNlLmZpbGVOYW1lLnJlcGxh
Y2UoL14uKltcXFwvXS8sICcnKSArICc6JyArIHNvdXJjZS5saW5lTnVtYmVyICsgJyknIDogb3du
ZXJOYW1lID8gJyAoY3JlYXRlZCBieSAnICsgb3duZXJOYW1lICsgJyknIDogJycpOworfQorCitm
dW5jdGlvbiBnZXREaXNwbGF5TmFtZShlbGVtZW50KSB7CisgIGlmIChlbGVtZW50ID09IG51bGwp
IHsKKyAgICByZXR1cm4gJyNlbXB0eSc7CisgIH0gZWxzZSBpZiAodHlwZW9mIGVsZW1lbnQgPT09
ICdzdHJpbmcnIHx8IHR5cGVvZiBlbGVtZW50ID09PSAnbnVtYmVyJykgeworICAgIHJldHVybiAn
I3RleHQnOworICB9IGVsc2UgaWYgKHR5cGVvZiBlbGVtZW50LnR5cGUgPT09ICdzdHJpbmcnKSB7
CisgICAgcmV0dXJuIGVsZW1lbnQudHlwZTsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gZWxlbWVu
dC50eXBlLmRpc3BsYXlOYW1lIHx8IGVsZW1lbnQudHlwZS5uYW1lIHx8ICdVbmtub3duJzsKKyAg
fQorfQorCitmdW5jdGlvbiBkZXNjcmliZUlEKGlkKSB7CisgIHZhciBuYW1lID0gUmVhY3RDb21w
b25lbnRUcmVlSG9vay5nZXREaXNwbGF5TmFtZShpZCk7CisgIHZhciBlbGVtZW50ID0gUmVhY3RD
b21wb25lbnRUcmVlSG9vay5nZXRFbGVtZW50KGlkKTsKKyAgdmFyIG93bmVySUQgPSBSZWFjdENv
bXBvbmVudFRyZWVIb29rLmdldE93bmVySUQoaWQpOworICB2YXIgb3duZXJOYW1lOworICBpZiAo
b3duZXJJRCkgeworICAgIG93bmVyTmFtZSA9IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0RGlz
cGxheU5hbWUob3duZXJJRCk7CisgIH0KKyAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24n
ID8gd2FybmluZyhlbGVtZW50LCAnUmVhY3RDb21wb25lbnRUcmVlSG9vazogTWlzc2luZyBSZWFj
dCBlbGVtZW50IGZvciBkZWJ1Z0lEICVzIHdoZW4gJyArICdidWlsZGluZyBzdGFjaycsIGlkKSA6
IHZvaWQgMDsKKyAgcmV0dXJuIGRlc2NyaWJlQ29tcG9uZW50RnJhbWUobmFtZSwgZWxlbWVudCAm
JiBlbGVtZW50Ll9zb3VyY2UsIG93bmVyTmFtZSk7Cit9CisKK3ZhciBSZWFjdENvbXBvbmVudFRy
ZWVIb29rID0geworICBvblNldENoaWxkcmVuOiBmdW5jdGlvbiAoaWQsIG5leHRDaGlsZElEcykg
eworICAgIHZhciBpdGVtID0gZ2V0SXRlbShpZCk7CisgICAgIWl0ZW0gPyAiZGV2ZWxvcG1lbnQi
ICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdJdGVtIG11c3QgaGF2ZSBiZWVu
IHNldCcpIDogX3Byb2RJbnZhcmlhbnQoJzE0NCcpIDogdm9pZCAwOworICAgIGl0ZW0uY2hpbGRJ
RHMgPSBuZXh0Q2hpbGRJRHM7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5leHRDaGlsZElE
cy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIG5leHRDaGlsZElEID0gbmV4dENoaWxkSURzW2ld
OworICAgICAgdmFyIG5leHRDaGlsZCA9IGdldEl0ZW0obmV4dENoaWxkSUQpOworICAgICAgIW5l
eHRDaGlsZCA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxz
ZSwgJ0V4cGVjdGVkIGhvb2sgZXZlbnRzIHRvIGZpcmUgZm9yIHRoZSBjaGlsZCBiZWZvcmUgaXRz
IHBhcmVudCBpbmNsdWRlcyBpdCBpbiBvblNldENoaWxkcmVuKCkuJykgOiBfcHJvZEludmFyaWFu
dCgnMTQwJykgOiB2b2lkIDA7CisgICAgICAhKG5leHRDaGlsZC5jaGlsZElEcyAhPSBudWxsIHx8
IHR5cGVvZiBuZXh0Q2hpbGQuZWxlbWVudCAhPT0gJ29iamVjdCcgfHwgbmV4dENoaWxkLmVsZW1l
bnQgPT0gbnVsbCkgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQo
ZmFsc2UsICdFeHBlY3RlZCBvblNldENoaWxkcmVuKCkgdG8gZmlyZSBmb3IgYSBjb250YWluZXIg
Y2hpbGQgYmVmb3JlIGl0cyBwYXJlbnQgaW5jbHVkZXMgaXQgaW4gb25TZXRDaGlsZHJlbigpLicp
IDogX3Byb2RJbnZhcmlhbnQoJzE0MScpIDogdm9pZCAwOworICAgICAgIW5leHRDaGlsZC5pc01v
dW50ZWQgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2Us
ICdFeHBlY3RlZCBvbk1vdW50Q29tcG9uZW50KCkgdG8gZmlyZSBmb3IgdGhlIGNoaWxkIGJlZm9y
ZSBpdHMgcGFyZW50IGluY2x1ZGVzIGl0IGluIG9uU2V0Q2hpbGRyZW4oKS4nKSA6IF9wcm9kSW52
YXJpYW50KCc3MScpIDogdm9pZCAwOworICAgICAgaWYgKG5leHRDaGlsZC5wYXJlbnRJRCA9PSBu
dWxsKSB7CisgICAgICAgIG5leHRDaGlsZC5wYXJlbnRJRCA9IGlkOworICAgICAgICAvLyBUT0RP
OiBUaGlzIHNob3VsZG4ndCBiZSBuZWNlc3NhcnkgYnV0IG1vdW50aW5nIGEgbmV3IHJvb3QgZHVy
aW5nIGluCisgICAgICAgIC8vIGNvbXBvbmVudFdpbGxNb3VudCBjdXJyZW50bHkgY2F1c2VzIG5v
dC15ZXQtbW91bnRlZCBjb21wb25lbnRzIHRvCisgICAgICAgIC8vIGJlIHB1cmdlZCBmcm9tIG91
ciB0cmVlIGRhdGEgc28gdGhlaXIgcGFyZW50IGlkIGlzIG1pc3NpbmcuCisgICAgICB9CisgICAg
ICAhKG5leHRDaGlsZC5wYXJlbnRJRCA9PT0gaWQpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1
Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRXhwZWN0ZWQgb25CZWZvcmVNb3VudENvbXBvbmVu
dCgpIHBhcmVudCBhbmQgb25TZXRDaGlsZHJlbigpIHRvIGJlIGNvbnNpc3RlbnQgKCVzIGhhcyBw
YXJlbnRzICVzIGFuZCAlcykuJywgbmV4dENoaWxkSUQsIG5leHRDaGlsZC5wYXJlbnRJRCwgaWQp
IDogX3Byb2RJbnZhcmlhbnQoJzE0MicsIG5leHRDaGlsZElELCBuZXh0Q2hpbGQucGFyZW50SUQs
IGlkKSA6IHZvaWQgMDsKKyAgICB9CisgIH0sCisgIG9uQmVmb3JlTW91bnRDb21wb25lbnQ6IGZ1
bmN0aW9uIChpZCwgZWxlbWVudCwgcGFyZW50SUQpIHsKKyAgICB2YXIgaXRlbSA9IHsKKyAgICAg
IGVsZW1lbnQ6IGVsZW1lbnQsCisgICAgICBwYXJlbnRJRDogcGFyZW50SUQsCisgICAgICB0ZXh0
OiBudWxsLAorICAgICAgY2hpbGRJRHM6IFtdLAorICAgICAgaXNNb3VudGVkOiBmYWxzZSwKKyAg
ICAgIHVwZGF0ZUNvdW50OiAwCisgICAgfTsKKyAgICBzZXRJdGVtKGlkLCBpdGVtKTsKKyAgfSwK
KyAgb25CZWZvcmVVcGRhdGVDb21wb25lbnQ6IGZ1bmN0aW9uIChpZCwgZWxlbWVudCkgeworICAg
IHZhciBpdGVtID0gZ2V0SXRlbShpZCk7CisgICAgaWYgKCFpdGVtIHx8ICFpdGVtLmlzTW91bnRl
ZCkgeworICAgICAgLy8gV2UgbWF5IGVuZCB1cCBoZXJlIGFzIGEgcmVzdWx0IG9mIHNldFN0YXRl
KCkgaW4gY29tcG9uZW50V2lsbFVubW91bnQoKS4KKyAgICAgIC8vIEluIHRoaXMgY2FzZSwgaWdu
b3JlIHRoZSBlbGVtZW50LgorICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpdGVtLmVsZW1lbnQg
PSBlbGVtZW50OworICB9LAorICBvbk1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAoaWQpIHsKKyAg
ICB2YXIgaXRlbSA9IGdldEl0ZW0oaWQpOworICAgICFpdGVtID8gImRldmVsb3BtZW50IiAhPT0g
J3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnSXRlbSBtdXN0IGhhdmUgYmVlbiBzZXQn
KSA6IF9wcm9kSW52YXJpYW50KCcxNDQnKSA6IHZvaWQgMDsKKyAgICBpdGVtLmlzTW91bnRlZCA9
IHRydWU7CisgICAgdmFyIGlzUm9vdCA9IGl0ZW0ucGFyZW50SUQgPT09IDA7CisgICAgaWYgKGlz
Um9vdCkgeworICAgICAgYWRkUm9vdChpZCk7CisgICAgfQorICB9LAorICBvblVwZGF0ZUNvbXBv
bmVudDogZnVuY3Rpb24gKGlkKSB7CisgICAgdmFyIGl0ZW0gPSBnZXRJdGVtKGlkKTsKKyAgICBp
ZiAoIWl0ZW0gfHwgIWl0ZW0uaXNNb3VudGVkKSB7CisgICAgICAvLyBXZSBtYXkgZW5kIHVwIGhl
cmUgYXMgYSByZXN1bHQgb2Ygc2V0U3RhdGUoKSBpbiBjb21wb25lbnRXaWxsVW5tb3VudCgpLgor
ICAgICAgLy8gSW4gdGhpcyBjYXNlLCBpZ25vcmUgdGhlIGVsZW1lbnQuCisgICAgICByZXR1cm47
CisgICAgfQorICAgIGl0ZW0udXBkYXRlQ291bnQrKzsKKyAgfSwKKyAgb25Vbm1vdW50Q29tcG9u
ZW50OiBmdW5jdGlvbiAoaWQpIHsKKyAgICB2YXIgaXRlbSA9IGdldEl0ZW0oaWQpOworICAgIGlm
IChpdGVtKSB7CisgICAgICAvLyBXZSBuZWVkIHRvIGNoZWNrIGlmIGl0IGV4aXN0cy4KKyAgICAg
IC8vIGBpdGVtYCBtaWdodCBub3QgZXhpc3QgaWYgaXQgaXMgaW5zaWRlIGFuIGVycm9yIGJvdW5k
YXJ5LCBhbmQgYSBzaWJsaW5nCisgICAgICAvLyBlcnJvciBib3VuZGFyeSBjaGlsZCB0aHJldyB3
aGlsZSBtb3VudGluZy4gVGhlbiB0aGlzIGluc3RhbmNlIG5ldmVyCisgICAgICAvLyBnb3QgYSBj
aGFuY2UgdG8gbW91bnQsIGJ1dCBpdCBzdGlsbCBnZXRzIGFuIHVubW91bnRpbmcgZXZlbnQgZHVy
aW5nCisgICAgICAvLyB0aGUgZXJyb3IgYm91bmRhcnkgY2xlYW51cC4KKyAgICAgIGl0ZW0uaXNN
b3VudGVkID0gZmFsc2U7CisgICAgICB2YXIgaXNSb290ID0gaXRlbS5wYXJlbnRJRCA9PT0gMDsK
KyAgICAgIGlmIChpc1Jvb3QpIHsKKyAgICAgICAgcmVtb3ZlUm9vdChpZCk7CisgICAgICB9Cisg
ICAgfQorICAgIHVubW91bnRlZElEcy5wdXNoKGlkKTsKKyAgfSwKKyAgcHVyZ2VVbm1vdW50ZWRD
b21wb25lbnRzOiBmdW5jdGlvbiAoKSB7CisgICAgaWYgKFJlYWN0Q29tcG9uZW50VHJlZUhvb2su
X3ByZXZlbnRQdXJnaW5nKSB7CisgICAgICAvLyBTaG91bGQgb25seSBiZSB1c2VkIGZvciB0ZXN0
aW5nLgorICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdW5t
b3VudGVkSURzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgaWQgPSB1bm1vdW50ZWRJRHNbaV07
CisgICAgICBwdXJnZURlZXAoaWQpOworICAgIH0KKyAgICB1bm1vdW50ZWRJRHMubGVuZ3RoID0g
MDsKKyAgfSwKKyAgaXNNb3VudGVkOiBmdW5jdGlvbiAoaWQpIHsKKyAgICB2YXIgaXRlbSA9IGdl
dEl0ZW0oaWQpOworICAgIHJldHVybiBpdGVtID8gaXRlbS5pc01vdW50ZWQgOiBmYWxzZTsKKyAg
fSwKKyAgZ2V0Q3VycmVudFN0YWNrQWRkZW5kdW06IGZ1bmN0aW9uICh0b3BFbGVtZW50KSB7Cisg
ICAgdmFyIGluZm8gPSAnJzsKKyAgICBpZiAodG9wRWxlbWVudCkgeworICAgICAgdmFyIG5hbWUg
PSBnZXREaXNwbGF5TmFtZSh0b3BFbGVtZW50KTsKKyAgICAgIHZhciBvd25lciA9IHRvcEVsZW1l
bnQuX293bmVyOworICAgICAgaW5mbyArPSBkZXNjcmliZUNvbXBvbmVudEZyYW1lKG5hbWUsIHRv
cEVsZW1lbnQuX3NvdXJjZSwgb3duZXIgJiYgb3duZXIuZ2V0TmFtZSgpKTsKKyAgICB9CisKKyAg
ICB2YXIgY3VycmVudE93bmVyID0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVudDsKKyAgICB2YXIg
aWQgPSBjdXJyZW50T3duZXIgJiYgY3VycmVudE93bmVyLl9kZWJ1Z0lEOworCisgICAgaW5mbyAr
PSBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldFN0YWNrQWRkZW5kdW1CeUlEKGlkKTsKKyAgICBy
ZXR1cm4gaW5mbzsKKyAgfSwKKyAgZ2V0U3RhY2tBZGRlbmR1bUJ5SUQ6IGZ1bmN0aW9uIChpZCkg
eworICAgIHZhciBpbmZvID0gJyc7CisgICAgd2hpbGUgKGlkKSB7CisgICAgICBpbmZvICs9IGRl
c2NyaWJlSUQoaWQpOworICAgICAgaWQgPSBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldFBhcmVu
dElEKGlkKTsKKyAgICB9CisgICAgcmV0dXJuIGluZm87CisgIH0sCisgIGdldENoaWxkSURzOiBm
dW5jdGlvbiAoaWQpIHsKKyAgICB2YXIgaXRlbSA9IGdldEl0ZW0oaWQpOworICAgIHJldHVybiBp
dGVtID8gaXRlbS5jaGlsZElEcyA6IFtdOworICB9LAorICBnZXREaXNwbGF5TmFtZTogZnVuY3Rp
b24gKGlkKSB7CisgICAgdmFyIGVsZW1lbnQgPSBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldEVs
ZW1lbnQoaWQpOworICAgIGlmICghZWxlbWVudCkgeworICAgICAgcmV0dXJuIG51bGw7CisgICAg
fQorICAgIHJldHVybiBnZXREaXNwbGF5TmFtZShlbGVtZW50KTsKKyAgfSwKKyAgZ2V0RWxlbWVu
dDogZnVuY3Rpb24gKGlkKSB7CisgICAgdmFyIGl0ZW0gPSBnZXRJdGVtKGlkKTsKKyAgICByZXR1
cm4gaXRlbSA/IGl0ZW0uZWxlbWVudCA6IG51bGw7CisgIH0sCisgIGdldE93bmVySUQ6IGZ1bmN0
aW9uIChpZCkgeworICAgIHZhciBlbGVtZW50ID0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRF
bGVtZW50KGlkKTsKKyAgICBpZiAoIWVsZW1lbnQgfHwgIWVsZW1lbnQuX293bmVyKSB7CisgICAg
ICByZXR1cm4gbnVsbDsKKyAgICB9CisgICAgcmV0dXJuIGVsZW1lbnQuX293bmVyLl9kZWJ1Z0lE
OworICB9LAorICBnZXRQYXJlbnRJRDogZnVuY3Rpb24gKGlkKSB7CisgICAgdmFyIGl0ZW0gPSBn
ZXRJdGVtKGlkKTsKKyAgICByZXR1cm4gaXRlbSA/IGl0ZW0ucGFyZW50SUQgOiBudWxsOworICB9
LAorICBnZXRTb3VyY2U6IGZ1bmN0aW9uIChpZCkgeworICAgIHZhciBpdGVtID0gZ2V0SXRlbShp
ZCk7CisgICAgdmFyIGVsZW1lbnQgPSBpdGVtID8gaXRlbS5lbGVtZW50IDogbnVsbDsKKyAgICB2
YXIgc291cmNlID0gZWxlbWVudCAhPSBudWxsID8gZWxlbWVudC5fc291cmNlIDogbnVsbDsKKyAg
ICByZXR1cm4gc291cmNlOworICB9LAorICBnZXRUZXh0OiBmdW5jdGlvbiAoaWQpIHsKKyAgICB2
YXIgZWxlbWVudCA9IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0RWxlbWVudChpZCk7CisgICAg
aWYgKHR5cGVvZiBlbGVtZW50ID09PSAnc3RyaW5nJykgeworICAgICAgcmV0dXJuIGVsZW1lbnQ7
CisgICAgfSBlbHNlIGlmICh0eXBlb2YgZWxlbWVudCA9PT0gJ251bWJlcicpIHsKKyAgICAgIHJl
dHVybiAnJyArIGVsZW1lbnQ7CisgICAgfSBlbHNlIHsKKyAgICAgIHJldHVybiBudWxsOworICAg
IH0KKyAgfSwKKyAgZ2V0VXBkYXRlQ291bnQ6IGZ1bmN0aW9uIChpZCkgeworICAgIHZhciBpdGVt
ID0gZ2V0SXRlbShpZCk7CisgICAgcmV0dXJuIGl0ZW0gPyBpdGVtLnVwZGF0ZUNvdW50IDogMDsK
KyAgfSwKKworCisgIGdldFJvb3RJRHM6IGdldFJvb3RJRHMsCisgIGdldFJlZ2lzdGVyZWRJRHM6
IGdldEl0ZW1JRHMKK307CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RDb21wb25lbnRUcmVlSG9v
azsKK30seyIxNCI6MTQsIjM4IjozOCwiNDYiOjQ2LCI0OCI6NDh9XSwxMzpbZnVuY3Rpb24oX2Rl
cmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZh
Y2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNl
IGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRo
ZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0
cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKwor
J3VzZSBzdHJpY3QnOworCit2YXIgc2hhbGxvd0NvbXBhcmUgPSBfZGVyZXFfKDM5KTsKKworLyoq
CisgKiBJZiB5b3VyIFJlYWN0IGNvbXBvbmVudCdzIHJlbmRlciBmdW5jdGlvbiBpcyAicHVyZSIs
IGUuZy4gaXQgd2lsbCByZW5kZXIgdGhlCisgKiBzYW1lIHJlc3VsdCBnaXZlbiB0aGUgc2FtZSBw
cm9wcyBhbmQgc3RhdGUsIHByb3ZpZGUgdGhpcyBtaXhpbiBmb3IgYQorICogY29uc2lkZXJhYmxl
IHBlcmZvcm1hbmNlIGJvb3N0LgorICoKKyAqIE1vc3QgUmVhY3QgY29tcG9uZW50cyBoYXZlIHB1
cmUgcmVuZGVyIGZ1bmN0aW9ucy4KKyAqCisgKiBFeGFtcGxlOgorICoKKyAqICAgdmFyIFJlYWN0
Q29tcG9uZW50V2l0aFB1cmVSZW5kZXJNaXhpbiA9CisgKiAgICAgcmVxdWlyZSgnUmVhY3RDb21w
b25lbnRXaXRoUHVyZVJlbmRlck1peGluJyk7CisgKiAgIFJlYWN0LmNyZWF0ZUNsYXNzKHsKKyAq
ICAgICBtaXhpbnM6IFtSZWFjdENvbXBvbmVudFdpdGhQdXJlUmVuZGVyTWl4aW5dLAorICoKKyAq
ICAgICByZW5kZXI6IGZ1bmN0aW9uKCkgeworICogICAgICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1l
PXt0aGlzLnByb3BzLmNsYXNzTmFtZX0+Zm9vPC9kaXY+OworICogICAgIH0KKyAqICAgfSk7Cisg
KgorICogTm90ZTogVGhpcyBvbmx5IGNoZWNrcyBzaGFsbG93IGVxdWFsaXR5IGZvciBwcm9wcyBh
bmQgc3RhdGUuIElmIHRoZXNlIGNvbnRhaW4KKyAqIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHRo
aXMgbWl4aW4gbWF5IGhhdmUgZmFsc2UtbmVnYXRpdmVzIGZvciBkZWVwZXIKKyAqIGRpZmZlcmVu
Y2VzLiBPbmx5IG1peGluIHRvIGNvbXBvbmVudHMgd2hpY2ggaGF2ZSBzaW1wbGUgcHJvcHMgYW5k
IHN0YXRlLCBvcgorICogdXNlIGBmb3JjZVVwZGF0ZSgpYCB3aGVuIHlvdSBrbm93IGRlZXAgZGF0
YSBzdHJ1Y3R1cmVzIGhhdmUgY2hhbmdlZC4KKyAqCisgKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5n
aXRodWIuaW8vcmVhY3QvZG9jcy9wdXJlLXJlbmRlci1taXhpbi5odG1sCisgKi8KK3ZhciBSZWFj
dENvbXBvbmVudFdpdGhQdXJlUmVuZGVyTWl4aW4gPSB7CisgIHNob3VsZENvbXBvbmVudFVwZGF0
ZTogZnVuY3Rpb24gKG5leHRQcm9wcywgbmV4dFN0YXRlKSB7CisgICAgcmV0dXJuIHNoYWxsb3dD
b21wYXJlKHRoaXMsIG5leHRQcm9wcywgbmV4dFN0YXRlKTsKKyAgfQorfTsKKworbW9kdWxlLmV4
cG9ydHMgPSBSZWFjdENvbXBvbmVudFdpdGhQdXJlUmVuZGVyTWl4aW47Cit9LHsiMzkiOjM5fV0s
MTQ6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQg
MjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGlj
ZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkg
b2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJp
Z2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rv
cnkuCisgKgorICogCisgKi8KKworJ3VzZSBzdHJpY3QnOworCisvKioKKyAqIEtlZXBzIHRyYWNr
IG9mIHRoZSBjdXJyZW50IG93bmVyLgorICoKKyAqIFRoZSBjdXJyZW50IG93bmVyIGlzIHRoZSBj
b21wb25lbnQgd2hvIHNob3VsZCBvd24gYW55IGNvbXBvbmVudHMgdGhhdCBhcmUKKyAqIGN1cnJl
bnRseSBiZWluZyBjb25zdHJ1Y3RlZC4KKyAqLwordmFyIFJlYWN0Q3VycmVudE93bmVyID0gewor
CisgIC8qKgorICAgKiBAaW50ZXJuYWwKKyAgICogQHR5cGUge1JlYWN0Q29tcG9uZW50fQorICAg
Ki8KKyAgY3VycmVudDogbnVsbAorCit9OworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0Q3VycmVu
dE93bmVyOworfSx7fV0sMTU6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoq
CisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRo
ZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAor
ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0
aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIFJlYWN0
RWxlbWVudCA9IF9kZXJlcV8oMTYpOworCisvKioKKyAqIENyZWF0ZSBhIGZhY3RvcnkgdGhhdCBj
cmVhdGVzIEhUTUwgdGFnIGVsZW1lbnRzLgorICoKKyAqIEBwcml2YXRlCisgKi8KK3ZhciBjcmVh
dGVET01GYWN0b3J5ID0gUmVhY3RFbGVtZW50LmNyZWF0ZUZhY3Rvcnk7CitpZiAoImRldmVsb3Bt
ZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgIHZhciBSZWFjdEVsZW1lbnRWYWxpZGF0b3IgPSBf
ZGVyZXFfKDE4KTsKKyAgY3JlYXRlRE9NRmFjdG9yeSA9IFJlYWN0RWxlbWVudFZhbGlkYXRvci5j
cmVhdGVGYWN0b3J5OworfQorCisvKioKKyAqIENyZWF0ZXMgYSBtYXBwaW5nIGZyb20gc3VwcG9y
dGVkIEhUTUwgdGFncyB0byBgUmVhY3RET01Db21wb25lbnRgIGNsYXNzZXMuCisgKiBUaGlzIGlz
IGFsc28gYWNjZXNzaWJsZSB2aWEgYFJlYWN0LkRPTWAuCisgKgorICogQHB1YmxpYworICovCit2
YXIgUmVhY3RET01GYWN0b3JpZXMgPSB7CisgIGE6IGNyZWF0ZURPTUZhY3RvcnkoJ2EnKSwKKyAg
YWJicjogY3JlYXRlRE9NRmFjdG9yeSgnYWJicicpLAorICBhZGRyZXNzOiBjcmVhdGVET01GYWN0
b3J5KCdhZGRyZXNzJyksCisgIGFyZWE6IGNyZWF0ZURPTUZhY3RvcnkoJ2FyZWEnKSwKKyAgYXJ0
aWNsZTogY3JlYXRlRE9NRmFjdG9yeSgnYXJ0aWNsZScpLAorICBhc2lkZTogY3JlYXRlRE9NRmFj
dG9yeSgnYXNpZGUnKSwKKyAgYXVkaW86IGNyZWF0ZURPTUZhY3RvcnkoJ2F1ZGlvJyksCisgIGI6
IGNyZWF0ZURPTUZhY3RvcnkoJ2InKSwKKyAgYmFzZTogY3JlYXRlRE9NRmFjdG9yeSgnYmFzZScp
LAorICBiZGk6IGNyZWF0ZURPTUZhY3RvcnkoJ2JkaScpLAorICBiZG86IGNyZWF0ZURPTUZhY3Rv
cnkoJ2JkbycpLAorICBiaWc6IGNyZWF0ZURPTUZhY3RvcnkoJ2JpZycpLAorICBibG9ja3F1b3Rl
OiBjcmVhdGVET01GYWN0b3J5KCdibG9ja3F1b3RlJyksCisgIGJvZHk6IGNyZWF0ZURPTUZhY3Rv
cnkoJ2JvZHknKSwKKyAgYnI6IGNyZWF0ZURPTUZhY3RvcnkoJ2JyJyksCisgIGJ1dHRvbjogY3Jl
YXRlRE9NRmFjdG9yeSgnYnV0dG9uJyksCisgIGNhbnZhczogY3JlYXRlRE9NRmFjdG9yeSgnY2Fu
dmFzJyksCisgIGNhcHRpb246IGNyZWF0ZURPTUZhY3RvcnkoJ2NhcHRpb24nKSwKKyAgY2l0ZTog
Y3JlYXRlRE9NRmFjdG9yeSgnY2l0ZScpLAorICBjb2RlOiBjcmVhdGVET01GYWN0b3J5KCdjb2Rl
JyksCisgIGNvbDogY3JlYXRlRE9NRmFjdG9yeSgnY29sJyksCisgIGNvbGdyb3VwOiBjcmVhdGVE
T01GYWN0b3J5KCdjb2xncm91cCcpLAorICBkYXRhOiBjcmVhdGVET01GYWN0b3J5KCdkYXRhJyks
CisgIGRhdGFsaXN0OiBjcmVhdGVET01GYWN0b3J5KCdkYXRhbGlzdCcpLAorICBkZDogY3JlYXRl
RE9NRmFjdG9yeSgnZGQnKSwKKyAgZGVsOiBjcmVhdGVET01GYWN0b3J5KCdkZWwnKSwKKyAgZGV0
YWlsczogY3JlYXRlRE9NRmFjdG9yeSgnZGV0YWlscycpLAorICBkZm46IGNyZWF0ZURPTUZhY3Rv
cnkoJ2RmbicpLAorICBkaWFsb2c6IGNyZWF0ZURPTUZhY3RvcnkoJ2RpYWxvZycpLAorICBkaXY6
IGNyZWF0ZURPTUZhY3RvcnkoJ2RpdicpLAorICBkbDogY3JlYXRlRE9NRmFjdG9yeSgnZGwnKSwK
KyAgZHQ6IGNyZWF0ZURPTUZhY3RvcnkoJ2R0JyksCisgIGVtOiBjcmVhdGVET01GYWN0b3J5KCdl
bScpLAorICBlbWJlZDogY3JlYXRlRE9NRmFjdG9yeSgnZW1iZWQnKSwKKyAgZmllbGRzZXQ6IGNy
ZWF0ZURPTUZhY3RvcnkoJ2ZpZWxkc2V0JyksCisgIGZpZ2NhcHRpb246IGNyZWF0ZURPTUZhY3Rv
cnkoJ2ZpZ2NhcHRpb24nKSwKKyAgZmlndXJlOiBjcmVhdGVET01GYWN0b3J5KCdmaWd1cmUnKSwK
KyAgZm9vdGVyOiBjcmVhdGVET01GYWN0b3J5KCdmb290ZXInKSwKKyAgZm9ybTogY3JlYXRlRE9N
RmFjdG9yeSgnZm9ybScpLAorICBoMTogY3JlYXRlRE9NRmFjdG9yeSgnaDEnKSwKKyAgaDI6IGNy
ZWF0ZURPTUZhY3RvcnkoJ2gyJyksCisgIGgzOiBjcmVhdGVET01GYWN0b3J5KCdoMycpLAorICBo
NDogY3JlYXRlRE9NRmFjdG9yeSgnaDQnKSwKKyAgaDU6IGNyZWF0ZURPTUZhY3RvcnkoJ2g1Jyks
CisgIGg2OiBjcmVhdGVET01GYWN0b3J5KCdoNicpLAorICBoZWFkOiBjcmVhdGVET01GYWN0b3J5
KCdoZWFkJyksCisgIGhlYWRlcjogY3JlYXRlRE9NRmFjdG9yeSgnaGVhZGVyJyksCisgIGhncm91
cDogY3JlYXRlRE9NRmFjdG9yeSgnaGdyb3VwJyksCisgIGhyOiBjcmVhdGVET01GYWN0b3J5KCdo
cicpLAorICBodG1sOiBjcmVhdGVET01GYWN0b3J5KCdodG1sJyksCisgIGk6IGNyZWF0ZURPTUZh
Y3RvcnkoJ2knKSwKKyAgaWZyYW1lOiBjcmVhdGVET01GYWN0b3J5KCdpZnJhbWUnKSwKKyAgaW1n
OiBjcmVhdGVET01GYWN0b3J5KCdpbWcnKSwKKyAgaW5wdXQ6IGNyZWF0ZURPTUZhY3RvcnkoJ2lu
cHV0JyksCisgIGluczogY3JlYXRlRE9NRmFjdG9yeSgnaW5zJyksCisgIGtiZDogY3JlYXRlRE9N
RmFjdG9yeSgna2JkJyksCisgIGtleWdlbjogY3JlYXRlRE9NRmFjdG9yeSgna2V5Z2VuJyksCisg
IGxhYmVsOiBjcmVhdGVET01GYWN0b3J5KCdsYWJlbCcpLAorICBsZWdlbmQ6IGNyZWF0ZURPTUZh
Y3RvcnkoJ2xlZ2VuZCcpLAorICBsaTogY3JlYXRlRE9NRmFjdG9yeSgnbGknKSwKKyAgbGluazog
Y3JlYXRlRE9NRmFjdG9yeSgnbGluaycpLAorICBtYWluOiBjcmVhdGVET01GYWN0b3J5KCdtYWlu
JyksCisgIG1hcDogY3JlYXRlRE9NRmFjdG9yeSgnbWFwJyksCisgIG1hcms6IGNyZWF0ZURPTUZh
Y3RvcnkoJ21hcmsnKSwKKyAgbWVudTogY3JlYXRlRE9NRmFjdG9yeSgnbWVudScpLAorICBtZW51
aXRlbTogY3JlYXRlRE9NRmFjdG9yeSgnbWVudWl0ZW0nKSwKKyAgbWV0YTogY3JlYXRlRE9NRmFj
dG9yeSgnbWV0YScpLAorICBtZXRlcjogY3JlYXRlRE9NRmFjdG9yeSgnbWV0ZXInKSwKKyAgbmF2
OiBjcmVhdGVET01GYWN0b3J5KCduYXYnKSwKKyAgbm9zY3JpcHQ6IGNyZWF0ZURPTUZhY3Rvcnko
J25vc2NyaXB0JyksCisgIG9iamVjdDogY3JlYXRlRE9NRmFjdG9yeSgnb2JqZWN0JyksCisgIG9s
OiBjcmVhdGVET01GYWN0b3J5KCdvbCcpLAorICBvcHRncm91cDogY3JlYXRlRE9NRmFjdG9yeSgn
b3B0Z3JvdXAnKSwKKyAgb3B0aW9uOiBjcmVhdGVET01GYWN0b3J5KCdvcHRpb24nKSwKKyAgb3V0
cHV0OiBjcmVhdGVET01GYWN0b3J5KCdvdXRwdXQnKSwKKyAgcDogY3JlYXRlRE9NRmFjdG9yeSgn
cCcpLAorICBwYXJhbTogY3JlYXRlRE9NRmFjdG9yeSgncGFyYW0nKSwKKyAgcGljdHVyZTogY3Jl
YXRlRE9NRmFjdG9yeSgncGljdHVyZScpLAorICBwcmU6IGNyZWF0ZURPTUZhY3RvcnkoJ3ByZScp
LAorICBwcm9ncmVzczogY3JlYXRlRE9NRmFjdG9yeSgncHJvZ3Jlc3MnKSwKKyAgcTogY3JlYXRl
RE9NRmFjdG9yeSgncScpLAorICBycDogY3JlYXRlRE9NRmFjdG9yeSgncnAnKSwKKyAgcnQ6IGNy
ZWF0ZURPTUZhY3RvcnkoJ3J0JyksCisgIHJ1Ynk6IGNyZWF0ZURPTUZhY3RvcnkoJ3J1YnknKSwK
KyAgczogY3JlYXRlRE9NRmFjdG9yeSgncycpLAorICBzYW1wOiBjcmVhdGVET01GYWN0b3J5KCdz
YW1wJyksCisgIHNjcmlwdDogY3JlYXRlRE9NRmFjdG9yeSgnc2NyaXB0JyksCisgIHNlY3Rpb246
IGNyZWF0ZURPTUZhY3RvcnkoJ3NlY3Rpb24nKSwKKyAgc2VsZWN0OiBjcmVhdGVET01GYWN0b3J5
KCdzZWxlY3QnKSwKKyAgc21hbGw6IGNyZWF0ZURPTUZhY3RvcnkoJ3NtYWxsJyksCisgIHNvdXJj
ZTogY3JlYXRlRE9NRmFjdG9yeSgnc291cmNlJyksCisgIHNwYW46IGNyZWF0ZURPTUZhY3Rvcnko
J3NwYW4nKSwKKyAgc3Ryb25nOiBjcmVhdGVET01GYWN0b3J5KCdzdHJvbmcnKSwKKyAgc3R5bGU6
IGNyZWF0ZURPTUZhY3RvcnkoJ3N0eWxlJyksCisgIHN1YjogY3JlYXRlRE9NRmFjdG9yeSgnc3Vi
JyksCisgIHN1bW1hcnk6IGNyZWF0ZURPTUZhY3RvcnkoJ3N1bW1hcnknKSwKKyAgc3VwOiBjcmVh
dGVET01GYWN0b3J5KCdzdXAnKSwKKyAgdGFibGU6IGNyZWF0ZURPTUZhY3RvcnkoJ3RhYmxlJyks
CisgIHRib2R5OiBjcmVhdGVET01GYWN0b3J5KCd0Ym9keScpLAorICB0ZDogY3JlYXRlRE9NRmFj
dG9yeSgndGQnKSwKKyAgdGV4dGFyZWE6IGNyZWF0ZURPTUZhY3RvcnkoJ3RleHRhcmVhJyksCisg
IHRmb290OiBjcmVhdGVET01GYWN0b3J5KCd0Zm9vdCcpLAorICB0aDogY3JlYXRlRE9NRmFjdG9y
eSgndGgnKSwKKyAgdGhlYWQ6IGNyZWF0ZURPTUZhY3RvcnkoJ3RoZWFkJyksCisgIHRpbWU6IGNy
ZWF0ZURPTUZhY3RvcnkoJ3RpbWUnKSwKKyAgdGl0bGU6IGNyZWF0ZURPTUZhY3RvcnkoJ3RpdGxl
JyksCisgIHRyOiBjcmVhdGVET01GYWN0b3J5KCd0cicpLAorICB0cmFjazogY3JlYXRlRE9NRmFj
dG9yeSgndHJhY2snKSwKKyAgdTogY3JlYXRlRE9NRmFjdG9yeSgndScpLAorICB1bDogY3JlYXRl
RE9NRmFjdG9yeSgndWwnKSwKKyAgJ3Zhcic6IGNyZWF0ZURPTUZhY3RvcnkoJ3ZhcicpLAorICB2
aWRlbzogY3JlYXRlRE9NRmFjdG9yeSgndmlkZW8nKSwKKyAgd2JyOiBjcmVhdGVET01GYWN0b3J5
KCd3YnInKSwKKworICAvLyBTVkcKKyAgY2lyY2xlOiBjcmVhdGVET01GYWN0b3J5KCdjaXJjbGUn
KSwKKyAgY2xpcFBhdGg6IGNyZWF0ZURPTUZhY3RvcnkoJ2NsaXBQYXRoJyksCisgIGRlZnM6IGNy
ZWF0ZURPTUZhY3RvcnkoJ2RlZnMnKSwKKyAgZWxsaXBzZTogY3JlYXRlRE9NRmFjdG9yeSgnZWxs
aXBzZScpLAorICBnOiBjcmVhdGVET01GYWN0b3J5KCdnJyksCisgIGltYWdlOiBjcmVhdGVET01G
YWN0b3J5KCdpbWFnZScpLAorICBsaW5lOiBjcmVhdGVET01GYWN0b3J5KCdsaW5lJyksCisgIGxp
bmVhckdyYWRpZW50OiBjcmVhdGVET01GYWN0b3J5KCdsaW5lYXJHcmFkaWVudCcpLAorICBtYXNr
OiBjcmVhdGVET01GYWN0b3J5KCdtYXNrJyksCisgIHBhdGg6IGNyZWF0ZURPTUZhY3RvcnkoJ3Bh
dGgnKSwKKyAgcGF0dGVybjogY3JlYXRlRE9NRmFjdG9yeSgncGF0dGVybicpLAorICBwb2x5Z29u
OiBjcmVhdGVET01GYWN0b3J5KCdwb2x5Z29uJyksCisgIHBvbHlsaW5lOiBjcmVhdGVET01GYWN0
b3J5KCdwb2x5bGluZScpLAorICByYWRpYWxHcmFkaWVudDogY3JlYXRlRE9NRmFjdG9yeSgncmFk
aWFsR3JhZGllbnQnKSwKKyAgcmVjdDogY3JlYXRlRE9NRmFjdG9yeSgncmVjdCcpLAorICBzdG9w
OiBjcmVhdGVET01GYWN0b3J5KCdzdG9wJyksCisgIHN2ZzogY3JlYXRlRE9NRmFjdG9yeSgnc3Zn
JyksCisgIHRleHQ6IGNyZWF0ZURPTUZhY3RvcnkoJ3RleHQnKSwKKyAgdHNwYW46IGNyZWF0ZURP
TUZhY3RvcnkoJ3RzcGFuJykKK307CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RET01GYWN0b3Jp
ZXM7Cit9LHsiMTYiOjE2LCIxOCI6MTh9XSwxNjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhw
b3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisg
KiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5z
ZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBm
aWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlv
bmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5U
UyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOwor
Cit2YXIgX2Fzc2lnbiA9IF9kZXJlcV8oNDkpOworCit2YXIgUmVhY3RDdXJyZW50T3duZXIgPSBf
ZGVyZXFfKDE0KTsKKwordmFyIHdhcm5pbmcgPSBfZGVyZXFfKDQ4KTsKK3ZhciBjYW5EZWZpbmVQ
cm9wZXJ0eSA9IF9kZXJlcV8oMzMpOwordmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3Rv
dHlwZS5oYXNPd25Qcm9wZXJ0eTsKKwordmFyIFJFQUNUX0VMRU1FTlRfVFlQRSA9IF9kZXJlcV8o
MTcpOworCit2YXIgUkVTRVJWRURfUFJPUFMgPSB7CisgIGtleTogdHJ1ZSwKKyAgcmVmOiB0cnVl
LAorICBfX3NlbGY6IHRydWUsCisgIF9fc291cmNlOiB0cnVlCit9OworCit2YXIgc3BlY2lhbFBy
b3BLZXlXYXJuaW5nU2hvd24sIHNwZWNpYWxQcm9wUmVmV2FybmluZ1Nob3duOworCitmdW5jdGlv
biBoYXNWYWxpZFJlZihjb25maWcpIHsKKyAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0
aW9uJykgeworICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKGNvbmZpZywgJ3JlZicpKSB7Cisg
ICAgICB2YXIgZ2V0dGVyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihjb25maWcs
ICdyZWYnKS5nZXQ7CisgICAgICBpZiAoZ2V0dGVyICYmIGdldHRlci5pc1JlYWN0V2FybmluZykg
eworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICB9CisgICAgfQorICB9CisgIHJldHVybiBj
b25maWcucmVmICE9PSB1bmRlZmluZWQ7Cit9CisKK2Z1bmN0aW9uIGhhc1ZhbGlkS2V5KGNvbmZp
ZykgeworICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgaWYgKGhh
c093blByb3BlcnR5LmNhbGwoY29uZmlnLCAna2V5JykpIHsKKyAgICAgIHZhciBnZXR0ZXIgPSBP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGNvbmZpZywgJ2tleScpLmdldDsKKyAgICAg
IGlmIChnZXR0ZXIgJiYgZ2V0dGVyLmlzUmVhY3RXYXJuaW5nKSB7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgIH0KKyAgICB9CisgIH0KKyAgcmV0dXJuIGNvbmZpZy5rZXkgIT09IHVuZGVm
aW5lZDsKK30KKworZnVuY3Rpb24gZGVmaW5lS2V5UHJvcFdhcm5pbmdHZXR0ZXIocHJvcHMsIGRp
c3BsYXlOYW1lKSB7CisgIHZhciB3YXJuQWJvdXRBY2Nlc3NpbmdLZXkgPSBmdW5jdGlvbiAoKSB7
CisgICAgaWYgKCFzcGVjaWFsUHJvcEtleVdhcm5pbmdTaG93bikgeworICAgICAgc3BlY2lhbFBy
b3BLZXlXYXJuaW5nU2hvd24gPSB0cnVlOworICAgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1
Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJyVzOiBga2V5YCBpcyBub3QgYSBwcm9wLiBUcnlpbmcg
dG8gYWNjZXNzIGl0IHdpbGwgcmVzdWx0ICcgKyAnaW4gYHVuZGVmaW5lZGAgYmVpbmcgcmV0dXJu
ZWQuIElmIHlvdSBuZWVkIHRvIGFjY2VzcyB0aGUgc2FtZSAnICsgJ3ZhbHVlIHdpdGhpbiB0aGUg
Y2hpbGQgY29tcG9uZW50LCB5b3Ugc2hvdWxkIHBhc3MgaXQgYXMgYSBkaWZmZXJlbnQgJyArICdw
cm9wLiAoaHR0cHM6Ly9mYi5tZS9yZWFjdC1zcGVjaWFsLXByb3BzKScsIGRpc3BsYXlOYW1lKSA6
IHZvaWQgMDsKKyAgICB9CisgIH07CisgIHdhcm5BYm91dEFjY2Vzc2luZ0tleS5pc1JlYWN0V2Fy
bmluZyA9IHRydWU7CisgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9wcywgJ2tleScsIHsKKyAg
ICBnZXQ6IHdhcm5BYm91dEFjY2Vzc2luZ0tleSwKKyAgICBjb25maWd1cmFibGU6IHRydWUKKyAg
fSk7Cit9CisKK2Z1bmN0aW9uIGRlZmluZVJlZlByb3BXYXJuaW5nR2V0dGVyKHByb3BzLCBkaXNw
bGF5TmFtZSkgeworICB2YXIgd2FybkFib3V0QWNjZXNzaW5nUmVmID0gZnVuY3Rpb24gKCkgewor
ICAgIGlmICghc3BlY2lhbFByb3BSZWZXYXJuaW5nU2hvd24pIHsKKyAgICAgIHNwZWNpYWxQcm9w
UmVmV2FybmluZ1Nob3duID0gdHJ1ZTsKKyAgICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0
aW9uJyA/IHdhcm5pbmcoZmFsc2UsICclczogYHJlZmAgaXMgbm90IGEgcHJvcC4gVHJ5aW5nIHRv
IGFjY2VzcyBpdCB3aWxsIHJlc3VsdCAnICsgJ2luIGB1bmRlZmluZWRgIGJlaW5nIHJldHVybmVk
LiBJZiB5b3UgbmVlZCB0byBhY2Nlc3MgdGhlIHNhbWUgJyArICd2YWx1ZSB3aXRoaW4gdGhlIGNo
aWxkIGNvbXBvbmVudCwgeW91IHNob3VsZCBwYXNzIGl0IGFzIGEgZGlmZmVyZW50ICcgKyAncHJv
cC4gKGh0dHBzOi8vZmIubWUvcmVhY3Qtc3BlY2lhbC1wcm9wcyknLCBkaXNwbGF5TmFtZSkgOiB2
b2lkIDA7CisgICAgfQorICB9OworICB3YXJuQWJvdXRBY2Nlc3NpbmdSZWYuaXNSZWFjdFdhcm5p
bmcgPSB0cnVlOworICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvcHMsICdyZWYnLCB7CisgICAg
Z2V0OiB3YXJuQWJvdXRBY2Nlc3NpbmdSZWYsCisgICAgY29uZmlndXJhYmxlOiB0cnVlCisgIH0p
OworfQorCisvKioKKyAqIEZhY3RvcnkgbWV0aG9kIHRvIGNyZWF0ZSBhIG5ldyBSZWFjdCBlbGVt
ZW50LiBUaGlzIG5vIGxvbmdlciBhZGhlcmVzIHRvCisgKiB0aGUgY2xhc3MgcGF0dGVybiwgc28g
ZG8gbm90IHVzZSBuZXcgdG8gY2FsbCBpdC4gQWxzbywgbm8gaW5zdGFuY2VvZiBjaGVjaworICog
d2lsbCB3b3JrLiBJbnN0ZWFkIHRlc3QgJCR0eXBlb2YgZmllbGQgYWdhaW5zdCBTeW1ib2wuZm9y
KCdyZWFjdC5lbGVtZW50JykgdG8gY2hlY2sKKyAqIGlmIHNvbWV0aGluZyBpcyBhIFJlYWN0IEVs
ZW1lbnQuCisgKgorICogQHBhcmFtIHsqfSB0eXBlCisgKiBAcGFyYW0geyp9IGtleQorICogQHBh
cmFtIHtzdHJpbmd8b2JqZWN0fSByZWYKKyAqIEBwYXJhbSB7Kn0gc2VsZiBBICp0ZW1wb3Jhcnkq
IGhlbHBlciB0byBkZXRlY3QgcGxhY2VzIHdoZXJlIGB0aGlzYCBpcworICogZGlmZmVyZW50IGZy
b20gdGhlIGBvd25lcmAgd2hlbiBSZWFjdC5jcmVhdGVFbGVtZW50IGlzIGNhbGxlZCwgc28gdGhh
dCB3ZQorICogY2FuIHdhcm4uIFdlIHdhbnQgdG8gZ2V0IHJpZCBvZiBvd25lciBhbmQgcmVwbGFj
ZSBzdHJpbmcgYHJlZmBzIHdpdGggYXJyb3cKKyAqIGZ1bmN0aW9ucywgYW5kIGFzIGxvbmcgYXMg
YHRoaXNgIGFuZCBvd25lciBhcmUgdGhlIHNhbWUsIHRoZXJlIHdpbGwgYmUgbm8KKyAqIGNoYW5n
ZSBpbiBiZWhhdmlvci4KKyAqIEBwYXJhbSB7Kn0gc291cmNlIEFuIGFubm90YXRpb24gb2JqZWN0
IChhZGRlZCBieSBhIHRyYW5zcGlsZXIgb3Igb3RoZXJ3aXNlKQorICogaW5kaWNhdGluZyBmaWxl
bmFtZSwgbGluZSBudW1iZXIsIGFuZC9vciBvdGhlciBpbmZvcm1hdGlvbi4KKyAqIEBwYXJhbSB7
Kn0gb3duZXIKKyAqIEBwYXJhbSB7Kn0gcHJvcHMKKyAqIEBpbnRlcm5hbAorICovCit2YXIgUmVh
Y3RFbGVtZW50ID0gZnVuY3Rpb24gKHR5cGUsIGtleSwgcmVmLCBzZWxmLCBzb3VyY2UsIG93bmVy
LCBwcm9wcykgeworICB2YXIgZWxlbWVudCA9IHsKKyAgICAvLyBUaGlzIHRhZyBhbGxvdyB1cyB0
byB1bmlxdWVseSBpZGVudGlmeSB0aGlzIGFzIGEgUmVhY3QgRWxlbWVudAorICAgICQkdHlwZW9m
OiBSRUFDVF9FTEVNRU5UX1RZUEUsCisKKyAgICAvLyBCdWlsdC1pbiBwcm9wZXJ0aWVzIHRoYXQg
YmVsb25nIG9uIHRoZSBlbGVtZW50CisgICAgdHlwZTogdHlwZSwKKyAgICBrZXk6IGtleSwKKyAg
ICByZWY6IHJlZiwKKyAgICBwcm9wczogcHJvcHMsCisKKyAgICAvLyBSZWNvcmQgdGhlIGNvbXBv
bmVudCByZXNwb25zaWJsZSBmb3IgY3JlYXRpbmcgdGhpcyBlbGVtZW50LgorICAgIF9vd25lcjog
b3duZXIKKyAgfTsKKworICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7Cisg
ICAgLy8gVGhlIHZhbGlkYXRpb24gZmxhZyBpcyBjdXJyZW50bHkgbXV0YXRpdmUuIFdlIHB1dCBp
dCBvbgorICAgIC8vIGFuIGV4dGVybmFsIGJhY2tpbmcgc3RvcmUgc28gdGhhdCB3ZSBjYW4gZnJl
ZXplIHRoZSB3aG9sZSBvYmplY3QuCisgICAgLy8gVGhpcyBjYW4gYmUgcmVwbGFjZWQgd2l0aCBh
IFdlYWtNYXAgb25jZSB0aGV5IGFyZSBpbXBsZW1lbnRlZCBpbgorICAgIC8vIGNvbW1vbmx5IHVz
ZWQgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnRzLgorICAgIGVsZW1lbnQuX3N0b3JlID0ge307CisK
KyAgICAvLyBUbyBtYWtlIGNvbXBhcmluZyBSZWFjdEVsZW1lbnRzIGVhc2llciBmb3IgdGVzdGlu
ZyBwdXJwb3Nlcywgd2UgbWFrZQorICAgIC8vIHRoZSB2YWxpZGF0aW9uIGZsYWcgbm9uLWVudW1l
cmFibGUgKHdoZXJlIHBvc3NpYmxlLCB3aGljaCBzaG91bGQKKyAgICAvLyBpbmNsdWRlIGV2ZXJ5
IGVudmlyb25tZW50IHdlIHJ1biB0ZXN0cyBpbiksIHNvIHRoZSB0ZXN0IGZyYW1ld29yaworICAg
IC8vIGlnbm9yZXMgaXQuCisgICAgaWYgKGNhbkRlZmluZVByb3BlcnR5KSB7CisgICAgICBPYmpl
Y3QuZGVmaW5lUHJvcGVydHkoZWxlbWVudC5fc3RvcmUsICd2YWxpZGF0ZWQnLCB7CisgICAgICAg
IGNvbmZpZ3VyYWJsZTogZmFsc2UsCisgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLAorICAgICAg
ICB3cml0YWJsZTogdHJ1ZSwKKyAgICAgICAgdmFsdWU6IGZhbHNlCisgICAgICB9KTsKKyAgICAg
IC8vIHNlbGYgYW5kIHNvdXJjZSBhcmUgREVWIG9ubHkgcHJvcGVydGllcy4KKyAgICAgIE9iamVj
dC5kZWZpbmVQcm9wZXJ0eShlbGVtZW50LCAnX3NlbGYnLCB7CisgICAgICAgIGNvbmZpZ3VyYWJs
ZTogZmFsc2UsCisgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLAorICAgICAgICB3cml0YWJsZTog
ZmFsc2UsCisgICAgICAgIHZhbHVlOiBzZWxmCisgICAgICB9KTsKKyAgICAgIC8vIFR3byBlbGVt
ZW50cyBjcmVhdGVkIGluIHR3byBkaWZmZXJlbnQgcGxhY2VzIHNob3VsZCBiZSBjb25zaWRlcmVk
CisgICAgICAvLyBlcXVhbCBmb3IgdGVzdGluZyBwdXJwb3NlcyBhbmQgdGhlcmVmb3JlIHdlIGhp
ZGUgaXQgZnJvbSBlbnVtZXJhdGlvbi4KKyAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlbGVt
ZW50LCAnX3NvdXJjZScsIHsKKyAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSwKKyAgICAgICAg
ZW51bWVyYWJsZTogZmFsc2UsCisgICAgICAgIHdyaXRhYmxlOiBmYWxzZSwKKyAgICAgICAgdmFs
dWU6IHNvdXJjZQorICAgICAgfSk7CisgICAgfSBlbHNlIHsKKyAgICAgIGVsZW1lbnQuX3N0b3Jl
LnZhbGlkYXRlZCA9IGZhbHNlOworICAgICAgZWxlbWVudC5fc2VsZiA9IHNlbGY7CisgICAgICBl
bGVtZW50Ll9zb3VyY2UgPSBzb3VyY2U7CisgICAgfQorICAgIGlmIChPYmplY3QuZnJlZXplKSB7
CisgICAgICBPYmplY3QuZnJlZXplKGVsZW1lbnQucHJvcHMpOworICAgICAgT2JqZWN0LmZyZWV6
ZShlbGVtZW50KTsKKyAgICB9CisgIH0KKworICByZXR1cm4gZWxlbWVudDsKK307CisKKy8qKgor
ICogQ3JlYXRlIGFuZCByZXR1cm4gYSBuZXcgUmVhY3RFbGVtZW50IG9mIHRoZSBnaXZlbiB0eXBl
LgorICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdG9wLWxldmVs
LWFwaS5odG1sI3JlYWN0LmNyZWF0ZWVsZW1lbnQKKyAqLworUmVhY3RFbGVtZW50LmNyZWF0ZUVs
ZW1lbnQgPSBmdW5jdGlvbiAodHlwZSwgY29uZmlnLCBjaGlsZHJlbikgeworICB2YXIgcHJvcE5h
bWU7CisKKyAgLy8gUmVzZXJ2ZWQgbmFtZXMgYXJlIGV4dHJhY3RlZAorICB2YXIgcHJvcHMgPSB7
fTsKKworICB2YXIga2V5ID0gbnVsbDsKKyAgdmFyIHJlZiA9IG51bGw7CisgIHZhciBzZWxmID0g
bnVsbDsKKyAgdmFyIHNvdXJjZSA9IG51bGw7CisKKyAgaWYgKGNvbmZpZyAhPSBudWxsKSB7Cisg
ICAgaWYgKGhhc1ZhbGlkUmVmKGNvbmZpZykpIHsKKyAgICAgIHJlZiA9IGNvbmZpZy5yZWY7Cisg
ICAgfQorICAgIGlmIChoYXNWYWxpZEtleShjb25maWcpKSB7CisgICAgICBrZXkgPSAnJyArIGNv
bmZpZy5rZXk7CisgICAgfQorCisgICAgc2VsZiA9IGNvbmZpZy5fX3NlbGYgPT09IHVuZGVmaW5l
ZCA/IG51bGwgOiBjb25maWcuX19zZWxmOworICAgIHNvdXJjZSA9IGNvbmZpZy5fX3NvdXJjZSA9
PT0gdW5kZWZpbmVkID8gbnVsbCA6IGNvbmZpZy5fX3NvdXJjZTsKKyAgICAvLyBSZW1haW5pbmcg
cHJvcGVydGllcyBhcmUgYWRkZWQgdG8gYSBuZXcgcHJvcHMgb2JqZWN0CisgICAgZm9yIChwcm9w
TmFtZSBpbiBjb25maWcpIHsKKyAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKGNvbmZpZywg
cHJvcE5hbWUpICYmICFSRVNFUlZFRF9QUk9QUy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHsK
KyAgICAgICAgcHJvcHNbcHJvcE5hbWVdID0gY29uZmlnW3Byb3BOYW1lXTsKKyAgICAgIH0KKyAg
ICB9CisgIH0KKworICAvLyBDaGlsZHJlbiBjYW4gYmUgbW9yZSB0aGFuIG9uZSBhcmd1bWVudCwg
YW5kIHRob3NlIGFyZSB0cmFuc2ZlcnJlZCBvbnRvCisgIC8vIHRoZSBuZXdseSBhbGxvY2F0ZWQg
cHJvcHMgb2JqZWN0LgorICB2YXIgY2hpbGRyZW5MZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoIC0g
MjsKKyAgaWYgKGNoaWxkcmVuTGVuZ3RoID09PSAxKSB7CisgICAgcHJvcHMuY2hpbGRyZW4gPSBj
aGlsZHJlbjsKKyAgfSBlbHNlIGlmIChjaGlsZHJlbkxlbmd0aCA+IDEpIHsKKyAgICB2YXIgY2hp
bGRBcnJheSA9IEFycmF5KGNoaWxkcmVuTGVuZ3RoKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGNoaWxkcmVuTGVuZ3RoOyBpKyspIHsKKyAgICAgIGNoaWxkQXJyYXlbaV0gPSBhcmd1bWVudHNb
aSArIDJdOworICAgIH0KKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7
CisgICAgICBpZiAoT2JqZWN0LmZyZWV6ZSkgeworICAgICAgICBPYmplY3QuZnJlZXplKGNoaWxk
QXJyYXkpOworICAgICAgfQorICAgIH0KKyAgICBwcm9wcy5jaGlsZHJlbiA9IGNoaWxkQXJyYXk7
CisgIH0KKworICAvLyBSZXNvbHZlIGRlZmF1bHQgcHJvcHMKKyAgaWYgKHR5cGUgJiYgdHlwZS5k
ZWZhdWx0UHJvcHMpIHsKKyAgICB2YXIgZGVmYXVsdFByb3BzID0gdHlwZS5kZWZhdWx0UHJvcHM7
CisgICAgZm9yIChwcm9wTmFtZSBpbiBkZWZhdWx0UHJvcHMpIHsKKyAgICAgIGlmIChwcm9wc1tw
cm9wTmFtZV0gPT09IHVuZGVmaW5lZCkgeworICAgICAgICBwcm9wc1twcm9wTmFtZV0gPSBkZWZh
dWx0UHJvcHNbcHJvcE5hbWVdOworICAgICAgfQorICAgIH0KKyAgfQorICBpZiAoImRldmVsb3Bt
ZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgaWYgKGtleSB8fCByZWYpIHsKKyAgICAgIGlm
ICh0eXBlb2YgcHJvcHMuJCR0eXBlb2YgPT09ICd1bmRlZmluZWQnIHx8IHByb3BzLiQkdHlwZW9m
ICE9PSBSRUFDVF9FTEVNRU5UX1RZUEUpIHsKKyAgICAgICAgdmFyIGRpc3BsYXlOYW1lID0gdHlw
ZW9mIHR5cGUgPT09ICdmdW5jdGlvbicgPyB0eXBlLmRpc3BsYXlOYW1lIHx8IHR5cGUubmFtZSB8
fCAnVW5rbm93bicgOiB0eXBlOworICAgICAgICBpZiAoa2V5KSB7CisgICAgICAgICAgZGVmaW5l
S2V5UHJvcFdhcm5pbmdHZXR0ZXIocHJvcHMsIGRpc3BsYXlOYW1lKTsKKyAgICAgICAgfQorICAg
ICAgICBpZiAocmVmKSB7CisgICAgICAgICAgZGVmaW5lUmVmUHJvcFdhcm5pbmdHZXR0ZXIocHJv
cHMsIGRpc3BsYXlOYW1lKTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQorICByZXR1
cm4gUmVhY3RFbGVtZW50KHR5cGUsIGtleSwgcmVmLCBzZWxmLCBzb3VyY2UsIFJlYWN0Q3VycmVu
dE93bmVyLmN1cnJlbnQsIHByb3BzKTsKK307CisKKy8qKgorICogUmV0dXJuIGEgZnVuY3Rpb24g
dGhhdCBwcm9kdWNlcyBSZWFjdEVsZW1lbnRzIG9mIGEgZ2l2ZW4gdHlwZS4KKyAqIFNlZSBodHRw
czovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL3RvcC1sZXZlbC1hcGkuaHRtbCNyZWFj
dC5jcmVhdGVmYWN0b3J5CisgKi8KK1JlYWN0RWxlbWVudC5jcmVhdGVGYWN0b3J5ID0gZnVuY3Rp
b24gKHR5cGUpIHsKKyAgdmFyIGZhY3RvcnkgPSBSZWFjdEVsZW1lbnQuY3JlYXRlRWxlbWVudC5i
aW5kKG51bGwsIHR5cGUpOworICAvLyBFeHBvc2UgdGhlIHR5cGUgb24gdGhlIGZhY3RvcnkgYW5k
IHRoZSBwcm90b3R5cGUgc28gdGhhdCBpdCBjYW4gYmUKKyAgLy8gZWFzaWx5IGFjY2Vzc2VkIG9u
IGVsZW1lbnRzLiBFLmcuIGA8Rm9vIC8+LnR5cGUgPT09IEZvb2AuCisgIC8vIFRoaXMgc2hvdWxk
IG5vdCBiZSBuYW1lZCBgY29uc3RydWN0b3JgIHNpbmNlIHRoaXMgbWF5IG5vdCBiZSB0aGUgZnVu
Y3Rpb24KKyAgLy8gdGhhdCBjcmVhdGVkIHRoZSBlbGVtZW50LCBhbmQgaXQgbWF5IG5vdCBldmVu
IGJlIGEgY29uc3RydWN0b3IuCisgIC8vIExlZ2FjeSBob29rIFRPRE86IFdhcm4gaWYgdGhpcyBp
cyBhY2Nlc3NlZAorICBmYWN0b3J5LnR5cGUgPSB0eXBlOworICByZXR1cm4gZmFjdG9yeTsKK307
CisKK1JlYWN0RWxlbWVudC5jbG9uZUFuZFJlcGxhY2VLZXkgPSBmdW5jdGlvbiAob2xkRWxlbWVu
dCwgbmV3S2V5KSB7CisgIHZhciBuZXdFbGVtZW50ID0gUmVhY3RFbGVtZW50KG9sZEVsZW1lbnQu
dHlwZSwgbmV3S2V5LCBvbGRFbGVtZW50LnJlZiwgb2xkRWxlbWVudC5fc2VsZiwgb2xkRWxlbWVu
dC5fc291cmNlLCBvbGRFbGVtZW50Ll9vd25lciwgb2xkRWxlbWVudC5wcm9wcyk7CisKKyAgcmV0
dXJuIG5ld0VsZW1lbnQ7Cit9OworCisvKioKKyAqIENsb25lIGFuZCByZXR1cm4gYSBuZXcgUmVh
Y3RFbGVtZW50IHVzaW5nIGVsZW1lbnQgYXMgdGhlIHN0YXJ0aW5nIHBvaW50LgorICogU2VlIGh0
dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdG9wLWxldmVsLWFwaS5odG1sI3Jl
YWN0LmNsb25lZWxlbWVudAorICovCitSZWFjdEVsZW1lbnQuY2xvbmVFbGVtZW50ID0gZnVuY3Rp
b24gKGVsZW1lbnQsIGNvbmZpZywgY2hpbGRyZW4pIHsKKyAgdmFyIHByb3BOYW1lOworCisgIC8v
IE9yaWdpbmFsIHByb3BzIGFyZSBjb3BpZWQKKyAgdmFyIHByb3BzID0gX2Fzc2lnbih7fSwgZWxl
bWVudC5wcm9wcyk7CisKKyAgLy8gUmVzZXJ2ZWQgbmFtZXMgYXJlIGV4dHJhY3RlZAorICB2YXIg
a2V5ID0gZWxlbWVudC5rZXk7CisgIHZhciByZWYgPSBlbGVtZW50LnJlZjsKKyAgLy8gU2VsZiBp
cyBwcmVzZXJ2ZWQgc2luY2UgdGhlIG93bmVyIGlzIHByZXNlcnZlZC4KKyAgdmFyIHNlbGYgPSBl
bGVtZW50Ll9zZWxmOworICAvLyBTb3VyY2UgaXMgcHJlc2VydmVkIHNpbmNlIGNsb25lRWxlbWVu
dCBpcyB1bmxpa2VseSB0byBiZSB0YXJnZXRlZCBieSBhCisgIC8vIHRyYW5zcGlsZXIsIGFuZCB0
aGUgb3JpZ2luYWwgc291cmNlIGlzIHByb2JhYmx5IGEgYmV0dGVyIGluZGljYXRvciBvZiB0aGUK
KyAgLy8gdHJ1ZSBvd25lci4KKyAgdmFyIHNvdXJjZSA9IGVsZW1lbnQuX3NvdXJjZTsKKworICAv
LyBPd25lciB3aWxsIGJlIHByZXNlcnZlZCwgdW5sZXNzIHJlZiBpcyBvdmVycmlkZGVuCisgIHZh
ciBvd25lciA9IGVsZW1lbnQuX293bmVyOworCisgIGlmIChjb25maWcgIT0gbnVsbCkgeworICAg
IGlmIChoYXNWYWxpZFJlZihjb25maWcpKSB7CisgICAgICAvLyBTaWxlbnRseSBzdGVhbCB0aGUg
cmVmIGZyb20gdGhlIHBhcmVudC4KKyAgICAgIHJlZiA9IGNvbmZpZy5yZWY7CisgICAgICBvd25l
ciA9IFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQ7CisgICAgfQorICAgIGlmIChoYXNWYWxpZEtl
eShjb25maWcpKSB7CisgICAgICBrZXkgPSAnJyArIGNvbmZpZy5rZXk7CisgICAgfQorCisgICAg
Ly8gUmVtYWluaW5nIHByb3BlcnRpZXMgb3ZlcnJpZGUgZXhpc3RpbmcgcHJvcHMKKyAgICB2YXIg
ZGVmYXVsdFByb3BzOworICAgIGlmIChlbGVtZW50LnR5cGUgJiYgZWxlbWVudC50eXBlLmRlZmF1
bHRQcm9wcykgeworICAgICAgZGVmYXVsdFByb3BzID0gZWxlbWVudC50eXBlLmRlZmF1bHRQcm9w
czsKKyAgICB9CisgICAgZm9yIChwcm9wTmFtZSBpbiBjb25maWcpIHsKKyAgICAgIGlmIChoYXNP
d25Qcm9wZXJ0eS5jYWxsKGNvbmZpZywgcHJvcE5hbWUpICYmICFSRVNFUlZFRF9QUk9QUy5oYXNP
d25Qcm9wZXJ0eShwcm9wTmFtZSkpIHsKKyAgICAgICAgaWYgKGNvbmZpZ1twcm9wTmFtZV0gPT09
IHVuZGVmaW5lZCAmJiBkZWZhdWx0UHJvcHMgIT09IHVuZGVmaW5lZCkgeworICAgICAgICAgIC8v
IFJlc29sdmUgZGVmYXVsdCBwcm9wcworICAgICAgICAgIHByb3BzW3Byb3BOYW1lXSA9IGRlZmF1
bHRQcm9wc1twcm9wTmFtZV07CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgcHJvcHNbcHJv
cE5hbWVdID0gY29uZmlnW3Byb3BOYW1lXTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAg
fQorCisgIC8vIENoaWxkcmVuIGNhbiBiZSBtb3JlIHRoYW4gb25lIGFyZ3VtZW50LCBhbmQgdGhv
c2UgYXJlIHRyYW5zZmVycmVkIG9udG8KKyAgLy8gdGhlIG5ld2x5IGFsbG9jYXRlZCBwcm9wcyBv
YmplY3QuCisgIHZhciBjaGlsZHJlbkxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGggLSAyOworICBp
ZiAoY2hpbGRyZW5MZW5ndGggPT09IDEpIHsKKyAgICBwcm9wcy5jaGlsZHJlbiA9IGNoaWxkcmVu
OworICB9IGVsc2UgaWYgKGNoaWxkcmVuTGVuZ3RoID4gMSkgeworICAgIHZhciBjaGlsZEFycmF5
ID0gQXJyYXkoY2hpbGRyZW5MZW5ndGgpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRy
ZW5MZW5ndGg7IGkrKykgeworICAgICAgY2hpbGRBcnJheVtpXSA9IGFyZ3VtZW50c1tpICsgMl07
CisgICAgfQorICAgIHByb3BzLmNoaWxkcmVuID0gY2hpbGRBcnJheTsKKyAgfQorCisgIHJldHVy
biBSZWFjdEVsZW1lbnQoZWxlbWVudC50eXBlLCBrZXksIHJlZiwgc2VsZiwgc291cmNlLCBvd25l
ciwgcHJvcHMpOworfTsKKworLyoqCisgKiBWZXJpZmllcyB0aGUgb2JqZWN0IGlzIGEgUmVhY3RF
bGVtZW50LgorICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdG9w
LWxldmVsLWFwaS5odG1sI3JlYWN0LmlzdmFsaWRlbGVtZW50CisgKiBAcGFyYW0gez9vYmplY3R9
IG9iamVjdAorICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBgb2JqZWN0YCBpcyBhIHZhbGlk
IGNvbXBvbmVudC4KKyAqIEBmaW5hbAorICovCitSZWFjdEVsZW1lbnQuaXNWYWxpZEVsZW1lbnQg
PSBmdW5jdGlvbiAob2JqZWN0KSB7CisgIHJldHVybiB0eXBlb2Ygb2JqZWN0ID09PSAnb2JqZWN0
JyAmJiBvYmplY3QgIT09IG51bGwgJiYgb2JqZWN0LiQkdHlwZW9mID09PSBSRUFDVF9FTEVNRU5U
X1RZUEU7Cit9OworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0RWxlbWVudDsKK30seyIxNCI6MTQs
IjE3IjoxNywiMzMiOjMzLCI0OCI6NDgsIjQ5Ijo0OX1dLDE3OltmdW5jdGlvbihfZGVyZXFfLG1v
ZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCwgRmFjZWJvb2ss
IEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBp
cyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFu
IGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRo
ZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIAorICovCisKKyd1
c2Ugc3RyaWN0JzsKKworLy8gVGhlIFN5bWJvbCB1c2VkIHRvIHRhZyB0aGUgUmVhY3RFbGVtZW50
IHR5cGUuIElmIHRoZXJlIGlzIG5vIG5hdGl2ZSBTeW1ib2wKKy8vIG5vciBwb2x5ZmlsbCwgdGhl
biBhIHBsYWluIG51bWJlciBpcyB1c2VkIGZvciBwZXJmb3JtYW5jZS4KKwordmFyIFJFQUNUX0VM
RU1FTlRfVFlQRSA9IHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgU3ltYm9sWydmb3In
XSAmJiBTeW1ib2xbJ2ZvciddKCdyZWFjdC5lbGVtZW50JykgfHwgMHhlYWM3OworCittb2R1bGUu
ZXhwb3J0cyA9IFJFQUNUX0VMRU1FTlRfVFlQRTsKK30se31dLDE4OltmdW5jdGlvbihfZGVyZXFf
LG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCwgRmFjZWJv
b2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29k
ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisg
KiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUu
IEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisvKioK
KyAqIFJlYWN0RWxlbWVudFZhbGlkYXRvciBwcm92aWRlcyBhIHdyYXBwZXIgYXJvdW5kIGEgZWxl
bWVudCBmYWN0b3J5CisgKiB3aGljaCB2YWxpZGF0ZXMgdGhlIHByb3BzIHBhc3NlZCB0byB0aGUg
ZWxlbWVudC4gVGhpcyBpcyBpbnRlbmRlZCB0byBiZQorICogdXNlZCBvbmx5IGluIERFViBhbmQg
Y291bGQgYmUgcmVwbGFjZWQgYnkgYSBzdGF0aWMgdHlwZSBjaGVja2VyIGZvciBsYW5ndWFnZXMK
KyAqIHRoYXQgc3VwcG9ydCBpdC4KKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBSZWFjdEN1
cnJlbnRPd25lciA9IF9kZXJlcV8oMTQpOwordmFyIFJlYWN0Q29tcG9uZW50VHJlZUhvb2sgPSBf
ZGVyZXFfKDEyKTsKK3ZhciBSZWFjdEVsZW1lbnQgPSBfZGVyZXFfKDE2KTsKKwordmFyIGNoZWNr
UmVhY3RUeXBlU3BlYyA9IF9kZXJlcV8oMzQpOworCit2YXIgY2FuRGVmaW5lUHJvcGVydHkgPSBf
ZGVyZXFfKDMzKTsKK3ZhciBnZXRJdGVyYXRvckZuID0gX2RlcmVxXygzNik7Cit2YXIgd2Fybmlu
ZyA9IF9kZXJlcV8oNDgpOworCitmdW5jdGlvbiBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0o
KSB7CisgIGlmIChSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50KSB7CisgICAgdmFyIG5hbWUgPSBS
ZWFjdEN1cnJlbnRPd25lci5jdXJyZW50LmdldE5hbWUoKTsKKyAgICBpZiAobmFtZSkgeworICAg
ICAgcmV0dXJuICcgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgYCcgKyBuYW1lICsgJ2AuJzsK
KyAgICB9CisgIH0KKyAgcmV0dXJuICcnOworfQorCisvKioKKyAqIFdhcm4gaWYgdGhlcmUncyBu
byBrZXkgZXhwbGljaXRseSBzZXQgb24gZHluYW1pYyBhcnJheXMgb2YgY2hpbGRyZW4gb3IKKyAq
IG9iamVjdCBrZXlzIGFyZSBub3QgdmFsaWQuIFRoaXMgYWxsb3dzIHVzIHRvIGtlZXAgdHJhY2sg
b2YgY2hpbGRyZW4gYmV0d2VlbgorICogdXBkYXRlcy4KKyAqLwordmFyIG93bmVySGFzS2V5VXNl
V2FybmluZyA9IHt9OworCitmdW5jdGlvbiBnZXRDdXJyZW50Q29tcG9uZW50RXJyb3JJbmZvKHBh
cmVudFR5cGUpIHsKKyAgdmFyIGluZm8gPSBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0oKTsK
KworICBpZiAoIWluZm8pIHsKKyAgICB2YXIgcGFyZW50TmFtZSA9IHR5cGVvZiBwYXJlbnRUeXBl
ID09PSAnc3RyaW5nJyA/IHBhcmVudFR5cGUgOiBwYXJlbnRUeXBlLmRpc3BsYXlOYW1lIHx8IHBh
cmVudFR5cGUubmFtZTsKKyAgICBpZiAocGFyZW50TmFtZSkgeworICAgICAgaW5mbyA9ICcgQ2hl
Y2sgdGhlIHRvcC1sZXZlbCByZW5kZXIgY2FsbCB1c2luZyA8JyArIHBhcmVudE5hbWUgKyAnPi4n
OworICAgIH0KKyAgfQorICByZXR1cm4gaW5mbzsKK30KKworLyoqCisgKiBXYXJuIGlmIHRoZSBl
bGVtZW50IGRvZXNuJ3QgaGF2ZSBhbiBleHBsaWNpdCBrZXkgYXNzaWduZWQgdG8gaXQuCisgKiBU
aGlzIGVsZW1lbnQgaXMgaW4gYW4gYXJyYXkuIFRoZSBhcnJheSBjb3VsZCBncm93IGFuZCBzaHJp
bmsgb3IgYmUKKyAqIHJlb3JkZXJlZC4gQWxsIGNoaWxkcmVuIHRoYXQgaGF2ZW4ndCBhbHJlYWR5
IGJlZW4gdmFsaWRhdGVkIGFyZSByZXF1aXJlZCB0bworICogaGF2ZSBhICJrZXkiIHByb3BlcnR5
IGFzc2lnbmVkIHRvIGl0LiBFcnJvciBzdGF0dXNlcyBhcmUgY2FjaGVkIHNvIGEgd2FybmluZwor
ICogd2lsbCBvbmx5IGJlIHNob3duIG9uY2UuCisgKgorICogQGludGVybmFsCisgKiBAcGFyYW0g
e1JlYWN0RWxlbWVudH0gZWxlbWVudCBFbGVtZW50IHRoYXQgcmVxdWlyZXMgYSBrZXkuCisgKiBA
cGFyYW0geyp9IHBhcmVudFR5cGUgZWxlbWVudCdzIHBhcmVudCdzIHR5cGUuCisgKi8KK2Z1bmN0
aW9uIHZhbGlkYXRlRXhwbGljaXRLZXkoZWxlbWVudCwgcGFyZW50VHlwZSkgeworICBpZiAoIWVs
ZW1lbnQuX3N0b3JlIHx8IGVsZW1lbnQuX3N0b3JlLnZhbGlkYXRlZCB8fCBlbGVtZW50LmtleSAh
PSBudWxsKSB7CisgICAgcmV0dXJuOworICB9CisgIGVsZW1lbnQuX3N0b3JlLnZhbGlkYXRlZCA9
IHRydWU7CisKKyAgdmFyIG1lbW9pemVyID0gb3duZXJIYXNLZXlVc2VXYXJuaW5nLnVuaXF1ZUtl
eSB8fCAob3duZXJIYXNLZXlVc2VXYXJuaW5nLnVuaXF1ZUtleSA9IHt9KTsKKworICB2YXIgY3Vy
cmVudENvbXBvbmVudEVycm9ySW5mbyA9IGdldEN1cnJlbnRDb21wb25lbnRFcnJvckluZm8ocGFy
ZW50VHlwZSk7CisgIGlmIChtZW1vaXplcltjdXJyZW50Q29tcG9uZW50RXJyb3JJbmZvXSkgewor
ICAgIHJldHVybjsKKyAgfQorICBtZW1vaXplcltjdXJyZW50Q29tcG9uZW50RXJyb3JJbmZvXSA9
IHRydWU7CisKKyAgLy8gVXN1YWxseSB0aGUgY3VycmVudCBvd25lciBpcyB0aGUgb2ZmZW5kZXIs
IGJ1dCBpZiBpdCBhY2NlcHRzIGNoaWxkcmVuIGFzIGEKKyAgLy8gcHJvcGVydHksIGl0IG1heSBi
ZSB0aGUgY3JlYXRvciBvZiB0aGUgY2hpbGQgdGhhdCdzIHJlc3BvbnNpYmxlIGZvcgorICAvLyBh
c3NpZ25pbmcgaXQgYSBrZXkuCisgIHZhciBjaGlsZE93bmVyID0gJyc7CisgIGlmIChlbGVtZW50
ICYmIGVsZW1lbnQuX293bmVyICYmIGVsZW1lbnQuX293bmVyICE9PSBSZWFjdEN1cnJlbnRPd25l
ci5jdXJyZW50KSB7CisgICAgLy8gR2l2ZSB0aGUgY29tcG9uZW50IHRoYXQgb3JpZ2luYWxseSBj
cmVhdGVkIHRoaXMgY2hpbGQuCisgICAgY2hpbGRPd25lciA9ICcgSXQgd2FzIHBhc3NlZCBhIGNo
aWxkIGZyb20gJyArIGVsZW1lbnQuX293bmVyLmdldE5hbWUoKSArICcuJzsKKyAgfQorCisgICJk
ZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdFYWNoIGNoaWxk
IGluIGFuIGFycmF5IG9yIGl0ZXJhdG9yIHNob3VsZCBoYXZlIGEgdW5pcXVlICJrZXkiIHByb3Au
JyArICclcyVzIFNlZSBodHRwczovL2ZiLm1lL3JlYWN0LXdhcm5pbmcta2V5cyBmb3IgbW9yZSBp
bmZvcm1hdGlvbi4lcycsIGN1cnJlbnRDb21wb25lbnRFcnJvckluZm8sIGNoaWxkT3duZXIsIFJl
YWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0Q3VycmVudFN0YWNrQWRkZW5kdW0oZWxlbWVudCkpIDog
dm9pZCAwOworfQorCisvKioKKyAqIEVuc3VyZSB0aGF0IGV2ZXJ5IGVsZW1lbnQgZWl0aGVyIGlz
IHBhc3NlZCBpbiBhIHN0YXRpYyBsb2NhdGlvbiwgaW4gYW4KKyAqIGFycmF5IHdpdGggYW4gZXhw
bGljaXQga2V5cyBwcm9wZXJ0eSBkZWZpbmVkLCBvciBpbiBhbiBvYmplY3QgbGl0ZXJhbAorICog
d2l0aCB2YWxpZCBrZXkgcHJvcGVydHkuCisgKgorICogQGludGVybmFsCisgKiBAcGFyYW0ge1Jl
YWN0Tm9kZX0gbm9kZSBTdGF0aWNhbGx5IHBhc3NlZCBjaGlsZCBvZiBhbnkgdHlwZS4KKyAqIEBw
YXJhbSB7Kn0gcGFyZW50VHlwZSBub2RlJ3MgcGFyZW50J3MgdHlwZS4KKyAqLworZnVuY3Rpb24g
dmFsaWRhdGVDaGlsZEtleXMobm9kZSwgcGFyZW50VHlwZSkgeworICBpZiAodHlwZW9mIG5vZGUg
IT09ICdvYmplY3QnKSB7CisgICAgcmV0dXJuOworICB9CisgIGlmIChBcnJheS5pc0FycmF5KG5v
ZGUpKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlLmxlbmd0aDsgaSsrKSB7CisgICAg
ICB2YXIgY2hpbGQgPSBub2RlW2ldOworICAgICAgaWYgKFJlYWN0RWxlbWVudC5pc1ZhbGlkRWxl
bWVudChjaGlsZCkpIHsKKyAgICAgICAgdmFsaWRhdGVFeHBsaWNpdEtleShjaGlsZCwgcGFyZW50
VHlwZSk7CisgICAgICB9CisgICAgfQorICB9IGVsc2UgaWYgKFJlYWN0RWxlbWVudC5pc1ZhbGlk
RWxlbWVudChub2RlKSkgeworICAgIC8vIFRoaXMgZWxlbWVudCB3YXMgcGFzc2VkIGluIGEgdmFs
aWQgbG9jYXRpb24uCisgICAgaWYgKG5vZGUuX3N0b3JlKSB7CisgICAgICBub2RlLl9zdG9yZS52
YWxpZGF0ZWQgPSB0cnVlOworICAgIH0KKyAgfSBlbHNlIGlmIChub2RlKSB7CisgICAgdmFyIGl0
ZXJhdG9yRm4gPSBnZXRJdGVyYXRvckZuKG5vZGUpOworICAgIC8vIEVudHJ5IGl0ZXJhdG9ycyBw
cm92aWRlIGltcGxpY2l0IGtleXMuCisgICAgaWYgKGl0ZXJhdG9yRm4pIHsKKyAgICAgIGlmIChp
dGVyYXRvckZuICE9PSBub2RlLmVudHJpZXMpIHsKKyAgICAgICAgdmFyIGl0ZXJhdG9yID0gaXRl
cmF0b3JGbi5jYWxsKG5vZGUpOworICAgICAgICB2YXIgc3RlcDsKKyAgICAgICAgd2hpbGUgKCEo
c3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkgeworICAgICAgICAgIGlmIChSZWFjdEVsZW1l
bnQuaXNWYWxpZEVsZW1lbnQoc3RlcC52YWx1ZSkpIHsKKyAgICAgICAgICAgIHZhbGlkYXRlRXhw
bGljaXRLZXkoc3RlcC52YWx1ZSwgcGFyZW50VHlwZSk7CisgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICB9CisgICAgfQorICB9Cit9CisKKy8qKgorICogR2l2ZW4gYW4gZWxlbWVudCwgdmFs
aWRhdGUgdGhhdCBpdHMgcHJvcHMgZm9sbG93IHRoZSBwcm9wVHlwZXMgZGVmaW5pdGlvbiwKKyAq
IHByb3ZpZGVkIGJ5IHRoZSB0eXBlLgorICoKKyAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBlbGVt
ZW50CisgKi8KK2Z1bmN0aW9uIHZhbGlkYXRlUHJvcFR5cGVzKGVsZW1lbnQpIHsKKyAgdmFyIGNv
bXBvbmVudENsYXNzID0gZWxlbWVudC50eXBlOworICBpZiAodHlwZW9mIGNvbXBvbmVudENsYXNz
ICE9PSAnZnVuY3Rpb24nKSB7CisgICAgcmV0dXJuOworICB9CisgIHZhciBuYW1lID0gY29tcG9u
ZW50Q2xhc3MuZGlzcGxheU5hbWUgfHwgY29tcG9uZW50Q2xhc3MubmFtZTsKKyAgaWYgKGNvbXBv
bmVudENsYXNzLnByb3BUeXBlcykgeworICAgIGNoZWNrUmVhY3RUeXBlU3BlYyhjb21wb25lbnRD
bGFzcy5wcm9wVHlwZXMsIGVsZW1lbnQucHJvcHMsICdwcm9wJywgbmFtZSwgZWxlbWVudCwgbnVs
bCk7CisgIH0KKyAgaWYgKHR5cGVvZiBjb21wb25lbnRDbGFzcy5nZXREZWZhdWx0UHJvcHMgPT09
ICdmdW5jdGlvbicpIHsKKyAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJu
aW5nKGNvbXBvbmVudENsYXNzLmdldERlZmF1bHRQcm9wcy5pc1JlYWN0Q2xhc3NBcHByb3ZlZCwg
J2dldERlZmF1bHRQcm9wcyBpcyBvbmx5IHVzZWQgb24gY2xhc3NpYyBSZWFjdC5jcmVhdGVDbGFz
cyAnICsgJ2RlZmluaXRpb25zLiBVc2UgYSBzdGF0aWMgcHJvcGVydHkgbmFtZWQgYGRlZmF1bHRQ
cm9wc2AgaW5zdGVhZC4nKSA6IHZvaWQgMDsKKyAgfQorfQorCit2YXIgUmVhY3RFbGVtZW50VmFs
aWRhdG9yID0geworCisgIGNyZWF0ZUVsZW1lbnQ6IGZ1bmN0aW9uICh0eXBlLCBwcm9wcywgY2hp
bGRyZW4pIHsKKyAgICB2YXIgdmFsaWRUeXBlID0gdHlwZW9mIHR5cGUgPT09ICdzdHJpbmcnIHx8
IHR5cGVvZiB0eXBlID09PSAnZnVuY3Rpb24nOworICAgIC8vIFdlIHdhcm4gaW4gdGhpcyBjYXNl
IGJ1dCBkb24ndCB0aHJvdy4gV2UgZXhwZWN0IHRoZSBlbGVtZW50IGNyZWF0aW9uIHRvCisgICAg
Ly8gc3VjY2VlZCBhbmQgdGhlcmUgd2lsbCBsaWtlbHkgYmUgZXJyb3JzIGluIHJlbmRlci4KKyAg
ICBpZiAoIXZhbGlkVHlwZSkgeworICAgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24n
ID8gd2FybmluZyhmYWxzZSwgJ1JlYWN0LmNyZWF0ZUVsZW1lbnQ6IHR5cGUgc2hvdWxkIG5vdCBi
ZSBudWxsLCB1bmRlZmluZWQsIGJvb2xlYW4sIG9yICcgKyAnbnVtYmVyLiBJdCBzaG91bGQgYmUg
YSBzdHJpbmcgKGZvciBET00gZWxlbWVudHMpIG9yIGEgUmVhY3RDbGFzcyAnICsgJyhmb3IgY29t
cG9zaXRlIGNvbXBvbmVudHMpLiVzJywgZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKCkpIDog
dm9pZCAwOworICAgIH0KKworICAgIHZhciBlbGVtZW50ID0gUmVhY3RFbGVtZW50LmNyZWF0ZUVs
ZW1lbnQuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKKworICAgIC8vIFRoZSByZXN1bHQgY2FuIGJl
IG51bGxpc2ggaWYgYSBtb2NrIG9yIGEgY3VzdG9tIGZ1bmN0aW9uIGlzIHVzZWQuCisgICAgLy8g
VE9ETzogRHJvcCB0aGlzIHdoZW4gdGhlc2UgYXJlIG5vIGxvbmdlciBhbGxvd2VkIGFzIHRoZSB0
eXBlIGFyZ3VtZW50LgorICAgIGlmIChlbGVtZW50ID09IG51bGwpIHsKKyAgICAgIHJldHVybiBl
bGVtZW50OworICAgIH0KKworICAgIC8vIFNraXAga2V5IHdhcm5pbmcgaWYgdGhlIHR5cGUgaXNu
J3QgdmFsaWQgc2luY2Ugb3VyIGtleSB2YWxpZGF0aW9uIGxvZ2ljCisgICAgLy8gZG9lc24ndCBl
eHBlY3QgYSBub24tc3RyaW5nL2Z1bmN0aW9uIHR5cGUgYW5kIGNhbiB0aHJvdyBjb25mdXNpbmcg
ZXJyb3JzLgorICAgIC8vIFdlIGRvbid0IHdhbnQgZXhjZXB0aW9uIGJlaGF2aW9yIHRvIGRpZmZl
ciBiZXR3ZWVuIGRldiBhbmQgcHJvZC4KKyAgICAvLyAoUmVuZGVyaW5nIHdpbGwgdGhyb3cgd2l0
aCBhIGhlbHBmdWwgbWVzc2FnZSBhbmQgYXMgc29vbiBhcyB0aGUgdHlwZSBpcworICAgIC8vIGZp
eGVkLCB0aGUga2V5IHdhcm5pbmdzIHdpbGwgYXBwZWFyLikKKyAgICBpZiAodmFsaWRUeXBlKSB7
CisgICAgICBmb3IgKHZhciBpID0gMjsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeworICAg
ICAgICB2YWxpZGF0ZUNoaWxkS2V5cyhhcmd1bWVudHNbaV0sIHR5cGUpOworICAgICAgfQorICAg
IH0KKworICAgIHZhbGlkYXRlUHJvcFR5cGVzKGVsZW1lbnQpOworCisgICAgcmV0dXJuIGVsZW1l
bnQ7CisgIH0sCisKKyAgY3JlYXRlRmFjdG9yeTogZnVuY3Rpb24gKHR5cGUpIHsKKyAgICB2YXIg
dmFsaWRhdGVkRmFjdG9yeSA9IFJlYWN0RWxlbWVudFZhbGlkYXRvci5jcmVhdGVFbGVtZW50LmJp
bmQobnVsbCwgdHlwZSk7CisgICAgLy8gTGVnYWN5IGhvb2sgVE9ETzogV2FybiBpZiB0aGlzIGlz
IGFjY2Vzc2VkCisgICAgdmFsaWRhdGVkRmFjdG9yeS50eXBlID0gdHlwZTsKKworICAgIGlmICgi
ZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgIGlmIChjYW5EZWZpbmVQcm9w
ZXJ0eSkgeworICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodmFsaWRhdGVkRmFjdG9yeSwg
J3R5cGUnLCB7CisgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsCisgICAgICAgICAgZ2V0OiBm
dW5jdGlvbiAoKSB7CisgICAgICAgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicg
PyB3YXJuaW5nKGZhbHNlLCAnRmFjdG9yeS50eXBlIGlzIGRlcHJlY2F0ZWQuIEFjY2VzcyB0aGUg
Y2xhc3MgZGlyZWN0bHkgJyArICdiZWZvcmUgcGFzc2luZyBpdCB0byBjcmVhdGVGYWN0b3J5Licp
IDogdm9pZCAwOworICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICd0eXBl
JywgeworICAgICAgICAgICAgICB2YWx1ZTogdHlwZQorICAgICAgICAgICAgfSk7CisgICAgICAg
ICAgICByZXR1cm4gdHlwZTsKKyAgICAgICAgICB9CisgICAgICAgIH0pOworICAgICAgfQorICAg
IH0KKworICAgIHJldHVybiB2YWxpZGF0ZWRGYWN0b3J5OworICB9LAorCisgIGNsb25lRWxlbWVu
dDogZnVuY3Rpb24gKGVsZW1lbnQsIHByb3BzLCBjaGlsZHJlbikgeworICAgIHZhciBuZXdFbGVt
ZW50ID0gUmVhY3RFbGVtZW50LmNsb25lRWxlbWVudC5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwor
ICAgIGZvciAodmFyIGkgPSAyOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YWxpZGF0ZUNoaWxkS2V5cyhhcmd1bWVudHNbaV0sIG5ld0VsZW1lbnQudHlwZSk7CisgICAgfQor
ICAgIHZhbGlkYXRlUHJvcFR5cGVzKG5ld0VsZW1lbnQpOworICAgIHJldHVybiBuZXdFbGVtZW50
OworICB9CisKK307CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RFbGVtZW50VmFsaWRhdG9yOwor
fSx7IjEyIjoxMiwiMTQiOjE0LCIxNiI6MTYsIjMzIjozMywiMzQiOjM0LCIzNiI6MzYsIjQ4Ijo0
OH1dLDE5OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJp
Z2h0IDIwMTUtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxl
IGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0
b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVu
dCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGly
ZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBfcHJvZEludmFyaWFudCA9
IF9kZXJlcV8oMzgpOworCit2YXIgUmVhY3RDaGlsZHJlbiA9IF9kZXJlcV8oOSk7Cit2YXIgUmVh
Y3RFbGVtZW50ID0gX2RlcmVxXygxNik7CisKK3ZhciBlbXB0eUZ1bmN0aW9uID0gX2RlcmVxXyg0
NCk7Cit2YXIgaW52YXJpYW50ID0gX2RlcmVxXyg0Nik7Cit2YXIgd2FybmluZyA9IF9kZXJlcV8o
NDgpOworCisvKioKKyAqIFdlIHVzZWQgdG8gYWxsb3cga2V5ZWQgb2JqZWN0cyB0byBzZXJ2ZSBh
cyBhIGNvbGxlY3Rpb24gb2YgUmVhY3RFbGVtZW50cywKKyAqIG9yIG5lc3RlZCBzZXRzLiBUaGlz
IGFsbG93ZWQgdXMgYSB3YXkgdG8gZXhwbGljaXRseSBrZXkgYSBzZXQgb3IgZnJhZ21lbnQgb2YK
KyAqIGNvbXBvbmVudHMuIFRoaXMgaXMgbm93IGJlaW5nIHJlcGxhY2VkIHdpdGggYW4gb3BhcXVl
IGRhdGEgc3RydWN0dXJlLgorICogVGhlIHVwZ3JhZGUgcGF0aCBpcyB0byBjYWxsIFJlYWN0LmFk
ZG9ucy5jcmVhdGVGcmFnbWVudCh7IGtleTogdmFsdWUgfSkgdG8KKyAqIGNyZWF0ZSBhIGtleWVk
IGZyYWdtZW50LiBUaGUgcmVzdWx0aW5nIGRhdGEgc3RydWN0dXJlIGlzIGFuIGFycmF5LgorICov
CisKK3ZhciBudW1lcmljUHJvcGVydHlSZWdleCA9IC9eXGQrJC87CisKK3ZhciB3YXJuZWRBYm91
dE51bWVyaWMgPSBmYWxzZTsKKwordmFyIFJlYWN0RnJhZ21lbnQgPSB7CisgIC8qKgorICAgKiBX
cmFwIGEga2V5ZWQgb2JqZWN0IGluIGFuIG9wYXF1ZSBwcm94eSB0aGF0IHdhcm5zIHlvdSBpZiB5
b3UgYWNjZXNzIGFueQorICAgKiBvZiBpdHMgcHJvcGVydGllcy4KKyAgICogU2VlIGh0dHBzOi8v
ZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvY3JlYXRlLWZyYWdtZW50Lmh0bWwKKyAgICov
CisgIGNyZWF0ZTogZnVuY3Rpb24gKG9iamVjdCkgeworICAgIGlmICh0eXBlb2Ygb2JqZWN0ICE9
PSAnb2JqZWN0JyB8fCAhb2JqZWN0IHx8IEFycmF5LmlzQXJyYXkob2JqZWN0KSkgeworICAgICAg
ImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1JlYWN0LmFk
ZG9ucy5jcmVhdGVGcmFnbWVudCBvbmx5IGFjY2VwdHMgYSBzaW5nbGUgb2JqZWN0LiBHb3Q6ICVz
Jywgb2JqZWN0KSA6IHZvaWQgMDsKKyAgICAgIHJldHVybiBvYmplY3Q7CisgICAgfQorICAgIGlm
IChSZWFjdEVsZW1lbnQuaXNWYWxpZEVsZW1lbnQob2JqZWN0KSkgeworICAgICAgImRldmVsb3Bt
ZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1JlYWN0LmFkZG9ucy5jcmVh
dGVGcmFnbWVudCBkb2VzIG5vdCBhY2NlcHQgYSBSZWFjdEVsZW1lbnQgJyArICd3aXRob3V0IGEg
d3JhcHBlciBvYmplY3QuJykgOiB2b2lkIDA7CisgICAgICByZXR1cm4gb2JqZWN0OworICAgIH0K
KworICAgICEob2JqZWN0Lm5vZGVUeXBlICE9PSAxKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9k
dWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0LmFkZG9ucy5jcmVhdGVGcmFnbWVudCgu
Li4pOiBFbmNvdW50ZXJlZCBhbiBpbnZhbGlkIGNoaWxkOyBET00gZWxlbWVudHMgYXJlIG5vdCB2
YWxpZCBjaGlsZHJlbiBvZiBSZWFjdCBjb21wb25lbnRzLicpIDogX3Byb2RJbnZhcmlhbnQoJzAn
KSA6IHZvaWQgMDsKKworICAgIHZhciByZXN1bHQgPSBbXTsKKworICAgIGZvciAodmFyIGtleSBp
biBvYmplY3QpIHsKKyAgICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsK
KyAgICAgICAgaWYgKCF3YXJuZWRBYm91dE51bWVyaWMgJiYgbnVtZXJpY1Byb3BlcnR5UmVnZXgu
dGVzdChrZXkpKSB7CisgICAgICAgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8g
d2FybmluZyhmYWxzZSwgJ1JlYWN0LmFkZG9ucy5jcmVhdGVGcmFnbWVudCguLi4pOiBDaGlsZCBv
YmplY3RzIHNob3VsZCBoYXZlICcgKyAnbm9uLW51bWVyaWMga2V5cyBzbyBvcmRlcmluZyBpcyBw
cmVzZXJ2ZWQuJykgOiB2b2lkIDA7CisgICAgICAgICAgd2FybmVkQWJvdXROdW1lcmljID0gdHJ1
ZTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgUmVhY3RDaGlsZHJlbi5tYXBJbnRvV2l0aEtl
eVByZWZpeEludGVybmFsKG9iamVjdFtrZXldLCByZXN1bHQsIGtleSwgZW1wdHlGdW5jdGlvbi50
aGF0UmV0dXJuc0FyZ3VtZW50KTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworICB9Cit9
OworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0RnJhZ21lbnQ7Cit9LHsiMTYiOjE2LCIzOCI6Mzgs
IjQ0Ijo0NCwiNDYiOjQ2LCI0OCI6NDgsIjkiOjl9XSwyMDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1
bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJ
bmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElD
RU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUg
UEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJp
Y3QnOworCisvKioKKyAqIFJlYWN0TGluayBlbmNhcHN1bGF0ZXMgYSBjb21tb24gcGF0dGVybiBp
biB3aGljaCBhIGNvbXBvbmVudCB3YW50cyB0byBtb2RpZnkKKyAqIGEgcHJvcCByZWNlaXZlZCBm
cm9tIGl0cyBwYXJlbnQuIFJlYWN0TGluayBhbGxvd3MgdGhlIHBhcmVudCB0byBwYXNzIGRvd24g
YQorICogdmFsdWUgY291cGxlZCB3aXRoIGEgY2FsbGJhY2sgdGhhdCwgd2hlbiBpbnZva2VkLCBl
eHByZXNzZXMgYW4gaW50ZW50IHRvCisgKiBtb2RpZnkgdGhhdCB2YWx1ZS4gRm9yIGV4YW1wbGU6
CisgKgorICogUmVhY3QuY3JlYXRlQ2xhc3MoeworICogICBnZXRJbml0aWFsU3RhdGU6IGZ1bmN0
aW9uKCkgeworICogICAgIHJldHVybiB7dmFsdWU6ICcnfTsKKyAqICAgfSwKKyAqICAgcmVuZGVy
OiBmdW5jdGlvbigpIHsKKyAqICAgICB2YXIgdmFsdWVMaW5rID0gbmV3IFJlYWN0TGluayh0aGlz
LnN0YXRlLnZhbHVlLCB0aGlzLl9oYW5kbGVWYWx1ZUNoYW5nZSk7CisgKiAgICAgcmV0dXJuIDxp
bnB1dCB2YWx1ZUxpbms9e3ZhbHVlTGlua30gLz47CisgKiAgIH0sCisgKiAgIF9oYW5kbGVWYWx1
ZUNoYW5nZTogZnVuY3Rpb24obmV3VmFsdWUpIHsKKyAqICAgICB0aGlzLnNldFN0YXRlKHt2YWx1
ZTogbmV3VmFsdWV9KTsKKyAqICAgfQorICogfSk7CisgKgorICogV2UgaGF2ZSBwcm92aWRlZCBz
b21lIHN1Z2FyeSBtaXhpbnMgdG8gbWFrZSB0aGUgY3JlYXRpb24gYW5kCisgKiBjb25zdW1wdGlv
biBvZiBSZWFjdExpbmsgZWFzaWVyOyBzZWUgTGlua2VkVmFsdWVVdGlscyBhbmQgTGlua2VkU3Rh
dGVNaXhpbi4KKyAqLworCit2YXIgUmVhY3QgPSBfZGVyZXFfKDUpOworCisvKioKKyAqIERlcHJl
Y2F0ZWQ6IEFuIGFuIGVhc3kgd2F5IHRvIGV4cHJlc3MgdHdvLXdheSBiaW5kaW5nIHdpdGggUmVh
Y3QuIAorICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdHdvLXdh
eS1iaW5kaW5nLWhlbHBlcnMuaHRtbAorICoKKyAqIEBwYXJhbSB7Kn0gdmFsdWUgY3VycmVudCB2
YWx1ZSBvZiB0aGUgbGluaworICogQHBhcmFtIHtmdW5jdGlvbn0gcmVxdWVzdENoYW5nZSBjYWxs
YmFjayB0byByZXF1ZXN0IGEgY2hhbmdlCisgKi8KK2Z1bmN0aW9uIFJlYWN0TGluayh2YWx1ZSwg
cmVxdWVzdENoYW5nZSkgeworICB0aGlzLnZhbHVlID0gdmFsdWU7CisgIHRoaXMucmVxdWVzdENo
YW5nZSA9IHJlcXVlc3RDaGFuZ2U7Cit9CisKKy8qKgorICogQ3JlYXRlcyBhIFByb3BUeXBlIHRo
YXQgZW5mb3JjZXMgdGhlIFJlYWN0TGluayBBUEkgYW5kIG9wdGlvbmFsbHkgY2hlY2tzIHRoZQor
ICogdHlwZSBvZiB0aGUgdmFsdWUgYmVpbmcgcGFzc2VkIGluc2lkZSB0aGUgbGluay4gRXhhbXBs
ZToKKyAqCisgKiBNeUNvbXBvbmVudC5wcm9wVHlwZXMgPSB7CisgKiAgIHRhYkluZGV4TGluazog
UmVhY3RMaW5rLlByb3BUeXBlcy5saW5rKFJlYWN0LlByb3BUeXBlcy5udW1iZXIpCisgKiB9Cisg
Ki8KK2Z1bmN0aW9uIGNyZWF0ZUxpbmtUeXBlQ2hlY2tlcihsaW5rVHlwZSkgeworICB2YXIgc2hh
cGVzID0geworICAgIHZhbHVlOiBsaW5rVHlwZSA9PT0gdW5kZWZpbmVkID8gUmVhY3QuUHJvcFR5
cGVzLmFueS5pc1JlcXVpcmVkIDogbGlua1R5cGUuaXNSZXF1aXJlZCwKKyAgICByZXF1ZXN0Q2hh
bmdlOiBSZWFjdC5Qcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkCisgIH07CisgIHJldHVybiBSZWFj
dC5Qcm9wVHlwZXMuc2hhcGUoc2hhcGVzKTsKK30KKworUmVhY3RMaW5rLlByb3BUeXBlcyA9IHsK
KyAgbGluazogY3JlYXRlTGlua1R5cGVDaGVja2VyCit9OworCittb2R1bGUuZXhwb3J0cyA9IFJl
YWN0TGluazsKK30seyI1Ijo1fV0sMjE6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMp
eworLyoqCisgKiBDb3B5cmlnaHQgMjAxNS1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBn
cmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmls
ZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFy
IHdhcm5pbmcgPSBfZGVyZXFfKDQ4KTsKKworZnVuY3Rpb24gd2Fybk5vb3AocHVibGljSW5zdGFu
Y2UsIGNhbGxlck5hbWUpIHsKKyAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykg
eworICAgIHZhciBjb25zdHJ1Y3RvciA9IHB1YmxpY0luc3RhbmNlLmNvbnN0cnVjdG9yOworICAg
ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICclcyguLi4p
OiBDYW4gb25seSB1cGRhdGUgYSBtb3VudGVkIG9yIG1vdW50aW5nIGNvbXBvbmVudC4gJyArICdU
aGlzIHVzdWFsbHkgbWVhbnMgeW91IGNhbGxlZCAlcygpIG9uIGFuIHVubW91bnRlZCBjb21wb25l
bnQuICcgKyAnVGhpcyBpcyBhIG5vLW9wLiBQbGVhc2UgY2hlY2sgdGhlIGNvZGUgZm9yIHRoZSAl
cyBjb21wb25lbnQuJywgY2FsbGVyTmFtZSwgY2FsbGVyTmFtZSwgY29uc3RydWN0b3IgJiYgKGNv
bnN0cnVjdG9yLmRpc3BsYXlOYW1lIHx8IGNvbnN0cnVjdG9yLm5hbWUpIHx8ICdSZWFjdENsYXNz
JykgOiB2b2lkIDA7CisgIH0KK30KKworLyoqCisgKiBUaGlzIGlzIHRoZSBhYnN0cmFjdCBBUEkg
Zm9yIGFuIHVwZGF0ZSBxdWV1ZS4KKyAqLwordmFyIFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlID0gewor
CisgIC8qKgorICAgKiBDaGVja3Mgd2hldGhlciBvciBub3QgdGhpcyBjb21wb3NpdGUgY29tcG9u
ZW50IGlzIG1vdW50ZWQuCisgICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2Ug
VGhlIGluc3RhbmNlIHdlIHdhbnQgdG8gdGVzdC4KKyAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1
ZSBpZiBtb3VudGVkLCBmYWxzZSBvdGhlcndpc2UuCisgICAqIEBwcm90ZWN0ZWQKKyAgICogQGZp
bmFsCisgICAqLworICBpc01vdW50ZWQ6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSkgeworICAg
IHJldHVybiBmYWxzZTsKKyAgfSwKKworICAvKioKKyAgICogRW5xdWV1ZSBhIGNhbGxiYWNrIHRo
YXQgd2lsbCBiZSBleGVjdXRlZCBhZnRlciBhbGwgdGhlIHBlbmRpbmcgdXBkYXRlcworICAgKiBo
YXZlIHByb2Nlc3NlZC4KKyAgICoKKyAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0
YW5jZSBUaGUgaW5zdGFuY2UgdG8gdXNlIGFzIGB0aGlzYCBjb250ZXh0LgorICAgKiBAcGFyYW0g
ez9mdW5jdGlvbn0gY2FsbGJhY2sgQ2FsbGVkIGFmdGVyIHN0YXRlIGlzIHVwZGF0ZWQuCisgICAq
IEBpbnRlcm5hbAorICAgKi8KKyAgZW5xdWV1ZUNhbGxiYWNrOiBmdW5jdGlvbiAocHVibGljSW5z
dGFuY2UsIGNhbGxiYWNrKSB7fSwKKworICAvKioKKyAgICogRm9yY2VzIGFuIHVwZGF0ZS4gVGhp
cyBzaG91bGQgb25seSBiZSBpbnZva2VkIHdoZW4gaXQgaXMga25vd24gd2l0aAorICAgKiBjZXJ0
YWludHkgdGhhdCB3ZSBhcmUgKipub3QqKiBpbiBhIERPTSB0cmFuc2FjdGlvbi4KKyAgICoKKyAg
ICogWW91IG1heSB3YW50IHRvIGNhbGwgdGhpcyB3aGVuIHlvdSBrbm93IHRoYXQgc29tZSBkZWVw
ZXIgYXNwZWN0IG9mIHRoZQorICAgKiBjb21wb25lbnQncyBzdGF0ZSBoYXMgY2hhbmdlZCBidXQg
YHNldFN0YXRlYCB3YXMgbm90IGNhbGxlZC4KKyAgICoKKyAgICogVGhpcyB3aWxsIG5vdCBpbnZv
a2UgYHNob3VsZENvbXBvbmVudFVwZGF0ZWAsIGJ1dCBpdCB3aWxsIGludm9rZQorICAgKiBgY29t
cG9uZW50V2lsbFVwZGF0ZWAgYW5kIGBjb21wb25lbnREaWRVcGRhdGVgLgorICAgKgorICAgKiBA
cGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0aGF0IHNob3Vs
ZCByZXJlbmRlci4KKyAgICogQGludGVybmFsCisgICAqLworICBlbnF1ZXVlRm9yY2VVcGRhdGU6
IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSkgeworICAgIHdhcm5Ob29wKHB1YmxpY0luc3RhbmNl
LCAnZm9yY2VVcGRhdGUnKTsKKyAgfSwKKworICAvKioKKyAgICogUmVwbGFjZXMgYWxsIG9mIHRo
ZSBzdGF0ZS4gQWx3YXlzIHVzZSB0aGlzIG9yIGBzZXRTdGF0ZWAgdG8gbXV0YXRlIHN0YXRlLgor
ICAgKiBZb3Ugc2hvdWxkIHRyZWF0IGB0aGlzLnN0YXRlYCBhcyBpbW11dGFibGUuCisgICAqCisg
ICAqIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IGB0aGlzLnN0YXRlYCB3aWxsIGJlIGltbWVk
aWF0ZWx5IHVwZGF0ZWQsIHNvCisgICAqIGFjY2Vzc2luZyBgdGhpcy5zdGF0ZWAgYWZ0ZXIgY2Fs
bGluZyB0aGlzIG1ldGhvZCBtYXkgcmV0dXJuIHRoZSBvbGQgdmFsdWUuCisgICAqCisgICAqIEBw
YXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHRoYXQgc2hvdWxk
IHJlcmVuZGVyLgorICAgKiBAcGFyYW0ge29iamVjdH0gY29tcGxldGVTdGF0ZSBOZXh0IHN0YXRl
LgorICAgKiBAaW50ZXJuYWwKKyAgICovCisgIGVucXVldWVSZXBsYWNlU3RhdGU6IGZ1bmN0aW9u
IChwdWJsaWNJbnN0YW5jZSwgY29tcGxldGVTdGF0ZSkgeworICAgIHdhcm5Ob29wKHB1YmxpY0lu
c3RhbmNlLCAncmVwbGFjZVN0YXRlJyk7CisgIH0sCisKKyAgLyoqCisgICAqIFNldHMgYSBzdWJz
ZXQgb2YgdGhlIHN0YXRlLiBUaGlzIG9ubHkgZXhpc3RzIGJlY2F1c2UgX3BlbmRpbmdTdGF0ZSBp
cworICAgKiBpbnRlcm5hbC4gVGhpcyBwcm92aWRlcyBhIG1lcmdpbmcgc3RyYXRlZ3kgdGhhdCBp
cyBub3QgYXZhaWxhYmxlIHRvIGRlZXAKKyAgICogcHJvcGVydGllcyB3aGljaCBpcyBjb25mdXNp
bmcuIFRPRE86IEV4cG9zZSBwZW5kaW5nU3RhdGUgb3IgZG9uJ3QgdXNlIGl0CisgICAqIGR1cmlu
ZyB0aGUgbWVyZ2UuCisgICAqCisgICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFu
Y2UgVGhlIGluc3RhbmNlIHRoYXQgc2hvdWxkIHJlcmVuZGVyLgorICAgKiBAcGFyYW0ge29iamVj
dH0gcGFydGlhbFN0YXRlIE5leHQgcGFydGlhbCBzdGF0ZSB0byBiZSBtZXJnZWQgd2l0aCBzdGF0
ZS4KKyAgICogQGludGVybmFsCisgICAqLworICBlbnF1ZXVlU2V0U3RhdGU6IGZ1bmN0aW9uIChw
dWJsaWNJbnN0YW5jZSwgcGFydGlhbFN0YXRlKSB7CisgICAgd2Fybk5vb3AocHVibGljSW5zdGFu
Y2UsICdzZXRTdGF0ZScpOworICB9Cit9OworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0Tm9vcFVw
ZGF0ZVF1ZXVlOworfSx7IjQ4Ijo0OH1dLDIyOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBv
cnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIAorICovCisKKyd1c2Ugc3RyaWN0
JzsKKwordmFyIFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzID0ge307CisKK2lmICgiZGV2ZWxv
cG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXMg
PSB7CisgICAgcHJvcDogJ3Byb3AnLAorICAgIGNvbnRleHQ6ICdjb250ZXh0JywKKyAgICBjaGls
ZENvbnRleHQ6ICdjaGlsZCBjb250ZXh0JworICB9OworfQorCittb2R1bGUuZXhwb3J0cyA9IFJl
YWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzOworfSx7fV0sMjM6W2Z1bmN0aW9uKF9kZXJlcV8sbW9k
dWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhl
IFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3Ry
aWN0JzsKKwordmFyIFJlYWN0RWxlbWVudCA9IF9kZXJlcV8oMTYpOwordmFyIFJlYWN0UHJvcFR5
cGVMb2NhdGlvbk5hbWVzID0gX2RlcmVxXygyMik7Cit2YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQg
PSBfZGVyZXFfKDI0KTsKKwordmFyIGVtcHR5RnVuY3Rpb24gPSBfZGVyZXFfKDQ0KTsKK3ZhciBn
ZXRJdGVyYXRvckZuID0gX2RlcmVxXygzNik7Cit2YXIgd2FybmluZyA9IF9kZXJlcV8oNDgpOwor
CisvKioKKyAqIENvbGxlY3Rpb24gb2YgbWV0aG9kcyB0aGF0IGFsbG93IGRlY2xhcmF0aW9uIGFu
ZCB2YWxpZGF0aW9uIG9mIHByb3BzIHRoYXQgYXJlCisgKiBzdXBwbGllZCB0byBSZWFjdCBjb21w
b25lbnRzLiBFeGFtcGxlIHVzYWdlOgorICoKKyAqICAgdmFyIFByb3BzID0gcmVxdWlyZSgnUmVh
Y3RQcm9wVHlwZXMnKTsKKyAqICAgdmFyIE15QXJ0aWNsZSA9IFJlYWN0LmNyZWF0ZUNsYXNzKHsK
KyAqICAgICBwcm9wVHlwZXM6IHsKKyAqICAgICAgIC8vIEFuIG9wdGlvbmFsIHN0cmluZyBwcm9w
IG5hbWVkICJkZXNjcmlwdGlvbiIuCisgKiAgICAgICBkZXNjcmlwdGlvbjogUHJvcHMuc3RyaW5n
LAorICoKKyAqICAgICAgIC8vIEEgcmVxdWlyZWQgZW51bSBwcm9wIG5hbWVkICJjYXRlZ29yeSIu
CisgKiAgICAgICBjYXRlZ29yeTogUHJvcHMub25lT2YoWydOZXdzJywnUGhvdG9zJ10pLmlzUmVx
dWlyZWQsCisgKgorICogICAgICAgLy8gQSBwcm9wIG5hbWVkICJkaWFsb2ciIHRoYXQgcmVxdWly
ZXMgYW4gaW5zdGFuY2Ugb2YgRGlhbG9nLgorICogICAgICAgZGlhbG9nOiBQcm9wcy5pbnN0YW5j
ZU9mKERpYWxvZykuaXNSZXF1aXJlZAorICogICAgIH0sCisgKiAgICAgcmVuZGVyOiBmdW5jdGlv
bigpIHsgLi4uIH0KKyAqICAgfSk7CisgKgorICogQSBtb3JlIGZvcm1hbCBzcGVjaWZpY2F0aW9u
IG9mIGhvdyB0aGVzZSBtZXRob2RzIGFyZSB1c2VkOgorICoKKyAqICAgdHlwZSA6PSBhcnJheXxi
b29sfGZ1bmN8b2JqZWN0fG51bWJlcnxzdHJpbmd8b25lT2YoWy4uLl0pfGluc3RhbmNlT2YoLi4u
KQorICogICBkZWNsIDo9IFJlYWN0UHJvcFR5cGVzLnt0eXBlfSguaXNSZXF1aXJlZCk/CisgKgor
ICogRWFjaCBhbmQgZXZlcnkgZGVjbGFyYXRpb24gcHJvZHVjZXMgYSBmdW5jdGlvbiB3aXRoIHRo
ZSBzYW1lIHNpZ25hdHVyZS4gVGhpcworICogYWxsb3dzIHRoZSBjcmVhdGlvbiBvZiBjdXN0b20g
dmFsaWRhdGlvbiBmdW5jdGlvbnMuIEZvciBleGFtcGxlOgorICoKKyAqICB2YXIgTXlMaW5rID0g
UmVhY3QuY3JlYXRlQ2xhc3MoeworICogICAgcHJvcFR5cGVzOiB7CisgKiAgICAgIC8vIEFuIG9w
dGlvbmFsIHN0cmluZyBvciBVUkkgcHJvcCBuYW1lZCAiaHJlZiIuCisgKiAgICAgIGhyZWY6IGZ1
bmN0aW9uKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSkgeworICogICAgICAgIHZhciBw
cm9wVmFsdWUgPSBwcm9wc1twcm9wTmFtZV07CisgKiAgICAgICAgaWYgKHByb3BWYWx1ZSAhPSBu
dWxsICYmIHR5cGVvZiBwcm9wVmFsdWUgIT09ICdzdHJpbmcnICYmCisgKiAgICAgICAgICAgICEo
cHJvcFZhbHVlIGluc3RhbmNlb2YgVVJJKSkgeworICogICAgICAgICAgcmV0dXJuIG5ldyBFcnJv
cigKKyAqICAgICAgICAgICAgJ0V4cGVjdGVkIGEgc3RyaW5nIG9yIGFuIFVSSSBmb3IgJyArIHBy
b3BOYW1lICsgJyBpbiAnICsKKyAqICAgICAgICAgICAgY29tcG9uZW50TmFtZQorICogICAgICAg
ICAgKTsKKyAqICAgICAgICB9CisgKiAgICAgIH0KKyAqICAgIH0sCisgKiAgICByZW5kZXI6IGZ1
bmN0aW9uKCkgey4uLn0KKyAqICB9KTsKKyAqCisgKiBAaW50ZXJuYWwKKyAqLworCit2YXIgQU5P
TllNT1VTID0gJzw8YW5vbnltb3VzPj4nOworCit2YXIgUmVhY3RQcm9wVHlwZXMgPSB7CisgIGFy
cmF5OiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcignYXJyYXknKSwKKyAgYm9vbDogY3JlYXRl
UHJpbWl0aXZlVHlwZUNoZWNrZXIoJ2Jvb2xlYW4nKSwKKyAgZnVuYzogY3JlYXRlUHJpbWl0aXZl
VHlwZUNoZWNrZXIoJ2Z1bmN0aW9uJyksCisgIG51bWJlcjogY3JlYXRlUHJpbWl0aXZlVHlwZUNo
ZWNrZXIoJ251bWJlcicpLAorICBvYmplY3Q6IGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKCdv
YmplY3QnKSwKKyAgc3RyaW5nOiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcignc3RyaW5nJyks
CisgIHN5bWJvbDogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ3N5bWJvbCcpLAorCisgIGFu
eTogY3JlYXRlQW55VHlwZUNoZWNrZXIoKSwKKyAgYXJyYXlPZjogY3JlYXRlQXJyYXlPZlR5cGVD
aGVja2VyLAorICBlbGVtZW50OiBjcmVhdGVFbGVtZW50VHlwZUNoZWNrZXIoKSwKKyAgaW5zdGFu
Y2VPZjogY3JlYXRlSW5zdGFuY2VUeXBlQ2hlY2tlciwKKyAgbm9kZTogY3JlYXRlTm9kZUNoZWNr
ZXIoKSwKKyAgb2JqZWN0T2Y6IGNyZWF0ZU9iamVjdE9mVHlwZUNoZWNrZXIsCisgIG9uZU9mOiBj
cmVhdGVFbnVtVHlwZUNoZWNrZXIsCisgIG9uZU9mVHlwZTogY3JlYXRlVW5pb25UeXBlQ2hlY2tl
ciwKKyAgc2hhcGU6IGNyZWF0ZVNoYXBlVHlwZUNoZWNrZXIKK307CisKKy8qKgorICogaW5saW5l
ZCBPYmplY3QuaXMgcG9seWZpbGwgdG8gYXZvaWQgcmVxdWlyaW5nIGNvbnN1bWVycyBzaGlwIHRo
ZWlyIG93bgorICogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIv
SmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvT2JqZWN0L2lzCisgKi8KKy8qZXNs
aW50LWRpc2FibGUgbm8tc2VsZi1jb21wYXJlKi8KK2Z1bmN0aW9uIGlzKHgsIHkpIHsKKyAgLy8g
U2FtZVZhbHVlIGFsZ29yaXRobQorICBpZiAoeCA9PT0geSkgeworICAgIC8vIFN0ZXBzIDEtNSwg
Ny0xMAorICAgIC8vIFN0ZXBzIDYuYi02LmU6ICswICE9IC0wCisgICAgcmV0dXJuIHggIT09IDAg
fHwgMSAvIHggPT09IDEgLyB5OworICB9IGVsc2UgeworICAgIC8vIFN0ZXAgNi5hOiBOYU4gPT0g
TmFOCisgICAgcmV0dXJuIHggIT09IHggJiYgeSAhPT0geTsKKyAgfQorfQorLyplc2xpbnQtZW5h
YmxlIG5vLXNlbGYtY29tcGFyZSovCisKKy8qKgorICogV2UgdXNlIGFuIEVycm9yLWxpa2Ugb2Jq
ZWN0IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGFzIHBlb3BsZSBtYXkgY2FsbAorICogUHJv
cFR5cGVzIGRpcmVjdGx5IGFuZCBpbnNwZWN0IHRoZWlyIG91dHB1dC4gSG93ZXZlciB3ZSBkb24n
dCB1c2UgcmVhbAorICogRXJyb3JzIGFueW1vcmUuIFdlIGRvbid0IGluc3BlY3QgdGhlaXIgc3Rh
Y2sgYW55d2F5LCBhbmQgY3JlYXRpbmcgdGhlbQorICogaXMgcHJvaGliaXRpdmVseSBleHBlbnNp
dmUgaWYgdGhleSBhcmUgY3JlYXRlZCB0b28gb2Z0ZW4sIHN1Y2ggYXMgd2hhdAorICogaGFwcGVu
cyBpbiBvbmVPZlR5cGUoKSBmb3IgYW55IHR5cGUgYmVmb3JlIHRoZSBvbmUgdGhhdCBtYXRjaGVk
LgorICovCitmdW5jdGlvbiBQcm9wVHlwZUVycm9yKG1lc3NhZ2UpIHsKKyAgdGhpcy5tZXNzYWdl
ID0gbWVzc2FnZTsKKyAgdGhpcy5zdGFjayA9ICcnOworfQorLy8gTWFrZSBgaW5zdGFuY2VvZiBF
cnJvcmAgc3RpbGwgd29yayBmb3IgcmV0dXJuZWQgZXJyb3JzLgorUHJvcFR5cGVFcnJvci5wcm90
b3R5cGUgPSBFcnJvci5wcm90b3R5cGU7CisKK2Z1bmN0aW9uIGNyZWF0ZUNoYWluYWJsZVR5cGVD
aGVja2VyKHZhbGlkYXRlKSB7CisgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicp
IHsKKyAgICB2YXIgbWFudWFsUHJvcFR5cGVDYWxsQ2FjaGUgPSB7fTsKKyAgfQorICBmdW5jdGlv
biBjaGVja1R5cGUoaXNSZXF1aXJlZCwgcHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBs
b2NhdGlvbiwgcHJvcEZ1bGxOYW1lLCBzZWNyZXQpIHsKKyAgICBjb21wb25lbnROYW1lID0gY29t
cG9uZW50TmFtZSB8fCBBTk9OWU1PVVM7CisgICAgcHJvcEZ1bGxOYW1lID0gcHJvcEZ1bGxOYW1l
IHx8IHByb3BOYW1lOworICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsK
KyAgICAgIGlmIChzZWNyZXQgIT09IFJlYWN0UHJvcFR5cGVzU2VjcmV0ICYmIHR5cGVvZiBjb25z
b2xlICE9PSAndW5kZWZpbmVkJykgeworICAgICAgICB2YXIgY2FjaGVLZXkgPSBjb21wb25lbnRO
YW1lICsgJzonICsgcHJvcE5hbWU7CisgICAgICAgIGlmICghbWFudWFsUHJvcFR5cGVDYWxsQ2Fj
aGVbY2FjaGVLZXldKSB7CisgICAgICAgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24n
ID8gd2FybmluZyhmYWxzZSwgJ1lvdSBhcmUgbWFudWFsbHkgY2FsbGluZyBhIFJlYWN0LlByb3BU
eXBlcyB2YWxpZGF0aW9uICcgKyAnZnVuY3Rpb24gZm9yIHRoZSBgJXNgIHByb3Agb24gYCVzYC4g
VGhpcyBpcyBkZXByZWNhdGVkICcgKyAnYW5kIHdpbGwgbm90IHdvcmsgaW4gcHJvZHVjdGlvbiB3
aXRoIHRoZSBuZXh0IG1ham9yIHZlcnNpb24uICcgKyAnWW91IG1heSBiZSBzZWVpbmcgdGhpcyB3
YXJuaW5nIGR1ZSB0byBhIHRoaXJkLXBhcnR5IFByb3BUeXBlcyAnICsgJ2xpYnJhcnkuIFNlZSBo
dHRwczovL2ZiLm1lL3JlYWN0LXdhcm5pbmctZG9udC1jYWxsLXByb3B0eXBlcyAnICsgJ2ZvciBk
ZXRhaWxzLicsIHByb3BGdWxsTmFtZSwgY29tcG9uZW50TmFtZSkgOiB2b2lkIDA7CisgICAgICAg
ICAgbWFudWFsUHJvcFR5cGVDYWxsQ2FjaGVbY2FjaGVLZXldID0gdHJ1ZTsKKyAgICAgICAgfQor
ICAgICAgfQorICAgIH0KKyAgICBpZiAocHJvcHNbcHJvcE5hbWVdID09IG51bGwpIHsKKyAgICAg
IHZhciBsb2NhdGlvbk5hbWUgPSBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lc1tsb2NhdGlvbl07
CisgICAgICBpZiAoaXNSZXF1aXJlZCkgeworICAgICAgICBpZiAocHJvcHNbcHJvcE5hbWVdID09
PSBudWxsKSB7CisgICAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdUaGUgJyArIGxv
Y2F0aW9uTmFtZSArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBpcyBtYXJrZWQgYXMgcmVxdWly
ZWQgJyArICgnaW4gYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGJ1dCBpdHMgdmFsdWUgaXMgYG51
bGxgLicpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ1Ro
ZSAnICsgbG9jYXRpb25OYW1lICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIGlzIG1hcmtlZCBh
cyByZXF1aXJlZCBpbiAnICsgKCdgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgYnV0IGl0cyB2YWx1
ZSBpcyBgdW5kZWZpbmVkYC4nKSk7CisgICAgICB9CisgICAgICByZXR1cm4gbnVsbDsKKyAgICB9
IGVsc2UgeworICAgICAgcmV0dXJuIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50
TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSk7CisgICAgfQorICB9CisKKyAgdmFyIGNoYWlu
ZWRDaGVja1R5cGUgPSBjaGVja1R5cGUuYmluZChudWxsLCBmYWxzZSk7CisgIGNoYWluZWRDaGVj
a1R5cGUuaXNSZXF1aXJlZCA9IGNoZWNrVHlwZS5iaW5kKG51bGwsIHRydWUpOworCisgIHJldHVy
biBjaGFpbmVkQ2hlY2tUeXBlOworfQorCitmdW5jdGlvbiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hl
Y2tlcihleHBlY3RlZFR5cGUpIHsKKyAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1l
LCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lLCBzZWNyZXQpIHsKKyAgICB2
YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdOworICAgIHZhciBwcm9wVHlwZSA9IGdldFBy
b3BUeXBlKHByb3BWYWx1ZSk7CisgICAgaWYgKHByb3BUeXBlICE9PSBleHBlY3RlZFR5cGUpIHsK
KyAgICAgIHZhciBsb2NhdGlvbk5hbWUgPSBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lc1tsb2Nh
dGlvbl07CisgICAgICAvLyBgcHJvcFZhbHVlYCBiZWluZyBpbnN0YW5jZSBvZiwgc2F5LCBkYXRl
L3JlZ2V4cCwgcGFzcyB0aGUgJ29iamVjdCcKKyAgICAgIC8vIGNoZWNrLCBidXQgd2UgY2FuIG9m
ZmVyIGEgbW9yZSBwcmVjaXNlIGVycm9yIG1lc3NhZ2UgaGVyZSByYXRoZXIgdGhhbgorICAgICAg
Ly8gJ29mIHR5cGUgYG9iamVjdGAnLgorICAgICAgdmFyIHByZWNpc2VUeXBlID0gZ2V0UHJlY2lz
ZVR5cGUocHJvcFZhbHVlKTsKKworICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZh
bGlkICcgKyBsb2NhdGlvbk5hbWUgKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdHlwZSAn
ICsgKCdgJyArIHByZWNpc2VUeXBlICsgJ2Agc3VwcGxpZWQgdG8gYCcgKyBjb21wb25lbnROYW1l
ICsgJ2AsIGV4cGVjdGVkICcpICsgKCdgJyArIGV4cGVjdGVkVHlwZSArICdgLicpKTsKKyAgICB9
CisgICAgcmV0dXJuIG51bGw7CisgIH0KKyAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVj
a2VyKHZhbGlkYXRlKTsKK30KKworZnVuY3Rpb24gY3JlYXRlQW55VHlwZUNoZWNrZXIoKSB7Cisg
IHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcihlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1
cm5zKG51bGwpKTsKK30KKworZnVuY3Rpb24gY3JlYXRlQXJyYXlPZlR5cGVDaGVja2VyKHR5cGVD
aGVja2VyKSB7CisgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50
TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkgeworICAgIGlmICh0eXBlb2YgdHlwZUNoZWNr
ZXIgIT09ICdmdW5jdGlvbicpIHsKKyAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignUHJv
cGVydHkgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiBjb21wb25lbnQgYCcgKyBjb21wb25lbnRO
YW1lICsgJ2AgaGFzIGludmFsaWQgUHJvcFR5cGUgbm90YXRpb24gaW5zaWRlIGFycmF5T2YuJyk7
CisgICAgfQorICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1twcm9wTmFtZV07CisgICAgaWYgKCFB
cnJheS5pc0FycmF5KHByb3BWYWx1ZSkpIHsKKyAgICAgIHZhciBsb2NhdGlvbk5hbWUgPSBSZWFj
dFByb3BUeXBlTG9jYXRpb25OYW1lc1tsb2NhdGlvbl07CisgICAgICB2YXIgcHJvcFR5cGUgPSBn
ZXRQcm9wVHlwZShwcm9wVmFsdWUpOworICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJ
bnZhbGlkICcgKyBsb2NhdGlvbk5hbWUgKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdHlw
ZSAnICsgKCdgJyArIHByb3BUeXBlICsgJ2Agc3VwcGxpZWQgdG8gYCcgKyBjb21wb25lbnROYW1l
ICsgJ2AsIGV4cGVjdGVkIGFuIGFycmF5LicpKTsKKyAgICB9CisgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBwcm9wVmFsdWUubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciBlcnJvciA9IHR5cGVDaGVj
a2VyKHByb3BWYWx1ZSwgaSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSAr
ICdbJyArIGkgKyAnXScsIFJlYWN0UHJvcFR5cGVzU2VjcmV0KTsKKyAgICAgIGlmIChlcnJvciBp
bnN0YW5jZW9mIEVycm9yKSB7CisgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgIH0KKyAgICB9
CisgICAgcmV0dXJuIG51bGw7CisgIH0KKyAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVj
a2VyKHZhbGlkYXRlKTsKK30KKworZnVuY3Rpb24gY3JlYXRlRWxlbWVudFR5cGVDaGVja2VyKCkg
eworICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxv
Y2F0aW9uLCBwcm9wRnVsbE5hbWUpIHsKKyAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5h
bWVdOworICAgIGlmICghUmVhY3RFbGVtZW50LmlzVmFsaWRFbGVtZW50KHByb3BWYWx1ZSkpIHsK
KyAgICAgIHZhciBsb2NhdGlvbk5hbWUgPSBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lc1tsb2Nh
dGlvbl07CisgICAgICB2YXIgcHJvcFR5cGUgPSBnZXRQcm9wVHlwZShwcm9wVmFsdWUpOworICAg
ICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbk5hbWUgKyAn
IGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdHlwZSAnICsgKCdgJyArIHByb3BUeXBlICsgJ2Ag
c3VwcGxpZWQgdG8gYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkIGEgc2luZ2xlIFJl
YWN0RWxlbWVudC4nKSk7CisgICAgfQorICAgIHJldHVybiBudWxsOworICB9CisgIHJldHVybiBj
cmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7Cit9CisKK2Z1bmN0aW9uIGNyZWF0
ZUluc3RhbmNlVHlwZUNoZWNrZXIoZXhwZWN0ZWRDbGFzcykgeworICBmdW5jdGlvbiB2YWxpZGF0
ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUp
IHsKKyAgICBpZiAoIShwcm9wc1twcm9wTmFtZV0gaW5zdGFuY2VvZiBleHBlY3RlZENsYXNzKSkg
eworICAgICAgdmFyIGxvY2F0aW9uTmFtZSA9IFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzW2xv
Y2F0aW9uXTsKKyAgICAgIHZhciBleHBlY3RlZENsYXNzTmFtZSA9IGV4cGVjdGVkQ2xhc3MubmFt
ZSB8fCBBTk9OWU1PVVM7CisgICAgICB2YXIgYWN0dWFsQ2xhc3NOYW1lID0gZ2V0Q2xhc3NOYW1l
KHByb3BzW3Byb3BOYW1lXSk7CisgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFs
aWQgJyArIGxvY2F0aW9uTmFtZSArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiB0eXBlICcg
KyAoJ2AnICsgYWN0dWFsQ2xhc3NOYW1lICsgJ2Agc3VwcGxpZWQgdG8gYCcgKyBjb21wb25lbnRO
YW1lICsgJ2AsIGV4cGVjdGVkICcpICsgKCdpbnN0YW5jZSBvZiBgJyArIGV4cGVjdGVkQ2xhc3NO
YW1lICsgJ2AuJykpOworICAgIH0KKyAgICByZXR1cm4gbnVsbDsKKyAgfQorICByZXR1cm4gY3Jl
YXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpOworfQorCitmdW5jdGlvbiBjcmVhdGVF
bnVtVHlwZUNoZWNrZXIoZXhwZWN0ZWRWYWx1ZXMpIHsKKyAgaWYgKCFBcnJheS5pc0FycmF5KGV4
cGVjdGVkVmFsdWVzKSkgeworICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdh
cm5pbmcoZmFsc2UsICdJbnZhbGlkIGFyZ3VtZW50IHN1cHBsaWVkIHRvIG9uZU9mLCBleHBlY3Rl
ZCBhbiBpbnN0YW5jZSBvZiBhcnJheS4nKSA6IHZvaWQgMDsKKyAgICByZXR1cm4gZW1wdHlGdW5j
dGlvbi50aGF0UmV0dXJuc051bGw7CisgIH0KKworICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywg
cHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHsKKyAgICB2
YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
ZXhwZWN0ZWRWYWx1ZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgIGlmIChpcyhwcm9wVmFsdWUsIGV4
cGVjdGVkVmFsdWVzW2ldKSkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgbG9jYXRpb25OYW1lID0gUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXNbbG9j
YXRpb25dOworICAgIHZhciB2YWx1ZXNTdHJpbmcgPSBKU09OLnN0cmluZ2lmeShleHBlY3RlZFZh
bHVlcyk7CisgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlv
bk5hbWUgKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdmFsdWUgYCcgKyBwcm9wVmFsdWUg
KyAnYCAnICsgKCdzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQg
b25lIG9mICcgKyB2YWx1ZXNTdHJpbmcgKyAnLicpKTsKKyAgfQorICByZXR1cm4gY3JlYXRlQ2hh
aW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpOworfQorCitmdW5jdGlvbiBjcmVhdGVPYmplY3RP
ZlR5cGVDaGVja2VyKHR5cGVDaGVja2VyKSB7CisgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBw
cm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkgeworICAgIGlm
ICh0eXBlb2YgdHlwZUNoZWNrZXIgIT09ICdmdW5jdGlvbicpIHsKKyAgICAgIHJldHVybiBuZXcg
UHJvcFR5cGVFcnJvcignUHJvcGVydHkgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiBjb21wb25l
bnQgYCcgKyBjb21wb25lbnROYW1lICsgJ2AgaGFzIGludmFsaWQgUHJvcFR5cGUgbm90YXRpb24g
aW5zaWRlIG9iamVjdE9mLicpOworICAgIH0KKyAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJv
cE5hbWVdOworICAgIHZhciBwcm9wVHlwZSA9IGdldFByb3BUeXBlKHByb3BWYWx1ZSk7CisgICAg
aWYgKHByb3BUeXBlICE9PSAnb2JqZWN0JykgeworICAgICAgdmFyIGxvY2F0aW9uTmFtZSA9IFJl
YWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzW2xvY2F0aW9uXTsKKyAgICAgIHJldHVybiBuZXcgUHJv
cFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb25OYW1lICsgJyBgJyArIHByb3BGdWxsTmFt
ZSArICdgIG9mIHR5cGUgJyArICgnYCcgKyBwcm9wVHlwZSArICdgIHN1cHBsaWVkIHRvIGAnICsg
Y29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBhbiBvYmplY3QuJykpOworICAgIH0KKyAgICBm
b3IgKHZhciBrZXkgaW4gcHJvcFZhbHVlKSB7CisgICAgICBpZiAocHJvcFZhbHVlLmhhc093blBy
b3BlcnR5KGtleSkpIHsKKyAgICAgICAgdmFyIGVycm9yID0gdHlwZUNoZWNrZXIocHJvcFZhbHVl
LCBrZXksIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUgKyAnLicgKyBrZXks
IFJlYWN0UHJvcFR5cGVzU2VjcmV0KTsKKyAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJy
b3IpIHsKKyAgICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9
CisgICAgcmV0dXJuIG51bGw7CisgIH0KKyAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVj
a2VyKHZhbGlkYXRlKTsKK30KKworZnVuY3Rpb24gY3JlYXRlVW5pb25UeXBlQ2hlY2tlcihhcnJh
eU9mVHlwZUNoZWNrZXJzKSB7CisgIGlmICghQXJyYXkuaXNBcnJheShhcnJheU9mVHlwZUNoZWNr
ZXJzKSkgeworICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFs
c2UsICdJbnZhbGlkIGFyZ3VtZW50IHN1cHBsaWVkIHRvIG9uZU9mVHlwZSwgZXhwZWN0ZWQgYW4g
aW5zdGFuY2Ugb2YgYXJyYXkuJykgOiB2b2lkIDA7CisgICAgcmV0dXJuIGVtcHR5RnVuY3Rpb24u
dGhhdFJldHVybnNOdWxsOworICB9CisKKyAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BO
YW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7CisgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBhcnJheU9mVHlwZUNoZWNrZXJzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgY2hlY2tlciA9IGFycmF5T2ZUeXBlQ2hlY2tlcnNbaV07CisgICAgICBpZiAoY2hlY2tlcihw
cm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIFJl
YWN0UHJvcFR5cGVzU2VjcmV0KSA9PSBudWxsKSB7CisgICAgICAgIHJldHVybiBudWxsOworICAg
ICAgfQorICAgIH0KKworICAgIHZhciBsb2NhdGlvbk5hbWUgPSBSZWFjdFByb3BUeXBlTG9jYXRp
b25OYW1lc1tsb2NhdGlvbl07CisgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlk
ICcgKyBsb2NhdGlvbk5hbWUgKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agc3VwcGxpZWQgdG8g
JyArICgnYCcgKyBjb21wb25lbnROYW1lICsgJ2AuJykpOworICB9CisgIHJldHVybiBjcmVhdGVD
aGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZU5vZGVD
aGVja2VyKCkgeworICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVu
dE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHsKKyAgICBpZiAoIWlzTm9kZShwcm9wc1tw
cm9wTmFtZV0pKSB7CisgICAgICB2YXIgbG9jYXRpb25OYW1lID0gUmVhY3RQcm9wVHlwZUxvY2F0
aW9uTmFtZXNbbG9jYXRpb25dOworICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZh
bGlkICcgKyBsb2NhdGlvbk5hbWUgKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agc3VwcGxpZWQg
dG8gJyArICgnYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkIGEgUmVhY3ROb2RlLicp
KTsKKyAgICB9CisgICAgcmV0dXJuIG51bGw7CisgIH0KKyAgcmV0dXJuIGNyZWF0ZUNoYWluYWJs
ZVR5cGVDaGVja2VyKHZhbGlkYXRlKTsKK30KKworZnVuY3Rpb24gY3JlYXRlU2hhcGVUeXBlQ2hl
Y2tlcihzaGFwZVR5cGVzKSB7CisgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwg
Y29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkgeworICAgIHZhciBwcm9wVmFs
dWUgPSBwcm9wc1twcm9wTmFtZV07CisgICAgdmFyIHByb3BUeXBlID0gZ2V0UHJvcFR5cGUocHJv
cFZhbHVlKTsKKyAgICBpZiAocHJvcFR5cGUgIT09ICdvYmplY3QnKSB7CisgICAgICB2YXIgbG9j
YXRpb25OYW1lID0gUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXNbbG9jYXRpb25dOworICAgICAg
cmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbk5hbWUgKyAnIGAn
ICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdHlwZSBgJyArIHByb3BUeXBlICsgJ2AgJyArICgnc3Vw
cGxpZWQgdG8gYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkIGBvYmplY3RgLicpKTsK
KyAgICB9CisgICAgZm9yICh2YXIga2V5IGluIHNoYXBlVHlwZXMpIHsKKyAgICAgIHZhciBjaGVj
a2VyID0gc2hhcGVUeXBlc1trZXldOworICAgICAgaWYgKCFjaGVja2VyKSB7CisgICAgICAgIGNv
bnRpbnVlOworICAgICAgfQorICAgICAgdmFyIGVycm9yID0gY2hlY2tlcihwcm9wVmFsdWUsIGtl
eSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSArICcuJyArIGtleSwgUmVh
Y3RQcm9wVHlwZXNTZWNyZXQpOworICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgIHJldHVybiBl
cnJvcjsKKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIG51bGw7CisgIH0KKyAgcmV0dXJuIGNy
ZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTsKK30KKworZnVuY3Rpb24gaXNOb2Rl
KHByb3BWYWx1ZSkgeworICBzd2l0Y2ggKHR5cGVvZiBwcm9wVmFsdWUpIHsKKyAgICBjYXNlICdu
dW1iZXInOgorICAgIGNhc2UgJ3N0cmluZyc6CisgICAgY2FzZSAndW5kZWZpbmVkJzoKKyAgICAg
IHJldHVybiB0cnVlOworICAgIGNhc2UgJ2Jvb2xlYW4nOgorICAgICAgcmV0dXJuICFwcm9wVmFs
dWU7CisgICAgY2FzZSAnb2JqZWN0JzoKKyAgICAgIGlmIChBcnJheS5pc0FycmF5KHByb3BWYWx1
ZSkpIHsKKyAgICAgICAgcmV0dXJuIHByb3BWYWx1ZS5ldmVyeShpc05vZGUpOworICAgICAgfQor
ICAgICAgaWYgKHByb3BWYWx1ZSA9PT0gbnVsbCB8fCBSZWFjdEVsZW1lbnQuaXNWYWxpZEVsZW1l
bnQocHJvcFZhbHVlKSkgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIH0KKworICAgICAg
dmFyIGl0ZXJhdG9yRm4gPSBnZXRJdGVyYXRvckZuKHByb3BWYWx1ZSk7CisgICAgICBpZiAoaXRl
cmF0b3JGbikgeworICAgICAgICB2YXIgaXRlcmF0b3IgPSBpdGVyYXRvckZuLmNhbGwocHJvcFZh
bHVlKTsKKyAgICAgICAgdmFyIHN0ZXA7CisgICAgICAgIGlmIChpdGVyYXRvckZuICE9PSBwcm9w
VmFsdWUuZW50cmllcykgeworICAgICAgICAgIHdoaWxlICghKHN0ZXAgPSBpdGVyYXRvci5uZXh0
KCkpLmRvbmUpIHsKKyAgICAgICAgICAgIGlmICghaXNOb2RlKHN0ZXAudmFsdWUpKSB7CisgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgLy8gSXRlcmF0b3Igd2lsbCBwcm92aWRlIGVudHJ5IFtr
LHZdIHR1cGxlcyByYXRoZXIgdGhhbiB2YWx1ZXMuCisgICAgICAgICAgd2hpbGUgKCEoc3RlcCA9
IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkgeworICAgICAgICAgICAgdmFyIGVudHJ5ID0gc3RlcC52
YWx1ZTsKKyAgICAgICAgICAgIGlmIChlbnRyeSkgeworICAgICAgICAgICAgICBpZiAoIWlzTm9k
ZShlbnRyeVsxXSkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgIH0KKworICAgICAgcmV0dXJuIHRydWU7
CisgICAgZGVmYXVsdDoKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgfQorfQorCitmdW5jdGlvbiBp
c1N5bWJvbChwcm9wVHlwZSwgcHJvcFZhbHVlKSB7CisgIC8vIE5hdGl2ZSBTeW1ib2wuCisgIGlm
IChwcm9wVHlwZSA9PT0gJ3N5bWJvbCcpIHsKKyAgICByZXR1cm4gdHJ1ZTsKKyAgfQorCisgIC8v
IDE5LjQuMy41IFN5bWJvbC5wcm90b3R5cGVbQEB0b1N0cmluZ1RhZ10gPT09ICdTeW1ib2wnCisg
IGlmIChwcm9wVmFsdWVbJ0BAdG9TdHJpbmdUYWcnXSA9PT0gJ1N5bWJvbCcpIHsKKyAgICByZXR1
cm4gdHJ1ZTsKKyAgfQorCisgIC8vIEZhbGxiYWNrIGZvciBub24tc3BlYyBjb21wbGlhbnQgU3lt
Ym9scyB3aGljaCBhcmUgcG9seWZpbGxlZC4KKyAgaWYgKHR5cGVvZiBTeW1ib2wgPT09ICdmdW5j
dGlvbicgJiYgcHJvcFZhbHVlIGluc3RhbmNlb2YgU3ltYm9sKSB7CisgICAgcmV0dXJuIHRydWU7
CisgIH0KKworICByZXR1cm4gZmFsc2U7Cit9CisKKy8vIEVxdWl2YWxlbnQgb2YgYHR5cGVvZmAg
YnV0IHdpdGggc3BlY2lhbCBoYW5kbGluZyBmb3IgYXJyYXkgYW5kIHJlZ2V4cC4KK2Z1bmN0aW9u
IGdldFByb3BUeXBlKHByb3BWYWx1ZSkgeworICB2YXIgcHJvcFR5cGUgPSB0eXBlb2YgcHJvcFZh
bHVlOworICBpZiAoQXJyYXkuaXNBcnJheShwcm9wVmFsdWUpKSB7CisgICAgcmV0dXJuICdhcnJh
eSc7CisgIH0KKyAgaWYgKHByb3BWYWx1ZSBpbnN0YW5jZW9mIFJlZ0V4cCkgeworICAgIC8vIE9s
ZCB3ZWJraXRzIChhdCBsZWFzdCB1bnRpbCBBbmRyb2lkIDQuMCkgcmV0dXJuICdmdW5jdGlvbicg
cmF0aGVyIHRoYW4KKyAgICAvLyAnb2JqZWN0JyBmb3IgdHlwZW9mIGEgUmVnRXhwLiBXZSdsbCBu
b3JtYWxpemUgdGhpcyBoZXJlIHNvIHRoYXQgL2JsYS8KKyAgICAvLyBwYXNzZXMgUHJvcFR5cGVz
Lm9iamVjdC4KKyAgICByZXR1cm4gJ29iamVjdCc7CisgIH0KKyAgaWYgKGlzU3ltYm9sKHByb3BU
eXBlLCBwcm9wVmFsdWUpKSB7CisgICAgcmV0dXJuICdzeW1ib2wnOworICB9CisgIHJldHVybiBw
cm9wVHlwZTsKK30KKworLy8gVGhpcyBoYW5kbGVzIG1vcmUgdHlwZXMgdGhhbiBgZ2V0UHJvcFR5
cGVgLiBPbmx5IHVzZWQgZm9yIGVycm9yIG1lc3NhZ2VzLgorLy8gU2VlIGBjcmVhdGVQcmltaXRp
dmVUeXBlQ2hlY2tlcmAuCitmdW5jdGlvbiBnZXRQcmVjaXNlVHlwZShwcm9wVmFsdWUpIHsKKyAg
dmFyIHByb3BUeXBlID0gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKTsKKyAgaWYgKHByb3BUeXBlID09
PSAnb2JqZWN0JykgeworICAgIGlmIChwcm9wVmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7CisgICAg
ICByZXR1cm4gJ2RhdGUnOworICAgIH0gZWxzZSBpZiAocHJvcFZhbHVlIGluc3RhbmNlb2YgUmVn
RXhwKSB7CisgICAgICByZXR1cm4gJ3JlZ2V4cCc7CisgICAgfQorICB9CisgIHJldHVybiBwcm9w
VHlwZTsKK30KKworLy8gUmV0dXJucyBjbGFzcyBuYW1lIG9mIHRoZSBvYmplY3QsIGlmIGFueS4K
K2Z1bmN0aW9uIGdldENsYXNzTmFtZShwcm9wVmFsdWUpIHsKKyAgaWYgKCFwcm9wVmFsdWUuY29u
c3RydWN0b3IgfHwgIXByb3BWYWx1ZS5jb25zdHJ1Y3Rvci5uYW1lKSB7CisgICAgcmV0dXJuIEFO
T05ZTU9VUzsKKyAgfQorICByZXR1cm4gcHJvcFZhbHVlLmNvbnN0cnVjdG9yLm5hbWU7Cit9CisK
K21vZHVsZS5leHBvcnRzID0gUmVhY3RQcm9wVHlwZXM7Cit9LHsiMTYiOjE2LCIyMiI6MjIsIjI0
IjoyNCwiMzYiOjM2LCI0NCI6NDQsIjQ4Ijo0OH1dLDI0OltmdW5jdGlvbihfZGVyZXFfLG1vZHVs
ZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIElu
Yy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBs
aWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQ
QVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIAorICovCisKKyd1c2Ug
c3RyaWN0JzsKKwordmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gJ1NFQ1JFVF9ET19OT1RfUEFT
U19USElTX09SX1lPVV9XSUxMX0JFX0ZJUkVEJzsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdFBy
b3BUeXBlc1NlY3JldDsKK30se31dLDI1OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRz
KXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1
bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3Zh
ciBfYXNzaWduID0gX2RlcmVxXyg0OSk7CisKK3ZhciBSZWFjdENvbXBvbmVudCA9IF9kZXJlcV8o
MTEpOwordmFyIFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlID0gX2RlcmVxXygyMSk7CisKK3ZhciBlbXB0
eU9iamVjdCA9IF9kZXJlcV8oNDUpOworCisvKioKKyAqIEJhc2UgY2xhc3MgaGVscGVycyBmb3Ig
dGhlIHVwZGF0aW5nIHN0YXRlIG9mIGEgY29tcG9uZW50LgorICovCitmdW5jdGlvbiBSZWFjdFB1
cmVDb21wb25lbnQocHJvcHMsIGNvbnRleHQsIHVwZGF0ZXIpIHsKKyAgLy8gRHVwbGljYXRlZCBm
cm9tIFJlYWN0Q29tcG9uZW50LgorICB0aGlzLnByb3BzID0gcHJvcHM7CisgIHRoaXMuY29udGV4
dCA9IGNvbnRleHQ7CisgIHRoaXMucmVmcyA9IGVtcHR5T2JqZWN0OworICAvLyBXZSBpbml0aWFs
aXplIHRoZSBkZWZhdWx0IHVwZGF0ZXIgYnV0IHRoZSByZWFsIG9uZSBnZXRzIGluamVjdGVkIGJ5
IHRoZQorICAvLyByZW5kZXJlci4KKyAgdGhpcy51cGRhdGVyID0gdXBkYXRlciB8fCBSZWFjdE5v
b3BVcGRhdGVRdWV1ZTsKK30KKworZnVuY3Rpb24gQ29tcG9uZW50RHVtbXkoKSB7fQorQ29tcG9u
ZW50RHVtbXkucHJvdG90eXBlID0gUmVhY3RDb21wb25lbnQucHJvdG90eXBlOworUmVhY3RQdXJl
Q29tcG9uZW50LnByb3RvdHlwZSA9IG5ldyBDb21wb25lbnREdW1teSgpOworUmVhY3RQdXJlQ29t
cG9uZW50LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFJlYWN0UHVyZUNvbXBvbmVudDsKKy8vIEF2
b2lkIGFuIGV4dHJhIHByb3RvdHlwZSBqdW1wIGZvciB0aGVzZSBtZXRob2RzLgorX2Fzc2lnbihS
ZWFjdFB1cmVDb21wb25lbnQucHJvdG90eXBlLCBSZWFjdENvbXBvbmVudC5wcm90b3R5cGUpOwor
UmVhY3RQdXJlQ29tcG9uZW50LnByb3RvdHlwZS5pc1B1cmVSZWFjdENvbXBvbmVudCA9IHRydWU7
CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RQdXJlQ29tcG9uZW50OworfSx7IjExIjoxMSwiMjEi
OjIxLCI0NSI6NDUsIjQ5Ijo0OX1dLDI2OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRz
KXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1
bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3Zh
ciBSZWFjdFN0YXRlU2V0dGVycyA9IHsKKyAgLyoqCisgICAqIFJldHVybnMgYSBmdW5jdGlvbiB0
aGF0IGNhbGxzIHRoZSBwcm92aWRlZCBmdW5jdGlvbiwgYW5kIHVzZXMgdGhlIHJlc3VsdAorICAg
KiBvZiB0aGF0IHRvIHNldCB0aGUgY29tcG9uZW50J3Mgc3RhdGUuCisgICAqCisgICAqIEBwYXJh
bSB7UmVhY3RDb21wb3NpdGVDb21wb25lbnR9IGNvbXBvbmVudAorICAgKiBAcGFyYW0ge2Z1bmN0
aW9ufSBmdW5jUmV0dXJuaW5nU3RhdGUgUmV0dXJuZWQgY2FsbGJhY2sgdXNlcyB0aGlzIHRvCisg
ICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRlcm1pbmUgaG93IHRv
IHVwZGF0ZSBzdGF0ZS4KKyAgICogQHJldHVybiB7ZnVuY3Rpb259IGNhbGxiYWNrIHRoYXQgd2hl
biBpbnZva2VkIHVzZXMgZnVuY1JldHVybmluZ1N0YXRlIHRvCisgICAqICAgICAgICAgICAgICAg
ICAgICBkZXRlcm1pbmVkIHRoZSBvYmplY3QgbGl0ZXJhbCB0byBzZXRTdGF0ZS4KKyAgICovCisg
IGNyZWF0ZVN0YXRlU2V0dGVyOiBmdW5jdGlvbiAoY29tcG9uZW50LCBmdW5jUmV0dXJuaW5nU3Rh
dGUpIHsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGEsIGIsIGMsIGQsIGUsIGYpIHsKKyAgICAgIHZh
ciBwYXJ0aWFsU3RhdGUgPSBmdW5jUmV0dXJuaW5nU3RhdGUuY2FsbChjb21wb25lbnQsIGEsIGIs
IGMsIGQsIGUsIGYpOworICAgICAgaWYgKHBhcnRpYWxTdGF0ZSkgeworICAgICAgICBjb21wb25l
bnQuc2V0U3RhdGUocGFydGlhbFN0YXRlKTsKKyAgICAgIH0KKyAgICB9OworICB9LAorCisgIC8q
KgorICAgKiBSZXR1cm5zIGEgc2luZ2xlLWFyZ3VtZW50IGNhbGxiYWNrIHRoYXQgY2FuIGJlIHVz
ZWQgdG8gdXBkYXRlIGEgc2luZ2xlCisgICAqIGtleSBpbiB0aGUgY29tcG9uZW50J3Mgc3RhdGUu
CisgICAqCisgICAqIE5vdGU6IHRoaXMgaXMgbWVtb2l6ZWQgZnVuY3Rpb24sIHdoaWNoIG1ha2Vz
IGl0IGluZXhwZW5zaXZlIHRvIGNhbGwuCisgICAqCisgICAqIEBwYXJhbSB7UmVhY3RDb21wb3Np
dGVDb21wb25lbnR9IGNvbXBvbmVudAorICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkg
aW4gdGhlIHN0YXRlIHRoYXQgeW91IHNob3VsZCB1cGRhdGUuCisgICAqIEByZXR1cm4ge2Z1bmN0
aW9ufSBjYWxsYmFjayBvZiAxIGFyZ3VtZW50IHdoaWNoIGNhbGxzIHNldFN0YXRlKCkgd2l0aAor
ICAgKiAgICAgICAgICAgICAgICAgICAgdGhlIHByb3ZpZGVkIGtleU5hbWUgYW5kIGNhbGxiYWNr
IGFyZ3VtZW50LgorICAgKi8KKyAgY3JlYXRlU3RhdGVLZXlTZXR0ZXI6IGZ1bmN0aW9uIChjb21w
b25lbnQsIGtleSkgeworICAgIC8vIE1lbW9pemUgdGhlIHNldHRlcnMuCisgICAgdmFyIGNhY2hl
ID0gY29tcG9uZW50Ll9fa2V5U2V0dGVycyB8fCAoY29tcG9uZW50Ll9fa2V5U2V0dGVycyA9IHt9
KTsKKyAgICByZXR1cm4gY2FjaGVba2V5XSB8fCAoY2FjaGVba2V5XSA9IGNyZWF0ZVN0YXRlS2V5
U2V0dGVyKGNvbXBvbmVudCwga2V5KSk7CisgIH0KK307CisKK2Z1bmN0aW9uIGNyZWF0ZVN0YXRl
S2V5U2V0dGVyKGNvbXBvbmVudCwga2V5KSB7CisgIC8vIFBhcnRpYWwgc3RhdGUgaXMgYWxsb2Nh
dGVkIG91dHNpZGUgb2YgdGhlIGZ1bmN0aW9uIGNsb3N1cmUgc28gaXQgY2FuIGJlCisgIC8vIHJl
dXNlZCB3aXRoIGV2ZXJ5IGNhbGwsIGF2b2lkaW5nIG1lbW9yeSBhbGxvY2F0aW9uIHdoZW4gdGhp
cyBmdW5jdGlvbgorICAvLyBpcyBjYWxsZWQuCisgIHZhciBwYXJ0aWFsU3RhdGUgPSB7fTsKKyAg
cmV0dXJuIGZ1bmN0aW9uIHN0YXRlS2V5U2V0dGVyKHZhbHVlKSB7CisgICAgcGFydGlhbFN0YXRl
W2tleV0gPSB2YWx1ZTsKKyAgICBjb21wb25lbnQuc2V0U3RhdGUocGFydGlhbFN0YXRlKTsKKyAg
fTsKK30KKworUmVhY3RTdGF0ZVNldHRlcnMuTWl4aW4gPSB7CisgIC8qKgorICAgKiBSZXR1cm5z
IGEgZnVuY3Rpb24gdGhhdCBjYWxscyB0aGUgcHJvdmlkZWQgZnVuY3Rpb24sIGFuZCB1c2VzIHRo
ZSByZXN1bHQKKyAgICogb2YgdGhhdCB0byBzZXQgdGhlIGNvbXBvbmVudCdzIHN0YXRlLgorICAg
KgorICAgKiBGb3IgZXhhbXBsZSwgdGhlc2Ugc3RhdGVtZW50cyBhcmUgZXF1aXZhbGVudDoKKyAg
ICoKKyAgICogICB0aGlzLnNldFN0YXRlKHt4OiAxfSk7CisgICAqICAgdGhpcy5jcmVhdGVTdGF0
ZVNldHRlcihmdW5jdGlvbih4VmFsdWUpIHsKKyAgICogICAgIHJldHVybiB7eDogeFZhbHVlfTsK
KyAgICogICB9KSgxKTsKKyAgICoKKyAgICogQHBhcmFtIHtmdW5jdGlvbn0gZnVuY1JldHVybmlu
Z1N0YXRlIFJldHVybmVkIGNhbGxiYWNrIHVzZXMgdGhpcyB0bworICAgKiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGV0ZXJtaW5lIGhvdyB0byB1cGRhdGUgc3RhdGUuCisg
ICAqIEByZXR1cm4ge2Z1bmN0aW9ufSBjYWxsYmFjayB0aGF0IHdoZW4gaW52b2tlZCB1c2VzIGZ1
bmNSZXR1cm5pbmdTdGF0ZSB0bworICAgKiAgICAgICAgICAgICAgICAgICAgZGV0ZXJtaW5lZCB0
aGUgb2JqZWN0IGxpdGVyYWwgdG8gc2V0U3RhdGUuCisgICAqLworICBjcmVhdGVTdGF0ZVNldHRl
cjogZnVuY3Rpb24gKGZ1bmNSZXR1cm5pbmdTdGF0ZSkgeworICAgIHJldHVybiBSZWFjdFN0YXRl
U2V0dGVycy5jcmVhdGVTdGF0ZVNldHRlcih0aGlzLCBmdW5jUmV0dXJuaW5nU3RhdGUpOworICB9
LAorCisgIC8qKgorICAgKiBSZXR1cm5zIGEgc2luZ2xlLWFyZ3VtZW50IGNhbGxiYWNrIHRoYXQg
Y2FuIGJlIHVzZWQgdG8gdXBkYXRlIGEgc2luZ2xlCisgICAqIGtleSBpbiB0aGUgY29tcG9uZW50
J3Mgc3RhdGUuCisgICAqCisgICAqIEZvciBleGFtcGxlLCB0aGVzZSBzdGF0ZW1lbnRzIGFyZSBl
cXVpdmFsZW50OgorICAgKgorICAgKiAgIHRoaXMuc2V0U3RhdGUoe3g6IDF9KTsKKyAgICogICB0
aGlzLmNyZWF0ZVN0YXRlS2V5U2V0dGVyKCd4JykoMSk7CisgICAqCisgICAqIE5vdGU6IHRoaXMg
aXMgbWVtb2l6ZWQgZnVuY3Rpb24sIHdoaWNoIG1ha2VzIGl0IGluZXhwZW5zaXZlIHRvIGNhbGwu
CisgICAqCisgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBpbiB0aGUgc3RhdGUgdGhh
dCB5b3Ugc2hvdWxkIHVwZGF0ZS4KKyAgICogQHJldHVybiB7ZnVuY3Rpb259IGNhbGxiYWNrIG9m
IDEgYXJndW1lbnQgd2hpY2ggY2FsbHMgc2V0U3RhdGUoKSB3aXRoCisgICAqICAgICAgICAgICAg
ICAgICAgICB0aGUgcHJvdmlkZWQga2V5TmFtZSBhbmQgY2FsbGJhY2sgYXJndW1lbnQuCisgICAq
LworICBjcmVhdGVTdGF0ZUtleVNldHRlcjogZnVuY3Rpb24gKGtleSkgeworICAgIHJldHVybiBS
ZWFjdFN0YXRlU2V0dGVycy5jcmVhdGVTdGF0ZUtleVNldHRlcih0aGlzLCBrZXkpOworICB9Cit9
OworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0U3RhdGVTZXR0ZXJzOworfSx7fV0sMjc6W2Z1bmN0
aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBz
b3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgor
ICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIGZsYXR0ZW5DaGlsZHJlbiA9IF9kZXJlcV8oMzUp
OworCit2YXIgUmVhY3RUcmFuc2l0aW9uQ2hpbGRNYXBwaW5nID0geworICAvKioKKyAgICogR2l2
ZW4gYHRoaXMucHJvcHMuY2hpbGRyZW5gLCByZXR1cm4gYW4gb2JqZWN0IG1hcHBpbmcga2V5IHRv
IGNoaWxkLiBKdXN0CisgICAqIHNpbXBsZSBzeW50YWN0aWMgc3VnYXIgYXJvdW5kIGZsYXR0ZW5D
aGlsZHJlbigpLgorICAgKgorICAgKiBAcGFyYW0geyp9IGNoaWxkcmVuIGB0aGlzLnByb3BzLmNo
aWxkcmVuYAorICAgKiBAcGFyYW0ge251bWJlcj19IHNlbGZEZWJ1Z0lEIE9wdGlvbmFsIGRlYnVn
SUQgb2YgdGhlIGN1cnJlbnQgaW50ZXJuYWwgaW5zdGFuY2UuCisgICAqIEByZXR1cm4ge29iamVj
dH0gTWFwcGluZyBvZiBrZXkgdG8gY2hpbGQKKyAgICovCisgIGdldENoaWxkTWFwcGluZzogZnVu
Y3Rpb24gKGNoaWxkcmVuLCBzZWxmRGVidWdJRCkgeworICAgIGlmICghY2hpbGRyZW4pIHsKKyAg
ICAgIHJldHVybiBjaGlsZHJlbjsKKyAgICB9CisKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0g
J3Byb2R1Y3Rpb24nKSB7CisgICAgICByZXR1cm4gZmxhdHRlbkNoaWxkcmVuKGNoaWxkcmVuLCBz
ZWxmRGVidWdJRCk7CisgICAgfQorCisgICAgcmV0dXJuIGZsYXR0ZW5DaGlsZHJlbihjaGlsZHJl
bik7CisgIH0sCisKKyAgLyoqCisgICAqIFdoZW4geW91J3JlIGFkZGluZyBvciByZW1vdmluZyBj
aGlsZHJlbiBzb21lIG1heSBiZSBhZGRlZCBvciByZW1vdmVkIGluIHRoZQorICAgKiBzYW1lIHJl
bmRlciBwYXNzLiBXZSB3YW50IHRvIHNob3cgKmJvdGgqIHNpbmNlIHdlIHdhbnQgdG8gc2ltdWx0
YW5lb3VzbHkKKyAgICogYW5pbWF0ZSBlbGVtZW50cyBpbiBhbmQgb3V0LiBUaGlzIGZ1bmN0aW9u
IHRha2VzIGEgcHJldmlvdXMgc2V0IG9mIGtleXMKKyAgICogYW5kIGEgbmV3IHNldCBvZiBrZXlz
IGFuZCBtZXJnZXMgdGhlbSB3aXRoIGl0cyBiZXN0IGd1ZXNzIG9mIHRoZSBjb3JyZWN0CisgICAq
IG9yZGVyaW5nLiBJbiB0aGUgZnV0dXJlIHdlIG1heSBleHBvc2Ugc29tZSBvZiB0aGUgdXRpbGl0
aWVzIGluCisgICAqIFJlYWN0TXVsdGlDaGlsZCB0byBtYWtlIHRoaXMgZWFzeSwgYnV0IGZvciBu
b3cgUmVhY3QgaXRzZWxmIGRvZXMgbm90CisgICAqIGRpcmVjdGx5IGhhdmUgdGhpcyBjb25jZXB0
IG9mIHRoZSB1bmlvbiBvZiBwcmV2Q2hpbGRyZW4gYW5kIG5leHRDaGlsZHJlbgorICAgKiBzbyB3
ZSBpbXBsZW1lbnQgaXQgaGVyZS4KKyAgICoKKyAgICogQHBhcmFtIHtvYmplY3R9IHByZXYgcHJl
diBjaGlsZHJlbiBhcyByZXR1cm5lZCBmcm9tCisgICAqIGBSZWFjdFRyYW5zaXRpb25DaGlsZE1h
cHBpbmcuZ2V0Q2hpbGRNYXBwaW5nKClgLgorICAgKiBAcGFyYW0ge29iamVjdH0gbmV4dCBuZXh0
IGNoaWxkcmVuIGFzIHJldHVybmVkIGZyb20KKyAgICogYFJlYWN0VHJhbnNpdGlvbkNoaWxkTWFw
cGluZy5nZXRDaGlsZE1hcHBpbmcoKWAuCisgICAqIEByZXR1cm4ge29iamVjdH0gYSBrZXkgc2V0
IHRoYXQgY29udGFpbnMgYWxsIGtleXMgaW4gYHByZXZgIGFuZCBhbGwga2V5cworICAgKiBpbiBg
bmV4dGAgaW4gYSByZWFzb25hYmxlIG9yZGVyLgorICAgKi8KKyAgbWVyZ2VDaGlsZE1hcHBpbmdz
OiBmdW5jdGlvbiAocHJldiwgbmV4dCkgeworICAgIHByZXYgPSBwcmV2IHx8IHt9OworICAgIG5l
eHQgPSBuZXh0IHx8IHt9OworCisgICAgZnVuY3Rpb24gZ2V0VmFsdWVGb3JLZXkoa2V5KSB7Cisg
ICAgICBpZiAobmV4dC5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7CisgICAgICAgIHJldHVybiBuZXh0
W2tleV07CisgICAgICB9IGVsc2UgeworICAgICAgICByZXR1cm4gcHJldltrZXldOworICAgICAg
fQorICAgIH0KKworICAgIC8vIEZvciBlYWNoIGtleSBvZiBgbmV4dGAsIHRoZSBsaXN0IG9mIGtl
eXMgdG8gaW5zZXJ0IGJlZm9yZSB0aGF0IGtleSBpbgorICAgIC8vIHRoZSBjb21iaW5lZCBsaXN0
CisgICAgdmFyIG5leHRLZXlzUGVuZGluZyA9IHt9OworCisgICAgdmFyIHBlbmRpbmdLZXlzID0g
W107CisgICAgZm9yICh2YXIgcHJldktleSBpbiBwcmV2KSB7CisgICAgICBpZiAobmV4dC5oYXNP
d25Qcm9wZXJ0eShwcmV2S2V5KSkgeworICAgICAgICBpZiAocGVuZGluZ0tleXMubGVuZ3RoKSB7
CisgICAgICAgICAgbmV4dEtleXNQZW5kaW5nW3ByZXZLZXldID0gcGVuZGluZ0tleXM7CisgICAg
ICAgICAgcGVuZGluZ0tleXMgPSBbXTsKKyAgICAgICAgfQorICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcGVuZGluZ0tleXMucHVzaChwcmV2S2V5KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIg
aTsKKyAgICB2YXIgY2hpbGRNYXBwaW5nID0ge307CisgICAgZm9yICh2YXIgbmV4dEtleSBpbiBu
ZXh0KSB7CisgICAgICBpZiAobmV4dEtleXNQZW5kaW5nLmhhc093blByb3BlcnR5KG5leHRLZXkp
KSB7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuZXh0S2V5c1BlbmRpbmdbbmV4dEtleV0ubGVu
Z3RoOyBpKyspIHsKKyAgICAgICAgICB2YXIgcGVuZGluZ05leHRLZXkgPSBuZXh0S2V5c1BlbmRp
bmdbbmV4dEtleV1baV07CisgICAgICAgICAgY2hpbGRNYXBwaW5nW25leHRLZXlzUGVuZGluZ1tu
ZXh0S2V5XVtpXV0gPSBnZXRWYWx1ZUZvcktleShwZW5kaW5nTmV4dEtleSk7CisgICAgICAgIH0K
KyAgICAgIH0KKyAgICAgIGNoaWxkTWFwcGluZ1tuZXh0S2V5XSA9IGdldFZhbHVlRm9yS2V5KG5l
eHRLZXkpOworICAgIH0KKworICAgIC8vIEZpbmFsbHksIGFkZCB0aGUga2V5cyB3aGljaCBkaWRu
J3QgYXBwZWFyIGJlZm9yZSBhbnkga2V5IGluIGBuZXh0YAorICAgIGZvciAoaSA9IDA7IGkgPCBw
ZW5kaW5nS2V5cy5sZW5ndGg7IGkrKykgeworICAgICAgY2hpbGRNYXBwaW5nW3BlbmRpbmdLZXlz
W2ldXSA9IGdldFZhbHVlRm9yS2V5KHBlbmRpbmdLZXlzW2ldKTsKKyAgICB9CisKKyAgICByZXR1
cm4gY2hpbGRNYXBwaW5nOworICB9Cit9OworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0VHJhbnNp
dGlvbkNoaWxkTWFwcGluZzsKK30seyIzNSI6MzV9XSwyODpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1
bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJ
bmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElD
RU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUg
UEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJp
Y3QnOworCit2YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSBfZGVyZXFfKDQzKTsKKwordmFyIGdl
dFZlbmRvclByZWZpeGVkRXZlbnROYW1lID0gX2RlcmVxXygxKTsKKwordmFyIGVuZEV2ZW50cyA9
IFtdOworCitmdW5jdGlvbiBkZXRlY3RFdmVudHMoKSB7CisgIHZhciBhbmltRW5kID0gZ2V0VmVu
ZG9yUHJlZml4ZWRFdmVudE5hbWUoJ2FuaW1hdGlvbmVuZCcpOworICB2YXIgdHJhbnNFbmQgPSBn
ZXRWZW5kb3JQcmVmaXhlZEV2ZW50TmFtZSgndHJhbnNpdGlvbmVuZCcpOworCisgIGlmIChhbmlt
RW5kKSB7CisgICAgZW5kRXZlbnRzLnB1c2goYW5pbUVuZCk7CisgIH0KKworICBpZiAodHJhbnNF
bmQpIHsKKyAgICBlbmRFdmVudHMucHVzaCh0cmFuc0VuZCk7CisgIH0KK30KKworaWYgKEV4ZWN1
dGlvbkVudmlyb25tZW50LmNhblVzZURPTSkgeworICBkZXRlY3RFdmVudHMoKTsKK30KKworLy8g
V2UgdXNlIHRoZSByYXcge2FkZHxyZW1vdmV9RXZlbnRMaXN0ZW5lcigpIGNhbGwgYmVjYXVzZSBF
dmVudExpc3RlbmVyCisvLyBkb2VzIG5vdCBrbm93IGhvdyB0byByZW1vdmUgZXZlbnQgbGlzdGVu
ZXJzIGFuZCB3ZSByZWFsbHkgc2hvdWxkCisvLyBjbGVhbiB1cC4gQWxzbywgdGhlc2UgZXZlbnRz
IGFyZSBub3QgdHJpZ2dlcmVkIGluIG9sZGVyIGJyb3dzZXJzCisvLyBzbyB3ZSBzaG91bGQgYmUg
QS1PSyBoZXJlLgorCitmdW5jdGlvbiBhZGRFdmVudExpc3RlbmVyKG5vZGUsIGV2ZW50TmFtZSwg
ZXZlbnRMaXN0ZW5lcikgeworICBub2RlLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBldmVu
dExpc3RlbmVyLCBmYWxzZSk7Cit9CisKK2Z1bmN0aW9uIHJlbW92ZUV2ZW50TGlzdGVuZXIobm9k
ZSwgZXZlbnROYW1lLCBldmVudExpc3RlbmVyKSB7CisgIG5vZGUucmVtb3ZlRXZlbnRMaXN0ZW5l
cihldmVudE5hbWUsIGV2ZW50TGlzdGVuZXIsIGZhbHNlKTsKK30KKwordmFyIFJlYWN0VHJhbnNp
dGlvbkV2ZW50cyA9IHsKKyAgYWRkRW5kRXZlbnRMaXN0ZW5lcjogZnVuY3Rpb24gKG5vZGUsIGV2
ZW50TGlzdGVuZXIpIHsKKyAgICBpZiAoZW5kRXZlbnRzLmxlbmd0aCA9PT0gMCkgeworICAgICAg
Ly8gSWYgQ1NTIHRyYW5zaXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkLCB0cmlnZ2VyIGFuICJlbmQg
YW5pbWF0aW9uIgorICAgICAgLy8gZXZlbnQgaW1tZWRpYXRlbHkuCisgICAgICB3aW5kb3cuc2V0
VGltZW91dChldmVudExpc3RlbmVyLCAwKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgZW5k
RXZlbnRzLmZvckVhY2goZnVuY3Rpb24gKGVuZEV2ZW50KSB7CisgICAgICBhZGRFdmVudExpc3Rl
bmVyKG5vZGUsIGVuZEV2ZW50LCBldmVudExpc3RlbmVyKTsKKyAgICB9KTsKKyAgfSwKKworICBy
ZW1vdmVFbmRFdmVudExpc3RlbmVyOiBmdW5jdGlvbiAobm9kZSwgZXZlbnRMaXN0ZW5lcikgewor
ICAgIGlmIChlbmRFdmVudHMubGVuZ3RoID09PSAwKSB7CisgICAgICByZXR1cm47CisgICAgfQor
ICAgIGVuZEV2ZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChlbmRFdmVudCkgeworICAgICAgcmVtb3Zl
RXZlbnRMaXN0ZW5lcihub2RlLCBlbmRFdmVudCwgZXZlbnRMaXN0ZW5lcik7CisgICAgfSk7Cisg
IH0KK307CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RUcmFuc2l0aW9uRXZlbnRzOworfSx7IjEi
OjEsIjQzIjo0M31dLDI5OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgor
ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUg
QlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAq
IG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhl
IHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBfYXNzaWdu
ID0gX2RlcmVxXyg0OSk7CisKK2Z1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29u
c3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhy
b3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIik7IH0g
fQorCitmdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihzZWxmLCBjYWxsKSB7IGlm
ICghc2VsZikgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5p
dGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpOyB9IHJldHVybiBjYWxsICYm
ICh0eXBlb2YgY2FsbCA9PT0gIm9iamVjdCIgfHwgdHlwZW9mIGNhbGwgPT09ICJmdW5jdGlvbiIp
ID8gY2FsbCA6IHNlbGY7IH0KKworZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNs
YXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gImZ1bmN0aW9uIiAmJiBzdXBlckNsYXNz
ICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBl
aXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIiArIHR5cGVvZiBzdXBlckNsYXNzKTsg
fSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJD
bGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCBlbnVtZXJh
YmxlOiBmYWxzZSwgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAo
c3VwZXJDbGFzcykgT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9m
KHN1YkNsYXNzLCBzdXBlckNsYXNzKSA6IHN1YkNsYXNzLl9fcHJvdG9fXyA9IHN1cGVyQ2xhc3M7
IH0KKwordmFyIFJlYWN0ID0gX2RlcmVxXyg1KTsKK3ZhciBSZWFjdEFkZG9uc0RPTURlcGVuZGVu
Y2llcyA9IF9kZXJlcV8oNik7Cit2YXIgUmVhY3RUcmFuc2l0aW9uQ2hpbGRNYXBwaW5nID0gX2Rl
cmVxXygyNyk7CisKK3ZhciBlbXB0eUZ1bmN0aW9uID0gX2RlcmVxXyg0NCk7CisKKy8qKgorICog
QSBiYXNpcyBmb3IgYW5pbWF0aW9ucy4gV2hlbiBjaGlsZHJlbiBhcmUgZGVjbGFyYXRpdmVseSBh
ZGRlZCBvciByZW1vdmVkLAorICogc3BlY2lhbCBsaWZlY3ljbGUgaG9va3MgYXJlIGNhbGxlZC4K
KyAqIFNlZSBodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL2FuaW1hdGlvbi5o
dG1sI2xvdy1sZXZlbC1hcGktcmVhY3R0cmFuc2l0aW9uZ3JvdXAKKyAqLworCit2YXIgUmVhY3RU
cmFuc2l0aW9uR3JvdXAgPSBmdW5jdGlvbiAoX1JlYWN0JENvbXBvbmVudCkgeworICBfaW5oZXJp
dHMoUmVhY3RUcmFuc2l0aW9uR3JvdXAsIF9SZWFjdCRDb21wb25lbnQpOworCisgIGZ1bmN0aW9u
IFJlYWN0VHJhbnNpdGlvbkdyb3VwKCkgeworICAgIHZhciBfdGVtcCwgX3RoaXMsIF9yZXQ7CisK
KyAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUmVhY3RUcmFuc2l0aW9uR3JvdXApOworCisgICAg
Zm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBBcnJheShfbGVuKSwgX2tl
eSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHsKKyAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVu
dHNbX2tleV07CisgICAgfQorCisgICAgcmV0dXJuIF9yZXQgPSAoX3RlbXAgPSAoX3RoaXMgPSBf
cG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCBfUmVhY3QkQ29tcG9uZW50LmNhbGwuYXBw
bHkoX1JlYWN0JENvbXBvbmVudCwgW3RoaXNdLmNvbmNhdChhcmdzKSkpLCBfdGhpcyksIF90aGlz
LnN0YXRlID0geworICAgICAgLy8gVE9ETzogY2FuIHdlIGdldCB1c2VmdWwgZGVidWcgaW5mb3Jt
YXRpb24gdG8gc2hvdyBhdCB0aGlzIHBvaW50PworICAgICAgY2hpbGRyZW46IFJlYWN0VHJhbnNp
dGlvbkNoaWxkTWFwcGluZy5nZXRDaGlsZE1hcHBpbmcoX3RoaXMucHJvcHMuY2hpbGRyZW4pCisg
ICAgfSwgX3RoaXMucGVyZm9ybUFwcGVhciA9IGZ1bmN0aW9uIChrZXkpIHsKKyAgICAgIF90aGlz
LmN1cnJlbnRseVRyYW5zaXRpb25pbmdLZXlzW2tleV0gPSB0cnVlOworCisgICAgICB2YXIgY29t
cG9uZW50ID0gX3RoaXMucmVmc1trZXldOworCisgICAgICBpZiAoY29tcG9uZW50LmNvbXBvbmVu
dFdpbGxBcHBlYXIpIHsKKyAgICAgICAgY29tcG9uZW50LmNvbXBvbmVudFdpbGxBcHBlYXIoX3Ro
aXMuX2hhbmRsZURvbmVBcHBlYXJpbmcuYmluZChfdGhpcywga2V5KSk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBfdGhpcy5faGFuZGxlRG9uZUFwcGVhcmluZyhrZXkpOworICAgICAgfQorICAg
IH0sIF90aGlzLl9oYW5kbGVEb25lQXBwZWFyaW5nID0gZnVuY3Rpb24gKGtleSkgeworICAgICAg
dmFyIGNvbXBvbmVudCA9IF90aGlzLnJlZnNba2V5XTsKKyAgICAgIGlmIChjb21wb25lbnQuY29t
cG9uZW50RGlkQXBwZWFyKSB7CisgICAgICAgIGNvbXBvbmVudC5jb21wb25lbnREaWRBcHBlYXIo
KTsKKyAgICAgIH0KKworICAgICAgZGVsZXRlIF90aGlzLmN1cnJlbnRseVRyYW5zaXRpb25pbmdL
ZXlzW2tleV07CisKKyAgICAgIHZhciBjdXJyZW50Q2hpbGRNYXBwaW5nOworICAgICAgaWYgKCJk
ZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgICBjdXJyZW50Q2hpbGRNYXBw
aW5nID0gUmVhY3RUcmFuc2l0aW9uQ2hpbGRNYXBwaW5nLmdldENoaWxkTWFwcGluZyhfdGhpcy5w
cm9wcy5jaGlsZHJlbiwgUmVhY3RBZGRvbnNET01EZXBlbmRlbmNpZXMuZ2V0UmVhY3RJbnN0YW5j
ZU1hcCgpLmdldChfdGhpcykuX2RlYnVnSUQpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgY3Vy
cmVudENoaWxkTWFwcGluZyA9IFJlYWN0VHJhbnNpdGlvbkNoaWxkTWFwcGluZy5nZXRDaGlsZE1h
cHBpbmcoX3RoaXMucHJvcHMuY2hpbGRyZW4pOworICAgICAgfQorCisgICAgICBpZiAoIWN1cnJl
bnRDaGlsZE1hcHBpbmcgfHwgIWN1cnJlbnRDaGlsZE1hcHBpbmcuaGFzT3duUHJvcGVydHkoa2V5
KSkgeworICAgICAgICAvLyBUaGlzIHdhcyByZW1vdmVkIGJlZm9yZSBpdCBoYWQgZnVsbHkgYXBw
ZWFyZWQuIFJlbW92ZSBpdC4KKyAgICAgICAgX3RoaXMucGVyZm9ybUxlYXZlKGtleSk7CisgICAg
ICB9CisgICAgfSwgX3RoaXMucGVyZm9ybUVudGVyID0gZnVuY3Rpb24gKGtleSkgeworICAgICAg
X3RoaXMuY3VycmVudGx5VHJhbnNpdGlvbmluZ0tleXNba2V5XSA9IHRydWU7CisKKyAgICAgIHZh
ciBjb21wb25lbnQgPSBfdGhpcy5yZWZzW2tleV07CisKKyAgICAgIGlmIChjb21wb25lbnQuY29t
cG9uZW50V2lsbEVudGVyKSB7CisgICAgICAgIGNvbXBvbmVudC5jb21wb25lbnRXaWxsRW50ZXIo
X3RoaXMuX2hhbmRsZURvbmVFbnRlcmluZy5iaW5kKF90aGlzLCBrZXkpKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIF90aGlzLl9oYW5kbGVEb25lRW50ZXJpbmcoa2V5KTsKKyAgICAgIH0KKyAg
ICB9LCBfdGhpcy5faGFuZGxlRG9uZUVudGVyaW5nID0gZnVuY3Rpb24gKGtleSkgeworICAgICAg
dmFyIGNvbXBvbmVudCA9IF90aGlzLnJlZnNba2V5XTsKKyAgICAgIGlmIChjb21wb25lbnQuY29t
cG9uZW50RGlkRW50ZXIpIHsKKyAgICAgICAgY29tcG9uZW50LmNvbXBvbmVudERpZEVudGVyKCk7
CisgICAgICB9CisKKyAgICAgIGRlbGV0ZSBfdGhpcy5jdXJyZW50bHlUcmFuc2l0aW9uaW5nS2V5
c1trZXldOworCisgICAgICB2YXIgY3VycmVudENoaWxkTWFwcGluZzsKKyAgICAgIGlmICgiZGV2
ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICAgY3VycmVudENoaWxkTWFwcGlu
ZyA9IFJlYWN0VHJhbnNpdGlvbkNoaWxkTWFwcGluZy5nZXRDaGlsZE1hcHBpbmcoX3RoaXMucHJv
cHMuY2hpbGRyZW4sIFJlYWN0QWRkb25zRE9NRGVwZW5kZW5jaWVzLmdldFJlYWN0SW5zdGFuY2VN
YXAoKS5nZXQoX3RoaXMpLl9kZWJ1Z0lEKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGN1cnJl
bnRDaGlsZE1hcHBpbmcgPSBSZWFjdFRyYW5zaXRpb25DaGlsZE1hcHBpbmcuZ2V0Q2hpbGRNYXBw
aW5nKF90aGlzLnByb3BzLmNoaWxkcmVuKTsKKyAgICAgIH0KKworICAgICAgaWYgKCFjdXJyZW50
Q2hpbGRNYXBwaW5nIHx8ICFjdXJyZW50Q2hpbGRNYXBwaW5nLmhhc093blByb3BlcnR5KGtleSkp
IHsKKyAgICAgICAgLy8gVGhpcyB3YXMgcmVtb3ZlZCBiZWZvcmUgaXQgaGFkIGZ1bGx5IGVudGVy
ZWQuIFJlbW92ZSBpdC4KKyAgICAgICAgX3RoaXMucGVyZm9ybUxlYXZlKGtleSk7CisgICAgICB9
CisgICAgfSwgX3RoaXMucGVyZm9ybUxlYXZlID0gZnVuY3Rpb24gKGtleSkgeworICAgICAgX3Ro
aXMuY3VycmVudGx5VHJhbnNpdGlvbmluZ0tleXNba2V5XSA9IHRydWU7CisKKyAgICAgIHZhciBj
b21wb25lbnQgPSBfdGhpcy5yZWZzW2tleV07CisgICAgICBpZiAoY29tcG9uZW50LmNvbXBvbmVu
dFdpbGxMZWF2ZSkgeworICAgICAgICBjb21wb25lbnQuY29tcG9uZW50V2lsbExlYXZlKF90aGlz
Ll9oYW5kbGVEb25lTGVhdmluZy5iaW5kKF90aGlzLCBrZXkpKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIC8vIE5vdGUgdGhhdCB0aGlzIGlzIHNvbWV3aGF0IGRhbmdlcm91cyBiL2MgaXQgY2Fs
bHMgc2V0U3RhdGUoKQorICAgICAgICAvLyBhZ2FpbiwgZWZmZWN0aXZlbHkgbXV0YXRpbmcgdGhl
IGNvbXBvbmVudCBiZWZvcmUgYWxsIHRoZSB3b3JrCisgICAgICAgIC8vIGlzIGRvbmUuCisgICAg
ICAgIF90aGlzLl9oYW5kbGVEb25lTGVhdmluZyhrZXkpOworICAgICAgfQorICAgIH0sIF90aGlz
Ll9oYW5kbGVEb25lTGVhdmluZyA9IGZ1bmN0aW9uIChrZXkpIHsKKyAgICAgIHZhciBjb21wb25l
bnQgPSBfdGhpcy5yZWZzW2tleV07CisKKyAgICAgIGlmIChjb21wb25lbnQuY29tcG9uZW50RGlk
TGVhdmUpIHsKKyAgICAgICAgY29tcG9uZW50LmNvbXBvbmVudERpZExlYXZlKCk7CisgICAgICB9
CisKKyAgICAgIGRlbGV0ZSBfdGhpcy5jdXJyZW50bHlUcmFuc2l0aW9uaW5nS2V5c1trZXldOwor
CisgICAgICB2YXIgY3VycmVudENoaWxkTWFwcGluZzsKKyAgICAgIGlmICgiZGV2ZWxvcG1lbnQi
ICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICAgY3VycmVudENoaWxkTWFwcGluZyA9IFJlYWN0
VHJhbnNpdGlvbkNoaWxkTWFwcGluZy5nZXRDaGlsZE1hcHBpbmcoX3RoaXMucHJvcHMuY2hpbGRy
ZW4sIFJlYWN0QWRkb25zRE9NRGVwZW5kZW5jaWVzLmdldFJlYWN0SW5zdGFuY2VNYXAoKS5nZXQo
X3RoaXMpLl9kZWJ1Z0lEKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGN1cnJlbnRDaGlsZE1h
cHBpbmcgPSBSZWFjdFRyYW5zaXRpb25DaGlsZE1hcHBpbmcuZ2V0Q2hpbGRNYXBwaW5nKF90aGlz
LnByb3BzLmNoaWxkcmVuKTsKKyAgICAgIH0KKworICAgICAgaWYgKGN1cnJlbnRDaGlsZE1hcHBp
bmcgJiYgY3VycmVudENoaWxkTWFwcGluZy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7CisgICAgICAg
IC8vIFRoaXMgZW50ZXJlZCBhZ2FpbiBiZWZvcmUgaXQgZnVsbHkgbGVmdC4gQWRkIGl0IGFnYWlu
LgorICAgICAgICBfdGhpcy5wZXJmb3JtRW50ZXIoa2V5KTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIF90aGlzLnNldFN0YXRlKGZ1bmN0aW9uIChzdGF0ZSkgeworICAgICAgICAgIHZhciBuZXdD
aGlsZHJlbiA9IF9hc3NpZ24oe30sIHN0YXRlLmNoaWxkcmVuKTsKKyAgICAgICAgICBkZWxldGUg
bmV3Q2hpbGRyZW5ba2V5XTsKKyAgICAgICAgICByZXR1cm4geyBjaGlsZHJlbjogbmV3Q2hpbGRy
ZW4gfTsKKyAgICAgICAgfSk7CisgICAgICB9CisgICAgfSwgX3RlbXApLCBfcG9zc2libGVDb25z
dHJ1Y3RvclJldHVybihfdGhpcywgX3JldCk7CisgIH0KKworICBSZWFjdFRyYW5zaXRpb25Hcm91
cC5wcm90b3R5cGUuY29tcG9uZW50V2lsbE1vdW50ID0gZnVuY3Rpb24gY29tcG9uZW50V2lsbE1v
dW50KCkgeworICAgIHRoaXMuY3VycmVudGx5VHJhbnNpdGlvbmluZ0tleXMgPSB7fTsKKyAgICB0
aGlzLmtleXNUb0VudGVyID0gW107CisgICAgdGhpcy5rZXlzVG9MZWF2ZSA9IFtdOworICB9Owor
CisgIFJlYWN0VHJhbnNpdGlvbkdyb3VwLnByb3RvdHlwZS5jb21wb25lbnREaWRNb3VudCA9IGZ1
bmN0aW9uIGNvbXBvbmVudERpZE1vdW50KCkgeworICAgIHZhciBpbml0aWFsQ2hpbGRNYXBwaW5n
ID0gdGhpcy5zdGF0ZS5jaGlsZHJlbjsKKyAgICBmb3IgKHZhciBrZXkgaW4gaW5pdGlhbENoaWxk
TWFwcGluZykgeworICAgICAgaWYgKGluaXRpYWxDaGlsZE1hcHBpbmdba2V5XSkgeworICAgICAg
ICB0aGlzLnBlcmZvcm1BcHBlYXIoa2V5KTsKKyAgICAgIH0KKyAgICB9CisgIH07CisKKyAgUmVh
Y3RUcmFuc2l0aW9uR3JvdXAucHJvdG90eXBlLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMgPSBm
dW5jdGlvbiBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKG5leHRQcm9wcykgeworICAgIHZhciBu
ZXh0Q2hpbGRNYXBwaW5nOworICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicp
IHsKKyAgICAgIG5leHRDaGlsZE1hcHBpbmcgPSBSZWFjdFRyYW5zaXRpb25DaGlsZE1hcHBpbmcu
Z2V0Q2hpbGRNYXBwaW5nKG5leHRQcm9wcy5jaGlsZHJlbiwgUmVhY3RBZGRvbnNET01EZXBlbmRl
bmNpZXMuZ2V0UmVhY3RJbnN0YW5jZU1hcCgpLmdldCh0aGlzKS5fZGVidWdJRCk7CisgICAgfSBl
bHNlIHsKKyAgICAgIG5leHRDaGlsZE1hcHBpbmcgPSBSZWFjdFRyYW5zaXRpb25DaGlsZE1hcHBp
bmcuZ2V0Q2hpbGRNYXBwaW5nKG5leHRQcm9wcy5jaGlsZHJlbik7CisgICAgfQorICAgIHZhciBw
cmV2Q2hpbGRNYXBwaW5nID0gdGhpcy5zdGF0ZS5jaGlsZHJlbjsKKworICAgIHRoaXMuc2V0U3Rh
dGUoeworICAgICAgY2hpbGRyZW46IFJlYWN0VHJhbnNpdGlvbkNoaWxkTWFwcGluZy5tZXJnZUNo
aWxkTWFwcGluZ3MocHJldkNoaWxkTWFwcGluZywgbmV4dENoaWxkTWFwcGluZykKKyAgICB9KTsK
KworICAgIHZhciBrZXk7CisKKyAgICBmb3IgKGtleSBpbiBuZXh0Q2hpbGRNYXBwaW5nKSB7Cisg
ICAgICB2YXIgaGFzUHJldiA9IHByZXZDaGlsZE1hcHBpbmcgJiYgcHJldkNoaWxkTWFwcGluZy5o
YXNPd25Qcm9wZXJ0eShrZXkpOworICAgICAgaWYgKG5leHRDaGlsZE1hcHBpbmdba2V5XSAmJiAh
aGFzUHJldiAmJiAhdGhpcy5jdXJyZW50bHlUcmFuc2l0aW9uaW5nS2V5c1trZXldKSB7CisgICAg
ICAgIHRoaXMua2V5c1RvRW50ZXIucHVzaChrZXkpOworICAgICAgfQorICAgIH0KKworICAgIGZv
ciAoa2V5IGluIHByZXZDaGlsZE1hcHBpbmcpIHsKKyAgICAgIHZhciBoYXNOZXh0ID0gbmV4dENo
aWxkTWFwcGluZyAmJiBuZXh0Q2hpbGRNYXBwaW5nLmhhc093blByb3BlcnR5KGtleSk7CisgICAg
ICBpZiAocHJldkNoaWxkTWFwcGluZ1trZXldICYmICFoYXNOZXh0ICYmICF0aGlzLmN1cnJlbnRs
eVRyYW5zaXRpb25pbmdLZXlzW2tleV0pIHsKKyAgICAgICAgdGhpcy5rZXlzVG9MZWF2ZS5wdXNo
KGtleSk7CisgICAgICB9CisgICAgfQorCisgICAgLy8gSWYgd2Ugd2FudCB0byBzb21lZGF5IGNo
ZWNrIGZvciByZW9yZGVyaW5nLCB3ZSBjb3VsZCBkbyBpdCBoZXJlLgorICB9OworCisgIFJlYWN0
VHJhbnNpdGlvbkdyb3VwLnByb3RvdHlwZS5jb21wb25lbnREaWRVcGRhdGUgPSBmdW5jdGlvbiBj
b21wb25lbnREaWRVcGRhdGUoKSB7CisgICAgdmFyIGtleXNUb0VudGVyID0gdGhpcy5rZXlzVG9F
bnRlcjsKKyAgICB0aGlzLmtleXNUb0VudGVyID0gW107CisgICAga2V5c1RvRW50ZXIuZm9yRWFj
aCh0aGlzLnBlcmZvcm1FbnRlcik7CisKKyAgICB2YXIga2V5c1RvTGVhdmUgPSB0aGlzLmtleXNU
b0xlYXZlOworICAgIHRoaXMua2V5c1RvTGVhdmUgPSBbXTsKKyAgICBrZXlzVG9MZWF2ZS5mb3JF
YWNoKHRoaXMucGVyZm9ybUxlYXZlKTsKKyAgfTsKKworICBSZWFjdFRyYW5zaXRpb25Hcm91cC5w
cm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gcmVuZGVyKCkgeworICAgIC8vIFRPRE86IHdlIGNv
dWxkIGdldCByaWQgb2YgdGhlIG5lZWQgZm9yIHRoZSB3cmFwcGVyIG5vZGUKKyAgICAvLyBieSBj
bG9uaW5nIGEgc2luZ2xlIGNoaWxkCisgICAgdmFyIGNoaWxkcmVuVG9SZW5kZXIgPSBbXTsKKyAg
ICBmb3IgKHZhciBrZXkgaW4gdGhpcy5zdGF0ZS5jaGlsZHJlbikgeworICAgICAgdmFyIGNoaWxk
ID0gdGhpcy5zdGF0ZS5jaGlsZHJlbltrZXldOworICAgICAgaWYgKGNoaWxkKSB7CisgICAgICAg
IC8vIFlvdSBtYXkgbmVlZCB0byBhcHBseSByZWFjdGl2ZSB1cGRhdGVzIHRvIGEgY2hpbGQgYXMg
aXQgaXMgbGVhdmluZy4KKyAgICAgICAgLy8gVGhlIG5vcm1hbCBSZWFjdCB3YXkgdG8gZG8gaXQg
d29uJ3Qgd29yayBzaW5jZSB0aGUgY2hpbGQgd2lsbCBoYXZlCisgICAgICAgIC8vIGFscmVhZHkg
YmVlbiByZW1vdmVkLiBJbiBjYXNlIHlvdSBuZWVkIHRoaXMgYmVoYXZpb3IgeW91IGNhbiBwcm92
aWRlCisgICAgICAgIC8vIGEgY2hpbGRGYWN0b3J5IGZ1bmN0aW9uIHRvIHdyYXAgZXZlcnkgY2hp
bGQsIGV2ZW4gdGhlIG9uZXMgdGhhdCBhcmUKKyAgICAgICAgLy8gbGVhdmluZy4KKyAgICAgICAg
Y2hpbGRyZW5Ub1JlbmRlci5wdXNoKFJlYWN0LmNsb25lRWxlbWVudCh0aGlzLnByb3BzLmNoaWxk
RmFjdG9yeShjaGlsZCksIHsgcmVmOiBrZXksIGtleToga2V5IH0pKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICAvLyBEbyBub3QgZm9yd2FyZCBSZWFjdFRyYW5zaXRpb25Hcm91cCBwcm9wcyB0byBw
cmltaXRpdmUgRE9NIG5vZGVzCisgICAgdmFyIHByb3BzID0gX2Fzc2lnbih7fSwgdGhpcy5wcm9w
cyk7CisgICAgZGVsZXRlIHByb3BzLnRyYW5zaXRpb25MZWF2ZTsKKyAgICBkZWxldGUgcHJvcHMu
dHJhbnNpdGlvbk5hbWU7CisgICAgZGVsZXRlIHByb3BzLnRyYW5zaXRpb25BcHBlYXI7CisgICAg
ZGVsZXRlIHByb3BzLnRyYW5zaXRpb25FbnRlcjsKKyAgICBkZWxldGUgcHJvcHMuY2hpbGRGYWN0
b3J5OworICAgIGRlbGV0ZSBwcm9wcy50cmFuc2l0aW9uTGVhdmVUaW1lb3V0OworICAgIGRlbGV0
ZSBwcm9wcy50cmFuc2l0aW9uRW50ZXJUaW1lb3V0OworICAgIGRlbGV0ZSBwcm9wcy50cmFuc2l0
aW9uQXBwZWFyVGltZW91dDsKKyAgICBkZWxldGUgcHJvcHMuY29tcG9uZW50OworCisgICAgcmV0
dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQodGhpcy5wcm9wcy5jb21wb25lbnQsIHByb3BzLCBjaGls
ZHJlblRvUmVuZGVyKTsKKyAgfTsKKworICByZXR1cm4gUmVhY3RUcmFuc2l0aW9uR3JvdXA7Cit9
KFJlYWN0LkNvbXBvbmVudCk7CisKK1JlYWN0VHJhbnNpdGlvbkdyb3VwLmRpc3BsYXlOYW1lID0g
J1JlYWN0VHJhbnNpdGlvbkdyb3VwJzsKK1JlYWN0VHJhbnNpdGlvbkdyb3VwLnByb3BUeXBlcyA9
IHsKKyAgY29tcG9uZW50OiBSZWFjdC5Qcm9wVHlwZXMuYW55LAorICBjaGlsZEZhY3Rvcnk6IFJl
YWN0LlByb3BUeXBlcy5mdW5jCit9OworUmVhY3RUcmFuc2l0aW9uR3JvdXAuZGVmYXVsdFByb3Bz
ID0geworICBjb21wb25lbnQ6ICdzcGFuJywKKyAgY2hpbGRGYWN0b3J5OiBlbXB0eUZ1bmN0aW9u
LnRoYXRSZXR1cm5zQXJndW1lbnQKK307CisKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdFRyYW5z
aXRpb25Hcm91cDsKK30seyIyNyI6MjcsIjQ0Ijo0NCwiNDkiOjQ5LCI1Ijo1LCI2Ijo2fV0sMzA6
W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAx
My1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5z
ZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2Yg
dGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0
cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnku
CisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKworbW9kdWxlLmV4cG9ydHMgPSAnMTUuNC4wJzsK
K30se31dLDMxOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29w
eXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0
eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBMaW5rZWRTdGF0ZU1p
eGluID0gX2RlcmVxXygzKTsKK3ZhciBSZWFjdCA9IF9kZXJlcV8oNSk7Cit2YXIgUmVhY3RBZGRv
bnNET01EZXBlbmRlbmNpZXMgPSBfZGVyZXFfKDYpOwordmFyIFJlYWN0Q29tcG9uZW50V2l0aFB1
cmVSZW5kZXJNaXhpbiA9IF9kZXJlcV8oMTMpOwordmFyIFJlYWN0Q1NTVHJhbnNpdGlvbkdyb3Vw
ID0gX2RlcmVxXyg3KTsKK3ZhciBSZWFjdEZyYWdtZW50ID0gX2RlcmVxXygxOSk7Cit2YXIgUmVh
Y3RUcmFuc2l0aW9uR3JvdXAgPSBfZGVyZXFfKDI5KTsKKwordmFyIHNoYWxsb3dDb21wYXJlID0g
X2RlcmVxXygzOSk7Cit2YXIgdXBkYXRlID0gX2RlcmVxXyg0MSk7CisKK1JlYWN0LmFkZG9ucyA9
IHsKKyAgQ1NTVHJhbnNpdGlvbkdyb3VwOiBSZWFjdENTU1RyYW5zaXRpb25Hcm91cCwKKyAgTGlu
a2VkU3RhdGVNaXhpbjogTGlua2VkU3RhdGVNaXhpbiwKKyAgUHVyZVJlbmRlck1peGluOiBSZWFj
dENvbXBvbmVudFdpdGhQdXJlUmVuZGVyTWl4aW4sCisgIFRyYW5zaXRpb25Hcm91cDogUmVhY3RU
cmFuc2l0aW9uR3JvdXAsCisKKyAgY3JlYXRlRnJhZ21lbnQ6IFJlYWN0RnJhZ21lbnQuY3JlYXRl
LAorICBzaGFsbG93Q29tcGFyZTogc2hhbGxvd0NvbXBhcmUsCisgIHVwZGF0ZTogdXBkYXRlCit9
OworCitpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgIC8vIEZvciB0aGUg
VU1EIGJ1aWxkIHdlIGdldCB0aGVzZSBsYXppbHkgZnJvbSB0aGUgZ2xvYmFsIHNpbmNlIHRoZXkn
cmUgdGllZAorICAvLyB0byB0aGUgRE9NIHJlbmRlcmVyIGFuZCBpdCBoYXNuJ3QgbG9hZGVkIHll
dC4KKyAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFJlYWN0LmFkZG9ucywgJ1BlcmYnLCB7CisgICAg
ZW51bWVyYWJsZTogdHJ1ZSwKKyAgICBnZXQ6IGZ1bmN0aW9uICgpIHsKKyAgICAgIHJldHVybiBS
ZWFjdEFkZG9uc0RPTURlcGVuZGVuY2llcy5nZXRSZWFjdFBlcmYoKTsKKyAgICB9CisgIH0pOwor
ICBPYmplY3QuZGVmaW5lUHJvcGVydHkoUmVhY3QuYWRkb25zLCAnVGVzdFV0aWxzJywgeworICAg
IGVudW1lcmFibGU6IHRydWUsCisgICAgZ2V0OiBmdW5jdGlvbiAoKSB7CisgICAgICByZXR1cm4g
UmVhY3RBZGRvbnNET01EZXBlbmRlbmNpZXMuZ2V0UmVhY3RUZXN0VXRpbHMoKTsKKyAgICB9Cisg
IH0pOworfQorCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0OworfSx7IjEzIjoxMywiMTkiOjE5LCIy
OSI6MjksIjMiOjMsIjM5IjozOSwiNDEiOjQxLCI1Ijo1LCI2Ijo2LCI3Ijo3fV0sMzI6W2Z1bmN0
aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBz
b3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgor
ICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9hc3NpZ24gPSBfZGVyZXFfKDQ5KTsKKwordmFy
IFJlYWN0V2l0aEFkZG9ucyA9IF9kZXJlcV8oMzEpOworCisvLyBgdmVyc2lvbmAgd2lsbCBiZSBh
ZGRlZCBoZXJlIGJ5IHRoZSBSZWFjdCBtb2R1bGUuCit2YXIgUmVhY3RXaXRoQWRkb25zVU1ERW50
cnkgPSBfYXNzaWduKHsKKyAgX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJ
TExfQkVfRklSRUQ6IHsKKyAgICBSZWFjdEN1cnJlbnRPd25lcjogX2RlcmVxXygxNCkKKyAgfQor
fSwgUmVhY3RXaXRoQWRkb25zKTsKKworaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9u
JykgeworICBfYXNzaWduKFJlYWN0V2l0aEFkZG9uc1VNREVudHJ5Ll9fU0VDUkVUX0lOVEVSTkFM
U19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELCB7CisgICAgLy8gUmVhY3RDb21wb25l
bnRUcmVlSG9vayBzaG91bGQgbm90IGJlIGluY2x1ZGVkIGluIHByb2R1Y3Rpb24uCisgICAgUmVh
Y3RDb21wb25lbnRUcmVlSG9vazogX2RlcmVxXygxMikKKyAgfSk7Cit9CisKK21vZHVsZS5leHBv
cnRzID0gUmVhY3RXaXRoQWRkb25zVU1ERW50cnk7Cit9LHsiMTIiOjEyLCIxNCI6MTQsIjMxIjoz
MSwiNDkiOjQ5fV0sMzM6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisg
KiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBC
U0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICog
b2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUg
c2FtZSBkaXJlY3RvcnkuCisgKgorICogCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgY2Fu
RGVmaW5lUHJvcGVydHkgPSBmYWxzZTsKK2lmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlv
bicpIHsKKyAgdHJ5IHsKKyAgICAvLyAkRmxvd0ZpeE1lIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNl
Ym9vay9mbG93L2lzc3Vlcy8yODUKKyAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sICd4Jywg
eyBnZXQ6IGZ1bmN0aW9uICgpIHt9IH0pOworICAgIGNhbkRlZmluZVByb3BlcnR5ID0gdHJ1ZTsK
KyAgfSBjYXRjaCAoeCkgeworICAgIC8vIElFIHdpbGwgZmFpbCBvbiBkZWZpbmVQcm9wZXJ0eQor
ICB9Cit9CisKK21vZHVsZS5leHBvcnRzID0gY2FuRGVmaW5lUHJvcGVydHk7Cit9LHt9XSwzNDpb
ZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisoZnVuY3Rpb24gKHByb2Nlc3Mpewor
LyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy
IHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFu
dAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9w
cm9kSW52YXJpYW50ID0gX2RlcmVxXygzOCk7CisKK3ZhciBSZWFjdFByb3BUeXBlTG9jYXRpb25O
YW1lcyA9IF9kZXJlcV8oMjIpOwordmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gX2RlcmVxXygy
NCk7CisKK3ZhciBpbnZhcmlhbnQgPSBfZGVyZXFfKDQ2KTsKK3ZhciB3YXJuaW5nID0gX2RlcmVx
Xyg0OCk7CisKK3ZhciBSZWFjdENvbXBvbmVudFRyZWVIb29rOworCitpZiAodHlwZW9mIHByb2Nl
c3MgIT09ICd1bmRlZmluZWQnICYmIHByb2Nlc3MuZW52ICYmICJkZXZlbG9wbWVudCIgPT09ICd0
ZXN0JykgeworICAvLyBUZW1wb3JhcnkgaGFjay4KKyAgLy8gSW5saW5lIHJlcXVpcmVzIGRvbid0
IHdvcmsgd2VsbCB3aXRoIEplc3Q6CisgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9y
ZWFjdC9pc3N1ZXMvNzI0MAorICAvLyBSZW1vdmUgdGhlIGlubGluZSByZXF1aXJlcyB3aGVuIHdl
IGRvbid0IG5lZWQgdGhlbSBhbnltb3JlOgorICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJv
b2svcmVhY3QvcHVsbC83MTc4CisgIFJlYWN0Q29tcG9uZW50VHJlZUhvb2sgPSBfZGVyZXFfKDEy
KTsKK30KKwordmFyIGxvZ2dlZFR5cGVGYWlsdXJlcyA9IHt9OworCisvKioKKyAqIEFzc2VydCB0
aGF0IHRoZSB2YWx1ZXMgbWF0Y2ggd2l0aCB0aGUgdHlwZSBzcGVjcy4KKyAqIEVycm9yIG1lc3Nh
Z2VzIGFyZSBtZW1vcml6ZWQgYW5kIHdpbGwgb25seSBiZSBzaG93biBvbmNlLgorICoKKyAqIEBw
YXJhbSB7b2JqZWN0fSB0eXBlU3BlY3MgTWFwIG9mIG5hbWUgdG8gYSBSZWFjdFByb3BUeXBlCisg
KiBAcGFyYW0ge29iamVjdH0gdmFsdWVzIFJ1bnRpbWUgdmFsdWVzIHRoYXQgbmVlZCB0byBiZSB0
eXBlLWNoZWNrZWQKKyAqIEBwYXJhbSB7c3RyaW5nfSBsb2NhdGlvbiBlLmcuICJwcm9wIiwgImNv
bnRleHQiLCAiY2hpbGQgY29udGV4dCIKKyAqIEBwYXJhbSB7c3RyaW5nfSBjb21wb25lbnROYW1l
IE5hbWUgb2YgdGhlIGNvbXBvbmVudCBmb3IgZXJyb3IgbWVzc2FnZXMuCisgKiBAcGFyYW0gez9v
YmplY3R9IGVsZW1lbnQgVGhlIFJlYWN0IGVsZW1lbnQgdGhhdCBpcyBiZWluZyB0eXBlLWNoZWNr
ZWQKKyAqIEBwYXJhbSB7P251bWJlcn0gZGVidWdJRCBUaGUgUmVhY3QgY29tcG9uZW50IGluc3Rh
bmNlIHRoYXQgaXMgYmVpbmcgdHlwZS1jaGVja2VkCisgKiBAcHJpdmF0ZQorICovCitmdW5jdGlv
biBjaGVja1JlYWN0VHlwZVNwZWModHlwZVNwZWNzLCB2YWx1ZXMsIGxvY2F0aW9uLCBjb21wb25l
bnROYW1lLCBlbGVtZW50LCBkZWJ1Z0lEKSB7CisgIGZvciAodmFyIHR5cGVTcGVjTmFtZSBpbiB0
eXBlU3BlY3MpIHsKKyAgICBpZiAodHlwZVNwZWNzLmhhc093blByb3BlcnR5KHR5cGVTcGVjTmFt
ZSkpIHsKKyAgICAgIHZhciBlcnJvcjsKKyAgICAgIC8vIFByb3AgdHlwZSB2YWxpZGF0aW9uIG1h
eSB0aHJvdy4gSW4gY2FzZSB0aGV5IGRvLCB3ZSBkb24ndCB3YW50IHRvCisgICAgICAvLyBmYWls
IHRoZSByZW5kZXIgcGhhc2Ugd2hlcmUgaXQgZGlkbid0IGZhaWwgYmVmb3JlLiBTbyB3ZSBsb2cg
aXQuCisgICAgICAvLyBBZnRlciB0aGVzZSBoYXZlIGJlZW4gY2xlYW5lZCB1cCwgd2UnbGwgbGV0
IHRoZW0gdGhyb3cuCisgICAgICB0cnkgeworICAgICAgICAvLyBUaGlzIGlzIGludGVudGlvbmFs
bHkgYW4gaW52YXJpYW50IHRoYXQgZ2V0cyBjYXVnaHQuIEl0J3MgdGhlIHNhbWUKKyAgICAgICAg
Ly8gYmVoYXZpb3IgYXMgd2l0aG91dCB0aGlzIHN0YXRlbWVudCBleGNlcHQgd2l0aCBhIGJldHRl
ciBtZXNzYWdlLgorICAgICAgICAhKHR5cGVvZiB0eXBlU3BlY3NbdHlwZVNwZWNOYW1lXSA9PT0g
J2Z1bmN0aW9uJykgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQo
ZmFsc2UsICclczogJXMgdHlwZSBgJXNgIGlzIGludmFsaWQ7IGl0IG11c3QgYmUgYSBmdW5jdGlv
biwgdXN1YWxseSBmcm9tIFJlYWN0LlByb3BUeXBlcy4nLCBjb21wb25lbnROYW1lIHx8ICdSZWFj
dCBjbGFzcycsIFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzW2xvY2F0aW9uXSwgdHlwZVNwZWNO
YW1lKSA6IF9wcm9kSW52YXJpYW50KCc4NCcsIGNvbXBvbmVudE5hbWUgfHwgJ1JlYWN0IGNsYXNz
JywgUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXNbbG9jYXRpb25dLCB0eXBlU3BlY05hbWUpIDog
dm9pZCAwOworICAgICAgICBlcnJvciA9IHR5cGVTcGVjc1t0eXBlU3BlY05hbWVdKHZhbHVlcywg
dHlwZVNwZWNOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgbnVsbCwgUmVhY3RQcm9wVHlw
ZXNTZWNyZXQpOworICAgICAgfSBjYXRjaCAoZXgpIHsKKyAgICAgICAgZXJyb3IgPSBleDsKKyAg
ICAgIH0KKyAgICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIWVy
cm9yIHx8IGVycm9yIGluc3RhbmNlb2YgRXJyb3IsICclczogdHlwZSBzcGVjaWZpY2F0aW9uIG9m
ICVzIGAlc2AgaXMgaW52YWxpZDsgdGhlIHR5cGUgY2hlY2tlciAnICsgJ2Z1bmN0aW9uIG11c3Qg
cmV0dXJuIGBudWxsYCBvciBhbiBgRXJyb3JgIGJ1dCByZXR1cm5lZCBhICVzLiAnICsgJ1lvdSBt
YXkgaGF2ZSBmb3Jnb3R0ZW4gdG8gcGFzcyBhbiBhcmd1bWVudCB0byB0aGUgdHlwZSBjaGVja2Vy
ICcgKyAnY3JlYXRvciAoYXJyYXlPZiwgaW5zdGFuY2VPZiwgb2JqZWN0T2YsIG9uZU9mLCBvbmVP
ZlR5cGUsIGFuZCAnICsgJ3NoYXBlIGFsbCByZXF1aXJlIGFuIGFyZ3VtZW50KS4nLCBjb21wb25l
bnROYW1lIHx8ICdSZWFjdCBjbGFzcycsIFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzW2xvY2F0
aW9uXSwgdHlwZVNwZWNOYW1lLCB0eXBlb2YgZXJyb3IpIDogdm9pZCAwOworICAgICAgaWYgKGVy
cm9yIGluc3RhbmNlb2YgRXJyb3IgJiYgIShlcnJvci5tZXNzYWdlIGluIGxvZ2dlZFR5cGVGYWls
dXJlcykpIHsKKyAgICAgICAgLy8gT25seSBtb25pdG9yIHRoaXMgZmFpbHVyZSBvbmNlIGJlY2F1
c2UgdGhlcmUgdGVuZHMgdG8gYmUgYSBsb3Qgb2YgdGhlCisgICAgICAgIC8vIHNhbWUgZXJyb3Iu
CisgICAgICAgIGxvZ2dlZFR5cGVGYWlsdXJlc1tlcnJvci5tZXNzYWdlXSA9IHRydWU7CisKKyAg
ICAgICAgdmFyIGNvbXBvbmVudFN0YWNrSW5mbyA9ICcnOworCisgICAgICAgIGlmICgiZGV2ZWxv
cG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICAgICBpZiAoIVJlYWN0Q29tcG9uZW50
VHJlZUhvb2spIHsKKyAgICAgICAgICAgIFJlYWN0Q29tcG9uZW50VHJlZUhvb2sgPSBfZGVyZXFf
KDEyKTsKKyAgICAgICAgICB9CisgICAgICAgICAgaWYgKGRlYnVnSUQgIT09IG51bGwpIHsKKyAg
ICAgICAgICAgIGNvbXBvbmVudFN0YWNrSW5mbyA9IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0
U3RhY2tBZGRlbmR1bUJ5SUQoZGVidWdJRCk7CisgICAgICAgICAgfSBlbHNlIGlmIChlbGVtZW50
ICE9PSBudWxsKSB7CisgICAgICAgICAgICBjb21wb25lbnRTdGFja0luZm8gPSBSZWFjdENvbXBv
bmVudFRyZWVIb29rLmdldEN1cnJlbnRTdGFja0FkZGVuZHVtKGVsZW1lbnQpOworICAgICAgICAg
IH0KKyAgICAgICAgfQorCisgICAgICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/
IHdhcm5pbmcoZmFsc2UsICdGYWlsZWQgJXMgdHlwZTogJXMlcycsIGxvY2F0aW9uLCBlcnJvci5t
ZXNzYWdlLCBjb21wb25lbnRTdGFja0luZm8pIDogdm9pZCAwOworICAgICAgfQorICAgIH0KKyAg
fQorfQorCittb2R1bGUuZXhwb3J0cyA9IGNoZWNrUmVhY3RUeXBlU3BlYzsKK30pLmNhbGwodGhp
cyx1bmRlZmluZWQpCit9LHsiMTIiOjEyLCIyMiI6MjIsIjI0IjoyNCwiMzgiOjM4LCI0NiI6NDYs
IjQ4Ijo0OH1dLDM1OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKyhmdW5jdGlv
biAocHJvY2Vzcyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJ
bmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElD
RU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUg
UEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiAKKyAqLworCisndXNl
IHN0cmljdCc7CisKK3ZhciBLZXlFc2NhcGVVdGlscyA9IF9kZXJlcV8oMik7Cit2YXIgdHJhdmVy
c2VBbGxDaGlsZHJlbiA9IF9kZXJlcV8oNDApOwordmFyIHdhcm5pbmcgPSBfZGVyZXFfKDQ4KTsK
KwordmFyIFJlYWN0Q29tcG9uZW50VHJlZUhvb2s7CisKK2lmICh0eXBlb2YgcHJvY2VzcyAhPT0g
J3VuZGVmaW5lZCcgJiYgcHJvY2Vzcy5lbnYgJiYgImRldmVsb3BtZW50IiA9PT0gJ3Rlc3QnKSB7
CisgIC8vIFRlbXBvcmFyeSBoYWNrLgorICAvLyBJbmxpbmUgcmVxdWlyZXMgZG9uJ3Qgd29yayB3
ZWxsIHdpdGggSmVzdDoKKyAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lz
c3Vlcy83MjQwCisgIC8vIFJlbW92ZSB0aGUgaW5saW5lIHJlcXVpcmVzIHdoZW4gd2UgZG9uJ3Qg
bmVlZCB0aGVtIGFueW1vcmU6CisgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFj
dC9wdWxsLzcxNzgKKyAgUmVhY3RDb21wb25lbnRUcmVlSG9vayA9IF9kZXJlcV8oMTIpOworfQor
CisvKioKKyAqIEBwYXJhbSB7ZnVuY3Rpb259IHRyYXZlcnNlQ29udGV4dCBDb250ZXh0IHBhc3Nl
ZCB0aHJvdWdoIHRyYXZlcnNhbC4KKyAqIEBwYXJhbSB7P1JlYWN0Q29tcG9uZW50fSBjaGlsZCBS
ZWFjdCBjaGlsZCBjb21wb25lbnQuCisgKiBAcGFyYW0geyFzdHJpbmd9IG5hbWUgU3RyaW5nIG5h
bWUgb2Yga2V5IHBhdGggdG8gY2hpbGQuCisgKiBAcGFyYW0ge251bWJlcj19IHNlbGZEZWJ1Z0lE
IE9wdGlvbmFsIGRlYnVnSUQgb2YgdGhlIGN1cnJlbnQgaW50ZXJuYWwgaW5zdGFuY2UuCisgKi8K
K2Z1bmN0aW9uIGZsYXR0ZW5TaW5nbGVDaGlsZEludG9Db250ZXh0KHRyYXZlcnNlQ29udGV4dCwg
Y2hpbGQsIG5hbWUsIHNlbGZEZWJ1Z0lEKSB7CisgIC8vIFdlIGZvdW5kIGEgY29tcG9uZW50IGlu
c3RhbmNlLgorICBpZiAodHJhdmVyc2VDb250ZXh0ICYmIHR5cGVvZiB0cmF2ZXJzZUNvbnRleHQg
PT09ICdvYmplY3QnKSB7CisgICAgdmFyIHJlc3VsdCA9IHRyYXZlcnNlQ29udGV4dDsKKyAgICB2
YXIga2V5VW5pcXVlID0gcmVzdWx0W25hbWVdID09PSB1bmRlZmluZWQ7CisgICAgaWYgKCJkZXZl
bG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgaWYgKCFSZWFjdENvbXBvbmVudFRy
ZWVIb29rKSB7CisgICAgICAgIFJlYWN0Q29tcG9uZW50VHJlZUhvb2sgPSBfZGVyZXFfKDEyKTsK
KyAgICAgIH0KKyAgICAgIGlmICgha2V5VW5pcXVlKSB7CisgICAgICAgICJkZXZlbG9wbWVudCIg
IT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdmbGF0dGVuQ2hpbGRyZW4oLi4uKTog
RW5jb3VudGVyZWQgdHdvIGNoaWxkcmVuIHdpdGggdGhlIHNhbWUga2V5LCAnICsgJ2Alc2AuIENo
aWxkIGtleXMgbXVzdCBiZSB1bmlxdWU7IHdoZW4gdHdvIGNoaWxkcmVuIHNoYXJlIGEga2V5LCBv
bmx5ICcgKyAndGhlIGZpcnN0IGNoaWxkIHdpbGwgYmUgdXNlZC4lcycsIEtleUVzY2FwZVV0aWxz
LnVuZXNjYXBlKG5hbWUpLCBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldFN0YWNrQWRkZW5kdW1C
eUlEKHNlbGZEZWJ1Z0lEKSkgOiB2b2lkIDA7CisgICAgICB9CisgICAgfQorICAgIGlmIChrZXlV
bmlxdWUgJiYgY2hpbGQgIT0gbnVsbCkgeworICAgICAgcmVzdWx0W25hbWVdID0gY2hpbGQ7Cisg
ICAgfQorICB9Cit9CisKKy8qKgorICogRmxhdHRlbnMgY2hpbGRyZW4gdGhhdCBhcmUgdHlwaWNh
bGx5IHNwZWNpZmllZCBhcyBgcHJvcHMuY2hpbGRyZW5gLiBBbnkgbnVsbAorICogY2hpbGRyZW4g
d2lsbCBub3QgYmUgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdGluZyBvYmplY3QuCisgKiBAcmV0dXJu
IHshb2JqZWN0fSBmbGF0dGVuZWQgY2hpbGRyZW4ga2V5ZWQgYnkgbmFtZS4KKyAqLworZnVuY3Rp
b24gZmxhdHRlbkNoaWxkcmVuKGNoaWxkcmVuLCBzZWxmRGVidWdJRCkgeworICBpZiAoY2hpbGRy
ZW4gPT0gbnVsbCkgeworICAgIHJldHVybiBjaGlsZHJlbjsKKyAgfQorICB2YXIgcmVzdWx0ID0g
e307CisKKyAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgIHRyYXZl
cnNlQWxsQ2hpbGRyZW4oY2hpbGRyZW4sIGZ1bmN0aW9uICh0cmF2ZXJzZUNvbnRleHQsIGNoaWxk
LCBuYW1lKSB7CisgICAgICByZXR1cm4gZmxhdHRlblNpbmdsZUNoaWxkSW50b0NvbnRleHQodHJh
dmVyc2VDb250ZXh0LCBjaGlsZCwgbmFtZSwgc2VsZkRlYnVnSUQpOworICAgIH0sIHJlc3VsdCk7
CisgIH0gZWxzZSB7CisgICAgdHJhdmVyc2VBbGxDaGlsZHJlbihjaGlsZHJlbiwgZmxhdHRlblNp
bmdsZUNoaWxkSW50b0NvbnRleHQsIHJlc3VsdCk7CisgIH0KKyAgcmV0dXJuIHJlc3VsdDsKK30K
KworbW9kdWxlLmV4cG9ydHMgPSBmbGF0dGVuQ2hpbGRyZW47Cit9KS5jYWxsKHRoaXMsdW5kZWZp
bmVkKQorfSx7IjEyIjoxMiwiMiI6MiwiNDAiOjQwLCI0OCI6NDh9XSwzNjpbZnVuY3Rpb24oX2Rl
cmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZh
Y2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNl
IGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRo
ZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0
cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiAKKyAq
LworCisndXNlIHN0cmljdCc7CisKKy8qIGdsb2JhbCBTeW1ib2wgKi8KKwordmFyIElURVJBVE9S
X1NZTUJPTCA9IHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgU3ltYm9sLml0ZXJhdG9y
OwordmFyIEZBVVhfSVRFUkFUT1JfU1lNQk9MID0gJ0BAaXRlcmF0b3InOyAvLyBCZWZvcmUgU3lt
Ym9sIHNwZWMuCisKKy8qKgorICogUmV0dXJucyB0aGUgaXRlcmF0b3IgbWV0aG9kIGZ1bmN0aW9u
IGNvbnRhaW5lZCBvbiB0aGUgaXRlcmFibGUgb2JqZWN0LgorICoKKyAqIEJlIHN1cmUgdG8gaW52
b2tlIHRoZSBmdW5jdGlvbiB3aXRoIHRoZSBpdGVyYWJsZSBhcyBjb250ZXh0OgorICoKKyAqICAg
ICB2YXIgaXRlcmF0b3JGbiA9IGdldEl0ZXJhdG9yRm4obXlJdGVyYWJsZSk7CisgKiAgICAgaWYg
KGl0ZXJhdG9yRm4pIHsKKyAqICAgICAgIHZhciBpdGVyYXRvciA9IGl0ZXJhdG9yRm4uY2FsbCht
eUl0ZXJhYmxlKTsKKyAqICAgICAgIC4uLgorICogICAgIH0KKyAqCisgKiBAcGFyYW0gez9vYmpl
Y3R9IG1heWJlSXRlcmFibGUKKyAqIEByZXR1cm4gez9mdW5jdGlvbn0KKyAqLworZnVuY3Rpb24g
Z2V0SXRlcmF0b3JGbihtYXliZUl0ZXJhYmxlKSB7CisgIHZhciBpdGVyYXRvckZuID0gbWF5YmVJ
dGVyYWJsZSAmJiAoSVRFUkFUT1JfU1lNQk9MICYmIG1heWJlSXRlcmFibGVbSVRFUkFUT1JfU1lN
Qk9MXSB8fCBtYXliZUl0ZXJhYmxlW0ZBVVhfSVRFUkFUT1JfU1lNQk9MXSk7CisgIGlmICh0eXBl
b2YgaXRlcmF0b3JGbiA9PT0gJ2Z1bmN0aW9uJykgeworICAgIHJldHVybiBpdGVyYXRvckZuOwor
ICB9Cit9CisKK21vZHVsZS5leHBvcnRzID0gZ2V0SXRlcmF0b3JGbjsKK30se31dLDM3OltmdW5j
dGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJl
c2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhp
cyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91
bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMg
c291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2Fu
IGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoK
KyAqLworJ3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJbnZhcmlhbnQgPSBfZGVyZXFfKDM4KTsK
KwordmFyIFJlYWN0RWxlbWVudCA9IF9kZXJlcV8oMTYpOworCit2YXIgaW52YXJpYW50ID0gX2Rl
cmVxXyg0Nik7CisKKy8qKgorICogUmV0dXJucyB0aGUgZmlyc3QgY2hpbGQgaW4gYSBjb2xsZWN0
aW9uIG9mIGNoaWxkcmVuIGFuZCB2ZXJpZmllcyB0aGF0IHRoZXJlCisgKiBpcyBvbmx5IG9uZSBj
aGlsZCBpbiB0aGUgY29sbGVjdGlvbi4KKyAqCisgKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRo
dWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3QuY2hpbGRyZW4ub25seQor
ICoKKyAqIFRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9mIHRoaXMgZnVuY3Rpb24gYXNzdW1l
cyB0aGF0IGEgc2luZ2xlIGNoaWxkIGdldHMKKyAqIHBhc3NlZCB3aXRob3V0IGEgd3JhcHBlciwg
YnV0IHRoZSBwdXJwb3NlIG9mIHRoaXMgaGVscGVyIGZ1bmN0aW9uIGlzIHRvCisgKiBhYnN0cmFj
dCBhd2F5IHRoZSBwYXJ0aWN1bGFyIHN0cnVjdHVyZSBvZiBjaGlsZHJlbi4KKyAqCisgKiBAcGFy
YW0gez9vYmplY3R9IGNoaWxkcmVuIENoaWxkIGNvbGxlY3Rpb24gc3RydWN0dXJlLgorICogQHJl
dHVybiB7UmVhY3RFbGVtZW50fSBUaGUgZmlyc3QgYW5kIG9ubHkgYFJlYWN0RWxlbWVudGAgY29u
dGFpbmVkIGluIHRoZQorICogc3RydWN0dXJlLgorICovCitmdW5jdGlvbiBvbmx5Q2hpbGQoY2hp
bGRyZW4pIHsKKyAgIVJlYWN0RWxlbWVudC5pc1ZhbGlkRWxlbWVudChjaGlsZHJlbikgPyAiZGV2
ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdC5DaGls
ZHJlbi5vbmx5IGV4cGVjdGVkIHRvIHJlY2VpdmUgYSBzaW5nbGUgUmVhY3QgZWxlbWVudCBjaGls
ZC4nKSA6IF9wcm9kSW52YXJpYW50KCcxNDMnKSA6IHZvaWQgMDsKKyAgcmV0dXJuIGNoaWxkcmVu
OworfQorCittb2R1bGUuZXhwb3J0cyA9IG9ubHlDaGlsZDsKK30seyIxNiI6MTYsIjM4IjozOCwi
NDYiOjQ2fV0sMzg6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBD
b3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUg
QlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAq
IG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhl
IHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIAorICovCisndXNlIHN0cmljdCc7CisKKy8qKgorICog
V0FSTklORzogRE8gTk9UIG1hbnVhbGx5IHJlcXVpcmUgdGhpcyBtb2R1bGUuCisgKiBUaGlzIGlz
IGEgcmVwbGFjZW1lbnQgZm9yIGBpbnZhcmlhbnQoLi4uKWAgdXNlZCBieSB0aGUgZXJyb3IgY29k
ZSBzeXN0ZW0KKyAqIGFuZCB3aWxsIF9vbmx5XyBiZSByZXF1aXJlZCBieSB0aGUgY29ycmVzcG9u
ZGluZyBiYWJlbCBwYXNzLgorICogSXQgYWx3YXlzIHRocm93cy4KKyAqLworCitmdW5jdGlvbiBy
ZWFjdFByb2RJbnZhcmlhbnQoY29kZSkgeworICB2YXIgYXJnQ291bnQgPSBhcmd1bWVudHMubGVu
Z3RoIC0gMTsKKworICB2YXIgbWVzc2FnZSA9ICdNaW5pZmllZCBSZWFjdCBlcnJvciAjJyArIGNv
ZGUgKyAnOyB2aXNpdCAnICsgJ2h0dHA6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy9l
cnJvci1kZWNvZGVyLmh0bWw/aW52YXJpYW50PScgKyBjb2RlOworCisgIGZvciAodmFyIGFyZ0lk
eCA9IDA7IGFyZ0lkeCA8IGFyZ0NvdW50OyBhcmdJZHgrKykgeworICAgIG1lc3NhZ2UgKz0gJyZh
cmdzW109JyArIGVuY29kZVVSSUNvbXBvbmVudChhcmd1bWVudHNbYXJnSWR4ICsgMV0pOworICB9
CisKKyAgbWVzc2FnZSArPSAnIGZvciB0aGUgZnVsbCBtZXNzYWdlIG9yIHVzZSB0aGUgbm9uLW1p
bmlmaWVkIGRldiBlbnZpcm9ubWVudCcgKyAnIGZvciBmdWxsIGVycm9ycyBhbmQgYWRkaXRpb25h
bCBoZWxwZnVsIHdhcm5pbmdzLic7CisKKyAgdmFyIGVycm9yID0gbmV3IEVycm9yKG1lc3NhZ2Up
OworICBlcnJvci5uYW1lID0gJ0ludmFyaWFudCBWaW9sYXRpb24nOworICBlcnJvci5mcmFtZXNU
b1BvcCA9IDE7IC8vIHdlIGRvbid0IGNhcmUgYWJvdXQgcmVhY3RQcm9kSW52YXJpYW50J3Mgb3du
IGZyYW1lCisKKyAgdGhyb3cgZXJyb3I7Cit9CisKK21vZHVsZS5leHBvcnRzID0gcmVhY3RQcm9k
SW52YXJpYW50OworfSx7fV0sMzk6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpewor
LyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy
IHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFu
dAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIHNo
YWxsb3dFcXVhbCA9IF9kZXJlcV8oNDcpOworCisvKioKKyAqIERvZXMgYSBzaGFsbG93IGNvbXBh
cmlzb24gZm9yIHByb3BzIGFuZCBzdGF0ZS4KKyAqIFNlZSBSZWFjdENvbXBvbmVudFdpdGhQdXJl
UmVuZGVyTWl4aW4KKyAqIFNlZSBhbHNvIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0
L2RvY3Mvc2hhbGxvdy1jb21wYXJlLmh0bWwKKyAqLworZnVuY3Rpb24gc2hhbGxvd0NvbXBhcmUo
aW5zdGFuY2UsIG5leHRQcm9wcywgbmV4dFN0YXRlKSB7CisgIHJldHVybiAhc2hhbGxvd0VxdWFs
KGluc3RhbmNlLnByb3BzLCBuZXh0UHJvcHMpIHx8ICFzaGFsbG93RXF1YWwoaW5zdGFuY2Uuc3Rh
dGUsIG5leHRTdGF0ZSk7Cit9CisKK21vZHVsZS5leHBvcnRzID0gc2hhbGxvd0NvbXBhcmU7Cit9
LHsiNDciOjQ3fV0sNDA6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisg
KiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBC
U0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICog
b2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUg
c2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9wcm9kSW52
YXJpYW50ID0gX2RlcmVxXygzOCk7CisKK3ZhciBSZWFjdEN1cnJlbnRPd25lciA9IF9kZXJlcV8o
MTQpOwordmFyIFJFQUNUX0VMRU1FTlRfVFlQRSA9IF9kZXJlcV8oMTcpOworCit2YXIgZ2V0SXRl
cmF0b3JGbiA9IF9kZXJlcV8oMzYpOwordmFyIGludmFyaWFudCA9IF9kZXJlcV8oNDYpOwordmFy
IEtleUVzY2FwZVV0aWxzID0gX2RlcmVxXygyKTsKK3ZhciB3YXJuaW5nID0gX2RlcmVxXyg0OCk7
CisKK3ZhciBTRVBBUkFUT1IgPSAnLic7Cit2YXIgU1VCU0VQQVJBVE9SID0gJzonOworCisvKioK
KyAqIFRoaXMgaXMgaW5saW5lZCBmcm9tIFJlYWN0RWxlbWVudCBzaW5jZSB0aGlzIGZpbGUgaXMg
c2hhcmVkIGJldHdlZW4KKyAqIGlzb21vcnBoaWMgYW5kIHJlbmRlcmVycy4gV2UgY291bGQgZXh0
cmFjdCB0aGlzIHRvIGEKKyAqCisgKi8KKworLyoqCisgKiBUT0RPOiBUZXN0IHRoYXQgYSBzaW5n
bGUgY2hpbGQgYW5kIGFuIGFycmF5IHdpdGggb25lIGl0ZW0gaGF2ZSB0aGUgc2FtZSBrZXkKKyAq
IHBhdHRlcm4uCisgKi8KKwordmFyIGRpZFdhcm5BYm91dE1hcHMgPSBmYWxzZTsKKworLyoqCisg
KiBHZW5lcmF0ZSBhIGtleSBzdHJpbmcgdGhhdCBpZGVudGlmaWVzIGEgY29tcG9uZW50IHdpdGhp
biBhIHNldC4KKyAqCisgKiBAcGFyYW0geyp9IGNvbXBvbmVudCBBIGNvbXBvbmVudCB0aGF0IGNv
dWxkIGNvbnRhaW4gYSBtYW51YWwga2V5LgorICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IEluZGV4
IHRoYXQgaXMgdXNlZCBpZiBhIG1hbnVhbCBrZXkgaXMgbm90IHByb3ZpZGVkLgorICogQHJldHVy
biB7c3RyaW5nfQorICovCitmdW5jdGlvbiBnZXRDb21wb25lbnRLZXkoY29tcG9uZW50LCBpbmRl
eCkgeworICAvLyBEbyBzb21lIHR5cGVjaGVja2luZyBoZXJlIHNpbmNlIHdlIGNhbGwgdGhpcyBi
bGluZGx5LiBXZSB3YW50IHRvIGVuc3VyZQorICAvLyB0aGF0IHdlIGRvbid0IGJsb2NrIHBvdGVu
dGlhbCBmdXR1cmUgRVMgQVBJcy4KKyAgaWYgKGNvbXBvbmVudCAmJiB0eXBlb2YgY29tcG9uZW50
ID09PSAnb2JqZWN0JyAmJiBjb21wb25lbnQua2V5ICE9IG51bGwpIHsKKyAgICAvLyBFeHBsaWNp
dCBrZXkKKyAgICByZXR1cm4gS2V5RXNjYXBlVXRpbHMuZXNjYXBlKGNvbXBvbmVudC5rZXkpOwor
ICB9CisgIC8vIEltcGxpY2l0IGtleSBkZXRlcm1pbmVkIGJ5IHRoZSBpbmRleCBpbiB0aGUgc2V0
CisgIHJldHVybiBpbmRleC50b1N0cmluZygzNik7Cit9CisKKy8qKgorICogQHBhcmFtIHs/Kn0g
Y2hpbGRyZW4gQ2hpbGRyZW4gdHJlZSBjb250YWluZXIuCisgKiBAcGFyYW0geyFzdHJpbmd9IG5h
bWVTb0ZhciBOYW1lIG9mIHRoZSBrZXkgcGF0aCBzbyBmYXIuCisgKiBAcGFyYW0geyFmdW5jdGlv
bn0gY2FsbGJhY2sgQ2FsbGJhY2sgdG8gaW52b2tlIHdpdGggZWFjaCBjaGlsZCBmb3VuZC4KKyAq
IEBwYXJhbSB7Pyp9IHRyYXZlcnNlQ29udGV4dCBVc2VkIHRvIHBhc3MgaW5mb3JtYXRpb24gdGhy
b3VnaG91dCB0aGUgdHJhdmVyc2FsCisgKiBwcm9jZXNzLgorICogQHJldHVybiB7IW51bWJlcn0g
VGhlIG51bWJlciBvZiBjaGlsZHJlbiBpbiB0aGlzIHN1YnRyZWUuCisgKi8KK2Z1bmN0aW9uIHRy
YXZlcnNlQWxsQ2hpbGRyZW5JbXBsKGNoaWxkcmVuLCBuYW1lU29GYXIsIGNhbGxiYWNrLCB0cmF2
ZXJzZUNvbnRleHQpIHsKKyAgdmFyIHR5cGUgPSB0eXBlb2YgY2hpbGRyZW47CisKKyAgaWYgKHR5
cGUgPT09ICd1bmRlZmluZWQnIHx8IHR5cGUgPT09ICdib29sZWFuJykgeworICAgIC8vIEFsbCBv
ZiB0aGUgYWJvdmUgYXJlIHBlcmNlaXZlZCBhcyBudWxsLgorICAgIGNoaWxkcmVuID0gbnVsbDsK
KyAgfQorCisgIGlmIChjaGlsZHJlbiA9PT0gbnVsbCB8fCB0eXBlID09PSAnc3RyaW5nJyB8fCB0
eXBlID09PSAnbnVtYmVyJyB8fAorICAvLyBUaGUgZm9sbG93aW5nIGlzIGlubGluZWQgZnJvbSBS
ZWFjdEVsZW1lbnQuIFRoaXMgbWVhbnMgd2UgY2FuIG9wdGltaXplCisgIC8vIHNvbWUgY2hlY2tz
LiBSZWFjdCBGaWJlciBhbHNvIGlubGluZXMgdGhpcyBsb2dpYyBmb3Igc2ltaWxhciBwdXJwb3Nl
cy4KKyAgdHlwZSA9PT0gJ29iamVjdCcgJiYgY2hpbGRyZW4uJCR0eXBlb2YgPT09IFJFQUNUX0VM
RU1FTlRfVFlQRSkgeworICAgIGNhbGxiYWNrKHRyYXZlcnNlQ29udGV4dCwgY2hpbGRyZW4sCisg
ICAgLy8gSWYgaXQncyB0aGUgb25seSBjaGlsZCwgdHJlYXQgdGhlIG5hbWUgYXMgaWYgaXQgd2Fz
IHdyYXBwZWQgaW4gYW4gYXJyYXkKKyAgICAvLyBzbyB0aGF0IGl0J3MgY29uc2lzdGVudCBpZiB0
aGUgbnVtYmVyIG9mIGNoaWxkcmVuIGdyb3dzLgorICAgIG5hbWVTb0ZhciA9PT0gJycgPyBTRVBB
UkFUT1IgKyBnZXRDb21wb25lbnRLZXkoY2hpbGRyZW4sIDApIDogbmFtZVNvRmFyKTsKKyAgICBy
ZXR1cm4gMTsKKyAgfQorCisgIHZhciBjaGlsZDsKKyAgdmFyIG5leHROYW1lOworICB2YXIgc3Vi
dHJlZUNvdW50ID0gMDsgLy8gQ291bnQgb2YgY2hpbGRyZW4gZm91bmQgaW4gdGhlIGN1cnJlbnQg
c3VidHJlZS4KKyAgdmFyIG5leHROYW1lUHJlZml4ID0gbmFtZVNvRmFyID09PSAnJyA/IFNFUEFS
QVRPUiA6IG5hbWVTb0ZhciArIFNVQlNFUEFSQVRPUjsKKworICBpZiAoQXJyYXkuaXNBcnJheShj
aGlsZHJlbikpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsr
KSB7CisgICAgICBjaGlsZCA9IGNoaWxkcmVuW2ldOworICAgICAgbmV4dE5hbWUgPSBuZXh0TmFt
ZVByZWZpeCArIGdldENvbXBvbmVudEtleShjaGlsZCwgaSk7CisgICAgICBzdWJ0cmVlQ291bnQg
Kz0gdHJhdmVyc2VBbGxDaGlsZHJlbkltcGwoY2hpbGQsIG5leHROYW1lLCBjYWxsYmFjaywgdHJh
dmVyc2VDb250ZXh0KTsKKyAgICB9CisgIH0gZWxzZSB7CisgICAgdmFyIGl0ZXJhdG9yRm4gPSBn
ZXRJdGVyYXRvckZuKGNoaWxkcmVuKTsKKyAgICBpZiAoaXRlcmF0b3JGbikgeworICAgICAgdmFy
IGl0ZXJhdG9yID0gaXRlcmF0b3JGbi5jYWxsKGNoaWxkcmVuKTsKKyAgICAgIHZhciBzdGVwOwor
ICAgICAgaWYgKGl0ZXJhdG9yRm4gIT09IGNoaWxkcmVuLmVudHJpZXMpIHsKKyAgICAgICAgdmFy
IGlpID0gMDsKKyAgICAgICAgd2hpbGUgKCEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkg
eworICAgICAgICAgIGNoaWxkID0gc3RlcC52YWx1ZTsKKyAgICAgICAgICBuZXh0TmFtZSA9IG5l
eHROYW1lUHJlZml4ICsgZ2V0Q29tcG9uZW50S2V5KGNoaWxkLCBpaSsrKTsKKyAgICAgICAgICBz
dWJ0cmVlQ291bnQgKz0gdHJhdmVyc2VBbGxDaGlsZHJlbkltcGwoY2hpbGQsIG5leHROYW1lLCBj
YWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KTsKKyAgICAgICAgfQorICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgICAgIHZh
ciBtYXBzQXNDaGlsZHJlbkFkZGVuZHVtID0gJyc7CisgICAgICAgICAgaWYgKFJlYWN0Q3VycmVu
dE93bmVyLmN1cnJlbnQpIHsKKyAgICAgICAgICAgIHZhciBtYXBzQXNDaGlsZHJlbk93bmVyTmFt
ZSA9IFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQuZ2V0TmFtZSgpOworICAgICAgICAgICAgaWYg
KG1hcHNBc0NoaWxkcmVuT3duZXJOYW1lKSB7CisgICAgICAgICAgICAgIG1hcHNBc0NoaWxkcmVu
QWRkZW5kdW0gPSAnIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mIGAnICsgbWFwc0FzQ2hpbGRy
ZW5Pd25lck5hbWUgKyAnYC4nOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAg
ICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGRpZFdhcm5BYm91dE1h
cHMsICdVc2luZyBNYXBzIGFzIGNoaWxkcmVuIGlzIG5vdCB5ZXQgZnVsbHkgc3VwcG9ydGVkLiBJ
dCBpcyBhbiAnICsgJ2V4cGVyaW1lbnRhbCBmZWF0dXJlIHRoYXQgbWlnaHQgYmUgcmVtb3ZlZC4g
Q29udmVydCBpdCB0byBhICcgKyAnc2VxdWVuY2UgLyBpdGVyYWJsZSBvZiBrZXllZCBSZWFjdEVs
ZW1lbnRzIGluc3RlYWQuJXMnLCBtYXBzQXNDaGlsZHJlbkFkZGVuZHVtKSA6IHZvaWQgMDsKKyAg
ICAgICAgICBkaWRXYXJuQWJvdXRNYXBzID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICAvLyBJ
dGVyYXRvciB3aWxsIHByb3ZpZGUgZW50cnkgW2ssdl0gdHVwbGVzIHJhdGhlciB0aGFuIHZhbHVl
cy4KKyAgICAgICAgd2hpbGUgKCEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkgeworICAg
ICAgICAgIHZhciBlbnRyeSA9IHN0ZXAudmFsdWU7CisgICAgICAgICAgaWYgKGVudHJ5KSB7Cisg
ICAgICAgICAgICBjaGlsZCA9IGVudHJ5WzFdOworICAgICAgICAgICAgbmV4dE5hbWUgPSBuZXh0
TmFtZVByZWZpeCArIEtleUVzY2FwZVV0aWxzLmVzY2FwZShlbnRyeVswXSkgKyBTVUJTRVBBUkFU
T1IgKyBnZXRDb21wb25lbnRLZXkoY2hpbGQsIDApOworICAgICAgICAgICAgc3VidHJlZUNvdW50
ICs9IHRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBsKGNoaWxkLCBuZXh0TmFtZSwgY2FsbGJhY2ssIHRy
YXZlcnNlQ29udGV4dCk7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSBl
bHNlIGlmICh0eXBlID09PSAnb2JqZWN0JykgeworICAgICAgdmFyIGFkZGVuZHVtID0gJyc7Cisg
ICAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAgIGFkZGVu
ZHVtID0gJyBJZiB5b3UgbWVhbnQgdG8gcmVuZGVyIGEgY29sbGVjdGlvbiBvZiBjaGlsZHJlbiwg
dXNlIGFuIGFycmF5ICcgKyAnaW5zdGVhZCBvciB3cmFwIHRoZSBvYmplY3QgdXNpbmcgY3JlYXRl
RnJhZ21lbnQob2JqZWN0KSBmcm9tIHRoZSAnICsgJ1JlYWN0IGFkZC1vbnMuJzsKKyAgICAgICAg
aWYgKGNoaWxkcmVuLl9pc1JlYWN0RWxlbWVudCkgeworICAgICAgICAgIGFkZGVuZHVtID0gJyBJ
dCBsb29rcyBsaWtlIHlvdVwncmUgdXNpbmcgYW4gZWxlbWVudCBjcmVhdGVkIGJ5IGEgZGlmZmVy
ZW50ICcgKyAndmVyc2lvbiBvZiBSZWFjdC4gTWFrZSBzdXJlIHRvIHVzZSBvbmx5IG9uZSBjb3B5
IG9mIFJlYWN0Lic7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFJlYWN0Q3VycmVudE93bmVyLmN1
cnJlbnQpIHsKKyAgICAgICAgICB2YXIgbmFtZSA9IFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQu
Z2V0TmFtZSgpOworICAgICAgICAgIGlmIChuYW1lKSB7CisgICAgICAgICAgICBhZGRlbmR1bSAr
PSAnIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mIGAnICsgbmFtZSArICdgLic7CisgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgICB2YXIgY2hpbGRyZW5TdHJpbmcgPSBTdHJp
bmcoY2hpbGRyZW4pOworICAgICAgIWZhbHNlID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rp
b24nID8gaW52YXJpYW50KGZhbHNlLCAnT2JqZWN0cyBhcmUgbm90IHZhbGlkIGFzIGEgUmVhY3Qg
Y2hpbGQgKGZvdW5kOiAlcykuJXMnLCBjaGlsZHJlblN0cmluZyA9PT0gJ1tvYmplY3QgT2JqZWN0
XScgPyAnb2JqZWN0IHdpdGgga2V5cyB7JyArIE9iamVjdC5rZXlzKGNoaWxkcmVuKS5qb2luKCcs
ICcpICsgJ30nIDogY2hpbGRyZW5TdHJpbmcsIGFkZGVuZHVtKSA6IF9wcm9kSW52YXJpYW50KCcz
MScsIGNoaWxkcmVuU3RyaW5nID09PSAnW29iamVjdCBPYmplY3RdJyA/ICdvYmplY3Qgd2l0aCBr
ZXlzIHsnICsgT2JqZWN0LmtleXMoY2hpbGRyZW4pLmpvaW4oJywgJykgKyAnfScgOiBjaGlsZHJl
blN0cmluZywgYWRkZW5kdW0pIDogdm9pZCAwOworICAgIH0KKyAgfQorCisgIHJldHVybiBzdWJ0
cmVlQ291bnQ7Cit9CisKKy8qKgorICogVHJhdmVyc2VzIGNoaWxkcmVuIHRoYXQgYXJlIHR5cGlj
YWxseSBzcGVjaWZpZWQgYXMgYHByb3BzLmNoaWxkcmVuYCwgYnV0CisgKiBtaWdodCBhbHNvIGJl
IHNwZWNpZmllZCB0aHJvdWdoIGF0dHJpYnV0ZXM6CisgKgorICogLSBgdHJhdmVyc2VBbGxDaGls
ZHJlbih0aGlzLnByb3BzLmNoaWxkcmVuLCAuLi4pYAorICogLSBgdHJhdmVyc2VBbGxDaGlsZHJl
bih0aGlzLnByb3BzLmxlZnRQYW5lbENoaWxkcmVuLCAuLi4pYAorICoKKyAqIFRoZSBgdHJhdmVy
c2VDb250ZXh0YCBpcyBhbiBvcHRpb25hbCBhcmd1bWVudCB0aGF0IGlzIHBhc3NlZCB0aHJvdWdo
IHRoZQorICogZW50aXJlIHRyYXZlcnNhbC4gSXQgY2FuIGJlIHVzZWQgdG8gc3RvcmUgYWNjdW11
bGF0aW9ucyBvciBhbnl0aGluZyBlbHNlIHRoYXQKKyAqIHRoZSBjYWxsYmFjayBtaWdodCBmaW5k
IHJlbGV2YW50LgorICoKKyAqIEBwYXJhbSB7Pyp9IGNoaWxkcmVuIENoaWxkcmVuIHRyZWUgb2Jq
ZWN0LgorICogQHBhcmFtIHshZnVuY3Rpb259IGNhbGxiYWNrIFRvIGludm9rZSB1cG9uIHRyYXZl
cnNpbmcgZWFjaCBjaGlsZC4KKyAqIEBwYXJhbSB7Pyp9IHRyYXZlcnNlQ29udGV4dCBDb250ZXh0
IGZvciB0cmF2ZXJzYWwuCisgKiBAcmV0dXJuIHshbnVtYmVyfSBUaGUgbnVtYmVyIG9mIGNoaWxk
cmVuIGluIHRoaXMgc3VidHJlZS4KKyAqLworZnVuY3Rpb24gdHJhdmVyc2VBbGxDaGlsZHJlbihj
aGlsZHJlbiwgY2FsbGJhY2ssIHRyYXZlcnNlQ29udGV4dCkgeworICBpZiAoY2hpbGRyZW4gPT0g
bnVsbCkgeworICAgIHJldHVybiAwOworICB9CisKKyAgcmV0dXJuIHRyYXZlcnNlQWxsQ2hpbGRy
ZW5JbXBsKGNoaWxkcmVuLCAnJywgY2FsbGJhY2ssIHRyYXZlcnNlQ29udGV4dCk7Cit9CisKK21v
ZHVsZS5leHBvcnRzID0gdHJhdmVyc2VBbGxDaGlsZHJlbjsKK30seyIxNCI6MTQsIjE3IjoxNywi
MiI6MiwiMzYiOjM2LCIzOCI6MzgsIjQ2Ijo0NiwiNDgiOjQ4fV0sNDE6W2Z1bmN0aW9uKF9kZXJl
cV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNl
Ym9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBj
b2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUK
KyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJl
ZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQg
aW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKy8q
IGdsb2JhbCBoYXNPd25Qcm9wZXJ0eTp0cnVlICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9w
cm9kSW52YXJpYW50ID0gX2RlcmVxXygzOCksCisgICAgX2Fzc2lnbiA9IF9kZXJlcV8oNDkpOwor
Cit2YXIgaW52YXJpYW50ID0gX2RlcmVxXyg0Nik7Cit2YXIgaGFzT3duUHJvcGVydHkgPSB7fS5o
YXNPd25Qcm9wZXJ0eTsKKworZnVuY3Rpb24gc2hhbGxvd0NvcHkoeCkgeworICBpZiAoQXJyYXku
aXNBcnJheSh4KSkgeworICAgIHJldHVybiB4LmNvbmNhdCgpOworICB9IGVsc2UgaWYgKHggJiYg
dHlwZW9mIHggPT09ICdvYmplY3QnKSB7CisgICAgcmV0dXJuIF9hc3NpZ24obmV3IHguY29uc3Ry
dWN0b3IoKSwgeCk7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIHg7CisgIH0KK30KKwordmFyIENP
TU1BTkRfUFVTSCA9ICckcHVzaCc7Cit2YXIgQ09NTUFORF9VTlNISUZUID0gJyR1bnNoaWZ0JzsK
K3ZhciBDT01NQU5EX1NQTElDRSA9ICckc3BsaWNlJzsKK3ZhciBDT01NQU5EX1NFVCA9ICckc2V0
JzsKK3ZhciBDT01NQU5EX01FUkdFID0gJyRtZXJnZSc7Cit2YXIgQ09NTUFORF9BUFBMWSA9ICck
YXBwbHknOworCit2YXIgQUxMX0NPTU1BTkRTX0xJU1QgPSBbQ09NTUFORF9QVVNILCBDT01NQU5E
X1VOU0hJRlQsIENPTU1BTkRfU1BMSUNFLCBDT01NQU5EX1NFVCwgQ09NTUFORF9NRVJHRSwgQ09N
TUFORF9BUFBMWV07CisKK3ZhciBBTExfQ09NTUFORFNfU0VUID0ge307CisKK0FMTF9DT01NQU5E
U19MSVNULmZvckVhY2goZnVuY3Rpb24gKGNvbW1hbmQpIHsKKyAgQUxMX0NPTU1BTkRTX1NFVFtj
b21tYW5kXSA9IHRydWU7Cit9KTsKKworZnVuY3Rpb24gaW52YXJpYW50QXJyYXlDYXNlKHZhbHVl
LCBzcGVjLCBjb21tYW5kKSB7CisgICFBcnJheS5pc0FycmF5KHZhbHVlKSA/ICJkZXZlbG9wbWVu
dCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3VwZGF0ZSgpOiBleHBlY3Rl
ZCB0YXJnZXQgb2YgJXMgdG8gYmUgYW4gYXJyYXk7IGdvdCAlcy4nLCBjb21tYW5kLCB2YWx1ZSkg
OiBfcHJvZEludmFyaWFudCgnMScsIGNvbW1hbmQsIHZhbHVlKSA6IHZvaWQgMDsKKyAgdmFyIHNw
ZWNWYWx1ZSA9IHNwZWNbY29tbWFuZF07CisgICFBcnJheS5pc0FycmF5KHNwZWNWYWx1ZSkgPyAi
ZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICd1cGRhdGUo
KTogZXhwZWN0ZWQgc3BlYyBvZiAlcyB0byBiZSBhbiBhcnJheTsgZ290ICVzLiBEaWQgeW91IGZv
cmdldCB0byB3cmFwIHlvdXIgcGFyYW1ldGVyIGluIGFuIGFycmF5PycsIGNvbW1hbmQsIHNwZWNW
YWx1ZSkgOiBfcHJvZEludmFyaWFudCgnMicsIGNvbW1hbmQsIHNwZWNWYWx1ZSkgOiB2b2lkIDA7
Cit9CisKKy8qKgorICogUmV0dXJucyBhIHVwZGF0ZWQgc2hhbGxvdyBjb3B5IG9mIGFuIG9iamVj
dCB3aXRob3V0IG11dGF0aW5nIHRoZSBvcmlnaW5hbC4KKyAqIFNlZSBodHRwczovL2ZhY2Vib29r
LmdpdGh1Yi5pby9yZWFjdC9kb2NzL3VwZGF0ZS5odG1sIGZvciBkZXRhaWxzLgorICovCitmdW5j
dGlvbiB1cGRhdGUodmFsdWUsIHNwZWMpIHsKKyAgISh0eXBlb2Ygc3BlYyA9PT0gJ29iamVjdCcp
ID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAndXBk
YXRlKCk6IFlvdSBwcm92aWRlZCBhIGtleSBwYXRoIHRvIHVwZGF0ZSgpIHRoYXQgZGlkIG5vdCBj
b250YWluIG9uZSBvZiAlcy4gRGlkIHlvdSBmb3JnZXQgdG8gaW5jbHVkZSB7JXM6IC4uLn0/Jywg
QUxMX0NPTU1BTkRTX0xJU1Quam9pbignLCAnKSwgQ09NTUFORF9TRVQpIDogX3Byb2RJbnZhcmlh
bnQoJzMnLCBBTExfQ09NTUFORFNfTElTVC5qb2luKCcsICcpLCBDT01NQU5EX1NFVCkgOiB2b2lk
IDA7CisKKyAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoc3BlYywgQ09NTUFORF9TRVQpKSB7Cisg
ICAgIShPYmplY3Qua2V5cyhzcGVjKS5sZW5ndGggPT09IDEpID8gImRldmVsb3BtZW50IiAhPT0g
J3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnQ2Fubm90IGhhdmUgbW9yZSB0aGFuIG9u
ZSBrZXkgaW4gYW4gb2JqZWN0IHdpdGggJXMnLCBDT01NQU5EX1NFVCkgOiBfcHJvZEludmFyaWFu
dCgnNCcsIENPTU1BTkRfU0VUKSA6IHZvaWQgMDsKKworICAgIHJldHVybiBzcGVjW0NPTU1BTkRf
U0VUXTsKKyAgfQorCisgIHZhciBuZXh0VmFsdWUgPSBzaGFsbG93Q29weSh2YWx1ZSk7CisKKyAg
aWYgKGhhc093blByb3BlcnR5LmNhbGwoc3BlYywgQ09NTUFORF9NRVJHRSkpIHsKKyAgICB2YXIg
bWVyZ2VPYmogPSBzcGVjW0NPTU1BTkRfTUVSR0VdOworICAgICEobWVyZ2VPYmogJiYgdHlwZW9m
IG1lcmdlT2JqID09PSAnb2JqZWN0JykgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicg
PyBpbnZhcmlhbnQoZmFsc2UsICd1cGRhdGUoKTogJXMgZXhwZWN0cyBhIHNwZWMgb2YgdHlwZSBc
J29iamVjdFwnOyBnb3QgJXMnLCBDT01NQU5EX01FUkdFLCBtZXJnZU9iaikgOiBfcHJvZEludmFy
aWFudCgnNScsIENPTU1BTkRfTUVSR0UsIG1lcmdlT2JqKSA6IHZvaWQgMDsKKyAgICAhKG5leHRW
YWx1ZSAmJiB0eXBlb2YgbmV4dFZhbHVlID09PSAnb2JqZWN0JykgPyAiZGV2ZWxvcG1lbnQiICE9
PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICd1cGRhdGUoKTogJXMgZXhwZWN0cyBh
IHRhcmdldCBvZiB0eXBlIFwnb2JqZWN0XCc7IGdvdCAlcycsIENPTU1BTkRfTUVSR0UsIG5leHRW
YWx1ZSkgOiBfcHJvZEludmFyaWFudCgnNicsIENPTU1BTkRfTUVSR0UsIG5leHRWYWx1ZSkgOiB2
b2lkIDA7CisgICAgX2Fzc2lnbihuZXh0VmFsdWUsIHNwZWNbQ09NTUFORF9NRVJHRV0pOworICB9
CisKKyAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoc3BlYywgQ09NTUFORF9QVVNIKSkgeworICAg
IGludmFyaWFudEFycmF5Q2FzZSh2YWx1ZSwgc3BlYywgQ09NTUFORF9QVVNIKTsKKyAgICBzcGVj
W0NPTU1BTkRfUFVTSF0uZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkgeworICAgICAgbmV4dFZhbHVl
LnB1c2goaXRlbSk7CisgICAgfSk7CisgIH0KKworICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChz
cGVjLCBDT01NQU5EX1VOU0hJRlQpKSB7CisgICAgaW52YXJpYW50QXJyYXlDYXNlKHZhbHVlLCBz
cGVjLCBDT01NQU5EX1VOU0hJRlQpOworICAgIHNwZWNbQ09NTUFORF9VTlNISUZUXS5mb3JFYWNo
KGZ1bmN0aW9uIChpdGVtKSB7CisgICAgICBuZXh0VmFsdWUudW5zaGlmdChpdGVtKTsKKyAgICB9
KTsKKyAgfQorCisgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHNwZWMsIENPTU1BTkRfU1BMSUNF
KSkgeworICAgICFBcnJheS5pc0FycmF5KHZhbHVlKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9k
dWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0V4cGVjdGVkICVzIHRhcmdldCB0byBiZSBhbiBh
cnJheTsgZ290ICVzJywgQ09NTUFORF9TUExJQ0UsIHZhbHVlKSA6IF9wcm9kSW52YXJpYW50KCc3
JywgQ09NTUFORF9TUExJQ0UsIHZhbHVlKSA6IHZvaWQgMDsKKyAgICAhQXJyYXkuaXNBcnJheShz
cGVjW0NPTU1BTkRfU1BMSUNFXSkgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBp
bnZhcmlhbnQoZmFsc2UsICd1cGRhdGUoKTogZXhwZWN0ZWQgc3BlYyBvZiAlcyB0byBiZSBhbiBh
cnJheSBvZiBhcnJheXM7IGdvdCAlcy4gRGlkIHlvdSBmb3JnZXQgdG8gd3JhcCB5b3VyIHBhcmFt
ZXRlcnMgaW4gYW4gYXJyYXk/JywgQ09NTUFORF9TUExJQ0UsIHNwZWNbQ09NTUFORF9TUExJQ0Vd
KSA6IF9wcm9kSW52YXJpYW50KCc4JywgQ09NTUFORF9TUExJQ0UsIHNwZWNbQ09NTUFORF9TUExJ
Q0VdKSA6IHZvaWQgMDsKKyAgICBzcGVjW0NPTU1BTkRfU1BMSUNFXS5mb3JFYWNoKGZ1bmN0aW9u
IChhcmdzKSB7CisgICAgICAhQXJyYXkuaXNBcnJheShhcmdzKSA/ICJkZXZlbG9wbWVudCIgIT09
ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3VwZGF0ZSgpOiBleHBlY3RlZCBzcGVj
IG9mICVzIHRvIGJlIGFuIGFycmF5IG9mIGFycmF5czsgZ290ICVzLiBEaWQgeW91IGZvcmdldCB0
byB3cmFwIHlvdXIgcGFyYW1ldGVycyBpbiBhbiBhcnJheT8nLCBDT01NQU5EX1NQTElDRSwgc3Bl
Y1tDT01NQU5EX1NQTElDRV0pIDogX3Byb2RJbnZhcmlhbnQoJzgnLCBDT01NQU5EX1NQTElDRSwg
c3BlY1tDT01NQU5EX1NQTElDRV0pIDogdm9pZCAwOworICAgICAgbmV4dFZhbHVlLnNwbGljZS5h
cHBseShuZXh0VmFsdWUsIGFyZ3MpOworICAgIH0pOworICB9CisKKyAgaWYgKGhhc093blByb3Bl
cnR5LmNhbGwoc3BlYywgQ09NTUFORF9BUFBMWSkpIHsKKyAgICAhKHR5cGVvZiBzcGVjW0NPTU1B
TkRfQVBQTFldID09PSAnZnVuY3Rpb24nKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9u
JyA/IGludmFyaWFudChmYWxzZSwgJ3VwZGF0ZSgpOiBleHBlY3RlZCBzcGVjIG9mICVzIHRvIGJl
IGEgZnVuY3Rpb247IGdvdCAlcy4nLCBDT01NQU5EX0FQUExZLCBzcGVjW0NPTU1BTkRfQVBQTFld
KSA6IF9wcm9kSW52YXJpYW50KCc5JywgQ09NTUFORF9BUFBMWSwgc3BlY1tDT01NQU5EX0FQUExZ
XSkgOiB2b2lkIDA7CisgICAgbmV4dFZhbHVlID0gc3BlY1tDT01NQU5EX0FQUExZXShuZXh0VmFs
dWUpOworICB9CisKKyAgZm9yICh2YXIgayBpbiBzcGVjKSB7CisgICAgaWYgKCEoQUxMX0NPTU1B
TkRTX1NFVC5oYXNPd25Qcm9wZXJ0eShrKSAmJiBBTExfQ09NTUFORFNfU0VUW2tdKSkgeworICAg
ICAgbmV4dFZhbHVlW2tdID0gdXBkYXRlKHZhbHVlW2tdLCBzcGVjW2tdKTsKKyAgICB9CisgIH0K
KworICByZXR1cm4gbmV4dFZhbHVlOworfQorCittb2R1bGUuZXhwb3J0cyA9IHVwZGF0ZTsKK30s
eyIzOCI6MzgsIjQ2Ijo0NiwiNDkiOjQ5fV0sNDI6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4
cG9ydHMpeworJ3VzZSBzdHJpY3QnOworCisvKioKKyAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBz
b3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgor
ICogQHR5cGVjaGVja3MKKyAqLworCit2YXIgaW52YXJpYW50ID0gX2RlcmVxXyg0Nik7CisKKy8q
KgorICogVGhlIENTU0NvcmUgbW9kdWxlIHNwZWNpZmllcyB0aGUgQVBJIChhbmQgaW1wbGVtZW50
cyBtb3N0IG9mIHRoZSBtZXRob2RzKQorICogdGhhdCBzaG91bGQgYmUgdXNlZCB3aGVuIGRlYWxp
bmcgd2l0aCB0aGUgZGlzcGxheSBvZiBlbGVtZW50cyAodmlhIHRoZWlyCisgKiBDU1MgY2xhc3Nl
cyBhbmQgdmlzaWJpbGl0eSBvbiBzY3JlZW4uIEl0IGlzIGFuIEFQSSBmb2N1c2VkIG9uIG11dGF0
aW5nIHRoZQorICogZGlzcGxheSBhbmQgbm90IHJlYWRpbmcgaXQgYXMgbm8gbG9naWNhbCBzdGF0
ZSBzaG91bGQgYmUgZW5jb2RlZCBpbiB0aGUKKyAqIGRpc3BsYXkgb2YgZWxlbWVudHMuCisgKi8K
KworLyogU2xvdyBpbXBsZW1lbnRhdGlvbiBmb3IgYnJvd3NlcnMgdGhhdCBkb24ndCBuYXRpdmVs
eSBzdXBwb3J0IC5tYXRjaGVzKCkgKi8KK2Z1bmN0aW9uIG1hdGNoZXNTZWxlY3Rvcl9TTE9XKGVs
ZW1lbnQsIHNlbGVjdG9yKSB7CisgIHZhciByb290ID0gZWxlbWVudDsKKyAgd2hpbGUgKHJvb3Qu
cGFyZW50Tm9kZSkgeworICAgIHJvb3QgPSByb290LnBhcmVudE5vZGU7CisgIH0KKworICB2YXIg
YWxsID0gcm9vdC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKTsKKyAgcmV0dXJuIEFycmF5LnBy
b3RvdHlwZS5pbmRleE9mLmNhbGwoYWxsLCBlbGVtZW50KSAhPT0gLTE7Cit9CisKK3ZhciBDU1ND
b3JlID0geworCisgIC8qKgorICAgKiBBZGRzIHRoZSBjbGFzcyBwYXNzZWQgaW4gdG8gdGhlIGVs
ZW1lbnQgaWYgaXQgZG9lc24ndCBhbHJlYWR5IGhhdmUgaXQuCisgICAqCisgICAqIEBwYXJhbSB7
RE9NRWxlbWVudH0gZWxlbWVudCB0aGUgZWxlbWVudCB0byBzZXQgdGhlIGNsYXNzIG9uCisgICAq
IEBwYXJhbSB7c3RyaW5nfSBjbGFzc05hbWUgdGhlIENTUyBjbGFzc05hbWUKKyAgICogQHJldHVy
biB7RE9NRWxlbWVudH0gdGhlIGVsZW1lbnQgcGFzc2VkIGluCisgICAqLworICBhZGRDbGFzczog
ZnVuY3Rpb24gYWRkQ2xhc3MoZWxlbWVudCwgY2xhc3NOYW1lKSB7CisgICAgISEvXHMvLnRlc3Qo
Y2xhc3NOYW1lKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChm
YWxzZSwgJ0NTU0NvcmUuYWRkQ2xhc3MgdGFrZXMgb25seSBhIHNpbmdsZSBjbGFzcyBuYW1lLiAi
JXMiIGNvbnRhaW5zICcgKyAnbXVsdGlwbGUgY2xhc3Nlcy4nLCBjbGFzc05hbWUpIDogaW52YXJp
YW50KGZhbHNlKSA6IHZvaWQgMDsKKworICAgIGlmIChjbGFzc05hbWUpIHsKKyAgICAgIGlmIChl
bGVtZW50LmNsYXNzTGlzdCkgeworICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQoY2xhc3NO
YW1lKTsKKyAgICAgIH0gZWxzZSBpZiAoIUNTU0NvcmUuaGFzQ2xhc3MoZWxlbWVudCwgY2xhc3NO
YW1lKSkgeworICAgICAgICBlbGVtZW50LmNsYXNzTmFtZSA9IGVsZW1lbnQuY2xhc3NOYW1lICsg
JyAnICsgY2xhc3NOYW1lOworICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gZWxlbWVudDsKKyAg
fSwKKworICAvKioKKyAgICogUmVtb3ZlcyB0aGUgY2xhc3MgcGFzc2VkIGluIGZyb20gdGhlIGVs
ZW1lbnQKKyAgICoKKyAgICogQHBhcmFtIHtET01FbGVtZW50fSBlbGVtZW50IHRoZSBlbGVtZW50
IHRvIHNldCB0aGUgY2xhc3Mgb24KKyAgICogQHBhcmFtIHtzdHJpbmd9IGNsYXNzTmFtZSB0aGUg
Q1NTIGNsYXNzTmFtZQorICAgKiBAcmV0dXJuIHtET01FbGVtZW50fSB0aGUgZWxlbWVudCBwYXNz
ZWQgaW4KKyAgICovCisgIHJlbW92ZUNsYXNzOiBmdW5jdGlvbiByZW1vdmVDbGFzcyhlbGVtZW50
LCBjbGFzc05hbWUpIHsKKyAgICAhIS9ccy8udGVzdChjbGFzc05hbWUpID8gImRldmVsb3BtZW50
IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnQ1NTQ29yZS5yZW1vdmVDbGFz
cyB0YWtlcyBvbmx5IGEgc2luZ2xlIGNsYXNzIG5hbWUuICIlcyIgY29udGFpbnMgJyArICdtdWx0
aXBsZSBjbGFzc2VzLicsIGNsYXNzTmFtZSkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwOwor
CisgICAgaWYgKGNsYXNzTmFtZSkgeworICAgICAgaWYgKGVsZW1lbnQuY2xhc3NMaXN0KSB7Cisg
ICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShjbGFzc05hbWUpOworICAgICAgfSBlbHNl
IGlmIChDU1NDb3JlLmhhc0NsYXNzKGVsZW1lbnQsIGNsYXNzTmFtZSkpIHsKKyAgICAgICAgZWxl
bWVudC5jbGFzc05hbWUgPSBlbGVtZW50LmNsYXNzTmFtZS5yZXBsYWNlKG5ldyBSZWdFeHAoJyhe
fFxccyknICsgY2xhc3NOYW1lICsgJyg/Olxcc3wkKScsICdnJyksICckMScpLnJlcGxhY2UoL1xz
Ky9nLCAnICcpIC8vIG11bHRpcGxlIHNwYWNlcyB0byBvbmUKKyAgICAgICAgLnJlcGxhY2UoL15c
cyp8XHMqJC9nLCAnJyk7IC8vIHRyaW0gdGhlIGVuZHMKKyAgICAgIH0KKyAgICB9CisgICAgcmV0
dXJuIGVsZW1lbnQ7CisgIH0sCisKKyAgLyoqCisgICAqIEhlbHBlciB0byBhZGQgb3IgcmVtb3Zl
IGEgY2xhc3MgZnJvbSBhbiBlbGVtZW50IGJhc2VkIG9uIGEgY29uZGl0aW9uLgorICAgKgorICAg
KiBAcGFyYW0ge0RPTUVsZW1lbnR9IGVsZW1lbnQgdGhlIGVsZW1lbnQgdG8gc2V0IHRoZSBjbGFz
cyBvbgorICAgKiBAcGFyYW0ge3N0cmluZ30gY2xhc3NOYW1lIHRoZSBDU1MgY2xhc3NOYW1lCisg
ICAqIEBwYXJhbSB7Kn0gYm9vbCBjb25kaXRpb24gdG8gd2hldGhlciB0byBhZGQgb3IgcmVtb3Zl
IHRoZSBjbGFzcworICAgKiBAcmV0dXJuIHtET01FbGVtZW50fSB0aGUgZWxlbWVudCBwYXNzZWQg
aW4KKyAgICovCisgIGNvbmRpdGlvbkNsYXNzOiBmdW5jdGlvbiBjb25kaXRpb25DbGFzcyhlbGVt
ZW50LCBjbGFzc05hbWUsIGJvb2wpIHsKKyAgICByZXR1cm4gKGJvb2wgPyBDU1NDb3JlLmFkZENs
YXNzIDogQ1NTQ29yZS5yZW1vdmVDbGFzcykoZWxlbWVudCwgY2xhc3NOYW1lKTsKKyAgfSwKKwor
ICAvKioKKyAgICogVGVzdHMgd2hldGhlciB0aGUgZWxlbWVudCBoYXMgdGhlIGNsYXNzIHNwZWNp
ZmllZC4KKyAgICoKKyAgICogQHBhcmFtIHtET01Ob2RlfERPTVdpbmRvd30gZWxlbWVudCB0aGUg
ZWxlbWVudCB0byBjaGVjayB0aGUgY2xhc3Mgb24KKyAgICogQHBhcmFtIHtzdHJpbmd9IGNsYXNz
TmFtZSB0aGUgQ1NTIGNsYXNzTmFtZQorICAgKiBAcmV0dXJuIHtib29sZWFufSB0cnVlIGlmIHRo
ZSBlbGVtZW50IGhhcyB0aGUgY2xhc3MsIGZhbHNlIGlmIG5vdAorICAgKi8KKyAgaGFzQ2xhc3M6
IGZ1bmN0aW9uIGhhc0NsYXNzKGVsZW1lbnQsIGNsYXNzTmFtZSkgeworICAgICEhL1xzLy50ZXN0
KGNsYXNzTmFtZSkgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQo
ZmFsc2UsICdDU1MuaGFzQ2xhc3MgdGFrZXMgb25seSBhIHNpbmdsZSBjbGFzcyBuYW1lLicpIDog
aW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDsKKyAgICBpZiAoZWxlbWVudC5jbGFzc0xpc3QpIHsK
KyAgICAgIHJldHVybiAhIWNsYXNzTmFtZSAmJiBlbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhj
bGFzc05hbWUpOworICAgIH0KKyAgICByZXR1cm4gKCcgJyArIGVsZW1lbnQuY2xhc3NOYW1lICsg
JyAnKS5pbmRleE9mKCcgJyArIGNsYXNzTmFtZSArICcgJykgPiAtMTsKKyAgfSwKKworICAvKioK
KyAgICogVGVzdHMgd2hldGhlciB0aGUgZWxlbWVudCBtYXRjaGVzIHRoZSBzZWxlY3RvciBzcGVj
aWZpZWQKKyAgICoKKyAgICogQHBhcmFtIHtET01Ob2RlfERPTVdpbmRvd30gZWxlbWVudCB0aGUg
ZWxlbWVudCB0aGF0IHdlIGFyZSBxdWVyeWluZworICAgKiBAcGFyYW0ge3N0cmluZ30gc2VsZWN0
b3IgdGhlIENTUyBzZWxlY3RvcgorICAgKiBAcmV0dXJuIHtib29sZWFufSB0cnVlIGlmIHRoZSBl
bGVtZW50IG1hdGNoZXMgdGhlIHNlbGVjdG9yLCBmYWxzZSBpZiBub3QKKyAgICovCisgIG1hdGNo
ZXNTZWxlY3RvcjogZnVuY3Rpb24gbWF0Y2hlc1NlbGVjdG9yKGVsZW1lbnQsIHNlbGVjdG9yKSB7
CisgICAgdmFyIG1hdGNoZXNJbXBsID0gZWxlbWVudC5tYXRjaGVzIHx8IGVsZW1lbnQud2Via2l0
TWF0Y2hlc1NlbGVjdG9yIHx8IGVsZW1lbnQubW96TWF0Y2hlc1NlbGVjdG9yIHx8IGVsZW1lbnQu
bXNNYXRjaGVzU2VsZWN0b3IgfHwgZnVuY3Rpb24gKHMpIHsKKyAgICAgIHJldHVybiBtYXRjaGVz
U2VsZWN0b3JfU0xPVyhlbGVtZW50LCBzKTsKKyAgICB9OworICAgIHJldHVybiBtYXRjaGVzSW1w
bC5jYWxsKGVsZW1lbnQsIHNlbGVjdG9yKTsKKyAgfQorCit9OworCittb2R1bGUuZXhwb3J0cyA9
IENTU0NvcmU7Cit9LHsiNDYiOjQ2fV0sNDM6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9y
dHMpeworLyoqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4K
KyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNl
bnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0
aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRF
TlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7
CisKK3ZhciBjYW5Vc2VET00gPSAhISh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3
aW5kb3cuZG9jdW1lbnQgJiYgd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpOworCisvKioK
KyAqIFNpbXBsZSwgbGlnaHR3ZWlnaHQgbW9kdWxlIGFzc2lzdGluZyB3aXRoIHRoZSBkZXRlY3Rp
b24gYW5kIGNvbnRleHQgb2YKKyAqIFdvcmtlci4gSGVscHMgYXZvaWQgY2lyY3VsYXIgZGVwZW5k
ZW5jaWVzIGFuZCBhbGxvd3MgY29kZSB0byByZWFzb24gYWJvdXQKKyAqIHdoZXRoZXIgb3Igbm90
IHRoZXkgYXJlIGluIGEgV29ya2VyLCBldmVuIGlmIHRoZXkgbmV2ZXIgaW5jbHVkZSB0aGUgbWFp
bgorICogYFJlYWN0V29ya2VyYCBkZXBlbmRlbmN5LgorICovCit2YXIgRXhlY3V0aW9uRW52aXJv
bm1lbnQgPSB7CisKKyAgY2FuVXNlRE9NOiBjYW5Vc2VET00sCisKKyAgY2FuVXNlV29ya2Vyczog
dHlwZW9mIFdvcmtlciAhPT0gJ3VuZGVmaW5lZCcsCisKKyAgY2FuVXNlRXZlbnRMaXN0ZW5lcnM6
IGNhblVzZURPTSAmJiAhISh3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lciB8fCB3aW5kb3cuYXR0YWNo
RXZlbnQpLAorCisgIGNhblVzZVZpZXdwb3J0OiBjYW5Vc2VET00gJiYgISF3aW5kb3cuc2NyZWVu
LAorCisgIGlzSW5Xb3JrZXI6ICFjYW5Vc2VET00gLy8gRm9yIG5vdywgdGhpcyBpcyB0cnVlIC0g
bWlnaHQgY2hhbmdlIGluIHRoZSBmdXR1cmUuCisKK307CisKK21vZHVsZS5leHBvcnRzID0gRXhl
Y3V0aW9uRW52aXJvbm1lbnQ7Cit9LHt9XSw0NDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhw
b3J0cyl7CisidXNlIHN0cmljdCI7CisKKy8qKgorICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNl
bnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMg
c291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5k
IGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNv
dXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBi
ZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisg
KiAKKyAqLworCitmdW5jdGlvbiBtYWtlRW1wdHlGdW5jdGlvbihhcmcpIHsKKyAgcmV0dXJuIGZ1
bmN0aW9uICgpIHsKKyAgICByZXR1cm4gYXJnOworICB9OworfQorCisvKioKKyAqIFRoaXMgZnVu
Y3Rpb24gYWNjZXB0cyBhbmQgZGlzY2FyZHMgaW5wdXRzOyBpdCBoYXMgbm8gc2lkZSBlZmZlY3Rz
LiBUaGlzIGlzCisgKiBwcmltYXJpbHkgdXNlZnVsIGlkaW9tYXRpY2FsbHkgZm9yIG92ZXJyaWRh
YmxlIGZ1bmN0aW9uIGVuZHBvaW50cyB3aGljaAorICogYWx3YXlzIG5lZWQgdG8gYmUgY2FsbGFi
bGUsIHNpbmNlIEpTIGxhY2tzIGEgbnVsbC1jYWxsIGlkaW9tIGFsYSBDb2NvYS4KKyAqLwordmFy
IGVtcHR5RnVuY3Rpb24gPSBmdW5jdGlvbiBlbXB0eUZ1bmN0aW9uKCkge307CisKK2VtcHR5RnVu
Y3Rpb24udGhhdFJldHVybnMgPSBtYWtlRW1wdHlGdW5jdGlvbjsKK2VtcHR5RnVuY3Rpb24udGhh
dFJldHVybnNGYWxzZSA9IG1ha2VFbXB0eUZ1bmN0aW9uKGZhbHNlKTsKK2VtcHR5RnVuY3Rpb24u
dGhhdFJldHVybnNUcnVlID0gbWFrZUVtcHR5RnVuY3Rpb24odHJ1ZSk7CitlbXB0eUZ1bmN0aW9u
LnRoYXRSZXR1cm5zTnVsbCA9IG1ha2VFbXB0eUZ1bmN0aW9uKG51bGwpOworZW1wdHlGdW5jdGlv
bi50aGF0UmV0dXJuc1RoaXMgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiB0aGlzOworfTsKK2Vt
cHR5RnVuY3Rpb24udGhhdFJldHVybnNBcmd1bWVudCA9IGZ1bmN0aW9uIChhcmcpIHsKKyAgcmV0
dXJuIGFyZzsKK307CisKK21vZHVsZS5leHBvcnRzID0gZW1wdHlGdW5jdGlvbjsKK30se31dLDQ1
OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IChj
KSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBs
aWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9y
eSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQg
cmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVj
dG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgZW1wdHlPYmplY3QgPSB7fTsK
KworaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICBPYmplY3QuZnJlZXpl
KGVtcHR5T2JqZWN0KTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBlbXB0eU9iamVjdDsKK30se31d
LDQ2OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0
IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCisvKioKKyAqIFVzZSBpbnZhcmlh
bnQoKSB0byBhc3NlcnQgc3RhdGUgd2hpY2ggeW91ciBwcm9ncmFtIGFzc3VtZXMgdG8gYmUgdHJ1
ZS4KKyAqCisgKiBQcm92aWRlIHNwcmludGYtc3R5bGUgZm9ybWF0IChvbmx5ICVzIGlzIHN1cHBv
cnRlZCkgYW5kIGFyZ3VtZW50cworICogdG8gcHJvdmlkZSBpbmZvcm1hdGlvbiBhYm91dCB3aGF0
IGJyb2tlIGFuZCB3aGF0IHlvdSB3ZXJlCisgKiBleHBlY3RpbmcuCisgKgorICogVGhlIGludmFy
aWFudCBtZXNzYWdlIHdpbGwgYmUgc3RyaXBwZWQgaW4gcHJvZHVjdGlvbiwgYnV0IHRoZSBpbnZh
cmlhbnQKKyAqIHdpbGwgcmVtYWluIHRvIGVuc3VyZSBsb2dpYyBkb2VzIG5vdCBkaWZmZXIgaW4g
cHJvZHVjdGlvbi4KKyAqLworCitmdW5jdGlvbiBpbnZhcmlhbnQoY29uZGl0aW9uLCBmb3JtYXQs
IGEsIGIsIGMsIGQsIGUsIGYpIHsKKyAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9u
JykgeworICAgIGlmIChmb3JtYXQgPT09IHVuZGVmaW5lZCkgeworICAgICAgdGhyb3cgbmV3IEVy
cm9yKCdpbnZhcmlhbnQgcmVxdWlyZXMgYW4gZXJyb3IgbWVzc2FnZSBhcmd1bWVudCcpOworICAg
IH0KKyAgfQorCisgIGlmICghY29uZGl0aW9uKSB7CisgICAgdmFyIGVycm9yOworICAgIGlmIChm
b3JtYXQgPT09IHVuZGVmaW5lZCkgeworICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoJ01pbmlmaWVk
IGV4Y2VwdGlvbiBvY2N1cnJlZDsgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50
ICcgKyAnZm9yIHRoZSBmdWxsIGVycm9yIG1lc3NhZ2UgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3
YXJuaW5ncy4nKTsKKyAgICB9IGVsc2UgeworICAgICAgdmFyIGFyZ3MgPSBbYSwgYiwgYywgZCwg
ZSwgZl07CisgICAgICB2YXIgYXJnSW5kZXggPSAwOworICAgICAgZXJyb3IgPSBuZXcgRXJyb3Io
Zm9ybWF0LnJlcGxhY2UoLyVzL2csIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgcmV0dXJuIGFyZ3Nb
YXJnSW5kZXgrK107CisgICAgICB9KSk7CisgICAgICBlcnJvci5uYW1lID0gJ0ludmFyaWFudCBW
aW9sYXRpb24nOworICAgIH0KKworICAgIGVycm9yLmZyYW1lc1RvUG9wID0gMTsgLy8gd2UgZG9u
J3QgY2FyZSBhYm91dCBpbnZhcmlhbnQncyBvd24gZnJhbWUKKyAgICB0aHJvdyBlcnJvcjsKKyAg
fQorfQorCittb2R1bGUuZXhwb3J0cyA9IGludmFyaWFudDsKK30se31dLDQ3OltmdW5jdGlvbihf
ZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNl
bnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMg
c291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5k
IGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNv
dXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBi
ZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisg
KiBAdHlwZWNoZWNrcworICogCisgKi8KKworLyplc2xpbnQtZGlzYWJsZSBuby1zZWxmLWNvbXBh
cmUgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJv
dG90eXBlLmhhc093blByb3BlcnR5OworCisvKioKKyAqIGlubGluZWQgT2JqZWN0LmlzIHBvbHlm
aWxsIHRvIGF2b2lkIHJlcXVpcmluZyBjb25zdW1lcnMgc2hpcCB0aGVpciBvd24KKyAqIGh0dHBz
Oi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJl
bmNlL0dsb2JhbF9PYmplY3RzL09iamVjdC9pcworICovCitmdW5jdGlvbiBpcyh4LCB5KSB7Cisg
IC8vIFNhbWVWYWx1ZSBhbGdvcml0aG0KKyAgaWYgKHggPT09IHkpIHsKKyAgICAvLyBTdGVwcyAx
LTUsIDctMTAKKyAgICAvLyBTdGVwcyA2LmItNi5lOiArMCAhPSAtMAorICAgIC8vIEFkZGVkIHRo
ZSBub256ZXJvIHkgY2hlY2sgdG8gbWFrZSBGbG93IGhhcHB5LCBidXQgaXQgaXMgcmVkdW5kYW50
CisgICAgcmV0dXJuIHggIT09IDAgfHwgeSAhPT0gMCB8fCAxIC8geCA9PT0gMSAvIHk7CisgIH0g
ZWxzZSB7CisgICAgLy8gU3RlcCA2LmE6IE5hTiA9PSBOYU4KKyAgICByZXR1cm4geCAhPT0geCAm
JiB5ICE9PSB5OworICB9Cit9CisKKy8qKgorICogUGVyZm9ybXMgZXF1YWxpdHkgYnkgaXRlcmF0
aW5nIHRocm91Z2gga2V5cyBvbiBhbiBvYmplY3QgYW5kIHJldHVybmluZyBmYWxzZQorICogd2hl
biBhbnkga2V5IGhhcyB2YWx1ZXMgd2hpY2ggYXJlIG5vdCBzdHJpY3RseSBlcXVhbCBiZXR3ZWVu
IHRoZSBhcmd1bWVudHMuCisgKiBSZXR1cm5zIHRydWUgd2hlbiB0aGUgdmFsdWVzIG9mIGFsbCBr
ZXlzIGFyZSBzdHJpY3RseSBlcXVhbC4KKyAqLworZnVuY3Rpb24gc2hhbGxvd0VxdWFsKG9iakEs
IG9iakIpIHsKKyAgaWYgKGlzKG9iakEsIG9iakIpKSB7CisgICAgcmV0dXJuIHRydWU7CisgIH0K
KworICBpZiAodHlwZW9mIG9iakEgIT09ICdvYmplY3QnIHx8IG9iakEgPT09IG51bGwgfHwgdHlw
ZW9mIG9iakIgIT09ICdvYmplY3QnIHx8IG9iakIgPT09IG51bGwpIHsKKyAgICByZXR1cm4gZmFs
c2U7CisgIH0KKworICB2YXIga2V5c0EgPSBPYmplY3Qua2V5cyhvYmpBKTsKKyAgdmFyIGtleXNC
ID0gT2JqZWN0LmtleXMob2JqQik7CisKKyAgaWYgKGtleXNBLmxlbmd0aCAhPT0ga2V5c0IubGVu
Z3RoKSB7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisKKyAgLy8gVGVzdCBmb3IgQSdzIGtleXMg
ZGlmZmVyZW50IGZyb20gQi4KKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzQS5sZW5ndGg7IGkr
KykgeworICAgIGlmICghaGFzT3duUHJvcGVydHkuY2FsbChvYmpCLCBrZXlzQVtpXSkgfHwgIWlz
KG9iakFba2V5c0FbaV1dLCBvYmpCW2tleXNBW2ldXSkpIHsKKyAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisgIH0KKworICByZXR1cm4gdHJ1ZTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBzaGFs
bG93RXF1YWw7Cit9LHt9XSw0ODpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7Cisv
KioKKyAqIENvcHlyaWdodCAyMDE0LTIwMTUsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl
IEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50Cisg
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgZW1wdHlG
dW5jdGlvbiA9IF9kZXJlcV8oNDQpOworCisvKioKKyAqIFNpbWlsYXIgdG8gaW52YXJpYW50IGJ1
dCBvbmx5IGxvZ3MgYSB3YXJuaW5nIGlmIHRoZSBjb25kaXRpb24gaXMgbm90IG1ldC4KKyAqIFRo
aXMgY2FuIGJlIHVzZWQgdG8gbG9nIGlzc3VlcyBpbiBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMg
aW4gY3JpdGljYWwKKyAqIHBhdGhzLiBSZW1vdmluZyB0aGUgbG9nZ2luZyBjb2RlIGZvciBwcm9k
dWN0aW9uIGVudmlyb25tZW50cyB3aWxsIGtlZXAgdGhlCisgKiBzYW1lIGxvZ2ljIGFuZCBmb2xs
b3cgdGhlIHNhbWUgY29kZSBwYXRocy4KKyAqLworCit2YXIgd2FybmluZyA9IGVtcHR5RnVuY3Rp
b247CisKK2lmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgKGZ1bmN0aW9u
ICgpIHsKKyAgICB2YXIgcHJpbnRXYXJuaW5nID0gZnVuY3Rpb24gcHJpbnRXYXJuaW5nKGZvcm1h
dCkgeworICAgICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBBcnJh
eShfbGVuID4gMSA/IF9sZW4gLSAxIDogMCksIF9rZXkgPSAxOyBfa2V5IDwgX2xlbjsgX2tleSsr
KSB7CisgICAgICAgIGFyZ3NbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldOworICAgICAgfQor
CisgICAgICB2YXIgYXJnSW5kZXggPSAwOworICAgICAgdmFyIG1lc3NhZ2UgPSAnV2FybmluZzog
JyArIGZvcm1hdC5yZXBsYWNlKC8lcy9nLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIHJldHVybiBh
cmdzW2FyZ0luZGV4KytdOworICAgICAgfSk7CisgICAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09
ICd1bmRlZmluZWQnKSB7CisgICAgICAgIGNvbnNvbGUuZXJyb3IobWVzc2FnZSk7CisgICAgICB9
CisgICAgICB0cnkgeworICAgICAgICAvLyAtLS0gV2VsY29tZSB0byBkZWJ1Z2dpbmcgUmVhY3Qg
LS0tCisgICAgICAgIC8vIFRoaXMgZXJyb3Igd2FzIHRocm93biBhcyBhIGNvbnZlbmllbmNlIHNv
IHRoYXQgeW91IGNhbiB1c2UgdGhpcyBzdGFjaworICAgICAgICAvLyB0byBmaW5kIHRoZSBjYWxs
c2l0ZSB0aGF0IGNhdXNlZCB0aGlzIHdhcm5pbmcgdG8gZmlyZS4KKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKG1lc3NhZ2UpOworICAgICAgfSBjYXRjaCAoeCkge30KKyAgICB9OworCisgICAgd2Fy
bmluZyA9IGZ1bmN0aW9uIHdhcm5pbmcoY29uZGl0aW9uLCBmb3JtYXQpIHsKKyAgICAgIGlmIChm
b3JtYXQgPT09IHVuZGVmaW5lZCkgeworICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2B3YXJuaW5n
KGNvbmRpdGlvbiwgZm9ybWF0LCAuLi5hcmdzKWAgcmVxdWlyZXMgYSB3YXJuaW5nICcgKyAnbWVz
c2FnZSBhcmd1bWVudCcpOworICAgICAgfQorCisgICAgICBpZiAoZm9ybWF0LmluZGV4T2YoJ0Zh
aWxlZCBDb21wb3NpdGUgcHJvcFR5cGU6ICcpID09PSAwKSB7CisgICAgICAgIHJldHVybjsgLy8g
SWdub3JlIENvbXBvc2l0ZUNvbXBvbmVudCBwcm9wdHlwZSBjaGVjay4KKyAgICAgIH0KKworICAg
ICAgaWYgKCFjb25kaXRpb24pIHsKKyAgICAgICAgZm9yICh2YXIgX2xlbjIgPSBhcmd1bWVudHMu
bGVuZ3RoLCBhcmdzID0gQXJyYXkoX2xlbjIgPiAyID8gX2xlbjIgLSAyIDogMCksIF9rZXkyID0g
MjsgX2tleTIgPCBfbGVuMjsgX2tleTIrKykgeworICAgICAgICAgIGFyZ3NbX2tleTIgLSAyXSA9
IGFyZ3VtZW50c1tfa2V5Ml07CisgICAgICAgIH0KKworICAgICAgICBwcmludFdhcm5pbmcuYXBw
bHkodW5kZWZpbmVkLCBbZm9ybWF0XS5jb25jYXQoYXJncykpOworICAgICAgfQorICAgIH07Cisg
IH0pKCk7Cit9CisKK21vZHVsZS5leHBvcnRzID0gd2FybmluZzsKK30seyI0NCI6NDR9XSw0OTpb
ZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisndXNlIHN0cmljdCc7CisvKiBlc2xp
bnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqLwordmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0
LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTsKK3ZhciBwcm9wSXNFbnVtZXJhYmxlID0gT2JqZWN0
LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTsKKworZnVuY3Rpb24gdG9PYmplY3QodmFs
KSB7CisgICAgaWYgKHZhbCA9PT0gbnVsbCB8fCB2YWwgPT09IHVuZGVmaW5lZCkgeworICAgICAg
ICB0aHJvdyBuZXcgVHlwZUVycm9yKCdPYmplY3QuYXNzaWduIGNhbm5vdCBiZSBjYWxsZWQgd2l0
aCBudWxsIG9yIHVuZGVmaW5lZCcpOworICAgIH0KKworICAgIHJldHVybiBPYmplY3QodmFsKTsK
K30KKworZnVuY3Rpb24gc2hvdWxkVXNlTmF0aXZlKCkgeworICAgIHRyeSB7CisgICAgICAgIGlm
ICghT2JqZWN0LmFzc2lnbikgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
CisKKyAgICAgICAgLy8gRGV0ZWN0IGJ1Z2d5IHByb3BlcnR5IGVudW1lcmF0aW9uIG9yZGVyIGlu
IG9sZGVyIFY4IHZlcnNpb25zLgorCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5v
cmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTQxMTgKKyAgICAgICAgdmFyIHRlc3QxID0gbmV3IFN0
cmluZygnYWJjJyk7ICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lCisgICAgICAgIHRlc3QxWzVdID0g
J2RlJzsKKyAgICAgICAgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRlc3QxKVswXSA9
PT0gJzUnKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAg
ICAvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0zMDU2
CisgICAgICAgIHZhciB0ZXN0MiA9IHt9OworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEw
OyBpKyspIHsKKyAgICAgICAgICAgIHRlc3QyWydfJyArIFN0cmluZy5mcm9tQ2hhckNvZGUoaSld
ID0gaTsKKyAgICAgICAgfQorICAgICAgICB2YXIgb3JkZXIyID0gT2JqZWN0LmdldE93blByb3Bl
cnR5TmFtZXModGVzdDIpLm1hcChmdW5jdGlvbiAobikgeworICAgICAgICAgICAgcmV0dXJuIHRl
c3QyW25dOworICAgICAgICB9KTsKKyAgICAgICAgaWYgKG9yZGVyMi5qb2luKCcnKSAhPT0gJzAx
MjM0NTY3ODknKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAg
ICAgICAvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0z
MDU2CisgICAgICAgIHZhciB0ZXN0MyA9IHt9OworICAgICAgICAnYWJjZGVmZ2hpamtsbW5vcHFy
c3QnLnNwbGl0KCcnKS5mb3JFYWNoKGZ1bmN0aW9uIChsZXR0ZXIpIHsKKyAgICAgICAgICAgIHRl
c3QzW2xldHRlcl0gPSBsZXR0ZXI7CisgICAgICAgIH0pOworICAgICAgICBpZiAoT2JqZWN0Lmtl
eXMoT2JqZWN0LmFzc2lnbih7fSwgdGVzdDMpKS5qb2luKCcnKSAhPT0KKyAgICAgICAgICAgICAg
ICAnYWJjZGVmZ2hpamtsbW5vcHFyc3QnKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIH0KKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAg
ICAgIC8vIFdlIGRvbid0IGV4cGVjdCBhbnkgb2YgdGhlIGFib3ZlIHRvIHRocm93LCBidXQgYmV0
dGVyIHRvIGJlIHNhZmUuCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK21vZHVs
ZS5leHBvcnRzID0gc2hvdWxkVXNlTmF0aXZlKCkgPyBPYmplY3QuYXNzaWduIDogZnVuY3Rpb24g
KHRhcmdldCwgc291cmNlKSB7CisgICAgdmFyIGZyb207CisgICAgdmFyIHRvID0gdG9PYmplY3Qo
dGFyZ2V0KTsKKyAgICB2YXIgc3ltYm9sczsKKworICAgIGZvciAodmFyIHMgPSAxOyBzIDwgYXJn
dW1lbnRzLmxlbmd0aDsgcysrKSB7CisgICAgICAgIGZyb20gPSBPYmplY3QoYXJndW1lbnRzW3Nd
KTsKKworICAgICAgICBmb3IgKHZhciBrZXkgaW4gZnJvbSkgeworICAgICAgICAgICAgaWYgKGhh
c093blByb3BlcnR5LmNhbGwoZnJvbSwga2V5KSkgeworICAgICAgICAgICAgICAgIHRvW2tleV0g
PSBmcm9tW2tleV07CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoT2Jq
ZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeworICAgICAgICAgICAgc3ltYm9scyA9IE9iamVj
dC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZnJvbSk7CisgICAgICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHN5bWJvbHMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICBpZiAocHJvcElz
RW51bWVyYWJsZS5jYWxsKGZyb20sIHN5bWJvbHNbaV0pKSB7CisgICAgICAgICAgICAgICAgICAg
IHRvW3N5bWJvbHNbaV1dID0gZnJvbVtzeW1ib2xzW2ldXTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gdG87Cit9OworCit9
LHt9XX0se30sWzMyXSkoMzIpCit9KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QvZGlzdC9yZWFjdC13
aXRoLWFkZG9ucy5taW4uanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3Qv
ZGlzdC9yZWFjdC13aXRoLWFkZG9ucy5taW4uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTY2ZDI2NDZjZTAyZTBm
MzVkNjM0OGUxYjZiZTE0MWVlNzU0NDJlMAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC9kaXN0L3JlYWN0LXdpdGgtYWRkb25zLm1pbi5qcwpA
QCAtMCwwICsxLDEzIEBACisvKioKKyAqIFJlYWN0ICh3aXRoIGFkZG9ucykgdjE1LjQuMAorICoK
KyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl
IEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50Cisg
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKyFmdW5jdGlvbihlKXtpZigib2JqZWN0Ij09dHlw
ZW9mIGV4cG9ydHMmJiJ1bmRlZmluZWQiIT10eXBlb2YgbW9kdWxlKW1vZHVsZS5leHBvcnRzPWUo
KTtlbHNlIGlmKCJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQpZGVmaW5lKFtd
LGUpO2Vsc2V7dmFyIHQ7dD0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6InVuZGVm
aW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxm
OnRoaXMsdC5SZWFjdD1lKCl9fShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiBlKHQsbixyKXtm
dW5jdGlvbiBvKGEscyl7aWYoIW5bYV0pe2lmKCF0W2FdKXt2YXIgdT0iZnVuY3Rpb24iPT10eXBl
b2YgcmVxdWlyZSYmcmVxdWlyZTtpZighcyYmdSlyZXR1cm4gdShhLCEwKTtpZihpKXJldHVybiBp
KGEsITApO3ZhciBjPW5ldyBFcnJvcigiQ2Fubm90IGZpbmQgbW9kdWxlICciK2ErIiciKTt0aHJv
dyBjLmNvZGU9Ik1PRFVMRV9OT1RfRk9VTkQiLGN9dmFyIHA9blthXT17ZXhwb3J0czp7fX07dFth
XVswXS5jYWxsKHAuZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgbj10W2FdWzFdW2VdO3JldHVybiBv
KG4/bjplKX0scCxwLmV4cG9ydHMsZSx0LG4scil9cmV0dXJuIG5bYV0uZXhwb3J0c31mb3IodmFy
IGk9ImZ1bmN0aW9uIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmUsYT0wO2E8ci5sZW5ndGg7YSsr
KW8oclthXSk7cmV0dXJuIG99KHsxOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIoZSx0KXt2YXIgbj17fTtyZXR1cm4gbltlLnRvTG93ZXJDYXNlKCldPXQudG9Mb3dlckNh
c2UoKSxuWyJXZWJraXQiK2VdPSJ3ZWJraXQiK3QsblsiTW96IitlXT0ibW96Iit0LG5bIm1zIitl
XT0iTVMiK3QsblsiTyIrZV09Im8iK3QudG9Mb3dlckNhc2UoKSxufWZ1bmN0aW9uIG8oZSl7aWYo
c1tlXSlyZXR1cm4gc1tlXTtpZighYVtlXSlyZXR1cm4gZTt2YXIgdD1hW2VdO2Zvcih2YXIgbiBp
biB0KWlmKHQuaGFzT3duUHJvcGVydHkobikmJm4gaW4gdSlyZXR1cm4gc1tlXT10W25dO3JldHVy
biIifXZhciBpPWUoNDApLGE9e2FuaW1hdGlvbmVuZDpyKCJBbmltYXRpb24iLCJBbmltYXRpb25F
bmQiKSxhbmltYXRpb25pdGVyYXRpb246cigiQW5pbWF0aW9uIiwiQW5pbWF0aW9uSXRlcmF0aW9u
IiksYW5pbWF0aW9uc3RhcnQ6cigiQW5pbWF0aW9uIiwiQW5pbWF0aW9uU3RhcnQiKSx0cmFuc2l0
aW9uZW5kOnIoIlRyYW5zaXRpb24iLCJUcmFuc2l0aW9uRW5kIil9LHM9e30sdT17fTtpLmNhblVz
ZURPTSYmKHU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iikuc3R5bGUsIkFuaW1hdGlvbkV2
ZW50ImluIHdpbmRvd3x8KGRlbGV0ZSBhLmFuaW1hdGlvbmVuZC5hbmltYXRpb24sZGVsZXRlIGEu
YW5pbWF0aW9uaXRlcmF0aW9uLmFuaW1hdGlvbixkZWxldGUgYS5hbmltYXRpb25zdGFydC5hbmlt
YXRpb24pLCJUcmFuc2l0aW9uRXZlbnQiaW4gd2luZG93fHxkZWxldGUgYS50cmFuc2l0aW9uZW5k
LnRyYW5zaXRpb24pLHQuZXhwb3J0cz1vfSx7NDA6NDB9XSwyOltmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQ9L1s9Ol0vZyxuPXsiPSI6Ij0wIiwiOiI6Ij0y
In0scj0oIiIrZSkucmVwbGFjZSh0LGZ1bmN0aW9uKGUpe3JldHVybiBuW2VdfSk7cmV0dXJuIiQi
K3J9ZnVuY3Rpb24gbyhlKXt2YXIgdD0vKD0wfD0yKS9nLG49eyI9MCI6Ij0iLCI9MiI6IjoifSxy
PSIuIj09PWVbMF0mJiIkIj09PWVbMV0/ZS5zdWJzdHJpbmcoMik6ZS5zdWJzdHJpbmcoMSk7cmV0
dXJuKCIiK3IpLnJlcGxhY2UodCxmdW5jdGlvbihlKXtyZXR1cm4gbltlXX0pfXZhciBpPXtlc2Nh
cGU6cix1bmVzY2FwZTpvfTt0LmV4cG9ydHM9aX0se31dLDM6W2Z1bmN0aW9uKGUsdCxuKXsidXNl
IHN0cmljdCI7dmFyIHI9ZSgxOCksbz1lKDI0KSxpPXtsaW5rU3RhdGU6ZnVuY3Rpb24oZSl7cmV0
dXJuIG5ldyByKHRoaXMuc3RhdGVbZV0sby5jcmVhdGVTdGF0ZUtleVNldHRlcih0aGlzLGUpKX19
O3QuZXhwb3J0cz1pfSx7MTg6MTgsMjQ6MjR9XSw0OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO3ZhciByPWUoMzUpLG89KGUoNDMpLGZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7aWYodC5pbnN0
YW5jZVBvb2wubGVuZ3RoKXt2YXIgbj10Lmluc3RhbmNlUG9vbC5wb3AoKTtyZXR1cm4gdC5jYWxs
KG4sZSksbn1yZXR1cm4gbmV3IHQoZSl9KSxpPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcztpZihu
Lmluc3RhbmNlUG9vbC5sZW5ndGgpe3ZhciByPW4uaW5zdGFuY2VQb29sLnBvcCgpO3JldHVybiBu
LmNhbGwocixlLHQpLHJ9cmV0dXJuIG5ldyBuKGUsdCl9LGE9ZnVuY3Rpb24oZSx0LG4pe3ZhciBy
PXRoaXM7aWYoci5pbnN0YW5jZVBvb2wubGVuZ3RoKXt2YXIgbz1yLmluc3RhbmNlUG9vbC5wb3Ao
KTtyZXR1cm4gci5jYWxsKG8sZSx0LG4pLG99cmV0dXJuIG5ldyByKGUsdCxuKX0scz1mdW5jdGlv
bihlLHQsbixyKXt2YXIgbz10aGlzO2lmKG8uaW5zdGFuY2VQb29sLmxlbmd0aCl7dmFyIGk9by5p
bnN0YW5jZVBvb2wucG9wKCk7cmV0dXJuIG8uY2FsbChpLGUsdCxuLHIpLGl9cmV0dXJuIG5ldyBv
KGUsdCxuLHIpfSx1PWZ1bmN0aW9uKGUsdCxuLHIsbyl7dmFyIGk9dGhpcztpZihpLmluc3RhbmNl
UG9vbC5sZW5ndGgpe3ZhciBhPWkuaW5zdGFuY2VQb29sLnBvcCgpO3JldHVybiBpLmNhbGwoYSxl
LHQsbixyLG8pLGF9cmV0dXJuIG5ldyBpKGUsdCxuLHIsbyl9LGM9ZnVuY3Rpb24oZSl7dmFyIHQ9
dGhpcztlIGluc3RhbmNlb2YgdD92b2lkIDA6cigiMjUiKSxlLmRlc3RydWN0b3IoKSx0Lmluc3Rh
bmNlUG9vbC5sZW5ndGg8dC5wb29sU2l6ZSYmdC5pbnN0YW5jZVBvb2wucHVzaChlKX0scD0xMCxs
PW8sZj1mdW5jdGlvbihlLHQpe3ZhciBuPWU7cmV0dXJuIG4uaW5zdGFuY2VQb29sPVtdLG4uZ2V0
UG9vbGVkPXR8fGwsbi5wb29sU2l6ZXx8KG4ucG9vbFNpemU9cCksbi5yZWxlYXNlPWMsbn0sZD17
YWRkUG9vbGluZ1RvOmYsb25lQXJndW1lbnRQb29sZXI6byx0d29Bcmd1bWVudFBvb2xlcjppLHRo
cmVlQXJndW1lbnRQb29sZXI6YSxmb3VyQXJndW1lbnRQb29sZXI6cyxmaXZlQXJndW1lbnRQb29s
ZXI6dX07dC5leHBvcnRzPWR9LHszNTozNSw0Mzo0M31dLDU6W2Z1bmN0aW9uKGUsdCxuKXsidXNl
IHN0cmljdCI7dmFyIHI9ZSg0Niksbz1lKDkpLGk9ZSgxMSksYT1lKDIzKSxzPWUoMTApLHU9ZSgx
NCksYz1lKDE1KSxwPWUoMjEpLGw9ZSgyOCksZj1lKDM0KSxkPShlKDQ1KSxjLmNyZWF0ZUVsZW1l
bnQpLGg9Yy5jcmVhdGVGYWN0b3J5LHY9Yy5jbG9uZUVsZW1lbnQseT1yLG09e0NoaWxkcmVuOntt
YXA6by5tYXAsZm9yRWFjaDpvLmZvckVhY2gsY291bnQ6by5jb3VudCx0b0FycmF5Om8udG9BcnJh
eSxvbmx5OmZ9LENvbXBvbmVudDppLFB1cmVDb21wb25lbnQ6YSxjcmVhdGVFbGVtZW50OmQsY2xv
bmVFbGVtZW50OnYsaXNWYWxpZEVsZW1lbnQ6Yy5pc1ZhbGlkRWxlbWVudCxQcm9wVHlwZXM6cCxj
cmVhdGVDbGFzczpzLmNyZWF0ZUNsYXNzLGNyZWF0ZUZhY3Rvcnk6aCxjcmVhdGVNaXhpbjpmdW5j
dGlvbihlKXtyZXR1cm4gZX0sRE9NOnUsdmVyc2lvbjpsLF9fc3ByZWFkOnl9O3QuZXhwb3J0cz1t
fSx7MTA6MTAsMTE6MTEsMTQ6MTQsMTU6MTUsMjE6MjEsMjM6MjMsMjg6MjgsMzQ6MzQsNDU6NDUs
NDY6NDYsOTo5fV0sNjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtuLmdldFJlYWN0RE9N
PWZ1bmN0aW9uKCl7cmV0dXJuIFJlYWN0RE9NfSxuLmdldFJlYWN0SW5zdGFuY2VNYXA9ZnVuY3Rp
b24oKXtyZXR1cm4gUmVhY3RET00uX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9V
X1dJTExfQkVfRklSRUQuUmVhY3RJbnN0YW5jZU1hcH19LHt9XSw3OltmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBu
ZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlv
biBvKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVu
IGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4hdHx8Im9i
amVjdCIhPXR5cGVvZiB0JiYiZnVuY3Rpb24iIT10eXBlb2YgdD9lOnR9ZnVuY3Rpb24gaShlLHQp
e2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJT
dXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIr
dHlwZW9mIHQpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0
cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEw
fX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6
ZS5fX3Byb3RvX189dCl9ZnVuY3Rpb24gYShlKXt2YXIgdD0idHJhbnNpdGlvbiIrZSsiVGltZW91
dCIsbj0idHJhbnNpdGlvbiIrZTtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoZVtuXSl7aWYobnVsbD09
ZVt0XSlyZXR1cm4gbmV3IEVycm9yKHQrIiB3YXNuJ3Qgc3VwcGxpZWQgdG8gUmVhY3RDU1NUcmFu
c2l0aW9uR3JvdXA6IHRoaXMgY2FuIGNhdXNlIHVucmVsaWFibGUgYW5pbWF0aW9ucyBhbmQgd29u
J3QgYmUgc3VwcG9ydGVkIGluIGEgZnV0dXJlIHZlcnNpb24gb2YgUmVhY3QuIFNlZSBodHRwczov
L2ZiLm1lL3JlYWN0LWFuaW1hdGlvbi10cmFuc2l0aW9uLWdyb3VwLXRpbWVvdXQgZm9yIG1vcmUg
aW5mb3JtYXRpb24uIik7aWYoIm51bWJlciIhPXR5cGVvZiBlW3RdKXJldHVybiBuZXcgRXJyb3Io
dCsiIG11c3QgYmUgYSBudW1iZXIgKGluIG1pbGxpc2Vjb25kcykiKX19fXZhciBzPWUoNDYpLHU9
ZSg1KSxjPWUoMjcpLHA9ZSg4KSxsPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXt2YXIgbixpLGE7
cih0aGlzLHQpO2Zvcih2YXIgcz1hcmd1bWVudHMubGVuZ3RoLGM9QXJyYXkocyksbD0wO2w8czts
KyspY1tsXT1hcmd1bWVudHNbbF07cmV0dXJuIG49aT1vKHRoaXMsZS5jYWxsLmFwcGx5KGUsW3Ro
aXNdLmNvbmNhdChjKSkpLGkuX3dyYXBDaGlsZD1mdW5jdGlvbihlKXtyZXR1cm4gdS5jcmVhdGVF
bGVtZW50KHAse25hbWU6aS5wcm9wcy50cmFuc2l0aW9uTmFtZSxhcHBlYXI6aS5wcm9wcy50cmFu
c2l0aW9uQXBwZWFyLGVudGVyOmkucHJvcHMudHJhbnNpdGlvbkVudGVyLGxlYXZlOmkucHJvcHMu
dHJhbnNpdGlvbkxlYXZlLGFwcGVhclRpbWVvdXQ6aS5wcm9wcy50cmFuc2l0aW9uQXBwZWFyVGlt
ZW91dCxlbnRlclRpbWVvdXQ6aS5wcm9wcy50cmFuc2l0aW9uRW50ZXJUaW1lb3V0LGxlYXZlVGlt
ZW91dDppLnByb3BzLnRyYW5zaXRpb25MZWF2ZVRpbWVvdXR9LGUpfSxhPW4sbyhpLGEpfXJldHVy
biBpKHQsZSksdC5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKCl7cmV0dXJuIHUuY3JlYXRlRWxl
bWVudChjLHMoe30sdGhpcy5wcm9wcyx7Y2hpbGRGYWN0b3J5OnRoaXMuX3dyYXBDaGlsZH0pKX0s
dH0odS5Db21wb25lbnQpO2wuZGlzcGxheU5hbWU9IlJlYWN0Q1NTVHJhbnNpdGlvbkdyb3VwIixs
LnByb3BUeXBlcz17dHJhbnNpdGlvbk5hbWU6cC5wcm9wVHlwZXMubmFtZSx0cmFuc2l0aW9uQXBw
ZWFyOnUuUHJvcFR5cGVzLmJvb2wsdHJhbnNpdGlvbkVudGVyOnUuUHJvcFR5cGVzLmJvb2wsdHJh
bnNpdGlvbkxlYXZlOnUuUHJvcFR5cGVzLmJvb2wsdHJhbnNpdGlvbkFwcGVhclRpbWVvdXQ6YSgi
QXBwZWFyIiksdHJhbnNpdGlvbkVudGVyVGltZW91dDphKCJFbnRlciIpLHRyYW5zaXRpb25MZWF2
ZVRpbWVvdXQ6YSgiTGVhdmUiKX0sbC5kZWZhdWx0UHJvcHM9e3RyYW5zaXRpb25BcHBlYXI6ITEs
dHJhbnNpdGlvbkVudGVyOiEwLHRyYW5zaXRpb25MZWF2ZTohMH0sdC5leHBvcnRzPWx9LHsyNzoy
Nyw0Njo0Niw1OjUsODo4fV0sODpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1l
KDUpLG89ZSg2KSxpPWUoMzkpLGE9ZSgyNikscz1lKDM0KSx1PTE3LGM9ci5jcmVhdGVDbGFzcyh7
ZGlzcGxheU5hbWU6IlJlYWN0Q1NTVHJhbnNpdGlvbkdyb3VwQ2hpbGQiLHByb3BUeXBlczp7bmFt
ZTpyLlByb3BUeXBlcy5vbmVPZlR5cGUoW3IuUHJvcFR5cGVzLnN0cmluZyxyLlByb3BUeXBlcy5z
aGFwZSh7ZW50ZXI6ci5Qcm9wVHlwZXMuc3RyaW5nLGxlYXZlOnIuUHJvcFR5cGVzLnN0cmluZyxh
Y3RpdmU6ci5Qcm9wVHlwZXMuc3RyaW5nfSksci5Qcm9wVHlwZXMuc2hhcGUoe2VudGVyOnIuUHJv
cFR5cGVzLnN0cmluZyxlbnRlckFjdGl2ZTpyLlByb3BUeXBlcy5zdHJpbmcsbGVhdmU6ci5Qcm9w
VHlwZXMuc3RyaW5nLGxlYXZlQWN0aXZlOnIuUHJvcFR5cGVzLnN0cmluZyxhcHBlYXI6ci5Qcm9w
VHlwZXMuc3RyaW5nLGFwcGVhckFjdGl2ZTpyLlByb3BUeXBlcy5zdHJpbmd9KV0pLmlzUmVxdWly
ZWQsYXBwZWFyOnIuUHJvcFR5cGVzLmJvb2wsZW50ZXI6ci5Qcm9wVHlwZXMuYm9vbCxsZWF2ZTpy
LlByb3BUeXBlcy5ib29sLGFwcGVhclRpbWVvdXQ6ci5Qcm9wVHlwZXMubnVtYmVyLGVudGVyVGlt
ZW91dDpyLlByb3BUeXBlcy5udW1iZXIsbGVhdmVUaW1lb3V0OnIuUHJvcFR5cGVzLm51bWJlcn0s
dHJhbnNpdGlvbjpmdW5jdGlvbihlLHQsbil7dmFyIHI9by5nZXRSZWFjdERPTSgpLmZpbmRET01O
b2RlKHRoaXMpO2lmKCFyKXJldHVybiB2b2lkKHQmJnQoKSk7dmFyIHM9dGhpcy5wcm9wcy5uYW1l
W2VdfHx0aGlzLnByb3BzLm5hbWUrIi0iK2UsdT10aGlzLnByb3BzLm5hbWVbZSsiQWN0aXZlIl18
fHMrIi1hY3RpdmUiLGM9bnVsbCxwPWZ1bmN0aW9uKGUpe2UmJmUudGFyZ2V0IT09cnx8KGNsZWFy
VGltZW91dChjKSxpLnJlbW92ZUNsYXNzKHIscyksaS5yZW1vdmVDbGFzcyhyLHUpLGEucmVtb3Zl
RW5kRXZlbnRMaXN0ZW5lcihyLHApLHQmJnQoKSl9O2kuYWRkQ2xhc3MocixzKSx0aGlzLnF1ZXVl
Q2xhc3NBbmROb2RlKHUsciksbj8oYz1zZXRUaW1lb3V0KHAsbiksdGhpcy50cmFuc2l0aW9uVGlt
ZW91dHMucHVzaChjKSk6YS5hZGRFbmRFdmVudExpc3RlbmVyKHIscCl9LHF1ZXVlQ2xhc3NBbmRO
b2RlOmZ1bmN0aW9uKGUsdCl7dGhpcy5jbGFzc05hbWVBbmROb2RlUXVldWUucHVzaCh7Y2xhc3NO
YW1lOmUsbm9kZTp0fSksdGhpcy50aW1lb3V0fHwodGhpcy50aW1lb3V0PXNldFRpbWVvdXQodGhp
cy5mbHVzaENsYXNzTmFtZUFuZE5vZGVRdWV1ZSx1KSl9LGZsdXNoQ2xhc3NOYW1lQW5kTm9kZVF1
ZXVlOmZ1bmN0aW9uKCl7dGhpcy5pc01vdW50ZWQoKSYmdGhpcy5jbGFzc05hbWVBbmROb2RlUXVl
dWUuZm9yRWFjaChmdW5jdGlvbihlKXtpLmFkZENsYXNzKGUubm9kZSxlLmNsYXNzTmFtZSl9KSx0
aGlzLmNsYXNzTmFtZUFuZE5vZGVRdWV1ZS5sZW5ndGg9MCx0aGlzLnRpbWVvdXQ9bnVsbH0sY29t
cG9uZW50V2lsbE1vdW50OmZ1bmN0aW9uKCl7dGhpcy5jbGFzc05hbWVBbmROb2RlUXVldWU9W10s
dGhpcy50cmFuc2l0aW9uVGltZW91dHM9W119LGNvbXBvbmVudFdpbGxVbm1vdW50OmZ1bmN0aW9u
KCl7dGhpcy50aW1lb3V0JiZjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0KSx0aGlzLnRyYW5zaXRp
b25UaW1lb3V0cy5mb3JFYWNoKGZ1bmN0aW9uKGUpe2NsZWFyVGltZW91dChlKX0pLHRoaXMuY2xh
c3NOYW1lQW5kTm9kZVF1ZXVlLmxlbmd0aD0wfSxjb21wb25lbnRXaWxsQXBwZWFyOmZ1bmN0aW9u
KGUpe3RoaXMucHJvcHMuYXBwZWFyP3RoaXMudHJhbnNpdGlvbigiYXBwZWFyIixlLHRoaXMucHJv
cHMuYXBwZWFyVGltZW91dCk6ZSgpfSxjb21wb25lbnRXaWxsRW50ZXI6ZnVuY3Rpb24oZSl7dGhp
cy5wcm9wcy5lbnRlcj90aGlzLnRyYW5zaXRpb24oImVudGVyIixlLHRoaXMucHJvcHMuZW50ZXJU
aW1lb3V0KTplKCl9LGNvbXBvbmVudFdpbGxMZWF2ZTpmdW5jdGlvbihlKXt0aGlzLnByb3BzLmxl
YXZlP3RoaXMudHJhbnNpdGlvbigibGVhdmUiLGUsdGhpcy5wcm9wcy5sZWF2ZVRpbWVvdXQpOmUo
KX0scmVuZGVyOmZ1bmN0aW9uKCl7cmV0dXJuIHModGhpcy5wcm9wcy5jaGlsZHJlbil9fSk7dC5l
eHBvcnRzPWN9LHsyNjoyNiwzNDozNCwzOTozOSw1OjUsNjo2fV0sOTpbZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybigiIitlKS5yZXBsYWNlKGIsIiQmLyIp
fWZ1bmN0aW9uIG8oZSx0KXt0aGlzLmZ1bmM9ZSx0aGlzLmNvbnRleHQ9dCx0aGlzLmNvdW50PTB9
ZnVuY3Rpb24gaShlLHQsbil7dmFyIHI9ZS5mdW5jLG89ZS5jb250ZXh0O3IuY2FsbChvLHQsZS5j
b3VudCsrKX1mdW5jdGlvbiBhKGUsdCxuKXtpZihudWxsPT1lKXJldHVybiBlO3ZhciByPW8uZ2V0
UG9vbGVkKHQsbik7bShlLGksciksby5yZWxlYXNlKHIpfWZ1bmN0aW9uIHMoZSx0LG4scil7dGhp
cy5yZXN1bHQ9ZSx0aGlzLmtleVByZWZpeD10LHRoaXMuZnVuYz1uLHRoaXMuY29udGV4dD1yLHRo
aXMuY291bnQ9MH1mdW5jdGlvbiB1KGUsdCxuKXt2YXIgbz1lLnJlc3VsdCxpPWUua2V5UHJlZml4
LGE9ZS5mdW5jLHM9ZS5jb250ZXh0LHU9YS5jYWxsKHMsdCxlLmNvdW50KyspO0FycmF5LmlzQXJy
YXkodSk/Yyh1LG8sbix5LnRoYXRSZXR1cm5zQXJndW1lbnQpOm51bGwhPXUmJih2LmlzVmFsaWRF
bGVtZW50KHUpJiYodT12LmNsb25lQW5kUmVwbGFjZUtleSh1LGkrKCF1LmtleXx8dCYmdC5rZXk9
PT11LmtleT8iIjpyKHUua2V5KSsiLyIpK24pKSxvLnB1c2godSkpfWZ1bmN0aW9uIGMoZSx0LG4s
byxpKXt2YXIgYT0iIjtudWxsIT1uJiYoYT1yKG4pKyIvIik7dmFyIGM9cy5nZXRQb29sZWQodCxh
LG8saSk7bShlLHUsYykscy5yZWxlYXNlKGMpfWZ1bmN0aW9uIHAoZSx0LG4pe2lmKG51bGw9PWUp
cmV0dXJuIGU7dmFyIHI9W107cmV0dXJuIGMoZSxyLG51bGwsdCxuKSxyfWZ1bmN0aW9uIGwoZSx0
LG4pe3JldHVybiBudWxsfWZ1bmN0aW9uIGYoZSx0KXtyZXR1cm4gbShlLGwsbnVsbCl9ZnVuY3Rp
b24gZChlKXt2YXIgdD1bXTtyZXR1cm4gYyhlLHQsbnVsbCx5LnRoYXRSZXR1cm5zQXJndW1lbnQp
LHR9dmFyIGg9ZSg0KSx2PWUoMTUpLHk9ZSg0MSksbT1lKDM3KSxnPWgudHdvQXJndW1lbnRQb29s
ZXIsRT1oLmZvdXJBcmd1bWVudFBvb2xlcixiPS9cLysvZztvLnByb3RvdHlwZS5kZXN0cnVjdG9y
PWZ1bmN0aW9uKCl7dGhpcy5mdW5jPW51bGwsdGhpcy5jb250ZXh0PW51bGwsdGhpcy5jb3VudD0w
fSxoLmFkZFBvb2xpbmdUbyhvLGcpLHMucHJvdG90eXBlLmRlc3RydWN0b3I9ZnVuY3Rpb24oKXt0
aGlzLnJlc3VsdD1udWxsLHRoaXMua2V5UHJlZml4PW51bGwsdGhpcy5mdW5jPW51bGwsdGhpcy5j
b250ZXh0PW51bGwsdGhpcy5jb3VudD0wfSxoLmFkZFBvb2xpbmdUbyhzLEUpO3ZhciBUPXtmb3JF
YWNoOmEsbWFwOnAsbWFwSW50b1dpdGhLZXlQcmVmaXhJbnRlcm5hbDpjLGNvdW50OmYsdG9BcnJh
eTpkfTt0LmV4cG9ydHM9VH0sezE1OjE1LDM3OjM3LDQ6NCw0MTo0MX1dLDEwOltmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGV9ZnVuY3Rpb24gbyhlLHQp
e3ZhciBuPWIuaGFzT3duUHJvcGVydHkodCk/Ylt0XTpudWxsO1AuaGFzT3duUHJvcGVydHkodCkm
JigiT1ZFUlJJREVfQkFTRSIhPT1uP2YoIjczIix0KTp2b2lkIDApLGUmJigiREVGSU5FX01BTlki
IT09biYmIkRFRklORV9NQU5ZX01FUkdFRCIhPT1uP2YoIjc0Iix0KTp2b2lkIDApfWZ1bmN0aW9u
IGkoZSx0KXtpZih0KXsiZnVuY3Rpb24iPT10eXBlb2YgdD9mKCI3NSIpOnZvaWQgMCx2LmlzVmFs
aWRFbGVtZW50KHQpP2YoIjc2Iik6dm9pZCAwO3ZhciBuPWUucHJvdG90eXBlLHI9bi5fX3JlYWN0
QXV0b0JpbmRQYWlyczt0Lmhhc093blByb3BlcnR5KGcpJiZULm1peGlucyhlLHQubWl4aW5zKTtm
b3IodmFyIGkgaW4gdClpZih0Lmhhc093blByb3BlcnR5KGkpJiZpIT09Zyl7dmFyIGE9dFtpXSxz
PW4uaGFzT3duUHJvcGVydHkoaSk7aWYobyhzLGkpLFQuaGFzT3duUHJvcGVydHkoaSkpVFtpXShl
LGEpO2Vsc2V7dmFyIHA9Yi5oYXNPd25Qcm9wZXJ0eShpKSxsPSJmdW5jdGlvbiI9PXR5cGVvZiBh
LGQ9bCYmIXAmJiFzJiZ0LmF1dG9iaW5kIT09ITE7aWYoZClyLnB1c2goaSxhKSxuW2ldPWE7ZWxz
ZSBpZihzKXt2YXIgaD1iW2ldOyFwfHwiREVGSU5FX01BTllfTUVSR0VEIiE9PWgmJiJERUZJTkVf
TUFOWSIhPT1oP2YoIjc3IixoLGkpOnZvaWQgMCwiREVGSU5FX01BTllfTUVSR0VEIj09PWg/bltp
XT11KG5baV0sYSk6IkRFRklORV9NQU5ZIj09PWgmJihuW2ldPWMobltpXSxhKSl9ZWxzZSBuW2ld
PWF9fX19ZnVuY3Rpb24gYShlLHQpe2lmKHQpZm9yKHZhciBuIGluIHQpe3ZhciByPXRbbl07aWYo
dC5oYXNPd25Qcm9wZXJ0eShuKSl7dmFyIG89biBpbiBUO28/ZigiNzgiLG4pOnZvaWQgMDt2YXIg
aT1uIGluIGU7aT9mKCI3OSIsbik6dm9pZCAwLGVbbl09cn19fWZ1bmN0aW9uIHMoZSx0KXtlJiZ0
JiYib2JqZWN0Ij09dHlwZW9mIGUmJiJvYmplY3QiPT10eXBlb2YgdD92b2lkIDA6ZigiODAiKTtm
b3IodmFyIG4gaW4gdCl0Lmhhc093blByb3BlcnR5KG4pJiYodm9pZCAwIT09ZVtuXT9mKCI4MSIs
bik6dm9pZCAwLGVbbl09dFtuXSk7cmV0dXJuIGV9ZnVuY3Rpb24gdShlLHQpe3JldHVybiBmdW5j
dGlvbigpe3ZhciBuPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpLHI9dC5hcHBseSh0aGlzLGFyZ3Vt
ZW50cyk7aWYobnVsbD09bilyZXR1cm4gcjtpZihudWxsPT1yKXJldHVybiBuO3ZhciBvPXt9O3Jl
dHVybiBzKG8sbikscyhvLHIpLG99fWZ1bmN0aW9uIGMoZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXtl
LmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX19ZnVuY3Rpb24g
cChlLHQpe3ZhciBuPXQuYmluZChlKTtyZXR1cm4gbn1mdW5jdGlvbiBsKGUpe2Zvcih2YXIgdD1l
Ll9fcmVhY3RBdXRvQmluZFBhaXJzLG49MDtuPHQubGVuZ3RoO24rPTIpe3ZhciByPXRbbl0sbz10
W24rMV07ZVtyXT1wKGUsbyl9fXZhciBmPWUoMzUpLGQ9ZSg0NiksaD1lKDExKSx2PWUoMTUpLHk9
KGUoMjApLGUoMTkpKSxtPWUoNDIpLGc9KGUoNDMpLGUoNDUpLCJtaXhpbnMiKSxFPVtdLGI9e21p
eGluczoiREVGSU5FX01BTlkiLHN0YXRpY3M6IkRFRklORV9NQU5ZIixwcm9wVHlwZXM6IkRFRklO
RV9NQU5ZIixjb250ZXh0VHlwZXM6IkRFRklORV9NQU5ZIixjaGlsZENvbnRleHRUeXBlczoiREVG
SU5FX01BTlkiLGdldERlZmF1bHRQcm9wczoiREVGSU5FX01BTllfTUVSR0VEIixnZXRJbml0aWFs
U3RhdGU6IkRFRklORV9NQU5ZX01FUkdFRCIsZ2V0Q2hpbGRDb250ZXh0OiJERUZJTkVfTUFOWV9N
RVJHRUQiLHJlbmRlcjoiREVGSU5FX09OQ0UiLGNvbXBvbmVudFdpbGxNb3VudDoiREVGSU5FX01B
TlkiLGNvbXBvbmVudERpZE1vdW50OiJERUZJTkVfTUFOWSIsY29tcG9uZW50V2lsbFJlY2VpdmVQ
cm9wczoiREVGSU5FX01BTlkiLHNob3VsZENvbXBvbmVudFVwZGF0ZToiREVGSU5FX09OQ0UiLGNv
bXBvbmVudFdpbGxVcGRhdGU6IkRFRklORV9NQU5ZIixjb21wb25lbnREaWRVcGRhdGU6IkRFRklO
RV9NQU5ZIixjb21wb25lbnRXaWxsVW5tb3VudDoiREVGSU5FX01BTlkiLHVwZGF0ZUNvbXBvbmVu
dDoiT1ZFUlJJREVfQkFTRSJ9LFQ9e2Rpc3BsYXlOYW1lOmZ1bmN0aW9uKGUsdCl7ZS5kaXNwbGF5
TmFtZT10fSxtaXhpbnM6ZnVuY3Rpb24oZSx0KXtpZih0KWZvcih2YXIgbj0wO248dC5sZW5ndGg7
bisrKWkoZSx0W25dKX0sY2hpbGRDb250ZXh0VHlwZXM6ZnVuY3Rpb24oZSx0KXtlLmNoaWxkQ29u
dGV4dFR5cGVzPWQoe30sZS5jaGlsZENvbnRleHRUeXBlcyx0KX0sY29udGV4dFR5cGVzOmZ1bmN0
aW9uKGUsdCl7ZS5jb250ZXh0VHlwZXM9ZCh7fSxlLmNvbnRleHRUeXBlcyx0KX0sZ2V0RGVmYXVs
dFByb3BzOmZ1bmN0aW9uKGUsdCl7ZS5nZXREZWZhdWx0UHJvcHM/ZS5nZXREZWZhdWx0UHJvcHM9
dShlLmdldERlZmF1bHRQcm9wcyx0KTplLmdldERlZmF1bHRQcm9wcz10fSxwcm9wVHlwZXM6ZnVu
Y3Rpb24oZSx0KXtlLnByb3BUeXBlcz1kKHt9LGUucHJvcFR5cGVzLHQpfSxzdGF0aWNzOmZ1bmN0
aW9uKGUsdCl7YShlLHQpfSxhdXRvYmluZDpmdW5jdGlvbigpe319LFA9e3JlcGxhY2VTdGF0ZTpm
dW5jdGlvbihlLHQpe3RoaXMudXBkYXRlci5lbnF1ZXVlUmVwbGFjZVN0YXRlKHRoaXMsZSksdCYm
dGhpcy51cGRhdGVyLmVucXVldWVDYWxsYmFjayh0aGlzLHQsInJlcGxhY2VTdGF0ZSIpfSxpc01v
dW50ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy51cGRhdGVyLmlzTW91bnRlZCh0aGlzKX19LHc9
ZnVuY3Rpb24oKXt9O2Qody5wcm90b3R5cGUsaC5wcm90b3R5cGUsUCk7dmFyIEE9e2NyZWF0ZUNs
YXNzOmZ1bmN0aW9uKGUpe3ZhciB0PXIoZnVuY3Rpb24oZSxuLHIpe3RoaXMuX19yZWFjdEF1dG9C
aW5kUGFpcnMubGVuZ3RoJiZsKHRoaXMpLHRoaXMucHJvcHM9ZSx0aGlzLmNvbnRleHQ9bix0aGlz
LnJlZnM9bSx0aGlzLnVwZGF0ZXI9cnx8eSx0aGlzLnN0YXRlPW51bGw7dmFyIG89dGhpcy5nZXRJ
bml0aWFsU3RhdGU/dGhpcy5nZXRJbml0aWFsU3RhdGUoKTpudWxsOyJvYmplY3QiIT10eXBlb2Yg
b3x8QXJyYXkuaXNBcnJheShvKT9mKCI4MiIsdC5kaXNwbGF5TmFtZXx8IlJlYWN0Q29tcG9zaXRl
Q29tcG9uZW50Iik6dm9pZCAwLHRoaXMuc3RhdGU9b30pO3QucHJvdG90eXBlPW5ldyB3LHQucHJv
dG90eXBlLmNvbnN0cnVjdG9yPXQsdC5wcm90b3R5cGUuX19yZWFjdEF1dG9CaW5kUGFpcnM9W10s
RS5mb3JFYWNoKGkuYmluZChudWxsLHQpKSxpKHQsZSksdC5nZXREZWZhdWx0UHJvcHMmJih0LmRl
ZmF1bHRQcm9wcz10LmdldERlZmF1bHRQcm9wcygpKSx0LnByb3RvdHlwZS5yZW5kZXI/dm9pZCAw
OmYoIjgzIik7Zm9yKHZhciBuIGluIGIpdC5wcm90b3R5cGVbbl18fCh0LnByb3RvdHlwZVtuXT1u
dWxsKTtyZXR1cm4gdH0saW5qZWN0aW9uOntpbmplY3RNaXhpbjpmdW5jdGlvbihlKXtFLnB1c2go
ZSl9fX07dC5leHBvcnRzPUF9LHsxMToxMSwxNToxNSwxOToxOSwyMDoyMCwzNTozNSw0Mjo0Miw0
Mzo0Myw0NTo0NSw0Njo0Nn1dLDExOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIoZSx0LG4pe3RoaXMucHJvcHM9ZSx0aGlzLmNvbnRleHQ9dCx0aGlzLnJlZnM9YSx0aGlz
LnVwZGF0ZXI9bnx8aX12YXIgbz1lKDM1KSxpPWUoMTkpLGE9KGUoMzEpLGUoNDIpKTtlKDQzKSxl
KDQ1KTtyLnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50PXt9LHIucHJvdG90eXBlLnNldFN0YXRl
PWZ1bmN0aW9uKGUsdCl7Im9iamVjdCIhPXR5cGVvZiBlJiYiZnVuY3Rpb24iIT10eXBlb2YgZSYm
bnVsbCE9ZT9vKCI4NSIpOnZvaWQgMCx0aGlzLnVwZGF0ZXIuZW5xdWV1ZVNldFN0YXRlKHRoaXMs
ZSksdCYmdGhpcy51cGRhdGVyLmVucXVldWVDYWxsYmFjayh0aGlzLHQsInNldFN0YXRlIil9LHIu
cHJvdG90eXBlLmZvcmNlVXBkYXRlPWZ1bmN0aW9uKGUpe3RoaXMudXBkYXRlci5lbnF1ZXVlRm9y
Y2VVcGRhdGUodGhpcyksZSYmdGhpcy51cGRhdGVyLmVucXVldWVDYWxsYmFjayh0aGlzLGUsImZv
cmNlVXBkYXRlIil9O3QuZXhwb3J0cz1yfSx7MTk6MTksMzE6MzEsMzU6MzUsNDI6NDIsNDM6NDMs
NDU6NDV9XSwxMjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDM2KSxvPXtz
aG91bGRDb21wb25lbnRVcGRhdGU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gcih0aGlzLGUsdCl9fTt0
LmV4cG9ydHM9b30sezM2OjM2fV0sMTM6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFy
IHI9e2N1cnJlbnQ6bnVsbH07dC5leHBvcnRzPXJ9LHt9XSwxNDpbZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0Ijt2YXIgcj1lKDE1KSxvPXIuY3JlYXRlRmFjdG9yeSxpPXthOm8oImEiKSxhYmJy
Om8oImFiYnIiKSxhZGRyZXNzOm8oImFkZHJlc3MiKSxhcmVhOm8oImFyZWEiKSxhcnRpY2xlOm8o
ImFydGljbGUiKSxhc2lkZTpvKCJhc2lkZSIpLGF1ZGlvOm8oImF1ZGlvIiksYjpvKCJiIiksYmFz
ZTpvKCJiYXNlIiksYmRpOm8oImJkaSIpLGJkbzpvKCJiZG8iKSxiaWc6bygiYmlnIiksYmxvY2tx
dW90ZTpvKCJibG9ja3F1b3RlIiksYm9keTpvKCJib2R5IiksYnI6bygiYnIiKSxidXR0b246bygi
YnV0dG9uIiksY2FudmFzOm8oImNhbnZhcyIpLGNhcHRpb246bygiY2FwdGlvbiIpLGNpdGU6bygi
Y2l0ZSIpLGNvZGU6bygiY29kZSIpLGNvbDpvKCJjb2wiKSxjb2xncm91cDpvKCJjb2xncm91cCIp
LGRhdGE6bygiZGF0YSIpLGRhdGFsaXN0Om8oImRhdGFsaXN0IiksZGQ6bygiZGQiKSxkZWw6bygi
ZGVsIiksZGV0YWlsczpvKCJkZXRhaWxzIiksZGZuOm8oImRmbiIpLGRpYWxvZzpvKCJkaWFsb2ci
KSxkaXY6bygiZGl2IiksZGw6bygiZGwiKSxkdDpvKCJkdCIpLGVtOm8oImVtIiksZW1iZWQ6bygi
ZW1iZWQiKSxmaWVsZHNldDpvKCJmaWVsZHNldCIpLGZpZ2NhcHRpb246bygiZmlnY2FwdGlvbiIp
LGZpZ3VyZTpvKCJmaWd1cmUiKSxmb290ZXI6bygiZm9vdGVyIiksZm9ybTpvKCJmb3JtIiksaDE6
bygiaDEiKSxoMjpvKCJoMiIpLGgzOm8oImgzIiksaDQ6bygiaDQiKSxoNTpvKCJoNSIpLGg2Om8o
Img2IiksaGVhZDpvKCJoZWFkIiksaGVhZGVyOm8oImhlYWRlciIpLGhncm91cDpvKCJoZ3JvdXAi
KSxocjpvKCJociIpLGh0bWw6bygiaHRtbCIpLGk6bygiaSIpLGlmcmFtZTpvKCJpZnJhbWUiKSxp
bWc6bygiaW1nIiksaW5wdXQ6bygiaW5wdXQiKSxpbnM6bygiaW5zIiksa2JkOm8oImtiZCIpLGtl
eWdlbjpvKCJrZXlnZW4iKSxsYWJlbDpvKCJsYWJlbCIpLGxlZ2VuZDpvKCJsZWdlbmQiKSxsaTpv
KCJsaSIpLGxpbms6bygibGluayIpLG1haW46bygibWFpbiIpLG1hcDpvKCJtYXAiKSxtYXJrOm8o
Im1hcmsiKSxtZW51Om8oIm1lbnUiKSxtZW51aXRlbTpvKCJtZW51aXRlbSIpLG1ldGE6bygibWV0
YSIpLG1ldGVyOm8oIm1ldGVyIiksbmF2Om8oIm5hdiIpLG5vc2NyaXB0Om8oIm5vc2NyaXB0Iiks
b2JqZWN0Om8oIm9iamVjdCIpLG9sOm8oIm9sIiksb3B0Z3JvdXA6bygib3B0Z3JvdXAiKSxvcHRp
b246bygib3B0aW9uIiksb3V0cHV0Om8oIm91dHB1dCIpLHA6bygicCIpLHBhcmFtOm8oInBhcmFt
IikscGljdHVyZTpvKCJwaWN0dXJlIikscHJlOm8oInByZSIpLHByb2dyZXNzOm8oInByb2dyZXNz
IikscTpvKCJxIikscnA6bygicnAiKSxydDpvKCJydCIpLHJ1Ynk6bygicnVieSIpLHM6bygicyIp
LHNhbXA6bygic2FtcCIpLHNjcmlwdDpvKCJzY3JpcHQiKSxzZWN0aW9uOm8oInNlY3Rpb24iKSxz
ZWxlY3Q6bygic2VsZWN0Iiksc21hbGw6bygic21hbGwiKSxzb3VyY2U6bygic291cmNlIiksc3Bh
bjpvKCJzcGFuIiksc3Ryb25nOm8oInN0cm9uZyIpLHN0eWxlOm8oInN0eWxlIiksc3ViOm8oInN1
YiIpLHN1bW1hcnk6bygic3VtbWFyeSIpLHN1cDpvKCJzdXAiKSx0YWJsZTpvKCJ0YWJsZSIpLHRi
b2R5Om8oInRib2R5IiksdGQ6bygidGQiKSx0ZXh0YXJlYTpvKCJ0ZXh0YXJlYSIpLHRmb290Om8o
InRmb290IiksdGg6bygidGgiKSx0aGVhZDpvKCJ0aGVhZCIpLHRpbWU6bygidGltZSIpLHRpdGxl
Om8oInRpdGxlIiksdHI6bygidHIiKSx0cmFjazpvKCJ0cmFjayIpLHU6bygidSIpLHVsOm8oInVs
IiksdmFyOm8oInZhciIpLHZpZGVvOm8oInZpZGVvIiksd2JyOm8oIndiciIpLGNpcmNsZTpvKCJj
aXJjbGUiKSxjbGlwUGF0aDpvKCJjbGlwUGF0aCIpLGRlZnM6bygiZGVmcyIpLGVsbGlwc2U6bygi
ZWxsaXBzZSIpLGc6bygiZyIpLGltYWdlOm8oImltYWdlIiksbGluZTpvKCJsaW5lIiksbGluZWFy
R3JhZGllbnQ6bygibGluZWFyR3JhZGllbnQiKSxtYXNrOm8oIm1hc2siKSxwYXRoOm8oInBhdGgi
KSxwYXR0ZXJuOm8oInBhdHRlcm4iKSxwb2x5Z29uOm8oInBvbHlnb24iKSxwb2x5bGluZTpvKCJw
b2x5bGluZSIpLHJhZGlhbEdyYWRpZW50Om8oInJhZGlhbEdyYWRpZW50IikscmVjdDpvKCJyZWN0
Iiksc3RvcDpvKCJzdG9wIiksc3ZnOm8oInN2ZyIpLHRleHQ6bygidGV4dCIpLHRzcGFuOm8oInRz
cGFuIil9O3QuZXhwb3J0cz1pfSx7MTU6MTV9XSwxNTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiB2b2lkIDAhPT1lLnJlZn1mdW5jdGlvbiBvKGUpe3Jl
dHVybiB2b2lkIDAhPT1lLmtleX12YXIgaT1lKDQ2KSxhPWUoMTMpLHM9KGUoNDUpLGUoMzEpLE9i
amVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkpLHU9ZSgxNiksYz17a2V5OiEwLHJlZjohMCxf
X3NlbGY6ITAsX19zb3VyY2U6ITB9LHA9ZnVuY3Rpb24oZSx0LG4scixvLGksYSl7dmFyIHM9eyQk
dHlwZW9mOnUsdHlwZTplLGtleTp0LHJlZjpuLHByb3BzOmEsX293bmVyOml9O3JldHVybiBzfTtw
LmNyZWF0ZUVsZW1lbnQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciBpLHU9e30sbD1udWxsLGY9bnVsbCxk
PW51bGwsaD1udWxsO2lmKG51bGwhPXQpe3IodCkmJihmPXQucmVmKSxvKHQpJiYobD0iIit0Lmtl
eSksZD12b2lkIDA9PT10Ll9fc2VsZj9udWxsOnQuX19zZWxmLGg9dm9pZCAwPT09dC5fX3NvdXJj
ZT9udWxsOnQuX19zb3VyY2U7Zm9yKGkgaW4gdClzLmNhbGwodCxpKSYmIWMuaGFzT3duUHJvcGVy
dHkoaSkmJih1W2ldPXRbaV0pfXZhciB2PWFyZ3VtZW50cy5sZW5ndGgtMjtpZigxPT09dil1LmNo
aWxkcmVuPW47ZWxzZSBpZih2PjEpe2Zvcih2YXIgeT1BcnJheSh2KSxtPTA7bTx2O20rKyl5W21d
PWFyZ3VtZW50c1ttKzJdO3UuY2hpbGRyZW49eX1pZihlJiZlLmRlZmF1bHRQcm9wcyl7dmFyIGc9
ZS5kZWZhdWx0UHJvcHM7Zm9yKGkgaW4gZyl2b2lkIDA9PT11W2ldJiYodVtpXT1nW2ldKX1yZXR1
cm4gcChlLGwsZixkLGgsYS5jdXJyZW50LHUpfSxwLmNyZWF0ZUZhY3Rvcnk9ZnVuY3Rpb24oZSl7
dmFyIHQ9cC5jcmVhdGVFbGVtZW50LmJpbmQobnVsbCxlKTtyZXR1cm4gdC50eXBlPWUsdH0scC5j
bG9uZUFuZFJlcGxhY2VLZXk9ZnVuY3Rpb24oZSx0KXt2YXIgbj1wKGUudHlwZSx0LGUucmVmLGUu
X3NlbGYsZS5fc291cmNlLGUuX293bmVyLGUucHJvcHMpO3JldHVybiBufSxwLmNsb25lRWxlbWVu
dD1mdW5jdGlvbihlLHQsbil7dmFyIHUsbD1pKHt9LGUucHJvcHMpLGY9ZS5rZXksZD1lLnJlZixo
PWUuX3NlbGYsdj1lLl9zb3VyY2UseT1lLl9vd25lcjtpZihudWxsIT10KXtyKHQpJiYoZD10LnJl
Zix5PWEuY3VycmVudCksbyh0KSYmKGY9IiIrdC5rZXkpO3ZhciBtO2UudHlwZSYmZS50eXBlLmRl
ZmF1bHRQcm9wcyYmKG09ZS50eXBlLmRlZmF1bHRQcm9wcyk7Zm9yKHUgaW4gdClzLmNhbGwodCx1
KSYmIWMuaGFzT3duUHJvcGVydHkodSkmJih2b2lkIDA9PT10W3VdJiZ2b2lkIDAhPT1tP2xbdV09
bVt1XTpsW3VdPXRbdV0pfXZhciBnPWFyZ3VtZW50cy5sZW5ndGgtMjtpZigxPT09ZylsLmNoaWxk
cmVuPW47ZWxzZSBpZihnPjEpe2Zvcih2YXIgRT1BcnJheShnKSxiPTA7YjxnO2IrKylFW2JdPWFy
Z3VtZW50c1tiKzJdO2wuY2hpbGRyZW49RX1yZXR1cm4gcChlLnR5cGUsZixkLGgsdix5LGwpfSxw
LmlzVmFsaWRFbGVtZW50PWZ1bmN0aW9uKGUpe3JldHVybiJvYmplY3QiPT10eXBlb2YgZSYmbnVs
bCE9PWUmJmUuJCR0eXBlb2Y9PT11fSx0LmV4cG9ydHM9cH0sezEzOjEzLDE2OjE2LDMxOjMxLDQ1
OjQ1LDQ2OjQ2fV0sMTY6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ImZ1bmN0
aW9uIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLmZvciYmU3ltYm9sLmZvcigicmVhY3QuZWxlbWVu
dCIpfHw2MDEwMzt0LmV4cG9ydHM9cn0se31dLDE3OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO3ZhciByPWUoMzUpLG89ZSg5KSxpPWUoMTUpLGE9ZSg0MSkscz0oZSg0MyksZSg0NSkse2Ny
ZWF0ZTpmdW5jdGlvbihlKXtpZigib2JqZWN0IiE9dHlwZW9mIGV8fCFlfHxBcnJheS5pc0FycmF5
KGUpKXJldHVybiBlO2lmKGkuaXNWYWxpZEVsZW1lbnQoZSkpcmV0dXJuIGU7MT09PWUubm9kZVR5
cGU/cigiMCIpOnZvaWQgMDt2YXIgdD1bXTtmb3IodmFyIG4gaW4gZSlvLm1hcEludG9XaXRoS2V5
UHJlZml4SW50ZXJuYWwoZVtuXSx0LG4sYS50aGF0UmV0dXJuc0FyZ3VtZW50KTtyZXR1cm4gdH19
KTt0LmV4cG9ydHM9c30sezE1OjE1LDM1OjM1LDQxOjQxLDQzOjQzLDQ1OjQ1LDk6OX1dLDE4Oltm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXt0aGlzLnZhbHVlPWUs
dGhpcy5yZXF1ZXN0Q2hhbmdlPXR9ZnVuY3Rpb24gbyhlKXt2YXIgdD17dmFsdWU6dm9pZCAwPT09
ZT9pLlByb3BUeXBlcy5hbnkuaXNSZXF1aXJlZDplLmlzUmVxdWlyZWQscmVxdWVzdENoYW5nZTpp
LlByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWR9O3JldHVybiBpLlByb3BUeXBlcy5zaGFwZSh0KX12
YXIgaT1lKDUpO3IuUHJvcFR5cGVzPXtsaW5rOm99LHQuZXhwb3J0cz1yfSx7NTo1fV0sMTk6W2Z1
bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe312YXIgbz0oZSg0NSks
e2lzTW91bnRlZDpmdW5jdGlvbihlKXtyZXR1cm4hMX0sZW5xdWV1ZUNhbGxiYWNrOmZ1bmN0aW9u
KGUsdCl7fSxlbnF1ZXVlRm9yY2VVcGRhdGU6ZnVuY3Rpb24oZSl7cihlLCJmb3JjZVVwZGF0ZSIp
fSxlbnF1ZXVlUmVwbGFjZVN0YXRlOmZ1bmN0aW9uKGUsdCl7cihlLCJyZXBsYWNlU3RhdGUiKX0s
ZW5xdWV1ZVNldFN0YXRlOmZ1bmN0aW9uKGUsdCl7cihlLCJzZXRTdGF0ZSIpfX0pO3QuZXhwb3J0
cz1vfSx7NDU6NDV9XSwyMDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj17fTt0
LmV4cG9ydHM9cn0se31dLDIxOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IHIoZSx0KXtyZXR1cm4gZT09PXQ/MCE9PWV8fDEvZT09PTEvdDplIT09ZSYmdCE9PXR9ZnVuY3Rp
b24gbyhlKXt0aGlzLm1lc3NhZ2U9ZSx0aGlzLnN0YWNrPSIifWZ1bmN0aW9uIGkoZSl7ZnVuY3Rp
b24gdCh0LG4scixpLGEscyx1KXtpZihpPWl8fHgscz1zfHxyLG51bGw9PW5bcl0pe3ZhciBjPVBb
YV07cmV0dXJuIHQ/bmV3IG8obnVsbD09PW5bcl0/IlRoZSAiK2MrIiBgIitzKyJgIGlzIG1hcmtl
ZCBhcyByZXF1aXJlZCAiKygiaW4gYCIraSsiYCwgYnV0IGl0cyB2YWx1ZSBpcyBgbnVsbGAuIik6
IlRoZSAiK2MrIiBgIitzKyJgIGlzIG1hcmtlZCBhcyByZXF1aXJlZCBpbiAiKygiYCIraSsiYCwg
YnV0IGl0cyB2YWx1ZSBpcyBgdW5kZWZpbmVkYC4iKSk6bnVsbH1yZXR1cm4gZShuLHIsaSxhLHMp
fXZhciBuPXQuYmluZChudWxsLCExKTtyZXR1cm4gbi5pc1JlcXVpcmVkPXQuYmluZChudWxsLCEw
KSxufWZ1bmN0aW9uIGEoZSl7ZnVuY3Rpb24gdCh0LG4scixpLGEscyl7dmFyIHU9dFtuXSxjPWco
dSk7aWYoYyE9PWUpe3ZhciBwPVBbaV0sbD1FKHUpO3JldHVybiBuZXcgbygiSW52YWxpZCAiK3Ar
IiBgIithKyJgIG9mIHR5cGUgIisoImAiK2wrImAgc3VwcGxpZWQgdG8gYCIrcisiYCwgZXhwZWN0
ZWQgIikrKCJgIitlKyJgLiIpKX1yZXR1cm4gbnVsbH1yZXR1cm4gaSh0KX1mdW5jdGlvbiBzKCl7
cmV0dXJuIGkoQS50aGF0UmV0dXJucyhudWxsKSl9ZnVuY3Rpb24gdShlKXtmdW5jdGlvbiB0KHQs
bixyLGksYSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpcmV0dXJuIG5ldyBvKCJQcm9wZXJ0eSBg
IithKyJgIG9mIGNvbXBvbmVudCBgIityKyJgIGhhcyBpbnZhbGlkIFByb3BUeXBlIG5vdGF0aW9u
IGluc2lkZSBhcnJheU9mLiIpO3ZhciBzPXRbbl07aWYoIUFycmF5LmlzQXJyYXkocykpe3ZhciB1
PVBbaV0sYz1nKHMpO3JldHVybiBuZXcgbygiSW52YWxpZCAiK3UrIiBgIithKyJgIG9mIHR5cGUg
IisoImAiK2MrImAgc3VwcGxpZWQgdG8gYCIrcisiYCwgZXhwZWN0ZWQgYW4gYXJyYXkuIikpfWZv
cih2YXIgcD0wO3A8cy5sZW5ndGg7cCsrKXt2YXIgbD1lKHMscCxyLGksYSsiWyIrcCsiXSIsdyk7
aWYobCBpbnN0YW5jZW9mIEVycm9yKXJldHVybiBsfXJldHVybiBudWxsfXJldHVybiBpKHQpfWZ1
bmN0aW9uIGMoKXtmdW5jdGlvbiBlKGUsdCxuLHIsaSl7dmFyIGE9ZVt0XTtpZighVC5pc1ZhbGlk
RWxlbWVudChhKSl7dmFyIHM9UFtyXSx1PWcoYSk7cmV0dXJuIG5ldyBvKCJJbnZhbGlkICIrcysi
IGAiK2krImAgb2YgdHlwZSAiKygiYCIrdSsiYCBzdXBwbGllZCB0byBgIituKyJgLCBleHBlY3Rl
ZCBhIHNpbmdsZSBSZWFjdEVsZW1lbnQuIikpfXJldHVybiBudWxsfXJldHVybiBpKGUpfWZ1bmN0
aW9uIHAoZSl7ZnVuY3Rpb24gdCh0LG4scixpLGEpe2lmKCEodFtuXWluc3RhbmNlb2YgZSkpe3Zh
ciBzPVBbaV0sdT1lLm5hbWV8fHgsYz1iKHRbbl0pO3JldHVybiBuZXcgbygiSW52YWxpZCAiK3Mr
IiBgIithKyJgIG9mIHR5cGUgIisoImAiK2MrImAgc3VwcGxpZWQgdG8gYCIrcisiYCwgZXhwZWN0
ZWQgIikrKCJpbnN0YW5jZSBvZiBgIit1KyJgLiIpKX1yZXR1cm4gbnVsbH1yZXR1cm4gaSh0KX1m
dW5jdGlvbiBsKGUpe2Z1bmN0aW9uIHQodCxuLGksYSxzKXtmb3IodmFyIHU9dFtuXSxjPTA7Yzxl
Lmxlbmd0aDtjKyspaWYocih1LGVbY10pKXJldHVybiBudWxsO3ZhciBwPVBbYV0sbD1KU09OLnN0
cmluZ2lmeShlKTtyZXR1cm4gbmV3IG8oIkludmFsaWQgIitwKyIgYCIrcysiYCBvZiB2YWx1ZSBg
Iit1KyJgICIrKCJzdXBwbGllZCB0byBgIitpKyJgLCBleHBlY3RlZCBvbmUgb2YgIitsKyIuIikp
fXJldHVybiBBcnJheS5pc0FycmF5KGUpP2kodCk6QS50aGF0UmV0dXJuc051bGx9ZnVuY3Rpb24g
ZihlKXtmdW5jdGlvbiB0KHQsbixyLGksYSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpcmV0dXJu
IG5ldyBvKCJQcm9wZXJ0eSBgIithKyJgIG9mIGNvbXBvbmVudCBgIityKyJgIGhhcyBpbnZhbGlk
IFByb3BUeXBlIG5vdGF0aW9uIGluc2lkZSBvYmplY3RPZi4iKTt2YXIgcz10W25dLHU9ZyhzKTtp
Zigib2JqZWN0IiE9PXUpe3ZhciBjPVBbaV07cmV0dXJuIG5ldyBvKCJJbnZhbGlkICIrYysiIGAi
K2ErImAgb2YgdHlwZSAiKygiYCIrdSsiYCBzdXBwbGllZCB0byBgIityKyJgLCBleHBlY3RlZCBh
biBvYmplY3QuIikpfWZvcih2YXIgcCBpbiBzKWlmKHMuaGFzT3duUHJvcGVydHkocCkpe3ZhciBs
PWUocyxwLHIsaSxhKyIuIitwLHcpO2lmKGwgaW5zdGFuY2VvZiBFcnJvcilyZXR1cm4gbH1yZXR1
cm4gbnVsbH1yZXR1cm4gaSh0KX1mdW5jdGlvbiBkKGUpe2Z1bmN0aW9uIHQodCxuLHIsaSxhKXtm
b3IodmFyIHM9MDtzPGUubGVuZ3RoO3MrKyl7dmFyIHU9ZVtzXTtpZihudWxsPT11KHQsbixyLGks
YSx3KSlyZXR1cm4gbnVsbH12YXIgYz1QW2ldO3JldHVybiBuZXcgbygiSW52YWxpZCAiK2MrIiBg
IithKyJgIHN1cHBsaWVkIHRvICIrKCJgIityKyJgLiIpKX1yZXR1cm4gQXJyYXkuaXNBcnJheShl
KT9pKHQpOkEudGhhdFJldHVybnNOdWxsfWZ1bmN0aW9uIGgoKXtmdW5jdGlvbiBlKGUsdCxuLHIs
aSl7aWYoIXkoZVt0XSkpe3ZhciBhPVBbcl07cmV0dXJuIG5ldyBvKCJJbnZhbGlkICIrYSsiIGAi
K2krImAgc3VwcGxpZWQgdG8gIisoImAiK24rImAsIGV4cGVjdGVkIGEgUmVhY3ROb2RlLiIpKX1y
ZXR1cm4gbnVsbH1yZXR1cm4gaShlKX1mdW5jdGlvbiB2KGUpe2Z1bmN0aW9uIHQodCxuLHIsaSxh
KXt2YXIgcz10W25dLHU9ZyhzKTtpZigib2JqZWN0IiE9PXUpe3ZhciBjPVBbaV07cmV0dXJuIG5l
dyBvKCJJbnZhbGlkICIrYysiIGAiK2ErImAgb2YgdHlwZSBgIit1KyJgICIrKCJzdXBwbGllZCB0
byBgIityKyJgLCBleHBlY3RlZCBgb2JqZWN0YC4iKSl9Zm9yKHZhciBwIGluIGUpe3ZhciBsPWVb
cF07aWYobCl7dmFyIGY9bChzLHAscixpLGErIi4iK3Asdyk7aWYoZilyZXR1cm4gZn19cmV0dXJu
IG51bGx9cmV0dXJuIGkodCl9ZnVuY3Rpb24geShlKXtzd2l0Y2godHlwZW9mIGUpe2Nhc2UibnVt
YmVyIjpjYXNlInN0cmluZyI6Y2FzZSJ1bmRlZmluZWQiOnJldHVybiEwO2Nhc2UiYm9vbGVhbiI6
cmV0dXJuIWU7Y2FzZSJvYmplY3QiOmlmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGUuZXZlcnko
eSk7aWYobnVsbD09PWV8fFQuaXNWYWxpZEVsZW1lbnQoZSkpcmV0dXJuITA7dmFyIHQ9XyhlKTtp
ZighdClyZXR1cm4hMTt2YXIgbixyPXQuY2FsbChlKTtpZih0IT09ZS5lbnRyaWVzKXtmb3IoOyEo
bj1yLm5leHQoKSkuZG9uZTspaWYoIXkobi52YWx1ZSkpcmV0dXJuITF9ZWxzZSBmb3IoOyEobj1y
Lm5leHQoKSkuZG9uZTspe3ZhciBvPW4udmFsdWU7aWYobyYmIXkob1sxXSkpcmV0dXJuITF9cmV0
dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19ZnVuY3Rpb24gbShlLHQpe3JldHVybiJzeW1ib2wiPT09
ZXx8IlN5bWJvbCI9PT10WyJAQHRvU3RyaW5nVGFnIl18fCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1i
b2wmJnQgaW5zdGFuY2VvZiBTeW1ib2x9ZnVuY3Rpb24gZyhlKXt2YXIgdD10eXBlb2YgZTtyZXR1
cm4gQXJyYXkuaXNBcnJheShlKT8iYXJyYXkiOmUgaW5zdGFuY2VvZiBSZWdFeHA/Im9iamVjdCI6
bSh0LGUpPyJzeW1ib2wiOnR9ZnVuY3Rpb24gRShlKXt2YXIgdD1nKGUpO2lmKCJvYmplY3QiPT09
dCl7aWYoZSBpbnN0YW5jZW9mIERhdGUpcmV0dXJuImRhdGUiO2lmKGUgaW5zdGFuY2VvZiBSZWdF
eHApcmV0dXJuInJlZ2V4cCJ9cmV0dXJuIHR9ZnVuY3Rpb24gYihlKXtyZXR1cm4gZS5jb25zdHJ1
Y3RvciYmZS5jb25zdHJ1Y3Rvci5uYW1lP2UuY29uc3RydWN0b3IubmFtZTp4fXZhciBUPWUoMTUp
LFA9ZSgyMCksdz1lKDIyKSxBPWUoNDEpLF89ZSgzMykseD0oZSg0NSksIjw8YW5vbnltb3VzPj4i
KSxPPXthcnJheTphKCJhcnJheSIpLGJvb2w6YSgiYm9vbGVhbiIpLGZ1bmM6YSgiZnVuY3Rpb24i
KSxudW1iZXI6YSgibnVtYmVyIiksb2JqZWN0OmEoIm9iamVjdCIpLHN0cmluZzphKCJzdHJpbmci
KSxzeW1ib2w6YSgic3ltYm9sIiksYW55OnMoKSxhcnJheU9mOnUsZWxlbWVudDpjKCksaW5zdGFu
Y2VPZjpwLG5vZGU6aCgpLG9iamVjdE9mOmYsb25lT2Y6bCxvbmVPZlR5cGU6ZCxzaGFwZTp2fTtv
LnByb3RvdHlwZT1FcnJvci5wcm90b3R5cGUsdC5leHBvcnRzPU99LHsxNToxNSwyMDoyMCwyMjoy
MiwzMzozMyw0MTo0MSw0NTo0NX1dLDIyOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3Zh
ciByPSJTRUNSRVRfRE9fTk9UX1BBU1NfVEhJU19PUl9ZT1VfV0lMTF9CRV9GSVJFRCI7dC5leHBv
cnRzPXJ9LHt9XSwyMzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUs
dCxuKXt0aGlzLnByb3BzPWUsdGhpcy5jb250ZXh0PXQsdGhpcy5yZWZzPXUsdGhpcy51cGRhdGVy
PW58fHN9ZnVuY3Rpb24gbygpe312YXIgaT1lKDQ2KSxhPWUoMTEpLHM9ZSgxOSksdT1lKDQyKTtv
LnByb3RvdHlwZT1hLnByb3RvdHlwZSxyLnByb3RvdHlwZT1uZXcgbyxyLnByb3RvdHlwZS5jb25z
dHJ1Y3Rvcj1yLGkoci5wcm90b3R5cGUsYS5wcm90b3R5cGUpLHIucHJvdG90eXBlLmlzUHVyZVJl
YWN0Q29tcG9uZW50PSEwLHQuZXhwb3J0cz1yfSx7MTE6MTEsMTk6MTksNDI6NDIsNDY6NDZ9XSwy
NDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7dmFyIG49e307
cmV0dXJuIGZ1bmN0aW9uKHIpe25bdF09cixlLnNldFN0YXRlKG4pfX12YXIgbz17Y3JlYXRlU3Rh
dGVTZXR0ZXI6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24obixyLG8saSxhLHMpe3ZhciB1
PXQuY2FsbChlLG4scixvLGksYSxzKTt1JiZlLnNldFN0YXRlKHUpfX0sY3JlYXRlU3RhdGVLZXlT
ZXR0ZXI6ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLl9fa2V5U2V0dGVyc3x8KGUuX19rZXlTZXR0ZXJz
PXt9KTtyZXR1cm4gblt0XXx8KG5bdF09cihlLHQpKX19O28uTWl4aW49e2NyZWF0ZVN0YXRlU2V0
dGVyOmZ1bmN0aW9uKGUpe3JldHVybiBvLmNyZWF0ZVN0YXRlU2V0dGVyKHRoaXMsZSl9LGNyZWF0
ZVN0YXRlS2V5U2V0dGVyOmZ1bmN0aW9uKGUpe3JldHVybiBvLmNyZWF0ZVN0YXRlS2V5U2V0dGVy
KHRoaXMsZSl9fSx0LmV4cG9ydHM9b30se31dLDI1OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO3ZhciByPWUoMzIpLG89e2dldENoaWxkTWFwcGluZzpmdW5jdGlvbihlLHQpe3JldHVybiBl
P3IoZSk6ZX0sbWVyZ2VDaGlsZE1hcHBpbmdzOmZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gbihuKXty
ZXR1cm4gdC5oYXNPd25Qcm9wZXJ0eShuKT90W25dOmVbbl19ZT1lfHx7fSx0PXR8fHt9O3ZhciBy
PXt9LG89W107Zm9yKHZhciBpIGluIGUpdC5oYXNPd25Qcm9wZXJ0eShpKT9vLmxlbmd0aCYmKHJb
aV09byxvPVtdKTpvLnB1c2goaSk7dmFyIGEscz17fTtmb3IodmFyIHUgaW4gdCl7aWYoci5oYXNP
d25Qcm9wZXJ0eSh1KSlmb3IoYT0wO2E8clt1XS5sZW5ndGg7YSsrKXt2YXIgYz1yW3VdW2FdO3Nb
clt1XVthXV09bihjKX1zW3VdPW4odSl9Zm9yKGE9MDthPG8ubGVuZ3RoO2ErKylzW29bYV1dPW4o
b1thXSk7cmV0dXJuIHN9fTt0LmV4cG9ydHM9b30sezMyOjMyfV0sMjY6W2Z1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe3ZhciBlPXMoImFuaW1hdGlvbmVuZCIpLHQ9cygi
dHJhbnNpdGlvbmVuZCIpO2UmJnUucHVzaChlKSx0JiZ1LnB1c2godCl9ZnVuY3Rpb24gbyhlLHQs
bil7ZS5hZGRFdmVudExpc3RlbmVyKHQsbiwhMSl9ZnVuY3Rpb24gaShlLHQsbil7ZS5yZW1vdmVF
dmVudExpc3RlbmVyKHQsbiwhMSl9dmFyIGE9ZSg0MCkscz1lKDEpLHU9W107YS5jYW5Vc2VET00m
JnIoKTt2YXIgYz17YWRkRW5kRXZlbnRMaXN0ZW5lcjpmdW5jdGlvbihlLHQpe3JldHVybiAwPT09
dS5sZW5ndGg/dm9pZCB3aW5kb3cuc2V0VGltZW91dCh0LDApOnZvaWQgdS5mb3JFYWNoKGZ1bmN0
aW9uKG4pe28oZSxuLHQpfSl9LHJlbW92ZUVuZEV2ZW50TGlzdGVuZXI6ZnVuY3Rpb24oZSx0KXsw
IT09dS5sZW5ndGgmJnUuZm9yRWFjaChmdW5jdGlvbihuKXtpKGUsbix0KX0pfX07dC5leHBvcnRz
PWN9LHsxOjEsNDA6NDB9XSwyNzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biByKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90
IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gbyhlLHQpe2lmKCFlKXRocm93
IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVy
KCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIXR8fCJvYmplY3QiIT10eXBlb2YgdCYmImZ1
bmN0aW9uIiE9dHlwZW9mIHQ/ZTp0fWZ1bmN0aW9uIGkoZSx0KXtpZigiZnVuY3Rpb24iIT10eXBl
b2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0
IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiK3R5cGVvZiB0KTtlLnByb3RvdHlw
ZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSxlbnVt
ZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiYoT2JqZWN0LnNldFBy
b3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihlLHQpOmUuX19wcm90b19fPXQpfXZhciBh
PWUoNDYpLHM9ZSg1KSx1PShlKDYpLGUoMjUpKSxjPWUoNDEpLHA9ZnVuY3Rpb24oZSl7ZnVuY3Rp
b24gdCgpe3ZhciBuLGkscztyKHRoaXMsdCk7Zm9yKHZhciBjPWFyZ3VtZW50cy5sZW5ndGgscD1B
cnJheShjKSxsPTA7bDxjO2wrKylwW2xdPWFyZ3VtZW50c1tsXTtyZXR1cm4gbj1pPW8odGhpcyxl
LmNhbGwuYXBwbHkoZSxbdGhpc10uY29uY2F0KHApKSksaS5zdGF0ZT17Y2hpbGRyZW46dS5nZXRD
aGlsZE1hcHBpbmcoaS5wcm9wcy5jaGlsZHJlbil9LGkucGVyZm9ybUFwcGVhcj1mdW5jdGlvbihl
KXtpLmN1cnJlbnRseVRyYW5zaXRpb25pbmdLZXlzW2VdPSEwO3ZhciB0PWkucmVmc1tlXTt0LmNv
bXBvbmVudFdpbGxBcHBlYXI/dC5jb21wb25lbnRXaWxsQXBwZWFyKGkuX2hhbmRsZURvbmVBcHBl
YXJpbmcuYmluZChpLGUpKTppLl9oYW5kbGVEb25lQXBwZWFyaW5nKGUpfSxpLl9oYW5kbGVEb25l
QXBwZWFyaW5nPWZ1bmN0aW9uKGUpe3ZhciB0PWkucmVmc1tlXTt0LmNvbXBvbmVudERpZEFwcGVh
ciYmdC5jb21wb25lbnREaWRBcHBlYXIoKSxkZWxldGUgaS5jdXJyZW50bHlUcmFuc2l0aW9uaW5n
S2V5c1tlXTt2YXIgbjtuPXUuZ2V0Q2hpbGRNYXBwaW5nKGkucHJvcHMuY2hpbGRyZW4pLG4mJm4u
aGFzT3duUHJvcGVydHkoZSl8fGkucGVyZm9ybUxlYXZlKGUpfSxpLnBlcmZvcm1FbnRlcj1mdW5j
dGlvbihlKXtpLmN1cnJlbnRseVRyYW5zaXRpb25pbmdLZXlzW2VdPSEwO3ZhciB0PWkucmVmc1tl
XTt0LmNvbXBvbmVudFdpbGxFbnRlcj90LmNvbXBvbmVudFdpbGxFbnRlcihpLl9oYW5kbGVEb25l
RW50ZXJpbmcuYmluZChpLGUpKTppLl9oYW5kbGVEb25lRW50ZXJpbmcoZSl9LGkuX2hhbmRsZURv
bmVFbnRlcmluZz1mdW5jdGlvbihlKXt2YXIgdD1pLnJlZnNbZV07dC5jb21wb25lbnREaWRFbnRl
ciYmdC5jb21wb25lbnREaWRFbnRlcigpLGRlbGV0ZSBpLmN1cnJlbnRseVRyYW5zaXRpb25pbmdL
ZXlzW2VdO3ZhciBuO249dS5nZXRDaGlsZE1hcHBpbmcoaS5wcm9wcy5jaGlsZHJlbiksbiYmbi5o
YXNPd25Qcm9wZXJ0eShlKXx8aS5wZXJmb3JtTGVhdmUoZSl9LGkucGVyZm9ybUxlYXZlPWZ1bmN0
aW9uKGUpe2kuY3VycmVudGx5VHJhbnNpdGlvbmluZ0tleXNbZV09ITA7dmFyIHQ9aS5yZWZzW2Vd
O3QuY29tcG9uZW50V2lsbExlYXZlP3QuY29tcG9uZW50V2lsbExlYXZlKGkuX2hhbmRsZURvbmVM
ZWF2aW5nLmJpbmQoaSxlKSk6aS5faGFuZGxlRG9uZUxlYXZpbmcoZSl9LGkuX2hhbmRsZURvbmVM
ZWF2aW5nPWZ1bmN0aW9uKGUpe3ZhciB0PWkucmVmc1tlXTt0LmNvbXBvbmVudERpZExlYXZlJiZ0
LmNvbXBvbmVudERpZExlYXZlKCksZGVsZXRlIGkuY3VycmVudGx5VHJhbnNpdGlvbmluZ0tleXNb
ZV07dmFyIG47bj11LmdldENoaWxkTWFwcGluZyhpLnByb3BzLmNoaWxkcmVuKSxuJiZuLmhhc093
blByb3BlcnR5KGUpP2kucGVyZm9ybUVudGVyKGUpOmkuc2V0U3RhdGUoZnVuY3Rpb24odCl7dmFy
IG49YSh7fSx0LmNoaWxkcmVuKTtyZXR1cm4gZGVsZXRlIG5bZV0se2NoaWxkcmVuOm59fSl9LHM9
bixvKGkscyl9cmV0dXJuIGkodCxlKSx0LnByb3RvdHlwZS5jb21wb25lbnRXaWxsTW91bnQ9ZnVu
Y3Rpb24oKXt0aGlzLmN1cnJlbnRseVRyYW5zaXRpb25pbmdLZXlzPXt9LHRoaXMua2V5c1RvRW50
ZXI9W10sdGhpcy5rZXlzVG9MZWF2ZT1bXX0sdC5wcm90b3R5cGUuY29tcG9uZW50RGlkTW91bnQ9
ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnN0YXRlLmNoaWxkcmVuO2Zvcih2YXIgdCBpbiBlKWVbdF0m
JnRoaXMucGVyZm9ybUFwcGVhcih0KX0sdC5wcm90b3R5cGUuY29tcG9uZW50V2lsbFJlY2VpdmVQ
cm9wcz1mdW5jdGlvbihlKXt2YXIgdDt0PXUuZ2V0Q2hpbGRNYXBwaW5nKGUuY2hpbGRyZW4pO3Zh
ciBuPXRoaXMuc3RhdGUuY2hpbGRyZW47dGhpcy5zZXRTdGF0ZSh7Y2hpbGRyZW46dS5tZXJnZUNo
aWxkTWFwcGluZ3Mobix0KX0pO3ZhciByO2ZvcihyIGluIHQpe3ZhciBvPW4mJm4uaGFzT3duUHJv
cGVydHkocik7IXRbcl18fG98fHRoaXMuY3VycmVudGx5VHJhbnNpdGlvbmluZ0tleXNbcl18fHRo
aXMua2V5c1RvRW50ZXIucHVzaChyKX1mb3IociBpbiBuKXt2YXIgaT10JiZ0Lmhhc093blByb3Bl
cnR5KHIpOyFuW3JdfHxpfHx0aGlzLmN1cnJlbnRseVRyYW5zaXRpb25pbmdLZXlzW3JdfHx0aGlz
LmtleXNUb0xlYXZlLnB1c2gocil9fSx0LnByb3RvdHlwZS5jb21wb25lbnREaWRVcGRhdGU9ZnVu
Y3Rpb24oKXt2YXIgZT10aGlzLmtleXNUb0VudGVyO3RoaXMua2V5c1RvRW50ZXI9W10sZS5mb3JF
YWNoKHRoaXMucGVyZm9ybUVudGVyKTt2YXIgdD10aGlzLmtleXNUb0xlYXZlO3RoaXMua2V5c1Rv
TGVhdmU9W10sdC5mb3JFYWNoKHRoaXMucGVyZm9ybUxlYXZlKX0sdC5wcm90b3R5cGUucmVuZGVy
PWZ1bmN0aW9uKCl7dmFyIGU9W107Zm9yKHZhciB0IGluIHRoaXMuc3RhdGUuY2hpbGRyZW4pe3Zh
ciBuPXRoaXMuc3RhdGUuY2hpbGRyZW5bdF07biYmZS5wdXNoKHMuY2xvbmVFbGVtZW50KHRoaXMu
cHJvcHMuY2hpbGRGYWN0b3J5KG4pLHtyZWY6dCxrZXk6dH0pKX12YXIgcj1hKHt9LHRoaXMucHJv
cHMpO3JldHVybiBkZWxldGUgci50cmFuc2l0aW9uTGVhdmUsZGVsZXRlIHIudHJhbnNpdGlvbk5h
bWUsZGVsZXRlIHIudHJhbnNpdGlvbkFwcGVhcixkZWxldGUgci50cmFuc2l0aW9uRW50ZXIsZGVs
ZXRlIHIuY2hpbGRGYWN0b3J5LGRlbGV0ZSByLnRyYW5zaXRpb25MZWF2ZVRpbWVvdXQsZGVsZXRl
IHIudHJhbnNpdGlvbkVudGVyVGltZW91dCxkZWxldGUgci50cmFuc2l0aW9uQXBwZWFyVGltZW91
dCxkZWxldGUgci5jb21wb25lbnQscy5jcmVhdGVFbGVtZW50KHRoaXMucHJvcHMuY29tcG9uZW50
LHIsZSl9LHR9KHMuQ29tcG9uZW50KTtwLmRpc3BsYXlOYW1lPSJSZWFjdFRyYW5zaXRpb25Hcm91
cCIscC5wcm9wVHlwZXM9e2NvbXBvbmVudDpzLlByb3BUeXBlcy5hbnksY2hpbGRGYWN0b3J5OnMu
UHJvcFR5cGVzLmZ1bmN9LHAuZGVmYXVsdFByb3BzPXtjb21wb25lbnQ6InNwYW4iLGNoaWxkRmFj
dG9yeTpjLnRoYXRSZXR1cm5zQXJndW1lbnR9LHQuZXhwb3J0cz1wfSx7MjU6MjUsNDE6NDEsNDY6
NDYsNTo1LDY6Nn1dLDI4OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3QuZXhwb3J0cz0i
MTUuNC4wIn0se31dLDI5OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoMyks
bz1lKDUpLGk9KGUoNiksZSgxMikpLGE9ZSg3KSxzPWUoMTcpLHU9ZSgyNyksYz1lKDM2KSxwPWUo
MzgpO28uYWRkb25zPXtDU1NUcmFuc2l0aW9uR3JvdXA6YSxMaW5rZWRTdGF0ZU1peGluOnIsUHVy
ZVJlbmRlck1peGluOmksVHJhbnNpdGlvbkdyb3VwOnUsY3JlYXRlRnJhZ21lbnQ6cy5jcmVhdGUs
c2hhbGxvd0NvbXBhcmU6Yyx1cGRhdGU6cH0sdC5leHBvcnRzPW99LHsxMjoxMiwxNzoxNywyNzoy
NywzOjMsMzY6MzYsMzg6MzgsNTo1LDY6Niw3Ojd9XSwzMDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ug
c3RyaWN0Ijt2YXIgcj1lKDQ2KSxvPWUoMjkpLGk9cih7X19TRUNSRVRfSU5URVJOQUxTX0RPX05P
VF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQ6e1JlYWN0Q3VycmVudE93bmVyOmUoMTMpfX0sbyk7
dC5leHBvcnRzPWl9LHsxMzoxMywyOToyOSw0Njo0Nn1dLDMxOltmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO3ZhciByPSExO3QuZXhwb3J0cz1yfSx7fV0sMzI6W2Z1bmN0aW9uKGUsdCxuKXso
ZnVuY3Rpb24obil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7aWYoZSYmIm9iamVj
dCI9PXR5cGVvZiBlKXt2YXIgbz1lLGk9dm9pZCAwPT09b1tuXTtpJiZudWxsIT10JiYob1tuXT10
KX19ZnVuY3Rpb24gbyhlLHQpe2lmKG51bGw9PWUpcmV0dXJuIGU7dmFyIG49e307cmV0dXJuIGko
ZSxyLG4pLG59dmFyIGk9KGUoMiksZSgzNykpO2UoNDUpOyJ1bmRlZmluZWQiIT10eXBlb2YgbiYm
bi5lbnYsdC5leHBvcnRzPW99KS5jYWxsKHRoaXMsdm9pZCAwKX0sezI6MiwzNzozNyw0NTo0NX1d
LDMzOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQ9ZSYm
KG8mJmVbb118fGVbaV0pO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB0KXJldHVybiB0fXZhciBvPSJm
dW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvcixpPSJAQGl0ZXJhdG9yIjt0
LmV4cG9ydHM9cn0se31dLDM0OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IHIoZSl7cmV0dXJuIGkuaXNWYWxpZEVsZW1lbnQoZSk/dm9pZCAwOm8oIjE0MyIpLGV9dmFyIG89
ZSgzNSksaT1lKDE1KTtlKDQzKTt0LmV4cG9ydHM9cn0sezE1OjE1LDM1OjM1LDQzOjQzfV0sMzU6
W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtmb3IodmFyIHQ9YXJn
dW1lbnRzLmxlbmd0aC0xLG49Ik1pbmlmaWVkIFJlYWN0IGVycm9yICMiK2UrIjsgdmlzaXQgaHR0
cDovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL2Vycm9yLWRlY29kZXIuaHRtbD9pbnZh
cmlhbnQ9IitlLHI9MDtyPHQ7cisrKW4rPSImYXJnc1tdPSIrZW5jb2RlVVJJQ29tcG9uZW50KGFy
Z3VtZW50c1tyKzFdKTtuKz0iIGZvciB0aGUgZnVsbCBtZXNzYWdlIG9yIHVzZSB0aGUgbm9uLW1p
bmlmaWVkIGRldiBlbnZpcm9ubWVudCBmb3IgZnVsbCBlcnJvcnMgYW5kIGFkZGl0aW9uYWwgaGVs
cGZ1bCB3YXJuaW5ncy4iO3ZhciBvPW5ldyBFcnJvcihuKTt0aHJvdyBvLm5hbWU9IkludmFyaWFu
dCBWaW9sYXRpb24iLG8uZnJhbWVzVG9Qb3A9MSxvfXQuZXhwb3J0cz1yfSx7fV0sMzY6W2Z1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbil7cmV0dXJuIW8oZS5wcm9w
cyx0KXx8IW8oZS5zdGF0ZSxuKX12YXIgbz1lKDQ0KTt0LmV4cG9ydHM9cn0sezQ0OjQ0fV0sMzc6
W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe3JldHVybiBlJiYi
b2JqZWN0Ij09dHlwZW9mIGUmJm51bGwhPWUua2V5P2MuZXNjYXBlKGUua2V5KTp0LnRvU3RyaW5n
KDM2KX1mdW5jdGlvbiBvKGUsdCxuLGkpe3ZhciBmPXR5cGVvZiBlO2lmKCJ1bmRlZmluZWQiIT09
ZiYmImJvb2xlYW4iIT09Znx8KGU9bnVsbCksbnVsbD09PWV8fCJzdHJpbmciPT09Znx8Im51bWJl
ciI9PT1mfHwib2JqZWN0Ij09PWYmJmUuJCR0eXBlb2Y9PT1zKXJldHVybiBuKGksZSwiIj09PXQ/
cCtyKGUsMCk6dCksMTt2YXIgZCxoLHY9MCx5PSIiPT09dD9wOnQrbDtpZihBcnJheS5pc0FycmF5
KGUpKWZvcih2YXIgbT0wO208ZS5sZW5ndGg7bSsrKWQ9ZVttXSxoPXkrcihkLG0pLHYrPW8oZCxo
LG4saSk7ZWxzZXt2YXIgZz11KGUpO2lmKGcpe3ZhciBFLGI9Zy5jYWxsKGUpO2lmKGchPT1lLmVu
dHJpZXMpZm9yKHZhciBUPTA7IShFPWIubmV4dCgpKS5kb25lOylkPUUudmFsdWUsaD15K3IoZCxU
KyspLHYrPW8oZCxoLG4saSk7ZWxzZSBmb3IoOyEoRT1iLm5leHQoKSkuZG9uZTspe3ZhciBQPUUu
dmFsdWU7UCYmKGQ9UFsxXSxoPXkrYy5lc2NhcGUoUFswXSkrbCtyKGQsMCksdis9byhkLGgsbixp
KSl9fWVsc2UgaWYoIm9iamVjdCI9PT1mKXt2YXIgdz0iIixBPVN0cmluZyhlKTthKCIzMSIsIltv
YmplY3QgT2JqZWN0XSI9PT1BPyJvYmplY3Qgd2l0aCBrZXlzIHsiK09iamVjdC5rZXlzKGUpLmpv
aW4oIiwgIikrIn0iOkEsdyl9fXJldHVybiB2fWZ1bmN0aW9uIGkoZSx0LG4pe3JldHVybiBudWxs
PT1lPzA6byhlLCIiLHQsbil9dmFyIGE9ZSgzNSkscz0oZSgxMyksZSgxNikpLHU9ZSgzMyksYz0o
ZSg0MyksZSgyKSkscD0oZSg0NSksIi4iKSxsPSI6Ijt0LmV4cG9ydHM9aX0sezEzOjEzLDE2OjE2
LDI6MiwzMzozMywzNTozNSw0Mzo0Myw0NTo0NX1dLDM4OltmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ZS5jb25jYXQoKTpl
JiYib2JqZWN0Ij09dHlwZW9mIGU/cyhuZXcgZS5jb25zdHJ1Y3RvcixlKTplfWZ1bmN0aW9uIG8o
ZSx0LG4pe0FycmF5LmlzQXJyYXkoZSk/dm9pZCAwOmEoIjEiLG4sZSk7dmFyIHI9dFtuXTtBcnJh
eS5pc0FycmF5KHIpP3ZvaWQgMDphKCIyIixuLHIpfWZ1bmN0aW9uIGkoZSx0KXtpZigib2JqZWN0
IiE9dHlwZW9mIHQ/YSgiMyIsdi5qb2luKCIsICIpLGYpOnZvaWQgMCx1LmNhbGwodCxmKSlyZXR1
cm4gMSE9PU9iamVjdC5rZXlzKHQpLmxlbmd0aD9hKCI0IixmKTp2b2lkIDAsdFtmXTt2YXIgbj1y
KGUpO2lmKHUuY2FsbCh0LGQpKXt2YXIgbT10W2RdO20mJiJvYmplY3QiPT10eXBlb2YgbT92b2lk
IDA6YSgiNSIsZCxtKSxuJiYib2JqZWN0Ij09dHlwZW9mIG4/dm9pZCAwOmEoIjYiLGQsbikscyhu
LHRbZF0pfXUuY2FsbCh0LGMpJiYobyhlLHQsYyksdFtjXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe24u
cHVzaChlKX0pKSx1LmNhbGwodCxwKSYmKG8oZSx0LHApLHRbcF0uZm9yRWFjaChmdW5jdGlvbihl
KXtuLnVuc2hpZnQoZSl9KSksdS5jYWxsKHQsbCkmJihBcnJheS5pc0FycmF5KGUpP3ZvaWQgMDph
KCI3IixsLGUpLEFycmF5LmlzQXJyYXkodFtsXSk/dm9pZCAwOmEoIjgiLGwsdFtsXSksdFtsXS5m
b3JFYWNoKGZ1bmN0aW9uKGUpeworQXJyYXkuaXNBcnJheShlKT92b2lkIDA6YSgiOCIsbCx0W2xd
KSxuLnNwbGljZS5hcHBseShuLGUpfSkpLHUuY2FsbCh0LGgpJiYoImZ1bmN0aW9uIiE9dHlwZW9m
IHRbaF0/YSgiOSIsaCx0W2hdKTp2b2lkIDAsbj10W2hdKG4pKTtmb3IodmFyIGcgaW4gdCl5Lmhh
c093blByb3BlcnR5KGcpJiZ5W2ddfHwobltnXT1pKGVbZ10sdFtnXSkpO3JldHVybiBufXZhciBh
PWUoMzUpLHM9ZSg0NiksdT0oZSg0Mykse30uaGFzT3duUHJvcGVydHkpLGM9IiRwdXNoIixwPSIk
dW5zaGlmdCIsbD0iJHNwbGljZSIsZj0iJHNldCIsZD0iJG1lcmdlIixoPSIkYXBwbHkiLHY9W2Ms
cCxsLGYsZCxoXSx5PXt9O3YuZm9yRWFjaChmdW5jdGlvbihlKXt5W2VdPSEwfSksdC5leHBvcnRz
PWl9LHszNTozNSw0Mzo0Myw0Njo0Nn1dLDM5OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIHIoZSx0KXtmb3IodmFyIG49ZTtuLnBhcmVudE5vZGU7KW49bi5wYXJlbnROb2Rl
O3ZhciByPW4ucXVlcnlTZWxlY3RvckFsbCh0KTtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmluZGV4
T2YuY2FsbChyLGUpIT09LTF9dmFyIG89ZSg0MyksaT17YWRkQ2xhc3M6ZnVuY3Rpb24oZSx0KXty
ZXR1cm4vXHMvLnRlc3QodCk/byghMSk6dm9pZCAwLHQmJihlLmNsYXNzTGlzdD9lLmNsYXNzTGlz
dC5hZGQodCk6aS5oYXNDbGFzcyhlLHQpfHwoZS5jbGFzc05hbWU9ZS5jbGFzc05hbWUrIiAiK3Qp
KSxlfSxyZW1vdmVDbGFzczpmdW5jdGlvbihlLHQpe3JldHVybi9ccy8udGVzdCh0KT9vKCExKTp2
b2lkIDAsdCYmKGUuY2xhc3NMaXN0P2UuY2xhc3NMaXN0LnJlbW92ZSh0KTppLmhhc0NsYXNzKGUs
dCkmJihlLmNsYXNzTmFtZT1lLmNsYXNzTmFtZS5yZXBsYWNlKG5ldyBSZWdFeHAoIihefFxccyki
K3QrIig/Olxcc3wkKSIsImciKSwiJDEiKS5yZXBsYWNlKC9ccysvZywiICIpLnJlcGxhY2UoL15c
cyp8XHMqJC9nLCIiKSkpLGV9LGNvbmRpdGlvbkNsYXNzOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4o
bj9pLmFkZENsYXNzOmkucmVtb3ZlQ2xhc3MpKGUsdCl9LGhhc0NsYXNzOmZ1bmN0aW9uKGUsdCl7
cmV0dXJuL1xzLy50ZXN0KHQpP28oITEpOnZvaWQgMCxlLmNsYXNzTGlzdD8hIXQmJmUuY2xhc3NM
aXN0LmNvbnRhaW5zKHQpOigiICIrZS5jbGFzc05hbWUrIiAiKS5pbmRleE9mKCIgIit0KyIgIik+
LTF9LG1hdGNoZXNTZWxlY3RvcjpmdW5jdGlvbihlLHQpe3ZhciBuPWUubWF0Y2hlc3x8ZS53ZWJr
aXRNYXRjaGVzU2VsZWN0b3J8fGUubW96TWF0Y2hlc1NlbGVjdG9yfHxlLm1zTWF0Y2hlc1NlbGVj
dG9yfHxmdW5jdGlvbih0KXtyZXR1cm4gcihlLHQpfTtyZXR1cm4gbi5jYWxsKGUsdCl9fTt0LmV4
cG9ydHM9aX0sezQzOjQzfV0sNDA6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9
ISgidW5kZWZpbmVkIj09dHlwZW9mIHdpbmRvd3x8IXdpbmRvdy5kb2N1bWVudHx8IXdpbmRvdy5k
b2N1bWVudC5jcmVhdGVFbGVtZW50KSxvPXtjYW5Vc2VET006cixjYW5Vc2VXb3JrZXJzOiJ1bmRl
ZmluZWQiIT10eXBlb2YgV29ya2VyLGNhblVzZUV2ZW50TGlzdGVuZXJzOnImJiEoIXdpbmRvdy5h
ZGRFdmVudExpc3RlbmVyJiYhd2luZG93LmF0dGFjaEV2ZW50KSxjYW5Vc2VWaWV3cG9ydDpyJiYh
IXdpbmRvdy5zY3JlZW4saXNJbldvcmtlcjohcn07dC5leHBvcnRzPW99LHt9XSw0MTpbZnVuY3Rp
b24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBmdW5jdGlvbigpe3Jl
dHVybiBlfX12YXIgbz1mdW5jdGlvbigpe307by50aGF0UmV0dXJucz1yLG8udGhhdFJldHVybnNG
YWxzZT1yKCExKSxvLnRoYXRSZXR1cm5zVHJ1ZT1yKCEwKSxvLnRoYXRSZXR1cm5zTnVsbD1yKG51
bGwpLG8udGhhdFJldHVybnNUaGlzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LG8udGhhdFJldHVy
bnNBcmd1bWVudD1mdW5jdGlvbihlKXtyZXR1cm4gZX0sdC5leHBvcnRzPW99LHt9XSw0MjpbZnVu
Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj17fTt0LmV4cG9ydHM9cn0se31dLDQzOltm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scixvLGksYSxzKXtp
ZighZSl7dmFyIHU7aWYodm9pZCAwPT09dCl1PW5ldyBFcnJvcigiTWluaWZpZWQgZXhjZXB0aW9u
IG9jY3VycmVkOyB1c2UgdGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQgZm9yIHRoZSBm
dWxsIGVycm9yIG1lc3NhZ2UgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5ncy4iKTtlbHNl
e3ZhciBjPVtuLHIsbyxpLGEsc10scD0wO3U9bmV3IEVycm9yKHQucmVwbGFjZSgvJXMvZyxmdW5j
dGlvbigpe3JldHVybiBjW3ArK119KSksdS5uYW1lPSJJbnZhcmlhbnQgVmlvbGF0aW9uIn10aHJv
dyB1LmZyYW1lc1RvUG9wPTEsdX19dC5leHBvcnRzPXJ9LHt9XSw0NDpbZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7cmV0dXJuIGU9PT10PzAhPT1lfHwwIT09dHx8
MS9lPT09MS90OmUhPT1lJiZ0IT09dH1mdW5jdGlvbiBvKGUsdCl7aWYocihlLHQpKXJldHVybiEw
O2lmKCJvYmplY3QiIT10eXBlb2YgZXx8bnVsbD09PWV8fCJvYmplY3QiIT10eXBlb2YgdHx8bnVs
bD09PXQpcmV0dXJuITE7dmFyIG49T2JqZWN0LmtleXMoZSksbz1PYmplY3Qua2V5cyh0KTtpZihu
Lmxlbmd0aCE9PW8ubGVuZ3RoKXJldHVybiExO2Zvcih2YXIgYT0wO2E8bi5sZW5ndGg7YSsrKWlm
KCFpLmNhbGwodCxuW2FdKXx8IXIoZVtuW2FdXSx0W25bYV1dKSlyZXR1cm4hMTtyZXR1cm4hMH12
YXIgaT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3QuZXhwb3J0cz1vfSx7fV0sNDU6
W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSg0MSksbz1yO3QuZXhwb3J0cz1v
fSx7NDE6NDF9XSw0NjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUp
e2lmKG51bGw9PT1lfHx2b2lkIDA9PT1lKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdC5hc3Np
Z24gY2Fubm90IGJlIGNhbGxlZCB3aXRoIG51bGwgb3IgdW5kZWZpbmVkIik7cmV0dXJuIE9iamVj
dChlKX1mdW5jdGlvbiBvKCl7dHJ5e2lmKCFPYmplY3QuYXNzaWduKXJldHVybiExO3ZhciBlPW5l
dyBTdHJpbmcoImFiYyIpO2lmKGVbNV09ImRlIiwiNSI9PT1PYmplY3QuZ2V0T3duUHJvcGVydHlO
YW1lcyhlKVswXSlyZXR1cm4hMTtmb3IodmFyIHQ9e30sbj0wO248MTA7bisrKXRbIl8iK1N0cmlu
Zy5mcm9tQ2hhckNvZGUobildPW47dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModCku
bWFwKGZ1bmN0aW9uKGUpe3JldHVybiB0W2VdfSk7aWYoIjAxMjM0NTY3ODkiIT09ci5qb2luKCIi
KSlyZXR1cm4hMTt2YXIgbz17fTtyZXR1cm4iYWJjZGVmZ2hpamtsbW5vcHFyc3QiLnNwbGl0KCIi
KS5mb3JFYWNoKGZ1bmN0aW9uKGUpe29bZV09ZX0pLCJhYmNkZWZnaGlqa2xtbm9wcXJzdCI9PT1P
YmplY3Qua2V5cyhPYmplY3QuYXNzaWduKHt9LG8pKS5qb2luKCIiKX1jYXRjaChlKXtyZXR1cm4h
MX19dmFyIGk9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxhPU9iamVjdC5wcm90b3R5
cGUucHJvcGVydHlJc0VudW1lcmFibGU7dC5leHBvcnRzPW8oKT9PYmplY3QuYXNzaWduOmZ1bmN0
aW9uKGUsdCl7Zm9yKHZhciBuLG8scz1yKGUpLHU9MTt1PGFyZ3VtZW50cy5sZW5ndGg7dSsrKXtu
PU9iamVjdChhcmd1bWVudHNbdV0pO2Zvcih2YXIgYyBpbiBuKWkuY2FsbChuLGMpJiYoc1tjXT1u
W2NdKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXtvPU9iamVjdC5nZXRPd25Qcm9w
ZXJ0eVN5bWJvbHMobik7Zm9yKHZhciBwPTA7cDxvLmxlbmd0aDtwKyspYS5jYWxsKG4sb1twXSkm
JihzW29bcF1dPW5bb1twXV0pfX1yZXR1cm4gc319LHt9XX0se30sWzMwXSkoMzApfSk7ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9k
ZV9tb2R1bGVzL3JlYWN0L2Rpc3QvcmVhY3QuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21v
ZHVsZXMvcmVhY3QvZGlzdC9yZWFjdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMjJkMTY1OGFhMjAzOTMwM2U5
ZDNlN2Y5MjUxZTBiZTBhNGRmZjI2Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVh
Y3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2Rpc3QvcmVhY3QuanMKQEAgLTAsMCArMSwzNzQ4IEBACisg
LyoqCisgICogUmVhY3QgdjE1LjQuMAorICAqLworKGZ1bmN0aW9uKGYpe2lmKHR5cGVvZiBleHBv
cnRzPT09Im9iamVjdCImJnR5cGVvZiBtb2R1bGUhPT0idW5kZWZpbmVkIil7bW9kdWxlLmV4cG9y
dHM9ZigpfWVsc2UgaWYodHlwZW9mIGRlZmluZT09PSJmdW5jdGlvbiImJmRlZmluZS5hbWQpe2Rl
ZmluZShbXSxmKX1lbHNle3ZhciBnO2lmKHR5cGVvZiB3aW5kb3chPT0idW5kZWZpbmVkIil7Zz13
aW5kb3d9ZWxzZSBpZih0eXBlb2YgZ2xvYmFsIT09InVuZGVmaW5lZCIpe2c9Z2xvYmFsfWVsc2Ug
aWYodHlwZW9mIHNlbGYhPT0idW5kZWZpbmVkIil7Zz1zZWxmfWVsc2V7Zz10aGlzfWcuUmVhY3Qg
PSBmKCl9fSkoZnVuY3Rpb24oKXt2YXIgZGVmaW5lLG1vZHVsZSxleHBvcnRzO3JldHVybiAoZnVu
Y3Rpb24gZSh0LG4scil7ZnVuY3Rpb24gcyhvLHUpe2lmKCFuW29dKXtpZighdFtvXSl7dmFyIGE9
dHlwZW9mIHJlcXVpcmU9PSJmdW5jdGlvbiImJnJlcXVpcmU7aWYoIXUmJmEpcmV0dXJuIGEobywh
MCk7aWYoaSlyZXR1cm4gaShvLCEwKTt2YXIgZj1uZXcgRXJyb3IoIkNhbm5vdCBmaW5kIG1vZHVs
ZSAnIitvKyInIik7dGhyb3cgZi5jb2RlPSJNT0RVTEVfTk9UX0ZPVU5EIixmfXZhciBsPW5bb109
e2V4cG9ydHM6e319O3Rbb11bMF0uY2FsbChsLmV4cG9ydHMsZnVuY3Rpb24oZSl7dmFyIG49dFtv
XVsxXVtlXTtyZXR1cm4gcyhuP246ZSl9LGwsbC5leHBvcnRzLGUsdCxuLHIpfXJldHVybiBuW29d
LmV4cG9ydHN9dmFyIGk9dHlwZW9mIHJlcXVpcmU9PSJmdW5jdGlvbiImJnJlcXVpcmU7Zm9yKHZh
ciBvPTA7bzxyLmxlbmd0aDtvKyspcyhyW29dKTtyZXR1cm4gc30pKHsxOltmdW5jdGlvbihfZGVy
ZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFj
ZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2Ug
Y29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhl
CisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIAorICov
CisKKyd1c2Ugc3RyaWN0JzsKKworLyoqCisgKiBFc2NhcGUgYW5kIHdyYXAga2V5IHNvIGl0IGlz
IHNhZmUgdG8gdXNlIGFzIGEgcmVhY3RpZAorICoKKyAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgdG8g
YmUgZXNjYXBlZC4KKyAqIEByZXR1cm4ge3N0cmluZ30gdGhlIGVzY2FwZWQga2V5LgorICovCisK
K2Z1bmN0aW9uIGVzY2FwZShrZXkpIHsKKyAgdmFyIGVzY2FwZVJlZ2V4ID0gL1s9Ol0vZzsKKyAg
dmFyIGVzY2FwZXJMb29rdXAgPSB7CisgICAgJz0nOiAnPTAnLAorICAgICc6JzogJz0yJworICB9
OworICB2YXIgZXNjYXBlZFN0cmluZyA9ICgnJyArIGtleSkucmVwbGFjZShlc2NhcGVSZWdleCwg
ZnVuY3Rpb24gKG1hdGNoKSB7CisgICAgcmV0dXJuIGVzY2FwZXJMb29rdXBbbWF0Y2hdOworICB9
KTsKKworICByZXR1cm4gJyQnICsgZXNjYXBlZFN0cmluZzsKK30KKworLyoqCisgKiBVbmVzY2Fw
ZSBhbmQgdW53cmFwIGtleSBmb3IgaHVtYW4tcmVhZGFibGUgZGlzcGxheQorICoKKyAqIEBwYXJh
bSB7c3RyaW5nfSBrZXkgdG8gdW5lc2NhcGUuCisgKiBAcmV0dXJuIHtzdHJpbmd9IHRoZSB1bmVz
Y2FwZWQga2V5LgorICovCitmdW5jdGlvbiB1bmVzY2FwZShrZXkpIHsKKyAgdmFyIHVuZXNjYXBl
UmVnZXggPSAvKD0wfD0yKS9nOworICB2YXIgdW5lc2NhcGVyTG9va3VwID0geworICAgICc9MCc6
ICc9JywKKyAgICAnPTInOiAnOicKKyAgfTsKKyAgdmFyIGtleVN1YnN0cmluZyA9IGtleVswXSA9
PT0gJy4nICYmIGtleVsxXSA9PT0gJyQnID8ga2V5LnN1YnN0cmluZygyKSA6IGtleS5zdWJzdHJp
bmcoMSk7CisKKyAgcmV0dXJuICgnJyArIGtleVN1YnN0cmluZykucmVwbGFjZSh1bmVzY2FwZVJl
Z2V4LCBmdW5jdGlvbiAobWF0Y2gpIHsKKyAgICByZXR1cm4gdW5lc2NhcGVyTG9va3VwW21hdGNo
XTsKKyAgfSk7Cit9CisKK3ZhciBLZXlFc2NhcGVVdGlscyA9IHsKKyAgZXNjYXBlOiBlc2NhcGUs
CisgIHVuZXNjYXBlOiB1bmVzY2FwZQorfTsKKworbW9kdWxlLmV4cG9ydHMgPSBLZXlFc2NhcGVV
dGlsczsKK30se31dLDI6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeworLyoqCisg
KiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBC
U0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICog
b2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUg
c2FtZSBkaXJlY3RvcnkuCisgKgorICogCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX3By
b2RJbnZhcmlhbnQgPSBfZGVyZXFfKDI0KTsKKwordmFyIGludmFyaWFudCA9IF9kZXJlcV8oMjgp
OworCisvKioKKyAqIFN0YXRpYyBwb29sZXJzLiBTZXZlcmFsIGN1c3RvbSB2ZXJzaW9ucyBmb3Ig
ZWFjaCBwb3RlbnRpYWwgbnVtYmVyIG9mCisgKiBhcmd1bWVudHMuIEEgY29tcGxldGVseSBnZW5l
cmljIHBvb2xlciBpcyBlYXN5IHRvIGltcGxlbWVudCwgYnV0IHdvdWxkCisgKiByZXF1aXJlIGFj
Y2Vzc2luZyB0aGUgYGFyZ3VtZW50c2Agb2JqZWN0LiBJbiBlYWNoIG9mIHRoZXNlLCBgdGhpc2Ag
cmVmZXJzIHRvCisgKiB0aGUgQ2xhc3MgaXRzZWxmLCBub3QgYW4gaW5zdGFuY2UuIElmIGFueSBv
dGhlcnMgYXJlIG5lZWRlZCwgc2ltcGx5IGFkZCB0aGVtCisgKiBoZXJlLCBvciBpbiB0aGVpciBv
d24gZmlsZXMuCisgKi8KK3ZhciBvbmVBcmd1bWVudFBvb2xlciA9IGZ1bmN0aW9uIChjb3B5Rmll
bGRzRnJvbSkgeworICB2YXIgS2xhc3MgPSB0aGlzOworICBpZiAoS2xhc3MuaW5zdGFuY2VQb29s
Lmxlbmd0aCkgeworICAgIHZhciBpbnN0YW5jZSA9IEtsYXNzLmluc3RhbmNlUG9vbC5wb3AoKTsK
KyAgICBLbGFzcy5jYWxsKGluc3RhbmNlLCBjb3B5RmllbGRzRnJvbSk7CisgICAgcmV0dXJuIGlu
c3RhbmNlOworICB9IGVsc2UgeworICAgIHJldHVybiBuZXcgS2xhc3MoY29weUZpZWxkc0Zyb20p
OworICB9Cit9OworCit2YXIgdHdvQXJndW1lbnRQb29sZXIgPSBmdW5jdGlvbiAoYTEsIGEyKSB7
CisgIHZhciBLbGFzcyA9IHRoaXM7CisgIGlmIChLbGFzcy5pbnN0YW5jZVBvb2wubGVuZ3RoKSB7
CisgICAgdmFyIGluc3RhbmNlID0gS2xhc3MuaW5zdGFuY2VQb29sLnBvcCgpOworICAgIEtsYXNz
LmNhbGwoaW5zdGFuY2UsIGExLCBhMik7CisgICAgcmV0dXJuIGluc3RhbmNlOworICB9IGVsc2Ug
eworICAgIHJldHVybiBuZXcgS2xhc3MoYTEsIGEyKTsKKyAgfQorfTsKKwordmFyIHRocmVlQXJn
dW1lbnRQb29sZXIgPSBmdW5jdGlvbiAoYTEsIGEyLCBhMykgeworICB2YXIgS2xhc3MgPSB0aGlz
OworICBpZiAoS2xhc3MuaW5zdGFuY2VQb29sLmxlbmd0aCkgeworICAgIHZhciBpbnN0YW5jZSA9
IEtsYXNzLmluc3RhbmNlUG9vbC5wb3AoKTsKKyAgICBLbGFzcy5jYWxsKGluc3RhbmNlLCBhMSwg
YTIsIGEzKTsKKyAgICByZXR1cm4gaW5zdGFuY2U7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIG5l
dyBLbGFzcyhhMSwgYTIsIGEzKTsKKyAgfQorfTsKKwordmFyIGZvdXJBcmd1bWVudFBvb2xlciA9
IGZ1bmN0aW9uIChhMSwgYTIsIGEzLCBhNCkgeworICB2YXIgS2xhc3MgPSB0aGlzOworICBpZiAo
S2xhc3MuaW5zdGFuY2VQb29sLmxlbmd0aCkgeworICAgIHZhciBpbnN0YW5jZSA9IEtsYXNzLmlu
c3RhbmNlUG9vbC5wb3AoKTsKKyAgICBLbGFzcy5jYWxsKGluc3RhbmNlLCBhMSwgYTIsIGEzLCBh
NCk7CisgICAgcmV0dXJuIGluc3RhbmNlOworICB9IGVsc2UgeworICAgIHJldHVybiBuZXcgS2xh
c3MoYTEsIGEyLCBhMywgYTQpOworICB9Cit9OworCit2YXIgZml2ZUFyZ3VtZW50UG9vbGVyID0g
ZnVuY3Rpb24gKGExLCBhMiwgYTMsIGE0LCBhNSkgeworICB2YXIgS2xhc3MgPSB0aGlzOworICBp
ZiAoS2xhc3MuaW5zdGFuY2VQb29sLmxlbmd0aCkgeworICAgIHZhciBpbnN0YW5jZSA9IEtsYXNz
Lmluc3RhbmNlUG9vbC5wb3AoKTsKKyAgICBLbGFzcy5jYWxsKGluc3RhbmNlLCBhMSwgYTIsIGEz
LCBhNCwgYTUpOworICAgIHJldHVybiBpbnN0YW5jZTsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4g
bmV3IEtsYXNzKGExLCBhMiwgYTMsIGE0LCBhNSk7CisgIH0KK307CisKK3ZhciBzdGFuZGFyZFJl
bGVhc2VyID0gZnVuY3Rpb24gKGluc3RhbmNlKSB7CisgIHZhciBLbGFzcyA9IHRoaXM7CisgICEo
aW5zdGFuY2UgaW5zdGFuY2VvZiBLbGFzcykgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlv
bicgPyBpbnZhcmlhbnQoZmFsc2UsICdUcnlpbmcgdG8gcmVsZWFzZSBhbiBpbnN0YW5jZSBpbnRv
IGEgcG9vbCBvZiBhIGRpZmZlcmVudCB0eXBlLicpIDogX3Byb2RJbnZhcmlhbnQoJzI1JykgOiB2
b2lkIDA7CisgIGluc3RhbmNlLmRlc3RydWN0b3IoKTsKKyAgaWYgKEtsYXNzLmluc3RhbmNlUG9v
bC5sZW5ndGggPCBLbGFzcy5wb29sU2l6ZSkgeworICAgIEtsYXNzLmluc3RhbmNlUG9vbC5wdXNo
KGluc3RhbmNlKTsKKyAgfQorfTsKKwordmFyIERFRkFVTFRfUE9PTF9TSVpFID0gMTA7Cit2YXIg
REVGQVVMVF9QT09MRVIgPSBvbmVBcmd1bWVudFBvb2xlcjsKKworLyoqCisgKiBBdWdtZW50cyBg
Q29weUNvbnN0cnVjdG9yYCB0byBiZSBhIHBvb2xhYmxlIGNsYXNzLCBhdWdtZW50aW5nIG9ubHkg
dGhlIGNsYXNzCisgKiBpdHNlbGYgKHN0YXRpY2FsbHkpIG5vdCBhZGRpbmcgYW55IHByb3RvdHlw
aWNhbCBmaWVsZHMuIEFueSBDb3B5Q29uc3RydWN0b3IKKyAqIHlvdSBnaXZlIHRoaXMgbWF5IGhh
dmUgYSBgcG9vbFNpemVgIHByb3BlcnR5LCBhbmQgd2lsbCBsb29rIGZvciBhCisgKiBwcm90b3R5
cGljYWwgYGRlc3RydWN0b3JgIG9uIGluc3RhbmNlcy4KKyAqCisgKiBAcGFyYW0ge0Z1bmN0aW9u
fSBDb3B5Q29uc3RydWN0b3IgQ29uc3RydWN0b3IgdGhhdCBjYW4gYmUgdXNlZCB0byByZXNldC4K
KyAqIEBwYXJhbSB7RnVuY3Rpb259IHBvb2xlciBDdXN0b21pemFibGUgcG9vbGVyLgorICovCit2
YXIgYWRkUG9vbGluZ1RvID0gZnVuY3Rpb24gKENvcHlDb25zdHJ1Y3RvciwgcG9vbGVyKSB7Cisg
IC8vIENhc3RpbmcgYXMgYW55IHNvIHRoYXQgZmxvdyBpZ25vcmVzIHRoZSBhY3R1YWwgaW1wbGVt
ZW50YXRpb24gYW5kIHRydXN0cworICAvLyBpdCB0byBtYXRjaCB0aGUgdHlwZSB3ZSBkZWNsYXJl
ZAorICB2YXIgTmV3S2xhc3MgPSBDb3B5Q29uc3RydWN0b3I7CisgIE5ld0tsYXNzLmluc3RhbmNl
UG9vbCA9IFtdOworICBOZXdLbGFzcy5nZXRQb29sZWQgPSBwb29sZXIgfHwgREVGQVVMVF9QT09M
RVI7CisgIGlmICghTmV3S2xhc3MucG9vbFNpemUpIHsKKyAgICBOZXdLbGFzcy5wb29sU2l6ZSA9
IERFRkFVTFRfUE9PTF9TSVpFOworICB9CisgIE5ld0tsYXNzLnJlbGVhc2UgPSBzdGFuZGFyZFJl
bGVhc2VyOworICByZXR1cm4gTmV3S2xhc3M7Cit9OworCit2YXIgUG9vbGVkQ2xhc3MgPSB7Cisg
IGFkZFBvb2xpbmdUbzogYWRkUG9vbGluZ1RvLAorICBvbmVBcmd1bWVudFBvb2xlcjogb25lQXJn
dW1lbnRQb29sZXIsCisgIHR3b0FyZ3VtZW50UG9vbGVyOiB0d29Bcmd1bWVudFBvb2xlciwKKyAg
dGhyZWVBcmd1bWVudFBvb2xlcjogdGhyZWVBcmd1bWVudFBvb2xlciwKKyAgZm91ckFyZ3VtZW50
UG9vbGVyOiBmb3VyQXJndW1lbnRQb29sZXIsCisgIGZpdmVBcmd1bWVudFBvb2xlcjogZml2ZUFy
Z3VtZW50UG9vbGVyCit9OworCittb2R1bGUuZXhwb3J0cyA9IFBvb2xlZENsYXNzOworfSx7IjI0
IjoyNCwiMjgiOjI4fV0sMzpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioK
KyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl
IEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50Cisg
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX2Fzc2ln
biA9IF9kZXJlcV8oMzApOworCit2YXIgUmVhY3RDaGlsZHJlbiA9IF9kZXJlcV8oNCk7Cit2YXIg
UmVhY3RDb21wb25lbnQgPSBfZGVyZXFfKDYpOwordmFyIFJlYWN0UHVyZUNvbXBvbmVudCA9IF9k
ZXJlcV8oMTcpOwordmFyIFJlYWN0Q2xhc3MgPSBfZGVyZXFfKDUpOwordmFyIFJlYWN0RE9NRmFj
dG9yaWVzID0gX2RlcmVxXyg5KTsKK3ZhciBSZWFjdEVsZW1lbnQgPSBfZGVyZXFfKDEwKTsKK3Zh
ciBSZWFjdFByb3BUeXBlcyA9IF9kZXJlcV8oMTUpOwordmFyIFJlYWN0VmVyc2lvbiA9IF9kZXJl
cV8oMTkpOworCit2YXIgb25seUNoaWxkID0gX2RlcmVxXygyMyk7Cit2YXIgd2FybmluZyA9IF9k
ZXJlcV8oMjkpOworCit2YXIgY3JlYXRlRWxlbWVudCA9IFJlYWN0RWxlbWVudC5jcmVhdGVFbGVt
ZW50OwordmFyIGNyZWF0ZUZhY3RvcnkgPSBSZWFjdEVsZW1lbnQuY3JlYXRlRmFjdG9yeTsKK3Zh
ciBjbG9uZUVsZW1lbnQgPSBSZWFjdEVsZW1lbnQuY2xvbmVFbGVtZW50OworCitpZiAoImRldmVs
b3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgIHZhciBSZWFjdEVsZW1lbnRWYWxpZGF0b3Ig
PSBfZGVyZXFfKDEyKTsKKyAgY3JlYXRlRWxlbWVudCA9IFJlYWN0RWxlbWVudFZhbGlkYXRvci5j
cmVhdGVFbGVtZW50OworICBjcmVhdGVGYWN0b3J5ID0gUmVhY3RFbGVtZW50VmFsaWRhdG9yLmNy
ZWF0ZUZhY3Rvcnk7CisgIGNsb25lRWxlbWVudCA9IFJlYWN0RWxlbWVudFZhbGlkYXRvci5jbG9u
ZUVsZW1lbnQ7Cit9CisKK3ZhciBfX3NwcmVhZCA9IF9hc3NpZ247CisKK2lmICgiZGV2ZWxvcG1l
bnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgdmFyIHdhcm5lZCA9IGZhbHNlOworICBfX3NwcmVh
ZCA9IGZ1bmN0aW9uICgpIHsKKyAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3
YXJuaW5nKHdhcm5lZCwgJ1JlYWN0Ll9fc3ByZWFkIGlzIGRlcHJlY2F0ZWQgYW5kIHNob3VsZCBu
b3QgYmUgdXNlZC4gVXNlICcgKyAnT2JqZWN0LmFzc2lnbiBkaXJlY3RseSBvciBhbm90aGVyIGhl
bHBlciBmdW5jdGlvbiB3aXRoIHNpbWlsYXIgJyArICdzZW1hbnRpY3MuIFlvdSBtYXkgYmUgc2Vl
aW5nIHRoaXMgd2FybmluZyBkdWUgdG8geW91ciBjb21waWxlci4gJyArICdTZWUgaHR0cHM6Ly9m
Yi5tZS9yZWFjdC1zcHJlYWQtZGVwcmVjYXRpb24gZm9yIG1vcmUgZGV0YWlscy4nKSA6IHZvaWQg
MDsKKyAgICB3YXJuZWQgPSB0cnVlOworICAgIHJldHVybiBfYXNzaWduLmFwcGx5KG51bGwsIGFy
Z3VtZW50cyk7CisgIH07Cit9CisKK3ZhciBSZWFjdCA9IHsKKworICAvLyBNb2Rlcm4KKworICBD
aGlsZHJlbjogeworICAgIG1hcDogUmVhY3RDaGlsZHJlbi5tYXAsCisgICAgZm9yRWFjaDogUmVh
Y3RDaGlsZHJlbi5mb3JFYWNoLAorICAgIGNvdW50OiBSZWFjdENoaWxkcmVuLmNvdW50LAorICAg
IHRvQXJyYXk6IFJlYWN0Q2hpbGRyZW4udG9BcnJheSwKKyAgICBvbmx5OiBvbmx5Q2hpbGQKKyAg
fSwKKworICBDb21wb25lbnQ6IFJlYWN0Q29tcG9uZW50LAorICBQdXJlQ29tcG9uZW50OiBSZWFj
dFB1cmVDb21wb25lbnQsCisKKyAgY3JlYXRlRWxlbWVudDogY3JlYXRlRWxlbWVudCwKKyAgY2xv
bmVFbGVtZW50OiBjbG9uZUVsZW1lbnQsCisgIGlzVmFsaWRFbGVtZW50OiBSZWFjdEVsZW1lbnQu
aXNWYWxpZEVsZW1lbnQsCisKKyAgLy8gQ2xhc3NpYworCisgIFByb3BUeXBlczogUmVhY3RQcm9w
VHlwZXMsCisgIGNyZWF0ZUNsYXNzOiBSZWFjdENsYXNzLmNyZWF0ZUNsYXNzLAorICBjcmVhdGVG
YWN0b3J5OiBjcmVhdGVGYWN0b3J5LAorICBjcmVhdGVNaXhpbjogZnVuY3Rpb24gKG1peGluKSB7
CisgICAgLy8gQ3VycmVudGx5IGEgbm9vcC4gV2lsbCBiZSB1c2VkIHRvIHZhbGlkYXRlIGFuZCB0
cmFjZSBtaXhpbnMuCisgICAgcmV0dXJuIG1peGluOworICB9LAorCisgIC8vIFRoaXMgbG9va3Mg
RE9NIHNwZWNpZmljIGJ1dCB0aGVzZSBhcmUgYWN0dWFsbHkgaXNvbW9ycGhpYyBoZWxwZXJzCisg
IC8vIHNpbmNlIHRoZXkgYXJlIGp1c3QgZ2VuZXJhdGluZyBET00gc3RyaW5ncy4KKyAgRE9NOiBS
ZWFjdERPTUZhY3RvcmllcywKKworICB2ZXJzaW9uOiBSZWFjdFZlcnNpb24sCisKKyAgLy8gRGVw
cmVjYXRlZCBob29rIGZvciBKU1ggc3ByZWFkLCBkb24ndCB1c2UgdGhpcyBmb3IgYW55dGhpbmcu
CisgIF9fc3ByZWFkOiBfX3NwcmVhZAorfTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdDsKK30s
eyIxMCI6MTAsIjEyIjoxMiwiMTUiOjE1LCIxNyI6MTcsIjE5IjoxOSwiMjMiOjIzLCIyOSI6Mjks
IjMwIjozMCwiNCI6NCwiNSI6NSwiNiI6NiwiOSI6OX1dLDQ6W2Z1bmN0aW9uKF9kZXJlcV8sbW9k
dWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhl
IFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3Ry
aWN0JzsKKwordmFyIFBvb2xlZENsYXNzID0gX2RlcmVxXygyKTsKK3ZhciBSZWFjdEVsZW1lbnQg
PSBfZGVyZXFfKDEwKTsKKwordmFyIGVtcHR5RnVuY3Rpb24gPSBfZGVyZXFfKDI2KTsKK3ZhciB0
cmF2ZXJzZUFsbENoaWxkcmVuID0gX2RlcmVxXygyNSk7CisKK3ZhciB0d29Bcmd1bWVudFBvb2xl
ciA9IFBvb2xlZENsYXNzLnR3b0FyZ3VtZW50UG9vbGVyOwordmFyIGZvdXJBcmd1bWVudFBvb2xl
ciA9IFBvb2xlZENsYXNzLmZvdXJBcmd1bWVudFBvb2xlcjsKKwordmFyIHVzZXJQcm92aWRlZEtl
eUVzY2FwZVJlZ2V4ID0gL1wvKy9nOworZnVuY3Rpb24gZXNjYXBlVXNlclByb3ZpZGVkS2V5KHRl
eHQpIHsKKyAgcmV0dXJuICgnJyArIHRleHQpLnJlcGxhY2UodXNlclByb3ZpZGVkS2V5RXNjYXBl
UmVnZXgsICckJi8nKTsKK30KKworLyoqCisgKiBQb29sZWRDbGFzcyByZXByZXNlbnRpbmcgdGhl
IGJvb2trZWVwaW5nIGFzc29jaWF0ZWQgd2l0aCBwZXJmb3JtaW5nIGEgY2hpbGQKKyAqIHRyYXZl
cnNhbC4gQWxsb3dzIGF2b2lkaW5nIGJpbmRpbmcgY2FsbGJhY2tzLgorICoKKyAqIEBjb25zdHJ1
Y3RvciBGb3JFYWNoQm9va0tlZXBpbmcKKyAqIEBwYXJhbSB7IWZ1bmN0aW9ufSBmb3JFYWNoRnVu
Y3Rpb24gRnVuY3Rpb24gdG8gcGVyZm9ybSB0cmF2ZXJzYWwgd2l0aC4KKyAqIEBwYXJhbSB7Pyp9
IGZvckVhY2hDb250ZXh0IENvbnRleHQgdG8gcGVyZm9ybSBjb250ZXh0IHdpdGguCisgKi8KK2Z1
bmN0aW9uIEZvckVhY2hCb29rS2VlcGluZyhmb3JFYWNoRnVuY3Rpb24sIGZvckVhY2hDb250ZXh0
KSB7CisgIHRoaXMuZnVuYyA9IGZvckVhY2hGdW5jdGlvbjsKKyAgdGhpcy5jb250ZXh0ID0gZm9y
RWFjaENvbnRleHQ7CisgIHRoaXMuY291bnQgPSAwOworfQorRm9yRWFjaEJvb2tLZWVwaW5nLnBy
b3RvdHlwZS5kZXN0cnVjdG9yID0gZnVuY3Rpb24gKCkgeworICB0aGlzLmZ1bmMgPSBudWxsOwor
ICB0aGlzLmNvbnRleHQgPSBudWxsOworICB0aGlzLmNvdW50ID0gMDsKK307CitQb29sZWRDbGFz
cy5hZGRQb29saW5nVG8oRm9yRWFjaEJvb2tLZWVwaW5nLCB0d29Bcmd1bWVudFBvb2xlcik7CisK
K2Z1bmN0aW9uIGZvckVhY2hTaW5nbGVDaGlsZChib29rS2VlcGluZywgY2hpbGQsIG5hbWUpIHsK
KyAgdmFyIGZ1bmMgPSBib29rS2VlcGluZy5mdW5jLAorICAgICAgY29udGV4dCA9IGJvb2tLZWVw
aW5nLmNvbnRleHQ7CisKKyAgZnVuYy5jYWxsKGNvbnRleHQsIGNoaWxkLCBib29rS2VlcGluZy5j
b3VudCsrKTsKK30KKworLyoqCisgKiBJdGVyYXRlcyB0aHJvdWdoIGNoaWxkcmVuIHRoYXQgYXJl
IHR5cGljYWxseSBzcGVjaWZpZWQgYXMgYHByb3BzLmNoaWxkcmVuYC4KKyAqCisgKiBTZWUgaHR0
cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVh
Y3QuY2hpbGRyZW4uZm9yZWFjaAorICoKKyAqIFRoZSBwcm92aWRlZCBmb3JFYWNoRnVuYyhjaGls
ZCwgaW5kZXgpIHdpbGwgYmUgY2FsbGVkIGZvciBlYWNoCisgKiBsZWFmIGNoaWxkLgorICoKKyAq
IEBwYXJhbSB7Pyp9IGNoaWxkcmVuIENoaWxkcmVuIHRyZWUgY29udGFpbmVyLgorICogQHBhcmFt
IHtmdW5jdGlvbigqLCBpbnQpfSBmb3JFYWNoRnVuYworICogQHBhcmFtIHsqfSBmb3JFYWNoQ29u
dGV4dCBDb250ZXh0IGZvciBmb3JFYWNoQ29udGV4dC4KKyAqLworZnVuY3Rpb24gZm9yRWFjaENo
aWxkcmVuKGNoaWxkcmVuLCBmb3JFYWNoRnVuYywgZm9yRWFjaENvbnRleHQpIHsKKyAgaWYgKGNo
aWxkcmVuID09IG51bGwpIHsKKyAgICByZXR1cm4gY2hpbGRyZW47CisgIH0KKyAgdmFyIHRyYXZl
cnNlQ29udGV4dCA9IEZvckVhY2hCb29rS2VlcGluZy5nZXRQb29sZWQoZm9yRWFjaEZ1bmMsIGZv
ckVhY2hDb250ZXh0KTsKKyAgdHJhdmVyc2VBbGxDaGlsZHJlbihjaGlsZHJlbiwgZm9yRWFjaFNp
bmdsZUNoaWxkLCB0cmF2ZXJzZUNvbnRleHQpOworICBGb3JFYWNoQm9va0tlZXBpbmcucmVsZWFz
ZSh0cmF2ZXJzZUNvbnRleHQpOworfQorCisvKioKKyAqIFBvb2xlZENsYXNzIHJlcHJlc2VudGlu
ZyB0aGUgYm9va2tlZXBpbmcgYXNzb2NpYXRlZCB3aXRoIHBlcmZvcm1pbmcgYSBjaGlsZAorICog
bWFwcGluZy4gQWxsb3dzIGF2b2lkaW5nIGJpbmRpbmcgY2FsbGJhY2tzLgorICoKKyAqIEBjb25z
dHJ1Y3RvciBNYXBCb29rS2VlcGluZworICogQHBhcmFtIHshKn0gbWFwUmVzdWx0IE9iamVjdCBj
b250YWluaW5nIHRoZSBvcmRlcmVkIG1hcCBvZiByZXN1bHRzLgorICogQHBhcmFtIHshZnVuY3Rp
b259IG1hcEZ1bmN0aW9uIEZ1bmN0aW9uIHRvIHBlcmZvcm0gbWFwcGluZyB3aXRoLgorICogQHBh
cmFtIHs/Kn0gbWFwQ29udGV4dCBDb250ZXh0IHRvIHBlcmZvcm0gbWFwcGluZyB3aXRoLgorICov
CitmdW5jdGlvbiBNYXBCb29rS2VlcGluZyhtYXBSZXN1bHQsIGtleVByZWZpeCwgbWFwRnVuY3Rp
b24sIG1hcENvbnRleHQpIHsKKyAgdGhpcy5yZXN1bHQgPSBtYXBSZXN1bHQ7CisgIHRoaXMua2V5
UHJlZml4ID0ga2V5UHJlZml4OworICB0aGlzLmZ1bmMgPSBtYXBGdW5jdGlvbjsKKyAgdGhpcy5j
b250ZXh0ID0gbWFwQ29udGV4dDsKKyAgdGhpcy5jb3VudCA9IDA7Cit9CitNYXBCb29rS2VlcGlu
Zy5wcm90b3R5cGUuZGVzdHJ1Y3RvciA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5yZXN1bHQgPSBu
dWxsOworICB0aGlzLmtleVByZWZpeCA9IG51bGw7CisgIHRoaXMuZnVuYyA9IG51bGw7CisgIHRo
aXMuY29udGV4dCA9IG51bGw7CisgIHRoaXMuY291bnQgPSAwOworfTsKK1Bvb2xlZENsYXNzLmFk
ZFBvb2xpbmdUbyhNYXBCb29rS2VlcGluZywgZm91ckFyZ3VtZW50UG9vbGVyKTsKKworZnVuY3Rp
b24gbWFwU2luZ2xlQ2hpbGRJbnRvQ29udGV4dChib29rS2VlcGluZywgY2hpbGQsIGNoaWxkS2V5
KSB7CisgIHZhciByZXN1bHQgPSBib29rS2VlcGluZy5yZXN1bHQsCisgICAgICBrZXlQcmVmaXgg
PSBib29rS2VlcGluZy5rZXlQcmVmaXgsCisgICAgICBmdW5jID0gYm9va0tlZXBpbmcuZnVuYywK
KyAgICAgIGNvbnRleHQgPSBib29rS2VlcGluZy5jb250ZXh0OworCisKKyAgdmFyIG1hcHBlZENo
aWxkID0gZnVuYy5jYWxsKGNvbnRleHQsIGNoaWxkLCBib29rS2VlcGluZy5jb3VudCsrKTsKKyAg
aWYgKEFycmF5LmlzQXJyYXkobWFwcGVkQ2hpbGQpKSB7CisgICAgbWFwSW50b1dpdGhLZXlQcmVm
aXhJbnRlcm5hbChtYXBwZWRDaGlsZCwgcmVzdWx0LCBjaGlsZEtleSwgZW1wdHlGdW5jdGlvbi50
aGF0UmV0dXJuc0FyZ3VtZW50KTsKKyAgfSBlbHNlIGlmIChtYXBwZWRDaGlsZCAhPSBudWxsKSB7
CisgICAgaWYgKFJlYWN0RWxlbWVudC5pc1ZhbGlkRWxlbWVudChtYXBwZWRDaGlsZCkpIHsKKyAg
ICAgIG1hcHBlZENoaWxkID0gUmVhY3RFbGVtZW50LmNsb25lQW5kUmVwbGFjZUtleShtYXBwZWRD
aGlsZCwKKyAgICAgIC8vIEtlZXAgYm90aCB0aGUgKG1hcHBlZCkgYW5kIG9sZCBrZXlzIGlmIHRo
ZXkgZGlmZmVyLCBqdXN0IGFzCisgICAgICAvLyB0cmF2ZXJzZUFsbENoaWxkcmVuIHVzZWQgdG8g
ZG8gZm9yIG9iamVjdHMgYXMgY2hpbGRyZW4KKyAgICAgIGtleVByZWZpeCArIChtYXBwZWRDaGls
ZC5rZXkgJiYgKCFjaGlsZCB8fCBjaGlsZC5rZXkgIT09IG1hcHBlZENoaWxkLmtleSkgPyBlc2Nh
cGVVc2VyUHJvdmlkZWRLZXkobWFwcGVkQ2hpbGQua2V5KSArICcvJyA6ICcnKSArIGNoaWxkS2V5
KTsKKyAgICB9CisgICAgcmVzdWx0LnB1c2gobWFwcGVkQ2hpbGQpOworICB9Cit9CisKK2Z1bmN0
aW9uIG1hcEludG9XaXRoS2V5UHJlZml4SW50ZXJuYWwoY2hpbGRyZW4sIGFycmF5LCBwcmVmaXgs
IGZ1bmMsIGNvbnRleHQpIHsKKyAgdmFyIGVzY2FwZWRQcmVmaXggPSAnJzsKKyAgaWYgKHByZWZp
eCAhPSBudWxsKSB7CisgICAgZXNjYXBlZFByZWZpeCA9IGVzY2FwZVVzZXJQcm92aWRlZEtleShw
cmVmaXgpICsgJy8nOworICB9CisgIHZhciB0cmF2ZXJzZUNvbnRleHQgPSBNYXBCb29rS2VlcGlu
Zy5nZXRQb29sZWQoYXJyYXksIGVzY2FwZWRQcmVmaXgsIGZ1bmMsIGNvbnRleHQpOworICB0cmF2
ZXJzZUFsbENoaWxkcmVuKGNoaWxkcmVuLCBtYXBTaW5nbGVDaGlsZEludG9Db250ZXh0LCB0cmF2
ZXJzZUNvbnRleHQpOworICBNYXBCb29rS2VlcGluZy5yZWxlYXNlKHRyYXZlcnNlQ29udGV4dCk7
Cit9CisKKy8qKgorICogTWFwcyBjaGlsZHJlbiB0aGF0IGFyZSB0eXBpY2FsbHkgc3BlY2lmaWVk
IGFzIGBwcm9wcy5jaGlsZHJlbmAuCisgKgorICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHVi
LmlvL3JlYWN0L2RvY3MvdG9wLWxldmVsLWFwaS5odG1sI3JlYWN0LmNoaWxkcmVuLm1hcAorICoK
KyAqIFRoZSBwcm92aWRlZCBtYXBGdW5jdGlvbihjaGlsZCwga2V5LCBpbmRleCkgd2lsbCBiZSBj
YWxsZWQgZm9yIGVhY2gKKyAqIGxlYWYgY2hpbGQuCisgKgorICogQHBhcmFtIHs/Kn0gY2hpbGRy
ZW4gQ2hpbGRyZW4gdHJlZSBjb250YWluZXIuCisgKiBAcGFyYW0ge2Z1bmN0aW9uKCosIGludCl9
IGZ1bmMgVGhlIG1hcCBmdW5jdGlvbi4KKyAqIEBwYXJhbSB7Kn0gY29udGV4dCBDb250ZXh0IGZv
ciBtYXBGdW5jdGlvbi4KKyAqIEByZXR1cm4ge29iamVjdH0gT2JqZWN0IGNvbnRhaW5pbmcgdGhl
IG9yZGVyZWQgbWFwIG9mIHJlc3VsdHMuCisgKi8KK2Z1bmN0aW9uIG1hcENoaWxkcmVuKGNoaWxk
cmVuLCBmdW5jLCBjb250ZXh0KSB7CisgIGlmIChjaGlsZHJlbiA9PSBudWxsKSB7CisgICAgcmV0
dXJuIGNoaWxkcmVuOworICB9CisgIHZhciByZXN1bHQgPSBbXTsKKyAgbWFwSW50b1dpdGhLZXlQ
cmVmaXhJbnRlcm5hbChjaGlsZHJlbiwgcmVzdWx0LCBudWxsLCBmdW5jLCBjb250ZXh0KTsKKyAg
cmV0dXJuIHJlc3VsdDsKK30KKworZnVuY3Rpb24gZm9yRWFjaFNpbmdsZUNoaWxkRHVtbXkodHJh
dmVyc2VDb250ZXh0LCBjaGlsZCwgbmFtZSkgeworICByZXR1cm4gbnVsbDsKK30KKworLyoqCisg
KiBDb3VudCB0aGUgbnVtYmVyIG9mIGNoaWxkcmVuIHRoYXQgYXJlIHR5cGljYWxseSBzcGVjaWZp
ZWQgYXMKKyAqIGBwcm9wcy5jaGlsZHJlbmAuCisgKgorICogU2VlIGh0dHBzOi8vZmFjZWJvb2su
Z2l0aHViLmlvL3JlYWN0L2RvY3MvdG9wLWxldmVsLWFwaS5odG1sI3JlYWN0LmNoaWxkcmVuLmNv
dW50CisgKgorICogQHBhcmFtIHs/Kn0gY2hpbGRyZW4gQ2hpbGRyZW4gdHJlZSBjb250YWluZXIu
CisgKiBAcmV0dXJuIHtudW1iZXJ9IFRoZSBudW1iZXIgb2YgY2hpbGRyZW4uCisgKi8KK2Z1bmN0
aW9uIGNvdW50Q2hpbGRyZW4oY2hpbGRyZW4sIGNvbnRleHQpIHsKKyAgcmV0dXJuIHRyYXZlcnNl
QWxsQ2hpbGRyZW4oY2hpbGRyZW4sIGZvckVhY2hTaW5nbGVDaGlsZER1bW15LCBudWxsKTsKK30K
KworLyoqCisgKiBGbGF0dGVuIGEgY2hpbGRyZW4gb2JqZWN0ICh0eXBpY2FsbHkgc3BlY2lmaWVk
IGFzIGBwcm9wcy5jaGlsZHJlbmApIGFuZAorICogcmV0dXJuIGFuIGFycmF5IHdpdGggYXBwcm9w
cmlhdGVseSByZS1rZXllZCBjaGlsZHJlbi4KKyAqCisgKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5n
aXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3QuY2hpbGRyZW4udG9h
cnJheQorICovCitmdW5jdGlvbiB0b0FycmF5KGNoaWxkcmVuKSB7CisgIHZhciByZXN1bHQgPSBb
XTsKKyAgbWFwSW50b1dpdGhLZXlQcmVmaXhJbnRlcm5hbChjaGlsZHJlbiwgcmVzdWx0LCBudWxs
LCBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zQXJndW1lbnQpOworICByZXR1cm4gcmVzdWx0Owor
fQorCit2YXIgUmVhY3RDaGlsZHJlbiA9IHsKKyAgZm9yRWFjaDogZm9yRWFjaENoaWxkcmVuLAor
ICBtYXA6IG1hcENoaWxkcmVuLAorICBtYXBJbnRvV2l0aEtleVByZWZpeEludGVybmFsOiBtYXBJ
bnRvV2l0aEtleVByZWZpeEludGVybmFsLAorICBjb3VudDogY291bnRDaGlsZHJlbiwKKyAgdG9B
cnJheTogdG9BcnJheQorfTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdENoaWxkcmVuOworfSx7
IjEwIjoxMCwiMiI6MiwiMjUiOjI1LCIyNiI6MjZ9XSw1OltmdW5jdGlvbihfZGVyZXFfLG1vZHVs
ZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIElu
Yy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBs
aWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQ
QVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmlj
dCc7CisKK3ZhciBfcHJvZEludmFyaWFudCA9IF9kZXJlcV8oMjQpLAorICAgIF9hc3NpZ24gPSBf
ZGVyZXFfKDMwKTsKKwordmFyIFJlYWN0Q29tcG9uZW50ID0gX2RlcmVxXyg2KTsKK3ZhciBSZWFj
dEVsZW1lbnQgPSBfZGVyZXFfKDEwKTsKK3ZhciBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lcyA9
IF9kZXJlcV8oMTQpOwordmFyIFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlID0gX2RlcmVxXygxMyk7CisK
K3ZhciBlbXB0eU9iamVjdCA9IF9kZXJlcV8oMjcpOwordmFyIGludmFyaWFudCA9IF9kZXJlcV8o
MjgpOwordmFyIHdhcm5pbmcgPSBfZGVyZXFfKDI5KTsKKwordmFyIE1JWElOU19LRVkgPSAnbWl4
aW5zJzsKKworLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGFsbG93IHRoZSBjcmVhdGlvbiBvZiBhbm9u
eW1vdXMgZnVuY3Rpb25zIHdoaWNoIGRvIG5vdAorLy8gaGF2ZSAubmFtZSBzZXQgdG8gdGhlIG5h
bWUgb2YgdGhlIHZhcmlhYmxlIGJlaW5nIGFzc2lnbmVkIHRvLgorZnVuY3Rpb24gaWRlbnRpdHko
Zm4pIHsKKyAgcmV0dXJuIGZuOworfQorCisvKioKKyAqIFBvbGljaWVzIHRoYXQgZGVzY3JpYmUg
bWV0aG9kcyBpbiBgUmVhY3RDbGFzc0ludGVyZmFjZWAuCisgKi8KKworCit2YXIgaW5qZWN0ZWRN
aXhpbnMgPSBbXTsKKworLyoqCisgKiBDb21wb3NpdGUgY29tcG9uZW50cyBhcmUgaGlnaGVyLWxl
dmVsIGNvbXBvbmVudHMgdGhhdCBjb21wb3NlIG90aGVyIGNvbXBvc2l0ZQorICogb3IgaG9zdCBj
b21wb25lbnRzLgorICoKKyAqIFRvIGNyZWF0ZSBhIG5ldyB0eXBlIG9mIGBSZWFjdENsYXNzYCwg
cGFzcyBhIHNwZWNpZmljYXRpb24gb2YKKyAqIHlvdXIgbmV3IGNsYXNzIHRvIGBSZWFjdC5jcmVh
dGVDbGFzc2AuIFRoZSBvbmx5IHJlcXVpcmVtZW50IG9mIHlvdXIgY2xhc3MKKyAqIHNwZWNpZmlj
YXRpb24gaXMgdGhhdCB5b3UgaW1wbGVtZW50IGEgYHJlbmRlcmAgbWV0aG9kLgorICoKKyAqICAg
dmFyIE15Q29tcG9uZW50ID0gUmVhY3QuY3JlYXRlQ2xhc3MoeworICogICAgIHJlbmRlcjogZnVu
Y3Rpb24oKSB7CisgKiAgICAgICByZXR1cm4gPGRpdj5IZWxsbyBXb3JsZDwvZGl2PjsKKyAqICAg
ICB9CisgKiAgIH0pOworICoKKyAqIFRoZSBjbGFzcyBzcGVjaWZpY2F0aW9uIHN1cHBvcnRzIGEg
c3BlY2lmaWMgcHJvdG9jb2wgb2YgbWV0aG9kcyB0aGF0IGhhdmUKKyAqIHNwZWNpYWwgbWVhbmlu
ZyAoZS5nLiBgcmVuZGVyYCkuIFNlZSBgUmVhY3RDbGFzc0ludGVyZmFjZWAgZm9yCisgKiBtb3Jl
IHRoZSBjb21wcmVoZW5zaXZlIHByb3RvY29sLiBBbnkgb3RoZXIgcHJvcGVydGllcyBhbmQgbWV0
aG9kcyBpbiB0aGUKKyAqIGNsYXNzIHNwZWNpZmljYXRpb24gd2lsbCBiZSBhdmFpbGFibGUgb24g
dGhlIHByb3RvdHlwZS4KKyAqCisgKiBAaW50ZXJmYWNlIFJlYWN0Q2xhc3NJbnRlcmZhY2UKKyAq
IEBpbnRlcm5hbAorICovCit2YXIgUmVhY3RDbGFzc0ludGVyZmFjZSA9IHsKKworICAvKioKKyAg
ICogQW4gYXJyYXkgb2YgTWl4aW4gb2JqZWN0cyB0byBpbmNsdWRlIHdoZW4gZGVmaW5pbmcgeW91
ciBjb21wb25lbnQuCisgICAqCisgICAqIEB0eXBlIHthcnJheX0KKyAgICogQG9wdGlvbmFsCisg
ICAqLworICBtaXhpbnM6ICdERUZJTkVfTUFOWScsCisKKyAgLyoqCisgICAqIEFuIG9iamVjdCBj
b250YWluaW5nIHByb3BlcnRpZXMgYW5kIG1ldGhvZHMgdGhhdCBzaG91bGQgYmUgZGVmaW5lZCBv
bgorICAgKiB0aGUgY29tcG9uZW50J3MgY29uc3RydWN0b3IgaW5zdGVhZCBvZiBpdHMgcHJvdG90
eXBlIChzdGF0aWMgbWV0aG9kcykuCisgICAqCisgICAqIEB0eXBlIHtvYmplY3R9CisgICAqIEBv
cHRpb25hbAorICAgKi8KKyAgc3RhdGljczogJ0RFRklORV9NQU5ZJywKKworICAvKioKKyAgICog
RGVmaW5pdGlvbiBvZiBwcm9wIHR5cGVzIGZvciB0aGlzIGNvbXBvbmVudC4KKyAgICoKKyAgICog
QHR5cGUge29iamVjdH0KKyAgICogQG9wdGlvbmFsCisgICAqLworICBwcm9wVHlwZXM6ICdERUZJ
TkVfTUFOWScsCisKKyAgLyoqCisgICAqIERlZmluaXRpb24gb2YgY29udGV4dCB0eXBlcyBmb3Ig
dGhpcyBjb21wb25lbnQuCisgICAqCisgICAqIEB0eXBlIHtvYmplY3R9CisgICAqIEBvcHRpb25h
bAorICAgKi8KKyAgY29udGV4dFR5cGVzOiAnREVGSU5FX01BTlknLAorCisgIC8qKgorICAgKiBE
ZWZpbml0aW9uIG9mIGNvbnRleHQgdHlwZXMgdGhpcyBjb21wb25lbnQgc2V0cyBmb3IgaXRzIGNo
aWxkcmVuLgorICAgKgorICAgKiBAdHlwZSB7b2JqZWN0fQorICAgKiBAb3B0aW9uYWwKKyAgICov
CisgIGNoaWxkQ29udGV4dFR5cGVzOiAnREVGSU5FX01BTlknLAorCisgIC8vID09PT0gRGVmaW5p
dGlvbiBtZXRob2RzID09PT0KKworICAvKioKKyAgICogSW52b2tlZCB3aGVuIHRoZSBjb21wb25l
bnQgaXMgbW91bnRlZC4gVmFsdWVzIGluIHRoZSBtYXBwaW5nIHdpbGwgYmUgc2V0IG9uCisgICAq
IGB0aGlzLnByb3BzYCBpZiB0aGF0IHByb3AgaXMgbm90IHNwZWNpZmllZCAoaS5lLiB1c2luZyBh
biBgaW5gIGNoZWNrKS4KKyAgICoKKyAgICogVGhpcyBtZXRob2QgaXMgaW52b2tlZCBiZWZvcmUg
YGdldEluaXRpYWxTdGF0ZWAgYW5kIHRoZXJlZm9yZSBjYW5ub3QgcmVseQorICAgKiBvbiBgdGhp
cy5zdGF0ZWAgb3IgdXNlIGB0aGlzLnNldFN0YXRlYC4KKyAgICoKKyAgICogQHJldHVybiB7b2Jq
ZWN0fQorICAgKiBAb3B0aW9uYWwKKyAgICovCisgIGdldERlZmF1bHRQcm9wczogJ0RFRklORV9N
QU5ZX01FUkdFRCcsCisKKyAgLyoqCisgICAqIEludm9rZWQgb25jZSBiZWZvcmUgdGhlIGNvbXBv
bmVudCBpcyBtb3VudGVkLiBUaGUgcmV0dXJuIHZhbHVlIHdpbGwgYmUgdXNlZAorICAgKiBhcyB0
aGUgaW5pdGlhbCB2YWx1ZSBvZiBgdGhpcy5zdGF0ZWAuCisgICAqCisgICAqICAgZ2V0SW5pdGlh
bFN0YXRlOiBmdW5jdGlvbigpIHsKKyAgICogICAgIHJldHVybiB7CisgICAqICAgICAgIGlzT246
IGZhbHNlLAorICAgKiAgICAgICBmb29CYXo6IG5ldyBCYXpGb28oKQorICAgKiAgICAgfQorICAg
KiAgIH0KKyAgICoKKyAgICogQHJldHVybiB7b2JqZWN0fQorICAgKiBAb3B0aW9uYWwKKyAgICov
CisgIGdldEluaXRpYWxTdGF0ZTogJ0RFRklORV9NQU5ZX01FUkdFRCcsCisKKyAgLyoqCisgICAq
IEByZXR1cm4ge29iamVjdH0KKyAgICogQG9wdGlvbmFsCisgICAqLworICBnZXRDaGlsZENvbnRl
eHQ6ICdERUZJTkVfTUFOWV9NRVJHRUQnLAorCisgIC8qKgorICAgKiBVc2VzIHByb3BzIGZyb20g
YHRoaXMucHJvcHNgIGFuZCBzdGF0ZSBmcm9tIGB0aGlzLnN0YXRlYCB0byByZW5kZXIgdGhlCisg
ICAqIHN0cnVjdHVyZSBvZiB0aGUgY29tcG9uZW50LgorICAgKgorICAgKiBObyBndWFyYW50ZWVz
IGFyZSBtYWRlIGFib3V0IHdoZW4gb3IgaG93IG9mdGVuIHRoaXMgbWV0aG9kIGlzIGludm9rZWQs
IHNvCisgICAqIGl0IG11c3Qgbm90IGhhdmUgc2lkZSBlZmZlY3RzLgorICAgKgorICAgKiAgIHJl
bmRlcjogZnVuY3Rpb24oKSB7CisgICAqICAgICB2YXIgbmFtZSA9IHRoaXMucHJvcHMubmFtZTsK
KyAgICogICAgIHJldHVybiA8ZGl2PkhlbGxvLCB7bmFtZX0hPC9kaXY+OworICAgKiAgIH0KKyAg
ICoKKyAgICogQHJldHVybiB7UmVhY3RDb21wb25lbnR9CisgICAqIEBub3NpZGVlZmZlY3RzCisg
ICAqIEByZXF1aXJlZAorICAgKi8KKyAgcmVuZGVyOiAnREVGSU5FX09OQ0UnLAorCisgIC8vID09
PT0gRGVsZWdhdGUgbWV0aG9kcyA9PT09CisKKyAgLyoqCisgICAqIEludm9rZWQgd2hlbiB0aGUg
Y29tcG9uZW50IGlzIGluaXRpYWxseSBjcmVhdGVkIGFuZCBhYm91dCB0byBiZSBtb3VudGVkLgor
ICAgKiBUaGlzIG1heSBoYXZlIHNpZGUgZWZmZWN0cywgYnV0IGFueSBleHRlcm5hbCBzdWJzY3Jp
cHRpb25zIG9yIGRhdGEgY3JlYXRlZAorICAgKiBieSB0aGlzIG1ldGhvZCBtdXN0IGJlIGNsZWFu
ZWQgdXAgaW4gYGNvbXBvbmVudFdpbGxVbm1vdW50YC4KKyAgICoKKyAgICogQG9wdGlvbmFsCisg
ICAqLworICBjb21wb25lbnRXaWxsTW91bnQ6ICdERUZJTkVfTUFOWScsCisKKyAgLyoqCisgICAq
IEludm9rZWQgd2hlbiB0aGUgY29tcG9uZW50IGhhcyBiZWVuIG1vdW50ZWQgYW5kIGhhcyBhIERP
TSByZXByZXNlbnRhdGlvbi4KKyAgICogSG93ZXZlciwgdGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRo
YXQgdGhlIERPTSBub2RlIGlzIGluIHRoZSBkb2N1bWVudC4KKyAgICoKKyAgICogVXNlIHRoaXMg
YXMgYW4gb3Bwb3J0dW5pdHkgdG8gb3BlcmF0ZSBvbiB0aGUgRE9NIHdoZW4gdGhlIGNvbXBvbmVu
dCBoYXMKKyAgICogYmVlbiBtb3VudGVkIChpbml0aWFsaXplZCBhbmQgcmVuZGVyZWQpIGZvciB0
aGUgZmlyc3QgdGltZS4KKyAgICoKKyAgICogQHBhcmFtIHtET01FbGVtZW50fSByb290Tm9kZSBE
T00gZWxlbWVudCByZXByZXNlbnRpbmcgdGhlIGNvbXBvbmVudC4KKyAgICogQG9wdGlvbmFsCisg
ICAqLworICBjb21wb25lbnREaWRNb3VudDogJ0RFRklORV9NQU5ZJywKKworICAvKioKKyAgICog
SW52b2tlZCBiZWZvcmUgdGhlIGNvbXBvbmVudCByZWNlaXZlcyBuZXcgcHJvcHMuCisgICAqCisg
ICAqIFVzZSB0aGlzIGFzIGFuIG9wcG9ydHVuaXR5IHRvIHJlYWN0IHRvIGEgcHJvcCB0cmFuc2l0
aW9uIGJ5IHVwZGF0aW5nIHRoZQorICAgKiBzdGF0ZSB1c2luZyBgdGhpcy5zZXRTdGF0ZWAuIEN1
cnJlbnQgcHJvcHMgYXJlIGFjY2Vzc2VkIHZpYSBgdGhpcy5wcm9wc2AuCisgICAqCisgICAqICAg
Y29tcG9uZW50V2lsbFJlY2VpdmVQcm9wczogZnVuY3Rpb24obmV4dFByb3BzLCBuZXh0Q29udGV4
dCkgeworICAgKiAgICAgdGhpcy5zZXRTdGF0ZSh7CisgICAqICAgICAgIGxpa2VzSW5jcmVhc2lu
ZzogbmV4dFByb3BzLmxpa2VDb3VudCA+IHRoaXMucHJvcHMubGlrZUNvdW50CisgICAqICAgICB9
KTsKKyAgICogICB9CisgICAqCisgICAqIE5PVEU6IFRoZXJlIGlzIG5vIGVxdWl2YWxlbnQgYGNv
bXBvbmVudFdpbGxSZWNlaXZlU3RhdGVgLiBBbiBpbmNvbWluZyBwcm9wCisgICAqIHRyYW5zaXRp
b24gbWF5IGNhdXNlIGEgc3RhdGUgY2hhbmdlLCBidXQgdGhlIG9wcG9zaXRlIGlzIG5vdCB0cnVl
LiBJZiB5b3UKKyAgICogbmVlZCBpdCwgeW91IGFyZSBwcm9iYWJseSBsb29raW5nIGZvciBgY29t
cG9uZW50V2lsbFVwZGF0ZWAuCisgICAqCisgICAqIEBwYXJhbSB7b2JqZWN0fSBuZXh0UHJvcHMK
KyAgICogQG9wdGlvbmFsCisgICAqLworICBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzOiAnREVG
SU5FX01BTlknLAorCisgIC8qKgorICAgKiBJbnZva2VkIHdoaWxlIGRlY2lkaW5nIGlmIHRoZSBj
b21wb25lbnQgc2hvdWxkIGJlIHVwZGF0ZWQgYXMgYSByZXN1bHQgb2YKKyAgICogcmVjZWl2aW5n
IG5ldyBwcm9wcywgc3RhdGUgYW5kL29yIGNvbnRleHQuCisgICAqCisgICAqIFVzZSB0aGlzIGFz
IGFuIG9wcG9ydHVuaXR5IHRvIGByZXR1cm4gZmFsc2VgIHdoZW4geW91J3JlIGNlcnRhaW4gdGhh
dCB0aGUKKyAgICogdHJhbnNpdGlvbiB0byB0aGUgbmV3IHByb3BzL3N0YXRlL2NvbnRleHQgd2ls
bCBub3QgcmVxdWlyZSBhIGNvbXBvbmVudAorICAgKiB1cGRhdGUuCisgICAqCisgICAqICAgc2hv
dWxkQ29tcG9uZW50VXBkYXRlOiBmdW5jdGlvbihuZXh0UHJvcHMsIG5leHRTdGF0ZSwgbmV4dENv
bnRleHQpIHsKKyAgICogICAgIHJldHVybiAhZXF1YWwobmV4dFByb3BzLCB0aGlzLnByb3BzKSB8
fAorICAgKiAgICAgICAhZXF1YWwobmV4dFN0YXRlLCB0aGlzLnN0YXRlKSB8fAorICAgKiAgICAg
ICAhZXF1YWwobmV4dENvbnRleHQsIHRoaXMuY29udGV4dCk7CisgICAqICAgfQorICAgKgorICAg
KiBAcGFyYW0ge29iamVjdH0gbmV4dFByb3BzCisgICAqIEBwYXJhbSB7P29iamVjdH0gbmV4dFN0
YXRlCisgICAqIEBwYXJhbSB7P29iamVjdH0gbmV4dENvbnRleHQKKyAgICogQHJldHVybiB7Ym9v
bGVhbn0gVHJ1ZSBpZiB0aGUgY29tcG9uZW50IHNob3VsZCB1cGRhdGUuCisgICAqIEBvcHRpb25h
bAorICAgKi8KKyAgc2hvdWxkQ29tcG9uZW50VXBkYXRlOiAnREVGSU5FX09OQ0UnLAorCisgIC8q
KgorICAgKiBJbnZva2VkIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBhYm91dCB0byB1cGRhdGUgZHVl
IHRvIGEgdHJhbnNpdGlvbiBmcm9tCisgICAqIGB0aGlzLnByb3BzYCwgYHRoaXMuc3RhdGVgIGFu
ZCBgdGhpcy5jb250ZXh0YCB0byBgbmV4dFByb3BzYCwgYG5leHRTdGF0ZWAKKyAgICogYW5kIGBu
ZXh0Q29udGV4dGAuCisgICAqCisgICAqIFVzZSB0aGlzIGFzIGFuIG9wcG9ydHVuaXR5IHRvIHBl
cmZvcm0gcHJlcGFyYXRpb24gYmVmb3JlIGFuIHVwZGF0ZSBvY2N1cnMuCisgICAqCisgICAqIE5P
VEU6IFlvdSAqKmNhbm5vdCoqIHVzZSBgdGhpcy5zZXRTdGF0ZSgpYCBpbiB0aGlzIG1ldGhvZC4K
KyAgICoKKyAgICogQHBhcmFtIHtvYmplY3R9IG5leHRQcm9wcworICAgKiBAcGFyYW0gez9vYmpl
Y3R9IG5leHRTdGF0ZQorICAgKiBAcGFyYW0gez9vYmplY3R9IG5leHRDb250ZXh0CisgICAqIEBw
YXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb24KKyAgICogQG9wdGlv
bmFsCisgICAqLworICBjb21wb25lbnRXaWxsVXBkYXRlOiAnREVGSU5FX01BTlknLAorCisgIC8q
KgorICAgKiBJbnZva2VkIHdoZW4gdGhlIGNvbXBvbmVudCdzIERPTSByZXByZXNlbnRhdGlvbiBo
YXMgYmVlbiB1cGRhdGVkLgorICAgKgorICAgKiBVc2UgdGhpcyBhcyBhbiBvcHBvcnR1bml0eSB0
byBvcGVyYXRlIG9uIHRoZSBET00gd2hlbiB0aGUgY29tcG9uZW50IGhhcworICAgKiBiZWVuIHVw
ZGF0ZWQuCisgICAqCisgICAqIEBwYXJhbSB7b2JqZWN0fSBwcmV2UHJvcHMKKyAgICogQHBhcmFt
IHs/b2JqZWN0fSBwcmV2U3RhdGUKKyAgICogQHBhcmFtIHs/b2JqZWN0fSBwcmV2Q29udGV4dAor
ICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IHJvb3ROb2RlIERPTSBlbGVtZW50IHJlcHJlc2VudGlu
ZyB0aGUgY29tcG9uZW50LgorICAgKiBAb3B0aW9uYWwKKyAgICovCisgIGNvbXBvbmVudERpZFVw
ZGF0ZTogJ0RFRklORV9NQU5ZJywKKworICAvKioKKyAgICogSW52b2tlZCB3aGVuIHRoZSBjb21w
b25lbnQgaXMgYWJvdXQgdG8gYmUgcmVtb3ZlZCBmcm9tIGl0cyBwYXJlbnQgYW5kIGhhdmUKKyAg
ICogaXRzIERPTSByZXByZXNlbnRhdGlvbiBkZXN0cm95ZWQuCisgICAqCisgICAqIFVzZSB0aGlz
IGFzIGFuIG9wcG9ydHVuaXR5IHRvIGRlYWxsb2NhdGUgYW55IGV4dGVybmFsIHJlc291cmNlcy4K
KyAgICoKKyAgICogTk9URTogVGhlcmUgaXMgbm8gYGNvbXBvbmVudERpZFVubW91bnRgIHNpbmNl
IHlvdXIgY29tcG9uZW50IHdpbGwgaGF2ZSBiZWVuCisgICAqIGRlc3Ryb3llZCBieSB0aGF0IHBv
aW50LgorICAgKgorICAgKiBAb3B0aW9uYWwKKyAgICovCisgIGNvbXBvbmVudFdpbGxVbm1vdW50
OiAnREVGSU5FX01BTlknLAorCisgIC8vID09PT0gQWR2YW5jZWQgbWV0aG9kcyA9PT09CisKKyAg
LyoqCisgICAqIFVwZGF0ZXMgdGhlIGNvbXBvbmVudCdzIGN1cnJlbnRseSBtb3VudGVkIERPTSBy
ZXByZXNlbnRhdGlvbi4KKyAgICoKKyAgICogQnkgZGVmYXVsdCwgdGhpcyBpbXBsZW1lbnRzIFJl
YWN0J3MgcmVuZGVyaW5nIGFuZCByZWNvbmNpbGlhdGlvbiBhbGdvcml0aG0uCisgICAqIFNvcGhp
c3RpY2F0ZWQgY2xpZW50cyBtYXkgd2lzaCB0byBvdmVycmlkZSB0aGlzLgorICAgKgorICAgKiBA
cGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uCisgICAqIEBpbnRl
cm5hbAorICAgKiBAb3ZlcnJpZGFibGUKKyAgICovCisgIHVwZGF0ZUNvbXBvbmVudDogJ09WRVJS
SURFX0JBU0UnCisKK307CisKKy8qKgorICogTWFwcGluZyBmcm9tIGNsYXNzIHNwZWNpZmljYXRp
b24ga2V5cyB0byBzcGVjaWFsIHByb2Nlc3NpbmcgZnVuY3Rpb25zLgorICoKKyAqIEFsdGhvdWdo
IHRoZXNlIGFyZSBkZWNsYXJlZCBsaWtlIGluc3RhbmNlIHByb3BlcnRpZXMgaW4gdGhlIHNwZWNp
ZmljYXRpb24KKyAqIHdoZW4gZGVmaW5pbmcgY2xhc3NlcyB1c2luZyBgUmVhY3QuY3JlYXRlQ2xh
c3NgLCB0aGV5IGFyZSBhY3R1YWxseSBzdGF0aWMKKyAqIGFuZCBhcmUgYWNjZXNzaWJsZSBvbiB0
aGUgY29uc3RydWN0b3IgaW5zdGVhZCBvZiB0aGUgcHJvdG90eXBlLiBEZXNwaXRlCisgKiBiZWlu
ZyBzdGF0aWMsIHRoZXkgbXVzdCBiZSBkZWZpbmVkIG91dHNpZGUgb2YgdGhlICJzdGF0aWNzIiBr
ZXkgdW5kZXIKKyAqIHdoaWNoIGFsbCBvdGhlciBzdGF0aWMgbWV0aG9kcyBhcmUgZGVmaW5lZC4K
KyAqLwordmFyIFJFU0VSVkVEX1NQRUNfS0VZUyA9IHsKKyAgZGlzcGxheU5hbWU6IGZ1bmN0aW9u
IChDb25zdHJ1Y3RvciwgZGlzcGxheU5hbWUpIHsKKyAgICBDb25zdHJ1Y3Rvci5kaXNwbGF5TmFt
ZSA9IGRpc3BsYXlOYW1lOworICB9LAorICBtaXhpbnM6IGZ1bmN0aW9uIChDb25zdHJ1Y3Rvciwg
bWl4aW5zKSB7CisgICAgaWYgKG1peGlucykgeworICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBt
aXhpbnMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgbWl4U3BlY0ludG9Db21wb25lbnQoQ29uc3Ry
dWN0b3IsIG1peGluc1tpXSk7CisgICAgICB9CisgICAgfQorICB9LAorICBjaGlsZENvbnRleHRU
eXBlczogZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBjaGlsZENvbnRleHRUeXBlcykgeworICAgIGlm
ICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgIHZhbGlkYXRlVHlwZURl
ZihDb25zdHJ1Y3RvciwgY2hpbGRDb250ZXh0VHlwZXMsICdjaGlsZENvbnRleHQnKTsKKyAgICB9
CisgICAgQ29uc3RydWN0b3IuY2hpbGRDb250ZXh0VHlwZXMgPSBfYXNzaWduKHt9LCBDb25zdHJ1
Y3Rvci5jaGlsZENvbnRleHRUeXBlcywgY2hpbGRDb250ZXh0VHlwZXMpOworICB9LAorICBjb250
ZXh0VHlwZXM6IGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgY29udGV4dFR5cGVzKSB7CisgICAgaWYg
KCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgdmFsaWRhdGVUeXBlRGVm
KENvbnN0cnVjdG9yLCBjb250ZXh0VHlwZXMsICdjb250ZXh0Jyk7CisgICAgfQorICAgIENvbnN0
cnVjdG9yLmNvbnRleHRUeXBlcyA9IF9hc3NpZ24oe30sIENvbnN0cnVjdG9yLmNvbnRleHRUeXBl
cywgY29udGV4dFR5cGVzKTsKKyAgfSwKKyAgLyoqCisgICAqIFNwZWNpYWwgY2FzZSBnZXREZWZh
dWx0UHJvcHMgd2hpY2ggc2hvdWxkIG1vdmUgaW50byBzdGF0aWNzIGJ1dCByZXF1aXJlcworICAg
KiBhdXRvbWF0aWMgbWVyZ2luZy4KKyAgICovCisgIGdldERlZmF1bHRQcm9wczogZnVuY3Rpb24g
KENvbnN0cnVjdG9yLCBnZXREZWZhdWx0UHJvcHMpIHsKKyAgICBpZiAoQ29uc3RydWN0b3IuZ2V0
RGVmYXVsdFByb3BzKSB7CisgICAgICBDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMgPSBjcmVh
dGVNZXJnZWRSZXN1bHRGdW5jdGlvbihDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMsIGdldERl
ZmF1bHRQcm9wcyk7CisgICAgfSBlbHNlIHsKKyAgICAgIENvbnN0cnVjdG9yLmdldERlZmF1bHRQ
cm9wcyA9IGdldERlZmF1bHRQcm9wczsKKyAgICB9CisgIH0sCisgIHByb3BUeXBlczogZnVuY3Rp
b24gKENvbnN0cnVjdG9yLCBwcm9wVHlwZXMpIHsKKyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0g
J3Byb2R1Y3Rpb24nKSB7CisgICAgICB2YWxpZGF0ZVR5cGVEZWYoQ29uc3RydWN0b3IsIHByb3BU
eXBlcywgJ3Byb3AnKTsKKyAgICB9CisgICAgQ29uc3RydWN0b3IucHJvcFR5cGVzID0gX2Fzc2ln
bih7fSwgQ29uc3RydWN0b3IucHJvcFR5cGVzLCBwcm9wVHlwZXMpOworICB9LAorICBzdGF0aWNz
OiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHN0YXRpY3MpIHsKKyAgICBtaXhTdGF0aWNTcGVjSW50
b0NvbXBvbmVudChDb25zdHJ1Y3Rvciwgc3RhdGljcyk7CisgIH0sCisgIGF1dG9iaW5kOiBmdW5j
dGlvbiAoKSB7fSB9OworCitmdW5jdGlvbiB2YWxpZGF0ZVR5cGVEZWYoQ29uc3RydWN0b3IsIHR5
cGVEZWYsIGxvY2F0aW9uKSB7CisgIGZvciAodmFyIHByb3BOYW1lIGluIHR5cGVEZWYpIHsKKyAg
ICBpZiAodHlwZURlZi5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHsKKyAgICAgIC8vIHVzZSBh
IHdhcm5pbmcgaW5zdGVhZCBvZiBhbiBpbnZhcmlhbnQgc28gY29tcG9uZW50cworICAgICAgLy8g
ZG9uJ3Qgc2hvdyB1cCBpbiBwcm9kIGJ1dCBvbmx5IGluIF9fREVWX18KKyAgICAgICJkZXZlbG9w
bWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcodHlwZW9mIHR5cGVEZWZbcHJvcE5hbWVd
ID09PSAnZnVuY3Rpb24nLCAnJXM6ICVzIHR5cGUgYCVzYCBpcyBpbnZhbGlkOyBpdCBtdXN0IGJl
IGEgZnVuY3Rpb24sIHVzdWFsbHkgZnJvbSAnICsgJ1JlYWN0LlByb3BUeXBlcy4nLCBDb25zdHJ1
Y3Rvci5kaXNwbGF5TmFtZSB8fCAnUmVhY3RDbGFzcycsIFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5h
bWVzW2xvY2F0aW9uXSwgcHJvcE5hbWUpIDogdm9pZCAwOworICAgIH0KKyAgfQorfQorCitmdW5j
dGlvbiB2YWxpZGF0ZU1ldGhvZE92ZXJyaWRlKGlzQWxyZWFkeURlZmluZWQsIG5hbWUpIHsKKyAg
dmFyIHNwZWNQb2xpY3kgPSBSZWFjdENsYXNzSW50ZXJmYWNlLmhhc093blByb3BlcnR5KG5hbWUp
ID8gUmVhY3RDbGFzc0ludGVyZmFjZVtuYW1lXSA6IG51bGw7CisKKyAgLy8gRGlzYWxsb3cgb3Zl
cnJpZGluZyBvZiBiYXNlIGNsYXNzIG1ldGhvZHMgdW5sZXNzIGV4cGxpY2l0bHkgYWxsb3dlZC4K
KyAgaWYgKFJlYWN0Q2xhc3NNaXhpbi5oYXNPd25Qcm9wZXJ0eShuYW1lKSkgeworICAgICEoc3Bl
Y1BvbGljeSA9PT0gJ09WRVJSSURFX0JBU0UnKSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0
aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0Q2xhc3NJbnRlcmZhY2U6IFlvdSBhcmUgYXR0
ZW1wdGluZyB0byBvdmVycmlkZSBgJXNgIGZyb20geW91ciBjbGFzcyBzcGVjaWZpY2F0aW9uLiBF
bnN1cmUgdGhhdCB5b3VyIG1ldGhvZCBuYW1lcyBkbyBub3Qgb3ZlcmxhcCB3aXRoIFJlYWN0IG1l
dGhvZHMuJywgbmFtZSkgOiBfcHJvZEludmFyaWFudCgnNzMnLCBuYW1lKSA6IHZvaWQgMDsKKyAg
fQorCisgIC8vIERpc2FsbG93IGRlZmluaW5nIG1ldGhvZHMgbW9yZSB0aGFuIG9uY2UgdW5sZXNz
IGV4cGxpY2l0bHkgYWxsb3dlZC4KKyAgaWYgKGlzQWxyZWFkeURlZmluZWQpIHsKKyAgICAhKHNw
ZWNQb2xpY3kgPT09ICdERUZJTkVfTUFOWScgfHwgc3BlY1BvbGljeSA9PT0gJ0RFRklORV9NQU5Z
X01FUkdFRCcpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZh
bHNlLCAnUmVhY3RDbGFzc0ludGVyZmFjZTogWW91IGFyZSBhdHRlbXB0aW5nIHRvIGRlZmluZSBg
JXNgIG9uIHlvdXIgY29tcG9uZW50IG1vcmUgdGhhbiBvbmNlLiBUaGlzIGNvbmZsaWN0IG1heSBi
ZSBkdWUgdG8gYSBtaXhpbi4nLCBuYW1lKSA6IF9wcm9kSW52YXJpYW50KCc3NCcsIG5hbWUpIDog
dm9pZCAwOworICB9Cit9CisKKy8qKgorICogTWl4aW4gaGVscGVyIHdoaWNoIGhhbmRsZXMgcG9s
aWN5IHZhbGlkYXRpb24gYW5kIHJlc2VydmVkCisgKiBzcGVjaWZpY2F0aW9uIGtleXMgd2hlbiBi
dWlsZGluZyBSZWFjdCBjbGFzc2VzLgorICovCitmdW5jdGlvbiBtaXhTcGVjSW50b0NvbXBvbmVu
dChDb25zdHJ1Y3Rvciwgc3BlYykgeworICBpZiAoIXNwZWMpIHsKKyAgICBpZiAoImRldmVsb3Bt
ZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICB2YXIgdHlwZW9mU3BlYyA9IHR5cGVvZiBz
cGVjOworICAgICAgdmFyIGlzTWl4aW5WYWxpZCA9IHR5cGVvZlNwZWMgPT09ICdvYmplY3QnICYm
IHNwZWMgIT09IG51bGw7CisKKyAgICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/
IHdhcm5pbmcoaXNNaXhpblZhbGlkLCAnJXM6IFlvdVwncmUgYXR0ZW1wdGluZyB0byBpbmNsdWRl
IGEgbWl4aW4gdGhhdCBpcyBlaXRoZXIgbnVsbCAnICsgJ29yIG5vdCBhbiBvYmplY3QuIENoZWNr
IHRoZSBtaXhpbnMgaW5jbHVkZWQgYnkgdGhlIGNvbXBvbmVudCwgJyArICdhcyB3ZWxsIGFzIGFu
eSBtaXhpbnMgdGhleSBpbmNsdWRlIHRoZW1zZWx2ZXMuICcgKyAnRXhwZWN0ZWQgb2JqZWN0IGJ1
dCBnb3QgJXMuJywgQ29uc3RydWN0b3IuZGlzcGxheU5hbWUgfHwgJ1JlYWN0Q2xhc3MnLCBzcGVj
ID09PSBudWxsID8gbnVsbCA6IHR5cGVvZlNwZWMpIDogdm9pZCAwOworICAgIH0KKworICAgIHJl
dHVybjsKKyAgfQorCisgICEodHlwZW9mIHNwZWMgIT09ICdmdW5jdGlvbicpID8gImRldmVsb3Bt
ZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3RDbGFzczogWW91
XCdyZSBhdHRlbXB0aW5nIHRvIHVzZSBhIGNvbXBvbmVudCBjbGFzcyBvciBmdW5jdGlvbiBhcyBh
IG1peGluLiBJbnN0ZWFkLCBqdXN0IHVzZSBhIHJlZ3VsYXIgb2JqZWN0LicpIDogX3Byb2RJbnZh
cmlhbnQoJzc1JykgOiB2b2lkIDA7CisgICEhUmVhY3RFbGVtZW50LmlzVmFsaWRFbGVtZW50KHNw
ZWMpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAn
UmVhY3RDbGFzczogWW91XCdyZSBhdHRlbXB0aW5nIHRvIHVzZSBhIGNvbXBvbmVudCBhcyBhIG1p
eGluLiBJbnN0ZWFkLCBqdXN0IHVzZSBhIHJlZ3VsYXIgb2JqZWN0LicpIDogX3Byb2RJbnZhcmlh
bnQoJzc2JykgOiB2b2lkIDA7CisKKyAgdmFyIHByb3RvID0gQ29uc3RydWN0b3IucHJvdG90eXBl
OworICB2YXIgYXV0b0JpbmRQYWlycyA9IHByb3RvLl9fcmVhY3RBdXRvQmluZFBhaXJzOworCisg
IC8vIEJ5IGhhbmRsaW5nIG1peGlucyBiZWZvcmUgYW55IG90aGVyIHByb3BlcnRpZXMsIHdlIGVu
c3VyZSB0aGUgc2FtZQorICAvLyBjaGFpbmluZyBvcmRlciBpcyBhcHBsaWVkIHRvIG1ldGhvZHMg
d2l0aCBERUZJTkVfTUFOWSBwb2xpY3ksIHdoZXRoZXIKKyAgLy8gbWl4aW5zIGFyZSBsaXN0ZWQg
YmVmb3JlIG9yIGFmdGVyIHRoZXNlIG1ldGhvZHMgaW4gdGhlIHNwZWMuCisgIGlmIChzcGVjLmhh
c093blByb3BlcnR5KE1JWElOU19LRVkpKSB7CisgICAgUkVTRVJWRURfU1BFQ19LRVlTLm1peGlu
cyhDb25zdHJ1Y3Rvciwgc3BlYy5taXhpbnMpOworICB9CisKKyAgZm9yICh2YXIgbmFtZSBpbiBz
cGVjKSB7CisgICAgaWYgKCFzcGVjLmhhc093blByb3BlcnR5KG5hbWUpKSB7CisgICAgICBjb250
aW51ZTsKKyAgICB9CisKKyAgICBpZiAobmFtZSA9PT0gTUlYSU5TX0tFWSkgeworICAgICAgLy8g
V2UgaGF2ZSBhbHJlYWR5IGhhbmRsZWQgbWl4aW5zIGluIGEgc3BlY2lhbCBjYXNlIGFib3ZlLgor
ICAgICAgY29udGludWU7CisgICAgfQorCisgICAgdmFyIHByb3BlcnR5ID0gc3BlY1tuYW1lXTsK
KyAgICB2YXIgaXNBbHJlYWR5RGVmaW5lZCA9IHByb3RvLmhhc093blByb3BlcnR5KG5hbWUpOwor
ICAgIHZhbGlkYXRlTWV0aG9kT3ZlcnJpZGUoaXNBbHJlYWR5RGVmaW5lZCwgbmFtZSk7CisKKyAg
ICBpZiAoUkVTRVJWRURfU1BFQ19LRVlTLmhhc093blByb3BlcnR5KG5hbWUpKSB7CisgICAgICBS
RVNFUlZFRF9TUEVDX0tFWVNbbmFtZV0oQ29uc3RydWN0b3IsIHByb3BlcnR5KTsKKyAgICB9IGVs
c2UgeworICAgICAgLy8gU2V0dXAgbWV0aG9kcyBvbiBwcm90b3R5cGU6CisgICAgICAvLyBUaGUg
Zm9sbG93aW5nIG1lbWJlciBtZXRob2RzIHNob3VsZCBub3QgYmUgYXV0b21hdGljYWxseSBib3Vu
ZDoKKyAgICAgIC8vIDEuIEV4cGVjdGVkIFJlYWN0Q2xhc3MgbWV0aG9kcyAoaW4gdGhlICJpbnRl
cmZhY2UiKS4KKyAgICAgIC8vIDIuIE92ZXJyaWRkZW4gbWV0aG9kcyAodGhhdCB3ZXJlIG1peGVk
IGluKS4KKyAgICAgIHZhciBpc1JlYWN0Q2xhc3NNZXRob2QgPSBSZWFjdENsYXNzSW50ZXJmYWNl
Lmhhc093blByb3BlcnR5KG5hbWUpOworICAgICAgdmFyIGlzRnVuY3Rpb24gPSB0eXBlb2YgcHJv
cGVydHkgPT09ICdmdW5jdGlvbic7CisgICAgICB2YXIgc2hvdWxkQXV0b0JpbmQgPSBpc0Z1bmN0
aW9uICYmICFpc1JlYWN0Q2xhc3NNZXRob2QgJiYgIWlzQWxyZWFkeURlZmluZWQgJiYgc3BlYy5h
dXRvYmluZCAhPT0gZmFsc2U7CisKKyAgICAgIGlmIChzaG91bGRBdXRvQmluZCkgeworICAgICAg
ICBhdXRvQmluZFBhaXJzLnB1c2gobmFtZSwgcHJvcGVydHkpOworICAgICAgICBwcm90b1tuYW1l
XSA9IHByb3BlcnR5OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGlzQWxyZWFkeURlZmlu
ZWQpIHsKKyAgICAgICAgICB2YXIgc3BlY1BvbGljeSA9IFJlYWN0Q2xhc3NJbnRlcmZhY2VbbmFt
ZV07CisKKyAgICAgICAgICAvLyBUaGVzZSBjYXNlcyBzaG91bGQgYWxyZWFkeSBiZSBjYXVnaHQg
YnkgdmFsaWRhdGVNZXRob2RPdmVycmlkZS4KKyAgICAgICAgICAhKGlzUmVhY3RDbGFzc01ldGhv
ZCAmJiAoc3BlY1BvbGljeSA9PT0gJ0RFRklORV9NQU5ZX01FUkdFRCcgfHwgc3BlY1BvbGljeSA9
PT0gJ0RFRklORV9NQU5ZJykpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52
YXJpYW50KGZhbHNlLCAnUmVhY3RDbGFzczogVW5leHBlY3RlZCBzcGVjIHBvbGljeSAlcyBmb3Ig
a2V5ICVzIHdoZW4gbWl4aW5nIGluIGNvbXBvbmVudCBzcGVjcy4nLCBzcGVjUG9saWN5LCBuYW1l
KSA6IF9wcm9kSW52YXJpYW50KCc3NycsIHNwZWNQb2xpY3ksIG5hbWUpIDogdm9pZCAwOworCisg
ICAgICAgICAgLy8gRm9yIG1ldGhvZHMgd2hpY2ggYXJlIGRlZmluZWQgbW9yZSB0aGFuIG9uY2Us
IGNhbGwgdGhlIGV4aXN0aW5nCisgICAgICAgICAgLy8gbWV0aG9kcyBiZWZvcmUgY2FsbGluZyB0
aGUgbmV3IHByb3BlcnR5LCBtZXJnaW5nIGlmIGFwcHJvcHJpYXRlLgorICAgICAgICAgIGlmIChz
cGVjUG9saWN5ID09PSAnREVGSU5FX01BTllfTUVSR0VEJykgeworICAgICAgICAgICAgcHJvdG9b
bmFtZV0gPSBjcmVhdGVNZXJnZWRSZXN1bHRGdW5jdGlvbihwcm90b1tuYW1lXSwgcHJvcGVydHkp
OworICAgICAgICAgIH0gZWxzZSBpZiAoc3BlY1BvbGljeSA9PT0gJ0RFRklORV9NQU5ZJykgewor
ICAgICAgICAgICAgcHJvdG9bbmFtZV0gPSBjcmVhdGVDaGFpbmVkRnVuY3Rpb24ocHJvdG9bbmFt
ZV0sIHByb3BlcnR5KTsKKyAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
cHJvdG9bbmFtZV0gPSBwcm9wZXJ0eTsKKyAgICAgICAgICBpZiAoImRldmVsb3BtZW50IiAhPT0g
J3Byb2R1Y3Rpb24nKSB7CisgICAgICAgICAgICAvLyBBZGQgdmVyYm9zZSBkaXNwbGF5TmFtZSB0
byB0aGUgZnVuY3Rpb24sIHdoaWNoIGhlbHBzIHdoZW4gbG9va2luZworICAgICAgICAgICAgLy8g
YXQgcHJvZmlsaW5nIHRvb2xzLgorICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9wZXJ0eSA9PT0g
J2Z1bmN0aW9uJyAmJiBzcGVjLmRpc3BsYXlOYW1lKSB7CisgICAgICAgICAgICAgIHByb3RvW25h
bWVdLmRpc3BsYXlOYW1lID0gc3BlYy5kaXNwbGF5TmFtZSArICdfJyArIG5hbWU7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9Cit9CisK
K2Z1bmN0aW9uIG1peFN0YXRpY1NwZWNJbnRvQ29tcG9uZW50KENvbnN0cnVjdG9yLCBzdGF0aWNz
KSB7CisgIGlmICghc3RhdGljcykgeworICAgIHJldHVybjsKKyAgfQorICBmb3IgKHZhciBuYW1l
IGluIHN0YXRpY3MpIHsKKyAgICB2YXIgcHJvcGVydHkgPSBzdGF0aWNzW25hbWVdOworICAgIGlm
ICghc3RhdGljcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkgeworICAgICAgY29udGludWU7CisgICAg
fQorCisgICAgdmFyIGlzUmVzZXJ2ZWQgPSBuYW1lIGluIFJFU0VSVkVEX1NQRUNfS0VZUzsKKyAg
ICAhIWlzUmVzZXJ2ZWQgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlh
bnQoZmFsc2UsICdSZWFjdENsYXNzOiBZb3UgYXJlIGF0dGVtcHRpbmcgdG8gZGVmaW5lIGEgcmVz
ZXJ2ZWQgcHJvcGVydHksIGAlc2AsIHRoYXQgc2hvdWxkblwndCBiZSBvbiB0aGUgInN0YXRpY3Mi
IGtleS4gRGVmaW5lIGl0IGFzIGFuIGluc3RhbmNlIHByb3BlcnR5IGluc3RlYWQ7IGl0IHdpbGwg
c3RpbGwgYmUgYWNjZXNzaWJsZSBvbiB0aGUgY29uc3RydWN0b3IuJywgbmFtZSkgOiBfcHJvZElu
dmFyaWFudCgnNzgnLCBuYW1lKSA6IHZvaWQgMDsKKworICAgIHZhciBpc0luaGVyaXRlZCA9IG5h
bWUgaW4gQ29uc3RydWN0b3I7CisgICAgISFpc0luaGVyaXRlZCA/ICJkZXZlbG9wbWVudCIgIT09
ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0Q2xhc3M6IFlvdSBhcmUgYXR0
ZW1wdGluZyB0byBkZWZpbmUgYCVzYCBvbiB5b3VyIGNvbXBvbmVudCBtb3JlIHRoYW4gb25jZS4g
VGhpcyBjb25mbGljdCBtYXkgYmUgZHVlIHRvIGEgbWl4aW4uJywgbmFtZSkgOiBfcHJvZEludmFy
aWFudCgnNzknLCBuYW1lKSA6IHZvaWQgMDsKKyAgICBDb25zdHJ1Y3RvcltuYW1lXSA9IHByb3Bl
cnR5OworICB9Cit9CisKKy8qKgorICogTWVyZ2UgdHdvIG9iamVjdHMsIGJ1dCB0aHJvdyBpZiBi
b3RoIGNvbnRhaW4gdGhlIHNhbWUga2V5LgorICoKKyAqIEBwYXJhbSB7b2JqZWN0fSBvbmUgVGhl
IGZpcnN0IG9iamVjdCwgd2hpY2ggaXMgbXV0YXRlZC4KKyAqIEBwYXJhbSB7b2JqZWN0fSB0d28g
VGhlIHNlY29uZCBvYmplY3QKKyAqIEByZXR1cm4ge29iamVjdH0gb25lIGFmdGVyIGl0IGhhcyBi
ZWVuIG11dGF0ZWQgdG8gY29udGFpbiBldmVyeXRoaW5nIGluIHR3by4KKyAqLworZnVuY3Rpb24g
bWVyZ2VJbnRvV2l0aE5vRHVwbGljYXRlS2V5cyhvbmUsIHR3bykgeworICAhKG9uZSAmJiB0d28g
JiYgdHlwZW9mIG9uZSA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIHR3byA9PT0gJ29iamVjdCcpID8g
ImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnbWVyZ2VJ
bnRvV2l0aE5vRHVwbGljYXRlS2V5cygpOiBDYW5ub3QgbWVyZ2Ugbm9uLW9iamVjdHMuJykgOiBf
cHJvZEludmFyaWFudCgnODAnKSA6IHZvaWQgMDsKKworICBmb3IgKHZhciBrZXkgaW4gdHdvKSB7
CisgICAgaWYgKHR3by5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7CisgICAgICAhKG9uZVtrZXldID09
PSB1bmRlZmluZWQpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50
KGZhbHNlLCAnbWVyZ2VJbnRvV2l0aE5vRHVwbGljYXRlS2V5cygpOiBUcmllZCB0byBtZXJnZSB0
d28gb2JqZWN0cyB3aXRoIHRoZSBzYW1lIGtleTogYCVzYC4gVGhpcyBjb25mbGljdCBtYXkgYmUg
ZHVlIHRvIGEgbWl4aW47IGluIHBhcnRpY3VsYXIsIHRoaXMgbWF5IGJlIGNhdXNlZCBieSB0d28g
Z2V0SW5pdGlhbFN0YXRlKCkgb3IgZ2V0RGVmYXVsdFByb3BzKCkgbWV0aG9kcyByZXR1cm5pbmcg
b2JqZWN0cyB3aXRoIGNsYXNoaW5nIGtleXMuJywga2V5KSA6IF9wcm9kSW52YXJpYW50KCc4MScs
IGtleSkgOiB2b2lkIDA7CisgICAgICBvbmVba2V5XSA9IHR3b1trZXldOworICAgIH0KKyAgfQor
ICByZXR1cm4gb25lOworfQorCisvKioKKyAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9r
ZXMgdHdvIGZ1bmN0aW9ucyBhbmQgbWVyZ2VzIHRoZWlyIHJldHVybiB2YWx1ZXMuCisgKgorICog
QHBhcmFtIHtmdW5jdGlvbn0gb25lIEZ1bmN0aW9uIHRvIGludm9rZSBmaXJzdC4KKyAqIEBwYXJh
bSB7ZnVuY3Rpb259IHR3byBGdW5jdGlvbiB0byBpbnZva2Ugc2Vjb25kLgorICogQHJldHVybiB7
ZnVuY3Rpb259IEZ1bmN0aW9uIHRoYXQgaW52b2tlcyB0aGUgdHdvIGFyZ3VtZW50IGZ1bmN0aW9u
cy4KKyAqIEBwcml2YXRlCisgKi8KK2Z1bmN0aW9uIGNyZWF0ZU1lcmdlZFJlc3VsdEZ1bmN0aW9u
KG9uZSwgdHdvKSB7CisgIHJldHVybiBmdW5jdGlvbiBtZXJnZWRSZXN1bHQoKSB7CisgICAgdmFy
IGEgPSBvbmUuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKKyAgICB2YXIgYiA9IHR3by5hcHBseSh0
aGlzLCBhcmd1bWVudHMpOworICAgIGlmIChhID09IG51bGwpIHsKKyAgICAgIHJldHVybiBiOwor
ICAgIH0gZWxzZSBpZiAoYiA9PSBudWxsKSB7CisgICAgICByZXR1cm4gYTsKKyAgICB9CisgICAg
dmFyIGMgPSB7fTsKKyAgICBtZXJnZUludG9XaXRoTm9EdXBsaWNhdGVLZXlzKGMsIGEpOworICAg
IG1lcmdlSW50b1dpdGhOb0R1cGxpY2F0ZUtleXMoYywgYik7CisgICAgcmV0dXJuIGM7CisgIH07
Cit9CisKKy8qKgorICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyB0d28gZnVuY3Rp
b25zIGFuZCBpZ25vcmVzIHRoZWlyIHJldHVybiB2YWxlcy4KKyAqCisgKiBAcGFyYW0ge2Z1bmN0
aW9ufSBvbmUgRnVuY3Rpb24gdG8gaW52b2tlIGZpcnN0LgorICogQHBhcmFtIHtmdW5jdGlvbn0g
dHdvIEZ1bmN0aW9uIHRvIGludm9rZSBzZWNvbmQuCisgKiBAcmV0dXJuIHtmdW5jdGlvbn0gRnVu
Y3Rpb24gdGhhdCBpbnZva2VzIHRoZSB0d28gYXJndW1lbnQgZnVuY3Rpb25zLgorICogQHByaXZh
dGUKKyAqLworZnVuY3Rpb24gY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uKG9uZSwgdHdvKSB7CisgIHJl
dHVybiBmdW5jdGlvbiBjaGFpbmVkRnVuY3Rpb24oKSB7CisgICAgb25lLmFwcGx5KHRoaXMsIGFy
Z3VtZW50cyk7CisgICAgdHdvLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CisgIH07Cit9CisKKy8q
KgorICogQmluZHMgYSBtZXRob2QgdG8gdGhlIGNvbXBvbmVudC4KKyAqCisgKiBAcGFyYW0ge29i
amVjdH0gY29tcG9uZW50IENvbXBvbmVudCB3aG9zZSBtZXRob2QgaXMgZ29pbmcgdG8gYmUgYm91
bmQuCisgKiBAcGFyYW0ge2Z1bmN0aW9ufSBtZXRob2QgTWV0aG9kIHRvIGJlIGJvdW5kLgorICog
QHJldHVybiB7ZnVuY3Rpb259IFRoZSBib3VuZCBtZXRob2QuCisgKi8KK2Z1bmN0aW9uIGJpbmRB
dXRvQmluZE1ldGhvZChjb21wb25lbnQsIG1ldGhvZCkgeworICB2YXIgYm91bmRNZXRob2QgPSBt
ZXRob2QuYmluZChjb21wb25lbnQpOworICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rp
b24nKSB7CisgICAgYm91bmRNZXRob2QuX19yZWFjdEJvdW5kQ29udGV4dCA9IGNvbXBvbmVudDsK
KyAgICBib3VuZE1ldGhvZC5fX3JlYWN0Qm91bmRNZXRob2QgPSBtZXRob2Q7CisgICAgYm91bmRN
ZXRob2QuX19yZWFjdEJvdW5kQXJndW1lbnRzID0gbnVsbDsKKyAgICB2YXIgY29tcG9uZW50TmFt
ZSA9IGNvbXBvbmVudC5jb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZTsKKyAgICB2YXIgX2JpbmQgPSBi
b3VuZE1ldGhvZC5iaW5kOworICAgIGJvdW5kTWV0aG9kLmJpbmQgPSBmdW5jdGlvbiAobmV3VGhp
cykgeworICAgICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBBcnJh
eShfbGVuID4gMSA/IF9sZW4gLSAxIDogMCksIF9rZXkgPSAxOyBfa2V5IDwgX2xlbjsgX2tleSsr
KSB7CisgICAgICAgIGFyZ3NbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldOworICAgICAgfQor
CisgICAgICAvLyBVc2VyIGlzIHRyeWluZyB0byBiaW5kKCkgYW4gYXV0b2JvdW5kIG1ldGhvZDsg
d2UgZWZmZWN0aXZlbHkgd2lsbAorICAgICAgLy8gaWdub3JlIHRoZSB2YWx1ZSBvZiAidGhpcyIg
dGhhdCB0aGUgdXNlciBpcyB0cnlpbmcgdG8gdXNlLCBzbworICAgICAgLy8gbGV0J3Mgd2Fybi4K
KyAgICAgIGlmIChuZXdUaGlzICE9PSBjb21wb25lbnQgJiYgbmV3VGhpcyAhPT0gbnVsbCkgewor
ICAgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAn
YmluZCgpOiBSZWFjdCBjb21wb25lbnQgbWV0aG9kcyBtYXkgb25seSBiZSBib3VuZCB0byB0aGUg
JyArICdjb21wb25lbnQgaW5zdGFuY2UuIFNlZSAlcycsIGNvbXBvbmVudE5hbWUpIDogdm9pZCAw
OworICAgICAgfSBlbHNlIGlmICghYXJncy5sZW5ndGgpIHsKKyAgICAgICAgImRldmVsb3BtZW50
IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ2JpbmQoKTogWW91IGFyZSBiaW5k
aW5nIGEgY29tcG9uZW50IG1ldGhvZCB0byB0aGUgY29tcG9uZW50LiAnICsgJ1JlYWN0IGRvZXMg
dGhpcyBmb3IgeW91IGF1dG9tYXRpY2FsbHkgaW4gYSBoaWdoLXBlcmZvcm1hbmNlICcgKyAnd2F5
LCBzbyB5b3UgY2FuIHNhZmVseSByZW1vdmUgdGhpcyBjYWxsLiBTZWUgJXMnLCBjb21wb25lbnRO
YW1lKSA6IHZvaWQgMDsKKyAgICAgICAgcmV0dXJuIGJvdW5kTWV0aG9kOworICAgICAgfQorICAg
ICAgdmFyIHJlYm91bmRNZXRob2QgPSBfYmluZC5hcHBseShib3VuZE1ldGhvZCwgYXJndW1lbnRz
KTsKKyAgICAgIHJlYm91bmRNZXRob2QuX19yZWFjdEJvdW5kQ29udGV4dCA9IGNvbXBvbmVudDsK
KyAgICAgIHJlYm91bmRNZXRob2QuX19yZWFjdEJvdW5kTWV0aG9kID0gbWV0aG9kOworICAgICAg
cmVib3VuZE1ldGhvZC5fX3JlYWN0Qm91bmRBcmd1bWVudHMgPSBhcmdzOworICAgICAgcmV0dXJu
IHJlYm91bmRNZXRob2Q7CisgICAgfTsKKyAgfQorICByZXR1cm4gYm91bmRNZXRob2Q7Cit9CisK
Ky8qKgorICogQmluZHMgYWxsIGF1dG8tYm91bmQgbWV0aG9kcyBpbiBhIGNvbXBvbmVudC4KKyAq
CisgKiBAcGFyYW0ge29iamVjdH0gY29tcG9uZW50IENvbXBvbmVudCB3aG9zZSBtZXRob2QgaXMg
Z29pbmcgdG8gYmUgYm91bmQuCisgKi8KK2Z1bmN0aW9uIGJpbmRBdXRvQmluZE1ldGhvZHMoY29t
cG9uZW50KSB7CisgIHZhciBwYWlycyA9IGNvbXBvbmVudC5fX3JlYWN0QXV0b0JpbmRQYWlyczsK
KyAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYWlycy5sZW5ndGg7IGkgKz0gMikgeworICAgIHZhciBh
dXRvQmluZEtleSA9IHBhaXJzW2ldOworICAgIHZhciBtZXRob2QgPSBwYWlyc1tpICsgMV07Cisg
ICAgY29tcG9uZW50W2F1dG9CaW5kS2V5XSA9IGJpbmRBdXRvQmluZE1ldGhvZChjb21wb25lbnQs
IG1ldGhvZCk7CisgIH0KK30KKworLyoqCisgKiBBZGQgbW9yZSB0byB0aGUgUmVhY3RDbGFzcyBi
YXNlIGNsYXNzLiBUaGVzZSBhcmUgYWxsIGxlZ2FjeSBmZWF0dXJlcyBhbmQKKyAqIHRoZXJlZm9y
ZSBub3QgYWxyZWFkeSBwYXJ0IG9mIHRoZSBtb2Rlcm4gUmVhY3RDb21wb25lbnQuCisgKi8KK3Zh
ciBSZWFjdENsYXNzTWl4aW4gPSB7CisKKyAgLyoqCisgICAqIFRPRE86IFRoaXMgd2lsbCBiZSBk
ZXByZWNhdGVkIGJlY2F1c2Ugc3RhdGUgc2hvdWxkIGFsd2F5cyBrZWVwIGEgY29uc2lzdGVudAor
ICAgKiB0eXBlIHNpZ25hdHVyZSBhbmQgdGhlIG9ubHkgdXNlIGNhc2UgZm9yIHRoaXMsIGlzIHRv
IGF2b2lkIHRoYXQuCisgICAqLworICByZXBsYWNlU3RhdGU6IGZ1bmN0aW9uIChuZXdTdGF0ZSwg
Y2FsbGJhY2spIHsKKyAgICB0aGlzLnVwZGF0ZXIuZW5xdWV1ZVJlcGxhY2VTdGF0ZSh0aGlzLCBu
ZXdTdGF0ZSk7CisgICAgaWYgKGNhbGxiYWNrKSB7CisgICAgICB0aGlzLnVwZGF0ZXIuZW5xdWV1
ZUNhbGxiYWNrKHRoaXMsIGNhbGxiYWNrLCAncmVwbGFjZVN0YXRlJyk7CisgICAgfQorICB9LAor
CisgIC8qKgorICAgKiBDaGVja3Mgd2hldGhlciBvciBub3QgdGhpcyBjb21wb3NpdGUgY29tcG9u
ZW50IGlzIG1vdW50ZWQuCisgICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgbW91bnRlZCwg
ZmFsc2Ugb3RoZXJ3aXNlLgorICAgKiBAcHJvdGVjdGVkCisgICAqIEBmaW5hbAorICAgKi8KKyAg
aXNNb3VudGVkOiBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIHRoaXMudXBkYXRlci5pc01vdW50
ZWQodGhpcyk7CisgIH0KK307CisKK3ZhciBSZWFjdENsYXNzQ29tcG9uZW50ID0gZnVuY3Rpb24g
KCkge307CitfYXNzaWduKFJlYWN0Q2xhc3NDb21wb25lbnQucHJvdG90eXBlLCBSZWFjdENvbXBv
bmVudC5wcm90b3R5cGUsIFJlYWN0Q2xhc3NNaXhpbik7CisKKy8qKgorICogTW9kdWxlIGZvciBj
cmVhdGluZyBjb21wb3NpdGUgY29tcG9uZW50cy4KKyAqCisgKiBAY2xhc3MgUmVhY3RDbGFzcwor
ICovCit2YXIgUmVhY3RDbGFzcyA9IHsKKworICAvKioKKyAgICogQ3JlYXRlcyBhIGNvbXBvc2l0
ZSBjb21wb25lbnQgY2xhc3MgZ2l2ZW4gYSBjbGFzcyBzcGVjaWZpY2F0aW9uLgorICAgKiBTZWUg
aHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwj
cmVhY3QuY3JlYXRlY2xhc3MKKyAgICoKKyAgICogQHBhcmFtIHtvYmplY3R9IHNwZWMgQ2xhc3Mg
c3BlY2lmaWNhdGlvbiAod2hpY2ggbXVzdCBkZWZpbmUgYHJlbmRlcmApLgorICAgKiBAcmV0dXJu
IHtmdW5jdGlvbn0gQ29tcG9uZW50IGNvbnN0cnVjdG9yIGZ1bmN0aW9uLgorICAgKiBAcHVibGlj
CisgICAqLworICBjcmVhdGVDbGFzczogZnVuY3Rpb24gKHNwZWMpIHsKKyAgICAvLyBUbyBrZWVw
IG91ciB3YXJuaW5ncyBtb3JlIHVuZGVyc3RhbmRhYmxlLCB3ZSdsbCB1c2UgYSBsaXR0bGUgaGFj
ayBoZXJlIHRvCisgICAgLy8gZW5zdXJlIHRoYXQgQ29uc3RydWN0b3IubmFtZSAhPT0gJ0NvbnN0
cnVjdG9yJy4gVGhpcyBtYWtlcyBzdXJlIHdlIGRvbid0CisgICAgLy8gdW5uZWNlc3NhcmlseSBp
ZGVudGlmeSBhIGNsYXNzIHdpdGhvdXQgZGlzcGxheU5hbWUgYXMgJ0NvbnN0cnVjdG9yJy4KKyAg
ICB2YXIgQ29uc3RydWN0b3IgPSBpZGVudGl0eShmdW5jdGlvbiAocHJvcHMsIGNvbnRleHQsIHVw
ZGF0ZXIpIHsKKyAgICAgIC8vIFRoaXMgY29uc3RydWN0b3IgZ2V0cyBvdmVycmlkZGVuIGJ5IG1v
Y2tzLiBUaGUgYXJndW1lbnQgaXMgdXNlZAorICAgICAgLy8gYnkgbW9ja3MgdG8gYXNzZXJ0IG9u
IHdoYXQgZ2V0cyBtb3VudGVkLgorCisgICAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1
Y3Rpb24nKSB7CisgICAgICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5p
bmcodGhpcyBpbnN0YW5jZW9mIENvbnN0cnVjdG9yLCAnU29tZXRoaW5nIGlzIGNhbGxpbmcgYSBS
ZWFjdCBjb21wb25lbnQgZGlyZWN0bHkuIFVzZSBhIGZhY3Rvcnkgb3IgJyArICdKU1ggaW5zdGVh
ZC4gU2VlOiBodHRwczovL2ZiLm1lL3JlYWN0LWxlZ2FjeWZhY3RvcnknKSA6IHZvaWQgMDsKKyAg
ICAgIH0KKworICAgICAgLy8gV2lyZSB1cCBhdXRvLWJpbmRpbmcKKyAgICAgIGlmICh0aGlzLl9f
cmVhY3RBdXRvQmluZFBhaXJzLmxlbmd0aCkgeworICAgICAgICBiaW5kQXV0b0JpbmRNZXRob2Rz
KHRoaXMpOworICAgICAgfQorCisgICAgICB0aGlzLnByb3BzID0gcHJvcHM7CisgICAgICB0aGlz
LmNvbnRleHQgPSBjb250ZXh0OworICAgICAgdGhpcy5yZWZzID0gZW1wdHlPYmplY3Q7CisgICAg
ICB0aGlzLnVwZGF0ZXIgPSB1cGRhdGVyIHx8IFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlOworCisgICAg
ICB0aGlzLnN0YXRlID0gbnVsbDsKKworICAgICAgLy8gUmVhY3RDbGFzc2VzIGRvZXNuJ3QgaGF2
ZSBjb25zdHJ1Y3RvcnMuIEluc3RlYWQsIHRoZXkgdXNlIHRoZQorICAgICAgLy8gZ2V0SW5pdGlh
bFN0YXRlIGFuZCBjb21wb25lbnRXaWxsTW91bnQgbWV0aG9kcyBmb3IgaW5pdGlhbGl6YXRpb24u
CisKKyAgICAgIHZhciBpbml0aWFsU3RhdGUgPSB0aGlzLmdldEluaXRpYWxTdGF0ZSA/IHRoaXMu
Z2V0SW5pdGlhbFN0YXRlKCkgOiBudWxsOworICAgICAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdw
cm9kdWN0aW9uJykgeworICAgICAgICAvLyBXZSBhbGxvdyBhdXRvLW1vY2tzIHRvIHByb2NlZWQg
YXMgaWYgdGhleSdyZSByZXR1cm5pbmcgbnVsbC4KKyAgICAgICAgaWYgKGluaXRpYWxTdGF0ZSA9
PT0gdW5kZWZpbmVkICYmIHRoaXMuZ2V0SW5pdGlhbFN0YXRlLl9pc01vY2tGdW5jdGlvbikgewor
ICAgICAgICAgIC8vIFRoaXMgaXMgcHJvYmFibHkgYmFkIHByYWN0aWNlLiBDb25zaWRlciB3YXJu
aW5nIGhlcmUgYW5kCisgICAgICAgICAgLy8gZGVwcmVjYXRpbmcgdGhpcyBjb252ZW5pZW5jZS4K
KyAgICAgICAgICBpbml0aWFsU3RhdGUgPSBudWxsOworICAgICAgICB9CisgICAgICB9CisgICAg
ICAhKHR5cGVvZiBpbml0aWFsU3RhdGUgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KGlu
aXRpYWxTdGF0ZSkpID8gImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50
KGZhbHNlLCAnJXMuZ2V0SW5pdGlhbFN0YXRlKCk6IG11c3QgcmV0dXJuIGFuIG9iamVjdCBvciBu
dWxsJywgQ29uc3RydWN0b3IuZGlzcGxheU5hbWUgfHwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50
JykgOiBfcHJvZEludmFyaWFudCgnODInLCBDb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZSB8fCAnUmVh
Y3RDb21wb3NpdGVDb21wb25lbnQnKSA6IHZvaWQgMDsKKworICAgICAgdGhpcy5zdGF0ZSA9IGlu
aXRpYWxTdGF0ZTsKKyAgICB9KTsKKyAgICBDb25zdHJ1Y3Rvci5wcm90b3R5cGUgPSBuZXcgUmVh
Y3RDbGFzc0NvbXBvbmVudCgpOworICAgIENvbnN0cnVjdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3Rv
ciA9IENvbnN0cnVjdG9yOworICAgIENvbnN0cnVjdG9yLnByb3RvdHlwZS5fX3JlYWN0QXV0b0Jp
bmRQYWlycyA9IFtdOworCisgICAgaW5qZWN0ZWRNaXhpbnMuZm9yRWFjaChtaXhTcGVjSW50b0Nv
bXBvbmVudC5iaW5kKG51bGwsIENvbnN0cnVjdG9yKSk7CisKKyAgICBtaXhTcGVjSW50b0NvbXBv
bmVudChDb25zdHJ1Y3Rvciwgc3BlYyk7CisKKyAgICAvLyBJbml0aWFsaXplIHRoZSBkZWZhdWx0
UHJvcHMgcHJvcGVydHkgYWZ0ZXIgYWxsIG1peGlucyBoYXZlIGJlZW4gbWVyZ2VkLgorICAgIGlm
IChDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMpIHsKKyAgICAgIENvbnN0cnVjdG9yLmRlZmF1
bHRQcm9wcyA9IENvbnN0cnVjdG9yLmdldERlZmF1bHRQcm9wcygpOworICAgIH0KKworICAgIGlm
ICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgIC8vIFRoaXMgaXMgYSB0
YWcgdG8gaW5kaWNhdGUgdGhhdCB0aGUgdXNlIG9mIHRoZXNlIG1ldGhvZCBuYW1lcyBpcyBvaywK
KyAgICAgIC8vIHNpbmNlIGl0J3MgdXNlZCB3aXRoIGNyZWF0ZUNsYXNzLiBJZiBpdCdzIG5vdCwg
dGhlbiBpdCdzIGxpa2VseSBhCisgICAgICAvLyBtaXN0YWtlIHNvIHdlJ2xsIHdhcm4geW91IHRv
IHVzZSB0aGUgc3RhdGljIHByb3BlcnR5LCBwcm9wZXJ0eQorICAgICAgLy8gaW5pdGlhbGl6ZXIg
b3IgY29uc3RydWN0b3IgcmVzcGVjdGl2ZWx5LgorICAgICAgaWYgKENvbnN0cnVjdG9yLmdldERl
ZmF1bHRQcm9wcykgeworICAgICAgICBDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMuaXNSZWFj
dENsYXNzQXBwcm92ZWQgPSB7fTsKKyAgICAgIH0KKyAgICAgIGlmIChDb25zdHJ1Y3Rvci5wcm90
b3R5cGUuZ2V0SW5pdGlhbFN0YXRlKSB7CisgICAgICAgIENvbnN0cnVjdG9yLnByb3RvdHlwZS5n
ZXRJbml0aWFsU3RhdGUuaXNSZWFjdENsYXNzQXBwcm92ZWQgPSB7fTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICAhQ29uc3RydWN0b3IucHJvdG90eXBlLnJlbmRlciA/ICJkZXZlbG9wbWVudCIgIT09
ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2NyZWF0ZUNsYXNzKC4uLik6IENsYXNz
IHNwZWNpZmljYXRpb24gbXVzdCBpbXBsZW1lbnQgYSBgcmVuZGVyYCBtZXRob2QuJykgOiBfcHJv
ZEludmFyaWFudCgnODMnKSA6IHZvaWQgMDsKKworICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAn
cHJvZHVjdGlvbicpIHsKKyAgICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdh
cm5pbmcoIUNvbnN0cnVjdG9yLnByb3RvdHlwZS5jb21wb25lbnRTaG91bGRVcGRhdGUsICclcyBo
YXMgYSBtZXRob2QgY2FsbGVkICcgKyAnY29tcG9uZW50U2hvdWxkVXBkYXRlKCkuIERpZCB5b3Ug
bWVhbiBzaG91bGRDb21wb25lbnRVcGRhdGUoKT8gJyArICdUaGUgbmFtZSBpcyBwaHJhc2VkIGFz
IGEgcXVlc3Rpb24gYmVjYXVzZSB0aGUgZnVuY3Rpb24gaXMgJyArICdleHBlY3RlZCB0byByZXR1
cm4gYSB2YWx1ZS4nLCBzcGVjLmRpc3BsYXlOYW1lIHx8ICdBIGNvbXBvbmVudCcpIDogdm9pZCAw
OworICAgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyghQ29uc3Ry
dWN0b3IucHJvdG90eXBlLmNvbXBvbmVudFdpbGxSZWNpZXZlUHJvcHMsICclcyBoYXMgYSBtZXRo
b2QgY2FsbGVkICcgKyAnY29tcG9uZW50V2lsbFJlY2lldmVQcm9wcygpLiBEaWQgeW91IG1lYW4g
Y29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcygpPycsIHNwZWMuZGlzcGxheU5hbWUgfHwgJ0EgY29t
cG9uZW50JykgOiB2b2lkIDA7CisgICAgfQorCisgICAgLy8gUmVkdWNlIHRpbWUgc3BlbnQgZG9p
bmcgbG9va3VwcyBieSBzZXR0aW5nIHRoZXNlIG9uIHRoZSBwcm90b3R5cGUuCisgICAgZm9yICh2
YXIgbWV0aG9kTmFtZSBpbiBSZWFjdENsYXNzSW50ZXJmYWNlKSB7CisgICAgICBpZiAoIUNvbnN0
cnVjdG9yLnByb3RvdHlwZVttZXRob2ROYW1lXSkgeworICAgICAgICBDb25zdHJ1Y3Rvci5wcm90
b3R5cGVbbWV0aG9kTmFtZV0gPSBudWxsOworICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBD
b25zdHJ1Y3RvcjsKKyAgfSwKKworICBpbmplY3Rpb246IHsKKyAgICBpbmplY3RNaXhpbjogZnVu
Y3Rpb24gKG1peGluKSB7CisgICAgICBpbmplY3RlZE1peGlucy5wdXNoKG1peGluKTsKKyAgICB9
CisgIH0KKworfTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdENsYXNzOworfSx7IjEwIjoxMCwi
MTMiOjEzLCIxNCI6MTQsIjI0IjoyNCwiMjciOjI3LCIyOCI6MjgsIjI5IjoyOSwiMzAiOjMwLCI2
Ijo2fV0sNjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHly
aWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJbnZhcmlhbnQg
PSBfZGVyZXFfKDI0KTsKKwordmFyIFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlID0gX2RlcmVxXygxMyk7
CisKK3ZhciBjYW5EZWZpbmVQcm9wZXJ0eSA9IF9kZXJlcV8oMjApOwordmFyIGVtcHR5T2JqZWN0
ID0gX2RlcmVxXygyNyk7Cit2YXIgaW52YXJpYW50ID0gX2RlcmVxXygyOCk7Cit2YXIgd2Fybmlu
ZyA9IF9kZXJlcV8oMjkpOworCisvKioKKyAqIEJhc2UgY2xhc3MgaGVscGVycyBmb3IgdGhlIHVw
ZGF0aW5nIHN0YXRlIG9mIGEgY29tcG9uZW50LgorICovCitmdW5jdGlvbiBSZWFjdENvbXBvbmVu
dChwcm9wcywgY29udGV4dCwgdXBkYXRlcikgeworICB0aGlzLnByb3BzID0gcHJvcHM7CisgIHRo
aXMuY29udGV4dCA9IGNvbnRleHQ7CisgIHRoaXMucmVmcyA9IGVtcHR5T2JqZWN0OworICAvLyBX
ZSBpbml0aWFsaXplIHRoZSBkZWZhdWx0IHVwZGF0ZXIgYnV0IHRoZSByZWFsIG9uZSBnZXRzIGlu
amVjdGVkIGJ5IHRoZQorICAvLyByZW5kZXJlci4KKyAgdGhpcy51cGRhdGVyID0gdXBkYXRlciB8
fCBSZWFjdE5vb3BVcGRhdGVRdWV1ZTsKK30KKworUmVhY3RDb21wb25lbnQucHJvdG90eXBlLmlz
UmVhY3RDb21wb25lbnQgPSB7fTsKKworLyoqCisgKiBTZXRzIGEgc3Vic2V0IG9mIHRoZSBzdGF0
ZS4gQWx3YXlzIHVzZSB0aGlzIHRvIG11dGF0ZQorICogc3RhdGUuIFlvdSBzaG91bGQgdHJlYXQg
YHRoaXMuc3RhdGVgIGFzIGltbXV0YWJsZS4KKyAqCisgKiBUaGVyZSBpcyBubyBndWFyYW50ZWUg
dGhhdCBgdGhpcy5zdGF0ZWAgd2lsbCBiZSBpbW1lZGlhdGVseSB1cGRhdGVkLCBzbworICogYWNj
ZXNzaW5nIGB0aGlzLnN0YXRlYCBhZnRlciBjYWxsaW5nIHRoaXMgbWV0aG9kIG1heSByZXR1cm4g
dGhlIG9sZCB2YWx1ZS4KKyAqCisgKiBUaGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCBjYWxscyB0
byBgc2V0U3RhdGVgIHdpbGwgcnVuIHN5bmNocm9ub3VzbHksCisgKiBhcyB0aGV5IG1heSBldmVu
dHVhbGx5IGJlIGJhdGNoZWQgdG9nZXRoZXIuICBZb3UgY2FuIHByb3ZpZGUgYW4gb3B0aW9uYWwK
KyAqIGNhbGxiYWNrIHRoYXQgd2lsbCBiZSBleGVjdXRlZCB3aGVuIHRoZSBjYWxsIHRvIHNldFN0
YXRlIGlzIGFjdHVhbGx5CisgKiBjb21wbGV0ZWQuCisgKgorICogV2hlbiBhIGZ1bmN0aW9uIGlz
IHByb3ZpZGVkIHRvIHNldFN0YXRlLCBpdCB3aWxsIGJlIGNhbGxlZCBhdCBzb21lIHBvaW50IGlu
CisgKiB0aGUgZnV0dXJlIChub3Qgc3luY2hyb25vdXNseSkuIEl0IHdpbGwgYmUgY2FsbGVkIHdp
dGggdGhlIHVwIHRvIGRhdGUKKyAqIGNvbXBvbmVudCBhcmd1bWVudHMgKHN0YXRlLCBwcm9wcywg
Y29udGV4dCkuIFRoZXNlIHZhbHVlcyBjYW4gYmUgZGlmZmVyZW50CisgKiBmcm9tIHRoaXMuKiBi
ZWNhdXNlIHlvdXIgZnVuY3Rpb24gbWF5IGJlIGNhbGxlZCBhZnRlciByZWNlaXZlUHJvcHMgYnV0
IGJlZm9yZQorICogc2hvdWxkQ29tcG9uZW50VXBkYXRlLCBhbmQgdGhpcyBuZXcgc3RhdGUsIHBy
b3BzLCBhbmQgY29udGV4dCB3aWxsIG5vdCB5ZXQgYmUKKyAqIGFzc2lnbmVkIHRvIHRoaXMuCisg
KgorICogQHBhcmFtIHtvYmplY3R8ZnVuY3Rpb259IHBhcnRpYWxTdGF0ZSBOZXh0IHBhcnRpYWwg
c3RhdGUgb3IgZnVuY3Rpb24gdG8KKyAqICAgICAgICBwcm9kdWNlIG5leHQgcGFydGlhbCBzdGF0
ZSB0byBiZSBtZXJnZWQgd2l0aCBjdXJyZW50IHN0YXRlLgorICogQHBhcmFtIHs/ZnVuY3Rpb259
IGNhbGxiYWNrIENhbGxlZCBhZnRlciBzdGF0ZSBpcyB1cGRhdGVkLgorICogQGZpbmFsCisgKiBA
cHJvdGVjdGVkCisgKi8KK1JlYWN0Q29tcG9uZW50LnByb3RvdHlwZS5zZXRTdGF0ZSA9IGZ1bmN0
aW9uIChwYXJ0aWFsU3RhdGUsIGNhbGxiYWNrKSB7CisgICEodHlwZW9mIHBhcnRpYWxTdGF0ZSA9
PT0gJ29iamVjdCcgfHwgdHlwZW9mIHBhcnRpYWxTdGF0ZSA9PT0gJ2Z1bmN0aW9uJyB8fCBwYXJ0
aWFsU3RhdGUgPT0gbnVsbCkgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZh
cmlhbnQoZmFsc2UsICdzZXRTdGF0ZSguLi4pOiB0YWtlcyBhbiBvYmplY3Qgb2Ygc3RhdGUgdmFy
aWFibGVzIHRvIHVwZGF0ZSBvciBhIGZ1bmN0aW9uIHdoaWNoIHJldHVybnMgYW4gb2JqZWN0IG9m
IHN0YXRlIHZhcmlhYmxlcy4nKSA6IF9wcm9kSW52YXJpYW50KCc4NScpIDogdm9pZCAwOworICB0
aGlzLnVwZGF0ZXIuZW5xdWV1ZVNldFN0YXRlKHRoaXMsIHBhcnRpYWxTdGF0ZSk7CisgIGlmIChj
YWxsYmFjaykgeworICAgIHRoaXMudXBkYXRlci5lbnF1ZXVlQ2FsbGJhY2sodGhpcywgY2FsbGJh
Y2ssICdzZXRTdGF0ZScpOworICB9Cit9OworCisvKioKKyAqIEZvcmNlcyBhbiB1cGRhdGUuIFRo
aXMgc2hvdWxkIG9ubHkgYmUgaW52b2tlZCB3aGVuIGl0IGlzIGtub3duIHdpdGgKKyAqIGNlcnRh
aW50eSB0aGF0IHdlIGFyZSAqKm5vdCoqIGluIGEgRE9NIHRyYW5zYWN0aW9uLgorICoKKyAqIFlv
dSBtYXkgd2FudCB0byBjYWxsIHRoaXMgd2hlbiB5b3Uga25vdyB0aGF0IHNvbWUgZGVlcGVyIGFz
cGVjdCBvZiB0aGUKKyAqIGNvbXBvbmVudCdzIHN0YXRlIGhhcyBjaGFuZ2VkIGJ1dCBgc2V0U3Rh
dGVgIHdhcyBub3QgY2FsbGVkLgorICoKKyAqIFRoaXMgd2lsbCBub3QgaW52b2tlIGBzaG91bGRD
b21wb25lbnRVcGRhdGVgLCBidXQgaXQgd2lsbCBpbnZva2UKKyAqIGBjb21wb25lbnRXaWxsVXBk
YXRlYCBhbmQgYGNvbXBvbmVudERpZFVwZGF0ZWAuCisgKgorICogQHBhcmFtIHs/ZnVuY3Rpb259
IGNhbGxiYWNrIENhbGxlZCBhZnRlciB1cGRhdGUgaXMgY29tcGxldGUuCisgKiBAZmluYWwKKyAq
IEBwcm90ZWN0ZWQKKyAqLworUmVhY3RDb21wb25lbnQucHJvdG90eXBlLmZvcmNlVXBkYXRlID0g
ZnVuY3Rpb24gKGNhbGxiYWNrKSB7CisgIHRoaXMudXBkYXRlci5lbnF1ZXVlRm9yY2VVcGRhdGUo
dGhpcyk7CisgIGlmIChjYWxsYmFjaykgeworICAgIHRoaXMudXBkYXRlci5lbnF1ZXVlQ2FsbGJh
Y2sodGhpcywgY2FsbGJhY2ssICdmb3JjZVVwZGF0ZScpOworICB9Cit9OworCisvKioKKyAqIERl
cHJlY2F0ZWQgQVBJcy4gVGhlc2UgQVBJcyB1c2VkIHRvIGV4aXN0IG9uIGNsYXNzaWMgUmVhY3Qg
Y2xhc3NlcyBidXQgc2luY2UKKyAqIHdlIHdvdWxkIGxpa2UgdG8gZGVwcmVjYXRlIHRoZW0sIHdl
J3JlIG5vdCBnb2luZyB0byBtb3ZlIHRoZW0gb3ZlciB0byB0aGlzCisgKiBtb2Rlcm4gYmFzZSBj
bGFzcy4gSW5zdGVhZCwgd2UgZGVmaW5lIGEgZ2V0dGVyIHRoYXQgd2FybnMgaWYgaXQncyBhY2Nl
c3NlZC4KKyAqLworaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICB2YXIg
ZGVwcmVjYXRlZEFQSXMgPSB7CisgICAgaXNNb3VudGVkOiBbJ2lzTW91bnRlZCcsICdJbnN0ZWFk
LCBtYWtlIHN1cmUgdG8gY2xlYW4gdXAgc3Vic2NyaXB0aW9ucyBhbmQgcGVuZGluZyByZXF1ZXN0
cyBpbiAnICsgJ2NvbXBvbmVudFdpbGxVbm1vdW50IHRvIHByZXZlbnQgbWVtb3J5IGxlYWtzLidd
LAorICAgIHJlcGxhY2VTdGF0ZTogWydyZXBsYWNlU3RhdGUnLCAnUmVmYWN0b3IgeW91ciBjb2Rl
IHRvIHVzZSBzZXRTdGF0ZSBpbnN0ZWFkIChzZWUgJyArICdodHRwczovL2dpdGh1Yi5jb20vZmFj
ZWJvb2svcmVhY3QvaXNzdWVzLzMyMzYpLiddCisgIH07CisgIHZhciBkZWZpbmVEZXByZWNhdGlv
bldhcm5pbmcgPSBmdW5jdGlvbiAobWV0aG9kTmFtZSwgaW5mbykgeworICAgIGlmIChjYW5EZWZp
bmVQcm9wZXJ0eSkgeworICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFJlYWN0Q29tcG9uZW50
LnByb3RvdHlwZSwgbWV0aG9kTmFtZSwgeworICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAn
JXMoLi4uKSBpcyBkZXByZWNhdGVkIGluIHBsYWluIEphdmFTY3JpcHQgUmVhY3QgY2xhc3Nlcy4g
JXMnLCBpbmZvWzBdLCBpbmZvWzFdKSA6IHZvaWQgMDsKKyAgICAgICAgICByZXR1cm4gdW5kZWZp
bmVkOworICAgICAgICB9CisgICAgICB9KTsKKyAgICB9CisgIH07CisgIGZvciAodmFyIGZuTmFt
ZSBpbiBkZXByZWNhdGVkQVBJcykgeworICAgIGlmIChkZXByZWNhdGVkQVBJcy5oYXNPd25Qcm9w
ZXJ0eShmbk5hbWUpKSB7CisgICAgICBkZWZpbmVEZXByZWNhdGlvbldhcm5pbmcoZm5OYW1lLCBk
ZXByZWNhdGVkQVBJc1tmbk5hbWVdKTsKKyAgICB9CisgIH0KK30KKworbW9kdWxlLmV4cG9ydHMg
PSBSZWFjdENvbXBvbmVudDsKK30seyIxMyI6MTMsIjIwIjoyMCwiMjQiOjI0LCIyNyI6MjcsIjI4
IjoyOCwiMjkiOjI5fV0sNzpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioK
KyAqIENvcHlyaWdodCAyMDE2LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl
IEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50Cisg
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiAKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBf
cHJvZEludmFyaWFudCA9IF9kZXJlcV8oMjQpOworCit2YXIgUmVhY3RDdXJyZW50T3duZXIgPSBf
ZGVyZXFfKDgpOworCit2YXIgaW52YXJpYW50ID0gX2RlcmVxXygyOCk7Cit2YXIgd2FybmluZyA9
IF9kZXJlcV8oMjkpOworCitmdW5jdGlvbiBpc05hdGl2ZShmbikgeworICAvLyBCYXNlZCBvbiBp
c05hdGl2ZSgpIGZyb20gTG9kYXNoCisgIHZhciBmdW5jVG9TdHJpbmcgPSBGdW5jdGlvbi5wcm90
b3R5cGUudG9TdHJpbmc7CisgIHZhciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUu
aGFzT3duUHJvcGVydHk7CisgIHZhciByZUlzTmF0aXZlID0gUmVnRXhwKCdeJyArIGZ1bmNUb1N0
cmluZworICAvLyBUYWtlIGFuIGV4YW1wbGUgbmF0aXZlIGZ1bmN0aW9uIHNvdXJjZSBmb3IgY29t
cGFyaXNvbgorICAuY2FsbChoYXNPd25Qcm9wZXJ0eSkKKyAgLy8gU3RyaXAgcmVnZXggY2hhcmFj
dGVycyBzbyB3ZSBjYW4gdXNlIGl0IGZvciByZWdleAorICAucmVwbGFjZSgvW1xcXiQuKis/KClb
XF17fXxdL2csICdcXCQmJykKKyAgLy8gUmVtb3ZlIGhhc093blByb3BlcnR5IGZyb20gdGhlIHRl
bXBsYXRlIHRvIG1ha2UgaXQgZ2VuZXJpYworICAucmVwbGFjZSgvaGFzT3duUHJvcGVydHl8KGZ1
bmN0aW9uKS4qPyg/PVxcXCgpfCBmb3IgLis/KD89XFxcXSkvZywgJyQxLio/JykgKyAnJCcpOwor
ICB0cnkgeworICAgIHZhciBzb3VyY2UgPSBmdW5jVG9TdHJpbmcuY2FsbChmbik7CisgICAgcmV0
dXJuIHJlSXNOYXRpdmUudGVzdChzb3VyY2UpOworICB9IGNhdGNoIChlcnIpIHsKKyAgICByZXR1
cm4gZmFsc2U7CisgIH0KK30KKwordmFyIGNhblVzZUNvbGxlY3Rpb25zID0KKy8vIEFycmF5LmZy
b20KK3R5cGVvZiBBcnJheS5mcm9tID09PSAnZnVuY3Rpb24nICYmCisvLyBNYXAKK3R5cGVvZiBN
YXAgPT09ICdmdW5jdGlvbicgJiYgaXNOYXRpdmUoTWFwKSAmJgorLy8gTWFwLnByb3RvdHlwZS5r
ZXlzCitNYXAucHJvdG90eXBlICE9IG51bGwgJiYgdHlwZW9mIE1hcC5wcm90b3R5cGUua2V5cyA9
PT0gJ2Z1bmN0aW9uJyAmJiBpc05hdGl2ZShNYXAucHJvdG90eXBlLmtleXMpICYmCisvLyBTZXQK
K3R5cGVvZiBTZXQgPT09ICdmdW5jdGlvbicgJiYgaXNOYXRpdmUoU2V0KSAmJgorLy8gU2V0LnBy
b3RvdHlwZS5rZXlzCitTZXQucHJvdG90eXBlICE9IG51bGwgJiYgdHlwZW9mIFNldC5wcm90b3R5
cGUua2V5cyA9PT0gJ2Z1bmN0aW9uJyAmJiBpc05hdGl2ZShTZXQucHJvdG90eXBlLmtleXMpOwor
CitpZiAoY2FuVXNlQ29sbGVjdGlvbnMpIHsKKyAgdmFyIGl0ZW1NYXAgPSBuZXcgTWFwKCk7Cisg
IHZhciByb290SURTZXQgPSBuZXcgU2V0KCk7CisKKyAgdmFyIHNldEl0ZW0gPSBmdW5jdGlvbiAo
aWQsIGl0ZW0pIHsKKyAgICBpdGVtTWFwLnNldChpZCwgaXRlbSk7CisgIH07CisgIHZhciBnZXRJ
dGVtID0gZnVuY3Rpb24gKGlkKSB7CisgICAgcmV0dXJuIGl0ZW1NYXAuZ2V0KGlkKTsKKyAgfTsK
KyAgdmFyIHJlbW92ZUl0ZW0gPSBmdW5jdGlvbiAoaWQpIHsKKyAgICBpdGVtTWFwWydkZWxldGUn
XShpZCk7CisgIH07CisgIHZhciBnZXRJdGVtSURzID0gZnVuY3Rpb24gKCkgeworICAgIHJldHVy
biBBcnJheS5mcm9tKGl0ZW1NYXAua2V5cygpKTsKKyAgfTsKKworICB2YXIgYWRkUm9vdCA9IGZ1
bmN0aW9uIChpZCkgeworICAgIHJvb3RJRFNldC5hZGQoaWQpOworICB9OworICB2YXIgcmVtb3Zl
Um9vdCA9IGZ1bmN0aW9uIChpZCkgeworICAgIHJvb3RJRFNldFsnZGVsZXRlJ10oaWQpOworICB9
OworICB2YXIgZ2V0Um9vdElEcyA9IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gQXJyYXkuZnJv
bShyb290SURTZXQua2V5cygpKTsKKyAgfTsKK30gZWxzZSB7CisgIHZhciBpdGVtQnlLZXkgPSB7
fTsKKyAgdmFyIHJvb3RCeUtleSA9IHt9OworCisgIC8vIFVzZSBub24tbnVtZXJpYyBrZXlzIHRv
IHByZXZlbnQgVjggcGVyZm9ybWFuY2UgaXNzdWVzOgorICAvLyBodHRwczovL2dpdGh1Yi5jb20v
ZmFjZWJvb2svcmVhY3QvcHVsbC83MjMyCisgIHZhciBnZXRLZXlGcm9tSUQgPSBmdW5jdGlvbiAo
aWQpIHsKKyAgICByZXR1cm4gJy4nICsgaWQ7CisgIH07CisgIHZhciBnZXRJREZyb21LZXkgPSBm
dW5jdGlvbiAoa2V5KSB7CisgICAgcmV0dXJuIHBhcnNlSW50KGtleS5zdWJzdHIoMSksIDEwKTsK
KyAgfTsKKworICB2YXIgc2V0SXRlbSA9IGZ1bmN0aW9uIChpZCwgaXRlbSkgeworICAgIHZhciBr
ZXkgPSBnZXRLZXlGcm9tSUQoaWQpOworICAgIGl0ZW1CeUtleVtrZXldID0gaXRlbTsKKyAgfTsK
KyAgdmFyIGdldEl0ZW0gPSBmdW5jdGlvbiAoaWQpIHsKKyAgICB2YXIga2V5ID0gZ2V0S2V5RnJv
bUlEKGlkKTsKKyAgICByZXR1cm4gaXRlbUJ5S2V5W2tleV07CisgIH07CisgIHZhciByZW1vdmVJ
dGVtID0gZnVuY3Rpb24gKGlkKSB7CisgICAgdmFyIGtleSA9IGdldEtleUZyb21JRChpZCk7Cisg
ICAgZGVsZXRlIGl0ZW1CeUtleVtrZXldOworICB9OworICB2YXIgZ2V0SXRlbUlEcyA9IGZ1bmN0
aW9uICgpIHsKKyAgICByZXR1cm4gT2JqZWN0LmtleXMoaXRlbUJ5S2V5KS5tYXAoZ2V0SURGcm9t
S2V5KTsKKyAgfTsKKworICB2YXIgYWRkUm9vdCA9IGZ1bmN0aW9uIChpZCkgeworICAgIHZhciBr
ZXkgPSBnZXRLZXlGcm9tSUQoaWQpOworICAgIHJvb3RCeUtleVtrZXldID0gdHJ1ZTsKKyAgfTsK
KyAgdmFyIHJlbW92ZVJvb3QgPSBmdW5jdGlvbiAoaWQpIHsKKyAgICB2YXIga2V5ID0gZ2V0S2V5
RnJvbUlEKGlkKTsKKyAgICBkZWxldGUgcm9vdEJ5S2V5W2tleV07CisgIH07CisgIHZhciBnZXRS
b290SURzID0gZnVuY3Rpb24gKCkgeworICAgIHJldHVybiBPYmplY3Qua2V5cyhyb290QnlLZXkp
Lm1hcChnZXRJREZyb21LZXkpOworICB9OworfQorCit2YXIgdW5tb3VudGVkSURzID0gW107CisK
K2Z1bmN0aW9uIHB1cmdlRGVlcChpZCkgeworICB2YXIgaXRlbSA9IGdldEl0ZW0oaWQpOworICBp
ZiAoaXRlbSkgeworICAgIHZhciBjaGlsZElEcyA9IGl0ZW0uY2hpbGRJRHM7CisKKyAgICByZW1v
dmVJdGVtKGlkKTsKKyAgICBjaGlsZElEcy5mb3JFYWNoKHB1cmdlRGVlcCk7CisgIH0KK30KKwor
ZnVuY3Rpb24gZGVzY3JpYmVDb21wb25lbnRGcmFtZShuYW1lLCBzb3VyY2UsIG93bmVyTmFtZSkg
eworICByZXR1cm4gJ1xuICAgIGluICcgKyAobmFtZSB8fCAnVW5rbm93bicpICsgKHNvdXJjZSA/
ICcgKGF0ICcgKyBzb3VyY2UuZmlsZU5hbWUucmVwbGFjZSgvXi4qW1xcXC9dLywgJycpICsgJzon
ICsgc291cmNlLmxpbmVOdW1iZXIgKyAnKScgOiBvd25lck5hbWUgPyAnIChjcmVhdGVkIGJ5ICcg
KyBvd25lck5hbWUgKyAnKScgOiAnJyk7Cit9CisKK2Z1bmN0aW9uIGdldERpc3BsYXlOYW1lKGVs
ZW1lbnQpIHsKKyAgaWYgKGVsZW1lbnQgPT0gbnVsbCkgeworICAgIHJldHVybiAnI2VtcHR5JzsK
KyAgfSBlbHNlIGlmICh0eXBlb2YgZWxlbWVudCA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIGVsZW1l
bnQgPT09ICdudW1iZXInKSB7CisgICAgcmV0dXJuICcjdGV4dCc7CisgIH0gZWxzZSBpZiAodHlw
ZW9mIGVsZW1lbnQudHlwZSA9PT0gJ3N0cmluZycpIHsKKyAgICByZXR1cm4gZWxlbWVudC50eXBl
OworICB9IGVsc2UgeworICAgIHJldHVybiBlbGVtZW50LnR5cGUuZGlzcGxheU5hbWUgfHwgZWxl
bWVudC50eXBlLm5hbWUgfHwgJ1Vua25vd24nOworICB9Cit9CisKK2Z1bmN0aW9uIGRlc2NyaWJl
SUQoaWQpIHsKKyAgdmFyIG5hbWUgPSBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldERpc3BsYXlO
YW1lKGlkKTsKKyAgdmFyIGVsZW1lbnQgPSBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldEVsZW1l
bnQoaWQpOworICB2YXIgb3duZXJJRCA9IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0T3duZXJJ
RChpZCk7CisgIHZhciBvd25lck5hbWU7CisgIGlmIChvd25lcklEKSB7CisgICAgb3duZXJOYW1l
ID0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXREaXNwbGF5TmFtZShvd25lcklEKTsKKyAgfQor
ICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGVsZW1lbnQsICdSZWFj
dENvbXBvbmVudFRyZWVIb29rOiBNaXNzaW5nIFJlYWN0IGVsZW1lbnQgZm9yIGRlYnVnSUQgJXMg
d2hlbiAnICsgJ2J1aWxkaW5nIHN0YWNrJywgaWQpIDogdm9pZCAwOworICByZXR1cm4gZGVzY3Jp
YmVDb21wb25lbnRGcmFtZShuYW1lLCBlbGVtZW50ICYmIGVsZW1lbnQuX3NvdXJjZSwgb3duZXJO
YW1lKTsKK30KKwordmFyIFJlYWN0Q29tcG9uZW50VHJlZUhvb2sgPSB7CisgIG9uU2V0Q2hpbGRy
ZW46IGZ1bmN0aW9uIChpZCwgbmV4dENoaWxkSURzKSB7CisgICAgdmFyIGl0ZW0gPSBnZXRJdGVt
KGlkKTsKKyAgICAhaXRlbSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFy
aWFudChmYWxzZSwgJ0l0ZW0gbXVzdCBoYXZlIGJlZW4gc2V0JykgOiBfcHJvZEludmFyaWFudCgn
MTQ0JykgOiB2b2lkIDA7CisgICAgaXRlbS5jaGlsZElEcyA9IG5leHRDaGlsZElEczsKKworICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgbmV4dENoaWxkSURzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2
YXIgbmV4dENoaWxkSUQgPSBuZXh0Q2hpbGRJRHNbaV07CisgICAgICB2YXIgbmV4dENoaWxkID0g
Z2V0SXRlbShuZXh0Q2hpbGRJRCk7CisgICAgICAhbmV4dENoaWxkID8gImRldmVsb3BtZW50IiAh
PT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRXhwZWN0ZWQgaG9vayBldmVudHMg
dG8gZmlyZSBmb3IgdGhlIGNoaWxkIGJlZm9yZSBpdHMgcGFyZW50IGluY2x1ZGVzIGl0IGluIG9u
U2V0Q2hpbGRyZW4oKS4nKSA6IF9wcm9kSW52YXJpYW50KCcxNDAnKSA6IHZvaWQgMDsKKyAgICAg
ICEobmV4dENoaWxkLmNoaWxkSURzICE9IG51bGwgfHwgdHlwZW9mIG5leHRDaGlsZC5lbGVtZW50
ICE9PSAnb2JqZWN0JyB8fCBuZXh0Q2hpbGQuZWxlbWVudCA9PSBudWxsKSA/ICJkZXZlbG9wbWVu
dCIgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0V4cGVjdGVkIG9uU2V0Q2hp
bGRyZW4oKSB0byBmaXJlIGZvciBhIGNvbnRhaW5lciBjaGlsZCBiZWZvcmUgaXRzIHBhcmVudCBp
bmNsdWRlcyBpdCBpbiBvblNldENoaWxkcmVuKCkuJykgOiBfcHJvZEludmFyaWFudCgnMTQxJykg
OiB2b2lkIDA7CisgICAgICAhbmV4dENoaWxkLmlzTW91bnRlZCA/ICJkZXZlbG9wbWVudCIgIT09
ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0V4cGVjdGVkIG9uTW91bnRDb21wb25l
bnQoKSB0byBmaXJlIGZvciB0aGUgY2hpbGQgYmVmb3JlIGl0cyBwYXJlbnQgaW5jbHVkZXMgaXQg
aW4gb25TZXRDaGlsZHJlbigpLicpIDogX3Byb2RJbnZhcmlhbnQoJzcxJykgOiB2b2lkIDA7Cisg
ICAgICBpZiAobmV4dENoaWxkLnBhcmVudElEID09IG51bGwpIHsKKyAgICAgICAgbmV4dENoaWxk
LnBhcmVudElEID0gaWQ7CisgICAgICAgIC8vIFRPRE86IFRoaXMgc2hvdWxkbid0IGJlIG5lY2Vz
c2FyeSBidXQgbW91bnRpbmcgYSBuZXcgcm9vdCBkdXJpbmcgaW4KKyAgICAgICAgLy8gY29tcG9u
ZW50V2lsbE1vdW50IGN1cnJlbnRseSBjYXVzZXMgbm90LXlldC1tb3VudGVkIGNvbXBvbmVudHMg
dG8KKyAgICAgICAgLy8gYmUgcHVyZ2VkIGZyb20gb3VyIHRyZWUgZGF0YSBzbyB0aGVpciBwYXJl
bnQgaWQgaXMgbWlzc2luZy4KKyAgICAgIH0KKyAgICAgICEobmV4dENoaWxkLnBhcmVudElEID09
PSBpZCkgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2Us
ICdFeHBlY3RlZCBvbkJlZm9yZU1vdW50Q29tcG9uZW50KCkgcGFyZW50IGFuZCBvblNldENoaWxk
cmVuKCkgdG8gYmUgY29uc2lzdGVudCAoJXMgaGFzIHBhcmVudHMgJXMgYW5kICVzKS4nLCBuZXh0
Q2hpbGRJRCwgbmV4dENoaWxkLnBhcmVudElELCBpZCkgOiBfcHJvZEludmFyaWFudCgnMTQyJywg
bmV4dENoaWxkSUQsIG5leHRDaGlsZC5wYXJlbnRJRCwgaWQpIDogdm9pZCAwOworICAgIH0KKyAg
fSwKKyAgb25CZWZvcmVNb3VudENvbXBvbmVudDogZnVuY3Rpb24gKGlkLCBlbGVtZW50LCBwYXJl
bnRJRCkgeworICAgIHZhciBpdGVtID0geworICAgICAgZWxlbWVudDogZWxlbWVudCwKKyAgICAg
IHBhcmVudElEOiBwYXJlbnRJRCwKKyAgICAgIHRleHQ6IG51bGwsCisgICAgICBjaGlsZElEczog
W10sCisgICAgICBpc01vdW50ZWQ6IGZhbHNlLAorICAgICAgdXBkYXRlQ291bnQ6IDAKKyAgICB9
OworICAgIHNldEl0ZW0oaWQsIGl0ZW0pOworICB9LAorICBvbkJlZm9yZVVwZGF0ZUNvbXBvbmVu
dDogZnVuY3Rpb24gKGlkLCBlbGVtZW50KSB7CisgICAgdmFyIGl0ZW0gPSBnZXRJdGVtKGlkKTsK
KyAgICBpZiAoIWl0ZW0gfHwgIWl0ZW0uaXNNb3VudGVkKSB7CisgICAgICAvLyBXZSBtYXkgZW5k
IHVwIGhlcmUgYXMgYSByZXN1bHQgb2Ygc2V0U3RhdGUoKSBpbiBjb21wb25lbnRXaWxsVW5tb3Vu
dCgpLgorICAgICAgLy8gSW4gdGhpcyBjYXNlLCBpZ25vcmUgdGhlIGVsZW1lbnQuCisgICAgICBy
ZXR1cm47CisgICAgfQorICAgIGl0ZW0uZWxlbWVudCA9IGVsZW1lbnQ7CisgIH0sCisgIG9uTW91
bnRDb21wb25lbnQ6IGZ1bmN0aW9uIChpZCkgeworICAgIHZhciBpdGVtID0gZ2V0SXRlbShpZCk7
CisgICAgIWl0ZW0gPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQo
ZmFsc2UsICdJdGVtIG11c3QgaGF2ZSBiZWVuIHNldCcpIDogX3Byb2RJbnZhcmlhbnQoJzE0NCcp
IDogdm9pZCAwOworICAgIGl0ZW0uaXNNb3VudGVkID0gdHJ1ZTsKKyAgICB2YXIgaXNSb290ID0g
aXRlbS5wYXJlbnRJRCA9PT0gMDsKKyAgICBpZiAoaXNSb290KSB7CisgICAgICBhZGRSb290KGlk
KTsKKyAgICB9CisgIH0sCisgIG9uVXBkYXRlQ29tcG9uZW50OiBmdW5jdGlvbiAoaWQpIHsKKyAg
ICB2YXIgaXRlbSA9IGdldEl0ZW0oaWQpOworICAgIGlmICghaXRlbSB8fCAhaXRlbS5pc01vdW50
ZWQpIHsKKyAgICAgIC8vIFdlIG1heSBlbmQgdXAgaGVyZSBhcyBhIHJlc3VsdCBvZiBzZXRTdGF0
ZSgpIGluIGNvbXBvbmVudFdpbGxVbm1vdW50KCkuCisgICAgICAvLyBJbiB0aGlzIGNhc2UsIGln
bm9yZSB0aGUgZWxlbWVudC4KKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgaXRlbS51cGRhdGVD
b3VudCsrOworICB9LAorICBvblVubW91bnRDb21wb25lbnQ6IGZ1bmN0aW9uIChpZCkgeworICAg
IHZhciBpdGVtID0gZ2V0SXRlbShpZCk7CisgICAgaWYgKGl0ZW0pIHsKKyAgICAgIC8vIFdlIG5l
ZWQgdG8gY2hlY2sgaWYgaXQgZXhpc3RzLgorICAgICAgLy8gYGl0ZW1gIG1pZ2h0IG5vdCBleGlz
dCBpZiBpdCBpcyBpbnNpZGUgYW4gZXJyb3IgYm91bmRhcnksIGFuZCBhIHNpYmxpbmcKKyAgICAg
IC8vIGVycm9yIGJvdW5kYXJ5IGNoaWxkIHRocmV3IHdoaWxlIG1vdW50aW5nLiBUaGVuIHRoaXMg
aW5zdGFuY2UgbmV2ZXIKKyAgICAgIC8vIGdvdCBhIGNoYW5jZSB0byBtb3VudCwgYnV0IGl0IHN0
aWxsIGdldHMgYW4gdW5tb3VudGluZyBldmVudCBkdXJpbmcKKyAgICAgIC8vIHRoZSBlcnJvciBi
b3VuZGFyeSBjbGVhbnVwLgorICAgICAgaXRlbS5pc01vdW50ZWQgPSBmYWxzZTsKKyAgICAgIHZh
ciBpc1Jvb3QgPSBpdGVtLnBhcmVudElEID09PSAwOworICAgICAgaWYgKGlzUm9vdCkgeworICAg
ICAgICByZW1vdmVSb290KGlkKTsKKyAgICAgIH0KKyAgICB9CisgICAgdW5tb3VudGVkSURzLnB1
c2goaWQpOworICB9LAorICBwdXJnZVVubW91bnRlZENvbXBvbmVudHM6IGZ1bmN0aW9uICgpIHsK
KyAgICBpZiAoUmVhY3RDb21wb25lbnRUcmVlSG9vay5fcHJldmVudFB1cmdpbmcpIHsKKyAgICAg
IC8vIFNob3VsZCBvbmx5IGJlIHVzZWQgZm9yIHRlc3RpbmcuCisgICAgICByZXR1cm47CisgICAg
fQorCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB1bm1vdW50ZWRJRHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciBpZCA9IHVubW91bnRlZElEc1tpXTsKKyAgICAgIHB1cmdlRGVlcChpZCk7Cisg
ICAgfQorICAgIHVubW91bnRlZElEcy5sZW5ndGggPSAwOworICB9LAorICBpc01vdW50ZWQ6IGZ1
bmN0aW9uIChpZCkgeworICAgIHZhciBpdGVtID0gZ2V0SXRlbShpZCk7CisgICAgcmV0dXJuIGl0
ZW0gPyBpdGVtLmlzTW91bnRlZCA6IGZhbHNlOworICB9LAorICBnZXRDdXJyZW50U3RhY2tBZGRl
bmR1bTogZnVuY3Rpb24gKHRvcEVsZW1lbnQpIHsKKyAgICB2YXIgaW5mbyA9ICcnOworICAgIGlm
ICh0b3BFbGVtZW50KSB7CisgICAgICB2YXIgbmFtZSA9IGdldERpc3BsYXlOYW1lKHRvcEVsZW1l
bnQpOworICAgICAgdmFyIG93bmVyID0gdG9wRWxlbWVudC5fb3duZXI7CisgICAgICBpbmZvICs9
IGRlc2NyaWJlQ29tcG9uZW50RnJhbWUobmFtZSwgdG9wRWxlbWVudC5fc291cmNlLCBvd25lciAm
JiBvd25lci5nZXROYW1lKCkpOworICAgIH0KKworICAgIHZhciBjdXJyZW50T3duZXIgPSBSZWFj
dEN1cnJlbnRPd25lci5jdXJyZW50OworICAgIHZhciBpZCA9IGN1cnJlbnRPd25lciAmJiBjdXJy
ZW50T3duZXIuX2RlYnVnSUQ7CisKKyAgICBpbmZvICs9IFJlYWN0Q29tcG9uZW50VHJlZUhvb2su
Z2V0U3RhY2tBZGRlbmR1bUJ5SUQoaWQpOworICAgIHJldHVybiBpbmZvOworICB9LAorICBnZXRT
dGFja0FkZGVuZHVtQnlJRDogZnVuY3Rpb24gKGlkKSB7CisgICAgdmFyIGluZm8gPSAnJzsKKyAg
ICB3aGlsZSAoaWQpIHsKKyAgICAgIGluZm8gKz0gZGVzY3JpYmVJRChpZCk7CisgICAgICBpZCA9
IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0UGFyZW50SUQoaWQpOworICAgIH0KKyAgICByZXR1
cm4gaW5mbzsKKyAgfSwKKyAgZ2V0Q2hpbGRJRHM6IGZ1bmN0aW9uIChpZCkgeworICAgIHZhciBp
dGVtID0gZ2V0SXRlbShpZCk7CisgICAgcmV0dXJuIGl0ZW0gPyBpdGVtLmNoaWxkSURzIDogW107
CisgIH0sCisgIGdldERpc3BsYXlOYW1lOiBmdW5jdGlvbiAoaWQpIHsKKyAgICB2YXIgZWxlbWVu
dCA9IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0RWxlbWVudChpZCk7CisgICAgaWYgKCFlbGVt
ZW50KSB7CisgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisgICAgcmV0dXJuIGdldERpc3BsYXlO
YW1lKGVsZW1lbnQpOworICB9LAorICBnZXRFbGVtZW50OiBmdW5jdGlvbiAoaWQpIHsKKyAgICB2
YXIgaXRlbSA9IGdldEl0ZW0oaWQpOworICAgIHJldHVybiBpdGVtID8gaXRlbS5lbGVtZW50IDog
bnVsbDsKKyAgfSwKKyAgZ2V0T3duZXJJRDogZnVuY3Rpb24gKGlkKSB7CisgICAgdmFyIGVsZW1l
bnQgPSBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldEVsZW1lbnQoaWQpOworICAgIGlmICghZWxl
bWVudCB8fCAhZWxlbWVudC5fb3duZXIpIHsKKyAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAg
ICByZXR1cm4gZWxlbWVudC5fb3duZXIuX2RlYnVnSUQ7CisgIH0sCisgIGdldFBhcmVudElEOiBm
dW5jdGlvbiAoaWQpIHsKKyAgICB2YXIgaXRlbSA9IGdldEl0ZW0oaWQpOworICAgIHJldHVybiBp
dGVtID8gaXRlbS5wYXJlbnRJRCA6IG51bGw7CisgIH0sCisgIGdldFNvdXJjZTogZnVuY3Rpb24g
KGlkKSB7CisgICAgdmFyIGl0ZW0gPSBnZXRJdGVtKGlkKTsKKyAgICB2YXIgZWxlbWVudCA9IGl0
ZW0gPyBpdGVtLmVsZW1lbnQgOiBudWxsOworICAgIHZhciBzb3VyY2UgPSBlbGVtZW50ICE9IG51
bGwgPyBlbGVtZW50Ll9zb3VyY2UgOiBudWxsOworICAgIHJldHVybiBzb3VyY2U7CisgIH0sCisg
IGdldFRleHQ6IGZ1bmN0aW9uIChpZCkgeworICAgIHZhciBlbGVtZW50ID0gUmVhY3RDb21wb25l
bnRUcmVlSG9vay5nZXRFbGVtZW50KGlkKTsKKyAgICBpZiAodHlwZW9mIGVsZW1lbnQgPT09ICdz
dHJpbmcnKSB7CisgICAgICByZXR1cm4gZWxlbWVudDsKKyAgICB9IGVsc2UgaWYgKHR5cGVvZiBl
bGVtZW50ID09PSAnbnVtYmVyJykgeworICAgICAgcmV0dXJuICcnICsgZWxlbWVudDsKKyAgICB9
IGVsc2UgeworICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorICB9LAorICBnZXRVcGRhdGVDb3Vu
dDogZnVuY3Rpb24gKGlkKSB7CisgICAgdmFyIGl0ZW0gPSBnZXRJdGVtKGlkKTsKKyAgICByZXR1
cm4gaXRlbSA/IGl0ZW0udXBkYXRlQ291bnQgOiAwOworICB9LAorCisKKyAgZ2V0Um9vdElEczog
Z2V0Um9vdElEcywKKyAgZ2V0UmVnaXN0ZXJlZElEczogZ2V0SXRlbUlEcworfTsKKworbW9kdWxl
LmV4cG9ydHMgPSBSZWFjdENvbXBvbmVudFRyZWVIb29rOworfSx7IjI0IjoyNCwiMjgiOjI4LCIy
OSI6MjksIjgiOjh9XSw4OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgor
ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUg
QlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAq
IG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhl
IHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIAorICovCisKKyd1c2Ugc3RyaWN0JzsKKworLyoqCisg
KiBLZWVwcyB0cmFjayBvZiB0aGUgY3VycmVudCBvd25lci4KKyAqCisgKiBUaGUgY3VycmVudCBv
d25lciBpcyB0aGUgY29tcG9uZW50IHdobyBzaG91bGQgb3duIGFueSBjb21wb25lbnRzIHRoYXQg
YXJlCisgKiBjdXJyZW50bHkgYmVpbmcgY29uc3RydWN0ZWQuCisgKi8KK3ZhciBSZWFjdEN1cnJl
bnRPd25lciA9IHsKKworICAvKioKKyAgICogQGludGVybmFsCisgICAqIEB0eXBlIHtSZWFjdENv
bXBvbmVudH0KKyAgICovCisgIGN1cnJlbnQ6IG51bGwKKworfTsKKworbW9kdWxlLmV4cG9ydHMg
PSBSZWFjdEN1cnJlbnRPd25lcjsKK30se31dLDk6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4
cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgor
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vu
c2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRp
b25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVO
VFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsK
KwordmFyIFJlYWN0RWxlbWVudCA9IF9kZXJlcV8oMTApOworCisvKioKKyAqIENyZWF0ZSBhIGZh
Y3RvcnkgdGhhdCBjcmVhdGVzIEhUTUwgdGFnIGVsZW1lbnRzLgorICoKKyAqIEBwcml2YXRlCisg
Ki8KK3ZhciBjcmVhdGVET01GYWN0b3J5ID0gUmVhY3RFbGVtZW50LmNyZWF0ZUZhY3Rvcnk7Citp
ZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgIHZhciBSZWFjdEVsZW1lbnRW
YWxpZGF0b3IgPSBfZGVyZXFfKDEyKTsKKyAgY3JlYXRlRE9NRmFjdG9yeSA9IFJlYWN0RWxlbWVu
dFZhbGlkYXRvci5jcmVhdGVGYWN0b3J5OworfQorCisvKioKKyAqIENyZWF0ZXMgYSBtYXBwaW5n
IGZyb20gc3VwcG9ydGVkIEhUTUwgdGFncyB0byBgUmVhY3RET01Db21wb25lbnRgIGNsYXNzZXMu
CisgKiBUaGlzIGlzIGFsc28gYWNjZXNzaWJsZSB2aWEgYFJlYWN0LkRPTWAuCisgKgorICogQHB1
YmxpYworICovCit2YXIgUmVhY3RET01GYWN0b3JpZXMgPSB7CisgIGE6IGNyZWF0ZURPTUZhY3Rv
cnkoJ2EnKSwKKyAgYWJicjogY3JlYXRlRE9NRmFjdG9yeSgnYWJicicpLAorICBhZGRyZXNzOiBj
cmVhdGVET01GYWN0b3J5KCdhZGRyZXNzJyksCisgIGFyZWE6IGNyZWF0ZURPTUZhY3RvcnkoJ2Fy
ZWEnKSwKKyAgYXJ0aWNsZTogY3JlYXRlRE9NRmFjdG9yeSgnYXJ0aWNsZScpLAorICBhc2lkZTog
Y3JlYXRlRE9NRmFjdG9yeSgnYXNpZGUnKSwKKyAgYXVkaW86IGNyZWF0ZURPTUZhY3RvcnkoJ2F1
ZGlvJyksCisgIGI6IGNyZWF0ZURPTUZhY3RvcnkoJ2InKSwKKyAgYmFzZTogY3JlYXRlRE9NRmFj
dG9yeSgnYmFzZScpLAorICBiZGk6IGNyZWF0ZURPTUZhY3RvcnkoJ2JkaScpLAorICBiZG86IGNy
ZWF0ZURPTUZhY3RvcnkoJ2JkbycpLAorICBiaWc6IGNyZWF0ZURPTUZhY3RvcnkoJ2JpZycpLAor
ICBibG9ja3F1b3RlOiBjcmVhdGVET01GYWN0b3J5KCdibG9ja3F1b3RlJyksCisgIGJvZHk6IGNy
ZWF0ZURPTUZhY3RvcnkoJ2JvZHknKSwKKyAgYnI6IGNyZWF0ZURPTUZhY3RvcnkoJ2JyJyksCisg
IGJ1dHRvbjogY3JlYXRlRE9NRmFjdG9yeSgnYnV0dG9uJyksCisgIGNhbnZhczogY3JlYXRlRE9N
RmFjdG9yeSgnY2FudmFzJyksCisgIGNhcHRpb246IGNyZWF0ZURPTUZhY3RvcnkoJ2NhcHRpb24n
KSwKKyAgY2l0ZTogY3JlYXRlRE9NRmFjdG9yeSgnY2l0ZScpLAorICBjb2RlOiBjcmVhdGVET01G
YWN0b3J5KCdjb2RlJyksCisgIGNvbDogY3JlYXRlRE9NRmFjdG9yeSgnY29sJyksCisgIGNvbGdy
b3VwOiBjcmVhdGVET01GYWN0b3J5KCdjb2xncm91cCcpLAorICBkYXRhOiBjcmVhdGVET01GYWN0
b3J5KCdkYXRhJyksCisgIGRhdGFsaXN0OiBjcmVhdGVET01GYWN0b3J5KCdkYXRhbGlzdCcpLAor
ICBkZDogY3JlYXRlRE9NRmFjdG9yeSgnZGQnKSwKKyAgZGVsOiBjcmVhdGVET01GYWN0b3J5KCdk
ZWwnKSwKKyAgZGV0YWlsczogY3JlYXRlRE9NRmFjdG9yeSgnZGV0YWlscycpLAorICBkZm46IGNy
ZWF0ZURPTUZhY3RvcnkoJ2RmbicpLAorICBkaWFsb2c6IGNyZWF0ZURPTUZhY3RvcnkoJ2RpYWxv
ZycpLAorICBkaXY6IGNyZWF0ZURPTUZhY3RvcnkoJ2RpdicpLAorICBkbDogY3JlYXRlRE9NRmFj
dG9yeSgnZGwnKSwKKyAgZHQ6IGNyZWF0ZURPTUZhY3RvcnkoJ2R0JyksCisgIGVtOiBjcmVhdGVE
T01GYWN0b3J5KCdlbScpLAorICBlbWJlZDogY3JlYXRlRE9NRmFjdG9yeSgnZW1iZWQnKSwKKyAg
ZmllbGRzZXQ6IGNyZWF0ZURPTUZhY3RvcnkoJ2ZpZWxkc2V0JyksCisgIGZpZ2NhcHRpb246IGNy
ZWF0ZURPTUZhY3RvcnkoJ2ZpZ2NhcHRpb24nKSwKKyAgZmlndXJlOiBjcmVhdGVET01GYWN0b3J5
KCdmaWd1cmUnKSwKKyAgZm9vdGVyOiBjcmVhdGVET01GYWN0b3J5KCdmb290ZXInKSwKKyAgZm9y
bTogY3JlYXRlRE9NRmFjdG9yeSgnZm9ybScpLAorICBoMTogY3JlYXRlRE9NRmFjdG9yeSgnaDEn
KSwKKyAgaDI6IGNyZWF0ZURPTUZhY3RvcnkoJ2gyJyksCisgIGgzOiBjcmVhdGVET01GYWN0b3J5
KCdoMycpLAorICBoNDogY3JlYXRlRE9NRmFjdG9yeSgnaDQnKSwKKyAgaDU6IGNyZWF0ZURPTUZh
Y3RvcnkoJ2g1JyksCisgIGg2OiBjcmVhdGVET01GYWN0b3J5KCdoNicpLAorICBoZWFkOiBjcmVh
dGVET01GYWN0b3J5KCdoZWFkJyksCisgIGhlYWRlcjogY3JlYXRlRE9NRmFjdG9yeSgnaGVhZGVy
JyksCisgIGhncm91cDogY3JlYXRlRE9NRmFjdG9yeSgnaGdyb3VwJyksCisgIGhyOiBjcmVhdGVE
T01GYWN0b3J5KCdocicpLAorICBodG1sOiBjcmVhdGVET01GYWN0b3J5KCdodG1sJyksCisgIGk6
IGNyZWF0ZURPTUZhY3RvcnkoJ2knKSwKKyAgaWZyYW1lOiBjcmVhdGVET01GYWN0b3J5KCdpZnJh
bWUnKSwKKyAgaW1nOiBjcmVhdGVET01GYWN0b3J5KCdpbWcnKSwKKyAgaW5wdXQ6IGNyZWF0ZURP
TUZhY3RvcnkoJ2lucHV0JyksCisgIGluczogY3JlYXRlRE9NRmFjdG9yeSgnaW5zJyksCisgIGti
ZDogY3JlYXRlRE9NRmFjdG9yeSgna2JkJyksCisgIGtleWdlbjogY3JlYXRlRE9NRmFjdG9yeSgn
a2V5Z2VuJyksCisgIGxhYmVsOiBjcmVhdGVET01GYWN0b3J5KCdsYWJlbCcpLAorICBsZWdlbmQ6
IGNyZWF0ZURPTUZhY3RvcnkoJ2xlZ2VuZCcpLAorICBsaTogY3JlYXRlRE9NRmFjdG9yeSgnbGkn
KSwKKyAgbGluazogY3JlYXRlRE9NRmFjdG9yeSgnbGluaycpLAorICBtYWluOiBjcmVhdGVET01G
YWN0b3J5KCdtYWluJyksCisgIG1hcDogY3JlYXRlRE9NRmFjdG9yeSgnbWFwJyksCisgIG1hcms6
IGNyZWF0ZURPTUZhY3RvcnkoJ21hcmsnKSwKKyAgbWVudTogY3JlYXRlRE9NRmFjdG9yeSgnbWVu
dScpLAorICBtZW51aXRlbTogY3JlYXRlRE9NRmFjdG9yeSgnbWVudWl0ZW0nKSwKKyAgbWV0YTog
Y3JlYXRlRE9NRmFjdG9yeSgnbWV0YScpLAorICBtZXRlcjogY3JlYXRlRE9NRmFjdG9yeSgnbWV0
ZXInKSwKKyAgbmF2OiBjcmVhdGVET01GYWN0b3J5KCduYXYnKSwKKyAgbm9zY3JpcHQ6IGNyZWF0
ZURPTUZhY3RvcnkoJ25vc2NyaXB0JyksCisgIG9iamVjdDogY3JlYXRlRE9NRmFjdG9yeSgnb2Jq
ZWN0JyksCisgIG9sOiBjcmVhdGVET01GYWN0b3J5KCdvbCcpLAorICBvcHRncm91cDogY3JlYXRl
RE9NRmFjdG9yeSgnb3B0Z3JvdXAnKSwKKyAgb3B0aW9uOiBjcmVhdGVET01GYWN0b3J5KCdvcHRp
b24nKSwKKyAgb3V0cHV0OiBjcmVhdGVET01GYWN0b3J5KCdvdXRwdXQnKSwKKyAgcDogY3JlYXRl
RE9NRmFjdG9yeSgncCcpLAorICBwYXJhbTogY3JlYXRlRE9NRmFjdG9yeSgncGFyYW0nKSwKKyAg
cGljdHVyZTogY3JlYXRlRE9NRmFjdG9yeSgncGljdHVyZScpLAorICBwcmU6IGNyZWF0ZURPTUZh
Y3RvcnkoJ3ByZScpLAorICBwcm9ncmVzczogY3JlYXRlRE9NRmFjdG9yeSgncHJvZ3Jlc3MnKSwK
KyAgcTogY3JlYXRlRE9NRmFjdG9yeSgncScpLAorICBycDogY3JlYXRlRE9NRmFjdG9yeSgncnAn
KSwKKyAgcnQ6IGNyZWF0ZURPTUZhY3RvcnkoJ3J0JyksCisgIHJ1Ynk6IGNyZWF0ZURPTUZhY3Rv
cnkoJ3J1YnknKSwKKyAgczogY3JlYXRlRE9NRmFjdG9yeSgncycpLAorICBzYW1wOiBjcmVhdGVE
T01GYWN0b3J5KCdzYW1wJyksCisgIHNjcmlwdDogY3JlYXRlRE9NRmFjdG9yeSgnc2NyaXB0Jyks
CisgIHNlY3Rpb246IGNyZWF0ZURPTUZhY3RvcnkoJ3NlY3Rpb24nKSwKKyAgc2VsZWN0OiBjcmVh
dGVET01GYWN0b3J5KCdzZWxlY3QnKSwKKyAgc21hbGw6IGNyZWF0ZURPTUZhY3RvcnkoJ3NtYWxs
JyksCisgIHNvdXJjZTogY3JlYXRlRE9NRmFjdG9yeSgnc291cmNlJyksCisgIHNwYW46IGNyZWF0
ZURPTUZhY3RvcnkoJ3NwYW4nKSwKKyAgc3Ryb25nOiBjcmVhdGVET01GYWN0b3J5KCdzdHJvbmcn
KSwKKyAgc3R5bGU6IGNyZWF0ZURPTUZhY3RvcnkoJ3N0eWxlJyksCisgIHN1YjogY3JlYXRlRE9N
RmFjdG9yeSgnc3ViJyksCisgIHN1bW1hcnk6IGNyZWF0ZURPTUZhY3RvcnkoJ3N1bW1hcnknKSwK
KyAgc3VwOiBjcmVhdGVET01GYWN0b3J5KCdzdXAnKSwKKyAgdGFibGU6IGNyZWF0ZURPTUZhY3Rv
cnkoJ3RhYmxlJyksCisgIHRib2R5OiBjcmVhdGVET01GYWN0b3J5KCd0Ym9keScpLAorICB0ZDog
Y3JlYXRlRE9NRmFjdG9yeSgndGQnKSwKKyAgdGV4dGFyZWE6IGNyZWF0ZURPTUZhY3RvcnkoJ3Rl
eHRhcmVhJyksCisgIHRmb290OiBjcmVhdGVET01GYWN0b3J5KCd0Zm9vdCcpLAorICB0aDogY3Jl
YXRlRE9NRmFjdG9yeSgndGgnKSwKKyAgdGhlYWQ6IGNyZWF0ZURPTUZhY3RvcnkoJ3RoZWFkJyks
CisgIHRpbWU6IGNyZWF0ZURPTUZhY3RvcnkoJ3RpbWUnKSwKKyAgdGl0bGU6IGNyZWF0ZURPTUZh
Y3RvcnkoJ3RpdGxlJyksCisgIHRyOiBjcmVhdGVET01GYWN0b3J5KCd0cicpLAorICB0cmFjazog
Y3JlYXRlRE9NRmFjdG9yeSgndHJhY2snKSwKKyAgdTogY3JlYXRlRE9NRmFjdG9yeSgndScpLAor
ICB1bDogY3JlYXRlRE9NRmFjdG9yeSgndWwnKSwKKyAgJ3Zhcic6IGNyZWF0ZURPTUZhY3Rvcnko
J3ZhcicpLAorICB2aWRlbzogY3JlYXRlRE9NRmFjdG9yeSgndmlkZW8nKSwKKyAgd2JyOiBjcmVh
dGVET01GYWN0b3J5KCd3YnInKSwKKworICAvLyBTVkcKKyAgY2lyY2xlOiBjcmVhdGVET01GYWN0
b3J5KCdjaXJjbGUnKSwKKyAgY2xpcFBhdGg6IGNyZWF0ZURPTUZhY3RvcnkoJ2NsaXBQYXRoJyks
CisgIGRlZnM6IGNyZWF0ZURPTUZhY3RvcnkoJ2RlZnMnKSwKKyAgZWxsaXBzZTogY3JlYXRlRE9N
RmFjdG9yeSgnZWxsaXBzZScpLAorICBnOiBjcmVhdGVET01GYWN0b3J5KCdnJyksCisgIGltYWdl
OiBjcmVhdGVET01GYWN0b3J5KCdpbWFnZScpLAorICBsaW5lOiBjcmVhdGVET01GYWN0b3J5KCds
aW5lJyksCisgIGxpbmVhckdyYWRpZW50OiBjcmVhdGVET01GYWN0b3J5KCdsaW5lYXJHcmFkaWVu
dCcpLAorICBtYXNrOiBjcmVhdGVET01GYWN0b3J5KCdtYXNrJyksCisgIHBhdGg6IGNyZWF0ZURP
TUZhY3RvcnkoJ3BhdGgnKSwKKyAgcGF0dGVybjogY3JlYXRlRE9NRmFjdG9yeSgncGF0dGVybicp
LAorICBwb2x5Z29uOiBjcmVhdGVET01GYWN0b3J5KCdwb2x5Z29uJyksCisgIHBvbHlsaW5lOiBj
cmVhdGVET01GYWN0b3J5KCdwb2x5bGluZScpLAorICByYWRpYWxHcmFkaWVudDogY3JlYXRlRE9N
RmFjdG9yeSgncmFkaWFsR3JhZGllbnQnKSwKKyAgcmVjdDogY3JlYXRlRE9NRmFjdG9yeSgncmVj
dCcpLAorICBzdG9wOiBjcmVhdGVET01GYWN0b3J5KCdzdG9wJyksCisgIHN2ZzogY3JlYXRlRE9N
RmFjdG9yeSgnc3ZnJyksCisgIHRleHQ6IGNyZWF0ZURPTUZhY3RvcnkoJ3RleHQnKSwKKyAgdHNw
YW46IGNyZWF0ZURPTUZhY3RvcnkoJ3RzcGFuJykKK307CisKK21vZHVsZS5leHBvcnRzID0gUmVh
Y3RET01GYWN0b3JpZXM7Cit9LHsiMTAiOjEwLCIxMiI6MTJ9XSwxMDpbZnVuY3Rpb24oX2RlcmVx
Xyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNv
ZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQor
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBp
biB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3Vz
ZSBzdHJpY3QnOworCit2YXIgX2Fzc2lnbiA9IF9kZXJlcV8oMzApOworCit2YXIgUmVhY3RDdXJy
ZW50T3duZXIgPSBfZGVyZXFfKDgpOworCit2YXIgd2FybmluZyA9IF9kZXJlcV8oMjkpOwordmFy
IGNhbkRlZmluZVByb3BlcnR5ID0gX2RlcmVxXygyMCk7Cit2YXIgaGFzT3duUHJvcGVydHkgPSBP
YmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5OworCit2YXIgUkVBQ1RfRUxFTUVOVF9UWVBF
ID0gX2RlcmVxXygxMSk7CisKK3ZhciBSRVNFUlZFRF9QUk9QUyA9IHsKKyAga2V5OiB0cnVlLAor
ICByZWY6IHRydWUsCisgIF9fc2VsZjogdHJ1ZSwKKyAgX19zb3VyY2U6IHRydWUKK307CisKK3Zh
ciBzcGVjaWFsUHJvcEtleVdhcm5pbmdTaG93biwgc3BlY2lhbFByb3BSZWZXYXJuaW5nU2hvd247
CisKK2Z1bmN0aW9uIGhhc1ZhbGlkUmVmKGNvbmZpZykgeworICBpZiAoImRldmVsb3BtZW50IiAh
PT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoY29uZmlnLCAn
cmVmJykpIHsKKyAgICAgIHZhciBnZXR0ZXIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKGNvbmZpZywgJ3JlZicpLmdldDsKKyAgICAgIGlmIChnZXR0ZXIgJiYgZ2V0dGVyLmlzUmVh
Y3RXYXJuaW5nKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgIH0KKyAgICB9CisgIH0K
KyAgcmV0dXJuIGNvbmZpZy5yZWYgIT09IHVuZGVmaW5lZDsKK30KKworZnVuY3Rpb24gaGFzVmFs
aWRLZXkoY29uZmlnKSB7CisgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsK
KyAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChjb25maWcsICdrZXknKSkgeworICAgICAgdmFy
IGdldHRlciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoY29uZmlnLCAna2V5Jyku
Z2V0OworICAgICAgaWYgKGdldHRlciAmJiBnZXR0ZXIuaXNSZWFjdFdhcm5pbmcpIHsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgfQorICAgIH0KKyAgfQorICByZXR1cm4gY29uZmlnLmtl
eSAhPT0gdW5kZWZpbmVkOworfQorCitmdW5jdGlvbiBkZWZpbmVLZXlQcm9wV2FybmluZ0dldHRl
cihwcm9wcywgZGlzcGxheU5hbWUpIHsKKyAgdmFyIHdhcm5BYm91dEFjY2Vzc2luZ0tleSA9IGZ1
bmN0aW9uICgpIHsKKyAgICBpZiAoIXNwZWNpYWxQcm9wS2V5V2FybmluZ1Nob3duKSB7CisgICAg
ICBzcGVjaWFsUHJvcEtleVdhcm5pbmdTaG93biA9IHRydWU7CisgICAgICAiZGV2ZWxvcG1lbnQi
ICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnJXM6IGBrZXlgIGlzIG5vdCBhIHBy
b3AuIFRyeWluZyB0byBhY2Nlc3MgaXQgd2lsbCByZXN1bHQgJyArICdpbiBgdW5kZWZpbmVkYCBi
ZWluZyByZXR1cm5lZC4gSWYgeW91IG5lZWQgdG8gYWNjZXNzIHRoZSBzYW1lICcgKyAndmFsdWUg
d2l0aGluIHRoZSBjaGlsZCBjb21wb25lbnQsIHlvdSBzaG91bGQgcGFzcyBpdCBhcyBhIGRpZmZl
cmVudCAnICsgJ3Byb3AuIChodHRwczovL2ZiLm1lL3JlYWN0LXNwZWNpYWwtcHJvcHMpJywgZGlz
cGxheU5hbWUpIDogdm9pZCAwOworICAgIH0KKyAgfTsKKyAgd2FybkFib3V0QWNjZXNzaW5nS2V5
LmlzUmVhY3RXYXJuaW5nID0gdHJ1ZTsKKyAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3BzLCAn
a2V5JywgeworICAgIGdldDogd2FybkFib3V0QWNjZXNzaW5nS2V5LAorICAgIGNvbmZpZ3VyYWJs
ZTogdHJ1ZQorICB9KTsKK30KKworZnVuY3Rpb24gZGVmaW5lUmVmUHJvcFdhcm5pbmdHZXR0ZXIo
cHJvcHMsIGRpc3BsYXlOYW1lKSB7CisgIHZhciB3YXJuQWJvdXRBY2Nlc3NpbmdSZWYgPSBmdW5j
dGlvbiAoKSB7CisgICAgaWYgKCFzcGVjaWFsUHJvcFJlZldhcm5pbmdTaG93bikgeworICAgICAg
c3BlY2lhbFByb3BSZWZXYXJuaW5nU2hvd24gPSB0cnVlOworICAgICAgImRldmVsb3BtZW50IiAh
PT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJyVzOiBgcmVmYCBpcyBub3QgYSBwcm9w
LiBUcnlpbmcgdG8gYWNjZXNzIGl0IHdpbGwgcmVzdWx0ICcgKyAnaW4gYHVuZGVmaW5lZGAgYmVp
bmcgcmV0dXJuZWQuIElmIHlvdSBuZWVkIHRvIGFjY2VzcyB0aGUgc2FtZSAnICsgJ3ZhbHVlIHdp
dGhpbiB0aGUgY2hpbGQgY29tcG9uZW50LCB5b3Ugc2hvdWxkIHBhc3MgaXQgYXMgYSBkaWZmZXJl
bnQgJyArICdwcm9wLiAoaHR0cHM6Ly9mYi5tZS9yZWFjdC1zcGVjaWFsLXByb3BzKScsIGRpc3Bs
YXlOYW1lKSA6IHZvaWQgMDsKKyAgICB9CisgIH07CisgIHdhcm5BYm91dEFjY2Vzc2luZ1JlZi5p
c1JlYWN0V2FybmluZyA9IHRydWU7CisgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9wcywgJ3Jl
ZicsIHsKKyAgICBnZXQ6IHdhcm5BYm91dEFjY2Vzc2luZ1JlZiwKKyAgICBjb25maWd1cmFibGU6
IHRydWUKKyAgfSk7Cit9CisKKy8qKgorICogRmFjdG9yeSBtZXRob2QgdG8gY3JlYXRlIGEgbmV3
IFJlYWN0IGVsZW1lbnQuIFRoaXMgbm8gbG9uZ2VyIGFkaGVyZXMgdG8KKyAqIHRoZSBjbGFzcyBw
YXR0ZXJuLCBzbyBkbyBub3QgdXNlIG5ldyB0byBjYWxsIGl0LiBBbHNvLCBubyBpbnN0YW5jZW9m
IGNoZWNrCisgKiB3aWxsIHdvcmsuIEluc3RlYWQgdGVzdCAkJHR5cGVvZiBmaWVsZCBhZ2FpbnN0
IFN5bWJvbC5mb3IoJ3JlYWN0LmVsZW1lbnQnKSB0byBjaGVjaworICogaWYgc29tZXRoaW5nIGlz
IGEgUmVhY3QgRWxlbWVudC4KKyAqCisgKiBAcGFyYW0geyp9IHR5cGUKKyAqIEBwYXJhbSB7Kn0g
a2V5CisgKiBAcGFyYW0ge3N0cmluZ3xvYmplY3R9IHJlZgorICogQHBhcmFtIHsqfSBzZWxmIEEg
KnRlbXBvcmFyeSogaGVscGVyIHRvIGRldGVjdCBwbGFjZXMgd2hlcmUgYHRoaXNgIGlzCisgKiBk
aWZmZXJlbnQgZnJvbSB0aGUgYG93bmVyYCB3aGVuIFJlYWN0LmNyZWF0ZUVsZW1lbnQgaXMgY2Fs
bGVkLCBzbyB0aGF0IHdlCisgKiBjYW4gd2Fybi4gV2Ugd2FudCB0byBnZXQgcmlkIG9mIG93bmVy
IGFuZCByZXBsYWNlIHN0cmluZyBgcmVmYHMgd2l0aCBhcnJvdworICogZnVuY3Rpb25zLCBhbmQg
YXMgbG9uZyBhcyBgdGhpc2AgYW5kIG93bmVyIGFyZSB0aGUgc2FtZSwgdGhlcmUgd2lsbCBiZSBu
bworICogY2hhbmdlIGluIGJlaGF2aW9yLgorICogQHBhcmFtIHsqfSBzb3VyY2UgQW4gYW5ub3Rh
dGlvbiBvYmplY3QgKGFkZGVkIGJ5IGEgdHJhbnNwaWxlciBvciBvdGhlcndpc2UpCisgKiBpbmRp
Y2F0aW5nIGZpbGVuYW1lLCBsaW5lIG51bWJlciwgYW5kL29yIG90aGVyIGluZm9ybWF0aW9uLgor
ICogQHBhcmFtIHsqfSBvd25lcgorICogQHBhcmFtIHsqfSBwcm9wcworICogQGludGVybmFsCisg
Ki8KK3ZhciBSZWFjdEVsZW1lbnQgPSBmdW5jdGlvbiAodHlwZSwga2V5LCByZWYsIHNlbGYsIHNv
dXJjZSwgb3duZXIsIHByb3BzKSB7CisgIHZhciBlbGVtZW50ID0geworICAgIC8vIFRoaXMgdGFn
IGFsbG93IHVzIHRvIHVuaXF1ZWx5IGlkZW50aWZ5IHRoaXMgYXMgYSBSZWFjdCBFbGVtZW50Cisg
ICAgJCR0eXBlb2Y6IFJFQUNUX0VMRU1FTlRfVFlQRSwKKworICAgIC8vIEJ1aWx0LWluIHByb3Bl
cnRpZXMgdGhhdCBiZWxvbmcgb24gdGhlIGVsZW1lbnQKKyAgICB0eXBlOiB0eXBlLAorICAgIGtl
eToga2V5LAorICAgIHJlZjogcmVmLAorICAgIHByb3BzOiBwcm9wcywKKworICAgIC8vIFJlY29y
ZCB0aGUgY29tcG9uZW50IHJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyB0aGlzIGVsZW1lbnQuCisg
ICAgX293bmVyOiBvd25lcgorICB9OworCisgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVj
dGlvbicpIHsKKyAgICAvLyBUaGUgdmFsaWRhdGlvbiBmbGFnIGlzIGN1cnJlbnRseSBtdXRhdGl2
ZS4gV2UgcHV0IGl0IG9uCisgICAgLy8gYW4gZXh0ZXJuYWwgYmFja2luZyBzdG9yZSBzbyB0aGF0
IHdlIGNhbiBmcmVlemUgdGhlIHdob2xlIG9iamVjdC4KKyAgICAvLyBUaGlzIGNhbiBiZSByZXBs
YWNlZCB3aXRoIGEgV2Vha01hcCBvbmNlIHRoZXkgYXJlIGltcGxlbWVudGVkIGluCisgICAgLy8g
Y29tbW9ubHkgdXNlZCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuCisgICAgZWxlbWVudC5fc3Rv
cmUgPSB7fTsKKworICAgIC8vIFRvIG1ha2UgY29tcGFyaW5nIFJlYWN0RWxlbWVudHMgZWFzaWVy
IGZvciB0ZXN0aW5nIHB1cnBvc2VzLCB3ZSBtYWtlCisgICAgLy8gdGhlIHZhbGlkYXRpb24gZmxh
ZyBub24tZW51bWVyYWJsZSAod2hlcmUgcG9zc2libGUsIHdoaWNoIHNob3VsZAorICAgIC8vIGlu
Y2x1ZGUgZXZlcnkgZW52aXJvbm1lbnQgd2UgcnVuIHRlc3RzIGluKSwgc28gdGhlIHRlc3QgZnJh
bWV3b3JrCisgICAgLy8gaWdub3JlcyBpdC4KKyAgICBpZiAoY2FuRGVmaW5lUHJvcGVydHkpIHsK
KyAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlbGVtZW50Ll9zdG9yZSwgJ3ZhbGlkYXRlZCcs
IHsKKyAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSwKKyAgICAgICAgZW51bWVyYWJsZTogZmFs
c2UsCisgICAgICAgIHdyaXRhYmxlOiB0cnVlLAorICAgICAgICB2YWx1ZTogZmFsc2UKKyAgICAg
IH0pOworICAgICAgLy8gc2VsZiBhbmQgc291cmNlIGFyZSBERVYgb25seSBwcm9wZXJ0aWVzLgor
ICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGVsZW1lbnQsICdfc2VsZicsIHsKKyAgICAgICAg
Y29uZmlndXJhYmxlOiBmYWxzZSwKKyAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsCisgICAgICAg
IHdyaXRhYmxlOiBmYWxzZSwKKyAgICAgICAgdmFsdWU6IHNlbGYKKyAgICAgIH0pOworICAgICAg
Ly8gVHdvIGVsZW1lbnRzIGNyZWF0ZWQgaW4gdHdvIGRpZmZlcmVudCBwbGFjZXMgc2hvdWxkIGJl
IGNvbnNpZGVyZWQKKyAgICAgIC8vIGVxdWFsIGZvciB0ZXN0aW5nIHB1cnBvc2VzIGFuZCB0aGVy
ZWZvcmUgd2UgaGlkZSBpdCBmcm9tIGVudW1lcmF0aW9uLgorICAgICAgT2JqZWN0LmRlZmluZVBy
b3BlcnR5KGVsZW1lbnQsICdfc291cmNlJywgeworICAgICAgICBjb25maWd1cmFibGU6IGZhbHNl
LAorICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSwKKyAgICAgICAgd3JpdGFibGU6IGZhbHNlLAor
ICAgICAgICB2YWx1ZTogc291cmNlCisgICAgICB9KTsKKyAgICB9IGVsc2UgeworICAgICAgZWxl
bWVudC5fc3RvcmUudmFsaWRhdGVkID0gZmFsc2U7CisgICAgICBlbGVtZW50Ll9zZWxmID0gc2Vs
ZjsKKyAgICAgIGVsZW1lbnQuX3NvdXJjZSA9IHNvdXJjZTsKKyAgICB9CisgICAgaWYgKE9iamVj
dC5mcmVlemUpIHsKKyAgICAgIE9iamVjdC5mcmVlemUoZWxlbWVudC5wcm9wcyk7CisgICAgICBP
YmplY3QuZnJlZXplKGVsZW1lbnQpOworICAgIH0KKyAgfQorCisgIHJldHVybiBlbGVtZW50Owor
fTsKKworLyoqCisgKiBDcmVhdGUgYW5kIHJldHVybiBhIG5ldyBSZWFjdEVsZW1lbnQgb2YgdGhl
IGdpdmVuIHR5cGUuCisgKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9j
cy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3QuY3JlYXRlZWxlbWVudAorICovCitSZWFjdEVsZW1l
bnQuY3JlYXRlRWxlbWVudCA9IGZ1bmN0aW9uICh0eXBlLCBjb25maWcsIGNoaWxkcmVuKSB7Cisg
IHZhciBwcm9wTmFtZTsKKworICAvLyBSZXNlcnZlZCBuYW1lcyBhcmUgZXh0cmFjdGVkCisgIHZh
ciBwcm9wcyA9IHt9OworCisgIHZhciBrZXkgPSBudWxsOworICB2YXIgcmVmID0gbnVsbDsKKyAg
dmFyIHNlbGYgPSBudWxsOworICB2YXIgc291cmNlID0gbnVsbDsKKworICBpZiAoY29uZmlnICE9
IG51bGwpIHsKKyAgICBpZiAoaGFzVmFsaWRSZWYoY29uZmlnKSkgeworICAgICAgcmVmID0gY29u
ZmlnLnJlZjsKKyAgICB9CisgICAgaWYgKGhhc1ZhbGlkS2V5KGNvbmZpZykpIHsKKyAgICAgIGtl
eSA9ICcnICsgY29uZmlnLmtleTsKKyAgICB9CisKKyAgICBzZWxmID0gY29uZmlnLl9fc2VsZiA9
PT0gdW5kZWZpbmVkID8gbnVsbCA6IGNvbmZpZy5fX3NlbGY7CisgICAgc291cmNlID0gY29uZmln
Ll9fc291cmNlID09PSB1bmRlZmluZWQgPyBudWxsIDogY29uZmlnLl9fc291cmNlOworICAgIC8v
IFJlbWFpbmluZyBwcm9wZXJ0aWVzIGFyZSBhZGRlZCB0byBhIG5ldyBwcm9wcyBvYmplY3QKKyAg
ICBmb3IgKHByb3BOYW1lIGluIGNvbmZpZykgeworICAgICAgaWYgKGhhc093blByb3BlcnR5LmNh
bGwoY29uZmlnLCBwcm9wTmFtZSkgJiYgIVJFU0VSVkVEX1BST1BTLmhhc093blByb3BlcnR5KHBy
b3BOYW1lKSkgeworICAgICAgICBwcm9wc1twcm9wTmFtZV0gPSBjb25maWdbcHJvcE5hbWVdOwor
ICAgICAgfQorICAgIH0KKyAgfQorCisgIC8vIENoaWxkcmVuIGNhbiBiZSBtb3JlIHRoYW4gb25l
IGFyZ3VtZW50LCBhbmQgdGhvc2UgYXJlIHRyYW5zZmVycmVkIG9udG8KKyAgLy8gdGhlIG5ld2x5
IGFsbG9jYXRlZCBwcm9wcyBvYmplY3QuCisgIHZhciBjaGlsZHJlbkxlbmd0aCA9IGFyZ3VtZW50
cy5sZW5ndGggLSAyOworICBpZiAoY2hpbGRyZW5MZW5ndGggPT09IDEpIHsKKyAgICBwcm9wcy5j
aGlsZHJlbiA9IGNoaWxkcmVuOworICB9IGVsc2UgaWYgKGNoaWxkcmVuTGVuZ3RoID4gMSkgewor
ICAgIHZhciBjaGlsZEFycmF5ID0gQXJyYXkoY2hpbGRyZW5MZW5ndGgpOworICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgY2hpbGRyZW5MZW5ndGg7IGkrKykgeworICAgICAgY2hpbGRBcnJheVtpXSA9
IGFyZ3VtZW50c1tpICsgMl07CisgICAgfQorICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJv
ZHVjdGlvbicpIHsKKyAgICAgIGlmIChPYmplY3QuZnJlZXplKSB7CisgICAgICAgIE9iamVjdC5m
cmVlemUoY2hpbGRBcnJheSk7CisgICAgICB9CisgICAgfQorICAgIHByb3BzLmNoaWxkcmVuID0g
Y2hpbGRBcnJheTsKKyAgfQorCisgIC8vIFJlc29sdmUgZGVmYXVsdCBwcm9wcworICBpZiAodHlw
ZSAmJiB0eXBlLmRlZmF1bHRQcm9wcykgeworICAgIHZhciBkZWZhdWx0UHJvcHMgPSB0eXBlLmRl
ZmF1bHRQcm9wczsKKyAgICBmb3IgKHByb3BOYW1lIGluIGRlZmF1bHRQcm9wcykgeworICAgICAg
aWYgKHByb3BzW3Byb3BOYW1lXSA9PT0gdW5kZWZpbmVkKSB7CisgICAgICAgIHByb3BzW3Byb3BO
YW1lXSA9IGRlZmF1bHRQcm9wc1twcm9wTmFtZV07CisgICAgICB9CisgICAgfQorICB9CisgIGlm
ICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICBpZiAoa2V5IHx8IHJlZikg
eworICAgICAgaWYgKHR5cGVvZiBwcm9wcy4kJHR5cGVvZiA9PT0gJ3VuZGVmaW5lZCcgfHwgcHJv
cHMuJCR0eXBlb2YgIT09IFJFQUNUX0VMRU1FTlRfVFlQRSkgeworICAgICAgICB2YXIgZGlzcGxh
eU5hbWUgPSB0eXBlb2YgdHlwZSA9PT0gJ2Z1bmN0aW9uJyA/IHR5cGUuZGlzcGxheU5hbWUgfHwg
dHlwZS5uYW1lIHx8ICdVbmtub3duJyA6IHR5cGU7CisgICAgICAgIGlmIChrZXkpIHsKKyAgICAg
ICAgICBkZWZpbmVLZXlQcm9wV2FybmluZ0dldHRlcihwcm9wcywgZGlzcGxheU5hbWUpOworICAg
ICAgICB9CisgICAgICAgIGlmIChyZWYpIHsKKyAgICAgICAgICBkZWZpbmVSZWZQcm9wV2Fybmlu
Z0dldHRlcihwcm9wcywgZGlzcGxheU5hbWUpOworICAgICAgICB9CisgICAgICB9CisgICAgfQor
ICB9CisgIHJldHVybiBSZWFjdEVsZW1lbnQodHlwZSwga2V5LCByZWYsIHNlbGYsIHNvdXJjZSwg
UmVhY3RDdXJyZW50T3duZXIuY3VycmVudCwgcHJvcHMpOworfTsKKworLyoqCisgKiBSZXR1cm4g
YSBmdW5jdGlvbiB0aGF0IHByb2R1Y2VzIFJlYWN0RWxlbWVudHMgb2YgYSBnaXZlbiB0eXBlLgor
ICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdG9wLWxldmVsLWFw
aS5odG1sI3JlYWN0LmNyZWF0ZWZhY3RvcnkKKyAqLworUmVhY3RFbGVtZW50LmNyZWF0ZUZhY3Rv
cnkgPSBmdW5jdGlvbiAodHlwZSkgeworICB2YXIgZmFjdG9yeSA9IFJlYWN0RWxlbWVudC5jcmVh
dGVFbGVtZW50LmJpbmQobnVsbCwgdHlwZSk7CisgIC8vIEV4cG9zZSB0aGUgdHlwZSBvbiB0aGUg
ZmFjdG9yeSBhbmQgdGhlIHByb3RvdHlwZSBzbyB0aGF0IGl0IGNhbiBiZQorICAvLyBlYXNpbHkg
YWNjZXNzZWQgb24gZWxlbWVudHMuIEUuZy4gYDxGb28gLz4udHlwZSA9PT0gRm9vYC4KKyAgLy8g
VGhpcyBzaG91bGQgbm90IGJlIG5hbWVkIGBjb25zdHJ1Y3RvcmAgc2luY2UgdGhpcyBtYXkgbm90
IGJlIHRoZSBmdW5jdGlvbgorICAvLyB0aGF0IGNyZWF0ZWQgdGhlIGVsZW1lbnQsIGFuZCBpdCBt
YXkgbm90IGV2ZW4gYmUgYSBjb25zdHJ1Y3Rvci4KKyAgLy8gTGVnYWN5IGhvb2sgVE9ETzogV2Fy
biBpZiB0aGlzIGlzIGFjY2Vzc2VkCisgIGZhY3RvcnkudHlwZSA9IHR5cGU7CisgIHJldHVybiBm
YWN0b3J5OworfTsKKworUmVhY3RFbGVtZW50LmNsb25lQW5kUmVwbGFjZUtleSA9IGZ1bmN0aW9u
IChvbGRFbGVtZW50LCBuZXdLZXkpIHsKKyAgdmFyIG5ld0VsZW1lbnQgPSBSZWFjdEVsZW1lbnQo
b2xkRWxlbWVudC50eXBlLCBuZXdLZXksIG9sZEVsZW1lbnQucmVmLCBvbGRFbGVtZW50Ll9zZWxm
LCBvbGRFbGVtZW50Ll9zb3VyY2UsIG9sZEVsZW1lbnQuX293bmVyLCBvbGRFbGVtZW50LnByb3Bz
KTsKKworICByZXR1cm4gbmV3RWxlbWVudDsKK307CisKKy8qKgorICogQ2xvbmUgYW5kIHJldHVy
biBhIG5ldyBSZWFjdEVsZW1lbnQgdXNpbmcgZWxlbWVudCBhcyB0aGUgc3RhcnRpbmcgcG9pbnQu
CisgKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwt
YXBpLmh0bWwjcmVhY3QuY2xvbmVlbGVtZW50CisgKi8KK1JlYWN0RWxlbWVudC5jbG9uZUVsZW1l
bnQgPSBmdW5jdGlvbiAoZWxlbWVudCwgY29uZmlnLCBjaGlsZHJlbikgeworICB2YXIgcHJvcE5h
bWU7CisKKyAgLy8gT3JpZ2luYWwgcHJvcHMgYXJlIGNvcGllZAorICB2YXIgcHJvcHMgPSBfYXNz
aWduKHt9LCBlbGVtZW50LnByb3BzKTsKKworICAvLyBSZXNlcnZlZCBuYW1lcyBhcmUgZXh0cmFj
dGVkCisgIHZhciBrZXkgPSBlbGVtZW50LmtleTsKKyAgdmFyIHJlZiA9IGVsZW1lbnQucmVmOwor
ICAvLyBTZWxmIGlzIHByZXNlcnZlZCBzaW5jZSB0aGUgb3duZXIgaXMgcHJlc2VydmVkLgorICB2
YXIgc2VsZiA9IGVsZW1lbnQuX3NlbGY7CisgIC8vIFNvdXJjZSBpcyBwcmVzZXJ2ZWQgc2luY2Ug
Y2xvbmVFbGVtZW50IGlzIHVubGlrZWx5IHRvIGJlIHRhcmdldGVkIGJ5IGEKKyAgLy8gdHJhbnNw
aWxlciwgYW5kIHRoZSBvcmlnaW5hbCBzb3VyY2UgaXMgcHJvYmFibHkgYSBiZXR0ZXIgaW5kaWNh
dG9yIG9mIHRoZQorICAvLyB0cnVlIG93bmVyLgorICB2YXIgc291cmNlID0gZWxlbWVudC5fc291
cmNlOworCisgIC8vIE93bmVyIHdpbGwgYmUgcHJlc2VydmVkLCB1bmxlc3MgcmVmIGlzIG92ZXJy
aWRkZW4KKyAgdmFyIG93bmVyID0gZWxlbWVudC5fb3duZXI7CisKKyAgaWYgKGNvbmZpZyAhPSBu
dWxsKSB7CisgICAgaWYgKGhhc1ZhbGlkUmVmKGNvbmZpZykpIHsKKyAgICAgIC8vIFNpbGVudGx5
IHN0ZWFsIHRoZSByZWYgZnJvbSB0aGUgcGFyZW50LgorICAgICAgcmVmID0gY29uZmlnLnJlZjsK
KyAgICAgIG93bmVyID0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVudDsKKyAgICB9CisgICAgaWYg
KGhhc1ZhbGlkS2V5KGNvbmZpZykpIHsKKyAgICAgIGtleSA9ICcnICsgY29uZmlnLmtleTsKKyAg
ICB9CisKKyAgICAvLyBSZW1haW5pbmcgcHJvcGVydGllcyBvdmVycmlkZSBleGlzdGluZyBwcm9w
cworICAgIHZhciBkZWZhdWx0UHJvcHM7CisgICAgaWYgKGVsZW1lbnQudHlwZSAmJiBlbGVtZW50
LnR5cGUuZGVmYXVsdFByb3BzKSB7CisgICAgICBkZWZhdWx0UHJvcHMgPSBlbGVtZW50LnR5cGUu
ZGVmYXVsdFByb3BzOworICAgIH0KKyAgICBmb3IgKHByb3BOYW1lIGluIGNvbmZpZykgeworICAg
ICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoY29uZmlnLCBwcm9wTmFtZSkgJiYgIVJFU0VSVkVE
X1BST1BTLmhhc093blByb3BlcnR5KHByb3BOYW1lKSkgeworICAgICAgICBpZiAoY29uZmlnW3By
b3BOYW1lXSA9PT0gdW5kZWZpbmVkICYmIGRlZmF1bHRQcm9wcyAhPT0gdW5kZWZpbmVkKSB7Cisg
ICAgICAgICAgLy8gUmVzb2x2ZSBkZWZhdWx0IHByb3BzCisgICAgICAgICAgcHJvcHNbcHJvcE5h
bWVdID0gZGVmYXVsdFByb3BzW3Byb3BOYW1lXTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICBwcm9wc1twcm9wTmFtZV0gPSBjb25maWdbcHJvcE5hbWVdOworICAgICAgICB9CisgICAgICB9
CisgICAgfQorICB9CisKKyAgLy8gQ2hpbGRyZW4gY2FuIGJlIG1vcmUgdGhhbiBvbmUgYXJndW1l
bnQsIGFuZCB0aG9zZSBhcmUgdHJhbnNmZXJyZWQgb250bworICAvLyB0aGUgbmV3bHkgYWxsb2Nh
dGVkIHByb3BzIG9iamVjdC4KKyAgdmFyIGNoaWxkcmVuTGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0
aCAtIDI7CisgIGlmIChjaGlsZHJlbkxlbmd0aCA9PT0gMSkgeworICAgIHByb3BzLmNoaWxkcmVu
ID0gY2hpbGRyZW47CisgIH0gZWxzZSBpZiAoY2hpbGRyZW5MZW5ndGggPiAxKSB7CisgICAgdmFy
IGNoaWxkQXJyYXkgPSBBcnJheShjaGlsZHJlbkxlbmd0aCk7CisgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBjaGlsZHJlbkxlbmd0aDsgaSsrKSB7CisgICAgICBjaGlsZEFycmF5W2ldID0gYXJndW1l
bnRzW2kgKyAyXTsKKyAgICB9CisgICAgcHJvcHMuY2hpbGRyZW4gPSBjaGlsZEFycmF5OworICB9
CisKKyAgcmV0dXJuIFJlYWN0RWxlbWVudChlbGVtZW50LnR5cGUsIGtleSwgcmVmLCBzZWxmLCBz
b3VyY2UsIG93bmVyLCBwcm9wcyk7Cit9OworCisvKioKKyAqIFZlcmlmaWVzIHRoZSBvYmplY3Qg
aXMgYSBSZWFjdEVsZW1lbnQuCisgKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVh
Y3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3QuaXN2YWxpZGVsZW1lbnQKKyAqIEBwYXJh
bSB7P29iamVjdH0gb2JqZWN0CisgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIGBvYmplY3Rg
IGlzIGEgdmFsaWQgY29tcG9uZW50LgorICogQGZpbmFsCisgKi8KK1JlYWN0RWxlbWVudC5pc1Zh
bGlkRWxlbWVudCA9IGZ1bmN0aW9uIChvYmplY3QpIHsKKyAgcmV0dXJuIHR5cGVvZiBvYmplY3Qg
PT09ICdvYmplY3QnICYmIG9iamVjdCAhPT0gbnVsbCAmJiBvYmplY3QuJCR0eXBlb2YgPT09IFJF
QUNUX0VMRU1FTlRfVFlQRTsKK307CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RFbGVtZW50Owor
fSx7IjExIjoxMSwiMjAiOjIwLCIyOSI6MjksIjMwIjozMCwiOCI6OH1dLDExOltmdW5jdGlvbihf
ZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCwg
RmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3Vy
Y2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4g
dGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNl
IHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIAor
ICovCisKKyd1c2Ugc3RyaWN0JzsKKworLy8gVGhlIFN5bWJvbCB1c2VkIHRvIHRhZyB0aGUgUmVh
Y3RFbGVtZW50IHR5cGUuIElmIHRoZXJlIGlzIG5vIG5hdGl2ZSBTeW1ib2wKKy8vIG5vciBwb2x5
ZmlsbCwgdGhlbiBhIHBsYWluIG51bWJlciBpcyB1c2VkIGZvciBwZXJmb3JtYW5jZS4KKwordmFy
IFJFQUNUX0VMRU1FTlRfVFlQRSA9IHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgU3lt
Ym9sWydmb3InXSAmJiBTeW1ib2xbJ2ZvciddKCdyZWFjdC5lbGVtZW50JykgfHwgMHhlYWM3Owor
Cittb2R1bGUuZXhwb3J0cyA9IFJFQUNUX0VMRU1FTlRfVFlQRTsKK30se31dLDEyOltmdW5jdGlv
bihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTQtcHJlc2Vu
dCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBz
b3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQg
aW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291
cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJl
IGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAq
LworCisvKioKKyAqIFJlYWN0RWxlbWVudFZhbGlkYXRvciBwcm92aWRlcyBhIHdyYXBwZXIgYXJv
dW5kIGEgZWxlbWVudCBmYWN0b3J5CisgKiB3aGljaCB2YWxpZGF0ZXMgdGhlIHByb3BzIHBhc3Nl
ZCB0byB0aGUgZWxlbWVudC4gVGhpcyBpcyBpbnRlbmRlZCB0byBiZQorICogdXNlZCBvbmx5IGlu
IERFViBhbmQgY291bGQgYmUgcmVwbGFjZWQgYnkgYSBzdGF0aWMgdHlwZSBjaGVja2VyIGZvciBs
YW5ndWFnZXMKKyAqIHRoYXQgc3VwcG9ydCBpdC4KKyAqLworCisndXNlIHN0cmljdCc7CisKK3Zh
ciBSZWFjdEN1cnJlbnRPd25lciA9IF9kZXJlcV8oOCk7Cit2YXIgUmVhY3RDb21wb25lbnRUcmVl
SG9vayA9IF9kZXJlcV8oNyk7Cit2YXIgUmVhY3RFbGVtZW50ID0gX2RlcmVxXygxMCk7CisKK3Zh
ciBjaGVja1JlYWN0VHlwZVNwZWMgPSBfZGVyZXFfKDIxKTsKKwordmFyIGNhbkRlZmluZVByb3Bl
cnR5ID0gX2RlcmVxXygyMCk7Cit2YXIgZ2V0SXRlcmF0b3JGbiA9IF9kZXJlcV8oMjIpOwordmFy
IHdhcm5pbmcgPSBfZGVyZXFfKDI5KTsKKworZnVuY3Rpb24gZ2V0RGVjbGFyYXRpb25FcnJvckFk
ZGVuZHVtKCkgeworICBpZiAoUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCkgeworICAgIHZhciBu
YW1lID0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVudC5nZXROYW1lKCk7CisgICAgaWYgKG5hbWUp
IHsKKyAgICAgIHJldHVybiAnIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mIGAnICsgbmFtZSAr
ICdgLic7CisgICAgfQorICB9CisgIHJldHVybiAnJzsKK30KKworLyoqCisgKiBXYXJuIGlmIHRo
ZXJlJ3Mgbm8ga2V5IGV4cGxpY2l0bHkgc2V0IG9uIGR5bmFtaWMgYXJyYXlzIG9mIGNoaWxkcmVu
IG9yCisgKiBvYmplY3Qga2V5cyBhcmUgbm90IHZhbGlkLiBUaGlzIGFsbG93cyB1cyB0byBrZWVw
IHRyYWNrIG9mIGNoaWxkcmVuIGJldHdlZW4KKyAqIHVwZGF0ZXMuCisgKi8KK3ZhciBvd25lckhh
c0tleVVzZVdhcm5pbmcgPSB7fTsKKworZnVuY3Rpb24gZ2V0Q3VycmVudENvbXBvbmVudEVycm9y
SW5mbyhwYXJlbnRUeXBlKSB7CisgIHZhciBpbmZvID0gZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVu
ZHVtKCk7CisKKyAgaWYgKCFpbmZvKSB7CisgICAgdmFyIHBhcmVudE5hbWUgPSB0eXBlb2YgcGFy
ZW50VHlwZSA9PT0gJ3N0cmluZycgPyBwYXJlbnRUeXBlIDogcGFyZW50VHlwZS5kaXNwbGF5TmFt
ZSB8fCBwYXJlbnRUeXBlLm5hbWU7CisgICAgaWYgKHBhcmVudE5hbWUpIHsKKyAgICAgIGluZm8g
PSAnIENoZWNrIHRoZSB0b3AtbGV2ZWwgcmVuZGVyIGNhbGwgdXNpbmcgPCcgKyBwYXJlbnROYW1l
ICsgJz4uJzsKKyAgICB9CisgIH0KKyAgcmV0dXJuIGluZm87Cit9CisKKy8qKgorICogV2FybiBp
ZiB0aGUgZWxlbWVudCBkb2Vzbid0IGhhdmUgYW4gZXhwbGljaXQga2V5IGFzc2lnbmVkIHRvIGl0
LgorICogVGhpcyBlbGVtZW50IGlzIGluIGFuIGFycmF5LiBUaGUgYXJyYXkgY291bGQgZ3JvdyBh
bmQgc2hyaW5rIG9yIGJlCisgKiByZW9yZGVyZWQuIEFsbCBjaGlsZHJlbiB0aGF0IGhhdmVuJ3Qg
YWxyZWFkeSBiZWVuIHZhbGlkYXRlZCBhcmUgcmVxdWlyZWQgdG8KKyAqIGhhdmUgYSAia2V5IiBw
cm9wZXJ0eSBhc3NpZ25lZCB0byBpdC4gRXJyb3Igc3RhdHVzZXMgYXJlIGNhY2hlZCBzbyBhIHdh
cm5pbmcKKyAqIHdpbGwgb25seSBiZSBzaG93biBvbmNlLgorICoKKyAqIEBpbnRlcm5hbAorICog
QHBhcmFtIHtSZWFjdEVsZW1lbnR9IGVsZW1lbnQgRWxlbWVudCB0aGF0IHJlcXVpcmVzIGEga2V5
LgorICogQHBhcmFtIHsqfSBwYXJlbnRUeXBlIGVsZW1lbnQncyBwYXJlbnQncyB0eXBlLgorICov
CitmdW5jdGlvbiB2YWxpZGF0ZUV4cGxpY2l0S2V5KGVsZW1lbnQsIHBhcmVudFR5cGUpIHsKKyAg
aWYgKCFlbGVtZW50Ll9zdG9yZSB8fCBlbGVtZW50Ll9zdG9yZS52YWxpZGF0ZWQgfHwgZWxlbWVu
dC5rZXkgIT0gbnVsbCkgeworICAgIHJldHVybjsKKyAgfQorICBlbGVtZW50Ll9zdG9yZS52YWxp
ZGF0ZWQgPSB0cnVlOworCisgIHZhciBtZW1vaXplciA9IG93bmVySGFzS2V5VXNlV2FybmluZy51
bmlxdWVLZXkgfHwgKG93bmVySGFzS2V5VXNlV2FybmluZy51bmlxdWVLZXkgPSB7fSk7CisKKyAg
dmFyIGN1cnJlbnRDb21wb25lbnRFcnJvckluZm8gPSBnZXRDdXJyZW50Q29tcG9uZW50RXJyb3JJ
bmZvKHBhcmVudFR5cGUpOworICBpZiAobWVtb2l6ZXJbY3VycmVudENvbXBvbmVudEVycm9ySW5m
b10pIHsKKyAgICByZXR1cm47CisgIH0KKyAgbWVtb2l6ZXJbY3VycmVudENvbXBvbmVudEVycm9y
SW5mb10gPSB0cnVlOworCisgIC8vIFVzdWFsbHkgdGhlIGN1cnJlbnQgb3duZXIgaXMgdGhlIG9m
ZmVuZGVyLCBidXQgaWYgaXQgYWNjZXB0cyBjaGlsZHJlbiBhcyBhCisgIC8vIHByb3BlcnR5LCBp
dCBtYXkgYmUgdGhlIGNyZWF0b3Igb2YgdGhlIGNoaWxkIHRoYXQncyByZXNwb25zaWJsZSBmb3IK
KyAgLy8gYXNzaWduaW5nIGl0IGEga2V5LgorICB2YXIgY2hpbGRPd25lciA9ICcnOworICBpZiAo
ZWxlbWVudCAmJiBlbGVtZW50Ll9vd25lciAmJiBlbGVtZW50Ll9vd25lciAhPT0gUmVhY3RDdXJy
ZW50T3duZXIuY3VycmVudCkgeworICAgIC8vIEdpdmUgdGhlIGNvbXBvbmVudCB0aGF0IG9yaWdp
bmFsbHkgY3JlYXRlZCB0aGlzIGNoaWxkLgorICAgIGNoaWxkT3duZXIgPSAnIEl0IHdhcyBwYXNz
ZWQgYSBjaGlsZCBmcm9tICcgKyBlbGVtZW50Ll9vd25lci5nZXROYW1lKCkgKyAnLic7CisgIH0K
KworICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnRWFj
aCBjaGlsZCBpbiBhbiBhcnJheSBvciBpdGVyYXRvciBzaG91bGQgaGF2ZSBhIHVuaXF1ZSAia2V5
IiBwcm9wLicgKyAnJXMlcyBTZWUgaHR0cHM6Ly9mYi5tZS9yZWFjdC13YXJuaW5nLWtleXMgZm9y
IG1vcmUgaW5mb3JtYXRpb24uJXMnLCBjdXJyZW50Q29tcG9uZW50RXJyb3JJbmZvLCBjaGlsZE93
bmVyLCBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldEN1cnJlbnRTdGFja0FkZGVuZHVtKGVsZW1l
bnQpKSA6IHZvaWQgMDsKK30KKworLyoqCisgKiBFbnN1cmUgdGhhdCBldmVyeSBlbGVtZW50IGVp
dGhlciBpcyBwYXNzZWQgaW4gYSBzdGF0aWMgbG9jYXRpb24sIGluIGFuCisgKiBhcnJheSB3aXRo
IGFuIGV4cGxpY2l0IGtleXMgcHJvcGVydHkgZGVmaW5lZCwgb3IgaW4gYW4gb2JqZWN0IGxpdGVy
YWwKKyAqIHdpdGggdmFsaWQga2V5IHByb3BlcnR5LgorICoKKyAqIEBpbnRlcm5hbAorICogQHBh
cmFtIHtSZWFjdE5vZGV9IG5vZGUgU3RhdGljYWxseSBwYXNzZWQgY2hpbGQgb2YgYW55IHR5cGUu
CisgKiBAcGFyYW0geyp9IHBhcmVudFR5cGUgbm9kZSdzIHBhcmVudCdzIHR5cGUuCisgKi8KK2Z1
bmN0aW9uIHZhbGlkYXRlQ2hpbGRLZXlzKG5vZGUsIHBhcmVudFR5cGUpIHsKKyAgaWYgKHR5cGVv
ZiBub2RlICE9PSAnb2JqZWN0JykgeworICAgIHJldHVybjsKKyAgfQorICBpZiAoQXJyYXkuaXNB
cnJheShub2RlKSkgeworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZS5sZW5ndGg7IGkrKykg
eworICAgICAgdmFyIGNoaWxkID0gbm9kZVtpXTsKKyAgICAgIGlmIChSZWFjdEVsZW1lbnQuaXNW
YWxpZEVsZW1lbnQoY2hpbGQpKSB7CisgICAgICAgIHZhbGlkYXRlRXhwbGljaXRLZXkoY2hpbGQs
IHBhcmVudFR5cGUpOworICAgICAgfQorICAgIH0KKyAgfSBlbHNlIGlmIChSZWFjdEVsZW1lbnQu
aXNWYWxpZEVsZW1lbnQobm9kZSkpIHsKKyAgICAvLyBUaGlzIGVsZW1lbnQgd2FzIHBhc3NlZCBp
biBhIHZhbGlkIGxvY2F0aW9uLgorICAgIGlmIChub2RlLl9zdG9yZSkgeworICAgICAgbm9kZS5f
c3RvcmUudmFsaWRhdGVkID0gdHJ1ZTsKKyAgICB9CisgIH0gZWxzZSBpZiAobm9kZSkgeworICAg
IHZhciBpdGVyYXRvckZuID0gZ2V0SXRlcmF0b3JGbihub2RlKTsKKyAgICAvLyBFbnRyeSBpdGVy
YXRvcnMgcHJvdmlkZSBpbXBsaWNpdCBrZXlzLgorICAgIGlmIChpdGVyYXRvckZuKSB7CisgICAg
ICBpZiAoaXRlcmF0b3JGbiAhPT0gbm9kZS5lbnRyaWVzKSB7CisgICAgICAgIHZhciBpdGVyYXRv
ciA9IGl0ZXJhdG9yRm4uY2FsbChub2RlKTsKKyAgICAgICAgdmFyIHN0ZXA7CisgICAgICAgIHdo
aWxlICghKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmUpIHsKKyAgICAgICAgICBpZiAoUmVh
Y3RFbGVtZW50LmlzVmFsaWRFbGVtZW50KHN0ZXAudmFsdWUpKSB7CisgICAgICAgICAgICB2YWxp
ZGF0ZUV4cGxpY2l0S2V5KHN0ZXAudmFsdWUsIHBhcmVudFR5cGUpOworICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQorfQorCisvKioKKyAqIEdpdmVuIGFuIGVsZW1l
bnQsIHZhbGlkYXRlIHRoYXQgaXRzIHByb3BzIGZvbGxvdyB0aGUgcHJvcFR5cGVzIGRlZmluaXRp
b24sCisgKiBwcm92aWRlZCBieSB0aGUgdHlwZS4KKyAqCisgKiBAcGFyYW0ge1JlYWN0RWxlbWVu
dH0gZWxlbWVudAorICovCitmdW5jdGlvbiB2YWxpZGF0ZVByb3BUeXBlcyhlbGVtZW50KSB7Cisg
IHZhciBjb21wb25lbnRDbGFzcyA9IGVsZW1lbnQudHlwZTsKKyAgaWYgKHR5cGVvZiBjb21wb25l
bnRDbGFzcyAhPT0gJ2Z1bmN0aW9uJykgeworICAgIHJldHVybjsKKyAgfQorICB2YXIgbmFtZSA9
IGNvbXBvbmVudENsYXNzLmRpc3BsYXlOYW1lIHx8IGNvbXBvbmVudENsYXNzLm5hbWU7CisgIGlm
IChjb21wb25lbnRDbGFzcy5wcm9wVHlwZXMpIHsKKyAgICBjaGVja1JlYWN0VHlwZVNwZWMoY29t
cG9uZW50Q2xhc3MucHJvcFR5cGVzLCBlbGVtZW50LnByb3BzLCAncHJvcCcsIG5hbWUsIGVsZW1l
bnQsIG51bGwpOworICB9CisgIGlmICh0eXBlb2YgY29tcG9uZW50Q2xhc3MuZ2V0RGVmYXVsdFBy
b3BzID09PSAnZnVuY3Rpb24nKSB7CisgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24n
ID8gd2FybmluZyhjb21wb25lbnRDbGFzcy5nZXREZWZhdWx0UHJvcHMuaXNSZWFjdENsYXNzQXBw
cm92ZWQsICdnZXREZWZhdWx0UHJvcHMgaXMgb25seSB1c2VkIG9uIGNsYXNzaWMgUmVhY3QuY3Jl
YXRlQ2xhc3MgJyArICdkZWZpbml0aW9ucy4gVXNlIGEgc3RhdGljIHByb3BlcnR5IG5hbWVkIGBk
ZWZhdWx0UHJvcHNgIGluc3RlYWQuJykgOiB2b2lkIDA7CisgIH0KK30KKwordmFyIFJlYWN0RWxl
bWVudFZhbGlkYXRvciA9IHsKKworICBjcmVhdGVFbGVtZW50OiBmdW5jdGlvbiAodHlwZSwgcHJv
cHMsIGNoaWxkcmVuKSB7CisgICAgdmFyIHZhbGlkVHlwZSA9IHR5cGVvZiB0eXBlID09PSAnc3Ry
aW5nJyB8fCB0eXBlb2YgdHlwZSA9PT0gJ2Z1bmN0aW9uJzsKKyAgICAvLyBXZSB3YXJuIGluIHRo
aXMgY2FzZSBidXQgZG9uJ3QgdGhyb3cuIFdlIGV4cGVjdCB0aGUgZWxlbWVudCBjcmVhdGlvbiB0
bworICAgIC8vIHN1Y2NlZWQgYW5kIHRoZXJlIHdpbGwgbGlrZWx5IGJlIGVycm9ycyBpbiByZW5k
ZXIuCisgICAgaWYgKCF2YWxpZFR5cGUpIHsKKyAgICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9k
dWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdSZWFjdC5jcmVhdGVFbGVtZW50OiB0eXBlIHNob3Vs
ZCBub3QgYmUgbnVsbCwgdW5kZWZpbmVkLCBib29sZWFuLCBvciAnICsgJ251bWJlci4gSXQgc2hv
dWxkIGJlIGEgc3RyaW5nIChmb3IgRE9NIGVsZW1lbnRzKSBvciBhIFJlYWN0Q2xhc3MgJyArICco
Zm9yIGNvbXBvc2l0ZSBjb21wb25lbnRzKS4lcycsIGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1
bSgpKSA6IHZvaWQgMDsKKyAgICB9CisKKyAgICB2YXIgZWxlbWVudCA9IFJlYWN0RWxlbWVudC5j
cmVhdGVFbGVtZW50LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CisKKyAgICAvLyBUaGUgcmVzdWx0
IGNhbiBiZSBudWxsaXNoIGlmIGEgbW9jayBvciBhIGN1c3RvbSBmdW5jdGlvbiBpcyB1c2VkLgor
ICAgIC8vIFRPRE86IERyb3AgdGhpcyB3aGVuIHRoZXNlIGFyZSBubyBsb25nZXIgYWxsb3dlZCBh
cyB0aGUgdHlwZSBhcmd1bWVudC4KKyAgICBpZiAoZWxlbWVudCA9PSBudWxsKSB7CisgICAgICBy
ZXR1cm4gZWxlbWVudDsKKyAgICB9CisKKyAgICAvLyBTa2lwIGtleSB3YXJuaW5nIGlmIHRoZSB0
eXBlIGlzbid0IHZhbGlkIHNpbmNlIG91ciBrZXkgdmFsaWRhdGlvbiBsb2dpYworICAgIC8vIGRv
ZXNuJ3QgZXhwZWN0IGEgbm9uLXN0cmluZy9mdW5jdGlvbiB0eXBlIGFuZCBjYW4gdGhyb3cgY29u
ZnVzaW5nIGVycm9ycy4KKyAgICAvLyBXZSBkb24ndCB3YW50IGV4Y2VwdGlvbiBiZWhhdmlvciB0
byBkaWZmZXIgYmV0d2VlbiBkZXYgYW5kIHByb2QuCisgICAgLy8gKFJlbmRlcmluZyB3aWxsIHRo
cm93IHdpdGggYSBoZWxwZnVsIG1lc3NhZ2UgYW5kIGFzIHNvb24gYXMgdGhlIHR5cGUgaXMKKyAg
ICAvLyBmaXhlZCwgdGhlIGtleSB3YXJuaW5ncyB3aWxsIGFwcGVhci4pCisgICAgaWYgKHZhbGlk
VHlwZSkgeworICAgICAgZm9yICh2YXIgaSA9IDI7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKysp
IHsKKyAgICAgICAgdmFsaWRhdGVDaGlsZEtleXMoYXJndW1lbnRzW2ldLCB0eXBlKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICB2YWxpZGF0ZVByb3BUeXBlcyhlbGVtZW50KTsKKworICAgIHJldHVy
biBlbGVtZW50OworICB9LAorCisgIGNyZWF0ZUZhY3Rvcnk6IGZ1bmN0aW9uICh0eXBlKSB7Cisg
ICAgdmFyIHZhbGlkYXRlZEZhY3RvcnkgPSBSZWFjdEVsZW1lbnRWYWxpZGF0b3IuY3JlYXRlRWxl
bWVudC5iaW5kKG51bGwsIHR5cGUpOworICAgIC8vIExlZ2FjeSBob29rIFRPRE86IFdhcm4gaWYg
dGhpcyBpcyBhY2Nlc3NlZAorICAgIHZhbGlkYXRlZEZhY3RvcnkudHlwZSA9IHR5cGU7CisKKyAg
ICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICBpZiAoY2FuRGVm
aW5lUHJvcGVydHkpIHsKKyAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHZhbGlkYXRlZEZh
Y3RvcnksICd0eXBlJywgeworICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLAorICAgICAgICAg
IGdldDogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1
Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ0ZhY3RvcnkudHlwZSBpcyBkZXByZWNhdGVkLiBBY2Nl
c3MgdGhlIGNsYXNzIGRpcmVjdGx5ICcgKyAnYmVmb3JlIHBhc3NpbmcgaXQgdG8gY3JlYXRlRmFj
dG9yeS4nKSA6IHZvaWQgMDsKKyAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlz
LCAndHlwZScsIHsKKyAgICAgICAgICAgICAgdmFsdWU6IHR5cGUKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgcmV0dXJuIHR5cGU7CisgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICByZXR1cm4gdmFsaWRhdGVkRmFjdG9yeTsKKyAgfSwKKworICBjbG9u
ZUVsZW1lbnQ6IGZ1bmN0aW9uIChlbGVtZW50LCBwcm9wcywgY2hpbGRyZW4pIHsKKyAgICB2YXIg
bmV3RWxlbWVudCA9IFJlYWN0RWxlbWVudC5jbG9uZUVsZW1lbnQuYXBwbHkodGhpcywgYXJndW1l
bnRzKTsKKyAgICBmb3IgKHZhciBpID0gMjsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFsaWRhdGVDaGlsZEtleXMoYXJndW1lbnRzW2ldLCBuZXdFbGVtZW50LnR5cGUpOwor
ICAgIH0KKyAgICB2YWxpZGF0ZVByb3BUeXBlcyhuZXdFbGVtZW50KTsKKyAgICByZXR1cm4gbmV3
RWxlbWVudDsKKyAgfQorCit9OworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0RWxlbWVudFZhbGlk
YXRvcjsKK30seyIxMCI6MTAsIjIwIjoyMCwiMjEiOjIxLCIyMiI6MjIsIjI5IjoyOSwiNyI6Nywi
OCI6OH1dLDEzOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29w
eXJpZ2h0IDIwMTUtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0
eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciB3YXJuaW5nID0gX2Rl
cmVxXygyOSk7CisKK2Z1bmN0aW9uIHdhcm5Ob29wKHB1YmxpY0luc3RhbmNlLCBjYWxsZXJOYW1l
KSB7CisgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICB2YXIgY29u
c3RydWN0b3IgPSBwdWJsaWNJbnN0YW5jZS5jb25zdHJ1Y3RvcjsKKyAgICAiZGV2ZWxvcG1lbnQi
ICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnJXMoLi4uKTogQ2FuIG9ubHkgdXBk
YXRlIGEgbW91bnRlZCBvciBtb3VudGluZyBjb21wb25lbnQuICcgKyAnVGhpcyB1c3VhbGx5IG1l
YW5zIHlvdSBjYWxsZWQgJXMoKSBvbiBhbiB1bm1vdW50ZWQgY29tcG9uZW50LiAnICsgJ1RoaXMg
aXMgYSBuby1vcC4gUGxlYXNlIGNoZWNrIHRoZSBjb2RlIGZvciB0aGUgJXMgY29tcG9uZW50Lics
IGNhbGxlck5hbWUsIGNhbGxlck5hbWUsIGNvbnN0cnVjdG9yICYmIChjb25zdHJ1Y3Rvci5kaXNw
bGF5TmFtZSB8fCBjb25zdHJ1Y3Rvci5uYW1lKSB8fCAnUmVhY3RDbGFzcycpIDogdm9pZCAwOwor
ICB9Cit9CisKKy8qKgorICogVGhpcyBpcyB0aGUgYWJzdHJhY3QgQVBJIGZvciBhbiB1cGRhdGUg
cXVldWUuCisgKi8KK3ZhciBSZWFjdE5vb3BVcGRhdGVRdWV1ZSA9IHsKKworICAvKioKKyAgICog
Q2hlY2tzIHdoZXRoZXIgb3Igbm90IHRoaXMgY29tcG9zaXRlIGNvbXBvbmVudCBpcyBtb3VudGVk
LgorICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB3
ZSB3YW50IHRvIHRlc3QuCisgICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgbW91bnRlZCwg
ZmFsc2Ugb3RoZXJ3aXNlLgorICAgKiBAcHJvdGVjdGVkCisgICAqIEBmaW5hbAorICAgKi8KKyAg
aXNNb3VudGVkOiBmdW5jdGlvbiAocHVibGljSW5zdGFuY2UpIHsKKyAgICByZXR1cm4gZmFsc2U7
CisgIH0sCisKKyAgLyoqCisgICAqIEVucXVldWUgYSBjYWxsYmFjayB0aGF0IHdpbGwgYmUgZXhl
Y3V0ZWQgYWZ0ZXIgYWxsIHRoZSBwZW5kaW5nIHVwZGF0ZXMKKyAgICogaGF2ZSBwcm9jZXNzZWQu
CisgICAqCisgICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3Rh
bmNlIHRvIHVzZSBhcyBgdGhpc2AgY29udGV4dC4KKyAgICogQHBhcmFtIHs/ZnVuY3Rpb259IGNh
bGxiYWNrIENhbGxlZCBhZnRlciBzdGF0ZSBpcyB1cGRhdGVkLgorICAgKiBAaW50ZXJuYWwKKyAg
ICovCisgIGVucXVldWVDYWxsYmFjazogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNlLCBjYWxsYmFj
aykge30sCisKKyAgLyoqCisgICAqIEZvcmNlcyBhbiB1cGRhdGUuIFRoaXMgc2hvdWxkIG9ubHkg
YmUgaW52b2tlZCB3aGVuIGl0IGlzIGtub3duIHdpdGgKKyAgICogY2VydGFpbnR5IHRoYXQgd2Ug
YXJlICoqbm90KiogaW4gYSBET00gdHJhbnNhY3Rpb24uCisgICAqCisgICAqIFlvdSBtYXkgd2Fu
dCB0byBjYWxsIHRoaXMgd2hlbiB5b3Uga25vdyB0aGF0IHNvbWUgZGVlcGVyIGFzcGVjdCBvZiB0
aGUKKyAgICogY29tcG9uZW50J3Mgc3RhdGUgaGFzIGNoYW5nZWQgYnV0IGBzZXRTdGF0ZWAgd2Fz
IG5vdCBjYWxsZWQuCisgICAqCisgICAqIFRoaXMgd2lsbCBub3QgaW52b2tlIGBzaG91bGRDb21w
b25lbnRVcGRhdGVgLCBidXQgaXQgd2lsbCBpbnZva2UKKyAgICogYGNvbXBvbmVudFdpbGxVcGRh
dGVgIGFuZCBgY29tcG9uZW50RGlkVXBkYXRlYC4KKyAgICoKKyAgICogQHBhcmFtIHtSZWFjdENs
YXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdGhhdCBzaG91bGQgcmVyZW5kZXIuCisg
ICAqIEBpbnRlcm5hbAorICAgKi8KKyAgZW5xdWV1ZUZvcmNlVXBkYXRlOiBmdW5jdGlvbiAocHVi
bGljSW5zdGFuY2UpIHsKKyAgICB3YXJuTm9vcChwdWJsaWNJbnN0YW5jZSwgJ2ZvcmNlVXBkYXRl
Jyk7CisgIH0sCisKKyAgLyoqCisgICAqIFJlcGxhY2VzIGFsbCBvZiB0aGUgc3RhdGUuIEFsd2F5
cyB1c2UgdGhpcyBvciBgc2V0U3RhdGVgIHRvIG11dGF0ZSBzdGF0ZS4KKyAgICogWW91IHNob3Vs
ZCB0cmVhdCBgdGhpcy5zdGF0ZWAgYXMgaW1tdXRhYmxlLgorICAgKgorICAgKiBUaGVyZSBpcyBu
byBndWFyYW50ZWUgdGhhdCBgdGhpcy5zdGF0ZWAgd2lsbCBiZSBpbW1lZGlhdGVseSB1cGRhdGVk
LCBzbworICAgKiBhY2Nlc3NpbmcgYHRoaXMuc3RhdGVgIGFmdGVyIGNhbGxpbmcgdGhpcyBtZXRo
b2QgbWF5IHJldHVybiB0aGUgb2xkIHZhbHVlLgorICAgKgorICAgKiBAcGFyYW0ge1JlYWN0Q2xh
c3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0aGF0IHNob3VsZCByZXJlbmRlci4KKyAg
ICogQHBhcmFtIHtvYmplY3R9IGNvbXBsZXRlU3RhdGUgTmV4dCBzdGF0ZS4KKyAgICogQGludGVy
bmFsCisgICAqLworICBlbnF1ZXVlUmVwbGFjZVN0YXRlOiBmdW5jdGlvbiAocHVibGljSW5zdGFu
Y2UsIGNvbXBsZXRlU3RhdGUpIHsKKyAgICB3YXJuTm9vcChwdWJsaWNJbnN0YW5jZSwgJ3JlcGxh
Y2VTdGF0ZScpOworICB9LAorCisgIC8qKgorICAgKiBTZXRzIGEgc3Vic2V0IG9mIHRoZSBzdGF0
ZS4gVGhpcyBvbmx5IGV4aXN0cyBiZWNhdXNlIF9wZW5kaW5nU3RhdGUgaXMKKyAgICogaW50ZXJu
YWwuIFRoaXMgcHJvdmlkZXMgYSBtZXJnaW5nIHN0cmF0ZWd5IHRoYXQgaXMgbm90IGF2YWlsYWJs
ZSB0byBkZWVwCisgICAqIHByb3BlcnRpZXMgd2hpY2ggaXMgY29uZnVzaW5nLiBUT0RPOiBFeHBv
c2UgcGVuZGluZ1N0YXRlIG9yIGRvbid0IHVzZSBpdAorICAgKiBkdXJpbmcgdGhlIG1lcmdlLgor
ICAgKgorICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5j
ZSB0aGF0IHNob3VsZCByZXJlbmRlci4KKyAgICogQHBhcmFtIHtvYmplY3R9IHBhcnRpYWxTdGF0
ZSBOZXh0IHBhcnRpYWwgc3RhdGUgdG8gYmUgbWVyZ2VkIHdpdGggc3RhdGUuCisgICAqIEBpbnRl
cm5hbAorICAgKi8KKyAgZW5xdWV1ZVNldFN0YXRlOiBmdW5jdGlvbiAocHVibGljSW5zdGFuY2Us
IHBhcnRpYWxTdGF0ZSkgeworICAgIHdhcm5Ob29wKHB1YmxpY0luc3RhbmNlLCAnc2V0U3RhdGUn
KTsKKyAgfQorfTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdE5vb3BVcGRhdGVRdWV1ZTsKK30s
eyIyOSI6Mjl9XSwxNDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAq
IENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS4KKyAqCisgKiAKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBSZWFj
dFByb3BUeXBlTG9jYXRpb25OYW1lcyA9IHt9OworCitpZiAoImRldmVsb3BtZW50IiAhPT0gJ3By
b2R1Y3Rpb24nKSB7CisgIFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzID0geworICAgIHByb3A6
ICdwcm9wJywKKyAgICBjb250ZXh0OiAnY29udGV4dCcsCisgICAgY2hpbGRDb250ZXh0OiAnY2hp
bGQgY29udGV4dCcKKyAgfTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdFByb3BUeXBlTG9j
YXRpb25OYW1lczsKK30se31dLDE1OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsK
Ky8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRl
ciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3Jh
bnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUg
aW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBS
ZWFjdEVsZW1lbnQgPSBfZGVyZXFfKDEwKTsKK3ZhciBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1l
cyA9IF9kZXJlcV8oMTQpOwordmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gX2RlcmVxXygxNik7
CisKK3ZhciBlbXB0eUZ1bmN0aW9uID0gX2RlcmVxXygyNik7Cit2YXIgZ2V0SXRlcmF0b3JGbiA9
IF9kZXJlcV8oMjIpOwordmFyIHdhcm5pbmcgPSBfZGVyZXFfKDI5KTsKKworLyoqCisgKiBDb2xs
ZWN0aW9uIG9mIG1ldGhvZHMgdGhhdCBhbGxvdyBkZWNsYXJhdGlvbiBhbmQgdmFsaWRhdGlvbiBv
ZiBwcm9wcyB0aGF0IGFyZQorICogc3VwcGxpZWQgdG8gUmVhY3QgY29tcG9uZW50cy4gRXhhbXBs
ZSB1c2FnZToKKyAqCisgKiAgIHZhciBQcm9wcyA9IHJlcXVpcmUoJ1JlYWN0UHJvcFR5cGVzJyk7
CisgKiAgIHZhciBNeUFydGljbGUgPSBSZWFjdC5jcmVhdGVDbGFzcyh7CisgKiAgICAgcHJvcFR5
cGVzOiB7CisgKiAgICAgICAvLyBBbiBvcHRpb25hbCBzdHJpbmcgcHJvcCBuYW1lZCAiZGVzY3Jp
cHRpb24iLgorICogICAgICAgZGVzY3JpcHRpb246IFByb3BzLnN0cmluZywKKyAqCisgKiAgICAg
ICAvLyBBIHJlcXVpcmVkIGVudW0gcHJvcCBuYW1lZCAiY2F0ZWdvcnkiLgorICogICAgICAgY2F0
ZWdvcnk6IFByb3BzLm9uZU9mKFsnTmV3cycsJ1Bob3RvcyddKS5pc1JlcXVpcmVkLAorICoKKyAq
ICAgICAgIC8vIEEgcHJvcCBuYW1lZCAiZGlhbG9nIiB0aGF0IHJlcXVpcmVzIGFuIGluc3RhbmNl
IG9mIERpYWxvZy4KKyAqICAgICAgIGRpYWxvZzogUHJvcHMuaW5zdGFuY2VPZihEaWFsb2cpLmlz
UmVxdWlyZWQKKyAqICAgICB9LAorICogICAgIHJlbmRlcjogZnVuY3Rpb24oKSB7IC4uLiB9Cisg
KiAgIH0pOworICoKKyAqIEEgbW9yZSBmb3JtYWwgc3BlY2lmaWNhdGlvbiBvZiBob3cgdGhlc2Ug
bWV0aG9kcyBhcmUgdXNlZDoKKyAqCisgKiAgIHR5cGUgOj0gYXJyYXl8Ym9vbHxmdW5jfG9iamVj
dHxudW1iZXJ8c3RyaW5nfG9uZU9mKFsuLi5dKXxpbnN0YW5jZU9mKC4uLikKKyAqICAgZGVjbCA6
PSBSZWFjdFByb3BUeXBlcy57dHlwZX0oLmlzUmVxdWlyZWQpPworICoKKyAqIEVhY2ggYW5kIGV2
ZXJ5IGRlY2xhcmF0aW9uIHByb2R1Y2VzIGEgZnVuY3Rpb24gd2l0aCB0aGUgc2FtZSBzaWduYXR1
cmUuIFRoaXMKKyAqIGFsbG93cyB0aGUgY3JlYXRpb24gb2YgY3VzdG9tIHZhbGlkYXRpb24gZnVu
Y3Rpb25zLiBGb3IgZXhhbXBsZToKKyAqCisgKiAgdmFyIE15TGluayA9IFJlYWN0LmNyZWF0ZUNs
YXNzKHsKKyAqICAgIHByb3BUeXBlczogeworICogICAgICAvLyBBbiBvcHRpb25hbCBzdHJpbmcg
b3IgVVJJIHByb3AgbmFtZWQgImhyZWYiLgorICogICAgICBocmVmOiBmdW5jdGlvbihwcm9wcywg
cHJvcE5hbWUsIGNvbXBvbmVudE5hbWUpIHsKKyAqICAgICAgICB2YXIgcHJvcFZhbHVlID0gcHJv
cHNbcHJvcE5hbWVdOworICogICAgICAgIGlmIChwcm9wVmFsdWUgIT0gbnVsbCAmJiB0eXBlb2Yg
cHJvcFZhbHVlICE9PSAnc3RyaW5nJyAmJgorICogICAgICAgICAgICAhKHByb3BWYWx1ZSBpbnN0
YW5jZW9mIFVSSSkpIHsKKyAqICAgICAgICAgIHJldHVybiBuZXcgRXJyb3IoCisgKiAgICAgICAg
ICAgICdFeHBlY3RlZCBhIHN0cmluZyBvciBhbiBVUkkgZm9yICcgKyBwcm9wTmFtZSArICcgaW4g
JyArCisgKiAgICAgICAgICAgIGNvbXBvbmVudE5hbWUKKyAqICAgICAgICAgICk7CisgKiAgICAg
ICAgfQorICogICAgICB9CisgKiAgICB9LAorICogICAgcmVuZGVyOiBmdW5jdGlvbigpIHsuLi59
CisgKiAgfSk7CisgKgorICogQGludGVybmFsCisgKi8KKwordmFyIEFOT05ZTU9VUyA9ICc8PGFu
b255bW91cz4+JzsKKwordmFyIFJlYWN0UHJvcFR5cGVzID0geworICBhcnJheTogY3JlYXRlUHJp
bWl0aXZlVHlwZUNoZWNrZXIoJ2FycmF5JyksCisgIGJvb2w6IGNyZWF0ZVByaW1pdGl2ZVR5cGVD
aGVja2VyKCdib29sZWFuJyksCisgIGZ1bmM6IGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKCdm
dW5jdGlvbicpLAorICBudW1iZXI6IGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKCdudW1iZXIn
KSwKKyAgb2JqZWN0OiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcignb2JqZWN0JyksCisgIHN0
cmluZzogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ3N0cmluZycpLAorICBzeW1ib2w6IGNy
ZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKCdzeW1ib2wnKSwKKworICBhbnk6IGNyZWF0ZUFueVR5
cGVDaGVja2VyKCksCisgIGFycmF5T2Y6IGNyZWF0ZUFycmF5T2ZUeXBlQ2hlY2tlciwKKyAgZWxl
bWVudDogY3JlYXRlRWxlbWVudFR5cGVDaGVja2VyKCksCisgIGluc3RhbmNlT2Y6IGNyZWF0ZUlu
c3RhbmNlVHlwZUNoZWNrZXIsCisgIG5vZGU6IGNyZWF0ZU5vZGVDaGVja2VyKCksCisgIG9iamVj
dE9mOiBjcmVhdGVPYmplY3RPZlR5cGVDaGVja2VyLAorICBvbmVPZjogY3JlYXRlRW51bVR5cGVD
aGVja2VyLAorICBvbmVPZlR5cGU6IGNyZWF0ZVVuaW9uVHlwZUNoZWNrZXIsCisgIHNoYXBlOiBj
cmVhdGVTaGFwZVR5cGVDaGVja2VyCit9OworCisvKioKKyAqIGlubGluZWQgT2JqZWN0LmlzIHBv
bHlmaWxsIHRvIGF2b2lkIHJlcXVpcmluZyBjb25zdW1lcnMgc2hpcCB0aGVpciBvd24KKyAqIGh0
dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVm
ZXJlbmNlL0dsb2JhbF9PYmplY3RzL09iamVjdC9pcworICovCisvKmVzbGludC1kaXNhYmxlIG5v
LXNlbGYtY29tcGFyZSovCitmdW5jdGlvbiBpcyh4LCB5KSB7CisgIC8vIFNhbWVWYWx1ZSBhbGdv
cml0aG0KKyAgaWYgKHggPT09IHkpIHsKKyAgICAvLyBTdGVwcyAxLTUsIDctMTAKKyAgICAvLyBT
dGVwcyA2LmItNi5lOiArMCAhPSAtMAorICAgIHJldHVybiB4ICE9PSAwIHx8IDEgLyB4ID09PSAx
IC8geTsKKyAgfSBlbHNlIHsKKyAgICAvLyBTdGVwIDYuYTogTmFOID09IE5hTgorICAgIHJldHVy
biB4ICE9PSB4ICYmIHkgIT09IHk7CisgIH0KK30KKy8qZXNsaW50LWVuYWJsZSBuby1zZWxmLWNv
bXBhcmUqLworCisvKioKKyAqIFdlIHVzZSBhbiBFcnJvci1saWtlIG9iamVjdCBmb3IgYmFja3dh
cmQgY29tcGF0aWJpbGl0eSBhcyBwZW9wbGUgbWF5IGNhbGwKKyAqIFByb3BUeXBlcyBkaXJlY3Rs
eSBhbmQgaW5zcGVjdCB0aGVpciBvdXRwdXQuIEhvd2V2ZXIgd2UgZG9uJ3QgdXNlIHJlYWwKKyAq
IEVycm9ycyBhbnltb3JlLiBXZSBkb24ndCBpbnNwZWN0IHRoZWlyIHN0YWNrIGFueXdheSwgYW5k
IGNyZWF0aW5nIHRoZW0KKyAqIGlzIHByb2hpYml0aXZlbHkgZXhwZW5zaXZlIGlmIHRoZXkgYXJl
IGNyZWF0ZWQgdG9vIG9mdGVuLCBzdWNoIGFzIHdoYXQKKyAqIGhhcHBlbnMgaW4gb25lT2ZUeXBl
KCkgZm9yIGFueSB0eXBlIGJlZm9yZSB0aGUgb25lIHRoYXQgbWF0Y2hlZC4KKyAqLworZnVuY3Rp
b24gUHJvcFR5cGVFcnJvcihtZXNzYWdlKSB7CisgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7Cisg
IHRoaXMuc3RhY2sgPSAnJzsKK30KKy8vIE1ha2UgYGluc3RhbmNlb2YgRXJyb3JgIHN0aWxsIHdv
cmsgZm9yIHJldHVybmVkIGVycm9ycy4KK1Byb3BUeXBlRXJyb3IucHJvdG90eXBlID0gRXJyb3Iu
cHJvdG90eXBlOworCitmdW5jdGlvbiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0
ZSkgeworICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgdmFyIG1h
bnVhbFByb3BUeXBlQ2FsbENhY2hlID0ge307CisgIH0KKyAgZnVuY3Rpb24gY2hlY2tUeXBlKGlz
UmVxdWlyZWQsIHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BG
dWxsTmFtZSwgc2VjcmV0KSB7CisgICAgY29tcG9uZW50TmFtZSA9IGNvbXBvbmVudE5hbWUgfHwg
QU5PTllNT1VTOworICAgIHByb3BGdWxsTmFtZSA9IHByb3BGdWxsTmFtZSB8fCBwcm9wTmFtZTsK
KyAgICBpZiAoImRldmVsb3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICBpZiAoc2Vj
cmV0ICE9PSBSZWFjdFByb3BUeXBlc1NlY3JldCAmJiB0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVm
aW5lZCcpIHsKKyAgICAgICAgdmFyIGNhY2hlS2V5ID0gY29tcG9uZW50TmFtZSArICc6JyArIHBy
b3BOYW1lOworICAgICAgICBpZiAoIW1hbnVhbFByb3BUeXBlQ2FsbENhY2hlW2NhY2hlS2V5XSkg
eworICAgICAgICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFs
c2UsICdZb3UgYXJlIG1hbnVhbGx5IGNhbGxpbmcgYSBSZWFjdC5Qcm9wVHlwZXMgdmFsaWRhdGlv
biAnICsgJ2Z1bmN0aW9uIGZvciB0aGUgYCVzYCBwcm9wIG9uIGAlc2AuIFRoaXMgaXMgZGVwcmVj
YXRlZCAnICsgJ2FuZCB3aWxsIG5vdCB3b3JrIGluIHByb2R1Y3Rpb24gd2l0aCB0aGUgbmV4dCBt
YWpvciB2ZXJzaW9uLiAnICsgJ1lvdSBtYXkgYmUgc2VlaW5nIHRoaXMgd2FybmluZyBkdWUgdG8g
YSB0aGlyZC1wYXJ0eSBQcm9wVHlwZXMgJyArICdsaWJyYXJ5LiBTZWUgaHR0cHM6Ly9mYi5tZS9y
ZWFjdC13YXJuaW5nLWRvbnQtY2FsbC1wcm9wdHlwZXMgJyArICdmb3IgZGV0YWlscy4nLCBwcm9w
RnVsbE5hbWUsIGNvbXBvbmVudE5hbWUpIDogdm9pZCAwOworICAgICAgICAgIG1hbnVhbFByb3BU
eXBlQ2FsbENhY2hlW2NhY2hlS2V5XSA9IHRydWU7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9
CisgICAgaWYgKHByb3BzW3Byb3BOYW1lXSA9PSBudWxsKSB7CisgICAgICB2YXIgbG9jYXRpb25O
YW1lID0gUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXNbbG9jYXRpb25dOworICAgICAgaWYgKGlz
UmVxdWlyZWQpIHsKKyAgICAgICAgaWYgKHByb3BzW3Byb3BOYW1lXSA9PT0gbnVsbCkgeworICAg
ICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignVGhlICcgKyBsb2NhdGlvbk5hbWUgKyAn
IGAnICsgcHJvcEZ1bGxOYW1lICsgJ2AgaXMgbWFya2VkIGFzIHJlcXVpcmVkICcgKyAoJ2luIGAn
ICsgY29tcG9uZW50TmFtZSArICdgLCBidXQgaXRzIHZhbHVlIGlzIGBudWxsYC4nKSk7CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdUaGUgJyArIGxvY2F0aW9u
TmFtZSArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBpcyBtYXJrZWQgYXMgcmVxdWlyZWQgaW4g
JyArICgnYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGJ1dCBpdHMgdmFsdWUgaXMgYHVuZGVmaW5l
ZGAuJykpOworICAgICAgfQorICAgICAgcmV0dXJuIG51bGw7CisgICAgfSBlbHNlIHsKKyAgICAg
IHJldHVybiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9u
LCBwcm9wRnVsbE5hbWUpOworICAgIH0KKyAgfQorCisgIHZhciBjaGFpbmVkQ2hlY2tUeXBlID0g
Y2hlY2tUeXBlLmJpbmQobnVsbCwgZmFsc2UpOworICBjaGFpbmVkQ2hlY2tUeXBlLmlzUmVxdWly
ZWQgPSBjaGVja1R5cGUuYmluZChudWxsLCB0cnVlKTsKKworICByZXR1cm4gY2hhaW5lZENoZWNr
VHlwZTsKK30KKworZnVuY3Rpb24gY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoZXhwZWN0ZWRU
eXBlKSB7CisgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFt
ZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwgc2VjcmV0KSB7CisgICAgdmFyIHByb3BWYWx1ZSA9
IHByb3BzW3Byb3BOYW1lXTsKKyAgICB2YXIgcHJvcFR5cGUgPSBnZXRQcm9wVHlwZShwcm9wVmFs
dWUpOworICAgIGlmIChwcm9wVHlwZSAhPT0gZXhwZWN0ZWRUeXBlKSB7CisgICAgICB2YXIgbG9j
YXRpb25OYW1lID0gUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXNbbG9jYXRpb25dOworICAgICAg
Ly8gYHByb3BWYWx1ZWAgYmVpbmcgaW5zdGFuY2Ugb2YsIHNheSwgZGF0ZS9yZWdleHAsIHBhc3Mg
dGhlICdvYmplY3QnCisgICAgICAvLyBjaGVjaywgYnV0IHdlIGNhbiBvZmZlciBhIG1vcmUgcHJl
Y2lzZSBlcnJvciBtZXNzYWdlIGhlcmUgcmF0aGVyIHRoYW4KKyAgICAgIC8vICdvZiB0eXBlIGBv
YmplY3RgJy4KKyAgICAgIHZhciBwcmVjaXNlVHlwZSA9IGdldFByZWNpc2VUeXBlKHByb3BWYWx1
ZSk7CisKKyAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRp
b25OYW1lICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIHR5cGUgJyArICgnYCcgKyBwcmVj
aXNlVHlwZSArICdgIHN1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3Rl
ZCAnKSArICgnYCcgKyBleHBlY3RlZFR5cGUgKyAnYC4nKSk7CisgICAgfQorICAgIHJldHVybiBu
dWxsOworICB9CisgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7
Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUFueVR5cGVDaGVja2VyKCkgeworICByZXR1cm4gY3JlYXRl
Q2hhaW5hYmxlVHlwZUNoZWNrZXIoZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJucyhudWxsKSk7Cit9
CisKK2Z1bmN0aW9uIGNyZWF0ZUFycmF5T2ZUeXBlQ2hlY2tlcih0eXBlQ2hlY2tlcikgeworICBm
dW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9u
LCBwcm9wRnVsbE5hbWUpIHsKKyAgICBpZiAodHlwZW9mIHR5cGVDaGVja2VyICE9PSAnZnVuY3Rp
b24nKSB7CisgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ1Byb3BlcnR5IGAnICsgcHJv
cEZ1bGxOYW1lICsgJ2Agb2YgY29tcG9uZW50IGAnICsgY29tcG9uZW50TmFtZSArICdgIGhhcyBp
bnZhbGlkIFByb3BUeXBlIG5vdGF0aW9uIGluc2lkZSBhcnJheU9mLicpOworICAgIH0KKyAgICB2
YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdOworICAgIGlmICghQXJyYXkuaXNBcnJheShw
cm9wVmFsdWUpKSB7CisgICAgICB2YXIgbG9jYXRpb25OYW1lID0gUmVhY3RQcm9wVHlwZUxvY2F0
aW9uTmFtZXNbbG9jYXRpb25dOworICAgICAgdmFyIHByb3BUeXBlID0gZ2V0UHJvcFR5cGUocHJv
cFZhbHVlKTsKKyAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9j
YXRpb25OYW1lICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIHR5cGUgJyArICgnYCcgKyBw
cm9wVHlwZSArICdgIHN1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3Rl
ZCBhbiBhcnJheS4nKSk7CisgICAgfQorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcFZhbHVl
Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgZXJyb3IgPSB0eXBlQ2hlY2tlcihwcm9wVmFsdWUs
IGksIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUgKyAnWycgKyBpICsgJ10n
LCBSZWFjdFByb3BUeXBlc1NlY3JldCk7CisgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJv
cikgeworICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgICB9CisgICAgfQorICAgIHJldHVybiBu
dWxsOworICB9CisgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7
Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUVsZW1lbnRUeXBlQ2hlY2tlcigpIHsKKyAgZnVuY3Rpb24g
dmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1
bGxOYW1lKSB7CisgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTsKKyAgICBpZiAo
IVJlYWN0RWxlbWVudC5pc1ZhbGlkRWxlbWVudChwcm9wVmFsdWUpKSB7CisgICAgICB2YXIgbG9j
YXRpb25OYW1lID0gUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXNbbG9jYXRpb25dOworICAgICAg
dmFyIHByb3BUeXBlID0gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKTsKKyAgICAgIHJldHVybiBuZXcg
UHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb25OYW1lICsgJyBgJyArIHByb3BGdWxs
TmFtZSArICdgIG9mIHR5cGUgJyArICgnYCcgKyBwcm9wVHlwZSArICdgIHN1cHBsaWVkIHRvIGAn
ICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBhIHNpbmdsZSBSZWFjdEVsZW1lbnQuJykp
OworICAgIH0KKyAgICByZXR1cm4gbnVsbDsKKyAgfQorICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxl
VHlwZUNoZWNrZXIodmFsaWRhdGUpOworfQorCitmdW5jdGlvbiBjcmVhdGVJbnN0YW5jZVR5cGVD
aGVja2VyKGV4cGVjdGVkQ2xhc3MpIHsKKyAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BO
YW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7CisgICAgaWYgKCEo
cHJvcHNbcHJvcE5hbWVdIGluc3RhbmNlb2YgZXhwZWN0ZWRDbGFzcykpIHsKKyAgICAgIHZhciBs
b2NhdGlvbk5hbWUgPSBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lc1tsb2NhdGlvbl07CisgICAg
ICB2YXIgZXhwZWN0ZWRDbGFzc05hbWUgPSBleHBlY3RlZENsYXNzLm5hbWUgfHwgQU5PTllNT1VT
OworICAgICAgdmFyIGFjdHVhbENsYXNzTmFtZSA9IGdldENsYXNzTmFtZShwcm9wc1twcm9wTmFt
ZV0pOworICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlv
bk5hbWUgKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdHlwZSAnICsgKCdgJyArIGFjdHVh
bENsYXNzTmFtZSArICdgIHN1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBl
Y3RlZCAnKSArICgnaW5zdGFuY2Ugb2YgYCcgKyBleHBlY3RlZENsYXNzTmFtZSArICdgLicpKTsK
KyAgICB9CisgICAgcmV0dXJuIG51bGw7CisgIH0KKyAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5
cGVDaGVja2VyKHZhbGlkYXRlKTsKK30KKworZnVuY3Rpb24gY3JlYXRlRW51bVR5cGVDaGVja2Vy
KGV4cGVjdGVkVmFsdWVzKSB7CisgIGlmICghQXJyYXkuaXNBcnJheShleHBlY3RlZFZhbHVlcykp
IHsKKyAgICAiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAn
SW52YWxpZCBhcmd1bWVudCBzdXBwbGllZCB0byBvbmVPZiwgZXhwZWN0ZWQgYW4gaW5zdGFuY2Ug
b2YgYXJyYXkuJykgOiB2b2lkIDA7CisgICAgcmV0dXJuIGVtcHR5RnVuY3Rpb24udGhhdFJldHVy
bnNOdWxsOworICB9CisKKyAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21w
b25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7CisgICAgdmFyIHByb3BWYWx1ZSA9
IHByb3BzW3Byb3BOYW1lXTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGV4cGVjdGVkVmFsdWVz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICBpZiAoaXMocHJvcFZhbHVlLCBleHBlY3RlZFZhbHVlc1tp
XSkpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxv
Y2F0aW9uTmFtZSA9IFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzW2xvY2F0aW9uXTsKKyAgICB2
YXIgdmFsdWVzU3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoZXhwZWN0ZWRWYWx1ZXMpOworICAgIHJl
dHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb25OYW1lICsgJyBgJyAr
IHByb3BGdWxsTmFtZSArICdgIG9mIHZhbHVlIGAnICsgcHJvcFZhbHVlICsgJ2AgJyArICgnc3Vw
cGxpZWQgdG8gYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkIG9uZSBvZiAnICsgdmFs
dWVzU3RyaW5nICsgJy4nKSk7CisgIH0KKyAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVj
a2VyKHZhbGlkYXRlKTsKK30KKworZnVuY3Rpb24gY3JlYXRlT2JqZWN0T2ZUeXBlQ2hlY2tlcih0
eXBlQ2hlY2tlcikgeworICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBv
bmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHsKKyAgICBpZiAodHlwZW9mIHR5cGVD
aGVja2VyICE9PSAnZnVuY3Rpb24nKSB7CisgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3Io
J1Byb3BlcnR5IGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgY29tcG9uZW50IGAnICsgY29tcG9u
ZW50TmFtZSArICdgIGhhcyBpbnZhbGlkIFByb3BUeXBlIG5vdGF0aW9uIGluc2lkZSBvYmplY3RP
Zi4nKTsKKyAgICB9CisgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTsKKyAgICB2
YXIgcHJvcFR5cGUgPSBnZXRQcm9wVHlwZShwcm9wVmFsdWUpOworICAgIGlmIChwcm9wVHlwZSAh
PT0gJ29iamVjdCcpIHsKKyAgICAgIHZhciBsb2NhdGlvbk5hbWUgPSBSZWFjdFByb3BUeXBlTG9j
YXRpb25OYW1lc1tsb2NhdGlvbl07CisgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0lu
dmFsaWQgJyArIGxvY2F0aW9uTmFtZSArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiB0eXBl
ICcgKyAoJ2AnICsgcHJvcFR5cGUgKyAnYCBzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUg
KyAnYCwgZXhwZWN0ZWQgYW4gb2JqZWN0LicpKTsKKyAgICB9CisgICAgZm9yICh2YXIga2V5IGlu
IHByb3BWYWx1ZSkgeworICAgICAgaWYgKHByb3BWYWx1ZS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7
CisgICAgICAgIHZhciBlcnJvciA9IHR5cGVDaGVja2VyKHByb3BWYWx1ZSwga2V5LCBjb21wb25l
bnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lICsgJy4nICsga2V5LCBSZWFjdFByb3BUeXBl
c1NlY3JldCk7CisgICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7CisgICAgICAg
ICAgcmV0dXJuIGVycm9yOworICAgICAgICB9CisgICAgICB9CisgICAgfQorICAgIHJldHVybiBu
dWxsOworICB9CisgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7
Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZVVuaW9uVHlwZUNoZWNrZXIoYXJyYXlPZlR5cGVDaGVja2Vy
cykgeworICBpZiAoIUFycmF5LmlzQXJyYXkoYXJyYXlPZlR5cGVDaGVja2VycykpIHsKKyAgICAi
ZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnSW52YWxpZCBh
cmd1bWVudCBzdXBwbGllZCB0byBvbmVPZlR5cGUsIGV4cGVjdGVkIGFuIGluc3RhbmNlIG9mIGFy
cmF5LicpIDogdm9pZCAwOworICAgIHJldHVybiBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zTnVs
bDsKKyAgfQorCisgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50
TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkgeworICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
YXJyYXlPZlR5cGVDaGVja2Vycy5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIGNoZWNrZXIgPSBh
cnJheU9mVHlwZUNoZWNrZXJzW2ldOworICAgICAgaWYgKGNoZWNrZXIocHJvcHMsIHByb3BOYW1l
LCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lLCBSZWFjdFByb3BUeXBlc1Nl
Y3JldCkgPT0gbnVsbCkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgbG9jYXRpb25OYW1lID0gUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXNbbG9jYXRp
b25dOworICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb25O
YW1lICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIHN1cHBsaWVkIHRvICcgKyAoJ2AnICsgY29t
cG9uZW50TmFtZSArICdgLicpKTsKKyAgfQorICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNo
ZWNrZXIodmFsaWRhdGUpOworfQorCitmdW5jdGlvbiBjcmVhdGVOb2RlQ2hlY2tlcigpIHsKKyAg
ZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlv
biwgcHJvcEZ1bGxOYW1lKSB7CisgICAgaWYgKCFpc05vZGUocHJvcHNbcHJvcE5hbWVdKSkgewor
ICAgICAgdmFyIGxvY2F0aW9uTmFtZSA9IFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzW2xvY2F0
aW9uXTsKKyAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRp
b25OYW1lICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIHN1cHBsaWVkIHRvICcgKyAoJ2AnICsg
Y29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBhIFJlYWN0Tm9kZS4nKSk7CisgICAgfQorICAg
IHJldHVybiBudWxsOworICB9CisgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2
YWxpZGF0ZSk7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZVNoYXBlVHlwZUNoZWNrZXIoc2hhcGVUeXBl
cykgeworICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUs
IGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHsKKyAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJv
cE5hbWVdOworICAgIHZhciBwcm9wVHlwZSA9IGdldFByb3BUeXBlKHByb3BWYWx1ZSk7CisgICAg
aWYgKHByb3BUeXBlICE9PSAnb2JqZWN0JykgeworICAgICAgdmFyIGxvY2F0aW9uTmFtZSA9IFJl
YWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzW2xvY2F0aW9uXTsKKyAgICAgIHJldHVybiBuZXcgUHJv
cFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb25OYW1lICsgJyBgJyArIHByb3BGdWxsTmFt
ZSArICdgIG9mIHR5cGUgYCcgKyBwcm9wVHlwZSArICdgICcgKyAoJ3N1cHBsaWVkIHRvIGAnICsg
Y29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBgb2JqZWN0YC4nKSk7CisgICAgfQorICAgIGZv
ciAodmFyIGtleSBpbiBzaGFwZVR5cGVzKSB7CisgICAgICB2YXIgY2hlY2tlciA9IHNoYXBlVHlw
ZXNba2V5XTsKKyAgICAgIGlmICghY2hlY2tlcikgeworICAgICAgICBjb250aW51ZTsKKyAgICAg
IH0KKyAgICAgIHZhciBlcnJvciA9IGNoZWNrZXIocHJvcFZhbHVlLCBrZXksIGNvbXBvbmVudE5h
bWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUgKyAnLicgKyBrZXksIFJlYWN0UHJvcFR5cGVzU2Vj
cmV0KTsKKyAgICAgIGlmIChlcnJvcikgeworICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgICB9
CisgICAgfQorICAgIHJldHVybiBudWxsOworICB9CisgIHJldHVybiBjcmVhdGVDaGFpbmFibGVU
eXBlQ2hlY2tlcih2YWxpZGF0ZSk7Cit9CisKK2Z1bmN0aW9uIGlzTm9kZShwcm9wVmFsdWUpIHsK
KyAgc3dpdGNoICh0eXBlb2YgcHJvcFZhbHVlKSB7CisgICAgY2FzZSAnbnVtYmVyJzoKKyAgICBj
YXNlICdzdHJpbmcnOgorICAgIGNhc2UgJ3VuZGVmaW5lZCc6CisgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICBjYXNlICdib29sZWFuJzoKKyAgICAgIHJldHVybiAhcHJvcFZhbHVlOworICAgIGNhc2Ug
J29iamVjdCc6CisgICAgICBpZiAoQXJyYXkuaXNBcnJheShwcm9wVmFsdWUpKSB7CisgICAgICAg
IHJldHVybiBwcm9wVmFsdWUuZXZlcnkoaXNOb2RlKTsKKyAgICAgIH0KKyAgICAgIGlmIChwcm9w
VmFsdWUgPT09IG51bGwgfHwgUmVhY3RFbGVtZW50LmlzVmFsaWRFbGVtZW50KHByb3BWYWx1ZSkp
IHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICB9CisKKyAgICAgIHZhciBpdGVyYXRvckZu
ID0gZ2V0SXRlcmF0b3JGbihwcm9wVmFsdWUpOworICAgICAgaWYgKGl0ZXJhdG9yRm4pIHsKKyAg
ICAgICAgdmFyIGl0ZXJhdG9yID0gaXRlcmF0b3JGbi5jYWxsKHByb3BWYWx1ZSk7CisgICAgICAg
IHZhciBzdGVwOworICAgICAgICBpZiAoaXRlcmF0b3JGbiAhPT0gcHJvcFZhbHVlLmVudHJpZXMp
IHsKKyAgICAgICAgICB3aGlsZSAoIShzdGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25lKSB7Cisg
ICAgICAgICAgICBpZiAoIWlzTm9kZShzdGVwLnZhbHVlKSkgeworICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgIC8vIEl0ZXJhdG9yIHdpbGwgcHJvdmlkZSBlbnRyeSBbayx2XSB0dXBsZXMgcmF0
aGVyIHRoYW4gdmFsdWVzLgorICAgICAgICAgIHdoaWxlICghKHN0ZXAgPSBpdGVyYXRvci5uZXh0
KCkpLmRvbmUpIHsKKyAgICAgICAgICAgIHZhciBlbnRyeSA9IHN0ZXAudmFsdWU7CisgICAgICAg
ICAgICBpZiAoZW50cnkpIHsKKyAgICAgICAgICAgICAgaWYgKCFpc05vZGUoZW50cnlbMV0pKSB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9IGVsc2UgeworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICB9CisKKyAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6
CisgICAgICByZXR1cm4gZmFsc2U7CisgIH0KK30KKworZnVuY3Rpb24gaXNTeW1ib2wocHJvcFR5
cGUsIHByb3BWYWx1ZSkgeworICAvLyBOYXRpdmUgU3ltYm9sLgorICBpZiAocHJvcFR5cGUgPT09
ICdzeW1ib2wnKSB7CisgICAgcmV0dXJuIHRydWU7CisgIH0KKworICAvLyAxOS40LjMuNSBTeW1i
b2wucHJvdG90eXBlW0BAdG9TdHJpbmdUYWddID09PSAnU3ltYm9sJworICBpZiAocHJvcFZhbHVl
WydAQHRvU3RyaW5nVGFnJ10gPT09ICdTeW1ib2wnKSB7CisgICAgcmV0dXJuIHRydWU7CisgIH0K
KworICAvLyBGYWxsYmFjayBmb3Igbm9uLXNwZWMgY29tcGxpYW50IFN5bWJvbHMgd2hpY2ggYXJl
IHBvbHlmaWxsZWQuCisgIGlmICh0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmIHByb3BW
YWx1ZSBpbnN0YW5jZW9mIFN5bWJvbCkgeworICAgIHJldHVybiB0cnVlOworICB9CisKKyAgcmV0
dXJuIGZhbHNlOworfQorCisvLyBFcXVpdmFsZW50IG9mIGB0eXBlb2ZgIGJ1dCB3aXRoIHNwZWNp
YWwgaGFuZGxpbmcgZm9yIGFycmF5IGFuZCByZWdleHAuCitmdW5jdGlvbiBnZXRQcm9wVHlwZShw
cm9wVmFsdWUpIHsKKyAgdmFyIHByb3BUeXBlID0gdHlwZW9mIHByb3BWYWx1ZTsKKyAgaWYgKEFy
cmF5LmlzQXJyYXkocHJvcFZhbHVlKSkgeworICAgIHJldHVybiAnYXJyYXknOworICB9CisgIGlm
IChwcm9wVmFsdWUgaW5zdGFuY2VvZiBSZWdFeHApIHsKKyAgICAvLyBPbGQgd2Via2l0cyAoYXQg
bGVhc3QgdW50aWwgQW5kcm9pZCA0LjApIHJldHVybiAnZnVuY3Rpb24nIHJhdGhlciB0aGFuCisg
ICAgLy8gJ29iamVjdCcgZm9yIHR5cGVvZiBhIFJlZ0V4cC4gV2UnbGwgbm9ybWFsaXplIHRoaXMg
aGVyZSBzbyB0aGF0IC9ibGEvCisgICAgLy8gcGFzc2VzIFByb3BUeXBlcy5vYmplY3QuCisgICAg
cmV0dXJuICdvYmplY3QnOworICB9CisgIGlmIChpc1N5bWJvbChwcm9wVHlwZSwgcHJvcFZhbHVl
KSkgeworICAgIHJldHVybiAnc3ltYm9sJzsKKyAgfQorICByZXR1cm4gcHJvcFR5cGU7Cit9CisK
Ky8vIFRoaXMgaGFuZGxlcyBtb3JlIHR5cGVzIHRoYW4gYGdldFByb3BUeXBlYC4gT25seSB1c2Vk
IGZvciBlcnJvciBtZXNzYWdlcy4KKy8vIFNlZSBgY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXJg
LgorZnVuY3Rpb24gZ2V0UHJlY2lzZVR5cGUocHJvcFZhbHVlKSB7CisgIHZhciBwcm9wVHlwZSA9
IGdldFByb3BUeXBlKHByb3BWYWx1ZSk7CisgIGlmIChwcm9wVHlwZSA9PT0gJ29iamVjdCcpIHsK
KyAgICBpZiAocHJvcFZhbHVlIGluc3RhbmNlb2YgRGF0ZSkgeworICAgICAgcmV0dXJuICdkYXRl
JzsKKyAgICB9IGVsc2UgaWYgKHByb3BWYWx1ZSBpbnN0YW5jZW9mIFJlZ0V4cCkgeworICAgICAg
cmV0dXJuICdyZWdleHAnOworICAgIH0KKyAgfQorICByZXR1cm4gcHJvcFR5cGU7Cit9CisKKy8v
IFJldHVybnMgY2xhc3MgbmFtZSBvZiB0aGUgb2JqZWN0LCBpZiBhbnkuCitmdW5jdGlvbiBnZXRD
bGFzc05hbWUocHJvcFZhbHVlKSB7CisgIGlmICghcHJvcFZhbHVlLmNvbnN0cnVjdG9yIHx8ICFw
cm9wVmFsdWUuY29uc3RydWN0b3IubmFtZSkgeworICAgIHJldHVybiBBTk9OWU1PVVM7CisgIH0K
KyAgcmV0dXJuIHByb3BWYWx1ZS5jb25zdHJ1Y3Rvci5uYW1lOworfQorCittb2R1bGUuZXhwb3J0
cyA9IFJlYWN0UHJvcFR5cGVzOworfSx7IjEwIjoxMCwiMTQiOjE0LCIxNiI6MTYsIjIyIjoyMiwi
MjYiOjI2LCIyOSI6Mjl9XSwxNjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7Cisv
KioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiAKKyAqLworCisndXNlIHN0cmljdCc7CisKK3Zh
ciBSZWFjdFByb3BUeXBlc1NlY3JldCA9ICdTRUNSRVRfRE9fTk9UX1BBU1NfVEhJU19PUl9ZT1Vf
V0lMTF9CRV9GSVJFRCc7CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RQcm9wVHlwZXNTZWNyZXQ7
Cit9LHt9XSwxNzpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENv
cHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1z
dHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRp
cmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBw
YXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1l
IGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX2Fzc2lnbiA9IF9k
ZXJlcV8oMzApOworCit2YXIgUmVhY3RDb21wb25lbnQgPSBfZGVyZXFfKDYpOwordmFyIFJlYWN0
Tm9vcFVwZGF0ZVF1ZXVlID0gX2RlcmVxXygxMyk7CisKK3ZhciBlbXB0eU9iamVjdCA9IF9kZXJl
cV8oMjcpOworCisvKioKKyAqIEJhc2UgY2xhc3MgaGVscGVycyBmb3IgdGhlIHVwZGF0aW5nIHN0
YXRlIG9mIGEgY29tcG9uZW50LgorICovCitmdW5jdGlvbiBSZWFjdFB1cmVDb21wb25lbnQocHJv
cHMsIGNvbnRleHQsIHVwZGF0ZXIpIHsKKyAgLy8gRHVwbGljYXRlZCBmcm9tIFJlYWN0Q29tcG9u
ZW50LgorICB0aGlzLnByb3BzID0gcHJvcHM7CisgIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7Cisg
IHRoaXMucmVmcyA9IGVtcHR5T2JqZWN0OworICAvLyBXZSBpbml0aWFsaXplIHRoZSBkZWZhdWx0
IHVwZGF0ZXIgYnV0IHRoZSByZWFsIG9uZSBnZXRzIGluamVjdGVkIGJ5IHRoZQorICAvLyByZW5k
ZXJlci4KKyAgdGhpcy51cGRhdGVyID0gdXBkYXRlciB8fCBSZWFjdE5vb3BVcGRhdGVRdWV1ZTsK
K30KKworZnVuY3Rpb24gQ29tcG9uZW50RHVtbXkoKSB7fQorQ29tcG9uZW50RHVtbXkucHJvdG90
eXBlID0gUmVhY3RDb21wb25lbnQucHJvdG90eXBlOworUmVhY3RQdXJlQ29tcG9uZW50LnByb3Rv
dHlwZSA9IG5ldyBDb21wb25lbnREdW1teSgpOworUmVhY3RQdXJlQ29tcG9uZW50LnByb3RvdHlw
ZS5jb25zdHJ1Y3RvciA9IFJlYWN0UHVyZUNvbXBvbmVudDsKKy8vIEF2b2lkIGFuIGV4dHJhIHBy
b3RvdHlwZSBqdW1wIGZvciB0aGVzZSBtZXRob2RzLgorX2Fzc2lnbihSZWFjdFB1cmVDb21wb25l
bnQucHJvdG90eXBlLCBSZWFjdENvbXBvbmVudC5wcm90b3R5cGUpOworUmVhY3RQdXJlQ29tcG9u
ZW50LnByb3RvdHlwZS5pc1B1cmVSZWFjdENvbXBvbmVudCA9IHRydWU7CisKK21vZHVsZS5leHBv
cnRzID0gUmVhY3RQdXJlQ29tcG9uZW50OworfSx7IjEzIjoxMywiMjciOjI3LCIzMCI6MzAsIjYi
OjZ9XSwxODpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHly
aWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX2Fzc2lnbiA9IF9kZXJl
cV8oMzApOworCit2YXIgUmVhY3QgPSBfZGVyZXFfKDMpOworCisvLyBgdmVyc2lvbmAgd2lsbCBi
ZSBhZGRlZCBoZXJlIGJ5IHRoZSBSZWFjdCBtb2R1bGUuCit2YXIgUmVhY3RVTURFbnRyeSA9IF9h
c3NpZ24oeworICBfX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9G
SVJFRDogeworICAgIFJlYWN0Q3VycmVudE93bmVyOiBfZGVyZXFfKDgpCisgIH0KK30sIFJlYWN0
KTsKKworaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICBfYXNzaWduKFJl
YWN0VU1ERW50cnkuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVf
RklSRUQsIHsKKyAgICAvLyBSZWFjdENvbXBvbmVudFRyZWVIb29rIHNob3VsZCBub3QgYmUgaW5j
bHVkZWQgaW4gcHJvZHVjdGlvbi4KKyAgICBSZWFjdENvbXBvbmVudFRyZWVIb29rOiBfZGVyZXFf
KDcpCisgIH0pOworfQorCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0VU1ERW50cnk7Cit9LHsiMyI6
MywiMzAiOjMwLCI3Ijo3LCI4Ijo4fV0sMTk6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9y
dHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICog
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2Vk
IHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25h
bCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMg
ZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwor
bW9kdWxlLmV4cG9ydHMgPSAnMTUuNC4wJzsKK30se31dLDIwOltmdW5jdGlvbihfZGVyZXFfLG1v
ZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ss
IEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBp
cyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFu
IGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRo
ZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIAorICovCisKKyd1
c2Ugc3RyaWN0JzsKKwordmFyIGNhbkRlZmluZVByb3BlcnR5ID0gZmFsc2U7CitpZiAoImRldmVs
b3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgIHRyeSB7CisgICAgLy8gJEZsb3dGaXhNZSBo
dHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svZmxvdy9pc3N1ZXMvMjg1CisgICAgT2JqZWN0LmRl
ZmluZVByb3BlcnR5KHt9LCAneCcsIHsgZ2V0OiBmdW5jdGlvbiAoKSB7fSB9KTsKKyAgICBjYW5E
ZWZpbmVQcm9wZXJ0eSA9IHRydWU7CisgIH0gY2F0Y2ggKHgpIHsKKyAgICAvLyBJRSB3aWxsIGZh
aWwgb24gZGVmaW5lUHJvcGVydHkKKyAgfQorfQorCittb2R1bGUuZXhwb3J0cyA9IGNhbkRlZmlu
ZVByb3BlcnR5OworfSx7fV0sMjE6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpewor
KGZ1bmN0aW9uIChwcm9jZXNzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFj
ZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2Ug
Y29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhl
CisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisn
dXNlIHN0cmljdCc7CisKK3ZhciBfcHJvZEludmFyaWFudCA9IF9kZXJlcV8oMjQpOworCit2YXIg
UmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXMgPSBfZGVyZXFfKDE0KTsKK3ZhciBSZWFjdFByb3BU
eXBlc1NlY3JldCA9IF9kZXJlcV8oMTYpOworCit2YXIgaW52YXJpYW50ID0gX2RlcmVxXygyOCk7
Cit2YXIgd2FybmluZyA9IF9kZXJlcV8oMjkpOworCit2YXIgUmVhY3RDb21wb25lbnRUcmVlSG9v
azsKKworaWYgKHR5cGVvZiBwcm9jZXNzICE9PSAndW5kZWZpbmVkJyAmJiBwcm9jZXNzLmVudiAm
JiAiZGV2ZWxvcG1lbnQiID09PSAndGVzdCcpIHsKKyAgLy8gVGVtcG9yYXJ5IGhhY2suCisgIC8v
IElubGluZSByZXF1aXJlcyBkb24ndCB3b3JrIHdlbGwgd2l0aCBKZXN0OgorICAvLyBodHRwczov
L2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzcyNDAKKyAgLy8gUmVtb3ZlIHRoZSBp
bmxpbmUgcmVxdWlyZXMgd2hlbiB3ZSBkb24ndCBuZWVkIHRoZW0gYW55bW9yZToKKyAgLy8gaHR0
cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L3B1bGwvNzE3OAorICBSZWFjdENvbXBvbmVu
dFRyZWVIb29rID0gX2RlcmVxXyg3KTsKK30KKwordmFyIGxvZ2dlZFR5cGVGYWlsdXJlcyA9IHt9
OworCisvKioKKyAqIEFzc2VydCB0aGF0IHRoZSB2YWx1ZXMgbWF0Y2ggd2l0aCB0aGUgdHlwZSBz
cGVjcy4KKyAqIEVycm9yIG1lc3NhZ2VzIGFyZSBtZW1vcml6ZWQgYW5kIHdpbGwgb25seSBiZSBz
aG93biBvbmNlLgorICoKKyAqIEBwYXJhbSB7b2JqZWN0fSB0eXBlU3BlY3MgTWFwIG9mIG5hbWUg
dG8gYSBSZWFjdFByb3BUeXBlCisgKiBAcGFyYW0ge29iamVjdH0gdmFsdWVzIFJ1bnRpbWUgdmFs
dWVzIHRoYXQgbmVlZCB0byBiZSB0eXBlLWNoZWNrZWQKKyAqIEBwYXJhbSB7c3RyaW5nfSBsb2Nh
dGlvbiBlLmcuICJwcm9wIiwgImNvbnRleHQiLCAiY2hpbGQgY29udGV4dCIKKyAqIEBwYXJhbSB7
c3RyaW5nfSBjb21wb25lbnROYW1lIE5hbWUgb2YgdGhlIGNvbXBvbmVudCBmb3IgZXJyb3IgbWVz
c2FnZXMuCisgKiBAcGFyYW0gez9vYmplY3R9IGVsZW1lbnQgVGhlIFJlYWN0IGVsZW1lbnQgdGhh
dCBpcyBiZWluZyB0eXBlLWNoZWNrZWQKKyAqIEBwYXJhbSB7P251bWJlcn0gZGVidWdJRCBUaGUg
UmVhY3QgY29tcG9uZW50IGluc3RhbmNlIHRoYXQgaXMgYmVpbmcgdHlwZS1jaGVja2VkCisgKiBA
cHJpdmF0ZQorICovCitmdW5jdGlvbiBjaGVja1JlYWN0VHlwZVNwZWModHlwZVNwZWNzLCB2YWx1
ZXMsIGxvY2F0aW9uLCBjb21wb25lbnROYW1lLCBlbGVtZW50LCBkZWJ1Z0lEKSB7CisgIGZvciAo
dmFyIHR5cGVTcGVjTmFtZSBpbiB0eXBlU3BlY3MpIHsKKyAgICBpZiAodHlwZVNwZWNzLmhhc093
blByb3BlcnR5KHR5cGVTcGVjTmFtZSkpIHsKKyAgICAgIHZhciBlcnJvcjsKKyAgICAgIC8vIFBy
b3AgdHlwZSB2YWxpZGF0aW9uIG1heSB0aHJvdy4gSW4gY2FzZSB0aGV5IGRvLCB3ZSBkb24ndCB3
YW50IHRvCisgICAgICAvLyBmYWlsIHRoZSByZW5kZXIgcGhhc2Ugd2hlcmUgaXQgZGlkbid0IGZh
aWwgYmVmb3JlLiBTbyB3ZSBsb2cgaXQuCisgICAgICAvLyBBZnRlciB0aGVzZSBoYXZlIGJlZW4g
Y2xlYW5lZCB1cCwgd2UnbGwgbGV0IHRoZW0gdGhyb3cuCisgICAgICB0cnkgeworICAgICAgICAv
LyBUaGlzIGlzIGludGVudGlvbmFsbHkgYW4gaW52YXJpYW50IHRoYXQgZ2V0cyBjYXVnaHQuIEl0
J3MgdGhlIHNhbWUKKyAgICAgICAgLy8gYmVoYXZpb3IgYXMgd2l0aG91dCB0aGlzIHN0YXRlbWVu
dCBleGNlcHQgd2l0aCBhIGJldHRlciBtZXNzYWdlLgorICAgICAgICAhKHR5cGVvZiB0eXBlU3Bl
Y3NbdHlwZVNwZWNOYW1lXSA9PT0gJ2Z1bmN0aW9uJykgPyAiZGV2ZWxvcG1lbnQiICE9PSAncHJv
ZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICclczogJXMgdHlwZSBgJXNgIGlzIGludmFsaWQ7
IGl0IG11c3QgYmUgYSBmdW5jdGlvbiwgdXN1YWxseSBmcm9tIFJlYWN0LlByb3BUeXBlcy4nLCBj
b21wb25lbnROYW1lIHx8ICdSZWFjdCBjbGFzcycsIFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVz
W2xvY2F0aW9uXSwgdHlwZVNwZWNOYW1lKSA6IF9wcm9kSW52YXJpYW50KCc4NCcsIGNvbXBvbmVu
dE5hbWUgfHwgJ1JlYWN0IGNsYXNzJywgUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXNbbG9jYXRp
b25dLCB0eXBlU3BlY05hbWUpIDogdm9pZCAwOworICAgICAgICBlcnJvciA9IHR5cGVTcGVjc1t0
eXBlU3BlY05hbWVdKHZhbHVlcywgdHlwZVNwZWNOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlv
biwgbnVsbCwgUmVhY3RQcm9wVHlwZXNTZWNyZXQpOworICAgICAgfSBjYXRjaCAoZXgpIHsKKyAg
ICAgICAgZXJyb3IgPSBleDsKKyAgICAgIH0KKyAgICAgICJkZXZlbG9wbWVudCIgIT09ICdwcm9k
dWN0aW9uJyA/IHdhcm5pbmcoIWVycm9yIHx8IGVycm9yIGluc3RhbmNlb2YgRXJyb3IsICclczog
dHlwZSBzcGVjaWZpY2F0aW9uIG9mICVzIGAlc2AgaXMgaW52YWxpZDsgdGhlIHR5cGUgY2hlY2tl
ciAnICsgJ2Z1bmN0aW9uIG11c3QgcmV0dXJuIGBudWxsYCBvciBhbiBgRXJyb3JgIGJ1dCByZXR1
cm5lZCBhICVzLiAnICsgJ1lvdSBtYXkgaGF2ZSBmb3Jnb3R0ZW4gdG8gcGFzcyBhbiBhcmd1bWVu
dCB0byB0aGUgdHlwZSBjaGVja2VyICcgKyAnY3JlYXRvciAoYXJyYXlPZiwgaW5zdGFuY2VPZiwg
b2JqZWN0T2YsIG9uZU9mLCBvbmVPZlR5cGUsIGFuZCAnICsgJ3NoYXBlIGFsbCByZXF1aXJlIGFu
IGFyZ3VtZW50KS4nLCBjb21wb25lbnROYW1lIHx8ICdSZWFjdCBjbGFzcycsIFJlYWN0UHJvcFR5
cGVMb2NhdGlvbk5hbWVzW2xvY2F0aW9uXSwgdHlwZVNwZWNOYW1lLCB0eXBlb2YgZXJyb3IpIDog
dm9pZCAwOworICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IgJiYgIShlcnJvci5tZXNz
YWdlIGluIGxvZ2dlZFR5cGVGYWlsdXJlcykpIHsKKyAgICAgICAgLy8gT25seSBtb25pdG9yIHRo
aXMgZmFpbHVyZSBvbmNlIGJlY2F1c2UgdGhlcmUgdGVuZHMgdG8gYmUgYSBsb3Qgb2YgdGhlCisg
ICAgICAgIC8vIHNhbWUgZXJyb3IuCisgICAgICAgIGxvZ2dlZFR5cGVGYWlsdXJlc1tlcnJvci5t
ZXNzYWdlXSA9IHRydWU7CisKKyAgICAgICAgdmFyIGNvbXBvbmVudFN0YWNrSW5mbyA9ICcnOwor
CisgICAgICAgIGlmICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICAg
ICBpZiAoIVJlYWN0Q29tcG9uZW50VHJlZUhvb2spIHsKKyAgICAgICAgICAgIFJlYWN0Q29tcG9u
ZW50VHJlZUhvb2sgPSBfZGVyZXFfKDcpOworICAgICAgICAgIH0KKyAgICAgICAgICBpZiAoZGVi
dWdJRCAhPT0gbnVsbCkgeworICAgICAgICAgICAgY29tcG9uZW50U3RhY2tJbmZvID0gUmVhY3RD
b21wb25lbnRUcmVlSG9vay5nZXRTdGFja0FkZGVuZHVtQnlJRChkZWJ1Z0lEKTsKKyAgICAgICAg
ICB9IGVsc2UgaWYgKGVsZW1lbnQgIT09IG51bGwpIHsKKyAgICAgICAgICAgIGNvbXBvbmVudFN0
YWNrSW5mbyA9IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0Q3VycmVudFN0YWNrQWRkZW5kdW0o
ZWxlbWVudCk7CisgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgImRldmVsb3BtZW50
IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ0ZhaWxlZCAlcyB0eXBlOiAlcyVz
JywgbG9jYXRpb24sIGVycm9yLm1lc3NhZ2UsIGNvbXBvbmVudFN0YWNrSW5mbykgOiB2b2lkIDA7
CisgICAgICB9CisgICAgfQorICB9Cit9CisKK21vZHVsZS5leHBvcnRzID0gY2hlY2tSZWFjdFR5
cGVTcGVjOworfSkuY2FsbCh0aGlzLHVuZGVmaW5lZCkKK30seyIxNCI6MTQsIjE2IjoxNiwiMjQi
OjI0LCIyOCI6MjgsIjI5IjoyOSwiNyI6N31dLDIyOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxl
eHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4K
KyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNl
bnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0
aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRF
TlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIAorICovCisKKyd1c2Ugc3Ry
aWN0JzsKKworLyogZ2xvYmFsIFN5bWJvbCAqLworCit2YXIgSVRFUkFUT1JfU1lNQk9MID0gdHlw
ZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiBTeW1ib2wuaXRlcmF0b3I7Cit2YXIgRkFVWF9J
VEVSQVRPUl9TWU1CT0wgPSAnQEBpdGVyYXRvcic7IC8vIEJlZm9yZSBTeW1ib2wgc3BlYy4KKwor
LyoqCisgKiBSZXR1cm5zIHRoZSBpdGVyYXRvciBtZXRob2QgZnVuY3Rpb24gY29udGFpbmVkIG9u
IHRoZSBpdGVyYWJsZSBvYmplY3QuCisgKgorICogQmUgc3VyZSB0byBpbnZva2UgdGhlIGZ1bmN0
aW9uIHdpdGggdGhlIGl0ZXJhYmxlIGFzIGNvbnRleHQ6CisgKgorICogICAgIHZhciBpdGVyYXRv
ckZuID0gZ2V0SXRlcmF0b3JGbihteUl0ZXJhYmxlKTsKKyAqICAgICBpZiAoaXRlcmF0b3JGbikg
eworICogICAgICAgdmFyIGl0ZXJhdG9yID0gaXRlcmF0b3JGbi5jYWxsKG15SXRlcmFibGUpOwor
ICogICAgICAgLi4uCisgKiAgICAgfQorICoKKyAqIEBwYXJhbSB7P29iamVjdH0gbWF5YmVJdGVy
YWJsZQorICogQHJldHVybiB7P2Z1bmN0aW9ufQorICovCitmdW5jdGlvbiBnZXRJdGVyYXRvckZu
KG1heWJlSXRlcmFibGUpIHsKKyAgdmFyIGl0ZXJhdG9yRm4gPSBtYXliZUl0ZXJhYmxlICYmIChJ
VEVSQVRPUl9TWU1CT0wgJiYgbWF5YmVJdGVyYWJsZVtJVEVSQVRPUl9TWU1CT0xdIHx8IG1heWJl
SXRlcmFibGVbRkFVWF9JVEVSQVRPUl9TWU1CT0xdKTsKKyAgaWYgKHR5cGVvZiBpdGVyYXRvckZu
ID09PSAnZnVuY3Rpb24nKSB7CisgICAgcmV0dXJuIGl0ZXJhdG9yRm47CisgIH0KK30KKworbW9k
dWxlLmV4cG9ydHMgPSBnZXRJdGVyYXRvckZuOworfSx7fV0sMjM6W2Z1bmN0aW9uKF9kZXJlcV8s
bW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9v
aywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAq
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4g
QW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisndXNlIHN0
cmljdCc7CisKK3ZhciBfcHJvZEludmFyaWFudCA9IF9kZXJlcV8oMjQpOworCit2YXIgUmVhY3RF
bGVtZW50ID0gX2RlcmVxXygxMCk7CisKK3ZhciBpbnZhcmlhbnQgPSBfZGVyZXFfKDI4KTsKKwor
LyoqCisgKiBSZXR1cm5zIHRoZSBmaXJzdCBjaGlsZCBpbiBhIGNvbGxlY3Rpb24gb2YgY2hpbGRy
ZW4gYW5kIHZlcmlmaWVzIHRoYXQgdGhlcmUKKyAqIGlzIG9ubHkgb25lIGNoaWxkIGluIHRoZSBj
b2xsZWN0aW9uLgorICoKKyAqIFNlZSBodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9k
b2NzL3RvcC1sZXZlbC1hcGkuaHRtbCNyZWFjdC5jaGlsZHJlbi5vbmx5CisgKgorICogVGhlIGN1
cnJlbnQgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBmdW5jdGlvbiBhc3N1bWVzIHRoYXQgYSBzaW5n
bGUgY2hpbGQgZ2V0cworICogcGFzc2VkIHdpdGhvdXQgYSB3cmFwcGVyLCBidXQgdGhlIHB1cnBv
c2Ugb2YgdGhpcyBoZWxwZXIgZnVuY3Rpb24gaXMgdG8KKyAqIGFic3RyYWN0IGF3YXkgdGhlIHBh
cnRpY3VsYXIgc3RydWN0dXJlIG9mIGNoaWxkcmVuLgorICoKKyAqIEBwYXJhbSB7P29iamVjdH0g
Y2hpbGRyZW4gQ2hpbGQgY29sbGVjdGlvbiBzdHJ1Y3R1cmUuCisgKiBAcmV0dXJuIHtSZWFjdEVs
ZW1lbnR9IFRoZSBmaXJzdCBhbmQgb25seSBgUmVhY3RFbGVtZW50YCBjb250YWluZWQgaW4gdGhl
CisgKiBzdHJ1Y3R1cmUuCisgKi8KK2Z1bmN0aW9uIG9ubHlDaGlsZChjaGlsZHJlbikgeworICAh
UmVhY3RFbGVtZW50LmlzVmFsaWRFbGVtZW50KGNoaWxkcmVuKSA/ICJkZXZlbG9wbWVudCIgIT09
ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0LkNoaWxkcmVuLm9ubHkgZXhw
ZWN0ZWQgdG8gcmVjZWl2ZSBhIHNpbmdsZSBSZWFjdCBlbGVtZW50IGNoaWxkLicpIDogX3Byb2RJ
bnZhcmlhbnQoJzE0MycpIDogdm9pZCAwOworICByZXR1cm4gY2hpbGRyZW47Cit9CisKK21vZHVs
ZS5leHBvcnRzID0gb25seUNoaWxkOworfSx7IjEwIjoxMCwiMjQiOjI0LCIyOCI6Mjh9XSwyNDpb
ZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHlyaWdodCAoYykg
MjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGlj
ZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkg
b2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJp
Z2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rv
cnkuCisgKgorICogCisgKi8KKyd1c2Ugc3RyaWN0JzsKKworLyoqCisgKiBXQVJOSU5HOiBETyBO
T1QgbWFudWFsbHkgcmVxdWlyZSB0aGlzIG1vZHVsZS4KKyAqIFRoaXMgaXMgYSByZXBsYWNlbWVu
dCBmb3IgYGludmFyaWFudCguLi4pYCB1c2VkIGJ5IHRoZSBlcnJvciBjb2RlIHN5c3RlbQorICog
YW5kIHdpbGwgX29ubHlfIGJlIHJlcXVpcmVkIGJ5IHRoZSBjb3JyZXNwb25kaW5nIGJhYmVsIHBh
c3MuCisgKiBJdCBhbHdheXMgdGhyb3dzLgorICovCisKK2Z1bmN0aW9uIHJlYWN0UHJvZEludmFy
aWFudChjb2RlKSB7CisgIHZhciBhcmdDb3VudCA9IGFyZ3VtZW50cy5sZW5ndGggLSAxOworCisg
IHZhciBtZXNzYWdlID0gJ01pbmlmaWVkIFJlYWN0IGVycm9yICMnICsgY29kZSArICc7IHZpc2l0
ICcgKyAnaHR0cDovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL2Vycm9yLWRlY29kZXIu
aHRtbD9pbnZhcmlhbnQ9JyArIGNvZGU7CisKKyAgZm9yICh2YXIgYXJnSWR4ID0gMDsgYXJnSWR4
IDwgYXJnQ291bnQ7IGFyZ0lkeCsrKSB7CisgICAgbWVzc2FnZSArPSAnJmFyZ3NbXT0nICsgZW5j
b2RlVVJJQ29tcG9uZW50KGFyZ3VtZW50c1thcmdJZHggKyAxXSk7CisgIH0KKworICBtZXNzYWdl
ICs9ICcgZm9yIHRoZSBmdWxsIG1lc3NhZ2Ugb3IgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVu
dmlyb25tZW50JyArICcgZm9yIGZ1bGwgZXJyb3JzIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2Fy
bmluZ3MuJzsKKworICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IobWVzc2FnZSk7CisgIGVycm9yLm5h
bWUgPSAnSW52YXJpYW50IFZpb2xhdGlvbic7CisgIGVycm9yLmZyYW1lc1RvUG9wID0gMTsgLy8g
d2UgZG9uJ3QgY2FyZSBhYm91dCByZWFjdFByb2RJbnZhcmlhbnQncyBvd24gZnJhbWUKKworICB0
aHJvdyBlcnJvcjsKK30KKworbW9kdWxlLmV4cG9ydHMgPSByZWFjdFByb2RJbnZhcmlhbnQ7Cit9
LHt9XSwyNTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENvcHly
aWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJbnZhcmlhbnQg
PSBfZGVyZXFfKDI0KTsKKwordmFyIFJlYWN0Q3VycmVudE93bmVyID0gX2RlcmVxXyg4KTsKK3Zh
ciBSRUFDVF9FTEVNRU5UX1RZUEUgPSBfZGVyZXFfKDExKTsKKwordmFyIGdldEl0ZXJhdG9yRm4g
PSBfZGVyZXFfKDIyKTsKK3ZhciBpbnZhcmlhbnQgPSBfZGVyZXFfKDI4KTsKK3ZhciBLZXlFc2Nh
cGVVdGlscyA9IF9kZXJlcV8oMSk7Cit2YXIgd2FybmluZyA9IF9kZXJlcV8oMjkpOworCit2YXIg
U0VQQVJBVE9SID0gJy4nOwordmFyIFNVQlNFUEFSQVRPUiA9ICc6JzsKKworLyoqCisgKiBUaGlz
IGlzIGlubGluZWQgZnJvbSBSZWFjdEVsZW1lbnQgc2luY2UgdGhpcyBmaWxlIGlzIHNoYXJlZCBi
ZXR3ZWVuCisgKiBpc29tb3JwaGljIGFuZCByZW5kZXJlcnMuIFdlIGNvdWxkIGV4dHJhY3QgdGhp
cyB0byBhCisgKgorICovCisKKy8qKgorICogVE9ETzogVGVzdCB0aGF0IGEgc2luZ2xlIGNoaWxk
IGFuZCBhbiBhcnJheSB3aXRoIG9uZSBpdGVtIGhhdmUgdGhlIHNhbWUga2V5CisgKiBwYXR0ZXJu
LgorICovCisKK3ZhciBkaWRXYXJuQWJvdXRNYXBzID0gZmFsc2U7CisKKy8qKgorICogR2VuZXJh
dGUgYSBrZXkgc3RyaW5nIHRoYXQgaWRlbnRpZmllcyBhIGNvbXBvbmVudCB3aXRoaW4gYSBzZXQu
CisgKgorICogQHBhcmFtIHsqfSBjb21wb25lbnQgQSBjb21wb25lbnQgdGhhdCBjb3VsZCBjb250
YWluIGEgbWFudWFsIGtleS4KKyAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleCBJbmRleCB0aGF0IGlz
IHVzZWQgaWYgYSBtYW51YWwga2V5IGlzIG5vdCBwcm92aWRlZC4KKyAqIEByZXR1cm4ge3N0cmlu
Z30KKyAqLworZnVuY3Rpb24gZ2V0Q29tcG9uZW50S2V5KGNvbXBvbmVudCwgaW5kZXgpIHsKKyAg
Ly8gRG8gc29tZSB0eXBlY2hlY2tpbmcgaGVyZSBzaW5jZSB3ZSBjYWxsIHRoaXMgYmxpbmRseS4g
V2Ugd2FudCB0byBlbnN1cmUKKyAgLy8gdGhhdCB3ZSBkb24ndCBibG9jayBwb3RlbnRpYWwgZnV0
dXJlIEVTIEFQSXMuCisgIGlmIChjb21wb25lbnQgJiYgdHlwZW9mIGNvbXBvbmVudCA9PT0gJ29i
amVjdCcgJiYgY29tcG9uZW50LmtleSAhPSBudWxsKSB7CisgICAgLy8gRXhwbGljaXQga2V5Cisg
ICAgcmV0dXJuIEtleUVzY2FwZVV0aWxzLmVzY2FwZShjb21wb25lbnQua2V5KTsKKyAgfQorICAv
LyBJbXBsaWNpdCBrZXkgZGV0ZXJtaW5lZCBieSB0aGUgaW5kZXggaW4gdGhlIHNldAorICByZXR1
cm4gaW5kZXgudG9TdHJpbmcoMzYpOworfQorCisvKioKKyAqIEBwYXJhbSB7Pyp9IGNoaWxkcmVu
IENoaWxkcmVuIHRyZWUgY29udGFpbmVyLgorICogQHBhcmFtIHshc3RyaW5nfSBuYW1lU29GYXIg
TmFtZSBvZiB0aGUga2V5IHBhdGggc28gZmFyLgorICogQHBhcmFtIHshZnVuY3Rpb259IGNhbGxi
YWNrIENhbGxiYWNrIHRvIGludm9rZSB3aXRoIGVhY2ggY2hpbGQgZm91bmQuCisgKiBAcGFyYW0g
ez8qfSB0cmF2ZXJzZUNvbnRleHQgVXNlZCB0byBwYXNzIGluZm9ybWF0aW9uIHRocm91Z2hvdXQg
dGhlIHRyYXZlcnNhbAorICogcHJvY2Vzcy4KKyAqIEByZXR1cm4geyFudW1iZXJ9IFRoZSBudW1i
ZXIgb2YgY2hpbGRyZW4gaW4gdGhpcyBzdWJ0cmVlLgorICovCitmdW5jdGlvbiB0cmF2ZXJzZUFs
bENoaWxkcmVuSW1wbChjaGlsZHJlbiwgbmFtZVNvRmFyLCBjYWxsYmFjaywgdHJhdmVyc2VDb250
ZXh0KSB7CisgIHZhciB0eXBlID0gdHlwZW9mIGNoaWxkcmVuOworCisgIGlmICh0eXBlID09PSAn
dW5kZWZpbmVkJyB8fCB0eXBlID09PSAnYm9vbGVhbicpIHsKKyAgICAvLyBBbGwgb2YgdGhlIGFi
b3ZlIGFyZSBwZXJjZWl2ZWQgYXMgbnVsbC4KKyAgICBjaGlsZHJlbiA9IG51bGw7CisgIH0KKwor
ICBpZiAoY2hpbGRyZW4gPT09IG51bGwgfHwgdHlwZSA9PT0gJ3N0cmluZycgfHwgdHlwZSA9PT0g
J251bWJlcicgfHwKKyAgLy8gVGhlIGZvbGxvd2luZyBpcyBpbmxpbmVkIGZyb20gUmVhY3RFbGVt
ZW50LiBUaGlzIG1lYW5zIHdlIGNhbiBvcHRpbWl6ZQorICAvLyBzb21lIGNoZWNrcy4gUmVhY3Qg
RmliZXIgYWxzbyBpbmxpbmVzIHRoaXMgbG9naWMgZm9yIHNpbWlsYXIgcHVycG9zZXMuCisgIHR5
cGUgPT09ICdvYmplY3QnICYmIGNoaWxkcmVuLiQkdHlwZW9mID09PSBSRUFDVF9FTEVNRU5UX1RZ
UEUpIHsKKyAgICBjYWxsYmFjayh0cmF2ZXJzZUNvbnRleHQsIGNoaWxkcmVuLAorICAgIC8vIElm
IGl0J3MgdGhlIG9ubHkgY2hpbGQsIHRyZWF0IHRoZSBuYW1lIGFzIGlmIGl0IHdhcyB3cmFwcGVk
IGluIGFuIGFycmF5CisgICAgLy8gc28gdGhhdCBpdCdzIGNvbnNpc3RlbnQgaWYgdGhlIG51bWJl
ciBvZiBjaGlsZHJlbiBncm93cy4KKyAgICBuYW1lU29GYXIgPT09ICcnID8gU0VQQVJBVE9SICsg
Z2V0Q29tcG9uZW50S2V5KGNoaWxkcmVuLCAwKSA6IG5hbWVTb0Zhcik7CisgICAgcmV0dXJuIDE7
CisgIH0KKworICB2YXIgY2hpbGQ7CisgIHZhciBuZXh0TmFtZTsKKyAgdmFyIHN1YnRyZWVDb3Vu
dCA9IDA7IC8vIENvdW50IG9mIGNoaWxkcmVuIGZvdW5kIGluIHRoZSBjdXJyZW50IHN1YnRyZWUu
CisgIHZhciBuZXh0TmFtZVByZWZpeCA9IG5hbWVTb0ZhciA9PT0gJycgPyBTRVBBUkFUT1IgOiBu
YW1lU29GYXIgKyBTVUJTRVBBUkFUT1I7CisKKyAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4p
KSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykgeworICAg
ICAgY2hpbGQgPSBjaGlsZHJlbltpXTsKKyAgICAgIG5leHROYW1lID0gbmV4dE5hbWVQcmVmaXgg
KyBnZXRDb21wb25lbnRLZXkoY2hpbGQsIGkpOworICAgICAgc3VidHJlZUNvdW50ICs9IHRyYXZl
cnNlQWxsQ2hpbGRyZW5JbXBsKGNoaWxkLCBuZXh0TmFtZSwgY2FsbGJhY2ssIHRyYXZlcnNlQ29u
dGV4dCk7CisgICAgfQorICB9IGVsc2UgeworICAgIHZhciBpdGVyYXRvckZuID0gZ2V0SXRlcmF0
b3JGbihjaGlsZHJlbik7CisgICAgaWYgKGl0ZXJhdG9yRm4pIHsKKyAgICAgIHZhciBpdGVyYXRv
ciA9IGl0ZXJhdG9yRm4uY2FsbChjaGlsZHJlbik7CisgICAgICB2YXIgc3RlcDsKKyAgICAgIGlm
IChpdGVyYXRvckZuICE9PSBjaGlsZHJlbi5lbnRyaWVzKSB7CisgICAgICAgIHZhciBpaSA9IDA7
CisgICAgICAgIHdoaWxlICghKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmUpIHsKKyAgICAg
ICAgICBjaGlsZCA9IHN0ZXAudmFsdWU7CisgICAgICAgICAgbmV4dE5hbWUgPSBuZXh0TmFtZVBy
ZWZpeCArIGdldENvbXBvbmVudEtleShjaGlsZCwgaWkrKyk7CisgICAgICAgICAgc3VidHJlZUNv
dW50ICs9IHRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBsKGNoaWxkLCBuZXh0TmFtZSwgY2FsbGJhY2ss
IHRyYXZlcnNlQ29udGV4dCk7CisgICAgICAgIH0KKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGlm
ICgiZGV2ZWxvcG1lbnQiICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICAgICB2YXIgbWFwc0Fz
Q2hpbGRyZW5BZGRlbmR1bSA9ICcnOworICAgICAgICAgIGlmIChSZWFjdEN1cnJlbnRPd25lci5j
dXJyZW50KSB7CisgICAgICAgICAgICB2YXIgbWFwc0FzQ2hpbGRyZW5Pd25lck5hbWUgPSBSZWFj
dEN1cnJlbnRPd25lci5jdXJyZW50LmdldE5hbWUoKTsKKyAgICAgICAgICAgIGlmIChtYXBzQXND
aGlsZHJlbk93bmVyTmFtZSkgeworICAgICAgICAgICAgICBtYXBzQXNDaGlsZHJlbkFkZGVuZHVt
ID0gJyBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiBgJyArIG1hcHNBc0NoaWxkcmVuT3duZXJO
YW1lICsgJ2AuJzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgImRldmVs
b3BtZW50IiAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhkaWRXYXJuQWJvdXRNYXBzLCAnVXNp
bmcgTWFwcyBhcyBjaGlsZHJlbiBpcyBub3QgeWV0IGZ1bGx5IHN1cHBvcnRlZC4gSXQgaXMgYW4g
JyArICdleHBlcmltZW50YWwgZmVhdHVyZSB0aGF0IG1pZ2h0IGJlIHJlbW92ZWQuIENvbnZlcnQg
aXQgdG8gYSAnICsgJ3NlcXVlbmNlIC8gaXRlcmFibGUgb2Yga2V5ZWQgUmVhY3RFbGVtZW50cyBp
bnN0ZWFkLiVzJywgbWFwc0FzQ2hpbGRyZW5BZGRlbmR1bSkgOiB2b2lkIDA7CisgICAgICAgICAg
ZGlkV2FybkFib3V0TWFwcyA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgLy8gSXRlcmF0b3Ig
d2lsbCBwcm92aWRlIGVudHJ5IFtrLHZdIHR1cGxlcyByYXRoZXIgdGhhbiB2YWx1ZXMuCisgICAg
ICAgIHdoaWxlICghKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmUpIHsKKyAgICAgICAgICB2
YXIgZW50cnkgPSBzdGVwLnZhbHVlOworICAgICAgICAgIGlmIChlbnRyeSkgeworICAgICAgICAg
ICAgY2hpbGQgPSBlbnRyeVsxXTsKKyAgICAgICAgICAgIG5leHROYW1lID0gbmV4dE5hbWVQcmVm
aXggKyBLZXlFc2NhcGVVdGlscy5lc2NhcGUoZW50cnlbMF0pICsgU1VCU0VQQVJBVE9SICsgZ2V0
Q29tcG9uZW50S2V5KGNoaWxkLCAwKTsKKyAgICAgICAgICAgIHN1YnRyZWVDb3VudCArPSB0cmF2
ZXJzZUFsbENoaWxkcmVuSW1wbChjaGlsZCwgbmV4dE5hbWUsIGNhbGxiYWNrLCB0cmF2ZXJzZUNv
bnRleHQpOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0gZWxzZSBpZiAo
dHlwZSA9PT0gJ29iamVjdCcpIHsKKyAgICAgIHZhciBhZGRlbmR1bSA9ICcnOworICAgICAgaWYg
KCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgICBhZGRlbmR1bSA9ICcg
SWYgeW91IG1lYW50IHRvIHJlbmRlciBhIGNvbGxlY3Rpb24gb2YgY2hpbGRyZW4sIHVzZSBhbiBh
cnJheSAnICsgJ2luc3RlYWQgb3Igd3JhcCB0aGUgb2JqZWN0IHVzaW5nIGNyZWF0ZUZyYWdtZW50
KG9iamVjdCkgZnJvbSB0aGUgJyArICdSZWFjdCBhZGQtb25zLic7CisgICAgICAgIGlmIChjaGls
ZHJlbi5faXNSZWFjdEVsZW1lbnQpIHsKKyAgICAgICAgICBhZGRlbmR1bSA9ICcgSXQgbG9va3Mg
bGlrZSB5b3VcJ3JlIHVzaW5nIGFuIGVsZW1lbnQgY3JlYXRlZCBieSBhIGRpZmZlcmVudCAnICsg
J3ZlcnNpb24gb2YgUmVhY3QuIE1ha2Ugc3VyZSB0byB1c2Ugb25seSBvbmUgY29weSBvZiBSZWFj
dC4nOworICAgICAgICB9CisgICAgICAgIGlmIChSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50KSB7
CisgICAgICAgICAgdmFyIG5hbWUgPSBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50LmdldE5hbWUo
KTsKKyAgICAgICAgICBpZiAobmFtZSkgeworICAgICAgICAgICAgYWRkZW5kdW0gKz0gJyBDaGVj
ayB0aGUgcmVuZGVyIG1ldGhvZCBvZiBgJyArIG5hbWUgKyAnYC4nOworICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgfQorICAgICAgdmFyIGNoaWxkcmVuU3RyaW5nID0gU3RyaW5nKGNoaWxk
cmVuKTsKKyAgICAgICFmYWxzZSA/ICJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJyA/IGlu
dmFyaWFudChmYWxzZSwgJ09iamVjdHMgYXJlIG5vdCB2YWxpZCBhcyBhIFJlYWN0IGNoaWxkIChm
b3VuZDogJXMpLiVzJywgY2hpbGRyZW5TdHJpbmcgPT09ICdbb2JqZWN0IE9iamVjdF0nID8gJ29i
amVjdCB3aXRoIGtleXMgeycgKyBPYmplY3Qua2V5cyhjaGlsZHJlbikuam9pbignLCAnKSArICd9
JyA6IGNoaWxkcmVuU3RyaW5nLCBhZGRlbmR1bSkgOiBfcHJvZEludmFyaWFudCgnMzEnLCBjaGls
ZHJlblN0cmluZyA9PT0gJ1tvYmplY3QgT2JqZWN0XScgPyAnb2JqZWN0IHdpdGgga2V5cyB7JyAr
IE9iamVjdC5rZXlzKGNoaWxkcmVuKS5qb2luKCcsICcpICsgJ30nIDogY2hpbGRyZW5TdHJpbmcs
IGFkZGVuZHVtKSA6IHZvaWQgMDsKKyAgICB9CisgIH0KKworICByZXR1cm4gc3VidHJlZUNvdW50
OworfQorCisvKioKKyAqIFRyYXZlcnNlcyBjaGlsZHJlbiB0aGF0IGFyZSB0eXBpY2FsbHkgc3Bl
Y2lmaWVkIGFzIGBwcm9wcy5jaGlsZHJlbmAsIGJ1dAorICogbWlnaHQgYWxzbyBiZSBzcGVjaWZp
ZWQgdGhyb3VnaCBhdHRyaWJ1dGVzOgorICoKKyAqIC0gYHRyYXZlcnNlQWxsQ2hpbGRyZW4odGhp
cy5wcm9wcy5jaGlsZHJlbiwgLi4uKWAKKyAqIC0gYHRyYXZlcnNlQWxsQ2hpbGRyZW4odGhpcy5w
cm9wcy5sZWZ0UGFuZWxDaGlsZHJlbiwgLi4uKWAKKyAqCisgKiBUaGUgYHRyYXZlcnNlQ29udGV4
dGAgaXMgYW4gb3B0aW9uYWwgYXJndW1lbnQgdGhhdCBpcyBwYXNzZWQgdGhyb3VnaCB0aGUKKyAq
IGVudGlyZSB0cmF2ZXJzYWwuIEl0IGNhbiBiZSB1c2VkIHRvIHN0b3JlIGFjY3VtdWxhdGlvbnMg
b3IgYW55dGhpbmcgZWxzZSB0aGF0CisgKiB0aGUgY2FsbGJhY2sgbWlnaHQgZmluZCByZWxldmFu
dC4KKyAqCisgKiBAcGFyYW0gez8qfSBjaGlsZHJlbiBDaGlsZHJlbiB0cmVlIG9iamVjdC4KKyAq
IEBwYXJhbSB7IWZ1bmN0aW9ufSBjYWxsYmFjayBUbyBpbnZva2UgdXBvbiB0cmF2ZXJzaW5nIGVh
Y2ggY2hpbGQuCisgKiBAcGFyYW0gez8qfSB0cmF2ZXJzZUNvbnRleHQgQ29udGV4dCBmb3IgdHJh
dmVyc2FsLgorICogQHJldHVybiB7IW51bWJlcn0gVGhlIG51bWJlciBvZiBjaGlsZHJlbiBpbiB0
aGlzIHN1YnRyZWUuCisgKi8KK2Z1bmN0aW9uIHRyYXZlcnNlQWxsQ2hpbGRyZW4oY2hpbGRyZW4s
IGNhbGxiYWNrLCB0cmF2ZXJzZUNvbnRleHQpIHsKKyAgaWYgKGNoaWxkcmVuID09IG51bGwpIHsK
KyAgICByZXR1cm4gMDsKKyAgfQorCisgIHJldHVybiB0cmF2ZXJzZUFsbENoaWxkcmVuSW1wbChj
aGlsZHJlbiwgJycsIGNhbGxiYWNrLCB0cmF2ZXJzZUNvbnRleHQpOworfQorCittb2R1bGUuZXhw
b3J0cyA9IHRyYXZlcnNlQWxsQ2hpbGRyZW47Cit9LHsiMSI6MSwiMTEiOjExLCIyMiI6MjIsIjI0
IjoyNCwiMjgiOjI4LCIyOSI6MjksIjgiOjh9XSwyNjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUs
ZXhwb3J0cyl7CisidXNlIHN0cmljdCI7CisKKy8qKgorICogQ29weXJpZ2h0IChjKSAyMDEzLXBy
ZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRo
aXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZv
dW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlz
IHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNh
biBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAq
CisgKiAKKyAqLworCitmdW5jdGlvbiBtYWtlRW1wdHlGdW5jdGlvbihhcmcpIHsKKyAgcmV0dXJu
IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gYXJnOworICB9OworfQorCisvKioKKyAqIFRoaXMg
ZnVuY3Rpb24gYWNjZXB0cyBhbmQgZGlzY2FyZHMgaW5wdXRzOyBpdCBoYXMgbm8gc2lkZSBlZmZl
Y3RzLiBUaGlzIGlzCisgKiBwcmltYXJpbHkgdXNlZnVsIGlkaW9tYXRpY2FsbHkgZm9yIG92ZXJy
aWRhYmxlIGZ1bmN0aW9uIGVuZHBvaW50cyB3aGljaAorICogYWx3YXlzIG5lZWQgdG8gYmUgY2Fs
bGFibGUsIHNpbmNlIEpTIGxhY2tzIGEgbnVsbC1jYWxsIGlkaW9tIGFsYSBDb2NvYS4KKyAqLwor
dmFyIGVtcHR5RnVuY3Rpb24gPSBmdW5jdGlvbiBlbXB0eUZ1bmN0aW9uKCkge307CisKK2VtcHR5
RnVuY3Rpb24udGhhdFJldHVybnMgPSBtYWtlRW1wdHlGdW5jdGlvbjsKK2VtcHR5RnVuY3Rpb24u
dGhhdFJldHVybnNGYWxzZSA9IG1ha2VFbXB0eUZ1bmN0aW9uKGZhbHNlKTsKK2VtcHR5RnVuY3Rp
b24udGhhdFJldHVybnNUcnVlID0gbWFrZUVtcHR5RnVuY3Rpb24odHJ1ZSk7CitlbXB0eUZ1bmN0
aW9uLnRoYXRSZXR1cm5zTnVsbCA9IG1ha2VFbXB0eUZ1bmN0aW9uKG51bGwpOworZW1wdHlGdW5j
dGlvbi50aGF0UmV0dXJuc1RoaXMgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiB0aGlzOworfTsK
K2VtcHR5RnVuY3Rpb24udGhhdFJldHVybnNBcmd1bWVudCA9IGZ1bmN0aW9uIChhcmcpIHsKKyAg
cmV0dXJuIGFyZzsKK307CisKK21vZHVsZS5leHBvcnRzID0gZW1wdHlGdW5jdGlvbjsKK30se31d
LDI3OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0
IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgZW1wdHlPYmplY3QgPSB7
fTsKKworaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0aW9uJykgeworICBPYmplY3QuZnJl
ZXplKGVtcHR5T2JqZWN0KTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBlbXB0eU9iamVjdDsKK30s
e31dLDI4OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJp
Z2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1z
dHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRp
cmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBw
YXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1l
IGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCisvKioKKyAqIFVzZSBpbnZh
cmlhbnQoKSB0byBhc3NlcnQgc3RhdGUgd2hpY2ggeW91ciBwcm9ncmFtIGFzc3VtZXMgdG8gYmUg
dHJ1ZS4KKyAqCisgKiBQcm92aWRlIHNwcmludGYtc3R5bGUgZm9ybWF0IChvbmx5ICVzIGlzIHN1
cHBvcnRlZCkgYW5kIGFyZ3VtZW50cworICogdG8gcHJvdmlkZSBpbmZvcm1hdGlvbiBhYm91dCB3
aGF0IGJyb2tlIGFuZCB3aGF0IHlvdSB3ZXJlCisgKiBleHBlY3RpbmcuCisgKgorICogVGhlIGlu
dmFyaWFudCBtZXNzYWdlIHdpbGwgYmUgc3RyaXBwZWQgaW4gcHJvZHVjdGlvbiwgYnV0IHRoZSBp
bnZhcmlhbnQKKyAqIHdpbGwgcmVtYWluIHRvIGVuc3VyZSBsb2dpYyBkb2VzIG5vdCBkaWZmZXIg
aW4gcHJvZHVjdGlvbi4KKyAqLworCitmdW5jdGlvbiBpbnZhcmlhbnQoY29uZGl0aW9uLCBmb3Jt
YXQsIGEsIGIsIGMsIGQsIGUsIGYpIHsKKyAgaWYgKCJkZXZlbG9wbWVudCIgIT09ICdwcm9kdWN0
aW9uJykgeworICAgIGlmIChmb3JtYXQgPT09IHVuZGVmaW5lZCkgeworICAgICAgdGhyb3cgbmV3
IEVycm9yKCdpbnZhcmlhbnQgcmVxdWlyZXMgYW4gZXJyb3IgbWVzc2FnZSBhcmd1bWVudCcpOwor
ICAgIH0KKyAgfQorCisgIGlmICghY29uZGl0aW9uKSB7CisgICAgdmFyIGVycm9yOworICAgIGlm
IChmb3JtYXQgPT09IHVuZGVmaW5lZCkgeworICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoJ01pbmlm
aWVkIGV4Y2VwdGlvbiBvY2N1cnJlZDsgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25t
ZW50ICcgKyAnZm9yIHRoZSBmdWxsIGVycm9yIG1lc3NhZ2UgYW5kIGFkZGl0aW9uYWwgaGVscGZ1
bCB3YXJuaW5ncy4nKTsKKyAgICB9IGVsc2UgeworICAgICAgdmFyIGFyZ3MgPSBbYSwgYiwgYywg
ZCwgZSwgZl07CisgICAgICB2YXIgYXJnSW5kZXggPSAwOworICAgICAgZXJyb3IgPSBuZXcgRXJy
b3IoZm9ybWF0LnJlcGxhY2UoLyVzL2csIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgcmV0dXJuIGFy
Z3NbYXJnSW5kZXgrK107CisgICAgICB9KSk7CisgICAgICBlcnJvci5uYW1lID0gJ0ludmFyaWFu
dCBWaW9sYXRpb24nOworICAgIH0KKworICAgIGVycm9yLmZyYW1lc1RvUG9wID0gMTsgLy8gd2Ug
ZG9uJ3QgY2FyZSBhYm91dCBpbnZhcmlhbnQncyBvd24gZnJhbWUKKyAgICB0aHJvdyBlcnJvcjsK
KyAgfQorfQorCittb2R1bGUuZXhwb3J0cyA9IGludmFyaWFudDsKK30se31dLDI5OltmdW5jdGlv
bihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29weXJpZ2h0IDIwMTQtMjAxNSwg
RmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3Vy
Y2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4g
dGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNl
IHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLwor
CisndXNlIHN0cmljdCc7CisKK3ZhciBlbXB0eUZ1bmN0aW9uID0gX2RlcmVxXygyNik7CisKKy8q
KgorICogU2ltaWxhciB0byBpbnZhcmlhbnQgYnV0IG9ubHkgbG9ncyBhIHdhcm5pbmcgaWYgdGhl
IGNvbmRpdGlvbiBpcyBub3QgbWV0LgorICogVGhpcyBjYW4gYmUgdXNlZCB0byBsb2cgaXNzdWVz
IGluIGRldmVsb3BtZW50IGVudmlyb25tZW50cyBpbiBjcml0aWNhbAorICogcGF0aHMuIFJlbW92
aW5nIHRoZSBsb2dnaW5nIGNvZGUgZm9yIHByb2R1Y3Rpb24gZW52aXJvbm1lbnRzIHdpbGwga2Vl
cCB0aGUKKyAqIHNhbWUgbG9naWMgYW5kIGZvbGxvdyB0aGUgc2FtZSBjb2RlIHBhdGhzLgorICov
CisKK3ZhciB3YXJuaW5nID0gZW1wdHlGdW5jdGlvbjsKKworaWYgKCJkZXZlbG9wbWVudCIgIT09
ICdwcm9kdWN0aW9uJykgeworICAoZnVuY3Rpb24gKCkgeworICAgIHZhciBwcmludFdhcm5pbmcg
PSBmdW5jdGlvbiBwcmludFdhcm5pbmcoZm9ybWF0KSB7CisgICAgICBmb3IgKHZhciBfbGVuID0g
YXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW4gPiAxID8gX2xlbiAtIDEgOiAwKSwg
X2tleSA9IDE7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHsKKyAgICAgICAgYXJnc1tfa2V5IC0gMV0g
PSBhcmd1bWVudHNbX2tleV07CisgICAgICB9CisKKyAgICAgIHZhciBhcmdJbmRleCA9IDA7Cisg
ICAgICB2YXIgbWVzc2FnZSA9ICdXYXJuaW5nOiAnICsgZm9ybWF0LnJlcGxhY2UoLyVzL2csIGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgcmV0dXJuIGFyZ3NbYXJnSW5kZXgrK107CisgICAgICB9KTsK
KyAgICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcpIHsKKyAgICAgICAgY29u
c29sZS5lcnJvcihtZXNzYWdlKTsKKyAgICAgIH0KKyAgICAgIHRyeSB7CisgICAgICAgIC8vIC0t
LSBXZWxjb21lIHRvIGRlYnVnZ2luZyBSZWFjdCAtLS0KKyAgICAgICAgLy8gVGhpcyBlcnJvciB3
YXMgdGhyb3duIGFzIGEgY29udmVuaWVuY2Ugc28gdGhhdCB5b3UgY2FuIHVzZSB0aGlzIHN0YWNr
CisgICAgICAgIC8vIHRvIGZpbmQgdGhlIGNhbGxzaXRlIHRoYXQgY2F1c2VkIHRoaXMgd2Fybmlu
ZyB0byBmaXJlLgorICAgICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7CisgICAgICB9IGNh
dGNoICh4KSB7fQorICAgIH07CisKKyAgICB3YXJuaW5nID0gZnVuY3Rpb24gd2FybmluZyhjb25k
aXRpb24sIGZvcm1hdCkgeworICAgICAgaWYgKGZvcm1hdCA9PT0gdW5kZWZpbmVkKSB7CisgICAg
ICAgIHRocm93IG5ldyBFcnJvcignYHdhcm5pbmcoY29uZGl0aW9uLCBmb3JtYXQsIC4uLmFyZ3Mp
YCByZXF1aXJlcyBhIHdhcm5pbmcgJyArICdtZXNzYWdlIGFyZ3VtZW50Jyk7CisgICAgICB9CisK
KyAgICAgIGlmIChmb3JtYXQuaW5kZXhPZignRmFpbGVkIENvbXBvc2l0ZSBwcm9wVHlwZTogJykg
PT09IDApIHsKKyAgICAgICAgcmV0dXJuOyAvLyBJZ25vcmUgQ29tcG9zaXRlQ29tcG9uZW50IHBy
b3B0eXBlIGNoZWNrLgorICAgICAgfQorCisgICAgICBpZiAoIWNvbmRpdGlvbikgeworICAgICAg
ICBmb3IgKHZhciBfbGVuMiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBBcnJheShfbGVuMiA+
IDIgPyBfbGVuMiAtIDIgOiAwKSwgX2tleTIgPSAyOyBfa2V5MiA8IF9sZW4yOyBfa2V5MisrKSB7
CisgICAgICAgICAgYXJnc1tfa2V5MiAtIDJdID0gYXJndW1lbnRzW19rZXkyXTsKKyAgICAgICAg
fQorCisgICAgICAgIHByaW50V2FybmluZy5hcHBseSh1bmRlZmluZWQsIFtmb3JtYXRdLmNvbmNh
dChhcmdzKSk7CisgICAgICB9CisgICAgfTsKKyAgfSkoKTsKK30KKworbW9kdWxlLmV4cG9ydHMg
PSB3YXJuaW5nOworfSx7IjI2IjoyNn1dLDMwOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBv
cnRzKXsKKyd1c2Ugc3RyaWN0JzsKKy8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzICov
Cit2YXIgaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5Owor
dmFyIHByb3BJc0VudW1lcmFibGUgPSBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJh
YmxlOworCitmdW5jdGlvbiB0b09iamVjdCh2YWwpIHsKKyAgICBpZiAodmFsID09PSBudWxsIHx8
IHZhbCA9PT0gdW5kZWZpbmVkKSB7CisgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ09iamVj
dC5hc3NpZ24gY2Fubm90IGJlIGNhbGxlZCB3aXRoIG51bGwgb3IgdW5kZWZpbmVkJyk7CisgICAg
fQorCisgICAgcmV0dXJuIE9iamVjdCh2YWwpOworfQorCitmdW5jdGlvbiBzaG91bGRVc2VOYXRp
dmUoKSB7CisgICAgdHJ5IHsKKyAgICAgICAgaWYgKCFPYmplY3QuYXNzaWduKSB7CisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICAvLyBEZXRlY3QgYnVnZ3kg
cHJvcGVydHkgZW51bWVyYXRpb24gb3JkZXIgaW4gb2xkZXIgVjggdmVyc2lvbnMuCisKKyAgICAg
ICAgLy8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9NDEx
OAorICAgICAgICB2YXIgdGVzdDEgPSBuZXcgU3RyaW5nKCdhYmMnKTsgIC8vIGVzbGludC1kaXNh
YmxlLWxpbmUKKyAgICAgICAgdGVzdDFbNV0gPSAnZGUnOworICAgICAgICBpZiAoT2JqZWN0Lmdl
dE93blByb3BlcnR5TmFtZXModGVzdDEpWzBdID09PSAnNScpIHsKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5v
cmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTMwNTYKKyAgICAgICAgdmFyIHRlc3QyID0ge307Cisg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTA7IGkrKykgeworICAgICAgICAgICAgdGVzdDJb
J18nICsgU3RyaW5nLmZyb21DaGFyQ29kZShpKV0gPSBpOworICAgICAgICB9CisgICAgICAgIHZh
ciBvcmRlcjIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0ZXN0MikubWFwKGZ1bmN0aW9u
IChuKSB7CisgICAgICAgICAgICByZXR1cm4gdGVzdDJbbl07CisgICAgICAgIH0pOworICAgICAg
ICBpZiAob3JkZXIyLmpvaW4oJycpICE9PSAnMDEyMzQ1Njc4OScpIHsKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1
bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTMwNTYKKyAgICAgICAgdmFyIHRlc3QzID0ge307
CisgICAgICAgICdhYmNkZWZnaGlqa2xtbm9wcXJzdCcuc3BsaXQoJycpLmZvckVhY2goZnVuY3Rp
b24gKGxldHRlcikgeworICAgICAgICAgICAgdGVzdDNbbGV0dGVyXSA9IGxldHRlcjsKKyAgICAg
ICAgfSk7CisgICAgICAgIGlmIChPYmplY3Qua2V5cyhPYmplY3QuYXNzaWduKHt9LCB0ZXN0Mykp
LmpvaW4oJycpICE9PQorICAgICAgICAgICAgICAgICdhYmNkZWZnaGlqa2xtbm9wcXJzdCcpIHsK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgLy8gV2UgZG9uJ3QgZXhwZWN0IGFueSBv
ZiB0aGUgYWJvdmUgdG8gdGhyb3csIGJ1dCBiZXR0ZXIgdG8gYmUgc2FmZS4KKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KK30KKworbW9kdWxlLmV4cG9ydHMgPSBzaG91bGRVc2VOYXRpdmUo
KSA/IE9iamVjdC5hc3NpZ24gOiBmdW5jdGlvbiAodGFyZ2V0LCBzb3VyY2UpIHsKKyAgICB2YXIg
ZnJvbTsKKyAgICB2YXIgdG8gPSB0b09iamVjdCh0YXJnZXQpOworICAgIHZhciBzeW1ib2xzOwor
CisgICAgZm9yICh2YXIgcyA9IDE7IHMgPCBhcmd1bWVudHMubGVuZ3RoOyBzKyspIHsKKyAgICAg
ICAgZnJvbSA9IE9iamVjdChhcmd1bWVudHNbc10pOworCisgICAgICAgIGZvciAodmFyIGtleSBp
biBmcm9tKSB7CisgICAgICAgICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChmcm9tLCBrZXkp
KSB7CisgICAgICAgICAgICAgICAgdG9ba2V5XSA9IGZyb21ba2V5XTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorCisgICAgICAgIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7
CisgICAgICAgICAgICBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhmcm9t
KTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3ltYm9scy5sZW5ndGg7IGkrKykg
eworICAgICAgICAgICAgICAgIGlmIChwcm9wSXNFbnVtZXJhYmxlLmNhbGwoZnJvbSwgc3ltYm9s
c1tpXSkpIHsKKyAgICAgICAgICAgICAgICAgICAgdG9bc3ltYm9sc1tpXV0gPSBmcm9tW3N5bWJv
bHNbaV1dOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0KKworICAgIHJldHVybiB0bzsKK307CisKK30se31dfSx7fSxbMThdKSgxOCkKK30pOwpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25v
ZGVfbW9kdWxlcy9yZWFjdC9kaXN0L3JlYWN0Lm1pbi5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25v
ZGVfbW9kdWxlcy9yZWFjdC9kaXN0L3JlYWN0Lm1pbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NjEzNzBhNjZl
YzEyYjljOGFlODc3Y2QyNDYyNjk3MDFmN2Q0YTA3Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2Rpc3QvcmVhY3QubWluLmpzCkBAIC0wLDAg
KzEsMTIgQEAKKy8qKgorICogUmVhY3QgdjE1LjQuMAorICoKKyAqIENvcHlyaWdodCAyMDEzLXBy
ZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRo
aXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZv
dW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlz
IHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNh
biBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAq
CisgKi8KKyFmdW5jdGlvbih0KXtpZigib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHMmJiJ1bmRlZmlu
ZWQiIT10eXBlb2YgbW9kdWxlKW1vZHVsZS5leHBvcnRzPXQoKTtlbHNlIGlmKCJmdW5jdGlvbiI9
PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQpZGVmaW5lKFtdLHQpO2Vsc2V7dmFyIGU7ZT0idW5k
ZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/
Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOnRoaXMsZS5SZWFjdD10KCl9fShm
dW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiB0KGUsbixyKXtmdW5jdGlvbiBvKHUsYSl7aWYoIW5b
dV0pe2lmKCFlW3VdKXt2YXIgcz0iZnVuY3Rpb24iPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZTtp
ZighYSYmcylyZXR1cm4gcyh1LCEwKTtpZihpKXJldHVybiBpKHUsITApO3ZhciBjPW5ldyBFcnJv
cigiQ2Fubm90IGZpbmQgbW9kdWxlICciK3UrIiciKTt0aHJvdyBjLmNvZGU9Ik1PRFVMRV9OT1Rf
Rk9VTkQiLGN9dmFyIGw9blt1XT17ZXhwb3J0czp7fX07ZVt1XVswXS5jYWxsKGwuZXhwb3J0cyxm
dW5jdGlvbih0KXt2YXIgbj1lW3VdWzFdW3RdO3JldHVybiBvKG4/bjp0KX0sbCxsLmV4cG9ydHMs
dCxlLG4scil9cmV0dXJuIG5bdV0uZXhwb3J0c31mb3IodmFyIGk9ImZ1bmN0aW9uIj09dHlwZW9m
IHJlcXVpcmUmJnJlcXVpcmUsdT0wO3U8ci5sZW5ndGg7dSsrKW8oclt1XSk7cmV0dXJuIG99KHsx
OltmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIodCl7dmFyIGU9L1s9Ol0v
ZyxuPXsiPSI6Ij0wIiwiOiI6Ij0yIn0scj0oIiIrdCkucmVwbGFjZShlLGZ1bmN0aW9uKHQpe3Jl
dHVybiBuW3RdfSk7cmV0dXJuIiQiK3J9ZnVuY3Rpb24gbyh0KXt2YXIgZT0vKD0wfD0yKS9nLG49
eyI9MCI6Ij0iLCI9MiI6IjoifSxyPSIuIj09PXRbMF0mJiIkIj09PXRbMV0/dC5zdWJzdHJpbmco
Mik6dC5zdWJzdHJpbmcoMSk7cmV0dXJuKCIiK3IpLnJlcGxhY2UoZSxmdW5jdGlvbih0KXtyZXR1
cm4gblt0XX0pfXZhciBpPXtlc2NhcGU6cix1bmVzY2FwZTpvfTtlLmV4cG9ydHM9aX0se31dLDI6
W2Z1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9dCgyMSksbz0odCgyNSksZnVuY3Rp
b24odCl7dmFyIGU9dGhpcztpZihlLmluc3RhbmNlUG9vbC5sZW5ndGgpe3ZhciBuPWUuaW5zdGFu
Y2VQb29sLnBvcCgpO3JldHVybiBlLmNhbGwobix0KSxufXJldHVybiBuZXcgZSh0KX0pLGk9ZnVu
Y3Rpb24odCxlKXt2YXIgbj10aGlzO2lmKG4uaW5zdGFuY2VQb29sLmxlbmd0aCl7dmFyIHI9bi5p
bnN0YW5jZVBvb2wucG9wKCk7cmV0dXJuIG4uY2FsbChyLHQsZSkscn1yZXR1cm4gbmV3IG4odCxl
KX0sdT1mdW5jdGlvbih0LGUsbil7dmFyIHI9dGhpcztpZihyLmluc3RhbmNlUG9vbC5sZW5ndGgp
e3ZhciBvPXIuaW5zdGFuY2VQb29sLnBvcCgpO3JldHVybiByLmNhbGwobyx0LGUsbiksb31yZXR1
cm4gbmV3IHIodCxlLG4pfSxhPWZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBvPXRoaXM7aWYoby5pbnN0
YW5jZVBvb2wubGVuZ3RoKXt2YXIgaT1vLmluc3RhbmNlUG9vbC5wb3AoKTtyZXR1cm4gby5jYWxs
KGksdCxlLG4sciksaX1yZXR1cm4gbmV3IG8odCxlLG4scil9LHM9ZnVuY3Rpb24odCxlLG4scixv
KXt2YXIgaT10aGlzO2lmKGkuaW5zdGFuY2VQb29sLmxlbmd0aCl7dmFyIHU9aS5pbnN0YW5jZVBv
b2wucG9wKCk7cmV0dXJuIGkuY2FsbCh1LHQsZSxuLHIsbyksdX1yZXR1cm4gbmV3IGkodCxlLG4s
cixvKX0sYz1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3QgaW5zdGFuY2VvZiBlP3ZvaWQgMDpyKCIy
NSIpLHQuZGVzdHJ1Y3RvcigpLGUuaW5zdGFuY2VQb29sLmxlbmd0aDxlLnBvb2xTaXplJiZlLmlu
c3RhbmNlUG9vbC5wdXNoKHQpfSxsPTEwLGY9byxwPWZ1bmN0aW9uKHQsZSl7dmFyIG49dDtyZXR1
cm4gbi5pbnN0YW5jZVBvb2w9W10sbi5nZXRQb29sZWQ9ZXx8ZixuLnBvb2xTaXplfHwobi5wb29s
U2l6ZT1sKSxuLnJlbGVhc2U9YyxufSxkPXthZGRQb29saW5nVG86cCxvbmVBcmd1bWVudFBvb2xl
cjpvLHR3b0FyZ3VtZW50UG9vbGVyOmksdGhyZWVBcmd1bWVudFBvb2xlcjp1LGZvdXJBcmd1bWVu
dFBvb2xlcjphLGZpdmVBcmd1bWVudFBvb2xlcjpzfTtlLmV4cG9ydHM9ZH0sezIxOjIxLDI1OjI1
fV0sMzpbZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj10KDI3KSxvPXQoNCksaT10
KDYpLHU9dCgxNSksYT10KDUpLHM9dCg4KSxjPXQoOSksbD10KDEzKSxmPXQoMTcpLHA9dCgyMCks
ZD0odCgyNiksYy5jcmVhdGVFbGVtZW50KSx2PWMuY3JlYXRlRmFjdG9yeSx5PWMuY2xvbmVFbGVt
ZW50LGg9cixtPXtDaGlsZHJlbjp7bWFwOm8ubWFwLGZvckVhY2g6by5mb3JFYWNoLGNvdW50Om8u
Y291bnQsdG9BcnJheTpvLnRvQXJyYXksb25seTpwfSxDb21wb25lbnQ6aSxQdXJlQ29tcG9uZW50
OnUsY3JlYXRlRWxlbWVudDpkLGNsb25lRWxlbWVudDp5LGlzVmFsaWRFbGVtZW50OmMuaXNWYWxp
ZEVsZW1lbnQsUHJvcFR5cGVzOmwsY3JlYXRlQ2xhc3M6YS5jcmVhdGVDbGFzcyxjcmVhdGVGYWN0
b3J5OnYsY3JlYXRlTWl4aW46ZnVuY3Rpb24odCl7cmV0dXJuIHR9LERPTTpzLHZlcnNpb246Zixf
X3NwcmVhZDpofTtlLmV4cG9ydHM9bX0sezEzOjEzLDE1OjE1LDE3OjE3LDIwOjIwLDI2OjI2LDI3
OjI3LDQ6NCw1OjUsNjo2LDg6OCw5Ojl9XSw0OltmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIHIodCl7cmV0dXJuKCIiK3QpLnJlcGxhY2UoRSwiJCYvIil9ZnVuY3Rpb24gbyh0
LGUpe3RoaXMuZnVuYz10LHRoaXMuY29udGV4dD1lLHRoaXMuY291bnQ9MH1mdW5jdGlvbiBpKHQs
ZSxuKXt2YXIgcj10LmZ1bmMsbz10LmNvbnRleHQ7ci5jYWxsKG8sZSx0LmNvdW50KyspfWZ1bmN0
aW9uIHUodCxlLG4pe2lmKG51bGw9PXQpcmV0dXJuIHQ7dmFyIHI9by5nZXRQb29sZWQoZSxuKTtt
KHQsaSxyKSxvLnJlbGVhc2Uocil9ZnVuY3Rpb24gYSh0LGUsbixyKXt0aGlzLnJlc3VsdD10LHRo
aXMua2V5UHJlZml4PWUsdGhpcy5mdW5jPW4sdGhpcy5jb250ZXh0PXIsdGhpcy5jb3VudD0wfWZ1
bmN0aW9uIHModCxlLG4pe3ZhciBvPXQucmVzdWx0LGk9dC5rZXlQcmVmaXgsdT10LmZ1bmMsYT10
LmNvbnRleHQscz11LmNhbGwoYSxlLHQuY291bnQrKyk7QXJyYXkuaXNBcnJheShzKT9jKHMsbyxu
LGgudGhhdFJldHVybnNBcmd1bWVudCk6bnVsbCE9cyYmKHkuaXNWYWxpZEVsZW1lbnQocykmJihz
PXkuY2xvbmVBbmRSZXBsYWNlS2V5KHMsaSsoIXMua2V5fHxlJiZlLmtleT09PXMua2V5PyIiOnIo
cy5rZXkpKyIvIikrbikpLG8ucHVzaChzKSl9ZnVuY3Rpb24gYyh0LGUsbixvLGkpe3ZhciB1PSIi
O251bGwhPW4mJih1PXIobikrIi8iKTt2YXIgYz1hLmdldFBvb2xlZChlLHUsbyxpKTttKHQscyxj
KSxhLnJlbGVhc2UoYyl9ZnVuY3Rpb24gbCh0LGUsbil7aWYobnVsbD09dClyZXR1cm4gdDt2YXIg
cj1bXTtyZXR1cm4gYyh0LHIsbnVsbCxlLG4pLHJ9ZnVuY3Rpb24gZih0LGUsbil7cmV0dXJuIG51
bGx9ZnVuY3Rpb24gcCh0LGUpe3JldHVybiBtKHQsZixudWxsKX1mdW5jdGlvbiBkKHQpe3ZhciBl
PVtdO3JldHVybiBjKHQsZSxudWxsLGgudGhhdFJldHVybnNBcmd1bWVudCksZX12YXIgdj10KDIp
LHk9dCg5KSxoPXQoMjMpLG09dCgyMiksYj12LnR3b0FyZ3VtZW50UG9vbGVyLGc9di5mb3VyQXJn
dW1lbnRQb29sZXIsRT0vXC8rL2c7by5wcm90b3R5cGUuZGVzdHJ1Y3Rvcj1mdW5jdGlvbigpe3Ro
aXMuZnVuYz1udWxsLHRoaXMuY29udGV4dD1udWxsLHRoaXMuY291bnQ9MH0sdi5hZGRQb29saW5n
VG8obyxiKSxhLnByb3RvdHlwZS5kZXN0cnVjdG9yPWZ1bmN0aW9uKCl7dGhpcy5yZXN1bHQ9bnVs
bCx0aGlzLmtleVByZWZpeD1udWxsLHRoaXMuZnVuYz1udWxsLHRoaXMuY29udGV4dD1udWxsLHRo
aXMuY291bnQ9MH0sdi5hZGRQb29saW5nVG8oYSxnKTt2YXIgeD17Zm9yRWFjaDp1LG1hcDpsLG1h
cEludG9XaXRoS2V5UHJlZml4SW50ZXJuYWw6Yyxjb3VudDpwLHRvQXJyYXk6ZH07ZS5leHBvcnRz
PXh9LHsyOjIsMjI6MjIsMjM6MjMsOTo5fV0sNTpbZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiByKHQpe3JldHVybiB0fWZ1bmN0aW9uIG8odCxlKXt2YXIgbj1FLmhhc093blBy
b3BlcnR5KGUpP0VbZV06bnVsbDtfLmhhc093blByb3BlcnR5KGUpJiYoIk9WRVJSSURFX0JBU0Ui
IT09bj9wKCI3MyIsZSk6dm9pZCAwKSx0JiYoIkRFRklORV9NQU5ZIiE9PW4mJiJERUZJTkVfTUFO
WV9NRVJHRUQiIT09bj9wKCI3NCIsZSk6dm9pZCAwKX1mdW5jdGlvbiBpKHQsZSl7aWYoZSl7ImZ1
bmN0aW9uIj09dHlwZW9mIGU/cCgiNzUiKTp2b2lkIDAseS5pc1ZhbGlkRWxlbWVudChlKT9wKCI3
NiIpOnZvaWQgMDt2YXIgbj10LnByb3RvdHlwZSxyPW4uX19yZWFjdEF1dG9CaW5kUGFpcnM7ZS5o
YXNPd25Qcm9wZXJ0eShiKSYmeC5taXhpbnModCxlLm1peGlucyk7Zm9yKHZhciBpIGluIGUpaWYo
ZS5oYXNPd25Qcm9wZXJ0eShpKSYmaSE9PWIpe3ZhciB1PWVbaV0sYT1uLmhhc093blByb3BlcnR5
KGkpO2lmKG8oYSxpKSx4Lmhhc093blByb3BlcnR5KGkpKXhbaV0odCx1KTtlbHNle3ZhciBsPUUu
aGFzT3duUHJvcGVydHkoaSksZj0iZnVuY3Rpb24iPT10eXBlb2YgdSxkPWYmJiFsJiYhYSYmZS5h
dXRvYmluZCE9PSExO2lmKGQpci5wdXNoKGksdSksbltpXT11O2Vsc2UgaWYoYSl7dmFyIHY9RVtp
XTshbHx8IkRFRklORV9NQU5ZX01FUkdFRCIhPT12JiYiREVGSU5FX01BTlkiIT09dj9wKCI3NyIs
dixpKTp2b2lkIDAsIkRFRklORV9NQU5ZX01FUkdFRCI9PT12P25baV09cyhuW2ldLHUpOiJERUZJ
TkVfTUFOWSI9PT12JiYobltpXT1jKG5baV0sdSkpfWVsc2UgbltpXT11fX19fWZ1bmN0aW9uIHUo
dCxlKXtpZihlKWZvcih2YXIgbiBpbiBlKXt2YXIgcj1lW25dO2lmKGUuaGFzT3duUHJvcGVydHko
bikpe3ZhciBvPW4gaW4geDtvP3AoIjc4IixuKTp2b2lkIDA7dmFyIGk9biBpbiB0O2k/cCgiNzki
LG4pOnZvaWQgMCx0W25dPXJ9fX1mdW5jdGlvbiBhKHQsZSl7dCYmZSYmIm9iamVjdCI9PXR5cGVv
ZiB0JiYib2JqZWN0Ij09dHlwZW9mIGU/dm9pZCAwOnAoIjgwIik7Zm9yKHZhciBuIGluIGUpZS5o
YXNPd25Qcm9wZXJ0eShuKSYmKHZvaWQgMCE9PXRbbl0/cCgiODEiLG4pOnZvaWQgMCx0W25dPWVb
bl0pO3JldHVybiB0fWZ1bmN0aW9uIHModCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj10LmFw
cGx5KHRoaXMsYXJndW1lbnRzKSxyPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO2lmKG51bGw9PW4p
cmV0dXJuIHI7aWYobnVsbD09cilyZXR1cm4gbjt2YXIgbz17fTtyZXR1cm4gYShvLG4pLGEobyxy
KSxvfX1mdW5jdGlvbiBjKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dC5hcHBseSh0aGlzLGFyZ3Vt
ZW50cyksZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIGwodCxlKXt2YXIgbj1lLmJp
bmQodCk7cmV0dXJuIG59ZnVuY3Rpb24gZih0KXtmb3IodmFyIGU9dC5fX3JlYWN0QXV0b0JpbmRQ
YWlycyxuPTA7bjxlLmxlbmd0aDtuKz0yKXt2YXIgcj1lW25dLG89ZVtuKzFdO3Rbcl09bCh0LG8p
fX12YXIgcD10KDIxKSxkPXQoMjcpLHY9dCg2KSx5PXQoOSksaD0odCgxMiksdCgxMSkpLG09dCgy
NCksYj0odCgyNSksdCgyNiksIm1peGlucyIpLGc9W10sRT17bWl4aW5zOiJERUZJTkVfTUFOWSIs
c3RhdGljczoiREVGSU5FX01BTlkiLHByb3BUeXBlczoiREVGSU5FX01BTlkiLGNvbnRleHRUeXBl
czoiREVGSU5FX01BTlkiLGNoaWxkQ29udGV4dFR5cGVzOiJERUZJTkVfTUFOWSIsZ2V0RGVmYXVs
dFByb3BzOiJERUZJTkVfTUFOWV9NRVJHRUQiLGdldEluaXRpYWxTdGF0ZToiREVGSU5FX01BTllf
TUVSR0VEIixnZXRDaGlsZENvbnRleHQ6IkRFRklORV9NQU5ZX01FUkdFRCIscmVuZGVyOiJERUZJ
TkVfT05DRSIsY29tcG9uZW50V2lsbE1vdW50OiJERUZJTkVfTUFOWSIsY29tcG9uZW50RGlkTW91
bnQ6IkRFRklORV9NQU5ZIixjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzOiJERUZJTkVfTUFOWSIs
c2hvdWxkQ29tcG9uZW50VXBkYXRlOiJERUZJTkVfT05DRSIsY29tcG9uZW50V2lsbFVwZGF0ZToi
REVGSU5FX01BTlkiLGNvbXBvbmVudERpZFVwZGF0ZToiREVGSU5FX01BTlkiLGNvbXBvbmVudFdp
bGxVbm1vdW50OiJERUZJTkVfTUFOWSIsdXBkYXRlQ29tcG9uZW50OiJPVkVSUklERV9CQVNFIn0s
eD17ZGlzcGxheU5hbWU6ZnVuY3Rpb24odCxlKXt0LmRpc3BsYXlOYW1lPWV9LG1peGluczpmdW5j
dGlvbih0LGUpe2lmKGUpZm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspaSh0LGVbbl0pfSxjaGls
ZENvbnRleHRUeXBlczpmdW5jdGlvbih0LGUpe3QuY2hpbGRDb250ZXh0VHlwZXM9ZCh7fSx0LmNo
aWxkQ29udGV4dFR5cGVzLGUpfSxjb250ZXh0VHlwZXM6ZnVuY3Rpb24odCxlKXt0LmNvbnRleHRU
eXBlcz1kKHt9LHQuY29udGV4dFR5cGVzLGUpfSxnZXREZWZhdWx0UHJvcHM6ZnVuY3Rpb24odCxl
KXt0LmdldERlZmF1bHRQcm9wcz90LmdldERlZmF1bHRQcm9wcz1zKHQuZ2V0RGVmYXVsdFByb3Bz
LGUpOnQuZ2V0RGVmYXVsdFByb3BzPWV9LHByb3BUeXBlczpmdW5jdGlvbih0LGUpe3QucHJvcFR5
cGVzPWQoe30sdC5wcm9wVHlwZXMsZSl9LHN0YXRpY3M6ZnVuY3Rpb24odCxlKXt1KHQsZSl9LGF1
dG9iaW5kOmZ1bmN0aW9uKCl7fX0sXz17cmVwbGFjZVN0YXRlOmZ1bmN0aW9uKHQsZSl7dGhpcy51
cGRhdGVyLmVucXVldWVSZXBsYWNlU3RhdGUodGhpcyx0KSxlJiZ0aGlzLnVwZGF0ZXIuZW5xdWV1
ZUNhbGxiYWNrKHRoaXMsZSwicmVwbGFjZVN0YXRlIil9LGlzTW91bnRlZDpmdW5jdGlvbigpe3Jl
dHVybiB0aGlzLnVwZGF0ZXIuaXNNb3VudGVkKHRoaXMpfX0sUD1mdW5jdGlvbigpe307ZChQLnBy
b3RvdHlwZSx2LnByb3RvdHlwZSxfKTt2YXIgdz17Y3JlYXRlQ2xhc3M6ZnVuY3Rpb24odCl7dmFy
IGU9cihmdW5jdGlvbih0LG4scil7dGhpcy5fX3JlYWN0QXV0b0JpbmRQYWlycy5sZW5ndGgmJmYo
dGhpcyksdGhpcy5wcm9wcz10LHRoaXMuY29udGV4dD1uLHRoaXMucmVmcz1tLHRoaXMudXBkYXRl
cj1yfHxoLHRoaXMuc3RhdGU9bnVsbDt2YXIgbz10aGlzLmdldEluaXRpYWxTdGF0ZT90aGlzLmdl
dEluaXRpYWxTdGF0ZSgpOm51bGw7Im9iamVjdCIhPXR5cGVvZiBvfHxBcnJheS5pc0FycmF5KG8p
P3AoIjgyIixlLmRpc3BsYXlOYW1lfHwiUmVhY3RDb21wb3NpdGVDb21wb25lbnQiKTp2b2lkIDAs
dGhpcy5zdGF0ZT1vfSk7ZS5wcm90b3R5cGU9bmV3IFAsZS5wcm90b3R5cGUuY29uc3RydWN0b3I9
ZSxlLnByb3RvdHlwZS5fX3JlYWN0QXV0b0JpbmRQYWlycz1bXSxnLmZvckVhY2goaS5iaW5kKG51
bGwsZSkpLGkoZSx0KSxlLmdldERlZmF1bHRQcm9wcyYmKGUuZGVmYXVsdFByb3BzPWUuZ2V0RGVm
YXVsdFByb3BzKCkpLGUucHJvdG90eXBlLnJlbmRlcj92b2lkIDA6cCgiODMiKTtmb3IodmFyIG4g
aW4gRSllLnByb3RvdHlwZVtuXXx8KGUucHJvdG90eXBlW25dPW51bGwpO3JldHVybiBlfSxpbmpl
Y3Rpb246e2luamVjdE1peGluOmZ1bmN0aW9uKHQpe2cucHVzaCh0KX19fTtlLmV4cG9ydHM9d30s
ezExOjExLDEyOjEyLDIxOjIxLDI0OjI0LDI1OjI1LDI2OjI2LDI3OjI3LDY6Niw5Ojl9XSw2Oltm
dW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIodCxlLG4pe3RoaXMucHJvcHM9
dCx0aGlzLmNvbnRleHQ9ZSx0aGlzLnJlZnM9dSx0aGlzLnVwZGF0ZXI9bnx8aX12YXIgbz10KDIx
KSxpPXQoMTEpLHU9KHQoMTgpLHQoMjQpKTt0KDI1KSx0KDI2KTtyLnByb3RvdHlwZS5pc1JlYWN0
Q29tcG9uZW50PXt9LHIucHJvdG90eXBlLnNldFN0YXRlPWZ1bmN0aW9uKHQsZSl7Im9iamVjdCIh
PXR5cGVvZiB0JiYiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9dD9vKCI4NSIpOnZvaWQgMCx0
aGlzLnVwZGF0ZXIuZW5xdWV1ZVNldFN0YXRlKHRoaXMsdCksZSYmdGhpcy51cGRhdGVyLmVucXVl
dWVDYWxsYmFjayh0aGlzLGUsInNldFN0YXRlIil9LHIucHJvdG90eXBlLmZvcmNlVXBkYXRlPWZ1
bmN0aW9uKHQpe3RoaXMudXBkYXRlci5lbnF1ZXVlRm9yY2VVcGRhdGUodGhpcyksdCYmdGhpcy51
cGRhdGVyLmVucXVldWVDYWxsYmFjayh0aGlzLHQsImZvcmNlVXBkYXRlIil9O2UuZXhwb3J0cz1y
fSx7MTE6MTEsMTg6MTgsMjE6MjEsMjQ6MjQsMjU6MjUsMjY6MjZ9XSw3OltmdW5jdGlvbih0LGUs
bil7InVzZSBzdHJpY3QiO3ZhciByPXtjdXJyZW50Om51bGx9O2UuZXhwb3J0cz1yfSx7fV0sODpb
ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj10KDkpLG89ci5jcmVhdGVGYWN0b3J5
LGk9e2E6bygiYSIpLGFiYnI6bygiYWJiciIpLGFkZHJlc3M6bygiYWRkcmVzcyIpLGFyZWE6bygi
YXJlYSIpLGFydGljbGU6bygiYXJ0aWNsZSIpLGFzaWRlOm8oImFzaWRlIiksYXVkaW86bygiYXVk
aW8iKSxiOm8oImIiKSxiYXNlOm8oImJhc2UiKSxiZGk6bygiYmRpIiksYmRvOm8oImJkbyIpLGJp
ZzpvKCJiaWciKSxibG9ja3F1b3RlOm8oImJsb2NrcXVvdGUiKSxib2R5Om8oImJvZHkiKSxicjpv
KCJiciIpLGJ1dHRvbjpvKCJidXR0b24iKSxjYW52YXM6bygiY2FudmFzIiksY2FwdGlvbjpvKCJj
YXB0aW9uIiksY2l0ZTpvKCJjaXRlIiksY29kZTpvKCJjb2RlIiksY29sOm8oImNvbCIpLGNvbGdy
b3VwOm8oImNvbGdyb3VwIiksZGF0YTpvKCJkYXRhIiksZGF0YWxpc3Q6bygiZGF0YWxpc3QiKSxk
ZDpvKCJkZCIpLGRlbDpvKCJkZWwiKSxkZXRhaWxzOm8oImRldGFpbHMiKSxkZm46bygiZGZuIiks
ZGlhbG9nOm8oImRpYWxvZyIpLGRpdjpvKCJkaXYiKSxkbDpvKCJkbCIpLGR0Om8oImR0IiksZW06
bygiZW0iKSxlbWJlZDpvKCJlbWJlZCIpLGZpZWxkc2V0Om8oImZpZWxkc2V0IiksZmlnY2FwdGlv
bjpvKCJmaWdjYXB0aW9uIiksZmlndXJlOm8oImZpZ3VyZSIpLGZvb3RlcjpvKCJmb290ZXIiKSxm
b3JtOm8oImZvcm0iKSxoMTpvKCJoMSIpLGgyOm8oImgyIiksaDM6bygiaDMiKSxoNDpvKCJoNCIp
LGg1Om8oImg1IiksaDY6bygiaDYiKSxoZWFkOm8oImhlYWQiKSxoZWFkZXI6bygiaGVhZGVyIiks
aGdyb3VwOm8oImhncm91cCIpLGhyOm8oImhyIiksaHRtbDpvKCJodG1sIiksaTpvKCJpIiksaWZy
YW1lOm8oImlmcmFtZSIpLGltZzpvKCJpbWciKSxpbnB1dDpvKCJpbnB1dCIpLGluczpvKCJpbnMi
KSxrYmQ6bygia2JkIiksa2V5Z2VuOm8oImtleWdlbiIpLGxhYmVsOm8oImxhYmVsIiksbGVnZW5k
Om8oImxlZ2VuZCIpLGxpOm8oImxpIiksbGluazpvKCJsaW5rIiksbWFpbjpvKCJtYWluIiksbWFw
Om8oIm1hcCIpLG1hcms6bygibWFyayIpLG1lbnU6bygibWVudSIpLG1lbnVpdGVtOm8oIm1lbnVp
dGVtIiksbWV0YTpvKCJtZXRhIiksbWV0ZXI6bygibWV0ZXIiKSxuYXY6bygibmF2Iiksbm9zY3Jp
cHQ6bygibm9zY3JpcHQiKSxvYmplY3Q6bygib2JqZWN0Iiksb2w6bygib2wiKSxvcHRncm91cDpv
KCJvcHRncm91cCIpLG9wdGlvbjpvKCJvcHRpb24iKSxvdXRwdXQ6bygib3V0cHV0IikscDpvKCJw
IikscGFyYW06bygicGFyYW0iKSxwaWN0dXJlOm8oInBpY3R1cmUiKSxwcmU6bygicHJlIikscHJv
Z3Jlc3M6bygicHJvZ3Jlc3MiKSxxOm8oInEiKSxycDpvKCJycCIpLHJ0Om8oInJ0IikscnVieTpv
KCJydWJ5IiksczpvKCJzIiksc2FtcDpvKCJzYW1wIiksc2NyaXB0Om8oInNjcmlwdCIpLHNlY3Rp
b246bygic2VjdGlvbiIpLHNlbGVjdDpvKCJzZWxlY3QiKSxzbWFsbDpvKCJzbWFsbCIpLHNvdXJj
ZTpvKCJzb3VyY2UiKSxzcGFuOm8oInNwYW4iKSxzdHJvbmc6bygic3Ryb25nIiksc3R5bGU6bygi
c3R5bGUiKSxzdWI6bygic3ViIiksc3VtbWFyeTpvKCJzdW1tYXJ5Iiksc3VwOm8oInN1cCIpLHRh
YmxlOm8oInRhYmxlIiksdGJvZHk6bygidGJvZHkiKSx0ZDpvKCJ0ZCIpLHRleHRhcmVhOm8oInRl
eHRhcmVhIiksdGZvb3Q6bygidGZvb3QiKSx0aDpvKCJ0aCIpLHRoZWFkOm8oInRoZWFkIiksdGlt
ZTpvKCJ0aW1lIiksdGl0bGU6bygidGl0bGUiKSx0cjpvKCJ0ciIpLHRyYWNrOm8oInRyYWNrIiks
dTpvKCJ1IiksdWw6bygidWwiKSx2YXI6bygidmFyIiksdmlkZW86bygidmlkZW8iKSx3YnI6bygi
d2JyIiksY2lyY2xlOm8oImNpcmNsZSIpLGNsaXBQYXRoOm8oImNsaXBQYXRoIiksZGVmczpvKCJk
ZWZzIiksZWxsaXBzZTpvKCJlbGxpcHNlIiksZzpvKCJnIiksaW1hZ2U6bygiaW1hZ2UiKSxsaW5l
Om8oImxpbmUiKSxsaW5lYXJHcmFkaWVudDpvKCJsaW5lYXJHcmFkaWVudCIpLG1hc2s6bygibWFz
ayIpLHBhdGg6bygicGF0aCIpLHBhdHRlcm46bygicGF0dGVybiIpLHBvbHlnb246bygicG9seWdv
biIpLHBvbHlsaW5lOm8oInBvbHlsaW5lIikscmFkaWFsR3JhZGllbnQ6bygicmFkaWFsR3JhZGll
bnQiKSxyZWN0Om8oInJlY3QiKSxzdG9wOm8oInN0b3AiKSxzdmc6bygic3ZnIiksdGV4dDpvKCJ0
ZXh0IiksdHNwYW46bygidHNwYW4iKX07ZS5leHBvcnRzPWl9LHs5Ojl9XSw5OltmdW5jdGlvbih0
LGUsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIodCl7cmV0dXJuIHZvaWQgMCE9PXQucmVmfWZ1
bmN0aW9uIG8odCl7cmV0dXJuIHZvaWQgMCE9PXQua2V5fXZhciBpPXQoMjcpLHU9dCg3KSxhPSh0
KDI2KSx0KDE4KSxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5KSxzPXQoMTApLGM9e2tl
eTohMCxyZWY6ITAsX19zZWxmOiEwLF9fc291cmNlOiEwfSxsPWZ1bmN0aW9uKHQsZSxuLHIsbyxp
LHUpe3ZhciBhPXskJHR5cGVvZjpzLHR5cGU6dCxrZXk6ZSxyZWY6bixwcm9wczp1LF9vd25lcjpp
fTtyZXR1cm4gYX07bC5jcmVhdGVFbGVtZW50PWZ1bmN0aW9uKHQsZSxuKXt2YXIgaSxzPXt9LGY9
bnVsbCxwPW51bGwsZD1udWxsLHY9bnVsbDtpZihudWxsIT1lKXtyKGUpJiYocD1lLnJlZiksbyhl
KSYmKGY9IiIrZS5rZXkpLGQ9dm9pZCAwPT09ZS5fX3NlbGY/bnVsbDplLl9fc2VsZix2PXZvaWQg
MD09PWUuX19zb3VyY2U/bnVsbDplLl9fc291cmNlO2ZvcihpIGluIGUpYS5jYWxsKGUsaSkmJiFj
Lmhhc093blByb3BlcnR5KGkpJiYoc1tpXT1lW2ldKX12YXIgeT1hcmd1bWVudHMubGVuZ3RoLTI7
aWYoMT09PXkpcy5jaGlsZHJlbj1uO2Vsc2UgaWYoeT4xKXtmb3IodmFyIGg9QXJyYXkoeSksbT0w
O208eTttKyspaFttXT1hcmd1bWVudHNbbSsyXTtzLmNoaWxkcmVuPWh9aWYodCYmdC5kZWZhdWx0
UHJvcHMpe3ZhciBiPXQuZGVmYXVsdFByb3BzO2ZvcihpIGluIGIpdm9pZCAwPT09c1tpXSYmKHNb
aV09YltpXSl9cmV0dXJuIGwodCxmLHAsZCx2LHUuY3VycmVudCxzKX0sbC5jcmVhdGVGYWN0b3J5
PWZ1bmN0aW9uKHQpe3ZhciBlPWwuY3JlYXRlRWxlbWVudC5iaW5kKG51bGwsdCk7cmV0dXJuIGUu
dHlwZT10LGV9LGwuY2xvbmVBbmRSZXBsYWNlS2V5PWZ1bmN0aW9uKHQsZSl7dmFyIG49bCh0LnR5
cGUsZSx0LnJlZix0Ll9zZWxmLHQuX3NvdXJjZSx0Ll9vd25lcix0LnByb3BzKTtyZXR1cm4gbn0s
bC5jbG9uZUVsZW1lbnQ9ZnVuY3Rpb24odCxlLG4pe3ZhciBzLGY9aSh7fSx0LnByb3BzKSxwPXQu
a2V5LGQ9dC5yZWYsdj10Ll9zZWxmLHk9dC5fc291cmNlLGg9dC5fb3duZXI7aWYobnVsbCE9ZSl7
cihlKSYmKGQ9ZS5yZWYsaD11LmN1cnJlbnQpLG8oZSkmJihwPSIiK2Uua2V5KTt2YXIgbTt0LnR5
cGUmJnQudHlwZS5kZWZhdWx0UHJvcHMmJihtPXQudHlwZS5kZWZhdWx0UHJvcHMpO2ZvcihzIGlu
IGUpYS5jYWxsKGUscykmJiFjLmhhc093blByb3BlcnR5KHMpJiYodm9pZCAwPT09ZVtzXSYmdm9p
ZCAwIT09bT9mW3NdPW1bc106ZltzXT1lW3NdKX12YXIgYj1hcmd1bWVudHMubGVuZ3RoLTI7aWYo
MT09PWIpZi5jaGlsZHJlbj1uO2Vsc2UgaWYoYj4xKXtmb3IodmFyIGc9QXJyYXkoYiksRT0wO0U8
YjtFKyspZ1tFXT1hcmd1bWVudHNbRSsyXTtmLmNoaWxkcmVuPWd9cmV0dXJuIGwodC50eXBlLHAs
ZCx2LHksaCxmKX0sbC5pc1ZhbGlkRWxlbWVudD1mdW5jdGlvbih0KXtyZXR1cm4ib2JqZWN0Ij09
dHlwZW9mIHQmJm51bGwhPT10JiZ0LiQkdHlwZW9mPT09c30sZS5leHBvcnRzPWx9LHsxMDoxMCwx
ODoxOCwyNjoyNiwyNzoyNyw3Ojd9XSwxMDpbZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2
YXIgcj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuZm9yJiZTeW1ib2wuZm9yKCJy
ZWFjdC5lbGVtZW50Iil8fDYwMTAzO2UuZXhwb3J0cz1yfSx7fV0sMTE6W2Z1bmN0aW9uKHQsZSxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcih0LGUpe312YXIgbz0odCgyNikse2lzTW91bnRlZDpm
dW5jdGlvbih0KXtyZXR1cm4hMX0sZW5xdWV1ZUNhbGxiYWNrOmZ1bmN0aW9uKHQsZSl7fSxlbnF1
ZXVlRm9yY2VVcGRhdGU6ZnVuY3Rpb24odCl7cih0LCJmb3JjZVVwZGF0ZSIpfSxlbnF1ZXVlUmVw
bGFjZVN0YXRlOmZ1bmN0aW9uKHQsZSl7cih0LCJyZXBsYWNlU3RhdGUiKX0sZW5xdWV1ZVNldFN0
YXRlOmZ1bmN0aW9uKHQsZSl7cih0LCJzZXRTdGF0ZSIpfX0pO2UuZXhwb3J0cz1vfSx7MjY6MjZ9
XSwxMjpbZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj17fTtlLmV4cG9ydHM9cn0s
e31dLDEzOltmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIodCxlKXtyZXR1
cm4gdD09PWU/MCE9PXR8fDEvdD09PTEvZTp0IT09dCYmZSE9PWV9ZnVuY3Rpb24gbyh0KXt0aGlz
Lm1lc3NhZ2U9dCx0aGlzLnN0YWNrPSIifWZ1bmN0aW9uIGkodCl7ZnVuY3Rpb24gZShlLG4scixp
LHUsYSxzKXtpZihpPWl8fE4sYT1hfHxyLG51bGw9PW5bcl0pe3ZhciBjPV9bdV07cmV0dXJuIGU/
bmV3IG8obnVsbD09PW5bcl0/IlRoZSAiK2MrIiBgIithKyJgIGlzIG1hcmtlZCBhcyByZXF1aXJl
ZCAiKygiaW4gYCIraSsiYCwgYnV0IGl0cyB2YWx1ZSBpcyBgbnVsbGAuIik6IlRoZSAiK2MrIiBg
IithKyJgIGlzIG1hcmtlZCBhcyByZXF1aXJlZCBpbiAiKygiYCIraSsiYCwgYnV0IGl0cyB2YWx1
ZSBpcyBgdW5kZWZpbmVkYC4iKSk6bnVsbH1yZXR1cm4gdChuLHIsaSx1LGEpfXZhciBuPWUuYmlu
ZChudWxsLCExKTtyZXR1cm4gbi5pc1JlcXVpcmVkPWUuYmluZChudWxsLCEwKSxufWZ1bmN0aW9u
IHUodCl7ZnVuY3Rpb24gZShlLG4scixpLHUsYSl7dmFyIHM9ZVtuXSxjPWIocyk7aWYoYyE9PXQp
e3ZhciBsPV9baV0sZj1nKHMpO3JldHVybiBuZXcgbygiSW52YWxpZCAiK2wrIiBgIit1KyJgIG9m
IHR5cGUgIisoImAiK2YrImAgc3VwcGxpZWQgdG8gYCIrcisiYCwgZXhwZWN0ZWQgIikrKCJgIit0
KyJgLiIpKX1yZXR1cm4gbnVsbH1yZXR1cm4gaShlKX1mdW5jdGlvbiBhKCl7cmV0dXJuIGkody50
aGF0UmV0dXJucyhudWxsKSl9ZnVuY3Rpb24gcyh0KXtmdW5jdGlvbiBlKGUsbixyLGksdSl7aWYo
ImZ1bmN0aW9uIiE9dHlwZW9mIHQpcmV0dXJuIG5ldyBvKCJQcm9wZXJ0eSBgIit1KyJgIG9mIGNv
bXBvbmVudCBgIityKyJgIGhhcyBpbnZhbGlkIFByb3BUeXBlIG5vdGF0aW9uIGluc2lkZSBhcnJh
eU9mLiIpO3ZhciBhPWVbbl07aWYoIUFycmF5LmlzQXJyYXkoYSkpe3ZhciBzPV9baV0sYz1iKGEp
O3JldHVybiBuZXcgbygiSW52YWxpZCAiK3MrIiBgIit1KyJgIG9mIHR5cGUgIisoImAiK2MrImAg
c3VwcGxpZWQgdG8gYCIrcisiYCwgZXhwZWN0ZWQgYW4gYXJyYXkuIikpfWZvcih2YXIgbD0wO2w8
YS5sZW5ndGg7bCsrKXt2YXIgZj10KGEsbCxyLGksdSsiWyIrbCsiXSIsUCk7aWYoZiBpbnN0YW5j
ZW9mIEVycm9yKXJldHVybiBmfXJldHVybiBudWxsfXJldHVybiBpKGUpfWZ1bmN0aW9uIGMoKXtm
dW5jdGlvbiB0KHQsZSxuLHIsaSl7dmFyIHU9dFtlXTtpZigheC5pc1ZhbGlkRWxlbWVudCh1KSl7
dmFyIGE9X1tyXSxzPWIodSk7cmV0dXJuIG5ldyBvKCJJbnZhbGlkICIrYSsiIGAiK2krImAgb2Yg
dHlwZSAiKygiYCIrcysiYCBzdXBwbGllZCB0byBgIituKyJgLCBleHBlY3RlZCBhIHNpbmdsZSBS
ZWFjdEVsZW1lbnQuIikpfXJldHVybiBudWxsfXJldHVybiBpKHQpfWZ1bmN0aW9uIGwodCl7ZnVu
Y3Rpb24gZShlLG4scixpLHUpe2lmKCEoZVtuXWluc3RhbmNlb2YgdCkpe3ZhciBhPV9baV0scz10
Lm5hbWV8fE4sYz1FKGVbbl0pO3JldHVybiBuZXcgbygiSW52YWxpZCAiK2ErIiBgIit1KyJgIG9m
IHR5cGUgIisoImAiK2MrImAgc3VwcGxpZWQgdG8gYCIrcisiYCwgZXhwZWN0ZWQgIikrKCJpbnN0
YW5jZSBvZiBgIitzKyJgLiIpKX1yZXR1cm4gbnVsbH1yZXR1cm4gaShlKX1mdW5jdGlvbiBmKHQp
e2Z1bmN0aW9uIGUoZSxuLGksdSxhKXtmb3IodmFyIHM9ZVtuXSxjPTA7Yzx0Lmxlbmd0aDtjKysp
aWYocihzLHRbY10pKXJldHVybiBudWxsO3ZhciBsPV9bdV0sZj1KU09OLnN0cmluZ2lmeSh0KTty
ZXR1cm4gbmV3IG8oIkludmFsaWQgIitsKyIgYCIrYSsiYCBvZiB2YWx1ZSBgIitzKyJgICIrKCJz
dXBwbGllZCB0byBgIitpKyJgLCBleHBlY3RlZCBvbmUgb2YgIitmKyIuIikpfXJldHVybiBBcnJh
eS5pc0FycmF5KHQpP2koZSk6dy50aGF0UmV0dXJuc051bGx9ZnVuY3Rpb24gcCh0KXtmdW5jdGlv
biBlKGUsbixyLGksdSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpcmV0dXJuIG5ldyBvKCJQcm9w
ZXJ0eSBgIit1KyJgIG9mIGNvbXBvbmVudCBgIityKyJgIGhhcyBpbnZhbGlkIFByb3BUeXBlIG5v
dGF0aW9uIGluc2lkZSBvYmplY3RPZi4iKTt2YXIgYT1lW25dLHM9YihhKTtpZigib2JqZWN0IiE9
PXMpe3ZhciBjPV9baV07cmV0dXJuIG5ldyBvKCJJbnZhbGlkICIrYysiIGAiK3UrImAgb2YgdHlw
ZSAiKygiYCIrcysiYCBzdXBwbGllZCB0byBgIityKyJgLCBleHBlY3RlZCBhbiBvYmplY3QuIikp
fWZvcih2YXIgbCBpbiBhKWlmKGEuaGFzT3duUHJvcGVydHkobCkpe3ZhciBmPXQoYSxsLHIsaSx1
KyIuIitsLFApO2lmKGYgaW5zdGFuY2VvZiBFcnJvcilyZXR1cm4gZn1yZXR1cm4gbnVsbH1yZXR1
cm4gaShlKX1mdW5jdGlvbiBkKHQpe2Z1bmN0aW9uIGUoZSxuLHIsaSx1KXtmb3IodmFyIGE9MDth
PHQubGVuZ3RoO2ErKyl7dmFyIHM9dFthXTtpZihudWxsPT1zKGUsbixyLGksdSxQKSlyZXR1cm4g
bnVsbH12YXIgYz1fW2ldO3JldHVybiBuZXcgbygiSW52YWxpZCAiK2MrIiBgIit1KyJgIHN1cHBs
aWVkIHRvICIrKCJgIityKyJgLiIpKX1yZXR1cm4gQXJyYXkuaXNBcnJheSh0KT9pKGUpOncudGhh
dFJldHVybnNOdWxsfWZ1bmN0aW9uIHYoKXtmdW5jdGlvbiB0KHQsZSxuLHIsaSl7aWYoIWgodFtl
XSkpe3ZhciB1PV9bcl07cmV0dXJuIG5ldyBvKCJJbnZhbGlkICIrdSsiIGAiK2krImAgc3VwcGxp
ZWQgdG8gIisoImAiK24rImAsIGV4cGVjdGVkIGEgUmVhY3ROb2RlLiIpKX1yZXR1cm4gbnVsbH1y
ZXR1cm4gaSh0KX1mdW5jdGlvbiB5KHQpe2Z1bmN0aW9uIGUoZSxuLHIsaSx1KXt2YXIgYT1lW25d
LHM9YihhKTtpZigib2JqZWN0IiE9PXMpe3ZhciBjPV9baV07cmV0dXJuIG5ldyBvKCJJbnZhbGlk
ICIrYysiIGAiK3UrImAgb2YgdHlwZSBgIitzKyJgICIrKCJzdXBwbGllZCB0byBgIityKyJgLCBl
eHBlY3RlZCBgb2JqZWN0YC4iKSl9Zm9yKHZhciBsIGluIHQpe3ZhciBmPXRbbF07aWYoZil7dmFy
IHA9ZihhLGwscixpLHUrIi4iK2wsUCk7aWYocClyZXR1cm4gcH19cmV0dXJuIG51bGx9cmV0dXJu
IGkoZSl9ZnVuY3Rpb24gaCh0KXtzd2l0Y2godHlwZW9mIHQpe2Nhc2UibnVtYmVyIjpjYXNlInN0
cmluZyI6Y2FzZSJ1bmRlZmluZWQiOnJldHVybiEwO2Nhc2UiYm9vbGVhbiI6cmV0dXJuIXQ7Y2Fz
ZSJvYmplY3QiOmlmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIHQuZXZlcnkoaCk7aWYobnVsbD09
PXR8fHguaXNWYWxpZEVsZW1lbnQodCkpcmV0dXJuITA7dmFyIGU9QSh0KTtpZighZSlyZXR1cm4h
MTt2YXIgbixyPWUuY2FsbCh0KTtpZihlIT09dC5lbnRyaWVzKXtmb3IoOyEobj1yLm5leHQoKSku
ZG9uZTspaWYoIWgobi52YWx1ZSkpcmV0dXJuITF9ZWxzZSBmb3IoOyEobj1yLm5leHQoKSkuZG9u
ZTspe3ZhciBvPW4udmFsdWU7aWYobyYmIWgob1sxXSkpcmV0dXJuITF9cmV0dXJuITA7ZGVmYXVs
dDpyZXR1cm4hMX19ZnVuY3Rpb24gbSh0LGUpe3JldHVybiJzeW1ib2wiPT09dHx8IlN5bWJvbCI9
PT1lWyJAQHRvU3RyaW5nVGFnIl18fCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUgaW5zdGFu
Y2VvZiBTeW1ib2x9ZnVuY3Rpb24gYih0KXt2YXIgZT10eXBlb2YgdDtyZXR1cm4gQXJyYXkuaXNB
cnJheSh0KT8iYXJyYXkiOnQgaW5zdGFuY2VvZiBSZWdFeHA/Im9iamVjdCI6bShlLHQpPyJzeW1i
b2wiOmV9ZnVuY3Rpb24gZyh0KXt2YXIgZT1iKHQpO2lmKCJvYmplY3QiPT09ZSl7aWYodCBpbnN0
YW5jZW9mIERhdGUpcmV0dXJuImRhdGUiO2lmKHQgaW5zdGFuY2VvZiBSZWdFeHApcmV0dXJuInJl
Z2V4cCJ9cmV0dXJuIGV9ZnVuY3Rpb24gRSh0KXtyZXR1cm4gdC5jb25zdHJ1Y3RvciYmdC5jb25z
dHJ1Y3Rvci5uYW1lP3QuY29uc3RydWN0b3IubmFtZTpOfXZhciB4PXQoOSksXz10KDEyKSxQPXQo
MTQpLHc9dCgyMyksQT10KDE5KSxOPSh0KDI2KSwiPDxhbm9ueW1vdXM+PiIpLE89e2FycmF5OnUo
ImFycmF5IiksYm9vbDp1KCJib29sZWFuIiksZnVuYzp1KCJmdW5jdGlvbiIpLG51bWJlcjp1KCJu
dW1iZXIiKSxvYmplY3Q6dSgib2JqZWN0Iiksc3RyaW5nOnUoInN0cmluZyIpLHN5bWJvbDp1KCJz
eW1ib2wiKSxhbnk6YSgpLGFycmF5T2Y6cyxlbGVtZW50OmMoKSxpbnN0YW5jZU9mOmwsbm9kZTp2
KCksb2JqZWN0T2Y6cCxvbmVPZjpmLG9uZU9mVHlwZTpkLHNoYXBlOnl9O28ucHJvdG90eXBlPUVy
cm9yLnByb3RvdHlwZSxlLmV4cG9ydHM9T30sezEyOjEyLDE0OjE0LDE5OjE5LDIzOjIzLDI2OjI2
LDk6OX1dLDE0OltmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPSJTRUNSRVRfRE9f
Tk9UX1BBU1NfVEhJU19PUl9ZT1VfV0lMTF9CRV9GSVJFRCI7ZS5leHBvcnRzPXJ9LHt9XSwxNTpb
ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKHQsZSxuKXt0aGlzLnByb3Bz
PXQsdGhpcy5jb250ZXh0PWUsdGhpcy5yZWZzPXMsdGhpcy51cGRhdGVyPW58fGF9ZnVuY3Rpb24g
bygpe312YXIgaT10KDI3KSx1PXQoNiksYT10KDExKSxzPXQoMjQpO28ucHJvdG90eXBlPXUucHJv
dG90eXBlLHIucHJvdG90eXBlPW5ldyBvLHIucHJvdG90eXBlLmNvbnN0cnVjdG9yPXIsaShyLnBy
b3RvdHlwZSx1LnByb3RvdHlwZSksci5wcm90b3R5cGUuaXNQdXJlUmVhY3RDb21wb25lbnQ9ITAs
ZS5leHBvcnRzPXJ9LHsxMToxMSwyNDoyNCwyNzoyNyw2OjZ9XSwxNjpbZnVuY3Rpb24odCxlLG4p
eyJ1c2Ugc3RyaWN0Ijt2YXIgcj10KDI3KSxvPXQoMyksaT1yKHtfX1NFQ1JFVF9JTlRFUk5BTFNf
RE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRDp7UmVhY3RDdXJyZW50T3duZXI6dCg3KX19
LG8pO2UuZXhwb3J0cz1pfSx7Mjc6MjcsMzozLDc6N31dLDE3OltmdW5jdGlvbih0LGUsbil7InVz
ZSBzdHJpY3QiO2UuZXhwb3J0cz0iMTUuNC4wIn0se31dLDE4OltmdW5jdGlvbih0LGUsbil7InVz
ZSBzdHJpY3QiO3ZhciByPSExO2UuZXhwb3J0cz1yfSx7fV0sMTk6W2Z1bmN0aW9uKHQsZSxuKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gcih0KXt2YXIgZT10JiYobyYmdFtvXXx8dFtpXSk7aWYoImZ1
bmN0aW9uIj09dHlwZW9mIGUpcmV0dXJuIGV9dmFyIG89ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJv
bCYmU3ltYm9sLml0ZXJhdG9yLGk9IkBAaXRlcmF0b3IiO2UuZXhwb3J0cz1yfSx7fV0sMjA6W2Z1
bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcih0KXtyZXR1cm4gaS5pc1ZhbGlk
RWxlbWVudCh0KT92b2lkIDA6bygiMTQzIiksdH12YXIgbz10KDIxKSxpPXQoOSk7dCgyNSk7ZS5l
eHBvcnRzPXJ9LHsyMToyMSwyNToyNSw5Ojl9XSwyMTpbZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiByKHQpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLTEsbj0iTWluaWZp
ZWQgUmVhY3QgZXJyb3IgIyIrdCsiOyB2aXNpdCBodHRwOi8vZmFjZWJvb2suZ2l0aHViLmlvL3Jl
YWN0L2RvY3MvZXJyb3ItZGVjb2Rlci5odG1sP2ludmFyaWFudD0iK3Qscj0wO3I8ZTtyKyspbis9
IiZhcmdzW109IitlbmNvZGVVUklDb21wb25lbnQoYXJndW1lbnRzW3IrMV0pO24rPSIgZm9yIHRo
ZSBmdWxsIG1lc3NhZ2Ugb3IgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50IGZv
ciBmdWxsIGVycm9ycyBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLiI7dmFyIG89bmV3
IEVycm9yKG4pO3Rocm93IG8ubmFtZT0iSW52YXJpYW50IFZpb2xhdGlvbiIsby5mcmFtZXNUb1Bv
cD0xLG99ZS5leHBvcnRzPXJ9LHt9XSwyMjpbZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiByKHQsZSl7cmV0dXJuIHQmJiJvYmplY3QiPT10eXBlb2YgdCYmbnVsbCE9dC5rZXk/
Yy5lc2NhcGUodC5rZXkpOmUudG9TdHJpbmcoMzYpfWZ1bmN0aW9uIG8odCxlLG4saSl7dmFyIHA9
dHlwZW9mIHQ7aWYoInVuZGVmaW5lZCIhPT1wJiYiYm9vbGVhbiIhPT1wfHwodD1udWxsKSxudWxs
PT09dHx8InN0cmluZyI9PT1wfHwibnVtYmVyIj09PXB8fCJvYmplY3QiPT09cCYmdC4kJHR5cGVv
Zj09PWEpcmV0dXJuIG4oaSx0LCIiPT09ZT9sK3IodCwwKTplKSwxO3ZhciBkLHYseT0wLGg9IiI9
PT1lP2w6ZStmO2lmKEFycmF5LmlzQXJyYXkodCkpZm9yKHZhciBtPTA7bTx0Lmxlbmd0aDttKysp
ZD10W21dLHY9aCtyKGQsbSkseSs9byhkLHYsbixpKTtlbHNle3ZhciBiPXModCk7aWYoYil7dmFy
IGcsRT1iLmNhbGwodCk7aWYoYiE9PXQuZW50cmllcylmb3IodmFyIHg9MDshKGc9RS5uZXh0KCkp
LmRvbmU7KWQ9Zy52YWx1ZSx2PWgrcihkLHgrKykseSs9byhkLHYsbixpKTtlbHNlIGZvcig7IShn
PUUubmV4dCgpKS5kb25lOyl7dmFyIF89Zy52YWx1ZTtfJiYoZD1fWzFdLHY9aCtjLmVzY2FwZShf
WzBdKStmK3IoZCwwKSx5Kz1vKGQsdixuLGkpKX19ZWxzZSBpZigib2JqZWN0Ij09PXApe3ZhciBQ
PSIiLHc9U3RyaW5nKHQpO3UoIjMxIiwiW29iamVjdCBPYmplY3RdIj09PXc/Im9iamVjdCB3aXRo
IGtleXMgeyIrT2JqZWN0LmtleXModCkuam9pbigiLCAiKSsifSI6dyxQKX19cmV0dXJuIHl9ZnVu
Y3Rpb24gaSh0LGUsbil7cmV0dXJuIG51bGw9PXQ/MDpvKHQsIiIsZSxuKX12YXIgdT10KDIxKSxh
PSh0KDcpLHQoMTApKSxzPXQoMTkpLGM9KHQoMjUpLHQoMSkpLGw9KHQoMjYpLCIuIiksZj0iOiI7
ZS5leHBvcnRzPWl9LHsxOjEsMTA6MTAsMTk6MTksMjE6MjEsMjU6MjUsMjY6MjYsNzo3fV0sMjM6
W2Z1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcih0KXtyZXR1cm4gZnVuY3Rp
b24oKXtyZXR1cm4gdH19dmFyIG89ZnVuY3Rpb24oKXt9O28udGhhdFJldHVybnM9cixvLnRoYXRS
ZXR1cm5zRmFsc2U9cighMSksby50aGF0UmV0dXJuc1RydWU9cighMCksby50aGF0UmV0dXJuc051
bGw9cihudWxsKSxvLnRoYXRSZXR1cm5zVGhpcz1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxvLnRo
YXRSZXR1cm5zQXJndW1lbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHR9LGUuZXhwb3J0cz1vfSx7fV0s
MjQ6W2Z1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9e307ZS5leHBvcnRzPXJ9LHt9
XSwyNTpbZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKHQsZSxuLHIsbyxp
LHUsYSl7aWYoIXQpe3ZhciBzO2lmKHZvaWQgMD09PWUpcz1uZXcgRXJyb3IoIk1pbmlmaWVkIGV4
Y2VwdGlvbiBvY2N1cnJlZDsgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50IGZv
ciB0aGUgZnVsbCBlcnJvciBtZXNzYWdlIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3Mu
Iik7ZWxzZXt2YXIgYz1bbixyLG8saSx1LGFdLGw9MDtzPW5ldyBFcnJvcihlLnJlcGxhY2UoLyVz
L2csZnVuY3Rpb24oKXtyZXR1cm4gY1tsKytdfSkpLHMubmFtZT0iSW52YXJpYW50IFZpb2xhdGlv
biJ9dGhyb3cgcy5mcmFtZXNUb1BvcD0xLHN9fWUuZXhwb3J0cz1yfSx7fV0sMjY6W2Z1bmN0aW9u
KHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9dCgyMyksbz1yO2UuZXhwb3J0cz1vfSx7MjM6MjN9
XSwyNzpbZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKHQpe2lmKG51bGw9
PT10fHx2b2lkIDA9PT10KXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdC5hc3NpZ24gY2Fubm90
IGJlIGNhbGxlZCB3aXRoIG51bGwgb3IgdW5kZWZpbmVkIik7cmV0dXJuIE9iamVjdCh0KX1mdW5j
dGlvbiBvKCl7dHJ5e2lmKCFPYmplY3QuYXNzaWduKXJldHVybiExO3ZhciB0PW5ldyBTdHJpbmco
ImFiYyIpO2lmKHRbNV09ImRlIiwiNSI9PT1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0KVsw
XSlyZXR1cm4hMTtmb3IodmFyIGU9e30sbj0wO248MTA7bisrKWVbIl8iK1N0cmluZy5mcm9tQ2hh
ckNvZGUobildPW47dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZSkubWFwKGZ1bmN0
aW9uKHQpe3JldHVybiBlW3RdfSk7aWYoIjAxMjM0NTY3ODkiIT09ci5qb2luKCIiKSlyZXR1cm4h
MTt2YXIgbz17fTtyZXR1cm4iYWJjZGVmZ2hpamtsbW5vcHFyc3QiLnNwbGl0KCIiKS5mb3JFYWNo
KGZ1bmN0aW9uKHQpe29bdF09dH0pLCJhYmNkZWZnaGlqa2xtbm9wcXJzdCI9PT1PYmplY3Qua2V5
cyhPYmplY3QuYXNzaWduKHt9LG8pKS5qb2luKCIiKX1jYXRjaCh0KXtyZXR1cm4hMX19dmFyIGk9
T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSx1PU9iamVjdC5wcm90b3R5cGUucHJvcGVy
dHlJc0VudW1lcmFibGU7ZS5leHBvcnRzPW8oKT9PYmplY3QuYXNzaWduOmZ1bmN0aW9uKHQsZSl7
Zm9yKHZhciBuLG8sYT1yKHQpLHM9MTtzPGFyZ3VtZW50cy5sZW5ndGg7cysrKXtuPU9iamVjdChh
cmd1bWVudHNbc10pO2Zvcih2YXIgYyBpbiBuKWkuY2FsbChuLGMpJiYoYVtjXT1uW2NdKTtpZihP
YmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXtvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJv
bHMobik7Zm9yKHZhciBsPTA7bDxvLmxlbmd0aDtsKyspdS5jYWxsKG4sb1tsXSkmJihhW29bbF1d
PW5bb1tsXV0pfX1yZXR1cm4gYX19LHt9XX0se30sWzE2XSkoMTYpfSk7ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVz
L3JlYWN0L2xpYi9LZXlFc2NhcGVVdGlscy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9k
dWxlcy9yZWFjdC9saWIvS2V5RXNjYXBlVXRpbHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGFiZjFhMjJjNzE2
MzUyMjkxYjI1MWUxZmQzOTE4NTc5NDhiZTZkOQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC9saWIvS2V5RXNjYXBlVXRpbHMuanMKQEAgLTAs
MCArMSw1OCBAQAorLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5j
LgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxp
Y2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRk
aXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBB
VEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICogCisgKi8KKworJ3VzZSBz
dHJpY3QnOworCisvKioKKyAqIEVzY2FwZSBhbmQgd3JhcCBrZXkgc28gaXQgaXMgc2FmZSB0byB1
c2UgYXMgYSByZWFjdGlkCisgKgorICogQHBhcmFtIHtzdHJpbmd9IGtleSB0byBiZSBlc2NhcGVk
LgorICogQHJldHVybiB7c3RyaW5nfSB0aGUgZXNjYXBlZCBrZXkuCisgKi8KKworZnVuY3Rpb24g
ZXNjYXBlKGtleSkgeworICB2YXIgZXNjYXBlUmVnZXggPSAvWz06XS9nOworICB2YXIgZXNjYXBl
ckxvb2t1cCA9IHsKKyAgICAnPSc6ICc9MCcsCisgICAgJzonOiAnPTInCisgIH07CisgIHZhciBl
c2NhcGVkU3RyaW5nID0gKCcnICsga2V5KS5yZXBsYWNlKGVzY2FwZVJlZ2V4LCBmdW5jdGlvbiAo
bWF0Y2gpIHsKKyAgICByZXR1cm4gZXNjYXBlckxvb2t1cFttYXRjaF07CisgIH0pOworCisgIHJl
dHVybiAnJCcgKyBlc2NhcGVkU3RyaW5nOworfQorCisvKioKKyAqIFVuZXNjYXBlIGFuZCB1bndy
YXAga2V5IGZvciBodW1hbi1yZWFkYWJsZSBkaXNwbGF5CisgKgorICogQHBhcmFtIHtzdHJpbmd9
IGtleSB0byB1bmVzY2FwZS4KKyAqIEByZXR1cm4ge3N0cmluZ30gdGhlIHVuZXNjYXBlZCBrZXku
CisgKi8KK2Z1bmN0aW9uIHVuZXNjYXBlKGtleSkgeworICB2YXIgdW5lc2NhcGVSZWdleCA9IC8o
PTB8PTIpL2c7CisgIHZhciB1bmVzY2FwZXJMb29rdXAgPSB7CisgICAgJz0wJzogJz0nLAorICAg
ICc9Mic6ICc6JworICB9OworICB2YXIga2V5U3Vic3RyaW5nID0ga2V5WzBdID09PSAnLicgJiYg
a2V5WzFdID09PSAnJCcgPyBrZXkuc3Vic3RyaW5nKDIpIDoga2V5LnN1YnN0cmluZygxKTsKKwor
ICByZXR1cm4gKCcnICsga2V5U3Vic3RyaW5nKS5yZXBsYWNlKHVuZXNjYXBlUmVnZXgsIGZ1bmN0
aW9uIChtYXRjaCkgeworICAgIHJldHVybiB1bmVzY2FwZXJMb29rdXBbbWF0Y2hdOworICB9KTsK
K30KKwordmFyIEtleUVzY2FwZVV0aWxzID0geworICBlc2NhcGU6IGVzY2FwZSwKKyAgdW5lc2Nh
cGU6IHVuZXNjYXBlCit9OworCittb2R1bGUuZXhwb3J0cyA9IEtleUVzY2FwZVV0aWxzOwpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25v
ZGVfbW9kdWxlcy9yZWFjdC9saWIvTGlua2VkU3RhdGVNaXhpbi5qcyBiL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Jl
YWN0L25vZGVfbW9kdWxlcy9yZWFjdC9saWIvTGlua2VkU3RhdGVNaXhpbi5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44OTVjZjczNjhjYzQ5OTAxNmFlNzkwMzhlMGE2YmE3NWJhNGI5OWVhCi0tLSAvZGV2L251bGwK
KysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9MaW5rZWRTdGF0
ZU1peGluLmpzCkBAIC0wLDAgKzEsMzQgQEAKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2Vu
dCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBz
b3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQg
aW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291
cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJl
IGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAq
LworCisndXNlIHN0cmljdCc7CisKK3ZhciBSZWFjdExpbmsgPSByZXF1aXJlKCcuL1JlYWN0TGlu
aycpOwordmFyIFJlYWN0U3RhdGVTZXR0ZXJzID0gcmVxdWlyZSgnLi9SZWFjdFN0YXRlU2V0dGVy
cycpOworCisvKioKKyAqIEEgc2ltcGxlIG1peGluIGFyb3VuZCBSZWFjdExpbmsuZm9yU3RhdGUo
KS4KKyAqIFNlZSBodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL3R3by13YXkt
YmluZGluZy1oZWxwZXJzLmh0bWwKKyAqLwordmFyIExpbmtlZFN0YXRlTWl4aW4gPSB7CisgIC8q
KgorICAgKiBDcmVhdGUgYSBSZWFjdExpbmsgdGhhdCdzIGxpbmtlZCB0byBwYXJ0IG9mIHRoaXMg
Y29tcG9uZW50J3Mgc3RhdGUuIFRoZQorICAgKiBSZWFjdExpbmsgd2lsbCBoYXZlIHRoZSBjdXJy
ZW50IHZhbHVlIG9mIHRoaXMuc3RhdGVba2V5XSBhbmQgd2lsbCBjYWxsCisgICAqIHNldFN0YXRl
KCkgd2hlbiBhIGNoYW5nZSBpcyByZXF1ZXN0ZWQuCisgICAqCisgICAqIEBwYXJhbSB7c3RyaW5n
fSBrZXkgc3RhdGUga2V5IHRvIHVwZGF0ZS4KKyAgICogQHJldHVybiB7UmVhY3RMaW5rfSBSZWFj
dExpbmsgaW5zdGFuY2UgbGlua2luZyB0byB0aGUgc3RhdGUuCisgICAqLworICBsaW5rU3RhdGU6
IGZ1bmN0aW9uIChrZXkpIHsKKyAgICByZXR1cm4gbmV3IFJlYWN0TGluayh0aGlzLnN0YXRlW2tl
eV0sIFJlYWN0U3RhdGVTZXR0ZXJzLmNyZWF0ZVN0YXRlS2V5U2V0dGVyKHRoaXMsIGtleSkpOwor
ICB9Cit9OworCittb2R1bGUuZXhwb3J0cyA9IExpbmtlZFN0YXRlTWl4aW47ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1
bGVzL3JlYWN0L2xpYi9Qb29sZWRDbGFzcy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9k
dWxlcy9yZWFjdC9saWIvUG9vbGVkQ2xhc3MuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTI5OWI0OTNkN2ZiMGZl
MmUyOTg0NjNlOWQyN2U5NDYzNDViMDllNQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUG9vbGVkQ2xhc3MuanMKQEAgLTAsMCArMSwx
MjMgQEAKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIAorICovCisKKyd1c2Ugc3RyaWN0
JzsKKwordmFyIF9wcm9kSW52YXJpYW50ID0gcmVxdWlyZSgnLi9yZWFjdFByb2RJbnZhcmlhbnQn
KTsKKwordmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpOworCisv
KioKKyAqIFN0YXRpYyBwb29sZXJzLiBTZXZlcmFsIGN1c3RvbSB2ZXJzaW9ucyBmb3IgZWFjaCBw
b3RlbnRpYWwgbnVtYmVyIG9mCisgKiBhcmd1bWVudHMuIEEgY29tcGxldGVseSBnZW5lcmljIHBv
b2xlciBpcyBlYXN5IHRvIGltcGxlbWVudCwgYnV0IHdvdWxkCisgKiByZXF1aXJlIGFjY2Vzc2lu
ZyB0aGUgYGFyZ3VtZW50c2Agb2JqZWN0LiBJbiBlYWNoIG9mIHRoZXNlLCBgdGhpc2AgcmVmZXJz
IHRvCisgKiB0aGUgQ2xhc3MgaXRzZWxmLCBub3QgYW4gaW5zdGFuY2UuIElmIGFueSBvdGhlcnMg
YXJlIG5lZWRlZCwgc2ltcGx5IGFkZCB0aGVtCisgKiBoZXJlLCBvciBpbiB0aGVpciBvd24gZmls
ZXMuCisgKi8KK3ZhciBvbmVBcmd1bWVudFBvb2xlciA9IGZ1bmN0aW9uIChjb3B5RmllbGRzRnJv
bSkgeworICB2YXIgS2xhc3MgPSB0aGlzOworICBpZiAoS2xhc3MuaW5zdGFuY2VQb29sLmxlbmd0
aCkgeworICAgIHZhciBpbnN0YW5jZSA9IEtsYXNzLmluc3RhbmNlUG9vbC5wb3AoKTsKKyAgICBL
bGFzcy5jYWxsKGluc3RhbmNlLCBjb3B5RmllbGRzRnJvbSk7CisgICAgcmV0dXJuIGluc3RhbmNl
OworICB9IGVsc2UgeworICAgIHJldHVybiBuZXcgS2xhc3MoY29weUZpZWxkc0Zyb20pOworICB9
Cit9OworCit2YXIgdHdvQXJndW1lbnRQb29sZXIgPSBmdW5jdGlvbiAoYTEsIGEyKSB7CisgIHZh
ciBLbGFzcyA9IHRoaXM7CisgIGlmIChLbGFzcy5pbnN0YW5jZVBvb2wubGVuZ3RoKSB7CisgICAg
dmFyIGluc3RhbmNlID0gS2xhc3MuaW5zdGFuY2VQb29sLnBvcCgpOworICAgIEtsYXNzLmNhbGwo
aW5zdGFuY2UsIGExLCBhMik7CisgICAgcmV0dXJuIGluc3RhbmNlOworICB9IGVsc2UgeworICAg
IHJldHVybiBuZXcgS2xhc3MoYTEsIGEyKTsKKyAgfQorfTsKKwordmFyIHRocmVlQXJndW1lbnRQ
b29sZXIgPSBmdW5jdGlvbiAoYTEsIGEyLCBhMykgeworICB2YXIgS2xhc3MgPSB0aGlzOworICBp
ZiAoS2xhc3MuaW5zdGFuY2VQb29sLmxlbmd0aCkgeworICAgIHZhciBpbnN0YW5jZSA9IEtsYXNz
Lmluc3RhbmNlUG9vbC5wb3AoKTsKKyAgICBLbGFzcy5jYWxsKGluc3RhbmNlLCBhMSwgYTIsIGEz
KTsKKyAgICByZXR1cm4gaW5zdGFuY2U7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIG5ldyBLbGFz
cyhhMSwgYTIsIGEzKTsKKyAgfQorfTsKKwordmFyIGZvdXJBcmd1bWVudFBvb2xlciA9IGZ1bmN0
aW9uIChhMSwgYTIsIGEzLCBhNCkgeworICB2YXIgS2xhc3MgPSB0aGlzOworICBpZiAoS2xhc3Mu
aW5zdGFuY2VQb29sLmxlbmd0aCkgeworICAgIHZhciBpbnN0YW5jZSA9IEtsYXNzLmluc3RhbmNl
UG9vbC5wb3AoKTsKKyAgICBLbGFzcy5jYWxsKGluc3RhbmNlLCBhMSwgYTIsIGEzLCBhNCk7Cisg
ICAgcmV0dXJuIGluc3RhbmNlOworICB9IGVsc2UgeworICAgIHJldHVybiBuZXcgS2xhc3MoYTEs
IGEyLCBhMywgYTQpOworICB9Cit9OworCit2YXIgZml2ZUFyZ3VtZW50UG9vbGVyID0gZnVuY3Rp
b24gKGExLCBhMiwgYTMsIGE0LCBhNSkgeworICB2YXIgS2xhc3MgPSB0aGlzOworICBpZiAoS2xh
c3MuaW5zdGFuY2VQb29sLmxlbmd0aCkgeworICAgIHZhciBpbnN0YW5jZSA9IEtsYXNzLmluc3Rh
bmNlUG9vbC5wb3AoKTsKKyAgICBLbGFzcy5jYWxsKGluc3RhbmNlLCBhMSwgYTIsIGEzLCBhNCwg
YTUpOworICAgIHJldHVybiBpbnN0YW5jZTsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gbmV3IEts
YXNzKGExLCBhMiwgYTMsIGE0LCBhNSk7CisgIH0KK307CisKK3ZhciBzdGFuZGFyZFJlbGVhc2Vy
ID0gZnVuY3Rpb24gKGluc3RhbmNlKSB7CisgIHZhciBLbGFzcyA9IHRoaXM7CisgICEoaW5zdGFu
Y2UgaW5zdGFuY2VvZiBLbGFzcykgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nID8gaW52YXJpYW50KGZhbHNlLCAnVHJ5aW5nIHRvIHJlbGVhc2UgYW4gaW5zdGFuY2UgaW50
byBhIHBvb2wgb2YgYSBkaWZmZXJlbnQgdHlwZS4nKSA6IF9wcm9kSW52YXJpYW50KCcyNScpIDog
dm9pZCAwOworICBpbnN0YW5jZS5kZXN0cnVjdG9yKCk7CisgIGlmIChLbGFzcy5pbnN0YW5jZVBv
b2wubGVuZ3RoIDwgS2xhc3MucG9vbFNpemUpIHsKKyAgICBLbGFzcy5pbnN0YW5jZVBvb2wucHVz
aChpbnN0YW5jZSk7CisgIH0KK307CisKK3ZhciBERUZBVUxUX1BPT0xfU0laRSA9IDEwOwordmFy
IERFRkFVTFRfUE9PTEVSID0gb25lQXJndW1lbnRQb29sZXI7CisKKy8qKgorICogQXVnbWVudHMg
YENvcHlDb25zdHJ1Y3RvcmAgdG8gYmUgYSBwb29sYWJsZSBjbGFzcywgYXVnbWVudGluZyBvbmx5
IHRoZSBjbGFzcworICogaXRzZWxmIChzdGF0aWNhbGx5KSBub3QgYWRkaW5nIGFueSBwcm90b3R5
cGljYWwgZmllbGRzLiBBbnkgQ29weUNvbnN0cnVjdG9yCisgKiB5b3UgZ2l2ZSB0aGlzIG1heSBo
YXZlIGEgYHBvb2xTaXplYCBwcm9wZXJ0eSwgYW5kIHdpbGwgbG9vayBmb3IgYQorICogcHJvdG90
eXBpY2FsIGBkZXN0cnVjdG9yYCBvbiBpbnN0YW5jZXMuCisgKgorICogQHBhcmFtIHtGdW5jdGlv
bn0gQ29weUNvbnN0cnVjdG9yIENvbnN0cnVjdG9yIHRoYXQgY2FuIGJlIHVzZWQgdG8gcmVzZXQu
CisgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwb29sZXIgQ3VzdG9taXphYmxlIHBvb2xlci4KKyAqLwor
dmFyIGFkZFBvb2xpbmdUbyA9IGZ1bmN0aW9uIChDb3B5Q29uc3RydWN0b3IsIHBvb2xlcikgewor
ICAvLyBDYXN0aW5nIGFzIGFueSBzbyB0aGF0IGZsb3cgaWdub3JlcyB0aGUgYWN0dWFsIGltcGxl
bWVudGF0aW9uIGFuZCB0cnVzdHMKKyAgLy8gaXQgdG8gbWF0Y2ggdGhlIHR5cGUgd2UgZGVjbGFy
ZWQKKyAgdmFyIE5ld0tsYXNzID0gQ29weUNvbnN0cnVjdG9yOworICBOZXdLbGFzcy5pbnN0YW5j
ZVBvb2wgPSBbXTsKKyAgTmV3S2xhc3MuZ2V0UG9vbGVkID0gcG9vbGVyIHx8IERFRkFVTFRfUE9P
TEVSOworICBpZiAoIU5ld0tsYXNzLnBvb2xTaXplKSB7CisgICAgTmV3S2xhc3MucG9vbFNpemUg
PSBERUZBVUxUX1BPT0xfU0laRTsKKyAgfQorICBOZXdLbGFzcy5yZWxlYXNlID0gc3RhbmRhcmRS
ZWxlYXNlcjsKKyAgcmV0dXJuIE5ld0tsYXNzOworfTsKKwordmFyIFBvb2xlZENsYXNzID0gewor
ICBhZGRQb29saW5nVG86IGFkZFBvb2xpbmdUbywKKyAgb25lQXJndW1lbnRQb29sZXI6IG9uZUFy
Z3VtZW50UG9vbGVyLAorICB0d29Bcmd1bWVudFBvb2xlcjogdHdvQXJndW1lbnRQb29sZXIsCisg
IHRocmVlQXJndW1lbnRQb29sZXI6IHRocmVlQXJndW1lbnRQb29sZXIsCisgIGZvdXJBcmd1bWVu
dFBvb2xlcjogZm91ckFyZ3VtZW50UG9vbGVyLAorICBmaXZlQXJndW1lbnRQb29sZXI6IGZpdmVB
cmd1bWVudFBvb2xlcgorfTsKKworbW9kdWxlLmV4cG9ydHMgPSBQb29sZWRDbGFzczsKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2Rl
X21vZHVsZXMvcmVhY3QvbGliL1JlYWN0LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1
bGVzL3JlYWN0L2xpYi9SZWFjdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMjk3MDBkMjRhZjE3OWFmZjBjZjNj
M2I2Y2E5YjllMzE1ZDE2Y2U0Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qv
bm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdC5qcwpAQCAtMCwwICsxLDg4IEBACisvKioKKyAq
IENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX2Fzc2lnbiA9
IHJlcXVpcmUoJ29iamVjdC1hc3NpZ24nKTsKKwordmFyIFJlYWN0Q2hpbGRyZW4gPSByZXF1aXJl
KCcuL1JlYWN0Q2hpbGRyZW4nKTsKK3ZhciBSZWFjdENvbXBvbmVudCA9IHJlcXVpcmUoJy4vUmVh
Y3RDb21wb25lbnQnKTsKK3ZhciBSZWFjdFB1cmVDb21wb25lbnQgPSByZXF1aXJlKCcuL1JlYWN0
UHVyZUNvbXBvbmVudCcpOwordmFyIFJlYWN0Q2xhc3MgPSByZXF1aXJlKCcuL1JlYWN0Q2xhc3Mn
KTsKK3ZhciBSZWFjdERPTUZhY3RvcmllcyA9IHJlcXVpcmUoJy4vUmVhY3RET01GYWN0b3JpZXMn
KTsKK3ZhciBSZWFjdEVsZW1lbnQgPSByZXF1aXJlKCcuL1JlYWN0RWxlbWVudCcpOwordmFyIFJl
YWN0UHJvcFR5cGVzID0gcmVxdWlyZSgnLi9SZWFjdFByb3BUeXBlcycpOwordmFyIFJlYWN0VmVy
c2lvbiA9IHJlcXVpcmUoJy4vUmVhY3RWZXJzaW9uJyk7CisKK3ZhciBvbmx5Q2hpbGQgPSByZXF1
aXJlKCcuL29ubHlDaGlsZCcpOwordmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJu
aW5nJyk7CisKK3ZhciBjcmVhdGVFbGVtZW50ID0gUmVhY3RFbGVtZW50LmNyZWF0ZUVsZW1lbnQ7
Cit2YXIgY3JlYXRlRmFjdG9yeSA9IFJlYWN0RWxlbWVudC5jcmVhdGVGYWN0b3J5OwordmFyIGNs
b25lRWxlbWVudCA9IFJlYWN0RWxlbWVudC5jbG9uZUVsZW1lbnQ7CisKK2lmIChwcm9jZXNzLmVu
di5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgIHZhciBSZWFjdEVsZW1lbnRWYWxpZGF0
b3IgPSByZXF1aXJlKCcuL1JlYWN0RWxlbWVudFZhbGlkYXRvcicpOworICBjcmVhdGVFbGVtZW50
ID0gUmVhY3RFbGVtZW50VmFsaWRhdG9yLmNyZWF0ZUVsZW1lbnQ7CisgIGNyZWF0ZUZhY3Rvcnkg
PSBSZWFjdEVsZW1lbnRWYWxpZGF0b3IuY3JlYXRlRmFjdG9yeTsKKyAgY2xvbmVFbGVtZW50ID0g
UmVhY3RFbGVtZW50VmFsaWRhdG9yLmNsb25lRWxlbWVudDsKK30KKwordmFyIF9fc3ByZWFkID0g
X2Fzc2lnbjsKKworaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHsK
KyAgdmFyIHdhcm5lZCA9IGZhbHNlOworICBfX3NwcmVhZCA9IGZ1bmN0aW9uICgpIHsKKyAgICBw
cm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyh3YXJuZWQsICdS
ZWFjdC5fX3NwcmVhZCBpcyBkZXByZWNhdGVkIGFuZCBzaG91bGQgbm90IGJlIHVzZWQuIFVzZSAn
ICsgJ09iamVjdC5hc3NpZ24gZGlyZWN0bHkgb3IgYW5vdGhlciBoZWxwZXIgZnVuY3Rpb24gd2l0
aCBzaW1pbGFyICcgKyAnc2VtYW50aWNzLiBZb3UgbWF5IGJlIHNlZWluZyB0aGlzIHdhcm5pbmcg
ZHVlIHRvIHlvdXIgY29tcGlsZXIuICcgKyAnU2VlIGh0dHBzOi8vZmIubWUvcmVhY3Qtc3ByZWFk
LWRlcHJlY2F0aW9uIGZvciBtb3JlIGRldGFpbHMuJykgOiB2b2lkIDA7CisgICAgd2FybmVkID0g
dHJ1ZTsKKyAgICByZXR1cm4gX2Fzc2lnbi5hcHBseShudWxsLCBhcmd1bWVudHMpOworICB9Owor
fQorCit2YXIgUmVhY3QgPSB7CisKKyAgLy8gTW9kZXJuCisKKyAgQ2hpbGRyZW46IHsKKyAgICBt
YXA6IFJlYWN0Q2hpbGRyZW4ubWFwLAorICAgIGZvckVhY2g6IFJlYWN0Q2hpbGRyZW4uZm9yRWFj
aCwKKyAgICBjb3VudDogUmVhY3RDaGlsZHJlbi5jb3VudCwKKyAgICB0b0FycmF5OiBSZWFjdENo
aWxkcmVuLnRvQXJyYXksCisgICAgb25seTogb25seUNoaWxkCisgIH0sCisKKyAgQ29tcG9uZW50
OiBSZWFjdENvbXBvbmVudCwKKyAgUHVyZUNvbXBvbmVudDogUmVhY3RQdXJlQ29tcG9uZW50LAor
CisgIGNyZWF0ZUVsZW1lbnQ6IGNyZWF0ZUVsZW1lbnQsCisgIGNsb25lRWxlbWVudDogY2xvbmVF
bGVtZW50LAorICBpc1ZhbGlkRWxlbWVudDogUmVhY3RFbGVtZW50LmlzVmFsaWRFbGVtZW50LAor
CisgIC8vIENsYXNzaWMKKworICBQcm9wVHlwZXM6IFJlYWN0UHJvcFR5cGVzLAorICBjcmVhdGVD
bGFzczogUmVhY3RDbGFzcy5jcmVhdGVDbGFzcywKKyAgY3JlYXRlRmFjdG9yeTogY3JlYXRlRmFj
dG9yeSwKKyAgY3JlYXRlTWl4aW46IGZ1bmN0aW9uIChtaXhpbikgeworICAgIC8vIEN1cnJlbnRs
eSBhIG5vb3AuIFdpbGwgYmUgdXNlZCB0byB2YWxpZGF0ZSBhbmQgdHJhY2UgbWl4aW5zLgorICAg
IHJldHVybiBtaXhpbjsKKyAgfSwKKworICAvLyBUaGlzIGxvb2tzIERPTSBzcGVjaWZpYyBidXQg
dGhlc2UgYXJlIGFjdHVhbGx5IGlzb21vcnBoaWMgaGVscGVycworICAvLyBzaW5jZSB0aGV5IGFy
ZSBqdXN0IGdlbmVyYXRpbmcgRE9NIHN0cmluZ3MuCisgIERPTTogUmVhY3RET01GYWN0b3JpZXMs
CisKKyAgdmVyc2lvbjogUmVhY3RWZXJzaW9uLAorCisgIC8vIERlcHJlY2F0ZWQgaG9vayBmb3Ig
SlNYIHNwcmVhZCwgZG9uJ3QgdXNlIHRoaXMgZm9yIGFueXRoaW5nLgorICBfX3NwcmVhZDogX19z
cHJlYWQKK307CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3Q7ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0
L2xpYi9SZWFjdEFkZG9uc0RPTURlcGVuZGVuY2llcy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25v
ZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RBZGRvbnNET01EZXBlbmRlbmNpZXMuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjFhMGI0MDIxYmE4ZWQ5OTIxNjdjMzcyYWE5YTdlMzE4ZjAxMjE4NgotLS0gL2Rldi9u
dWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RB
ZGRvbnNET01EZXBlbmRlbmNpZXMuanMKQEAgLTAsMCArMSwzNSBAQAorLyoqCisgKiBDb3B5cmln
aHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUg
bGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rv
cnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50
IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJl
Y3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIFJlYWN0RE9NID0gcmVxdWly
ZSgncmVhY3QtZG9tL2xpYi9SZWFjdERPTScpOwordmFyIFJlYWN0SW5zdGFuY2VNYXAgPSByZXF1
aXJlKCdyZWFjdC1kb20vbGliL1JlYWN0SW5zdGFuY2VNYXAnKTsKKworZXhwb3J0cy5nZXRSZWFj
dERPTSA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuIFJlYWN0RE9NOworfTsKKworZXhwb3J0cy5n
ZXRSZWFjdEluc3RhbmNlTWFwID0gZnVuY3Rpb24gKCkgeworICByZXR1cm4gUmVhY3RJbnN0YW5j
ZU1hcDsKK307CisKK2lmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7
CisgIHZhciBSZWFjdFBlcmYgPSByZXF1aXJlKCdyZWFjdC1kb20vbGliL1JlYWN0UGVyZicpOwor
ICB2YXIgUmVhY3RUZXN0VXRpbHMgPSByZXF1aXJlKCdyZWFjdC1kb20vbGliL1JlYWN0VGVzdFV0
aWxzJyk7CisKKyAgZXhwb3J0cy5nZXRSZWFjdFBlcmYgPSBmdW5jdGlvbiAoKSB7CisgICAgcmV0
dXJuIFJlYWN0UGVyZjsKKyAgfTsKKworICBleHBvcnRzLmdldFJlYWN0VGVzdFV0aWxzID0gZnVu
Y3Rpb24gKCkgeworICAgIHJldHVybiBSZWFjdFRlc3RVdGlsczsKKyAgfTsKK30KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21v
ZHVsZXMvcmVhY3QvbGliL1JlYWN0QWRkb25zRE9NRGVwZW5kZW5jaWVzVU1EU2hpbS5qcyBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RBZGRvbnNET01EZXBl
bmRlbmNpZXNVTURTaGltLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3M2FjMzIwNmM3MDMyMTk3MDY2Yzc0YTRh
OGQ0ZGUxM2YzZTA4OWEKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2Rl
X21vZHVsZXMvcmVhY3QvbGliL1JlYWN0QWRkb25zRE9NRGVwZW5kZW5jaWVzVU1EU2hpbS5qcwpA
QCAtMCwwICsxLDMxIEBACisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29r
LCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUg
aXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICog
TElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBB
biBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0
aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworLyogZ2xv
YmFscyBSZWFjdERPTSAqLworCisndXNlIHN0cmljdCc7CisKK2V4cG9ydHMuZ2V0UmVhY3RET00g
PSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiBSZWFjdERPTTsKK307CisKK2V4cG9ydHMuZ2V0UmVh
Y3RJbnN0YW5jZU1hcCA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuIFJlYWN0RE9NLl9fU0VDUkVU
X0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELlJlYWN0SW5zdGFuY2VN
YXA7Cit9OworCitpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgewor
ICBleHBvcnRzLmdldFJlYWN0UGVyZiA9IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gUmVhY3RE
T00uX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQuUmVh
Y3RQZXJmOworICB9OworCisgIGV4cG9ydHMuZ2V0UmVhY3RUZXN0VXRpbHMgPSBmdW5jdGlvbiAo
KSB7CisgICAgcmV0dXJuIFJlYWN0RE9NLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09S
X1lPVV9XSUxMX0JFX0ZJUkVELlJlYWN0VGVzdFV0aWxzOworICB9OworfQpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxl
cy9yZWFjdC9saWIvUmVhY3RDU1NUcmFuc2l0aW9uR3JvdXAuanMgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFj
dC9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0Q1NTVHJhbnNpdGlvbkdyb3VwLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmJiZmNiNDIyYmYxOTdjOTRjNTRjMWRmMDA1MTIzNjc0YzdhYWM4NjMKLS0tIC9kZXYv
bnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0
Q1NTVHJhbnNpdGlvbkdyb3VwLmpzCkBAIC0wLDAgKzEsMTA0IEBACisvKioKKyAqIENvcHlyaWdo
dCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBs
aWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9y
eSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQg
cmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVj
dG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX2Fzc2lnbiA9IHJlcXVpcmUo
J29iamVjdC1hc3NpZ24nKTsKKworZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBD
b25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0
aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKTsg
fSB9CisKK2Z1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsg
aWYgKCFzZWxmKSB7IHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBp
bml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7IH0gcmV0dXJuIGNhbGwg
JiYgKHR5cGVvZiBjYWxsID09PSAib2JqZWN0IiB8fCB0eXBlb2YgY2FsbCA9PT0gImZ1bmN0aW9u
IikgPyBjYWxsIDogc2VsZjsgfQorCitmdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVy
Q2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSAiZnVuY3Rpb24iICYmIHN1cGVyQ2xh
c3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0
IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiICsgdHlwZW9mIHN1cGVyQ2xhc3Mp
OyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBl
ckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIGVudW1l
cmFibGU6IGZhbHNlLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlm
IChzdXBlckNsYXNzKSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBl
T2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIDogc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFz
czsgfQorCit2YXIgUmVhY3QgPSByZXF1aXJlKCcuL1JlYWN0Jyk7CisKK3ZhciBSZWFjdFRyYW5z
aXRpb25Hcm91cCA9IHJlcXVpcmUoJy4vUmVhY3RUcmFuc2l0aW9uR3JvdXAnKTsKK3ZhciBSZWFj
dENTU1RyYW5zaXRpb25Hcm91cENoaWxkID0gcmVxdWlyZSgnLi9SZWFjdENTU1RyYW5zaXRpb25H
cm91cENoaWxkJyk7CisKK2Z1bmN0aW9uIGNyZWF0ZVRyYW5zaXRpb25UaW1lb3V0UHJvcFZhbGlk
YXRvcih0cmFuc2l0aW9uVHlwZSkgeworICB2YXIgdGltZW91dFByb3BOYW1lID0gJ3RyYW5zaXRp
b24nICsgdHJhbnNpdGlvblR5cGUgKyAnVGltZW91dCc7CisgIHZhciBlbmFibGVkUHJvcE5hbWUg
PSAndHJhbnNpdGlvbicgKyB0cmFuc2l0aW9uVHlwZTsKKworICByZXR1cm4gZnVuY3Rpb24gKHBy
b3BzKSB7CisgICAgLy8gSWYgdGhlIHRyYW5zaXRpb24gaXMgZW5hYmxlZAorICAgIGlmIChwcm9w
c1tlbmFibGVkUHJvcE5hbWVdKSB7CisgICAgICAvLyBJZiBubyB0aW1lb3V0IGR1cmF0aW9uIGlz
IHByb3ZpZGVkCisgICAgICBpZiAocHJvcHNbdGltZW91dFByb3BOYW1lXSA9PSBudWxsKSB7Cisg
ICAgICAgIHJldHVybiBuZXcgRXJyb3IodGltZW91dFByb3BOYW1lICsgJyB3YXNuXCd0IHN1cHBs
aWVkIHRvIFJlYWN0Q1NTVHJhbnNpdGlvbkdyb3VwOiAnICsgJ3RoaXMgY2FuIGNhdXNlIHVucmVs
aWFibGUgYW5pbWF0aW9ucyBhbmQgd29uXCd0IGJlIHN1cHBvcnRlZCBpbiAnICsgJ2EgZnV0dXJl
IHZlcnNpb24gb2YgUmVhY3QuIFNlZSAnICsgJ2h0dHBzOi8vZmIubWUvcmVhY3QtYW5pbWF0aW9u
LXRyYW5zaXRpb24tZ3JvdXAtdGltZW91dCBmb3IgbW9yZSAnICsgJ2luZm9ybWF0aW9uLicpOwor
CisgICAgICAgIC8vIElmIHRoZSBkdXJhdGlvbiBpc24ndCBhIG51bWJlcgorICAgICAgfSBlbHNl
IGlmICh0eXBlb2YgcHJvcHNbdGltZW91dFByb3BOYW1lXSAhPT0gJ251bWJlcicpIHsKKyAgICAg
ICAgcmV0dXJuIG5ldyBFcnJvcih0aW1lb3V0UHJvcE5hbWUgKyAnIG11c3QgYmUgYSBudW1iZXIg
KGluIG1pbGxpc2Vjb25kcyknKTsKKyAgICAgIH0KKyAgICB9CisgIH07Cit9CisKKy8qKgorICog
QW4gZWFzeSB3YXkgdG8gcGVyZm9ybSBDU1MgdHJhbnNpdGlvbnMgYW5kIGFuaW1hdGlvbnMgd2hl
biBhIFJlYWN0IGNvbXBvbmVudAorICogZW50ZXJzIG9yIGxlYXZlcyB0aGUgRE9NLgorICogU2Vl
IGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvYW5pbWF0aW9uLmh0bWwjaGln
aC1sZXZlbC1hcGktcmVhY3Rjc3N0cmFuc2l0aW9uZ3JvdXAKKyAqLworCit2YXIgUmVhY3RDU1NU
cmFuc2l0aW9uR3JvdXAgPSBmdW5jdGlvbiAoX1JlYWN0JENvbXBvbmVudCkgeworICBfaW5oZXJp
dHMoUmVhY3RDU1NUcmFuc2l0aW9uR3JvdXAsIF9SZWFjdCRDb21wb25lbnQpOworCisgIGZ1bmN0
aW9uIFJlYWN0Q1NTVHJhbnNpdGlvbkdyb3VwKCkgeworICAgIHZhciBfdGVtcCwgX3RoaXMsIF9y
ZXQ7CisKKyAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUmVhY3RDU1NUcmFuc2l0aW9uR3JvdXAp
OworCisgICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBBcnJheShf
bGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHsKKyAgICAgIGFyZ3NbX2tleV0g
PSBhcmd1bWVudHNbX2tleV07CisgICAgfQorCisgICAgcmV0dXJuIF9yZXQgPSAoX3RlbXAgPSAo
X3RoaXMgPSBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCBfUmVhY3QkQ29tcG9uZW50
LmNhbGwuYXBwbHkoX1JlYWN0JENvbXBvbmVudCwgW3RoaXNdLmNvbmNhdChhcmdzKSkpLCBfdGhp
cyksIF90aGlzLl93cmFwQ2hpbGQgPSBmdW5jdGlvbiAoY2hpbGQpIHsKKyAgICAgIC8vIFdlIG5l
ZWQgdG8gcHJvdmlkZSB0aGlzIGNoaWxkRmFjdG9yeSBzbyB0aGF0CisgICAgICAvLyBSZWFjdENT
U1RyYW5zaXRpb25Hcm91cENoaWxkIGNhbiByZWNlaXZlIHVwZGF0ZXMgdG8gbmFtZSwgZW50ZXIs
IGFuZAorICAgICAgLy8gbGVhdmUgd2hpbGUgaXQgaXMgbGVhdmluZy4KKyAgICAgIHJldHVybiBS
ZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0Q1NTVHJhbnNpdGlvbkdyb3VwQ2hpbGQsIHsKKyAgICAg
ICAgbmFtZTogX3RoaXMucHJvcHMudHJhbnNpdGlvbk5hbWUsCisgICAgICAgIGFwcGVhcjogX3Ro
aXMucHJvcHMudHJhbnNpdGlvbkFwcGVhciwKKyAgICAgICAgZW50ZXI6IF90aGlzLnByb3BzLnRy
YW5zaXRpb25FbnRlciwKKyAgICAgICAgbGVhdmU6IF90aGlzLnByb3BzLnRyYW5zaXRpb25MZWF2
ZSwKKyAgICAgICAgYXBwZWFyVGltZW91dDogX3RoaXMucHJvcHMudHJhbnNpdGlvbkFwcGVhclRp
bWVvdXQsCisgICAgICAgIGVudGVyVGltZW91dDogX3RoaXMucHJvcHMudHJhbnNpdGlvbkVudGVy
VGltZW91dCwKKyAgICAgICAgbGVhdmVUaW1lb3V0OiBfdGhpcy5wcm9wcy50cmFuc2l0aW9uTGVh
dmVUaW1lb3V0CisgICAgICB9LCBjaGlsZCk7CisgICAgfSwgX3RlbXApLCBfcG9zc2libGVDb25z
dHJ1Y3RvclJldHVybihfdGhpcywgX3JldCk7CisgIH0KKworICBSZWFjdENTU1RyYW5zaXRpb25H
cm91cC5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gcmVuZGVyKCkgeworICAgIHJldHVybiBS
ZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0VHJhbnNpdGlvbkdyb3VwLCBfYXNzaWduKHt9LCB0aGlz
LnByb3BzLCB7IGNoaWxkRmFjdG9yeTogdGhpcy5fd3JhcENoaWxkIH0pKTsKKyAgfTsKKworICBy
ZXR1cm4gUmVhY3RDU1NUcmFuc2l0aW9uR3JvdXA7Cit9KFJlYWN0LkNvbXBvbmVudCk7CisKK1Jl
YWN0Q1NTVHJhbnNpdGlvbkdyb3VwLmRpc3BsYXlOYW1lID0gJ1JlYWN0Q1NTVHJhbnNpdGlvbkdy
b3VwJzsKK1JlYWN0Q1NTVHJhbnNpdGlvbkdyb3VwLnByb3BUeXBlcyA9IHsKKyAgdHJhbnNpdGlv
bk5hbWU6IFJlYWN0Q1NTVHJhbnNpdGlvbkdyb3VwQ2hpbGQucHJvcFR5cGVzLm5hbWUsCisKKyAg
dHJhbnNpdGlvbkFwcGVhcjogUmVhY3QuUHJvcFR5cGVzLmJvb2wsCisgIHRyYW5zaXRpb25FbnRl
cjogUmVhY3QuUHJvcFR5cGVzLmJvb2wsCisgIHRyYW5zaXRpb25MZWF2ZTogUmVhY3QuUHJvcFR5
cGVzLmJvb2wsCisgIHRyYW5zaXRpb25BcHBlYXJUaW1lb3V0OiBjcmVhdGVUcmFuc2l0aW9uVGlt
ZW91dFByb3BWYWxpZGF0b3IoJ0FwcGVhcicpLAorICB0cmFuc2l0aW9uRW50ZXJUaW1lb3V0OiBj
cmVhdGVUcmFuc2l0aW9uVGltZW91dFByb3BWYWxpZGF0b3IoJ0VudGVyJyksCisgIHRyYW5zaXRp
b25MZWF2ZVRpbWVvdXQ6IGNyZWF0ZVRyYW5zaXRpb25UaW1lb3V0UHJvcFZhbGlkYXRvcignTGVh
dmUnKQorfTsKK1JlYWN0Q1NTVHJhbnNpdGlvbkdyb3VwLmRlZmF1bHRQcm9wcyA9IHsKKyAgdHJh
bnNpdGlvbkFwcGVhcjogZmFsc2UsCisgIHRyYW5zaXRpb25FbnRlcjogdHJ1ZSwKKyAgdHJhbnNp
dGlvbkxlYXZlOiB0cnVlCit9OworCisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RDU1NUcmFuc2l0
aW9uR3JvdXA7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdENTU1RyYW5zaXRpb25Hcm91
cENoaWxkLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFj
dENTU1RyYW5zaXRpb25Hcm91cENoaWxkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ4MjIwNGZlNDBiMjA5ODRh
ODU2OWI5YmQwNjJiMDJkNzMyOGQ0OWYKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9y
ZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0Q1NTVHJhbnNpdGlvbkdyb3VwQ2hpbGQu
anMKQEAgLTAsMCArMSwxNjYgQEAKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFj
ZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2Ug
Y29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhl
CisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisn
dXNlIHN0cmljdCc7CisKK3ZhciBSZWFjdCA9IHJlcXVpcmUoJy4vUmVhY3QnKTsKK3ZhciBSZWFj
dEFkZG9uc0RPTURlcGVuZGVuY2llcyA9IHJlcXVpcmUoJy4vUmVhY3RBZGRvbnNET01EZXBlbmRl
bmNpZXMnKTsKKwordmFyIENTU0NvcmUgPSByZXF1aXJlKCdmYmpzL2xpYi9DU1NDb3JlJyk7Cit2
YXIgUmVhY3RUcmFuc2l0aW9uRXZlbnRzID0gcmVxdWlyZSgnLi9SZWFjdFRyYW5zaXRpb25FdmVu
dHMnKTsKKwordmFyIG9ubHlDaGlsZCA9IHJlcXVpcmUoJy4vb25seUNoaWxkJyk7CisKK3ZhciBU
SUNLID0gMTc7CisKK3ZhciBSZWFjdENTU1RyYW5zaXRpb25Hcm91cENoaWxkID0gUmVhY3QuY3Jl
YXRlQ2xhc3MoeworICBkaXNwbGF5TmFtZTogJ1JlYWN0Q1NTVHJhbnNpdGlvbkdyb3VwQ2hpbGQn
LAorCisgIHByb3BUeXBlczogeworICAgIG5hbWU6IFJlYWN0LlByb3BUeXBlcy5vbmVPZlR5cGUo
W1JlYWN0LlByb3BUeXBlcy5zdHJpbmcsIFJlYWN0LlByb3BUeXBlcy5zaGFwZSh7CisgICAgICBl
bnRlcjogUmVhY3QuUHJvcFR5cGVzLnN0cmluZywKKyAgICAgIGxlYXZlOiBSZWFjdC5Qcm9wVHlw
ZXMuc3RyaW5nLAorICAgICAgYWN0aXZlOiBSZWFjdC5Qcm9wVHlwZXMuc3RyaW5nCisgICAgfSks
IFJlYWN0LlByb3BUeXBlcy5zaGFwZSh7CisgICAgICBlbnRlcjogUmVhY3QuUHJvcFR5cGVzLnN0
cmluZywKKyAgICAgIGVudGVyQWN0aXZlOiBSZWFjdC5Qcm9wVHlwZXMuc3RyaW5nLAorICAgICAg
bGVhdmU6IFJlYWN0LlByb3BUeXBlcy5zdHJpbmcsCisgICAgICBsZWF2ZUFjdGl2ZTogUmVhY3Qu
UHJvcFR5cGVzLnN0cmluZywKKyAgICAgIGFwcGVhcjogUmVhY3QuUHJvcFR5cGVzLnN0cmluZywK
KyAgICAgIGFwcGVhckFjdGl2ZTogUmVhY3QuUHJvcFR5cGVzLnN0cmluZworICAgIH0pXSkuaXNS
ZXF1aXJlZCwKKworICAgIC8vIE9uY2Ugd2UgcmVxdWlyZSB0aW1lb3V0cyB0byBiZSBzcGVjaWZp
ZWQsIHdlIGNhbiByZW1vdmUgdGhlCisgICAgLy8gYm9vbGVhbiBmbGFncyAoYXBwZWFyIGV0Yy4p
IGFuZCBqdXN0IGFjY2VwdCBhIG51bWJlcgorICAgIC8vIG9yIGEgYm9vbCBmb3IgdGhlIHRpbWVv
dXQgZmxhZ3MgKGFwcGVhclRpbWVvdXQgZXRjLikKKyAgICBhcHBlYXI6IFJlYWN0LlByb3BUeXBl
cy5ib29sLAorICAgIGVudGVyOiBSZWFjdC5Qcm9wVHlwZXMuYm9vbCwKKyAgICBsZWF2ZTogUmVh
Y3QuUHJvcFR5cGVzLmJvb2wsCisgICAgYXBwZWFyVGltZW91dDogUmVhY3QuUHJvcFR5cGVzLm51
bWJlciwKKyAgICBlbnRlclRpbWVvdXQ6IFJlYWN0LlByb3BUeXBlcy5udW1iZXIsCisgICAgbGVh
dmVUaW1lb3V0OiBSZWFjdC5Qcm9wVHlwZXMubnVtYmVyCisgIH0sCisKKyAgdHJhbnNpdGlvbjog
ZnVuY3Rpb24gKGFuaW1hdGlvblR5cGUsIGZpbmlzaENhbGxiYWNrLCB1c2VyU3BlY2lmaWVkRGVs
YXkpIHsKKyAgICB2YXIgbm9kZSA9IFJlYWN0QWRkb25zRE9NRGVwZW5kZW5jaWVzLmdldFJlYWN0
RE9NKCkuZmluZERPTU5vZGUodGhpcyk7CisKKyAgICBpZiAoIW5vZGUpIHsKKyAgICAgIGlmIChm
aW5pc2hDYWxsYmFjaykgeworICAgICAgICBmaW5pc2hDYWxsYmFjaygpOworICAgICAgfQorICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIHZhciBjbGFzc05hbWUgPSB0aGlzLnByb3BzLm5hbWVb
YW5pbWF0aW9uVHlwZV0gfHwgdGhpcy5wcm9wcy5uYW1lICsgJy0nICsgYW5pbWF0aW9uVHlwZTsK
KyAgICB2YXIgYWN0aXZlQ2xhc3NOYW1lID0gdGhpcy5wcm9wcy5uYW1lW2FuaW1hdGlvblR5cGUg
KyAnQWN0aXZlJ10gfHwgY2xhc3NOYW1lICsgJy1hY3RpdmUnOworICAgIHZhciB0aW1lb3V0ID0g
bnVsbDsKKworICAgIHZhciBlbmRMaXN0ZW5lciA9IGZ1bmN0aW9uIChlKSB7CisgICAgICBpZiAo
ZSAmJiBlLnRhcmdldCAhPT0gbm9kZSkgeworICAgICAgICByZXR1cm47CisgICAgICB9CisKKyAg
ICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTsKKworICAgICAgQ1NTQ29yZS5yZW1vdmVDbGFzcyhu
b2RlLCBjbGFzc05hbWUpOworICAgICAgQ1NTQ29yZS5yZW1vdmVDbGFzcyhub2RlLCBhY3RpdmVD
bGFzc05hbWUpOworCisgICAgICBSZWFjdFRyYW5zaXRpb25FdmVudHMucmVtb3ZlRW5kRXZlbnRM
aXN0ZW5lcihub2RlLCBlbmRMaXN0ZW5lcik7CisKKyAgICAgIC8vIFVzdWFsbHkgdGhpcyBvcHRp
b25hbCBjYWxsYmFjayBpcyB1c2VkIGZvciBpbmZvcm1pbmcgYW4gb3duZXIgb2YKKyAgICAgIC8v
IGEgbGVhdmUgYW5pbWF0aW9uIGFuZCB0ZWxsaW5nIGl0IHRvIHJlbW92ZSB0aGUgY2hpbGQuCisg
ICAgICBpZiAoZmluaXNoQ2FsbGJhY2spIHsKKyAgICAgICAgZmluaXNoQ2FsbGJhY2soKTsKKyAg
ICAgIH0KKyAgICB9OworCisgICAgQ1NTQ29yZS5hZGRDbGFzcyhub2RlLCBjbGFzc05hbWUpOwor
CisgICAgLy8gTmVlZCB0byBkbyB0aGlzIHRvIGFjdHVhbGx5IHRyaWdnZXIgYSB0cmFuc2l0aW9u
LgorICAgIHRoaXMucXVldWVDbGFzc0FuZE5vZGUoYWN0aXZlQ2xhc3NOYW1lLCBub2RlKTsKKwor
ICAgIC8vIElmIHRoZSB1c2VyIHNwZWNpZmllZCBhIHRpbWVvdXQgZGVsYXkuCisgICAgaWYgKHVz
ZXJTcGVjaWZpZWREZWxheSkgeworICAgICAgLy8gQ2xlYW4tdXAgdGhlIGFuaW1hdGlvbiBhZnRl
ciB0aGUgc3BlY2lmaWVkIGRlbGF5CisgICAgICB0aW1lb3V0ID0gc2V0VGltZW91dChlbmRMaXN0
ZW5lciwgdXNlclNwZWNpZmllZERlbGF5KTsKKyAgICAgIHRoaXMudHJhbnNpdGlvblRpbWVvdXRz
LnB1c2godGltZW91dCk7CisgICAgfSBlbHNlIHsKKyAgICAgIC8vIERFUFJFQ0FURUQ6IHRoaXMg
bGlzdGVuZXIgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHZlcnNpb24gb2YgcmVhY3QKKyAg
ICAgIFJlYWN0VHJhbnNpdGlvbkV2ZW50cy5hZGRFbmRFdmVudExpc3RlbmVyKG5vZGUsIGVuZExp
c3RlbmVyKTsKKyAgICB9CisgIH0sCisKKyAgcXVldWVDbGFzc0FuZE5vZGU6IGZ1bmN0aW9uIChj
bGFzc05hbWUsIG5vZGUpIHsKKyAgICB0aGlzLmNsYXNzTmFtZUFuZE5vZGVRdWV1ZS5wdXNoKHsK
KyAgICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lLAorICAgICAgbm9kZTogbm9kZQorICAgIH0pOwor
CisgICAgaWYgKCF0aGlzLnRpbWVvdXQpIHsKKyAgICAgIHRoaXMudGltZW91dCA9IHNldFRpbWVv
dXQodGhpcy5mbHVzaENsYXNzTmFtZUFuZE5vZGVRdWV1ZSwgVElDSyk7CisgICAgfQorICB9LAor
CisgIGZsdXNoQ2xhc3NOYW1lQW5kTm9kZVF1ZXVlOiBmdW5jdGlvbiAoKSB7CisgICAgaWYgKHRo
aXMuaXNNb3VudGVkKCkpIHsKKyAgICAgIHRoaXMuY2xhc3NOYW1lQW5kTm9kZVF1ZXVlLmZvckVh
Y2goZnVuY3Rpb24gKG9iaikgeworICAgICAgICBDU1NDb3JlLmFkZENsYXNzKG9iai5ub2RlLCBv
YmouY2xhc3NOYW1lKTsKKyAgICAgIH0pOworICAgIH0KKyAgICB0aGlzLmNsYXNzTmFtZUFuZE5v
ZGVRdWV1ZS5sZW5ndGggPSAwOworICAgIHRoaXMudGltZW91dCA9IG51bGw7CisgIH0sCisKKyAg
Y29tcG9uZW50V2lsbE1vdW50OiBmdW5jdGlvbiAoKSB7CisgICAgdGhpcy5jbGFzc05hbWVBbmRO
b2RlUXVldWUgPSBbXTsKKyAgICB0aGlzLnRyYW5zaXRpb25UaW1lb3V0cyA9IFtdOworICB9LAor
CisgIGNvbXBvbmVudFdpbGxVbm1vdW50OiBmdW5jdGlvbiAoKSB7CisgICAgaWYgKHRoaXMudGlt
ZW91dCkgeworICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dCk7CisgICAgfQorICAgIHRo
aXMudHJhbnNpdGlvblRpbWVvdXRzLmZvckVhY2goZnVuY3Rpb24gKHRpbWVvdXQpIHsKKyAgICAg
IGNsZWFyVGltZW91dCh0aW1lb3V0KTsKKyAgICB9KTsKKworICAgIHRoaXMuY2xhc3NOYW1lQW5k
Tm9kZVF1ZXVlLmxlbmd0aCA9IDA7CisgIH0sCisKKyAgY29tcG9uZW50V2lsbEFwcGVhcjogZnVu
Y3Rpb24gKGRvbmUpIHsKKyAgICBpZiAodGhpcy5wcm9wcy5hcHBlYXIpIHsKKyAgICAgIHRoaXMu
dHJhbnNpdGlvbignYXBwZWFyJywgZG9uZSwgdGhpcy5wcm9wcy5hcHBlYXJUaW1lb3V0KTsKKyAg
ICB9IGVsc2UgeworICAgICAgZG9uZSgpOworICAgIH0KKyAgfSwKKworICBjb21wb25lbnRXaWxs
RW50ZXI6IGZ1bmN0aW9uIChkb25lKSB7CisgICAgaWYgKHRoaXMucHJvcHMuZW50ZXIpIHsKKyAg
ICAgIHRoaXMudHJhbnNpdGlvbignZW50ZXInLCBkb25lLCB0aGlzLnByb3BzLmVudGVyVGltZW91
dCk7CisgICAgfSBlbHNlIHsKKyAgICAgIGRvbmUoKTsKKyAgICB9CisgIH0sCisKKyAgY29tcG9u
ZW50V2lsbExlYXZlOiBmdW5jdGlvbiAoZG9uZSkgeworICAgIGlmICh0aGlzLnByb3BzLmxlYXZl
KSB7CisgICAgICB0aGlzLnRyYW5zaXRpb24oJ2xlYXZlJywgZG9uZSwgdGhpcy5wcm9wcy5sZWF2
ZVRpbWVvdXQpOworICAgIH0gZWxzZSB7CisgICAgICBkb25lKCk7CisgICAgfQorICB9LAorCisg
IHJlbmRlcjogZnVuY3Rpb24gKCkgeworICAgIHJldHVybiBvbmx5Q2hpbGQodGhpcy5wcm9wcy5j
aGlsZHJlbik7CisgIH0KK30pOworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0Q1NTVHJhbnNpdGlv
bkdyb3VwQ2hpbGQ7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdENoaWxkcmVuLmpzIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdENoaWxkcmVuLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRhMmNhYjcwZDBkYmEwNzgzNmMwNzg2ODYxMjM1ZDgwODQ0MWMxMGQKLS0t
IC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QvbGli
L1JlYWN0Q2hpbGRyZW4uanMKQEAgLTAsMCArMSwxOTAgQEAKKy8qKgorICogQ29weXJpZ2h0IDIw
MTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vu
c2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9m
IHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdo
dHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5
LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBQb29sZWRDbGFzcyA9IHJlcXVpcmUo
Jy4vUG9vbGVkQ2xhc3MnKTsKK3ZhciBSZWFjdEVsZW1lbnQgPSByZXF1aXJlKCcuL1JlYWN0RWxl
bWVudCcpOworCit2YXIgZW1wdHlGdW5jdGlvbiA9IHJlcXVpcmUoJ2ZianMvbGliL2VtcHR5RnVu
Y3Rpb24nKTsKK3ZhciB0cmF2ZXJzZUFsbENoaWxkcmVuID0gcmVxdWlyZSgnLi90cmF2ZXJzZUFs
bENoaWxkcmVuJyk7CisKK3ZhciB0d29Bcmd1bWVudFBvb2xlciA9IFBvb2xlZENsYXNzLnR3b0Fy
Z3VtZW50UG9vbGVyOwordmFyIGZvdXJBcmd1bWVudFBvb2xlciA9IFBvb2xlZENsYXNzLmZvdXJB
cmd1bWVudFBvb2xlcjsKKwordmFyIHVzZXJQcm92aWRlZEtleUVzY2FwZVJlZ2V4ID0gL1wvKy9n
OworZnVuY3Rpb24gZXNjYXBlVXNlclByb3ZpZGVkS2V5KHRleHQpIHsKKyAgcmV0dXJuICgnJyAr
IHRleHQpLnJlcGxhY2UodXNlclByb3ZpZGVkS2V5RXNjYXBlUmVnZXgsICckJi8nKTsKK30KKwor
LyoqCisgKiBQb29sZWRDbGFzcyByZXByZXNlbnRpbmcgdGhlIGJvb2trZWVwaW5nIGFzc29jaWF0
ZWQgd2l0aCBwZXJmb3JtaW5nIGEgY2hpbGQKKyAqIHRyYXZlcnNhbC4gQWxsb3dzIGF2b2lkaW5n
IGJpbmRpbmcgY2FsbGJhY2tzLgorICoKKyAqIEBjb25zdHJ1Y3RvciBGb3JFYWNoQm9va0tlZXBp
bmcKKyAqIEBwYXJhbSB7IWZ1bmN0aW9ufSBmb3JFYWNoRnVuY3Rpb24gRnVuY3Rpb24gdG8gcGVy
Zm9ybSB0cmF2ZXJzYWwgd2l0aC4KKyAqIEBwYXJhbSB7Pyp9IGZvckVhY2hDb250ZXh0IENvbnRl
eHQgdG8gcGVyZm9ybSBjb250ZXh0IHdpdGguCisgKi8KK2Z1bmN0aW9uIEZvckVhY2hCb29rS2Vl
cGluZyhmb3JFYWNoRnVuY3Rpb24sIGZvckVhY2hDb250ZXh0KSB7CisgIHRoaXMuZnVuYyA9IGZv
ckVhY2hGdW5jdGlvbjsKKyAgdGhpcy5jb250ZXh0ID0gZm9yRWFjaENvbnRleHQ7CisgIHRoaXMu
Y291bnQgPSAwOworfQorRm9yRWFjaEJvb2tLZWVwaW5nLnByb3RvdHlwZS5kZXN0cnVjdG9yID0g
ZnVuY3Rpb24gKCkgeworICB0aGlzLmZ1bmMgPSBudWxsOworICB0aGlzLmNvbnRleHQgPSBudWxs
OworICB0aGlzLmNvdW50ID0gMDsKK307CitQb29sZWRDbGFzcy5hZGRQb29saW5nVG8oRm9yRWFj
aEJvb2tLZWVwaW5nLCB0d29Bcmd1bWVudFBvb2xlcik7CisKK2Z1bmN0aW9uIGZvckVhY2hTaW5n
bGVDaGlsZChib29rS2VlcGluZywgY2hpbGQsIG5hbWUpIHsKKyAgdmFyIGZ1bmMgPSBib29rS2Vl
cGluZy5mdW5jLAorICAgICAgY29udGV4dCA9IGJvb2tLZWVwaW5nLmNvbnRleHQ7CisKKyAgZnVu
Yy5jYWxsKGNvbnRleHQsIGNoaWxkLCBib29rS2VlcGluZy5jb3VudCsrKTsKK30KKworLyoqCisg
KiBJdGVyYXRlcyB0aHJvdWdoIGNoaWxkcmVuIHRoYXQgYXJlIHR5cGljYWxseSBzcGVjaWZpZWQg
YXMgYHByb3BzLmNoaWxkcmVuYC4KKyAqCisgKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRodWIu
aW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3QuY2hpbGRyZW4uZm9yZWFjaAor
ICoKKyAqIFRoZSBwcm92aWRlZCBmb3JFYWNoRnVuYyhjaGlsZCwgaW5kZXgpIHdpbGwgYmUgY2Fs
bGVkIGZvciBlYWNoCisgKiBsZWFmIGNoaWxkLgorICoKKyAqIEBwYXJhbSB7Pyp9IGNoaWxkcmVu
IENoaWxkcmVuIHRyZWUgY29udGFpbmVyLgorICogQHBhcmFtIHtmdW5jdGlvbigqLCBpbnQpfSBm
b3JFYWNoRnVuYworICogQHBhcmFtIHsqfSBmb3JFYWNoQ29udGV4dCBDb250ZXh0IGZvciBmb3JF
YWNoQ29udGV4dC4KKyAqLworZnVuY3Rpb24gZm9yRWFjaENoaWxkcmVuKGNoaWxkcmVuLCBmb3JF
YWNoRnVuYywgZm9yRWFjaENvbnRleHQpIHsKKyAgaWYgKGNoaWxkcmVuID09IG51bGwpIHsKKyAg
ICByZXR1cm4gY2hpbGRyZW47CisgIH0KKyAgdmFyIHRyYXZlcnNlQ29udGV4dCA9IEZvckVhY2hC
b29rS2VlcGluZy5nZXRQb29sZWQoZm9yRWFjaEZ1bmMsIGZvckVhY2hDb250ZXh0KTsKKyAgdHJh
dmVyc2VBbGxDaGlsZHJlbihjaGlsZHJlbiwgZm9yRWFjaFNpbmdsZUNoaWxkLCB0cmF2ZXJzZUNv
bnRleHQpOworICBGb3JFYWNoQm9va0tlZXBpbmcucmVsZWFzZSh0cmF2ZXJzZUNvbnRleHQpOwor
fQorCisvKioKKyAqIFBvb2xlZENsYXNzIHJlcHJlc2VudGluZyB0aGUgYm9va2tlZXBpbmcgYXNz
b2NpYXRlZCB3aXRoIHBlcmZvcm1pbmcgYSBjaGlsZAorICogbWFwcGluZy4gQWxsb3dzIGF2b2lk
aW5nIGJpbmRpbmcgY2FsbGJhY2tzLgorICoKKyAqIEBjb25zdHJ1Y3RvciBNYXBCb29rS2VlcGlu
ZworICogQHBhcmFtIHshKn0gbWFwUmVzdWx0IE9iamVjdCBjb250YWluaW5nIHRoZSBvcmRlcmVk
IG1hcCBvZiByZXN1bHRzLgorICogQHBhcmFtIHshZnVuY3Rpb259IG1hcEZ1bmN0aW9uIEZ1bmN0
aW9uIHRvIHBlcmZvcm0gbWFwcGluZyB3aXRoLgorICogQHBhcmFtIHs/Kn0gbWFwQ29udGV4dCBD
b250ZXh0IHRvIHBlcmZvcm0gbWFwcGluZyB3aXRoLgorICovCitmdW5jdGlvbiBNYXBCb29rS2Vl
cGluZyhtYXBSZXN1bHQsIGtleVByZWZpeCwgbWFwRnVuY3Rpb24sIG1hcENvbnRleHQpIHsKKyAg
dGhpcy5yZXN1bHQgPSBtYXBSZXN1bHQ7CisgIHRoaXMua2V5UHJlZml4ID0ga2V5UHJlZml4Owor
ICB0aGlzLmZ1bmMgPSBtYXBGdW5jdGlvbjsKKyAgdGhpcy5jb250ZXh0ID0gbWFwQ29udGV4dDsK
KyAgdGhpcy5jb3VudCA9IDA7Cit9CitNYXBCb29rS2VlcGluZy5wcm90b3R5cGUuZGVzdHJ1Y3Rv
ciA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5yZXN1bHQgPSBudWxsOworICB0aGlzLmtleVByZWZp
eCA9IG51bGw7CisgIHRoaXMuZnVuYyA9IG51bGw7CisgIHRoaXMuY29udGV4dCA9IG51bGw7Cisg
IHRoaXMuY291bnQgPSAwOworfTsKK1Bvb2xlZENsYXNzLmFkZFBvb2xpbmdUbyhNYXBCb29rS2Vl
cGluZywgZm91ckFyZ3VtZW50UG9vbGVyKTsKKworZnVuY3Rpb24gbWFwU2luZ2xlQ2hpbGRJbnRv
Q29udGV4dChib29rS2VlcGluZywgY2hpbGQsIGNoaWxkS2V5KSB7CisgIHZhciByZXN1bHQgPSBi
b29rS2VlcGluZy5yZXN1bHQsCisgICAgICBrZXlQcmVmaXggPSBib29rS2VlcGluZy5rZXlQcmVm
aXgsCisgICAgICBmdW5jID0gYm9va0tlZXBpbmcuZnVuYywKKyAgICAgIGNvbnRleHQgPSBib29r
S2VlcGluZy5jb250ZXh0OworCisKKyAgdmFyIG1hcHBlZENoaWxkID0gZnVuYy5jYWxsKGNvbnRl
eHQsIGNoaWxkLCBib29rS2VlcGluZy5jb3VudCsrKTsKKyAgaWYgKEFycmF5LmlzQXJyYXkobWFw
cGVkQ2hpbGQpKSB7CisgICAgbWFwSW50b1dpdGhLZXlQcmVmaXhJbnRlcm5hbChtYXBwZWRDaGls
ZCwgcmVzdWx0LCBjaGlsZEtleSwgZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc0FyZ3VtZW50KTsK
KyAgfSBlbHNlIGlmIChtYXBwZWRDaGlsZCAhPSBudWxsKSB7CisgICAgaWYgKFJlYWN0RWxlbWVu
dC5pc1ZhbGlkRWxlbWVudChtYXBwZWRDaGlsZCkpIHsKKyAgICAgIG1hcHBlZENoaWxkID0gUmVh
Y3RFbGVtZW50LmNsb25lQW5kUmVwbGFjZUtleShtYXBwZWRDaGlsZCwKKyAgICAgIC8vIEtlZXAg
Ym90aCB0aGUgKG1hcHBlZCkgYW5kIG9sZCBrZXlzIGlmIHRoZXkgZGlmZmVyLCBqdXN0IGFzCisg
ICAgICAvLyB0cmF2ZXJzZUFsbENoaWxkcmVuIHVzZWQgdG8gZG8gZm9yIG9iamVjdHMgYXMgY2hp
bGRyZW4KKyAgICAgIGtleVByZWZpeCArIChtYXBwZWRDaGlsZC5rZXkgJiYgKCFjaGlsZCB8fCBj
aGlsZC5rZXkgIT09IG1hcHBlZENoaWxkLmtleSkgPyBlc2NhcGVVc2VyUHJvdmlkZWRLZXkobWFw
cGVkQ2hpbGQua2V5KSArICcvJyA6ICcnKSArIGNoaWxkS2V5KTsKKyAgICB9CisgICAgcmVzdWx0
LnB1c2gobWFwcGVkQ2hpbGQpOworICB9Cit9CisKK2Z1bmN0aW9uIG1hcEludG9XaXRoS2V5UHJl
Zml4SW50ZXJuYWwoY2hpbGRyZW4sIGFycmF5LCBwcmVmaXgsIGZ1bmMsIGNvbnRleHQpIHsKKyAg
dmFyIGVzY2FwZWRQcmVmaXggPSAnJzsKKyAgaWYgKHByZWZpeCAhPSBudWxsKSB7CisgICAgZXNj
YXBlZFByZWZpeCA9IGVzY2FwZVVzZXJQcm92aWRlZEtleShwcmVmaXgpICsgJy8nOworICB9Cisg
IHZhciB0cmF2ZXJzZUNvbnRleHQgPSBNYXBCb29rS2VlcGluZy5nZXRQb29sZWQoYXJyYXksIGVz
Y2FwZWRQcmVmaXgsIGZ1bmMsIGNvbnRleHQpOworICB0cmF2ZXJzZUFsbENoaWxkcmVuKGNoaWxk
cmVuLCBtYXBTaW5nbGVDaGlsZEludG9Db250ZXh0LCB0cmF2ZXJzZUNvbnRleHQpOworICBNYXBC
b29rS2VlcGluZy5yZWxlYXNlKHRyYXZlcnNlQ29udGV4dCk7Cit9CisKKy8qKgorICogTWFwcyBj
aGlsZHJlbiB0aGF0IGFyZSB0eXBpY2FsbHkgc3BlY2lmaWVkIGFzIGBwcm9wcy5jaGlsZHJlbmAu
CisgKgorICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdG9wLWxl
dmVsLWFwaS5odG1sI3JlYWN0LmNoaWxkcmVuLm1hcAorICoKKyAqIFRoZSBwcm92aWRlZCBtYXBG
dW5jdGlvbihjaGlsZCwga2V5LCBpbmRleCkgd2lsbCBiZSBjYWxsZWQgZm9yIGVhY2gKKyAqIGxl
YWYgY2hpbGQuCisgKgorICogQHBhcmFtIHs/Kn0gY2hpbGRyZW4gQ2hpbGRyZW4gdHJlZSBjb250
YWluZXIuCisgKiBAcGFyYW0ge2Z1bmN0aW9uKCosIGludCl9IGZ1bmMgVGhlIG1hcCBmdW5jdGlv
bi4KKyAqIEBwYXJhbSB7Kn0gY29udGV4dCBDb250ZXh0IGZvciBtYXBGdW5jdGlvbi4KKyAqIEBy
ZXR1cm4ge29iamVjdH0gT2JqZWN0IGNvbnRhaW5pbmcgdGhlIG9yZGVyZWQgbWFwIG9mIHJlc3Vs
dHMuCisgKi8KK2Z1bmN0aW9uIG1hcENoaWxkcmVuKGNoaWxkcmVuLCBmdW5jLCBjb250ZXh0KSB7
CisgIGlmIChjaGlsZHJlbiA9PSBudWxsKSB7CisgICAgcmV0dXJuIGNoaWxkcmVuOworICB9Cisg
IHZhciByZXN1bHQgPSBbXTsKKyAgbWFwSW50b1dpdGhLZXlQcmVmaXhJbnRlcm5hbChjaGlsZHJl
biwgcmVzdWx0LCBudWxsLCBmdW5jLCBjb250ZXh0KTsKKyAgcmV0dXJuIHJlc3VsdDsKK30KKwor
ZnVuY3Rpb24gZm9yRWFjaFNpbmdsZUNoaWxkRHVtbXkodHJhdmVyc2VDb250ZXh0LCBjaGlsZCwg
bmFtZSkgeworICByZXR1cm4gbnVsbDsKK30KKworLyoqCisgKiBDb3VudCB0aGUgbnVtYmVyIG9m
IGNoaWxkcmVuIHRoYXQgYXJlIHR5cGljYWxseSBzcGVjaWZpZWQgYXMKKyAqIGBwcm9wcy5jaGls
ZHJlbmAuCisgKgorICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3Mv
dG9wLWxldmVsLWFwaS5odG1sI3JlYWN0LmNoaWxkcmVuLmNvdW50CisgKgorICogQHBhcmFtIHs/
Kn0gY2hpbGRyZW4gQ2hpbGRyZW4gdHJlZSBjb250YWluZXIuCisgKiBAcmV0dXJuIHtudW1iZXJ9
IFRoZSBudW1iZXIgb2YgY2hpbGRyZW4uCisgKi8KK2Z1bmN0aW9uIGNvdW50Q2hpbGRyZW4oY2hp
bGRyZW4sIGNvbnRleHQpIHsKKyAgcmV0dXJuIHRyYXZlcnNlQWxsQ2hpbGRyZW4oY2hpbGRyZW4s
IGZvckVhY2hTaW5nbGVDaGlsZER1bW15LCBudWxsKTsKK30KKworLyoqCisgKiBGbGF0dGVuIGEg
Y2hpbGRyZW4gb2JqZWN0ICh0eXBpY2FsbHkgc3BlY2lmaWVkIGFzIGBwcm9wcy5jaGlsZHJlbmAp
IGFuZAorICogcmV0dXJuIGFuIGFycmF5IHdpdGggYXBwcm9wcmlhdGVseSByZS1rZXllZCBjaGls
ZHJlbi4KKyAqCisgKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90
b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3QuY2hpbGRyZW4udG9hcnJheQorICovCitmdW5jdGlvbiB0
b0FycmF5KGNoaWxkcmVuKSB7CisgIHZhciByZXN1bHQgPSBbXTsKKyAgbWFwSW50b1dpdGhLZXlQ
cmVmaXhJbnRlcm5hbChjaGlsZHJlbiwgcmVzdWx0LCBudWxsLCBlbXB0eUZ1bmN0aW9uLnRoYXRS
ZXR1cm5zQXJndW1lbnQpOworICByZXR1cm4gcmVzdWx0OworfQorCit2YXIgUmVhY3RDaGlsZHJl
biA9IHsKKyAgZm9yRWFjaDogZm9yRWFjaENoaWxkcmVuLAorICBtYXA6IG1hcENoaWxkcmVuLAor
ICBtYXBJbnRvV2l0aEtleVByZWZpeEludGVybmFsOiBtYXBJbnRvV2l0aEtleVByZWZpeEludGVy
bmFsLAorICBjb3VudDogY291bnRDaGlsZHJlbiwKKyAgdG9BcnJheTogdG9BcnJheQorfTsKKwor
bW9kdWxlLmV4cG9ydHMgPSBSZWFjdENoaWxkcmVuOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC9saWIv
UmVhY3RDbGFzcy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC9saWIv
UmVhY3RDbGFzcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNGZjNDE2Mzg4NGVmNTQ0YjlmMzg1ODgwNzc3ZDQy
Y2U1MzZiOGQ0Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1
bGVzL3JlYWN0L2xpYi9SZWFjdENsYXNzLmpzCkBAIC0wLDAgKzEsNzE2IEBACisvKioKKyAqIENv
cHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1z
dHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRp
cmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBw
YXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1l
IGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJbnZhcmlh
bnQgPSByZXF1aXJlKCcuL3JlYWN0UHJvZEludmFyaWFudCcpLAorICAgIF9hc3NpZ24gPSByZXF1
aXJlKCdvYmplY3QtYXNzaWduJyk7CisKK3ZhciBSZWFjdENvbXBvbmVudCA9IHJlcXVpcmUoJy4v
UmVhY3RDb21wb25lbnQnKTsKK3ZhciBSZWFjdEVsZW1lbnQgPSByZXF1aXJlKCcuL1JlYWN0RWxl
bWVudCcpOwordmFyIFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzID0gcmVxdWlyZSgnLi9SZWFj
dFByb3BUeXBlTG9jYXRpb25OYW1lcycpOwordmFyIFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlID0gcmVx
dWlyZSgnLi9SZWFjdE5vb3BVcGRhdGVRdWV1ZScpOworCit2YXIgZW1wdHlPYmplY3QgPSByZXF1
aXJlKCdmYmpzL2xpYi9lbXB0eU9iamVjdCcpOwordmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2Zi
anMvbGliL2ludmFyaWFudCcpOwordmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJu
aW5nJyk7CisKK3ZhciBNSVhJTlNfS0VZID0gJ21peGlucyc7CisKKy8vIEhlbHBlciBmdW5jdGlv
biB0byBhbGxvdyB0aGUgY3JlYXRpb24gb2YgYW5vbnltb3VzIGZ1bmN0aW9ucyB3aGljaCBkbyBu
b3QKKy8vIGhhdmUgLm5hbWUgc2V0IHRvIHRoZSBuYW1lIG9mIHRoZSB2YXJpYWJsZSBiZWluZyBh
c3NpZ25lZCB0by4KK2Z1bmN0aW9uIGlkZW50aXR5KGZuKSB7CisgIHJldHVybiBmbjsKK30KKwor
LyoqCisgKiBQb2xpY2llcyB0aGF0IGRlc2NyaWJlIG1ldGhvZHMgaW4gYFJlYWN0Q2xhc3NJbnRl
cmZhY2VgLgorICovCisKKwordmFyIGluamVjdGVkTWl4aW5zID0gW107CisKKy8qKgorICogQ29t
cG9zaXRlIGNvbXBvbmVudHMgYXJlIGhpZ2hlci1sZXZlbCBjb21wb25lbnRzIHRoYXQgY29tcG9z
ZSBvdGhlciBjb21wb3NpdGUKKyAqIG9yIGhvc3QgY29tcG9uZW50cy4KKyAqCisgKiBUbyBjcmVh
dGUgYSBuZXcgdHlwZSBvZiBgUmVhY3RDbGFzc2AsIHBhc3MgYSBzcGVjaWZpY2F0aW9uIG9mCisg
KiB5b3VyIG5ldyBjbGFzcyB0byBgUmVhY3QuY3JlYXRlQ2xhc3NgLiBUaGUgb25seSByZXF1aXJl
bWVudCBvZiB5b3VyIGNsYXNzCisgKiBzcGVjaWZpY2F0aW9uIGlzIHRoYXQgeW91IGltcGxlbWVu
dCBhIGByZW5kZXJgIG1ldGhvZC4KKyAqCisgKiAgIHZhciBNeUNvbXBvbmVudCA9IFJlYWN0LmNy
ZWF0ZUNsYXNzKHsKKyAqICAgICByZW5kZXI6IGZ1bmN0aW9uKCkgeworICogICAgICAgcmV0dXJu
IDxkaXY+SGVsbG8gV29ybGQ8L2Rpdj47CisgKiAgICAgfQorICogICB9KTsKKyAqCisgKiBUaGUg
Y2xhc3Mgc3BlY2lmaWNhdGlvbiBzdXBwb3J0cyBhIHNwZWNpZmljIHByb3RvY29sIG9mIG1ldGhv
ZHMgdGhhdCBoYXZlCisgKiBzcGVjaWFsIG1lYW5pbmcgKGUuZy4gYHJlbmRlcmApLiBTZWUgYFJl
YWN0Q2xhc3NJbnRlcmZhY2VgIGZvcgorICogbW9yZSB0aGUgY29tcHJlaGVuc2l2ZSBwcm90b2Nv
bC4gQW55IG90aGVyIHByb3BlcnRpZXMgYW5kIG1ldGhvZHMgaW4gdGhlCisgKiBjbGFzcyBzcGVj
aWZpY2F0aW9uIHdpbGwgYmUgYXZhaWxhYmxlIG9uIHRoZSBwcm90b3R5cGUuCisgKgorICogQGlu
dGVyZmFjZSBSZWFjdENsYXNzSW50ZXJmYWNlCisgKiBAaW50ZXJuYWwKKyAqLwordmFyIFJlYWN0
Q2xhc3NJbnRlcmZhY2UgPSB7CisKKyAgLyoqCisgICAqIEFuIGFycmF5IG9mIE1peGluIG9iamVj
dHMgdG8gaW5jbHVkZSB3aGVuIGRlZmluaW5nIHlvdXIgY29tcG9uZW50LgorICAgKgorICAgKiBA
dHlwZSB7YXJyYXl9CisgICAqIEBvcHRpb25hbAorICAgKi8KKyAgbWl4aW5zOiAnREVGSU5FX01B
TlknLAorCisgIC8qKgorICAgKiBBbiBvYmplY3QgY29udGFpbmluZyBwcm9wZXJ0aWVzIGFuZCBt
ZXRob2RzIHRoYXQgc2hvdWxkIGJlIGRlZmluZWQgb24KKyAgICogdGhlIGNvbXBvbmVudCdzIGNv
bnN0cnVjdG9yIGluc3RlYWQgb2YgaXRzIHByb3RvdHlwZSAoc3RhdGljIG1ldGhvZHMpLgorICAg
KgorICAgKiBAdHlwZSB7b2JqZWN0fQorICAgKiBAb3B0aW9uYWwKKyAgICovCisgIHN0YXRpY3M6
ICdERUZJTkVfTUFOWScsCisKKyAgLyoqCisgICAqIERlZmluaXRpb24gb2YgcHJvcCB0eXBlcyBm
b3IgdGhpcyBjb21wb25lbnQuCisgICAqCisgICAqIEB0eXBlIHtvYmplY3R9CisgICAqIEBvcHRp
b25hbAorICAgKi8KKyAgcHJvcFR5cGVzOiAnREVGSU5FX01BTlknLAorCisgIC8qKgorICAgKiBE
ZWZpbml0aW9uIG9mIGNvbnRleHQgdHlwZXMgZm9yIHRoaXMgY29tcG9uZW50LgorICAgKgorICAg
KiBAdHlwZSB7b2JqZWN0fQorICAgKiBAb3B0aW9uYWwKKyAgICovCisgIGNvbnRleHRUeXBlczog
J0RFRklORV9NQU5ZJywKKworICAvKioKKyAgICogRGVmaW5pdGlvbiBvZiBjb250ZXh0IHR5cGVz
IHRoaXMgY29tcG9uZW50IHNldHMgZm9yIGl0cyBjaGlsZHJlbi4KKyAgICoKKyAgICogQHR5cGUg
e29iamVjdH0KKyAgICogQG9wdGlvbmFsCisgICAqLworICBjaGlsZENvbnRleHRUeXBlczogJ0RF
RklORV9NQU5ZJywKKworICAvLyA9PT09IERlZmluaXRpb24gbWV0aG9kcyA9PT09CisKKyAgLyoq
CisgICAqIEludm9rZWQgd2hlbiB0aGUgY29tcG9uZW50IGlzIG1vdW50ZWQuIFZhbHVlcyBpbiB0
aGUgbWFwcGluZyB3aWxsIGJlIHNldCBvbgorICAgKiBgdGhpcy5wcm9wc2AgaWYgdGhhdCBwcm9w
IGlzIG5vdCBzcGVjaWZpZWQgKGkuZS4gdXNpbmcgYW4gYGluYCBjaGVjaykuCisgICAqCisgICAq
IFRoaXMgbWV0aG9kIGlzIGludm9rZWQgYmVmb3JlIGBnZXRJbml0aWFsU3RhdGVgIGFuZCB0aGVy
ZWZvcmUgY2Fubm90IHJlbHkKKyAgICogb24gYHRoaXMuc3RhdGVgIG9yIHVzZSBgdGhpcy5zZXRT
dGF0ZWAuCisgICAqCisgICAqIEByZXR1cm4ge29iamVjdH0KKyAgICogQG9wdGlvbmFsCisgICAq
LworICBnZXREZWZhdWx0UHJvcHM6ICdERUZJTkVfTUFOWV9NRVJHRUQnLAorCisgIC8qKgorICAg
KiBJbnZva2VkIG9uY2UgYmVmb3JlIHRoZSBjb21wb25lbnQgaXMgbW91bnRlZC4gVGhlIHJldHVy
biB2YWx1ZSB3aWxsIGJlIHVzZWQKKyAgICogYXMgdGhlIGluaXRpYWwgdmFsdWUgb2YgYHRoaXMu
c3RhdGVgLgorICAgKgorICAgKiAgIGdldEluaXRpYWxTdGF0ZTogZnVuY3Rpb24oKSB7CisgICAq
ICAgICByZXR1cm4geworICAgKiAgICAgICBpc09uOiBmYWxzZSwKKyAgICogICAgICAgZm9vQmF6
OiBuZXcgQmF6Rm9vKCkKKyAgICogICAgIH0KKyAgICogICB9CisgICAqCisgICAqIEByZXR1cm4g
e29iamVjdH0KKyAgICogQG9wdGlvbmFsCisgICAqLworICBnZXRJbml0aWFsU3RhdGU6ICdERUZJ
TkVfTUFOWV9NRVJHRUQnLAorCisgIC8qKgorICAgKiBAcmV0dXJuIHtvYmplY3R9CisgICAqIEBv
cHRpb25hbAorICAgKi8KKyAgZ2V0Q2hpbGRDb250ZXh0OiAnREVGSU5FX01BTllfTUVSR0VEJywK
KworICAvKioKKyAgICogVXNlcyBwcm9wcyBmcm9tIGB0aGlzLnByb3BzYCBhbmQgc3RhdGUgZnJv
bSBgdGhpcy5zdGF0ZWAgdG8gcmVuZGVyIHRoZQorICAgKiBzdHJ1Y3R1cmUgb2YgdGhlIGNvbXBv
bmVudC4KKyAgICoKKyAgICogTm8gZ3VhcmFudGVlcyBhcmUgbWFkZSBhYm91dCB3aGVuIG9yIGhv
dyBvZnRlbiB0aGlzIG1ldGhvZCBpcyBpbnZva2VkLCBzbworICAgKiBpdCBtdXN0IG5vdCBoYXZl
IHNpZGUgZWZmZWN0cy4KKyAgICoKKyAgICogICByZW5kZXI6IGZ1bmN0aW9uKCkgeworICAgKiAg
ICAgdmFyIG5hbWUgPSB0aGlzLnByb3BzLm5hbWU7CisgICAqICAgICByZXR1cm4gPGRpdj5IZWxs
bywge25hbWV9ITwvZGl2PjsKKyAgICogICB9CisgICAqCisgICAqIEByZXR1cm4ge1JlYWN0Q29t
cG9uZW50fQorICAgKiBAbm9zaWRlZWZmZWN0cworICAgKiBAcmVxdWlyZWQKKyAgICovCisgIHJl
bmRlcjogJ0RFRklORV9PTkNFJywKKworICAvLyA9PT09IERlbGVnYXRlIG1ldGhvZHMgPT09PQor
CisgIC8qKgorICAgKiBJbnZva2VkIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBpbml0aWFsbHkgY3Jl
YXRlZCBhbmQgYWJvdXQgdG8gYmUgbW91bnRlZC4KKyAgICogVGhpcyBtYXkgaGF2ZSBzaWRlIGVm
ZmVjdHMsIGJ1dCBhbnkgZXh0ZXJuYWwgc3Vic2NyaXB0aW9ucyBvciBkYXRhIGNyZWF0ZWQKKyAg
ICogYnkgdGhpcyBtZXRob2QgbXVzdCBiZSBjbGVhbmVkIHVwIGluIGBjb21wb25lbnRXaWxsVW5t
b3VudGAuCisgICAqCisgICAqIEBvcHRpb25hbAorICAgKi8KKyAgY29tcG9uZW50V2lsbE1vdW50
OiAnREVGSU5FX01BTlknLAorCisgIC8qKgorICAgKiBJbnZva2VkIHdoZW4gdGhlIGNvbXBvbmVu
dCBoYXMgYmVlbiBtb3VudGVkIGFuZCBoYXMgYSBET00gcmVwcmVzZW50YXRpb24uCisgICAqIEhv
d2V2ZXIsIHRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IHRoZSBET00gbm9kZSBpcyBpbiB0aGUg
ZG9jdW1lbnQuCisgICAqCisgICAqIFVzZSB0aGlzIGFzIGFuIG9wcG9ydHVuaXR5IHRvIG9wZXJh
dGUgb24gdGhlIERPTSB3aGVuIHRoZSBjb21wb25lbnQgaGFzCisgICAqIGJlZW4gbW91bnRlZCAo
aW5pdGlhbGl6ZWQgYW5kIHJlbmRlcmVkKSBmb3IgdGhlIGZpcnN0IHRpbWUuCisgICAqCisgICAq
IEBwYXJhbSB7RE9NRWxlbWVudH0gcm9vdE5vZGUgRE9NIGVsZW1lbnQgcmVwcmVzZW50aW5nIHRo
ZSBjb21wb25lbnQuCisgICAqIEBvcHRpb25hbAorICAgKi8KKyAgY29tcG9uZW50RGlkTW91bnQ6
ICdERUZJTkVfTUFOWScsCisKKyAgLyoqCisgICAqIEludm9rZWQgYmVmb3JlIHRoZSBjb21wb25l
bnQgcmVjZWl2ZXMgbmV3IHByb3BzLgorICAgKgorICAgKiBVc2UgdGhpcyBhcyBhbiBvcHBvcnR1
bml0eSB0byByZWFjdCB0byBhIHByb3AgdHJhbnNpdGlvbiBieSB1cGRhdGluZyB0aGUKKyAgICog
c3RhdGUgdXNpbmcgYHRoaXMuc2V0U3RhdGVgLiBDdXJyZW50IHByb3BzIGFyZSBhY2Nlc3NlZCB2
aWEgYHRoaXMucHJvcHNgLgorICAgKgorICAgKiAgIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHM6
IGZ1bmN0aW9uKG5leHRQcm9wcywgbmV4dENvbnRleHQpIHsKKyAgICogICAgIHRoaXMuc2V0U3Rh
dGUoeworICAgKiAgICAgICBsaWtlc0luY3JlYXNpbmc6IG5leHRQcm9wcy5saWtlQ291bnQgPiB0
aGlzLnByb3BzLmxpa2VDb3VudAorICAgKiAgICAgfSk7CisgICAqICAgfQorICAgKgorICAgKiBO
T1RFOiBUaGVyZSBpcyBubyBlcXVpdmFsZW50IGBjb21wb25lbnRXaWxsUmVjZWl2ZVN0YXRlYC4g
QW4gaW5jb21pbmcgcHJvcAorICAgKiB0cmFuc2l0aW9uIG1heSBjYXVzZSBhIHN0YXRlIGNoYW5n
ZSwgYnV0IHRoZSBvcHBvc2l0ZSBpcyBub3QgdHJ1ZS4gSWYgeW91CisgICAqIG5lZWQgaXQsIHlv
dSBhcmUgcHJvYmFibHkgbG9va2luZyBmb3IgYGNvbXBvbmVudFdpbGxVcGRhdGVgLgorICAgKgor
ICAgKiBAcGFyYW0ge29iamVjdH0gbmV4dFByb3BzCisgICAqIEBvcHRpb25hbAorICAgKi8KKyAg
Y29tcG9uZW50V2lsbFJlY2VpdmVQcm9wczogJ0RFRklORV9NQU5ZJywKKworICAvKioKKyAgICog
SW52b2tlZCB3aGlsZSBkZWNpZGluZyBpZiB0aGUgY29tcG9uZW50IHNob3VsZCBiZSB1cGRhdGVk
IGFzIGEgcmVzdWx0IG9mCisgICAqIHJlY2VpdmluZyBuZXcgcHJvcHMsIHN0YXRlIGFuZC9vciBj
b250ZXh0LgorICAgKgorICAgKiBVc2UgdGhpcyBhcyBhbiBvcHBvcnR1bml0eSB0byBgcmV0dXJu
IGZhbHNlYCB3aGVuIHlvdSdyZSBjZXJ0YWluIHRoYXQgdGhlCisgICAqIHRyYW5zaXRpb24gdG8g
dGhlIG5ldyBwcm9wcy9zdGF0ZS9jb250ZXh0IHdpbGwgbm90IHJlcXVpcmUgYSBjb21wb25lbnQK
KyAgICogdXBkYXRlLgorICAgKgorICAgKiAgIHNob3VsZENvbXBvbmVudFVwZGF0ZTogZnVuY3Rp
b24obmV4dFByb3BzLCBuZXh0U3RhdGUsIG5leHRDb250ZXh0KSB7CisgICAqICAgICByZXR1cm4g
IWVxdWFsKG5leHRQcm9wcywgdGhpcy5wcm9wcykgfHwKKyAgICogICAgICAgIWVxdWFsKG5leHRT
dGF0ZSwgdGhpcy5zdGF0ZSkgfHwKKyAgICogICAgICAgIWVxdWFsKG5leHRDb250ZXh0LCB0aGlz
LmNvbnRleHQpOworICAgKiAgIH0KKyAgICoKKyAgICogQHBhcmFtIHtvYmplY3R9IG5leHRQcm9w
cworICAgKiBAcGFyYW0gez9vYmplY3R9IG5leHRTdGF0ZQorICAgKiBAcGFyYW0gez9vYmplY3R9
IG5leHRDb250ZXh0CisgICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdGhlIGNvbXBvbmVu
dCBzaG91bGQgdXBkYXRlLgorICAgKiBAb3B0aW9uYWwKKyAgICovCisgIHNob3VsZENvbXBvbmVu
dFVwZGF0ZTogJ0RFRklORV9PTkNFJywKKworICAvKioKKyAgICogSW52b2tlZCB3aGVuIHRoZSBj
b21wb25lbnQgaXMgYWJvdXQgdG8gdXBkYXRlIGR1ZSB0byBhIHRyYW5zaXRpb24gZnJvbQorICAg
KiBgdGhpcy5wcm9wc2AsIGB0aGlzLnN0YXRlYCBhbmQgYHRoaXMuY29udGV4dGAgdG8gYG5leHRQ
cm9wc2AsIGBuZXh0U3RhdGVgCisgICAqIGFuZCBgbmV4dENvbnRleHRgLgorICAgKgorICAgKiBV
c2UgdGhpcyBhcyBhbiBvcHBvcnR1bml0eSB0byBwZXJmb3JtIHByZXBhcmF0aW9uIGJlZm9yZSBh
biB1cGRhdGUgb2NjdXJzLgorICAgKgorICAgKiBOT1RFOiBZb3UgKipjYW5ub3QqKiB1c2UgYHRo
aXMuc2V0U3RhdGUoKWAgaW4gdGhpcyBtZXRob2QuCisgICAqCisgICAqIEBwYXJhbSB7b2JqZWN0
fSBuZXh0UHJvcHMKKyAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXh0U3RhdGUKKyAgICogQHBhcmFt
IHs/b2JqZWN0fSBuZXh0Q29udGV4dAorICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNh
Y3Rpb259IHRyYW5zYWN0aW9uCisgICAqIEBvcHRpb25hbAorICAgKi8KKyAgY29tcG9uZW50V2ls
bFVwZGF0ZTogJ0RFRklORV9NQU5ZJywKKworICAvKioKKyAgICogSW52b2tlZCB3aGVuIHRoZSBj
b21wb25lbnQncyBET00gcmVwcmVzZW50YXRpb24gaGFzIGJlZW4gdXBkYXRlZC4KKyAgICoKKyAg
ICogVXNlIHRoaXMgYXMgYW4gb3Bwb3J0dW5pdHkgdG8gb3BlcmF0ZSBvbiB0aGUgRE9NIHdoZW4g
dGhlIGNvbXBvbmVudCBoYXMKKyAgICogYmVlbiB1cGRhdGVkLgorICAgKgorICAgKiBAcGFyYW0g
e29iamVjdH0gcHJldlByb3BzCisgICAqIEBwYXJhbSB7P29iamVjdH0gcHJldlN0YXRlCisgICAq
IEBwYXJhbSB7P29iamVjdH0gcHJldkNvbnRleHQKKyAgICogQHBhcmFtIHtET01FbGVtZW50fSBy
b290Tm9kZSBET00gZWxlbWVudCByZXByZXNlbnRpbmcgdGhlIGNvbXBvbmVudC4KKyAgICogQG9w
dGlvbmFsCisgICAqLworICBjb21wb25lbnREaWRVcGRhdGU6ICdERUZJTkVfTUFOWScsCisKKyAg
LyoqCisgICAqIEludm9rZWQgd2hlbiB0aGUgY29tcG9uZW50IGlzIGFib3V0IHRvIGJlIHJlbW92
ZWQgZnJvbSBpdHMgcGFyZW50IGFuZCBoYXZlCisgICAqIGl0cyBET00gcmVwcmVzZW50YXRpb24g
ZGVzdHJveWVkLgorICAgKgorICAgKiBVc2UgdGhpcyBhcyBhbiBvcHBvcnR1bml0eSB0byBkZWFs
bG9jYXRlIGFueSBleHRlcm5hbCByZXNvdXJjZXMuCisgICAqCisgICAqIE5PVEU6IFRoZXJlIGlz
IG5vIGBjb21wb25lbnREaWRVbm1vdW50YCBzaW5jZSB5b3VyIGNvbXBvbmVudCB3aWxsIGhhdmUg
YmVlbgorICAgKiBkZXN0cm95ZWQgYnkgdGhhdCBwb2ludC4KKyAgICoKKyAgICogQG9wdGlvbmFs
CisgICAqLworICBjb21wb25lbnRXaWxsVW5tb3VudDogJ0RFRklORV9NQU5ZJywKKworICAvLyA9
PT09IEFkdmFuY2VkIG1ldGhvZHMgPT09PQorCisgIC8qKgorICAgKiBVcGRhdGVzIHRoZSBjb21w
b25lbnQncyBjdXJyZW50bHkgbW91bnRlZCBET00gcmVwcmVzZW50YXRpb24uCisgICAqCisgICAq
IEJ5IGRlZmF1bHQsIHRoaXMgaW1wbGVtZW50cyBSZWFjdCdzIHJlbmRlcmluZyBhbmQgcmVjb25j
aWxpYXRpb24gYWxnb3JpdGhtLgorICAgKiBTb3BoaXN0aWNhdGVkIGNsaWVudHMgbWF5IHdpc2gg
dG8gb3ZlcnJpZGUgdGhpcy4KKyAgICoKKyAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5z
YWN0aW9ufSB0cmFuc2FjdGlvbgorICAgKiBAaW50ZXJuYWwKKyAgICogQG92ZXJyaWRhYmxlCisg
ICAqLworICB1cGRhdGVDb21wb25lbnQ6ICdPVkVSUklERV9CQVNFJworCit9OworCisvKioKKyAq
IE1hcHBpbmcgZnJvbSBjbGFzcyBzcGVjaWZpY2F0aW9uIGtleXMgdG8gc3BlY2lhbCBwcm9jZXNz
aW5nIGZ1bmN0aW9ucy4KKyAqCisgKiBBbHRob3VnaCB0aGVzZSBhcmUgZGVjbGFyZWQgbGlrZSBp
bnN0YW5jZSBwcm9wZXJ0aWVzIGluIHRoZSBzcGVjaWZpY2F0aW9uCisgKiB3aGVuIGRlZmluaW5n
IGNsYXNzZXMgdXNpbmcgYFJlYWN0LmNyZWF0ZUNsYXNzYCwgdGhleSBhcmUgYWN0dWFsbHkgc3Rh
dGljCisgKiBhbmQgYXJlIGFjY2Vzc2libGUgb24gdGhlIGNvbnN0cnVjdG9yIGluc3RlYWQgb2Yg
dGhlIHByb3RvdHlwZS4gRGVzcGl0ZQorICogYmVpbmcgc3RhdGljLCB0aGV5IG11c3QgYmUgZGVm
aW5lZCBvdXRzaWRlIG9mIHRoZSAic3RhdGljcyIga2V5IHVuZGVyCisgKiB3aGljaCBhbGwgb3Ro
ZXIgc3RhdGljIG1ldGhvZHMgYXJlIGRlZmluZWQuCisgKi8KK3ZhciBSRVNFUlZFRF9TUEVDX0tF
WVMgPSB7CisgIGRpc3BsYXlOYW1lOiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIGRpc3BsYXlOYW1l
KSB7CisgICAgQ29uc3RydWN0b3IuZGlzcGxheU5hbWUgPSBkaXNwbGF5TmFtZTsKKyAgfSwKKyAg
bWl4aW5zOiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIG1peGlucykgeworICAgIGlmIChtaXhpbnMp
IHsKKyAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWl4aW5zLmxlbmd0aDsgaSsrKSB7CisgICAg
ICAgIG1peFNwZWNJbnRvQ29tcG9uZW50KENvbnN0cnVjdG9yLCBtaXhpbnNbaV0pOworICAgICAg
fQorICAgIH0KKyAgfSwKKyAgY2hpbGRDb250ZXh0VHlwZXM6IGZ1bmN0aW9uIChDb25zdHJ1Y3Rv
ciwgY2hpbGRDb250ZXh0VHlwZXMpIHsKKyAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09
ICdwcm9kdWN0aW9uJykgeworICAgICAgdmFsaWRhdGVUeXBlRGVmKENvbnN0cnVjdG9yLCBjaGls
ZENvbnRleHRUeXBlcywgJ2NoaWxkQ29udGV4dCcpOworICAgIH0KKyAgICBDb25zdHJ1Y3Rvci5j
aGlsZENvbnRleHRUeXBlcyA9IF9hc3NpZ24oe30sIENvbnN0cnVjdG9yLmNoaWxkQ29udGV4dFR5
cGVzLCBjaGlsZENvbnRleHRUeXBlcyk7CisgIH0sCisgIGNvbnRleHRUeXBlczogZnVuY3Rpb24g
KENvbnN0cnVjdG9yLCBjb250ZXh0VHlwZXMpIHsKKyAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgdmFsaWRhdGVUeXBlRGVmKENvbnN0cnVjdG9y
LCBjb250ZXh0VHlwZXMsICdjb250ZXh0Jyk7CisgICAgfQorICAgIENvbnN0cnVjdG9yLmNvbnRl
eHRUeXBlcyA9IF9hc3NpZ24oe30sIENvbnN0cnVjdG9yLmNvbnRleHRUeXBlcywgY29udGV4dFR5
cGVzKTsKKyAgfSwKKyAgLyoqCisgICAqIFNwZWNpYWwgY2FzZSBnZXREZWZhdWx0UHJvcHMgd2hp
Y2ggc2hvdWxkIG1vdmUgaW50byBzdGF0aWNzIGJ1dCByZXF1aXJlcworICAgKiBhdXRvbWF0aWMg
bWVyZ2luZy4KKyAgICovCisgIGdldERlZmF1bHRQcm9wczogZnVuY3Rpb24gKENvbnN0cnVjdG9y
LCBnZXREZWZhdWx0UHJvcHMpIHsKKyAgICBpZiAoQ29uc3RydWN0b3IuZ2V0RGVmYXVsdFByb3Bz
KSB7CisgICAgICBDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMgPSBjcmVhdGVNZXJnZWRSZXN1
bHRGdW5jdGlvbihDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMsIGdldERlZmF1bHRQcm9wcyk7
CisgICAgfSBlbHNlIHsKKyAgICAgIENvbnN0cnVjdG9yLmdldERlZmF1bHRQcm9wcyA9IGdldERl
ZmF1bHRQcm9wczsKKyAgICB9CisgIH0sCisgIHByb3BUeXBlczogZnVuY3Rpb24gKENvbnN0cnVj
dG9yLCBwcm9wVHlwZXMpIHsKKyAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJykgeworICAgICAgdmFsaWRhdGVUeXBlRGVmKENvbnN0cnVjdG9yLCBwcm9wVHlwZXMs
ICdwcm9wJyk7CisgICAgfQorICAgIENvbnN0cnVjdG9yLnByb3BUeXBlcyA9IF9hc3NpZ24oe30s
IENvbnN0cnVjdG9yLnByb3BUeXBlcywgcHJvcFR5cGVzKTsKKyAgfSwKKyAgc3RhdGljczogZnVu
Y3Rpb24gKENvbnN0cnVjdG9yLCBzdGF0aWNzKSB7CisgICAgbWl4U3RhdGljU3BlY0ludG9Db21w
b25lbnQoQ29uc3RydWN0b3IsIHN0YXRpY3MpOworICB9LAorICBhdXRvYmluZDogZnVuY3Rpb24g
KCkge30gfTsKKworZnVuY3Rpb24gdmFsaWRhdGVUeXBlRGVmKENvbnN0cnVjdG9yLCB0eXBlRGVm
LCBsb2NhdGlvbikgeworICBmb3IgKHZhciBwcm9wTmFtZSBpbiB0eXBlRGVmKSB7CisgICAgaWYg
KHR5cGVEZWYuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7CisgICAgICAvLyB1c2UgYSB3YXJu
aW5nIGluc3RlYWQgb2YgYW4gaW52YXJpYW50IHNvIGNvbXBvbmVudHMKKyAgICAgIC8vIGRvbid0
IHNob3cgdXAgaW4gcHJvZCBidXQgb25seSBpbiBfX0RFVl9fCisgICAgICBwcm9jZXNzLmVudi5O
T0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyh0eXBlb2YgdHlwZURlZltwcm9wTmFt
ZV0gPT09ICdmdW5jdGlvbicsICclczogJXMgdHlwZSBgJXNgIGlzIGludmFsaWQ7IGl0IG11c3Qg
YmUgYSBmdW5jdGlvbiwgdXN1YWxseSBmcm9tICcgKyAnUmVhY3QuUHJvcFR5cGVzLicsIENvbnN0
cnVjdG9yLmRpc3BsYXlOYW1lIHx8ICdSZWFjdENsYXNzJywgUmVhY3RQcm9wVHlwZUxvY2F0aW9u
TmFtZXNbbG9jYXRpb25dLCBwcm9wTmFtZSkgOiB2b2lkIDA7CisgICAgfQorICB9Cit9CisKK2Z1
bmN0aW9uIHZhbGlkYXRlTWV0aG9kT3ZlcnJpZGUoaXNBbHJlYWR5RGVmaW5lZCwgbmFtZSkgewor
ICB2YXIgc3BlY1BvbGljeSA9IFJlYWN0Q2xhc3NJbnRlcmZhY2UuaGFzT3duUHJvcGVydHkobmFt
ZSkgPyBSZWFjdENsYXNzSW50ZXJmYWNlW25hbWVdIDogbnVsbDsKKworICAvLyBEaXNhbGxvdyBv
dmVycmlkaW5nIG9mIGJhc2UgY2xhc3MgbWV0aG9kcyB1bmxlc3MgZXhwbGljaXRseSBhbGxvd2Vk
LgorICBpZiAoUmVhY3RDbGFzc01peGluLmhhc093blByb3BlcnR5KG5hbWUpKSB7CisgICAgIShz
cGVjUG9saWN5ID09PSAnT1ZFUlJJREVfQkFTRScpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09
ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0Q2xhc3NJbnRlcmZhY2U6IFlv
dSBhcmUgYXR0ZW1wdGluZyB0byBvdmVycmlkZSBgJXNgIGZyb20geW91ciBjbGFzcyBzcGVjaWZp
Y2F0aW9uLiBFbnN1cmUgdGhhdCB5b3VyIG1ldGhvZCBuYW1lcyBkbyBub3Qgb3ZlcmxhcCB3aXRo
IFJlYWN0IG1ldGhvZHMuJywgbmFtZSkgOiBfcHJvZEludmFyaWFudCgnNzMnLCBuYW1lKSA6IHZv
aWQgMDsKKyAgfQorCisgIC8vIERpc2FsbG93IGRlZmluaW5nIG1ldGhvZHMgbW9yZSB0aGFuIG9u
Y2UgdW5sZXNzIGV4cGxpY2l0bHkgYWxsb3dlZC4KKyAgaWYgKGlzQWxyZWFkeURlZmluZWQpIHsK
KyAgICAhKHNwZWNQb2xpY3kgPT09ICdERUZJTkVfTUFOWScgfHwgc3BlY1BvbGljeSA9PT0gJ0RF
RklORV9NQU5ZX01FUkdFRCcpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
JyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0Q2xhc3NJbnRlcmZhY2U6IFlvdSBhcmUgYXR0ZW1w
dGluZyB0byBkZWZpbmUgYCVzYCBvbiB5b3VyIGNvbXBvbmVudCBtb3JlIHRoYW4gb25jZS4gVGhp
cyBjb25mbGljdCBtYXkgYmUgZHVlIHRvIGEgbWl4aW4uJywgbmFtZSkgOiBfcHJvZEludmFyaWFu
dCgnNzQnLCBuYW1lKSA6IHZvaWQgMDsKKyAgfQorfQorCisvKioKKyAqIE1peGluIGhlbHBlciB3
aGljaCBoYW5kbGVzIHBvbGljeSB2YWxpZGF0aW9uIGFuZCByZXNlcnZlZAorICogc3BlY2lmaWNh
dGlvbiBrZXlzIHdoZW4gYnVpbGRpbmcgUmVhY3QgY2xhc3Nlcy4KKyAqLworZnVuY3Rpb24gbWl4
U3BlY0ludG9Db21wb25lbnQoQ29uc3RydWN0b3IsIHNwZWMpIHsKKyAgaWYgKCFzcGVjKSB7Cisg
ICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgIHZh
ciB0eXBlb2ZTcGVjID0gdHlwZW9mIHNwZWM7CisgICAgICB2YXIgaXNNaXhpblZhbGlkID0gdHlw
ZW9mU3BlYyA9PT0gJ29iamVjdCcgJiYgc3BlYyAhPT0gbnVsbDsKKworICAgICAgcHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoaXNNaXhpblZhbGlkLCAnJXM6
IFlvdVwncmUgYXR0ZW1wdGluZyB0byBpbmNsdWRlIGEgbWl4aW4gdGhhdCBpcyBlaXRoZXIgbnVs
bCAnICsgJ29yIG5vdCBhbiBvYmplY3QuIENoZWNrIHRoZSBtaXhpbnMgaW5jbHVkZWQgYnkgdGhl
IGNvbXBvbmVudCwgJyArICdhcyB3ZWxsIGFzIGFueSBtaXhpbnMgdGhleSBpbmNsdWRlIHRoZW1z
ZWx2ZXMuICcgKyAnRXhwZWN0ZWQgb2JqZWN0IGJ1dCBnb3QgJXMuJywgQ29uc3RydWN0b3IuZGlz
cGxheU5hbWUgfHwgJ1JlYWN0Q2xhc3MnLCBzcGVjID09PSBudWxsID8gbnVsbCA6IHR5cGVvZlNw
ZWMpIDogdm9pZCAwOworICAgIH0KKworICAgIHJldHVybjsKKyAgfQorCisgICEodHlwZW9mIHNw
ZWMgIT09ICdmdW5jdGlvbicpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
JyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0Q2xhc3M6IFlvdVwncmUgYXR0ZW1wdGluZyB0byB1
c2UgYSBjb21wb25lbnQgY2xhc3Mgb3IgZnVuY3Rpb24gYXMgYSBtaXhpbi4gSW5zdGVhZCwganVz
dCB1c2UgYSByZWd1bGFyIG9iamVjdC4nKSA6IF9wcm9kSW52YXJpYW50KCc3NScpIDogdm9pZCAw
OworICAhIVJlYWN0RWxlbWVudC5pc1ZhbGlkRWxlbWVudChzcGVjKSA/IHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdENsYXNzOiBZ
b3VcJ3JlIGF0dGVtcHRpbmcgdG8gdXNlIGEgY29tcG9uZW50IGFzIGEgbWl4aW4uIEluc3RlYWQs
IGp1c3QgdXNlIGEgcmVndWxhciBvYmplY3QuJykgOiBfcHJvZEludmFyaWFudCgnNzYnKSA6IHZv
aWQgMDsKKworICB2YXIgcHJvdG8gPSBDb25zdHJ1Y3Rvci5wcm90b3R5cGU7CisgIHZhciBhdXRv
QmluZFBhaXJzID0gcHJvdG8uX19yZWFjdEF1dG9CaW5kUGFpcnM7CisKKyAgLy8gQnkgaGFuZGxp
bmcgbWl4aW5zIGJlZm9yZSBhbnkgb3RoZXIgcHJvcGVydGllcywgd2UgZW5zdXJlIHRoZSBzYW1l
CisgIC8vIGNoYWluaW5nIG9yZGVyIGlzIGFwcGxpZWQgdG8gbWV0aG9kcyB3aXRoIERFRklORV9N
QU5ZIHBvbGljeSwgd2hldGhlcgorICAvLyBtaXhpbnMgYXJlIGxpc3RlZCBiZWZvcmUgb3IgYWZ0
ZXIgdGhlc2UgbWV0aG9kcyBpbiB0aGUgc3BlYy4KKyAgaWYgKHNwZWMuaGFzT3duUHJvcGVydHko
TUlYSU5TX0tFWSkpIHsKKyAgICBSRVNFUlZFRF9TUEVDX0tFWVMubWl4aW5zKENvbnN0cnVjdG9y
LCBzcGVjLm1peGlucyk7CisgIH0KKworICBmb3IgKHZhciBuYW1lIGluIHNwZWMpIHsKKyAgICBp
ZiAoIXNwZWMuaGFzT3duUHJvcGVydHkobmFtZSkpIHsKKyAgICAgIGNvbnRpbnVlOworICAgIH0K
KworICAgIGlmIChuYW1lID09PSBNSVhJTlNfS0VZKSB7CisgICAgICAvLyBXZSBoYXZlIGFscmVh
ZHkgaGFuZGxlZCBtaXhpbnMgaW4gYSBzcGVjaWFsIGNhc2UgYWJvdmUuCisgICAgICBjb250aW51
ZTsKKyAgICB9CisKKyAgICB2YXIgcHJvcGVydHkgPSBzcGVjW25hbWVdOworICAgIHZhciBpc0Fs
cmVhZHlEZWZpbmVkID0gcHJvdG8uaGFzT3duUHJvcGVydHkobmFtZSk7CisgICAgdmFsaWRhdGVN
ZXRob2RPdmVycmlkZShpc0FscmVhZHlEZWZpbmVkLCBuYW1lKTsKKworICAgIGlmIChSRVNFUlZF
RF9TUEVDX0tFWVMuaGFzT3duUHJvcGVydHkobmFtZSkpIHsKKyAgICAgIFJFU0VSVkVEX1NQRUNf
S0VZU1tuYW1lXShDb25zdHJ1Y3RvciwgcHJvcGVydHkpOworICAgIH0gZWxzZSB7CisgICAgICAv
LyBTZXR1cCBtZXRob2RzIG9uIHByb3RvdHlwZToKKyAgICAgIC8vIFRoZSBmb2xsb3dpbmcgbWVt
YmVyIG1ldGhvZHMgc2hvdWxkIG5vdCBiZSBhdXRvbWF0aWNhbGx5IGJvdW5kOgorICAgICAgLy8g
MS4gRXhwZWN0ZWQgUmVhY3RDbGFzcyBtZXRob2RzIChpbiB0aGUgImludGVyZmFjZSIpLgorICAg
ICAgLy8gMi4gT3ZlcnJpZGRlbiBtZXRob2RzICh0aGF0IHdlcmUgbWl4ZWQgaW4pLgorICAgICAg
dmFyIGlzUmVhY3RDbGFzc01ldGhvZCA9IFJlYWN0Q2xhc3NJbnRlcmZhY2UuaGFzT3duUHJvcGVy
dHkobmFtZSk7CisgICAgICB2YXIgaXNGdW5jdGlvbiA9IHR5cGVvZiBwcm9wZXJ0eSA9PT0gJ2Z1
bmN0aW9uJzsKKyAgICAgIHZhciBzaG91bGRBdXRvQmluZCA9IGlzRnVuY3Rpb24gJiYgIWlzUmVh
Y3RDbGFzc01ldGhvZCAmJiAhaXNBbHJlYWR5RGVmaW5lZCAmJiBzcGVjLmF1dG9iaW5kICE9PSBm
YWxzZTsKKworICAgICAgaWYgKHNob3VsZEF1dG9CaW5kKSB7CisgICAgICAgIGF1dG9CaW5kUGFp
cnMucHVzaChuYW1lLCBwcm9wZXJ0eSk7CisgICAgICAgIHByb3RvW25hbWVdID0gcHJvcGVydHk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBpZiAoaXNBbHJlYWR5RGVmaW5lZCkgeworICAgICAg
ICAgIHZhciBzcGVjUG9saWN5ID0gUmVhY3RDbGFzc0ludGVyZmFjZVtuYW1lXTsKKworICAgICAg
ICAgIC8vIFRoZXNlIGNhc2VzIHNob3VsZCBhbHJlYWR5IGJlIGNhdWdodCBieSB2YWxpZGF0ZU1l
dGhvZE92ZXJyaWRlLgorICAgICAgICAgICEoaXNSZWFjdENsYXNzTWV0aG9kICYmIChzcGVjUG9s
aWN5ID09PSAnREVGSU5FX01BTllfTUVSR0VEJyB8fCBzcGVjUG9saWN5ID09PSAnREVGSU5FX01B
TlknKSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50
KGZhbHNlLCAnUmVhY3RDbGFzczogVW5leHBlY3RlZCBzcGVjIHBvbGljeSAlcyBmb3Iga2V5ICVz
IHdoZW4gbWl4aW5nIGluIGNvbXBvbmVudCBzcGVjcy4nLCBzcGVjUG9saWN5LCBuYW1lKSA6IF9w
cm9kSW52YXJpYW50KCc3NycsIHNwZWNQb2xpY3ksIG5hbWUpIDogdm9pZCAwOworCisgICAgICAg
ICAgLy8gRm9yIG1ldGhvZHMgd2hpY2ggYXJlIGRlZmluZWQgbW9yZSB0aGFuIG9uY2UsIGNhbGwg
dGhlIGV4aXN0aW5nCisgICAgICAgICAgLy8gbWV0aG9kcyBiZWZvcmUgY2FsbGluZyB0aGUgbmV3
IHByb3BlcnR5LCBtZXJnaW5nIGlmIGFwcHJvcHJpYXRlLgorICAgICAgICAgIGlmIChzcGVjUG9s
aWN5ID09PSAnREVGSU5FX01BTllfTUVSR0VEJykgeworICAgICAgICAgICAgcHJvdG9bbmFtZV0g
PSBjcmVhdGVNZXJnZWRSZXN1bHRGdW5jdGlvbihwcm90b1tuYW1lXSwgcHJvcGVydHkpOworICAg
ICAgICAgIH0gZWxzZSBpZiAoc3BlY1BvbGljeSA9PT0gJ0RFRklORV9NQU5ZJykgeworICAgICAg
ICAgICAgcHJvdG9bbmFtZV0gPSBjcmVhdGVDaGFpbmVkRnVuY3Rpb24ocHJvdG9bbmFtZV0sIHBy
b3BlcnR5KTsKKyAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgcHJvdG9b
bmFtZV0gPSBwcm9wZXJ0eTsKKyAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09
ICdwcm9kdWN0aW9uJykgeworICAgICAgICAgICAgLy8gQWRkIHZlcmJvc2UgZGlzcGxheU5hbWUg
dG8gdGhlIGZ1bmN0aW9uLCB3aGljaCBoZWxwcyB3aGVuIGxvb2tpbmcKKyAgICAgICAgICAgIC8v
IGF0IHByb2ZpbGluZyB0b29scy4KKyAgICAgICAgICAgIGlmICh0eXBlb2YgcHJvcGVydHkgPT09
ICdmdW5jdGlvbicgJiYgc3BlYy5kaXNwbGF5TmFtZSkgeworICAgICAgICAgICAgICBwcm90b1tu
YW1lXS5kaXNwbGF5TmFtZSA9IHNwZWMuZGlzcGxheU5hbWUgKyAnXycgKyBuYW1lOworICAgICAg
ICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQorfQor
CitmdW5jdGlvbiBtaXhTdGF0aWNTcGVjSW50b0NvbXBvbmVudChDb25zdHJ1Y3Rvciwgc3RhdGlj
cykgeworICBpZiAoIXN0YXRpY3MpIHsKKyAgICByZXR1cm47CisgIH0KKyAgZm9yICh2YXIgbmFt
ZSBpbiBzdGF0aWNzKSB7CisgICAgdmFyIHByb3BlcnR5ID0gc3RhdGljc1tuYW1lXTsKKyAgICBp
ZiAoIXN0YXRpY3MuaGFzT3duUHJvcGVydHkobmFtZSkpIHsKKyAgICAgIGNvbnRpbnVlOworICAg
IH0KKworICAgIHZhciBpc1Jlc2VydmVkID0gbmFtZSBpbiBSRVNFUlZFRF9TUEVDX0tFWVM7Cisg
ICAgISFpc1Jlc2VydmVkID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/
IGludmFyaWFudChmYWxzZSwgJ1JlYWN0Q2xhc3M6IFlvdSBhcmUgYXR0ZW1wdGluZyB0byBkZWZp
bmUgYSByZXNlcnZlZCBwcm9wZXJ0eSwgYCVzYCwgdGhhdCBzaG91bGRuXCd0IGJlIG9uIHRoZSAi
c3RhdGljcyIga2V5LiBEZWZpbmUgaXQgYXMgYW4gaW5zdGFuY2UgcHJvcGVydHkgaW5zdGVhZDsg
aXQgd2lsbCBzdGlsbCBiZSBhY2Nlc3NpYmxlIG9uIHRoZSBjb25zdHJ1Y3Rvci4nLCBuYW1lKSA6
IF9wcm9kSW52YXJpYW50KCc3OCcsIG5hbWUpIDogdm9pZCAwOworCisgICAgdmFyIGlzSW5oZXJp
dGVkID0gbmFtZSBpbiBDb25zdHJ1Y3RvcjsKKyAgICAhIWlzSW5oZXJpdGVkID8gcHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0Q2xh
c3M6IFlvdSBhcmUgYXR0ZW1wdGluZyB0byBkZWZpbmUgYCVzYCBvbiB5b3VyIGNvbXBvbmVudCBt
b3JlIHRoYW4gb25jZS4gVGhpcyBjb25mbGljdCBtYXkgYmUgZHVlIHRvIGEgbWl4aW4uJywgbmFt
ZSkgOiBfcHJvZEludmFyaWFudCgnNzknLCBuYW1lKSA6IHZvaWQgMDsKKyAgICBDb25zdHJ1Y3Rv
cltuYW1lXSA9IHByb3BlcnR5OworICB9Cit9CisKKy8qKgorICogTWVyZ2UgdHdvIG9iamVjdHMs
IGJ1dCB0aHJvdyBpZiBib3RoIGNvbnRhaW4gdGhlIHNhbWUga2V5LgorICoKKyAqIEBwYXJhbSB7
b2JqZWN0fSBvbmUgVGhlIGZpcnN0IG9iamVjdCwgd2hpY2ggaXMgbXV0YXRlZC4KKyAqIEBwYXJh
bSB7b2JqZWN0fSB0d28gVGhlIHNlY29uZCBvYmplY3QKKyAqIEByZXR1cm4ge29iamVjdH0gb25l
IGFmdGVyIGl0IGhhcyBiZWVuIG11dGF0ZWQgdG8gY29udGFpbiBldmVyeXRoaW5nIGluIHR3by4K
KyAqLworZnVuY3Rpb24gbWVyZ2VJbnRvV2l0aE5vRHVwbGljYXRlS2V5cyhvbmUsIHR3bykgewor
ICAhKG9uZSAmJiB0d28gJiYgdHlwZW9mIG9uZSA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIHR3byA9
PT0gJ29iamVjdCcpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGlu
dmFyaWFudChmYWxzZSwgJ21lcmdlSW50b1dpdGhOb0R1cGxpY2F0ZUtleXMoKTogQ2Fubm90IG1l
cmdlIG5vbi1vYmplY3RzLicpIDogX3Byb2RJbnZhcmlhbnQoJzgwJykgOiB2b2lkIDA7CisKKyAg
Zm9yICh2YXIga2V5IGluIHR3bykgeworICAgIGlmICh0d28uaGFzT3duUHJvcGVydHkoa2V5KSkg
eworICAgICAgIShvbmVba2V5XSA9PT0gdW5kZWZpbmVkKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdtZXJnZUludG9XaXRoTm9EdXBs
aWNhdGVLZXlzKCk6IFRyaWVkIHRvIG1lcmdlIHR3byBvYmplY3RzIHdpdGggdGhlIHNhbWUga2V5
OiBgJXNgLiBUaGlzIGNvbmZsaWN0IG1heSBiZSBkdWUgdG8gYSBtaXhpbjsgaW4gcGFydGljdWxh
ciwgdGhpcyBtYXkgYmUgY2F1c2VkIGJ5IHR3byBnZXRJbml0aWFsU3RhdGUoKSBvciBnZXREZWZh
dWx0UHJvcHMoKSBtZXRob2RzIHJldHVybmluZyBvYmplY3RzIHdpdGggY2xhc2hpbmcga2V5cy4n
LCBrZXkpIDogX3Byb2RJbnZhcmlhbnQoJzgxJywga2V5KSA6IHZvaWQgMDsKKyAgICAgIG9uZVtr
ZXldID0gdHdvW2tleV07CisgICAgfQorICB9CisgIHJldHVybiBvbmU7Cit9CisKKy8qKgorICog
Q3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyB0d28gZnVuY3Rpb25zIGFuZCBtZXJnZXMg
dGhlaXIgcmV0dXJuIHZhbHVlcy4KKyAqCisgKiBAcGFyYW0ge2Z1bmN0aW9ufSBvbmUgRnVuY3Rp
b24gdG8gaW52b2tlIGZpcnN0LgorICogQHBhcmFtIHtmdW5jdGlvbn0gdHdvIEZ1bmN0aW9uIHRv
IGludm9rZSBzZWNvbmQuCisgKiBAcmV0dXJuIHtmdW5jdGlvbn0gRnVuY3Rpb24gdGhhdCBpbnZv
a2VzIHRoZSB0d28gYXJndW1lbnQgZnVuY3Rpb25zLgorICogQHByaXZhdGUKKyAqLworZnVuY3Rp
b24gY3JlYXRlTWVyZ2VkUmVzdWx0RnVuY3Rpb24ob25lLCB0d28pIHsKKyAgcmV0dXJuIGZ1bmN0
aW9uIG1lcmdlZFJlc3VsdCgpIHsKKyAgICB2YXIgYSA9IG9uZS5hcHBseSh0aGlzLCBhcmd1bWVu
dHMpOworICAgIHZhciBiID0gdHdvLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CisgICAgaWYgKGEg
PT0gbnVsbCkgeworICAgICAgcmV0dXJuIGI7CisgICAgfSBlbHNlIGlmIChiID09IG51bGwpIHsK
KyAgICAgIHJldHVybiBhOworICAgIH0KKyAgICB2YXIgYyA9IHt9OworICAgIG1lcmdlSW50b1dp
dGhOb0R1cGxpY2F0ZUtleXMoYywgYSk7CisgICAgbWVyZ2VJbnRvV2l0aE5vRHVwbGljYXRlS2V5
cyhjLCBiKTsKKyAgICByZXR1cm4gYzsKKyAgfTsKK30KKworLyoqCisgKiBDcmVhdGVzIGEgZnVu
Y3Rpb24gdGhhdCBpbnZva2VzIHR3byBmdW5jdGlvbnMgYW5kIGlnbm9yZXMgdGhlaXIgcmV0dXJu
IHZhbGVzLgorICoKKyAqIEBwYXJhbSB7ZnVuY3Rpb259IG9uZSBGdW5jdGlvbiB0byBpbnZva2Ug
Zmlyc3QuCisgKiBAcGFyYW0ge2Z1bmN0aW9ufSB0d28gRnVuY3Rpb24gdG8gaW52b2tlIHNlY29u
ZC4KKyAqIEByZXR1cm4ge2Z1bmN0aW9ufSBGdW5jdGlvbiB0aGF0IGludm9rZXMgdGhlIHR3byBh
cmd1bWVudCBmdW5jdGlvbnMuCisgKiBAcHJpdmF0ZQorICovCitmdW5jdGlvbiBjcmVhdGVDaGFp
bmVkRnVuY3Rpb24ob25lLCB0d28pIHsKKyAgcmV0dXJuIGZ1bmN0aW9uIGNoYWluZWRGdW5jdGlv
bigpIHsKKyAgICBvbmUuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKKyAgICB0d28uYXBwbHkodGhp
cywgYXJndW1lbnRzKTsKKyAgfTsKK30KKworLyoqCisgKiBCaW5kcyBhIG1ldGhvZCB0byB0aGUg
Y29tcG9uZW50LgorICoKKyAqIEBwYXJhbSB7b2JqZWN0fSBjb21wb25lbnQgQ29tcG9uZW50IHdo
b3NlIG1ldGhvZCBpcyBnb2luZyB0byBiZSBib3VuZC4KKyAqIEBwYXJhbSB7ZnVuY3Rpb259IG1l
dGhvZCBNZXRob2QgdG8gYmUgYm91bmQuCisgKiBAcmV0dXJuIHtmdW5jdGlvbn0gVGhlIGJvdW5k
IG1ldGhvZC4KKyAqLworZnVuY3Rpb24gYmluZEF1dG9CaW5kTWV0aG9kKGNvbXBvbmVudCwgbWV0
aG9kKSB7CisgIHZhciBib3VuZE1ldGhvZCA9IG1ldGhvZC5iaW5kKGNvbXBvbmVudCk7CisgIGlm
IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgYm91bmRNZXRo
b2QuX19yZWFjdEJvdW5kQ29udGV4dCA9IGNvbXBvbmVudDsKKyAgICBib3VuZE1ldGhvZC5fX3Jl
YWN0Qm91bmRNZXRob2QgPSBtZXRob2Q7CisgICAgYm91bmRNZXRob2QuX19yZWFjdEJvdW5kQXJn
dW1lbnRzID0gbnVsbDsKKyAgICB2YXIgY29tcG9uZW50TmFtZSA9IGNvbXBvbmVudC5jb25zdHJ1
Y3Rvci5kaXNwbGF5TmFtZTsKKyAgICB2YXIgX2JpbmQgPSBib3VuZE1ldGhvZC5iaW5kOworICAg
IGJvdW5kTWV0aG9kLmJpbmQgPSBmdW5jdGlvbiAobmV3VGhpcykgeworICAgICAgZm9yICh2YXIg
X2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBBcnJheShfbGVuID4gMSA/IF9sZW4gLSAx
IDogMCksIF9rZXkgPSAxOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7CisgICAgICAgIGFyZ3NbX2tl
eSAtIDFdID0gYXJndW1lbnRzW19rZXldOworICAgICAgfQorCisgICAgICAvLyBVc2VyIGlzIHRy
eWluZyB0byBiaW5kKCkgYW4gYXV0b2JvdW5kIG1ldGhvZDsgd2UgZWZmZWN0aXZlbHkgd2lsbAor
ICAgICAgLy8gaWdub3JlIHRoZSB2YWx1ZSBvZiAidGhpcyIgdGhhdCB0aGUgdXNlciBpcyB0cnlp
bmcgdG8gdXNlLCBzbworICAgICAgLy8gbGV0J3Mgd2Fybi4KKyAgICAgIGlmIChuZXdUaGlzICE9
PSBjb21wb25lbnQgJiYgbmV3VGhpcyAhPT0gbnVsbCkgeworICAgICAgICBwcm9jZXNzLmVudi5O
T0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ2JpbmQoKTogUmVhY3Qg
Y29tcG9uZW50IG1ldGhvZHMgbWF5IG9ubHkgYmUgYm91bmQgdG8gdGhlICcgKyAnY29tcG9uZW50
IGluc3RhbmNlLiBTZWUgJXMnLCBjb21wb25lbnROYW1lKSA6IHZvaWQgMDsKKyAgICAgIH0gZWxz
ZSBpZiAoIWFyZ3MubGVuZ3RoKSB7CisgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnYmluZCgpOiBZb3UgYXJlIGJpbmRpbmcgYSBj
b21wb25lbnQgbWV0aG9kIHRvIHRoZSBjb21wb25lbnQuICcgKyAnUmVhY3QgZG9lcyB0aGlzIGZv
ciB5b3UgYXV0b21hdGljYWxseSBpbiBhIGhpZ2gtcGVyZm9ybWFuY2UgJyArICd3YXksIHNvIHlv
dSBjYW4gc2FmZWx5IHJlbW92ZSB0aGlzIGNhbGwuIFNlZSAlcycsIGNvbXBvbmVudE5hbWUpIDog
dm9pZCAwOworICAgICAgICByZXR1cm4gYm91bmRNZXRob2Q7CisgICAgICB9CisgICAgICB2YXIg
cmVib3VuZE1ldGhvZCA9IF9iaW5kLmFwcGx5KGJvdW5kTWV0aG9kLCBhcmd1bWVudHMpOworICAg
ICAgcmVib3VuZE1ldGhvZC5fX3JlYWN0Qm91bmRDb250ZXh0ID0gY29tcG9uZW50OworICAgICAg
cmVib3VuZE1ldGhvZC5fX3JlYWN0Qm91bmRNZXRob2QgPSBtZXRob2Q7CisgICAgICByZWJvdW5k
TWV0aG9kLl9fcmVhY3RCb3VuZEFyZ3VtZW50cyA9IGFyZ3M7CisgICAgICByZXR1cm4gcmVib3Vu
ZE1ldGhvZDsKKyAgICB9OworICB9CisgIHJldHVybiBib3VuZE1ldGhvZDsKK30KKworLyoqCisg
KiBCaW5kcyBhbGwgYXV0by1ib3VuZCBtZXRob2RzIGluIGEgY29tcG9uZW50LgorICoKKyAqIEBw
YXJhbSB7b2JqZWN0fSBjb21wb25lbnQgQ29tcG9uZW50IHdob3NlIG1ldGhvZCBpcyBnb2luZyB0
byBiZSBib3VuZC4KKyAqLworZnVuY3Rpb24gYmluZEF1dG9CaW5kTWV0aG9kcyhjb21wb25lbnQp
IHsKKyAgdmFyIHBhaXJzID0gY29tcG9uZW50Ll9fcmVhY3RBdXRvQmluZFBhaXJzOworICBmb3Ig
KHZhciBpID0gMDsgaSA8IHBhaXJzLmxlbmd0aDsgaSArPSAyKSB7CisgICAgdmFyIGF1dG9CaW5k
S2V5ID0gcGFpcnNbaV07CisgICAgdmFyIG1ldGhvZCA9IHBhaXJzW2kgKyAxXTsKKyAgICBjb21w
b25lbnRbYXV0b0JpbmRLZXldID0gYmluZEF1dG9CaW5kTWV0aG9kKGNvbXBvbmVudCwgbWV0aG9k
KTsKKyAgfQorfQorCisvKioKKyAqIEFkZCBtb3JlIHRvIHRoZSBSZWFjdENsYXNzIGJhc2UgY2xh
c3MuIFRoZXNlIGFyZSBhbGwgbGVnYWN5IGZlYXR1cmVzIGFuZAorICogdGhlcmVmb3JlIG5vdCBh
bHJlYWR5IHBhcnQgb2YgdGhlIG1vZGVybiBSZWFjdENvbXBvbmVudC4KKyAqLwordmFyIFJlYWN0
Q2xhc3NNaXhpbiA9IHsKKworICAvKioKKyAgICogVE9ETzogVGhpcyB3aWxsIGJlIGRlcHJlY2F0
ZWQgYmVjYXVzZSBzdGF0ZSBzaG91bGQgYWx3YXlzIGtlZXAgYSBjb25zaXN0ZW50CisgICAqIHR5
cGUgc2lnbmF0dXJlIGFuZCB0aGUgb25seSB1c2UgY2FzZSBmb3IgdGhpcywgaXMgdG8gYXZvaWQg
dGhhdC4KKyAgICovCisgIHJlcGxhY2VTdGF0ZTogZnVuY3Rpb24gKG5ld1N0YXRlLCBjYWxsYmFj
aykgeworICAgIHRoaXMudXBkYXRlci5lbnF1ZXVlUmVwbGFjZVN0YXRlKHRoaXMsIG5ld1N0YXRl
KTsKKyAgICBpZiAoY2FsbGJhY2spIHsKKyAgICAgIHRoaXMudXBkYXRlci5lbnF1ZXVlQ2FsbGJh
Y2sodGhpcywgY2FsbGJhY2ssICdyZXBsYWNlU3RhdGUnKTsKKyAgICB9CisgIH0sCisKKyAgLyoq
CisgICAqIENoZWNrcyB3aGV0aGVyIG9yIG5vdCB0aGlzIGNvbXBvc2l0ZSBjb21wb25lbnQgaXMg
bW91bnRlZC4KKyAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBtb3VudGVkLCBmYWxzZSBv
dGhlcndpc2UuCisgICAqIEBwcm90ZWN0ZWQKKyAgICogQGZpbmFsCisgICAqLworICBpc01vdW50
ZWQ6IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gdGhpcy51cGRhdGVyLmlzTW91bnRlZCh0aGlz
KTsKKyAgfQorfTsKKwordmFyIFJlYWN0Q2xhc3NDb21wb25lbnQgPSBmdW5jdGlvbiAoKSB7fTsK
K19hc3NpZ24oUmVhY3RDbGFzc0NvbXBvbmVudC5wcm90b3R5cGUsIFJlYWN0Q29tcG9uZW50LnBy
b3RvdHlwZSwgUmVhY3RDbGFzc01peGluKTsKKworLyoqCisgKiBNb2R1bGUgZm9yIGNyZWF0aW5n
IGNvbXBvc2l0ZSBjb21wb25lbnRzLgorICoKKyAqIEBjbGFzcyBSZWFjdENsYXNzCisgKi8KK3Zh
ciBSZWFjdENsYXNzID0geworCisgIC8qKgorICAgKiBDcmVhdGVzIGEgY29tcG9zaXRlIGNvbXBv
bmVudCBjbGFzcyBnaXZlbiBhIGNsYXNzIHNwZWNpZmljYXRpb24uCisgICAqIFNlZSBodHRwczov
L2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL3RvcC1sZXZlbC1hcGkuaHRtbCNyZWFjdC5j
cmVhdGVjbGFzcworICAgKgorICAgKiBAcGFyYW0ge29iamVjdH0gc3BlYyBDbGFzcyBzcGVjaWZp
Y2F0aW9uICh3aGljaCBtdXN0IGRlZmluZSBgcmVuZGVyYCkuCisgICAqIEByZXR1cm4ge2Z1bmN0
aW9ufSBDb21wb25lbnQgY29uc3RydWN0b3IgZnVuY3Rpb24uCisgICAqIEBwdWJsaWMKKyAgICov
CisgIGNyZWF0ZUNsYXNzOiBmdW5jdGlvbiAoc3BlYykgeworICAgIC8vIFRvIGtlZXAgb3VyIHdh
cm5pbmdzIG1vcmUgdW5kZXJzdGFuZGFibGUsIHdlJ2xsIHVzZSBhIGxpdHRsZSBoYWNrIGhlcmUg
dG8KKyAgICAvLyBlbnN1cmUgdGhhdCBDb25zdHJ1Y3Rvci5uYW1lICE9PSAnQ29uc3RydWN0b3In
LiBUaGlzIG1ha2VzIHN1cmUgd2UgZG9uJ3QKKyAgICAvLyB1bm5lY2Vzc2FyaWx5IGlkZW50aWZ5
IGEgY2xhc3Mgd2l0aG91dCBkaXNwbGF5TmFtZSBhcyAnQ29uc3RydWN0b3InLgorICAgIHZhciBD
b25zdHJ1Y3RvciA9IGlkZW50aXR5KGZ1bmN0aW9uIChwcm9wcywgY29udGV4dCwgdXBkYXRlcikg
eworICAgICAgLy8gVGhpcyBjb25zdHJ1Y3RvciBnZXRzIG92ZXJyaWRkZW4gYnkgbW9ja3MuIFRo
ZSBhcmd1bWVudCBpcyB1c2VkCisgICAgICAvLyBieSBtb2NrcyB0byBhc3NlcnQgb24gd2hhdCBn
ZXRzIG1vdW50ZWQuCisKKyAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nKSB7CisgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicg
PyB3YXJuaW5nKHRoaXMgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvciwgJ1NvbWV0aGluZyBpcyBjYWxs
aW5nIGEgUmVhY3QgY29tcG9uZW50IGRpcmVjdGx5LiBVc2UgYSBmYWN0b3J5IG9yICcgKyAnSlNY
IGluc3RlYWQuIFNlZTogaHR0cHM6Ly9mYi5tZS9yZWFjdC1sZWdhY3lmYWN0b3J5JykgOiB2b2lk
IDA7CisgICAgICB9CisKKyAgICAgIC8vIFdpcmUgdXAgYXV0by1iaW5kaW5nCisgICAgICBpZiAo
dGhpcy5fX3JlYWN0QXV0b0JpbmRQYWlycy5sZW5ndGgpIHsKKyAgICAgICAgYmluZEF1dG9CaW5k
TWV0aG9kcyh0aGlzKTsKKyAgICAgIH0KKworICAgICAgdGhpcy5wcm9wcyA9IHByb3BzOworICAg
ICAgdGhpcy5jb250ZXh0ID0gY29udGV4dDsKKyAgICAgIHRoaXMucmVmcyA9IGVtcHR5T2JqZWN0
OworICAgICAgdGhpcy51cGRhdGVyID0gdXBkYXRlciB8fCBSZWFjdE5vb3BVcGRhdGVRdWV1ZTsK
KworICAgICAgdGhpcy5zdGF0ZSA9IG51bGw7CisKKyAgICAgIC8vIFJlYWN0Q2xhc3NlcyBkb2Vz
bid0IGhhdmUgY29uc3RydWN0b3JzLiBJbnN0ZWFkLCB0aGV5IHVzZSB0aGUKKyAgICAgIC8vIGdl
dEluaXRpYWxTdGF0ZSBhbmQgY29tcG9uZW50V2lsbE1vdW50IG1ldGhvZHMgZm9yIGluaXRpYWxp
emF0aW9uLgorCisgICAgICB2YXIgaW5pdGlhbFN0YXRlID0gdGhpcy5nZXRJbml0aWFsU3RhdGUg
PyB0aGlzLmdldEluaXRpYWxTdGF0ZSgpIDogbnVsbDsKKyAgICAgIGlmIChwcm9jZXNzLmVudi5O
T0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAgIC8vIFdlIGFsbG93IGF1dG8tbW9j
a3MgdG8gcHJvY2VlZCBhcyBpZiB0aGV5J3JlIHJldHVybmluZyBudWxsLgorICAgICAgICBpZiAo
aW5pdGlhbFN0YXRlID09PSB1bmRlZmluZWQgJiYgdGhpcy5nZXRJbml0aWFsU3RhdGUuX2lzTW9j
a0Z1bmN0aW9uKSB7CisgICAgICAgICAgLy8gVGhpcyBpcyBwcm9iYWJseSBiYWQgcHJhY3RpY2Uu
IENvbnNpZGVyIHdhcm5pbmcgaGVyZSBhbmQKKyAgICAgICAgICAvLyBkZXByZWNhdGluZyB0aGlz
IGNvbnZlbmllbmNlLgorICAgICAgICAgIGluaXRpYWxTdGF0ZSA9IG51bGw7CisgICAgICAgIH0K
KyAgICAgIH0KKyAgICAgICEodHlwZW9mIGluaXRpYWxTdGF0ZSA9PT0gJ29iamVjdCcgJiYgIUFy
cmF5LmlzQXJyYXkoaW5pdGlhbFN0YXRlKSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3By
b2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnJXMuZ2V0SW5pdGlhbFN0YXRlKCk6IG11c3Qg
cmV0dXJuIGFuIG9iamVjdCBvciBudWxsJywgQ29uc3RydWN0b3IuZGlzcGxheU5hbWUgfHwgJ1Jl
YWN0Q29tcG9zaXRlQ29tcG9uZW50JykgOiBfcHJvZEludmFyaWFudCgnODInLCBDb25zdHJ1Y3Rv
ci5kaXNwbGF5TmFtZSB8fCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQnKSA6IHZvaWQgMDsKKwor
ICAgICAgdGhpcy5zdGF0ZSA9IGluaXRpYWxTdGF0ZTsKKyAgICB9KTsKKyAgICBDb25zdHJ1Y3Rv
ci5wcm90b3R5cGUgPSBuZXcgUmVhY3RDbGFzc0NvbXBvbmVudCgpOworICAgIENvbnN0cnVjdG9y
LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IENvbnN0cnVjdG9yOworICAgIENvbnN0cnVjdG9yLnBy
b3RvdHlwZS5fX3JlYWN0QXV0b0JpbmRQYWlycyA9IFtdOworCisgICAgaW5qZWN0ZWRNaXhpbnMu
Zm9yRWFjaChtaXhTcGVjSW50b0NvbXBvbmVudC5iaW5kKG51bGwsIENvbnN0cnVjdG9yKSk7CisK
KyAgICBtaXhTcGVjSW50b0NvbXBvbmVudChDb25zdHJ1Y3Rvciwgc3BlYyk7CisKKyAgICAvLyBJ
bml0aWFsaXplIHRoZSBkZWZhdWx0UHJvcHMgcHJvcGVydHkgYWZ0ZXIgYWxsIG1peGlucyBoYXZl
IGJlZW4gbWVyZ2VkLgorICAgIGlmIChDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMpIHsKKyAg
ICAgIENvbnN0cnVjdG9yLmRlZmF1bHRQcm9wcyA9IENvbnN0cnVjdG9yLmdldERlZmF1bHRQcm9w
cygpOworICAgIH0KKworICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nKSB7CisgICAgICAvLyBUaGlzIGlzIGEgdGFnIHRvIGluZGljYXRlIHRoYXQgdGhlIHVzZSBv
ZiB0aGVzZSBtZXRob2QgbmFtZXMgaXMgb2ssCisgICAgICAvLyBzaW5jZSBpdCdzIHVzZWQgd2l0
aCBjcmVhdGVDbGFzcy4gSWYgaXQncyBub3QsIHRoZW4gaXQncyBsaWtlbHkgYQorICAgICAgLy8g
bWlzdGFrZSBzbyB3ZSdsbCB3YXJuIHlvdSB0byB1c2UgdGhlIHN0YXRpYyBwcm9wZXJ0eSwgcHJv
cGVydHkKKyAgICAgIC8vIGluaXRpYWxpemVyIG9yIGNvbnN0cnVjdG9yIHJlc3BlY3RpdmVseS4K
KyAgICAgIGlmIChDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMpIHsKKyAgICAgICAgQ29uc3Ry
dWN0b3IuZ2V0RGVmYXVsdFByb3BzLmlzUmVhY3RDbGFzc0FwcHJvdmVkID0ge307CisgICAgICB9
CisgICAgICBpZiAoQ29uc3RydWN0b3IucHJvdG90eXBlLmdldEluaXRpYWxTdGF0ZSkgeworICAg
ICAgICBDb25zdHJ1Y3Rvci5wcm90b3R5cGUuZ2V0SW5pdGlhbFN0YXRlLmlzUmVhY3RDbGFzc0Fw
cHJvdmVkID0ge307CisgICAgICB9CisgICAgfQorCisgICAgIUNvbnN0cnVjdG9yLnByb3RvdHlw
ZS5yZW5kZXIgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJp
YW50KGZhbHNlLCAnY3JlYXRlQ2xhc3MoLi4uKTogQ2xhc3Mgc3BlY2lmaWNhdGlvbiBtdXN0IGlt
cGxlbWVudCBhIGByZW5kZXJgIG1ldGhvZC4nKSA6IF9wcm9kSW52YXJpYW50KCc4MycpIDogdm9p
ZCAwOworCisgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHsK
KyAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCFD
b25zdHJ1Y3Rvci5wcm90b3R5cGUuY29tcG9uZW50U2hvdWxkVXBkYXRlLCAnJXMgaGFzIGEgbWV0
aG9kIGNhbGxlZCAnICsgJ2NvbXBvbmVudFNob3VsZFVwZGF0ZSgpLiBEaWQgeW91IG1lYW4gc2hv
dWxkQ29tcG9uZW50VXBkYXRlKCk/ICcgKyAnVGhlIG5hbWUgaXMgcGhyYXNlZCBhcyBhIHF1ZXN0
aW9uIGJlY2F1c2UgdGhlIGZ1bmN0aW9uIGlzICcgKyAnZXhwZWN0ZWQgdG8gcmV0dXJuIGEgdmFs
dWUuJywgc3BlYy5kaXNwbGF5TmFtZSB8fCAnQSBjb21wb25lbnQnKSA6IHZvaWQgMDsKKyAgICAg
IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCFDb25zdHJ1
Y3Rvci5wcm90b3R5cGUuY29tcG9uZW50V2lsbFJlY2lldmVQcm9wcywgJyVzIGhhcyBhIG1ldGhv
ZCBjYWxsZWQgJyArICdjb21wb25lbnRXaWxsUmVjaWV2ZVByb3BzKCkuIERpZCB5b3UgbWVhbiBj
b21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKCk/Jywgc3BlYy5kaXNwbGF5TmFtZSB8fCAnQSBjb21w
b25lbnQnKSA6IHZvaWQgMDsKKyAgICB9CisKKyAgICAvLyBSZWR1Y2UgdGltZSBzcGVudCBkb2lu
ZyBsb29rdXBzIGJ5IHNldHRpbmcgdGhlc2Ugb24gdGhlIHByb3RvdHlwZS4KKyAgICBmb3IgKHZh
ciBtZXRob2ROYW1lIGluIFJlYWN0Q2xhc3NJbnRlcmZhY2UpIHsKKyAgICAgIGlmICghQ29uc3Ry
dWN0b3IucHJvdG90eXBlW21ldGhvZE5hbWVdKSB7CisgICAgICAgIENvbnN0cnVjdG9yLnByb3Rv
dHlwZVttZXRob2ROYW1lXSA9IG51bGw7CisgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIENv
bnN0cnVjdG9yOworICB9LAorCisgIGluamVjdGlvbjogeworICAgIGluamVjdE1peGluOiBmdW5j
dGlvbiAobWl4aW4pIHsKKyAgICAgIGluamVjdGVkTWl4aW5zLnB1c2gobWl4aW4pOworICAgIH0K
KyAgfQorCit9OworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0Q2xhc3M7ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVz
L3JlYWN0L2xpYi9SZWFjdENvbXBvbmVudC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9k
dWxlcy9yZWFjdC9saWIvUmVhY3RDb21wb25lbnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGU1YzA4ZjFjOTk2
MTNmN2E3M2UxMDgyMThiNzNmNzQ1NTkzNDY3MQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RDb21wb25lbnQuanMKQEAgLTAs
MCArMSwxMTcgQEAKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIElu
Yy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBs
aWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQ
QVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmlj
dCc7CisKK3ZhciBfcHJvZEludmFyaWFudCA9IHJlcXVpcmUoJy4vcmVhY3RQcm9kSW52YXJpYW50
Jyk7CisKK3ZhciBSZWFjdE5vb3BVcGRhdGVRdWV1ZSA9IHJlcXVpcmUoJy4vUmVhY3ROb29wVXBk
YXRlUXVldWUnKTsKKwordmFyIGNhbkRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnLi9jYW5EZWZp
bmVQcm9wZXJ0eScpOwordmFyIGVtcHR5T2JqZWN0ID0gcmVxdWlyZSgnZmJqcy9saWIvZW1wdHlP
YmplY3QnKTsKK3ZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTsK
K3ZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpOworCisvKioKKyAqIEJh
c2UgY2xhc3MgaGVscGVycyBmb3IgdGhlIHVwZGF0aW5nIHN0YXRlIG9mIGEgY29tcG9uZW50Lgor
ICovCitmdW5jdGlvbiBSZWFjdENvbXBvbmVudChwcm9wcywgY29udGV4dCwgdXBkYXRlcikgewor
ICB0aGlzLnByb3BzID0gcHJvcHM7CisgIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7CisgIHRoaXMu
cmVmcyA9IGVtcHR5T2JqZWN0OworICAvLyBXZSBpbml0aWFsaXplIHRoZSBkZWZhdWx0IHVwZGF0
ZXIgYnV0IHRoZSByZWFsIG9uZSBnZXRzIGluamVjdGVkIGJ5IHRoZQorICAvLyByZW5kZXJlci4K
KyAgdGhpcy51cGRhdGVyID0gdXBkYXRlciB8fCBSZWFjdE5vb3BVcGRhdGVRdWV1ZTsKK30KKwor
UmVhY3RDb21wb25lbnQucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQgPSB7fTsKKworLyoqCisg
KiBTZXRzIGEgc3Vic2V0IG9mIHRoZSBzdGF0ZS4gQWx3YXlzIHVzZSB0aGlzIHRvIG11dGF0ZQor
ICogc3RhdGUuIFlvdSBzaG91bGQgdHJlYXQgYHRoaXMuc3RhdGVgIGFzIGltbXV0YWJsZS4KKyAq
CisgKiBUaGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCBgdGhpcy5zdGF0ZWAgd2lsbCBiZSBpbW1l
ZGlhdGVseSB1cGRhdGVkLCBzbworICogYWNjZXNzaW5nIGB0aGlzLnN0YXRlYCBhZnRlciBjYWxs
aW5nIHRoaXMgbWV0aG9kIG1heSByZXR1cm4gdGhlIG9sZCB2YWx1ZS4KKyAqCisgKiBUaGVyZSBp
cyBubyBndWFyYW50ZWUgdGhhdCBjYWxscyB0byBgc2V0U3RhdGVgIHdpbGwgcnVuIHN5bmNocm9u
b3VzbHksCisgKiBhcyB0aGV5IG1heSBldmVudHVhbGx5IGJlIGJhdGNoZWQgdG9nZXRoZXIuICBZ
b3UgY2FuIHByb3ZpZGUgYW4gb3B0aW9uYWwKKyAqIGNhbGxiYWNrIHRoYXQgd2lsbCBiZSBleGVj
dXRlZCB3aGVuIHRoZSBjYWxsIHRvIHNldFN0YXRlIGlzIGFjdHVhbGx5CisgKiBjb21wbGV0ZWQu
CisgKgorICogV2hlbiBhIGZ1bmN0aW9uIGlzIHByb3ZpZGVkIHRvIHNldFN0YXRlLCBpdCB3aWxs
IGJlIGNhbGxlZCBhdCBzb21lIHBvaW50IGluCisgKiB0aGUgZnV0dXJlIChub3Qgc3luY2hyb25v
dXNseSkuIEl0IHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlIHVwIHRvIGRhdGUKKyAqIGNvbXBvbmVu
dCBhcmd1bWVudHMgKHN0YXRlLCBwcm9wcywgY29udGV4dCkuIFRoZXNlIHZhbHVlcyBjYW4gYmUg
ZGlmZmVyZW50CisgKiBmcm9tIHRoaXMuKiBiZWNhdXNlIHlvdXIgZnVuY3Rpb24gbWF5IGJlIGNh
bGxlZCBhZnRlciByZWNlaXZlUHJvcHMgYnV0IGJlZm9yZQorICogc2hvdWxkQ29tcG9uZW50VXBk
YXRlLCBhbmQgdGhpcyBuZXcgc3RhdGUsIHByb3BzLCBhbmQgY29udGV4dCB3aWxsIG5vdCB5ZXQg
YmUKKyAqIGFzc2lnbmVkIHRvIHRoaXMuCisgKgorICogQHBhcmFtIHtvYmplY3R8ZnVuY3Rpb259
IHBhcnRpYWxTdGF0ZSBOZXh0IHBhcnRpYWwgc3RhdGUgb3IgZnVuY3Rpb24gdG8KKyAqICAgICAg
ICBwcm9kdWNlIG5leHQgcGFydGlhbCBzdGF0ZSB0byBiZSBtZXJnZWQgd2l0aCBjdXJyZW50IHN0
YXRlLgorICogQHBhcmFtIHs/ZnVuY3Rpb259IGNhbGxiYWNrIENhbGxlZCBhZnRlciBzdGF0ZSBp
cyB1cGRhdGVkLgorICogQGZpbmFsCisgKiBAcHJvdGVjdGVkCisgKi8KK1JlYWN0Q29tcG9uZW50
LnByb3RvdHlwZS5zZXRTdGF0ZSA9IGZ1bmN0aW9uIChwYXJ0aWFsU3RhdGUsIGNhbGxiYWNrKSB7
CisgICEodHlwZW9mIHBhcnRpYWxTdGF0ZSA9PT0gJ29iamVjdCcgfHwgdHlwZW9mIHBhcnRpYWxT
dGF0ZSA9PT0gJ2Z1bmN0aW9uJyB8fCBwYXJ0aWFsU3RhdGUgPT0gbnVsbCkgPyBwcm9jZXNzLmVu
di5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnc2V0U3RhdGUo
Li4uKTogdGFrZXMgYW4gb2JqZWN0IG9mIHN0YXRlIHZhcmlhYmxlcyB0byB1cGRhdGUgb3IgYSBm
dW5jdGlvbiB3aGljaCByZXR1cm5zIGFuIG9iamVjdCBvZiBzdGF0ZSB2YXJpYWJsZXMuJykgOiBf
cHJvZEludmFyaWFudCgnODUnKSA6IHZvaWQgMDsKKyAgdGhpcy51cGRhdGVyLmVucXVldWVTZXRT
dGF0ZSh0aGlzLCBwYXJ0aWFsU3RhdGUpOworICBpZiAoY2FsbGJhY2spIHsKKyAgICB0aGlzLnVw
ZGF0ZXIuZW5xdWV1ZUNhbGxiYWNrKHRoaXMsIGNhbGxiYWNrLCAnc2V0U3RhdGUnKTsKKyAgfQor
fTsKKworLyoqCisgKiBGb3JjZXMgYW4gdXBkYXRlLiBUaGlzIHNob3VsZCBvbmx5IGJlIGludm9r
ZWQgd2hlbiBpdCBpcyBrbm93biB3aXRoCisgKiBjZXJ0YWludHkgdGhhdCB3ZSBhcmUgKipub3Qq
KiBpbiBhIERPTSB0cmFuc2FjdGlvbi4KKyAqCisgKiBZb3UgbWF5IHdhbnQgdG8gY2FsbCB0aGlz
IHdoZW4geW91IGtub3cgdGhhdCBzb21lIGRlZXBlciBhc3BlY3Qgb2YgdGhlCisgKiBjb21wb25l
bnQncyBzdGF0ZSBoYXMgY2hhbmdlZCBidXQgYHNldFN0YXRlYCB3YXMgbm90IGNhbGxlZC4KKyAq
CisgKiBUaGlzIHdpbGwgbm90IGludm9rZSBgc2hvdWxkQ29tcG9uZW50VXBkYXRlYCwgYnV0IGl0
IHdpbGwgaW52b2tlCisgKiBgY29tcG9uZW50V2lsbFVwZGF0ZWAgYW5kIGBjb21wb25lbnREaWRV
cGRhdGVgLgorICoKKyAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBjYWxsYmFjayBDYWxsZWQgYWZ0ZXIg
dXBkYXRlIGlzIGNvbXBsZXRlLgorICogQGZpbmFsCisgKiBAcHJvdGVjdGVkCisgKi8KK1JlYWN0
Q29tcG9uZW50LnByb3RvdHlwZS5mb3JjZVVwZGF0ZSA9IGZ1bmN0aW9uIChjYWxsYmFjaykgewor
ICB0aGlzLnVwZGF0ZXIuZW5xdWV1ZUZvcmNlVXBkYXRlKHRoaXMpOworICBpZiAoY2FsbGJhY2sp
IHsKKyAgICB0aGlzLnVwZGF0ZXIuZW5xdWV1ZUNhbGxiYWNrKHRoaXMsIGNhbGxiYWNrLCAnZm9y
Y2VVcGRhdGUnKTsKKyAgfQorfTsKKworLyoqCisgKiBEZXByZWNhdGVkIEFQSXMuIFRoZXNlIEFQ
SXMgdXNlZCB0byBleGlzdCBvbiBjbGFzc2ljIFJlYWN0IGNsYXNzZXMgYnV0IHNpbmNlCisgKiB3
ZSB3b3VsZCBsaWtlIHRvIGRlcHJlY2F0ZSB0aGVtLCB3ZSdyZSBub3QgZ29pbmcgdG8gbW92ZSB0
aGVtIG92ZXIgdG8gdGhpcworICogbW9kZXJuIGJhc2UgY2xhc3MuIEluc3RlYWQsIHdlIGRlZmlu
ZSBhIGdldHRlciB0aGF0IHdhcm5zIGlmIGl0J3MgYWNjZXNzZWQuCisgKi8KK2lmIChwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgIHZhciBkZXByZWNhdGVkQVBJcyA9
IHsKKyAgICBpc01vdW50ZWQ6IFsnaXNNb3VudGVkJywgJ0luc3RlYWQsIG1ha2Ugc3VyZSB0byBj
bGVhbiB1cCBzdWJzY3JpcHRpb25zIGFuZCBwZW5kaW5nIHJlcXVlc3RzIGluICcgKyAnY29tcG9u
ZW50V2lsbFVubW91bnQgdG8gcHJldmVudCBtZW1vcnkgbGVha3MuJ10sCisgICAgcmVwbGFjZVN0
YXRlOiBbJ3JlcGxhY2VTdGF0ZScsICdSZWZhY3RvciB5b3VyIGNvZGUgdG8gdXNlIHNldFN0YXRl
IGluc3RlYWQgKHNlZSAnICsgJ2h0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1
ZXMvMzIzNikuJ10KKyAgfTsKKyAgdmFyIGRlZmluZURlcHJlY2F0aW9uV2FybmluZyA9IGZ1bmN0
aW9uIChtZXRob2ROYW1lLCBpbmZvKSB7CisgICAgaWYgKGNhbkRlZmluZVByb3BlcnR5KSB7Cisg
ICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoUmVhY3RDb21wb25lbnQucHJvdG90eXBlLCBtZXRo
b2ROYW1lLCB7CisgICAgICAgIGdldDogZnVuY3Rpb24gKCkgeworICAgICAgICAgIHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnJXMoLi4uKSBp
cyBkZXByZWNhdGVkIGluIHBsYWluIEphdmFTY3JpcHQgUmVhY3QgY2xhc3Nlcy4gJXMnLCBpbmZv
WzBdLCBpbmZvWzFdKSA6IHZvaWQgMDsKKyAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOworICAg
ICAgICB9CisgICAgICB9KTsKKyAgICB9CisgIH07CisgIGZvciAodmFyIGZuTmFtZSBpbiBkZXBy
ZWNhdGVkQVBJcykgeworICAgIGlmIChkZXByZWNhdGVkQVBJcy5oYXNPd25Qcm9wZXJ0eShmbk5h
bWUpKSB7CisgICAgICBkZWZpbmVEZXByZWNhdGlvbldhcm5pbmcoZm5OYW1lLCBkZXByZWNhdGVk
QVBJc1tmbk5hbWVdKTsKKyAgICB9CisgIH0KK30KKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdENv
bXBvbmVudDsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0Q29tcG9uZW50VHJlZURldnRv
b2wuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0Q29t
cG9uZW50VHJlZURldnRvb2wuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDkwMTJlNzQxNzE2MmVjNGQ0MzZkMDcz
MTMxMTNlZmUyMDM5M2FmZAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25v
ZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RDb21wb25lbnRUcmVlRGV2dG9vbC5qcwpAQCAtMCww
ICsxLDE0IEBACisvKioKKyAqIENvcHlyaWdodCAyMDE2LXByZXNlbnQsIEZhY2Vib29rLCBJbmMu
CisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGlj
ZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5T
RSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRp
dGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFU
RU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKyd1c2Ugc3RyaWN0JzsK
KworLy8gVE9ETyByZW1vdmUgdGhpcyBwcm94eSB3aGVuIFJOL3d3dyBnZXRzIHVwZGF0ZWQKKwor
bW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL1JlYWN0Q29tcG9uZW50VHJlZUhvb2snKTsKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9u
b2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0Q29tcG9uZW50VHJlZUhvb2suanMgYi9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0Q29tcG9uZW50VHJlZUhvb2su
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uY2E4YzY5OThkZWQ4MDQ4ZThiYjZmNTcxNGE4YzY3MDc4YWRhNWM5Ywot
LS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC9s
aWIvUmVhY3RDb21wb25lbnRUcmVlSG9vay5qcwpAQCAtMCwwICsxLDMyNSBAQAorLyoqCisgKiBD
b3B5cmlnaHQgMjAxNi1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qt
c3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBk
aXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2Yg
cGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2Ft
ZSBkaXJlY3RvcnkuCisgKgorICogCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJ
bnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0UHJvZEludmFyaWFudCcpOworCit2YXIgUmVhY3RD
dXJyZW50T3duZXIgPSByZXF1aXJlKCcuL1JlYWN0Q3VycmVudE93bmVyJyk7CisKK3ZhciBpbnZh
cmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTsKK3ZhciB3YXJuaW5nID0gcmVx
dWlyZSgnZmJqcy9saWIvd2FybmluZycpOworCitmdW5jdGlvbiBpc05hdGl2ZShmbikgeworICAv
LyBCYXNlZCBvbiBpc05hdGl2ZSgpIGZyb20gTG9kYXNoCisgIHZhciBmdW5jVG9TdHJpbmcgPSBG
dW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmc7CisgIHZhciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVj
dC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7CisgIHZhciByZUlzTmF0aXZlID0gUmVnRXhwKCde
JyArIGZ1bmNUb1N0cmluZworICAvLyBUYWtlIGFuIGV4YW1wbGUgbmF0aXZlIGZ1bmN0aW9uIHNv
dXJjZSBmb3IgY29tcGFyaXNvbgorICAuY2FsbChoYXNPd25Qcm9wZXJ0eSkKKyAgLy8gU3RyaXAg
cmVnZXggY2hhcmFjdGVycyBzbyB3ZSBjYW4gdXNlIGl0IGZvciByZWdleAorICAucmVwbGFjZSgv
W1xcXiQuKis/KClbXF17fXxdL2csICdcXCQmJykKKyAgLy8gUmVtb3ZlIGhhc093blByb3BlcnR5
IGZyb20gdGhlIHRlbXBsYXRlIHRvIG1ha2UgaXQgZ2VuZXJpYworICAucmVwbGFjZSgvaGFzT3du
UHJvcGVydHl8KGZ1bmN0aW9uKS4qPyg/PVxcXCgpfCBmb3IgLis/KD89XFxcXSkvZywgJyQxLio/
JykgKyAnJCcpOworICB0cnkgeworICAgIHZhciBzb3VyY2UgPSBmdW5jVG9TdHJpbmcuY2FsbChm
bik7CisgICAgcmV0dXJuIHJlSXNOYXRpdmUudGVzdChzb3VyY2UpOworICB9IGNhdGNoIChlcnIp
IHsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KK30KKwordmFyIGNhblVzZUNvbGxlY3Rpb25zID0K
Ky8vIEFycmF5LmZyb20KK3R5cGVvZiBBcnJheS5mcm9tID09PSAnZnVuY3Rpb24nICYmCisvLyBN
YXAKK3R5cGVvZiBNYXAgPT09ICdmdW5jdGlvbicgJiYgaXNOYXRpdmUoTWFwKSAmJgorLy8gTWFw
LnByb3RvdHlwZS5rZXlzCitNYXAucHJvdG90eXBlICE9IG51bGwgJiYgdHlwZW9mIE1hcC5wcm90
b3R5cGUua2V5cyA9PT0gJ2Z1bmN0aW9uJyAmJiBpc05hdGl2ZShNYXAucHJvdG90eXBlLmtleXMp
ICYmCisvLyBTZXQKK3R5cGVvZiBTZXQgPT09ICdmdW5jdGlvbicgJiYgaXNOYXRpdmUoU2V0KSAm
JgorLy8gU2V0LnByb3RvdHlwZS5rZXlzCitTZXQucHJvdG90eXBlICE9IG51bGwgJiYgdHlwZW9m
IFNldC5wcm90b3R5cGUua2V5cyA9PT0gJ2Z1bmN0aW9uJyAmJiBpc05hdGl2ZShTZXQucHJvdG90
eXBlLmtleXMpOworCitpZiAoY2FuVXNlQ29sbGVjdGlvbnMpIHsKKyAgdmFyIGl0ZW1NYXAgPSBu
ZXcgTWFwKCk7CisgIHZhciByb290SURTZXQgPSBuZXcgU2V0KCk7CisKKyAgdmFyIHNldEl0ZW0g
PSBmdW5jdGlvbiAoaWQsIGl0ZW0pIHsKKyAgICBpdGVtTWFwLnNldChpZCwgaXRlbSk7CisgIH07
CisgIHZhciBnZXRJdGVtID0gZnVuY3Rpb24gKGlkKSB7CisgICAgcmV0dXJuIGl0ZW1NYXAuZ2V0
KGlkKTsKKyAgfTsKKyAgdmFyIHJlbW92ZUl0ZW0gPSBmdW5jdGlvbiAoaWQpIHsKKyAgICBpdGVt
TWFwWydkZWxldGUnXShpZCk7CisgIH07CisgIHZhciBnZXRJdGVtSURzID0gZnVuY3Rpb24gKCkg
eworICAgIHJldHVybiBBcnJheS5mcm9tKGl0ZW1NYXAua2V5cygpKTsKKyAgfTsKKworICB2YXIg
YWRkUm9vdCA9IGZ1bmN0aW9uIChpZCkgeworICAgIHJvb3RJRFNldC5hZGQoaWQpOworICB9Owor
ICB2YXIgcmVtb3ZlUm9vdCA9IGZ1bmN0aW9uIChpZCkgeworICAgIHJvb3RJRFNldFsnZGVsZXRl
J10oaWQpOworICB9OworICB2YXIgZ2V0Um9vdElEcyA9IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1
cm4gQXJyYXkuZnJvbShyb290SURTZXQua2V5cygpKTsKKyAgfTsKK30gZWxzZSB7CisgIHZhciBp
dGVtQnlLZXkgPSB7fTsKKyAgdmFyIHJvb3RCeUtleSA9IHt9OworCisgIC8vIFVzZSBub24tbnVt
ZXJpYyBrZXlzIHRvIHByZXZlbnQgVjggcGVyZm9ybWFuY2UgaXNzdWVzOgorICAvLyBodHRwczov
L2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvcHVsbC83MjMyCisgIHZhciBnZXRLZXlGcm9tSUQg
PSBmdW5jdGlvbiAoaWQpIHsKKyAgICByZXR1cm4gJy4nICsgaWQ7CisgIH07CisgIHZhciBnZXRJ
REZyb21LZXkgPSBmdW5jdGlvbiAoa2V5KSB7CisgICAgcmV0dXJuIHBhcnNlSW50KGtleS5zdWJz
dHIoMSksIDEwKTsKKyAgfTsKKworICB2YXIgc2V0SXRlbSA9IGZ1bmN0aW9uIChpZCwgaXRlbSkg
eworICAgIHZhciBrZXkgPSBnZXRLZXlGcm9tSUQoaWQpOworICAgIGl0ZW1CeUtleVtrZXldID0g
aXRlbTsKKyAgfTsKKyAgdmFyIGdldEl0ZW0gPSBmdW5jdGlvbiAoaWQpIHsKKyAgICB2YXIga2V5
ID0gZ2V0S2V5RnJvbUlEKGlkKTsKKyAgICByZXR1cm4gaXRlbUJ5S2V5W2tleV07CisgIH07Cisg
IHZhciByZW1vdmVJdGVtID0gZnVuY3Rpb24gKGlkKSB7CisgICAgdmFyIGtleSA9IGdldEtleUZy
b21JRChpZCk7CisgICAgZGVsZXRlIGl0ZW1CeUtleVtrZXldOworICB9OworICB2YXIgZ2V0SXRl
bUlEcyA9IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gT2JqZWN0LmtleXMoaXRlbUJ5S2V5KS5t
YXAoZ2V0SURGcm9tS2V5KTsKKyAgfTsKKworICB2YXIgYWRkUm9vdCA9IGZ1bmN0aW9uIChpZCkg
eworICAgIHZhciBrZXkgPSBnZXRLZXlGcm9tSUQoaWQpOworICAgIHJvb3RCeUtleVtrZXldID0g
dHJ1ZTsKKyAgfTsKKyAgdmFyIHJlbW92ZVJvb3QgPSBmdW5jdGlvbiAoaWQpIHsKKyAgICB2YXIg
a2V5ID0gZ2V0S2V5RnJvbUlEKGlkKTsKKyAgICBkZWxldGUgcm9vdEJ5S2V5W2tleV07CisgIH07
CisgIHZhciBnZXRSb290SURzID0gZnVuY3Rpb24gKCkgeworICAgIHJldHVybiBPYmplY3Qua2V5
cyhyb290QnlLZXkpLm1hcChnZXRJREZyb21LZXkpOworICB9OworfQorCit2YXIgdW5tb3VudGVk
SURzID0gW107CisKK2Z1bmN0aW9uIHB1cmdlRGVlcChpZCkgeworICB2YXIgaXRlbSA9IGdldEl0
ZW0oaWQpOworICBpZiAoaXRlbSkgeworICAgIHZhciBjaGlsZElEcyA9IGl0ZW0uY2hpbGRJRHM7
CisKKyAgICByZW1vdmVJdGVtKGlkKTsKKyAgICBjaGlsZElEcy5mb3JFYWNoKHB1cmdlRGVlcCk7
CisgIH0KK30KKworZnVuY3Rpb24gZGVzY3JpYmVDb21wb25lbnRGcmFtZShuYW1lLCBzb3VyY2Us
IG93bmVyTmFtZSkgeworICByZXR1cm4gJ1xuICAgIGluICcgKyAobmFtZSB8fCAnVW5rbm93bicp
ICsgKHNvdXJjZSA/ICcgKGF0ICcgKyBzb3VyY2UuZmlsZU5hbWUucmVwbGFjZSgvXi4qW1xcXC9d
LywgJycpICsgJzonICsgc291cmNlLmxpbmVOdW1iZXIgKyAnKScgOiBvd25lck5hbWUgPyAnIChj
cmVhdGVkIGJ5ICcgKyBvd25lck5hbWUgKyAnKScgOiAnJyk7Cit9CisKK2Z1bmN0aW9uIGdldERp
c3BsYXlOYW1lKGVsZW1lbnQpIHsKKyAgaWYgKGVsZW1lbnQgPT0gbnVsbCkgeworICAgIHJldHVy
biAnI2VtcHR5JzsKKyAgfSBlbHNlIGlmICh0eXBlb2YgZWxlbWVudCA9PT0gJ3N0cmluZycgfHwg
dHlwZW9mIGVsZW1lbnQgPT09ICdudW1iZXInKSB7CisgICAgcmV0dXJuICcjdGV4dCc7CisgIH0g
ZWxzZSBpZiAodHlwZW9mIGVsZW1lbnQudHlwZSA9PT0gJ3N0cmluZycpIHsKKyAgICByZXR1cm4g
ZWxlbWVudC50eXBlOworICB9IGVsc2UgeworICAgIHJldHVybiBlbGVtZW50LnR5cGUuZGlzcGxh
eU5hbWUgfHwgZWxlbWVudC50eXBlLm5hbWUgfHwgJ1Vua25vd24nOworICB9Cit9CisKK2Z1bmN0
aW9uIGRlc2NyaWJlSUQoaWQpIHsKKyAgdmFyIG5hbWUgPSBSZWFjdENvbXBvbmVudFRyZWVIb29r
LmdldERpc3BsYXlOYW1lKGlkKTsKKyAgdmFyIGVsZW1lbnQgPSBSZWFjdENvbXBvbmVudFRyZWVI
b29rLmdldEVsZW1lbnQoaWQpOworICB2YXIgb3duZXJJRCA9IFJlYWN0Q29tcG9uZW50VHJlZUhv
b2suZ2V0T3duZXJJRChpZCk7CisgIHZhciBvd25lck5hbWU7CisgIGlmIChvd25lcklEKSB7Cisg
ICAgb3duZXJOYW1lID0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXREaXNwbGF5TmFtZShvd25l
cklEKTsKKyAgfQorICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2Fy
bmluZyhlbGVtZW50LCAnUmVhY3RDb21wb25lbnRUcmVlSG9vazogTWlzc2luZyBSZWFjdCBlbGVt
ZW50IGZvciBkZWJ1Z0lEICVzIHdoZW4gJyArICdidWlsZGluZyBzdGFjaycsIGlkKSA6IHZvaWQg
MDsKKyAgcmV0dXJuIGRlc2NyaWJlQ29tcG9uZW50RnJhbWUobmFtZSwgZWxlbWVudCAmJiBlbGVt
ZW50Ll9zb3VyY2UsIG93bmVyTmFtZSk7Cit9CisKK3ZhciBSZWFjdENvbXBvbmVudFRyZWVIb29r
ID0geworICBvblNldENoaWxkcmVuOiBmdW5jdGlvbiAoaWQsIG5leHRDaGlsZElEcykgeworICAg
IHZhciBpdGVtID0gZ2V0SXRlbShpZCk7CisgICAgIWl0ZW0gPyBwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnSXRlbSBtdXN0IGhhdmUgYmVl
biBzZXQnKSA6IF9wcm9kSW52YXJpYW50KCcxNDQnKSA6IHZvaWQgMDsKKyAgICBpdGVtLmNoaWxk
SURzID0gbmV4dENoaWxkSURzOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuZXh0Q2hpbGRJ
RHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciBuZXh0Q2hpbGRJRCA9IG5leHRDaGlsZElEc1tp
XTsKKyAgICAgIHZhciBuZXh0Q2hpbGQgPSBnZXRJdGVtKG5leHRDaGlsZElEKTsKKyAgICAgICFu
ZXh0Q2hpbGQgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJp
YW50KGZhbHNlLCAnRXhwZWN0ZWQgaG9vayBldmVudHMgdG8gZmlyZSBmb3IgdGhlIGNoaWxkIGJl
Zm9yZSBpdHMgcGFyZW50IGluY2x1ZGVzIGl0IGluIG9uU2V0Q2hpbGRyZW4oKS4nKSA6IF9wcm9k
SW52YXJpYW50KCcxNDAnKSA6IHZvaWQgMDsKKyAgICAgICEobmV4dENoaWxkLmNoaWxkSURzICE9
IG51bGwgfHwgdHlwZW9mIG5leHRDaGlsZC5lbGVtZW50ICE9PSAnb2JqZWN0JyB8fCBuZXh0Q2hp
bGQuZWxlbWVudCA9PSBudWxsKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlv
bicgPyBpbnZhcmlhbnQoZmFsc2UsICdFeHBlY3RlZCBvblNldENoaWxkcmVuKCkgdG8gZmlyZSBm
b3IgYSBjb250YWluZXIgY2hpbGQgYmVmb3JlIGl0cyBwYXJlbnQgaW5jbHVkZXMgaXQgaW4gb25T
ZXRDaGlsZHJlbigpLicpIDogX3Byb2RJbnZhcmlhbnQoJzE0MScpIDogdm9pZCAwOworICAgICAg
IW5leHRDaGlsZC5pc01vdW50ZWQgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nID8gaW52YXJpYW50KGZhbHNlLCAnRXhwZWN0ZWQgb25Nb3VudENvbXBvbmVudCgpIHRvIGZp
cmUgZm9yIHRoZSBjaGlsZCBiZWZvcmUgaXRzIHBhcmVudCBpbmNsdWRlcyBpdCBpbiBvblNldENo
aWxkcmVuKCkuJykgOiBfcHJvZEludmFyaWFudCgnNzEnKSA6IHZvaWQgMDsKKyAgICAgIGlmIChu
ZXh0Q2hpbGQucGFyZW50SUQgPT0gbnVsbCkgeworICAgICAgICBuZXh0Q2hpbGQucGFyZW50SUQg
PSBpZDsKKyAgICAgICAgLy8gVE9ETzogVGhpcyBzaG91bGRuJ3QgYmUgbmVjZXNzYXJ5IGJ1dCBt
b3VudGluZyBhIG5ldyByb290IGR1cmluZyBpbgorICAgICAgICAvLyBjb21wb25lbnRXaWxsTW91
bnQgY3VycmVudGx5IGNhdXNlcyBub3QteWV0LW1vdW50ZWQgY29tcG9uZW50cyB0bworICAgICAg
ICAvLyBiZSBwdXJnZWQgZnJvbSBvdXIgdHJlZSBkYXRhIHNvIHRoZWlyIHBhcmVudCBpZCBpcyBt
aXNzaW5nLgorICAgICAgfQorICAgICAgIShuZXh0Q2hpbGQucGFyZW50SUQgPT09IGlkKSA/IHBy
b2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdF
eHBlY3RlZCBvbkJlZm9yZU1vdW50Q29tcG9uZW50KCkgcGFyZW50IGFuZCBvblNldENoaWxkcmVu
KCkgdG8gYmUgY29uc2lzdGVudCAoJXMgaGFzIHBhcmVudHMgJXMgYW5kICVzKS4nLCBuZXh0Q2hp
bGRJRCwgbmV4dENoaWxkLnBhcmVudElELCBpZCkgOiBfcHJvZEludmFyaWFudCgnMTQyJywgbmV4
dENoaWxkSUQsIG5leHRDaGlsZC5wYXJlbnRJRCwgaWQpIDogdm9pZCAwOworICAgIH0KKyAgfSwK
KyAgb25CZWZvcmVNb3VudENvbXBvbmVudDogZnVuY3Rpb24gKGlkLCBlbGVtZW50LCBwYXJlbnRJ
RCkgeworICAgIHZhciBpdGVtID0geworICAgICAgZWxlbWVudDogZWxlbWVudCwKKyAgICAgIHBh
cmVudElEOiBwYXJlbnRJRCwKKyAgICAgIHRleHQ6IG51bGwsCisgICAgICBjaGlsZElEczogW10s
CisgICAgICBpc01vdW50ZWQ6IGZhbHNlLAorICAgICAgdXBkYXRlQ291bnQ6IDAKKyAgICB9Owor
ICAgIHNldEl0ZW0oaWQsIGl0ZW0pOworICB9LAorICBvbkJlZm9yZVVwZGF0ZUNvbXBvbmVudDog
ZnVuY3Rpb24gKGlkLCBlbGVtZW50KSB7CisgICAgdmFyIGl0ZW0gPSBnZXRJdGVtKGlkKTsKKyAg
ICBpZiAoIWl0ZW0gfHwgIWl0ZW0uaXNNb3VudGVkKSB7CisgICAgICAvLyBXZSBtYXkgZW5kIHVw
IGhlcmUgYXMgYSByZXN1bHQgb2Ygc2V0U3RhdGUoKSBpbiBjb21wb25lbnRXaWxsVW5tb3VudCgp
LgorICAgICAgLy8gSW4gdGhpcyBjYXNlLCBpZ25vcmUgdGhlIGVsZW1lbnQuCisgICAgICByZXR1
cm47CisgICAgfQorICAgIGl0ZW0uZWxlbWVudCA9IGVsZW1lbnQ7CisgIH0sCisgIG9uTW91bnRD
b21wb25lbnQ6IGZ1bmN0aW9uIChpZCkgeworICAgIHZhciBpdGVtID0gZ2V0SXRlbShpZCk7Cisg
ICAgIWl0ZW0gPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJp
YW50KGZhbHNlLCAnSXRlbSBtdXN0IGhhdmUgYmVlbiBzZXQnKSA6IF9wcm9kSW52YXJpYW50KCcx
NDQnKSA6IHZvaWQgMDsKKyAgICBpdGVtLmlzTW91bnRlZCA9IHRydWU7CisgICAgdmFyIGlzUm9v
dCA9IGl0ZW0ucGFyZW50SUQgPT09IDA7CisgICAgaWYgKGlzUm9vdCkgeworICAgICAgYWRkUm9v
dChpZCk7CisgICAgfQorICB9LAorICBvblVwZGF0ZUNvbXBvbmVudDogZnVuY3Rpb24gKGlkKSB7
CisgICAgdmFyIGl0ZW0gPSBnZXRJdGVtKGlkKTsKKyAgICBpZiAoIWl0ZW0gfHwgIWl0ZW0uaXNN
b3VudGVkKSB7CisgICAgICAvLyBXZSBtYXkgZW5kIHVwIGhlcmUgYXMgYSByZXN1bHQgb2Ygc2V0
U3RhdGUoKSBpbiBjb21wb25lbnRXaWxsVW5tb3VudCgpLgorICAgICAgLy8gSW4gdGhpcyBjYXNl
LCBpZ25vcmUgdGhlIGVsZW1lbnQuCisgICAgICByZXR1cm47CisgICAgfQorICAgIGl0ZW0udXBk
YXRlQ291bnQrKzsKKyAgfSwKKyAgb25Vbm1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAoaWQpIHsK
KyAgICB2YXIgaXRlbSA9IGdldEl0ZW0oaWQpOworICAgIGlmIChpdGVtKSB7CisgICAgICAvLyBX
ZSBuZWVkIHRvIGNoZWNrIGlmIGl0IGV4aXN0cy4KKyAgICAgIC8vIGBpdGVtYCBtaWdodCBub3Qg
ZXhpc3QgaWYgaXQgaXMgaW5zaWRlIGFuIGVycm9yIGJvdW5kYXJ5LCBhbmQgYSBzaWJsaW5nCisg
ICAgICAvLyBlcnJvciBib3VuZGFyeSBjaGlsZCB0aHJldyB3aGlsZSBtb3VudGluZy4gVGhlbiB0
aGlzIGluc3RhbmNlIG5ldmVyCisgICAgICAvLyBnb3QgYSBjaGFuY2UgdG8gbW91bnQsIGJ1dCBp
dCBzdGlsbCBnZXRzIGFuIHVubW91bnRpbmcgZXZlbnQgZHVyaW5nCisgICAgICAvLyB0aGUgZXJy
b3IgYm91bmRhcnkgY2xlYW51cC4KKyAgICAgIGl0ZW0uaXNNb3VudGVkID0gZmFsc2U7CisgICAg
ICB2YXIgaXNSb290ID0gaXRlbS5wYXJlbnRJRCA9PT0gMDsKKyAgICAgIGlmIChpc1Jvb3QpIHsK
KyAgICAgICAgcmVtb3ZlUm9vdChpZCk7CisgICAgICB9CisgICAgfQorICAgIHVubW91bnRlZElE
cy5wdXNoKGlkKTsKKyAgfSwKKyAgcHVyZ2VVbm1vdW50ZWRDb21wb25lbnRzOiBmdW5jdGlvbiAo
KSB7CisgICAgaWYgKFJlYWN0Q29tcG9uZW50VHJlZUhvb2suX3ByZXZlbnRQdXJnaW5nKSB7Cisg
ICAgICAvLyBTaG91bGQgb25seSBiZSB1c2VkIGZvciB0ZXN0aW5nLgorICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdW5tb3VudGVkSURzLmxlbmd0aDsgaSsr
KSB7CisgICAgICB2YXIgaWQgPSB1bm1vdW50ZWRJRHNbaV07CisgICAgICBwdXJnZURlZXAoaWQp
OworICAgIH0KKyAgICB1bm1vdW50ZWRJRHMubGVuZ3RoID0gMDsKKyAgfSwKKyAgaXNNb3VudGVk
OiBmdW5jdGlvbiAoaWQpIHsKKyAgICB2YXIgaXRlbSA9IGdldEl0ZW0oaWQpOworICAgIHJldHVy
biBpdGVtID8gaXRlbS5pc01vdW50ZWQgOiBmYWxzZTsKKyAgfSwKKyAgZ2V0Q3VycmVudFN0YWNr
QWRkZW5kdW06IGZ1bmN0aW9uICh0b3BFbGVtZW50KSB7CisgICAgdmFyIGluZm8gPSAnJzsKKyAg
ICBpZiAodG9wRWxlbWVudCkgeworICAgICAgdmFyIG5hbWUgPSBnZXREaXNwbGF5TmFtZSh0b3BF
bGVtZW50KTsKKyAgICAgIHZhciBvd25lciA9IHRvcEVsZW1lbnQuX293bmVyOworICAgICAgaW5m
byArPSBkZXNjcmliZUNvbXBvbmVudEZyYW1lKG5hbWUsIHRvcEVsZW1lbnQuX3NvdXJjZSwgb3du
ZXIgJiYgb3duZXIuZ2V0TmFtZSgpKTsKKyAgICB9CisKKyAgICB2YXIgY3VycmVudE93bmVyID0g
UmVhY3RDdXJyZW50T3duZXIuY3VycmVudDsKKyAgICB2YXIgaWQgPSBjdXJyZW50T3duZXIgJiYg
Y3VycmVudE93bmVyLl9kZWJ1Z0lEOworCisgICAgaW5mbyArPSBSZWFjdENvbXBvbmVudFRyZWVI
b29rLmdldFN0YWNrQWRkZW5kdW1CeUlEKGlkKTsKKyAgICByZXR1cm4gaW5mbzsKKyAgfSwKKyAg
Z2V0U3RhY2tBZGRlbmR1bUJ5SUQ6IGZ1bmN0aW9uIChpZCkgeworICAgIHZhciBpbmZvID0gJyc7
CisgICAgd2hpbGUgKGlkKSB7CisgICAgICBpbmZvICs9IGRlc2NyaWJlSUQoaWQpOworICAgICAg
aWQgPSBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldFBhcmVudElEKGlkKTsKKyAgICB9CisgICAg
cmV0dXJuIGluZm87CisgIH0sCisgIGdldENoaWxkSURzOiBmdW5jdGlvbiAoaWQpIHsKKyAgICB2
YXIgaXRlbSA9IGdldEl0ZW0oaWQpOworICAgIHJldHVybiBpdGVtID8gaXRlbS5jaGlsZElEcyA6
IFtdOworICB9LAorICBnZXREaXNwbGF5TmFtZTogZnVuY3Rpb24gKGlkKSB7CisgICAgdmFyIGVs
ZW1lbnQgPSBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldEVsZW1lbnQoaWQpOworICAgIGlmICgh
ZWxlbWVudCkgeworICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorICAgIHJldHVybiBnZXREaXNw
bGF5TmFtZShlbGVtZW50KTsKKyAgfSwKKyAgZ2V0RWxlbWVudDogZnVuY3Rpb24gKGlkKSB7Cisg
ICAgdmFyIGl0ZW0gPSBnZXRJdGVtKGlkKTsKKyAgICByZXR1cm4gaXRlbSA/IGl0ZW0uZWxlbWVu
dCA6IG51bGw7CisgIH0sCisgIGdldE93bmVySUQ6IGZ1bmN0aW9uIChpZCkgeworICAgIHZhciBl
bGVtZW50ID0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRFbGVtZW50KGlkKTsKKyAgICBpZiAo
IWVsZW1lbnQgfHwgIWVsZW1lbnQuX293bmVyKSB7CisgICAgICByZXR1cm4gbnVsbDsKKyAgICB9
CisgICAgcmV0dXJuIGVsZW1lbnQuX293bmVyLl9kZWJ1Z0lEOworICB9LAorICBnZXRQYXJlbnRJ
RDogZnVuY3Rpb24gKGlkKSB7CisgICAgdmFyIGl0ZW0gPSBnZXRJdGVtKGlkKTsKKyAgICByZXR1
cm4gaXRlbSA/IGl0ZW0ucGFyZW50SUQgOiBudWxsOworICB9LAorICBnZXRTb3VyY2U6IGZ1bmN0
aW9uIChpZCkgeworICAgIHZhciBpdGVtID0gZ2V0SXRlbShpZCk7CisgICAgdmFyIGVsZW1lbnQg
PSBpdGVtID8gaXRlbS5lbGVtZW50IDogbnVsbDsKKyAgICB2YXIgc291cmNlID0gZWxlbWVudCAh
PSBudWxsID8gZWxlbWVudC5fc291cmNlIDogbnVsbDsKKyAgICByZXR1cm4gc291cmNlOworICB9
LAorICBnZXRUZXh0OiBmdW5jdGlvbiAoaWQpIHsKKyAgICB2YXIgZWxlbWVudCA9IFJlYWN0Q29t
cG9uZW50VHJlZUhvb2suZ2V0RWxlbWVudChpZCk7CisgICAgaWYgKHR5cGVvZiBlbGVtZW50ID09
PSAnc3RyaW5nJykgeworICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgfSBlbHNlIGlmICh0eXBl
b2YgZWxlbWVudCA9PT0gJ251bWJlcicpIHsKKyAgICAgIHJldHVybiAnJyArIGVsZW1lbnQ7Cisg
ICAgfSBlbHNlIHsKKyAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAgfSwKKyAgZ2V0VXBkYXRl
Q291bnQ6IGZ1bmN0aW9uIChpZCkgeworICAgIHZhciBpdGVtID0gZ2V0SXRlbShpZCk7CisgICAg
cmV0dXJuIGl0ZW0gPyBpdGVtLnVwZGF0ZUNvdW50IDogMDsKKyAgfSwKKworCisgIGdldFJvb3RJ
RHM6IGdldFJvb3RJRHMsCisgIGdldFJlZ2lzdGVyZWRJRHM6IGdldEl0ZW1JRHMKK307CisKK21v
ZHVsZS5leHBvcnRzID0gUmVhY3RDb21wb25lbnRUcmVlSG9vazsKXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVh
Y3QvbGliL1JlYWN0Q29tcG9uZW50VHJlZUhvb2tVTURTaGltLmpzIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVh
Y3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdENvbXBvbmVudFRyZWVIb29rVU1EU2hpbS5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wMDMzNWIzNmIxZjczOTUxYjBhYjk5ZjA2YWJiYTQ1NmY5NjBiYTg5Ci0t
LSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2xp
Yi9SZWFjdENvbXBvbmVudFRyZWVIb29rVU1EU2hpbS5qcwpAQCAtMCwwICsxLDE3IEBACisvKioK
KyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl
IEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50Cisg
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworLyogZ2xvYmFscyBSZWFjdCAqLworCisndXNl
IHN0cmljdCc7CisKK3ZhciBSZWFjdEludGVybmFscyA9IFJlYWN0Ll9fU0VDUkVUX0lOVEVSTkFM
U19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEOworCittb2R1bGUuZXhwb3J0cyA9IFJl
YWN0SW50ZXJuYWxzLlJlYWN0Q29tcG9uZW50VHJlZUhvb2s7ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0
L2xpYi9SZWFjdENvbXBvbmVudFdpdGhQdXJlUmVuZGVyTWl4aW4uanMgYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9y
ZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0Q29tcG9uZW50V2l0aFB1cmVSZW5kZXJN
aXhpbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZjM4NjhiODQ2ODcwZTU3NjdiMWI2MmNiZDU4MjA4ZDVhNmE4
ODQ1Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3Jl
YWN0L2xpYi9SZWFjdENvbXBvbmVudFdpdGhQdXJlUmVuZGVyTWl4aW4uanMKQEAgLTAsMCArMSw0
NyBAQAorLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICog
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2Vk
IHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25h
bCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMg
ZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwor
dmFyIHNoYWxsb3dDb21wYXJlID0gcmVxdWlyZSgnLi9zaGFsbG93Q29tcGFyZScpOworCisvKioK
KyAqIElmIHlvdXIgUmVhY3QgY29tcG9uZW50J3MgcmVuZGVyIGZ1bmN0aW9uIGlzICJwdXJlIiwg
ZS5nLiBpdCB3aWxsIHJlbmRlciB0aGUKKyAqIHNhbWUgcmVzdWx0IGdpdmVuIHRoZSBzYW1lIHBy
b3BzIGFuZCBzdGF0ZSwgcHJvdmlkZSB0aGlzIG1peGluIGZvciBhCisgKiBjb25zaWRlcmFibGUg
cGVyZm9ybWFuY2UgYm9vc3QuCisgKgorICogTW9zdCBSZWFjdCBjb21wb25lbnRzIGhhdmUgcHVy
ZSByZW5kZXIgZnVuY3Rpb25zLgorICoKKyAqIEV4YW1wbGU6CisgKgorICogICB2YXIgUmVhY3RD
b21wb25lbnRXaXRoUHVyZVJlbmRlck1peGluID0KKyAqICAgICByZXF1aXJlKCdSZWFjdENvbXBv
bmVudFdpdGhQdXJlUmVuZGVyTWl4aW4nKTsKKyAqICAgUmVhY3QuY3JlYXRlQ2xhc3MoeworICog
ICAgIG1peGluczogW1JlYWN0Q29tcG9uZW50V2l0aFB1cmVSZW5kZXJNaXhpbl0sCisgKgorICog
ICAgIHJlbmRlcjogZnVuY3Rpb24oKSB7CisgKiAgICAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9
e3RoaXMucHJvcHMuY2xhc3NOYW1lfT5mb288L2Rpdj47CisgKiAgICAgfQorICogICB9KTsKKyAq
CisgKiBOb3RlOiBUaGlzIG9ubHkgY2hlY2tzIHNoYWxsb3cgZXF1YWxpdHkgZm9yIHByb3BzIGFu
ZCBzdGF0ZS4gSWYgdGhlc2UgY29udGFpbgorICogY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgdGhp
cyBtaXhpbiBtYXkgaGF2ZSBmYWxzZS1uZWdhdGl2ZXMgZm9yIGRlZXBlcgorICogZGlmZmVyZW5j
ZXMuIE9ubHkgbWl4aW4gdG8gY29tcG9uZW50cyB3aGljaCBoYXZlIHNpbXBsZSBwcm9wcyBhbmQg
c3RhdGUsIG9yCisgKiB1c2UgYGZvcmNlVXBkYXRlKClgIHdoZW4geW91IGtub3cgZGVlcCBkYXRh
IHN0cnVjdHVyZXMgaGF2ZSBjaGFuZ2VkLgorICoKKyAqIFNlZSBodHRwczovL2ZhY2Vib29rLmdp
dGh1Yi5pby9yZWFjdC9kb2NzL3B1cmUtcmVuZGVyLW1peGluLmh0bWwKKyAqLwordmFyIFJlYWN0
Q29tcG9uZW50V2l0aFB1cmVSZW5kZXJNaXhpbiA9IHsKKyAgc2hvdWxkQ29tcG9uZW50VXBkYXRl
OiBmdW5jdGlvbiAobmV4dFByb3BzLCBuZXh0U3RhdGUpIHsKKyAgICByZXR1cm4gc2hhbGxvd0Nv
bXBhcmUodGhpcywgbmV4dFByb3BzLCBuZXh0U3RhdGUpOworICB9Cit9OworCittb2R1bGUuZXhw
b3J0cyA9IFJlYWN0Q29tcG9uZW50V2l0aFB1cmVSZW5kZXJNaXhpbjsKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMv
cmVhY3QvbGliL1JlYWN0Q3VycmVudE93bmVyLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9t
b2R1bGVzL3JlYWN0L2xpYi9SZWFjdEN1cnJlbnRPd25lci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZWNmMDNl
NGFjNjAwYjhlNDUzMzdjOTM5MTYxNDhlMGZiYTAwYWExCi0tLSAvZGV2L251bGwKKysrIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdEN1cnJlbnRPd25lci5q
cwpAQCAtMCwwICsxLDMwIEBACisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNv
ZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQor
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBp
biB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiAKKyAqLwor
CisndXNlIHN0cmljdCc7CisKKy8qKgorICogS2VlcHMgdHJhY2sgb2YgdGhlIGN1cnJlbnQgb3du
ZXIuCisgKgorICogVGhlIGN1cnJlbnQgb3duZXIgaXMgdGhlIGNvbXBvbmVudCB3aG8gc2hvdWxk
IG93biBhbnkgY29tcG9uZW50cyB0aGF0IGFyZQorICogY3VycmVudGx5IGJlaW5nIGNvbnN0cnVj
dGVkLgorICovCit2YXIgUmVhY3RDdXJyZW50T3duZXIgPSB7CisKKyAgLyoqCisgICAqIEBpbnRl
cm5hbAorICAgKiBAdHlwZSB7UmVhY3RDb21wb25lbnR9CisgICAqLworICBjdXJyZW50OiBudWxs
CisKK307CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RDdXJyZW50T3duZXI7ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1
bGVzL3JlYWN0L2xpYi9SZWFjdEN1cnJlbnRPd25lclVNRFNoaW0uanMgYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9y
ZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0Q3VycmVudE93bmVyVU1EU2hpbS5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5hNTNmMGE1MzY1OWE3YTMzODQxYWJkMTgzZTRiMWJhODViMWJiMzE0Ci0tLSAv
ZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9S
ZWFjdEN1cnJlbnRPd25lclVNRFNoaW0uanMKQEAgLTAsMCArMSwxNyBAQAorLyoqCisgKiBDb3B5
cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5
bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJl
Y3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0
ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuCisgKgorICovCisKKy8qIGdsb2JhbHMgUmVhY3QgKi8KKworJ3VzZSBzdHJpY3Qn
OworCit2YXIgUmVhY3RJbnRlcm5hbHMgPSBSZWFjdC5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9U
X1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRDsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdEludGVy
bmFscy5SZWFjdEN1cnJlbnRPd25lcjsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0RE9N
RmFjdG9yaWVzLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9S
ZWFjdERPTUZhY3Rvcmllcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNWFhZDZkZDU4N2RlOGQ4MDc0NmRkMjA2
NDdmMGQzNmFiNTQ2NGQ0Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9k
ZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdERPTUZhY3Rvcmllcy5qcwpAQCAtMCwwICsxLDE2OSBA
QAorLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBn
cmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmls
ZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFy
IFJlYWN0RWxlbWVudCA9IHJlcXVpcmUoJy4vUmVhY3RFbGVtZW50Jyk7CisKKy8qKgorICogQ3Jl
YXRlIGEgZmFjdG9yeSB0aGF0IGNyZWF0ZXMgSFRNTCB0YWcgZWxlbWVudHMuCisgKgorICogQHBy
aXZhdGUKKyAqLwordmFyIGNyZWF0ZURPTUZhY3RvcnkgPSBSZWFjdEVsZW1lbnQuY3JlYXRlRmFj
dG9yeTsKK2lmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgIHZh
ciBSZWFjdEVsZW1lbnRWYWxpZGF0b3IgPSByZXF1aXJlKCcuL1JlYWN0RWxlbWVudFZhbGlkYXRv
cicpOworICBjcmVhdGVET01GYWN0b3J5ID0gUmVhY3RFbGVtZW50VmFsaWRhdG9yLmNyZWF0ZUZh
Y3Rvcnk7Cit9CisKKy8qKgorICogQ3JlYXRlcyBhIG1hcHBpbmcgZnJvbSBzdXBwb3J0ZWQgSFRN
TCB0YWdzIHRvIGBSZWFjdERPTUNvbXBvbmVudGAgY2xhc3Nlcy4KKyAqIFRoaXMgaXMgYWxzbyBh
Y2Nlc3NpYmxlIHZpYSBgUmVhY3QuRE9NYC4KKyAqCisgKiBAcHVibGljCisgKi8KK3ZhciBSZWFj
dERPTUZhY3RvcmllcyA9IHsKKyAgYTogY3JlYXRlRE9NRmFjdG9yeSgnYScpLAorICBhYmJyOiBj
cmVhdGVET01GYWN0b3J5KCdhYmJyJyksCisgIGFkZHJlc3M6IGNyZWF0ZURPTUZhY3RvcnkoJ2Fk
ZHJlc3MnKSwKKyAgYXJlYTogY3JlYXRlRE9NRmFjdG9yeSgnYXJlYScpLAorICBhcnRpY2xlOiBj
cmVhdGVET01GYWN0b3J5KCdhcnRpY2xlJyksCisgIGFzaWRlOiBjcmVhdGVET01GYWN0b3J5KCdh
c2lkZScpLAorICBhdWRpbzogY3JlYXRlRE9NRmFjdG9yeSgnYXVkaW8nKSwKKyAgYjogY3JlYXRl
RE9NRmFjdG9yeSgnYicpLAorICBiYXNlOiBjcmVhdGVET01GYWN0b3J5KCdiYXNlJyksCisgIGJk
aTogY3JlYXRlRE9NRmFjdG9yeSgnYmRpJyksCisgIGJkbzogY3JlYXRlRE9NRmFjdG9yeSgnYmRv
JyksCisgIGJpZzogY3JlYXRlRE9NRmFjdG9yeSgnYmlnJyksCisgIGJsb2NrcXVvdGU6IGNyZWF0
ZURPTUZhY3RvcnkoJ2Jsb2NrcXVvdGUnKSwKKyAgYm9keTogY3JlYXRlRE9NRmFjdG9yeSgnYm9k
eScpLAorICBicjogY3JlYXRlRE9NRmFjdG9yeSgnYnInKSwKKyAgYnV0dG9uOiBjcmVhdGVET01G
YWN0b3J5KCdidXR0b24nKSwKKyAgY2FudmFzOiBjcmVhdGVET01GYWN0b3J5KCdjYW52YXMnKSwK
KyAgY2FwdGlvbjogY3JlYXRlRE9NRmFjdG9yeSgnY2FwdGlvbicpLAorICBjaXRlOiBjcmVhdGVE
T01GYWN0b3J5KCdjaXRlJyksCisgIGNvZGU6IGNyZWF0ZURPTUZhY3RvcnkoJ2NvZGUnKSwKKyAg
Y29sOiBjcmVhdGVET01GYWN0b3J5KCdjb2wnKSwKKyAgY29sZ3JvdXA6IGNyZWF0ZURPTUZhY3Rv
cnkoJ2NvbGdyb3VwJyksCisgIGRhdGE6IGNyZWF0ZURPTUZhY3RvcnkoJ2RhdGEnKSwKKyAgZGF0
YWxpc3Q6IGNyZWF0ZURPTUZhY3RvcnkoJ2RhdGFsaXN0JyksCisgIGRkOiBjcmVhdGVET01GYWN0
b3J5KCdkZCcpLAorICBkZWw6IGNyZWF0ZURPTUZhY3RvcnkoJ2RlbCcpLAorICBkZXRhaWxzOiBj
cmVhdGVET01GYWN0b3J5KCdkZXRhaWxzJyksCisgIGRmbjogY3JlYXRlRE9NRmFjdG9yeSgnZGZu
JyksCisgIGRpYWxvZzogY3JlYXRlRE9NRmFjdG9yeSgnZGlhbG9nJyksCisgIGRpdjogY3JlYXRl
RE9NRmFjdG9yeSgnZGl2JyksCisgIGRsOiBjcmVhdGVET01GYWN0b3J5KCdkbCcpLAorICBkdDog
Y3JlYXRlRE9NRmFjdG9yeSgnZHQnKSwKKyAgZW06IGNyZWF0ZURPTUZhY3RvcnkoJ2VtJyksCisg
IGVtYmVkOiBjcmVhdGVET01GYWN0b3J5KCdlbWJlZCcpLAorICBmaWVsZHNldDogY3JlYXRlRE9N
RmFjdG9yeSgnZmllbGRzZXQnKSwKKyAgZmlnY2FwdGlvbjogY3JlYXRlRE9NRmFjdG9yeSgnZmln
Y2FwdGlvbicpLAorICBmaWd1cmU6IGNyZWF0ZURPTUZhY3RvcnkoJ2ZpZ3VyZScpLAorICBmb290
ZXI6IGNyZWF0ZURPTUZhY3RvcnkoJ2Zvb3RlcicpLAorICBmb3JtOiBjcmVhdGVET01GYWN0b3J5
KCdmb3JtJyksCisgIGgxOiBjcmVhdGVET01GYWN0b3J5KCdoMScpLAorICBoMjogY3JlYXRlRE9N
RmFjdG9yeSgnaDInKSwKKyAgaDM6IGNyZWF0ZURPTUZhY3RvcnkoJ2gzJyksCisgIGg0OiBjcmVh
dGVET01GYWN0b3J5KCdoNCcpLAorICBoNTogY3JlYXRlRE9NRmFjdG9yeSgnaDUnKSwKKyAgaDY6
IGNyZWF0ZURPTUZhY3RvcnkoJ2g2JyksCisgIGhlYWQ6IGNyZWF0ZURPTUZhY3RvcnkoJ2hlYWQn
KSwKKyAgaGVhZGVyOiBjcmVhdGVET01GYWN0b3J5KCdoZWFkZXInKSwKKyAgaGdyb3VwOiBjcmVh
dGVET01GYWN0b3J5KCdoZ3JvdXAnKSwKKyAgaHI6IGNyZWF0ZURPTUZhY3RvcnkoJ2hyJyksCisg
IGh0bWw6IGNyZWF0ZURPTUZhY3RvcnkoJ2h0bWwnKSwKKyAgaTogY3JlYXRlRE9NRmFjdG9yeSgn
aScpLAorICBpZnJhbWU6IGNyZWF0ZURPTUZhY3RvcnkoJ2lmcmFtZScpLAorICBpbWc6IGNyZWF0
ZURPTUZhY3RvcnkoJ2ltZycpLAorICBpbnB1dDogY3JlYXRlRE9NRmFjdG9yeSgnaW5wdXQnKSwK
KyAgaW5zOiBjcmVhdGVET01GYWN0b3J5KCdpbnMnKSwKKyAga2JkOiBjcmVhdGVET01GYWN0b3J5
KCdrYmQnKSwKKyAga2V5Z2VuOiBjcmVhdGVET01GYWN0b3J5KCdrZXlnZW4nKSwKKyAgbGFiZWw6
IGNyZWF0ZURPTUZhY3RvcnkoJ2xhYmVsJyksCisgIGxlZ2VuZDogY3JlYXRlRE9NRmFjdG9yeSgn
bGVnZW5kJyksCisgIGxpOiBjcmVhdGVET01GYWN0b3J5KCdsaScpLAorICBsaW5rOiBjcmVhdGVE
T01GYWN0b3J5KCdsaW5rJyksCisgIG1haW46IGNyZWF0ZURPTUZhY3RvcnkoJ21haW4nKSwKKyAg
bWFwOiBjcmVhdGVET01GYWN0b3J5KCdtYXAnKSwKKyAgbWFyazogY3JlYXRlRE9NRmFjdG9yeSgn
bWFyaycpLAorICBtZW51OiBjcmVhdGVET01GYWN0b3J5KCdtZW51JyksCisgIG1lbnVpdGVtOiBj
cmVhdGVET01GYWN0b3J5KCdtZW51aXRlbScpLAorICBtZXRhOiBjcmVhdGVET01GYWN0b3J5KCdt
ZXRhJyksCisgIG1ldGVyOiBjcmVhdGVET01GYWN0b3J5KCdtZXRlcicpLAorICBuYXY6IGNyZWF0
ZURPTUZhY3RvcnkoJ25hdicpLAorICBub3NjcmlwdDogY3JlYXRlRE9NRmFjdG9yeSgnbm9zY3Jp
cHQnKSwKKyAgb2JqZWN0OiBjcmVhdGVET01GYWN0b3J5KCdvYmplY3QnKSwKKyAgb2w6IGNyZWF0
ZURPTUZhY3RvcnkoJ29sJyksCisgIG9wdGdyb3VwOiBjcmVhdGVET01GYWN0b3J5KCdvcHRncm91
cCcpLAorICBvcHRpb246IGNyZWF0ZURPTUZhY3RvcnkoJ29wdGlvbicpLAorICBvdXRwdXQ6IGNy
ZWF0ZURPTUZhY3RvcnkoJ291dHB1dCcpLAorICBwOiBjcmVhdGVET01GYWN0b3J5KCdwJyksCisg
IHBhcmFtOiBjcmVhdGVET01GYWN0b3J5KCdwYXJhbScpLAorICBwaWN0dXJlOiBjcmVhdGVET01G
YWN0b3J5KCdwaWN0dXJlJyksCisgIHByZTogY3JlYXRlRE9NRmFjdG9yeSgncHJlJyksCisgIHBy
b2dyZXNzOiBjcmVhdGVET01GYWN0b3J5KCdwcm9ncmVzcycpLAorICBxOiBjcmVhdGVET01GYWN0
b3J5KCdxJyksCisgIHJwOiBjcmVhdGVET01GYWN0b3J5KCdycCcpLAorICBydDogY3JlYXRlRE9N
RmFjdG9yeSgncnQnKSwKKyAgcnVieTogY3JlYXRlRE9NRmFjdG9yeSgncnVieScpLAorICBzOiBj
cmVhdGVET01GYWN0b3J5KCdzJyksCisgIHNhbXA6IGNyZWF0ZURPTUZhY3RvcnkoJ3NhbXAnKSwK
KyAgc2NyaXB0OiBjcmVhdGVET01GYWN0b3J5KCdzY3JpcHQnKSwKKyAgc2VjdGlvbjogY3JlYXRl
RE9NRmFjdG9yeSgnc2VjdGlvbicpLAorICBzZWxlY3Q6IGNyZWF0ZURPTUZhY3RvcnkoJ3NlbGVj
dCcpLAorICBzbWFsbDogY3JlYXRlRE9NRmFjdG9yeSgnc21hbGwnKSwKKyAgc291cmNlOiBjcmVh
dGVET01GYWN0b3J5KCdzb3VyY2UnKSwKKyAgc3BhbjogY3JlYXRlRE9NRmFjdG9yeSgnc3Bhbicp
LAorICBzdHJvbmc6IGNyZWF0ZURPTUZhY3RvcnkoJ3N0cm9uZycpLAorICBzdHlsZTogY3JlYXRl
RE9NRmFjdG9yeSgnc3R5bGUnKSwKKyAgc3ViOiBjcmVhdGVET01GYWN0b3J5KCdzdWInKSwKKyAg
c3VtbWFyeTogY3JlYXRlRE9NRmFjdG9yeSgnc3VtbWFyeScpLAorICBzdXA6IGNyZWF0ZURPTUZh
Y3RvcnkoJ3N1cCcpLAorICB0YWJsZTogY3JlYXRlRE9NRmFjdG9yeSgndGFibGUnKSwKKyAgdGJv
ZHk6IGNyZWF0ZURPTUZhY3RvcnkoJ3Rib2R5JyksCisgIHRkOiBjcmVhdGVET01GYWN0b3J5KCd0
ZCcpLAorICB0ZXh0YXJlYTogY3JlYXRlRE9NRmFjdG9yeSgndGV4dGFyZWEnKSwKKyAgdGZvb3Q6
IGNyZWF0ZURPTUZhY3RvcnkoJ3Rmb290JyksCisgIHRoOiBjcmVhdGVET01GYWN0b3J5KCd0aCcp
LAorICB0aGVhZDogY3JlYXRlRE9NRmFjdG9yeSgndGhlYWQnKSwKKyAgdGltZTogY3JlYXRlRE9N
RmFjdG9yeSgndGltZScpLAorICB0aXRsZTogY3JlYXRlRE9NRmFjdG9yeSgndGl0bGUnKSwKKyAg
dHI6IGNyZWF0ZURPTUZhY3RvcnkoJ3RyJyksCisgIHRyYWNrOiBjcmVhdGVET01GYWN0b3J5KCd0
cmFjaycpLAorICB1OiBjcmVhdGVET01GYWN0b3J5KCd1JyksCisgIHVsOiBjcmVhdGVET01GYWN0
b3J5KCd1bCcpLAorICAndmFyJzogY3JlYXRlRE9NRmFjdG9yeSgndmFyJyksCisgIHZpZGVvOiBj
cmVhdGVET01GYWN0b3J5KCd2aWRlbycpLAorICB3YnI6IGNyZWF0ZURPTUZhY3RvcnkoJ3dicicp
LAorCisgIC8vIFNWRworICBjaXJjbGU6IGNyZWF0ZURPTUZhY3RvcnkoJ2NpcmNsZScpLAorICBj
bGlwUGF0aDogY3JlYXRlRE9NRmFjdG9yeSgnY2xpcFBhdGgnKSwKKyAgZGVmczogY3JlYXRlRE9N
RmFjdG9yeSgnZGVmcycpLAorICBlbGxpcHNlOiBjcmVhdGVET01GYWN0b3J5KCdlbGxpcHNlJyks
CisgIGc6IGNyZWF0ZURPTUZhY3RvcnkoJ2cnKSwKKyAgaW1hZ2U6IGNyZWF0ZURPTUZhY3Rvcnko
J2ltYWdlJyksCisgIGxpbmU6IGNyZWF0ZURPTUZhY3RvcnkoJ2xpbmUnKSwKKyAgbGluZWFyR3Jh
ZGllbnQ6IGNyZWF0ZURPTUZhY3RvcnkoJ2xpbmVhckdyYWRpZW50JyksCisgIG1hc2s6IGNyZWF0
ZURPTUZhY3RvcnkoJ21hc2snKSwKKyAgcGF0aDogY3JlYXRlRE9NRmFjdG9yeSgncGF0aCcpLAor
ICBwYXR0ZXJuOiBjcmVhdGVET01GYWN0b3J5KCdwYXR0ZXJuJyksCisgIHBvbHlnb246IGNyZWF0
ZURPTUZhY3RvcnkoJ3BvbHlnb24nKSwKKyAgcG9seWxpbmU6IGNyZWF0ZURPTUZhY3RvcnkoJ3Bv
bHlsaW5lJyksCisgIHJhZGlhbEdyYWRpZW50OiBjcmVhdGVET01GYWN0b3J5KCdyYWRpYWxHcmFk
aWVudCcpLAorICByZWN0OiBjcmVhdGVET01GYWN0b3J5KCdyZWN0JyksCisgIHN0b3A6IGNyZWF0
ZURPTUZhY3RvcnkoJ3N0b3AnKSwKKyAgc3ZnOiBjcmVhdGVET01GYWN0b3J5KCdzdmcnKSwKKyAg
dGV4dDogY3JlYXRlRE9NRmFjdG9yeSgndGV4dCcpLAorICB0c3BhbjogY3JlYXRlRE9NRmFjdG9y
eSgndHNwYW4nKQorfTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTUZhY3RvcmllczsKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9u
b2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0RWxlbWVudC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0
L25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RFbGVtZW50LmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3ZjRi
ZjAxYTEzNDUwZDMwMmY0MzA5NDE4YTIyY2Q2OWQxNmQwNjgKLS0tIC9kZXYvbnVsbAorKysgYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0RWxlbWVudC5qcwpA
QCAtMCwwICsxLDM0MCBAQAorLyoqCisgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50LCBGYWNlYm9v
aywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAq
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4g
QW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ug
c3RyaWN0JzsKKwordmFyIF9hc3NpZ24gPSByZXF1aXJlKCdvYmplY3QtYXNzaWduJyk7CisKK3Zh
ciBSZWFjdEN1cnJlbnRPd25lciA9IHJlcXVpcmUoJy4vUmVhY3RDdXJyZW50T3duZXInKTsKKwor
dmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7Cit2YXIgY2FuRGVmaW5l
UHJvcGVydHkgPSByZXF1aXJlKCcuL2NhbkRlZmluZVByb3BlcnR5Jyk7Cit2YXIgaGFzT3duUHJv
cGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5OworCit2YXIgUkVBQ1RfRUxF
TUVOVF9UWVBFID0gcmVxdWlyZSgnLi9SZWFjdEVsZW1lbnRTeW1ib2wnKTsKKwordmFyIFJFU0VS
VkVEX1BST1BTID0geworICBrZXk6IHRydWUsCisgIHJlZjogdHJ1ZSwKKyAgX19zZWxmOiB0cnVl
LAorICBfX3NvdXJjZTogdHJ1ZQorfTsKKwordmFyIHNwZWNpYWxQcm9wS2V5V2FybmluZ1Nob3du
LCBzcGVjaWFsUHJvcFJlZldhcm5pbmdTaG93bjsKKworZnVuY3Rpb24gaGFzVmFsaWRSZWYoY29u
ZmlnKSB7CisgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7Cisg
ICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoY29uZmlnLCAncmVmJykpIHsKKyAgICAgIHZhciBn
ZXR0ZXIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGNvbmZpZywgJ3JlZicpLmdl
dDsKKyAgICAgIGlmIChnZXR0ZXIgJiYgZ2V0dGVyLmlzUmVhY3RXYXJuaW5nKSB7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgIH0KKyAgICB9CisgIH0KKyAgcmV0dXJuIGNvbmZpZy5yZWYg
IT09IHVuZGVmaW5lZDsKK30KKworZnVuY3Rpb24gaGFzVmFsaWRLZXkoY29uZmlnKSB7CisgIGlm
IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgaWYgKGhhc093
blByb3BlcnR5LmNhbGwoY29uZmlnLCAna2V5JykpIHsKKyAgICAgIHZhciBnZXR0ZXIgPSBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGNvbmZpZywgJ2tleScpLmdldDsKKyAgICAgIGlm
IChnZXR0ZXIgJiYgZ2V0dGVyLmlzUmVhY3RXYXJuaW5nKSB7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgIH0KKyAgICB9CisgIH0KKyAgcmV0dXJuIGNvbmZpZy5rZXkgIT09IHVuZGVmaW5l
ZDsKK30KKworZnVuY3Rpb24gZGVmaW5lS2V5UHJvcFdhcm5pbmdHZXR0ZXIocHJvcHMsIGRpc3Bs
YXlOYW1lKSB7CisgIHZhciB3YXJuQWJvdXRBY2Nlc3NpbmdLZXkgPSBmdW5jdGlvbiAoKSB7Cisg
ICAgaWYgKCFzcGVjaWFsUHJvcEtleVdhcm5pbmdTaG93bikgeworICAgICAgc3BlY2lhbFByb3BL
ZXlXYXJuaW5nU2hvd24gPSB0cnVlOworICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICclczogYGtleWAgaXMgbm90IGEgcHJvcC4gVHJ5
aW5nIHRvIGFjY2VzcyBpdCB3aWxsIHJlc3VsdCAnICsgJ2luIGB1bmRlZmluZWRgIGJlaW5nIHJl
dHVybmVkLiBJZiB5b3UgbmVlZCB0byBhY2Nlc3MgdGhlIHNhbWUgJyArICd2YWx1ZSB3aXRoaW4g
dGhlIGNoaWxkIGNvbXBvbmVudCwgeW91IHNob3VsZCBwYXNzIGl0IGFzIGEgZGlmZmVyZW50ICcg
KyAncHJvcC4gKGh0dHBzOi8vZmIubWUvcmVhY3Qtc3BlY2lhbC1wcm9wcyknLCBkaXNwbGF5TmFt
ZSkgOiB2b2lkIDA7CisgICAgfQorICB9OworICB3YXJuQWJvdXRBY2Nlc3NpbmdLZXkuaXNSZWFj
dFdhcm5pbmcgPSB0cnVlOworICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvcHMsICdrZXknLCB7
CisgICAgZ2V0OiB3YXJuQWJvdXRBY2Nlc3NpbmdLZXksCisgICAgY29uZmlndXJhYmxlOiB0cnVl
CisgIH0pOworfQorCitmdW5jdGlvbiBkZWZpbmVSZWZQcm9wV2FybmluZ0dldHRlcihwcm9wcywg
ZGlzcGxheU5hbWUpIHsKKyAgdmFyIHdhcm5BYm91dEFjY2Vzc2luZ1JlZiA9IGZ1bmN0aW9uICgp
IHsKKyAgICBpZiAoIXNwZWNpYWxQcm9wUmVmV2FybmluZ1Nob3duKSB7CisgICAgICBzcGVjaWFs
UHJvcFJlZldhcm5pbmdTaG93biA9IHRydWU7CisgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAh
PT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJyVzOiBgcmVmYCBpcyBub3QgYSBwcm9w
LiBUcnlpbmcgdG8gYWNjZXNzIGl0IHdpbGwgcmVzdWx0ICcgKyAnaW4gYHVuZGVmaW5lZGAgYmVp
bmcgcmV0dXJuZWQuIElmIHlvdSBuZWVkIHRvIGFjY2VzcyB0aGUgc2FtZSAnICsgJ3ZhbHVlIHdp
dGhpbiB0aGUgY2hpbGQgY29tcG9uZW50LCB5b3Ugc2hvdWxkIHBhc3MgaXQgYXMgYSBkaWZmZXJl
bnQgJyArICdwcm9wLiAoaHR0cHM6Ly9mYi5tZS9yZWFjdC1zcGVjaWFsLXByb3BzKScsIGRpc3Bs
YXlOYW1lKSA6IHZvaWQgMDsKKyAgICB9CisgIH07CisgIHdhcm5BYm91dEFjY2Vzc2luZ1JlZi5p
c1JlYWN0V2FybmluZyA9IHRydWU7CisgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9wcywgJ3Jl
ZicsIHsKKyAgICBnZXQ6IHdhcm5BYm91dEFjY2Vzc2luZ1JlZiwKKyAgICBjb25maWd1cmFibGU6
IHRydWUKKyAgfSk7Cit9CisKKy8qKgorICogRmFjdG9yeSBtZXRob2QgdG8gY3JlYXRlIGEgbmV3
IFJlYWN0IGVsZW1lbnQuIFRoaXMgbm8gbG9uZ2VyIGFkaGVyZXMgdG8KKyAqIHRoZSBjbGFzcyBw
YXR0ZXJuLCBzbyBkbyBub3QgdXNlIG5ldyB0byBjYWxsIGl0LiBBbHNvLCBubyBpbnN0YW5jZW9m
IGNoZWNrCisgKiB3aWxsIHdvcmsuIEluc3RlYWQgdGVzdCAkJHR5cGVvZiBmaWVsZCBhZ2FpbnN0
IFN5bWJvbC5mb3IoJ3JlYWN0LmVsZW1lbnQnKSB0byBjaGVjaworICogaWYgc29tZXRoaW5nIGlz
IGEgUmVhY3QgRWxlbWVudC4KKyAqCisgKiBAcGFyYW0geyp9IHR5cGUKKyAqIEBwYXJhbSB7Kn0g
a2V5CisgKiBAcGFyYW0ge3N0cmluZ3xvYmplY3R9IHJlZgorICogQHBhcmFtIHsqfSBzZWxmIEEg
KnRlbXBvcmFyeSogaGVscGVyIHRvIGRldGVjdCBwbGFjZXMgd2hlcmUgYHRoaXNgIGlzCisgKiBk
aWZmZXJlbnQgZnJvbSB0aGUgYG93bmVyYCB3aGVuIFJlYWN0LmNyZWF0ZUVsZW1lbnQgaXMgY2Fs
bGVkLCBzbyB0aGF0IHdlCisgKiBjYW4gd2Fybi4gV2Ugd2FudCB0byBnZXQgcmlkIG9mIG93bmVy
IGFuZCByZXBsYWNlIHN0cmluZyBgcmVmYHMgd2l0aCBhcnJvdworICogZnVuY3Rpb25zLCBhbmQg
YXMgbG9uZyBhcyBgdGhpc2AgYW5kIG93bmVyIGFyZSB0aGUgc2FtZSwgdGhlcmUgd2lsbCBiZSBu
bworICogY2hhbmdlIGluIGJlaGF2aW9yLgorICogQHBhcmFtIHsqfSBzb3VyY2UgQW4gYW5ub3Rh
dGlvbiBvYmplY3QgKGFkZGVkIGJ5IGEgdHJhbnNwaWxlciBvciBvdGhlcndpc2UpCisgKiBpbmRp
Y2F0aW5nIGZpbGVuYW1lLCBsaW5lIG51bWJlciwgYW5kL29yIG90aGVyIGluZm9ybWF0aW9uLgor
ICogQHBhcmFtIHsqfSBvd25lcgorICogQHBhcmFtIHsqfSBwcm9wcworICogQGludGVybmFsCisg
Ki8KK3ZhciBSZWFjdEVsZW1lbnQgPSBmdW5jdGlvbiAodHlwZSwga2V5LCByZWYsIHNlbGYsIHNv
dXJjZSwgb3duZXIsIHByb3BzKSB7CisgIHZhciBlbGVtZW50ID0geworICAgIC8vIFRoaXMgdGFn
IGFsbG93IHVzIHRvIHVuaXF1ZWx5IGlkZW50aWZ5IHRoaXMgYXMgYSBSZWFjdCBFbGVtZW50Cisg
ICAgJCR0eXBlb2Y6IFJFQUNUX0VMRU1FTlRfVFlQRSwKKworICAgIC8vIEJ1aWx0LWluIHByb3Bl
cnRpZXMgdGhhdCBiZWxvbmcgb24gdGhlIGVsZW1lbnQKKyAgICB0eXBlOiB0eXBlLAorICAgIGtl
eToga2V5LAorICAgIHJlZjogcmVmLAorICAgIHByb3BzOiBwcm9wcywKKworICAgIC8vIFJlY29y
ZCB0aGUgY29tcG9uZW50IHJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyB0aGlzIGVsZW1lbnQuCisg
ICAgX293bmVyOiBvd25lcgorICB9OworCisgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0g
J3Byb2R1Y3Rpb24nKSB7CisgICAgLy8gVGhlIHZhbGlkYXRpb24gZmxhZyBpcyBjdXJyZW50bHkg
bXV0YXRpdmUuIFdlIHB1dCBpdCBvbgorICAgIC8vIGFuIGV4dGVybmFsIGJhY2tpbmcgc3RvcmUg
c28gdGhhdCB3ZSBjYW4gZnJlZXplIHRoZSB3aG9sZSBvYmplY3QuCisgICAgLy8gVGhpcyBjYW4g
YmUgcmVwbGFjZWQgd2l0aCBhIFdlYWtNYXAgb25jZSB0aGV5IGFyZSBpbXBsZW1lbnRlZCBpbgor
ICAgIC8vIGNvbW1vbmx5IHVzZWQgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnRzLgorICAgIGVsZW1l
bnQuX3N0b3JlID0ge307CisKKyAgICAvLyBUbyBtYWtlIGNvbXBhcmluZyBSZWFjdEVsZW1lbnRz
IGVhc2llciBmb3IgdGVzdGluZyBwdXJwb3Nlcywgd2UgbWFrZQorICAgIC8vIHRoZSB2YWxpZGF0
aW9uIGZsYWcgbm9uLWVudW1lcmFibGUgKHdoZXJlIHBvc3NpYmxlLCB3aGljaCBzaG91bGQKKyAg
ICAvLyBpbmNsdWRlIGV2ZXJ5IGVudmlyb25tZW50IHdlIHJ1biB0ZXN0cyBpbiksIHNvIHRoZSB0
ZXN0IGZyYW1ld29yaworICAgIC8vIGlnbm9yZXMgaXQuCisgICAgaWYgKGNhbkRlZmluZVByb3Bl
cnR5KSB7CisgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlbWVudC5fc3RvcmUsICd2YWxp
ZGF0ZWQnLCB7CisgICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsCisgICAgICAgIGVudW1lcmFi
bGU6IGZhbHNlLAorICAgICAgICB3cml0YWJsZTogdHJ1ZSwKKyAgICAgICAgdmFsdWU6IGZhbHNl
CisgICAgICB9KTsKKyAgICAgIC8vIHNlbGYgYW5kIHNvdXJjZSBhcmUgREVWIG9ubHkgcHJvcGVy
dGllcy4KKyAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlbGVtZW50LCAnX3NlbGYnLCB7Cisg
ICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsCisgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLAor
ICAgICAgICB3cml0YWJsZTogZmFsc2UsCisgICAgICAgIHZhbHVlOiBzZWxmCisgICAgICB9KTsK
KyAgICAgIC8vIFR3byBlbGVtZW50cyBjcmVhdGVkIGluIHR3byBkaWZmZXJlbnQgcGxhY2VzIHNo
b3VsZCBiZSBjb25zaWRlcmVkCisgICAgICAvLyBlcXVhbCBmb3IgdGVzdGluZyBwdXJwb3NlcyBh
bmQgdGhlcmVmb3JlIHdlIGhpZGUgaXQgZnJvbSBlbnVtZXJhdGlvbi4KKyAgICAgIE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eShlbGVtZW50LCAnX3NvdXJjZScsIHsKKyAgICAgICAgY29uZmlndXJhYmxl
OiBmYWxzZSwKKyAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsCisgICAgICAgIHdyaXRhYmxlOiBm
YWxzZSwKKyAgICAgICAgdmFsdWU6IHNvdXJjZQorICAgICAgfSk7CisgICAgfSBlbHNlIHsKKyAg
ICAgIGVsZW1lbnQuX3N0b3JlLnZhbGlkYXRlZCA9IGZhbHNlOworICAgICAgZWxlbWVudC5fc2Vs
ZiA9IHNlbGY7CisgICAgICBlbGVtZW50Ll9zb3VyY2UgPSBzb3VyY2U7CisgICAgfQorICAgIGlm
IChPYmplY3QuZnJlZXplKSB7CisgICAgICBPYmplY3QuZnJlZXplKGVsZW1lbnQucHJvcHMpOwor
ICAgICAgT2JqZWN0LmZyZWV6ZShlbGVtZW50KTsKKyAgICB9CisgIH0KKworICByZXR1cm4gZWxl
bWVudDsKK307CisKKy8qKgorICogQ3JlYXRlIGFuZCByZXR1cm4gYSBuZXcgUmVhY3RFbGVtZW50
IG9mIHRoZSBnaXZlbiB0eXBlLgorICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3Jl
YWN0L2RvY3MvdG9wLWxldmVsLWFwaS5odG1sI3JlYWN0LmNyZWF0ZWVsZW1lbnQKKyAqLworUmVh
Y3RFbGVtZW50LmNyZWF0ZUVsZW1lbnQgPSBmdW5jdGlvbiAodHlwZSwgY29uZmlnLCBjaGlsZHJl
bikgeworICB2YXIgcHJvcE5hbWU7CisKKyAgLy8gUmVzZXJ2ZWQgbmFtZXMgYXJlIGV4dHJhY3Rl
ZAorICB2YXIgcHJvcHMgPSB7fTsKKworICB2YXIga2V5ID0gbnVsbDsKKyAgdmFyIHJlZiA9IG51
bGw7CisgIHZhciBzZWxmID0gbnVsbDsKKyAgdmFyIHNvdXJjZSA9IG51bGw7CisKKyAgaWYgKGNv
bmZpZyAhPSBudWxsKSB7CisgICAgaWYgKGhhc1ZhbGlkUmVmKGNvbmZpZykpIHsKKyAgICAgIHJl
ZiA9IGNvbmZpZy5yZWY7CisgICAgfQorICAgIGlmIChoYXNWYWxpZEtleShjb25maWcpKSB7Cisg
ICAgICBrZXkgPSAnJyArIGNvbmZpZy5rZXk7CisgICAgfQorCisgICAgc2VsZiA9IGNvbmZpZy5f
X3NlbGYgPT09IHVuZGVmaW5lZCA/IG51bGwgOiBjb25maWcuX19zZWxmOworICAgIHNvdXJjZSA9
IGNvbmZpZy5fX3NvdXJjZSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IGNvbmZpZy5fX3NvdXJjZTsK
KyAgICAvLyBSZW1haW5pbmcgcHJvcGVydGllcyBhcmUgYWRkZWQgdG8gYSBuZXcgcHJvcHMgb2Jq
ZWN0CisgICAgZm9yIChwcm9wTmFtZSBpbiBjb25maWcpIHsKKyAgICAgIGlmIChoYXNPd25Qcm9w
ZXJ0eS5jYWxsKGNvbmZpZywgcHJvcE5hbWUpICYmICFSRVNFUlZFRF9QUk9QUy5oYXNPd25Qcm9w
ZXJ0eShwcm9wTmFtZSkpIHsKKyAgICAgICAgcHJvcHNbcHJvcE5hbWVdID0gY29uZmlnW3Byb3BO
YW1lXTsKKyAgICAgIH0KKyAgICB9CisgIH0KKworICAvLyBDaGlsZHJlbiBjYW4gYmUgbW9yZSB0
aGFuIG9uZSBhcmd1bWVudCwgYW5kIHRob3NlIGFyZSB0cmFuc2ZlcnJlZCBvbnRvCisgIC8vIHRo
ZSBuZXdseSBhbGxvY2F0ZWQgcHJvcHMgb2JqZWN0LgorICB2YXIgY2hpbGRyZW5MZW5ndGggPSBh
cmd1bWVudHMubGVuZ3RoIC0gMjsKKyAgaWYgKGNoaWxkcmVuTGVuZ3RoID09PSAxKSB7CisgICAg
cHJvcHMuY2hpbGRyZW4gPSBjaGlsZHJlbjsKKyAgfSBlbHNlIGlmIChjaGlsZHJlbkxlbmd0aCA+
IDEpIHsKKyAgICB2YXIgY2hpbGRBcnJheSA9IEFycmF5KGNoaWxkcmVuTGVuZ3RoKTsKKyAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuTGVuZ3RoOyBpKyspIHsKKyAgICAgIGNoaWxkQXJy
YXlbaV0gPSBhcmd1bWVudHNbaSArIDJdOworICAgIH0KKyAgICBpZiAocHJvY2Vzcy5lbnYuTk9E
RV9FTlYgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgaWYgKE9iamVjdC5mcmVlemUpIHsKKyAg
ICAgICAgT2JqZWN0LmZyZWV6ZShjaGlsZEFycmF5KTsKKyAgICAgIH0KKyAgICB9CisgICAgcHJv
cHMuY2hpbGRyZW4gPSBjaGlsZEFycmF5OworICB9CisKKyAgLy8gUmVzb2x2ZSBkZWZhdWx0IHBy
b3BzCisgIGlmICh0eXBlICYmIHR5cGUuZGVmYXVsdFByb3BzKSB7CisgICAgdmFyIGRlZmF1bHRQ
cm9wcyA9IHR5cGUuZGVmYXVsdFByb3BzOworICAgIGZvciAocHJvcE5hbWUgaW4gZGVmYXVsdFBy
b3BzKSB7CisgICAgICBpZiAocHJvcHNbcHJvcE5hbWVdID09PSB1bmRlZmluZWQpIHsKKyAgICAg
ICAgcHJvcHNbcHJvcE5hbWVdID0gZGVmYXVsdFByb3BzW3Byb3BOYW1lXTsKKyAgICAgIH0KKyAg
ICB9CisgIH0KKyAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHsK
KyAgICBpZiAoa2V5IHx8IHJlZikgeworICAgICAgaWYgKHR5cGVvZiBwcm9wcy4kJHR5cGVvZiA9
PT0gJ3VuZGVmaW5lZCcgfHwgcHJvcHMuJCR0eXBlb2YgIT09IFJFQUNUX0VMRU1FTlRfVFlQRSkg
eworICAgICAgICB2YXIgZGlzcGxheU5hbWUgPSB0eXBlb2YgdHlwZSA9PT0gJ2Z1bmN0aW9uJyA/
IHR5cGUuZGlzcGxheU5hbWUgfHwgdHlwZS5uYW1lIHx8ICdVbmtub3duJyA6IHR5cGU7CisgICAg
ICAgIGlmIChrZXkpIHsKKyAgICAgICAgICBkZWZpbmVLZXlQcm9wV2FybmluZ0dldHRlcihwcm9w
cywgZGlzcGxheU5hbWUpOworICAgICAgICB9CisgICAgICAgIGlmIChyZWYpIHsKKyAgICAgICAg
ICBkZWZpbmVSZWZQcm9wV2FybmluZ0dldHRlcihwcm9wcywgZGlzcGxheU5hbWUpOworICAgICAg
ICB9CisgICAgICB9CisgICAgfQorICB9CisgIHJldHVybiBSZWFjdEVsZW1lbnQodHlwZSwga2V5
LCByZWYsIHNlbGYsIHNvdXJjZSwgUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCwgcHJvcHMpOwor
fTsKKworLyoqCisgKiBSZXR1cm4gYSBmdW5jdGlvbiB0aGF0IHByb2R1Y2VzIFJlYWN0RWxlbWVu
dHMgb2YgYSBnaXZlbiB0eXBlLgorICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3Jl
YWN0L2RvY3MvdG9wLWxldmVsLWFwaS5odG1sI3JlYWN0LmNyZWF0ZWZhY3RvcnkKKyAqLworUmVh
Y3RFbGVtZW50LmNyZWF0ZUZhY3RvcnkgPSBmdW5jdGlvbiAodHlwZSkgeworICB2YXIgZmFjdG9y
eSA9IFJlYWN0RWxlbWVudC5jcmVhdGVFbGVtZW50LmJpbmQobnVsbCwgdHlwZSk7CisgIC8vIEV4
cG9zZSB0aGUgdHlwZSBvbiB0aGUgZmFjdG9yeSBhbmQgdGhlIHByb3RvdHlwZSBzbyB0aGF0IGl0
IGNhbiBiZQorICAvLyBlYXNpbHkgYWNjZXNzZWQgb24gZWxlbWVudHMuIEUuZy4gYDxGb28gLz4u
dHlwZSA9PT0gRm9vYC4KKyAgLy8gVGhpcyBzaG91bGQgbm90IGJlIG5hbWVkIGBjb25zdHJ1Y3Rv
cmAgc2luY2UgdGhpcyBtYXkgbm90IGJlIHRoZSBmdW5jdGlvbgorICAvLyB0aGF0IGNyZWF0ZWQg
dGhlIGVsZW1lbnQsIGFuZCBpdCBtYXkgbm90IGV2ZW4gYmUgYSBjb25zdHJ1Y3Rvci4KKyAgLy8g
TGVnYWN5IGhvb2sgVE9ETzogV2FybiBpZiB0aGlzIGlzIGFjY2Vzc2VkCisgIGZhY3RvcnkudHlw
ZSA9IHR5cGU7CisgIHJldHVybiBmYWN0b3J5OworfTsKKworUmVhY3RFbGVtZW50LmNsb25lQW5k
UmVwbGFjZUtleSA9IGZ1bmN0aW9uIChvbGRFbGVtZW50LCBuZXdLZXkpIHsKKyAgdmFyIG5ld0Vs
ZW1lbnQgPSBSZWFjdEVsZW1lbnQob2xkRWxlbWVudC50eXBlLCBuZXdLZXksIG9sZEVsZW1lbnQu
cmVmLCBvbGRFbGVtZW50Ll9zZWxmLCBvbGRFbGVtZW50Ll9zb3VyY2UsIG9sZEVsZW1lbnQuX293
bmVyLCBvbGRFbGVtZW50LnByb3BzKTsKKworICByZXR1cm4gbmV3RWxlbWVudDsKK307CisKKy8q
KgorICogQ2xvbmUgYW5kIHJldHVybiBhIG5ldyBSZWFjdEVsZW1lbnQgdXNpbmcgZWxlbWVudCBh
cyB0aGUgc3RhcnRpbmcgcG9pbnQuCisgKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8v
cmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3QuY2xvbmVlbGVtZW50CisgKi8KK1Jl
YWN0RWxlbWVudC5jbG9uZUVsZW1lbnQgPSBmdW5jdGlvbiAoZWxlbWVudCwgY29uZmlnLCBjaGls
ZHJlbikgeworICB2YXIgcHJvcE5hbWU7CisKKyAgLy8gT3JpZ2luYWwgcHJvcHMgYXJlIGNvcGll
ZAorICB2YXIgcHJvcHMgPSBfYXNzaWduKHt9LCBlbGVtZW50LnByb3BzKTsKKworICAvLyBSZXNl
cnZlZCBuYW1lcyBhcmUgZXh0cmFjdGVkCisgIHZhciBrZXkgPSBlbGVtZW50LmtleTsKKyAgdmFy
IHJlZiA9IGVsZW1lbnQucmVmOworICAvLyBTZWxmIGlzIHByZXNlcnZlZCBzaW5jZSB0aGUgb3du
ZXIgaXMgcHJlc2VydmVkLgorICB2YXIgc2VsZiA9IGVsZW1lbnQuX3NlbGY7CisgIC8vIFNvdXJj
ZSBpcyBwcmVzZXJ2ZWQgc2luY2UgY2xvbmVFbGVtZW50IGlzIHVubGlrZWx5IHRvIGJlIHRhcmdl
dGVkIGJ5IGEKKyAgLy8gdHJhbnNwaWxlciwgYW5kIHRoZSBvcmlnaW5hbCBzb3VyY2UgaXMgcHJv
YmFibHkgYSBiZXR0ZXIgaW5kaWNhdG9yIG9mIHRoZQorICAvLyB0cnVlIG93bmVyLgorICB2YXIg
c291cmNlID0gZWxlbWVudC5fc291cmNlOworCisgIC8vIE93bmVyIHdpbGwgYmUgcHJlc2VydmVk
LCB1bmxlc3MgcmVmIGlzIG92ZXJyaWRkZW4KKyAgdmFyIG93bmVyID0gZWxlbWVudC5fb3duZXI7
CisKKyAgaWYgKGNvbmZpZyAhPSBudWxsKSB7CisgICAgaWYgKGhhc1ZhbGlkUmVmKGNvbmZpZykp
IHsKKyAgICAgIC8vIFNpbGVudGx5IHN0ZWFsIHRoZSByZWYgZnJvbSB0aGUgcGFyZW50LgorICAg
ICAgcmVmID0gY29uZmlnLnJlZjsKKyAgICAgIG93bmVyID0gUmVhY3RDdXJyZW50T3duZXIuY3Vy
cmVudDsKKyAgICB9CisgICAgaWYgKGhhc1ZhbGlkS2V5KGNvbmZpZykpIHsKKyAgICAgIGtleSA9
ICcnICsgY29uZmlnLmtleTsKKyAgICB9CisKKyAgICAvLyBSZW1haW5pbmcgcHJvcGVydGllcyBv
dmVycmlkZSBleGlzdGluZyBwcm9wcworICAgIHZhciBkZWZhdWx0UHJvcHM7CisgICAgaWYgKGVs
ZW1lbnQudHlwZSAmJiBlbGVtZW50LnR5cGUuZGVmYXVsdFByb3BzKSB7CisgICAgICBkZWZhdWx0
UHJvcHMgPSBlbGVtZW50LnR5cGUuZGVmYXVsdFByb3BzOworICAgIH0KKyAgICBmb3IgKHByb3BO
YW1lIGluIGNvbmZpZykgeworICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoY29uZmlnLCBw
cm9wTmFtZSkgJiYgIVJFU0VSVkVEX1BST1BTLmhhc093blByb3BlcnR5KHByb3BOYW1lKSkgewor
ICAgICAgICBpZiAoY29uZmlnW3Byb3BOYW1lXSA9PT0gdW5kZWZpbmVkICYmIGRlZmF1bHRQcm9w
cyAhPT0gdW5kZWZpbmVkKSB7CisgICAgICAgICAgLy8gUmVzb2x2ZSBkZWZhdWx0IHByb3BzCisg
ICAgICAgICAgcHJvcHNbcHJvcE5hbWVdID0gZGVmYXVsdFByb3BzW3Byb3BOYW1lXTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICBwcm9wc1twcm9wTmFtZV0gPSBjb25maWdbcHJvcE5hbWVd
OworICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9CisKKyAgLy8gQ2hpbGRyZW4gY2FuIGJl
IG1vcmUgdGhhbiBvbmUgYXJndW1lbnQsIGFuZCB0aG9zZSBhcmUgdHJhbnNmZXJyZWQgb250bwor
ICAvLyB0aGUgbmV3bHkgYWxsb2NhdGVkIHByb3BzIG9iamVjdC4KKyAgdmFyIGNoaWxkcmVuTGVu
Z3RoID0gYXJndW1lbnRzLmxlbmd0aCAtIDI7CisgIGlmIChjaGlsZHJlbkxlbmd0aCA9PT0gMSkg
eworICAgIHByb3BzLmNoaWxkcmVuID0gY2hpbGRyZW47CisgIH0gZWxzZSBpZiAoY2hpbGRyZW5M
ZW5ndGggPiAxKSB7CisgICAgdmFyIGNoaWxkQXJyYXkgPSBBcnJheShjaGlsZHJlbkxlbmd0aCk7
CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbkxlbmd0aDsgaSsrKSB7CisgICAgICBj
aGlsZEFycmF5W2ldID0gYXJndW1lbnRzW2kgKyAyXTsKKyAgICB9CisgICAgcHJvcHMuY2hpbGRy
ZW4gPSBjaGlsZEFycmF5OworICB9CisKKyAgcmV0dXJuIFJlYWN0RWxlbWVudChlbGVtZW50LnR5
cGUsIGtleSwgcmVmLCBzZWxmLCBzb3VyY2UsIG93bmVyLCBwcm9wcyk7Cit9OworCisvKioKKyAq
IFZlcmlmaWVzIHRoZSBvYmplY3QgaXMgYSBSZWFjdEVsZW1lbnQuCisgKiBTZWUgaHR0cHM6Ly9m
YWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3QuaXN2
YWxpZGVsZW1lbnQKKyAqIEBwYXJhbSB7P29iamVjdH0gb2JqZWN0CisgKiBAcmV0dXJuIHtib29s
ZWFufSBUcnVlIGlmIGBvYmplY3RgIGlzIGEgdmFsaWQgY29tcG9uZW50LgorICogQGZpbmFsCisg
Ki8KK1JlYWN0RWxlbWVudC5pc1ZhbGlkRWxlbWVudCA9IGZ1bmN0aW9uIChvYmplY3QpIHsKKyAg
cmV0dXJuIHR5cGVvZiBvYmplY3QgPT09ICdvYmplY3QnICYmIG9iamVjdCAhPT0gbnVsbCAmJiBv
YmplY3QuJCR0eXBlb2YgPT09IFJFQUNUX0VMRU1FTlRfVFlQRTsKK307CisKK21vZHVsZS5leHBv
cnRzID0gUmVhY3RFbGVtZW50OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RFbGVtZW50
U3ltYm9sLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFj
dEVsZW1lbnRTeW1ib2wuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzEzNzY1YjlkNGZlMzQwM2U5ZTA3N2RiZDBj
NzY2OGY5NTIxNDNhMAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVf
bW9kdWxlcy9yZWFjdC9saWIvUmVhY3RFbGVtZW50U3ltYm9sLmpzCkBAIC0wLDAgKzEsMTkgQEAK
Ky8qKgorICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRl
ciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3Jh
bnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUg
aW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIAorICovCisKKyd1c2Ugc3RyaWN0JzsKKwor
Ly8gVGhlIFN5bWJvbCB1c2VkIHRvIHRhZyB0aGUgUmVhY3RFbGVtZW50IHR5cGUuIElmIHRoZXJl
IGlzIG5vIG5hdGl2ZSBTeW1ib2wKKy8vIG5vciBwb2x5ZmlsbCwgdGhlbiBhIHBsYWluIG51bWJl
ciBpcyB1c2VkIGZvciBwZXJmb3JtYW5jZS4KKwordmFyIFJFQUNUX0VMRU1FTlRfVFlQRSA9IHR5
cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgU3ltYm9sWydmb3InXSAmJiBTeW1ib2xbJ2Zv
ciddKCdyZWFjdC5lbGVtZW50JykgfHwgMHhlYWM3OworCittb2R1bGUuZXhwb3J0cyA9IFJFQUNU
X0VMRU1FTlRfVFlQRTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0RWxlbWVudFR5cGUu
anMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0RWxlbWVu
dFR5cGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMmIyZTdiYmM5OGQwOTk2NzIxOTM3YzI5YmE2YWI4NmExNThh
MWQ2YQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9y
ZWFjdC9saWIvUmVhY3RFbGVtZW50VHlwZS5qcwpAQCAtMCwwICsxLDEyIEBACisvKioKKyAqIENv
cHlyaWdodCAyMDE2LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1z
dHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRp
cmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBw
YXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1l
IGRpcmVjdG9yeS4KKyAqCisgKiAKKyAqLworCisndXNlIHN0cmljdCc7ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVz
L3JlYWN0L2xpYi9SZWFjdEVsZW1lbnRWYWxpZGF0b3IuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9u
b2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0RWxlbWVudFZhbGlkYXRvci5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yZTIyMzk1MTMzNTA3YzY3NzlhOTNhNTk3ZGY1NTc5ZGFkMGY5Y2MyCi0tLSAvZGV2L251bGwK
KysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdEVsZW1l
bnRWYWxpZGF0b3IuanMKQEAgLTAsMCArMSwyMjYgQEAKKy8qKgorICogQ29weXJpZ2h0IDIwMTQt
cHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
VGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2Ug
Zm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRo
aXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMg
Y2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Lgor
ICoKKyAqLworCisvKioKKyAqIFJlYWN0RWxlbWVudFZhbGlkYXRvciBwcm92aWRlcyBhIHdyYXBw
ZXIgYXJvdW5kIGEgZWxlbWVudCBmYWN0b3J5CisgKiB3aGljaCB2YWxpZGF0ZXMgdGhlIHByb3Bz
IHBhc3NlZCB0byB0aGUgZWxlbWVudC4gVGhpcyBpcyBpbnRlbmRlZCB0byBiZQorICogdXNlZCBv
bmx5IGluIERFViBhbmQgY291bGQgYmUgcmVwbGFjZWQgYnkgYSBzdGF0aWMgdHlwZSBjaGVja2Vy
IGZvciBsYW5ndWFnZXMKKyAqIHRoYXQgc3VwcG9ydCBpdC4KKyAqLworCisndXNlIHN0cmljdCc7
CisKK3ZhciBSZWFjdEN1cnJlbnRPd25lciA9IHJlcXVpcmUoJy4vUmVhY3RDdXJyZW50T3duZXIn
KTsKK3ZhciBSZWFjdENvbXBvbmVudFRyZWVIb29rID0gcmVxdWlyZSgnLi9SZWFjdENvbXBvbmVu
dFRyZWVIb29rJyk7Cit2YXIgUmVhY3RFbGVtZW50ID0gcmVxdWlyZSgnLi9SZWFjdEVsZW1lbnQn
KTsKKwordmFyIGNoZWNrUmVhY3RUeXBlU3BlYyA9IHJlcXVpcmUoJy4vY2hlY2tSZWFjdFR5cGVT
cGVjJyk7CisKK3ZhciBjYW5EZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vY2FuRGVmaW5lUHJv
cGVydHknKTsKK3ZhciBnZXRJdGVyYXRvckZuID0gcmVxdWlyZSgnLi9nZXRJdGVyYXRvckZuJyk7
Cit2YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTsKKworZnVuY3Rpb24g
Z2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKCkgeworICBpZiAoUmVhY3RDdXJyZW50T3duZXIu
Y3VycmVudCkgeworICAgIHZhciBuYW1lID0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVudC5nZXRO
YW1lKCk7CisgICAgaWYgKG5hbWUpIHsKKyAgICAgIHJldHVybiAnIENoZWNrIHRoZSByZW5kZXIg
bWV0aG9kIG9mIGAnICsgbmFtZSArICdgLic7CisgICAgfQorICB9CisgIHJldHVybiAnJzsKK30K
KworLyoqCisgKiBXYXJuIGlmIHRoZXJlJ3Mgbm8ga2V5IGV4cGxpY2l0bHkgc2V0IG9uIGR5bmFt
aWMgYXJyYXlzIG9mIGNoaWxkcmVuIG9yCisgKiBvYmplY3Qga2V5cyBhcmUgbm90IHZhbGlkLiBU
aGlzIGFsbG93cyB1cyB0byBrZWVwIHRyYWNrIG9mIGNoaWxkcmVuIGJldHdlZW4KKyAqIHVwZGF0
ZXMuCisgKi8KK3ZhciBvd25lckhhc0tleVVzZVdhcm5pbmcgPSB7fTsKKworZnVuY3Rpb24gZ2V0
Q3VycmVudENvbXBvbmVudEVycm9ySW5mbyhwYXJlbnRUeXBlKSB7CisgIHZhciBpbmZvID0gZ2V0
RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKCk7CisKKyAgaWYgKCFpbmZvKSB7CisgICAgdmFyIHBh
cmVudE5hbWUgPSB0eXBlb2YgcGFyZW50VHlwZSA9PT0gJ3N0cmluZycgPyBwYXJlbnRUeXBlIDog
cGFyZW50VHlwZS5kaXNwbGF5TmFtZSB8fCBwYXJlbnRUeXBlLm5hbWU7CisgICAgaWYgKHBhcmVu
dE5hbWUpIHsKKyAgICAgIGluZm8gPSAnIENoZWNrIHRoZSB0b3AtbGV2ZWwgcmVuZGVyIGNhbGwg
dXNpbmcgPCcgKyBwYXJlbnROYW1lICsgJz4uJzsKKyAgICB9CisgIH0KKyAgcmV0dXJuIGluZm87
Cit9CisKKy8qKgorICogV2FybiBpZiB0aGUgZWxlbWVudCBkb2Vzbid0IGhhdmUgYW4gZXhwbGlj
aXQga2V5IGFzc2lnbmVkIHRvIGl0LgorICogVGhpcyBlbGVtZW50IGlzIGluIGFuIGFycmF5LiBU
aGUgYXJyYXkgY291bGQgZ3JvdyBhbmQgc2hyaW5rIG9yIGJlCisgKiByZW9yZGVyZWQuIEFsbCBj
aGlsZHJlbiB0aGF0IGhhdmVuJ3QgYWxyZWFkeSBiZWVuIHZhbGlkYXRlZCBhcmUgcmVxdWlyZWQg
dG8KKyAqIGhhdmUgYSAia2V5IiBwcm9wZXJ0eSBhc3NpZ25lZCB0byBpdC4gRXJyb3Igc3RhdHVz
ZXMgYXJlIGNhY2hlZCBzbyBhIHdhcm5pbmcKKyAqIHdpbGwgb25seSBiZSBzaG93biBvbmNlLgor
ICoKKyAqIEBpbnRlcm5hbAorICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IGVsZW1lbnQgRWxlbWVu
dCB0aGF0IHJlcXVpcmVzIGEga2V5LgorICogQHBhcmFtIHsqfSBwYXJlbnRUeXBlIGVsZW1lbnQn
cyBwYXJlbnQncyB0eXBlLgorICovCitmdW5jdGlvbiB2YWxpZGF0ZUV4cGxpY2l0S2V5KGVsZW1l
bnQsIHBhcmVudFR5cGUpIHsKKyAgaWYgKCFlbGVtZW50Ll9zdG9yZSB8fCBlbGVtZW50Ll9zdG9y
ZS52YWxpZGF0ZWQgfHwgZWxlbWVudC5rZXkgIT0gbnVsbCkgeworICAgIHJldHVybjsKKyAgfQor
ICBlbGVtZW50Ll9zdG9yZS52YWxpZGF0ZWQgPSB0cnVlOworCisgIHZhciBtZW1vaXplciA9IG93
bmVySGFzS2V5VXNlV2FybmluZy51bmlxdWVLZXkgfHwgKG93bmVySGFzS2V5VXNlV2FybmluZy51
bmlxdWVLZXkgPSB7fSk7CisKKyAgdmFyIGN1cnJlbnRDb21wb25lbnRFcnJvckluZm8gPSBnZXRD
dXJyZW50Q29tcG9uZW50RXJyb3JJbmZvKHBhcmVudFR5cGUpOworICBpZiAobWVtb2l6ZXJbY3Vy
cmVudENvbXBvbmVudEVycm9ySW5mb10pIHsKKyAgICByZXR1cm47CisgIH0KKyAgbWVtb2l6ZXJb
Y3VycmVudENvbXBvbmVudEVycm9ySW5mb10gPSB0cnVlOworCisgIC8vIFVzdWFsbHkgdGhlIGN1
cnJlbnQgb3duZXIgaXMgdGhlIG9mZmVuZGVyLCBidXQgaWYgaXQgYWNjZXB0cyBjaGlsZHJlbiBh
cyBhCisgIC8vIHByb3BlcnR5LCBpdCBtYXkgYmUgdGhlIGNyZWF0b3Igb2YgdGhlIGNoaWxkIHRo
YXQncyByZXNwb25zaWJsZSBmb3IKKyAgLy8gYXNzaWduaW5nIGl0IGEga2V5LgorICB2YXIgY2hp
bGRPd25lciA9ICcnOworICBpZiAoZWxlbWVudCAmJiBlbGVtZW50Ll9vd25lciAmJiBlbGVtZW50
Ll9vd25lciAhPT0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCkgeworICAgIC8vIEdpdmUgdGhl
IGNvbXBvbmVudCB0aGF0IG9yaWdpbmFsbHkgY3JlYXRlZCB0aGlzIGNoaWxkLgorICAgIGNoaWxk
T3duZXIgPSAnIEl0IHdhcyBwYXNzZWQgYSBjaGlsZCBmcm9tICcgKyBlbGVtZW50Ll9vd25lci5n
ZXROYW1lKCkgKyAnLic7CisgIH0KKworICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ0VhY2ggY2hpbGQgaW4gYW4gYXJyYXkgb3IgaXRlcmF0
b3Igc2hvdWxkIGhhdmUgYSB1bmlxdWUgImtleSIgcHJvcC4nICsgJyVzJXMgU2VlIGh0dHBzOi8v
ZmIubWUvcmVhY3Qtd2FybmluZy1rZXlzIGZvciBtb3JlIGluZm9ybWF0aW9uLiVzJywgY3VycmVu
dENvbXBvbmVudEVycm9ySW5mbywgY2hpbGRPd25lciwgUmVhY3RDb21wb25lbnRUcmVlSG9vay5n
ZXRDdXJyZW50U3RhY2tBZGRlbmR1bShlbGVtZW50KSkgOiB2b2lkIDA7Cit9CisKKy8qKgorICog
RW5zdXJlIHRoYXQgZXZlcnkgZWxlbWVudCBlaXRoZXIgaXMgcGFzc2VkIGluIGEgc3RhdGljIGxv
Y2F0aW9uLCBpbiBhbgorICogYXJyYXkgd2l0aCBhbiBleHBsaWNpdCBrZXlzIHByb3BlcnR5IGRl
ZmluZWQsIG9yIGluIGFuIG9iamVjdCBsaXRlcmFsCisgKiB3aXRoIHZhbGlkIGtleSBwcm9wZXJ0
eS4KKyAqCisgKiBAaW50ZXJuYWwKKyAqIEBwYXJhbSB7UmVhY3ROb2RlfSBub2RlIFN0YXRpY2Fs
bHkgcGFzc2VkIGNoaWxkIG9mIGFueSB0eXBlLgorICogQHBhcmFtIHsqfSBwYXJlbnRUeXBlIG5v
ZGUncyBwYXJlbnQncyB0eXBlLgorICovCitmdW5jdGlvbiB2YWxpZGF0ZUNoaWxkS2V5cyhub2Rl
LCBwYXJlbnRUeXBlKSB7CisgIGlmICh0eXBlb2Ygbm9kZSAhPT0gJ29iamVjdCcpIHsKKyAgICBy
ZXR1cm47CisgIH0KKyAgaWYgKEFycmF5LmlzQXJyYXkobm9kZSkpIHsKKyAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IG5vZGUubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciBjaGlsZCA9IG5vZGVbaV07
CisgICAgICBpZiAoUmVhY3RFbGVtZW50LmlzVmFsaWRFbGVtZW50KGNoaWxkKSkgeworICAgICAg
ICB2YWxpZGF0ZUV4cGxpY2l0S2V5KGNoaWxkLCBwYXJlbnRUeXBlKTsKKyAgICAgIH0KKyAgICB9
CisgIH0gZWxzZSBpZiAoUmVhY3RFbGVtZW50LmlzVmFsaWRFbGVtZW50KG5vZGUpKSB7CisgICAg
Ly8gVGhpcyBlbGVtZW50IHdhcyBwYXNzZWQgaW4gYSB2YWxpZCBsb2NhdGlvbi4KKyAgICBpZiAo
bm9kZS5fc3RvcmUpIHsKKyAgICAgIG5vZGUuX3N0b3JlLnZhbGlkYXRlZCA9IHRydWU7CisgICAg
fQorICB9IGVsc2UgaWYgKG5vZGUpIHsKKyAgICB2YXIgaXRlcmF0b3JGbiA9IGdldEl0ZXJhdG9y
Rm4obm9kZSk7CisgICAgLy8gRW50cnkgaXRlcmF0b3JzIHByb3ZpZGUgaW1wbGljaXQga2V5cy4K
KyAgICBpZiAoaXRlcmF0b3JGbikgeworICAgICAgaWYgKGl0ZXJhdG9yRm4gIT09IG5vZGUuZW50
cmllcykgeworICAgICAgICB2YXIgaXRlcmF0b3IgPSBpdGVyYXRvckZuLmNhbGwobm9kZSk7Cisg
ICAgICAgIHZhciBzdGVwOworICAgICAgICB3aGlsZSAoIShzdGVwID0gaXRlcmF0b3IubmV4dCgp
KS5kb25lKSB7CisgICAgICAgICAgaWYgKFJlYWN0RWxlbWVudC5pc1ZhbGlkRWxlbWVudChzdGVw
LnZhbHVlKSkgeworICAgICAgICAgICAgdmFsaWRhdGVFeHBsaWNpdEtleShzdGVwLnZhbHVlLCBw
YXJlbnRUeXBlKTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgIH0K
K30KKworLyoqCisgKiBHaXZlbiBhbiBlbGVtZW50LCB2YWxpZGF0ZSB0aGF0IGl0cyBwcm9wcyBm
b2xsb3cgdGhlIHByb3BUeXBlcyBkZWZpbml0aW9uLAorICogcHJvdmlkZWQgYnkgdGhlIHR5cGUu
CisgKgorICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IGVsZW1lbnQKKyAqLworZnVuY3Rpb24gdmFs
aWRhdGVQcm9wVHlwZXMoZWxlbWVudCkgeworICB2YXIgY29tcG9uZW50Q2xhc3MgPSBlbGVtZW50
LnR5cGU7CisgIGlmICh0eXBlb2YgY29tcG9uZW50Q2xhc3MgIT09ICdmdW5jdGlvbicpIHsKKyAg
ICByZXR1cm47CisgIH0KKyAgdmFyIG5hbWUgPSBjb21wb25lbnRDbGFzcy5kaXNwbGF5TmFtZSB8
fCBjb21wb25lbnRDbGFzcy5uYW1lOworICBpZiAoY29tcG9uZW50Q2xhc3MucHJvcFR5cGVzKSB7
CisgICAgY2hlY2tSZWFjdFR5cGVTcGVjKGNvbXBvbmVudENsYXNzLnByb3BUeXBlcywgZWxlbWVu
dC5wcm9wcywgJ3Byb3AnLCBuYW1lLCBlbGVtZW50LCBudWxsKTsKKyAgfQorICBpZiAodHlwZW9m
IGNvbXBvbmVudENsYXNzLmdldERlZmF1bHRQcm9wcyA9PT0gJ2Z1bmN0aW9uJykgeworICAgIHBy
b2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGNvbXBvbmVudENs
YXNzLmdldERlZmF1bHRQcm9wcy5pc1JlYWN0Q2xhc3NBcHByb3ZlZCwgJ2dldERlZmF1bHRQcm9w
cyBpcyBvbmx5IHVzZWQgb24gY2xhc3NpYyBSZWFjdC5jcmVhdGVDbGFzcyAnICsgJ2RlZmluaXRp
b25zLiBVc2UgYSBzdGF0aWMgcHJvcGVydHkgbmFtZWQgYGRlZmF1bHRQcm9wc2AgaW5zdGVhZC4n
KSA6IHZvaWQgMDsKKyAgfQorfQorCit2YXIgUmVhY3RFbGVtZW50VmFsaWRhdG9yID0geworCisg
IGNyZWF0ZUVsZW1lbnQ6IGZ1bmN0aW9uICh0eXBlLCBwcm9wcywgY2hpbGRyZW4pIHsKKyAgICB2
YXIgdmFsaWRUeXBlID0gdHlwZW9mIHR5cGUgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB0eXBlID09
PSAnZnVuY3Rpb24nOworICAgIC8vIFdlIHdhcm4gaW4gdGhpcyBjYXNlIGJ1dCBkb24ndCB0aHJv
dy4gV2UgZXhwZWN0IHRoZSBlbGVtZW50IGNyZWF0aW9uIHRvCisgICAgLy8gc3VjY2VlZCBhbmQg
dGhlcmUgd2lsbCBsaWtlbHkgYmUgZXJyb3JzIGluIHJlbmRlci4KKyAgICBpZiAoIXZhbGlkVHlw
ZSkgeworICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5p
bmcoZmFsc2UsICdSZWFjdC5jcmVhdGVFbGVtZW50OiB0eXBlIHNob3VsZCBub3QgYmUgbnVsbCwg
dW5kZWZpbmVkLCBib29sZWFuLCBvciAnICsgJ251bWJlci4gSXQgc2hvdWxkIGJlIGEgc3RyaW5n
IChmb3IgRE9NIGVsZW1lbnRzKSBvciBhIFJlYWN0Q2xhc3MgJyArICcoZm9yIGNvbXBvc2l0ZSBj
b21wb25lbnRzKS4lcycsIGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bSgpKSA6IHZvaWQgMDsK
KyAgICB9CisKKyAgICB2YXIgZWxlbWVudCA9IFJlYWN0RWxlbWVudC5jcmVhdGVFbGVtZW50LmFw
cGx5KHRoaXMsIGFyZ3VtZW50cyk7CisKKyAgICAvLyBUaGUgcmVzdWx0IGNhbiBiZSBudWxsaXNo
IGlmIGEgbW9jayBvciBhIGN1c3RvbSBmdW5jdGlvbiBpcyB1c2VkLgorICAgIC8vIFRPRE86IERy
b3AgdGhpcyB3aGVuIHRoZXNlIGFyZSBubyBsb25nZXIgYWxsb3dlZCBhcyB0aGUgdHlwZSBhcmd1
bWVudC4KKyAgICBpZiAoZWxlbWVudCA9PSBudWxsKSB7CisgICAgICByZXR1cm4gZWxlbWVudDsK
KyAgICB9CisKKyAgICAvLyBTa2lwIGtleSB3YXJuaW5nIGlmIHRoZSB0eXBlIGlzbid0IHZhbGlk
IHNpbmNlIG91ciBrZXkgdmFsaWRhdGlvbiBsb2dpYworICAgIC8vIGRvZXNuJ3QgZXhwZWN0IGEg
bm9uLXN0cmluZy9mdW5jdGlvbiB0eXBlIGFuZCBjYW4gdGhyb3cgY29uZnVzaW5nIGVycm9ycy4K
KyAgICAvLyBXZSBkb24ndCB3YW50IGV4Y2VwdGlvbiBiZWhhdmlvciB0byBkaWZmZXIgYmV0d2Vl
biBkZXYgYW5kIHByb2QuCisgICAgLy8gKFJlbmRlcmluZyB3aWxsIHRocm93IHdpdGggYSBoZWxw
ZnVsIG1lc3NhZ2UgYW5kIGFzIHNvb24gYXMgdGhlIHR5cGUgaXMKKyAgICAvLyBmaXhlZCwgdGhl
IGtleSB3YXJuaW5ncyB3aWxsIGFwcGVhci4pCisgICAgaWYgKHZhbGlkVHlwZSkgeworICAgICAg
Zm9yICh2YXIgaSA9IDI7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgdmFs
aWRhdGVDaGlsZEtleXMoYXJndW1lbnRzW2ldLCB0eXBlKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICB2YWxpZGF0ZVByb3BUeXBlcyhlbGVtZW50KTsKKworICAgIHJldHVybiBlbGVtZW50OworICB9
LAorCisgIGNyZWF0ZUZhY3Rvcnk6IGZ1bmN0aW9uICh0eXBlKSB7CisgICAgdmFyIHZhbGlkYXRl
ZEZhY3RvcnkgPSBSZWFjdEVsZW1lbnRWYWxpZGF0b3IuY3JlYXRlRWxlbWVudC5iaW5kKG51bGws
IHR5cGUpOworICAgIC8vIExlZ2FjeSBob29rIFRPRE86IFdhcm4gaWYgdGhpcyBpcyBhY2Nlc3Nl
ZAorICAgIHZhbGlkYXRlZEZhY3RvcnkudHlwZSA9IHR5cGU7CisKKyAgICBpZiAocHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgaWYgKGNhbkRlZmluZVByb3Bl
cnR5KSB7CisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh2YWxpZGF0ZWRGYWN0b3J5LCAn
dHlwZScsIHsKKyAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSwKKyAgICAgICAgICBnZXQ6IGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVj
dGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnRmFjdG9yeS50eXBlIGlzIGRlcHJlY2F0ZWQuIEFjY2Vz
cyB0aGUgY2xhc3MgZGlyZWN0bHkgJyArICdiZWZvcmUgcGFzc2luZyBpdCB0byBjcmVhdGVGYWN0
b3J5LicpIDogdm9pZCAwOworICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMs
ICd0eXBlJywgeworICAgICAgICAgICAgICB2YWx1ZTogdHlwZQorICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICByZXR1cm4gdHlwZTsKKyAgICAgICAgICB9CisgICAgICAgIH0pOworICAgICAg
fQorICAgIH0KKworICAgIHJldHVybiB2YWxpZGF0ZWRGYWN0b3J5OworICB9LAorCisgIGNsb25l
RWxlbWVudDogZnVuY3Rpb24gKGVsZW1lbnQsIHByb3BzLCBjaGlsZHJlbikgeworICAgIHZhciBu
ZXdFbGVtZW50ID0gUmVhY3RFbGVtZW50LmNsb25lRWxlbWVudC5hcHBseSh0aGlzLCBhcmd1bWVu
dHMpOworICAgIGZvciAodmFyIGkgPSAyOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICB2YWxpZGF0ZUNoaWxkS2V5cyhhcmd1bWVudHNbaV0sIG5ld0VsZW1lbnQudHlwZSk7Cisg
ICAgfQorICAgIHZhbGlkYXRlUHJvcFR5cGVzKG5ld0VsZW1lbnQpOworICAgIHJldHVybiBuZXdF
bGVtZW50OworICB9CisKK307CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RFbGVtZW50VmFsaWRh
dG9yOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RGcmFnbWVudC5qcyBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RGcmFnbWVudC5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iMzVjZWQyZDRlMDI4OWZlODgzNjU5ZDZkYmFlZDlkMDU4OTA1ZjA3Ci0tLSAvZGV2L251
bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdEZy
YWdtZW50LmpzCkBAIC0wLDAgKzEsNjggQEAKKy8qKgorICogQ29weXJpZ2h0IDIwMTUtcHJlc2Vu
dCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBz
b3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQg
aW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291
cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJl
IGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAq
LworCisndXNlIHN0cmljdCc7CisKK3ZhciBfcHJvZEludmFyaWFudCA9IHJlcXVpcmUoJy4vcmVh
Y3RQcm9kSW52YXJpYW50Jyk7CisKK3ZhciBSZWFjdENoaWxkcmVuID0gcmVxdWlyZSgnLi9SZWFj
dENoaWxkcmVuJyk7Cit2YXIgUmVhY3RFbGVtZW50ID0gcmVxdWlyZSgnLi9SZWFjdEVsZW1lbnQn
KTsKKwordmFyIGVtcHR5RnVuY3Rpb24gPSByZXF1aXJlKCdmYmpzL2xpYi9lbXB0eUZ1bmN0aW9u
Jyk7Cit2YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7Cit2YXIg
d2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTsKKworLyoqCisgKiBXZSB1c2Vk
IHRvIGFsbG93IGtleWVkIG9iamVjdHMgdG8gc2VydmUgYXMgYSBjb2xsZWN0aW9uIG9mIFJlYWN0
RWxlbWVudHMsCisgKiBvciBuZXN0ZWQgc2V0cy4gVGhpcyBhbGxvd2VkIHVzIGEgd2F5IHRvIGV4
cGxpY2l0bHkga2V5IGEgc2V0IG9yIGZyYWdtZW50IG9mCisgKiBjb21wb25lbnRzLiBUaGlzIGlz
IG5vdyBiZWluZyByZXBsYWNlZCB3aXRoIGFuIG9wYXF1ZSBkYXRhIHN0cnVjdHVyZS4KKyAqIFRo
ZSB1cGdyYWRlIHBhdGggaXMgdG8gY2FsbCBSZWFjdC5hZGRvbnMuY3JlYXRlRnJhZ21lbnQoeyBr
ZXk6IHZhbHVlIH0pIHRvCisgKiBjcmVhdGUgYSBrZXllZCBmcmFnbWVudC4gVGhlIHJlc3VsdGlu
ZyBkYXRhIHN0cnVjdHVyZSBpcyBhbiBhcnJheS4KKyAqLworCit2YXIgbnVtZXJpY1Byb3BlcnR5
UmVnZXggPSAvXlxkKyQvOworCit2YXIgd2FybmVkQWJvdXROdW1lcmljID0gZmFsc2U7CisKK3Zh
ciBSZWFjdEZyYWdtZW50ID0geworICAvKioKKyAgICogV3JhcCBhIGtleWVkIG9iamVjdCBpbiBh
biBvcGFxdWUgcHJveHkgdGhhdCB3YXJucyB5b3UgaWYgeW91IGFjY2VzcyBhbnkKKyAgICogb2Yg
aXRzIHByb3BlcnRpZXMuCisgICAqIFNlZSBodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFj
dC9kb2NzL2NyZWF0ZS1mcmFnbWVudC5odG1sCisgICAqLworICBjcmVhdGU6IGZ1bmN0aW9uIChv
YmplY3QpIHsKKyAgICBpZiAodHlwZW9mIG9iamVjdCAhPT0gJ29iamVjdCcgfHwgIW9iamVjdCB8
fCBBcnJheS5pc0FycmF5KG9iamVjdCkpIHsKKyAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9
PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnUmVhY3QuYWRkb25zLmNyZWF0ZUZyYWdt
ZW50IG9ubHkgYWNjZXB0cyBhIHNpbmdsZSBvYmplY3QuIEdvdDogJXMnLCBvYmplY3QpIDogdm9p
ZCAwOworICAgICAgcmV0dXJuIG9iamVjdDsKKyAgICB9CisgICAgaWYgKFJlYWN0RWxlbWVudC5p
c1ZhbGlkRWxlbWVudChvYmplY3QpKSB7CisgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0g
J3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1JlYWN0LmFkZG9ucy5jcmVhdGVGcmFnbWVu
dCBkb2VzIG5vdCBhY2NlcHQgYSBSZWFjdEVsZW1lbnQgJyArICd3aXRob3V0IGEgd3JhcHBlciBv
YmplY3QuJykgOiB2b2lkIDA7CisgICAgICByZXR1cm4gb2JqZWN0OworICAgIH0KKworICAgICEo
b2JqZWN0Lm5vZGVUeXBlICE9PSAxKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVj
dGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdC5hZGRvbnMuY3JlYXRlRnJhZ21lbnQoLi4u
KTogRW5jb3VudGVyZWQgYW4gaW52YWxpZCBjaGlsZDsgRE9NIGVsZW1lbnRzIGFyZSBub3QgdmFs
aWQgY2hpbGRyZW4gb2YgUmVhY3QgY29tcG9uZW50cy4nKSA6IF9wcm9kSW52YXJpYW50KCcwJykg
OiB2b2lkIDA7CisKKyAgICB2YXIgcmVzdWx0ID0gW107CisKKyAgICBmb3IgKHZhciBrZXkgaW4g
b2JqZWN0KSB7CisgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
JykgeworICAgICAgICBpZiAoIXdhcm5lZEFib3V0TnVtZXJpYyAmJiBudW1lcmljUHJvcGVydHlS
ZWdleC50ZXN0KGtleSkpIHsKKyAgICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3By
b2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1JlYWN0LmFkZG9ucy5jcmVhdGVGcmFnbWVudCgu
Li4pOiBDaGlsZCBvYmplY3RzIHNob3VsZCBoYXZlICcgKyAnbm9uLW51bWVyaWMga2V5cyBzbyBv
cmRlcmluZyBpcyBwcmVzZXJ2ZWQuJykgOiB2b2lkIDA7CisgICAgICAgICAgd2FybmVkQWJvdXRO
dW1lcmljID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgUmVhY3RDaGlsZHJlbi5t
YXBJbnRvV2l0aEtleVByZWZpeEludGVybmFsKG9iamVjdFtrZXldLCByZXN1bHQsIGtleSwgZW1w
dHlGdW5jdGlvbi50aGF0UmV0dXJuc0FyZ3VtZW50KTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVz
dWx0OworICB9Cit9OworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0RnJhZ21lbnQ7ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9t
b2R1bGVzL3JlYWN0L2xpYi9SZWFjdExpbmsuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21v
ZHVsZXMvcmVhY3QvbGliL1JlYWN0TGluay5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMGU4ODIyNWI0YTc5NDYw
OGMyMDRiYjNmODFmODM2NmM0ODFjODlkCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
cmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdExpbmsuanMKQEAgLTAsMCArMSw3MCBA
QAorLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBn
cmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmls
ZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKworLyoq
CisgKiBSZWFjdExpbmsgZW5jYXBzdWxhdGVzIGEgY29tbW9uIHBhdHRlcm4gaW4gd2hpY2ggYSBj
b21wb25lbnQgd2FudHMgdG8gbW9kaWZ5CisgKiBhIHByb3AgcmVjZWl2ZWQgZnJvbSBpdHMgcGFy
ZW50LiBSZWFjdExpbmsgYWxsb3dzIHRoZSBwYXJlbnQgdG8gcGFzcyBkb3duIGEKKyAqIHZhbHVl
IGNvdXBsZWQgd2l0aCBhIGNhbGxiYWNrIHRoYXQsIHdoZW4gaW52b2tlZCwgZXhwcmVzc2VzIGFu
IGludGVudCB0bworICogbW9kaWZ5IHRoYXQgdmFsdWUuIEZvciBleGFtcGxlOgorICoKKyAqIFJl
YWN0LmNyZWF0ZUNsYXNzKHsKKyAqICAgZ2V0SW5pdGlhbFN0YXRlOiBmdW5jdGlvbigpIHsKKyAq
ICAgICByZXR1cm4ge3ZhbHVlOiAnJ307CisgKiAgIH0sCisgKiAgIHJlbmRlcjogZnVuY3Rpb24o
KSB7CisgKiAgICAgdmFyIHZhbHVlTGluayA9IG5ldyBSZWFjdExpbmsodGhpcy5zdGF0ZS52YWx1
ZSwgdGhpcy5faGFuZGxlVmFsdWVDaGFuZ2UpOworICogICAgIHJldHVybiA8aW5wdXQgdmFsdWVM
aW5rPXt2YWx1ZUxpbmt9IC8+OworICogICB9LAorICogICBfaGFuZGxlVmFsdWVDaGFuZ2U6IGZ1
bmN0aW9uKG5ld1ZhbHVlKSB7CisgKiAgICAgdGhpcy5zZXRTdGF0ZSh7dmFsdWU6IG5ld1ZhbHVl
fSk7CisgKiAgIH0KKyAqIH0pOworICoKKyAqIFdlIGhhdmUgcHJvdmlkZWQgc29tZSBzdWdhcnkg
bWl4aW5zIHRvIG1ha2UgdGhlIGNyZWF0aW9uIGFuZAorICogY29uc3VtcHRpb24gb2YgUmVhY3RM
aW5rIGVhc2llcjsgc2VlIExpbmtlZFZhbHVlVXRpbHMgYW5kIExpbmtlZFN0YXRlTWl4aW4uCisg
Ki8KKwordmFyIFJlYWN0ID0gcmVxdWlyZSgnLi9SZWFjdCcpOworCisvKioKKyAqIERlcHJlY2F0
ZWQ6IEFuIGFuIGVhc3kgd2F5IHRvIGV4cHJlc3MgdHdvLXdheSBiaW5kaW5nIHdpdGggUmVhY3Qu
IAorICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdHdvLXdheS1i
aW5kaW5nLWhlbHBlcnMuaHRtbAorICoKKyAqIEBwYXJhbSB7Kn0gdmFsdWUgY3VycmVudCB2YWx1
ZSBvZiB0aGUgbGluaworICogQHBhcmFtIHtmdW5jdGlvbn0gcmVxdWVzdENoYW5nZSBjYWxsYmFj
ayB0byByZXF1ZXN0IGEgY2hhbmdlCisgKi8KK2Z1bmN0aW9uIFJlYWN0TGluayh2YWx1ZSwgcmVx
dWVzdENoYW5nZSkgeworICB0aGlzLnZhbHVlID0gdmFsdWU7CisgIHRoaXMucmVxdWVzdENoYW5n
ZSA9IHJlcXVlc3RDaGFuZ2U7Cit9CisKKy8qKgorICogQ3JlYXRlcyBhIFByb3BUeXBlIHRoYXQg
ZW5mb3JjZXMgdGhlIFJlYWN0TGluayBBUEkgYW5kIG9wdGlvbmFsbHkgY2hlY2tzIHRoZQorICog
dHlwZSBvZiB0aGUgdmFsdWUgYmVpbmcgcGFzc2VkIGluc2lkZSB0aGUgbGluay4gRXhhbXBsZToK
KyAqCisgKiBNeUNvbXBvbmVudC5wcm9wVHlwZXMgPSB7CisgKiAgIHRhYkluZGV4TGluazogUmVh
Y3RMaW5rLlByb3BUeXBlcy5saW5rKFJlYWN0LlByb3BUeXBlcy5udW1iZXIpCisgKiB9CisgKi8K
K2Z1bmN0aW9uIGNyZWF0ZUxpbmtUeXBlQ2hlY2tlcihsaW5rVHlwZSkgeworICB2YXIgc2hhcGVz
ID0geworICAgIHZhbHVlOiBsaW5rVHlwZSA9PT0gdW5kZWZpbmVkID8gUmVhY3QuUHJvcFR5cGVz
LmFueS5pc1JlcXVpcmVkIDogbGlua1R5cGUuaXNSZXF1aXJlZCwKKyAgICByZXF1ZXN0Q2hhbmdl
OiBSZWFjdC5Qcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkCisgIH07CisgIHJldHVybiBSZWFjdC5Q
cm9wVHlwZXMuc2hhcGUoc2hhcGVzKTsKK30KKworUmVhY3RMaW5rLlByb3BUeXBlcyA9IHsKKyAg
bGluazogY3JlYXRlTGlua1R5cGVDaGVja2VyCit9OworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0
TGluazsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0Tm9vcFVwZGF0ZVF1ZXVlLmpzIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdE5vb3BVcGRhdGVR
dWV1ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jZjVmZDdjYTY0MzJmNjVkOWIzYzdiNmIzNjViYjVjYjExMTc1
ZDk5Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3Jl
YWN0L2xpYi9SZWFjdE5vb3BVcGRhdGVRdWV1ZS5qcwpAQCAtMCwwICsxLDk1IEBACisvKioKKyAq
IENvcHlyaWdodCAyMDE1LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgd2FybmluZyA9
IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTsKKworZnVuY3Rpb24gd2Fybk5vb3AocHVibGlj
SW5zdGFuY2UsIGNhbGxlck5hbWUpIHsKKyAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicpIHsKKyAgICB2YXIgY29uc3RydWN0b3IgPSBwdWJsaWNJbnN0YW5jZS5jb25z
dHJ1Y3RvcjsKKyAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2Fy
bmluZyhmYWxzZSwgJyVzKC4uLik6IENhbiBvbmx5IHVwZGF0ZSBhIG1vdW50ZWQgb3IgbW91bnRp
bmcgY29tcG9uZW50LiAnICsgJ1RoaXMgdXN1YWxseSBtZWFucyB5b3UgY2FsbGVkICVzKCkgb24g
YW4gdW5tb3VudGVkIGNvbXBvbmVudC4gJyArICdUaGlzIGlzIGEgbm8tb3AuIFBsZWFzZSBjaGVj
ayB0aGUgY29kZSBmb3IgdGhlICVzIGNvbXBvbmVudC4nLCBjYWxsZXJOYW1lLCBjYWxsZXJOYW1l
LCBjb25zdHJ1Y3RvciAmJiAoY29uc3RydWN0b3IuZGlzcGxheU5hbWUgfHwgY29uc3RydWN0b3Iu
bmFtZSkgfHwgJ1JlYWN0Q2xhc3MnKSA6IHZvaWQgMDsKKyAgfQorfQorCisvKioKKyAqIFRoaXMg
aXMgdGhlIGFic3RyYWN0IEFQSSBmb3IgYW4gdXBkYXRlIHF1ZXVlLgorICovCit2YXIgUmVhY3RO
b29wVXBkYXRlUXVldWUgPSB7CisKKyAgLyoqCisgICAqIENoZWNrcyB3aGV0aGVyIG9yIG5vdCB0
aGlzIGNvbXBvc2l0ZSBjb21wb25lbnQgaXMgbW91bnRlZC4KKyAgICogQHBhcmFtIHtSZWFjdENs
YXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2Ugd2Ugd2FudCB0byB0ZXN0LgorICAgKiBA
cmV0dXJuIHtib29sZWFufSBUcnVlIGlmIG1vdW50ZWQsIGZhbHNlIG90aGVyd2lzZS4KKyAgICog
QHByb3RlY3RlZAorICAgKiBAZmluYWwKKyAgICovCisgIGlzTW91bnRlZDogZnVuY3Rpb24gKHB1
YmxpY0luc3RhbmNlKSB7CisgICAgcmV0dXJuIGZhbHNlOworICB9LAorCisgIC8qKgorICAgKiBF
bnF1ZXVlIGEgY2FsbGJhY2sgdGhhdCB3aWxsIGJlIGV4ZWN1dGVkIGFmdGVyIGFsbCB0aGUgcGVu
ZGluZyB1cGRhdGVzCisgICAqIGhhdmUgcHJvY2Vzc2VkLgorICAgKgorICAgKiBAcGFyYW0ge1Jl
YWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0byB1c2UgYXMgYHRoaXNgIGNv
bnRleHQuCisgICAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBjYWxsYmFjayBDYWxsZWQgYWZ0ZXIgc3Rh
dGUgaXMgdXBkYXRlZC4KKyAgICogQGludGVybmFsCisgICAqLworICBlbnF1ZXVlQ2FsbGJhY2s6
IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSwgY2FsbGJhY2spIHt9LAorCisgIC8qKgorICAgKiBG
b3JjZXMgYW4gdXBkYXRlLiBUaGlzIHNob3VsZCBvbmx5IGJlIGludm9rZWQgd2hlbiBpdCBpcyBr
bm93biB3aXRoCisgICAqIGNlcnRhaW50eSB0aGF0IHdlIGFyZSAqKm5vdCoqIGluIGEgRE9NIHRy
YW5zYWN0aW9uLgorICAgKgorICAgKiBZb3UgbWF5IHdhbnQgdG8gY2FsbCB0aGlzIHdoZW4geW91
IGtub3cgdGhhdCBzb21lIGRlZXBlciBhc3BlY3Qgb2YgdGhlCisgICAqIGNvbXBvbmVudCdzIHN0
YXRlIGhhcyBjaGFuZ2VkIGJ1dCBgc2V0U3RhdGVgIHdhcyBub3QgY2FsbGVkLgorICAgKgorICAg
KiBUaGlzIHdpbGwgbm90IGludm9rZSBgc2hvdWxkQ29tcG9uZW50VXBkYXRlYCwgYnV0IGl0IHdp
bGwgaW52b2tlCisgICAqIGBjb21wb25lbnRXaWxsVXBkYXRlYCBhbmQgYGNvbXBvbmVudERpZFVw
ZGF0ZWAuCisgICAqCisgICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhl
IGluc3RhbmNlIHRoYXQgc2hvdWxkIHJlcmVuZGVyLgorICAgKiBAaW50ZXJuYWwKKyAgICovCisg
IGVucXVldWVGb3JjZVVwZGF0ZTogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNlKSB7CisgICAgd2Fy
bk5vb3AocHVibGljSW5zdGFuY2UsICdmb3JjZVVwZGF0ZScpOworICB9LAorCisgIC8qKgorICAg
KiBSZXBsYWNlcyBhbGwgb2YgdGhlIHN0YXRlLiBBbHdheXMgdXNlIHRoaXMgb3IgYHNldFN0YXRl
YCB0byBtdXRhdGUgc3RhdGUuCisgICAqIFlvdSBzaG91bGQgdHJlYXQgYHRoaXMuc3RhdGVgIGFz
IGltbXV0YWJsZS4KKyAgICoKKyAgICogVGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgYHRoaXMu
c3RhdGVgIHdpbGwgYmUgaW1tZWRpYXRlbHkgdXBkYXRlZCwgc28KKyAgICogYWNjZXNzaW5nIGB0
aGlzLnN0YXRlYCBhZnRlciBjYWxsaW5nIHRoaXMgbWV0aG9kIG1heSByZXR1cm4gdGhlIG9sZCB2
YWx1ZS4KKyAgICoKKyAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUg
aW5zdGFuY2UgdGhhdCBzaG91bGQgcmVyZW5kZXIuCisgICAqIEBwYXJhbSB7b2JqZWN0fSBjb21w
bGV0ZVN0YXRlIE5leHQgc3RhdGUuCisgICAqIEBpbnRlcm5hbAorICAgKi8KKyAgZW5xdWV1ZVJl
cGxhY2VTdGF0ZTogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNlLCBjb21wbGV0ZVN0YXRlKSB7Cisg
ICAgd2Fybk5vb3AocHVibGljSW5zdGFuY2UsICdyZXBsYWNlU3RhdGUnKTsKKyAgfSwKKworICAv
KioKKyAgICogU2V0cyBhIHN1YnNldCBvZiB0aGUgc3RhdGUuIFRoaXMgb25seSBleGlzdHMgYmVj
YXVzZSBfcGVuZGluZ1N0YXRlIGlzCisgICAqIGludGVybmFsLiBUaGlzIHByb3ZpZGVzIGEgbWVy
Z2luZyBzdHJhdGVneSB0aGF0IGlzIG5vdCBhdmFpbGFibGUgdG8gZGVlcAorICAgKiBwcm9wZXJ0
aWVzIHdoaWNoIGlzIGNvbmZ1c2luZy4gVE9ETzogRXhwb3NlIHBlbmRpbmdTdGF0ZSBvciBkb24n
dCB1c2UgaXQKKyAgICogZHVyaW5nIHRoZSBtZXJnZS4KKyAgICoKKyAgICogQHBhcmFtIHtSZWFj
dENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdGhhdCBzaG91bGQgcmVyZW5kZXIu
CisgICAqIEBwYXJhbSB7b2JqZWN0fSBwYXJ0aWFsU3RhdGUgTmV4dCBwYXJ0aWFsIHN0YXRlIHRv
IGJlIG1lcmdlZCB3aXRoIHN0YXRlLgorICAgKiBAaW50ZXJuYWwKKyAgICovCisgIGVucXVldWVT
ZXRTdGF0ZTogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNlLCBwYXJ0aWFsU3RhdGUpIHsKKyAgICB3
YXJuTm9vcChwdWJsaWNJbnN0YW5jZSwgJ3NldFN0YXRlJyk7CisgIH0KK307CisKK21vZHVsZS5l
eHBvcnRzID0gUmVhY3ROb29wVXBkYXRlUXVldWU7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9S
ZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lcy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9k
dWxlcy9yZWFjdC9saWIvUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXMuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZGIwMzNjZGE4YjhjNzJkMjBlZDFmNGU2YmE4NDM3YzYxMDBmNDgwMAotLS0gL2Rldi9udWxsCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RQcm9wVHlw
ZUxvY2F0aW9uTmFtZXMuanMKQEAgLTAsMCArMSwyNCBAQAorLyoqCisgKiBDb3B5cmlnaHQgMjAx
My1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5z
ZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2Yg
dGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0
cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnku
CisgKgorICogCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgUmVhY3RQcm9wVHlwZUxvY2F0
aW9uTmFtZXMgPSB7fTsKKworaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlv
bicpIHsKKyAgUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXMgPSB7CisgICAgcHJvcDogJ3Byb3An
LAorICAgIGNvbnRleHQ6ICdjb250ZXh0JywKKyAgICBjaGlsZENvbnRleHQ6ICdjaGlsZCBjb250
ZXh0JworICB9OworfQorCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5h
bWVzOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RQcm9wVHlwZUxvY2F0aW9ucy5qcyBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RQcm9wVHlwZUxv
Y2F0aW9ucy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZDk0Y2E4MWUzOWQ0Nzg2OGZkYTMyOGQ5NzU2N2UzMDJk
MDkzNmZhCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVz
L3JlYWN0L2xpYi9SZWFjdFByb3BUeXBlTG9jYXRpb25zLmpzCkBAIC0wLDAgKzEsMTIgQEAKKy8q
KgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQK
KyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqIAorICovCisKKyd1c2Ugc3RyaWN0JzsKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2Rl
X21vZHVsZXMvcmVhY3QvbGliL1JlYWN0UHJvcFR5cGVzLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qv
bm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdFByb3BUeXBlcy5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNTdj
ZTM1NTc2NWY2NDJlYWI0YTRjYjA4OWI3ZWFlYzI4MWUyYjRhCi0tLSAvZGV2L251bGwKKysrIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdFByb3BUeXBlcy5q
cwpAQCAtMCwwICsxLDQzMyBAQAorLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNl
Ym9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBj
b2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUK
KyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJl
ZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQg
aW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1
c2Ugc3RyaWN0JzsKKwordmFyIFJlYWN0RWxlbWVudCA9IHJlcXVpcmUoJy4vUmVhY3RFbGVtZW50
Jyk7Cit2YXIgUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXMgPSByZXF1aXJlKCcuL1JlYWN0UHJv
cFR5cGVMb2NhdGlvbk5hbWVzJyk7Cit2YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSByZXF1aXJl
KCcuL1JlYWN0UHJvcFR5cGVzU2VjcmV0Jyk7CisKK3ZhciBlbXB0eUZ1bmN0aW9uID0gcmVxdWly
ZSgnZmJqcy9saWIvZW1wdHlGdW5jdGlvbicpOwordmFyIGdldEl0ZXJhdG9yRm4gPSByZXF1aXJl
KCcuL2dldEl0ZXJhdG9yRm4nKTsKK3ZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2Fy
bmluZycpOworCisvKioKKyAqIENvbGxlY3Rpb24gb2YgbWV0aG9kcyB0aGF0IGFsbG93IGRlY2xh
cmF0aW9uIGFuZCB2YWxpZGF0aW9uIG9mIHByb3BzIHRoYXQgYXJlCisgKiBzdXBwbGllZCB0byBS
ZWFjdCBjb21wb25lbnRzLiBFeGFtcGxlIHVzYWdlOgorICoKKyAqICAgdmFyIFByb3BzID0gcmVx
dWlyZSgnUmVhY3RQcm9wVHlwZXMnKTsKKyAqICAgdmFyIE15QXJ0aWNsZSA9IFJlYWN0LmNyZWF0
ZUNsYXNzKHsKKyAqICAgICBwcm9wVHlwZXM6IHsKKyAqICAgICAgIC8vIEFuIG9wdGlvbmFsIHN0
cmluZyBwcm9wIG5hbWVkICJkZXNjcmlwdGlvbiIuCisgKiAgICAgICBkZXNjcmlwdGlvbjogUHJv
cHMuc3RyaW5nLAorICoKKyAqICAgICAgIC8vIEEgcmVxdWlyZWQgZW51bSBwcm9wIG5hbWVkICJj
YXRlZ29yeSIuCisgKiAgICAgICBjYXRlZ29yeTogUHJvcHMub25lT2YoWydOZXdzJywnUGhvdG9z
J10pLmlzUmVxdWlyZWQsCisgKgorICogICAgICAgLy8gQSBwcm9wIG5hbWVkICJkaWFsb2ciIHRo
YXQgcmVxdWlyZXMgYW4gaW5zdGFuY2Ugb2YgRGlhbG9nLgorICogICAgICAgZGlhbG9nOiBQcm9w
cy5pbnN0YW5jZU9mKERpYWxvZykuaXNSZXF1aXJlZAorICogICAgIH0sCisgKiAgICAgcmVuZGVy
OiBmdW5jdGlvbigpIHsgLi4uIH0KKyAqICAgfSk7CisgKgorICogQSBtb3JlIGZvcm1hbCBzcGVj
aWZpY2F0aW9uIG9mIGhvdyB0aGVzZSBtZXRob2RzIGFyZSB1c2VkOgorICoKKyAqICAgdHlwZSA6
PSBhcnJheXxib29sfGZ1bmN8b2JqZWN0fG51bWJlcnxzdHJpbmd8b25lT2YoWy4uLl0pfGluc3Rh
bmNlT2YoLi4uKQorICogICBkZWNsIDo9IFJlYWN0UHJvcFR5cGVzLnt0eXBlfSguaXNSZXF1aXJl
ZCk/CisgKgorICogRWFjaCBhbmQgZXZlcnkgZGVjbGFyYXRpb24gcHJvZHVjZXMgYSBmdW5jdGlv
biB3aXRoIHRoZSBzYW1lIHNpZ25hdHVyZS4gVGhpcworICogYWxsb3dzIHRoZSBjcmVhdGlvbiBv
ZiBjdXN0b20gdmFsaWRhdGlvbiBmdW5jdGlvbnMuIEZvciBleGFtcGxlOgorICoKKyAqICB2YXIg
TXlMaW5rID0gUmVhY3QuY3JlYXRlQ2xhc3MoeworICogICAgcHJvcFR5cGVzOiB7CisgKiAgICAg
IC8vIEFuIG9wdGlvbmFsIHN0cmluZyBvciBVUkkgcHJvcCBuYW1lZCAiaHJlZiIuCisgKiAgICAg
IGhyZWY6IGZ1bmN0aW9uKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSkgeworICogICAg
ICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1twcm9wTmFtZV07CisgKiAgICAgICAgaWYgKHByb3BW
YWx1ZSAhPSBudWxsICYmIHR5cGVvZiBwcm9wVmFsdWUgIT09ICdzdHJpbmcnICYmCisgKiAgICAg
ICAgICAgICEocHJvcFZhbHVlIGluc3RhbmNlb2YgVVJJKSkgeworICogICAgICAgICAgcmV0dXJu
IG5ldyBFcnJvcigKKyAqICAgICAgICAgICAgJ0V4cGVjdGVkIGEgc3RyaW5nIG9yIGFuIFVSSSBm
b3IgJyArIHByb3BOYW1lICsgJyBpbiAnICsKKyAqICAgICAgICAgICAgY29tcG9uZW50TmFtZQor
ICogICAgICAgICAgKTsKKyAqICAgICAgICB9CisgKiAgICAgIH0KKyAqICAgIH0sCisgKiAgICBy
ZW5kZXI6IGZ1bmN0aW9uKCkgey4uLn0KKyAqICB9KTsKKyAqCisgKiBAaW50ZXJuYWwKKyAqLwor
Cit2YXIgQU5PTllNT1VTID0gJzw8YW5vbnltb3VzPj4nOworCit2YXIgUmVhY3RQcm9wVHlwZXMg
PSB7CisgIGFycmF5OiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcignYXJyYXknKSwKKyAgYm9v
bDogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ2Jvb2xlYW4nKSwKKyAgZnVuYzogY3JlYXRl
UHJpbWl0aXZlVHlwZUNoZWNrZXIoJ2Z1bmN0aW9uJyksCisgIG51bWJlcjogY3JlYXRlUHJpbWl0
aXZlVHlwZUNoZWNrZXIoJ251bWJlcicpLAorICBvYmplY3Q6IGNyZWF0ZVByaW1pdGl2ZVR5cGVD
aGVja2VyKCdvYmplY3QnKSwKKyAgc3RyaW5nOiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcign
c3RyaW5nJyksCisgIHN5bWJvbDogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ3N5bWJvbCcp
LAorCisgIGFueTogY3JlYXRlQW55VHlwZUNoZWNrZXIoKSwKKyAgYXJyYXlPZjogY3JlYXRlQXJy
YXlPZlR5cGVDaGVja2VyLAorICBlbGVtZW50OiBjcmVhdGVFbGVtZW50VHlwZUNoZWNrZXIoKSwK
KyAgaW5zdGFuY2VPZjogY3JlYXRlSW5zdGFuY2VUeXBlQ2hlY2tlciwKKyAgbm9kZTogY3JlYXRl
Tm9kZUNoZWNrZXIoKSwKKyAgb2JqZWN0T2Y6IGNyZWF0ZU9iamVjdE9mVHlwZUNoZWNrZXIsCisg
IG9uZU9mOiBjcmVhdGVFbnVtVHlwZUNoZWNrZXIsCisgIG9uZU9mVHlwZTogY3JlYXRlVW5pb25U
eXBlQ2hlY2tlciwKKyAgc2hhcGU6IGNyZWF0ZVNoYXBlVHlwZUNoZWNrZXIKK307CisKKy8qKgor
ICogaW5saW5lZCBPYmplY3QuaXMgcG9seWZpbGwgdG8gYXZvaWQgcmVxdWlyaW5nIGNvbnN1bWVy
cyBzaGlwIHRoZWlyIG93bgorICogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMv
ZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvT2JqZWN0L2lzCisg
Ki8KKy8qZXNsaW50LWRpc2FibGUgbm8tc2VsZi1jb21wYXJlKi8KK2Z1bmN0aW9uIGlzKHgsIHkp
IHsKKyAgLy8gU2FtZVZhbHVlIGFsZ29yaXRobQorICBpZiAoeCA9PT0geSkgeworICAgIC8vIFN0
ZXBzIDEtNSwgNy0xMAorICAgIC8vIFN0ZXBzIDYuYi02LmU6ICswICE9IC0wCisgICAgcmV0dXJu
IHggIT09IDAgfHwgMSAvIHggPT09IDEgLyB5OworICB9IGVsc2UgeworICAgIC8vIFN0ZXAgNi5h
OiBOYU4gPT0gTmFOCisgICAgcmV0dXJuIHggIT09IHggJiYgeSAhPT0geTsKKyAgfQorfQorLypl
c2xpbnQtZW5hYmxlIG5vLXNlbGYtY29tcGFyZSovCisKKy8qKgorICogV2UgdXNlIGFuIEVycm9y
LWxpa2Ugb2JqZWN0IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGFzIHBlb3BsZSBtYXkgY2Fs
bAorICogUHJvcFR5cGVzIGRpcmVjdGx5IGFuZCBpbnNwZWN0IHRoZWlyIG91dHB1dC4gSG93ZXZl
ciB3ZSBkb24ndCB1c2UgcmVhbAorICogRXJyb3JzIGFueW1vcmUuIFdlIGRvbid0IGluc3BlY3Qg
dGhlaXIgc3RhY2sgYW55d2F5LCBhbmQgY3JlYXRpbmcgdGhlbQorICogaXMgcHJvaGliaXRpdmVs
eSBleHBlbnNpdmUgaWYgdGhleSBhcmUgY3JlYXRlZCB0b28gb2Z0ZW4sIHN1Y2ggYXMgd2hhdAor
ICogaGFwcGVucyBpbiBvbmVPZlR5cGUoKSBmb3IgYW55IHR5cGUgYmVmb3JlIHRoZSBvbmUgdGhh
dCBtYXRjaGVkLgorICovCitmdW5jdGlvbiBQcm9wVHlwZUVycm9yKG1lc3NhZ2UpIHsKKyAgdGhp
cy5tZXNzYWdlID0gbWVzc2FnZTsKKyAgdGhpcy5zdGFjayA9ICcnOworfQorLy8gTWFrZSBgaW5z
dGFuY2VvZiBFcnJvcmAgc3RpbGwgd29yayBmb3IgcmV0dXJuZWQgZXJyb3JzLgorUHJvcFR5cGVF
cnJvci5wcm90b3R5cGUgPSBFcnJvci5wcm90b3R5cGU7CisKK2Z1bmN0aW9uIGNyZWF0ZUNoYWlu
YWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKSB7CisgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAh
PT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgdmFyIG1hbnVhbFByb3BUeXBlQ2FsbENhY2hlID0ge307
CisgIH0KKyAgZnVuY3Rpb24gY2hlY2tUeXBlKGlzUmVxdWlyZWQsIHByb3BzLCBwcm9wTmFtZSwg
Y29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwgc2VjcmV0KSB7CisgICAgY29t
cG9uZW50TmFtZSA9IGNvbXBvbmVudE5hbWUgfHwgQU5PTllNT1VTOworICAgIHByb3BGdWxsTmFt
ZSA9IHByb3BGdWxsTmFtZSB8fCBwcm9wTmFtZTsKKyAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgaWYgKHNlY3JldCAhPT0gUmVhY3RQcm9wVHlw
ZXNTZWNyZXQgJiYgdHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnKSB7CisgICAgICAgIHZh
ciBjYWNoZUtleSA9IGNvbXBvbmVudE5hbWUgKyAnOicgKyBwcm9wTmFtZTsKKyAgICAgICAgaWYg
KCFtYW51YWxQcm9wVHlwZUNhbGxDYWNoZVtjYWNoZUtleV0pIHsKKyAgICAgICAgICBwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1lvdSBhcmUg
bWFudWFsbHkgY2FsbGluZyBhIFJlYWN0LlByb3BUeXBlcyB2YWxpZGF0aW9uICcgKyAnZnVuY3Rp
b24gZm9yIHRoZSBgJXNgIHByb3Agb24gYCVzYC4gVGhpcyBpcyBkZXByZWNhdGVkICcgKyAnYW5k
IHdpbGwgbm90IHdvcmsgaW4gcHJvZHVjdGlvbiB3aXRoIHRoZSBuZXh0IG1ham9yIHZlcnNpb24u
ICcgKyAnWW91IG1heSBiZSBzZWVpbmcgdGhpcyB3YXJuaW5nIGR1ZSB0byBhIHRoaXJkLXBhcnR5
IFByb3BUeXBlcyAnICsgJ2xpYnJhcnkuIFNlZSBodHRwczovL2ZiLm1lL3JlYWN0LXdhcm5pbmct
ZG9udC1jYWxsLXByb3B0eXBlcyAnICsgJ2ZvciBkZXRhaWxzLicsIHByb3BGdWxsTmFtZSwgY29t
cG9uZW50TmFtZSkgOiB2b2lkIDA7CisgICAgICAgICAgbWFudWFsUHJvcFR5cGVDYWxsQ2FjaGVb
Y2FjaGVLZXldID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgICBpZiAocHJv
cHNbcHJvcE5hbWVdID09IG51bGwpIHsKKyAgICAgIHZhciBsb2NhdGlvbk5hbWUgPSBSZWFjdFBy
b3BUeXBlTG9jYXRpb25OYW1lc1tsb2NhdGlvbl07CisgICAgICBpZiAoaXNSZXF1aXJlZCkgewor
ICAgICAgICBpZiAocHJvcHNbcHJvcE5hbWVdID09PSBudWxsKSB7CisgICAgICAgICAgcmV0dXJu
IG5ldyBQcm9wVHlwZUVycm9yKCdUaGUgJyArIGxvY2F0aW9uTmFtZSArICcgYCcgKyBwcm9wRnVs
bE5hbWUgKyAnYCBpcyBtYXJrZWQgYXMgcmVxdWlyZWQgJyArICgnaW4gYCcgKyBjb21wb25lbnRO
YW1lICsgJ2AsIGJ1dCBpdHMgdmFsdWUgaXMgYG51bGxgLicpKTsKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ1RoZSAnICsgbG9jYXRpb25OYW1lICsgJyBgJyAr
IHByb3BGdWxsTmFtZSArICdgIGlzIG1hcmtlZCBhcyByZXF1aXJlZCBpbiAnICsgKCdgJyArIGNv
bXBvbmVudE5hbWUgKyAnYCwgYnV0IGl0cyB2YWx1ZSBpcyBgdW5kZWZpbmVkYC4nKSk7CisgICAg
ICB9CisgICAgICByZXR1cm4gbnVsbDsKKyAgICB9IGVsc2UgeworICAgICAgcmV0dXJuIHZhbGlk
YXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFt
ZSk7CisgICAgfQorICB9CisKKyAgdmFyIGNoYWluZWRDaGVja1R5cGUgPSBjaGVja1R5cGUuYmlu
ZChudWxsLCBmYWxzZSk7CisgIGNoYWluZWRDaGVja1R5cGUuaXNSZXF1aXJlZCA9IGNoZWNrVHlw
ZS5iaW5kKG51bGwsIHRydWUpOworCisgIHJldHVybiBjaGFpbmVkQ2hlY2tUeXBlOworfQorCitm
dW5jdGlvbiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcihleHBlY3RlZFR5cGUpIHsKKyAgZnVu
Y3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwg
cHJvcEZ1bGxOYW1lLCBzZWNyZXQpIHsKKyAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5h
bWVdOworICAgIHZhciBwcm9wVHlwZSA9IGdldFByb3BUeXBlKHByb3BWYWx1ZSk7CisgICAgaWYg
KHByb3BUeXBlICE9PSBleHBlY3RlZFR5cGUpIHsKKyAgICAgIHZhciBsb2NhdGlvbk5hbWUgPSBS
ZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lc1tsb2NhdGlvbl07CisgICAgICAvLyBgcHJvcFZhbHVl
YCBiZWluZyBpbnN0YW5jZSBvZiwgc2F5LCBkYXRlL3JlZ2V4cCwgcGFzcyB0aGUgJ29iamVjdCcK
KyAgICAgIC8vIGNoZWNrLCBidXQgd2UgY2FuIG9mZmVyIGEgbW9yZSBwcmVjaXNlIGVycm9yIG1l
c3NhZ2UgaGVyZSByYXRoZXIgdGhhbgorICAgICAgLy8gJ29mIHR5cGUgYG9iamVjdGAnLgorICAg
ICAgdmFyIHByZWNpc2VUeXBlID0gZ2V0UHJlY2lzZVR5cGUocHJvcFZhbHVlKTsKKworICAgICAg
cmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbk5hbWUgKyAnIGAn
ICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdHlwZSAnICsgKCdgJyArIHByZWNpc2VUeXBlICsgJ2Ag
c3VwcGxpZWQgdG8gYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkICcpICsgKCdgJyAr
IGV4cGVjdGVkVHlwZSArICdgLicpKTsKKyAgICB9CisgICAgcmV0dXJuIG51bGw7CisgIH0KKyAg
cmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTsKK30KKworZnVuY3Rp
b24gY3JlYXRlQW55VHlwZUNoZWNrZXIoKSB7CisgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBl
Q2hlY2tlcihlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zKG51bGwpKTsKK30KKworZnVuY3Rpb24g
Y3JlYXRlQXJyYXlPZlR5cGVDaGVja2VyKHR5cGVDaGVja2VyKSB7CisgIGZ1bmN0aW9uIHZhbGlk
YXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFt
ZSkgeworICAgIGlmICh0eXBlb2YgdHlwZUNoZWNrZXIgIT09ICdmdW5jdGlvbicpIHsKKyAgICAg
IHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignUHJvcGVydHkgYCcgKyBwcm9wRnVsbE5hbWUgKyAn
YCBvZiBjb21wb25lbnQgYCcgKyBjb21wb25lbnROYW1lICsgJ2AgaGFzIGludmFsaWQgUHJvcFR5
cGUgbm90YXRpb24gaW5zaWRlIGFycmF5T2YuJyk7CisgICAgfQorICAgIHZhciBwcm9wVmFsdWUg
PSBwcm9wc1twcm9wTmFtZV07CisgICAgaWYgKCFBcnJheS5pc0FycmF5KHByb3BWYWx1ZSkpIHsK
KyAgICAgIHZhciBsb2NhdGlvbk5hbWUgPSBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lc1tsb2Nh
dGlvbl07CisgICAgICB2YXIgcHJvcFR5cGUgPSBnZXRQcm9wVHlwZShwcm9wVmFsdWUpOworICAg
ICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbk5hbWUgKyAn
IGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdHlwZSAnICsgKCdgJyArIHByb3BUeXBlICsgJ2Ag
c3VwcGxpZWQgdG8gYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkIGFuIGFycmF5Licp
KTsKKyAgICB9CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wVmFsdWUubGVuZ3RoOyBpKysp
IHsKKyAgICAgIHZhciBlcnJvciA9IHR5cGVDaGVja2VyKHByb3BWYWx1ZSwgaSwgY29tcG9uZW50
TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSArICdbJyArIGkgKyAnXScsIFJlYWN0UHJvcFR5
cGVzU2VjcmV0KTsKKyAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7CisgICAgICAg
IHJldHVybiBlcnJvcjsKKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIG51bGw7CisgIH0KKyAg
cmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTsKK30KKworZnVuY3Rp
b24gY3JlYXRlRWxlbWVudFR5cGVDaGVja2VyKCkgeworICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9w
cywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHsKKyAg
ICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdOworICAgIGlmICghUmVhY3RFbGVtZW50
LmlzVmFsaWRFbGVtZW50KHByb3BWYWx1ZSkpIHsKKyAgICAgIHZhciBsb2NhdGlvbk5hbWUgPSBS
ZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lc1tsb2NhdGlvbl07CisgICAgICB2YXIgcHJvcFR5cGUg
PSBnZXRQcm9wVHlwZShwcm9wVmFsdWUpOworICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9y
KCdJbnZhbGlkICcgKyBsb2NhdGlvbk5hbWUgKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2Yg
dHlwZSAnICsgKCdgJyArIHByb3BUeXBlICsgJ2Agc3VwcGxpZWQgdG8gYCcgKyBjb21wb25lbnRO
YW1lICsgJ2AsIGV4cGVjdGVkIGEgc2luZ2xlIFJlYWN0RWxlbWVudC4nKSk7CisgICAgfQorICAg
IHJldHVybiBudWxsOworICB9CisgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2
YWxpZGF0ZSk7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUluc3RhbmNlVHlwZUNoZWNrZXIoZXhwZWN0
ZWRDbGFzcykgeworICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVu
dE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHsKKyAgICBpZiAoIShwcm9wc1twcm9wTmFt
ZV0gaW5zdGFuY2VvZiBleHBlY3RlZENsYXNzKSkgeworICAgICAgdmFyIGxvY2F0aW9uTmFtZSA9
IFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzW2xvY2F0aW9uXTsKKyAgICAgIHZhciBleHBlY3Rl
ZENsYXNzTmFtZSA9IGV4cGVjdGVkQ2xhc3MubmFtZSB8fCBBTk9OWU1PVVM7CisgICAgICB2YXIg
YWN0dWFsQ2xhc3NOYW1lID0gZ2V0Q2xhc3NOYW1lKHByb3BzW3Byb3BOYW1lXSk7CisgICAgICBy
ZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uTmFtZSArICcgYCcg
KyBwcm9wRnVsbE5hbWUgKyAnYCBvZiB0eXBlICcgKyAoJ2AnICsgYWN0dWFsQ2xhc3NOYW1lICsg
J2Agc3VwcGxpZWQgdG8gYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkICcpICsgKCdp
bnN0YW5jZSBvZiBgJyArIGV4cGVjdGVkQ2xhc3NOYW1lICsgJ2AuJykpOworICAgIH0KKyAgICBy
ZXR1cm4gbnVsbDsKKyAgfQorICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFs
aWRhdGUpOworfQorCitmdW5jdGlvbiBjcmVhdGVFbnVtVHlwZUNoZWNrZXIoZXhwZWN0ZWRWYWx1
ZXMpIHsKKyAgaWYgKCFBcnJheS5pc0FycmF5KGV4cGVjdGVkVmFsdWVzKSkgeworICAgIHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnSW52YWxp
ZCBhcmd1bWVudCBzdXBwbGllZCB0byBvbmVPZiwgZXhwZWN0ZWQgYW4gaW5zdGFuY2Ugb2YgYXJy
YXkuJykgOiB2b2lkIDA7CisgICAgcmV0dXJuIGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNOdWxs
OworICB9CisKKyAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnRO
YW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7CisgICAgdmFyIHByb3BWYWx1ZSA9IHByb3Bz
W3Byb3BOYW1lXTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGV4cGVjdGVkVmFsdWVzLmxlbmd0
aDsgaSsrKSB7CisgICAgICBpZiAoaXMocHJvcFZhbHVlLCBleHBlY3RlZFZhbHVlc1tpXSkpIHsK
KyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIGxvY2F0aW9u
TmFtZSA9IFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzW2xvY2F0aW9uXTsKKyAgICB2YXIgdmFs
dWVzU3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoZXhwZWN0ZWRWYWx1ZXMpOworICAgIHJldHVybiBu
ZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb25OYW1lICsgJyBgJyArIHByb3BG
dWxsTmFtZSArICdgIG9mIHZhbHVlIGAnICsgcHJvcFZhbHVlICsgJ2AgJyArICgnc3VwcGxpZWQg
dG8gYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkIG9uZSBvZiAnICsgdmFsdWVzU3Ry
aW5nICsgJy4nKSk7CisgIH0KKyAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZh
bGlkYXRlKTsKK30KKworZnVuY3Rpb24gY3JlYXRlT2JqZWN0T2ZUeXBlQ2hlY2tlcih0eXBlQ2hl
Y2tlcikgeworICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5h
bWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHsKKyAgICBpZiAodHlwZW9mIHR5cGVDaGVja2Vy
ICE9PSAnZnVuY3Rpb24nKSB7CisgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ1Byb3Bl
cnR5IGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgY29tcG9uZW50IGAnICsgY29tcG9uZW50TmFt
ZSArICdgIGhhcyBpbnZhbGlkIFByb3BUeXBlIG5vdGF0aW9uIGluc2lkZSBvYmplY3RPZi4nKTsK
KyAgICB9CisgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTsKKyAgICB2YXIgcHJv
cFR5cGUgPSBnZXRQcm9wVHlwZShwcm9wVmFsdWUpOworICAgIGlmIChwcm9wVHlwZSAhPT0gJ29i
amVjdCcpIHsKKyAgICAgIHZhciBsb2NhdGlvbk5hbWUgPSBSZWFjdFByb3BUeXBlTG9jYXRpb25O
YW1lc1tsb2NhdGlvbl07CisgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQg
JyArIGxvY2F0aW9uTmFtZSArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiB0eXBlICcgKyAo
J2AnICsgcHJvcFR5cGUgKyAnYCBzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwg
ZXhwZWN0ZWQgYW4gb2JqZWN0LicpKTsKKyAgICB9CisgICAgZm9yICh2YXIga2V5IGluIHByb3BW
YWx1ZSkgeworICAgICAgaWYgKHByb3BWYWx1ZS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7CisgICAg
ICAgIHZhciBlcnJvciA9IHR5cGVDaGVja2VyKHByb3BWYWx1ZSwga2V5LCBjb21wb25lbnROYW1l
LCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lICsgJy4nICsga2V5LCBSZWFjdFByb3BUeXBlc1NlY3Jl
dCk7CisgICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7CisgICAgICAgICAgcmV0
dXJuIGVycm9yOworICAgICAgICB9CisgICAgICB9CisgICAgfQorICAgIHJldHVybiBudWxsOwor
ICB9CisgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7Cit9CisK
K2Z1bmN0aW9uIGNyZWF0ZVVuaW9uVHlwZUNoZWNrZXIoYXJyYXlPZlR5cGVDaGVja2Vycykgewor
ICBpZiAoIUFycmF5LmlzQXJyYXkoYXJyYXlPZlR5cGVDaGVja2VycykpIHsKKyAgICBwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ0ludmFsaWQg
YXJndW1lbnQgc3VwcGxpZWQgdG8gb25lT2ZUeXBlLCBleHBlY3RlZCBhbiBpbnN0YW5jZSBvZiBh
cnJheS4nKSA6IHZvaWQgMDsKKyAgICByZXR1cm4gZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc051
bGw7CisgIH0KKworICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVu
dE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGFycmF5T2ZUeXBlQ2hlY2tlcnMubGVuZ3RoOyBpKyspIHsKKyAgICAgIHZhciBjaGVja2VyID0g
YXJyYXlPZlR5cGVDaGVja2Vyc1tpXTsKKyAgICAgIGlmIChjaGVja2VyKHByb3BzLCBwcm9wTmFt
ZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwgUmVhY3RQcm9wVHlwZXNT
ZWNyZXQpID09IG51bGwpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICB9CisgICAgfQor
CisgICAgdmFyIGxvY2F0aW9uTmFtZSA9IFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzW2xvY2F0
aW9uXTsKKyAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9u
TmFtZSArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBzdXBwbGllZCB0byAnICsgKCdgJyArIGNv
bXBvbmVudE5hbWUgKyAnYC4nKSk7CisgIH0KKyAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVD
aGVja2VyKHZhbGlkYXRlKTsKK30KKworZnVuY3Rpb24gY3JlYXRlTm9kZUNoZWNrZXIoKSB7Cisg
IGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRp
b24sIHByb3BGdWxsTmFtZSkgeworICAgIGlmICghaXNOb2RlKHByb3BzW3Byb3BOYW1lXSkpIHsK
KyAgICAgIHZhciBsb2NhdGlvbk5hbWUgPSBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lc1tsb2Nh
dGlvbl07CisgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0
aW9uTmFtZSArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBzdXBwbGllZCB0byAnICsgKCdgJyAr
IGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgYSBSZWFjdE5vZGUuJykpOworICAgIH0KKyAg
ICByZXR1cm4gbnVsbDsKKyAgfQorICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIo
dmFsaWRhdGUpOworfQorCitmdW5jdGlvbiBjcmVhdGVTaGFwZVR5cGVDaGVja2VyKHNoYXBlVHlw
ZXMpIHsKKyAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1l
LCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7CisgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3By
b3BOYW1lXTsKKyAgICB2YXIgcHJvcFR5cGUgPSBnZXRQcm9wVHlwZShwcm9wVmFsdWUpOworICAg
IGlmIChwcm9wVHlwZSAhPT0gJ29iamVjdCcpIHsKKyAgICAgIHZhciBsb2NhdGlvbk5hbWUgPSBS
ZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lc1tsb2NhdGlvbl07CisgICAgICByZXR1cm4gbmV3IFBy
b3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uTmFtZSArICcgYCcgKyBwcm9wRnVsbE5h
bWUgKyAnYCBvZiB0eXBlIGAnICsgcHJvcFR5cGUgKyAnYCAnICsgKCdzdXBwbGllZCB0byBgJyAr
IGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgYG9iamVjdGAuJykpOworICAgIH0KKyAgICBm
b3IgKHZhciBrZXkgaW4gc2hhcGVUeXBlcykgeworICAgICAgdmFyIGNoZWNrZXIgPSBzaGFwZVR5
cGVzW2tleV07CisgICAgICBpZiAoIWNoZWNrZXIpIHsKKyAgICAgICAgY29udGludWU7CisgICAg
ICB9CisgICAgICB2YXIgZXJyb3IgPSBjaGVja2VyKHByb3BWYWx1ZSwga2V5LCBjb21wb25lbnRO
YW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lICsgJy4nICsga2V5LCBSZWFjdFByb3BUeXBlc1Nl
Y3JldCk7CisgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgcmV0dXJuIGVycm9yOworICAgICAg
fQorICAgIH0KKyAgICByZXR1cm4gbnVsbDsKKyAgfQorICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxl
VHlwZUNoZWNrZXIodmFsaWRhdGUpOworfQorCitmdW5jdGlvbiBpc05vZGUocHJvcFZhbHVlKSB7
CisgIHN3aXRjaCAodHlwZW9mIHByb3BWYWx1ZSkgeworICAgIGNhc2UgJ251bWJlcic6CisgICAg
Y2FzZSAnc3RyaW5nJzoKKyAgICBjYXNlICd1bmRlZmluZWQnOgorICAgICAgcmV0dXJuIHRydWU7
CisgICAgY2FzZSAnYm9vbGVhbic6CisgICAgICByZXR1cm4gIXByb3BWYWx1ZTsKKyAgICBjYXNl
ICdvYmplY3QnOgorICAgICAgaWYgKEFycmF5LmlzQXJyYXkocHJvcFZhbHVlKSkgeworICAgICAg
ICByZXR1cm4gcHJvcFZhbHVlLmV2ZXJ5KGlzTm9kZSk7CisgICAgICB9CisgICAgICBpZiAocHJv
cFZhbHVlID09PSBudWxsIHx8IFJlYWN0RWxlbWVudC5pc1ZhbGlkRWxlbWVudChwcm9wVmFsdWUp
KSB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgICAgfQorCisgICAgICB2YXIgaXRlcmF0b3JG
biA9IGdldEl0ZXJhdG9yRm4ocHJvcFZhbHVlKTsKKyAgICAgIGlmIChpdGVyYXRvckZuKSB7Cisg
ICAgICAgIHZhciBpdGVyYXRvciA9IGl0ZXJhdG9yRm4uY2FsbChwcm9wVmFsdWUpOworICAgICAg
ICB2YXIgc3RlcDsKKyAgICAgICAgaWYgKGl0ZXJhdG9yRm4gIT09IHByb3BWYWx1ZS5lbnRyaWVz
KSB7CisgICAgICAgICAgd2hpbGUgKCEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkgewor
ICAgICAgICAgICAgaWYgKCFpc05vZGUoc3RlcC52YWx1ZSkpIHsKKyAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAvLyBJdGVyYXRvciB3aWxsIHByb3ZpZGUgZW50cnkgW2ssdl0gdHVwbGVzIHJh
dGhlciB0aGFuIHZhbHVlcy4KKyAgICAgICAgICB3aGlsZSAoIShzdGVwID0gaXRlcmF0b3IubmV4
dCgpKS5kb25lKSB7CisgICAgICAgICAgICB2YXIgZW50cnkgPSBzdGVwLnZhbHVlOworICAgICAg
ICAgICAgaWYgKGVudHJ5KSB7CisgICAgICAgICAgICAgIGlmICghaXNOb2RlKGVudHJ5WzFdKSkg
eworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfSBlbHNlIHsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgfQorCisgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0
OgorICAgICAgcmV0dXJuIGZhbHNlOworICB9Cit9CisKK2Z1bmN0aW9uIGlzU3ltYm9sKHByb3BU
eXBlLCBwcm9wVmFsdWUpIHsKKyAgLy8gTmF0aXZlIFN5bWJvbC4KKyAgaWYgKHByb3BUeXBlID09
PSAnc3ltYm9sJykgeworICAgIHJldHVybiB0cnVlOworICB9CisKKyAgLy8gMTkuNC4zLjUgU3lt
Ym9sLnByb3RvdHlwZVtAQHRvU3RyaW5nVGFnXSA9PT0gJ1N5bWJvbCcKKyAgaWYgKHByb3BWYWx1
ZVsnQEB0b1N0cmluZ1RhZyddID09PSAnU3ltYm9sJykgeworICAgIHJldHVybiB0cnVlOworICB9
CisKKyAgLy8gRmFsbGJhY2sgZm9yIG5vbi1zcGVjIGNvbXBsaWFudCBTeW1ib2xzIHdoaWNoIGFy
ZSBwb2x5ZmlsbGVkLgorICBpZiAodHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiBwcm9w
VmFsdWUgaW5zdGFuY2VvZiBTeW1ib2wpIHsKKyAgICByZXR1cm4gdHJ1ZTsKKyAgfQorCisgIHJl
dHVybiBmYWxzZTsKK30KKworLy8gRXF1aXZhbGVudCBvZiBgdHlwZW9mYCBidXQgd2l0aCBzcGVj
aWFsIGhhbmRsaW5nIGZvciBhcnJheSBhbmQgcmVnZXhwLgorZnVuY3Rpb24gZ2V0UHJvcFR5cGUo
cHJvcFZhbHVlKSB7CisgIHZhciBwcm9wVHlwZSA9IHR5cGVvZiBwcm9wVmFsdWU7CisgIGlmIChB
cnJheS5pc0FycmF5KHByb3BWYWx1ZSkpIHsKKyAgICByZXR1cm4gJ2FycmF5JzsKKyAgfQorICBp
ZiAocHJvcFZhbHVlIGluc3RhbmNlb2YgUmVnRXhwKSB7CisgICAgLy8gT2xkIHdlYmtpdHMgKGF0
IGxlYXN0IHVudGlsIEFuZHJvaWQgNC4wKSByZXR1cm4gJ2Z1bmN0aW9uJyByYXRoZXIgdGhhbgor
ICAgIC8vICdvYmplY3QnIGZvciB0eXBlb2YgYSBSZWdFeHAuIFdlJ2xsIG5vcm1hbGl6ZSB0aGlz
IGhlcmUgc28gdGhhdCAvYmxhLworICAgIC8vIHBhc3NlcyBQcm9wVHlwZXMub2JqZWN0LgorICAg
IHJldHVybiAnb2JqZWN0JzsKKyAgfQorICBpZiAoaXNTeW1ib2wocHJvcFR5cGUsIHByb3BWYWx1
ZSkpIHsKKyAgICByZXR1cm4gJ3N5bWJvbCc7CisgIH0KKyAgcmV0dXJuIHByb3BUeXBlOworfQor
CisvLyBUaGlzIGhhbmRsZXMgbW9yZSB0eXBlcyB0aGFuIGBnZXRQcm9wVHlwZWAuIE9ubHkgdXNl
ZCBmb3IgZXJyb3IgbWVzc2FnZXMuCisvLyBTZWUgYGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2Vy
YC4KK2Z1bmN0aW9uIGdldFByZWNpc2VUeXBlKHByb3BWYWx1ZSkgeworICB2YXIgcHJvcFR5cGUg
PSBnZXRQcm9wVHlwZShwcm9wVmFsdWUpOworICBpZiAocHJvcFR5cGUgPT09ICdvYmplY3QnKSB7
CisgICAgaWYgKHByb3BWYWx1ZSBpbnN0YW5jZW9mIERhdGUpIHsKKyAgICAgIHJldHVybiAnZGF0
ZSc7CisgICAgfSBlbHNlIGlmIChwcm9wVmFsdWUgaW5zdGFuY2VvZiBSZWdFeHApIHsKKyAgICAg
IHJldHVybiAncmVnZXhwJzsKKyAgICB9CisgIH0KKyAgcmV0dXJuIHByb3BUeXBlOworfQorCisv
LyBSZXR1cm5zIGNsYXNzIG5hbWUgb2YgdGhlIG9iamVjdCwgaWYgYW55LgorZnVuY3Rpb24gZ2V0
Q2xhc3NOYW1lKHByb3BWYWx1ZSkgeworICBpZiAoIXByb3BWYWx1ZS5jb25zdHJ1Y3RvciB8fCAh
cHJvcFZhbHVlLmNvbnN0cnVjdG9yLm5hbWUpIHsKKyAgICByZXR1cm4gQU5PTllNT1VTOworICB9
CisgIHJldHVybiBwcm9wVmFsdWUuY29uc3RydWN0b3IubmFtZTsKK30KKworbW9kdWxlLmV4cG9y
dHMgPSBSZWFjdFByb3BUeXBlczsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0UHJvcFR5
cGVzU2VjcmV0LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9S
ZWFjdFByb3BUeXBlc1NlY3JldC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zM2QzZmFjMDI3ZDgzMzY5YzhjM2E1
ZDFhNTdkMjBlODlmYjEzZjQzCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qv
bm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdFByb3BUeXBlc1NlY3JldC5qcwpAQCAtMCwwICsx
LDE2IEBACisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisg
KiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5z
ZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBm
aWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlv
bmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5U
UyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKiAKKyAqLworCisndXNlIHN0cmlj
dCc7CisKK3ZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9ICdTRUNSRVRfRE9fTk9UX1BBU1NfVEhJ
U19PUl9ZT1VfV0lMTF9CRV9GSVJFRCc7CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RQcm9wVHlw
ZXNTZWNyZXQ7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdFB1cmVDb21wb25lbnQuanMg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0UHVyZUNvbXBv
bmVudC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42NGFlYTllZmRjODYwZjkzMzA0MTIwZmU3MTBlMjY0NzEwN2I1
OGM0Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3Jl
YWN0L2xpYi9SZWFjdFB1cmVDb21wb25lbnQuanMKQEAgLTAsMCArMSw0MSBAQAorLyoqCisgKiBD
b3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qt
c3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBk
aXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2Yg
cGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2Ft
ZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9hc3NpZ24gPSBy
ZXF1aXJlKCdvYmplY3QtYXNzaWduJyk7CisKK3ZhciBSZWFjdENvbXBvbmVudCA9IHJlcXVpcmUo
Jy4vUmVhY3RDb21wb25lbnQnKTsKK3ZhciBSZWFjdE5vb3BVcGRhdGVRdWV1ZSA9IHJlcXVpcmUo
Jy4vUmVhY3ROb29wVXBkYXRlUXVldWUnKTsKKwordmFyIGVtcHR5T2JqZWN0ID0gcmVxdWlyZSgn
ZmJqcy9saWIvZW1wdHlPYmplY3QnKTsKKworLyoqCisgKiBCYXNlIGNsYXNzIGhlbHBlcnMgZm9y
IHRoZSB1cGRhdGluZyBzdGF0ZSBvZiBhIGNvbXBvbmVudC4KKyAqLworZnVuY3Rpb24gUmVhY3RQ
dXJlQ29tcG9uZW50KHByb3BzLCBjb250ZXh0LCB1cGRhdGVyKSB7CisgIC8vIER1cGxpY2F0ZWQg
ZnJvbSBSZWFjdENvbXBvbmVudC4KKyAgdGhpcy5wcm9wcyA9IHByb3BzOworICB0aGlzLmNvbnRl
eHQgPSBjb250ZXh0OworICB0aGlzLnJlZnMgPSBlbXB0eU9iamVjdDsKKyAgLy8gV2UgaW5pdGlh
bGl6ZSB0aGUgZGVmYXVsdCB1cGRhdGVyIGJ1dCB0aGUgcmVhbCBvbmUgZ2V0cyBpbmplY3RlZCBi
eSB0aGUKKyAgLy8gcmVuZGVyZXIuCisgIHRoaXMudXBkYXRlciA9IHVwZGF0ZXIgfHwgUmVhY3RO
b29wVXBkYXRlUXVldWU7Cit9CisKK2Z1bmN0aW9uIENvbXBvbmVudER1bW15KCkge30KK0NvbXBv
bmVudER1bW15LnByb3RvdHlwZSA9IFJlYWN0Q29tcG9uZW50LnByb3RvdHlwZTsKK1JlYWN0UHVy
ZUNvbXBvbmVudC5wcm90b3R5cGUgPSBuZXcgQ29tcG9uZW50RHVtbXkoKTsKK1JlYWN0UHVyZUNv
bXBvbmVudC5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBSZWFjdFB1cmVDb21wb25lbnQ7CisvLyBB
dm9pZCBhbiBleHRyYSBwcm90b3R5cGUganVtcCBmb3IgdGhlc2UgbWV0aG9kcy4KK19hc3NpZ24o
UmVhY3RQdXJlQ29tcG9uZW50LnByb3RvdHlwZSwgUmVhY3RDb21wb25lbnQucHJvdG90eXBlKTsK
K1JlYWN0UHVyZUNvbXBvbmVudC5wcm90b3R5cGUuaXNQdXJlUmVhY3RDb21wb25lbnQgPSB0cnVl
OworCittb2R1bGUuZXhwb3J0cyA9IFJlYWN0UHVyZUNvbXBvbmVudDsKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMv
cmVhY3QvbGliL1JlYWN0U3RhdGVTZXR0ZXJzLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9t
b2R1bGVzL3JlYWN0L2xpYi9SZWFjdFN0YXRlU2V0dGVycy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYTE4YTkx
OGEyMjhlY2Q3OWZiMjVhNzkxNTcyZWU1NWUwYjg5MzVhCi0tLSAvZGV2L251bGwKKysrIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdFN0YXRlU2V0dGVycy5q
cwpAQCAtMCwwICsxLDEwMyBAQAorLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNl
Ym9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBj
b2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUK
KyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJl
ZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQg
aW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1
c2Ugc3RyaWN0JzsKKwordmFyIFJlYWN0U3RhdGVTZXR0ZXJzID0geworICAvKioKKyAgICogUmV0
dXJucyBhIGZ1bmN0aW9uIHRoYXQgY2FsbHMgdGhlIHByb3ZpZGVkIGZ1bmN0aW9uLCBhbmQgdXNl
cyB0aGUgcmVzdWx0CisgICAqIG9mIHRoYXQgdG8gc2V0IHRoZSBjb21wb25lbnQncyBzdGF0ZS4K
KyAgICoKKyAgICogQHBhcmFtIHtSZWFjdENvbXBvc2l0ZUNvbXBvbmVudH0gY29tcG9uZW50Cisg
ICAqIEBwYXJhbSB7ZnVuY3Rpb259IGZ1bmNSZXR1cm5pbmdTdGF0ZSBSZXR1cm5lZCBjYWxsYmFj
ayB1c2VzIHRoaXMgdG8KKyAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRldGVybWluZSBob3cgdG8gdXBkYXRlIHN0YXRlLgorICAgKiBAcmV0dXJuIHtmdW5jdGlvbn0g
Y2FsbGJhY2sgdGhhdCB3aGVuIGludm9rZWQgdXNlcyBmdW5jUmV0dXJuaW5nU3RhdGUgdG8KKyAg
ICogICAgICAgICAgICAgICAgICAgIGRldGVybWluZWQgdGhlIG9iamVjdCBsaXRlcmFsIHRvIHNl
dFN0YXRlLgorICAgKi8KKyAgY3JlYXRlU3RhdGVTZXR0ZXI6IGZ1bmN0aW9uIChjb21wb25lbnQs
IGZ1bmNSZXR1cm5pbmdTdGF0ZSkgeworICAgIHJldHVybiBmdW5jdGlvbiAoYSwgYiwgYywgZCwg
ZSwgZikgeworICAgICAgdmFyIHBhcnRpYWxTdGF0ZSA9IGZ1bmNSZXR1cm5pbmdTdGF0ZS5jYWxs
KGNvbXBvbmVudCwgYSwgYiwgYywgZCwgZSwgZik7CisgICAgICBpZiAocGFydGlhbFN0YXRlKSB7
CisgICAgICAgIGNvbXBvbmVudC5zZXRTdGF0ZShwYXJ0aWFsU3RhdGUpOworICAgICAgfQorICAg
IH07CisgIH0sCisKKyAgLyoqCisgICAqIFJldHVybnMgYSBzaW5nbGUtYXJndW1lbnQgY2FsbGJh
Y2sgdGhhdCBjYW4gYmUgdXNlZCB0byB1cGRhdGUgYSBzaW5nbGUKKyAgICoga2V5IGluIHRoZSBj
b21wb25lbnQncyBzdGF0ZS4KKyAgICoKKyAgICogTm90ZTogdGhpcyBpcyBtZW1vaXplZCBmdW5j
dGlvbiwgd2hpY2ggbWFrZXMgaXQgaW5leHBlbnNpdmUgdG8gY2FsbC4KKyAgICoKKyAgICogQHBh
cmFtIHtSZWFjdENvbXBvc2l0ZUNvbXBvbmVudH0gY29tcG9uZW50CisgICAqIEBwYXJhbSB7c3Ry
aW5nfSBrZXkgVGhlIGtleSBpbiB0aGUgc3RhdGUgdGhhdCB5b3Ugc2hvdWxkIHVwZGF0ZS4KKyAg
ICogQHJldHVybiB7ZnVuY3Rpb259IGNhbGxiYWNrIG9mIDEgYXJndW1lbnQgd2hpY2ggY2FsbHMg
c2V0U3RhdGUoKSB3aXRoCisgICAqICAgICAgICAgICAgICAgICAgICB0aGUgcHJvdmlkZWQga2V5
TmFtZSBhbmQgY2FsbGJhY2sgYXJndW1lbnQuCisgICAqLworICBjcmVhdGVTdGF0ZUtleVNldHRl
cjogZnVuY3Rpb24gKGNvbXBvbmVudCwga2V5KSB7CisgICAgLy8gTWVtb2l6ZSB0aGUgc2V0dGVy
cy4KKyAgICB2YXIgY2FjaGUgPSBjb21wb25lbnQuX19rZXlTZXR0ZXJzIHx8IChjb21wb25lbnQu
X19rZXlTZXR0ZXJzID0ge30pOworICAgIHJldHVybiBjYWNoZVtrZXldIHx8IChjYWNoZVtrZXld
ID0gY3JlYXRlU3RhdGVLZXlTZXR0ZXIoY29tcG9uZW50LCBrZXkpKTsKKyAgfQorfTsKKworZnVu
Y3Rpb24gY3JlYXRlU3RhdGVLZXlTZXR0ZXIoY29tcG9uZW50LCBrZXkpIHsKKyAgLy8gUGFydGlh
bCBzdGF0ZSBpcyBhbGxvY2F0ZWQgb3V0c2lkZSBvZiB0aGUgZnVuY3Rpb24gY2xvc3VyZSBzbyBp
dCBjYW4gYmUKKyAgLy8gcmV1c2VkIHdpdGggZXZlcnkgY2FsbCwgYXZvaWRpbmcgbWVtb3J5IGFs
bG9jYXRpb24gd2hlbiB0aGlzIGZ1bmN0aW9uCisgIC8vIGlzIGNhbGxlZC4KKyAgdmFyIHBhcnRp
YWxTdGF0ZSA9IHt9OworICByZXR1cm4gZnVuY3Rpb24gc3RhdGVLZXlTZXR0ZXIodmFsdWUpIHsK
KyAgICBwYXJ0aWFsU3RhdGVba2V5XSA9IHZhbHVlOworICAgIGNvbXBvbmVudC5zZXRTdGF0ZShw
YXJ0aWFsU3RhdGUpOworICB9OworfQorCitSZWFjdFN0YXRlU2V0dGVycy5NaXhpbiA9IHsKKyAg
LyoqCisgICAqIFJldHVybnMgYSBmdW5jdGlvbiB0aGF0IGNhbGxzIHRoZSBwcm92aWRlZCBmdW5j
dGlvbiwgYW5kIHVzZXMgdGhlIHJlc3VsdAorICAgKiBvZiB0aGF0IHRvIHNldCB0aGUgY29tcG9u
ZW50J3Mgc3RhdGUuCisgICAqCisgICAqIEZvciBleGFtcGxlLCB0aGVzZSBzdGF0ZW1lbnRzIGFy
ZSBlcXVpdmFsZW50OgorICAgKgorICAgKiAgIHRoaXMuc2V0U3RhdGUoe3g6IDF9KTsKKyAgICog
ICB0aGlzLmNyZWF0ZVN0YXRlU2V0dGVyKGZ1bmN0aW9uKHhWYWx1ZSkgeworICAgKiAgICAgcmV0
dXJuIHt4OiB4VmFsdWV9OworICAgKiAgIH0pKDEpOworICAgKgorICAgKiBAcGFyYW0ge2Z1bmN0
aW9ufSBmdW5jUmV0dXJuaW5nU3RhdGUgUmV0dXJuZWQgY2FsbGJhY2sgdXNlcyB0aGlzIHRvCisg
ICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRlcm1pbmUgaG93IHRv
IHVwZGF0ZSBzdGF0ZS4KKyAgICogQHJldHVybiB7ZnVuY3Rpb259IGNhbGxiYWNrIHRoYXQgd2hl
biBpbnZva2VkIHVzZXMgZnVuY1JldHVybmluZ1N0YXRlIHRvCisgICAqICAgICAgICAgICAgICAg
ICAgICBkZXRlcm1pbmVkIHRoZSBvYmplY3QgbGl0ZXJhbCB0byBzZXRTdGF0ZS4KKyAgICovCisg
IGNyZWF0ZVN0YXRlU2V0dGVyOiBmdW5jdGlvbiAoZnVuY1JldHVybmluZ1N0YXRlKSB7CisgICAg
cmV0dXJuIFJlYWN0U3RhdGVTZXR0ZXJzLmNyZWF0ZVN0YXRlU2V0dGVyKHRoaXMsIGZ1bmNSZXR1
cm5pbmdTdGF0ZSk7CisgIH0sCisKKyAgLyoqCisgICAqIFJldHVybnMgYSBzaW5nbGUtYXJndW1l
bnQgY2FsbGJhY2sgdGhhdCBjYW4gYmUgdXNlZCB0byB1cGRhdGUgYSBzaW5nbGUKKyAgICoga2V5
IGluIHRoZSBjb21wb25lbnQncyBzdGF0ZS4KKyAgICoKKyAgICogRm9yIGV4YW1wbGUsIHRoZXNl
IHN0YXRlbWVudHMgYXJlIGVxdWl2YWxlbnQ6CisgICAqCisgICAqICAgdGhpcy5zZXRTdGF0ZSh7
eDogMX0pOworICAgKiAgIHRoaXMuY3JlYXRlU3RhdGVLZXlTZXR0ZXIoJ3gnKSgxKTsKKyAgICoK
KyAgICogTm90ZTogdGhpcyBpcyBtZW1vaXplZCBmdW5jdGlvbiwgd2hpY2ggbWFrZXMgaXQgaW5l
eHBlbnNpdmUgdG8gY2FsbC4KKyAgICoKKyAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5
IGluIHRoZSBzdGF0ZSB0aGF0IHlvdSBzaG91bGQgdXBkYXRlLgorICAgKiBAcmV0dXJuIHtmdW5j
dGlvbn0gY2FsbGJhY2sgb2YgMSBhcmd1bWVudCB3aGljaCBjYWxscyBzZXRTdGF0ZSgpIHdpdGgK
KyAgICogICAgICAgICAgICAgICAgICAgIHRoZSBwcm92aWRlZCBrZXlOYW1lIGFuZCBjYWxsYmFj
ayBhcmd1bWVudC4KKyAgICovCisgIGNyZWF0ZVN0YXRlS2V5U2V0dGVyOiBmdW5jdGlvbiAoa2V5
KSB7CisgICAgcmV0dXJuIFJlYWN0U3RhdGVTZXR0ZXJzLmNyZWF0ZVN0YXRlS2V5U2V0dGVyKHRo
aXMsIGtleSk7CisgIH0KK307CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3RTdGF0ZVNldHRlcnM7
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVh
Y3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdFRyYW5zaXRpb25DaGlsZE1hcHBpbmcuanMg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0VHJhbnNpdGlv
bkNoaWxkTWFwcGluZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZjNkMGU2MmU1Mzc2YTViNDMyZmZjZDExYmNm
MzE5NDg3ZjlkNWQ0Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9t
b2R1bGVzL3JlYWN0L2xpYi9SZWFjdFRyYW5zaXRpb25DaGlsZE1hcHBpbmcuanMKQEAgLTAsMCAr
MSwxMDIgQEAKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4K
KyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNl
bnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0
aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRF
TlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7
CisKK3ZhciBmbGF0dGVuQ2hpbGRyZW4gPSByZXF1aXJlKCcuL2ZsYXR0ZW5DaGlsZHJlbicpOwor
Cit2YXIgUmVhY3RUcmFuc2l0aW9uQ2hpbGRNYXBwaW5nID0geworICAvKioKKyAgICogR2l2ZW4g
YHRoaXMucHJvcHMuY2hpbGRyZW5gLCByZXR1cm4gYW4gb2JqZWN0IG1hcHBpbmcga2V5IHRvIGNo
aWxkLiBKdXN0CisgICAqIHNpbXBsZSBzeW50YWN0aWMgc3VnYXIgYXJvdW5kIGZsYXR0ZW5DaGls
ZHJlbigpLgorICAgKgorICAgKiBAcGFyYW0geyp9IGNoaWxkcmVuIGB0aGlzLnByb3BzLmNoaWxk
cmVuYAorICAgKiBAcGFyYW0ge251bWJlcj19IHNlbGZEZWJ1Z0lEIE9wdGlvbmFsIGRlYnVnSUQg
b2YgdGhlIGN1cnJlbnQgaW50ZXJuYWwgaW5zdGFuY2UuCisgICAqIEByZXR1cm4ge29iamVjdH0g
TWFwcGluZyBvZiBrZXkgdG8gY2hpbGQKKyAgICovCisgIGdldENoaWxkTWFwcGluZzogZnVuY3Rp
b24gKGNoaWxkcmVuLCBzZWxmRGVidWdJRCkgeworICAgIGlmICghY2hpbGRyZW4pIHsKKyAgICAg
IHJldHVybiBjaGlsZHJlbjsKKyAgICB9CisKKyAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJykgeworICAgICAgcmV0dXJuIGZsYXR0ZW5DaGlsZHJlbihjaGlsZHJl
biwgc2VsZkRlYnVnSUQpOworICAgIH0KKworICAgIHJldHVybiBmbGF0dGVuQ2hpbGRyZW4oY2hp
bGRyZW4pOworICB9LAorCisgIC8qKgorICAgKiBXaGVuIHlvdSdyZSBhZGRpbmcgb3IgcmVtb3Zp
bmcgY2hpbGRyZW4gc29tZSBtYXkgYmUgYWRkZWQgb3IgcmVtb3ZlZCBpbiB0aGUKKyAgICogc2Ft
ZSByZW5kZXIgcGFzcy4gV2Ugd2FudCB0byBzaG93ICpib3RoKiBzaW5jZSB3ZSB3YW50IHRvIHNp
bXVsdGFuZW91c2x5CisgICAqIGFuaW1hdGUgZWxlbWVudHMgaW4gYW5kIG91dC4gVGhpcyBmdW5j
dGlvbiB0YWtlcyBhIHByZXZpb3VzIHNldCBvZiBrZXlzCisgICAqIGFuZCBhIG5ldyBzZXQgb2Yg
a2V5cyBhbmQgbWVyZ2VzIHRoZW0gd2l0aCBpdHMgYmVzdCBndWVzcyBvZiB0aGUgY29ycmVjdAor
ICAgKiBvcmRlcmluZy4gSW4gdGhlIGZ1dHVyZSB3ZSBtYXkgZXhwb3NlIHNvbWUgb2YgdGhlIHV0
aWxpdGllcyBpbgorICAgKiBSZWFjdE11bHRpQ2hpbGQgdG8gbWFrZSB0aGlzIGVhc3ksIGJ1dCBm
b3Igbm93IFJlYWN0IGl0c2VsZiBkb2VzIG5vdAorICAgKiBkaXJlY3RseSBoYXZlIHRoaXMgY29u
Y2VwdCBvZiB0aGUgdW5pb24gb2YgcHJldkNoaWxkcmVuIGFuZCBuZXh0Q2hpbGRyZW4KKyAgICog
c28gd2UgaW1wbGVtZW50IGl0IGhlcmUuCisgICAqCisgICAqIEBwYXJhbSB7b2JqZWN0fSBwcmV2
IHByZXYgY2hpbGRyZW4gYXMgcmV0dXJuZWQgZnJvbQorICAgKiBgUmVhY3RUcmFuc2l0aW9uQ2hp
bGRNYXBwaW5nLmdldENoaWxkTWFwcGluZygpYC4KKyAgICogQHBhcmFtIHtvYmplY3R9IG5leHQg
bmV4dCBjaGlsZHJlbiBhcyByZXR1cm5lZCBmcm9tCisgICAqIGBSZWFjdFRyYW5zaXRpb25DaGls
ZE1hcHBpbmcuZ2V0Q2hpbGRNYXBwaW5nKClgLgorICAgKiBAcmV0dXJuIHtvYmplY3R9IGEga2V5
IHNldCB0aGF0IGNvbnRhaW5zIGFsbCBrZXlzIGluIGBwcmV2YCBhbmQgYWxsIGtleXMKKyAgICog
aW4gYG5leHRgIGluIGEgcmVhc29uYWJsZSBvcmRlci4KKyAgICovCisgIG1lcmdlQ2hpbGRNYXBw
aW5nczogZnVuY3Rpb24gKHByZXYsIG5leHQpIHsKKyAgICBwcmV2ID0gcHJldiB8fCB7fTsKKyAg
ICBuZXh0ID0gbmV4dCB8fCB7fTsKKworICAgIGZ1bmN0aW9uIGdldFZhbHVlRm9yS2V5KGtleSkg
eworICAgICAgaWYgKG5leHQuaGFzT3duUHJvcGVydHkoa2V5KSkgeworICAgICAgICByZXR1cm4g
bmV4dFtrZXldOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIHByZXZba2V5XTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICAvLyBGb3IgZWFjaCBrZXkgb2YgYG5leHRgLCB0aGUgbGlzdCBv
ZiBrZXlzIHRvIGluc2VydCBiZWZvcmUgdGhhdCBrZXkgaW4KKyAgICAvLyB0aGUgY29tYmluZWQg
bGlzdAorICAgIHZhciBuZXh0S2V5c1BlbmRpbmcgPSB7fTsKKworICAgIHZhciBwZW5kaW5nS2V5
cyA9IFtdOworICAgIGZvciAodmFyIHByZXZLZXkgaW4gcHJldikgeworICAgICAgaWYgKG5leHQu
aGFzT3duUHJvcGVydHkocHJldktleSkpIHsKKyAgICAgICAgaWYgKHBlbmRpbmdLZXlzLmxlbmd0
aCkgeworICAgICAgICAgIG5leHRLZXlzUGVuZGluZ1twcmV2S2V5XSA9IHBlbmRpbmdLZXlzOwor
ICAgICAgICAgIHBlbmRpbmdLZXlzID0gW107CisgICAgICAgIH0KKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHBlbmRpbmdLZXlzLnB1c2gocHJldktleSk7CisgICAgICB9CisgICAgfQorCisgICAg
dmFyIGk7CisgICAgdmFyIGNoaWxkTWFwcGluZyA9IHt9OworICAgIGZvciAodmFyIG5leHRLZXkg
aW4gbmV4dCkgeworICAgICAgaWYgKG5leHRLZXlzUGVuZGluZy5oYXNPd25Qcm9wZXJ0eShuZXh0
S2V5KSkgeworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbmV4dEtleXNQZW5kaW5nW25leHRLZXld
Lmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgdmFyIHBlbmRpbmdOZXh0S2V5ID0gbmV4dEtleXNQ
ZW5kaW5nW25leHRLZXldW2ldOworICAgICAgICAgIGNoaWxkTWFwcGluZ1tuZXh0S2V5c1BlbmRp
bmdbbmV4dEtleV1baV1dID0gZ2V0VmFsdWVGb3JLZXkocGVuZGluZ05leHRLZXkpOworICAgICAg
ICB9CisgICAgICB9CisgICAgICBjaGlsZE1hcHBpbmdbbmV4dEtleV0gPSBnZXRWYWx1ZUZvcktl
eShuZXh0S2V5KTsKKyAgICB9CisKKyAgICAvLyBGaW5hbGx5LCBhZGQgdGhlIGtleXMgd2hpY2gg
ZGlkbid0IGFwcGVhciBiZWZvcmUgYW55IGtleSBpbiBgbmV4dGAKKyAgICBmb3IgKGkgPSAwOyBp
IDwgcGVuZGluZ0tleXMubGVuZ3RoOyBpKyspIHsKKyAgICAgIGNoaWxkTWFwcGluZ1twZW5kaW5n
S2V5c1tpXV0gPSBnZXRWYWx1ZUZvcktleShwZW5kaW5nS2V5c1tpXSk7CisgICAgfQorCisgICAg
cmV0dXJuIGNoaWxkTWFwcGluZzsKKyAgfQorfTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdFRy
YW5zaXRpb25DaGlsZE1hcHBpbmc7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdFRyYW5z
aXRpb25FdmVudHMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QvbGli
L1JlYWN0VHJhbnNpdGlvbkV2ZW50cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYTRiN2U3MTZkOGVhMDRhMTAz
ZTQ5NDk5NjhiODM3MmFlODNhMDA0Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVh
Y3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdFRyYW5zaXRpb25FdmVudHMuanMKQEAgLTAs
MCArMSw3MiBAQAorLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5j
LgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxp
Y2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRk
aXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBB
VEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0
JzsKKwordmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gcmVxdWlyZSgnZmJqcy9saWIvRXhlY3V0
aW9uRW52aXJvbm1lbnQnKTsKKwordmFyIGdldFZlbmRvclByZWZpeGVkRXZlbnROYW1lID0gcmVx
dWlyZSgncmVhY3QtZG9tL2xpYi9nZXRWZW5kb3JQcmVmaXhlZEV2ZW50TmFtZScpOworCit2YXIg
ZW5kRXZlbnRzID0gW107CisKK2Z1bmN0aW9uIGRldGVjdEV2ZW50cygpIHsKKyAgdmFyIGFuaW1F
bmQgPSBnZXRWZW5kb3JQcmVmaXhlZEV2ZW50TmFtZSgnYW5pbWF0aW9uZW5kJyk7CisgIHZhciB0
cmFuc0VuZCA9IGdldFZlbmRvclByZWZpeGVkRXZlbnROYW1lKCd0cmFuc2l0aW9uZW5kJyk7CisK
KyAgaWYgKGFuaW1FbmQpIHsKKyAgICBlbmRFdmVudHMucHVzaChhbmltRW5kKTsKKyAgfQorCisg
IGlmICh0cmFuc0VuZCkgeworICAgIGVuZEV2ZW50cy5wdXNoKHRyYW5zRW5kKTsKKyAgfQorfQor
CitpZiAoRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NKSB7CisgIGRldGVjdEV2ZW50cygp
OworfQorCisvLyBXZSB1c2UgdGhlIHJhdyB7YWRkfHJlbW92ZX1FdmVudExpc3RlbmVyKCkgY2Fs
bCBiZWNhdXNlIEV2ZW50TGlzdGVuZXIKKy8vIGRvZXMgbm90IGtub3cgaG93IHRvIHJlbW92ZSBl
dmVudCBsaXN0ZW5lcnMgYW5kIHdlIHJlYWxseSBzaG91bGQKKy8vIGNsZWFuIHVwLiBBbHNvLCB0
aGVzZSBldmVudHMgYXJlIG5vdCB0cmlnZ2VyZWQgaW4gb2xkZXIgYnJvd3NlcnMKKy8vIHNvIHdl
IHNob3VsZCBiZSBBLU9LIGhlcmUuCisKK2Z1bmN0aW9uIGFkZEV2ZW50TGlzdGVuZXIobm9kZSwg
ZXZlbnROYW1lLCBldmVudExpc3RlbmVyKSB7CisgIG5vZGUuYWRkRXZlbnRMaXN0ZW5lcihldmVu
dE5hbWUsIGV2ZW50TGlzdGVuZXIsIGZhbHNlKTsKK30KKworZnVuY3Rpb24gcmVtb3ZlRXZlbnRM
aXN0ZW5lcihub2RlLCBldmVudE5hbWUsIGV2ZW50TGlzdGVuZXIpIHsKKyAgbm9kZS5yZW1vdmVF
dmVudExpc3RlbmVyKGV2ZW50TmFtZSwgZXZlbnRMaXN0ZW5lciwgZmFsc2UpOworfQorCit2YXIg
UmVhY3RUcmFuc2l0aW9uRXZlbnRzID0geworICBhZGRFbmRFdmVudExpc3RlbmVyOiBmdW5jdGlv
biAobm9kZSwgZXZlbnRMaXN0ZW5lcikgeworICAgIGlmIChlbmRFdmVudHMubGVuZ3RoID09PSAw
KSB7CisgICAgICAvLyBJZiBDU1MgdHJhbnNpdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQsIHRyaWdn
ZXIgYW4gImVuZCBhbmltYXRpb24iCisgICAgICAvLyBldmVudCBpbW1lZGlhdGVseS4KKyAgICAg
IHdpbmRvdy5zZXRUaW1lb3V0KGV2ZW50TGlzdGVuZXIsIDApOworICAgICAgcmV0dXJuOworICAg
IH0KKyAgICBlbmRFdmVudHMuZm9yRWFjaChmdW5jdGlvbiAoZW5kRXZlbnQpIHsKKyAgICAgIGFk
ZEV2ZW50TGlzdGVuZXIobm9kZSwgZW5kRXZlbnQsIGV2ZW50TGlzdGVuZXIpOworICAgIH0pOwor
ICB9LAorCisgIHJlbW92ZUVuZEV2ZW50TGlzdGVuZXI6IGZ1bmN0aW9uIChub2RlLCBldmVudExp
c3RlbmVyKSB7CisgICAgaWYgKGVuZEV2ZW50cy5sZW5ndGggPT09IDApIHsKKyAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgZW5kRXZlbnRzLmZvckVhY2goZnVuY3Rpb24gKGVuZEV2ZW50KSB7Cisg
ICAgICByZW1vdmVFdmVudExpc3RlbmVyKG5vZGUsIGVuZEV2ZW50LCBldmVudExpc3RlbmVyKTsK
KyAgICB9KTsKKyAgfQorfTsKKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdFRyYW5zaXRpb25FdmVu
dHM7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
cmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdFRyYW5zaXRpb25Hcm91cC5qcyBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RUcmFuc2l0aW9uR3Jv
dXAuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uODYzODFiMGFkNjg1ODU4ZGE4MDU5MjAwNjAyZDA0Njg4ZDc1MDE1
YgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFj
dC9saWIvUmVhY3RUcmFuc2l0aW9uR3JvdXAuanMKQEAgLTAsMCArMSwyNDkgQEAKKy8qKgorICog
Q29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
ZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9m
IHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNh
bWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBfYXNzaWduID0g
cmVxdWlyZSgnb2JqZWN0LWFzc2lnbicpOworCitmdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5z
dGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0
b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5j
dGlvbiIpOyB9IH0KKworZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwg
Y2FsbCkgeyBpZiAoIXNlbGYpIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24n
dCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTsgfSByZXR1
cm4gY2FsbCAmJiAodHlwZW9mIGNhbGwgPT09ICJvYmplY3QiIHx8IHR5cGVvZiBjYWxsID09PSAi
ZnVuY3Rpb24iKSA/IGNhbGwgOiBzZWxmOyB9CisKK2Z1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFz
cywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09ICJmdW5jdGlvbiIgJiYg
c3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNz
aW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIgKyB0eXBlb2Ygc3Vw
ZXJDbGFzcyk7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNz
ICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFz
cywgZW51bWVyYWJsZTogZmFsc2UsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUg
fSB9KTsgaWYgKHN1cGVyQ2xhc3MpIE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQ
cm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcykgOiBzdWJDbGFzcy5fX3Byb3RvX18gPSBz
dXBlckNsYXNzOyB9CisKK3ZhciBSZWFjdCA9IHJlcXVpcmUoJy4vUmVhY3QnKTsKK3ZhciBSZWFj
dEFkZG9uc0RPTURlcGVuZGVuY2llcyA9IHJlcXVpcmUoJy4vUmVhY3RBZGRvbnNET01EZXBlbmRl
bmNpZXMnKTsKK3ZhciBSZWFjdFRyYW5zaXRpb25DaGlsZE1hcHBpbmcgPSByZXF1aXJlKCcuL1Jl
YWN0VHJhbnNpdGlvbkNoaWxkTWFwcGluZycpOworCit2YXIgZW1wdHlGdW5jdGlvbiA9IHJlcXVp
cmUoJ2ZianMvbGliL2VtcHR5RnVuY3Rpb24nKTsKKworLyoqCisgKiBBIGJhc2lzIGZvciBhbmlt
YXRpb25zLiBXaGVuIGNoaWxkcmVuIGFyZSBkZWNsYXJhdGl2ZWx5IGFkZGVkIG9yIHJlbW92ZWQs
CisgKiBzcGVjaWFsIGxpZmVjeWNsZSBob29rcyBhcmUgY2FsbGVkLgorICogU2VlIGh0dHBzOi8v
ZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvYW5pbWF0aW9uLmh0bWwjbG93LWxldmVsLWFw
aS1yZWFjdHRyYW5zaXRpb25ncm91cAorICovCisKK3ZhciBSZWFjdFRyYW5zaXRpb25Hcm91cCA9
IGZ1bmN0aW9uIChfUmVhY3QkQ29tcG9uZW50KSB7CisgIF9pbmhlcml0cyhSZWFjdFRyYW5zaXRp
b25Hcm91cCwgX1JlYWN0JENvbXBvbmVudCk7CisKKyAgZnVuY3Rpb24gUmVhY3RUcmFuc2l0aW9u
R3JvdXAoKSB7CisgICAgdmFyIF90ZW1wLCBfdGhpcywgX3JldDsKKworICAgIF9jbGFzc0NhbGxD
aGVjayh0aGlzLCBSZWFjdFRyYW5zaXRpb25Hcm91cCk7CisKKyAgICBmb3IgKHZhciBfbGVuID0g
YXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9s
ZW47IF9rZXkrKykgeworICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTsKKyAgICB9
CisKKyAgICByZXR1cm4gX3JldCA9IChfdGVtcCA9IChfdGhpcyA9IF9wb3NzaWJsZUNvbnN0cnVj
dG9yUmV0dXJuKHRoaXMsIF9SZWFjdCRDb21wb25lbnQuY2FsbC5hcHBseShfUmVhY3QkQ29tcG9u
ZW50LCBbdGhpc10uY29uY2F0KGFyZ3MpKSksIF90aGlzKSwgX3RoaXMuc3RhdGUgPSB7CisgICAg
ICAvLyBUT0RPOiBjYW4gd2UgZ2V0IHVzZWZ1bCBkZWJ1ZyBpbmZvcm1hdGlvbiB0byBzaG93IGF0
IHRoaXMgcG9pbnQ/CisgICAgICBjaGlsZHJlbjogUmVhY3RUcmFuc2l0aW9uQ2hpbGRNYXBwaW5n
LmdldENoaWxkTWFwcGluZyhfdGhpcy5wcm9wcy5jaGlsZHJlbikKKyAgICB9LCBfdGhpcy5wZXJm
b3JtQXBwZWFyID0gZnVuY3Rpb24gKGtleSkgeworICAgICAgX3RoaXMuY3VycmVudGx5VHJhbnNp
dGlvbmluZ0tleXNba2V5XSA9IHRydWU7CisKKyAgICAgIHZhciBjb21wb25lbnQgPSBfdGhpcy5y
ZWZzW2tleV07CisKKyAgICAgIGlmIChjb21wb25lbnQuY29tcG9uZW50V2lsbEFwcGVhcikgewor
ICAgICAgICBjb21wb25lbnQuY29tcG9uZW50V2lsbEFwcGVhcihfdGhpcy5faGFuZGxlRG9uZUFw
cGVhcmluZy5iaW5kKF90aGlzLCBrZXkpKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIF90aGlz
Ll9oYW5kbGVEb25lQXBwZWFyaW5nKGtleSk7CisgICAgICB9CisgICAgfSwgX3RoaXMuX2hhbmRs
ZURvbmVBcHBlYXJpbmcgPSBmdW5jdGlvbiAoa2V5KSB7CisgICAgICB2YXIgY29tcG9uZW50ID0g
X3RoaXMucmVmc1trZXldOworICAgICAgaWYgKGNvbXBvbmVudC5jb21wb25lbnREaWRBcHBlYXIp
IHsKKyAgICAgICAgY29tcG9uZW50LmNvbXBvbmVudERpZEFwcGVhcigpOworICAgICAgfQorCisg
ICAgICBkZWxldGUgX3RoaXMuY3VycmVudGx5VHJhbnNpdGlvbmluZ0tleXNba2V5XTsKKworICAg
ICAgdmFyIGN1cnJlbnRDaGlsZE1hcHBpbmc7CisgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgICBjdXJyZW50Q2hpbGRNYXBwaW5nID0gUmVh
Y3RUcmFuc2l0aW9uQ2hpbGRNYXBwaW5nLmdldENoaWxkTWFwcGluZyhfdGhpcy5wcm9wcy5jaGls
ZHJlbiwgUmVhY3RBZGRvbnNET01EZXBlbmRlbmNpZXMuZ2V0UmVhY3RJbnN0YW5jZU1hcCgpLmdl
dChfdGhpcykuX2RlYnVnSUQpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgY3VycmVudENoaWxk
TWFwcGluZyA9IFJlYWN0VHJhbnNpdGlvbkNoaWxkTWFwcGluZy5nZXRDaGlsZE1hcHBpbmcoX3Ro
aXMucHJvcHMuY2hpbGRyZW4pOworICAgICAgfQorCisgICAgICBpZiAoIWN1cnJlbnRDaGlsZE1h
cHBpbmcgfHwgIWN1cnJlbnRDaGlsZE1hcHBpbmcuaGFzT3duUHJvcGVydHkoa2V5KSkgeworICAg
ICAgICAvLyBUaGlzIHdhcyByZW1vdmVkIGJlZm9yZSBpdCBoYWQgZnVsbHkgYXBwZWFyZWQuIFJl
bW92ZSBpdC4KKyAgICAgICAgX3RoaXMucGVyZm9ybUxlYXZlKGtleSk7CisgICAgICB9CisgICAg
fSwgX3RoaXMucGVyZm9ybUVudGVyID0gZnVuY3Rpb24gKGtleSkgeworICAgICAgX3RoaXMuY3Vy
cmVudGx5VHJhbnNpdGlvbmluZ0tleXNba2V5XSA9IHRydWU7CisKKyAgICAgIHZhciBjb21wb25l
bnQgPSBfdGhpcy5yZWZzW2tleV07CisKKyAgICAgIGlmIChjb21wb25lbnQuY29tcG9uZW50V2ls
bEVudGVyKSB7CisgICAgICAgIGNvbXBvbmVudC5jb21wb25lbnRXaWxsRW50ZXIoX3RoaXMuX2hh
bmRsZURvbmVFbnRlcmluZy5iaW5kKF90aGlzLCBrZXkpKTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIF90aGlzLl9oYW5kbGVEb25lRW50ZXJpbmcoa2V5KTsKKyAgICAgIH0KKyAgICB9LCBfdGhp
cy5faGFuZGxlRG9uZUVudGVyaW5nID0gZnVuY3Rpb24gKGtleSkgeworICAgICAgdmFyIGNvbXBv
bmVudCA9IF90aGlzLnJlZnNba2V5XTsKKyAgICAgIGlmIChjb21wb25lbnQuY29tcG9uZW50RGlk
RW50ZXIpIHsKKyAgICAgICAgY29tcG9uZW50LmNvbXBvbmVudERpZEVudGVyKCk7CisgICAgICB9
CisKKyAgICAgIGRlbGV0ZSBfdGhpcy5jdXJyZW50bHlUcmFuc2l0aW9uaW5nS2V5c1trZXldOwor
CisgICAgICB2YXIgY3VycmVudENoaWxkTWFwcGluZzsKKyAgICAgIGlmIChwcm9jZXNzLmVudi5O
T0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7CisgICAgICAgIGN1cnJlbnRDaGlsZE1hcHBpbmcg
PSBSZWFjdFRyYW5zaXRpb25DaGlsZE1hcHBpbmcuZ2V0Q2hpbGRNYXBwaW5nKF90aGlzLnByb3Bz
LmNoaWxkcmVuLCBSZWFjdEFkZG9uc0RPTURlcGVuZGVuY2llcy5nZXRSZWFjdEluc3RhbmNlTWFw
KCkuZ2V0KF90aGlzKS5fZGVidWdJRCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBjdXJyZW50
Q2hpbGRNYXBwaW5nID0gUmVhY3RUcmFuc2l0aW9uQ2hpbGRNYXBwaW5nLmdldENoaWxkTWFwcGlu
ZyhfdGhpcy5wcm9wcy5jaGlsZHJlbik7CisgICAgICB9CisKKyAgICAgIGlmICghY3VycmVudENo
aWxkTWFwcGluZyB8fCAhY3VycmVudENoaWxkTWFwcGluZy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7
CisgICAgICAgIC8vIFRoaXMgd2FzIHJlbW92ZWQgYmVmb3JlIGl0IGhhZCBmdWxseSBlbnRlcmVk
LiBSZW1vdmUgaXQuCisgICAgICAgIF90aGlzLnBlcmZvcm1MZWF2ZShrZXkpOworICAgICAgfQor
ICAgIH0sIF90aGlzLnBlcmZvcm1MZWF2ZSA9IGZ1bmN0aW9uIChrZXkpIHsKKyAgICAgIF90aGlz
LmN1cnJlbnRseVRyYW5zaXRpb25pbmdLZXlzW2tleV0gPSB0cnVlOworCisgICAgICB2YXIgY29t
cG9uZW50ID0gX3RoaXMucmVmc1trZXldOworICAgICAgaWYgKGNvbXBvbmVudC5jb21wb25lbnRX
aWxsTGVhdmUpIHsKKyAgICAgICAgY29tcG9uZW50LmNvbXBvbmVudFdpbGxMZWF2ZShfdGhpcy5f
aGFuZGxlRG9uZUxlYXZpbmcuYmluZChfdGhpcywga2V5KSk7CisgICAgICB9IGVsc2UgeworICAg
ICAgICAvLyBOb3RlIHRoYXQgdGhpcyBpcyBzb21ld2hhdCBkYW5nZXJvdXMgYi9jIGl0IGNhbGxz
IHNldFN0YXRlKCkKKyAgICAgICAgLy8gYWdhaW4sIGVmZmVjdGl2ZWx5IG11dGF0aW5nIHRoZSBj
b21wb25lbnQgYmVmb3JlIGFsbCB0aGUgd29yaworICAgICAgICAvLyBpcyBkb25lLgorICAgICAg
ICBfdGhpcy5faGFuZGxlRG9uZUxlYXZpbmcoa2V5KTsKKyAgICAgIH0KKyAgICB9LCBfdGhpcy5f
aGFuZGxlRG9uZUxlYXZpbmcgPSBmdW5jdGlvbiAoa2V5KSB7CisgICAgICB2YXIgY29tcG9uZW50
ID0gX3RoaXMucmVmc1trZXldOworCisgICAgICBpZiAoY29tcG9uZW50LmNvbXBvbmVudERpZExl
YXZlKSB7CisgICAgICAgIGNvbXBvbmVudC5jb21wb25lbnREaWRMZWF2ZSgpOworICAgICAgfQor
CisgICAgICBkZWxldGUgX3RoaXMuY3VycmVudGx5VHJhbnNpdGlvbmluZ0tleXNba2V5XTsKKwor
ICAgICAgdmFyIGN1cnJlbnRDaGlsZE1hcHBpbmc7CisgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9E
RV9FTlYgIT09ICdwcm9kdWN0aW9uJykgeworICAgICAgICBjdXJyZW50Q2hpbGRNYXBwaW5nID0g
UmVhY3RUcmFuc2l0aW9uQ2hpbGRNYXBwaW5nLmdldENoaWxkTWFwcGluZyhfdGhpcy5wcm9wcy5j
aGlsZHJlbiwgUmVhY3RBZGRvbnNET01EZXBlbmRlbmNpZXMuZ2V0UmVhY3RJbnN0YW5jZU1hcCgp
LmdldChfdGhpcykuX2RlYnVnSUQpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgY3VycmVudENo
aWxkTWFwcGluZyA9IFJlYWN0VHJhbnNpdGlvbkNoaWxkTWFwcGluZy5nZXRDaGlsZE1hcHBpbmco
X3RoaXMucHJvcHMuY2hpbGRyZW4pOworICAgICAgfQorCisgICAgICBpZiAoY3VycmVudENoaWxk
TWFwcGluZyAmJiBjdXJyZW50Q2hpbGRNYXBwaW5nLmhhc093blByb3BlcnR5KGtleSkpIHsKKyAg
ICAgICAgLy8gVGhpcyBlbnRlcmVkIGFnYWluIGJlZm9yZSBpdCBmdWxseSBsZWZ0LiBBZGQgaXQg
YWdhaW4uCisgICAgICAgIF90aGlzLnBlcmZvcm1FbnRlcihrZXkpOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgX3RoaXMuc2V0U3RhdGUoZnVuY3Rpb24gKHN0YXRlKSB7CisgICAgICAgICAgdmFy
IG5ld0NoaWxkcmVuID0gX2Fzc2lnbih7fSwgc3RhdGUuY2hpbGRyZW4pOworICAgICAgICAgIGRl
bGV0ZSBuZXdDaGlsZHJlbltrZXldOworICAgICAgICAgIHJldHVybiB7IGNoaWxkcmVuOiBuZXdD
aGlsZHJlbiB9OworICAgICAgICB9KTsKKyAgICAgIH0KKyAgICB9LCBfdGVtcCksIF9wb3NzaWJs
ZUNvbnN0cnVjdG9yUmV0dXJuKF90aGlzLCBfcmV0KTsKKyAgfQorCisgIFJlYWN0VHJhbnNpdGlv
bkdyb3VwLnByb3RvdHlwZS5jb21wb25lbnRXaWxsTW91bnQgPSBmdW5jdGlvbiBjb21wb25lbnRX
aWxsTW91bnQoKSB7CisgICAgdGhpcy5jdXJyZW50bHlUcmFuc2l0aW9uaW5nS2V5cyA9IHt9Owor
ICAgIHRoaXMua2V5c1RvRW50ZXIgPSBbXTsKKyAgICB0aGlzLmtleXNUb0xlYXZlID0gW107Cisg
IH07CisKKyAgUmVhY3RUcmFuc2l0aW9uR3JvdXAucHJvdG90eXBlLmNvbXBvbmVudERpZE1vdW50
ID0gZnVuY3Rpb24gY29tcG9uZW50RGlkTW91bnQoKSB7CisgICAgdmFyIGluaXRpYWxDaGlsZE1h
cHBpbmcgPSB0aGlzLnN0YXRlLmNoaWxkcmVuOworICAgIGZvciAodmFyIGtleSBpbiBpbml0aWFs
Q2hpbGRNYXBwaW5nKSB7CisgICAgICBpZiAoaW5pdGlhbENoaWxkTWFwcGluZ1trZXldKSB7Cisg
ICAgICAgIHRoaXMucGVyZm9ybUFwcGVhcihrZXkpOworICAgICAgfQorICAgIH0KKyAgfTsKKwor
ICBSZWFjdFRyYW5zaXRpb25Hcm91cC5wcm90b3R5cGUuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9w
cyA9IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMobmV4dFByb3BzKSB7CisgICAg
dmFyIG5leHRDaGlsZE1hcHBpbmc7CisgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicpIHsKKyAgICAgIG5leHRDaGlsZE1hcHBpbmcgPSBSZWFjdFRyYW5zaXRpb25D
aGlsZE1hcHBpbmcuZ2V0Q2hpbGRNYXBwaW5nKG5leHRQcm9wcy5jaGlsZHJlbiwgUmVhY3RBZGRv
bnNET01EZXBlbmRlbmNpZXMuZ2V0UmVhY3RJbnN0YW5jZU1hcCgpLmdldCh0aGlzKS5fZGVidWdJ
RCk7CisgICAgfSBlbHNlIHsKKyAgICAgIG5leHRDaGlsZE1hcHBpbmcgPSBSZWFjdFRyYW5zaXRp
b25DaGlsZE1hcHBpbmcuZ2V0Q2hpbGRNYXBwaW5nKG5leHRQcm9wcy5jaGlsZHJlbik7CisgICAg
fQorICAgIHZhciBwcmV2Q2hpbGRNYXBwaW5nID0gdGhpcy5zdGF0ZS5jaGlsZHJlbjsKKworICAg
IHRoaXMuc2V0U3RhdGUoeworICAgICAgY2hpbGRyZW46IFJlYWN0VHJhbnNpdGlvbkNoaWxkTWFw
cGluZy5tZXJnZUNoaWxkTWFwcGluZ3MocHJldkNoaWxkTWFwcGluZywgbmV4dENoaWxkTWFwcGlu
ZykKKyAgICB9KTsKKworICAgIHZhciBrZXk7CisKKyAgICBmb3IgKGtleSBpbiBuZXh0Q2hpbGRN
YXBwaW5nKSB7CisgICAgICB2YXIgaGFzUHJldiA9IHByZXZDaGlsZE1hcHBpbmcgJiYgcHJldkNo
aWxkTWFwcGluZy5oYXNPd25Qcm9wZXJ0eShrZXkpOworICAgICAgaWYgKG5leHRDaGlsZE1hcHBp
bmdba2V5XSAmJiAhaGFzUHJldiAmJiAhdGhpcy5jdXJyZW50bHlUcmFuc2l0aW9uaW5nS2V5c1tr
ZXldKSB7CisgICAgICAgIHRoaXMua2V5c1RvRW50ZXIucHVzaChrZXkpOworICAgICAgfQorICAg
IH0KKworICAgIGZvciAoa2V5IGluIHByZXZDaGlsZE1hcHBpbmcpIHsKKyAgICAgIHZhciBoYXNO
ZXh0ID0gbmV4dENoaWxkTWFwcGluZyAmJiBuZXh0Q2hpbGRNYXBwaW5nLmhhc093blByb3BlcnR5
KGtleSk7CisgICAgICBpZiAocHJldkNoaWxkTWFwcGluZ1trZXldICYmICFoYXNOZXh0ICYmICF0
aGlzLmN1cnJlbnRseVRyYW5zaXRpb25pbmdLZXlzW2tleV0pIHsKKyAgICAgICAgdGhpcy5rZXlz
VG9MZWF2ZS5wdXNoKGtleSk7CisgICAgICB9CisgICAgfQorCisgICAgLy8gSWYgd2Ugd2FudCB0
byBzb21lZGF5IGNoZWNrIGZvciByZW9yZGVyaW5nLCB3ZSBjb3VsZCBkbyBpdCBoZXJlLgorICB9
OworCisgIFJlYWN0VHJhbnNpdGlvbkdyb3VwLnByb3RvdHlwZS5jb21wb25lbnREaWRVcGRhdGUg
PSBmdW5jdGlvbiBjb21wb25lbnREaWRVcGRhdGUoKSB7CisgICAgdmFyIGtleXNUb0VudGVyID0g
dGhpcy5rZXlzVG9FbnRlcjsKKyAgICB0aGlzLmtleXNUb0VudGVyID0gW107CisgICAga2V5c1Rv
RW50ZXIuZm9yRWFjaCh0aGlzLnBlcmZvcm1FbnRlcik7CisKKyAgICB2YXIga2V5c1RvTGVhdmUg
PSB0aGlzLmtleXNUb0xlYXZlOworICAgIHRoaXMua2V5c1RvTGVhdmUgPSBbXTsKKyAgICBrZXlz
VG9MZWF2ZS5mb3JFYWNoKHRoaXMucGVyZm9ybUxlYXZlKTsKKyAgfTsKKworICBSZWFjdFRyYW5z
aXRpb25Hcm91cC5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gcmVuZGVyKCkgeworICAgIC8v
IFRPRE86IHdlIGNvdWxkIGdldCByaWQgb2YgdGhlIG5lZWQgZm9yIHRoZSB3cmFwcGVyIG5vZGUK
KyAgICAvLyBieSBjbG9uaW5nIGEgc2luZ2xlIGNoaWxkCisgICAgdmFyIGNoaWxkcmVuVG9SZW5k
ZXIgPSBbXTsKKyAgICBmb3IgKHZhciBrZXkgaW4gdGhpcy5zdGF0ZS5jaGlsZHJlbikgeworICAg
ICAgdmFyIGNoaWxkID0gdGhpcy5zdGF0ZS5jaGlsZHJlbltrZXldOworICAgICAgaWYgKGNoaWxk
KSB7CisgICAgICAgIC8vIFlvdSBtYXkgbmVlZCB0byBhcHBseSByZWFjdGl2ZSB1cGRhdGVzIHRv
IGEgY2hpbGQgYXMgaXQgaXMgbGVhdmluZy4KKyAgICAgICAgLy8gVGhlIG5vcm1hbCBSZWFjdCB3
YXkgdG8gZG8gaXQgd29uJ3Qgd29yayBzaW5jZSB0aGUgY2hpbGQgd2lsbCBoYXZlCisgICAgICAg
IC8vIGFscmVhZHkgYmVlbiByZW1vdmVkLiBJbiBjYXNlIHlvdSBuZWVkIHRoaXMgYmVoYXZpb3Ig
eW91IGNhbiBwcm92aWRlCisgICAgICAgIC8vIGEgY2hpbGRGYWN0b3J5IGZ1bmN0aW9uIHRvIHdy
YXAgZXZlcnkgY2hpbGQsIGV2ZW4gdGhlIG9uZXMgdGhhdCBhcmUKKyAgICAgICAgLy8gbGVhdmlu
Zy4KKyAgICAgICAgY2hpbGRyZW5Ub1JlbmRlci5wdXNoKFJlYWN0LmNsb25lRWxlbWVudCh0aGlz
LnByb3BzLmNoaWxkRmFjdG9yeShjaGlsZCksIHsgcmVmOiBrZXksIGtleToga2V5IH0pKTsKKyAg
ICAgIH0KKyAgICB9CisKKyAgICAvLyBEbyBub3QgZm9yd2FyZCBSZWFjdFRyYW5zaXRpb25Hcm91
cCBwcm9wcyB0byBwcmltaXRpdmUgRE9NIG5vZGVzCisgICAgdmFyIHByb3BzID0gX2Fzc2lnbih7
fSwgdGhpcy5wcm9wcyk7CisgICAgZGVsZXRlIHByb3BzLnRyYW5zaXRpb25MZWF2ZTsKKyAgICBk
ZWxldGUgcHJvcHMudHJhbnNpdGlvbk5hbWU7CisgICAgZGVsZXRlIHByb3BzLnRyYW5zaXRpb25B
cHBlYXI7CisgICAgZGVsZXRlIHByb3BzLnRyYW5zaXRpb25FbnRlcjsKKyAgICBkZWxldGUgcHJv
cHMuY2hpbGRGYWN0b3J5OworICAgIGRlbGV0ZSBwcm9wcy50cmFuc2l0aW9uTGVhdmVUaW1lb3V0
OworICAgIGRlbGV0ZSBwcm9wcy50cmFuc2l0aW9uRW50ZXJUaW1lb3V0OworICAgIGRlbGV0ZSBw
cm9wcy50cmFuc2l0aW9uQXBwZWFyVGltZW91dDsKKyAgICBkZWxldGUgcHJvcHMuY29tcG9uZW50
OworCisgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQodGhpcy5wcm9wcy5jb21wb25lbnQs
IHByb3BzLCBjaGlsZHJlblRvUmVuZGVyKTsKKyAgfTsKKworICByZXR1cm4gUmVhY3RUcmFuc2l0
aW9uR3JvdXA7Cit9KFJlYWN0LkNvbXBvbmVudCk7CisKK1JlYWN0VHJhbnNpdGlvbkdyb3VwLmRp
c3BsYXlOYW1lID0gJ1JlYWN0VHJhbnNpdGlvbkdyb3VwJzsKK1JlYWN0VHJhbnNpdGlvbkdyb3Vw
LnByb3BUeXBlcyA9IHsKKyAgY29tcG9uZW50OiBSZWFjdC5Qcm9wVHlwZXMuYW55LAorICBjaGls
ZEZhY3Rvcnk6IFJlYWN0LlByb3BUeXBlcy5mdW5jCit9OworUmVhY3RUcmFuc2l0aW9uR3JvdXAu
ZGVmYXVsdFByb3BzID0geworICBjb21wb25lbnQ6ICdzcGFuJywKKyAgY2hpbGRGYWN0b3J5OiBl
bXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zQXJndW1lbnQKK307CisKKworbW9kdWxlLmV4cG9ydHMg
PSBSZWFjdFRyYW5zaXRpb25Hcm91cDsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0VU1E
RW50cnkuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0
VU1ERW50cnkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjUwM2E4ZmVmOTNmMGE2NTA3NGRlZTNkODRjM2ZhMGI5
NGRkMjhjNgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxl
cy9yZWFjdC9saWIvUmVhY3RVTURFbnRyeS5qcwpAQCAtMCwwICsxLDMxIEBACisvKioKKyAqIENv
cHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1z
dHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRp
cmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBw
YXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1l
IGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX2Fzc2lnbiA9IHJl
cXVpcmUoJ29iamVjdC1hc3NpZ24nKTsKKwordmFyIFJlYWN0ID0gcmVxdWlyZSgnLi9SZWFjdCcp
OworCisvLyBgdmVyc2lvbmAgd2lsbCBiZSBhZGRlZCBoZXJlIGJ5IHRoZSBSZWFjdCBtb2R1bGUu
Cit2YXIgUmVhY3RVTURFbnRyeSA9IF9hc3NpZ24oeworICBfX1NFQ1JFVF9JTlRFUk5BTFNfRE9f
Tk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRDogeworICAgIFJlYWN0Q3VycmVudE93bmVyOiBy
ZXF1aXJlKCcuL1JlYWN0Q3VycmVudE93bmVyJykKKyAgfQorfSwgUmVhY3QpOworCitpZiAocHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgeworICBfYXNzaWduKFJlYWN0VU1E
RW50cnkuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQs
IHsKKyAgICAvLyBSZWFjdENvbXBvbmVudFRyZWVIb29rIHNob3VsZCBub3QgYmUgaW5jbHVkZWQg
aW4gcHJvZHVjdGlvbi4KKyAgICBSZWFjdENvbXBvbmVudFRyZWVIb29rOiByZXF1aXJlKCcuL1Jl
YWN0Q29tcG9uZW50VHJlZUhvb2snKQorICB9KTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBSZWFj
dFVNREVudHJ5OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RVTURTaGltLmpzIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdFVNRFNoaW0uanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNTFmNjBiMjA1YWQ3ZGNiZmQwNjFlNWMyN2JjNGVmMDcwOWQwZmYyNQotLS0gL2Rl
di9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVh
Y3RVTURTaGltLmpzCkBAIC0wLDAgKzEsMTUgQEAKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJl
c2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhp
cyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91
bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMg
c291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2Fu
IGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoK
KyAqLworCisvKiBnbG9iYWxzIFJlYWN0ICovCisKKyd1c2Ugc3RyaWN0JzsKKworbW9kdWxlLmV4
cG9ydHMgPSBSZWFjdDsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0VmVyc2lvbi5qcyBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RWZXJzaW9uLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmI1NTJmNzIzYzk0MzlkODcxMGM3ODY5ODU0ZjJjOTgzODc2MTYwNDMKLS0t
IC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QvbGli
L1JlYWN0VmVyc2lvbi5qcwpAQCAtMCwwICsxLDEzIEBACisvKioKKyAqIENvcHlyaWdodCAyMDEz
LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNl
IGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0
aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRz
IGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4K
KyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCittb2R1bGUuZXhwb3J0cyA9ICcxNS40LjAnOwpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0
L25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RXaXRoQWRkb25zLmpzIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
cmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdFdpdGhBZGRvbnMuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMzI2M2ZhZDJjNDJkYmRhYmU4NWU1NGUwMDJmNzdiOWNhZTExODE1YQotLS0gL2Rldi9udWxs
CisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RXaXRo
QWRkb25zLmpzCkBAIC0wLDAgKzEsNTIgQEAKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2Vu
dCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBz
b3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQg
aW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291
cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJl
IGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAq
LworCisndXNlIHN0cmljdCc7CisKK3ZhciBMaW5rZWRTdGF0ZU1peGluID0gcmVxdWlyZSgnLi9M
aW5rZWRTdGF0ZU1peGluJyk7Cit2YXIgUmVhY3QgPSByZXF1aXJlKCcuL1JlYWN0Jyk7Cit2YXIg
UmVhY3RBZGRvbnNET01EZXBlbmRlbmNpZXMgPSByZXF1aXJlKCcuL1JlYWN0QWRkb25zRE9NRGVw
ZW5kZW5jaWVzJyk7Cit2YXIgUmVhY3RDb21wb25lbnRXaXRoUHVyZVJlbmRlck1peGluID0gcmVx
dWlyZSgnLi9SZWFjdENvbXBvbmVudFdpdGhQdXJlUmVuZGVyTWl4aW4nKTsKK3ZhciBSZWFjdENT
U1RyYW5zaXRpb25Hcm91cCA9IHJlcXVpcmUoJy4vUmVhY3RDU1NUcmFuc2l0aW9uR3JvdXAnKTsK
K3ZhciBSZWFjdEZyYWdtZW50ID0gcmVxdWlyZSgnLi9SZWFjdEZyYWdtZW50Jyk7Cit2YXIgUmVh
Y3RUcmFuc2l0aW9uR3JvdXAgPSByZXF1aXJlKCcuL1JlYWN0VHJhbnNpdGlvbkdyb3VwJyk7CisK
K3ZhciBzaGFsbG93Q29tcGFyZSA9IHJlcXVpcmUoJy4vc2hhbGxvd0NvbXBhcmUnKTsKK3ZhciB1
cGRhdGUgPSByZXF1aXJlKCcuL3VwZGF0ZScpOworCitSZWFjdC5hZGRvbnMgPSB7CisgIENTU1Ry
YW5zaXRpb25Hcm91cDogUmVhY3RDU1NUcmFuc2l0aW9uR3JvdXAsCisgIExpbmtlZFN0YXRlTWl4
aW46IExpbmtlZFN0YXRlTWl4aW4sCisgIFB1cmVSZW5kZXJNaXhpbjogUmVhY3RDb21wb25lbnRX
aXRoUHVyZVJlbmRlck1peGluLAorICBUcmFuc2l0aW9uR3JvdXA6IFJlYWN0VHJhbnNpdGlvbkdy
b3VwLAorCisgIGNyZWF0ZUZyYWdtZW50OiBSZWFjdEZyYWdtZW50LmNyZWF0ZSwKKyAgc2hhbGxv
d0NvbXBhcmU6IHNoYWxsb3dDb21wYXJlLAorICB1cGRhdGU6IHVwZGF0ZQorfTsKKworaWYgKHBy
b2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHsKKyAgLy8gRm9yIHRoZSBVTUQg
YnVpbGQgd2UgZ2V0IHRoZXNlIGxhemlseSBmcm9tIHRoZSBnbG9iYWwgc2luY2UgdGhleSdyZSB0
aWVkCisgIC8vIHRvIHRoZSBET00gcmVuZGVyZXIgYW5kIGl0IGhhc24ndCBsb2FkZWQgeWV0Lgor
ICBPYmplY3QuZGVmaW5lUHJvcGVydHkoUmVhY3QuYWRkb25zLCAnUGVyZicsIHsKKyAgICBlbnVt
ZXJhYmxlOiB0cnVlLAorICAgIGdldDogZnVuY3Rpb24gKCkgeworICAgICAgcmV0dXJuIFJlYWN0
QWRkb25zRE9NRGVwZW5kZW5jaWVzLmdldFJlYWN0UGVyZigpOworICAgIH0KKyAgfSk7CisgIE9i
amVjdC5kZWZpbmVQcm9wZXJ0eShSZWFjdC5hZGRvbnMsICdUZXN0VXRpbHMnLCB7CisgICAgZW51
bWVyYWJsZTogdHJ1ZSwKKyAgICBnZXQ6IGZ1bmN0aW9uICgpIHsKKyAgICAgIHJldHVybiBSZWFj
dEFkZG9uc0RPTURlcGVuZGVuY2llcy5nZXRSZWFjdFRlc3RVdGlscygpOworICAgIH0KKyAgfSk7
Cit9CisKK21vZHVsZS5leHBvcnRzID0gUmVhY3Q7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9S
ZWFjdFdpdGhBZGRvbnNVTURFbnRyeS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxl
cy9yZWFjdC9saWIvUmVhY3RXaXRoQWRkb25zVU1ERW50cnkuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWExMWQz
NmMwZjcxOWE2ODVlNjdlNGMxNjc4MGNlYzMzY2QwNzBmNwotLS0gL2Rldi9udWxsCisrKyBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RXaXRoQWRkb25zVU1E
RW50cnkuanMKQEAgLTAsMCArMSwzMSBAQAorLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICov
CisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIF9hc3NpZ24gPSByZXF1aXJlKCdvYmplY3QtYXNzaWdu
Jyk7CisKK3ZhciBSZWFjdFdpdGhBZGRvbnMgPSByZXF1aXJlKCcuL1JlYWN0V2l0aEFkZG9ucycp
OworCisvLyBgdmVyc2lvbmAgd2lsbCBiZSBhZGRlZCBoZXJlIGJ5IHRoZSBSZWFjdCBtb2R1bGUu
Cit2YXIgUmVhY3RXaXRoQWRkb25zVU1ERW50cnkgPSBfYXNzaWduKHsKKyAgX19TRUNSRVRfSU5U
RVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQ6IHsKKyAgICBSZWFjdEN1cnJl
bnRPd25lcjogcmVxdWlyZSgnLi9SZWFjdEN1cnJlbnRPd25lcicpCisgIH0KK30sIFJlYWN0V2l0
aEFkZG9ucyk7CisKK2lmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7
CisgIF9hc3NpZ24oUmVhY3RXaXRoQWRkb25zVU1ERW50cnkuX19TRUNSRVRfSU5URVJOQUxTX0RP
X05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQsIHsKKyAgICAvLyBSZWFjdENvbXBvbmVudFRy
ZWVIb29rIHNob3VsZCBub3QgYmUgaW5jbHVkZWQgaW4gcHJvZHVjdGlvbi4KKyAgICBSZWFjdENv
bXBvbmVudFRyZWVIb29rOiByZXF1aXJlKCcuL1JlYWN0Q29tcG9uZW50VHJlZUhvb2snKQorICB9
KTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBSZWFjdFdpdGhBZGRvbnNVTURFbnRyeTsKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2Rl
X21vZHVsZXMvcmVhY3QvbGliL2NhbkRlZmluZVByb3BlcnR5LmpzIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVh
Y3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9jYW5EZWZpbmVQcm9wZXJ0eS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jZGU5ZjVjNTUyMjY4Y2ViMTVmMzU5ZTE2YzY5MWU1YzU5ZTNlYWM0Ci0tLSAvZGV2L251bGwK
KysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9jYW5EZWZpbmVQ
cm9wZXJ0eS5qcwpAQCAtMCwwICsxLDI1IEBACisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNl
bnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMg
c291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5k
IGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNv
dXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBi
ZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisg
KiAKKyAqLworCisndXNlIHN0cmljdCc7CisKK3ZhciBjYW5EZWZpbmVQcm9wZXJ0eSA9IGZhbHNl
OworaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHsKKyAgdHJ5IHsK
KyAgICAvLyAkRmxvd0ZpeE1lIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9mbG93L2lzc3Vl
cy8yODUKKyAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sICd4JywgeyBnZXQ6IGZ1bmN0aW9u
ICgpIHt9IH0pOworICAgIGNhbkRlZmluZVByb3BlcnR5ID0gdHJ1ZTsKKyAgfSBjYXRjaCAoeCkg
eworICAgIC8vIElFIHdpbGwgZmFpbCBvbiBkZWZpbmVQcm9wZXJ0eQorICB9Cit9CisKK21vZHVs
ZS5leHBvcnRzID0gY2FuRGVmaW5lUHJvcGVydHk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9j
aGVja1JlYWN0VHlwZVNwZWMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVh
Y3QvbGliL2NoZWNrUmVhY3RUeXBlU3BlYy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45Njg0ZDAzNGZmNmZlNDUw
YjA4N2RhYTI4NWZmNDU4YTRkYTM5YzlmCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
cmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9jaGVja1JlYWN0VHlwZVNwZWMuanMKQEAgLTAs
MCArMSw4NiBAQAorLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5j
LgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxp
Y2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRk
aXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBB
VEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgorICovCisKKyd1c2Ugc3RyaWN0
JzsKKwordmFyIF9wcm9kSW52YXJpYW50ID0gcmVxdWlyZSgnLi9yZWFjdFByb2RJbnZhcmlhbnQn
KTsKKwordmFyIFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzID0gcmVxdWlyZSgnLi9SZWFjdFBy
b3BUeXBlTG9jYXRpb25OYW1lcycpOwordmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gcmVxdWly
ZSgnLi9SZWFjdFByb3BUeXBlc1NlY3JldCcpOworCit2YXIgaW52YXJpYW50ID0gcmVxdWlyZSgn
ZmJqcy9saWIvaW52YXJpYW50Jyk7Cit2YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dh
cm5pbmcnKTsKKwordmFyIFJlYWN0Q29tcG9uZW50VHJlZUhvb2s7CisKK2lmICh0eXBlb2YgcHJv
Y2VzcyAhPT0gJ3VuZGVmaW5lZCcgJiYgcHJvY2Vzcy5lbnYgJiYgcHJvY2Vzcy5lbnYuTk9ERV9F
TlYgPT09ICd0ZXN0JykgeworICAvLyBUZW1wb3JhcnkgaGFjay4KKyAgLy8gSW5saW5lIHJlcXVp
cmVzIGRvbid0IHdvcmsgd2VsbCB3aXRoIEplc3Q6CisgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9m
YWNlYm9vay9yZWFjdC9pc3N1ZXMvNzI0MAorICAvLyBSZW1vdmUgdGhlIGlubGluZSByZXF1aXJl
cyB3aGVuIHdlIGRvbid0IG5lZWQgdGhlbSBhbnltb3JlOgorICAvLyBodHRwczovL2dpdGh1Yi5j
b20vZmFjZWJvb2svcmVhY3QvcHVsbC83MTc4CisgIFJlYWN0Q29tcG9uZW50VHJlZUhvb2sgPSBy
ZXF1aXJlKCcuL1JlYWN0Q29tcG9uZW50VHJlZUhvb2snKTsKK30KKwordmFyIGxvZ2dlZFR5cGVG
YWlsdXJlcyA9IHt9OworCisvKioKKyAqIEFzc2VydCB0aGF0IHRoZSB2YWx1ZXMgbWF0Y2ggd2l0
aCB0aGUgdHlwZSBzcGVjcy4KKyAqIEVycm9yIG1lc3NhZ2VzIGFyZSBtZW1vcml6ZWQgYW5kIHdp
bGwgb25seSBiZSBzaG93biBvbmNlLgorICoKKyAqIEBwYXJhbSB7b2JqZWN0fSB0eXBlU3BlY3Mg
TWFwIG9mIG5hbWUgdG8gYSBSZWFjdFByb3BUeXBlCisgKiBAcGFyYW0ge29iamVjdH0gdmFsdWVz
IFJ1bnRpbWUgdmFsdWVzIHRoYXQgbmVlZCB0byBiZSB0eXBlLWNoZWNrZWQKKyAqIEBwYXJhbSB7
c3RyaW5nfSBsb2NhdGlvbiBlLmcuICJwcm9wIiwgImNvbnRleHQiLCAiY2hpbGQgY29udGV4dCIK
KyAqIEBwYXJhbSB7c3RyaW5nfSBjb21wb25lbnROYW1lIE5hbWUgb2YgdGhlIGNvbXBvbmVudCBm
b3IgZXJyb3IgbWVzc2FnZXMuCisgKiBAcGFyYW0gez9vYmplY3R9IGVsZW1lbnQgVGhlIFJlYWN0
IGVsZW1lbnQgdGhhdCBpcyBiZWluZyB0eXBlLWNoZWNrZWQKKyAqIEBwYXJhbSB7P251bWJlcn0g
ZGVidWdJRCBUaGUgUmVhY3QgY29tcG9uZW50IGluc3RhbmNlIHRoYXQgaXMgYmVpbmcgdHlwZS1j
aGVja2VkCisgKiBAcHJpdmF0ZQorICovCitmdW5jdGlvbiBjaGVja1JlYWN0VHlwZVNwZWModHlw
ZVNwZWNzLCB2YWx1ZXMsIGxvY2F0aW9uLCBjb21wb25lbnROYW1lLCBlbGVtZW50LCBkZWJ1Z0lE
KSB7CisgIGZvciAodmFyIHR5cGVTcGVjTmFtZSBpbiB0eXBlU3BlY3MpIHsKKyAgICBpZiAodHlw
ZVNwZWNzLmhhc093blByb3BlcnR5KHR5cGVTcGVjTmFtZSkpIHsKKyAgICAgIHZhciBlcnJvcjsK
KyAgICAgIC8vIFByb3AgdHlwZSB2YWxpZGF0aW9uIG1heSB0aHJvdy4gSW4gY2FzZSB0aGV5IGRv
LCB3ZSBkb24ndCB3YW50IHRvCisgICAgICAvLyBmYWlsIHRoZSByZW5kZXIgcGhhc2Ugd2hlcmUg
aXQgZGlkbid0IGZhaWwgYmVmb3JlLiBTbyB3ZSBsb2cgaXQuCisgICAgICAvLyBBZnRlciB0aGVz
ZSBoYXZlIGJlZW4gY2xlYW5lZCB1cCwgd2UnbGwgbGV0IHRoZW0gdGhyb3cuCisgICAgICB0cnkg
eworICAgICAgICAvLyBUaGlzIGlzIGludGVudGlvbmFsbHkgYW4gaW52YXJpYW50IHRoYXQgZ2V0
cyBjYXVnaHQuIEl0J3MgdGhlIHNhbWUKKyAgICAgICAgLy8gYmVoYXZpb3IgYXMgd2l0aG91dCB0
aGlzIHN0YXRlbWVudCBleGNlcHQgd2l0aCBhIGJldHRlciBtZXNzYWdlLgorICAgICAgICAhKHR5
cGVvZiB0eXBlU3BlY3NbdHlwZVNwZWNOYW1lXSA9PT0gJ2Z1bmN0aW9uJykgPyBwcm9jZXNzLmVu
di5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnJXM6ICVzIHR5
cGUgYCVzYCBpcyBpbnZhbGlkOyBpdCBtdXN0IGJlIGEgZnVuY3Rpb24sIHVzdWFsbHkgZnJvbSBS
ZWFjdC5Qcm9wVHlwZXMuJywgY29tcG9uZW50TmFtZSB8fCAnUmVhY3QgY2xhc3MnLCBSZWFjdFBy
b3BUeXBlTG9jYXRpb25OYW1lc1tsb2NhdGlvbl0sIHR5cGVTcGVjTmFtZSkgOiBfcHJvZEludmFy
aWFudCgnODQnLCBjb21wb25lbnROYW1lIHx8ICdSZWFjdCBjbGFzcycsIFJlYWN0UHJvcFR5cGVM
b2NhdGlvbk5hbWVzW2xvY2F0aW9uXSwgdHlwZVNwZWNOYW1lKSA6IHZvaWQgMDsKKyAgICAgICAg
ZXJyb3IgPSB0eXBlU3BlY3NbdHlwZVNwZWNOYW1lXSh2YWx1ZXMsIHR5cGVTcGVjTmFtZSwgY29t
cG9uZW50TmFtZSwgbG9jYXRpb24sIG51bGwsIFJlYWN0UHJvcFR5cGVzU2VjcmV0KTsKKyAgICAg
IH0gY2F0Y2ggKGV4KSB7CisgICAgICAgIGVycm9yID0gZXg7CisgICAgICB9CisgICAgICBwcm9j
ZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyghZXJyb3IgfHwgZXJy
b3IgaW5zdGFuY2VvZiBFcnJvciwgJyVzOiB0eXBlIHNwZWNpZmljYXRpb24gb2YgJXMgYCVzYCBp
cyBpbnZhbGlkOyB0aGUgdHlwZSBjaGVja2VyICcgKyAnZnVuY3Rpb24gbXVzdCByZXR1cm4gYG51
bGxgIG9yIGFuIGBFcnJvcmAgYnV0IHJldHVybmVkIGEgJXMuICcgKyAnWW91IG1heSBoYXZlIGZv
cmdvdHRlbiB0byBwYXNzIGFuIGFyZ3VtZW50IHRvIHRoZSB0eXBlIGNoZWNrZXIgJyArICdjcmVh
dG9yIChhcnJheU9mLCBpbnN0YW5jZU9mLCBvYmplY3RPZiwgb25lT2YsIG9uZU9mVHlwZSwgYW5k
ICcgKyAnc2hhcGUgYWxsIHJlcXVpcmUgYW4gYXJndW1lbnQpLicsIGNvbXBvbmVudE5hbWUgfHwg
J1JlYWN0IGNsYXNzJywgUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXNbbG9jYXRpb25dLCB0eXBl
U3BlY05hbWUsIHR5cGVvZiBlcnJvcikgOiB2b2lkIDA7CisgICAgICBpZiAoZXJyb3IgaW5zdGFu
Y2VvZiBFcnJvciAmJiAhKGVycm9yLm1lc3NhZ2UgaW4gbG9nZ2VkVHlwZUZhaWx1cmVzKSkgewor
ICAgICAgICAvLyBPbmx5IG1vbml0b3IgdGhpcyBmYWlsdXJlIG9uY2UgYmVjYXVzZSB0aGVyZSB0
ZW5kcyB0byBiZSBhIGxvdCBvZiB0aGUKKyAgICAgICAgLy8gc2FtZSBlcnJvci4KKyAgICAgICAg
bG9nZ2VkVHlwZUZhaWx1cmVzW2Vycm9yLm1lc3NhZ2VdID0gdHJ1ZTsKKworICAgICAgICB2YXIg
Y29tcG9uZW50U3RhY2tJbmZvID0gJyc7CisKKyAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVf
RU5WICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgICAgICBpZiAoIVJlYWN0Q29tcG9uZW50VHJl
ZUhvb2spIHsKKyAgICAgICAgICAgIFJlYWN0Q29tcG9uZW50VHJlZUhvb2sgPSByZXF1aXJlKCcu
L1JlYWN0Q29tcG9uZW50VHJlZUhvb2snKTsKKyAgICAgICAgICB9CisgICAgICAgICAgaWYgKGRl
YnVnSUQgIT09IG51bGwpIHsKKyAgICAgICAgICAgIGNvbXBvbmVudFN0YWNrSW5mbyA9IFJlYWN0
Q29tcG9uZW50VHJlZUhvb2suZ2V0U3RhY2tBZGRlbmR1bUJ5SUQoZGVidWdJRCk7CisgICAgICAg
ICAgfSBlbHNlIGlmIChlbGVtZW50ICE9PSBudWxsKSB7CisgICAgICAgICAgICBjb21wb25lbnRT
dGFja0luZm8gPSBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldEN1cnJlbnRTdGFja0FkZGVuZHVt
KGVsZW1lbnQpOworICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnRmFpbGVkICVzIHR5
cGU6ICVzJXMnLCBsb2NhdGlvbiwgZXJyb3IubWVzc2FnZSwgY29tcG9uZW50U3RhY2tJbmZvKSA6
IHZvaWQgMDsKKyAgICAgIH0KKyAgICB9CisgIH0KK30KKworbW9kdWxlLmV4cG9ydHMgPSBjaGVj
a1JlYWN0VHlwZVNwZWM7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9kZXByZWNhdGVkLmpzIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9kZXByZWNhdGVkLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmFhMGI0OWZjZWZhYzU1N2EyZDdkOWMzNTk2ZjY0MWU4OGZjYjIxZDcKLS0tIC9k
ZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QvbGliL2Rl
cHJlY2F0ZWQuanMKQEAgLTAsMCArMSw1NiBAQAorLyoqCisgKiBDb3B5cmlnaHQgMjAxMy1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBz
b3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgKgor
ICogCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX2Fzc2lnbiA9IHJlcXVpcmUoJ29iamVj
dC1hc3NpZ24nKTsKKwordmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7
CisKKy8qKgorICogVGhpcyB3aWxsIGxvZyBhIHNpbmdsZSBkZXByZWNhdGlvbiBub3RpY2UgcGVy
IGZ1bmN0aW9uIGFuZCBmb3J3YXJkIHRoZSBjYWxsCisgKiBvbiB0byB0aGUgbmV3IEFQSS4KKyAq
CisgKiBAcGFyYW0ge3N0cmluZ30gZm5OYW1lIFRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbgorICog
QHBhcmFtIHtzdHJpbmd9IG5ld01vZHVsZSBUaGUgbW9kdWxlIHRoYXQgZm4gd2lsbCBleGlzdCBp
bgorICogQHBhcmFtIHtzdHJpbmd9IG5ld1BhY2thZ2UgVGhlIG1vZHVsZSB0aGF0IGZuIHdpbGwg
ZXhpc3QgaW4KKyAqIEBwYXJhbSB7Kn0gY3R4IFRoZSBjb250ZXh0IHRoaXMgZm9yd2FyZGVkIGNh
bGwgc2hvdWxkIHJ1biBpbgorICogQHBhcmFtIHtmdW5jdGlvbn0gZm4gVGhlIGZ1bmN0aW9uIHRv
IGZvcndhcmQgb24gdG8KKyAqIEByZXR1cm4ge2Z1bmN0aW9ufSBUaGUgZnVuY3Rpb24gdGhhdCB3
aWxsIHdhcm4gb25jZSBhbmQgdGhlbiBjYWxsIGZuCisgKi8KK2Z1bmN0aW9uIGRlcHJlY2F0ZWQo
Zm5OYW1lLCBuZXdNb2R1bGUsIG5ld1BhY2thZ2UsIGN0eCwgZm4pIHsKKyAgdmFyIHdhcm5lZCA9
IGZhbHNlOworICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgewor
ICAgIHZhciBuZXdGbiA9IGZ1bmN0aW9uICgpIHsKKyAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHdhcm5lZCwKKyAgICAgIC8qIGVzbGludC1kaXNh
YmxlIG5vLXVzZWxlc3MtY29uY2F0ICovCisgICAgICAvLyBSZXF1aXJlIGV4YW1wbGVzIGluIHRo
aXMgc3RyaW5nIG11c3QgYmUgc3BsaXQgdG8gcHJldmVudCBSZWFjdCdzCisgICAgICAvLyBidWls
ZCB0b29scyBmcm9tIG1pc3Rha2luZyB0aGVtIGZvciByZWFsIHJlcXVpcmVzLgorICAgICAgLy8g
T3RoZXJ3aXNlIHRoZSBidWlsZCB0b29scyB3aWxsIGF0dGVtcHQgdG8gYnVpbGQgYSAnJXMnIG1v
ZHVsZS4KKyAgICAgICdSZWFjdC4lcyBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlICVzLiVzIGZy
b20gcmVxdWlyZScgKyAnKFwnJXNcJykgJyArICdpbnN0ZWFkLicsIGZuTmFtZSwgbmV3TW9kdWxl
LCBmbk5hbWUsIG5ld1BhY2thZ2UpIDogdm9pZCAwOworICAgICAgLyogZXNsaW50LWVuYWJsZSBu
by11c2VsZXNzLWNvbmNhdCAqLworICAgICAgd2FybmVkID0gdHJ1ZTsKKyAgICAgIHJldHVybiBm
bi5hcHBseShjdHgsIGFyZ3VtZW50cyk7CisgICAgfTsKKyAgICAvLyBXZSBuZWVkIHRvIG1ha2Ug
c3VyZSBhbGwgcHJvcGVydGllcyBvZiB0aGUgb3JpZ2luYWwgZm4gYXJlIGNvcGllZCBvdmVyLgor
ICAgIC8vIEluIHBhcnRpY3VsYXIsIHRoaXMgaXMgbmVlZGVkIHRvIHN1cHBvcnQgUHJvcFR5cGVz
CisgICAgX2Fzc2lnbihuZXdGbiwgZm4pOworCisgICAgLy8gRmxvdyBpcyBub3Qgc21hcnQgZW5v
dWdoIHRvIGZpZ3VyZSBvdXQgdGhhdCBuZXdGbiBpcyBvZiB0aGUgc2FtZSB0eXBlIGFzCisgICAg
Ly8gZm4uIFNpbmNlIHdlIGRvbid0IHdhbnQgdG8gbG9zZSBvdXQgdGhlIHR5cGUgb2YgdGhlIGZ1
bmN0aW9uLCBjYXN0aW5nCisgICAgLy8gdG8gYW55IGFuZCBmb3JjZSBmbG93IHRvIHVzZSBULgor
ICAgIHJldHVybiBuZXdGbjsKKyAgfQorCisgIHJldHVybiBmbjsKK30KKworbW9kdWxlLmV4cG9y
dHMgPSBkZXByZWNhdGVkOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC9saWIvZmxhdHRlbkNoaWxkcmVu
LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9mbGF0dGVuQ2hp
bGRyZW4uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDA1MjU5YTExMTY5NWZjNDc1ODNmYjM0YmUyN2RkNzk1OTU5
OWI0NwotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9y
ZWFjdC9saWIvZmxhdHRlbkNoaWxkcmVuLmpzCkBAIC0wLDAgKzEsNzUgQEAKKy8qKgorICogQ29w
eXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0
eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LgorICoKKyAqIAorICovCisKKyd1c2Ugc3RyaWN0JzsKKwordmFyIEtleUVzY2Fw
ZVV0aWxzID0gcmVxdWlyZSgnLi9LZXlFc2NhcGVVdGlscycpOwordmFyIHRyYXZlcnNlQWxsQ2hp
bGRyZW4gPSByZXF1aXJlKCcuL3RyYXZlcnNlQWxsQ2hpbGRyZW4nKTsKK3ZhciB3YXJuaW5nID0g
cmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpOworCit2YXIgUmVhY3RDb21wb25lbnRUcmVlSG9v
azsKKworaWYgKHR5cGVvZiBwcm9jZXNzICE9PSAndW5kZWZpbmVkJyAmJiBwcm9jZXNzLmVudiAm
JiBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Rlc3QnKSB7CisgIC8vIFRlbXBvcmFyeSBoYWNr
LgorICAvLyBJbmxpbmUgcmVxdWlyZXMgZG9uJ3Qgd29yayB3ZWxsIHdpdGggSmVzdDoKKyAgLy8g
aHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy83MjQwCisgIC8vIFJlbW92
ZSB0aGUgaW5saW5lIHJlcXVpcmVzIHdoZW4gd2UgZG9uJ3QgbmVlZCB0aGVtIGFueW1vcmU6Cisg
IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9wdWxsLzcxNzgKKyAgUmVhY3RD
b21wb25lbnRUcmVlSG9vayA9IHJlcXVpcmUoJy4vUmVhY3RDb21wb25lbnRUcmVlSG9vaycpOwor
fQorCisvKioKKyAqIEBwYXJhbSB7ZnVuY3Rpb259IHRyYXZlcnNlQ29udGV4dCBDb250ZXh0IHBh
c3NlZCB0aHJvdWdoIHRyYXZlcnNhbC4KKyAqIEBwYXJhbSB7P1JlYWN0Q29tcG9uZW50fSBjaGls
ZCBSZWFjdCBjaGlsZCBjb21wb25lbnQuCisgKiBAcGFyYW0geyFzdHJpbmd9IG5hbWUgU3RyaW5n
IG5hbWUgb2Yga2V5IHBhdGggdG8gY2hpbGQuCisgKiBAcGFyYW0ge251bWJlcj19IHNlbGZEZWJ1
Z0lEIE9wdGlvbmFsIGRlYnVnSUQgb2YgdGhlIGN1cnJlbnQgaW50ZXJuYWwgaW5zdGFuY2UuCisg
Ki8KK2Z1bmN0aW9uIGZsYXR0ZW5TaW5nbGVDaGlsZEludG9Db250ZXh0KHRyYXZlcnNlQ29udGV4
dCwgY2hpbGQsIG5hbWUsIHNlbGZEZWJ1Z0lEKSB7CisgIC8vIFdlIGZvdW5kIGEgY29tcG9uZW50
IGluc3RhbmNlLgorICBpZiAodHJhdmVyc2VDb250ZXh0ICYmIHR5cGVvZiB0cmF2ZXJzZUNvbnRl
eHQgPT09ICdvYmplY3QnKSB7CisgICAgdmFyIHJlc3VsdCA9IHRyYXZlcnNlQ29udGV4dDsKKyAg
ICB2YXIga2V5VW5pcXVlID0gcmVzdWx0W25hbWVdID09PSB1bmRlZmluZWQ7CisgICAgaWYgKHBy
b2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHsKKyAgICAgIGlmICghUmVhY3RD
b21wb25lbnRUcmVlSG9vaykgeworICAgICAgICBSZWFjdENvbXBvbmVudFRyZWVIb29rID0gcmVx
dWlyZSgnLi9SZWFjdENvbXBvbmVudFRyZWVIb29rJyk7CisgICAgICB9CisgICAgICBpZiAoIWtl
eVVuaXF1ZSkgeworICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24n
ID8gd2FybmluZyhmYWxzZSwgJ2ZsYXR0ZW5DaGlsZHJlbiguLi4pOiBFbmNvdW50ZXJlZCB0d28g
Y2hpbGRyZW4gd2l0aCB0aGUgc2FtZSBrZXksICcgKyAnYCVzYC4gQ2hpbGQga2V5cyBtdXN0IGJl
IHVuaXF1ZTsgd2hlbiB0d28gY2hpbGRyZW4gc2hhcmUgYSBrZXksIG9ubHkgJyArICd0aGUgZmly
c3QgY2hpbGQgd2lsbCBiZSB1c2VkLiVzJywgS2V5RXNjYXBlVXRpbHMudW5lc2NhcGUobmFtZSks
IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0U3RhY2tBZGRlbmR1bUJ5SUQoc2VsZkRlYnVnSUQp
KSA6IHZvaWQgMDsKKyAgICAgIH0KKyAgICB9CisgICAgaWYgKGtleVVuaXF1ZSAmJiBjaGlsZCAh
PSBudWxsKSB7CisgICAgICByZXN1bHRbbmFtZV0gPSBjaGlsZDsKKyAgICB9CisgIH0KK30KKwor
LyoqCisgKiBGbGF0dGVucyBjaGlsZHJlbiB0aGF0IGFyZSB0eXBpY2FsbHkgc3BlY2lmaWVkIGFz
IGBwcm9wcy5jaGlsZHJlbmAuIEFueSBudWxsCisgKiBjaGlsZHJlbiB3aWxsIG5vdCBiZSBpbmNs
dWRlZCBpbiB0aGUgcmVzdWx0aW5nIG9iamVjdC4KKyAqIEByZXR1cm4geyFvYmplY3R9IGZsYXR0
ZW5lZCBjaGlsZHJlbiBrZXllZCBieSBuYW1lLgorICovCitmdW5jdGlvbiBmbGF0dGVuQ2hpbGRy
ZW4oY2hpbGRyZW4sIHNlbGZEZWJ1Z0lEKSB7CisgIGlmIChjaGlsZHJlbiA9PSBudWxsKSB7Cisg
ICAgcmV0dXJuIGNoaWxkcmVuOworICB9CisgIHZhciByZXN1bHQgPSB7fTsKKworICBpZiAocHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgeworICAgIHRyYXZlcnNlQWxsQ2hp
bGRyZW4oY2hpbGRyZW4sIGZ1bmN0aW9uICh0cmF2ZXJzZUNvbnRleHQsIGNoaWxkLCBuYW1lKSB7
CisgICAgICByZXR1cm4gZmxhdHRlblNpbmdsZUNoaWxkSW50b0NvbnRleHQodHJhdmVyc2VDb250
ZXh0LCBjaGlsZCwgbmFtZSwgc2VsZkRlYnVnSUQpOworICAgIH0sIHJlc3VsdCk7CisgIH0gZWxz
ZSB7CisgICAgdHJhdmVyc2VBbGxDaGlsZHJlbihjaGlsZHJlbiwgZmxhdHRlblNpbmdsZUNoaWxk
SW50b0NvbnRleHQsIHJlc3VsdCk7CisgIH0KKyAgcmV0dXJuIHJlc3VsdDsKK30KKworbW9kdWxl
LmV4cG9ydHMgPSBmbGF0dGVuQ2hpbGRyZW47ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9nZXRJ
dGVyYXRvckZuLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9n
ZXRJdGVyYXRvckZuLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk1ZWVkNDIyMWVkYjllMGNjNmU5NzhkYmY4MjJi
ZTAzZmY0NGFkMjIKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21v
ZHVsZXMvcmVhY3QvbGliL2dldEl0ZXJhdG9yRm4uanMKQEAgLTAsMCArMSw0MCBAQAorLyoqCisg
KiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBC
U0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICog
b2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUg
c2FtZSBkaXJlY3RvcnkuCisgKgorICogCisgKi8KKworJ3VzZSBzdHJpY3QnOworCisvKiBnbG9i
YWwgU3ltYm9sICovCisKK3ZhciBJVEVSQVRPUl9TWU1CT0wgPSB0eXBlb2YgU3ltYm9sID09PSAn
ZnVuY3Rpb24nICYmIFN5bWJvbC5pdGVyYXRvcjsKK3ZhciBGQVVYX0lURVJBVE9SX1NZTUJPTCA9
ICdAQGl0ZXJhdG9yJzsgLy8gQmVmb3JlIFN5bWJvbCBzcGVjLgorCisvKioKKyAqIFJldHVybnMg
dGhlIGl0ZXJhdG9yIG1ldGhvZCBmdW5jdGlvbiBjb250YWluZWQgb24gdGhlIGl0ZXJhYmxlIG9i
amVjdC4KKyAqCisgKiBCZSBzdXJlIHRvIGludm9rZSB0aGUgZnVuY3Rpb24gd2l0aCB0aGUgaXRl
cmFibGUgYXMgY29udGV4dDoKKyAqCisgKiAgICAgdmFyIGl0ZXJhdG9yRm4gPSBnZXRJdGVyYXRv
ckZuKG15SXRlcmFibGUpOworICogICAgIGlmIChpdGVyYXRvckZuKSB7CisgKiAgICAgICB2YXIg
aXRlcmF0b3IgPSBpdGVyYXRvckZuLmNhbGwobXlJdGVyYWJsZSk7CisgKiAgICAgICAuLi4KKyAq
ICAgICB9CisgKgorICogQHBhcmFtIHs/b2JqZWN0fSBtYXliZUl0ZXJhYmxlCisgKiBAcmV0dXJu
IHs/ZnVuY3Rpb259CisgKi8KK2Z1bmN0aW9uIGdldEl0ZXJhdG9yRm4obWF5YmVJdGVyYWJsZSkg
eworICB2YXIgaXRlcmF0b3JGbiA9IG1heWJlSXRlcmFibGUgJiYgKElURVJBVE9SX1NZTUJPTCAm
JiBtYXliZUl0ZXJhYmxlW0lURVJBVE9SX1NZTUJPTF0gfHwgbWF5YmVJdGVyYWJsZVtGQVVYX0lU
RVJBVE9SX1NZTUJPTF0pOworICBpZiAodHlwZW9mIGl0ZXJhdG9yRm4gPT09ICdmdW5jdGlvbicp
IHsKKyAgICByZXR1cm4gaXRlcmF0b3JGbjsKKyAgfQorfQorCittb2R1bGUuZXhwb3J0cyA9IGdl
dEl0ZXJhdG9yRm47ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9nZXROZXh0RGVidWdJRC5qcyBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC9saWIvZ2V0TmV4dERlYnVnSUQu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMjhjZDc4YTcxODM0Nzc0MzJjNTVkZjYyMTBhYmVmOWRkMjBlYTU0Ygot
LS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC9s
aWIvZ2V0TmV4dERlYnVnSUQuanMKQEAgLTAsMCArMSwyMCBAQAorLyoqCisgKiBDb3B5cmlnaHQg
MjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGlj
ZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkg
b2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICogb2YgcGF0ZW50IHJp
Z2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rv
cnkuCisgKgorICogCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgbmV4dERlYnVnSUQgPSAx
OworCitmdW5jdGlvbiBnZXROZXh0RGVidWdJRCgpIHsKKyAgcmV0dXJuIG5leHREZWJ1Z0lEKys7
Cit9CisKK21vZHVsZS5leHBvcnRzID0gZ2V0TmV4dERlYnVnSUQ7ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3Jl
YWN0L2xpYi9vbmx5Q2hpbGQuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVh
Y3QvbGliL29ubHlDaGlsZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MjdkNmU2NGEzOTIyOTJjY2JmMDYxYzY3
NTBiNDA5NWU4ODMzZjg5Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9k
ZV9tb2R1bGVzL3JlYWN0L2xpYi9vbmx5Q2hpbGQuanMKQEAgLTAsMCArMSwzNyBAQAorLyoqCisg
KiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgorICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBC
U0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKKyAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAorICog
b2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUg
c2FtZSBkaXJlY3RvcnkuCisgKgorICovCisndXNlIHN0cmljdCc7CisKK3ZhciBfcHJvZEludmFy
aWFudCA9IHJlcXVpcmUoJy4vcmVhY3RQcm9kSW52YXJpYW50Jyk7CisKK3ZhciBSZWFjdEVsZW1l
bnQgPSByZXF1aXJlKCcuL1JlYWN0RWxlbWVudCcpOworCit2YXIgaW52YXJpYW50ID0gcmVxdWly
ZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7CisKKy8qKgorICogUmV0dXJucyB0aGUgZmlyc3QgY2hp
bGQgaW4gYSBjb2xsZWN0aW9uIG9mIGNoaWxkcmVuIGFuZCB2ZXJpZmllcyB0aGF0IHRoZXJlCisg
KiBpcyBvbmx5IG9uZSBjaGlsZCBpbiB0aGUgY29sbGVjdGlvbi4KKyAqCisgKiBTZWUgaHR0cHM6
Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3Qu
Y2hpbGRyZW4ub25seQorICoKKyAqIFRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9mIHRoaXMg
ZnVuY3Rpb24gYXNzdW1lcyB0aGF0IGEgc2luZ2xlIGNoaWxkIGdldHMKKyAqIHBhc3NlZCB3aXRo
b3V0IGEgd3JhcHBlciwgYnV0IHRoZSBwdXJwb3NlIG9mIHRoaXMgaGVscGVyIGZ1bmN0aW9uIGlz
IHRvCisgKiBhYnN0cmFjdCBhd2F5IHRoZSBwYXJ0aWN1bGFyIHN0cnVjdHVyZSBvZiBjaGlsZHJl
bi4KKyAqCisgKiBAcGFyYW0gez9vYmplY3R9IGNoaWxkcmVuIENoaWxkIGNvbGxlY3Rpb24gc3Ry
dWN0dXJlLgorICogQHJldHVybiB7UmVhY3RFbGVtZW50fSBUaGUgZmlyc3QgYW5kIG9ubHkgYFJl
YWN0RWxlbWVudGAgY29udGFpbmVkIGluIHRoZQorICogc3RydWN0dXJlLgorICovCitmdW5jdGlv
biBvbmx5Q2hpbGQoY2hpbGRyZW4pIHsKKyAgIVJlYWN0RWxlbWVudC5pc1ZhbGlkRWxlbWVudChj
aGlsZHJlbikgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJp
YW50KGZhbHNlLCAnUmVhY3QuQ2hpbGRyZW4ub25seSBleHBlY3RlZCB0byByZWNlaXZlIGEgc2lu
Z2xlIFJlYWN0IGVsZW1lbnQgY2hpbGQuJykgOiBfcHJvZEludmFyaWFudCgnMTQzJykgOiB2b2lk
IDA7CisgIHJldHVybiBjaGlsZHJlbjsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBvbmx5Q2hpbGQ7
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVh
Y3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9yZWFjdFByb2RJbnZhcmlhbnQuanMgYi9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QvbGliL3JlYWN0UHJvZEludmFyaWFudC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iOTBmOWViMDY0NjRmMzBkMThlNDRkNzEwN2FmY2M0NzQ4MDA4NjJmCi0tLSAv
ZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9y
ZWFjdFByb2RJbnZhcmlhbnQuanMKQEAgLTAsMCArMSwzOCBAQAorLyoqCisgKiBDb3B5cmlnaHQg
KGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxl
IGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0
b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVu
dCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGly
ZWN0b3J5LgorICoKKyAqIAorICovCisndXNlIHN0cmljdCc7CisKKy8qKgorICogV0FSTklORzog
RE8gTk9UIG1hbnVhbGx5IHJlcXVpcmUgdGhpcyBtb2R1bGUuCisgKiBUaGlzIGlzIGEgcmVwbGFj
ZW1lbnQgZm9yIGBpbnZhcmlhbnQoLi4uKWAgdXNlZCBieSB0aGUgZXJyb3IgY29kZSBzeXN0ZW0K
KyAqIGFuZCB3aWxsIF9vbmx5XyBiZSByZXF1aXJlZCBieSB0aGUgY29ycmVzcG9uZGluZyBiYWJl
bCBwYXNzLgorICogSXQgYWx3YXlzIHRocm93cy4KKyAqLworCitmdW5jdGlvbiByZWFjdFByb2RJ
bnZhcmlhbnQoY29kZSkgeworICB2YXIgYXJnQ291bnQgPSBhcmd1bWVudHMubGVuZ3RoIC0gMTsK
KworICB2YXIgbWVzc2FnZSA9ICdNaW5pZmllZCBSZWFjdCBlcnJvciAjJyArIGNvZGUgKyAnOyB2
aXNpdCAnICsgJ2h0dHA6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy9lcnJvci1kZWNv
ZGVyLmh0bWw/aW52YXJpYW50PScgKyBjb2RlOworCisgIGZvciAodmFyIGFyZ0lkeCA9IDA7IGFy
Z0lkeCA8IGFyZ0NvdW50OyBhcmdJZHgrKykgeworICAgIG1lc3NhZ2UgKz0gJyZhcmdzW109JyAr
IGVuY29kZVVSSUNvbXBvbmVudChhcmd1bWVudHNbYXJnSWR4ICsgMV0pOworICB9CisKKyAgbWVz
c2FnZSArPSAnIGZvciB0aGUgZnVsbCBtZXNzYWdlIG9yIHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRl
diBlbnZpcm9ubWVudCcgKyAnIGZvciBmdWxsIGVycm9ycyBhbmQgYWRkaXRpb25hbCBoZWxwZnVs
IHdhcm5pbmdzLic7CisKKyAgdmFyIGVycm9yID0gbmV3IEVycm9yKG1lc3NhZ2UpOworICBlcnJv
ci5uYW1lID0gJ0ludmFyaWFudCBWaW9sYXRpb24nOworICBlcnJvci5mcmFtZXNUb1BvcCA9IDE7
IC8vIHdlIGRvbid0IGNhcmUgYWJvdXQgcmVhY3RQcm9kSW52YXJpYW50J3Mgb3duIGZyYW1lCisK
KyAgdGhyb3cgZXJyb3I7Cit9CisKK21vZHVsZS5leHBvcnRzID0gcmVhY3RQcm9kSW52YXJpYW50
OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Jl
YWN0L25vZGVfbW9kdWxlcy9yZWFjdC9saWIvc2hhbGxvd0NvbXBhcmUuanMgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QvbGliL3NoYWxsb3dDb21wYXJlLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjQyZjc0Y2UwMWU1ZWY4MTU0ZGU0YzkyMzMzN2IyZTNjNzFkNTliYmYKLS0tIC9kZXYvbnVs
bAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QvbGliL3NoYWxsb3dD
b21wYXJlLmpzCkBAIC0wLDAgKzEsMjQgQEAKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2Vu
dCwgRmFjZWJvb2ssIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBz
b3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQg
aW4gdGhlCisgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291
cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJl
IGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAq
LworCisndXNlIHN0cmljdCc7CisKK3ZhciBzaGFsbG93RXF1YWwgPSByZXF1aXJlKCdmYmpzL2xp
Yi9zaGFsbG93RXF1YWwnKTsKKworLyoqCisgKiBEb2VzIGEgc2hhbGxvdyBjb21wYXJpc29uIGZv
ciBwcm9wcyBhbmQgc3RhdGUuCisgKiBTZWUgUmVhY3RDb21wb25lbnRXaXRoUHVyZVJlbmRlck1p
eGluCisgKiBTZWUgYWxzbyBodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL3No
YWxsb3ctY29tcGFyZS5odG1sCisgKi8KK2Z1bmN0aW9uIHNoYWxsb3dDb21wYXJlKGluc3RhbmNl
LCBuZXh0UHJvcHMsIG5leHRTdGF0ZSkgeworICByZXR1cm4gIXNoYWxsb3dFcXVhbChpbnN0YW5j
ZS5wcm9wcywgbmV4dFByb3BzKSB8fCAhc2hhbGxvd0VxdWFsKGluc3RhbmNlLnN0YXRlLCBuZXh0
U3RhdGUpOworfQorCittb2R1bGUuZXhwb3J0cyA9IHNoYWxsb3dDb21wYXJlOwpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9k
dWxlcy9yZWFjdC9saWIvc2xpY2VDaGlsZHJlbi5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVf
bW9kdWxlcy9yZWFjdC9saWIvc2xpY2VDaGlsZHJlbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYzU1MTE4ODhm
NDAwNDZhMDdkOTkxNmRiZWU1MjYzM2M5NDVmMmI2Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9zbGljZUNoaWxkcmVuLmpzCkBAIC0w
LDAgKzEsMzMgQEAKKy8qKgorICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIElu
Yy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBs
aWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlCisgKiBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgZ3JhbnQKKyAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQ
QVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICoKKyAqLworCisndXNlIHN0cmlj
dCc7CisKK3ZhciBSZWFjdENoaWxkcmVuID0gcmVxdWlyZSgnLi9SZWFjdENoaWxkcmVuJyk7CisK
Ky8qKgorICogU2xpY2UgY2hpbGRyZW4gdGhhdCBhcmUgdHlwaWNhbGx5IHNwZWNpZmllZCBhcyBg
cHJvcHMuY2hpbGRyZW5gLiBUaGlzIHZlcnNpb24KKyAqIG9mIHNsaWNlIGNoaWxkcmVuIGlnbm9y
ZXMgZW1wdHkgY2hpbGQgY29tcG9uZW50cy4KKyAqCisgKiBAcGFyYW0geyp9IGNoaWxkcmVuIFRo
ZSBjaGlsZHJlbiBzZXQgdG8gZmlsdGVyLgorICogQHBhcmFtIHtudW1iZXJ9IHN0YXJ0IFRoZSBm
aXJzdCB6ZXJvLWJhc2VkIGluZGV4IHRvIGluY2x1ZGUgaW4gdGhlIHN1YnNldC4KKyAqIEBwYXJh
bSB7P251bWJlcn0gZW5kIFRoZSBub24taW5jbHVzaXZlIGxhc3QgaW5kZXggb2YgdGhlIHN1YnNl
dC4KKyAqIEByZXR1cm4ge29iamVjdH0gbWlycm9yZWQgYXJyYXkgd2l0aCBtYXBwZWQgY2hpbGRy
ZW4KKyAqLworZnVuY3Rpb24gc2xpY2VDaGlsZHJlbihjaGlsZHJlbiwgc3RhcnQsIGVuZCkgewor
ICBpZiAoY2hpbGRyZW4gPT0gbnVsbCkgeworICAgIHJldHVybiBjaGlsZHJlbjsKKyAgfQorCisg
IHZhciBhcnJheSA9IFJlYWN0Q2hpbGRyZW4udG9BcnJheShjaGlsZHJlbik7CisgIHJldHVybiBh
cnJheS5zbGljZShzdGFydCwgZW5kKTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBzbGljZUNoaWxk
cmVuOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC9saWIvdHJhdmVyc2VBbGxDaGlsZHJlbi5qcyBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC9saWIvdHJhdmVyc2VBbGxDaGlsZHJl
bi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43YzU5ZTRhMGM2NzE1ZjU1ZGYxNjQ5MmNhNGM0Yzk0OGU5YWMwNWY0
Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0
L2xpYi90cmF2ZXJzZUFsbENoaWxkcmVuLmpzCkBAIC0wLDAgKzEsMTc1IEBACisvKioKKyAqIENv
cHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1z
dHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRp
cmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBw
YXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1l
IGRpcmVjdG9yeS4KKyAqCisgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJbnZhcmlh
bnQgPSByZXF1aXJlKCcuL3JlYWN0UHJvZEludmFyaWFudCcpOworCit2YXIgUmVhY3RDdXJyZW50
T3duZXIgPSByZXF1aXJlKCcuL1JlYWN0Q3VycmVudE93bmVyJyk7Cit2YXIgUkVBQ1RfRUxFTUVO
VF9UWVBFID0gcmVxdWlyZSgnLi9SZWFjdEVsZW1lbnRTeW1ib2wnKTsKKwordmFyIGdldEl0ZXJh
dG9yRm4gPSByZXF1aXJlKCcuL2dldEl0ZXJhdG9yRm4nKTsKK3ZhciBpbnZhcmlhbnQgPSByZXF1
aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTsKK3ZhciBLZXlFc2NhcGVVdGlscyA9IHJlcXVpcmUo
Jy4vS2V5RXNjYXBlVXRpbHMnKTsKK3ZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2Fy
bmluZycpOworCit2YXIgU0VQQVJBVE9SID0gJy4nOwordmFyIFNVQlNFUEFSQVRPUiA9ICc6JzsK
KworLyoqCisgKiBUaGlzIGlzIGlubGluZWQgZnJvbSBSZWFjdEVsZW1lbnQgc2luY2UgdGhpcyBm
aWxlIGlzIHNoYXJlZCBiZXR3ZWVuCisgKiBpc29tb3JwaGljIGFuZCByZW5kZXJlcnMuIFdlIGNv
dWxkIGV4dHJhY3QgdGhpcyB0byBhCisgKgorICovCisKKy8qKgorICogVE9ETzogVGVzdCB0aGF0
IGEgc2luZ2xlIGNoaWxkIGFuZCBhbiBhcnJheSB3aXRoIG9uZSBpdGVtIGhhdmUgdGhlIHNhbWUg
a2V5CisgKiBwYXR0ZXJuLgorICovCisKK3ZhciBkaWRXYXJuQWJvdXRNYXBzID0gZmFsc2U7CisK
Ky8qKgorICogR2VuZXJhdGUgYSBrZXkgc3RyaW5nIHRoYXQgaWRlbnRpZmllcyBhIGNvbXBvbmVu
dCB3aXRoaW4gYSBzZXQuCisgKgorICogQHBhcmFtIHsqfSBjb21wb25lbnQgQSBjb21wb25lbnQg
dGhhdCBjb3VsZCBjb250YWluIGEgbWFudWFsIGtleS4KKyAqIEBwYXJhbSB7bnVtYmVyfSBpbmRl
eCBJbmRleCB0aGF0IGlzIHVzZWQgaWYgYSBtYW51YWwga2V5IGlzIG5vdCBwcm92aWRlZC4KKyAq
IEByZXR1cm4ge3N0cmluZ30KKyAqLworZnVuY3Rpb24gZ2V0Q29tcG9uZW50S2V5KGNvbXBvbmVu
dCwgaW5kZXgpIHsKKyAgLy8gRG8gc29tZSB0eXBlY2hlY2tpbmcgaGVyZSBzaW5jZSB3ZSBjYWxs
IHRoaXMgYmxpbmRseS4gV2Ugd2FudCB0byBlbnN1cmUKKyAgLy8gdGhhdCB3ZSBkb24ndCBibG9j
ayBwb3RlbnRpYWwgZnV0dXJlIEVTIEFQSXMuCisgIGlmIChjb21wb25lbnQgJiYgdHlwZW9mIGNv
bXBvbmVudCA9PT0gJ29iamVjdCcgJiYgY29tcG9uZW50LmtleSAhPSBudWxsKSB7CisgICAgLy8g
RXhwbGljaXQga2V5CisgICAgcmV0dXJuIEtleUVzY2FwZVV0aWxzLmVzY2FwZShjb21wb25lbnQu
a2V5KTsKKyAgfQorICAvLyBJbXBsaWNpdCBrZXkgZGV0ZXJtaW5lZCBieSB0aGUgaW5kZXggaW4g
dGhlIHNldAorICByZXR1cm4gaW5kZXgudG9TdHJpbmcoMzYpOworfQorCisvKioKKyAqIEBwYXJh
bSB7Pyp9IGNoaWxkcmVuIENoaWxkcmVuIHRyZWUgY29udGFpbmVyLgorICogQHBhcmFtIHshc3Ry
aW5nfSBuYW1lU29GYXIgTmFtZSBvZiB0aGUga2V5IHBhdGggc28gZmFyLgorICogQHBhcmFtIHsh
ZnVuY3Rpb259IGNhbGxiYWNrIENhbGxiYWNrIHRvIGludm9rZSB3aXRoIGVhY2ggY2hpbGQgZm91
bmQuCisgKiBAcGFyYW0gez8qfSB0cmF2ZXJzZUNvbnRleHQgVXNlZCB0byBwYXNzIGluZm9ybWF0
aW9uIHRocm91Z2hvdXQgdGhlIHRyYXZlcnNhbAorICogcHJvY2Vzcy4KKyAqIEByZXR1cm4geyFu
dW1iZXJ9IFRoZSBudW1iZXIgb2YgY2hpbGRyZW4gaW4gdGhpcyBzdWJ0cmVlLgorICovCitmdW5j
dGlvbiB0cmF2ZXJzZUFsbENoaWxkcmVuSW1wbChjaGlsZHJlbiwgbmFtZVNvRmFyLCBjYWxsYmFj
aywgdHJhdmVyc2VDb250ZXh0KSB7CisgIHZhciB0eXBlID0gdHlwZW9mIGNoaWxkcmVuOworCisg
IGlmICh0eXBlID09PSAndW5kZWZpbmVkJyB8fCB0eXBlID09PSAnYm9vbGVhbicpIHsKKyAgICAv
LyBBbGwgb2YgdGhlIGFib3ZlIGFyZSBwZXJjZWl2ZWQgYXMgbnVsbC4KKyAgICBjaGlsZHJlbiA9
IG51bGw7CisgIH0KKworICBpZiAoY2hpbGRyZW4gPT09IG51bGwgfHwgdHlwZSA9PT0gJ3N0cmlu
ZycgfHwgdHlwZSA9PT0gJ251bWJlcicgfHwKKyAgLy8gVGhlIGZvbGxvd2luZyBpcyBpbmxpbmVk
IGZyb20gUmVhY3RFbGVtZW50LiBUaGlzIG1lYW5zIHdlIGNhbiBvcHRpbWl6ZQorICAvLyBzb21l
IGNoZWNrcy4gUmVhY3QgRmliZXIgYWxzbyBpbmxpbmVzIHRoaXMgbG9naWMgZm9yIHNpbWlsYXIg
cHVycG9zZXMuCisgIHR5cGUgPT09ICdvYmplY3QnICYmIGNoaWxkcmVuLiQkdHlwZW9mID09PSBS
RUFDVF9FTEVNRU5UX1RZUEUpIHsKKyAgICBjYWxsYmFjayh0cmF2ZXJzZUNvbnRleHQsIGNoaWxk
cmVuLAorICAgIC8vIElmIGl0J3MgdGhlIG9ubHkgY2hpbGQsIHRyZWF0IHRoZSBuYW1lIGFzIGlm
IGl0IHdhcyB3cmFwcGVkIGluIGFuIGFycmF5CisgICAgLy8gc28gdGhhdCBpdCdzIGNvbnNpc3Rl
bnQgaWYgdGhlIG51bWJlciBvZiBjaGlsZHJlbiBncm93cy4KKyAgICBuYW1lU29GYXIgPT09ICcn
ID8gU0VQQVJBVE9SICsgZ2V0Q29tcG9uZW50S2V5KGNoaWxkcmVuLCAwKSA6IG5hbWVTb0Zhcik7
CisgICAgcmV0dXJuIDE7CisgIH0KKworICB2YXIgY2hpbGQ7CisgIHZhciBuZXh0TmFtZTsKKyAg
dmFyIHN1YnRyZWVDb3VudCA9IDA7IC8vIENvdW50IG9mIGNoaWxkcmVuIGZvdW5kIGluIHRoZSBj
dXJyZW50IHN1YnRyZWUuCisgIHZhciBuZXh0TmFtZVByZWZpeCA9IG5hbWVTb0ZhciA9PT0gJycg
PyBTRVBBUkFUT1IgOiBuYW1lU29GYXIgKyBTVUJTRVBBUkFUT1I7CisKKyAgaWYgKEFycmF5Lmlz
QXJyYXkoY2hpbGRyZW4pKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5n
dGg7IGkrKykgeworICAgICAgY2hpbGQgPSBjaGlsZHJlbltpXTsKKyAgICAgIG5leHROYW1lID0g
bmV4dE5hbWVQcmVmaXggKyBnZXRDb21wb25lbnRLZXkoY2hpbGQsIGkpOworICAgICAgc3VidHJl
ZUNvdW50ICs9IHRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBsKGNoaWxkLCBuZXh0TmFtZSwgY2FsbGJh
Y2ssIHRyYXZlcnNlQ29udGV4dCk7CisgICAgfQorICB9IGVsc2UgeworICAgIHZhciBpdGVyYXRv
ckZuID0gZ2V0SXRlcmF0b3JGbihjaGlsZHJlbik7CisgICAgaWYgKGl0ZXJhdG9yRm4pIHsKKyAg
ICAgIHZhciBpdGVyYXRvciA9IGl0ZXJhdG9yRm4uY2FsbChjaGlsZHJlbik7CisgICAgICB2YXIg
c3RlcDsKKyAgICAgIGlmIChpdGVyYXRvckZuICE9PSBjaGlsZHJlbi5lbnRyaWVzKSB7CisgICAg
ICAgIHZhciBpaSA9IDA7CisgICAgICAgIHdoaWxlICghKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkp
LmRvbmUpIHsKKyAgICAgICAgICBjaGlsZCA9IHN0ZXAudmFsdWU7CisgICAgICAgICAgbmV4dE5h
bWUgPSBuZXh0TmFtZVByZWZpeCArIGdldENvbXBvbmVudEtleShjaGlsZCwgaWkrKyk7CisgICAg
ICAgICAgc3VidHJlZUNvdW50ICs9IHRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBsKGNoaWxkLCBuZXh0
TmFtZSwgY2FsbGJhY2ssIHRyYXZlcnNlQ29udGV4dCk7CisgICAgICAgIH0KKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7
CisgICAgICAgICAgdmFyIG1hcHNBc0NoaWxkcmVuQWRkZW5kdW0gPSAnJzsKKyAgICAgICAgICBp
ZiAoUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCkgeworICAgICAgICAgICAgdmFyIG1hcHNBc0No
aWxkcmVuT3duZXJOYW1lID0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVudC5nZXROYW1lKCk7Cisg
ICAgICAgICAgICBpZiAobWFwc0FzQ2hpbGRyZW5Pd25lck5hbWUpIHsKKyAgICAgICAgICAgICAg
bWFwc0FzQ2hpbGRyZW5BZGRlbmR1bSA9ICcgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgYCcg
KyBtYXBzQXNDaGlsZHJlbk93bmVyTmFtZSArICdgLic7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgfQorICAgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3
YXJuaW5nKGRpZFdhcm5BYm91dE1hcHMsICdVc2luZyBNYXBzIGFzIGNoaWxkcmVuIGlzIG5vdCB5
ZXQgZnVsbHkgc3VwcG9ydGVkLiBJdCBpcyBhbiAnICsgJ2V4cGVyaW1lbnRhbCBmZWF0dXJlIHRo
YXQgbWlnaHQgYmUgcmVtb3ZlZC4gQ29udmVydCBpdCB0byBhICcgKyAnc2VxdWVuY2UgLyBpdGVy
YWJsZSBvZiBrZXllZCBSZWFjdEVsZW1lbnRzIGluc3RlYWQuJXMnLCBtYXBzQXNDaGlsZHJlbkFk
ZGVuZHVtKSA6IHZvaWQgMDsKKyAgICAgICAgICBkaWRXYXJuQWJvdXRNYXBzID0gdHJ1ZTsKKyAg
ICAgICAgfQorICAgICAgICAvLyBJdGVyYXRvciB3aWxsIHByb3ZpZGUgZW50cnkgW2ssdl0gdHVw
bGVzIHJhdGhlciB0aGFuIHZhbHVlcy4KKyAgICAgICAgd2hpbGUgKCEoc3RlcCA9IGl0ZXJhdG9y
Lm5leHQoKSkuZG9uZSkgeworICAgICAgICAgIHZhciBlbnRyeSA9IHN0ZXAudmFsdWU7CisgICAg
ICAgICAgaWYgKGVudHJ5KSB7CisgICAgICAgICAgICBjaGlsZCA9IGVudHJ5WzFdOworICAgICAg
ICAgICAgbmV4dE5hbWUgPSBuZXh0TmFtZVByZWZpeCArIEtleUVzY2FwZVV0aWxzLmVzY2FwZShl
bnRyeVswXSkgKyBTVUJTRVBBUkFUT1IgKyBnZXRDb21wb25lbnRLZXkoY2hpbGQsIDApOworICAg
ICAgICAgICAgc3VidHJlZUNvdW50ICs9IHRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBsKGNoaWxkLCBu
ZXh0TmFtZSwgY2FsbGJhY2ssIHRyYXZlcnNlQ29udGV4dCk7CisgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICB9CisgICAgfSBlbHNlIGlmICh0eXBlID09PSAnb2JqZWN0JykgeworICAgICAg
dmFyIGFkZGVuZHVtID0gJyc7CisgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJykgeworICAgICAgICBhZGRlbmR1bSA9ICcgSWYgeW91IG1lYW50IHRvIHJlbmRl
ciBhIGNvbGxlY3Rpb24gb2YgY2hpbGRyZW4sIHVzZSBhbiBhcnJheSAnICsgJ2luc3RlYWQgb3Ig
d3JhcCB0aGUgb2JqZWN0IHVzaW5nIGNyZWF0ZUZyYWdtZW50KG9iamVjdCkgZnJvbSB0aGUgJyAr
ICdSZWFjdCBhZGQtb25zLic7CisgICAgICAgIGlmIChjaGlsZHJlbi5faXNSZWFjdEVsZW1lbnQp
IHsKKyAgICAgICAgICBhZGRlbmR1bSA9ICcgSXQgbG9va3MgbGlrZSB5b3VcJ3JlIHVzaW5nIGFu
IGVsZW1lbnQgY3JlYXRlZCBieSBhIGRpZmZlcmVudCAnICsgJ3ZlcnNpb24gb2YgUmVhY3QuIE1h
a2Ugc3VyZSB0byB1c2Ugb25seSBvbmUgY29weSBvZiBSZWFjdC4nOworICAgICAgICB9CisgICAg
ICAgIGlmIChSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50KSB7CisgICAgICAgICAgdmFyIG5hbWUg
PSBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50LmdldE5hbWUoKTsKKyAgICAgICAgICBpZiAobmFt
ZSkgeworICAgICAgICAgICAgYWRkZW5kdW0gKz0gJyBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBv
ZiBgJyArIG5hbWUgKyAnYC4nOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAg
ICAgdmFyIGNoaWxkcmVuU3RyaW5nID0gU3RyaW5nKGNoaWxkcmVuKTsKKyAgICAgICFmYWxzZSA/
IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2Us
ICdPYmplY3RzIGFyZSBub3QgdmFsaWQgYXMgYSBSZWFjdCBjaGlsZCAoZm91bmQ6ICVzKS4lcycs
IGNoaWxkcmVuU3RyaW5nID09PSAnW29iamVjdCBPYmplY3RdJyA/ICdvYmplY3Qgd2l0aCBrZXlz
IHsnICsgT2JqZWN0LmtleXMoY2hpbGRyZW4pLmpvaW4oJywgJykgKyAnfScgOiBjaGlsZHJlblN0
cmluZywgYWRkZW5kdW0pIDogX3Byb2RJbnZhcmlhbnQoJzMxJywgY2hpbGRyZW5TdHJpbmcgPT09
ICdbb2JqZWN0IE9iamVjdF0nID8gJ29iamVjdCB3aXRoIGtleXMgeycgKyBPYmplY3Qua2V5cyhj
aGlsZHJlbikuam9pbignLCAnKSArICd9JyA6IGNoaWxkcmVuU3RyaW5nLCBhZGRlbmR1bSkgOiB2
b2lkIDA7CisgICAgfQorICB9CisKKyAgcmV0dXJuIHN1YnRyZWVDb3VudDsKK30KKworLyoqCisg
KiBUcmF2ZXJzZXMgY2hpbGRyZW4gdGhhdCBhcmUgdHlwaWNhbGx5IHNwZWNpZmllZCBhcyBgcHJv
cHMuY2hpbGRyZW5gLCBidXQKKyAqIG1pZ2h0IGFsc28gYmUgc3BlY2lmaWVkIHRocm91Z2ggYXR0
cmlidXRlczoKKyAqCisgKiAtIGB0cmF2ZXJzZUFsbENoaWxkcmVuKHRoaXMucHJvcHMuY2hpbGRy
ZW4sIC4uLilgCisgKiAtIGB0cmF2ZXJzZUFsbENoaWxkcmVuKHRoaXMucHJvcHMubGVmdFBhbmVs
Q2hpbGRyZW4sIC4uLilgCisgKgorICogVGhlIGB0cmF2ZXJzZUNvbnRleHRgIGlzIGFuIG9wdGlv
bmFsIGFyZ3VtZW50IHRoYXQgaXMgcGFzc2VkIHRocm91Z2ggdGhlCisgKiBlbnRpcmUgdHJhdmVy
c2FsLiBJdCBjYW4gYmUgdXNlZCB0byBzdG9yZSBhY2N1bXVsYXRpb25zIG9yIGFueXRoaW5nIGVs
c2UgdGhhdAorICogdGhlIGNhbGxiYWNrIG1pZ2h0IGZpbmQgcmVsZXZhbnQuCisgKgorICogQHBh
cmFtIHs/Kn0gY2hpbGRyZW4gQ2hpbGRyZW4gdHJlZSBvYmplY3QuCisgKiBAcGFyYW0geyFmdW5j
dGlvbn0gY2FsbGJhY2sgVG8gaW52b2tlIHVwb24gdHJhdmVyc2luZyBlYWNoIGNoaWxkLgorICog
QHBhcmFtIHs/Kn0gdHJhdmVyc2VDb250ZXh0IENvbnRleHQgZm9yIHRyYXZlcnNhbC4KKyAqIEBy
ZXR1cm4geyFudW1iZXJ9IFRoZSBudW1iZXIgb2YgY2hpbGRyZW4gaW4gdGhpcyBzdWJ0cmVlLgor
ICovCitmdW5jdGlvbiB0cmF2ZXJzZUFsbENoaWxkcmVuKGNoaWxkcmVuLCBjYWxsYmFjaywgdHJh
dmVyc2VDb250ZXh0KSB7CisgIGlmIChjaGlsZHJlbiA9PSBudWxsKSB7CisgICAgcmV0dXJuIDA7
CisgIH0KKworICByZXR1cm4gdHJhdmVyc2VBbGxDaGlsZHJlbkltcGwoY2hpbGRyZW4sICcnLCBj
YWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSB0cmF2ZXJz
ZUFsbENoaWxkcmVuOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC9saWIvdXBkYXRlLmpzIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi91cGRhdGUuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTNhNTQ5ZjM2ZWFiYmU1YzQzYWFjM2RkNzU4Y2MxMWY5NjFlOTA1YwotLS0gL2Rldi9udWxsCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC9saWIvdXBkYXRlLmpzCkBA
IC0wLDAgKzEsMTExIEBACisvKioKKyAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29r
LCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgc291cmNlIGNvZGUg
aXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZQorICog
TElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBB
biBhZGRpdGlvbmFsIGdyYW50CisgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0
aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAqCisgKi8KKworLyogZ2xv
YmFsIGhhc093blByb3BlcnR5OnRydWUgKi8KKworJ3VzZSBzdHJpY3QnOworCit2YXIgX3Byb2RJ
bnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0UHJvZEludmFyaWFudCcpLAorICAgIF9hc3NpZ24g
PSByZXF1aXJlKCdvYmplY3QtYXNzaWduJyk7CisKK3ZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdm
YmpzL2xpYi9pbnZhcmlhbnQnKTsKK3ZhciBoYXNPd25Qcm9wZXJ0eSA9IHt9Lmhhc093blByb3Bl
cnR5OworCitmdW5jdGlvbiBzaGFsbG93Q29weSh4KSB7CisgIGlmIChBcnJheS5pc0FycmF5KHgp
KSB7CisgICAgcmV0dXJuIHguY29uY2F0KCk7CisgIH0gZWxzZSBpZiAoeCAmJiB0eXBlb2YgeCA9
PT0gJ29iamVjdCcpIHsKKyAgICByZXR1cm4gX2Fzc2lnbihuZXcgeC5jb25zdHJ1Y3RvcigpLCB4
KTsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4geDsKKyAgfQorfQorCit2YXIgQ09NTUFORF9QVVNI
ID0gJyRwdXNoJzsKK3ZhciBDT01NQU5EX1VOU0hJRlQgPSAnJHVuc2hpZnQnOwordmFyIENPTU1B
TkRfU1BMSUNFID0gJyRzcGxpY2UnOwordmFyIENPTU1BTkRfU0VUID0gJyRzZXQnOwordmFyIENP
TU1BTkRfTUVSR0UgPSAnJG1lcmdlJzsKK3ZhciBDT01NQU5EX0FQUExZID0gJyRhcHBseSc7CisK
K3ZhciBBTExfQ09NTUFORFNfTElTVCA9IFtDT01NQU5EX1BVU0gsIENPTU1BTkRfVU5TSElGVCwg
Q09NTUFORF9TUExJQ0UsIENPTU1BTkRfU0VULCBDT01NQU5EX01FUkdFLCBDT01NQU5EX0FQUExZ
XTsKKwordmFyIEFMTF9DT01NQU5EU19TRVQgPSB7fTsKKworQUxMX0NPTU1BTkRTX0xJU1QuZm9y
RWFjaChmdW5jdGlvbiAoY29tbWFuZCkgeworICBBTExfQ09NTUFORFNfU0VUW2NvbW1hbmRdID0g
dHJ1ZTsKK30pOworCitmdW5jdGlvbiBpbnZhcmlhbnRBcnJheUNhc2UodmFsdWUsIHNwZWMsIGNv
bW1hbmQpIHsKKyAgIUFycmF5LmlzQXJyYXkodmFsdWUpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3VwZGF0ZSgpOiBleHBlY3RlZCB0
YXJnZXQgb2YgJXMgdG8gYmUgYW4gYXJyYXk7IGdvdCAlcy4nLCBjb21tYW5kLCB2YWx1ZSkgOiBf
cHJvZEludmFyaWFudCgnMScsIGNvbW1hbmQsIHZhbHVlKSA6IHZvaWQgMDsKKyAgdmFyIHNwZWNW
YWx1ZSA9IHNwZWNbY29tbWFuZF07CisgICFBcnJheS5pc0FycmF5KHNwZWNWYWx1ZSkgPyBwcm9j
ZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAndXBk
YXRlKCk6IGV4cGVjdGVkIHNwZWMgb2YgJXMgdG8gYmUgYW4gYXJyYXk7IGdvdCAlcy4gRGlkIHlv
dSBmb3JnZXQgdG8gd3JhcCB5b3VyIHBhcmFtZXRlciBpbiBhbiBhcnJheT8nLCBjb21tYW5kLCBz
cGVjVmFsdWUpIDogX3Byb2RJbnZhcmlhbnQoJzInLCBjb21tYW5kLCBzcGVjVmFsdWUpIDogdm9p
ZCAwOworfQorCisvKioKKyAqIFJldHVybnMgYSB1cGRhdGVkIHNoYWxsb3cgY29weSBvZiBhbiBv
YmplY3Qgd2l0aG91dCBtdXRhdGluZyB0aGUgb3JpZ2luYWwuCisgKiBTZWUgaHR0cHM6Ly9mYWNl
Ym9vay5naXRodWIuaW8vcmVhY3QvZG9jcy91cGRhdGUuaHRtbCBmb3IgZGV0YWlscy4KKyAqLwor
ZnVuY3Rpb24gdXBkYXRlKHZhbHVlLCBzcGVjKSB7CisgICEodHlwZW9mIHNwZWMgPT09ICdvYmpl
Y3QnKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQo
ZmFsc2UsICd1cGRhdGUoKTogWW91IHByb3ZpZGVkIGEga2V5IHBhdGggdG8gdXBkYXRlKCkgdGhh
dCBkaWQgbm90IGNvbnRhaW4gb25lIG9mICVzLiBEaWQgeW91IGZvcmdldCB0byBpbmNsdWRlIHsl
czogLi4ufT8nLCBBTExfQ09NTUFORFNfTElTVC5qb2luKCcsICcpLCBDT01NQU5EX1NFVCkgOiBf
cHJvZEludmFyaWFudCgnMycsIEFMTF9DT01NQU5EU19MSVNULmpvaW4oJywgJyksIENPTU1BTkRf
U0VUKSA6IHZvaWQgMDsKKworICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChzcGVjLCBDT01NQU5E
X1NFVCkpIHsKKyAgICAhKE9iamVjdC5rZXlzKHNwZWMpLmxlbmd0aCA9PT0gMSkgPyBwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnQ2Fubm90
IGhhdmUgbW9yZSB0aGFuIG9uZSBrZXkgaW4gYW4gb2JqZWN0IHdpdGggJXMnLCBDT01NQU5EX1NF
VCkgOiBfcHJvZEludmFyaWFudCgnNCcsIENPTU1BTkRfU0VUKSA6IHZvaWQgMDsKKworICAgIHJl
dHVybiBzcGVjW0NPTU1BTkRfU0VUXTsKKyAgfQorCisgIHZhciBuZXh0VmFsdWUgPSBzaGFsbG93
Q29weSh2YWx1ZSk7CisKKyAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoc3BlYywgQ09NTUFORF9N
RVJHRSkpIHsKKyAgICB2YXIgbWVyZ2VPYmogPSBzcGVjW0NPTU1BTkRfTUVSR0VdOworICAgICEo
bWVyZ2VPYmogJiYgdHlwZW9mIG1lcmdlT2JqID09PSAnb2JqZWN0JykgPyBwcm9jZXNzLmVudi5O
T0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAndXBkYXRlKCk6ICVz
IGV4cGVjdHMgYSBzcGVjIG9mIHR5cGUgXCdvYmplY3RcJzsgZ290ICVzJywgQ09NTUFORF9NRVJH
RSwgbWVyZ2VPYmopIDogX3Byb2RJbnZhcmlhbnQoJzUnLCBDT01NQU5EX01FUkdFLCBtZXJnZU9i
aikgOiB2b2lkIDA7CisgICAgIShuZXh0VmFsdWUgJiYgdHlwZW9mIG5leHRWYWx1ZSA9PT0gJ29i
amVjdCcpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFu
dChmYWxzZSwgJ3VwZGF0ZSgpOiAlcyBleHBlY3RzIGEgdGFyZ2V0IG9mIHR5cGUgXCdvYmplY3Rc
JzsgZ290ICVzJywgQ09NTUFORF9NRVJHRSwgbmV4dFZhbHVlKSA6IF9wcm9kSW52YXJpYW50KCc2
JywgQ09NTUFORF9NRVJHRSwgbmV4dFZhbHVlKSA6IHZvaWQgMDsKKyAgICBfYXNzaWduKG5leHRW
YWx1ZSwgc3BlY1tDT01NQU5EX01FUkdFXSk7CisgIH0KKworICBpZiAoaGFzT3duUHJvcGVydHku
Y2FsbChzcGVjLCBDT01NQU5EX1BVU0gpKSB7CisgICAgaW52YXJpYW50QXJyYXlDYXNlKHZhbHVl
LCBzcGVjLCBDT01NQU5EX1BVU0gpOworICAgIHNwZWNbQ09NTUFORF9QVVNIXS5mb3JFYWNoKGZ1
bmN0aW9uIChpdGVtKSB7CisgICAgICBuZXh0VmFsdWUucHVzaChpdGVtKTsKKyAgICB9KTsKKyAg
fQorCisgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHNwZWMsIENPTU1BTkRfVU5TSElGVCkpIHsK
KyAgICBpbnZhcmlhbnRBcnJheUNhc2UodmFsdWUsIHNwZWMsIENPTU1BTkRfVU5TSElGVCk7Cisg
ICAgc3BlY1tDT01NQU5EX1VOU0hJRlRdLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHsKKyAgICAg
IG5leHRWYWx1ZS51bnNoaWZ0KGl0ZW0pOworICAgIH0pOworICB9CisKKyAgaWYgKGhhc093blBy
b3BlcnR5LmNhbGwoc3BlYywgQ09NTUFORF9TUExJQ0UpKSB7CisgICAgIUFycmF5LmlzQXJyYXko
dmFsdWUpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFu
dChmYWxzZSwgJ0V4cGVjdGVkICVzIHRhcmdldCB0byBiZSBhbiBhcnJheTsgZ290ICVzJywgQ09N
TUFORF9TUExJQ0UsIHZhbHVlKSA6IF9wcm9kSW52YXJpYW50KCc3JywgQ09NTUFORF9TUExJQ0Us
IHZhbHVlKSA6IHZvaWQgMDsKKyAgICAhQXJyYXkuaXNBcnJheShzcGVjW0NPTU1BTkRfU1BMSUNF
XSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZh
bHNlLCAndXBkYXRlKCk6IGV4cGVjdGVkIHNwZWMgb2YgJXMgdG8gYmUgYW4gYXJyYXkgb2YgYXJy
YXlzOyBnb3QgJXMuIERpZCB5b3UgZm9yZ2V0IHRvIHdyYXAgeW91ciBwYXJhbWV0ZXJzIGluIGFu
IGFycmF5PycsIENPTU1BTkRfU1BMSUNFLCBzcGVjW0NPTU1BTkRfU1BMSUNFXSkgOiBfcHJvZElu
dmFyaWFudCgnOCcsIENPTU1BTkRfU1BMSUNFLCBzcGVjW0NPTU1BTkRfU1BMSUNFXSkgOiB2b2lk
IDA7CisgICAgc3BlY1tDT01NQU5EX1NQTElDRV0uZm9yRWFjaChmdW5jdGlvbiAoYXJncykgewor
ICAgICAgIUFycmF5LmlzQXJyYXkoYXJncykgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3By
b2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAndXBkYXRlKCk6IGV4cGVjdGVkIHNwZWMgb2Yg
JXMgdG8gYmUgYW4gYXJyYXkgb2YgYXJyYXlzOyBnb3QgJXMuIERpZCB5b3UgZm9yZ2V0IHRvIHdy
YXAgeW91ciBwYXJhbWV0ZXJzIGluIGFuIGFycmF5PycsIENPTU1BTkRfU1BMSUNFLCBzcGVjW0NP
TU1BTkRfU1BMSUNFXSkgOiBfcHJvZEludmFyaWFudCgnOCcsIENPTU1BTkRfU1BMSUNFLCBzcGVj
W0NPTU1BTkRfU1BMSUNFXSkgOiB2b2lkIDA7CisgICAgICBuZXh0VmFsdWUuc3BsaWNlLmFwcGx5
KG5leHRWYWx1ZSwgYXJncyk7CisgICAgfSk7CisgIH0KKworICBpZiAoaGFzT3duUHJvcGVydHku
Y2FsbChzcGVjLCBDT01NQU5EX0FQUExZKSkgeworICAgICEodHlwZW9mIHNwZWNbQ09NTUFORF9B
UFBMWV0gPT09ICdmdW5jdGlvbicpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3VwZGF0ZSgpOiBleHBlY3RlZCBzcGVjIG9mICVzIHRv
IGJlIGEgZnVuY3Rpb247IGdvdCAlcy4nLCBDT01NQU5EX0FQUExZLCBzcGVjW0NPTU1BTkRfQVBQ
TFldKSA6IF9wcm9kSW52YXJpYW50KCc5JywgQ09NTUFORF9BUFBMWSwgc3BlY1tDT01NQU5EX0FQ
UExZXSkgOiB2b2lkIDA7CisgICAgbmV4dFZhbHVlID0gc3BlY1tDT01NQU5EX0FQUExZXShuZXh0
VmFsdWUpOworICB9CisKKyAgZm9yICh2YXIgayBpbiBzcGVjKSB7CisgICAgaWYgKCEoQUxMX0NP
TU1BTkRTX1NFVC5oYXNPd25Qcm9wZXJ0eShrKSAmJiBBTExfQ09NTUFORFNfU0VUW2tdKSkgewor
ICAgICAgbmV4dFZhbHVlW2tdID0gdXBkYXRlKHZhbHVlW2tdLCBzcGVjW2tdKTsKKyAgICB9Cisg
IH0KKworICByZXR1cm4gbmV4dFZhbHVlOworfQorCittb2R1bGUuZXhwb3J0cyA9IHVwZGF0ZTsK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFj
dC9ub2RlX21vZHVsZXMvcmVhY3QvcGFja2FnZS5qc29uIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9k
ZV9tb2R1bGVzL3JlYWN0L3BhY2thZ2UuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NGRhMTE1MzM0MDc0OTU4
N2IwYWM1NjYyNGVhNWE0NzUzZDVkMGVlCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
cmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0L3BhY2thZ2UuanNvbgpAQCAtMCwwICsxLDgwIEBACit7
CisgICJfYXJncyI6IFsKKyAgICBbCisgICAgICB7CisgICAgICAgICJyYXciOiAicmVhY3RAaHR0
cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcmVhY3QvLS9yZWFjdC0xNS40LjAudGd6IiwKKyAgICAg
ICAgInNjb3BlIjogbnVsbCwKKyAgICAgICAgImVzY2FwZWROYW1lIjogInJlYWN0IiwKKyAgICAg
ICAgIm5hbWUiOiAicmVhY3QiLAorICAgICAgICAicmF3U3BlYyI6ICJodHRwczovL3JlZ2lzdHJ5
Lm5wbWpzLm9yZy9yZWFjdC8tL3JlYWN0LTE1LjQuMC50Z3oiLAorICAgICAgICAic3BlYyI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9yZWFjdC8tL3JlYWN0LTE1LjQuMC50Z3oiLAorICAg
ICAgICAidHlwZSI6ICJyZW1vdGUiCisgICAgICB9LAorICAgICAgIi9Vc2Vycy9hZGR5by9wcm9q
ZWN0cy9zcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
cmVhY3QiCisgICAgXQorICBdLAorICAiX2Zyb20iOiAicmVhY3RAMTUuNC4wIiwKKyAgIl9pZCI6
ICJyZWFjdEAxNS40LjAiLAorICAiX2luQ2FjaGUiOiB0cnVlLAorICAiX2xvY2F0aW9uIjogIi9y
ZWFjdCIsCisgICJfcGhhbnRvbUNoaWxkcmVuIjoge30sCisgICJfcmVxdWVzdGVkIjogeworICAg
ICJyYXciOiAicmVhY3RAaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcmVhY3QvLS9yZWFjdC0x
NS40LjAudGd6IiwKKyAgICAic2NvcGUiOiBudWxsLAorICAgICJlc2NhcGVkTmFtZSI6ICJyZWFj
dCIsCisgICAgIm5hbWUiOiAicmVhY3QiLAorICAgICJyYXdTcGVjIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL3JlYWN0Ly0vcmVhY3QtMTUuNC4wLnRneiIsCisgICAgInNwZWMiOiAiaHR0
cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcmVhY3QvLS9yZWFjdC0xNS40LjAudGd6IiwKKyAgICAi
dHlwZSI6ICJyZW1vdGUiCisgIH0sCisgICJfcmVxdWlyZWRCeSI6IFsKKyAgICAiLyIKKyAgXSwK
KyAgIl9yZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9yZWFjdC8tL3JlYWN0
LTE1LjQuMC50Z3oiLAorICAiX3NoYXN1bSI6ICI3MzZjMWM3YzU0MmU4MDg4MTI3MTA2ZTFmNDUw
YjAxMGY4NmQxNzJiIiwKKyAgIl9zaHJpbmt3cmFwIjogbnVsbCwKKyAgIl9zcGVjIjogInJlYWN0
QGh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3JlYWN0Ly0vcmVhY3QtMTUuNC4wLnRneiIsCisg
ICJfd2hlcmUiOiAiL1VzZXJzL2FkZHlvL3Byb2plY3RzL3NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdCIsCisgICJicm93c2VyaWZ5Ijogewor
ICAgICJ0cmFuc2Zvcm0iOiBbCisgICAgICAibG9vc2UtZW52aWZ5IgorICAgIF0KKyAgfSwKKyAg
ImJ1Z3MiOiB7CisgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3Qv
aXNzdWVzIgorICB9LAorICAiZGVwZW5kZW5jaWVzIjogeworICAgICJmYmpzIjogIl4wLjguNCIs
CisgICAgImxvb3NlLWVudmlmeSI6ICJeMS4xLjAiLAorICAgICJvYmplY3QtYXNzaWduIjogIl40
LjEuMCIKKyAgfSwKKyAgImRlc2NyaXB0aW9uIjogIlJlYWN0IGlzIGEgSmF2YVNjcmlwdCBsaWJy
YXJ5IGZvciBidWlsZGluZyB1c2VyIGludGVyZmFjZXMuIiwKKyAgImRldkRlcGVuZGVuY2llcyI6
IHt9LAorICAiZW5naW5lcyI6IHsKKyAgICAibm9kZSI6ICI+PTAuMTAuMCIKKyAgfSwKKyAgImZp
bGVzIjogWworICAgICJMSUNFTlNFIiwKKyAgICAiUEFURU5UUyIsCisgICAgImFkZG9ucy5qcyIs
CisgICAgInJlYWN0LmpzIiwKKyAgICAiYWRkb25zLyIsCisgICAgImRpc3QvIiwKKyAgICAibGli
LyIKKyAgXSwKKyAgImhvbWVwYWdlIjogImh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0
LyIsCisgICJrZXl3b3JkcyI6IFsKKyAgICAicmVhY3QiCisgIF0sCisgICJsaWNlbnNlIjogIkJT
RC0zLUNsYXVzZSIsCisgICJtYWluIjogInJlYWN0LmpzIiwKKyAgIm5hbWUiOiAicmVhY3QiLAor
ICAib3B0aW9uYWxEZXBlbmRlbmNpZXMiOiB7fSwKKyAgInJlYWRtZSI6ICIjIHJlYWN0XG5cbkFu
IG5wbSBwYWNrYWdlIHRvIGdldCB5b3UgaW1tZWRpYXRlIGFjY2VzcyB0byBbUmVhY3RdKGh0dHBz
Oi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0LyksXG53aXRob3V0IGFsc28gcmVxdWlyaW5nIHRo
ZSBKU1ggdHJhbnNmb3JtZXIuIFRoaXMgaXMgZXNwZWNpYWxseSB1c2VmdWwgZm9yIGNhc2VzIHdo
ZXJlIHlvdVxud2FudCB0byBbYGJyb3dzZXJpZnlgXShodHRwczovL2dpdGh1Yi5jb20vc3Vic3Rh
Y2svbm9kZS1icm93c2VyaWZ5KSB5b3VyIG1vZHVsZSB1c2luZ1xuYFJlYWN0YC5cblxuKipOb3Rl
OioqIGJ5IGRlZmF1bHQsIFJlYWN0IHdpbGwgYmUgaW4gZGV2ZWxvcG1lbnQgbW9kZS4gVGhlIGRl
dmVsb3BtZW50IHZlcnNpb24gaW5jbHVkZXMgZXh0cmEgd2FybmluZ3MgYWJvdXQgY29tbW9uIG1p
c3Rha2VzLCB3aGVyZWFzIHRoZSBwcm9kdWN0aW9uIHZlcnNpb24gaW5jbHVkZXMgZXh0cmEgcGVy
Zm9ybWFuY2Ugb3B0aW1pemF0aW9ucyBhbmQgc3RyaXBzIGFsbCBlcnJvciBtZXNzYWdlcy5cblxu
VG8gdXNlIFJlYWN0IGluIHByb2R1Y3Rpb24gbW9kZSwgc2V0IHRoZSBlbnZpcm9ubWVudCB2YXJp
YWJsZSBgTk9ERV9FTlZgIHRvIGBwcm9kdWN0aW9uYC4gQSBtaW5pZmllciB0aGF0IHBlcmZvcm1z
IGRlYWQtY29kZSBlbGltaW5hdGlvbiBzdWNoIGFzIFtVZ2xpZnlKU10oaHR0cHM6Ly9naXRodWIu
Y29tL21pc2hvby9VZ2xpZnlKUzIpIGlzIHJlY29tbWVuZGVkIHRvIGNvbXBsZXRlbHkgcmVtb3Zl
IHRoZSBleHRyYSBjb2RlIHByZXNlbnQgaW4gZGV2ZWxvcG1lbnQgbW9kZS5cblxuIyMgRXhhbXBs
ZSBVc2FnZVxuXG5gYGBqc1xudmFyIFJlYWN0ID0gcmVxdWlyZSgncmVhY3QnKTtcblxuLy8gQWRk
b25zIGFyZSBpbiBzZXBhcmF0ZSBwYWNrYWdlczpcbnZhciBjcmVhdGVGcmFnbWVudCA9IHJlcXVp
cmUoJ3JlYWN0LWFkZG9ucy1jcmVhdGUtZnJhZ21lbnQnKTtcbnZhciBpbW11dGFiaWxpdHlIZWxw
ZXJzID0gcmVxdWlyZSgncmVhY3QtYWRkb25zLXVwZGF0ZScpO1xudmFyIENTU1RyYW5zaXRpb25H
cm91cCA9IHJlcXVpcmUoJ3JlYWN0LWFkZG9ucy1jc3MtdHJhbnNpdGlvbi1ncm91cCcpO1xuYGBg
XG5cbkZvciBhIGNvbXBsZXRlIGxpc3Qgb2YgYWRkb25zIHZpc2l0IHRoZSBbYWRkb25zIGRvY3Vt
ZW50YXRpb24gcGFnZV0oaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy9hZGRv
bnMuaHRtbCkuXG4iLAorICAicmVhZG1lRmlsZW5hbWUiOiAiUkVBRE1FLm1kIiwKKyAgInJlcG9z
aXRvcnkiOiB7CisgICAgInR5cGUiOiAiZ2l0IiwKKyAgICAidXJsIjogImdpdCtodHRwczovL2dp
dGh1Yi5jb20vZmFjZWJvb2svcmVhY3QuZ2l0IgorICB9LAorICAidmVyc2lvbiI6ICIxNS40LjAi
Cit9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QvcmVh
Y3QuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QvcmVhY3QuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNTNhYmQ2ZjAzNjJkODM2NTU0NzBjYjY0ZDBiZGJkM2NhMzZmNmM3NAotLS0gL2Rl
di9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC9yZWFjdC5q
cwpAQCAtMCwwICsxLDMgQEAKKyd1c2Ugc3RyaWN0JzsKKworbW9kdWxlLmV4cG9ydHMgPSByZXF1
aXJlKCcuL2xpYi9SZWFjdCcpOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9t
b2R1bGVzL3RvZG9tdmMtYXBwLWNzcy9pbmRleC5jc3MgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2Rl
X21vZHVsZXMvdG9kb212Yy1hcHAtY3NzL2luZGV4LmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xN2VhMTgwMTYx
MjEyNmYxZGI2NWNlMDU2OGYyYTAyMzczYjkzYjU1Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3RvZG9tdmMtYXBwLWNzcy9pbmRleC5jc3MKQEAgLTAs
MCArMSwzNzggQEAKK2h0bWwsCitib2R5IHsKKyAgICBtYXJnaW46IDA7CisgICAgcGFkZGluZzog
MDsKK30KKworYnV0dG9uIHsKKyAgICBtYXJnaW46IDA7CisgICAgcGFkZGluZzogMDsKKyAgICBi
b3JkZXI6IDA7CisgICAgYmFja2dyb3VuZDogbm9uZTsKKyAgICBmb250LXNpemU6IDEwMCU7Cisg
ICAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOworICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0Owor
ICAgIGZvbnQtd2VpZ2h0OiBpbmhlcml0OworICAgIGNvbG9yOiBpbmhlcml0OworICAgIC13ZWJr
aXQtYXBwZWFyYW5jZTogbm9uZTsKKyAgICBhcHBlYXJhbmNlOiBub25lOworICAgIC13ZWJraXQt
Zm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOworICAgIC1tb3otZm9udC1zbW9vdGhpbmc6IGFu
dGlhbGlhc2VkOworICAgIGZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKK30KKworYm9keSB7
CisgICAgZm9udDogMTRweCAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5z
LXNlcmlmOworICAgIGxpbmUtaGVpZ2h0OiAxLjRlbTsKKyAgICBiYWNrZ3JvdW5kOiAjZjVmNWY1
OworICAgIGNvbG9yOiAjNGQ0ZDRkOworICAgIG1pbi13aWR0aDogMjMwcHg7CisgICAgbWF4LXdp
ZHRoOiA1NTBweDsKKyAgICBtYXJnaW46IDAgYXV0bzsKKyAgICAtd2Via2l0LWZvbnQtc21vb3Ro
aW5nOiBhbnRpYWxpYXNlZDsKKyAgICAtbW96LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsK
KyAgICBmb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CisgICAgZm9udC13ZWlnaHQ6IDMwMDsK
K30KKworYnV0dG9uLAoraW5wdXRbdHlwZT0iY2hlY2tib3giXSB7CisgICAgb3V0bGluZTogbm9u
ZTsKK30KKworLmhpZGRlbiB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKworI3RvZG9hcHAgewor
ICAgIGJhY2tncm91bmQ6ICNmZmY7CisgICAgbWFyZ2luOiAxMzBweCAwIDQwcHggMDsKKyAgICBw
b3NpdGlvbjogcmVsYXRpdmU7CisgICAgYm94LXNoYWRvdzogMCAycHggNHB4IDAgcmdiYSgwLCAw
LCAwLCAwLjIpLAorICAgICAgICAgICAgICAgIDAgMjVweCA1MHB4IDAgcmdiYSgwLCAwLCAwLCAw
LjEpOworfQorCisjdG9kb2FwcCBpbnB1dDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7Cisg
ICAgZm9udC1zdHlsZTogaXRhbGljOworICAgIGZvbnQtd2VpZ2h0OiAzMDA7CisgICAgY29sb3I6
ICNlNmU2ZTY7Cit9CisKKyN0b2RvYXBwIGlucHV0OjotbW96LXBsYWNlaG9sZGVyIHsKKyAgICBm
b250LXN0eWxlOiBpdGFsaWM7CisgICAgZm9udC13ZWlnaHQ6IDMwMDsKKyAgICBjb2xvcjogI2U2
ZTZlNjsKK30KKworI3RvZG9hcHAgaW5wdXQ6OmlucHV0LXBsYWNlaG9sZGVyIHsKKyAgICBmb250
LXN0eWxlOiBpdGFsaWM7CisgICAgZm9udC13ZWlnaHQ6IDMwMDsKKyAgICBjb2xvcjogI2U2ZTZl
NjsKK30KKworI3RvZG9hcHAgaDEgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6
IC0xNTVweDsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBmb250LXNpemU6IDEwMHB4OworICAgIGZv
bnQtd2VpZ2h0OiAxMDA7CisgICAgdGV4dC1hbGlnbjogY2VudGVyOworICAgIGNvbG9yOiByZ2Jh
KDE3NSwgNDcsIDQ3LCAwLjE1KTsKKyAgICAtd2Via2l0LXRleHQtcmVuZGVyaW5nOiBvcHRpbWl6
ZUxlZ2liaWxpdHk7CisgICAgLW1vei10ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5
OworICAgIHRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7Cit9CisKKyNuZXctdG9k
bywKKy5lZGl0IHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgbWFyZ2luOiAwOworICAg
IHdpZHRoOiAxMDAlOworICAgIGZvbnQtc2l6ZTogMjRweDsKKyAgICBmb250LWZhbWlseTogaW5o
ZXJpdDsKKyAgICBmb250LXdlaWdodDogaW5oZXJpdDsKKyAgICBsaW5lLWhlaWdodDogMS40ZW07
CisgICAgYm9yZGVyOiAwOworICAgIG91dGxpbmU6IG5vbmU7CisgICAgY29sb3I6IGluaGVyaXQ7
CisgICAgcGFkZGluZzogNnB4OworICAgIGJvcmRlcjogMXB4IHNvbGlkICM5OTk7CisgICAgYm94
LXNoYWRvdzogaW5zZXQgMCAtMXB4IDVweCAwIHJnYmEoMCwgMCwgMCwgMC4yKTsKKyAgICBib3gt
c2l6aW5nOiBib3JkZXItYm94OworICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlh
c2VkOworICAgIC1tb3otZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOworICAgIGZvbnQtc21v
b3RoaW5nOiBhbnRpYWxpYXNlZDsKK30KKworI25ldy10b2RvIHsKKyAgICBwYWRkaW5nOiAxNnB4
IDE2cHggMTZweCA2MHB4OworICAgIGJvcmRlcjogbm9uZTsKKyAgICBiYWNrZ3JvdW5kOiByZ2Jh
KDAsIDAsIDAsIDAuMDAzKTsKKyAgICBib3gtc2hhZG93OiBpbnNldCAwIC0ycHggMXB4IHJnYmEo
MCwwLDAsMC4wMyk7Cit9CisKKyNtYWluIHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAg
ei1pbmRleDogMjsKKyAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2U2ZTZlNjsKK30KKworbGFi
ZWxbZm9yPSd0b2dnbGUtYWxsJ10geworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKKyN0b2dnbGUt
YWxsIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiAtNTVweDsKKyAgICBsZWZ0
OiAtMTJweDsKKyAgICB3aWR0aDogNjBweDsKKyAgICBoZWlnaHQ6IDM0cHg7CisgICAgdGV4dC1h
bGlnbjogY2VudGVyOworICAgIGJvcmRlcjogbm9uZTsgLyogTW9iaWxlIFNhZmFyaSAqLworfQor
CisjdG9nZ2xlLWFsbDpiZWZvcmUgeworICAgIGNvbnRlbnQ6ICfina8nOworICAgIGZvbnQtc2l6
ZTogMjJweDsKKyAgICBjb2xvcjogI2U2ZTZlNjsKKyAgICBwYWRkaW5nOiAxMHB4IDI3cHggMTBw
eCAyN3B4OworfQorCisjdG9nZ2xlLWFsbDpjaGVja2VkOmJlZm9yZSB7CisgICAgY29sb3I6ICM3
MzczNzM7Cit9CisKKyN0b2RvLWxpc3QgeworICAgIG1hcmdpbjogMDsKKyAgICBwYWRkaW5nOiAw
OworICAgIGxpc3Qtc3R5bGU6IG5vbmU7Cit9CisKKyN0b2RvLWxpc3QgbGkgeworICAgIHBvc2l0
aW9uOiByZWxhdGl2ZTsKKyAgICBmb250LXNpemU6IDI0cHg7CisgICAgYm9yZGVyLWJvdHRvbTog
MXB4IHNvbGlkICNlZGVkZWQ7Cit9CisKKyN0b2RvLWxpc3QgbGk6bGFzdC1jaGlsZCB7CisgICAg
Ym9yZGVyLWJvdHRvbTogbm9uZTsKK30KKworI3RvZG8tbGlzdCBsaS5lZGl0aW5nIHsKKyAgICBi
b3JkZXItYm90dG9tOiBub25lOworICAgIHBhZGRpbmc6IDA7Cit9CisKKyN0b2RvLWxpc3QgbGku
ZWRpdGluZyAuZWRpdCB7CisgICAgZGlzcGxheTogYmxvY2s7CisgICAgd2lkdGg6IDUwNnB4Owor
ICAgIHBhZGRpbmc6IDEzcHggMTdweCAxMnB4IDE3cHg7CisgICAgbWFyZ2luOiAwIDAgMCA0M3B4
OworfQorCisjdG9kby1saXN0IGxpLmVkaXRpbmcgLnZpZXcgeworICAgIGRpc3BsYXk6IG5vbmU7
Cit9CisKKyN0b2RvLWxpc3QgbGkgLnRvZ2dsZSB7CisgICAgdGV4dC1hbGlnbjogY2VudGVyOwor
ICAgIHdpZHRoOiA0MHB4OworICAgIC8qIGF1dG8sIHNpbmNlIG5vbi1XZWJLaXQgYnJvd3NlcnMg
ZG9lc24ndCBzdXBwb3J0IGlucHV0IHN0eWxpbmcgKi8KKyAgICBoZWlnaHQ6IGF1dG87CisgICAg
cG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDogMDsKKyAgICBib3R0b206IDA7CisgICAgbWFy
Z2luOiBhdXRvIDA7CisgICAgYm9yZGVyOiBub25lOyAvKiBNb2JpbGUgU2FmYXJpICovCisgICAg
LXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOworICAgIGFwcGVhcmFuY2U6IG5vbmU7Cit9CisKKyN0
b2RvLWxpc3QgbGkgLnRvZ2dsZTphZnRlciB7CisgICAgY29udGVudDogdXJsKCdkYXRhOmltYWdl
L3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lk
dGg9IjQwIiBoZWlnaHQ9IjQwIiB2aWV3Qm94PSItMTAgLTE4IDEwMCAxMzUiPjxjaXJjbGUgY3g9
IjUwIiBjeT0iNTAiIHI9IjUwIiBmaWxsPSJub25lIiBzdHJva2U9IiNlZGVkZWQiIHN0cm9rZS13
aWR0aD0iMyIvPjwvc3ZnPicpOworfQorCisjdG9kby1saXN0IGxpIC50b2dnbGU6Y2hlY2tlZDph
ZnRlciB7CisgICAgY29udGVudDogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjQwIiBoZWlnaHQ9IjQwIiB2
aWV3Qm94PSItMTAgLTE4IDEwMCAxMzUiPjxjaXJjbGUgY3g9IjUwIiBjeT0iNTAiIHI9IjUwIiBm
aWxsPSJub25lIiBzdHJva2U9IiNiZGRhZDUiIHN0cm9rZS13aWR0aD0iMyIvPjxwYXRoIGZpbGw9
IiM1ZGMyYWYiIGQ9Ik03MiAyNUw0MiA3MSAyNyA1NmwtNCA0IDIwIDIwIDM0LTUyeiIvPjwvc3Zn
PicpOworfQorCisjdG9kby1saXN0IGxpIGxhYmVsIHsKKyAgICB3aGl0ZS1zcGFjZTogcHJlOwor
ICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7CisgICAgcGFkZGluZzogMTVweCA2MHB4IDE1cHgg
MTVweDsKKyAgICBtYXJnaW4tbGVmdDogNDVweDsKKyAgICBkaXNwbGF5OiBibG9jazsKKyAgICBs
aW5lLWhlaWdodDogMS4yOworICAgIHRyYW5zaXRpb246IGNvbG9yIDAuNHM7Cit9CisKKyN0b2Rv
LWxpc3QgbGkuY29tcGxldGVkIGxhYmVsIHsKKyAgICBjb2xvcjogI2Q5ZDlkOTsKKyAgICB0ZXh0
LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDsKK30KKworI3RvZG8tbGlzdCBsaSAuZGVzdHJveSB7
CisgICAgZGlzcGxheTogbm9uZTsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiAw
OworICAgIHJpZ2h0OiAxMHB4OworICAgIGJvdHRvbTogMDsKKyAgICB3aWR0aDogNDBweDsKKyAg
ICBoZWlnaHQ6IDQwcHg7CisgICAgbWFyZ2luOiBhdXRvIDA7CisgICAgZm9udC1zaXplOiAzMHB4
OworICAgIGNvbG9yOiAjY2M5YTlhOworICAgIG1hcmdpbi1ib3R0b206IDExcHg7CisgICAgdHJh
bnNpdGlvbjogY29sb3IgMC4ycyBlYXNlLW91dDsKK30KKworI3RvZG8tbGlzdCBsaSAuZGVzdHJv
eTpob3ZlciB7CisgICAgY29sb3I6ICNhZjViNWU7Cit9CisKKyN0b2RvLWxpc3QgbGkgLmRlc3Ry
b3k6YWZ0ZXIgeworICAgIGNvbnRlbnQ6ICfDlyc7Cit9CisKKyN0b2RvLWxpc3QgbGk6aG92ZXIg
LmRlc3Ryb3kgeworICAgIGRpc3BsYXk6IGJsb2NrOworfQorCisjdG9kby1saXN0IGxpIC5lZGl0
IHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCisjdG9kby1saXN0IGxpLmVkaXRpbmc6bGFzdC1j
aGlsZCB7CisgICAgbWFyZ2luLWJvdHRvbTogLTFweDsKK30KKworI2Zvb3RlciB7CisgICAgY29s
b3I6ICM3Nzc7CisgICAgcGFkZGluZzogMTBweCAxNXB4OworICAgIGhlaWdodDogMjBweDsKKyAg
ICB0ZXh0LWFsaWduOiBjZW50ZXI7CisgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlNmU2ZTY7
Cit9CisKKyNmb290ZXI6YmVmb3JlIHsKKyAgICBjb250ZW50OiAnJzsKKyAgICBwb3NpdGlvbjog
YWJzb2x1dGU7CisgICAgcmlnaHQ6IDA7CisgICAgYm90dG9tOiAwOworICAgIGxlZnQ6IDA7Cisg
ICAgaGVpZ2h0OiA1MHB4OworICAgIG92ZXJmbG93OiBoaWRkZW47CisgICAgYm94LXNoYWRvdzog
MCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwKKyAgICAgICAgICAgICAgICAwIDhweCAwIC0z
cHggI2Y2ZjZmNiwKKyAgICAgICAgICAgICAgICAwIDlweCAxcHggLTNweCByZ2JhKDAsIDAsIDAs
IDAuMiksCisgICAgICAgICAgICAgICAgMCAxNnB4IDAgLTZweCAjZjZmNmY2LAorICAgICAgICAg
ICAgICAgIDAgMTdweCAycHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMik7Cit9CisKKyN0b2RvLWNv
dW50IHsKKyAgICBmbG9hdDogbGVmdDsKKyAgICB0ZXh0LWFsaWduOiBsZWZ0OworfQorCisjdG9k
by1jb3VudCBzdHJvbmcgeworICAgIGZvbnQtd2VpZ2h0OiAzMDA7Cit9CisKKyNmaWx0ZXJzIHsK
KyAgICBtYXJnaW46IDA7CisgICAgcGFkZGluZzogMDsKKyAgICBsaXN0LXN0eWxlOiBub25lOwor
ICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICByaWdodDogMDsKKyAgICBsZWZ0OiAwOworfQor
CisjZmlsdGVycyBsaSB7CisgICAgZGlzcGxheTogaW5saW5lOworfQorCisjZmlsdGVycyBsaSBh
IHsKKyAgICBjb2xvcjogaW5oZXJpdDsKKyAgICBtYXJnaW46IDNweDsKKyAgICBwYWRkaW5nOiAz
cHggN3B4OworICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKKyAgICBib3JkZXI6IDFweCBzb2xp
ZCB0cmFuc3BhcmVudDsKKyAgICBib3JkZXItcmFkaXVzOiAzcHg7Cit9CisKKyNmaWx0ZXJzIGxp
IGEuc2VsZWN0ZWQsCisjZmlsdGVycyBsaSBhOmhvdmVyIHsKKyAgICBib3JkZXItY29sb3I6IHJn
YmEoMTc1LCA0NywgNDcsIDAuMSk7Cit9CisKKyNmaWx0ZXJzIGxpIGEuc2VsZWN0ZWQgeworICAg
IGJvcmRlci1jb2xvcjogcmdiYSgxNzUsIDQ3LCA0NywgMC4yKTsKK30KKworI2NsZWFyLWNvbXBs
ZXRlZCwKK2h0bWwgI2NsZWFyLWNvbXBsZXRlZDphY3RpdmUgeworICAgIGZsb2F0OiByaWdodDsK
KyAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgbGluZS1oZWlnaHQ6IDIwcHg7CisgICAgdGV4
dC1kZWNvcmF0aW9uOiBub25lOworICAgIGN1cnNvcjogcG9pbnRlcjsKKyAgICBwb3NpdGlvbjog
cmVsYXRpdmU7Cit9CisKKyNjbGVhci1jb21wbGV0ZWQ6aG92ZXIgeworICAgIHRleHQtZGVjb3Jh
dGlvbjogdW5kZXJsaW5lOworfQorCisjaW5mbyB7CisgICAgbWFyZ2luOiA2NXB4IGF1dG8gMDsK
KyAgICBjb2xvcjogI2JmYmZiZjsKKyAgICBmb250LXNpemU6IDEwcHg7CisgICAgdGV4dC1zaGFk
b3c6IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpOworICAgIHRleHQtYWxpZ246IGNl
bnRlcjsKK30KKworI2luZm8gcCB7CisgICAgbGluZS1oZWlnaHQ6IDE7Cit9CisKKyNpbmZvIGEg
eworICAgIGNvbG9yOiBpbmhlcml0OworICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKKyAgICBm
b250LXdlaWdodDogNDAwOworfQorCisjaW5mbyBhOmhvdmVyIHsKKyAgICB0ZXh0LWRlY29yYXRp
b246IHVuZGVybGluZTsKK30KKworLyoKKyAgICBIYWNrIHRvIHJlbW92ZSBiYWNrZ3JvdW5kIGZy
b20gTW9iaWxlIFNhZmFyaS4KKyAgICBDYW4ndCB1c2UgaXQgZ2xvYmFsbHkgc2luY2UgaXQgZGVz
dHJveXMgY2hlY2tib3hlcyBpbiBGaXJlZm94CisqLworQG1lZGlhIHNjcmVlbiBhbmQgKC13ZWJr
aXQtbWluLWRldmljZS1waXhlbC1yYXRpbzowKSB7CisgICAgI3RvZ2dsZS1hbGwsCisgICAgI3Rv
ZG8tbGlzdCBsaSAudG9nZ2xlIHsKKyAgICAgICAgYmFja2dyb3VuZDogbm9uZTsKKyAgICB9CisK
KyAgICAjdG9kby1saXN0IGxpIC50b2dnbGUgeworICAgICAgICBoZWlnaHQ6IDQwcHg7CisgICAg
fQorCisgICAgI3RvZ2dsZS1hbGwgeworICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRl
KDkwZGVnKTsKKyAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpOworICAgICAgICAtd2Vi
a2l0LWFwcGVhcmFuY2U6IG5vbmU7CisgICAgICAgIGFwcGVhcmFuY2U6IG5vbmU7CisgICAgfQor
fQorCitAbWVkaWEgKG1heC13aWR0aDogNDMwcHgpIHsKKyAgICAjZm9vdGVyIHsKKyAgICAgICAg
aGVpZ2h0OiA1MHB4OworICAgIH0KKworICAgICNmaWx0ZXJzIHsKKyAgICAgICAgYm90dG9tOiAx
MHB4OworICAgIH0KK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxl
cy90b2RvbXZjLWFwcC1jc3MvcGFja2FnZS5qc29uIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9t
b2R1bGVzL3RvZG9tdmMtYXBwLWNzcy9wYWNrYWdlLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGRjMzVkNmUw
NGJmODhmODA5ZDYxNWQwMzljNmYyZmMwMmI5YWNlZAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy90b2RvbXZjLWFwcC1jc3MvcGFja2FnZS5qc29uCkBA
IC0wLDAgKzEsMTAzIEBACit7CisgICJfYXJncyI6IFsKKyAgICBbCisgICAgICB7CisgICAgICAg
ICJyYXciOiAidG9kb212Yy1hcHAtY3NzQF4xLjAuMSIsCisgICAgICAgICJzY29wZSI6IG51bGws
CisgICAgICAgICJlc2NhcGVkTmFtZSI6ICJ0b2RvbXZjLWFwcC1jc3MiLAorICAgICAgICAibmFt
ZSI6ICJ0b2RvbXZjLWFwcC1jc3MiLAorICAgICAgICAicmF3U3BlYyI6ICJeMS4wLjEiLAorICAg
ICAgICAic3BlYyI6ICI+PTEuMC4xIDwyLjAuMCIsCisgICAgICAgICJ0eXBlIjogInJhbmdlIgor
ICAgICAgfSwKKyAgICAgICIvVXNlcnMvYWRkeW8vcHJvamVjdHMvc3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcyIKKyAgICBdCisgIF0s
CisgICJfZnJvbSI6ICJ0b2RvbXZjLWFwcC1jc3NAPj0xLjAuMSA8Mi4wLjAiLAorICAiX2lkIjog
InRvZG9tdmMtYXBwLWNzc0AxLjAuNCIsCisgICJfaW5DYWNoZSI6IHRydWUsCisgICJfbG9jYXRp
b24iOiAiL3RvZG9tdmMtYXBwLWNzcyIsCisgICJfbm9kZVZlcnNpb24iOiAiMC4xMi4wIiwKKyAg
Il9ucG1Vc2VyIjogeworICAgICJuYW1lIjogInNpbmRyZXNvcmh1cyIsCisgICAgImVtYWlsIjog
InNpbmRyZXNvcmh1c0BnbWFpbC5jb20iCisgIH0sCisgICJfbnBtVmVyc2lvbiI6ICIyLjUuMSIs
CisgICJfcGhhbnRvbUNoaWxkcmVuIjoge30sCisgICJfcmVxdWVzdGVkIjogeworICAgICJyYXci
OiAidG9kb212Yy1hcHAtY3NzQF4xLjAuMSIsCisgICAgInNjb3BlIjogbnVsbCwKKyAgICAiZXNj
YXBlZE5hbWUiOiAidG9kb212Yy1hcHAtY3NzIiwKKyAgICAibmFtZSI6ICJ0b2RvbXZjLWFwcC1j
c3MiLAorICAgICJyYXdTcGVjIjogIl4xLjAuMSIsCisgICAgInNwZWMiOiAiPj0xLjAuMSA8Mi4w
LjAiLAorICAgICJ0eXBlIjogInJhbmdlIgorICB9LAorICAiX3JlcXVpcmVkQnkiOiBbCisgICAg
Ii8iCisgIF0sCisgICJfcmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvdG9k
b212Yy1hcHAtY3NzLy0vdG9kb212Yy1hcHAtY3NzLTEuMC40LnRneiIsCisgICJfc2hhc3VtIjog
ImQyNTI5Mjc5YTZkYTViZWZiMDZiNTVjMGMzMjRjNWZjZmQ5NGQ2NTYiLAorICAiX3Nocmlua3dy
YXAiOiBudWxsLAorICAiX3NwZWMiOiAidG9kb212Yy1hcHAtY3NzQF4xLjAuMSIsCisgICJfd2hl
cmUiOiAiL1VzZXJzL2FkZHlvL3Byb2plY3RzL3NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMiLAorICAiYXV0aG9yIjogeworICAgICJu
YW1lIjogIlNpbmRyZSBTb3JodXMiLAorICAgICJlbWFpbCI6ICJzaW5kcmVzb3JodXNAZ21haWwu
Y29tIiwKKyAgICAidXJsIjogInNpbmRyZXNvcmh1cy5jb20iCisgIH0sCisgICJidWdzIjogewor
ICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3Rhc3RlanMvdG9kb212Yy1hcHAtY3NzL2lz
c3VlcyIKKyAgfSwKKyAgImRlcGVuZGVuY2llcyI6IHt9LAorICAiZGVzY3JpcHRpb24iOiAiQ1NT
IGZvciBUb2RvTVZDIGFwcHMiLAorICAiZGV2RGVwZW5kZW5jaWVzIjoge30sCisgICJkaXJlY3Rv
cmllcyI6IHt9LAorICAiZGlzdCI6IHsKKyAgICAic2hhc3VtIjogImQyNTI5Mjc5YTZkYTViZWZi
MDZiNTVjMGMzMjRjNWZjZmQ5NGQ2NTYiLAorICAgICJ0YXJiYWxsIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL3RvZG9tdmMtYXBwLWNzcy8tL3RvZG9tdmMtYXBwLWNzcy0xLjAuNC50Z3oi
CisgIH0sCisgICJmaWxlcyI6IFsKKyAgICAiaW5kZXguY3NzIgorICBdLAorICAiZ2l0SGVhZCI6
ICIxZTRlMzg4ODRhMzUxOTNlYWYxODA4YTViYTQ0NDIxODMyODY3MTg0IiwKKyAgImhvbWVwYWdl
IjogImh0dHBzOi8vZ2l0aHViLmNvbS90YXN0ZWpzL3RvZG9tdmMtYXBwLWNzcyIsCisgICJrZXl3
b3JkcyI6IFsKKyAgICAidG9kb212YyIsCisgICAgInRhc3RlanMiLAorICAgICJhcHAiLAorICAg
ICJ0b2RvIiwKKyAgICAidGVtcGxhdGUiLAorICAgICJjc3MiLAorICAgICJzdHlsZSIsCisgICAg
InN0eWxlc2hlZXQiCisgIF0sCisgICJsaWNlbnNlIjogIkNDLUJZLTQuMCIsCisgICJtYWludGFp
bmVycyI6IFsKKyAgICB7CisgICAgICAibmFtZSI6ICJzaW5kcmVzb3JodXMiLAorICAgICAgImVt
YWlsIjogInNpbmRyZXNvcmh1c0BnbWFpbC5jb20iCisgICAgfSwKKyAgICB7CisgICAgICAibmFt
ZSI6ICJhZGR5b3NtYW5pIiwKKyAgICAgICJlbWFpbCI6ICJhZGR5b3NtYW5pQGdtYWlsLmNvbSIK
KyAgICB9LAorICAgIHsKKyAgICAgICJuYW1lIjogInBhc3N5IiwKKyAgICAgICJlbWFpbCI6ICJw
aGFydGlnQHJkcmVpLm5ldCIKKyAgICB9LAorICAgIHsKKyAgICAgICJuYW1lIjogInN0ZXBoZW5w
bHVzcGx1cyIsCisgICAgICAiZW1haWwiOiAic2F3Y2h1a0BnbWFpbC5jb20iCisgICAgfQorICBd
LAorICAibmFtZSI6ICJ0b2RvbXZjLWFwcC1jc3MiLAorICAib3B0aW9uYWxEZXBlbmRlbmNpZXMi
OiB7fSwKKyAgInJlYWRtZSI6ICJFUlJPUjogTm8gUkVBRE1FIGRhdGEgZm91bmQhIiwKKyAgInJl
cG9zaXRvcnkiOiB7CisgICAgInR5cGUiOiAiZ2l0IiwKKyAgICAidXJsIjogImdpdCtodHRwczov
L2dpdGh1Yi5jb20vdGFzdGVqcy90b2RvbXZjLWFwcC1jc3MuZ2l0IgorICB9LAorICAic2NyaXB0
cyI6IHt9LAorICAidmVyc2lvbiI6ICIxLjAuNCIKK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L3JlYWN0L25vZGVfbW9kdWxlcy90b2RvbXZjLWFwcC1jc3MvcmVhZG1lLm1kIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3RvZG9tdmMtYXBwLWNzcy9yZWFkbWUubWQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmRkYmViZjAyNGMwNGFlYjYwMjBjYWYxMzFhMmVkMDMxODkwODBhNQotLS0gL2Rldi9udWxs
CisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy90b2RvbXZjLWFwcC1jc3MvcmVh
ZG1lLm1kCkBAIC0wLDAgKzEsMjggQEAKKyMgdG9kb212Yy1hcHAtY3NzCisKKz4gQ1NTIGZvciBU
b2RvTVZDIGFwcHMKKworIVtdKHNjcmVlbnNob3QucG5nKQorCisKKyMjIEluc3RhbGwKKworCitg
YGAKKyQgbnBtIGluc3RhbGwgLS1zYXZlIHRvZG9tdmMtYXBwLWNzcworYGBgCisKKworIyMgR2V0
dGluZyBzdGFydGVkCisKK2BgYGh0bWwKKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ibm9k
ZV9tb2R1bGVzL3RvZG9tdmMtYXBwLWNzcy9pbmRleC5jc3MiPgorYGBgCisKK1NlZSB0aGUgW1Rv
ZG9NVkMgYXBwIHRlbXBsYXRlXShodHRwczovL2dpdGh1Yi5jb20vdGFzdGVqcy90b2RvbXZjLWFw
cC10ZW1wbGF0ZSkuCisKKworCisjIyBMaWNlbnNlCisKKzxhIHJlbD0ibGljZW5zZSIgaHJlZj0i
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnkvNC4wL2RlZWQuZW5fVVMiPjxp
bWcgYWx0PSJDcmVhdGl2ZSBDb21tb25zIExpY2Vuc2UiIHN0eWxlPSJib3JkZXItd2lkdGg6MCIg
c3JjPSJodHRwOi8vaS5jcmVhdGl2ZWNvbW1vbnMub3JnL2wvYnkvNC4wLzgweDE1LnBuZyIgLz48
L2E+PGJyIC8+VGhpcyA8c3BhbiB4bWxuczpkY3Q9Imh0dHA6Ly9wdXJsLm9yZy9kYy90ZXJtcy8i
IGhyZWY9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9JbnRlcmFjdGl2ZVJlc291cmNlIiBy
ZWw9ImRjdDp0eXBlIj53b3JrPC9zcGFuPiBieSA8YSB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvbnMjIiBocmVmPSJodHRwOi8vc2luZHJlc29yaHVzLmNvbSIgcHJvcGVydHk9
ImNjOmF0dHJpYnV0aW9uTmFtZSIgcmVsPSJjYzphdHRyaWJ1dGlvblVSTCI+U2luZHJlIFNvcmh1
czwvYT4gaXMgbGljZW5zZWQgdW5kZXIgYSA8YSByZWw9ImxpY2Vuc2UiIGhyZWY9Imh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LzQuMC9kZWVkLmVuX1VTIj5DcmVhdGl2ZSBD
b21tb25zIEF0dHJpYnV0aW9uIDQuMCBJbnRlcm5hdGlvbmFsIExpY2Vuc2U8L2E+LgpkaWZmIC0t
Z2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jhc2Uu
Y3NzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jhc2Uu
Y3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMjVkM2M4NGFjNmM2YWVmMjZiOTY4M2EyYmMxMGM2MWY5NjBjOGYK
LS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvdG9kb212
Yy1jb21tb24vYmFzZS5jc3MKQEAgLTAsMCArMSwxNDEgQEAKK2hyIHsKKyAgICBtYXJnaW46IDIw
cHggMDsKKyAgICBib3JkZXI6IDA7CisgICAgYm9yZGVyLXRvcDogMXB4IGRhc2hlZCAjYzVjNWM1
OworICAgIGJvcmRlci1ib3R0b206IDFweCBkYXNoZWQgI2Y3ZjdmNzsKK30KKworLmxlYXJuIGEg
eworICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CisgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwor
ICAgIGNvbG9yOiAjYjgzZjQ1OworfQorCisubGVhcm4gYTpob3ZlciB7CisgICAgdGV4dC1kZWNv
cmF0aW9uOiB1bmRlcmxpbmU7CisgICAgY29sb3I6ICM3ODdlN2U7Cit9CisKKy5sZWFybiBoMywK
Ky5sZWFybiBoNCwKKy5sZWFybiBoNSB7CisgICAgbWFyZ2luOiAxMHB4IDA7CisgICAgZm9udC13
ZWlnaHQ6IDUwMDsKKyAgICBsaW5lLWhlaWdodDogMS4yOworICAgIGNvbG9yOiAjMDAwOworfQor
CisubGVhcm4gaDMgeworICAgIGZvbnQtc2l6ZTogMjRweDsKK30KKworLmxlYXJuIGg0IHsKKyAg
ICBmb250LXNpemU6IDE4cHg7Cit9CisKKy5sZWFybiBoNSB7CisgICAgbWFyZ2luLWJvdHRvbTog
MDsKKyAgICBmb250LXNpemU6IDE0cHg7Cit9CisKKy5sZWFybiB1bCB7CisgICAgcGFkZGluZzog
MDsKKyAgICBtYXJnaW46IDAgMCAzMHB4IDI1cHg7Cit9CisKKy5sZWFybiBsaSB7CisgICAgbGlu
ZS1oZWlnaHQ6IDIwcHg7Cit9CisKKy5sZWFybiBwIHsKKyAgICBmb250LXNpemU6IDE1cHg7Cisg
ICAgZm9udC13ZWlnaHQ6IDMwMDsKKyAgICBsaW5lLWhlaWdodDogMS4zOworICAgIG1hcmdpbi10
b3A6IDA7CisgICAgbWFyZ2luLWJvdHRvbTogMDsKK30KKworI2lzc3VlLWNvdW50IHsKKyAgICBk
aXNwbGF5OiBub25lOworfQorCisucXVvdGUgeworICAgIGJvcmRlcjogbm9uZTsKKyAgICBtYXJn
aW46IDIwcHggMCA2MHB4IDA7Cit9CisKKy5xdW90ZSBwIHsKKyAgICBmb250LXN0eWxlOiBpdGFs
aWM7Cit9CisKKy5xdW90ZSBwOmJlZm9yZSB7CisgICAgY29udGVudDogJ+KAnCc7CisgICAgZm9u
dC1zaXplOiA1MHB4OworICAgIG9wYWNpdHk6IC4xNTsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7
CisgICAgdG9wOiAtMjBweDsKKyAgICBsZWZ0OiAzcHg7Cit9CisKKy5xdW90ZSBwOmFmdGVyIHsK
KyAgICBjb250ZW50OiAn4oCdJzsKKyAgICBmb250LXNpemU6IDUwcHg7CisgICAgb3BhY2l0eTog
LjE1OworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBib3R0b206IC00MnB4OworICAgIHJp
Z2h0OiAzcHg7Cit9CisKKy5xdW90ZSBmb290ZXIgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsK
KyAgICBib3R0b206IC00MHB4OworICAgIHJpZ2h0OiAwOworfQorCisucXVvdGUgZm9vdGVyIGlt
ZyB7CisgICAgYm9yZGVyLXJhZGl1czogM3B4OworfQorCisucXVvdGUgZm9vdGVyIGEgeworICAg
IG1hcmdpbi1sZWZ0OiA1cHg7CisgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKK30KKworLnNw
ZWVjaC1idWJibGUgeworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICBwYWRkaW5nOiAxMHB4
OworICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgLjA0KTsKKyAgICBib3JkZXItcmFkaXVz
OiA1cHg7Cit9CisKKy5zcGVlY2gtYnViYmxlOmFmdGVyIHsKKyAgICBjb250ZW50OiAnJzsKKyAg
ICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiAxMDAlOworICAgIHJpZ2h0OiAzMHB4Owor
ICAgIGJvcmRlcjogMTNweCBzb2xpZCB0cmFuc3BhcmVudDsKKyAgICBib3JkZXItdG9wLWNvbG9y
OiByZ2JhKDAsIDAsIDAsIC4wNCk7Cit9CisKKy5sZWFybi1iYXIgPiAubGVhcm4geworICAgIHBv
c2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB3aWR0aDogMjcycHg7CisgICAgdG9wOiA4cHg7CisgICAg
bGVmdDogLTMwMHB4OworICAgIHBhZGRpbmc6IDEwcHg7CisgICAgYm9yZGVyLXJhZGl1czogNXB4
OworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgLjYpOworICAgIHRy
YW5zaXRpb24tcHJvcGVydHk6IGxlZnQ7CisgICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogNTAwbXM7
Cit9CisKK0BtZWRpYSAobWluLXdpZHRoOiA4OTlweCkgeworICAgIC5sZWFybi1iYXIgeworICAg
ICAgICB3aWR0aDogYXV0bzsKKyAgICAgICAgcGFkZGluZy1sZWZ0OiAzMDBweDsKKyAgICB9CisK
KyAgICAubGVhcm4tYmFyID4gLmxlYXJuIHsKKyAgICAgICAgbGVmdDogOHB4OworICAgIH0KK30K
ZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1v
bi9iYXNlLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9u
L2Jhc2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uODFlMDA2YmM1MDJkZGM0Yzc0ZjQ3YmQxM2E4MzkyMjc3Zjgz
MGRiOAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy90
b2RvbXZjLWNvbW1vbi9iYXNlLmpzCkBAIC0wLDAgKzEsMjQ5IEBACisvKiBnbG9iYWwgXyAqLwor
KGZ1bmN0aW9uICgpIHsKKyAgICAndXNlIHN0cmljdCc7CisKKyAgICAvKiBqc2hpbnQgaWdub3Jl
OnN0YXJ0ICovCisgICAgLy8gVW5kZXJzY29yZSdzIFRlbXBsYXRlIE1vZHVsZQorICAgIC8vIENv
dXJ0ZXN5IG9mIHVuZGVyc2NvcmVqcy5vcmcKKyAgICB2YXIgXyA9IChmdW5jdGlvbiAoXykgewor
ICAgICAgICBfLmRlZmF1bHRzID0gZnVuY3Rpb24gKG9iamVjdCkgeworICAgICAgICAgICAgaWYg
KCFvYmplY3QpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gb2JqZWN0OworICAgICAgICAgICAg
fQorICAgICAgICAgICAgZm9yICh2YXIgYXJnc0luZGV4ID0gMSwgYXJnc0xlbmd0aCA9IGFyZ3Vt
ZW50cy5sZW5ndGg7IGFyZ3NJbmRleCA8IGFyZ3NMZW5ndGg7IGFyZ3NJbmRleCsrKSB7CisgICAg
ICAgICAgICAgICAgdmFyIGl0ZXJhYmxlID0gYXJndW1lbnRzW2FyZ3NJbmRleF07CisgICAgICAg
ICAgICAgICAgaWYgKGl0ZXJhYmxlKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGtl
eSBpbiBpdGVyYWJsZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9iamVjdFtrZXld
ID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3Rba2V5XSA9IGl0
ZXJhYmxlW2tleV07CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1
cm4gb2JqZWN0OworICAgICAgICB9CisKKyAgICAgICAgLy8gQnkgZGVmYXVsdCwgVW5kZXJzY29y
ZSB1c2VzIEVSQi1zdHlsZSB0ZW1wbGF0ZSBkZWxpbWl0ZXJzLCBjaGFuZ2UgdGhlCisgICAgICAg
IC8vIGZvbGxvd2luZyB0ZW1wbGF0ZSBzZXR0aW5ncyB0byB1c2UgYWx0ZXJuYXRpdmUgZGVsaW1p
dGVycy4KKyAgICAgICAgXy50ZW1wbGF0ZVNldHRpbmdzID0geworICAgICAgICAgICAgZXZhbHVh
dGUgICAgOiAvPCUoW1xzXFNdKz8pJT4vZywKKyAgICAgICAgICAgIGludGVycG9sYXRlIDogLzwl
PShbXHNcU10rPyklPi9nLAorICAgICAgICAgICAgZXNjYXBlICAgICAgOiAvPCUtKFtcc1xTXSs/
KSU+L2cKKyAgICAgICAgfTsKKworICAgICAgICAvLyBXaGVuIGN1c3RvbWl6aW5nIGB0ZW1wbGF0
ZVNldHRpbmdzYCwgaWYgeW91IGRvbid0IHdhbnQgdG8gZGVmaW5lIGFuCisgICAgICAgIC8vIGlu
dGVycG9sYXRpb24sIGV2YWx1YXRpb24gb3IgZXNjYXBpbmcgcmVnZXgsIHdlIG5lZWQgb25lIHRo
YXQgaXMKKyAgICAgICAgLy8gZ3VhcmFudGVlZCBub3QgdG8gbWF0Y2guCisgICAgICAgIHZhciBu
b01hdGNoID0gLyguKV4vOworCisgICAgICAgIC8vIENlcnRhaW4gY2hhcmFjdGVycyBuZWVkIHRv
IGJlIGVzY2FwZWQgc28gdGhhdCB0aGV5IGNhbiBiZSBwdXQgaW50byBhCisgICAgICAgIC8vIHN0
cmluZyBsaXRlcmFsLgorICAgICAgICB2YXIgZXNjYXBlcyA9IHsKKyAgICAgICAgICAgICInIjog
ICAgICAiJyIsCisgICAgICAgICAgICAnXFwnOiAgICAgJ1xcJywKKyAgICAgICAgICAgICdccic6
ICAgICAncicsCisgICAgICAgICAgICAnXG4nOiAgICAgJ24nLAorICAgICAgICAgICAgJ1x0Jzog
ICAgICd0JywKKyAgICAgICAgICAgICdcdTIwMjgnOiAndTIwMjgnLAorICAgICAgICAgICAgJ1x1
MjAyOSc6ICd1MjAyOScKKyAgICAgICAgfTsKKworICAgICAgICB2YXIgZXNjYXBlciA9IC9cXHwn
fFxyfFxufFx0fFx1MjAyOHxcdTIwMjkvZzsKKworICAgICAgICAvLyBKYXZhU2NyaXB0IG1pY3Jv
LXRlbXBsYXRpbmcsIHNpbWlsYXIgdG8gSm9obiBSZXNpZydzIGltcGxlbWVudGF0aW9uLgorICAg
ICAgICAvLyBVbmRlcnNjb3JlIHRlbXBsYXRpbmcgaGFuZGxlcyBhcmJpdHJhcnkgZGVsaW1pdGVy
cywgcHJlc2VydmVzIHdoaXRlc3BhY2UsCisgICAgICAgIC8vIGFuZCBjb3JyZWN0bHkgZXNjYXBl
cyBxdW90ZXMgd2l0aGluIGludGVycG9sYXRlZCBjb2RlLgorICAgICAgICBfLnRlbXBsYXRlID0g
ZnVuY3Rpb24odGV4dCwgZGF0YSwgc2V0dGluZ3MpIHsKKyAgICAgICAgICAgIHZhciByZW5kZXI7
CisgICAgICAgICAgICBzZXR0aW5ncyA9IF8uZGVmYXVsdHMoe30sIHNldHRpbmdzLCBfLnRlbXBs
YXRlU2V0dGluZ3MpOworCisgICAgICAgICAgICAvLyBDb21iaW5lIGRlbGltaXRlcnMgaW50byBv
bmUgcmVndWxhciBleHByZXNzaW9uIHZpYSBhbHRlcm5hdGlvbi4KKyAgICAgICAgICAgIHZhciBt
YXRjaGVyID0gbmV3IFJlZ0V4cChbCisgICAgICAgICAgICAgICAgKHNldHRpbmdzLmVzY2FwZSB8
fCBub01hdGNoKS5zb3VyY2UsCisgICAgICAgICAgICAgICAgKHNldHRpbmdzLmludGVycG9sYXRl
IHx8IG5vTWF0Y2gpLnNvdXJjZSwKKyAgICAgICAgICAgICAgICAoc2V0dGluZ3MuZXZhbHVhdGUg
fHwgbm9NYXRjaCkuc291cmNlCisgICAgICAgICAgICBdLmpvaW4oJ3wnKSArICd8JCcsICdnJyk7
CisKKyAgICAgICAgICAgIC8vIENvbXBpbGUgdGhlIHRlbXBsYXRlIHNvdXJjZSwgZXNjYXBpbmcg
c3RyaW5nIGxpdGVyYWxzIGFwcHJvcHJpYXRlbHkuCisgICAgICAgICAgICB2YXIgaW5kZXggPSAw
OworICAgICAgICAgICAgdmFyIHNvdXJjZSA9ICJfX3ArPSciOworICAgICAgICAgICAgdGV4dC5y
ZXBsYWNlKG1hdGNoZXIsIGZ1bmN0aW9uKG1hdGNoLCBlc2NhcGUsIGludGVycG9sYXRlLCBldmFs
dWF0ZSwgb2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgc291cmNlICs9IHRleHQuc2xpY2UoaW5k
ZXgsIG9mZnNldCkKKyAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoZXNjYXBlciwgZnVuY3Rp
b24obWF0Y2gpIHsgcmV0dXJuICdcXCcgKyBlc2NhcGVzW21hdGNoXTsgfSk7CisKKyAgICAgICAg
ICAgICAgICBpZiAoZXNjYXBlKSB7CisgICAgICAgICAgICAgICAgICAgIHNvdXJjZSArPSAiJytc
bigoX190PSgiICsgZXNjYXBlICsgIikpPT1udWxsPycnOl8uZXNjYXBlKF9fdCkpK1xuJyI7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChpbnRlcnBvbGF0ZSkgeworICAg
ICAgICAgICAgICAgICAgICBzb3VyY2UgKz0gIicrXG4oKF9fdD0oIiArIGludGVycG9sYXRlICsg
IikpPT1udWxsPycnOl9fdCkrXG4nIjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgaWYgKGV2YWx1YXRlKSB7CisgICAgICAgICAgICAgICAgICAgIHNvdXJjZSArPSAiJztcbiIg
KyBldmFsdWF0ZSArICJcbl9fcCs9JyI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIGluZGV4ID0gb2Zmc2V0ICsgbWF0Y2gubGVuZ3RoOworICAgICAgICAgICAgICAgIHJldHVy
biBtYXRjaDsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgc291cmNlICs9ICInO1xuIjsK
KworICAgICAgICAgICAgLy8gSWYgYSB2YXJpYWJsZSBpcyBub3Qgc3BlY2lmaWVkLCBwbGFjZSBk
YXRhIHZhbHVlcyBpbiBsb2NhbCBzY29wZS4KKyAgICAgICAgICAgIGlmICghc2V0dGluZ3MudmFy
aWFibGUpIHNvdXJjZSA9ICd3aXRoKG9ianx8e30pe1xuJyArIHNvdXJjZSArICd9XG4nOworCisg
ICAgICAgICAgICBzb3VyY2UgPSAidmFyIF9fdCxfX3A9JycsX19qPUFycmF5LnByb3RvdHlwZS5q
b2luLCIgKworICAgICAgICAgICAgICAgICJwcmludD1mdW5jdGlvbigpe19fcCs9X19qLmNhbGwo
YXJndW1lbnRzLCcnKTt9O1xuIiArCisgICAgICAgICAgICAgICAgc291cmNlICsgInJldHVybiBf
X3A7XG4iOworCisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIHJlbmRlciA9IG5l
dyBGdW5jdGlvbihzZXR0aW5ncy52YXJpYWJsZSB8fCAnb2JqJywgJ18nLCBzb3VyY2UpOworICAg
ICAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgICAgIGUuc291cmNlID0gc291cmNl
OworICAgICAgICAgICAgICAgIHRocm93IGU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGlmIChkYXRhKSByZXR1cm4gcmVuZGVyKGRhdGEsIF8pOworICAgICAgICAgICAgdmFyIHRlbXBs
YXRlID0gZnVuY3Rpb24oZGF0YSkgeworICAgICAgICAgICAgICAgIHJldHVybiByZW5kZXIuY2Fs
bCh0aGlzLCBkYXRhLCBfKTsKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIC8vIFByb3Zp
ZGUgdGhlIGNvbXBpbGVkIGZ1bmN0aW9uIHNvdXJjZSBhcyBhIGNvbnZlbmllbmNlIGZvciBwcmVj
b21waWxhdGlvbi4KKyAgICAgICAgICAgIHRlbXBsYXRlLnNvdXJjZSA9ICdmdW5jdGlvbignICsg
KHNldHRpbmdzLnZhcmlhYmxlIHx8ICdvYmonKSArICcpe1xuJyArIHNvdXJjZSArICd9JzsKKwor
ICAgICAgICAgICAgcmV0dXJuIHRlbXBsYXRlOworICAgICAgICB9OworCisgICAgICAgIHJldHVy
biBfOworICAgIH0pKHt9KTsKKworICAgIGlmIChsb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ3RvZG9t
dmMuY29tJykgeworICAgICAgICAoZnVuY3Rpb24oaSxzLG8sZyxyLGEsbSl7aVsnR29vZ2xlQW5h
bHl0aWNzT2JqZWN0J109cjtpW3JdPWlbcl18fGZ1bmN0aW9uKCl7CisgICAgICAgIChpW3JdLnE9
aVtyXS5xfHxbXSkucHVzaChhcmd1bWVudHMpfSxpW3JdLmw9MSpuZXcgRGF0ZSgpO2E9cy5jcmVh
dGVFbGVtZW50KG8pLAorICAgICAgICBtPXMuZ2V0RWxlbWVudHNCeVRhZ05hbWUobylbMF07YS5h
c3luYz0xO2Euc3JjPWc7bS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShhLG0pCisgICAgICAgIH0p
KHdpbmRvdyxkb2N1bWVudCwnc2NyaXB0JywnaHR0cHM6Ly93d3cuZ29vZ2xlLWFuYWx5dGljcy5j
b20vYW5hbHl0aWNzLmpzJywnZ2EnKTsKKyAgICAgICAgZ2EoJ2NyZWF0ZScsICdVQS0zMTA4MTA2
Mi0xJywgJ2F1dG8nKTsKKyAgICAgICAgZ2EoJ3NlbmQnLCAncGFnZXZpZXcnKTsKKyAgICB9Cisg
ICAgLyoganNoaW50IGlnbm9yZTplbmQgKi8KKworICAgIGZ1bmN0aW9uIHJlZGlyZWN0KCkgewor
ICAgICAgICBpZiAobG9jYXRpb24uaG9zdG5hbWUgPT09ICd0YXN0ZWpzLmdpdGh1Yi5pbycpIHsK
KyAgICAgICAgICAgIGxvY2F0aW9uLmhyZWYgPSBsb2NhdGlvbi5ocmVmLnJlcGxhY2UoJ3Rhc3Rl
anMuZ2l0aHViLmlvL3RvZG9tdmMnLCAndG9kb212Yy5jb20nKTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIGZ1bmN0aW9uIGZpbmRSb290KCkgeworICAgICAgICB2YXIgYmFzZSA9IGxvY2F0aW9u
LmhyZWYuaW5kZXhPZignZXhhbXBsZXMvJyk7CisgICAgICAgIHJldHVybiBsb2NhdGlvbi5ocmVm
LnN1YnN0cigwLCBiYXNlKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBnZXRGaWxlKGZpbGUsIGNh
bGxiYWNrKSB7CisgICAgICAgIGlmICghbG9jYXRpb24uaG9zdCkgeworICAgICAgICAgICAgcmV0
dXJuIGNvbnNvbGUuaW5mbygnTWlzcyB0aGUgaW5mbyBiYXI/IFJ1biBUb2RvTVZDIGZyb20gYSBz
ZXJ2ZXIgdG8gYXZvaWQgYSBjcm9zcy1vcmlnaW4gZXJyb3IuJyk7CisgICAgICAgIH0KKworICAg
ICAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CisKKyAgICAgICAgeGhyLm9wZW4o
J0dFVCcsIGZpbmRSb290KCkgKyBmaWxlLCB0cnVlKTsKKyAgICAgICAgeGhyLnNlbmQoKTsKKwor
ICAgICAgICB4aHIub25sb2FkID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgaWYgKHhoci5z
dGF0dXMgPT09IDIwMCAmJiBjYWxsYmFjaykgeworICAgICAgICAgICAgICAgIGNhbGxiYWNrKHho
ci5yZXNwb25zZVRleHQpOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0KKworICAg
IGZ1bmN0aW9uIExlYXJuKGxlYXJuSlNPTiwgY29uZmlnKSB7CisgICAgICAgIGlmICghKHRoaXMg
aW5zdGFuY2VvZiBMZWFybikpIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgTGVhcm4obGVhcm5K
U09OLCBjb25maWcpOworICAgICAgICB9CisKKyAgICAgICAgdmFyIHRlbXBsYXRlLCBmcmFtZXdv
cms7CisKKyAgICAgICAgaWYgKHR5cGVvZiBsZWFybkpTT04gIT09ICdvYmplY3QnKSB7CisgICAg
ICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIGxlYXJuSlNPTiA9IEpTT04ucGFyc2UobGVh
cm5KU09OKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoY29uZmlnKSB7Cisg
ICAgICAgICAgICB0ZW1wbGF0ZSA9IGNvbmZpZy50ZW1wbGF0ZTsKKyAgICAgICAgICAgIGZyYW1l
d29yayA9IGNvbmZpZy5mcmFtZXdvcms7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXRlbXBs
YXRlICYmIGxlYXJuSlNPTi50ZW1wbGF0ZXMpIHsKKyAgICAgICAgICAgIHRlbXBsYXRlID0gbGVh
cm5KU09OLnRlbXBsYXRlcy50b2RvbXZjOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFmcmFt
ZXdvcmsgJiYgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW2RhdGEtZnJhbWV3b3JrXScpKSB7Cisg
ICAgICAgICAgICBmcmFtZXdvcmsgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbZGF0YS1mcmFt
ZXdvcmtdJykuZGF0YXNldC5mcmFtZXdvcms7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLnRl
bXBsYXRlID0gdGVtcGxhdGU7CisKKyAgICAgICAgaWYgKGxlYXJuSlNPTi5iYWNrZW5kKSB7Cisg
ICAgICAgICAgICB0aGlzLmZyYW1ld29ya0pTT04gPSBsZWFybkpTT04uYmFja2VuZDsKKyAgICAg
ICAgICAgIHRoaXMuZnJhbWV3b3JrSlNPTi5pc3N1ZUxhYmVsID0gZnJhbWV3b3JrOworICAgICAg
ICAgICAgdGhpcy5hcHBlbmQoeworICAgICAgICAgICAgICAgIGJhY2tlbmQ6IHRydWUKKyAgICAg
ICAgICAgIH0pOworICAgICAgICB9IGVsc2UgaWYgKGxlYXJuSlNPTltmcmFtZXdvcmtdKSB7Cisg
ICAgICAgICAgICB0aGlzLmZyYW1ld29ya0pTT04gPSBsZWFybkpTT05bZnJhbWV3b3JrXTsKKyAg
ICAgICAgICAgIHRoaXMuZnJhbWV3b3JrSlNPTi5pc3N1ZUxhYmVsID0gZnJhbWV3b3JrOworICAg
ICAgICAgICAgdGhpcy5hcHBlbmQoKTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuZmV0Y2hJ
c3N1ZUNvdW50KCk7CisgICAgfQorCisgICAgTGVhcm4ucHJvdG90eXBlLmFwcGVuZCA9IGZ1bmN0
aW9uIChvcHRzKSB7CisgICAgICAgIHZhciBhc2lkZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2FzaWRlJyk7CisgICAgICAgIGFzaWRlLmlubmVySFRNTCA9IF8udGVtcGxhdGUodGhpcy50ZW1w
bGF0ZSwgdGhpcy5mcmFtZXdvcmtKU09OKTsKKyAgICAgICAgYXNpZGUuY2xhc3NOYW1lID0gJ2xl
YXJuJzsKKworICAgICAgICBpZiAob3B0cyAmJiBvcHRzLmJhY2tlbmQpIHsKKyAgICAgICAgICAg
IC8vIFJlbW92ZSBkZW1vIGxpbmsKKyAgICAgICAgICAgIHZhciBzb3VyY2VMaW5rcyA9IGFzaWRl
LnF1ZXJ5U2VsZWN0b3IoJy5zb3VyY2UtbGlua3MnKTsKKyAgICAgICAgICAgIHZhciBoZWFkaW5n
ID0gc291cmNlTGlua3MuZmlyc3RFbGVtZW50Q2hpbGQ7CisgICAgICAgICAgICB2YXIgc291cmNl
TGluayA9IHNvdXJjZUxpbmtzLmxhc3RFbGVtZW50Q2hpbGQ7CisgICAgICAgICAgICAvLyBDb3Jy
ZWN0IGxpbmsgcGF0aAorICAgICAgICAgICAgdmFyIGhyZWYgPSBzb3VyY2VMaW5rLmdldEF0dHJp
YnV0ZSgnaHJlZicpOworICAgICAgICAgICAgc291cmNlTGluay5zZXRBdHRyaWJ1dGUoJ2hyZWYn
LCBocmVmLnN1YnN0cihocmVmLmxhc3RJbmRleE9mKCdodHRwJykpKTsKKyAgICAgICAgICAgIHNv
dXJjZUxpbmtzLmlubmVySFRNTCA9IGhlYWRpbmcub3V0ZXJIVE1MICsgc291cmNlTGluay5vdXRl
ckhUTUw7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBMb2NhbGl6ZSBkZW1vIGxp
bmtzCisgICAgICAgICAgICB2YXIgZGVtb0xpbmtzID0gYXNpZGUucXVlcnlTZWxlY3RvckFsbCgn
LmRlbW8tbGluaycpOworICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChk
ZW1vTGlua3MsIGZ1bmN0aW9uIChkZW1vTGluaykgeworICAgICAgICAgICAgICAgIGlmIChkZW1v
TGluay5nZXRBdHRyaWJ1dGUoJ2hyZWYnKS5zdWJzdHIoMCwgNCkgIT09ICdodHRwJykgeworICAg
ICAgICAgICAgICAgICAgICBkZW1vTGluay5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBmaW5kUm9vdCgp
ICsgZGVtb0xpbmsuZ2V0QXR0cmlidXRlKCdocmVmJykpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0pOworICAgICAgICB9CisKKyAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc05h
bWUgPSAoZG9jdW1lbnQuYm9keS5jbGFzc05hbWUgKyAnIGxlYXJuLWJhcicpLnRyaW0oKTsKKyAg
ICAgICAgZG9jdW1lbnQuYm9keS5pbnNlcnRBZGphY2VudEhUTUwoJ2FmdGVyQmVnaW4nLCBhc2lk
ZS5vdXRlckhUTUwpOworICAgIH07CisKKyAgICBMZWFybi5wcm90b3R5cGUuZmV0Y2hJc3N1ZUNv
dW50ID0gZnVuY3Rpb24gKCkgeworICAgICAgICB2YXIgaXNzdWVMaW5rID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2lzc3VlLWNvdW50LWxpbmsnKTsKKyAgICAgICAgaWYgKGlzc3VlTGluaykg
eworICAgICAgICAgICAgdmFyIHVybCA9IGlzc3VlTGluay5ocmVmLnJlcGxhY2UoJ2h0dHBzOi8v
Z2l0aHViLmNvbScsICdodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zJyk7CisgICAgICAgICAg
ICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CisgICAgICAgICAgICB4aHIub3Blbign
R0VUJywgdXJsLCB0cnVlKTsKKyAgICAgICAgICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbiAoZSkg
eworICAgICAgICAgICAgICAgIHZhciBwYXJzZWRSZXNwb25zZSA9IEpTT04ucGFyc2UoZS50YXJn
ZXQucmVzcG9uc2VUZXh0KTsKKyAgICAgICAgICAgICAgICBpZiAocGFyc2VkUmVzcG9uc2UgaW5z
dGFuY2VvZiBBcnJheSkgeworICAgICAgICAgICAgICAgICAgICB2YXIgY291bnQgPSBwYXJzZWRS
ZXNwb25zZS5sZW5ndGg7CisgICAgICAgICAgICAgICAgICAgIGlmIChjb3VudCAhPT0gMCkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgaXNzdWVMaW5rLmlubmVySFRNTCA9ICdUaGlzIGFwcCBo
YXMgJyArIGNvdW50ICsgJyBvcGVuIGlzc3Vlcyc7CisgICAgICAgICAgICAgICAgICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaXNzdWUtY291bnQnKS5zdHlsZS5kaXNwbGF5ID0gJ2lu
bGluZSc7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9OworICAgICAgICAgICAgeGhyLnNlbmQoKTsKKyAgICAgICAgfQorICAgIH07CisKKyAg
ICByZWRpcmVjdCgpOworICAgIGdldEZpbGUoJ2xlYXJuLmpzb24nLCBMZWFybik7Cit9KSgpOwpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9u
L3BhY2thZ2UuanNvbiBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy90b2RvbXZjLWNv
bW1vbi9wYWNrYWdlLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGU2YWNjZTU0Njg0ZGIyNTZkNzA3YjQ3ZWQ4
ODQ1YjhmZjRhZDM4YgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVf
bW9kdWxlcy90b2RvbXZjLWNvbW1vbi9wYWNrYWdlLmpzb24KQEAgLTAsMCArMSwxMDQgQEAKK3sK
KyAgIl9hcmdzIjogWworICAgIFsKKyAgICAgIHsKKyAgICAgICAgInJhdyI6ICJ0b2RvbXZjLWNv
bW1vbkBeMS4wLjAiLAorICAgICAgICAic2NvcGUiOiBudWxsLAorICAgICAgICAiZXNjYXBlZE5h
bWUiOiAidG9kb212Yy1jb21tb24iLAorICAgICAgICAibmFtZSI6ICJ0b2RvbXZjLWNvbW1vbiIs
CisgICAgICAgICJyYXdTcGVjIjogIl4xLjAuMCIsCisgICAgICAgICJzcGVjIjogIj49MS4wLjAg
PDIuMC4wIiwKKyAgICAgICAgInR5cGUiOiAicmFuZ2UiCisgICAgICB9LAorICAgICAgIi9Vc2Vy
cy9hZGR5by9wcm9qZWN0cy9zcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvYW5ndWxhcmpzIgorICAgIF0KKyAgXSwKKyAgIl9mcm9tIjogInRvZG9tdmMt
Y29tbW9uQD49MS4wLjAgPDIuMC4wIiwKKyAgIl9pZCI6ICJ0b2RvbXZjLWNvbW1vbkAxLjAuMyIs
CisgICJfaW5DYWNoZSI6IHRydWUsCisgICJfbG9jYXRpb24iOiAiL3RvZG9tdmMtY29tbW9uIiwK
KyAgIl9ub2RlVmVyc2lvbiI6ICI3LjEuMCIsCisgICJfbnBtT3BlcmF0aW9uYWxJbnRlcm5hbCI6
IHsKKyAgICAiaG9zdCI6ICJwYWNrYWdlcy0xOC1lYXN0LmludGVybmFsLm5wbWpzLmNvbSIsCisg
ICAgInRtcCI6ICJ0bXAvdG9kb212Yy1jb21tb24tMS4wLjMudGd6XzE0NzkyNzYzNjEyMjdfMC41
MTEyNDg4MDEzNjkyMiIKKyAgfSwKKyAgIl9ucG1Vc2VyIjogeworICAgICJuYW1lIjogInNpbmRy
ZXNvcmh1cyIsCisgICAgImVtYWlsIjogInNpbmRyZXNvcmh1c0BnbWFpbC5jb20iCisgIH0sCisg
ICJfbnBtVmVyc2lvbiI6ICIzLjEwLjkiLAorICAiX3BoYW50b21DaGlsZHJlbiI6IHt9LAorICAi
X3JlcXVlc3RlZCI6IHsKKyAgICAicmF3IjogInRvZG9tdmMtY29tbW9uQF4xLjAuMCIsCisgICAg
InNjb3BlIjogbnVsbCwKKyAgICAiZXNjYXBlZE5hbWUiOiAidG9kb212Yy1jb21tb24iLAorICAg
ICJuYW1lIjogInRvZG9tdmMtY29tbW9uIiwKKyAgICAicmF3U3BlYyI6ICJeMS4wLjAiLAorICAg
ICJzcGVjIjogIj49MS4wLjAgPDIuMC4wIiwKKyAgICAidHlwZSI6ICJyYW5nZSIKKyAgfSwKKyAg
Il9yZXF1aXJlZEJ5IjogWworICAgICIvIgorICBdLAorICAiX3Jlc29sdmVkIjogImh0dHBzOi8v
cmVnaXN0cnkubnBtanMub3JnL3RvZG9tdmMtY29tbW9uLy0vdG9kb212Yy1jb21tb24tMS4wLjMu
dGd6IiwKKyAgIl9zaGFzdW0iOiAiY2JhMTg2ODEwOWNhYTQwMWI5MDhlYmY3Nzc5NGNjMTAxNGI3
NDg3MyIsCisgICJfc2hyaW5rd3JhcCI6IG51bGwsCisgICJfc3BlYyI6ICJ0b2RvbXZjLWNvbW1v
bkBeMS4wLjAiLAorICAiX3doZXJlIjogIi9Vc2Vycy9hZGR5by9wcm9qZWN0cy9zcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhcmpzIiwKKyAg
ImF1dGhvciI6IHsKKyAgICAibmFtZSI6ICJUYXN0ZUpTIgorICB9LAorICAiYnVncyI6IHsKKyAg
ICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS90YXN0ZWpzL3RvZG9tdmMtY29tbW9uL2lzc3Vl
cyIKKyAgfSwKKyAgImRlcGVuZGVuY2llcyI6IHt9LAorICAiZGVzY3JpcHRpb24iOiAiQ29tbW9u
IFRvZG9NVkMgdXRpbGl0aWVzIHVzZWQgYnkgb3VyIGFwcHMiLAorICAiZGV2RGVwZW5kZW5jaWVz
Ijoge30sCisgICJkaXJlY3RvcmllcyI6IHt9LAorICAiZGlzdCI6IHsKKyAgICAic2hhc3VtIjog
ImNiYTE4NjgxMDljYWE0MDFiOTA4ZWJmNzc3OTRjYzEwMTRiNzQ4NzMiLAorICAgICJ0YXJiYWxs
IjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3RvZG9tdmMtY29tbW9uLy0vdG9kb212Yy1j
b21tb24tMS4wLjMudGd6IgorICB9LAorICAiZmlsZXMiOiBbCisgICAgImJhc2UuanMiLAorICAg
ICJiYXNlLmNzcyIKKyAgXSwKKyAgImdpdEhlYWQiOiAiZTc0MjViYWZiOTU2MWQ3NjZiNzY5ODQ0
ODEwZTA0OTY3MzRmZmU4YyIsCisgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vdGFz
dGVqcy90b2RvbXZjLWNvbW1vbiNyZWFkbWUiLAorICAia2V5d29yZHMiOiBbCisgICAgInRvZG9t
dmMiLAorICAgICJ0YXN0ZWpzIiwKKyAgICAidXRpbCIsCisgICAgInV0aWxpdGllcyIKKyAgXSwK
KyAgImxpY2Vuc2UiOiAiTUlUIiwKKyAgIm1haW4iOiAiYmFzZS5qcyIsCisgICJtYWludGFpbmVy
cyI6IFsKKyAgICB7CisgICAgICAibmFtZSI6ICJzaW5kcmVzb3JodXMiLAorICAgICAgImVtYWls
IjogInNpbmRyZXNvcmh1c0BnbWFpbC5jb20iCisgICAgfSwKKyAgICB7CisgICAgICAibmFtZSI6
ICJhZGR5b3NtYW5pIiwKKyAgICAgICJlbWFpbCI6ICJhZGR5b3NtYW5pQGdtYWlsLmNvbSIKKyAg
ICB9LAorICAgIHsKKyAgICAgICJuYW1lIjogInBhc3N5IiwKKyAgICAgICJlbWFpbCI6ICJwaGFy
dGlnQHJkcmVpLm5ldCIKKyAgICB9LAorICAgIHsKKyAgICAgICJuYW1lIjogInN0ZXBoZW5wbHVz
cGx1cyIsCisgICAgICAiZW1haWwiOiAic2F3Y2h1a0BnbWFpbC5jb20iCisgICAgfQorICBdLAor
ICAibmFtZSI6ICJ0b2RvbXZjLWNvbW1vbiIsCisgICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHt9
LAorICAicmVhZG1lIjogIkVSUk9SOiBObyBSRUFETUUgZGF0YSBmb3VuZCEiLAorICAicmVwb3Np
dG9yeSI6IHsKKyAgICAidHlwZSI6ICJnaXQiLAorICAgICJ1cmwiOiAiZ2l0K2h0dHBzOi8vZ2l0
aHViLmNvbS90YXN0ZWpzL3RvZG9tdmMtY29tbW9uLmdpdCIKKyAgfSwKKyAgInNjcmlwdHMiOiB7
fSwKKyAgInN0eWxlIjogImJhc2UuY3NzIiwKKyAgInZlcnNpb24iOiAiMS4wLjMiCit9CmRpZmYg
LS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvdG9kb212Yy1jb21tb24vcmVh
ZG1lLm1kIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL3Jl
YWRtZS5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43YTVkZTUxMThmM2ZjNzc1OGU4ZGRjMGE2ODY4NzQ5Y2VlOWNh
Zjk1Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3Rv
ZG9tdmMtY29tbW9uL3JlYWRtZS5tZApAQCAtMCwwICsxLDE1IEBACisjIHRvZG9tdmMtY29tbW9u
CisKKz4gQ29tbW9uIFRvZG9NVkMgdXRpbGl0aWVzIHVzZWQgYnkgb3VyIGFwcHMKKworCisjIyBJ
bnN0YWxsCisKK2BgYAorJCBucG0gaW5zdGFsbCAtLXNhdmUgdG9kb212Yy1jb21tb24KK2BgYAor
CisKKyMjIExpY2Vuc2UKKworTUlUIMKpIFtUYXN0ZUpTXShodHRwOi8vdGFzdGVqcy5jb20pCmRp
ZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ucG0tc2hyaW5rd3JhcC5qc29uIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvcmVhY3QvbnBtLXNocmlua3dyYXAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MmVlNzgyMDc1OWVh
ZGM2NmRjYzRjODcyOWE5ZDhhMTg3YTc0MGE1Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvcmVhY3QvbnBtLXNocmlua3dyYXAuanNvbgpAQCAtMCwwICsxLDEwNCBAQAoreworICAiZGVw
ZW5kZW5jaWVzIjogeworICAgICJhc2FwIjogeworICAgICAgInZlcnNpb24iOiAiMi4wLjUiLAor
ICAgICAgImZyb20iOiAiYXNhcEA+PTIuMC4zIDwyLjEuMCIsCisgICAgICAicmVzb2x2ZWQiOiAi
aHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYXNhcC8tL2FzYXAtMi4wLjUudGd6IgorICAgIH0s
CisgICAgImNsYXNzbmFtZXMiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjIuNSIsCisgICAgICAi
ZnJvbSI6ICJjbGFzc25hbWVzQD49Mi4yLjUgPDMuMC4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9jbGFzc25hbWVzLy0vY2xhc3NuYW1lcy0yLjIuNS50
Z3oiCisgICAgfSwKKyAgICAiY29yZS1qcyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMi43IiwK
KyAgICAgICJmcm9tIjogImNvcmUtanNAPj0xLjAuMCA8Mi4wLjAiLAorICAgICAgInJlc29sdmVk
IjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2NvcmUtanMvLS9jb3JlLWpzLTEuMi43LnRn
eiIKKyAgICB9LAorICAgICJkaXJlY3RvciI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMi44IiwK
KyAgICAgICJmcm9tIjogImRpcmVjdG9yQD49MS4yLjggPDIuMC4wIiwKKyAgICAgICJyZXNvbHZl
ZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9kaXJlY3Rvci8tL2RpcmVjdG9yLTEuMi44
LnRneiIKKyAgICB9LAorICAgICJlbmNvZGluZyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuMS4x
MiIsCisgICAgICAiZnJvbSI6ICJlbmNvZGluZ0A+PTAuMS4xMSA8MC4yLjAiLAorICAgICAgInJl
c29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2VuY29kaW5nLy0vZW5jb2Rpbmct
MC4xLjEyLnRneiIKKyAgICB9LAorICAgICJmYmpzIjogeworICAgICAgInZlcnNpb24iOiAiMC44
LjYiLAorICAgICAgImZyb20iOiAiZmJqc0A+PTAuOC40IDwwLjkuMCIsCisgICAgICAicmVzb2x2
ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZmJqcy8tL2ZianMtMC44LjYudGd6Igor
ICAgIH0sCisgICAgImljb252LWxpdGUiOiB7CisgICAgICAidmVyc2lvbiI6ICIwLjQuMTUiLAor
ICAgICAgImZyb20iOiAiaWNvbnYtbGl0ZUA+PTAuNC4xMyA8MC41LjAiLAorICAgICAgInJlc29s
dmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2ljb252LWxpdGUvLS9pY29udi1saXRl
LTAuNC4xNS50Z3oiCisgICAgfSwKKyAgICAiaXMtc3RyZWFtIjogeworICAgICAgInZlcnNpb24i
OiAiMS4xLjAiLAorICAgICAgImZyb20iOiAiaXMtc3RyZWFtQD49MS4wLjEgPDIuMC4wIiwKKyAg
ICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9pcy1zdHJlYW0vLS9p
cy1zdHJlYW0tMS4xLjAudGd6IgorICAgIH0sCisgICAgImlzb21vcnBoaWMtZmV0Y2giOiB7Cisg
ICAgICAidmVyc2lvbiI6ICIyLjIuMSIsCisgICAgICAiZnJvbSI6ICJpc29tb3JwaGljLWZldGNo
QD49Mi4xLjEgPDMuMC4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5w
bWpzLm9yZy9pc29tb3JwaGljLWZldGNoLy0vaXNvbW9ycGhpYy1mZXRjaC0yLjIuMS50Z3oiCisg
ICAgfSwKKyAgICAianMtdG9rZW5zIjogeworICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAorICAg
ICAgImZyb20iOiAianMtdG9rZW5zQD49Mi4wLjAgPDMuMC4wIiwKKyAgICAgICJyZXNvbHZlZCI6
ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9qcy10b2tlbnMvLS9qcy10b2tlbnMtMi4wLjAu
dGd6IgorICAgIH0sCisgICAgImxvb3NlLWVudmlmeSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEu
My4wIiwKKyAgICAgICJmcm9tIjogImxvb3NlLWVudmlmeUA+PTEuMS4wIDwyLjAuMCIsCisgICAg
ICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvbG9vc2UtZW52aWZ5Ly0v
bG9vc2UtZW52aWZ5LTEuMy4wLnRneiIKKyAgICB9LAorICAgICJub2RlLWZldGNoIjogeworICAg
ICAgInZlcnNpb24iOiAiMS42LjMiLAorICAgICAgImZyb20iOiAibm9kZS1mZXRjaEA+PTEuMC4x
IDwyLjAuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcv
bm9kZS1mZXRjaC8tL25vZGUtZmV0Y2gtMS42LjMudGd6IgorICAgIH0sCisgICAgIm9iamVjdC1h
c3NpZ24iOiB7CisgICAgICAidmVyc2lvbiI6ICI0LjEuMCIsCisgICAgICAiZnJvbSI6ICJvYmpl
Y3QtYXNzaWduQD49NC4xLjAgPDUuMC4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3Jl
Z2lzdHJ5Lm5wbWpzLm9yZy9vYmplY3QtYXNzaWduLy0vb2JqZWN0LWFzc2lnbi00LjEuMC50Z3oi
CisgICAgfSwKKyAgICAicHJvbWlzZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjcuMS4xIiwKKyAg
ICAgICJmcm9tIjogInByb21pc2VAPj03LjEuMSA8OC4wLjAiLAorICAgICAgInJlc29sdmVkIjog
Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3Byb21pc2UvLS9wcm9taXNlLTcuMS4xLnRneiIK
KyAgICB9LAorICAgICJyZWFjdCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjE1LjQuMCIsCisgICAg
ICAiZnJvbSI6ICJyZWFjdEAxNS40LjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL3JlYWN0Ly0vcmVhY3QtMTUuNC4wLnRneiIKKyAgICB9LAorICAgICJy
ZWFjdC1kb20iOiB7CisgICAgICAidmVyc2lvbiI6ICIxNS40LjAiLAorICAgICAgImZyb20iOiAi
cmVhY3QtZG9tQDE1LjQuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5u
cG1qcy5vcmcvcmVhY3QtZG9tLy0vcmVhY3QtZG9tLTE1LjQuMC50Z3oiCisgICAgfSwKKyAgICAi
dG9kb212Yy1hcHAtY3NzIjogeworICAgICAgInZlcnNpb24iOiAiMi4wLjYiLAorICAgICAgImZy
b20iOiAidG9kb212Yy1hcHAtY3NzQD49Mi4wLjAgPDMuMC4wIiwKKyAgICAgICJyZXNvbHZlZCI6
ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy90b2RvbXZjLWFwcC1jc3MvLS90b2RvbXZjLWFw
cC1jc3MtMi4wLjYudGd6IgorICAgIH0sCisgICAgInRvZG9tdmMtY29tbW9uIjogeworICAgICAg
InZlcnNpb24iOiAiMS4wLjMiLAorICAgICAgImZyb20iOiAidG9kb212Yy1jb21tb25APj0xLjAu
MiA8Mi4wLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3Jn
L3RvZG9tdmMtY29tbW9uLy0vdG9kb212Yy1jb21tb24tMS4wLjMudGd6IgorICAgIH0sCisgICAg
InVhLXBhcnNlci1qcyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuNy4xMiIsCisgICAgICAiZnJv
bSI6ICJ1YS1wYXJzZXItanNAPj0wLjcuOSA8MC44LjAiLAorICAgICAgInJlc29sdmVkIjogImh0
dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3VhLXBhcnNlci1qcy8tL3VhLXBhcnNlci1qcy0wLjcu
MTIudGd6IgorICAgIH0sCisgICAgIndoYXR3Zy1mZXRjaCI6IHsKKyAgICAgICJ2ZXJzaW9uIjog
IjIuMC4xIiwKKyAgICAgICJmcm9tIjogIndoYXR3Zy1mZXRjaEA+PTAuMTAuMCIsCisgICAgICAi
cmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvd2hhdHdnLWZldGNoLy0vd2hh
dHdnLWZldGNoLTIuMC4xLnRneiIKKyAgICB9CisgIH0KK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL3JlYWN0L3BhY2thZ2UuanNvbiBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L3BhY2thZ2UuanNvbgpu
ZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wZTZmM2Q2ZjI0MDQ5YWVhNWM5NDBjNzcwNTU2M2YzZjA5NjY1YzM2Ci0tLSAv
ZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QvcGFja2FnZS5qc29uCkBAIC0wLDAgKzEs
MjAgQEAKK3sKKyAgInByaXZhdGUiOiB0cnVlLAorICAic2NyaXB0cyI6IHsKKyAgICAibWFrZSI6
ICJiYWJlbCAtLXBsdWdpbnMgdHJhbnNmb3JtLXJlYWN0LWpzeCBqcy9hcHAuanN4IHwgdWdsaWZ5
anMgLW8gYnVpbGQubWluLmpzIgorICB9LAorICAiZGVwZW5kZW5jaWVzIjogeworICAgICJjbGFz
c25hbWVzIjogIl4yLjIuNSIsCisgICAgImRpcmVjdG9yIjogIl4xLjIuOCIsCisgICAgInJlYWN0
IjogIl4xNS40LjAiLAorICAgICJyZWFjdC1kb20iOiAiXjE1LjQuMCIsCisgICAgInRvZG9tdmMt
YXBwLWNzcyI6ICJeMi4wLjAiLAorICAgICJ0b2RvbXZjLWNvbW1vbiI6ICJeMS4wLjIiCisgIH0s
CisgICJkZXZEZXBlbmRlbmNpZXMiOiB7CisgICAgImJhYmVsLWNsaSI6ICJeNi4xMC4xIiwKKyAg
ICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1yZWFjdC1qc3giOiAiXjYuOC4wIiwKKyAgICAiYmFi
ZWwtcGx1Z2luLXVnbGlmeSI6ICJeMS4wLjIiLAorICAgICJ1Z2xpZnktanMiOiAiXjIuNi40Igor
ICB9Cit9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvLmJhYmVscmMgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy92dWVqcy1jbGkvLmJhYmVscmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDE3ODljYWNkOWY4ZjEzOTUw
YzQzYTAyYmU0NjE5OWM3YTQxMjI5MAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1
ZWpzLWNsaS8uYmFiZWxyYwpAQCAtMCwwICsxLDUgQEAKK3sKKyAgInByZXNldHMiOiBbImVzMjAx
NSIsICJzdGFnZS0yIl0sCisgICJwbHVnaW5zIjogWyJ0cmFuc2Zvcm0tcnVudGltZSJdLAorICAi
Y29tbWVudHMiOiBmYWxzZQorfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpLy5l
ZGl0b3Jjb25maWcgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvLmVkaXRvcmNvbmZpZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45ZDA4YTFhODI4YTNiZDJkNjBkZTM5NTI3NDRkZjI5ZjlhZGQyN2ZhCi0tLSAvZGV2L251
bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpLy5lZGl0b3Jjb25maWcKQEAgLTAsMCArMSw5
IEBACityb290ID0gdHJ1ZQorCitbKl0KK2NoYXJzZXQgPSB1dGYtOAoraW5kZW50X3N0eWxlID0g
c3BhY2UKK2luZGVudF9zaXplID0gMgorZW5kX29mX2xpbmUgPSBsZgoraW5zZXJ0X2ZpbmFsX25l
d2xpbmUgPSB0cnVlCit0cmltX3RyYWlsaW5nX3doaXRlc3BhY2UgPSB0cnVlCmRpZmYgLS1naXQg
YS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy92dWVqcy1jbGkvLmVzbGludGlnbm9yZSBiL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpz
LWNsaS8uZXNsaW50aWdub3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0YWYzNzc0ZjMxMjdkMDU0ZDMwYWM1NDUy
ZjhhZmMwOGNkZDAyOTEKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkv
LmVzbGludGlnbm9yZQpAQCAtMCwwICsxLDIgQEAKK2J1aWxkLyouanMKK2NvbmZpZy8qLmpzCmRp
ZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvLmVzbGludHJjLmpzIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvdnVlanMtY2xpLy5lc2xpbnRyYy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNjZlZDhjN2RlYzcwZWMxOWY2
MWQ1M2Y3Njc0NDNkZTUwODhjMWUwCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVl
anMtY2xpLy5lc2xpbnRyYy5qcwpAQCAtMCwwICsxLDE2IEBACittb2R1bGUuZXhwb3J0cyA9IHsK
KyAgcm9vdDogdHJ1ZSwKKyAgcGFyc2VyOiAnYmFiZWwtZXNsaW50JywKKyAgcGFyc2VyT3B0aW9u
czogeworICAgIHNvdXJjZVR5cGU6ICdtb2R1bGUnCisgIH0sCisgIC8vIHJlcXVpcmVkIHRvIGxp
bnQgKi52dWUgZmlsZXMKKyAgcGx1Z2luczogWworICAgICdodG1sJworICBdLAorICAvLyBhZGQg
eW91ciBjdXN0b20gcnVsZXMgaGVyZQorICAncnVsZXMnOiB7CisgICAgLy8gYWxsb3cgZGVidWdn
ZXIgZHVyaW5nIGRldmVsb3BtZW50CisgICAgJ25vLWRlYnVnZ2VyJzogcHJvY2Vzcy5lbnYuTk9E
RV9FTlYgPT09ICdwcm9kdWN0aW9uJyA/IDIgOiAwCisgIH0KK30KZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL3Z1ZWpzLWNsaS9SRUFETUUubWQgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvUkVBRE1F
Lm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmI1MGNlNmVlMmU0YWUyYmQyNDUzNGRiMzkwYjVkZjc4MWI0MWI5YjcK
LS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvUkVBRE1FLm1kCkBAIC0w
LDAgKzEsMTggQEAKKyMgdnVlLWNsaS10b2RvbXZjCisKKz4gVnVlLmpzIFRvZG9NVkMKKworIyMg
QnVpbGQgU2V0dXAKKworYGBgIGJhc2gKKyMgaW5zdGFsbCBkZXBlbmRlbmNpZXMKK25wbSBpbnN0
YWxsCisKKyMgc2VydmUgd2l0aCBob3QgcmVsb2FkIGF0IGxvY2FsaG9zdDo4MDgwCitucG0gcnVu
IGRldgorCisjIGJ1aWxkIGZvciBwcm9kdWN0aW9uIHdpdGggbWluaWZpY2F0aW9uCitucG0gcnVu
IGJ1aWxkCitgYGAKKworRm9yIGRldGFpbGVkIGV4cGxhbmF0aW9uIG9uIGhvdyB0aGluZ3Mgd29y
aywgY2hlY2tvdXQgdGhlIFtndWlkZV0oaHR0cDovL3Z1ZWpzLXRlbXBsYXRlcy5naXRodWIuaW8v
d2VicGFjay8pIGFuZCBbZG9jcyBmb3IgdnVlLWxvYWRlcl0oaHR0cDovL3Z1ZWpzLmdpdGh1Yi5p
by92dWUtbG9hZGVyKS4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9jb25maWcv
ZGV2LmVudi5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9jb25maWcvZGV2LmVudi5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lZmVhZDdjODQwYTE1ZjJhMDZlZDI4ZmNmMTMwNDI5M2E5YjcwNGUwCi0tLSAvZGV2
L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2NvbmZpZy9kZXYuZW52LmpzCkBAIC0w
LDAgKzEsNiBAQAordmFyIG1lcmdlID0gcmVxdWlyZSgnd2VicGFjay1tZXJnZScpCit2YXIgcHJv
ZEVudiA9IHJlcXVpcmUoJy4vcHJvZC5lbnYnKQorCittb2R1bGUuZXhwb3J0cyA9IG1lcmdlKHBy
b2RFbnYsIHsKKyAgTk9ERV9FTlY6ICciZGV2ZWxvcG1lbnQiJworfSkKZGlmZiAtLWdpdCBhL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL3Z1ZWpzLWNsaS9jb25maWcvaW5kZXguanMgYi9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1j
bGkvY29uZmlnL2luZGV4LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIwN2RmYmQ0ZTAyZTJmN2QwZDkwMTQxMmIz
MTMyY2NhZGVhZjAzZjYKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkv
Y29uZmlnL2luZGV4LmpzCkBAIC0wLDAgKzEsMzIgQEAKKy8vIHNlZSBodHRwOi8vdnVlanMtdGVt
cGxhdGVzLmdpdGh1Yi5pby93ZWJwYWNrIGZvciBkb2N1bWVudGF0aW9uLgordmFyIHBhdGggPSBy
ZXF1aXJlKCdwYXRoJykKKworbW9kdWxlLmV4cG9ydHMgPSB7CisgIGJ1aWxkOiB7CisgICAgZW52
OiByZXF1aXJlKCcuL3Byb2QuZW52JyksCisgICAgaW5kZXg6IHBhdGgucmVzb2x2ZShfX2Rpcm5h
bWUsICcuLi9kaXN0L2luZGV4Lmh0bWwnKSwKKyAgICBhc3NldHNSb290OiBwYXRoLnJlc29sdmUo
X19kaXJuYW1lLCAnLi4vZGlzdCcpLAorICAgIGFzc2V0c1N1YkRpcmVjdG9yeTogJ3N0YXRpYycs
CisgICAgYXNzZXRzUHVibGljUGF0aDogJy8nLAorICAgIHByb2R1Y3Rpb25Tb3VyY2VNYXA6IHRy
dWUsCisgICAgLy8gR3ppcCBvZmYgYnkgZGVmYXVsdCBhcyBtYW55IHBvcHVsYXIgc3RhdGljIGhv
c3RzIHN1Y2ggYXMKKyAgICAvLyBTdXJnZSBvciBOZXRsaWZ5IGFscmVhZHkgZ3ppcCBhbGwgc3Rh
dGljIGFzc2V0cyBmb3IgeW91LgorICAgIC8vIEJlZm9yZSBzZXR0aW5nIHRvIGB0cnVlYCwgbWFr
ZSBzdXJlIHRvOgorICAgIC8vIG5wbSBpbnN0YWxsIC0tc2F2ZS1kZXYgY29tcHJlc3Npb24td2Vi
cGFjay1wbHVnaW4KKyAgICBwcm9kdWN0aW9uR3ppcDogZmFsc2UsCisgICAgcHJvZHVjdGlvbkd6
aXBFeHRlbnNpb25zOiBbJ2pzJywgJ2NzcyddCisgIH0sCisgIGRldjogeworICAgIGVudjogcmVx
dWlyZSgnLi9kZXYuZW52JyksCisgICAgcG9ydDogODA4MCwKKyAgICBhc3NldHNTdWJEaXJlY3Rv
cnk6ICdzdGF0aWMnLAorICAgIGFzc2V0c1B1YmxpY1BhdGg6ICcvJywKKyAgICBwcm94eVRhYmxl
OiB7fSwKKyAgICAvLyBDU1MgU291cmNlbWFwcyBvZmYgYnkgZGVmYXVsdCBiZWNhdXNlIHJlbGF0
aXZlIHBhdGhzIGFyZSAiYnVnZ3kiCisgICAgLy8gd2l0aCB0aGlzIG9wdGlvbiwgYWNjb3JkaW5n
IHRvIHRoZSBDU1MtTG9hZGVyIFJFQURNRQorICAgIC8vIChodHRwczovL2dpdGh1Yi5jb20vd2Vi
cGFjay9jc3MtbG9hZGVyI3NvdXJjZW1hcHMpCisgICAgLy8gSW4gb3VyIGV4cGVyaWVuY2UsIHRo
ZXkgZ2VuZXJhbGx5IHdvcmsgYXMgZXhwZWN0ZWQsCisgICAgLy8ganVzdCBiZSBhd2FyZSBvZiB0
aGlzIGlzc3VlIHdoZW4gZW5hYmxpbmcgdGhpcyBvcHRpb24uCisgICAgY3NzU291cmNlTWFwOiBm
YWxzZQorICB9Cit9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvY29uZmlnL3By
b2QuZW52LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2NvbmZpZy9wcm9kLmVudi5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43NzNkMjYzZDMxMjYwYmUyN2QyZDdlM2ZiYWE1YzE3YWU0ZTczMmY2Ci0tLSAvZGV2
L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2NvbmZpZy9wcm9kLmVudi5qcwpAQCAt
MCwwICsxLDMgQEAKK21vZHVsZS5leHBvcnRzID0geworICBOT0RFX0VOVjogJyJwcm9kdWN0aW9u
IicKK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9kaXN0L2luZGV4Lmh0bWwg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy92dWVqcy1jbGkvZGlzdC9pbmRleC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiMGVl
MjU4MjNkMDM0NDQ2NmZkNmQwYjQxMzE2N2EyN2I4Y2E5NTIKLS0tIC9kZXYvbnVsbAorKysgYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy92dWVqcy1jbGkvZGlzdC9pbmRleC5odG1sCkBAIC0wLDAgKzEsMTQgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+CisKKzxoZWFkPgorICA8bWV0YSBjaGFyc2V0PXV0Zi04Pgor
ICA8dGl0bGU+dnVlLWNsaS10b2RvbXZjPC90aXRsZT4KKyAgPGxpbmsgaHJlZj1zdGF0aWMvY3Nz
L2FwcC42NzdiNDU4NDJkOWY4Yjk2ZTViMjNjMTg5NjkyMzNiNy5jc3MgcmVsPXN0eWxlc2hlZXQ+
Cis8L2hlYWQ+CisKKzxib2R5PgorICA8ZGl2IGlkPWFwcD48L2Rpdj48c2NyaXB0IHR5cGU9dGV4
dC9qYXZhc2NyaXB0IHNyYz1zdGF0aWMvanMvbWFuaWZlc3QuODRiMmI0ZmNlYjc0YWIxZjkxZjMu
anM+PC9zY3JpcHQ+PHNjcmlwdCB0eXBlPXRleHQvamF2YXNjcmlwdAorICAgIHNyYz1zdGF0aWMv
anMvdmVuZG9yLmE1MjUxN2M1YWE5OGU3ZmJlYTJlLmpzPjwvc2NyaXB0PjxzY3JpcHQgdHlwZT10
ZXh0L2phdmFzY3JpcHQgc3JjPXN0YXRpYy9qcy9hcHAuYjBlODM1ODc0YmM4OTQ5NjcwZDEuanM+
PC9zY3JpcHQ+PC9ib2R5PgorCis8L2h0bWw+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVq
cy1jbGkvZGlzdC9zdGF0aWMvY3NzL2FwcC42NzdiNDU4NDJkOWY4Yjk2ZTViMjNjMTg5NjkyMzNi
Ny5jc3MgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvZGlzdC9zdGF0aWMvY3NzL2FwcC42NzdiNDU4
NDJkOWY4Yjk2ZTViMjNjMTg5NjkyMzNiNy5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODFkZGY1YTUxN2Q1ZTE5
MmIzMjFmODVhN2I2YzFiY2YzNmViZGE0NAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L3Z1ZWpzLWNsaS9kaXN0L3N0YXRpYy9jc3MvYXBwLjY3N2I0NTg0MmQ5ZjhiOTZlNWIyM2MxODk2
OTIzM2I3LmNzcwpAQCAtMCwwICsxLDIgQEAKK2JvZHksYnV0dG9uLGh0bWx7bWFyZ2luOjA7cGFk
ZGluZzowfWJ1dHRvbntib3JkZXI6MDtiYWNrZ3JvdW5kOm5vbmU7Zm9udC1zaXplOjEwMCU7dmVy
dGljYWwtYWxpZ246YmFzZWxpbmU7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXdlaWdodDppbmhl
cml0O2NvbG9yOmluaGVyaXQ7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNl
Om5vbmU7YXBwZWFyYW5jZTpub25lOy13ZWJraXQtZm9udC1zbW9vdGhpbmc6YW50aWFsaWFzZWR9
Ym9keSxidXR0b257LW1vei1vc3gtZm9udC1zbW9vdGhpbmc6Z3JheXNjYWxlfWJvZHl7Zm9udDox
NHB4IEhlbHZldGljYSBOZXVlLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmO2xpbmUtaGVpZ2h0
OjEuNGVtO2JhY2tncm91bmQ6I2Y1ZjVmNTtjb2xvcjojNGQ0ZDRkO21pbi13aWR0aDoyMzBweDtt
YXgtd2lkdGg6NTUwcHg7bWFyZ2luOjAgYXV0bzstd2Via2l0LWZvbnQtc21vb3RoaW5nOmFudGlh
bGlhc2VkO2ZvbnQtd2VpZ2h0OjMwMH06Zm9jdXN7b3V0bGluZTowfS5oaWRkZW57ZGlzcGxheTpu
b25lfS50b2RvYXBwe2JhY2tncm91bmQ6I2ZmZjttYXJnaW46MTMwcHggMCA0MHB4O3Bvc2l0aW9u
OnJlbGF0aXZlO2JveC1zaGFkb3c6MCAycHggNHB4IDAgcmdiYSgwLDAsMCwuMiksMCAyNXB4IDUw
cHggMCByZ2JhKDAsMCwwLC4xKX0udG9kb2FwcCBpbnB1dDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhv
bGRlcntmb250LXN0eWxlOml0YWxpYztmb250LXdlaWdodDozMDA7Y29sb3I6I2U2ZTZlNn0udG9k
b2FwcCBpbnB1dDo6LW1vei1wbGFjZWhvbGRlcntmb250LXN0eWxlOml0YWxpYztmb250LXdlaWdo
dDozMDA7Y29sb3I6I2U2ZTZlNn0udG9kb2FwcCBpbnB1dDo6aW5wdXQtcGxhY2Vob2xkZXJ7Zm9u
dC1zdHlsZTppdGFsaWM7Zm9udC13ZWlnaHQ6MzAwO2NvbG9yOiNlNmU2ZTZ9LnRvZG9hcHAgaDF7
cG9zaXRpb246YWJzb2x1dGU7dG9wOi0xNTVweDt3aWR0aDoxMDAlO2ZvbnQtc2l6ZToxMDBweDtm
b250LXdlaWdodDoxMDA7dGV4dC1hbGlnbjpjZW50ZXI7Y29sb3I6cmdiYSgxNzUsNDcsNDcsLjE1
KTstd2Via2l0LXRleHQtcmVuZGVyaW5nOm9wdGltaXplTGVnaWJpbGl0eTstbW96LXRleHQtcmVu
ZGVyaW5nOm9wdGltaXplTGVnaWJpbGl0eTt0ZXh0LXJlbmRlcmluZzpvcHRpbWl6ZUxlZ2liaWxp
dHl9LmVkaXQsLm5ldy10b2Rve3Bvc2l0aW9uOnJlbGF0aXZlO21hcmdpbjowO3dpZHRoOjEwMCU7
Zm9udC1zaXplOjI0cHg7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXdlaWdodDppbmhlcml0O2xp
bmUtaGVpZ2h0OjEuNGVtO2JvcmRlcjowO2NvbG9yOmluaGVyaXQ7cGFkZGluZzo2cHg7Ym9yZGVy
OjFweCBzb2xpZCAjOTk5O2JveC1zaGFkb3c6aW5zZXQgMCAtMXB4IDVweCAwIHJnYmEoMCwwLDAs
LjIpO2JveC1zaXppbmc6Ym9yZGVyLWJveDstd2Via2l0LWZvbnQtc21vb3RoaW5nOmFudGlhbGlh
c2VkOy1tb3otb3N4LWZvbnQtc21vb3RoaW5nOmdyYXlzY2FsZX0ubmV3LXRvZG97cGFkZGluZzox
NnB4IDE2cHggMTZweCA2MHB4O2JvcmRlcjpub25lO2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDAz
KTtib3gtc2hhZG93Omluc2V0IDAgLTJweCAxcHggcmdiYSgwLDAsMCwuMDMpfS5tYWlue3Bvc2l0
aW9uOnJlbGF0aXZlO3otaW5kZXg6Mjtib3JkZXItdG9wOjFweCBzb2xpZCAjZTZlNmU2fWxhYmVs
W2Zvcj10b2dnbGUtYWxsXXtkaXNwbGF5Om5vbmV9LnRvZ2dsZS1hbGx7cG9zaXRpb246YWJzb2x1
dGU7dG9wOi01NXB4O2xlZnQ6LTEycHg7d2lkdGg6NjBweDtoZWlnaHQ6MzRweDt0ZXh0LWFsaWdu
OmNlbnRlcjtib3JkZXI6bm9uZX0udG9nZ2xlLWFsbDpiZWZvcmV7Y29udGVudDonXDI3NkYnO2Zv
bnQtc2l6ZToyMnB4O2NvbG9yOiNlNmU2ZTY7cGFkZGluZzoxMHB4IDI3cHh9LnRvZ2dsZS1hbGw6
Y2hlY2tlZDpiZWZvcmV7Y29sb3I6IzczNzM3M30udG9kby1saXN0e21hcmdpbjowO3BhZGRpbmc6
MDtsaXN0LXN0eWxlOm5vbmV9LnRvZG8tbGlzdCBsaXtwb3NpdGlvbjpyZWxhdGl2ZTtmb250LXNp
emU6MjRweDtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZWRlZGVkfS50b2RvLWxpc3QgbGk6bGFz
dC1jaGlsZHtib3JkZXItYm90dG9tOm5vbmV9LnRvZG8tbGlzdCBsaS5lZGl0aW5ne2JvcmRlci1i
b3R0b206bm9uZTtwYWRkaW5nOjB9LnRvZG8tbGlzdCBsaS5lZGl0aW5nIC5lZGl0e2Rpc3BsYXk6
YmxvY2s7d2lkdGg6NTA2cHg7cGFkZGluZzoxMnB4IDE2cHg7bWFyZ2luOjAgMCAwIDQzcHh9LnRv
ZG8tbGlzdCBsaS5lZGl0aW5nIC52aWV3e2Rpc3BsYXk6bm9uZX0udG9kby1saXN0IGxpIC50b2dn
bGV7dGV4dC1hbGlnbjpjZW50ZXI7d2lkdGg6NDBweDtoZWlnaHQ6YXV0bztwb3NpdGlvbjphYnNv
bHV0ZTt0b3A6MDtib3R0b206MDttYXJnaW46YXV0byAwO2JvcmRlcjpub25lOy13ZWJraXQtYXBw
ZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lO2FwcGVhcmFuY2U6bm9uZX0udG9kby1s
aXN0IGxpIC50b2dnbGU6YWZ0ZXJ7Y29udGVudDp1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4
LDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iNDAiIGhlaWdo
dD0iNDAiIHZpZXdCb3g9Ii0xMCAtMTggMTAwIDEzNSI+PGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIg
cj0iNTAiIGZpbGw9Im5vbmUiIHN0cm9rZT0iI2VkZWRlZCIgc3Ryb2tlLXdpZHRoPSIzIi8+PC9z
dmc+Jyl9LnRvZG8tbGlzdCBsaSAudG9nZ2xlOmNoZWNrZWQ6YWZ0ZXJ7Y29udGVudDp1cmwoJ2Rh
dGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9Ii0xMCAtMTggMTAwIDEzNSI+PGNp
cmNsZSBjeD0iNTAiIGN5PSI1MCIgcj0iNTAiIGZpbGw9Im5vbmUiIHN0cm9rZT0iI2JkZGFkNSIg
c3Ryb2tlLXdpZHRoPSIzIi8+PHBhdGggZmlsbD0iIzVkYzJhZiIgZD0iTTcyIDI1TDQyIDcxIDI3
IDU2bC00IDQgMjAgMjAgMzQtNTJ6Ii8+PC9zdmc+Jyl9LnRvZG8tbGlzdCBsaSBsYWJlbHt3b3Jk
LWJyZWFrOmJyZWFrLWFsbDtwYWRkaW5nOjE1cHggNjBweCAxNXB4IDE1cHg7bWFyZ2luLWxlZnQ6
NDVweDtkaXNwbGF5OmJsb2NrO2xpbmUtaGVpZ2h0OjEuMjt0cmFuc2l0aW9uOmNvbG9yIC40c30u
dG9kby1saXN0IGxpLmNvbXBsZXRlZCBsYWJlbHtjb2xvcjojZDlkOWQ5O3RleHQtZGVjb3JhdGlv
bjpsaW5lLXRocm91Z2h9LnRvZG8tbGlzdCBsaSAuZGVzdHJveXtkaXNwbGF5Om5vbmU7cG9zaXRp
b246YWJzb2x1dGU7dG9wOjA7cmlnaHQ6MTBweDtib3R0b206MDt3aWR0aDo0MHB4O2hlaWdodDo0
MHB4O21hcmdpbjphdXRvIDA7Zm9udC1zaXplOjMwcHg7Y29sb3I6I2NjOWE5YTttYXJnaW4tYm90
dG9tOjExcHg7dHJhbnNpdGlvbjpjb2xvciAuMnMgZWFzZS1vdXR9LnRvZG8tbGlzdCBsaSAuZGVz
dHJveTpob3Zlcntjb2xvcjojYWY1YjVlfS50b2RvLWxpc3QgbGkgLmRlc3Ryb3k6YWZ0ZXJ7Y29u
dGVudDonXEQ3J30udG9kby1saXN0IGxpOmhvdmVyIC5kZXN0cm95e2Rpc3BsYXk6YmxvY2t9LnRv
ZG8tbGlzdCBsaSAuZWRpdHtkaXNwbGF5Om5vbmV9LnRvZG8tbGlzdCBsaS5lZGl0aW5nOmxhc3Qt
Y2hpbGR7bWFyZ2luLWJvdHRvbTotMXB4fS5mb290ZXJ7Y29sb3I6Izc3NztwYWRkaW5nOjEwcHgg
MTVweDtoZWlnaHQ6MjBweDt0ZXh0LWFsaWduOmNlbnRlcjtib3JkZXItdG9wOjFweCBzb2xpZCAj
ZTZlNmU2fS5mb290ZXI6YmVmb3Jle2NvbnRlbnQ6Jyc7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6
MDtib3R0b206MDtsZWZ0OjA7aGVpZ2h0OjUwcHg7b3ZlcmZsb3c6aGlkZGVuO2JveC1zaGFkb3c6
MCAxcHggMXB4IHJnYmEoMCwwLDAsLjIpLDAgOHB4IDAgLTNweCAjZjZmNmY2LDAgOXB4IDFweCAt
M3B4IHJnYmEoMCwwLDAsLjIpLDAgMTZweCAwIC02cHggI2Y2ZjZmNiwwIDE3cHggMnB4IC02cHgg
cmdiYSgwLDAsMCwuMil9LnRvZG8tY291bnR7ZmxvYXQ6bGVmdDt0ZXh0LWFsaWduOmxlZnR9LnRv
ZG8tY291bnQgc3Ryb25ne2ZvbnQtd2VpZ2h0OjMwMH0uZmlsdGVyc3ttYXJnaW46MDtwYWRkaW5n
OjA7bGlzdC1zdHlsZTpub25lO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjA7bGVmdDowfS5maWx0
ZXJzIGxpe2Rpc3BsYXk6aW5saW5lfS5maWx0ZXJzIGxpIGF7Y29sb3I6aW5oZXJpdDttYXJnaW46
M3B4O3BhZGRpbmc6M3B4IDdweDt0ZXh0LWRlY29yYXRpb246bm9uZTtib3JkZXI6MXB4IHNvbGlk
IHRyYW5zcGFyZW50O2JvcmRlci1yYWRpdXM6M3B4fS5maWx0ZXJzIGxpIGE6aG92ZXJ7Ym9yZGVy
LWNvbG9yOnJnYmEoMTc1LDQ3LDQ3LC4xKX0uZmlsdGVycyBsaSBhLnNlbGVjdGVke2JvcmRlci1j
b2xvcjpyZ2JhKDE3NSw0Nyw0NywuMil9LmNsZWFyLWNvbXBsZXRlZCxodG1sIC5jbGVhci1jb21w
bGV0ZWQ6YWN0aXZle2Zsb2F0OnJpZ2h0O3Bvc2l0aW9uOnJlbGF0aXZlO2xpbmUtaGVpZ2h0OjIw
cHg7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Y3Vyc29yOnBvaW50ZXJ9LmNsZWFyLWNvbXBsZXRlZDpo
b3Zlcnt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfS5pbmZve21hcmdpbjo2NXB4IGF1dG8gMDtj
b2xvcjojYmZiZmJmO2ZvbnQtc2l6ZToxMHB4O3RleHQtc2hhZG93OjAgMXB4IDAgaHNsYSgwLDAl
LDEwMCUsLjUpO3RleHQtYWxpZ246Y2VudGVyfS5pbmZvIHB7bGluZS1oZWlnaHQ6MX0uaW5mbyBh
e2NvbG9yOmluaGVyaXQ7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Zm9udC13ZWlnaHQ6NDAwfS5pbmZv
IGE6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX1AbWVkaWEgc2NyZWVuIGFuZCAoLXdl
YmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOjApey50b2RvLWxpc3QgbGkgLnRvZ2dsZSwudG9n
Z2xlLWFsbHtiYWNrZ3JvdW5kOm5vbmV9LnRvZG8tbGlzdCBsaSAudG9nZ2xle2hlaWdodDo0MHB4
fS50b2dnbGUtYWxse3RyYW5zZm9ybTpyb3RhdGUoOTBkZWcpOy13ZWJraXQtYXBwZWFyYW5jZTpu
b25lOy1tb3otYXBwZWFyYW5jZTpub25lO2FwcGVhcmFuY2U6bm9uZX19QG1lZGlhIChtYXgtd2lk
dGg6NDMwcHgpey5mb290ZXJ7aGVpZ2h0OjUwcHh9LmZpbHRlcnN7Ym90dG9tOjEwcHh9fQorLyoj
IHNvdXJjZU1hcHBpbmdVUkw9YXBwLjY3N2I0NTg0MmQ5ZjhiOTZlNWIyM2MxODk2OTIzM2I3LmNz
cy5tYXAqLwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL3Z1ZWpzLWNsaS9kaXN0L3N0YXRpYy9jc3MvYXBwLjY3N2I0NTg0MmQ5ZjhiOTZlNWIyM2Mx
ODk2OTIzM2I3LmNzcy5tYXAgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvZGlzdC9zdGF0aWMvY3Nz
L2FwcC42NzdiNDU4NDJkOWY4Yjk2ZTViMjNjMTg5NjkyMzNiNy5jc3MubWFwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjI4MDY3MTUxNGJjNDlhNWFjNjlmNDVmZmE3NzdjZjM0NjBlZGZjNzQKLS0tIC9kZXYvbnVsbAor
KysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvZGlzdC9zdGF0aWMvY3NzL2FwcC42NzdiNDU4NDJk
OWY4Yjk2ZTViMjNjMTg5NjkyMzNiNy5jc3MubWFwCkBAIC0wLDAgKzEgQEAKK3sidmVyc2lvbiI6
Mywic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vc3JjL2NvbXBvbmVudHMvdG9kby5j
c3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsaUJBSEMsU0FDQSxTQUFXLENBaUJYLE9B
WkEsU0FDQSxnQkFDQSxlQUNBLHdCQUNBLG9CQUNBLG9CQUNBLGNBQ0Esd0JBQ0EscUJBQ0ssZ0JB
Q0wsa0NBQW9DLENBR3JDLFlBRkMsaUNBQW1DLENBYW5DLEtBVkEsb0RBQ0Esa0JBQ0EsbUJBQ0Es
Y0FDQSxnQkFDQSxnQkFDQSxjQUNBLG1DQUVBLGVBQWlCLENBRWxCLE9BQ0MsU0FBVyxDQUVaLFFB
Q0MsWUFBYyxDQUVmLFNBQ0MsZ0JBQ0Esb0JBQ0Esa0JBQ0Esa0VBQzZDLENBRTlDLDBDQUNDLGtC
QUNBLGdCQUNBLGFBQWUsQ0FFaEIsaUNBQ0Msa0JBQ0EsZ0JBQ0EsYUFBZSxDQUVoQixrQ0FDQyxr
QkFDQSxnQkFDQSxhQUFlLENBRWhCLFlBQ0Msa0JBQ0EsV0FDQSxXQUNBLGdCQUNBLGdCQUNBLGtC
QUNBLDBCQUNBLDBDQUNBLHVDQUNBLGlDQUFtQyxDQUVwQyxnQkFFQyxrQkFDQSxTQUNBLFdBQ0Es
ZUFDQSxvQkFDQSxvQkFDQSxrQkFDQSxTQUNBLGNBQ0EsWUFDQSxzQkFDQSw2Q0FDQSxzQkFDQSxt
Q0FDQSxpQ0FBbUMsQ0FFcEMsVUFDQyw0QkFDQSxZQUNBLDRCQUNBLDJDQUE4QyxDQUUvQyxNQUND
LGtCQUNBLFVBQ0EsNEJBQThCLENBRS9CLHNCQUNDLFlBQWMsQ0FFZixZQUNDLGtCQUNBLFVBQ0Es
V0FDQSxXQUNBLFlBQ0Esa0JBQ0EsV0FBYSxDQUVkLG1CQUNDLGdCQUNBLGVBQ0EsY0FDQSxpQkFB
NkIsQ0FFOUIsMkJBQ0MsYUFBZSxDQUVoQixXQUNDLFNBQ0EsVUFDQSxlQUFpQixDQUVsQixjQUND
LGtCQUNBLGVBQ0EsK0JBQWlDLENBRWxDLHlCQUNDLGtCQUFvQixDQUVyQixzQkFDQyxtQkFDQSxT
QUFXLENBRVosNEJBQ0MsY0FDQSxZQUNBLGtCQUNBLGlCQUFtQixDQUVwQiw0QkFDQyxZQUFjLENB
RWYsc0JBQ0Msa0JBQ0EsV0FFQSxZQUNBLGtCQUNBLE1BQ0EsU0FDQSxjQUNBLFlBQ0Esd0JBQ0Es
cUJBQ0ssZUFBaUIsQ0FFdkIsNEJBQ0Msb05BQXNOLENBRXZOLG9DQUNDLG1SQUFxUixDQUV0Uixv
QkFDQyxxQkFDQSw0QkFDQSxpQkFDQSxjQUNBLGdCQUNBLG9CQUF1QixDQUV4Qiw4QkFDQyxjQUNB
LDRCQUE4QixDQUUvQix1QkFDQyxhQUNBLGtCQUNBLE1BQ0EsV0FDQSxTQUNBLFdBQ0EsWUFDQSxj
QUNBLGVBQ0EsY0FDQSxtQkFDQSw2QkFBZ0MsQ0FFakMsNkJBQ0MsYUFBZSxDQUVoQiw2QkFDQyxh
QUFhLENBRWQsNkJBQ0MsYUFBZSxDQUVoQixvQkFDQyxZQUFjLENBRWYsaUNBQ0Msa0JBQW9CLENB
RXJCLFFBQ0MsV0FDQSxrQkFDQSxZQUNBLGtCQUNBLDRCQUE4QixDQUUvQixlQUNDLFdBQ0Esa0JB
Q0EsUUFDQSxTQUNBLE9BQ0EsWUFDQSxnQkFDQSwySUFJK0MsQ0FFaEQsWUFDQyxXQUNBLGVBQWlC
LENBRWxCLG1CQUNDLGVBQWlCLENBRWxCLFNBQ0MsU0FDQSxVQUNBLGdCQUNBLGtCQUNBLFFBQ0Es
TUFBUSxDQUVULFlBQ0MsY0FBZ0IsQ0FFakIsY0FDQyxjQUNBLFdBQ0EsZ0JBQ0EscUJBQ0EsNkJB
Q0EsaUJBQW1CLENBRXBCLG9CQUNDLCtCQUFxQyxDQUV0Qyx1QkFDQywrQkFBcUMsQ0FFdEMsOENB
RUMsWUFDQSxrQkFDQSxpQkFDQSxxQkFDQSxjQUFnQixDQUVqQix1QkFDQyx5QkFBMkIsQ0FFNUIs
TUFDQyxtQkFDQSxjQUNBLGVBQ0EsdUNBQ0EsaUJBQW1CLENBRXBCLFFBQ0MsYUFBZSxDQUVoQixR
QUNDLGNBQ0EscUJBQ0EsZUFBaUIsQ0FFbEIsY0FDQyx5QkFBMkIsQ0FPNUIscURBQ0Esa0NBRUUs
ZUFBaUIsQ0FFbkIsc0JBQ0UsV0FBYSxDQUVmLFlBQ0Usd0JBQ0Esd0JBQ0EscUJBQ0ssZUFBaUIs
Q0FDdkIsQ0FFRCx5QkFDQSxRQUNFLFdBQWEsQ0FFZixTQUNFLFdBQWEsQ0FDZCIsImZpbGUiOiJz
dGF0aWMvY3NzL2FwcC42NzdiNDU4NDJkOWY4Yjk2ZTViMjNjMTg5NjkyMzNiNy5jc3MiLCJzb3Vy
Y2VzQ29udGVudCI6WyJcbmh0bWwsXG5ib2R5IHtcblx0bWFyZ2luOiAwO1xuXHRwYWRkaW5nOiAw
O1xufVxuYnV0dG9uIHtcblx0bWFyZ2luOiAwO1xuXHRwYWRkaW5nOiAwO1xuXHRib3JkZXI6IDA7
XG5cdGJhY2tncm91bmQ6IG5vbmU7XG5cdGZvbnQtc2l6ZTogMTAwJTtcblx0dmVydGljYWwtYWxp
Z246IGJhc2VsaW5lO1xuXHRmb250LWZhbWlseTogaW5oZXJpdDtcblx0Zm9udC13ZWlnaHQ6IGlu
aGVyaXQ7XG5cdGNvbG9yOiBpbmhlcml0O1xuXHQtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG5c
dC1tb3otYXBwZWFyYW5jZTogbm9uZTtcblx0ICAgICBhcHBlYXJhbmNlOiBub25lO1xuXHQtd2Vi
a2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcblx0LW1vei1vc3gtZm9udC1zbW9vdGhp
bmc6IGdyYXlzY2FsZTtcbn1cbmJvZHkge1xuXHRmb250OiAxNHB4ICdIZWx2ZXRpY2EgTmV1ZScs
IEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7XG5cdGxpbmUtaGVpZ2h0OiAxLjRlbTtcblx0
YmFja2dyb3VuZDogI2Y1ZjVmNTtcblx0Y29sb3I6ICM0ZDRkNGQ7XG5cdG1pbi13aWR0aDogMjMw
cHg7XG5cdG1heC13aWR0aDogNTUwcHg7XG5cdG1hcmdpbjogMCBhdXRvO1xuXHQtd2Via2l0LWZv
bnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcblx0LW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdy
YXlzY2FsZTtcblx0Zm9udC13ZWlnaHQ6IDMwMDtcbn1cbjpmb2N1cyB7XG5cdG91dGxpbmU6IDA7
XG59XG4uaGlkZGVuIHtcblx0ZGlzcGxheTogbm9uZTtcbn1cbi50b2RvYXBwIHtcblx0YmFja2dy
b3VuZDogI2ZmZjtcblx0bWFyZ2luOiAxMzBweCAwIDQwcHggMDtcblx0cG9zaXRpb246IHJlbGF0
aXZlO1xuXHRib3gtc2hhZG93OiAwIDJweCA0cHggMCByZ2JhKDAsIDAsIDAsIDAuMiksXG5cdCAg
ICAgICAgICAgIDAgMjVweCA1MHB4IDAgcmdiYSgwLCAwLCAwLCAwLjEpO1xufVxuLnRvZG9hcHAg
aW5wdXQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIge1xuXHRmb250LXN0eWxlOiBpdGFsaWM7
XG5cdGZvbnQtd2VpZ2h0OiAzMDA7XG5cdGNvbG9yOiAjZTZlNmU2O1xufVxuLnRvZG9hcHAgaW5w
dXQ6Oi1tb3otcGxhY2Vob2xkZXIge1xuXHRmb250LXN0eWxlOiBpdGFsaWM7XG5cdGZvbnQtd2Vp
Z2h0OiAzMDA7XG5cdGNvbG9yOiAjZTZlNmU2O1xufVxuLnRvZG9hcHAgaW5wdXQ6OmlucHV0LXBs
YWNlaG9sZGVyIHtcblx0Zm9udC1zdHlsZTogaXRhbGljO1xuXHRmb250LXdlaWdodDogMzAwO1xu
XHRjb2xvcjogI2U2ZTZlNjtcbn1cbi50b2RvYXBwIGgxIHtcblx0cG9zaXRpb246IGFic29sdXRl
O1xuXHR0b3A6IC0xNTVweDtcblx0d2lkdGg6IDEwMCU7XG5cdGZvbnQtc2l6ZTogMTAwcHg7XG5c
dGZvbnQtd2VpZ2h0OiAxMDA7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcblx0Y29sb3I6IHJnYmEo
MTc1LCA0NywgNDcsIDAuMTUpO1xuXHQtd2Via2l0LXRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxl
Z2liaWxpdHk7XG5cdC1tb3otdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTtcblx0
dGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTtcbn1cbi5uZXctdG9kbyxcbi5lZGl0
IHtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRtYXJnaW46IDA7XG5cdHdpZHRoOiAxMDAlO1xu
XHRmb250LXNpemU6IDI0cHg7XG5cdGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuXHRmb250LXdlaWdo
dDogaW5oZXJpdDtcblx0bGluZS1oZWlnaHQ6IDEuNGVtO1xuXHRib3JkZXI6IDA7XG5cdGNvbG9y
OiBpbmhlcml0O1xuXHRwYWRkaW5nOiA2cHg7XG5cdGJvcmRlcjogMXB4IHNvbGlkICM5OTk7XG5c
dGJveC1zaGFkb3c6IGluc2V0IDAgLTFweCA1cHggMCByZ2JhKDAsIDAsIDAsIDAuMik7XG5cdGJv
eC1zaXppbmc6IGJvcmRlci1ib3g7XG5cdC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlh
c2VkO1xuXHQtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xufVxuLm5ldy10b2Rv
IHtcblx0cGFkZGluZzogMTZweCAxNnB4IDE2cHggNjBweDtcblx0Ym9yZGVyOiBub25lO1xuXHRi
YWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMDAzKTtcblx0Ym94LXNoYWRvdzogaW5zZXQgMCAt
MnB4IDFweCByZ2JhKDAsMCwwLDAuMDMpO1xufVxuLm1haW4ge1xuXHRwb3NpdGlvbjogcmVsYXRp
dmU7XG5cdHotaW5kZXg6IDI7XG5cdGJvcmRlci10b3A6IDFweCBzb2xpZCAjZTZlNmU2O1xufVxu
bGFiZWxbZm9yPSd0b2dnbGUtYWxsJ10ge1xuXHRkaXNwbGF5OiBub25lO1xufVxuLnRvZ2dsZS1h
bGwge1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdHRvcDogLTU1cHg7XG5cdGxlZnQ6IC0xMnB4
O1xuXHR3aWR0aDogNjBweDtcblx0aGVpZ2h0OiAzNHB4O1xuXHR0ZXh0LWFsaWduOiBjZW50ZXI7
XG5cdGJvcmRlcjogbm9uZTsgLyogTW9iaWxlIFNhZmFyaSAqL1xufVxuLnRvZ2dsZS1hbGw6YmVm
b3JlIHtcblx0Y29udGVudDogJ+Kdryc7XG5cdGZvbnQtc2l6ZTogMjJweDtcblx0Y29sb3I6ICNl
NmU2ZTY7XG5cdHBhZGRpbmc6IDEwcHggMjdweCAxMHB4IDI3cHg7XG59XG4udG9nZ2xlLWFsbDpj
aGVja2VkOmJlZm9yZSB7XG5cdGNvbG9yOiAjNzM3MzczO1xufVxuLnRvZG8tbGlzdCB7XG5cdG1h
cmdpbjogMDtcblx0cGFkZGluZzogMDtcblx0bGlzdC1zdHlsZTogbm9uZTtcbn1cbi50b2RvLWxp
c3QgbGkge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdGZvbnQtc2l6ZTogMjRweDtcblx0Ym9y
ZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlZGVkZWQ7XG59XG4udG9kby1saXN0IGxpOmxhc3QtY2hp
bGQge1xuXHRib3JkZXItYm90dG9tOiBub25lO1xufVxuLnRvZG8tbGlzdCBsaS5lZGl0aW5nIHtc
blx0Ym9yZGVyLWJvdHRvbTogbm9uZTtcblx0cGFkZGluZzogMDtcbn1cbi50b2RvLWxpc3QgbGku
ZWRpdGluZyAuZWRpdCB7XG5cdGRpc3BsYXk6IGJsb2NrO1xuXHR3aWR0aDogNTA2cHg7XG5cdHBh
ZGRpbmc6IDEycHggMTZweDtcblx0bWFyZ2luOiAwIDAgMCA0M3B4O1xufVxuLnRvZG8tbGlzdCBs
aS5lZGl0aW5nIC52aWV3IHtcblx0ZGlzcGxheTogbm9uZTtcbn1cbi50b2RvLWxpc3QgbGkgLnRv
Z2dsZSB7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcblx0d2lkdGg6IDQwcHg7XG5cdC8qIGF1dG8s
IHNpbmNlIG5vbi1XZWJLaXQgYnJvd3NlcnMgZG9lc24ndCBzdXBwb3J0IGlucHV0IHN0eWxpbmcg
Ki9cblx0aGVpZ2h0OiBhdXRvO1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdHRvcDogMDtcblx0
Ym90dG9tOiAwO1xuXHRtYXJnaW46IGF1dG8gMDtcblx0Ym9yZGVyOiBub25lOyAvKiBNb2JpbGUg
U2FmYXJpICovXG5cdC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcblx0LW1vei1hcHBlYXJhbmNl
OiBub25lO1xuXHQgICAgIGFwcGVhcmFuY2U6IG5vbmU7XG59XG4udG9kby1saXN0IGxpIC50b2dn
bGU6YWZ0ZXIge1xuXHRjb250ZW50OiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcg
eG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiNDBcIiBoZWlnaHQ9
XCI0MFwiIHZpZXdCb3g9XCItMTAgLTE4IDEwMCAxMzVcIj48Y2lyY2xlIGN4PVwiNTBcIiBjeT1c
IjUwXCIgcj1cIjUwXCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjZWRlZGVkXCIgc3Ryb2tlLXdp
ZHRoPVwiM1wiLz48L3N2Zz4nKTtcbn1cbi50b2RvLWxpc3QgbGkgLnRvZ2dsZTpjaGVja2VkOmFm
dGVyIHtcblx0Y29udGVudDogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5z
PVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBc
IiB2aWV3Qm94PVwiLTEwIC0xOCAxMDAgMTM1XCI+PGNpcmNsZSBjeD1cIjUwXCIgY3k9XCI1MFwi
IHI9XCI1MFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiI2JkZGFkNVwiIHN0cm9rZS13aWR0aD1c
IjNcIi8+PHBhdGggZmlsbD1cIiM1ZGMyYWZcIiBkPVwiTTcyIDI1TDQyIDcxIDI3IDU2bC00IDQg
MjAgMjAgMzQtNTJ6XCIvPjwvc3ZnPicpO1xufVxuLnRvZG8tbGlzdCBsaSBsYWJlbCB7XG5cdHdv
cmQtYnJlYWs6IGJyZWFrLWFsbDtcblx0cGFkZGluZzogMTVweCA2MHB4IDE1cHggMTVweDtcblx0
bWFyZ2luLWxlZnQ6IDQ1cHg7XG5cdGRpc3BsYXk6IGJsb2NrO1xuXHRsaW5lLWhlaWdodDogMS4y
O1xuXHR0cmFuc2l0aW9uOiBjb2xvciAwLjRzO1xufVxuLnRvZG8tbGlzdCBsaS5jb21wbGV0ZWQg
bGFiZWwge1xuXHRjb2xvcjogI2Q5ZDlkOTtcblx0dGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91
Z2g7XG59XG4udG9kby1saXN0IGxpIC5kZXN0cm95IHtcblx0ZGlzcGxheTogbm9uZTtcblx0cG9z
aXRpb246IGFic29sdXRlO1xuXHR0b3A6IDA7XG5cdHJpZ2h0OiAxMHB4O1xuXHRib3R0b206IDA7
XG5cdHdpZHRoOiA0MHB4O1xuXHRoZWlnaHQ6IDQwcHg7XG5cdG1hcmdpbjogYXV0byAwO1xuXHRm
b250LXNpemU6IDMwcHg7XG5cdGNvbG9yOiAjY2M5YTlhO1xuXHRtYXJnaW4tYm90dG9tOiAxMXB4
O1xuXHR0cmFuc2l0aW9uOiBjb2xvciAwLjJzIGVhc2Utb3V0O1xufVxuLnRvZG8tbGlzdCBsaSAu
ZGVzdHJveTpob3ZlciB7XG5cdGNvbG9yOiAjYWY1YjVlO1xufVxuLnRvZG8tbGlzdCBsaSAuZGVz
dHJveTphZnRlciB7XG5cdGNvbnRlbnQ6ICfDlyc7XG59XG4udG9kby1saXN0IGxpOmhvdmVyIC5k
ZXN0cm95IHtcblx0ZGlzcGxheTogYmxvY2s7XG59XG4udG9kby1saXN0IGxpIC5lZGl0IHtcblx0
ZGlzcGxheTogbm9uZTtcbn1cbi50b2RvLWxpc3QgbGkuZWRpdGluZzpsYXN0LWNoaWxkIHtcblx0
bWFyZ2luLWJvdHRvbTogLTFweDtcbn1cbi5mb290ZXIge1xuXHRjb2xvcjogIzc3Nztcblx0cGFk
ZGluZzogMTBweCAxNXB4O1xuXHRoZWlnaHQ6IDIwcHg7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtc
blx0Ym9yZGVyLXRvcDogMXB4IHNvbGlkICNlNmU2ZTY7XG59XG4uZm9vdGVyOmJlZm9yZSB7XG5c
dGNvbnRlbnQ6ICcnO1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdHJpZ2h0OiAwO1xuXHRib3R0
b206IDA7XG5cdGxlZnQ6IDA7XG5cdGhlaWdodDogNTBweDtcblx0b3ZlcmZsb3c6IGhpZGRlbjtc
blx0Ym94LXNoYWRvdzogMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSxcblx0ICAgICAgICAg
ICAgMCA4cHggMCAtM3B4ICNmNmY2ZjYsXG5cdCAgICAgICAgICAgIDAgOXB4IDFweCAtM3B4IHJn
YmEoMCwgMCwgMCwgMC4yKSxcblx0ICAgICAgICAgICAgMCAxNnB4IDAgLTZweCAjZjZmNmY2LFxu
XHQgICAgICAgICAgICAwIDE3cHggMnB4IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpO1xufVxuLnRv
ZG8tY291bnQge1xuXHRmbG9hdDogbGVmdDtcblx0dGV4dC1hbGlnbjogbGVmdDtcbn1cbi50b2Rv
LWNvdW50IHN0cm9uZyB7XG5cdGZvbnQtd2VpZ2h0OiAzMDA7XG59XG4uZmlsdGVycyB7XG5cdG1h
cmdpbjogMDtcblx0cGFkZGluZzogMDtcblx0bGlzdC1zdHlsZTogbm9uZTtcblx0cG9zaXRpb246
IGFic29sdXRlO1xuXHRyaWdodDogMDtcblx0bGVmdDogMDtcbn1cbi5maWx0ZXJzIGxpIHtcblx0
ZGlzcGxheTogaW5saW5lO1xufVxuLmZpbHRlcnMgbGkgYSB7XG5cdGNvbG9yOiBpbmhlcml0O1xu
XHRtYXJnaW46IDNweDtcblx0cGFkZGluZzogM3B4IDdweDtcblx0dGV4dC1kZWNvcmF0aW9uOiBu
b25lO1xuXHRib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcblx0Ym9yZGVyLXJhZGl1czog
M3B4O1xufVxuLmZpbHRlcnMgbGkgYTpob3ZlciB7XG5cdGJvcmRlci1jb2xvcjogcmdiYSgxNzUs
IDQ3LCA0NywgMC4xKTtcbn1cbi5maWx0ZXJzIGxpIGEuc2VsZWN0ZWQge1xuXHRib3JkZXItY29s
b3I6IHJnYmEoMTc1LCA0NywgNDcsIDAuMik7XG59XG4uY2xlYXItY29tcGxldGVkLFxuaHRtbCAu
Y2xlYXItY29tcGxldGVkOmFjdGl2ZSB7XG5cdGZsb2F0OiByaWdodDtcblx0cG9zaXRpb246IHJl
bGF0aXZlO1xuXHRsaW5lLWhlaWdodDogMjBweDtcblx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xu
XHRjdXJzb3I6IHBvaW50ZXI7XG59XG4uY2xlYXItY29tcGxldGVkOmhvdmVyIHtcblx0dGV4dC1k
ZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG59XG4uaW5mbyB7XG5cdG1hcmdpbjogNjVweCBhdXRvIDA7
XG5cdGNvbG9yOiAjYmZiZmJmO1xuXHRmb250LXNpemU6IDEwcHg7XG5cdHRleHQtc2hhZG93OiAw
IDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTtcblx0dGV4dC1hbGlnbjogY2VudGVyO1xu
fVxuLmluZm8gcCB7XG5cdGxpbmUtaGVpZ2h0OiAxO1xufVxuLmluZm8gYSB7XG5cdGNvbG9yOiBp
bmhlcml0O1xuXHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cdGZvbnQtd2VpZ2h0OiA0MDA7XG59
XG4uaW5mbyBhOmhvdmVyIHtcblx0dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG59XG5cbi8q
XG5cdEhhY2sgdG8gcmVtb3ZlIGJhY2tncm91bmQgZnJvbSBNb2JpbGUgU2FmYXJpLlxuXHRDYW4n
dCB1c2UgaXQgZ2xvYmFsbHkgc2luY2UgaXQgZGVzdHJveXMgY2hlY2tib3hlcyBpbiBGaXJlZm94
XG4qL1xuQG1lZGlhIHNjcmVlbiBhbmQgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzow
KSB7XG4udG9nZ2xlLWFsbCxcblx0LnRvZG8tbGlzdCBsaSAudG9nZ2xlIHtcblx0XHRiYWNrZ3Jv
dW5kOiBub25lO1xufVxuLnRvZG8tbGlzdCBsaSAudG9nZ2xlIHtcblx0XHRoZWlnaHQ6IDQwcHg7
XG59XG4udG9nZ2xlLWFsbCB7XG5cdFx0dHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1xuXHRcdC13
ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcblx0XHQtbW96LWFwcGVhcmFuY2U6IG5vbmU7XG5cdFx0
ICAgICBhcHBlYXJhbmNlOiBub25lO1xufVxufVxuQG1lZGlhIChtYXgtd2lkdGg6IDQzMHB4KSB7
XG4uZm9vdGVyIHtcblx0XHRoZWlnaHQ6IDUwcHg7XG59XG4uZmlsdGVycyB7XG5cdFx0Ym90dG9t
OiAxMHB4O1xufVxufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHdlYnBhY2s6Ly8v
c3JjL2NvbXBvbmVudHMvdG9kby5jc3MiXSwic291cmNlUm9vdCI6IiJ9ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2Rpc3Qvc3Rh
dGljL2pzL2FwcC5iMGU4MzU4NzRiYzg5NDk2NzBkMS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNs
aS9kaXN0L3N0YXRpYy9qcy9hcHAuYjBlODM1ODc0YmM4OTQ5NjcwZDEuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZWM1YTczNTFmMDE5NmY4OWFlZDFhYjJkZjVhN2RlNjk4NmM2MTlmNAotLS0gL2Rldi9udWxsCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9kaXN0L3N0YXRpYy9qcy9hcHAuYjBlODM1ODc0YmM4
OTQ5NjcwZDEuanMKQEAgLTAsMCArMSwyIEBACit3ZWJwYWNrSnNvbnAoWzEsMF0sW2Z1bmN0aW9u
KGUsdCxvKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxl
P2U6e2RlZmF1bHQ6ZX19dmFyIGk9bygxKSxsPW4oaSkscz1vKDYpLGE9bihzKSxjPW8oNCkscj1u
KGMpO3dpbmRvdy5WdWVBcHA9bmV3IGwuZGVmYXVsdCh7ZWw6IiNhcHAiLHJlbmRlcjpmdW5jdGlv
bihlKXtyZXR1cm4gZShhLmRlZmF1bHQpfX0pO3ZhciBkPW5ldyByLmRlZmF1bHQuUm91dGVyO1si
YWxsIiwiYWN0aXZlIiwiY29tcGxldGVkIl0uZm9yRWFjaChmdW5jdGlvbihlKXtkLm9uKGUsZnVu
Y3Rpb24oKXt3aW5kb3cuVnVlQXBwLmZpbHRlcj1lfSl9KSxkLmNvbmZpZ3VyZSh7bm90Zm91bmQ6
ZnVuY3Rpb24oKXt3aW5kb3cubG9jYXRpb24uaGFzaD0iIix3aW5kb3cuVnVlQXBwLmZpbHRlcj0i
YWxsIn19KSxkLmluaXQoKX0sLGZ1bmN0aW9uKGUsdCxvKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
bihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19T2JqZWN0LmRlZmluZVBy
b3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBpPW8oNyksbD1uKGkpO3QuZGVm
YXVsdD17bmFtZToiYXBwIixjb21wb25lbnRzOntUb2RvczpsLmRlZmF1bHR9fX0sZnVuY3Rpb24o
ZSx0LG8peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/
ZTp7ZGVmYXVsdDplfX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVl
OiEwfSk7dmFyIGk9bygxKSxsPW4oaSk7dC5kZWZhdWx0PXtkYXRhOmZ1bmN0aW9uKCl7cmV0dXJu
e3RvZG9zOltdLG5ld1RvZG86IiIsZmlsdGVyOiJhbGwiLGFsbERvbmU6ITEsZWRpdGluZzpudWxs
fX0sZmlsdGVyczp7cGx1cmFsaXplOmZ1bmN0aW9uKGUpe3JldHVybiAxPT09ZT8iaXRlbSI6Iml0
ZW1zIn19LGRpcmVjdGl2ZXM6e3RvZG9Gb2N1czpmdW5jdGlvbihlLHQpe3QmJmwuZGVmYXVsdC5u
ZXh0VGljayhmdW5jdGlvbih0KXtlLmZvY3VzKCl9KX19LG1ldGhvZHM6e2FkZFRvZG86ZnVuY3Rp
b24oKXt0aGlzLnRvZG9zLnB1c2goe2NvbXBsZXRlZDohMSx0aXRsZTp0aGlzLm5ld1RvZG99KSx0
aGlzLm5ld1RvZG89IiJ9LGRlbGV0ZVRvZG86ZnVuY3Rpb24oZSl7dGhpcy50b2Rvcz10aGlzLnRv
ZG9zLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4gdCE9PWV9KX0sZGVsZXRlQ29tcGxldGVkOmZ1
bmN0aW9uKCl7dGhpcy50b2Rvcz10aGlzLnRvZG9zLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4h
ZS5jb21wbGV0ZWR9KX0sZWRpdFRvZG86ZnVuY3Rpb24oZSl7dGhpcy5lZGl0aW5nPWV9LGRvbmVF
ZGl0OmZ1bmN0aW9uKCl7dGhpcy5lZGl0aW5nPW51bGx9fSxjb21wdXRlZDp7cmVtYWluaW5nOmZ1
bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9kb3MuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmNv
bXBsZXRlZH0pLmxlbmd0aH0sY29tcGxldGVkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9kb3Mu
ZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlLmNvbXBsZXRlZH0pLmxlbmd0aH0sZmlsdGVyZWRU
b2RvczpmdW5jdGlvbigpe3JldHVybiJhY3RpdmUiPT09dGhpcy5maWx0ZXI/dGhpcy50b2Rvcy5m
aWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuY29tcGxldGVkfSk6ImNvbXBsZXRlZCI9PT10aGlz
LmZpbHRlcj90aGlzLnRvZG9zLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZS5jb21wbGV0ZWR9
KTp0aGlzLnRvZG9zfSxhbGxEb25lOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMucmVt
YWluaW5nfSxzZXQ6ZnVuY3Rpb24oZSl7dGhpcy50b2Rvcy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3Qu
Y29tcGxldGVkPWV9KX19fX19LCxmdW5jdGlvbihlLHQpe30sZnVuY3Rpb24oZSx0LG8pe3ZhciBu
LGk7bj1vKDIpO3ZhciBsPW8oOCk7aT1uPW58fHt9LCJvYmplY3QiIT10eXBlb2Ygbi5kZWZhdWx0
JiYiZnVuY3Rpb24iIT10eXBlb2Ygbi5kZWZhdWx0fHwoaT1uPW4uZGVmYXVsdCksImZ1bmN0aW9u
Ij09dHlwZW9mIGkmJihpPWkub3B0aW9ucyksaS5yZW5kZXI9bC5yZW5kZXIsaS5zdGF0aWNSZW5k
ZXJGbnM9bC5zdGF0aWNSZW5kZXJGbnMsZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxvKXt2YXIg
bixpO28oNSksbj1vKDMpO3ZhciBsPW8oOSk7aT1uPW58fHt9LCJvYmplY3QiIT10eXBlb2Ygbi5k
ZWZhdWx0JiYiZnVuY3Rpb24iIT10eXBlb2Ygbi5kZWZhdWx0fHwoaT1uPW4uZGVmYXVsdCksImZ1
bmN0aW9uIj09dHlwZW9mIGkmJihpPWkub3B0aW9ucyksaS5yZW5kZXI9bC5yZW5kZXIsaS5zdGF0
aWNSZW5kZXJGbnM9bC5zdGF0aWNSZW5kZXJGbnMsZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCl7
ZS5leHBvcnRzPXtyZW5kZXI6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9ZS4kY3JlYXRlRWxlbWVu
dDtyZXR1cm4gdCgiZGl2Iix7YXR0cnM6e2lkOiJhcHAifX0sW3QoIlRvZG9zIildKX0sc3RhdGlj
UmVuZGVyRm5zOltdfX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9e3JlbmRlcjpmdW5jdGlvbigp
e3ZhciBlPXRoaXMsdD1lLiRjcmVhdGVFbGVtZW50O3JldHVybiB0KCJzZWN0aW9uIix7c3RhdGlj
Q2xhc3M6InRvZG9hcHAifSxbdCgiaGVhZGVyIix7c3RhdGljQ2xhc3M6ImhlYWRlciJ9LFt0KCJo
MSIsWyJUb2RvcyJdKSwiICIsdCgiaW5wdXQiLHtkaXJlY3RpdmVzOlt7bmFtZToibW9kZWwiLHJh
d05hbWU6InYtbW9kZWwiLHZhbHVlOmUubmV3VG9kbyxleHByZXNzaW9uOiJuZXdUb2RvIn1dLHN0
YXRpY0NsYXNzOiJuZXctdG9kbyIsYXR0cnM6e3R5cGU6InRleHQiLGF1dG9mb2N1czoiIixhdXRv
Y29tcGxldGU6Im9mZiIscGxhY2Vob2xkZXI6IldoYXQgbmVlZHMgdG8gYmUgZG9uZT8ifSxkb21Q
cm9wczp7dmFsdWU6ZS5fcyhlLm5ld1RvZG8pfSxvbjp7a2V5dXA6ZnVuY3Rpb24odCl7MTM9PT10
LmtleUNvZGUmJmUuYWRkVG9kbyh0KX0saW5wdXQ6ZnVuY3Rpb24odCl7dC50YXJnZXQuY29tcG9z
aW5nfHwoZS5uZXdUb2RvPXQudGFyZ2V0LnZhbHVlKX19fSldKSwiICIsdCgic2VjdGlvbiIse2Rp
cmVjdGl2ZXM6W3tuYW1lOiJzaG93IixyYXdOYW1lOiJ2LXNob3ciLHZhbHVlOmUudG9kb3MubGVu
Z3RoLGV4cHJlc3Npb246InRvZG9zLmxlbmd0aCJ9XSxzdGF0aWNDbGFzczoibWFpbiJ9LFt0KCJp
bnB1dCIse2RpcmVjdGl2ZXM6W3tuYW1lOiJtb2RlbCIscmF3TmFtZToidi1tb2RlbCIsdmFsdWU6
ZS5hbGxEb25lLGV4cHJlc3Npb246ImFsbERvbmUifV0sc3RhdGljQ2xhc3M6InRvZ2dsZS1hbGwi
LGF0dHJzOnt0eXBlOiJjaGVja2JveCJ9LGRvbVByb3BzOntjaGVja2VkOkFycmF5LmlzQXJyYXko
ZS5hbGxEb25lKT9lLl9pKGUuYWxsRG9uZSxudWxsKT4tMTplLl9xKGUuYWxsRG9uZSwhMCl9LG9u
OntjaGFuZ2U6ZnVuY3Rpb24odCl7dmFyIG89ZS5hbGxEb25lLG49dC50YXJnZXQsaT0hIW4uY2hl
Y2tlZDtpZihBcnJheS5pc0FycmF5KG8pKXt2YXIgbD1udWxsLHM9ZS5faShvLGwpO2k/czwwJiYo
ZS5hbGxEb25lPW8uY29uY2F0KGwpKTpzPi0xJiYoZS5hbGxEb25lPW8uc2xpY2UoMCxzKS5jb25j
YXQoby5zbGljZShzKzEpKSl9ZWxzZSBlLmFsbERvbmU9aX19fSksIiAiLHQoInVsIix7c3RhdGlj
Q2xhc3M6InRvZG8tbGlzdCJ9LFtlLl9sKGUuZmlsdGVyZWRUb2RvcyxmdW5jdGlvbihvKXtyZXR1
cm4gdCgibGkiLHtzdGF0aWNDbGFzczoidG9kbyIsY2xhc3M6e2NvbXBsZXRlZDpvLmNvbXBsZXRl
ZCxlZGl0aW5nOm89PT1lLmVkaXRpbmd9fSxbdCgiZGl2Iix7c3RhdGljQ2xhc3M6InZpZXcifSxb
dCgiaW5wdXQiLHtkaXJlY3RpdmVzOlt7bmFtZToibW9kZWwiLHJhd05hbWU6InYtbW9kZWwiLHZh
bHVlOm8uY29tcGxldGVkLGV4cHJlc3Npb246InRvZG8uY29tcGxldGVkIn1dLHN0YXRpY0NsYXNz
OiJ0b2dnbGUiLGF0dHJzOnt0eXBlOiJjaGVja2JveCJ9LGRvbVByb3BzOntjaGVja2VkOkFycmF5
LmlzQXJyYXkoby5jb21wbGV0ZWQpP2UuX2koby5jb21wbGV0ZWQsbnVsbCk+LTE6ZS5fcShvLmNv
bXBsZXRlZCwhMCl9LG9uOntjaGFuZ2U6ZnVuY3Rpb24odCl7dmFyIG49by5jb21wbGV0ZWQsaT10
LnRhcmdldCxsPSEhaS5jaGVja2VkO2lmKEFycmF5LmlzQXJyYXkobikpe3ZhciBzPW51bGwsYT1l
Ll9pKG4scyk7bD9hPDAmJihvLmNvbXBsZXRlZD1uLmNvbmNhdChzKSk6YT4tMSYmKG8uY29tcGxl
dGVkPW4uc2xpY2UoMCxhKS5jb25jYXQobi5zbGljZShhKzEpKSl9ZWxzZSBvLmNvbXBsZXRlZD1s
fX19KSwiICIsdCgibGFiZWwiLHtvbjp7ZGJsY2xpY2s6ZnVuY3Rpb24odCl7ZS5lZGl0VG9kbyhv
KX19fSxbZS5fcyhvLnRpdGxlKV0pLCIgIix0KCJidXR0b24iLHtzdGF0aWNDbGFzczoiZGVzdHJv
eSIsb246e2NsaWNrOmZ1bmN0aW9uKHQpe3QucHJldmVudERlZmF1bHQoKSxlLmRlbGV0ZVRvZG8o
byl9fX0pXSksIiAiLHQoImlucHV0Iix7ZGlyZWN0aXZlczpbe25hbWU6Im1vZGVsIixyYXdOYW1l
OiJ2LW1vZGVsIix2YWx1ZTpvLnRpdGxlLGV4cHJlc3Npb246InRvZG8udGl0bGUifSx7bmFtZToi
dG9kb0ZvY3VzIixyYXdOYW1lOiJ2LXRvZG9Gb2N1cyIsdmFsdWU6bz09PWUuZWRpdGluZyxleHBy
ZXNzaW9uOiJ0b2RvID09PSBlZGl0aW5nIn1dLHN0YXRpY0NsYXNzOiJlZGl0IixhdHRyczp7dHlw
ZToidGV4dCJ9LGRvbVByb3BzOnt2YWx1ZTplLl9zKG8udGl0bGUpfSxvbjp7a2V5dXA6ZnVuY3Rp
b24odCl7MTM9PT10LmtleUNvZGUmJmUuZG9uZUVkaXQodCl9LGJsdXI6ZS5kb25lRWRpdCxpbnB1
dDpmdW5jdGlvbihlKXtlLnRhcmdldC5jb21wb3Npbmd8fChvLnRpdGxlPWUudGFyZ2V0LnZhbHVl
KX19fSldKX0pXSksIiAiLCIgIix0KCJmb290ZXIiLHtkaXJlY3RpdmVzOlt7bmFtZToic2hvdyIs
cmF3TmFtZToidi1zaG93Iix2YWx1ZTplLnRvZG9zLmxlbmd0aD4wLGV4cHJlc3Npb246InRvZG9z
Lmxlbmd0aCA+IDAifV0sc3RhdGljQ2xhc3M6ImZvb3RlciJ9LFt0KCJzcGFuIix7c3RhdGljQ2xh
c3M6InRvZG8tY291bnQifSxbdCgic3Ryb25nIixbZS5fcyhlLnJlbWFpbmluZyldKSwiICIrZS5f
cyhlLl9mKCJwbHVyYWxpemUiKShlLnJlbWFpbmluZykpKyIgbGVmdFxuICAgICAgICAiXSksIiAi
LHQoInVsIix7c3RhdGljQ2xhc3M6ImZpbHRlcnMifSxbdCgibGkiLFt0KCJhIix7Y2xhc3M6e3Nl
bGVjdGVkOiJhbGwiPT1lLmZpbHRlcn0sYXR0cnM6e2hyZWY6IiMvYWxsIn0sb246e2NsaWNrOmZ1
bmN0aW9uKHQpe2UuZmlsdGVyPSJhbGwifX19LFsiQWxsIl0pXSksIiAiLHQoImxpIixbdCgiYSIs
e2NsYXNzOntzZWxlY3RlZDoiYWN0aXZlIj09ZS5maWx0ZXJ9LGF0dHJzOntocmVmOiIjL2FjdGl2
ZSJ9LG9uOntjbGljazpmdW5jdGlvbih0KXtlLmZpbHRlcj0iYWN0aXZlIn19fSxbIkFjdGl2ZSJd
KV0pLCIgIix0KCJsaSIsW3QoImEiLHtjbGFzczp7c2VsZWN0ZWQ6ImNvbXBsZXRlZCI9PWUuZmls
dGVyfSxhdHRyczp7aHJlZjoiIy9jb21wbGV0ZWQifSxvbjp7Y2xpY2s6ZnVuY3Rpb24odCl7ZS5m
aWx0ZXI9ImNvbXBsZXRlZCJ9fX0sWyJDb21wbGV0ZWQiXSldKV0pLCIgIix0KCJidXR0b24iLHtk
aXJlY3RpdmVzOlt7bmFtZToic2hvdyIscmF3TmFtZToidi1zaG93Iix2YWx1ZTplLmNvbXBsZXRl
ZCxleHByZXNzaW9uOiJjb21wbGV0ZWQifV0sc3RhdGljQ2xhc3M6ImNsZWFyLWNvbXBsZXRlZCIs
b246e2NsaWNrOmZ1bmN0aW9uKHQpe3QucHJldmVudERlZmF1bHQoKSxlLmRlbGV0ZUNvbXBsZXRl
ZCh0KX19fSxbIkNsZWFyIENvbXBsZXRlZCJdKV0pXSldKX0sc3RhdGljUmVuZGVyRm5zOltdfX1d
KTsKKy8vIyBzb3VyY2VNYXBwaW5nVVJMPWFwcC5iMGU4MzU4NzRiYzg5NDk2NzBkMS5qcy5tYXAK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVq
cy1jbGkvZGlzdC9zdGF0aWMvanMvYXBwLmIwZTgzNTg3NGJjODk0OTY3MGQxLmpzLm1hcCBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL3Z1ZWpzLWNsaS9kaXN0L3N0YXRpYy9qcy9hcHAuYjBlODM1ODc0YmM4OTQ5Njcw
ZDEuanMubWFwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdhODI2NTEzMDI4YTQ4ZDYwNzEyY2EzYWY5ZmM2ZTllMDY4
NjY3MTIKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvZGlzdC9zdGF0
aWMvanMvYXBwLmIwZTgzNTg3NGJjODk0OTY3MGQxLmpzLm1hcApAQCAtMCwwICsxIEBACit7InZl
cnNpb24iOjMsInNvdXJjZXMiOlsid2VicGFjazovLy9zdGF0aWMvanMvYXBwLmIwZTgzNTg3NGJj
ODk0OTY3MGQxLmpzIiwid2VicGFjazovLy8uL3NyYy9tYWluLmpzIiwid2VicGFjazovLy9BcHAu
dnVlIiwid2VicGFjazovLy9Ub2Rvcy52dWUiLCJ3ZWJwYWNrOi8vLy4vc3JjL0FwcC52dWUiLCJ3
ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvVG9kb3MudnVlIiwid2VicGFjazovLy8uL3NyYy9B
cHAudnVlPzNhZDMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvVG9kb3MudnVlPzZhMGIi
XSwibmFtZXMiOlsid2VicGFja0pzb25wIiwibW9kdWxlIiwiZXhwb3J0cyIsIl9fd2VicGFja19y
ZXF1aXJlX18iLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0Iiwib2JqIiwiX19lc01vZHVsZSIsImRl
ZmF1bHQiLCJfdnVlIiwiX3Z1ZTIiLCJfQXBwIiwiX0FwcDIiLCJfZGlyZWN0b3IiLCJfZGlyZWN0
b3IyIiwid2luZG93IiwiVnVlQXBwIiwiZWwiLCJyZW5kZXIiLCJoIiwicm91dGVyIiwiUm91dGVy
IiwiZm9yRWFjaCIsInZpc2liaWxpdHkiLCJvbiIsImZpbHRlciIsImNvbmZpZ3VyZSIsIm5vdGZv
dW5kIiwibG9jYXRpb24iLCJoYXNoIiwiaW5pdCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5Iiwi
dmFsdWUiLCJfVG9kb3MiLCJfVG9kb3MyIiwibmFtZSIsImNvbXBvbmVudHMiLCJUb2RvcyIsImRh
dGEiLCJ0b2RvcyIsIm5ld1RvZG8iLCJhbGxEb25lIiwiZWRpdGluZyIsImZpbHRlcnMiLCJwbHVy
YWxpemUiLCJuIiwiZGlyZWN0aXZlcyIsInRvZG9Gb2N1cyIsIm5leHRUaWNrIiwiXyIsImZvY3Vz
IiwibWV0aG9kcyIsImFkZFRvZG8iLCJ0aGlzIiwicHVzaCIsImNvbXBsZXRlZCIsInRpdGxlIiwi
ZGVsZXRlVG9kbyIsInRvZG8iLCJ0IiwiZGVsZXRlQ29tcGxldGVkIiwiZWRpdFRvZG8iLCJkb25l
RWRpdCIsImNvbXB1dGVkIiwicmVtYWluaW5nIiwibGVuZ3RoIiwiZmlsdGVyZWRUb2RvcyIsImdl
dCIsInNldCIsIl9fdnVlX2V4cG9ydHNfXyIsIl9fdnVlX29wdGlvbnNfXyIsIl9fdnVlX3RlbXBs
YXRlX18iLCJvcHRpb25zIiwic3RhdGljUmVuZGVyRm5zIiwiX3ZtIiwiX2giLCIkY3JlYXRlRWxl
bWVudCIsImF0dHJzIiwiaWQiLCJzdGF0aWNDbGFzcyIsInJhd05hbWUiLCJleHByZXNzaW9uIiwi
dHlwZSIsImF1dG9mb2N1cyIsImF1dG9jb21wbGV0ZSIsInBsYWNlaG9sZGVyIiwiZG9tUHJvcHMi
LCJfcyIsImtleXVwIiwiJGV2ZW50Iiwia2V5Q29kZSIsImlucHV0IiwidGFyZ2V0IiwiY29tcG9z
aW5nIiwiY2hlY2tlZCIsIkFycmF5IiwiaXNBcnJheSIsIl9pIiwiX3EiLCJjaGFuZ2UiLCIkJGEi
LCIkJGVsIiwiJCRjIiwiJCR2IiwiJCRpIiwiY29uY2F0Iiwic2xpY2UiLCJfbCIsImNsYXNzIiwi
ZGJsY2xpY2siLCJjbGljayIsInByZXZlbnREZWZhdWx0IiwiYmx1ciIsIl9mIiwic2VsZWN0ZWQi
LCJocmVmIl0sIm1hcHBpbmdzIjoiQUFBQUEsY0FBYyxFQUFFLElBRVYsU0FBU0MsRUFBUUMsRUFB
U0MsR0FFL0IsWUFjQSxTQUFTQyxHQUF1QkMsR0FBTyxNQUFPQSxJQUFPQSxFQUFJQyxXQUFhRCxH
QUFRRSxRQUFTRixHQ2hCeEYsR0FBQUcsR0FBQUwsRUFBQSxHRE1LTSxFQUFRTCxFQUF1QkksR0NM
cENFLEVBQUFQLEVBQUEsR0RTS1EsRUFBUVAsRUFBdUJNLEdDUnBDRSxFQUFBVCxFQUFBLEdEWUtV
LEVBQWFULEVBQXVCUSxFQ1R6Q0UsUUFBT0MsT0FBUyxHQUFBTixHQUFBRixTQUNaUyxHQUFJLE9B
Q0pDLE9BQVEsU0FBQUMsR0FBQSxNQUFLQSxnQkFHakIsSUFBTUMsR0FBUyxHQUFJTixHQUFBTixR
QUFTYSxRQUUzQixNQUFPLFNBQVUsYUFBYUMsUUFBUSxTQUFBQyxHQUNyQ0gsRUFBT0ksR0FBR0Qs
RUFBWSxXQUNwQlIsT0FBT0MsT0FBT1MsT0FBU0YsTUFJM0JILEVBQU9NLFdBQ0xDLFNBQVUsV0FD
UlosT0FBT2EsU0FBU0MsS0FBTyxHQUN2QmQsT0FBT0MsT0FBT1MsT0FBUyxTQUkzQkwsRUFBT1Us
UURrQkEsQ0FFRCxTQUFTNUIsRUFBUUMsRUFBU0MsR0FFL0IsWUFVQSxTQUFTQyxHQUF1QkMsR0FB
TyxNQUFPQSxJQUFPQSxFQUFJQyxXQUFhRCxHQUFRRSxRQUFTRixHQVJ2RnlCLE9BQU9DLGVBQWU3
QixFQUFTLGNBQzNCOEIsT0FBTyxHRTNDWixJQUFBQyxHQUFBOUIsRUFBQSxHRmdESytCLEVBQVU5
QixFQUF1QjZCLEVBSXJDL0IsR0FBUUssU0FDSjRCLEtFbkRMLE1Gb0RLQyxZRWpETEMsTUFBQUgs
RUFBQTNCLFdGd0RNLFNBQVNOLEVBQVFDLEVBQVNDLEdBRS9CLFlBVUEsU0FBU0MsR0FBdUJDLEdB
QU8sTUFBT0EsSUFBT0EsRUFBSUMsV0FBYUQsR0FBUUUsUUFBU0YsR0FSdkZ5QixPQUFPQyxlQUFl
N0IsRUFBUyxjQUMzQjhCLE9BQU8sR0d2Q1osSUFBQXhCLEdBQUFMLEVBQUEsR0g0Q0tNLEVBQVFM
LEVBQXVCSSxFQUluQ04sR0FBUUssU0FDSitCLEtBQU0sV0FDRixPQUNJQyxTQUNBQyxRRy9DYixH
SGdEYWhCLE9HL0NiLE1IZ0RhaUIsU0cvQ2IsRUhnRGFDLFFHOUNiLE9Ia0RLQyxTQUNJQyxVQUFX
LFNBQW1CQyxHQUMxQixNQUFhLEtBQU5BLEVBQVUsT0doRDlCLFVIbURLQyxZQUNJQyxVQUFXLFNB
QW1CL0IsRUFBSWdCLEdBQzFCQSxHQUNBdkIsRUFBTUYsUUFBUXlDLFNBQVMsU0FBVUMsR0FDN0Jq
QyxFR2hEckJrQyxZSHFES0MsU0FDSUMsUUFBUyxXQUNMQyxLQUFLZCxNQUFNZSxNQUNQQyxXR2hE
akIsRUhpRGlCQyxNQUFPSCxLRy9DeEJiLFVIaURhYSxLQUFLYixRR2hEbEIsSUhrRFNpQixXQUFZ
LFNBQW9CQyxHQUM1QkwsS0FBS2QsTUFBUWMsS0FBS2QsTUFBTWYsT0FBTyxTQUFVbUMsR0FDckMs
TUFBT0EsS0dqRHhCRCxLSG9EU0UsZ0JBQWlCLFdBQ2JQLEtBQUtkLE1BQVFjLEtBQUtkLE1BQU1m
LE9BQU8sU0FBVWtDLEdBQ3JDLE9BQVFBLEVHbkR6QkgsYUhzRFNNLFNBQVUsU0FBa0JILEdBQ3hC
TCxLQUFLWCxRR3BEbEJnQixHSHNEU0ksU0FBVSxXQUNOVCxLQUFLWCxRR3BEbEIsT0h1REtxQixV
QUNJQyxVQUFXLFdBQ1AsTUFBT1gsTUFBS2QsTUFBTWYsT0FBTyxTQUFVa0MsR0FDL0IsT0FBUUEs
RUFBS0gsWUdyRDlCVSxRSHdEU1YsVUFBVyxXQUNQLE1BQU9GLE1BQUtkLE1BQU1mLE9BQU8sU0FB
VWtDLEdBQy9CLE1BQU9BLEdBQUtILFlHdkQ3QlUsUUgwRFNDLGNBQWUsV0FDWCxNQUFvQixXQUFo
QmIsS0FBSzdCLE9BQ0U2QixLQUFLZCxNQUFNZixPQUFPLFNBQVVrQyxHQUMvQixPQUFRQSxFR3pE
N0JILFlIMkR3QyxjQUFoQkYsS0FBSzdCLE9BQ0w2QixLQUFLZCxNQUFNZixPQUFPLFNBQVVrQyxH
QUMvQixNQUFPQSxHRzNENUJILFlIK0RvQkYsS0c1RHBCZCxPSCtEU0UsU0FDSTBCLElBQUssV0FD
RCxNRzdEakIsS0g2RHdCZCxLQUFLVyxXQUVoQkksSUFBSyxTQUFhcEMsR0FDZHFCLEtBQUtkLE1B
QU1sQixRQUFRLFNBQVVxQyxHQUN6QkEsRUFBS0gsVUc3RDFCdkIsU0hxRU8sQ0FFRCxTQUFTL0Is
RUFBUUMsS0FNakIsU0FBU0QsRUFBUUMsRUFBU0MsR0lyTGhDLEdBQUFrRSxHQUFBQyxDQUlBRCxH
QUFBbEUsRUFBQSxFQUdBLElBQUFvRSxHQUFBcEUsRUFBQSxFQUNBbUUsR0FBQUQsUUFFQSxnQkFB
QUEsR0FBQTlELFNBQ0Esa0JBQUE4RCxHQUFBOUQsVUFFQStELEVBQUFELElBQUE5RCxTQUVBLGtC
QUFBK0QsS0FDQUEsSUFBQUUsU0FHQUYsRUFBQXJELE9BQUFzRCxFQUFBdEQsT0FDQXFELEVBQUFH
LGdCQUFBRixFQUFBRSxnQkFFQXhFLEVBQUFDLFFBQUFtRSxHSjRMTSxTQUFTcEUsRUFBUUMsRUFB
U0MsR0tsTmhDLEdBQUFrRSxHQUFBQyxDQUlBbkUsR0FBQSxHQUdBa0UsRUFBQWxFLEVBQUEsRUFH
QSxJQUFBb0UsR0FBQXBFLEVBQUEsRUFDQW1FLEdBQUFELFFBRUEsZ0JBQUFBLEdBQUE5RCxTQUNB
LGtCQUFBOEQsR0FBQTlELFVBRUErRCxFQUFBRCxJQUFBOUQsU0FFQSxrQkFBQStELEtBQ0FBLElB
QUFFLFNBR0FGLEVBQUFyRCxPQUFBc0QsRUFBQXRELE9BQ0FxRCxFQUFBRyxnQkFBQUYsRUFBQUUs
Z0JBRUF4RSxFQUFBQyxRQUFBbUUsR0x5Tk0sU0FBU3BFLEVBQVFDLEdNbFB2QkQsRUFBQUMsU0FB
Z0JlLE9BQUEsV0FBbUIsR0FBQXlELEdBQUFyQixLQUFhc0IsRUFBQUQsRUFBQUUsY0FDaEQsT0FB
QUQsR0FBQSxPQUNBRSxPQUNBQyxHQUFBLFNBRUdILEVBQUEsWUFDRkYscUJOd1BLLFNBQVN4RSxF
QUFRQyxHTzlQdkJELEVBQUFDLFNBQWdCZSxPQUFBLFdBQW1CLEdBQUF5RCxHQUFBckIsS0FBYXNC
LEVBQUFELEVBQUFFLGNBQ2hELE9BQUFELEdBQUEsV0FDQUksWUFBQSxZQUNHSixFQUFBLFVBQ0hJ
LFlBQUEsV0FDR0osRUFBQSxvQkFBQUEsRUFBQSxTQUNIN0IsYUFDQVgsS0FBQSxRQUNBNkMsUUFB
QSxVQUNBaEQsTUFBQTBDLEVBQUEsUUFDQU8sV0FBQSxZQUVBRixZQUFBLFdBQ0FGLE9BQ0FLLEtB
QUEsT0FDQUMsVUFBQSxHQUNBQyxhQUFBLE1BQ0FDLFlBQUEsMEJBRUFDLFVBQ0F0RCxNQUFBMEMs
RUFBQWEsR0FBQWIsRUFBQWxDLFVBRUFqQixJQUNBaUUsTUFBQSxTQUFBQyxHQUNBLEtBQUFBLEVB
QUFDLFNBQ0FoQixFQUFBdEIsUUFBQXFDLElBRUFFLE1BQUEsU0FBQUYsR0FDQUEsRUFBQUcsT0FB
QUMsWUFDQW5CLEVBQUFsQyxRQUFBaUQsRUFBQUcsT0FBQTVELGFBR0csSUFBQTJDLEVBQUEsV0FD
SDdCLGFBQ0FYLEtBQUEsT0FDQTZDLFFBQUEsU0FDQWhELE1BQUEwQyxFQUFBbkMsTUFBQSxPQUNB
MEMsV0FBQSxpQkFFQUYsWUFBQSxTQUNHSixFQUFBLFNBQ0g3QixhQUNBWCxLQUFBLFFBQ0E2QyxR
QUFBLFVBQ0FoRCxNQUFBMEMsRUFBQSxRQUNBTyxXQUFBLFlBRUFGLFlBQUEsYUFDQUYsT0FDQUss
S0FBQSxZQUVBSSxVQUNBUSxRQUFBQyxNQUFBQyxRQUFBdEIsRUFBQWpDLFNBQUFpQyxFQUFBdUIs
R0FBQXZCLEVBQUFqQyxRQUFBLFNBQUFpQyxFQUFBd0IsR0FBQXhCLEVBQUFqQyxTQUFBLElBRUFs
QixJQUNBNEUsT0FBQSxTQUFBVixHQUNBLEdBQUFXLEdBQUExQixFQUFBakMsUUFDQTRELEVBQUFa
LEVBQUFHLE9BQ0FVLElBQUFELEVBQUFQLE9BQ0EsSUFBQUMsTUFBQUMsUUFBQUksR0FBQSxDQUNB
LEdBQUFHLEdBQUEsS0FDQUMsRUFBQTlCLEVBQUF1QixHQUFBRyxFQUFBRyxFQUNBRCxHQUNBRSxF
QUFBLElBQUE5QixFQUFBakMsUUFBQTJELEVBQUFLLE9BQUFGLElBRUFDLEdBQUEsSUFBQTlCLEVB
QUFqQyxRQUFBMkQsRUFBQU0sTUFBQSxFQUFBRixHQUFBQyxPQUFBTCxFQUFBTSxNQUFBRixFQUFB
LFNBR0E5QixHQUFBakMsUUFBQTZELE1BSUcsSUFBQTNCLEVBQUEsTUFDSEksWUFBQSxjQUNHTCxF
QUFBaUMsR0FBQWpDLEVBQUEsdUJBQUFoQixHQUNILE1BQUFpQixHQUFBLE1BQ0FJLFlBQUEsT0FD
QTZCLE9BQ0FyRCxVQUFBRyxFQUFBSCxVQUFBYixRQUFBZ0IsSUFBQWdCLEVBQUFoQyxXQUVLaUMs
RUFBQSxPQUNMSSxZQUFBLFNBQ0tKLEVBQUEsU0FDTDdCLGFBQ0FYLEtBQUEsUUFDQTZDLFFBQUEs
VUFDQWhELE1BQUEwQixFQUFBLFVBQ0F1QixXQUFBLG1CQUVBRixZQUFBLFNBQ0FGLE9BQ0FLLEtB
QUEsWUFFQUksVUFDQVEsUUFBQUMsTUFBQUMsUUFBQXRDLEVBQUFILFdBQUFtQixFQUFBdUIsR0FB
QXZDLEVBQUFILFVBQUEsU0FBQW1CLEVBQUF3QixHQUFBeEMsRUFBQUgsV0FBQSxJQUVBaEMsSUFD
QTRFLE9BQUEsU0FBQVYsR0FDQSxHQUFBVyxHQUFBMUMsRUFBQUgsVUFDQThDLEVBQUFaLEVBQUFH
LE9BQ0FVLElBQUFELEVBQUFQLE9BQ0EsSUFBQUMsTUFBQUMsUUFBQUksR0FBQSxDQUNBLEdBQUFH
LEdBQUEsS0FDQUMsRUFBQTlCLEVBQUF1QixHQUFBRyxFQUFBRyxFQUNBRCxHQUNBRSxFQUFBLElB
QUE5QyxFQUFBSCxVQUFBNkMsRUFBQUssT0FBQUYsSUFFQUMsR0FBQSxJQUFBOUMsRUFBQUgsVUFB
QTZDLEVBQUFNLE1BQUEsRUFBQUYsR0FBQUMsT0FBQUwsRUFBQU0sTUFBQUYsRUFBQSxTQUdBOUMs
R0FBQUgsVUFBQStDLE1BSUssSUFBQTNCLEVBQUEsU0FDTHBELElBQ0FzRixTQUFBLFNBQUFwQixH
QUNBZixFQUFBYixTQUFBSCxPQUdLZ0IsRUFBQWEsR0FBQTdCLEVBQUFGLFNBQUEsSUFBQW1CLEVB
QUEsVUFDTEksWUFBQSxVQUNBeEQsSUFDQXVGLE1BQUEsU0FBQXJCLEdBQ0FBLEVBQUFzQixpQkFD
QXJDLEVBQUFqQixXQUFBQyxTQUdLLElBQUFpQixFQUFBLFNBQ0w3QixhQUNBWCxLQUFBLFFBQ0E2
QyxRQUFBLFVBQ0FoRCxNQUFBMEIsRUFBQSxNQUNBdUIsV0FBQSxlQUVBOUMsS0FBQSxZQUNBNkMs
UUFBQSxjQUNBaEQsTUFBQTBCLElBQUFnQixFQUFBaEMsUUFDQXVDLFdBQUEscUJBRUFGLFlBQUEs
T0FDQUYsT0FDQUssS0FBQSxRQUVBSSxVQUNBdEQsTUFBQTBDLEVBQUFhLEdBQUE3QixFQUFBRixR
QUVBakMsSUFDQWlFLE1BQUEsU0FBQUMsR0FDQSxLQUFBQSxFQUFBQyxTQUNBaEIsRUFBQVosU0FB
QTJCLElBRUF1QixLQUFBdEMsRUFBQVosU0FDQTZCLE1BQUEsU0FBQUYsR0FDQUEsRUFBQUcsT0FB
QUMsWUFDQW5DLEVBQUFGLE1BQUFpQyxFQUFBRyxPQUFBNUQsaUJBSUcsUUFBQTJDLEVBQUEsVUFD
SDdCLGFBQ0FYLEtBQUEsT0FDQTZDLFFBQUEsU0FDQWhELE1BQUEwQyxFQUFBbkMsTUFBQTBCLE9B
QUEsRUFDQWdCLFdBQUEscUJBRUFGLFlBQUEsV0FDR0osRUFBQSxRQUNISSxZQUFBLGVBQ0dKLEVB
QUEsVUFBQUQsRUFBQWEsR0FBQWIsRUFBQVYsYUFBQSxJQUFBVSxFQUFBYSxHQUFBYixFQUFBdUMs
R0FBQSxhQUFBdkMsRUFBQVYsWUFBQSx3QkFBQVcsRUFBQSxNQUNISSxZQUFBLFlBQ0dKLEVBQUEs
TUFBQUEsRUFBQSxLQUNIaUMsT0FDQU0sU0FBQSxPQUFBeEMsRUFBQWxELFFBRUFxRCxPQUNBc0Ms
S0FBQSxTQUVBNUYsSUFDQXVGLE1BQUEsU0FBQXJCLEdBQ0FmLEVBQUFsRCxPQUFBLFVBR0csY0FB
QW1ELEVBQUEsTUFBQUEsRUFBQSxLQUNIaUMsT0FDQU0sU0FBQSxVQUFBeEMsRUFBQWxELFFBRUFx
RCxPQUNBc0MsS0FBQSxZQUVBNUYsSUFDQXVGLE1BQUEsU0FBQXJCLEdBQ0FmLEVBQUFsRCxPQUFB
LGFBR0csaUJBQUFtRCxFQUFBLE1BQUFBLEVBQUEsS0FDSGlDLE9BQ0FNLFNBQUEsYUFBQXhDLEVB
QUFsRCxRQUVBcUQsT0FDQXNDLEtBQUEsZUFFQTVGLElBQ0F1RixNQUFBLFNBQUFyQixHQUNBZixF
QUFBbEQsT0FBQSxnQkFHRyxzQkFBQW1ELEVBQUEsVUFDSDdCLGFBQ0FYLEtBQUEsT0FDQTZDLFFB
QUEsU0FDQWhELE1BQUEwQyxFQUFBLFVBQ0FPLFdBQUEsY0FFQUYsWUFBQSxrQkFDQXhELElBQ0F1
RixNQUFBLFNBQUFyQixHQUNBQSxFQUFBc0IsaUJBQ0FyQyxFQUFBZCxnQkFBQTZCLE9BR0csMkJB
Q0ZoQiIsImZpbGUiOiJzdGF0aWMvanMvYXBwLmIwZTgzNTg3NGJjODk0OTY3MGQxLmpzIiwic291
cmNlc0NvbnRlbnQiOlsid2VicGFja0pzb25wKFsxLDBdLFtcbi8qIDAgKi9cbi8qKiovIGZ1bmN0
aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3Ry
aWN0Jztcblx0XG5cdHZhciBfdnVlID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcblx0XG5cdHZh
ciBfdnVlMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3Z1ZSk7XG5cdFxuXHR2YXIgX0FwcCA9
IF9fd2VicGFja19yZXF1aXJlX18oNik7XG5cdFxuXHR2YXIgX0FwcDIgPSBfaW50ZXJvcFJlcXVp
cmVEZWZhdWx0KF9BcHApO1xuXHRcblx0dmFyIF9kaXJlY3RvciA9IF9fd2VicGFja19yZXF1aXJl
X18oNCk7XG5cdFxuXHR2YXIgX2RpcmVjdG9yMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Rp
cmVjdG9yKTtcblx0XG5cdGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJl
dHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5c
dFxuXHR3aW5kb3cuVnVlQXBwID0gbmV3IF92dWUyLmRlZmF1bHQoe1xuXHQgIGVsOiAnI2FwcCcs
XG5cdCAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCkge1xuXHQgICAgcmV0dXJuIGgoX0FwcDIu
ZGVmYXVsdCk7XG5cdCAgfVxuXHR9KTtcblx0XG5cdHZhciByb3V0ZXIgPSBuZXcgX2RpcmVjdG9y
Mi5kZWZhdWx0LlJvdXRlcigpO1xuXHRcblx0WydhbGwnLCAnYWN0aXZlJywgJ2NvbXBsZXRlZCdd
LmZvckVhY2goZnVuY3Rpb24gKHZpc2liaWxpdHkpIHtcblx0ICByb3V0ZXIub24odmlzaWJpbGl0
eSwgZnVuY3Rpb24gKCkge1xuXHQgICAgd2luZG93LlZ1ZUFwcC5maWx0ZXIgPSB2aXNpYmlsaXR5
O1xuXHQgIH0pO1xuXHR9KTtcblx0XG5cdHJvdXRlci5jb25maWd1cmUoe1xuXHQgIG5vdGZvdW5k
OiBmdW5jdGlvbiBub3Rmb3VuZCgpIHtcblx0ICAgIHdpbmRvdy5sb2NhdGlvbi5oYXNoID0gJyc7
XG5cdCAgICB3aW5kb3cuVnVlQXBwLmZpbHRlciA9ICdhbGwnO1xuXHQgIH1cblx0fSk7XG5cdFxu
XHRyb3V0ZXIuaW5pdCgpO1xuXG4vKioqLyB9LFxuLyogMSAqLyxcbi8qIDIgKi9cbi8qKiovIGZ1
bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ug
c3RyaWN0Jztcblx0XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1
bGVcIiwge1xuXHQgICAgdmFsdWU6IHRydWVcblx0fSk7XG5cdFxuXHR2YXIgX1RvZG9zID0gX193
ZWJwYWNrX3JlcXVpcmVfXyg3KTtcblx0XG5cdHZhciBfVG9kb3MyID0gX2ludGVyb3BSZXF1aXJl
RGVmYXVsdChfVG9kb3MpO1xuXHRcblx0ZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChv
YmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2Jq
IH07IH1cblx0XG5cdGV4cG9ydHMuZGVmYXVsdCA9IHtcblx0ICAgIG5hbWU6ICdhcHAnLFxuXHQg
ICAgY29tcG9uZW50czoge1xuXHQgICAgICAgIFRvZG9zOiBfVG9kb3MyLmRlZmF1bHRcblx0ICAg
IH1cblx0fTtcblxuLyoqKi8gfSxcbi8qIDMgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhw
b3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdE9i
amVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuXHQgICAgdmFs
dWU6IHRydWVcblx0fSk7XG5cdFxuXHR2YXIgX3Z1ZSA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7
XG5cdFxuXHR2YXIgX3Z1ZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF92dWUpO1xuXHRcblx0
ZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmou
X19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblx0XG5cdGV4cG9ydHMuZGVm
YXVsdCA9IHtcblx0ICAgIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG5cdCAgICAgICAgcmV0dXJu
IHtcblx0ICAgICAgICAgICAgdG9kb3M6IFtdLFxuXHQgICAgICAgICAgICBuZXdUb2RvOiAnJyxc
blx0ICAgICAgICAgICAgZmlsdGVyOiAnYWxsJyxcblx0ICAgICAgICAgICAgYWxsRG9uZTogZmFs
c2UsXG5cdCAgICAgICAgICAgIGVkaXRpbmc6IG51bGxcblx0ICAgICAgICB9O1xuXHQgICAgfSxc
blx0XG5cdCAgICBmaWx0ZXJzOiB7XG5cdCAgICAgICAgcGx1cmFsaXplOiBmdW5jdGlvbiBwbHVy
YWxpemUobikge1xuXHQgICAgICAgICAgICByZXR1cm4gbiA9PT0gMSA/ICdpdGVtJyA6ICdpdGVt
cyc7XG5cdCAgICAgICAgfVxuXHQgICAgfSxcblx0ICAgIGRpcmVjdGl2ZXM6IHtcblx0ICAgICAg
ICB0b2RvRm9jdXM6IGZ1bmN0aW9uIHRvZG9Gb2N1cyhlbCwgdmFsdWUpIHtcblx0ICAgICAgICAg
ICAgaWYgKHZhbHVlKSB7XG5cdCAgICAgICAgICAgICAgICBfdnVlMi5kZWZhdWx0Lm5leHRUaWNr
KGZ1bmN0aW9uIChfKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgZWwuZm9jdXMoKTtcblx0ICAg
ICAgICAgICAgICAgIH0pO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgfSxc
blx0ICAgIG1ldGhvZHM6IHtcblx0ICAgICAgICBhZGRUb2RvOiBmdW5jdGlvbiBhZGRUb2RvKCkg
e1xuXHQgICAgICAgICAgICB0aGlzLnRvZG9zLnB1c2goe1xuXHQgICAgICAgICAgICAgICAgY29t
cGxldGVkOiBmYWxzZSxcblx0ICAgICAgICAgICAgICAgIHRpdGxlOiB0aGlzLm5ld1RvZG9cblx0
ICAgICAgICAgICAgfSk7XG5cdCAgICAgICAgICAgIHRoaXMubmV3VG9kbyA9ICcnO1xuXHQgICAg
ICAgIH0sXG5cdCAgICAgICAgZGVsZXRlVG9kbzogZnVuY3Rpb24gZGVsZXRlVG9kbyh0b2RvKSB7
XG5cdCAgICAgICAgICAgIHRoaXMudG9kb3MgPSB0aGlzLnRvZG9zLmZpbHRlcihmdW5jdGlvbiAo
dCkge1xuXHQgICAgICAgICAgICAgICAgcmV0dXJuIHQgIT09IHRvZG87XG5cdCAgICAgICAgICAg
IH0pO1xuXHQgICAgICAgIH0sXG5cdCAgICAgICAgZGVsZXRlQ29tcGxldGVkOiBmdW5jdGlvbiBk
ZWxldGVDb21wbGV0ZWQoKSB7XG5cdCAgICAgICAgICAgIHRoaXMudG9kb3MgPSB0aGlzLnRvZG9z
LmZpbHRlcihmdW5jdGlvbiAodG9kbykge1xuXHQgICAgICAgICAgICAgICAgcmV0dXJuICF0b2Rv
LmNvbXBsZXRlZDtcblx0ICAgICAgICAgICAgfSk7XG5cdCAgICAgICAgfSxcblx0ICAgICAgICBl
ZGl0VG9kbzogZnVuY3Rpb24gZWRpdFRvZG8odG9kbykge1xuXHQgICAgICAgICAgICB0aGlzLmVk
aXRpbmcgPSB0b2RvO1xuXHQgICAgICAgIH0sXG5cdCAgICAgICAgZG9uZUVkaXQ6IGZ1bmN0aW9u
IGRvbmVFZGl0KCkge1xuXHQgICAgICAgICAgICB0aGlzLmVkaXRpbmcgPSBudWxsO1xuXHQgICAg
ICAgIH1cblx0ICAgIH0sXG5cdCAgICBjb21wdXRlZDoge1xuXHQgICAgICAgIHJlbWFpbmluZzog
ZnVuY3Rpb24gcmVtYWluaW5nKCkge1xuXHQgICAgICAgICAgICByZXR1cm4gdGhpcy50b2Rvcy5m
aWx0ZXIoZnVuY3Rpb24gKHRvZG8pIHtcblx0ICAgICAgICAgICAgICAgIHJldHVybiAhdG9kby5j
b21wbGV0ZWQ7XG5cdCAgICAgICAgICAgIH0pLmxlbmd0aDtcblx0ICAgICAgICB9LFxuXHQgICAg
ICAgIGNvbXBsZXRlZDogZnVuY3Rpb24gY29tcGxldGVkKCkge1xuXHQgICAgICAgICAgICByZXR1
cm4gdGhpcy50b2Rvcy5maWx0ZXIoZnVuY3Rpb24gKHRvZG8pIHtcblx0ICAgICAgICAgICAgICAg
IHJldHVybiB0b2RvLmNvbXBsZXRlZDtcblx0ICAgICAgICAgICAgfSkubGVuZ3RoO1xuXHQgICAg
ICAgIH0sXG5cdCAgICAgICAgZmlsdGVyZWRUb2RvczogZnVuY3Rpb24gZmlsdGVyZWRUb2Rvcygp
IHtcblx0ICAgICAgICAgICAgaWYgKHRoaXMuZmlsdGVyID09PSAnYWN0aXZlJykge1xuXHQgICAg
ICAgICAgICAgICAgcmV0dXJuIHRoaXMudG9kb3MuZmlsdGVyKGZ1bmN0aW9uICh0b2RvKSB7XG5c
dCAgICAgICAgICAgICAgICAgICAgcmV0dXJuICF0b2RvLmNvbXBsZXRlZDtcblx0ICAgICAgICAg
ICAgICAgIH0pO1xuXHQgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZmlsdGVyID09PSAnY29t
cGxldGVkJykge1xuXHQgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudG9kb3MuZmlsdGVyKGZ1
bmN0aW9uICh0b2RvKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRvZG8uY29tcGxl
dGVkO1xuXHQgICAgICAgICAgICAgICAgfSk7XG5cdCAgICAgICAgICAgIH1cblx0XG5cdCAgICAg
ICAgICAgIHJldHVybiB0aGlzLnRvZG9zO1xuXHQgICAgICAgIH0sXG5cdFxuXHQgICAgICAgIGFs
bERvbmU6IHtcblx0ICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG5cdCAgICAgICAg
ICAgICAgICByZXR1cm4gdGhpcy5yZW1haW5pbmcgPT09IDA7XG5cdCAgICAgICAgICAgIH0sXG5c
dCAgICAgICAgICAgIHNldDogZnVuY3Rpb24gc2V0KHZhbHVlKSB7XG5cdCAgICAgICAgICAgICAg
ICB0aGlzLnRvZG9zLmZvckVhY2goZnVuY3Rpb24gKHRvZG8pIHtcblx0ICAgICAgICAgICAgICAg
ICAgICB0b2RvLmNvbXBsZXRlZCA9IHZhbHVlO1xuXHQgICAgICAgICAgICAgICAgfSk7XG5cdCAg
ICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdCAgICB9XG5cdH07XG5cbi8qKiovIH0sXG4vKiA0
ICovLFxuLyogNSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0Ly8g
cmVtb3ZlZCBieSBleHRyYWN0LXRleHQtd2VicGFjay1wbHVnaW5cblxuLyoqKi8gfSxcbi8qIDYg
Ki9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykg
e1xuXG5cdHZhciBfX3Z1ZV9leHBvcnRzX18sIF9fdnVlX29wdGlvbnNfX1xuXHR2YXIgX192dWVf
c3R5bGVzX18gPSB7fVxuXHRcblx0Lyogc2NyaXB0ICovXG5cdF9fdnVlX2V4cG9ydHNfXyA9IF9f
d2VicGFja19yZXF1aXJlX18oMilcblx0XG5cdC8qIHRlbXBsYXRlICovXG5cdHZhciBfX3Z1ZV90
ZW1wbGF0ZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4KVxuXHRfX3Z1ZV9vcHRpb25zX18gPSBf
X3Z1ZV9leHBvcnRzX18gPSBfX3Z1ZV9leHBvcnRzX18gfHwge31cblx0aWYgKFxuXHQgIHR5cGVv
ZiBfX3Z1ZV9leHBvcnRzX18uZGVmYXVsdCA9PT0gXCJvYmplY3RcIiB8fFxuXHQgIHR5cGVvZiBf
X3Z1ZV9leHBvcnRzX18uZGVmYXVsdCA9PT0gXCJmdW5jdGlvblwiXG5cdCkge1xuXHRfX3Z1ZV9v
cHRpb25zX18gPSBfX3Z1ZV9leHBvcnRzX18gPSBfX3Z1ZV9leHBvcnRzX18uZGVmYXVsdFxuXHR9
XG5cdGlmICh0eXBlb2YgX192dWVfb3B0aW9uc19fID09PSBcImZ1bmN0aW9uXCIpIHtcblx0ICBf
X3Z1ZV9vcHRpb25zX18gPSBfX3Z1ZV9vcHRpb25zX18ub3B0aW9uc1xuXHR9XG5cdFxuXHRfX3Z1
ZV9vcHRpb25zX18ucmVuZGVyID0gX192dWVfdGVtcGxhdGVfXy5yZW5kZXJcblx0X192dWVfb3B0
aW9uc19fLnN0YXRpY1JlbmRlckZucyA9IF9fdnVlX3RlbXBsYXRlX18uc3RhdGljUmVuZGVyRm5z
XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IF9fdnVlX2V4cG9ydHNfX1xuXG5cbi8qKiovIH0sXG4v
KiA3ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJl
X18pIHtcblxuXHR2YXIgX192dWVfZXhwb3J0c19fLCBfX3Z1ZV9vcHRpb25zX19cblx0dmFyIF9f
dnVlX3N0eWxlc19fID0ge31cblx0XG5cdC8qIHN0eWxlcyAqL1xuXHRfX3dlYnBhY2tfcmVxdWly
ZV9fKDUpXG5cdFxuXHQvKiBzY3JpcHQgKi9cblx0X192dWVfZXhwb3J0c19fID0gX193ZWJwYWNr
X3JlcXVpcmVfXygzKVxuXHRcblx0LyogdGVtcGxhdGUgKi9cblx0dmFyIF9fdnVlX3RlbXBsYXRl
X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkpXG5cdF9fdnVlX29wdGlvbnNfXyA9IF9fdnVlX2V4
cG9ydHNfXyA9IF9fdnVlX2V4cG9ydHNfXyB8fCB7fVxuXHRpZiAoXG5cdCAgdHlwZW9mIF9fdnVl
X2V4cG9ydHNfXy5kZWZhdWx0ID09PSBcIm9iamVjdFwiIHx8XG5cdCAgdHlwZW9mIF9fdnVlX2V4
cG9ydHNfXy5kZWZhdWx0ID09PSBcImZ1bmN0aW9uXCJcblx0KSB7XG5cdF9fdnVlX29wdGlvbnNf
XyA9IF9fdnVlX2V4cG9ydHNfXyA9IF9fdnVlX2V4cG9ydHNfXy5kZWZhdWx0XG5cdH1cblx0aWYg
KHR5cGVvZiBfX3Z1ZV9vcHRpb25zX18gPT09IFwiZnVuY3Rpb25cIikge1xuXHQgIF9fdnVlX29w
dGlvbnNfXyA9IF9fdnVlX29wdGlvbnNfXy5vcHRpb25zXG5cdH1cblx0XG5cdF9fdnVlX29wdGlv
bnNfXy5yZW5kZXIgPSBfX3Z1ZV90ZW1wbGF0ZV9fLnJlbmRlclxuXHRfX3Z1ZV9vcHRpb25zX18u
c3RhdGljUmVuZGVyRm5zID0gX192dWVfdGVtcGxhdGVfXy5zdGF0aWNSZW5kZXJGbnNcblx0XG5c
dG1vZHVsZS5leHBvcnRzID0gX192dWVfZXhwb3J0c19fXG5cblxuLyoqKi8gfSxcbi8qIDggKi9c
bi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdG1vZHVsZS5leHBvcnRzPXty
ZW5kZXI6ZnVuY3Rpb24gKCl7dmFyIF92bT10aGlzO3ZhciBfaD1fdm0uJGNyZWF0ZUVsZW1lbnQ7
XG5cdCAgcmV0dXJuIF9oKCdkaXYnLCB7XG5cdCAgICBhdHRyczoge1xuXHQgICAgICBcImlkXCI6
IFwiYXBwXCJcblx0ICAgIH1cblx0ICB9LCBbX2goJ1RvZG9zJyldKVxuXHR9LHN0YXRpY1JlbmRl
ckZuczogW119XG5cbi8qKiovIH0sXG4vKiA5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4
cG9ydHMpIHtcblxuXHRtb2R1bGUuZXhwb3J0cz17cmVuZGVyOmZ1bmN0aW9uICgpe3ZhciBfdm09
dGhpczt2YXIgX2g9X3ZtLiRjcmVhdGVFbGVtZW50O1xuXHQgIHJldHVybiBfaCgnc2VjdGlvbics
IHtcblx0ICAgIHN0YXRpY0NsYXNzOiBcInRvZG9hcHBcIlxuXHQgIH0sIFtfaCgnaGVhZGVyJywg
e1xuXHQgICAgc3RhdGljQ2xhc3M6IFwiaGVhZGVyXCJcblx0ICB9LCBbX2goJ2gxJywgW1wiVG9k
b3NcIl0pLCBcIiBcIiwgX2goJ2lucHV0Jywge1xuXHQgICAgZGlyZWN0aXZlczogW3tcblx0ICAg
ICAgbmFtZTogXCJtb2RlbFwiLFxuXHQgICAgICByYXdOYW1lOiBcInYtbW9kZWxcIixcblx0ICAg
ICAgdmFsdWU6IChfdm0ubmV3VG9kbyksXG5cdCAgICAgIGV4cHJlc3Npb246IFwibmV3VG9kb1wi
XG5cdCAgICB9XSxcblx0ICAgIHN0YXRpY0NsYXNzOiBcIm5ldy10b2RvXCIsXG5cdCAgICBhdHRy
czoge1xuXHQgICAgICBcInR5cGVcIjogXCJ0ZXh0XCIsXG5cdCAgICAgIFwiYXV0b2ZvY3VzXCI6
IFwiXCIsXG5cdCAgICAgIFwiYXV0b2NvbXBsZXRlXCI6IFwib2ZmXCIsXG5cdCAgICAgIFwicGxh
Y2Vob2xkZXJcIjogXCJXaGF0IG5lZWRzIHRvIGJlIGRvbmU/XCJcblx0ICAgIH0sXG5cdCAgICBk
b21Qcm9wczoge1xuXHQgICAgICBcInZhbHVlXCI6IF92bS5fcyhfdm0ubmV3VG9kbylcblx0ICAg
IH0sXG5cdCAgICBvbjoge1xuXHQgICAgICBcImtleXVwXCI6IGZ1bmN0aW9uKCRldmVudCkge1xu
XHQgICAgICAgIGlmICgkZXZlbnQua2V5Q29kZSAhPT0gMTMpIHsgcmV0dXJuOyB9XG5cdCAgICAg
ICAgX3ZtLmFkZFRvZG8oJGV2ZW50KVxuXHQgICAgICB9LFxuXHQgICAgICBcImlucHV0XCI6IGZ1
bmN0aW9uKCRldmVudCkge1xuXHQgICAgICAgIGlmICgkZXZlbnQudGFyZ2V0LmNvbXBvc2luZykg
eyByZXR1cm47IH1cblx0ICAgICAgICBfdm0ubmV3VG9kbyA9ICRldmVudC50YXJnZXQudmFsdWVc
blx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH0pXSksIFwiIFwiLCBfaCgnc2VjdGlvbicsIHtcblx0
ICAgIGRpcmVjdGl2ZXM6IFt7XG5cdCAgICAgIG5hbWU6IFwic2hvd1wiLFxuXHQgICAgICByYXdO
YW1lOiBcInYtc2hvd1wiLFxuXHQgICAgICB2YWx1ZTogKF92bS50b2Rvcy5sZW5ndGgpLFxuXHQg
ICAgICBleHByZXNzaW9uOiBcInRvZG9zLmxlbmd0aFwiXG5cdCAgICB9XSxcblx0ICAgIHN0YXRp
Y0NsYXNzOiBcIm1haW5cIlxuXHQgIH0sIFtfaCgnaW5wdXQnLCB7XG5cdCAgICBkaXJlY3RpdmVz
OiBbe1xuXHQgICAgICBuYW1lOiBcIm1vZGVsXCIsXG5cdCAgICAgIHJhd05hbWU6IFwidi1tb2Rl
bFwiLFxuXHQgICAgICB2YWx1ZTogKF92bS5hbGxEb25lKSxcblx0ICAgICAgZXhwcmVzc2lvbjog
XCJhbGxEb25lXCJcblx0ICAgIH1dLFxuXHQgICAgc3RhdGljQ2xhc3M6IFwidG9nZ2xlLWFsbFwi
LFxuXHQgICAgYXR0cnM6IHtcblx0ICAgICAgXCJ0eXBlXCI6IFwiY2hlY2tib3hcIlxuXHQgICAg
fSxcblx0ICAgIGRvbVByb3BzOiB7XG5cdCAgICAgIFwiY2hlY2tlZFwiOiBBcnJheS5pc0FycmF5
KF92bS5hbGxEb25lKSA/IF92bS5faShfdm0uYWxsRG9uZSwgbnVsbCkgPiAtMSA6IF92bS5fcShf
dm0uYWxsRG9uZSwgdHJ1ZSlcblx0ICAgIH0sXG5cdCAgICBvbjoge1xuXHQgICAgICBcImNoYW5n
ZVwiOiBmdW5jdGlvbigkZXZlbnQpIHtcblx0ICAgICAgICB2YXIgJCRhID0gX3ZtLmFsbERvbmUs
XG5cdCAgICAgICAgICAkJGVsID0gJGV2ZW50LnRhcmdldCxcblx0ICAgICAgICAgICQkYyA9ICQk
ZWwuY2hlY2tlZCA/ICh0cnVlKSA6IChmYWxzZSk7XG5cdCAgICAgICAgaWYgKEFycmF5LmlzQXJy
YXkoJCRhKSkge1xuXHQgICAgICAgICAgdmFyICQkdiA9IG51bGwsXG5cdCAgICAgICAgICAgICQk
aSA9IF92bS5faSgkJGEsICQkdik7XG5cdCAgICAgICAgICBpZiAoJCRjKSB7XG5cdCAgICAgICAg
ICAgICQkaSA8IDAgJiYgKF92bS5hbGxEb25lID0gJCRhLmNvbmNhdCgkJHYpKVxuXHQgICAgICAg
ICAgfSBlbHNlIHtcblx0ICAgICAgICAgICAgJCRpID4gLTEgJiYgKF92bS5hbGxEb25lID0gJCRh
LnNsaWNlKDAsICQkaSkuY29uY2F0KCQkYS5zbGljZSgkJGkgKyAxKSkpXG5cdCAgICAgICAgICB9
XG5cdCAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgIF92bS5hbGxEb25lID0gJCRjXG5cdCAg
ICAgICAgfVxuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfSksIFwiIFwiLCBfaCgndWwnLCB7XG5c
dCAgICBzdGF0aWNDbGFzczogXCJ0b2RvLWxpc3RcIlxuXHQgIH0sIFtfdm0uX2woKF92bS5maWx0
ZXJlZFRvZG9zKSwgZnVuY3Rpb24odG9kbykge1xuXHQgICAgcmV0dXJuIF9oKCdsaScsIHtcblx0
ICAgICAgc3RhdGljQ2xhc3M6IFwidG9kb1wiLFxuXHQgICAgICBjbGFzczoge1xuXHQgICAgICAg
IGNvbXBsZXRlZDogdG9kby5jb21wbGV0ZWQsIGVkaXRpbmc6IHRvZG8gPT09IF92bS5lZGl0aW5n
XG5cdCAgICAgIH1cblx0ICAgIH0sIFtfaCgnZGl2Jywge1xuXHQgICAgICBzdGF0aWNDbGFzczog
XCJ2aWV3XCJcblx0ICAgIH0sIFtfaCgnaW5wdXQnLCB7XG5cdCAgICAgIGRpcmVjdGl2ZXM6IFt7
XG5cdCAgICAgICAgbmFtZTogXCJtb2RlbFwiLFxuXHQgICAgICAgIHJhd05hbWU6IFwidi1tb2Rl
bFwiLFxuXHQgICAgICAgIHZhbHVlOiAodG9kby5jb21wbGV0ZWQpLFxuXHQgICAgICAgIGV4cHJl
c3Npb246IFwidG9kby5jb21wbGV0ZWRcIlxuXHQgICAgICB9XSxcblx0ICAgICAgc3RhdGljQ2xh
c3M6IFwidG9nZ2xlXCIsXG5cdCAgICAgIGF0dHJzOiB7XG5cdCAgICAgICAgXCJ0eXBlXCI6IFwi
Y2hlY2tib3hcIlxuXHQgICAgICB9LFxuXHQgICAgICBkb21Qcm9wczoge1xuXHQgICAgICAgIFwi
Y2hlY2tlZFwiOiBBcnJheS5pc0FycmF5KHRvZG8uY29tcGxldGVkKSA/IF92bS5faSh0b2RvLmNv
bXBsZXRlZCwgbnVsbCkgPiAtMSA6IF92bS5fcSh0b2RvLmNvbXBsZXRlZCwgdHJ1ZSlcblx0ICAg
ICAgfSxcblx0ICAgICAgb246IHtcblx0ICAgICAgICBcImNoYW5nZVwiOiBmdW5jdGlvbigkZXZl
bnQpIHtcblx0ICAgICAgICAgIHZhciAkJGEgPSB0b2RvLmNvbXBsZXRlZCxcblx0ICAgICAgICAg
ICAgJCRlbCA9ICRldmVudC50YXJnZXQsXG5cdCAgICAgICAgICAgICQkYyA9ICQkZWwuY2hlY2tl
ZCA/ICh0cnVlKSA6IChmYWxzZSk7XG5cdCAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSgkJGEp
KSB7XG5cdCAgICAgICAgICAgIHZhciAkJHYgPSBudWxsLFxuXHQgICAgICAgICAgICAgICQkaSA9
IF92bS5faSgkJGEsICQkdik7XG5cdCAgICAgICAgICAgIGlmICgkJGMpIHtcblx0ICAgICAgICAg
ICAgICAkJGkgPCAwICYmICh0b2RvLmNvbXBsZXRlZCA9ICQkYS5jb25jYXQoJCR2KSlcblx0ICAg
ICAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgICAgICAkJGkgPiAtMSAmJiAodG9kby5jb21w
bGV0ZWQgPSAkJGEuc2xpY2UoMCwgJCRpKS5jb25jYXQoJCRhLnNsaWNlKCQkaSArIDEpKSlcblx0
ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgICAgdG9kby5j
b21wbGV0ZWQgPSAkJGNcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0
ICAgIH0pLCBcIiBcIiwgX2goJ2xhYmVsJywge1xuXHQgICAgICBvbjoge1xuXHQgICAgICAgIFwi
ZGJsY2xpY2tcIjogZnVuY3Rpb24oJGV2ZW50KSB7XG5cdCAgICAgICAgICBfdm0uZWRpdFRvZG8o
dG9kbylcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgIH0sIFtfdm0uX3ModG9kby50aXRs
ZSldKSwgXCIgXCIsIF9oKCdidXR0b24nLCB7XG5cdCAgICAgIHN0YXRpY0NsYXNzOiBcImRlc3Ry
b3lcIixcblx0ICAgICAgb246IHtcblx0ICAgICAgICBcImNsaWNrXCI6IGZ1bmN0aW9uKCRldmVu
dCkge1xuXHQgICAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdCAgICAgICAgICBf
dm0uZGVsZXRlVG9kbyh0b2RvKVxuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgfSldKSwg
XCIgXCIsIF9oKCdpbnB1dCcsIHtcblx0ICAgICAgZGlyZWN0aXZlczogW3tcblx0ICAgICAgICBu
YW1lOiBcIm1vZGVsXCIsXG5cdCAgICAgICAgcmF3TmFtZTogXCJ2LW1vZGVsXCIsXG5cdCAgICAg
ICAgdmFsdWU6ICh0b2RvLnRpdGxlKSxcblx0ICAgICAgICBleHByZXNzaW9uOiBcInRvZG8udGl0
bGVcIlxuXHQgICAgICB9LCB7XG5cdCAgICAgICAgbmFtZTogXCJ0b2RvRm9jdXNcIixcblx0ICAg
ICAgICByYXdOYW1lOiBcInYtdG9kb0ZvY3VzXCIsXG5cdCAgICAgICAgdmFsdWU6ICh0b2RvID09
PSBfdm0uZWRpdGluZyksXG5cdCAgICAgICAgZXhwcmVzc2lvbjogXCJ0b2RvID09PSBlZGl0aW5n
XCJcblx0ICAgICAgfV0sXG5cdCAgICAgIHN0YXRpY0NsYXNzOiBcImVkaXRcIixcblx0ICAgICAg
YXR0cnM6IHtcblx0ICAgICAgICBcInR5cGVcIjogXCJ0ZXh0XCJcblx0ICAgICAgfSxcblx0ICAg
ICAgZG9tUHJvcHM6IHtcblx0ICAgICAgICBcInZhbHVlXCI6IF92bS5fcyh0b2RvLnRpdGxlKVxu
XHQgICAgICB9LFxuXHQgICAgICBvbjoge1xuXHQgICAgICAgIFwia2V5dXBcIjogZnVuY3Rpb24o
JGV2ZW50KSB7XG5cdCAgICAgICAgICBpZiAoJGV2ZW50LmtleUNvZGUgIT09IDEzKSB7IHJldHVy
bjsgfVxuXHQgICAgICAgICAgX3ZtLmRvbmVFZGl0KCRldmVudClcblx0ICAgICAgICB9LFxuXHQg
ICAgICAgIFwiYmx1clwiOiBfdm0uZG9uZUVkaXQsXG5cdCAgICAgICAgXCJpbnB1dFwiOiBmdW5j
dGlvbigkZXZlbnQpIHtcblx0ICAgICAgICAgIGlmICgkZXZlbnQudGFyZ2V0LmNvbXBvc2luZykg
eyByZXR1cm47IH1cblx0ICAgICAgICAgIHRvZG8udGl0bGUgPSAkZXZlbnQudGFyZ2V0LnZhbHVl
XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICB9KV0pXG5cdCAgfSldKSwgXCIgXCIsIFwi
IFwiLCBfaCgnZm9vdGVyJywge1xuXHQgICAgZGlyZWN0aXZlczogW3tcblx0ICAgICAgbmFtZTog
XCJzaG93XCIsXG5cdCAgICAgIHJhd05hbWU6IFwidi1zaG93XCIsXG5cdCAgICAgIHZhbHVlOiAo
X3ZtLnRvZG9zLmxlbmd0aCA+IDApLFxuXHQgICAgICBleHByZXNzaW9uOiBcInRvZG9zLmxlbmd0
aCA+IDBcIlxuXHQgICAgfV0sXG5cdCAgICBzdGF0aWNDbGFzczogXCJmb290ZXJcIlxuXHQgIH0s
IFtfaCgnc3BhbicsIHtcblx0ICAgIHN0YXRpY0NsYXNzOiBcInRvZG8tY291bnRcIlxuXHQgIH0s
IFtfaCgnc3Ryb25nJywgW192bS5fcyhfdm0ucmVtYWluaW5nKV0pLCBcIiBcIiArIF92bS5fcyhf
dm0uX2YoXCJwbHVyYWxpemVcIikoX3ZtLnJlbWFpbmluZykpICsgXCIgbGVmdFxcbiAgICAgICAg
XCJdKSwgXCIgXCIsIF9oKCd1bCcsIHtcblx0ICAgIHN0YXRpY0NsYXNzOiBcImZpbHRlcnNcIlxu
XHQgIH0sIFtfaCgnbGknLCBbX2goJ2EnLCB7XG5cdCAgICBjbGFzczoge1xuXHQgICAgICBzZWxl
Y3RlZDogX3ZtLmZpbHRlciA9PSAnYWxsJ1xuXHQgICAgfSxcblx0ICAgIGF0dHJzOiB7XG5cdCAg
ICAgIFwiaHJlZlwiOiBcIiMvYWxsXCJcblx0ICAgIH0sXG5cdCAgICBvbjoge1xuXHQgICAgICBc
ImNsaWNrXCI6IGZ1bmN0aW9uKCRldmVudCkge1xuXHQgICAgICAgIF92bS5maWx0ZXIgPSAnYWxs
J1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfSwgW1wiQWxsXCJdKV0pLCBcIiBcIiwgX2goJ2xp
JywgW19oKCdhJywge1xuXHQgICAgY2xhc3M6IHtcblx0ICAgICAgc2VsZWN0ZWQ6IF92bS5maWx0
ZXIgPT0gJ2FjdGl2ZSdcblx0ICAgIH0sXG5cdCAgICBhdHRyczoge1xuXHQgICAgICBcImhyZWZc
IjogXCIjL2FjdGl2ZVwiXG5cdCAgICB9LFxuXHQgICAgb246IHtcblx0ICAgICAgXCJjbGlja1wi
OiBmdW5jdGlvbigkZXZlbnQpIHtcblx0ICAgICAgICBfdm0uZmlsdGVyID0gJ2FjdGl2ZSdcblx0
ICAgICAgfVxuXHQgICAgfVxuXHQgIH0sIFtcIkFjdGl2ZVwiXSldKSwgXCIgXCIsIF9oKCdsaScs
IFtfaCgnYScsIHtcblx0ICAgIGNsYXNzOiB7XG5cdCAgICAgIHNlbGVjdGVkOiBfdm0uZmlsdGVy
ID09ICdjb21wbGV0ZWQnXG5cdCAgICB9LFxuXHQgICAgYXR0cnM6IHtcblx0ICAgICAgXCJocmVm
XCI6IFwiIy9jb21wbGV0ZWRcIlxuXHQgICAgfSxcblx0ICAgIG9uOiB7XG5cdCAgICAgIFwiY2xp
Y2tcIjogZnVuY3Rpb24oJGV2ZW50KSB7XG5cdCAgICAgICAgX3ZtLmZpbHRlciA9ICdjb21wbGV0
ZWQnXG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9LCBbXCJDb21wbGV0ZWRcIl0pXSldKSwgXCIg
XCIsIF9oKCdidXR0b24nLCB7XG5cdCAgICBkaXJlY3RpdmVzOiBbe1xuXHQgICAgICBuYW1lOiBc
InNob3dcIixcblx0ICAgICAgcmF3TmFtZTogXCJ2LXNob3dcIixcblx0ICAgICAgdmFsdWU6IChf
dm0uY29tcGxldGVkKSxcblx0ICAgICAgZXhwcmVzc2lvbjogXCJjb21wbGV0ZWRcIlxuXHQgICAg
fV0sXG5cdCAgICBzdGF0aWNDbGFzczogXCJjbGVhci1jb21wbGV0ZWRcIixcblx0ICAgIG9uOiB7
XG5cdCAgICAgIFwiY2xpY2tcIjogZnVuY3Rpb24oJGV2ZW50KSB7XG5cdCAgICAgICAgJGV2ZW50
LnByZXZlbnREZWZhdWx0KCk7XG5cdCAgICAgICAgX3ZtLmRlbGV0ZUNvbXBsZXRlZCgkZXZlbnQp
XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9LCBbXCJDbGVhciBDb21wbGV0ZWRcIl0pXSldKV0p
XG5cdH0sc3RhdGljUmVuZGVyRm5zOiBbXX1cblxuLyoqKi8gfVxuXSk7XG5cblxuLy8gV0VCUEFD
SyBGT09URVIgLy9cbi8vIHN0YXRpYy9qcy9hcHAuYjBlODM1ODc0YmM4OTQ5NjcwZDEuanMiLCIv
LyBUaGUgVnVlIGJ1aWxkIHZlcnNpb24gdG8gbG9hZCB3aXRoIHRoZSBgaW1wb3J0YCBjb21tYW5k
XG4vLyAocnVudGltZS1vbmx5IG9yIHN0YW5kYWxvbmUpIGhhcyBiZWVuIHNldCBpbiB3ZWJwYWNr
LmJhc2UuY29uZiB3aXRoIGFuIGFsaWFzLlxuaW1wb3J0IFZ1ZSBmcm9tICd2dWUnXG5pbXBvcnQg
QXBwIGZyb20gJy4vQXBwJ1xuaW1wb3J0IERpcmVjdG9yIGZyb20gJ2RpcmVjdG9yL2J1aWxkL2Rp
cmVjdG9yJ1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1uZXcgKi9cbndpbmRvdy5WdWVBcHAgPSBu
ZXcgVnVlKHtcbiAgICBlbDogJyNhcHAnLFxuICAgIHJlbmRlcjogaCA9PiBoKEFwcClcbn0pXG5c
bmNvbnN0IHJvdXRlciA9IG5ldyBEaXJlY3Rvci5Sb3V0ZXIoKTtcblxuWydhbGwnLCAnYWN0aXZl
JywgJ2NvbXBsZXRlZCddLmZvckVhY2godmlzaWJpbGl0eSA9PiB7XG4gIHJvdXRlci5vbih2aXNp
YmlsaXR5LCAoKSA9PiB7XG4gICAgd2luZG93LlZ1ZUFwcC5maWx0ZXIgPSB2aXNpYmlsaXR5O1xu
ICB9KTtcbn0pO1xuXG5yb3V0ZXIuY29uZmlndXJlKHtcbiAgbm90Zm91bmQ6IGZ1bmN0aW9uICgp
IHtcbiAgICB3aW5kb3cubG9jYXRpb24uaGFzaCA9ICcnO1xuICAgIHdpbmRvdy5WdWVBcHAuZmls
dGVyID0gJ2FsbCc7XG4gIH1cbn0pO1xuXG5yb3V0ZXIuaW5pdCgpO1xuXG5cbi8vIFdFQlBBQ0sg
Rk9PVEVSIC8vXG4vLyAuL3NyYy9tYWluLmpzIiwiPHRlbXBsYXRlPlxuICA8ZGl2IGlkPVwiYXBw
XCI+XG4gICAgPFRvZG9zPjwvVG9kb3M+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlw
dD5cbmltcG9ydCBUb2RvcyBmcm9tICcuL2NvbXBvbmVudHMvVG9kb3MnXG5cbmV4cG9ydCBkZWZh
dWx0IHtcbiAgICBuYW1lOiAnYXBwJyxcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIFRvZG9z
XG4gICAgfVxufVxuPC9zY3JpcHQ+XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gQXBw
LnZ1ZT83MWE0ZTUxOSIsIjx0ZW1wbGF0ZT5cbiAgICA8c2VjdGlvbiBjbGFzcz1cInRvZG9hcHBc
Ij5cbiAgICAgICAgPGhlYWRlciBjbGFzcz1cImhlYWRlclwiPlxuICAgICAgICAgICAgPGgxPlRv
ZG9zPC9oMT5cbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwibmV3LXRv
ZG9cIiBhdXRvZm9jdXMgYXV0b2NvbXBsZXRlPVwib2ZmXCIgcGxhY2Vob2xkZXI9XCJXaGF0IG5l
ZWRzIHRvIGJlIGRvbmU/XCIgdi1tb2RlbD1cIm5ld1RvZG9cIiBAa2V5dXAuZW50ZXI9XCJhZGRU
b2RvXCIgLz5cbiAgICAgICAgPC9oZWFkZXI+XG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwibWFp
blwiIHYtc2hvdz1cInRvZG9zLmxlbmd0aFwiIHYtY2xvYWs+XG4gICAgICAgICAgICA8aW5wdXQg
dHlwZT1cImNoZWNrYm94XCIgY2xhc3M9XCJ0b2dnbGUtYWxsXCIgdi1tb2RlbD1cImFsbERvbmVc
Ij5cbiAgICAgICAgICAgIDx1bCBjbGFzcz1cInRvZG8tbGlzdFwiPlxuICAgICAgICAgICAgICAg
IDxsaSBjbGFzcz1cInRvZG9cIiB2LWZvcj1cInRvZG8gaW4gZmlsdGVyZWRUb2Rvc1wiIDpjbGFz
cz1cIntjb21wbGV0ZWQgOiB0b2RvLmNvbXBsZXRlZCwgZWRpdGluZyA6IHRvZG8gPT09IGVkaXRp
bmcgfVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmlld1wiPlxuICAgICAg
ICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIHYtbW9kZWw9XCJ0b2Rv
LmNvbXBsZXRlZFwiIGNsYXNzPVwidG9nZ2xlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8
bGFiZWwgQGRibGNsaWNrPVwiZWRpdFRvZG8odG9kbylcIj57eyB0b2RvLnRpdGxlIH19PC9sYWJl
bD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkZXN0cm95XCIgQGNs
aWNrLnByZXZlbnQ9XCJkZWxldGVUb2RvKHRvZG8pXCI+PC9idXR0b24+XG4gICAgICAgICAgICAg
ICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBj
bGFzcz1cImVkaXRcIiB2LW1vZGVsPVwidG9kby50aXRsZVwiIEBrZXl1cC5lbnRlcj1cImRvbmVF
ZGl0XCIgQGJsdXI9XCJkb25lRWRpdFwiIHYtdG9kb0ZvY3VzPVwidG9kbyA9PT0gZWRpdGluZ1wi
PjwvaW5wdXQ+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAg
ICAgIDwvZGl2PlxuICAgICAgICA8Zm9vdGVyIGNsYXNzPVwiZm9vdGVyXCIgdi1zaG93PVwidG9k
b3MubGVuZ3RoID4gMFwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0b2RvLWNvdW50XCI+
XG4gICAgICAgICAgICA8c3Ryb25nPnt7IHJlbWFpbmluZyB9fTwvc3Ryb25nPiB7eyByZW1haW5p
bmcgfCBwbHVyYWxpemUgfX0gbGVmdFxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAg
PHVsIGNsYXNzPVwiZmlsdGVyc1wiPlxuICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPVwiIy9h
bGxcIiA6Y2xhc3M9XCJ7c2VsZWN0ZWQ6IGZpbHRlciA9PSAnYWxsJ31cIiBAY2xpY2s9XCJmaWx0
ZXIgPSAnYWxsJ1wiPkFsbDwvYT48L2xpPlxuICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPVwi
Iy9hY3RpdmVcIiA6Y2xhc3M9XCJ7c2VsZWN0ZWQ6IGZpbHRlciA9PSAnYWN0aXZlJ31cIiBAY2xp
Y2s9XCJmaWx0ZXIgPSAnYWN0aXZlJ1wiPkFjdGl2ZTwvYT48L2xpPlxuICAgICAgICAgICAgICAg
IDxsaT48YSBocmVmPVwiIy9jb21wbGV0ZWRcIiA6Y2xhc3M9XCJ7c2VsZWN0ZWQ6IGZpbHRlciA9
PSAnY29tcGxldGVkJ31cIiBAY2xpY2s9XCJmaWx0ZXIgPSAnY29tcGxldGVkJ1wiPkNvbXBsZXRl
ZDwvYT48L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9
XCJjbGVhci1jb21wbGV0ZWRcIiB2LXNob3c9XCJjb21wbGV0ZWRcIiBAY2xpY2sucHJldmVudD1c
ImRlbGV0ZUNvbXBsZXRlZFwiPkNsZWFyIENvbXBsZXRlZDwvYnV0dG9uPlxuICAgICAgICA8L2Zv
b3Rlcj5cbiAgICA8L3NlY3Rpb24+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuaW1wb3J0IFZ1
ZSBmcm9tICd2dWUnXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBkYXRhICgpIHtcbiAgICAgICAg
cmV0dXJuIHtcbiAgICAgICAgICAgIHRvZG9zOiBbXSxcbiAgICAgICAgICAgIG5ld1RvZG86ICcn
LFxuICAgICAgICAgICAgZmlsdGVyOiAnYWxsJyxcbiAgICAgICAgICAgIGFsbERvbmU6IGZhbHNl
LFxuICAgICAgICAgICAgZWRpdGluZzogbnVsbFxuICAgICAgICB9XG4gICAgfSxcbiAgICBmaWx0
ZXJzOiB7XG4gICAgICAgIHBsdXJhbGl6ZTogZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgcmV0dXJu
IG4gPT09IDEgPyAnaXRlbScgOiAnaXRlbXMnXG4gICAgICAgIH1cbiAgICB9LFxuICAgIGRpcmVj
dGl2ZXM6IHtcbiAgICAgICAgdG9kb0ZvY3VzIChlbCwgdmFsdWUpIHtcbiAgICAgICAgICAgIGlm
ICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIFZ1ZS5uZXh0VGljayhfID0+IHtcbiAgICAgICAg
ICAgICAgICAgICAgZWwuZm9jdXMoKVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9
XG4gICAgICAgIH1cbiAgICB9LFxuICAgIG1ldGhvZHM6IHtcbiAgICAgICAgYWRkVG9kbyAoKSB7
XG4gICAgICAgICAgICB0aGlzLnRvZG9zLnB1c2goe1xuICAgICAgICAgICAgICAgIGNvbXBsZXRl
ZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRoaXMubmV3VG9kb1xuICAgICAgICAg
ICAgfSlcbiAgICAgICAgICAgIHRoaXMubmV3VG9kbyA9ICcnXG4gICAgICAgIH0sXG4gICAgICAg
IGRlbGV0ZVRvZG8gKHRvZG8pIHtcbiAgICAgICAgICAgIHRoaXMudG9kb3MgPSB0aGlzLnRvZG9z
LmZpbHRlcih0ID0+IHQgIT09IHRvZG8pXG4gICAgICAgIH0sXG4gICAgICAgIGRlbGV0ZUNvbXBs
ZXRlZCAoKSB7XG4gICAgICAgICAgICB0aGlzLnRvZG9zID0gdGhpcy50b2Rvcy5maWx0ZXIodG9k
byA9PiAhdG9kby5jb21wbGV0ZWQpXG4gICAgICAgIH0sXG4gICAgICAgIGVkaXRUb2RvICh0b2Rv
KSB7XG4gICAgICAgICAgICB0aGlzLmVkaXRpbmcgPSB0b2RvXG4gICAgICAgIH0sXG4gICAgICAg
IGRvbmVFZGl0ICgpIHtcbiAgICAgICAgICAgIHRoaXMuZWRpdGluZyA9IG51bGxcbiAgICAgICAg
fVxuICAgIH0sXG4gICAgY29tcHV0ZWQ6IHtcbiAgICAgICAgcmVtYWluaW5nICgpIHtcbiAgICAg
ICAgICAgIHJldHVybiB0aGlzLnRvZG9zLmZpbHRlcih0b2RvID0+ICF0b2RvLmNvbXBsZXRlZCku
bGVuZ3RoXG4gICAgICAgIH0sXG4gICAgICAgIGNvbXBsZXRlZCAoKSB7XG4gICAgICAgICAgICBy
ZXR1cm4gdGhpcy50b2Rvcy5maWx0ZXIodG9kbyA9PiB0b2RvLmNvbXBsZXRlZCkubGVuZ3RoXG4g
ICAgICAgIH0sXG4gICAgICAgIGZpbHRlcmVkVG9kb3MgKCkge1xuICAgICAgICAgICAgaWYgKHRo
aXMuZmlsdGVyID09PSAnYWN0aXZlJykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRv
ZG9zLmZpbHRlcih0b2RvID0+ICF0b2RvLmNvbXBsZXRlZClcbiAgICAgICAgICAgIH0gZWxzZSBp
ZiAodGhpcy5maWx0ZXIgPT09ICdjb21wbGV0ZWQnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJu
IHRoaXMudG9kb3MuZmlsdGVyKHRvZG8gPT4gdG9kby5jb21wbGV0ZWQpXG4gICAgICAgICAgICB9
XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRvZG9zXG4gICAgICAgIH0sXG4gICAgICAgIGFs
bERvbmU6IHtcbiAgICAgICAgICAgIGdldCAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRo
aXMucmVtYWluaW5nID09PSAwXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0ICh2YWx1
ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMudG9kb3MuZm9yRWFjaCh0b2RvID0+IHtcbiAgICAg
ICAgICAgICAgICAgICAgdG9kby5jb21wbGV0ZWQgPSB2YWx1ZVxuICAgICAgICAgICAgICAgIH0p
XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG48L3NjcmlwdD5cblxuPHN0eWxl
IHNyYz1cIi4vdG9kby5jc3NcIj48L3N0eWxlPlxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4v
LyBUb2Rvcy52dWU/MmY3MDJmMGYiLCJ2YXIgX192dWVfZXhwb3J0c19fLCBfX3Z1ZV9vcHRpb25z
X19cbnZhciBfX3Z1ZV9zdHlsZXNfXyA9IHt9XG5cbi8qIHNjcmlwdCAqL1xuX192dWVfZXhwb3J0
c19fID0gcmVxdWlyZShcIiEhYmFiZWwtbG9hZGVyIXZ1ZS1sb2FkZXIvbGliL3NlbGVjdG9yP3R5
cGU9c2NyaXB0JmluZGV4PTAhLi9BcHAudnVlXCIpXG5cbi8qIHRlbXBsYXRlICovXG52YXIgX192
dWVfdGVtcGxhdGVfXyA9IHJlcXVpcmUoXCIhIXZ1ZS1sb2FkZXIvbGliL3RlbXBsYXRlLWNvbXBp
bGVyP2lkPWRhdGEtdi0xNDIwNTJjMiF2dWUtbG9hZGVyL2xpYi9zZWxlY3Rvcj90eXBlPXRlbXBs
YXRlJmluZGV4PTAhLi9BcHAudnVlXCIpXG5fX3Z1ZV9vcHRpb25zX18gPSBfX3Z1ZV9leHBvcnRz
X18gPSBfX3Z1ZV9leHBvcnRzX18gfHwge31cbmlmIChcbiAgdHlwZW9mIF9fdnVlX2V4cG9ydHNf
Xy5kZWZhdWx0ID09PSBcIm9iamVjdFwiIHx8XG4gIHR5cGVvZiBfX3Z1ZV9leHBvcnRzX18uZGVm
YXVsdCA9PT0gXCJmdW5jdGlvblwiXG4pIHtcbl9fdnVlX29wdGlvbnNfXyA9IF9fdnVlX2V4cG9y
dHNfXyA9IF9fdnVlX2V4cG9ydHNfXy5kZWZhdWx0XG59XG5pZiAodHlwZW9mIF9fdnVlX29wdGlv
bnNfXyA9PT0gXCJmdW5jdGlvblwiKSB7XG4gIF9fdnVlX29wdGlvbnNfXyA9IF9fdnVlX29wdGlv
bnNfXy5vcHRpb25zXG59XG5cbl9fdnVlX29wdGlvbnNfXy5yZW5kZXIgPSBfX3Z1ZV90ZW1wbGF0
ZV9fLnJlbmRlclxuX192dWVfb3B0aW9uc19fLnN0YXRpY1JlbmRlckZucyA9IF9fdnVlX3RlbXBs
YXRlX18uc3RhdGljUmVuZGVyRm5zXG5cbm1vZHVsZS5leHBvcnRzID0gX192dWVfZXhwb3J0c19f
XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL3NyYy9B
cHAudnVlXG4vLyBtb2R1bGUgaWQgPSA2XG4vLyBtb2R1bGUgY2h1bmtzID0gMSIsInZhciBfX3Z1
ZV9leHBvcnRzX18sIF9fdnVlX29wdGlvbnNfX1xudmFyIF9fdnVlX3N0eWxlc19fID0ge31cblxu
Lyogc3R5bGVzICovXG5yZXF1aXJlKFwiISEuLy4uLy4uL25vZGVfbW9kdWxlcy9leHRyYWN0LXRl
eHQtd2VicGFjay1wbHVnaW4vbG9hZGVyLmpzP3tcXFwib21pdFxcXCI6MSxcXFwiZXh0cmFjdFxc
XCI6dHJ1ZSxcXFwicmVtb3ZlXFxcIjp0cnVlfSF2dWUtc3R5bGUtbG9hZGVyIWNzcy1sb2FkZXI/
c291cmNlTWFwIXZ1ZS1sb2FkZXIvbGliL3N0eWxlLXJld3JpdGVyP2lkPWRhdGEtdi03YzUzNmQy
MyEuL3RvZG8uY3NzXCIpXG5cbi8qIHNjcmlwdCAqL1xuX192dWVfZXhwb3J0c19fID0gcmVxdWly
ZShcIiEhYmFiZWwtbG9hZGVyIXZ1ZS1sb2FkZXIvbGliL3NlbGVjdG9yP3R5cGU9c2NyaXB0Jmlu
ZGV4PTAhLi9Ub2Rvcy52dWVcIilcblxuLyogdGVtcGxhdGUgKi9cbnZhciBfX3Z1ZV90ZW1wbGF0
ZV9fID0gcmVxdWlyZShcIiEhdnVlLWxvYWRlci9saWIvdGVtcGxhdGUtY29tcGlsZXI/aWQ9ZGF0
YS12LTdjNTM2ZDIzIXZ1ZS1sb2FkZXIvbGliL3NlbGVjdG9yP3R5cGU9dGVtcGxhdGUmaW5kZXg9
MCEuL1RvZG9zLnZ1ZVwiKVxuX192dWVfb3B0aW9uc19fID0gX192dWVfZXhwb3J0c19fID0gX192
dWVfZXhwb3J0c19fIHx8IHt9XG5pZiAoXG4gIHR5cGVvZiBfX3Z1ZV9leHBvcnRzX18uZGVmYXVs
dCA9PT0gXCJvYmplY3RcIiB8fFxuICB0eXBlb2YgX192dWVfZXhwb3J0c19fLmRlZmF1bHQgPT09
IFwiZnVuY3Rpb25cIlxuKSB7XG5fX3Z1ZV9vcHRpb25zX18gPSBfX3Z1ZV9leHBvcnRzX18gPSBf
X3Z1ZV9leHBvcnRzX18uZGVmYXVsdFxufVxuaWYgKHR5cGVvZiBfX3Z1ZV9vcHRpb25zX18gPT09
IFwiZnVuY3Rpb25cIikge1xuICBfX3Z1ZV9vcHRpb25zX18gPSBfX3Z1ZV9vcHRpb25zX18ub3B0
aW9uc1xufVxuXG5fX3Z1ZV9vcHRpb25zX18ucmVuZGVyID0gX192dWVfdGVtcGxhdGVfXy5yZW5k
ZXJcbl9fdnVlX29wdGlvbnNfXy5zdGF0aWNSZW5kZXJGbnMgPSBfX3Z1ZV90ZW1wbGF0ZV9fLnN0
YXRpY1JlbmRlckZuc1xuXG5tb2R1bGUuZXhwb3J0cyA9IF9fdnVlX2V4cG9ydHNfX1xuXG5cblxu
Ly8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9zcmMvY29tcG9uZW50
cy9Ub2Rvcy52dWVcbi8vIG1vZHVsZSBpZCA9IDdcbi8vIG1vZHVsZSBjaHVua3MgPSAxIiwibW9k
dWxlLmV4cG9ydHM9e3JlbmRlcjpmdW5jdGlvbiAoKXt2YXIgX3ZtPXRoaXM7dmFyIF9oPV92bS4k
Y3JlYXRlRWxlbWVudDtcbiAgcmV0dXJuIF9oKCdkaXYnLCB7XG4gICAgYXR0cnM6IHtcbiAgICAg
IFwiaWRcIjogXCJhcHBcIlxuICAgIH1cbiAgfSwgW19oKCdUb2RvcycpXSlcbn0sc3RhdGljUmVu
ZGVyRm5zOiBbXX1cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4v
LyAuL34vdnVlLWxvYWRlci9saWIvdGVtcGxhdGUtY29tcGlsZXIuanM/aWQ9ZGF0YS12LTE0MjA1
MmMyIS4vfi92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXRlbXBsYXRlJmluZGV4PTAh
Li9zcmMvQXBwLnZ1ZVxuLy8gbW9kdWxlIGlkID0gOFxuLy8gbW9kdWxlIGNodW5rcyA9IDEiLCJt
b2R1bGUuZXhwb3J0cz17cmVuZGVyOmZ1bmN0aW9uICgpe3ZhciBfdm09dGhpczt2YXIgX2g9X3Zt
LiRjcmVhdGVFbGVtZW50O1xuICByZXR1cm4gX2goJ3NlY3Rpb24nLCB7XG4gICAgc3RhdGljQ2xh
c3M6IFwidG9kb2FwcFwiXG4gIH0sIFtfaCgnaGVhZGVyJywge1xuICAgIHN0YXRpY0NsYXNzOiBc
ImhlYWRlclwiXG4gIH0sIFtfaCgnaDEnLCBbXCJUb2Rvc1wiXSksIFwiIFwiLCBfaCgnaW5wdXQn
LCB7XG4gICAgZGlyZWN0aXZlczogW3tcbiAgICAgIG5hbWU6IFwibW9kZWxcIixcbiAgICAgIHJh
d05hbWU6IFwidi1tb2RlbFwiLFxuICAgICAgdmFsdWU6IChfdm0ubmV3VG9kbyksXG4gICAgICBl
eHByZXNzaW9uOiBcIm5ld1RvZG9cIlxuICAgIH1dLFxuICAgIHN0YXRpY0NsYXNzOiBcIm5ldy10
b2RvXCIsXG4gICAgYXR0cnM6IHtcbiAgICAgIFwidHlwZVwiOiBcInRleHRcIixcbiAgICAgIFwi
YXV0b2ZvY3VzXCI6IFwiXCIsXG4gICAgICBcImF1dG9jb21wbGV0ZVwiOiBcIm9mZlwiLFxuICAg
ICAgXCJwbGFjZWhvbGRlclwiOiBcIldoYXQgbmVlZHMgdG8gYmUgZG9uZT9cIlxuICAgIH0sXG4g
ICAgZG9tUHJvcHM6IHtcbiAgICAgIFwidmFsdWVcIjogX3ZtLl9zKF92bS5uZXdUb2RvKVxuICAg
IH0sXG4gICAgb246IHtcbiAgICAgIFwia2V5dXBcIjogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAg
ICAgIGlmICgkZXZlbnQua2V5Q29kZSAhPT0gMTMpIHsgcmV0dXJuOyB9XG4gICAgICAgIF92bS5h
ZGRUb2RvKCRldmVudClcbiAgICAgIH0sXG4gICAgICBcImlucHV0XCI6IGZ1bmN0aW9uKCRldmVu
dCkge1xuICAgICAgICBpZiAoJGV2ZW50LnRhcmdldC5jb21wb3NpbmcpIHsgcmV0dXJuOyB9XG4g
ICAgICAgIF92bS5uZXdUb2RvID0gJGV2ZW50LnRhcmdldC52YWx1ZVxuICAgICAgfVxuICAgIH1c
biAgfSldKSwgXCIgXCIsIF9oKCdzZWN0aW9uJywge1xuICAgIGRpcmVjdGl2ZXM6IFt7XG4gICAg
ICBuYW1lOiBcInNob3dcIixcbiAgICAgIHJhd05hbWU6IFwidi1zaG93XCIsXG4gICAgICB2YWx1
ZTogKF92bS50b2Rvcy5sZW5ndGgpLFxuICAgICAgZXhwcmVzc2lvbjogXCJ0b2Rvcy5sZW5ndGhc
IlxuICAgIH1dLFxuICAgIHN0YXRpY0NsYXNzOiBcIm1haW5cIlxuICB9LCBbX2goJ2lucHV0Jywg
e1xuICAgIGRpcmVjdGl2ZXM6IFt7XG4gICAgICBuYW1lOiBcIm1vZGVsXCIsXG4gICAgICByYXdO
YW1lOiBcInYtbW9kZWxcIixcbiAgICAgIHZhbHVlOiAoX3ZtLmFsbERvbmUpLFxuICAgICAgZXhw
cmVzc2lvbjogXCJhbGxEb25lXCJcbiAgICB9XSxcbiAgICBzdGF0aWNDbGFzczogXCJ0b2dnbGUt
YWxsXCIsXG4gICAgYXR0cnM6IHtcbiAgICAgIFwidHlwZVwiOiBcImNoZWNrYm94XCJcbiAgICB9
LFxuICAgIGRvbVByb3BzOiB7XG4gICAgICBcImNoZWNrZWRcIjogQXJyYXkuaXNBcnJheShfdm0u
YWxsRG9uZSkgPyBfdm0uX2koX3ZtLmFsbERvbmUsIG51bGwpID4gLTEgOiBfdm0uX3EoX3ZtLmFs
bERvbmUsIHRydWUpXG4gICAgfSxcbiAgICBvbjoge1xuICAgICAgXCJjaGFuZ2VcIjogZnVuY3Rp
b24oJGV2ZW50KSB7XG4gICAgICAgIHZhciAkJGEgPSBfdm0uYWxsRG9uZSxcbiAgICAgICAgICAk
JGVsID0gJGV2ZW50LnRhcmdldCxcbiAgICAgICAgICAkJGMgPSAkJGVsLmNoZWNrZWQgPyAodHJ1
ZSkgOiAoZmFsc2UpO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSgkJGEpKSB7XG4gICAgICAg
ICAgdmFyICQkdiA9IG51bGwsXG4gICAgICAgICAgICAkJGkgPSBfdm0uX2koJCRhLCAkJHYpO1xu
ICAgICAgICAgIGlmICgkJGMpIHtcbiAgICAgICAgICAgICQkaSA8IDAgJiYgKF92bS5hbGxEb25l
ID0gJCRhLmNvbmNhdCgkJHYpKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAkJGkg
PiAtMSAmJiAoX3ZtLmFsbERvbmUgPSAkJGEuc2xpY2UoMCwgJCRpKS5jb25jYXQoJCRhLnNsaWNl
KCQkaSArIDEpKSlcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgX3Zt
LmFsbERvbmUgPSAkJGNcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSksIFwiIFwiLCBf
aCgndWwnLCB7XG4gICAgc3RhdGljQ2xhc3M6IFwidG9kby1saXN0XCJcbiAgfSwgW192bS5fbCgo
X3ZtLmZpbHRlcmVkVG9kb3MpLCBmdW5jdGlvbih0b2RvKSB7XG4gICAgcmV0dXJuIF9oKCdsaScs
IHtcbiAgICAgIHN0YXRpY0NsYXNzOiBcInRvZG9cIixcbiAgICAgIGNsYXNzOiB7XG4gICAgICAg
IGNvbXBsZXRlZDogdG9kby5jb21wbGV0ZWQsIGVkaXRpbmc6IHRvZG8gPT09IF92bS5lZGl0aW5n
XG4gICAgICB9XG4gICAgfSwgW19oKCdkaXYnLCB7XG4gICAgICBzdGF0aWNDbGFzczogXCJ2aWV3
XCJcbiAgICB9LCBbX2goJ2lucHV0Jywge1xuICAgICAgZGlyZWN0aXZlczogW3tcbiAgICAgICAg
bmFtZTogXCJtb2RlbFwiLFxuICAgICAgICByYXdOYW1lOiBcInYtbW9kZWxcIixcbiAgICAgICAg
dmFsdWU6ICh0b2RvLmNvbXBsZXRlZCksXG4gICAgICAgIGV4cHJlc3Npb246IFwidG9kby5jb21w
bGV0ZWRcIlxuICAgICAgfV0sXG4gICAgICBzdGF0aWNDbGFzczogXCJ0b2dnbGVcIixcbiAgICAg
IGF0dHJzOiB7XG4gICAgICAgIFwidHlwZVwiOiBcImNoZWNrYm94XCJcbiAgICAgIH0sXG4gICAg
ICBkb21Qcm9wczoge1xuICAgICAgICBcImNoZWNrZWRcIjogQXJyYXkuaXNBcnJheSh0b2RvLmNv
bXBsZXRlZCkgPyBfdm0uX2kodG9kby5jb21wbGV0ZWQsIG51bGwpID4gLTEgOiBfdm0uX3EodG9k
by5jb21wbGV0ZWQsIHRydWUpXG4gICAgICB9LFxuICAgICAgb246IHtcbiAgICAgICAgXCJjaGFu
Z2VcIjogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgdmFyICQkYSA9IHRvZG8uY29tcGxl
dGVkLFxuICAgICAgICAgICAgJCRlbCA9ICRldmVudC50YXJnZXQsXG4gICAgICAgICAgICAkJGMg
PSAkJGVsLmNoZWNrZWQgPyAodHJ1ZSkgOiAoZmFsc2UpO1xuICAgICAgICAgIGlmIChBcnJheS5p
c0FycmF5KCQkYSkpIHtcbiAgICAgICAgICAgIHZhciAkJHYgPSBudWxsLFxuICAgICAgICAgICAg
ICAkJGkgPSBfdm0uX2koJCRhLCAkJHYpO1xuICAgICAgICAgICAgaWYgKCQkYykge1xuICAgICAg
ICAgICAgICAkJGkgPCAwICYmICh0b2RvLmNvbXBsZXRlZCA9ICQkYS5jb25jYXQoJCR2KSlcbiAg
ICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICQkaSA+IC0xICYmICh0b2RvLmNvbXBs
ZXRlZCA9ICQkYS5zbGljZSgwLCAkJGkpLmNvbmNhdCgkJGEuc2xpY2UoJCRpICsgMSkpKVxuICAg
ICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0b2RvLmNvbXBsZXRl
ZCA9ICQkY1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pLCBcIiBcIiwg
X2goJ2xhYmVsJywge1xuICAgICAgb246IHtcbiAgICAgICAgXCJkYmxjbGlja1wiOiBmdW5jdGlv
bigkZXZlbnQpIHtcbiAgICAgICAgICBfdm0uZWRpdFRvZG8odG9kbylcbiAgICAgICAgfVxuICAg
ICAgfVxuICAgIH0sIFtfdm0uX3ModG9kby50aXRsZSldKSwgXCIgXCIsIF9oKCdidXR0b24nLCB7
XG4gICAgICBzdGF0aWNDbGFzczogXCJkZXN0cm95XCIsXG4gICAgICBvbjoge1xuICAgICAgICBc
ImNsaWNrXCI6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICRldmVudC5wcmV2ZW50RGVm
YXVsdCgpO1xuICAgICAgICAgIF92bS5kZWxldGVUb2RvKHRvZG8pXG4gICAgICAgIH1cbiAgICAg
IH1cbiAgICB9KV0pLCBcIiBcIiwgX2goJ2lucHV0Jywge1xuICAgICAgZGlyZWN0aXZlczogW3tc
biAgICAgICAgbmFtZTogXCJtb2RlbFwiLFxuICAgICAgICByYXdOYW1lOiBcInYtbW9kZWxcIixc
biAgICAgICAgdmFsdWU6ICh0b2RvLnRpdGxlKSxcbiAgICAgICAgZXhwcmVzc2lvbjogXCJ0b2Rv
LnRpdGxlXCJcbiAgICAgIH0sIHtcbiAgICAgICAgbmFtZTogXCJ0b2RvRm9jdXNcIixcbiAgICAg
ICAgcmF3TmFtZTogXCJ2LXRvZG9Gb2N1c1wiLFxuICAgICAgICB2YWx1ZTogKHRvZG8gPT09IF92
bS5lZGl0aW5nKSxcbiAgICAgICAgZXhwcmVzc2lvbjogXCJ0b2RvID09PSBlZGl0aW5nXCJcbiAg
ICAgIH1dLFxuICAgICAgc3RhdGljQ2xhc3M6IFwiZWRpdFwiLFxuICAgICAgYXR0cnM6IHtcbiAg
ICAgICAgXCJ0eXBlXCI6IFwidGV4dFwiXG4gICAgICB9LFxuICAgICAgZG9tUHJvcHM6IHtcbiAg
ICAgICAgXCJ2YWx1ZVwiOiBfdm0uX3ModG9kby50aXRsZSlcbiAgICAgIH0sXG4gICAgICBvbjog
e1xuICAgICAgICBcImtleXVwXCI6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgIGlmICgk
ZXZlbnQua2V5Q29kZSAhPT0gMTMpIHsgcmV0dXJuOyB9XG4gICAgICAgICAgX3ZtLmRvbmVFZGl0
KCRldmVudClcbiAgICAgICAgfSxcbiAgICAgICAgXCJibHVyXCI6IF92bS5kb25lRWRpdCxcbiAg
ICAgICAgXCJpbnB1dFwiOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICBpZiAoJGV2ZW50
LnRhcmdldC5jb21wb3NpbmcpIHsgcmV0dXJuOyB9XG4gICAgICAgICAgdG9kby50aXRsZSA9ICRl
dmVudC50YXJnZXQudmFsdWVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXSlcbiAgfSldKSwg
XCIgXCIsIFwiIFwiLCBfaCgnZm9vdGVyJywge1xuICAgIGRpcmVjdGl2ZXM6IFt7XG4gICAgICBu
YW1lOiBcInNob3dcIixcbiAgICAgIHJhd05hbWU6IFwidi1zaG93XCIsXG4gICAgICB2YWx1ZTog
KF92bS50b2Rvcy5sZW5ndGggPiAwKSxcbiAgICAgIGV4cHJlc3Npb246IFwidG9kb3MubGVuZ3Ro
ID4gMFwiXG4gICAgfV0sXG4gICAgc3RhdGljQ2xhc3M6IFwiZm9vdGVyXCJcbiAgfSwgW19oKCdz
cGFuJywge1xuICAgIHN0YXRpY0NsYXNzOiBcInRvZG8tY291bnRcIlxuICB9LCBbX2goJ3N0cm9u
ZycsIFtfdm0uX3MoX3ZtLnJlbWFpbmluZyldKSwgXCIgXCIgKyBfdm0uX3MoX3ZtLl9mKFwicGx1
cmFsaXplXCIpKF92bS5yZW1haW5pbmcpKSArIFwiIGxlZnRcXG4gICAgICAgIFwiXSksIFwiIFwi
LCBfaCgndWwnLCB7XG4gICAgc3RhdGljQ2xhc3M6IFwiZmlsdGVyc1wiXG4gIH0sIFtfaCgnbGkn
LCBbX2goJ2EnLCB7XG4gICAgY2xhc3M6IHtcbiAgICAgIHNlbGVjdGVkOiBfdm0uZmlsdGVyID09
ICdhbGwnXG4gICAgfSxcbiAgICBhdHRyczoge1xuICAgICAgXCJocmVmXCI6IFwiIy9hbGxcIlxu
ICAgIH0sXG4gICAgb246IHtcbiAgICAgIFwiY2xpY2tcIjogZnVuY3Rpb24oJGV2ZW50KSB7XG4g
ICAgICAgIF92bS5maWx0ZXIgPSAnYWxsJ1xuICAgICAgfVxuICAgIH1cbiAgfSwgW1wiQWxsXCJd
KV0pLCBcIiBcIiwgX2goJ2xpJywgW19oKCdhJywge1xuICAgIGNsYXNzOiB7XG4gICAgICBzZWxl
Y3RlZDogX3ZtLmZpbHRlciA9PSAnYWN0aXZlJ1xuICAgIH0sXG4gICAgYXR0cnM6IHtcbiAgICAg
IFwiaHJlZlwiOiBcIiMvYWN0aXZlXCJcbiAgICB9LFxuICAgIG9uOiB7XG4gICAgICBcImNsaWNr
XCI6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICBfdm0uZmlsdGVyID0gJ2FjdGl2ZSdcbiAg
ICAgIH1cbiAgICB9XG4gIH0sIFtcIkFjdGl2ZVwiXSldKSwgXCIgXCIsIF9oKCdsaScsIFtfaCgn
YScsIHtcbiAgICBjbGFzczoge1xuICAgICAgc2VsZWN0ZWQ6IF92bS5maWx0ZXIgPT0gJ2NvbXBs
ZXRlZCdcbiAgICB9LFxuICAgIGF0dHJzOiB7XG4gICAgICBcImhyZWZcIjogXCIjL2NvbXBsZXRl
ZFwiXG4gICAgfSxcbiAgICBvbjoge1xuICAgICAgXCJjbGlja1wiOiBmdW5jdGlvbigkZXZlbnQp
IHtcbiAgICAgICAgX3ZtLmZpbHRlciA9ICdjb21wbGV0ZWQnXG4gICAgICB9XG4gICAgfVxuICB9
LCBbXCJDb21wbGV0ZWRcIl0pXSldKSwgXCIgXCIsIF9oKCdidXR0b24nLCB7XG4gICAgZGlyZWN0
aXZlczogW3tcbiAgICAgIG5hbWU6IFwic2hvd1wiLFxuICAgICAgcmF3TmFtZTogXCJ2LXNob3dc
IixcbiAgICAgIHZhbHVlOiAoX3ZtLmNvbXBsZXRlZCksXG4gICAgICBleHByZXNzaW9uOiBcImNv
bXBsZXRlZFwiXG4gICAgfV0sXG4gICAgc3RhdGljQ2xhc3M6IFwiY2xlYXItY29tcGxldGVkXCIs
XG4gICAgb246IHtcbiAgICAgIFwiY2xpY2tcIjogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAg
ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBfdm0uZGVsZXRlQ29tcGxldGVkKCRl
dmVudClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtcIkNsZWFyIENvbXBsZXRlZFwiXSldKV0pXSlc
bn0sc3RhdGljUmVuZGVyRm5zOiBbXX1cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBB
Q0sgRk9PVEVSXG4vLyAuL34vdnVlLWxvYWRlci9saWIvdGVtcGxhdGUtY29tcGlsZXIuanM/aWQ9
ZGF0YS12LTdjNTM2ZDIzIS4vfi92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXRlbXBs
YXRlJmluZGV4PTAhLi9zcmMvY29tcG9uZW50cy9Ub2Rvcy52dWVcbi8vIG1vZHVsZSBpZCA9IDlc
bi8vIG1vZHVsZSBjaHVua3MgPSAxIl0sInNvdXJjZVJvb3QiOiIifQpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9kaXN0L3N0YXRp
Yy9qcy9tYW5pZmVzdC44NGIyYjRmY2ViNzRhYjFmOTFmMy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpz
LWNsaS9kaXN0L3N0YXRpYy9qcy9tYW5pZmVzdC44NGIyYjRmY2ViNzRhYjFmOTFmMy5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5iZWZhOTBjMmY4OGRkNmQ1Yjg5ZmU5YjFkMDRlMDUxYjliNDMwZTNjCi0tLSAvZGV2
L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2Rpc3Qvc3RhdGljL2pzL21hbmlmZXN0
Ljg0YjJiNGZjZWI3NGFiMWY5MWYzLmpzCkBAIC0wLDAgKzEsMiBAQAorIWZ1bmN0aW9uKGUpe2Z1
bmN0aW9uIHQoYSl7aWYoblthXSlyZXR1cm4gblthXS5leHBvcnRzO3ZhciByPW5bYV09e2V4cG9y
dHM6e30saWQ6YSxsb2FkZWQ6ITF9O3JldHVybiBlW2FdLmNhbGwoci5leHBvcnRzLHIsci5leHBv
cnRzLHQpLHIubG9hZGVkPSEwLHIuZXhwb3J0c312YXIgYT13aW5kb3cud2VicGFja0pzb25wO3dp
bmRvdy53ZWJwYWNrSnNvbnA9ZnVuY3Rpb24oYyxvKXtmb3IodmFyIHAscyxsPTAsaT1bXTtsPGMu
bGVuZ3RoO2wrKylzPWNbbF0scltzXSYmaS5wdXNoLmFwcGx5KGkscltzXSkscltzXT0wO2Zvcihw
IGluIG8pZVtwXT1vW3BdO2ZvcihhJiZhKGMsbyk7aS5sZW5ndGg7KWkuc2hpZnQoKS5jYWxsKG51
bGwsdCk7aWYob1swXSlyZXR1cm4gblswXT0wLHQoMCl9O3ZhciBuPXt9LHI9ezA6MH07dC5lPWZ1
bmN0aW9uKGUsYSl7aWYoMD09PXJbZV0pcmV0dXJuIGEuY2FsbChudWxsLHQpO2lmKHZvaWQgMCE9
PXJbZV0pcltlXS5wdXNoKGEpO2Vsc2V7cltlXT1bYV07dmFyIG49ZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoImhlYWQiKVswXSxjPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIp
O2MudHlwZT0idGV4dC9qYXZhc2NyaXB0IixjLmNoYXJzZXQ9InV0Zi04IixjLmFzeW5jPSEwLGMu
c3JjPXQucCsic3RhdGljL2pzLyIrZSsiLiIrezE6ImIwZTgzNTg3NGJjODk0OTY3MGQxIiwyOiJh
NTI1MTdjNWFhOThlN2ZiZWEyZSJ9W2VdKyIuanMiLG4uYXBwZW5kQ2hpbGQoYyl9fSx0Lm09ZSx0
LmM9bix0LnA9Ii8ifShbXSk7CisvLyMgc291cmNlTWFwcGluZ1VSTD1tYW5pZmVzdC44NGIyYjRm
Y2ViNzRhYjFmOTFmMy5qcy5tYXAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvZGlzdC9zdGF0aWMvanMvbWFuaWZlc3QuODRiMmI0
ZmNlYjc0YWIxZjkxZjMuanMubWFwIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2Rpc3Qvc3RhdGlj
L2pzL21hbmlmZXN0Ljg0YjJiNGZjZWI3NGFiMWY5MWYzLmpzLm1hcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYWM4
OTA4OTkwY2ZjYmNkNjYyNjMzMzgwOGMzOWRhZGQ2ODQ3MjVjCi0tLSAvZGV2L251bGwKKysrIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvdnVlanMtY2xpL2Rpc3Qvc3RhdGljL2pzL21hbmlmZXN0Ljg0YjJiNGZjZWI3
NGFiMWY5MWYzLmpzLm1hcApAQCAtMCwwICsxIEBACit7InZlcnNpb24iOjMsInNvdXJjZXMiOlsi
d2VicGFjazovLy9zdGF0aWMvanMvbWFuaWZlc3QuODRiMmI0ZmNlYjc0YWIxZjkxZjMuanMiLCJ3
ZWJwYWNrOi8vL3dlYnBhY2svYm9vdHN0cmFwIGZmYTNkODMzMTdiYzg0OTNlZTY0Il0sIm5hbWVz
IjpbIm1vZHVsZXMiLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJpbnN0YWxsZWRN
b2R1bGVzIiwiZXhwb3J0cyIsIm1vZHVsZSIsImlkIiwibG9hZGVkIiwiY2FsbCIsInBhcmVudEpz
b25wRnVuY3Rpb24iLCJ3aW5kb3ciLCJjaHVua0lkcyIsIm1vcmVNb2R1bGVzIiwiY2h1bmtJZCIs
ImkiLCJjYWxsYmFja3MiLCJsZW5ndGgiLCJpbnN0YWxsZWRDaHVua3MiLCJwdXNoIiwiYXBwbHki
LCJzaGlmdCIsIjAiLCJlIiwiY2FsbGJhY2siLCJ1bmRlZmluZWQiLCJoZWFkIiwiZG9jdW1lbnQi
LCJnZXRFbGVtZW50c0J5VGFnTmFtZSIsInNjcmlwdCIsImNyZWF0ZUVsZW1lbnQiLCJ0eXBlIiwi
Y2hhcnNldCIsImFzeW5jIiwic3JjIiwicCIsIjEiLCIyIiwiYXBwZW5kQ2hpbGQiLCJtIiwiYyJd
LCJtYXBwaW5ncyI6IkNBQVMsU0FBVUEsR0NtQ25CLFFBQUFDLEdBQUFDLEdBR0EsR0FBQUMsRUFB
QUQsR0FDQSxNQUFBQyxHQUFBRCxHQUFBRSxPQUdBLElBQUFDLEdBQUFGLEVBQUFELElBQ0FFLFdB
Q0FFLEdBQUFKLEVBQ0FLLFFBQUEsRUFVQSxPQU5BUCxHQUFBRSxHQUFBTSxLQUFBSCxFQUFBRCxR
QUFBQyxJQUFBRCxRQUFBSCxHQUdBSSxFQUFBRSxRQUFBLEVBR0FGLEVBQUFELFFBdERBLEdBQUFL
LEdBQUFDLE9BQUEsWUFDQUEsUUFBQSxzQkFBQUMsRUFBQUMsR0FJQSxJQURBLEdBQUFWLEdBQUFX
LEVBQUFDLEVBQUEsRUFBQUMsS0FDUUQsRUFBQUgsRUFBQUssT0FBb0JGLElBQzVCRCxFQUFBRixF
QUFBRyxHQUNBRyxFQUFBSixJQUNBRSxFQUFBRyxLQUFBQyxNQUFBSixFQUFBRSxFQUFBSixJQUNB
SSxFQUFBSixHQUFBLENBRUEsS0FBQVgsSUFBQVUsR0FDQVosRUFBQUUsR0FBQVUsRUFBQVYsRUFH
QSxLQURBTyxLQUFBRSxFQUFBQyxHQUNBRyxFQUFBQyxRQUNBRCxFQUFBSyxRQUFBWixLQUFBLEtB
QUFQLEVBQ0EsSUFBQVcsRUFBQSxHQUVBLE1BREFULEdBQUEsS0FDQUYsRUFBQSxHQUtBLElBQUFF
LE1BS0FjLEdBQ0FJLEVBQUEsRUE2QkFwQixHQUFBcUIsRUFBQSxTQUFBVCxFQUFBVSxHQUVBLE9B
QUFOLEVBQUFKLEdBQ0EsTUFBQVUsR0FBQWYsS0FBQSxLQUFBUCxFQUdBLElBQUF1QixTQUFBUCxF
QUFBSixHQUNBSSxFQUFBSixHQUFBSyxLQUFBSyxPQUNJLENBRUpOLEVBQUFKLElBQUFVLEVBQ0Es
SUFBQUUsR0FBQUMsU0FBQUMscUJBQUEsV0FDQUMsRUFBQUYsU0FBQUcsY0FBQSxTQUNBRCxHQUFB
RSxLQUFBLGtCQUNBRixFQUFBRyxRQUFBLFFBQ0FILEVBQUFJLE9BQUEsRUFFQUosRUFBQUssSUFB
QWhDLEVBQUFpQyxFQUFBLGFBQUFyQixFQUFBLEtBQXlFc0IsRUFBQSx1QkFBQUMsRUFBQSx3QkFB
c0R2QixHQUFBLE1BQy9IWSxFQUFBWSxZQUFBVCxLQUtBM0IsRUFBQXFDLEVBQUF0QyxFQUdBQyxF
QUFBc0MsRUFBQXBDLEVBR0FGLEVBQUFpQyxFQUFBIiwiZmlsZSI6InN0YXRpYy9qcy9tYW5pZmVz
dC44NGIyYjRmY2ViNzRhYjFmOTFmMy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKiovIChm
dW5jdGlvbihtb2R1bGVzKSB7IC8vIHdlYnBhY2tCb290c3RyYXBcbi8qKioqKiovIFx0Ly8gaW5z
dGFsbCBhIEpTT05QIGNhbGxiYWNrIGZvciBjaHVuayBsb2FkaW5nXG4vKioqKioqLyBcdHZhciBw
YXJlbnRKc29ucEZ1bmN0aW9uID0gd2luZG93W1wid2VicGFja0pzb25wXCJdO1xuLyoqKioqKi8g
XHR3aW5kb3dbXCJ3ZWJwYWNrSnNvbnBcIl0gPSBmdW5jdGlvbiB3ZWJwYWNrSnNvbnBDYWxsYmFj
ayhjaHVua0lkcywgbW9yZU1vZHVsZXMpIHtcbi8qKioqKiovIFx0XHQvLyBhZGQgXCJtb3JlTW9k
dWxlc1wiIHRvIHRoZSBtb2R1bGVzIG9iamVjdCxcbi8qKioqKiovIFx0XHQvLyB0aGVuIGZsYWcg
YWxsIFwiY2h1bmtJZHNcIiBhcyBsb2FkZWQgYW5kIGZpcmUgY2FsbGJhY2tcbi8qKioqKiovIFx0
XHR2YXIgbW9kdWxlSWQsIGNodW5rSWQsIGkgPSAwLCBjYWxsYmFja3MgPSBbXTtcbi8qKioqKiov
IFx0XHRmb3IoO2kgPCBjaHVua0lkcy5sZW5ndGg7IGkrKykge1xuLyoqKioqKi8gXHRcdFx0Y2h1
bmtJZCA9IGNodW5rSWRzW2ldO1xuLyoqKioqKi8gXHRcdFx0aWYoaW5zdGFsbGVkQ2h1bmtzW2No
dW5rSWRdKVxuLyoqKioqKi8gXHRcdFx0XHRjYWxsYmFja3MucHVzaC5hcHBseShjYWxsYmFja3Ms
IGluc3RhbGxlZENodW5rc1tjaHVua0lkXSk7XG4vKioqKioqLyBcdFx0XHRpbnN0YWxsZWRDaHVu
a3NbY2h1bmtJZF0gPSAwO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0XHRmb3IobW9kdWxl
SWQgaW4gbW9yZU1vZHVsZXMpIHtcbi8qKioqKiovIFx0XHRcdG1vZHVsZXNbbW9kdWxlSWRdID0g
bW9yZU1vZHVsZXNbbW9kdWxlSWRdO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0XHRpZihw
YXJlbnRKc29ucEZ1bmN0aW9uKSBwYXJlbnRKc29ucEZ1bmN0aW9uKGNodW5rSWRzLCBtb3JlTW9k
dWxlcyk7XG4vKioqKioqLyBcdFx0d2hpbGUoY2FsbGJhY2tzLmxlbmd0aClcbi8qKioqKiovIFx0
XHRcdGNhbGxiYWNrcy5zaGlmdCgpLmNhbGwobnVsbCwgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG4v
KioqKioqLyBcdFx0aWYobW9yZU1vZHVsZXNbMF0pIHtcbi8qKioqKiovIFx0XHRcdGluc3RhbGxl
ZE1vZHVsZXNbMF0gPSAwO1xuLyoqKioqKi8gXHRcdFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJl
X18oMCk7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiov
IFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9
IHt9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gb2JqZWN0IHRvIHN0b3JlIGxvYWRlZCBhbmQg
bG9hZGluZyBjaHVua3Ncbi8qKioqKiovIFx0Ly8gXCIwXCIgbWVhbnMgXCJhbHJlYWR5IGxvYWRl
ZFwiXG4vKioqKioqLyBcdC8vIEFycmF5IG1lYW5zIFwibG9hZGluZ1wiLCBhcnJheSBjb250YWlu
cyBjYWxsYmFja3Ncbi8qKioqKiovIFx0dmFyIGluc3RhbGxlZENodW5rcyA9IHtcbi8qKioqKiov
IFx0XHQwOjBcbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIFRoZSByZXF1
aXJlIGZ1bmN0aW9uXG4vKioqKioqLyBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9k
dWxlSWQpIHtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGlu
IGNhY2hlXG4vKioqKioqLyBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pXG4vKioq
KioqLyBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbi8q
KioqKiovXG4vKioqKioqLyBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBp
bnRvIHRoZSBjYWNoZSlcbi8qKioqKiovIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxl
c1ttb2R1bGVJZF0gPSB7XG4vKioqKioqLyBcdFx0XHRleHBvcnRzOiB7fSxcbi8qKioqKiovIFx0
XHRcdGlkOiBtb2R1bGVJZCxcbi8qKioqKiovIFx0XHRcdGxvYWRlZDogZmFsc2Vcbi8qKioqKiov
IFx0XHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVu
Y3Rpb25cbi8qKioqKiovIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRz
LCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcbi8qKioqKiov
XG4vKioqKioqLyBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuLyoqKioqKi8gXHRc
dG1vZHVsZS5sb2FkZWQgPSB0cnVlO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBSZXR1cm4g
dGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuLyoqKioqKi8gXHRcdHJldHVybiBtb2R1bGUuZXhw
b3J0cztcbi8qKioqKiovIFx0fVxuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gVGhpcyBmaWxlIGNv
bnRhaW5zIG9ubHkgdGhlIGVudHJ5IGNodW5rLlxuLyoqKioqKi8gXHQvLyBUaGUgY2h1bmsgbG9h
ZGluZyBmdW5jdGlvbiBmb3IgYWRkaXRpb25hbCBjaHVua3Ncbi8qKioqKiovIFx0X193ZWJwYWNr
X3JlcXVpcmVfXy5lID0gZnVuY3Rpb24gcmVxdWlyZUVuc3VyZShjaHVua0lkLCBjYWxsYmFjaykg
e1xuLyoqKioqKi8gXHRcdC8vIFwiMFwiIGlzIHRoZSBzaWduYWwgZm9yIFwiYWxyZWFkeSBsb2Fk
ZWRcIlxuLyoqKioqKi8gXHRcdGlmKGluc3RhbGxlZENodW5rc1tjaHVua0lkXSA9PT0gMClcbi8q
KioqKiovIFx0XHRcdHJldHVybiBjYWxsYmFjay5jYWxsKG51bGwsIF9fd2VicGFja19yZXF1aXJl
X18pO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBhbiBhcnJheSBtZWFucyBcImN1cnJlbnRs
eSBsb2FkaW5nXCIuXG4vKioqKioqLyBcdFx0aWYoaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdICE9
PSB1bmRlZmluZWQpIHtcbi8qKioqKiovIFx0XHRcdGluc3RhbGxlZENodW5rc1tjaHVua0lkXS5w
dXNoKGNhbGxiYWNrKTtcbi8qKioqKiovIFx0XHR9IGVsc2Uge1xuLyoqKioqKi8gXHRcdFx0Ly8g
c3RhcnQgY2h1bmsgbG9hZGluZ1xuLyoqKioqKi8gXHRcdFx0aW5zdGFsbGVkQ2h1bmtzW2NodW5r
SWRdID0gW2NhbGxiYWNrXTtcbi8qKioqKiovIFx0XHRcdHZhciBoZWFkID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXTtcbi8qKioqKiovIFx0XHRcdHZhciBzY3JpcHQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbi8qKioqKiovIFx0XHRcdHNjcmlw
dC50eXBlID0gJ3RleHQvamF2YXNjcmlwdCc7XG4vKioqKioqLyBcdFx0XHRzY3JpcHQuY2hhcnNl
dCA9ICd1dGYtOCc7XG4vKioqKioqLyBcdFx0XHRzY3JpcHQuYXN5bmMgPSB0cnVlO1xuLyoqKioq
Ki9cbi8qKioqKiovIFx0XHRcdHNjcmlwdC5zcmMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLnAgKyBc
InN0YXRpYy9qcy9cIiArIGNodW5rSWQgKyBcIi5cIiArIHtcIjFcIjpcImIwZTgzNTg3NGJjODk0
OTY3MGQxXCIsXCIyXCI6XCJhNTI1MTdjNWFhOThlN2ZiZWEyZVwifVtjaHVua0lkXSArIFwiLmpz
XCI7XG4vKioqKioqLyBcdFx0XHRoZWFkLmFwcGVuZENoaWxkKHNjcmlwdCk7XG4vKioqKioqLyBc
dFx0fVxuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBt
b2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbi8qKioqKiovIFx0X193ZWJwYWNr
X3JlcXVpcmVfXy5tID0gbW9kdWxlcztcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0
aGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3Rh
bGxlZE1vZHVsZXM7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBfX3dlYnBhY2tfcHVibGljX3Bh
dGhfX1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIi9cIjtcbi8qKioqKiov
IH0pXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqL1xuLyoqKioqKi8gKFtdKTtcblxuXG4vLyBXRUJQQUNLIEZP
T1RFUiAvL1xuLy8gc3RhdGljL2pzL21hbmlmZXN0Ljg0YjJiNGZjZWI3NGFiMWY5MWYzLmpzIiwi
IFx0Ly8gaW5zdGFsbCBhIEpTT05QIGNhbGxiYWNrIGZvciBjaHVuayBsb2FkaW5nXG4gXHR2YXIg
cGFyZW50SnNvbnBGdW5jdGlvbiA9IHdpbmRvd1tcIndlYnBhY2tKc29ucFwiXTtcbiBcdHdpbmRv
d1tcIndlYnBhY2tKc29ucFwiXSA9IGZ1bmN0aW9uIHdlYnBhY2tKc29ucENhbGxiYWNrKGNodW5r
SWRzLCBtb3JlTW9kdWxlcykge1xuIFx0XHQvLyBhZGQgXCJtb3JlTW9kdWxlc1wiIHRvIHRoZSBt
b2R1bGVzIG9iamVjdCxcbiBcdFx0Ly8gdGhlbiBmbGFnIGFsbCBcImNodW5rSWRzXCIgYXMgbG9h
ZGVkIGFuZCBmaXJlIGNhbGxiYWNrXG4gXHRcdHZhciBtb2R1bGVJZCwgY2h1bmtJZCwgaSA9IDAs
IGNhbGxiYWNrcyA9IFtdO1xuIFx0XHRmb3IoO2kgPCBjaHVua0lkcy5sZW5ndGg7IGkrKykge1xu
IFx0XHRcdGNodW5rSWQgPSBjaHVua0lkc1tpXTtcbiBcdFx0XHRpZihpbnN0YWxsZWRDaHVua3Nb
Y2h1bmtJZF0pXG4gXHRcdFx0XHRjYWxsYmFja3MucHVzaC5hcHBseShjYWxsYmFja3MsIGluc3Rh
bGxlZENodW5rc1tjaHVua0lkXSk7XG4gXHRcdFx0aW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdID0g
MDtcbiBcdFx0fVxuIFx0XHRmb3IobW9kdWxlSWQgaW4gbW9yZU1vZHVsZXMpIHtcbiBcdFx0XHRt
b2R1bGVzW21vZHVsZUlkXSA9IG1vcmVNb2R1bGVzW21vZHVsZUlkXTtcbiBcdFx0fVxuIFx0XHRp
ZihwYXJlbnRKc29ucEZ1bmN0aW9uKSBwYXJlbnRKc29ucEZ1bmN0aW9uKGNodW5rSWRzLCBtb3Jl
TW9kdWxlcyk7XG4gXHRcdHdoaWxlKGNhbGxiYWNrcy5sZW5ndGgpXG4gXHRcdFx0Y2FsbGJhY2tz
LnNoaWZ0KCkuY2FsbChudWxsLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcbiBcdFx0aWYobW9yZU1v
ZHVsZXNbMF0pIHtcbiBcdFx0XHRpbnN0YWxsZWRNb2R1bGVzWzBdID0gMDtcbiBcdFx0XHRyZXR1
cm4gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcbiBcdFx0fVxuIFx0fTtcblxuIFx0Ly8gVGhlIG1v
ZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gb2JqZWN0
IHRvIHN0b3JlIGxvYWRlZCBhbmQgbG9hZGluZyBjaHVua3NcbiBcdC8vIFwiMFwiIG1lYW5zIFwi
YWxyZWFkeSBsb2FkZWRcIlxuIFx0Ly8gQXJyYXkgbWVhbnMgXCJsb2FkaW5nXCIsIGFycmF5IGNv
bnRhaW5zIGNhbGxiYWNrc1xuIFx0dmFyIGluc3RhbGxlZENodW5rcyA9IHtcbiBcdFx0MDowXG4g
XHR9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNr
X3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBj
YWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSlcbiBcdFx0XHRyZXR1cm4g
aW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcblxuIFx0XHQvLyBDcmVhdGUgYSBu
ZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0g
aW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0ZXhwb3J0czoge30sXG4gXHRc
dFx0aWQ6IG1vZHVsZUlkLFxuIFx0XHRcdGxvYWRlZDogZmFsc2VcbiBcdFx0fTtcblxuIFx0XHQv
LyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2Fs
bChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVp
cmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUu
bG9hZGVkID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVs
ZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cbiBcdC8vIFRoaXMgZmlsZSBj
b250YWlucyBvbmx5IHRoZSBlbnRyeSBjaHVuay5cbiBcdC8vIFRoZSBjaHVuayBsb2FkaW5nIGZ1
bmN0aW9uIGZvciBhZGRpdGlvbmFsIGNodW5rc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5lID0g
ZnVuY3Rpb24gcmVxdWlyZUVuc3VyZShjaHVua0lkLCBjYWxsYmFjaykge1xuIFx0XHQvLyBcIjBc
IiBpcyB0aGUgc2lnbmFsIGZvciBcImFscmVhZHkgbG9hZGVkXCJcbiBcdFx0aWYoaW5zdGFsbGVk
Q2h1bmtzW2NodW5rSWRdID09PSAwKVxuIFx0XHRcdHJldHVybiBjYWxsYmFjay5jYWxsKG51bGws
IF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIGFuIGFycmF5IG1lYW5zIFwiY3VycmVu
dGx5IGxvYWRpbmdcIi5cbiBcdFx0aWYoaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdICE9PSB1bmRl
ZmluZWQpIHtcbiBcdFx0XHRpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF0ucHVzaChjYWxsYmFjayk7
XG4gXHRcdH0gZWxzZSB7XG4gXHRcdFx0Ly8gc3RhcnQgY2h1bmsgbG9hZGluZ1xuIFx0XHRcdGlu
c3RhbGxlZENodW5rc1tjaHVua0lkXSA9IFtjYWxsYmFja107XG4gXHRcdFx0dmFyIGhlYWQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdO1xuIFx0XHRcdHZhciBzY3Jp
cHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiBcdFx0XHRzY3JpcHQudHlw
ZSA9ICd0ZXh0L2phdmFzY3JpcHQnO1xuIFx0XHRcdHNjcmlwdC5jaGFyc2V0ID0gJ3V0Zi04Jztc
biBcdFx0XHRzY3JpcHQuYXN5bmMgPSB0cnVlO1xuXG4gXHRcdFx0c2NyaXB0LnNyYyA9IF9fd2Vi
cGFja19yZXF1aXJlX18ucCArIFwic3RhdGljL2pzL1wiICsgY2h1bmtJZCArIFwiLlwiICsge1wi
MVwiOlwiYjBlODM1ODc0YmM4OTQ5NjcwZDFcIixcIjJcIjpcImE1MjUxN2M1YWE5OGU3ZmJlYTJl
XCJ9W2NodW5rSWRdICsgXCIuanNcIjtcbiBcdFx0XHRoZWFkLmFwcGVuZENoaWxkKHNjcmlwdCk7
XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2Vi
cGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4g
XHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0g
aW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBcdF9f
d2VicGFja19yZXF1aXJlX18ucCA9IFwiL1wiO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9c
bi8vIHdlYnBhY2svYm9vdHN0cmFwIGZmYTNkODMzMTdiYzg0OTNlZTY0Il0sInNvdXJjZVJvb3Qi
OiIifQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L3Z1ZWpzLWNsaS9kaXN0L3N0YXRpYy9qcy92ZW5kb3IuYTUyNTE3YzVhYTk4ZTdmYmVhMmUuanMg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy92dWVqcy1jbGkvZGlzdC9zdGF0aWMvanMvdmVuZG9yLmE1MjUxN2M1YWE5
OGU3ZmJlYTJlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU2ZjI5MDY1NmZhZTQwZjY2Yzc1OWQ2MDU1NTliMzlh
ZjBjNzQyMDkKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvZGlzdC9z
dGF0aWMvanMvdmVuZG9yLmE1MjUxN2M1YWE5OGU3ZmJlYTJlLmpzCkBAIC0wLDAgKzEsOSBAQAor
d2VicGFja0pzb25wKFsyLDBdLFssZnVuY3Rpb24oZSx0LG4peyhmdW5jdGlvbih0KXsvKiEKKyAg
ICAgKiBWdWUuanMgdjIuMS4zCisgICAgICogKGMpIDIwMTQtMjAxNiBFdmFuIFlvdQorICAgICAq
IFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4KKyAgICAgKi8KKyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiBuKGUpe3JldHVybiBudWxsPT1lPyIiOiJvYmplY3QiPT10eXBlb2YgZT9KU09OLnN0
cmluZ2lmeShlLG51bGwsMik6U3RyaW5nKGUpfWZ1bmN0aW9uIHIoZSl7dmFyIHQ9cGFyc2VGbG9h
dChlLDEwKTtyZXR1cm4gdHx8MD09PXQ/dDplfWZ1bmN0aW9uIGkoZSx0KXtmb3IodmFyIG49T2Jq
ZWN0LmNyZWF0ZShudWxsKSxyPWUuc3BsaXQoIiwiKSxpPTA7aTxyLmxlbmd0aDtpKyspbltyW2ld
XT0hMDtyZXR1cm4gdD9mdW5jdGlvbihlKXtyZXR1cm4gbltlLnRvTG93ZXJDYXNlKCldfTpmdW5j
dGlvbihlKXtyZXR1cm4gbltlXX19ZnVuY3Rpb24gbyhlLHQpe2lmKGUubGVuZ3RoKXt2YXIgbj1l
LmluZGV4T2YodCk7aWYobj4tMSlyZXR1cm4gZS5zcGxpY2UobiwxKX19ZnVuY3Rpb24gYShlLHQp
e3JldHVybiB6ci5jYWxsKGUsdCl9ZnVuY3Rpb24gcyhlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9m
IGV8fCJudW1iZXIiPT10eXBlb2YgZX1mdW5jdGlvbiBjKGUpe3ZhciB0PU9iamVjdC5jcmVhdGUo
bnVsbCk7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciByPXRbbl07cmV0dXJuIHJ8fCh0W25dPWUobikp
fX1mdW5jdGlvbiB1KGUsdCl7ZnVuY3Rpb24gbihuKXt2YXIgcj1hcmd1bWVudHMubGVuZ3RoO3Jl
dHVybiByP3I+MT9lLmFwcGx5KHQsYXJndW1lbnRzKTplLmNhbGwodCxuKTplLmNhbGwodCl9cmV0
dXJuIG4uX2xlbmd0aD1lLmxlbmd0aCxufWZ1bmN0aW9uIGwoZSx0KXt0PXR8fDA7Zm9yKHZhciBu
PWUubGVuZ3RoLXQscj1uZXcgQXJyYXkobik7bi0tOylyW25dPWVbbit0XTtyZXR1cm4gcn1mdW5j
dGlvbiBmKGUsdCl7Zm9yKHZhciBuIGluIHQpZVtuXT10W25dO3JldHVybiBlfWZ1bmN0aW9uIGQo
ZSl7cmV0dXJuIG51bGwhPT1lJiYib2JqZWN0Ij09dHlwZW9mIGV9ZnVuY3Rpb24gcChlKXtyZXR1
cm4gWnIuY2FsbChlKT09PUdyfWZ1bmN0aW9uIGgoZSl7Zm9yKHZhciB0PXt9LG49MDtuPGUubGVu
Z3RoO24rKyllW25dJiZmKHQsZVtuXSk7cmV0dXJuIHR9ZnVuY3Rpb24gdigpe31mdW5jdGlvbiBt
KGUpe3JldHVybiBlLnJlZHVjZShmdW5jdGlvbihlLHQpe3JldHVybiBlLmNvbmNhdCh0LnN0YXRp
Y0tleXN8fFtdKX0sW10pLmpvaW4oIiwiKX1mdW5jdGlvbiBnKGUsdCl7cmV0dXJuIGU9PXR8fCEo
IWQoZSl8fCFkKHQpKSYmSlNPTi5zdHJpbmdpZnkoZSk9PT1KU09OLnN0cmluZ2lmeSh0KX1mdW5j
dGlvbiB5KGUsdCl7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspaWYoZyhlW25dLHQpKXJldHVy
biBuO3JldHVybi0xfWZ1bmN0aW9uIF8oZSl7dmFyIHQ9KGUrIiIpLmNoYXJDb2RlQXQoMCk7cmV0
dXJuIDM2PT09dHx8OTU9PT10fWZ1bmN0aW9uIGIoZSx0LG4scil7T2JqZWN0LmRlZmluZVByb3Bl
cnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEhcix3cml0YWJsZTohMCxjb25maWd1cmFibGU6
ITB9KX1mdW5jdGlvbiB3KGUpe2lmKCFRci50ZXN0KGUpKXt2YXIgdD1lLnNwbGl0KCIuIik7cmV0
dXJuIGZ1bmN0aW9uKGUpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXtpZighZSlyZXR1cm47
ZT1lW3Rbbl1dfXJldHVybiBlfX19ZnVuY3Rpb24geChlKXtyZXR1cm4vbmF0aXZlIGNvZGUvLnRl
c3QoZS50b1N0cmluZygpKX1mdW5jdGlvbiAkKGUpe2hpLnRhcmdldCYmdmkucHVzaChoaS50YXJn
ZXQpLGhpLnRhcmdldD1lfWZ1bmN0aW9uIEMoKXtoaS50YXJnZXQ9dmkucG9wKCl9ZnVuY3Rpb24g
QShlLHQpe2UuX19wcm90b19fPXR9ZnVuY3Rpb24gayhlLHQsbil7Zm9yKHZhciByPTAsaT1uLmxl
bmd0aDtyPGk7cisrKXt2YXIgbz1uW3JdO2IoZSxvLHRbb10pfX1mdW5jdGlvbiBPKGUpe2lmKGQo
ZSkpe3ZhciB0O3JldHVybiBhKGUsIl9fb2JfXyIpJiZlLl9fb2JfXyBpbnN0YW5jZW9mIGJpP3Q9
ZS5fX29iX186X2kuc2hvdWxkQ29udmVydCYmIXNpKCkmJihBcnJheS5pc0FycmF5KGUpfHxwKGUp
KSYmT2JqZWN0LmlzRXh0ZW5zaWJsZShlKSYmIWUuX2lzVnVlJiYodD1uZXcgYmkoZSkpLHR9fWZ1
bmN0aW9uIFMoZSx0LG4scil7dmFyIGk9bmV3IGhpLG89T2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihlLHQpO2lmKCFvfHxvLmNvbmZpZ3VyYWJsZSE9PSExKXt2YXIgYT1vJiZvLmdldCxz
PW8mJm8uc2V0LGM9TyhuKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHtlbnVtZXJhYmxlOiEw
LGNvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXt2YXIgdD1hP2EuY2FsbChlKTpuO3JldHVy
biBoaS50YXJnZXQmJihpLmRlcGVuZCgpLGMmJmMuZGVwLmRlcGVuZCgpLEFycmF5LmlzQXJyYXko
dCkmJmoodCkpLHR9LHNldDpmdW5jdGlvbih0KXt2YXIgcj1hP2EuY2FsbChlKTpuO3Q9PT1yfHx0
IT09dCYmciE9PXJ8fChzP3MuY2FsbChlLHQpOm49dCxjPU8odCksaS5ub3RpZnkoKSl9fSl9fWZ1
bmN0aW9uIFQoZSx0LG4pe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGUubGVuZ3RoPU1hdGgu
bWF4KGUubGVuZ3RoLHQpLGUuc3BsaWNlKHQsMSxuKSxuO2lmKGEoZSx0KSlyZXR1cm4gdm9pZChl
W3RdPW4pO3ZhciByPWUuX19vYl9fO2lmKCEoZS5faXNWdWV8fHImJnIudm1Db3VudCkpcmV0dXJu
IHI/KFMoci52YWx1ZSx0LG4pLHIuZGVwLm5vdGlmeSgpLG4pOnZvaWQoZVt0XT1uKX1mdW5jdGlv
biBFKGUsdCl7dmFyIG49ZS5fX29iX187ZS5faXNWdWV8fG4mJm4udm1Db3VudHx8YShlLHQpJiYo
ZGVsZXRlIGVbdF0sbiYmbi5kZXAubm90aWZ5KCkpfWZ1bmN0aW9uIGooZSl7Zm9yKHZhciB0PXZv
aWQgMCxuPTAscj1lLmxlbmd0aDtuPHI7bisrKXQ9ZVtuXSx0JiZ0Ll9fb2JfXyYmdC5fX29iX18u
ZGVwLmRlcGVuZCgpLEFycmF5LmlzQXJyYXkodCkmJmoodCl9ZnVuY3Rpb24gTihlLHQpe2lmKCF0
KXJldHVybiBlO2Zvcih2YXIgbixyLGksbz1PYmplY3Qua2V5cyh0KSxzPTA7czxvLmxlbmd0aDtz
Kyspbj1vW3NdLHI9ZVtuXSxpPXRbbl0sYShlLG4pP3AocikmJnAoaSkmJk4ocixpKTpUKGUsbixp
KTtyZXR1cm4gZX1mdW5jdGlvbiBMKGUsdCl7cmV0dXJuIHQ/ZT9lLmNvbmNhdCh0KTpBcnJheS5p
c0FycmF5KHQpP3Q6W3RdOmV9ZnVuY3Rpb24gTShlLHQpe3ZhciBuPU9iamVjdC5jcmVhdGUoZXx8
bnVsbCk7cmV0dXJuIHQ/ZihuLHQpOm59ZnVuY3Rpb24gUChlKXt2YXIgdD1lLnByb3BzO2lmKHQp
e3ZhciBuLHIsaSxvPXt9O2lmKEFycmF5LmlzQXJyYXkodCkpZm9yKG49dC5sZW5ndGg7bi0tOyly
PXRbbl0sInN0cmluZyI9PXR5cGVvZiByJiYoaT1KcihyKSxvW2ldPXt0eXBlOm51bGx9KTtlbHNl
IGlmKHAodCkpZm9yKHZhciBhIGluIHQpcj10W2FdLGk9SnIoYSksb1tpXT1wKHIpP3I6e3R5cGU6
cn07ZS5wcm9wcz1vfX1mdW5jdGlvbiBEKGUpe3ZhciB0PWUuZGlyZWN0aXZlcztpZih0KWZvcih2
YXIgbiBpbiB0KXt2YXIgcj10W25dOyJmdW5jdGlvbiI9PXR5cGVvZiByJiYodFtuXT17YmluZDpy
LHVwZGF0ZTpyfSl9fWZ1bmN0aW9uIFIoZSx0LG4pe2Z1bmN0aW9uIHIocil7dmFyIGk9d2lbcl18
fHhpO2xbcl09aShlW3JdLHRbcl0sbixyKX1QKHQpLEQodCk7dmFyIGk9dC5leHRlbmRzO2lmKGkm
JihlPSJmdW5jdGlvbiI9PXR5cGVvZiBpP1IoZSxpLm9wdGlvbnMsbik6UihlLGksbikpLHQubWl4
aW5zKWZvcih2YXIgbz0wLHM9dC5taXhpbnMubGVuZ3RoO288cztvKyspe3ZhciBjPXQubWl4aW5z
W29dO2MucHJvdG90eXBlIGluc3RhbmNlb2YgSWUmJihjPWMub3B0aW9ucyksZT1SKGUsYyxuKX12
YXIgdSxsPXt9O2Zvcih1IGluIGUpcih1KTtmb3IodSBpbiB0KWEoZSx1KXx8cih1KTtyZXR1cm4g
bH1mdW5jdGlvbiBCKGUsdCxuLHIpe2lmKCJzdHJpbmciPT10eXBlb2Ygbil7dmFyIGk9ZVt0XSxv
PWlbbl18fGlbSnIobildfHxpW3FyKEpyKG4pKV07cmV0dXJuIG99fWZ1bmN0aW9uIEkoZSx0LG4s
cil7dmFyIGk9dFtlXSxvPSFhKG4sZSkscz1uW2VdO2lmKFUoaS50eXBlKSYmKG8mJiFhKGksImRl
ZmF1bHQiKT9zPSExOiIiIT09cyYmcyE9PVdyKGUpfHwocz0hMCkpLHZvaWQgMD09PXMpe3M9SChy
LGksZSk7dmFyIGM9X2kuc2hvdWxkQ29udmVydDtfaS5zaG91bGRDb252ZXJ0PSEwLE8ocyksX2ku
c2hvdWxkQ29udmVydD1jfXJldHVybiBzfWZ1bmN0aW9uIEgoZSx0LG4pe2lmKGEodCwiZGVmYXVs
dCIpKXt2YXIgcj10LmRlZmF1bHQ7cmV0dXJuIGQociksZSYmZS4kb3B0aW9ucy5wcm9wc0RhdGEm
JnZvaWQgMD09PWUuJG9wdGlvbnMucHJvcHNEYXRhW25dJiZ2b2lkIDAhPT1lW25dP2Vbbl06ImZ1
bmN0aW9uIj09dHlwZW9mIHImJnQudHlwZSE9PUZ1bmN0aW9uP3IuY2FsbChlKTpyfX1mdW5jdGlv
biBGKGUpe3ZhciB0PWUmJmUudG9TdHJpbmcoKS5tYXRjaCgvXlxzKmZ1bmN0aW9uIChcdyspLyk7
cmV0dXJuIHQmJnRbMV19ZnVuY3Rpb24gVShlKXtpZighQXJyYXkuaXNBcnJheShlKSlyZXR1cm4i
Qm9vbGVhbiI9PT1GKGUpO2Zvcih2YXIgdD0wLG49ZS5sZW5ndGg7dDxuO3QrKylpZigiQm9vbGVh
biI9PT1GKGVbdF0pKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIHooKXtDaS5sZW5ndGg9MCxB
aT17fSxraT1PaT0hMX1mdW5jdGlvbiBWKCl7Zm9yKE9pPSEwLENpLnNvcnQoZnVuY3Rpb24oZSx0
KXtyZXR1cm4gZS5pZC10LmlkfSksU2k9MDtTaTxDaS5sZW5ndGg7U2krKyl7dmFyIGU9Q2lbU2ld
LHQ9ZS5pZDtBaVt0XT1udWxsLGUucnVuKCl9Y2kmJmZpLmRldnRvb2xzJiZjaS5lbWl0KCJmbHVz
aCIpLHooKX1mdW5jdGlvbiBKKGUpe3ZhciB0PWUuaWQ7aWYobnVsbD09QWlbdF0pe2lmKEFpW3Rd
PSEwLE9pKXtmb3IodmFyIG49Q2kubGVuZ3RoLTE7bj49MCYmQ2lbbl0uaWQ+ZS5pZDspbi0tO0Np
LnNwbGljZShNYXRoLm1heChuLFNpKSsxLDAsZSl9ZWxzZSBDaS5wdXNoKGUpO2tpfHwoa2k9ITAs
dWkoVikpfX1mdW5jdGlvbiBxKGUpe2ppLmNsZWFyKCksSyhlLGppKX1mdW5jdGlvbiBLKGUsdCl7
dmFyIG4scixpPUFycmF5LmlzQXJyYXkoZSk7aWYoKGl8fGQoZSkpJiZPYmplY3QuaXNFeHRlbnNp
YmxlKGUpKXtpZihlLl9fb2JfXyl7dmFyIG89ZS5fX29iX18uZGVwLmlkO2lmKHQuaGFzKG8pKXJl
dHVybjt0LmFkZChvKX1pZihpKWZvcihuPWUubGVuZ3RoO24tLTspSyhlW25dLHQpO2Vsc2UgZm9y
KHI9T2JqZWN0LmtleXMoZSksbj1yLmxlbmd0aDtuLS07KUsoZVtyW25dXSx0KX19ZnVuY3Rpb24g
VyhlKXtlLl93YXRjaGVycz1bXSxaKGUpLEcoZSksWShlKSxYKGUpLGVlKGUpfWZ1bmN0aW9uIFoo
ZSl7dmFyIHQ9ZS4kb3B0aW9ucy5wcm9wcztpZih0KXt2YXIgbj1lLiRvcHRpb25zLnByb3BzRGF0
YXx8e30scj1lLiRvcHRpb25zLl9wcm9wS2V5cz1PYmplY3Qua2V5cyh0KSxpPSFlLiRwYXJlbnQ7
X2kuc2hvdWxkQ29udmVydD1pO2Zvcih2YXIgbz1mdW5jdGlvbihpKXt2YXIgbz1yW2ldO1MoZSxv
LEkobyx0LG4sZSkpfSxhPTA7YTxyLmxlbmd0aDthKyspbyhhKTtfaS5zaG91bGRDb252ZXJ0PSEw
fX1mdW5jdGlvbiBHKGUpe3ZhciB0PWUuJG9wdGlvbnMuZGF0YTt0PWUuX2RhdGE9ImZ1bmN0aW9u
Ij09dHlwZW9mIHQ/dC5jYWxsKGUpOnR8fHt9LHAodCl8fCh0PXt9KTtmb3IodmFyIG49T2JqZWN0
LmtleXModCkscj1lLiRvcHRpb25zLnByb3BzLGk9bi5sZW5ndGg7aS0tOylyJiZhKHIsbltpXSl8
fHJlKGUsbltpXSk7Tyh0KSx0Ll9fb2JfXyYmdC5fX29iX18udm1Db3VudCsrfWZ1bmN0aW9uIFko
ZSl7dmFyIHQ9ZS4kb3B0aW9ucy5jb21wdXRlZDtpZih0KWZvcih2YXIgbiBpbiB0KXt2YXIgcj10
W25dOyJmdW5jdGlvbiI9PXR5cGVvZiByPyhOaS5nZXQ9UShyLGUpLE5pLnNldD12KTooTmkuZ2V0
PXIuZ2V0P3IuY2FjaGUhPT0hMT9RKHIuZ2V0LGUpOnUoci5nZXQsZSk6dixOaS5zZXQ9ci5zZXQ/
dShyLnNldCxlKTp2KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLE5pKX19ZnVuY3Rpb24gUShl
LHQpe3ZhciBuPW5ldyBFaSh0LGUsdix7bGF6eTohMH0pO3JldHVybiBmdW5jdGlvbigpe3JldHVy
biBuLmRpcnR5JiZuLmV2YWx1YXRlKCksaGkudGFyZ2V0JiZuLmRlcGVuZCgpLG4udmFsdWV9fWZ1
bmN0aW9uIFgoZSl7dmFyIHQ9ZS4kb3B0aW9ucy5tZXRob2RzO2lmKHQpZm9yKHZhciBuIGluIHQp
ZVtuXT1udWxsPT10W25dP3Y6dSh0W25dLGUpfWZ1bmN0aW9uIGVlKGUpe3ZhciB0PWUuJG9wdGlv
bnMud2F0Y2g7aWYodClmb3IodmFyIG4gaW4gdCl7dmFyIHI9dFtuXTtpZihBcnJheS5pc0FycmF5
KHIpKWZvcih2YXIgaT0wO2k8ci5sZW5ndGg7aSsrKXRlKGUsbixyW2ldKTtlbHNlIHRlKGUsbixy
KX19ZnVuY3Rpb24gdGUoZSx0LG4pe3ZhciByO3AobikmJihyPW4sbj1uLmhhbmRsZXIpLCJzdHJp
bmciPT10eXBlb2YgbiYmKG49ZVtuXSksZS4kd2F0Y2godCxuLHIpfWZ1bmN0aW9uIG5lKGUpe3Zh
ciB0PXt9O3QuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RhdGF9LE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eShlLnByb3RvdHlwZSwiJGRhdGEiLHQpLGUucHJvdG90eXBlLiRzZXQ9VCxlLnByb3Rv
dHlwZS4kZGVsZXRlPUUsZS5wcm90b3R5cGUuJHdhdGNoPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10
aGlzO249bnx8e30sbi51c2VyPSEwO3ZhciBpPW5ldyBFaShyLGUsdCxuKTtyZXR1cm4gbi5pbW1l
ZGlhdGUmJnQuY2FsbChyLGkudmFsdWUpLGZ1bmN0aW9uKCl7aS50ZWFyZG93bigpfX19ZnVuY3Rp
b24gcmUoZSx0KXtfKHQpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHtjb25maWd1cmFibGU6
ITAsZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZS5fZGF0YVt0XX0sc2V0OmZ1
bmN0aW9uKG4pe2UuX2RhdGFbdF09bn19KX1mdW5jdGlvbiBpZShlKXt2YXIgdD1uZXcgTGkoZS50
YWcsZS5kYXRhLGUuY2hpbGRyZW4sZS50ZXh0LGUuZWxtLGUubnMsZS5jb250ZXh0LGUuY29tcG9u
ZW50T3B0aW9ucyk7cmV0dXJuIHQuaXNTdGF0aWM9ZS5pc1N0YXRpYyx0LmtleT1lLmtleSx0Lmlz
Q2xvbmVkPSEwLHR9ZnVuY3Rpb24gb2UoZSl7Zm9yKHZhciB0PW5ldyBBcnJheShlLmxlbmd0aCks
bj0wO248ZS5sZW5ndGg7bisrKXRbbl09aWUoZVtuXSk7cmV0dXJuIHR9ZnVuY3Rpb24gYWUoZSx0
LG4scil7cis9dDt2YXIgaT1lLl9faW5qZWN0ZWR8fChlLl9faW5qZWN0ZWQ9e30pO2lmKCFpW3Jd
KXtpW3JdPSEwO3ZhciBvPWVbdF07bz9lW3RdPWZ1bmN0aW9uKCl7by5hcHBseSh0aGlzLGFyZ3Vt
ZW50cyksbi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9OmVbdF09bn19ZnVuY3Rpb24gc2UoZSx0LG4s
cixpKXt2YXIgbyxhLHMsYyx1LGw7Zm9yKG8gaW4gZSlpZihhPWVbb10scz10W29dLGEpaWYocyl7
aWYoYSE9PXMpaWYoQXJyYXkuaXNBcnJheShzKSl7cy5sZW5ndGg9YS5sZW5ndGg7Zm9yKHZhciBm
PTA7ZjxzLmxlbmd0aDtmKyspc1tmXT1hW2ZdO2Vbb109c31lbHNlIHMuZm49YSxlW29dPXN9ZWxz
ZSBsPSIhIj09PW8uY2hhckF0KDApLHU9bD9vLnNsaWNlKDEpOm8sQXJyYXkuaXNBcnJheShhKT9u
KHUsYS5pbnZva2VyPWNlKGEpLGwpOihhLmludm9rZXJ8fChjPWEsYT1lW29dPXt9LGEuZm49Yyxh
Lmludm9rZXI9dWUoYSkpLG4odSxhLmludm9rZXIsbCkpO2Vsc2U7Zm9yKG8gaW4gdCllW29dfHwo
dT0iISI9PT1vLmNoYXJBdCgwKT9vLnNsaWNlKDEpOm8scih1LHRbb10uaW52b2tlcikpfWZ1bmN0
aW9uIGNlKGUpe3JldHVybiBmdW5jdGlvbih0KXtmb3IodmFyIG49YXJndW1lbnRzLHI9MT09PWFy
Z3VtZW50cy5sZW5ndGgsaT0wO2k8ZS5sZW5ndGg7aSsrKXI/ZVtpXSh0KTplW2ldLmFwcGx5KG51
bGwsbil9fWZ1bmN0aW9uIHVlKGUpe3JldHVybiBmdW5jdGlvbih0KXt2YXIgbj0xPT09YXJndW1l
bnRzLmxlbmd0aDtuP2UuZm4odCk6ZS5mbi5hcHBseShudWxsLGFyZ3VtZW50cyl9fWZ1bmN0aW9u
IGxlKGUsdCxuKXtpZihzKGUpKXJldHVybltmZShlKV07aWYoQXJyYXkuaXNBcnJheShlKSl7Zm9y
KHZhciByPVtdLGk9MCxvPWUubGVuZ3RoO2k8bztpKyspe3ZhciBhPWVbaV0sYz1yW3IubGVuZ3Ro
LTFdO0FycmF5LmlzQXJyYXkoYSk/ci5wdXNoLmFwcGx5KHIsbGUoYSx0LChufHwiIikrIl8iK2kp
KTpzKGEpP2MmJmMudGV4dD9jLnRleHQrPVN0cmluZyhhKToiIiE9PWEmJnIucHVzaChmZShhKSk6
YSBpbnN0YW5jZW9mIExpJiYoYS50ZXh0JiZjJiZjLnRleHQ/Yy5pc0Nsb25lZHx8KGMudGV4dCs9
YS50ZXh0KToodCYmZGUoYSx0KSxhLnRhZyYmbnVsbD09YS5rZXkmJm51bGwhPW4mJihhLmtleT0i
X192bGlzdCIrbisiXyIraSsiX18iKSxyLnB1c2goYSkpKX1yZXR1cm4gcn19ZnVuY3Rpb24gZmUo
ZSl7cmV0dXJuIG5ldyBMaSh2b2lkIDAsdm9pZCAwLHZvaWQgMCxTdHJpbmcoZSkpfWZ1bmN0aW9u
IGRlKGUsdCl7aWYoZS50YWcmJiFlLm5zJiYoZS5ucz10LGUuY2hpbGRyZW4pKWZvcih2YXIgbj0w
LHI9ZS5jaGlsZHJlbi5sZW5ndGg7bjxyO24rKylkZShlLmNoaWxkcmVuW25dLHQpfWZ1bmN0aW9u
IHBlKGUpe3JldHVybiBlJiZlLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5jb21wb25l
bnRPcHRpb25zfSlbMF19ZnVuY3Rpb24gaGUoZSl7dmFyIHQ9ZS4kb3B0aW9ucyxuPXQucGFyZW50
O2lmKG4mJiF0LmFic3RyYWN0KXtmb3IoO24uJG9wdGlvbnMuYWJzdHJhY3QmJm4uJHBhcmVudDsp
bj1uLiRwYXJlbnQ7bi4kY2hpbGRyZW4ucHVzaChlKX1lLiRwYXJlbnQ9bixlLiRyb290PW4/bi4k
cm9vdDplLGUuJGNoaWxkcmVuPVtdLGUuJHJlZnM9e30sZS5fd2F0Y2hlcj1udWxsLGUuX2luYWN0
aXZlPSExLGUuX2lzTW91bnRlZD0hMSxlLl9pc0Rlc3Ryb3llZD0hMSxlLl9pc0JlaW5nRGVzdHJv
eWVkPSExfWZ1bmN0aW9uIHZlKGUpe2UucHJvdG90eXBlLl9tb3VudD1mdW5jdGlvbihlLHQpe3Zh
ciBuPXRoaXM7cmV0dXJuIG4uJGVsPWUsbi4kb3B0aW9ucy5yZW5kZXJ8fChuLiRvcHRpb25zLnJl
bmRlcj1NaSksbWUobiwiYmVmb3JlTW91bnQiKSxuLl93YXRjaGVyPW5ldyBFaShuLGZ1bmN0aW9u
KCl7bi5fdXBkYXRlKG4uX3JlbmRlcigpLHQpfSx2KSx0PSExLG51bGw9PW4uJHZub2RlJiYobi5f
aXNNb3VudGVkPSEwLG1lKG4sIm1vdW50ZWQiKSksbn0sZS5wcm90b3R5cGUuX3VwZGF0ZT1mdW5j
dGlvbihlLHQpe3ZhciBuPXRoaXM7bi5faXNNb3VudGVkJiZtZShuLCJiZWZvcmVVcGRhdGUiKTt2
YXIgcj1uLiRlbCxpPVBpO1BpPW47dmFyIG89bi5fdm5vZGU7bi5fdm5vZGU9ZSxvP24uJGVsPW4u
X19wYXRjaF9fKG8sZSk6bi4kZWw9bi5fX3BhdGNoX18obi4kZWwsZSx0KSxQaT1pLHImJihyLl9f
dnVlX189bnVsbCksbi4kZWwmJihuLiRlbC5fX3Z1ZV9fPW4pLG4uJHZub2RlJiZuLiRwYXJlbnQm
Jm4uJHZub2RlPT09bi4kcGFyZW50Ll92bm9kZSYmKG4uJHBhcmVudC4kZWw9bi4kZWwpLG4uX2lz
TW91bnRlZCYmbWUobiwidXBkYXRlZCIpfSxlLnByb3RvdHlwZS5fdXBkYXRlRnJvbVBhcmVudD1m
dW5jdGlvbihlLHQsbixyKXt2YXIgaT10aGlzLG89ISghaS4kb3B0aW9ucy5fcmVuZGVyQ2hpbGRy
ZW4mJiFyKTtpZihpLiRvcHRpb25zLl9wYXJlbnRWbm9kZT1uLGkuJHZub2RlPW4saS5fdm5vZGUm
JihpLl92bm9kZS5wYXJlbnQ9biksaS4kb3B0aW9ucy5fcmVuZGVyQ2hpbGRyZW49cixlJiZpLiRv
cHRpb25zLnByb3BzKXtfaS5zaG91bGRDb252ZXJ0PSExO2Zvcih2YXIgYT1pLiRvcHRpb25zLl9w
cm9wS2V5c3x8W10scz0wO3M8YS5sZW5ndGg7cysrKXt2YXIgYz1hW3NdO2lbY109SShjLGkuJG9w
dGlvbnMucHJvcHMsZSxpKX1faS5zaG91bGRDb252ZXJ0PSEwLGkuJG9wdGlvbnMucHJvcHNEYXRh
PWV9aWYodCl7dmFyIHU9aS4kb3B0aW9ucy5fcGFyZW50TGlzdGVuZXJzO2kuJG9wdGlvbnMuX3Bh
cmVudExpc3RlbmVycz10LGkuX3VwZGF0ZUxpc3RlbmVycyh0LHUpfW8mJihpLiRzbG90cz1MZShy
LGkuX3JlbmRlckNvbnRleHQpLGkuJGZvcmNlVXBkYXRlKCkpfSxlLnByb3RvdHlwZS4kZm9yY2VV
cGRhdGU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO2UuX3dhdGNoZXImJmUuX3dhdGNoZXIudXBkYXRl
KCl9LGUucHJvdG90eXBlLiRkZXN0cm95PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcztpZighZS5faXNC
ZWluZ0Rlc3Ryb3llZCl7bWUoZSwiYmVmb3JlRGVzdHJveSIpLGUuX2lzQmVpbmdEZXN0cm95ZWQ9
ITA7dmFyIHQ9ZS4kcGFyZW50OyF0fHx0Ll9pc0JlaW5nRGVzdHJveWVkfHxlLiRvcHRpb25zLmFi
c3RyYWN0fHxvKHQuJGNoaWxkcmVuLGUpLGUuX3dhdGNoZXImJmUuX3dhdGNoZXIudGVhcmRvd24o
KTtmb3IodmFyIG49ZS5fd2F0Y2hlcnMubGVuZ3RoO24tLTspZS5fd2F0Y2hlcnNbbl0udGVhcmRv
d24oKTtlLl9kYXRhLl9fb2JfXyYmZS5fZGF0YS5fX29iX18udm1Db3VudC0tLGUuX2lzRGVzdHJv
eWVkPSEwLG1lKGUsImRlc3Ryb3llZCIpLGUuJG9mZigpLGUuJGVsJiYoZS4kZWwuX192dWVfXz1u
dWxsKSxlLl9fcGF0Y2hfXyhlLl92bm9kZSxudWxsKX19fWZ1bmN0aW9uIG1lKGUsdCl7dmFyIG49
ZS4kb3B0aW9uc1t0XTtpZihuKWZvcih2YXIgcj0wLGk9bi5sZW5ndGg7cjxpO3IrKyluW3JdLmNh
bGwoZSk7ZS4kZW1pdCgiaG9vazoiK3QpfWZ1bmN0aW9uIGdlKGUsdCxuLHIsaSl7aWYoZSl7dmFy
IG89bi4kb3B0aW9ucy5fYmFzZTtpZihkKGUpJiYoZT1vLmV4dGVuZChlKSksImZ1bmN0aW9uIj09
dHlwZW9mIGUpe2lmKCFlLmNpZClpZihlLnJlc29sdmVkKWU9ZS5yZXNvbHZlZDtlbHNlIGlmKGU9
Q2UoZSxvLGZ1bmN0aW9uKCl7bi4kZm9yY2VVcGRhdGUoKX0pLCFlKXJldHVybjtCZShlKSx0PXR8
fHt9O3ZhciBhPUFlKHQsZSk7aWYoZS5vcHRpb25zLmZ1bmN0aW9uYWwpcmV0dXJuIHllKGUsYSx0
LG4scik7dmFyIHM9dC5vbjt0Lm9uPXQubmF0aXZlT24sZS5vcHRpb25zLmFic3RyYWN0JiYodD17
fSksT2UodCk7dmFyIGM9ZS5vcHRpb25zLm5hbWV8fGksdT1uZXcgTGkoInZ1ZS1jb21wb25lbnQt
IitlLmNpZCsoYz8iLSIrYzoiIiksdCx2b2lkIDAsdm9pZCAwLHZvaWQgMCx2b2lkIDAsbix7Q3Rv
cjplLHByb3BzRGF0YTphLGxpc3RlbmVyczpzLHRhZzppLGNoaWxkcmVuOnJ9KTtyZXR1cm4gdX19
fWZ1bmN0aW9uIHllKGUsdCxuLHIsaSl7dmFyIG89e30sYT1lLm9wdGlvbnMucHJvcHM7aWYoYSlm
b3IodmFyIHMgaW4gYSlvW3NdPUkocyxhLHQpO3ZhciBjPWUub3B0aW9ucy5yZW5kZXIuY2FsbChu
dWxsLHUoVGUse19zZWxmOk9iamVjdC5jcmVhdGUocil9KSx7cHJvcHM6byxkYXRhOm4scGFyZW50
OnIsY2hpbGRyZW46bGUoaSksc2xvdHM6ZnVuY3Rpb24oKXtyZXR1cm4gTGUoaSxyKX19KTtyZXR1
cm4gYyBpbnN0YW5jZW9mIExpJiYoYy5mdW5jdGlvbmFsQ29udGV4dD1yLG4uc2xvdCYmKChjLmRh
dGF8fChjLmRhdGE9e30pKS5zbG90PW4uc2xvdCkpLGN9ZnVuY3Rpb24gX2UoZSx0KXt2YXIgbj1l
LmNvbXBvbmVudE9wdGlvbnMscj17X2lzQ29tcG9uZW50OiEwLHBhcmVudDp0LHByb3BzRGF0YTpu
LnByb3BzRGF0YSxfY29tcG9uZW50VGFnOm4udGFnLF9wYXJlbnRWbm9kZTplLF9wYXJlbnRMaXN0
ZW5lcnM6bi5saXN0ZW5lcnMsX3JlbmRlckNoaWxkcmVuOm4uY2hpbGRyZW59LGk9ZS5kYXRhLmlu
bGluZVRlbXBsYXRlO3JldHVybiBpJiYoci5yZW5kZXI9aS5yZW5kZXIsci5zdGF0aWNSZW5kZXJG
bnM9aS5zdGF0aWNSZW5kZXJGbnMpLG5ldyBuLkN0b3Iocil9ZnVuY3Rpb24gYmUoZSx0KXtpZigh
ZS5jaGlsZHx8ZS5jaGlsZC5faXNEZXN0cm95ZWQpe3ZhciBuPWUuY2hpbGQ9X2UoZSxQaSk7bi4k
bW91bnQodD9lLmVsbTp2b2lkIDAsdCl9ZWxzZSBpZihlLmRhdGEua2VlcEFsaXZlKXt2YXIgcj1l
O3dlKHIscil9fWZ1bmN0aW9uIHdlKGUsdCl7dmFyIG49dC5jb21wb25lbnRPcHRpb25zLHI9dC5j
aGlsZD1lLmNoaWxkO3IuX3VwZGF0ZUZyb21QYXJlbnQobi5wcm9wc0RhdGEsbi5saXN0ZW5lcnMs
dCxuLmNoaWxkcmVuKX1mdW5jdGlvbiB4ZShlKXtlLmNoaWxkLl9pc01vdW50ZWR8fChlLmNoaWxk
Ll9pc01vdW50ZWQ9ITAsbWUoZS5jaGlsZCwibW91bnRlZCIpKSxlLmRhdGEua2VlcEFsaXZlJiYo
ZS5jaGlsZC5faW5hY3RpdmU9ITEsbWUoZS5jaGlsZCwiYWN0aXZhdGVkIikpfWZ1bmN0aW9uICRl
KGUpe2UuY2hpbGQuX2lzRGVzdHJveWVkfHwoZS5kYXRhLmtlZXBBbGl2ZT8oZS5jaGlsZC5faW5h
Y3RpdmU9ITAsbWUoZS5jaGlsZCwiZGVhY3RpdmF0ZWQiKSk6ZS5jaGlsZC4kZGVzdHJveSgpKX1m
dW5jdGlvbiBDZShlLHQsbil7aWYoIWUucmVxdWVzdGVkKXtlLnJlcXVlc3RlZD0hMDt2YXIgcj1l
LnBlbmRpbmdDYWxsYmFja3M9W25dLGk9ITAsbz1mdW5jdGlvbihuKXtpZihkKG4pJiYobj10LmV4
dGVuZChuKSksZS5yZXNvbHZlZD1uLCFpKWZvcih2YXIgbz0wLGE9ci5sZW5ndGg7bzxhO28rKyly
W29dKG4pfSxhPWZ1bmN0aW9uKGUpe30scz1lKG8sYSk7cmV0dXJuIHMmJiJmdW5jdGlvbiI9PXR5
cGVvZiBzLnRoZW4mJiFlLnJlc29sdmVkJiZzLnRoZW4obyxhKSxpPSExLGUucmVzb2x2ZWR9ZS5w
ZW5kaW5nQ2FsbGJhY2tzLnB1c2gobil9ZnVuY3Rpb24gQWUoZSx0KXt2YXIgbj10Lm9wdGlvbnMu
cHJvcHM7aWYobil7dmFyIHI9e30saT1lLmF0dHJzLG89ZS5wcm9wcyxhPWUuZG9tUHJvcHM7aWYo
aXx8b3x8YSlmb3IodmFyIHMgaW4gbil7dmFyIGM9V3Iocyk7a2UocixvLHMsYywhMCl8fGtlKHIs
aSxzLGMpfHxrZShyLGEscyxjKX1yZXR1cm4gcn19ZnVuY3Rpb24ga2UoZSx0LG4scixpKXtpZih0
KXtpZihhKHQsbikpcmV0dXJuIGVbbl09dFtuXSxpfHxkZWxldGUgdFtuXSwhMDtpZihhKHQscikp
cmV0dXJuIGVbbl09dFtyXSxpfHxkZWxldGUgdFtyXSwhMH1yZXR1cm4hMX1mdW5jdGlvbiBPZShl
KXtlLmhvb2t8fChlLmhvb2s9e30pO2Zvcih2YXIgdD0wO3Q8UmkubGVuZ3RoO3QrKyl7dmFyIG49
UmlbdF0scj1lLmhvb2tbbl0saT1EaVtuXTtlLmhvb2tbbl09cj9TZShpLHIpOml9fWZ1bmN0aW9u
IFNlKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKG4scil7ZShuLHIpLHQobixyKX19ZnVuY3Rpb24gVGUo
ZSx0LG4pe3JldHVybiB0JiYoQXJyYXkuaXNBcnJheSh0KXx8Im9iamVjdCIhPXR5cGVvZiB0KSYm
KG49dCx0PXZvaWQgMCksRWUodGhpcy5fc2VsZixlLHQsbil9ZnVuY3Rpb24gRWUoZSx0LG4scil7
aWYoIW58fCFuLl9fb2JfXyl7aWYoIXQpcmV0dXJuIE1pKCk7aWYoQXJyYXkuaXNBcnJheShyKSYm
ImZ1bmN0aW9uIj09dHlwZW9mIHJbMF0mJihuPW58fHt9LG4uc2NvcGVkU2xvdHM9e2RlZmF1bHQ6
clswXX0sci5sZW5ndGg9MCksInN0cmluZyI9PXR5cGVvZiB0KXt2YXIgaSxvPWZpLmdldFRhZ05h
bWVzcGFjZSh0KTtpZihmaS5pc1Jlc2VydmVkVGFnKHQpKXJldHVybiBuZXcgTGkodCxuLGxlKHIs
byksdm9pZCAwLHZvaWQgMCxvLGUpO2lmKGk9QihlLiRvcHRpb25zLCJjb21wb25lbnRzIix0KSly
ZXR1cm4gZ2UoaSxuLGUscix0KTt2YXIgYT0iZm9yZWlnbk9iamVjdCI9PT10PyJ4aHRtbCI6bzty
ZXR1cm4gbmV3IExpKHQsbixsZShyLGEpLHZvaWQgMCx2b2lkIDAsbyxlKX1yZXR1cm4gZ2UodCxu
LGUscil9fWZ1bmN0aW9uIGplKGUpe2UuJHZub2RlPW51bGwsZS5fdm5vZGU9bnVsbCxlLl9zdGF0
aWNUcmVlcz1udWxsLGUuX3JlbmRlckNvbnRleHQ9ZS4kb3B0aW9ucy5fcGFyZW50Vm5vZGUmJmUu
JG9wdGlvbnMuX3BhcmVudFZub2RlLmNvbnRleHQsZS4kc2xvdHM9TGUoZS4kb3B0aW9ucy5fcmVu
ZGVyQ2hpbGRyZW4sZS5fcmVuZGVyQ29udGV4dCksZS4kc2NvcGVkU2xvdHM9e30sZS4kY3JlYXRl
RWxlbWVudD11KFRlLGUpLGUuJG9wdGlvbnMuZWwmJmUuJG1vdW50KGUuJG9wdGlvbnMuZWwpfWZ1
bmN0aW9uIE5lKGUpe2Z1bmN0aW9uIHQoZSx0LG4pe2lmKEFycmF5LmlzQXJyYXkoZSkpZm9yKHZh
ciByPTA7cjxlLmxlbmd0aDtyKyspZVtyXSYmInN0cmluZyIhPXR5cGVvZiBlW3JdJiZpKGVbcl0s
dCsiXyIrcixuKTtlbHNlIGkoZSx0LG4pfWZ1bmN0aW9uIGkoZSx0LG4pe2UuaXNTdGF0aWM9ITAs
ZS5rZXk9dCxlLmlzT25jZT1ufWUucHJvdG90eXBlLiRuZXh0VGljaz1mdW5jdGlvbihlKXtyZXR1
cm4gdWkoZSx0aGlzKX0sZS5wcm90b3R5cGUuX3JlbmRlcj1mdW5jdGlvbigpe3ZhciBlPXRoaXMs
dD1lLiRvcHRpb25zLG49dC5yZW5kZXIscj10LnN0YXRpY1JlbmRlckZucyxpPXQuX3BhcmVudFZu
b2RlO2lmKGUuX2lzTW91bnRlZClmb3IodmFyIG8gaW4gZS4kc2xvdHMpZS4kc2xvdHNbb109b2Uo
ZS4kc2xvdHNbb10pO2kmJmkuZGF0YS5zY29wZWRTbG90cyYmKGUuJHNjb3BlZFNsb3RzPWkuZGF0
YS5zY29wZWRTbG90cyksciYmIWUuX3N0YXRpY1RyZWVzJiYoZS5fc3RhdGljVHJlZXM9W10pLGUu
JHZub2RlPWk7dmFyIGE7dHJ5e2E9bi5jYWxsKGUuX3JlbmRlclByb3h5LGUuJGNyZWF0ZUVsZW1l
bnQpfWNhdGNoKHQpe2lmKGZpLmVycm9ySGFuZGxlcilmaS5lcnJvckhhbmRsZXIuY2FsbChudWxs
LHQsZSk7ZWxzZXtpZihzaSgpKXRocm93IHQ7Y29uc29sZS5lcnJvcih0KX1hPWUuX3Zub2RlfXJl
dHVybiBhIGluc3RhbmNlb2YgTGl8fChhPU1pKCkpLGEucGFyZW50PWksYX0sZS5wcm90b3R5cGUu
X2g9VGUsZS5wcm90b3R5cGUuX3M9bixlLnByb3RvdHlwZS5fbj1yLGUucHJvdG90eXBlLl9lPU1p
LGUucHJvdG90eXBlLl9xPWcsZS5wcm90b3R5cGUuX2k9eSxlLnByb3RvdHlwZS5fbT1mdW5jdGlv
bihlLG4pe3ZhciByPXRoaXMuX3N0YXRpY1RyZWVzW2VdO3JldHVybiByJiYhbj9BcnJheS5pc0Fy
cmF5KHIpP29lKHIpOmllKHIpOihyPXRoaXMuX3N0YXRpY1RyZWVzW2VdPXRoaXMuJG9wdGlvbnMu
c3RhdGljUmVuZGVyRm5zW2VdLmNhbGwodGhpcy5fcmVuZGVyUHJveHkpLHQociwiX19zdGF0aWNf
XyIrZSwhMSkscil9LGUucHJvdG90eXBlLl9vPWZ1bmN0aW9uKGUsbixyKXtyZXR1cm4gdChlLCJf
X29uY2VfXyIrbisocj8iXyIrcjoiIiksITApLGV9O3ZhciBvPWZ1bmN0aW9uKGUpe3JldHVybiBl
fTtlLnByb3RvdHlwZS5fZj1mdW5jdGlvbihlKXtyZXR1cm4gQih0aGlzLiRvcHRpb25zLCJmaWx0
ZXJzIixlLCEwKXx8b30sZS5wcm90b3R5cGUuX2w9ZnVuY3Rpb24oZSx0KXt2YXIgbixyLGksbyxh
O2lmKEFycmF5LmlzQXJyYXkoZSkpZm9yKG49bmV3IEFycmF5KGUubGVuZ3RoKSxyPTAsaT1lLmxl
bmd0aDtyPGk7cisrKW5bcl09dChlW3JdLHIpO2Vsc2UgaWYoIm51bWJlciI9PXR5cGVvZiBlKWZv
cihuPW5ldyBBcnJheShlKSxyPTA7cjxlO3IrKyluW3JdPXQocisxLHIpO2Vsc2UgaWYoZChlKSlm
b3Iobz1PYmplY3Qua2V5cyhlKSxuPW5ldyBBcnJheShvLmxlbmd0aCkscj0wLGk9by5sZW5ndGg7
cjxpO3IrKylhPW9bcl0sbltyXT10KGVbYV0sYSxyKTtyZXR1cm4gbn0sZS5wcm90b3R5cGUuX3Q9
ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuJHNjb3BlZFNsb3RzW2VdO2lmKHIpcmV0dXJuIHIo
bnx8e30pfHx0O3ZhciBpPXRoaXMuJHNsb3RzW2VdO3JldHVybiBpfHx0fSxlLnByb3RvdHlwZS5f
Yj1mdW5jdGlvbihlLHQsbixyKXtpZihuKWlmKGQobikpe0FycmF5LmlzQXJyYXkobikmJihuPWgo
bikpO2Zvcih2YXIgaSBpbiBuKWlmKCJjbGFzcyI9PT1pfHwic3R5bGUiPT09aSllW2ldPW5baV07
ZWxzZXt2YXIgbz1yfHxmaS5tdXN0VXNlUHJvcCh0LGkpP2UuZG9tUHJvcHN8fChlLmRvbVByb3Bz
PXt9KTplLmF0dHJzfHwoZS5hdHRycz17fSk7b1tpXT1uW2ldfX1lbHNlO3JldHVybiBlfSxlLnBy
b3RvdHlwZS5faz1mdW5jdGlvbihlKXtyZXR1cm4gZmkua2V5Q29kZXNbZV19fWZ1bmN0aW9uIExl
KGUsdCl7dmFyIG49e307aWYoIWUpcmV0dXJuIG47Zm9yKHZhciByLGksbz1sZShlKXx8W10sYT1b
XSxzPTAsYz1vLmxlbmd0aDtzPGM7cysrKWlmKGk9b1tzXSwoaS5jb250ZXh0PT09dHx8aS5mdW5j
dGlvbmFsQ29udGV4dD09PXQpJiZpLmRhdGEmJihyPWkuZGF0YS5zbG90KSl7dmFyIHU9bltyXXx8
KG5bcl09W10pOyJ0ZW1wbGF0ZSI9PT1pLnRhZz91LnB1c2guYXBwbHkodSxpLmNoaWxkcmVuKTp1
LnB1c2goaSl9ZWxzZSBhLnB1c2goaSk7cmV0dXJuIGEubGVuZ3RoJiYoMSE9PWEubGVuZ3RofHwi
ICIhPT1hWzBdLnRleHQmJiFhWzBdLmlzQ29tbWVudCkmJihuLmRlZmF1bHQ9YSksbn1mdW5jdGlv
biBNZShlKXtlLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKTt2YXIgdD1lLiRvcHRpb25zLl9w
YXJlbnRMaXN0ZW5lcnMsbj11KGUuJG9uLGUpLHI9dShlLiRvZmYsZSk7ZS5fdXBkYXRlTGlzdGVu
ZXJzPWZ1bmN0aW9uKHQsaSl7c2UodCxpfHx7fSxuLHIsZSl9LHQmJmUuX3VwZGF0ZUxpc3RlbmVy
cyh0KX1mdW5jdGlvbiBQZShlKXtlLnByb3RvdHlwZS4kb249ZnVuY3Rpb24oZSx0KXt2YXIgbj10
aGlzO3JldHVybihuLl9ldmVudHNbZV18fChuLl9ldmVudHNbZV09W10pKS5wdXNoKHQpLG59LGUu
cHJvdG90eXBlLiRvbmNlPWZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gbigpe3IuJG9mZihlLG4pLHQu
YXBwbHkocixhcmd1bWVudHMpfXZhciByPXRoaXM7cmV0dXJuIG4uZm49dCxyLiRvbihlLG4pLHJ9
LGUucHJvdG90eXBlLiRvZmY9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzO2lmKCFhcmd1bWVudHMu
bGVuZ3RoKXJldHVybiBuLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKSxuO3ZhciByPW4uX2V2
ZW50c1tlXTtpZighcilyZXR1cm4gbjtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gbi5f
ZXZlbnRzW2VdPW51bGwsbjtmb3IodmFyIGksbz1yLmxlbmd0aDtvLS07KWlmKGk9cltvXSxpPT09
dHx8aS5mbj09PXQpe3Iuc3BsaWNlKG8sMSk7YnJlYWt9cmV0dXJuIG59LGUucHJvdG90eXBlLiRl
bWl0PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsbj10Ll9ldmVudHNbZV07aWYobil7bj1uLmxlbmd0
aD4xP2wobik6bjtmb3IodmFyIHI9bChhcmd1bWVudHMsMSksaT0wLG89bi5sZW5ndGg7aTxvO2kr
KyluW2ldLmFwcGx5KHQscil9cmV0dXJuIHR9fWZ1bmN0aW9uIERlKGUpe2UucHJvdG90eXBlLl9p
bml0PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7dC5fdWlkPUJpKyssdC5faXNWdWU9ITAsZSYmZS5f
aXNDb21wb25lbnQ/UmUodCxlKTp0LiRvcHRpb25zPVIoQmUodC5jb25zdHJ1Y3RvciksZXx8e30s
dCksdC5fcmVuZGVyUHJveHk9dCx0Ll9zZWxmPXQsaGUodCksTWUodCksbWUodCwiYmVmb3JlQ3Jl
YXRlIiksVyh0KSxtZSh0LCJjcmVhdGVkIiksamUodCl9fWZ1bmN0aW9uIFJlKGUsdCl7dmFyIG49
ZS4kb3B0aW9ucz1PYmplY3QuY3JlYXRlKGUuY29uc3RydWN0b3Iub3B0aW9ucyk7bi5wYXJlbnQ9
dC5wYXJlbnQsbi5wcm9wc0RhdGE9dC5wcm9wc0RhdGEsbi5fcGFyZW50Vm5vZGU9dC5fcGFyZW50
Vm5vZGUsbi5fcGFyZW50TGlzdGVuZXJzPXQuX3BhcmVudExpc3RlbmVycyxuLl9yZW5kZXJDaGls
ZHJlbj10Ll9yZW5kZXJDaGlsZHJlbixuLl9jb21wb25lbnRUYWc9dC5fY29tcG9uZW50VGFnLHQu
cmVuZGVyJiYobi5yZW5kZXI9dC5yZW5kZXIsbi5zdGF0aWNSZW5kZXJGbnM9dC5zdGF0aWNSZW5k
ZXJGbnMpfWZ1bmN0aW9uIEJlKGUpe3ZhciB0PWUub3B0aW9ucztpZihlLnN1cGVyKXt2YXIgbj1l
LnN1cGVyLm9wdGlvbnMscj1lLnN1cGVyT3B0aW9ucyxpPWUuZXh0ZW5kT3B0aW9ucztuIT09ciYm
KGUuc3VwZXJPcHRpb25zPW4saS5yZW5kZXI9dC5yZW5kZXIsaS5zdGF0aWNSZW5kZXJGbnM9dC5z
dGF0aWNSZW5kZXJGbnMsaS5fc2NvcGVJZD10Ll9zY29wZUlkLHQ9ZS5vcHRpb25zPVIobixpKSx0
Lm5hbWUmJih0LmNvbXBvbmVudHNbdC5uYW1lXT1lKSl9cmV0dXJuIHR9ZnVuY3Rpb24gSWUoZSl7
dGhpcy5faW5pdChlKX1mdW5jdGlvbiBIZShlKXtlLnVzZT1mdW5jdGlvbihlKXtpZighZS5pbnN0
YWxsZWQpe3ZhciB0PWwoYXJndW1lbnRzLDEpO3JldHVybiB0LnVuc2hpZnQodGhpcyksImZ1bmN0
aW9uIj09dHlwZW9mIGUuaW5zdGFsbD9lLmluc3RhbGwuYXBwbHkoZSx0KTplLmFwcGx5KG51bGws
dCksZS5pbnN0YWxsZWQ9ITAsdGhpc319fWZ1bmN0aW9uIEZlKGUpe2UubWl4aW49ZnVuY3Rpb24o
ZSl7dGhpcy5vcHRpb25zPVIodGhpcy5vcHRpb25zLGUpfX1mdW5jdGlvbiBVZShlKXtlLmNpZD0w
O3ZhciB0PTE7ZS5leHRlbmQ9ZnVuY3Rpb24oZSl7ZT1lfHx7fTt2YXIgbj10aGlzLHI9bi5jaWQs
aT1lLl9DdG9yfHwoZS5fQ3Rvcj17fSk7aWYoaVtyXSlyZXR1cm4gaVtyXTt2YXIgbz1lLm5hbWV8
fG4ub3B0aW9ucy5uYW1lLGE9ZnVuY3Rpb24oZSl7dGhpcy5faW5pdChlKX07cmV0dXJuIGEucHJv
dG90eXBlPU9iamVjdC5jcmVhdGUobi5wcm90b3R5cGUpLGEucHJvdG90eXBlLmNvbnN0cnVjdG9y
PWEsYS5jaWQ9dCsrLGEub3B0aW9ucz1SKG4ub3B0aW9ucyxlKSxhLnN1cGVyPW4sYS5leHRlbmQ9
bi5leHRlbmQsYS5taXhpbj1uLm1peGluLGEudXNlPW4udXNlLGZpLl9hc3NldFR5cGVzLmZvckVh
Y2goZnVuY3Rpb24oZSl7YVtlXT1uW2VdfSksbyYmKGEub3B0aW9ucy5jb21wb25lbnRzW29dPWEp
LGEuc3VwZXJPcHRpb25zPW4ub3B0aW9ucyxhLmV4dGVuZE9wdGlvbnM9ZSxpW3JdPWEsYX19ZnVu
Y3Rpb24gemUoZSl7ZmkuX2Fzc2V0VHlwZXMuZm9yRWFjaChmdW5jdGlvbih0KXtlW3RdPWZ1bmN0
aW9uKGUsbil7cmV0dXJuIG4/KCJjb21wb25lbnQiPT09dCYmcChuKSYmKG4ubmFtZT1uLm5hbWV8
fGUsbj10aGlzLm9wdGlvbnMuX2Jhc2UuZXh0ZW5kKG4pKSwiZGlyZWN0aXZlIj09PXQmJiJmdW5j
dGlvbiI9PXR5cGVvZiBuJiYobj17YmluZDpuLHVwZGF0ZTpufSksdGhpcy5vcHRpb25zW3QrInMi
XVtlXT1uLG4pOnRoaXMub3B0aW9uc1t0KyJzIl1bZV19fSl9ZnVuY3Rpb24gVmUoZSx0KXtyZXR1
cm4ic3RyaW5nIj09dHlwZW9mIGU/ZS5zcGxpdCgiLCIpLmluZGV4T2YodCk+LTE6ZS50ZXN0KHQp
fWZ1bmN0aW9uIEplKGUpe3ZhciB0PXt9O3QuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIGZpfSxPYmpl
Y3QuZGVmaW5lUHJvcGVydHkoZSwiY29uZmlnIix0KSxlLnV0aWw9JGksZS5zZXQ9VCxlLmRlbGV0
ZT1FLGUubmV4dFRpY2s9dWksZS5vcHRpb25zPU9iamVjdC5jcmVhdGUobnVsbCksZmkuX2Fzc2V0
VHlwZXMuZm9yRWFjaChmdW5jdGlvbih0KXtlLm9wdGlvbnNbdCsicyJdPU9iamVjdC5jcmVhdGUo
bnVsbCl9KSxlLm9wdGlvbnMuX2Jhc2U9ZSxmKGUub3B0aW9ucy5jb21wb25lbnRzLEZpKSxIZShl
KSxGZShlKSxVZShlKSx6ZShlKX1mdW5jdGlvbiBxZShlKXtmb3IodmFyIHQ9ZS5kYXRhLG49ZSxy
PWU7ci5jaGlsZDspcj1yLmNoaWxkLl92bm9kZSxyLmRhdGEmJih0PUtlKHIuZGF0YSx0KSk7Zm9y
KDtuPW4ucGFyZW50OyluLmRhdGEmJih0PUtlKHQsbi5kYXRhKSk7cmV0dXJuIFdlKHQpfWZ1bmN0
aW9uIEtlKGUsdCl7cmV0dXJue3N0YXRpY0NsYXNzOlplKGUuc3RhdGljQ2xhc3MsdC5zdGF0aWND
bGFzcyksY2xhc3M6ZS5jbGFzcz9bZS5jbGFzcyx0LmNsYXNzXTp0LmNsYXNzfX1mdW5jdGlvbiBX
ZShlKXt2YXIgdD1lLmNsYXNzLG49ZS5zdGF0aWNDbGFzcztyZXR1cm4gbnx8dD9aZShuLEdlKHQp
KToiIn1mdW5jdGlvbiBaZShlLHQpe3JldHVybiBlP3Q/ZSsiICIrdDplOnR8fCIifWZ1bmN0aW9u
IEdlKGUpe3ZhciB0PSIiO2lmKCFlKXJldHVybiB0O2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1
cm4gZTtpZihBcnJheS5pc0FycmF5KGUpKXtmb3IodmFyIG4scj0wLGk9ZS5sZW5ndGg7cjxpO3Ir
KyllW3JdJiYobj1HZShlW3JdKSkmJih0Kz1uKyIgIik7cmV0dXJuIHQuc2xpY2UoMCwtMSl9aWYo
ZChlKSl7Zm9yKHZhciBvIGluIGUpZVtvXSYmKHQrPW8rIiAiKTtyZXR1cm4gdC5zbGljZSgwLC0x
KX1yZXR1cm4gdH1mdW5jdGlvbiBZZShlKXtyZXR1cm4gdG8oZSk/InN2ZyI6Im1hdGgiPT09ZT8i
bWF0aCI6dm9pZCAwfWZ1bmN0aW9uIFFlKGUpe2lmKCFlaSlyZXR1cm4hMDtpZihybyhlKSlyZXR1
cm4hMTtpZihlPWUudG9Mb3dlckNhc2UoKSxudWxsIT1pb1tlXSlyZXR1cm4gaW9bZV07dmFyIHQ9
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChlKTtyZXR1cm4gZS5pbmRleE9mKCItIik+LTE/aW9bZV09
dC5jb25zdHJ1Y3Rvcj09PXdpbmRvdy5IVE1MVW5rbm93bkVsZW1lbnR8fHQuY29uc3RydWN0b3I9
PT13aW5kb3cuSFRNTEVsZW1lbnQ6aW9bZV09L0hUTUxVbmtub3duRWxlbWVudC8udGVzdCh0LnRv
U3RyaW5nKCkpfWZ1bmN0aW9uIFhlKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgZSl7aWYoZT1kb2N1
bWVudC5xdWVyeVNlbGVjdG9yKGUpLCFlKXJldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKX1yZXR1cm4gZX1mdW5jdGlvbiBldChlLHQpe3ZhciBuPWRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoZSk7cmV0dXJuInNlbGVjdCIhPT1lP246KHQuZGF0YSYmdC5kYXRhLmF0dHJzJiYibXVsdGlw
bGUiaW4gdC5kYXRhLmF0dHJzJiZuLnNldEF0dHJpYnV0ZSgibXVsdGlwbGUiLCJtdWx0aXBsZSIp
LG4pfWZ1bmN0aW9uIHR0KGUsdCl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhHaVtl
XSx0KX1mdW5jdGlvbiBudChlKXtyZXR1cm4gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZSl9ZnVu
Y3Rpb24gcnQoZSl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZUNvbW1lbnQoZSl9ZnVuY3Rpb24gaXQo
ZSx0LG4pe2UuaW5zZXJ0QmVmb3JlKHQsbil9ZnVuY3Rpb24gb3QoZSx0KXtlLnJlbW92ZUNoaWxk
KHQpfWZ1bmN0aW9uIGF0KGUsdCl7ZS5hcHBlbmRDaGlsZCh0KX1mdW5jdGlvbiBzdChlKXtyZXR1
cm4gZS5wYXJlbnROb2RlfWZ1bmN0aW9uIGN0KGUpe3JldHVybiBlLm5leHRTaWJsaW5nfWZ1bmN0
aW9uIHV0KGUpe3JldHVybiBlLnRhZ05hbWV9ZnVuY3Rpb24gbHQoZSx0KXtlLnRleHRDb250ZW50
PXR9ZnVuY3Rpb24gZnQoZSl7cmV0dXJuIGUuY2hpbGROb2Rlc31mdW5jdGlvbiBkdChlLHQsbil7
ZS5zZXRBdHRyaWJ1dGUodCxuKX1mdW5jdGlvbiBwdChlLHQpe3ZhciBuPWUuZGF0YS5yZWY7aWYo
bil7dmFyIHI9ZS5jb250ZXh0LGk9ZS5jaGlsZHx8ZS5lbG0sYT1yLiRyZWZzO3Q/QXJyYXkuaXNB
cnJheShhW25dKT9vKGFbbl0saSk6YVtuXT09PWkmJihhW25dPXZvaWQgMCk6ZS5kYXRhLnJlZklu
Rm9yP0FycmF5LmlzQXJyYXkoYVtuXSkmJmFbbl0uaW5kZXhPZihpKTwwP2Fbbl0ucHVzaChpKTph
W25dPVtpXTphW25dPWl9fWZ1bmN0aW9uIGh0KGUpe3JldHVybiBudWxsPT1lfWZ1bmN0aW9uIHZ0
KGUpe3JldHVybiBudWxsIT1lfWZ1bmN0aW9uIG10KGUsdCl7cmV0dXJuIGUua2V5PT09dC5rZXkm
JmUudGFnPT09dC50YWcmJmUuaXNDb21tZW50PT09dC5pc0NvbW1lbnQmJiFlLmRhdGE9PSF0LmRh
dGF9ZnVuY3Rpb24gZ3QoZSx0LG4pe3ZhciByLGksbz17fTtmb3Iocj10O3I8PW47KytyKWk9ZVty
XS5rZXksdnQoaSkmJihvW2ldPXIpO3JldHVybiBvfWZ1bmN0aW9uIHl0KGUpe2Z1bmN0aW9uIHQo
ZSl7cmV0dXJuIG5ldyBMaSgkLnRhZ05hbWUoZSkudG9Mb3dlckNhc2UoKSx7fSxbXSx2b2lkIDAs
ZSl9ZnVuY3Rpb24gbihlLHQpe2Z1bmN0aW9uIG4oKXswPT09LS1uLmxpc3RlbmVycyYmcihlKX1y
ZXR1cm4gbi5saXN0ZW5lcnM9dCxufWZ1bmN0aW9uIHIoZSl7dmFyIHQ9JC5wYXJlbnROb2RlKGUp
O3QmJiQucmVtb3ZlQ2hpbGQodCxlKX1mdW5jdGlvbiBpKGUsdCxuKXt2YXIgcixpPWUuZGF0YTtp
ZihlLmlzUm9vdEluc2VydD0hbix2dChpKSYmKHZ0KHI9aS5ob29rKSYmdnQocj1yLmluaXQpJiZy
KGUpLHZ0KHI9ZS5jaGlsZCkpKXJldHVybiB1KGUsdCksZS5lbG07dmFyIGE9ZS5jaGlsZHJlbixz
PWUudGFnO3JldHVybiB2dChzKT8oZS5lbG09ZS5ucz8kLmNyZWF0ZUVsZW1lbnROUyhlLm5zLHMp
OiQuY3JlYXRlRWxlbWVudChzLGUpLGwoZSksbyhlLGEsdCksdnQoaSkmJmMoZSx0KSk6ZS5pc0Nv
bW1lbnQ/ZS5lbG09JC5jcmVhdGVDb21tZW50KGUudGV4dCk6ZS5lbG09JC5jcmVhdGVUZXh0Tm9k
ZShlLnRleHQpLGUuZWxtfWZ1bmN0aW9uIG8oZSx0LG4pe2lmKEFycmF5LmlzQXJyYXkodCkpZm9y
KHZhciByPTA7cjx0Lmxlbmd0aDsrK3IpJC5hcHBlbmRDaGlsZChlLmVsbSxpKHRbcl0sbiwhMCkp
O2Vsc2UgcyhlLnRleHQpJiYkLmFwcGVuZENoaWxkKGUuZWxtLCQuY3JlYXRlVGV4dE5vZGUoZS50
ZXh0KSl9ZnVuY3Rpb24gYShlKXtmb3IoO2UuY2hpbGQ7KWU9ZS5jaGlsZC5fdm5vZGU7cmV0dXJu
IHZ0KGUudGFnKX1mdW5jdGlvbiBjKGUsdCl7Zm9yKHZhciBuPTA7bjx3LmNyZWF0ZS5sZW5ndGg7
KytuKXcuY3JlYXRlW25dKHNvLGUpO189ZS5kYXRhLmhvb2ssdnQoXykmJihfLmNyZWF0ZSYmXy5j
cmVhdGUoc28sZSksXy5pbnNlcnQmJnQucHVzaChlKSl9ZnVuY3Rpb24gdShlLHQpe2UuZGF0YS5w
ZW5kaW5nSW5zZXJ0JiZ0LnB1c2guYXBwbHkodCxlLmRhdGEucGVuZGluZ0luc2VydCksZS5lbG09
ZS5jaGlsZC4kZWwsYShlKT8oYyhlLHQpLGwoZSkpOihwdChlKSx0LnB1c2goZSkpfWZ1bmN0aW9u
IGwoZSl7dmFyIHQ7dnQodD1lLmNvbnRleHQpJiZ2dCh0PXQuJG9wdGlvbnMuX3Njb3BlSWQpJiYk
LnNldEF0dHJpYnV0ZShlLmVsbSx0LCIiKSx2dCh0PVBpKSYmdCE9PWUuY29udGV4dCYmdnQodD10
LiRvcHRpb25zLl9zY29wZUlkKSYmJC5zZXRBdHRyaWJ1dGUoZS5lbG0sdCwiIil9ZnVuY3Rpb24g
ZihlLHQsbixyLG8sYSl7Zm9yKDtyPD1vOysrcikkLmluc2VydEJlZm9yZShlLGkobltyXSxhKSx0
KX1mdW5jdGlvbiBkKGUpe3ZhciB0LG4scj1lLmRhdGE7aWYodnQocikpZm9yKHZ0KHQ9ci5ob29r
KSYmdnQodD10LmRlc3Ryb3kpJiZ0KGUpLHQ9MDt0PHcuZGVzdHJveS5sZW5ndGg7Kyt0KXcuZGVz
dHJveVt0XShlKTtpZih2dCh0PWUuY2hpbGRyZW4pKWZvcihuPTA7bjxlLmNoaWxkcmVuLmxlbmd0
aDsrK24pZChlLmNoaWxkcmVuW25dKX1mdW5jdGlvbiBwKGUsdCxuLHIpe2Zvcig7bjw9cjsrK24p
e3ZhciBpPXRbbl07dnQoaSkmJih2dChpLnRhZyk/KGgoaSksZChpKSk6JC5yZW1vdmVDaGlsZChl
LGkuZWxtKSl9fWZ1bmN0aW9uIGgoZSx0KXtpZih0fHx2dChlLmRhdGEpKXt2YXIgaT13LnJlbW92
ZS5sZW5ndGgrMTtmb3IodD90Lmxpc3RlbmVycys9aTp0PW4oZS5lbG0saSksdnQoXz1lLmNoaWxk
KSYmdnQoXz1fLl92bm9kZSkmJnZ0KF8uZGF0YSkmJmgoXyx0KSxfPTA7Xzx3LnJlbW92ZS5sZW5n
dGg7KytfKXcucmVtb3ZlW19dKGUsdCk7dnQoXz1lLmRhdGEuaG9vaykmJnZ0KF89Xy5yZW1vdmUp
P18oZSx0KTp0KCl9ZWxzZSByKGUuZWxtKX1mdW5jdGlvbiB2KGUsdCxuLHIsbyl7Zm9yKHZhciBh
LHMsYyx1LGw9MCxkPTAsaD10Lmxlbmd0aC0xLHY9dFswXSxnPXRbaF0seT1uLmxlbmd0aC0xLF89
blswXSxiPW5beV0sdz0hbztsPD1oJiZkPD15OylodCh2KT92PXRbKytsXTpodChnKT9nPXRbLS1o
XTptdCh2LF8pPyhtKHYsXyxyKSx2PXRbKytsXSxfPW5bKytkXSk6bXQoZyxiKT8obShnLGIsciks
Zz10Wy0taF0sYj1uWy0teV0pOm10KHYsYik/KG0odixiLHIpLHcmJiQuaW5zZXJ0QmVmb3JlKGUs
di5lbG0sJC5uZXh0U2libGluZyhnLmVsbSkpLHY9dFsrK2xdLGI9blstLXldKTptdChnLF8pPyht
KGcsXyxyKSx3JiYkLmluc2VydEJlZm9yZShlLGcuZWxtLHYuZWxtKSxnPXRbLS1oXSxfPW5bKytk
XSk6KGh0KGEpJiYoYT1ndCh0LGwsaCkpLHM9dnQoXy5rZXkpP2FbXy5rZXldOm51bGwsaHQocyk/
KCQuaW5zZXJ0QmVmb3JlKGUsaShfLHIpLHYuZWxtKSxfPW5bKytkXSk6KGM9dFtzXSxjLnRhZyE9
PV8udGFnPygkLmluc2VydEJlZm9yZShlLGkoXyxyKSx2LmVsbSksXz1uWysrZF0pOihtKGMsXyxy
KSx0W3NdPXZvaWQgMCx3JiYkLmluc2VydEJlZm9yZShlLF8uZWxtLHYuZWxtKSxfPW5bKytkXSkp
KTtsPmg/KHU9aHQoblt5KzFdKT9udWxsOm5beSsxXS5lbG0sZihlLHUsbixkLHkscikpOmQ+eSYm
cChlLHQsbCxoKX1mdW5jdGlvbiBtKGUsdCxuLHIpe2lmKGUhPT10KXtpZih0LmlzU3RhdGljJiZl
LmlzU3RhdGljJiZ0LmtleT09PWUua2V5JiYodC5pc0Nsb25lZHx8dC5pc09uY2UpKXJldHVybiB0
LmVsbT1lLmVsbSx2b2lkKHQuY2hpbGQ9ZS5jaGlsZCk7dmFyIGksbz10LmRhdGEscz12dChvKTtz
JiZ2dChpPW8uaG9vaykmJnZ0KGk9aS5wcmVwYXRjaCkmJmkoZSx0KTt2YXIgYz10LmVsbT1lLmVs
bSx1PWUuY2hpbGRyZW4sbD10LmNoaWxkcmVuO2lmKHMmJmEodCkpe2ZvcihpPTA7aTx3LnVwZGF0
ZS5sZW5ndGg7KytpKXcudXBkYXRlW2ldKGUsdCk7dnQoaT1vLmhvb2spJiZ2dChpPWkudXBkYXRl
KSYmaShlLHQpfWh0KHQudGV4dCk/dnQodSkmJnZ0KGwpP3UhPT1sJiZ2KGMsdSxsLG4scik6dnQo
bCk/KHZ0KGUudGV4dCkmJiQuc2V0VGV4dENvbnRlbnQoYywiIiksZihjLG51bGwsbCwwLGwubGVu
Z3RoLTEsbikpOnZ0KHUpP3AoYyx1LDAsdS5sZW5ndGgtMSk6dnQoZS50ZXh0KSYmJC5zZXRUZXh0
Q29udGVudChjLCIiKTplLnRleHQhPT10LnRleHQmJiQuc2V0VGV4dENvbnRlbnQoYyx0LnRleHQp
LHMmJnZ0KGk9by5ob29rKSYmdnQoaT1pLnBvc3RwYXRjaCkmJmkoZSx0KX19ZnVuY3Rpb24gZyhl
LHQsbil7aWYobiYmZS5wYXJlbnQpZS5wYXJlbnQuZGF0YS5wZW5kaW5nSW5zZXJ0PXQ7ZWxzZSBm
b3IodmFyIHI9MDtyPHQubGVuZ3RoOysrcil0W3JdLmRhdGEuaG9vay5pbnNlcnQodFtyXSl9ZnVu
Y3Rpb24geShlLHQsbil7dC5lbG09ZTt2YXIgcj10LnRhZyxpPXQuZGF0YSxhPXQuY2hpbGRyZW47
aWYodnQoaSkmJih2dChfPWkuaG9vaykmJnZ0KF89Xy5pbml0KSYmXyh0LCEwKSx2dChfPXQuY2hp
bGQpKSlyZXR1cm4gdSh0LG4pLCEwO2lmKHZ0KHIpKXtpZih2dChhKSl7dmFyIHM9JC5jaGlsZE5v
ZGVzKGUpO2lmKHMubGVuZ3RoKXt2YXIgbD0hMDtpZihzLmxlbmd0aCE9PWEubGVuZ3RoKWw9ITE7
ZWxzZSBmb3IodmFyIGY9MDtmPGEubGVuZ3RoO2YrKylpZigheShzW2ZdLGFbZl0sbikpe2w9ITE7
YnJlYWt9aWYoIWwpcmV0dXJuITF9ZWxzZSBvKHQsYSxuKX12dChpKSYmYyh0LG4pfXJldHVybiEw
fXZhciBfLGIsdz17fSx4PWUubW9kdWxlcywkPWUubm9kZU9wcztmb3IoXz0wO188Y28ubGVuZ3Ro
OysrXylmb3Iod1tjb1tfXV09W10sYj0wO2I8eC5sZW5ndGg7KytiKXZvaWQgMCE9PXhbYl1bY29b
X11dJiZ3W2NvW19dXS5wdXNoKHhbYl1bY29bX11dKTtyZXR1cm4gZnVuY3Rpb24oZSxuLHIsbyl7
aWYoIW4pcmV0dXJuIHZvaWQoZSYmZChlKSk7dmFyIHMsYyx1PSExLGw9W107aWYoZSl7dmFyIGY9
dnQoZS5ub2RlVHlwZSk7aWYoIWYmJm10KGUsbikpbShlLG4sbCxvKTtlbHNle2lmKGYpe2lmKDE9
PT1lLm5vZGVUeXBlJiZlLmhhc0F0dHJpYnV0ZSgic2VydmVyLXJlbmRlcmVkIikmJihlLnJlbW92
ZUF0dHJpYnV0ZSgic2VydmVyLXJlbmRlcmVkIikscj0hMCksciYmeShlLG4sbCkpcmV0dXJuIGco
bixsLCEwKSxlO2U9dChlKX1pZihzPWUuZWxtLGM9JC5wYXJlbnROb2RlKHMpLGkobixsKSxuLnBh
cmVudCl7Zm9yKHZhciBoPW4ucGFyZW50O2g7KWguZWxtPW4uZWxtLGg9aC5wYXJlbnQ7aWYoYShu
KSlmb3IodmFyIHY9MDt2PHcuY3JlYXRlLmxlbmd0aDsrK3Ypdy5jcmVhdGVbdl0oc28sbi5wYXJl
bnQpfW51bGwhPT1jPygkLmluc2VydEJlZm9yZShjLG4uZWxtLCQubmV4dFNpYmxpbmcocykpLHAo
YyxbZV0sMCwwKSk6dnQoZS50YWcpJiZkKGUpfX1lbHNlIHU9ITAsaShuLGwpO3JldHVybiBnKG4s
bCx1KSxuLmVsbX19ZnVuY3Rpb24gX3QoZSx0KXtpZihlLmRhdGEuZGlyZWN0aXZlc3x8dC5kYXRh
LmRpcmVjdGl2ZXMpe3ZhciBuLHIsaSxvPWU9PT1zbyxhPWJ0KGUuZGF0YS5kaXJlY3RpdmVzLGUu
Y29udGV4dCkscz1idCh0LmRhdGEuZGlyZWN0aXZlcyx0LmNvbnRleHQpLGM9W10sdT1bXTtmb3Io
biBpbiBzKXI9YVtuXSxpPXNbbl0scj8oaS5vbGRWYWx1ZT1yLnZhbHVlLHh0KGksInVwZGF0ZSIs
dCxlKSxpLmRlZiYmaS5kZWYuY29tcG9uZW50VXBkYXRlZCYmdS5wdXNoKGkpKTooeHQoaSwiYmlu
ZCIsdCxlKSxpLmRlZiYmaS5kZWYuaW5zZXJ0ZWQmJmMucHVzaChpKSk7aWYoYy5sZW5ndGgpe3Zh
ciBsPWZ1bmN0aW9uKCl7Yy5mb3JFYWNoKGZ1bmN0aW9uKG4pe3h0KG4sImluc2VydGVkIix0LGUp
fSl9O28/YWUodC5kYXRhLmhvb2t8fCh0LmRhdGEuaG9vaz17fSksImluc2VydCIsbCwiZGlyLWlu
c2VydCIpOmwoKX1pZih1Lmxlbmd0aCYmYWUodC5kYXRhLmhvb2t8fCh0LmRhdGEuaG9vaz17fSks
InBvc3RwYXRjaCIsZnVuY3Rpb24oKXt1LmZvckVhY2goZnVuY3Rpb24obil7eHQobiwiY29tcG9u
ZW50VXBkYXRlZCIsdCxlKX0pfSwiZGlyLXBvc3RwYXRjaCIpLCFvKWZvcihuIGluIGEpc1tuXXx8
eHQoYVtuXSwidW5iaW5kIixlKX19ZnVuY3Rpb24gYnQoZSx0KXt2YXIgbj1PYmplY3QuY3JlYXRl
KG51bGwpO2lmKCFlKXJldHVybiBuO3ZhciByLGk7Zm9yKHI9MDtyPGUubGVuZ3RoO3IrKylpPWVb
cl0saS5tb2RpZmllcnN8fChpLm1vZGlmaWVycz1sbyksblt3dChpKV09aSxpLmRlZj1CKHQuJG9w
dGlvbnMsImRpcmVjdGl2ZXMiLGkubmFtZSwhMCk7cmV0dXJuIG59ZnVuY3Rpb24gd3QoZSl7cmV0
dXJuIGUucmF3TmFtZXx8ZS5uYW1lKyIuIitPYmplY3Qua2V5cyhlLm1vZGlmaWVyc3x8e30pLmpv
aW4oIi4iKX1mdW5jdGlvbiB4dChlLHQsbixyKXt2YXIgaT1lLmRlZiYmZS5kZWZbdF07aSYmaShu
LmVsbSxlLG4scil9ZnVuY3Rpb24gJHQoZSx0KXtpZihlLmRhdGEuYXR0cnN8fHQuZGF0YS5hdHRy
cyl7dmFyIG4scixpLG89dC5lbG0sYT1lLmRhdGEuYXR0cnN8fHt9LHM9dC5kYXRhLmF0dHJzfHx7
fTtzLl9fb2JfXyYmKHM9dC5kYXRhLmF0dHJzPWYoe30scykpO2ZvcihuIGluIHMpcj1zW25dLGk9
YVtuXSxpIT09ciYmQ3QobyxuLHIpO2ZvcihuIGluIGEpbnVsbD09c1tuXSYmKEtpKG4pP28ucmVt
b3ZlQXR0cmlidXRlTlMocWksV2kobikpOlZpKG4pfHxvLnJlbW92ZUF0dHJpYnV0ZShuKSl9fWZ1
bmN0aW9uIEN0KGUsdCxuKXtKaSh0KT9aaShuKT9lLnJlbW92ZUF0dHJpYnV0ZSh0KTplLnNldEF0
dHJpYnV0ZSh0LHQpOlZpKHQpP2Uuc2V0QXR0cmlidXRlKHQsWmkobil8fCJmYWxzZSI9PT1uPyJm
YWxzZSI6InRydWUiKTpLaSh0KT9aaShuKT9lLnJlbW92ZUF0dHJpYnV0ZU5TKHFpLFdpKHQpKTpl
LnNldEF0dHJpYnV0ZU5TKHFpLHQsbik6Wmkobik/ZS5yZW1vdmVBdHRyaWJ1dGUodCk6ZS5zZXRB
dHRyaWJ1dGUodCxuKX1mdW5jdGlvbiBBdChlLHQpe3ZhciBuPXQuZWxtLHI9dC5kYXRhLGk9ZS5k
YXRhO2lmKHIuc3RhdGljQ2xhc3N8fHIuY2xhc3N8fGkmJihpLnN0YXRpY0NsYXNzfHxpLmNsYXNz
KSl7dmFyIG89cWUodCksYT1uLl90cmFuc2l0aW9uQ2xhc3NlczthJiYobz1aZShvLEdlKGEpKSks
byE9PW4uX3ByZXZDbGFzcyYmKG4uc2V0QXR0cmlidXRlKCJjbGFzcyIsbyksbi5fcHJldkNsYXNz
PW8pfX1mdW5jdGlvbiBrdChlLHQpe2lmKGUuZGF0YS5vbnx8dC5kYXRhLm9uKXt2YXIgbj10LmRh
dGEub258fHt9LHI9ZS5kYXRhLm9ufHx7fSxpPXQuZWxtLl92X2FkZHx8KHQuZWxtLl92X2FkZD1m
dW5jdGlvbihlLG4scil7dC5lbG0uYWRkRXZlbnRMaXN0ZW5lcihlLG4scil9KSxvPXQuZWxtLl92
X3JlbW92ZXx8KHQuZWxtLl92X3JlbW92ZT1mdW5jdGlvbihlLG4pe3QuZWxtLnJlbW92ZUV2ZW50
TGlzdGVuZXIoZSxuKX0pO3NlKG4scixpLG8sdC5jb250ZXh0KX19ZnVuY3Rpb24gT3QoZSx0KXtp
ZihlLmRhdGEuZG9tUHJvcHN8fHQuZGF0YS5kb21Qcm9wcyl7dmFyIG4scixpPXQuZWxtLG89ZS5k
YXRhLmRvbVByb3BzfHx7fSxhPXQuZGF0YS5kb21Qcm9wc3x8e307YS5fX29iX18mJihhPXQuZGF0
YS5kb21Qcm9wcz1mKHt9LGEpKTtmb3IobiBpbiBvKW51bGw9PWFbbl0mJihpW25dPSIiKTtmb3Io
biBpbiBhKWlmKHI9YVtuXSwidGV4dENvbnRlbnQiIT09biYmImlubmVySFRNTCIhPT1ufHwodC5j
aGlsZHJlbiYmKHQuY2hpbGRyZW4ubGVuZ3RoPTApLHIhPT1vW25dKSlpZigidmFsdWUiPT09bil7
aS5fdmFsdWU9cjt2YXIgcz1udWxsPT1yPyIiOlN0cmluZyhyKTtpLnZhbHVlPT09c3x8aS5jb21w
b3Npbmd8fChpLnZhbHVlPXMpfWVsc2UgaVtuXT1yfX1mdW5jdGlvbiBTdChlKXt2YXIgdD1UdChl
LnN0eWxlKTtyZXR1cm4gZS5zdGF0aWNTdHlsZT9mKGUuc3RhdGljU3R5bGUsdCk6dH1mdW5jdGlv
biBUdChlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9oKGUpOiJzdHJpbmciPT10eXBlb2YgZT9n
byhlKTplfWZ1bmN0aW9uIEV0KGUsdCl7dmFyIG4scj17fTtpZih0KWZvcih2YXIgaT1lO2kuY2hp
bGQ7KWk9aS5jaGlsZC5fdm5vZGUsaS5kYXRhJiYobj1TdChpLmRhdGEpKSYmZihyLG4pOyhuPVN0
KGUuZGF0YSkpJiZmKHIsbik7Zm9yKHZhciBvPWU7bz1vLnBhcmVudDspby5kYXRhJiYobj1TdChv
LmRhdGEpKSYmZihyLG4pO3JldHVybiByfWZ1bmN0aW9uIGp0KGUsdCl7dmFyIG49dC5kYXRhLHI9
ZS5kYXRhO2lmKG4uc3RhdGljU3R5bGV8fG4uc3R5bGV8fHIuc3RhdGljU3R5bGV8fHIuc3R5bGUp
e3ZhciBpLG8sYT10LmVsbSxzPWUuZGF0YS5zdGF0aWNTdHlsZSxjPWUuZGF0YS5zdHlsZXx8e30s
dT1zfHxjLGw9VHQodC5kYXRhLnN0eWxlKXx8e307dC5kYXRhLnN0eWxlPWwuX19vYl9fP2Yoe30s
bCk6bDt2YXIgZD1FdCh0LCEwKTtmb3IobyBpbiB1KW51bGw9PWRbb10mJl9vKGEsbywiIik7Zm9y
KG8gaW4gZClpPWRbb10saSE9PXVbb10mJl9vKGEsbyxudWxsPT1pPyIiOmkpfX1mdW5jdGlvbiBO
dChlLHQpe2lmKHQmJnQudHJpbSgpKWlmKGUuY2xhc3NMaXN0KXQuaW5kZXhPZigiICIpPi0xP3Qu
c3BsaXQoL1xzKy8pLmZvckVhY2goZnVuY3Rpb24odCl7cmV0dXJuIGUuY2xhc3NMaXN0LmFkZCh0
KX0pOmUuY2xhc3NMaXN0LmFkZCh0KTtlbHNle3ZhciBuPSIgIitlLmdldEF0dHJpYnV0ZSgiY2xh
c3MiKSsiICI7bi5pbmRleE9mKCIgIit0KyIgIik8MCYmZS5zZXRBdHRyaWJ1dGUoImNsYXNzIiwo
bit0KS50cmltKCkpfX1mdW5jdGlvbiBMdChlLHQpe2lmKHQmJnQudHJpbSgpKWlmKGUuY2xhc3NM
aXN0KXQuaW5kZXhPZigiICIpPi0xP3Quc3BsaXQoL1xzKy8pLmZvckVhY2goZnVuY3Rpb24odCl7
cmV0dXJuIGUuY2xhc3NMaXN0LnJlbW92ZSh0KX0pOmUuY2xhc3NMaXN0LnJlbW92ZSh0KTtlbHNl
e2Zvcih2YXIgbj0iICIrZS5nZXRBdHRyaWJ1dGUoImNsYXNzIikrIiAiLHI9IiAiK3QrIiAiO24u
aW5kZXhPZihyKT49MDspbj1uLnJlcGxhY2UociwiICIpO2Uuc2V0QXR0cmlidXRlKCJjbGFzcyIs
bi50cmltKCkpfX1mdW5jdGlvbiBNdChlKXtFbyhmdW5jdGlvbigpe0VvKGUpfSl9ZnVuY3Rpb24g
UHQoZSx0KXsoZS5fdHJhbnNpdGlvbkNsYXNzZXN8fChlLl90cmFuc2l0aW9uQ2xhc3Nlcz1bXSkp
LnB1c2godCksTnQoZSx0KX1mdW5jdGlvbiBEdChlLHQpe2UuX3RyYW5zaXRpb25DbGFzc2VzJiZv
KGUuX3RyYW5zaXRpb25DbGFzc2VzLHQpLEx0KGUsdCl9ZnVuY3Rpb24gUnQoZSx0LG4pe3ZhciBy
PUJ0KGUsdCksaT1yLnR5cGUsbz1yLnRpbWVvdXQsYT1yLnByb3BDb3VudDtpZighaSlyZXR1cm4g
bigpO3ZhciBzPWk9PT1Dbz9PbzpUbyxjPTAsdT1mdW5jdGlvbigpe2UucmVtb3ZlRXZlbnRMaXN0
ZW5lcihzLGwpLG4oKX0sbD1mdW5jdGlvbih0KXt0LnRhcmdldD09PWUmJisrYz49YSYmdSgpfTtz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YzxhJiZ1KCl9LG8rMSksZS5hZGRFdmVudExpc3RlbmVyKHMs
bCl9ZnVuY3Rpb24gQnQoZSx0KXt2YXIgbixyPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGUpLGk9
cltrbysiRGVsYXkiXS5zcGxpdCgiLCAiKSxvPXJba28rIkR1cmF0aW9uIl0uc3BsaXQoIiwgIiks
YT1JdChpLG8pLHM9cltTbysiRGVsYXkiXS5zcGxpdCgiLCAiKSxjPXJbU28rIkR1cmF0aW9uIl0u
c3BsaXQoIiwgIiksdT1JdChzLGMpLGw9MCxmPTA7dD09PUNvP2E+MCYmKG49Q28sbD1hLGY9by5s
ZW5ndGgpOnQ9PT1Bbz91PjAmJihuPUFvLGw9dSxmPWMubGVuZ3RoKToobD1NYXRoLm1heChhLHUp
LG49bD4wP2E+dT9DbzpBbzpudWxsLGY9bj9uPT09Q28/by5sZW5ndGg6Yy5sZW5ndGg6MCk7dmFy
IGQ9bj09PUNvJiZqby50ZXN0KHJba28rIlByb3BlcnR5Il0pO3JldHVybnt0eXBlOm4sdGltZW91
dDpsLHByb3BDb3VudDpmLGhhc1RyYW5zZm9ybTpkfX1mdW5jdGlvbiBJdChlLHQpe2Zvcig7ZS5s
ZW5ndGg8dC5sZW5ndGg7KWU9ZS5jb25jYXQoZSk7cmV0dXJuIE1hdGgubWF4LmFwcGx5KG51bGws
dC5tYXAoZnVuY3Rpb24odCxuKXtyZXR1cm4gSHQodCkrSHQoZVtuXSl9KSl9ZnVuY3Rpb24gSHQo
ZSl7cmV0dXJuIDFlMypOdW1iZXIoZS5zbGljZSgwLC0xKSl9ZnVuY3Rpb24gRnQoZSl7dmFyIHQ9
ZS5lbG07dC5fbGVhdmVDYiYmKHQuX2xlYXZlQ2IuY2FuY2VsbGVkPSEwLHQuX2xlYXZlQ2IoKSk7
dmFyIG49enQoZS5kYXRhLnRyYW5zaXRpb24pO2lmKG4mJiF0Ll9lbnRlckNiJiYxPT09dC5ub2Rl
VHlwZSl7dmFyIHI9bi5jc3MsaT1uLnR5cGUsbz1uLmVudGVyQ2xhc3MsYT1uLmVudGVyQWN0aXZl
Q2xhc3Mscz1uLmFwcGVhckNsYXNzLGM9bi5hcHBlYXJBY3RpdmVDbGFzcyx1PW4uYmVmb3JlRW50
ZXIsbD1uLmVudGVyLGY9bi5hZnRlckVudGVyLGQ9bi5lbnRlckNhbmNlbGxlZCxwPW4uYmVmb3Jl
QXBwZWFyLGg9bi5hcHBlYXIsdj1uLmFmdGVyQXBwZWFyLG09bi5hcHBlYXJDYW5jZWxsZWQsZz1Q
aS4kdm5vZGUseT1nJiZnLnBhcmVudD9nLnBhcmVudC5jb250ZXh0OlBpLF89IXkuX2lzTW91bnRl
ZHx8IWUuaXNSb290SW5zZXJ0O2lmKCFffHxofHwiIj09PWgpe3ZhciBiPV8/czpvLHc9Xz9jOmEs
eD1fP3B8fHU6dSwkPV8mJiJmdW5jdGlvbiI9PXR5cGVvZiBoP2g6bCxDPV8/dnx8ZjpmLEE9Xz9t
fHxkOmQsaz1yIT09ITEmJiFyaSxPPSQmJigkLl9sZW5ndGh8fCQubGVuZ3RoKT4xLFM9dC5fZW50
ZXJDYj1WdChmdW5jdGlvbigpe2smJkR0KHQsdyksUy5jYW5jZWxsZWQ/KGsmJkR0KHQsYiksQSYm
QSh0KSk6QyYmQyh0KSx0Ll9lbnRlckNiPW51bGx9KTtlLmRhdGEuc2hvd3x8YWUoZS5kYXRhLmhv
b2t8fChlLmRhdGEuaG9vaz17fSksImluc2VydCIsZnVuY3Rpb24oKXt2YXIgbj10LnBhcmVudE5v
ZGUscj1uJiZuLl9wZW5kaW5nJiZuLl9wZW5kaW5nW2Uua2V5XTtyJiZyLnRhZz09PWUudGFnJiZy
LmVsbS5fbGVhdmVDYiYmci5lbG0uX2xlYXZlQ2IoKSwkJiYkKHQsUyl9LCJ0cmFuc2l0aW9uLWlu
c2VydCIpLHgmJngodCksayYmKFB0KHQsYiksUHQodCx3KSxNdChmdW5jdGlvbigpe0R0KHQsYiks
Uy5jYW5jZWxsZWR8fE98fFJ0KHQsaSxTKX0pKSxlLmRhdGEuc2hvdyYmJCYmJCh0LFMpLGt8fE98
fFMoKX19fWZ1bmN0aW9uIFV0KGUsdCl7ZnVuY3Rpb24gbigpe20uY2FuY2VsbGVkfHwoZS5kYXRh
LnNob3d8fCgoci5wYXJlbnROb2RlLl9wZW5kaW5nfHwoci5wYXJlbnROb2RlLl9wZW5kaW5nPXt9
KSlbZS5rZXldPWUpLHUmJnUociksaCYmKFB0KHIscyksUHQocixjKSxNdChmdW5jdGlvbigpe0R0
KHIscyksbS5jYW5jZWxsZWR8fHZ8fFJ0KHIsYSxtKX0pKSxsJiZsKHIsbSksaHx8dnx8bSgpKX12
YXIgcj1lLmVsbTtyLl9lbnRlckNiJiYoci5fZW50ZXJDYi5jYW5jZWxsZWQ9ITAsci5fZW50ZXJD
YigpKTt2YXIgaT16dChlLmRhdGEudHJhbnNpdGlvbik7aWYoIWkpcmV0dXJuIHQoKTtpZighci5f
bGVhdmVDYiYmMT09PXIubm9kZVR5cGUpe3ZhciBvPWkuY3NzLGE9aS50eXBlLHM9aS5sZWF2ZUNs
YXNzLGM9aS5sZWF2ZUFjdGl2ZUNsYXNzLHU9aS5iZWZvcmVMZWF2ZSxsPWkubGVhdmUsZj1pLmFm
dGVyTGVhdmUsZD1pLmxlYXZlQ2FuY2VsbGVkLHA9aS5kZWxheUxlYXZlLGg9byE9PSExJiYhcmks
dj1sJiYobC5fbGVuZ3RofHxsLmxlbmd0aCk+MSxtPXIuX2xlYXZlQ2I9VnQoZnVuY3Rpb24oKXty
LnBhcmVudE5vZGUmJnIucGFyZW50Tm9kZS5fcGVuZGluZyYmKHIucGFyZW50Tm9kZS5fcGVuZGlu
Z1tlLmtleV09bnVsbCksaCYmRHQocixjKSxtLmNhbmNlbGxlZD8oaCYmRHQocixzKSxkJiZkKHIp
KToodCgpLGYmJmYocikpLHIuX2xlYXZlQ2I9bnVsbH0pO3A/cChuKTpuKCl9fWZ1bmN0aW9uIHp0
KGUpe2lmKGUpe2lmKCJvYmplY3QiPT10eXBlb2YgZSl7dmFyIHQ9e307cmV0dXJuIGUuY3NzIT09
ITEmJmYodCxObyhlLm5hbWV8fCJ2IikpLGYodCxlKSx0fXJldHVybiJzdHJpbmciPT10eXBlb2Yg
ZT9ObyhlKTp2b2lkIDB9fWZ1bmN0aW9uIFZ0KGUpe3ZhciB0PSExO3JldHVybiBmdW5jdGlvbigp
e3R8fCh0PSEwLGUoKSl9fWZ1bmN0aW9uIEp0KGUsdCxuKXt2YXIgcj10LnZhbHVlLGk9ZS5tdWx0
aXBsZTtpZighaXx8QXJyYXkuaXNBcnJheShyKSl7Citmb3IodmFyIG8sYSxzPTAsYz1lLm9wdGlv
bnMubGVuZ3RoO3M8YztzKyspaWYoYT1lLm9wdGlvbnNbc10saSlvPXkocixLdChhKSk+LTEsYS5z
ZWxlY3RlZCE9PW8mJihhLnNlbGVjdGVkPW8pO2Vsc2UgaWYoZyhLdChhKSxyKSlyZXR1cm4gdm9p
ZChlLnNlbGVjdGVkSW5kZXghPT1zJiYoZS5zZWxlY3RlZEluZGV4PXMpKTtpfHwoZS5zZWxlY3Rl
ZEluZGV4PS0xKX19ZnVuY3Rpb24gcXQoZSx0KXtmb3IodmFyIG49MCxyPXQubGVuZ3RoO248cjtu
KyspaWYoZyhLdCh0W25dKSxlKSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBLdChlKXtyZXR1
cm4iX3ZhbHVlImluIGU/ZS5fdmFsdWU6ZS52YWx1ZX1mdW5jdGlvbiBXdChlKXtlLnRhcmdldC5j
b21wb3Npbmc9ITB9ZnVuY3Rpb24gWnQoZSl7ZS50YXJnZXQuY29tcG9zaW5nPSExLEd0KGUudGFy
Z2V0LCJpbnB1dCIpfWZ1bmN0aW9uIEd0KGUsdCl7dmFyIG49ZG9jdW1lbnQuY3JlYXRlRXZlbnQo
IkhUTUxFdmVudHMiKTtuLmluaXRFdmVudCh0LCEwLCEwKSxlLmRpc3BhdGNoRXZlbnQobil9ZnVu
Y3Rpb24gWXQoZSl7cmV0dXJuIWUuY2hpbGR8fGUuZGF0YSYmZS5kYXRhLnRyYW5zaXRpb24/ZTpZ
dChlLmNoaWxkLl92bm9kZSl9ZnVuY3Rpb24gUXQoZSl7dmFyIHQ9ZSYmZS5jb21wb25lbnRPcHRp
b25zO3JldHVybiB0JiZ0LkN0b3Iub3B0aW9ucy5hYnN0cmFjdD9RdChwZSh0LmNoaWxkcmVuKSk6
ZX1mdW5jdGlvbiBYdChlKXt2YXIgdD17fSxuPWUuJG9wdGlvbnM7Zm9yKHZhciByIGluIG4ucHJv
cHNEYXRhKXRbcl09ZVtyXTt2YXIgaT1uLl9wYXJlbnRMaXN0ZW5lcnM7Zm9yKHZhciBvIGluIGkp
dFtKcihvKV09aVtvXS5mbjtyZXR1cm4gdH1mdW5jdGlvbiBlbihlLHQpe3JldHVybi9cZC1rZWVw
LWFsaXZlJC8udGVzdCh0LnRhZyk/ZSgia2VlcC1hbGl2ZSIpOm51bGx9ZnVuY3Rpb24gdG4oZSl7
Zm9yKDtlPWUucGFyZW50OylpZihlLmRhdGEudHJhbnNpdGlvbilyZXR1cm4hMH1mdW5jdGlvbiBu
bihlKXtlLmVsbS5fbW92ZUNiJiZlLmVsbS5fbW92ZUNiKCksZS5lbG0uX2VudGVyQ2ImJmUuZWxt
Ll9lbnRlckNiKCl9ZnVuY3Rpb24gcm4oZSl7ZS5kYXRhLm5ld1Bvcz1lLmVsbS5nZXRCb3VuZGlu
Z0NsaWVudFJlY3QoKX1mdW5jdGlvbiBvbihlKXt2YXIgdD1lLmRhdGEucG9zLG49ZS5kYXRhLm5l
d1BvcyxyPXQubGVmdC1uLmxlZnQsaT10LnRvcC1uLnRvcDtpZihyfHxpKXtlLmRhdGEubW92ZWQ9
ITA7dmFyIG89ZS5lbG0uc3R5bGU7by50cmFuc2Zvcm09by5XZWJraXRUcmFuc2Zvcm09InRyYW5z
bGF0ZSgiK3IrInB4LCIraSsicHgpIixvLnRyYW5zaXRpb25EdXJhdGlvbj0iMHMifX1mdW5jdGlv
biBhbihlLHQpe3ZhciBuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiBuLmlu
bmVySFRNTD0nPGRpdiBhPSInK2UrJyI+JyxuLmlubmVySFRNTC5pbmRleE9mKHQpPjB9ZnVuY3Rp
b24gc24oZSl7cmV0dXJuIEpvPUpvfHxkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxKby5p
bm5lckhUTUw9ZSxKby50ZXh0Q29udGVudH1mdW5jdGlvbiBjbihlLHQpe3JldHVybiB0JiYoZT1l
LnJlcGxhY2UoRGEsIlxuIikpLGUucmVwbGFjZShNYSwiPCIpLnJlcGxhY2UoUGEsIj4iKS5yZXBs
YWNlKFJhLCImIikucmVwbGFjZShCYSwnIicpfWZ1bmN0aW9uIHVuKGUsdCl7ZnVuY3Rpb24gbih0
KXtmKz10LGU9ZS5zdWJzdHJpbmcodCl9ZnVuY3Rpb24gcigpe3ZhciB0PWUubWF0Y2goWG8pO2lm
KHQpe3ZhciByPXt0YWdOYW1lOnRbMV0sYXR0cnM6W10sc3RhcnQ6Zn07bih0WzBdLmxlbmd0aCk7
Zm9yKHZhciBpLG87IShpPWUubWF0Y2goZWEpKSYmKG89ZS5tYXRjaChHbykpOyluKG9bMF0ubGVu
Z3RoKSxyLmF0dHJzLnB1c2gobyk7aWYoaSlyZXR1cm4gci51bmFyeVNsYXNoPWlbMV0sbihpWzBd
Lmxlbmd0aCksci5lbmQ9ZixyfX1mdW5jdGlvbiBpKGUpe3ZhciBuPWUudGFnTmFtZSxyPWUudW5h
cnlTbGFzaDt1JiYoInAiPT09cyYmZW8obikmJm8oIiIscyksWGkobikmJnM9PT1uJiZvKCIiLG4p
KTtmb3IodmFyIGk9bChuKXx8Imh0bWwiPT09biYmImhlYWQiPT09c3x8ISFyLGE9ZS5hdHRycy5s
ZW5ndGgsZj1uZXcgQXJyYXkoYSksZD0wO2Q8YTtkKyspe3ZhciBwPWUuYXR0cnNbZF07b2EmJnBb
MF0uaW5kZXhPZignIiInKT09PS0xJiYoIiI9PT1wWzNdJiZkZWxldGUgcFszXSwiIj09PXBbNF0m
JmRlbGV0ZSBwWzRdLCIiPT09cFs1XSYmZGVsZXRlIHBbNV0pO3ZhciBoPXBbM118fHBbNF18fHBb
NV18fCIiO2ZbZF09e25hbWU6cFsxXSx2YWx1ZTpjbihoLHQuc2hvdWxkRGVjb2RlTmV3bGluZXMp
fX1pfHwoYy5wdXNoKHt0YWc6bixhdHRyczpmfSkscz1uLHI9IiIpLHQuc3RhcnQmJnQuc3RhcnQo
bixmLGksZS5zdGFydCxlLmVuZCl9ZnVuY3Rpb24gbyhlLG4scixpKXt2YXIgbztpZihudWxsPT1y
JiYocj1mKSxudWxsPT1pJiYoaT1mKSxuKXt2YXIgYT1uLnRvTG93ZXJDYXNlKCk7Zm9yKG89Yy5s
ZW5ndGgtMTtvPj0wJiZjW29dLnRhZy50b0xvd2VyQ2FzZSgpIT09YTtvLS0pO31lbHNlIG89MDtp
ZihvPj0wKXtmb3IodmFyIHU9Yy5sZW5ndGgtMTt1Pj1vO3UtLSl0LmVuZCYmdC5lbmQoY1t1XS50
YWcscixpKTtjLmxlbmd0aD1vLHM9byYmY1tvLTFdLnRhZ31lbHNlImJyIj09PW4udG9Mb3dlckNh
c2UoKT90LnN0YXJ0JiZ0LnN0YXJ0KG4sW10sITAscixpKToicCI9PT1uLnRvTG93ZXJDYXNlKCkm
Jih0LnN0YXJ0JiZ0LnN0YXJ0KG4sW10sITEscixpKSx0LmVuZCYmdC5lbmQobixyLGkpKX1mb3Io
dmFyIGEscyxjPVtdLHU9dC5leHBlY3RIVE1MLGw9dC5pc1VuYXJ5VGFnfHxZcixmPTA7ZTspe2lm
KGE9ZSxzJiZOYShzLHQuc2ZjLGMpKXt2YXIgZD1zLnRvTG93ZXJDYXNlKCkscD1MYVtkXXx8KExh
W2RdPW5ldyBSZWdFeHAoIihbXFxzXFxTXSo/KSg8LyIrZCsiW14+XSo+KSIsImkiKSksaD0wLHY9
ZS5yZXBsYWNlKHAsZnVuY3Rpb24oZSxuLHIpe3JldHVybiBoPXIubGVuZ3RoLCJzY3JpcHQiIT09
ZCYmInN0eWxlIiE9PWQmJiJub3NjcmlwdCIhPT1kJiYobj1uLnJlcGxhY2UoLzwhLS0oW1xzXFNd
Kj8pLS0+L2csIiQxIikucmVwbGFjZSgvPCFcW0NEQVRBXFsoW1xzXFNdKj8pXV0+L2csIiQxIikp
LHQuY2hhcnMmJnQuY2hhcnMobiksIiJ9KTtmKz1lLmxlbmd0aC12Lmxlbmd0aCxlPXYsbygiPC8i
K2QrIj4iLGQsZi1oLGYpfWVsc2V7dmFyIG09ZS5pbmRleE9mKCI8Iik7aWYoMD09PW0pe2lmKHJh
LnRlc3QoZSkpe3ZhciBnPWUuaW5kZXhPZigiLS0+Iik7aWYoZz49MCl7bihnKzMpO2NvbnRpbnVl
fX1pZihpYS50ZXN0KGUpKXt2YXIgeT1lLmluZGV4T2YoIl0+Iik7aWYoeT49MCl7bih5KzIpO2Nv
bnRpbnVlfX12YXIgXz1lLm1hdGNoKG5hKTtpZihfKXtuKF9bMF0ubGVuZ3RoKTtjb250aW51ZX12
YXIgYj1lLm1hdGNoKHRhKTtpZihiKXt2YXIgdz1mO24oYlswXS5sZW5ndGgpLG8oYlswXSxiWzFd
LHcsZik7Y29udGludWV9dmFyIHg9cigpO2lmKHgpe2koeCk7Y29udGludWV9fXZhciAkPXZvaWQg
MCxDPXZvaWQgMCxBPXZvaWQgMDtpZihtPjApe2ZvcihDPWUuc2xpY2UobSk7ISh0YS50ZXN0KEMp
fHxYby50ZXN0KEMpfHxyYS50ZXN0KEMpfHxpYS50ZXN0KEMpfHwoQT1DLmluZGV4T2YoIjwiLDEp
LEE8MCkpOyltKz1BLEM9ZS5zbGljZShtKTskPWUuc3Vic3RyaW5nKDAsbSksbihtKX1tPDAmJigk
PWUsZT0iIiksdC5jaGFycyYmJCYmdC5jaGFycygkKX1pZihlPT09YSYmdC5jaGFycyl7dC5jaGFy
cyhlKTticmVha319bygpfWZ1bmN0aW9uIGxuKGUpe2Z1bmN0aW9uIHQoKXsoYXx8KGE9W10pKS5w
dXNoKGUuc2xpY2UoaCxpKS50cmltKCkpLGg9aSsxfXZhciBuLHIsaSxvLGEscz0hMSxjPSExLHU9
ITEsbD0hMSxmPTAsZD0wLHA9MCxoPTA7Zm9yKGk9MDtpPGUubGVuZ3RoO2krKylpZihyPW4sbj1l
LmNoYXJDb2RlQXQoaSkscykzOT09PW4mJjkyIT09ciYmKHM9ITEpO2Vsc2UgaWYoYykzND09PW4m
JjkyIT09ciYmKGM9ITEpO2Vsc2UgaWYodSk5Nj09PW4mJjkyIT09ciYmKHU9ITEpO2Vsc2UgaWYo
bCk0Nz09PW4mJjkyIT09ciYmKGw9ITEpO2Vsc2UgaWYoMTI0IT09bnx8MTI0PT09ZS5jaGFyQ29k
ZUF0KGkrMSl8fDEyND09PWUuY2hhckNvZGVBdChpLTEpfHxmfHxkfHxwKXN3aXRjaChuKXtjYXNl
IDM0OmM9ITA7YnJlYWs7Y2FzZSAzOTpzPSEwO2JyZWFrO2Nhc2UgOTY6dT0hMDticmVhaztjYXNl
IDQ3Omw9ITA7YnJlYWs7Y2FzZSA0MDpwKys7YnJlYWs7Y2FzZSA0MTpwLS07YnJlYWs7Y2FzZSA5
MTpkKys7YnJlYWs7Y2FzZSA5MzpkLS07YnJlYWs7Y2FzZSAxMjM6ZisrO2JyZWFrO2Nhc2UgMTI1
OmYtLX1lbHNlIHZvaWQgMD09PW8/KGg9aSsxLG89ZS5zbGljZSgwLGkpLnRyaW0oKSk6dCgpO2lm
KHZvaWQgMD09PW8/bz1lLnNsaWNlKDAsaSkudHJpbSgpOjAhPT1oJiZ0KCksYSlmb3IoaT0wO2k8
YS5sZW5ndGg7aSsrKW89Zm4obyxhW2ldKTtyZXR1cm4gb31mdW5jdGlvbiBmbihlLHQpe3ZhciBu
PXQuaW5kZXhPZigiKCIpO2lmKG48MClyZXR1cm4nX2YoIicrdCsnIikoJytlKyIpIjt2YXIgcj10
LnNsaWNlKDAsbiksaT10LnNsaWNlKG4rMSk7cmV0dXJuJ19mKCInK3IrJyIpKCcrZSsiLCIraX1m
dW5jdGlvbiBkbihlLHQpe3ZhciBuPXQ/RmEodCk6SWE7aWYobi50ZXN0KGUpKXtmb3IodmFyIHIs
aSxvPVtdLGE9bi5sYXN0SW5kZXg9MDtyPW4uZXhlYyhlKTspe2k9ci5pbmRleCxpPmEmJm8ucHVz
aChKU09OLnN0cmluZ2lmeShlLnNsaWNlKGEsaSkpKTt2YXIgcz1sbihyWzFdLnRyaW0oKSk7by5w
dXNoKCJfcygiK3MrIikiKSxhPWkrclswXS5sZW5ndGh9cmV0dXJuIGE8ZS5sZW5ndGgmJm8ucHVz
aChKU09OLnN0cmluZ2lmeShlLnNsaWNlKGEpKSksby5qb2luKCIrIil9fWZ1bmN0aW9uIHBuKGUp
e2NvbnNvbGUuZXJyb3IoIltWdWUgcGFyc2VyXTogIitlKX1mdW5jdGlvbiBobihlLHQpe3JldHVy
biBlP2UubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlW3RdfSkuZmlsdGVyKGZ1bmN0aW9uKGUpe3Jl
dHVybiBlfSk6W119ZnVuY3Rpb24gdm4oZSx0LG4peyhlLnByb3BzfHwoZS5wcm9wcz1bXSkpLnB1
c2goe25hbWU6dCx2YWx1ZTpufSl9ZnVuY3Rpb24gbW4oZSx0LG4peyhlLmF0dHJzfHwoZS5hdHRy
cz1bXSkpLnB1c2goe25hbWU6dCx2YWx1ZTpufSl9ZnVuY3Rpb24gZ24oZSx0LG4scixpLG8peyhl
LmRpcmVjdGl2ZXN8fChlLmRpcmVjdGl2ZXM9W10pKS5wdXNoKHtuYW1lOnQscmF3TmFtZTpuLHZh
bHVlOnIsYXJnOmksbW9kaWZpZXJzOm99KX1mdW5jdGlvbiB5bihlLHQsbixyLGkpe3ImJnIuY2Fw
dHVyZSYmKGRlbGV0ZSByLmNhcHR1cmUsdD0iISIrdCk7dmFyIG87ciYmci5uYXRpdmU/KGRlbGV0
ZSByLm5hdGl2ZSxvPWUubmF0aXZlRXZlbnRzfHwoZS5uYXRpdmVFdmVudHM9e30pKTpvPWUuZXZl
bnRzfHwoZS5ldmVudHM9e30pO3ZhciBhPXt2YWx1ZTpuLG1vZGlmaWVyczpyfSxzPW9bdF07QXJy
YXkuaXNBcnJheShzKT9pP3MudW5zaGlmdChhKTpzLnB1c2goYSk6cz9vW3RdPWk/W2Esc106W3Ms
YV06b1t0XT1hfWZ1bmN0aW9uIF9uKGUsdCxuKXt2YXIgcj1ibihlLCI6Iit0KXx8Ym4oZSwidi1i
aW5kOiIrdCk7aWYobnVsbCE9cilyZXR1cm4gbG4ocik7aWYobiE9PSExKXt2YXIgaT1ibihlLHQp
O2lmKG51bGwhPWkpcmV0dXJuIEpTT04uc3RyaW5naWZ5KGkpfX1mdW5jdGlvbiBibihlLHQpe3Zh
ciBuO2lmKG51bGwhPShuPWUuYXR0cnNNYXBbdF0pKWZvcih2YXIgcj1lLmF0dHJzTGlzdCxpPTAs
bz1yLmxlbmd0aDtpPG87aSsrKWlmKHJbaV0ubmFtZT09PXQpe3Iuc3BsaWNlKGksMSk7YnJlYWt9
cmV0dXJuIG59ZnVuY3Rpb24gd24oZSl7aWYoc2E9ZSxhYT1zYS5sZW5ndGgsdWE9bGE9ZmE9MCxl
LmluZGV4T2YoIlsiKTwwfHxlLmxhc3RJbmRleE9mKCJdIik8YWEtMSlyZXR1cm57ZXhwOmUsaWR4
Om51bGx9O2Zvcig7ISRuKCk7KWNhPXhuKCksQ24oY2EpP2tuKGNhKTo5MT09PWNhJiZBbihjYSk7
cmV0dXJue2V4cDplLnN1YnN0cmluZygwLGxhKSxpZHg6ZS5zdWJzdHJpbmcobGErMSxmYSl9fWZ1
bmN0aW9uIHhuKCl7cmV0dXJuIHNhLmNoYXJDb2RlQXQoKyt1YSl9ZnVuY3Rpb24gJG4oKXtyZXR1
cm4gdWE+PWFhfWZ1bmN0aW9uIENuKGUpe3JldHVybiAzND09PWV8fDM5PT09ZX1mdW5jdGlvbiBB
bihlKXt2YXIgdD0xO2ZvcihsYT11YTshJG4oKTspaWYoZT14bigpLENuKGUpKWtuKGUpO2Vsc2Ug
aWYoOTE9PT1lJiZ0KyssOTM9PT1lJiZ0LS0sMD09PXQpe2ZhPXVhO2JyZWFrfX1mdW5jdGlvbiBr
bihlKXtmb3IodmFyIHQ9ZTshJG4oKSYmKGU9eG4oKSxlIT09dCk7KTt9ZnVuY3Rpb24gT24oZSx0
KXtkYT10Lndhcm58fHBuLHBhPXQuZ2V0VGFnTmFtZXNwYWNlfHxZcixoYT10Lm11c3RVc2VQcm9w
fHxZcix2YT10LmlzUHJlVGFnfHxZcixtYT1obih0Lm1vZHVsZXMsInByZVRyYW5zZm9ybU5vZGUi
KSxnYT1obih0Lm1vZHVsZXMsInRyYW5zZm9ybU5vZGUiKSx5YT1obih0Lm1vZHVsZXMsInBvc3RU
cmFuc2Zvcm1Ob2RlIiksX2E9dC5kZWxpbWl0ZXJzO3ZhciBuLHIsaT1bXSxvPXQucHJlc2VydmVX
aGl0ZXNwYWNlIT09ITEsYT0hMSxzPSExO3JldHVybiB1bihlLHtleHBlY3RIVE1MOnQuZXhwZWN0
SFRNTCxpc1VuYXJ5VGFnOnQuaXNVbmFyeVRhZyxzaG91bGREZWNvZGVOZXdsaW5lczp0LnNob3Vs
ZERlY29kZU5ld2xpbmVzLHN0YXJ0OmZ1bmN0aW9uKGUsbyxjKXtmdW5jdGlvbiB1KGUpe312YXIg
bD1yJiZyLm5zfHxwYShlKTtuaSYmInN2ZyI9PT1sJiYobz1KbihvKSk7dmFyIGY9e3R5cGU6MSx0
YWc6ZSxhdHRyc0xpc3Q6byxhdHRyc01hcDpVbihvKSxwYXJlbnQ6cixjaGlsZHJlbjpbXX07bCYm
KGYubnM9bCksVm4oZikmJiFzaSgpJiYoZi5mb3JiaWRkZW49ITApO2Zvcih2YXIgZD0wO2Q8bWEu
bGVuZ3RoO2QrKyltYVtkXShmLHQpO2lmKGF8fChTbihmKSxmLnByZSYmKGE9ITApKSx2YShmLnRh
ZykmJihzPSEwKSxhKVRuKGYpO2Vsc2V7Tm4oZiksTG4oZiksRG4oZiksRW4oZiksZi5wbGFpbj0h
Zi5rZXkmJiFvLmxlbmd0aCxqbihmKSxSbihmKSxCbihmKTtmb3IodmFyIHA9MDtwPGdhLmxlbmd0
aDtwKyspZ2FbcF0oZix0KTtJbihmKX1pZihuP2kubGVuZ3RofHxuLmlmJiYoZi5lbHNlaWZ8fGYu
ZWxzZSkmJih1KGYpLFBuKG4se2V4cDpmLmVsc2VpZixibG9jazpmfSkpOihuPWYsdShuKSksciYm
IWYuZm9yYmlkZGVuKWlmKGYuZWxzZWlmfHxmLmVsc2UpTW4oZixyKTtlbHNlIGlmKGYuc2xvdFNj
b3BlKXtyLnBsYWluPSExO3ZhciBoPWYuc2xvdFRhcmdldHx8ImRlZmF1bHQiOyhyLnNjb3BlZFNs
b3RzfHwoci5zY29wZWRTbG90cz17fSkpW2hdPWZ9ZWxzZSByLmNoaWxkcmVuLnB1c2goZiksZi5w
YXJlbnQ9cjtjfHwocj1mLGkucHVzaChmKSk7Zm9yKHZhciB2PTA7djx5YS5sZW5ndGg7disrKXlh
W3ZdKGYsdCl9LGVuZDpmdW5jdGlvbigpe3ZhciBlPWlbaS5sZW5ndGgtMV0sdD1lLmNoaWxkcmVu
W2UuY2hpbGRyZW4ubGVuZ3RoLTFdO3QmJjM9PT10LnR5cGUmJiIgIj09PXQudGV4dCYmZS5jaGls
ZHJlbi5wb3AoKSxpLmxlbmd0aC09MSxyPWlbaS5sZW5ndGgtMV0sZS5wcmUmJihhPSExKSx2YShl
LnRhZykmJihzPSExKX0sY2hhcnM6ZnVuY3Rpb24oZSl7aWYociYmKCFuaXx8InRleHRhcmVhIiE9
PXIudGFnfHxyLmF0dHJzTWFwLnBsYWNlaG9sZGVyIT09ZSkmJihlPXN8fGUudHJpbSgpP1phKGUp
Om8mJnIuY2hpbGRyZW4ubGVuZ3RoPyIgIjoiIikpe3ZhciB0OyFhJiYiICIhPT1lJiYodD1kbihl
LF9hKSk/ci5jaGlsZHJlbi5wdXNoKHt0eXBlOjIsZXhwcmVzc2lvbjp0LHRleHQ6ZX0pOnIuY2hp
bGRyZW4ucHVzaCh7dHlwZTozLHRleHQ6ZX0pfX19KSxufWZ1bmN0aW9uIFNuKGUpe251bGwhPWJu
KGUsInYtcHJlIikmJihlLnByZT0hMCl9ZnVuY3Rpb24gVG4oZSl7dmFyIHQ9ZS5hdHRyc0xpc3Qu
bGVuZ3RoO2lmKHQpZm9yKHZhciBuPWUuYXR0cnM9bmV3IEFycmF5KHQpLHI9MDtyPHQ7cisrKW5b
cl09e25hbWU6ZS5hdHRyc0xpc3Rbcl0ubmFtZSx2YWx1ZTpKU09OLnN0cmluZ2lmeShlLmF0dHJz
TGlzdFtyXS52YWx1ZSl9O2Vsc2UgZS5wcmV8fChlLnBsYWluPSEwKX1mdW5jdGlvbiBFbihlKXt2
YXIgdD1fbihlLCJrZXkiKTt0JiYoZS5rZXk9dCl9ZnVuY3Rpb24gam4oZSl7dmFyIHQ9X24oZSwi
cmVmIik7dCYmKGUucmVmPXQsZS5yZWZJbkZvcj1IbihlKSl9ZnVuY3Rpb24gTm4oZSl7dmFyIHQ7
aWYodD1ibihlLCJ2LWZvciIpKXt2YXIgbj10Lm1hdGNoKHphKTtpZighbilyZXR1cm47ZS5mb3I9
blsyXS50cmltKCk7dmFyIHI9blsxXS50cmltKCksaT1yLm1hdGNoKFZhKTtpPyhlLmFsaWFzPWlb
MV0udHJpbSgpLGUuaXRlcmF0b3IxPWlbMl0udHJpbSgpLGlbM10mJihlLml0ZXJhdG9yMj1pWzNd
LnRyaW0oKSkpOmUuYWxpYXM9cn19ZnVuY3Rpb24gTG4oZSl7dmFyIHQ9Ym4oZSwidi1pZiIpO2lm
KHQpZS5pZj10LFBuKGUse2V4cDp0LGJsb2NrOmV9KTtlbHNle251bGwhPWJuKGUsInYtZWxzZSIp
JiYoZS5lbHNlPSEwKTt2YXIgbj1ibihlLCJ2LWVsc2UtaWYiKTtuJiYoZS5lbHNlaWY9bil9fWZ1
bmN0aW9uIE1uKGUsdCl7dmFyIG49em4odC5jaGlsZHJlbik7biYmbi5pZiYmUG4obix7ZXhwOmUu
ZWxzZWlmLGJsb2NrOmV9KX1mdW5jdGlvbiBQbihlLHQpe2UuY29uZGl0aW9uc3x8KGUuY29uZGl0
aW9ucz1bXSksZS5jb25kaXRpb25zLnB1c2godCl9ZnVuY3Rpb24gRG4oZSl7dmFyIHQ9Ym4oZSwi
di1vbmNlIik7bnVsbCE9dCYmKGUub25jZT0hMCl9ZnVuY3Rpb24gUm4oZSl7aWYoInNsb3QiPT09
ZS50YWcpZS5zbG90TmFtZT1fbihlLCJuYW1lIik7ZWxzZXt2YXIgdD1fbihlLCJzbG90Iik7dCYm
KGUuc2xvdFRhcmdldD0nIiInPT09dD8nImRlZmF1bHQiJzp0KSwidGVtcGxhdGUiPT09ZS50YWcm
JihlLnNsb3RTY29wZT1ibihlLCJzY29wZSIpKX19ZnVuY3Rpb24gQm4oZSl7dmFyIHQ7KHQ9X24o
ZSwiaXMiKSkmJihlLmNvbXBvbmVudD10KSxudWxsIT1ibihlLCJpbmxpbmUtdGVtcGxhdGUiKSYm
KGUuaW5saW5lVGVtcGxhdGU9ITApfWZ1bmN0aW9uIEluKGUpe3ZhciB0LG4scixpLG8sYSxzLGMs
dT1lLmF0dHJzTGlzdDtmb3IodD0wLG49dS5sZW5ndGg7dDxuO3QrKylpZihyPWk9dVt0XS5uYW1l
LG89dVt0XS52YWx1ZSxVYS50ZXN0KHIpKWlmKGUuaGFzQmluZGluZ3M9ITAscz1GbihyKSxzJiYo
cj1yLnJlcGxhY2UoV2EsIiIpKSxKYS50ZXN0KHIpKXI9ci5yZXBsYWNlKEphLCIiKSxvPWxuKG8p
LHMmJihzLnByb3AmJihjPSEwLHI9SnIociksImlubmVySHRtbCI9PT1yJiYocj0iaW5uZXJIVE1M
IikpLHMuY2FtZWwmJihyPUpyKHIpKSksY3x8aGEoZS50YWcscik/dm4oZSxyLG8pOm1uKGUscixv
KTtlbHNlIGlmKHFhLnRlc3Qocikpcj1yLnJlcGxhY2UocWEsIiIpLHluKGUscixvLHMpO2Vsc2V7
cj1yLnJlcGxhY2UoVWEsIiIpO3ZhciBsPXIubWF0Y2goS2EpO2wmJihhPWxbMV0pJiYocj1yLnNs
aWNlKDAsLShhLmxlbmd0aCsxKSkpLGduKGUscixpLG8sYSxzKX1lbHNle21uKGUscixKU09OLnN0
cmluZ2lmeShvKSl9fWZ1bmN0aW9uIEhuKGUpe2Zvcih2YXIgdD1lO3Q7KXtpZih2b2lkIDAhPT10
LmZvcilyZXR1cm4hMDt0PXQucGFyZW50fXJldHVybiExfWZ1bmN0aW9uIEZuKGUpe3ZhciB0PWUu
bWF0Y2goV2EpO2lmKHQpe3ZhciBuPXt9O3JldHVybiB0LmZvckVhY2goZnVuY3Rpb24oZSl7bltl
LnNsaWNlKDEpXT0hMH0pLG59fWZ1bmN0aW9uIFVuKGUpe2Zvcih2YXIgdD17fSxuPTAscj1lLmxl
bmd0aDtuPHI7bisrKXRbZVtuXS5uYW1lXT1lW25dLnZhbHVlO3JldHVybiB0fWZ1bmN0aW9uIHpu
KGUpe2Zvcih2YXIgdD1lLmxlbmd0aDt0LS07KWlmKGVbdF0udGFnKXJldHVybiBlW3RdfWZ1bmN0
aW9uIFZuKGUpe3JldHVybiJzdHlsZSI9PT1lLnRhZ3x8InNjcmlwdCI9PT1lLnRhZyYmKCFlLmF0
dHJzTWFwLnR5cGV8fCJ0ZXh0L2phdmFzY3JpcHQiPT09ZS5hdHRyc01hcC50eXBlKX1mdW5jdGlv
biBKbihlKXtmb3IodmFyIHQ9W10sbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgcj1lW25dO0dhLnRl
c3Qoci5uYW1lKXx8KHIubmFtZT1yLm5hbWUucmVwbGFjZShZYSwiIiksdC5wdXNoKHIpKX1yZXR1
cm4gdH1mdW5jdGlvbiBxbihlLHQpe2UmJihiYT1RYSh0LnN0YXRpY0tleXN8fCIiKSx3YT10Lmlz
UmVzZXJ2ZWRUYWd8fGZ1bmN0aW9uKCl7cmV0dXJuITF9LFduKGUpLFpuKGUsITEpKX1mdW5jdGlv
biBLbihlKXtyZXR1cm4gaSgidHlwZSx0YWcsYXR0cnNMaXN0LGF0dHJzTWFwLHBsYWluLHBhcmVu
dCxjaGlsZHJlbixhdHRycyIrKGU/IiwiK2U6IiIpKX1mdW5jdGlvbiBXbihlKXtpZihlLnN0YXRp
Yz1ZbihlKSwxPT09ZS50eXBlKXtpZighd2EoZS50YWcpJiYic2xvdCIhPT1lLnRhZyYmbnVsbD09
ZS5hdHRyc01hcFsiaW5saW5lLXRlbXBsYXRlIl0pcmV0dXJuO2Zvcih2YXIgdD0wLG49ZS5jaGls
ZHJlbi5sZW5ndGg7dDxuO3QrKyl7dmFyIHI9ZS5jaGlsZHJlblt0XTtXbihyKSxyLnN0YXRpY3x8
KGUuc3RhdGljPSExKX19fWZ1bmN0aW9uIFpuKGUsdCl7aWYoMT09PWUudHlwZSl7aWYoKGUuc3Rh
dGljfHxlLm9uY2UpJiYoZS5zdGF0aWNJbkZvcj10KSxlLnN0YXRpYyYmZS5jaGlsZHJlbi5sZW5n
dGgmJigxIT09ZS5jaGlsZHJlbi5sZW5ndGh8fDMhPT1lLmNoaWxkcmVuWzBdLnR5cGUpKXJldHVy
biB2b2lkKGUuc3RhdGljUm9vdD0hMCk7aWYoZS5zdGF0aWNSb290PSExLGUuY2hpbGRyZW4pZm9y
KHZhciBuPTAscj1lLmNoaWxkcmVuLmxlbmd0aDtuPHI7bisrKVpuKGUuY2hpbGRyZW5bbl0sdHx8
ISFlLmZvcik7ZS5jb25kaXRpb25zJiZHbihlLmNvbmRpdGlvbnMsdCl9fWZ1bmN0aW9uIEduKGUs
dCl7Zm9yKHZhciBuPTEscj1lLmxlbmd0aDtuPHI7bisrKVpuKGVbbl0uYmxvY2ssdCl9ZnVuY3Rp
b24gWW4oZSl7cmV0dXJuIDIhPT1lLnR5cGUmJigzPT09ZS50eXBlfHwhKCFlLnByZSYmKGUuaGFz
QmluZGluZ3N8fGUuaWZ8fGUuZm9yfHxVcihlLnRhZyl8fCF3YShlLnRhZyl8fFFuKGUpfHwhT2Jq
ZWN0LmtleXMoZSkuZXZlcnkoYmEpKSkpfWZ1bmN0aW9uIFFuKGUpe2Zvcig7ZS5wYXJlbnQ7KXtp
ZihlPWUucGFyZW50LCJ0ZW1wbGF0ZSIhPT1lLnRhZylyZXR1cm4hMTtpZihlLmZvcilyZXR1cm4h
MH1yZXR1cm4hMX1mdW5jdGlvbiBYbihlLHQpe3ZhciBuPXQ/Im5hdGl2ZU9uOnsiOiJvbjp7Ijtm
b3IodmFyIHIgaW4gZSluKz0nIicrcisnIjonK2VyKHIsZVtyXSkrIiwiO3JldHVybiBuLnNsaWNl
KDAsLTEpKyJ9In1mdW5jdGlvbiBlcihlLHQpe2lmKHQpe2lmKEFycmF5LmlzQXJyYXkodCkpcmV0
dXJuIlsiK3QubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBlcihlLHQpfSkuam9pbigiLCIpKyJdIjtp
Zih0Lm1vZGlmaWVycyl7dmFyIG49IiIscj1bXSxpPXJzLnRlc3QoZSk7Zm9yKHZhciBvIGluIHQu
bW9kaWZpZXJzKW5zW29dP24rPW5zW29dOmkmJmlzW29dP24rPWlzW29dOnIucHVzaChvKTtyLmxl
bmd0aCYmKG49dHIocikrbik7dmFyIGE9ZXMudGVzdCh0LnZhbHVlKT90LnZhbHVlKyIoJGV2ZW50
KSI6dC52YWx1ZTtyZXR1cm4iZnVuY3Rpb24oJGV2ZW50KXsiK24rYSsifSJ9cmV0dXJuIFhhLnRl
c3QodC52YWx1ZSl8fGVzLnRlc3QodC52YWx1ZSk/dC52YWx1ZToiZnVuY3Rpb24oJGV2ZW50KXsi
K3QudmFsdWUrIn0ifXJldHVybiJmdW5jdGlvbigpe30ifWZ1bmN0aW9uIHRyKGUpe3ZhciB0PTE9
PT1lLmxlbmd0aD9ucihlWzBdKTpBcnJheS5wcm90b3R5cGUuY29uY2F0LmFwcGx5KFtdLGUubWFw
KG5yKSk7cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/ImlmKCIrdC5tYXAoZnVuY3Rpb24oZSl7cmV0
dXJuIiRldmVudC5rZXlDb2RlIT09IitlfSkuam9pbigiJiYiKSsiKXJldHVybjsiOiJpZigkZXZl
bnQua2V5Q29kZSE9PSIrdCsiKXJldHVybjsifWZ1bmN0aW9uIG5yKGUpe3JldHVybiBwYXJzZUlu
dChlLDEwKXx8dHNbZV18fCJfaygiK0pTT04uc3RyaW5naWZ5KGUpKyIpIn1mdW5jdGlvbiBycihl
LHQpe2Uud3JhcERhdGE9ZnVuY3Rpb24obil7cmV0dXJuIl9iKCIrbisiLCciK2UudGFnKyInLCIr
dC52YWx1ZSsodC5tb2RpZmllcnMmJnQubW9kaWZpZXJzLnByb3A/Iix0cnVlIjoiIikrIikifX1m
dW5jdGlvbiBpcihlLHQpe3ZhciBuPWthLHI9a2E9W10saT1PYTtPYT0wLFNhPXQseGE9dC53YXJu
fHxwbiwkYT1obih0Lm1vZHVsZXMsInRyYW5zZm9ybUNvZGUiKSxDYT1obih0Lm1vZHVsZXMsImdl
bkRhdGEiKSxBYT10LmRpcmVjdGl2ZXN8fHt9O3ZhciBvPWU/b3IoZSk6J19oKCJkaXYiKSc7cmV0
dXJuIGthPW4sT2E9aSx7cmVuZGVyOiJ3aXRoKHRoaXMpe3JldHVybiAiK28rIn0iLHN0YXRpY1Jl
bmRlckZuczpyfX1mdW5jdGlvbiBvcihlKXtpZihlLnN0YXRpY1Jvb3QmJiFlLnN0YXRpY1Byb2Nl
c3NlZClyZXR1cm4gYXIoZSk7aWYoZS5vbmNlJiYhZS5vbmNlUHJvY2Vzc2VkKXJldHVybiBzcihl
KTtpZihlLmZvciYmIWUuZm9yUHJvY2Vzc2VkKXJldHVybiBscihlKTtpZihlLmlmJiYhZS5pZlBy
b2Nlc3NlZClyZXR1cm4gY3IoZSk7aWYoInRlbXBsYXRlIiE9PWUudGFnfHxlLnNsb3RUYXJnZXQp
e2lmKCJzbG90Ij09PWUudGFnKXJldHVybiBfcihlKTt2YXIgdDtpZihlLmNvbXBvbmVudCl0PWJy
KGUuY29tcG9uZW50LGUpO2Vsc2V7dmFyIG49ZS5wbGFpbj92b2lkIDA6ZnIoZSkscj1lLmlubGlu
ZVRlbXBsYXRlP251bGw6bXIoZSk7dD0iX2goJyIrZS50YWcrIiciKyhuPyIsIituOiIiKSsocj8i
LCIrcjoiIikrIikifWZvcih2YXIgaT0wO2k8JGEubGVuZ3RoO2krKyl0PSRhW2ldKGUsdCk7cmV0
dXJuIHR9cmV0dXJuIG1yKGUpfHwidm9pZCAwIn1mdW5jdGlvbiBhcihlKXtyZXR1cm4gZS5zdGF0
aWNQcm9jZXNzZWQ9ITAsa2EucHVzaCgid2l0aCh0aGlzKXtyZXR1cm4gIitvcihlKSsifSIpLCJf
bSgiKyhrYS5sZW5ndGgtMSkrKGUuc3RhdGljSW5Gb3I/Iix0cnVlIjoiIikrIikifWZ1bmN0aW9u
IHNyKGUpe2lmKGUub25jZVByb2Nlc3NlZD0hMCxlLmlmJiYhZS5pZlByb2Nlc3NlZClyZXR1cm4g
Y3IoZSk7aWYoZS5zdGF0aWNJbkZvcil7Zm9yKHZhciB0PSIiLG49ZS5wYXJlbnQ7bjspe2lmKG4u
Zm9yKXt0PW4ua2V5O2JyZWFrfW49bi5wYXJlbnR9cmV0dXJuIHQ/Il9vKCIrb3IoZSkrIiwiK09h
KysgKyh0PyIsIit0OiIiKSsiKSI6b3IoZSl9cmV0dXJuIGFyKGUpfWZ1bmN0aW9uIGNyKGUpe3Jl
dHVybiBlLmlmUHJvY2Vzc2VkPSEwLHVyKGUuY29uZGl0aW9ucyl9ZnVuY3Rpb24gdXIoZSl7ZnVu
Y3Rpb24gdChlKXtyZXR1cm4gZS5vbmNlP3NyKGUpOm9yKGUpfWlmKCFlLmxlbmd0aClyZXR1cm4i
X2UoKSI7dmFyIG49ZS5zaGlmdCgpO3JldHVybiBuLmV4cD8iKCIrbi5leHArIik/Iit0KG4uYmxv
Y2spKyI6Iit1cihlKToiIit0KG4uYmxvY2spfWZ1bmN0aW9uIGxyKGUpe3ZhciB0PWUuZm9yLG49
ZS5hbGlhcyxyPWUuaXRlcmF0b3IxPyIsIitlLml0ZXJhdG9yMToiIixpPWUuaXRlcmF0b3IyPyIs
IitlLml0ZXJhdG9yMjoiIjtyZXR1cm4gZS5mb3JQcm9jZXNzZWQ9ITAsIl9sKCgiK3QrIiksZnVu
Y3Rpb24oIituK3IraSsiKXtyZXR1cm4gIitvcihlKSsifSkifWZ1bmN0aW9uIGZyKGUpe3ZhciB0
PSJ7IixuPWRyKGUpO24mJih0Kz1uKyIsIiksZS5rZXkmJih0Kz0ia2V5OiIrZS5rZXkrIiwiKSxl
LnJlZiYmKHQrPSJyZWY6IitlLnJlZisiLCIpLGUucmVmSW5Gb3ImJih0Kz0icmVmSW5Gb3I6dHJ1
ZSwiKSxlLmNvbXBvbmVudCYmKHQrPSd0YWc6IicrZS50YWcrJyIsJyk7Zm9yKHZhciByPTA7cjxD
YS5sZW5ndGg7cisrKXQrPUNhW3JdKGUpO2lmKGUuYXR0cnMmJih0Kz0iYXR0cnM6eyIrd3IoZS5h
dHRycykrIn0sIiksZS5wcm9wcyYmKHQrPSJkb21Qcm9wczp7Iit3cihlLnByb3BzKSsifSwiKSxl
LmV2ZW50cyYmKHQrPVhuKGUuZXZlbnRzKSsiLCIpLGUubmF0aXZlRXZlbnRzJiYodCs9WG4oZS5u
YXRpdmVFdmVudHMsITApKyIsIiksZS5zbG90VGFyZ2V0JiYodCs9InNsb3Q6IitlLnNsb3RUYXJn
ZXQrIiwiKSxlLnNjb3BlZFNsb3RzJiYodCs9aHIoZS5zY29wZWRTbG90cykrIiwiKSxlLmlubGlu
ZVRlbXBsYXRlKXt2YXIgaT1wcihlKTtpJiYodCs9aSsiLCIpfXJldHVybiB0PXQucmVwbGFjZSgv
LCQvLCIiKSsifSIsZS53cmFwRGF0YSYmKHQ9ZS53cmFwRGF0YSh0KSksdH1mdW5jdGlvbiBkcihl
KXt2YXIgdD1lLmRpcmVjdGl2ZXM7aWYodCl7dmFyIG4scixpLG8sYT0iZGlyZWN0aXZlczpbIixz
PSExO2ZvcihuPTAscj10Lmxlbmd0aDtuPHI7bisrKXtpPXRbbl0sbz0hMDt2YXIgYz1BYVtpLm5h
bWVdfHxvc1tpLm5hbWVdO2MmJihvPSEhYyhlLGkseGEpKSxvJiYocz0hMCxhKz0ne25hbWU6Iicr
aS5uYW1lKyciLHJhd05hbWU6IicraS5yYXdOYW1lKyciJysoaS52YWx1ZT8iLHZhbHVlOigiK2ku
dmFsdWUrIiksZXhwcmVzc2lvbjoiK0pTT04uc3RyaW5naWZ5KGkudmFsdWUpOiIiKSsoaS5hcmc/
Jyxhcmc6IicraS5hcmcrJyInOiIiKSsoaS5tb2RpZmllcnM/Iixtb2RpZmllcnM6IitKU09OLnN0
cmluZ2lmeShpLm1vZGlmaWVycyk6IiIpKyJ9LCIpfXJldHVybiBzP2Euc2xpY2UoMCwtMSkrIl0i
OnZvaWQgMH19ZnVuY3Rpb24gcHIoZSl7dmFyIHQ9ZS5jaGlsZHJlblswXTtpZigxPT09dC50eXBl
KXt2YXIgbj1pcih0LFNhKTtyZXR1cm4iaW5saW5lVGVtcGxhdGU6e3JlbmRlcjpmdW5jdGlvbigp
eyIrbi5yZW5kZXIrIn0sc3RhdGljUmVuZGVyRm5zOlsiK24uc3RhdGljUmVuZGVyRm5zLm1hcChm
dW5jdGlvbihlKXtyZXR1cm4iZnVuY3Rpb24oKXsiK2UrIn0ifSkuam9pbigiLCIpKyJdfSJ9fWZ1
bmN0aW9uIGhyKGUpe3JldHVybiJzY29wZWRTbG90czp7IitPYmplY3Qua2V5cyhlKS5tYXAoZnVu
Y3Rpb24odCl7cmV0dXJuIHZyKHQsZVt0XSl9KS5qb2luKCIsIikrIn0ifWZ1bmN0aW9uIHZyKGUs
dCl7cmV0dXJuIGUrIjpmdW5jdGlvbigiK1N0cmluZyh0LmF0dHJzTWFwLnNjb3BlKSsiKXtyZXR1
cm4gIisoInRlbXBsYXRlIj09PXQudGFnP21yKHQpfHwidm9pZCAwIjpvcih0KSkrIn0ifWZ1bmN0
aW9uIG1yKGUpe2lmKGUuY2hpbGRyZW4ubGVuZ3RoKXJldHVybiJbIitlLmNoaWxkcmVuLm1hcChn
cikuam9pbigiLCIpKyJdIn1mdW5jdGlvbiBncihlKXtyZXR1cm4gMT09PWUudHlwZT9vcihlKTp5
cihlKX1mdW5jdGlvbiB5cihlKXtyZXR1cm4gMj09PWUudHlwZT9lLmV4cHJlc3Npb246eHIoSlNP
Ti5zdHJpbmdpZnkoZS50ZXh0KSl9ZnVuY3Rpb24gX3IoZSl7dmFyIHQ9ZS5zbG90TmFtZXx8JyJk
ZWZhdWx0Iicsbj1tcihlKTtyZXR1cm4iX3QoIit0KyhuPyIsIituOiIiKSsoZS5hdHRycz8obj8i
IjoiLG51bGwiKSsiLHsiK2UuYXR0cnMubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBKcihlLm5hbWUp
KyI6IitlLnZhbHVlfSkuam9pbigiLCIpKyJ9IjoiIikrIikifWZ1bmN0aW9uIGJyKGUsdCl7dmFy
IG49dC5pbmxpbmVUZW1wbGF0ZT9udWxsOm1yKHQpO3JldHVybiJfaCgiK2UrIiwiK2ZyKHQpKyhu
PyIsIituOiIiKSsiKSJ9ZnVuY3Rpb24gd3IoZSl7Zm9yKHZhciB0PSIiLG49MDtuPGUubGVuZ3Ro
O24rKyl7dmFyIHI9ZVtuXTt0Kz0nIicrci5uYW1lKyciOicreHIoci52YWx1ZSkrIiwifXJldHVy
biB0LnNsaWNlKDAsLTEpfWZ1bmN0aW9uIHhyKGUpe3JldHVybiBlLnJlcGxhY2UoL1x1MjAyOC9n
LCJcXHUyMDI4IikucmVwbGFjZSgvXHUyMDI5L2csIlxcdTIwMjkiKX1mdW5jdGlvbiAkcihlLHQp
e3ZhciBuPU9uKGUudHJpbSgpLHQpO3FuKG4sdCk7dmFyIHI9aXIobix0KTtyZXR1cm57YXN0Om4s
cmVuZGVyOnIucmVuZGVyLHN0YXRpY1JlbmRlckZuczpyLnN0YXRpY1JlbmRlckZuc319ZnVuY3Rp
b24gQ3IoZSx0KXt2YXIgbj0odC53YXJufHxwbixibihlLCJjbGFzcyIpKTtuJiYoZS5zdGF0aWND
bGFzcz1KU09OLnN0cmluZ2lmeShuKSk7dmFyIHI9X24oZSwiY2xhc3MiLCExKTtyJiYoZS5jbGFz
c0JpbmRpbmc9cil9ZnVuY3Rpb24gQXIoZSl7dmFyIHQ9IiI7cmV0dXJuIGUuc3RhdGljQ2xhc3Mm
Jih0Kz0ic3RhdGljQ2xhc3M6IitlLnN0YXRpY0NsYXNzKyIsIiksZS5jbGFzc0JpbmRpbmcmJih0
Kz0iY2xhc3M6IitlLmNsYXNzQmluZGluZysiLCIpLHR9ZnVuY3Rpb24ga3IoZSx0KXt2YXIgbj0o
dC53YXJufHxwbixibihlLCJzdHlsZSIpKTtpZihuKXtlLnN0YXRpY1N0eWxlPUpTT04uc3RyaW5n
aWZ5KGdvKG4pKX12YXIgcj1fbihlLCJzdHlsZSIsITEpO3ImJihlLnN0eWxlQmluZGluZz1yKX1m
dW5jdGlvbiBPcihlKXt2YXIgdD0iIjtyZXR1cm4gZS5zdGF0aWNTdHlsZSYmKHQrPSJzdGF0aWNT
dHlsZToiK2Uuc3RhdGljU3R5bGUrIiwiKSxlLnN0eWxlQmluZGluZyYmKHQrPSJzdHlsZTooIitl
LnN0eWxlQmluZGluZysiKSwiKSx0fWZ1bmN0aW9uIFNyKGUsdCxuKXtUYT1uO3ZhciByPXQudmFs
dWUsaT10Lm1vZGlmaWVycyxvPWUudGFnLGE9ZS5hdHRyc01hcC50eXBlO3JldHVybiJzZWxlY3Qi
PT09bz9OcihlLHIsaSk6ImlucHV0Ij09PW8mJiJjaGVja2JveCI9PT1hP1RyKGUscixpKToiaW5w
dXQiPT09byYmInJhZGlvIj09PWE/RXIoZSxyLGkpOmpyKGUscixpKSwhMH1mdW5jdGlvbiBUcihl
LHQsbil7dmFyIHI9biYmbi5udW1iZXIsaT1fbihlLCJ2YWx1ZSIpfHwibnVsbCIsbz1fbihlLCJ0
cnVlLXZhbHVlIil8fCJ0cnVlIixhPV9uKGUsImZhbHNlLXZhbHVlIil8fCJmYWxzZSI7dm4oZSwi
Y2hlY2tlZCIsIkFycmF5LmlzQXJyYXkoIit0KyIpP19pKCIrdCsiLCIraSsiKT4tMTpfcSgiK3Qr
IiwiK28rIikiKSx5bihlLCJjaGFuZ2UiLCJ2YXIgJCRhPSIrdCsiLCQkZWw9JGV2ZW50LnRhcmdl
dCwkJGM9JCRlbC5jaGVja2VkPygiK28rIik6KCIrYSsiKTtpZihBcnJheS5pc0FycmF5KCQkYSkp
e3ZhciAkJHY9Iisocj8iX24oIitpKyIpIjppKSsiLCQkaT1faSgkJGEsJCR2KTtpZigkJGMpeyQk
aTwwJiYoIit0KyI9JCRhLmNvbmNhdCgkJHYpKX1lbHNleyQkaT4tMSYmKCIrdCsiPSQkYS5zbGlj
ZSgwLCQkaSkuY29uY2F0KCQkYS5zbGljZSgkJGkrMSkpKX19ZWxzZXsiK3QrIj0kJGN9IixudWxs
LCEwKX1mdW5jdGlvbiBFcihlLHQsbil7dmFyIHI9biYmbi5udW1iZXIsaT1fbihlLCJ2YWx1ZSIp
fHwibnVsbCI7aT1yPyJfbigiK2krIikiOmksdm4oZSwiY2hlY2tlZCIsIl9xKCIrdCsiLCIraSsi
KSIpLHluKGUsImNoYW5nZSIsTHIodCxpKSxudWxsLCEwKX1mdW5jdGlvbiBqcihlLHQsbil7dmFy
IHI9ZS5hdHRyc01hcC50eXBlLGk9bnx8e30sbz1pLmxhenksYT1pLm51bWJlcixzPWkudHJpbSxj
PW98fG5pJiYicmFuZ2UiPT09cj8iY2hhbmdlIjoiaW5wdXQiLHU9IW8mJiJyYW5nZSIhPT1yLGw9
ImlucHV0Ij09PWUudGFnfHwidGV4dGFyZWEiPT09ZS50YWcsZj1sPyIkZXZlbnQudGFyZ2V0LnZh
bHVlIisocz8iLnRyaW0oKSI6IiIpOnM/Iih0eXBlb2YgJGV2ZW50ID09PSAnc3RyaW5nJyA/ICRl
dmVudC50cmltKCkgOiAkZXZlbnQpIjoiJGV2ZW50IjtmPWF8fCJudW1iZXIiPT09cj8iX24oIitm
KyIpIjpmO3ZhciBkPUxyKHQsZik7bCYmdSYmKGQ9ImlmKCRldmVudC50YXJnZXQuY29tcG9zaW5n
KXJldHVybjsiK2QpLHZuKGUsInZhbHVlIixsPyJfcygiK3QrIikiOiIoIit0KyIpIikseW4oZSxj
LGQsbnVsbCwhMCl9ZnVuY3Rpb24gTnIoZSx0LG4pe3ZhciByPW4mJm4ubnVtYmVyLGk9J0FycmF5
LnByb3RvdHlwZS5maWx0ZXIuY2FsbCgkZXZlbnQudGFyZ2V0Lm9wdGlvbnMsZnVuY3Rpb24obyl7
cmV0dXJuIG8uc2VsZWN0ZWR9KS5tYXAoZnVuY3Rpb24obyl7dmFyIHZhbCA9ICJfdmFsdWUiIGlu
IG8gPyBvLl92YWx1ZSA6IG8udmFsdWU7cmV0dXJuICcrKHI/Il9uKHZhbCkiOiJ2YWwiKSsifSki
KyhudWxsPT1lLmF0dHJzTWFwLm11bHRpcGxlPyJbMF0iOiIiKSxvPUxyKHQsaSk7eW4oZSwiY2hh
bmdlIixvLG51bGwsITApfWZ1bmN0aW9uIExyKGUsdCl7dmFyIG49d24oZSk7cmV0dXJuIG51bGw9
PT1uLmlkeD9lKyI9Iit0OiJ2YXIgJCRleHAgPSAiK24uZXhwKyIsICQkaWR4ID0gIituLmlkeCsi
O2lmICghQXJyYXkuaXNBcnJheSgkJGV4cCkpeyIrZSsiPSIrdCsifWVsc2V7JCRleHAuc3BsaWNl
KCQkaWR4LCAxLCAiK3QrIil9In1mdW5jdGlvbiBNcihlLHQpe3QudmFsdWUmJnZuKGUsInRleHRD
b250ZW50IiwiX3MoIit0LnZhbHVlKyIpIil9ZnVuY3Rpb24gUHIoZSx0KXt0LnZhbHVlJiZ2bihl
LCJpbm5lckhUTUwiLCJfcygiK3QudmFsdWUrIikiKX1mdW5jdGlvbiBEcihlLHQpe3JldHVybiB0
PXQ/ZihmKHt9LGZzKSx0KTpmcywkcihlLHQpfWZ1bmN0aW9uIFJyKGUsdCxuKXt2YXIgcj0odCYm
dC53YXJufHxkaSx0JiZ0LmRlbGltaXRlcnM/U3RyaW5nKHQuZGVsaW1pdGVycykrZTplKTtpZihs
c1tyXSlyZXR1cm4gbHNbcl07dmFyIGk9e30sbz1EcihlLHQpO2kucmVuZGVyPUJyKG8ucmVuZGVy
KTt2YXIgYT1vLnN0YXRpY1JlbmRlckZucy5sZW5ndGg7aS5zdGF0aWNSZW5kZXJGbnM9bmV3IEFy
cmF5KGEpO2Zvcih2YXIgcz0wO3M8YTtzKyspaS5zdGF0aWNSZW5kZXJGbnNbc109QnIoby5zdGF0
aWNSZW5kZXJGbnNbc10pO3JldHVybiBsc1tyXT1pfWZ1bmN0aW9uIEJyKGUpe3RyeXtyZXR1cm4g
bmV3IEZ1bmN0aW9uKGUpfWNhdGNoKGUpe3JldHVybiB2fX1mdW5jdGlvbiBJcihlKXtpZihlLm91
dGVySFRNTClyZXR1cm4gZS5vdXRlckhUTUw7dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7cmV0dXJuIHQuYXBwZW5kQ2hpbGQoZS5jbG9uZU5vZGUoITApKSx0LmlubmVySFRNTH12
YXIgSHIsRnIsVXI9aSgic2xvdCxjb21wb25lbnQiLCEwKSx6cj1PYmplY3QucHJvdG90eXBlLmhh
c093blByb3BlcnR5LFZyPS8tKFx3KS9nLEpyPWMoZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFj
ZShWcixmdW5jdGlvbihlLHQpe3JldHVybiB0P3QudG9VcHBlckNhc2UoKToiIn0pfSkscXI9Yyhm
dW5jdGlvbihlKXtyZXR1cm4gZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStlLnNsaWNlKDEpfSks
S3I9LyhbXi1dKShbQS1aXSkvZyxXcj1jKGZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoS3Is
IiQxLSQyIikucmVwbGFjZShLciwiJDEtJDIiKS50b0xvd2VyQ2FzZSgpfSksWnI9T2JqZWN0LnBy
b3RvdHlwZS50b1N0cmluZyxHcj0iW29iamVjdCBPYmplY3RdIixZcj1mdW5jdGlvbigpe3JldHVy
biExfSxRcj0vW15cdy4kXS8sWHI9Il9fcHJvdG9fXyJpbnt9LGVpPSJ1bmRlZmluZWQiIT10eXBl
b2Ygd2luZG93JiYiW29iamVjdCBPYmplY3RdIiE9PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcu
Y2FsbCh3aW5kb3cpLHRpPWVpJiZ3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2Fz
ZSgpLG5pPXRpJiYvbXNpZXx0cmlkZW50Ly50ZXN0KHRpKSxyaT10aSYmdGkuaW5kZXhPZigibXNp
ZSA5LjAiKT4wLGlpPXRpJiZ0aS5pbmRleE9mKCJlZGdlLyIpPjAsb2k9dGkmJnRpLmluZGV4T2Yo
ImFuZHJvaWQiKT4wLGFpPXRpJiYvaXBob25lfGlwYWR8aXBvZHxpb3MvLnRlc3QodGkpLHNpPWZ1
bmN0aW9uKCl7cmV0dXJuIHZvaWQgMD09PUhyJiYoSHI9IWVpJiYidW5kZWZpbmVkIiE9dHlwZW9m
IHQmJiJzZXJ2ZXIiPT09dC5wcm9jZXNzLmVudi5WVUVfRU5WKSxIcn0sY2k9ZWkmJndpbmRvdy5f
X1ZVRV9ERVZUT09MU19HTE9CQUxfSE9PS19fLHVpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3I9
ITE7dmFyIGU9bi5zbGljZSgwKTtuLmxlbmd0aD0wO2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7dCsr
KWVbdF0oKX12YXIgdCxuPVtdLHI9ITE7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBQcm9taXNlJiZ4
KFByb21pc2UpKXt2YXIgaT1Qcm9taXNlLnJlc29sdmUoKTt0PWZ1bmN0aW9uKCl7aS50aGVuKGUp
LGFpJiZzZXRUaW1lb3V0KHYpfX1lbHNlIGlmKCJ1bmRlZmluZWQiPT10eXBlb2YgTXV0YXRpb25P
YnNlcnZlcnx8IXgoTXV0YXRpb25PYnNlcnZlcikmJiJbb2JqZWN0IE11dGF0aW9uT2JzZXJ2ZXJD
b25zdHJ1Y3Rvcl0iIT09TXV0YXRpb25PYnNlcnZlci50b1N0cmluZygpKXQ9ZnVuY3Rpb24oKXtz
ZXRUaW1lb3V0KGUsMCl9O2Vsc2V7dmFyIG89MSxhPW5ldyBNdXRhdGlvbk9ic2VydmVyKGUpLHM9
ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoU3RyaW5nKG8pKTthLm9ic2VydmUocyx7Y2hhcmFjdGVy
RGF0YTohMH0pLHQ9ZnVuY3Rpb24oKXtvPShvKzEpJTIscy5kYXRhPVN0cmluZyhvKX19cmV0dXJu
IGZ1bmN0aW9uKGUsaSl7dmFyIG87aWYobi5wdXNoKGZ1bmN0aW9uKCl7ZSYmZS5jYWxsKGkpLG8m
Jm8oaSl9KSxyfHwocj0hMCx0KCkpLCFlJiYidW5kZWZpbmVkIiE9dHlwZW9mIFByb21pc2UpcmV0
dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGUpe289ZX0pfX0oKTtGcj0idW5kZWZpbmVkIiE9dHlw
ZW9mIFNldCYmeChTZXQpP1NldDpmdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt0aGlzLnNldD1PYmpl
Y3QuY3JlYXRlKG51bGwpfXJldHVybiBlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24oZSl7cmV0dXJu
IHZvaWQgMCE9PXRoaXMuc2V0W2VdfSxlLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oZSl7dGhpcy5z
ZXRbZV09MX0sZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLnNldD1PYmplY3QuY3Jl
YXRlKG51bGwpfSxlfSgpO3ZhciBsaSxmaT17b3B0aW9uTWVyZ2VTdHJhdGVnaWVzOk9iamVjdC5j
cmVhdGUobnVsbCksc2lsZW50OiExLGRldnRvb2xzOiExLGVycm9ySGFuZGxlcjpudWxsLGlnbm9y
ZWRFbGVtZW50czpudWxsLGtleUNvZGVzOk9iamVjdC5jcmVhdGUobnVsbCksaXNSZXNlcnZlZFRh
ZzpZcixpc1Vua25vd25FbGVtZW50OllyLGdldFRhZ05hbWVzcGFjZTp2LG11c3RVc2VQcm9wOlly
LF9hc3NldFR5cGVzOlsiY29tcG9uZW50IiwiZGlyZWN0aXZlIiwiZmlsdGVyIl0sX2xpZmVjeWNs
ZUhvb2tzOlsiYmVmb3JlQ3JlYXRlIiwiY3JlYXRlZCIsImJlZm9yZU1vdW50IiwibW91bnRlZCIs
ImJlZm9yZVVwZGF0ZSIsInVwZGF0ZWQiLCJiZWZvcmVEZXN0cm95IiwiZGVzdHJveWVkIiwiYWN0
aXZhdGVkIiwiZGVhY3RpdmF0ZWQiXSxfbWF4VXBkYXRlQ291bnQ6MTAwfSxkaT12LHBpPTAsaGk9
ZnVuY3Rpb24oKXt0aGlzLmlkPXBpKyssdGhpcy5zdWJzPVtdfTtoaS5wcm90b3R5cGUuYWRkU3Vi
PWZ1bmN0aW9uKGUpe3RoaXMuc3Vicy5wdXNoKGUpfSxoaS5wcm90b3R5cGUucmVtb3ZlU3ViPWZ1
bmN0aW9uKGUpe28odGhpcy5zdWJzLGUpfSxoaS5wcm90b3R5cGUuZGVwZW5kPWZ1bmN0aW9uKCl7
aGkudGFyZ2V0JiZoaS50YXJnZXQuYWRkRGVwKHRoaXMpfSxoaS5wcm90b3R5cGUubm90aWZ5PWZ1
bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMuc3Vicy5zbGljZSgpLHQ9MCxuPWUubGVuZ3RoO3Q8bjt0
KyspZVt0XS51cGRhdGUoKX0saGkudGFyZ2V0PW51bGw7dmFyIHZpPVtdLG1pPUFycmF5LnByb3Rv
dHlwZSxnaT1PYmplY3QuY3JlYXRlKG1pKTtbInB1c2giLCJwb3AiLCJzaGlmdCIsInVuc2hpZnQi
LCJzcGxpY2UiLCJzb3J0IiwicmV2ZXJzZSJdLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9bWlb
ZV07YihnaSxlLGZ1bmN0aW9uKCl7Zm9yKHZhciBuPWFyZ3VtZW50cyxyPWFyZ3VtZW50cy5sZW5n
dGgsaT1uZXcgQXJyYXkocik7ci0tOylpW3JdPW5bcl07dmFyIG8sYT10LmFwcGx5KHRoaXMsaSks
cz10aGlzLl9fb2JfXztzd2l0Y2goZSl7Y2FzZSJwdXNoIjpvPWk7YnJlYWs7Y2FzZSJ1bnNoaWZ0
IjpvPWk7YnJlYWs7Y2FzZSJzcGxpY2UiOm89aS5zbGljZSgyKX1yZXR1cm4gbyYmcy5vYnNlcnZl
QXJyYXkobykscy5kZXAubm90aWZ5KCksYX0pfSk7dmFyIHlpPU9iamVjdC5nZXRPd25Qcm9wZXJ0
eU5hbWVzKGdpKSxfaT17c2hvdWxkQ29udmVydDohMCxpc1NldHRpbmdQcm9wczohMX0sYmk9ZnVu
Y3Rpb24oZSl7aWYodGhpcy52YWx1ZT1lLHRoaXMuZGVwPW5ldyBoaSx0aGlzLnZtQ291bnQ9MCxi
KGUsIl9fb2JfXyIsdGhpcyksQXJyYXkuaXNBcnJheShlKSl7dmFyIHQ9WHI/QTprO3QoZSxnaSx5
aSksdGhpcy5vYnNlcnZlQXJyYXkoZSl9ZWxzZSB0aGlzLndhbGsoZSl9O2JpLnByb3RvdHlwZS53
YWxrPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1PYmplY3Qua2V5cyhlKSxuPTA7bjx0Lmxlbmd0aDtu
KyspUyhlLHRbbl0sZVt0W25dXSl9LGJpLnByb3RvdHlwZS5vYnNlcnZlQXJyYXk9ZnVuY3Rpb24o
ZSl7Zm9yKHZhciB0PTAsbj1lLmxlbmd0aDt0PG47dCsrKU8oZVt0XSl9O3ZhciB3aT1maS5vcHRp
b25NZXJnZVN0cmF0ZWdpZXM7d2kuZGF0YT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIG4/ZXx8dD9m
dW5jdGlvbigpe3ZhciByPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3QuY2FsbChuKTp0LGk9ImZ1bmN0
aW9uIj09dHlwZW9mIGU/ZS5jYWxsKG4pOnZvaWQgMDtyZXR1cm4gcj9OKHIsaSk6aX06dm9pZCAw
OnQ/ImZ1bmN0aW9uIiE9dHlwZW9mIHQ/ZTplP2Z1bmN0aW9uKCl7cmV0dXJuIE4odC5jYWxsKHRo
aXMpLGUuY2FsbCh0aGlzKSl9OnQ6ZX0sZmkuX2xpZmVjeWNsZUhvb2tzLmZvckVhY2goZnVuY3Rp
b24oZSl7d2lbZV09TH0pLGZpLl9hc3NldFR5cGVzLmZvckVhY2goZnVuY3Rpb24oZSl7d2lbZSsi
cyJdPU19KSx3aS53YXRjaD1mdW5jdGlvbihlLHQpe2lmKCF0KXJldHVybiBlO2lmKCFlKXJldHVy
biB0O3ZhciBuPXt9O2YobixlKTtmb3IodmFyIHIgaW4gdCl7dmFyIGk9bltyXSxvPXRbcl07aSYm
IUFycmF5LmlzQXJyYXkoaSkmJihpPVtpXSksbltyXT1pP2kuY29uY2F0KG8pOltvXX1yZXR1cm4g
bn0sd2kucHJvcHM9d2kubWV0aG9kcz13aS5jb21wdXRlZD1mdW5jdGlvbihlLHQpe2lmKCF0KXJl
dHVybiBlO2lmKCFlKXJldHVybiB0O3ZhciBuPU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIGYo
bixlKSxmKG4sdCksbn07dmFyIHhpPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMD09PXQ/ZTp0
fSwkaT1PYmplY3QuZnJlZXplKHtkZWZpbmVSZWFjdGl2ZTpTLF90b1N0cmluZzpuLHRvTnVtYmVy
OnIsbWFrZU1hcDppLGlzQnVpbHRJblRhZzpVcixyZW1vdmU6byxoYXNPd246YSxpc1ByaW1pdGl2
ZTpzLGNhY2hlZDpjLGNhbWVsaXplOkpyLGNhcGl0YWxpemU6cXIsaHlwaGVuYXRlOldyLGJpbmQ6
dSx0b0FycmF5OmwsZXh0ZW5kOmYsaXNPYmplY3Q6ZCxpc1BsYWluT2JqZWN0OnAsdG9PYmplY3Q6
aCxub29wOnYsbm86WXIsZ2VuU3RhdGljS2V5czptLGxvb3NlRXF1YWw6Zyxsb29zZUluZGV4T2Y6
eSxpc1Jlc2VydmVkOl8sZGVmOmIscGFyc2VQYXRoOncsaGFzUHJvdG86WHIsaW5Ccm93c2VyOmVp
LFVBOnRpLGlzSUU6bmksaXNJRTk6cmksaXNFZGdlOmlpLGlzQW5kcm9pZDpvaSxpc0lPUzphaSxp
c1NlcnZlclJlbmRlcmluZzpzaSxkZXZ0b29sczpjaSxuZXh0VGljazp1aSxnZXQgX1NldCgpe3Jl
dHVybiBGcn0sbWVyZ2VPcHRpb25zOlIscmVzb2x2ZUFzc2V0OkIsZ2V0IHdhcm4oKXtyZXR1cm4g
ZGl9LGdldCBmb3JtYXRDb21wb25lbnROYW1lKCl7cmV0dXJuIGxpfSx2YWxpZGF0ZVByb3A6SX0p
LENpPVtdLEFpPXt9LGtpPSExLE9pPSExLFNpPTAsVGk9MCxFaT1mdW5jdGlvbihlLHQsbixyKXt2
b2lkIDA9PT1yJiYocj17fSksdGhpcy52bT1lLGUuX3dhdGNoZXJzLnB1c2godGhpcyksdGhpcy5k
ZWVwPSEhci5kZWVwLHRoaXMudXNlcj0hIXIudXNlcix0aGlzLmxhenk9ISFyLmxhenksdGhpcy5z
eW5jPSEhci5zeW5jLHRoaXMuZXhwcmVzc2lvbj10LnRvU3RyaW5nKCksdGhpcy5jYj1uLHRoaXMu
aWQ9KytUaSx0aGlzLmFjdGl2ZT0hMCx0aGlzLmRpcnR5PXRoaXMubGF6eSx0aGlzLmRlcHM9W10s
dGhpcy5uZXdEZXBzPVtdLHRoaXMuZGVwSWRzPW5ldyBGcix0aGlzLm5ld0RlcElkcz1uZXcgRnIs
ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dGhpcy5nZXR0ZXI9dDoodGhpcy5nZXR0ZXI9dyh0KSx0aGlz
LmdldHRlcnx8KHRoaXMuZ2V0dGVyPWZ1bmN0aW9uKCl7fSkpLHRoaXMudmFsdWU9dGhpcy5sYXp5
P3ZvaWQgMDp0aGlzLmdldCgpfTtFaS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKCl7JCh0aGlzKTt2
YXIgZT10aGlzLmdldHRlci5jYWxsKHRoaXMudm0sdGhpcy52bSk7cmV0dXJuIHRoaXMuZGVlcCYm
cShlKSxDKCksdGhpcy5jbGVhbnVwRGVwcygpLGV9LEVpLnByb3RvdHlwZS5hZGREZXA9ZnVuY3Rp
b24oZSl7dmFyIHQ9ZS5pZDt0aGlzLm5ld0RlcElkcy5oYXModCl8fCh0aGlzLm5ld0RlcElkcy5h
ZGQodCksdGhpcy5uZXdEZXBzLnB1c2goZSksdGhpcy5kZXBJZHMuaGFzKHQpfHxlLmFkZFN1Yih0
aGlzKSl9LEVpLnByb3RvdHlwZS5jbGVhbnVwRGVwcz1mdW5jdGlvbigpe2Zvcih2YXIgZT10aGlz
LHQ9dGhpcy5kZXBzLmxlbmd0aDt0LS07KXt2YXIgbj1lLmRlcHNbdF07ZS5uZXdEZXBJZHMuaGFz
KG4uaWQpfHxuLnJlbW92ZVN1YihlKX12YXIgcj10aGlzLmRlcElkczt0aGlzLmRlcElkcz10aGlz
Lm5ld0RlcElkcyx0aGlzLm5ld0RlcElkcz1yLHRoaXMubmV3RGVwSWRzLmNsZWFyKCkscj10aGlz
LmRlcHMsdGhpcy5kZXBzPXRoaXMubmV3RGVwcyx0aGlzLm5ld0RlcHM9cix0aGlzLm5ld0RlcHMu
bGVuZ3RoPTB9LEVpLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oKXt0aGlzLmxhenk/dGhpcy5k
aXJ0eT0hMDp0aGlzLnN5bmM/dGhpcy5ydW4oKTpKKHRoaXMpfSxFaS5wcm90b3R5cGUucnVuPWZ1
bmN0aW9uKCl7aWYodGhpcy5hY3RpdmUpe3ZhciBlPXRoaXMuZ2V0KCk7aWYoZSE9PXRoaXMudmFs
dWV8fGQoZSl8fHRoaXMuZGVlcCl7dmFyIHQ9dGhpcy52YWx1ZTtpZih0aGlzLnZhbHVlPWUsdGhp
cy51c2VyKXRyeXt0aGlzLmNiLmNhbGwodGhpcy52bSxlLHQpfWNhdGNoKGUpe2lmKCFmaS5lcnJv
ckhhbmRsZXIpdGhyb3cgZTtmaS5lcnJvckhhbmRsZXIuY2FsbChudWxsLGUsdGhpcy52bSl9ZWxz
ZSB0aGlzLmNiLmNhbGwodGhpcy52bSxlLHQpfX19LEVpLnByb3RvdHlwZS5ldmFsdWF0ZT1mdW5j
dGlvbigpe3RoaXMudmFsdWU9dGhpcy5nZXQoKSx0aGlzLmRpcnR5PSExfSxFaS5wcm90b3R5cGUu
ZGVwZW5kPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMsdD10aGlzLmRlcHMubGVuZ3RoO3QtLTsp
ZS5kZXBzW3RdLmRlcGVuZCgpfSxFaS5wcm90b3R5cGUudGVhcmRvd249ZnVuY3Rpb24oKXt2YXIg
ZT10aGlzO2lmKHRoaXMuYWN0aXZlKXt0aGlzLnZtLl9pc0JlaW5nRGVzdHJveWVkfHx0aGlzLnZt
Ll92Rm9yUmVtb3Zpbmd8fG8odGhpcy52bS5fd2F0Y2hlcnMsdGhpcyk7Zm9yKHZhciB0PXRoaXMu
ZGVwcy5sZW5ndGg7dC0tOyllLmRlcHNbdF0ucmVtb3ZlU3ViKGUpO3RoaXMuYWN0aXZlPSExfX07
dmFyIGppPW5ldyBGcixOaT0oaSgia2V5LHJlZixzbG90Iikse2VudW1lcmFibGU6ITAsY29uZmln
dXJhYmxlOiEwLGdldDp2LHNldDp2fSksTGk9ZnVuY3Rpb24oZSx0LG4scixpLG8sYSxzKXt0aGlz
LnRhZz1lLHRoaXMuZGF0YT10LHRoaXMuY2hpbGRyZW49bix0aGlzLnRleHQ9cix0aGlzLmVsbT1p
LHRoaXMubnM9byx0aGlzLmNvbnRleHQ9YSx0aGlzLmZ1bmN0aW9uYWxDb250ZXh0PXZvaWQgMCx0
aGlzLmtleT10JiZ0LmtleSx0aGlzLmNvbXBvbmVudE9wdGlvbnM9cyx0aGlzLmNoaWxkPXZvaWQg
MCx0aGlzLnBhcmVudD12b2lkIDAsdGhpcy5yYXc9ITEsdGhpcy5pc1N0YXRpYz0hMSx0aGlzLmlz
Um9vdEluc2VydD0hMCx0aGlzLmlzQ29tbWVudD0hMSx0aGlzLmlzQ2xvbmVkPSExLHRoaXMuaXNP
bmNlPSExfSxNaT1mdW5jdGlvbigpe3ZhciBlPW5ldyBMaTtyZXR1cm4gZS50ZXh0PSIiLGUuaXND
b21tZW50PSEwLGV9LFBpPW51bGwsRGk9e2luaXQ6YmUscHJlcGF0Y2g6d2UsaW5zZXJ0OnhlLGRl
c3Ryb3k6JGV9LFJpPU9iamVjdC5rZXlzKERpKSxCaT0wO0RlKEllKSxuZShJZSksUGUoSWUpLHZl
KEllKSxOZShJZSk7dmFyIElpPVtTdHJpbmcsUmVnRXhwXSxIaT17bmFtZToia2VlcC1hbGl2ZSIs
YWJzdHJhY3Q6ITAscHJvcHM6e2luY2x1ZGU6SWksZXhjbHVkZTpJaX0sY3JlYXRlZDpmdW5jdGlv
bigpe3RoaXMuY2FjaGU9T2JqZWN0LmNyZWF0ZShudWxsKX0scmVuZGVyOmZ1bmN0aW9uKCl7dmFy
IGU9cGUodGhpcy4kc2xvdHMuZGVmYXVsdCk7aWYoZSYmZS5jb21wb25lbnRPcHRpb25zKXt2YXIg
dD1lLmNvbXBvbmVudE9wdGlvbnMsbj10LkN0b3Iub3B0aW9ucy5uYW1lfHx0LnRhZztpZihuJiYo
dGhpcy5pbmNsdWRlJiYhVmUodGhpcy5pbmNsdWRlLG4pfHx0aGlzLmV4Y2x1ZGUmJlZlKHRoaXMu
ZXhjbHVkZSxuKSkpcmV0dXJuIGU7dmFyIHI9bnVsbD09ZS5rZXk/dC5DdG9yLmNpZCsodC50YWc/
Ijo6Iit0LnRhZzoiIik6ZS5rZXk7dGhpcy5jYWNoZVtyXT9lLmNoaWxkPXRoaXMuY2FjaGVbcl0u
Y2hpbGQ6dGhpcy5jYWNoZVtyXT1lLGUuZGF0YS5rZWVwQWxpdmU9ITB9cmV0dXJuIGV9LGRlc3Ry
b3llZDpmdW5jdGlvbigpe3ZhciBlPXRoaXM7Zm9yKHZhciB0IGluIHRoaXMuY2FjaGUpe3ZhciBu
PWUuY2FjaGVbdF07bWUobi5jaGlsZCwiZGVhY3RpdmF0ZWQiKSxuLmNoaWxkLiRkZXN0cm95KCl9
fX0sRmk9e0tlZXBBbGl2ZTpIaX07SmUoSWUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShJZS5wcm90
b3R5cGUsIiRpc1NlcnZlciIse2dldDpzaX0pLEllLnZlcnNpb249IjIuMS4zIjt2YXIgVWksemk9
ZnVuY3Rpb24oZSx0KXtyZXR1cm4idmFsdWUiPT09dCYmKCJpbnB1dCI9PT1lfHwidGV4dGFyZWEi
PT09ZXx8Im9wdGlvbiI9PT1lKXx8InNlbGVjdGVkIj09PXQmJiJvcHRpb24iPT09ZXx8ImNoZWNr
ZWQiPT09dCYmImlucHV0Ij09PWV8fCJtdXRlZCI9PT10JiYidmlkZW8iPT09ZX0sVmk9aSgiY29u
dGVudGVkaXRhYmxlLGRyYWdnYWJsZSxzcGVsbGNoZWNrIiksSmk9aSgiYWxsb3dmdWxsc2NyZWVu
LGFzeW5jLGF1dG9mb2N1cyxhdXRvcGxheSxjaGVja2VkLGNvbXBhY3QsY29udHJvbHMsZGVjbGFy
ZSxkZWZhdWx0LGRlZmF1bHRjaGVja2VkLGRlZmF1bHRtdXRlZCxkZWZhdWx0c2VsZWN0ZWQsZGVm
ZXIsZGlzYWJsZWQsZW5hYmxlZCxmb3Jtbm92YWxpZGF0ZSxoaWRkZW4saW5kZXRlcm1pbmF0ZSxp
bmVydCxpc21hcCxpdGVtc2NvcGUsbG9vcCxtdWx0aXBsZSxtdXRlZCxub2hyZWYsbm9yZXNpemUs
bm9zaGFkZSxub3ZhbGlkYXRlLG5vd3JhcCxvcGVuLHBhdXNlb25leGl0LHJlYWRvbmx5LHJlcXVp
cmVkLHJldmVyc2VkLHNjb3BlZCxzZWFtbGVzcyxzZWxlY3RlZCxzb3J0YWJsZSx0cmFuc2xhdGUs
dHJ1ZXNwZWVkLHR5cGVtdXN0bWF0Y2gsdmlzaWJsZSIpLHFpPShpKCJhY2NlcHQsYWNjZXB0LWNo
YXJzZXQsYWNjZXNza2V5LGFjdGlvbixhbGlnbixhbHQsYXN5bmMsYXV0b2NvbXBsZXRlLGF1dG9m
b2N1cyxhdXRvcGxheSxhdXRvc2F2ZSxiZ2NvbG9yLGJvcmRlcixidWZmZXJlZCxjaGFsbGVuZ2Us
Y2hhcnNldCxjaGVja2VkLGNpdGUsY2xhc3MsY29kZSxjb2RlYmFzZSxjb2xvcixjb2xzLGNvbHNw
YW4sY29udGVudCxodHRwLWVxdWl2LG5hbWUsY29udGVudGVkaXRhYmxlLGNvbnRleHRtZW51LGNv
bnRyb2xzLGNvb3JkcyxkYXRhLGRhdGV0aW1lLGRlZmF1bHQsZGVmZXIsZGlyLGRpcm5hbWUsZGlz
YWJsZWQsZG93bmxvYWQsZHJhZ2dhYmxlLGRyb3B6b25lLGVuY3R5cGUsbWV0aG9kLGZvcixmb3Jt
LGZvcm1hY3Rpb24saGVhZGVycyw8dGg+LGhlaWdodCxoaWRkZW4saGlnaCxocmVmLGhyZWZsYW5n
LGh0dHAtZXF1aXYsaWNvbixpZCxpc21hcCxpdGVtcHJvcCxrZXl0eXBlLGtpbmQsbGFiZWwsbGFu
ZyxsYW5ndWFnZSxsaXN0LGxvb3AsbG93LG1hbmlmZXN0LG1heCxtYXhsZW5ndGgsbWVkaWEsbWV0
aG9kLEdFVCxQT1NULG1pbixtdWx0aXBsZSxlbWFpbCxmaWxlLG11dGVkLG5hbWUsbm92YWxpZGF0
ZSxvcGVuLG9wdGltdW0scGF0dGVybixwaW5nLHBsYWNlaG9sZGVyLHBvc3RlcixwcmVsb2FkLHJh
ZGlvZ3JvdXAscmVhZG9ubHkscmVsLHJlcXVpcmVkLHJldmVyc2VkLHJvd3Mscm93c3BhbixzYW5k
Ym94LHNjb3BlLHNjb3BlZCxzZWFtbGVzcyxzZWxlY3RlZCxzaGFwZSxzaXplLHR5cGUsdGV4dCxw
YXNzd29yZCxzaXplcyxzcGFuLHNwZWxsY2hlY2ssc3JjLHNyY2RvYyxzcmNsYW5nLHNyY3NldCxz
dGFydCxzdGVwLHN0eWxlLHN1bW1hcnksdGFiaW5kZXgsdGFyZ2V0LHRpdGxlLHR5cGUsdXNlbWFw
LHZhbHVlLHdpZHRoLHdyYXAiKSwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIpLEtpPWZ1
bmN0aW9uKGUpe3JldHVybiI6Ij09PWUuY2hhckF0KDUpJiYieGxpbmsiPT09ZS5zbGljZSgwLDUp
fSxXaT1mdW5jdGlvbihlKXtyZXR1cm4gS2koZSk/ZS5zbGljZSg2LGUubGVuZ3RoKToiIn0sWmk9
ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWV8fGU9PT0hMX0sR2k9e3N2ZzoiaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciLG1hdGg6Imh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwi
LHhodG1sOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIn0sWWk9aSgiaHRtbCxib2R5LGJh
c2UsaGVhZCxsaW5rLG1ldGEsc3R5bGUsdGl0bGUsYWRkcmVzcyxhcnRpY2xlLGFzaWRlLGZvb3Rl
cixoZWFkZXIsaDEsaDIsaDMsaDQsaDUsaDYsaGdyb3VwLG5hdixzZWN0aW9uLGRpdixkZCxkbCxk
dCxmaWdjYXB0aW9uLGZpZ3VyZSxocixpbWcsbGksbWFpbixvbCxwLHByZSx1bCxhLGIsYWJicixi
ZGksYmRvLGJyLGNpdGUsY29kZSxkYXRhLGRmbixlbSxpLGtiZCxtYXJrLHEscnAscnQscnRjLHJ1
YnkscyxzYW1wLHNtYWxsLHNwYW4sc3Ryb25nLHN1YixzdXAsdGltZSx1LHZhcix3YnIsYXJlYSxh
dWRpbyxtYXAsdHJhY2ssdmlkZW8sZW1iZWQsb2JqZWN0LHBhcmFtLHNvdXJjZSxjYW52YXMsc2Ny
aXB0LG5vc2NyaXB0LGRlbCxpbnMsY2FwdGlvbixjb2wsY29sZ3JvdXAsdGFibGUsdGhlYWQsdGJv
ZHksdGQsdGgsdHIsYnV0dG9uLGRhdGFsaXN0LGZpZWxkc2V0LGZvcm0saW5wdXQsbGFiZWwsbGVn
ZW5kLG1ldGVyLG9wdGdyb3VwLG9wdGlvbixvdXRwdXQscHJvZ3Jlc3Msc2VsZWN0LHRleHRhcmVh
LGRldGFpbHMsZGlhbG9nLG1lbnUsbWVudWl0ZW0sc3VtbWFyeSxjb250ZW50LGVsZW1lbnQsc2hh
ZG93LHRlbXBsYXRlIiksUWk9aSgiYXJlYSxiYXNlLGJyLGNvbCxlbWJlZCxmcmFtZSxocixpbWcs
aW5wdXQsaXNpbmRleCxrZXlnZW4sbGluayxtZXRhLHBhcmFtLHNvdXJjZSx0cmFjayx3YnIiLCEw
KSxYaT1pKCJjb2xncm91cCxkZCxkdCxsaSxvcHRpb25zLHAsdGQsdGZvb3QsdGgsdGhlYWQsdHIs
c291cmNlIiwhMCksZW89aSgiYWRkcmVzcyxhcnRpY2xlLGFzaWRlLGJhc2UsYmxvY2txdW90ZSxi
b2R5LGNhcHRpb24sY29sLGNvbGdyb3VwLGRkLGRldGFpbHMsZGlhbG9nLGRpdixkbCxkdCxmaWVs
ZHNldCxmaWdjYXB0aW9uLGZpZ3VyZSxmb290ZXIsZm9ybSxoMSxoMixoMyxoNCxoNSxoNixoZWFk
LGhlYWRlcixoZ3JvdXAsaHIsaHRtbCxsZWdlbmQsbGksbWVudWl0ZW0sbWV0YSxvcHRncm91cCxv
cHRpb24scGFyYW0scnAscnQsc291cmNlLHN0eWxlLHN1bW1hcnksdGJvZHksdGQsdGZvb3QsdGgs
dGhlYWQsdGl0bGUsdHIsdHJhY2siLCEwKSx0bz1pKCJzdmcsYW5pbWF0ZSxjaXJjbGUsY2xpcHBh
dGgsY3Vyc29yLGRlZnMsZGVzYyxlbGxpcHNlLGZpbHRlcixmb250LGZvbnQtZmFjZSxnLGdseXBo
LGltYWdlLGxpbmUsbWFya2VyLG1hc2ssbWlzc2luZy1nbHlwaCxwYXRoLHBhdHRlcm4scG9seWdv
bixwb2x5bGluZSxyZWN0LHN3aXRjaCxzeW1ib2wsdGV4dCx0ZXh0cGF0aCx0c3Bhbix1c2Usdmll
dyIsITApLG5vPWZ1bmN0aW9uKGUpe3JldHVybiJwcmUiPT09ZX0scm89ZnVuY3Rpb24oZSl7cmV0
dXJuIFlpKGUpfHx0byhlKX0saW89T2JqZWN0LmNyZWF0ZShudWxsKSxvbz1PYmplY3QuZnJlZXpl
KHtjcmVhdGVFbGVtZW50OmV0LGNyZWF0ZUVsZW1lbnROUzp0dCxjcmVhdGVUZXh0Tm9kZTpudCxj
cmVhdGVDb21tZW50OnJ0LGluc2VydEJlZm9yZTppdCxyZW1vdmVDaGlsZDpvdCxhcHBlbmRDaGls
ZDphdCxwYXJlbnROb2RlOnN0LG5leHRTaWJsaW5nOmN0LHRhZ05hbWU6dXQsc2V0VGV4dENvbnRl
bnQ6bHQsY2hpbGROb2RlczpmdCxzZXRBdHRyaWJ1dGU6ZHR9KSxhbz17Y3JlYXRlOmZ1bmN0aW9u
KGUsdCl7cHQodCl9LHVwZGF0ZTpmdW5jdGlvbihlLHQpe2UuZGF0YS5yZWYhPT10LmRhdGEucmVm
JiYocHQoZSwhMCkscHQodCkpfSxkZXN0cm95OmZ1bmN0aW9uKGUpe3B0KGUsITApfX0sc289bmV3
IExpKCIiLHt9LFtdKSxjbz1bImNyZWF0ZSIsInVwZGF0ZSIsInJlbW92ZSIsImRlc3Ryb3kiXSx1
bz17Y3JlYXRlOl90LHVwZGF0ZTpfdCxkZXN0cm95OmZ1bmN0aW9uKGUpe190KGUsc28pfX0sbG89
T2JqZWN0LmNyZWF0ZShudWxsKSxmbz1bYW8sdW9dLHBvPXtjcmVhdGU6JHQsdXBkYXRlOiR0fSxo
bz17Y3JlYXRlOkF0LHVwZGF0ZTpBdH0sdm89e2NyZWF0ZTprdCx1cGRhdGU6a3R9LG1vPXtjcmVh
dGU6T3QsdXBkYXRlOk90fSxnbz1jKGZ1bmN0aW9uKGUpe3ZhciB0PXt9LG49ZS5pbmRleE9mKCJi
YWNrZ3JvdW5kIik+PTAscj1uPy87KD8hW14oXSpcKSkvZzoiOyIsaT1uPy86KC4rKS86IjoiO3Jl
dHVybiBlLnNwbGl0KHIpLmZvckVhY2goZnVuY3Rpb24oZSl7aWYoZSl7dmFyIG49ZS5zcGxpdChp
KTtuLmxlbmd0aD4xJiYodFtuWzBdLnRyaW0oKV09blsxXS50cmltKCkpfX0pLHR9KSx5bz0vXi0t
Lyxfbz1mdW5jdGlvbihlLHQsbil7eW8udGVzdCh0KT9lLnN0eWxlLnNldFByb3BlcnR5KHQsbik6
ZS5zdHlsZVt3byh0KV09bn0sYm89WyJXZWJraXQiLCJNb3oiLCJtcyJdLHdvPWMoZnVuY3Rpb24o
ZSl7aWYoVWk9VWl8fGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGU9SnIoZSksImZpbHRl
ciIhPT1lJiZlIGluIFVpLnN0eWxlKXJldHVybiBlO2Zvcih2YXIgdD1lLmNoYXJBdCgwKS50b1Vw
cGVyQ2FzZSgpK2Uuc2xpY2UoMSksbj0wO248Ym8ubGVuZ3RoO24rKyl7dmFyIHI9Ym9bbl0rdDtp
ZihyIGluIFVpLnN0eWxlKXJldHVybiByfX0pLHhvPXtjcmVhdGU6anQsdXBkYXRlOmp0fSwkbz1l
aSYmIXJpLENvPSJ0cmFuc2l0aW9uIixBbz0iYW5pbWF0aW9uIixrbz0idHJhbnNpdGlvbiIsT289
InRyYW5zaXRpb25lbmQiLFNvPSJhbmltYXRpb24iLFRvPSJhbmltYXRpb25lbmQiOyRvJiYodm9p
ZCAwPT09d2luZG93Lm9udHJhbnNpdGlvbmVuZCYmdm9pZCAwIT09d2luZG93Lm9ud2Via2l0dHJh
bnNpdGlvbmVuZCYmKGtvPSJXZWJraXRUcmFuc2l0aW9uIixPbz0id2Via2l0VHJhbnNpdGlvbkVu
ZCIpLHZvaWQgMD09PXdpbmRvdy5vbmFuaW1hdGlvbmVuZCYmdm9pZCAwIT09d2luZG93Lm9ud2Vi
a2l0YW5pbWF0aW9uZW5kJiYoU289IldlYmtpdEFuaW1hdGlvbiIsVG89IndlYmtpdEFuaW1hdGlv
bkVuZCIpKTt2YXIgRW89ZWkmJndpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWV8fHNldFRpbWVv
dXQsam89L1xiKHRyYW5zZm9ybXxhbGwpKCx8JCkvLE5vPWMoZnVuY3Rpb24oZSl7cmV0dXJue2Vu
dGVyQ2xhc3M6ZSsiLWVudGVyIixsZWF2ZUNsYXNzOmUrIi1sZWF2ZSIsYXBwZWFyQ2xhc3M6ZSsi
LWVudGVyIixlbnRlckFjdGl2ZUNsYXNzOmUrIi1lbnRlci1hY3RpdmUiLGxlYXZlQWN0aXZlQ2xh
c3M6ZSsiLWxlYXZlLWFjdGl2ZSIsYXBwZWFyQWN0aXZlQ2xhc3M6ZSsiLWVudGVyLWFjdGl2ZSJ9
fSksTG89ZWk/e2NyZWF0ZTpmdW5jdGlvbihlLHQpe3QuZGF0YS5zaG93fHxGdCh0KX0scmVtb3Zl
OmZ1bmN0aW9uKGUsdCl7ZS5kYXRhLnNob3c/dCgpOlV0KGUsdCl9fTp7fSxNbz1bcG8saG8sdm8s
bW8seG8sTG9dLFBvPU1vLmNvbmNhdChmbyksRG89eXQoe25vZGVPcHM6b28sbW9kdWxlczpQb30p
O3JpJiZkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJzZWxlY3Rpb25jaGFuZ2UiLGZ1bmN0aW9u
KCl7dmFyIGU9ZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtlJiZlLnZtb2RlbCYmR3QoZSwiaW5wdXQi
KX0pO3ZhciBSbz17aW5zZXJ0ZWQ6ZnVuY3Rpb24oZSx0LG4pe2lmKCJzZWxlY3QiPT09bi50YWcp
e3ZhciByPWZ1bmN0aW9uKCl7SnQoZSx0LG4uY29udGV4dCl9O3IoKSwobml8fGlpKSYmc2V0VGlt
ZW91dChyLDApfWVsc2UidGV4dGFyZWEiIT09bi50YWcmJiJ0ZXh0IiE9PWUudHlwZXx8dC5tb2Rp
ZmllcnMubGF6eXx8KG9pfHwoZS5hZGRFdmVudExpc3RlbmVyKCJjb21wb3NpdGlvbnN0YXJ0IixX
dCksZS5hZGRFdmVudExpc3RlbmVyKCJjb21wb3NpdGlvbmVuZCIsWnQpKSxyaSYmKGUudm1vZGVs
PSEwKSl9LGNvbXBvbmVudFVwZGF0ZWQ6ZnVuY3Rpb24oZSx0LG4pe2lmKCJzZWxlY3QiPT09bi50
YWcpeworSnQoZSx0LG4uY29udGV4dCk7dmFyIHI9ZS5tdWx0aXBsZT90LnZhbHVlLnNvbWUoZnVu
Y3Rpb24odCl7cmV0dXJuIHF0KHQsZS5vcHRpb25zKX0pOnQudmFsdWUhPT10Lm9sZFZhbHVlJiZx
dCh0LnZhbHVlLGUub3B0aW9ucyk7ciYmR3QoZSwiY2hhbmdlIil9fX0sQm89e2JpbmQ6ZnVuY3Rp
b24oZSx0LG4pe3ZhciByPXQudmFsdWU7bj1ZdChuKTt2YXIgaT1uLmRhdGEmJm4uZGF0YS50cmFu
c2l0aW9uO3ImJmkmJiFyaSYmRnQobik7dmFyIG89Im5vbmUiPT09ZS5zdHlsZS5kaXNwbGF5PyIi
OmUuc3R5bGUuZGlzcGxheTtlLnN0eWxlLmRpc3BsYXk9cj9vOiJub25lIixlLl9fdk9yaWdpbmFs
RGlzcGxheT1vfSx1cGRhdGU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXQudmFsdWUsaT10Lm9sZFZh
bHVlO2lmKHIhPT1pKXtuPVl0KG4pO3ZhciBvPW4uZGF0YSYmbi5kYXRhLnRyYW5zaXRpb247byYm
IXJpP3I/KEZ0KG4pLGUuc3R5bGUuZGlzcGxheT1lLl9fdk9yaWdpbmFsRGlzcGxheSk6VXQobixm
dW5jdGlvbigpe2Uuc3R5bGUuZGlzcGxheT0ibm9uZSJ9KTplLnN0eWxlLmRpc3BsYXk9cj9lLl9f
dk9yaWdpbmFsRGlzcGxheToibm9uZSJ9fX0sSW89e21vZGVsOlJvLHNob3c6Qm99LEhvPXtuYW1l
OlN0cmluZyxhcHBlYXI6Qm9vbGVhbixjc3M6Qm9vbGVhbixtb2RlOlN0cmluZyx0eXBlOlN0cmlu
ZyxlbnRlckNsYXNzOlN0cmluZyxsZWF2ZUNsYXNzOlN0cmluZyxlbnRlckFjdGl2ZUNsYXNzOlN0
cmluZyxsZWF2ZUFjdGl2ZUNsYXNzOlN0cmluZyxhcHBlYXJDbGFzczpTdHJpbmcsYXBwZWFyQWN0
aXZlQ2xhc3M6U3RyaW5nfSxGbz17bmFtZToidHJhbnNpdGlvbiIscHJvcHM6SG8sYWJzdHJhY3Q6
ITAscmVuZGVyOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsbj10aGlzLiRzbG90cy5kZWZhdWx0O2lm
KG4mJihuPW4uZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlLnRhZ30pLG4ubGVuZ3RoKSl7dmFy
IHI9dGhpcy5tb2RlLGk9blswXTtpZih0bih0aGlzLiR2bm9kZSkpcmV0dXJuIGk7dmFyIG89UXQo
aSk7aWYoIW8pcmV0dXJuIGk7aWYodGhpcy5fbGVhdmluZylyZXR1cm4gZW4oZSxpKTt2YXIgYT1v
LmtleT1udWxsPT1vLmtleXx8by5pc1N0YXRpYz8iX192Iisoby50YWcrdGhpcy5fdWlkKSsiX18i
Om8ua2V5LHM9KG8uZGF0YXx8KG8uZGF0YT17fSkpLnRyYW5zaXRpb249WHQodGhpcyksYz10aGlz
Ll92bm9kZSx1PVF0KGMpO2lmKG8uZGF0YS5kaXJlY3RpdmVzJiZvLmRhdGEuZGlyZWN0aXZlcy5z
b21lKGZ1bmN0aW9uKGUpe3JldHVybiJzaG93Ij09PWUubmFtZX0pJiYoby5kYXRhLnNob3c9ITAp
LHUmJnUuZGF0YSYmdS5rZXkhPT1hKXt2YXIgbD11LmRhdGEudHJhbnNpdGlvbj1mKHt9LHMpO2lm
KCJvdXQtaW4iPT09cilyZXR1cm4gdGhpcy5fbGVhdmluZz0hMCxhZShsLCJhZnRlckxlYXZlIixm
dW5jdGlvbigpe3QuX2xlYXZpbmc9ITEsdC4kZm9yY2VVcGRhdGUoKX0sYSksZW4oZSxpKTtpZigi
aW4tb3V0Ij09PXIpe3ZhciBkLHA9ZnVuY3Rpb24oKXtkKCl9O2FlKHMsImFmdGVyRW50ZXIiLHAs
YSksYWUocywiZW50ZXJDYW5jZWxsZWQiLHAsYSksYWUobCwiZGVsYXlMZWF2ZSIsZnVuY3Rpb24o
ZSl7ZD1lfSxhKX19cmV0dXJuIGl9fX0sVW89Zih7dGFnOlN0cmluZyxtb3ZlQ2xhc3M6U3RyaW5n
fSxIbyk7ZGVsZXRlIFVvLm1vZGU7dmFyIHpvPXtwcm9wczpVbyxyZW5kZXI6ZnVuY3Rpb24oZSl7
Zm9yKHZhciB0PXRoaXMudGFnfHx0aGlzLiR2bm9kZS5kYXRhLnRhZ3x8InNwYW4iLG49T2JqZWN0
LmNyZWF0ZShudWxsKSxyPXRoaXMucHJldkNoaWxkcmVuPXRoaXMuY2hpbGRyZW4saT10aGlzLiRz
bG90cy5kZWZhdWx0fHxbXSxvPXRoaXMuY2hpbGRyZW49W10sYT1YdCh0aGlzKSxzPTA7czxpLmxl
bmd0aDtzKyspe3ZhciBjPWlbc107aWYoYy50YWcpaWYobnVsbCE9Yy5rZXkmJjAhPT1TdHJpbmco
Yy5rZXkpLmluZGV4T2YoIl9fdmxpc3QiKSlvLnB1c2goYyksbltjLmtleV09YywoYy5kYXRhfHwo
Yy5kYXRhPXt9KSkudHJhbnNpdGlvbj1hO2Vsc2U7fWlmKHIpe2Zvcih2YXIgdT1bXSxsPVtdLGY9
MDtmPHIubGVuZ3RoO2YrKyl7dmFyIGQ9cltmXTtkLmRhdGEudHJhbnNpdGlvbj1hLGQuZGF0YS5w
b3M9ZC5lbG0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbltkLmtleV0/dS5wdXNoKGQpOmwucHVz
aChkKX10aGlzLmtlcHQ9ZSh0LG51bGwsdSksdGhpcy5yZW1vdmVkPWx9cmV0dXJuIGUodCxudWxs
LG8pfSxiZWZvcmVVcGRhdGU6ZnVuY3Rpb24oKXt0aGlzLl9fcGF0Y2hfXyh0aGlzLl92bm9kZSx0
aGlzLmtlcHQsITEsITApLHRoaXMuX3Zub2RlPXRoaXMua2VwdH0sdXBkYXRlZDpmdW5jdGlvbigp
e3ZhciBlPXRoaXMucHJldkNoaWxkcmVuLHQ9dGhpcy5tb3ZlQ2xhc3N8fCh0aGlzLm5hbWV8fCJ2
IikrIi1tb3ZlIjtpZihlLmxlbmd0aCYmdGhpcy5oYXNNb3ZlKGVbMF0uZWxtLHQpKXtlLmZvckVh
Y2gobm4pLGUuZm9yRWFjaChybiksZS5mb3JFYWNoKG9uKTtkb2N1bWVudC5ib2R5Lm9mZnNldEhl
aWdodDtlLmZvckVhY2goZnVuY3Rpb24oZSl7aWYoZS5kYXRhLm1vdmVkKXt2YXIgbj1lLmVsbSxy
PW4uc3R5bGU7UHQobix0KSxyLnRyYW5zZm9ybT1yLldlYmtpdFRyYW5zZm9ybT1yLnRyYW5zaXRp
b25EdXJhdGlvbj0iIixuLmFkZEV2ZW50TGlzdGVuZXIoT28sbi5fbW92ZUNiPWZ1bmN0aW9uIGUo
cil7ciYmIS90cmFuc2Zvcm0kLy50ZXN0KHIucHJvcGVydHlOYW1lKXx8KG4ucmVtb3ZlRXZlbnRM
aXN0ZW5lcihPbyxlKSxuLl9tb3ZlQ2I9bnVsbCxEdChuLHQpKX0pfX0pfX0sbWV0aG9kczp7aGFz
TW92ZTpmdW5jdGlvbihlLHQpe2lmKCEkbylyZXR1cm4hMTtpZihudWxsIT10aGlzLl9oYXNNb3Zl
KXJldHVybiB0aGlzLl9oYXNNb3ZlO1B0KGUsdCk7dmFyIG49QnQoZSk7cmV0dXJuIER0KGUsdCks
dGhpcy5faGFzTW92ZT1uLmhhc1RyYW5zZm9ybX19fSxWbz17VHJhbnNpdGlvbjpGbyxUcmFuc2l0
aW9uR3JvdXA6em99O0llLmNvbmZpZy5pc1Vua25vd25FbGVtZW50PVFlLEllLmNvbmZpZy5pc1Jl
c2VydmVkVGFnPXJvLEllLmNvbmZpZy5nZXRUYWdOYW1lc3BhY2U9WWUsSWUuY29uZmlnLm11c3RV
c2VQcm9wPXppLGYoSWUub3B0aW9ucy5kaXJlY3RpdmVzLElvKSxmKEllLm9wdGlvbnMuY29tcG9u
ZW50cyxWbyksSWUucHJvdG90eXBlLl9fcGF0Y2hfXz1laT9Ebzp2LEllLnByb3RvdHlwZS4kbW91
bnQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT1lJiZlaT9YZShlKTp2b2lkIDAsdGhpcy5fbW91bnQo
ZSx0KX0sc2V0VGltZW91dChmdW5jdGlvbigpe2ZpLmRldnRvb2xzJiZjaSYmY2kuZW1pdCgiaW5p
dCIsSWUpfSwwKTt2YXIgSm8scW89ISFlaSYmYW4oIlxuIiwiJiMxMDsiKSxLbz0vKFteXHMiJzw+
XC89XSspLyxXbz0vKD86PSkvLFpvPVsvIihbXiJdKikiKy8uc291cmNlLC8nKFteJ10qKScrLy5z
b3VyY2UsLyhbXlxzIic9PD5gXSspLy5zb3VyY2VdLEdvPW5ldyBSZWdFeHAoIl5cXHMqIitLby5z
b3VyY2UrIig/OlxccyooIitXby5zb3VyY2UrIilcXHMqKD86Iitaby5qb2luKCJ8IikrIikpPyIp
LFlvPSJbYS16QS1aX11bXFx3XFwtXFwuXSoiLFFvPSIoKD86IitZbysiXFw6KT8iK1lvKyIpIixY
bz1uZXcgUmVnRXhwKCJePCIrUW8pLGVhPS9eXHMqKFwvPyk+Lyx0YT1uZXcgUmVnRXhwKCJePFxc
LyIrUW8rIltePl0qPiIpLG5hPS9ePCFET0NUWVBFIFtePl0rPi9pLHJhPS9ePCEtLS8saWE9L148
IVxbLyxvYT0hMTsieCIucmVwbGFjZSgveCguKT8vZyxmdW5jdGlvbihlLHQpe29hPSIiPT09dH0p
O3ZhciBhYSxzYSxjYSx1YSxsYSxmYSxkYSxwYSxoYSx2YSxtYSxnYSx5YSxfYSxiYSx3YSx4YSwk
YSxDYSxBYSxrYSxPYSxTYSxUYSxFYT1pKCJzY3JpcHQsc3R5bGUiLCEwKSxqYT1mdW5jdGlvbihl
KXtyZXR1cm4ibGFuZyI9PT1lLm5hbWUmJiJodG1sIiE9PWUudmFsdWV9LE5hPWZ1bmN0aW9uKGUs
dCxuKXtyZXR1cm4hIUVhKGUpfHwhKCF0fHwxIT09bi5sZW5ndGgpJiYhKCJ0ZW1wbGF0ZSI9PT1l
JiYhblswXS5hdHRycy5zb21lKGphKSl9LExhPXt9LE1hPS8mbHQ7L2csUGE9LyZndDsvZyxEYT0v
JiMxMDsvZyxSYT0vJmFtcDsvZyxCYT0vJnF1b3Q7L2csSWE9L1x7XHsoKD86LnxcbikrPylcfVx9
L2csSGE9L1stLiorP14ke30oKXxbXF1cL1xcXS9nLEZhPWMoZnVuY3Rpb24oZSl7dmFyIHQ9ZVsw
XS5yZXBsYWNlKEhhLCJcXCQmIiksbj1lWzFdLnJlcGxhY2UoSGEsIlxcJCYiKTtyZXR1cm4gbmV3
IFJlZ0V4cCh0KyIoKD86LnxcXG4pKz8pIituLCJnIil9KSxVYT0vXnYtfF5AfF46Lyx6YT0vKC4q
PylccysoPzppbnxvZilccysoLiopLyxWYT0vXCgoXHtbXn1dKlx9fFteLF0qKSwoW14sXSopKD86
LChbXixdKikpP1wpLyxKYT0vXjp8XnYtYmluZDovLHFhPS9eQHxedi1vbjovLEthPS86KC4qKSQv
LFdhPS9cLlteLl0rL2csWmE9YyhzbiksR2E9L154bWxuczpOU1xkKy8sWWE9L15OU1xkKzovLFFh
PWMoS24pLFhhPS9eXHMqKFtcdyRfXSt8XChbXildKj9cKSlccyo9PnxeZnVuY3Rpb25ccypcKC8s
ZXM9L15ccypbQS1aYS16XyRdW1x3JF0qKD86XC5bQS1aYS16XyRdW1x3JF0qfFxbJy4qPyddfFxb
Ii4qPyJdfFxbXGQrXXxcW1tBLVphLXpfJF1bXHckXSpdKSpccyokLyx0cz17ZXNjOjI3LHRhYjo5
LGVudGVyOjEzLHNwYWNlOjMyLHVwOjM4LGxlZnQ6MzcscmlnaHQ6MzksZG93bjo0MCxkZWxldGU6
WzgsNDZdfSxucz17c3RvcDoiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyIscHJldmVudDoiJGV2
ZW50LnByZXZlbnREZWZhdWx0KCk7IixzZWxmOiJpZigkZXZlbnQudGFyZ2V0ICE9PSAkZXZlbnQu
Y3VycmVudFRhcmdldClyZXR1cm47In0scnM9L15tb3VzZXxecG9pbnRlcnxeKGNsaWNrfGRibGNs
aWNrfGNvbnRleHRtZW51fHdoZWVsKSQvLGlzPXtjdHJsOiJpZighJGV2ZW50LmN0cmxLZXkpcmV0
dXJuOyIsc2hpZnQ6ImlmKCEkZXZlbnQuc2hpZnRLZXkpcmV0dXJuOyIsYWx0OiJpZighJGV2ZW50
LmFsdEtleSlyZXR1cm47IixtZXRhOiJpZighJGV2ZW50Lm1ldGFLZXkpcmV0dXJuOyJ9LG9zPXti
aW5kOnJyLGNsb2FrOnZ9LGFzPShuZXcgUmVnRXhwKCJcXGIiKyJkbyxpZixmb3IsbGV0LG5ldyx0
cnksdmFyLGNhc2UsZWxzZSx3aXRoLGF3YWl0LGJyZWFrLGNhdGNoLGNsYXNzLGNvbnN0LHN1cGVy
LHRocm93LHdoaWxlLHlpZWxkLGRlbGV0ZSxleHBvcnQsaW1wb3J0LHJldHVybixzd2l0Y2gsZGVm
YXVsdCxleHRlbmRzLGZpbmFsbHksY29udGludWUsZGVidWdnZXIsZnVuY3Rpb24sYXJndW1lbnRz
Ii5zcGxpdCgiLCIpLmpvaW4oIlxcYnxcXGIiKSsiXFxiIikse3N0YXRpY0tleXM6WyJzdGF0aWND
bGFzcyJdLHRyYW5zZm9ybU5vZGU6Q3IsZ2VuRGF0YTpBcn0pLHNzPXtzdGF0aWNLZXlzOlsic3Rh
dGljU3R5bGUiXSx0cmFuc2Zvcm1Ob2RlOmtyLGdlbkRhdGE6T3J9LGNzPVthcyxzc10sdXM9e21v
ZGVsOlNyLHRleHQ6TXIsaHRtbDpQcn0sbHM9T2JqZWN0LmNyZWF0ZShudWxsKSxmcz17ZXhwZWN0
SFRNTDohMCxtb2R1bGVzOmNzLHN0YXRpY0tleXM6bShjcyksZGlyZWN0aXZlczp1cyxpc1Jlc2Vy
dmVkVGFnOnJvLGlzVW5hcnlUYWc6UWksbXVzdFVzZVByb3A6emksZ2V0VGFnTmFtZXNwYWNlOlll
LGlzUHJlVGFnOm5vfSxkcz1jKGZ1bmN0aW9uKGUpe3ZhciB0PVhlKGUpO3JldHVybiB0JiZ0Lmlu
bmVySFRNTH0pLHBzPUllLnByb3RvdHlwZS4kbW91bnQ7SWUucHJvdG90eXBlLiRtb3VudD1mdW5j
dGlvbihlLHQpe2lmKGU9ZSYmWGUoZSksZT09PWRvY3VtZW50LmJvZHl8fGU9PT1kb2N1bWVudC5k
b2N1bWVudEVsZW1lbnQpcmV0dXJuIHRoaXM7dmFyIG49dGhpcy4kb3B0aW9ucztpZighbi5yZW5k
ZXIpe3ZhciByPW4udGVtcGxhdGU7aWYocilpZigic3RyaW5nIj09dHlwZW9mIHIpIiMiPT09ci5j
aGFyQXQoMCkmJihyPWRzKHIpKTtlbHNle2lmKCFyLm5vZGVUeXBlKXJldHVybiB0aGlzO3I9ci5p
bm5lckhUTUx9ZWxzZSBlJiYocj1JcihlKSk7aWYocil7dmFyIGk9UnIocix7d2FybjpkaSxzaG91
bGREZWNvZGVOZXdsaW5lczpxbyxkZWxpbWl0ZXJzOm4uZGVsaW1pdGVyc30sdGhpcyksbz1pLnJl
bmRlcixhPWkuc3RhdGljUmVuZGVyRm5zO24ucmVuZGVyPW8sbi5zdGF0aWNSZW5kZXJGbnM9YX19
cmV0dXJuIHBzLmNhbGwodGhpcyxlLHQpfSxJZS5jb21waWxlPVJyLGUuZXhwb3J0cz1JZX0pLmNh
bGwodCxmdW5jdGlvbigpe3JldHVybiB0aGlzfSgpKX0sLCxmdW5jdGlvbihlLHQsbil7IWZ1bmN0
aW9uKGUpe2Z1bmN0aW9uIHQoKXtyZXR1cm4iIj09PXUuaGFzaHx8IiMiPT09dS5oYXNofWZ1bmN0
aW9uIG4oZSx0KXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rPTEpaWYodChlW25dLG4sZSk9PT0h
MSlyZXR1cm59ZnVuY3Rpb24gcihlKXtmb3IodmFyIHQ9W10sbj0wLHI9ZS5sZW5ndGg7bjxyO24r
Kyl0PXQuY29uY2F0KGVbbl0pO3JldHVybiB0fWZ1bmN0aW9uIGkoZSx0LG4pe2lmKCFlLmxlbmd0
aClyZXR1cm4gbigpO3ZhciByPTA7IWZ1bmN0aW9uIGkoKXt0KGVbcl0sZnVuY3Rpb24odCl7dHx8
dD09PSExPyhuKHQpLG49ZnVuY3Rpb24oKXt9KToocis9MSxyPT09ZS5sZW5ndGg/bigpOmkoKSl9
KX0oKX1mdW5jdGlvbiBvKGUsdCxuKXtuPWU7Zm9yKHZhciByIGluIHQpaWYodC5oYXNPd25Qcm9w
ZXJ0eShyKSYmKG49dFtyXShlKSxuIT09ZSkpYnJlYWs7cmV0dXJuIG49PT1lPyIoWy5fYS16QS1a
MC05LSUoKV0rKSI6bn1mdW5jdGlvbiBhKGUsdCl7Zm9yKHZhciBuLHI9MCxpPSIiO249ZS5zdWJz
dHIocikubWF0Y2goL1teXHdcZFwtICVAJl0qXCpbXlx3XGRcLSAlQCZdKi8pOylyPW4uaW5kZXgr
blswXS5sZW5ndGgsblswXT1uWzBdLnJlcGxhY2UoL15cKi8sIihbXy4oKSFcXCAlQCZhLXpBLVow
LTktXSspIiksaSs9ZS5zdWJzdHIoMCxuLmluZGV4KStuWzBdO2U9aSs9ZS5zdWJzdHIocik7dmFy
IGEscyxjPWUubWF0Y2goLzooW15cL10rKS9naSk7aWYoYyl7cz1jLmxlbmd0aDtmb3IodmFyIHU9
MDt1PHM7dSsrKWE9Y1t1XSxlPSI6OiI9PT1hLnNsaWNlKDAsMik/YS5zbGljZSgxKTplLnJlcGxh
Y2UoYSxvKGEsdCkpfXJldHVybiBlfWZ1bmN0aW9uIGMoZSx0LG4scil7dmFyIGksbz0wLGE9MCxz
PTAsbj0obnx8IigiKS50b1N0cmluZygpLHI9KHJ8fCIpIikudG9TdHJpbmcoKTtmb3IoaT0wO2k8
ZS5sZW5ndGg7aSsrKXt2YXIgYz1lW2ldO2lmKGMuaW5kZXhPZihuLG8pPmMuaW5kZXhPZihyLG8p
fHx+Yy5pbmRleE9mKG4sbykmJiF+Yy5pbmRleE9mKHIsbyl8fCF+Yy5pbmRleE9mKG4sbykmJn5j
LmluZGV4T2YocixvKSl7aWYoYT1jLmluZGV4T2YobixvKSxzPWMuaW5kZXhPZihyLG8pLH5hJiYh
fnN8fCF+YSYmfnMpe3ZhciB1PWUuc2xpY2UoMCwoaXx8MSkrMSkuam9pbih0KTtlPVt1XS5jb25j
YXQoZS5zbGljZSgoaXx8MSkrMSkpfW89KHM+YT9zOmEpKzEsaT0wfWVsc2Ugbz0wfXJldHVybiBl
fXZhciB1PWRvY3VtZW50LmxvY2F0aW9uLGw9e21vZGU6Im1vZGVybiIsaGFzaDp1Lmhhc2gsaGlz
dG9yeTohMSxjaGVjazpmdW5jdGlvbigpe3ZhciBlPXUuaGFzaDtlIT10aGlzLmhhc2gmJih0aGlz
Lmhhc2g9ZSx0aGlzLm9uSGFzaENoYW5nZWQoKSl9LGZpcmU6ZnVuY3Rpb24oKXsibW9kZXJuIj09
PXRoaXMubW9kZT90aGlzLmhpc3Rvcnk9PT0hMD93aW5kb3cub25wb3BzdGF0ZSgpOndpbmRvdy5v
bmhhc2hjaGFuZ2UoKTp0aGlzLm9uSGFzaENoYW5nZWQoKX0saW5pdDpmdW5jdGlvbihlLHQpe2Z1
bmN0aW9uIG4oZSl7Zm9yKHZhciB0PTAsbj1mLmxpc3RlbmVycy5sZW5ndGg7dDxuO3QrKylmLmxp
c3RlbmVyc1t0XShlKX12YXIgcj10aGlzO2lmKHRoaXMuaGlzdG9yeT10LGYubGlzdGVuZXJzfHwo
Zi5saXN0ZW5lcnM9W10pLCJvbmhhc2hjaGFuZ2UiaW4gd2luZG93JiYodm9pZCAwPT09ZG9jdW1l
bnQuZG9jdW1lbnRNb2RlfHxkb2N1bWVudC5kb2N1bWVudE1vZGU+NykpdGhpcy5oaXN0b3J5PT09
ITA/c2V0VGltZW91dChmdW5jdGlvbigpe3dpbmRvdy5vbnBvcHN0YXRlPW59LDUwMCk6d2luZG93
Lm9uaGFzaGNoYW5nZT1uLHRoaXMubW9kZT0ibW9kZXJuIjtlbHNle3ZhciBpPWRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImlmcmFtZSIpO2kuaWQ9InN0YXRlLWZyYW1lIixpLnN0eWxlLmRpc3BsYXk9
Im5vbmUiLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaSksdGhpcy53cml0ZUZyYW1lKCIiKSwi
b25wcm9wZXJ0eWNoYW5nZSJpbiBkb2N1bWVudCYmImF0dGFjaEV2ZW50ImluIGRvY3VtZW50JiZk
b2N1bWVudC5hdHRhY2hFdmVudCgib25wcm9wZXJ0eWNoYW5nZSIsZnVuY3Rpb24oKXsibG9jYXRp
b24iPT09ZXZlbnQucHJvcGVydHlOYW1lJiZyLmNoZWNrKCl9KSx3aW5kb3cuc2V0SW50ZXJ2YWwo
ZnVuY3Rpb24oKXtyLmNoZWNrKCl9LDUwKSx0aGlzLm9uSGFzaENoYW5nZWQ9bix0aGlzLm1vZGU9
ImxlZ2FjeSJ9cmV0dXJuIGYubGlzdGVuZXJzLnB1c2goZSksdGhpcy5tb2RlfSxkZXN0cm95OmZ1
bmN0aW9uKGUpe2lmKGYmJmYubGlzdGVuZXJzKWZvcih2YXIgdD1mLmxpc3RlbmVycyxuPXQubGVu
Z3RoLTE7bj49MDtuLS0pdFtuXT09PWUmJnQuc3BsaWNlKG4sMSl9LHNldEhhc2g6ZnVuY3Rpb24o
ZSl7cmV0dXJuImxlZ2FjeSI9PT10aGlzLm1vZGUmJnRoaXMud3JpdGVGcmFtZShlKSx0aGlzLmhp
c3Rvcnk9PT0hMD8od2luZG93Lmhpc3RvcnkucHVzaFN0YXRlKHt9LGRvY3VtZW50LnRpdGxlLGUp
LHRoaXMuZmlyZSgpKTp1Lmhhc2g9Ii8iPT09ZVswXT9lOiIvIitlLHRoaXN9LHdyaXRlRnJhbWU6
ZnVuY3Rpb24oZSl7dmFyIHQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0YXRlLWZyYW1lIiks
bj10LmNvbnRlbnREb2N1bWVudHx8dC5jb250ZW50V2luZG93LmRvY3VtZW50O24ub3BlbigpLG4u
d3JpdGUoIjxzY3JpcHQ+X2hhc2ggPSAnIitlKyInOyBvbmxvYWQgPSBwYXJlbnQubGlzdGVuZXIu
c3luY0hhc2g7PHNjcmlwdD4iKSxuLmNsb3NlKCl9LHN5bmNIYXNoOmZ1bmN0aW9uKCl7dmFyIGU9
dGhpcy5faGFzaDtyZXR1cm4gZSE9dS5oYXNoJiYodS5oYXNoPWUpLHRoaXN9LG9uSGFzaENoYW5n
ZWQ6ZnVuY3Rpb24oKXt9fSxmPWUuUm91dGVyPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzIGluc3Rh
bmNlb2YgZj8odGhpcy5wYXJhbXM9e30sdGhpcy5yb3V0ZXM9e30sdGhpcy5tZXRob2RzPVsib24i
LCJvbmNlIiwiYWZ0ZXIiLCJiZWZvcmUiXSx0aGlzLnNjb3BlPVtdLHRoaXMuX21ldGhvZHM9e30s
dGhpcy5faW5zZXJ0PXRoaXMuaW5zZXJ0LHRoaXMuaW5zZXJ0PXRoaXMuaW5zZXJ0RXgsdGhpcy5o
aXN0b3J5U3VwcG9ydD1udWxsIT0obnVsbCE9d2luZG93Lmhpc3Rvcnk/d2luZG93Lmhpc3Rvcnku
cHVzaFN0YXRlOm51bGwpLHRoaXMuY29uZmlndXJlKCksdm9pZCB0aGlzLm1vdW50KGV8fHt9KSk6
bmV3IGYoZSl9O2YucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oZSl7dmFyIG4scj10aGlzO3JldHVy
biB0aGlzLmhhbmRsZXI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZSYmZS5uZXdVUkx8fHdpbmRvdy5sb2Nh
dGlvbi5oYXNoLG49ci5oaXN0b3J5PT09ITA/ci5nZXRQYXRoKCk6dC5yZXBsYWNlKC8uKiMvLCIi
KTtyLmRpc3BhdGNoKCJvbiIsIi8iPT09bi5jaGFyQXQoMCk/bjoiLyIrbil9LGwuaW5pdCh0aGlz
LmhhbmRsZXIsdGhpcy5oaXN0b3J5KSx0aGlzLmhpc3Rvcnk9PT0hMT90KCkmJmU/dS5oYXNoPWU6
dCgpfHxyLmRpc3BhdGNoKCJvbiIsIi8iK3UuaGFzaC5yZXBsYWNlKC9eKCNcL3wjfFwvKS8sIiIp
KToodGhpcy5jb252ZXJ0X2hhc2hfaW5faW5pdD8obj10KCkmJmU/ZTp0KCk/bnVsbDp1Lmhhc2gu
cmVwbGFjZSgvXiMvLCIiKSxuJiZ3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUoe30sZG9jdW1l
bnQudGl0bGUsbikpOm49dGhpcy5nZXRQYXRoKCksKG58fHRoaXMucnVuX2luX2luaXQ9PT0hMCkm
JnRoaXMuaGFuZGxlcigpKSx0aGlzfSxmLnByb3RvdHlwZS5leHBsb2RlPWZ1bmN0aW9uKCl7dmFy
IGU9dGhpcy5oaXN0b3J5PT09ITA/dGhpcy5nZXRQYXRoKCk6dS5oYXNoO3JldHVybiIvIj09PWUu
Y2hhckF0KDEpJiYoZT1lLnNsaWNlKDEpKSxlLnNsaWNlKDEsZS5sZW5ndGgpLnNwbGl0KCIvIil9
LGYucHJvdG90eXBlLnNldFJvdXRlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLmV4cGxvZGUo
KTtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGUmJiJzdHJpbmciPT10eXBlb2YgdD9yW2VdPXQ6InN0
cmluZyI9PXR5cGVvZiBuP3Iuc3BsaWNlKGUsdCxzKTpyPVtlXSxsLnNldEhhc2goci5qb2luKCIv
IikpLHJ9LGYucHJvdG90eXBlLmluc2VydEV4PWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiJvbmNl
Ij09PWUmJihlPSJvbiIsbj1mdW5jdGlvbihlKXt2YXIgdD0hMTtyZXR1cm4gZnVuY3Rpb24oKXtp
ZighdClyZXR1cm4gdD0hMCxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KG4pKSx0aGlzLl9pbnNl
cnQoZSx0LG4scil9LGYucHJvdG90eXBlLmdldFJvdXRlPWZ1bmN0aW9uKGUpe3ZhciB0PWU7aWYo
Im51bWJlciI9PXR5cGVvZiBlKXQ9dGhpcy5leHBsb2RlKClbZV07ZWxzZSBpZigic3RyaW5nIj09
dHlwZW9mIGUpe3ZhciBuPXRoaXMuZXhwbG9kZSgpO3Q9bi5pbmRleE9mKGUpfWVsc2UgdD10aGlz
LmV4cGxvZGUoKTtyZXR1cm4gdH0sZi5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3JldHVy
biBsLmRlc3Ryb3kodGhpcy5oYW5kbGVyKSx0aGlzfSxmLnByb3RvdHlwZS5nZXRQYXRoPWZ1bmN0
aW9uKCl7dmFyIGU9d2luZG93LmxvY2F0aW9uLnBhdGhuYW1lO3JldHVybiIvIiE9PWUuc3Vic3Ry
KDAsMSkmJihlPSIvIitlKSxlfTt2YXIgZD0vXD8uKi87Zi5wcm90b3R5cGUuY29uZmlndXJlPWZ1
bmN0aW9uKGUpe2U9ZXx8e307Zm9yKHZhciB0PTA7dDx0aGlzLm1ldGhvZHMubGVuZ3RoO3QrKyl0
aGlzLl9tZXRob2RzW3RoaXMubWV0aG9kc1t0XV09ITA7cmV0dXJuIHRoaXMucmVjdXJzZT1lLnJl
Y3Vyc2V8fHRoaXMucmVjdXJzZXx8ITEsdGhpcy5hc3luYz1lLmFzeW5jfHwhMSx0aGlzLmRlbGlt
aXRlcj1lLmRlbGltaXRlcnx8Ii8iLHRoaXMuc3RyaWN0PSJ1bmRlZmluZWQiPT10eXBlb2YgZS5z
dHJpY3R8fGUuc3RyaWN0LHRoaXMubm90Zm91bmQ9ZS5ub3Rmb3VuZCx0aGlzLnJlc291cmNlPWUu
cmVzb3VyY2UsdGhpcy5oaXN0b3J5PWUuaHRtbDVoaXN0b3J5JiZ0aGlzLmhpc3RvcnlTdXBwb3J0
fHwhMSx0aGlzLnJ1bl9pbl9pbml0PXRoaXMuaGlzdG9yeT09PSEwJiZlLnJ1bl9oYW5kbGVyX2lu
X2luaXQhPT0hMSx0aGlzLmNvbnZlcnRfaGFzaF9pbl9pbml0PXRoaXMuaGlzdG9yeT09PSEwJiZl
LmNvbnZlcnRfaGFzaF9pbl9pbml0IT09ITEsdGhpcy5ldmVyeT17YWZ0ZXI6ZS5hZnRlcnx8bnVs
bCxiZWZvcmU6ZS5iZWZvcmV8fG51bGwsb246ZS5vbnx8bnVsbH0sdGhpc30sZi5wcm90b3R5cGUu
cGFyYW09ZnVuY3Rpb24oZSx0KXsiOiIhPT1lWzBdJiYoZT0iOiIrZSk7dmFyIG49bmV3IFJlZ0V4
cChlLCJnIik7cmV0dXJuIHRoaXMucGFyYW1zW2VdPWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxh
Y2Uobix0LnNvdXJjZXx8dCl9LHRoaXN9LGYucHJvdG90eXBlLm9uPWYucHJvdG90eXBlLnJvdXRl
PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzO3JldHVybiBufHwiZnVuY3Rpb24iIT10eXBlb2Yg
dHx8KG49dCx0PWUsZT0ib24iKSxBcnJheS5pc0FycmF5KHQpP3QuZm9yRWFjaChmdW5jdGlvbih0
KXtyLm9uKGUsdCxuKX0pOih0LnNvdXJjZSYmKHQ9dC5zb3VyY2UucmVwbGFjZSgvXFxcLy9naSwi
LyIpKSxBcnJheS5pc0FycmF5KGUpP2UuZm9yRWFjaChmdW5jdGlvbihlKXtyLm9uKGUudG9Mb3dl
ckNhc2UoKSx0LG4pfSk6KHQ9dC5zcGxpdChuZXcgUmVnRXhwKHRoaXMuZGVsaW1pdGVyKSksdD1j
KHQsdGhpcy5kZWxpbWl0ZXIpLHZvaWQgdGhpcy5pbnNlcnQoZSx0aGlzLnNjb3BlLmNvbmNhdCh0
KSxuKSkpfSxmLnByb3RvdHlwZS5wYXRoPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5zY29wZS5s
ZW5ndGg7ZS5zb3VyY2UmJihlPWUuc291cmNlLnJlcGxhY2UoL1xcXC8vZ2ksIi8iKSksZT1lLnNw
bGl0KG5ldyBSZWdFeHAodGhpcy5kZWxpbWl0ZXIpKSxlPWMoZSx0aGlzLmRlbGltaXRlciksdGhp
cy5zY29wZT10aGlzLnNjb3BlLmNvbmNhdChlKSx0LmNhbGwodGhpcyx0aGlzKSx0aGlzLnNjb3Bl
LnNwbGljZShuLGUubGVuZ3RoKX0sZi5wcm90b3R5cGUuZGlzcGF0Y2g9ZnVuY3Rpb24oZSx0LG4p
e2Z1bmN0aW9uIHIoKXtvLmxhc3Q9YS5hZnRlcixvLmludm9rZShvLnJ1bmxpc3QoYSksbyxuKX12
YXIgaSxvPXRoaXMsYT10aGlzLnRyYXZlcnNlKGUsdC5yZXBsYWNlKGQsIiIpLHRoaXMucm91dGVz
LCIiKSxzPXRoaXMuX2ludm9rZWQ7cmV0dXJuIHRoaXMuX2ludm9rZWQ9ITAsYSYmMCE9PWEubGVu
Z3RoPygiZm9yd2FyZCI9PT10aGlzLnJlY3Vyc2UmJihhPWEucmV2ZXJzZSgpKSxpPXRoaXMuZXZl
cnkmJnRoaXMuZXZlcnkuYWZ0ZXI/W3RoaXMuZXZlcnkuYWZ0ZXJdLmNvbmNhdCh0aGlzLmxhc3Qp
Olt0aGlzLmxhc3RdLGkmJmkubGVuZ3RoPjAmJnM/KHRoaXMuYXN5bmM/dGhpcy5pbnZva2UoaSx0
aGlzLHIpOih0aGlzLmludm9rZShpLHRoaXMpLHIoKSksITApOihyKCksITApKToodGhpcy5sYXN0
PVtdLCJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLm5vdGZvdW5kJiZ0aGlzLmludm9rZShbdGhpcy5u
b3Rmb3VuZF0se21ldGhvZDplLHBhdGg6dH0sbiksITEpfSxmLnByb3RvdHlwZS5pbnZva2U9ZnVu
Y3Rpb24oZSx0LHIpe3ZhciBvLGE9dGhpczt0aGlzLmFzeW5jPyhvPWZ1bmN0aW9uKG4scil7cmV0
dXJuIEFycmF5LmlzQXJyYXkobik/aShuLG8scik6dm9pZCgiZnVuY3Rpb24iPT10eXBlb2YgbiYm
bi5hcHBseSh0LChlLmNhcHR1cmVzfHxbXSkuY29uY2F0KHIpKSl9LGkoZSxvLGZ1bmN0aW9uKCl7
ciYmci5hcHBseSh0LGFyZ3VtZW50cyl9KSk6KG89ZnVuY3Rpb24ocil7cmV0dXJuIEFycmF5Lmlz
QXJyYXkocik/bihyLG8pOiJmdW5jdGlvbiI9PXR5cGVvZiByP3IuYXBwbHkodCxlLmNhcHR1cmVz
fHxbXSk6dm9pZCgic3RyaW5nIj09dHlwZW9mIHImJmEucmVzb3VyY2UmJmEucmVzb3VyY2Vbcl0u
YXBwbHkodCxlLmNhcHR1cmVzfHxbXSkpfSxuKGUsbykpfSxmLnByb3RvdHlwZS50cmF2ZXJzZT1m
dW5jdGlvbihlLHQsbixyLGkpe2Z1bmN0aW9uIG8oZSl7ZnVuY3Rpb24gdChlKXtmb3IodmFyIG49
W10scj0wO3I8ZS5sZW5ndGg7cisrKW5bcl09QXJyYXkuaXNBcnJheShlW3JdKT90KGVbcl0pOmVb
cl07cmV0dXJuIG59ZnVuY3Rpb24gbihlKXtmb3IodmFyIHQ9ZS5sZW5ndGgtMTt0Pj0wO3QtLSlB
cnJheS5pc0FycmF5KGVbdF0pPyhuKGVbdF0pLDA9PT1lW3RdLmxlbmd0aCYmZS5zcGxpY2UodCwx
KSk6aShlW3RdKXx8ZS5zcGxpY2UodCwxKX1pZighaSlyZXR1cm4gZTt2YXIgcj10KGUpO3JldHVy
biByLm1hdGNoZWQ9ZS5tYXRjaGVkLHIuY2FwdHVyZXM9ZS5jYXB0dXJlcyxyLmFmdGVyPWUuYWZ0
ZXIuZmlsdGVyKGkpLG4ocikscn12YXIgYSxzLGMsdSxsPVtdO2lmKHQ9PT10aGlzLmRlbGltaXRl
ciYmbltlXSlyZXR1cm4gdT1bW24uYmVmb3JlLG5bZV1dLmZpbHRlcihCb29sZWFuKV0sdS5hZnRl
cj1bbi5hZnRlcl0uZmlsdGVyKEJvb2xlYW4pLHUubWF0Y2hlZD0hMCx1LmNhcHR1cmVzPVtdLG8o
dSk7Zm9yKHZhciBmIGluIG4paWYobi5oYXNPd25Qcm9wZXJ0eShmKSYmKCF0aGlzLl9tZXRob2Rz
W2ZdfHx0aGlzLl9tZXRob2RzW2ZdJiYib2JqZWN0Ij09dHlwZW9mIG5bZl0mJiFBcnJheS5pc0Fy
cmF5KG5bZl0pKSl7aWYoYT1zPXIrdGhpcy5kZWxpbWl0ZXIrZix0aGlzLnN0cmljdHx8KHMrPSJb
Iit0aGlzLmRlbGltaXRlcisiXT8iKSxjPXQubWF0Y2gobmV3IFJlZ0V4cCgiXiIrcykpLCFjKWNv
bnRpbnVlO2lmKGNbMF0mJmNbMF09PXQmJm5bZl1bZV0pcmV0dXJuIHU9W1tuW2ZdLmJlZm9yZSxu
W2ZdW2VdXS5maWx0ZXIoQm9vbGVhbildLHUuYWZ0ZXI9W25bZl0uYWZ0ZXJdLmZpbHRlcihCb29s
ZWFuKSx1Lm1hdGNoZWQ9ITAsdS5jYXB0dXJlcz1jLnNsaWNlKDEpLHRoaXMucmVjdXJzZSYmbj09
PXRoaXMucm91dGVzJiYodS5wdXNoKFtuLmJlZm9yZSxuLm9uXS5maWx0ZXIoQm9vbGVhbikpLHUu
YWZ0ZXI9dS5hZnRlci5jb25jYXQoW24uYWZ0ZXJdLmZpbHRlcihCb29sZWFuKSkpLG8odSk7aWYo
dT10aGlzLnRyYXZlcnNlKGUsdCxuW2ZdLGEpLHUubWF0Y2hlZClyZXR1cm4gdS5sZW5ndGg+MCYm
KGw9bC5jb25jYXQodSkpLHRoaXMucmVjdXJzZSYmKGwucHVzaChbbltmXS5iZWZvcmUsbltmXS5v
bl0uZmlsdGVyKEJvb2xlYW4pKSx1LmFmdGVyPXUuYWZ0ZXIuY29uY2F0KFtuW2ZdLmFmdGVyXS5m
aWx0ZXIoQm9vbGVhbikpLG49PT10aGlzLnJvdXRlcyYmKGwucHVzaChbbi5iZWZvcmUsbi5vbl0u
ZmlsdGVyKEJvb2xlYW4pKSx1LmFmdGVyPXUuYWZ0ZXIuY29uY2F0KFtuLmFmdGVyXS5maWx0ZXIo
Qm9vbGVhbikpKSksbC5tYXRjaGVkPSEwLGwuY2FwdHVyZXM9dS5jYXB0dXJlcyxsLmFmdGVyPXUu
YWZ0ZXIsbyhsKX1yZXR1cm4hMX0sZi5wcm90b3R5cGUuaW5zZXJ0PWZ1bmN0aW9uKGUsdCxuLHIp
e3ZhciBpLG8scyxjLHU7aWYodD10LmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5sZW5n
dGg+MH0pLHI9cnx8dGhpcy5yb3V0ZXMsdT10LnNoaWZ0KCksL1w6fFwqLy50ZXN0KHUpJiYhL1xc
ZHxcXHcvLnRlc3QodSkmJih1PWEodSx0aGlzLnBhcmFtcykpLHQubGVuZ3RoPjApcmV0dXJuIHJb
dV09clt1XXx8e30sdGhpcy5pbnNlcnQoZSx0LG4sclt1XSk7aWYodXx8dC5sZW5ndGh8fHIhPT10
aGlzLnJvdXRlcyl7aWYobz10eXBlb2Ygclt1XSxzPUFycmF5LmlzQXJyYXkoclt1XSksclt1XSYm
IXMmJiJvYmplY3QiPT1vKXN3aXRjaChpPXR5cGVvZiByW3VdW2VdKXtjYXNlImZ1bmN0aW9uIjpy
ZXR1cm4gdm9pZChyW3VdW2VdPVtyW3VdW2VdLG5dKTtjYXNlIm9iamVjdCI6cmV0dXJuIHZvaWQg
clt1XVtlXS5wdXNoKG4pO2Nhc2UidW5kZWZpbmVkIjpyZXR1cm4gdm9pZChyW3VdW2VdPW4pfWVs
c2UgaWYoInVuZGVmaW5lZCI9PW8pcmV0dXJuIGM9e30sY1tlXT1uLHZvaWQoclt1XT1jKTt0aHJv
dyBuZXcgRXJyb3IoIkludmFsaWQgcm91dGUgY29udGV4dDogIitvKX1zd2l0Y2goaT10eXBlb2Yg
cltlXSl7Y2FzZSJmdW5jdGlvbiI6cmV0dXJuIHZvaWQocltlXT1bcltlXSxuXSk7Y2FzZSJvYmpl
Y3QiOnJldHVybiB2b2lkIHJbZV0ucHVzaChuKTtjYXNlInVuZGVmaW5lZCI6cmV0dXJuIHZvaWQo
cltlXT1uKX19LGYucHJvdG90eXBlLmV4dGVuZD1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUpe3Iu
X21ldGhvZHNbZV09ITAscltlXT1mdW5jdGlvbigpe3ZhciB0PTE9PT1hcmd1bWVudHMubGVuZ3Ro
P1tlLCIiXTpbZV07ci5vbi5hcHBseShyLHQuY29uY2F0KEFycmF5LnByb3RvdHlwZS5zbGljZS5j
YWxsKGFyZ3VtZW50cykpKX19dmFyIG4scj10aGlzLGk9ZS5sZW5ndGg7Zm9yKG49MDtuPGk7bisr
KXQoZVtuXSl9LGYucHJvdG90eXBlLnJ1bmxpc3Q9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5ldmVy
eSYmdGhpcy5ldmVyeS5iZWZvcmU/W3RoaXMuZXZlcnkuYmVmb3JlXS5jb25jYXQocihlKSk6cihl
KTtyZXR1cm4gdGhpcy5ldmVyeSYmdGhpcy5ldmVyeS5vbiYmdC5wdXNoKHRoaXMuZXZlcnkub24p
LHQuY2FwdHVyZXM9ZS5jYXB0dXJlcyx0LnNvdXJjZT1lLnNvdXJjZSx0fSxmLnByb3RvdHlwZS5t
b3VudD1mdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG4odCxuKXt2YXIgaT10LG89dC5zcGxpdChyLmRl
bGltaXRlciksYT10eXBlb2YgZVt0XSxzPSIiPT09b1swXXx8IXIuX21ldGhvZHNbb1swXV0sdT1z
PyJvbiI6aTtyZXR1cm4gcyYmKGk9aS5zbGljZSgoaS5tYXRjaChuZXcgUmVnRXhwKCJeIityLmRl
bGltaXRlcikpfHxbIiJdKVswXS5sZW5ndGgpLG8uc2hpZnQoKSkscyYmIm9iamVjdCI9PT1hJiYh
QXJyYXkuaXNBcnJheShlW3RdKT8obj1uLmNvbmNhdChvKSx2b2lkIHIubW91bnQoZVt0XSxuKSk6
KHMmJihuPW4uY29uY2F0KGkuc3BsaXQoci5kZWxpbWl0ZXIpKSxuPWMobixyLmRlbGltaXRlcikp
LHZvaWQgci5pbnNlcnQodSxuLGVbdF0pKX1pZihlJiYib2JqZWN0Ij09dHlwZW9mIGUmJiFBcnJh
eS5pc0FycmF5KGUpKXt2YXIgcj10aGlzO3Q9dHx8W10sQXJyYXkuaXNBcnJheSh0KXx8KHQ9dC5z
cGxpdChyLmRlbGltaXRlcikpO2Zvcih2YXIgaSBpbiBlKWUuaGFzT3duUHJvcGVydHkoaSkmJm4o
aSx0LnNsaWNlKDApKX19fSh0KX0sLCwsLCxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlv
bigpe3ZhciBlPVtdO3JldHVybiBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPVtdLHQ9
MDt0PHRoaXMubGVuZ3RoO3QrKyl7dmFyIG49dGhpc1t0XTtuWzJdP2UucHVzaCgiQG1lZGlhICIr
blsyXSsieyIrblsxXSsifSIpOmUucHVzaChuWzFdKX1yZXR1cm4gZS5qb2luKCIiKX0sZS5pPWZ1
bmN0aW9uKHQsbil7InN0cmluZyI9PXR5cGVvZiB0JiYodD1bW251bGwsdCwiIl1dKTtmb3IodmFy
IHI9e30saT0wO2k8dGhpcy5sZW5ndGg7aSsrKXt2YXIgbz10aGlzW2ldWzBdOyJudW1iZXIiPT10
eXBlb2YgbyYmKHJbb109ITApfWZvcihpPTA7aTx0Lmxlbmd0aDtpKyspe3ZhciBhPXRbaV07Im51
bWJlciI9PXR5cGVvZiBhWzBdJiZyW2FbMF1dfHwobiYmIWFbMl0/YVsyXT1uOm4mJihhWzJdPSIo
IithWzJdKyIpIGFuZCAoIituKyIpIiksZS5wdXNoKGEpKX19LGV9fSxmdW5jdGlvbihlLHQsbil7
ZnVuY3Rpb24gcihlLHQpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgcj1lW25dLGk9
ZltyLmlkXTtpZihpKXtpLnJlZnMrKztmb3IodmFyIG89MDtvPGkucGFydHMubGVuZ3RoO28rKylp
LnBhcnRzW29dKHIucGFydHNbb10pO2Zvcig7bzxyLnBhcnRzLmxlbmd0aDtvKyspaS5wYXJ0cy5w
dXNoKGMoci5wYXJ0c1tvXSx0KSl9ZWxzZXtmb3IodmFyIGE9W10sbz0wO288ci5wYXJ0cy5sZW5n
dGg7bysrKWEucHVzaChjKHIucGFydHNbb10sdCkpO2Zbci5pZF09e2lkOnIuaWQscmVmczoxLHBh
cnRzOmF9fX19ZnVuY3Rpb24gaShlKXtmb3IodmFyIHQ9W10sbj17fSxyPTA7cjxlLmxlbmd0aDty
Kyspe3ZhciBpPWVbcl0sbz1pWzBdLGE9aVsxXSxzPWlbMl0sYz1pWzNdLHU9e2NzczphLG1lZGlh
OnMsc291cmNlTWFwOmN9O25bb10/bltvXS5wYXJ0cy5wdXNoKHUpOnQucHVzaChuW29dPXtpZDpv
LHBhcnRzOlt1XX0pfXJldHVybiB0fWZ1bmN0aW9uIG8oZSx0KXt2YXIgbj1oKCkscj1nW2cubGVu
Z3RoLTFdO2lmKCJ0b3AiPT09ZS5pbnNlcnRBdClyP3IubmV4dFNpYmxpbmc/bi5pbnNlcnRCZWZv
cmUodCxyLm5leHRTaWJsaW5nKTpuLmFwcGVuZENoaWxkKHQpOm4uaW5zZXJ0QmVmb3JlKHQsbi5m
aXJzdENoaWxkKSxnLnB1c2godCk7ZWxzZXtpZigiYm90dG9tIiE9PWUuaW5zZXJ0QXQpdGhyb3cg
bmV3IEVycm9yKCJJbnZhbGlkIHZhbHVlIGZvciBwYXJhbWV0ZXIgJ2luc2VydEF0Jy4gTXVzdCBi
ZSAndG9wJyBvciAnYm90dG9tJy4iKTtuLmFwcGVuZENoaWxkKHQpfX1mdW5jdGlvbiBhKGUpe2Uu
cGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlKTt2YXIgdD1nLmluZGV4T2YoZSk7dD49MCYmZy5zcGxp
Y2UodCwxKX1mdW5jdGlvbiBzKGUpe3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxl
Iik7cmV0dXJuIHQudHlwZT0idGV4dC9jc3MiLG8oZSx0KSx0fWZ1bmN0aW9uIGMoZSx0KXt2YXIg
bixyLGk7aWYodC5zaW5nbGV0b24pe3ZhciBvPW0rKztuPXZ8fCh2PXModCkpLHI9dS5iaW5kKG51
bGwsbixvLCExKSxpPXUuYmluZChudWxsLG4sbywhMCl9ZWxzZSBuPXModCkscj1sLmJpbmQobnVs
bCxuKSxpPWZ1bmN0aW9uKCl7YShuKX07cmV0dXJuIHIoZSksZnVuY3Rpb24odCl7aWYodCl7aWYo
dC5jc3M9PT1lLmNzcyYmdC5tZWRpYT09PWUubWVkaWEmJnQuc291cmNlTWFwPT09ZS5zb3VyY2VN
YXApcmV0dXJuO3IoZT10KX1lbHNlIGkoKX19ZnVuY3Rpb24gdShlLHQsbixyKXt2YXIgaT1uPyIi
OnIuY3NzO2lmKGUuc3R5bGVTaGVldCllLnN0eWxlU2hlZXQuY3NzVGV4dD15KHQsaSk7ZWxzZXt2
YXIgbz1kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShpKSxhPWUuY2hpbGROb2RlczthW3RdJiZlLnJl
bW92ZUNoaWxkKGFbdF0pLGEubGVuZ3RoP2UuaW5zZXJ0QmVmb3JlKG8sYVt0XSk6ZS5hcHBlbmRD
aGlsZChvKX19ZnVuY3Rpb24gbChlLHQpe3ZhciBuPXQuY3NzLHI9dC5tZWRpYSxpPXQuc291cmNl
TWFwO2lmKHImJmUuc2V0QXR0cmlidXRlKCJtZWRpYSIsciksaSYmKG4rPSJcbi8qIyBzb3VyY2VV
Ukw9IitpLnNvdXJjZXNbMF0rIiAqLyIsbis9IlxuLyojIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTph
cHBsaWNhdGlvbi9qc29uO2Jhc2U2NCwiK2J0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50
KEpTT04uc3RyaW5naWZ5KGkpKSkpKyIgKi8iKSxlLnN0eWxlU2hlZXQpZS5zdHlsZVNoZWV0LmNz
c1RleHQ9bjtlbHNle2Zvcig7ZS5maXJzdENoaWxkOyllLnJlbW92ZUNoaWxkKGUuZmlyc3RDaGls
ZCk7ZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShuKSl9fXZhciBmPXt9LGQ9
ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuInVuZGVmaW5lZCI9PXR5
cGVvZiB0JiYodD1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKSksdH19LHA9ZChmdW5jdGlvbigpe3Jl
dHVybi9tc2llIFs2LTldXGIvLnRlc3Qod2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dl
ckNhc2UoKSl9KSxoPWQoZnVuY3Rpb24oKXtyZXR1cm4gZG9jdW1lbnQuaGVhZHx8ZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXX0pLHY9bnVsbCxtPTAsZz1bXTtlLmV4cG9y
dHM9ZnVuY3Rpb24oZSx0KXt0PXR8fHt9LCJ1bmRlZmluZWQiPT10eXBlb2YgdC5zaW5nbGV0b24m
Jih0LnNpbmdsZXRvbj1wKCkpLCJ1bmRlZmluZWQiPT10eXBlb2YgdC5pbnNlcnRBdCYmKHQuaW5z
ZXJ0QXQ9ImJvdHRvbSIpO3ZhciBuPWkoZSk7cmV0dXJuIHIobix0KSxmdW5jdGlvbihlKXtmb3Io
dmFyIG89W10sYT0wO2E8bi5sZW5ndGg7YSsrKXt2YXIgcz1uW2FdLGM9ZltzLmlkXTtjLnJlZnMt
LSxvLnB1c2goYyl9aWYoZSl7dmFyIHU9aShlKTtyKHUsdCl9Zm9yKHZhciBhPTA7YTxvLmxlbmd0
aDthKyspe3ZhciBjPW9bYV07aWYoMD09PWMucmVmcyl7Zm9yKHZhciBsPTA7bDxjLnBhcnRzLmxl
bmd0aDtsKyspYy5wYXJ0c1tsXSgpO2RlbGV0ZSBmW2MuaWRdfX19fTt2YXIgeT1mdW5jdGlvbigp
e3ZhciBlPVtdO3JldHVybiBmdW5jdGlvbih0LG4pe3JldHVybiBlW3RdPW4sZS5maWx0ZXIoQm9v
bGVhbikuam9pbigiXG4iKX19KCl9XSk7CisvLyMgc291cmNlTWFwcGluZ1VSTD12ZW5kb3IuYTUy
NTE3YzVhYTk4ZTdmYmVhMmUuanMubWFwClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2Rpc3Qvc3RhdGljL2pzL3ZlbmRvci5hNTI1
MTdjNWFhOThlN2ZiZWEyZS5qcy5tYXAgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvZGlzdC9zdGF0
aWMvanMvdmVuZG9yLmE1MjUxN2M1YWE5OGU3ZmJlYTJlLmpzLm1hcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMTg5
NDM3NWU1OWMwMTE4YWQwYzFjYjI1YTcxMDgyN2YzYzQ5ZWVhCi0tLSAvZGV2L251bGwKKysrIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvdnVlanMtY2xpL2Rpc3Qvc3RhdGljL2pzL3ZlbmRvci5hNTI1MTdjNWFhOThl
N2ZiZWEyZS5qcy5tYXAKQEAgLTAsMCArMSBAQAoreyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndl
YnBhY2s6Ly8vc3RhdGljL2pzL3ZlbmRvci5hNTI1MTdjNWFhOThlN2ZiZWEyZS5qcyIsIndlYnBh
Y2s6Ly8vLi9+L3Z1ZS9kaXN0L3Z1ZS5jb21tb24uanMiLCJ3ZWJwYWNrOi8vLy4vfi9kaXJlY3Rv
ci9idWlsZC9kaXJlY3Rvci5qcyIsIndlYnBhY2s6Ly8vLi9+L2Nzcy1sb2FkZXIvbGliL2Nzcy1i
YXNlLmpzIiwid2VicGFjazovLy8uL34vdnVlLXN0eWxlLWxvYWRlci9hZGRTdHlsZXMuanMiXSwi
bmFtZXMiOlsid2VicGFja0pzb25wIiwibW9kdWxlIiwiZXhwb3J0cyIsIl9fd2VicGFja19yZXF1
aXJlX18iLCJnbG9iYWwiLCJfdG9TdHJpbmciLCJ2YWwiLCJKU09OIiwic3RyaW5naWZ5IiwiU3Ry
aW5nIiwidG9OdW1iZXIiLCJuIiwicGFyc2VGbG9hdCIsIm1ha2VNYXAiLCJzdHIiLCJleHBlY3Rz
TG93ZXJDYXNlIiwibWFwIiwiT2JqZWN0IiwiY3JlYXRlIiwibGlzdCIsInNwbGl0IiwiaSIsImxl
bmd0aCIsInRvTG93ZXJDYXNlIiwicmVtb3ZlJDEiLCJhcnIiLCJpdGVtIiwiaW5kZXgiLCJpbmRl
eE9mIiwic3BsaWNlIiwiaGFzT3duIiwib2JqIiwia2V5IiwiaGFzT3duUHJvcGVydHkiLCJjYWxs
IiwiaXNQcmltaXRpdmUiLCJ2YWx1ZSIsImNhY2hlZCIsImZuIiwiY2FjaGUiLCJoaXQiLCJiaW5k
JDEiLCJjdHgiLCJib3VuZEZuIiwiYSIsImwiLCJhcmd1bWVudHMiLCJhcHBseSIsIl9sZW5ndGgi
LCJ0b0FycmF5Iiwic3RhcnQiLCJyZXQiLCJBcnJheSIsImV4dGVuZCIsInRvIiwiX2Zyb20iLCJp
c09iamVjdCIsImlzUGxhaW5PYmplY3QiLCJ0b1N0cmluZyIsIk9CSkVDVF9TVFJJTkciLCJ0b09i
amVjdCIsInJlcyIsIm5vb3AiLCJnZW5TdGF0aWNLZXlzIiwibW9kdWxlcyIsInJlZHVjZSIsImtl
eXMiLCJtIiwiY29uY2F0Iiwic3RhdGljS2V5cyIsImpvaW4iLCJsb29zZUVxdWFsIiwiYiIsImxv
b3NlSW5kZXhPZiIsImlzUmVzZXJ2ZWQiLCJjIiwiY2hhckNvZGVBdCIsImRlZiIsImVudW1lcmFi
bGUiLCJkZWZpbmVQcm9wZXJ0eSIsIndyaXRhYmxlIiwiY29uZmlndXJhYmxlIiwicGFyc2VQYXRo
IiwicGF0aCIsImJhaWxSRSIsInRlc3QiLCJzZWdtZW50cyIsImlzTmF0aXZlIiwiQ3RvciIsInB1
c2hUYXJnZXQiLCJfdGFyZ2V0IiwiRGVwIiwidGFyZ2V0IiwidGFyZ2V0U3RhY2siLCJwdXNoIiwi
cG9wVGFyZ2V0IiwicG9wIiwicHJvdG9BdWdtZW50Iiwic3JjIiwiX19wcm90b19fIiwiY29weUF1
Z21lbnQiLCJvYnNlcnZlIiwib2IiLCJfX29iX18iLCJPYnNlcnZlciIsIm9ic2VydmVyU3RhdGUi
LCJzaG91bGRDb252ZXJ0IiwiaXNTZXJ2ZXJSZW5kZXJpbmciLCJpc0FycmF5IiwiaXNFeHRlbnNp
YmxlIiwiX2lzVnVlIiwiZGVmaW5lUmVhY3RpdmUkJDEiLCJjdXN0b21TZXR0ZXIiLCJkZXAiLCJw
cm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImdldHRlciIsImdldCIsInNldHRl
ciIsInNldCIsImNoaWxkT2IiLCJkZXBlbmQiLCJkZXBlbmRBcnJheSIsIm5ld1ZhbCIsIm5vdGlm
eSIsIk1hdGgiLCJtYXgiLCJ2bUNvdW50IiwiZGVsIiwiZSIsIm1lcmdlRGF0YSIsImZyb20iLCJ0
b1ZhbCIsImZyb21WYWwiLCJtZXJnZUhvb2siLCJwYXJlbnRWYWwiLCJjaGlsZFZhbCIsIm1lcmdl
QXNzZXRzIiwibm9ybWFsaXplUHJvcHMiLCJvcHRpb25zIiwicHJvcHMiLCJuYW1lIiwiY2FtZWxp
emUiLCJ0eXBlIiwibm9ybWFsaXplRGlyZWN0aXZlcyIsImRpcnMiLCJkaXJlY3RpdmVzIiwiYmlu
ZCIsInVwZGF0ZSIsIm1lcmdlT3B0aW9ucyIsInBhcmVudCIsImNoaWxkIiwidm0iLCJtZXJnZUZp
ZWxkIiwic3RyYXQiLCJzdHJhdHMiLCJkZWZhdWx0U3RyYXQiLCJleHRlbmRzRnJvbSIsImV4dGVu
ZHMiLCJtaXhpbnMiLCJtaXhpbiIsInByb3RvdHlwZSIsIlZ1ZSQzIiwicmVzb2x2ZUFzc2V0Iiwi
aWQiLCJ3YXJuTWlzc2luZyIsImFzc2V0cyIsImNhcGl0YWxpemUiLCJ2YWxpZGF0ZVByb3AiLCJw
cm9wT3B0aW9ucyIsInByb3BzRGF0YSIsInByb3AiLCJhYnNlbnQiLCJpc0Jvb2xlYW5UeXBlIiwi
aHlwaGVuYXRlIiwidW5kZWZpbmVkIiwiZ2V0UHJvcERlZmF1bHRWYWx1ZSIsInByZXZTaG91bGRD
b252ZXJ0IiwiZGVmYXVsdCIsIiRvcHRpb25zIiwiRnVuY3Rpb24iLCJnZXRUeXBlIiwibWF0Y2gi
LCJsZW4iLCJyZXNldFNjaGVkdWxlclN0YXRlIiwicXVldWUiLCJoYXMkMSIsIndhaXRpbmciLCJm
bHVzaGluZyIsImZsdXNoU2NoZWR1bGVyUXVldWUiLCJzb3J0Iiwid2F0Y2hlciIsInJ1biIsImRl
dnRvb2xzIiwiY29uZmlnIiwiZW1pdCIsInF1ZXVlV2F0Y2hlciIsIm5leHRUaWNrIiwidHJhdmVy
c2UiLCJzZWVuT2JqZWN0cyIsImNsZWFyIiwiX3RyYXZlcnNlIiwic2VlbiIsImlzQSIsImRlcElk
IiwiaGFzIiwiYWRkIiwiaW5pdFN0YXRlIiwiX3dhdGNoZXJzIiwiaW5pdFByb3BzIiwiaW5pdERh
dGEiLCJpbml0Q29tcHV0ZWQiLCJpbml0TWV0aG9kcyIsImluaXRXYXRjaCIsIl9wcm9wS2V5cyIs
ImlzUm9vdCIsIiRwYXJlbnQiLCJsb29wIiwiZGF0YSIsIl9kYXRhIiwicHJveHkiLCJjb21wdXRl
ZCIsInVzZXJEZWYiLCJjb21wdXRlZFNoYXJlZERlZmluaXRpb24iLCJtYWtlQ29tcHV0ZWRHZXR0
ZXIiLCJvd25lciIsIldhdGNoZXIiLCJsYXp5IiwiZGlydHkiLCJldmFsdWF0ZSIsIm1ldGhvZHMi
LCJ3YXRjaCIsImhhbmRsZXIiLCJjcmVhdGVXYXRjaGVyIiwiJHdhdGNoIiwic3RhdGVNaXhpbiIs
IlZ1ZSIsImRhdGFEZWYiLCJ0aGlzIiwiJHNldCIsIiRkZWxldGUiLCJleHBPckZuIiwiY2IiLCJ1
c2VyIiwiaW1tZWRpYXRlIiwidGVhcmRvd24iLCJjbG9uZVZOb2RlIiwidm5vZGUiLCJjbG9uZWQi
LCJWTm9kZSIsInRhZyIsImNoaWxkcmVuIiwidGV4dCIsImVsbSIsIm5zIiwiY29udGV4dCIsImNv
bXBvbmVudE9wdGlvbnMiLCJpc1N0YXRpYyIsImlzQ2xvbmVkIiwiY2xvbmVWTm9kZXMiLCJ2bm9k
ZXMiLCJtZXJnZVZOb2RlSG9vayIsImhvb2tLZXkiLCJob29rIiwiaW5qZWN0ZWRIYXNoIiwiX19p
bmplY3RlZCIsIm9sZEhvb2siLCJ1cGRhdGVMaXN0ZW5lcnMiLCJvbiIsIm9sZE9uIiwicmVtb3Zl
JCQxIiwiY3VyIiwib2xkIiwiZXZlbnQiLCJjYXB0dXJlIiwiY2hhckF0Iiwic2xpY2UiLCJpbnZv
a2VyIiwiYXJySW52b2tlciIsImZuSW52b2tlciIsImV2IiwiYXJndW1lbnRzJDEiLCJzaW5nbGUi
LCJvIiwibm9ybWFsaXplQ2hpbGRyZW4iLCJuZXN0ZWRJbmRleCIsImNyZWF0ZVRleHRWTm9kZSIs
Imxhc3QiLCJhcHBseU5TIiwiZ2V0Rmlyc3RDb21wb25lbnRDaGlsZCIsImZpbHRlciIsImluaXRM
aWZlY3ljbGUiLCJhYnN0cmFjdCIsIiRjaGlsZHJlbiIsIiRyb290IiwiJHJlZnMiLCJfd2F0Y2hl
ciIsIl9pbmFjdGl2ZSIsIl9pc01vdW50ZWQiLCJfaXNEZXN0cm95ZWQiLCJfaXNCZWluZ0Rlc3Ry
b3llZCIsImxpZmVjeWNsZU1peGluIiwiX21vdW50IiwiZWwiLCJoeWRyYXRpbmciLCIkZWwiLCJy
ZW5kZXIiLCJlbXB0eVZOb2RlIiwiY2FsbEhvb2siLCJfdXBkYXRlIiwiX3JlbmRlciIsIiR2bm9k
ZSIsInByZXZFbCIsInByZXZBY3RpdmVJbnN0YW5jZSIsImFjdGl2ZUluc3RhbmNlIiwicHJldlZu
b2RlIiwiX3Zub2RlIiwiX19wYXRjaF9fIiwiX192dWVfXyIsIl91cGRhdGVGcm9tUGFyZW50Iiwi
bGlzdGVuZXJzIiwicGFyZW50Vm5vZGUiLCJyZW5kZXJDaGlsZHJlbiIsImhhc0NoaWxkcmVuIiwi
X3JlbmRlckNoaWxkcmVuIiwiX3BhcmVudFZub2RlIiwicHJvcEtleXMiLCJvbGRMaXN0ZW5lcnMi
LCJfcGFyZW50TGlzdGVuZXJzIiwiX3VwZGF0ZUxpc3RlbmVycyIsIiRzbG90cyIsInJlc29sdmVT
bG90cyIsIl9yZW5kZXJDb250ZXh0IiwiJGZvcmNlVXBkYXRlIiwiJGRlc3Ryb3kiLCIkb2ZmIiwi
aGFuZGxlcnMiLCJqIiwiJGVtaXQiLCJjcmVhdGVDb21wb25lbnQiLCJiYXNlQ3RvciIsIl9iYXNl
IiwiY2lkIiwicmVzb2x2ZWQiLCJyZXNvbHZlQXN5bmNDb21wb25lbnQiLCJyZXNvbHZlQ29uc3Ry
dWN0b3JPcHRpb25zIiwiZXh0cmFjdFByb3BzIiwiZnVuY3Rpb25hbCIsImNyZWF0ZUZ1bmN0aW9u
YWxDb21wb25lbnQiLCJuYXRpdmVPbiIsIm1lcmdlSG9va3MiLCJjcmVhdGVFbGVtZW50IiwiX3Nl
bGYiLCJzbG90cyIsImZ1bmN0aW9uYWxDb250ZXh0Iiwic2xvdCIsImNyZWF0ZUNvbXBvbmVudElu
c3RhbmNlRm9yVm5vZGUiLCJ2bm9kZUNvbXBvbmVudE9wdGlvbnMiLCJfaXNDb21wb25lbnQiLCJf
Y29tcG9uZW50VGFnIiwiaW5saW5lVGVtcGxhdGUiLCJzdGF0aWNSZW5kZXJGbnMiLCJpbml0Iiwi
JG1vdW50Iiwia2VlcEFsaXZlIiwibW91bnRlZE5vZGUiLCJwcmVwYXRjaCIsIm9sZFZub2RlIiwi
aW5zZXJ0IiwiZGVzdHJveSQxIiwiZmFjdG9yeSIsInJlcXVlc3RlZCIsImNicyIsInBlbmRpbmdD
YWxsYmFja3MiLCJzeW5jIiwicmVzb2x2ZSIsInJlamVjdCIsInJlYXNvbiIsInRoZW4iLCJhdHRy
cyIsImRvbVByb3BzIiwiYWx0S2V5IiwiY2hlY2tQcm9wIiwiaGFzaCIsInByZXNlcnZlIiwiaG9v
a3NUb01lcmdlIiwiZnJvbVBhcmVudCIsIm91cnMiLCJob29rcyIsIm1lcmdlSG9vayQxIiwiXyIs
Il9fIiwiX2NyZWF0ZUVsZW1lbnQiLCJzY29wZWRTbG90cyIsImdldFRhZ05hbWVzcGFjZSIsImlz
UmVzZXJ2ZWRUYWciLCJjaGlsZE5zIiwiaW5pdFJlbmRlciIsIl9zdGF0aWNUcmVlcyIsIiRzY29w
ZWRTbG90cyIsIiRjcmVhdGVFbGVtZW50IiwicmVuZGVyTWl4aW4iLCJtYXJrU3RhdGljIiwidHJl
ZSIsImlzT25jZSIsIm1hcmtTdGF0aWNOb2RlIiwibm9kZSIsIiRuZXh0VGljayIsInJlZiIsIl9y
ZW5kZXJQcm94eSIsImVycm9ySGFuZGxlciIsImNvbnNvbGUiLCJlcnJvciIsIl9oIiwiX3MiLCJf
biIsIl9lIiwiX3EiLCJfaSIsIl9tIiwiaXNJbkZvciIsIl9vIiwiaWRlbnRpdHkiLCJfZiIsIl9s
IiwiX3QiLCJmYWxsYmFjayIsInNjb3BlZFNsb3RGbiIsInNsb3ROb2RlcyIsIl9iIiwiYXNQcm9w
IiwibXVzdFVzZVByb3AiLCJfayIsImtleUNvZGVzIiwiZGVmYXVsdFNsb3QiLCJpc0NvbW1lbnQi
LCJpbml0RXZlbnRzIiwiX2V2ZW50cyIsIiRvbiIsIm9mZiIsImV2ZW50c01peGluIiwiJG9uY2Ui
LCJhcmdzIiwiaW5pdE1peGluIiwiX2luaXQiLCJfdWlkIiwidWlkIiwiaW5pdEludGVybmFsQ29t
cG9uZW50IiwiY29uc3RydWN0b3IiLCJvcHRzIiwic3VwZXIiLCJzdXBlck9wdGlvbnMiLCJjYWNo
ZWRTdXBlck9wdGlvbnMiLCJleHRlbmRPcHRpb25zIiwiX3Njb3BlSWQiLCJjb21wb25lbnRzIiwi
aW5pdFVzZSIsInVzZSIsInBsdWdpbiIsImluc3RhbGxlZCIsInVuc2hpZnQiLCJpbnN0YWxsIiwi
aW5pdE1peGluJDEiLCJpbml0RXh0ZW5kIiwiU3VwZXIiLCJTdXBlcklkIiwiY2FjaGVkQ3RvcnMi
LCJfQ3RvciIsIlN1YiIsIl9hc3NldFR5cGVzIiwiZm9yRWFjaCIsImluaXRBc3NldFJlZ2lzdGVy
cyIsImRlZmluaXRpb24iLCJtYXRjaGVzIiwicGF0dGVybiIsImluaXRHbG9iYWxBUEkiLCJjb25m
aWdEZWYiLCJ1dGlsIiwiZGVsZXRlIiwiYnVpbHRJbkNvbXBvbmVudHMiLCJnZW5DbGFzc0ZvclZu
b2RlIiwicGFyZW50Tm9kZSIsImNoaWxkTm9kZSIsIm1lcmdlQ2xhc3NEYXRhIiwiZ2VuQ2xhc3NG
cm9tRGF0YSIsInN0YXRpY0NsYXNzIiwiY2xhc3MiLCJkeW5hbWljQ2xhc3MiLCJzdHJpbmdpZnlD
bGFzcyIsInN0cmluZ2lmaWVkIiwiaXNTVkciLCJpc1Vua25vd25FbGVtZW50IiwiaW5Ccm93c2Vy
IiwidW5rbm93bkVsZW1lbnRDYWNoZSIsImRvY3VtZW50Iiwid2luZG93IiwiSFRNTFVua25vd25F
bGVtZW50IiwiSFRNTEVsZW1lbnQiLCJxdWVyeSIsInF1ZXJ5U2VsZWN0b3IiLCJjcmVhdGVFbGVt
ZW50JDEiLCJ0YWdOYW1lIiwic2V0QXR0cmlidXRlIiwiY3JlYXRlRWxlbWVudE5TIiwibmFtZXNw
YWNlIiwibmFtZXNwYWNlTWFwIiwiY3JlYXRlVGV4dE5vZGUiLCJjcmVhdGVDb21tZW50IiwiaW5z
ZXJ0QmVmb3JlIiwibmV3Tm9kZSIsInJlZmVyZW5jZU5vZGUiLCJyZW1vdmVDaGlsZCIsImFwcGVu
ZENoaWxkIiwibmV4dFNpYmxpbmciLCJzZXRUZXh0Q29udGVudCIsInRleHRDb250ZW50IiwiY2hp
bGROb2RlcyIsInJlZ2lzdGVyUmVmIiwiaXNSZW1vdmFsIiwicmVmcyIsInJlZkluRm9yIiwiaXNV
bmRlZiIsInMiLCJpc0RlZiIsInNhbWVWbm9kZSIsInZub2RlMSIsInZub2RlMiIsImNyZWF0ZUtl
eVRvT2xkSWR4IiwiYmVnaW5JZHgiLCJlbmRJZHgiLCJjcmVhdGVQYXRjaEZ1bmN0aW9uIiwiYmFj
a2VuZCIsImVtcHR5Tm9kZUF0Iiwibm9kZU9wcyIsImNyZWF0ZVJtQ2IiLCJjaGlsZEVsbSIsInJl
bW92ZUVsZW1lbnQiLCJjcmVhdGVFbG0iLCJpbnNlcnRlZFZub2RlUXVldWUiLCJuZXN0ZWQiLCJp
c1Jvb3RJbnNlcnQiLCJpbml0Q29tcG9uZW50Iiwic2V0U2NvcGUiLCJjcmVhdGVDaGlsZHJlbiIs
Imludm9rZUNyZWF0ZUhvb2tzIiwiaXNQYXRjaGFibGUiLCJpJDEiLCJlbXB0eU5vZGUiLCJwZW5k
aW5nSW5zZXJ0IiwiYWRkVm5vZGVzIiwicGFyZW50RWxtIiwiYmVmb3JlIiwic3RhcnRJZHgiLCJp
bnZva2VEZXN0cm95SG9vayIsImRlc3Ryb3kiLCJyZW1vdmVWbm9kZXMiLCJjaCIsInJlbW92ZUFu
ZEludm9rZVJlbW92ZUhvb2siLCJybSIsInJlbW92ZSIsInVwZGF0ZUNoaWxkcmVuIiwib2xkQ2gi
LCJuZXdDaCIsInJlbW92ZU9ubHkiLCJvbGRLZXlUb0lkeCIsImlkeEluT2xkIiwiZWxtVG9Nb3Zl
Iiwib2xkU3RhcnRJZHgiLCJuZXdTdGFydElkeCIsIm9sZEVuZElkeCIsIm9sZFN0YXJ0Vm5vZGUi
LCJvbGRFbmRWbm9kZSIsIm5ld0VuZElkeCIsIm5ld1N0YXJ0Vm5vZGUiLCJuZXdFbmRWbm9kZSIs
ImNhbk1vdmUiLCJwYXRjaFZub2RlIiwiaGFzRGF0YSIsInBvc3RwYXRjaCIsImludm9rZUluc2Vy
dEhvb2siLCJpbml0aWFsIiwiaHlkcmF0ZSIsImNoaWxkcmVuTWF0Y2giLCJob29rcyQxIiwiaXNJ
bml0aWFsUGF0Y2giLCJpc1JlYWxFbGVtZW50Iiwibm9kZVR5cGUiLCJoYXNBdHRyaWJ1dGUiLCJy
ZW1vdmVBdHRyaWJ1dGUiLCJhbmNlc3RvciIsInVwZGF0ZURpcmVjdGl2ZXMiLCJvbGREaXIiLCJk
aXIiLCJpc0NyZWF0ZSIsIm9sZERpcnMiLCJub3JtYWxpemVEaXJlY3RpdmVzJDEiLCJuZXdEaXJz
IiwiZGlyc1dpdGhJbnNlcnQiLCJkaXJzV2l0aFBvc3RwYXRjaCIsIm9sZFZhbHVlIiwiY2FsbEhv
b2skMSIsImNvbXBvbmVudFVwZGF0ZWQiLCJpbnNlcnRlZCIsImNhbGxJbnNlcnQiLCJtb2RpZmll
cnMiLCJlbXB0eU1vZGlmaWVycyIsImdldFJhd0Rpck5hbWUiLCJyYXdOYW1lIiwidXBkYXRlQXR0
cnMiLCJvbGRBdHRycyIsInNldEF0dHIiLCJpc1hsaW5rIiwicmVtb3ZlQXR0cmlidXRlTlMiLCJ4
bGlua05TIiwiZ2V0WGxpbmtQcm9wIiwiaXNFbnVtZXJhdGVkQXR0ciIsImlzQm9vbGVhbkF0dHIi
LCJpc0ZhbHN5QXR0clZhbHVlIiwic2V0QXR0cmlidXRlTlMiLCJ1cGRhdGVDbGFzcyIsIm9sZERh
dGEiLCJjbHMiLCJ0cmFuc2l0aW9uQ2xhc3MiLCJfdHJhbnNpdGlvbkNsYXNzZXMiLCJfcHJldkNs
YXNzIiwidXBkYXRlRE9NTGlzdGVuZXJzIiwiX3ZfYWRkIiwiYWRkRXZlbnRMaXN0ZW5lciIsIl92
X3JlbW92ZSIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJ1cGRhdGVET01Qcm9wcyIsIm9sZFByb3Bz
IiwiX3ZhbHVlIiwic3RyQ3VyIiwiY29tcG9zaW5nIiwibm9ybWFsaXplU3R5bGVEYXRhIiwic3R5
bGUiLCJub3JtYWxpemVTdHlsZUJpbmRpbmciLCJzdGF0aWNTdHlsZSIsImJpbmRpbmdTdHlsZSIs
InBhcnNlU3R5bGVUZXh0IiwiZ2V0U3R5bGUiLCJjaGVja0NoaWxkIiwic3R5bGVEYXRhIiwidXBk
YXRlU3R5bGUiLCJvbGRTdGF0aWNTdHlsZSIsIm9sZFN0eWxlQmluZGluZyIsIm9sZFN0eWxlIiwi
bmV3U3R5bGUiLCJzZXRQcm9wIiwiYWRkQ2xhc3MiLCJ0cmltIiwiY2xhc3NMaXN0IiwiZ2V0QXR0
cmlidXRlIiwicmVtb3ZlQ2xhc3MiLCJ0YXIiLCJyZXBsYWNlIiwibmV4dEZyYW1lIiwicmFmIiwi
YWRkVHJhbnNpdGlvbkNsYXNzIiwicmVtb3ZlVHJhbnNpdGlvbkNsYXNzIiwid2hlblRyYW5zaXRp
b25FbmRzIiwiZXhwZWN0ZWRUeXBlIiwiZ2V0VHJhbnNpdGlvbkluZm8iLCJ0aW1lb3V0IiwicHJv
cENvdW50IiwiVFJBTlNJVElPTiIsInRyYW5zaXRpb25FbmRFdmVudCIsImFuaW1hdGlvbkVuZEV2
ZW50IiwiZW5kZWQiLCJlbmQiLCJvbkVuZCIsInNldFRpbWVvdXQiLCJzdHlsZXMiLCJnZXRDb21w
dXRlZFN0eWxlIiwidHJhbnNpdGlvbmVEZWxheXMiLCJ0cmFuc2l0aW9uUHJvcCIsInRyYW5zaXRp
b25EdXJhdGlvbnMiLCJ0cmFuc2l0aW9uVGltZW91dCIsImdldFRpbWVvdXQiLCJhbmltYXRpb25E
ZWxheXMiLCJhbmltYXRpb25Qcm9wIiwiYW5pbWF0aW9uRHVyYXRpb25zIiwiYW5pbWF0aW9uVGlt
ZW91dCIsIkFOSU1BVElPTiIsImhhc1RyYW5zZm9ybSIsInRyYW5zZm9ybVJFIiwiZGVsYXlzIiwi
ZHVyYXRpb25zIiwiZCIsInRvTXMiLCJOdW1iZXIiLCJlbnRlciIsIl9sZWF2ZUNiIiwiY2FuY2Vs
bGVkIiwicmVzb2x2ZVRyYW5zaXRpb24iLCJ0cmFuc2l0aW9uIiwiX2VudGVyQ2IiLCJjc3MiLCJl
bnRlckNsYXNzIiwiZW50ZXJBY3RpdmVDbGFzcyIsImFwcGVhckNsYXNzIiwiYXBwZWFyQWN0aXZl
Q2xhc3MiLCJiZWZvcmVFbnRlciIsImFmdGVyRW50ZXIiLCJlbnRlckNhbmNlbGxlZCIsImJlZm9y
ZUFwcGVhciIsImFwcGVhciIsImFmdGVyQXBwZWFyIiwiYXBwZWFyQ2FuY2VsbGVkIiwidHJhbnNp
dGlvbk5vZGUiLCJpc0FwcGVhciIsInN0YXJ0Q2xhc3MiLCJhY3RpdmVDbGFzcyIsImJlZm9yZUVu
dGVySG9vayIsImVudGVySG9vayIsImFmdGVyRW50ZXJIb29rIiwiZW50ZXJDYW5jZWxsZWRIb29r
IiwiZXhwZWN0c0NTUyIsImlzSUU5IiwidXNlcldhbnRzQ29udHJvbCIsIm9uY2UiLCJzaG93Iiwi
cGVuZGluZ05vZGUiLCJfcGVuZGluZyIsImxlYXZlIiwicGVyZm9ybUxlYXZlIiwiYmVmb3JlTGVh
dmUiLCJsZWF2ZUNsYXNzIiwibGVhdmVBY3RpdmVDbGFzcyIsImFmdGVyTGVhdmUiLCJsZWF2ZUNh
bmNlbGxlZCIsImRlbGF5TGVhdmUiLCJkZWYkJDEiLCJhdXRvQ3NzVHJhbnNpdGlvbiIsImNhbGxl
ZCIsInNldFNlbGVjdGVkIiwiYmluZGluZyIsImlzTXVsdGlwbGUiLCJtdWx0aXBsZSIsInNlbGVj
dGVkIiwib3B0aW9uIiwiZ2V0VmFsdWUiLCJzZWxlY3RlZEluZGV4IiwiaGFzTm9NYXRjaGluZ09w
dGlvbiIsIm9uQ29tcG9zaXRpb25TdGFydCIsIm9uQ29tcG9zaXRpb25FbmQiLCJ0cmlnZ2VyIiwi
Y3JlYXRlRXZlbnQiLCJpbml0RXZlbnQiLCJkaXNwYXRjaEV2ZW50IiwibG9jYXRlTm9kZSIsImdl
dFJlYWxDaGlsZCIsImNvbXBPcHRpb25zIiwiZXh0cmFjdFRyYW5zaXRpb25EYXRhIiwiY29tcCIs
ImtleSQxIiwicGxhY2Vob2xkZXIiLCJoIiwicmF3Q2hpbGQiLCJoYXNQYXJlbnRUcmFuc2l0aW9u
IiwiY2FsbFBlbmRpbmdDYnMiLCJfbW92ZUNiIiwicmVjb3JkUG9zaXRpb24iLCJuZXdQb3MiLCJn
ZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJhcHBseVRyYW5zbGF0aW9uIiwib2xkUG9zIiwicG9zIiwi
ZHgiLCJsZWZ0IiwiZHkiLCJ0b3AiLCJtb3ZlZCIsInRyYW5zZm9ybSIsIldlYmtpdFRyYW5zZm9y
bSIsInRyYW5zaXRpb25EdXJhdGlvbiIsInNob3VsZERlY29kZSIsImNvbnRlbnQiLCJlbmNvZGVk
IiwiZGl2IiwiaW5uZXJIVE1MIiwiZGVjb2RlIiwiaHRtbCIsImRlY29kZXIiLCJkZWNvZGVBdHRy
Iiwic2hvdWxkRGVjb2RlTmV3bGluZXMiLCJubFJFIiwibHRSRSIsImd0UkUiLCJhbXBSRSIsInF1
b3RlUkUiLCJwYXJzZUhUTUwiLCJhZHZhbmNlIiwic3Vic3RyaW5nIiwicGFyc2VTdGFydFRhZyIs
InN0YXJ0VGFnT3BlbiIsImF0dHIiLCJzdGFydFRhZ0Nsb3NlIiwiYXR0cmlidXRlIiwidW5hcnlT
bGFzaCIsImhhbmRsZVN0YXJ0VGFnIiwiZXhwZWN0SFRNTCIsImxhc3RUYWciLCJpc05vblBocmFz
aW5nVGFnIiwicGFyc2VFbmRUYWciLCJjYW5CZUxlZnRPcGVuVGFnIiwidW5hcnkiLCJpc1VuYXJ5
VGFnJCQxIiwiSVNfUkVHRVhfQ0FQVFVSSU5HX0JST0tFTiIsInN0YWNrIiwibmVlZGxlIiwiaXNV
bmFyeVRhZyIsIm5vIiwiaXNTcGVjaWFsVGFnIiwic2ZjIiwic3RhY2tlZFRhZyIsInJlU3RhY2tl
ZFRhZyIsInJlQ2FjaGUiLCJSZWdFeHAiLCJlbmRUYWdMZW5ndGgiLCJyZXN0IiwiYWxsIiwiZW5k
VGFnIiwiY2hhcnMiLCJ0ZXh0RW5kIiwiY29tbWVudCIsImNvbW1lbnRFbmQiLCJjb25kaXRpb25h
bENvbW1lbnQiLCJjb25kaXRpb25hbEVuZCIsImRvY3R5cGVNYXRjaCIsImRvY3R5cGUiLCJlbmRU
YWdNYXRjaCIsImN1ckluZGV4Iiwic3RhcnRUYWdNYXRjaCIsInJlc3QkMSIsIm5leHQiLCJwYXJz
ZUZpbHRlcnMiLCJleHAiLCJwdXNoRmlsdGVyIiwiZmlsdGVycyIsImxhc3RGaWx0ZXJJbmRleCIs
InByZXYiLCJleHByZXNzaW9uIiwiaW5TaW5nbGUiLCJpbkRvdWJsZSIsImluVGVtcGxhdGVTdHJp
bmciLCJpblJlZ2V4IiwiY3VybHkiLCJzcXVhcmUiLCJwYXJlbiIsIndyYXBGaWx0ZXIiLCJwYXJz
ZVRleHQiLCJkZWxpbWl0ZXJzIiwidGFnUkUiLCJidWlsZFJlZ2V4IiwiZGVmYXVsdFRhZ1JFIiwi
dG9rZW5zIiwibGFzdEluZGV4IiwiZXhlYyIsImJhc2VXYXJuIiwibXNnIiwicGx1Y2tNb2R1bGVG
dW5jdGlvbiIsImFkZFByb3AiLCJhZGRBdHRyIiwiYWRkRGlyZWN0aXZlIiwiYXJnIiwiYWRkSGFu
ZGxlciIsImltcG9ydGFudCIsImV2ZW50cyIsIm5hdGl2ZSIsIm5hdGl2ZUV2ZW50cyIsIm5ld0hh
bmRsZXIiLCJnZXRCaW5kaW5nQXR0ciIsImdldFN0YXRpYyIsImR5bmFtaWNWYWx1ZSIsImdldEFu
ZFJlbW92ZUF0dHIiLCJzdGF0aWNWYWx1ZSIsImF0dHJzTWFwIiwiYXR0cnNMaXN0IiwicGFyc2VN
b2RlbCIsImluZGV4JDEiLCJleHByZXNzaW9uUG9zIiwiZXhwcmVzc2lvbkVuZFBvcyIsImxhc3RJ
bmRleE9mIiwiaWR4IiwiZW9mIiwiY2hyIiwiaXNTdHJpbmdTdGFydCIsInBhcnNlU3RyaW5nIiwi
cGFyc2VCcmFja2V0IiwiaW5CcmFja2V0Iiwic3RyaW5nUXVvdGUiLCJwYXJzZSIsInRlbXBsYXRl
Iiwid2FybiQxIiwid2FybiIsInBsYXRmb3JtR2V0VGFnTmFtZXNwYWNlIiwicGxhdGZvcm1NdXN0
VXNlUHJvcCIsInBsYXRmb3JtSXNQcmVUYWciLCJpc1ByZVRhZyIsInByZVRyYW5zZm9ybXMiLCJ0
cmFuc2Zvcm1zIiwicG9zdFRyYW5zZm9ybXMiLCJyb290IiwiY3VycmVudFBhcmVudCIsInByZXNl
cnZlV2hpdGVzcGFjZSIsImluVlByZSIsImluUHJlIiwiY2hlY2tSb290Q29uc3RyYWludHMiLCJp
c0lFIiwiZ3VhcmRJRVNWR0J1ZyIsImVsZW1lbnQiLCJtYWtlQXR0cnNNYXAiLCJpc0ZvcmJpZGRl
blRhZyIsImZvcmJpZGRlbiIsInByb2Nlc3NQcmUiLCJwcmUiLCJwcm9jZXNzUmF3QXR0cnMiLCJw
cm9jZXNzRm9yIiwicHJvY2Vzc0lmIiwicHJvY2Vzc09uY2UiLCJwcm9jZXNzS2V5IiwicGxhaW4i
LCJwcm9jZXNzUmVmIiwicHJvY2Vzc1Nsb3QiLCJwcm9jZXNzQ29tcG9uZW50IiwicHJvY2Vzc0F0
dHJzIiwiaWYiLCJlbHNlaWYiLCJlbHNlIiwiYWRkSWZDb25kaXRpb24iLCJibG9jayIsInByb2Nl
c3NJZkNvbmRpdGlvbnMiLCJzbG90U2NvcGUiLCJzbG90VGFyZ2V0IiwiaSQyIiwibGFzdE5vZGUi
LCJkZWNvZGVIVE1MQ2FjaGVkIiwiY2hlY2tJbkZvciIsImluTWF0Y2giLCJmb3JBbGlhc1JFIiwi
Zm9yIiwiYWxpYXMiLCJpdGVyYXRvck1hdGNoIiwiZm9ySXRlcmF0b3JSRSIsIml0ZXJhdG9yMSIs
Iml0ZXJhdG9yMiIsImZpbmRQcmV2RWxlbWVudCIsImNvbmRpdGlvbiIsImNvbmRpdGlvbnMiLCJz
bG90TmFtZSIsImNvbXBvbmVudCIsImlzUHJvcCIsImRpclJFIiwiaGFzQmluZGluZ3MiLCJwYXJz
ZU1vZGlmaWVycyIsIm1vZGlmaWVyUkUiLCJiaW5kUkUiLCJjYW1lbCIsIm9uUkUiLCJhcmdNYXRj
aCIsImFyZ1JFIiwiaWVOU0J1ZyIsImllTlNQcmVmaXgiLCJvcHRpbWl6ZSIsImlzU3RhdGljS2V5
IiwiZ2VuU3RhdGljS2V5c0NhY2hlZCIsImlzUGxhdGZvcm1SZXNlcnZlZFRhZyIsIm1hcmtTdGF0
aWNSb290cyIsImdlblN0YXRpY0tleXMkMSIsInN0YXRpYyIsInN0YXRpY0luRm9yIiwic3RhdGlj
Um9vdCIsIndhbGtUaHJvdWdoQ29uZGl0aW9uc0Jsb2NrcyIsImNvbmRpdGlvbkJsb2NrcyIsImlz
QnVpbHRJblRhZyIsImlzRGlyZWN0Q2hpbGRPZlRlbXBsYXRlRm9yIiwiZXZlcnkiLCJnZW5IYW5k
bGVycyIsImdlbkhhbmRsZXIiLCJjb2RlIiwiaXNNb3VzZUV2bmV0IiwiaXNNb3VzZUV2ZW50UkUi
LCJtb2RpZmllckNvZGUiLCJtb3VzZUV2ZW50TW9kaWZpZXJDb2RlIiwiZ2VuS2V5RmlsdGVyIiwi
aGFuZGxlckNvZGUiLCJzaW1wbGVQYXRoUkUiLCJmbkV4cFJFIiwibm9ybWFsaXplS2V5Q29kZSIs
InBhcnNlSW50IiwiYmluZCQyIiwid3JhcERhdGEiLCJnZW5lcmF0ZSIsImFzdCIsInByZXZTdGF0
aWNSZW5kZXJGbnMiLCJjdXJyZW50U3RhdGljUmVuZGVyRm5zIiwicHJldk9uY2VDb3VudCIsIm9u
Y2VDb3VudCIsImN1cnJlbnRPcHRpb25zIiwid2FybiQyIiwidHJhbnNmb3JtcyQxIiwiZGF0YUdl
bkZucyIsInBsYXRmb3JtRGlyZWN0aXZlcyQxIiwiZ2VuRWxlbWVudCIsInN0YXRpY1Byb2Nlc3Nl
ZCIsImdlblN0YXRpYyIsIm9uY2VQcm9jZXNzZWQiLCJnZW5PbmNlIiwiZm9yUHJvY2Vzc2VkIiwi
Z2VuRm9yIiwiaWZQcm9jZXNzZWQiLCJnZW5JZiIsImdlblNsb3QiLCJnZW5Db21wb25lbnQiLCJn
ZW5EYXRhIiwiZ2VuQ2hpbGRyZW4iLCJnZW5JZkNvbmRpdGlvbnMiLCJnZW5UZXJuYXJ5RXhwIiwi
c2hpZnQiLCJnZW5EaXJlY3RpdmVzIiwiZ2VuUHJvcHMiLCJnZW5TY29wZWRTbG90cyIsImdlbklu
bGluZVRlbXBsYXRlIiwibmVlZFJ1bnRpbWUiLCJoYXNSdW50aW1lIiwiZ2VuIiwiYmFzZURpcmVj
dGl2ZXMiLCJpbmxpbmVSZW5kZXJGbnMiLCJnZW5TY29wZWRTbG90Iiwic2NvcGUiLCJnZW5Ob2Rl
IiwiZ2VuVGV4dCIsInRyYW5zZm9ybVNwZWNpYWxOZXdsaW5lcyIsImNvbXBvbmVudE5hbWUiLCJj
b21waWxlJDEiLCJ0cmFuc2Zvcm1Ob2RlIiwiY2xhc3NCaW5kaW5nIiwiZ2VuRGF0YSQxIiwidHJh
bnNmb3JtTm9kZSQxIiwic3R5bGVCaW5kaW5nIiwiZ2VuRGF0YSQyIiwibW9kZWwkMSIsIl93YXJu
Iiwid2FybiQzIiwiZ2VuU2VsZWN0IiwiZ2VuQ2hlY2tib3hNb2RlbCIsImdlblJhZGlvTW9kZWwi
LCJnZW5EZWZhdWx0TW9kZWwiLCJudW1iZXIiLCJ2YWx1ZUJpbmRpbmciLCJ0cnVlVmFsdWVCaW5k
aW5nIiwiZmFsc2VWYWx1ZUJpbmRpbmciLCJnZW5Bc3NpZ25tZW50Q29kZSIsIm5lZWRDb21wb3Np
dGlvbkd1YXJkIiwidmFsdWVFeHByZXNzaW9uIiwiYXNzaWdubWVudCIsIm1vZGVsUnMiLCJjb21w
aWxlJCQxIiwiYmFzZU9wdGlvbnMiLCJjb21waWxlVG9GdW5jdGlvbnMiLCJjb21waWxlZCIsIm1h
a2VGdW5jdGlvbiIsImdldE91dGVySFRNTCIsIm91dGVySFRNTCIsImNvbnRhaW5lciIsImNsb25l
Tm9kZSIsIl9pc1NlcnZlciIsIl9TZXQiLCJjYW1lbGl6ZVJFIiwidG9VcHBlckNhc2UiLCJoeXBo
ZW5hdGVSRSIsImhhc1Byb3RvIiwiVUEiLCJuYXZpZ2F0b3IiLCJ1c2VyQWdlbnQiLCJpc0VkZ2Ui
LCJpc0FuZHJvaWQiLCJpc0lPUyIsImVudiIsIlZVRV9FTlYiLCJfX1ZVRV9ERVZUT09MU19HTE9C
QUxfSE9PS19fIiwibmV4dFRpY2tIYW5kbGVyIiwicGVuZGluZyIsImNvcGllcyIsImNhbGxiYWNr
cyIsInRpbWVyRnVuYyIsIlByb21pc2UiLCJwIiwiTXV0YXRpb25PYnNlcnZlciIsImNvdW50ZXIi
LCJvYnNlcnZlciIsInRleHROb2RlIiwiY2hhcmFjdGVyRGF0YSIsIl9yZXNvbHZlIiwiU2V0Iiwi
Zm9ybWF0Q29tcG9uZW50TmFtZSIsIm9wdGlvbk1lcmdlU3RyYXRlZ2llcyIsInNpbGVudCIsImln
bm9yZWRFbGVtZW50cyIsIl9saWZlY3ljbGVIb29rcyIsIl9tYXhVcGRhdGVDb3VudCIsInVpZCQx
Iiwic3VicyIsImFkZFN1YiIsInN1YiIsInJlbW92ZVN1YiIsImFkZERlcCIsImFycmF5UHJvdG8i
LCJhcnJheU1ldGhvZHMiLCJtZXRob2QiLCJvcmlnaW5hbCIsInJlc3VsdCIsIm9ic2VydmVBcnJh
eSIsImFycmF5S2V5cyIsImdldE93blByb3BlcnR5TmFtZXMiLCJpc1NldHRpbmdQcm9wcyIsImF1
Z21lbnQiLCJ3YWxrIiwiaXRlbXMiLCJpbnN0YW5jZURhdGEiLCJkZWZhdWx0RGF0YSIsImZyZWV6
ZSIsImRlZmluZVJlYWN0aXZlIiwidWlkJDIiLCJkZWVwIiwiYWN0aXZlIiwiZGVwcyIsIm5ld0Rl
cHMiLCJkZXBJZHMiLCJuZXdEZXBJZHMiLCJjbGVhbnVwRGVwcyIsInRoaXMkMSIsInRtcCIsIl92
Rm9yUmVtb3ZpbmciLCJyYXciLCJwYXR0ZXJuVHlwZXMiLCJLZWVwQWxpdmUiLCJpbmNsdWRlIiwi
ZXhjbHVkZSIsImNyZWF0ZWQiLCJkZXN0cm95ZWQiLCJ2ZXJzaW9uIiwidGVzdEVsIiwic3ZnIiwi
bWF0aCIsInhodG1sIiwiaXNIVE1MVGFnIiwiYmFzZU1vZHVsZXMiLCJrbGFzcyIsImNzc1RleHQi
LCJoYXNCYWNrZ3JvdW5kIiwibGlzdERlbGltaXRlciIsInByb3BlcnR5RGVsaW1pdGVyIiwiY3Nz
VmFyUkUiLCJzZXRQcm9wZXJ0eSIsIm5vcm1hbGl6ZSIsInByZWZpeGVzIiwidXBwZXIiLCJwcmVm
aXhlZCIsImhhc1RyYW5zaXRpb24iLCJvbnRyYW5zaXRpb25lbmQiLCJvbndlYmtpdHRyYW5zaXRp
b25lbmQiLCJvbmFuaW1hdGlvbmVuZCIsIm9ud2Via2l0YW5pbWF0aW9uZW5kIiwicmVxdWVzdEFu
aW1hdGlvbkZyYW1lIiwicGxhdGZvcm1Nb2R1bGVzIiwicGF0Y2gkMSIsImFjdGl2ZUVsZW1lbnQi
LCJ2bW9kZWwiLCJtb2RlbCIsIm5lZWRSZXNldCIsInNvbWUiLCJ2Iiwib3JpZ2luYWxEaXNwbGF5
IiwiZGlzcGxheSIsIl9fdk9yaWdpbmFsRGlzcGxheSIsInBsYXRmb3JtRGlyZWN0aXZlcyIsInRy
YW5zaXRpb25Qcm9wcyIsIkJvb2xlYW4iLCJtb2RlIiwiVHJhbnNpdGlvbiIsIl9sZWF2aW5nIiwi
b2xkUmF3Q2hpbGQiLCJvbGRDaGlsZCIsImRlbGF5ZWRMZWF2ZSIsIm1vdmVDbGFzcyIsIlRyYW5z
aXRpb25Hcm91cCIsInByZXZDaGlsZHJlbiIsInJhd0NoaWxkcmVuIiwidHJhbnNpdGlvbkRhdGEi
LCJrZXB0IiwicmVtb3ZlZCIsImMkMSIsImJlZm9yZVVwZGF0ZSIsInVwZGF0ZWQiLCJoYXNNb3Zl
IiwiYm9keSIsIm9mZnNldEhlaWdodCIsInByb3BlcnR5TmFtZSIsIl9oYXNNb3ZlIiwiaW5mbyIs
InBsYXRmb3JtQ29tcG9uZW50cyIsInNpbmdsZUF0dHJJZGVudGlmaWVyIiwic2luZ2xlQXR0ckFz
c2lnbiIsInNpbmdsZUF0dHJWYWx1ZXMiLCJzb3VyY2UiLCJuY25hbWUiLCJxbmFtZUNhcHR1cmUi
LCJnIiwiaXNTY3JpcHRPclN0eWxlIiwiaGFzTGFuZyIsImlzU0ZDIiwicmVnZXhFc2NhcGVSRSIs
Im9wZW4iLCJjbG9zZSIsImVzYyIsInRhYiIsInNwYWNlIiwidXAiLCJyaWdodCIsImRvd24iLCJz
dG9wIiwicHJldmVudCIsInNlbGYiLCJjdHJsIiwiYWx0IiwibWV0YSIsImNsb2FrIiwia2xhc3Mk
MSIsInN0eWxlJDEiLCJtb2R1bGVzJDEiLCJkaXJlY3RpdmVzJDEiLCJpZFRvVGVtcGxhdGUiLCJt
b3VudCIsImRvY3VtZW50RWxlbWVudCIsImNvbXBpbGUiLCJkbG9jSGFzaEVtcHR5IiwiZGxvYyIs
Il9ldmVyeSIsIml0ZXJhdG9yIiwiX2ZsYXR0ZW4iLCJmbGF0IiwiX2FzeW5jRXZlcnlTZXJpZXMi
LCJjYWxsYmFjayIsImNvbXBsZXRlZCIsIml0ZXJhdGUiLCJlcnIiLCJwYXJhbWlmeVN0cmluZyIs
InBhcmFtcyIsIm1vZCIsInBhcmFtIiwicmVnaWZ5U3RyaW5nIiwib3V0Iiwic3Vic3RyIiwiY2Fw
dHVyZXMiLCJ0ZXJtaW5hdG9yIiwicm91dGVzIiwiZGVsaW1pdGVyIiwiY2h1bmsiLCJsb2NhdGlv
biIsImxpc3RlbmVyIiwiaGlzdG9yeSIsImNoZWNrIiwib25IYXNoQ2hhbmdlZCIsImZpcmUiLCJv
bnBvcHN0YXRlIiwib25oYXNoY2hhbmdlIiwib25jaGFuZ2UiLCJvbkNoYW5nZUV2ZW50IiwiUm91
dGVyIiwiZG9jdW1lbnRNb2RlIiwiZnJhbWUiLCJ3cml0ZUZyYW1lIiwiYXR0YWNoRXZlbnQiLCJz
ZXRJbnRlcnZhbCIsInNldEhhc2giLCJwdXNoU3RhdGUiLCJ0aXRsZSIsImYiLCJnZXRFbGVtZW50
QnlJZCIsImNvbnRlbnREb2N1bWVudCIsImNvbnRlbnRXaW5kb3ciLCJ3cml0ZSIsInN5bmNIYXNo
IiwiX2hhc2giLCJfbWV0aG9kcyIsIl9pbnNlcnQiLCJpbnNlcnRFeCIsImhpc3RvcnlTdXBwb3J0
IiwiY29uZmlndXJlIiwiciIsInJvdXRlVG8iLCJuZXdVUkwiLCJ1cmwiLCJnZXRQYXRoIiwiZGlz
cGF0Y2giLCJjb252ZXJ0X2hhc2hfaW5faW5pdCIsInJlcGxhY2VTdGF0ZSIsInJ1bl9pbl9pbml0
IiwiZXhwbG9kZSIsInNldFJvdXRlIiwicm91dGUiLCJnZXRSb3V0ZSIsInBhdGhuYW1lIiwiUVVF
UllfU0VQQVJBVE9SIiwicmVjdXJzZSIsImFzeW5jIiwic3RyaWN0Iiwibm90Zm91bmQiLCJyZXNv
dXJjZSIsImh0bWw1aGlzdG9yeSIsInJ1bl9oYW5kbGVyX2luX2luaXQiLCJhZnRlciIsInRva2Vu
IiwibWF0Y2hlciIsInJvdXRlc0ZuIiwidXBkYXRlQW5kSW52b2tlIiwiZm5zIiwiaW52b2tlIiwi
cnVubGlzdCIsImludm9rZWQiLCJfaW52b2tlZCIsInJldmVyc2UiLCJ0aGlzQXJnIiwicmVnZXhw
IiwiZmlsdGVyUm91dGVzIiwiZGVlcENvcHkiLCJhcHBseUZpbHRlciIsIm5ld1JvdXRlcyIsIm1h
dGNoZWQiLCJjdXJyZW50IiwiZXhhY3QiLCJtZXRob2RUeXBlIiwicGFyZW50VHlwZSIsInBhcnQi
LCJFcnJvciIsImV4dHJhIiwiaW5zZXJ0T3JNb3VudCIsImxvY2FsIiwicmVuYW1lIiwicGFydHMi
LCJyb3V0ZVR5cGUiLCJpc1JvdXRlIiwibWVkaWFRdWVyeSIsImFscmVhZHlJbXBvcnRlZE1vZHVs
ZXMiLCJhZGRTdHlsZXNUb0RvbSIsImRvbVN0eWxlIiwic3R5bGVzSW5Eb20iLCJhZGRTdHlsZSIs
Imxpc3RUb1N0eWxlcyIsIm5ld1N0eWxlcyIsIm1lZGlhIiwic291cmNlTWFwIiwiaW5zZXJ0U3R5
bGVFbGVtZW50Iiwic3R5bGVFbGVtZW50IiwiaGVhZCIsImdldEhlYWRFbGVtZW50IiwibGFzdFN0
eWxlRWxlbWVudEluc2VydGVkQXRUb3AiLCJzdHlsZUVsZW1lbnRzSW5zZXJ0ZWRBdFRvcCIsImlu
c2VydEF0IiwiZmlyc3RDaGlsZCIsInJlbW92ZVN0eWxlRWxlbWVudCIsImNyZWF0ZVN0eWxlRWxl
bWVudCIsInNpbmdsZXRvbiIsInN0eWxlSW5kZXgiLCJzaW5nbGV0b25Db3VudGVyIiwic2luZ2xl
dG9uRWxlbWVudCIsImFwcGx5VG9TaW5nbGV0b25UYWciLCJhcHBseVRvVGFnIiwibmV3T2JqIiwi
c3R5bGVTaGVldCIsInJlcGxhY2VUZXh0IiwiY3NzTm9kZSIsInNvdXJjZXMiLCJidG9hIiwidW5l
c2NhcGUiLCJlbmNvZGVVUklDb21wb25lbnQiLCJtZW1vaXplIiwibWVtbyIsImlzT2xkSUUiLCJn
ZXRFbGVtZW50c0J5VGFnTmFtZSIsIm5ld0xpc3QiLCJtYXlSZW1vdmUiLCJ0ZXh0U3RvcmUiLCJy
ZXBsYWNlbWVudCJdLCJtYXBwaW5ncyI6IkFBQUFBLGNBQWMsRUFBRSxJQUNULENBRUQsU0FBU0Ms
RUFBUUMsRUFBU0MsSUNIaEMsU0FBQUM7Ozs7O0FBS0EsWUFPQSxTQUFBQyxHQUFBQyxHQUNBLGFB
QUFBLEVBQ0EsR0FDQSxnQkFBQUEsR0FDQUMsS0FBQUMsVUFBQUYsRUFBQSxRQUNBRyxPQUFBSCxH
QU9BLFFBQUFJLEdBQUFKLEdBQ0EsR0FBQUssR0FBQUMsV0FBQU4sRUFBQSxHQUNBLE9BQUFLLElB
QUEsSUFBQUEsSUFBQUwsRUFPQSxRQUFBTyxHQUNBQyxFQUNBQyxHQUlBLE9BRkFDLEdBQUFDLE9B
QUFDLE9BQUEsTUFDQUMsRUFBQUwsRUFBQU0sTUFBQSxLQUNBQyxFQUFBLEVBQWlCQSxFQUFBRixF
QUFBRyxPQUFpQkQsSUFDbENMLEVBQUFHLEVBQUFFLEtBQUEsQ0FFQSxPQUFBTixHQUNBLFNBQUFU
LEdBQXNCLE1BQUFVLEdBQUFWLEVBQUFpQixnQkFDdEIsU0FBQWpCLEdBQXNCLE1BQUFVLEdBQUFW
LElBV3RCLFFBQUFrQixHQUFBQyxFQUFBQyxHQUNBLEdBQUFELEVBQUFILE9BQUEsQ0FDQSxHQUFB
SyxHQUFBRixFQUFBRyxRQUFBRixFQUNBLElBQUFDLEdBQUEsRUFDQSxNQUFBRixHQUFBSSxPQUFB
RixFQUFBLElBU0EsUUFBQUcsR0FBQUMsRUFBQUMsR0FDQSxNQUFBQyxJQUFBQyxLQUFBSCxFQUFB
QyxHQU1BLFFBQUFHLEdBQUFDLEdBQ0Esc0JBQUFBLElBQUEsZ0JBQUFBLEdBTUEsUUFBQUMsR0FB
QUMsR0FDQSxHQUFBQyxHQUFBdEIsT0FBQUMsT0FBQSxLQUNBLGlCQUFBSixHQUNBLEdBQUEwQixH
QUFBRCxFQUFBekIsRUFDQSxPQUFBMEIsS0FBQUQsRUFBQXpCLEdBQUF3QixFQUFBeEIsS0FpQ0Es
UUFBQTJCLEdBQUFILEVBQUFJLEdBQ0EsUUFBQUMsR0FBQUMsR0FDQSxHQUFBQyxHQUFBQyxVQUFB
eEIsTUFDQSxPQUFBdUIsR0FDQUEsRUFBQSxFQUNBUCxFQUFBUyxNQUFBTCxFQUFBSSxXQUNBUixF
QUFBSixLQUFBUSxFQUFBRSxHQUNBTixFQUFBSixLQUFBUSxHQUlBLE1BREFDLEdBQUFLLFFBQUFW
LEVBQUFoQixPQUNBcUIsRUFNQSxRQUFBTSxHQUFBOUIsRUFBQStCLEdBQ0FBLEtBQUEsQ0FHQSxL
QUZBLEdBQUE3QixHQUFBRixFQUFBRyxPQUFBNEIsRUFDQUMsRUFBQSxHQUFBQyxPQUFBL0IsR0FD
QUEsS0FDQThCLEVBQUE5QixHQUFBRixFQUFBRSxFQUFBNkIsRUFFQSxPQUFBQyxHQU1BLFFBQUFF
LEdBQUFDLEVBQUFDLEdBQ0EsT0FBQXZCLEtBQUF1QixHQUNBRCxFQUFBdEIsR0FBQXVCLEVBQUF2
QixFQUVBLE9BQUFzQixHQVFBLFFBQUFFLEdBQUF6QixHQUNBLGNBQUFBLEdBQUEsZ0JBQUFBLEdB
U0EsUUFBQTBCLEdBQUExQixHQUNBLE1BQUEyQixJQUFBeEIsS0FBQUgsS0FBQTRCLEdBTUEsUUFB
QUMsR0FBQW5DLEdBRUEsT0FEQW9DLE1BQ0F4QyxFQUFBLEVBQWlCQSxFQUFBSSxFQUFBSCxPQUFn
QkQsSUFDakNJLEVBQUFKLElBQ0FnQyxFQUFBUSxFQUFBcEMsRUFBQUosR0FHQSxPQUFBd0MsR0FN
QSxRQUFBQyxNQVVBLFFBQUFDLEdBQUFDLEdBQ0EsTUFBQUEsR0FBQUMsT0FBQSxTQUFBQyxFQUFB
QyxHQUNBLE1BQUFELEdBQUFFLE9BQUFELEVBQUFFLHFCQUNHQyxLQUFBLEtBT0gsUUFBQUMsR0FB
QTNCLEVBQUE0QixHQUVBLE1BQUE1QixJQUFBNEIsTUFDQWhCLEVBQUFaLEtBQUFZLEVBQUFnQixL
QUNBakUsS0FBQUMsVUFBQW9DLEtBQUFyQyxLQUFBQyxVQUFBZ0UsR0FNQSxRQUFBQyxHQUFBaEQs
RUFBQW5CLEdBQ0EsT0FBQWUsR0FBQSxFQUFpQkEsRUFBQUksRUFBQUgsT0FBZ0JELElBQ2pDLEdB
QUFrRCxFQUFBOUMsRUFBQUosR0FBQWYsR0FBa0MsTUFBQWUsRUFFbEMsVUFRQSxRQUFBcUQsR0FB
QTVELEdBQ0EsR0FBQTZELElBQUE3RCxFQUFBLElBQUE4RCxXQUFBLEVBQ0EsYUFBQUQsR0FBQSxL
QUFBQSxFQU1BLFFBQUFFLEdBQUE5QyxFQUFBQyxFQUFBMUIsRUFBQXdFLEdBQ0E3RCxPQUFBOEQs
ZUFBQWhELEVBQUFDLEdBQ0FJLE1BQUE5QixFQUNBd0UsZUFDQUUsVUFBQSxFQUNBQyxjQUFBLElB
UUEsUUFBQUMsR0FBQUMsR0FDQSxJQUFBQyxHQUFBQyxLQUFBRixHQUFBLENBR0EsR0FBQUcsR0FB
QUgsRUFBQS9ELE1BQUEsSUFDQSxpQkFBQVcsR0FDQSxPQUFBVixHQUFBLEVBQXFCQSxFQUFBaUUs
RUFBQWhFLE9BQXFCRCxJQUFBLENBQzFDLElBQUFVLEVBQW1CLE1BQ25CQSxLQUFBdUQsRUFBQWpF
LElBRUEsTUFBQVUsS0E0Q0EsUUFBQXdELEdBQUFDLEdBQ0Esb0JBQUFILEtBQUFHLEVBQUE5QixZ
QThRQSxRQUFBK0IsR0FBQUMsR0FDQUMsR0FBQUMsUUFBbUJDLEdBQUFDLEtBQUFILEdBQUFDLFFB
Q25CRCxHQUFBQyxPQUFBRixFQUdBLFFBQUFLLEtBQ0FKLEdBQUFDLE9BQUFDLEdBQUFHLE1Bb0hB
LFFBQUFDLEdBQUFMLEVBQUFNLEdBRUFOLEVBQUFPLFVBQUFELEVBVUEsUUFBQUUsR0FBQVIsRUFB
QU0sRUFBQWhDLEdBQ0EsT0FBQTdDLEdBQUEsRUFBQXdCLEVBQUFxQixFQUFBNUMsT0FBa0NELEVB
QUF3QixFQUFPeEIsSUFBQSxDQUN6QyxHQUFBVyxHQUFBa0MsRUFBQTdDLEVBQ0F3RCxHQUFBZSxF
QUFBNUQsRUFBQWtFLEVBQUFsRSxLQVNBLFFBQUFxRSxHQUFBakUsR0FDQSxHQUFBb0IsRUFBQXBC
LEdBQUEsQ0FHQSxHQUFBa0UsRUFZQSxPQVhBeEUsR0FBQU0sRUFBQSxXQUFBQSxFQUFBbUUsaUJB
QUFDLElBQ0FGLEVBQUFsRSxFQUFBbUUsT0FFQUUsR0FBQUMsZ0JBQ0FDLE9BQ0F2RCxNQUFBd0Qs
UUFBQXhFLElBQUFxQixFQUFBckIsS0FDQW5CLE9BQUE0RixhQUFBekUsS0FDQUEsRUFBQTBFLFNB
RUFSLEVBQUEsR0FBQUUsSUFBQXBFLElBRUFrRSxHQU1BLFFBQUFTLEdBQ0FoRixFQUNBQyxFQUNB
MUIsRUFDQTBHLEdBRUEsR0FBQUMsR0FBQSxHQUFBdEIsSUFFQXVCLEVBQUFqRyxPQUFBa0cseUJB
QUFwRixFQUFBQyxFQUNBLEtBQUFrRixLQUFBakMsZ0JBQUEsR0FLQSxHQUFBbUMsR0FBQUYsS0FB
QUcsSUFDQUMsRUFBQUosS0FBQUssSUFFQUMsRUFBQW5CLEVBQUEvRixFQUNBVyxRQUFBOEQsZUFB
QWhELEVBQUFDLEdBQ0E4QyxZQUFBLEVBQ0FHLGNBQUEsRUFDQW9DLElBQUEsV0FDQSxHQUFBakYs
R0FBQWdGLElBQUFsRixLQUFBSCxHQUFBekIsQ0FVQSxPQVRBcUYsSUFBQUMsU0FDQXFCLEVBQUFR
LFNBQ0FELEdBQ0FBLEVBQUFQLElBQUFRLFNBRUFyRSxNQUFBd0QsUUFBQXhFLElBQ0FzRixFQUFB
dEYsSUFHQUEsR0FFQW1GLElBQUEsU0FBQUksR0FDQSxHQUFBdkYsR0FBQWdGLElBQUFsRixLQUFB
SCxHQUFBekIsQ0FFQXFILEtBQUF2RixHQUFBdUYsT0FBQXZGLFFBT0FrRixFQUNBQSxFQUFBcEYs
S0FBQUgsRUFBQTRGLEdBRUFySCxFQUFBcUgsRUFFQUgsRUFBQW5CLEVBQUFzQixHQUNBVixFQUFB
VyxjQVVBLFFBQUFMLEdBQUF4RixFQUFBQyxFQUFBMUIsR0FDQSxHQUFBOEMsTUFBQXdELFFBQUE3
RSxHQUdBLE1BRkFBLEdBQUFULE9BQUF1RyxLQUFBQyxJQUFBL0YsRUFBQVQsT0FBQVUsR0FDQUQs
RUFBQUYsT0FBQUcsRUFBQSxFQUFBMUIsR0FDQUEsQ0FFQSxJQUFBd0IsRUFBQUMsRUFBQUMsR0FF
QSxZQURBRCxFQUFBQyxHQUFBMUIsRUFHQSxJQUFBZ0csR0FBQXZFLEVBQUF3RSxNQUNBLE1BQUF4
RSxFQUFBK0UsUUFBQVIsS0FBQXlCLFNBT0EsTUFBQXpCLElBSUFTLEVBQUFULEVBQUFsRSxNQUFB
SixFQUFBMUIsR0FDQWdHLEVBQUFXLElBQUFXLFNBQ0F0SCxRQUxBeUIsRUFBQUMsR0FBQTFCLEdB
V0EsUUFBQTBILEdBQUFqRyxFQUFBQyxHQUNBLEdBQUFzRSxHQUFBdkUsRUFBQXdFLE1BQ0F4RSxH
QUFBK0UsUUFBQVIsS0FBQXlCLFNBT0FqRyxFQUFBQyxFQUFBQyxXQUdBRCxHQUFBQyxHQUNBc0Us
R0FHQUEsRUFBQVcsSUFBQVcsVUFPQSxRQUFBRixHQUFBdEYsR0FDQSxPQUFBNkYsR0FBQSxPQUFB
NUcsRUFBQSxFQUFBd0IsRUFBQVQsRUFBQWQsT0FBaURELEVBQUF3QixFQUFPeEIsSUFDeEQ0RyxF
QUFBN0YsRUFBQWYsR0FDQTRHLEtBQUExQixRQUFBMEIsRUFBQTFCLE9BQUFVLElBQUFRLFNBQ0Fy
RSxNQUFBd0QsUUFBQXFCLElBQ0FQLEVBQUFPLEdBZ0NBLFFBQUFDLEdBQUE1RSxFQUFBNkUsR0FD
QSxJQUFBQSxFQUFjLE1BQUE3RSxFQUdkLFFBRkF0QixHQUFBb0csRUFBQUMsRUFDQW5FLEVBQUFq
RCxPQUFBaUQsS0FBQWlFLEdBQ0E5RyxFQUFBLEVBQWlCQSxFQUFBNkMsRUFBQTVDLE9BQWlCRCxJ
QUNsQ1csRUFBQWtDLEVBQUE3QyxHQUNBK0csRUFBQTlFLEVBQUF0QixHQUNBcUcsRUFBQUYsRUFB
QW5HLEdBQ0FGLEVBQUF3QixFQUFBdEIsR0FFS3lCLEVBQUEyRSxJQUFBM0UsRUFBQTRFLElBQ0xI
LEVBQUFFLEVBQUFDLEdBRkFkLEVBQUFqRSxFQUFBdEIsRUFBQXFHLEVBS0EsT0FBQS9FLEdBNERB
LFFBQUFnRixHQUNBQyxFQUNBQyxHQUVBLE1BQUFBLEdBQ0FELEVBQ0FBLEVBQUFuRSxPQUFBb0Us
R0FDQXBGLE1BQUF3RCxRQUFBNEIsR0FDQUEsR0FDQUEsR0FDQUQsRUFjQSxRQUFBRSxHQUFBRixF
QUFBQyxHQUNBLEdBQUEzRSxHQUFBNUMsT0FBQUMsT0FBQXFILEdBQUEsS0FDQSxPQUFBQyxHQUNB
bkYsRUFBQVEsRUFBQTJFLEdBQ0EzRSxFQTBFQSxRQUFBNkUsR0FBQUMsR0FDQSxHQUFBQyxHQUFB
RCxFQUFBQyxLQUNBLElBQUFBLEVBQUEsQ0FDQSxHQUNBdkgsR0FBQWYsRUFBQXVJLEVBREFoRixJ
QUVBLElBQUFULE1BQUF3RCxRQUFBZ0MsR0FFQSxJQURBdkgsRUFBQXVILEVBQUF0SCxPQUNBRCxL
QUNBZixFQUFBc0ksRUFBQXZILEdBQ0EsZ0JBQUFmLEtBQ0F1SSxFQUFBQyxHQUFBeEksR0FDQXVE
LEVBQUFnRixJQUFxQkUsS0FBQSxXQUtsQixJQUFBdEYsRUFBQW1GLEdBQ0gsT0FBQTVHLEtBQUE0
RyxHQUNBdEksRUFBQXNJLEVBQUE1RyxHQUNBNkcsRUFBQUMsR0FBQTlHLEdBQ0E2QixFQUFBZ0Ys
R0FBQXBGLEVBQUFuRCxHQUNBQSxHQUNXeUksS0FBQXpJLEVBR1hxSSxHQUFBQyxNQUFBL0UsR0FN
QSxRQUFBbUYsR0FBQUwsR0FDQSxHQUFBTSxHQUFBTixFQUFBTyxVQUNBLElBQUFELEVBQ0EsT0FB
QWpILEtBQUFpSCxHQUFBLENBQ0EsR0FBQXBFLEdBQUFvRSxFQUFBakgsRUFDQSxtQkFBQTZDLEtB
Q0FvRSxFQUFBakgsSUFBcUJtSCxLQUFBdEUsRUFBQXVFLE9BQUF2RSxLQVVyQixRQUFBd0UsR0FD
QUMsRUFDQUMsRUFDQUMsR0FnQ0EsUUFBQUMsR0FBQXpILEdBQ0EsR0FBQTBILEdBQUFDLEdBQUEz
SCxJQUFBNEgsRUFDQWpCLEdBQUEzRyxHQUFBMEgsRUFBQUosRUFBQXRILEdBQUF1SCxFQUFBdkgs
R0FBQXdILEVBQUF4SCxHQTdCQTBHLEVBQUFhLEdBQ0FQLEVBQUFPLEVBQ0EsSUFBQU0sR0FBQU4s
RUFBQU8sT0FNQSxJQUxBRCxJQUNBUCxFQUFBLGtCQUFBTyxHQUNBUixFQUFBQyxFQUFBTyxFQUFB
bEIsUUFBQWEsR0FDQUgsRUFBQUMsRUFBQU8sRUFBQUwsSUFFQUQsRUFBQVEsT0FDQSxPQUFBMUks
R0FBQSxFQUFBd0IsRUFBQTBHLEVBQUFRLE9BQUF6SSxPQUE0Q0QsRUFBQXdCLEVBQU94QixJQUFB
LENBQ25ELEdBQUEySSxHQUFBVCxFQUFBUSxPQUFBMUksRUFDQTJJLEdBQUFDLG9CQUFBQyxNQUNB
RixJQUFBckIsU0FFQVcsRUFBQUQsRUFBQUMsRUFBQVUsRUFBQVIsR0FHQSxHQUNBeEgsR0FEQTJH
LElBRUEsS0FBQTNHLElBQUFzSCxHQUNBRyxFQUFBekgsRUFFQSxLQUFBQSxJQUFBdUgsR0FDQXpI
LEVBQUF3SCxFQUFBdEgsSUFDQXlILEVBQUF6SCxFQU9BLE9BQUEyRyxHQVFBLFFBQUF3QixHQUNB
eEIsRUFDQUksRUFDQXFCLEVBQ0FDLEdBR0EsbUJBQUFELEdBQUEsQ0FHQSxHQUFBRSxHQUFBM0Is
RUFBQUksR0FDQWxGLEVBQUF5RyxFQUFBRixJQUVBRSxFQUFBeEIsR0FBQXNCLEtBRUFFLEVBQUFD
LEdBQUF6QixHQUFBc0IsSUFPQSxPQUFBdkcsSUFLQSxRQUFBMkcsR0FDQXhJLEVBQ0F5SSxFQUNB
QyxFQUNBbEIsR0FFQSxHQUFBbUIsR0FBQUYsRUFBQXpJLEdBQ0E0SSxHQUFBOUksRUFBQTRJLEVB
QUExSSxHQUNBSSxFQUFBc0ksRUFBQTFJLEVBVUEsSUFSQTZJLEVBQUFGLEVBQUE1QixRQUNBNkIs
SUFBQTlJLEVBQUE2SSxFQUFBLFdBQ0F2SSxHQUFBLEVBQ0ssS0FBQUEsT0FBQTBJLEdBQUE5SSxL
QUNMSSxHQUFBLElBSUEySSxTQUFBM0ksRUFBQSxDQUNBQSxFQUFBNEksRUFBQXhCLEVBQUFtQixF
QUFBM0ksRUFHQSxJQUFBaUosR0FBQXhFLEdBQUFDLGFBQ0FELElBQUFDLGVBQUEsRUFDQUwsRUFB
QWpFLEdBQ0FxRSxHQUFBQyxjQUFBdUUsRUFLQSxNQUFBN0ksR0FNQSxRQUFBNEksR0FBQXhCLEVB
QUFtQixFQUFBM0ksR0FFQSxHQUFBRixFQUFBNkksRUFBQSxZQUdBLEdBQUE5RixHQUFBOEYsRUFB
QU8sT0FZQSxPQVZBMUgsR0FBQXFCLEdBVUEyRSxLQUFBMkIsU0FBQVQsV0FDQUssU0FBQXZCLEVB
QUEyQixTQUFBVCxVQUFBMUksSUFDQStJLFNBQUF2QixFQUFBeEgsR0FDQXdILEVBQUF4SCxHQUdB
LGtCQUFBNkMsSUFBQThGLEVBQUE1QixPQUFBcUMsU0FDQXZHLEVBQUEzQyxLQUFBc0gsR0FDQTNF
LEdBd0ZBLFFBQUF3RyxHQUFBL0ksR0FDQSxHQUFBZ0osR0FBQWhKLEtBQUFvQixXQUFBNEgsTUFB
QSxxQkFDQSxPQUFBQSxNQUFBLEdBR0EsUUFBQVQsR0FBQXZJLEdBQ0EsSUFBQWMsTUFBQXdELFFB
QUF0RSxHQUNBLGtCQUFBK0ksRUFBQS9JLEVBRUEsUUFBQWpCLEdBQUEsRUFBQWtLLEVBQUFqSixF
QUFBaEIsT0FBa0NELEVBQUFrSyxFQUFTbEssSUFDM0MsZUFBQWdLLEVBQUEvSSxFQUFBakIsSUFD
QSxRQUlBLFVBMkhBLFFBQUFtSyxLQUNBQyxHQUFBbkssT0FBQSxFQUNBb0ssTUFJQUMsR0FBQUMs
SUFBQSxFQU1BLFFBQUFDLEtBZUEsSUFkQUQsSUFBQSxFQVVBSCxHQUFBSyxLQUFBLFNBQUFsSixF
QUFBNEIsR0FBOEIsTUFBQTVCLEdBQUF3SCxHQUFBNUYsRUFBQTRGLEtBSTlCekksR0FBQSxFQUFp
QkEsR0FBQThKLEdBQUFuSyxPQUFzQkssS0FBQSxDQUN2QyxHQUFBb0ssR0FBQU4sR0FBQTlKLElB
Q0F5SSxFQUFBMkIsRUFBQTNCLEVBQ0FzQixJQUFBdEIsR0FBQSxLQUNBMkIsRUFBQUMsTUFvQkFD
LElBQUFDLEdBQUFELFVBQ0FBLEdBQUFFLEtBQUEsU0FHQVgsSUFRQSxRQUFBWSxHQUFBTCxHQUNB
LEdBQUEzQixHQUFBMkIsRUFBQTNCLEVBQ0EsVUFBQXNCLEdBQUF0QixHQUFBLENBRUEsR0FEQXNC
LEdBQUF0QixJQUFBLEVBQ0F3QixHQUVLLENBSUwsSUFEQSxHQUFBdkssR0FBQW9LLEdBQUFuSyxP
QUFBLEVBQ0FELEdBQUEsR0FBQW9LLEdBQUFwSyxHQUFBK0ksR0FBQTJCLEVBQUEzQixJQUNBL0ks
R0FFQW9LLElBQUE1SixPQUFBZ0csS0FBQUMsSUFBQXpHLEVBQUFNLElBQUEsSUFBQW9LLE9BUkFO
LElBQUEzRixLQUFBaUcsRUFXQUosTUFDQUEsSUFBQSxFQUNBVSxHQUFBUixLQXVOQSxRQUFBUyxH
QUFBaE0sR0FDQWlNLEdBQUFDLFFBQ0FDLEVBQUFuTSxFQUFBaU0sSUFHQSxRQUFBRSxHQUFBbk0s
RUFBQW9NLEdBQ0EsR0FBQXJMLEdBQUE2QyxFQUNBeUksRUFBQXZKLE1BQUF3RCxRQUFBdEcsRUFD
QSxLQUFBcU0sR0FBQW5KLEVBQUFsRCxLQUFBVyxPQUFBNEYsYUFBQXZHLEdBQUEsQ0FHQSxHQUFB
QSxFQUFBaUcsT0FBQSxDQUNBLEdBQUFxRyxHQUFBdE0sRUFBQWlHLE9BQUFVLElBQUFtRCxFQUNB
LElBQUFzQyxFQUFBRyxJQUFBRCxHQUNBLE1BRUFGLEdBQUFJLElBQUFGLEdBRUEsR0FBQUQsRUFF
QSxJQURBdEwsRUFBQWYsRUFBQWdCLE9BQ0FELEtBQWlCb0wsRUFBQW5NLEVBQUFlLEdBQUFxTCxP
QUlqQixLQUZBeEksRUFBQWpELE9BQUFpRCxLQUFBNUQsR0FDQWUsRUFBQTZDLEVBQUE1QyxPQUNB
RCxLQUFpQm9MLEVBQUFuTSxFQUFBNEQsRUFBQTdDLElBQUFxTCxJQU1qQixRQUFBSyxHQUFBdkQs
R0FDQUEsRUFBQXdELGFBQ0FDLEVBQUF6RCxHQUNBMEQsRUFBQTFELEdBQ0EyRCxFQUFBM0QsR0FD
QTRELEVBQUE1RCxHQUNBNkQsR0FBQTdELEdBS0EsUUFBQXlELEdBQUF6RCxHQUNBLEdBQUFaLEdB
QUFZLEVBQUEyQixTQUFBdkMsS0FDQSxJQUFBQSxFQUFBLENBQ0EsR0FBQThCLEdBQUFsQixFQUFB
MkIsU0FBQVQsY0FDQXhHLEVBQUFzRixFQUFBMkIsU0FBQW1DLFVBQUFyTSxPQUFBaUQsS0FBQTBF
LEdBQ0EyRSxHQUFBL0QsRUFBQWdFLE9BRUEvRyxJQUFBQyxjQUFBNkcsQ0EyQkEsUUExQkFFLEdB
QUEsU0FBQXBNLEdBQ0EsR0FBQVcsR0FBQWtDLEVBQUE3QyxFQXFCQTBGLEdBQUF5QyxFQUFBeEgs
RUFBQXdJLEVBQUF4SSxFQUFBNEcsRUFBQThCLEVBQUFsQixLQUlBbkksRUFBQSxFQUFtQkEsRUFB
QTZDLEVBQUE1QyxPQUFpQkQsSUFBQW9NLEVBQUFwTSxFQUNwQ29GLElBQUFDLGVBQUEsR0FJQSxR
QUFBd0csR0FBQTFELEdBQ0EsR0FBQWtFLEdBQUFsRSxFQUFBMkIsU0FBQXVDLElBQ0FBLEdBQUFs
RSxFQUFBbUUsTUFBQSxrQkFBQUQsR0FDQUEsRUFBQXhMLEtBQUFzSCxHQUNBa0UsTUFDQWpLLEVB
QUFpSyxLQUNBQSxLQVVBLEtBSEEsR0FBQXhKLEdBQUFqRCxPQUFBaUQsS0FBQXdKLEdBQ0E5RSxF
QUFBWSxFQUFBMkIsU0FBQXZDLE1BQ0F2SCxFQUFBNkMsRUFBQTVDLE9BQ0FELEtBQ0F1SCxHQUFB
OUcsRUFBQThHLEVBQUExRSxFQUFBN0MsS0FPQXVNLEdBQUFwRSxFQUFBdEYsRUFBQTdDLEdBSUFn
RixHQUFBcUgsR0FDQUEsRUFBQW5ILFFBQUFtSCxFQUFBbkgsT0FBQXdCLFVBVUEsUUFBQW9GLEdB
QUEzRCxHQUNBLEdBQUFxRSxHQUFBckUsRUFBQTJCLFNBQUEwQyxRQUNBLElBQUFBLEVBQ0EsT0FB
QTdMLEtBQUE2TCxHQUFBLENBQ0EsR0FBQUMsR0FBQUQsRUFBQTdMLEVBQ0EsbUJBQUE4TCxJQUNB
QyxHQUFBMUcsSUFBQTJHLEVBQUFGLEVBQUF0RSxHQUNBdUUsR0FBQXhHLElBQUF6RCxJQUVBaUss
R0FBQTFHLElBQUF5RyxFQUFBekcsSUFDQXlHLEVBQUF2TCxTQUFBLEVBQ0F5TCxFQUFBRixFQUFB
ekcsSUFBQW1DLEdBQ0EvRyxFQUFBcUwsRUFBQXpHLElBQUFtQyxHQUNBMUYsRUFDQWlLLEdBQUF4
RyxJQUFBdUcsRUFBQXZHLElBQ0E5RSxFQUFBcUwsRUFBQXZHLElBQUFpQyxHQUNBMUYsR0FFQTdD
LE9BQUE4RCxlQUFBeUUsRUFBQXhILEVBQUErTCxLQUtBLFFBQUFDLEdBQUE1RyxFQUFBNkcsR0FD
QSxHQUFBbEMsR0FBQSxHQUFBbUMsSUFBQUQsRUFBQTdHLEVBQUF0RCxHQUNBcUssTUFBQSxHQUVB
LG1CQU9BLE1BTkFwQyxHQUFBcUMsT0FDQXJDLEVBQUFzQyxXQUVBMUksR0FBQUMsUUFDQW1HLEVB
QUF0RSxTQUVBc0UsRUFBQTNKLE9BSUEsUUFBQWdMLEdBQUE1RCxHQUNBLEdBQUE4RSxHQUFBOUUs
RUFBQTJCLFNBQUFtRCxPQUNBLElBQUFBLEVBQ0EsT0FBQXRNLEtBQUFzTSxHQUNBOUUsRUFBQXhI
LEdBQUEsTUFBQXNNLEVBQUF0TSxHQUFBOEIsRUFBQXJCLEVBQUE2TCxFQUFBdE0sR0FBQXdILEdB
WUEsUUFBQTZELElBQUE3RCxHQUNBLEdBQUErRSxHQUFBL0UsRUFBQTJCLFNBQUFvRCxLQUNBLElB
QUFBLEVBQ0EsT0FBQXZNLEtBQUF1TSxHQUFBLENBQ0EsR0FBQUMsR0FBQUQsRUFBQXZNLEVBQ0Es
SUFBQW9CLE1BQUF3RCxRQUFBNEgsR0FDQSxPQUFBbk4sR0FBQSxFQUF1QkEsRUFBQW1OLEVBQUFs
TixPQUFvQkQsSUFDM0NvTixHQUFBakYsRUFBQXhILEVBQUF3TSxFQUFBbk4sUUFHQW9OLElBQUFq
RixFQUFBeEgsRUFBQXdNLElBTUEsUUFBQUMsSUFBQWpGLEVBQUF4SCxFQUFBd00sR0FDQSxHQUFB
N0YsRUFDQWxGLEdBQUErSyxLQUNBN0YsRUFBQTZGLEVBQ0FBLGFBRUEsZ0JBQUFBLEtBQ0FBLEVB
QUFoRixFQUFBZ0YsSUFFQWhGLEVBQUFrRixPQUFBMU0sRUFBQXdNLEVBQUE3RixHQUdBLFFBQUFn
RyxJQUFBQyxHQUlBLEdBQUFDLEtBQ0FBLEdBQUF4SCxJQUFBLFdBQ0EsTUFBQXlILE1BQUFuQixP
QVdBMU0sT0FBQThELGVBQUE2SixFQUFBM0UsVUFBQSxRQUFBNEUsR0FFQUQsRUFBQTNFLFVBQUE4
RSxLQUFBeEgsRUFDQXFILEVBQUEzRSxVQUFBK0UsUUFBQWhILEVBRUE0RyxFQUFBM0UsVUFBQXlF
LE9BQUEsU0FDQU8sRUFDQUMsRUFDQXZHLEdBRUEsR0FBQWEsR0FBQXNGLElBQ0FuRyxTQUNBQSxF
QUFBd0csTUFBQSxDQUNBLElBQUFwRCxHQUFBLEdBQUFtQyxJQUFBMUUsRUFBQXlGLEVBQUFDLEVB
QUF2RyxFQUlBLE9BSEFBLEdBQUF5RyxXQUNBRixFQUFBaE4sS0FBQXNILEVBQUF1QyxFQUFBM0os
T0FFQSxXQUNBMkosRUFBQXNELGFBS0EsUUFBQXpCLElBQUFwRSxFQUFBeEgsR0FDQTBDLEVBQUEx
QyxJQUNBZixPQUFBOEQsZUFBQXlFLEVBQUF4SCxHQUNBaUQsY0FBQSxFQUNBSCxZQUFBLEVBQ0F1
QyxJQUFBLFdBQ0EsTUFBQW1DLEdBQUFtRSxNQUFBM0wsSUFFQXVGLElBQUEsU0FBQWpILEdBQ0Fr
SixFQUFBbUUsTUFBQTNMLEdBQUExQixLQWlEQSxRQUFBZ1AsSUFBQUMsR0FDQSxHQUFBQyxHQUFB
LEdBQUFDLElBQ0FGLEVBQUFHLElBQ0FILEVBQUE3QixLQUNBNkIsRUFBQUksU0FDQUosRUFBQUss
S0FDQUwsRUFBQU0sSUFDQU4sRUFBQU8sR0FDQVAsRUFBQVEsUUFDQVIsRUFBQVMsaUJBS0EsT0FI
QVIsR0FBQVMsU0FBQVYsRUFBQVUsU0FDQVQsRUFBQXhOLElBQUF1TixFQUFBdk4sSUFDQXdOLEVB
QUFVLFVBQUEsRUFDQVYsRUFHQSxRQUFBVyxJQUFBQyxHQUVBLE9BREF2TSxHQUFBLEdBQUFULE9B
QUFnTixFQUFBOU8sUUFDQUQsRUFBQSxFQUFpQkEsRUFBQStPLEVBQUE5TyxPQUFtQkQsSUFDcEN3
QyxFQUFBeEMsR0FBQWlPLEdBQUFjLEVBQUEvTyxHQUVBLE9BQUF3QyxHQUtBLFFBQUF3TSxJQUFB
eEwsRUFBQXlMLEVBQUFDLEVBQUF2TyxHQUNBQSxHQUFBc08sQ0FDQSxJQUFBRSxHQUFBM0wsRUFB
QTRMLGFBQUE1TCxFQUFBNEwsY0FDQSxLQUFBRCxFQUFBeE8sR0FBQSxDQUNBd08sRUFBQXhPLElB
QUEsQ0FDQSxJQUFBME8sR0FBQTdMLEVBQUF5TCxFQUNBSSxHQUNBN0wsRUFBQXlMLEdBQUEsV0FD
QUksRUFBQTNOLE1BQUErTCxLQUFBaE0sV0FDQXlOLEVBQUF4TixNQUFBK0wsS0FBQWhNLFlBR0Er
QixFQUFBeUwsR0FBQUMsR0FPQSxRQUFBSSxJQUNBQyxFQUNBQyxFQUNBL0QsRUFDQWdFLEVBQ0F0
SCxHQUVBLEdBQUFYLEdBQUFrSSxFQUFBQyxFQUFBMU8sRUFBQTJPLEVBQUFDLENBQ0EsS0FBQXJJ
LElBQUErSCxHQUdBLEdBRkFHLEVBQUFILEVBQUEvSCxHQUNBbUksRUFBQUgsRUFBQWhJLEdBQ0Fr
SSxFQUtLLEdBQUFDLEdBY0EsR0FBQUQsSUFBQUMsRUFDTCxHQUFBNU4sTUFBQXdELFFBQUFvSyxH
QUFBLENBQ0FBLEVBQUExUCxPQUFBeVAsRUFBQXpQLE1BQ0EsUUFBQUQsR0FBQSxFQUF1QkEsRUFB
QTJQLEVBQUExUCxPQUFnQkQsSUFBTzJQLEVBQUEzUCxHQUFBMFAsRUFBQTFQLEVBQzlDdVAsR0FB
QS9ILEdBQUFtSSxNQUVBQSxHQUFBMU8sR0FBQXlPLEVBQ0FILEVBQUEvSCxHQUFBbUksTUFwQkFF
LEdBQUEsTUFBQXJJLEVBQUFzSSxPQUFBLEdBQ0FGLEVBQUFDLEVBQUFySSxFQUFBdUksTUFBQSxH
QUFBdkksRUFDQXpGLE1BQUF3RCxRQUFBbUssR0FDQWpFLEVBQUFtRSxFQUFBRixFQUFBTSxRQUFB
QyxHQUFBUCxHQUFBRyxJQUVBSCxFQUFBTSxVQUNBL08sRUFBQXlPLEVBQ0FBLEVBQUFILEVBQUEv
SCxNQUNBa0ksRUFBQXpPLEtBQ0F5TyxFQUFBTSxRQUFBRSxHQUFBUixJQUVBakUsRUFBQW1FLEVB
QUFGLEVBQUFNLFFBQUFILFNBYUEsSUFBQXJJLElBQUFnSSxHQUNBRCxFQUFBL0gsS0FDQW9JLEVB
QUEsTUFBQXBJLEVBQUFzSSxPQUFBLEdBQUF0SSxFQUFBdUksTUFBQSxHQUFBdkksRUFDQWlJLEVB
QUFHLEVBQUFKLEVBQUFoSSxHQUFBd0ksVUFLQSxRQUFBQyxJQUFBN1AsR0FDQSxnQkFBQStQLEdB
SUEsT0FIQUMsR0FBQTNPLFVBRUE0TyxFQUFBLElBQUE1TyxVQUFBeEIsT0FDQUQsRUFBQSxFQUFt
QkEsRUFBQUksRUFBQUgsT0FBZ0JELElBQ25DcVEsRUFBQWpRLEVBQUFKLEdBQUFtUSxHQUFBL1As
RUFBQUosR0FBQTBCLE1BQUEsS0FBQTBPLElBS0EsUUFBQUYsSUFBQUksR0FDQSxnQkFBQUgsR0FD
QSxHQUFBRSxHQUFBLElBQUE1TyxVQUFBeEIsTUFDQW9RLEdBQUFDLEVBQUFyUCxHQUFBa1AsR0FB
QUcsRUFBQXJQLEdBQUFTLE1BQUEsS0FBQUQsWUFNQSxRQUFBOE8sSUFDQWpDLEVBQ0FHLEVBQ0Er
QixHQUVBLEdBQUExUCxFQUFBd04sR0FDQSxPQUFBbUMsR0FBQW5DLEdBRUEsSUFBQXZNLE1BQUF3
RCxRQUFBK0ksR0FBQSxDQUVBLE9BREE5TCxNQUNBeEMsRUFBQSxFQUFBd0IsRUFBQThNLEVBQUFy
TyxPQUF3Q0QsRUFBQXdCLEVBQU94QixJQUFBLENBQy9DLEdBQUFzRCxHQUFBZ0wsRUFBQXRPLEdB
Q0EwUSxFQUFBbE8sSUFBQXZDLE9BQUEsRUFFQThCLE9BQUF3RCxRQUFBakMsR0FDQWQsRUFBQWlD
LEtBQUEvQyxNQUFBYyxFQUFBK04sR0FBQWpOLEVBQUFtTCxHQUFBK0IsR0FBQSxRQUFBeFEsSUFD
T2MsRUFBQXdDLEdBQ1BvTixLQUFBbkMsS0FDQW1DLEVBQUFuQyxNQUFBblAsT0FBQWtFLEdBQ1Ms
S0FBQUEsR0FFVGQsRUFBQWlDLEtBQUFnTSxHQUFBbk4sSUFFT0EsWUFBQThLLE1BQ1A5SyxFQUFB
aUwsTUFBQW1DLEtBQUFuQyxLQUNBbUMsRUFBQTdCLFdBQ0E2QixFQUFBbkMsTUFBQWpMLEVBQUFp
TCxPQUlBRSxHQUNBa0MsR0FBQXJOLEVBQUFtTCxHQUdBbkwsRUFBQStLLEtBQUEsTUFBQS9LLEVB
QUEzQyxLQUFBLE1BQUE2UCxJQUNBbE4sRUFBQTNDLElBQUEsVUFBQTZQLEVBQUEsSUFBQXhRLEVB
QUEsTUFFQXdDLEVBQUFpQyxLQUFBbkIsS0FJQSxNQUFBZCxJQUlBLFFBQUFpTyxJQUFBeFIsR0FD
QSxVQUFBbVAsSUFBQTFFLHFCQUFBdEssT0FBQUgsSUFHQSxRQUFBMFIsSUFBQXpDLEVBQUFPLEdB
Q0EsR0FBQVAsRUFBQUcsTUFBQUgsRUFBQU8sS0FDQVAsRUFBQU8sS0FDQVAsRUFBQUksVUFDQSxP
QUFBdE8sR0FBQSxFQUFBd0IsRUFBQTBNLEVBQUFJLFNBQUFyTyxPQUFnREQsRUFBQXdCLEVBQU94
QixJQUN2RDJRLEdBQUF6QyxFQUFBSSxTQUFBdE8sR0FBQXlPLEdBUUEsUUFBQW1DLElBQUF0QyxH
QUNBLE1BQUFBLE1BQUF1QyxPQUFBLFNBQUF2TixHQUFtRCxNQUFBQSxNQUFBcUwsbUJBQWtDLEdB
T3JGLFFBQUFtQyxJQUFBM0ksR0FDQSxHQUFBYixHQUFBYSxFQUFBMkIsU0FHQTdCLEVBQUFYLEVB
QUFXLE1BQ0EsSUFBQUEsSUFBQVgsRUFBQXlKLFNBQUEsQ0FDQSxLQUFBOUksRUFBQTZCLFNBQUFp
SCxVQUFBOUksRUFBQWtFLFNBQ0FsRSxJQUFBa0UsT0FFQWxFLEdBQUErSSxVQUFBdk0sS0FBQTBE
LEdBR0FBLEVBQUFnRSxRQUFBbEUsRUFDQUUsRUFBQThJLE1BQUFoSixJQUFBZ0osTUFBQTlJLEVB
RUFBLEVBQUE2SSxhQUNBN0ksRUFBQStJLFNBRUEvSSxFQUFBZ0osU0FBQSxLQUNBaEosRUFBQWlK
LFdBQUEsRUFDQWpKLEVBQUFrSixZQUFBLEVBQ0FsSixFQUFBbUosY0FBQSxFQUNBbkosRUFBQW9K
LG1CQUFBLEVBR0EsUUFBQUMsSUFBQWpFLEdBQ0FBLEVBQUEzRSxVQUFBNkksT0FBQSxTQUNBQyxF
QUNBQyxHQUVBLEdBQUF4SixHQUFBc0YsSUFnQ0EsT0EvQkF0RixHQUFBeUosSUFBQUYsRUFDQXZK
LEVBQUEyQixTQUFBK0gsU0FDQTFKLEVBQUEyQixTQUFBK0gsT0FBQUMsSUFrQkFDLEdBQUE1SixF
QUFBLGVBQ0FBLEVBQUFnSixTQUFBLEdBQUF0RSxJQUFBMUUsRUFBQSxXQUNBQSxFQUFBNkosUUFB
QTdKLEVBQUE4SixVQUFBTixJQUNLbFAsR0FDTGtQLEdBQUEsRUFHQSxNQUFBeEosRUFBQStKLFNB
Q0EvSixFQUFBa0osWUFBQSxFQUNBVSxHQUFBNUosRUFBQSxZQUVBQSxHQUdBb0YsRUFBQTNFLFVB
QUFvSixRQUFBLFNBQUE5RCxFQUFBeUQsR0FDQSxHQUFBeEosR0FBQXNGLElBQ0F0RixHQUFBa0os
WUFDQVUsR0FBQTVKLEVBQUEsZUFFQSxJQUFBZ0ssR0FBQWhLLEVBQUF5SixJQUNBUSxFQUFBQyxF
QUNBQSxJQUFBbEssQ0FDQSxJQUFBbUssR0FBQW5LLEVBQUFvSyxNQUNBcEssR0FBQW9LLE9BQUFy
RSxFQUNBb0UsRUFLQW5LLEVBQUF5SixJQUFBekosRUFBQXFLLFVBQUFGLEVBQUFwRSxHQUZBL0Ys
RUFBQXlKLElBQUF6SixFQUFBcUssVUFBQXJLLEVBQUF5SixJQUFBMUQsRUFBQXlELEdBSUFVLEdB
QUFELEVBRUFELElBQ0FBLEVBQUFNLFFBQUEsTUFFQXRLLEVBQUF5SixNQUNBekosRUFBQXlKLElB
QUFhLFFBQUF0SyxHQUdBQSxFQUFBK0osUUFBQS9KLEVBQUFnRSxTQUFBaEUsRUFBQStKLFNBQUEv
SixFQUFBZ0UsUUFBQW9HLFNBQ0FwSyxFQUFBZ0UsUUFBQXlGLElBQUF6SixFQUFBeUosS0FFQXpK
LEVBQUFrSixZQUNBVSxHQUFBNUosRUFBQSxZQUlBb0YsRUFBQTNFLFVBQUE4SixrQkFBQSxTQUNB
ckosRUFDQXNKLEVBQ0FDLEVBQ0FDLEdBRUEsR0FBQTFLLEdBQUFzRixLQUNBcUYsS0FBQTNLLEVB
QUEyQixTQUFBaUosa0JBQUFGLEVBUUEsSUFQQTFLLEVBQUEyQixTQUFBa0osYUFBQUosRUFDQXpL
LEVBQUErSixPQUFBVSxFQUNBekssRUFBQW9LLFNBQ0FwSyxFQUFBb0ssT0FBQXRLLE9BQUEySyxH
QUVBekssRUFBQTJCLFNBQUFpSixnQkFBQUYsRUFFQXhKLEdBQUFsQixFQUFBMkIsU0FBQXZDLE1B
QUEsQ0FDQW5DLEdBQUFDLGVBQUEsQ0FLQSxRQURBNE4sR0FBQTlLLEVBQUEyQixTQUFBbUMsY0FD
QWpNLEVBQUEsRUFBcUJBLEVBQUFpVCxFQUFBaFQsT0FBcUJELElBQUEsQ0FDMUMsR0FBQVcsR0FB
QXNTLEVBQUFqVCxFQUNBbUksR0FBQXhILEdBQUF3SSxFQUFBeEksRUFBQXdILEVBQUEyQixTQUFB
dkMsTUFBQThCLEVBQUFsQixHQUVBL0MsR0FBQUMsZUFBQSxFQUlBOEMsRUFBQTJCLFNBQUFULFlB
R0EsR0FBQXNKLEVBQUEsQ0FDQSxHQUFBTyxHQUFBL0ssRUFBQTJCLFNBQUFxSixnQkFDQWhMLEdB
QUEyQixTQUFBcUosaUJBQUFSLEVBQ0F4SyxFQUFBaUwsaUJBQUFULEVBQUFPLEdBR0FKLElBQ0Ez
SyxFQUFBa0wsT0FBQUMsR0FBQVQsRUFBQTFLLEVBQUFvTCxnQkFDQXBMLEVBQUFxTCxpQkFJQWpH
LEVBQUEzRSxVQUFBNEssYUFBQSxXQUNBLEdBQUFyTCxHQUFBc0YsSUFDQXRGLEdBQUFnSixVQUNB
aEosRUFBQWdKLFNBQUFwSixVQUlBd0YsRUFBQTNFLFVBQUE2SyxTQUFBLFdBQ0EsR0FBQXRMLEdB
QUFzRixJQUNBLEtBQUF0RixFQUFBb0osa0JBQUEsQ0FHQVEsR0FBQTVKLEVBQUEsaUJBQ0FBLEVB
QUFvSixtQkFBQSxDQUVBLElBQUF0SixHQUFBRSxFQUFBZ0UsU0FDQWxFLEtBQUFzSixtQkFBQXBK
LEVBQUEyQixTQUFBaUgsVUFDQTVRLEVBQUE4SCxFQUFBK0ksVUFBQTdJLEdBR0FBLEVBQUFnSixV
QUNBaEosRUFBQWdKLFNBQUFuRCxVQUdBLEtBREEsR0FBQWhPLEdBQUFtSSxFQUFBd0QsVUFBQTFM
LE9BQ0FELEtBQ0FtSSxFQUFBd0QsVUFBQTNMLEdBQUFnTyxVQUlBN0YsR0FBQW1FLE1BQUFwSCxR
QUNBaUQsRUFBQW1FLE1BQUFwSCxPQUFBd0IsVUFHQXlCLEVBQUFtSixjQUFBLEVBQ0FTLEdBQUE1
SixFQUFBLGFBRUFBLEVBQUF1TCxPQUVBdkwsRUFBQXlKLE1BQ0F6SixFQUFBeUosSUFBQWEsUUFB
QSxNQUdBdEssRUFBQXFLLFVBQUFySyxFQUFBb0ssT0FBQSxRQUlBLFFBQUFSLElBQUE1SixFQUFB
K0csR0FDQSxHQUFBeUUsR0FBQXhMLEVBQUEyQixTQUFBb0YsRUFDQSxJQUFBeUUsRUFDQSxPQUFB
M1QsR0FBQSxFQUFBNFQsRUFBQUQsRUFBQTFULE9BQXdDRCxFQUFBNFQsRUFBTzVULElBQy9DMlQs
RUFBQTNULEdBQUFhLEtBQUFzSCxFQUdBQSxHQUFBMEwsTUFBQSxRQUFBM0UsR0FRQSxRQUFBNEUs
SUFDQTNQLEVBQ0FrSSxFQUNBcUMsRUFDQUosRUFDQUQsR0FFQSxHQUFBbEssRUFBQSxDQUlBLEdB
QUE0UCxHQUFBckYsRUFBQTVFLFNBQUFrSyxLQUtBLElBSkE3UixFQUFBZ0MsS0FDQUEsRUFBQTRQ
LEVBQUEvUixPQUFBbUMsSUFHQSxrQkFBQUEsR0FBQSxDQVFBLElBQUFBLEVBQUE4UCxJQUNBLEdB
QUE5UCxFQUFBK1AsU0FDQS9QLElBQUErUCxhQU9BLElBTEEvUCxFQUFBZ1EsR0FBQWhRLEVBQUE0
UCxFQUFBLFdBR0FyRixFQUFBOEUsa0JBRUFyUCxFQUdBLE1BT0FpUSxJQUFBalEsR0FFQWtJLE9B
R0EsSUFBQWhELEdBQUFnTCxHQUFBaEksRUFBQWxJLEVBR0EsSUFBQUEsRUFBQW1ELFFBQUFnTixX
QUNBLE1BQUFDLElBQUFwUSxFQUFBa0YsRUFBQWdELEVBQUFxQyxFQUFBSixFQUtBLElBQUFxRSxH
QUFBdEcsRUFBQWtELEVBRUFsRCxHQUFBa0QsR0FBQWxELEVBQUFtSSxTQUVBclEsRUFBQW1ELFFB
QUF5SixXQUdBMUUsTUFJQW9JLEdBQUFwSSxFQUdBLElBQUE3RSxHQUFBckQsRUFBQW1ELFFBQUFF
LE1BQUE2RyxFQUNBSCxFQUFBLEdBQUFFLElBQ0EsaUJBQUFqSyxFQUFBLEtBQUFxRCxFQUFBLElB
QUFBLEVBQUEsSUFDQTZFLEVBQUEzQyw0QkFBQWdGLEdBQ0t2SyxPQUFBa0YsWUFBQXNKLFlBQUF0
RSxNQUFBQyxZQUVMLE9BQUFKLEtBR0EsUUFBQXFHLElBQ0FwUSxFQUNBa0YsRUFDQWdELEVBQ0Fx
QyxFQUNBSixHQUVBLEdBQUEvRyxNQUNBNkIsRUFBQWpGLEVBQUFtRCxRQUFBQyxLQUNBLElBQUE2
QixFQUNBLE9BQUF6SSxLQUFBeUksR0FDQTdCLEVBQUE1RyxHQUFBd0ksRUFBQXhJLEVBQUF5SSxF
QUFBQyxFQUdBLElBQUE2RSxHQUFBL0osRUFBQW1ELFFBQUF1SyxPQUFBaFIsS0FDQSxLQUdBTyxF
QUFBc1QsSUFBMkJDLE1BQUEvVSxPQUFBQyxPQUFBNk8sTUFFM0JuSCxRQUNBOEUsT0FDQXBFLE9B
QUF5RyxFQUNBSixTQUFBaUMsR0FBQWpDLEdBQ0FzRyxNQUFBLFdBQTBCLE1BQUF0QixJQUFBaEYs
RUFBQUksS0FTMUIsT0FOQVIsYUFBQUUsTUFDQUYsRUFBQTJHLGtCQUFBbkcsRUFDQXJDLEVBQUF5
SSxRQUNBNUcsRUFBQTdCLE9BQUE2QixFQUFBN0IsVUFBcUN5SSxLQUFBekksRUFBQXlJLE9BR3JD
NUcsRUFHQSxRQUFBNkcsSUFDQTdHLEVBQ0FqRyxHQUVBLEdBQUErTSxHQUFBOUcsRUFBQVMsaUJB
Q0FySCxHQUNBMk4sY0FBQSxFQUNBaE4sU0FDQW9CLFVBQUEyTCxFQUFBM0wsVUFDQTZMLGNBQUFG
LEVBQUEzRyxJQUNBMkUsYUFBQTlFLEVBQ0FpRixpQkFBQTZCLEVBQUFyQyxVQUNBSSxnQkFBQWlD
LEVBQUExRyxVQUdBNkcsRUFBQWpILEVBQUE3QixLQUFBOEksY0FLQSxPQUpBQSxLQUNBN04sRUFB
QXVLLE9BQUFzRCxFQUFBdEQsT0FDQXZLLEVBQUE4TixnQkFBQUQsRUFBQUMsaUJBRUEsR0FBQUos
R0FBQTdRLEtBQUFtRCxHQUdBLFFBQUErTixJQUFBbkgsRUFBQXlELEdBQ0EsSUFBQXpELEVBQUFo
RyxPQUFBZ0csRUFBQWhHLE1BQUFvSixhQUFBLENBQ0EsR0FBQXBKLEdBQUFnRyxFQUFBaEcsTUFB
QTZNLEdBQUE3RyxFQUFBbUUsR0FDQW5LLEdBQUFvTixPQUFBM0QsRUFBQXpELEVBQUFNLElBQUE5
RSxPQUFBaUksT0FDRyxJQUFBekQsRUFBQTdCLEtBQUFrSixVQUFBLENBRUgsR0FBQUMsR0FBQXRI
LENBQ0F1SCxJQUFBRCxNQUlBLFFBQUFDLElBQ0FDLEVBQ0F4SCxHQUVBLEdBQUE1RyxHQUFBNEcs
RUFBQVMsaUJBQ0F6RyxFQUFBZ0csRUFBQWhHLE1BQUF3TixFQUFBeE4sS0FDQUEsR0FBQXdLLGtC
QUNBcEwsRUFBQStCLFVBQ0EvQixFQUFBcUwsVUFDQXpFLEVBQ0E1RyxFQUFBZ0gsVUFJQSxRQUFB
cUgsSUFBQXpILEdBQ0FBLEVBQUFoRyxNQUFBbUosYUFDQW5ELEVBQUFoRyxNQUFBbUosWUFBQSxF
QUNBVSxHQUFBN0QsRUFBQWhHLE1BQUEsWUFFQWdHLEVBQUE3QixLQUFBa0osWUFDQXJILEVBQUFo
RyxNQUFBa0osV0FBQSxFQUNBVyxHQUFBN0QsRUFBQWhHLE1BQUEsY0FJQSxRQUFBME4sSUFBQTFI
LEdBQ0FBLEVBQUFoRyxNQUFBb0osZUFDQXBELEVBQUE3QixLQUFBa0osV0FHQXJILEVBQUFoRyxN
QUFBa0osV0FBQSxFQUNBVyxHQUFBN0QsRUFBQWhHLE1BQUEsZ0JBSEFnRyxFQUFBaEcsTUFBQXVM
LFlBUUEsUUFBQVUsSUFDQTBCLEVBQ0E5QixFQUNBbEcsR0FFQSxJQUFBZ0ksRUFBQUMsVUFHRyxD
QUNIRCxFQUFBQyxXQUFBLENBQ0EsSUFBQUMsR0FBQUYsRUFBQUcsa0JBQUFuSSxHQUNBb0ksR0FB
QSxFQUVBQyxFQUFBLFNBQUExVCxHQVFBLEdBUEFMLEVBQUFLLEtBQ0FBLEVBQUF1UixFQUFBL1Is
T0FBQVEsSUFHQXFULEVBQUEzQixTQUFBMVIsR0FHQXlULEVBQ0EsT0FBQWpXLEdBQUEsRUFBQXdC
LEVBQUF1VSxFQUFBOVYsT0FBdUNELEVBQUF3QixFQUFPeEIsSUFDOUMrVixFQUFBL1YsR0FBQXdD
LElBS0EyVCxFQUFBLFNBQUFDLEtBT0E1VCxFQUFBcVQsRUFBQUssRUFBQUMsRUFTQSxPQU5BM1Qs
SUFBQSxrQkFBQUEsR0FBQTZULE9BQUFSLEVBQUEzQixVQUNBMVIsRUFBQTZULEtBQUFILEVBQUFD
LEdBR0FGLEdBQUEsRUFFQUosRUFBQTNCLFNBckNBMkIsRUFBQUcsaUJBQUF2UixLQUFBb0osR0F5
Q0EsUUFBQXdHLElBQUFoSSxFQUFBbEksR0FJQSxHQUFBaUYsR0FBQWpGLEVBQUFtRCxRQUFBQyxL
QUNBLElBQUE2QixFQUFBLENBR0EsR0FBQTVHLE1BQ0E4VCxFQUFBakssRUFBQWlLLE1BQ0EvTyxF
QUFBOEUsRUFBQTlFLE1BQ0FnUCxFQUFBbEssRUFBQWtLLFFBQ0EsSUFBQUQsR0FBQS9PLEdBQUFn
UCxFQUNBLE9BQUE1VixLQUFBeUksR0FBQSxDQUNBLEdBQUFvTixHQUFBL00sR0FBQTlJLEVBQ0E4
VixJQUFBalUsRUFBQStFLEVBQUE1RyxFQUFBNlYsR0FBQSxJQUNBQyxHQUFBalUsRUFBQThULEVB
QUEzVixFQUFBNlYsSUFDQUMsR0FBQWpVLEVBQUErVCxFQUFBNVYsRUFBQTZWLEdBR0EsTUFBQWhV
LElBR0EsUUFBQWlVLElBQ0FqVSxFQUNBa1UsRUFDQS9WLEVBQ0E2VixFQUNBRyxHQUVBLEdBQUFE
LEVBQUEsQ0FDQSxHQUFBalcsRUFBQWlXLEVBQUEvVixHQUtBLE1BSkE2QixHQUFBN0IsR0FBQStW
LEVBQUEvVixHQUNBZ1csU0FDQUQsR0FBQS9WLElBRUEsQ0FDSyxJQUFBRixFQUFBaVcsRUFBQUYs
R0FLTCxNQUpBaFUsR0FBQTdCLEdBQUErVixFQUFBRixHQUNBRyxTQUNBRCxHQUFBRixJQUVBLEVB
R0EsU0FHQSxRQUFBL0IsSUFBQXBJLEdBQ0FBLEVBQUE2QyxPQUNBN0MsRUFBQTZDLFFBRUEsUUFB
QWxQLEdBQUEsRUFBaUJBLEVBQUE0VyxHQUFBM1csT0FBeUJELElBQUEsQ0FDMUMsR0FBQVcsR0FB
QWlXLEdBQUE1VyxHQUNBNlcsRUFBQXhLLEVBQUE2QyxLQUFBdk8sR0FDQW1XLEVBQUFDLEdBQUFw
VyxFQUNBMEwsR0FBQTZDLEtBQUF2TyxHQUFBa1csRUFBQUcsR0FBQUYsRUFBQUQsR0FBQUMsR0FJ
QSxRQUFBRSxJQUFBelYsRUFBQTRCLEdBR0EsZ0JBQUE4VCxFQUFBQyxHQUNBM1YsRUFBQTBWLEVB
QUFDLEdBQ0EvVCxFQUFBOFQsRUFBQUMsSUFRQSxRQUFBeEMsSUFDQXJHLEVBQ0FoQyxFQUNBaUMs
R0FPQSxNQUxBakMsS0FBQXRLLE1BQUF3RCxRQUFBOEcsSUFBQSxnQkFBQUEsTUFDQWlDLEVBQUFq
QyxFQUNBQSxFQUFBM0MsUUFHQXlOLEdBQUExSixLQUFBa0gsTUFBQXRHLEVBQUFoQyxFQUFBaUMs
R0FHQSxRQUFBNkksSUFDQXpJLEVBQ0FMLEVBQ0FoQyxFQUNBaUMsR0FFQSxJQUFBakMsTUFBQW5I
LE9BQUEsQ0FRQSxJQUFBbUosRUFFQSxNQUFBeUQsS0FTQSxJQU5BL1AsTUFBQXdELFFBQUErSSxJ
QUNBLGtCQUFBQSxHQUFBLEtBQ0FqQyxRQUNBQSxFQUFBK0ssYUFBd0J2TixRQUFBeUUsRUFBQSxJ
QUN4QkEsRUFBQXJPLE9BQUEsR0FFQSxnQkFBQW9PLEdBQUEsQ0FDQSxHQUFBbEssR0FDQXNLLEVB
QUE1RCxHQUFBd00sZ0JBQUFoSixFQUNBLElBQUF4RCxHQUFBeU0sY0FBQWpKLEdBRUEsVUFBQUQs
SUFDQUMsRUFBQWhDLEVBQUFrRSxHQUFBakMsRUFBQUcsR0FDQS9FLGNBQUErRSxFQUFBQyxFQUVL
LElBQUF2SyxFQUFBMkUsRUFBQTRGLEVBQUE1RSxTQUFBLGFBQUF1RSxHQUVMLE1BQUF5RixJQUFB
M1AsRUFBQWtJLEVBQUFxQyxFQUFBSixFQUFBRCxFQUtBLElBQUFrSixHQUFBLGtCQUFBbEosRUFB
QSxRQUFBSSxDQUNBLFdBQUFMLElBQ0FDLEVBQUFoQyxFQUFBa0UsR0FBQWpDLEVBQUFpSixHQUNB
N04sY0FBQStFLEVBQUFDLEdBS0EsTUFBQW9GLElBQUF6RixFQUFBaEMsRUFBQXFDLEVBQUFKLElB
TUEsUUFBQWtKLElBQUFyUCxHQUNBQSxFQUFBK0osT0FBQSxLQUNBL0osRUFBQW9LLE9BQUEsS0FD
QXBLLEVBQUFzUCxhQUFBLEtBQ0F0UCxFQUFBb0wsZUFBQXBMLEVBQUEyQixTQUFBa0osY0FBQTdL
LEVBQUEyQixTQUFBa0osYUFBQXRFLFFBQ0F2RyxFQUFBa0wsT0FBQUMsR0FBQW5MLEVBQUEyQixT
QUFBaUosZ0JBQUE1SyxFQUFBb0wsZ0JBQ0FwTCxFQUFBdVAsZ0JBR0F2UCxFQUFBd1AsZUFBQXZX
LEVBQUFzVCxHQUFBdk0sR0FDQUEsRUFBQTJCLFNBQUE0SCxJQUNBdkosRUFBQW1OLE9BQUFuTixF
QUFBMkIsU0FBQTRILElBSUEsUUFBQWtHLElBQUFySyxHQTRHQSxRQUFBc0ssR0FBQUMsRUFBQW5Y
LEVBQUFvWCxHQUNBLEdBQUFoVyxNQUFBd0QsUUFBQXVTLEdBQ0EsT0FBQTlYLEdBQUEsRUFBcUJB
LEVBQUE4WCxFQUFBN1gsT0FBaUJELElBQ3RDOFgsRUFBQTlYLElBQUEsZ0JBQUE4WCxHQUFBOVgs
SUFDQWdZLEVBQUFGLEVBQUE5WCxHQUFBVyxFQUFBLElBQUFYLEVBQUErWCxPQUlBQyxHQUFBRixF
QUFBblgsRUFBQW9YLEdBSUEsUUFBQUMsR0FBQUMsRUFBQXRYLEVBQUFvWCxHQUNBRSxFQUFBckos
VUFBQSxFQUNBcUosRUFBQXRYLE1BQ0FzWCxFQUFBRixTQTFIQXhLLEVBQUEzRSxVQUFBc1AsVUFB
QSxTQUFBalgsR0FDQSxNQUFBK0osSUFBQS9KLEVBQUF3TSxPQUdBRixFQUFBM0UsVUFBQXFKLFFB
QUEsV0FDQSxHQUFBOUosR0FBQXNGLEtBQ0EwSyxFQUFBaFEsRUFBQTJCLFNBQ0ErSCxFQUFBc0cs
RUFBQXRHLE9BQ0F1RCxFQUFBK0MsRUFBQS9DLGdCQUNBcEMsRUFBQW1GLEVBQUFuRixZQUVBLElB
QUE3SyxFQUFBa0osV0FFQSxPQUFBMVEsS0FBQXdILEdBQUFrTCxPQUNBbEwsRUFBQWtMLE9BQUEx
UyxHQUFBbU8sR0FBQTNHLEVBQUFrTCxPQUFBMVMsR0FJQXFTLE1BQUEzRyxLQUFBK0ssY0FDQWpQ
LEVBQUF1UCxhQUFBMUUsRUFBQTNHLEtBQUErSyxhQUdBaEMsSUFBQWpOLEVBQUFzUCxlQUNBdFAs
RUFBQXNQLGlCQUlBdFAsRUFBQStKLE9BQUFjLENBRUEsSUFBQTlFLEVBQ0EsS0FDQUEsRUFBQTJE
LEVBQUFoUixLQUFBc0gsRUFBQWlRLGFBQUFqUSxFQUFBd1AsZ0JBQ0ssTUFBQS9RLEdBS0wsR0FB
QWlFLEdBQUF3TixhQUNBeE4sR0FBQXdOLGFBQUF4WCxLQUFBLEtBQUErRixFQUFBdUIsT0FDTyxD
QUNQLEdBQUE3QyxLQUNBLEtBQUFzQixFQUVBMFIsU0FBQUMsTUFBQTNSLEdBSUFzSCxFQUFBL0Ys
RUFBQW9LLE9BZUEsTUFaQXJFLGFBQUFFLE1BUUFGLEVBQUE0RCxNQUdBNUQsRUFBQWpHLE9BQUEr
SyxFQUNBOUUsR0FJQVgsRUFBQTNFLFVBQUE0UCxHQUFBOUQsR0FFQW5ILEVBQUEzRSxVQUFBNlAs
R0FBQXpaLEVBRUF1TyxFQUFBM0UsVUFBQThQLEdBQUFyWixFQUVBa08sRUFBQTNFLFVBQUErUCxH
QUFBN0csR0FFQXZFLEVBQUEzRSxVQUFBZ1EsR0FBQTFWLEVBRUFxSyxFQUFBM0UsVUFBQWlRLEdB
QUF6VixFQUdBbUssRUFBQTNFLFVBQUFrUSxHQUFBLFNBQ0F4WSxFQUNBeVksR0FFQSxHQUFBakIs
R0FBQXJLLEtBQUFnSyxhQUFBblgsRUFHQSxPQUFBd1gsS0FBQWlCLEVBQ0FoWCxNQUFBd0QsUUFB
QXVTLEdBQ0FoSixHQUFBZ0osR0FDQTdKLEdBQUE2SixJQUdBQSxFQUFBckssS0FBQWdLLGFBQUFu
WCxHQUFBbU4sS0FBQTNELFNBQUFzTCxnQkFBQTlVLEdBQUFPLEtBQUE0TSxLQUFBMkssY0FDQVAs
RUFBQUMsRUFBQSxhQUFBeFgsR0FBQSxHQUNBd1gsSUFJQXZLLEVBQUEzRSxVQUFBb1EsR0FBQSxT
QUNBbEIsRUFDQXhYLEVBQ0FLLEdBR0EsTUFEQWtYLEdBQUFDLEVBQUEsV0FBQXhYLEdBQUFLLEVB
QUEsSUFBQUEsRUFBQSxRQUNBbVgsRUFzQkEsSUFBQW1CLEdBQUEsU0FBQWhDLEdBQStCLE1BQUFB
LEdBQy9CMUosR0FBQTNFLFVBQUFzUSxHQUFBLFNBQUFuUSxHQUNBLE1BQUFELEdBQUEyRSxLQUFB
M0QsU0FBQSxVQUFBZixHQUFBLElBQUFrUSxHQUlBMUwsRUFBQTNFLFVBQUF1USxHQUFBLFNBQ0Fs
YSxFQUNBNFMsR0FFQSxHQUFBL1AsR0FBQTlCLEVBQUF3QixFQUFBcUIsRUFBQWxDLENBQ0EsSUFB
QW9CLE1BQUF3RCxRQUFBdEcsR0FFQSxJQURBNkMsRUFBQSxHQUFBQyxPQUFBOUMsRUFBQWdCLFFB
Q0FELEVBQUEsRUFBQXdCLEVBQUF2QyxFQUFBZ0IsT0FBaUNELEVBQUF3QixFQUFPeEIsSUFDeEM4
QixFQUFBOUIsR0FBQTZSLEVBQUE1UyxFQUFBZSxVQUVLLG9CQUFBZixHQUVMLElBREE2QyxFQUFB
LEdBQUFDLE9BQUE5QyxHQUNBZSxFQUFBLEVBQWlCQSxFQUFBZixFQUFTZSxJQUMxQjhCLEVBQUE5
QixHQUFBNlIsRUFBQTdSLEVBQUEsRUFBQUEsT0FFSyxJQUFBbUMsRUFBQWxELEdBR0wsSUFGQTRE
LEVBQUFqRCxPQUFBaUQsS0FBQTVELEdBQ0E2QyxFQUFBLEdBQUFDLE9BQUFjLEVBQUE1QyxRQUNB
RCxFQUFBLEVBQUF3QixFQUFBcUIsRUFBQTVDLE9BQWtDRCxFQUFBd0IsRUFBT3hCLElBQ3pDVyxF
QUFBa0MsRUFBQTdDLEdBQ0E4QixFQUFBOUIsR0FBQTZSLEVBQUE1UyxFQUFBMEIsS0FBQVgsRUFH
QSxPQUFBOEIsSUFJQXlMLEVBQUEzRSxVQUFBd1EsR0FBQSxTQUNBNVIsRUFDQTZSLEVBQ0E5UixH
QUVBLEdBQUErUixHQUFBN0wsS0FBQWlLLGFBQUFsUSxFQUNBLElBQUE4UixFQUNBLE1BQUFBLEdB
QUEvUixRQUFxQzhSLENBRXJDLElBQUFFLEdBQUE5TCxLQUFBNEYsT0FBQTdMLEVBVUEsT0FBQStS
LElBQUFGLEdBS0E5TCxFQUFBM0UsVUFBQTRRLEdBQUEsU0FDQW5OLEVBQ0FnQyxFQUNBdE4sRUFD
QTBZLEdBRUEsR0FBQTFZLEVBQ0EsR0FBQW9CLEVBQUFwQixHQUtPLENBQ1BnQixNQUFBd0QsUUFB
QXhFLEtBQ0FBLEVBQUF3QixFQUFBeEIsR0FFQSxRQUFBSixLQUFBSSxHQUNBLGFBQUFKLEdBQUEs
VUFBQUEsRUFDQTBMLEVBQUExTCxHQUFBSSxFQUFBSixPQUNXLENBQ1gsR0FBQStWLEdBQUErQyxH
QUFBNU8sR0FBQTZPLFlBQUFyTCxFQUFBMU4sR0FDQTBMLEVBQUFrSyxXQUFBbEssRUFBQWtLLGFB
Q0FsSyxFQUFBaUssUUFBQWpLLEVBQUFpSyxTQUNBSSxHQUFBL1YsR0FBQUksRUFBQUosU0FLQSxN
QUFBMEwsSUFJQWtCLEVBQUEzRSxVQUFBK1EsR0FBQSxTQUFBaFosR0FDQSxNQUFBa0ssSUFBQStP
LFNBQUFqWixJQUlBLFFBQUEyUyxJQUNBVCxFQUNBbkUsR0FFQSxHQUFBa0csS0FDQSxLQUFBL0Is
RUFDQSxNQUFBK0IsRUFLQSxRQURBcE4sR0FBQVUsRUFGQW9HLEVBQUFpQyxHQUFBc0MsT0FDQWdI
LEtBRUE3WixFQUFBLEVBQUF3QixFQUFBOE0sRUFBQXJPLE9BQXNDRCxFQUFBd0IsRUFBT3hCLElB
STdDLEdBSEFrSSxFQUFBb0csRUFBQXRPLElBR0FrSSxFQUFBd0csYUFBQXhHLEVBQUEyTSxvQkFB
QW5HLElBQ0F4RyxFQUFBbUUsT0FBQTdFLEVBQUFVLEVBQUFtRSxLQUFBeUksTUFBQSxDQUNBLEdB
QUFBLEdBQUFGLEVBQUFwTixLQUFBb04sRUFBQXBOLE1BQ0EsY0FBQVUsRUFBQW1HLElBQ0F5RyxF
QUFBclEsS0FBQS9DLE1BQUFvVCxFQUFBNU0sRUFBQW9HLFVBRUF3RyxFQUFBclEsS0FBQXlELE9B
R0EyUixHQUFBcFYsS0FBQXlELEVBVUEsT0FOQTJSLEdBQUE1WixTQUNBLElBQUE0WixFQUFBNVos
UUFDQSxNQUFBNFosRUFBQSxHQUFBdEwsT0FBQXNMLEVBQUEsR0FBQUMsYUFFQWxGLEVBQUEvSyxR
QUFBZ1EsR0FFQWpGLEVBS0EsUUFBQW1GLElBQUE1UixHQUNBQSxFQUFBNlIsUUFBQXBhLE9BQUFD
LE9BQUEsS0FFQSxJQUFBOFMsR0FBQXhLLEVBQUEyQixTQUFBcUosaUJBQ0E1RCxFQUFBbk8sRUFB
QStHLEVBQUE4UixJQUFBOVIsR0FDQStSLEVBQUE5WSxFQUFBK0csRUFBQXVMLEtBQUF2TCxFQUNB
QSxHQUFBaUwsaUJBQUEsU0FBQVQsRUFBQU8sR0FDQTVELEdBQUFxRCxFQUFBTyxNQUFpRDNELEVB
QUEySyxFQUFBL1IsSUFFakR3SyxHQUNBeEssRUFBQWlMLGlCQUFBVCxHQUlBLFFBQUF3SCxJQUFB
NU0sR0FDQUEsRUFBQTNFLFVBQUFxUixJQUFBLFNBQUFySyxFQUFBM08sR0FDQSxHQUFBa0gsR0FB
QXNGLElBQ0EsUUFEa0J0RixFQUFBNlIsUUFBQXBLLEtBQUF6SCxFQUFBNlIsUUFBQXBLLFFBQUFu
TCxLQUFBeEQsR0FDbEJrSCxHQUdBb0YsRUFBQTNFLFVBQUF3UixNQUFBLFNBQUF4SyxFQUFBM08s
R0FFQSxRQUFBc08sS0FDQXBILEVBQUF1TCxLQUFBOUQsRUFBQUwsR0FDQXRPLEVBQUFTLE1BQUF5
RyxFQUFBMUcsV0FIQSxHQUFBMEcsR0FBQXNGLElBT0EsT0FGQThCLEdBQUF0TyxLQUNBa0gsRUFB
QThSLElBQUFySyxFQUFBTCxHQUNBcEgsR0FHQW9GLEVBQUEzRSxVQUFBOEssS0FBQSxTQUFBOUQs
RUFBQTNPLEdBQ0EsR0FBQWtILEdBQUFzRixJQUVBLEtBQUFoTSxVQUFBeEIsT0FFQSxNQURBa0ks
R0FBQTZSLFFBQUFwYSxPQUFBQyxPQUFBLE1BQ0FzSSxDQUdBLElBQUE0TixHQUFBNU4sRUFBQTZS
LFFBQUFwSyxFQUNBLEtBQUFtRyxFQUNBLE1BQUE1TixFQUVBLFFBQUExRyxVQUFBeEIsT0FFQSxN
QURBa0ksR0FBQTZSLFFBQUFwSyxHQUFBLEtBQ0F6SCxDQUtBLEtBRkEsR0FBQTBGLEdBQ0E3TixF
QUFBK1YsRUFBQTlWLE9BQ0FELEtBRUEsR0FEQTZOLEVBQUFrSSxFQUFBL1YsR0FDQTZOLElBQUE1
TSxHQUFBNE0sRUFBQTVNLE9BQUEsQ0FDQThVLEVBQUF2VixPQUFBUixFQUFBLEVBQ0EsT0FHQSxN
QUFBbUksSUFHQW9GLEVBQUEzRSxVQUFBaUwsTUFBQSxTQUFBakUsR0FDQSxHQUFBekgsR0FBQXNG
LEtBQ0FzSSxFQUFBNU4sRUFBQTZSLFFBQUFwSyxFQUNBLElBQUFtRyxFQUFBLENBQ0FBLElBQUE5
VixPQUFBLEVBQUEyQixFQUFBbVUsSUFFQSxRQURBc0UsR0FBQXpZLEVBQUFILFVBQUEsR0FDQXpC
LEVBQUEsRUFBQXdCLEVBQUF1VSxFQUFBOVYsT0FBcUNELEVBQUF3QixFQUFPeEIsSUFDNUMrVixF
QUFBL1YsR0FBQTBCLE1BQUF5RyxFQUFBa1MsR0FHQSxNQUFBbFMsSUFRQSxRQUFBbVMsSUFBQS9N
LEdBQ0FBLEVBQUEzRSxVQUFBMlIsTUFBQSxTQUFBalQsR0FDQSxHQUFBYSxHQUFBc0YsSUFFQXRG
LEdBQUFxUyxLQUFBQyxLQUVBdFMsRUFBQTFDLFFBQUEsRUFFQTZCLEtBQUEyTixhQUlBeUYsR0FB
QXZTLEVBQUFiLEdBRUFhLEVBQUEyQixTQUFBOUIsRUFDQW9NLEdBQUFqTSxFQUFBd1MsYUFDQXJU
LE1BQ0FhLEdBT0FBLEVBQUFpUSxhQUFBalEsRUFHQUEsRUFBQXdNLE1BQUF4TSxFQUNBMkksR0FB
QTNJLEdBQ0E0UixHQUFBNVIsR0FDQTRKLEdBQUE1SixFQUFBLGdCQUNBdUQsRUFBQXZELEdBQ0E0
SixHQUFBNUosRUFBQSxXQUNBcVAsR0FBQXJQLElBSUEsUUFBQXVTLElBQUF2UyxFQUFBYixHQUNB
LEdBQUFzVCxHQUFBelMsRUFBQTJCLFNBQUFsSyxPQUFBQyxPQUFBc0ksRUFBQXdTLFlBQUFyVCxR
QUVBc1QsR0FBQTNTLE9BQUFYLEVBQUFXLE9BQ0EyUyxFQUFBdlIsVUFBQS9CLEVBQUErQixVQUNB
dVIsRUFBQTVILGFBQUExTCxFQUFBMEwsYUFDQTRILEVBQUF6SCxpQkFBQTdMLEVBQUE2TCxpQkFD
QXlILEVBQUE3SCxnQkFBQXpMLEVBQUF5TCxnQkFDQTZILEVBQUExRixjQUFBNU4sRUFBQTROLGNB
Q0E1TixFQUFBdUssU0FDQStJLEVBQUEvSSxPQUFBdkssRUFBQXVLLE9BQ0ErSSxFQUFBeEYsZ0JB
QUE5TixFQUFBOE4saUJBSUEsUUFBQWhCLElBQUFqUSxHQUNBLEdBQUFtRCxHQUFBbkQsRUFBQW1E
LE9BQ0EsSUFBQW5ELEVBQUEwVyxNQUFBLENBQ0EsR0FBQUMsR0FBQTNXLEVBQUEwVyxNQUFBdlQs
UUFDQXlULEVBQUE1VyxFQUFBMlcsYUFDQUUsRUFBQTdXLEVBQUE2VyxhQUNBRixLQUFBQyxJQUVB
NVcsRUFBQTJXLGVBQ0FFLEVBQUFuSixPQUFBdkssRUFBQXVLLE9BQ0FtSixFQUFBNUYsZ0JBQUE5
TixFQUFBOE4sZ0JBQ0E0RixFQUFBQyxTQUFBM1QsRUFBQTJULFNBQ0EzVCxFQUFBbkQsRUFBQW1E
LFFBQUFVLEVBQUE4UyxFQUFBRSxHQUNBMVQsRUFBQUUsT0FDQUYsRUFBQTRULFdBQUE1VCxFQUFB
RSxNQUFBckQsSUFJQSxNQUFBbUQsR0FHQSxRQUFBdUIsSUFBQXZCLEdBS0FtRyxLQUFBOE0sTUFB
QWpULEdBV0EsUUFBQTZULElBQUE1TixHQUNBQSxFQUFBNk4sSUFBQSxTQUFBQyxHQUVBLElBQUFB
LEVBQUFDLFVBQUEsQ0FJQSxHQUFBakIsR0FBQXpZLEVBQUFILFVBQUEsRUFRQSxPQVBBNFksR0FB
QWtCLFFBQUE5TixNQUNBLGtCQUFBNE4sR0FBQUcsUUFDQUgsRUFBQUcsUUFBQTlaLE1BQUEyWixF
QUFBaEIsR0FFQWdCLEVBQUEzWixNQUFBLEtBQUEyWSxHQUVBZ0IsRUFBQUMsV0FBQSxFQUNBN04s
T0FNQSxRQUFBZ08sSUFBQWxPLEdBQ0FBLEVBQUE1RSxNQUFBLFNBQUFBLEdBQ0E4RSxLQUFBbkcs
UUFBQVUsRUFBQXlGLEtBQUFuRyxRQUFBcUIsSUFNQSxRQUFBK1MsSUFBQW5PLEdBTUFBLEVBQUEw
RyxJQUFBLENBQ0EsSUFBQUEsR0FBQSxDQUtBMUcsR0FBQXZMLE9BQUEsU0FBQWdaLEdBQ0FBLE9B
Q0EsSUFBQVcsR0FBQWxPLEtBQ0FtTyxFQUFBRCxFQUFBMUgsSUFDQTRILEVBQUFiLEVBQUFjLFFB
QUFkLEVBQUFjLFNBQ0EsSUFBQUQsRUFBQUQsR0FDQSxNQUFBQyxHQUFBRCxFQUVBLElBQUFwVSxH
QUFBd1QsRUFBQXhULE1BQUFtVSxFQUFBclUsUUFBQUUsS0FTQXVVLEVBQUEsU0FBQXpVLEdBQ0Ft
RyxLQUFBOE0sTUFBQWpULEdBOEJBLE9BNUJBeVUsR0FBQW5ULFVBQUFoSixPQUFBQyxPQUFBOGIs
RUFBQS9TLFdBQ0FtVCxFQUFBblQsVUFBQStSLFlBQUFvQixFQUNBQSxFQUFBOUgsUUFDQThILEVB
QUF6VSxRQUFBVSxFQUNBMlQsRUFBQXJVLFFBQ0EwVCxHQUVBZSxFQUFBLE1BQUFKLEVBRUFJLEVB
QUEvWixPQUFBMlosRUFBQTNaLE9BQ0ErWixFQUFBcFQsTUFBQWdULEVBQUFoVCxNQUNBb1QsRUFB
QVgsSUFBQU8sRUFBQVAsSUFHQXZRLEdBQUFtUixZQUFBQyxRQUFBLFNBQUF2VSxHQUNBcVUsRUFB
QXJVLEdBQUFpVSxFQUFBalUsS0FHQUYsSUFDQXVVLEVBQUF6VSxRQUFBNFQsV0FBQTFULEdBQUF1
VSxHQUtBQSxFQUFBakIsYUFBQWEsRUFBQXJVLFFBQ0F5VSxFQUFBZixnQkFFQWEsRUFBQUQsR0FB
QUcsRUFDQUEsR0FNQSxRQUFBRyxJQUFBM08sR0FJQTFDLEdBQUFtUixZQUFBQyxRQUFBLFNBQUF2
VSxHQUNBNkYsRUFBQTdGLEdBQUEsU0FDQXFCLEVBQ0FvVCxHQUVBLE1BQUFBLElBWUEsY0FBQXpV
LEdBQUF0RixFQUFBK1osS0FDQUEsRUFBQTNVLEtBQUEyVSxFQUFBM1UsTUFBQXVCLEVBQ0FvVCxF
QUFBMU8sS0FBQW5HLFFBQUEwTSxNQUFBaFMsT0FBQW1hLElBRUEsY0FBQXpVLEdBQUEsa0JBQUF5
VSxLQUNBQSxHQUF3QnJVLEtBQUFxVSxFQUFBcFUsT0FBQW9VLElBRXhCMU8sS0FBQW5HLFFBQUFJ
LEVBQUEsS0FBQXFCLEdBQUFvVCxFQUNBQSxHQW5CQTFPLEtBQUFuRyxRQUFBSSxFQUFBLEtBQUFx
QixNQTZCQSxRQUFBcVQsSUFBQUMsRUFBQTdVLEdBQ0Esc0JBQUE2VSxHQUNBQSxFQUFBdGMsTUFB
QSxLQUFBUSxRQUFBaUgsSUFBQSxFQUVBNlUsRUFBQXJZLEtBQUF3RCxHQXlEQSxRQUFBOFUsSUFB
QS9PLEdBRUEsR0FBQWdQLEtBQ0FBLEdBQUF2VyxJQUFBLFdBQStCLE1BQUE2RSxLQVEvQmpMLE9B
QUE4RCxlQUFBNkosRUFBQSxTQUFBZ1AsR0FDQWhQLEVBQUFpUCxRQUNBalAsRUFBQXJILE1BQ0Fx
SCxFQUFBa1AsT0FBQTlWLEVBQ0E0RyxFQUFBdkMsWUFFQXVDLEVBQUFqRyxRQUFBMUgsT0FBQUMs
T0FBQSxNQUNBZ0wsR0FBQW1SLFlBQUFDLFFBQUEsU0FBQXZVLEdBQ0E2RixFQUFBakcsUUFBQUks
RUFBQSxLQUFBOUgsT0FBQUMsT0FBQSxRQUtBME4sRUFBQWpHLFFBQUEwTSxNQUFBekcsRUFFQXZM
LEVBQUF1TCxFQUFBakcsUUFBQTRULFdBQUF3QixJQUVBdkIsR0FBQTVOLEdBQ0FrTyxHQUFBbE8s
R0FDQW1PLEdBQUFuTyxHQUNBMk8sR0FBQTNPLEdBb0VBLFFBQUFvUCxJQUFBek8sR0FJQSxJQUhB
LEdBQUE3QixHQUFBNkIsRUFBQTdCLEtBQ0F1USxFQUFBMU8sRUFDQTJPLEVBQUEzTyxFQUNBMk8s
RUFBQTNVLE9BQ0EyVSxJQUFBM1UsTUFBQXFLLE9BQ0FzSyxFQUFBeFEsT0FDQUEsRUFBQXlRLEdB
QUFELEVBQUF4USxRQUdBLE1BQUF1USxJQUFBM1UsUUFDQTJVLEVBQUF2USxPQUNBQSxFQUFBeVEs
R0FBQXpRLEVBQUF1USxFQUFBdlEsTUFHQSxPQUFBMFEsSUFBQTFRLEdBR0EsUUFBQXlRLElBQUE1
VSxFQUFBRCxHQUNBLE9BQ0ErVSxZQUFBamEsR0FBQW1GLEVBQUE4VSxZQUFBL1UsRUFBQStVLGFB
Q0FDLE1BQUEvVSxFQUFBK1UsT0FDQS9VLEVBQUErVSxNQUFBaFYsRUFBQWdWLE9BQ0FoVixFQUFB
Z1YsT0FJQSxRQUFBRixJQUFBMVEsR0FDQSxHQUFBNlEsR0FBQTdRLEVBQUE0USxNQUNBRCxFQUFB
M1EsRUFBQTJRLFdBQ0EsT0FBQUEsSUFBQUUsRUFDQW5hLEdBQUFpYSxFQUFBRyxHQUFBRCxJQUdB
LEdBR0EsUUFBQW5hLElBQUF4QixFQUFBNEIsR0FDQSxNQUFBNUIsR0FBQTRCLEVBQUE1QixFQUFB
LElBQUE0QixFQUFBNUIsRUFBQTRCLEdBQUEsR0FHQSxRQUFBZ2EsSUFBQXBjLEdBQ0EsR0FBQXlC
LEdBQUEsRUFDQSxLQUFBekIsRUFDQSxNQUFBeUIsRUFFQSxvQkFBQXpCLEdBQ0EsTUFBQUEsRUFF
QSxJQUFBZ0IsTUFBQXdELFFBQUF4RSxHQUFBLENBRUEsT0FEQXFjLEdBQ0FwZCxFQUFBLEVBQUF3
QixFQUFBVCxFQUFBZCxPQUFxQ0QsRUFBQXdCLEVBQU94QixJQUM1Q2UsRUFBQWYsS0FDQW9kLEVB
QUFELEdBQUFwYyxFQUFBZixPQUNBd0MsR0FBQTRhLEVBQUEsSUFJQSxPQUFBNWEsR0FBQXVOLE1B
QUEsTUFFQSxHQUFBNU4sRUFBQXBCLEdBQUEsQ0FDQSxPQUFBSixLQUFBSSxHQUNBQSxFQUFBSixL
QUF1QjZCLEdBQUE3QixFQUFBLElBRXZCLE9BQUE2QixHQUFBdU4sTUFBQSxNQUdBLE1BQUF2TixH
QWdFQSxRQUFBNlUsSUFBQWhKLEdBQ0EsTUFBQWdQLElBQUFoUCxHQUNBLE1BSUEsU0FBQUEsRUFD
QSxPQURBLE9BTUEsUUFBQWlQLElBQUFqUCxHQUVBLElBQUFrUCxHQUNBLFFBRUEsSUFBQWpHLEdB
QUFqSixHQUNBLFFBSUEsSUFGQUEsSUFBQW5PLGNBRUEsTUFBQXNkLEdBQUFuUCxHQUNBLE1BQUFt
UCxJQUFBblAsRUFFQSxJQUFBcUQsR0FBQStMLFNBQUEvSSxjQUFBckcsRUFDQSxPQUFBQSxHQUFB
OU4sUUFBQSxRQUVBaWQsR0FBQW5QLEdBQ0FxRCxFQUFBaUosY0FBQStDLE9BQUFDLG9CQUNBak0s
RUFBQWlKLGNBQUErQyxPQUFBRSxZQUdBSixHQUFBblAsR0FBQSxxQkFBQXJLLEtBQUEwTixFQUFB
clAsWUFTQSxRQUFBd2IsSUFBQW5NLEdBQ0EsbUJBQUFBLEdBQUEsQ0FHQSxHQURBQSxFQUFBK0ws
U0FBQUssY0FBQXBNLElBQ0FBLEVBSUEsTUFBQStMLFVBQUEvSSxjQUFBLE9BR0EsTUFBQWhELEdB
S0EsUUFBQXFNLElBQUFDLEVBQUE5UCxHQUNBLEdBQUFNLEdBQUFpUCxTQUFBL0ksY0FBQXNKLEVB
Q0Esa0JBQUFBLEVBQ0F4UCxHQUVBTixFQUFBN0IsTUFBQTZCLEVBQUE3QixLQUFBaUssT0FBQSxZ
QUFBcEksR0FBQTdCLEtBQUFpSyxPQUNBOUgsRUFBQXlQLGFBQUEsdUJBRUF6UCxHQUdBLFFBQUEw
UCxJQUFBQyxFQUFBSCxHQUNBLE1BQUFQLFVBQUFTLGdCQUFBRSxHQUFBRCxHQUFBSCxHQUdBLFFB
QUFLLElBQUE5UCxHQUNBLE1BQUFrUCxVQUFBWSxlQUFBOVAsR0FHQSxRQUFBK1AsSUFBQS9QLEdB
Q0EsTUFBQWtQLFVBQUFhLGNBQUEvUCxHQUdBLFFBQUFnUSxJQUFBM0IsRUFBQTRCLEVBQUFDLEdB
Q0E3QixFQUFBMkIsYUFBQUMsRUFBQUMsR0FHQSxRQUFBQyxJQUFBekcsRUFBQS9QLEdBQ0ErUCxF
QUFBeUcsWUFBQXhXLEdBR0EsUUFBQXlXLElBQUExRyxFQUFBL1AsR0FDQStQLEVBQUEwRyxZQUFB
elcsR0FHQSxRQUFBMFUsSUFBQTNFLEdBQ0EsTUFBQUEsR0FBQTJFLFdBR0EsUUFBQWdDLElBQUEz
RyxHQUNBLE1BQUFBLEdBQUEyRyxZQUdBLFFBQUFaLElBQUEvRixHQUNBLE1BQUFBLEdBQUErRixR
QUdBLFFBQUFhLElBQUE1RyxFQUFBMUosR0FDQTBKLEVBQUE2RyxZQUFBdlEsRUFHQSxRQUFBd1Es
SUFBQTlHLEdBQ0EsTUFBQUEsR0FBQThHLFdBR0EsUUFBQWQsSUFBQWhHLEVBQUF0WCxFQUFBMUIs
R0FDQWdaLEVBQUFnRyxhQUFBdGQsRUFBQTFCLEdBcUNBLFFBQUErZixJQUFBOVEsRUFBQStRLEdB
Q0EsR0FBQXRlLEdBQUF1TixFQUFBN0IsS0FBQThMLEdBQ0EsSUFBQXhYLEVBQUEsQ0FFQSxHQUFB
d0gsR0FBQStGLEVBQUFRLFFBQ0F5SixFQUFBakssRUFBQWhHLE9BQUFnRyxFQUFBTSxJQUNBMFEs
RUFBQS9XLEVBQUErSSxLQUNBK04sR0FDQWxkLE1BQUF3RCxRQUFBMlosRUFBQXZlLElBQ0FSLEVB
QUErZSxFQUFBdmUsR0FBQXdYLEdBQ0srRyxFQUFBdmUsS0FBQXdYLElBQ0wrRyxFQUFBdmUsR0FB
QStJLFFBR0F3RSxFQUFBN0IsS0FBQThTLFNBQ0FwZCxNQUFBd0QsUUFBQTJaLEVBQUF2ZSxLQUFB
dWUsRUFBQXZlLEdBQUFKLFFBQUE0WCxHQUFBLEVBQ0ErRyxFQUFBdmUsR0FBQThELEtBQUEwVCxH
QUVBK0csRUFBQXZlLElBQUF3WCxHQUdBK0csRUFBQXZlLEdBQUF3WCxHQXVCQSxRQUFBaUgsSUFB
QUMsR0FDQSxhQUFBQSxFQUdBLFFBQUFDLElBQUFELEdBQ0EsYUFBQUEsRUFHQSxRQUFBRSxJQUFB
QyxFQUFBQyxHQUNBLE1BQ0FELEdBQUE3ZSxNQUFBOGUsRUFBQTllLEtBQ0E2ZSxFQUFBblIsTUFB
QW9SLEVBQUFwUixLQUNBbVIsRUFBQTFGLFlBQUEyRixFQUFBM0YsWUFDQTBGLEVBQUFuVCxPQUFB
b1QsRUFBQXBULEtBSUEsUUFBQXFULElBQUFwUixFQUFBcVIsRUFBQUMsR0FDQSxHQUFBNWYsR0FB
QVcsRUFDQWhCLElBQ0EsS0FBQUssRUFBQTJmLEVBQW9CM2YsR0FBQTRmLElBQWE1ZixFQUNqQ1cs
RUFBQTJOLEVBQUF0TyxHQUFBVyxJQUNBMmUsR0FBQTNlLEtBQXFCaEIsRUFBQWdCLEdBQUFYLEVB
RXJCLE9BQUFMLEdBR0EsUUFBQWtnQixJQUFBQyxHQWNBLFFBQUFDLEdBQUF2UixHQUNBLFVBQUFK
LElBQUE0UixFQUFBaEMsUUFBQXhQLEdBQUF0TyxvQkFBMkR3SixPQUFBOEUsR0FHM0QsUUFBQXlS
LEdBQUFDLEVBQUF2TixHQUNBLFFBQUFsRCxLQUNBLE1BQUFBLEVBQUFrRCxXQUNBd04sRUFBQUQs
R0FJQSxNQURBelEsR0FBQWtELFlBQ0FsRCxFQUdBLFFBQUEwUSxHQUFBek8sR0FDQSxHQUFBekos
R0FBQStYLEVBQUFwRCxXQUFBbEwsRUFFQXpKLElBQ0ErWCxFQUFBdEIsWUFBQXpXLEVBQUF5SixH
QUlBLFFBQUEwTyxHQUFBbFMsRUFBQW1TLEVBQUFDLEdBQ0EsR0FBQXRnQixHQUNBcU0sRUFBQTZC
LEVBQUE3QixJQUVBLElBREE2QixFQUFBcVMsY0FBQUQsRUFDQWhCLEdBQUFqVCxLQUNBaVQsR0FB
QXRmLEVBQUFxTSxFQUFBNkMsT0FBQW9RLEdBQUF0ZixJQUFBcVYsT0FBc0RyVixFQUFBa08sR0FL
dERvUixHQUFBdGYsRUFBQWtPLEVBQUFoRyxRQUVBLE1BREFzWSxHQUFBdFMsRUFBQW1TLEdBQ0Fu
UyxFQUFBTSxHQUdBLElBQUFGLEdBQUFKLEVBQUFJLFNBQ0FELEVBQUFILEVBQUFHLEdBNkJBLE9B
NUJBaVIsSUFBQWpSLElBZUFILEVBQUFNLElBQUFOLEVBQUFPLEdBQ0F1UixFQUFBOUIsZ0JBQUFo
USxFQUFBTyxHQUFBSixHQUNBMlIsRUFBQXRMLGNBQUFyRyxFQUFBSCxHQUNBdVMsRUFBQXZTLEdB
Q0F3UyxFQUFBeFMsRUFBQUksRUFBQStSLEdBQ0FmLEdBQUFqVCxJQUNBc1UsRUFBQXpTLEVBQUFt
UyxJQUVLblMsRUFBQTRMLFVBQ0w1TCxFQUFBTSxJQUFBd1IsRUFBQTFCLGNBQUFwUSxFQUFBSyxN
QUVBTCxFQUFBTSxJQUFBd1IsRUFBQTNCLGVBQUFuUSxFQUFBSyxNQUVBTCxFQUFBTSxJQUdBLFFB
QUFrUyxHQUFBeFMsRUFBQUksRUFBQStSLEdBQ0EsR0FBQXRlLE1BQUF3RCxRQUFBK0ksR0FDQSxP
QUFBdE8sR0FBQSxFQUFxQkEsRUFBQXNPLEVBQUFyTyxTQUFxQkQsRUFDMUNnZ0IsRUFBQXJCLFlB
QUF6USxFQUFBTSxJQUFBNFIsRUFBQTlSLEVBQUF0TyxHQUFBcWdCLEdBQUEsUUFFS3ZmLEdBQUFv
TixFQUFBSyxPQUNMeVIsRUFBQXJCLFlBQUF6USxFQUFBTSxJQUFBd1IsRUFBQTNCLGVBQUFuUSxF
QUFBSyxPQUlBLFFBQUFxUyxHQUFBMVMsR0FDQSxLQUFBQSxFQUFBaEcsT0FDQWdHLElBQUFoRyxN
QUFBcUssTUFFQSxPQUFBK00sSUFBQXBSLEVBQUFHLEtBR0EsUUFBQXNTLEdBQUF6UyxFQUFBbVMs
R0FDQSxPQUFBUSxHQUFBLEVBQXFCQSxFQUFBOUssRUFBQWxXLE9BQUFJLFNBQXlCNGdCLEVBQzlD
OUssRUFBQWxXLE9BQUFnaEIsR0FBQUMsR0FBQTVTLEVBRUFsTyxHQUFBa08sRUFBQTdCLEtBQUE2
QyxLQUNBb1EsR0FBQXRmLEtBQ0FBLEVBQUFILFFBQXFCRyxFQUFBSCxPQUFBaWhCLEdBQUE1UyxH
QUNyQmxPLEVBQUEyVixRQUFxQjBLLEVBQUE1YixLQUFBeUosSUFJckIsUUFBQXNTLEdBQUF0UyxF
QUFBbVMsR0FDQW5TLEVBQUE3QixLQUFBMFUsZUFDQVYsRUFBQTViLEtBQUEvQyxNQUFBMmUsRUFB
QW5TLEVBQUE3QixLQUFBMFUsZUFFQTdTLEVBQUFNLElBQUFOLEVBQUFoRyxNQUFBMEosSUFDQWdQ
LEVBQUExUyxJQUNBeVMsRUFBQXpTLEVBQUFtUyxHQUNBSSxFQUFBdlMsS0FJQThRLEdBQUE5USxH
QUVBbVMsRUFBQTViLEtBQUF5SixJQU9BLFFBQUF1UyxHQUFBdlMsR0FDQSxHQUFBbE8sRUFDQXNm
LElBQUF0ZixFQUFBa08sRUFBQVEsVUFBQTRRLEdBQUF0ZixJQUFBOEosU0FBQW1SLFdBQ0ErRSxF
QUFBL0IsYUFBQS9QLEVBQUFNLElBQUF4TyxFQUFBLElBRUFzZixHQUFBdGYsRUFBQXFTLEtBQ0Fy
UyxJQUFBa08sRUFBQVEsU0FDQTRRLEdBQUF0ZixJQUFBOEosU0FBQW1SLFdBQ0ErRSxFQUFBL0Is
YUFBQS9QLEVBQUFNLElBQUF4TyxFQUFBLElBSUEsUUFBQWdoQixHQUFBQyxFQUFBQyxFQUFBblMs
RUFBQW9TLEVBQUF2QixFQUFBUyxHQUNBLEtBQVVjLEdBQUF2QixJQUFvQnVCLEVBQzlCbkIsRUFB
QXpCLGFBQUEwQyxFQUFBYixFQUFBclIsRUFBQW9TLEdBQUFkLEdBQUFhLEdBSUEsUUFBQUUsR0FB
QWxULEdBQ0EsR0FBQWxPLEdBQUE0VCxFQUNBdkgsRUFBQTZCLEVBQUE3QixJQUNBLElBQUFpVCxH
QUFBalQsR0FFQSxJQURBaVQsR0FBQXRmLEVBQUFxTSxFQUFBNkMsT0FBQW9RLEdBQUF0ZixJQUFB
cWhCLFVBQXlEcmhCLEVBQUFrTyxHQUN6RGxPLEVBQUEsRUFBaUJBLEVBQUErVixFQUFBc0wsUUFB
QXBoQixTQUF3QkQsRUFBTytWLEVBQUFzTCxRQUFBcmhCLEdBQUFrTyxFQUVoRCxJQUFBb1IsR0FB
QXRmLEVBQUFrTyxFQUFBSSxVQUNBLElBQUFzRixFQUFBLEVBQWlCQSxFQUFBMUYsRUFBQUksU0FB
QXJPLFNBQTJCMlQsRUFDNUN3TixFQUFBbFQsRUFBQUksU0FBQXNGLElBS0EsUUFBQTBOLEdBQUFM
LEVBQUFsUyxFQUFBb1MsRUFBQXZCLEdBQ0EsS0FBVXVCLEdBQUF2QixJQUFvQnVCLEVBQUEsQ0FD
OUIsR0FBQUksR0FBQXhTLEVBQUFvUyxFQUNBN0IsSUFBQWlDLEtBQ0FqQyxHQUFBaUMsRUFBQWxU
LE1BQ0FtVCxFQUFBRCxHQUNBSCxFQUFBRyxJQUVBdkIsRUFBQXRCLFlBQUF1QyxFQUFBTSxFQUFB
L1MsT0FNQSxRQUFBZ1QsR0FBQXRULEVBQUF1VCxHQUNBLEdBQUFBLEdBQUFuQyxHQUFBcFIsRUFB
QTdCLE1BQUEsQ0FDQSxHQUFBc0csR0FBQW9ELEVBQUEyTCxPQUFBemhCLE9BQUEsQ0FhQSxLQVpB
d2hCLEVBTUFBLEVBQUE5TyxhQUpBOE8sRUFBQXhCLEVBQUEvUixFQUFBTSxJQUFBbUUsR0FPQTJN
LEdBQUF0ZixFQUFBa08sRUFBQWhHLFFBQUFvWCxHQUFBdGYsSUFBQXVTLFNBQUErTSxHQUFBdGYs
RUFBQXFNLE9BQ0FtVixFQUFBeGhCLEVBQUF5aEIsR0FFQXpoQixFQUFBLEVBQWlCQSxFQUFBK1Ys
RUFBQTJMLE9BQUF6aEIsU0FBdUJELEVBQ3hDK1YsRUFBQTJMLE9BQUExaEIsR0FBQWtPLEVBQUF1
VCxFQUVBbkMsSUFBQXRmLEVBQUFrTyxFQUFBN0IsS0FBQTZDLE9BQUFvUSxHQUFBdGYsSUFBQTBo
QixRQUNBMWhCLEVBQUFrTyxFQUFBdVQsR0FFQUEsUUFHQXRCLEdBQUFqUyxFQUFBTSxLQUlBLFFB
QUFtVCxHQUFBVixFQUFBVyxFQUFBQyxFQUFBeEIsRUFBQXlCLEdBZ0JBLElBZkEsR0FRQUMsR0FB
QUMsRUFBQUMsRUFBQWYsRUFSQWdCLEVBQUEsRUFDQUMsRUFBQSxFQUNBQyxFQUFBUixFQUFBM2hC
LE9BQUEsRUFDQW9pQixFQUFBVCxFQUFBLEdBQ0FVLEVBQUFWLEVBQUFRLEdBQ0FHLEVBQUFWLEVB
QUE1aEIsT0FBQSxFQUNBdWlCLEVBQUFYLEVBQUEsR0FDQVksRUFBQVosRUFBQVUsR0FNQUcsR0FB
QVosRUFFQUksR0FBQUUsR0FBQUQsR0FBQUksR0FDQW5ELEdBQUFpRCxHQUNBQSxFQUFBVCxJQUFB
TSxHQUNPOUMsR0FBQWtELEdBQ1BBLEVBQUFWLElBQUFRLEdBQ083QyxHQUFBOEMsRUFBQUcsSUFD
UEcsRUFBQU4sRUFBQUcsRUFBQW5DLEdBQ0FnQyxFQUFBVCxJQUFBTSxHQUNBTSxFQUFBWCxJQUFB
TSxJQUNPNUMsR0FBQStDLEVBQUFHLElBQ1BFLEVBQUFMLEVBQUFHLEVBQUFwQyxHQUNBaUMsRUFB
QVYsSUFBQVEsR0FDQUssRUFBQVosSUFBQVUsSUFDT2hELEdBQUE4QyxFQUFBSSxJQUNQRSxFQUFB
TixFQUFBSSxFQUFBcEMsR0FDQXFDLEdBQUExQyxFQUFBekIsYUFBQTBDLEVBQUFvQixFQUFBN1Qs
SUFBQXdSLEVBQUFwQixZQUFBMEQsRUFBQTlULE1BQ0E2VCxFQUFBVCxJQUFBTSxHQUNBTyxFQUFB
WixJQUFBVSxJQUNPaEQsR0FBQStDLEVBQUFFLElBQ1BHLEVBQUFMLEVBQUFFLEVBQUFuQyxHQUNB
cUMsR0FBQTFDLEVBQUF6QixhQUFBMEMsRUFBQXFCLEVBQUE5VCxJQUFBNlQsRUFBQTdULEtBQ0E4
VCxFQUFBVixJQUFBUSxHQUNBSSxFQUFBWCxJQUFBTSxLQUVBL0MsR0FBQTJDLEtBQW1DQSxFQUFB
ckMsR0FBQWtDLEVBQUFNLEVBQUFFLElBQ25DSixFQUFBMUMsR0FBQWtELEVBQUE3aEIsS0FBQW9o
QixFQUFBUyxFQUFBN2hCLEtBQUEsS0FDQXllLEdBQUE0QyxJQUNBaEMsRUFBQXpCLGFBQUEwQyxF
QUFBYixFQUFBb0MsRUFBQW5DLEdBQUFnQyxFQUFBN1QsS0FDQWdVLEVBQUFYLElBQUFNLEtBRUFG
LEVBQUFMLEVBQUFJLEdBUUFDLEVBQUE1VCxNQUFBbVUsRUFBQW5VLEtBRUEyUixFQUFBekIsYUFB
QTBDLEVBQUFiLEVBQUFvQyxFQUFBbkMsR0FBQWdDLEVBQUE3VCxLQUNBZ1UsRUFBQVgsSUFBQU0s
S0FFQVEsRUFBQVYsRUFBQU8sRUFBQW5DLEdBQ0F1QixFQUFBSSxHQUFBdFksT0FDQWdaLEdBQUEx
QyxFQUFBekIsYUFBQTBDLEVBQUF1QixFQUFBaFUsSUFBQTZULEVBQUE3VCxLQUNBZ1UsRUFBQVgs
SUFBQU0sS0FLQUQsR0FBQUUsR0FDQWxCLEVBQUE5QixHQUFBeUMsRUFBQVUsRUFBQSxTQUFBVixF
QUFBVSxFQUFBLEdBQUEvVCxJQUNBd1MsRUFBQUMsRUFBQUMsRUFBQVcsRUFBQU0sRUFBQUksRUFB
QWxDLElBQ0s4QixFQUFBSSxHQUNMakIsRUFBQUwsRUFBQVcsRUFBQU0sRUFBQUUsR0FJQSxRQUFB
TyxHQUFBak4sRUFBQXhILEVBQUFtUyxFQUFBeUIsR0FDQSxHQUFBcE0sSUFBQXhILEVBQUEsQ0FP
QSxHQUFBQSxFQUFBVSxVQUNBOEcsRUFBQTlHLFVBQ0FWLEVBQUF2TixNQUFBK1UsRUFBQS9VLE1B
Q0F1TixFQUFBVyxVQUFBWCxFQUFBNkosUUFHQSxNQUZBN0osR0FBQU0sSUFBQWtILEVBQUFsSCxT
QUNBTixFQUFBaEcsTUFBQXdOLEVBQUF4TixNQUdBLElBQUFsSSxHQUNBcU0sRUFBQTZCLEVBQUE3
QixLQUNBdVcsRUFBQXRELEdBQUFqVCxFQUNBdVcsSUFBQXRELEdBQUF0ZixFQUFBcU0sRUFBQTZD
LE9BQUFvUSxHQUFBdGYsSUFBQXlWLFdBQ0F6VixFQUFBMFYsRUFBQXhILEVBRUEsSUFBQU0sR0FB
QU4sRUFBQU0sSUFBQWtILEVBQUFsSCxJQUNBb1QsRUFBQWxNLEVBQUFwSCxTQUNBaVQsRUFBQXJU
LEVBQUFJLFFBQ0EsSUFBQXNVLEdBQUFoQyxFQUFBMVMsR0FBQSxDQUNBLElBQUFsTyxFQUFBLEVB
QWlCQSxFQUFBK1YsRUFBQWhPLE9BQUE5SCxTQUF1QkQsRUFBTytWLEVBQUFoTyxPQUFBL0gsR0FB
QTBWLEVBQUF4SCxFQUMvQ29SLElBQUF0ZixFQUFBcU0sRUFBQTZDLE9BQUFvUSxHQUFBdGYsSUFB
QStILFNBQXdEL0gsRUFBQTBWLEVBQUF4SCxHQUV4RGtSLEdBQUFsUixFQUFBSyxNQUNBK1EsR0FB
QXNDLElBQUF0QyxHQUFBaUMsR0FDQUssSUFBQUwsR0FBMkJJLEVBQUFuVCxFQUFBb1QsRUFBQUws
RUFBQWxCLEVBQUF5QixHQUNwQnhDLEdBQUFpQyxJQUNQakMsR0FBQTVKLEVBQUFuSCxPQUFtQ3lS
LEVBQUFuQixlQUFBclEsRUFBQSxJQUNuQ3dTLEVBQUF4UyxFQUFBLEtBQUErUyxFQUFBLEVBQUFB
LEVBQUF0aEIsT0FBQSxFQUFBb2dCLElBQ09mLEdBQUFzQyxHQUNQTixFQUFBOVMsRUFBQW9ULEVB
QUEsRUFBQUEsRUFBQTNoQixPQUFBLEdBQ09xZixHQUFBNUosRUFBQW5ILE9BQ1B5UixFQUFBbkIs
ZUFBQXJRLEVBQUEsSUFFS2tILEVBQUFuSCxPQUFBTCxFQUFBSyxNQUNMeVIsRUFBQW5CLGVBQUFy
USxFQUFBTixFQUFBSyxNQUVBcVUsR0FDQXRELEdBQUF0ZixFQUFBcU0sRUFBQTZDLE9BQUFvUSxH
QUFBdGYsSUFBQTZpQixZQUEyRDdpQixFQUFBMFYsRUFBQXhILElBSTNELFFBQUE0VSxHQUFBNVUs
RUFBQTlELEVBQUEyWSxHQUdBLEdBQUFBLEdBQUE3VSxFQUFBakcsT0FDQWlHLEVBQUFqRyxPQUFB
b0UsS0FBQTBVLGNBQUEzVyxNQUVBLFFBQUFwSyxHQUFBLEVBQXFCQSxFQUFBb0ssRUFBQW5LLFNB
QWtCRCxFQUN2Q29LLEVBQUFwSyxHQUFBcU0sS0FBQTZDLEtBQUF5RyxPQUFBdkwsRUFBQXBLLElB
TUEsUUFBQWdqQixHQUFBeFUsRUFBQU4sRUFBQW1TLEdBTUFuUyxFQUFBTSxLQUNBLElBQUFILEdB
QUFILEVBQUFHLElBQ0FoQyxFQUFBNkIsRUFBQTdCLEtBQ0FpQyxFQUFBSixFQUFBSSxRQUNBLElB
QUFnUixHQUFBalQsS0FDQWlULEdBQUF0ZixFQUFBcU0sRUFBQTZDLE9BQUFvUSxHQUFBdGYsSUFB
QXFWLE9BQXNEclYsRUFBQWtPLEdBQUEsR0FDdERvUixHQUFBdGYsRUFBQWtPLEVBQUFoRyxRQUdB
LE1BREFzWSxHQUFBdFMsRUFBQW1TLElBQ0EsQ0FHQSxJQUFBZixHQUFBalIsR0FBQSxDQUNBLEdB
QUFpUixHQUFBaFIsR0FBQSxDQUNBLEdBQUF5USxHQUFBaUIsRUFBQWpCLFdBQUF2USxFQUVBLElB
QUF1USxFQUFBOWUsT0FFUyxDQUNULEdBQUFnakIsSUFBQSxDQUNBLElBQUFsRSxFQUFBOWUsU0FB
QXFPLEVBQUFyTyxPQUNBZ2pCLEdBQUEsTUFFQSxRQUFBcEMsR0FBQSxFQUE2QkEsRUFBQXZTLEVB
QUFyTyxPQUF1QjRnQixJQUNwRCxJQUFBbUMsRUFBQWpFLEVBQUE4QixHQUFBdlMsRUFBQXVTLEdB
QUFSLEdBQUEsQ0FDQTRDLEdBQUEsQ0FDQSxPQUlBLElBQUFBLEVBUUEsYUFyQkF2QyxHQUFBeFMs
RUFBQUksRUFBQStSLEdBeUJBZixHQUFBalQsSUFDQXNVLEVBQUF6UyxFQUFBbVMsR0FHQSxTQXpZ
QSxHQUFBcmdCLEdBQUE0VCxFQUNBbUMsS0FFQXBULEVBQUFtZCxFQUFBbmQsUUFDQXFkLEVBQUFG
LEVBQUFFLE9BRUEsS0FBQWhnQixFQUFBLEVBQWFBLEVBQUFrakIsR0FBQWpqQixTQUFvQkQsRUFF
akMsSUFEQStWLEVBQUFtTixHQUFBbGpCLE9BQ0E0VCxFQUFBLEVBQWVBLEVBQUFqUixFQUFBMUMs
U0FBb0IyVCxFQUNuQ2xLLFNBQUEvRyxFQUFBaVIsR0FBQXNQLEdBQUFsakIsS0FBaUQrVixFQUFB
bU4sR0FBQWxqQixJQUFBeUUsS0FBQTlCLEVBQUFpUixHQUFBc1AsR0FBQWxqQixJQThZakQsaUJB
QUEwVixFQUFBeEgsRUFBQXlELEVBQUFtUSxHQUNBLElBQUE1VCxFQUVBLFlBREF3SCxHQUFxQjBM
LEVBQUExTCxHQUlyQixJQUFBbEgsR0FBQXZHLEVBQ0FrYixHQUFBLEVBQ0E5QyxJQUVBLElBQUEz
SyxFQUlLLENBQ0wsR0FBQTBOLEdBQUE5RCxHQUFBNUosRUFBQTJOLFNBQ0EsS0FBQUQsR0FBQTdE
LEdBQUE3SixFQUFBeEgsR0FDQXlVLEVBQUFqTixFQUFBeEgsRUFBQW1TLEVBQUF5QixPQUNPLENB
Q1AsR0FBQXNCLEVBQUEsQ0FRQSxHQUpBLElBQUExTixFQUFBMk4sVUFBQTNOLEVBQUE0TixhQUFB
LHFCQUNBNU4sRUFBQTZOLGdCQUFBLG1CQUNBNVIsR0FBQSxHQUVBQSxHQUNBcVIsRUFBQXROLEVB
QUF4SCxFQUFBbVMsR0FFQSxNQURBeUMsR0FBQTVVLEVBQUFtUyxHQUFBLEdBQ0EzSyxDQWFBQSxH
QUFBcUssRUFBQXJLLEdBU0EsR0FQQWxILEVBQUFrSCxFQUFBbEgsSUFDQXZHLEVBQUErWCxFQUFB
cEQsV0FBQXBPLEdBRUE0UixFQUFBbFMsRUFBQW1TLEdBSUFuUyxFQUFBakcsT0FBQSxDQUVBLElB
REEsR0FBQXViLEdBQUF0VixFQUFBakcsT0FDQXViLEdBQ0FBLEVBQUFoVixJQUFBTixFQUFBTSxJ
QUNBZ1YsSUFBQXZiLE1BRUEsSUFBQTJZLEVBQUExUyxHQUNBLE9BQUFsTyxHQUFBLEVBQTJCQSxF
QUFBK1YsRUFBQWxXLE9BQUFJLFNBQXVCRCxFQUNsRCtWLEVBQUFsVyxPQUFBRyxHQUFBOGdCLEdB
QUE1UyxFQUFBakcsUUFLQSxPQUFBQSxHQUNBK1gsRUFBQXpCLGFBQUF0VyxFQUFBaUcsRUFBQU0s
SUFBQXdSLEVBQUFwQixZQUFBcFEsSUFDQThTLEVBQUFyWixHQUFBeU4sR0FBQSxNQUNTNEosR0FB
QTVKLEVBQUFySCxNQUNUK1MsRUFBQTFMLFFBekRBeU4sSUFBQSxFQUNBL0MsRUFBQWxTLEVBQUFt
UyxFQThEQSxPQURBeUMsR0FBQTVVLEVBQUFtUyxFQUFBOEMsR0FDQWpWLEVBQUFNLEtBY0EsUUFB
QWlWLElBQ0EvTixFQUNBeEgsR0FFQSxHQUFBd0gsRUFBQXJKLEtBQUF4RSxZQUFBcUcsRUFBQTdC
LEtBQUF4RSxXQUFBLENBR0EsR0FPQWxILEdBQUEraUIsRUFBQUMsRUFQQUMsRUFBQWxPLElBQUFv
TCxHQUNBK0MsRUFBQUMsR0FBQXBPLEVBQUFySixLQUFBeEUsV0FBQTZOLEVBQUFoSCxTQUNBcVYs
RUFBQUQsR0FBQTVWLEVBQUE3QixLQUFBeEUsV0FBQXFHLEVBQUFRLFNBRUFzVixLQUNBQyxJQUdB
LEtBQUF0akIsSUFBQW9qQixHQUNBTCxFQUFBRyxFQUFBbGpCLEdBQ0FnakIsRUFBQUksRUFBQXBq
QixHQUNBK2lCLEdBUUFDLEVBQUFPLFNBQUFSLEVBQUEzaUIsTUFDQW9qQixHQUFBUixFQUFBLFNB
QUF6VixFQUFBd0gsR0FDQWlPLEVBQUFuZ0IsS0FBQW1nQixFQUFBbmdCLElBQUE0Z0Isa0JBQ0FI
LEVBQUF4ZixLQUFBa2YsS0FUQVEsR0FBQVIsRUFBQSxPQUFBelYsRUFBQXdILEdBQ0FpTyxFQUFB
bmdCLEtBQUFtZ0IsRUFBQW5nQixJQUFBNmdCLFVBQ0FMLEVBQUF2ZixLQUFBa2YsR0FZQSxJQUFB
SyxFQUFBL2pCLE9BQUEsQ0FDQSxHQUFBcWtCLEdBQUEsV0FDQU4sRUFBQS9ILFFBQUEsU0FBQTBI
LEdBQ0FRLEdBQUFSLEVBQUEsV0FBQXpWLEVBQUF3SCxLQUdBa08sR0FDQTVVLEdBQUFkLEVBQUE3
QixLQUFBNkMsT0FBQWhCLEVBQUE3QixLQUFBNkMsU0FBNkQsU0FBQW9WLEVBQUEsY0FFN0RBLElB
WUEsR0FSQUwsRUFBQWhrQixRQUNBK08sR0FBQWQsRUFBQTdCLEtBQUE2QyxPQUFBaEIsRUFBQTdC
LEtBQUE2QyxTQUEyRCx1QkFDM0QrVSxFQUFBaEksUUFBQSxTQUFBMEgsR0FDQVEsR0FBQVIsRUFB
QSxtQkFBQXpWLEVBQUF3SCxNQUVLLGtCQUdMa08sRUFDQSxJQUFBampCLElBQUFrakIsR0FDQUUs
RUFBQXBqQixJQUVBd2pCLEdBQUFOLEVBQUFsakIsR0FBQSxTQUFBK1UsSUFRQSxRQUFBb08sSUFD
QWxjLEVBQ0FPLEdBRUEsR0FBQTNGLEdBQUE1QyxPQUFBQyxPQUFBLEtBQ0EsS0FBQStILEVBQ0Es
TUFBQXBGLEVBRUEsSUFBQXhDLEdBQUEyakIsQ0FDQSxLQUFBM2pCLEVBQUEsRUFBYUEsRUFBQTRI
LEVBQUEzSCxPQUFpQkQsSUFDOUIyakIsRUFBQS9iLEVBQUE1SCxHQUNBMmpCLEVBQUFZLFlBQ0Fa
LEVBQUFZLFVBQUFDLElBRUFoaUIsRUFBQWlpQixHQUFBZCxNQUNBQSxFQUFBbmdCLElBQUFzRixF
QUFBWCxFQUFBMkIsU0FBQSxhQUFBNlosRUFBQW5jLE1BQUEsRUFFQSxPQUFBaEYsR0FHQSxRQUFB
aWlCLElBQUFkLEdBQ0EsTUFBQUEsR0FBQWUsU0FBQWYsRUFBQSxTQUFBL2pCLE9BQUFpRCxLQUFB
OGdCLEVBQUFZLGVBQTRFdGhCLEtBQUEsS0FHNUUsUUFBQWtoQixJQUFBUixFQUFBelUsRUFBQWhC
LEVBQUF3SCxHQUNBLEdBQUF6VSxHQUFBMGlCLEVBQUFuZ0IsS0FBQW1nQixFQUFBbmdCLElBQUEw
TCxFQUNBak8sSUFDQUEsRUFBQWlOLEVBQUFNLElBQUFtVixFQUFBelYsRUFBQXdILEdBV0EsUUFB
QWlQLElBQUFqUCxFQUFBeEgsR0FDQSxHQUFBd0gsRUFBQXJKLEtBQUFpSyxPQUFBcEksRUFBQTdC
LEtBQUFpSyxNQUFBLENBR0EsR0FBQTNWLEdBQUErTyxFQUFBQyxFQUNBbkIsRUFBQU4sRUFBQU0s
SUFDQW9XLEVBQUFsUCxFQUFBckosS0FBQWlLLFVBQ0FBLEVBQUFwSSxFQUFBN0IsS0FBQWlLLFNB
RUFBLEdBQUFwUixTQUNBb1IsRUFBQXBJLEVBQUE3QixLQUFBaUssTUFBQXRVLEtBQXdDc1UsR0FH
eEMsS0FBQTNWLElBQUEyVixHQUNBNUcsRUFBQTRHLEVBQUEzVixHQUNBZ1AsRUFBQWlWLEVBQUFq
a0IsR0FDQWdQLElBQUFELEdBQ0FtVixHQUFBclcsRUFBQTdOLEVBQUErTyxFQUdBLEtBQUEvTyxJ
QUFBaWtCLEdBQ0EsTUFBQXRPLEVBQUEzVixLQUNBbWtCLEdBQUFua0IsR0FDQTZOLEVBQUF1Vyxr
QkFBQUMsR0FBQUMsR0FBQXRrQixJQUNPdWtCLEdBQUF2a0IsSUFDUDZOLEVBQUErVSxnQkFBQTVp
QixLQU1BLFFBQUFra0IsSUFBQW5ULEVBQUEvUSxFQUFBSSxHQUNBb2tCLEdBQUF4a0IsR0FHQXlr
QixHQUFBcmtCLEdBQ0EyUSxFQUFBNlIsZ0JBQUE1aUIsR0FFQStRLEVBQUF1TSxhQUFBdGQsS0FF
R3VrQixHQUFBdmtCLEdBQ0grUSxFQUFBdU0sYUFBQXRkLEVBQUF5a0IsR0FBQXJrQixJQUFBLFVB
QUFBLEVBQUEsZ0JBQ0crakIsR0FBQW5rQixHQUNIeWtCLEdBQUFya0IsR0FDQTJRLEVBQUFxVCxr
QkFBQUMsR0FBQUMsR0FBQXRrQixJQUVBK1EsRUFBQTJULGVBQUFMLEdBQUFya0IsRUFBQUksR0FH
QXFrQixHQUFBcmtCLEdBQ0EyUSxFQUFBNlIsZ0JBQUE1aUIsR0FFQStRLEVBQUF1TSxhQUFBdGQs
RUFBQUksR0FZQSxRQUFBdWtCLElBQUE1UCxFQUFBeEgsR0FDQSxHQUFBd0QsR0FBQXhELEVBQUFN
LElBQ0FuQyxFQUFBNkIsRUFBQTdCLEtBQ0FrWixFQUFBN1AsRUFBQXJKLElBQ0EsSUFBQUEsRUFB
QTJRLGFBQUEzUSxFQUFBNFEsT0FDQXNJLE1BQUF2SSxhQUFBdUksRUFBQXRJLE9BREEsQ0FLQSxH
QUFBdUksR0FBQTdJLEdBQUF6TyxHQUdBdVgsRUFBQS9ULEVBQUFnVSxrQkFDQUQsS0FDQUQsRUFB
QXppQixHQUFBeWlCLEVBQUFySSxHQUFBc0ksS0FJQUQsSUFBQTlULEVBQUFpVSxhQUNBalUsRUFB
QXVNLGFBQUEsUUFBQXVILEdBQ0E5VCxFQUFBaVUsV0FBQUgsSUFZQSxRQUFBSSxJQUFBbFEsRUFB
QXhILEdBQ0EsR0FBQXdILEVBQUFySixLQUFBa0QsSUFBQXJCLEVBQUE3QixLQUFBa0QsR0FBQSxD
QUdBLEdBQUFBLEdBQUFyQixFQUFBN0IsS0FBQWtELE9BQ0FDLEVBQUFrRyxFQUFBckosS0FBQWtE
LE9BQ0E5RCxFQUFBeUMsRUFBQU0sSUFBQXFYLFNBQUEzWCxFQUFBTSxJQUFBcVgsT0FBQSxTQUFB
alcsRUFBQXpDLEVBQUEwQyxHQUNBM0IsRUFBQU0sSUFBQXNYLGlCQUFBbFcsRUFBQXpDLEVBQUEw
QyxLQUVBNlIsRUFBQXhULEVBQUFNLElBQUF1WCxZQUFBN1gsRUFBQU0sSUFBQXVYLFVBQUEsU0FB
QW5XLEVBQUF6QyxHQUNBZSxFQUFBTSxJQUFBd1gsb0JBQUFwVyxFQUFBekMsSUFFQW1DLElBQUFD
LEVBQUFDLEVBQUEvRCxFQUFBaVcsRUFBQXhULEVBQUFRLFVBVUEsUUFBQXVYLElBQUF2USxFQUFB
eEgsR0FDQSxHQUFBd0gsRUFBQXJKLEtBQUFrSyxVQUFBckksRUFBQTdCLEtBQUFrSyxTQUFBLENB
R0EsR0FBQTVWLEdBQUErTyxFQUNBbEIsRUFBQU4sRUFBQU0sSUFDQTBYLEVBQUF4USxFQUFBckos
S0FBQWtLLGFBQ0FoUCxFQUFBMkcsRUFBQTdCLEtBQUFrSyxZQUVBaFAsR0FBQXJDLFNBQ0FxQyxF
QUFBMkcsRUFBQTdCLEtBQUFrSyxTQUFBdlUsS0FBMkN1RixHQUczQyxLQUFBNUcsSUFBQXVsQixH
QUNBLE1BQUEzZSxFQUFBNUcsS0FDQTZOLEVBQUE3TixHQUFBLEdBR0EsS0FBQUEsSUFBQTRHLEdB
S0EsR0FKQW1JLEVBQUFuSSxFQUFBNUcsR0FJQSxnQkFBQUEsR0FBQSxjQUFBQSxJQUNBdU4sRUFB
QUksV0FBMkJKLEVBQUFJLFNBQUFyTyxPQUFBLEdBQzNCeVAsSUFBQXdXLEVBQUF2bEIsSUFFQSxh
QUFBQSxFQUFBLENBR0E2TixFQUFBMlgsT0FBQXpXLENBRUEsSUFBQTBXLEdBQUEsTUFBQTFXLEVB
QUEsR0FBQXRRLE9BQUFzUSxFQUNBbEIsR0FBQXpOLFFBQUFxbEIsR0FBQTVYLEVBQUE2WCxZQUNB
N1gsRUFBQXpOLE1BQUFxbEIsT0FHQTVYLEdBQUE3TixHQUFBK08sR0E0QkEsUUFBQTRXLElBQUFq
YSxHQUNBLEdBQUFrYSxHQUFBQyxHQUFBbmEsRUFBQWthLE1BR0EsT0FBQWxhLEdBQUFvYSxZQUNB
emtCLEVBQUFxSyxFQUFBb2EsWUFBQUYsR0FDQUEsRUFJQSxRQUFBQyxJQUFBRSxHQUNBLE1BQUEz
a0IsT0FBQXdELFFBQUFtaEIsR0FDQW5rQixFQUFBbWtCLEdBRUEsZ0JBQUFBLEdBQ0FDLEdBQUFE
LEdBRUFBLEVBT0EsUUFBQUUsSUFBQTFZLEVBQUEyWSxHQUNBLEdBQ0FDLEdBREF0a0IsSUFHQSxJ
QUFBcWtCLEVBRUEsSUFEQSxHQUFBaEssR0FBQTNPLEVBQ0EyTyxFQUFBM1UsT0FDQTJVLElBQUEz
VSxNQUFBcUssT0FDQXNLLEVBQUF4USxPQUFBeWEsRUFBQVIsR0FBQXpKLEVBQUF4USxRQUNBckss
RUFBQVEsRUFBQXNrQixJQUtBQSxFQUFBUixHQUFBcFksRUFBQTdCLFFBQ0FySyxFQUFBUSxFQUFB
c2tCLEVBSUEsS0FEQSxHQUFBbEssR0FBQTFPLEVBQ0EwTyxJQUFBM1UsUUFDQTJVLEVBQUF2USxP
QUFBeWEsRUFBQVIsR0FBQTFKLEVBQUF2USxRQUNBckssRUFBQVEsRUFBQXNrQixFQUdBLE9BQUF0
a0IsR0FpQ0EsUUFBQXVrQixJQUFBclIsRUFBQXhILEdBQ0EsR0FBQTdCLEdBQUE2QixFQUFBN0Is
S0FDQWtaLEVBQUE3UCxFQUFBckosSUFFQSxJQUFBQSxFQUFBb2EsYUFBQXBhLEVBQUFrYSxPQUNB
aEIsRUFBQWtCLGFBQUFsQixFQUFBZ0IsTUFEQSxDQUtBLEdBQUE3VyxHQUFBbEksRUFDQWtLLEVB
QUF4RCxFQUFBTSxJQUNBd1ksRUFBQXRSLEVBQUFySixLQUFBb2EsWUFDQVEsRUFBQXZSLEVBQUFy
SixLQUFBa2EsVUFHQVcsRUFBQUYsR0FBQUMsRUFFQVYsRUFBQUMsR0FBQXRZLEVBQUE3QixLQUFB
a2EsVUFFQXJZLEdBQUE3QixLQUFBa2EsUUFBQXJoQixPQUFBbEQsS0FBNkN1a0IsSUFFN0MsSUFB
QVksR0FBQVAsR0FBQTFZLEdBQUEsRUFFQSxLQUFBMUcsSUFBQTBmLEdBQ0EsTUFBQUMsRUFBQTNm
LElBQ0E0ZixHQUFBMVYsRUFBQWxLLEVBQUEsR0FHQSxLQUFBQSxJQUFBMmYsR0FDQXpYLEVBQUF5
WCxFQUFBM2YsR0FDQWtJLElBQUF3WCxFQUFBMWYsSUFFQTRmLEdBQUExVixFQUFBbEssRUFBQSxN
QUFBa0ksRUFBQSxHQUFBQSxJQWdCQSxRQUFBMlgsSUFBQTNWLEVBQUE4VCxHQUVBLEdBQUFBLEtB
QUE4QixPQUtBLEdBQUE1VixFQUFBNlYsVUFDQS9CLEVBQUFqbEIsUUFBQSxRQUNBaWxCLEVBQUF6
bEIsTUFBQSxPQUFBa2MsUUFBQSxTQUFBM1ksR0FBNkMsTUFBQW9PLEdBQUE2VixVQUFBOWIsSUFB
QW5JLEtBRTdDb08sRUFBQTZWLFVBQUE5YixJQUFBK1osT0FFRyxDQUNILEdBQUE5VixHQUFBLElB
QUFnQyxFQUFBOFYsYUFBQSxZQUNBOVgsR0FBQW5QLFFBQUEsSUFBQWlsQixFQUFBLFFBQ0E5VCxF
QUFBdU0sYUFBQSxTQUFBdk8sRUFBQThWLEdBQUE4QixTQVNBLFFBQUFHLElBQUEvVixFQUFBOFQs
R0FFQSxHQUFBQSxLQUFBOEIsT0FLQSxHQUFBNVYsRUFBQTZWLFVBQ0EvQixFQUFBamxCLFFBQUEs
UUFDQWlsQixFQUFBemxCLE1BQUEsT0FBQWtjLFFBQUEsU0FBQTNZLEdBQTZDLE1BQUFvTyxHQUFB
NlYsVUFBQTdGLE9BQUFwZSxLQUU3Q29PLEVBQUE2VixVQUFBN0YsT0FBQThELE9BRUcsQ0FHSCxJ
QUZBLEdBQUE5VixHQUFBLElBQUFnQyxFQUFBOFYsYUFBQSxhQUNBRSxFQUFBLElBQUFsQyxFQUFB
LElBQ0E5VixFQUFBblAsUUFBQW1uQixJQUFBLEdBQ0FoWSxJQUFBaVksUUFBQUQsRUFBQSxJQUVB
aFcsR0FBQXVNLGFBQUEsUUFBQXZPLEVBQUE0WCxTQThCQSxRQUFBTSxJQUFBM21CLEdBQ0E0bUIs
R0FBQSxXQUNBQSxHQUFBNW1CLEtBSUEsUUFBQTZtQixJQUFBcFcsRUFBQThULElBQ0E5VCxFQUFB
Z1UscUJBQUFoVSxFQUFBZ1Usd0JBQUFqaEIsS0FBQStnQixHQUNBNkIsR0FBQTNWLEVBQUE4VCxH
QUdBLFFBQUF1QyxJQUFBclcsRUFBQThULEdBQ0E5VCxFQUFBZ1Usb0JBQ0F2bEIsRUFBQXVSLEVB
QUFnVSxtQkFBQUYsR0FFQWlDLEdBQUEvVixFQUFBOFQsR0FHQSxRQUFBd0MsSUFDQXRXLEVBQ0F1
VyxFQUNBcGEsR0FFQSxHQUFBc0ssR0FBQStQLEdBQUF4VyxFQUFBdVcsR0FDQXZnQixFQUFBeVEs
RUFBQXpRLEtBQ0F5Z0IsRUFBQWhRLEVBQUFnUSxRQUNBQyxFQUFBalEsRUFBQWlRLFNBQ0EsS0FB
QTFnQixFQUFjLE1BQUFtRyxJQUNkLElBQUErQixHQUFBbEksSUFBQTJnQixHQUFBQyxHQUFBQyxH
QUNBQyxFQUFBLEVBQ0FDLEVBQUEsV0FDQS9XLEVBQUFzVSxvQkFBQXBXLEVBQUE4WSxHQUNBN2Es
S0FFQTZhLEVBQUEsU0FBQTloQixHQUNBQSxFQUFBckMsU0FBQW1OLEtBQ0E4VyxHQUFBSixHQUNB
SyxJQUlBRSxZQUFBLFdBQ0FILEVBQUFKLEdBQ0FLLEtBRUdOLEVBQUEsR0FDSHpXLEVBQUFvVSxp
QkFBQWxXLEVBQUE4WSxHQUtBLFFBQUFSLElBQUF4VyxFQUFBdVcsR0FDQSxHQVFBdmdCLEdBUkFr
aEIsRUFBQWxMLE9BQUFtTCxpQkFBQW5YLEdBQ0FvWCxFQUFBRixFQUFBRyxHQUFBLFNBQUFocEIs
TUFBQSxNQUNBaXBCLEVBQUFKLEVBQUFHLEdBQUEsWUFBQWhwQixNQUFBLE1BQ0FrcEIsRUFBQUMs
R0FBQUosRUFBQUUsR0FDQUcsRUFBQVAsRUFBQVEsR0FBQSxTQUFBcnBCLE1BQUEsTUFDQXNwQixF
QUFBVCxFQUFBUSxHQUFBLFlBQUFycEIsTUFBQSxNQUNBdXBCLEVBQUFKLEdBQUFDLEVBQUFFLEdB
R0FsQixFQUFBLEVBQ0FDLEVBQUEsQ0FFQUgsS0FBQUksR0FDQVksRUFBQSxJQUNBdmhCLEVBQUEy
Z0IsR0FDQUYsRUFBQWMsRUFDQWIsRUFBQVksRUFBQS9vQixRQUVHZ29CLElBQUFzQixHQUNIRCxF
QUFBLElBQ0E1aEIsRUFBQTZoQixHQUNBcEIsRUFBQW1CLEVBQ0FsQixFQUFBaUIsRUFBQXBwQixT
QUdBa29CLEVBQUEzaEIsS0FBQUMsSUFBQXdpQixFQUFBSyxHQUNBNWhCLEVBQUF5Z0IsRUFBQSxF
QUNBYyxFQUFBSyxFQUNBakIsR0FDQWtCLEdBQ0EsS0FDQW5CLEVBQUExZ0IsRUFDQUEsSUFBQTJn
QixHQUNBVyxFQUFBL29CLE9BQ0FvcEIsRUFBQXBwQixPQUNBLEVBRUEsSUFBQXVwQixHQUNBOWhC
LElBQUEyZ0IsSUFDQW9CLEdBQUF6bEIsS0FBQTRrQixFQUFBRyxHQUFBLFlBQ0EsUUFDQXJoQixP
QUNBeWdCLFVBQ0FDLFlBQ0FvQixnQkFJQSxRQUFBTixJQUFBUSxFQUFBQyxHQUVBLEtBQUFELEVB
QUF6cEIsT0FBQTBwQixFQUFBMXBCLFFBQ0F5cEIsSUFBQTNtQixPQUFBMm1CLEVBR0EsT0FBQWxq
QixNQUFBQyxJQUFBL0UsTUFBQSxLQUFBaW9CLEVBQUFocUIsSUFBQSxTQUFBaXFCLEVBQUE1cEIs
R0FDQSxNQUFBNnBCLElBQUFELEdBQUFDLEdBQUFILEVBQUExcEIsT0FJQSxRQUFBNnBCLElBQUF4
SyxHQUNBLFdBQUF5SyxPQUFBekssRUFBQXRQLE1BQUEsT0FLQSxRQUFBZ2EsSUFBQTdiLEdBQ0Es
R0FBQXdELEdBQUF4RCxFQUFBTSxHQUdBa0QsR0FBQXNZLFdBQ0F0WSxFQUFBc1ksU0FBQUMsV0FB
QSxFQUNBdlksRUFBQXNZLFdBR0EsSUFBQTNkLEdBQUE2ZCxHQUFBaGMsRUFBQTdCLEtBQUE4ZCxX
QUNBLElBQUE5ZCxJQUtBcUYsRUFBQTBZLFVBQUEsSUFBQTFZLEVBQUEyUixTQUFBLENBSUEsR0FB
QWdILEdBQUFoZSxFQUFBZ2UsSUFDQTNpQixFQUFBMkUsRUFBQTNFLEtBQ0E0aUIsRUFBQWplLEVB
QUFpZSxXQUNBQyxFQUFBbGUsRUFBQWtlLGlCQUNBQyxFQUFBbmUsRUFBQW1lLFlBQ0FDLEVBQUFw
ZSxFQUFBb2Usa0JBQ0FDLEVBQUFyZSxFQUFBcWUsWUFDQVgsRUFBQTFkLEVBQUEwZCxNQUNBWSxF
QUFBdGUsRUFBQXNlLFdBQ0FDLEVBQUF2ZSxFQUFBdWUsZUFDQUMsRUFBQXhlLEVBQUF3ZSxhQUNB
QyxFQUFBemUsRUFBQXllLE9BQ0FDLEVBQUExZSxFQUFBMGUsWUFDQUMsRUFBQTNlLEVBQUEyZSxn
QkFNQUMsRUFBQTVZLEdBQUFILE9BQ0F4RCxFQUFBdWMsS0FBQWhqQixPQUNBZ2pCLEVBQUFoakIs
T0FBQXlHLFFBQ0EyRCxHQUVBNlksR0FBQXhjLEVBQUEyQyxhQUFBbkQsRUFBQXFTLFlBRUEsS0FB
QTJLLEdBQUFKLEdBQUEsS0FBQUEsRUFBQSxDQUlBLEdBQUFLLEdBQUFELEVBQUFWLEVBQUFGLEVB
Q0FjLEVBQUFGLEVBQUFULEVBQUFGLEVBQ0FjLEVBQUFILEVBQUFMLEdBQUFILElBQ0FZLEVBQUFK
LEdBQUEsa0JBQUFKLEtBQUFmLEVBQ0F3QixFQUFBTCxFQUFBSCxHQUFBSixJQUNBYSxFQUFBTixF
QUFBRixHQUFBSixJQUVBYSxFQUFBcEIsS0FBQSxJQUFBcUIsR0FDQUMsRUFDQUwsSUFHQUEsRUFB
QTNwQixTQUFBMnBCLEVBQUFyckIsUUFBQSxFQUVBNE4sRUFBQTZELEVBQUEwWSxTQUFBd0IsR0FB
QSxXQUNBSCxHQUNBMUQsR0FBQXJXLEVBQUEwWixHQUVBdmQsRUFBQW9jLFdBQ0F3QixHQUNBMUQs
R0FBQXJXLEVBQUF5WixHQUVBSyxLQUFBOVosSUFFQTZaLEtBQUE3WixHQUVBQSxFQUFBMFksU0FB
QSxNQUdBbGMsR0FBQTdCLEtBQUF3ZixNQUVBN2MsR0FBQWQsRUFBQTdCLEtBQUE2QyxPQUFBaEIs
RUFBQTdCLEtBQUE2QyxTQUEyRCxvQkFDM0QsR0FBQWpILEdBQUF5SixFQUFBa0wsV0FDQWtQLEVB
QUE3akIsS0FBQThqQixVQUFBOWpCLEVBQUE4akIsU0FBQTdkLEVBQUF2TixJQUNBbXJCLE1BQUF6
ZCxNQUFBSCxFQUFBRyxLQUFBeWQsRUFBQXRkLElBQUF3YixVQUNBOEIsRUFBQXRkLElBQUF3YixX
QUVBc0IsS0FBQTVaLEVBQUE3RCxJQUNLLHFCQUlMd2QsS0FBQTNaLEdBQ0ErWixJQUNBM0QsR0FB
QXBXLEVBQUF5WixHQUNBckQsR0FBQXBXLEVBQUEwWixHQUNBeEQsR0FBQSxXQUNBRyxHQUFBclcs
RUFBQXlaLEdBQ0F0ZCxFQUFBb2MsV0FBQTBCLEdBQ0EzRCxHQUFBdFcsRUFBQWhLLEVBQUFtRyxN
QUtBSyxFQUFBN0IsS0FBQXdmLE1BQ0FQLEtBQUE1WixFQUFBN0QsR0FHQTRkLEdBQUFFLEdBQ0E5
ZCxNQUlBLFFBQUFtZSxJQUFBOWQsRUFBQXVULEdBNkRBLFFBQUF3SyxLQUVBcGUsRUFBQW9jLFlB
SUEvYixFQUFBN0IsS0FBQXdmLFFBQ0FuYSxFQUFBa0wsV0FBQW1QLFdBQUFyYSxFQUFBa0wsV0FB
QW1QLGNBQTZEN2QsRUFBQXZOLEtBQUF1TixHQUU3RGdlLEtBQUF4YSxHQUNBK1osSUFDQTNELEdB
QUFwVyxFQUFBeWEsR0FDQXJFLEdBQUFwVyxFQUFBMGEsR0FDQXhFLEdBQUEsV0FDQUcsR0FBQXJX
LEVBQUF5YSxHQUNBdGUsRUFBQW9jLFdBQUEwQixHQUNBM0QsR0FBQXRXLEVBQUFoSyxFQUFBbUcs
TUFJQW1lLEtBQUF0YSxFQUFBN0QsR0FDQTRkLEdBQUFFLEdBQ0E5ZCxLQWxGQSxHQUFBNkQsR0FB
QXhELEVBQUFNLEdBR0FrRCxHQUFBMFksV0FDQTFZLEVBQUEwWSxTQUFBSCxXQUFBLEVBQ0F2WSxF
QUFBMFksV0FHQSxJQUFBL2QsR0FBQTZkLEdBQUFoYyxFQUFBN0IsS0FBQThkLFdBQ0EsS0FBQTlk
LEVBQ0EsTUFBQW9WLElBSUEsS0FBQS9QLEVBQUFzWSxVQUFBLElBQUF0WSxFQUFBMlIsU0FBQSxD
QUlBLEdBQUFnSCxHQUFBaGUsRUFBQWdlLElBQ0EzaUIsRUFBQTJFLEVBQUEzRSxLQUNBeWtCLEVB
QUE5ZixFQUFBOGYsV0FDQUMsRUFBQS9mLEVBQUErZixpQkFDQUYsRUFBQTdmLEVBQUE2ZixZQUNB
RixFQUFBM2YsRUFBQTJmLE1BQ0FLLEVBQUFoZ0IsRUFBQWdnQixXQUNBQyxFQUFBamdCLEVBQUFp
Z0IsZUFDQUMsRUFBQWxnQixFQUFBa2dCLFdBRUFkLEVBQUFwQixLQUFBLElBQUFxQixHQUNBQyxF
QUNBSyxJQUdBQSxFQUFBcnFCLFNBQUFxcUIsRUFBQS9yQixRQUFBLEVBRUE0TixFQUFBNkQsRUFB
QXNZLFNBQUE0QixHQUFBLFdBQ0FsYSxFQUFBa0wsWUFBQWxMLEVBQUFrTCxXQUFBbVAsV0FDQXJh
LEVBQUFrTCxXQUFBbVAsU0FBQTdkLEVBQUF2TixLQUFBLE1BRUE4cUIsR0FDQTFELEdBQUFyVyxF
QUFBMGEsR0FFQXZlLEVBQUFvYyxXQUNBd0IsR0FDQTFELEdBQUFyVyxFQUFBeWEsR0FFQUcsS0FB
QTVhLEtBRUErUCxJQUNBNEssS0FBQTNhLElBRUFBLEVBQUFzWSxTQUFBLE1BR0F1QyxHQUNBQSxF
QUFBTixHQUVBQSxLQThCQSxRQUFBL0IsSUFBQXNDLEdBQ0EsR0FBQUEsRUFBQSxDQUlBLG1CQUFB
QSxHQUFBLENBQ0EsR0FBQWhxQixLQUtBLE9BSkFncUIsR0FBQW5DLE9BQUEsR0FDQXJvQixFQUFB
USxFQUFBaXFCLEdBQUFELEVBQUFobEIsTUFBQSxNQUVBeEYsRUFBQVEsRUFBQWdxQixHQUNBaHFC
LEVBQ0csc0JBQUFncUIsR0FDSEMsR0FBQUQsR0FERyxRQWdCSCxRQUFBWixJQUFBM3FCLEdBQ0Es
R0FBQXlyQixJQUFBLENBQ0EsbUJBQ0FBLElBQ0FBLEdBQUEsRUFDQXpyQixNQTRHQSxRQUFBMHJC
LElBQUFqYixFQUFBa2IsRUFBQXprQixHQUNBLEdBQUFwSCxHQUFBNnJCLEVBQUE3ckIsTUFDQThy
QixFQUFBbmIsRUFBQW9iLFFBQ0EsS0FBQUQsR0FBQTlxQixNQUFBd0QsUUFBQXhFLEdBQUE7QUFT
QSxPQURBZ3NCLEdBQUFDLEVBQ0FodEIsRUFBQSxFQUFBd0IsRUFBQWtRLEVBQUFwSyxRQUFBckgs
T0FBd0NELEVBQUF3QixFQUFPeEIsSUFFL0MsR0FEQWd0QixFQUFBdGIsRUFBQXBLLFFBQUF0SCxH
QUNBNnNCLEVBQ0FFLEVBQUEzcEIsRUFBQXJDLEVBQUFrc0IsR0FBQUQsS0FBQSxFQUNBQSxFQUFB
RCxlQUNBQyxFQUFBRCxnQkFHQSxJQUFBN3BCLEVBQUErcEIsR0FBQUQsR0FBQWpzQixHQUlBLFlB
SEEyUSxFQUFBd2IsZ0JBQUFsdEIsSUFDQTBSLEVBQUF3YixjQUFBbHRCLEdBTUE2c0IsS0FDQW5i
LEVBQUF3YixlQUFBLElBSUEsUUFBQUMsSUFBQXBzQixFQUFBdUcsR0FDQSxPQUFBdEgsR0FBQSxF
QUFBd0IsRUFBQThGLEVBQUFySCxPQUFxQ0QsRUFBQXdCLEVBQU94QixJQUM1QyxHQUFBa0QsRUFB
QStwQixHQUFBM2xCLEVBQUF0SCxJQUFBZSxHQUNBLFFBR0EsVUFHQSxRQUFBa3NCLElBQUFELEdB
Q0EsZ0JBQUFBLEdBQ0FBLEVBQUE3RyxPQUNBNkcsRUFBQWpzQixNQUdBLFFBQUFxc0IsSUFBQXht
QixHQUNBQSxFQUFBckMsT0FBQThoQixXQUFBLEVBR0EsUUFBQWdILElBQUF6bUIsR0FDQUEsRUFB
QXJDLE9BQUE4aEIsV0FBQSxFQUNBaUgsR0FBQTFtQixFQUFBckMsT0FBQSxTQUdBLFFBQUErb0Is
SUFBQTViLEVBQUFoSyxHQUNBLEdBQUFkLEdBQUE2VyxTQUFBOFAsWUFBQSxhQUNBM21CLEdBQUE0
bUIsVUFBQTlsQixHQUFBLE1BQ0FnSyxFQUFBK2IsY0FBQTdtQixHQU1BLFFBQUE4bUIsSUFBQXhm
LEdBQ0EsT0FBQUEsRUFBQWhHLE9BQUFnRyxFQUFBN0IsTUFBQTZCLEVBQUE3QixLQUFBOGQsV0FF
QWpjLEVBREF3ZixHQUFBeGYsRUFBQWhHLE1BQUFxSyxRQWtFQSxRQUFBb2IsSUFBQXpmLEdBQ0Es
R0FBQTBmLEdBQUExZixLQUFBUyxnQkFDQSxPQUFBaWYsTUFBQXpwQixLQUFBbUQsUUFBQXlKLFNB
Q0E0YyxHQUFBL2MsR0FBQWdkLEVBQUF0ZixXQUVBSixFQUlBLFFBQUEyZixJQUFBQyxHQUNBLEdB
QUF6aEIsTUFDQS9FLEVBQUF3bUIsRUFBQWhrQixRQUVBLFFBQUFuSixLQUFBMkcsR0FBQStCLFVB
Q0FnRCxFQUFBMUwsR0FBQW10QixFQUFBbnRCLEVBSUEsSUFBQWdTLEdBQUFyTCxFQUFBNkwsZ0JB
Q0EsUUFBQTRhLEtBQUFwYixHQUNBdEcsRUFBQTVFLEdBQUFzbUIsSUFBQXBiLEVBQUFvYixHQUFB
OXNCLEVBRUEsT0FBQW9MLEdBR0EsUUFBQTJoQixJQUFBQyxFQUFBQyxHQUNBLHVCQUFBbHFCLEtB
QUFrcUIsRUFBQTdmLEtBQ0E0ZixFQUFBLGNBQ0EsS0FHQSxRQUFBRSxJQUFBamdCLEdBQ0EsS0FB
QUEsSUFBQWpHLFFBQ0EsR0FBQWlHLEVBQUE3QixLQUFBOGQsV0FDQSxTQTJPQSxRQUFBaUUsSUFB
QTlxQixHQUVBQSxFQUFBa0wsSUFBQTZmLFNBQ0EvcUIsRUFBQWtMLElBQUE2ZixVQUdBL3FCLEVB
QUFrTCxJQUFBNGIsVUFDQTltQixFQUFBa0wsSUFBQTRiLFdBSUEsUUFBQWtFLElBQUFockIsR0FD
QUEsRUFBQStJLEtBQUFraUIsT0FBQWpyQixFQUFBa0wsSUFBQWdnQix3QkFHQSxRQUFBQyxJQUFB
bnJCLEdBQ0EsR0FBQW9yQixHQUFBcHJCLEVBQUErSSxLQUFBc2lCLElBQ0FKLEVBQUFqckIsRUFB
QStJLEtBQUFraUIsT0FDQUssRUFBQUYsRUFBQUcsS0FBQU4sRUFBQU0sS0FDQUMsRUFBQUosRUFB
QUssSUFBQVIsRUFBQVEsR0FDQSxJQUFBSCxHQUFBRSxFQUFBLENBQ0F4ckIsRUFBQStJLEtBQUEy
aUIsT0FBQSxDQUNBLElBQUEzUCxHQUFBL2IsRUFBQWtMLElBQUErWCxLQUNBbEgsR0FBQTRQLFVB
QUE1UCxFQUFBNlAsZ0JBQUEsYUFBQU4sRUFBQSxNQUFBRSxFQUFBLE1BQ0F6UCxFQUFBOFAsbUJB
QUEsTUFzREEsUUFBQUMsSUFBQUMsRUFBQUMsR0FDQSxHQUFBQyxHQUFBOVIsU0FBQS9JLGNBQUEs
TUFFQSxPQURBNmEsR0FBQUMsVUFBQSxXQUFBSCxFQUFBLEtBQ0FFLEVBQUFDLFVBQUFqdkIsUUFB
QSt1QixHQUFBLEVBV0EsUUFBQUcsSUFBQUMsR0FHQSxNQUZBQyxRQUFBbFMsU0FBQS9JLGNBQUEs
T0FDQWliLEdBQUFILFVBQUFFLEVBQ0FDLEdBQUE3USxZQXlFQSxRQUFBOFEsSUFBQTd1QixFQUFB
OHVCLEdBSUEsTUFIQUEsS0FDQTl1QixJQUFBNG1CLFFBQUFtSSxHQUFBLE9BRUEvdUIsRUFDQTRt
QixRQUFBb0ksR0FBQSxLQUNBcEksUUFBQXFJLEdBQUEsS0FDQXJJLFFBQUFzSSxHQUFBLEtBQ0F0
SSxRQUFBdUksR0FBQSxLQUdBLFFBQUFDLElBQUFULEVBQUFwb0IsR0FpSEEsUUFBQThvQixHQUFB
OXdCLEdBQ0FnQixHQUFBaEIsRUFDQW93QixJQUFBVyxVQUFBL3dCLEdBR0EsUUFBQWd4QixLQUNB
LEdBQUF6dUIsR0FBQTZ0QixFQUFBemxCLE1BQUFzbUIsR0FDQSxJQUFBMXVCLEVBQUEsQ0FDQSxH
QUFBb0ksSUFDQStULFFBQUFuYyxFQUFBLEdBQ0F5VSxTQUNBelUsTUFBQXZCLEVBRUE4dkIsR0FB
QXZ1QixFQUFBLEdBQUE1QixPQUVBLEtBREEsR0FBQXdvQixHQUFBK0gsSUFDQS9ILEVBQUFpSCxF
QUFBemxCLE1BQUF3bUIsT0FBQUQsRUFBQWQsRUFBQXpsQixNQUFBeW1CLE1BQ0FOLEVBQUFJLEVB
QUEsR0FBQXZ3QixRQUNBZ0ssRUFBQXFNLE1BQUE3UixLQUFBK3JCLEVBRUEsSUFBQS9ILEVBSUEs
TUFIQXhlLEdBQUEwbUIsV0FBQWxJLEVBQUEsR0FDQTJILEVBQUEzSCxFQUFBLEdBQUF4b0IsUUFD
QWdLLEVBQUF3ZSxJQUFBbm9CLEVBQ0EySixHQUtBLFFBQUEybUIsR0FBQTNtQixHQUNBLEdBQUEr
VCxHQUFBL1QsRUFBQStULFFBQ0EyUyxFQUFBMW1CLEVBQUEwbUIsVUFFQUUsS0FDQSxNQUFBQyxH
QUFBQyxHQUFBL1MsSUFDQWdULEVBQUEsR0FBQUYsR0FFQUcsR0FBQWpULElBQUE4UyxJQUFBOVMs
R0FDQWdULEVBQUEsR0FBQWhULEdBUUEsUUFKQWtULEdBQUFDLEVBQUFuVCxJQUFBLFNBQUFBLEdB
QUEsU0FBQThTLEtBQUFILEVBRUFudkIsRUFBQXlJLEVBQUFxTSxNQUFBclcsT0FDQXFXLEVBQUEs
R0FBQXZVLE9BQUFQLEdBQ0F4QixFQUFBLEVBQW1CQSxFQUFBd0IsRUFBT3hCLElBQUEsQ0FDMUIs
R0FBQXFhLEdBQUFwUSxFQUFBcU0sTUFBQXRXLEVBRUFveEIsS0FBQS9XLEVBQUEsR0FBQTlaLFFB
QUEsYUFDQSxLQUFBOFosRUFBQSxVQUE2QkEsR0FBQSxHQUM3QixLQUFBQSxFQUFBLFVBQTZCQSxH
QUFBLEdBQzdCLEtBQUFBLEVBQUEsVUFBNkJBLEdBQUEsR0FFN0IsSUFBQXRaLEdBQUFzWixFQUFB
LElBQUFBLEVBQUEsSUFBQUEsRUFBQSxNQUNBL0QsR0FBQXRXLElBQ0F3SCxLQUFBNlMsRUFBQSxH
QUNBdFosTUFBQTZ1QixHQUNBN3VCLEVBQ0F1RyxFQUFBdW9CLHVCQUtBcUIsSUFDQUcsRUFBQTVz
QixNQUFrQjRKLElBQUEyUCxFQUFBMUgsVUFDbEJ3YSxFQUFBOVMsRUFDQTJTLEVBQUEsSUFHQXJw
QixFQUFBekYsT0FDQXlGLEVBQUF6RixNQUFBbWMsRUFBQTFILEVBQUE0YSxFQUFBam5CLEVBQUFw
SSxNQUFBb0ksRUFBQXdlLEtBSUEsUUFBQXVJLEdBQUEzaUIsRUFBQTJQLEVBQUFuYyxFQUFBNG1C
LEdBQ0EsR0FBQWtHLEVBS0EsSUFKQSxNQUFBOXNCLElBQXdCQSxFQUFBdkIsR0FDeEIsTUFBQW1v
QixJQUFzQkEsRUFBQW5vQixHQUd0QjBkLEVBQUEsQ0FDQSxHQUFBc1QsR0FBQXRULEVBQUE5ZCxh
QUNBLEtBQUF5dUIsRUFBQTBDLEVBQUFweEIsT0FBQSxFQUFrQzB1QixHQUFBLEdBQ2xDMEMsRUFB
QTFDLEdBQUF0Z0IsSUFBQW5PLGdCQUFBb3hCLEVBRDRDM0MsVUFPNUNBLEdBQUEsQ0FHQSxJQUFB
QSxHQUFBLEdBRUEsT0FBQTN1QixHQUFBcXhCLEVBQUFweEIsT0FBQSxFQUFvQ0QsR0FBQTJ1QixF
QUFVM3VCLElBQzlDc0gsRUFBQW1oQixLQUNBbmhCLEVBQUFtaEIsSUFBQTRJLEVBQUFyeEIsR0FB
QXFPLElBQUF4TSxFQUFBNG1CLEVBS0E0SSxHQUFBcHhCLE9BQUEwdUIsRUFDQW1DLEVBQUFuQyxH
QUFBMEMsRUFBQTFDLEVBQUEsR0FBQXRnQixRQUNLLE9BQUEyUCxFQUFBOWQsY0FDTG9ILEVBQUF6
RixPQUNBeUYsRUFBQXpGLE1BQUFtYyxNQUFBLEVBQUFuYyxFQUFBNG1CLEdBRUssTUFBQXpLLEVB
QUE5ZCxnQkFDTG9ILEVBQUF6RixPQUNBeUYsRUFBQXpGLE1BQUFtYyxNQUFBLEVBQUFuYyxFQUFB
NG1CLEdBRUFuaEIsRUFBQW1oQixLQUNBbmhCLEVBQUFtaEIsSUFBQXpLLEVBQUFuYyxFQUFBNG1C
LElBM05BLElBTEEsR0FJQS9YLEdBQUFvZ0IsRUFKQU8sS0FDQVIsRUFBQXZwQixFQUFBdXBCLFdB
Q0FNLEVBQUE3cEIsRUFBQWlxQixZQUFBQyxHQUNBbHhCLEVBQUEsRUFFQW92QixHQUFBLENBR0Es
R0FGQWhmLEVBQUFnZixFQUVBb0IsR0FBQVcsR0FBQVgsRUFBQXhwQixFQUFBb3FCLElBQUFMLEdB
MEVLLENBQ0wsR0FBQU0sR0FBQWIsRUFBQTV3QixjQUNBMHhCLEVBQUFDLEdBQUFGLEtBQUFFLEdB
QUFGLEdBQUEsR0FBQUcsUUFBQSxrQkFBQUgsRUFBQSxnQkFDQUksRUFBQSxFQUNBQyxFQUFBdEMs
RUFBQS9ILFFBQUFpSyxFQUFBLFNBQUFLLEVBQUExakIsRUFBQTJqQixHQVVBLE1BVEFILEdBQUFH
LEVBQUFqeUIsT0FDQSxXQUFBMHhCLEdBQUEsVUFBQUEsR0FBQSxhQUFBQSxJQUNBcGpCLElBQ0Fv
WixRQUFBLDJCQUNBQSxRQUFBLG1DQUVBcmdCLEVBQUE2cUIsT0FDQTdxQixFQUFBNnFCLE1BQUE1
akIsR0FFQSxJQUVBak8sSUFBQW92QixFQUFBenZCLE9BQUEreEIsRUFBQS94QixPQUNBeXZCLEVB
QUFzQyxFQUNBaEIsRUFBQSxLQUFBVyxFQUFBLElBQUFBLEVBQUFyeEIsRUFBQXl4QixFQUFBenhC
LE9BNUZBLENBQ0EsR0FBQTh4QixHQUFBMUMsRUFBQW52QixRQUFBLElBQ0EsUUFBQTZ4QixFQUFB
LENBRUEsR0FBQUMsR0FBQXJ1QixLQUFBMHJCLEdBQUEsQ0FDQSxHQUFBNEMsR0FBQTVDLEVBQUFu
dkIsUUFBQSxNQUVBLElBQUEreEIsR0FBQSxHQUNBbEMsRUFBQWtDLEVBQUEsRUFDQSxXQUtBLEdB
QUFDLEdBQUF2dUIsS0FBQTByQixHQUFBLENBQ0EsR0FBQThDLEdBQUE5QyxFQUFBbnZCLFFBQUEs
S0FFQSxJQUFBaXlCLEdBQUEsR0FDQXBDLEVBQUFvQyxFQUFBLEVBQ0EsV0FLQSxHQUFBQyxHQUFB
L0MsRUFBQXpsQixNQUFBeW9CLEdBQ0EsSUFBQUQsRUFBQSxDQUNBckMsRUFBQXFDLEVBQUEsR0FB
QXh5QixPQUNBLFVBSUEsR0FBQTB5QixHQUFBakQsRUFBQXpsQixNQUFBaW9CLEdBQ0EsSUFBQVMs
RUFBQSxDQUNBLEdBQUFDLEdBQUF0eUIsQ0FDQTh2QixHQUFBdUMsRUFBQSxHQUFBMXlCLFFBQ0Er
d0IsRUFBQTJCLEVBQUEsR0FBQUEsRUFBQSxHQUFBQyxFQUFBdHlCLEVBQ0EsVUFJQSxHQUFBdXlC
LEdBQUF2QyxHQUNBLElBQUF1QyxFQUFBLENBQ0FqQyxFQUFBaUMsRUFDQSxXQUlBLEdBQUF0a0Is
R0FBQSxPQUFBdWtCLEVBQUEsT0FBQUMsRUFBQSxNQUNBLElBQUFYLEVBQUEsR0FFQSxJQURBVSxF
QUFBcEQsRUFBQTNmLE1BQUFxaUIsS0FFQUYsR0FBQWx1QixLQUFBOHVCLElBQ0F2QyxHQUFBdnNC
LEtBQUE4dUIsSUFDQVQsR0FBQXJ1QixLQUFBOHVCLElBQ0FQLEdBQUF2dUIsS0FBQTh1QixLQUdB
QyxFQUFBRCxFQUFBdnlCLFFBQUEsT0FDQXd5QixFQUFBLEtBQ0FYLEdBQUFXLEVBQ0FELEVBQUFw
RCxFQUFBM2YsTUFBQXFpQixFQUVBN2pCLEdBQUFtaEIsRUFBQVcsVUFBQSxFQUFBK0IsR0FDQWhD
LEVBQUFnQyxHQUdBQSxFQUFBLElBQ0E3akIsRUFBQW1oQixFQUNBQSxFQUFBLElBR0Fwb0IsRUFB
QTZxQixPQUFBNWpCLEdBQ0FqSCxFQUFBNnFCLE1BQUE1akIsR0F1QkEsR0FBQW1oQixJQUFBaGYs
R0FBQXBKLEVBQUE2cUIsTUFBQSxDQUNBN3FCLEVBQUE2cUIsTUFBQXpDLEVBQ0EsUUFLQXNCLElB
MEhBLFFBQUFnQyxJQUFBQyxHQXlEQSxRQUFBQyxNQUNBQyxXQUFBMXVCLEtBQUF3dUIsRUFBQWxq
QixNQUFBcWpCLEVBQUFwekIsR0FBQXNuQixRQUNBOEwsRUFBQXB6QixFQUFBLEVBMURBLEdBUUFz
RCxHQUFBK3ZCLEVBQUFyekIsRUFBQXN6QixFQUFBSCxFQVJBSSxHQUFBLEVBQ0FDLEdBQUEsRUFD
QUMsR0FBQSxFQUNBQyxHQUFBLEVBQ0FDLEVBQUEsRUFDQUMsRUFBQSxFQUNBQyxFQUFBLEVBQ0FU
LEVBQUEsQ0FHQSxLQUFBcHpCLEVBQUEsRUFBYUEsRUFBQWl6QixFQUFBaHpCLE9BQWdCRCxJQUc3
QixHQUZBcXpCLEVBQUEvdkIsRUFDQUEsRUFBQTJ2QixFQUFBMXZCLFdBQUF2RCxHQUNBdXpCLEVB
Q0EsS0FBQWp3QixHQUFBLEtBQUErdkIsSUFBd0NFLEdBQUEsT0FDbkMsSUFBQUMsRUFDTCxLQUFB
bHdCLEdBQUEsS0FBQSt2QixJQUF3Q0csR0FBQSxPQUNuQyxJQUFBQyxFQUNMLEtBQUFud0IsR0FB
QSxLQUFBK3ZCLElBQXdDSSxHQUFBLE9BQ25DLElBQUFDLEVBQ0wsS0FBQXB3QixHQUFBLEtBQUEr
dkIsSUFBd0NLLEdBQUEsT0FDbkMsSUFDTCxNQUFBcHdCLEdBQ0EsTUFBQTJ2QixFQUFBMXZCLFdB
QUF2RCxFQUFBLElBQ0EsTUFBQWl6QixFQUFBMXZCLFdBQUF2RCxFQUFBLElBQ0EyekIsR0FBQUMs
R0FBQUMsRUFVQSxPQUFBdndCLEdBQ0EsUUFBQWt3QixHQUFBLENBQW1DLE1BQ25DLFNBQUFELEdB
QUEsQ0FBbUMsTUFDbkMsU0FBQUUsR0FBQSxDQUEyQyxNQUMzQyxTQUFBQyxHQUFBLENBQWtDLE1B
Q2xDLFNBQUFHLEdBQTJCLE1BQzNCLFNBQUFBLEdBQTJCLE1BQzNCLFNBQUFELEdBQTRCLE1BQzVC
LFNBQUFBLEdBQTRCLE1BQzVCLFVBQUFELEdBQTJCLE1BQzNCLFVBQUFBLFFBbEJBanFCLFVBQUE0
cEIsR0FFQUYsRUFBQXB6QixFQUFBLEVBQ0FzekIsRUFBQUwsRUFBQWxqQixNQUFBLEVBQUEvUCxH
QUFBc25CLFFBRUE0TCxHQTZCQSxJQVhBeHBCLFNBQUE0cEIsRUFDQUEsRUFBQUwsRUFBQWxqQixN
QUFBLEVBQUEvUCxHQUFBc25CLE9BQ0csSUFBQThMLEdBQ0hGLElBUUFDLEVBQ0EsSUFBQW56QixF
QUFBLEVBQWVBLEVBQUFtekIsRUFBQWx6QixPQUFvQkQsSUFDbkNzekIsRUFBQVEsR0FBQVIsRUFB
QUgsRUFBQW56QixHQUlBLE9BQUFzekIsR0FHQSxRQUFBUSxJQUFBYixFQUFBcGlCLEdBQ0EsR0FB
QTdRLEdBQUE2USxFQUFBdFEsUUFBQSxJQUNBLElBQUFQLEVBQUEsRUFFQSxhQUFBNlEsRUFBQSxN
QUFBb2lCLEVBQUEsR0FFQSxJQUFBenJCLEdBQUFxSixFQUFBZCxNQUFBLEVBQUEvUCxHQUNBcWEs
RUFBQXhKLEVBQUFkLE1BQUEvUCxFQUFBLEVBQ0EsY0FBQXdILEVBQUEsTUFBQXlyQixFQUFBLElB
QUE1WSxFQWVBLFFBQUEwWixJQUNBeGxCLEVBQ0F5bEIsR0FFQSxHQUFBQyxHQUFBRCxFQUFBRSxH
QUFBRixHQUFBRyxFQUNBLElBQUFGLEVBQUFqd0IsS0FBQXVLLEdBQUEsQ0FNQSxJQUhBLEdBRUF0
RSxHQUFBM0osRUFGQTh6QixLQUNBQyxFQUFBSixFQUFBSSxVQUFBLEVBRUFwcUIsRUFBQWdxQixF
QUFBSyxLQUFBL2xCLElBQUEsQ0FDQWpPLEVBQUEySixFQUFBM0osTUFFQUEsRUFBQSt6QixHQUNB
RCxFQUFBM3ZCLEtBQUF2RixLQUFBQyxVQUFBb1AsRUFBQXdCLE1BQUFza0IsRUFBQS96QixJQUdB
LElBQUEyeUIsR0FBQUQsR0FBQS9vQixFQUFBLEdBQUFxZCxPQUNBOE0sR0FBQTN2QixLQUFBLE1B
QUF3dUIsRUFBQSxLQUNBb0IsRUFBQS96QixFQUFBMkosRUFBQSxHQUFBaEssT0FLQSxNQUhBbzBC
LEdBQUE5bEIsRUFBQXRPLFFBQ0FtMEIsRUFBQTN2QixLQUFBdkYsS0FBQUMsVUFBQW9QLEVBQUF3
QixNQUFBc2tCLEtBRUFELEVBQUFueEIsS0FBQSxNQUtBLFFBQUFzeEIsSUFBQUMsR0FDQWxjLFFB
QUFDLE1BQUEsaUJBQUFpYyxHQUdBLFFBQUFDLElBQ0E5eEIsRUFDQWhDLEdBRUEsTUFBQWdDLEdB
Q0FBLEVBQUFoRCxJQUFBLFNBQUFtRCxHQUFnQyxNQUFBQSxHQUFBbkMsS0FBaUJrUSxPQUFBLFNB
QUFvRyxHQUF1QixNQUFBQSxRQUl4RSxRQUFBeWQsSUFBQWhqQixFQUFBbEssRUFBQXpHLElBQ0Ey
USxFQUFBbkssUUFBQW1LLEVBQUFuSyxXQUFBOUMsTUFBc0MrQyxPQUFBekcsVUFHdEMsUUFBQTR6
QixJQUFBampCLEVBQUFsSyxFQUFBekcsSUFDQTJRLEVBQUE0RSxRQUFBNUUsRUFBQTRFLFdBQUE3
UixNQUFzQytDLE9BQUF6RyxVQUd0QyxRQUFBNnpCLElBQ0FsakIsRUFDQWxLLEVBQ0FrZCxFQUNB
M2pCLEVBQ0E4ekIsRUFDQXRRLElBRUE3UyxFQUFBN0osYUFBQTZKLEVBQUE3SixnQkFBQXBELE1B
QWdEK0MsT0FBQWtkLFVBQUEzakIsUUFBQTh6QixNQUFBdFEsY0FHaEQsUUFBQXVRLElBQ0FwakIs
RUFDQWxLLEVBQ0F6RyxFQUNBd2pCLEVBQ0F3USxHQUdBeFEsS0FBQTFVLGdCQUNBMFUsR0FBQTFV
LFFBQ0FySSxFQUFBLElBQUFBLEVBRUEsSUFBQXd0QixFQUNBelEsTUFBQTBRLGNBQ0ExUSxHQUFB
MFEsT0FDQUQsRUFBQXRqQixFQUFBd2pCLGVBQUF4akIsRUFBQXdqQixrQkFFQUYsRUFBQXRqQixF
QUFBc2pCLFNBQUF0akIsRUFBQXNqQixVQUVBLElBQUFHLElBQW9CcDBCLFFBQUF3akIsYUFDcEI1
USxFQUFBcWhCLEVBQUF4dEIsRUFFQXpGLE9BQUF3RCxRQUFBb08sR0FDQW9oQixFQUFBcGhCLEVB
QUE0SCxRQUFBNFosR0FBQXhoQixFQUFBbFAsS0FBQTB3QixHQUNHeGhCLEVBQ0hxaEIsRUFBQXh0
QixHQUFBdXRCLEdBQUFJLEVBQUF4aEIsTUFBQXdoQixHQUVBSCxFQUFBeHRCLEdBQUEydEIsRUFJ
QSxRQUFBQyxJQUNBMWpCLEVBQ0FsSyxFQUNBNnRCLEdBRUEsR0FBQUMsR0FDQUMsR0FBQTdqQixF
QUFBLElBQUFsSyxJQUNBK3RCLEdBQUE3akIsRUFBQSxVQUFBbEssRUFDQSxVQUFBOHRCLEVBQ0Es
TUFBQXRDLElBQUFzQyxFQUNHLElBQUFELEtBQUEsR0FDSCxHQUFBRyxHQUFBRCxHQUFBN2pCLEVB
QUFsSyxFQUNBLFVBQUFndUIsRUFDQSxNQUFBdDJCLE1BQUFDLFVBQUFxMkIsSUFLQSxRQUFBRCxJ
QUFBN2pCLEVBQUFsSyxHQUNBLEdBQUF2SSxFQUNBLFdBQUFBLEVBQUF5UyxFQUFBK2pCLFNBQUFq
dUIsSUFFQSxPQURBMUgsR0FBQTRSLEVBQUFna0IsVUFDQTExQixFQUFBLEVBQUF3QixFQUFBMUIs
RUFBQUcsT0FBb0NELEVBQUF3QixFQUFPeEIsSUFDM0MsR0FBQUYsRUFBQUUsR0FBQXdILFNBQUEs
Q0FDQTFILEVBQUFVLE9BQUFSLEVBQUEsRUFDQSxPQUlBLE1BQUFmLEdBd0JBLFFBQUEwMkIsSUFB
QTEyQixHQUtBLEdBSkFRLEdBQUFSLEVBQ0FpTCxHQUFBekssR0FBQVEsT0FDQTIxQixHQUFBQyxH
QUFBQyxHQUFBLEVBRUE3MkIsRUFBQXNCLFFBQUEsUUFBQXRCLEVBQUE4MkIsWUFBQSxLQUFBN3JC
LEdBQUEsRUFDQSxPQUNBK29CLElBQUFoMEIsRUFDQSsyQixJQUFBLEtBSUEsT0FBQUMsTUFDQUMs
R0FBQW5ELEtBRUFvRCxHQUFBRCxJQUNBRSxHQUFBRixJQUNLLEtBQUFBLElBQ0xHLEdBQUFILEdB
SUEsUUFDQWpELElBQUFoMEIsRUFBQW94QixVQUFBLEVBQUF3RixJQUNBRyxJQUFBLzJCLEVBQUFv
eEIsVUFBQXdGLEdBQUEsRUFBQUMsS0FJQSxRQUFBL0MsTUFDQSxNQUFBdHpCLElBQUE4RCxhQUFB
cXlCLElBR0EsUUFBQUssTUFDQSxNQUFBTCxLQUFBMXJCLEdBR0EsUUFBQWlzQixJQUFBRCxHQUNB
LFlBQUFBLEdBQUEsS0FBQUEsRUFHQSxRQUFBRyxJQUFBSCxHQUNBLEdBQUFJLEdBQUEsQ0FFQSxL
QURBVCxHQUFBRCxJQUNBSyxNQUVBLEdBREFDLEVBQUFuRCxLQUNBb0QsR0FBQUQsR0FDQUUsR0FB
QUYsT0FLQSxJQUZBLEtBQUFBLEdBQXVCSSxJQUN2QixLQUFBSixHQUF1QkksSUFDdkIsSUFBQUEs
RUFBQSxDQUNBUixHQUFBRixFQUNBLFFBS0EsUUFBQVEsSUFBQUYsR0FFQSxJQURBLEdBQUFLLEdB
QUFMLEdBQ0FELE9BQ0FDLEVBQUFuRCxLQUNBbUQsSUFBQUssTUErQkEsUUFBQUMsSUFDQUMsRUFD
QW52QixHQUVBb3ZCLEdBQUFwdkIsRUFBQXF2QixNQUFBcEMsR0FDQXFDLEdBQUF0dkIsRUFBQStQ
LGlCQUFBbWEsR0FDQXFGLEdBQUF2dkIsRUFBQW9TLGFBQUE4WCxHQUNBc0YsR0FBQXh2QixFQUFB
eXZCLFVBQUF2RixHQUNBd0YsR0FBQXZDLEdBQUFudEIsRUFBQTNFLFFBQUEsb0JBQ0FzMEIsR0FB
QXhDLEdBQUFudEIsRUFBQTNFLFFBQUEsaUJBQ0F1MEIsR0FBQXpDLEdBQUFudEIsRUFBQTNFLFFB
QUEscUJBQ0FxeEIsR0FBQTFzQixFQUFBMHNCLFVBQ0EsSUFFQW1ELEdBQ0FDLEVBSEEvRixLQUNB
Z0csRUFBQS92QixFQUFBK3ZCLHNCQUFBLEVBR0FDLEdBQUEsRUFDQUMsR0FBQSxDQWdNQSxPQTlM
QXBILElBQUFzRyxHQUNBNUYsV0FBQXZwQixFQUFBdXBCLFdBQ0FVLFdBQUFqcUIsRUFBQWlxQixX
QUNBMUIscUJBQUF2b0IsRUFBQXVvQixxQkFDQWh1QixNQUFBLFNBQUF3TSxFQUFBaUksRUFBQTRh
LEdBbUVBLFFBQUFzRyxHQUFBOWxCLElBaEVBLEdBQUFqRCxHQUFBMm9CLEtBQUEzb0IsSUFBQW1v
QixHQUFBdm9CLEVBSUFvcEIsS0FBQSxRQUFBaHBCLElBQ0E2SCxFQUFBb2hCLEdBQUFwaEIsR0FH
QSxJQUFBcWhCLElBQ0Fqd0IsS0FBQSxFQUNBMkcsTUFDQXFuQixVQUFBcGYsRUFDQW1mLFNBQUFt
QyxHQUFBdGhCLEdBQ0FyTyxPQUFBbXZCLEVBQ0E5b0IsWUFFQUcsS0FDQWtwQixFQUFBbHBCLE1B
R0FvcEIsR0FBQUYsS0FBQXJ5QixPQUNBcXlCLEVBQUFHLFdBQUEsRUFTQSxRQUFBOTNCLEdBQUEs
RUFBcUJBLEVBQUFnM0IsR0FBQS8yQixPQUEwQkQsSUFDL0NnM0IsR0FBQWgzQixHQUFBMjNCLEVB
QUFyd0IsRUFZQSxJQVRBZ3dCLElBQ0FTLEdBQUFKLEdBQ0FBLEVBQUFLLE1BQ0FWLEdBQUEsSUFH
QVIsR0FBQWEsRUFBQXRwQixPQUNBa3BCLEdBQUEsR0FFQUQsRUFDQVcsR0FBQU4sT0FDTyxDQUNQ
TyxHQUFBUCxHQUNBUSxHQUFBUixHQUNBUyxHQUFBVCxHQUNBVSxHQUFBVixHQUlBQSxFQUFBVyxP
QUFBWCxFQUFBaDNCLE1BQUEyVixFQUFBclcsT0FFQXM0QixHQUFBWixHQUNBYSxHQUFBYixHQUNB
YyxHQUFBZCxFQUNBLFFBQUE5VyxHQUFBLEVBQXlCQSxFQUFBb1csR0FBQWgzQixPQUF5QjRnQixJ
QUNsRG9XLEdBQUFwVyxHQUFBOFcsRUFBQXJ3QixFQUVBb3hCLElBQUFmLEdBNENBLEdBckJBUixF
QUdPOUYsRUFBQXB4QixRQUVQazNCLEVBQUF3QixLQUFBaEIsRUFBQWlCLFFBQUFqQixFQUFBa0Is
UUFDQXJCLEVBQUFHLEdBQ0FtQixHQUFBM0IsR0FDQWxFLElBQUEwRSxFQUFBaUIsT0FDQUcsTUFB
QXBCLE1BUkFSLEVBQUFRLEVBQ0FILEVBQUFMLElBbUJBQyxJQUFBTyxFQUFBRyxVQUNBLEdBQUFI
LEVBQUFpQixRQUFBakIsRUFBQWtCLEtBQ0FHLEdBQUFyQixFQUFBUCxPQUNTLElBQUFPLEVBQUFz
QixVQUFBLENBQ1Q3QixFQUFBa0IsT0FBQSxDQUNBLElBQUE5d0IsR0FBQW13QixFQUFBdUIsWUFB
QSxXQUFxRDlCLEVBQUFoZ0IsY0FBQWdnQixFQUFBaGdCLGlCQUE2RDVQLEdBQUFtd0IsTUFFbEhQ
LEdBQUE5b0IsU0FBQTdKLEtBQUFrekIsR0FDQUEsRUFBQTF2QixPQUFBbXZCLENBR0FsRyxLQUNB
a0csRUFBQU8sRUFDQXRHLEVBQUE1c0IsS0FBQWt6QixHQUdBLFFBQUF3QixHQUFBLEVBQXVCQSxF
QUFBakMsR0FBQWozQixPQUE2Qms1QixJQUNwRGpDLEdBQUFpQyxHQUFBeEIsRUFBQXJ3QixJQUlB
bWhCLElBQUEsV0FFQSxHQUFBa1AsR0FBQXRHLElBQUFweEIsT0FBQSxHQUNBbTVCLEVBQUF6QixF
QUFBcnBCLFNBQUFxcEIsRUFBQXJwQixTQUFBck8sT0FBQSxFQUNBbTVCLElBQUEsSUFBQUEsRUFB
QTF4QixNQUFBLE1BQUEweEIsRUFBQTdxQixNQUNBb3BCLEVBQUFycEIsU0FBQTNKLE1BR0Ewc0Is
RUFBQXB4QixRQUFBLEVBQ0FtM0IsRUFBQS9GLElBQUFweEIsT0FBQSxHQUVBMDNCLEVBQUFLLE1B
Q0FWLEdBQUEsR0FFQVIsR0FBQWEsRUFBQXRwQixPQUNBa3BCLEdBQUEsSUFJQXBGLE1BQUEsU0FB
QTVqQixHQUNBLEdBQUE2b0IsS0FXQUssSUFDQSxhQUFBTCxFQUFBL29CLEtBQ0Erb0IsRUFBQTNC
LFNBQUF6SCxjQUFBemYsS0FHQUEsRUFBQWdwQixHQUFBaHBCLEVBQUErWSxPQUNBK1IsR0FBQTlx
QixHQUVBOG9CLEdBQUFELEVBQUE5b0IsU0FBQXJPLE9BQUEsUUFDQSxDQUNBLEdBQUFxekIsSUFD
QWdFLEdBQUEsTUFBQS9vQixJQUFBK2tCLEVBQUFTLEdBQUF4bEIsRUFBQXlsQixLQUNBb0QsRUFB
QTlvQixTQUFBN0osTUFDQWlELEtBQUEsRUFDQTRyQixhQUNBL2tCLFNBR0E2b0IsRUFBQTlvQixT
QUFBN0osTUFDQWlELEtBQUEsRUFDQTZHLGFBTUE0b0IsRUFHQSxRQUFBWSxJQUFBcm1CLEdBQ0Es
TUFBQTZqQixHQUFBN2pCLEVBQUEsV0FDQUEsRUFBQXNtQixLQUFBLEdBSUEsUUFBQUMsSUFBQXZt
QixHQUNBLEdBQUFsUSxHQUFBa1EsRUFBQWdrQixVQUFBejFCLE1BQ0EsSUFBQXVCLEVBRUEsT0FE
QThVLEdBQUE1RSxFQUFBNEUsTUFBQSxHQUFBdlUsT0FBQVAsR0FDQXhCLEVBQUEsRUFBbUJBLEVB
QUF3QixFQUFPeEIsSUFDMUJzVyxFQUFBdFcsSUFDQXdILEtBQUFrSyxFQUFBZ2tCLFVBQUExMUIs
R0FBQXdILEtBQ0F6RyxNQUFBN0IsS0FBQUMsVUFBQXVTLEVBQUFna0IsVUFBQTExQixHQUFBZSxZ
QUdHMlEsR0FBQXNtQixNQUVIdG1CLEVBQUE0bUIsT0FBQSxHQUlBLFFBQUFELElBQUEzbUIsR0FD
QSxHQUFBdWhCLEdBQUFtQyxHQUFBMWpCLEVBQUEsTUFDQXVoQixLQUlBdmhCLEVBQUEvUSxJQUFB
c3lCLEdBSUEsUUFBQXNGLElBQUE3bUIsR0FDQSxHQUFBeUcsR0FBQWlkLEdBQUExakIsRUFBQSxN
QUNBeUcsS0FDQXpHLEVBQUF5RyxNQUNBekcsRUFBQXlOLFNBQUFtYSxHQUFBNW5CLElBSUEsUUFB
QXdtQixJQUFBeG1CLEdBQ0EsR0FBQXVoQixFQUNBLElBQUFBLEVBQUFzQyxHQUFBN2pCLEVBQUEs
VUFDQSxHQUFBNm5CLEdBQUF0RyxFQUFBaHBCLE1BQUF1dkIsR0FDQSxLQUFBRCxFQUlBLE1BRUE3
bkIsR0FBQStuQixJQUFBRixFQUFBLEdBQUFqUyxNQUNBLElBQUFvUyxHQUFBSCxFQUFBLEdBQUFq
UyxPQUNBcVMsRUFBQUQsRUFBQXp2QixNQUFBMnZCLEdBQ0FELElBQ0Fqb0IsRUFBQWdvQixNQUFB
QyxFQUFBLEdBQUFyUyxPQUNBNVYsRUFBQW1vQixVQUFBRixFQUFBLEdBQUFyUyxPQUNBcVMsRUFB
QSxLQUNBam9CLEVBQUFvb0IsVUFBQUgsRUFBQSxHQUFBclMsU0FHQTVWLEVBQUFnb0IsU0FLQSxR
QUFBdkIsSUFBQXptQixHQUNBLEdBQUF1aEIsR0FBQXNDLEdBQUE3akIsRUFBQSxPQUNBLElBQUF1
aEIsRUFDQXZoQixFQUFBaW5CLEdBQUExRixFQUNBNkYsR0FBQXBuQixHQUNBdWhCLE1BQ0E4RixN
QUFBcm5CLFFBRUcsQ0FDSCxNQUFBNmpCLEdBQUE3akIsRUFBQSxZQUNBQSxFQUFBbW5CLE1BQUEs
RUFFQSxJQUFBRCxHQUFBckQsR0FBQTdqQixFQUFBLFlBQ0FrbkIsS0FDQWxuQixFQUFBa25CLFdB
S0EsUUFBQUksSUFBQXRuQixFQUFBekosR0FDQSxHQUFBb3JCLEdBQUEwRyxHQUFBOXhCLEVBQUFx
RyxTQUNBK2tCLE1BQUFzRixJQUNBRyxHQUFBekYsR0FDQUosSUFBQXZoQixFQUFBa25CLE9BQ0FH
LE1BQUFybkIsSUFVQSxRQUFBb25CLElBQUFwbkIsRUFBQXNvQixHQUNBdG9CLEVBQUF1b0IsYUFD
QXZvQixFQUFBdW9CLGVBRUF2b0IsRUFBQXVvQixXQUFBeDFCLEtBQUF1MUIsR0FHQSxRQUFBNUIs
SUFBQTFtQixHQUNBLEdBQUFrYSxHQUFBMkosR0FBQTdqQixFQUFBLFNBQ0EsT0FBQWthLElBQ0Fs
YSxFQUFBa2EsTUFBQSxHQUlBLFFBQUE0TSxJQUFBOW1CLEdBQ0EsWUFBQUEsRUFBQXJELElBQ0Fx
RCxFQUFBd29CLFNBQUE5RSxHQUFBMWpCLEVBQUEsWUFRRyxDQUNILEdBQUF3bkIsR0FBQTlELEdB
QUExakIsRUFBQSxPQUNBd25CLEtBQ0F4bkIsRUFBQXduQixXQUFBLE9BQUFBLEVBQUEsWUFBQUEs
R0FFQSxhQUFBeG5CLEVBQUFyRCxNQUNBcUQsRUFBQXVuQixVQUFBMUQsR0FBQTdqQixFQUFBLFdB
S0EsUUFBQSttQixJQUFBL21CLEdBQ0EsR0FBQWtiLElBQ0FBLEVBQUF3SSxHQUFBMWpCLEVBQUEs
U0FDQUEsRUFBQXlvQixVQUFBdk4sR0FFQSxNQUFBMkksR0FBQTdqQixFQUFBLHFCQUNBQSxFQUFB
eUQsZ0JBQUEsR0FJQSxRQUFBdWpCLElBQUFobkIsR0FDQSxHQUNBMVIsR0FBQXdCLEVBQUFnRyxF
QUFBa2QsRUFBQTNqQixFQUFBOHpCLEVBQUF0USxFQUFBNlYsRUFEQXQ2QixFQUFBNFIsRUFBQWdr
QixTQUVBLEtBQUExMUIsRUFBQSxFQUFBd0IsRUFBQTFCLEVBQUFHLE9BQThCRCxFQUFBd0IsRUFB
T3hCLElBR3JDLEdBRkF3SCxFQUFBa2QsRUFBQTVrQixFQUFBRSxHQUFBd0gsS0FDQXpHLEVBQUFq
QixFQUFBRSxHQUFBZSxNQUNBczVCLEdBQUFyMkIsS0FBQXdELEdBUUEsR0FOQWtLLEVBQUE0b0Is
YUFBQSxFQUVBL1YsRUFBQWdXLEdBQUEveUIsR0FDQStjLElBQ0EvYyxJQUFBbWdCLFFBQUE2UyxH
QUFBLEtBRUFDLEdBQUF6MkIsS0FBQXdELEdBQ0FBLElBQUFtZ0IsUUFBQThTLEdBQUEsSUFDQTE1
QixFQUFBaXlCLEdBQUFqeUIsR0FDQXdqQixJQUNBQSxFQUFBamIsT0FDQTh3QixHQUFBLEVBQ0E1
eUIsRUFBQUMsR0FBQUQsR0FDQSxjQUFBQSxJQUF1Q0EsRUFBQSxjQUV2QytjLEVBQUFtVyxRQUNB
bHpCLEVBQUFDLEdBQUFELEtBR0E0eUIsR0FBQXZELEdBQUFubEIsRUFBQXJELElBQUE3RyxHQUNB
a3RCLEdBQUFoakIsRUFBQWxLLEVBQUF6RyxHQUVBNHpCLEdBQUFqakIsRUFBQWxLLEVBQUF6RyxP
QUVPLElBQUE0NUIsR0FBQTMyQixLQUFBd0QsR0FDUEEsSUFBQW1nQixRQUFBZ1QsR0FBQSxJQUNB
N0YsR0FBQXBqQixFQUFBbEssRUFBQXpHLEVBQUF3akIsT0FDTyxDQUNQL2MsSUFBQW1nQixRQUFB
MFMsR0FBQSxHQUVBLElBQUFPLEdBQUFwekIsRUFBQXlDLE1BQUE0d0IsR0FDQUQsS0FBQS9GLEVB
QUErRixFQUFBLE1BQ0FwekIsSUFBQXVJLE1BQUEsSUFBQThrQixFQUFBNTBCLE9BQUEsS0FFQTIw
QixHQUFBbGpCLEVBQUFsSyxFQUFBa2QsRUFBQTNqQixFQUFBOHpCLEVBQUF0USxPQUtLLENBYUxv
USxHQUFBampCLEVBQUFsSyxFQUFBdEksS0FBQUMsVUFBQTRCLEtBS0EsUUFBQXU0QixJQUFBNW5C
LEdBRUEsSUFEQSxHQUFBekosR0FBQXlKLEVBQ0F6SixHQUFBLENBQ0EsR0FBQXlCLFNBQUF6QixF
QUFBd3hCLElBQ0EsUUFFQXh4QixZQUVBLFNBR0EsUUFBQXN5QixJQUFBL3lCLEdBQ0EsR0FBQXlD
LEdBQUF6QyxFQUFBeUMsTUFBQXV3QixHQUNBLElBQUF2d0IsRUFBQSxDQUNBLEdBQUFuSSxLQUVB
LE9BREFtSSxHQUFBZ1MsUUFBQSxTQUFBblosR0FBZ0NoQixFQUFBZ0IsRUFBQWlOLE1BQUEsU0FD
aENqTyxHQUlBLFFBQUE4MUIsSUFBQXRoQixHQUVBLE9BREEzVyxNQUNBSyxFQUFBLEVBQUF3QixF
QUFBOFUsRUFBQXJXLE9BQW1DRCxFQUFBd0IsRUFBT3hCLElBSTFDTCxFQUFBMlcsRUFBQXRXLEdB
QUF3SCxNQUFBOE8sRUFBQXRXLEdBQUFlLEtBRUEsT0FBQXBCLEdBR0EsUUFBQW82QixJQUFBenJC
LEdBRUEsSUFEQSxHQUFBdE8sR0FBQXNPLEVBQUFyTyxPQUNBRCxLQUNBLEdBQUFzTyxFQUFBdE8s
R0FBQXFPLElBQTBCLE1BQUFDLEdBQUF0TyxHQUkxQixRQUFBNjNCLElBQUFubUIsR0FDQSxNQUNB
LFVBQUFBLEVBQUFyRCxLQUNBLFdBQUFxRCxFQUFBckQsT0FDQXFELEVBQUErakIsU0FBQS90QixN
QUNBLG9CQUFBZ0ssRUFBQStqQixTQUFBL3RCLE1BU0EsUUFBQWd3QixJQUFBcGhCLEdBRUEsT0FE
QTlULE1BQ0F4QyxFQUFBLEVBQWlCQSxFQUFBc1csRUFBQXJXLE9BQWtCRCxJQUFBLENBQ25DLEdB
QUF3d0IsR0FBQWxhLEVBQUF0VyxFQUNBODZCLElBQUE5MkIsS0FBQXdzQixFQUFBaHBCLFFBQ0Fn
cEIsRUFBQWhwQixLQUFBZ3BCLEVBQUFocEIsS0FBQW1nQixRQUFBb1QsR0FBQSxJQUNBdjRCLEVB
QUFpQyxLQUFBK3JCLElBR0EsTUFBQWh1QixHQXFDQSxRQUFBdzRCLElBQUE3RCxFQUFBN3ZCLEdB
Q0E2dkIsSUFDQThELEdBQUFDLEdBQUE1ekIsRUFBQXRFLFlBQUEsSUFDQW00QixHQUFBN3pCLEVB
QUFnUSxlQUFBLFdBQWlFLFVBRWpFTyxHQUFBc2YsR0FFQWlFLEdBQUFqRSxHQUFBLElBR0EsUUFB
QWtFLElBQUF4NEIsR0FDQSxNQUFBckQsR0FDQSwyREFDQXFELEVBQUEsSUFBQUEsRUFBQSxLQUlB
LFFBQUFnVixJQUFBSSxHQUVBLEdBREFBLEVBQUFxakIsT0FBQTFzQixHQUFBcUosR0FDQSxJQUFB
QSxFQUFBdlEsS0FBQSxDQUlBLElBQ0F5ekIsR0FBQWxqQixFQUFBNUosTUFDQSxTQUFBNEosRUFB
QTVKLEtBQ0EsTUFBQTRKLEVBQUF3ZCxTQUFBLG1CQUVBLE1BRUEsUUFBQXoxQixHQUFBLEVBQUF3
QixFQUFBeVcsRUFBQTNKLFNBQUFyTyxPQUE2Q0QsRUFBQXdCLEVBQU94QixJQUFBLENBQ3BELEdB
QUFrSSxHQUFBK1AsRUFBQTNKLFNBQUF0TyxFQUNBNlgsSUFBQTNQLEdBQ0FBLEVBQUFvekIsU0FD
QXJqQixFQUFBcWpCLFFBQUEsS0FNQSxRQUFBRixJQUFBbmpCLEVBQUFjLEdBQ0EsT0FBQWQsRUFB
QXZRLEtBQUEsQ0FPQSxJQU5BdVEsRUFBQXFqQixRQUFBcmpCLEVBQUEyVCxRQUNBM1QsRUFBQXNq
QixZQUFBeGlCLEdBS0FkLEVBQUFxakIsUUFBQXJqQixFQUFBM0osU0FBQXJPLFNBQ0EsSUFBQWdZ
LEVBQUEzSixTQUFBck8sUUFDQSxJQUFBZ1ksRUFBQTNKLFNBQUEsR0FBQTVHLE1BR0EsWUFEQXVR
LEVBQUF1akIsWUFBQSxFQUtBLElBRkF2akIsRUFBQXVqQixZQUFBLEVBRUF2akIsRUFBQTNKLFNB
Q0EsT0FBQXRPLEdBQUEsRUFBQXdCLEVBQUF5VyxFQUFBM0osU0FBQXJPLE9BQStDRCxFQUFBd0Is
RUFBT3hCLElBQ3REbzdCLEdBQUFuakIsRUFBQTNKLFNBQUF0TyxHQUFBK1ksS0FBQWQsRUFBQXdo
QixJQUdBeGhCLEdBQUFnaUIsWUFDQXdCLEdBQUF4akIsRUFBQWdpQixXQUFBbGhCLElBS0EsUUFB
QTBpQixJQUFBQyxFQUFBM2lCLEdBQ0EsT0FBQS9ZLEdBQUEsRUFBQWtLLEVBQUF3eEIsRUFBQXo3
QixPQUErQ0QsRUFBQWtLLEVBQVNsSyxJQUN4RG83QixHQUFBTSxFQUFBMTdCLEdBQUErNEIsTUFB
QWhnQixHQUlBLFFBQUFuSyxJQUFBcUosR0FDQSxXQUFBQSxFQUFBdlEsT0FHQSxJQUFBdVEsRUFB
QXZRLFNBR0F1USxFQUFBK2YsTUFDQS9mLEVBQUFxaUIsYUFDQXJpQixFQUFBMGdCLElBQUExZ0Is
RUFBQXdoQixLQUNBa0MsR0FBQTFqQixFQUFBNUosT0FDQThzQixHQUFBbGpCLEVBQUE1SixNQUNB
dXRCLEdBQUEzakIsS0FDQXJZLE9BQUFpRCxLQUFBb1YsR0FBQTRqQixNQUFBWixPQUlBLFFBQUFX
LElBQUEzakIsR0FDQSxLQUFBQSxFQUFBaFEsUUFBQSxDQUVBLEdBREFnUSxJQUFBaFEsT0FDQSxh
QUFBZ1EsRUFBQTVKLElBQ0EsUUFFQSxJQUFBNEosRUFBQXdoQixJQUNBLFNBR0EsU0FtQ0EsUUFB
QXFDLElBQUE5RyxFQUFBQyxHQUNBLEdBQUF6eUIsR0FBQXl5QixFQUFBLGFBQWdDLE1BQ2hDLFFB
QUF6dEIsS0FBQXd0QixHQUNBeHlCLEdBQUEsSUFBQWdGLEVBQUEsS0FBQXUwQixHQUFBdjBCLEVB
QUF3dEIsRUFBQXh0QixJQUFBLEdBRUEsT0FBQWhGLEdBQUF1TixNQUFBLFVBR0EsUUFBQWdzQixJ
QUNBdjBCLEVBQ0EyRixHQUVBLEdBQUFBLEVBRUcsSUFBQXBMLE1BQUF3RCxRQUFBNEgsR0FDSCxV
QUFBQSxFQUFBeE4sSUFBQSxTQUFBd04sR0FBbUQsTUFBQTR1QixJQUFBdjBCLEVBQUEyRixLQUFv
Q2xLLEtBQUEsUUFDcEYsSUFBQWtLLEVBQUFvWCxVQUlBLENBQ0gsR0FBQXlYLEdBQUEsR0FDQW41
QixLQUNBbzVCLEVBQUFDLEdBQUFsNEIsS0FBQXdELEVBQ0EsUUFBQTdHLEtBQUF3TSxHQUFBb1gs
VUFDQTRYLEdBQUF4N0IsR0FDQXE3QixHQUFBRyxHQUFBeDdCLEdBQ09zN0IsR0FBQUcsR0FBQXo3
QixHQUNQcTdCLEdBQUFJLEdBQUF6N0IsR0FFQWtDLEVBQUE0QixLQUFBOUQsRUFHQWtDLEdBQUE1
QyxTQUNBKzdCLEVBQUFLLEdBQUF4NUIsR0FBQW01QixFQUVBLElBQUFNLEdBQUFDLEdBQUF2NEIs
S0FBQW1KLEVBQUFwTSxPQUNBb00sRUFBQXBNLE1BQUEsV0FDQW9NLEVBQUFwTSxLQUNBLDJCQUE2
Qmk3QixFQUFBTSxFQUFBLElBdEI3QixNQUFBRSxJQUFBeDRCLEtBQUFtSixFQUFBcE0sUUFBQXc3
QixHQUFBdjRCLEtBQUFtSixFQUFBcE0sT0FDQW9NLEVBQUFwTSxNQUNBLG9CQUEyQm9NLEVBQUEs
VUFOM0IscUJBOEJBLFFBQUFrdkIsSUFBQXg1QixHQUNBLEdBQUFtNUIsR0FBQSxJQUFBbjVCLEVB
QUE1QyxPQUNBdzhCLEdBQUE1NUIsRUFBQSxJQUNBZCxNQUFBNkcsVUFBQTdGLE9BQUFyQixTQUFB
bUIsRUFBQWxELElBQUE4OEIsSUFDQSxPQUFBMTZCLE9BQUF3RCxRQUFBeTJCLEdBQ0EsTUFBQUEs
RUFBQXI4QixJQUFBLFNBQUEyRCxHQUE0QywwQkFBQUEsSUFBb0NMLEtBQUEsaUJBRWhGLHVCQUFB
KzRCLEVBQUEsV0FJQSxRQUFBUyxJQUFBOTdCLEdBQ0EsTUFDQSs3QixVQUFBLzdCLEVBQUEsS0FD
QWlaLEdBQUFqWixJQUNBLE1BQUF6QixLQUFBQyxVQUFBd0IsR0FBQSxJQU1BLFFBQUFnOEIsSUFB
QWpyQixFQUFBaVMsR0FDQWpTLEVBQUFrckIsU0FBQSxTQUFBWixHQUNBLFlBQUFBLEVBQUEsS0FB
QXRxQixFQUFBLFNBQUFpUyxFQUFBLE9BQUFBLEVBQUFZLFdBQUFaLEVBQUFZLFVBQUFqYixLQUFB
LGlCQW9CQSxRQUFBdXpCLElBQ0FDLEVBQ0F4MUIsR0FHQSxHQUFBeTFCLEdBQUEzbkIsR0FDQTRu
QixFQUFBNW5CLE1BQ0E2bkIsRUFBQUMsRUFDQUEsSUFBQSxFQUNBQyxHQUFBNzFCLEVBQ0E4MUIs
R0FBQTkxQixFQUFBcXZCLE1BQUFwQyxHQUNBOEksR0FBQTVJLEdBQUFudEIsRUFBQTNFLFFBQUEs
aUJBQ0EyNkIsR0FBQTdJLEdBQUFudEIsRUFBQTNFLFFBQUEsV0FDQTQ2QixHQUFBajJCLEVBQUFP
LGNBQ0EsSUFBQW0wQixHQUFBYyxFQUFBVSxHQUFBVixHQUFBLFdBR0EsT0FGQTFuQixJQUFBMm5C
LEVBQ0FHLEdBQUFELEdBRUFwckIsT0FBQSxxQkFBeUJtcUIsRUFBQSxJQUN6QjVtQixnQkFBQTRu
QixHQUlBLFFBQUFRLElBQUE5ckIsR0FDQSxHQUFBQSxFQUFBOHBCLGFBQUE5cEIsRUFBQStyQixn
QkFDQSxNQUFBQyxJQUFBaHNCLEVBQ0csSUFBQUEsRUFBQWthLE9BQUFsYSxFQUFBaXNCLGNBQ0gs
TUFBQUMsSUFBQWxzQixFQUNHLElBQUFBLEVBQUErbkIsTUFBQS9uQixFQUFBbXNCLGFBQ0gsTUFB
QUMsSUFBQXBzQixFQUNHLElBQUFBLEVBQUFpbkIsS0FBQWpuQixFQUFBcXNCLFlBQ0gsTUFBQUMs
SUFBQXRzQixFQUNHLGlCQUFBQSxFQUFBckQsS0FBQXFELEVBQUF3bkIsV0FFQSxhQUFBeG5CLEVB
QUFyRCxJQUNILE1BQUE0dkIsSUFBQXZzQixFQUdBLElBQUFzcUIsRUFDQSxJQUFBdHFCLEVBQUF5
b0IsVUFDQTZCLEVBQUFrQyxHQUFBeHNCLEVBQUF5b0IsVUFBQXpvQixPQUNLLENBQ0wsR0FBQXJG
LEdBQUFxRixFQUFBNG1CLE1BQUE1dUIsT0FBQXkwQixHQUFBenNCLEdBRUFwRCxFQUFBb0QsRUFB
QXlELGVBQUEsS0FBQWlwQixHQUFBMXNCLEVBQ0FzcUIsR0FBQSxPQUFBdHFCLEVBQUEsU0FBQXJG
LEVBQUEsSUFBQUEsRUFBQSxLQUFBaUMsRUFBQSxJQUFBQSxFQUFBLFFBR0EsT0FBQXRPLEdBQUEs
RUFBbUJBLEVBQUFxOUIsR0FBQXA5QixPQUF5QkQsSUFDNUNnOEIsRUFBQXFCLEdBQUFyOUIsR0FB
QTBSLEVBQUFzcUIsRUFFQSxPQUFBQSxHQWxCQSxNQUFBb0MsSUFBQTFzQixJQUFBLFNBdUJBLFFB
QUFnc0IsSUFBQWhzQixHQUdBLE1BRkFBLEdBQUErckIsaUJBQUEsRUFDQXJvQixHQUFBM1EsS0FB
QSxxQkFBb0MrNEIsR0FBQTlyQixHQUFBLEtBQ3BDLE9BQUEwRCxHQUFBblYsT0FBQSxJQUFBeVIs
RUFBQTZwQixZQUFBLGdCQUlBLFFBQUFxQyxJQUFBbHNCLEdBRUEsR0FEQUEsRUFBQWlzQixlQUFB
LEVBQ0Fqc0IsRUFBQWluQixLQUFBam5CLEVBQUFxc0IsWUFDQSxNQUFBQyxJQUFBdHNCLEVBQ0cs
SUFBQUEsRUFBQTZwQixZQUFBLENBR0gsSUFGQSxHQUFBNTZCLEdBQUEsR0FDQXNILEVBQUF5SixF
QUFBekosT0FDQUEsR0FBQSxDQUNBLEdBQUFBLEVBQUF3eEIsSUFBQSxDQUNBOTRCLEVBQUFzSCxF
QUFBdEgsR0FDQSxPQUVBc0gsV0FFQSxNQUFBdEgsR0FNQSxNQUFBNjhCLEdBQUE5ckIsR0FBQSxJ
QUFBd3JCLE9BQUF2OEIsRUFBQSxJQUFBQSxFQUFBLFFBRkE2OEIsR0FBQTlyQixHQUlBLE1BQUFn
c0IsSUFBQWhzQixHQUlBLFFBQUFzc0IsSUFBQXRzQixHQUVBLE1BREFBLEdBQUFxc0IsYUFBQSxF
QUNBTSxHQUFBM3NCLEVBQUF1b0IsWUFHQSxRQUFBb0UsSUFBQXBFLEdBYUEsUUFBQXFFLEdBQUE1
c0IsR0FDQSxNQUFBQSxHQUFBa2EsS0FBQWdTLEdBQUFsc0IsR0FBQThyQixHQUFBOXJCLEdBYkEs
SUFBQXVvQixFQUFBaDZCLE9BQ0EsWUFHQSxJQUFBKzVCLEdBQUFDLEVBQUFzRSxPQUNBLE9BQUF2
RSxHQUFBL0csSUFDQSxJQUFBK0csRUFBQSxTQUFBc0UsRUFBQXRFLEVBQUFqQixPQUFBLElBQUFz
RixHQUFBcEUsR0FFQSxHQUFBcUUsRUFBQXRFLEVBQUFqQixPQVNBLFFBQUErRSxJQUFBcHNCLEdB
Q0EsR0FBQXVoQixHQUFBdmhCLEVBQUErbkIsSUFDQUMsRUFBQWhvQixFQUFBZ29CLE1BQ0FHLEVB
QUFub0IsRUFBQW1vQixVQUFBLElBQUFub0IsRUFBQSxhQUNBb29CLEVBQUFwb0IsRUFBQW9vQixV
QUFBLElBQUFwb0IsRUFBQSxZQUVBLE9BREFBLEdBQUFtc0IsY0FBQSxFQUNBLE9BQUE1SyxFQUFB
LGNBQ0F5RyxFQUFBRyxFQUFBQyxFQUFBLFlBQ0EwRCxHQUFBOXJCLEdBQ0EsS0FHQSxRQUFBeXNC
LElBQUF6c0IsR0FDQSxHQUFBckYsR0FBQSxJQUlBekUsRUFBQTQyQixHQUFBOXNCLEVBQ0E5SixL
QUFheUUsR0FBQXpFLEVBQUEsS0FHYjhKLEVBQUEvUSxNQUNBMEwsR0FBQSxPQUFBcUYsRUFBQSxT
QUdBQSxFQUFBeUcsTUFDQTlMLEdBQUEsT0FBQXFGLEVBQUEsU0FFQUEsRUFBQXlOLFdBQ0E5UyxH
QUFBLGtCQUdBcUYsRUFBQXlvQixZQUNBOXRCLEdBQUEsUUFBQXFGLEVBQUEsU0FHQSxRQUFBMVIs
R0FBQSxFQUFpQkEsRUFBQXM5QixHQUFBcjlCLE9BQXVCRCxJQUN4Q3FNLEdBQUFpeEIsR0FBQXQ5
QixHQUFBMFIsRUEwQkEsSUF2QkFBLEVBQUE0RSxRQUNBakssR0FBQSxVQUFvQm95QixHQUFBL3NC
LEVBQUE0RSxPQUFBLE1BR3BCNUUsRUFBQW5LLFFBQ0E4RSxHQUFBLGFBQXVCb3lCLEdBQUEvc0Is
RUFBQW5LLE9BQUEsTUFHdkJtSyxFQUFBc2pCLFNBQ0Ezb0IsR0FBQXl2QixHQUFBcHFCLEVBQUFz
akIsUUFBQSxLQUVBdGpCLEVBQUF3akIsZUFDQTdvQixHQUFBeXZCLEdBQUFwcUIsRUFBQXdqQixj
QUFBLFFBR0F4akIsRUFBQXduQixhQUNBN3NCLEdBQUEsUUFBQXFGLEVBQUEsZ0JBR0FBLEVBQUEw
RixjQUNBL0ssR0FBQXF5QixHQUFBaHRCLEVBQUEwRixhQUFBLEtBR0ExRixFQUFBeUQsZUFBQSxD
QUNBLEdBQUFBLEdBQUF3cEIsR0FBQWp0QixFQUNBeUQsS0FDQTlJLEdBQUE4SSxFQUFBLEtBUUEs
TUFMQTlJLEtBQUFzYixRQUFBLGFBRUFqVyxFQUFBa3JCLFdBQ0F2d0IsRUFBQXFGLEVBQUFrckIs
U0FBQXZ3QixJQUVBQSxFQUdBLFFBQUFteUIsSUFBQTlzQixHQUNBLEdBQUE5SixHQUFBOEosRUFB
QTdKLFVBQ0EsSUFBQUQsRUFBQSxDQUNBLEdBRUE1SCxHQUFBd0IsRUFBQW1pQixFQUFBaWIsRUFG
QXA4QixFQUFBLGVBQ0FxOEIsR0FBQSxDQUVBLEtBQUE3K0IsRUFBQSxFQUFBd0IsRUFBQW9HLEVB
QUEzSCxPQUE4QkQsRUFBQXdCLEVBQU94QixJQUFBLENBQ3JDMmpCLEVBQUEvYixFQUFBNUgsR0FD
QTQrQixHQUFBLENBQ0EsSUFBQUUsR0FBQXZCLEdBQUE1WixFQUFBbmMsT0FBQXUzQixHQUFBcGIs
RUFBQW5jLEtBQ0FzM0IsS0FHQUYsSUFBQUUsRUFBQXB0QixFQUFBaVMsRUFBQXlaLEtBRUF3QixJ
QUNBQyxHQUFBLEVBQ0FyOEIsR0FBQSxVQUFlbWhCLEVBQUEsbUJBQUFBLEVBQUEsYUFBQUEsRUFB
QTVpQixNQUFBLFdBQUE0aUIsRUFBQSxzQkFBQXprQixLQUFBQyxVQUFBd2tCLEVBQUE1aUIsT0FB
QSxLQUFBNGlCLEVBQUFrUixJQUFBLFNBQUFsUixFQUFBLGFBQUFBLEVBQUFZLFVBQUEsY0FBQXJs
QixLQUFBQyxVQUFBd2tCLEVBQUFZLFdBQUEsVUFHZixNQUFBc2EsR0FDQXI4QixFQUFBdU4sTUFB
QSxVQURBLFFBS0EsUUFBQTR1QixJQUFBanRCLEdBQ0EsR0FBQW9yQixHQUFBcHJCLEVBQUFwRCxT
QUFBLEVBTUEsUUFBQXd1QixFQUFBcDFCLEtBQUEsQ0FDQSxHQUFBczNCLEdBQUFuQyxHQUFBQyxF
QUFBSyxHQUNBLDRDQUErQzZCLEVBQUEsNkJBQWlDQSxFQUFBNXBCLGdCQUFBelYsSUFBQSxTQUFB
cThCLEdBQTRFLG9CQUFxQkEsRUFBQSxNQUFrQi80QixLQUFBLFdBSW5NLFFBQUF5N0IsSUFBQTlw
QixHQUNBLHNCQUF3QmhWLE9BQUFpRCxLQUFBK1IsR0FBQWpWLElBQUEsU0FBQWdCLEdBQTRDLE1B
QUFzK0IsSUFBQXQrQixFQUFBaVUsRUFBQWpVLE1BQXlDc0MsS0FBQSxTQUc3RyxRQUFBZzhCLElB
QUF0K0IsRUFBQStRLEdBQ0EsTUFBQS9RLEdBQUEsYUFBQXZCLE9BQUFzUyxFQUFBK2pCLFNBQUF5
SixPQUFBLGFBQ0EsYUFBQXh0QixFQUFBckQsSUFDQSt2QixHQUFBMXNCLElBQUEsU0FDQThyQixH
QUFBOXJCLElBQUEsSUFHQSxRQUFBMHNCLElBQUExc0IsR0FDQSxHQUFBQSxFQUFBcEQsU0FBQXJP
LE9BQ0EsVUFBQXlSLEVBQUFwRCxTQUFBM08sSUFBQXcvQixJQUFBbDhCLEtBQUEsU0FJQSxRQUFB
azhCLElBQUFsbkIsR0FDQSxXQUFBQSxFQUFBdlEsS0FDQTgxQixHQUFBdmxCLEdBRUFtbkIsR0FB
QW5uQixHQUlBLFFBQUFtbkIsSUFBQTd3QixHQUNBLFdBQUFBLEVBQUE3RyxLQUNBNkcsRUFBQStr
QixXQUNBK0wsR0FBQW5nQyxLQUFBQyxVQUFBb1AsU0FHQSxRQUFBMHZCLElBQUF2c0IsR0FDQSxH
QUFBd29CLEdBQUF4b0IsRUFBQXdvQixVQUFBLFlBQ0E1ckIsRUFBQTh2QixHQUFBMXNCLEVBQ0Es
YUFBQXdvQixHQUFBNXJCLEVBQUEsSUFBQUEsRUFBQSxLQUFBb0QsRUFBQTRFLE9BQUFoSSxFQUFB
LGlCQUE4R29ELEVBQUE0RSxNQUFBM1csSUFBQSxTQUFBNEIsR0FBZ0MsTUFBQWtHLElBQUFsRyxF
QUFBaUcsTUFBQSxJQUFBakcsRUFBQSxRQUFpRDBCLEtBQUEsU0FBaUIsUUFJaE4sUUFBQWk3QixJ
QUFBb0IsRUFBQTV0QixHQUNBLEdBQUFwRCxHQUFBb0QsRUFBQXlELGVBQUEsS0FBQWlwQixHQUFB
MXNCLEVBQ0EsYUFBQTR0QixFQUFBLElBQUFuQixHQUFBenNCLElBQUFwRCxFQUFBLElBQUFBLEVB
QUEsUUFHQSxRQUFBbXdCLElBQUFsM0IsR0FFQSxPQURBL0UsR0FBQSxHQUNBeEMsRUFBQSxFQUFp
QkEsRUFBQXVILEVBQUF0SCxPQUFrQkQsSUFBQSxDQUNuQyxHQUFBc0osR0FBQS9CLEVBQUF2SCxF
QUNBd0MsSUFBQSxJQUFBOEcsRUFBQSxVQUFBKzFCLEdBQUEvMUIsRUFBQXZJLE9BQUEsSUFFQSxN
QUFBeUIsR0FBQXVOLE1BQUEsTUFJQSxRQUFBc3ZCLElBQUE5d0IsR0FDQSxNQUFBQSxHQUNBb1os
UUFBQSxxQkFDQUEsUUFBQSxxQkFRQSxRQUFBNFgsSUFDQTlJLEVBQ0FudkIsR0FFQSxHQUFBdzFC
LEdBQUF0RyxHQUFBQyxFQUFBblAsT0FBQWhnQixFQUNBMHpCLElBQUE4QixFQUFBeDFCLEVBQ0Es
SUFBQTAwQixHQUFBYSxHQUFBQyxFQUFBeDFCLEVBQ0EsUUFDQXcxQixNQUNBanJCLE9BQUFtcUIs
RUFBQW5xQixPQUNBdUQsZ0JBQUE0bUIsRUFBQTVtQixpQkFpRkEsUUFBQW9xQixJQUFBOXRCLEVB
QUFwSyxHQUNBLEdBQ0EwVixJQURBMVYsRUFBQXF2QixNQUFBcEMsR0FDQWdCLEdBQUE3akIsRUFB
QSxTQVlBc0wsS0FDQXRMLEVBQUFzTCxZQUFBOWQsS0FBQUMsVUFBQTZkLEdBRUEsSUFBQXlpQixH
QUFBckssR0FBQTFqQixFQUFBLFdBQ0ErdEIsS0FDQS90QixFQUFBK3RCLGdCQUlBLFFBQUFDLElB
QUFodUIsR0FDQSxHQUFBckYsR0FBQSxFQU9BLE9BTkFxRixHQUFBc0wsY0FDQTNRLEdBQUEsZUFB
QXFGLEVBQUEsaUJBRUFBLEVBQUErdEIsZUFDQXB6QixHQUFBLFNBQUFxRixFQUFBLGtCQUVBckYs
RUFXQSxRQUFBc3pCLElBQUFqdUIsRUFBQXBLLEdBQ0EsR0FDQW1mLElBREFuZixFQUFBcXZCLE1B
QUFwQyxHQUNBZ0IsR0FBQTdqQixFQUFBLFNBQ0EsSUFBQStVLEVBQUEsQ0FhQS9VLEVBQUErVSxZ
QUFBdm5CLEtBQUFDLFVBQUF3bkIsR0FBQUYsSUFHQSxHQUFBbVosR0FBQXhLLEdBQUExakIsRUFB
QSxXQUNBa3VCLEtBQ0FsdUIsRUFBQWt1QixnQkFJQSxRQUFBQyxJQUFBbnVCLEdBQ0EsR0FBQXJG
LEdBQUEsRUFPQSxPQU5BcUYsR0FBQStVLGNBQ0FwYSxHQUFBLGVBQUFxRixFQUFBLGlCQUVBQSxF
QUFBa3VCLGVBQ0F2ekIsR0FBQSxVQUFBcUYsRUFBQSxtQkFFQXJGLEVBa0JBLFFBQUF5ekIsSUFD
QXB1QixFQUNBaVMsRUFDQW9jLEdBRUFDLEdBQUFELENBQ0EsSUFBQWgvQixHQUFBNGlCLEVBQUE1
aUIsTUFDQXdqQixFQUFBWixFQUFBWSxVQUNBbFcsRUFBQXFELEVBQUFyRCxJQUNBM0csRUFBQWdL
LEVBQUErakIsU0FBQS90QixJQW9CQSxPQVZBLFdBQUEyRyxFQUNBNHhCLEdBQUF2dUIsRUFBQTNR
LEVBQUF3akIsR0FDRyxVQUFBbFcsR0FBQSxhQUFBM0csRUFDSHc0QixHQUFBeHVCLEVBQUEzUSxF
QUFBd2pCLEdBQ0csVUFBQWxXLEdBQUEsVUFBQTNHLEVBQ0h5NEIsR0FBQXp1QixFQUFBM1EsRUFB
QXdqQixHQUVBNmIsR0FBQTF1QixFQUFBM1EsRUFBQXdqQixJQUdBLEVBR0EsUUFBQTJiLElBQ0F4
dUIsRUFDQTNRLEVBQ0F3akIsR0FVQSxHQUFBOGIsR0FBQTliLEtBQUE4YixPQUNBQyxFQUFBbEws
R0FBQTFqQixFQUFBLGlCQUNBNnVCLEVBQUFuTCxHQUFBMWpCLEVBQUEsc0JBQ0E4dUIsRUFBQXBM
LEdBQUExakIsRUFBQSx1QkFDQWdqQixJQUFBaGpCLEVBQUEsVUFDQSxpQkFBQTNRLEVBQUEsUUFD
QUEsRUFBQSxJQUFBdS9CLEVBQUEsV0FDQXYvQixFQUFBLElBQUF3L0IsRUFBQSxLQUVBekwsR0FB
QXBqQixFQUFBLFNBQ0EsV0FBQTNRLEVBQUEseUNBRUF3L0IsRUFBQSxNQUFBQyxFQUFBLHFDQUVB
SCxFQUFBLE1BQUFDLEVBQUEsSUFBQUEsR0FBQSxvQ0FFZXYvQixFQUFBLG1DQUNIQSxFQUFBLHFE
QUNEQSxFQUFBLFFBQ1gsU0FJQSxRQUFBby9CLElBQ0F6dUIsRUFDQTNRLEVBQ0F3akIsR0FVQSxH
QUFBOGIsR0FBQTliLEtBQUE4YixPQUNBQyxFQUFBbEwsR0FBQTFqQixFQUFBLGdCQUNBNHVCLEdB
QUFELEVBQUEsTUFBQUMsRUFBQSxJQUFBQSxFQUNBNUwsR0FBQWhqQixFQUFBLGdCQUFBM1EsRUFB
QSxJQUFBdS9CLEVBQUEsS0FDQXhMLEdBQUFwakIsRUFBQSxTQUFBK3VCLEdBQUExL0IsRUFBQXUv
QixHQUFBLFNBR0EsUUFBQUYsSUFDQTF1QixFQUNBM1EsRUFDQXdqQixHQW1CQSxHQUFBN2MsR0FB
QWdLLEVBQUErakIsU0FBQS90QixLQUNBeVEsRUFBQW9NLE1BQ0F6WCxFQUFBcUwsRUFBQXJMLEtB
Q0F1ekIsRUFBQWxvQixFQUFBa29CLE9BQ0EvWSxFQUFBblAsRUFBQW1QLEtBQ0ExWCxFQUFBOUMs
R0FBQTJxQixJQUFBLFVBQUEvdkIsRUFBQSxpQkFDQWc1QixHQUFBNXpCLEdBQUEsVUFBQXBGLEVB
Q0F4RCxFQUFBLFVBQUF3TixFQUFBckQsS0FBQSxhQUFBcUQsRUFBQXJELElBRUFzeUIsRUFBQXo4
QixFQUNBLHVCQUFBb2pCLEVBQUEsY0FDQUEsRUFBQSxnRUFDQXFaLEdBQUFOLEdBQUEsV0FBQTM0
QixFQUNBLE1BQUFpNUIsRUFBQSxJQUNBQSxDQUNBLElBQUEzRSxHQUFBeUUsR0FBQTEvQixFQUFB
NC9CLEVBQ0F6OEIsSUFBQXc4QixJQUNBMUUsRUFBQSxxQ0FBOENBLEdBVzlDdEgsR0FBQWhqQixF
QUFBLFFBQUF4TixFQUFBLE1BQUFuRCxFQUFBLFFBQUFBLEVBQUEsS0FDQSt6QixHQUFBcGpCLEVB
QUE5QixFQUFBb3NCLEVBQUEsU0FHQSxRQUFBaUUsSUFDQXZ1QixFQUNBM1EsRUFDQXdqQixHQU1B
LEdBQUE4YixHQUFBOWIsS0FBQThiLE9BQ0FPLEVBQUEsMEpBR0FQLEVBQUEsdUJBQ0EsTUFBQTN1
QixFQUFBK2pCLFNBQUEzSSxTQUFBLFVBRUFrUCxFQUFBeUUsR0FBQTEvQixFQUFBNi9CLEVBQ0E5
TCxJQUFBcGpCLEVBQUEsU0FBQXNxQixFQUFBLFNBaUJBLFFBQUF5RSxJQUFBMS9CLEVBQUE2L0Is
R0FDQSxHQUFBQyxHQUFBbEwsR0FBQTUwQixFQUNBLGVBQUE4L0IsRUFBQTdLLElBQ0FqMUIsRUFB
QSxJQUFBNi9CLEVBRUEsZUFBQUMsRUFBQSxpQkFBQUEsRUFBQSxtQ0FFQTkvQixFQUFBLElBQUE2
L0IsRUFBQSxnQ0FDWUEsRUFBQSxLQU1aLFFBQUFyeUIsSUFBQW1ELEVBQUFpUyxHQUNBQSxFQUFB
NWlCLE9BQ0EyekIsR0FBQWhqQixFQUFBLG9CQUFBaVMsRUFBQSxXQU1BLFFBQUErTCxJQUFBaGUs
RUFBQWlTLEdBQ0FBLEVBQUE1aUIsT0FDQTJ6QixHQUFBaGpCLEVBQUEsa0JBQUFpUyxFQUFBLFdB
MEJBLFFBQUFtZCxJQUNBckssRUFDQW52QixHQUtBLE1BSEFBLEtBQ0F0RixPQUFzQisrQixJQUFB
ejVCLEdBQ3RCeTVCLEdBQ0F4QixHQUFBOUksRUFBQW52QixHQUdBLFFBQUEwNUIsSUFDQXZLLEVB
Q0FudkIsRUFDQWEsR0FFQSxHQWtCQXhILElBbEJBMkcsS0FBQXF2QixTQWtCQXJ2QixLQUFBMHNC
LFdBQ0E1MEIsT0FBQWtJLEVBQUEwc0IsWUFBQXlDLEVBQ0FBLEVBQ0EsSUFBQXYxQixHQUFBUCxH
QUNBLE1BQUFPLElBQUFQLEVBRUEsSUFBQTZCLE1BQ0F5K0IsRUFBQUgsR0FBQXJLLEVBQUFudkIs
RUFDQTlFLEdBQUFxUCxPQUFBcXZCLEdBQUFELEVBQUFwdkIsT0FDQSxJQUFBclEsR0FBQXkvQixF
QUFBN3JCLGdCQUFBblYsTUFDQXVDLEdBQUE0UyxnQkFBQSxHQUFBclQsT0FBQVAsRUFDQSxRQUFB
eEIsR0FBQSxFQUFpQkEsRUFBQXdCLEVBQU94QixJQUN4QndDLEVBQUE0UyxnQkFBQXBWLEdBQUFr
aEMsR0FBQUQsRUFBQTdyQixnQkFBQXBWLEdBWUEsT0FBQWtCLElBQUFQLEdBQUE2QixFQUdBLFFB
QUEwK0IsSUFBQWxGLEdBQ0EsSUFDQSxVQUFBanlCLFVBQUFpeUIsR0FDRyxNQUFBcDFCLEdBQ0gs
TUFBQW5FLElBd0VBLFFBQUEwK0IsSUFBQXp2QixHQUNBLEdBQUFBLEVBQUEwdkIsVUFDQSxNQUFB
MXZCLEdBQUEwdkIsU0FFQSxJQUFBQyxHQUFBNWpCLFNBQUEvSSxjQUFBLE1BRUEsT0FEQTJzQixH
QUFBMWlCLFlBQUFqTixFQUFBNHZCLFdBQUEsSUFDQUQsRUFBQTdSLFVBejNQQSxHQStPQStSLElB
cUdBQyxHQXBWQTdGLEdBQUFuOEIsRUFBQSxxQkFpQkFvQixHQUFBaEIsT0FBQWdKLFVBQUFoSSxl
QTBCQTZnQyxHQUFBLFNBQ0FoNkIsR0FBQXpHLEVBQUEsU0FBQXZCLEdBQ0EsTUFBQUEsR0FBQWtv
QixRQUFBOFosR0FBQSxTQUFBeHFCLEVBQUEzVCxHQUFrRCxNQUFBQSxLQUFBbytCLGNBQUEsT0FN
bER4NEIsR0FBQWxJLEVBQUEsU0FBQXZCLEdBQ0EsTUFBQUEsR0FBQXFRLE9BQUEsR0FBQTR4Qixj
QUFBamlDLEVBQUFzUSxNQUFBLEtBTUE0eEIsR0FBQSxpQkFDQWw0QixHQUFBekksRUFBQSxTQUFB
dkIsR0FDQSxNQUFBQSxHQUNBa29CLFFBQUFnYSxHQUFBLFNBQ0FoYSxRQUFBZ2EsR0FBQSxTQUNB
emhDLGdCQXdEQW1DLEdBQUF6QyxPQUFBZ0osVUFBQXZHLFNBQ0FDLEdBQUEsa0JBMEJBa3ZCLEdB
QUEsV0FBc0IsVUF5RHRCenRCLEdBQUEsVUFvQkE2OUIsR0FBQSxnQkFHQXJrQixHQUNBLG1CQUFB
RyxTQUNBLG9CQUFBOWQsT0FBQWdKLFVBQUF2RyxTQUFBeEIsS0FBQTZjLFFBRUFta0IsR0FBQXRr
QixJQUFBRyxPQUFBb2tCLFVBQUFDLFVBQUE3aEMsY0FDQXUzQixHQUFBb0ssSUFBQSxlQUFBNzlC
LEtBQUE2OUIsSUFDQW5XLEdBQUFtVyxPQUFBdGhDLFFBQUEsY0FDQXloQyxHQUFBSCxPQUFBdGhD
LFFBQUEsV0FDQTBoQyxHQUFBSixPQUFBdGhDLFFBQUEsYUFDQTJoQyxHQUFBTCxJQUFBLHVCQUFB
NzlCLEtBQUE2OUIsSUFLQXY4QixHQUFBLFdBV0EsTUFWQW9FLFVBQUE2M0IsS0FPQUEsSUFMQWhr
QixJQUFBLG1CQUFBeGUsSUFHQSxXQUFBQSxFQUFBLFFBQUFvakMsSUFBQUMsU0FLQWIsSUFJQTMy
QixHQUFBMlMsSUFBQUcsT0FBQTJrQiw2QkFVQXIzQixHQUFBLFdBS0EsUUFBQXMzQixLQUNBQyxH
QUFBLENBQ0EsSUFBQUMsR0FBQUMsRUFBQTF5QixNQUFBLEVBQ0EweUIsR0FBQXhpQyxPQUFBLENB
Q0EsUUFBQUQsR0FBQSxFQUFtQkEsRUFBQXdpQyxFQUFBdmlDLE9BQW1CRCxJQUN0Q3dpQyxFQUFB
eGlDLEtBVEEsR0FFQTBpQyxHQUZBRCxLQUNBRixHQUFBLENBbUJBLHVCQUFBSSxVQUFBeitCLEVB
QUF5K0IsU0FBQSxDQUNBLEdBQUFDLEdBQUFELFFBQUF6c0IsU0FDQXdzQixHQUFBLFdBQ0FFLEVB
QUF2c0IsS0FBQWlzQixHQU1BSixJQUFrQnZaLFdBQUFsbUIsUUFFZix1QkFBQW9nQyxvQkFDSDMr
QixFQUFBMitCLG1CQUVBLHlDQUFBQSxpQkFBQXhnQyxXQWlCQXFnQyxFQUFBLFdBQ0EvWixXQUFB
MlosRUFBQSxRQWpCQSxDQUdBLEdBQUFRLEdBQUEsRUFDQUMsRUFBQSxHQUFBRixrQkFBQVAsR0FD
QVUsRUFBQXZsQixTQUFBWSxlQUFBamYsT0FBQTBqQyxHQUNBQyxHQUFBLzlCLFFBQUFnK0IsR0FD
QUMsZUFBQSxJQUVBUCxFQUFBLFdBQ0FJLEtBQUEsS0FDQUUsRUFBQTMyQixLQUFBak4sT0FBQTBq
QyxJQVVBLGdCQUFBajFCLEVBQUF4TSxHQUNBLEdBQUE2aEMsRUFTQSxJQVJBVCxFQUFBaCtCLEtB
QUEsV0FDQW9KLEdBQWVBLEVBQUFoTixLQUFBUSxHQUNmNmhDLEdBQXFCQSxFQUFBN2hDLEtBRXJC
a2hDLElBQ0FBLEdBQUEsRUFDQUcsTUFFQTcwQixHQUFBLG1CQUFBODBCLFNBQ0EsVUFBQUEsU0FB
QSxTQUFBenNCLEdBQ0FndEIsRUFBQWh0QixPQVVBc3JCLElBRkEsbUJBQUEyQixNQUFBai9CLEVB
QUFpL0IsS0FFQUEsSUFHQSxXQUNBLFFBQUFBLEtBQ0ExMUIsS0FBQXZILElBQUF0RyxPQUFBQyxP
QUFBLE1BWUEsTUFWQXNqQyxHQUFBdjZCLFVBQUE0QyxJQUFBLFNBQUE3SyxHQUNBLE1BQUErSSxV
QUFBK0QsS0FBQXZILElBQUF2RixJQUVBd2lDLEVBQUF2NkIsVUFBQTZDLElBQUEsU0FBQTlLLEdB
Q0E4TSxLQUFBdkgsSUFBQXZGLEdBQUEsR0FFQXdpQyxFQUFBdjZCLFVBQUF1QyxNQUFBLFdBQ0Fz
QyxLQUFBdkgsSUFBQXRHLE9BQUFDLE9BQUEsT0FHQXNqQyxJQU1BLElBc0ZBQyxJQXRGQXY0QixJ
QUlBdzRCLHNCQUFBempDLE9BQUFDLE9BQUEsTUFLQXlqQyxRQUFBLEVBS0ExNEIsVUFBQSxFQUtB
eU4sYUFBQSxLQUtBa3JCLGdCQUFBLEtBS0EzcEIsU0FBQWhhLE9BQUFDLE9BQUEsTUFNQXlYLGNB
QUFrYSxHQU1BbFUsaUJBQUFrVSxHQUtBbmEsZ0JBQUE1VSxFQU1BaVgsWUFBQThYLEdBS0F4Vixh
QUNBLFlBQ0EsWUFDQSxVQU1Bd25CLGlCQUNBLGVBQ0EsVUFDQSxjQUNBLFVBQ0EsZUFDQSxVQUNB
LGdCQUNBLFlBQ0EsWUFDQSxlQU1BQyxnQkFBQSxLQUdBOU0sR0FBQWwwQixFQXNDQWloQyxHQUFB
LEVBTUFwL0IsR0FBQSxXQUNBbUosS0FBQTFFLEdBQUEyNkIsS0FDQWoyQixLQUFBazJCLFFBR0Fy
L0IsSUFBQXNFLFVBQUFnN0IsT0FBQSxTQUFBQyxHQUNBcDJCLEtBQUFrMkIsS0FBQWwvQixLQUFB
by9CLElBR0F2L0IsR0FBQXNFLFVBQUFrN0IsVUFBQSxTQUFBRCxHQUNBMWpDLEVBQUFzTixLQUFB
azJCLEtBQUFFLElBR0F2L0IsR0FBQXNFLFVBQUF4QyxPQUFBLFdBQ0E5QixHQUFBQyxRQUNBRCxH
QUFBQyxPQUFBdy9CLE9BQUF0MkIsT0FJQW5KLEdBQUFzRSxVQUFBckMsT0FBQSxXQUdBLE9BREFv
OUIsR0FBQWwyQixLQUFBazJCLEtBQUE1ekIsUUFDQS9QLEVBQUEsRUFBQXdCLEVBQUFtaUMsRUFB
QTFqQyxPQUFrQ0QsRUFBQXdCLEVBQU94QixJQUN6QzJqQyxFQUFBM2pDLEdBQUErSCxVQU9BekQs
R0FBQUMsT0FBQSxJQUNBLElBQUFDLE9BZ0JBdy9CLEdBQUFqaUMsTUFBQTZHLFVBQ0FxN0IsR0FB
QXJrQyxPQUFBQyxPQUFBbWtDLEtBQ0EsT0FDQSxNQUNBLFFBQ0EsVUFDQSxTQUNBLE9BQ0EsV0FF
QS9uQixRQUFBLFNBQUFpb0IsR0FFQSxHQUFBQyxHQUFBSCxHQUFBRSxFQUNBMWdDLEdBQUF5Z0Ms
R0FBQUMsRUFBQSxXQU9BLElBTkEsR0FBQTl6QixHQUFBM08sVUFJQXpCLEVBQUF5QixVQUFBeEIs
T0FDQW9hLEVBQUEsR0FBQXRZLE9BQUEvQixHQUNBQSxLQUNBcWEsRUFBQXJhLEdBQUFvUSxFQUFB
cFEsRUFFQSxJQUVBcWtCLEdBRkErZixFQUFBRCxFQUFBemlDLE1BQUErTCxLQUFBNE0sR0FDQXBW
LEVBQUF3SSxLQUFBdkksTUFFQSxRQUFBZy9CLEdBQ0EsV0FDQTdmLEVBQUFoSyxDQUNBLE1BQ0Es
ZUFDQWdLLEVBQUFoSyxDQUNBLE1BQ0EsY0FDQWdLLEVBQUFoSyxFQUFBdEssTUFBQSxHQU1BLE1B
SEFzVSxJQUFtQnBmLEVBQUFvL0IsYUFBQWhnQixHQUVuQnBmLEVBQUFXLElBQUFXLFNBQ0E2OUIs
S0FNQSxJQUFBRSxJQUFBMWtDLE9BQUEya0Msb0JBQUFOLElBUUE3K0IsSUFDQUMsZUFBQSxFQUNB
bS9CLGdCQUFBLEdBU0FyL0IsR0FBQSxTQUFBcEUsR0FLQSxHQUpBME0sS0FBQTFNLFFBQ0EwTSxL
QUFBN0gsSUFBQSxHQUFBdEIsSUFDQW1KLEtBQUEvRyxRQUFBLEVBQ0FsRCxFQUFBekMsRUFBQSxT
QUFBME0sTUFDQTFMLE1BQUF3RCxRQUFBeEUsR0FBQSxDQUNBLEdBQUEwakMsR0FBQTdDLEdBQ0Fo
OUIsRUFDQUcsQ0FDQTAvQixHQUFBMWpDLEVBQUFrakMsR0FBQUssSUFDQTcyQixLQUFBNDJCLGFB
QUF0akMsT0FFQTBNLE1BQUFpM0IsS0FBQTNqQyxHQVNBb0UsSUFBQXlELFVBQUE4N0IsS0FBQSxT
QUFBaGtDLEdBRUEsT0FEQW1DLEdBQUFqRCxPQUFBaUQsS0FBQW5DLEdBQ0FWLEVBQUEsRUFBaUJB
LEVBQUE2QyxFQUFBNUMsT0FBaUJELElBQ2xDMEYsRUFBQWhGLEVBQUFtQyxFQUFBN0MsR0FBQVUs
RUFBQW1DLEVBQUE3QyxNQU9BbUYsR0FBQXlELFVBQUF5N0IsYUFBQSxTQUFBTSxHQUNBLE9BQUEz
a0MsR0FBQSxFQUFBd0IsRUFBQW1qQyxFQUFBMWtDLE9BQW1DRCxFQUFBd0IsRUFBT3hCLElBQzFD
Z0YsRUFBQTIvQixFQUFBM2tDLElBMExBLElBQUFzSSxJQUFBdUMsR0FBQXc0QixxQkF3Q0EvNkIs
SUFBQStELEtBQUEsU0FDQW5GLEVBQ0FDLEVBQ0FnQixHQUVBLE1BQUFBLEdBNEJHakIsR0FBQUMs
RUFDSCxXQUVBLEdBQUF5OUIsR0FBQSxrQkFBQXo5QixHQUNBQSxFQUFBdEcsS0FBQXNILEdBQ0Fo
QixFQUNBMDlCLEVBQUEsa0JBQUEzOUIsR0FDQUEsRUFBQXJHLEtBQUFzSCxHQUNBdUIsTUFDQSxP
QUFBazdCLEdBQ0EvOUIsRUFBQSs5QixFQUFBQyxHQUVBQSxHQVpHLE9BMUJIMTlCLEVBR0Esa0JB
QUFBLEdBT0FELEVBRUFBLEVBUUEsV0FDQSxNQUFBTCxHQUNBTSxFQUFBdEcsS0FBQTRNLE1BQ0F2
RyxFQUFBckcsS0FBQTRNLFFBVkF0RyxFQVpBRCxHQTJEQTJELEdBQUEyNEIsZ0JBQUF2bkIsUUFB
QSxTQUFBL00sR0FDQTVHLEdBQUE0RyxHQUFBakksSUFpQkE0RCxHQUFBbVIsWUFBQUMsUUFBQSxT
QUFBdlUsR0FDQVksR0FBQVosRUFBQSxLQUFBTixJQVNBa0IsR0FBQTRFLE1BQUEsU0FBQWhHLEVB
QUFDLEdBRUEsSUFBQUEsRUFBa0IsTUFBQUQsRUFDbEIsS0FBQUEsRUFBbUIsTUFBQUMsRUFDbkIs
SUFBQXJGLEtBQ0FFLEdBQUFGLEVBQUFvRixFQUNBLFFBQUF2RyxLQUFBd0csR0FBQSxDQUNBLEdB
QUFjLEdBQUFuRyxFQUFBbkIsR0FDQXVILEVBQUFmLEVBQUF4RyxFQUNBc0gsS0FBQWxHLE1BQUF3
RCxRQUFBMEMsS0FDQUEsT0FFQW5HLEVBQUFuQixHQUFBc0gsRUFDQUEsRUFBQWxGLE9BQUFtRixJ
QUNBQSxHQUVBLE1BQUFwRyxJQU1Bd0csR0FBQWYsTUFDQWUsR0FBQTJFLFFBQ0EzRSxHQUFBa0Us
U0FBQSxTQUFBdEYsRUFBQUMsR0FDQSxJQUFBQSxFQUFrQixNQUFBRCxFQUNsQixLQUFBQSxFQUFt
QixNQUFBQyxFQUNuQixJQUFBckYsR0FBQWxDLE9BQUFDLE9BQUEsS0FHQSxPQUZBbUMsR0FBQUYs
RUFBQW9GLEdBQ0FsRixFQUFBRixFQUFBcUYsR0FDQXJGLEVBTUEsSUFBQXlHLElBQUEsU0FBQXJC
LEVBQUFDLEdBQ0EsTUFBQXVDLFVBQUF2QyxFQUNBRCxFQUNBQyxHQXdUQXFWLEdBQUE1YyxPQUFB
a2xDLFFBQ0FDLGVBQUFyL0IsRUFDQTFHLFlBQ0FLLFdBQ0FHLFVBQ0FtOEIsZ0JBQ0FqYSxPQUFB
dmhCLEVBQ0FNLFNBQ0FLLGNBQ0FFLFNBQ0F5RyxZQUNBeUIsY0FDQU8sYUFDQTNCLEtBQUExRyxF
QUNBUSxVQUNBSSxTQUNBRyxXQUNBQyxnQkFDQUcsV0FDQUUsT0FDQSt1QixNQUNBOXVCLGdCQUNB
USxhQUNBRSxlQUNBQyxhQUNBRyxNQUNBSyxZQUNBKzlCLFlBQ0Fya0IsYUFDQXNrQixNQUNBcEss
UUFDQS9MLFNBQ0FzVyxVQUNBQyxhQUNBQyxTQUNBNThCLHFCQUNBc0YsWUFDQUksWUFDQXcyQixX
QUFjLE1BQUFBLEtBQ2R4NUIsZUFDQWMsZUFDQTZ0QixXQUFjLE1BQUFBLEtBQ2R5TSwwQkFBNkIs
TUFBQUEsS0FDN0JqNkIsaUJBaUVBaUIsTUFDQUMsTUFFQUMsSUFBQSxFQUNBQyxJQUFBLEVBQ0Fq
SyxHQUFBLEVBNkZBMGtDLEdBQUEsRUFPQW40QixHQUFBLFNBQ0ExRSxFQUNBeUYsRUFDQUMsRUFD
QXZHLEdBRUEsU0FBQUEsVUFFQW1HLEtBQUF0RixLQUNBQSxFQUFBd0QsVUFBQWxILEtBQUFnSixN
QUVBQSxLQUFBdzNCLE9BQUEzOUIsRUFBQTI5QixLQUNBeDNCLEtBQUFLLE9BQUF4RyxFQUFBd0cs
S0FDQUwsS0FBQVgsT0FBQXhGLEVBQUF3RixLQUNBVyxLQUFBd0ksT0FBQTNPLEVBQUEyTyxLQUNB
eEksS0FBQTZsQixXQUFBMWxCLEVBQUF2TCxXQUNBb0wsS0FBQUksS0FDQUosS0FBQTFFLEtBQUFp
OEIsR0FDQXYzQixLQUFBeTNCLFFBQUEsRUFDQXozQixLQUFBVixNQUFBVSxLQUFBWCxLQUNBVyxL
QUFBMDNCLFFBQ0ExM0IsS0FBQTIzQixXQUNBMzNCLEtBQUE0M0IsT0FBQSxHQUFBN0QsSUFDQS96
QixLQUFBNjNCLFVBQUEsR0FBQTlELElBRUEsa0JBQUE1ekIsR0FDQUgsS0FBQTFILE9BQUE2SCxH
QUVBSCxLQUFBMUgsT0FBQWxDLEVBQUErSixHQUNBSCxLQUFBMUgsU0FDQTBILEtBQUExSCxPQUFB
LGVBU0EwSCxLQUFBMU0sTUFBQTBNLEtBQUFYLEtBQ0FwRCxPQUNBK0QsS0FBQXpILE1BTUE2RyxJ
QUFBakUsVUFBQTVDLElBQUEsV0FDQTVCLEVBQUFxSixLQUNBLElBQUExTSxHQUFBME0sS0FBQTFI
LE9BQUFsRixLQUFBNE0sS0FBQXRGLEdBQUFzRixLQUFBdEYsR0FRQSxPQUxBc0YsTUFBQXczQixN
QUNBaDZCLEVBQUFsSyxHQUVBMkQsSUFDQStJLEtBQUE4M0IsY0FDQXhrQyxHQU1BOEwsR0FBQWpF
LFVBQUFtN0IsT0FBQSxTQUFBbitCLEdBQ0EsR0FBQW1ELEdBQUFuRCxFQUFBbUQsRUFDQTBFLE1B
QUE2M0IsVUFBQTk1QixJQUFBekMsS0FDQTBFLEtBQUE2M0IsVUFBQTc1QixJQUFBMUMsR0FDQTBF
LEtBQUEyM0IsUUFBQTNnQyxLQUFBbUIsR0FDQTZILEtBQUE0M0IsT0FBQTc1QixJQUFBekMsSUFD
QW5ELEVBQUFnK0IsT0FBQW4yQixRQVFBWixHQUFBakUsVUFBQTI4QixZQUFBLFdBSUEsSUFIQSxH
QUFBQyxHQUFBLzNCLEtBRUF6TixFQUFBeU4sS0FBQTAzQixLQUFBbGxDLE9BQ0FELEtBQUEsQ0FD
QSxHQUFBNEYsR0FBQTQvQixFQUFBTCxLQUFBbmxDLEVBQ0F3bEMsR0FBQUYsVUFBQTk1QixJQUFB
NUYsRUFBQW1ELEtBQ0FuRCxFQUFBaytCLFVBQUEwQixHQUdBLEdBQUFDLEdBQUFoNEIsS0FBQTQz
QixNQUNBNTNCLE1BQUE0M0IsT0FBQTUzQixLQUFBNjNCLFVBQ0E3M0IsS0FBQTYzQixVQUFBRyxF
QUNBaDRCLEtBQUE2M0IsVUFBQW42QixRQUNBczZCLEVBQUFoNEIsS0FBQTAzQixLQUNBMTNCLEtB
QUEwM0IsS0FBQTEzQixLQUFBMjNCLFFBQ0EzM0IsS0FBQTIzQixRQUFBSyxFQUNBaDRCLEtBQUEy
M0IsUUFBQW5sQyxPQUFBLEdBT0E0TSxHQUFBakUsVUFBQWIsT0FBQSxXQUVBMEYsS0FBQVgsS0FD
QVcsS0FBQVYsT0FBQSxFQUNHVSxLQUFBd0ksS0FDSHhJLEtBQUE5QyxNQUVBSSxFQUFBMEMsT0FR
QVosR0FBQWpFLFVBQUErQixJQUFBLFdBQ0EsR0FBQThDLEtBQUF5M0IsT0FBQSxDQUNBLEdBQUFu
a0MsR0FBQTBNLEtBQUF6SCxLQUNBLElBQ0FqRixJQUFBME0sS0FBQTFNLE9BSUFvQixFQUFBcEIs
SUFDQTBNLEtBQUF3M0IsS0FDQSxDQUVBLEdBQUEvZ0IsR0FBQXpXLEtBQUExTSxLQUVBLElBREEw
TSxLQUFBMU0sUUFDQTBNLEtBQUFLLEtBQ0EsSUFDQUwsS0FBQUksR0FBQWhOLEtBQUE0TSxLQUFB
dEYsR0FBQXBILEVBQUFtakIsR0FDUyxNQUFBdGQsR0FNVCxJQUFBaUUsR0FBQXdOLGFBR0EsS0FB
QXpSLEVBRkFpRSxJQUFBd04sYUFBQXhYLEtBQUEsS0FBQStGLEVBQUE2RyxLQUFBdEYsUUFNQXNG
LE1BQUFJLEdBQUFoTixLQUFBNE0sS0FBQXRGLEdBQUFwSCxFQUFBbWpCLE1BVUFyWCxHQUFBakUs
VUFBQW9FLFNBQUEsV0FDQVMsS0FBQTFNLE1BQUEwTSxLQUFBekgsTUFDQXlILEtBQUFWLE9BQUEs
R0FNQUYsR0FBQWpFLFVBQUF4QyxPQUFBLFdBSUEsSUFIQSxHQUFBby9CLEdBQUEvM0IsS0FFQXpO
LEVBQUF5TixLQUFBMDNCLEtBQUFsbEMsT0FDQUQsS0FDQXdsQyxFQUFBTCxLQUFBbmxDLEdBQUFv
RyxVQU9BeUcsR0FBQWpFLFVBQUFvRixTQUFBLFdBQ0EsR0FBQXczQixHQUFBLzNCLElBRUEsSUFB
QUEsS0FBQXkzQixPQUFBLENBS0F6M0IsS0FBQXRGLEdBQUFvSixtQkFBQTlELEtBQUF0RixHQUFB
dTlCLGVBQ0F2bEMsRUFBQXNOLEtBQUF0RixHQUFBd0QsVUFBQThCLEtBR0EsS0FEQSxHQUFBek4s
R0FBQXlOLEtBQUEwM0IsS0FBQWxsQyxPQUNBRCxLQUNBd2xDLEVBQUFMLEtBQUFubEMsR0FBQThq
QyxVQUFBMEIsRUFFQS8zQixNQUFBeTNCLFFBQUEsR0FTQSxJQUFBaDZCLElBQUEsR0FBQXMyQixJ
QWlIQTkwQixJQXpFQWxOLEVBQUEsaUJBMEVBaUUsWUFBQSxFQUNBRyxjQUFBLEVBQ0FvQyxJQUFB
dkQsRUFDQXlELElBQUF6RCxJQThJQTJMLEdBQUEsU0FDQUMsRUFDQWhDLEVBQ0FpQyxFQUNBQyxF
QUNBQyxFQUNBQyxFQUNBQyxFQUNBQyxHQUVBbEIsS0FBQVksTUFDQVosS0FBQXBCLE9BQ0FvQixL
QUFBYSxXQUNBYixLQUFBYyxPQUNBZCxLQUFBZSxNQUNBZixLQUFBZ0IsS0FDQWhCLEtBQUFpQixV
QUNBakIsS0FBQW9ILGtCQUFBbkwsT0FDQStELEtBQUE5TSxJQUFBMEwsS0FBQTFMLElBQ0E4TSxL
QUFBa0IsbUJBQ0FsQixLQUFBdkYsTUFBQXdCLE9BQ0ErRCxLQUFBeEYsT0FBQXlCLE9BQ0ErRCxL
QUFBazRCLEtBQUEsRUFDQWw0QixLQUFBbUIsVUFBQSxFQUNBbkIsS0FBQThTLGNBQUEsRUFDQTlT
LEtBQUFxTSxXQUFBLEVBQ0FyTSxLQUFBb0IsVUFBQSxFQUNBcEIsS0FBQXNLLFFBQUEsR0FHQWpH
LEdBQUEsV0FDQSxHQUFBbUcsR0FBQSxHQUFBN0osR0FHQSxPQUZBNkosR0FBQTFKLEtBQUEsR0FD
QTBKLEVBQUE2QixXQUFBLEVBQ0E3QixHQThMQTVGLEdBQUEsS0EyTUEwRSxJQUFhMUIsUUFBQUks
WUFBQUUsVUFBQTBMLFFBQUF6TCxJQUNiZ0IsR0FBQWhYLE9BQUFpRCxLQUFBa1UsSUF3dEJBMEQs
R0FBQSxDQW1GQUgsSUFBQXpSLElBQ0F5RSxHQUFBekUsSUFDQXNSLEdBQUF0UixJQUNBMkksR0FB
QTNJLElBQ0ErTyxHQUFBL08sR0F3SUEsSUFBQSs4QixLQUFBeG1DLE9BQUEweUIsUUFVQStULElB
Q0FyK0IsS0FBQSxhQUNBdUosVUFBQSxFQUNBeEosT0FDQXUrQixRQUFBRixHQUNBRyxRQUFBSCxJ
QUVBSSxRQUFBLFdBQ0F2NEIsS0FBQXZNLE1BQUF0QixPQUFBQyxPQUFBLE9BRUFnUyxPQUFBLFdB
Q0EsR0FBQTNELEdBQUEwQyxHQUFBbkQsS0FBQTRGLE9BQUF4SixRQUNBLElBQUFxRSxLQUFBUyxp
QkFBQSxDQUNBLEdBQUFpTSxHQUFBMU0sRUFBQVMsaUJBRUFuSCxFQUFBb1QsRUFBQXpXLEtBQUFt
RCxRQUFBRSxNQUFBb1QsRUFBQXZNLEdBQ0EsSUFBQTdHLElBQ0FpRyxLQUFBcTRCLFVBQUExcEIs
R0FBQTNPLEtBQUFxNEIsUUFBQXQrQixJQUNBaUcsS0FBQXM0QixTQUFBM3BCLEdBQUEzTyxLQUFB
czRCLFFBQUF2K0IsSUFFQSxNQUFBMEcsRUFFQSxJQUFBdk4sR0FBQSxNQUFBdU4sRUFBQXZOLElB
R0FpYSxFQUFBelcsS0FBQThQLEtBQUEyRyxFQUFBdk0sSUFBQSxLQUFBdU0sRUFBQSxRQUNBMU0s
RUFBQXZOLEdBQ0E4TSxNQUFBdk0sTUFBQVAsR0FDQXVOLEVBQUFoRyxNQUFBdUYsS0FBQXZNLE1B
QUFQLEdBQUF1SCxNQUVBdUYsS0FBQXZNLE1BQUFQLEdBQUF1TixFQUVBQSxFQUFBN0IsS0FBQWtK
LFdBQUEsRUFFQSxNQUFBckgsSUFFQSszQixVQUFBLFdBQ0EsR0FBQVQsR0FBQS8zQixJQUVBLFFB
QUE5TSxLQUFBOE0sTUFBQXZNLE1BQUEsQ0FDQSxHQUFBZ04sR0FBQXMzQixFQUFBdGtDLE1BQUFQ
LEVBQ0FvUixJQUFBN0QsRUFBQWhHLE1BQUEsZUFDQWdHLEVBQUFoRyxNQUFBdUwsY0FLQWlKLElB
Q0FtcEIsYUF1Q0F2cEIsSUFBQXpULElBRUFqSixPQUFBOEQsZUFBQW1GLEdBQUFELFVBQUEsYUFD
QTVDLElBQUFWLEtBR0F1RCxHQUFBcTlCLFFBQUEsT0FLQSxJQXl1Q0FDLElBenVDQXpzQixHQUFB
LFNBQUFyTCxFQUFBbWlCLEdBQ0EsTUFDQSxVQUFBQSxJQUFBLFVBQUFuaUIsR0FBQSxhQUFBQSxH
QUFBLFdBQUFBLElBQ0EsYUFBQW1pQixHQUFBLFdBQUFuaUIsR0FDQSxZQUFBbWlCLEdBQUEsVUFB
QW5pQixHQUNBLFVBQUFtaUIsR0FBQSxVQUFBbmlCLEdBSUE2VyxHQUFBMWxCLEVBQUEsd0NBRUEy
bEIsR0FBQTNsQixFQUNBLHdZQTBCQXdsQixJQWxCQXhsQixFQUNBLDQzQkFpQkEsZ0NBRUFzbEIs
R0FBQSxTQUFBdGQsR0FDQSxZQUFBQSxFQUFBc0ksT0FBQSxjQUFBdEksRUFBQXVJLE1BQUEsTUFH
QWtWLEdBQUEsU0FBQXpkLEdBQ0EsTUFBQXNkLElBQUF0ZCxLQUFBdUksTUFBQSxFQUFBdkksRUFB
QXZILFFBQUEsSUFHQW1sQixHQUFBLFNBQUFubUIsR0FDQSxhQUFBQSxRQUFBLEdBNkVBbWYsSUFD
QWdvQixJQUFBLDZCQUNBQyxLQUFBLHFDQUNBQyxNQUFBLGdDQUdBQyxHQUFBL21DLEVBQ0Esc2xC
QWFBK3hCLEdBQUEveEIsRUFDQSw2RkFFQSxHQUtBeXhCLEdBQUF6eEIsRUFDQSwyREFDQSxHQUtB
dXhCLEdBQUF2eEIsRUFDQSxtU0FLQSxHQUtBNmQsR0FBQTdkLEVBQ0EseU1BR0EsR0FHQXUzQixH
QUFBLFNBQUExb0IsR0FBK0IsY0FBQUEsR0FFL0JpSixHQUFBLFNBQUFqSixHQUNBLE1BQUFrNEIs
SUFBQWw0QixJQUFBZ1AsR0FBQWhQLElBY0FtUCxHQUFBNWQsT0FBQUMsT0FBQSxNQTJHQW1nQixH
QUFBcGdCLE9BQUFrbEMsUUFDQXB3QixjQUFBcUosR0FDQUcsbUJBQ0FHLGtCQUNBQyxpQkFDQUMs
Z0JBQ0FHLGVBQ0FDLGVBQ0EvQixjQUNBZ0MsZUFDQVosV0FDQWEsa0JBQ0FFLGNBQ0FkLGtCQUtB
OUYsSUFDQXRZLE9BQUEsU0FBQW9YLEVBQUEvSSxHQUNBOFEsR0FBQTlRLElBRUFuRyxPQUFBLFNB
QUEyTixFQUFBeEgsR0FDQXdILEVBQUFySixLQUFBOEwsTUFBQWpLLEVBQUE3QixLQUFBOEwsTUFD
QTZHLEdBQUF0SixHQUFBLEdBQ0FzSixHQUFBOVEsS0FHQW1ULFFBQUEsU0FBQW5ULEdBQ0E4USxH
QUFBOVEsR0FBQSxLQTRDQTRTLEdBQUEsR0FBQTFTLElBQUEsVUFFQThVLElBQUEsc0NBc2dCQXJi
LElBQ0FoSSxPQUFBNGpCLEdBQ0ExYixPQUFBMGIsR0FDQXBDLFFBQUEsU0FBQW5ULEdBQ0F1VixH
QUFBdlYsRUFBQTRTLE1BcUVBMEQsR0FBQTVrQixPQUFBQyxPQUFBLE1BaUNBMm1DLElBQ0FydUIs
R0FDQXRRLElBOERBeU8sSUFDQXpXLE9BQUE4a0IsR0FDQTVjLE9BQUE0YyxJQTZCQThoQixJQUNB
NW1DLE9BQUF5bEIsR0FDQXZkLE9BQUF1ZCxJQXFCQTBQLElBQ0FuMUIsT0FBQStsQixHQUNBN2Qs
T0FBQTZkLElBK0NBclAsSUFDQTFXLE9BQUFvbUIsR0FDQWxlLE9BQUFrZSxJQUtBVSxHQUFBM2xC
LEVBQUEsU0FBQTBsQyxHQUNBLEdBQUFsa0MsTUFDQW1rQyxFQUFBRCxFQUFBbm1DLFFBQUEsaUJB
RUFxbUMsRUFBQUQsRUFBQSxnQkFBd0MsSUFDeENFLEVBQUFGLEVBQUEsV0FPQSxPQU5BRCxHQUFB
M21DLE1BQUE2bUMsR0FBQTNxQixRQUFBLFNBQUE1YixHQUNBLEdBQUFBLEVBQUEsQ0FDQSxHQUFB
b2xDLEdBQUFwbEMsRUFBQU4sTUFBQThtQyxFQUNBcEIsR0FBQXhsQyxPQUFBLElBQUF1QyxFQUFB
aWpDLEVBQUEsR0FBQW5lLFFBQUFtZSxFQUFBLEdBQUFuZSxXQUdBOWtCLElBeURBc2tDLEdBQUEs
TUFDQTFmLEdBQUEsU0FBQTFWLEVBQUFsSyxFQUFBdkksR0FFQTZuQyxHQUFBOWlDLEtBQUF3RCxH
QUNBa0ssRUFBQTZVLE1BQUF3Z0IsWUFBQXYvQixFQUFBdkksR0FFQXlTLEVBQUE2VSxNQUFBeWdC
LEdBQUF4L0IsSUFBQXZJLEdBSUFnb0MsSUFBQSxxQkFHQUQsR0FBQWhtQyxFQUFBLFNBQUFzSSxH
QUdBLEdBRkE2OEIsT0FBQTFvQixTQUFBL0ksY0FBQSxPQUNBcEwsRUFBQTdCLEdBQUE2QixHQUNB
LFdBQUFBLE9BQUE2OEIsSUFBQTVmLE1BQ0EsTUFBQWpkLEVBR0EsUUFEQTQ5QixHQUFBNTlCLEVB
QUF3RyxPQUFBLEdBQUE0eEIsY0FBQXA0QixFQUFBeUcsTUFBQSxHQUNBL1AsRUFBQSxFQUFpQkEs
RUFBQWluQyxHQUFBaG5DLE9BQXFCRCxJQUFBLENBQ3RDLEdBQUFtbkMsR0FBQUYsR0FBQWpuQyxH
QUFBa25DLENBQ0EsSUFBQUMsSUFBQWhCLElBQUE1ZixNQUNBLE1BQUE0Z0IsTUEwQ0E1Z0IsSUFD
QTFtQixPQUFBa25CLEdBQ0FoZixPQUFBZ2YsSUEyREFxZ0IsR0FBQTdwQixLQUFBbU8sR0FDQXJE
LEdBQUEsYUFDQWtCLEdBQUEsWUFHQVIsR0FBQSxhQUNBVCxHQUFBLGdCQUNBYyxHQUFBLFlBQ0Fi
LEdBQUEsY0FDQTZlLE1BRUExOUIsU0FBQWdVLE9BQUEycEIsaUJBQ0EzOUIsU0FBQWdVLE9BQUE0
cEIsd0JBQ0F2ZSxHQUFBLG1CQUNBVCxHQUFBLHVCQUVBNWUsU0FBQWdVLE9BQUE2cEIsZ0JBQ0E3
OUIsU0FBQWdVLE9BQUE4cEIsdUJBQ0FwZSxHQUFBLGtCQUNBYixHQUFBLHNCQUlBLElBQUFWLElB
QUF0SyxJQUFBRyxPQUFBK3BCLHVCQUFBOWUsV0FrREFjLEdBQUEseUJBNlJBZ0QsR0FBQXpyQixF
QUFBLFNBQUF3RyxHQUNBLE9BQ0E4aUIsV0FBQTlpQixFQUFBLFNBQ0Eya0IsV0FBQTNrQixFQUFB
LFNBQ0FnakIsWUFBQWhqQixFQUFBLFNBQ0EraUIsaUJBQUEvaUIsRUFBQSxnQkFDQTRrQixpQkFB
QTVrQixFQUFBLGdCQUNBaWpCLGtCQUFBampCLEVBQUEsbUJBY0EyaUIsR0FBQTVNLElBQ0ExZCxP
QUFBLFNBQUFvWCxFQUFBL0ksR0FDQUEsRUFBQTdCLEtBQUF3ZixNQUNBOUIsR0FBQTdiLElBR0F3
VCxPQUFBLFNBQUF4VCxFQUFBdVQsR0FFQXZULEVBQUE3QixLQUFBd2YsS0FHQXBLLElBRkF1SyxH
QUFBOWQsRUFBQXVULFFBT0FpbUIsSUFDQXB4QixHQUNBbXdCLEdBQ0F6UixHQUNBemUsR0FDQWdR
LEdBQ0E0RCxJQU9BeG5CLEdBQUEra0MsR0FBQTNrQyxPQUFBeWpDLElBRUFtQixHQUFBOW5CLElB
QW1DRyxXQUFBcmQsWUFVbkMrb0IsS0FFQWpPLFNBQUFxSSxpQkFBQSw2QkFDQSxHQUFBcFUsR0FB
QStMLFNBQUFtcUIsYUFDQWwyQixNQUFBbTJCLFFBQ0F2YSxHQUFBNWIsRUFBQSxVQUtBLElBQUFv
MkIsS0FDQXpqQixTQUFBLFNBQUEzUyxFQUFBa2IsRUFBQTFlLEdBV0EsY0FBQUEsRUFBQUcsSUFB
QSxDQUNBLEdBQUFSLEdBQUEsV0FDQThlLEdBQUFqYixFQUFBa2IsRUFBQTFlLEVBQUFRLFNBRUFi
LE1BRUE0cEIsSUFBQXVLLEtBQ0FyWixXQUFBOWEsRUFBQSxPQUdBLGFBQUFLLEVBQUFHLEtBQUEs
U0FBQXFELEVBQUFoSyxNQUNBa2xCLEVBQUFySSxVQUFBelgsT0FFQW0xQixLQUNBdndCLEVBQUFv
VSxpQkFBQSxtQkFBQXNILElBQ0ExYixFQUFBb1UsaUJBQUEsaUJBQUF1SCxLQUdBM0IsS0FDQWhh
LEVBQUFtMkIsUUFBQSxLQUlBempCLGlCQUFBLFNBQUExUyxFQUFBa2IsRUFBQTFlLEdBQ0EsY0FB
QUEsRUFBQUcsSUFBQTtBQUNBc2UsR0FBQWpiLEVBQUFrYixFQUFBMWUsRUFBQVEsUUFLQSxJQUFB
cTVCLEdBQUFyMkIsRUFBQW9iLFNBQ0FGLEVBQUE3ckIsTUFBQWluQyxLQUFBLFNBQUFDLEdBQTJD
LE1BQUE5YSxJQUFBOGEsRUFBQXYyQixFQUFBcEssV0FDM0NzbEIsRUFBQTdyQixRQUFBNnJCLEVB
QUExSSxVQUFBaUosR0FBQVAsRUFBQTdyQixNQUFBMlEsRUFBQXBLLFFBQ0F5Z0MsSUFDQXphLEdB
QUE1YixFQUFBLGFBOEVBbWEsSUFDQS9qQixLQUFBLFNBQUE0SixFQUFBeUcsRUFBQWpLLEdBQ0Es
R0FBQW5OLEdBQUFvWCxFQUFBcFgsS0FFQW1OLEdBQUF3ZixHQUFBeGYsRUFDQSxJQUFBaWMsR0FB
QWpjLEVBQUE3QixNQUFBNkIsRUFBQTdCLEtBQUE4ZCxVQUNBcHBCLElBQUFvcEIsSUFBQXVCLElB
Q0EzQixHQUFBN2IsRUFFQSxJQUFBZzZCLEdBQUEsU0FBQXgyQixFQUFBNlUsTUFBQTRoQixRQUFB
LEdBQUF6MkIsRUFBQTZVLE1BQUE0aEIsT0FDQXoyQixHQUFBNlUsTUFBQTRoQixRQUFBcG5DLEVB
QUFtbkMsRUFBQSxPQUNBeDJCLEVBQUEwMkIsbUJBQUFGLEdBRUFuZ0MsT0FBQSxTQUFBMkosRUFB
QXlHLEVBQUFqSyxHQUNBLEdBQUFuTixHQUFBb1gsRUFBQXBYLE1BQ0FtakIsRUFBQS9MLEVBQUEr
TCxRQUdBLElBQUFuakIsSUFBQW1qQixFQUFBLENBQ0FoVyxFQUFBd2YsR0FBQXhmLEVBQ0EsSUFB
QWljLEdBQUFqYyxFQUFBN0IsTUFBQTZCLEVBQUE3QixLQUFBOGQsVUFDQUEsS0FBQXVCLEdBQ0Ez
cUIsR0FDQWdwQixHQUFBN2IsR0FDQXdELEVBQUE2VSxNQUFBNGhCLFFBQUF6MkIsRUFBQTAyQixv
QkFFQXBjLEdBQUE5ZCxFQUFBLFdBQ0F3RCxFQUFBNlUsTUFBQTRoQixRQUFBLFNBSUF6MkIsRUFB
QTZVLE1BQUE0aEIsUUFBQXBuQyxFQUFBMlEsRUFBQTAyQixtQkFBQSxVQUtBQyxJQUNBUCxTQUNB
amMsU0FRQXljLElBQ0E5Z0MsS0FBQXBJLE9BQ0EwckIsT0FBQXlkLFFBQ0FsZSxJQUFBa2UsUUFD
QUMsS0FBQXBwQyxPQUNBc0ksS0FBQXRJLE9BQ0FrckIsV0FBQWxyQixPQUNBK3NCLFdBQUEvc0Is
T0FDQW1yQixpQkFBQW5yQixPQUNBZ3RCLGlCQUFBaHRCLE9BQ0FvckIsWUFBQXByQixPQUNBcXJC
LGtCQUFBcnJCLFFBNENBcXBDLElBQ0FqaEMsS0FBQSxhQUNBRCxNQUFBK2dDLEdBQ0F2M0IsVUFB
QSxFQUNBYyxPQUFBLFNBQUFvYyxHQUNBLEdBQUF1WCxHQUFBLzNCLEtBRUFhLEVBQUFiLEtBQUE0
RixPQUFBeEosT0FDQSxJQUFBeUUsSUFLQUEsSUFBQXVDLE9BQUEsU0FBQXZOLEdBQTZDLE1BQUFB
LEdBQUErSyxNQUU3Q0MsRUFBQXJPLFFBQUEsQ0FhQSxHQUFBdW9DLEdBQUEvNkIsS0FBQSs2QixL
QVdBdGEsRUFBQTVmLEVBQUEsRUFJQSxJQUFBNmYsR0FBQTFnQixLQUFBeUUsUUFDQSxNQUFBZ2Ms
RUFLQSxJQUFBaG1CLEdBQUF5bEIsR0FBQU8sRUFFQSxLQUFBaG1CLEVBQ0EsTUFBQWdtQixFQUdB
LElBQUF6Z0IsS0FBQWk3QixTQUNBLE1BQUExYSxJQUFBQyxFQUFBQyxFQUdBLElBQUF2dEIsR0FB
QXVILEVBQUF2SCxJQUFBLE1BQUF1SCxFQUFBdkgsS0FBQXVILEVBQUEwRyxTQUNBLE9BQUExRyxF
QUFBbUcsSUFBQVosS0FBQStNLE1BQUEsS0FDQXRTLEVBQUF2SCxJQUNBMEwsR0FBQW5FLEVBQUFt
RSxPQUFBbkUsRUFBQW1FLFVBQThDOGQsV0FBQTBELEdBQUFwZ0IsTUFDOUNrN0IsRUFBQWw3QixL
QUFBOEUsT0FDQXEyQixFQUFBamIsR0FBQWdiLEVBUUEsSUFKQXpnQyxFQUFBbUUsS0FBQXhFLFlB
QUFLLEVBQUFtRSxLQUFBeEUsV0FBQW1nQyxLQUFBLFNBQUFwZSxHQUEwRSxlQUFBQSxFQUFBcGlC
LFNBQzFFVSxFQUFBbUUsS0FBQXdmLE1BQUEsR0FHQStjLEtBQUF2OEIsTUFBQXU4QixFQUFBam9D
LFFBQUEsQ0FHQSxHQUFBNGtCLEdBQUFxakIsRUFBQXY4QixLQUFBOGQsV0FBQW5vQixLQUF3RHFL
LEVBR3hELGVBQUFtOEIsRUFPQSxNQUxBLzZCLE1BQUFpN0IsVUFBQSxFQUNBMTVCLEdBQUF1VyxF
QUFBLHdCQUNBaWdCLEVBQUFrRCxVQUFBLEVBQ0FsRCxFQUFBaHlCLGdCQUNTN1MsR0FDVHF0QixH
QUFBQyxFQUFBQyxFQUNPLGVBQUFzYSxFQUFBLENBQ1AsR0FBQUssR0FDQTVjLEVBQUEsV0FBd0M0
YyxJQUN4Qzc1QixJQUFBM0MsRUFBQSxhQUFBNGYsRUFBQXRyQixHQUNBcU8sR0FBQTNDLEVBQUEs
aUJBQUE0ZixFQUFBdHJCLEdBQ0FxTyxHQUFBdVcsRUFBQSxzQkFBQXlHLEdBQ0E2YyxFQUFBN2Ms
R0FDU3JyQixJQUlULE1BQUF1dEIsTUFpQkEzbUIsR0FBQXZGLEdBQ0FxTSxJQUFBalAsT0FDQTBw
QyxVQUFBMXBDLFFBQ0NrcEMsVUFFRC9nQyxJQUFBaWhDLElBRUEsSUFBQU8sS0FDQXhoQyxTQUVB
c0ssT0FBQSxTQUFBb2MsR0FRQSxPQVBBNWYsR0FBQVosS0FBQVksS0FBQVosS0FBQXlFLE9BQUE3
RixLQUFBZ0MsS0FBQSxPQUNBMU8sRUFBQUMsT0FBQUMsT0FBQSxNQUNBbXBDLEVBQUF2N0IsS0FB
QXU3QixhQUFBdjdCLEtBQUFhLFNBQ0EyNkIsRUFBQXg3QixLQUFBNEYsT0FBQXhKLFlBQ0F5RSxF
QUFBYixLQUFBYSxZQUNBNDZCLEVBQUFyYixHQUFBcGdCLE1BRUF6TixFQUFBLEVBQW1CQSxFQUFB
aXBDLEVBQUFocEMsT0FBd0JELElBQUEsQ0FDM0MsR0FBQXNELEdBQUEybEMsRUFBQWpwQyxFQUNB
LElBQUFzRCxFQUFBK0ssSUFDQSxTQUFBL0ssRUFBQTNDLEtBQUEsSUFBQXZCLE9BQUFrRSxFQUFB
M0MsS0FBQUosUUFBQSxXQUNBK04sRUFBQTdKLEtBQUFuQixHQUNBM0QsRUFBQTJELEVBQUEzQyxL
QUFBMkMsR0FDV0EsRUFBQStJLE9BQUEvSSxFQUFBK0ksVUFBdUI4ZCxXQUFBK2UsUUFXbEMsR0FB
QUYsRUFBQSxDQUdBLE9BRkFHLE1BQ0FDLEtBQ0F2b0IsRUFBQSxFQUF1QkEsRUFBQW1vQixFQUFB
L29DLE9BQTJCNGdCLElBQUEsQ0FDbEQsR0FBQXdvQixHQUFBTCxFQUFBbm9CLEVBQ0F3b0IsR0FB
QWg5QixLQUFBOGQsV0FBQStlLEVBQ0FHLEVBQUFoOUIsS0FBQXNpQixJQUFBMGEsRUFBQTc2QixJ
QUFBZ2dCLHdCQUNBN3VCLEVBQUEwcEMsRUFBQTFvQyxLQUNBd29DLEVBQUExa0MsS0FBQTRrQyxH
QUVBRCxFQUFBM2tDLEtBQUE0a0MsR0FHQTU3QixLQUFBMDdCLEtBQUFsYixFQUFBNWYsRUFBQSxL
QUFBODZCLEdBQ0ExN0IsS0FBQTI3QixVQUdBLE1BQUFuYixHQUFBNWYsRUFBQSxLQUFBQyxJQUdB
ZzdCLGFBQUEsV0FFQTc3QixLQUFBK0UsVUFDQS9FLEtBQUE4RSxPQUNBOUUsS0FBQTA3QixNQUNB
LEdBQ0EsR0FFQTE3QixLQUFBOEUsT0FBQTlFLEtBQUEwN0IsTUFHQUksUUFBQSxXQUNBLEdBQUFq
N0IsR0FBQWIsS0FBQXU3QixhQUNBRixFQUFBcjdCLEtBQUFxN0IsWUFBQXI3QixLQUFBakcsTUFB
QSxZQUNBLElBQUE4RyxFQUFBck8sUUFBQXdOLEtBQUErN0IsUUFBQWw3QixFQUFBLEdBQUFFLElB
QUFzNkIsR0FBQSxDQU1BeDZCLEVBQUEyTixRQUFBbVMsSUFDQTlmLEVBQUEyTixRQUFBcVMsSUFD
QWhnQixFQUFBMk4sUUFBQXdTLEdBR0FoUixVQUFBZ3NCLEtBQUFDLFlBRUFwN0IsR0FBQTJOLFFB
QUEsU0FBQTNZLEdBQ0EsR0FBQUEsRUFBQStJLEtBQUEyaUIsTUFBQSxDQUNBLEdBQUF0ZCxHQUFB
cE8sRUFBQWtMLElBQ0E2USxFQUFBM04sRUFBQTZVLEtBQ0F1QixJQUFBcFcsRUFBQW8zQixHQUNB
enBCLEVBQUE0UCxVQUFBNVAsRUFBQTZQLGdCQUFBN1AsRUFBQThQLG1CQUFBLEdBQ0F6ZCxFQUFB
b1UsaUJBQUF3QyxHQUFBNVcsRUFBQTJjLFFBQUEsUUFBQXhnQixHQUFBakgsR0FDQUEsSUFBQSxh
QUFBNUMsS0FBQTRDLEVBQUEraUMsZ0JBQ0FqNEIsRUFBQXNVLG9CQUFBc0MsR0FBQXphLEdBQ0E2
RCxFQUFBMmMsUUFBQSxLQUNBdEcsR0FBQXJXLEVBQUFvM0IsV0FPQTc3QixTQUNBdThCLFFBQUEs
U0FBQTkzQixFQUFBbzNCLEdBRUEsSUFBQTFCLEdBQ0EsUUFFQSxVQUFBMzVCLEtBQUFtOEIsU0FD
QSxNQUFBbjhCLE1BQUFtOEIsUUFFQTloQixJQUFBcFcsRUFBQW8zQixFQUNBLElBQUFlLEdBQUEz
aEIsR0FBQXhXLEVBRUEsT0FEQXFXLElBQUFyVyxFQUFBbzNCLEdBQ0FyN0IsS0FBQW04QixTQUFB
QyxFQUFBcmdCLGdCQWlDQXNnQixJQUNBckIsY0FDQU0sbUJBTUFsZ0MsSUFBQWdDLE9BQUF5Uyxv
QkFDQXpVLEdBQUFnQyxPQUFBeU0saUJBQ0F6TyxHQUFBZ0MsT0FBQXdNLG1CQUNBeE8sR0FBQWdD
LE9BQUE2TyxlQUdBMVgsRUFBQTZHLEdBQUF2QixRQUFBTyxXQUFBd2dDLElBQ0FybUMsRUFBQTZH
LEdBQUF2QixRQUFBNFQsV0FBQTR1QixJQUdBamhDLEdBQUFELFVBQUE0SixVQUFBK0ssR0FBQW9x
QixHQUFBbGxDLEVBR0FvRyxHQUFBRCxVQUFBME0sT0FBQSxTQUNBNUQsRUFDQUMsR0FHQSxNQURB
RCxNQUFBNkwsR0FBQU0sR0FBQW5NLEdBQUFoSSxPQUNBK0QsS0FBQWdFLE9BQUFDLEVBQUFDLElB
S0FnWCxXQUFBLFdBQ0E5ZCxHQUFBRCxVQUNBQSxJQUNBQSxHQUFBRSxLQUFBLE9BQUFqQyxLQVdD
LEVBYUQsSUFJQThtQixJQUpBRSxLQUFBdFMsSUFBQTZSLEdBQUEsY0F3QkEyYSxHQUFBLGtCQUNB
QyxHQUFBLFFBQ0FDLElBRUEsYUFBQUMsT0FFQSxhQUFBQSxPQUVBLGlCQUFBQSxRQUVBeFosR0FB
QSxHQUFBb0IsUUFDQSxRQUFBaVksR0FBQUcsT0FDQSxXQUFBRixHQUFBRSxPQUFBLFdBQ0FELEdB
QUFobkMsS0FBQSxZQUtBa25DLEdBQUEsd0JBQ0FDLEdBQUEsT0FBQUQsR0FBQSxRQUFBQSxHQUFB
LElBQ0E1WixHQUFBLEdBQUF1QixRQUFBLEtBQUFzWSxJQUNBM1osR0FBQSxhQUNBeUIsR0FBQSxH
QUFBSixRQUFBLFFBQUFzWSxHQUFBLFVBQ0ExWCxHQUFBLHFCQUNBTCxHQUFBLFFBQ0FFLEdBQUEs
UUFFQW5CLElBQUEsQ0FDQSxLQUFBekosUUFBQSxrQkFBQTdrQixFQUFBdW5DLEdBQ0FqWixHQUFB
LEtBQUFpWixHQUlBLElBd2VBbmdDLElBQ0F6SyxHQUNBeTJCLEdBQ0FOLEdBQ0FDLEdBQ0FDLEdB
aUdBWSxHQUNBRSxHQUNBQyxHQUNBQyxHQUNBRSxHQUNBQyxHQUNBQyxHQUNBbEQsR0E0ZkFpSCxH
QUNBRSxHQXFPQWlDLEdBQ0FDLEdBQ0FDLEdBQ0FDLEdBQ0Fub0IsR0FDQThuQixHQUNBQyxHQTJk
QTZDLEdBeHhEQXNLLEdBQUE5cUMsRUFBQSxtQkFDQStxQyxHQUFBLFNBQUEvWixHQUErQixlQUFB
QSxFQUFBaHBCLE1BQUEsU0FBQWdwQixFQUFBenZCLE9BQy9CMHdCLEdBQUEsU0FBQXBqQixFQUFB
bThCLEVBQUFuWixHQUNBLFFBQUFpWixHQUFBajhCLE9BR0FtOEIsR0FBQSxJQUFBblosRUFBQXB4
QixXQUVBLGFBQUFvTyxJQUFBZ2pCLEVBQUEsR0FBQS9hLE1BQUEweEIsS0FBQXVDLE1BU0ExWSxN
QUVBOUIsR0FBQSxRQUNBQyxHQUFBLFFBQ0FGLEdBQUEsU0FDQUcsR0FBQSxTQUNBQyxHQUFBLFVB
MlVBaUUsR0FBQSx3QkFDQXNXLEdBQUEseUJBRUF2VyxHQUFBbHpCLEVBQUEsU0FBQWd6QixHQUNB
LEdBQUEwVyxHQUFBMVcsRUFBQSxHQUFBck0sUUFBQThpQixHQUFBLFFBQ0FFLEVBQUEzVyxFQUFB
LEdBQUFyTSxRQUFBOGlCLEdBQUEsT0FDQSxXQUFBM1ksUUFBQTRZLEVBQUEsZ0JBQUFDLEVBQUEs
T0EyTkF0USxHQUFBLFlBQ0FiLEdBQUEsMkJBQ0FJLEdBQUEsNkNBQ0FhLEdBQUEsY0FDQUUsR0FB
QSxZQUNBRSxHQUFBLFNBQ0FMLEdBQUEsV0FFQW5CLEdBQUFyNEIsRUFBQXl1QixJQW9lQXFMLEdB
QUEsZUFDQUMsR0FBQSxVQW9DQUcsR0FBQWw2QixFQUFBcTZCLElBdUhBbUIsR0FBQSwrQ0FDQUQs
R0FBQSwrRkFHQTNpQixJQUNBZ3hCLElBQUEsR0FDQUMsSUFBQSxFQUNBOWdCLE1BQUEsR0FDQStn
QixNQUFBLEdBQ0FDLEdBQUEsR0FDQWxjLEtBQUEsR0FDQW1jLE1BQUEsR0FDQUMsS0FBQSxHQUNB
eHVCLFFBQUEsT0FHQTBmLElBQ0ErTyxLQUFBLDRCQUNBQyxRQUFBLDJCQUNBQyxLQUFBLHFEQUdB
bFAsR0FBQSx1REFDQUUsSUFDQWlQLEtBQUEsNkJBQ0E5TSxNQUFBLDhCQUNBK00sSUFBQSw0QkFD
QUMsS0FBQSw4QkF5RUF4TSxJQUNBajNCLEtBQUE2MEIsR0FDQTZPLE1BQUEvb0MsR0E4YUFncEMs
SUE1R0EsR0FBQTNaLFFBQUEsdU1BSUEveEIsTUFBQSxLQUFBa0QsS0FBQSxtQkF5R0FELFlBQUEs
ZUFDQXc4QixpQkFDQXJCLFFBQUF1QixLQXlDQWdNLElBQ0Exb0MsWUFBQSxlQUNBdzhCLGNBQUFH
LEdBQ0F4QixRQUFBMEIsSUFHQThMLElBQ0FGLEdBQ0FDLElBbU5BRSxJQUNBOUQsTUFBQWhJLEdB
Q0F2eEIsUUFDQW1oQixTQUtBeHVCLEdBQUF0QixPQUFBQyxPQUFBLE1BRUFraEMsSUFDQWxRLFlB
QUEsRUFDQWx1QixRQUFBZ3BDLEdBQ0Ezb0MsV0FBQU4sRUFBQWlwQyxJQUNBOWpDLFdBQUErakMs
R0FDQXQwQixpQkFDQWlhLGNBQ0E3WCxlQUNBckMsbUJBQ0EwZixhQXlFQThVLEdBQUE3cUMsRUFB
QSxTQUFBK0gsR0FDQSxHQUFBMkksR0FBQW1NLEdBQUE5VSxFQUNBLE9BQUEySSxNQUFBOGQsWUFH
QXNjLEdBQUFqakMsR0FBQUQsVUFBQTBNLE1BQ0F6TSxJQUFBRCxVQUFBME0sT0FBQSxTQUNBNUQs
RUFDQUMsR0FLQSxHQUhBRCxLQUFBbU0sR0FBQW5NLEdBR0FBLElBQUErTCxTQUFBZ3NCLE1BQUEv
M0IsSUFBQStMLFNBQUFzdUIsZ0JBSUEsTUFBQXQrQixLQUdBLElBQUFuRyxHQUFBbUcsS0FBQTNE
LFFBRUEsS0FBQXhDLEVBQUF1SyxPQUFBLENBQ0EsR0FBQTRrQixHQUFBbnZCLEVBQUFtdkIsUUFD
QSxJQUFBQSxFQUNBLG1CQUFBQSxHQUNBLE1BQUFBLEVBQUEzbUIsT0FBQSxLQUNBMm1CLEVBQUFv
VixHQUFBcFYsUUFTTyxLQUFBQSxFQUFBcFQsU0FNUCxNQUFBNVYsS0FMQWdwQixLQUFBakgsY0FP
SzlkLEtBQ0wra0IsRUFBQTBLLEdBQUF6dkIsR0FFQSxJQUFBK2tCLEVBQUEsQ0FDQSxHQUFBdGUs
R0FBQTZvQixHQUFBdkssR0FDQUUsUUFDQTlHLHdCQUNBbUUsV0FBQTFzQixFQUFBMHNCLFlBQ092
bUIsTUFDUG9FLEVBQUFzRyxFQUFBdEcsT0FDQXVELEVBQUErQyxFQUFBL0MsZUFDQTlOLEdBQUF1
SyxTQUNBdkssRUFBQThOLG1CQUdBLE1BQUEwMkIsSUFBQWpyQyxLQUFBNE0sS0FBQWlFLEVBQUFD
LElBaUJBOUksR0FBQW1qQyxRQUFBaEwsR0FFQXBpQyxFQUFBQyxRQUFBZ0ssS0RIOEJoSSxLQUFL
aEMsRUFBVSxXQUFhLE1BQU80TyxXQUcxRCxDQUNBLENBRUQsU0FBUzdPLEVBQVFDLEVBQVNDLElF
NzZQaEMsU0FBQUQsR0FZQSxRQUFBb3RDLEtBR0EsV0FBQUMsRUFBQXgxQixNQUFBLE1BQUF3MUIs
RUFBQXgxQixLQWlSQSxRQUFBeTFCLEdBQUEvckMsRUFBQWdzQyxHQUNBLE9BQUFwc0MsR0FBQSxF
QUFpQkEsRUFBQUksRUFBQUgsT0FBZ0JELEdBQUEsRUFDakMsR0FBQW9zQyxFQUFBaHNDLEVBQUFK
LEtBQUFJLE1BQUEsRUFDQSxPQUtBLFFBQUFpc0MsR0FBQWpzQyxHQUVBLE9BREFrc0MsTUFDQXRz
QyxFQUFBLEVBQUFWLEVBQUFjLEVBQUFILE9BQWlDRCxFQUFBVixFQUFPVSxJQUN4Q3NzQyxJQUFB
dnBDLE9BQUEzQyxFQUFBSixHQUVBLE9BQUFzc0MsR0FHQSxRQUFBQyxHQUFBbnNDLEVBQUFnc0Ms
RUFBQUksR0FDQSxJQUFBcHNDLEVBQUFILE9BQ0EsTUFBQXVzQyxJQUVBLElBQUFDLEdBQUEsR0FD
QSxRQUFBQyxLQUNBTixFQUFBaHNDLEVBQUFxc0MsR0FBQSxTQUFBRSxHQUNBQSxRQUFBLEdBQ0FI
LEVBQUFHLEdBQ0FILEVBQUEsZUFFQUMsR0FBQSxFQUNBQSxJQUFBcnNDLEVBQUFILE9BQ0F1c0Ms
SUFFQUUsVUFPQSxRQUFBRSxHQUFBbnRDLEVBQUFvdEMsRUFBQUMsR0FDQUEsRUFBQXJ0QyxDQUNB
LFFBQUFzdEMsS0FBQUYsR0FDQSxHQUFBQSxFQUFBanNDLGVBQUFtc0MsS0FDQUQsRUFBQUQsRUFB
QUUsR0FBQXR0QyxHQUNBcXRDLElBQUFydEMsR0FDQSxLQUlBLE9BQUFxdEMsS0FBQXJ0QyxFQUFB
LHVCQUFBcXRDLEVBR0EsUUFBQUUsR0FBQXZ0QyxFQUFBb3RDLEdBRUEsSUFEQSxHQUFBendCLEdB
QUExTCxFQUFBLEVBQUF1OEIsRUFBQSxHQUNBN3dCLEVBQUEzYyxFQUFBeXRDLE9BQUF4OEIsR0FB
QXpHLE1BQUEsbUNBQ0F5RyxFQUFBMEwsRUFBQTliLE1BQUE4YixFQUFBLEdBQUFuYyxPQUNBbWMs
RUFBQSxHQUFBQSxFQUFBLEdBQUF1TCxRQUFBLG9DQUNBc2xCLEdBQUF4dEMsRUFBQXl0QyxPQUFB
LEVBQUE5d0IsRUFBQTliLE9BQUE4YixFQUFBLEVBRUEzYyxHQUFBd3RDLEdBQUF4dEMsRUFBQXl0
QyxPQUFBeDhCLEVBQ0EsSUFBQWIsR0FBQTVQLEVBQUFrdEMsRUFBQTF0QyxFQUFBd0ssTUFBQSxj
QUNBLElBQUFrakMsRUFBQSxDQUNBbHRDLEVBQUFrdEMsRUFBQWx0QyxNQUNBLFFBQUFELEdBQUEs
RUFBbUJBLEVBQUFDLEVBQVlELElBQy9CNlAsRUFBQXM5QixFQUFBbnRDLEdBRUFQLEVBREEsT0FB
QW9RLEVBQUFFLE1BQUEsS0FDQUYsRUFBQUUsTUFBQSxHQUVBdFEsRUFBQWtvQixRQUFBOVgsRUFB
QSs4QixFQUFBLzhCLEVBQUFnOUIsSUFJQSxNQUFBcHRDLEdBR0EsUUFBQTJ0QyxHQUFBQyxFQUFB
QyxFQUFBenJDLEVBQUFxcEMsR0FDQSxHQUFBbHJDLEdBQUEwUSxFQUFBLEVBQUFtZSxFQUFBLEVB
QUFtYyxFQUFBLEVBQUFucEMsTUFBQSxLQUFBUSxXQUFBNm9DLE1BQUEsS0FBQTdvQyxVQUNBLEtB
QUFyQyxFQUFBLEVBQWFBLEVBQUFxdEMsRUFBQXB0QyxPQUFtQkQsSUFBQSxDQUNoQyxHQUFBdXRD
LEdBQUFGLEVBQUFydEMsRUFDQSxJQUFBdXRDLEVBQUFodEMsUUFBQXNCLEVBQUE2TyxHQUFBNjhC
LEVBQUFodEMsUUFBQTJxQyxFQUFBeDZCLEtBQUE2OEIsRUFBQWh0QyxRQUFBc0IsRUFBQTZPLE1B
QUE2OEIsRUFBQWh0QyxRQUFBMnFDLEVBQUF4NkIsTUFBQTY4QixFQUFBaHRDLFFBQUFzQixFQUFB
Nk8sS0FBQTY4QixFQUFBaHRDLFFBQUEycUMsRUFBQXg2QixHQUFBLENBR0EsR0FGQW1lLEVBQUEw
ZSxFQUFBaHRDLFFBQUFzQixFQUFBNk8sR0FDQXM2QixFQUFBdUMsRUFBQWh0QyxRQUFBMnFDLEVB
QUF4NkIsSUFDQW1lLEtBQUFtYyxLQUFBbmMsSUFBQW1jLEVBQUEsQ0FDQSxHQUFBdkYsR0FBQTRI
LEVBQUF0OUIsTUFBQSxHQUFBL1AsR0FBQSxNQUFBaUQsS0FBQXFxQyxFQUNBRCxJQUFBNUgsR0FB
QTFpQyxPQUFBc3FDLEVBQUF0OUIsT0FBQS9QLEdBQUEsT0FFQTBRLEdBQUFzNkIsRUFBQW5jLEVB
QUFtYyxFQUFBbmMsR0FBQSxFQUNBN3VCLEVBQUEsTUFFQTBRLEdBQUEsRUFHQSxNQUFBMjhCLEdB
alhBLEdBQUFuQixHQUFBenVCLFNBQUErdkIsU0FRQUMsR0FDQWpGLEtBQUEsU0FDQTl4QixLQUFB
dzFCLEVBQUF4MUIsS0FDQWczQixTQUFBLEVBRUFDLE1BQUEsV0FDQSxHQUFBMWYsR0FBQWllLEVB
QUF4MUIsSUFDQXVYLElBQUF4Z0IsS0FBQWlKLE9BQ0FqSixLQUFBaUosS0FBQXVYLEVBQ0F4Z0Is
S0FBQW1nQyxrQkFJQUMsS0FBQSxXQUNBLFdBQUFwZ0MsS0FBQSs2QixLQUNBLzZCLEtBQUFpZ0Ms
V0FBQSxFQUFBaHdCLE9BQUFvd0IsYUFBQXB3QixPQUFBcXdCLGVBR0F0Z0MsS0FBQW1nQyxpQkFJ
QXY0QixLQUFBLFNBQUFwVSxFQUFBeXNDLEdBUUEsUUFBQU0sR0FBQUMsR0FDQSxPQUFBanVDLEdB
QUEsRUFBQXdCLEVBQUEwc0MsRUFBQXY3QixVQUFBMVMsT0FBa0RELEVBQUF3QixFQUFPeEIsSUFD
ekRrdUMsRUFBQXY3QixVQUFBM1MsR0FBQWl1QyxHQVRBLEdBQUE3QyxHQUFBMzlCLElBY0EsSUFi
QUEsS0FBQWlnQyxVQUVBUSxFQUFBdjdCLFlBQ0F1N0IsRUFBQXY3QixjQVVBLGdCQUFBK0ssVUFB
QWhVLFNBQUErVCxTQUFBMHdCLGNBQ0Exd0IsU0FBQTB3QixhQUFBLEdBRUExZ0MsS0FBQWlnQyxX
QUFBLEVBTUEva0IsV0FBQSxXQUNBakwsT0FBQW93QixXQUFBRSxHQUNTLEtBR1R0d0IsT0FBQXF3
QixhQUFBQyxFQUVBdmdDLEtBQUErNkIsS0FBQSxhQUVBLENBSUEsR0FBQTRGLEdBQUEzd0IsU0FB
QS9JLGNBQUEsU0FDQTA1QixHQUFBcmxDLEdBQUEsY0FDQXFsQyxFQUFBN25CLE1BQUE0aEIsUUFB
QSxPQUNBMXFCLFNBQUFnc0IsS0FBQTlxQixZQUFBeXZCLEdBQ0EzZ0MsS0FBQTRnQyxXQUFBLElB
RUEsb0JBQUE1d0IsV0FBQSxlQUFBQSxXQUNBQSxTQUFBNndCLFlBQUEsOEJBQ0EsYUFBQTErQixN
QUFBKzVCLGNBQ0F5QixFQUFBdUMsVUFLQWp3QixPQUFBNndCLFlBQUEsV0FBc0NuRCxFQUFBdUMs
U0FBZ0IsSUFFdERsZ0MsS0FBQW1nQyxjQUFBSSxFQUNBdmdDLEtBQUErNkIsS0FBQSxTQUtBLE1B
RkEwRixHQUFBdjdCLFVBQUFsTyxLQUFBeEQsR0FFQXdNLEtBQUErNkIsTUFHQW5uQixRQUFBLFNB
QUFwZ0IsR0FDQSxHQUFBaXRDLEtBQUF2N0IsVUFNQSxPQUZBQSxHQUFBdTdCLEVBQUF2N0IsVUFF
QTNTLEVBQUEyUyxFQUFBMVMsT0FBQSxFQUFzQ0QsR0FBQSxFQUFRQSxJQUM5QzJTLEVBQUEzUyxL
QUFBaUIsR0FDQTBSLEVBQUFuUyxPQUFBUixFQUFBLElBS0F3dUMsUUFBQSxTQUFBbnZCLEdBY0Es
TUFaQSxXQUFBNVIsS0FBQSs2QixNQUNBLzZCLEtBQUE0Z0MsV0FBQWh2QixHQUdBNVIsS0FBQWln
QyxXQUFBLEdBQ0Fod0IsT0FBQWd3QixRQUFBZSxhQUFpQ2h4QixTQUFBaXhCLE1BQUFydkIsR0FH
akM1UixLQUFBb2dDLFFBRUEzQixFQUFBeDFCLEtBQUEsTUFBQTJJLEVBQUEsR0FBQUEsRUFBQSxJ
QUFBQSxFQUVBNVIsTUFHQTRnQyxXQUFBLFNBQUFodkIsR0FFQSxHQUFBc3ZCLEdBQUFseEIsU0FB
QW14QixlQUFBLGVBQ0FobEIsRUFBQStrQixFQUFBRSxpQkFBQUYsRUFBQUcsY0FBQXJ4QixRQUNB
bU0sR0FBQThnQixPQUNBOWdCLEVBQUFtbEIsTUFBQSxvQkFBQTF2QixFQUFBLGlEQUNBdUssRUFB
QStnQixTQUdBcUUsU0FBQSxXQUVBLEdBQUEzdkIsR0FBQTVSLEtBQUF3aEMsS0FJQSxPQUhBNXZC
LElBQUE2c0IsRUFBQXgxQixPQUNBdzFCLEVBQUF4MUIsS0FBQTJJLEdBRUE1UixNQUdBbWdDLGNB
QUEsY0FHQU0sRUFBQXJ2QyxFQUFBcXZDLE9BQUEsU0FBQWIsR0FDQSxNQUFBNS9CLGdCQUFBeWdD
LElBRUF6Z0MsS0FBQW8vQixVQUNBcC9CLEtBQUE0L0IsVUFDQTUvQixLQUFBUixTQUFBLDhCQUNB
USxLQUFBeXhCLFNBQ0F6eEIsS0FBQXloQyxZQUVBemhDLEtBQUEwaEMsUUFBQTFoQyxLQUFBa0ks
T0FDQWxJLEtBQUFrSSxPQUFBbEksS0FBQTJoQyxTQUVBM2hDLEtBQUE0aEMsZUFBQSxhQUFBM3hC
LE9BQUFnd0IsUUFBQWh3QixPQUFBZ3dCLFFBQUFlLFVBQUEsTUFFQWhoQyxLQUFBNmhDLGdCQUNB
N2hDLE1BQUFxK0IsTUFBQXVCLFFBZEEsR0FBQWEsR0FBQWIsR0FpQkFhLEdBQUF0bEMsVUFBQXlN
LEtBQUEsU0FBQWs2QixHQUNBLEdBQ0FDLEdBREFwRSxFQUFBMzlCLElBcUNBLE9BbkNBQSxNQUFB
TixRQUFBLFNBQUE4Z0MsR0FDQSxHQUFBd0IsR0FBQXhCLEtBQUF3QixRQUFBL3hCLE9BQUE4dkIs
U0FBQTkyQixLQUNBZzVCLEVBQUF0RSxFQUFBc0MsV0FBQSxFQUFBdEMsRUFBQXVFLFVBQUFGLEVB
QUE5bkIsUUFBQSxTQUNBeWpCLEdBQUF3RSxTQUFBLFdBQUFGLEVBQUE1L0IsT0FBQSxHQUFBNC9C
LEVBQUEsSUFBQUEsSUFHQWpDLEVBQUFwNEIsS0FBQTVILEtBQUFOLFFBQUFNLEtBQUFpZ0MsU0FF
QWpnQyxLQUFBaWdDLFdBQUEsRUFDQXpCLEtBQUFzRCxFQUNBckQsRUFBQXgxQixLQUFBNjRCLEVB
Q0t0RCxLQUNMYixFQUFBd0UsU0FBQSxTQUFBMUQsRUFBQXgxQixLQUFBaVIsUUFBQSxvQkFJQWxh
LEtBQUFvaUMsc0JBRUFMLEVBQUF2RCxLQUFBc0QsSUFBQXRELElBQUEsS0FBQUMsRUFBQXgxQixL
QUFBaVIsUUFBQSxTQUNBNm5CLEdBQ0E5eEIsT0FBQWd3QixRQUFBb0MsZ0JBQXNDcnlCLFNBQUFp
eEIsTUFBQWMsSUFLdENBLEVBQUEvaEMsS0FBQWtpQyxXQUtBSCxHQUFBL2hDLEtBQUFzaUMsZUFB
QSxJQUNBdGlDLEtBQUFOLFdBSUFNLE1BR0F5Z0MsRUFBQXRsQyxVQUFBb25DLFFBQUEsV0FDQSxH
QUFBL0gsR0FBQXg2QixLQUFBaWdDLFdBQUEsRUFBQWpnQyxLQUFBa2lDLFVBQUF6RCxFQUFBeDFC
LElBRUEsT0FEQSxNQUFBdXhCLEVBQUFuNEIsT0FBQSxLQUE0Qm00QixJQUFBbDRCLE1BQUEsSUFD
NUJrNEIsRUFBQWw0QixNQUFBLEVBQUFrNEIsRUFBQWhvQyxRQUFBRixNQUFBLE1BR0FtdUMsRUFB
QXRsQyxVQUFBcW5DLFNBQUEsU0FBQWp3QyxFQUFBaW9DLEVBQUFocEMsR0FDQSxHQUFBeXdDLEdB
QUFqaUMsS0FBQXVpQyxTQWFBLE9BWEEsZ0JBQUFod0MsSUFBQSxnQkFBQWlvQyxHQUNBeUgsRUFB
QTF2QyxHQUFBaW9DLEVBRUEsZ0JBQUFocEMsR0FDQXl3QyxFQUFBbHZDLE9BQUFSLEVBQUFpb0Ms
RUFBQTVvQixHQUdBcXdCLEdBQUExdkMsR0FHQXl0QyxFQUFBZSxRQUFBa0IsRUFBQXpzQyxLQUFB
LE1BQ0F5c0MsR0FXQXhCLEVBQUF0bEMsVUFBQXdtQyxTQUFBLFNBQUFsTCxFQUFBcGdDLEVBQUFv
c0MsRUFBQWpvQyxHQVlBLE1BWEEsU0FBQWk4QixJQUNBQSxFQUFBLEtBQ0FnTSxFQUFBLFNBQUFB
LEdBQ0EsR0FBQXRrQixJQUFBLENBQ0EsbUJBQ0EsSUFBQUEsRUFFQSxNQURBQSxJQUFBLEVBQ0Fz
a0IsRUFBQXh1QyxNQUFBK0wsS0FBQWhNLGFBRUt5dUMsSUFFTHppQyxLQUFBMGhDLFFBQUFqTCxF
QUFBcGdDLEVBQUFvc0MsRUFBQWpvQyxJQUdBaW1DLEVBQUF0bEMsVUFBQXVuQyxTQUFBLFNBQUFs
SSxHQUNBLEdBQUFubUMsR0FBQW1tQyxDQUVBLG9CQUFBQSxHQUNBbm1DLEVBQUEyTCxLQUFBdWlD
LFVBQUEvSCxPQUVBLG9CQUFBQSxHQUFBLENBQ0EsR0FBQWhhLEdBQUF4Z0IsS0FBQXVpQyxTQUNB
bHVDLEdBQUFtc0IsRUFBQTF0QixRQUFBMG5DLE9BR0FubUMsR0FBQTJMLEtBQUF1aUMsU0FHQSxP
QUFBbHVDLElBR0Fvc0MsRUFBQXRsQyxVQUFBeVksUUFBQSxXQUVBLE1BREFvc0IsR0FBQXBzQixR
QUFBNVQsS0FBQU4sU0FDQU0sTUFHQXlnQyxFQUFBdGxDLFVBQUErbUMsUUFBQSxXQUNBLEdBQUE3
ckMsR0FBQTRaLE9BQUE4dkIsU0FBQTRDLFFBSUEsT0FIQSxNQUFBdHNDLEVBQUFvcEMsT0FBQSxP
QUNBcHBDLEVBQUEsSUFBQUEsR0FFQUEsRUFnR0EsSUFBQXVzQyxHQUFBLE1BRUFuQyxHQUFBdGxD
LFVBQUEwbUMsVUFBQSxTQUFBaG9DLEdBQ0FBLE9BQ0EsUUFBQXRILEdBQUEsRUFBaUJBLEVBQUF5
TixLQUFBUixRQUFBaE4sT0FBeUJELElBQzFDeU4sS0FBQXloQyxTQUFBemhDLEtBQUFSLFFBQUFq
TixLQUFBLENBZ0JBLE9BZEF5TixNQUFBNmlDLFFBQUFocEMsRUFBQWdwQyxTQUFBN2lDLEtBQUE2
aUMsVUFBQSxFQUNBN2lDLEtBQUE4aUMsTUFBQWpwQyxFQUFBaXBDLFFBQUEsRUFDQTlpQyxLQUFB
Ni9CLFVBQUFobUMsRUFBQWdtQyxXQUFBLElBQ0E3L0IsS0FBQStpQyxPQUFBLG1CQUFBbHBDLEdB
QUFrcEMsUUFBQWxwQyxFQUFBa3BDLE9BQ0EvaUMsS0FBQWdqQyxTQUFBbnBDLEVBQUFtcEMsU0FD
QWhqQyxLQUFBaWpDLFNBQUFwcEMsRUFBQW9wQyxTQUNBampDLEtBQUFpZ0MsUUFBQXBtQyxFQUFB
cXBDLGNBQUFsakMsS0FBQTRoQyxpQkFBQSxFQUNBNWhDLEtBQUFzaUMsWUFBQXRpQyxLQUFBaWdD
LFdBQUEsR0FBQXBtQyxFQUFBc3BDLHVCQUFBLEVBQ0FuakMsS0FBQW9pQyxxQkFBQXBpQyxLQUFB
aWdDLFdBQUEsR0FBQXBtQyxFQUFBdW9DLHdCQUFBLEVBQ0FwaUMsS0FBQW91QixPQUNBZ1YsTUFB
QXZwQyxFQUFBdXBDLE9BQUEsS0FDQTN2QixPQUFBNVosRUFBQTRaLFFBQUEsS0FDQTNSLEdBQUFq
SSxFQUFBaUksSUFBQSxNQUVBOUIsTUFHQXlnQyxFQUFBdGxDLFVBQUFta0MsTUFBQSxTQUFBK0Qs
RUFBQUMsR0FDQSxNQUFBRCxFQUFBLEtBQ0FBLEVBQUEsSUFBQUEsRUFFQSxJQUFBN1AsR0FBQSxH
QUFBblAsUUFBQWdmLEVBQUEsSUFJQSxPQUhBcmpDLE1BQUFvL0IsT0FBQWlFLEdBQUEsU0FBQXJ4
QyxHQUNBLE1BQUFBLEdBQUFrb0IsUUFBQXNaLEVBQUE4UCxFQUFBN0csUUFBQTZHLElBRUF0akMs
TUFHQXlnQyxFQUFBdGxDLFVBQUEyRyxHQUFBMitCLEVBQUF0bEMsVUFBQXNuQyxNQUFBLFNBQUFo
TSxFQUFBcGdDLEVBQUFvc0MsR0FDQSxHQUFBOUUsR0FBQTM5QixJQU1BLE9BTEF5aUMsSUFBQSxr
QkFBQXBzQyxLQUNBb3NDLEVBQUFwc0MsRUFDQUEsRUFBQW9nQyxFQUNBQSxFQUFBLE1BRUFuaUMs
TUFBQXdELFFBQUF6QixHQUNBQSxFQUFBbVksUUFBQSxTQUFBMm1CLEdBQ0F3SSxFQUFBNzdCLEdB
QUEyMEIsRUFBQXRCLEVBQUFzTixNQUdBcHNDLEVBQUFvbUMsU0FDQXBtQyxJQUFBb21DLE9BQUF2
aUIsUUFBQSxlQUVBNWxCLE1BQUF3RCxRQUFBMitCLEdBQ0FBLEVBQUFqb0IsUUFBQSxTQUFBblos
R0FDQXNvQyxFQUFBNzdCLEdBQUF6TSxFQUFBNUMsY0FBQTRELEVBQUFvc0MsTUFHQXBzQyxJQUFB
L0QsTUFBQSxHQUFBK3hCLFFBQUFya0IsS0FBQTYvQixZQUNBeHBDLEVBQUFzcEMsRUFBQXRwQyxF
QUFBMkosS0FBQTYvQixlQUNBNy9CLE1BQUFrSSxPQUFBdXVCLEVBQUF6MkIsS0FBQXl4QixNQUFB
bjhCLE9BQUFlLEdBQUFvc0MsTUFHQWhDLEVBQUF0bEMsVUFBQTlFLEtBQUEsU0FBQUEsRUFBQWt0
QyxHQUNBLEdBQUEvd0MsR0FBQXdOLEtBQUF5eEIsTUFBQWovQixNQUNBNkQsR0FBQW9tQyxTQUNB
cG1DLElBQUFvbUMsT0FBQXZpQixRQUFBLGVBRUE3akIsSUFBQS9ELE1BQUEsR0FBQSt4QixRQUFB
cmtCLEtBQUE2L0IsWUFDQXhwQyxFQUFBc3BDLEVBQUF0cEMsRUFBQTJKLEtBQUE2L0IsV0FDQTcv
QixLQUFBeXhCLE1BQUF6eEIsS0FBQXl4QixNQUFBbjhCLE9BQUFlLEdBQ0FrdEMsRUFBQW53QyxL
QUFBNE0sV0FDQUEsS0FBQXl4QixNQUFBMStCLE9BQUFQLEVBQUE2RCxFQUFBN0QsU0FHQWl1QyxF
QUFBdGxDLFVBQUFnbkMsU0FBQSxTQUFBMUwsRUFBQXBnQyxFQUFBMG9DLEdBZ0JBLFFBQUF5RSxL
QUNBN0YsRUFBQTE2QixLQUFBd2dDLEVBQUFMLE1BQ0F6RixFQUFBK0YsT0FBQS9GLEVBQUFnRyxR
QUFBRixHQUFBOUYsRUFBQW9CLEdBakJBLEdBQUFxRSxHQUFBekYsRUFBQTM5QixLQUFBeWpDLEVB
QUF6akMsS0FBQXhDLFNBQUFpNUIsRUFBQXBnQyxFQUFBNmpCLFFBQUEwb0IsRUFBQSxJQUFBNWlD
LEtBQUE0L0IsT0FBQSxJQUFBZ0UsRUFBQTVqQyxLQUFBNmpDLFFBRUEsT0FEQTdqQyxNQUFBNmpD
LFVBQUEsRUFDQUosR0FBQSxJQUFBQSxFQUFBanhDLFFBVUEsWUFBQXdOLEtBQUE2aUMsVUFDQVks
SUFBQUssV0FNQVYsRUFBQXBqQyxLQUFBb3VCLE9BQUFwdUIsS0FBQW91QixNQUFBZ1YsT0FBQXBq
QyxLQUFBb3VCLE1BQUFnVixPQUFBOXRDLE9BQUEwSyxLQUFBaUQsT0FBQWpELEtBQUFpRCxNQUNB
bWdDLEtBQUE1d0MsT0FBQSxHQUFBb3hDLEdBQ0E1akMsS0FBQThpQyxNQUNBOWlDLEtBQUEwakMs
T0FBQU4sRUFBQXBqQyxLQUFBd2pDLElBRUF4akMsS0FBQTBqQyxPQUFBTixFQUFBcGpDLE1BQ0F3
akMsTUFFQSxJQUVBQSxLQUNBLEtBM0JBeGpDLEtBQUFpRCxRQUNBLGtCQUFBakQsTUFBQWdqQyxV
QUNBaGpDLEtBQUEwakMsUUFBQTFqQyxLQUFBZ2pDLFdBQ0F2TSxTQUNBcGdDLFFBQ08wb0MsSUFF
UCxJQXVCQTBCLEVBQUF0bEMsVUFBQXVvQyxPQUFBLFNBQUFELEVBQUFNLEVBQUFoRixHQUNBLEdB
Q0E5cUMsR0FEQTBwQyxFQUFBMzlCLElBRUFBLE1BQUE4aUMsT0FDQTd1QyxFQUFBLFNBQUFULEVB
QUE4eEIsR0FDQSxNQUFBaHhCLE9BQUF3RCxRQUFBdEUsR0FDQXNyQyxFQUFBdHJDLEVBQUFTLEVB
QUFxeEIsUUFDTyxrQkFBQTl4QixJQUNQQSxFQUFBUyxNQUFBOHZDLEdBQUFOLEVBQUEvRCxjQUFB
cHFDLE9BQUFnd0IsTUFHQXdaLEVBQUEyRSxFQUFBeHZDLEVBQUEsV0FDQThxQyxHQUNBQSxFQUFB
OXFDLE1BQUE4dkMsRUFBQS92QyxlQUlBQyxFQUFBLFNBQUFULEdBQ0EsTUFBQWMsT0FBQXdELFFB
QUF0RSxHQUNBa3JDLEVBQUFsckMsRUFBQVMsR0FDTyxrQkFBQVQsR0FDUEEsRUFBQVMsTUFBQTh2
QyxFQUFBTixFQUFBL0QsbUJBQ08sZ0JBQUFsc0MsSUFBQW1xQyxFQUFBc0YsVUFDUHRGLEVBQUFz
RixTQUFBenZDLEdBQUFTLE1BQUE4dkMsRUFBQU4sRUFBQS9ELGdCQUdBaEIsRUFBQStFLEVBQUF4
dkMsS0FJQXdzQyxFQUFBdGxDLFVBQUFxQyxTQUFBLFNBQUFpNUIsRUFBQXBnQyxFQUFBdXBDLEVB
QUFvRSxFQUFBNWdDLEdBRUEsUUFBQTZnQyxHQUFBckUsR0FJQSxRQUFBc0UsR0FBQXpILEdBRUEs
T0FEQTlGLE1BQ0Fwa0MsRUFBQSxFQUFxQkEsRUFBQWtxQyxFQUFBanFDLE9BQW1CRCxJQUN4Q29r
QyxFQUFBcGtDLEdBQUErQixNQUFBd0QsUUFBQTJrQyxFQUFBbHFDLElBQUEyeEMsRUFBQXpILEVB
QUFscUMsSUFBQWtxQyxFQUFBbHFDLEVBRUEsT0FBQW9rQyxHQUVBLFFBQUF3TixHQUFBVixHQUNB
LE9BQUFseEMsR0FBQWt4QyxFQUFBanhDLE9BQUEsRUFBa0NELEdBQUEsRUFBUUEsSUFDMUMrQixN
QUFBd0QsUUFBQTJyQyxFQUFBbHhDLEtBQ0E0eEMsRUFBQVYsRUFBQWx4QyxJQUNBLElBQUFreEMs
RUFBQWx4QyxHQUFBQyxRQUNBaXhDLEVBQUExd0MsT0FBQVIsRUFBQSxJQUdBNlEsRUFBQXFnQyxF
QUFBbHhDLEtBQ0FreEMsRUFBQTF3QyxPQUFBUixFQUFBLEdBbkJBLElBQUE2USxFQUNBLE1BQUF3
OEIsRUF1QkEsSUFBQXdFLEdBQUFGLEVBQUF0RSxFQUtBLE9BSkF3RSxHQUFBQyxRQUFBekUsRUFB
QXlFLFFBQ0FELEVBQUExRSxTQUFBRSxFQUFBRixTQUNBMEUsRUFBQWhCLE1BQUF4RCxFQUFBd0Qs
TUFBQWhnQyxVQUNBK2dDLEVBQUFDLEdBQ0FBLEVBL0JBLEdBQUFFLEdBQUFDLEVBQUEvbkMsRUFB
QThvQixFQUFBbWUsSUFpQ0EsSUFBQXB0QyxJQUFBMkosS0FBQTYvQixXQUFBRCxFQUFBbkosR0FL
QSxNQUpBblIsS0FBQXNhLEVBQUFuc0IsT0FBQW1zQixFQUFBbkosSUFBQXJ6QixPQUFBMDNCLFVB
Q0F4VixFQUFBOGQsT0FBQXhELEVBQUF3RCxPQUFBaGdDLE9BQUEwM0IsU0FDQXhWLEVBQUErZSxT
QUFBLEVBQ0EvZSxFQUFBb2EsWUFDQXVFLEVBQUEzZSxFQUVBLFFBQUF3YyxLQUFBbEMsR0FDQSxH
QUFBQSxFQUFBenNDLGVBQUEydUMsTUFBQTloQyxLQUFBeWhDLFNBQUFLLElBQUE5aEMsS0FBQXlo
QyxTQUFBSyxJQUFBLGdCQUFBbEMsR0FBQWtDLEtBQUF4dEMsTUFBQXdELFFBQUE4bkMsRUFBQWtD
LEtBQUEsQ0FNQSxHQUxBd0MsRUFBQUMsRUFBQVAsRUFBQWhrQyxLQUFBNi9CLFVBQUFpQyxFQUNB
OWhDLEtBQUEraUMsU0FDQXdCLEdBQUEsSUFBQXZrQyxLQUFBNi9CLFVBQUEsTUFFQXJqQyxFQUFB
bkcsRUFBQW1HLE1BQUEsR0FBQTZuQixRQUFBLElBQUFrZ0IsS0FDQS9uQyxFQUNBLFFBRUEsSUFB
QUEsRUFBQSxJQUFBQSxFQUFBLElBQUFuRyxHQUFBdXBDLEVBQUFrQyxHQUFBckwsR0FTQSxNQVJB
blIsS0FBQXNhLEVBQUFrQyxHQUFBcnVCLE9BQUFtc0IsRUFBQWtDLEdBQUFyTCxJQUFBcnpCLE9B
QUEwM0IsVUFDQXhWLEVBQUE4ZCxPQUFBeEQsRUFBQWtDLEdBQUFzQixPQUFBaGdDLE9BQUEwM0Is
U0FDQXhWLEVBQUErZSxTQUFBLEVBQ0EvZSxFQUFBb2EsU0FBQWxqQyxFQUFBOEYsTUFBQSxHQUNB
dEMsS0FBQTZpQyxTQUFBakQsSUFBQTUvQixLQUFBNC9CLFNBQ0F0YSxFQUFBdHVCLE1BQUE0b0Ms
RUFBQW5zQixPQUFBbXNCLEVBQUE5OUIsSUFBQXNCLE9BQUEwM0IsVUFDQXhWLEVBQUE4ZCxNQUFB
OWQsRUFBQThkLE1BQUE5dEMsUUFBQXNxQyxFQUFBd0QsT0FBQWhnQyxPQUFBMDNCLFdBRUFtSixF
QUFBM2UsRUFHQSxJQURBQSxFQUFBdGxCLEtBQUF4QyxTQUFBaTVCLEVBQUFwZ0MsRUFBQXVwQyxF
QUFBa0MsR0FBQXdDLEdBQ0FoZixFQUFBK2UsUUFlQSxNQWRBL2UsR0FBQTl5QixPQUFBLElBQ0Fp
eEMsSUFBQW51QyxPQUFBZ3dCLElBRUF0bEIsS0FBQTZpQyxVQUNBWSxFQUFBenNDLE1BQUE0b0Ms
RUFBQWtDLEdBQUFydUIsT0FBQW1zQixFQUFBa0MsR0FBQWhnQyxJQUFBc0IsT0FBQTAzQixVQUNB
eFYsRUFBQThkLE1BQUE5ZCxFQUFBOGQsTUFBQTl0QyxRQUFBc3FDLEVBQUFrQyxHQUFBc0IsT0FB
QWhnQyxPQUFBMDNCLFVBQ0E4RSxJQUFBNS9CLEtBQUE0L0IsU0FDQTZELEVBQUF6c0MsTUFBQTRv
QyxFQUFBLE9BQUFBLEVBQUEsSUFBQXg4QixPQUFBMDNCLFVBQ0F4VixFQUFBOGQsTUFBQTlkLEVB
QUE4ZCxNQUFBOXRDLFFBQUFzcUMsRUFBQSxPQUFBeDhCLE9BQUEwM0IsWUFHQTJJLEVBQUFZLFNB
QUEsRUFDQVosRUFBQS9ELFNBQUFwYSxFQUFBb2EsU0FDQStELEVBQUFMLE1BQUE5ZCxFQUFBOGQs
TUFDQWEsRUFBQVIsR0FJQSxVQUdBaEQsRUFBQXRsQyxVQUFBK00sT0FBQSxTQUFBdXVCLEVBQUFw
Z0MsRUFBQW9zQyxFQUFBam9DLEdBQ0EsR0FBQWdxQyxHQUFBQyxFQUFBM3NDLEVBQUErYSxFQUFB
NnhCLENBU0EsSUFSQXJ1QyxJQUFBK00sT0FBQSxTQUFBK3hCLEdBQ0EsTUFBQUEsTUFBQTNpQyxP
QUFBLElBRUFnSSxLQUFBd0YsS0FBQTQvQixPQUNBOEUsRUFBQXJ1QyxFQUFBeTZCLFFBQ0EsUUFB
QXY2QixLQUFBbXVDLEtBQUEsVUFBQW51QyxLQUFBbXVDLEtBQ0FBLEVBQUFuRixFQUFBbUYsRUFB
QTFrQyxLQUFBby9CLFNBRUEvb0MsRUFBQTdELE9BQUEsRUFFQSxNQURBZ0ksR0FBQWtxQyxHQUFB
bHFDLEVBQUFrcUMsT0FDQTFrQyxLQUFBa0ksT0FBQXV1QixFQUFBcGdDLEVBQUFvc0MsRUFBQWpv
QyxFQUFBa3FDLEdBRUEsSUFBQUEsR0FBQXJ1QyxFQUFBN0QsUUFBQWdJLElBQUF3RixLQUFBNC9C
LE9BQUEsQ0FpQkEsR0FGQTZFLFFBQUFqcUMsR0FBQWtxQyxHQUNBNXNDLEVBQUF4RCxNQUFBd0Qs
UUFBQTBDLEVBQUFrcUMsSUFDQWxxQyxFQUFBa3FDLEtBQUE1c0MsR0FBQSxVQUFBMnNDLEVBRUEs
T0FEQUQsUUFBQWhxQyxHQUFBa3FDLEdBQUFqTyxJQUVBLGVBRUEsWUFEQWo4QixFQUFBa3FDLEdB
QUFqTyxJQUFBajhCLEVBQUFrcUMsR0FBQWpPLEdBQUFnTSxHQUVBLGNBRUEsV0FEQWpvQyxHQUFB
a3FDLEdBQUFqTyxHQUFBei9CLEtBQUF5ckMsRUFFQSxpQkFFQSxZQURBam9DLEVBQUFrcUMsR0FB
QWpPLEdBQUFnTSxPQUdHLGlCQUFBZ0MsRUFJSCxNQUhBNXhCLE1BQ0FBLEVBQUE0akIsR0FBQWdN
LE9BQ0Fqb0MsRUFBQWtxQyxHQUFBN3hCLEVBR0EsVUFBQTh4QixPQUFBLDBCQUFBRixHQWxDQSxP
QURBRCxRQUFBaHFDLEdBQUFpOEIsSUFFQSxlQUVBLFlBREFqOEIsRUFBQWk4QixJQUFBajhCLEVB
QUFpOEIsR0FBQWdNLEdBRUEsY0FFQSxXQURBam9DLEdBQUFpOEIsR0FBQXovQixLQUFBeXJDLEVB
RUEsaUJBRUEsWUFEQWpvQyxFQUFBaThCLEdBQUFnTSxLQStCQWhDLEVBQUF0bEMsVUFBQTVHLE9B
QUEsU0FBQWlMLEdBRUEsUUFBQWpMLEdBQUFraUMsR0FDQWtILEVBQUE4RCxTQUFBaEwsSUFBQSxF
QUNBa0gsRUFBQWxILEdBQUEsV0FDQSxHQUFBbU8sR0FBQSxJQUFBNXdDLFVBQUF4QixRQUFBaWtD
LEVBQUEsS0FBQUEsRUFDQWtILEdBQUE3N0IsR0FBQTdOLE1BQUEwcEMsRUFBQWlILEVBQUF0dkMs
T0FBQWhCLE1BQUE2RyxVQUFBbUgsTUFBQWxQLEtBQUFZLGNBTEEsR0FBQXpCLEdBQUFvckMsRUFB
QTM5QixLQUFBdkQsRUFBQStDLEVBQUFoTixNQVFBLEtBQUFELEVBQUEsRUFBYUEsRUFBQWtLLEVB
QVNsSyxJQUN0QmdDLEVBQUFpTCxFQUFBak4sS0FJQWt1QyxFQUFBdGxDLFVBQUF3b0MsUUFBQSxT
QUFBRixHQUNBLEdBQUFFLEdBQUEzakMsS0FBQW91QixPQUFBcHVCLEtBQUFvdUIsTUFBQTNhLFFB
QUF6VCxLQUFBb3VCLE1BQUEzYSxRQUFBbmUsT0FBQXNwQyxFQUFBNkUsSUFBQTdFLEVBQUE2RSxF
QU1BLE9BTEF6akMsTUFBQW91QixPQUFBcHVCLEtBQUFvdUIsTUFBQXRzQixJQUNBNmhDLEVBQUEz
c0MsS0FBQWdKLEtBQUFvdUIsTUFBQXRzQixJQUVBNmhDLEVBQUFqRSxTQUFBK0QsRUFBQS9ELFNB
Q0FpRSxFQUFBbEgsT0FBQWdILEVBQUFoSCxPQUNBa0gsR0FHQWxELEVBQUF0bEMsVUFBQWtqQyxN
QUFBLFNBQUF1QixFQUFBdnBDLEdBU0EsUUFBQXd1QyxHQUFBcEMsRUFBQXFDLEdBQ0EsR0FBQUMs
R0FBQXRDLEVBQUF1QyxFQUFBdkMsRUFBQW53QyxNQUFBcXJDLEVBQUFrQyxXQUFBb0YsUUFBQXJG
LEdBQUE2QyxHQUFBeUMsRUFBQSxLQUFBRixFQUFBLEtBQUFySCxFQUFBOEQsU0FBQXVELEVBQUEs
SUFBQTdpQyxFQUFBK2lDLEVBQUEsS0FBQUgsQ0FLQSxPQUpBRyxLQUNBSCxJQUFBemlDLE9BQUF5
aUMsRUFBQXZvQyxNQUFBLEdBQUE2bkIsUUFBQSxJQUFBc1osRUFBQWtDLGNBQUEsUUFBQXJ0QyxR
QUNBd3lDLEVBQUFsVSxTQUVBb1UsR0FBQSxXQUFBRCxJQUFBM3dDLE1BQUF3RCxRQUFBOG5DLEVB
QUE2QyxLQUNBcUMsSUFBQXh2QyxPQUFBMHZDLE9BQ0FySCxHQUFBVSxNQUFBdUIsRUFBQTZDLEdB
QUFxQyxLQUdBSSxJQUNBSixJQUFBeHZDLE9BQUF5dkMsRUFBQXp5QyxNQUFBcXJDLEVBQUFrQyxZ
QUNBaUYsRUFBQW5GLEVBQUFtRixFQUFBbkgsRUFBQWtDLGdCQUVBbEMsR0FBQXoxQixPQUFBL0Ys
RUFBQTJpQyxFQUFBbEYsRUFBQTZDLEtBdkJBLEdBQUE3QyxHQUFBLGdCQUFBQSxLQUFBdHJDLE1B
QUF3RCxRQUFBOG5DLEdBQUEsQ0FHQSxHQUFBakMsR0FBQTM5QixJQUNBM0osU0FDQS9CLE1BQUF3
RCxRQUFBekIsS0FDQUEsSUFBQS9ELE1BQUFxckMsRUFBQWtDLFdBbUJBLFFBQUE0QyxLQUFBN0Ms
R0FDQUEsRUFBQXpzQyxlQUFBc3ZDLElBQ0FvQyxFQUFBcEMsRUFBQXBzQyxFQUFBaU0sTUFBQSxP
QU9DbFIsSUZ5N1BNLENBQ0EsQ0FDQSxDQUNBLENBQ0EsQ0FFRCxTQUFTRCxFQUFRQyxHRzlvUnZC
RCxFQUFBQyxRQUFBLFdBQ0EsR0FBQWlCLEtBMENBLE9BdkNBQSxHQUFBdUMsU0FBQSxXQUVBLE9B
REEraEMsTUFDQXBrQyxFQUFBLEVBQWdCQSxFQUFBeU4sS0FBQXhOLE9BQWlCRCxJQUFBLENBQ2pD
LEdBQUFLLEdBQUFvTixLQUFBek4sRUFDQUssR0FBQSxHQUNBK2pDLEVBQUEzL0IsS0FBQSxVQUFB
cEUsRUFBQSxPQUF3Q0EsRUFBQSxRQUV4QytqQyxFQUFBMy9CLEtBQUFwRSxFQUFBLElBR0EsTUFB
QStqQyxHQUFBbmhDLEtBQUEsS0FJQW5ELEVBQUFFLEVBQUEsU0FBQTJDLEVBQUFpd0MsR0FDQSxn
QkFBQWp3QyxLQUNBQSxJQUFBLEtBQUFBLEVBQUEsS0FFQSxRQURBa3dDLE1BQ0E3eUMsRUFBQSxF
QUFnQkEsRUFBQXlOLEtBQUF4TixPQUFpQkQsSUFBQSxDQUNqQyxHQUFBK0ksR0FBQTBFLEtBQUF6
TixHQUFBLEVBQ0EsaUJBQUErSSxLQUNBOHBDLEVBQUE5cEMsSUFBQSxHQUVBLElBQUEvSSxFQUFB
LEVBQVlBLEVBQUEyQyxFQUFBMUMsT0FBb0JELElBQUEsQ0FDaEMsR0FBQUssR0FBQXNDLEVBQUEz
QyxFQUtBLGlCQUFBSyxHQUFBLElBQUF3eUMsRUFBQXh5QyxFQUFBLE1BQ0F1eUMsSUFBQXZ5QyxF
QUFBLEdBQ0FBLEVBQUEsR0FBQXV5QyxFQUNLQSxJQUNMdnlDLEVBQUEsT0FBQUEsRUFBQSxhQUFB
dXlDLEVBQUEsS0FFQTl5QyxFQUFBMkUsS0FBQXBFLE1BSUFQLElIMnBSTSxTQUFTbEIsRUFBUUMs
RUFBU0MsR0k5b1JoQyxRQUFBZzBDLEdBQUFscUIsRUFBQXRoQixHQUNBLE9BQUF0SCxHQUFBLEVB
QWVBLEVBQUE0b0IsRUFBQTNvQixPQUFtQkQsSUFBQSxDQUNsQyxHQUFBSyxHQUFBdW9CLEVBQUE1
b0IsR0FDQSt5QyxFQUFBQyxFQUFBM3lDLEVBQUEwSSxHQUNBLElBQUFncUMsRUFBQSxDQUNBQSxF
QUFBN3pCLE1BQ0EsUUFBQXRMLEdBQUEsRUFBaUJBLEVBQUFtL0IsRUFBQU4sTUFBQXh5QyxPQUEy
QjJULElBQzVDbS9CLEVBQUFOLE1BQUE3K0IsR0FBQXZULEVBQUFveUMsTUFBQTcrQixHQUVBLE1B
QVFBLEVBQUF2VCxFQUFBb3lDLE1BQUF4eUMsT0FBdUIyVCxJQUMvQm0vQixFQUFBTixNQUFBaHVD
LEtBQUF3dUMsRUFBQTV5QyxFQUFBb3lDLE1BQUE3K0IsR0FBQXRNLFFBRUcsQ0FFSCxPQURBbXJD
LE1BQ0E3K0IsRUFBQSxFQUFpQkEsRUFBQXZULEVBQUFveUMsTUFBQXh5QyxPQUF1QjJULElBQ3hD
NitCLEVBQUFodUMsS0FBQXd1QyxFQUFBNXlDLEVBQUFveUMsTUFBQTcrQixHQUFBdE0sR0FFQTBy
QyxHQUFBM3lDLEVBQUEwSSxLQUEyQkEsR0FBQTFJLEVBQUEwSSxHQUFBbVcsS0FBQSxFQUFBdXpC
LFdBSzNCLFFBQUFTLEdBQUFwekMsR0FHQSxPQUZBOG9CLE1BQ0F1cUIsS0FDQW56QyxFQUFBLEVB
QWVBLEVBQUFGLEVBQUFHLE9BQWlCRCxJQUFBLENBQ2hDLEdBQUFLLEdBQUFQLEVBQUFFLEdBQ0Er
SSxFQUFBMUksRUFBQSxHQUNBZ3FCLEVBQUFocUIsRUFBQSxHQUNBK3lDLEVBQUEveUMsRUFBQSxH
QUNBZ3pDLEVBQUFoekMsRUFBQSxHQUNBOHhDLEdBQWM5bkIsTUFBQStvQixRQUFBQyxZQUNkRixH
QUFBcHFDLEdBR0FvcUMsRUFBQXBxQyxHQUFBMHBDLE1BQUFodUMsS0FBQTB0QyxHQUZBdnBCLEVB
QUFua0IsS0FBQTB1QyxFQUFBcHFDLElBQWdDQSxLQUFBMHBDLE9BQUFOLEtBSWhDLE1BQUF2cEIs
R0FHQSxRQUFBMHFCLEdBQUFoc0MsRUFBQWlzQyxHQUNBLEdBQUFDLEdBQUFDLElBQ0FDLEVBQUFD
LElBQUExekMsT0FBQSxFQUNBLFlBQUFxSCxFQUFBc3NDLFNBQ0FGLEVBRUdBLEVBQUE5MEIsWUFD
SDQwQixFQUFBajFCLGFBQUFnMUIsRUFBQUcsRUFBQTkwQixhQUVBNDBCLEVBQUE3MEIsWUFBQTQw
QixHQUpBQyxFQUFBajFCLGFBQUFnMUIsRUFBQUMsRUFBQUssWUFNQUYsRUFBQWx2QyxLQUFBOHVD
LE9BQ0UsZUFBQWpzQyxFQUFBc3NDLFNBR0YsU0FBQXhCLE9BQUEscUVBRkFvQixHQUFBNzBCLFlB
QUE0MEIsSUFNQSxRQUFBTyxHQUFBUCxHQUNBQSxFQUFBMzJCLFdBQUE4QixZQUFBNjBCLEVBQ0Es
SUFBQXZkLEdBQUEyZCxFQUFBcHpDLFFBQUFnekMsRUFDQXZkLElBQUEsR0FDQTJkLEVBQUFuekMs
T0FBQXcxQixFQUFBLEdBSUEsUUFBQStkLEdBQUF6c0MsR0FDQSxHQUFBaXNDLEdBQUE5MUIsU0FB
QS9JLGNBQUEsUUFHQSxPQUZBNitCLEdBQUE3ckMsS0FBQSxXQUNBNHJDLEVBQUFoc0MsRUFBQWlz
QyxHQUNBQSxFQUdBLFFBQUFOLEdBQUF2eUMsRUFBQTRHLEdBQ0EsR0FBQWlzQyxHQUFBeHJDLEVB
QUEyWixDQUVBLElBQUFwYSxFQUFBMHNDLFVBQUEsQ0FDQSxHQUFBQyxHQUFBQyxHQUNBWCxHQUFB
WSxNQUFBSixFQUFBenNDLElBQ0FTLEVBQUFxc0MsRUFBQXRzQyxLQUFBLEtBQUF5ckMsRUFBQVUs
R0FBQSxHQUNBdnlCLEVBQUEweUIsRUFBQXRzQyxLQUFBLEtBQUF5ckMsRUFBQVUsR0FBQSxPQUVB
VixHQUFBUSxFQUFBenNDLEdBQ0FTLEVBQUFzc0MsRUFBQXZzQyxLQUFBLEtBQUF5ckMsR0FDQTd4
QixFQUFBLFdBQ0FveUIsRUFBQVAsR0FNQSxPQUZBeHJDLEdBQUFySCxHQUVBLFNBQUE0ekMsR0FD
QSxHQUFBQSxFQUFBLENBQ0EsR0FBQUEsRUFBQWpxQixNQUFBM3BCLEVBQUEycEIsS0FBQWlxQixF
QUFBbEIsUUFBQTF5QyxFQUFBMHlDLE9BQUFrQixFQUFBakIsWUFBQTN5QyxFQUFBMnlDLFVBQ0Es
TUFDQXRyQyxHQUFBckgsRUFBQTR6QyxPQUVBNXlCLE1BY0EsUUFBQTB5QixHQUFBYixFQUFBanpD
LEVBQUFvaEIsRUFBQWhoQixHQUNBLEdBQUEycEIsR0FBQTNJLEVBQUEsR0FBQWhoQixFQUFBMnBC
LEdBRUEsSUFBQWtwQixFQUFBZ0IsV0FDQWhCLEVBQUFnQixXQUFBN04sUUFBQThOLEVBQUFsMEMs
RUFBQStwQixPQUNFLENBQ0YsR0FBQW9xQixHQUFBaDNCLFNBQUFZLGVBQUFnTSxHQUNBdEwsRUFB
QXcwQixFQUFBeDBCLFVBQ0FBLEdBQUF6ZSxJQUFBaXpDLEVBQUE3MEIsWUFBQUssRUFBQXplLElB
Q0F5ZSxFQUFBOWUsT0FDQXN6QyxFQUFBaDFCLGFBQUFrMkIsRUFBQTExQixFQUFBemUsSUFFQWl6
QyxFQUFBNTBCLFlBQUE4MUIsSUFLQSxRQUFBSixHQUFBZCxFQUFBN3lDLEdBQ0EsR0FBQTJwQixH
QUFBM3BCLEVBQUEycEIsSUFDQStvQixFQUFBMXlDLEVBQUEweUMsTUFDQUMsRUFBQTN5QyxFQUFB
MnlDLFNBY0EsSUFaQUQsR0FDQUcsRUFBQXQxQixhQUFBLFFBQUFtMUIsR0FHQUMsSUFHQWhwQixH
QUFBLG1CQUFBZ3BCLEVBQUFxQixRQUFBLFNBRUFycUIsR0FBQSx1REFBdURzcUIsS0FBQUMsU0FB
QUMsbUJBQUEzMUMsS0FBQUMsVUFBQWswQyxNQUFBLE9BR3ZERSxFQUFBZ0IsV0FDQWhCLEVBQUFn
QixXQUFBN04sUUFBQXJjLE1BQ0UsQ0FDRixLQUFBa3BCLEVBQUFNLFlBQ0FOLEVBQUE3MEIsWUFB
QTYwQixFQUFBTSxXQUVBTixHQUFBNTBCLFlBQUFsQixTQUFBWSxlQUFBZ00sS0FqTkEsR0FBQTJv
QixNQUNBOEIsRUFBQSxTQUFBN3pDLEdBQ0EsR0FBQTh6QyxFQUNBLG1CQUVBLE1BREEsbUJBQUFB
LE9BQUE5ekMsRUFBQVMsTUFBQStMLEtBQUFoTSxZQUNBc3pDLElBR0FDLEVBQUFGLEVBQUEsV0FD
QSxxQkFBQTl3QyxLQUFBMFosT0FBQW9rQixVQUFBQyxVQUFBN2hDLGlCQUVBdXpDLEVBQUFxQixF
QUFBLFdBQ0EsTUFBQXIzQixVQUFBKzFCLE1BQUEvMUIsU0FBQXczQixxQkFBQSxhQUVBZCxFQUFB
LEtBQ0FELEVBQUEsRUFDQVAsSUFFQS8wQyxHQUFBQyxRQUFBLFNBQUFpQixFQUFBd0gsR0FLQUEs
UUFHQSxtQkFBQUEsR0FBQTBzQyxZQUFBMXNDLEVBQUEwc0MsVUFBQWdCLEtBR0EsbUJBQUExdEMs
R0FBQXNzQyxXQUFBdHNDLEVBQUFzc0MsU0FBQSxTQUVBLElBQUFockIsR0FBQXNxQixFQUFBcHpD
LEVBR0EsT0FGQWd6QyxHQUFBbHFCLEVBQUF0aEIsR0FFQSxTQUFBNHRDLEdBRUEsT0FEQUMsTUFD
QW4xQyxFQUFBLEVBQWdCQSxFQUFBNG9CLEVBQUEzb0IsT0FBbUJELElBQUEsQ0FDbkMsR0FBQUss
R0FBQXVvQixFQUFBNW9CLEdBQ0EreUMsRUFBQUMsRUFBQTN5QyxFQUFBMEksR0FDQWdxQyxHQUFB
N3pCLE9BQ0FpMkIsRUFBQTF3QyxLQUFBc3VDLEdBRUEsR0FBQW1DLEVBQUEsQ0FDQSxHQUFBL0Is
R0FBQUQsRUFBQWdDLEVBQ0FwQyxHQUFBSyxFQUFBN3JDLEdBRUEsT0FBQXRILEdBQUEsRUFBZ0JB
LEVBQUFtMUMsRUFBQWwxQyxPQUFzQkQsSUFBQSxDQUN0QyxHQUFBK3lDLEdBQUFvQyxFQUFBbjFD
LEVBQ0EsUUFBQSt5QyxFQUFBN3pCLEtBQUEsQ0FDQSxPQUFBdEwsR0FBQSxFQUFrQkEsRUFBQW0v
QixFQUFBTixNQUFBeHlDLE9BQTJCMlQsSUFDN0NtL0IsRUFBQU4sTUFBQTcrQixXQUNBby9CLEdB
QUFELEVBQUFocUMsT0E2R0EsSUFBQXlyQyxHQUFBLFdBQ0EsR0FBQVksS0FFQSxpQkFBQTkwQyxF
QUFBKzBDLEdBRUEsTUFEQUQsR0FBQTkwQyxHQUFBKzBDLEVBQ0FELEVBQUF2a0MsT0FBQTAzQixT
QUFBdGxDLEtBQUEiLCJmaWxlIjoic3RhdGljL2pzL3ZlbmRvci5hNTI1MTdjNWFhOThlN2ZiZWEy
ZS5qcyIsInNvdXJjZXNDb250ZW50IjpbIndlYnBhY2tKc29ucChbMiwwXSxbXG4vKiAwICovLFxu
LyogMSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWly
ZV9fKSB7XG5cblx0LyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovKGZ1bmN0aW9uKGdsb2JhbCkg
ey8qIVxuXHQgKiBWdWUuanMgdjIuMS4zXG5cdCAqIChjKSAyMDE0LTIwMTYgRXZhbiBZb3Vcblx0
ICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLlxuXHQgKi9cblx0J3VzZSBzdHJpY3Qn
O1xuXHRcblx0LyogICovXG5cdFxuXHQvKipcblx0ICogQ29udmVydCBhIHZhbHVlIHRvIGEgc3Ry
aW5nIHRoYXQgaXMgYWN0dWFsbHkgcmVuZGVyZWQuXG5cdCAqL1xuXHRmdW5jdGlvbiBfdG9TdHJp
bmcgKHZhbCkge1xuXHQgIHJldHVybiB2YWwgPT0gbnVsbFxuXHQgICAgPyAnJ1xuXHQgICAgOiB0
eXBlb2YgdmFsID09PSAnb2JqZWN0J1xuXHQgICAgICA/IEpTT04uc3RyaW5naWZ5KHZhbCwgbnVs
bCwgMilcblx0ICAgICAgOiBTdHJpbmcodmFsKVxuXHR9XG5cdFxuXHQvKipcblx0ICogQ29udmVy
dCBhIGlucHV0IHZhbHVlIHRvIGEgbnVtYmVyIGZvciBwZXJzaXN0ZW5jZS5cblx0ICogSWYgdGhl
IGNvbnZlcnNpb24gZmFpbHMsIHJldHVybiBvcmlnaW5hbCBzdHJpbmcuXG5cdCAqL1xuXHRmdW5j
dGlvbiB0b051bWJlciAodmFsKSB7XG5cdCAgdmFyIG4gPSBwYXJzZUZsb2F0KHZhbCwgMTApO1xu
XHQgIHJldHVybiAobiB8fCBuID09PSAwKSA/IG4gOiB2YWxcblx0fVxuXHRcblx0LyoqXG5cdCAq
IE1ha2UgYSBtYXAgYW5kIHJldHVybiBhIGZ1bmN0aW9uIGZvciBjaGVja2luZyBpZiBhIGtleVxu
XHQgKiBpcyBpbiB0aGF0IG1hcC5cblx0ICovXG5cdGZ1bmN0aW9uIG1ha2VNYXAgKFxuXHQgIHN0
cixcblx0ICBleHBlY3RzTG93ZXJDYXNlXG5cdCkge1xuXHQgIHZhciBtYXAgPSBPYmplY3QuY3Jl
YXRlKG51bGwpO1xuXHQgIHZhciBsaXN0ID0gc3RyLnNwbGl0KCcsJyk7XG5cdCAgZm9yICh2YXIg
aSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG5cdCAgICBtYXBbbGlzdFtpXV0gPSB0cnVl
O1xuXHQgIH1cblx0ICByZXR1cm4gZXhwZWN0c0xvd2VyQ2FzZVxuXHQgICAgPyBmdW5jdGlvbiAo
dmFsKSB7IHJldHVybiBtYXBbdmFsLnRvTG93ZXJDYXNlKCldOyB9XG5cdCAgICA6IGZ1bmN0aW9u
ICh2YWwpIHsgcmV0dXJuIG1hcFt2YWxdOyB9XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBDaGVjayBp
ZiBhIHRhZyBpcyBhIGJ1aWx0LWluIHRhZy5cblx0ICovXG5cdHZhciBpc0J1aWx0SW5UYWcgPSBt
YWtlTWFwKCdzbG90LGNvbXBvbmVudCcsIHRydWUpO1xuXHRcblx0LyoqXG5cdCAqIFJlbW92ZSBh
biBpdGVtIGZyb20gYW4gYXJyYXlcblx0ICovXG5cdGZ1bmN0aW9uIHJlbW92ZSQxIChhcnIsIGl0
ZW0pIHtcblx0ICBpZiAoYXJyLmxlbmd0aCkge1xuXHQgICAgdmFyIGluZGV4ID0gYXJyLmluZGV4
T2YoaXRlbSk7XG5cdCAgICBpZiAoaW5kZXggPiAtMSkge1xuXHQgICAgICByZXR1cm4gYXJyLnNw
bGljZShpbmRleCwgMSlcblx0ICAgIH1cblx0ICB9XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBDaGVj
ayB3aGV0aGVyIHRoZSBvYmplY3QgaGFzIHRoZSBwcm9wZXJ0eS5cblx0ICovXG5cdHZhciBoYXNP
d25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG5cdGZ1bmN0aW9u
IGhhc093biAob2JqLCBrZXkpIHtcblx0ICByZXR1cm4gaGFzT3duUHJvcGVydHkuY2FsbChvYmos
IGtleSlcblx0fVxuXHRcblx0LyoqXG5cdCAqIENoZWNrIGlmIHZhbHVlIGlzIHByaW1pdGl2ZVxu
XHQgKi9cblx0ZnVuY3Rpb24gaXNQcmltaXRpdmUgKHZhbHVlKSB7XG5cdCAgcmV0dXJuIHR5cGVv
ZiB2YWx1ZSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJ1xuXHR9XG5c
dFxuXHQvKipcblx0ICogQ3JlYXRlIGEgY2FjaGVkIHZlcnNpb24gb2YgYSBwdXJlIGZ1bmN0aW9u
LlxuXHQgKi9cblx0ZnVuY3Rpb24gY2FjaGVkIChmbikge1xuXHQgIHZhciBjYWNoZSA9IE9iamVj
dC5jcmVhdGUobnVsbCk7XG5cdCAgcmV0dXJuIGZ1bmN0aW9uIGNhY2hlZEZuIChzdHIpIHtcblx0
ICAgIHZhciBoaXQgPSBjYWNoZVtzdHJdO1xuXHQgICAgcmV0dXJuIGhpdCB8fCAoY2FjaGVbc3Ry
XSA9IGZuKHN0cikpXG5cdCAgfVxuXHR9XG5cdFxuXHQvKipcblx0ICogQ2FtZWxpemUgYSBoeXBo
ZW4tZGVsbWl0ZWQgc3RyaW5nLlxuXHQgKi9cblx0dmFyIGNhbWVsaXplUkUgPSAvLShcXHcpL2c7
XG5cdHZhciBjYW1lbGl6ZSA9IGNhY2hlZChmdW5jdGlvbiAoc3RyKSB7XG5cdCAgcmV0dXJuIHN0
ci5yZXBsYWNlKGNhbWVsaXplUkUsIGZ1bmN0aW9uIChfLCBjKSB7IHJldHVybiBjID8gYy50b1Vw
cGVyQ2FzZSgpIDogJyc7IH0pXG5cdH0pO1xuXHRcblx0LyoqXG5cdCAqIENhcGl0YWxpemUgYSBz
dHJpbmcuXG5cdCAqL1xuXHR2YXIgY2FwaXRhbGl6ZSA9IGNhY2hlZChmdW5jdGlvbiAoc3RyKSB7
XG5cdCAgcmV0dXJuIHN0ci5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHN0ci5zbGljZSgxKVxu
XHR9KTtcblx0XG5cdC8qKlxuXHQgKiBIeXBoZW5hdGUgYSBjYW1lbENhc2Ugc3RyaW5nLlxuXHQg
Ki9cblx0dmFyIGh5cGhlbmF0ZVJFID0gLyhbXi1dKShbQS1aXSkvZztcblx0dmFyIGh5cGhlbmF0
ZSA9IGNhY2hlZChmdW5jdGlvbiAoc3RyKSB7XG5cdCAgcmV0dXJuIHN0clxuXHQgICAgLnJlcGxh
Y2UoaHlwaGVuYXRlUkUsICckMS0kMicpXG5cdCAgICAucmVwbGFjZShoeXBoZW5hdGVSRSwgJyQx
LSQyJylcblx0ICAgIC50b0xvd2VyQ2FzZSgpXG5cdH0pO1xuXHRcblx0LyoqXG5cdCAqIFNpbXBs
ZSBiaW5kLCBmYXN0ZXIgdGhhbiBuYXRpdmVcblx0ICovXG5cdGZ1bmN0aW9uIGJpbmQkMSAoZm4s
IGN0eCkge1xuXHQgIGZ1bmN0aW9uIGJvdW5kRm4gKGEpIHtcblx0ICAgIHZhciBsID0gYXJndW1l
bnRzLmxlbmd0aDtcblx0ICAgIHJldHVybiBsXG5cdCAgICAgID8gbCA+IDFcblx0ICAgICAgICA/
IGZuLmFwcGx5KGN0eCwgYXJndW1lbnRzKVxuXHQgICAgICAgIDogZm4uY2FsbChjdHgsIGEpXG5c
dCAgICAgIDogZm4uY2FsbChjdHgpXG5cdCAgfVxuXHQgIC8vIHJlY29yZCBvcmlnaW5hbCBmbiBs
ZW5ndGhcblx0ICBib3VuZEZuLl9sZW5ndGggPSBmbi5sZW5ndGg7XG5cdCAgcmV0dXJuIGJvdW5k
Rm5cblx0fVxuXHRcblx0LyoqXG5cdCAqIENvbnZlcnQgYW4gQXJyYXktbGlrZSBvYmplY3QgdG8g
YSByZWFsIEFycmF5LlxuXHQgKi9cblx0ZnVuY3Rpb24gdG9BcnJheSAobGlzdCwgc3RhcnQpIHtc
blx0ICBzdGFydCA9IHN0YXJ0IHx8IDA7XG5cdCAgdmFyIGkgPSBsaXN0Lmxlbmd0aCAtIHN0YXJ0
O1xuXHQgIHZhciByZXQgPSBuZXcgQXJyYXkoaSk7XG5cdCAgd2hpbGUgKGktLSkge1xuXHQgICAg
cmV0W2ldID0gbGlzdFtpICsgc3RhcnRdO1xuXHQgIH1cblx0ICByZXR1cm4gcmV0XG5cdH1cblx0
XG5cdC8qKlxuXHQgKiBNaXggcHJvcGVydGllcyBpbnRvIHRhcmdldCBvYmplY3QuXG5cdCAqL1xu
XHRmdW5jdGlvbiBleHRlbmQgKHRvLCBfZnJvbSkge1xuXHQgIGZvciAodmFyIGtleSBpbiBfZnJv
bSkge1xuXHQgICAgdG9ba2V5XSA9IF9mcm9tW2tleV07XG5cdCAgfVxuXHQgIHJldHVybiB0b1xu
XHR9XG5cdFxuXHQvKipcblx0ICogUXVpY2sgb2JqZWN0IGNoZWNrIC0gdGhpcyBpcyBwcmltYXJp
bHkgdXNlZCB0byB0ZWxsXG5cdCAqIE9iamVjdHMgZnJvbSBwcmltaXRpdmUgdmFsdWVzIHdoZW4g
d2Uga25vdyB0aGUgdmFsdWVcblx0ICogaXMgYSBKU09OLWNvbXBsaWFudCB0eXBlLlxuXHQgKi9c
blx0ZnVuY3Rpb24gaXNPYmplY3QgKG9iaikge1xuXHQgIHJldHVybiBvYmogIT09IG51bGwgJiYg
dHlwZW9mIG9iaiA9PT0gJ29iamVjdCdcblx0fVxuXHRcblx0LyoqXG5cdCAqIFN0cmljdCBvYmpl
Y3QgdHlwZSBjaGVjay4gT25seSByZXR1cm5zIHRydWVcblx0ICogZm9yIHBsYWluIEphdmFTY3Jp
cHQgb2JqZWN0cy5cblx0ICovXG5cdHZhciB0b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9T
dHJpbmc7XG5cdHZhciBPQkpFQ1RfU1RSSU5HID0gJ1tvYmplY3QgT2JqZWN0XSc7XG5cdGZ1bmN0
aW9uIGlzUGxhaW5PYmplY3QgKG9iaikge1xuXHQgIHJldHVybiB0b1N0cmluZy5jYWxsKG9iaikg
PT09IE9CSkVDVF9TVFJJTkdcblx0fVxuXHRcblx0LyoqXG5cdCAqIE1lcmdlIGFuIEFycmF5IG9m
IE9iamVjdHMgaW50byBhIHNpbmdsZSBPYmplY3QuXG5cdCAqL1xuXHRmdW5jdGlvbiB0b09iamVj
dCAoYXJyKSB7XG5cdCAgdmFyIHJlcyA9IHt9O1xuXHQgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJy
Lmxlbmd0aDsgaSsrKSB7XG5cdCAgICBpZiAoYXJyW2ldKSB7XG5cdCAgICAgIGV4dGVuZChyZXMs
IGFycltpXSk7XG5cdCAgICB9XG5cdCAgfVxuXHQgIHJldHVybiByZXNcblx0fVxuXHRcblx0Lyoq
XG5cdCAqIFBlcmZvcm0gbm8gb3BlcmF0aW9uLlxuXHQgKi9cblx0ZnVuY3Rpb24gbm9vcCAoKSB7
fVxuXHRcblx0LyoqXG5cdCAqIEFsd2F5cyByZXR1cm4gZmFsc2UuXG5cdCAqL1xuXHR2YXIgbm8g
PSBmdW5jdGlvbiAoKSB7IHJldHVybiBmYWxzZTsgfTtcblx0XG5cdC8qKlxuXHQgKiBHZW5lcmF0
ZSBhIHN0YXRpYyBrZXlzIHN0cmluZyBmcm9tIGNvbXBpbGVyIG1vZHVsZXMuXG5cdCAqL1xuXHRm
dW5jdGlvbiBnZW5TdGF0aWNLZXlzIChtb2R1bGVzKSB7XG5cdCAgcmV0dXJuIG1vZHVsZXMucmVk
dWNlKGZ1bmN0aW9uIChrZXlzLCBtKSB7XG5cdCAgICByZXR1cm4ga2V5cy5jb25jYXQobS5zdGF0
aWNLZXlzIHx8IFtdKVxuXHQgIH0sIFtdKS5qb2luKCcsJylcblx0fVxuXHRcblx0LyoqXG5cdCAq
IENoZWNrIGlmIHR3byB2YWx1ZXMgYXJlIGxvb3NlbHkgZXF1YWwgLSB0aGF0IGlzLFxuXHQgKiBp
ZiB0aGV5IGFyZSBwbGFpbiBvYmplY3RzLCBkbyB0aGV5IGhhdmUgdGhlIHNhbWUgc2hhcGU/XG5c
dCAqL1xuXHRmdW5jdGlvbiBsb29zZUVxdWFsIChhLCBiKSB7XG5cdCAgLyogZXNsaW50LWRpc2Fi
bGUgZXFlcWVxICovXG5cdCAgcmV0dXJuIGEgPT0gYiB8fCAoXG5cdCAgICBpc09iamVjdChhKSAm
JiBpc09iamVjdChiKVxuXHQgICAgICA/IEpTT04uc3RyaW5naWZ5KGEpID09PSBKU09OLnN0cmlu
Z2lmeShiKVxuXHQgICAgICA6IGZhbHNlXG5cdCAgKVxuXHQgIC8qIGVzbGludC1lbmFibGUgZXFl
cWVxICovXG5cdH1cblx0XG5cdGZ1bmN0aW9uIGxvb3NlSW5kZXhPZiAoYXJyLCB2YWwpIHtcblx0
ICBmb3IgKHZhciBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuXHQgICAgaWYgKGxvb3Nl
RXF1YWwoYXJyW2ldLCB2YWwpKSB7IHJldHVybiBpIH1cblx0ICB9XG5cdCAgcmV0dXJuIC0xXG5c
dH1cblx0XG5cdC8qICAqL1xuXHRcblx0LyoqXG5cdCAqIENoZWNrIGlmIGEgc3RyaW5nIHN0YXJ0
cyB3aXRoICQgb3IgX1xuXHQgKi9cblx0ZnVuY3Rpb24gaXNSZXNlcnZlZCAoc3RyKSB7XG5cdCAg
dmFyIGMgPSAoc3RyICsgJycpLmNoYXJDb2RlQXQoMCk7XG5cdCAgcmV0dXJuIGMgPT09IDB4MjQg
fHwgYyA9PT0gMHg1RlxuXHR9XG5cdFxuXHQvKipcblx0ICogRGVmaW5lIGEgcHJvcGVydHkuXG5c
dCAqL1xuXHRmdW5jdGlvbiBkZWYgKG9iaiwga2V5LCB2YWwsIGVudW1lcmFibGUpIHtcblx0ICBP
YmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHtcblx0ICAgIHZhbHVlOiB2YWwsXG5cdCAg
ICBlbnVtZXJhYmxlOiAhIWVudW1lcmFibGUsXG5cdCAgICB3cml0YWJsZTogdHJ1ZSxcblx0ICAg
IGNvbmZpZ3VyYWJsZTogdHJ1ZVxuXHQgIH0pO1xuXHR9XG5cdFxuXHQvKipcblx0ICogUGFyc2Ug
c2ltcGxlIHBhdGguXG5cdCAqL1xuXHR2YXIgYmFpbFJFID0gL1teXFx3LiRdLztcblx0ZnVuY3Rp
b24gcGFyc2VQYXRoIChwYXRoKSB7XG5cdCAgaWYgKGJhaWxSRS50ZXN0KHBhdGgpKSB7XG5cdCAg
ICByZXR1cm5cblx0ICB9IGVsc2Uge1xuXHQgICAgdmFyIHNlZ21lbnRzID0gcGF0aC5zcGxpdCgn
LicpO1xuXHQgICAgcmV0dXJuIGZ1bmN0aW9uIChvYmopIHtcblx0ICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBzZWdtZW50cy5sZW5ndGg7IGkrKykge1xuXHQgICAgICAgIGlmICghb2JqKSB7IHJl
dHVybiB9XG5cdCAgICAgICAgb2JqID0gb2JqW3NlZ21lbnRzW2ldXTtcblx0ICAgICAgfVxuXHQg
ICAgICByZXR1cm4gb2JqXG5cdCAgICB9XG5cdCAgfVxuXHR9XG5cdFxuXHQvKiAgKi9cblx0Lyog
Z2xvYmFscyBNdXRhdGlvbk9ic2VydmVyICovXG5cdFxuXHQvLyBjYW4gd2UgdXNlIF9fcHJvdG9f
Xz9cblx0dmFyIGhhc1Byb3RvID0gJ19fcHJvdG9fXycgaW4ge307XG5cdFxuXHQvLyBCcm93c2Vy
IGVudmlyb25tZW50IHNuaWZmaW5nXG5cdHZhciBpbkJyb3dzZXIgPVxuXHQgIHR5cGVvZiB3aW5k
b3cgIT09ICd1bmRlZmluZWQnICYmXG5cdCAgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxs
KHdpbmRvdykgIT09ICdbb2JqZWN0IE9iamVjdF0nO1xuXHRcblx0dmFyIFVBID0gaW5Ccm93c2Vy
ICYmIHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCk7XG5cdHZhciBpc0lF
ID0gVUEgJiYgL21zaWV8dHJpZGVudC8udGVzdChVQSk7XG5cdHZhciBpc0lFOSA9IFVBICYmIFVB
LmluZGV4T2YoJ21zaWUgOS4wJykgPiAwO1xuXHR2YXIgaXNFZGdlID0gVUEgJiYgVUEuaW5kZXhP
ZignZWRnZS8nKSA+IDA7XG5cdHZhciBpc0FuZHJvaWQgPSBVQSAmJiBVQS5pbmRleE9mKCdhbmRy
b2lkJykgPiAwO1xuXHR2YXIgaXNJT1MgPSBVQSAmJiAvaXBob25lfGlwYWR8aXBvZHxpb3MvLnRl
c3QoVUEpO1xuXHRcblx0Ly8gdGhpcyBuZWVkcyB0byBiZSBsYXp5LWV2YWxlZCBiZWNhdXNlIHZ1
ZSBtYXkgYmUgcmVxdWlyZWQgYmVmb3JlXG5cdC8vIHZ1ZS1zZXJ2ZXItcmVuZGVyZXIgY2FuIHNl
dCBWVUVfRU5WXG5cdHZhciBfaXNTZXJ2ZXI7XG5cdHZhciBpc1NlcnZlclJlbmRlcmluZyA9IGZ1
bmN0aW9uICgpIHtcblx0ICBpZiAoX2lzU2VydmVyID09PSB1bmRlZmluZWQpIHtcblx0ICAgIC8q
IGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuXHQgICAgaWYgKCFpbkJyb3dzZXIgJiYgdHlwZW9mIGds
b2JhbCAhPT0gJ3VuZGVmaW5lZCcpIHtcblx0ICAgICAgLy8gZGV0ZWN0IHByZXNlbmNlIG9mIHZ1
ZS1zZXJ2ZXItcmVuZGVyZXIgYW5kIGF2b2lkXG5cdCAgICAgIC8vIFdlYnBhY2sgc2hpbW1pbmcg
dGhlIHByb2Nlc3Ncblx0ICAgICAgX2lzU2VydmVyID0gZ2xvYmFsWydwcm9jZXNzJ10uZW52LlZV
RV9FTlYgPT09ICdzZXJ2ZXInO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgX2lzU2VydmVyID0g
ZmFsc2U7XG5cdCAgICB9XG5cdCAgfVxuXHQgIHJldHVybiBfaXNTZXJ2ZXJcblx0fTtcblx0XG5c
dC8vIGRldGVjdCBkZXZ0b29sc1xuXHR2YXIgZGV2dG9vbHMgPSBpbkJyb3dzZXIgJiYgd2luZG93
Ll9fVlVFX0RFVlRPT0xTX0dMT0JBTF9IT09LX187XG5cdFxuXHQvKiBpc3RhbmJ1bCBpZ25vcmUg
bmV4dCAqL1xuXHRmdW5jdGlvbiBpc05hdGl2ZSAoQ3Rvcikge1xuXHQgIHJldHVybiAvbmF0aXZl
IGNvZGUvLnRlc3QoQ3Rvci50b1N0cmluZygpKVxuXHR9XG5cdFxuXHQvKipcblx0ICogRGVmZXIg
YSB0YXNrIHRvIGV4ZWN1dGUgaXQgYXN5bmNocm9ub3VzbHkuXG5cdCAqL1xuXHR2YXIgbmV4dFRp
Y2sgPSAoZnVuY3Rpb24gKCkge1xuXHQgIHZhciBjYWxsYmFja3MgPSBbXTtcblx0ICB2YXIgcGVu
ZGluZyA9IGZhbHNlO1xuXHQgIHZhciB0aW1lckZ1bmM7XG5cdFxuXHQgIGZ1bmN0aW9uIG5leHRU
aWNrSGFuZGxlciAoKSB7XG5cdCAgICBwZW5kaW5nID0gZmFsc2U7XG5cdCAgICB2YXIgY29waWVz
ID0gY2FsbGJhY2tzLnNsaWNlKDApO1xuXHQgICAgY2FsbGJhY2tzLmxlbmd0aCA9IDA7XG5cdCAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IGNvcGllcy5sZW5ndGg7IGkrKykge1xuXHQgICAgICBjb3Bp
ZXNbaV0oKTtcblx0ICAgIH1cblx0ICB9XG5cdFxuXHQgIC8vIHRoZSBuZXh0VGljayBiZWhhdmlv
ciBsZXZlcmFnZXMgdGhlIG1pY3JvdGFzayBxdWV1ZSwgd2hpY2ggY2FuIGJlIGFjY2Vzc2VkXG5c
dCAgLy8gdmlhIGVpdGhlciBuYXRpdmUgUHJvbWlzZS50aGVuIG9yIE11dGF0aW9uT2JzZXJ2ZXIu
XG5cdCAgLy8gTXV0YXRpb25PYnNlcnZlciBoYXMgd2lkZXIgc3VwcG9ydCwgaG93ZXZlciBpdCBp
cyBzZXJpb3VzbHkgYnVnZ2VkIGluXG5cdCAgLy8gVUlXZWJWaWV3IGluIGlPUyA+PSA5LjMuMyB3
aGVuIHRyaWdnZXJlZCBpbiB0b3VjaCBldmVudCBoYW5kbGVycy4gSXRcblx0ICAvLyBjb21wbGV0
ZWx5IHN0b3BzIHdvcmtpbmcgYWZ0ZXIgdHJpZ2dlcmluZyBhIGZldyB0aW1lcy4uLiBzbywgaWYg
bmF0aXZlXG5cdCAgLy8gUHJvbWlzZSBpcyBhdmFpbGFibGUsIHdlIHdpbGwgdXNlIGl0OlxuXHQg
IC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuXHQgIGlmICh0eXBlb2YgUHJvbWlzZSAhPT0gJ3Vu
ZGVmaW5lZCcgJiYgaXNOYXRpdmUoUHJvbWlzZSkpIHtcblx0ICAgIHZhciBwID0gUHJvbWlzZS5y
ZXNvbHZlKCk7XG5cdCAgICB0aW1lckZ1bmMgPSBmdW5jdGlvbiAoKSB7XG5cdCAgICAgIHAudGhl
bihuZXh0VGlja0hhbmRsZXIpO1xuXHQgICAgICAvLyBpbiBwcm9ibGVtYXRpYyBVSVdlYlZpZXdz
LCBQcm9taXNlLnRoZW4gZG9lc24ndCBjb21wbGV0ZWx5IGJyZWFrLCBidXRcblx0ICAgICAgLy8g
aXQgY2FuIGdldCBzdHVjayBpbiBhIHdlaXJkIHN0YXRlIHdoZXJlIGNhbGxiYWNrcyBhcmUgcHVz
aGVkIGludG8gdGhlXG5cdCAgICAgIC8vIG1pY3JvdGFzayBxdWV1ZSBidXQgdGhlIHF1ZXVlIGlz
bid0IGJlaW5nIGZsdXNoZWQsIHVudGlsIHRoZSBicm93c2VyXG5cdCAgICAgIC8vIG5lZWRzIHRv
IGRvIHNvbWUgb3RoZXIgd29yaywgZS5nLiBoYW5kbGUgYSB0aW1lci4gVGhlcmVmb3JlIHdlIGNh
blxuXHQgICAgICAvLyBcImZvcmNlXCIgdGhlIG1pY3JvdGFzayBxdWV1ZSB0byBiZSBmbHVzaGVk
IGJ5IGFkZGluZyBhbiBlbXB0eSB0aW1lci5cblx0ICAgICAgaWYgKGlzSU9TKSB7IHNldFRpbWVv
dXQobm9vcCk7IH1cblx0ICAgIH07XG5cdCAgfSBlbHNlIGlmICh0eXBlb2YgTXV0YXRpb25PYnNl
cnZlciAhPT0gJ3VuZGVmaW5lZCcgJiYgKFxuXHQgICAgaXNOYXRpdmUoTXV0YXRpb25PYnNlcnZl
cikgfHxcblx0ICAgIC8vIFBoYW50b21KUyBhbmQgaU9TIDcueFxuXHQgICAgTXV0YXRpb25PYnNl
cnZlci50b1N0cmluZygpID09PSAnW29iamVjdCBNdXRhdGlvbk9ic2VydmVyQ29uc3RydWN0b3Jd
J1xuXHQgICkpIHtcblx0ICAgIC8vIHVzZSBNdXRhdGlvbk9ic2VydmVyIHdoZXJlIG5hdGl2ZSBQ
cm9taXNlIGlzIG5vdCBhdmFpbGFibGUsXG5cdCAgICAvLyBlLmcuIFBoYW50b21KUyBJRTExLCBp
T1M3LCBBbmRyb2lkIDQuNFxuXHQgICAgdmFyIGNvdW50ZXIgPSAxO1xuXHQgICAgdmFyIG9ic2Vy
dmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIobmV4dFRpY2tIYW5kbGVyKTtcblx0ICAgIHZhciB0
ZXh0Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKFN0cmluZyhjb3VudGVyKSk7XG5cdCAg
ICBvYnNlcnZlci5vYnNlcnZlKHRleHROb2RlLCB7XG5cdCAgICAgIGNoYXJhY3RlckRhdGE6IHRy
dWVcblx0ICAgIH0pO1xuXHQgICAgdGltZXJGdW5jID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICBj
b3VudGVyID0gKGNvdW50ZXIgKyAxKSAlIDI7XG5cdCAgICAgIHRleHROb2RlLmRhdGEgPSBTdHJp
bmcoY291bnRlcik7XG5cdCAgICB9O1xuXHQgIH0gZWxzZSB7XG5cdCAgICAvLyBmYWxsYmFjayB0
byBzZXRUaW1lb3V0XG5cdCAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuXHQgICAgdGlt
ZXJGdW5jID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICBzZXRUaW1lb3V0KG5leHRUaWNrSGFuZGxl
ciwgMCk7XG5cdCAgICB9O1xuXHQgIH1cblx0XG5cdCAgcmV0dXJuIGZ1bmN0aW9uIHF1ZXVlTmV4
dFRpY2sgKGNiLCBjdHgpIHtcblx0ICAgIHZhciBfcmVzb2x2ZTtcblx0ICAgIGNhbGxiYWNrcy5w
dXNoKGZ1bmN0aW9uICgpIHtcblx0ICAgICAgaWYgKGNiKSB7IGNiLmNhbGwoY3R4KTsgfVxuXHQg
ICAgICBpZiAoX3Jlc29sdmUpIHsgX3Jlc29sdmUoY3R4KTsgfVxuXHQgICAgfSk7XG5cdCAgICBp
ZiAoIXBlbmRpbmcpIHtcblx0ICAgICAgcGVuZGluZyA9IHRydWU7XG5cdCAgICAgIHRpbWVyRnVu
YygpO1xuXHQgICAgfVxuXHQgICAgaWYgKCFjYiAmJiB0eXBlb2YgUHJvbWlzZSAhPT0gJ3VuZGVm
aW5lZCcpIHtcblx0ICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7
XG5cdCAgICAgICAgX3Jlc29sdmUgPSByZXNvbHZlO1xuXHQgICAgICB9KVxuXHQgICAgfVxuXHQg
IH1cblx0fSkoKTtcblx0XG5cdHZhciBfU2V0O1xuXHQvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9c
blx0aWYgKHR5cGVvZiBTZXQgIT09ICd1bmRlZmluZWQnICYmIGlzTmF0aXZlKFNldCkpIHtcblx0
ICAvLyB1c2UgbmF0aXZlIFNldCB3aGVuIGF2YWlsYWJsZS5cblx0ICBfU2V0ID0gU2V0O1xuXHR9
IGVsc2Uge1xuXHQgIC8vIGEgbm9uLXN0YW5kYXJkIFNldCBwb2x5ZmlsbCB0aGF0IG9ubHkgd29y
a3Mgd2l0aCBwcmltaXRpdmUga2V5cy5cblx0ICBfU2V0ID0gKGZ1bmN0aW9uICgpIHtcblx0ICAg
IGZ1bmN0aW9uIFNldCAoKSB7XG5cdCAgICAgIHRoaXMuc2V0ID0gT2JqZWN0LmNyZWF0ZShudWxs
KTtcblx0ICAgIH1cblx0ICAgIFNldC5wcm90b3R5cGUuaGFzID0gZnVuY3Rpb24gaGFzIChrZXkp
IHtcblx0ICAgICAgcmV0dXJuIHRoaXMuc2V0W2tleV0gIT09IHVuZGVmaW5lZFxuXHQgICAgfTtc
blx0ICAgIFNldC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gYWRkIChrZXkpIHtcblx0ICAgICAg
dGhpcy5zZXRba2V5XSA9IDE7XG5cdCAgICB9O1xuXHQgICAgU2V0LnByb3RvdHlwZS5jbGVhciA9
IGZ1bmN0aW9uIGNsZWFyICgpIHtcblx0ICAgICAgdGhpcy5zZXQgPSBPYmplY3QuY3JlYXRlKG51
bGwpO1xuXHQgICAgfTtcblx0XG5cdCAgICByZXR1cm4gU2V0O1xuXHQgIH0oKSk7XG5cdH1cblx0
XG5cdC8qICAqL1xuXHRcblx0dmFyIGNvbmZpZyA9IHtcblx0ICAvKipcblx0ICAgKiBPcHRpb24g
bWVyZ2Ugc3RyYXRlZ2llcyAodXNlZCBpbiBjb3JlL3V0aWwvb3B0aW9ucylcblx0ICAgKi9cblx0
ICBvcHRpb25NZXJnZVN0cmF0ZWdpZXM6IE9iamVjdC5jcmVhdGUobnVsbCksXG5cdFxuXHQgIC8q
KlxuXHQgICAqIFdoZXRoZXIgdG8gc3VwcHJlc3Mgd2FybmluZ3MuXG5cdCAgICovXG5cdCAgc2ls
ZW50OiBmYWxzZSxcblx0XG5cdCAgLyoqXG5cdCAgICogV2hldGhlciB0byBlbmFibGUgZGV2dG9v
bHNcblx0ICAgKi9cblx0ICBkZXZ0b29sczogKFwicHJvZHVjdGlvblwiKSAhPT0gJ3Byb2R1Y3Rp
b24nLFxuXHRcblx0ICAvKipcblx0ICAgKiBFcnJvciBoYW5kbGVyIGZvciB3YXRjaGVyIGVycm9y
c1xuXHQgICAqL1xuXHQgIGVycm9ySGFuZGxlcjogbnVsbCxcblx0XG5cdCAgLyoqXG5cdCAgICog
SWdub3JlIGNlcnRhaW4gY3VzdG9tIGVsZW1lbnRzXG5cdCAgICovXG5cdCAgaWdub3JlZEVsZW1l
bnRzOiBudWxsLFxuXHRcblx0ICAvKipcblx0ICAgKiBDdXN0b20gdXNlciBrZXkgYWxpYXNlcyBm
b3Igdi1vblxuXHQgICAqL1xuXHQgIGtleUNvZGVzOiBPYmplY3QuY3JlYXRlKG51bGwpLFxuXHRc
blx0ICAvKipcblx0ICAgKiBDaGVjayBpZiBhIHRhZyBpcyByZXNlcnZlZCBzbyB0aGF0IGl0IGNh
bm5vdCBiZSByZWdpc3RlcmVkIGFzIGFcblx0ICAgKiBjb21wb25lbnQuIFRoaXMgaXMgcGxhdGZv
cm0tZGVwZW5kZW50IGFuZCBtYXkgYmUgb3ZlcndyaXR0ZW4uXG5cdCAgICovXG5cdCAgaXNSZXNl
cnZlZFRhZzogbm8sXG5cdFxuXHQgIC8qKlxuXHQgICAqIENoZWNrIGlmIGEgdGFnIGlzIGFuIHVu
a25vd24gZWxlbWVudC5cblx0ICAgKiBQbGF0Zm9ybS1kZXBlbmRlbnQuXG5cdCAgICovXG5cdCAg
aXNVbmtub3duRWxlbWVudDogbm8sXG5cdFxuXHQgIC8qKlxuXHQgICAqIEdldCB0aGUgbmFtZXNw
YWNlIG9mIGFuIGVsZW1lbnRcblx0ICAgKi9cblx0ICBnZXRUYWdOYW1lc3BhY2U6IG5vb3AsXG5c
dFxuXHQgIC8qKlxuXHQgICAqIENoZWNrIGlmIGFuIGF0dHJpYnV0ZSBtdXN0IGJlIGJvdW5kIHVz
aW5nIHByb3BlcnR5LCBlLmcuIHZhbHVlXG5cdCAgICogUGxhdGZvcm0tZGVwZW5kZW50LlxuXHQg
ICAqL1xuXHQgIG11c3RVc2VQcm9wOiBubyxcblx0XG5cdCAgLyoqXG5cdCAgICogTGlzdCBvZiBh
c3NldCB0eXBlcyB0aGF0IGEgY29tcG9uZW50IGNhbiBvd24uXG5cdCAgICovXG5cdCAgX2Fzc2V0
VHlwZXM6IFtcblx0ICAgICdjb21wb25lbnQnLFxuXHQgICAgJ2RpcmVjdGl2ZScsXG5cdCAgICAn
ZmlsdGVyJ1xuXHQgIF0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIExpc3Qgb2YgbGlmZWN5Y2xlIGhv
b2tzLlxuXHQgICAqL1xuXHQgIF9saWZlY3ljbGVIb29rczogW1xuXHQgICAgJ2JlZm9yZUNyZWF0
ZScsXG5cdCAgICAnY3JlYXRlZCcsXG5cdCAgICAnYmVmb3JlTW91bnQnLFxuXHQgICAgJ21vdW50
ZWQnLFxuXHQgICAgJ2JlZm9yZVVwZGF0ZScsXG5cdCAgICAndXBkYXRlZCcsXG5cdCAgICAnYmVm
b3JlRGVzdHJveScsXG5cdCAgICAnZGVzdHJveWVkJyxcblx0ICAgICdhY3RpdmF0ZWQnLFxuXHQg
ICAgJ2RlYWN0aXZhdGVkJ1xuXHQgIF0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIE1heCBjaXJjdWxh
ciB1cGRhdGVzIGFsbG93ZWQgaW4gYSBzY2hlZHVsZXIgZmx1c2ggY3ljbGUuXG5cdCAgICovXG5c
dCAgX21heFVwZGF0ZUNvdW50OiAxMDBcblx0fTtcblx0XG5cdHZhciB3YXJuID0gbm9vcDtcblx0
dmFyIGZvcm1hdENvbXBvbmVudE5hbWU7XG5cdFxuXHRpZiAoZmFsc2UpIHtcblx0ICB2YXIgaGFz
Q29uc29sZSA9IHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJztcblx0XG5cdCAgd2FybiA9
IGZ1bmN0aW9uIChtc2csIHZtKSB7XG5cdCAgICBpZiAoaGFzQ29uc29sZSAmJiAoIWNvbmZpZy5z
aWxlbnQpKSB7XG5cdCAgICAgIGNvbnNvbGUuZXJyb3IoXCJbVnVlIHdhcm5dOiBcIiArIG1zZyAr
IFwiIFwiICsgKFxuXHQgICAgICAgIHZtID8gZm9ybWF0TG9jYXRpb24oZm9ybWF0Q29tcG9uZW50
TmFtZSh2bSkpIDogJydcblx0ICAgICAgKSk7XG5cdCAgICB9XG5cdCAgfTtcblx0XG5cdCAgZm9y
bWF0Q29tcG9uZW50TmFtZSA9IGZ1bmN0aW9uICh2bSkge1xuXHQgICAgaWYgKHZtLiRyb290ID09
PSB2bSkge1xuXHQgICAgICByZXR1cm4gJ3Jvb3QgaW5zdGFuY2UnXG5cdCAgICB9XG5cdCAgICB2
YXIgbmFtZSA9IHZtLl9pc1Z1ZVxuXHQgICAgICA/IHZtLiRvcHRpb25zLm5hbWUgfHwgdm0uJG9w
dGlvbnMuX2NvbXBvbmVudFRhZ1xuXHQgICAgICA6IHZtLm5hbWU7XG5cdCAgICByZXR1cm4gKFxu
XHQgICAgICAobmFtZSA/IChcImNvbXBvbmVudCA8XCIgKyBuYW1lICsgXCI+XCIpIDogXCJhbm9u
eW1vdXMgY29tcG9uZW50XCIpICtcblx0ICAgICAgKHZtLl9pc1Z1ZSAmJiB2bS4kb3B0aW9ucy5f
X2ZpbGUgPyAoXCIgYXQgXCIgKyAodm0uJG9wdGlvbnMuX19maWxlKSkgOiAnJylcblx0ICAgIClc
blx0ICB9O1xuXHRcblx0ICB2YXIgZm9ybWF0TG9jYXRpb24gPSBmdW5jdGlvbiAoc3RyKSB7XG5c
dCAgICBpZiAoc3RyID09PSAnYW5vbnltb3VzIGNvbXBvbmVudCcpIHtcblx0ICAgICAgc3RyICs9
IFwiIC0gdXNlIHRoZSBcXFwibmFtZVxcXCIgb3B0aW9uIGZvciBiZXR0ZXIgZGVidWdnaW5nIG1l
c3NhZ2VzLlwiO1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIChcIlxcbihmb3VuZCBpbiBcIiArIHN0
ciArIFwiKVwiKVxuXHQgIH07XG5cdH1cblx0XG5cdC8qICAqL1xuXHRcblx0XG5cdHZhciB1aWQk
MSA9IDA7XG5cdFxuXHQvKipcblx0ICogQSBkZXAgaXMgYW4gb2JzZXJ2YWJsZSB0aGF0IGNhbiBo
YXZlIG11bHRpcGxlXG5cdCAqIGRpcmVjdGl2ZXMgc3Vic2NyaWJpbmcgdG8gaXQuXG5cdCAqL1xu
XHR2YXIgRGVwID0gZnVuY3Rpb24gRGVwICgpIHtcblx0ICB0aGlzLmlkID0gdWlkJDErKztcblx0
ICB0aGlzLnN1YnMgPSBbXTtcblx0fTtcblx0XG5cdERlcC5wcm90b3R5cGUuYWRkU3ViID0gZnVu
Y3Rpb24gYWRkU3ViIChzdWIpIHtcblx0ICB0aGlzLnN1YnMucHVzaChzdWIpO1xuXHR9O1xuXHRc
blx0RGVwLnByb3RvdHlwZS5yZW1vdmVTdWIgPSBmdW5jdGlvbiByZW1vdmVTdWIgKHN1Yikge1xu
XHQgIHJlbW92ZSQxKHRoaXMuc3Vicywgc3ViKTtcblx0fTtcblx0XG5cdERlcC5wcm90b3R5cGUu
ZGVwZW5kID0gZnVuY3Rpb24gZGVwZW5kICgpIHtcblx0ICBpZiAoRGVwLnRhcmdldCkge1xuXHQg
ICAgRGVwLnRhcmdldC5hZGREZXAodGhpcyk7XG5cdCAgfVxuXHR9O1xuXHRcblx0RGVwLnByb3Rv
dHlwZS5ub3RpZnkgPSBmdW5jdGlvbiBub3RpZnkgKCkge1xuXHQgIC8vIHN0YWJsaXplIHRoZSBz
dWJzY3JpYmVyIGxpc3QgZmlyc3Rcblx0ICB2YXIgc3VicyA9IHRoaXMuc3Vicy5zbGljZSgpO1xu
XHQgIGZvciAodmFyIGkgPSAwLCBsID0gc3Vicy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcblx0ICAg
IHN1YnNbaV0udXBkYXRlKCk7XG5cdCAgfVxuXHR9O1xuXHRcblx0Ly8gdGhlIGN1cnJlbnQgdGFy
Z2V0IHdhdGNoZXIgYmVpbmcgZXZhbHVhdGVkLlxuXHQvLyB0aGlzIGlzIGdsb2JhbGx5IHVuaXF1
ZSBiZWNhdXNlIHRoZXJlIGNvdWxkIGJlIG9ubHkgb25lXG5cdC8vIHdhdGNoZXIgYmVpbmcgZXZh
bHVhdGVkIGF0IGFueSB0aW1lLlxuXHREZXAudGFyZ2V0ID0gbnVsbDtcblx0dmFyIHRhcmdldFN0
YWNrID0gW107XG5cdFxuXHRmdW5jdGlvbiBwdXNoVGFyZ2V0IChfdGFyZ2V0KSB7XG5cdCAgaWYg
KERlcC50YXJnZXQpIHsgdGFyZ2V0U3RhY2sucHVzaChEZXAudGFyZ2V0KTsgfVxuXHQgIERlcC50
YXJnZXQgPSBfdGFyZ2V0O1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBwb3BUYXJnZXQgKCkge1xuXHQg
IERlcC50YXJnZXQgPSB0YXJnZXRTdGFjay5wb3AoKTtcblx0fVxuXHRcblx0Lypcblx0ICogbm90
IHR5cGUgY2hlY2tpbmcgdGhpcyBmaWxlIGJlY2F1c2UgZmxvdyBkb2Vzbid0IHBsYXkgd2VsbCB3
aXRoXG5cdCAqIGR5bmFtaWNhbGx5IGFjY2Vzc2luZyBtZXRob2RzIG9uIEFycmF5IHByb3RvdHlw
ZVxuXHQgKi9cblx0XG5cdHZhciBhcnJheVByb3RvID0gQXJyYXkucHJvdG90eXBlO1xuXHR2YXIg
YXJyYXlNZXRob2RzID0gT2JqZWN0LmNyZWF0ZShhcnJheVByb3RvKTtbXG5cdCAgJ3B1c2gnLFxu
XHQgICdwb3AnLFxuXHQgICdzaGlmdCcsXG5cdCAgJ3Vuc2hpZnQnLFxuXHQgICdzcGxpY2UnLFxu
XHQgICdzb3J0Jyxcblx0ICAncmV2ZXJzZSdcblx0XVxuXHQuZm9yRWFjaChmdW5jdGlvbiAobWV0
aG9kKSB7XG5cdCAgLy8gY2FjaGUgb3JpZ2luYWwgbWV0aG9kXG5cdCAgdmFyIG9yaWdpbmFsID0g
YXJyYXlQcm90b1ttZXRob2RdO1xuXHQgIGRlZihhcnJheU1ldGhvZHMsIG1ldGhvZCwgZnVuY3Rp
b24gbXV0YXRvciAoKSB7XG5cdCAgICB2YXIgYXJndW1lbnRzJDEgPSBhcmd1bWVudHM7XG5cdFxu
XHQgICAgLy8gYXZvaWQgbGVha2luZyBhcmd1bWVudHM6XG5cdCAgICAvLyBodHRwOi8vanNwZXJm
LmNvbS9jbG9zdXJlLXdpdGgtYXJndW1lbnRzXG5cdCAgICB2YXIgaSA9IGFyZ3VtZW50cy5sZW5n
dGg7XG5cdCAgICB2YXIgYXJncyA9IG5ldyBBcnJheShpKTtcblx0ICAgIHdoaWxlIChpLS0pIHtc
blx0ICAgICAgYXJnc1tpXSA9IGFyZ3VtZW50cyQxW2ldO1xuXHQgICAgfVxuXHQgICAgdmFyIHJl
c3VsdCA9IG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3MpO1xuXHQgICAgdmFyIG9iID0gdGhpcy5f
X29iX187XG5cdCAgICB2YXIgaW5zZXJ0ZWQ7XG5cdCAgICBzd2l0Y2ggKG1ldGhvZCkge1xuXHQg
ICAgICBjYXNlICdwdXNoJzpcblx0ICAgICAgICBpbnNlcnRlZCA9IGFyZ3M7XG5cdCAgICAgICAg
YnJlYWtcblx0ICAgICAgY2FzZSAndW5zaGlmdCc6XG5cdCAgICAgICAgaW5zZXJ0ZWQgPSBhcmdz
O1xuXHQgICAgICAgIGJyZWFrXG5cdCAgICAgIGNhc2UgJ3NwbGljZSc6XG5cdCAgICAgICAgaW5z
ZXJ0ZWQgPSBhcmdzLnNsaWNlKDIpO1xuXHQgICAgICAgIGJyZWFrXG5cdCAgICB9XG5cdCAgICBp
ZiAoaW5zZXJ0ZWQpIHsgb2Iub2JzZXJ2ZUFycmF5KGluc2VydGVkKTsgfVxuXHQgICAgLy8gbm90
aWZ5IGNoYW5nZVxuXHQgICAgb2IuZGVwLm5vdGlmeSgpO1xuXHQgICAgcmV0dXJuIHJlc3VsdFxu
XHQgIH0pO1xuXHR9KTtcblx0XG5cdC8qICAqL1xuXHRcblx0dmFyIGFycmF5S2V5cyA9IE9iamVj
dC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGFycmF5TWV0aG9kcyk7XG5cdFxuXHQvKipcblx0ICogQnkg
ZGVmYXVsdCwgd2hlbiBhIHJlYWN0aXZlIHByb3BlcnR5IGlzIHNldCwgdGhlIG5ldyB2YWx1ZSBp
c1xuXHQgKiBhbHNvIGNvbnZlcnRlZCB0byBiZWNvbWUgcmVhY3RpdmUuIEhvd2V2ZXIgd2hlbiBw
YXNzaW5nIGRvd24gcHJvcHMsXG5cdCAqIHdlIGRvbid0IHdhbnQgdG8gZm9yY2UgY29udmVyc2lv
biBiZWNhdXNlIHRoZSB2YWx1ZSBtYXkgYmUgYSBuZXN0ZWQgdmFsdWVcblx0ICogdW5kZXIgYSBm
cm96ZW4gZGF0YSBzdHJ1Y3R1cmUuIENvbnZlcnRpbmcgaXQgd291bGQgZGVmZWF0IHRoZSBvcHRp
bWl6YXRpb24uXG5cdCAqL1xuXHR2YXIgb2JzZXJ2ZXJTdGF0ZSA9IHtcblx0ICBzaG91bGRDb252
ZXJ0OiB0cnVlLFxuXHQgIGlzU2V0dGluZ1Byb3BzOiBmYWxzZVxuXHR9O1xuXHRcblx0LyoqXG5c
dCAqIE9ic2VydmVyIGNsYXNzIHRoYXQgYXJlIGF0dGFjaGVkIHRvIGVhY2ggb2JzZXJ2ZWRcblx0
ICogb2JqZWN0LiBPbmNlIGF0dGFjaGVkLCB0aGUgb2JzZXJ2ZXIgY29udmVydHMgdGFyZ2V0XG5c
dCAqIG9iamVjdCdzIHByb3BlcnR5IGtleXMgaW50byBnZXR0ZXIvc2V0dGVycyB0aGF0XG5cdCAq
IGNvbGxlY3QgZGVwZW5kZW5jaWVzIGFuZCBkaXNwYXRjaGVzIHVwZGF0ZXMuXG5cdCAqL1xuXHR2
YXIgT2JzZXJ2ZXIgPSBmdW5jdGlvbiBPYnNlcnZlciAodmFsdWUpIHtcblx0ICB0aGlzLnZhbHVl
ID0gdmFsdWU7XG5cdCAgdGhpcy5kZXAgPSBuZXcgRGVwKCk7XG5cdCAgdGhpcy52bUNvdW50ID0g
MDtcblx0ICBkZWYodmFsdWUsICdfX29iX18nLCB0aGlzKTtcblx0ICBpZiAoQXJyYXkuaXNBcnJh
eSh2YWx1ZSkpIHtcblx0ICAgIHZhciBhdWdtZW50ID0gaGFzUHJvdG9cblx0ICAgICAgPyBwcm90
b0F1Z21lbnRcblx0ICAgICAgOiBjb3B5QXVnbWVudDtcblx0ICAgIGF1Z21lbnQodmFsdWUsIGFy
cmF5TWV0aG9kcywgYXJyYXlLZXlzKTtcblx0ICAgIHRoaXMub2JzZXJ2ZUFycmF5KHZhbHVlKTtc
blx0ICB9IGVsc2Uge1xuXHQgICAgdGhpcy53YWxrKHZhbHVlKTtcblx0ICB9XG5cdH07XG5cdFxu
XHQvKipcblx0ICogV2FsayB0aHJvdWdoIGVhY2ggcHJvcGVydHkgYW5kIGNvbnZlcnQgdGhlbSBp
bnRvXG5cdCAqIGdldHRlci9zZXR0ZXJzLiBUaGlzIG1ldGhvZCBzaG91bGQgb25seSBiZSBjYWxs
ZWQgd2hlblxuXHQgKiB2YWx1ZSB0eXBlIGlzIE9iamVjdC5cblx0ICovXG5cdE9ic2VydmVyLnBy
b3RvdHlwZS53YWxrID0gZnVuY3Rpb24gd2FsayAob2JqKSB7XG5cdCAgdmFyIGtleXMgPSBPYmpl
Y3Qua2V5cyhvYmopO1xuXHQgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykg
e1xuXHQgICAgZGVmaW5lUmVhY3RpdmUkJDEob2JqLCBrZXlzW2ldLCBvYmpba2V5c1tpXV0pO1xu
XHQgIH1cblx0fTtcblx0XG5cdC8qKlxuXHQgKiBPYnNlcnZlIGEgbGlzdCBvZiBBcnJheSBpdGVt
cy5cblx0ICovXG5cdE9ic2VydmVyLnByb3RvdHlwZS5vYnNlcnZlQXJyYXkgPSBmdW5jdGlvbiBv
YnNlcnZlQXJyYXkgKGl0ZW1zKSB7XG5cdCAgZm9yICh2YXIgaSA9IDAsIGwgPSBpdGVtcy5sZW5n
dGg7IGkgPCBsOyBpKyspIHtcblx0ICAgIG9ic2VydmUoaXRlbXNbaV0pO1xuXHQgIH1cblx0fTtc
blx0XG5cdC8vIGhlbHBlcnNcblx0XG5cdC8qKlxuXHQgKiBBdWdtZW50IGFuIHRhcmdldCBPYmpl
Y3Qgb3IgQXJyYXkgYnkgaW50ZXJjZXB0aW5nXG5cdCAqIHRoZSBwcm90b3R5cGUgY2hhaW4gdXNp
bmcgX19wcm90b19fXG5cdCAqL1xuXHRmdW5jdGlvbiBwcm90b0F1Z21lbnQgKHRhcmdldCwgc3Jj
KSB7XG5cdCAgLyogZXNsaW50LWRpc2FibGUgbm8tcHJvdG8gKi9cblx0ICB0YXJnZXQuX19wcm90
b19fID0gc3JjO1xuXHQgIC8qIGVzbGludC1lbmFibGUgbm8tcHJvdG8gKi9cblx0fVxuXHRcblx0
LyoqXG5cdCAqIEF1Z21lbnQgYW4gdGFyZ2V0IE9iamVjdCBvciBBcnJheSBieSBkZWZpbmluZ1xu
XHQgKiBoaWRkZW4gcHJvcGVydGllcy5cblx0ICpcblx0ICogaXN0YW5idWwgaWdub3JlIG5leHRc
blx0ICovXG5cdGZ1bmN0aW9uIGNvcHlBdWdtZW50ICh0YXJnZXQsIHNyYywga2V5cykge1xuXHQg
IGZvciAodmFyIGkgPSAwLCBsID0ga2V5cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcblx0ICAgIHZh
ciBrZXkgPSBrZXlzW2ldO1xuXHQgICAgZGVmKHRhcmdldCwga2V5LCBzcmNba2V5XSk7XG5cdCAg
fVxuXHR9XG5cdFxuXHQvKipcblx0ICogQXR0ZW1wdCB0byBjcmVhdGUgYW4gb2JzZXJ2ZXIgaW5z
dGFuY2UgZm9yIGEgdmFsdWUsXG5cdCAqIHJldHVybnMgdGhlIG5ldyBvYnNlcnZlciBpZiBzdWNj
ZXNzZnVsbHkgb2JzZXJ2ZWQsXG5cdCAqIG9yIHRoZSBleGlzdGluZyBvYnNlcnZlciBpZiB0aGUg
dmFsdWUgYWxyZWFkeSBoYXMgb25lLlxuXHQgKi9cblx0ZnVuY3Rpb24gb2JzZXJ2ZSAodmFsdWUp
IHtcblx0ICBpZiAoIWlzT2JqZWN0KHZhbHVlKSkge1xuXHQgICAgcmV0dXJuXG5cdCAgfVxuXHQg
IHZhciBvYjtcblx0ICBpZiAoaGFzT3duKHZhbHVlLCAnX19vYl9fJykgJiYgdmFsdWUuX19vYl9f
IGluc3RhbmNlb2YgT2JzZXJ2ZXIpIHtcblx0ICAgIG9iID0gdmFsdWUuX19vYl9fO1xuXHQgIH0g
ZWxzZSBpZiAoXG5cdCAgICBvYnNlcnZlclN0YXRlLnNob3VsZENvbnZlcnQgJiZcblx0ICAgICFp
c1NlcnZlclJlbmRlcmluZygpICYmXG5cdCAgICAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgfHwgaXNQ
bGFpbk9iamVjdCh2YWx1ZSkpICYmXG5cdCAgICBPYmplY3QuaXNFeHRlbnNpYmxlKHZhbHVlKSAm
JlxuXHQgICAgIXZhbHVlLl9pc1Z1ZVxuXHQgICkge1xuXHQgICAgb2IgPSBuZXcgT2JzZXJ2ZXIo
dmFsdWUpO1xuXHQgIH1cblx0ICByZXR1cm4gb2Jcblx0fVxuXHRcblx0LyoqXG5cdCAqIERlZmlu
ZSBhIHJlYWN0aXZlIHByb3BlcnR5IG9uIGFuIE9iamVjdC5cblx0ICovXG5cdGZ1bmN0aW9uIGRl
ZmluZVJlYWN0aXZlJCQxIChcblx0ICBvYmosXG5cdCAga2V5LFxuXHQgIHZhbCxcblx0ICBjdXN0
b21TZXR0ZXJcblx0KSB7XG5cdCAgdmFyIGRlcCA9IG5ldyBEZXAoKTtcblx0XG5cdCAgdmFyIHBy
b3BlcnR5ID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSk7XG5cdCAg
aWYgKHByb3BlcnR5ICYmIHByb3BlcnR5LmNvbmZpZ3VyYWJsZSA9PT0gZmFsc2UpIHtcblx0ICAg
IHJldHVyblxuXHQgIH1cblx0XG5cdCAgLy8gY2F0ZXIgZm9yIHByZS1kZWZpbmVkIGdldHRlci9z
ZXR0ZXJzXG5cdCAgdmFyIGdldHRlciA9IHByb3BlcnR5ICYmIHByb3BlcnR5LmdldDtcblx0ICB2
YXIgc2V0dGVyID0gcHJvcGVydHkgJiYgcHJvcGVydHkuc2V0O1xuXHRcblx0ICB2YXIgY2hpbGRP
YiA9IG9ic2VydmUodmFsKTtcblx0ICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHtc
blx0ICAgIGVudW1lcmFibGU6IHRydWUsXG5cdCAgICBjb25maWd1cmFibGU6IHRydWUsXG5cdCAg
ICBnZXQ6IGZ1bmN0aW9uIHJlYWN0aXZlR2V0dGVyICgpIHtcblx0ICAgICAgdmFyIHZhbHVlID0g
Z2V0dGVyID8gZ2V0dGVyLmNhbGwob2JqKSA6IHZhbDtcblx0ICAgICAgaWYgKERlcC50YXJnZXQp
IHtcblx0ICAgICAgICBkZXAuZGVwZW5kKCk7XG5cdCAgICAgICAgaWYgKGNoaWxkT2IpIHtcblx0
ICAgICAgICAgIGNoaWxkT2IuZGVwLmRlcGVuZCgpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICBp
ZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcblx0ICAgICAgICAgIGRlcGVuZEFycmF5KHZhbHVl
KTtcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgICAgcmV0dXJuIHZhbHVlXG5cdCAgICB9
LFxuXHQgICAgc2V0OiBmdW5jdGlvbiByZWFjdGl2ZVNldHRlciAobmV3VmFsKSB7XG5cdCAgICAg
IHZhciB2YWx1ZSA9IGdldHRlciA/IGdldHRlci5jYWxsKG9iaikgOiB2YWw7XG5cdCAgICAgIC8q
IGVzbGludC1kaXNhYmxlIG5vLXNlbGYtY29tcGFyZSAqL1xuXHQgICAgICBpZiAobmV3VmFsID09
PSB2YWx1ZSB8fCAobmV3VmFsICE9PSBuZXdWYWwgJiYgdmFsdWUgIT09IHZhbHVlKSkge1xuXHQg
ICAgICAgIHJldHVyblxuXHQgICAgICB9XG5cdCAgICAgIC8qIGVzbGludC1lbmFibGUgbm8tc2Vs
Zi1jb21wYXJlICovXG5cdCAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgIGN1c3RvbVNldHRl
cigpO1xuXHQgICAgICB9XG5cdCAgICAgIGlmIChzZXR0ZXIpIHtcblx0ICAgICAgICBzZXR0ZXIu
Y2FsbChvYmosIG5ld1ZhbCk7XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgdmFsID0gbmV3
VmFsO1xuXHQgICAgICB9XG5cdCAgICAgIGNoaWxkT2IgPSBvYnNlcnZlKG5ld1ZhbCk7XG5cdCAg
ICAgIGRlcC5ub3RpZnkoKTtcblx0ICAgIH1cblx0ICB9KTtcblx0fVxuXHRcblx0LyoqXG5cdCAq
IFNldCBhIHByb3BlcnR5IG9uIGFuIG9iamVjdC4gQWRkcyB0aGUgbmV3IHByb3BlcnR5IGFuZFxu
XHQgKiB0cmlnZ2VycyBjaGFuZ2Ugbm90aWZpY2F0aW9uIGlmIHRoZSBwcm9wZXJ0eSBkb2Vzbid0
XG5cdCAqIGFscmVhZHkgZXhpc3QuXG5cdCAqL1xuXHRmdW5jdGlvbiBzZXQgKG9iaiwga2V5LCB2
YWwpIHtcblx0ICBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XG5cdCAgICBvYmoubGVuZ3RoID0g
TWF0aC5tYXgob2JqLmxlbmd0aCwga2V5KTtcblx0ICAgIG9iai5zcGxpY2Uoa2V5LCAxLCB2YWwp
O1xuXHQgICAgcmV0dXJuIHZhbFxuXHQgIH1cblx0ICBpZiAoaGFzT3duKG9iaiwga2V5KSkge1xu
XHQgICAgb2JqW2tleV0gPSB2YWw7XG5cdCAgICByZXR1cm5cblx0ICB9XG5cdCAgdmFyIG9iID0g
b2JqLl9fb2JfXztcblx0ICBpZiAob2JqLl9pc1Z1ZSB8fCAob2IgJiYgb2Iudm1Db3VudCkpIHtc
blx0ICAgIChcInByb2R1Y3Rpb25cIikgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuXHQgICAg
ICAnQXZvaWQgYWRkaW5nIHJlYWN0aXZlIHByb3BlcnRpZXMgdG8gYSBWdWUgaW5zdGFuY2Ugb3Ig
aXRzIHJvb3QgJGRhdGEgJyArXG5cdCAgICAgICdhdCBydW50aW1lIC0gZGVjbGFyZSBpdCB1cGZy
b250IGluIHRoZSBkYXRhIG9wdGlvbi4nXG5cdCAgICApO1xuXHQgICAgcmV0dXJuXG5cdCAgfVxu
XHQgIGlmICghb2IpIHtcblx0ICAgIG9ialtrZXldID0gdmFsO1xuXHQgICAgcmV0dXJuXG5cdCAg
fVxuXHQgIGRlZmluZVJlYWN0aXZlJCQxKG9iLnZhbHVlLCBrZXksIHZhbCk7XG5cdCAgb2IuZGVw
Lm5vdGlmeSgpO1xuXHQgIHJldHVybiB2YWxcblx0fVxuXHRcblx0LyoqXG5cdCAqIERlbGV0ZSBh
IHByb3BlcnR5IGFuZCB0cmlnZ2VyIGNoYW5nZSBpZiBuZWNlc3NhcnkuXG5cdCAqL1xuXHRmdW5j
dGlvbiBkZWwgKG9iaiwga2V5KSB7XG5cdCAgdmFyIG9iID0gb2JqLl9fb2JfXztcblx0ICBpZiAo
b2JqLl9pc1Z1ZSB8fCAob2IgJiYgb2Iudm1Db3VudCkpIHtcblx0ICAgIChcInByb2R1Y3Rpb25c
IikgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuXHQgICAgICAnQXZvaWQgZGVsZXRpbmcgcHJv
cGVydGllcyBvbiBhIFZ1ZSBpbnN0YW5jZSBvciBpdHMgcm9vdCAkZGF0YSAnICtcblx0ICAgICAg
Jy0ganVzdCBzZXQgaXQgdG8gbnVsbC4nXG5cdCAgICApO1xuXHQgICAgcmV0dXJuXG5cdCAgfVxu
XHQgIGlmICghaGFzT3duKG9iaiwga2V5KSkge1xuXHQgICAgcmV0dXJuXG5cdCAgfVxuXHQgIGRl
bGV0ZSBvYmpba2V5XTtcblx0ICBpZiAoIW9iKSB7XG5cdCAgICByZXR1cm5cblx0ICB9XG5cdCAg
b2IuZGVwLm5vdGlmeSgpO1xuXHR9XG5cdFxuXHQvKipcblx0ICogQ29sbGVjdCBkZXBlbmRlbmNp
ZXMgb24gYXJyYXkgZWxlbWVudHMgd2hlbiB0aGUgYXJyYXkgaXMgdG91Y2hlZCwgc2luY2Vcblx0
ICogd2UgY2Fubm90IGludGVyY2VwdCBhcnJheSBlbGVtZW50IGFjY2VzcyBsaWtlIHByb3BlcnR5
IGdldHRlcnMuXG5cdCAqL1xuXHRmdW5jdGlvbiBkZXBlbmRBcnJheSAodmFsdWUpIHtcblx0ICBm
b3IgKHZhciBlID0gKHZvaWQgMCksIGkgPSAwLCBsID0gdmFsdWUubGVuZ3RoOyBpIDwgbDsgaSsr
KSB7XG5cdCAgICBlID0gdmFsdWVbaV07XG5cdCAgICBlICYmIGUuX19vYl9fICYmIGUuX19vYl9f
LmRlcC5kZXBlbmQoKTtcblx0ICAgIGlmIChBcnJheS5pc0FycmF5KGUpKSB7XG5cdCAgICAgIGRl
cGVuZEFycmF5KGUpO1xuXHQgICAgfVxuXHQgIH1cblx0fVxuXHRcblx0LyogICovXG5cdFxuXHQv
Kipcblx0ICogT3B0aW9uIG92ZXJ3cml0aW5nIHN0cmF0ZWdpZXMgYXJlIGZ1bmN0aW9ucyB0aGF0
IGhhbmRsZVxuXHQgKiBob3cgdG8gbWVyZ2UgYSBwYXJlbnQgb3B0aW9uIHZhbHVlIGFuZCBhIGNo
aWxkIG9wdGlvblxuXHQgKiB2YWx1ZSBpbnRvIHRoZSBmaW5hbCB2YWx1ZS5cblx0ICovXG5cdHZh
ciBzdHJhdHMgPSBjb25maWcub3B0aW9uTWVyZ2VTdHJhdGVnaWVzO1xuXHRcblx0LyoqXG5cdCAq
IE9wdGlvbnMgd2l0aCByZXN0cmljdGlvbnNcblx0ICovXG5cdGlmIChmYWxzZSkge1xuXHQgIHN0
cmF0cy5lbCA9IHN0cmF0cy5wcm9wc0RhdGEgPSBmdW5jdGlvbiAocGFyZW50LCBjaGlsZCwgdm0s
IGtleSkge1xuXHQgICAgaWYgKCF2bSkge1xuXHQgICAgICB3YXJuKFxuXHQgICAgICAgIFwib3B0
aW9uIFxcXCJcIiArIGtleSArIFwiXFxcIiBjYW4gb25seSBiZSB1c2VkIGR1cmluZyBpbnN0YW5j
ZSBcIiArXG5cdCAgICAgICAgJ2NyZWF0aW9uIHdpdGggdGhlIGBuZXdgIGtleXdvcmQuJ1xuXHQg
ICAgICApO1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIGRlZmF1bHRTdHJhdChwYXJlbnQsIGNoaWxk
KVxuXHQgIH07XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBIZWxwZXIgdGhhdCByZWN1cnNpdmVseSBt
ZXJnZXMgdHdvIGRhdGEgb2JqZWN0cyB0b2dldGhlci5cblx0ICovXG5cdGZ1bmN0aW9uIG1lcmdl
RGF0YSAodG8sIGZyb20pIHtcblx0ICBpZiAoIWZyb20pIHsgcmV0dXJuIHRvIH1cblx0ICB2YXIg
a2V5LCB0b1ZhbCwgZnJvbVZhbDtcblx0ICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKGZyb20pO1xu
XHQgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuXHQgICAga2V5ID0g
a2V5c1tpXTtcblx0ICAgIHRvVmFsID0gdG9ba2V5XTtcblx0ICAgIGZyb21WYWwgPSBmcm9tW2tl
eV07XG5cdCAgICBpZiAoIWhhc093bih0bywga2V5KSkge1xuXHQgICAgICBzZXQodG8sIGtleSwg
ZnJvbVZhbCk7XG5cdCAgICB9IGVsc2UgaWYgKGlzUGxhaW5PYmplY3QodG9WYWwpICYmIGlzUGxh
aW5PYmplY3QoZnJvbVZhbCkpIHtcblx0ICAgICAgbWVyZ2VEYXRhKHRvVmFsLCBmcm9tVmFsKTtc
blx0ICAgIH1cblx0ICB9XG5cdCAgcmV0dXJuIHRvXG5cdH1cblx0XG5cdC8qKlxuXHQgKiBEYXRh
XG5cdCAqL1xuXHRzdHJhdHMuZGF0YSA9IGZ1bmN0aW9uIChcblx0ICBwYXJlbnRWYWwsXG5cdCAg
Y2hpbGRWYWwsXG5cdCAgdm1cblx0KSB7XG5cdCAgaWYgKCF2bSkge1xuXHQgICAgLy8gaW4gYSBW
dWUuZXh0ZW5kIG1lcmdlLCBib3RoIHNob3VsZCBiZSBmdW5jdGlvbnNcblx0ICAgIGlmICghY2hp
bGRWYWwpIHtcblx0ICAgICAgcmV0dXJuIHBhcmVudFZhbFxuXHQgICAgfVxuXHQgICAgaWYgKHR5
cGVvZiBjaGlsZFZhbCAhPT0gJ2Z1bmN0aW9uJykge1xuXHQgICAgICAoXCJwcm9kdWN0aW9uXCIp
ICE9PSAncHJvZHVjdGlvbicgJiYgd2Fybihcblx0ICAgICAgICAnVGhlIFwiZGF0YVwiIG9wdGlv
biBzaG91bGQgYmUgYSBmdW5jdGlvbiAnICtcblx0ICAgICAgICAndGhhdCByZXR1cm5zIGEgcGVy
LWluc3RhbmNlIHZhbHVlIGluIGNvbXBvbmVudCAnICtcblx0ICAgICAgICAnZGVmaW5pdGlvbnMu
Jyxcblx0ICAgICAgICB2bVxuXHQgICAgICApO1xuXHQgICAgICByZXR1cm4gcGFyZW50VmFsXG5c
dCAgICB9XG5cdCAgICBpZiAoIXBhcmVudFZhbCkge1xuXHQgICAgICByZXR1cm4gY2hpbGRWYWxc
blx0ICAgIH1cblx0ICAgIC8vIHdoZW4gcGFyZW50VmFsICYgY2hpbGRWYWwgYXJlIGJvdGggcHJl
c2VudCxcblx0ICAgIC8vIHdlIG5lZWQgdG8gcmV0dXJuIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5z
IHRoZVxuXHQgICAgLy8gbWVyZ2VkIHJlc3VsdCBvZiBib3RoIGZ1bmN0aW9ucy4uLiBubyBuZWVk
IHRvXG5cdCAgICAvLyBjaGVjayBpZiBwYXJlbnRWYWwgaXMgYSBmdW5jdGlvbiBoZXJlIGJlY2F1
c2Vcblx0ICAgIC8vIGl0IGhhcyB0byBiZSBhIGZ1bmN0aW9uIHRvIHBhc3MgcHJldmlvdXMgbWVy
Z2VzLlxuXHQgICAgcmV0dXJuIGZ1bmN0aW9uIG1lcmdlZERhdGFGbiAoKSB7XG5cdCAgICAgIHJl
dHVybiBtZXJnZURhdGEoXG5cdCAgICAgICAgY2hpbGRWYWwuY2FsbCh0aGlzKSxcblx0ICAgICAg
ICBwYXJlbnRWYWwuY2FsbCh0aGlzKVxuXHQgICAgICApXG5cdCAgICB9XG5cdCAgfSBlbHNlIGlm
IChwYXJlbnRWYWwgfHwgY2hpbGRWYWwpIHtcblx0ICAgIHJldHVybiBmdW5jdGlvbiBtZXJnZWRJ
bnN0YW5jZURhdGFGbiAoKSB7XG5cdCAgICAgIC8vIGluc3RhbmNlIG1lcmdlXG5cdCAgICAgIHZh
ciBpbnN0YW5jZURhdGEgPSB0eXBlb2YgY2hpbGRWYWwgPT09ICdmdW5jdGlvbidcblx0ICAgICAg
ICA/IGNoaWxkVmFsLmNhbGwodm0pXG5cdCAgICAgICAgOiBjaGlsZFZhbDtcblx0ICAgICAgdmFy
IGRlZmF1bHREYXRhID0gdHlwZW9mIHBhcmVudFZhbCA9PT0gJ2Z1bmN0aW9uJ1xuXHQgICAgICAg
ID8gcGFyZW50VmFsLmNhbGwodm0pXG5cdCAgICAgICAgOiB1bmRlZmluZWQ7XG5cdCAgICAgIGlm
IChpbnN0YW5jZURhdGEpIHtcblx0ICAgICAgICByZXR1cm4gbWVyZ2VEYXRhKGluc3RhbmNlRGF0
YSwgZGVmYXVsdERhdGEpXG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgcmV0dXJuIGRlZmF1
bHREYXRhXG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9XG5cdH07XG5cdFxuXHQvKipcblx0ICog
SG9va3MgYW5kIHBhcmFtIGF0dHJpYnV0ZXMgYXJlIG1lcmdlZCBhcyBhcnJheXMuXG5cdCAqL1xu
XHRmdW5jdGlvbiBtZXJnZUhvb2sgKFxuXHQgIHBhcmVudFZhbCxcblx0ICBjaGlsZFZhbFxuXHQp
IHtcblx0ICByZXR1cm4gY2hpbGRWYWxcblx0ICAgID8gcGFyZW50VmFsXG5cdCAgICAgID8gcGFy
ZW50VmFsLmNvbmNhdChjaGlsZFZhbClcblx0ICAgICAgOiBBcnJheS5pc0FycmF5KGNoaWxkVmFs
KVxuXHQgICAgICAgID8gY2hpbGRWYWxcblx0ICAgICAgICA6IFtjaGlsZFZhbF1cblx0ICAgIDog
cGFyZW50VmFsXG5cdH1cblx0XG5cdGNvbmZpZy5fbGlmZWN5Y2xlSG9va3MuZm9yRWFjaChmdW5j
dGlvbiAoaG9vaykge1xuXHQgIHN0cmF0c1tob29rXSA9IG1lcmdlSG9vaztcblx0fSk7XG5cdFxu
XHQvKipcblx0ICogQXNzZXRzXG5cdCAqXG5cdCAqIFdoZW4gYSB2bSBpcyBwcmVzZW50IChpbnN0
YW5jZSBjcmVhdGlvbiksIHdlIG5lZWQgdG8gZG9cblx0ICogYSB0aHJlZS13YXkgbWVyZ2UgYmV0
d2VlbiBjb25zdHJ1Y3RvciBvcHRpb25zLCBpbnN0YW5jZVxuXHQgKiBvcHRpb25zIGFuZCBwYXJl
bnQgb3B0aW9ucy5cblx0ICovXG5cdGZ1bmN0aW9uIG1lcmdlQXNzZXRzIChwYXJlbnRWYWwsIGNo
aWxkVmFsKSB7XG5cdCAgdmFyIHJlcyA9IE9iamVjdC5jcmVhdGUocGFyZW50VmFsIHx8IG51bGwp
O1xuXHQgIHJldHVybiBjaGlsZFZhbFxuXHQgICAgPyBleHRlbmQocmVzLCBjaGlsZFZhbClcblx0
ICAgIDogcmVzXG5cdH1cblx0XG5cdGNvbmZpZy5fYXNzZXRUeXBlcy5mb3JFYWNoKGZ1bmN0aW9u
ICh0eXBlKSB7XG5cdCAgc3RyYXRzW3R5cGUgKyAncyddID0gbWVyZ2VBc3NldHM7XG5cdH0pO1xu
XHRcblx0LyoqXG5cdCAqIFdhdGNoZXJzLlxuXHQgKlxuXHQgKiBXYXRjaGVycyBoYXNoZXMgc2hv
dWxkIG5vdCBvdmVyd3JpdGUgb25lXG5cdCAqIGFub3RoZXIsIHNvIHdlIG1lcmdlIHRoZW0gYXMg
YXJyYXlzLlxuXHQgKi9cblx0c3RyYXRzLndhdGNoID0gZnVuY3Rpb24gKHBhcmVudFZhbCwgY2hp
bGRWYWwpIHtcblx0ICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cblx0ICBpZiAoIWNoaWxkVmFs
KSB7IHJldHVybiBwYXJlbnRWYWwgfVxuXHQgIGlmICghcGFyZW50VmFsKSB7IHJldHVybiBjaGls
ZFZhbCB9XG5cdCAgdmFyIHJldCA9IHt9O1xuXHQgIGV4dGVuZChyZXQsIHBhcmVudFZhbCk7XG5c
dCAgZm9yICh2YXIga2V5IGluIGNoaWxkVmFsKSB7XG5cdCAgICB2YXIgcGFyZW50ID0gcmV0W2tl
eV07XG5cdCAgICB2YXIgY2hpbGQgPSBjaGlsZFZhbFtrZXldO1xuXHQgICAgaWYgKHBhcmVudCAm
JiAhQXJyYXkuaXNBcnJheShwYXJlbnQpKSB7XG5cdCAgICAgIHBhcmVudCA9IFtwYXJlbnRdO1xu
XHQgICAgfVxuXHQgICAgcmV0W2tleV0gPSBwYXJlbnRcblx0ICAgICAgPyBwYXJlbnQuY29uY2F0
KGNoaWxkKVxuXHQgICAgICA6IFtjaGlsZF07XG5cdCAgfVxuXHQgIHJldHVybiByZXRcblx0fTtc
blx0XG5cdC8qKlxuXHQgKiBPdGhlciBvYmplY3QgaGFzaGVzLlxuXHQgKi9cblx0c3RyYXRzLnBy
b3BzID1cblx0c3RyYXRzLm1ldGhvZHMgPVxuXHRzdHJhdHMuY29tcHV0ZWQgPSBmdW5jdGlvbiAo
cGFyZW50VmFsLCBjaGlsZFZhbCkge1xuXHQgIGlmICghY2hpbGRWYWwpIHsgcmV0dXJuIHBhcmVu
dFZhbCB9XG5cdCAgaWYgKCFwYXJlbnRWYWwpIHsgcmV0dXJuIGNoaWxkVmFsIH1cblx0ICB2YXIg
cmV0ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblx0ICBleHRlbmQocmV0LCBwYXJlbnRWYWwpO1xu
XHQgIGV4dGVuZChyZXQsIGNoaWxkVmFsKTtcblx0ICByZXR1cm4gcmV0XG5cdH07XG5cdFxuXHQv
Kipcblx0ICogRGVmYXVsdCBzdHJhdGVneS5cblx0ICovXG5cdHZhciBkZWZhdWx0U3RyYXQgPSBm
dW5jdGlvbiAocGFyZW50VmFsLCBjaGlsZFZhbCkge1xuXHQgIHJldHVybiBjaGlsZFZhbCA9PT0g
dW5kZWZpbmVkXG5cdCAgICA/IHBhcmVudFZhbFxuXHQgICAgOiBjaGlsZFZhbFxuXHR9O1xuXHRc
blx0LyoqXG5cdCAqIFZhbGlkYXRlIGNvbXBvbmVudCBuYW1lc1xuXHQgKi9cblx0ZnVuY3Rpb24g
Y2hlY2tDb21wb25lbnRzIChvcHRpb25zKSB7XG5cdCAgZm9yICh2YXIga2V5IGluIG9wdGlvbnMu
Y29tcG9uZW50cykge1xuXHQgICAgdmFyIGxvd2VyID0ga2V5LnRvTG93ZXJDYXNlKCk7XG5cdCAg
ICBpZiAoaXNCdWlsdEluVGFnKGxvd2VyKSB8fCBjb25maWcuaXNSZXNlcnZlZFRhZyhsb3dlcikp
IHtcblx0ICAgICAgd2Fybihcblx0ICAgICAgICAnRG8gbm90IHVzZSBidWlsdC1pbiBvciByZXNl
cnZlZCBIVE1MIGVsZW1lbnRzIGFzIGNvbXBvbmVudCAnICtcblx0ICAgICAgICAnaWQ6ICcgKyBr
ZXlcblx0ICAgICAgKTtcblx0ICAgIH1cblx0ICB9XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBFbnN1
cmUgYWxsIHByb3BzIG9wdGlvbiBzeW50YXggYXJlIG5vcm1hbGl6ZWQgaW50byB0aGVcblx0ICog
T2JqZWN0LWJhc2VkIGZvcm1hdC5cblx0ICovXG5cdGZ1bmN0aW9uIG5vcm1hbGl6ZVByb3BzIChv
cHRpb25zKSB7XG5cdCAgdmFyIHByb3BzID0gb3B0aW9ucy5wcm9wcztcblx0ICBpZiAoIXByb3Bz
KSB7IHJldHVybiB9XG5cdCAgdmFyIHJlcyA9IHt9O1xuXHQgIHZhciBpLCB2YWwsIG5hbWU7XG5c
dCAgaWYgKEFycmF5LmlzQXJyYXkocHJvcHMpKSB7XG5cdCAgICBpID0gcHJvcHMubGVuZ3RoO1xu
XHQgICAgd2hpbGUgKGktLSkge1xuXHQgICAgICB2YWwgPSBwcm9wc1tpXTtcblx0ICAgICAgaWYg
KHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7XG5cdCAgICAgICAgbmFtZSA9IGNhbWVsaXplKHZh
bCk7XG5cdCAgICAgICAgcmVzW25hbWVdID0geyB0eXBlOiBudWxsIH07XG5cdCAgICAgIH0gZWxz
ZSBpZiAoZmFsc2UpIHtcblx0ICAgICAgICB3YXJuKCdwcm9wcyBtdXN0IGJlIHN0cmluZ3Mgd2hl
biB1c2luZyBhcnJheSBzeW50YXguJyk7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9IGVsc2Ug
aWYgKGlzUGxhaW5PYmplY3QocHJvcHMpKSB7XG5cdCAgICBmb3IgKHZhciBrZXkgaW4gcHJvcHMp
IHtcblx0ICAgICAgdmFsID0gcHJvcHNba2V5XTtcblx0ICAgICAgbmFtZSA9IGNhbWVsaXplKGtl
eSk7XG5cdCAgICAgIHJlc1tuYW1lXSA9IGlzUGxhaW5PYmplY3QodmFsKVxuXHQgICAgICAgID8g
dmFsXG5cdCAgICAgICAgOiB7IHR5cGU6IHZhbCB9O1xuXHQgICAgfVxuXHQgIH1cblx0ICBvcHRp
b25zLnByb3BzID0gcmVzO1xuXHR9XG5cdFxuXHQvKipcblx0ICogTm9ybWFsaXplIHJhdyBmdW5j
dGlvbiBkaXJlY3RpdmVzIGludG8gb2JqZWN0IGZvcm1hdC5cblx0ICovXG5cdGZ1bmN0aW9uIG5v
cm1hbGl6ZURpcmVjdGl2ZXMgKG9wdGlvbnMpIHtcblx0ICB2YXIgZGlycyA9IG9wdGlvbnMuZGly
ZWN0aXZlcztcblx0ICBpZiAoZGlycykge1xuXHQgICAgZm9yICh2YXIga2V5IGluIGRpcnMpIHtc
blx0ICAgICAgdmFyIGRlZiA9IGRpcnNba2V5XTtcblx0ICAgICAgaWYgKHR5cGVvZiBkZWYgPT09
ICdmdW5jdGlvbicpIHtcblx0ICAgICAgICBkaXJzW2tleV0gPSB7IGJpbmQ6IGRlZiwgdXBkYXRl
OiBkZWYgfTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH1cblx0fVxuXHRcblx0LyoqXG5cdCAq
IE1lcmdlIHR3byBvcHRpb24gb2JqZWN0cyBpbnRvIGEgbmV3IG9uZS5cblx0ICogQ29yZSB1dGls
aXR5IHVzZWQgaW4gYm90aCBpbnN0YW50aWF0aW9uIGFuZCBpbmhlcml0YW5jZS5cblx0ICovXG5c
dGZ1bmN0aW9uIG1lcmdlT3B0aW9ucyAoXG5cdCAgcGFyZW50LFxuXHQgIGNoaWxkLFxuXHQgIHZt
XG5cdCkge1xuXHQgIGlmIChmYWxzZSkge1xuXHQgICAgY2hlY2tDb21wb25lbnRzKGNoaWxkKTtc
blx0ICB9XG5cdCAgbm9ybWFsaXplUHJvcHMoY2hpbGQpO1xuXHQgIG5vcm1hbGl6ZURpcmVjdGl2
ZXMoY2hpbGQpO1xuXHQgIHZhciBleHRlbmRzRnJvbSA9IGNoaWxkLmV4dGVuZHM7XG5cdCAgaWYg
KGV4dGVuZHNGcm9tKSB7XG5cdCAgICBwYXJlbnQgPSB0eXBlb2YgZXh0ZW5kc0Zyb20gPT09ICdm
dW5jdGlvbidcblx0ICAgICAgPyBtZXJnZU9wdGlvbnMocGFyZW50LCBleHRlbmRzRnJvbS5vcHRp
b25zLCB2bSlcblx0ICAgICAgOiBtZXJnZU9wdGlvbnMocGFyZW50LCBleHRlbmRzRnJvbSwgdm0p
O1xuXHQgIH1cblx0ICBpZiAoY2hpbGQubWl4aW5zKSB7XG5cdCAgICBmb3IgKHZhciBpID0gMCwg
bCA9IGNoaWxkLm1peGlucy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcblx0ICAgICAgdmFyIG1peGlu
ID0gY2hpbGQubWl4aW5zW2ldO1xuXHQgICAgICBpZiAobWl4aW4ucHJvdG90eXBlIGluc3RhbmNl
b2YgVnVlJDMpIHtcblx0ICAgICAgICBtaXhpbiA9IG1peGluLm9wdGlvbnM7XG5cdCAgICAgIH1c
blx0ICAgICAgcGFyZW50ID0gbWVyZ2VPcHRpb25zKHBhcmVudCwgbWl4aW4sIHZtKTtcblx0ICAg
IH1cblx0ICB9XG5cdCAgdmFyIG9wdGlvbnMgPSB7fTtcblx0ICB2YXIga2V5O1xuXHQgIGZvciAo
a2V5IGluIHBhcmVudCkge1xuXHQgICAgbWVyZ2VGaWVsZChrZXkpO1xuXHQgIH1cblx0ICBmb3Ig
KGtleSBpbiBjaGlsZCkge1xuXHQgICAgaWYgKCFoYXNPd24ocGFyZW50LCBrZXkpKSB7XG5cdCAg
ICAgIG1lcmdlRmllbGQoa2V5KTtcblx0ICAgIH1cblx0ICB9XG5cdCAgZnVuY3Rpb24gbWVyZ2VG
aWVsZCAoa2V5KSB7XG5cdCAgICB2YXIgc3RyYXQgPSBzdHJhdHNba2V5XSB8fCBkZWZhdWx0U3Ry
YXQ7XG5cdCAgICBvcHRpb25zW2tleV0gPSBzdHJhdChwYXJlbnRba2V5XSwgY2hpbGRba2V5XSwg
dm0sIGtleSk7XG5cdCAgfVxuXHQgIHJldHVybiBvcHRpb25zXG5cdH1cblx0XG5cdC8qKlxuXHQg
KiBSZXNvbHZlIGFuIGFzc2V0LlxuXHQgKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgYmVjYXVzZSBj
aGlsZCBpbnN0YW5jZXMgbmVlZCBhY2Nlc3Ncblx0ICogdG8gYXNzZXRzIGRlZmluZWQgaW4gaXRz
IGFuY2VzdG9yIGNoYWluLlxuXHQgKi9cblx0ZnVuY3Rpb24gcmVzb2x2ZUFzc2V0IChcblx0ICBv
cHRpb25zLFxuXHQgIHR5cGUsXG5cdCAgaWQsXG5cdCAgd2Fybk1pc3Npbmdcblx0KSB7XG5cdCAg
LyogaXN0YW5idWwgaWdub3JlIGlmICovXG5cdCAgaWYgKHR5cGVvZiBpZCAhPT0gJ3N0cmluZycp
IHtcblx0ICAgIHJldHVyblxuXHQgIH1cblx0ICB2YXIgYXNzZXRzID0gb3B0aW9uc1t0eXBlXTtc
blx0ICB2YXIgcmVzID0gYXNzZXRzW2lkXSB8fFxuXHQgICAgLy8gY2FtZWxDYXNlIElEXG5cdCAg
ICBhc3NldHNbY2FtZWxpemUoaWQpXSB8fFxuXHQgICAgLy8gUGFzY2FsIENhc2UgSURcblx0ICAg
IGFzc2V0c1tjYXBpdGFsaXplKGNhbWVsaXplKGlkKSldO1xuXHQgIGlmIChmYWxzZSkge1xuXHQg
ICAgd2Fybihcblx0ICAgICAgJ0ZhaWxlZCB0byByZXNvbHZlICcgKyB0eXBlLnNsaWNlKDAsIC0x
KSArICc6ICcgKyBpZCxcblx0ICAgICAgb3B0aW9uc1xuXHQgICAgKTtcblx0ICB9XG5cdCAgcmV0
dXJuIHJlc1xuXHR9XG5cdFxuXHQvKiAgKi9cblx0XG5cdGZ1bmN0aW9uIHZhbGlkYXRlUHJvcCAo
XG5cdCAga2V5LFxuXHQgIHByb3BPcHRpb25zLFxuXHQgIHByb3BzRGF0YSxcblx0ICB2bVxuXHQp
IHtcblx0ICB2YXIgcHJvcCA9IHByb3BPcHRpb25zW2tleV07XG5cdCAgdmFyIGFic2VudCA9ICFo
YXNPd24ocHJvcHNEYXRhLCBrZXkpO1xuXHQgIHZhciB2YWx1ZSA9IHByb3BzRGF0YVtrZXldO1xu
XHQgIC8vIGhhbmRsZSBib29sZWFuIHByb3BzXG5cdCAgaWYgKGlzQm9vbGVhblR5cGUocHJvcC50
eXBlKSkge1xuXHQgICAgaWYgKGFic2VudCAmJiAhaGFzT3duKHByb3AsICdkZWZhdWx0JykpIHtc
blx0ICAgICAgdmFsdWUgPSBmYWxzZTtcblx0ICAgIH0gZWxzZSBpZiAodmFsdWUgPT09ICcnIHx8
IHZhbHVlID09PSBoeXBoZW5hdGUoa2V5KSkge1xuXHQgICAgICB2YWx1ZSA9IHRydWU7XG5cdCAg
ICB9XG5cdCAgfVxuXHQgIC8vIGNoZWNrIGRlZmF1bHQgdmFsdWVcblx0ICBpZiAodmFsdWUgPT09
IHVuZGVmaW5lZCkge1xuXHQgICAgdmFsdWUgPSBnZXRQcm9wRGVmYXVsdFZhbHVlKHZtLCBwcm9w
LCBrZXkpO1xuXHQgICAgLy8gc2luY2UgdGhlIGRlZmF1bHQgdmFsdWUgaXMgYSBmcmVzaCBjb3B5
LFxuXHQgICAgLy8gbWFrZSBzdXJlIHRvIG9ic2VydmUgaXQuXG5cdCAgICB2YXIgcHJldlNob3Vs
ZENvbnZlcnQgPSBvYnNlcnZlclN0YXRlLnNob3VsZENvbnZlcnQ7XG5cdCAgICBvYnNlcnZlclN0
YXRlLnNob3VsZENvbnZlcnQgPSB0cnVlO1xuXHQgICAgb2JzZXJ2ZSh2YWx1ZSk7XG5cdCAgICBv
YnNlcnZlclN0YXRlLnNob3VsZENvbnZlcnQgPSBwcmV2U2hvdWxkQ29udmVydDtcblx0ICB9XG5c
dCAgaWYgKGZhbHNlKSB7XG5cdCAgICBhc3NlcnRQcm9wKHByb3AsIGtleSwgdmFsdWUsIHZtLCBh
YnNlbnQpO1xuXHQgIH1cblx0ICByZXR1cm4gdmFsdWVcblx0fVxuXHRcblx0LyoqXG5cdCAqIEdl
dCB0aGUgZGVmYXVsdCB2YWx1ZSBvZiBhIHByb3AuXG5cdCAqL1xuXHRmdW5jdGlvbiBnZXRQcm9w
RGVmYXVsdFZhbHVlICh2bSwgcHJvcCwga2V5KSB7XG5cdCAgLy8gbm8gZGVmYXVsdCwgcmV0dXJu
IHVuZGVmaW5lZFxuXHQgIGlmICghaGFzT3duKHByb3AsICdkZWZhdWx0JykpIHtcblx0ICAgIHJl
dHVybiB1bmRlZmluZWRcblx0ICB9XG5cdCAgdmFyIGRlZiA9IHByb3AuZGVmYXVsdDtcblx0ICAv
LyB3YXJuIGFnYWluc3Qgbm9uLWZhY3RvcnkgZGVmYXVsdHMgZm9yIE9iamVjdCAmIEFycmF5XG5c
dCAgaWYgKGlzT2JqZWN0KGRlZikpIHtcblx0ICAgIChcInByb2R1Y3Rpb25cIikgIT09ICdwcm9k
dWN0aW9uJyAmJiB3YXJuKFxuXHQgICAgICAnSW52YWxpZCBkZWZhdWx0IHZhbHVlIGZvciBwcm9w
IFwiJyArIGtleSArICdcIjogJyArXG5cdCAgICAgICdQcm9wcyB3aXRoIHR5cGUgT2JqZWN0L0Fy
cmF5IG11c3QgdXNlIGEgZmFjdG9yeSBmdW5jdGlvbiAnICtcblx0ICAgICAgJ3RvIHJldHVybiB0
aGUgZGVmYXVsdCB2YWx1ZS4nLFxuXHQgICAgICB2bVxuXHQgICAgKTtcblx0ICB9XG5cdCAgLy8g
dGhlIHJhdyBwcm9wIHZhbHVlIHdhcyBhbHNvIHVuZGVmaW5lZCBmcm9tIHByZXZpb3VzIHJlbmRl
cixcblx0ICAvLyByZXR1cm4gcHJldmlvdXMgZGVmYXVsdCB2YWx1ZSB0byBhdm9pZCB1bm5lY2Vz
c2FyeSB3YXRjaGVyIHRyaWdnZXJcblx0ICBpZiAodm0gJiYgdm0uJG9wdGlvbnMucHJvcHNEYXRh
ICYmXG5cdCAgICB2bS4kb3B0aW9ucy5wcm9wc0RhdGFba2V5XSA9PT0gdW5kZWZpbmVkICYmXG5c
dCAgICB2bVtrZXldICE9PSB1bmRlZmluZWQpIHtcblx0ICAgIHJldHVybiB2bVtrZXldXG5cdCAg
fVxuXHQgIC8vIGNhbGwgZmFjdG9yeSBmdW5jdGlvbiBmb3Igbm9uLUZ1bmN0aW9uIHR5cGVzXG5c
dCAgcmV0dXJuIHR5cGVvZiBkZWYgPT09ICdmdW5jdGlvbicgJiYgcHJvcC50eXBlICE9PSBGdW5j
dGlvblxuXHQgICAgPyBkZWYuY2FsbCh2bSlcblx0ICAgIDogZGVmXG5cdH1cblx0XG5cdC8qKlxu
XHQgKiBBc3NlcnQgd2hldGhlciBhIHByb3AgaXMgdmFsaWQuXG5cdCAqL1xuXHRmdW5jdGlvbiBh
c3NlcnRQcm9wIChcblx0ICBwcm9wLFxuXHQgIG5hbWUsXG5cdCAgdmFsdWUsXG5cdCAgdm0sXG5c
dCAgYWJzZW50XG5cdCkge1xuXHQgIGlmIChwcm9wLnJlcXVpcmVkICYmIGFic2VudCkge1xuXHQg
ICAgd2Fybihcblx0ICAgICAgJ01pc3NpbmcgcmVxdWlyZWQgcHJvcDogXCInICsgbmFtZSArICdc
IicsXG5cdCAgICAgIHZtXG5cdCAgICApO1xuXHQgICAgcmV0dXJuXG5cdCAgfVxuXHQgIGlmICh2
YWx1ZSA9PSBudWxsICYmICFwcm9wLnJlcXVpcmVkKSB7XG5cdCAgICByZXR1cm5cblx0ICB9XG5c
dCAgdmFyIHR5cGUgPSBwcm9wLnR5cGU7XG5cdCAgdmFyIHZhbGlkID0gIXR5cGUgfHwgdHlwZSA9
PT0gdHJ1ZTtcblx0ICB2YXIgZXhwZWN0ZWRUeXBlcyA9IFtdO1xuXHQgIGlmICh0eXBlKSB7XG5c
dCAgICBpZiAoIUFycmF5LmlzQXJyYXkodHlwZSkpIHtcblx0ICAgICAgdHlwZSA9IFt0eXBlXTtc
blx0ICAgIH1cblx0ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdHlwZS5sZW5ndGggJiYgIXZhbGlk
OyBpKyspIHtcblx0ICAgICAgdmFyIGFzc2VydGVkVHlwZSA9IGFzc2VydFR5cGUodmFsdWUsIHR5
cGVbaV0pO1xuXHQgICAgICBleHBlY3RlZFR5cGVzLnB1c2goYXNzZXJ0ZWRUeXBlLmV4cGVjdGVk
VHlwZSk7XG5cdCAgICAgIHZhbGlkID0gYXNzZXJ0ZWRUeXBlLnZhbGlkO1xuXHQgICAgfVxuXHQg
IH1cblx0ICBpZiAoIXZhbGlkKSB7XG5cdCAgICB3YXJuKFxuXHQgICAgICAnSW52YWxpZCBwcm9w
OiB0eXBlIGNoZWNrIGZhaWxlZCBmb3IgcHJvcCBcIicgKyBuYW1lICsgJ1wiLicgK1xuXHQgICAg
ICAnIEV4cGVjdGVkICcgKyBleHBlY3RlZFR5cGVzLm1hcChjYXBpdGFsaXplKS5qb2luKCcsICcp
ICtcblx0ICAgICAgJywgZ290ICcgKyBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFs
dWUpLnNsaWNlKDgsIC0xKSArICcuJyxcblx0ICAgICAgdm1cblx0ICAgICk7XG5cdCAgICByZXR1
cm5cblx0ICB9XG5cdCAgdmFyIHZhbGlkYXRvciA9IHByb3AudmFsaWRhdG9yO1xuXHQgIGlmICh2
YWxpZGF0b3IpIHtcblx0ICAgIGlmICghdmFsaWRhdG9yKHZhbHVlKSkge1xuXHQgICAgICB3YXJu
KFxuXHQgICAgICAgICdJbnZhbGlkIHByb3A6IGN1c3RvbSB2YWxpZGF0b3IgY2hlY2sgZmFpbGVk
IGZvciBwcm9wIFwiJyArIG5hbWUgKyAnXCIuJyxcblx0ICAgICAgICB2bVxuXHQgICAgICApO1xu
XHQgICAgfVxuXHQgIH1cblx0fVxuXHRcblx0LyoqXG5cdCAqIEFzc2VydCB0aGUgdHlwZSBvZiBh
IHZhbHVlXG5cdCAqL1xuXHRmdW5jdGlvbiBhc3NlcnRUeXBlICh2YWx1ZSwgdHlwZSkge1xuXHQg
IHZhciB2YWxpZDtcblx0ICB2YXIgZXhwZWN0ZWRUeXBlID0gZ2V0VHlwZSh0eXBlKTtcblx0ICBp
ZiAoZXhwZWN0ZWRUeXBlID09PSAnU3RyaW5nJykge1xuXHQgICAgdmFsaWQgPSB0eXBlb2YgdmFs
dWUgPT09IChleHBlY3RlZFR5cGUgPSAnc3RyaW5nJyk7XG5cdCAgfSBlbHNlIGlmIChleHBlY3Rl
ZFR5cGUgPT09ICdOdW1iZXInKSB7XG5cdCAgICB2YWxpZCA9IHR5cGVvZiB2YWx1ZSA9PT0gKGV4
cGVjdGVkVHlwZSA9ICdudW1iZXInKTtcblx0ICB9IGVsc2UgaWYgKGV4cGVjdGVkVHlwZSA9PT0g
J0Jvb2xlYW4nKSB7XG5cdCAgICB2YWxpZCA9IHR5cGVvZiB2YWx1ZSA9PT0gKGV4cGVjdGVkVHlw
ZSA9ICdib29sZWFuJyk7XG5cdCAgfSBlbHNlIGlmIChleHBlY3RlZFR5cGUgPT09ICdGdW5jdGlv
bicpIHtcblx0ICAgIHZhbGlkID0gdHlwZW9mIHZhbHVlID09PSAoZXhwZWN0ZWRUeXBlID0gJ2Z1
bmN0aW9uJyk7XG5cdCAgfSBlbHNlIGlmIChleHBlY3RlZFR5cGUgPT09ICdPYmplY3QnKSB7XG5c
dCAgICB2YWxpZCA9IGlzUGxhaW5PYmplY3QodmFsdWUpO1xuXHQgIH0gZWxzZSBpZiAoZXhwZWN0
ZWRUeXBlID09PSAnQXJyYXknKSB7XG5cdCAgICB2YWxpZCA9IEFycmF5LmlzQXJyYXkodmFsdWUp
O1xuXHQgIH0gZWxzZSB7XG5cdCAgICB2YWxpZCA9IHZhbHVlIGluc3RhbmNlb2YgdHlwZTtcblx0
ICB9XG5cdCAgcmV0dXJuIHtcblx0ICAgIHZhbGlkOiB2YWxpZCxcblx0ICAgIGV4cGVjdGVkVHlw
ZTogZXhwZWN0ZWRUeXBlXG5cdCAgfVxuXHR9XG5cdFxuXHQvKipcblx0ICogVXNlIGZ1bmN0aW9u
IHN0cmluZyBuYW1lIHRvIGNoZWNrIGJ1aWx0LWluIHR5cGVzLFxuXHQgKiBiZWNhdXNlIGEgc2lt
cGxlIGVxdWFsaXR5IGNoZWNrIHdpbGwgZmFpbCB3aGVuIHJ1bm5pbmdcblx0ICogYWNyb3NzIGRp
ZmZlcmVudCB2bXMgLyBpZnJhbWVzLlxuXHQgKi9cblx0ZnVuY3Rpb24gZ2V0VHlwZSAoZm4pIHtc
blx0ICB2YXIgbWF0Y2ggPSBmbiAmJiBmbi50b1N0cmluZygpLm1hdGNoKC9eXFxzKmZ1bmN0aW9u
IChcXHcrKS8pO1xuXHQgIHJldHVybiBtYXRjaCAmJiBtYXRjaFsxXVxuXHR9XG5cdFxuXHRmdW5j
dGlvbiBpc0Jvb2xlYW5UeXBlIChmbikge1xuXHQgIGlmICghQXJyYXkuaXNBcnJheShmbikpIHtc
blx0ICAgIHJldHVybiBnZXRUeXBlKGZuKSA9PT0gJ0Jvb2xlYW4nXG5cdCAgfVxuXHQgIGZvciAo
dmFyIGkgPSAwLCBsZW4gPSBmbi5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuXHQgICAgaWYgKGdl
dFR5cGUoZm5baV0pID09PSAnQm9vbGVhbicpIHtcblx0ICAgICAgcmV0dXJuIHRydWVcblx0ICAg
IH1cblx0ICB9XG5cdCAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cblx0ICByZXR1cm4gZmFs
c2Vcblx0fVxuXHRcblx0XG5cdFxuXHR2YXIgdXRpbCA9IE9iamVjdC5mcmVlemUoe1xuXHRcdGRl
ZmluZVJlYWN0aXZlOiBkZWZpbmVSZWFjdGl2ZSQkMSxcblx0XHRfdG9TdHJpbmc6IF90b1N0cmlu
Zyxcblx0XHR0b051bWJlcjogdG9OdW1iZXIsXG5cdFx0bWFrZU1hcDogbWFrZU1hcCxcblx0XHRp
c0J1aWx0SW5UYWc6IGlzQnVpbHRJblRhZyxcblx0XHRyZW1vdmU6IHJlbW92ZSQxLFxuXHRcdGhh
c093bjogaGFzT3duLFxuXHRcdGlzUHJpbWl0aXZlOiBpc1ByaW1pdGl2ZSxcblx0XHRjYWNoZWQ6
IGNhY2hlZCxcblx0XHRjYW1lbGl6ZTogY2FtZWxpemUsXG5cdFx0Y2FwaXRhbGl6ZTogY2FwaXRh
bGl6ZSxcblx0XHRoeXBoZW5hdGU6IGh5cGhlbmF0ZSxcblx0XHRiaW5kOiBiaW5kJDEsXG5cdFx0
dG9BcnJheTogdG9BcnJheSxcblx0XHRleHRlbmQ6IGV4dGVuZCxcblx0XHRpc09iamVjdDogaXNP
YmplY3QsXG5cdFx0aXNQbGFpbk9iamVjdDogaXNQbGFpbk9iamVjdCxcblx0XHR0b09iamVjdDog
dG9PYmplY3QsXG5cdFx0bm9vcDogbm9vcCxcblx0XHRubzogbm8sXG5cdFx0Z2VuU3RhdGljS2V5
czogZ2VuU3RhdGljS2V5cyxcblx0XHRsb29zZUVxdWFsOiBsb29zZUVxdWFsLFxuXHRcdGxvb3Nl
SW5kZXhPZjogbG9vc2VJbmRleE9mLFxuXHRcdGlzUmVzZXJ2ZWQ6IGlzUmVzZXJ2ZWQsXG5cdFx0
ZGVmOiBkZWYsXG5cdFx0cGFyc2VQYXRoOiBwYXJzZVBhdGgsXG5cdFx0aGFzUHJvdG86IGhhc1By
b3RvLFxuXHRcdGluQnJvd3NlcjogaW5Ccm93c2VyLFxuXHRcdFVBOiBVQSxcblx0XHRpc0lFOiBp
c0lFLFxuXHRcdGlzSUU5OiBpc0lFOSxcblx0XHRpc0VkZ2U6IGlzRWRnZSxcblx0XHRpc0FuZHJv
aWQ6IGlzQW5kcm9pZCxcblx0XHRpc0lPUzogaXNJT1MsXG5cdFx0aXNTZXJ2ZXJSZW5kZXJpbmc6
IGlzU2VydmVyUmVuZGVyaW5nLFxuXHRcdGRldnRvb2xzOiBkZXZ0b29scyxcblx0XHRuZXh0VGlj
azogbmV4dFRpY2ssXG5cdFx0Z2V0IF9TZXQgKCkgeyByZXR1cm4gX1NldDsgfSxcblx0XHRtZXJn
ZU9wdGlvbnM6IG1lcmdlT3B0aW9ucyxcblx0XHRyZXNvbHZlQXNzZXQ6IHJlc29sdmVBc3NldCxc
blx0XHRnZXQgd2FybiAoKSB7IHJldHVybiB3YXJuOyB9LFxuXHRcdGdldCBmb3JtYXRDb21wb25l
bnROYW1lICgpIHsgcmV0dXJuIGZvcm1hdENvbXBvbmVudE5hbWU7IH0sXG5cdFx0dmFsaWRhdGVQ
cm9wOiB2YWxpZGF0ZVByb3Bcblx0fSk7XG5cdFxuXHQvKiBub3QgdHlwZSBjaGVja2luZyB0aGlz
IGZpbGUgYmVjYXVzZSBmbG93IGRvZXNuJ3QgcGxheSB3ZWxsIHdpdGggUHJveHkgKi9cblx0XG5c
dHZhciBpbml0UHJveHk7XG5cdFxuXHRpZiAoZmFsc2UpIHtcblx0ICB2YXIgYWxsb3dlZEdsb2Jh
bHMgPSBtYWtlTWFwKFxuXHQgICAgJ0luZmluaXR5LHVuZGVmaW5lZCxOYU4saXNGaW5pdGUsaXNO
YU4sJyArXG5cdCAgICAncGFyc2VGbG9hdCxwYXJzZUludCxkZWNvZGVVUkksZGVjb2RlVVJJQ29t
cG9uZW50LGVuY29kZVVSSSxlbmNvZGVVUklDb21wb25lbnQsJyArXG5cdCAgICAnTWF0aCxOdW1i
ZXIsRGF0ZSxBcnJheSxPYmplY3QsQm9vbGVhbixTdHJpbmcsUmVnRXhwLE1hcCxTZXQsSlNPTixJ
bnRsLCcgK1xuXHQgICAgJ3JlcXVpcmUnIC8vIGZvciBXZWJwYWNrL0Jyb3dzZXJpZnlcblx0ICAp
O1xuXHRcblx0ICB2YXIgd2Fybk5vblByZXNlbnQgPSBmdW5jdGlvbiAodGFyZ2V0LCBrZXkpIHtc
blx0ICAgIHdhcm4oXG5cdCAgICAgIFwiUHJvcGVydHkgb3IgbWV0aG9kIFxcXCJcIiArIGtleSAr
IFwiXFxcIiBpcyBub3QgZGVmaW5lZCBvbiB0aGUgaW5zdGFuY2UgYnV0IFwiICtcblx0ICAgICAg
XCJyZWZlcmVuY2VkIGR1cmluZyByZW5kZXIuIE1ha2Ugc3VyZSB0byBkZWNsYXJlIHJlYWN0aXZl
IGRhdGEgXCIgK1xuXHQgICAgICBcInByb3BlcnRpZXMgaW4gdGhlIGRhdGEgb3B0aW9uLlwiLFxu
XHQgICAgICB0YXJnZXRcblx0ICAgICk7XG5cdCAgfTtcblx0XG5cdCAgdmFyIGhhc1Byb3h5ID1c
blx0ICAgIHR5cGVvZiBQcm94eSAhPT0gJ3VuZGVmaW5lZCcgJiZcblx0ICAgIFByb3h5LnRvU3Ry
aW5nKCkubWF0Y2goL25hdGl2ZSBjb2RlLyk7XG5cdFxuXHQgIHZhciBoYXNIYW5kbGVyID0ge1xu
XHQgICAgaGFzOiBmdW5jdGlvbiBoYXMgKHRhcmdldCwga2V5KSB7XG5cdCAgICAgIHZhciBoYXMg
PSBrZXkgaW4gdGFyZ2V0O1xuXHQgICAgICB2YXIgaXNBbGxvd2VkID0gYWxsb3dlZEdsb2JhbHMo
a2V5KSB8fCBrZXkuY2hhckF0KDApID09PSAnXyc7XG5cdCAgICAgIGlmICghaGFzICYmICFpc0Fs
bG93ZWQpIHtcblx0ICAgICAgICB3YXJuTm9uUHJlc2VudCh0YXJnZXQsIGtleSk7XG5cdCAgICAg
IH1cblx0ICAgICAgcmV0dXJuIGhhcyB8fCAhaXNBbGxvd2VkXG5cdCAgICB9XG5cdCAgfTtcblx0
XG5cdCAgdmFyIGdldEhhbmRsZXIgPSB7XG5cdCAgICBnZXQ6IGZ1bmN0aW9uIGdldCAodGFyZ2V0
LCBrZXkpIHtcblx0ICAgICAgaWYgKHR5cGVvZiBrZXkgPT09ICdzdHJpbmcnICYmICEoa2V5IGlu
IHRhcmdldCkpIHtcblx0ICAgICAgICB3YXJuTm9uUHJlc2VudCh0YXJnZXQsIGtleSk7XG5cdCAg
ICAgIH1cblx0ICAgICAgcmV0dXJuIHRhcmdldFtrZXldXG5cdCAgICB9XG5cdCAgfTtcblx0XG5c
dCAgaW5pdFByb3h5ID0gZnVuY3Rpb24gaW5pdFByb3h5ICh2bSkge1xuXHQgICAgaWYgKGhhc1By
b3h5KSB7XG5cdCAgICAgIC8vIGRldGVybWluZSB3aGljaCBwcm94eSBoYW5kbGVyIHRvIHVzZVxu
XHQgICAgICB2YXIgb3B0aW9ucyA9IHZtLiRvcHRpb25zO1xuXHQgICAgICB2YXIgaGFuZGxlcnMg
PSBvcHRpb25zLnJlbmRlciAmJiBvcHRpb25zLnJlbmRlci5fd2l0aFN0cmlwcGVkXG5cdCAgICAg
ICAgPyBnZXRIYW5kbGVyXG5cdCAgICAgICAgOiBoYXNIYW5kbGVyO1xuXHQgICAgICB2bS5fcmVu
ZGVyUHJveHkgPSBuZXcgUHJveHkodm0sIGhhbmRsZXJzKTtcblx0ICAgIH0gZWxzZSB7XG5cdCAg
ICAgIHZtLl9yZW5kZXJQcm94eSA9IHZtO1xuXHQgICAgfVxuXHQgIH07XG5cdH1cblx0XG5cdC8q
ICAqL1xuXHRcblx0XG5cdHZhciBxdWV1ZSA9IFtdO1xuXHR2YXIgaGFzJDEgPSB7fTtcblx0dmFy
IGNpcmN1bGFyID0ge307XG5cdHZhciB3YWl0aW5nID0gZmFsc2U7XG5cdHZhciBmbHVzaGluZyA9
IGZhbHNlO1xuXHR2YXIgaW5kZXggPSAwO1xuXHRcblx0LyoqXG5cdCAqIFJlc2V0IHRoZSBzY2hl
ZHVsZXIncyBzdGF0ZS5cblx0ICovXG5cdGZ1bmN0aW9uIHJlc2V0U2NoZWR1bGVyU3RhdGUgKCkg
e1xuXHQgIHF1ZXVlLmxlbmd0aCA9IDA7XG5cdCAgaGFzJDEgPSB7fTtcblx0ICBpZiAoZmFsc2Up
IHtcblx0ICAgIGNpcmN1bGFyID0ge307XG5cdCAgfVxuXHQgIHdhaXRpbmcgPSBmbHVzaGluZyA9
IGZhbHNlO1xuXHR9XG5cdFxuXHQvKipcblx0ICogRmx1c2ggYm90aCBxdWV1ZXMgYW5kIHJ1biB0
aGUgd2F0Y2hlcnMuXG5cdCAqL1xuXHRmdW5jdGlvbiBmbHVzaFNjaGVkdWxlclF1ZXVlICgpIHtc
blx0ICBmbHVzaGluZyA9IHRydWU7XG5cdFxuXHQgIC8vIFNvcnQgcXVldWUgYmVmb3JlIGZsdXNo
LlxuXHQgIC8vIFRoaXMgZW5zdXJlcyB0aGF0OlxuXHQgIC8vIDEuIENvbXBvbmVudHMgYXJlIHVw
ZGF0ZWQgZnJvbSBwYXJlbnQgdG8gY2hpbGQuIChiZWNhdXNlIHBhcmVudCBpcyBhbHdheXNcblx0
ICAvLyAgICBjcmVhdGVkIGJlZm9yZSB0aGUgY2hpbGQpXG5cdCAgLy8gMi4gQSBjb21wb25lbnQn
cyB1c2VyIHdhdGNoZXJzIGFyZSBydW4gYmVmb3JlIGl0cyByZW5kZXIgd2F0Y2hlciAoYmVjYXVz
ZVxuXHQgIC8vICAgIHVzZXIgd2F0Y2hlcnMgYXJlIGNyZWF0ZWQgYmVmb3JlIHRoZSByZW5kZXIg
d2F0Y2hlcilcblx0ICAvLyAzLiBJZiBhIGNvbXBvbmVudCBpcyBkZXN0cm95ZWQgZHVyaW5nIGEg
cGFyZW50IGNvbXBvbmVudCdzIHdhdGNoZXIgcnVuLFxuXHQgIC8vICAgIGl0cyB3YXRjaGVycyBj
YW4gYmUgc2tpcHBlZC5cblx0ICBxdWV1ZS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7IHJldHVybiBh
LmlkIC0gYi5pZDsgfSk7XG5cdFxuXHQgIC8vIGRvIG5vdCBjYWNoZSBsZW5ndGggYmVjYXVzZSBt
b3JlIHdhdGNoZXJzIG1pZ2h0IGJlIHB1c2hlZFxuXHQgIC8vIGFzIHdlIHJ1biBleGlzdGluZyB3
YXRjaGVyc1xuXHQgIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IHF1ZXVlLmxlbmd0aDsgaW5kZXgr
Kykge1xuXHQgICAgdmFyIHdhdGNoZXIgPSBxdWV1ZVtpbmRleF07XG5cdCAgICB2YXIgaWQgPSB3
YXRjaGVyLmlkO1xuXHQgICAgaGFzJDFbaWRdID0gbnVsbDtcblx0ICAgIHdhdGNoZXIucnVuKCk7
XG5cdCAgICAvLyBpbiBkZXYgYnVpbGQsIGNoZWNrIGFuZCBzdG9wIGNpcmN1bGFyIHVwZGF0ZXMu
XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgY2lyY3VsYXJbaWRdID0gKGNpcmN1bGFyW2lk
XSB8fCAwKSArIDE7XG5cdCAgICAgIGlmIChjaXJjdWxhcltpZF0gPiBjb25maWcuX21heFVwZGF0
ZUNvdW50KSB7XG5cdCAgICAgICAgd2Fybihcblx0ICAgICAgICAgICdZb3UgbWF5IGhhdmUgYW4g
aW5maW5pdGUgdXBkYXRlIGxvb3AgJyArIChcblx0ICAgICAgICAgICAgd2F0Y2hlci51c2VyXG5c
dCAgICAgICAgICAgICAgPyAoXCJpbiB3YXRjaGVyIHdpdGggZXhwcmVzc2lvbiBcXFwiXCIgKyAo
d2F0Y2hlci5leHByZXNzaW9uKSArIFwiXFxcIlwiKVxuXHQgICAgICAgICAgICAgIDogXCJpbiBh
IGNvbXBvbmVudCByZW5kZXIgZnVuY3Rpb24uXCJcblx0ICAgICAgICAgICksXG5cdCAgICAgICAg
ICB3YXRjaGVyLnZtXG5cdCAgICAgICAgKTtcblx0ICAgICAgICBicmVha1xuXHQgICAgICB9XG5c
dCAgICB9XG5cdCAgfVxuXHRcblx0ICAvLyBkZXZ0b29sIGhvb2tcblx0ICAvKiBpc3RhbmJ1bCBp
Z25vcmUgaWYgKi9cblx0ICBpZiAoZGV2dG9vbHMgJiYgY29uZmlnLmRldnRvb2xzKSB7XG5cdCAg
ICBkZXZ0b29scy5lbWl0KCdmbHVzaCcpO1xuXHQgIH1cblx0XG5cdCAgcmVzZXRTY2hlZHVsZXJT
dGF0ZSgpO1xuXHR9XG5cdFxuXHQvKipcblx0ICogUHVzaCBhIHdhdGNoZXIgaW50byB0aGUgd2F0
Y2hlciBxdWV1ZS5cblx0ICogSm9icyB3aXRoIGR1cGxpY2F0ZSBJRHMgd2lsbCBiZSBza2lwcGVk
IHVubGVzcyBpdCdzXG5cdCAqIHB1c2hlZCB3aGVuIHRoZSBxdWV1ZSBpcyBiZWluZyBmbHVzaGVk
LlxuXHQgKi9cblx0ZnVuY3Rpb24gcXVldWVXYXRjaGVyICh3YXRjaGVyKSB7XG5cdCAgdmFyIGlk
ID0gd2F0Y2hlci5pZDtcblx0ICBpZiAoaGFzJDFbaWRdID09IG51bGwpIHtcblx0ICAgIGhhcyQx
W2lkXSA9IHRydWU7XG5cdCAgICBpZiAoIWZsdXNoaW5nKSB7XG5cdCAgICAgIHF1ZXVlLnB1c2go
d2F0Y2hlcik7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICAvLyBpZiBhbHJlYWR5IGZsdXNoaW5n
LCBzcGxpY2UgdGhlIHdhdGNoZXIgYmFzZWQgb24gaXRzIGlkXG5cdCAgICAgIC8vIGlmIGFscmVh
ZHkgcGFzdCBpdHMgaWQsIGl0IHdpbGwgYmUgcnVuIG5leHQgaW1tZWRpYXRlbHkuXG5cdCAgICAg
IHZhciBpID0gcXVldWUubGVuZ3RoIC0gMTtcblx0ICAgICAgd2hpbGUgKGkgPj0gMCAmJiBxdWV1
ZVtpXS5pZCA+IHdhdGNoZXIuaWQpIHtcblx0ICAgICAgICBpLS07XG5cdCAgICAgIH1cblx0ICAg
ICAgcXVldWUuc3BsaWNlKE1hdGgubWF4KGksIGluZGV4KSArIDEsIDAsIHdhdGNoZXIpO1xuXHQg
ICAgfVxuXHQgICAgLy8gcXVldWUgdGhlIGZsdXNoXG5cdCAgICBpZiAoIXdhaXRpbmcpIHtcblx0
ICAgICAgd2FpdGluZyA9IHRydWU7XG5cdCAgICAgIG5leHRUaWNrKGZsdXNoU2NoZWR1bGVyUXVl
dWUpO1xuXHQgICAgfVxuXHQgIH1cblx0fVxuXHRcblx0LyogICovXG5cdFxuXHR2YXIgdWlkJDIg
PSAwO1xuXHRcblx0LyoqXG5cdCAqIEEgd2F0Y2hlciBwYXJzZXMgYW4gZXhwcmVzc2lvbiwgY29s
bGVjdHMgZGVwZW5kZW5jaWVzLFxuXHQgKiBhbmQgZmlyZXMgY2FsbGJhY2sgd2hlbiB0aGUgZXhw
cmVzc2lvbiB2YWx1ZSBjaGFuZ2VzLlxuXHQgKiBUaGlzIGlzIHVzZWQgZm9yIGJvdGggdGhlICR3
YXRjaCgpIGFwaSBhbmQgZGlyZWN0aXZlcy5cblx0ICovXG5cdHZhciBXYXRjaGVyID0gZnVuY3Rp
b24gV2F0Y2hlciAoXG5cdCAgdm0sXG5cdCAgZXhwT3JGbixcblx0ICBjYixcblx0ICBvcHRpb25z
XG5cdCkge1xuXHQgIGlmICggb3B0aW9ucyA9PT0gdm9pZCAwICkgb3B0aW9ucyA9IHt9O1xuXHRc
blx0ICB0aGlzLnZtID0gdm07XG5cdCAgdm0uX3dhdGNoZXJzLnB1c2godGhpcyk7XG5cdCAgLy8g
b3B0aW9uc1xuXHQgIHRoaXMuZGVlcCA9ICEhb3B0aW9ucy5kZWVwO1xuXHQgIHRoaXMudXNlciA9
ICEhb3B0aW9ucy51c2VyO1xuXHQgIHRoaXMubGF6eSA9ICEhb3B0aW9ucy5sYXp5O1xuXHQgIHRo
aXMuc3luYyA9ICEhb3B0aW9ucy5zeW5jO1xuXHQgIHRoaXMuZXhwcmVzc2lvbiA9IGV4cE9yRm4u
dG9TdHJpbmcoKTtcblx0ICB0aGlzLmNiID0gY2I7XG5cdCAgdGhpcy5pZCA9ICsrdWlkJDI7IC8v
IHVpZCBmb3IgYmF0Y2hpbmdcblx0ICB0aGlzLmFjdGl2ZSA9IHRydWU7XG5cdCAgdGhpcy5kaXJ0
eSA9IHRoaXMubGF6eTsgLy8gZm9yIGxhenkgd2F0Y2hlcnNcblx0ICB0aGlzLmRlcHMgPSBbXTtc
blx0ICB0aGlzLm5ld0RlcHMgPSBbXTtcblx0ICB0aGlzLmRlcElkcyA9IG5ldyBfU2V0KCk7XG5c
dCAgdGhpcy5uZXdEZXBJZHMgPSBuZXcgX1NldCgpO1xuXHQgIC8vIHBhcnNlIGV4cHJlc3Npb24g
Zm9yIGdldHRlclxuXHQgIGlmICh0eXBlb2YgZXhwT3JGbiA9PT0gJ2Z1bmN0aW9uJykge1xuXHQg
ICAgdGhpcy5nZXR0ZXIgPSBleHBPckZuO1xuXHQgIH0gZWxzZSB7XG5cdCAgICB0aGlzLmdldHRl
ciA9IHBhcnNlUGF0aChleHBPckZuKTtcblx0ICAgIGlmICghdGhpcy5nZXR0ZXIpIHtcblx0ICAg
ICAgdGhpcy5nZXR0ZXIgPSBmdW5jdGlvbiAoKSB7fTtcblx0ICAgICAgKFwicHJvZHVjdGlvblwi
KSAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4oXG5cdCAgICAgICAgXCJGYWlsZWQgd2F0Y2hpbmcg
cGF0aDogXFxcIlwiICsgZXhwT3JGbiArIFwiXFxcIiBcIiArXG5cdCAgICAgICAgJ1dhdGNoZXIg
b25seSBhY2NlcHRzIHNpbXBsZSBkb3QtZGVsaW1pdGVkIHBhdGhzLiAnICtcblx0ICAgICAgICAn
Rm9yIGZ1bGwgY29udHJvbCwgdXNlIGEgZnVuY3Rpb24gaW5zdGVhZC4nLFxuXHQgICAgICAgIHZt
XG5cdCAgICAgICk7XG5cdCAgICB9XG5cdCAgfVxuXHQgIHRoaXMudmFsdWUgPSB0aGlzLmxhenlc
blx0ICAgID8gdW5kZWZpbmVkXG5cdCAgICA6IHRoaXMuZ2V0KCk7XG5cdH07XG5cdFxuXHQvKipc
blx0ICogRXZhbHVhdGUgdGhlIGdldHRlciwgYW5kIHJlLWNvbGxlY3QgZGVwZW5kZW5jaWVzLlxu
XHQgKi9cblx0V2F0Y2hlci5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gZ2V0ICgpIHtcblx0ICBw
dXNoVGFyZ2V0KHRoaXMpO1xuXHQgIHZhciB2YWx1ZSA9IHRoaXMuZ2V0dGVyLmNhbGwodGhpcy52
bSwgdGhpcy52bSk7XG5cdCAgLy8gXCJ0b3VjaFwiIGV2ZXJ5IHByb3BlcnR5IHNvIHRoZXkgYXJl
IGFsbCB0cmFja2VkIGFzXG5cdCAgLy8gZGVwZW5kZW5jaWVzIGZvciBkZWVwIHdhdGNoaW5nXG5c
dCAgaWYgKHRoaXMuZGVlcCkge1xuXHQgICAgdHJhdmVyc2UodmFsdWUpO1xuXHQgIH1cblx0ICBw
b3BUYXJnZXQoKTtcblx0ICB0aGlzLmNsZWFudXBEZXBzKCk7XG5cdCAgcmV0dXJuIHZhbHVlXG5c
dH07XG5cdFxuXHQvKipcblx0ICogQWRkIGEgZGVwZW5kZW5jeSB0byB0aGlzIGRpcmVjdGl2ZS5c
blx0ICovXG5cdFdhdGNoZXIucHJvdG90eXBlLmFkZERlcCA9IGZ1bmN0aW9uIGFkZERlcCAoZGVw
KSB7XG5cdCAgdmFyIGlkID0gZGVwLmlkO1xuXHQgIGlmICghdGhpcy5uZXdEZXBJZHMuaGFzKGlk
KSkge1xuXHQgICAgdGhpcy5uZXdEZXBJZHMuYWRkKGlkKTtcblx0ICAgIHRoaXMubmV3RGVwcy5w
dXNoKGRlcCk7XG5cdCAgICBpZiAoIXRoaXMuZGVwSWRzLmhhcyhpZCkpIHtcblx0ICAgICAgZGVw
LmFkZFN1Yih0aGlzKTtcblx0ICAgIH1cblx0ICB9XG5cdH07XG5cdFxuXHQvKipcblx0ICogQ2xl
YW4gdXAgZm9yIGRlcGVuZGVuY3kgY29sbGVjdGlvbi5cblx0ICovXG5cdFdhdGNoZXIucHJvdG90
eXBlLmNsZWFudXBEZXBzID0gZnVuY3Rpb24gY2xlYW51cERlcHMgKCkge1xuXHQgICAgdmFyIHRo
aXMkMSA9IHRoaXM7XG5cdFxuXHQgIHZhciBpID0gdGhpcy5kZXBzLmxlbmd0aDtcblx0ICB3aGls
ZSAoaS0tKSB7XG5cdCAgICB2YXIgZGVwID0gdGhpcyQxLmRlcHNbaV07XG5cdCAgICBpZiAoIXRo
aXMkMS5uZXdEZXBJZHMuaGFzKGRlcC5pZCkpIHtcblx0ICAgICAgZGVwLnJlbW92ZVN1Yih0aGlz
JDEpO1xuXHQgICAgfVxuXHQgIH1cblx0ICB2YXIgdG1wID0gdGhpcy5kZXBJZHM7XG5cdCAgdGhp
cy5kZXBJZHMgPSB0aGlzLm5ld0RlcElkcztcblx0ICB0aGlzLm5ld0RlcElkcyA9IHRtcDtcblx0
ICB0aGlzLm5ld0RlcElkcy5jbGVhcigpO1xuXHQgIHRtcCA9IHRoaXMuZGVwcztcblx0ICB0aGlz
LmRlcHMgPSB0aGlzLm5ld0RlcHM7XG5cdCAgdGhpcy5uZXdEZXBzID0gdG1wO1xuXHQgIHRoaXMu
bmV3RGVwcy5sZW5ndGggPSAwO1xuXHR9O1xuXHRcblx0LyoqXG5cdCAqIFN1YnNjcmliZXIgaW50
ZXJmYWNlLlxuXHQgKiBXaWxsIGJlIGNhbGxlZCB3aGVuIGEgZGVwZW5kZW5jeSBjaGFuZ2VzLlxu
XHQgKi9cblx0V2F0Y2hlci5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gdXBkYXRlICgpIHtc
blx0ICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuXHQgIGlmICh0aGlzLmxhenkpIHtcblx0
ICAgIHRoaXMuZGlydHkgPSB0cnVlO1xuXHQgIH0gZWxzZSBpZiAodGhpcy5zeW5jKSB7XG5cdCAg
ICB0aGlzLnJ1bigpO1xuXHQgIH0gZWxzZSB7XG5cdCAgICBxdWV1ZVdhdGNoZXIodGhpcyk7XG5c
dCAgfVxuXHR9O1xuXHRcblx0LyoqXG5cdCAqIFNjaGVkdWxlciBqb2IgaW50ZXJmYWNlLlxuXHQg
KiBXaWxsIGJlIGNhbGxlZCBieSB0aGUgc2NoZWR1bGVyLlxuXHQgKi9cblx0V2F0Y2hlci5wcm90
b3R5cGUucnVuID0gZnVuY3Rpb24gcnVuICgpIHtcblx0ICBpZiAodGhpcy5hY3RpdmUpIHtcblx0
ICAgIHZhciB2YWx1ZSA9IHRoaXMuZ2V0KCk7XG5cdCAgICAgIGlmIChcblx0ICAgICAgICB2YWx1
ZSAhPT0gdGhpcy52YWx1ZSB8fFxuXHQgICAgICAvLyBEZWVwIHdhdGNoZXJzIGFuZCB3YXRjaGVy
cyBvbiBPYmplY3QvQXJyYXlzIHNob3VsZCBmaXJlIGV2ZW5cblx0ICAgICAgLy8gd2hlbiB0aGUg
dmFsdWUgaXMgdGhlIHNhbWUsIGJlY2F1c2UgdGhlIHZhbHVlIG1heVxuXHQgICAgICAvLyBoYXZl
IG11dGF0ZWQuXG5cdCAgICAgIGlzT2JqZWN0KHZhbHVlKSB8fFxuXHQgICAgICB0aGlzLmRlZXBc
blx0ICAgICkge1xuXHQgICAgICAvLyBzZXQgbmV3IHZhbHVlXG5cdCAgICAgIHZhciBvbGRWYWx1
ZSA9IHRoaXMudmFsdWU7XG5cdCAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcblx0ICAgICAgaWYg
KHRoaXMudXNlcikge1xuXHQgICAgICAgIHRyeSB7XG5cdCAgICAgICAgICB0aGlzLmNiLmNhbGwo
dGhpcy52bSwgdmFsdWUsIG9sZFZhbHVlKTtcblx0ICAgICAgICB9IGNhdGNoIChlKSB7XG5cdCAg
ICAgICAgICAoXCJwcm9kdWN0aW9uXCIpICE9PSAncHJvZHVjdGlvbicgJiYgd2Fybihcblx0ICAg
ICAgICAgICAgKFwiRXJyb3IgaW4gd2F0Y2hlciBcXFwiXCIgKyAodGhpcy5leHByZXNzaW9uKSAr
IFwiXFxcIlwiKSxcblx0ICAgICAgICAgICAgdGhpcy52bVxuXHQgICAgICAgICAgKTtcblx0ICAg
ICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG5cdCAgICAgICAgICBpZiAoY29uZmln
LmVycm9ySGFuZGxlcikge1xuXHQgICAgICAgICAgICBjb25maWcuZXJyb3JIYW5kbGVyLmNhbGwo
bnVsbCwgZSwgdGhpcy52bSk7XG5cdCAgICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgICB0
aHJvdyBlXG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICB9IGVsc2Uge1xuXHQg
ICAgICAgIHRoaXMuY2IuY2FsbCh0aGlzLnZtLCB2YWx1ZSwgb2xkVmFsdWUpO1xuXHQgICAgICB9
XG5cdCAgICB9XG5cdCAgfVxuXHR9O1xuXHRcblx0LyoqXG5cdCAqIEV2YWx1YXRlIHRoZSB2YWx1
ZSBvZiB0aGUgd2F0Y2hlci5cblx0ICogVGhpcyBvbmx5IGdldHMgY2FsbGVkIGZvciBsYXp5IHdh
dGNoZXJzLlxuXHQgKi9cblx0V2F0Y2hlci5wcm90b3R5cGUuZXZhbHVhdGUgPSBmdW5jdGlvbiBl
dmFsdWF0ZSAoKSB7XG5cdCAgdGhpcy52YWx1ZSA9IHRoaXMuZ2V0KCk7XG5cdCAgdGhpcy5kaXJ0
eSA9IGZhbHNlO1xuXHR9O1xuXHRcblx0LyoqXG5cdCAqIERlcGVuZCBvbiBhbGwgZGVwcyBjb2xs
ZWN0ZWQgYnkgdGhpcyB3YXRjaGVyLlxuXHQgKi9cblx0V2F0Y2hlci5wcm90b3R5cGUuZGVwZW5k
ID0gZnVuY3Rpb24gZGVwZW5kICgpIHtcblx0ICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXHRcblx0
ICB2YXIgaSA9IHRoaXMuZGVwcy5sZW5ndGg7XG5cdCAgd2hpbGUgKGktLSkge1xuXHQgICAgdGhp
cyQxLmRlcHNbaV0uZGVwZW5kKCk7XG5cdCAgfVxuXHR9O1xuXHRcblx0LyoqXG5cdCAqIFJlbW92
ZSBzZWxmIGZyb20gYWxsIGRlcGVuZGVuY2llcycgc3Vic2NyaWJlciBsaXN0LlxuXHQgKi9cblx0
V2F0Y2hlci5wcm90b3R5cGUudGVhcmRvd24gPSBmdW5jdGlvbiB0ZWFyZG93biAoKSB7XG5cdCAg
ICB2YXIgdGhpcyQxID0gdGhpcztcblx0XG5cdCAgaWYgKHRoaXMuYWN0aXZlKSB7XG5cdCAgICAv
LyByZW1vdmUgc2VsZiBmcm9tIHZtJ3Mgd2F0Y2hlciBsaXN0XG5cdCAgICAvLyB0aGlzIGlzIGEg
c29tZXdoYXQgZXhwZW5zaXZlIG9wZXJhdGlvbiBzbyB3ZSBza2lwIGl0XG5cdCAgICAvLyBpZiB0
aGUgdm0gaXMgYmVpbmcgZGVzdHJveWVkIG9yIGlzIHBlcmZvcm1pbmcgYSB2LWZvclxuXHQgICAg
Ly8gcmUtcmVuZGVyICh0aGUgd2F0Y2hlciBsaXN0IGlzIHRoZW4gZmlsdGVyZWQgYnkgdi1mb3Ip
LlxuXHQgICAgaWYgKCF0aGlzLnZtLl9pc0JlaW5nRGVzdHJveWVkICYmICF0aGlzLnZtLl92Rm9y
UmVtb3ZpbmcpIHtcblx0ICAgICAgcmVtb3ZlJDEodGhpcy52bS5fd2F0Y2hlcnMsIHRoaXMpO1xu
XHQgICAgfVxuXHQgICAgdmFyIGkgPSB0aGlzLmRlcHMubGVuZ3RoO1xuXHQgICAgd2hpbGUgKGkt
LSkge1xuXHQgICAgICB0aGlzJDEuZGVwc1tpXS5yZW1vdmVTdWIodGhpcyQxKTtcblx0ICAgIH1c
blx0ICAgIHRoaXMuYWN0aXZlID0gZmFsc2U7XG5cdCAgfVxuXHR9O1xuXHRcblx0LyoqXG5cdCAq
IFJlY3Vyc2l2ZWx5IHRyYXZlcnNlIGFuIG9iamVjdCB0byBldm9rZSBhbGwgY29udmVydGVkXG5c
dCAqIGdldHRlcnMsIHNvIHRoYXQgZXZlcnkgbmVzdGVkIHByb3BlcnR5IGluc2lkZSB0aGUgb2Jq
ZWN0XG5cdCAqIGlzIGNvbGxlY3RlZCBhcyBhIFwiZGVlcFwiIGRlcGVuZGVuY3kuXG5cdCAqL1xu
XHR2YXIgc2Vlbk9iamVjdHMgPSBuZXcgX1NldCgpO1xuXHRmdW5jdGlvbiB0cmF2ZXJzZSAodmFs
KSB7XG5cdCAgc2Vlbk9iamVjdHMuY2xlYXIoKTtcblx0ICBfdHJhdmVyc2UodmFsLCBzZWVuT2Jq
ZWN0cyk7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIF90cmF2ZXJzZSAodmFsLCBzZWVuKSB7XG5cdCAg
dmFyIGksIGtleXM7XG5cdCAgdmFyIGlzQSA9IEFycmF5LmlzQXJyYXkodmFsKTtcblx0ICBpZiAo
KCFpc0EgJiYgIWlzT2JqZWN0KHZhbCkpIHx8ICFPYmplY3QuaXNFeHRlbnNpYmxlKHZhbCkpIHtc
blx0ICAgIHJldHVyblxuXHQgIH1cblx0ICBpZiAodmFsLl9fb2JfXykge1xuXHQgICAgdmFyIGRl
cElkID0gdmFsLl9fb2JfXy5kZXAuaWQ7XG5cdCAgICBpZiAoc2Vlbi5oYXMoZGVwSWQpKSB7XG5c
dCAgICAgIHJldHVyblxuXHQgICAgfVxuXHQgICAgc2Vlbi5hZGQoZGVwSWQpO1xuXHQgIH1cblx0
ICBpZiAoaXNBKSB7XG5cdCAgICBpID0gdmFsLmxlbmd0aDtcblx0ICAgIHdoaWxlIChpLS0pIHsg
X3RyYXZlcnNlKHZhbFtpXSwgc2Vlbik7IH1cblx0ICB9IGVsc2Uge1xuXHQgICAga2V5cyA9IE9i
amVjdC5rZXlzKHZhbCk7XG5cdCAgICBpID0ga2V5cy5sZW5ndGg7XG5cdCAgICB3aGlsZSAoaS0t
KSB7IF90cmF2ZXJzZSh2YWxba2V5c1tpXV0sIHNlZW4pOyB9XG5cdCAgfVxuXHR9XG5cdFxuXHQv
KiAgKi9cblx0XG5cdGZ1bmN0aW9uIGluaXRTdGF0ZSAodm0pIHtcblx0ICB2bS5fd2F0Y2hlcnMg
PSBbXTtcblx0ICBpbml0UHJvcHModm0pO1xuXHQgIGluaXREYXRhKHZtKTtcblx0ICBpbml0Q29t
cHV0ZWQodm0pO1xuXHQgIGluaXRNZXRob2RzKHZtKTtcblx0ICBpbml0V2F0Y2godm0pO1xuXHR9
XG5cdFxuXHR2YXIgaXNSZXNlcnZlZFByb3AgPSBtYWtlTWFwKCdrZXkscmVmLHNsb3QnKTtcblx0
XG5cdGZ1bmN0aW9uIGluaXRQcm9wcyAodm0pIHtcblx0ICB2YXIgcHJvcHMgPSB2bS4kb3B0aW9u
cy5wcm9wcztcblx0ICBpZiAocHJvcHMpIHtcblx0ICAgIHZhciBwcm9wc0RhdGEgPSB2bS4kb3B0
aW9ucy5wcm9wc0RhdGEgfHwge307XG5cdCAgICB2YXIga2V5cyA9IHZtLiRvcHRpb25zLl9wcm9w
S2V5cyA9IE9iamVjdC5rZXlzKHByb3BzKTtcblx0ICAgIHZhciBpc1Jvb3QgPSAhdm0uJHBhcmVu
dDtcblx0ICAgIC8vIHJvb3QgaW5zdGFuY2UgcHJvcHMgc2hvdWxkIGJlIGNvbnZlcnRlZFxuXHQg
ICAgb2JzZXJ2ZXJTdGF0ZS5zaG91bGRDb252ZXJ0ID0gaXNSb290O1xuXHQgICAgdmFyIGxvb3Ag
PSBmdW5jdGlvbiAoIGkgKSB7XG5cdCAgICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuXHQgICAgICAv
KiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuXHQgICAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAg
ICBpZiAoaXNSZXNlcnZlZFByb3Aoa2V5KSkge1xuXHQgICAgICAgICAgd2Fybihcblx0ICAgICAg
ICAgICAgKFwiXFxcIlwiICsga2V5ICsgXCJcXFwiIGlzIGEgcmVzZXJ2ZWQgYXR0cmlidXRlIGFu
ZCBjYW5ub3QgYmUgdXNlZCBhcyBjb21wb25lbnQgcHJvcC5cIiksXG5cdCAgICAgICAgICAgIHZt
XG5cdCAgICAgICAgICApO1xuXHQgICAgICAgIH1cblx0ICAgICAgICBkZWZpbmVSZWFjdGl2ZSQk
MSh2bSwga2V5LCB2YWxpZGF0ZVByb3Aoa2V5LCBwcm9wcywgcHJvcHNEYXRhLCB2bSksIGZ1bmN0
aW9uICgpIHtcblx0ICAgICAgICAgIGlmICh2bS4kcGFyZW50ICYmICFvYnNlcnZlclN0YXRlLmlz
U2V0dGluZ1Byb3BzKSB7XG5cdCAgICAgICAgICAgIHdhcm4oXG5cdCAgICAgICAgICAgICAgXCJB
dm9pZCBtdXRhdGluZyBhIHByb3AgZGlyZWN0bHkgc2luY2UgdGhlIHZhbHVlIHdpbGwgYmUgXCIg
K1xuXHQgICAgICAgICAgICAgIFwib3ZlcndyaXR0ZW4gd2hlbmV2ZXIgdGhlIHBhcmVudCBjb21w
b25lbnQgcmUtcmVuZGVycy4gXCIgK1xuXHQgICAgICAgICAgICAgIFwiSW5zdGVhZCwgdXNlIGEg
ZGF0YSBvciBjb21wdXRlZCBwcm9wZXJ0eSBiYXNlZCBvbiB0aGUgcHJvcCdzIFwiICtcblx0ICAg
ICAgICAgICAgICBcInZhbHVlLiBQcm9wIGJlaW5nIG11dGF0ZWQ6IFxcXCJcIiArIGtleSArIFwi
XFxcIlwiLFxuXHQgICAgICAgICAgICAgIHZtXG5cdCAgICAgICAgICAgICk7XG5cdCAgICAgICAg
ICB9XG5cdCAgICAgICAgfSk7XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgZGVmaW5lUmVh
Y3RpdmUkJDEodm0sIGtleSwgdmFsaWRhdGVQcm9wKGtleSwgcHJvcHMsIHByb3BzRGF0YSwgdm0p
KTtcblx0ICAgICAgfVxuXHQgICAgfTtcblx0XG5cdCAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtl
eXMubGVuZ3RoOyBpKyspIGxvb3AoIGkgKTtcblx0ICAgIG9ic2VydmVyU3RhdGUuc2hvdWxkQ29u
dmVydCA9IHRydWU7XG5cdCAgfVxuXHR9XG5cdFxuXHRmdW5jdGlvbiBpbml0RGF0YSAodm0pIHtc
blx0ICB2YXIgZGF0YSA9IHZtLiRvcHRpb25zLmRhdGE7XG5cdCAgZGF0YSA9IHZtLl9kYXRhID0g
dHlwZW9mIGRhdGEgPT09ICdmdW5jdGlvbidcblx0ICAgID8gZGF0YS5jYWxsKHZtKVxuXHQgICAg
OiBkYXRhIHx8IHt9O1xuXHQgIGlmICghaXNQbGFpbk9iamVjdChkYXRhKSkge1xuXHQgICAgZGF0
YSA9IHt9O1xuXHQgICAgKFwicHJvZHVjdGlvblwiKSAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4o
XG5cdCAgICAgICdkYXRhIGZ1bmN0aW9ucyBzaG91bGQgcmV0dXJuIGFuIG9iamVjdC4nLFxuXHQg
ICAgICB2bVxuXHQgICAgKTtcblx0ICB9XG5cdCAgLy8gcHJveHkgZGF0YSBvbiBpbnN0YW5jZVxu
XHQgIHZhciBrZXlzID0gT2JqZWN0LmtleXMoZGF0YSk7XG5cdCAgdmFyIHByb3BzID0gdm0uJG9w
dGlvbnMucHJvcHM7XG5cdCAgdmFyIGkgPSBrZXlzLmxlbmd0aDtcblx0ICB3aGlsZSAoaS0tKSB7
XG5cdCAgICBpZiAocHJvcHMgJiYgaGFzT3duKHByb3BzLCBrZXlzW2ldKSkge1xuXHQgICAgICAo
XCJwcm9kdWN0aW9uXCIpICE9PSAncHJvZHVjdGlvbicgJiYgd2Fybihcblx0ICAgICAgICBcIlRo
ZSBkYXRhIHByb3BlcnR5IFxcXCJcIiArIChrZXlzW2ldKSArIFwiXFxcIiBpcyBhbHJlYWR5IGRl
Y2xhcmVkIGFzIGEgcHJvcC4gXCIgK1xuXHQgICAgICAgIFwiVXNlIHByb3AgZGVmYXVsdCB2YWx1
ZSBpbnN0ZWFkLlwiLFxuXHQgICAgICAgIHZtXG5cdCAgICAgICk7XG5cdCAgICB9IGVsc2Uge1xu
XHQgICAgICBwcm94eSh2bSwga2V5c1tpXSk7XG5cdCAgICB9XG5cdCAgfVxuXHQgIC8vIG9ic2Vy
dmUgZGF0YVxuXHQgIG9ic2VydmUoZGF0YSk7XG5cdCAgZGF0YS5fX29iX18gJiYgZGF0YS5fX29i
X18udm1Db3VudCsrO1xuXHR9XG5cdFxuXHR2YXIgY29tcHV0ZWRTaGFyZWREZWZpbml0aW9uID0g
e1xuXHQgIGVudW1lcmFibGU6IHRydWUsXG5cdCAgY29uZmlndXJhYmxlOiB0cnVlLFxuXHQgIGdl
dDogbm9vcCxcblx0ICBzZXQ6IG5vb3Bcblx0fTtcblx0XG5cdGZ1bmN0aW9uIGluaXRDb21wdXRl
ZCAodm0pIHtcblx0ICB2YXIgY29tcHV0ZWQgPSB2bS4kb3B0aW9ucy5jb21wdXRlZDtcblx0ICBp
ZiAoY29tcHV0ZWQpIHtcblx0ICAgIGZvciAodmFyIGtleSBpbiBjb21wdXRlZCkge1xuXHQgICAg
ICB2YXIgdXNlckRlZiA9IGNvbXB1dGVkW2tleV07XG5cdCAgICAgIGlmICh0eXBlb2YgdXNlckRl
ZiA9PT0gJ2Z1bmN0aW9uJykge1xuXHQgICAgICAgIGNvbXB1dGVkU2hhcmVkRGVmaW5pdGlvbi5n
ZXQgPSBtYWtlQ29tcHV0ZWRHZXR0ZXIodXNlckRlZiwgdm0pO1xuXHQgICAgICAgIGNvbXB1dGVk
U2hhcmVkRGVmaW5pdGlvbi5zZXQgPSBub29wO1xuXHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAg
IGNvbXB1dGVkU2hhcmVkRGVmaW5pdGlvbi5nZXQgPSB1c2VyRGVmLmdldFxuXHQgICAgICAgICAg
PyB1c2VyRGVmLmNhY2hlICE9PSBmYWxzZVxuXHQgICAgICAgICAgICA/IG1ha2VDb21wdXRlZEdl
dHRlcih1c2VyRGVmLmdldCwgdm0pXG5cdCAgICAgICAgICAgIDogYmluZCQxKHVzZXJEZWYuZ2V0
LCB2bSlcblx0ICAgICAgICAgIDogbm9vcDtcblx0ICAgICAgICBjb21wdXRlZFNoYXJlZERlZmlu
aXRpb24uc2V0ID0gdXNlckRlZi5zZXRcblx0ICAgICAgICAgID8gYmluZCQxKHVzZXJEZWYuc2V0
LCB2bSlcblx0ICAgICAgICAgIDogbm9vcDtcblx0ICAgICAgfVxuXHQgICAgICBPYmplY3QuZGVm
aW5lUHJvcGVydHkodm0sIGtleSwgY29tcHV0ZWRTaGFyZWREZWZpbml0aW9uKTtcblx0ICAgIH1c
blx0ICB9XG5cdH1cblx0XG5cdGZ1bmN0aW9uIG1ha2VDb21wdXRlZEdldHRlciAoZ2V0dGVyLCBv
d25lcikge1xuXHQgIHZhciB3YXRjaGVyID0gbmV3IFdhdGNoZXIob3duZXIsIGdldHRlciwgbm9v
cCwge1xuXHQgICAgbGF6eTogdHJ1ZVxuXHQgIH0pO1xuXHQgIHJldHVybiBmdW5jdGlvbiBjb21w
dXRlZEdldHRlciAoKSB7XG5cdCAgICBpZiAod2F0Y2hlci5kaXJ0eSkge1xuXHQgICAgICB3YXRj
aGVyLmV2YWx1YXRlKCk7XG5cdCAgICB9XG5cdCAgICBpZiAoRGVwLnRhcmdldCkge1xuXHQgICAg
ICB3YXRjaGVyLmRlcGVuZCgpO1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIHdhdGNoZXIudmFsdWVc
blx0ICB9XG5cdH1cblx0XG5cdGZ1bmN0aW9uIGluaXRNZXRob2RzICh2bSkge1xuXHQgIHZhciBt
ZXRob2RzID0gdm0uJG9wdGlvbnMubWV0aG9kcztcblx0ICBpZiAobWV0aG9kcykge1xuXHQgICAg
Zm9yICh2YXIga2V5IGluIG1ldGhvZHMpIHtcblx0ICAgICAgdm1ba2V5XSA9IG1ldGhvZHNba2V5
XSA9PSBudWxsID8gbm9vcCA6IGJpbmQkMShtZXRob2RzW2tleV0sIHZtKTtcblx0ICAgICAgaWYg
KGZhbHNlKSB7XG5cdCAgICAgICAgd2Fybihcblx0ICAgICAgICAgIFwibWV0aG9kIFxcXCJcIiAr
IGtleSArIFwiXFxcIiBoYXMgYW4gdW5kZWZpbmVkIHZhbHVlIGluIHRoZSBjb21wb25lbnQgZGVm
aW5pdGlvbi4gXCIgK1xuXHQgICAgICAgICAgXCJEaWQgeW91IHJlZmVyZW5jZSB0aGUgZnVuY3Rp
b24gY29ycmVjdGx5P1wiLFxuXHQgICAgICAgICAgdm1cblx0ICAgICAgICApO1xuXHQgICAgICB9
XG5cdCAgICB9XG5cdCAgfVxuXHR9XG5cdFxuXHRmdW5jdGlvbiBpbml0V2F0Y2ggKHZtKSB7XG5c
dCAgdmFyIHdhdGNoID0gdm0uJG9wdGlvbnMud2F0Y2g7XG5cdCAgaWYgKHdhdGNoKSB7XG5cdCAg
ICBmb3IgKHZhciBrZXkgaW4gd2F0Y2gpIHtcblx0ICAgICAgdmFyIGhhbmRsZXIgPSB3YXRjaFtr
ZXldO1xuXHQgICAgICBpZiAoQXJyYXkuaXNBcnJheShoYW5kbGVyKSkge1xuXHQgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgaGFuZGxlci5sZW5ndGg7IGkrKykge1xuXHQgICAgICAgICAgY3Jl
YXRlV2F0Y2hlcih2bSwga2V5LCBoYW5kbGVyW2ldKTtcblx0ICAgICAgICB9XG5cdCAgICAgIH0g
ZWxzZSB7XG5cdCAgICAgICAgY3JlYXRlV2F0Y2hlcih2bSwga2V5LCBoYW5kbGVyKTtcblx0ICAg
ICAgfVxuXHQgICAgfVxuXHQgIH1cblx0fVxuXHRcblx0ZnVuY3Rpb24gY3JlYXRlV2F0Y2hlciAo
dm0sIGtleSwgaGFuZGxlcikge1xuXHQgIHZhciBvcHRpb25zO1xuXHQgIGlmIChpc1BsYWluT2Jq
ZWN0KGhhbmRsZXIpKSB7XG5cdCAgICBvcHRpb25zID0gaGFuZGxlcjtcblx0ICAgIGhhbmRsZXIg
PSBoYW5kbGVyLmhhbmRsZXI7XG5cdCAgfVxuXHQgIGlmICh0eXBlb2YgaGFuZGxlciA9PT0gJ3N0
cmluZycpIHtcblx0ICAgIGhhbmRsZXIgPSB2bVtoYW5kbGVyXTtcblx0ICB9XG5cdCAgdm0uJHdh
dGNoKGtleSwgaGFuZGxlciwgb3B0aW9ucyk7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIHN0YXRlTWl4
aW4gKFZ1ZSkge1xuXHQgIC8vIGZsb3cgc29tZWhvdyBoYXMgcHJvYmxlbXMgd2l0aCBkaXJlY3Rs
eSBkZWNsYXJlZCBkZWZpbml0aW9uIG9iamVjdFxuXHQgIC8vIHdoZW4gdXNpbmcgT2JqZWN0LmRl
ZmluZVByb3BlcnR5LCBzbyB3ZSBoYXZlIHRvIHByb2NlZHVyYWxseSBidWlsZCB1cFxuXHQgIC8v
IHRoZSBvYmplY3QgaGVyZS5cblx0ICB2YXIgZGF0YURlZiA9IHt9O1xuXHQgIGRhdGFEZWYuZ2V0
ID0gZnVuY3Rpb24gKCkge1xuXHQgICAgcmV0dXJuIHRoaXMuX2RhdGFcblx0ICB9O1xuXHQgIGlm
IChmYWxzZSkge1xuXHQgICAgZGF0YURlZi5zZXQgPSBmdW5jdGlvbiAobmV3RGF0YSkge1xuXHQg
ICAgICB3YXJuKFxuXHQgICAgICAgICdBdm9pZCByZXBsYWNpbmcgaW5zdGFuY2Ugcm9vdCAkZGF0
YS4gJyArXG5cdCAgICAgICAgJ1VzZSBuZXN0ZWQgZGF0YSBwcm9wZXJ0aWVzIGluc3RlYWQuJyxc
blx0ICAgICAgICB0aGlzXG5cdCAgICAgICk7XG5cdCAgICB9O1xuXHQgIH1cblx0ICBPYmplY3Qu
ZGVmaW5lUHJvcGVydHkoVnVlLnByb3RvdHlwZSwgJyRkYXRhJywgZGF0YURlZik7XG5cdFxuXHQg
IFZ1ZS5wcm90b3R5cGUuJHNldCA9IHNldDtcblx0ICBWdWUucHJvdG90eXBlLiRkZWxldGUgPSBk
ZWw7XG5cdFxuXHQgIFZ1ZS5wcm90b3R5cGUuJHdhdGNoID0gZnVuY3Rpb24gKFxuXHQgICAgZXhw
T3JGbixcblx0ICAgIGNiLFxuXHQgICAgb3B0aW9uc1xuXHQgICkge1xuXHQgICAgdmFyIHZtID0g
dGhpcztcblx0ICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXHQgICAgb3B0aW9ucy51c2Vy
ID0gdHJ1ZTtcblx0ICAgIHZhciB3YXRjaGVyID0gbmV3IFdhdGNoZXIodm0sIGV4cE9yRm4sIGNi
LCBvcHRpb25zKTtcblx0ICAgIGlmIChvcHRpb25zLmltbWVkaWF0ZSkge1xuXHQgICAgICBjYi5j
YWxsKHZtLCB3YXRjaGVyLnZhbHVlKTtcblx0ICAgIH1cblx0ICAgIHJldHVybiBmdW5jdGlvbiB1
bndhdGNoRm4gKCkge1xuXHQgICAgICB3YXRjaGVyLnRlYXJkb3duKCk7XG5cdCAgICB9XG5cdCAg
fTtcblx0fVxuXHRcblx0ZnVuY3Rpb24gcHJveHkgKHZtLCBrZXkpIHtcblx0ICBpZiAoIWlzUmVz
ZXJ2ZWQoa2V5KSkge1xuXHQgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHZtLCBrZXksIHtcblx0
ICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuXHQgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuXHQg
ICAgICBnZXQ6IGZ1bmN0aW9uIHByb3h5R2V0dGVyICgpIHtcblx0ICAgICAgICByZXR1cm4gdm0u
X2RhdGFba2V5XVxuXHQgICAgICB9LFxuXHQgICAgICBzZXQ6IGZ1bmN0aW9uIHByb3h5U2V0dGVy
ICh2YWwpIHtcblx0ICAgICAgICB2bS5fZGF0YVtrZXldID0gdmFsO1xuXHQgICAgICB9XG5cdCAg
ICB9KTtcblx0ICB9XG5cdH1cblx0XG5cdC8qICAqL1xuXHRcblx0dmFyIFZOb2RlID0gZnVuY3Rp
b24gVk5vZGUgKFxuXHQgIHRhZyxcblx0ICBkYXRhLFxuXHQgIGNoaWxkcmVuLFxuXHQgIHRleHQs
XG5cdCAgZWxtLFxuXHQgIG5zLFxuXHQgIGNvbnRleHQsXG5cdCAgY29tcG9uZW50T3B0aW9uc1xu
XHQpIHtcblx0ICB0aGlzLnRhZyA9IHRhZztcblx0ICB0aGlzLmRhdGEgPSBkYXRhO1xuXHQgIHRo
aXMuY2hpbGRyZW4gPSBjaGlsZHJlbjtcblx0ICB0aGlzLnRleHQgPSB0ZXh0O1xuXHQgIHRoaXMu
ZWxtID0gZWxtO1xuXHQgIHRoaXMubnMgPSBucztcblx0ICB0aGlzLmNvbnRleHQgPSBjb250ZXh0
O1xuXHQgIHRoaXMuZnVuY3Rpb25hbENvbnRleHQgPSB1bmRlZmluZWQ7XG5cdCAgdGhpcy5rZXkg
PSBkYXRhICYmIGRhdGEua2V5O1xuXHQgIHRoaXMuY29tcG9uZW50T3B0aW9ucyA9IGNvbXBvbmVu
dE9wdGlvbnM7XG5cdCAgdGhpcy5jaGlsZCA9IHVuZGVmaW5lZDtcblx0ICB0aGlzLnBhcmVudCA9
IHVuZGVmaW5lZDtcblx0ICB0aGlzLnJhdyA9IGZhbHNlO1xuXHQgIHRoaXMuaXNTdGF0aWMgPSBm
YWxzZTtcblx0ICB0aGlzLmlzUm9vdEluc2VydCA9IHRydWU7XG5cdCAgdGhpcy5pc0NvbW1lbnQg
PSBmYWxzZTtcblx0ICB0aGlzLmlzQ2xvbmVkID0gZmFsc2U7XG5cdCAgdGhpcy5pc09uY2UgPSBm
YWxzZTtcblx0fTtcblx0XG5cdHZhciBlbXB0eVZOb2RlID0gZnVuY3Rpb24gKCkge1xuXHQgIHZh
ciBub2RlID0gbmV3IFZOb2RlKCk7XG5cdCAgbm9kZS50ZXh0ID0gJyc7XG5cdCAgbm9kZS5pc0Nv
bW1lbnQgPSB0cnVlO1xuXHQgIHJldHVybiBub2RlXG5cdH07XG5cdFxuXHQvLyBvcHRpbWl6ZWQg
c2hhbGxvdyBjbG9uZVxuXHQvLyB1c2VkIGZvciBzdGF0aWMgbm9kZXMgYW5kIHNsb3Qgbm9kZXMg
YmVjYXVzZSB0aGV5IG1heSBiZSByZXVzZWQgYWNyb3NzXG5cdC8vIG11bHRpcGxlIHJlbmRlcnMs
IGNsb25pbmcgdGhlbSBhdm9pZHMgZXJyb3JzIHdoZW4gRE9NIG1hbmlwdWxhdGlvbnMgcmVseVxu
XHQvLyBvbiB0aGVpciBlbG0gcmVmZXJlbmNlLlxuXHRmdW5jdGlvbiBjbG9uZVZOb2RlICh2bm9k
ZSkge1xuXHQgIHZhciBjbG9uZWQgPSBuZXcgVk5vZGUoXG5cdCAgICB2bm9kZS50YWcsXG5cdCAg
ICB2bm9kZS5kYXRhLFxuXHQgICAgdm5vZGUuY2hpbGRyZW4sXG5cdCAgICB2bm9kZS50ZXh0LFxu
XHQgICAgdm5vZGUuZWxtLFxuXHQgICAgdm5vZGUubnMsXG5cdCAgICB2bm9kZS5jb250ZXh0LFxu
XHQgICAgdm5vZGUuY29tcG9uZW50T3B0aW9uc1xuXHQgICk7XG5cdCAgY2xvbmVkLmlzU3RhdGlj
ID0gdm5vZGUuaXNTdGF0aWM7XG5cdCAgY2xvbmVkLmtleSA9IHZub2RlLmtleTtcblx0ICBjbG9u
ZWQuaXNDbG9uZWQgPSB0cnVlO1xuXHQgIHJldHVybiBjbG9uZWRcblx0fVxuXHRcblx0ZnVuY3Rp
b24gY2xvbmVWTm9kZXMgKHZub2Rlcykge1xuXHQgIHZhciByZXMgPSBuZXcgQXJyYXkodm5vZGVz
Lmxlbmd0aCk7XG5cdCAgZm9yICh2YXIgaSA9IDA7IGkgPCB2bm9kZXMubGVuZ3RoOyBpKyspIHtc
blx0ICAgIHJlc1tpXSA9IGNsb25lVk5vZGUodm5vZGVzW2ldKTtcblx0ICB9XG5cdCAgcmV0dXJu
IHJlc1xuXHR9XG5cdFxuXHQvKiAgKi9cblx0XG5cdGZ1bmN0aW9uIG1lcmdlVk5vZGVIb29rIChk
ZWYsIGhvb2tLZXksIGhvb2ssIGtleSkge1xuXHQgIGtleSA9IGtleSArIGhvb2tLZXk7XG5cdCAg
dmFyIGluamVjdGVkSGFzaCA9IGRlZi5fX2luamVjdGVkIHx8IChkZWYuX19pbmplY3RlZCA9IHt9
KTtcblx0ICBpZiAoIWluamVjdGVkSGFzaFtrZXldKSB7XG5cdCAgICBpbmplY3RlZEhhc2hba2V5
XSA9IHRydWU7XG5cdCAgICB2YXIgb2xkSG9vayA9IGRlZltob29rS2V5XTtcblx0ICAgIGlmIChv
bGRIb29rKSB7XG5cdCAgICAgIGRlZltob29rS2V5XSA9IGZ1bmN0aW9uICgpIHtcblx0ICAgICAg
ICBvbGRIb29rLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG5cdCAgICAgICAgaG9vay5hcHBseSh0
aGlzLCBhcmd1bWVudHMpO1xuXHQgICAgICB9O1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgZGVm
W2hvb2tLZXldID0gaG9vaztcblx0ICAgIH1cblx0ICB9XG5cdH1cblx0XG5cdC8qICAqL1xuXHRc
blx0ZnVuY3Rpb24gdXBkYXRlTGlzdGVuZXJzIChcblx0ICBvbixcblx0ICBvbGRPbixcblx0ICBh
ZGQsXG5cdCAgcmVtb3ZlJCQxLFxuXHQgIHZtXG5cdCkge1xuXHQgIHZhciBuYW1lLCBjdXIsIG9s
ZCwgZm4sIGV2ZW50LCBjYXB0dXJlO1xuXHQgIGZvciAobmFtZSBpbiBvbikge1xuXHQgICAgY3Vy
ID0gb25bbmFtZV07XG5cdCAgICBvbGQgPSBvbGRPbltuYW1lXTtcblx0ICAgIGlmICghY3VyKSB7
XG5cdCAgICAgIChcInByb2R1Y3Rpb25cIikgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuXHQg
ICAgICAgIFwiSW52YWxpZCBoYW5kbGVyIGZvciBldmVudCBcXFwiXCIgKyBuYW1lICsgXCJcXFwi
OiBnb3QgXCIgKyBTdHJpbmcoY3VyKSxcblx0ICAgICAgICB2bVxuXHQgICAgICApO1xuXHQgICAg
fSBlbHNlIGlmICghb2xkKSB7XG5cdCAgICAgIGNhcHR1cmUgPSBuYW1lLmNoYXJBdCgwKSA9PT0g
JyEnO1xuXHQgICAgICBldmVudCA9IGNhcHR1cmUgPyBuYW1lLnNsaWNlKDEpIDogbmFtZTtcblx0
ICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY3VyKSkge1xuXHQgICAgICAgIGFkZChldmVudCwgKGN1
ci5pbnZva2VyID0gYXJySW52b2tlcihjdXIpKSwgY2FwdHVyZSk7XG5cdCAgICAgIH0gZWxzZSB7
XG5cdCAgICAgICAgaWYgKCFjdXIuaW52b2tlcikge1xuXHQgICAgICAgICAgZm4gPSBjdXI7XG5c
dCAgICAgICAgICBjdXIgPSBvbltuYW1lXSA9IHt9O1xuXHQgICAgICAgICAgY3VyLmZuID0gZm47
XG5cdCAgICAgICAgICBjdXIuaW52b2tlciA9IGZuSW52b2tlcihjdXIpO1xuXHQgICAgICAgIH1c
blx0ICAgICAgICBhZGQoZXZlbnQsIGN1ci5pbnZva2VyLCBjYXB0dXJlKTtcblx0ICAgICAgfVxu
XHQgICAgfSBlbHNlIGlmIChjdXIgIT09IG9sZCkge1xuXHQgICAgICBpZiAoQXJyYXkuaXNBcnJh
eShvbGQpKSB7XG5cdCAgICAgICAgb2xkLmxlbmd0aCA9IGN1ci5sZW5ndGg7XG5cdCAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBvbGQubGVuZ3RoOyBpKyspIHsgb2xkW2ldID0gY3VyW2ldOyB9
XG5cdCAgICAgICAgb25bbmFtZV0gPSBvbGQ7XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAg
b2xkLmZuID0gY3VyO1xuXHQgICAgICAgIG9uW25hbWVdID0gb2xkO1xuXHQgICAgICB9XG5cdCAg
ICB9XG5cdCAgfVxuXHQgIGZvciAobmFtZSBpbiBvbGRPbikge1xuXHQgICAgaWYgKCFvbltuYW1l
XSkge1xuXHQgICAgICBldmVudCA9IG5hbWUuY2hhckF0KDApID09PSAnIScgPyBuYW1lLnNsaWNl
KDEpIDogbmFtZTtcblx0ICAgICAgcmVtb3ZlJCQxKGV2ZW50LCBvbGRPbltuYW1lXS5pbnZva2Vy
KTtcblx0ICAgIH1cblx0ICB9XG5cdH1cblx0XG5cdGZ1bmN0aW9uIGFyckludm9rZXIgKGFycikg
e1xuXHQgIHJldHVybiBmdW5jdGlvbiAoZXYpIHtcblx0ICAgIHZhciBhcmd1bWVudHMkMSA9IGFy
Z3VtZW50cztcblx0XG5cdCAgICB2YXIgc2luZ2xlID0gYXJndW1lbnRzLmxlbmd0aCA9PT0gMTtc
blx0ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG5cdCAgICAgIHNp
bmdsZSA/IGFycltpXShldikgOiBhcnJbaV0uYXBwbHkobnVsbCwgYXJndW1lbnRzJDEpO1xuXHQg
ICAgfVxuXHQgIH1cblx0fVxuXHRcblx0ZnVuY3Rpb24gZm5JbnZva2VyIChvKSB7XG5cdCAgcmV0
dXJuIGZ1bmN0aW9uIChldikge1xuXHQgICAgdmFyIHNpbmdsZSA9IGFyZ3VtZW50cy5sZW5ndGgg
PT09IDE7XG5cdCAgICBzaW5nbGUgPyBvLmZuKGV2KSA6IG8uZm4uYXBwbHkobnVsbCwgYXJndW1l
bnRzKTtcblx0ICB9XG5cdH1cblx0XG5cdC8qICAqL1xuXHRcblx0ZnVuY3Rpb24gbm9ybWFsaXpl
Q2hpbGRyZW4gKFxuXHQgIGNoaWxkcmVuLFxuXHQgIG5zLFxuXHQgIG5lc3RlZEluZGV4XG5cdCkg
e1xuXHQgIGlmIChpc1ByaW1pdGl2ZShjaGlsZHJlbikpIHtcblx0ICAgIHJldHVybiBbY3JlYXRl
VGV4dFZOb2RlKGNoaWxkcmVuKV1cblx0ICB9XG5cdCAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRy
ZW4pKSB7XG5cdCAgICB2YXIgcmVzID0gW107XG5cdCAgICBmb3IgKHZhciBpID0gMCwgbCA9IGNo
aWxkcmVuLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuXHQgICAgICB2YXIgYyA9IGNoaWxkcmVuW2ld
O1xuXHQgICAgICB2YXIgbGFzdCA9IHJlc1tyZXMubGVuZ3RoIC0gMV07XG5cdCAgICAgIC8vICBu
ZXN0ZWRcblx0ICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYykpIHtcblx0ICAgICAgICByZXMucHVz
aC5hcHBseShyZXMsIG5vcm1hbGl6ZUNoaWxkcmVuKGMsIG5zLCAoKG5lc3RlZEluZGV4IHx8ICcn
KSArIFwiX1wiICsgaSkpKTtcblx0ICAgICAgfSBlbHNlIGlmIChpc1ByaW1pdGl2ZShjKSkge1xu
XHQgICAgICAgIGlmIChsYXN0ICYmIGxhc3QudGV4dCkge1xuXHQgICAgICAgICAgbGFzdC50ZXh0
ICs9IFN0cmluZyhjKTtcblx0ICAgICAgICB9IGVsc2UgaWYgKGMgIT09ICcnKSB7XG5cdCAgICAg
ICAgICAvLyBjb252ZXJ0IHByaW1pdGl2ZSB0byB2bm9kZVxuXHQgICAgICAgICAgcmVzLnB1c2go
Y3JlYXRlVGV4dFZOb2RlKGMpKTtcblx0ICAgICAgICB9XG5cdCAgICAgIH0gZWxzZSBpZiAoYyBp
bnN0YW5jZW9mIFZOb2RlKSB7XG5cdCAgICAgICAgaWYgKGMudGV4dCAmJiBsYXN0ICYmIGxhc3Qu
dGV4dCkge1xuXHQgICAgICAgICAgaWYgKCFsYXN0LmlzQ2xvbmVkKSB7XG5cdCAgICAgICAgICAg
IGxhc3QudGV4dCArPSBjLnRleHQ7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfSBlbHNlIHtc
blx0ICAgICAgICAgIC8vIGluaGVyaXQgcGFyZW50IG5hbWVzcGFjZVxuXHQgICAgICAgICAgaWYg
KG5zKSB7XG5cdCAgICAgICAgICAgIGFwcGx5TlMoYywgbnMpO1xuXHQgICAgICAgICAgfVxuXHQg
ICAgICAgICAgLy8gZGVmYXVsdCBrZXkgZm9yIG5lc3RlZCBhcnJheSBjaGlsZHJlbiAobGlrZWx5
IGdlbmVyYXRlZCBieSB2LWZvcilcblx0ICAgICAgICAgIGlmIChjLnRhZyAmJiBjLmtleSA9PSBu
dWxsICYmIG5lc3RlZEluZGV4ICE9IG51bGwpIHtcblx0ICAgICAgICAgICAgYy5rZXkgPSBcIl9f
dmxpc3RcIiArIG5lc3RlZEluZGV4ICsgXCJfXCIgKyBpICsgXCJfX1wiO1xuXHQgICAgICAgICAg
fVxuXHQgICAgICAgICAgcmVzLnB1c2goYyk7XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAg
ICB9XG5cdCAgICByZXR1cm4gcmVzXG5cdCAgfVxuXHR9XG5cdFxuXHRmdW5jdGlvbiBjcmVhdGVU
ZXh0Vk5vZGUgKHZhbCkge1xuXHQgIHJldHVybiBuZXcgVk5vZGUodW5kZWZpbmVkLCB1bmRlZmlu
ZWQsIHVuZGVmaW5lZCwgU3RyaW5nKHZhbCkpXG5cdH1cblx0XG5cdGZ1bmN0aW9uIGFwcGx5TlMg
KHZub2RlLCBucykge1xuXHQgIGlmICh2bm9kZS50YWcgJiYgIXZub2RlLm5zKSB7XG5cdCAgICB2
bm9kZS5ucyA9IG5zO1xuXHQgICAgaWYgKHZub2RlLmNoaWxkcmVuKSB7XG5cdCAgICAgIGZvciAo
dmFyIGkgPSAwLCBsID0gdm5vZGUuY2hpbGRyZW4ubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG5cdCAg
ICAgICAgYXBwbHlOUyh2bm9kZS5jaGlsZHJlbltpXSwgbnMpO1xuXHQgICAgICB9XG5cdCAgICB9
XG5cdCAgfVxuXHR9XG5cdFxuXHQvKiAgKi9cblx0XG5cdGZ1bmN0aW9uIGdldEZpcnN0Q29tcG9u
ZW50Q2hpbGQgKGNoaWxkcmVuKSB7XG5cdCAgcmV0dXJuIGNoaWxkcmVuICYmIGNoaWxkcmVuLmZp
bHRlcihmdW5jdGlvbiAoYykgeyByZXR1cm4gYyAmJiBjLmNvbXBvbmVudE9wdGlvbnM7IH0pWzBd
XG5cdH1cblx0XG5cdC8qICAqL1xuXHRcblx0dmFyIGFjdGl2ZUluc3RhbmNlID0gbnVsbDtcblx0
XG5cdGZ1bmN0aW9uIGluaXRMaWZlY3ljbGUgKHZtKSB7XG5cdCAgdmFyIG9wdGlvbnMgPSB2bS4k
b3B0aW9ucztcblx0XG5cdCAgLy8gbG9jYXRlIGZpcnN0IG5vbi1hYnN0cmFjdCBwYXJlbnRcblx0
ICB2YXIgcGFyZW50ID0gb3B0aW9ucy5wYXJlbnQ7XG5cdCAgaWYgKHBhcmVudCAmJiAhb3B0aW9u
cy5hYnN0cmFjdCkge1xuXHQgICAgd2hpbGUgKHBhcmVudC4kb3B0aW9ucy5hYnN0cmFjdCAmJiBw
YXJlbnQuJHBhcmVudCkge1xuXHQgICAgICBwYXJlbnQgPSBwYXJlbnQuJHBhcmVudDtcblx0ICAg
IH1cblx0ICAgIHBhcmVudC4kY2hpbGRyZW4ucHVzaCh2bSk7XG5cdCAgfVxuXHRcblx0ICB2bS4k
cGFyZW50ID0gcGFyZW50O1xuXHQgIHZtLiRyb290ID0gcGFyZW50ID8gcGFyZW50LiRyb290IDog
dm07XG5cdFxuXHQgIHZtLiRjaGlsZHJlbiA9IFtdO1xuXHQgIHZtLiRyZWZzID0ge307XG5cdFxu
XHQgIHZtLl93YXRjaGVyID0gbnVsbDtcblx0ICB2bS5faW5hY3RpdmUgPSBmYWxzZTtcblx0ICB2
bS5faXNNb3VudGVkID0gZmFsc2U7XG5cdCAgdm0uX2lzRGVzdHJveWVkID0gZmFsc2U7XG5cdCAg
dm0uX2lzQmVpbmdEZXN0cm95ZWQgPSBmYWxzZTtcblx0fVxuXHRcblx0ZnVuY3Rpb24gbGlmZWN5
Y2xlTWl4aW4gKFZ1ZSkge1xuXHQgIFZ1ZS5wcm90b3R5cGUuX21vdW50ID0gZnVuY3Rpb24gKFxu
XHQgICAgZWwsXG5cdCAgICBoeWRyYXRpbmdcblx0ICApIHtcblx0ICAgIHZhciB2bSA9IHRoaXM7
XG5cdCAgICB2bS4kZWwgPSBlbDtcblx0ICAgIGlmICghdm0uJG9wdGlvbnMucmVuZGVyKSB7XG5c
dCAgICAgIHZtLiRvcHRpb25zLnJlbmRlciA9IGVtcHR5Vk5vZGU7XG5cdCAgICAgIGlmIChmYWxz
ZSkge1xuXHQgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuXHQgICAgICAgIGlmICh2
bS4kb3B0aW9ucy50ZW1wbGF0ZSAmJiB2bS4kb3B0aW9ucy50ZW1wbGF0ZS5jaGFyQXQoMCkgIT09
ICcjJykge1xuXHQgICAgICAgICAgd2Fybihcblx0ICAgICAgICAgICAgJ1lvdSBhcmUgdXNpbmcg
dGhlIHJ1bnRpbWUtb25seSBidWlsZCBvZiBWdWUgd2hlcmUgdGhlIHRlbXBsYXRlICcgK1xuXHQg
ICAgICAgICAgICAnb3B0aW9uIGlzIG5vdCBhdmFpbGFibGUuIEVpdGhlciBwcmUtY29tcGlsZSB0
aGUgdGVtcGxhdGVzIGludG8gJyArXG5cdCAgICAgICAgICAgICdyZW5kZXIgZnVuY3Rpb25zLCBv
ciB1c2UgdGhlIGNvbXBpbGVyLWluY2x1ZGVkIGJ1aWxkLicsXG5cdCAgICAgICAgICAgIHZtXG5c
dCAgICAgICAgICApO1xuXHQgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICB3YXJuKFxuXHQg
ICAgICAgICAgICAnRmFpbGVkIHRvIG1vdW50IGNvbXBvbmVudDogdGVtcGxhdGUgb3IgcmVuZGVy
IGZ1bmN0aW9uIG5vdCBkZWZpbmVkLicsXG5cdCAgICAgICAgICAgIHZtXG5cdCAgICAgICAgICAp
O1xuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgfVxuXHQgICAgY2FsbEhvb2sodm0sICdi
ZWZvcmVNb3VudCcpO1xuXHQgICAgdm0uX3dhdGNoZXIgPSBuZXcgV2F0Y2hlcih2bSwgZnVuY3Rp
b24gKCkge1xuXHQgICAgICB2bS5fdXBkYXRlKHZtLl9yZW5kZXIoKSwgaHlkcmF0aW5nKTtcblx0
ICAgIH0sIG5vb3ApO1xuXHQgICAgaHlkcmF0aW5nID0gZmFsc2U7XG5cdCAgICAvLyBtYW51YWxs
eSBtb3VudGVkIGluc3RhbmNlLCBjYWxsIG1vdW50ZWQgb24gc2VsZlxuXHQgICAgLy8gbW91bnRl
ZCBpcyBjYWxsZWQgZm9yIHJlbmRlci1jcmVhdGVkIGNoaWxkIGNvbXBvbmVudHMgaW4gaXRzIGlu
c2VydGVkIGhvb2tcblx0ICAgIGlmICh2bS4kdm5vZGUgPT0gbnVsbCkge1xuXHQgICAgICB2bS5f
aXNNb3VudGVkID0gdHJ1ZTtcblx0ICAgICAgY2FsbEhvb2sodm0sICdtb3VudGVkJyk7XG5cdCAg
ICB9XG5cdCAgICByZXR1cm4gdm1cblx0ICB9O1xuXHRcblx0ICBWdWUucHJvdG90eXBlLl91cGRh
dGUgPSBmdW5jdGlvbiAodm5vZGUsIGh5ZHJhdGluZykge1xuXHQgICAgdmFyIHZtID0gdGhpcztc
blx0ICAgIGlmICh2bS5faXNNb3VudGVkKSB7XG5cdCAgICAgIGNhbGxIb29rKHZtLCAnYmVmb3Jl
VXBkYXRlJyk7XG5cdCAgICB9XG5cdCAgICB2YXIgcHJldkVsID0gdm0uJGVsO1xuXHQgICAgdmFy
IHByZXZBY3RpdmVJbnN0YW5jZSA9IGFjdGl2ZUluc3RhbmNlO1xuXHQgICAgYWN0aXZlSW5zdGFu
Y2UgPSB2bTtcblx0ICAgIHZhciBwcmV2Vm5vZGUgPSB2bS5fdm5vZGU7XG5cdCAgICB2bS5fdm5v
ZGUgPSB2bm9kZTtcblx0ICAgIGlmICghcHJldlZub2RlKSB7XG5cdCAgICAgIC8vIFZ1ZS5wcm90
b3R5cGUuX19wYXRjaF9fIGlzIGluamVjdGVkIGluIGVudHJ5IHBvaW50c1xuXHQgICAgICAvLyBi
YXNlZCBvbiB0aGUgcmVuZGVyaW5nIGJhY2tlbmQgdXNlZC5cblx0ICAgICAgdm0uJGVsID0gdm0u
X19wYXRjaF9fKHZtLiRlbCwgdm5vZGUsIGh5ZHJhdGluZyk7XG5cdCAgICB9IGVsc2Uge1xuXHQg
ICAgICB2bS4kZWwgPSB2bS5fX3BhdGNoX18ocHJldlZub2RlLCB2bm9kZSk7XG5cdCAgICB9XG5c
dCAgICBhY3RpdmVJbnN0YW5jZSA9IHByZXZBY3RpdmVJbnN0YW5jZTtcblx0ICAgIC8vIHVwZGF0
ZSBfX3Z1ZV9fIHJlZmVyZW5jZVxuXHQgICAgaWYgKHByZXZFbCkge1xuXHQgICAgICBwcmV2RWwu
X192dWVfXyA9IG51bGw7XG5cdCAgICB9XG5cdCAgICBpZiAodm0uJGVsKSB7XG5cdCAgICAgIHZt
LiRlbC5fX3Z1ZV9fID0gdm07XG5cdCAgICB9XG5cdCAgICAvLyBpZiBwYXJlbnQgaXMgYW4gSE9D
LCB1cGRhdGUgaXRzICRlbCBhcyB3ZWxsXG5cdCAgICBpZiAodm0uJHZub2RlICYmIHZtLiRwYXJl
bnQgJiYgdm0uJHZub2RlID09PSB2bS4kcGFyZW50Ll92bm9kZSkge1xuXHQgICAgICB2bS4kcGFy
ZW50LiRlbCA9IHZtLiRlbDtcblx0ICAgIH1cblx0ICAgIGlmICh2bS5faXNNb3VudGVkKSB7XG5c
dCAgICAgIGNhbGxIb29rKHZtLCAndXBkYXRlZCcpO1xuXHQgICAgfVxuXHQgIH07XG5cdFxuXHQg
IFZ1ZS5wcm90b3R5cGUuX3VwZGF0ZUZyb21QYXJlbnQgPSBmdW5jdGlvbiAoXG5cdCAgICBwcm9w
c0RhdGEsXG5cdCAgICBsaXN0ZW5lcnMsXG5cdCAgICBwYXJlbnRWbm9kZSxcblx0ICAgIHJlbmRl
ckNoaWxkcmVuXG5cdCAgKSB7XG5cdCAgICB2YXIgdm0gPSB0aGlzO1xuXHQgICAgdmFyIGhhc0No
aWxkcmVuID0gISEodm0uJG9wdGlvbnMuX3JlbmRlckNoaWxkcmVuIHx8IHJlbmRlckNoaWxkcmVu
KTtcblx0ICAgIHZtLiRvcHRpb25zLl9wYXJlbnRWbm9kZSA9IHBhcmVudFZub2RlO1xuXHQgICAg
dm0uJHZub2RlID0gcGFyZW50Vm5vZGU7IC8vIHVwZGF0ZSB2bSdzIHBsYWNlaG9sZGVyIG5vZGUg
d2l0aG91dCByZS1yZW5kZXJcblx0ICAgIGlmICh2bS5fdm5vZGUpIHsgLy8gdXBkYXRlIGNoaWxk
IHRyZWUncyBwYXJlbnRcblx0ICAgICAgdm0uX3Zub2RlLnBhcmVudCA9IHBhcmVudFZub2RlO1xu
XHQgICAgfVxuXHQgICAgdm0uJG9wdGlvbnMuX3JlbmRlckNoaWxkcmVuID0gcmVuZGVyQ2hpbGRy
ZW47XG5cdCAgICAvLyB1cGRhdGUgcHJvcHNcblx0ICAgIGlmIChwcm9wc0RhdGEgJiYgdm0uJG9w
dGlvbnMucHJvcHMpIHtcblx0ICAgICAgb2JzZXJ2ZXJTdGF0ZS5zaG91bGRDb252ZXJ0ID0gZmFs
c2U7XG5cdCAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgIG9ic2VydmVyU3RhdGUuaXNTZXR0
aW5nUHJvcHMgPSB0cnVlO1xuXHQgICAgICB9XG5cdCAgICAgIHZhciBwcm9wS2V5cyA9IHZtLiRv
cHRpb25zLl9wcm9wS2V5cyB8fCBbXTtcblx0ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9w
S2V5cy5sZW5ndGg7IGkrKykge1xuXHQgICAgICAgIHZhciBrZXkgPSBwcm9wS2V5c1tpXTtcblx0
ICAgICAgICB2bVtrZXldID0gdmFsaWRhdGVQcm9wKGtleSwgdm0uJG9wdGlvbnMucHJvcHMsIHBy
b3BzRGF0YSwgdm0pO1xuXHQgICAgICB9XG5cdCAgICAgIG9ic2VydmVyU3RhdGUuc2hvdWxkQ29u
dmVydCA9IHRydWU7XG5cdCAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgIG9ic2VydmVyU3Rh
dGUuaXNTZXR0aW5nUHJvcHMgPSBmYWxzZTtcblx0ICAgICAgfVxuXHQgICAgICB2bS4kb3B0aW9u
cy5wcm9wc0RhdGEgPSBwcm9wc0RhdGE7XG5cdCAgICB9XG5cdCAgICAvLyB1cGRhdGUgbGlzdGVu
ZXJzXG5cdCAgICBpZiAobGlzdGVuZXJzKSB7XG5cdCAgICAgIHZhciBvbGRMaXN0ZW5lcnMgPSB2
bS4kb3B0aW9ucy5fcGFyZW50TGlzdGVuZXJzO1xuXHQgICAgICB2bS4kb3B0aW9ucy5fcGFyZW50
TGlzdGVuZXJzID0gbGlzdGVuZXJzO1xuXHQgICAgICB2bS5fdXBkYXRlTGlzdGVuZXJzKGxpc3Rl
bmVycywgb2xkTGlzdGVuZXJzKTtcblx0ICAgIH1cblx0ICAgIC8vIHJlc29sdmUgc2xvdHMgKyBm
b3JjZSB1cGRhdGUgaWYgaGFzIGNoaWxkcmVuXG5cdCAgICBpZiAoaGFzQ2hpbGRyZW4pIHtcblx0
ICAgICAgdm0uJHNsb3RzID0gcmVzb2x2ZVNsb3RzKHJlbmRlckNoaWxkcmVuLCB2bS5fcmVuZGVy
Q29udGV4dCk7XG5cdCAgICAgIHZtLiRmb3JjZVVwZGF0ZSgpO1xuXHQgICAgfVxuXHQgIH07XG5c
dFxuXHQgIFZ1ZS5wcm90b3R5cGUuJGZvcmNlVXBkYXRlID0gZnVuY3Rpb24gKCkge1xuXHQgICAg
dmFyIHZtID0gdGhpcztcblx0ICAgIGlmICh2bS5fd2F0Y2hlcikge1xuXHQgICAgICB2bS5fd2F0
Y2hlci51cGRhdGUoKTtcblx0ICAgIH1cblx0ICB9O1xuXHRcblx0ICBWdWUucHJvdG90eXBlLiRk
ZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuXHQgICAgdmFyIHZtID0gdGhpcztcblx0ICAgIGlmICh2
bS5faXNCZWluZ0Rlc3Ryb3llZCkge1xuXHQgICAgICByZXR1cm5cblx0ICAgIH1cblx0ICAgIGNh
bGxIb29rKHZtLCAnYmVmb3JlRGVzdHJveScpO1xuXHQgICAgdm0uX2lzQmVpbmdEZXN0cm95ZWQg
PSB0cnVlO1xuXHQgICAgLy8gcmVtb3ZlIHNlbGYgZnJvbSBwYXJlbnRcblx0ICAgIHZhciBwYXJl
bnQgPSB2bS4kcGFyZW50O1xuXHQgICAgaWYgKHBhcmVudCAmJiAhcGFyZW50Ll9pc0JlaW5nRGVz
dHJveWVkICYmICF2bS4kb3B0aW9ucy5hYnN0cmFjdCkge1xuXHQgICAgICByZW1vdmUkMShwYXJl
bnQuJGNoaWxkcmVuLCB2bSk7XG5cdCAgICB9XG5cdCAgICAvLyB0ZWFyZG93biB3YXRjaGVyc1xu
XHQgICAgaWYgKHZtLl93YXRjaGVyKSB7XG5cdCAgICAgIHZtLl93YXRjaGVyLnRlYXJkb3duKCk7
XG5cdCAgICB9XG5cdCAgICB2YXIgaSA9IHZtLl93YXRjaGVycy5sZW5ndGg7XG5cdCAgICB3aGls
ZSAoaS0tKSB7XG5cdCAgICAgIHZtLl93YXRjaGVyc1tpXS50ZWFyZG93bigpO1xuXHQgICAgfVxu
XHQgICAgLy8gcmVtb3ZlIHJlZmVyZW5jZSBmcm9tIGRhdGEgb2Jcblx0ICAgIC8vIGZyb3plbiBv
YmplY3QgbWF5IG5vdCBoYXZlIG9ic2VydmVyLlxuXHQgICAgaWYgKHZtLl9kYXRhLl9fb2JfXykg
e1xuXHQgICAgICB2bS5fZGF0YS5fX29iX18udm1Db3VudC0tO1xuXHQgICAgfVxuXHQgICAgLy8g
Y2FsbCB0aGUgbGFzdCBob29rLi4uXG5cdCAgICB2bS5faXNEZXN0cm95ZWQgPSB0cnVlO1xuXHQg
ICAgY2FsbEhvb2sodm0sICdkZXN0cm95ZWQnKTtcblx0ICAgIC8vIHR1cm4gb2ZmIGFsbCBpbnN0
YW5jZSBsaXN0ZW5lcnMuXG5cdCAgICB2bS4kb2ZmKCk7XG5cdCAgICAvLyByZW1vdmUgX192dWVf
XyByZWZlcmVuY2Vcblx0ICAgIGlmICh2bS4kZWwpIHtcblx0ICAgICAgdm0uJGVsLl9fdnVlX18g
PSBudWxsO1xuXHQgICAgfVxuXHQgICAgLy8gaW52b2tlIGRlc3Ryb3kgaG9va3Mgb24gY3VycmVu
dCByZW5kZXJlZCB0cmVlXG5cdCAgICB2bS5fX3BhdGNoX18odm0uX3Zub2RlLCBudWxsKTtcblx0
ICB9O1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBjYWxsSG9vayAodm0sIGhvb2spIHtcblx0ICB2YXIg
aGFuZGxlcnMgPSB2bS4kb3B0aW9uc1tob29rXTtcblx0ICBpZiAoaGFuZGxlcnMpIHtcblx0ICAg
IGZvciAodmFyIGkgPSAwLCBqID0gaGFuZGxlcnMubGVuZ3RoOyBpIDwgajsgaSsrKSB7XG5cdCAg
ICAgIGhhbmRsZXJzW2ldLmNhbGwodm0pO1xuXHQgICAgfVxuXHQgIH1cblx0ICB2bS4kZW1pdCgn
aG9vazonICsgaG9vayk7XG5cdH1cblx0XG5cdC8qICAqL1xuXHRcblx0dmFyIGhvb2tzID0geyBp
bml0OiBpbml0LCBwcmVwYXRjaDogcHJlcGF0Y2gsIGluc2VydDogaW5zZXJ0LCBkZXN0cm95OiBk
ZXN0cm95JDEgfTtcblx0dmFyIGhvb2tzVG9NZXJnZSA9IE9iamVjdC5rZXlzKGhvb2tzKTtcblx0
XG5cdGZ1bmN0aW9uIGNyZWF0ZUNvbXBvbmVudCAoXG5cdCAgQ3Rvcixcblx0ICBkYXRhLFxuXHQg
IGNvbnRleHQsXG5cdCAgY2hpbGRyZW4sXG5cdCAgdGFnXG5cdCkge1xuXHQgIGlmICghQ3Rvcikg
e1xuXHQgICAgcmV0dXJuXG5cdCAgfVxuXHRcblx0ICB2YXIgYmFzZUN0b3IgPSBjb250ZXh0LiRv
cHRpb25zLl9iYXNlO1xuXHQgIGlmIChpc09iamVjdChDdG9yKSkge1xuXHQgICAgQ3RvciA9IGJh
c2VDdG9yLmV4dGVuZChDdG9yKTtcblx0ICB9XG5cdFxuXHQgIGlmICh0eXBlb2YgQ3RvciAhPT0g
J2Z1bmN0aW9uJykge1xuXHQgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgIHdhcm4oKFwiSW52YWxp
ZCBDb21wb25lbnQgZGVmaW5pdGlvbjogXCIgKyAoU3RyaW5nKEN0b3IpKSksIGNvbnRleHQpO1xu
XHQgICAgfVxuXHQgICAgcmV0dXJuXG5cdCAgfVxuXHRcblx0ICAvLyBhc3luYyBjb21wb25lbnRc
blx0ICBpZiAoIUN0b3IuY2lkKSB7XG5cdCAgICBpZiAoQ3Rvci5yZXNvbHZlZCkge1xuXHQgICAg
ICBDdG9yID0gQ3Rvci5yZXNvbHZlZDtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIEN0b3IgPSBy
ZXNvbHZlQXN5bmNDb21wb25lbnQoQ3RvciwgYmFzZUN0b3IsIGZ1bmN0aW9uICgpIHtcblx0ICAg
ICAgICAvLyBpdCdzIG9rIHRvIHF1ZXVlIHRoaXMgb24gZXZlcnkgcmVuZGVyIGJlY2F1c2Vcblx0
ICAgICAgICAvLyAkZm9yY2VVcGRhdGUgaXMgYnVmZmVyZWQgYnkgdGhlIHNjaGVkdWxlci5cblx0
ICAgICAgICBjb250ZXh0LiRmb3JjZVVwZGF0ZSgpO1xuXHQgICAgICB9KTtcblx0ICAgICAgaWYg
KCFDdG9yKSB7XG5cdCAgICAgICAgLy8gcmV0dXJuIG5vdGhpbmcgaWYgdGhpcyBpcyBpbmRlZWQg
YW4gYXN5bmMgY29tcG9uZW50XG5cdCAgICAgICAgLy8gd2FpdCBmb3IgdGhlIGNhbGxiYWNrIHRv
IHRyaWdnZXIgcGFyZW50IHVwZGF0ZS5cblx0ICAgICAgICByZXR1cm5cblx0ICAgICAgfVxuXHQg
ICAgfVxuXHQgIH1cblx0XG5cdCAgLy8gcmVzb2x2ZSBjb25zdHJ1Y3RvciBvcHRpb25zIGluIGNh
c2UgZ2xvYmFsIG1peGlucyBhcmUgYXBwbGllZCBhZnRlclxuXHQgIC8vIGNvbXBvbmVudCBjb25z
dHJ1Y3RvciBjcmVhdGlvblxuXHQgIHJlc29sdmVDb25zdHJ1Y3Rvck9wdGlvbnMoQ3Rvcik7XG5c
dFxuXHQgIGRhdGEgPSBkYXRhIHx8IHt9O1xuXHRcblx0ICAvLyBleHRyYWN0IHByb3BzXG5cdCAg
dmFyIHByb3BzRGF0YSA9IGV4dHJhY3RQcm9wcyhkYXRhLCBDdG9yKTtcblx0XG5cdCAgLy8gZnVu
Y3Rpb25hbCBjb21wb25lbnRcblx0ICBpZiAoQ3Rvci5vcHRpb25zLmZ1bmN0aW9uYWwpIHtcblx0
ICAgIHJldHVybiBjcmVhdGVGdW5jdGlvbmFsQ29tcG9uZW50KEN0b3IsIHByb3BzRGF0YSwgZGF0
YSwgY29udGV4dCwgY2hpbGRyZW4pXG5cdCAgfVxuXHRcblx0ICAvLyBleHRyYWN0IGxpc3RlbmVy
cywgc2luY2UgdGhlc2UgbmVlZHMgdG8gYmUgdHJlYXRlZCBhc1xuXHQgIC8vIGNoaWxkIGNvbXBv
bmVudCBsaXN0ZW5lcnMgaW5zdGVhZCBvZiBET00gbGlzdGVuZXJzXG5cdCAgdmFyIGxpc3RlbmVy
cyA9IGRhdGEub247XG5cdCAgLy8gcmVwbGFjZSB3aXRoIGxpc3RlbmVycyB3aXRoIC5uYXRpdmUg
bW9kaWZpZXJcblx0ICBkYXRhLm9uID0gZGF0YS5uYXRpdmVPbjtcblx0XG5cdCAgaWYgKEN0b3Iu
b3B0aW9ucy5hYnN0cmFjdCkge1xuXHQgICAgLy8gYWJzdHJhY3QgY29tcG9uZW50cyBkbyBub3Qg
a2VlcCBhbnl0aGluZ1xuXHQgICAgLy8gb3RoZXIgdGhhbiBwcm9wcyAmIGxpc3RlbmVyc1xuXHQg
ICAgZGF0YSA9IHt9O1xuXHQgIH1cblx0XG5cdCAgLy8gbWVyZ2UgY29tcG9uZW50IG1hbmFnZW1l
bnQgaG9va3Mgb250byB0aGUgcGxhY2Vob2xkZXIgbm9kZVxuXHQgIG1lcmdlSG9va3MoZGF0YSk7
XG5cdFxuXHQgIC8vIHJldHVybiBhIHBsYWNlaG9sZGVyIHZub2RlXG5cdCAgdmFyIG5hbWUgPSBD
dG9yLm9wdGlvbnMubmFtZSB8fCB0YWc7XG5cdCAgdmFyIHZub2RlID0gbmV3IFZOb2RlKFxuXHQg
ICAgKFwidnVlLWNvbXBvbmVudC1cIiArIChDdG9yLmNpZCkgKyAobmFtZSA/IChcIi1cIiArIG5h
bWUpIDogJycpKSxcblx0ICAgIGRhdGEsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQs
IHVuZGVmaW5lZCwgY29udGV4dCxcblx0ICAgIHsgQ3RvcjogQ3RvciwgcHJvcHNEYXRhOiBwcm9w
c0RhdGEsIGxpc3RlbmVyczogbGlzdGVuZXJzLCB0YWc6IHRhZywgY2hpbGRyZW46IGNoaWxkcmVu
IH1cblx0ICApO1xuXHQgIHJldHVybiB2bm9kZVxuXHR9XG5cdFxuXHRmdW5jdGlvbiBjcmVhdGVG
dW5jdGlvbmFsQ29tcG9uZW50IChcblx0ICBDdG9yLFxuXHQgIHByb3BzRGF0YSxcblx0ICBkYXRh
LFxuXHQgIGNvbnRleHQsXG5cdCAgY2hpbGRyZW5cblx0KSB7XG5cdCAgdmFyIHByb3BzID0ge307
XG5cdCAgdmFyIHByb3BPcHRpb25zID0gQ3Rvci5vcHRpb25zLnByb3BzO1xuXHQgIGlmIChwcm9w
T3B0aW9ucykge1xuXHQgICAgZm9yICh2YXIga2V5IGluIHByb3BPcHRpb25zKSB7XG5cdCAgICAg
IHByb3BzW2tleV0gPSB2YWxpZGF0ZVByb3Aoa2V5LCBwcm9wT3B0aW9ucywgcHJvcHNEYXRhKTtc
blx0ICAgIH1cblx0ICB9XG5cdCAgdmFyIHZub2RlID0gQ3Rvci5vcHRpb25zLnJlbmRlci5jYWxs
KFxuXHQgICAgbnVsbCxcblx0ICAgIC8vIGVuc3VyZSB0aGUgY3JlYXRlRWxlbWVudCBmdW5jdGlv
biBpbiBmdW5jdGlvbmFsIGNvbXBvbmVudHNcblx0ICAgIC8vIGdldHMgYSB1bmlxdWUgY29udGV4
dCAtIHRoaXMgaXMgbmVjZXNzYXJ5IGZvciBjb3JyZWN0IG5hbWVkIHNsb3QgY2hlY2tcblx0ICAg
IGJpbmQkMShjcmVhdGVFbGVtZW50LCB7IF9zZWxmOiBPYmplY3QuY3JlYXRlKGNvbnRleHQpIH0p
LFxuXHQgICAge1xuXHQgICAgICBwcm9wczogcHJvcHMsXG5cdCAgICAgIGRhdGE6IGRhdGEsXG5c
dCAgICAgIHBhcmVudDogY29udGV4dCxcblx0ICAgICAgY2hpbGRyZW46IG5vcm1hbGl6ZUNoaWxk
cmVuKGNoaWxkcmVuKSxcblx0ICAgICAgc2xvdHM6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHJlc29s
dmVTbG90cyhjaGlsZHJlbiwgY29udGV4dCk7IH1cblx0ICAgIH1cblx0ICApO1xuXHQgIGlmICh2
bm9kZSBpbnN0YW5jZW9mIFZOb2RlKSB7XG5cdCAgICB2bm9kZS5mdW5jdGlvbmFsQ29udGV4dCA9
IGNvbnRleHQ7XG5cdCAgICBpZiAoZGF0YS5zbG90KSB7XG5cdCAgICAgICh2bm9kZS5kYXRhIHx8
ICh2bm9kZS5kYXRhID0ge30pKS5zbG90ID0gZGF0YS5zbG90O1xuXHQgICAgfVxuXHQgIH1cblx0
ICByZXR1cm4gdm5vZGVcblx0fVxuXHRcblx0ZnVuY3Rpb24gY3JlYXRlQ29tcG9uZW50SW5zdGFu
Y2VGb3JWbm9kZSAoXG5cdCAgdm5vZGUsIC8vIHdlIGtub3cgaXQncyBNb3VudGVkQ29tcG9uZW50
Vk5vZGUgYnV0IGZsb3cgZG9lc24ndFxuXHQgIHBhcmVudCAvLyBhY3RpdmVJbnN0YW5jZSBpbiBs
aWZlY3ljbGUgc3RhdGVcblx0KSB7XG5cdCAgdmFyIHZub2RlQ29tcG9uZW50T3B0aW9ucyA9IHZu
b2RlLmNvbXBvbmVudE9wdGlvbnM7XG5cdCAgdmFyIG9wdGlvbnMgPSB7XG5cdCAgICBfaXNDb21w
b25lbnQ6IHRydWUsXG5cdCAgICBwYXJlbnQ6IHBhcmVudCxcblx0ICAgIHByb3BzRGF0YTogdm5v
ZGVDb21wb25lbnRPcHRpb25zLnByb3BzRGF0YSxcblx0ICAgIF9jb21wb25lbnRUYWc6IHZub2Rl
Q29tcG9uZW50T3B0aW9ucy50YWcsXG5cdCAgICBfcGFyZW50Vm5vZGU6IHZub2RlLFxuXHQgICAg
X3BhcmVudExpc3RlbmVyczogdm5vZGVDb21wb25lbnRPcHRpb25zLmxpc3RlbmVycyxcblx0ICAg
IF9yZW5kZXJDaGlsZHJlbjogdm5vZGVDb21wb25lbnRPcHRpb25zLmNoaWxkcmVuXG5cdCAgfTtc
blx0ICAvLyBjaGVjayBpbmxpbmUtdGVtcGxhdGUgcmVuZGVyIGZ1bmN0aW9uc1xuXHQgIHZhciBp
bmxpbmVUZW1wbGF0ZSA9IHZub2RlLmRhdGEuaW5saW5lVGVtcGxhdGU7XG5cdCAgaWYgKGlubGlu
ZVRlbXBsYXRlKSB7XG5cdCAgICBvcHRpb25zLnJlbmRlciA9IGlubGluZVRlbXBsYXRlLnJlbmRl
cjtcblx0ICAgIG9wdGlvbnMuc3RhdGljUmVuZGVyRm5zID0gaW5saW5lVGVtcGxhdGUuc3RhdGlj
UmVuZGVyRm5zO1xuXHQgIH1cblx0ICByZXR1cm4gbmV3IHZub2RlQ29tcG9uZW50T3B0aW9ucy5D
dG9yKG9wdGlvbnMpXG5cdH1cblx0XG5cdGZ1bmN0aW9uIGluaXQgKHZub2RlLCBoeWRyYXRpbmcp
IHtcblx0ICBpZiAoIXZub2RlLmNoaWxkIHx8IHZub2RlLmNoaWxkLl9pc0Rlc3Ryb3llZCkge1xu
XHQgICAgdmFyIGNoaWxkID0gdm5vZGUuY2hpbGQgPSBjcmVhdGVDb21wb25lbnRJbnN0YW5jZUZv
clZub2RlKHZub2RlLCBhY3RpdmVJbnN0YW5jZSk7XG5cdCAgICBjaGlsZC4kbW91bnQoaHlkcmF0
aW5nID8gdm5vZGUuZWxtIDogdW5kZWZpbmVkLCBoeWRyYXRpbmcpO1xuXHQgIH0gZWxzZSBpZiAo
dm5vZGUuZGF0YS5rZWVwQWxpdmUpIHtcblx0ICAgIC8vIGtlcHQtYWxpdmUgY29tcG9uZW50cywg
dHJlYXQgYXMgYSBwYXRjaFxuXHQgICAgdmFyIG1vdW50ZWROb2RlID0gdm5vZGU7IC8vIHdvcmsg
YXJvdW5kIGZsb3dcblx0ICAgIHByZXBhdGNoKG1vdW50ZWROb2RlLCBtb3VudGVkTm9kZSk7XG5c
dCAgfVxuXHR9XG5cdFxuXHRmdW5jdGlvbiBwcmVwYXRjaCAoXG5cdCAgb2xkVm5vZGUsXG5cdCAg
dm5vZGVcblx0KSB7XG5cdCAgdmFyIG9wdGlvbnMgPSB2bm9kZS5jb21wb25lbnRPcHRpb25zO1xu
XHQgIHZhciBjaGlsZCA9IHZub2RlLmNoaWxkID0gb2xkVm5vZGUuY2hpbGQ7XG5cdCAgY2hpbGQu
X3VwZGF0ZUZyb21QYXJlbnQoXG5cdCAgICBvcHRpb25zLnByb3BzRGF0YSwgLy8gdXBkYXRlZCBw
cm9wc1xuXHQgICAgb3B0aW9ucy5saXN0ZW5lcnMsIC8vIHVwZGF0ZWQgbGlzdGVuZXJzXG5cdCAg
ICB2bm9kZSwgLy8gbmV3IHBhcmVudCB2bm9kZVxuXHQgICAgb3B0aW9ucy5jaGlsZHJlbiAvLyBu
ZXcgY2hpbGRyZW5cblx0ICApO1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBpbnNlcnQgKHZub2RlKSB7
XG5cdCAgaWYgKCF2bm9kZS5jaGlsZC5faXNNb3VudGVkKSB7XG5cdCAgICB2bm9kZS5jaGlsZC5f
aXNNb3VudGVkID0gdHJ1ZTtcblx0ICAgIGNhbGxIb29rKHZub2RlLmNoaWxkLCAnbW91bnRlZCcp
O1xuXHQgIH1cblx0ICBpZiAodm5vZGUuZGF0YS5rZWVwQWxpdmUpIHtcblx0ICAgIHZub2RlLmNo
aWxkLl9pbmFjdGl2ZSA9IGZhbHNlO1xuXHQgICAgY2FsbEhvb2sodm5vZGUuY2hpbGQsICdhY3Rp
dmF0ZWQnKTtcblx0ICB9XG5cdH1cblx0XG5cdGZ1bmN0aW9uIGRlc3Ryb3kkMSAodm5vZGUpIHtc
blx0ICBpZiAoIXZub2RlLmNoaWxkLl9pc0Rlc3Ryb3llZCkge1xuXHQgICAgaWYgKCF2bm9kZS5k
YXRhLmtlZXBBbGl2ZSkge1xuXHQgICAgICB2bm9kZS5jaGlsZC4kZGVzdHJveSgpO1xuXHQgICAg
fSBlbHNlIHtcblx0ICAgICAgdm5vZGUuY2hpbGQuX2luYWN0aXZlID0gdHJ1ZTtcblx0ICAgICAg
Y2FsbEhvb2sodm5vZGUuY2hpbGQsICdkZWFjdGl2YXRlZCcpO1xuXHQgICAgfVxuXHQgIH1cblx0
fVxuXHRcblx0ZnVuY3Rpb24gcmVzb2x2ZUFzeW5jQ29tcG9uZW50IChcblx0ICBmYWN0b3J5LFxu
XHQgIGJhc2VDdG9yLFxuXHQgIGNiXG5cdCkge1xuXHQgIGlmIChmYWN0b3J5LnJlcXVlc3RlZCkg
e1xuXHQgICAgLy8gcG9vbCBjYWxsYmFja3Ncblx0ICAgIGZhY3RvcnkucGVuZGluZ0NhbGxiYWNr
cy5wdXNoKGNiKTtcblx0ICB9IGVsc2Uge1xuXHQgICAgZmFjdG9yeS5yZXF1ZXN0ZWQgPSB0cnVl
O1xuXHQgICAgdmFyIGNicyA9IGZhY3RvcnkucGVuZGluZ0NhbGxiYWNrcyA9IFtjYl07XG5cdCAg
ICB2YXIgc3luYyA9IHRydWU7XG5cdFxuXHQgICAgdmFyIHJlc29sdmUgPSBmdW5jdGlvbiAocmVz
KSB7XG5cdCAgICAgIGlmIChpc09iamVjdChyZXMpKSB7XG5cdCAgICAgICAgcmVzID0gYmFzZUN0
b3IuZXh0ZW5kKHJlcyk7XG5cdCAgICAgIH1cblx0ICAgICAgLy8gY2FjaGUgcmVzb2x2ZWRcblx0
ICAgICAgZmFjdG9yeS5yZXNvbHZlZCA9IHJlcztcblx0ICAgICAgLy8gaW52b2tlIGNhbGxiYWNr
cyBvbmx5IGlmIHRoaXMgaXMgbm90IGEgc3luY2hyb25vdXMgcmVzb2x2ZVxuXHQgICAgICAvLyAo
YXN5bmMgcmVzb2x2ZXMgYXJlIHNoaW1tZWQgYXMgc3luY2hyb25vdXMgZHVyaW5nIFNTUilcblx0
ICAgICAgaWYgKCFzeW5jKSB7XG5cdCAgICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBjYnMubGVu
Z3RoOyBpIDwgbDsgaSsrKSB7XG5cdCAgICAgICAgICBjYnNbaV0ocmVzKTtcblx0ICAgICAgICB9
XG5cdCAgICAgIH1cblx0ICAgIH07XG5cdFxuXHQgICAgdmFyIHJlamVjdCA9IGZ1bmN0aW9uIChy
ZWFzb24pIHtcblx0ICAgICAgKFwicHJvZHVjdGlvblwiKSAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdh
cm4oXG5cdCAgICAgICAgXCJGYWlsZWQgdG8gcmVzb2x2ZSBhc3luYyBjb21wb25lbnQ6IFwiICsg
KFN0cmluZyhmYWN0b3J5KSkgK1xuXHQgICAgICAgIChyZWFzb24gPyAoXCJcXG5SZWFzb246IFwi
ICsgcmVhc29uKSA6ICcnKVxuXHQgICAgICApO1xuXHQgICAgfTtcblx0XG5cdCAgICB2YXIgcmVz
ID0gZmFjdG9yeShyZXNvbHZlLCByZWplY3QpO1xuXHRcblx0ICAgIC8vIGhhbmRsZSBwcm9taXNl
XG5cdCAgICBpZiAocmVzICYmIHR5cGVvZiByZXMudGhlbiA9PT0gJ2Z1bmN0aW9uJyAmJiAhZmFj
dG9yeS5yZXNvbHZlZCkge1xuXHQgICAgICByZXMudGhlbihyZXNvbHZlLCByZWplY3QpO1xuXHQg
ICAgfVxuXHRcblx0ICAgIHN5bmMgPSBmYWxzZTtcblx0ICAgIC8vIHJldHVybiBpbiBjYXNlIHJl
c29sdmVkIHN5bmNocm9ub3VzbHlcblx0ICAgIHJldHVybiBmYWN0b3J5LnJlc29sdmVkXG5cdCAg
fVxuXHR9XG5cdFxuXHRmdW5jdGlvbiBleHRyYWN0UHJvcHMgKGRhdGEsIEN0b3IpIHtcblx0ICAv
LyB3ZSBhcmUgb25seSBleHRyYWN0aW5nIHJhdyB2YWx1ZXMgaGVyZS5cblx0ICAvLyB2YWxpZGF0
aW9uIGFuZCBkZWZhdWx0IHZhbHVlcyBhcmUgaGFuZGxlZCBpbiB0aGUgY2hpbGRcblx0ICAvLyBj
b21wb25lbnQgaXRzZWxmLlxuXHQgIHZhciBwcm9wT3B0aW9ucyA9IEN0b3Iub3B0aW9ucy5wcm9w
cztcblx0ICBpZiAoIXByb3BPcHRpb25zKSB7XG5cdCAgICByZXR1cm5cblx0ICB9XG5cdCAgdmFy
IHJlcyA9IHt9O1xuXHQgIHZhciBhdHRycyA9IGRhdGEuYXR0cnM7XG5cdCAgdmFyIHByb3BzID0g
ZGF0YS5wcm9wcztcblx0ICB2YXIgZG9tUHJvcHMgPSBkYXRhLmRvbVByb3BzO1xuXHQgIGlmIChh
dHRycyB8fCBwcm9wcyB8fCBkb21Qcm9wcykge1xuXHQgICAgZm9yICh2YXIga2V5IGluIHByb3BP
cHRpb25zKSB7XG5cdCAgICAgIHZhciBhbHRLZXkgPSBoeXBoZW5hdGUoa2V5KTtcblx0ICAgICAg
Y2hlY2tQcm9wKHJlcywgcHJvcHMsIGtleSwgYWx0S2V5LCB0cnVlKSB8fFxuXHQgICAgICBjaGVj
a1Byb3AocmVzLCBhdHRycywga2V5LCBhbHRLZXkpIHx8XG5cdCAgICAgIGNoZWNrUHJvcChyZXMs
IGRvbVByb3BzLCBrZXksIGFsdEtleSk7XG5cdCAgICB9XG5cdCAgfVxuXHQgIHJldHVybiByZXNc
blx0fVxuXHRcblx0ZnVuY3Rpb24gY2hlY2tQcm9wIChcblx0ICByZXMsXG5cdCAgaGFzaCxcblx0
ICBrZXksXG5cdCAgYWx0S2V5LFxuXHQgIHByZXNlcnZlXG5cdCkge1xuXHQgIGlmIChoYXNoKSB7
XG5cdCAgICBpZiAoaGFzT3duKGhhc2gsIGtleSkpIHtcblx0ICAgICAgcmVzW2tleV0gPSBoYXNo
W2tleV07XG5cdCAgICAgIGlmICghcHJlc2VydmUpIHtcblx0ICAgICAgICBkZWxldGUgaGFzaFtr
ZXldO1xuXHQgICAgICB9XG5cdCAgICAgIHJldHVybiB0cnVlXG5cdCAgICB9IGVsc2UgaWYgKGhh
c093bihoYXNoLCBhbHRLZXkpKSB7XG5cdCAgICAgIHJlc1trZXldID0gaGFzaFthbHRLZXldO1xu
XHQgICAgICBpZiAoIXByZXNlcnZlKSB7XG5cdCAgICAgICAgZGVsZXRlIGhhc2hbYWx0S2V5XTtc
blx0ICAgICAgfVxuXHQgICAgICByZXR1cm4gdHJ1ZVxuXHQgICAgfVxuXHQgIH1cblx0ICByZXR1
cm4gZmFsc2Vcblx0fVxuXHRcblx0ZnVuY3Rpb24gbWVyZ2VIb29rcyAoZGF0YSkge1xuXHQgIGlm
ICghZGF0YS5ob29rKSB7XG5cdCAgICBkYXRhLmhvb2sgPSB7fTtcblx0ICB9XG5cdCAgZm9yICh2
YXIgaSA9IDA7IGkgPCBob29rc1RvTWVyZ2UubGVuZ3RoOyBpKyspIHtcblx0ICAgIHZhciBrZXkg
PSBob29rc1RvTWVyZ2VbaV07XG5cdCAgICB2YXIgZnJvbVBhcmVudCA9IGRhdGEuaG9va1trZXld
O1xuXHQgICAgdmFyIG91cnMgPSBob29rc1trZXldO1xuXHQgICAgZGF0YS5ob29rW2tleV0gPSBm
cm9tUGFyZW50ID8gbWVyZ2VIb29rJDEob3VycywgZnJvbVBhcmVudCkgOiBvdXJzO1xuXHQgIH1c
blx0fVxuXHRcblx0ZnVuY3Rpb24gbWVyZ2VIb29rJDEgKGEsIGIpIHtcblx0ICAvLyBzaW5jZSBh
bGwgaG9va3MgaGF2ZSBhdCBtb3N0IHR3byBhcmdzLCB1c2UgZml4ZWQgYXJnc1xuXHQgIC8vIHRv
IGF2b2lkIGhhdmluZyB0byB1c2UgZm4uYXBwbHkoKS5cblx0ICByZXR1cm4gZnVuY3Rpb24gKF8s
IF9fKSB7XG5cdCAgICBhKF8sIF9fKTtcblx0ICAgIGIoXywgX18pO1xuXHQgIH1cblx0fVxuXHRc
blx0LyogICovXG5cdFxuXHQvLyB3cmFwcGVyIGZ1bmN0aW9uIGZvciBwcm92aWRpbmcgYSBtb3Jl
IGZsZXhpYmxlIGludGVyZmFjZVxuXHQvLyB3aXRob3V0IGdldHRpbmcgeWVsbGVkIGF0IGJ5IGZs
b3dcblx0ZnVuY3Rpb24gY3JlYXRlRWxlbWVudCAoXG5cdCAgdGFnLFxuXHQgIGRhdGEsXG5cdCAg
Y2hpbGRyZW5cblx0KSB7XG5cdCAgaWYgKGRhdGEgJiYgKEFycmF5LmlzQXJyYXkoZGF0YSkgfHwg
dHlwZW9mIGRhdGEgIT09ICdvYmplY3QnKSkge1xuXHQgICAgY2hpbGRyZW4gPSBkYXRhO1xuXHQg
ICAgZGF0YSA9IHVuZGVmaW5lZDtcblx0ICB9XG5cdCAgLy8gbWFrZSBzdXJlIHRvIHVzZSByZWFs
IGluc3RhbmNlIGluc3RlYWQgb2YgcHJveHkgYXMgY29udGV4dFxuXHQgIHJldHVybiBfY3JlYXRl
RWxlbWVudCh0aGlzLl9zZWxmLCB0YWcsIGRhdGEsIGNoaWxkcmVuKVxuXHR9XG5cdFxuXHRmdW5j
dGlvbiBfY3JlYXRlRWxlbWVudCAoXG5cdCAgY29udGV4dCxcblx0ICB0YWcsXG5cdCAgZGF0YSxc
blx0ICBjaGlsZHJlblxuXHQpIHtcblx0ICBpZiAoZGF0YSAmJiBkYXRhLl9fb2JfXykge1xuXHQg
ICAgKFwicHJvZHVjdGlvblwiKSAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4oXG5cdCAgICAgIFwi
QXZvaWQgdXNpbmcgb2JzZXJ2ZWQgZGF0YSBvYmplY3QgYXMgdm5vZGUgZGF0YTogXCIgKyAoSlNP
Ti5zdHJpbmdpZnkoZGF0YSkpICsgXCJcXG5cIiArXG5cdCAgICAgICdBbHdheXMgY3JlYXRlIGZy
ZXNoIHZub2RlIGRhdGEgb2JqZWN0cyBpbiBlYWNoIHJlbmRlciEnLFxuXHQgICAgICBjb250ZXh0
XG5cdCAgICApO1xuXHQgICAgcmV0dXJuXG5cdCAgfVxuXHQgIGlmICghdGFnKSB7XG5cdCAgICAv
LyBpbiBjYXNlIG9mIGNvbXBvbmVudCA6aXMgc2V0IHRvIGZhbHN5IHZhbHVlXG5cdCAgICByZXR1
cm4gZW1wdHlWTm9kZSgpXG5cdCAgfVxuXHQgIC8vIHN1cHBvcnQgc2luZ2xlIGZ1bmN0aW9uIGNo
aWxkcmVuIGFzIGRlZmF1bHQgc2NvcGVkIHNsb3Rcblx0ICBpZiAoQXJyYXkuaXNBcnJheShjaGls
ZHJlbikgJiZcblx0ICAgICAgdHlwZW9mIGNoaWxkcmVuWzBdID09PSAnZnVuY3Rpb24nKSB7XG5c
dCAgICBkYXRhID0gZGF0YSB8fCB7fTtcblx0ICAgIGRhdGEuc2NvcGVkU2xvdHMgPSB7IGRlZmF1
bHQ6IGNoaWxkcmVuWzBdIH07XG5cdCAgICBjaGlsZHJlbi5sZW5ndGggPSAwO1xuXHQgIH1cblx0
ICBpZiAodHlwZW9mIHRhZyA9PT0gJ3N0cmluZycpIHtcblx0ICAgIHZhciBDdG9yO1xuXHQgICAg
dmFyIG5zID0gY29uZmlnLmdldFRhZ05hbWVzcGFjZSh0YWcpO1xuXHQgICAgaWYgKGNvbmZpZy5p
c1Jlc2VydmVkVGFnKHRhZykpIHtcblx0ICAgICAgLy8gcGxhdGZvcm0gYnVpbHQtaW4gZWxlbWVu
dHNcblx0ICAgICAgcmV0dXJuIG5ldyBWTm9kZShcblx0ICAgICAgICB0YWcsIGRhdGEsIG5vcm1h
bGl6ZUNoaWxkcmVuKGNoaWxkcmVuLCBucyksXG5cdCAgICAgICAgdW5kZWZpbmVkLCB1bmRlZmlu
ZWQsIG5zLCBjb250ZXh0XG5cdCAgICAgIClcblx0ICAgIH0gZWxzZSBpZiAoKEN0b3IgPSByZXNv
bHZlQXNzZXQoY29udGV4dC4kb3B0aW9ucywgJ2NvbXBvbmVudHMnLCB0YWcpKSkge1xuXHQgICAg
ICAvLyBjb21wb25lbnRcblx0ICAgICAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChDdG9yLCBkYXRh
LCBjb250ZXh0LCBjaGlsZHJlbiwgdGFnKVxuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgLy8gdW5r
bm93biBvciB1bmxpc3RlZCBuYW1lc3BhY2VkIGVsZW1lbnRzXG5cdCAgICAgIC8vIGNoZWNrIGF0
IHJ1bnRpbWUgYmVjYXVzZSBpdCBtYXkgZ2V0IGFzc2lnbmVkIGEgbmFtZXNwYWNlIHdoZW4gaXRz
XG5cdCAgICAgIC8vIHBhcmVudCBub3JtYWxpemVzIGNoaWxkcmVuXG5cdCAgICAgIHZhciBjaGls
ZE5zID0gdGFnID09PSAnZm9yZWlnbk9iamVjdCcgPyAneGh0bWwnIDogbnM7XG5cdCAgICAgIHJl
dHVybiBuZXcgVk5vZGUoXG5cdCAgICAgICAgdGFnLCBkYXRhLCBub3JtYWxpemVDaGlsZHJlbihj
aGlsZHJlbiwgY2hpbGROcyksXG5cdCAgICAgICAgdW5kZWZpbmVkLCB1bmRlZmluZWQsIG5zLCBj
b250ZXh0XG5cdCAgICAgIClcblx0ICAgIH1cblx0ICB9IGVsc2Uge1xuXHQgICAgLy8gZGlyZWN0
IGNvbXBvbmVudCBvcHRpb25zIC8gY29uc3RydWN0b3Jcblx0ICAgIHJldHVybiBjcmVhdGVDb21w
b25lbnQodGFnLCBkYXRhLCBjb250ZXh0LCBjaGlsZHJlbilcblx0ICB9XG5cdH1cblx0XG5cdC8q
ICAqL1xuXHRcblx0ZnVuY3Rpb24gaW5pdFJlbmRlciAodm0pIHtcblx0ICB2bS4kdm5vZGUgPSBu
dWxsOyAvLyB0aGUgcGxhY2Vob2xkZXIgbm9kZSBpbiBwYXJlbnQgdHJlZVxuXHQgIHZtLl92bm9k
ZSA9IG51bGw7IC8vIHRoZSByb290IG9mIHRoZSBjaGlsZCB0cmVlXG5cdCAgdm0uX3N0YXRpY1Ry
ZWVzID0gbnVsbDtcblx0ICB2bS5fcmVuZGVyQ29udGV4dCA9IHZtLiRvcHRpb25zLl9wYXJlbnRW
bm9kZSAmJiB2bS4kb3B0aW9ucy5fcGFyZW50Vm5vZGUuY29udGV4dDtcblx0ICB2bS4kc2xvdHMg
PSByZXNvbHZlU2xvdHModm0uJG9wdGlvbnMuX3JlbmRlckNoaWxkcmVuLCB2bS5fcmVuZGVyQ29u
dGV4dCk7XG5cdCAgdm0uJHNjb3BlZFNsb3RzID0ge307XG5cdCAgLy8gYmluZCB0aGUgcHVibGlj
IGNyZWF0ZUVsZW1lbnQgZm4gdG8gdGhpcyBpbnN0YW5jZVxuXHQgIC8vIHNvIHRoYXQgd2UgZ2V0
IHByb3BlciByZW5kZXIgY29udGV4dCBpbnNpZGUgaXQuXG5cdCAgdm0uJGNyZWF0ZUVsZW1lbnQg
PSBiaW5kJDEoY3JlYXRlRWxlbWVudCwgdm0pO1xuXHQgIGlmICh2bS4kb3B0aW9ucy5lbCkge1xu
XHQgICAgdm0uJG1vdW50KHZtLiRvcHRpb25zLmVsKTtcblx0ICB9XG5cdH1cblx0XG5cdGZ1bmN0
aW9uIHJlbmRlck1peGluIChWdWUpIHtcblx0ICBWdWUucHJvdG90eXBlLiRuZXh0VGljayA9IGZ1
bmN0aW9uIChmbikge1xuXHQgICAgcmV0dXJuIG5leHRUaWNrKGZuLCB0aGlzKVxuXHQgIH07XG5c
dFxuXHQgIFZ1ZS5wcm90b3R5cGUuX3JlbmRlciA9IGZ1bmN0aW9uICgpIHtcblx0ICAgIHZhciB2
bSA9IHRoaXM7XG5cdCAgICB2YXIgcmVmID0gdm0uJG9wdGlvbnM7XG5cdCAgICB2YXIgcmVuZGVy
ID0gcmVmLnJlbmRlcjtcblx0ICAgIHZhciBzdGF0aWNSZW5kZXJGbnMgPSByZWYuc3RhdGljUmVu
ZGVyRm5zO1xuXHQgICAgdmFyIF9wYXJlbnRWbm9kZSA9IHJlZi5fcGFyZW50Vm5vZGU7XG5cdFxu
XHQgICAgaWYgKHZtLl9pc01vdW50ZWQpIHtcblx0ICAgICAgLy8gY2xvbmUgc2xvdCBub2RlcyBv
biByZS1yZW5kZXJzXG5cdCAgICAgIGZvciAodmFyIGtleSBpbiB2bS4kc2xvdHMpIHtcblx0ICAg
ICAgICB2bS4kc2xvdHNba2V5XSA9IGNsb25lVk5vZGVzKHZtLiRzbG90c1trZXldKTtcblx0ICAg
ICAgfVxuXHQgICAgfVxuXHRcblx0ICAgIGlmIChfcGFyZW50Vm5vZGUgJiYgX3BhcmVudFZub2Rl
LmRhdGEuc2NvcGVkU2xvdHMpIHtcblx0ICAgICAgdm0uJHNjb3BlZFNsb3RzID0gX3BhcmVudFZu
b2RlLmRhdGEuc2NvcGVkU2xvdHM7XG5cdCAgICB9XG5cdFxuXHQgICAgaWYgKHN0YXRpY1JlbmRl
ckZucyAmJiAhdm0uX3N0YXRpY1RyZWVzKSB7XG5cdCAgICAgIHZtLl9zdGF0aWNUcmVlcyA9IFtd
O1xuXHQgICAgfVxuXHQgICAgLy8gc2V0IHBhcmVudCB2bm9kZS4gdGhpcyBhbGxvd3MgcmVuZGVy
IGZ1bmN0aW9ucyB0byBoYXZlIGFjY2Vzc1xuXHQgICAgLy8gdG8gdGhlIGRhdGEgb24gdGhlIHBs
YWNlaG9sZGVyIG5vZGUuXG5cdCAgICB2bS4kdm5vZGUgPSBfcGFyZW50Vm5vZGU7XG5cdCAgICAv
LyByZW5kZXIgc2VsZlxuXHQgICAgdmFyIHZub2RlO1xuXHQgICAgdHJ5IHtcblx0ICAgICAgdm5v
ZGUgPSByZW5kZXIuY2FsbCh2bS5fcmVuZGVyUHJveHksIHZtLiRjcmVhdGVFbGVtZW50KTtcblx0
ICAgIH0gY2F0Y2ggKGUpIHtcblx0ICAgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgICAgd2Fybigo
XCJFcnJvciB3aGVuIHJlbmRlcmluZyBcIiArIChmb3JtYXRDb21wb25lbnROYW1lKHZtKSkgKyBc
IjpcIikpO1xuXHQgICAgICB9XG5cdCAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG5c
dCAgICAgIGlmIChjb25maWcuZXJyb3JIYW5kbGVyKSB7XG5cdCAgICAgICAgY29uZmlnLmVycm9y
SGFuZGxlci5jYWxsKG51bGwsIGUsIHZtKTtcblx0ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICBp
ZiAoaXNTZXJ2ZXJSZW5kZXJpbmcoKSkge1xuXHQgICAgICAgICAgdGhyb3cgZVxuXHQgICAgICAg
IH0gZWxzZSB7XG5cdCAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuXHQgICAgICAgIH1cblx0
ICAgICAgfVxuXHQgICAgICAvLyByZXR1cm4gcHJldmlvdXMgdm5vZGUgdG8gcHJldmVudCByZW5k
ZXIgZXJyb3IgY2F1c2luZyBibGFuayBjb21wb25lbnRcblx0ICAgICAgdm5vZGUgPSB2bS5fdm5v
ZGU7XG5cdCAgICB9XG5cdCAgICAvLyByZXR1cm4gZW1wdHkgdm5vZGUgaW4gY2FzZSB0aGUgcmVu
ZGVyIGZ1bmN0aW9uIGVycm9yZWQgb3V0XG5cdCAgICBpZiAoISh2bm9kZSBpbnN0YW5jZW9mIFZO
b2RlKSkge1xuXHQgICAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgICB3YXJuKFxuXHQgICAgICAg
ICAgJ011bHRpcGxlIHJvb3Qgbm9kZXMgcmV0dXJuZWQgZnJvbSByZW5kZXIgZnVuY3Rpb24uIFJl
bmRlciBmdW5jdGlvbiAnICtcblx0ICAgICAgICAgICdzaG91bGQgcmV0dXJuIGEgc2luZ2xlIHJv
b3Qgbm9kZS4nLFxuXHQgICAgICAgICAgdm1cblx0ICAgICAgICApO1xuXHQgICAgICB9XG5cdCAg
ICAgIHZub2RlID0gZW1wdHlWTm9kZSgpO1xuXHQgICAgfVxuXHQgICAgLy8gc2V0IHBhcmVudFxu
XHQgICAgdm5vZGUucGFyZW50ID0gX3BhcmVudFZub2RlO1xuXHQgICAgcmV0dXJuIHZub2RlXG5c
dCAgfTtcblx0XG5cdCAgLy8gc2hvcnRoYW5kcyB1c2VkIGluIHJlbmRlciBmdW5jdGlvbnNcblx0
ICBWdWUucHJvdG90eXBlLl9oID0gY3JlYXRlRWxlbWVudDtcblx0ICAvLyB0b1N0cmluZyBmb3Ig
bXVzdGFjaGVzXG5cdCAgVnVlLnByb3RvdHlwZS5fcyA9IF90b1N0cmluZztcblx0ICAvLyBudW1i
ZXIgY29udmVyc2lvblxuXHQgIFZ1ZS5wcm90b3R5cGUuX24gPSB0b051bWJlcjtcblx0ICAvLyBl
bXB0eSB2bm9kZVxuXHQgIFZ1ZS5wcm90b3R5cGUuX2UgPSBlbXB0eVZOb2RlO1xuXHQgIC8vIGxv
b3NlIGVxdWFsXG5cdCAgVnVlLnByb3RvdHlwZS5fcSA9IGxvb3NlRXF1YWw7XG5cdCAgLy8gbG9v
c2UgaW5kZXhPZlxuXHQgIFZ1ZS5wcm90b3R5cGUuX2kgPSBsb29zZUluZGV4T2Y7XG5cdFxuXHQg
IC8vIHJlbmRlciBzdGF0aWMgdHJlZSBieSBpbmRleFxuXHQgIFZ1ZS5wcm90b3R5cGUuX20gPSBm
dW5jdGlvbiByZW5kZXJTdGF0aWMgKFxuXHQgICAgaW5kZXgsXG5cdCAgICBpc0luRm9yXG5cdCAg
KSB7XG5cdCAgICB2YXIgdHJlZSA9IHRoaXMuX3N0YXRpY1RyZWVzW2luZGV4XTtcblx0ICAgIC8v
IGlmIGhhcyBhbHJlYWR5LXJlbmRlcmVkIHN0YXRpYyB0cmVlIGFuZCBub3QgaW5zaWRlIHYtZm9y
LFxuXHQgICAgLy8gd2UgY2FuIHJldXNlIHRoZSBzYW1lIHRyZWUgYnkgZG9pbmcgYSBzaGFsbG93
IGNsb25lLlxuXHQgICAgaWYgKHRyZWUgJiYgIWlzSW5Gb3IpIHtcblx0ICAgICAgcmV0dXJuIEFy
cmF5LmlzQXJyYXkodHJlZSlcblx0ICAgICAgICA/IGNsb25lVk5vZGVzKHRyZWUpXG5cdCAgICAg
ICAgOiBjbG9uZVZOb2RlKHRyZWUpXG5cdCAgICB9XG5cdCAgICAvLyBvdGhlcndpc2UsIHJlbmRl
ciBhIGZyZXNoIHRyZWUuXG5cdCAgICB0cmVlID0gdGhpcy5fc3RhdGljVHJlZXNbaW5kZXhdID0g
dGhpcy4kb3B0aW9ucy5zdGF0aWNSZW5kZXJGbnNbaW5kZXhdLmNhbGwodGhpcy5fcmVuZGVyUHJv
eHkpO1xuXHQgICAgbWFya1N0YXRpYyh0cmVlLCAoXCJfX3N0YXRpY19fXCIgKyBpbmRleCksIGZh
bHNlKTtcblx0ICAgIHJldHVybiB0cmVlXG5cdCAgfTtcblx0XG5cdCAgLy8gbWFyayBub2RlIGFz
IHN0YXRpYyAodi1vbmNlKVxuXHQgIFZ1ZS5wcm90b3R5cGUuX28gPSBmdW5jdGlvbiBtYXJrT25j
ZSAoXG5cdCAgICB0cmVlLFxuXHQgICAgaW5kZXgsXG5cdCAgICBrZXlcblx0ICApIHtcblx0ICAg
IG1hcmtTdGF0aWModHJlZSwgKFwiX19vbmNlX19cIiArIGluZGV4ICsgKGtleSA/IChcIl9cIiAr
IGtleSkgOiBcIlwiKSksIHRydWUpO1xuXHQgICAgcmV0dXJuIHRyZWVcblx0ICB9O1xuXHRcblx0
ICBmdW5jdGlvbiBtYXJrU3RhdGljICh0cmVlLCBrZXksIGlzT25jZSkge1xuXHQgICAgaWYgKEFy
cmF5LmlzQXJyYXkodHJlZSkpIHtcblx0ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0cmVlLmxl
bmd0aDsgaSsrKSB7XG5cdCAgICAgICAgaWYgKHRyZWVbaV0gJiYgdHlwZW9mIHRyZWVbaV0gIT09
ICdzdHJpbmcnKSB7XG5cdCAgICAgICAgICBtYXJrU3RhdGljTm9kZSh0cmVlW2ldLCAoa2V5ICsg
XCJfXCIgKyBpKSwgaXNPbmNlKTtcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgIH0gZWxz
ZSB7XG5cdCAgICAgIG1hcmtTdGF0aWNOb2RlKHRyZWUsIGtleSwgaXNPbmNlKTtcblx0ICAgIH1c
blx0ICB9XG5cdFxuXHQgIGZ1bmN0aW9uIG1hcmtTdGF0aWNOb2RlIChub2RlLCBrZXksIGlzT25j
ZSkge1xuXHQgICAgbm9kZS5pc1N0YXRpYyA9IHRydWU7XG5cdCAgICBub2RlLmtleSA9IGtleTtc
blx0ICAgIG5vZGUuaXNPbmNlID0gaXNPbmNlO1xuXHQgIH1cblx0XG5cdCAgLy8gZmlsdGVyIHJl
c29sdXRpb24gaGVscGVyXG5cdCAgdmFyIGlkZW50aXR5ID0gZnVuY3Rpb24gKF8pIHsgcmV0dXJu
IF87IH07XG5cdCAgVnVlLnByb3RvdHlwZS5fZiA9IGZ1bmN0aW9uIHJlc29sdmVGaWx0ZXIgKGlk
KSB7XG5cdCAgICByZXR1cm4gcmVzb2x2ZUFzc2V0KHRoaXMuJG9wdGlvbnMsICdmaWx0ZXJzJywg
aWQsIHRydWUpIHx8IGlkZW50aXR5XG5cdCAgfTtcblx0XG5cdCAgLy8gcmVuZGVyIHYtZm9yXG5c
dCAgVnVlLnByb3RvdHlwZS5fbCA9IGZ1bmN0aW9uIHJlbmRlckxpc3QgKFxuXHQgICAgdmFsLFxu
XHQgICAgcmVuZGVyXG5cdCAgKSB7XG5cdCAgICB2YXIgcmV0LCBpLCBsLCBrZXlzLCBrZXk7XG5c
dCAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWwpKSB7XG5cdCAgICAgIHJldCA9IG5ldyBBcnJheSh2
YWwubGVuZ3RoKTtcblx0ICAgICAgZm9yIChpID0gMCwgbCA9IHZhbC5sZW5ndGg7IGkgPCBsOyBp
KyspIHtcblx0ICAgICAgICByZXRbaV0gPSByZW5kZXIodmFsW2ldLCBpKTtcblx0ICAgICAgfVxu
XHQgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuXHQgICAgICByZXQg
PSBuZXcgQXJyYXkodmFsKTtcblx0ICAgICAgZm9yIChpID0gMDsgaSA8IHZhbDsgaSsrKSB7XG5c
dCAgICAgICAgcmV0W2ldID0gcmVuZGVyKGkgKyAxLCBpKTtcblx0ICAgICAgfVxuXHQgICAgfSBl
bHNlIGlmIChpc09iamVjdCh2YWwpKSB7XG5cdCAgICAgIGtleXMgPSBPYmplY3Qua2V5cyh2YWwp
O1xuXHQgICAgICByZXQgPSBuZXcgQXJyYXkoa2V5cy5sZW5ndGgpO1xuXHQgICAgICBmb3IgKGkg
PSAwLCBsID0ga2V5cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcblx0ICAgICAgICBrZXkgPSBrZXlz
W2ldO1xuXHQgICAgICAgIHJldFtpXSA9IHJlbmRlcih2YWxba2V5XSwga2V5LCBpKTtcblx0ICAg
ICAgfVxuXHQgICAgfVxuXHQgICAgcmV0dXJuIHJldFxuXHQgIH07XG5cdFxuXHQgIC8vIHJlbmRl
clNsb3Rcblx0ICBWdWUucHJvdG90eXBlLl90ID0gZnVuY3Rpb24gKFxuXHQgICAgbmFtZSxcblx0
ICAgIGZhbGxiYWNrLFxuXHQgICAgcHJvcHNcblx0ICApIHtcblx0ICAgIHZhciBzY29wZWRTbG90
Rm4gPSB0aGlzLiRzY29wZWRTbG90c1tuYW1lXTtcblx0ICAgIGlmIChzY29wZWRTbG90Rm4pIHsg
Ly8gc2NvcGVkIHNsb3Rcblx0ICAgICAgcmV0dXJuIHNjb3BlZFNsb3RGbihwcm9wcyB8fCB7fSkg
fHwgZmFsbGJhY2tcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIHZhciBzbG90Tm9kZXMgPSB0aGlz
LiRzbG90c1tuYW1lXTtcblx0ICAgICAgLy8gd2FybiBkdXBsaWNhdGUgc2xvdCB1c2FnZVxuXHQg
ICAgICBpZiAoc2xvdE5vZGVzICYmIChcInByb2R1Y3Rpb25cIikgIT09ICdwcm9kdWN0aW9uJykg
e1xuXHQgICAgICAgIHNsb3ROb2Rlcy5fcmVuZGVyZWQgJiYgd2Fybihcblx0ICAgICAgICAgIFwi
RHVwbGljYXRlIHByZXNlbmNlIG9mIHNsb3QgXFxcIlwiICsgbmFtZSArIFwiXFxcIiBmb3VuZCBp
biB0aGUgc2FtZSByZW5kZXIgdHJlZSBcIiArXG5cdCAgICAgICAgICBcIi0gdGhpcyB3aWxsIGxp
a2VseSBjYXVzZSByZW5kZXIgZXJyb3JzLlwiLFxuXHQgICAgICAgICAgdGhpc1xuXHQgICAgICAg
ICk7XG5cdCAgICAgICAgc2xvdE5vZGVzLl9yZW5kZXJlZCA9IHRydWU7XG5cdCAgICAgIH1cblx0
ICAgICAgcmV0dXJuIHNsb3ROb2RlcyB8fCBmYWxsYmFja1xuXHQgICAgfVxuXHQgIH07XG5cdFxu
XHQgIC8vIGFwcGx5IHYtYmluZCBvYmplY3Rcblx0ICBWdWUucHJvdG90eXBlLl9iID0gZnVuY3Rp
b24gYmluZFByb3BzIChcblx0ICAgIGRhdGEsXG5cdCAgICB0YWcsXG5cdCAgICB2YWx1ZSxcblx0
ICAgIGFzUHJvcFxuXHQgICkge1xuXHQgICAgaWYgKHZhbHVlKSB7XG5cdCAgICAgIGlmICghaXNP
YmplY3QodmFsdWUpKSB7XG5cdCAgICAgICAgKFwicHJvZHVjdGlvblwiKSAhPT0gJ3Byb2R1Y3Rp
b24nICYmIHdhcm4oXG5cdCAgICAgICAgICAndi1iaW5kIHdpdGhvdXQgYXJndW1lbnQgZXhwZWN0
cyBhbiBPYmplY3Qgb3IgQXJyYXkgdmFsdWUnLFxuXHQgICAgICAgICAgdGhpc1xuXHQgICAgICAg
ICk7XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUp
KSB7XG5cdCAgICAgICAgICB2YWx1ZSA9IHRvT2JqZWN0KHZhbHVlKTtcblx0ICAgICAgICB9XG5c
dCAgICAgICAgZm9yICh2YXIga2V5IGluIHZhbHVlKSB7XG5cdCAgICAgICAgICBpZiAoa2V5ID09
PSAnY2xhc3MnIHx8IGtleSA9PT0gJ3N0eWxlJykge1xuXHQgICAgICAgICAgICBkYXRhW2tleV0g
PSB2YWx1ZVtrZXldO1xuXHQgICAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgICAgdmFyIGhh
c2ggPSBhc1Byb3AgfHwgY29uZmlnLm11c3RVc2VQcm9wKHRhZywga2V5KVxuXHQgICAgICAgICAg
ICAgID8gZGF0YS5kb21Qcm9wcyB8fCAoZGF0YS5kb21Qcm9wcyA9IHt9KVxuXHQgICAgICAgICAg
ICAgIDogZGF0YS5hdHRycyB8fCAoZGF0YS5hdHRycyA9IHt9KTtcblx0ICAgICAgICAgICAgaGFz
aFtrZXldID0gdmFsdWVba2V5XTtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdCAgICAg
IH1cblx0ICAgIH1cblx0ICAgIHJldHVybiBkYXRhXG5cdCAgfTtcblx0XG5cdCAgLy8gZXhwb3Nl
IHYtb24ga2V5Q29kZXNcblx0ICBWdWUucHJvdG90eXBlLl9rID0gZnVuY3Rpb24gZ2V0S2V5Q29k
ZXMgKGtleSkge1xuXHQgICAgcmV0dXJuIGNvbmZpZy5rZXlDb2Rlc1trZXldXG5cdCAgfTtcblx0
fVxuXHRcblx0ZnVuY3Rpb24gcmVzb2x2ZVNsb3RzIChcblx0ICByZW5kZXJDaGlsZHJlbixcblx0
ICBjb250ZXh0XG5cdCkge1xuXHQgIHZhciBzbG90cyA9IHt9O1xuXHQgIGlmICghcmVuZGVyQ2hp
bGRyZW4pIHtcblx0ICAgIHJldHVybiBzbG90c1xuXHQgIH1cblx0ICB2YXIgY2hpbGRyZW4gPSBu
b3JtYWxpemVDaGlsZHJlbihyZW5kZXJDaGlsZHJlbikgfHwgW107XG5cdCAgdmFyIGRlZmF1bHRT
bG90ID0gW107XG5cdCAgdmFyIG5hbWUsIGNoaWxkO1xuXHQgIGZvciAodmFyIGkgPSAwLCBsID0g
Y2hpbGRyZW4ubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG5cdCAgICBjaGlsZCA9IGNoaWxkcmVuW2ld
O1xuXHQgICAgLy8gbmFtZWQgc2xvdHMgc2hvdWxkIG9ubHkgYmUgcmVzcGVjdGVkIGlmIHRoZSB2
bm9kZSB3YXMgcmVuZGVyZWQgaW4gdGhlXG5cdCAgICAvLyBzYW1lIGNvbnRleHQuXG5cdCAgICBp
ZiAoKGNoaWxkLmNvbnRleHQgPT09IGNvbnRleHQgfHwgY2hpbGQuZnVuY3Rpb25hbENvbnRleHQg
PT09IGNvbnRleHQpICYmXG5cdCAgICAgICAgY2hpbGQuZGF0YSAmJiAobmFtZSA9IGNoaWxkLmRh
dGEuc2xvdCkpIHtcblx0ICAgICAgdmFyIHNsb3QgPSAoc2xvdHNbbmFtZV0gfHwgKHNsb3RzW25h
bWVdID0gW10pKTtcblx0ICAgICAgaWYgKGNoaWxkLnRhZyA9PT0gJ3RlbXBsYXRlJykge1xuXHQg
ICAgICAgIHNsb3QucHVzaC5hcHBseShzbG90LCBjaGlsZC5jaGlsZHJlbik7XG5cdCAgICAgIH0g
ZWxzZSB7XG5cdCAgICAgICAgc2xvdC5wdXNoKGNoaWxkKTtcblx0ICAgICAgfVxuXHQgICAgfSBl
bHNlIHtcblx0ICAgICAgZGVmYXVsdFNsb3QucHVzaChjaGlsZCk7XG5cdCAgICB9XG5cdCAgfVxu
XHQgIC8vIGlnbm9yZSBzaW5nbGUgd2hpdGVzcGFjZVxuXHQgIGlmIChkZWZhdWx0U2xvdC5sZW5n
dGggJiYgIShcblx0ICAgIGRlZmF1bHRTbG90Lmxlbmd0aCA9PT0gMSAmJlxuXHQgICAgKGRlZmF1
bHRTbG90WzBdLnRleHQgPT09ICcgJyB8fCBkZWZhdWx0U2xvdFswXS5pc0NvbW1lbnQpXG5cdCAg
KSkge1xuXHQgICAgc2xvdHMuZGVmYXVsdCA9IGRlZmF1bHRTbG90O1xuXHQgIH1cblx0ICByZXR1
cm4gc2xvdHNcblx0fVxuXHRcblx0LyogICovXG5cdFxuXHRmdW5jdGlvbiBpbml0RXZlbnRzICh2
bSkge1xuXHQgIHZtLl9ldmVudHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXHQgIC8vIGluaXQg
cGFyZW50IGF0dGFjaGVkIGV2ZW50c1xuXHQgIHZhciBsaXN0ZW5lcnMgPSB2bS4kb3B0aW9ucy5f
cGFyZW50TGlzdGVuZXJzO1xuXHQgIHZhciBvbiA9IGJpbmQkMSh2bS4kb24sIHZtKTtcblx0ICB2
YXIgb2ZmID0gYmluZCQxKHZtLiRvZmYsIHZtKTtcblx0ICB2bS5fdXBkYXRlTGlzdGVuZXJzID0g
ZnVuY3Rpb24gKGxpc3RlbmVycywgb2xkTGlzdGVuZXJzKSB7XG5cdCAgICB1cGRhdGVMaXN0ZW5l
cnMobGlzdGVuZXJzLCBvbGRMaXN0ZW5lcnMgfHwge30sIG9uLCBvZmYsIHZtKTtcblx0ICB9O1xu
XHQgIGlmIChsaXN0ZW5lcnMpIHtcblx0ICAgIHZtLl91cGRhdGVMaXN0ZW5lcnMobGlzdGVuZXJz
KTtcblx0ICB9XG5cdH1cblx0XG5cdGZ1bmN0aW9uIGV2ZW50c01peGluIChWdWUpIHtcblx0ICBW
dWUucHJvdG90eXBlLiRvbiA9IGZ1bmN0aW9uIChldmVudCwgZm4pIHtcblx0ICAgIHZhciB2bSA9
IHRoaXM7KHZtLl9ldmVudHNbZXZlbnRdIHx8ICh2bS5fZXZlbnRzW2V2ZW50XSA9IFtdKSkucHVz
aChmbik7XG5cdCAgICByZXR1cm4gdm1cblx0ICB9O1xuXHRcblx0ICBWdWUucHJvdG90eXBlLiRv
bmNlID0gZnVuY3Rpb24gKGV2ZW50LCBmbikge1xuXHQgICAgdmFyIHZtID0gdGhpcztcblx0ICAg
IGZ1bmN0aW9uIG9uICgpIHtcblx0ICAgICAgdm0uJG9mZihldmVudCwgb24pO1xuXHQgICAgICBm
bi5hcHBseSh2bSwgYXJndW1lbnRzKTtcblx0ICAgIH1cblx0ICAgIG9uLmZuID0gZm47XG5cdCAg
ICB2bS4kb24oZXZlbnQsIG9uKTtcblx0ICAgIHJldHVybiB2bVxuXHQgIH07XG5cdFxuXHQgIFZ1
ZS5wcm90b3R5cGUuJG9mZiA9IGZ1bmN0aW9uIChldmVudCwgZm4pIHtcblx0ICAgIHZhciB2bSA9
IHRoaXM7XG5cdCAgICAvLyBhbGxcblx0ICAgIGlmICghYXJndW1lbnRzLmxlbmd0aCkge1xuXHQg
ICAgICB2bS5fZXZlbnRzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblx0ICAgICAgcmV0dXJuIHZt
XG5cdCAgICB9XG5cdCAgICAvLyBzcGVjaWZpYyBldmVudFxuXHQgICAgdmFyIGNicyA9IHZtLl9l
dmVudHNbZXZlbnRdO1xuXHQgICAgaWYgKCFjYnMpIHtcblx0ICAgICAgcmV0dXJuIHZtXG5cdCAg
ICB9XG5cdCAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkge1xuXHQgICAgICB2bS5fZXZl
bnRzW2V2ZW50XSA9IG51bGw7XG5cdCAgICAgIHJldHVybiB2bVxuXHQgICAgfVxuXHQgICAgLy8g
c3BlY2lmaWMgaGFuZGxlclxuXHQgICAgdmFyIGNiO1xuXHQgICAgdmFyIGkgPSBjYnMubGVuZ3Ro
O1xuXHQgICAgd2hpbGUgKGktLSkge1xuXHQgICAgICBjYiA9IGNic1tpXTtcblx0ICAgICAgaWYg
KGNiID09PSBmbiB8fCBjYi5mbiA9PT0gZm4pIHtcblx0ICAgICAgICBjYnMuc3BsaWNlKGksIDEp
O1xuXHQgICAgICAgIGJyZWFrXG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICAgIHJldHVybiB2bVxu
XHQgIH07XG5cdFxuXHQgIFZ1ZS5wcm90b3R5cGUuJGVtaXQgPSBmdW5jdGlvbiAoZXZlbnQpIHtc
blx0ICAgIHZhciB2bSA9IHRoaXM7XG5cdCAgICB2YXIgY2JzID0gdm0uX2V2ZW50c1tldmVudF07
XG5cdCAgICBpZiAoY2JzKSB7XG5cdCAgICAgIGNicyA9IGNicy5sZW5ndGggPiAxID8gdG9BcnJh
eShjYnMpIDogY2JzO1xuXHQgICAgICB2YXIgYXJncyA9IHRvQXJyYXkoYXJndW1lbnRzLCAxKTtc
blx0ICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBjYnMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG5c
dCAgICAgICAgY2JzW2ldLmFwcGx5KHZtLCBhcmdzKTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQg
ICAgcmV0dXJuIHZtXG5cdCAgfTtcblx0fVxuXHRcblx0LyogICovXG5cdFxuXHR2YXIgdWlkID0g
MDtcblx0XG5cdGZ1bmN0aW9uIGluaXRNaXhpbiAoVnVlKSB7XG5cdCAgVnVlLnByb3RvdHlwZS5f
aW5pdCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG5cdCAgICB2YXIgdm0gPSB0aGlzO1xuXHQgICAg
Ly8gYSB1aWRcblx0ICAgIHZtLl91aWQgPSB1aWQrKztcblx0ICAgIC8vIGEgZmxhZyB0byBhdm9p
ZCB0aGlzIGJlaW5nIG9ic2VydmVkXG5cdCAgICB2bS5faXNWdWUgPSB0cnVlO1xuXHQgICAgLy8g
bWVyZ2Ugb3B0aW9uc1xuXHQgICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5faXNDb21wb25lbnQp
IHtcblx0ICAgICAgLy8gb3B0aW1pemUgaW50ZXJuYWwgY29tcG9uZW50IGluc3RhbnRpYXRpb25c
blx0ICAgICAgLy8gc2luY2UgZHluYW1pYyBvcHRpb25zIG1lcmdpbmcgaXMgcHJldHR5IHNsb3cs
IGFuZCBub25lIG9mIHRoZVxuXHQgICAgICAvLyBpbnRlcm5hbCBjb21wb25lbnQgb3B0aW9ucyBu
ZWVkcyBzcGVjaWFsIHRyZWF0bWVudC5cblx0ICAgICAgaW5pdEludGVybmFsQ29tcG9uZW50KHZt
LCBvcHRpb25zKTtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIHZtLiRvcHRpb25zID0gbWVyZ2VP
cHRpb25zKFxuXHQgICAgICAgIHJlc29sdmVDb25zdHJ1Y3Rvck9wdGlvbnModm0uY29uc3RydWN0
b3IpLFxuXHQgICAgICAgIG9wdGlvbnMgfHwge30sXG5cdCAgICAgICAgdm1cblx0ICAgICAgKTtc
blx0ICAgIH1cblx0ICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG5cdCAgICBpZiAoZmFs
c2UpIHtcblx0ICAgICAgaW5pdFByb3h5KHZtKTtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIHZt
Ll9yZW5kZXJQcm94eSA9IHZtO1xuXHQgICAgfVxuXHQgICAgLy8gZXhwb3NlIHJlYWwgc2VsZlxu
XHQgICAgdm0uX3NlbGYgPSB2bTtcblx0ICAgIGluaXRMaWZlY3ljbGUodm0pO1xuXHQgICAgaW5p
dEV2ZW50cyh2bSk7XG5cdCAgICBjYWxsSG9vayh2bSwgJ2JlZm9yZUNyZWF0ZScpO1xuXHQgICAg
aW5pdFN0YXRlKHZtKTtcblx0ICAgIGNhbGxIb29rKHZtLCAnY3JlYXRlZCcpO1xuXHQgICAgaW5p
dFJlbmRlcih2bSk7XG5cdCAgfTtcblx0fVxuXHRcblx0ZnVuY3Rpb24gaW5pdEludGVybmFsQ29t
cG9uZW50ICh2bSwgb3B0aW9ucykge1xuXHQgIHZhciBvcHRzID0gdm0uJG9wdGlvbnMgPSBPYmpl
Y3QuY3JlYXRlKHZtLmNvbnN0cnVjdG9yLm9wdGlvbnMpO1xuXHQgIC8vIGRvaW5nIHRoaXMgYmVj
YXVzZSBpdCdzIGZhc3RlciB0aGFuIGR5bmFtaWMgZW51bWVyYXRpb24uXG5cdCAgb3B0cy5wYXJl
bnQgPSBvcHRpb25zLnBhcmVudDtcblx0ICBvcHRzLnByb3BzRGF0YSA9IG9wdGlvbnMucHJvcHNE
YXRhO1xuXHQgIG9wdHMuX3BhcmVudFZub2RlID0gb3B0aW9ucy5fcGFyZW50Vm5vZGU7XG5cdCAg
b3B0cy5fcGFyZW50TGlzdGVuZXJzID0gb3B0aW9ucy5fcGFyZW50TGlzdGVuZXJzO1xuXHQgIG9w
dHMuX3JlbmRlckNoaWxkcmVuID0gb3B0aW9ucy5fcmVuZGVyQ2hpbGRyZW47XG5cdCAgb3B0cy5f
Y29tcG9uZW50VGFnID0gb3B0aW9ucy5fY29tcG9uZW50VGFnO1xuXHQgIGlmIChvcHRpb25zLnJl
bmRlcikge1xuXHQgICAgb3B0cy5yZW5kZXIgPSBvcHRpb25zLnJlbmRlcjtcblx0ICAgIG9wdHMu
c3RhdGljUmVuZGVyRm5zID0gb3B0aW9ucy5zdGF0aWNSZW5kZXJGbnM7XG5cdCAgfVxuXHR9XG5c
dFxuXHRmdW5jdGlvbiByZXNvbHZlQ29uc3RydWN0b3JPcHRpb25zIChDdG9yKSB7XG5cdCAgdmFy
IG9wdGlvbnMgPSBDdG9yLm9wdGlvbnM7XG5cdCAgaWYgKEN0b3Iuc3VwZXIpIHtcblx0ICAgIHZh
ciBzdXBlck9wdGlvbnMgPSBDdG9yLnN1cGVyLm9wdGlvbnM7XG5cdCAgICB2YXIgY2FjaGVkU3Vw
ZXJPcHRpb25zID0gQ3Rvci5zdXBlck9wdGlvbnM7XG5cdCAgICB2YXIgZXh0ZW5kT3B0aW9ucyA9
IEN0b3IuZXh0ZW5kT3B0aW9ucztcblx0ICAgIGlmIChzdXBlck9wdGlvbnMgIT09IGNhY2hlZFN1
cGVyT3B0aW9ucykge1xuXHQgICAgICAvLyBzdXBlciBvcHRpb24gY2hhbmdlZFxuXHQgICAgICBD
dG9yLnN1cGVyT3B0aW9ucyA9IHN1cGVyT3B0aW9ucztcblx0ICAgICAgZXh0ZW5kT3B0aW9ucy5y
ZW5kZXIgPSBvcHRpb25zLnJlbmRlcjtcblx0ICAgICAgZXh0ZW5kT3B0aW9ucy5zdGF0aWNSZW5k
ZXJGbnMgPSBvcHRpb25zLnN0YXRpY1JlbmRlckZucztcblx0ICAgICAgZXh0ZW5kT3B0aW9ucy5f
c2NvcGVJZCA9IG9wdGlvbnMuX3Njb3BlSWQ7XG5cdCAgICAgIG9wdGlvbnMgPSBDdG9yLm9wdGlv
bnMgPSBtZXJnZU9wdGlvbnMoc3VwZXJPcHRpb25zLCBleHRlbmRPcHRpb25zKTtcblx0ICAgICAg
aWYgKG9wdGlvbnMubmFtZSkge1xuXHQgICAgICAgIG9wdGlvbnMuY29tcG9uZW50c1tvcHRpb25z
Lm5hbWVdID0gQ3Rvcjtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH1cblx0ICByZXR1cm4gb3B0
aW9uc1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBWdWUkMyAob3B0aW9ucykge1xuXHQgIGlmIChmYWxz
ZSkge1xuXHQgICAgd2FybignVnVlIGlzIGEgY29uc3RydWN0b3IgYW5kIHNob3VsZCBiZSBjYWxs
ZWQgd2l0aCB0aGUgYG5ld2Aga2V5d29yZCcpO1xuXHQgIH1cblx0ICB0aGlzLl9pbml0KG9wdGlv
bnMpO1xuXHR9XG5cdFxuXHRpbml0TWl4aW4oVnVlJDMpO1xuXHRzdGF0ZU1peGluKFZ1ZSQzKTtc
blx0ZXZlbnRzTWl4aW4oVnVlJDMpO1xuXHRsaWZlY3ljbGVNaXhpbihWdWUkMyk7XG5cdHJlbmRl
ck1peGluKFZ1ZSQzKTtcblx0XG5cdC8qICAqL1xuXHRcblx0ZnVuY3Rpb24gaW5pdFVzZSAoVnVl
KSB7XG5cdCAgVnVlLnVzZSA9IGZ1bmN0aW9uIChwbHVnaW4pIHtcblx0ICAgIC8qIGlzdGFuYnVs
IGlnbm9yZSBpZiAqL1xuXHQgICAgaWYgKHBsdWdpbi5pbnN0YWxsZWQpIHtcblx0ICAgICAgcmV0
dXJuXG5cdCAgICB9XG5cdCAgICAvLyBhZGRpdGlvbmFsIHBhcmFtZXRlcnNcblx0ICAgIHZhciBh
cmdzID0gdG9BcnJheShhcmd1bWVudHMsIDEpO1xuXHQgICAgYXJncy51bnNoaWZ0KHRoaXMpO1xu
XHQgICAgaWYgKHR5cGVvZiBwbHVnaW4uaW5zdGFsbCA9PT0gJ2Z1bmN0aW9uJykge1xuXHQgICAg
ICBwbHVnaW4uaW5zdGFsbC5hcHBseShwbHVnaW4sIGFyZ3MpO1xuXHQgICAgfSBlbHNlIHtcblx0
ICAgICAgcGx1Z2luLmFwcGx5KG51bGwsIGFyZ3MpO1xuXHQgICAgfVxuXHQgICAgcGx1Z2luLmlu
c3RhbGxlZCA9IHRydWU7XG5cdCAgICByZXR1cm4gdGhpc1xuXHQgIH07XG5cdH1cblx0XG5cdC8q
ICAqL1xuXHRcblx0ZnVuY3Rpb24gaW5pdE1peGluJDEgKFZ1ZSkge1xuXHQgIFZ1ZS5taXhpbiA9
IGZ1bmN0aW9uIChtaXhpbikge1xuXHQgICAgdGhpcy5vcHRpb25zID0gbWVyZ2VPcHRpb25zKHRo
aXMub3B0aW9ucywgbWl4aW4pO1xuXHQgIH07XG5cdH1cblx0XG5cdC8qICAqL1xuXHRcblx0ZnVu
Y3Rpb24gaW5pdEV4dGVuZCAoVnVlKSB7XG5cdCAgLyoqXG5cdCAgICogRWFjaCBpbnN0YW5jZSBj
b25zdHJ1Y3RvciwgaW5jbHVkaW5nIFZ1ZSwgaGFzIGEgdW5pcXVlXG5cdCAgICogY2lkLiBUaGlz
IGVuYWJsZXMgdXMgdG8gY3JlYXRlIHdyYXBwZWQgXCJjaGlsZFxuXHQgICAqIGNvbnN0cnVjdG9y
c1wiIGZvciBwcm90b3R5cGFsIGluaGVyaXRhbmNlIGFuZCBjYWNoZSB0aGVtLlxuXHQgICAqL1xu
XHQgIFZ1ZS5jaWQgPSAwO1xuXHQgIHZhciBjaWQgPSAxO1xuXHRcblx0ICAvKipcblx0ICAgKiBD
bGFzcyBpbmhlcml0YW5jZVxuXHQgICAqL1xuXHQgIFZ1ZS5leHRlbmQgPSBmdW5jdGlvbiAoZXh0
ZW5kT3B0aW9ucykge1xuXHQgICAgZXh0ZW5kT3B0aW9ucyA9IGV4dGVuZE9wdGlvbnMgfHwge307
XG5cdCAgICB2YXIgU3VwZXIgPSB0aGlzO1xuXHQgICAgdmFyIFN1cGVySWQgPSBTdXBlci5jaWQ7
XG5cdCAgICB2YXIgY2FjaGVkQ3RvcnMgPSBleHRlbmRPcHRpb25zLl9DdG9yIHx8IChleHRlbmRP
cHRpb25zLl9DdG9yID0ge30pO1xuXHQgICAgaWYgKGNhY2hlZEN0b3JzW1N1cGVySWRdKSB7XG5c
dCAgICAgIHJldHVybiBjYWNoZWRDdG9yc1tTdXBlcklkXVxuXHQgICAgfVxuXHQgICAgdmFyIG5h
bWUgPSBleHRlbmRPcHRpb25zLm5hbWUgfHwgU3VwZXIub3B0aW9ucy5uYW1lO1xuXHQgICAgaWYg
KGZhbHNlKSB7XG5cdCAgICAgIGlmICghL15bYS16QS1aXVtcXHctXSokLy50ZXN0KG5hbWUpKSB7
XG5cdCAgICAgICAgd2Fybihcblx0ICAgICAgICAgICdJbnZhbGlkIGNvbXBvbmVudCBuYW1lOiBc
IicgKyBuYW1lICsgJ1wiLiBDb21wb25lbnQgbmFtZXMgJyArXG5cdCAgICAgICAgICAnY2FuIG9u
bHkgY29udGFpbiBhbHBoYW51bWVyaWMgY2hhcmFjYXRlcnMgYW5kIHRoZSBoeXBoZW4uJ1xuXHQg
ICAgICAgICk7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICAgIHZhciBTdWIgPSBmdW5jdGlvbiBW
dWVDb21wb25lbnQgKG9wdGlvbnMpIHtcblx0ICAgICAgdGhpcy5faW5pdChvcHRpb25zKTtcblx0
ICAgIH07XG5cdCAgICBTdWIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTdXBlci5wcm90b3R5
cGUpO1xuXHQgICAgU3ViLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFN1Yjtcblx0ICAgIFN1Yi5j
aWQgPSBjaWQrKztcblx0ICAgIFN1Yi5vcHRpb25zID0gbWVyZ2VPcHRpb25zKFxuXHQgICAgICBT
dXBlci5vcHRpb25zLFxuXHQgICAgICBleHRlbmRPcHRpb25zXG5cdCAgICApO1xuXHQgICAgU3Vi
WydzdXBlciddID0gU3VwZXI7XG5cdCAgICAvLyBhbGxvdyBmdXJ0aGVyIGV4dGVuc2lvbi9taXhp
bi9wbHVnaW4gdXNhZ2Vcblx0ICAgIFN1Yi5leHRlbmQgPSBTdXBlci5leHRlbmQ7XG5cdCAgICBT
dWIubWl4aW4gPSBTdXBlci5taXhpbjtcblx0ICAgIFN1Yi51c2UgPSBTdXBlci51c2U7XG5cdCAg
ICAvLyBjcmVhdGUgYXNzZXQgcmVnaXN0ZXJzLCBzbyBleHRlbmRlZCBjbGFzc2VzXG5cdCAgICAv
LyBjYW4gaGF2ZSB0aGVpciBwcml2YXRlIGFzc2V0cyB0b28uXG5cdCAgICBjb25maWcuX2Fzc2V0
VHlwZXMuZm9yRWFjaChmdW5jdGlvbiAodHlwZSkge1xuXHQgICAgICBTdWJbdHlwZV0gPSBTdXBl
clt0eXBlXTtcblx0ICAgIH0pO1xuXHQgICAgLy8gZW5hYmxlIHJlY3Vyc2l2ZSBzZWxmLWxvb2t1
cFxuXHQgICAgaWYgKG5hbWUpIHtcblx0ICAgICAgU3ViLm9wdGlvbnMuY29tcG9uZW50c1tuYW1l
XSA9IFN1Yjtcblx0ICAgIH1cblx0ICAgIC8vIGtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIHN1cGVy
IG9wdGlvbnMgYXQgZXh0ZW5zaW9uIHRpbWUuXG5cdCAgICAvLyBsYXRlciBhdCBpbnN0YW50aWF0
aW9uIHdlIGNhbiBjaGVjayBpZiBTdXBlcidzIG9wdGlvbnMgaGF2ZVxuXHQgICAgLy8gYmVlbiB1
cGRhdGVkLlxuXHQgICAgU3ViLnN1cGVyT3B0aW9ucyA9IFN1cGVyLm9wdGlvbnM7XG5cdCAgICBT
dWIuZXh0ZW5kT3B0aW9ucyA9IGV4dGVuZE9wdGlvbnM7XG5cdCAgICAvLyBjYWNoZSBjb25zdHJ1
Y3RvclxuXHQgICAgY2FjaGVkQ3RvcnNbU3VwZXJJZF0gPSBTdWI7XG5cdCAgICByZXR1cm4gU3Vi
XG5cdCAgfTtcblx0fVxuXHRcblx0LyogICovXG5cdFxuXHRmdW5jdGlvbiBpbml0QXNzZXRSZWdp
c3RlcnMgKFZ1ZSkge1xuXHQgIC8qKlxuXHQgICAqIENyZWF0ZSBhc3NldCByZWdpc3RyYXRpb24g
bWV0aG9kcy5cblx0ICAgKi9cblx0ICBjb25maWcuX2Fzc2V0VHlwZXMuZm9yRWFjaChmdW5jdGlv
biAodHlwZSkge1xuXHQgICAgVnVlW3R5cGVdID0gZnVuY3Rpb24gKFxuXHQgICAgICBpZCxcblx0
ICAgICAgZGVmaW5pdGlvblxuXHQgICAgKSB7XG5cdCAgICAgIGlmICghZGVmaW5pdGlvbikge1xu
XHQgICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnNbdHlwZSArICdzJ11baWRdXG5cdCAgICAgIH0g
ZWxzZSB7XG5cdCAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG5cdCAgICAgICAgaWYg
KGZhbHNlKSB7XG5cdCAgICAgICAgICBpZiAodHlwZSA9PT0gJ2NvbXBvbmVudCcgJiYgY29uZmln
LmlzUmVzZXJ2ZWRUYWcoaWQpKSB7XG5cdCAgICAgICAgICAgIHdhcm4oXG5cdCAgICAgICAgICAg
ICAgJ0RvIG5vdCB1c2UgYnVpbHQtaW4gb3IgcmVzZXJ2ZWQgSFRNTCBlbGVtZW50cyBhcyBjb21w
b25lbnQgJyArXG5cdCAgICAgICAgICAgICAgJ2lkOiAnICsgaWRcblx0ICAgICAgICAgICAgKTtc
blx0ICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdCAgICAgICAgaWYgKHR5cGUgPT09ICdjb21w
b25lbnQnICYmIGlzUGxhaW5PYmplY3QoZGVmaW5pdGlvbikpIHtcblx0ICAgICAgICAgIGRlZmlu
aXRpb24ubmFtZSA9IGRlZmluaXRpb24ubmFtZSB8fCBpZDtcblx0ICAgICAgICAgIGRlZmluaXRp
b24gPSB0aGlzLm9wdGlvbnMuX2Jhc2UuZXh0ZW5kKGRlZmluaXRpb24pO1xuXHQgICAgICAgIH1c
blx0ICAgICAgICBpZiAodHlwZSA9PT0gJ2RpcmVjdGl2ZScgJiYgdHlwZW9mIGRlZmluaXRpb24g
PT09ICdmdW5jdGlvbicpIHtcblx0ICAgICAgICAgIGRlZmluaXRpb24gPSB7IGJpbmQ6IGRlZmlu
aXRpb24sIHVwZGF0ZTogZGVmaW5pdGlvbiB9O1xuXHQgICAgICAgIH1cblx0ICAgICAgICB0aGlz
Lm9wdGlvbnNbdHlwZSArICdzJ11baWRdID0gZGVmaW5pdGlvbjtcblx0ICAgICAgICByZXR1cm4g
ZGVmaW5pdGlvblxuXHQgICAgICB9XG5cdCAgICB9O1xuXHQgIH0pO1xuXHR9XG5cdFxuXHQvKiAg
Ki9cblx0XG5cdHZhciBwYXR0ZXJuVHlwZXMgPSBbU3RyaW5nLCBSZWdFeHBdO1xuXHRcblx0ZnVu
Y3Rpb24gbWF0Y2hlcyAocGF0dGVybiwgbmFtZSkge1xuXHQgIGlmICh0eXBlb2YgcGF0dGVybiA9
PT0gJ3N0cmluZycpIHtcblx0ICAgIHJldHVybiBwYXR0ZXJuLnNwbGl0KCcsJykuaW5kZXhPZihu
YW1lKSA+IC0xXG5cdCAgfSBlbHNlIHtcblx0ICAgIHJldHVybiBwYXR0ZXJuLnRlc3QobmFtZSlc
blx0ICB9XG5cdH1cblx0XG5cdHZhciBLZWVwQWxpdmUgPSB7XG5cdCAgbmFtZTogJ2tlZXAtYWxp
dmUnLFxuXHQgIGFic3RyYWN0OiB0cnVlLFxuXHQgIHByb3BzOiB7XG5cdCAgICBpbmNsdWRlOiBw
YXR0ZXJuVHlwZXMsXG5cdCAgICBleGNsdWRlOiBwYXR0ZXJuVHlwZXNcblx0ICB9LFxuXHQgIGNy
ZWF0ZWQ6IGZ1bmN0aW9uIGNyZWF0ZWQgKCkge1xuXHQgICAgdGhpcy5jYWNoZSA9IE9iamVjdC5j
cmVhdGUobnVsbCk7XG5cdCAgfSxcblx0ICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlciAoKSB7XG5c
dCAgICB2YXIgdm5vZGUgPSBnZXRGaXJzdENvbXBvbmVudENoaWxkKHRoaXMuJHNsb3RzLmRlZmF1
bHQpO1xuXHQgICAgaWYgKHZub2RlICYmIHZub2RlLmNvbXBvbmVudE9wdGlvbnMpIHtcblx0ICAg
ICAgdmFyIG9wdHMgPSB2bm9kZS5jb21wb25lbnRPcHRpb25zO1xuXHQgICAgICAvLyBjaGVjayBw
YXR0ZXJuXG5cdCAgICAgIHZhciBuYW1lID0gb3B0cy5DdG9yLm9wdGlvbnMubmFtZSB8fCBvcHRz
LnRhZztcblx0ICAgICAgaWYgKG5hbWUgJiYgKFxuXHQgICAgICAgICh0aGlzLmluY2x1ZGUgJiYg
IW1hdGNoZXModGhpcy5pbmNsdWRlLCBuYW1lKSkgfHxcblx0ICAgICAgICAodGhpcy5leGNsdWRl
ICYmIG1hdGNoZXModGhpcy5leGNsdWRlLCBuYW1lKSlcblx0ICAgICAgKSkge1xuXHQgICAgICAg
IHJldHVybiB2bm9kZVxuXHQgICAgICB9XG5cdCAgICAgIHZhciBrZXkgPSB2bm9kZS5rZXkgPT0g
bnVsbFxuXHQgICAgICAgIC8vIHNhbWUgY29uc3RydWN0b3IgbWF5IGdldCByZWdpc3RlcmVkIGFz
IGRpZmZlcmVudCBsb2NhbCBjb21wb25lbnRzXG5cdCAgICAgICAgLy8gc28gY2lkIGFsb25lIGlz
IG5vdCBlbm91Z2ggKCMzMjY5KVxuXHQgICAgICAgID8gb3B0cy5DdG9yLmNpZCArIChvcHRzLnRh
ZyA/IChcIjo6XCIgKyAob3B0cy50YWcpKSA6ICcnKVxuXHQgICAgICAgIDogdm5vZGUua2V5O1xu
XHQgICAgICBpZiAodGhpcy5jYWNoZVtrZXldKSB7XG5cdCAgICAgICAgdm5vZGUuY2hpbGQgPSB0
aGlzLmNhY2hlW2tleV0uY2hpbGQ7XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgdGhpcy5j
YWNoZVtrZXldID0gdm5vZGU7XG5cdCAgICAgIH1cblx0ICAgICAgdm5vZGUuZGF0YS5rZWVwQWxp
dmUgPSB0cnVlO1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIHZub2RlXG5cdCAgfSxcblx0ICBkZXN0
cm95ZWQ6IGZ1bmN0aW9uIGRlc3Ryb3llZCAoKSB7XG5cdCAgICB2YXIgdGhpcyQxID0gdGhpcztc
blx0XG5cdCAgICBmb3IgKHZhciBrZXkgaW4gdGhpcy5jYWNoZSkge1xuXHQgICAgICB2YXIgdm5v
ZGUgPSB0aGlzJDEuY2FjaGVba2V5XTtcblx0ICAgICAgY2FsbEhvb2sodm5vZGUuY2hpbGQsICdk
ZWFjdGl2YXRlZCcpO1xuXHQgICAgICB2bm9kZS5jaGlsZC4kZGVzdHJveSgpO1xuXHQgICAgfVxu
XHQgIH1cblx0fTtcblx0XG5cdHZhciBidWlsdEluQ29tcG9uZW50cyA9IHtcblx0ICBLZWVwQWxp
dmU6IEtlZXBBbGl2ZVxuXHR9O1xuXHRcblx0LyogICovXG5cdFxuXHRmdW5jdGlvbiBpbml0R2xv
YmFsQVBJIChWdWUpIHtcblx0ICAvLyBjb25maWdcblx0ICB2YXIgY29uZmlnRGVmID0ge307XG5c
dCAgY29uZmlnRGVmLmdldCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGNvbmZpZzsgfTtcblx0ICBp
ZiAoZmFsc2UpIHtcblx0ICAgIGNvbmZpZ0RlZi5zZXQgPSBmdW5jdGlvbiAoKSB7XG5cdCAgICAg
IHdhcm4oXG5cdCAgICAgICAgJ0RvIG5vdCByZXBsYWNlIHRoZSBWdWUuY29uZmlnIG9iamVjdCwg
c2V0IGluZGl2aWR1YWwgZmllbGRzIGluc3RlYWQuJ1xuXHQgICAgICApO1xuXHQgICAgfTtcblx0
ICB9XG5cdCAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFZ1ZSwgJ2NvbmZpZycsIGNvbmZpZ0RlZik7
XG5cdCAgVnVlLnV0aWwgPSB1dGlsO1xuXHQgIFZ1ZS5zZXQgPSBzZXQ7XG5cdCAgVnVlLmRlbGV0
ZSA9IGRlbDtcblx0ICBWdWUubmV4dFRpY2sgPSBuZXh0VGljaztcblx0XG5cdCAgVnVlLm9wdGlv
bnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXHQgIGNvbmZpZy5fYXNzZXRUeXBlcy5mb3JFYWNo
KGZ1bmN0aW9uICh0eXBlKSB7XG5cdCAgICBWdWUub3B0aW9uc1t0eXBlICsgJ3MnXSA9IE9iamVj
dC5jcmVhdGUobnVsbCk7XG5cdCAgfSk7XG5cdFxuXHQgIC8vIHRoaXMgaXMgdXNlZCB0byBpZGVu
dGlmeSB0aGUgXCJiYXNlXCIgY29uc3RydWN0b3IgdG8gZXh0ZW5kIGFsbCBwbGFpbi1vYmplY3Rc
blx0ICAvLyBjb21wb25lbnRzIHdpdGggaW4gV2VleCdzIG11bHRpLWluc3RhbmNlIHNjZW5hcmlv
cy5cblx0ICBWdWUub3B0aW9ucy5fYmFzZSA9IFZ1ZTtcblx0XG5cdCAgZXh0ZW5kKFZ1ZS5vcHRp
b25zLmNvbXBvbmVudHMsIGJ1aWx0SW5Db21wb25lbnRzKTtcblx0XG5cdCAgaW5pdFVzZShWdWUp
O1xuXHQgIGluaXRNaXhpbiQxKFZ1ZSk7XG5cdCAgaW5pdEV4dGVuZChWdWUpO1xuXHQgIGluaXRB
c3NldFJlZ2lzdGVycyhWdWUpO1xuXHR9XG5cdFxuXHRpbml0R2xvYmFsQVBJKFZ1ZSQzKTtcblx0
XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShWdWUkMy5wcm90b3R5cGUsICckaXNTZXJ2ZXInLCB7
XG5cdCAgZ2V0OiBpc1NlcnZlclJlbmRlcmluZ1xuXHR9KTtcblx0XG5cdFZ1ZSQzLnZlcnNpb24g
PSAnMi4xLjMnO1xuXHRcblx0LyogICovXG5cdFxuXHQvLyBhdHRyaWJ1dGVzIHRoYXQgc2hvdWxk
IGJlIHVzaW5nIHByb3BzIGZvciBiaW5kaW5nXG5cdHZhciBtdXN0VXNlUHJvcCA9IGZ1bmN0aW9u
ICh0YWcsIGF0dHIpIHtcblx0ICByZXR1cm4gKFxuXHQgICAgKGF0dHIgPT09ICd2YWx1ZScgJiYg
KHRhZyA9PT0gJ2lucHV0JyB8fCB0YWcgPT09ICd0ZXh0YXJlYScgfHwgdGFnID09PSAnb3B0aW9u
JykpIHx8XG5cdCAgICAoYXR0ciA9PT0gJ3NlbGVjdGVkJyAmJiB0YWcgPT09ICdvcHRpb24nKSB8
fFxuXHQgICAgKGF0dHIgPT09ICdjaGVja2VkJyAmJiB0YWcgPT09ICdpbnB1dCcpIHx8XG5cdCAg
ICAoYXR0ciA9PT0gJ211dGVkJyAmJiB0YWcgPT09ICd2aWRlbycpXG5cdCAgKVxuXHR9O1xuXHRc
blx0dmFyIGlzRW51bWVyYXRlZEF0dHIgPSBtYWtlTWFwKCdjb250ZW50ZWRpdGFibGUsZHJhZ2dh
YmxlLHNwZWxsY2hlY2snKTtcblx0XG5cdHZhciBpc0Jvb2xlYW5BdHRyID0gbWFrZU1hcChcblx0
ICAnYWxsb3dmdWxsc2NyZWVuLGFzeW5jLGF1dG9mb2N1cyxhdXRvcGxheSxjaGVja2VkLGNvbXBh
Y3QsY29udHJvbHMsZGVjbGFyZSwnICtcblx0ICAnZGVmYXVsdCxkZWZhdWx0Y2hlY2tlZCxkZWZh
dWx0bXV0ZWQsZGVmYXVsdHNlbGVjdGVkLGRlZmVyLGRpc2FibGVkLCcgK1xuXHQgICdlbmFibGVk
LGZvcm1ub3ZhbGlkYXRlLGhpZGRlbixpbmRldGVybWluYXRlLGluZXJ0LGlzbWFwLGl0ZW1zY29w
ZSxsb29wLG11bHRpcGxlLCcgK1xuXHQgICdtdXRlZCxub2hyZWYsbm9yZXNpemUsbm9zaGFkZSxu
b3ZhbGlkYXRlLG5vd3JhcCxvcGVuLHBhdXNlb25leGl0LHJlYWRvbmx5LCcgK1xuXHQgICdyZXF1
aXJlZCxyZXZlcnNlZCxzY29wZWQsc2VhbWxlc3Msc2VsZWN0ZWQsc29ydGFibGUsdHJhbnNsYXRl
LCcgK1xuXHQgICd0cnVlc3BlZWQsdHlwZW11c3RtYXRjaCx2aXNpYmxlJ1xuXHQpO1xuXHRcblx0
dmFyIGlzQXR0ciA9IG1ha2VNYXAoXG5cdCAgJ2FjY2VwdCxhY2NlcHQtY2hhcnNldCxhY2Nlc3Nr
ZXksYWN0aW9uLGFsaWduLGFsdCxhc3luYyxhdXRvY29tcGxldGUsJyArXG5cdCAgJ2F1dG9mb2N1
cyxhdXRvcGxheSxhdXRvc2F2ZSxiZ2NvbG9yLGJvcmRlcixidWZmZXJlZCxjaGFsbGVuZ2UsY2hh
cnNldCwnICtcblx0ICAnY2hlY2tlZCxjaXRlLGNsYXNzLGNvZGUsY29kZWJhc2UsY29sb3IsY29s
cyxjb2xzcGFuLGNvbnRlbnQsaHR0cC1lcXVpdiwnICtcblx0ICAnbmFtZSxjb250ZW50ZWRpdGFi
bGUsY29udGV4dG1lbnUsY29udHJvbHMsY29vcmRzLGRhdGEsZGF0ZXRpbWUsZGVmYXVsdCwnICtc
blx0ICAnZGVmZXIsZGlyLGRpcm5hbWUsZGlzYWJsZWQsZG93bmxvYWQsZHJhZ2dhYmxlLGRyb3B6
b25lLGVuY3R5cGUsbWV0aG9kLGZvciwnICtcblx0ICAnZm9ybSxmb3JtYWN0aW9uLGhlYWRlcnMs
PHRoPixoZWlnaHQsaGlkZGVuLGhpZ2gsaHJlZixocmVmbGFuZyxodHRwLWVxdWl2LCcgK1xuXHQg
ICdpY29uLGlkLGlzbWFwLGl0ZW1wcm9wLGtleXR5cGUsa2luZCxsYWJlbCxsYW5nLGxhbmd1YWdl
LGxpc3QsbG9vcCxsb3csJyArXG5cdCAgJ21hbmlmZXN0LG1heCxtYXhsZW5ndGgsbWVkaWEsbWV0
aG9kLEdFVCxQT1NULG1pbixtdWx0aXBsZSxlbWFpbCxmaWxlLCcgK1xuXHQgICdtdXRlZCxuYW1l
LG5vdmFsaWRhdGUsb3BlbixvcHRpbXVtLHBhdHRlcm4scGluZyxwbGFjZWhvbGRlcixwb3N0ZXIs
JyArXG5cdCAgJ3ByZWxvYWQscmFkaW9ncm91cCxyZWFkb25seSxyZWwscmVxdWlyZWQscmV2ZXJz
ZWQscm93cyxyb3dzcGFuLHNhbmRib3gsJyArXG5cdCAgJ3Njb3BlLHNjb3BlZCxzZWFtbGVzcyxz
ZWxlY3RlZCxzaGFwZSxzaXplLHR5cGUsdGV4dCxwYXNzd29yZCxzaXplcyxzcGFuLCcgK1xuXHQg
ICdzcGVsbGNoZWNrLHNyYyxzcmNkb2Msc3JjbGFuZyxzcmNzZXQsc3RhcnQsc3RlcCxzdHlsZSxz
dW1tYXJ5LHRhYmluZGV4LCcgK1xuXHQgICd0YXJnZXQsdGl0bGUsdHlwZSx1c2VtYXAsdmFsdWUs
d2lkdGgsd3JhcCdcblx0KTtcblx0XG5cdFxuXHRcblx0dmFyIHhsaW5rTlMgPSAnaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayc7XG5cdFxuXHR2YXIgaXNYbGluayA9IGZ1bmN0aW9uIChuYW1l
KSB7XG5cdCAgcmV0dXJuIG5hbWUuY2hhckF0KDUpID09PSAnOicgJiYgbmFtZS5zbGljZSgwLCA1
KSA9PT0gJ3hsaW5rJ1xuXHR9O1xuXHRcblx0dmFyIGdldFhsaW5rUHJvcCA9IGZ1bmN0aW9uIChu
YW1lKSB7XG5cdCAgcmV0dXJuIGlzWGxpbmsobmFtZSkgPyBuYW1lLnNsaWNlKDYsIG5hbWUubGVu
Z3RoKSA6ICcnXG5cdH07XG5cdFxuXHR2YXIgaXNGYWxzeUF0dHJWYWx1ZSA9IGZ1bmN0aW9uICh2
YWwpIHtcblx0ICByZXR1cm4gdmFsID09IG51bGwgfHwgdmFsID09PSBmYWxzZVxuXHR9O1xuXHRc
blx0LyogICovXG5cdFxuXHRmdW5jdGlvbiBnZW5DbGFzc0ZvclZub2RlICh2bm9kZSkge1xuXHQg
IHZhciBkYXRhID0gdm5vZGUuZGF0YTtcblx0ICB2YXIgcGFyZW50Tm9kZSA9IHZub2RlO1xuXHQg
IHZhciBjaGlsZE5vZGUgPSB2bm9kZTtcblx0ICB3aGlsZSAoY2hpbGROb2RlLmNoaWxkKSB7XG5c
dCAgICBjaGlsZE5vZGUgPSBjaGlsZE5vZGUuY2hpbGQuX3Zub2RlO1xuXHQgICAgaWYgKGNoaWxk
Tm9kZS5kYXRhKSB7XG5cdCAgICAgIGRhdGEgPSBtZXJnZUNsYXNzRGF0YShjaGlsZE5vZGUuZGF0
YSwgZGF0YSk7XG5cdCAgICB9XG5cdCAgfVxuXHQgIHdoaWxlICgocGFyZW50Tm9kZSA9IHBhcmVu
dE5vZGUucGFyZW50KSkge1xuXHQgICAgaWYgKHBhcmVudE5vZGUuZGF0YSkge1xuXHQgICAgICBk
YXRhID0gbWVyZ2VDbGFzc0RhdGEoZGF0YSwgcGFyZW50Tm9kZS5kYXRhKTtcblx0ICAgIH1cblx0
ICB9XG5cdCAgcmV0dXJuIGdlbkNsYXNzRnJvbURhdGEoZGF0YSlcblx0fVxuXHRcblx0ZnVuY3Rp
b24gbWVyZ2VDbGFzc0RhdGEgKGNoaWxkLCBwYXJlbnQpIHtcblx0ICByZXR1cm4ge1xuXHQgICAg
c3RhdGljQ2xhc3M6IGNvbmNhdChjaGlsZC5zdGF0aWNDbGFzcywgcGFyZW50LnN0YXRpY0NsYXNz
KSxcblx0ICAgIGNsYXNzOiBjaGlsZC5jbGFzc1xuXHQgICAgICA/IFtjaGlsZC5jbGFzcywgcGFy
ZW50LmNsYXNzXVxuXHQgICAgICA6IHBhcmVudC5jbGFzc1xuXHQgIH1cblx0fVxuXHRcblx0ZnVu
Y3Rpb24gZ2VuQ2xhc3NGcm9tRGF0YSAoZGF0YSkge1xuXHQgIHZhciBkeW5hbWljQ2xhc3MgPSBk
YXRhLmNsYXNzO1xuXHQgIHZhciBzdGF0aWNDbGFzcyA9IGRhdGEuc3RhdGljQ2xhc3M7XG5cdCAg
aWYgKHN0YXRpY0NsYXNzIHx8IGR5bmFtaWNDbGFzcykge1xuXHQgICAgcmV0dXJuIGNvbmNhdChz
dGF0aWNDbGFzcywgc3RyaW5naWZ5Q2xhc3MoZHluYW1pY0NsYXNzKSlcblx0ICB9XG5cdCAgLyog
aXN0YW5idWwgaWdub3JlIG5leHQgKi9cblx0ICByZXR1cm4gJydcblx0fVxuXHRcblx0ZnVuY3Rp
b24gY29uY2F0IChhLCBiKSB7XG5cdCAgcmV0dXJuIGEgPyBiID8gKGEgKyAnICcgKyBiKSA6IGEg
OiAoYiB8fCAnJylcblx0fVxuXHRcblx0ZnVuY3Rpb24gc3RyaW5naWZ5Q2xhc3MgKHZhbHVlKSB7
XG5cdCAgdmFyIHJlcyA9ICcnO1xuXHQgIGlmICghdmFsdWUpIHtcblx0ICAgIHJldHVybiByZXNc
blx0ICB9XG5cdCAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcblx0ICAgIHJldHVy
biB2YWx1ZVxuXHQgIH1cblx0ICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcblx0ICAgIHZh
ciBzdHJpbmdpZmllZDtcblx0ICAgIGZvciAodmFyIGkgPSAwLCBsID0gdmFsdWUubGVuZ3RoOyBp
IDwgbDsgaSsrKSB7XG5cdCAgICAgIGlmICh2YWx1ZVtpXSkge1xuXHQgICAgICAgIGlmICgoc3Ry
aW5naWZpZWQgPSBzdHJpbmdpZnlDbGFzcyh2YWx1ZVtpXSkpKSB7XG5cdCAgICAgICAgICByZXMg
Kz0gc3RyaW5naWZpZWQgKyAnICc7XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICB9XG5c
dCAgICByZXR1cm4gcmVzLnNsaWNlKDAsIC0xKVxuXHQgIH1cblx0ICBpZiAoaXNPYmplY3QodmFs
dWUpKSB7XG5cdCAgICBmb3IgKHZhciBrZXkgaW4gdmFsdWUpIHtcblx0ICAgICAgaWYgKHZhbHVl
W2tleV0pIHsgcmVzICs9IGtleSArICcgJzsgfVxuXHQgICAgfVxuXHQgICAgcmV0dXJuIHJlcy5z
bGljZSgwLCAtMSlcblx0ICB9XG5cdCAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cblx0ICBy
ZXR1cm4gcmVzXG5cdH1cblx0XG5cdC8qICAqL1xuXHRcblx0dmFyIG5hbWVzcGFjZU1hcCA9IHtc
blx0ICBzdmc6ICdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycsXG5cdCAgbWF0aDogJ2h0dHA6
Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnLFxuXHQgIHhodG1sOiAnaHR0cDovL3d3dy53
My5vcmcvMTk5OS94aHRtbCdcblx0fTtcblx0XG5cdHZhciBpc0hUTUxUYWcgPSBtYWtlTWFwKFxu
XHQgICdodG1sLGJvZHksYmFzZSxoZWFkLGxpbmssbWV0YSxzdHlsZSx0aXRsZSwnICtcblx0ICAn
YWRkcmVzcyxhcnRpY2xlLGFzaWRlLGZvb3RlcixoZWFkZXIsaDEsaDIsaDMsaDQsaDUsaDYsaGdy
b3VwLG5hdixzZWN0aW9uLCcgK1xuXHQgICdkaXYsZGQsZGwsZHQsZmlnY2FwdGlvbixmaWd1cmUs
aHIsaW1nLGxpLG1haW4sb2wscCxwcmUsdWwsJyArXG5cdCAgJ2EsYixhYmJyLGJkaSxiZG8sYnIs
Y2l0ZSxjb2RlLGRhdGEsZGZuLGVtLGksa2JkLG1hcmsscSxycCxydCxydGMscnVieSwnICtcblx0
ICAncyxzYW1wLHNtYWxsLHNwYW4sc3Ryb25nLHN1YixzdXAsdGltZSx1LHZhcix3YnIsYXJlYSxh
dWRpbyxtYXAsdHJhY2ssdmlkZW8sJyArXG5cdCAgJ2VtYmVkLG9iamVjdCxwYXJhbSxzb3VyY2Us
Y2FudmFzLHNjcmlwdCxub3NjcmlwdCxkZWwsaW5zLCcgK1xuXHQgICdjYXB0aW9uLGNvbCxjb2xn
cm91cCx0YWJsZSx0aGVhZCx0Ym9keSx0ZCx0aCx0ciwnICtcblx0ICAnYnV0dG9uLGRhdGFsaXN0
LGZpZWxkc2V0LGZvcm0saW5wdXQsbGFiZWwsbGVnZW5kLG1ldGVyLG9wdGdyb3VwLG9wdGlvbiwn
ICtcblx0ICAnb3V0cHV0LHByb2dyZXNzLHNlbGVjdCx0ZXh0YXJlYSwnICtcblx0ICAnZGV0YWls
cyxkaWFsb2csbWVudSxtZW51aXRlbSxzdW1tYXJ5LCcgK1xuXHQgICdjb250ZW50LGVsZW1lbnQs
c2hhZG93LHRlbXBsYXRlJ1xuXHQpO1xuXHRcblx0dmFyIGlzVW5hcnlUYWcgPSBtYWtlTWFwKFxu
XHQgICdhcmVhLGJhc2UsYnIsY29sLGVtYmVkLGZyYW1lLGhyLGltZyxpbnB1dCxpc2luZGV4LGtl
eWdlbiwnICtcblx0ICAnbGluayxtZXRhLHBhcmFtLHNvdXJjZSx0cmFjayx3YnInLFxuXHQgIHRy
dWVcblx0KTtcblx0XG5cdC8vIEVsZW1lbnRzIHRoYXQgeW91IGNhbiwgaW50ZW50aW9uYWxseSwg
bGVhdmUgb3BlblxuXHQvLyAoYW5kIHdoaWNoIGNsb3NlIHRoZW1zZWx2ZXMpXG5cdHZhciBjYW5C
ZUxlZnRPcGVuVGFnID0gbWFrZU1hcChcblx0ICAnY29sZ3JvdXAsZGQsZHQsbGksb3B0aW9ucyxw
LHRkLHRmb290LHRoLHRoZWFkLHRyLHNvdXJjZScsXG5cdCAgdHJ1ZVxuXHQpO1xuXHRcblx0Ly8g
SFRNTDUgdGFncyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9pbmRpY2Vz
Lmh0bWwjZWxlbWVudHMtM1xuXHQvLyBQaHJhc2luZyBDb250ZW50IGh0dHBzOi8vaHRtbC5zcGVj
LndoYXR3Zy5vcmcvbXVsdGlwYWdlL2RvbS5odG1sI3BocmFzaW5nLWNvbnRlbnRcblx0dmFyIGlz
Tm9uUGhyYXNpbmdUYWcgPSBtYWtlTWFwKFxuXHQgICdhZGRyZXNzLGFydGljbGUsYXNpZGUsYmFz
ZSxibG9ja3F1b3RlLGJvZHksY2FwdGlvbixjb2wsY29sZ3JvdXAsZGQsJyArXG5cdCAgJ2RldGFp
bHMsZGlhbG9nLGRpdixkbCxkdCxmaWVsZHNldCxmaWdjYXB0aW9uLGZpZ3VyZSxmb290ZXIsZm9y
bSwnICtcblx0ICAnaDEsaDIsaDMsaDQsaDUsaDYsaGVhZCxoZWFkZXIsaGdyb3VwLGhyLGh0bWws
bGVnZW5kLGxpLG1lbnVpdGVtLG1ldGEsJyArXG5cdCAgJ29wdGdyb3VwLG9wdGlvbixwYXJhbSxy
cCxydCxzb3VyY2Usc3R5bGUsc3VtbWFyeSx0Ym9keSx0ZCx0Zm9vdCx0aCx0aGVhZCwnICtcblx0
ICAndGl0bGUsdHIsdHJhY2snLFxuXHQgIHRydWVcblx0KTtcblx0XG5cdC8vIHRoaXMgbWFwIGlz
IGludGVudGlvbmFsbHkgc2VsZWN0aXZlLCBvbmx5IGNvdmVyaW5nIFNWRyBlbGVtZW50cyB0aGF0
IG1heVxuXHQvLyBjb250YWluIGNoaWxkIGVsZW1lbnRzLlxuXHR2YXIgaXNTVkcgPSBtYWtlTWFw
KFxuXHQgICdzdmcsYW5pbWF0ZSxjaXJjbGUsY2xpcHBhdGgsY3Vyc29yLGRlZnMsZGVzYyxlbGxp
cHNlLGZpbHRlcixmb250LCcgK1xuXHQgICdmb250LWZhY2UsZyxnbHlwaCxpbWFnZSxsaW5lLG1h
cmtlcixtYXNrLG1pc3NpbmctZ2x5cGgscGF0aCxwYXR0ZXJuLCcgK1xuXHQgICdwb2x5Z29uLHBv
bHlsaW5lLHJlY3Qsc3dpdGNoLHN5bWJvbCx0ZXh0LHRleHRwYXRoLHRzcGFuLHVzZSx2aWV3Jyxc
blx0ICB0cnVlXG5cdCk7XG5cdFxuXHR2YXIgaXNQcmVUYWcgPSBmdW5jdGlvbiAodGFnKSB7IHJl
dHVybiB0YWcgPT09ICdwcmUnOyB9O1xuXHRcblx0dmFyIGlzUmVzZXJ2ZWRUYWcgPSBmdW5jdGlv
biAodGFnKSB7XG5cdCAgcmV0dXJuIGlzSFRNTFRhZyh0YWcpIHx8IGlzU1ZHKHRhZylcblx0fTtc
blx0XG5cdGZ1bmN0aW9uIGdldFRhZ05hbWVzcGFjZSAodGFnKSB7XG5cdCAgaWYgKGlzU1ZHKHRh
ZykpIHtcblx0ICAgIHJldHVybiAnc3ZnJ1xuXHQgIH1cblx0ICAvLyBiYXNpYyBzdXBwb3J0IGZv
ciBNYXRoTUxcblx0ICAvLyBub3RlIGl0IGRvZXNuJ3Qgc3VwcG9ydCBvdGhlciBNYXRoTUwgZWxl
bWVudHMgYmVpbmcgY29tcG9uZW50IHJvb3RzXG5cdCAgaWYgKHRhZyA9PT0gJ21hdGgnKSB7XG5c
dCAgICByZXR1cm4gJ21hdGgnXG5cdCAgfVxuXHR9XG5cdFxuXHR2YXIgdW5rbm93bkVsZW1lbnRD
YWNoZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cdGZ1bmN0aW9uIGlzVW5rbm93bkVsZW1lbnQg
KHRhZykge1xuXHQgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuXHQgIGlmICghaW5Ccm93c2Vy
KSB7XG5cdCAgICByZXR1cm4gdHJ1ZVxuXHQgIH1cblx0ICBpZiAoaXNSZXNlcnZlZFRhZyh0YWcp
KSB7XG5cdCAgICByZXR1cm4gZmFsc2Vcblx0ICB9XG5cdCAgdGFnID0gdGFnLnRvTG93ZXJDYXNl
KCk7XG5cdCAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG5cdCAgaWYgKHVua25vd25FbGVtZW50
Q2FjaGVbdGFnXSAhPSBudWxsKSB7XG5cdCAgICByZXR1cm4gdW5rbm93bkVsZW1lbnRDYWNoZVt0
YWddXG5cdCAgfVxuXHQgIHZhciBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnKTtcblx0
ICBpZiAodGFnLmluZGV4T2YoJy0nKSA+IC0xKSB7XG5cdCAgICAvLyBodHRwOi8vc3RhY2tvdmVy
Zmxvdy5jb20vYS8yODIxMDM2NC8xMDcwMjQ0XG5cdCAgICByZXR1cm4gKHVua25vd25FbGVtZW50
Q2FjaGVbdGFnXSA9IChcblx0ICAgICAgZWwuY29uc3RydWN0b3IgPT09IHdpbmRvdy5IVE1MVW5r
bm93bkVsZW1lbnQgfHxcblx0ICAgICAgZWwuY29uc3RydWN0b3IgPT09IHdpbmRvdy5IVE1MRWxl
bWVudFxuXHQgICAgKSlcblx0ICB9IGVsc2Uge1xuXHQgICAgcmV0dXJuICh1bmtub3duRWxlbWVu
dENhY2hlW3RhZ10gPSAvSFRNTFVua25vd25FbGVtZW50Ly50ZXN0KGVsLnRvU3RyaW5nKCkpKVxu
XHQgIH1cblx0fVxuXHRcblx0LyogICovXG5cdFxuXHQvKipcblx0ICogUXVlcnkgYW4gZWxlbWVu
dCBzZWxlY3RvciBpZiBpdCdzIG5vdCBhbiBlbGVtZW50IGFscmVhZHkuXG5cdCAqL1xuXHRmdW5j
dGlvbiBxdWVyeSAoZWwpIHtcblx0ICBpZiAodHlwZW9mIGVsID09PSAnc3RyaW5nJykge1xuXHQg
ICAgdmFyIHNlbGVjdG9yID0gZWw7XG5cdCAgICBlbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Io
ZWwpO1xuXHQgICAgaWYgKCFlbCkge1xuXHQgICAgICAoXCJwcm9kdWN0aW9uXCIpICE9PSAncHJv
ZHVjdGlvbicgJiYgd2Fybihcblx0ICAgICAgICAnQ2Fubm90IGZpbmQgZWxlbWVudDogJyArIHNl
bGVjdG9yXG5cdCAgICAgICk7XG5cdCAgICAgIHJldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdkaXYnKVxuXHQgICAgfVxuXHQgIH1cblx0ICByZXR1cm4gZWxcblx0fVxuXHRcblx0LyogICov
XG5cdFxuXHRmdW5jdGlvbiBjcmVhdGVFbGVtZW50JDEgKHRhZ05hbWUsIHZub2RlKSB7XG5cdCAg
dmFyIGVsbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnTmFtZSk7XG5cdCAgaWYgKHRhZ05h
bWUgIT09ICdzZWxlY3QnKSB7XG5cdCAgICByZXR1cm4gZWxtXG5cdCAgfVxuXHQgIGlmICh2bm9k
ZS5kYXRhICYmIHZub2RlLmRhdGEuYXR0cnMgJiYgJ211bHRpcGxlJyBpbiB2bm9kZS5kYXRhLmF0
dHJzKSB7XG5cdCAgICBlbG0uc2V0QXR0cmlidXRlKCdtdWx0aXBsZScsICdtdWx0aXBsZScpO1xu
XHQgIH1cblx0ICByZXR1cm4gZWxtXG5cdH1cblx0XG5cdGZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnRO
UyAobmFtZXNwYWNlLCB0YWdOYW1lKSB7XG5cdCAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUyhuYW1lc3BhY2VNYXBbbmFtZXNwYWNlXSwgdGFnTmFtZSlcblx0fVxuXHRcblx0ZnVuY3Rp
b24gY3JlYXRlVGV4dE5vZGUgKHRleHQpIHtcblx0ICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUodGV4dClcblx0fVxuXHRcblx0ZnVuY3Rpb24gY3JlYXRlQ29tbWVudCAodGV4dCkge1xu
XHQgIHJldHVybiBkb2N1bWVudC5jcmVhdGVDb21tZW50KHRleHQpXG5cdH1cblx0XG5cdGZ1bmN0
aW9uIGluc2VydEJlZm9yZSAocGFyZW50Tm9kZSwgbmV3Tm9kZSwgcmVmZXJlbmNlTm9kZSkge1xu
XHQgIHBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKG5ld05vZGUsIHJlZmVyZW5jZU5vZGUpO1xuXHR9
XG5cdFxuXHRmdW5jdGlvbiByZW1vdmVDaGlsZCAobm9kZSwgY2hpbGQpIHtcblx0ICBub2RlLnJl
bW92ZUNoaWxkKGNoaWxkKTtcblx0fVxuXHRcblx0ZnVuY3Rpb24gYXBwZW5kQ2hpbGQgKG5vZGUs
IGNoaWxkKSB7XG5cdCAgbm9kZS5hcHBlbmRDaGlsZChjaGlsZCk7XG5cdH1cblx0XG5cdGZ1bmN0
aW9uIHBhcmVudE5vZGUgKG5vZGUpIHtcblx0ICByZXR1cm4gbm9kZS5wYXJlbnROb2RlXG5cdH1c
blx0XG5cdGZ1bmN0aW9uIG5leHRTaWJsaW5nIChub2RlKSB7XG5cdCAgcmV0dXJuIG5vZGUubmV4
dFNpYmxpbmdcblx0fVxuXHRcblx0ZnVuY3Rpb24gdGFnTmFtZSAobm9kZSkge1xuXHQgIHJldHVy
biBub2RlLnRhZ05hbWVcblx0fVxuXHRcblx0ZnVuY3Rpb24gc2V0VGV4dENvbnRlbnQgKG5vZGUs
IHRleHQpIHtcblx0ICBub2RlLnRleHRDb250ZW50ID0gdGV4dDtcblx0fVxuXHRcblx0ZnVuY3Rp
b24gY2hpbGROb2RlcyAobm9kZSkge1xuXHQgIHJldHVybiBub2RlLmNoaWxkTm9kZXNcblx0fVxu
XHRcblx0ZnVuY3Rpb24gc2V0QXR0cmlidXRlIChub2RlLCBrZXksIHZhbCkge1xuXHQgIG5vZGUu
c2V0QXR0cmlidXRlKGtleSwgdmFsKTtcblx0fVxuXHRcblx0XG5cdHZhciBub2RlT3BzID0gT2Jq
ZWN0LmZyZWV6ZSh7XG5cdFx0Y3JlYXRlRWxlbWVudDogY3JlYXRlRWxlbWVudCQxLFxuXHRcdGNy
ZWF0ZUVsZW1lbnROUzogY3JlYXRlRWxlbWVudE5TLFxuXHRcdGNyZWF0ZVRleHROb2RlOiBjcmVh
dGVUZXh0Tm9kZSxcblx0XHRjcmVhdGVDb21tZW50OiBjcmVhdGVDb21tZW50LFxuXHRcdGluc2Vy
dEJlZm9yZTogaW5zZXJ0QmVmb3JlLFxuXHRcdHJlbW92ZUNoaWxkOiByZW1vdmVDaGlsZCxcblx0
XHRhcHBlbmRDaGlsZDogYXBwZW5kQ2hpbGQsXG5cdFx0cGFyZW50Tm9kZTogcGFyZW50Tm9kZSxc
blx0XHRuZXh0U2libGluZzogbmV4dFNpYmxpbmcsXG5cdFx0dGFnTmFtZTogdGFnTmFtZSxcblx0
XHRzZXRUZXh0Q29udGVudDogc2V0VGV4dENvbnRlbnQsXG5cdFx0Y2hpbGROb2RlczogY2hpbGRO
b2Rlcyxcblx0XHRzZXRBdHRyaWJ1dGU6IHNldEF0dHJpYnV0ZVxuXHR9KTtcblx0XG5cdC8qICAq
L1xuXHRcblx0dmFyIHJlZiA9IHtcblx0ICBjcmVhdGU6IGZ1bmN0aW9uIGNyZWF0ZSAoXywgdm5v
ZGUpIHtcblx0ICAgIHJlZ2lzdGVyUmVmKHZub2RlKTtcblx0ICB9LFxuXHQgIHVwZGF0ZTogZnVu
Y3Rpb24gdXBkYXRlIChvbGRWbm9kZSwgdm5vZGUpIHtcblx0ICAgIGlmIChvbGRWbm9kZS5kYXRh
LnJlZiAhPT0gdm5vZGUuZGF0YS5yZWYpIHtcblx0ICAgICAgcmVnaXN0ZXJSZWYob2xkVm5vZGUs
IHRydWUpO1xuXHQgICAgICByZWdpc3RlclJlZih2bm9kZSk7XG5cdCAgICB9XG5cdCAgfSxcblx0
ICBkZXN0cm95OiBmdW5jdGlvbiBkZXN0cm95ICh2bm9kZSkge1xuXHQgICAgcmVnaXN0ZXJSZWYo
dm5vZGUsIHRydWUpO1xuXHQgIH1cblx0fTtcblx0XG5cdGZ1bmN0aW9uIHJlZ2lzdGVyUmVmICh2
bm9kZSwgaXNSZW1vdmFsKSB7XG5cdCAgdmFyIGtleSA9IHZub2RlLmRhdGEucmVmO1xuXHQgIGlm
ICgha2V5KSB7IHJldHVybiB9XG5cdFxuXHQgIHZhciB2bSA9IHZub2RlLmNvbnRleHQ7XG5cdCAg
dmFyIHJlZiA9IHZub2RlLmNoaWxkIHx8IHZub2RlLmVsbTtcblx0ICB2YXIgcmVmcyA9IHZtLiRy
ZWZzO1xuXHQgIGlmIChpc1JlbW92YWwpIHtcblx0ICAgIGlmIChBcnJheS5pc0FycmF5KHJlZnNb
a2V5XSkpIHtcblx0ICAgICAgcmVtb3ZlJDEocmVmc1trZXldLCByZWYpO1xuXHQgICAgfSBlbHNl
IGlmIChyZWZzW2tleV0gPT09IHJlZikge1xuXHQgICAgICByZWZzW2tleV0gPSB1bmRlZmluZWQ7
XG5cdCAgICB9XG5cdCAgfSBlbHNlIHtcblx0ICAgIGlmICh2bm9kZS5kYXRhLnJlZkluRm9yKSB7
XG5cdCAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlZnNba2V5XSkgJiYgcmVmc1trZXldLmluZGV4
T2YocmVmKSA8IDApIHtcblx0ICAgICAgICByZWZzW2tleV0ucHVzaChyZWYpO1xuXHQgICAgICB9
IGVsc2Uge1xuXHQgICAgICAgIHJlZnNba2V5XSA9IFtyZWZdO1xuXHQgICAgICB9XG5cdCAgICB9
IGVsc2Uge1xuXHQgICAgICByZWZzW2tleV0gPSByZWY7XG5cdCAgICB9XG5cdCAgfVxuXHR9XG5c
dFxuXHQvKipcblx0ICogVmlydHVhbCBET00gcGF0Y2hpbmcgYWxnb3JpdGhtIGJhc2VkIG9uIFNu
YWJiZG9tIGJ5XG5cdCAqIFNpbW9uIEZyaWlzIFZpbmR1bSAoQHBhbGRlcGluZClcblx0ICogTGlj
ZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlXG5cdCAqIGh0dHBzOi8vZ2l0aHViLmNvbS9wYWxk
ZXBpbmQvc25hYmJkb20vYmxvYi9tYXN0ZXIvTElDRU5TRVxuXHQgKlxuXHQgKiBtb2RpZmllZCBi
eSBFdmFuIFlvdSAoQHl5eDk5MDgwMylcblx0ICpcblx0XG5cdC8qXG5cdCAqIE5vdCB0eXBlLWNo
ZWNraW5nIHRoaXMgYmVjYXVzZSB0aGlzIGZpbGUgaXMgcGVyZi1jcml0aWNhbCBhbmQgdGhlIGNv
c3Rcblx0ICogb2YgbWFraW5nIGZsb3cgdW5kZXJzdGFuZCBpdCBpcyBub3Qgd29ydGggaXQuXG5c
dCAqL1xuXHRcblx0dmFyIGVtcHR5Tm9kZSA9IG5ldyBWTm9kZSgnJywge30sIFtdKTtcblx0XG5c
dHZhciBob29rcyQxID0gWydjcmVhdGUnLCAndXBkYXRlJywgJ3JlbW92ZScsICdkZXN0cm95J107
XG5cdFxuXHRmdW5jdGlvbiBpc1VuZGVmIChzKSB7XG5cdCAgcmV0dXJuIHMgPT0gbnVsbFxuXHR9
XG5cdFxuXHRmdW5jdGlvbiBpc0RlZiAocykge1xuXHQgIHJldHVybiBzICE9IG51bGxcblx0fVxu
XHRcblx0ZnVuY3Rpb24gc2FtZVZub2RlICh2bm9kZTEsIHZub2RlMikge1xuXHQgIHJldHVybiAo
XG5cdCAgICB2bm9kZTEua2V5ID09PSB2bm9kZTIua2V5ICYmXG5cdCAgICB2bm9kZTEudGFnID09
PSB2bm9kZTIudGFnICYmXG5cdCAgICB2bm9kZTEuaXNDb21tZW50ID09PSB2bm9kZTIuaXNDb21t
ZW50ICYmXG5cdCAgICAhdm5vZGUxLmRhdGEgPT09ICF2bm9kZTIuZGF0YVxuXHQgIClcblx0fVxu
XHRcblx0ZnVuY3Rpb24gY3JlYXRlS2V5VG9PbGRJZHggKGNoaWxkcmVuLCBiZWdpbklkeCwgZW5k
SWR4KSB7XG5cdCAgdmFyIGksIGtleTtcblx0ICB2YXIgbWFwID0ge307XG5cdCAgZm9yIChpID0g
YmVnaW5JZHg7IGkgPD0gZW5kSWR4OyArK2kpIHtcblx0ICAgIGtleSA9IGNoaWxkcmVuW2ldLmtl
eTtcblx0ICAgIGlmIChpc0RlZihrZXkpKSB7IG1hcFtrZXldID0gaTsgfVxuXHQgIH1cblx0ICBy
ZXR1cm4gbWFwXG5cdH1cblx0XG5cdGZ1bmN0aW9uIGNyZWF0ZVBhdGNoRnVuY3Rpb24gKGJhY2tl
bmQpIHtcblx0ICB2YXIgaSwgajtcblx0ICB2YXIgY2JzID0ge307XG5cdFxuXHQgIHZhciBtb2R1
bGVzID0gYmFja2VuZC5tb2R1bGVzO1xuXHQgIHZhciBub2RlT3BzID0gYmFja2VuZC5ub2RlT3Bz
O1xuXHRcblx0ICBmb3IgKGkgPSAwOyBpIDwgaG9va3MkMS5sZW5ndGg7ICsraSkge1xuXHQgICAg
Y2JzW2hvb2tzJDFbaV1dID0gW107XG5cdCAgICBmb3IgKGogPSAwOyBqIDwgbW9kdWxlcy5sZW5n
dGg7ICsraikge1xuXHQgICAgICBpZiAobW9kdWxlc1tqXVtob29rcyQxW2ldXSAhPT0gdW5kZWZp
bmVkKSB7IGNic1tob29rcyQxW2ldXS5wdXNoKG1vZHVsZXNbal1baG9va3MkMVtpXV0pOyB9XG5c
dCAgICB9XG5cdCAgfVxuXHRcblx0ICBmdW5jdGlvbiBlbXB0eU5vZGVBdCAoZWxtKSB7XG5cdCAg
ICByZXR1cm4gbmV3IFZOb2RlKG5vZGVPcHMudGFnTmFtZShlbG0pLnRvTG93ZXJDYXNlKCksIHt9
LCBbXSwgdW5kZWZpbmVkLCBlbG0pXG5cdCAgfVxuXHRcblx0ICBmdW5jdGlvbiBjcmVhdGVSbUNi
IChjaGlsZEVsbSwgbGlzdGVuZXJzKSB7XG5cdCAgICBmdW5jdGlvbiByZW1vdmUkJDEgKCkge1xu
XHQgICAgICBpZiAoLS1yZW1vdmUkJDEubGlzdGVuZXJzID09PSAwKSB7XG5cdCAgICAgICAgcmVt
b3ZlRWxlbWVudChjaGlsZEVsbSk7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICAgIHJlbW92ZSQk
MS5saXN0ZW5lcnMgPSBsaXN0ZW5lcnM7XG5cdCAgICByZXR1cm4gcmVtb3ZlJCQxXG5cdCAgfVxu
XHRcblx0ICBmdW5jdGlvbiByZW1vdmVFbGVtZW50IChlbCkge1xuXHQgICAgdmFyIHBhcmVudCA9
IG5vZGVPcHMucGFyZW50Tm9kZShlbCk7XG5cdCAgICAvLyBlbGVtZW50IG1heSBoYXZlIGFscmVh
ZHkgYmVlbiByZW1vdmVkIGR1ZSB0byB2LWh0bWxcblx0ICAgIGlmIChwYXJlbnQpIHtcblx0ICAg
ICAgbm9kZU9wcy5yZW1vdmVDaGlsZChwYXJlbnQsIGVsKTtcblx0ICAgIH1cblx0ICB9XG5cdFxu
XHQgIGZ1bmN0aW9uIGNyZWF0ZUVsbSAodm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSwgbmVzdGVk
KSB7XG5cdCAgICB2YXIgaTtcblx0ICAgIHZhciBkYXRhID0gdm5vZGUuZGF0YTtcblx0ICAgIHZu
b2RlLmlzUm9vdEluc2VydCA9ICFuZXN0ZWQ7XG5cdCAgICBpZiAoaXNEZWYoZGF0YSkpIHtcblx0
ICAgICAgaWYgKGlzRGVmKGkgPSBkYXRhLmhvb2spICYmIGlzRGVmKGkgPSBpLmluaXQpKSB7IGko
dm5vZGUpOyB9XG5cdCAgICAgIC8vIGFmdGVyIGNhbGxpbmcgdGhlIGluaXQgaG9vaywgaWYgdGhl
IHZub2RlIGlzIGEgY2hpbGQgY29tcG9uZW50XG5cdCAgICAgIC8vIGl0IHNob3VsZCd2ZSBjcmVh
dGVkIGEgY2hpbGQgaW5zdGFuY2UgYW5kIG1vdW50ZWQgaXQuIHRoZSBjaGlsZFxuXHQgICAgICAv
LyBjb21wb25lbnQgYWxzbyBoYXMgc2V0IHRoZSBwbGFjZWhvbGRlciB2bm9kZSdzIGVsbS5cblx0
ICAgICAgLy8gaW4gdGhhdCBjYXNlIHdlIGNhbiBqdXN0IHJldHVybiB0aGUgZWxlbWVudCBhbmQg
YmUgZG9uZS5cblx0ICAgICAgaWYgKGlzRGVmKGkgPSB2bm9kZS5jaGlsZCkpIHtcblx0ICAgICAg
ICBpbml0Q29tcG9uZW50KHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUpO1xuXHQgICAgICAgIHJl
dHVybiB2bm9kZS5lbG1cblx0ICAgICAgfVxuXHQgICAgfVxuXHQgICAgdmFyIGNoaWxkcmVuID0g
dm5vZGUuY2hpbGRyZW47XG5cdCAgICB2YXIgdGFnID0gdm5vZGUudGFnO1xuXHQgICAgaWYgKGlz
RGVmKHRhZykpIHtcblx0ICAgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgICAgaWYgKFxuXHQgICAg
ICAgICAgIXZub2RlLm5zICYmXG5cdCAgICAgICAgICAhKGNvbmZpZy5pZ25vcmVkRWxlbWVudHMg
JiYgY29uZmlnLmlnbm9yZWRFbGVtZW50cy5pbmRleE9mKHRhZykgPiAtMSkgJiZcblx0ICAgICAg
ICAgIGNvbmZpZy5pc1Vua25vd25FbGVtZW50KHRhZylcblx0ICAgICAgICApIHtcblx0ICAgICAg
ICAgIHdhcm4oXG5cdCAgICAgICAgICAgICdVbmtub3duIGN1c3RvbSBlbGVtZW50OiA8JyArIHRh
ZyArICc+IC0gZGlkIHlvdSAnICtcblx0ICAgICAgICAgICAgJ3JlZ2lzdGVyIHRoZSBjb21wb25l
bnQgY29ycmVjdGx5PyBGb3IgcmVjdXJzaXZlIGNvbXBvbmVudHMsICcgK1xuXHQgICAgICAgICAg
ICAnbWFrZSBzdXJlIHRvIHByb3ZpZGUgdGhlIFwibmFtZVwiIG9wdGlvbi4nLFxuXHQgICAgICAg
ICAgICB2bm9kZS5jb250ZXh0XG5cdCAgICAgICAgICApO1xuXHQgICAgICAgIH1cblx0ICAgICAg
fVxuXHQgICAgICB2bm9kZS5lbG0gPSB2bm9kZS5uc1xuXHQgICAgICAgID8gbm9kZU9wcy5jcmVh
dGVFbGVtZW50TlModm5vZGUubnMsIHRhZylcblx0ICAgICAgICA6IG5vZGVPcHMuY3JlYXRlRWxl
bWVudCh0YWcsIHZub2RlKTtcblx0ICAgICAgc2V0U2NvcGUodm5vZGUpO1xuXHQgICAgICBjcmVh
dGVDaGlsZHJlbih2bm9kZSwgY2hpbGRyZW4sIGluc2VydGVkVm5vZGVRdWV1ZSk7XG5cdCAgICAg
IGlmIChpc0RlZihkYXRhKSkge1xuXHQgICAgICAgIGludm9rZUNyZWF0ZUhvb2tzKHZub2RlLCBp
bnNlcnRlZFZub2RlUXVldWUpO1xuXHQgICAgICB9XG5cdCAgICB9IGVsc2UgaWYgKHZub2RlLmlz
Q29tbWVudCkge1xuXHQgICAgICB2bm9kZS5lbG0gPSBub2RlT3BzLmNyZWF0ZUNvbW1lbnQodm5v
ZGUudGV4dCk7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICB2bm9kZS5lbG0gPSBub2RlT3BzLmNy
ZWF0ZVRleHROb2RlKHZub2RlLnRleHQpO1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIHZub2RlLmVs
bVxuXHQgIH1cblx0XG5cdCAgZnVuY3Rpb24gY3JlYXRlQ2hpbGRyZW4gKHZub2RlLCBjaGlsZHJl
biwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKSB7XG5cdCAgICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJl
bikpIHtcblx0ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7ICsraSkg
e1xuXHQgICAgICAgIG5vZGVPcHMuYXBwZW5kQ2hpbGQodm5vZGUuZWxtLCBjcmVhdGVFbG0oY2hp
bGRyZW5baV0sIGluc2VydGVkVm5vZGVRdWV1ZSwgdHJ1ZSkpO1xuXHQgICAgICB9XG5cdCAgICB9
IGVsc2UgaWYgKGlzUHJpbWl0aXZlKHZub2RlLnRleHQpKSB7XG5cdCAgICAgIG5vZGVPcHMuYXBw
ZW5kQ2hpbGQodm5vZGUuZWxtLCBub2RlT3BzLmNyZWF0ZVRleHROb2RlKHZub2RlLnRleHQpKTtc
blx0ICAgIH1cblx0ICB9XG5cdFxuXHQgIGZ1bmN0aW9uIGlzUGF0Y2hhYmxlICh2bm9kZSkge1xu
XHQgICAgd2hpbGUgKHZub2RlLmNoaWxkKSB7XG5cdCAgICAgIHZub2RlID0gdm5vZGUuY2hpbGQu
X3Zub2RlO1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIGlzRGVmKHZub2RlLnRhZylcblx0ICB9XG5c
dFxuXHQgIGZ1bmN0aW9uIGludm9rZUNyZWF0ZUhvb2tzICh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1
ZXVlKSB7XG5cdCAgICBmb3IgKHZhciBpJDEgPSAwOyBpJDEgPCBjYnMuY3JlYXRlLmxlbmd0aDsg
KytpJDEpIHtcblx0ICAgICAgY2JzLmNyZWF0ZVtpJDFdKGVtcHR5Tm9kZSwgdm5vZGUpO1xuXHQg
ICAgfVxuXHQgICAgaSA9IHZub2RlLmRhdGEuaG9vazsgLy8gUmV1c2UgdmFyaWFibGVcblx0ICAg
IGlmIChpc0RlZihpKSkge1xuXHQgICAgICBpZiAoaS5jcmVhdGUpIHsgaS5jcmVhdGUoZW1wdHlO
b2RlLCB2bm9kZSk7IH1cblx0ICAgICAgaWYgKGkuaW5zZXJ0KSB7IGluc2VydGVkVm5vZGVRdWV1
ZS5wdXNoKHZub2RlKTsgfVxuXHQgICAgfVxuXHQgIH1cblx0XG5cdCAgZnVuY3Rpb24gaW5pdENv
bXBvbmVudCAodm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSkge1xuXHQgICAgaWYgKHZub2RlLmRh
dGEucGVuZGluZ0luc2VydCkge1xuXHQgICAgICBpbnNlcnRlZFZub2RlUXVldWUucHVzaC5hcHBs
eShpbnNlcnRlZFZub2RlUXVldWUsIHZub2RlLmRhdGEucGVuZGluZ0luc2VydCk7XG5cdCAgICB9
XG5cdCAgICB2bm9kZS5lbG0gPSB2bm9kZS5jaGlsZC4kZWw7XG5cdCAgICBpZiAoaXNQYXRjaGFi
bGUodm5vZGUpKSB7XG5cdCAgICAgIGludm9rZUNyZWF0ZUhvb2tzKHZub2RlLCBpbnNlcnRlZFZu
b2RlUXVldWUpO1xuXHQgICAgICBzZXRTY29wZSh2bm9kZSk7XG5cdCAgICB9IGVsc2Uge1xuXHQg
ICAgICAvLyBlbXB0eSBjb21wb25lbnQgcm9vdC5cblx0ICAgICAgLy8gc2tpcCBhbGwgZWxlbWVu
dC1yZWxhdGVkIG1vZHVsZXMgZXhjZXB0IGZvciByZWYgKCMzNDU1KVxuXHQgICAgICByZWdpc3Rl
clJlZih2bm9kZSk7XG5cdCAgICAgIC8vIG1ha2Ugc3VyZSB0byBpbnZva2UgdGhlIGluc2VydCBo
b29rXG5cdCAgICAgIGluc2VydGVkVm5vZGVRdWV1ZS5wdXNoKHZub2RlKTtcblx0ICAgIH1cblx0
ICB9XG5cdFxuXHQgIC8vIHNldCBzY29wZSBpZCBhdHRyaWJ1dGUgZm9yIHNjb3BlZCBDU1MuXG5c
dCAgLy8gdGhpcyBpcyBpbXBsZW1lbnRlZCBhcyBhIHNwZWNpYWwgY2FzZSB0byBhdm9pZCB0aGUg
b3ZlcmhlYWRcblx0ICAvLyBvZiBnb2luZyB0aHJvdWdoIHRoZSBub3JtYWwgYXR0cmlidXRlIHBh
dGNoaW5nIHByb2Nlc3MuXG5cdCAgZnVuY3Rpb24gc2V0U2NvcGUgKHZub2RlKSB7XG5cdCAgICB2
YXIgaTtcblx0ICAgIGlmIChpc0RlZihpID0gdm5vZGUuY29udGV4dCkgJiYgaXNEZWYoaSA9IGku
JG9wdGlvbnMuX3Njb3BlSWQpKSB7XG5cdCAgICAgIG5vZGVPcHMuc2V0QXR0cmlidXRlKHZub2Rl
LmVsbSwgaSwgJycpO1xuXHQgICAgfVxuXHQgICAgaWYgKGlzRGVmKGkgPSBhY3RpdmVJbnN0YW5j
ZSkgJiZcblx0ICAgICAgICBpICE9PSB2bm9kZS5jb250ZXh0ICYmXG5cdCAgICAgICAgaXNEZWYo
aSA9IGkuJG9wdGlvbnMuX3Njb3BlSWQpKSB7XG5cdCAgICAgIG5vZGVPcHMuc2V0QXR0cmlidXRl
KHZub2RlLmVsbSwgaSwgJycpO1xuXHQgICAgfVxuXHQgIH1cblx0XG5cdCAgZnVuY3Rpb24gYWRk
Vm5vZGVzIChwYXJlbnRFbG0sIGJlZm9yZSwgdm5vZGVzLCBzdGFydElkeCwgZW5kSWR4LCBpbnNl
cnRlZFZub2RlUXVldWUpIHtcblx0ICAgIGZvciAoOyBzdGFydElkeCA8PSBlbmRJZHg7ICsrc3Rh
cnRJZHgpIHtcblx0ICAgICAgbm9kZU9wcy5pbnNlcnRCZWZvcmUocGFyZW50RWxtLCBjcmVhdGVF
bG0odm5vZGVzW3N0YXJ0SWR4XSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKSwgYmVmb3JlKTtcblx0ICAg
IH1cblx0ICB9XG5cdFxuXHQgIGZ1bmN0aW9uIGludm9rZURlc3Ryb3lIb29rICh2bm9kZSkge1xu
XHQgICAgdmFyIGksIGo7XG5cdCAgICB2YXIgZGF0YSA9IHZub2RlLmRhdGE7XG5cdCAgICBpZiAo
aXNEZWYoZGF0YSkpIHtcblx0ICAgICAgaWYgKGlzRGVmKGkgPSBkYXRhLmhvb2spICYmIGlzRGVm
KGkgPSBpLmRlc3Ryb3kpKSB7IGkodm5vZGUpOyB9XG5cdCAgICAgIGZvciAoaSA9IDA7IGkgPCBj
YnMuZGVzdHJveS5sZW5ndGg7ICsraSkgeyBjYnMuZGVzdHJveVtpXSh2bm9kZSk7IH1cblx0ICAg
IH1cblx0ICAgIGlmIChpc0RlZihpID0gdm5vZGUuY2hpbGRyZW4pKSB7XG5cdCAgICAgIGZvciAo
aiA9IDA7IGogPCB2bm9kZS5jaGlsZHJlbi5sZW5ndGg7ICsraikge1xuXHQgICAgICAgIGludm9r
ZURlc3Ryb3lIb29rKHZub2RlLmNoaWxkcmVuW2pdKTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQg
IH1cblx0XG5cdCAgZnVuY3Rpb24gcmVtb3ZlVm5vZGVzIChwYXJlbnRFbG0sIHZub2Rlcywgc3Rh
cnRJZHgsIGVuZElkeCkge1xuXHQgICAgZm9yICg7IHN0YXJ0SWR4IDw9IGVuZElkeDsgKytzdGFy
dElkeCkge1xuXHQgICAgICB2YXIgY2ggPSB2bm9kZXNbc3RhcnRJZHhdO1xuXHQgICAgICBpZiAo
aXNEZWYoY2gpKSB7XG5cdCAgICAgICAgaWYgKGlzRGVmKGNoLnRhZykpIHtcblx0ICAgICAgICAg
IHJlbW92ZUFuZEludm9rZVJlbW92ZUhvb2soY2gpO1xuXHQgICAgICAgICAgaW52b2tlRGVzdHJv
eUhvb2soY2gpO1xuXHQgICAgICAgIH0gZWxzZSB7IC8vIFRleHQgbm9kZVxuXHQgICAgICAgICAg
bm9kZU9wcy5yZW1vdmVDaGlsZChwYXJlbnRFbG0sIGNoLmVsbSk7XG5cdCAgICAgICAgfVxuXHQg
ICAgICB9XG5cdCAgICB9XG5cdCAgfVxuXHRcblx0ICBmdW5jdGlvbiByZW1vdmVBbmRJbnZva2VS
ZW1vdmVIb29rICh2bm9kZSwgcm0pIHtcblx0ICAgIGlmIChybSB8fCBpc0RlZih2bm9kZS5kYXRh
KSkge1xuXHQgICAgICB2YXIgbGlzdGVuZXJzID0gY2JzLnJlbW92ZS5sZW5ndGggKyAxO1xuXHQg
ICAgICBpZiAoIXJtKSB7XG5cdCAgICAgICAgLy8gZGlyZWN0bHkgcmVtb3Zpbmdcblx0ICAgICAg
ICBybSA9IGNyZWF0ZVJtQ2Iodm5vZGUuZWxtLCBsaXN0ZW5lcnMpO1xuXHQgICAgICB9IGVsc2Ug
e1xuXHQgICAgICAgIC8vIHdlIGhhdmUgYSByZWN1cnNpdmVseSBwYXNzZWQgZG93biBybSBjYWxs
YmFja1xuXHQgICAgICAgIC8vIGluY3JlYXNlIHRoZSBsaXN0ZW5lcnMgY291bnRcblx0ICAgICAg
ICBybS5saXN0ZW5lcnMgKz0gbGlzdGVuZXJzO1xuXHQgICAgICB9XG5cdCAgICAgIC8vIHJlY3Vy
c2l2ZWx5IGludm9rZSBob29rcyBvbiBjaGlsZCBjb21wb25lbnQgcm9vdCBub2RlXG5cdCAgICAg
IGlmIChpc0RlZihpID0gdm5vZGUuY2hpbGQpICYmIGlzRGVmKGkgPSBpLl92bm9kZSkgJiYgaXNE
ZWYoaS5kYXRhKSkge1xuXHQgICAgICAgIHJlbW92ZUFuZEludm9rZVJlbW92ZUhvb2soaSwgcm0p
O1xuXHQgICAgICB9XG5cdCAgICAgIGZvciAoaSA9IDA7IGkgPCBjYnMucmVtb3ZlLmxlbmd0aDsg
KytpKSB7XG5cdCAgICAgICAgY2JzLnJlbW92ZVtpXSh2bm9kZSwgcm0pO1xuXHQgICAgICB9XG5c
dCAgICAgIGlmIChpc0RlZihpID0gdm5vZGUuZGF0YS5ob29rKSAmJiBpc0RlZihpID0gaS5yZW1v
dmUpKSB7XG5cdCAgICAgICAgaSh2bm9kZSwgcm0pO1xuXHQgICAgICB9IGVsc2Uge1xuXHQgICAg
ICAgIHJtKCk7XG5cdCAgICAgIH1cblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIHJlbW92ZUVsZW1l
bnQodm5vZGUuZWxtKTtcblx0ICAgIH1cblx0ICB9XG5cdFxuXHQgIGZ1bmN0aW9uIHVwZGF0ZUNo
aWxkcmVuIChwYXJlbnRFbG0sIG9sZENoLCBuZXdDaCwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCByZW1v
dmVPbmx5KSB7XG5cdCAgICB2YXIgb2xkU3RhcnRJZHggPSAwO1xuXHQgICAgdmFyIG5ld1N0YXJ0
SWR4ID0gMDtcblx0ICAgIHZhciBvbGRFbmRJZHggPSBvbGRDaC5sZW5ndGggLSAxO1xuXHQgICAg
dmFyIG9sZFN0YXJ0Vm5vZGUgPSBvbGRDaFswXTtcblx0ICAgIHZhciBvbGRFbmRWbm9kZSA9IG9s
ZENoW29sZEVuZElkeF07XG5cdCAgICB2YXIgbmV3RW5kSWR4ID0gbmV3Q2gubGVuZ3RoIC0gMTtc
blx0ICAgIHZhciBuZXdTdGFydFZub2RlID0gbmV3Q2hbMF07XG5cdCAgICB2YXIgbmV3RW5kVm5v
ZGUgPSBuZXdDaFtuZXdFbmRJZHhdO1xuXHQgICAgdmFyIG9sZEtleVRvSWR4LCBpZHhJbk9sZCwg
ZWxtVG9Nb3ZlLCBiZWZvcmU7XG5cdFxuXHQgICAgLy8gcmVtb3ZlT25seSBpcyBhIHNwZWNpYWwg
ZmxhZyB1c2VkIG9ubHkgYnkgPHRyYW5zaXRpb24tZ3JvdXA+XG5cdCAgICAvLyB0byBlbnN1cmUg
cmVtb3ZlZCBlbGVtZW50cyBzdGF5IGluIGNvcnJlY3QgcmVsYXRpdmUgcG9zaXRpb25zXG5cdCAg
ICAvLyBkdXJpbmcgbGVhdmluZyB0cmFuc2l0aW9uc1xuXHQgICAgdmFyIGNhbk1vdmUgPSAhcmVt
b3ZlT25seTtcblx0XG5cdCAgICB3aGlsZSAob2xkU3RhcnRJZHggPD0gb2xkRW5kSWR4ICYmIG5l
d1N0YXJ0SWR4IDw9IG5ld0VuZElkeCkge1xuXHQgICAgICBpZiAoaXNVbmRlZihvbGRTdGFydFZu
b2RlKSkge1xuXHQgICAgICAgIG9sZFN0YXJ0Vm5vZGUgPSBvbGRDaFsrK29sZFN0YXJ0SWR4XTsg
Ly8gVm5vZGUgaGFzIGJlZW4gbW92ZWQgbGVmdFxuXHQgICAgICB9IGVsc2UgaWYgKGlzVW5kZWYo
b2xkRW5kVm5vZGUpKSB7XG5cdCAgICAgICAgb2xkRW5kVm5vZGUgPSBvbGRDaFstLW9sZEVuZElk
eF07XG5cdCAgICAgIH0gZWxzZSBpZiAoc2FtZVZub2RlKG9sZFN0YXJ0Vm5vZGUsIG5ld1N0YXJ0
Vm5vZGUpKSB7XG5cdCAgICAgICAgcGF0Y2hWbm9kZShvbGRTdGFydFZub2RlLCBuZXdTdGFydFZu
b2RlLCBpbnNlcnRlZFZub2RlUXVldWUpO1xuXHQgICAgICAgIG9sZFN0YXJ0Vm5vZGUgPSBvbGRD
aFsrK29sZFN0YXJ0SWR4XTtcblx0ICAgICAgICBuZXdTdGFydFZub2RlID0gbmV3Q2hbKytuZXdT
dGFydElkeF07XG5cdCAgICAgIH0gZWxzZSBpZiAoc2FtZVZub2RlKG9sZEVuZFZub2RlLCBuZXdF
bmRWbm9kZSkpIHtcblx0ICAgICAgICBwYXRjaFZub2RlKG9sZEVuZFZub2RlLCBuZXdFbmRWbm9k
ZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcblx0ICAgICAgICBvbGRFbmRWbm9kZSA9IG9sZENoWy0t
b2xkRW5kSWR4XTtcblx0ICAgICAgICBuZXdFbmRWbm9kZSA9IG5ld0NoWy0tbmV3RW5kSWR4XTtc
blx0ICAgICAgfSBlbHNlIGlmIChzYW1lVm5vZGUob2xkU3RhcnRWbm9kZSwgbmV3RW5kVm5vZGUp
KSB7IC8vIFZub2RlIG1vdmVkIHJpZ2h0XG5cdCAgICAgICAgcGF0Y2hWbm9kZShvbGRTdGFydFZu
b2RlLCBuZXdFbmRWbm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcblx0ICAgICAgICBjYW5Nb3Zl
ICYmIG5vZGVPcHMuaW5zZXJ0QmVmb3JlKHBhcmVudEVsbSwgb2xkU3RhcnRWbm9kZS5lbG0sIG5v
ZGVPcHMubmV4dFNpYmxpbmcob2xkRW5kVm5vZGUuZWxtKSk7XG5cdCAgICAgICAgb2xkU3RhcnRW
bm9kZSA9IG9sZENoWysrb2xkU3RhcnRJZHhdO1xuXHQgICAgICAgIG5ld0VuZFZub2RlID0gbmV3
Q2hbLS1uZXdFbmRJZHhdO1xuXHQgICAgICB9IGVsc2UgaWYgKHNhbWVWbm9kZShvbGRFbmRWbm9k
ZSwgbmV3U3RhcnRWbm9kZSkpIHsgLy8gVm5vZGUgbW92ZWQgbGVmdFxuXHQgICAgICAgIHBhdGNo
Vm5vZGUob2xkRW5kVm5vZGUsIG5ld1N0YXJ0Vm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSk7XG5c
dCAgICAgICAgY2FuTW92ZSAmJiBub2RlT3BzLmluc2VydEJlZm9yZShwYXJlbnRFbG0sIG9sZEVu
ZFZub2RlLmVsbSwgb2xkU3RhcnRWbm9kZS5lbG0pO1xuXHQgICAgICAgIG9sZEVuZFZub2RlID0g
b2xkQ2hbLS1vbGRFbmRJZHhdO1xuXHQgICAgICAgIG5ld1N0YXJ0Vm5vZGUgPSBuZXdDaFsrK25l
d1N0YXJ0SWR4XTtcblx0ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICBpZiAoaXNVbmRlZihvbGRL
ZXlUb0lkeCkpIHsgb2xkS2V5VG9JZHggPSBjcmVhdGVLZXlUb09sZElkeChvbGRDaCwgb2xkU3Rh
cnRJZHgsIG9sZEVuZElkeCk7IH1cblx0ICAgICAgICBpZHhJbk9sZCA9IGlzRGVmKG5ld1N0YXJ0
Vm5vZGUua2V5KSA/IG9sZEtleVRvSWR4W25ld1N0YXJ0Vm5vZGUua2V5XSA6IG51bGw7XG5cdCAg
ICAgICAgaWYgKGlzVW5kZWYoaWR4SW5PbGQpKSB7IC8vIE5ldyBlbGVtZW50XG5cdCAgICAgICAg
ICBub2RlT3BzLmluc2VydEJlZm9yZShwYXJlbnRFbG0sIGNyZWF0ZUVsbShuZXdTdGFydFZub2Rl
LCBpbnNlcnRlZFZub2RlUXVldWUpLCBvbGRTdGFydFZub2RlLmVsbSk7XG5cdCAgICAgICAgICBu
ZXdTdGFydFZub2RlID0gbmV3Q2hbKytuZXdTdGFydElkeF07XG5cdCAgICAgICAgfSBlbHNlIHtc
blx0ICAgICAgICAgIGVsbVRvTW92ZSA9IG9sZENoW2lkeEluT2xkXTtcblx0ICAgICAgICAgIC8q
IGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuXHQgICAgICAgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAg
ICAgICAgIHdhcm4oXG5cdCAgICAgICAgICAgICAgJ0l0IHNlZW1zIHRoZXJlIGFyZSBkdXBsaWNh
dGUga2V5cyB0aGF0IGlzIGNhdXNpbmcgYW4gdXBkYXRlIGVycm9yLiAnICtcblx0ICAgICAgICAg
ICAgICAnTWFrZSBzdXJlIGVhY2ggdi1mb3IgaXRlbSBoYXMgYSB1bmlxdWUga2V5Lidcblx0ICAg
ICAgICAgICAgKTtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICAgIGlmIChlbG1Ub01vdmUudGFn
ICE9PSBuZXdTdGFydFZub2RlLnRhZykge1xuXHQgICAgICAgICAgICAvLyBzYW1lIGtleSBidXQg
ZGlmZmVyZW50IGVsZW1lbnQuIHRyZWF0IGFzIG5ldyBlbGVtZW50XG5cdCAgICAgICAgICAgIG5v
ZGVPcHMuaW5zZXJ0QmVmb3JlKHBhcmVudEVsbSwgY3JlYXRlRWxtKG5ld1N0YXJ0Vm5vZGUsIGlu
c2VydGVkVm5vZGVRdWV1ZSksIG9sZFN0YXJ0Vm5vZGUuZWxtKTtcblx0ICAgICAgICAgICAgbmV3
U3RhcnRWbm9kZSA9IG5ld0NoWysrbmV3U3RhcnRJZHhdO1xuXHQgICAgICAgICAgfSBlbHNlIHtc
blx0ICAgICAgICAgICAgcGF0Y2hWbm9kZShlbG1Ub01vdmUsIG5ld1N0YXJ0Vm5vZGUsIGluc2Vy
dGVkVm5vZGVRdWV1ZSk7XG5cdCAgICAgICAgICAgIG9sZENoW2lkeEluT2xkXSA9IHVuZGVmaW5l
ZDtcblx0ICAgICAgICAgICAgY2FuTW92ZSAmJiBub2RlT3BzLmluc2VydEJlZm9yZShwYXJlbnRF
bG0sIG5ld1N0YXJ0Vm5vZGUuZWxtLCBvbGRTdGFydFZub2RlLmVsbSk7XG5cdCAgICAgICAgICAg
IG5ld1N0YXJ0Vm5vZGUgPSBuZXdDaFsrK25ld1N0YXJ0SWR4XTtcblx0ICAgICAgICAgIH1cblx0
ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICAgIGlmIChvbGRTdGFydElkeCA+IG9s
ZEVuZElkeCkge1xuXHQgICAgICBiZWZvcmUgPSBpc1VuZGVmKG5ld0NoW25ld0VuZElkeCArIDFd
KSA/IG51bGwgOiBuZXdDaFtuZXdFbmRJZHggKyAxXS5lbG07XG5cdCAgICAgIGFkZFZub2Rlcyhw
YXJlbnRFbG0sIGJlZm9yZSwgbmV3Q2gsIG5ld1N0YXJ0SWR4LCBuZXdFbmRJZHgsIGluc2VydGVk
Vm5vZGVRdWV1ZSk7XG5cdCAgICB9IGVsc2UgaWYgKG5ld1N0YXJ0SWR4ID4gbmV3RW5kSWR4KSB7
XG5cdCAgICAgIHJlbW92ZVZub2RlcyhwYXJlbnRFbG0sIG9sZENoLCBvbGRTdGFydElkeCwgb2xk
RW5kSWR4KTtcblx0ICAgIH1cblx0ICB9XG5cdFxuXHQgIGZ1bmN0aW9uIHBhdGNoVm5vZGUgKG9s
ZFZub2RlLCB2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCByZW1vdmVPbmx5KSB7XG5cdCAgICBp
ZiAob2xkVm5vZGUgPT09IHZub2RlKSB7XG5cdCAgICAgIHJldHVyblxuXHQgICAgfVxuXHQgICAg
Ly8gcmV1c2UgZWxlbWVudCBmb3Igc3RhdGljIHRyZWVzLlxuXHQgICAgLy8gbm90ZSB3ZSBvbmx5
IGRvIHRoaXMgaWYgdGhlIHZub2RlIGlzIGNsb25lZCAtXG5cdCAgICAvLyBpZiB0aGUgbmV3IG5v
ZGUgaXMgbm90IGNsb25lZCBpdCBtZWFucyB0aGUgcmVuZGVyIGZ1bmN0aW9ucyBoYXZlIGJlZW5c
blx0ICAgIC8vIHJlc2V0IGJ5IHRoZSBob3QtcmVsb2FkLWFwaSBhbmQgd2UgbmVlZCB0byBkbyBh
IHByb3BlciByZS1yZW5kZXIuXG5cdCAgICBpZiAodm5vZGUuaXNTdGF0aWMgJiZcblx0ICAgICAg
ICBvbGRWbm9kZS5pc1N0YXRpYyAmJlxuXHQgICAgICAgIHZub2RlLmtleSA9PT0gb2xkVm5vZGUu
a2V5ICYmXG5cdCAgICAgICAgKHZub2RlLmlzQ2xvbmVkIHx8IHZub2RlLmlzT25jZSkpIHtcblx0
ICAgICAgdm5vZGUuZWxtID0gb2xkVm5vZGUuZWxtO1xuXHQgICAgICB2bm9kZS5jaGlsZCA9IG9s
ZFZub2RlLmNoaWxkO1xuXHQgICAgICByZXR1cm5cblx0ICAgIH1cblx0ICAgIHZhciBpO1xuXHQg
ICAgdmFyIGRhdGEgPSB2bm9kZS5kYXRhO1xuXHQgICAgdmFyIGhhc0RhdGEgPSBpc0RlZihkYXRh
KTtcblx0ICAgIGlmIChoYXNEYXRhICYmIGlzRGVmKGkgPSBkYXRhLmhvb2spICYmIGlzRGVmKGkg
PSBpLnByZXBhdGNoKSkge1xuXHQgICAgICBpKG9sZFZub2RlLCB2bm9kZSk7XG5cdCAgICB9XG5c
dCAgICB2YXIgZWxtID0gdm5vZGUuZWxtID0gb2xkVm5vZGUuZWxtO1xuXHQgICAgdmFyIG9sZENo
ID0gb2xkVm5vZGUuY2hpbGRyZW47XG5cdCAgICB2YXIgY2ggPSB2bm9kZS5jaGlsZHJlbjtcblx0
ICAgIGlmIChoYXNEYXRhICYmIGlzUGF0Y2hhYmxlKHZub2RlKSkge1xuXHQgICAgICBmb3IgKGkg
PSAwOyBpIDwgY2JzLnVwZGF0ZS5sZW5ndGg7ICsraSkgeyBjYnMudXBkYXRlW2ldKG9sZFZub2Rl
LCB2bm9kZSk7IH1cblx0ICAgICAgaWYgKGlzRGVmKGkgPSBkYXRhLmhvb2spICYmIGlzRGVmKGkg
PSBpLnVwZGF0ZSkpIHsgaShvbGRWbm9kZSwgdm5vZGUpOyB9XG5cdCAgICB9XG5cdCAgICBpZiAo
aXNVbmRlZih2bm9kZS50ZXh0KSkge1xuXHQgICAgICBpZiAoaXNEZWYob2xkQ2gpICYmIGlzRGVm
KGNoKSkge1xuXHQgICAgICAgIGlmIChvbGRDaCAhPT0gY2gpIHsgdXBkYXRlQ2hpbGRyZW4oZWxt
LCBvbGRDaCwgY2gsIGluc2VydGVkVm5vZGVRdWV1ZSwgcmVtb3ZlT25seSk7IH1cblx0ICAgICAg
fSBlbHNlIGlmIChpc0RlZihjaCkpIHtcblx0ICAgICAgICBpZiAoaXNEZWYob2xkVm5vZGUudGV4
dCkpIHsgbm9kZU9wcy5zZXRUZXh0Q29udGVudChlbG0sICcnKTsgfVxuXHQgICAgICAgIGFkZFZu
b2RlcyhlbG0sIG51bGwsIGNoLCAwLCBjaC5sZW5ndGggLSAxLCBpbnNlcnRlZFZub2RlUXVldWUp
O1xuXHQgICAgICB9IGVsc2UgaWYgKGlzRGVmKG9sZENoKSkge1xuXHQgICAgICAgIHJlbW92ZVZu
b2RlcyhlbG0sIG9sZENoLCAwLCBvbGRDaC5sZW5ndGggLSAxKTtcblx0ICAgICAgfSBlbHNlIGlm
IChpc0RlZihvbGRWbm9kZS50ZXh0KSkge1xuXHQgICAgICAgIG5vZGVPcHMuc2V0VGV4dENvbnRl
bnQoZWxtLCAnJyk7XG5cdCAgICAgIH1cblx0ICAgIH0gZWxzZSBpZiAob2xkVm5vZGUudGV4dCAh
PT0gdm5vZGUudGV4dCkge1xuXHQgICAgICBub2RlT3BzLnNldFRleHRDb250ZW50KGVsbSwgdm5v
ZGUudGV4dCk7XG5cdCAgICB9XG5cdCAgICBpZiAoaGFzRGF0YSkge1xuXHQgICAgICBpZiAoaXNE
ZWYoaSA9IGRhdGEuaG9vaykgJiYgaXNEZWYoaSA9IGkucG9zdHBhdGNoKSkgeyBpKG9sZFZub2Rl
LCB2bm9kZSk7IH1cblx0ICAgIH1cblx0ICB9XG5cdFxuXHQgIGZ1bmN0aW9uIGludm9rZUluc2Vy
dEhvb2sgKHZub2RlLCBxdWV1ZSwgaW5pdGlhbCkge1xuXHQgICAgLy8gZGVsYXkgaW5zZXJ0IGhv
b2tzIGZvciBjb21wb25lbnQgcm9vdCBub2RlcywgaW52b2tlIHRoZW0gYWZ0ZXIgdGhlXG5cdCAg
ICAvLyBlbGVtZW50IGlzIHJlYWxseSBpbnNlcnRlZFxuXHQgICAgaWYgKGluaXRpYWwgJiYgdm5v
ZGUucGFyZW50KSB7XG5cdCAgICAgIHZub2RlLnBhcmVudC5kYXRhLnBlbmRpbmdJbnNlcnQgPSBx
dWV1ZTtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcXVldWUu
bGVuZ3RoOyArK2kpIHtcblx0ICAgICAgICBxdWV1ZVtpXS5kYXRhLmhvb2suaW5zZXJ0KHF1ZXVl
W2ldKTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH1cblx0XG5cdCAgdmFyIGJhaWxlZCA9IGZh
bHNlO1xuXHQgIGZ1bmN0aW9uIGh5ZHJhdGUgKGVsbSwgdm5vZGUsIGluc2VydGVkVm5vZGVRdWV1
ZSkge1xuXHQgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgIGlmICghYXNzZXJ0Tm9kZU1hdGNoKGVs
bSwgdm5vZGUpKSB7XG5cdCAgICAgICAgcmV0dXJuIGZhbHNlXG5cdCAgICAgIH1cblx0ICAgIH1c
blx0ICAgIHZub2RlLmVsbSA9IGVsbTtcblx0ICAgIHZhciB0YWcgPSB2bm9kZS50YWc7XG5cdCAg
ICB2YXIgZGF0YSA9IHZub2RlLmRhdGE7XG5cdCAgICB2YXIgY2hpbGRyZW4gPSB2bm9kZS5jaGls
ZHJlbjtcblx0ICAgIGlmIChpc0RlZihkYXRhKSkge1xuXHQgICAgICBpZiAoaXNEZWYoaSA9IGRh
dGEuaG9vaykgJiYgaXNEZWYoaSA9IGkuaW5pdCkpIHsgaSh2bm9kZSwgdHJ1ZSAvKiBoeWRyYXRp
bmcgKi8pOyB9XG5cdCAgICAgIGlmIChpc0RlZihpID0gdm5vZGUuY2hpbGQpKSB7XG5cdCAgICAg
ICAgLy8gY2hpbGQgY29tcG9uZW50LiBpdCBzaG91bGQgaGF2ZSBoeWRyYXRlZCBpdHMgb3duIHRy
ZWUuXG5cdCAgICAgICAgaW5pdENvbXBvbmVudCh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtc
blx0ICAgICAgICByZXR1cm4gdHJ1ZVxuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgICBpZiAoaXNE
ZWYodGFnKSkge1xuXHQgICAgICBpZiAoaXNEZWYoY2hpbGRyZW4pKSB7XG5cdCAgICAgICAgdmFy
IGNoaWxkTm9kZXMgPSBub2RlT3BzLmNoaWxkTm9kZXMoZWxtKTtcblx0ICAgICAgICAvLyBlbXB0
eSBlbGVtZW50LCBhbGxvdyBjbGllbnQgdG8gcGljayB1cCBhbmQgcG9wdWxhdGUgY2hpbGRyZW5c
blx0ICAgICAgICBpZiAoIWNoaWxkTm9kZXMubGVuZ3RoKSB7XG5cdCAgICAgICAgICBjcmVhdGVD
aGlsZHJlbih2bm9kZSwgY2hpbGRyZW4sIGluc2VydGVkVm5vZGVRdWV1ZSk7XG5cdCAgICAgICAg
fSBlbHNlIHtcblx0ICAgICAgICAgIHZhciBjaGlsZHJlbk1hdGNoID0gdHJ1ZTtcblx0ICAgICAg
ICAgIGlmIChjaGlsZE5vZGVzLmxlbmd0aCAhPT0gY2hpbGRyZW4ubGVuZ3RoKSB7XG5cdCAgICAg
ICAgICAgIGNoaWxkcmVuTWF0Y2ggPSBmYWxzZTtcblx0ICAgICAgICAgIH0gZWxzZSB7XG5cdCAg
ICAgICAgICAgIGZvciAodmFyIGkkMSA9IDA7IGkkMSA8IGNoaWxkcmVuLmxlbmd0aDsgaSQxKysp
IHtcblx0ICAgICAgICAgICAgICBpZiAoIWh5ZHJhdGUoY2hpbGROb2Rlc1tpJDFdLCBjaGlsZHJl
bltpJDFdLCBpbnNlcnRlZFZub2RlUXVldWUpKSB7XG5cdCAgICAgICAgICAgICAgICBjaGlsZHJl
bk1hdGNoID0gZmFsc2U7XG5cdCAgICAgICAgICAgICAgICBicmVha1xuXHQgICAgICAgICAgICAg
IH1cblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgfVxuXHQgICAgICAgICAgaWYgKCFjaGls
ZHJlbk1hdGNoKSB7XG5cdCAgICAgICAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgICAgICAg
IGJhaWxlZCA9IHRydWU7XG5cdCAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdQYXJlbnQ6ICcs
IGVsbSk7XG5cdCAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdNaXNtYXRjaGluZyBjaGlsZE5v
ZGVzIHZzLiBWTm9kZXM6ICcsIGNoaWxkTm9kZXMsIGNoaWxkcmVuKTtcblx0ICAgICAgICAgICAg
fVxuXHQgICAgICAgICAgICByZXR1cm4gZmFsc2Vcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9
XG5cdCAgICAgIH1cblx0ICAgICAgaWYgKGlzRGVmKGRhdGEpKSB7XG5cdCAgICAgICAgaW52b2tl
Q3JlYXRlSG9va3Modm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSk7XG5cdCAgICAgIH1cblx0ICAg
IH1cblx0ICAgIHJldHVybiB0cnVlXG5cdCAgfVxuXHRcblx0ICBmdW5jdGlvbiBhc3NlcnROb2Rl
TWF0Y2ggKG5vZGUsIHZub2RlKSB7XG5cdCAgICBpZiAodm5vZGUudGFnKSB7XG5cdCAgICAgIHJl
dHVybiAoXG5cdCAgICAgICAgdm5vZGUudGFnLmluZGV4T2YoJ3Z1ZS1jb21wb25lbnQnKSA9PT0g
MCB8fFxuXHQgICAgICAgIHZub2RlLnRhZy50b0xvd2VyQ2FzZSgpID09PSBub2RlT3BzLnRhZ05h
bWUobm9kZSkudG9Mb3dlckNhc2UoKVxuXHQgICAgICApXG5cdCAgICB9IGVsc2Uge1xuXHQgICAg
ICByZXR1cm4gX3RvU3RyaW5nKHZub2RlLnRleHQpID09PSBub2RlLmRhdGFcblx0ICAgIH1cblx0
ICB9XG5cdFxuXHQgIHJldHVybiBmdW5jdGlvbiBwYXRjaCAob2xkVm5vZGUsIHZub2RlLCBoeWRy
YXRpbmcsIHJlbW92ZU9ubHkpIHtcblx0ICAgIGlmICghdm5vZGUpIHtcblx0ICAgICAgaWYgKG9s
ZFZub2RlKSB7IGludm9rZURlc3Ryb3lIb29rKG9sZFZub2RlKTsgfVxuXHQgICAgICByZXR1cm5c
blx0ICAgIH1cblx0XG5cdCAgICB2YXIgZWxtLCBwYXJlbnQ7XG5cdCAgICB2YXIgaXNJbml0aWFs
UGF0Y2ggPSBmYWxzZTtcblx0ICAgIHZhciBpbnNlcnRlZFZub2RlUXVldWUgPSBbXTtcblx0XG5c
dCAgICBpZiAoIW9sZFZub2RlKSB7XG5cdCAgICAgIC8vIGVtcHR5IG1vdW50LCBjcmVhdGUgbmV3
IHJvb3QgZWxlbWVudFxuXHQgICAgICBpc0luaXRpYWxQYXRjaCA9IHRydWU7XG5cdCAgICAgIGNy
ZWF0ZUVsbSh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcblx0ICAgIH0gZWxzZSB7XG5cdCAg
ICAgIHZhciBpc1JlYWxFbGVtZW50ID0gaXNEZWYob2xkVm5vZGUubm9kZVR5cGUpO1xuXHQgICAg
ICBpZiAoIWlzUmVhbEVsZW1lbnQgJiYgc2FtZVZub2RlKG9sZFZub2RlLCB2bm9kZSkpIHtcblx0
ICAgICAgICBwYXRjaFZub2RlKG9sZFZub2RlLCB2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCBy
ZW1vdmVPbmx5KTtcblx0ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICBpZiAoaXNSZWFsRWxlbWVu
dCkge1xuXHQgICAgICAgICAgLy8gbW91bnRpbmcgdG8gYSByZWFsIGVsZW1lbnRcblx0ICAgICAg
ICAgIC8vIGNoZWNrIGlmIHRoaXMgaXMgc2VydmVyLXJlbmRlcmVkIGNvbnRlbnQgYW5kIGlmIHdl
IGNhbiBwZXJmb3JtXG5cdCAgICAgICAgICAvLyBhIHN1Y2Nlc3NmdWwgaHlkcmF0aW9uLlxuXHQg
ICAgICAgICAgaWYgKG9sZFZub2RlLm5vZGVUeXBlID09PSAxICYmIG9sZFZub2RlLmhhc0F0dHJp
YnV0ZSgnc2VydmVyLXJlbmRlcmVkJykpIHtcblx0ICAgICAgICAgICAgb2xkVm5vZGUucmVtb3Zl
QXR0cmlidXRlKCdzZXJ2ZXItcmVuZGVyZWQnKTtcblx0ICAgICAgICAgICAgaHlkcmF0aW5nID0g
dHJ1ZTtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICAgIGlmIChoeWRyYXRpbmcpIHtcblx0ICAg
ICAgICAgICAgaWYgKGh5ZHJhdGUob2xkVm5vZGUsIHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUp
KSB7XG5cdCAgICAgICAgICAgICAgaW52b2tlSW5zZXJ0SG9vayh2bm9kZSwgaW5zZXJ0ZWRWbm9k
ZVF1ZXVlLCB0cnVlKTtcblx0ICAgICAgICAgICAgICByZXR1cm4gb2xkVm5vZGVcblx0ICAgICAg
ICAgICAgfSBlbHNlIGlmIChmYWxzZSkge1xuXHQgICAgICAgICAgICAgIHdhcm4oXG5cdCAgICAg
ICAgICAgICAgICAnVGhlIGNsaWVudC1zaWRlIHJlbmRlcmVkIHZpcnR1YWwgRE9NIHRyZWUgaXMg
bm90IG1hdGNoaW5nICcgK1xuXHQgICAgICAgICAgICAgICAgJ3NlcnZlci1yZW5kZXJlZCBjb250
ZW50LiBUaGlzIGlzIGxpa2VseSBjYXVzZWQgYnkgaW5jb3JyZWN0ICcgK1xuXHQgICAgICAgICAg
ICAgICAgJ0hUTUwgbWFya3VwLCBmb3IgZXhhbXBsZSBuZXN0aW5nIGJsb2NrLWxldmVsIGVsZW1l
bnRzIGluc2lkZSAnICtcblx0ICAgICAgICAgICAgICAgICc8cD4sIG9yIG1pc3NpbmcgPHRib2R5
Pi4gQmFpbGluZyBoeWRyYXRpb24gYW5kIHBlcmZvcm1pbmcgJyArXG5cdCAgICAgICAgICAgICAg
ICAnZnVsbCBjbGllbnQtc2lkZSByZW5kZXIuJ1xuXHQgICAgICAgICAgICAgICk7XG5cdCAgICAg
ICAgICAgIH1cblx0ICAgICAgICAgIH1cblx0ICAgICAgICAgIC8vIGVpdGhlciBub3Qgc2VydmVy
LXJlbmRlcmVkLCBvciBoeWRyYXRpb24gZmFpbGVkLlxuXHQgICAgICAgICAgLy8gY3JlYXRlIGFu
IGVtcHR5IG5vZGUgYW5kIHJlcGxhY2UgaXRcblx0ICAgICAgICAgIG9sZFZub2RlID0gZW1wdHlO
b2RlQXQob2xkVm5vZGUpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICBlbG0gPSBvbGRWbm9kZS5l
bG07XG5cdCAgICAgICAgcGFyZW50ID0gbm9kZU9wcy5wYXJlbnROb2RlKGVsbSk7XG5cdFxuXHQg
ICAgICAgIGNyZWF0ZUVsbSh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcblx0XG5cdCAgICAg
ICAgLy8gY29tcG9uZW50IHJvb3QgZWxlbWVudCByZXBsYWNlZC5cblx0ICAgICAgICAvLyB1cGRh
dGUgcGFyZW50IHBsYWNlaG9sZGVyIG5vZGUgZWxlbWVudCwgcmVjdXJzaXZlbHlcblx0ICAgICAg
ICBpZiAodm5vZGUucGFyZW50KSB7XG5cdCAgICAgICAgICB2YXIgYW5jZXN0b3IgPSB2bm9kZS5w
YXJlbnQ7XG5cdCAgICAgICAgICB3aGlsZSAoYW5jZXN0b3IpIHtcblx0ICAgICAgICAgICAgYW5j
ZXN0b3IuZWxtID0gdm5vZGUuZWxtO1xuXHQgICAgICAgICAgICBhbmNlc3RvciA9IGFuY2VzdG9y
LnBhcmVudDtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICAgIGlmIChpc1BhdGNoYWJsZSh2bm9k
ZSkpIHtcblx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYnMuY3JlYXRlLmxlbmd0
aDsgKytpKSB7XG5cdCAgICAgICAgICAgICAgY2JzLmNyZWF0ZVtpXShlbXB0eU5vZGUsIHZub2Rl
LnBhcmVudCk7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9XG5c
dFxuXHQgICAgICAgIGlmIChwYXJlbnQgIT09IG51bGwpIHtcblx0ICAgICAgICAgIG5vZGVPcHMu
aW5zZXJ0QmVmb3JlKHBhcmVudCwgdm5vZGUuZWxtLCBub2RlT3BzLm5leHRTaWJsaW5nKGVsbSkp
O1xuXHQgICAgICAgICAgcmVtb3ZlVm5vZGVzKHBhcmVudCwgW29sZFZub2RlXSwgMCwgMCk7XG5c
dCAgICAgICAgfSBlbHNlIGlmIChpc0RlZihvbGRWbm9kZS50YWcpKSB7XG5cdCAgICAgICAgICBp
bnZva2VEZXN0cm95SG9vayhvbGRWbm9kZSk7XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAg
ICB9XG5cdFxuXHQgICAgaW52b2tlSW5zZXJ0SG9vayh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVl
LCBpc0luaXRpYWxQYXRjaCk7XG5cdCAgICByZXR1cm4gdm5vZGUuZWxtXG5cdCAgfVxuXHR9XG5c
dFxuXHQvKiAgKi9cblx0XG5cdHZhciBkaXJlY3RpdmVzID0ge1xuXHQgIGNyZWF0ZTogdXBkYXRl
RGlyZWN0aXZlcyxcblx0ICB1cGRhdGU6IHVwZGF0ZURpcmVjdGl2ZXMsXG5cdCAgZGVzdHJveTog
ZnVuY3Rpb24gdW5iaW5kRGlyZWN0aXZlcyAodm5vZGUpIHtcblx0ICAgIHVwZGF0ZURpcmVjdGl2
ZXModm5vZGUsIGVtcHR5Tm9kZSk7XG5cdCAgfVxuXHR9O1xuXHRcblx0ZnVuY3Rpb24gdXBkYXRl
RGlyZWN0aXZlcyAoXG5cdCAgb2xkVm5vZGUsXG5cdCAgdm5vZGVcblx0KSB7XG5cdCAgaWYgKCFv
bGRWbm9kZS5kYXRhLmRpcmVjdGl2ZXMgJiYgIXZub2RlLmRhdGEuZGlyZWN0aXZlcykge1xuXHQg
ICAgcmV0dXJuXG5cdCAgfVxuXHQgIHZhciBpc0NyZWF0ZSA9IG9sZFZub2RlID09PSBlbXB0eU5v
ZGU7XG5cdCAgdmFyIG9sZERpcnMgPSBub3JtYWxpemVEaXJlY3RpdmVzJDEob2xkVm5vZGUuZGF0
YS5kaXJlY3RpdmVzLCBvbGRWbm9kZS5jb250ZXh0KTtcblx0ICB2YXIgbmV3RGlycyA9IG5vcm1h
bGl6ZURpcmVjdGl2ZXMkMSh2bm9kZS5kYXRhLmRpcmVjdGl2ZXMsIHZub2RlLmNvbnRleHQpO1xu
XHRcblx0ICB2YXIgZGlyc1dpdGhJbnNlcnQgPSBbXTtcblx0ICB2YXIgZGlyc1dpdGhQb3N0cGF0
Y2ggPSBbXTtcblx0XG5cdCAgdmFyIGtleSwgb2xkRGlyLCBkaXI7XG5cdCAgZm9yIChrZXkgaW4g
bmV3RGlycykge1xuXHQgICAgb2xkRGlyID0gb2xkRGlyc1trZXldO1xuXHQgICAgZGlyID0gbmV3
RGlyc1trZXldO1xuXHQgICAgaWYgKCFvbGREaXIpIHtcblx0ICAgICAgLy8gbmV3IGRpcmVjdGl2
ZSwgYmluZFxuXHQgICAgICBjYWxsSG9vayQxKGRpciwgJ2JpbmQnLCB2bm9kZSwgb2xkVm5vZGUp
O1xuXHQgICAgICBpZiAoZGlyLmRlZiAmJiBkaXIuZGVmLmluc2VydGVkKSB7XG5cdCAgICAgICAg
ZGlyc1dpdGhJbnNlcnQucHVzaChkaXIpO1xuXHQgICAgICB9XG5cdCAgICB9IGVsc2Uge1xuXHQg
ICAgICAvLyBleGlzdGluZyBkaXJlY3RpdmUsIHVwZGF0ZVxuXHQgICAgICBkaXIub2xkVmFsdWUg
PSBvbGREaXIudmFsdWU7XG5cdCAgICAgIGNhbGxIb29rJDEoZGlyLCAndXBkYXRlJywgdm5vZGUs
IG9sZFZub2RlKTtcblx0ICAgICAgaWYgKGRpci5kZWYgJiYgZGlyLmRlZi5jb21wb25lbnRVcGRh
dGVkKSB7XG5cdCAgICAgICAgZGlyc1dpdGhQb3N0cGF0Y2gucHVzaChkaXIpO1xuXHQgICAgICB9
XG5cdCAgICB9XG5cdCAgfVxuXHRcblx0ICBpZiAoZGlyc1dpdGhJbnNlcnQubGVuZ3RoKSB7XG5c
dCAgICB2YXIgY2FsbEluc2VydCA9IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgZGlyc1dpdGhJbnNl
cnQuZm9yRWFjaChmdW5jdGlvbiAoZGlyKSB7XG5cdCAgICAgICAgY2FsbEhvb2skMShkaXIsICdp
bnNlcnRlZCcsIHZub2RlLCBvbGRWbm9kZSk7XG5cdCAgICAgIH0pO1xuXHQgICAgfTtcblx0ICAg
IGlmIChpc0NyZWF0ZSkge1xuXHQgICAgICBtZXJnZVZOb2RlSG9vayh2bm9kZS5kYXRhLmhvb2sg
fHwgKHZub2RlLmRhdGEuaG9vayA9IHt9KSwgJ2luc2VydCcsIGNhbGxJbnNlcnQsICdkaXItaW5z
ZXJ0Jyk7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICBjYWxsSW5zZXJ0KCk7XG5cdCAgICB9XG5c
dCAgfVxuXHRcblx0ICBpZiAoZGlyc1dpdGhQb3N0cGF0Y2gubGVuZ3RoKSB7XG5cdCAgICBtZXJn
ZVZOb2RlSG9vayh2bm9kZS5kYXRhLmhvb2sgfHwgKHZub2RlLmRhdGEuaG9vayA9IHt9KSwgJ3Bv
c3RwYXRjaCcsIGZ1bmN0aW9uICgpIHtcblx0ICAgICAgZGlyc1dpdGhQb3N0cGF0Y2guZm9yRWFj
aChmdW5jdGlvbiAoZGlyKSB7XG5cdCAgICAgICAgY2FsbEhvb2skMShkaXIsICdjb21wb25lbnRV
cGRhdGVkJywgdm5vZGUsIG9sZFZub2RlKTtcblx0ICAgICAgfSk7XG5cdCAgICB9LCAnZGlyLXBv
c3RwYXRjaCcpO1xuXHQgIH1cblx0XG5cdCAgaWYgKCFpc0NyZWF0ZSkge1xuXHQgICAgZm9yIChr
ZXkgaW4gb2xkRGlycykge1xuXHQgICAgICBpZiAoIW5ld0RpcnNba2V5XSkge1xuXHQgICAgICAg
IC8vIG5vIGxvbmdlciBwcmVzZW50LCB1bmJpbmRcblx0ICAgICAgICBjYWxsSG9vayQxKG9sZERp
cnNba2V5XSwgJ3VuYmluZCcsIG9sZFZub2RlKTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH1c
blx0fVxuXHRcblx0dmFyIGVtcHR5TW9kaWZpZXJzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblx0
XG5cdGZ1bmN0aW9uIG5vcm1hbGl6ZURpcmVjdGl2ZXMkMSAoXG5cdCAgZGlycyxcblx0ICB2bVxu
XHQpIHtcblx0ICB2YXIgcmVzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblx0ICBpZiAoIWRpcnMp
IHtcblx0ICAgIHJldHVybiByZXNcblx0ICB9XG5cdCAgdmFyIGksIGRpcjtcblx0ICBmb3IgKGkg
PSAwOyBpIDwgZGlycy5sZW5ndGg7IGkrKykge1xuXHQgICAgZGlyID0gZGlyc1tpXTtcblx0ICAg
IGlmICghZGlyLm1vZGlmaWVycykge1xuXHQgICAgICBkaXIubW9kaWZpZXJzID0gZW1wdHlNb2Rp
ZmllcnM7XG5cdCAgICB9XG5cdCAgICByZXNbZ2V0UmF3RGlyTmFtZShkaXIpXSA9IGRpcjtcblx0
ICAgIGRpci5kZWYgPSByZXNvbHZlQXNzZXQodm0uJG9wdGlvbnMsICdkaXJlY3RpdmVzJywgZGly
Lm5hbWUsIHRydWUpO1xuXHQgIH1cblx0ICByZXR1cm4gcmVzXG5cdH1cblx0XG5cdGZ1bmN0aW9u
IGdldFJhd0Rpck5hbWUgKGRpcikge1xuXHQgIHJldHVybiBkaXIucmF3TmFtZSB8fCAoKGRpci5u
YW1lKSArIFwiLlwiICsgKE9iamVjdC5rZXlzKGRpci5tb2RpZmllcnMgfHwge30pLmpvaW4oJy4n
KSkpXG5cdH1cblx0XG5cdGZ1bmN0aW9uIGNhbGxIb29rJDEgKGRpciwgaG9vaywgdm5vZGUsIG9s
ZFZub2RlKSB7XG5cdCAgdmFyIGZuID0gZGlyLmRlZiAmJiBkaXIuZGVmW2hvb2tdO1xuXHQgIGlm
IChmbikge1xuXHQgICAgZm4odm5vZGUuZWxtLCBkaXIsIHZub2RlLCBvbGRWbm9kZSk7XG5cdCAg
fVxuXHR9XG5cdFxuXHR2YXIgYmFzZU1vZHVsZXMgPSBbXG5cdCAgcmVmLFxuXHQgIGRpcmVjdGl2
ZXNcblx0XTtcblx0XG5cdC8qICAqL1xuXHRcblx0ZnVuY3Rpb24gdXBkYXRlQXR0cnMgKG9sZFZu
b2RlLCB2bm9kZSkge1xuXHQgIGlmICghb2xkVm5vZGUuZGF0YS5hdHRycyAmJiAhdm5vZGUuZGF0
YS5hdHRycykge1xuXHQgICAgcmV0dXJuXG5cdCAgfVxuXHQgIHZhciBrZXksIGN1ciwgb2xkO1xu
XHQgIHZhciBlbG0gPSB2bm9kZS5lbG07XG5cdCAgdmFyIG9sZEF0dHJzID0gb2xkVm5vZGUuZGF0
YS5hdHRycyB8fCB7fTtcblx0ICB2YXIgYXR0cnMgPSB2bm9kZS5kYXRhLmF0dHJzIHx8IHt9O1xu
XHQgIC8vIGNsb25lIG9ic2VydmVkIG9iamVjdHMsIGFzIHRoZSB1c2VyIHByb2JhYmx5IHdhbnRz
IHRvIG11dGF0ZSBpdFxuXHQgIGlmIChhdHRycy5fX29iX18pIHtcblx0ICAgIGF0dHJzID0gdm5v
ZGUuZGF0YS5hdHRycyA9IGV4dGVuZCh7fSwgYXR0cnMpO1xuXHQgIH1cblx0XG5cdCAgZm9yIChr
ZXkgaW4gYXR0cnMpIHtcblx0ICAgIGN1ciA9IGF0dHJzW2tleV07XG5cdCAgICBvbGQgPSBvbGRB
dHRyc1trZXldO1xuXHQgICAgaWYgKG9sZCAhPT0gY3VyKSB7XG5cdCAgICAgIHNldEF0dHIoZWxt
LCBrZXksIGN1cik7XG5cdCAgICB9XG5cdCAgfVxuXHQgIGZvciAoa2V5IGluIG9sZEF0dHJzKSB7
XG5cdCAgICBpZiAoYXR0cnNba2V5XSA9PSBudWxsKSB7XG5cdCAgICAgIGlmIChpc1hsaW5rKGtl
eSkpIHtcblx0ICAgICAgICBlbG0ucmVtb3ZlQXR0cmlidXRlTlMoeGxpbmtOUywgZ2V0WGxpbmtQ
cm9wKGtleSkpO1xuXHQgICAgICB9IGVsc2UgaWYgKCFpc0VudW1lcmF0ZWRBdHRyKGtleSkpIHtc
blx0ICAgICAgICBlbG0ucmVtb3ZlQXR0cmlidXRlKGtleSk7XG5cdCAgICAgIH1cblx0ICAgIH1c
blx0ICB9XG5cdH1cblx0XG5cdGZ1bmN0aW9uIHNldEF0dHIgKGVsLCBrZXksIHZhbHVlKSB7XG5c
dCAgaWYgKGlzQm9vbGVhbkF0dHIoa2V5KSkge1xuXHQgICAgLy8gc2V0IGF0dHJpYnV0ZSBmb3Ig
YmxhbmsgdmFsdWVcblx0ICAgIC8vIGUuZy4gPG9wdGlvbiBkaXNhYmxlZD5TZWxlY3Qgb25lPC9v
cHRpb24+XG5cdCAgICBpZiAoaXNGYWxzeUF0dHJWYWx1ZSh2YWx1ZSkpIHtcblx0ICAgICAgZWwu
cmVtb3ZlQXR0cmlidXRlKGtleSk7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICBlbC5zZXRBdHRy
aWJ1dGUoa2V5LCBrZXkpO1xuXHQgICAgfVxuXHQgIH0gZWxzZSBpZiAoaXNFbnVtZXJhdGVkQXR0
cihrZXkpKSB7XG5cdCAgICBlbC5zZXRBdHRyaWJ1dGUoa2V5LCBpc0ZhbHN5QXR0clZhbHVlKHZh
bHVlKSB8fCB2YWx1ZSA9PT0gJ2ZhbHNlJyA/ICdmYWxzZScgOiAndHJ1ZScpO1xuXHQgIH0gZWxz
ZSBpZiAoaXNYbGluayhrZXkpKSB7XG5cdCAgICBpZiAoaXNGYWxzeUF0dHJWYWx1ZSh2YWx1ZSkp
IHtcblx0ICAgICAgZWwucmVtb3ZlQXR0cmlidXRlTlMoeGxpbmtOUywgZ2V0WGxpbmtQcm9wKGtl
eSkpO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgZWwuc2V0QXR0cmlidXRlTlMoeGxpbmtOUywg
a2V5LCB2YWx1ZSk7XG5cdCAgICB9XG5cdCAgfSBlbHNlIHtcblx0ICAgIGlmIChpc0ZhbHN5QXR0
clZhbHVlKHZhbHVlKSkge1xuXHQgICAgICBlbC5yZW1vdmVBdHRyaWJ1dGUoa2V5KTtcblx0ICAg
IH0gZWxzZSB7XG5cdCAgICAgIGVsLnNldEF0dHJpYnV0ZShrZXksIHZhbHVlKTtcblx0ICAgIH1c
blx0ICB9XG5cdH1cblx0XG5cdHZhciBhdHRycyA9IHtcblx0ICBjcmVhdGU6IHVwZGF0ZUF0dHJz
LFxuXHQgIHVwZGF0ZTogdXBkYXRlQXR0cnNcblx0fTtcblx0XG5cdC8qICAqL1xuXHRcblx0ZnVu
Y3Rpb24gdXBkYXRlQ2xhc3MgKG9sZFZub2RlLCB2bm9kZSkge1xuXHQgIHZhciBlbCA9IHZub2Rl
LmVsbTtcblx0ICB2YXIgZGF0YSA9IHZub2RlLmRhdGE7XG5cdCAgdmFyIG9sZERhdGEgPSBvbGRW
bm9kZS5kYXRhO1xuXHQgIGlmICghZGF0YS5zdGF0aWNDbGFzcyAmJiAhZGF0YS5jbGFzcyAmJlxu
XHQgICAgICAoIW9sZERhdGEgfHwgKCFvbGREYXRhLnN0YXRpY0NsYXNzICYmICFvbGREYXRhLmNs
YXNzKSkpIHtcblx0ICAgIHJldHVyblxuXHQgIH1cblx0XG5cdCAgdmFyIGNscyA9IGdlbkNsYXNz
Rm9yVm5vZGUodm5vZGUpO1xuXHRcblx0ICAvLyBoYW5kbGUgdHJhbnNpdGlvbiBjbGFzc2VzXG5c
dCAgdmFyIHRyYW5zaXRpb25DbGFzcyA9IGVsLl90cmFuc2l0aW9uQ2xhc3Nlcztcblx0ICBpZiAo
dHJhbnNpdGlvbkNsYXNzKSB7XG5cdCAgICBjbHMgPSBjb25jYXQoY2xzLCBzdHJpbmdpZnlDbGFz
cyh0cmFuc2l0aW9uQ2xhc3MpKTtcblx0ICB9XG5cdFxuXHQgIC8vIHNldCB0aGUgY2xhc3Ncblx0
ICBpZiAoY2xzICE9PSBlbC5fcHJldkNsYXNzKSB7XG5cdCAgICBlbC5zZXRBdHRyaWJ1dGUoJ2Ns
YXNzJywgY2xzKTtcblx0ICAgIGVsLl9wcmV2Q2xhc3MgPSBjbHM7XG5cdCAgfVxuXHR9XG5cdFxu
XHR2YXIga2xhc3MgPSB7XG5cdCAgY3JlYXRlOiB1cGRhdGVDbGFzcyxcblx0ICB1cGRhdGU6IHVw
ZGF0ZUNsYXNzXG5cdH07XG5cdFxuXHQvLyBza2lwIHR5cGUgY2hlY2tpbmcgdGhpcyBmaWxlIGJl
Y2F1c2Ugd2UgbmVlZCB0byBhdHRhY2ggcHJpdmF0ZSBwcm9wZXJ0aWVzXG5cdC8vIHRvIGVsZW1l
bnRzXG5cdFxuXHRmdW5jdGlvbiB1cGRhdGVET01MaXN0ZW5lcnMgKG9sZFZub2RlLCB2bm9kZSkg
e1xuXHQgIGlmICghb2xkVm5vZGUuZGF0YS5vbiAmJiAhdm5vZGUuZGF0YS5vbikge1xuXHQgICAg
cmV0dXJuXG5cdCAgfVxuXHQgIHZhciBvbiA9IHZub2RlLmRhdGEub24gfHwge307XG5cdCAgdmFy
IG9sZE9uID0gb2xkVm5vZGUuZGF0YS5vbiB8fCB7fTtcblx0ICB2YXIgYWRkID0gdm5vZGUuZWxt
Ll92X2FkZCB8fCAodm5vZGUuZWxtLl92X2FkZCA9IGZ1bmN0aW9uIChldmVudCwgaGFuZGxlciwg
Y2FwdHVyZSkge1xuXHQgICAgdm5vZGUuZWxtLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnQsIGhhbmRs
ZXIsIGNhcHR1cmUpO1xuXHQgIH0pO1xuXHQgIHZhciByZW1vdmUgPSB2bm9kZS5lbG0uX3ZfcmVt
b3ZlIHx8ICh2bm9kZS5lbG0uX3ZfcmVtb3ZlID0gZnVuY3Rpb24gKGV2ZW50LCBoYW5kbGVyKSB7
XG5cdCAgICB2bm9kZS5lbG0ucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudCwgaGFuZGxlcik7XG5c
dCAgfSk7XG5cdCAgdXBkYXRlTGlzdGVuZXJzKG9uLCBvbGRPbiwgYWRkLCByZW1vdmUsIHZub2Rl
LmNvbnRleHQpO1xuXHR9XG5cdFxuXHR2YXIgZXZlbnRzID0ge1xuXHQgIGNyZWF0ZTogdXBkYXRl
RE9NTGlzdGVuZXJzLFxuXHQgIHVwZGF0ZTogdXBkYXRlRE9NTGlzdGVuZXJzXG5cdH07XG5cdFxu
XHQvKiAgKi9cblx0XG5cdGZ1bmN0aW9uIHVwZGF0ZURPTVByb3BzIChvbGRWbm9kZSwgdm5vZGUp
IHtcblx0ICBpZiAoIW9sZFZub2RlLmRhdGEuZG9tUHJvcHMgJiYgIXZub2RlLmRhdGEuZG9tUHJv
cHMpIHtcblx0ICAgIHJldHVyblxuXHQgIH1cblx0ICB2YXIga2V5LCBjdXI7XG5cdCAgdmFyIGVs
bSA9IHZub2RlLmVsbTtcblx0ICB2YXIgb2xkUHJvcHMgPSBvbGRWbm9kZS5kYXRhLmRvbVByb3Bz
IHx8IHt9O1xuXHQgIHZhciBwcm9wcyA9IHZub2RlLmRhdGEuZG9tUHJvcHMgfHwge307XG5cdCAg
Ly8gY2xvbmUgb2JzZXJ2ZWQgb2JqZWN0cywgYXMgdGhlIHVzZXIgcHJvYmFibHkgd2FudHMgdG8g
bXV0YXRlIGl0XG5cdCAgaWYgKHByb3BzLl9fb2JfXykge1xuXHQgICAgcHJvcHMgPSB2bm9kZS5k
YXRhLmRvbVByb3BzID0gZXh0ZW5kKHt9LCBwcm9wcyk7XG5cdCAgfVxuXHRcblx0ICBmb3IgKGtl
eSBpbiBvbGRQcm9wcykge1xuXHQgICAgaWYgKHByb3BzW2tleV0gPT0gbnVsbCkge1xuXHQgICAg
ICBlbG1ba2V5XSA9ICcnO1xuXHQgICAgfVxuXHQgIH1cblx0ICBmb3IgKGtleSBpbiBwcm9wcykg
e1xuXHQgICAgY3VyID0gcHJvcHNba2V5XTtcblx0ICAgIC8vIGlnbm9yZSBjaGlsZHJlbiBpZiB0
aGUgbm9kZSBoYXMgdGV4dENvbnRlbnQgb3IgaW5uZXJIVE1MLFxuXHQgICAgLy8gYXMgdGhlc2Ug
d2lsbCB0aHJvdyBhd2F5IGV4aXN0aW5nIERPTSBub2RlcyBhbmQgY2F1c2UgcmVtb3ZhbCBlcnJv
cnNcblx0ICAgIC8vIG9uIHN1YnNlcXVlbnQgcGF0Y2hlcyAoIzMzNjApXG5cdCAgICBpZiAoa2V5
ID09PSAndGV4dENvbnRlbnQnIHx8IGtleSA9PT0gJ2lubmVySFRNTCcpIHtcblx0ICAgICAgaWYg
KHZub2RlLmNoaWxkcmVuKSB7IHZub2RlLmNoaWxkcmVuLmxlbmd0aCA9IDA7IH1cblx0ICAgICAg
aWYgKGN1ciA9PT0gb2xkUHJvcHNba2V5XSkgeyBjb250aW51ZSB9XG5cdCAgICB9XG5cdCAgICBp
ZiAoa2V5ID09PSAndmFsdWUnKSB7XG5cdCAgICAgIC8vIHN0b3JlIHZhbHVlIGFzIF92YWx1ZSBh
cyB3ZWxsIHNpbmNlXG5cdCAgICAgIC8vIG5vbi1zdHJpbmcgdmFsdWVzIHdpbGwgYmUgc3RyaW5n
aWZpZWRcblx0ICAgICAgZWxtLl92YWx1ZSA9IGN1cjtcblx0ICAgICAgLy8gYXZvaWQgcmVzZXR0
aW5nIGN1cnNvciBwb3NpdGlvbiB3aGVuIHZhbHVlIGlzIHRoZSBzYW1lXG5cdCAgICAgIHZhciBz
dHJDdXIgPSBjdXIgPT0gbnVsbCA/ICcnIDogU3RyaW5nKGN1cik7XG5cdCAgICAgIGlmIChlbG0u
dmFsdWUgIT09IHN0ckN1ciAmJiAhZWxtLmNvbXBvc2luZykge1xuXHQgICAgICAgIGVsbS52YWx1
ZSA9IHN0ckN1cjtcblx0ICAgICAgfVxuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgZWxtW2tleV0g
PSBjdXI7XG5cdCAgICB9XG5cdCAgfVxuXHR9XG5cdFxuXHR2YXIgZG9tUHJvcHMgPSB7XG5cdCAg
Y3JlYXRlOiB1cGRhdGVET01Qcm9wcyxcblx0ICB1cGRhdGU6IHVwZGF0ZURPTVByb3BzXG5cdH07
XG5cdFxuXHQvKiAgKi9cblx0XG5cdHZhciBwYXJzZVN0eWxlVGV4dCA9IGNhY2hlZChmdW5jdGlv
biAoY3NzVGV4dCkge1xuXHQgIHZhciByZXMgPSB7fTtcblx0ICB2YXIgaGFzQmFja2dyb3VuZCA9
IGNzc1RleHQuaW5kZXhPZignYmFja2dyb3VuZCcpID49IDA7XG5cdCAgLy8gbWF5YmUgd2l0aCBi
YWNrZ3JvdW5kLWltYWdlOiB1cmwoaHR0cDovL3h4eCkgb3IgYmFzZTY0IGltZ1xuXHQgIHZhciBs
aXN0RGVsaW1pdGVyID0gaGFzQmFja2dyb3VuZCA/IC87KD8hW14oXSpcXCkpL2cgOiAnOyc7XG5c
dCAgdmFyIHByb3BlcnR5RGVsaW1pdGVyID0gaGFzQmFja2dyb3VuZCA/IC86KC4rKS8gOiAnOic7
XG5cdCAgY3NzVGV4dC5zcGxpdChsaXN0RGVsaW1pdGVyKS5mb3JFYWNoKGZ1bmN0aW9uIChpdGVt
KSB7XG5cdCAgICBpZiAoaXRlbSkge1xuXHQgICAgICB2YXIgdG1wID0gaXRlbS5zcGxpdChwcm9w
ZXJ0eURlbGltaXRlcik7XG5cdCAgICAgIHRtcC5sZW5ndGggPiAxICYmIChyZXNbdG1wWzBdLnRy
aW0oKV0gPSB0bXBbMV0udHJpbSgpKTtcblx0ICAgIH1cblx0ICB9KTtcblx0ICByZXR1cm4gcmVz
XG5cdH0pO1xuXHRcblx0Ly8gbWVyZ2Ugc3RhdGljIGFuZCBkeW5hbWljIHN0eWxlIGRhdGEgb24g
dGhlIHNhbWUgdm5vZGVcblx0ZnVuY3Rpb24gbm9ybWFsaXplU3R5bGVEYXRhIChkYXRhKSB7XG5c
dCAgdmFyIHN0eWxlID0gbm9ybWFsaXplU3R5bGVCaW5kaW5nKGRhdGEuc3R5bGUpO1xuXHQgIC8v
IHN0YXRpYyBzdHlsZSBpcyBwcmUtcHJvY2Vzc2VkIGludG8gYW4gb2JqZWN0IGR1cmluZyBjb21w
aWxhdGlvblxuXHQgIC8vIGFuZCBpcyBhbHdheXMgYSBmcmVzaCBvYmplY3QsIHNvIGl0J3Mgc2Fm
ZSB0byBtZXJnZSBpbnRvIGl0XG5cdCAgcmV0dXJuIGRhdGEuc3RhdGljU3R5bGVcblx0ICAgID8g
ZXh0ZW5kKGRhdGEuc3RhdGljU3R5bGUsIHN0eWxlKVxuXHQgICAgOiBzdHlsZVxuXHR9XG5cdFxu
XHQvLyBub3JtYWxpemUgcG9zc2libGUgYXJyYXkgLyBzdHJpbmcgdmFsdWVzIGludG8gT2JqZWN0
XG5cdGZ1bmN0aW9uIG5vcm1hbGl6ZVN0eWxlQmluZGluZyAoYmluZGluZ1N0eWxlKSB7XG5cdCAg
aWYgKEFycmF5LmlzQXJyYXkoYmluZGluZ1N0eWxlKSkge1xuXHQgICAgcmV0dXJuIHRvT2JqZWN0
KGJpbmRpbmdTdHlsZSlcblx0ICB9XG5cdCAgaWYgKHR5cGVvZiBiaW5kaW5nU3R5bGUgPT09ICdz
dHJpbmcnKSB7XG5cdCAgICByZXR1cm4gcGFyc2VTdHlsZVRleHQoYmluZGluZ1N0eWxlKVxuXHQg
IH1cblx0ICByZXR1cm4gYmluZGluZ1N0eWxlXG5cdH1cblx0XG5cdC8qKlxuXHQgKiBwYXJlbnQg
Y29tcG9uZW50IHN0eWxlIHNob3VsZCBiZSBhZnRlciBjaGlsZCdzXG5cdCAqIHNvIHRoYXQgcGFy
ZW50IGNvbXBvbmVudCdzIHN0eWxlIGNvdWxkIG92ZXJyaWRlIGl0XG5cdCAqL1xuXHRmdW5jdGlv
biBnZXRTdHlsZSAodm5vZGUsIGNoZWNrQ2hpbGQpIHtcblx0ICB2YXIgcmVzID0ge307XG5cdCAg
dmFyIHN0eWxlRGF0YTtcblx0XG5cdCAgaWYgKGNoZWNrQ2hpbGQpIHtcblx0ICAgIHZhciBjaGls
ZE5vZGUgPSB2bm9kZTtcblx0ICAgIHdoaWxlIChjaGlsZE5vZGUuY2hpbGQpIHtcblx0ICAgICAg
Y2hpbGROb2RlID0gY2hpbGROb2RlLmNoaWxkLl92bm9kZTtcblx0ICAgICAgaWYgKGNoaWxkTm9k
ZS5kYXRhICYmIChzdHlsZURhdGEgPSBub3JtYWxpemVTdHlsZURhdGEoY2hpbGROb2RlLmRhdGEp
KSkge1xuXHQgICAgICAgIGV4dGVuZChyZXMsIHN0eWxlRGF0YSk7XG5cdCAgICAgIH1cblx0ICAg
IH1cblx0ICB9XG5cdFxuXHQgIGlmICgoc3R5bGVEYXRhID0gbm9ybWFsaXplU3R5bGVEYXRhKHZu
b2RlLmRhdGEpKSkge1xuXHQgICAgZXh0ZW5kKHJlcywgc3R5bGVEYXRhKTtcblx0ICB9XG5cdFxu
XHQgIHZhciBwYXJlbnROb2RlID0gdm5vZGU7XG5cdCAgd2hpbGUgKChwYXJlbnROb2RlID0gcGFy
ZW50Tm9kZS5wYXJlbnQpKSB7XG5cdCAgICBpZiAocGFyZW50Tm9kZS5kYXRhICYmIChzdHlsZURh
dGEgPSBub3JtYWxpemVTdHlsZURhdGEocGFyZW50Tm9kZS5kYXRhKSkpIHtcblx0ICAgICAgZXh0
ZW5kKHJlcywgc3R5bGVEYXRhKTtcblx0ICAgIH1cblx0ICB9XG5cdCAgcmV0dXJuIHJlc1xuXHR9
XG5cdFxuXHQvKiAgKi9cblx0XG5cdHZhciBjc3NWYXJSRSA9IC9eLS0vO1xuXHR2YXIgc2V0UHJv
cCA9IGZ1bmN0aW9uIChlbCwgbmFtZSwgdmFsKSB7XG5cdCAgLyogaXN0YW5idWwgaWdub3JlIGlm
ICovXG5cdCAgaWYgKGNzc1ZhclJFLnRlc3QobmFtZSkpIHtcblx0ICAgIGVsLnN0eWxlLnNldFBy
b3BlcnR5KG5hbWUsIHZhbCk7XG5cdCAgfSBlbHNlIHtcblx0ICAgIGVsLnN0eWxlW25vcm1hbGl6
ZShuYW1lKV0gPSB2YWw7XG5cdCAgfVxuXHR9O1xuXHRcblx0dmFyIHByZWZpeGVzID0gWydXZWJr
aXQnLCAnTW96JywgJ21zJ107XG5cdFxuXHR2YXIgdGVzdEVsO1xuXHR2YXIgbm9ybWFsaXplID0g
Y2FjaGVkKGZ1bmN0aW9uIChwcm9wKSB7XG5cdCAgdGVzdEVsID0gdGVzdEVsIHx8IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXHQgIHByb3AgPSBjYW1lbGl6ZShwcm9wKTtcblx0ICBp
ZiAocHJvcCAhPT0gJ2ZpbHRlcicgJiYgKHByb3AgaW4gdGVzdEVsLnN0eWxlKSkge1xuXHQgICAg
cmV0dXJuIHByb3Bcblx0ICB9XG5cdCAgdmFyIHVwcGVyID0gcHJvcC5jaGFyQXQoMCkudG9VcHBl
ckNhc2UoKSArIHByb3Auc2xpY2UoMSk7XG5cdCAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcmVmaXhl
cy5sZW5ndGg7IGkrKykge1xuXHQgICAgdmFyIHByZWZpeGVkID0gcHJlZml4ZXNbaV0gKyB1cHBl
cjtcblx0ICAgIGlmIChwcmVmaXhlZCBpbiB0ZXN0RWwuc3R5bGUpIHtcblx0ICAgICAgcmV0dXJu
IHByZWZpeGVkXG5cdCAgICB9XG5cdCAgfVxuXHR9KTtcblx0XG5cdGZ1bmN0aW9uIHVwZGF0ZVN0
eWxlIChvbGRWbm9kZSwgdm5vZGUpIHtcblx0ICB2YXIgZGF0YSA9IHZub2RlLmRhdGE7XG5cdCAg
dmFyIG9sZERhdGEgPSBvbGRWbm9kZS5kYXRhO1xuXHRcblx0ICBpZiAoIWRhdGEuc3RhdGljU3R5
bGUgJiYgIWRhdGEuc3R5bGUgJiZcblx0ICAgICAgIW9sZERhdGEuc3RhdGljU3R5bGUgJiYgIW9s
ZERhdGEuc3R5bGUpIHtcblx0ICAgIHJldHVyblxuXHQgIH1cblx0XG5cdCAgdmFyIGN1ciwgbmFt
ZTtcblx0ICB2YXIgZWwgPSB2bm9kZS5lbG07XG5cdCAgdmFyIG9sZFN0YXRpY1N0eWxlID0gb2xk
Vm5vZGUuZGF0YS5zdGF0aWNTdHlsZTtcblx0ICB2YXIgb2xkU3R5bGVCaW5kaW5nID0gb2xkVm5v
ZGUuZGF0YS5zdHlsZSB8fCB7fTtcblx0XG5cdCAgLy8gaWYgc3RhdGljIHN0eWxlIGV4aXN0cywg
c3R5bGViaW5kaW5nIGFscmVhZHkgbWVyZ2VkIGludG8gaXQgd2hlbiBkb2luZyBub3JtYWxpemVT
dHlsZURhdGFcblx0ICB2YXIgb2xkU3R5bGUgPSBvbGRTdGF0aWNTdHlsZSB8fCBvbGRTdHlsZUJp
bmRpbmc7XG5cdFxuXHQgIHZhciBzdHlsZSA9IG5vcm1hbGl6ZVN0eWxlQmluZGluZyh2bm9kZS5k
YXRhLnN0eWxlKSB8fCB7fTtcblx0XG5cdCAgdm5vZGUuZGF0YS5zdHlsZSA9IHN0eWxlLl9fb2Jf
XyA/IGV4dGVuZCh7fSwgc3R5bGUpIDogc3R5bGU7XG5cdFxuXHQgIHZhciBuZXdTdHlsZSA9IGdl
dFN0eWxlKHZub2RlLCB0cnVlKTtcblx0XG5cdCAgZm9yIChuYW1lIGluIG9sZFN0eWxlKSB7XG5c
dCAgICBpZiAobmV3U3R5bGVbbmFtZV0gPT0gbnVsbCkge1xuXHQgICAgICBzZXRQcm9wKGVsLCBu
YW1lLCAnJyk7XG5cdCAgICB9XG5cdCAgfVxuXHQgIGZvciAobmFtZSBpbiBuZXdTdHlsZSkge1xu
XHQgICAgY3VyID0gbmV3U3R5bGVbbmFtZV07XG5cdCAgICBpZiAoY3VyICE9PSBvbGRTdHlsZVtu
YW1lXSkge1xuXHQgICAgICAvLyBpZTkgc2V0dGluZyB0byBudWxsIGhhcyBubyBlZmZlY3QsIG11
c3QgdXNlIGVtcHR5IHN0cmluZ1xuXHQgICAgICBzZXRQcm9wKGVsLCBuYW1lLCBjdXIgPT0gbnVs
bCA/ICcnIDogY3VyKTtcblx0ICAgIH1cblx0ICB9XG5cdH1cblx0XG5cdHZhciBzdHlsZSA9IHtc
blx0ICBjcmVhdGU6IHVwZGF0ZVN0eWxlLFxuXHQgIHVwZGF0ZTogdXBkYXRlU3R5bGVcblx0fTtc
blx0XG5cdC8qICAqL1xuXHRcblx0LyoqXG5cdCAqIEFkZCBjbGFzcyB3aXRoIGNvbXBhdGliaWxp
dHkgZm9yIFNWRyBzaW5jZSBjbGFzc0xpc3QgaXMgbm90IHN1cHBvcnRlZCBvblxuXHQgKiBTVkcg
ZWxlbWVudHMgaW4gSUVcblx0ICovXG5cdGZ1bmN0aW9uIGFkZENsYXNzIChlbCwgY2xzKSB7XG5c
dCAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG5cdCAgaWYgKCFjbHMgfHwgIWNscy50cmltKCkp
IHtcblx0ICAgIHJldHVyblxuXHQgIH1cblx0XG5cdCAgLyogaXN0YW5idWwgaWdub3JlIGVsc2Ug
Ki9cblx0ICBpZiAoZWwuY2xhc3NMaXN0KSB7XG5cdCAgICBpZiAoY2xzLmluZGV4T2YoJyAnKSA+
IC0xKSB7XG5cdCAgICAgIGNscy5zcGxpdCgvXFxzKy8pLmZvckVhY2goZnVuY3Rpb24gKGMpIHsg
cmV0dXJuIGVsLmNsYXNzTGlzdC5hZGQoYyk7IH0pO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAg
ZWwuY2xhc3NMaXN0LmFkZChjbHMpO1xuXHQgICAgfVxuXHQgIH0gZWxzZSB7XG5cdCAgICB2YXIg
Y3VyID0gJyAnICsgZWwuZ2V0QXR0cmlidXRlKCdjbGFzcycpICsgJyAnO1xuXHQgICAgaWYgKGN1
ci5pbmRleE9mKCcgJyArIGNscyArICcgJykgPCAwKSB7XG5cdCAgICAgIGVsLnNldEF0dHJpYnV0
ZSgnY2xhc3MnLCAoY3VyICsgY2xzKS50cmltKCkpO1xuXHQgICAgfVxuXHQgIH1cblx0fVxuXHRc
blx0LyoqXG5cdCAqIFJlbW92ZSBjbGFzcyB3aXRoIGNvbXBhdGliaWxpdHkgZm9yIFNWRyBzaW5j
ZSBjbGFzc0xpc3QgaXMgbm90IHN1cHBvcnRlZCBvblxuXHQgKiBTVkcgZWxlbWVudHMgaW4gSUVc
blx0ICovXG5cdGZ1bmN0aW9uIHJlbW92ZUNsYXNzIChlbCwgY2xzKSB7XG5cdCAgLyogaXN0YW5i
dWwgaWdub3JlIGlmICovXG5cdCAgaWYgKCFjbHMgfHwgIWNscy50cmltKCkpIHtcblx0ICAgIHJl
dHVyblxuXHQgIH1cblx0XG5cdCAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cblx0ICBpZiAo
ZWwuY2xhc3NMaXN0KSB7XG5cdCAgICBpZiAoY2xzLmluZGV4T2YoJyAnKSA+IC0xKSB7XG5cdCAg
ICAgIGNscy5zcGxpdCgvXFxzKy8pLmZvckVhY2goZnVuY3Rpb24gKGMpIHsgcmV0dXJuIGVsLmNs
YXNzTGlzdC5yZW1vdmUoYyk7IH0pO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgZWwuY2xhc3NM
aXN0LnJlbW92ZShjbHMpO1xuXHQgICAgfVxuXHQgIH0gZWxzZSB7XG5cdCAgICB2YXIgY3VyID0g
JyAnICsgZWwuZ2V0QXR0cmlidXRlKCdjbGFzcycpICsgJyAnO1xuXHQgICAgdmFyIHRhciA9ICcg
JyArIGNscyArICcgJztcblx0ICAgIHdoaWxlIChjdXIuaW5kZXhPZih0YXIpID49IDApIHtcblx0
ICAgICAgY3VyID0gY3VyLnJlcGxhY2UodGFyLCAnICcpO1xuXHQgICAgfVxuXHQgICAgZWwuc2V0
QXR0cmlidXRlKCdjbGFzcycsIGN1ci50cmltKCkpO1xuXHQgIH1cblx0fVxuXHRcblx0LyogICov
XG5cdFxuXHR2YXIgaGFzVHJhbnNpdGlvbiA9IGluQnJvd3NlciAmJiAhaXNJRTk7XG5cdHZhciBU
UkFOU0lUSU9OID0gJ3RyYW5zaXRpb24nO1xuXHR2YXIgQU5JTUFUSU9OID0gJ2FuaW1hdGlvbic7
XG5cdFxuXHQvLyBUcmFuc2l0aW9uIHByb3BlcnR5L2V2ZW50IHNuaWZmaW5nXG5cdHZhciB0cmFu
c2l0aW9uUHJvcCA9ICd0cmFuc2l0aW9uJztcblx0dmFyIHRyYW5zaXRpb25FbmRFdmVudCA9ICd0
cmFuc2l0aW9uZW5kJztcblx0dmFyIGFuaW1hdGlvblByb3AgPSAnYW5pbWF0aW9uJztcblx0dmFy
IGFuaW1hdGlvbkVuZEV2ZW50ID0gJ2FuaW1hdGlvbmVuZCc7XG5cdGlmIChoYXNUcmFuc2l0aW9u
KSB7XG5cdCAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG5cdCAgaWYgKHdpbmRvdy5vbnRyYW5z
aXRpb25lbmQgPT09IHVuZGVmaW5lZCAmJlxuXHQgICAgd2luZG93Lm9ud2Via2l0dHJhbnNpdGlv
bmVuZCAhPT0gdW5kZWZpbmVkKSB7XG5cdCAgICB0cmFuc2l0aW9uUHJvcCA9ICdXZWJraXRUcmFu
c2l0aW9uJztcblx0ICAgIHRyYW5zaXRpb25FbmRFdmVudCA9ICd3ZWJraXRUcmFuc2l0aW9uRW5k
Jztcblx0ICB9XG5cdCAgaWYgKHdpbmRvdy5vbmFuaW1hdGlvbmVuZCA9PT0gdW5kZWZpbmVkICYm
XG5cdCAgICB3aW5kb3cub253ZWJraXRhbmltYXRpb25lbmQgIT09IHVuZGVmaW5lZCkge1xuXHQg
ICAgYW5pbWF0aW9uUHJvcCA9ICdXZWJraXRBbmltYXRpb24nO1xuXHQgICAgYW5pbWF0aW9uRW5k
RXZlbnQgPSAnd2Via2l0QW5pbWF0aW9uRW5kJztcblx0ICB9XG5cdH1cblx0XG5cdHZhciByYWYg
PSAoaW5Ccm93c2VyICYmIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUpIHx8IHNldFRpbWVv
dXQ7XG5cdGZ1bmN0aW9uIG5leHRGcmFtZSAoZm4pIHtcblx0ICByYWYoZnVuY3Rpb24gKCkge1xu
XHQgICAgcmFmKGZuKTtcblx0ICB9KTtcblx0fVxuXHRcblx0ZnVuY3Rpb24gYWRkVHJhbnNpdGlv
bkNsYXNzIChlbCwgY2xzKSB7XG5cdCAgKGVsLl90cmFuc2l0aW9uQ2xhc3NlcyB8fCAoZWwuX3Ry
YW5zaXRpb25DbGFzc2VzID0gW10pKS5wdXNoKGNscyk7XG5cdCAgYWRkQ2xhc3MoZWwsIGNscyk7
XG5cdH1cblx0XG5cdGZ1bmN0aW9uIHJlbW92ZVRyYW5zaXRpb25DbGFzcyAoZWwsIGNscykge1xu
XHQgIGlmIChlbC5fdHJhbnNpdGlvbkNsYXNzZXMpIHtcblx0ICAgIHJlbW92ZSQxKGVsLl90cmFu
c2l0aW9uQ2xhc3NlcywgY2xzKTtcblx0ICB9XG5cdCAgcmVtb3ZlQ2xhc3MoZWwsIGNscyk7XG5c
dH1cblx0XG5cdGZ1bmN0aW9uIHdoZW5UcmFuc2l0aW9uRW5kcyAoXG5cdCAgZWwsXG5cdCAgZXhw
ZWN0ZWRUeXBlLFxuXHQgIGNiXG5cdCkge1xuXHQgIHZhciByZWYgPSBnZXRUcmFuc2l0aW9uSW5m
byhlbCwgZXhwZWN0ZWRUeXBlKTtcblx0ICB2YXIgdHlwZSA9IHJlZi50eXBlO1xuXHQgIHZhciB0
aW1lb3V0ID0gcmVmLnRpbWVvdXQ7XG5cdCAgdmFyIHByb3BDb3VudCA9IHJlZi5wcm9wQ291bnQ7
XG5cdCAgaWYgKCF0eXBlKSB7IHJldHVybiBjYigpIH1cblx0ICB2YXIgZXZlbnQgPSB0eXBlID09
PSBUUkFOU0lUSU9OID8gdHJhbnNpdGlvbkVuZEV2ZW50IDogYW5pbWF0aW9uRW5kRXZlbnQ7XG5c
dCAgdmFyIGVuZGVkID0gMDtcblx0ICB2YXIgZW5kID0gZnVuY3Rpb24gKCkge1xuXHQgICAgZWwu
cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudCwgb25FbmQpO1xuXHQgICAgY2IoKTtcblx0ICB9O1xu
XHQgIHZhciBvbkVuZCA9IGZ1bmN0aW9uIChlKSB7XG5cdCAgICBpZiAoZS50YXJnZXQgPT09IGVs
KSB7XG5cdCAgICAgIGlmICgrK2VuZGVkID49IHByb3BDb3VudCkge1xuXHQgICAgICAgIGVuZCgp
O1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfTtcblx0ICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgp
IHtcblx0ICAgIGlmIChlbmRlZCA8IHByb3BDb3VudCkge1xuXHQgICAgICBlbmQoKTtcblx0ICAg
IH1cblx0ICB9LCB0aW1lb3V0ICsgMSk7XG5cdCAgZWwuYWRkRXZlbnRMaXN0ZW5lcihldmVudCwg
b25FbmQpO1xuXHR9XG5cdFxuXHR2YXIgdHJhbnNmb3JtUkUgPSAvXFxiKHRyYW5zZm9ybXxhbGwp
KCx8JCkvO1xuXHRcblx0ZnVuY3Rpb24gZ2V0VHJhbnNpdGlvbkluZm8gKGVsLCBleHBlY3RlZFR5
cGUpIHtcblx0ICB2YXIgc3R5bGVzID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWwpO1xuXHQg
IHZhciB0cmFuc2l0aW9uZURlbGF5cyA9IHN0eWxlc1t0cmFuc2l0aW9uUHJvcCArICdEZWxheSdd
LnNwbGl0KCcsICcpO1xuXHQgIHZhciB0cmFuc2l0aW9uRHVyYXRpb25zID0gc3R5bGVzW3RyYW5z
aXRpb25Qcm9wICsgJ0R1cmF0aW9uJ10uc3BsaXQoJywgJyk7XG5cdCAgdmFyIHRyYW5zaXRpb25U
aW1lb3V0ID0gZ2V0VGltZW91dCh0cmFuc2l0aW9uZURlbGF5cywgdHJhbnNpdGlvbkR1cmF0aW9u
cyk7XG5cdCAgdmFyIGFuaW1hdGlvbkRlbGF5cyA9IHN0eWxlc1thbmltYXRpb25Qcm9wICsgJ0Rl
bGF5J10uc3BsaXQoJywgJyk7XG5cdCAgdmFyIGFuaW1hdGlvbkR1cmF0aW9ucyA9IHN0eWxlc1th
bmltYXRpb25Qcm9wICsgJ0R1cmF0aW9uJ10uc3BsaXQoJywgJyk7XG5cdCAgdmFyIGFuaW1hdGlv
blRpbWVvdXQgPSBnZXRUaW1lb3V0KGFuaW1hdGlvbkRlbGF5cywgYW5pbWF0aW9uRHVyYXRpb25z
KTtcblx0XG5cdCAgdmFyIHR5cGU7XG5cdCAgdmFyIHRpbWVvdXQgPSAwO1xuXHQgIHZhciBwcm9w
Q291bnQgPSAwO1xuXHQgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuXHQgIGlmIChleHBlY3Rl
ZFR5cGUgPT09IFRSQU5TSVRJT04pIHtcblx0ICAgIGlmICh0cmFuc2l0aW9uVGltZW91dCA+IDAp
IHtcblx0ICAgICAgdHlwZSA9IFRSQU5TSVRJT047XG5cdCAgICAgIHRpbWVvdXQgPSB0cmFuc2l0
aW9uVGltZW91dDtcblx0ICAgICAgcHJvcENvdW50ID0gdHJhbnNpdGlvbkR1cmF0aW9ucy5sZW5n
dGg7XG5cdCAgICB9XG5cdCAgfSBlbHNlIGlmIChleHBlY3RlZFR5cGUgPT09IEFOSU1BVElPTikg
e1xuXHQgICAgaWYgKGFuaW1hdGlvblRpbWVvdXQgPiAwKSB7XG5cdCAgICAgIHR5cGUgPSBBTklN
QVRJT047XG5cdCAgICAgIHRpbWVvdXQgPSBhbmltYXRpb25UaW1lb3V0O1xuXHQgICAgICBwcm9w
Q291bnQgPSBhbmltYXRpb25EdXJhdGlvbnMubGVuZ3RoO1xuXHQgICAgfVxuXHQgIH0gZWxzZSB7
XG5cdCAgICB0aW1lb3V0ID0gTWF0aC5tYXgodHJhbnNpdGlvblRpbWVvdXQsIGFuaW1hdGlvblRp
bWVvdXQpO1xuXHQgICAgdHlwZSA9IHRpbWVvdXQgPiAwXG5cdCAgICAgID8gdHJhbnNpdGlvblRp
bWVvdXQgPiBhbmltYXRpb25UaW1lb3V0XG5cdCAgICAgICAgPyBUUkFOU0lUSU9OXG5cdCAgICAg
ICAgOiBBTklNQVRJT05cblx0ICAgICAgOiBudWxsO1xuXHQgICAgcHJvcENvdW50ID0gdHlwZVxu
XHQgICAgICA/IHR5cGUgPT09IFRSQU5TSVRJT05cblx0ICAgICAgICA/IHRyYW5zaXRpb25EdXJh
dGlvbnMubGVuZ3RoXG5cdCAgICAgICAgOiBhbmltYXRpb25EdXJhdGlvbnMubGVuZ3RoXG5cdCAg
ICAgIDogMDtcblx0ICB9XG5cdCAgdmFyIGhhc1RyYW5zZm9ybSA9XG5cdCAgICB0eXBlID09PSBU
UkFOU0lUSU9OICYmXG5cdCAgICB0cmFuc2Zvcm1SRS50ZXN0KHN0eWxlc1t0cmFuc2l0aW9uUHJv
cCArICdQcm9wZXJ0eSddKTtcblx0ICByZXR1cm4ge1xuXHQgICAgdHlwZTogdHlwZSxcblx0ICAg
IHRpbWVvdXQ6IHRpbWVvdXQsXG5cdCAgICBwcm9wQ291bnQ6IHByb3BDb3VudCxcblx0ICAgIGhh
c1RyYW5zZm9ybTogaGFzVHJhbnNmb3JtXG5cdCAgfVxuXHR9XG5cdFxuXHRmdW5jdGlvbiBnZXRU
aW1lb3V0IChkZWxheXMsIGR1cmF0aW9ucykge1xuXHQgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0
ICovXG5cdCAgd2hpbGUgKGRlbGF5cy5sZW5ndGggPCBkdXJhdGlvbnMubGVuZ3RoKSB7XG5cdCAg
ICBkZWxheXMgPSBkZWxheXMuY29uY2F0KGRlbGF5cyk7XG5cdCAgfVxuXHRcblx0ICByZXR1cm4g
TWF0aC5tYXguYXBwbHkobnVsbCwgZHVyYXRpb25zLm1hcChmdW5jdGlvbiAoZCwgaSkge1xuXHQg
ICAgcmV0dXJuIHRvTXMoZCkgKyB0b01zKGRlbGF5c1tpXSlcblx0ICB9KSlcblx0fVxuXHRcblx0
ZnVuY3Rpb24gdG9NcyAocykge1xuXHQgIHJldHVybiBOdW1iZXIocy5zbGljZSgwLCAtMSkpICog
MTAwMFxuXHR9XG5cdFxuXHQvKiAgKi9cblx0XG5cdGZ1bmN0aW9uIGVudGVyICh2bm9kZSkge1xu
XHQgIHZhciBlbCA9IHZub2RlLmVsbTtcblx0XG5cdCAgLy8gY2FsbCBsZWF2ZSBjYWxsYmFjayBu
b3dcblx0ICBpZiAoZWwuX2xlYXZlQ2IpIHtcblx0ICAgIGVsLl9sZWF2ZUNiLmNhbmNlbGxlZCA9
IHRydWU7XG5cdCAgICBlbC5fbGVhdmVDYigpO1xuXHQgIH1cblx0XG5cdCAgdmFyIGRhdGEgPSBy
ZXNvbHZlVHJhbnNpdGlvbih2bm9kZS5kYXRhLnRyYW5zaXRpb24pO1xuXHQgIGlmICghZGF0YSkg
e1xuXHQgICAgcmV0dXJuXG5cdCAgfVxuXHRcblx0ICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9c
blx0ICBpZiAoZWwuX2VudGVyQ2IgfHwgZWwubm9kZVR5cGUgIT09IDEpIHtcblx0ICAgIHJldHVy
blxuXHQgIH1cblx0XG5cdCAgdmFyIGNzcyA9IGRhdGEuY3NzO1xuXHQgIHZhciB0eXBlID0gZGF0
YS50eXBlO1xuXHQgIHZhciBlbnRlckNsYXNzID0gZGF0YS5lbnRlckNsYXNzO1xuXHQgIHZhciBl
bnRlckFjdGl2ZUNsYXNzID0gZGF0YS5lbnRlckFjdGl2ZUNsYXNzO1xuXHQgIHZhciBhcHBlYXJD
bGFzcyA9IGRhdGEuYXBwZWFyQ2xhc3M7XG5cdCAgdmFyIGFwcGVhckFjdGl2ZUNsYXNzID0gZGF0
YS5hcHBlYXJBY3RpdmVDbGFzcztcblx0ICB2YXIgYmVmb3JlRW50ZXIgPSBkYXRhLmJlZm9yZUVu
dGVyO1xuXHQgIHZhciBlbnRlciA9IGRhdGEuZW50ZXI7XG5cdCAgdmFyIGFmdGVyRW50ZXIgPSBk
YXRhLmFmdGVyRW50ZXI7XG5cdCAgdmFyIGVudGVyQ2FuY2VsbGVkID0gZGF0YS5lbnRlckNhbmNl
bGxlZDtcblx0ICB2YXIgYmVmb3JlQXBwZWFyID0gZGF0YS5iZWZvcmVBcHBlYXI7XG5cdCAgdmFy
IGFwcGVhciA9IGRhdGEuYXBwZWFyO1xuXHQgIHZhciBhZnRlckFwcGVhciA9IGRhdGEuYWZ0ZXJB
cHBlYXI7XG5cdCAgdmFyIGFwcGVhckNhbmNlbGxlZCA9IGRhdGEuYXBwZWFyQ2FuY2VsbGVkO1xu
XHRcblx0ICAvLyBhY3RpdmVJbnN0YW5jZSB3aWxsIGFsd2F5cyBiZSB0aGUgPHRyYW5zaXRpb24+
IGNvbXBvbmVudCBtYW5hZ2luZyB0aGlzXG5cdCAgLy8gdHJhbnNpdGlvbi4gT25lIGVkZ2UgY2Fz
ZSB0byBjaGVjayBpcyB3aGVuIHRoZSA8dHJhbnNpdGlvbj4gaXMgcGxhY2VkXG5cdCAgLy8gYXMg
dGhlIHJvb3Qgbm9kZSBvZiBhIGNoaWxkIGNvbXBvbmVudC4gSW4gdGhhdCBjYXNlIHdlIG5lZWQg
dG8gY2hlY2tcblx0ICAvLyA8dHJhbnNpdGlvbj4ncyBwYXJlbnQgZm9yIGFwcGVhciBjaGVjay5c
blx0ICB2YXIgdHJhbnNpdGlvbk5vZGUgPSBhY3RpdmVJbnN0YW5jZS4kdm5vZGU7XG5cdCAgdmFy
IGNvbnRleHQgPSB0cmFuc2l0aW9uTm9kZSAmJiB0cmFuc2l0aW9uTm9kZS5wYXJlbnRcblx0ICAg
ID8gdHJhbnNpdGlvbk5vZGUucGFyZW50LmNvbnRleHRcblx0ICAgIDogYWN0aXZlSW5zdGFuY2U7
XG5cdFxuXHQgIHZhciBpc0FwcGVhciA9ICFjb250ZXh0Ll9pc01vdW50ZWQgfHwgIXZub2RlLmlz
Um9vdEluc2VydDtcblx0XG5cdCAgaWYgKGlzQXBwZWFyICYmICFhcHBlYXIgJiYgYXBwZWFyICE9
PSAnJykge1xuXHQgICAgcmV0dXJuXG5cdCAgfVxuXHRcblx0ICB2YXIgc3RhcnRDbGFzcyA9IGlz
QXBwZWFyID8gYXBwZWFyQ2xhc3MgOiBlbnRlckNsYXNzO1xuXHQgIHZhciBhY3RpdmVDbGFzcyA9
IGlzQXBwZWFyID8gYXBwZWFyQWN0aXZlQ2xhc3MgOiBlbnRlckFjdGl2ZUNsYXNzO1xuXHQgIHZh
ciBiZWZvcmVFbnRlckhvb2sgPSBpc0FwcGVhciA/IChiZWZvcmVBcHBlYXIgfHwgYmVmb3JlRW50
ZXIpIDogYmVmb3JlRW50ZXI7XG5cdCAgdmFyIGVudGVySG9vayA9IGlzQXBwZWFyID8gKHR5cGVv
ZiBhcHBlYXIgPT09ICdmdW5jdGlvbicgPyBhcHBlYXIgOiBlbnRlcikgOiBlbnRlcjtcblx0ICB2
YXIgYWZ0ZXJFbnRlckhvb2sgPSBpc0FwcGVhciA/IChhZnRlckFwcGVhciB8fCBhZnRlckVudGVy
KSA6IGFmdGVyRW50ZXI7XG5cdCAgdmFyIGVudGVyQ2FuY2VsbGVkSG9vayA9IGlzQXBwZWFyID8g
KGFwcGVhckNhbmNlbGxlZCB8fCBlbnRlckNhbmNlbGxlZCkgOiBlbnRlckNhbmNlbGxlZDtcblx0
XG5cdCAgdmFyIGV4cGVjdHNDU1MgPSBjc3MgIT09IGZhbHNlICYmICFpc0lFOTtcblx0ICB2YXIg
dXNlcldhbnRzQ29udHJvbCA9XG5cdCAgICBlbnRlckhvb2sgJiZcblx0ICAgIC8vIGVudGVySG9v
ayBtYXkgYmUgYSBib3VuZCBtZXRob2Qgd2hpY2ggZXhwb3Nlc1xuXHQgICAgLy8gdGhlIGxlbmd0
aCBvZiBvcmlnaW5hbCBmbiBhcyBfbGVuZ3RoXG5cdCAgICAoZW50ZXJIb29rLl9sZW5ndGggfHwg
ZW50ZXJIb29rLmxlbmd0aCkgPiAxO1xuXHRcblx0ICB2YXIgY2IgPSBlbC5fZW50ZXJDYiA9IG9u
Y2UoZnVuY3Rpb24gKCkge1xuXHQgICAgaWYgKGV4cGVjdHNDU1MpIHtcblx0ICAgICAgcmVtb3Zl
VHJhbnNpdGlvbkNsYXNzKGVsLCBhY3RpdmVDbGFzcyk7XG5cdCAgICB9XG5cdCAgICBpZiAoY2Iu
Y2FuY2VsbGVkKSB7XG5cdCAgICAgIGlmIChleHBlY3RzQ1NTKSB7XG5cdCAgICAgICAgcmVtb3Zl
VHJhbnNpdGlvbkNsYXNzKGVsLCBzdGFydENsYXNzKTtcblx0ICAgICAgfVxuXHQgICAgICBlbnRl
ckNhbmNlbGxlZEhvb2sgJiYgZW50ZXJDYW5jZWxsZWRIb29rKGVsKTtcblx0ICAgIH0gZWxzZSB7
XG5cdCAgICAgIGFmdGVyRW50ZXJIb29rICYmIGFmdGVyRW50ZXJIb29rKGVsKTtcblx0ICAgIH1c
blx0ICAgIGVsLl9lbnRlckNiID0gbnVsbDtcblx0ICB9KTtcblx0XG5cdCAgaWYgKCF2bm9kZS5k
YXRhLnNob3cpIHtcblx0ICAgIC8vIHJlbW92ZSBwZW5kaW5nIGxlYXZlIGVsZW1lbnQgb24gZW50
ZXIgYnkgaW5qZWN0aW5nIGFuIGluc2VydCBob29rXG5cdCAgICBtZXJnZVZOb2RlSG9vayh2bm9k
ZS5kYXRhLmhvb2sgfHwgKHZub2RlLmRhdGEuaG9vayA9IHt9KSwgJ2luc2VydCcsIGZ1bmN0aW9u
ICgpIHtcblx0ICAgICAgdmFyIHBhcmVudCA9IGVsLnBhcmVudE5vZGU7XG5cdCAgICAgIHZhciBw
ZW5kaW5nTm9kZSA9IHBhcmVudCAmJiBwYXJlbnQuX3BlbmRpbmcgJiYgcGFyZW50Ll9wZW5kaW5n
W3Zub2RlLmtleV07XG5cdCAgICAgIGlmIChwZW5kaW5nTm9kZSAmJiBwZW5kaW5nTm9kZS50YWcg
PT09IHZub2RlLnRhZyAmJiBwZW5kaW5nTm9kZS5lbG0uX2xlYXZlQ2IpIHtcblx0ICAgICAgICBw
ZW5kaW5nTm9kZS5lbG0uX2xlYXZlQ2IoKTtcblx0ICAgICAgfVxuXHQgICAgICBlbnRlckhvb2sg
JiYgZW50ZXJIb29rKGVsLCBjYik7XG5cdCAgICB9LCAndHJhbnNpdGlvbi1pbnNlcnQnKTtcblx0
ICB9XG5cdFxuXHQgIC8vIHN0YXJ0IGVudGVyIHRyYW5zaXRpb25cblx0ICBiZWZvcmVFbnRlckhv
b2sgJiYgYmVmb3JlRW50ZXJIb29rKGVsKTtcblx0ICBpZiAoZXhwZWN0c0NTUykge1xuXHQgICAg
YWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBzdGFydENsYXNzKTtcblx0ICAgIGFkZFRyYW5zaXRpb25D
bGFzcyhlbCwgYWN0aXZlQ2xhc3MpO1xuXHQgICAgbmV4dEZyYW1lKGZ1bmN0aW9uICgpIHtcblx0
ICAgICAgcmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGVsLCBzdGFydENsYXNzKTtcblx0ICAgICAgaWYg
KCFjYi5jYW5jZWxsZWQgJiYgIXVzZXJXYW50c0NvbnRyb2wpIHtcblx0ICAgICAgICB3aGVuVHJh
bnNpdGlvbkVuZHMoZWwsIHR5cGUsIGNiKTtcblx0ICAgICAgfVxuXHQgICAgfSk7XG5cdCAgfVxu
XHRcblx0ICBpZiAodm5vZGUuZGF0YS5zaG93KSB7XG5cdCAgICBlbnRlckhvb2sgJiYgZW50ZXJI
b29rKGVsLCBjYik7XG5cdCAgfVxuXHRcblx0ICBpZiAoIWV4cGVjdHNDU1MgJiYgIXVzZXJXYW50
c0NvbnRyb2wpIHtcblx0ICAgIGNiKCk7XG5cdCAgfVxuXHR9XG5cdFxuXHRmdW5jdGlvbiBsZWF2
ZSAodm5vZGUsIHJtKSB7XG5cdCAgdmFyIGVsID0gdm5vZGUuZWxtO1xuXHRcblx0ICAvLyBjYWxs
IGVudGVyIGNhbGxiYWNrIG5vd1xuXHQgIGlmIChlbC5fZW50ZXJDYikge1xuXHQgICAgZWwuX2Vu
dGVyQ2IuY2FuY2VsbGVkID0gdHJ1ZTtcblx0ICAgIGVsLl9lbnRlckNiKCk7XG5cdCAgfVxuXHRc
blx0ICB2YXIgZGF0YSA9IHJlc29sdmVUcmFuc2l0aW9uKHZub2RlLmRhdGEudHJhbnNpdGlvbik7
XG5cdCAgaWYgKCFkYXRhKSB7XG5cdCAgICByZXR1cm4gcm0oKVxuXHQgIH1cblx0XG5cdCAgLyog
aXN0YW5idWwgaWdub3JlIGlmICovXG5cdCAgaWYgKGVsLl9sZWF2ZUNiIHx8IGVsLm5vZGVUeXBl
ICE9PSAxKSB7XG5cdCAgICByZXR1cm5cblx0ICB9XG5cdFxuXHQgIHZhciBjc3MgPSBkYXRhLmNz
cztcblx0ICB2YXIgdHlwZSA9IGRhdGEudHlwZTtcblx0ICB2YXIgbGVhdmVDbGFzcyA9IGRhdGEu
bGVhdmVDbGFzcztcblx0ICB2YXIgbGVhdmVBY3RpdmVDbGFzcyA9IGRhdGEubGVhdmVBY3RpdmVD
bGFzcztcblx0ICB2YXIgYmVmb3JlTGVhdmUgPSBkYXRhLmJlZm9yZUxlYXZlO1xuXHQgIHZhciBs
ZWF2ZSA9IGRhdGEubGVhdmU7XG5cdCAgdmFyIGFmdGVyTGVhdmUgPSBkYXRhLmFmdGVyTGVhdmU7
XG5cdCAgdmFyIGxlYXZlQ2FuY2VsbGVkID0gZGF0YS5sZWF2ZUNhbmNlbGxlZDtcblx0ICB2YXIg
ZGVsYXlMZWF2ZSA9IGRhdGEuZGVsYXlMZWF2ZTtcblx0XG5cdCAgdmFyIGV4cGVjdHNDU1MgPSBj
c3MgIT09IGZhbHNlICYmICFpc0lFOTtcblx0ICB2YXIgdXNlcldhbnRzQ29udHJvbCA9XG5cdCAg
ICBsZWF2ZSAmJlxuXHQgICAgLy8gbGVhdmUgaG9vayBtYXkgYmUgYSBib3VuZCBtZXRob2Qgd2hp
Y2ggZXhwb3Nlc1xuXHQgICAgLy8gdGhlIGxlbmd0aCBvZiBvcmlnaW5hbCBmbiBhcyBfbGVuZ3Ro
XG5cdCAgICAobGVhdmUuX2xlbmd0aCB8fCBsZWF2ZS5sZW5ndGgpID4gMTtcblx0XG5cdCAgdmFy
IGNiID0gZWwuX2xlYXZlQ2IgPSBvbmNlKGZ1bmN0aW9uICgpIHtcblx0ICAgIGlmIChlbC5wYXJl
bnROb2RlICYmIGVsLnBhcmVudE5vZGUuX3BlbmRpbmcpIHtcblx0ICAgICAgZWwucGFyZW50Tm9k
ZS5fcGVuZGluZ1t2bm9kZS5rZXldID0gbnVsbDtcblx0ICAgIH1cblx0ICAgIGlmIChleHBlY3Rz
Q1NTKSB7XG5cdCAgICAgIHJlbW92ZVRyYW5zaXRpb25DbGFzcyhlbCwgbGVhdmVBY3RpdmVDbGFz
cyk7XG5cdCAgICB9XG5cdCAgICBpZiAoY2IuY2FuY2VsbGVkKSB7XG5cdCAgICAgIGlmIChleHBl
Y3RzQ1NTKSB7XG5cdCAgICAgICAgcmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGVsLCBsZWF2ZUNsYXNz
KTtcblx0ICAgICAgfVxuXHQgICAgICBsZWF2ZUNhbmNlbGxlZCAmJiBsZWF2ZUNhbmNlbGxlZChl
bCk7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICBybSgpO1xuXHQgICAgICBhZnRlckxlYXZlICYm
IGFmdGVyTGVhdmUoZWwpO1xuXHQgICAgfVxuXHQgICAgZWwuX2xlYXZlQ2IgPSBudWxsO1xuXHQg
IH0pO1xuXHRcblx0ICBpZiAoZGVsYXlMZWF2ZSkge1xuXHQgICAgZGVsYXlMZWF2ZShwZXJmb3Jt
TGVhdmUpO1xuXHQgIH0gZWxzZSB7XG5cdCAgICBwZXJmb3JtTGVhdmUoKTtcblx0ICB9XG5cdFxu
XHQgIGZ1bmN0aW9uIHBlcmZvcm1MZWF2ZSAoKSB7XG5cdCAgICAvLyB0aGUgZGVsYXllZCBsZWF2
ZSBtYXkgaGF2ZSBhbHJlYWR5IGJlZW4gY2FuY2VsbGVkXG5cdCAgICBpZiAoY2IuY2FuY2VsbGVk
KSB7XG5cdCAgICAgIHJldHVyblxuXHQgICAgfVxuXHQgICAgLy8gcmVjb3JkIGxlYXZpbmcgZWxl
bWVudFxuXHQgICAgaWYgKCF2bm9kZS5kYXRhLnNob3cpIHtcblx0ICAgICAgKGVsLnBhcmVudE5v
ZGUuX3BlbmRpbmcgfHwgKGVsLnBhcmVudE5vZGUuX3BlbmRpbmcgPSB7fSkpW3Zub2RlLmtleV0g
PSB2bm9kZTtcblx0ICAgIH1cblx0ICAgIGJlZm9yZUxlYXZlICYmIGJlZm9yZUxlYXZlKGVsKTtc
blx0ICAgIGlmIChleHBlY3RzQ1NTKSB7XG5cdCAgICAgIGFkZFRyYW5zaXRpb25DbGFzcyhlbCwg
bGVhdmVDbGFzcyk7XG5cdCAgICAgIGFkZFRyYW5zaXRpb25DbGFzcyhlbCwgbGVhdmVBY3RpdmVD
bGFzcyk7XG5cdCAgICAgIG5leHRGcmFtZShmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgcmVtb3Zl
VHJhbnNpdGlvbkNsYXNzKGVsLCBsZWF2ZUNsYXNzKTtcblx0ICAgICAgICBpZiAoIWNiLmNhbmNl
bGxlZCAmJiAhdXNlcldhbnRzQ29udHJvbCkge1xuXHQgICAgICAgICAgd2hlblRyYW5zaXRpb25F
bmRzKGVsLCB0eXBlLCBjYik7XG5cdCAgICAgICAgfVxuXHQgICAgICB9KTtcblx0ICAgIH1cblx0
ICAgIGxlYXZlICYmIGxlYXZlKGVsLCBjYik7XG5cdCAgICBpZiAoIWV4cGVjdHNDU1MgJiYgIXVz
ZXJXYW50c0NvbnRyb2wpIHtcblx0ICAgICAgY2IoKTtcblx0ICAgIH1cblx0ICB9XG5cdH1cblx0
XG5cdGZ1bmN0aW9uIHJlc29sdmVUcmFuc2l0aW9uIChkZWYkJDEpIHtcblx0ICBpZiAoIWRlZiQk
MSkge1xuXHQgICAgcmV0dXJuXG5cdCAgfVxuXHQgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICov
XG5cdCAgaWYgKHR5cGVvZiBkZWYkJDEgPT09ICdvYmplY3QnKSB7XG5cdCAgICB2YXIgcmVzID0g
e307XG5cdCAgICBpZiAoZGVmJCQxLmNzcyAhPT0gZmFsc2UpIHtcblx0ICAgICAgZXh0ZW5kKHJl
cywgYXV0b0Nzc1RyYW5zaXRpb24oZGVmJCQxLm5hbWUgfHwgJ3YnKSk7XG5cdCAgICB9XG5cdCAg
ICBleHRlbmQocmVzLCBkZWYkJDEpO1xuXHQgICAgcmV0dXJuIHJlc1xuXHQgIH0gZWxzZSBpZiAo
dHlwZW9mIGRlZiQkMSA9PT0gJ3N0cmluZycpIHtcblx0ICAgIHJldHVybiBhdXRvQ3NzVHJhbnNp
dGlvbihkZWYkJDEpXG5cdCAgfVxuXHR9XG5cdFxuXHR2YXIgYXV0b0Nzc1RyYW5zaXRpb24gPSBj
YWNoZWQoZnVuY3Rpb24gKG5hbWUpIHtcblx0ICByZXR1cm4ge1xuXHQgICAgZW50ZXJDbGFzczog
KG5hbWUgKyBcIi1lbnRlclwiKSxcblx0ICAgIGxlYXZlQ2xhc3M6IChuYW1lICsgXCItbGVhdmVc
IiksXG5cdCAgICBhcHBlYXJDbGFzczogKG5hbWUgKyBcIi1lbnRlclwiKSxcblx0ICAgIGVudGVy
QWN0aXZlQ2xhc3M6IChuYW1lICsgXCItZW50ZXItYWN0aXZlXCIpLFxuXHQgICAgbGVhdmVBY3Rp
dmVDbGFzczogKG5hbWUgKyBcIi1sZWF2ZS1hY3RpdmVcIiksXG5cdCAgICBhcHBlYXJBY3RpdmVD
bGFzczogKG5hbWUgKyBcIi1lbnRlci1hY3RpdmVcIilcblx0ICB9XG5cdH0pO1xuXHRcblx0ZnVu
Y3Rpb24gb25jZSAoZm4pIHtcblx0ICB2YXIgY2FsbGVkID0gZmFsc2U7XG5cdCAgcmV0dXJuIGZ1
bmN0aW9uICgpIHtcblx0ICAgIGlmICghY2FsbGVkKSB7XG5cdCAgICAgIGNhbGxlZCA9IHRydWU7
XG5cdCAgICAgIGZuKCk7XG5cdCAgICB9XG5cdCAgfVxuXHR9XG5cdFxuXHR2YXIgdHJhbnNpdGlv
biA9IGluQnJvd3NlciA/IHtcblx0ICBjcmVhdGU6IGZ1bmN0aW9uIGNyZWF0ZSAoXywgdm5vZGUp
IHtcblx0ICAgIGlmICghdm5vZGUuZGF0YS5zaG93KSB7XG5cdCAgICAgIGVudGVyKHZub2RlKTtc
blx0ICAgIH1cblx0ICB9LFxuXHQgIHJlbW92ZTogZnVuY3Rpb24gcmVtb3ZlICh2bm9kZSwgcm0p
IHtcblx0ICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG5cdCAgICBpZiAoIXZub2RlLmRh
dGEuc2hvdykge1xuXHQgICAgICBsZWF2ZSh2bm9kZSwgcm0pO1xuXHQgICAgfSBlbHNlIHtcblx0
ICAgICAgcm0oKTtcblx0ICAgIH1cblx0ICB9XG5cdH0gOiB7fTtcblx0XG5cdHZhciBwbGF0Zm9y
bU1vZHVsZXMgPSBbXG5cdCAgYXR0cnMsXG5cdCAga2xhc3MsXG5cdCAgZXZlbnRzLFxuXHQgIGRv
bVByb3BzLFxuXHQgIHN0eWxlLFxuXHQgIHRyYW5zaXRpb25cblx0XTtcblx0XG5cdC8qICAqL1xu
XHRcblx0Ly8gdGhlIGRpcmVjdGl2ZSBtb2R1bGUgc2hvdWxkIGJlIGFwcGxpZWQgbGFzdCwgYWZ0
ZXIgYWxsXG5cdC8vIGJ1aWx0LWluIG1vZHVsZXMgaGF2ZSBiZWVuIGFwcGxpZWQuXG5cdHZhciBt
b2R1bGVzID0gcGxhdGZvcm1Nb2R1bGVzLmNvbmNhdChiYXNlTW9kdWxlcyk7XG5cdFxuXHR2YXIg
cGF0Y2gkMSA9IGNyZWF0ZVBhdGNoRnVuY3Rpb24oeyBub2RlT3BzOiBub2RlT3BzLCBtb2R1bGVz
OiBtb2R1bGVzIH0pO1xuXHRcblx0LyoqXG5cdCAqIE5vdCB0eXBlIGNoZWNraW5nIHRoaXMgZmls
ZSBiZWNhdXNlIGZsb3cgZG9lc24ndCBsaWtlIGF0dGFjaGluZ1xuXHQgKiBwcm9wZXJ0aWVzIHRv
IEVsZW1lbnRzLlxuXHQgKi9cblx0XG5cdHZhciBtb2RlbGFibGVUYWdSRSA9IC9eaW5wdXR8c2Vs
ZWN0fHRleHRhcmVhfHZ1ZS1jb21wb25lbnQtWzAtOV0rKC1bMC05YS16QS1aXy1dKik/JC87XG5c
dFxuXHQvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cblx0aWYgKGlzSUU5KSB7XG5cdCAgLy8gaHR0
cDovL3d3dy5tYXR0czQxMS5jb20vcG9zdC9pbnRlcm5ldC1leHBsb3Jlci05LW9uaW5wdXQvXG5c
dCAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc2VsZWN0aW9uY2hhbmdlJywgZnVuY3Rpb24g
KCkge1xuXHQgICAgdmFyIGVsID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcblx0ICAgIGlmIChl
bCAmJiBlbC52bW9kZWwpIHtcblx0ICAgICAgdHJpZ2dlcihlbCwgJ2lucHV0Jyk7XG5cdCAgICB9
XG5cdCAgfSk7XG5cdH1cblx0XG5cdHZhciBtb2RlbCA9IHtcblx0ICBpbnNlcnRlZDogZnVuY3Rp
b24gaW5zZXJ0ZWQgKGVsLCBiaW5kaW5nLCB2bm9kZSkge1xuXHQgICAgaWYgKGZhbHNlKSB7XG5c
dCAgICAgIGlmICghbW9kZWxhYmxlVGFnUkUudGVzdCh2bm9kZS50YWcpKSB7XG5cdCAgICAgICAg
d2Fybihcblx0ICAgICAgICAgIFwidi1tb2RlbCBpcyBub3Qgc3VwcG9ydGVkIG9uIGVsZW1lbnQg
dHlwZTogPFwiICsgKHZub2RlLnRhZykgKyBcIj4uIFwiICtcblx0ICAgICAgICAgICdJZiB5b3Ug
YXJlIHdvcmtpbmcgd2l0aCBjb250ZW50ZWRpdGFibGUsIGl0XFwncyByZWNvbW1lbmRlZCB0byAn
ICtcblx0ICAgICAgICAgICd3cmFwIGEgbGlicmFyeSBkZWRpY2F0ZWQgZm9yIHRoYXQgcHVycG9z
ZSBpbnNpZGUgYSBjdXN0b20gY29tcG9uZW50LicsXG5cdCAgICAgICAgICB2bm9kZS5jb250ZXh0
XG5cdCAgICAgICAgKTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgICAgaWYgKHZub2RlLnRhZyA9
PT0gJ3NlbGVjdCcpIHtcblx0ICAgICAgdmFyIGNiID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICAg
IHNldFNlbGVjdGVkKGVsLCBiaW5kaW5nLCB2bm9kZS5jb250ZXh0KTtcblx0ICAgICAgfTtcblx0
ICAgICAgY2IoKTtcblx0ICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG5cdCAgICAgIGlm
IChpc0lFIHx8IGlzRWRnZSkge1xuXHQgICAgICAgIHNldFRpbWVvdXQoY2IsIDApO1xuXHQgICAg
ICB9XG5cdCAgICB9IGVsc2UgaWYgKFxuXHQgICAgICAodm5vZGUudGFnID09PSAndGV4dGFyZWEn
IHx8IGVsLnR5cGUgPT09ICd0ZXh0JykgJiZcblx0ICAgICAgIWJpbmRpbmcubW9kaWZpZXJzLmxh
enlcblx0ICAgICkge1xuXHQgICAgICBpZiAoIWlzQW5kcm9pZCkge1xuXHQgICAgICAgIGVsLmFk
ZEV2ZW50TGlzdGVuZXIoJ2NvbXBvc2l0aW9uc3RhcnQnLCBvbkNvbXBvc2l0aW9uU3RhcnQpO1xu
XHQgICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ2NvbXBvc2l0aW9uZW5kJywgb25Db21wb3Np
dGlvbkVuZCk7XG5cdCAgICAgIH1cblx0ICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG5c
dCAgICAgIGlmIChpc0lFOSkge1xuXHQgICAgICAgIGVsLnZtb2RlbCA9IHRydWU7XG5cdCAgICAg
IH1cblx0ICAgIH1cblx0ICB9LFxuXHQgIGNvbXBvbmVudFVwZGF0ZWQ6IGZ1bmN0aW9uIGNvbXBv
bmVudFVwZGF0ZWQgKGVsLCBiaW5kaW5nLCB2bm9kZSkge1xuXHQgICAgaWYgKHZub2RlLnRhZyA9
PT0gJ3NlbGVjdCcpIHtcblx0ICAgICAgc2V0U2VsZWN0ZWQoZWwsIGJpbmRpbmcsIHZub2RlLmNv
bnRleHQpO1xuXHQgICAgICAvLyBpbiBjYXNlIHRoZSBvcHRpb25zIHJlbmRlcmVkIGJ5IHYtZm9y
IGhhdmUgY2hhbmdlZCxcblx0ICAgICAgLy8gaXQncyBwb3NzaWJsZSB0aGF0IHRoZSB2YWx1ZSBp
cyBvdXQtb2Ytc3luYyB3aXRoIHRoZSByZW5kZXJlZCBvcHRpb25zLlxuXHQgICAgICAvLyBkZXRl
Y3Qgc3VjaCBjYXNlcyBhbmQgZmlsdGVyIG91dCB2YWx1ZXMgdGhhdCBubyBsb25nZXIgaGFzIGEg
bWF0Y2hpbmdcblx0ICAgICAgLy8gb3B0aW9uIGluIHRoZSBET00uXG5cdCAgICAgIHZhciBuZWVk
UmVzZXQgPSBlbC5tdWx0aXBsZVxuXHQgICAgICAgID8gYmluZGluZy52YWx1ZS5zb21lKGZ1bmN0
aW9uICh2KSB7IHJldHVybiBoYXNOb01hdGNoaW5nT3B0aW9uKHYsIGVsLm9wdGlvbnMpOyB9KVxu
XHQgICAgICAgIDogYmluZGluZy52YWx1ZSAhPT0gYmluZGluZy5vbGRWYWx1ZSAmJiBoYXNOb01h
dGNoaW5nT3B0aW9uKGJpbmRpbmcudmFsdWUsIGVsLm9wdGlvbnMpO1xuXHQgICAgICBpZiAobmVl
ZFJlc2V0KSB7XG5cdCAgICAgICAgdHJpZ2dlcihlbCwgJ2NoYW5nZScpO1xuXHQgICAgICB9XG5c
dCAgICB9XG5cdCAgfVxuXHR9O1xuXHRcblx0ZnVuY3Rpb24gc2V0U2VsZWN0ZWQgKGVsLCBiaW5k
aW5nLCB2bSkge1xuXHQgIHZhciB2YWx1ZSA9IGJpbmRpbmcudmFsdWU7XG5cdCAgdmFyIGlzTXVs
dGlwbGUgPSBlbC5tdWx0aXBsZTtcblx0ICBpZiAoaXNNdWx0aXBsZSAmJiAhQXJyYXkuaXNBcnJh
eSh2YWx1ZSkpIHtcblx0ICAgIChcInByb2R1Y3Rpb25cIikgIT09ICdwcm9kdWN0aW9uJyAmJiB3
YXJuKFxuXHQgICAgICBcIjxzZWxlY3QgbXVsdGlwbGUgdi1tb2RlbD1cXFwiXCIgKyAoYmluZGlu
Zy5leHByZXNzaW9uKSArIFwiXFxcIj4gXCIgK1xuXHQgICAgICBcImV4cGVjdHMgYW4gQXJyYXkg
dmFsdWUgZm9yIGl0cyBiaW5kaW5nLCBidXQgZ290IFwiICsgKE9iamVjdC5wcm90b3R5cGUudG9T
dHJpbmcuY2FsbCh2YWx1ZSkuc2xpY2UoOCwgLTEpKSxcblx0ICAgICAgdm1cblx0ICAgICk7XG5c
dCAgICByZXR1cm5cblx0ICB9XG5cdCAgdmFyIHNlbGVjdGVkLCBvcHRpb247XG5cdCAgZm9yICh2
YXIgaSA9IDAsIGwgPSBlbC5vcHRpb25zLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuXHQgICAgb3B0
aW9uID0gZWwub3B0aW9uc1tpXTtcblx0ICAgIGlmIChpc011bHRpcGxlKSB7XG5cdCAgICAgIHNl
bGVjdGVkID0gbG9vc2VJbmRleE9mKHZhbHVlLCBnZXRWYWx1ZShvcHRpb24pKSA+IC0xO1xuXHQg
ICAgICBpZiAob3B0aW9uLnNlbGVjdGVkICE9PSBzZWxlY3RlZCkge1xuXHQgICAgICAgIG9wdGlv
bi5zZWxlY3RlZCA9IHNlbGVjdGVkO1xuXHQgICAgICB9XG5cdCAgICB9IGVsc2Uge1xuXHQgICAg
ICBpZiAobG9vc2VFcXVhbChnZXRWYWx1ZShvcHRpb24pLCB2YWx1ZSkpIHtcblx0ICAgICAgICBp
ZiAoZWwuc2VsZWN0ZWRJbmRleCAhPT0gaSkge1xuXHQgICAgICAgICAgZWwuc2VsZWN0ZWRJbmRl
eCA9IGk7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHJldHVyblxuXHQgICAgICB9XG5cdCAgICB9
XG5cdCAgfVxuXHQgIGlmICghaXNNdWx0aXBsZSkge1xuXHQgICAgZWwuc2VsZWN0ZWRJbmRleCA9
IC0xO1xuXHQgIH1cblx0fVxuXHRcblx0ZnVuY3Rpb24gaGFzTm9NYXRjaGluZ09wdGlvbiAodmFs
dWUsIG9wdGlvbnMpIHtcblx0ICBmb3IgKHZhciBpID0gMCwgbCA9IG9wdGlvbnMubGVuZ3RoOyBp
IDwgbDsgaSsrKSB7XG5cdCAgICBpZiAobG9vc2VFcXVhbChnZXRWYWx1ZShvcHRpb25zW2ldKSwg
dmFsdWUpKSB7XG5cdCAgICAgIHJldHVybiBmYWxzZVxuXHQgICAgfVxuXHQgIH1cblx0ICByZXR1
cm4gdHJ1ZVxuXHR9XG5cdFxuXHRmdW5jdGlvbiBnZXRWYWx1ZSAob3B0aW9uKSB7XG5cdCAgcmV0
dXJuICdfdmFsdWUnIGluIG9wdGlvblxuXHQgICAgPyBvcHRpb24uX3ZhbHVlXG5cdCAgICA6IG9w
dGlvbi52YWx1ZVxuXHR9XG5cdFxuXHRmdW5jdGlvbiBvbkNvbXBvc2l0aW9uU3RhcnQgKGUpIHtc
blx0ICBlLnRhcmdldC5jb21wb3NpbmcgPSB0cnVlO1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBvbkNv
bXBvc2l0aW9uRW5kIChlKSB7XG5cdCAgZS50YXJnZXQuY29tcG9zaW5nID0gZmFsc2U7XG5cdCAg
dHJpZ2dlcihlLnRhcmdldCwgJ2lucHV0Jyk7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIHRyaWdnZXIg
KGVsLCB0eXBlKSB7XG5cdCAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnSFRNTEV2ZW50
cycpO1xuXHQgIGUuaW5pdEV2ZW50KHR5cGUsIHRydWUsIHRydWUpO1xuXHQgIGVsLmRpc3BhdGNo
RXZlbnQoZSk7XG5cdH1cblx0XG5cdC8qICAqL1xuXHRcblx0Ly8gcmVjdXJzaXZlbHkgc2VhcmNo
IGZvciBwb3NzaWJsZSB0cmFuc2l0aW9uIGRlZmluZWQgaW5zaWRlIHRoZSBjb21wb25lbnQgcm9v
dFxuXHRmdW5jdGlvbiBsb2NhdGVOb2RlICh2bm9kZSkge1xuXHQgIHJldHVybiB2bm9kZS5jaGls
ZCAmJiAoIXZub2RlLmRhdGEgfHwgIXZub2RlLmRhdGEudHJhbnNpdGlvbilcblx0ICAgID8gbG9j
YXRlTm9kZSh2bm9kZS5jaGlsZC5fdm5vZGUpXG5cdCAgICA6IHZub2RlXG5cdH1cblx0XG5cdHZh
ciBzaG93ID0ge1xuXHQgIGJpbmQ6IGZ1bmN0aW9uIGJpbmQgKGVsLCByZWYsIHZub2RlKSB7XG5c
dCAgICB2YXIgdmFsdWUgPSByZWYudmFsdWU7XG5cdFxuXHQgICAgdm5vZGUgPSBsb2NhdGVOb2Rl
KHZub2RlKTtcblx0ICAgIHZhciB0cmFuc2l0aW9uID0gdm5vZGUuZGF0YSAmJiB2bm9kZS5kYXRh
LnRyYW5zaXRpb247XG5cdCAgICBpZiAodmFsdWUgJiYgdHJhbnNpdGlvbiAmJiAhaXNJRTkpIHtc
blx0ICAgICAgZW50ZXIodm5vZGUpO1xuXHQgICAgfVxuXHQgICAgdmFyIG9yaWdpbmFsRGlzcGxh
eSA9IGVsLnN0eWxlLmRpc3BsYXkgPT09ICdub25lJyA/ICcnIDogZWwuc3R5bGUuZGlzcGxheTtc
blx0ICAgIGVsLnN0eWxlLmRpc3BsYXkgPSB2YWx1ZSA/IG9yaWdpbmFsRGlzcGxheSA6ICdub25l
Jztcblx0ICAgIGVsLl9fdk9yaWdpbmFsRGlzcGxheSA9IG9yaWdpbmFsRGlzcGxheTtcblx0ICB9
LFxuXHQgIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlIChlbCwgcmVmLCB2bm9kZSkge1xuXHQgICAg
dmFyIHZhbHVlID0gcmVmLnZhbHVlO1xuXHQgICAgdmFyIG9sZFZhbHVlID0gcmVmLm9sZFZhbHVl
O1xuXHRcblx0ICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuXHQgICAgaWYgKHZhbHVlID09
PSBvbGRWYWx1ZSkgeyByZXR1cm4gfVxuXHQgICAgdm5vZGUgPSBsb2NhdGVOb2RlKHZub2RlKTtc
blx0ICAgIHZhciB0cmFuc2l0aW9uID0gdm5vZGUuZGF0YSAmJiB2bm9kZS5kYXRhLnRyYW5zaXRp
b247XG5cdCAgICBpZiAodHJhbnNpdGlvbiAmJiAhaXNJRTkpIHtcblx0ICAgICAgaWYgKHZhbHVl
KSB7XG5cdCAgICAgICAgZW50ZXIodm5vZGUpO1xuXHQgICAgICAgIGVsLnN0eWxlLmRpc3BsYXkg
PSBlbC5fX3ZPcmlnaW5hbERpc3BsYXk7XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgbGVh
dmUodm5vZGUsIGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgIGVsLnN0eWxlLmRpc3BsYXkgPSAn
bm9uZSc7XG5cdCAgICAgICAgfSk7XG5cdCAgICAgIH1cblx0ICAgIH0gZWxzZSB7XG5cdCAgICAg
IGVsLnN0eWxlLmRpc3BsYXkgPSB2YWx1ZSA/IGVsLl9fdk9yaWdpbmFsRGlzcGxheSA6ICdub25l
Jztcblx0ICAgIH1cblx0ICB9XG5cdH07XG5cdFxuXHR2YXIgcGxhdGZvcm1EaXJlY3RpdmVzID0g
e1xuXHQgIG1vZGVsOiBtb2RlbCxcblx0ICBzaG93OiBzaG93XG5cdH07XG5cdFxuXHQvKiAgKi9c
blx0XG5cdC8vIFByb3ZpZGVzIHRyYW5zaXRpb24gc3VwcG9ydCBmb3IgYSBzaW5nbGUgZWxlbWVu
dC9jb21wb25lbnQuXG5cdC8vIHN1cHBvcnRzIHRyYW5zaXRpb24gbW9kZSAob3V0LWluIC8gaW4t
b3V0KVxuXHRcblx0dmFyIHRyYW5zaXRpb25Qcm9wcyA9IHtcblx0ICBuYW1lOiBTdHJpbmcsXG5c
dCAgYXBwZWFyOiBCb29sZWFuLFxuXHQgIGNzczogQm9vbGVhbixcblx0ICBtb2RlOiBTdHJpbmcs
XG5cdCAgdHlwZTogU3RyaW5nLFxuXHQgIGVudGVyQ2xhc3M6IFN0cmluZyxcblx0ICBsZWF2ZUNs
YXNzOiBTdHJpbmcsXG5cdCAgZW50ZXJBY3RpdmVDbGFzczogU3RyaW5nLFxuXHQgIGxlYXZlQWN0
aXZlQ2xhc3M6IFN0cmluZyxcblx0ICBhcHBlYXJDbGFzczogU3RyaW5nLFxuXHQgIGFwcGVhckFj
dGl2ZUNsYXNzOiBTdHJpbmdcblx0fTtcblx0XG5cdC8vIGluIGNhc2UgdGhlIGNoaWxkIGlzIGFs
c28gYW4gYWJzdHJhY3QgY29tcG9uZW50LCBlLmcuIDxrZWVwLWFsaXZlPlxuXHQvLyB3ZSB3YW50
IHRvIHJlY3Vyc2l2ZWx5IHJldHJpZXZlIHRoZSByZWFsIGNvbXBvbmVudCB0byBiZSByZW5kZXJl
ZFxuXHRmdW5jdGlvbiBnZXRSZWFsQ2hpbGQgKHZub2RlKSB7XG5cdCAgdmFyIGNvbXBPcHRpb25z
ID0gdm5vZGUgJiYgdm5vZGUuY29tcG9uZW50T3B0aW9ucztcblx0ICBpZiAoY29tcE9wdGlvbnMg
JiYgY29tcE9wdGlvbnMuQ3Rvci5vcHRpb25zLmFic3RyYWN0KSB7XG5cdCAgICByZXR1cm4gZ2V0
UmVhbENoaWxkKGdldEZpcnN0Q29tcG9uZW50Q2hpbGQoY29tcE9wdGlvbnMuY2hpbGRyZW4pKVxu
XHQgIH0gZWxzZSB7XG5cdCAgICByZXR1cm4gdm5vZGVcblx0ICB9XG5cdH1cblx0XG5cdGZ1bmN0
aW9uIGV4dHJhY3RUcmFuc2l0aW9uRGF0YSAoY29tcCkge1xuXHQgIHZhciBkYXRhID0ge307XG5c
dCAgdmFyIG9wdGlvbnMgPSBjb21wLiRvcHRpb25zO1xuXHQgIC8vIHByb3BzXG5cdCAgZm9yICh2
YXIga2V5IGluIG9wdGlvbnMucHJvcHNEYXRhKSB7XG5cdCAgICBkYXRhW2tleV0gPSBjb21wW2tl
eV07XG5cdCAgfVxuXHQgIC8vIGV2ZW50cy5cblx0ICAvLyBleHRyYWN0IGxpc3RlbmVycyBhbmQg
cGFzcyB0aGVtIGRpcmVjdGx5IHRvIHRoZSB0cmFuc2l0aW9uIG1ldGhvZHNcblx0ICB2YXIgbGlz
dGVuZXJzID0gb3B0aW9ucy5fcGFyZW50TGlzdGVuZXJzO1xuXHQgIGZvciAodmFyIGtleSQxIGlu
IGxpc3RlbmVycykge1xuXHQgICAgZGF0YVtjYW1lbGl6ZShrZXkkMSldID0gbGlzdGVuZXJzW2tl
eSQxXS5mbjtcblx0ICB9XG5cdCAgcmV0dXJuIGRhdGFcblx0fVxuXHRcblx0ZnVuY3Rpb24gcGxh
Y2Vob2xkZXIgKGgsIHJhd0NoaWxkKSB7XG5cdCAgcmV0dXJuIC9cXGQta2VlcC1hbGl2ZSQvLnRl
c3QocmF3Q2hpbGQudGFnKVxuXHQgICAgPyBoKCdrZWVwLWFsaXZlJylcblx0ICAgIDogbnVsbFxu
XHR9XG5cdFxuXHRmdW5jdGlvbiBoYXNQYXJlbnRUcmFuc2l0aW9uICh2bm9kZSkge1xuXHQgIHdo
aWxlICgodm5vZGUgPSB2bm9kZS5wYXJlbnQpKSB7XG5cdCAgICBpZiAodm5vZGUuZGF0YS50cmFu
c2l0aW9uKSB7XG5cdCAgICAgIHJldHVybiB0cnVlXG5cdCAgICB9XG5cdCAgfVxuXHR9XG5cdFxu
XHR2YXIgVHJhbnNpdGlvbiA9IHtcblx0ICBuYW1lOiAndHJhbnNpdGlvbicsXG5cdCAgcHJvcHM6
IHRyYW5zaXRpb25Qcm9wcyxcblx0ICBhYnN0cmFjdDogdHJ1ZSxcblx0ICByZW5kZXI6IGZ1bmN0
aW9uIHJlbmRlciAoaCkge1xuXHQgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cdFxuXHQgICAgdmFy
IGNoaWxkcmVuID0gdGhpcy4kc2xvdHMuZGVmYXVsdDtcblx0ICAgIGlmICghY2hpbGRyZW4pIHtc
blx0ICAgICAgcmV0dXJuXG5cdCAgICB9XG5cdFxuXHQgICAgLy8gZmlsdGVyIG91dCB0ZXh0IG5v
ZGVzIChwb3NzaWJsZSB3aGl0ZXNwYWNlcylcblx0ICAgIGNoaWxkcmVuID0gY2hpbGRyZW4uZmls
dGVyKGZ1bmN0aW9uIChjKSB7IHJldHVybiBjLnRhZzsgfSk7XG5cdCAgICAvKiBpc3RhbmJ1bCBp
Z25vcmUgaWYgKi9cblx0ICAgIGlmICghY2hpbGRyZW4ubGVuZ3RoKSB7XG5cdCAgICAgIHJldHVy
blxuXHQgICAgfVxuXHRcblx0ICAgIC8vIHdhcm4gbXVsdGlwbGUgZWxlbWVudHNcblx0ICAgIGlm
IChmYWxzZSkge1xuXHQgICAgICB3YXJuKFxuXHQgICAgICAgICc8dHJhbnNpdGlvbj4gY2FuIG9u
bHkgYmUgdXNlZCBvbiBhIHNpbmdsZSBlbGVtZW50LiBVc2UgJyArXG5cdCAgICAgICAgJzx0cmFu
c2l0aW9uLWdyb3VwPiBmb3IgbGlzdHMuJyxcblx0ICAgICAgICB0aGlzLiRwYXJlbnRcblx0ICAg
ICAgKTtcblx0ICAgIH1cblx0XG5cdCAgICB2YXIgbW9kZSA9IHRoaXMubW9kZTtcblx0XG5cdCAg
ICAvLyB3YXJuIGludmFsaWQgbW9kZVxuXHQgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgIHdhcm4o
XG5cdCAgICAgICAgJ2ludmFsaWQgPHRyYW5zaXRpb24+IG1vZGU6ICcgKyBtb2RlLFxuXHQgICAg
ICAgIHRoaXMuJHBhcmVudFxuXHQgICAgICApO1xuXHQgICAgfVxuXHRcblx0ICAgIHZhciByYXdD
aGlsZCA9IGNoaWxkcmVuWzBdO1xuXHRcblx0ICAgIC8vIGlmIHRoaXMgaXMgYSBjb21wb25lbnQg
cm9vdCBub2RlIGFuZCB0aGUgY29tcG9uZW50J3Ncblx0ICAgIC8vIHBhcmVudCBjb250YWluZXIg
bm9kZSBhbHNvIGhhcyB0cmFuc2l0aW9uLCBza2lwLlxuXHQgICAgaWYgKGhhc1BhcmVudFRyYW5z
aXRpb24odGhpcy4kdm5vZGUpKSB7XG5cdCAgICAgIHJldHVybiByYXdDaGlsZFxuXHQgICAgfVxu
XHRcblx0ICAgIC8vIGFwcGx5IHRyYW5zaXRpb24gZGF0YSB0byBjaGlsZFxuXHQgICAgLy8gdXNl
IGdldFJlYWxDaGlsZCgpIHRvIGlnbm9yZSBhYnN0cmFjdCBjb21wb25lbnRzIGUuZy4ga2VlcC1h
bGl2ZVxuXHQgICAgdmFyIGNoaWxkID0gZ2V0UmVhbENoaWxkKHJhd0NoaWxkKTtcblx0ICAgIC8q
IGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuXHQgICAgaWYgKCFjaGlsZCkge1xuXHQgICAgICByZXR1
cm4gcmF3Q2hpbGRcblx0ICAgIH1cblx0XG5cdCAgICBpZiAodGhpcy5fbGVhdmluZykge1xuXHQg
ICAgICByZXR1cm4gcGxhY2Vob2xkZXIoaCwgcmF3Q2hpbGQpXG5cdCAgICB9XG5cdFxuXHQgICAg
dmFyIGtleSA9IGNoaWxkLmtleSA9IGNoaWxkLmtleSA9PSBudWxsIHx8IGNoaWxkLmlzU3RhdGlj
XG5cdCAgICAgID8gKFwiX192XCIgKyAoY2hpbGQudGFnICsgdGhpcy5fdWlkKSArIFwiX19cIilc
blx0ICAgICAgOiBjaGlsZC5rZXk7XG5cdCAgICB2YXIgZGF0YSA9IChjaGlsZC5kYXRhIHx8IChj
aGlsZC5kYXRhID0ge30pKS50cmFuc2l0aW9uID0gZXh0cmFjdFRyYW5zaXRpb25EYXRhKHRoaXMp
O1xuXHQgICAgdmFyIG9sZFJhd0NoaWxkID0gdGhpcy5fdm5vZGU7XG5cdCAgICB2YXIgb2xkQ2hp
bGQgPSBnZXRSZWFsQ2hpbGQob2xkUmF3Q2hpbGQpO1xuXHRcblx0ICAgIC8vIG1hcmsgdi1zaG93
XG5cdCAgICAvLyBzbyB0aGF0IHRoZSB0cmFuc2l0aW9uIG1vZHVsZSBjYW4gaGFuZCBvdmVyIHRo
ZSBjb250cm9sIHRvIHRoZSBkaXJlY3RpdmVcblx0ICAgIGlmIChjaGlsZC5kYXRhLmRpcmVjdGl2
ZXMgJiYgY2hpbGQuZGF0YS5kaXJlY3RpdmVzLnNvbWUoZnVuY3Rpb24gKGQpIHsgcmV0dXJuIGQu
bmFtZSA9PT0gJ3Nob3cnOyB9KSkge1xuXHQgICAgICBjaGlsZC5kYXRhLnNob3cgPSB0cnVlO1xu
XHQgICAgfVxuXHRcblx0ICAgIGlmIChvbGRDaGlsZCAmJiBvbGRDaGlsZC5kYXRhICYmIG9sZENo
aWxkLmtleSAhPT0ga2V5KSB7XG5cdCAgICAgIC8vIHJlcGxhY2Ugb2xkIGNoaWxkIHRyYW5zaXRp
b24gZGF0YSB3aXRoIGZyZXNoIG9uZVxuXHQgICAgICAvLyBpbXBvcnRhbnQgZm9yIGR5bmFtaWMg
dHJhbnNpdGlvbnMhXG5cdCAgICAgIHZhciBvbGREYXRhID0gb2xkQ2hpbGQuZGF0YS50cmFuc2l0
aW9uID0gZXh0ZW5kKHt9LCBkYXRhKTtcblx0XG5cdCAgICAgIC8vIGhhbmRsZSB0cmFuc2l0aW9u
IG1vZGVcblx0ICAgICAgaWYgKG1vZGUgPT09ICdvdXQtaW4nKSB7XG5cdCAgICAgICAgLy8gcmV0
dXJuIHBsYWNlaG9sZGVyIG5vZGUgYW5kIHF1ZXVlIHVwZGF0ZSB3aGVuIGxlYXZlIGZpbmlzaGVz
XG5cdCAgICAgICAgdGhpcy5fbGVhdmluZyA9IHRydWU7XG5cdCAgICAgICAgbWVyZ2VWTm9kZUhv
b2sob2xkRGF0YSwgJ2FmdGVyTGVhdmUnLCBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICB0aGlz
JDEuX2xlYXZpbmcgPSBmYWxzZTtcblx0ICAgICAgICAgIHRoaXMkMS4kZm9yY2VVcGRhdGUoKTtc
blx0ICAgICAgICB9LCBrZXkpO1xuXHQgICAgICAgIHJldHVybiBwbGFjZWhvbGRlcihoLCByYXdD
aGlsZClcblx0ICAgICAgfSBlbHNlIGlmIChtb2RlID09PSAnaW4tb3V0Jykge1xuXHQgICAgICAg
IHZhciBkZWxheWVkTGVhdmU7XG5cdCAgICAgICAgdmFyIHBlcmZvcm1MZWF2ZSA9IGZ1bmN0aW9u
ICgpIHsgZGVsYXllZExlYXZlKCk7IH07XG5cdCAgICAgICAgbWVyZ2VWTm9kZUhvb2soZGF0YSwg
J2FmdGVyRW50ZXInLCBwZXJmb3JtTGVhdmUsIGtleSk7XG5cdCAgICAgICAgbWVyZ2VWTm9kZUhv
b2soZGF0YSwgJ2VudGVyQ2FuY2VsbGVkJywgcGVyZm9ybUxlYXZlLCBrZXkpO1xuXHQgICAgICAg
IG1lcmdlVk5vZGVIb29rKG9sZERhdGEsICdkZWxheUxlYXZlJywgZnVuY3Rpb24gKGxlYXZlKSB7
XG5cdCAgICAgICAgICBkZWxheWVkTGVhdmUgPSBsZWF2ZTtcblx0ICAgICAgICB9LCBrZXkpO1xu
XHQgICAgICB9XG5cdCAgICB9XG5cdFxuXHQgICAgcmV0dXJuIHJhd0NoaWxkXG5cdCAgfVxuXHR9
O1xuXHRcblx0LyogICovXG5cdFxuXHQvLyBQcm92aWRlcyB0cmFuc2l0aW9uIHN1cHBvcnQgZm9y
IGxpc3QgaXRlbXMuXG5cdC8vIHN1cHBvcnRzIG1vdmUgdHJhbnNpdGlvbnMgdXNpbmcgdGhlIEZM
SVAgdGVjaG5pcXVlLlxuXHRcblx0Ly8gQmVjYXVzZSB0aGUgdmRvbSdzIGNoaWxkcmVuIHVwZGF0
ZSBhbGdvcml0aG0gaXMgXCJ1bnN0YWJsZVwiIC0gaS5lLlxuXHQvLyBpdCBkb2Vzbid0IGd1YXJh
bnRlZSB0aGUgcmVsYXRpdmUgcG9zaXRpb25pbmcgb2YgcmVtb3ZlZCBlbGVtZW50cyxcblx0Ly8g
d2UgZm9yY2UgdHJhbnNpdGlvbi1ncm91cCB0byB1cGRhdGUgaXRzIGNoaWxkcmVuIGludG8gdHdv
IHBhc3Nlczpcblx0Ly8gaW4gdGhlIGZpcnN0IHBhc3MsIHdlIHJlbW92ZSBhbGwgbm9kZXMgdGhh
dCBuZWVkIHRvIGJlIHJlbW92ZWQsXG5cdC8vIHRyaWdnZXJpbmcgdGhlaXIgbGVhdmluZyB0cmFu
c2l0aW9uOyBpbiB0aGUgc2Vjb25kIHBhc3MsIHdlIGluc2VydC9tb3ZlXG5cdC8vIGludG8gdGhl
IGZpbmFsIGRpc2lyZWQgc3RhdGUuIFRoaXMgd2F5IGluIHRoZSBzZWNvbmQgcGFzcyByZW1vdmVk
XG5cdC8vIG5vZGVzIHdpbGwgcmVtYWluIHdoZXJlIHRoZXkgc2hvdWxkIGJlLlxuXHRcblx0dmFy
IHByb3BzID0gZXh0ZW5kKHtcblx0ICB0YWc6IFN0cmluZyxcblx0ICBtb3ZlQ2xhc3M6IFN0cmlu
Z1xuXHR9LCB0cmFuc2l0aW9uUHJvcHMpO1xuXHRcblx0ZGVsZXRlIHByb3BzLm1vZGU7XG5cdFxu
XHR2YXIgVHJhbnNpdGlvbkdyb3VwID0ge1xuXHQgIHByb3BzOiBwcm9wcyxcblx0XG5cdCAgcmVu
ZGVyOiBmdW5jdGlvbiByZW5kZXIgKGgpIHtcblx0ICAgIHZhciB0YWcgPSB0aGlzLnRhZyB8fCB0
aGlzLiR2bm9kZS5kYXRhLnRhZyB8fCAnc3Bhbic7XG5cdCAgICB2YXIgbWFwID0gT2JqZWN0LmNy
ZWF0ZShudWxsKTtcblx0ICAgIHZhciBwcmV2Q2hpbGRyZW4gPSB0aGlzLnByZXZDaGlsZHJlbiA9
IHRoaXMuY2hpbGRyZW47XG5cdCAgICB2YXIgcmF3Q2hpbGRyZW4gPSB0aGlzLiRzbG90cy5kZWZh
dWx0IHx8IFtdO1xuXHQgICAgdmFyIGNoaWxkcmVuID0gdGhpcy5jaGlsZHJlbiA9IFtdO1xuXHQg
ICAgdmFyIHRyYW5zaXRpb25EYXRhID0gZXh0cmFjdFRyYW5zaXRpb25EYXRhKHRoaXMpO1xuXHRc
blx0ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmF3Q2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcblx0
ICAgICAgdmFyIGMgPSByYXdDaGlsZHJlbltpXTtcblx0ICAgICAgaWYgKGMudGFnKSB7XG5cdCAg
ICAgICAgaWYgKGMua2V5ICE9IG51bGwgJiYgU3RyaW5nKGMua2V5KS5pbmRleE9mKCdfX3ZsaXN0
JykgIT09IDApIHtcblx0ICAgICAgICAgIGNoaWxkcmVuLnB1c2goYyk7XG5cdCAgICAgICAgICBt
YXBbYy5rZXldID0gY1xuXHQgICAgICAgICAgOyhjLmRhdGEgfHwgKGMuZGF0YSA9IHt9KSkudHJh
bnNpdGlvbiA9IHRyYW5zaXRpb25EYXRhO1xuXHQgICAgICAgIH0gZWxzZSBpZiAoZmFsc2UpIHtc
blx0ICAgICAgICAgIHZhciBvcHRzID0gYy5jb21wb25lbnRPcHRpb25zO1xuXHQgICAgICAgICAg
dmFyIG5hbWUgPSBvcHRzXG5cdCAgICAgICAgICAgID8gKG9wdHMuQ3Rvci5vcHRpb25zLm5hbWUg
fHwgb3B0cy50YWcpXG5cdCAgICAgICAgICAgIDogYy50YWc7XG5cdCAgICAgICAgICB3YXJuKChc
Ijx0cmFuc2l0aW9uLWdyb3VwPiBjaGlsZHJlbiBtdXN0IGJlIGtleWVkOiA8XCIgKyBuYW1lICsg
XCI+XCIpKTtcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgIH1cblx0XG5cdCAgICBpZiAo
cHJldkNoaWxkcmVuKSB7XG5cdCAgICAgIHZhciBrZXB0ID0gW107XG5cdCAgICAgIHZhciByZW1v
dmVkID0gW107XG5cdCAgICAgIGZvciAodmFyIGkkMSA9IDA7IGkkMSA8IHByZXZDaGlsZHJlbi5s
ZW5ndGg7IGkkMSsrKSB7XG5cdCAgICAgICAgdmFyIGMkMSA9IHByZXZDaGlsZHJlbltpJDFdO1xu
XHQgICAgICAgIGMkMS5kYXRhLnRyYW5zaXRpb24gPSB0cmFuc2l0aW9uRGF0YTtcblx0ICAgICAg
ICBjJDEuZGF0YS5wb3MgPSBjJDEuZWxtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXHQgICAg
ICAgIGlmIChtYXBbYyQxLmtleV0pIHtcblx0ICAgICAgICAgIGtlcHQucHVzaChjJDEpO1xuXHQg
ICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICByZW1vdmVkLnB1c2goYyQxKTtcblx0ICAgICAg
ICB9XG5cdCAgICAgIH1cblx0ICAgICAgdGhpcy5rZXB0ID0gaCh0YWcsIG51bGwsIGtlcHQpO1xu
XHQgICAgICB0aGlzLnJlbW92ZWQgPSByZW1vdmVkO1xuXHQgICAgfVxuXHRcblx0ICAgIHJldHVy
biBoKHRhZywgbnVsbCwgY2hpbGRyZW4pXG5cdCAgfSxcblx0XG5cdCAgYmVmb3JlVXBkYXRlOiBm
dW5jdGlvbiBiZWZvcmVVcGRhdGUgKCkge1xuXHQgICAgLy8gZm9yY2UgcmVtb3ZpbmcgcGFzc1xu
XHQgICAgdGhpcy5fX3BhdGNoX18oXG5cdCAgICAgIHRoaXMuX3Zub2RlLFxuXHQgICAgICB0aGlz
LmtlcHQsXG5cdCAgICAgIGZhbHNlLCAvLyBoeWRyYXRpbmdcblx0ICAgICAgdHJ1ZSAvLyByZW1v
dmVPbmx5ICghaW1wb3J0YW50LCBhdm9pZHMgdW5uZWNlc3NhcnkgbW92ZXMpXG5cdCAgICApO1xu
XHQgICAgdGhpcy5fdm5vZGUgPSB0aGlzLmtlcHQ7XG5cdCAgfSxcblx0XG5cdCAgdXBkYXRlZDog
ZnVuY3Rpb24gdXBkYXRlZCAoKSB7XG5cdCAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLnByZXZDaGls
ZHJlbjtcblx0ICAgIHZhciBtb3ZlQ2xhc3MgPSB0aGlzLm1vdmVDbGFzcyB8fCAoKHRoaXMubmFt
ZSB8fCAndicpICsgJy1tb3ZlJyk7XG5cdCAgICBpZiAoIWNoaWxkcmVuLmxlbmd0aCB8fCAhdGhp
cy5oYXNNb3ZlKGNoaWxkcmVuWzBdLmVsbSwgbW92ZUNsYXNzKSkge1xuXHQgICAgICByZXR1cm5c
blx0ICAgIH1cblx0XG5cdCAgICAvLyB3ZSBkaXZpZGUgdGhlIHdvcmsgaW50byB0aHJlZSBsb29w
cyB0byBhdm9pZCBtaXhpbmcgRE9NIHJlYWRzIGFuZCB3cml0ZXNcblx0ICAgIC8vIGluIGVhY2gg
aXRlcmF0aW9uIC0gd2hpY2ggaGVscHMgcHJldmVudCBsYXlvdXQgdGhyYXNoaW5nLlxuXHQgICAg
Y2hpbGRyZW4uZm9yRWFjaChjYWxsUGVuZGluZ0Nicyk7XG5cdCAgICBjaGlsZHJlbi5mb3JFYWNo
KHJlY29yZFBvc2l0aW9uKTtcblx0ICAgIGNoaWxkcmVuLmZvckVhY2goYXBwbHlUcmFuc2xhdGlv
bik7XG5cdFxuXHQgICAgLy8gZm9yY2UgcmVmbG93IHRvIHB1dCBldmVyeXRoaW5nIGluIHBvc2l0
aW9uXG5cdCAgICB2YXIgZiA9IGRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0OyAvLyBlc2xpbnQt
ZGlzYWJsZS1saW5lXG5cdFxuXHQgICAgY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiAoYykge1xu
XHQgICAgICBpZiAoYy5kYXRhLm1vdmVkKSB7XG5cdCAgICAgICAgdmFyIGVsID0gYy5lbG07XG5c
dCAgICAgICAgdmFyIHMgPSBlbC5zdHlsZTtcblx0ICAgICAgICBhZGRUcmFuc2l0aW9uQ2xhc3Mo
ZWwsIG1vdmVDbGFzcyk7XG5cdCAgICAgICAgcy50cmFuc2Zvcm0gPSBzLldlYmtpdFRyYW5zZm9y
bSA9IHMudHJhbnNpdGlvbkR1cmF0aW9uID0gJyc7XG5cdCAgICAgICAgZWwuYWRkRXZlbnRMaXN0
ZW5lcih0cmFuc2l0aW9uRW5kRXZlbnQsIGVsLl9tb3ZlQ2IgPSBmdW5jdGlvbiBjYiAoZSkge1xu
XHQgICAgICAgICAgaWYgKCFlIHx8IC90cmFuc2Zvcm0kLy50ZXN0KGUucHJvcGVydHlOYW1lKSkg
e1xuXHQgICAgICAgICAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKHRyYW5zaXRpb25FbmRFdmVu
dCwgY2IpO1xuXHQgICAgICAgICAgICBlbC5fbW92ZUNiID0gbnVsbDtcblx0ICAgICAgICAgICAg
cmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGVsLCBtb3ZlQ2xhc3MpO1xuXHQgICAgICAgICAgfVxuXHQg
ICAgICAgIH0pO1xuXHQgICAgICB9XG5cdCAgICB9KTtcblx0ICB9LFxuXHRcblx0ICBtZXRob2Rz
OiB7XG5cdCAgICBoYXNNb3ZlOiBmdW5jdGlvbiBoYXNNb3ZlIChlbCwgbW92ZUNsYXNzKSB7XG5c
dCAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuXHQgICAgICBpZiAoIWhhc1RyYW5zaXRp
b24pIHtcblx0ICAgICAgICByZXR1cm4gZmFsc2Vcblx0ICAgICAgfVxuXHQgICAgICBpZiAodGhp
cy5faGFzTW92ZSAhPSBudWxsKSB7XG5cdCAgICAgICAgcmV0dXJuIHRoaXMuX2hhc01vdmVcblx0
ICAgICAgfVxuXHQgICAgICBhZGRUcmFuc2l0aW9uQ2xhc3MoZWwsIG1vdmVDbGFzcyk7XG5cdCAg
ICAgIHZhciBpbmZvID0gZ2V0VHJhbnNpdGlvbkluZm8oZWwpO1xuXHQgICAgICByZW1vdmVUcmFu
c2l0aW9uQ2xhc3MoZWwsIG1vdmVDbGFzcyk7XG5cdCAgICAgIHJldHVybiAodGhpcy5faGFzTW92
ZSA9IGluZm8uaGFzVHJhbnNmb3JtKVxuXHQgICAgfVxuXHQgIH1cblx0fTtcblx0XG5cdGZ1bmN0
aW9uIGNhbGxQZW5kaW5nQ2JzIChjKSB7XG5cdCAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG5c
dCAgaWYgKGMuZWxtLl9tb3ZlQ2IpIHtcblx0ICAgIGMuZWxtLl9tb3ZlQ2IoKTtcblx0ICB9XG5c
dCAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG5cdCAgaWYgKGMuZWxtLl9lbnRlckNiKSB7XG5c
dCAgICBjLmVsbS5fZW50ZXJDYigpO1xuXHQgIH1cblx0fVxuXHRcblx0ZnVuY3Rpb24gcmVjb3Jk
UG9zaXRpb24gKGMpIHtcblx0ICBjLmRhdGEubmV3UG9zID0gYy5lbG0uZ2V0Qm91bmRpbmdDbGll
bnRSZWN0KCk7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIGFwcGx5VHJhbnNsYXRpb24gKGMpIHtcblx0
ICB2YXIgb2xkUG9zID0gYy5kYXRhLnBvcztcblx0ICB2YXIgbmV3UG9zID0gYy5kYXRhLm5ld1Bv
cztcblx0ICB2YXIgZHggPSBvbGRQb3MubGVmdCAtIG5ld1Bvcy5sZWZ0O1xuXHQgIHZhciBkeSA9
IG9sZFBvcy50b3AgLSBuZXdQb3MudG9wO1xuXHQgIGlmIChkeCB8fCBkeSkge1xuXHQgICAgYy5k
YXRhLm1vdmVkID0gdHJ1ZTtcblx0ICAgIHZhciBzID0gYy5lbG0uc3R5bGU7XG5cdCAgICBzLnRy
YW5zZm9ybSA9IHMuV2Via2l0VHJhbnNmb3JtID0gXCJ0cmFuc2xhdGUoXCIgKyBkeCArIFwicHgs
XCIgKyBkeSArIFwicHgpXCI7XG5cdCAgICBzLnRyYW5zaXRpb25EdXJhdGlvbiA9ICcwcyc7XG5c
dCAgfVxuXHR9XG5cdFxuXHR2YXIgcGxhdGZvcm1Db21wb25lbnRzID0ge1xuXHQgIFRyYW5zaXRp
b246IFRyYW5zaXRpb24sXG5cdCAgVHJhbnNpdGlvbkdyb3VwOiBUcmFuc2l0aW9uR3JvdXBcblx0
fTtcblx0XG5cdC8qICAqL1xuXHRcblx0Ly8gaW5zdGFsbCBwbGF0Zm9ybSBzcGVjaWZpYyB1dGls
c1xuXHRWdWUkMy5jb25maWcuaXNVbmtub3duRWxlbWVudCA9IGlzVW5rbm93bkVsZW1lbnQ7XG5c
dFZ1ZSQzLmNvbmZpZy5pc1Jlc2VydmVkVGFnID0gaXNSZXNlcnZlZFRhZztcblx0VnVlJDMuY29u
ZmlnLmdldFRhZ05hbWVzcGFjZSA9IGdldFRhZ05hbWVzcGFjZTtcblx0VnVlJDMuY29uZmlnLm11
c3RVc2VQcm9wID0gbXVzdFVzZVByb3A7XG5cdFxuXHQvLyBpbnN0YWxsIHBsYXRmb3JtIHJ1bnRp
bWUgZGlyZWN0aXZlcyAmIGNvbXBvbmVudHNcblx0ZXh0ZW5kKFZ1ZSQzLm9wdGlvbnMuZGlyZWN0
aXZlcywgcGxhdGZvcm1EaXJlY3RpdmVzKTtcblx0ZXh0ZW5kKFZ1ZSQzLm9wdGlvbnMuY29tcG9u
ZW50cywgcGxhdGZvcm1Db21wb25lbnRzKTtcblx0XG5cdC8vIGluc3RhbGwgcGxhdGZvcm0gcGF0
Y2ggZnVuY3Rpb25cblx0VnVlJDMucHJvdG90eXBlLl9fcGF0Y2hfXyA9IGluQnJvd3NlciA/IHBh
dGNoJDEgOiBub29wO1xuXHRcblx0Ly8gd3JhcCBtb3VudFxuXHRWdWUkMy5wcm90b3R5cGUuJG1v
dW50ID0gZnVuY3Rpb24gKFxuXHQgIGVsLFxuXHQgIGh5ZHJhdGluZ1xuXHQpIHtcblx0ICBlbCA9
IGVsICYmIGluQnJvd3NlciA/IHF1ZXJ5KGVsKSA6IHVuZGVmaW5lZDtcblx0ICByZXR1cm4gdGhp
cy5fbW91bnQoZWwsIGh5ZHJhdGluZylcblx0fTtcblx0XG5cdC8vIGRldnRvb2xzIGdsb2JhbCBo
b29rXG5cdC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5cdHNldFRpbWVvdXQoZnVuY3Rpb24g
KCkge1xuXHQgIGlmIChjb25maWcuZGV2dG9vbHMpIHtcblx0ICAgIGlmIChkZXZ0b29scykge1xu
XHQgICAgICBkZXZ0b29scy5lbWl0KCdpbml0JywgVnVlJDMpO1xuXHQgICAgfSBlbHNlIGlmIChc
blx0ICAgICAgZmFsc2Vcblx0ICAgICkge1xuXHQgICAgICBjb25zb2xlLmxvZyhcblx0ICAgICAg
ICAnRG93bmxvYWQgdGhlIFZ1ZSBEZXZ0b29scyBmb3IgYSBiZXR0ZXIgZGV2ZWxvcG1lbnQgZXhw
ZXJpZW5jZTpcXG4nICtcblx0ICAgICAgICAnaHR0cHM6Ly9naXRodWIuY29tL3Z1ZWpzL3Z1ZS1k
ZXZ0b29scydcblx0ICAgICAgKTtcblx0ICAgIH1cblx0ICB9XG5cdH0sIDApO1xuXHRcblx0Lyog
ICovXG5cdFxuXHQvLyBjaGVjayB3aGV0aGVyIGN1cnJlbnQgYnJvd3NlciBlbmNvZGVzIGEgY2hh
ciBpbnNpZGUgYXR0cmlidXRlIHZhbHVlc1xuXHRmdW5jdGlvbiBzaG91bGREZWNvZGUgKGNvbnRl
bnQsIGVuY29kZWQpIHtcblx0ICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2
Jyk7XG5cdCAgZGl2LmlubmVySFRNTCA9IFwiPGRpdiBhPVxcXCJcIiArIGNvbnRlbnQgKyBcIlxc
XCI+XCI7XG5cdCAgcmV0dXJuIGRpdi5pbm5lckhUTUwuaW5kZXhPZihlbmNvZGVkKSA+IDBcblx0
fVxuXHRcblx0Ly8gIzM2NjNcblx0Ly8gSUUgZW5jb2RlcyBuZXdsaW5lcyBpbnNpZGUgYXR0cmli
dXRlIHZhbHVlcyB3aGlsZSBvdGhlciBicm93c2VycyBkb24ndFxuXHR2YXIgc2hvdWxkRGVjb2Rl
TmV3bGluZXMgPSBpbkJyb3dzZXIgPyBzaG91bGREZWNvZGUoJ1xcbicsICcmIzEwOycpIDogZmFs
c2U7XG5cdFxuXHQvKiAgKi9cblx0XG5cdHZhciBkZWNvZGVyO1xuXHRcblx0ZnVuY3Rpb24gZGVj
b2RlIChodG1sKSB7XG5cdCAgZGVjb2RlciA9IGRlY29kZXIgfHwgZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnZGl2Jyk7XG5cdCAgZGVjb2Rlci5pbm5lckhUTUwgPSBodG1sO1xuXHQgIHJldHVybiBk
ZWNvZGVyLnRleHRDb250ZW50XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBOb3QgdHlwZS1jaGVja2lu
ZyB0aGlzIGZpbGUgYmVjYXVzZSBpdCdzIG1vc3RseSB2ZW5kb3IgY29kZS5cblx0ICovXG5cdFxu
XHQvKiFcblx0ICogSFRNTCBQYXJzZXIgQnkgSm9obiBSZXNpZyAoZWpvaG4ub3JnKVxuXHQgKiBN
b2RpZmllZCBieSBKdXJpeSBcImthbmdheFwiIFpheXRzZXZcblx0ICogT3JpZ2luYWwgY29kZSBi
eSBFcmlrIEFydmlkc3NvbiwgTW96aWxsYSBQdWJsaWMgTGljZW5zZVxuXHQgKiBodHRwOi8vZXJp
ay5lYWUubmV0L3NpbXBsZWh0bWxwYXJzZXIvc2ltcGxlaHRtbHBhcnNlci5qc1xuXHQgKi9cblx0
XG5cdC8vIFJlZ3VsYXIgRXhwcmVzc2lvbnMgZm9yIHBhcnNpbmcgdGFncyBhbmQgYXR0cmlidXRl
c1xuXHR2YXIgc2luZ2xlQXR0cklkZW50aWZpZXIgPSAvKFteXFxzXCInPD4vPV0rKS87XG5cdHZh
ciBzaW5nbGVBdHRyQXNzaWduID0gLyg/Oj0pLztcblx0dmFyIHNpbmdsZUF0dHJWYWx1ZXMgPSBb
XG5cdCAgLy8gYXR0ciB2YWx1ZSBkb3VibGUgcXVvdGVzXG5cdCAgL1wiKFteXCJdKilcIisvLnNv
dXJjZSxcblx0ICAvLyBhdHRyIHZhbHVlLCBzaW5nbGUgcXVvdGVzXG5cdCAgLycoW14nXSopJysv
LnNvdXJjZSxcblx0ICAvLyBhdHRyIHZhbHVlLCBubyBxdW90ZXNcblx0ICAvKFteXFxzXCInPTw+
YF0rKS8uc291cmNlXG5cdF07XG5cdHZhciBhdHRyaWJ1dGUgPSBuZXcgUmVnRXhwKFxuXHQgICde
XFxcXHMqJyArIHNpbmdsZUF0dHJJZGVudGlmaWVyLnNvdXJjZSArXG5cdCAgJyg/OlxcXFxzKign
ICsgc2luZ2xlQXR0ckFzc2lnbi5zb3VyY2UgKyAnKScgK1xuXHQgICdcXFxccyooPzonICsgc2lu
Z2xlQXR0clZhbHVlcy5qb2luKCd8JykgKyAnKSk/J1xuXHQpO1xuXHRcblx0Ly8gY291bGQgdXNl
IGh0dHBzOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14bWwtbmFtZXMtMTk5OTAxMTQvI05ULVFO
YW1lXG5cdC8vIGJ1dCBmb3IgVnVlIHRlbXBsYXRlcyB3ZSBjYW4gZW5mb3JjZSBhIHNpbXBsZSBj
aGFyc2V0XG5cdHZhciBuY25hbWUgPSAnW2EtekEtWl9dW1xcXFx3XFxcXC1cXFxcLl0qJztcblx0
dmFyIHFuYW1lQ2FwdHVyZSA9ICcoKD86JyArIG5jbmFtZSArICdcXFxcOik/JyArIG5jbmFtZSAr
ICcpJztcblx0dmFyIHN0YXJ0VGFnT3BlbiA9IG5ldyBSZWdFeHAoJ148JyArIHFuYW1lQ2FwdHVy
ZSk7XG5cdHZhciBzdGFydFRhZ0Nsb3NlID0gL15cXHMqKFxcLz8pPi87XG5cdHZhciBlbmRUYWcg
PSBuZXcgUmVnRXhwKCdePFxcXFwvJyArIHFuYW1lQ2FwdHVyZSArICdbXj5dKj4nKTtcblx0dmFy
IGRvY3R5cGUgPSAvXjwhRE9DVFlQRSBbXj5dKz4vaTtcblx0dmFyIGNvbW1lbnQgPSAvXjwhLS0v
O1xuXHR2YXIgY29uZGl0aW9uYWxDb21tZW50ID0gL148IVxcWy87XG5cdFxuXHR2YXIgSVNfUkVH
RVhfQ0FQVFVSSU5HX0JST0tFTiA9IGZhbHNlO1xuXHQneCcucmVwbGFjZSgveCguKT8vZywgZnVu
Y3Rpb24gKG0sIGcpIHtcblx0ICBJU19SRUdFWF9DQVBUVVJJTkdfQlJPS0VOID0gZyA9PT0gJyc7
XG5cdH0pO1xuXHRcblx0Ly8gU3BlY2lhbCBFbGVtZW50cyAoY2FuIGNvbnRhaW4gYW55dGhpbmcp
XG5cdHZhciBpc1NjcmlwdE9yU3R5bGUgPSBtYWtlTWFwKCdzY3JpcHQsc3R5bGUnLCB0cnVlKTtc
blx0dmFyIGhhc0xhbmcgPSBmdW5jdGlvbiAoYXR0cikgeyByZXR1cm4gYXR0ci5uYW1lID09PSAn
bGFuZycgJiYgYXR0ci52YWx1ZSAhPT0gJ2h0bWwnOyB9O1xuXHR2YXIgaXNTcGVjaWFsVGFnID0g
ZnVuY3Rpb24gKHRhZywgaXNTRkMsIHN0YWNrKSB7XG5cdCAgaWYgKGlzU2NyaXB0T3JTdHlsZSh0
YWcpKSB7XG5cdCAgICByZXR1cm4gdHJ1ZVxuXHQgIH1cblx0ICBpZiAoaXNTRkMgJiYgc3RhY2su
bGVuZ3RoID09PSAxKSB7XG5cdCAgICAvLyB0b3AtbGV2ZWwgdGVtcGxhdGUgdGhhdCBoYXMgbm8g
cHJlLXByb2Nlc3NvclxuXHQgICAgaWYgKHRhZyA9PT0gJ3RlbXBsYXRlJyAmJiAhc3RhY2tbMF0u
YXR0cnMuc29tZShoYXNMYW5nKSkge1xuXHQgICAgICByZXR1cm4gZmFsc2Vcblx0ICAgIH0gZWxz
ZSB7XG5cdCAgICAgIHJldHVybiB0cnVlXG5cdCAgICB9XG5cdCAgfVxuXHQgIHJldHVybiBmYWxz
ZVxuXHR9O1xuXHRcblx0dmFyIHJlQ2FjaGUgPSB7fTtcblx0XG5cdHZhciBsdFJFID0gLyZsdDsv
Zztcblx0dmFyIGd0UkUgPSAvJmd0Oy9nO1xuXHR2YXIgbmxSRSA9IC8mIzEwOy9nO1xuXHR2YXIg
YW1wUkUgPSAvJmFtcDsvZztcblx0dmFyIHF1b3RlUkUgPSAvJnF1b3Q7L2c7XG5cdFxuXHRmdW5j
dGlvbiBkZWNvZGVBdHRyICh2YWx1ZSwgc2hvdWxkRGVjb2RlTmV3bGluZXMpIHtcblx0ICBpZiAo
c2hvdWxkRGVjb2RlTmV3bGluZXMpIHtcblx0ICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZShubFJF
LCAnXFxuJyk7XG5cdCAgfVxuXHQgIHJldHVybiB2YWx1ZVxuXHQgICAgLnJlcGxhY2UobHRSRSwg
JzwnKVxuXHQgICAgLnJlcGxhY2UoZ3RSRSwgJz4nKVxuXHQgICAgLnJlcGxhY2UoYW1wUkUsICcm
Jylcblx0ICAgIC5yZXBsYWNlKHF1b3RlUkUsICdcIicpXG5cdH1cblx0XG5cdGZ1bmN0aW9uIHBh
cnNlSFRNTCAoaHRtbCwgb3B0aW9ucykge1xuXHQgIHZhciBzdGFjayA9IFtdO1xuXHQgIHZhciBl
eHBlY3RIVE1MID0gb3B0aW9ucy5leHBlY3RIVE1MO1xuXHQgIHZhciBpc1VuYXJ5VGFnJCQxID0g
b3B0aW9ucy5pc1VuYXJ5VGFnIHx8IG5vO1xuXHQgIHZhciBpbmRleCA9IDA7XG5cdCAgdmFyIGxh
c3QsIGxhc3RUYWc7XG5cdCAgd2hpbGUgKGh0bWwpIHtcblx0ICAgIGxhc3QgPSBodG1sO1xuXHQg
ICAgLy8gTWFrZSBzdXJlIHdlJ3JlIG5vdCBpbiBhIHNjcmlwdCBvciBzdHlsZSBlbGVtZW50XG5c
dCAgICBpZiAoIWxhc3RUYWcgfHwgIWlzU3BlY2lhbFRhZyhsYXN0VGFnLCBvcHRpb25zLnNmYywg
c3RhY2spKSB7XG5cdCAgICAgIHZhciB0ZXh0RW5kID0gaHRtbC5pbmRleE9mKCc8Jyk7XG5cdCAg
ICAgIGlmICh0ZXh0RW5kID09PSAwKSB7XG5cdCAgICAgICAgLy8gQ29tbWVudDpcblx0ICAgICAg
ICBpZiAoY29tbWVudC50ZXN0KGh0bWwpKSB7XG5cdCAgICAgICAgICB2YXIgY29tbWVudEVuZCA9
IGh0bWwuaW5kZXhPZignLS0+Jyk7XG5cdFxuXHQgICAgICAgICAgaWYgKGNvbW1lbnRFbmQgPj0g
MCkge1xuXHQgICAgICAgICAgICBhZHZhbmNlKGNvbW1lbnRFbmQgKyAzKTtcblx0ICAgICAgICAg
ICAgY29udGludWVcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdFxuXHQgICAgICAgIC8v
IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29uZGl0aW9uYWxfY29tbWVudCNEb3dubGV2
ZWwtcmV2ZWFsZWRfY29uZGl0aW9uYWxfY29tbWVudFxuXHQgICAgICAgIGlmIChjb25kaXRpb25h
bENvbW1lbnQudGVzdChodG1sKSkge1xuXHQgICAgICAgICAgdmFyIGNvbmRpdGlvbmFsRW5kID0g
aHRtbC5pbmRleE9mKCddPicpO1xuXHRcblx0ICAgICAgICAgIGlmIChjb25kaXRpb25hbEVuZCA+
PSAwKSB7XG5cdCAgICAgICAgICAgIGFkdmFuY2UoY29uZGl0aW9uYWxFbmQgKyAyKTtcblx0ICAg
ICAgICAgICAgY29udGludWVcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdFxuXHQgICAg
ICAgIC8vIERvY3R5cGU6XG5cdCAgICAgICAgdmFyIGRvY3R5cGVNYXRjaCA9IGh0bWwubWF0Y2go
ZG9jdHlwZSk7XG5cdCAgICAgICAgaWYgKGRvY3R5cGVNYXRjaCkge1xuXHQgICAgICAgICAgYWR2
YW5jZShkb2N0eXBlTWF0Y2hbMF0ubGVuZ3RoKTtcblx0ICAgICAgICAgIGNvbnRpbnVlXG5cdCAg
ICAgICAgfVxuXHRcblx0ICAgICAgICAvLyBFbmQgdGFnOlxuXHQgICAgICAgIHZhciBlbmRUYWdN
YXRjaCA9IGh0bWwubWF0Y2goZW5kVGFnKTtcblx0ICAgICAgICBpZiAoZW5kVGFnTWF0Y2gpIHtc
blx0ICAgICAgICAgIHZhciBjdXJJbmRleCA9IGluZGV4O1xuXHQgICAgICAgICAgYWR2YW5jZShl
bmRUYWdNYXRjaFswXS5sZW5ndGgpO1xuXHQgICAgICAgICAgcGFyc2VFbmRUYWcoZW5kVGFnTWF0
Y2hbMF0sIGVuZFRhZ01hdGNoWzFdLCBjdXJJbmRleCwgaW5kZXgpO1xuXHQgICAgICAgICAgY29u
dGludWVcblx0ICAgICAgICB9XG5cdFxuXHQgICAgICAgIC8vIFN0YXJ0IHRhZzpcblx0ICAgICAg
ICB2YXIgc3RhcnRUYWdNYXRjaCA9IHBhcnNlU3RhcnRUYWcoKTtcblx0ICAgICAgICBpZiAoc3Rh
cnRUYWdNYXRjaCkge1xuXHQgICAgICAgICAgaGFuZGxlU3RhcnRUYWcoc3RhcnRUYWdNYXRjaCk7
XG5cdCAgICAgICAgICBjb250aW51ZVxuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHRcblx0ICAg
ICAgdmFyIHRleHQgPSAodm9pZCAwKSwgcmVzdCQxID0gKHZvaWQgMCksIG5leHQgPSAodm9pZCAw
KTtcblx0ICAgICAgaWYgKHRleHRFbmQgPiAwKSB7XG5cdCAgICAgICAgcmVzdCQxID0gaHRtbC5z
bGljZSh0ZXh0RW5kKTtcblx0ICAgICAgICB3aGlsZSAoXG5cdCAgICAgICAgICAhZW5kVGFnLnRl
c3QocmVzdCQxKSAmJlxuXHQgICAgICAgICAgIXN0YXJ0VGFnT3Blbi50ZXN0KHJlc3QkMSkgJiZc
blx0ICAgICAgICAgICFjb21tZW50LnRlc3QocmVzdCQxKSAmJlxuXHQgICAgICAgICAgIWNvbmRp
dGlvbmFsQ29tbWVudC50ZXN0KHJlc3QkMSlcblx0ICAgICAgICApIHtcblx0ICAgICAgICAgIC8v
IDwgaW4gcGxhaW4gdGV4dCwgYmUgZm9yZ2l2aW5nIGFuZCB0cmVhdCBpdCBhcyB0ZXh0XG5cdCAg
ICAgICAgICBuZXh0ID0gcmVzdCQxLmluZGV4T2YoJzwnLCAxKTtcblx0ICAgICAgICAgIGlmIChu
ZXh0IDwgMCkgeyBicmVhayB9XG5cdCAgICAgICAgICB0ZXh0RW5kICs9IG5leHQ7XG5cdCAgICAg
ICAgICByZXN0JDEgPSBodG1sLnNsaWNlKHRleHRFbmQpO1xuXHQgICAgICAgIH1cblx0ICAgICAg
ICB0ZXh0ID0gaHRtbC5zdWJzdHJpbmcoMCwgdGV4dEVuZCk7XG5cdCAgICAgICAgYWR2YW5jZSh0
ZXh0RW5kKTtcblx0ICAgICAgfVxuXHRcblx0ICAgICAgaWYgKHRleHRFbmQgPCAwKSB7XG5cdCAg
ICAgICAgdGV4dCA9IGh0bWw7XG5cdCAgICAgICAgaHRtbCA9ICcnO1xuXHQgICAgICB9XG5cdFxu
XHQgICAgICBpZiAob3B0aW9ucy5jaGFycyAmJiB0ZXh0KSB7XG5cdCAgICAgICAgb3B0aW9ucy5j
aGFycyh0ZXh0KTtcblx0ICAgICAgfVxuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgdmFyIHN0YWNr
ZWRUYWcgPSBsYXN0VGFnLnRvTG93ZXJDYXNlKCk7XG5cdCAgICAgIHZhciByZVN0YWNrZWRUYWcg
PSByZUNhY2hlW3N0YWNrZWRUYWddIHx8IChyZUNhY2hlW3N0YWNrZWRUYWddID0gbmV3IFJlZ0V4
cCgnKFtcXFxcc1xcXFxTXSo/KSg8LycgKyBzdGFja2VkVGFnICsgJ1tePl0qPiknLCAnaScpKTtc
blx0ICAgICAgdmFyIGVuZFRhZ0xlbmd0aCA9IDA7XG5cdCAgICAgIHZhciByZXN0ID0gaHRtbC5y
ZXBsYWNlKHJlU3RhY2tlZFRhZywgZnVuY3Rpb24gKGFsbCwgdGV4dCwgZW5kVGFnKSB7XG5cdCAg
ICAgICAgZW5kVGFnTGVuZ3RoID0gZW5kVGFnLmxlbmd0aDtcblx0ICAgICAgICBpZiAoc3RhY2tl
ZFRhZyAhPT0gJ3NjcmlwdCcgJiYgc3RhY2tlZFRhZyAhPT0gJ3N0eWxlJyAmJiBzdGFja2VkVGFn
ICE9PSAnbm9zY3JpcHQnKSB7XG5cdCAgICAgICAgICB0ZXh0ID0gdGV4dFxuXHQgICAgICAgICAg
ICAucmVwbGFjZSgvPCEtLShbXFxzXFxTXSo/KS0tPi9nLCAnJDEnKVxuXHQgICAgICAgICAgICAu
cmVwbGFjZSgvPCFcXFtDREFUQVxcWyhbXFxzXFxTXSo/KV1dPi9nLCAnJDEnKTtcblx0ICAgICAg
ICB9XG5cdCAgICAgICAgaWYgKG9wdGlvbnMuY2hhcnMpIHtcblx0ICAgICAgICAgIG9wdGlvbnMu
Y2hhcnModGV4dCk7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHJldHVybiAnJ1xuXHQgICAgICB9
KTtcblx0ICAgICAgaW5kZXggKz0gaHRtbC5sZW5ndGggLSByZXN0Lmxlbmd0aDtcblx0ICAgICAg
aHRtbCA9IHJlc3Q7XG5cdCAgICAgIHBhcnNlRW5kVGFnKCc8LycgKyBzdGFja2VkVGFnICsgJz4n
LCBzdGFja2VkVGFnLCBpbmRleCAtIGVuZFRhZ0xlbmd0aCwgaW5kZXgpO1xuXHQgICAgfVxuXHRc
blx0ICAgIGlmIChodG1sID09PSBsYXN0ICYmIG9wdGlvbnMuY2hhcnMpIHtcblx0ICAgICAgb3B0
aW9ucy5jaGFycyhodG1sKTtcblx0ICAgICAgYnJlYWtcblx0ICAgIH1cblx0ICB9XG5cdFxuXHQg
IC8vIENsZWFuIHVwIGFueSByZW1haW5pbmcgdGFnc1xuXHQgIHBhcnNlRW5kVGFnKCk7XG5cdFxu
XHQgIGZ1bmN0aW9uIGFkdmFuY2UgKG4pIHtcblx0ICAgIGluZGV4ICs9IG47XG5cdCAgICBodG1s
ID0gaHRtbC5zdWJzdHJpbmcobik7XG5cdCAgfVxuXHRcblx0ICBmdW5jdGlvbiBwYXJzZVN0YXJ0
VGFnICgpIHtcblx0ICAgIHZhciBzdGFydCA9IGh0bWwubWF0Y2goc3RhcnRUYWdPcGVuKTtcblx0
ICAgIGlmIChzdGFydCkge1xuXHQgICAgICB2YXIgbWF0Y2ggPSB7XG5cdCAgICAgICAgdGFnTmFt
ZTogc3RhcnRbMV0sXG5cdCAgICAgICAgYXR0cnM6IFtdLFxuXHQgICAgICAgIHN0YXJ0OiBpbmRl
eFxuXHQgICAgICB9O1xuXHQgICAgICBhZHZhbmNlKHN0YXJ0WzBdLmxlbmd0aCk7XG5cdCAgICAg
IHZhciBlbmQsIGF0dHI7XG5cdCAgICAgIHdoaWxlICghKGVuZCA9IGh0bWwubWF0Y2goc3RhcnRU
YWdDbG9zZSkpICYmIChhdHRyID0gaHRtbC5tYXRjaChhdHRyaWJ1dGUpKSkge1xuXHQgICAgICAg
IGFkdmFuY2UoYXR0clswXS5sZW5ndGgpO1xuXHQgICAgICAgIG1hdGNoLmF0dHJzLnB1c2goYXR0
cik7XG5cdCAgICAgIH1cblx0ICAgICAgaWYgKGVuZCkge1xuXHQgICAgICAgIG1hdGNoLnVuYXJ5
U2xhc2ggPSBlbmRbMV07XG5cdCAgICAgICAgYWR2YW5jZShlbmRbMF0ubGVuZ3RoKTtcblx0ICAg
ICAgICBtYXRjaC5lbmQgPSBpbmRleDtcblx0ICAgICAgICByZXR1cm4gbWF0Y2hcblx0ICAgICAg
fVxuXHQgICAgfVxuXHQgIH1cblx0XG5cdCAgZnVuY3Rpb24gaGFuZGxlU3RhcnRUYWcgKG1hdGNo
KSB7XG5cdCAgICB2YXIgdGFnTmFtZSA9IG1hdGNoLnRhZ05hbWU7XG5cdCAgICB2YXIgdW5hcnlT
bGFzaCA9IG1hdGNoLnVuYXJ5U2xhc2g7XG5cdFxuXHQgICAgaWYgKGV4cGVjdEhUTUwpIHtcblx0
ICAgICAgaWYgKGxhc3RUYWcgPT09ICdwJyAmJiBpc05vblBocmFzaW5nVGFnKHRhZ05hbWUpKSB7
XG5cdCAgICAgICAgcGFyc2VFbmRUYWcoJycsIGxhc3RUYWcpO1xuXHQgICAgICB9XG5cdCAgICAg
IGlmIChjYW5CZUxlZnRPcGVuVGFnKHRhZ05hbWUpICYmIGxhc3RUYWcgPT09IHRhZ05hbWUpIHtc
blx0ICAgICAgICBwYXJzZUVuZFRhZygnJywgdGFnTmFtZSk7XG5cdCAgICAgIH1cblx0ICAgIH1c
blx0XG5cdCAgICB2YXIgdW5hcnkgPSBpc1VuYXJ5VGFnJCQxKHRhZ05hbWUpIHx8IHRhZ05hbWUg
PT09ICdodG1sJyAmJiBsYXN0VGFnID09PSAnaGVhZCcgfHwgISF1bmFyeVNsYXNoO1xuXHRcblx0
ICAgIHZhciBsID0gbWF0Y2guYXR0cnMubGVuZ3RoO1xuXHQgICAgdmFyIGF0dHJzID0gbmV3IEFy
cmF5KGwpO1xuXHQgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIHtcblx0ICAgICAgdmFy
IGFyZ3MgPSBtYXRjaC5hdHRyc1tpXTtcblx0ICAgICAgLy8gaGFja2lzaCB3b3JrIGFyb3VuZCBG
RiBidWcgaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY5Nzc4
XG5cdCAgICAgIGlmIChJU19SRUdFWF9DQVBUVVJJTkdfQlJPS0VOICYmIGFyZ3NbMF0uaW5kZXhP
ZignXCJcIicpID09PSAtMSkge1xuXHQgICAgICAgIGlmIChhcmdzWzNdID09PSAnJykgeyBkZWxl
dGUgYXJnc1szXTsgfVxuXHQgICAgICAgIGlmIChhcmdzWzRdID09PSAnJykgeyBkZWxldGUgYXJn
c1s0XTsgfVxuXHQgICAgICAgIGlmIChhcmdzWzVdID09PSAnJykgeyBkZWxldGUgYXJnc1s1XTsg
fVxuXHQgICAgICB9XG5cdCAgICAgIHZhciB2YWx1ZSA9IGFyZ3NbM10gfHwgYXJnc1s0XSB8fCBh
cmdzWzVdIHx8ICcnO1xuXHQgICAgICBhdHRyc1tpXSA9IHtcblx0ICAgICAgICBuYW1lOiBhcmdz
WzFdLFxuXHQgICAgICAgIHZhbHVlOiBkZWNvZGVBdHRyKFxuXHQgICAgICAgICAgdmFsdWUsXG5c
dCAgICAgICAgICBvcHRpb25zLnNob3VsZERlY29kZU5ld2xpbmVzXG5cdCAgICAgICAgKVxuXHQg
ICAgICB9O1xuXHQgICAgfVxuXHRcblx0ICAgIGlmICghdW5hcnkpIHtcblx0ICAgICAgc3RhY2su
cHVzaCh7IHRhZzogdGFnTmFtZSwgYXR0cnM6IGF0dHJzIH0pO1xuXHQgICAgICBsYXN0VGFnID0g
dGFnTmFtZTtcblx0ICAgICAgdW5hcnlTbGFzaCA9ICcnO1xuXHQgICAgfVxuXHRcblx0ICAgIGlm
IChvcHRpb25zLnN0YXJ0KSB7XG5cdCAgICAgIG9wdGlvbnMuc3RhcnQodGFnTmFtZSwgYXR0cnMs
IHVuYXJ5LCBtYXRjaC5zdGFydCwgbWF0Y2guZW5kKTtcblx0ICAgIH1cblx0ICB9XG5cdFxuXHQg
IGZ1bmN0aW9uIHBhcnNlRW5kVGFnICh0YWcsIHRhZ05hbWUsIHN0YXJ0LCBlbmQpIHtcblx0ICAg
IHZhciBwb3M7XG5cdCAgICBpZiAoc3RhcnQgPT0gbnVsbCkgeyBzdGFydCA9IGluZGV4OyB9XG5c
dCAgICBpZiAoZW5kID09IG51bGwpIHsgZW5kID0gaW5kZXg7IH1cblx0XG5cdCAgICAvLyBGaW5k
IHRoZSBjbG9zZXN0IG9wZW5lZCB0YWcgb2YgdGhlIHNhbWUgdHlwZVxuXHQgICAgaWYgKHRhZ05h
bWUpIHtcblx0ICAgICAgdmFyIG5lZWRsZSA9IHRhZ05hbWUudG9Mb3dlckNhc2UoKTtcblx0ICAg
ICAgZm9yIChwb3MgPSBzdGFjay5sZW5ndGggLSAxOyBwb3MgPj0gMDsgcG9zLS0pIHtcblx0ICAg
ICAgICBpZiAoc3RhY2tbcG9zXS50YWcudG9Mb3dlckNhc2UoKSA9PT0gbmVlZGxlKSB7XG5cdCAg
ICAgICAgICBicmVha1xuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgfSBlbHNlIHtcblx0
ICAgICAgLy8gSWYgbm8gdGFnIG5hbWUgaXMgcHJvdmlkZWQsIGNsZWFuIHNob3Bcblx0ICAgICAg
cG9zID0gMDtcblx0ICAgIH1cblx0XG5cdCAgICBpZiAocG9zID49IDApIHtcblx0ICAgICAgLy8g
Q2xvc2UgYWxsIHRoZSBvcGVuIGVsZW1lbnRzLCB1cCB0aGUgc3RhY2tcblx0ICAgICAgZm9yICh2
YXIgaSA9IHN0YWNrLmxlbmd0aCAtIDE7IGkgPj0gcG9zOyBpLS0pIHtcblx0ICAgICAgICBpZiAo
b3B0aW9ucy5lbmQpIHtcblx0ICAgICAgICAgIG9wdGlvbnMuZW5kKHN0YWNrW2ldLnRhZywgc3Rh
cnQsIGVuZCk7XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdFxuXHQgICAgICAvLyBSZW1vdmUg
dGhlIG9wZW4gZWxlbWVudHMgZnJvbSB0aGUgc3RhY2tcblx0ICAgICAgc3RhY2subGVuZ3RoID0g
cG9zO1xuXHQgICAgICBsYXN0VGFnID0gcG9zICYmIHN0YWNrW3BvcyAtIDFdLnRhZztcblx0ICAg
IH0gZWxzZSBpZiAodGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnYnInKSB7XG5cdCAgICAgIGlm
IChvcHRpb25zLnN0YXJ0KSB7XG5cdCAgICAgICAgb3B0aW9ucy5zdGFydCh0YWdOYW1lLCBbXSwg
dHJ1ZSwgc3RhcnQsIGVuZCk7XG5cdCAgICAgIH1cblx0ICAgIH0gZWxzZSBpZiAodGFnTmFtZS50
b0xvd2VyQ2FzZSgpID09PSAncCcpIHtcblx0ICAgICAgaWYgKG9wdGlvbnMuc3RhcnQpIHtcblx0
ICAgICAgICBvcHRpb25zLnN0YXJ0KHRhZ05hbWUsIFtdLCBmYWxzZSwgc3RhcnQsIGVuZCk7XG5c
dCAgICAgIH1cblx0ICAgICAgaWYgKG9wdGlvbnMuZW5kKSB7XG5cdCAgICAgICAgb3B0aW9ucy5l
bmQodGFnTmFtZSwgc3RhcnQsIGVuZCk7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9XG5cdH1c
blx0XG5cdC8qICAqL1xuXHRcblx0ZnVuY3Rpb24gcGFyc2VGaWx0ZXJzIChleHApIHtcblx0ICB2
YXIgaW5TaW5nbGUgPSBmYWxzZTtcblx0ICB2YXIgaW5Eb3VibGUgPSBmYWxzZTtcblx0ICB2YXIg
aW5UZW1wbGF0ZVN0cmluZyA9IGZhbHNlO1xuXHQgIHZhciBpblJlZ2V4ID0gZmFsc2U7XG5cdCAg
dmFyIGN1cmx5ID0gMDtcblx0ICB2YXIgc3F1YXJlID0gMDtcblx0ICB2YXIgcGFyZW4gPSAwO1xu
XHQgIHZhciBsYXN0RmlsdGVySW5kZXggPSAwO1xuXHQgIHZhciBjLCBwcmV2LCBpLCBleHByZXNz
aW9uLCBmaWx0ZXJzO1xuXHRcblx0ICBmb3IgKGkgPSAwOyBpIDwgZXhwLmxlbmd0aDsgaSsrKSB7
XG5cdCAgICBwcmV2ID0gYztcblx0ICAgIGMgPSBleHAuY2hhckNvZGVBdChpKTtcblx0ICAgIGlm
IChpblNpbmdsZSkge1xuXHQgICAgICBpZiAoYyA9PT0gMHgyNyAmJiBwcmV2ICE9PSAweDVDKSB7
IGluU2luZ2xlID0gZmFsc2U7IH1cblx0ICAgIH0gZWxzZSBpZiAoaW5Eb3VibGUpIHtcblx0ICAg
ICAgaWYgKGMgPT09IDB4MjIgJiYgcHJldiAhPT0gMHg1QykgeyBpbkRvdWJsZSA9IGZhbHNlOyB9
XG5cdCAgICB9IGVsc2UgaWYgKGluVGVtcGxhdGVTdHJpbmcpIHtcblx0ICAgICAgaWYgKGMgPT09
IDB4NjAgJiYgcHJldiAhPT0gMHg1QykgeyBpblRlbXBsYXRlU3RyaW5nID0gZmFsc2U7IH1cblx0
ICAgIH0gZWxzZSBpZiAoaW5SZWdleCkge1xuXHQgICAgICBpZiAoYyA9PT0gMHgyZiAmJiBwcmV2
ICE9PSAweDVDKSB7IGluUmVnZXggPSBmYWxzZTsgfVxuXHQgICAgfSBlbHNlIGlmIChcblx0ICAg
ICAgYyA9PT0gMHg3QyAmJiAvLyBwaXBlXG5cdCAgICAgIGV4cC5jaGFyQ29kZUF0KGkgKyAxKSAh
PT0gMHg3QyAmJlxuXHQgICAgICBleHAuY2hhckNvZGVBdChpIC0gMSkgIT09IDB4N0MgJiZcblx0
ICAgICAgIWN1cmx5ICYmICFzcXVhcmUgJiYgIXBhcmVuXG5cdCAgICApIHtcblx0ICAgICAgaWYg
KGV4cHJlc3Npb24gPT09IHVuZGVmaW5lZCkge1xuXHQgICAgICAgIC8vIGZpcnN0IGZpbHRlciwg
ZW5kIG9mIGV4cHJlc3Npb25cblx0ICAgICAgICBsYXN0RmlsdGVySW5kZXggPSBpICsgMTtcblx0
ICAgICAgICBleHByZXNzaW9uID0gZXhwLnNsaWNlKDAsIGkpLnRyaW0oKTtcblx0ICAgICAgfSBl
bHNlIHtcblx0ICAgICAgICBwdXNoRmlsdGVyKCk7XG5cdCAgICAgIH1cblx0ICAgIH0gZWxzZSB7
XG5cdCAgICAgIHN3aXRjaCAoYykge1xuXHQgICAgICAgIGNhc2UgMHgyMjogaW5Eb3VibGUgPSB0
cnVlOyBicmVhayAgICAgICAgIC8vIFwiXG5cdCAgICAgICAgY2FzZSAweDI3OiBpblNpbmdsZSA9
IHRydWU7IGJyZWFrICAgICAgICAgLy8gJ1xuXHQgICAgICAgIGNhc2UgMHg2MDogaW5UZW1wbGF0
ZVN0cmluZyA9IHRydWU7IGJyZWFrIC8vIGBcblx0ICAgICAgICBjYXNlIDB4MmY6IGluUmVnZXgg
PSB0cnVlOyBicmVhayAgICAgICAgICAvLyAvXG5cdCAgICAgICAgY2FzZSAweDI4OiBwYXJlbisr
OyBicmVhayAgICAgICAgICAgICAgICAgLy8gKFxuXHQgICAgICAgIGNhc2UgMHgyOTogcGFyZW4t
LTsgYnJlYWsgICAgICAgICAgICAgICAgIC8vIClcblx0ICAgICAgICBjYXNlIDB4NUI6IHNxdWFy
ZSsrOyBicmVhayAgICAgICAgICAgICAgICAvLyBbXG5cdCAgICAgICAgY2FzZSAweDVEOiBzcXVh
cmUtLTsgYnJlYWsgICAgICAgICAgICAgICAgLy8gXVxuXHQgICAgICAgIGNhc2UgMHg3QjogY3Vy
bHkrKzsgYnJlYWsgICAgICAgICAgICAgICAgIC8vIHtcblx0ICAgICAgICBjYXNlIDB4N0Q6IGN1
cmx5LS07IGJyZWFrICAgICAgICAgICAgICAgICAvLyB9XG5cdCAgICAgIH1cblx0ICAgIH1cblx0
ICB9XG5cdFxuXHQgIGlmIChleHByZXNzaW9uID09PSB1bmRlZmluZWQpIHtcblx0ICAgIGV4cHJl
c3Npb24gPSBleHAuc2xpY2UoMCwgaSkudHJpbSgpO1xuXHQgIH0gZWxzZSBpZiAobGFzdEZpbHRl
ckluZGV4ICE9PSAwKSB7XG5cdCAgICBwdXNoRmlsdGVyKCk7XG5cdCAgfVxuXHRcblx0ICBmdW5j
dGlvbiBwdXNoRmlsdGVyICgpIHtcblx0ICAgIChmaWx0ZXJzIHx8IChmaWx0ZXJzID0gW10pKS5w
dXNoKGV4cC5zbGljZShsYXN0RmlsdGVySW5kZXgsIGkpLnRyaW0oKSk7XG5cdCAgICBsYXN0Rmls
dGVySW5kZXggPSBpICsgMTtcblx0ICB9XG5cdFxuXHQgIGlmIChmaWx0ZXJzKSB7XG5cdCAgICBm
b3IgKGkgPSAwOyBpIDwgZmlsdGVycy5sZW5ndGg7IGkrKykge1xuXHQgICAgICBleHByZXNzaW9u
ID0gd3JhcEZpbHRlcihleHByZXNzaW9uLCBmaWx0ZXJzW2ldKTtcblx0ICAgIH1cblx0ICB9XG5c
dFxuXHQgIHJldHVybiBleHByZXNzaW9uXG5cdH1cblx0XG5cdGZ1bmN0aW9uIHdyYXBGaWx0ZXIg
KGV4cCwgZmlsdGVyKSB7XG5cdCAgdmFyIGkgPSBmaWx0ZXIuaW5kZXhPZignKCcpO1xuXHQgIGlm
IChpIDwgMCkge1xuXHQgICAgLy8gX2Y6IHJlc29sdmVGaWx0ZXJcblx0ICAgIHJldHVybiAoXCJf
ZihcXFwiXCIgKyBmaWx0ZXIgKyBcIlxcXCIpKFwiICsgZXhwICsgXCIpXCIpXG5cdCAgfSBlbHNl
IHtcblx0ICAgIHZhciBuYW1lID0gZmlsdGVyLnNsaWNlKDAsIGkpO1xuXHQgICAgdmFyIGFyZ3Mg
PSBmaWx0ZXIuc2xpY2UoaSArIDEpO1xuXHQgICAgcmV0dXJuIChcIl9mKFxcXCJcIiArIG5hbWUg
KyBcIlxcXCIpKFwiICsgZXhwICsgXCIsXCIgKyBhcmdzKVxuXHQgIH1cblx0fVxuXHRcblx0Lyog
ICovXG5cdFxuXHR2YXIgZGVmYXVsdFRhZ1JFID0gL1xce1xceygoPzoufFxcbikrPylcXH1cXH0v
Zztcblx0dmFyIHJlZ2V4RXNjYXBlUkUgPSAvWy0uKis/XiR7fSgpfFtcXF0vXFxcXF0vZztcblx0
XG5cdHZhciBidWlsZFJlZ2V4ID0gY2FjaGVkKGZ1bmN0aW9uIChkZWxpbWl0ZXJzKSB7XG5cdCAg
dmFyIG9wZW4gPSBkZWxpbWl0ZXJzWzBdLnJlcGxhY2UocmVnZXhFc2NhcGVSRSwgJ1xcXFwkJicp
O1xuXHQgIHZhciBjbG9zZSA9IGRlbGltaXRlcnNbMV0ucmVwbGFjZShyZWdleEVzY2FwZVJFLCAn
XFxcXCQmJyk7XG5cdCAgcmV0dXJuIG5ldyBSZWdFeHAob3BlbiArICcoKD86LnxcXFxcbikrPykn
ICsgY2xvc2UsICdnJylcblx0fSk7XG5cdFxuXHRmdW5jdGlvbiBwYXJzZVRleHQgKFxuXHQgIHRl
eHQsXG5cdCAgZGVsaW1pdGVyc1xuXHQpIHtcblx0ICB2YXIgdGFnUkUgPSBkZWxpbWl0ZXJzID8g
YnVpbGRSZWdleChkZWxpbWl0ZXJzKSA6IGRlZmF1bHRUYWdSRTtcblx0ICBpZiAoIXRhZ1JFLnRl
c3QodGV4dCkpIHtcblx0ICAgIHJldHVyblxuXHQgIH1cblx0ICB2YXIgdG9rZW5zID0gW107XG5c
dCAgdmFyIGxhc3RJbmRleCA9IHRhZ1JFLmxhc3RJbmRleCA9IDA7XG5cdCAgdmFyIG1hdGNoLCBp
bmRleDtcblx0ICB3aGlsZSAoKG1hdGNoID0gdGFnUkUuZXhlYyh0ZXh0KSkpIHtcblx0ICAgIGlu
ZGV4ID0gbWF0Y2guaW5kZXg7XG5cdCAgICAvLyBwdXNoIHRleHQgdG9rZW5cblx0ICAgIGlmIChp
bmRleCA+IGxhc3RJbmRleCkge1xuXHQgICAgICB0b2tlbnMucHVzaChKU09OLnN0cmluZ2lmeSh0
ZXh0LnNsaWNlKGxhc3RJbmRleCwgaW5kZXgpKSk7XG5cdCAgICB9XG5cdCAgICAvLyB0YWcgdG9r
ZW5cblx0ICAgIHZhciBleHAgPSBwYXJzZUZpbHRlcnMobWF0Y2hbMV0udHJpbSgpKTtcblx0ICAg
IHRva2Vucy5wdXNoKChcIl9zKFwiICsgZXhwICsgXCIpXCIpKTtcblx0ICAgIGxhc3RJbmRleCA9
IGluZGV4ICsgbWF0Y2hbMF0ubGVuZ3RoO1xuXHQgIH1cblx0ICBpZiAobGFzdEluZGV4IDwgdGV4
dC5sZW5ndGgpIHtcblx0ICAgIHRva2Vucy5wdXNoKEpTT04uc3RyaW5naWZ5KHRleHQuc2xpY2Uo
bGFzdEluZGV4KSkpO1xuXHQgIH1cblx0ICByZXR1cm4gdG9rZW5zLmpvaW4oJysnKVxuXHR9XG5c
dFxuXHQvKiAgKi9cblx0XG5cdGZ1bmN0aW9uIGJhc2VXYXJuIChtc2cpIHtcblx0ICBjb25zb2xl
LmVycm9yKChcIltWdWUgcGFyc2VyXTogXCIgKyBtc2cpKTtcblx0fVxuXHRcblx0ZnVuY3Rpb24g
cGx1Y2tNb2R1bGVGdW5jdGlvbiAoXG5cdCAgbW9kdWxlcyxcblx0ICBrZXlcblx0KSB7XG5cdCAg
cmV0dXJuIG1vZHVsZXNcblx0ICAgID8gbW9kdWxlcy5tYXAoZnVuY3Rpb24gKG0pIHsgcmV0dXJu
IG1ba2V5XTsgfSkuZmlsdGVyKGZ1bmN0aW9uIChfKSB7IHJldHVybiBfOyB9KVxuXHQgICAgOiBb
XVxuXHR9XG5cdFxuXHRmdW5jdGlvbiBhZGRQcm9wIChlbCwgbmFtZSwgdmFsdWUpIHtcblx0ICAo
ZWwucHJvcHMgfHwgKGVsLnByb3BzID0gW10pKS5wdXNoKHsgbmFtZTogbmFtZSwgdmFsdWU6IHZh
bHVlIH0pO1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBhZGRBdHRyIChlbCwgbmFtZSwgdmFsdWUpIHtc
blx0ICAoZWwuYXR0cnMgfHwgKGVsLmF0dHJzID0gW10pKS5wdXNoKHsgbmFtZTogbmFtZSwgdmFs
dWU6IHZhbHVlIH0pO1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBhZGREaXJlY3RpdmUgKFxuXHQgIGVs
LFxuXHQgIG5hbWUsXG5cdCAgcmF3TmFtZSxcblx0ICB2YWx1ZSxcblx0ICBhcmcsXG5cdCAgbW9k
aWZpZXJzXG5cdCkge1xuXHQgIChlbC5kaXJlY3RpdmVzIHx8IChlbC5kaXJlY3RpdmVzID0gW10p
KS5wdXNoKHsgbmFtZTogbmFtZSwgcmF3TmFtZTogcmF3TmFtZSwgdmFsdWU6IHZhbHVlLCBhcmc6
IGFyZywgbW9kaWZpZXJzOiBtb2RpZmllcnMgfSk7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIGFkZEhh
bmRsZXIgKFxuXHQgIGVsLFxuXHQgIG5hbWUsXG5cdCAgdmFsdWUsXG5cdCAgbW9kaWZpZXJzLFxu
XHQgIGltcG9ydGFudFxuXHQpIHtcblx0ICAvLyBjaGVjayBjYXB0dXJlIG1vZGlmaWVyXG5cdCAg
aWYgKG1vZGlmaWVycyAmJiBtb2RpZmllcnMuY2FwdHVyZSkge1xuXHQgICAgZGVsZXRlIG1vZGlm
aWVycy5jYXB0dXJlO1xuXHQgICAgbmFtZSA9ICchJyArIG5hbWU7IC8vIG1hcmsgdGhlIGV2ZW50
IGFzIGNhcHR1cmVkXG5cdCAgfVxuXHQgIHZhciBldmVudHM7XG5cdCAgaWYgKG1vZGlmaWVycyAm
JiBtb2RpZmllcnMubmF0aXZlKSB7XG5cdCAgICBkZWxldGUgbW9kaWZpZXJzLm5hdGl2ZTtcblx0
ICAgIGV2ZW50cyA9IGVsLm5hdGl2ZUV2ZW50cyB8fCAoZWwubmF0aXZlRXZlbnRzID0ge30pO1xu
XHQgIH0gZWxzZSB7XG5cdCAgICBldmVudHMgPSBlbC5ldmVudHMgfHwgKGVsLmV2ZW50cyA9IHt9
KTtcblx0ICB9XG5cdCAgdmFyIG5ld0hhbmRsZXIgPSB7IHZhbHVlOiB2YWx1ZSwgbW9kaWZpZXJz
OiBtb2RpZmllcnMgfTtcblx0ICB2YXIgaGFuZGxlcnMgPSBldmVudHNbbmFtZV07XG5cdCAgLyog
aXN0YW5idWwgaWdub3JlIGlmICovXG5cdCAgaWYgKEFycmF5LmlzQXJyYXkoaGFuZGxlcnMpKSB7
XG5cdCAgICBpbXBvcnRhbnQgPyBoYW5kbGVycy51bnNoaWZ0KG5ld0hhbmRsZXIpIDogaGFuZGxl
cnMucHVzaChuZXdIYW5kbGVyKTtcblx0ICB9IGVsc2UgaWYgKGhhbmRsZXJzKSB7XG5cdCAgICBl
dmVudHNbbmFtZV0gPSBpbXBvcnRhbnQgPyBbbmV3SGFuZGxlciwgaGFuZGxlcnNdIDogW2hhbmRs
ZXJzLCBuZXdIYW5kbGVyXTtcblx0ICB9IGVsc2Uge1xuXHQgICAgZXZlbnRzW25hbWVdID0gbmV3
SGFuZGxlcjtcblx0ICB9XG5cdH1cblx0XG5cdGZ1bmN0aW9uIGdldEJpbmRpbmdBdHRyIChcblx0
ICBlbCxcblx0ICBuYW1lLFxuXHQgIGdldFN0YXRpY1xuXHQpIHtcblx0ICB2YXIgZHluYW1pY1Zh
bHVlID1cblx0ICAgIGdldEFuZFJlbW92ZUF0dHIoZWwsICc6JyArIG5hbWUpIHx8XG5cdCAgICBn
ZXRBbmRSZW1vdmVBdHRyKGVsLCAndi1iaW5kOicgKyBuYW1lKTtcblx0ICBpZiAoZHluYW1pY1Zh
bHVlICE9IG51bGwpIHtcblx0ICAgIHJldHVybiBwYXJzZUZpbHRlcnMoZHluYW1pY1ZhbHVlKVxu
XHQgIH0gZWxzZSBpZiAoZ2V0U3RhdGljICE9PSBmYWxzZSkge1xuXHQgICAgdmFyIHN0YXRpY1Zh
bHVlID0gZ2V0QW5kUmVtb3ZlQXR0cihlbCwgbmFtZSk7XG5cdCAgICBpZiAoc3RhdGljVmFsdWUg
IT0gbnVsbCkge1xuXHQgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoc3RhdGljVmFsdWUpXG5c
dCAgICB9XG5cdCAgfVxuXHR9XG5cdFxuXHRmdW5jdGlvbiBnZXRBbmRSZW1vdmVBdHRyIChlbCwg
bmFtZSkge1xuXHQgIHZhciB2YWw7XG5cdCAgaWYgKCh2YWwgPSBlbC5hdHRyc01hcFtuYW1lXSkg
IT0gbnVsbCkge1xuXHQgICAgdmFyIGxpc3QgPSBlbC5hdHRyc0xpc3Q7XG5cdCAgICBmb3IgKHZh
ciBpID0gMCwgbCA9IGxpc3QubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG5cdCAgICAgIGlmIChsaXN0
W2ldLm5hbWUgPT09IG5hbWUpIHtcblx0ICAgICAgICBsaXN0LnNwbGljZShpLCAxKTtcblx0ICAg
ICAgICBicmVha1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfVxuXHQgIHJldHVybiB2YWxcblx0
fVxuXHRcblx0dmFyIGxlbjtcblx0dmFyIHN0cjtcblx0dmFyIGNocjtcblx0dmFyIGluZGV4JDE7
XG5cdHZhciBleHByZXNzaW9uUG9zO1xuXHR2YXIgZXhwcmVzc2lvbkVuZFBvcztcblx0XG5cdC8q
KlxuXHQgKiBwYXJzZSBkaXJlY3RpdmUgbW9kZWwgdG8gZG8gdGhlIGFycmF5IHVwZGF0ZSB0cmFu
c2Zvcm0uIGFbaWR4XSA9IHZhbCA9PiAkJGEuc3BsaWNlKCQkaWR4LCAxLCB2YWwpXG5cdCAqXG5c
dCAqIGZvciBsb29wIHBvc3NpYmxlIGNhc2VzOlxuXHQgKlxuXHQgKiAtIHRlc3Rcblx0ICogLSB0
ZXN0W2lkeF1cblx0ICogLSB0ZXN0W3Rlc3QxW2lkeF1dXG5cdCAqIC0gdGVzdFtcImFcIl1baWR4
XVxuXHQgKiAtIHh4eC50ZXN0W2FbYV0udGVzdDFbaWR4XV1cblx0ICogLSB0ZXN0Lnh4eC5hW1wi
YXNhXCJdW3Rlc3QxW2lkeF1dXG5cdCAqXG5cdCAqL1xuXHRcblx0ZnVuY3Rpb24gcGFyc2VNb2Rl
bCAodmFsKSB7XG5cdCAgc3RyID0gdmFsO1xuXHQgIGxlbiA9IHN0ci5sZW5ndGg7XG5cdCAgaW5k
ZXgkMSA9IGV4cHJlc3Npb25Qb3MgPSBleHByZXNzaW9uRW5kUG9zID0gMDtcblx0XG5cdCAgaWYg
KHZhbC5pbmRleE9mKCdbJykgPCAwIHx8IHZhbC5sYXN0SW5kZXhPZignXScpIDwgbGVuIC0gMSkg
e1xuXHQgICAgcmV0dXJuIHtcblx0ICAgICAgZXhwOiB2YWwsXG5cdCAgICAgIGlkeDogbnVsbFxu
XHQgICAgfVxuXHQgIH1cblx0XG5cdCAgd2hpbGUgKCFlb2YoKSkge1xuXHQgICAgY2hyID0gbmV4
dCgpO1xuXHQgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG5cdCAgICBpZiAoaXNTdHJpbmdT
dGFydChjaHIpKSB7XG5cdCAgICAgIHBhcnNlU3RyaW5nKGNocik7XG5cdCAgICB9IGVsc2UgaWYg
KGNociA9PT0gMHg1Qikge1xuXHQgICAgICBwYXJzZUJyYWNrZXQoY2hyKTtcblx0ICAgIH1cblx0
ICB9XG5cdFxuXHQgIHJldHVybiB7XG5cdCAgICBleHA6IHZhbC5zdWJzdHJpbmcoMCwgZXhwcmVz
c2lvblBvcyksXG5cdCAgICBpZHg6IHZhbC5zdWJzdHJpbmcoZXhwcmVzc2lvblBvcyArIDEsIGV4
cHJlc3Npb25FbmRQb3MpXG5cdCAgfVxuXHR9XG5cdFxuXHRmdW5jdGlvbiBuZXh0ICgpIHtcblx0
ICByZXR1cm4gc3RyLmNoYXJDb2RlQXQoKytpbmRleCQxKVxuXHR9XG5cdFxuXHRmdW5jdGlvbiBl
b2YgKCkge1xuXHQgIHJldHVybiBpbmRleCQxID49IGxlblxuXHR9XG5cdFxuXHRmdW5jdGlvbiBp
c1N0cmluZ1N0YXJ0IChjaHIpIHtcblx0ICByZXR1cm4gY2hyID09PSAweDIyIHx8IGNociA9PT0g
MHgyN1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBwYXJzZUJyYWNrZXQgKGNocikge1xuXHQgIHZhciBp
bkJyYWNrZXQgPSAxO1xuXHQgIGV4cHJlc3Npb25Qb3MgPSBpbmRleCQxO1xuXHQgIHdoaWxlICgh
ZW9mKCkpIHtcblx0ICAgIGNociA9IG5leHQoKTtcblx0ICAgIGlmIChpc1N0cmluZ1N0YXJ0KGNo
cikpIHtcblx0ICAgICAgcGFyc2VTdHJpbmcoY2hyKTtcblx0ICAgICAgY29udGludWVcblx0ICAg
IH1cblx0ICAgIGlmIChjaHIgPT09IDB4NUIpIHsgaW5CcmFja2V0Kys7IH1cblx0ICAgIGlmIChj
aHIgPT09IDB4NUQpIHsgaW5CcmFja2V0LS07IH1cblx0ICAgIGlmIChpbkJyYWNrZXQgPT09IDAp
IHtcblx0ICAgICAgZXhwcmVzc2lvbkVuZFBvcyA9IGluZGV4JDE7XG5cdCAgICAgIGJyZWFrXG5c
dCAgICB9XG5cdCAgfVxuXHR9XG5cdFxuXHRmdW5jdGlvbiBwYXJzZVN0cmluZyAoY2hyKSB7XG5c
dCAgdmFyIHN0cmluZ1F1b3RlID0gY2hyO1xuXHQgIHdoaWxlICghZW9mKCkpIHtcblx0ICAgIGNo
ciA9IG5leHQoKTtcblx0ICAgIGlmIChjaHIgPT09IHN0cmluZ1F1b3RlKSB7XG5cdCAgICAgIGJy
ZWFrXG5cdCAgICB9XG5cdCAgfVxuXHR9XG5cdFxuXHQvKiAgKi9cblx0XG5cdHZhciBkaXJSRSA9
IC9edi18XkB8XjovO1xuXHR2YXIgZm9yQWxpYXNSRSA9IC8oLio/KVxccysoPzppbnxvZilcXHMr
KC4qKS87XG5cdHZhciBmb3JJdGVyYXRvclJFID0gL1xcKChcXHtbXn1dKlxcfXxbXixdKiksKFte
LF0qKSg/OiwoW14sXSopKT9cXCkvO1xuXHR2YXIgYmluZFJFID0gL146fF52LWJpbmQ6Lztcblx0
dmFyIG9uUkUgPSAvXkB8XnYtb246Lztcblx0dmFyIGFyZ1JFID0gLzooLiopJC87XG5cdHZhciBt
b2RpZmllclJFID0gL1xcLlteLl0rL2c7XG5cdFxuXHR2YXIgZGVjb2RlSFRNTENhY2hlZCA9IGNh
Y2hlZChkZWNvZGUpO1xuXHRcblx0Ly8gY29uZmlndXJhYmxlIHN0YXRlXG5cdHZhciB3YXJuJDE7
XG5cdHZhciBwbGF0Zm9ybUdldFRhZ05hbWVzcGFjZTtcblx0dmFyIHBsYXRmb3JtTXVzdFVzZVBy
b3A7XG5cdHZhciBwbGF0Zm9ybUlzUHJlVGFnO1xuXHR2YXIgcHJlVHJhbnNmb3Jtcztcblx0dmFy
IHRyYW5zZm9ybXM7XG5cdHZhciBwb3N0VHJhbnNmb3Jtcztcblx0dmFyIGRlbGltaXRlcnM7XG5c
dFxuXHQvKipcblx0ICogQ29udmVydCBIVE1MIHN0cmluZyB0byBBU1QuXG5cdCAqL1xuXHRmdW5j
dGlvbiBwYXJzZSAoXG5cdCAgdGVtcGxhdGUsXG5cdCAgb3B0aW9uc1xuXHQpIHtcblx0ICB3YXJu
JDEgPSBvcHRpb25zLndhcm4gfHwgYmFzZVdhcm47XG5cdCAgcGxhdGZvcm1HZXRUYWdOYW1lc3Bh
Y2UgPSBvcHRpb25zLmdldFRhZ05hbWVzcGFjZSB8fCBubztcblx0ICBwbGF0Zm9ybU11c3RVc2VQ
cm9wID0gb3B0aW9ucy5tdXN0VXNlUHJvcCB8fCBubztcblx0ICBwbGF0Zm9ybUlzUHJlVGFnID0g
b3B0aW9ucy5pc1ByZVRhZyB8fCBubztcblx0ICBwcmVUcmFuc2Zvcm1zID0gcGx1Y2tNb2R1bGVG
dW5jdGlvbihvcHRpb25zLm1vZHVsZXMsICdwcmVUcmFuc2Zvcm1Ob2RlJyk7XG5cdCAgdHJhbnNm
b3JtcyA9IHBsdWNrTW9kdWxlRnVuY3Rpb24ob3B0aW9ucy5tb2R1bGVzLCAndHJhbnNmb3JtTm9k
ZScpO1xuXHQgIHBvc3RUcmFuc2Zvcm1zID0gcGx1Y2tNb2R1bGVGdW5jdGlvbihvcHRpb25zLm1v
ZHVsZXMsICdwb3N0VHJhbnNmb3JtTm9kZScpO1xuXHQgIGRlbGltaXRlcnMgPSBvcHRpb25zLmRl
bGltaXRlcnM7XG5cdCAgdmFyIHN0YWNrID0gW107XG5cdCAgdmFyIHByZXNlcnZlV2hpdGVzcGFj
ZSA9IG9wdGlvbnMucHJlc2VydmVXaGl0ZXNwYWNlICE9PSBmYWxzZTtcblx0ICB2YXIgcm9vdDtc
blx0ICB2YXIgY3VycmVudFBhcmVudDtcblx0ICB2YXIgaW5WUHJlID0gZmFsc2U7XG5cdCAgdmFy
IGluUHJlID0gZmFsc2U7XG5cdCAgdmFyIHdhcm5lZCA9IGZhbHNlO1xuXHQgIHBhcnNlSFRNTCh0
ZW1wbGF0ZSwge1xuXHQgICAgZXhwZWN0SFRNTDogb3B0aW9ucy5leHBlY3RIVE1MLFxuXHQgICAg
aXNVbmFyeVRhZzogb3B0aW9ucy5pc1VuYXJ5VGFnLFxuXHQgICAgc2hvdWxkRGVjb2RlTmV3bGlu
ZXM6IG9wdGlvbnMuc2hvdWxkRGVjb2RlTmV3bGluZXMsXG5cdCAgICBzdGFydDogZnVuY3Rpb24g
c3RhcnQgKHRhZywgYXR0cnMsIHVuYXJ5KSB7XG5cdCAgICAgIC8vIGNoZWNrIG5hbWVzcGFjZS5c
blx0ICAgICAgLy8gaW5oZXJpdCBwYXJlbnQgbnMgaWYgdGhlcmUgaXMgb25lXG5cdCAgICAgIHZh
ciBucyA9IChjdXJyZW50UGFyZW50ICYmIGN1cnJlbnRQYXJlbnQubnMpIHx8IHBsYXRmb3JtR2V0
VGFnTmFtZXNwYWNlKHRhZyk7XG5cdFxuXHQgICAgICAvLyBoYW5kbGUgSUUgc3ZnIGJ1Z1xuXHQg
ICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cblx0ICAgICAgaWYgKGlzSUUgJiYgbnMgPT09
ICdzdmcnKSB7XG5cdCAgICAgICAgYXR0cnMgPSBndWFyZElFU1ZHQnVnKGF0dHJzKTtcblx0ICAg
ICAgfVxuXHRcblx0ICAgICAgdmFyIGVsZW1lbnQgPSB7XG5cdCAgICAgICAgdHlwZTogMSxcblx0
ICAgICAgICB0YWc6IHRhZyxcblx0ICAgICAgICBhdHRyc0xpc3Q6IGF0dHJzLFxuXHQgICAgICAg
IGF0dHJzTWFwOiBtYWtlQXR0cnNNYXAoYXR0cnMpLFxuXHQgICAgICAgIHBhcmVudDogY3VycmVu
dFBhcmVudCxcblx0ICAgICAgICBjaGlsZHJlbjogW11cblx0ICAgICAgfTtcblx0ICAgICAgaWYg
KG5zKSB7XG5cdCAgICAgICAgZWxlbWVudC5ucyA9IG5zO1xuXHQgICAgICB9XG5cdFxuXHQgICAg
ICBpZiAoaXNGb3JiaWRkZW5UYWcoZWxlbWVudCkgJiYgIWlzU2VydmVyUmVuZGVyaW5nKCkpIHtc
blx0ICAgICAgICBlbGVtZW50LmZvcmJpZGRlbiA9IHRydWU7XG5cdCAgICAgICAgKFwicHJvZHVj
dGlvblwiKSAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4kMShcblx0ICAgICAgICAgICdUZW1wbGF0
ZXMgc2hvdWxkIG9ubHkgYmUgcmVzcG9uc2libGUgZm9yIG1hcHBpbmcgdGhlIHN0YXRlIHRvIHRo
ZSAnICtcblx0ICAgICAgICAgICdVSS4gQXZvaWQgcGxhY2luZyB0YWdzIHdpdGggc2lkZS1lZmZl
Y3RzIGluIHlvdXIgdGVtcGxhdGVzLCBzdWNoIGFzICcgK1xuXHQgICAgICAgICAgXCI8XCIgKyB0
YWcgKyBcIj4uXCJcblx0ICAgICAgICApO1xuXHQgICAgICB9XG5cdFxuXHQgICAgICAvLyBhcHBs
eSBwcmUtdHJhbnNmb3Jtc1xuXHQgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByZVRyYW5zZm9y
bXMubGVuZ3RoOyBpKyspIHtcblx0ICAgICAgICBwcmVUcmFuc2Zvcm1zW2ldKGVsZW1lbnQsIG9w
dGlvbnMpO1xuXHQgICAgICB9XG5cdFxuXHQgICAgICBpZiAoIWluVlByZSkge1xuXHQgICAgICAg
IHByb2Nlc3NQcmUoZWxlbWVudCk7XG5cdCAgICAgICAgaWYgKGVsZW1lbnQucHJlKSB7XG5cdCAg
ICAgICAgICBpblZQcmUgPSB0cnVlO1xuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgICBp
ZiAocGxhdGZvcm1Jc1ByZVRhZyhlbGVtZW50LnRhZykpIHtcblx0ICAgICAgICBpblByZSA9IHRy
dWU7XG5cdCAgICAgIH1cblx0ICAgICAgaWYgKGluVlByZSkge1xuXHQgICAgICAgIHByb2Nlc3NS
YXdBdHRycyhlbGVtZW50KTtcblx0ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICBwcm9jZXNzRm9y
KGVsZW1lbnQpO1xuXHQgICAgICAgIHByb2Nlc3NJZihlbGVtZW50KTtcblx0ICAgICAgICBwcm9j
ZXNzT25jZShlbGVtZW50KTtcblx0ICAgICAgICBwcm9jZXNzS2V5KGVsZW1lbnQpO1xuXHRcblx0
ICAgICAgICAvLyBkZXRlcm1pbmUgd2hldGhlciB0aGlzIGlzIGEgcGxhaW4gZWxlbWVudCBhZnRl
clxuXHQgICAgICAgIC8vIHJlbW92aW5nIHN0cnVjdHVyYWwgYXR0cmlidXRlc1xuXHQgICAgICAg
IGVsZW1lbnQucGxhaW4gPSAhZWxlbWVudC5rZXkgJiYgIWF0dHJzLmxlbmd0aDtcblx0XG5cdCAg
ICAgICAgcHJvY2Vzc1JlZihlbGVtZW50KTtcblx0ICAgICAgICBwcm9jZXNzU2xvdChlbGVtZW50
KTtcblx0ICAgICAgICBwcm9jZXNzQ29tcG9uZW50KGVsZW1lbnQpO1xuXHQgICAgICAgIGZvciAo
dmFyIGkkMSA9IDA7IGkkMSA8IHRyYW5zZm9ybXMubGVuZ3RoOyBpJDErKykge1xuXHQgICAgICAg
ICAgdHJhbnNmb3Jtc1tpJDFdKGVsZW1lbnQsIG9wdGlvbnMpO1xuXHQgICAgICAgIH1cblx0ICAg
ICAgICBwcm9jZXNzQXR0cnMoZWxlbWVudCk7XG5cdCAgICAgIH1cblx0XG5cdCAgICAgIGZ1bmN0
aW9uIGNoZWNrUm9vdENvbnN0cmFpbnRzIChlbCkge1xuXHQgICAgICAgIGlmIChmYWxzZSkge1xu
XHQgICAgICAgICAgaWYgKGVsLnRhZyA9PT0gJ3Nsb3QnIHx8IGVsLnRhZyA9PT0gJ3RlbXBsYXRl
Jykge1xuXHQgICAgICAgICAgICB3YXJuZWQgPSB0cnVlO1xuXHQgICAgICAgICAgICB3YXJuJDEo
XG5cdCAgICAgICAgICAgICAgXCJDYW5ub3QgdXNlIDxcIiArIChlbC50YWcpICsgXCI+IGFzIGNv
bXBvbmVudCByb290IGVsZW1lbnQgYmVjYXVzZSBpdCBtYXkgXCIgK1xuXHQgICAgICAgICAgICAg
ICdjb250YWluIG11bHRpcGxlIG5vZGVzOlxcbicgKyB0ZW1wbGF0ZVxuXHQgICAgICAgICAgICAp
O1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgICAgaWYgKGVsLmF0dHJzTWFwLmhhc093blByb3Bl
cnR5KCd2LWZvcicpKSB7XG5cdCAgICAgICAgICAgIHdhcm5lZCA9IHRydWU7XG5cdCAgICAgICAg
ICAgIHdhcm4kMShcblx0ICAgICAgICAgICAgICAnQ2Fubm90IHVzZSB2LWZvciBvbiBzdGF0ZWZ1
bCBjb21wb25lbnQgcm9vdCBlbGVtZW50IGJlY2F1c2UgJyArXG5cdCAgICAgICAgICAgICAgJ2l0
IHJlbmRlcnMgbXVsdGlwbGUgZWxlbWVudHM6XFxuJyArIHRlbXBsYXRlXG5cdCAgICAgICAgICAg
ICk7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdFxuXHQgICAgICAv
LyB0cmVlIG1hbmFnZW1lbnRcblx0ICAgICAgaWYgKCFyb290KSB7XG5cdCAgICAgICAgcm9vdCA9
IGVsZW1lbnQ7XG5cdCAgICAgICAgY2hlY2tSb290Q29uc3RyYWludHMocm9vdCk7XG5cdCAgICAg
IH0gZWxzZSBpZiAoIXN0YWNrLmxlbmd0aCkge1xuXHQgICAgICAgIC8vIGFsbG93IHJvb3QgZWxl
bWVudHMgd2l0aCB2LWlmLCB2LWVsc2UtaWYgYW5kIHYtZWxzZVxuXHQgICAgICAgIGlmIChyb290
LmlmICYmIChlbGVtZW50LmVsc2VpZiB8fCBlbGVtZW50LmVsc2UpKSB7XG5cdCAgICAgICAgICBj
aGVja1Jvb3RDb25zdHJhaW50cyhlbGVtZW50KTtcblx0ICAgICAgICAgIGFkZElmQ29uZGl0aW9u
KHJvb3QsIHtcblx0ICAgICAgICAgICAgZXhwOiBlbGVtZW50LmVsc2VpZixcblx0ICAgICAgICAg
ICAgYmxvY2s6IGVsZW1lbnRcblx0ICAgICAgICAgIH0pO1xuXHQgICAgICAgIH0gZWxzZSBpZiAo
ZmFsc2UpIHtcblx0ICAgICAgICAgIHdhcm5lZCA9IHRydWU7XG5cdCAgICAgICAgICB3YXJuJDEo
XG5cdCAgICAgICAgICAgIFwiQ29tcG9uZW50IHRlbXBsYXRlIHNob3VsZCBjb250YWluIGV4YWN0
bHkgb25lIHJvb3QgZWxlbWVudDpcIiArXG5cdCAgICAgICAgICAgIFwiXFxuXFxuXCIgKyB0ZW1w
bGF0ZSArIFwiXFxuXFxuXCIgK1xuXHQgICAgICAgICAgICBcIklmIHlvdSBhcmUgdXNpbmcgdi1p
ZiBvbiBtdWx0aXBsZSBlbGVtZW50cywgXCIgK1xuXHQgICAgICAgICAgICBcInVzZSB2LWVsc2Ut
aWYgdG8gY2hhaW4gdGhlbSBpbnN0ZWFkLlwiXG5cdCAgICAgICAgICApO1xuXHQgICAgICAgIH1c
blx0ICAgICAgfVxuXHQgICAgICBpZiAoY3VycmVudFBhcmVudCAmJiAhZWxlbWVudC5mb3JiaWRk
ZW4pIHtcblx0ICAgICAgICBpZiAoZWxlbWVudC5lbHNlaWYgfHwgZWxlbWVudC5lbHNlKSB7XG5c
dCAgICAgICAgICBwcm9jZXNzSWZDb25kaXRpb25zKGVsZW1lbnQsIGN1cnJlbnRQYXJlbnQpO1xu
XHQgICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5zbG90U2NvcGUpIHsgLy8gc2NvcGVkIHNsb3Rc
blx0ICAgICAgICAgIGN1cnJlbnRQYXJlbnQucGxhaW4gPSBmYWxzZTtcblx0ICAgICAgICAgIHZh
ciBuYW1lID0gZWxlbWVudC5zbG90VGFyZ2V0IHx8ICdkZWZhdWx0JzsoY3VycmVudFBhcmVudC5z
Y29wZWRTbG90cyB8fCAoY3VycmVudFBhcmVudC5zY29wZWRTbG90cyA9IHt9KSlbbmFtZV0gPSBl
bGVtZW50O1xuXHQgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICBjdXJyZW50UGFyZW50LmNo
aWxkcmVuLnB1c2goZWxlbWVudCk7XG5cdCAgICAgICAgICBlbGVtZW50LnBhcmVudCA9IGN1cnJl
bnRQYXJlbnQ7XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICAgIGlmICghdW5hcnkpIHtc
blx0ICAgICAgICBjdXJyZW50UGFyZW50ID0gZWxlbWVudDtcblx0ICAgICAgICBzdGFjay5wdXNo
KGVsZW1lbnQpO1xuXHQgICAgICB9XG5cdCAgICAgIC8vIGFwcGx5IHBvc3QtdHJhbnNmb3Jtc1xu
XHQgICAgICBmb3IgKHZhciBpJDIgPSAwOyBpJDIgPCBwb3N0VHJhbnNmb3Jtcy5sZW5ndGg7IGkk
MisrKSB7XG5cdCAgICAgICAgcG9zdFRyYW5zZm9ybXNbaSQyXShlbGVtZW50LCBvcHRpb25zKTtc
blx0ICAgICAgfVxuXHQgICAgfSxcblx0XG5cdCAgICBlbmQ6IGZ1bmN0aW9uIGVuZCAoKSB7XG5c
dCAgICAgIC8vIHJlbW92ZSB0cmFpbGluZyB3aGl0ZXNwYWNlXG5cdCAgICAgIHZhciBlbGVtZW50
ID0gc3RhY2tbc3RhY2subGVuZ3RoIC0gMV07XG5cdCAgICAgIHZhciBsYXN0Tm9kZSA9IGVsZW1l
bnQuY2hpbGRyZW5bZWxlbWVudC5jaGlsZHJlbi5sZW5ndGggLSAxXTtcblx0ICAgICAgaWYgKGxh
c3ROb2RlICYmIGxhc3ROb2RlLnR5cGUgPT09IDMgJiYgbGFzdE5vZGUudGV4dCA9PT0gJyAnKSB7
XG5cdCAgICAgICAgZWxlbWVudC5jaGlsZHJlbi5wb3AoKTtcblx0ICAgICAgfVxuXHQgICAgICAv
LyBwb3Agc3RhY2tcblx0ICAgICAgc3RhY2subGVuZ3RoIC09IDE7XG5cdCAgICAgIGN1cnJlbnRQ
YXJlbnQgPSBzdGFja1tzdGFjay5sZW5ndGggLSAxXTtcblx0ICAgICAgLy8gY2hlY2sgcHJlIHN0
YXRlXG5cdCAgICAgIGlmIChlbGVtZW50LnByZSkge1xuXHQgICAgICAgIGluVlByZSA9IGZhbHNl
O1xuXHQgICAgICB9XG5cdCAgICAgIGlmIChwbGF0Zm9ybUlzUHJlVGFnKGVsZW1lbnQudGFnKSkg
e1xuXHQgICAgICAgIGluUHJlID0gZmFsc2U7XG5cdCAgICAgIH1cblx0ICAgIH0sXG5cdFxuXHQg
ICAgY2hhcnM6IGZ1bmN0aW9uIGNoYXJzICh0ZXh0KSB7XG5cdCAgICAgIGlmICghY3VycmVudFBh
cmVudCkge1xuXHQgICAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgICAgd2FybmVkID0gdHJ1
ZTtcblx0ICAgICAgICAgIHdhcm4kMShcblx0ICAgICAgICAgICAgJ0NvbXBvbmVudCB0ZW1wbGF0
ZSByZXF1aXJlcyBhIHJvb3QgZWxlbWVudCwgcmF0aGVyIHRoYW4ganVzdCB0ZXh0Olxcblxcbicg
KyB0ZW1wbGF0ZVxuXHQgICAgICAgICAgKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgcmV0dXJu
XG5cdCAgICAgIH1cblx0ICAgICAgLy8gSUUgdGV4dGFyZWEgcGxhY2Vob2xkZXIgYnVnXG5cdCAg
ICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuXHQgICAgICBpZiAoaXNJRSAmJlxuXHQgICAg
ICAgICAgY3VycmVudFBhcmVudC50YWcgPT09ICd0ZXh0YXJlYScgJiZcblx0ICAgICAgICAgIGN1
cnJlbnRQYXJlbnQuYXR0cnNNYXAucGxhY2Vob2xkZXIgPT09IHRleHQpIHtcblx0ICAgICAgICBy
ZXR1cm5cblx0ICAgICAgfVxuXHQgICAgICB0ZXh0ID0gaW5QcmUgfHwgdGV4dC50cmltKClcblx0
ICAgICAgICA/IGRlY29kZUhUTUxDYWNoZWQodGV4dClcblx0ICAgICAgICAvLyBvbmx5IHByZXNl
cnZlIHdoaXRlc3BhY2UgaWYgaXRzIG5vdCByaWdodCBhZnRlciBhIHN0YXJ0aW5nIHRhZ1xuXHQg
ICAgICAgIDogcHJlc2VydmVXaGl0ZXNwYWNlICYmIGN1cnJlbnRQYXJlbnQuY2hpbGRyZW4ubGVu
Z3RoID8gJyAnIDogJyc7XG5cdCAgICAgIGlmICh0ZXh0KSB7XG5cdCAgICAgICAgdmFyIGV4cHJl
c3Npb247XG5cdCAgICAgICAgaWYgKCFpblZQcmUgJiYgdGV4dCAhPT0gJyAnICYmIChleHByZXNz
aW9uID0gcGFyc2VUZXh0KHRleHQsIGRlbGltaXRlcnMpKSkge1xuXHQgICAgICAgICAgY3VycmVu
dFBhcmVudC5jaGlsZHJlbi5wdXNoKHtcblx0ICAgICAgICAgICAgdHlwZTogMixcblx0ICAgICAg
ICAgICAgZXhwcmVzc2lvbjogZXhwcmVzc2lvbixcblx0ICAgICAgICAgICAgdGV4dDogdGV4dFxu
XHQgICAgICAgICAgfSk7XG5cdCAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgIGN1cnJlbnRQ
YXJlbnQuY2hpbGRyZW4ucHVzaCh7XG5cdCAgICAgICAgICAgIHR5cGU6IDMsXG5cdCAgICAgICAg
ICAgIHRleHQ6IHRleHRcblx0ICAgICAgICAgIH0pO1xuXHQgICAgICAgIH1cblx0ICAgICAgfVxu
XHQgICAgfVxuXHQgIH0pO1xuXHQgIHJldHVybiByb290XG5cdH1cblx0XG5cdGZ1bmN0aW9uIHBy
b2Nlc3NQcmUgKGVsKSB7XG5cdCAgaWYgKGdldEFuZFJlbW92ZUF0dHIoZWwsICd2LXByZScpICE9
IG51bGwpIHtcblx0ICAgIGVsLnByZSA9IHRydWU7XG5cdCAgfVxuXHR9XG5cdFxuXHRmdW5jdGlv
biBwcm9jZXNzUmF3QXR0cnMgKGVsKSB7XG5cdCAgdmFyIGwgPSBlbC5hdHRyc0xpc3QubGVuZ3Ro
O1xuXHQgIGlmIChsKSB7XG5cdCAgICB2YXIgYXR0cnMgPSBlbC5hdHRycyA9IG5ldyBBcnJheShs
KTtcblx0ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbDsgaSsrKSB7XG5cdCAgICAgIGF0dHJzW2ld
ID0ge1xuXHQgICAgICAgIG5hbWU6IGVsLmF0dHJzTGlzdFtpXS5uYW1lLFxuXHQgICAgICAgIHZh
bHVlOiBKU09OLnN0cmluZ2lmeShlbC5hdHRyc0xpc3RbaV0udmFsdWUpXG5cdCAgICAgIH07XG5c
dCAgICB9XG5cdCAgfSBlbHNlIGlmICghZWwucHJlKSB7XG5cdCAgICAvLyBub24gcm9vdCBub2Rl
IGluIHByZSBibG9ja3Mgd2l0aCBubyBhdHRyaWJ1dGVzXG5cdCAgICBlbC5wbGFpbiA9IHRydWU7
XG5cdCAgfVxuXHR9XG5cdFxuXHRmdW5jdGlvbiBwcm9jZXNzS2V5IChlbCkge1xuXHQgIHZhciBl
eHAgPSBnZXRCaW5kaW5nQXR0cihlbCwgJ2tleScpO1xuXHQgIGlmIChleHApIHtcblx0ICAgIGlm
IChmYWxzZSkge1xuXHQgICAgICB3YXJuJDEoXCI8dGVtcGxhdGU+IGNhbm5vdCBiZSBrZXllZC4g
UGxhY2UgdGhlIGtleSBvbiByZWFsIGVsZW1lbnRzIGluc3RlYWQuXCIpO1xuXHQgICAgfVxuXHQg
ICAgZWwua2V5ID0gZXhwO1xuXHQgIH1cblx0fVxuXHRcblx0ZnVuY3Rpb24gcHJvY2Vzc1JlZiAo
ZWwpIHtcblx0ICB2YXIgcmVmID0gZ2V0QmluZGluZ0F0dHIoZWwsICdyZWYnKTtcblx0ICBpZiAo
cmVmKSB7XG5cdCAgICBlbC5yZWYgPSByZWY7XG5cdCAgICBlbC5yZWZJbkZvciA9IGNoZWNrSW5G
b3IoZWwpO1xuXHQgIH1cblx0fVxuXHRcblx0ZnVuY3Rpb24gcHJvY2Vzc0ZvciAoZWwpIHtcblx0
ICB2YXIgZXhwO1xuXHQgIGlmICgoZXhwID0gZ2V0QW5kUmVtb3ZlQXR0cihlbCwgJ3YtZm9yJykp
KSB7XG5cdCAgICB2YXIgaW5NYXRjaCA9IGV4cC5tYXRjaChmb3JBbGlhc1JFKTtcblx0ICAgIGlm
ICghaW5NYXRjaCkge1xuXHQgICAgICAoXCJwcm9kdWN0aW9uXCIpICE9PSAncHJvZHVjdGlvbicg
JiYgd2FybiQxKFxuXHQgICAgICAgIChcIkludmFsaWQgdi1mb3IgZXhwcmVzc2lvbjogXCIgKyBl
eHApXG5cdCAgICAgICk7XG5cdCAgICAgIHJldHVyblxuXHQgICAgfVxuXHQgICAgZWwuZm9yID0g
aW5NYXRjaFsyXS50cmltKCk7XG5cdCAgICB2YXIgYWxpYXMgPSBpbk1hdGNoWzFdLnRyaW0oKTtc
blx0ICAgIHZhciBpdGVyYXRvck1hdGNoID0gYWxpYXMubWF0Y2goZm9ySXRlcmF0b3JSRSk7XG5c
dCAgICBpZiAoaXRlcmF0b3JNYXRjaCkge1xuXHQgICAgICBlbC5hbGlhcyA9IGl0ZXJhdG9yTWF0
Y2hbMV0udHJpbSgpO1xuXHQgICAgICBlbC5pdGVyYXRvcjEgPSBpdGVyYXRvck1hdGNoWzJdLnRy
aW0oKTtcblx0ICAgICAgaWYgKGl0ZXJhdG9yTWF0Y2hbM10pIHtcblx0ICAgICAgICBlbC5pdGVy
YXRvcjIgPSBpdGVyYXRvck1hdGNoWzNdLnRyaW0oKTtcblx0ICAgICAgfVxuXHQgICAgfSBlbHNl
IHtcblx0ICAgICAgZWwuYWxpYXMgPSBhbGlhcztcblx0ICAgIH1cblx0ICB9XG5cdH1cblx0XG5c
dGZ1bmN0aW9uIHByb2Nlc3NJZiAoZWwpIHtcblx0ICB2YXIgZXhwID0gZ2V0QW5kUmVtb3ZlQXR0
cihlbCwgJ3YtaWYnKTtcblx0ICBpZiAoZXhwKSB7XG5cdCAgICBlbC5pZiA9IGV4cDtcblx0ICAg
IGFkZElmQ29uZGl0aW9uKGVsLCB7XG5cdCAgICAgIGV4cDogZXhwLFxuXHQgICAgICBibG9jazog
ZWxcblx0ICAgIH0pO1xuXHQgIH0gZWxzZSB7XG5cdCAgICBpZiAoZ2V0QW5kUmVtb3ZlQXR0cihl
bCwgJ3YtZWxzZScpICE9IG51bGwpIHtcblx0ICAgICAgZWwuZWxzZSA9IHRydWU7XG5cdCAgICB9
XG5cdCAgICB2YXIgZWxzZWlmID0gZ2V0QW5kUmVtb3ZlQXR0cihlbCwgJ3YtZWxzZS1pZicpO1xu
XHQgICAgaWYgKGVsc2VpZikge1xuXHQgICAgICBlbC5lbHNlaWYgPSBlbHNlaWY7XG5cdCAgICB9
XG5cdCAgfVxuXHR9XG5cdFxuXHRmdW5jdGlvbiBwcm9jZXNzSWZDb25kaXRpb25zIChlbCwgcGFy
ZW50KSB7XG5cdCAgdmFyIHByZXYgPSBmaW5kUHJldkVsZW1lbnQocGFyZW50LmNoaWxkcmVuKTtc
blx0ICBpZiAocHJldiAmJiBwcmV2LmlmKSB7XG5cdCAgICBhZGRJZkNvbmRpdGlvbihwcmV2LCB7
XG5cdCAgICAgIGV4cDogZWwuZWxzZWlmLFxuXHQgICAgICBibG9jazogZWxcblx0ICAgIH0pO1xu
XHQgIH0gZWxzZSBpZiAoZmFsc2UpIHtcblx0ICAgIHdhcm4kMShcblx0ICAgICAgXCJ2LVwiICsg
KGVsLmVsc2VpZiA/ICgnZWxzZS1pZj1cIicgKyBlbC5lbHNlaWYgKyAnXCInKSA6ICdlbHNlJykg
KyBcIiBcIiArXG5cdCAgICAgIFwidXNlZCBvbiBlbGVtZW50IDxcIiArIChlbC50YWcpICsgXCI+
IHdpdGhvdXQgY29ycmVzcG9uZGluZyB2LWlmLlwiXG5cdCAgICApO1xuXHQgIH1cblx0fVxuXHRc
blx0ZnVuY3Rpb24gYWRkSWZDb25kaXRpb24gKGVsLCBjb25kaXRpb24pIHtcblx0ICBpZiAoIWVs
LmNvbmRpdGlvbnMpIHtcblx0ICAgIGVsLmNvbmRpdGlvbnMgPSBbXTtcblx0ICB9XG5cdCAgZWwu
Y29uZGl0aW9ucy5wdXNoKGNvbmRpdGlvbik7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIHByb2Nlc3NP
bmNlIChlbCkge1xuXHQgIHZhciBvbmNlID0gZ2V0QW5kUmVtb3ZlQXR0cihlbCwgJ3Ytb25jZScp
O1xuXHQgIGlmIChvbmNlICE9IG51bGwpIHtcblx0ICAgIGVsLm9uY2UgPSB0cnVlO1xuXHQgIH1c
blx0fVxuXHRcblx0ZnVuY3Rpb24gcHJvY2Vzc1Nsb3QgKGVsKSB7XG5cdCAgaWYgKGVsLnRhZyA9
PT0gJ3Nsb3QnKSB7XG5cdCAgICBlbC5zbG90TmFtZSA9IGdldEJpbmRpbmdBdHRyKGVsLCAnbmFt
ZScpO1xuXHQgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgIHdhcm4kMShcblx0ICAgICAgICBcImBr
ZXlgIGRvZXMgbm90IHdvcmsgb24gPHNsb3Q+IGJlY2F1c2Ugc2xvdHMgYXJlIGFic3RyYWN0IG91
dGxldHMgXCIgK1xuXHQgICAgICAgIFwiYW5kIGNhbiBwb3NzaWJseSBleHBhbmQgaW50byBtdWx0
aXBsZSBlbGVtZW50cy4gXCIgK1xuXHQgICAgICAgIFwiVXNlIHRoZSBrZXkgb24gYSB3cmFwcGlu
ZyBlbGVtZW50IGluc3RlYWQuXCJcblx0ICAgICAgKTtcblx0ICAgIH1cblx0ICB9IGVsc2Uge1xu
XHQgICAgdmFyIHNsb3RUYXJnZXQgPSBnZXRCaW5kaW5nQXR0cihlbCwgJ3Nsb3QnKTtcblx0ICAg
IGlmIChzbG90VGFyZ2V0KSB7XG5cdCAgICAgIGVsLnNsb3RUYXJnZXQgPSBzbG90VGFyZ2V0ID09
PSAnXCJcIicgPyAnXCJkZWZhdWx0XCInIDogc2xvdFRhcmdldDtcblx0ICAgIH1cblx0ICAgIGlm
IChlbC50YWcgPT09ICd0ZW1wbGF0ZScpIHtcblx0ICAgICAgZWwuc2xvdFNjb3BlID0gZ2V0QW5k
UmVtb3ZlQXR0cihlbCwgJ3Njb3BlJyk7XG5cdCAgICB9XG5cdCAgfVxuXHR9XG5cdFxuXHRmdW5j
dGlvbiBwcm9jZXNzQ29tcG9uZW50IChlbCkge1xuXHQgIHZhciBiaW5kaW5nO1xuXHQgIGlmICgo
YmluZGluZyA9IGdldEJpbmRpbmdBdHRyKGVsLCAnaXMnKSkpIHtcblx0ICAgIGVsLmNvbXBvbmVu
dCA9IGJpbmRpbmc7XG5cdCAgfVxuXHQgIGlmIChnZXRBbmRSZW1vdmVBdHRyKGVsLCAnaW5saW5l
LXRlbXBsYXRlJykgIT0gbnVsbCkge1xuXHQgICAgZWwuaW5saW5lVGVtcGxhdGUgPSB0cnVlO1xu
XHQgIH1cblx0fVxuXHRcblx0ZnVuY3Rpb24gcHJvY2Vzc0F0dHJzIChlbCkge1xuXHQgIHZhciBs
aXN0ID0gZWwuYXR0cnNMaXN0O1xuXHQgIHZhciBpLCBsLCBuYW1lLCByYXdOYW1lLCB2YWx1ZSwg
YXJnLCBtb2RpZmllcnMsIGlzUHJvcDtcblx0ICBmb3IgKGkgPSAwLCBsID0gbGlzdC5sZW5ndGg7
IGkgPCBsOyBpKyspIHtcblx0ICAgIG5hbWUgPSByYXdOYW1lID0gbGlzdFtpXS5uYW1lO1xuXHQg
ICAgdmFsdWUgPSBsaXN0W2ldLnZhbHVlO1xuXHQgICAgaWYgKGRpclJFLnRlc3QobmFtZSkpIHtc
blx0ICAgICAgLy8gbWFyayBlbGVtZW50IGFzIGR5bmFtaWNcblx0ICAgICAgZWwuaGFzQmluZGlu
Z3MgPSB0cnVlO1xuXHQgICAgICAvLyBtb2RpZmllcnNcblx0ICAgICAgbW9kaWZpZXJzID0gcGFy
c2VNb2RpZmllcnMobmFtZSk7XG5cdCAgICAgIGlmIChtb2RpZmllcnMpIHtcblx0ICAgICAgICBu
YW1lID0gbmFtZS5yZXBsYWNlKG1vZGlmaWVyUkUsICcnKTtcblx0ICAgICAgfVxuXHQgICAgICBp
ZiAoYmluZFJFLnRlc3QobmFtZSkpIHsgLy8gdi1iaW5kXG5cdCAgICAgICAgbmFtZSA9IG5hbWUu
cmVwbGFjZShiaW5kUkUsICcnKTtcblx0ICAgICAgICB2YWx1ZSA9IHBhcnNlRmlsdGVycyh2YWx1
ZSk7XG5cdCAgICAgICAgaWYgKG1vZGlmaWVycykge1xuXHQgICAgICAgICAgaWYgKG1vZGlmaWVy
cy5wcm9wKSB7XG5cdCAgICAgICAgICAgIGlzUHJvcCA9IHRydWU7XG5cdCAgICAgICAgICAgIG5h
bWUgPSBjYW1lbGl6ZShuYW1lKTtcblx0ICAgICAgICAgICAgaWYgKG5hbWUgPT09ICdpbm5lckh0
bWwnKSB7IG5hbWUgPSAnaW5uZXJIVE1MJzsgfVxuXHQgICAgICAgICAgfVxuXHQgICAgICAgICAg
aWYgKG1vZGlmaWVycy5jYW1lbCkge1xuXHQgICAgICAgICAgICBuYW1lID0gY2FtZWxpemUobmFt
ZSk7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICAgIGlmIChpc1Byb3AgfHwg
cGxhdGZvcm1NdXN0VXNlUHJvcChlbC50YWcsIG5hbWUpKSB7XG5cdCAgICAgICAgICBhZGRQcm9w
KGVsLCBuYW1lLCB2YWx1ZSk7XG5cdCAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgIGFkZEF0
dHIoZWwsIG5hbWUsIHZhbHVlKTtcblx0ICAgICAgICB9XG5cdCAgICAgIH0gZWxzZSBpZiAob25S
RS50ZXN0KG5hbWUpKSB7IC8vIHYtb25cblx0ICAgICAgICBuYW1lID0gbmFtZS5yZXBsYWNlKG9u
UkUsICcnKTtcblx0ICAgICAgICBhZGRIYW5kbGVyKGVsLCBuYW1lLCB2YWx1ZSwgbW9kaWZpZXJz
KTtcblx0ICAgICAgfSBlbHNlIHsgLy8gbm9ybWFsIGRpcmVjdGl2ZXNcblx0ICAgICAgICBuYW1l
ID0gbmFtZS5yZXBsYWNlKGRpclJFLCAnJyk7XG5cdCAgICAgICAgLy8gcGFyc2UgYXJnXG5cdCAg
ICAgICAgdmFyIGFyZ01hdGNoID0gbmFtZS5tYXRjaChhcmdSRSk7XG5cdCAgICAgICAgaWYgKGFy
Z01hdGNoICYmIChhcmcgPSBhcmdNYXRjaFsxXSkpIHtcblx0ICAgICAgICAgIG5hbWUgPSBuYW1l
LnNsaWNlKDAsIC0oYXJnLmxlbmd0aCArIDEpKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgYWRk
RGlyZWN0aXZlKGVsLCBuYW1lLCByYXdOYW1lLCB2YWx1ZSwgYXJnLCBtb2RpZmllcnMpO1xuXHQg
ICAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgICAgY2hlY2tGb3JBbGlhc01vZGVsKGVsLCB2
YWx1ZSk7XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICAv
LyBsaXRlcmFsIGF0dHJpYnV0ZVxuXHQgICAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgICB2YXIg
ZXhwcmVzc2lvbiA9IHBhcnNlVGV4dCh2YWx1ZSwgZGVsaW1pdGVycyk7XG5cdCAgICAgICAgaWYg
KGV4cHJlc3Npb24pIHtcblx0ICAgICAgICAgIHdhcm4kMShcblx0ICAgICAgICAgICAgbmFtZSAr
IFwiPVxcXCJcIiArIHZhbHVlICsgXCJcXFwiOiBcIiArXG5cdCAgICAgICAgICAgICdJbnRlcnBv
bGF0aW9uIGluc2lkZSBhdHRyaWJ1dGVzIGhhcyBiZWVuIHJlbW92ZWQuICcgK1xuXHQgICAgICAg
ICAgICAnVXNlIHYtYmluZCBvciB0aGUgY29sb24gc2hvcnRoYW5kIGluc3RlYWQuIEZvciBleGFt
cGxlLCAnICtcblx0ICAgICAgICAgICAgJ2luc3RlYWQgb2YgPGRpdiBpZD1cInt7IHZhbCB9fVwi
PiwgdXNlIDxkaXYgOmlkPVwidmFsXCI+Lidcblx0ICAgICAgICAgICk7XG5cdCAgICAgICAgfVxu
XHQgICAgICB9XG5cdCAgICAgIGFkZEF0dHIoZWwsIG5hbWUsIEpTT04uc3RyaW5naWZ5KHZhbHVl
KSk7XG5cdCAgICB9XG5cdCAgfVxuXHR9XG5cdFxuXHRmdW5jdGlvbiBjaGVja0luRm9yIChlbCkg
e1xuXHQgIHZhciBwYXJlbnQgPSBlbDtcblx0ICB3aGlsZSAocGFyZW50KSB7XG5cdCAgICBpZiAo
cGFyZW50LmZvciAhPT0gdW5kZWZpbmVkKSB7XG5cdCAgICAgIHJldHVybiB0cnVlXG5cdCAgICB9
XG5cdCAgICBwYXJlbnQgPSBwYXJlbnQucGFyZW50O1xuXHQgIH1cblx0ICByZXR1cm4gZmFsc2Vc
blx0fVxuXHRcblx0ZnVuY3Rpb24gcGFyc2VNb2RpZmllcnMgKG5hbWUpIHtcblx0ICB2YXIgbWF0
Y2ggPSBuYW1lLm1hdGNoKG1vZGlmaWVyUkUpO1xuXHQgIGlmIChtYXRjaCkge1xuXHQgICAgdmFy
IHJldCA9IHt9O1xuXHQgICAgbWF0Y2guZm9yRWFjaChmdW5jdGlvbiAobSkgeyByZXRbbS5zbGlj
ZSgxKV0gPSB0cnVlOyB9KTtcblx0ICAgIHJldHVybiByZXRcblx0ICB9XG5cdH1cblx0XG5cdGZ1
bmN0aW9uIG1ha2VBdHRyc01hcCAoYXR0cnMpIHtcblx0ICB2YXIgbWFwID0ge307XG5cdCAgZm9y
ICh2YXIgaSA9IDAsIGwgPSBhdHRycy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcblx0ICAgIGlmIChm
YWxzZSkge1xuXHQgICAgICB3YXJuJDEoJ2R1cGxpY2F0ZSBhdHRyaWJ1dGU6ICcgKyBhdHRyc1tp
XS5uYW1lKTtcblx0ICAgIH1cblx0ICAgIG1hcFthdHRyc1tpXS5uYW1lXSA9IGF0dHJzW2ldLnZh
bHVlO1xuXHQgIH1cblx0ICByZXR1cm4gbWFwXG5cdH1cblx0XG5cdGZ1bmN0aW9uIGZpbmRQcmV2
RWxlbWVudCAoY2hpbGRyZW4pIHtcblx0ICB2YXIgaSA9IGNoaWxkcmVuLmxlbmd0aDtcblx0ICB3
aGlsZSAoaS0tKSB7XG5cdCAgICBpZiAoY2hpbGRyZW5baV0udGFnKSB7IHJldHVybiBjaGlsZHJl
bltpXSB9XG5cdCAgfVxuXHR9XG5cdFxuXHRmdW5jdGlvbiBpc0ZvcmJpZGRlblRhZyAoZWwpIHtc
blx0ICByZXR1cm4gKFxuXHQgICAgZWwudGFnID09PSAnc3R5bGUnIHx8XG5cdCAgICAoZWwudGFn
ID09PSAnc2NyaXB0JyAmJiAoXG5cdCAgICAgICFlbC5hdHRyc01hcC50eXBlIHx8XG5cdCAgICAg
IGVsLmF0dHJzTWFwLnR5cGUgPT09ICd0ZXh0L2phdmFzY3JpcHQnXG5cdCAgICApKVxuXHQgIClc
blx0fVxuXHRcblx0dmFyIGllTlNCdWcgPSAvXnhtbG5zOk5TXFxkKy87XG5cdHZhciBpZU5TUHJl
Zml4ID0gL15OU1xcZCs6Lztcblx0XG5cdC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5cdGZ1
bmN0aW9uIGd1YXJkSUVTVkdCdWcgKGF0dHJzKSB7XG5cdCAgdmFyIHJlcyA9IFtdO1xuXHQgIGZv
ciAodmFyIGkgPSAwOyBpIDwgYXR0cnMubGVuZ3RoOyBpKyspIHtcblx0ICAgIHZhciBhdHRyID0g
YXR0cnNbaV07XG5cdCAgICBpZiAoIWllTlNCdWcudGVzdChhdHRyLm5hbWUpKSB7XG5cdCAgICAg
IGF0dHIubmFtZSA9IGF0dHIubmFtZS5yZXBsYWNlKGllTlNQcmVmaXgsICcnKTtcblx0ICAgICAg
cmVzLnB1c2goYXR0cik7XG5cdCAgICB9XG5cdCAgfVxuXHQgIHJldHVybiByZXNcblx0fVxuXHRc
blx0ZnVuY3Rpb24gY2hlY2tGb3JBbGlhc01vZGVsIChlbCwgdmFsdWUpIHtcblx0ICB2YXIgX2Vs
ID0gZWw7XG5cdCAgd2hpbGUgKF9lbCkge1xuXHQgICAgaWYgKF9lbC5mb3IgJiYgX2VsLmFsaWFz
ID09PSB2YWx1ZSkge1xuXHQgICAgICB3YXJuJDEoXG5cdCAgICAgICAgXCI8XCIgKyAoZWwudGFn
KSArIFwiIHYtbW9kZWw9XFxcIlwiICsgdmFsdWUgKyBcIlxcXCI+OiBcIiArXG5cdCAgICAgICAg
XCJZb3UgYXJlIGJpbmRpbmcgdi1tb2RlbCBkaXJlY3RseSB0byBhIHYtZm9yIGl0ZXJhdGlvbiBh
bGlhcy4gXCIgK1xuXHQgICAgICAgIFwiVGhpcyB3aWxsIG5vdCBiZSBhYmxlIHRvIG1vZGlmeSB0
aGUgdi1mb3Igc291cmNlIGFycmF5IGJlY2F1c2UgXCIgK1xuXHQgICAgICAgIFwid3JpdGluZyB0
byB0aGUgYWxpYXMgaXMgbGlrZSBtb2RpZnlpbmcgYSBmdW5jdGlvbiBsb2NhbCB2YXJpYWJsZS4g
XCIgK1xuXHQgICAgICAgIFwiQ29uc2lkZXIgdXNpbmcgYW4gYXJyYXkgb2Ygb2JqZWN0cyBhbmQg
dXNlIHYtbW9kZWwgb24gYW4gb2JqZWN0IHByb3BlcnR5IGluc3RlYWQuXCJcblx0ICAgICAgKTtc
blx0ICAgIH1cblx0ICAgIF9lbCA9IF9lbC5wYXJlbnQ7XG5cdCAgfVxuXHR9XG5cdFxuXHQvKiAg
Ki9cblx0XG5cdHZhciBpc1N0YXRpY0tleTtcblx0dmFyIGlzUGxhdGZvcm1SZXNlcnZlZFRhZztc
blx0XG5cdHZhciBnZW5TdGF0aWNLZXlzQ2FjaGVkID0gY2FjaGVkKGdlblN0YXRpY0tleXMkMSk7
XG5cdFxuXHQvKipcblx0ICogR29hbCBvZiB0aGUgb3B0aW1pemVyOiB3YWxrIHRoZSBnZW5lcmF0
ZWQgdGVtcGxhdGUgQVNUIHRyZWVcblx0ICogYW5kIGRldGVjdCBzdWItdHJlZXMgdGhhdCBhcmUg
cHVyZWx5IHN0YXRpYywgaS5lLiBwYXJ0cyBvZlxuXHQgKiB0aGUgRE9NIHRoYXQgbmV2ZXIgbmVl
ZHMgdG8gY2hhbmdlLlxuXHQgKlxuXHQgKiBPbmNlIHdlIGRldGVjdCB0aGVzZSBzdWItdHJlZXMs
IHdlIGNhbjpcblx0ICpcblx0ICogMS4gSG9pc3QgdGhlbSBpbnRvIGNvbnN0YW50cywgc28gdGhh
dCB3ZSBubyBsb25nZXIgbmVlZCB0b1xuXHQgKiAgICBjcmVhdGUgZnJlc2ggbm9kZXMgZm9yIHRo
ZW0gb24gZWFjaCByZS1yZW5kZXI7XG5cdCAqIDIuIENvbXBsZXRlbHkgc2tpcCB0aGVtIGluIHRo
ZSBwYXRjaGluZyBwcm9jZXNzLlxuXHQgKi9cblx0ZnVuY3Rpb24gb3B0aW1pemUgKHJvb3QsIG9w
dGlvbnMpIHtcblx0ICBpZiAoIXJvb3QpIHsgcmV0dXJuIH1cblx0ICBpc1N0YXRpY0tleSA9IGdl
blN0YXRpY0tleXNDYWNoZWQob3B0aW9ucy5zdGF0aWNLZXlzIHx8ICcnKTtcblx0ICBpc1BsYXRm
b3JtUmVzZXJ2ZWRUYWcgPSBvcHRpb25zLmlzUmVzZXJ2ZWRUYWcgfHwgKGZ1bmN0aW9uICgpIHsg
cmV0dXJuIGZhbHNlOyB9KTtcblx0ICAvLyBmaXJzdCBwYXNzOiBtYXJrIGFsbCBub24tc3RhdGlj
IG5vZGVzLlxuXHQgIG1hcmtTdGF0aWMocm9vdCk7XG5cdCAgLy8gc2Vjb25kIHBhc3M6IG1hcmsg
c3RhdGljIHJvb3RzLlxuXHQgIG1hcmtTdGF0aWNSb290cyhyb290LCBmYWxzZSk7XG5cdH1cblx0
XG5cdGZ1bmN0aW9uIGdlblN0YXRpY0tleXMkMSAoa2V5cykge1xuXHQgIHJldHVybiBtYWtlTWFw
KFxuXHQgICAgJ3R5cGUsdGFnLGF0dHJzTGlzdCxhdHRyc01hcCxwbGFpbixwYXJlbnQsY2hpbGRy
ZW4sYXR0cnMnICtcblx0ICAgIChrZXlzID8gJywnICsga2V5cyA6ICcnKVxuXHQgIClcblx0fVxu
XHRcblx0ZnVuY3Rpb24gbWFya1N0YXRpYyAobm9kZSkge1xuXHQgIG5vZGUuc3RhdGljID0gaXNT
dGF0aWMobm9kZSk7XG5cdCAgaWYgKG5vZGUudHlwZSA9PT0gMSkge1xuXHQgICAgLy8gZG8gbm90
IG1ha2UgY29tcG9uZW50IHNsb3QgY29udGVudCBzdGF0aWMuIHRoaXMgYXZvaWRzXG5cdCAgICAv
LyAxLiBjb21wb25lbnRzIG5vdCBhYmxlIHRvIG11dGF0ZSBzbG90IG5vZGVzXG5cdCAgICAvLyAy
LiBzdGF0aWMgc2xvdCBjb250ZW50IGZhaWxzIGZvciBob3QtcmVsb2FkaW5nXG5cdCAgICBpZiAo
XG5cdCAgICAgICFpc1BsYXRmb3JtUmVzZXJ2ZWRUYWcobm9kZS50YWcpICYmXG5cdCAgICAgIG5v
ZGUudGFnICE9PSAnc2xvdCcgJiZcblx0ICAgICAgbm9kZS5hdHRyc01hcFsnaW5saW5lLXRlbXBs
YXRlJ10gPT0gbnVsbFxuXHQgICAgKSB7XG5cdCAgICAgIHJldHVyblxuXHQgICAgfVxuXHQgICAg
Zm9yICh2YXIgaSA9IDAsIGwgPSBub2RlLmNoaWxkcmVuLmxlbmd0aDsgaSA8IGw7IGkrKykge1xu
XHQgICAgICB2YXIgY2hpbGQgPSBub2RlLmNoaWxkcmVuW2ldO1xuXHQgICAgICBtYXJrU3RhdGlj
KGNoaWxkKTtcblx0ICAgICAgaWYgKCFjaGlsZC5zdGF0aWMpIHtcblx0ICAgICAgICBub2RlLnN0
YXRpYyA9IGZhbHNlO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfVxuXHR9XG5cdFxuXHRmdW5j
dGlvbiBtYXJrU3RhdGljUm9vdHMgKG5vZGUsIGlzSW5Gb3IpIHtcblx0ICBpZiAobm9kZS50eXBl
ID09PSAxKSB7XG5cdCAgICBpZiAobm9kZS5zdGF0aWMgfHwgbm9kZS5vbmNlKSB7XG5cdCAgICAg
IG5vZGUuc3RhdGljSW5Gb3IgPSBpc0luRm9yO1xuXHQgICAgfVxuXHQgICAgLy8gRm9yIGEgbm9k
ZSB0byBxdWFsaWZ5IGFzIGEgc3RhdGljIHJvb3QsIGl0IHNob3VsZCBoYXZlIGNoaWxkcmVuIHRo
YXRcblx0ICAgIC8vIGFyZSBub3QganVzdCBzdGF0aWMgdGV4dC4gT3RoZXJ3aXNlIHRoZSBjb3N0
IG9mIGhvaXN0aW5nIG91dCB3aWxsXG5cdCAgICAvLyBvdXR3ZWlnaCB0aGUgYmVuZWZpdHMgYW5k
IGl0J3MgYmV0dGVyIG9mZiB0byBqdXN0IGFsd2F5cyByZW5kZXIgaXQgZnJlc2guXG5cdCAgICBp
ZiAobm9kZS5zdGF0aWMgJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggJiYgIShcblx0ICAgICAgbm9k
ZS5jaGlsZHJlbi5sZW5ndGggPT09IDEgJiZcblx0ICAgICAgbm9kZS5jaGlsZHJlblswXS50eXBl
ID09PSAzXG5cdCAgICApKSB7XG5cdCAgICAgIG5vZGUuc3RhdGljUm9vdCA9IHRydWU7XG5cdCAg
ICAgIHJldHVyblxuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgbm9kZS5zdGF0aWNSb290ID0gZmFs
c2U7XG5cdCAgICB9XG5cdCAgICBpZiAobm9kZS5jaGlsZHJlbikge1xuXHQgICAgICBmb3IgKHZh
ciBpID0gMCwgbCA9IG5vZGUuY2hpbGRyZW4ubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG5cdCAgICAg
ICAgbWFya1N0YXRpY1Jvb3RzKG5vZGUuY2hpbGRyZW5baV0sIGlzSW5Gb3IgfHwgISFub2RlLmZv
cik7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICAgIGlmIChub2RlLmNvbmRpdGlvbnMpIHtcblx0
ICAgICAgd2Fsa1Rocm91Z2hDb25kaXRpb25zQmxvY2tzKG5vZGUuY29uZGl0aW9ucywgaXNJbkZv
cik7XG5cdCAgICB9XG5cdCAgfVxuXHR9XG5cdFxuXHRmdW5jdGlvbiB3YWxrVGhyb3VnaENvbmRp
dGlvbnNCbG9ja3MgKGNvbmRpdGlvbkJsb2NrcywgaXNJbkZvcikge1xuXHQgIGZvciAodmFyIGkg
PSAxLCBsZW4gPSBjb25kaXRpb25CbG9ja3MubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcblx0ICAg
IG1hcmtTdGF0aWNSb290cyhjb25kaXRpb25CbG9ja3NbaV0uYmxvY2ssIGlzSW5Gb3IpO1xuXHQg
IH1cblx0fVxuXHRcblx0ZnVuY3Rpb24gaXNTdGF0aWMgKG5vZGUpIHtcblx0ICBpZiAobm9kZS50
eXBlID09PSAyKSB7IC8vIGV4cHJlc3Npb25cblx0ICAgIHJldHVybiBmYWxzZVxuXHQgIH1cblx0
ICBpZiAobm9kZS50eXBlID09PSAzKSB7IC8vIHRleHRcblx0ICAgIHJldHVybiB0cnVlXG5cdCAg
fVxuXHQgIHJldHVybiAhIShub2RlLnByZSB8fCAoXG5cdCAgICAhbm9kZS5oYXNCaW5kaW5ncyAm
JiAvLyBubyBkeW5hbWljIGJpbmRpbmdzXG5cdCAgICAhbm9kZS5pZiAmJiAhbm9kZS5mb3IgJiYg
Ly8gbm90IHYtaWYgb3Igdi1mb3Igb3Igdi1lbHNlXG5cdCAgICAhaXNCdWlsdEluVGFnKG5vZGUu
dGFnKSAmJiAvLyBub3QgYSBidWlsdC1pblxuXHQgICAgaXNQbGF0Zm9ybVJlc2VydmVkVGFnKG5v
ZGUudGFnKSAmJiAvLyBub3QgYSBjb21wb25lbnRcblx0ICAgICFpc0RpcmVjdENoaWxkT2ZUZW1w
bGF0ZUZvcihub2RlKSAmJlxuXHQgICAgT2JqZWN0LmtleXMobm9kZSkuZXZlcnkoaXNTdGF0aWNL
ZXkpXG5cdCAgKSlcblx0fVxuXHRcblx0ZnVuY3Rpb24gaXNEaXJlY3RDaGlsZE9mVGVtcGxhdGVG
b3IgKG5vZGUpIHtcblx0ICB3aGlsZSAobm9kZS5wYXJlbnQpIHtcblx0ICAgIG5vZGUgPSBub2Rl
LnBhcmVudDtcblx0ICAgIGlmIChub2RlLnRhZyAhPT0gJ3RlbXBsYXRlJykge1xuXHQgICAgICBy
ZXR1cm4gZmFsc2Vcblx0ICAgIH1cblx0ICAgIGlmIChub2RlLmZvcikge1xuXHQgICAgICByZXR1
cm4gdHJ1ZVxuXHQgICAgfVxuXHQgIH1cblx0ICByZXR1cm4gZmFsc2Vcblx0fVxuXHRcblx0Lyog
ICovXG5cdFxuXHR2YXIgZm5FeHBSRSA9IC9eXFxzKihbXFx3JF9dK3xcXChbXildKj9cXCkpXFxz
Kj0+fF5mdW5jdGlvblxccypcXCgvO1xuXHR2YXIgc2ltcGxlUGF0aFJFID0gL15cXHMqW0EtWmEt
el8kXVtcXHckXSooPzpcXC5bQS1aYS16XyRdW1xcdyRdKnxcXFsnLio/J118XFxbXCIuKj9cIl18
XFxbXFxkK118XFxbW0EtWmEtel8kXVtcXHckXSpdKSpcXHMqJC87XG5cdFxuXHQvLyBrZXlDb2Rl
IGFsaWFzZXNcblx0dmFyIGtleUNvZGVzID0ge1xuXHQgIGVzYzogMjcsXG5cdCAgdGFiOiA5LFxu
XHQgIGVudGVyOiAxMyxcblx0ICBzcGFjZTogMzIsXG5cdCAgdXA6IDM4LFxuXHQgIGxlZnQ6IDM3
LFxuXHQgIHJpZ2h0OiAzOSxcblx0ICBkb3duOiA0MCxcblx0ICAnZGVsZXRlJzogWzgsIDQ2XVxu
XHR9O1xuXHRcblx0dmFyIG1vZGlmaWVyQ29kZSA9IHtcblx0ICBzdG9wOiAnJGV2ZW50LnN0b3BQ
cm9wYWdhdGlvbigpOycsXG5cdCAgcHJldmVudDogJyRldmVudC5wcmV2ZW50RGVmYXVsdCgpOycs
XG5cdCAgc2VsZjogJ2lmKCRldmVudC50YXJnZXQgIT09ICRldmVudC5jdXJyZW50VGFyZ2V0KXJl
dHVybjsnXG5cdH07XG5cdFxuXHR2YXIgaXNNb3VzZUV2ZW50UkUgPSAvXm1vdXNlfF5wb2ludGVy
fF4oY2xpY2t8ZGJsY2xpY2t8Y29udGV4dG1lbnV8d2hlZWwpJC87XG5cdHZhciBtb3VzZUV2ZW50
TW9kaWZpZXJDb2RlID0ge1xuXHQgIGN0cmw6ICdpZighJGV2ZW50LmN0cmxLZXkpcmV0dXJuOycs
XG5cdCAgc2hpZnQ6ICdpZighJGV2ZW50LnNoaWZ0S2V5KXJldHVybjsnLFxuXHQgIGFsdDogJ2lm
KCEkZXZlbnQuYWx0S2V5KXJldHVybjsnLFxuXHQgIG1ldGE6ICdpZighJGV2ZW50Lm1ldGFLZXkp
cmV0dXJuOydcblx0fTtcblx0XG5cdGZ1bmN0aW9uIGdlbkhhbmRsZXJzIChldmVudHMsIG5hdGl2
ZSkge1xuXHQgIHZhciByZXMgPSBuYXRpdmUgPyAnbmF0aXZlT246eycgOiAnb246eyc7XG5cdCAg
Zm9yICh2YXIgbmFtZSBpbiBldmVudHMpIHtcblx0ICAgIHJlcyArPSBcIlxcXCJcIiArIG5hbWUg
KyBcIlxcXCI6XCIgKyAoZ2VuSGFuZGxlcihuYW1lLCBldmVudHNbbmFtZV0pKSArIFwiLFwiO1xu
XHQgIH1cblx0ICByZXR1cm4gcmVzLnNsaWNlKDAsIC0xKSArICd9J1xuXHR9XG5cdFxuXHRmdW5j
dGlvbiBnZW5IYW5kbGVyIChcblx0ICBuYW1lLFxuXHQgIGhhbmRsZXJcblx0KSB7XG5cdCAgaWYg
KCFoYW5kbGVyKSB7XG5cdCAgICByZXR1cm4gJ2Z1bmN0aW9uKCl7fSdcblx0ICB9IGVsc2UgaWYg
KEFycmF5LmlzQXJyYXkoaGFuZGxlcikpIHtcblx0ICAgIHJldHVybiAoXCJbXCIgKyAoaGFuZGxl
ci5tYXAoZnVuY3Rpb24gKGhhbmRsZXIpIHsgcmV0dXJuIGdlbkhhbmRsZXIobmFtZSwgaGFuZGxl
cik7IH0pLmpvaW4oJywnKSkgKyBcIl1cIilcblx0ICB9IGVsc2UgaWYgKCFoYW5kbGVyLm1vZGlm
aWVycykge1xuXHQgICAgcmV0dXJuIGZuRXhwUkUudGVzdChoYW5kbGVyLnZhbHVlKSB8fCBzaW1w
bGVQYXRoUkUudGVzdChoYW5kbGVyLnZhbHVlKVxuXHQgICAgICA/IGhhbmRsZXIudmFsdWVcblx0
ICAgICAgOiAoXCJmdW5jdGlvbigkZXZlbnQpe1wiICsgKGhhbmRsZXIudmFsdWUpICsgXCJ9XCIp
XG5cdCAgfSBlbHNlIHtcblx0ICAgIHZhciBjb2RlID0gJyc7XG5cdCAgICB2YXIga2V5cyA9IFtd
O1xuXHQgICAgdmFyIGlzTW91c2VFdm5ldCA9IGlzTW91c2VFdmVudFJFLnRlc3QobmFtZSk7XG5c
dCAgICBmb3IgKHZhciBrZXkgaW4gaGFuZGxlci5tb2RpZmllcnMpIHtcblx0ICAgICAgaWYgKG1v
ZGlmaWVyQ29kZVtrZXldKSB7XG5cdCAgICAgICAgY29kZSArPSBtb2RpZmllckNvZGVba2V5XTtc
blx0ICAgICAgfSBlbHNlIGlmIChpc01vdXNlRXZuZXQgJiYgbW91c2VFdmVudE1vZGlmaWVyQ29k
ZVtrZXldKSB7XG5cdCAgICAgICAgY29kZSArPSBtb3VzZUV2ZW50TW9kaWZpZXJDb2RlW2tleV07
XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAga2V5cy5wdXNoKGtleSk7XG5cdCAgICAgIH1c
blx0ICAgIH1cblx0ICAgIGlmIChrZXlzLmxlbmd0aCkge1xuXHQgICAgICBjb2RlID0gZ2VuS2V5
RmlsdGVyKGtleXMpICsgY29kZTtcblx0ICAgIH1cblx0ICAgIHZhciBoYW5kbGVyQ29kZSA9IHNp
bXBsZVBhdGhSRS50ZXN0KGhhbmRsZXIudmFsdWUpXG5cdCAgICAgID8gaGFuZGxlci52YWx1ZSAr
ICcoJGV2ZW50KSdcblx0ICAgICAgOiBoYW5kbGVyLnZhbHVlO1xuXHQgICAgcmV0dXJuICdmdW5j
dGlvbigkZXZlbnQpeycgKyBjb2RlICsgaGFuZGxlckNvZGUgKyAnfSdcblx0ICB9XG5cdH1cblx0
XG5cdGZ1bmN0aW9uIGdlbktleUZpbHRlciAoa2V5cykge1xuXHQgIHZhciBjb2RlID0ga2V5cy5s
ZW5ndGggPT09IDFcblx0ICAgID8gbm9ybWFsaXplS2V5Q29kZShrZXlzWzBdKVxuXHQgICAgOiBB
cnJheS5wcm90b3R5cGUuY29uY2F0LmFwcGx5KFtdLCBrZXlzLm1hcChub3JtYWxpemVLZXlDb2Rl
KSk7XG5cdCAgaWYgKEFycmF5LmlzQXJyYXkoY29kZSkpIHtcblx0ICAgIHJldHVybiAoXCJpZihc
IiArIChjb2RlLm1hcChmdW5jdGlvbiAoYykgeyByZXR1cm4gKFwiJGV2ZW50LmtleUNvZGUhPT1c
IiArIGMpOyB9KS5qb2luKCcmJicpKSArIFwiKXJldHVybjtcIilcblx0ICB9IGVsc2Uge1xuXHQg
ICAgcmV0dXJuIChcImlmKCRldmVudC5rZXlDb2RlIT09XCIgKyBjb2RlICsgXCIpcmV0dXJuO1wi
KVxuXHQgIH1cblx0fVxuXHRcblx0ZnVuY3Rpb24gbm9ybWFsaXplS2V5Q29kZSAoa2V5KSB7XG5c
dCAgcmV0dXJuIChcblx0ICAgIHBhcnNlSW50KGtleSwgMTApIHx8IC8vIG51bWJlciBrZXlDb2Rl
XG5cdCAgICBrZXlDb2Rlc1trZXldIHx8IC8vIGJ1aWx0LWluIGFsaWFzXG5cdCAgICAoXCJfayhc
IiArIChKU09OLnN0cmluZ2lmeShrZXkpKSArIFwiKVwiKSAvLyBjdXN0b20gYWxpYXNcblx0ICAp
XG5cdH1cblx0XG5cdC8qICAqL1xuXHRcblx0ZnVuY3Rpb24gYmluZCQyIChlbCwgZGlyKSB7XG5c
dCAgZWwud3JhcERhdGEgPSBmdW5jdGlvbiAoY29kZSkge1xuXHQgICAgcmV0dXJuIChcIl9iKFwi
ICsgY29kZSArIFwiLCdcIiArIChlbC50YWcpICsgXCInLFwiICsgKGRpci52YWx1ZSkgKyAoZGly
Lm1vZGlmaWVycyAmJiBkaXIubW9kaWZpZXJzLnByb3AgPyAnLHRydWUnIDogJycpICsgXCIpXCIp
XG5cdCAgfTtcblx0fVxuXHRcblx0dmFyIGJhc2VEaXJlY3RpdmVzID0ge1xuXHQgIGJpbmQ6IGJp
bmQkMixcblx0ICBjbG9hazogbm9vcFxuXHR9O1xuXHRcblx0LyogICovXG5cdFxuXHQvLyBjb25m
aWd1cmFibGUgc3RhdGVcblx0dmFyIHdhcm4kMjtcblx0dmFyIHRyYW5zZm9ybXMkMTtcblx0dmFy
IGRhdGFHZW5GbnM7XG5cdHZhciBwbGF0Zm9ybURpcmVjdGl2ZXMkMTtcblx0dmFyIHN0YXRpY1Jl
bmRlckZucztcblx0dmFyIG9uY2VDb3VudDtcblx0dmFyIGN1cnJlbnRPcHRpb25zO1xuXHRcblx0
ZnVuY3Rpb24gZ2VuZXJhdGUgKFxuXHQgIGFzdCxcblx0ICBvcHRpb25zXG5cdCkge1xuXHQgIC8v
IHNhdmUgcHJldmlvdXMgc3RhdGljUmVuZGVyRm5zIHNvIGdlbmVyYXRlIGNhbGxzIGNhbiBiZSBu
ZXN0ZWRcblx0ICB2YXIgcHJldlN0YXRpY1JlbmRlckZucyA9IHN0YXRpY1JlbmRlckZucztcblx0
ICB2YXIgY3VycmVudFN0YXRpY1JlbmRlckZucyA9IHN0YXRpY1JlbmRlckZucyA9IFtdO1xuXHQg
IHZhciBwcmV2T25jZUNvdW50ID0gb25jZUNvdW50O1xuXHQgIG9uY2VDb3VudCA9IDA7XG5cdCAg
Y3VycmVudE9wdGlvbnMgPSBvcHRpb25zO1xuXHQgIHdhcm4kMiA9IG9wdGlvbnMud2FybiB8fCBi
YXNlV2Fybjtcblx0ICB0cmFuc2Zvcm1zJDEgPSBwbHVja01vZHVsZUZ1bmN0aW9uKG9wdGlvbnMu
bW9kdWxlcywgJ3RyYW5zZm9ybUNvZGUnKTtcblx0ICBkYXRhR2VuRm5zID0gcGx1Y2tNb2R1bGVG
dW5jdGlvbihvcHRpb25zLm1vZHVsZXMsICdnZW5EYXRhJyk7XG5cdCAgcGxhdGZvcm1EaXJlY3Rp
dmVzJDEgPSBvcHRpb25zLmRpcmVjdGl2ZXMgfHwge307XG5cdCAgdmFyIGNvZGUgPSBhc3QgPyBn
ZW5FbGVtZW50KGFzdCkgOiAnX2goXCJkaXZcIiknO1xuXHQgIHN0YXRpY1JlbmRlckZucyA9IHBy
ZXZTdGF0aWNSZW5kZXJGbnM7XG5cdCAgb25jZUNvdW50ID0gcHJldk9uY2VDb3VudDtcblx0ICBy
ZXR1cm4ge1xuXHQgICAgcmVuZGVyOiAoXCJ3aXRoKHRoaXMpe3JldHVybiBcIiArIGNvZGUgKyBc
In1cIiksXG5cdCAgICBzdGF0aWNSZW5kZXJGbnM6IGN1cnJlbnRTdGF0aWNSZW5kZXJGbnNcblx0
ICB9XG5cdH1cblx0XG5cdGZ1bmN0aW9uIGdlbkVsZW1lbnQgKGVsKSB7XG5cdCAgaWYgKGVsLnN0
YXRpY1Jvb3QgJiYgIWVsLnN0YXRpY1Byb2Nlc3NlZCkge1xuXHQgICAgcmV0dXJuIGdlblN0YXRp
YyhlbClcblx0ICB9IGVsc2UgaWYgKGVsLm9uY2UgJiYgIWVsLm9uY2VQcm9jZXNzZWQpIHtcblx0
ICAgIHJldHVybiBnZW5PbmNlKGVsKVxuXHQgIH0gZWxzZSBpZiAoZWwuZm9yICYmICFlbC5mb3JQ
cm9jZXNzZWQpIHtcblx0ICAgIHJldHVybiBnZW5Gb3IoZWwpXG5cdCAgfSBlbHNlIGlmIChlbC5p
ZiAmJiAhZWwuaWZQcm9jZXNzZWQpIHtcblx0ICAgIHJldHVybiBnZW5JZihlbClcblx0ICB9IGVs
c2UgaWYgKGVsLnRhZyA9PT0gJ3RlbXBsYXRlJyAmJiAhZWwuc2xvdFRhcmdldCkge1xuXHQgICAg
cmV0dXJuIGdlbkNoaWxkcmVuKGVsKSB8fCAndm9pZCAwJ1xuXHQgIH0gZWxzZSBpZiAoZWwudGFn
ID09PSAnc2xvdCcpIHtcblx0ICAgIHJldHVybiBnZW5TbG90KGVsKVxuXHQgIH0gZWxzZSB7XG5c
dCAgICAvLyBjb21wb25lbnQgb3IgZWxlbWVudFxuXHQgICAgdmFyIGNvZGU7XG5cdCAgICBpZiAo
ZWwuY29tcG9uZW50KSB7XG5cdCAgICAgIGNvZGUgPSBnZW5Db21wb25lbnQoZWwuY29tcG9uZW50
LCBlbCk7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICB2YXIgZGF0YSA9IGVsLnBsYWluID8gdW5k
ZWZpbmVkIDogZ2VuRGF0YShlbCk7XG5cdFxuXHQgICAgICB2YXIgY2hpbGRyZW4gPSBlbC5pbmxp
bmVUZW1wbGF0ZSA/IG51bGwgOiBnZW5DaGlsZHJlbihlbCk7XG5cdCAgICAgIGNvZGUgPSBcIl9o
KCdcIiArIChlbC50YWcpICsgXCInXCIgKyAoZGF0YSA/IChcIixcIiArIGRhdGEpIDogJycpICsg
KGNoaWxkcmVuID8gKFwiLFwiICsgY2hpbGRyZW4pIDogJycpICsgXCIpXCI7XG5cdCAgICB9XG5c
dCAgICAvLyBtb2R1bGUgdHJhbnNmb3Jtc1xuXHQgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0cmFu
c2Zvcm1zJDEubGVuZ3RoOyBpKyspIHtcblx0ICAgICAgY29kZSA9IHRyYW5zZm9ybXMkMVtpXShl
bCwgY29kZSk7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gY29kZVxuXHQgIH1cblx0fVxuXHRcblx0
Ly8gaG9pc3Qgc3RhdGljIHN1Yi10cmVlcyBvdXRcblx0ZnVuY3Rpb24gZ2VuU3RhdGljIChlbCkg
e1xuXHQgIGVsLnN0YXRpY1Byb2Nlc3NlZCA9IHRydWU7XG5cdCAgc3RhdGljUmVuZGVyRm5zLnB1
c2goKFwid2l0aCh0aGlzKXtyZXR1cm4gXCIgKyAoZ2VuRWxlbWVudChlbCkpICsgXCJ9XCIpKTtc
blx0ICByZXR1cm4gKFwiX20oXCIgKyAoc3RhdGljUmVuZGVyRm5zLmxlbmd0aCAtIDEpICsgKGVs
LnN0YXRpY0luRm9yID8gJyx0cnVlJyA6ICcnKSArIFwiKVwiKVxuXHR9XG5cdFxuXHQvLyB2LW9u
Y2Vcblx0ZnVuY3Rpb24gZ2VuT25jZSAoZWwpIHtcblx0ICBlbC5vbmNlUHJvY2Vzc2VkID0gdHJ1
ZTtcblx0ICBpZiAoZWwuaWYgJiYgIWVsLmlmUHJvY2Vzc2VkKSB7XG5cdCAgICByZXR1cm4gZ2Vu
SWYoZWwpXG5cdCAgfSBlbHNlIGlmIChlbC5zdGF0aWNJbkZvcikge1xuXHQgICAgdmFyIGtleSA9
ICcnO1xuXHQgICAgdmFyIHBhcmVudCA9IGVsLnBhcmVudDtcblx0ICAgIHdoaWxlIChwYXJlbnQp
IHtcblx0ICAgICAgaWYgKHBhcmVudC5mb3IpIHtcblx0ICAgICAgICBrZXkgPSBwYXJlbnQua2V5
O1xuXHQgICAgICAgIGJyZWFrXG5cdCAgICAgIH1cblx0ICAgICAgcGFyZW50ID0gcGFyZW50LnBh
cmVudDtcblx0ICAgIH1cblx0ICAgIGlmICgha2V5KSB7XG5cdCAgICAgIChcInByb2R1Y3Rpb25c
IikgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuJDIoXG5cdCAgICAgICAgXCJ2LW9uY2UgY2FuIG9u
bHkgYmUgdXNlZCBpbnNpZGUgdi1mb3IgdGhhdCBpcyBrZXllZC4gXCJcblx0ICAgICAgKTtcblx0
ICAgICAgcmV0dXJuIGdlbkVsZW1lbnQoZWwpXG5cdCAgICB9XG5cdCAgICByZXR1cm4gKFwiX28o
XCIgKyAoZ2VuRWxlbWVudChlbCkpICsgXCIsXCIgKyAob25jZUNvdW50KyspICsgKGtleSA/IChc
IixcIiArIGtleSkgOiBcIlwiKSArIFwiKVwiKVxuXHQgIH0gZWxzZSB7XG5cdCAgICByZXR1cm4g
Z2VuU3RhdGljKGVsKVxuXHQgIH1cblx0fVxuXHRcblx0ZnVuY3Rpb24gZ2VuSWYgKGVsKSB7XG5c
dCAgZWwuaWZQcm9jZXNzZWQgPSB0cnVlOyAvLyBhdm9pZCByZWN1cnNpb25cblx0ICByZXR1cm4g
Z2VuSWZDb25kaXRpb25zKGVsLmNvbmRpdGlvbnMpXG5cdH1cblx0XG5cdGZ1bmN0aW9uIGdlbklm
Q29uZGl0aW9ucyAoY29uZGl0aW9ucykge1xuXHQgIGlmICghY29uZGl0aW9ucy5sZW5ndGgpIHtc
blx0ICAgIHJldHVybiAnX2UoKSdcblx0ICB9XG5cdFxuXHQgIHZhciBjb25kaXRpb24gPSBjb25k
aXRpb25zLnNoaWZ0KCk7XG5cdCAgaWYgKGNvbmRpdGlvbi5leHApIHtcblx0ICAgIHJldHVybiAo
XCIoXCIgKyAoY29uZGl0aW9uLmV4cCkgKyBcIik/XCIgKyAoZ2VuVGVybmFyeUV4cChjb25kaXRp
b24uYmxvY2spKSArIFwiOlwiICsgKGdlbklmQ29uZGl0aW9ucyhjb25kaXRpb25zKSkpXG5cdCAg
fSBlbHNlIHtcblx0ICAgIHJldHVybiAoXCJcIiArIChnZW5UZXJuYXJ5RXhwKGNvbmRpdGlvbi5i
bG9jaykpKVxuXHQgIH1cblx0XG5cdCAgLy8gdi1pZiB3aXRoIHYtb25jZSBzaHVvbGQgZ2VuZXJh
dGUgY29kZSBsaWtlIChhKT9fbSgwKTpfbSgxKVxuXHQgIGZ1bmN0aW9uIGdlblRlcm5hcnlFeHAg
KGVsKSB7XG5cdCAgICByZXR1cm4gZWwub25jZSA/IGdlbk9uY2UoZWwpIDogZ2VuRWxlbWVudChl
bClcblx0ICB9XG5cdH1cblx0XG5cdGZ1bmN0aW9uIGdlbkZvciAoZWwpIHtcblx0ICB2YXIgZXhw
ID0gZWwuZm9yO1xuXHQgIHZhciBhbGlhcyA9IGVsLmFsaWFzO1xuXHQgIHZhciBpdGVyYXRvcjEg
PSBlbC5pdGVyYXRvcjEgPyAoXCIsXCIgKyAoZWwuaXRlcmF0b3IxKSkgOiAnJztcblx0ICB2YXIg
aXRlcmF0b3IyID0gZWwuaXRlcmF0b3IyID8gKFwiLFwiICsgKGVsLml0ZXJhdG9yMikpIDogJyc7
XG5cdCAgZWwuZm9yUHJvY2Vzc2VkID0gdHJ1ZTsgLy8gYXZvaWQgcmVjdXJzaW9uXG5cdCAgcmV0
dXJuIFwiX2woKFwiICsgZXhwICsgXCIpLFwiICtcblx0ICAgIFwiZnVuY3Rpb24oXCIgKyBhbGlh
cyArIGl0ZXJhdG9yMSArIGl0ZXJhdG9yMiArIFwiKXtcIiArXG5cdCAgICAgIFwicmV0dXJuIFwi
ICsgKGdlbkVsZW1lbnQoZWwpKSArXG5cdCAgICAnfSknXG5cdH1cblx0XG5cdGZ1bmN0aW9uIGdl
bkRhdGEgKGVsKSB7XG5cdCAgdmFyIGRhdGEgPSAneyc7XG5cdFxuXHQgIC8vIGRpcmVjdGl2ZXMg
Zmlyc3QuXG5cdCAgLy8gZGlyZWN0aXZlcyBtYXkgbXV0YXRlIHRoZSBlbCdzIG90aGVyIHByb3Bl
cnRpZXMgYmVmb3JlIHRoZXkgYXJlIGdlbmVyYXRlZC5cblx0ICB2YXIgZGlycyA9IGdlbkRpcmVj
dGl2ZXMoZWwpO1xuXHQgIGlmIChkaXJzKSB7IGRhdGEgKz0gZGlycyArICcsJzsgfVxuXHRcblx0
ICAvLyBrZXlcblx0ICBpZiAoZWwua2V5KSB7XG5cdCAgICBkYXRhICs9IFwia2V5OlwiICsgKGVs
LmtleSkgKyBcIixcIjtcblx0ICB9XG5cdCAgLy8gcmVmXG5cdCAgaWYgKGVsLnJlZikge1xuXHQg
ICAgZGF0YSArPSBcInJlZjpcIiArIChlbC5yZWYpICsgXCIsXCI7XG5cdCAgfVxuXHQgIGlmIChl
bC5yZWZJbkZvcikge1xuXHQgICAgZGF0YSArPSBcInJlZkluRm9yOnRydWUsXCI7XG5cdCAgfVxu
XHQgIC8vIHJlY29yZCBvcmlnaW5hbCB0YWcgbmFtZSBmb3IgY29tcG9uZW50cyB1c2luZyBcImlz
XCIgYXR0cmlidXRlXG5cdCAgaWYgKGVsLmNvbXBvbmVudCkge1xuXHQgICAgZGF0YSArPSBcInRh
ZzpcXFwiXCIgKyAoZWwudGFnKSArIFwiXFxcIixcIjtcblx0ICB9XG5cdCAgLy8gbW9kdWxlIGRh
dGEgZ2VuZXJhdGlvbiBmdW5jdGlvbnNcblx0ICBmb3IgKHZhciBpID0gMDsgaSA8IGRhdGFHZW5G
bnMubGVuZ3RoOyBpKyspIHtcblx0ICAgIGRhdGEgKz0gZGF0YUdlbkZuc1tpXShlbCk7XG5cdCAg
fVxuXHQgIC8vIGF0dHJpYnV0ZXNcblx0ICBpZiAoZWwuYXR0cnMpIHtcblx0ICAgIGRhdGEgKz0g
XCJhdHRyczp7XCIgKyAoZ2VuUHJvcHMoZWwuYXR0cnMpKSArIFwifSxcIjtcblx0ICB9XG5cdCAg
Ly8gRE9NIHByb3BzXG5cdCAgaWYgKGVsLnByb3BzKSB7XG5cdCAgICBkYXRhICs9IFwiZG9tUHJv
cHM6e1wiICsgKGdlblByb3BzKGVsLnByb3BzKSkgKyBcIn0sXCI7XG5cdCAgfVxuXHQgIC8vIGV2
ZW50IGhhbmRsZXJzXG5cdCAgaWYgKGVsLmV2ZW50cykge1xuXHQgICAgZGF0YSArPSAoZ2VuSGFu
ZGxlcnMoZWwuZXZlbnRzKSkgKyBcIixcIjtcblx0ICB9XG5cdCAgaWYgKGVsLm5hdGl2ZUV2ZW50
cykge1xuXHQgICAgZGF0YSArPSAoZ2VuSGFuZGxlcnMoZWwubmF0aXZlRXZlbnRzLCB0cnVlKSkg
KyBcIixcIjtcblx0ICB9XG5cdCAgLy8gc2xvdCB0YXJnZXRcblx0ICBpZiAoZWwuc2xvdFRhcmdl
dCkge1xuXHQgICAgZGF0YSArPSBcInNsb3Q6XCIgKyAoZWwuc2xvdFRhcmdldCkgKyBcIixcIjtc
blx0ICB9XG5cdCAgLy8gc2NvcGVkIHNsb3RzXG5cdCAgaWYgKGVsLnNjb3BlZFNsb3RzKSB7XG5c
dCAgICBkYXRhICs9IChnZW5TY29wZWRTbG90cyhlbC5zY29wZWRTbG90cykpICsgXCIsXCI7XG5c
dCAgfVxuXHQgIC8vIGlubGluZS10ZW1wbGF0ZVxuXHQgIGlmIChlbC5pbmxpbmVUZW1wbGF0ZSkg
e1xuXHQgICAgdmFyIGlubGluZVRlbXBsYXRlID0gZ2VuSW5saW5lVGVtcGxhdGUoZWwpO1xuXHQg
ICAgaWYgKGlubGluZVRlbXBsYXRlKSB7XG5cdCAgICAgIGRhdGEgKz0gaW5saW5lVGVtcGxhdGUg
KyBcIixcIjtcblx0ICAgIH1cblx0ICB9XG5cdCAgZGF0YSA9IGRhdGEucmVwbGFjZSgvLCQvLCAn
JykgKyAnfSc7XG5cdCAgLy8gdi1iaW5kIGRhdGEgd3JhcFxuXHQgIGlmIChlbC53cmFwRGF0YSkg
e1xuXHQgICAgZGF0YSA9IGVsLndyYXBEYXRhKGRhdGEpO1xuXHQgIH1cblx0ICByZXR1cm4gZGF0
YVxuXHR9XG5cdFxuXHRmdW5jdGlvbiBnZW5EaXJlY3RpdmVzIChlbCkge1xuXHQgIHZhciBkaXJz
ID0gZWwuZGlyZWN0aXZlcztcblx0ICBpZiAoIWRpcnMpIHsgcmV0dXJuIH1cblx0ICB2YXIgcmVz
ID0gJ2RpcmVjdGl2ZXM6Wyc7XG5cdCAgdmFyIGhhc1J1bnRpbWUgPSBmYWxzZTtcblx0ICB2YXIg
aSwgbCwgZGlyLCBuZWVkUnVudGltZTtcblx0ICBmb3IgKGkgPSAwLCBsID0gZGlycy5sZW5ndGg7
IGkgPCBsOyBpKyspIHtcblx0ICAgIGRpciA9IGRpcnNbaV07XG5cdCAgICBuZWVkUnVudGltZSA9
IHRydWU7XG5cdCAgICB2YXIgZ2VuID0gcGxhdGZvcm1EaXJlY3RpdmVzJDFbZGlyLm5hbWVdIHx8
IGJhc2VEaXJlY3RpdmVzW2Rpci5uYW1lXTtcblx0ICAgIGlmIChnZW4pIHtcblx0ICAgICAgLy8g
Y29tcGlsZS10aW1lIGRpcmVjdGl2ZSB0aGF0IG1hbmlwdWxhdGVzIEFTVC5cblx0ICAgICAgLy8g
cmV0dXJucyB0cnVlIGlmIGl0IGFsc28gbmVlZHMgYSBydW50aW1lIGNvdW50ZXJwYXJ0LlxuXHQg
ICAgICBuZWVkUnVudGltZSA9ICEhZ2VuKGVsLCBkaXIsIHdhcm4kMik7XG5cdCAgICB9XG5cdCAg
ICBpZiAobmVlZFJ1bnRpbWUpIHtcblx0ICAgICAgaGFzUnVudGltZSA9IHRydWU7XG5cdCAgICAg
IHJlcyArPSBcIntuYW1lOlxcXCJcIiArIChkaXIubmFtZSkgKyBcIlxcXCIscmF3TmFtZTpcXFwi
XCIgKyAoZGlyLnJhd05hbWUpICsgXCJcXFwiXCIgKyAoZGlyLnZhbHVlID8gKFwiLHZhbHVlOihc
IiArIChkaXIudmFsdWUpICsgXCIpLGV4cHJlc3Npb246XCIgKyAoSlNPTi5zdHJpbmdpZnkoZGly
LnZhbHVlKSkpIDogJycpICsgKGRpci5hcmcgPyAoXCIsYXJnOlxcXCJcIiArIChkaXIuYXJnKSAr
IFwiXFxcIlwiKSA6ICcnKSArIChkaXIubW9kaWZpZXJzID8gKFwiLG1vZGlmaWVyczpcIiArIChK
U09OLnN0cmluZ2lmeShkaXIubW9kaWZpZXJzKSkpIDogJycpICsgXCJ9LFwiO1xuXHQgICAgfVxu
XHQgIH1cblx0ICBpZiAoaGFzUnVudGltZSkge1xuXHQgICAgcmV0dXJuIHJlcy5zbGljZSgwLCAt
MSkgKyAnXSdcblx0ICB9XG5cdH1cblx0XG5cdGZ1bmN0aW9uIGdlbklubGluZVRlbXBsYXRlIChl
bCkge1xuXHQgIHZhciBhc3QgPSBlbC5jaGlsZHJlblswXTtcblx0ICBpZiAoZmFsc2UpIHtcblx0
ICAgIHdhcm4kMignSW5saW5lLXRlbXBsYXRlIGNvbXBvbmVudHMgbXVzdCBoYXZlIGV4YWN0bHkg
b25lIGNoaWxkIGVsZW1lbnQuJyk7XG5cdCAgfVxuXHQgIGlmIChhc3QudHlwZSA9PT0gMSkge1xu
XHQgICAgdmFyIGlubGluZVJlbmRlckZucyA9IGdlbmVyYXRlKGFzdCwgY3VycmVudE9wdGlvbnMp
O1xuXHQgICAgcmV0dXJuIChcImlubGluZVRlbXBsYXRlOntyZW5kZXI6ZnVuY3Rpb24oKXtcIiAr
IChpbmxpbmVSZW5kZXJGbnMucmVuZGVyKSArIFwifSxzdGF0aWNSZW5kZXJGbnM6W1wiICsgKGlu
bGluZVJlbmRlckZucy5zdGF0aWNSZW5kZXJGbnMubWFwKGZ1bmN0aW9uIChjb2RlKSB7IHJldHVy
biAoXCJmdW5jdGlvbigpe1wiICsgY29kZSArIFwifVwiKTsgfSkuam9pbignLCcpKSArIFwiXX1c
Iilcblx0ICB9XG5cdH1cblx0XG5cdGZ1bmN0aW9uIGdlblNjb3BlZFNsb3RzIChzbG90cykge1xu
XHQgIHJldHVybiAoXCJzY29wZWRTbG90czp7XCIgKyAoT2JqZWN0LmtleXMoc2xvdHMpLm1hcChm
dW5jdGlvbiAoa2V5KSB7IHJldHVybiBnZW5TY29wZWRTbG90KGtleSwgc2xvdHNba2V5XSk7IH0p
LmpvaW4oJywnKSkgKyBcIn1cIilcblx0fVxuXHRcblx0ZnVuY3Rpb24gZ2VuU2NvcGVkU2xvdCAo
a2V5LCBlbCkge1xuXHQgIHJldHVybiBrZXkgKyBcIjpmdW5jdGlvbihcIiArIChTdHJpbmcoZWwu
YXR0cnNNYXAuc2NvcGUpKSArIFwiKXtcIiArXG5cdCAgICBcInJldHVybiBcIiArIChlbC50YWcg
PT09ICd0ZW1wbGF0ZSdcblx0ICAgICAgPyBnZW5DaGlsZHJlbihlbCkgfHwgJ3ZvaWQgMCdcblx0
ICAgICAgOiBnZW5FbGVtZW50KGVsKSkgKyBcIn1cIlxuXHR9XG5cdFxuXHRmdW5jdGlvbiBnZW5D
aGlsZHJlbiAoZWwpIHtcblx0ICBpZiAoZWwuY2hpbGRyZW4ubGVuZ3RoKSB7XG5cdCAgICByZXR1
cm4gJ1snICsgZWwuY2hpbGRyZW4ubWFwKGdlbk5vZGUpLmpvaW4oJywnKSArICddJ1xuXHQgIH1c
blx0fVxuXHRcblx0ZnVuY3Rpb24gZ2VuTm9kZSAobm9kZSkge1xuXHQgIGlmIChub2RlLnR5cGUg
PT09IDEpIHtcblx0ICAgIHJldHVybiBnZW5FbGVtZW50KG5vZGUpXG5cdCAgfSBlbHNlIHtcblx0
ICAgIHJldHVybiBnZW5UZXh0KG5vZGUpXG5cdCAgfVxuXHR9XG5cdFxuXHRmdW5jdGlvbiBnZW5U
ZXh0ICh0ZXh0KSB7XG5cdCAgcmV0dXJuIHRleHQudHlwZSA9PT0gMlxuXHQgICAgPyB0ZXh0LmV4
cHJlc3Npb24gLy8gbm8gbmVlZCBmb3IgKCkgYmVjYXVzZSBhbHJlYWR5IHdyYXBwZWQgaW4gX3Mo
KVxuXHQgICAgOiB0cmFuc2Zvcm1TcGVjaWFsTmV3bGluZXMoSlNPTi5zdHJpbmdpZnkodGV4dC50
ZXh0KSlcblx0fVxuXHRcblx0ZnVuY3Rpb24gZ2VuU2xvdCAoZWwpIHtcblx0ICB2YXIgc2xvdE5h
bWUgPSBlbC5zbG90TmFtZSB8fCAnXCJkZWZhdWx0XCInO1xuXHQgIHZhciBjaGlsZHJlbiA9IGdl
bkNoaWxkcmVuKGVsKTtcblx0ICByZXR1cm4gKFwiX3QoXCIgKyBzbG90TmFtZSArIChjaGlsZHJl
biA/IChcIixcIiArIGNoaWxkcmVuKSA6ICcnKSArIChlbC5hdHRycyA/ICgoY2hpbGRyZW4gPyAn
JyA6ICcsbnVsbCcpICsgXCIse1wiICsgKGVsLmF0dHJzLm1hcChmdW5jdGlvbiAoYSkgeyByZXR1
cm4gKChjYW1lbGl6ZShhLm5hbWUpKSArIFwiOlwiICsgKGEudmFsdWUpKTsgfSkuam9pbignLCcp
KSArIFwifVwiKSA6ICcnKSArIFwiKVwiKVxuXHR9XG5cdFxuXHQvLyBjb21wb25lbnROYW1lIGlz
IGVsLmNvbXBvbmVudCwgdGFrZSBpdCBhcyBhcmd1bWVudCB0byBzaHVuIGZsb3cncyBwZXNzaW1p
c3RpYyByZWZpbmVtZW50XG5cdGZ1bmN0aW9uIGdlbkNvbXBvbmVudCAoY29tcG9uZW50TmFtZSwg
ZWwpIHtcblx0ICB2YXIgY2hpbGRyZW4gPSBlbC5pbmxpbmVUZW1wbGF0ZSA/IG51bGwgOiBnZW5D
aGlsZHJlbihlbCk7XG5cdCAgcmV0dXJuIChcIl9oKFwiICsgY29tcG9uZW50TmFtZSArIFwiLFwi
ICsgKGdlbkRhdGEoZWwpKSArIChjaGlsZHJlbiA/IChcIixcIiArIGNoaWxkcmVuKSA6ICcnKSAr
IFwiKVwiKVxuXHR9XG5cdFxuXHRmdW5jdGlvbiBnZW5Qcm9wcyAocHJvcHMpIHtcblx0ICB2YXIg
cmVzID0gJyc7XG5cdCAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykge1xu
XHQgICAgdmFyIHByb3AgPSBwcm9wc1tpXTtcblx0ICAgIHJlcyArPSBcIlxcXCJcIiArIChwcm9w
Lm5hbWUpICsgXCJcXFwiOlwiICsgKHRyYW5zZm9ybVNwZWNpYWxOZXdsaW5lcyhwcm9wLnZhbHVl
KSkgKyBcIixcIjtcblx0ICB9XG5cdCAgcmV0dXJuIHJlcy5zbGljZSgwLCAtMSlcblx0fVxuXHRc
blx0Ly8gIzM4OTUsICM0MjY4XG5cdGZ1bmN0aW9uIHRyYW5zZm9ybVNwZWNpYWxOZXdsaW5lcyAo
dGV4dCkge1xuXHQgIHJldHVybiB0ZXh0XG5cdCAgICAucmVwbGFjZSgvXFx1MjAyOC9nLCAnXFxc
XHUyMDI4Jylcblx0ICAgIC5yZXBsYWNlKC9cXHUyMDI5L2csICdcXFxcdTIwMjknKVxuXHR9XG5c
dFxuXHQvKiAgKi9cblx0XG5cdC8qKlxuXHQgKiBDb21waWxlIGEgdGVtcGxhdGUuXG5cdCAqL1xu
XHRmdW5jdGlvbiBjb21waWxlJDEgKFxuXHQgIHRlbXBsYXRlLFxuXHQgIG9wdGlvbnNcblx0KSB7
XG5cdCAgdmFyIGFzdCA9IHBhcnNlKHRlbXBsYXRlLnRyaW0oKSwgb3B0aW9ucyk7XG5cdCAgb3B0
aW1pemUoYXN0LCBvcHRpb25zKTtcblx0ICB2YXIgY29kZSA9IGdlbmVyYXRlKGFzdCwgb3B0aW9u
cyk7XG5cdCAgcmV0dXJuIHtcblx0ICAgIGFzdDogYXN0LFxuXHQgICAgcmVuZGVyOiBjb2RlLnJl
bmRlcixcblx0ICAgIHN0YXRpY1JlbmRlckZuczogY29kZS5zdGF0aWNSZW5kZXJGbnNcblx0ICB9
XG5cdH1cblx0XG5cdC8qICAqL1xuXHRcblx0Ly8gb3BlcmF0b3JzIGxpa2UgdHlwZW9mLCBpbnN0
YW5jZW9mIGFuZCBpbiBhcmUgYWxsb3dlZFxuXHR2YXIgcHJvaGliaXRlZEtleXdvcmRSRSA9IG5l
dyBSZWdFeHAoJ1xcXFxiJyArIChcblx0ICAnZG8saWYsZm9yLGxldCxuZXcsdHJ5LHZhcixjYXNl
LGVsc2Usd2l0aCxhd2FpdCxicmVhayxjYXRjaCxjbGFzcyxjb25zdCwnICtcblx0ICAnc3VwZXIs
dGhyb3csd2hpbGUseWllbGQsZGVsZXRlLGV4cG9ydCxpbXBvcnQscmV0dXJuLHN3aXRjaCxkZWZh
dWx0LCcgK1xuXHQgICdleHRlbmRzLGZpbmFsbHksY29udGludWUsZGVidWdnZXIsZnVuY3Rpb24s
YXJndW1lbnRzJ1xuXHQpLnNwbGl0KCcsJykuam9pbignXFxcXGJ8XFxcXGInKSArICdcXFxcYicp
O1xuXHQvLyBjaGVjayB2YWxpZCBpZGVudGlmaWVyIGZvciB2LWZvclxuXHR2YXIgaWRlbnRSRSA9
IC9bQS1aYS16XyRdW1xcdyRdKi87XG5cdC8vIHN0cmlwIHN0cmluZ3MgaW4gZXhwcmVzc2lvbnNc
blx0dmFyIHN0cmlwU3RyaW5nUkUgPSAvJyg/OlteJ1xcXFxdfFxcXFwuKSonfFwiKD86W15cIlxc
XFxdfFxcXFwuKSpcInxgKD86W15gXFxcXF18XFxcXC4pKlxcJFxce3xcXH0oPzpbXmBcXFxcXXxc
XFxcLikqYHxgKD86W15gXFxcXF18XFxcXC4pKmAvZztcblx0XG5cdC8vIGRldGVjdCBwcm9ibGVt
YXRpYyBleHByZXNzaW9ucyBpbiBhIHRlbXBsYXRlXG5cdGZ1bmN0aW9uIGRldGVjdEVycm9ycyAo
YXN0KSB7XG5cdCAgdmFyIGVycm9ycyA9IFtdO1xuXHQgIGlmIChhc3QpIHtcblx0ICAgIGNoZWNr
Tm9kZShhc3QsIGVycm9ycyk7XG5cdCAgfVxuXHQgIHJldHVybiBlcnJvcnNcblx0fVxuXHRcblx0
ZnVuY3Rpb24gY2hlY2tOb2RlIChub2RlLCBlcnJvcnMpIHtcblx0ICBpZiAobm9kZS50eXBlID09
PSAxKSB7XG5cdCAgICBmb3IgKHZhciBuYW1lIGluIG5vZGUuYXR0cnNNYXApIHtcblx0ICAgICAg
aWYgKGRpclJFLnRlc3QobmFtZSkpIHtcblx0ICAgICAgICB2YXIgdmFsdWUgPSBub2RlLmF0dHJz
TWFwW25hbWVdO1xuXHQgICAgICAgIGlmICh2YWx1ZSkge1xuXHQgICAgICAgICAgaWYgKG5hbWUg
PT09ICd2LWZvcicpIHtcblx0ICAgICAgICAgICAgY2hlY2tGb3Iobm9kZSwgKFwidi1mb3I9XFxc
IlwiICsgdmFsdWUgKyBcIlxcXCJcIiksIGVycm9ycyk7XG5cdCAgICAgICAgICB9IGVsc2Uge1xu
XHQgICAgICAgICAgICBjaGVja0V4cHJlc3Npb24odmFsdWUsIChuYW1lICsgXCI9XFxcIlwiICsg
dmFsdWUgKyBcIlxcXCJcIiksIGVycm9ycyk7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfVxu
XHQgICAgICB9XG5cdCAgICB9XG5cdCAgICBpZiAobm9kZS5jaGlsZHJlbikge1xuXHQgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IG5vZGUuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcblx0ICAgICAg
ICBjaGVja05vZGUobm9kZS5jaGlsZHJlbltpXSwgZXJyb3JzKTtcblx0ICAgICAgfVxuXHQgICAg
fVxuXHQgIH0gZWxzZSBpZiAobm9kZS50eXBlID09PSAyKSB7XG5cdCAgICBjaGVja0V4cHJlc3Np
b24obm9kZS5leHByZXNzaW9uLCBub2RlLnRleHQsIGVycm9ycyk7XG5cdCAgfVxuXHR9XG5cdFxu
XHRmdW5jdGlvbiBjaGVja0ZvciAobm9kZSwgdGV4dCwgZXJyb3JzKSB7XG5cdCAgY2hlY2tFeHBy
ZXNzaW9uKG5vZGUuZm9yIHx8ICcnLCB0ZXh0LCBlcnJvcnMpO1xuXHQgIGNoZWNrSWRlbnRpZmll
cihub2RlLmFsaWFzLCAndi1mb3IgYWxpYXMnLCB0ZXh0LCBlcnJvcnMpO1xuXHQgIGNoZWNrSWRl
bnRpZmllcihub2RlLml0ZXJhdG9yMSwgJ3YtZm9yIGl0ZXJhdG9yJywgdGV4dCwgZXJyb3JzKTtc
blx0ICBjaGVja0lkZW50aWZpZXIobm9kZS5pdGVyYXRvcjIsICd2LWZvciBpdGVyYXRvcicsIHRl
eHQsIGVycm9ycyk7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIGNoZWNrSWRlbnRpZmllciAoaWRlbnQs
IHR5cGUsIHRleHQsIGVycm9ycykge1xuXHQgIGlmICh0eXBlb2YgaWRlbnQgPT09ICdzdHJpbmcn
ICYmICFpZGVudFJFLnRlc3QoaWRlbnQpKSB7XG5cdCAgICBlcnJvcnMucHVzaCgoXCItIGludmFs
aWQgXCIgKyB0eXBlICsgXCIgXFxcIlwiICsgaWRlbnQgKyBcIlxcXCIgaW4gZXhwcmVzc2lvbjog
XCIgKyB0ZXh0KSk7XG5cdCAgfVxuXHR9XG5cdFxuXHRmdW5jdGlvbiBjaGVja0V4cHJlc3Npb24g
KGV4cCwgdGV4dCwgZXJyb3JzKSB7XG5cdCAgdHJ5IHtcblx0ICAgIG5ldyBGdW5jdGlvbigoXCJy
ZXR1cm4gXCIgKyBleHApKTtcblx0ICB9IGNhdGNoIChlKSB7XG5cdCAgICB2YXIga2V5d29yZE1h
dGNoID0gZXhwLnJlcGxhY2Uoc3RyaXBTdHJpbmdSRSwgJycpLm1hdGNoKHByb2hpYml0ZWRLZXl3
b3JkUkUpO1xuXHQgICAgaWYgKGtleXdvcmRNYXRjaCkge1xuXHQgICAgICBlcnJvcnMucHVzaChc
blx0ICAgICAgICBcIi0gYXZvaWQgdXNpbmcgSmF2YVNjcmlwdCBrZXl3b3JkIGFzIHByb3BlcnR5
IG5hbWU6IFwiICtcblx0ICAgICAgICBcIlxcXCJcIiArIChrZXl3b3JkTWF0Y2hbMF0pICsgXCJc
XFwiIGluIGV4cHJlc3Npb24gXCIgKyB0ZXh0XG5cdCAgICAgICk7XG5cdCAgICB9IGVsc2Uge1xu
XHQgICAgICBlcnJvcnMucHVzaCgoXCItIGludmFsaWQgZXhwcmVzc2lvbjogXCIgKyB0ZXh0KSk7
XG5cdCAgICB9XG5cdCAgfVxuXHR9XG5cdFxuXHQvKiAgKi9cblx0XG5cdGZ1bmN0aW9uIHRyYW5z
Zm9ybU5vZGUgKGVsLCBvcHRpb25zKSB7XG5cdCAgdmFyIHdhcm4gPSBvcHRpb25zLndhcm4gfHwg
YmFzZVdhcm47XG5cdCAgdmFyIHN0YXRpY0NsYXNzID0gZ2V0QW5kUmVtb3ZlQXR0cihlbCwgJ2Ns
YXNzJyk7XG5cdCAgaWYgKGZhbHNlKSB7XG5cdCAgICB2YXIgZXhwcmVzc2lvbiA9IHBhcnNlVGV4
dChzdGF0aWNDbGFzcywgb3B0aW9ucy5kZWxpbWl0ZXJzKTtcblx0ICAgIGlmIChleHByZXNzaW9u
KSB7XG5cdCAgICAgIHdhcm4oXG5cdCAgICAgICAgXCJjbGFzcz1cXFwiXCIgKyBzdGF0aWNDbGFz
cyArIFwiXFxcIjogXCIgK1xuXHQgICAgICAgICdJbnRlcnBvbGF0aW9uIGluc2lkZSBhdHRyaWJ1
dGVzIGhhcyBiZWVuIHJlbW92ZWQuICcgK1xuXHQgICAgICAgICdVc2Ugdi1iaW5kIG9yIHRoZSBj
b2xvbiBzaG9ydGhhbmQgaW5zdGVhZC4gRm9yIGV4YW1wbGUsICcgK1xuXHQgICAgICAgICdpbnN0
ZWFkIG9mIDxkaXYgY2xhc3M9XCJ7eyB2YWwgfX1cIj4sIHVzZSA8ZGl2IDpjbGFzcz1cInZhbFwi
Pi4nXG5cdCAgICAgICk7XG5cdCAgICB9XG5cdCAgfVxuXHQgIGlmIChzdGF0aWNDbGFzcykge1xu
XHQgICAgZWwuc3RhdGljQ2xhc3MgPSBKU09OLnN0cmluZ2lmeShzdGF0aWNDbGFzcyk7XG5cdCAg
fVxuXHQgIHZhciBjbGFzc0JpbmRpbmcgPSBnZXRCaW5kaW5nQXR0cihlbCwgJ2NsYXNzJywgZmFs
c2UgLyogZ2V0U3RhdGljICovKTtcblx0ICBpZiAoY2xhc3NCaW5kaW5nKSB7XG5cdCAgICBlbC5j
bGFzc0JpbmRpbmcgPSBjbGFzc0JpbmRpbmc7XG5cdCAgfVxuXHR9XG5cdFxuXHRmdW5jdGlvbiBn
ZW5EYXRhJDEgKGVsKSB7XG5cdCAgdmFyIGRhdGEgPSAnJztcblx0ICBpZiAoZWwuc3RhdGljQ2xh
c3MpIHtcblx0ICAgIGRhdGEgKz0gXCJzdGF0aWNDbGFzczpcIiArIChlbC5zdGF0aWNDbGFzcykg
KyBcIixcIjtcblx0ICB9XG5cdCAgaWYgKGVsLmNsYXNzQmluZGluZykge1xuXHQgICAgZGF0YSAr
PSBcImNsYXNzOlwiICsgKGVsLmNsYXNzQmluZGluZykgKyBcIixcIjtcblx0ICB9XG5cdCAgcmV0
dXJuIGRhdGFcblx0fVxuXHRcblx0dmFyIGtsYXNzJDEgPSB7XG5cdCAgc3RhdGljS2V5czogWydz
dGF0aWNDbGFzcyddLFxuXHQgIHRyYW5zZm9ybU5vZGU6IHRyYW5zZm9ybU5vZGUsXG5cdCAgZ2Vu
RGF0YTogZ2VuRGF0YSQxXG5cdH07XG5cdFxuXHQvKiAgKi9cblx0XG5cdGZ1bmN0aW9uIHRyYW5z
Zm9ybU5vZGUkMSAoZWwsIG9wdGlvbnMpIHtcblx0ICB2YXIgd2FybiA9IG9wdGlvbnMud2FybiB8
fCBiYXNlV2Fybjtcblx0ICB2YXIgc3RhdGljU3R5bGUgPSBnZXRBbmRSZW1vdmVBdHRyKGVsLCAn
c3R5bGUnKTtcblx0ICBpZiAoc3RhdGljU3R5bGUpIHtcblx0ICAgIC8qIGlzdGFuYnVsIGlnbm9y
ZSBpZiAqL1xuXHQgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgIHZhciBleHByZXNzaW9uID0gcGFy
c2VUZXh0KHN0YXRpY1N0eWxlLCBvcHRpb25zLmRlbGltaXRlcnMpO1xuXHQgICAgICBpZiAoZXhw
cmVzc2lvbikge1xuXHQgICAgICAgIHdhcm4oXG5cdCAgICAgICAgICBcInN0eWxlPVxcXCJcIiAr
IHN0YXRpY1N0eWxlICsgXCJcXFwiOiBcIiArXG5cdCAgICAgICAgICAnSW50ZXJwb2xhdGlvbiBp
bnNpZGUgYXR0cmlidXRlcyBoYXMgYmVlbiByZW1vdmVkLiAnICtcblx0ICAgICAgICAgICdVc2Ug
di1iaW5kIG9yIHRoZSBjb2xvbiBzaG9ydGhhbmQgaW5zdGVhZC4gRm9yIGV4YW1wbGUsICcgK1xu
XHQgICAgICAgICAgJ2luc3RlYWQgb2YgPGRpdiBzdHlsZT1cInt7IHZhbCB9fVwiPiwgdXNlIDxk
aXYgOnN0eWxlPVwidmFsXCI+Lidcblx0ICAgICAgICApO1xuXHQgICAgICB9XG5cdCAgICB9XG5c
dCAgICBlbC5zdGF0aWNTdHlsZSA9IEpTT04uc3RyaW5naWZ5KHBhcnNlU3R5bGVUZXh0KHN0YXRp
Y1N0eWxlKSk7XG5cdCAgfVxuXHRcblx0ICB2YXIgc3R5bGVCaW5kaW5nID0gZ2V0QmluZGluZ0F0
dHIoZWwsICdzdHlsZScsIGZhbHNlIC8qIGdldFN0YXRpYyAqLyk7XG5cdCAgaWYgKHN0eWxlQmlu
ZGluZykge1xuXHQgICAgZWwuc3R5bGVCaW5kaW5nID0gc3R5bGVCaW5kaW5nO1xuXHQgIH1cblx0
fVxuXHRcblx0ZnVuY3Rpb24gZ2VuRGF0YSQyIChlbCkge1xuXHQgIHZhciBkYXRhID0gJyc7XG5c
dCAgaWYgKGVsLnN0YXRpY1N0eWxlKSB7XG5cdCAgICBkYXRhICs9IFwic3RhdGljU3R5bGU6XCIg
KyAoZWwuc3RhdGljU3R5bGUpICsgXCIsXCI7XG5cdCAgfVxuXHQgIGlmIChlbC5zdHlsZUJpbmRp
bmcpIHtcblx0ICAgIGRhdGEgKz0gXCJzdHlsZTooXCIgKyAoZWwuc3R5bGVCaW5kaW5nKSArIFwi
KSxcIjtcblx0ICB9XG5cdCAgcmV0dXJuIGRhdGFcblx0fVxuXHRcblx0dmFyIHN0eWxlJDEgPSB7
XG5cdCAgc3RhdGljS2V5czogWydzdGF0aWNTdHlsZSddLFxuXHQgIHRyYW5zZm9ybU5vZGU6IHRy
YW5zZm9ybU5vZGUkMSxcblx0ICBnZW5EYXRhOiBnZW5EYXRhJDJcblx0fTtcblx0XG5cdHZhciBt
b2R1bGVzJDEgPSBbXG5cdCAga2xhc3MkMSxcblx0ICBzdHlsZSQxXG5cdF07XG5cdFxuXHQvKiAg
Ki9cblx0XG5cdHZhciB3YXJuJDM7XG5cdFxuXHRmdW5jdGlvbiBtb2RlbCQxIChcblx0ICBlbCxc
blx0ICBkaXIsXG5cdCAgX3dhcm5cblx0KSB7XG5cdCAgd2FybiQzID0gX3dhcm47XG5cdCAgdmFy
IHZhbHVlID0gZGlyLnZhbHVlO1xuXHQgIHZhciBtb2RpZmllcnMgPSBkaXIubW9kaWZpZXJzO1xu
XHQgIHZhciB0YWcgPSBlbC50YWc7XG5cdCAgdmFyIHR5cGUgPSBlbC5hdHRyc01hcC50eXBlO1xu
XHQgIGlmIChmYWxzZSkge1xuXHQgICAgdmFyIGR5bmFtaWNUeXBlID0gZWwuYXR0cnNNYXBbJ3Yt
YmluZDp0eXBlJ10gfHwgZWwuYXR0cnNNYXBbJzp0eXBlJ107XG5cdCAgICBpZiAodGFnID09PSAn
aW5wdXQnICYmIGR5bmFtaWNUeXBlKSB7XG5cdCAgICAgIHdhcm4kMyhcblx0ICAgICAgICBcIjxp
bnB1dCA6dHlwZT1cXFwiXCIgKyBkeW5hbWljVHlwZSArIFwiXFxcIiB2LW1vZGVsPVxcXCJcIiAr
IHZhbHVlICsgXCJcXFwiPjpcXG5cIiArXG5cdCAgICAgICAgXCJ2LW1vZGVsIGRvZXMgbm90IHN1
cHBvcnQgZHluYW1pYyBpbnB1dCB0eXBlcy4gVXNlIHYtaWYgYnJhbmNoZXMgaW5zdGVhZC5cIlxu
XHQgICAgICApO1xuXHQgICAgfVxuXHQgIH1cblx0ICBpZiAodGFnID09PSAnc2VsZWN0Jykge1xu
XHQgICAgZ2VuU2VsZWN0KGVsLCB2YWx1ZSwgbW9kaWZpZXJzKTtcblx0ICB9IGVsc2UgaWYgKHRh
ZyA9PT0gJ2lucHV0JyAmJiB0eXBlID09PSAnY2hlY2tib3gnKSB7XG5cdCAgICBnZW5DaGVja2Jv
eE1vZGVsKGVsLCB2YWx1ZSwgbW9kaWZpZXJzKTtcblx0ICB9IGVsc2UgaWYgKHRhZyA9PT0gJ2lu
cHV0JyAmJiB0eXBlID09PSAncmFkaW8nKSB7XG5cdCAgICBnZW5SYWRpb01vZGVsKGVsLCB2YWx1
ZSwgbW9kaWZpZXJzKTtcblx0ICB9IGVsc2Uge1xuXHQgICAgZ2VuRGVmYXVsdE1vZGVsKGVsLCB2
YWx1ZSwgbW9kaWZpZXJzKTtcblx0ICB9XG5cdCAgLy8gZW5zdXJlIHJ1bnRpbWUgZGlyZWN0aXZl
IG1ldGFkYXRhXG5cdCAgcmV0dXJuIHRydWVcblx0fVxuXHRcblx0ZnVuY3Rpb24gZ2VuQ2hlY2ti
b3hNb2RlbCAoXG5cdCAgZWwsXG5cdCAgdmFsdWUsXG5cdCAgbW9kaWZpZXJzXG5cdCkge1xuXHQg
IGlmIChmYWxzZSkge1xuXHQgICAgd2FybiQzKFxuXHQgICAgICBcIjxcIiArIChlbC50YWcpICsg
XCIgdi1tb2RlbD1cXFwiXCIgKyB2YWx1ZSArIFwiXFxcIiBjaGVja2VkPjpcXG5cIiArXG5cdCAg
ICAgIFwiaW5saW5lIGNoZWNrZWQgYXR0cmlidXRlcyB3aWxsIGJlIGlnbm9yZWQgd2hlbiB1c2lu
ZyB2LW1vZGVsLiBcIiArXG5cdCAgICAgICdEZWNsYXJlIGluaXRpYWwgdmFsdWVzIGluIHRoZSBj
b21wb25lbnRcXCdzIGRhdGEgb3B0aW9uIGluc3RlYWQuJ1xuXHQgICAgKTtcblx0ICB9XG5cdCAg
dmFyIG51bWJlciA9IG1vZGlmaWVycyAmJiBtb2RpZmllcnMubnVtYmVyO1xuXHQgIHZhciB2YWx1
ZUJpbmRpbmcgPSBnZXRCaW5kaW5nQXR0cihlbCwgJ3ZhbHVlJykgfHwgJ251bGwnO1xuXHQgIHZh
ciB0cnVlVmFsdWVCaW5kaW5nID0gZ2V0QmluZGluZ0F0dHIoZWwsICd0cnVlLXZhbHVlJykgfHwg
J3RydWUnO1xuXHQgIHZhciBmYWxzZVZhbHVlQmluZGluZyA9IGdldEJpbmRpbmdBdHRyKGVsLCAn
ZmFsc2UtdmFsdWUnKSB8fCAnZmFsc2UnO1xuXHQgIGFkZFByb3AoZWwsICdjaGVja2VkJyxcblx0
ICAgIFwiQXJyYXkuaXNBcnJheShcIiArIHZhbHVlICsgXCIpXCIgK1xuXHQgICAgICBcIj9faShc
IiArIHZhbHVlICsgXCIsXCIgKyB2YWx1ZUJpbmRpbmcgKyBcIik+LTFcIiArXG5cdCAgICAgIFwi
Ol9xKFwiICsgdmFsdWUgKyBcIixcIiArIHRydWVWYWx1ZUJpbmRpbmcgKyBcIilcIlxuXHQgICk7
XG5cdCAgYWRkSGFuZGxlcihlbCwgJ2NoYW5nZScsXG5cdCAgICBcInZhciAkJGE9XCIgKyB2YWx1
ZSArIFwiLFwiICtcblx0ICAgICAgICAnJCRlbD0kZXZlbnQudGFyZ2V0LCcgK1xuXHQgICAgICAg
IFwiJCRjPSQkZWwuY2hlY2tlZD8oXCIgKyB0cnVlVmFsdWVCaW5kaW5nICsgXCIpOihcIiArIGZh
bHNlVmFsdWVCaW5kaW5nICsgXCIpO1wiICtcblx0ICAgICdpZihBcnJheS5pc0FycmF5KCQkYSkp
eycgK1xuXHQgICAgICBcInZhciAkJHY9XCIgKyAobnVtYmVyID8gJ19uKCcgKyB2YWx1ZUJpbmRp
bmcgKyAnKScgOiB2YWx1ZUJpbmRpbmcpICsgXCIsXCIgK1xuXHQgICAgICAgICAgJyQkaT1faSgk
JGEsJCR2KTsnICtcblx0ICAgICAgXCJpZigkJGMpeyQkaTwwJiYoXCIgKyB2YWx1ZSArIFwiPSQk
YS5jb25jYXQoJCR2KSl9XCIgK1xuXHQgICAgICBcImVsc2V7JCRpPi0xJiYoXCIgKyB2YWx1ZSAr
IFwiPSQkYS5zbGljZSgwLCQkaSkuY29uY2F0KCQkYS5zbGljZSgkJGkrMSkpKX1cIiArXG5cdCAg
ICBcIn1lbHNle1wiICsgdmFsdWUgKyBcIj0kJGN9XCIsXG5cdCAgICBudWxsLCB0cnVlXG5cdCAg
KTtcblx0fVxuXHRcblx0ZnVuY3Rpb24gZ2VuUmFkaW9Nb2RlbCAoXG5cdCAgICBlbCxcblx0ICAg
IHZhbHVlLFxuXHQgICAgbW9kaWZpZXJzXG5cdCkge1xuXHQgIGlmIChmYWxzZSkge1xuXHQgICAg
d2FybiQzKFxuXHQgICAgICBcIjxcIiArIChlbC50YWcpICsgXCIgdi1tb2RlbD1cXFwiXCIgKyB2
YWx1ZSArIFwiXFxcIiBjaGVja2VkPjpcXG5cIiArXG5cdCAgICAgIFwiaW5saW5lIGNoZWNrZWQg
YXR0cmlidXRlcyB3aWxsIGJlIGlnbm9yZWQgd2hlbiB1c2luZyB2LW1vZGVsLiBcIiArXG5cdCAg
ICAgICdEZWNsYXJlIGluaXRpYWwgdmFsdWVzIGluIHRoZSBjb21wb25lbnRcXCdzIGRhdGEgb3B0
aW9uIGluc3RlYWQuJ1xuXHQgICAgKTtcblx0ICB9XG5cdCAgdmFyIG51bWJlciA9IG1vZGlmaWVy
cyAmJiBtb2RpZmllcnMubnVtYmVyO1xuXHQgIHZhciB2YWx1ZUJpbmRpbmcgPSBnZXRCaW5kaW5n
QXR0cihlbCwgJ3ZhbHVlJykgfHwgJ251bGwnO1xuXHQgIHZhbHVlQmluZGluZyA9IG51bWJlciA/
IChcIl9uKFwiICsgdmFsdWVCaW5kaW5nICsgXCIpXCIpIDogdmFsdWVCaW5kaW5nO1xuXHQgIGFk
ZFByb3AoZWwsICdjaGVja2VkJywgKFwiX3EoXCIgKyB2YWx1ZSArIFwiLFwiICsgdmFsdWVCaW5k
aW5nICsgXCIpXCIpKTtcblx0ICBhZGRIYW5kbGVyKGVsLCAnY2hhbmdlJywgZ2VuQXNzaWdubWVu
dENvZGUodmFsdWUsIHZhbHVlQmluZGluZyksIG51bGwsIHRydWUpO1xuXHR9XG5cdFxuXHRmdW5j
dGlvbiBnZW5EZWZhdWx0TW9kZWwgKFxuXHQgIGVsLFxuXHQgIHZhbHVlLFxuXHQgIG1vZGlmaWVy
c1xuXHQpIHtcblx0ICBpZiAoZmFsc2UpIHtcblx0ICAgIGlmIChlbC50YWcgPT09ICdpbnB1dCcg
JiYgZWwuYXR0cnNNYXAudmFsdWUpIHtcblx0ICAgICAgd2FybiQzKFxuXHQgICAgICAgIFwiPFwi
ICsgKGVsLnRhZykgKyBcIiB2LW1vZGVsPVxcXCJcIiArIHZhbHVlICsgXCJcXFwiIHZhbHVlPVxc
XCJcIiArIChlbC5hdHRyc01hcC52YWx1ZSkgKyBcIlxcXCI+OlxcblwiICtcblx0ICAgICAgICAn
aW5saW5lIHZhbHVlIGF0dHJpYnV0ZXMgd2lsbCBiZSBpZ25vcmVkIHdoZW4gdXNpbmcgdi1tb2Rl
bC4gJyArXG5cdCAgICAgICAgJ0RlY2xhcmUgaW5pdGlhbCB2YWx1ZXMgaW4gdGhlIGNvbXBvbmVu
dFxcJ3MgZGF0YSBvcHRpb24gaW5zdGVhZC4nXG5cdCAgICAgICk7XG5cdCAgICB9XG5cdCAgICBp
ZiAoZWwudGFnID09PSAndGV4dGFyZWEnICYmIGVsLmNoaWxkcmVuLmxlbmd0aCkge1xuXHQgICAg
ICB3YXJuJDMoXG5cdCAgICAgICAgXCI8dGV4dGFyZWEgdi1tb2RlbD1cXFwiXCIgKyB2YWx1ZSAr
IFwiXFxcIj46XFxuXCIgK1xuXHQgICAgICAgICdpbmxpbmUgY29udGVudCBpbnNpZGUgPHRleHRh
cmVhPiB3aWxsIGJlIGlnbm9yZWQgd2hlbiB1c2luZyB2LW1vZGVsLiAnICtcblx0ICAgICAgICAn
RGVjbGFyZSBpbml0aWFsIHZhbHVlcyBpbiB0aGUgY29tcG9uZW50XFwncyBkYXRhIG9wdGlvbiBp
bnN0ZWFkLidcblx0ICAgICAgKTtcblx0ICAgIH1cblx0ICB9XG5cdFxuXHQgIHZhciB0eXBlID0g
ZWwuYXR0cnNNYXAudHlwZTtcblx0ICB2YXIgcmVmID0gbW9kaWZpZXJzIHx8IHt9O1xuXHQgIHZh
ciBsYXp5ID0gcmVmLmxhenk7XG5cdCAgdmFyIG51bWJlciA9IHJlZi5udW1iZXI7XG5cdCAgdmFy
IHRyaW0gPSByZWYudHJpbTtcblx0ICB2YXIgZXZlbnQgPSBsYXp5IHx8IChpc0lFICYmIHR5cGUg
PT09ICdyYW5nZScpID8gJ2NoYW5nZScgOiAnaW5wdXQnO1xuXHQgIHZhciBuZWVkQ29tcG9zaXRp
b25HdWFyZCA9ICFsYXp5ICYmIHR5cGUgIT09ICdyYW5nZSc7XG5cdCAgdmFyIGlzTmF0aXZlID0g
ZWwudGFnID09PSAnaW5wdXQnIHx8IGVsLnRhZyA9PT0gJ3RleHRhcmVhJztcblx0XG5cdCAgdmFy
IHZhbHVlRXhwcmVzc2lvbiA9IGlzTmF0aXZlXG5cdCAgICA/IChcIiRldmVudC50YXJnZXQudmFs
dWVcIiArICh0cmltID8gJy50cmltKCknIDogJycpKVxuXHQgICAgOiB0cmltID8gXCIodHlwZW9m
ICRldmVudCA9PT0gJ3N0cmluZycgPyAkZXZlbnQudHJpbSgpIDogJGV2ZW50KVwiIDogXCIkZXZl
bnRcIjtcblx0ICB2YWx1ZUV4cHJlc3Npb24gPSBudW1iZXIgfHwgdHlwZSA9PT0gJ251bWJlcidc
blx0ICAgID8gKFwiX24oXCIgKyB2YWx1ZUV4cHJlc3Npb24gKyBcIilcIilcblx0ICAgIDogdmFs
dWVFeHByZXNzaW9uO1xuXHQgIHZhciBjb2RlID0gZ2VuQXNzaWdubWVudENvZGUodmFsdWUsIHZh
bHVlRXhwcmVzc2lvbik7XG5cdCAgaWYgKGlzTmF0aXZlICYmIG5lZWRDb21wb3NpdGlvbkd1YXJk
KSB7XG5cdCAgICBjb2RlID0gXCJpZigkZXZlbnQudGFyZ2V0LmNvbXBvc2luZylyZXR1cm47XCIg
KyBjb2RlO1xuXHQgIH1cblx0ICAvLyBpbnB1dHMgd2l0aCB0eXBlPVwiZmlsZVwiIGFyZSByZWFk
IG9ubHkgYW5kIHNldHRpbmcgdGhlIGlucHV0J3Ncblx0ICAvLyB2YWx1ZSB3aWxsIHRocm93IGFu
IGVycm9yLlxuXHQgIGlmIChmYWxzZSkge1xuXHQgICAgd2FybiQzKFxuXHQgICAgICBcIjxcIiAr
IChlbC50YWcpICsgXCIgdi1tb2RlbD1cXFwiXCIgKyB2YWx1ZSArIFwiXFxcIiB0eXBlPVxcXCJm
aWxlXFxcIj46XFxuXCIgK1xuXHQgICAgICBcIkZpbGUgaW5wdXRzIGFyZSByZWFkIG9ubHkuIFVz
ZSBhIHYtb246Y2hhbmdlIGxpc3RlbmVyIGluc3RlYWQuXCJcblx0ICAgICk7XG5cdCAgfVxuXHQg
IGFkZFByb3AoZWwsICd2YWx1ZScsIGlzTmF0aXZlID8gKFwiX3MoXCIgKyB2YWx1ZSArIFwiKVwi
KSA6IChcIihcIiArIHZhbHVlICsgXCIpXCIpKTtcblx0ICBhZGRIYW5kbGVyKGVsLCBldmVudCwg
Y29kZSwgbnVsbCwgdHJ1ZSk7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIGdlblNlbGVjdCAoXG5cdCAg
ICBlbCxcblx0ICAgIHZhbHVlLFxuXHQgICAgbW9kaWZpZXJzXG5cdCkge1xuXHQgIGlmIChmYWxz
ZSkge1xuXHQgICAgZWwuY2hpbGRyZW4uc29tZShjaGVja09wdGlvbldhcm5pbmcpO1xuXHQgIH1c
blx0XG5cdCAgdmFyIG51bWJlciA9IG1vZGlmaWVycyAmJiBtb2RpZmllcnMubnVtYmVyO1xuXHQg
IHZhciBhc3NpZ25tZW50ID0gXCJBcnJheS5wcm90b3R5cGUuZmlsdGVyXCIgK1xuXHQgICAgXCIu
Y2FsbCgkZXZlbnQudGFyZ2V0Lm9wdGlvbnMsZnVuY3Rpb24obyl7cmV0dXJuIG8uc2VsZWN0ZWR9
KVwiICtcblx0ICAgIFwiLm1hcChmdW5jdGlvbihvKXt2YXIgdmFsID0gXFxcIl92YWx1ZVxcXCIg
aW4gbyA/IG8uX3ZhbHVlIDogby52YWx1ZTtcIiArXG5cdCAgICBcInJldHVybiBcIiArIChudW1i
ZXIgPyAnX24odmFsKScgOiAndmFsJykgKyBcIn0pXCIgK1xuXHQgICAgKGVsLmF0dHJzTWFwLm11
bHRpcGxlID09IG51bGwgPyAnWzBdJyA6ICcnKTtcblx0XG5cdCAgdmFyIGNvZGUgPSBnZW5Bc3Np
Z25tZW50Q29kZSh2YWx1ZSwgYXNzaWdubWVudCk7XG5cdCAgYWRkSGFuZGxlcihlbCwgJ2NoYW5n
ZScsIGNvZGUsIG51bGwsIHRydWUpO1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBjaGVja09wdGlvbldh
cm5pbmcgKG9wdGlvbikge1xuXHQgIGlmIChvcHRpb24udHlwZSA9PT0gMSAmJlxuXHQgICAgb3B0
aW9uLnRhZyA9PT0gJ29wdGlvbicgJiZcblx0ICAgIG9wdGlvbi5hdHRyc01hcC5zZWxlY3RlZCAh
PSBudWxsKSB7XG5cdCAgICB3YXJuJDMoXG5cdCAgICAgIFwiPHNlbGVjdCB2LW1vZGVsPVxcXCJc
IiArIChvcHRpb24ucGFyZW50LmF0dHJzTWFwWyd2LW1vZGVsJ10pICsgXCJcXFwiPjpcXG5cIiAr
XG5cdCAgICAgICdpbmxpbmUgc2VsZWN0ZWQgYXR0cmlidXRlcyBvbiA8b3B0aW9uPiB3aWxsIGJl
IGlnbm9yZWQgd2hlbiB1c2luZyB2LW1vZGVsLiAnICtcblx0ICAgICAgJ0RlY2xhcmUgaW5pdGlh
bCB2YWx1ZXMgaW4gdGhlIGNvbXBvbmVudFxcJ3MgZGF0YSBvcHRpb24gaW5zdGVhZC4nXG5cdCAg
ICApO1xuXHQgICAgcmV0dXJuIHRydWVcblx0ICB9XG5cdCAgcmV0dXJuIGZhbHNlXG5cdH1cblx0
XG5cdGZ1bmN0aW9uIGdlbkFzc2lnbm1lbnRDb2RlICh2YWx1ZSwgYXNzaWdubWVudCkge1xuXHQg
IHZhciBtb2RlbFJzID0gcGFyc2VNb2RlbCh2YWx1ZSk7XG5cdCAgaWYgKG1vZGVsUnMuaWR4ID09
PSBudWxsKSB7XG5cdCAgICByZXR1cm4gKHZhbHVlICsgXCI9XCIgKyBhc3NpZ25tZW50KVxuXHQg
IH0gZWxzZSB7XG5cdCAgICByZXR1cm4gXCJ2YXIgJCRleHAgPSBcIiArIChtb2RlbFJzLmV4cCkg
KyBcIiwgJCRpZHggPSBcIiArIChtb2RlbFJzLmlkeCkgKyBcIjtcIiArXG5cdCAgICAgIFwiaWYg
KCFBcnJheS5pc0FycmF5KCQkZXhwKSl7XCIgK1xuXHQgICAgICAgIHZhbHVlICsgXCI9XCIgKyBh
c3NpZ25tZW50ICsgXCJ9XCIgK1xuXHQgICAgICBcImVsc2V7JCRleHAuc3BsaWNlKCQkaWR4LCAx
LCBcIiArIGFzc2lnbm1lbnQgKyBcIil9XCJcblx0ICB9XG5cdH1cblx0XG5cdC8qICAqL1xuXHRc
blx0ZnVuY3Rpb24gdGV4dCAoZWwsIGRpcikge1xuXHQgIGlmIChkaXIudmFsdWUpIHtcblx0ICAg
IGFkZFByb3AoZWwsICd0ZXh0Q29udGVudCcsIChcIl9zKFwiICsgKGRpci52YWx1ZSkgKyBcIilc
IikpO1xuXHQgIH1cblx0fVxuXHRcblx0LyogICovXG5cdFxuXHRmdW5jdGlvbiBodG1sIChlbCwg
ZGlyKSB7XG5cdCAgaWYgKGRpci52YWx1ZSkge1xuXHQgICAgYWRkUHJvcChlbCwgJ2lubmVySFRN
TCcsIChcIl9zKFwiICsgKGRpci52YWx1ZSkgKyBcIilcIikpO1xuXHQgIH1cblx0fVxuXHRcblx0
dmFyIGRpcmVjdGl2ZXMkMSA9IHtcblx0ICBtb2RlbDogbW9kZWwkMSxcblx0ICB0ZXh0OiB0ZXh0
LFxuXHQgIGh0bWw6IGh0bWxcblx0fTtcblx0XG5cdC8qICAqL1xuXHRcblx0dmFyIGNhY2hlID0g
T2JqZWN0LmNyZWF0ZShudWxsKTtcblx0XG5cdHZhciBiYXNlT3B0aW9ucyA9IHtcblx0ICBleHBl
Y3RIVE1MOiB0cnVlLFxuXHQgIG1vZHVsZXM6IG1vZHVsZXMkMSxcblx0ICBzdGF0aWNLZXlzOiBn
ZW5TdGF0aWNLZXlzKG1vZHVsZXMkMSksXG5cdCAgZGlyZWN0aXZlczogZGlyZWN0aXZlcyQxLFxu
XHQgIGlzUmVzZXJ2ZWRUYWc6IGlzUmVzZXJ2ZWRUYWcsXG5cdCAgaXNVbmFyeVRhZzogaXNVbmFy
eVRhZyxcblx0ICBtdXN0VXNlUHJvcDogbXVzdFVzZVByb3AsXG5cdCAgZ2V0VGFnTmFtZXNwYWNl
OiBnZXRUYWdOYW1lc3BhY2UsXG5cdCAgaXNQcmVUYWc6IGlzUHJlVGFnXG5cdH07XG5cdFxuXHRm
dW5jdGlvbiBjb21waWxlJCQxIChcblx0ICB0ZW1wbGF0ZSxcblx0ICBvcHRpb25zXG5cdCkge1xu
XHQgIG9wdGlvbnMgPSBvcHRpb25zXG5cdCAgICA/IGV4dGVuZChleHRlbmQoe30sIGJhc2VPcHRp
b25zKSwgb3B0aW9ucylcblx0ICAgIDogYmFzZU9wdGlvbnM7XG5cdCAgcmV0dXJuIGNvbXBpbGUk
MSh0ZW1wbGF0ZSwgb3B0aW9ucylcblx0fVxuXHRcblx0ZnVuY3Rpb24gY29tcGlsZVRvRnVuY3Rp
b25zIChcblx0ICB0ZW1wbGF0ZSxcblx0ICBvcHRpb25zLFxuXHQgIHZtXG5cdCkge1xuXHQgIHZh
ciBfd2FybiA9IChvcHRpb25zICYmIG9wdGlvbnMud2FybikgfHwgd2Fybjtcblx0ICAvLyBkZXRl
Y3QgcG9zc2libGUgQ1NQIHJlc3RyaWN0aW9uXG5cdCAgLyogaXN0YW5idWwgaWdub3JlIGlmICov
XG5cdCAgaWYgKGZhbHNlKSB7XG5cdCAgICB0cnkge1xuXHQgICAgICBuZXcgRnVuY3Rpb24oJ3Jl
dHVybiAxJyk7XG5cdCAgICB9IGNhdGNoIChlKSB7XG5cdCAgICAgIGlmIChlLnRvU3RyaW5nKCku
bWF0Y2goL3Vuc2FmZS1ldmFsfENTUC8pKSB7XG5cdCAgICAgICAgX3dhcm4oXG5cdCAgICAgICAg
ICAnSXQgc2VlbXMgeW91IGFyZSB1c2luZyB0aGUgc3RhbmRhbG9uZSBidWlsZCBvZiBWdWUuanMg
aW4gYW4gJyArXG5cdCAgICAgICAgICAnZW52aXJvbm1lbnQgd2l0aCBDb250ZW50IFNlY3VyaXR5
IFBvbGljeSB0aGF0IHByb2hpYml0cyB1bnNhZmUtZXZhbC4gJyArXG5cdCAgICAgICAgICAnVGhl
IHRlbXBsYXRlIGNvbXBpbGVyIGNhbm5vdCB3b3JrIGluIHRoaXMgZW52aXJvbm1lbnQuIENvbnNp
ZGVyICcgK1xuXHQgICAgICAgICAgJ3JlbGF4aW5nIHRoZSBwb2xpY3kgdG8gYWxsb3cgdW5zYWZl
LWV2YWwgb3IgcHJlLWNvbXBpbGluZyB5b3VyICcgK1xuXHQgICAgICAgICAgJ3RlbXBsYXRlcyBp
bnRvIHJlbmRlciBmdW5jdGlvbnMuJ1xuXHQgICAgICAgICk7XG5cdCAgICAgIH1cblx0ICAgIH1c
blx0ICB9XG5cdCAgdmFyIGtleSA9IG9wdGlvbnMgJiYgb3B0aW9ucy5kZWxpbWl0ZXJzXG5cdCAg
ICA/IFN0cmluZyhvcHRpb25zLmRlbGltaXRlcnMpICsgdGVtcGxhdGVcblx0ICAgIDogdGVtcGxh
dGU7XG5cdCAgaWYgKGNhY2hlW2tleV0pIHtcblx0ICAgIHJldHVybiBjYWNoZVtrZXldXG5cdCAg
fVxuXHQgIHZhciByZXMgPSB7fTtcblx0ICB2YXIgY29tcGlsZWQgPSBjb21waWxlJCQxKHRlbXBs
YXRlLCBvcHRpb25zKTtcblx0ICByZXMucmVuZGVyID0gbWFrZUZ1bmN0aW9uKGNvbXBpbGVkLnJl
bmRlcik7XG5cdCAgdmFyIGwgPSBjb21waWxlZC5zdGF0aWNSZW5kZXJGbnMubGVuZ3RoO1xuXHQg
IHJlcy5zdGF0aWNSZW5kZXJGbnMgPSBuZXcgQXJyYXkobCk7XG5cdCAgZm9yICh2YXIgaSA9IDA7
IGkgPCBsOyBpKyspIHtcblx0ICAgIHJlcy5zdGF0aWNSZW5kZXJGbnNbaV0gPSBtYWtlRnVuY3Rp
b24oY29tcGlsZWQuc3RhdGljUmVuZGVyRm5zW2ldKTtcblx0ICB9XG5cdCAgaWYgKGZhbHNlKSB7
XG5cdCAgICBpZiAocmVzLnJlbmRlciA9PT0gbm9vcCB8fCByZXMuc3RhdGljUmVuZGVyRm5zLnNv
bWUoZnVuY3Rpb24gKGZuKSB7IHJldHVybiBmbiA9PT0gbm9vcDsgfSkpIHtcblx0ICAgICAgX3dh
cm4oXG5cdCAgICAgICAgXCJmYWlsZWQgdG8gY29tcGlsZSB0ZW1wbGF0ZTpcXG5cXG5cIiArIHRl
bXBsYXRlICsgXCJcXG5cXG5cIiArXG5cdCAgICAgICAgZGV0ZWN0RXJyb3JzKGNvbXBpbGVkLmFz
dCkuam9pbignXFxuJykgK1xuXHQgICAgICAgICdcXG5cXG4nLFxuXHQgICAgICAgIHZtXG5cdCAg
ICAgICk7XG5cdCAgICB9XG5cdCAgfVxuXHQgIHJldHVybiAoY2FjaGVba2V5XSA9IHJlcylcblx0
fVxuXHRcblx0ZnVuY3Rpb24gbWFrZUZ1bmN0aW9uIChjb2RlKSB7XG5cdCAgdHJ5IHtcblx0ICAg
IHJldHVybiBuZXcgRnVuY3Rpb24oY29kZSlcblx0ICB9IGNhdGNoIChlKSB7XG5cdCAgICByZXR1
cm4gbm9vcFxuXHQgIH1cblx0fVxuXHRcblx0LyogICovXG5cdFxuXHR2YXIgaWRUb1RlbXBsYXRl
ID0gY2FjaGVkKGZ1bmN0aW9uIChpZCkge1xuXHQgIHZhciBlbCA9IHF1ZXJ5KGlkKTtcblx0ICBy
ZXR1cm4gZWwgJiYgZWwuaW5uZXJIVE1MXG5cdH0pO1xuXHRcblx0dmFyIG1vdW50ID0gVnVlJDMu
cHJvdG90eXBlLiRtb3VudDtcblx0VnVlJDMucHJvdG90eXBlLiRtb3VudCA9IGZ1bmN0aW9uIChc
blx0ICBlbCxcblx0ICBoeWRyYXRpbmdcblx0KSB7XG5cdCAgZWwgPSBlbCAmJiBxdWVyeShlbCk7
XG5cdFxuXHQgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuXHQgIGlmIChlbCA9PT0gZG9jdW1l
bnQuYm9keSB8fCBlbCA9PT0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KSB7XG5cdCAgICAoXCJw
cm9kdWN0aW9uXCIpICE9PSAncHJvZHVjdGlvbicgJiYgd2Fybihcblx0ICAgICAgXCJEbyBub3Qg
bW91bnQgVnVlIHRvIDxodG1sPiBvciA8Ym9keT4gLSBtb3VudCB0byBub3JtYWwgZWxlbWVudHMg
aW5zdGVhZC5cIlxuXHQgICAgKTtcblx0ICAgIHJldHVybiB0aGlzXG5cdCAgfVxuXHRcblx0ICB2
YXIgb3B0aW9ucyA9IHRoaXMuJG9wdGlvbnM7XG5cdCAgLy8gcmVzb2x2ZSB0ZW1wbGF0ZS9lbCBh
bmQgY29udmVydCB0byByZW5kZXIgZnVuY3Rpb25cblx0ICBpZiAoIW9wdGlvbnMucmVuZGVyKSB7
XG5cdCAgICB2YXIgdGVtcGxhdGUgPSBvcHRpb25zLnRlbXBsYXRlO1xuXHQgICAgaWYgKHRlbXBs
YXRlKSB7XG5cdCAgICAgIGlmICh0eXBlb2YgdGVtcGxhdGUgPT09ICdzdHJpbmcnKSB7XG5cdCAg
ICAgICAgaWYgKHRlbXBsYXRlLmNoYXJBdCgwKSA9PT0gJyMnKSB7XG5cdCAgICAgICAgICB0ZW1w
bGF0ZSA9IGlkVG9UZW1wbGF0ZSh0ZW1wbGF0ZSk7XG5cdCAgICAgICAgICAvKiBpc3RhbmJ1bCBp
Z25vcmUgaWYgKi9cblx0ICAgICAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgICAgICB3YXJu
KFxuXHQgICAgICAgICAgICAgIChcIlRlbXBsYXRlIGVsZW1lbnQgbm90IGZvdW5kIG9yIGlzIGVt
cHR5OiBcIiArIChvcHRpb25zLnRlbXBsYXRlKSksXG5cdCAgICAgICAgICAgICAgdGhpc1xuXHQg
ICAgICAgICAgICApO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgfSBlbHNl
IGlmICh0ZW1wbGF0ZS5ub2RlVHlwZSkge1xuXHQgICAgICAgIHRlbXBsYXRlID0gdGVtcGxhdGUu
aW5uZXJIVE1MO1xuXHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAgIGlmIChmYWxzZSkge1xuXHQg
ICAgICAgICAgd2FybignaW52YWxpZCB0ZW1wbGF0ZSBvcHRpb246JyArIHRlbXBsYXRlLCB0aGlz
KTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgcmV0dXJuIHRoaXNcblx0ICAgICAgfVxuXHQgICAg
fSBlbHNlIGlmIChlbCkge1xuXHQgICAgICB0ZW1wbGF0ZSA9IGdldE91dGVySFRNTChlbCk7XG5c
dCAgICB9XG5cdCAgICBpZiAodGVtcGxhdGUpIHtcblx0ICAgICAgdmFyIHJlZiA9IGNvbXBpbGVU
b0Z1bmN0aW9ucyh0ZW1wbGF0ZSwge1xuXHQgICAgICAgIHdhcm46IHdhcm4sXG5cdCAgICAgICAg
c2hvdWxkRGVjb2RlTmV3bGluZXM6IHNob3VsZERlY29kZU5ld2xpbmVzLFxuXHQgICAgICAgIGRl
bGltaXRlcnM6IG9wdGlvbnMuZGVsaW1pdGVyc1xuXHQgICAgICB9LCB0aGlzKTtcblx0ICAgICAg
dmFyIHJlbmRlciA9IHJlZi5yZW5kZXI7XG5cdCAgICAgIHZhciBzdGF0aWNSZW5kZXJGbnMgPSBy
ZWYuc3RhdGljUmVuZGVyRm5zO1xuXHQgICAgICBvcHRpb25zLnJlbmRlciA9IHJlbmRlcjtcblx0
ICAgICAgb3B0aW9ucy5zdGF0aWNSZW5kZXJGbnMgPSBzdGF0aWNSZW5kZXJGbnM7XG5cdCAgICB9
XG5cdCAgfVxuXHQgIHJldHVybiBtb3VudC5jYWxsKHRoaXMsIGVsLCBoeWRyYXRpbmcpXG5cdH07
XG5cdFxuXHQvKipcblx0ICogR2V0IG91dGVySFRNTCBvZiBlbGVtZW50cywgdGFraW5nIGNhcmVc
blx0ICogb2YgU1ZHIGVsZW1lbnRzIGluIElFIGFzIHdlbGwuXG5cdCAqL1xuXHRmdW5jdGlvbiBn
ZXRPdXRlckhUTUwgKGVsKSB7XG5cdCAgaWYgKGVsLm91dGVySFRNTCkge1xuXHQgICAgcmV0dXJu
IGVsLm91dGVySFRNTFxuXHQgIH0gZWxzZSB7XG5cdCAgICB2YXIgY29udGFpbmVyID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cdCAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoZWwu
Y2xvbmVOb2RlKHRydWUpKTtcblx0ICAgIHJldHVybiBjb250YWluZXIuaW5uZXJIVE1MXG5cdCAg
fVxuXHR9XG5cdFxuXHRWdWUkMy5jb21waWxlID0gY29tcGlsZVRvRnVuY3Rpb25zO1xuXHRcblx0
bW9kdWxlLmV4cG9ydHMgPSBWdWUkMztcblx0XG5cdC8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAq
L30uY2FsbChleHBvcnRzLCAoZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KCkpKSlcblxuLyoq
Ki8gfSxcbi8qIDIgKi8sXG4vKiAzICovLFxuLyogNCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxl
LCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0XG5cdFxuXHQvL1xuXHQvLyBH
ZW5lcmF0ZWQgb24gVHVlIERlYyAxNiAyMDE0IDEyOjEzOjQ3IEdNVCswMTAwIChDRVQpIGJ5IENo
YXJsaWUgUm9iYmlucywgUGFvbG8gRnJhZ29tZW5pICYgdGhlIENvbnRyaWJ1dG9ycyAoVXNpbmcg
Q29kZXN1cmdlb24pLlxuXHQvLyBWZXJzaW9uIDEuMi42XG5cdC8vXG5cdFxuXHQoZnVuY3Rpb24g
KGV4cG9ydHMpIHtcblx0XG5cdC8qXG5cdCAqIGJyb3dzZXIuanM6IEJyb3dzZXIgc3BlY2lmaWMg
ZnVuY3Rpb25hbGl0eSBmb3IgZGlyZWN0b3IuXG5cdCAqXG5cdCAqIChDKSAyMDExLCBDaGFybGll
IFJvYmJpbnMsIFBhb2xvIEZyYWdvbWVuaSwgJiB0aGUgQ29udHJpYnV0b3JzLlxuXHQgKiBNSVQg
TElDRU5TRVxuXHQgKlxuXHQgKi9cblx0XG5cdHZhciBkbG9jID0gZG9jdW1lbnQubG9jYXRpb247
XG5cdFxuXHRmdW5jdGlvbiBkbG9jSGFzaEVtcHR5KCkge1xuXHQgIC8vIE5vbi1JRSBicm93c2Vy
cyByZXR1cm4gJycgd2hlbiB0aGUgYWRkcmVzcyBiYXIgc2hvd3MgJyMnOyBEaXJlY3RvcidzIGxv
Z2ljXG5cdCAgLy8gYXNzdW1lcyBib3RoIG1lYW4gZW1wdHkuXG5cdCAgcmV0dXJuIGRsb2MuaGFz
aCA9PT0gJycgfHwgZGxvYy5oYXNoID09PSAnIyc7XG5cdH1cblx0XG5cdHZhciBsaXN0ZW5lciA9
IHtcblx0ICBtb2RlOiAnbW9kZXJuJyxcblx0ICBoYXNoOiBkbG9jLmhhc2gsXG5cdCAgaGlzdG9y
eTogZmFsc2UsXG5cdFxuXHQgIGNoZWNrOiBmdW5jdGlvbiAoKSB7XG5cdCAgICB2YXIgaCA9IGRs
b2MuaGFzaDtcblx0ICAgIGlmIChoICE9IHRoaXMuaGFzaCkge1xuXHQgICAgICB0aGlzLmhhc2gg
PSBoO1xuXHQgICAgICB0aGlzLm9uSGFzaENoYW5nZWQoKTtcblx0ICAgIH1cblx0ICB9LFxuXHRc
blx0ICBmaXJlOiBmdW5jdGlvbiAoKSB7XG5cdCAgICBpZiAodGhpcy5tb2RlID09PSAnbW9kZXJu
Jykge1xuXHQgICAgICB0aGlzLmhpc3RvcnkgPT09IHRydWUgPyB3aW5kb3cub25wb3BzdGF0ZSgp
IDogd2luZG93Lm9uaGFzaGNoYW5nZSgpO1xuXHQgICAgfVxuXHQgICAgZWxzZSB7XG5cdCAgICAg
IHRoaXMub25IYXNoQ2hhbmdlZCgpO1xuXHQgICAgfVxuXHQgIH0sXG5cdFxuXHQgIGluaXQ6IGZ1
bmN0aW9uIChmbiwgaGlzdG9yeSkge1xuXHQgICAgdmFyIHNlbGYgPSB0aGlzO1xuXHQgICAgdGhp
cy5oaXN0b3J5ID0gaGlzdG9yeTtcblx0XG5cdCAgICBpZiAoIVJvdXRlci5saXN0ZW5lcnMpIHtc
blx0ICAgICAgUm91dGVyLmxpc3RlbmVycyA9IFtdO1xuXHQgICAgfVxuXHRcblx0ICAgIGZ1bmN0
aW9uIG9uY2hhbmdlKG9uQ2hhbmdlRXZlbnQpIHtcblx0ICAgICAgZm9yICh2YXIgaSA9IDAsIGwg
PSBSb3V0ZXIubGlzdGVuZXJzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuXHQgICAgICAgIFJvdXRl
ci5saXN0ZW5lcnNbaV0ob25DaGFuZ2VFdmVudCk7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0XG5c
dCAgICAvL25vdGUgSUU4IGlzIGJlaW5nIGNvdW50ZWQgYXMgJ21vZGVybicgYmVjYXVzZSBpdCBo
YXMgdGhlIGhhc2hjaGFuZ2UgZXZlbnRcblx0ICAgIGlmICgnb25oYXNoY2hhbmdlJyBpbiB3aW5k
b3cgJiYgKGRvY3VtZW50LmRvY3VtZW50TW9kZSA9PT0gdW5kZWZpbmVkXG5cdCAgICAgIHx8IGRv
Y3VtZW50LmRvY3VtZW50TW9kZSA+IDcpKSB7XG5cdCAgICAgIC8vIEF0IGxlYXN0IGZvciBub3cg
SFRNTDUgaGlzdG9yeSBpcyBhdmFpbGFibGUgZm9yICdtb2Rlcm4nIGJyb3dzZXJzIG9ubHlcblx0
ICAgICAgaWYgKHRoaXMuaGlzdG9yeSA9PT0gdHJ1ZSkge1xuXHQgICAgICAgIC8vIFRoZXJlIGlz
IGFuIG9sZCBidWcgaW4gQ2hyb21lIHRoYXQgY2F1c2VzIG9ucG9wc3RhdGUgdG8gZmlyZSBldmVu
XG5cdCAgICAgICAgLy8gdXBvbiBpbml0aWFsIHBhZ2UgbG9hZC4gU2luY2UgdGhlIGhhbmRsZXIg
aXMgcnVuIG1hbnVhbGx5IGluIGluaXQoKSxcblx0ICAgICAgICAvLyB0aGlzIHdvdWxkIGNhdXNl
IENocm9tZSB0byBydW4gaXQgdHdpc2UuIEN1cnJlbnRseSB0aGUgb25seVxuXHQgICAgICAgIC8v
IHdvcmthcm91bmQgc2VlbXMgdG8gYmUgdG8gc2V0IHRoZSBoYW5kbGVyIGFmdGVyIHRoZSBpbml0
aWFsIHBhZ2UgbG9hZFxuXHQgICAgICAgIC8vIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9jaHJv
bWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTYzMDQwXG5cdCAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHtcblx0ICAgICAgICAgIHdpbmRvdy5vbnBvcHN0YXRlID0gb25jaGFuZ2U7XG5cdCAgICAg
ICAgfSwgNTAwKTtcblx0ICAgICAgfVxuXHQgICAgICBlbHNlIHtcblx0ICAgICAgICB3aW5kb3cu
b25oYXNoY2hhbmdlID0gb25jaGFuZ2U7XG5cdCAgICAgIH1cblx0ICAgICAgdGhpcy5tb2RlID0g
J21vZGVybic7XG5cdCAgICB9XG5cdCAgICBlbHNlIHtcblx0ICAgICAgLy9cblx0ICAgICAgLy8g
SUUgc3VwcG9ydCwgYmFzZWQgb24gYSBjb25jZXB0IGJ5IEVyaWsgQXJ2aWRzb24gLi4uXG5cdCAg
ICAgIC8vXG5cdCAgICAgIHZhciBmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFt
ZScpO1xuXHQgICAgICBmcmFtZS5pZCA9ICdzdGF0ZS1mcmFtZSc7XG5cdCAgICAgIGZyYW1lLnN0
eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG5cdCAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQo
ZnJhbWUpO1xuXHQgICAgICB0aGlzLndyaXRlRnJhbWUoJycpO1xuXHRcblx0ICAgICAgaWYgKCdv
bnByb3BlcnR5Y2hhbmdlJyBpbiBkb2N1bWVudCAmJiAnYXR0YWNoRXZlbnQnIGluIGRvY3VtZW50
KSB7XG5cdCAgICAgICAgZG9jdW1lbnQuYXR0YWNoRXZlbnQoJ29ucHJvcGVydHljaGFuZ2UnLCBm
dW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICBpZiAoZXZlbnQucHJvcGVydHlOYW1lID09PSAnbG9j
YXRpb24nKSB7XG5cdCAgICAgICAgICAgIHNlbGYuY2hlY2soKTtcblx0ICAgICAgICAgIH1cblx0
ICAgICAgICB9KTtcblx0ICAgICAgfVxuXHRcblx0ICAgICAgd2luZG93LnNldEludGVydmFsKGZ1
bmN0aW9uICgpIHsgc2VsZi5jaGVjaygpOyB9LCA1MCk7XG5cdFxuXHQgICAgICB0aGlzLm9uSGFz
aENoYW5nZWQgPSBvbmNoYW5nZTtcblx0ICAgICAgdGhpcy5tb2RlID0gJ2xlZ2FjeSc7XG5cdCAg
ICB9XG5cdFxuXHQgICAgUm91dGVyLmxpc3RlbmVycy5wdXNoKGZuKTtcblx0XG5cdCAgICByZXR1
cm4gdGhpcy5tb2RlO1xuXHQgIH0sXG5cdFxuXHQgIGRlc3Ryb3k6IGZ1bmN0aW9uIChmbikge1xu
XHQgICAgaWYgKCFSb3V0ZXIgfHwgIVJvdXRlci5saXN0ZW5lcnMpIHtcblx0ICAgICAgcmV0dXJu
O1xuXHQgICAgfVxuXHRcblx0ICAgIHZhciBsaXN0ZW5lcnMgPSBSb3V0ZXIubGlzdGVuZXJzO1xu
XHRcblx0ICAgIGZvciAodmFyIGkgPSBsaXN0ZW5lcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0p
IHtcblx0ICAgICAgaWYgKGxpc3RlbmVyc1tpXSA9PT0gZm4pIHtcblx0ICAgICAgICBsaXN0ZW5l
cnMuc3BsaWNlKGksIDEpO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfSxcblx0XG5cdCAgc2V0
SGFzaDogZnVuY3Rpb24gKHMpIHtcblx0ICAgIC8vIE1vemlsbGEgYWx3YXlzIGFkZHMgYW4gZW50
cnkgdG8gdGhlIGhpc3Rvcnlcblx0ICAgIGlmICh0aGlzLm1vZGUgPT09ICdsZWdhY3knKSB7XG5c
dCAgICAgIHRoaXMud3JpdGVGcmFtZShzKTtcblx0ICAgIH1cblx0XG5cdCAgICBpZiAodGhpcy5o
aXN0b3J5ID09PSB0cnVlKSB7XG5cdCAgICAgIHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZSh7fSwg
ZG9jdW1lbnQudGl0bGUsIHMpO1xuXHQgICAgICAvLyBGaXJlIGFuIG9ucG9wc3RhdGUgZXZlbnQg
bWFudWFsbHkgc2luY2UgcHVzaGluZyBkb2VzIG5vdCBvYnZpb3VzbHlcblx0ICAgICAgLy8gdHJp
Z2dlciB0aGUgcG9wIGV2ZW50LlxuXHQgICAgICB0aGlzLmZpcmUoKTtcblx0ICAgIH0gZWxzZSB7
XG5cdCAgICAgIGRsb2MuaGFzaCA9IChzWzBdID09PSAnLycpID8gcyA6ICcvJyArIHM7XG5cdCAg
ICB9XG5cdCAgICByZXR1cm4gdGhpcztcblx0ICB9LFxuXHRcblx0ICB3cml0ZUZyYW1lOiBmdW5j
dGlvbiAocykge1xuXHQgICAgLy8gSUUgc3VwcG9ydC4uLlxuXHQgICAgdmFyIGYgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnc3RhdGUtZnJhbWUnKTtcblx0ICAgIHZhciBkID0gZi5jb250ZW50
RG9jdW1lbnQgfHwgZi5jb250ZW50V2luZG93LmRvY3VtZW50O1xuXHQgICAgZC5vcGVuKCk7XG5c
dCAgICBkLndyaXRlKFwiPHNjcmlwdD5faGFzaCA9ICdcIiArIHMgKyBcIic7IG9ubG9hZCA9IHBh
cmVudC5saXN0ZW5lci5zeW5jSGFzaDs8c2NyaXB0PlwiKTtcblx0ICAgIGQuY2xvc2UoKTtcblx0
ICB9LFxuXHRcblx0ICBzeW5jSGFzaDogZnVuY3Rpb24gKCkge1xuXHQgICAgLy8gSUUgc3VwcG9y
dC4uLlxuXHQgICAgdmFyIHMgPSB0aGlzLl9oYXNoO1xuXHQgICAgaWYgKHMgIT0gZGxvYy5oYXNo
KSB7XG5cdCAgICAgIGRsb2MuaGFzaCA9IHM7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gdGhpcztc
blx0ICB9LFxuXHRcblx0ICBvbkhhc2hDaGFuZ2VkOiBmdW5jdGlvbiAoKSB7fVxuXHR9O1xuXHRc
blx0dmFyIFJvdXRlciA9IGV4cG9ydHMuUm91dGVyID0gZnVuY3Rpb24gKHJvdXRlcykge1xuXHQg
IGlmICghKHRoaXMgaW5zdGFuY2VvZiBSb3V0ZXIpKSByZXR1cm4gbmV3IFJvdXRlcihyb3V0ZXMp
O1xuXHRcblx0ICB0aGlzLnBhcmFtcyAgID0ge307XG5cdCAgdGhpcy5yb3V0ZXMgICA9IHt9O1xu
XHQgIHRoaXMubWV0aG9kcyAgPSBbJ29uJywgJ29uY2UnLCAnYWZ0ZXInLCAnYmVmb3JlJ107XG5c
dCAgdGhpcy5zY29wZSAgICA9IFtdO1xuXHQgIHRoaXMuX21ldGhvZHMgPSB7fTtcblx0XG5cdCAg
dGhpcy5faW5zZXJ0ID0gdGhpcy5pbnNlcnQ7XG5cdCAgdGhpcy5pbnNlcnQgPSB0aGlzLmluc2Vy
dEV4O1xuXHRcblx0ICB0aGlzLmhpc3RvcnlTdXBwb3J0ID0gKHdpbmRvdy5oaXN0b3J5ICE9IG51
bGwgPyB3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUgOiBudWxsKSAhPSBudWxsXG5cdFxuXHQgIHRo
aXMuY29uZmlndXJlKCk7XG5cdCAgdGhpcy5tb3VudChyb3V0ZXMgfHwge30pO1xuXHR9O1xuXHRc
blx0Um91dGVyLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24gKHIpIHtcblx0ICB2YXIgc2VsZiA9
IHRoaXNcblx0ICAgICwgcm91dGVUbztcblx0ICB0aGlzLmhhbmRsZXIgPSBmdW5jdGlvbihvbkNo
YW5nZUV2ZW50KSB7XG5cdCAgICB2YXIgbmV3VVJMID0gb25DaGFuZ2VFdmVudCAmJiBvbkNoYW5n
ZUV2ZW50Lm5ld1VSTCB8fCB3aW5kb3cubG9jYXRpb24uaGFzaDtcblx0ICAgIHZhciB1cmwgPSBz
ZWxmLmhpc3RvcnkgPT09IHRydWUgPyBzZWxmLmdldFBhdGgoKSA6IG5ld1VSTC5yZXBsYWNlKC8u
KiMvLCAnJyk7XG5cdCAgICBzZWxmLmRpc3BhdGNoKCdvbicsIHVybC5jaGFyQXQoMCkgPT09ICcv
JyA/IHVybCA6ICcvJyArIHVybCk7XG5cdCAgfTtcblx0XG5cdCAgbGlzdGVuZXIuaW5pdCh0aGlz
LmhhbmRsZXIsIHRoaXMuaGlzdG9yeSk7XG5cdFxuXHQgIGlmICh0aGlzLmhpc3RvcnkgPT09IGZh
bHNlKSB7XG5cdCAgICBpZiAoZGxvY0hhc2hFbXB0eSgpICYmIHIpIHtcblx0ICAgICAgZGxvYy5o
YXNoID0gcjtcblx0ICAgIH0gZWxzZSBpZiAoIWRsb2NIYXNoRW1wdHkoKSkge1xuXHQgICAgICBz
ZWxmLmRpc3BhdGNoKCdvbicsICcvJyArIGRsb2MuaGFzaC5yZXBsYWNlKC9eKCNcXC98I3xcXC8p
LywgJycpKTtcblx0ICAgIH1cblx0ICB9XG5cdCAgZWxzZSB7XG5cdCAgICBpZiAodGhpcy5jb252
ZXJ0X2hhc2hfaW5faW5pdCkge1xuXHQgICAgICAvLyBVc2UgaGFzaCBhcyByb3V0ZVxuXHQgICAg
ICByb3V0ZVRvID0gZGxvY0hhc2hFbXB0eSgpICYmIHIgPyByIDogIWRsb2NIYXNoRW1wdHkoKSA/
IGRsb2MuaGFzaC5yZXBsYWNlKC9eIy8sICcnKSA6IG51bGw7XG5cdCAgICAgIGlmIChyb3V0ZVRv
KSB7XG5cdCAgICAgICAgd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKHt9LCBkb2N1bWVudC50
aXRsZSwgcm91dGVUbyk7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICAgIGVsc2Uge1xuXHQgICAg
ICAvLyBVc2UgY2Fub25pY2FsIHVybFxuXHQgICAgICByb3V0ZVRvID0gdGhpcy5nZXRQYXRoKCk7
XG5cdCAgICB9XG5cdFxuXHQgICAgLy8gUm91dGVyIGhhcyBiZWVuIGluaXRpYWxpemVkLCBidXQg
ZHVlIHRvIHRoZSBjaHJvbWUgYnVnIGl0IHdpbGwgbm90XG5cdCAgICAvLyB5ZXQgYWN0dWFsbHkg
cm91dGUgSFRNTDUgaGlzdG9yeSBzdGF0ZSBjaGFuZ2VzLiBUaHVzLCBkZWNpZGUgaWYgc2hvdWxk
IHJvdXRlLlxuXHQgICAgaWYgKHJvdXRlVG8gfHwgdGhpcy5ydW5faW5faW5pdCA9PT0gdHJ1ZSkg
e1xuXHQgICAgICB0aGlzLmhhbmRsZXIoKTtcblx0ICAgIH1cblx0ICB9XG5cdFxuXHQgIHJldHVy
biB0aGlzO1xuXHR9O1xuXHRcblx0Um91dGVyLnByb3RvdHlwZS5leHBsb2RlID0gZnVuY3Rpb24g
KCkge1xuXHQgIHZhciB2ID0gdGhpcy5oaXN0b3J5ID09PSB0cnVlID8gdGhpcy5nZXRQYXRoKCkg
OiBkbG9jLmhhc2g7XG5cdCAgaWYgKHYuY2hhckF0KDEpID09PSAnLycpIHsgdj12LnNsaWNlKDEp
IH1cblx0ICByZXR1cm4gdi5zbGljZSgxLCB2Lmxlbmd0aCkuc3BsaXQoXCIvXCIpO1xuXHR9O1xu
XHRcblx0Um91dGVyLnByb3RvdHlwZS5zZXRSb3V0ZSA9IGZ1bmN0aW9uIChpLCB2LCB2YWwpIHtc
blx0ICB2YXIgdXJsID0gdGhpcy5leHBsb2RlKCk7XG5cdFxuXHQgIGlmICh0eXBlb2YgaSA9PT0g
J251bWJlcicgJiYgdHlwZW9mIHYgPT09ICdzdHJpbmcnKSB7XG5cdCAgICB1cmxbaV0gPSB2O1xu
XHQgIH1cblx0ICBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5nJykge1xuXHQgICAgdXJs
LnNwbGljZShpLCB2LCBzKTtcblx0ICB9XG5cdCAgZWxzZSB7XG5cdCAgICB1cmwgPSBbaV07XG5c
dCAgfVxuXHRcblx0ICBsaXN0ZW5lci5zZXRIYXNoKHVybC5qb2luKCcvJykpO1xuXHQgIHJldHVy
biB1cmw7XG5cdH07XG5cdFxuXHQvL1xuXHQvLyAjIyMgZnVuY3Rpb24gaW5zZXJ0RXgobWV0aG9k
LCBwYXRoLCByb3V0ZSwgcGFyZW50KVxuXHQvLyAjIyMjIEBtZXRob2Qge3N0cmluZ30gTWV0aG9k
IHRvIGluc2VydCB0aGUgc3BlY2lmaWMgYHJvdXRlYC5cblx0Ly8gIyMjIyBAcGF0aCB7QXJyYXl9
IFBhcnNlZCBwYXRoIHRvIGluc2VydCB0aGUgYHJvdXRlYCBhdC5cblx0Ly8gIyMjIyBAcm91dGUg
e0FycmF5fGZ1bmN0aW9ufSBSb3V0ZSBoYW5kbGVycyB0byBpbnNlcnQuXG5cdC8vICMjIyMgQHBh
cmVudCB7T2JqZWN0fSAqKk9wdGlvbmFsKiogUGFyZW50IFwicm91dGVzXCIgdG8gaW5zZXJ0IGlu
dG8uXG5cdC8vIGluc2VydCBhIGNhbGxiYWNrIHRoYXQgd2lsbCBvbmx5IG9jY3VyIG9uY2UgcGVy
IHRoZSBtYXRjaGVkIHJvdXRlLlxuXHQvL1xuXHRSb3V0ZXIucHJvdG90eXBlLmluc2VydEV4ID0g
ZnVuY3Rpb24obWV0aG9kLCBwYXRoLCByb3V0ZSwgcGFyZW50KSB7XG5cdCAgaWYgKG1ldGhvZCA9
PT0gXCJvbmNlXCIpIHtcblx0ICAgIG1ldGhvZCA9IFwib25cIjtcblx0ICAgIHJvdXRlID0gZnVu
Y3Rpb24ocm91dGUpIHtcblx0ICAgICAgdmFyIG9uY2UgPSBmYWxzZTtcblx0ICAgICAgcmV0dXJu
IGZ1bmN0aW9uKCkge1xuXHQgICAgICAgIGlmIChvbmNlKSByZXR1cm47XG5cdCAgICAgICAgb25j
ZSA9IHRydWU7XG5cdCAgICAgICAgcmV0dXJuIHJvdXRlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7
XG5cdCAgICAgIH07XG5cdCAgICB9KHJvdXRlKTtcblx0ICB9XG5cdCAgcmV0dXJuIHRoaXMuX2lu
c2VydChtZXRob2QsIHBhdGgsIHJvdXRlLCBwYXJlbnQpO1xuXHR9O1xuXHRcblx0Um91dGVyLnBy
b3RvdHlwZS5nZXRSb3V0ZSA9IGZ1bmN0aW9uICh2KSB7XG5cdCAgdmFyIHJldCA9IHY7XG5cdFxu
XHQgIGlmICh0eXBlb2YgdiA9PT0gXCJudW1iZXJcIikge1xuXHQgICAgcmV0ID0gdGhpcy5leHBs
b2RlKClbdl07XG5cdCAgfVxuXHQgIGVsc2UgaWYgKHR5cGVvZiB2ID09PSBcInN0cmluZ1wiKXtc
blx0ICAgIHZhciBoID0gdGhpcy5leHBsb2RlKCk7XG5cdCAgICByZXQgPSBoLmluZGV4T2Yodik7
XG5cdCAgfVxuXHQgIGVsc2Uge1xuXHQgICAgcmV0ID0gdGhpcy5leHBsb2RlKCk7XG5cdCAgfVxu
XHRcblx0ICByZXR1cm4gcmV0O1xuXHR9O1xuXHRcblx0Um91dGVyLnByb3RvdHlwZS5kZXN0cm95
ID0gZnVuY3Rpb24gKCkge1xuXHQgIGxpc3RlbmVyLmRlc3Ryb3kodGhpcy5oYW5kbGVyKTtcblx0
ICByZXR1cm4gdGhpcztcblx0fTtcblx0XG5cdFJvdXRlci5wcm90b3R5cGUuZ2V0UGF0aCA9IGZ1
bmN0aW9uICgpIHtcblx0ICB2YXIgcGF0aCA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTtcblx0
ICBpZiAocGF0aC5zdWJzdHIoMCwgMSkgIT09ICcvJykge1xuXHQgICAgcGF0aCA9ICcvJyArIHBh
dGg7XG5cdCAgfVxuXHQgIHJldHVybiBwYXRoO1xuXHR9O1xuXHRmdW5jdGlvbiBfZXZlcnkoYXJy
LCBpdGVyYXRvcikge1xuXHQgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSArPSAx
KSB7XG5cdCAgICBpZiAoaXRlcmF0b3IoYXJyW2ldLCBpLCBhcnIpID09PSBmYWxzZSkge1xuXHQg
ICAgICByZXR1cm47XG5cdCAgICB9XG5cdCAgfVxuXHR9XG5cdFxuXHRmdW5jdGlvbiBfZmxhdHRl
bihhcnIpIHtcblx0ICB2YXIgZmxhdCA9IFtdO1xuXHQgIGZvciAodmFyIGkgPSAwLCBuID0gYXJy
Lmxlbmd0aDsgaSA8IG47IGkrKykge1xuXHQgICAgZmxhdCA9IGZsYXQuY29uY2F0KGFycltpXSk7
XG5cdCAgfVxuXHQgIHJldHVybiBmbGF0O1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBfYXN5bmNFdmVy
eVNlcmllcyhhcnIsIGl0ZXJhdG9yLCBjYWxsYmFjaykge1xuXHQgIGlmICghYXJyLmxlbmd0aCkg
e1xuXHQgICAgcmV0dXJuIGNhbGxiYWNrKCk7XG5cdCAgfVxuXHQgIHZhciBjb21wbGV0ZWQgPSAw
O1xuXHQgIChmdW5jdGlvbiBpdGVyYXRlKCkge1xuXHQgICAgaXRlcmF0b3IoYXJyW2NvbXBsZXRl
ZF0sIGZ1bmN0aW9uKGVycikge1xuXHQgICAgICBpZiAoZXJyIHx8IGVyciA9PT0gZmFsc2UpIHtc
blx0ICAgICAgICBjYWxsYmFjayhlcnIpO1xuXHQgICAgICAgIGNhbGxiYWNrID0gZnVuY3Rpb24o
KSB7fTtcblx0ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICBjb21wbGV0ZWQgKz0gMTtcblx0ICAg
ICAgICBpZiAoY29tcGxldGVkID09PSBhcnIubGVuZ3RoKSB7XG5cdCAgICAgICAgICBjYWxsYmFj
aygpO1xuXHQgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICBpdGVyYXRlKCk7XG5cdCAgICAg
ICAgfVxuXHQgICAgICB9XG5cdCAgICB9KTtcblx0ICB9KSgpO1xuXHR9XG5cdFxuXHRmdW5jdGlv
biBwYXJhbWlmeVN0cmluZyhzdHIsIHBhcmFtcywgbW9kKSB7XG5cdCAgbW9kID0gc3RyO1xuXHQg
IGZvciAodmFyIHBhcmFtIGluIHBhcmFtcykge1xuXHQgICAgaWYgKHBhcmFtcy5oYXNPd25Qcm9w
ZXJ0eShwYXJhbSkpIHtcblx0ICAgICAgbW9kID0gcGFyYW1zW3BhcmFtXShzdHIpO1xuXHQgICAg
ICBpZiAobW9kICE9PSBzdHIpIHtcblx0ICAgICAgICBicmVhaztcblx0ICAgICAgfVxuXHQgICAg
fVxuXHQgIH1cblx0ICByZXR1cm4gbW9kID09PSBzdHIgPyBcIihbLl9hLXpBLVowLTktJSgpXSsp
XCIgOiBtb2Q7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIHJlZ2lmeVN0cmluZyhzdHIsIHBhcmFtcykg
e1xuXHQgIHZhciBtYXRjaGVzLCBsYXN0ID0gMCwgb3V0ID0gXCJcIjtcblx0ICB3aGlsZSAobWF0
Y2hlcyA9IHN0ci5zdWJzdHIobGFzdCkubWF0Y2goL1teXFx3XFxkXFwtICVAJl0qXFwqW15cXHdc
XGRcXC0gJUAmXSovKSkge1xuXHQgICAgbGFzdCA9IG1hdGNoZXMuaW5kZXggKyBtYXRjaGVzWzBd
Lmxlbmd0aDtcblx0ICAgIG1hdGNoZXNbMF0gPSBtYXRjaGVzWzBdLnJlcGxhY2UoL15cXCovLCBc
IihbXy4oKSFcXFxcICVAJmEtekEtWjAtOS1dKylcIik7XG5cdCAgICBvdXQgKz0gc3RyLnN1YnN0
cigwLCBtYXRjaGVzLmluZGV4KSArIG1hdGNoZXNbMF07XG5cdCAgfVxuXHQgIHN0ciA9IG91dCAr
PSBzdHIuc3Vic3RyKGxhc3QpO1xuXHQgIHZhciBjYXB0dXJlcyA9IHN0ci5tYXRjaCgvOihbXlxc
L10rKS9pZyksIGNhcHR1cmUsIGxlbmd0aDtcblx0ICBpZiAoY2FwdHVyZXMpIHtcblx0ICAgIGxl
bmd0aCA9IGNhcHR1cmVzLmxlbmd0aDtcblx0ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3Ro
OyBpKyspIHtcblx0ICAgICAgY2FwdHVyZSA9IGNhcHR1cmVzW2ldO1xuXHQgICAgICBpZiAoY2Fw
dHVyZS5zbGljZSgwLCAyKSA9PT0gXCI6OlwiKSB7XG5cdCAgICAgICAgc3RyID0gY2FwdHVyZS5z
bGljZSgxKTtcblx0ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICBzdHIgPSBzdHIucmVwbGFjZShj
YXB0dXJlLCBwYXJhbWlmeVN0cmluZyhjYXB0dXJlLCBwYXJhbXMpKTtcblx0ICAgICAgfVxuXHQg
ICAgfVxuXHQgIH1cblx0ICByZXR1cm4gc3RyO1xuXHR9XG5cdFxuXHRmdW5jdGlvbiB0ZXJtaW5h
dG9yKHJvdXRlcywgZGVsaW1pdGVyLCBzdGFydCwgc3RvcCkge1xuXHQgIHZhciBsYXN0ID0gMCwg
bGVmdCA9IDAsIHJpZ2h0ID0gMCwgc3RhcnQgPSAoc3RhcnQgfHwgXCIoXCIpLnRvU3RyaW5nKCks
IHN0b3AgPSAoc3RvcCB8fCBcIilcIikudG9TdHJpbmcoKSwgaTtcblx0ICBmb3IgKGkgPSAwOyBp
IDwgcm91dGVzLmxlbmd0aDsgaSsrKSB7XG5cdCAgICB2YXIgY2h1bmsgPSByb3V0ZXNbaV07XG5c
dCAgICBpZiAoY2h1bmsuaW5kZXhPZihzdGFydCwgbGFzdCkgPiBjaHVuay5pbmRleE9mKHN0b3As
IGxhc3QpIHx8IH5jaHVuay5pbmRleE9mKHN0YXJ0LCBsYXN0KSAmJiAhfmNodW5rLmluZGV4T2Yo
c3RvcCwgbGFzdCkgfHwgIX5jaHVuay5pbmRleE9mKHN0YXJ0LCBsYXN0KSAmJiB+Y2h1bmsuaW5k
ZXhPZihzdG9wLCBsYXN0KSkge1xuXHQgICAgICBsZWZ0ID0gY2h1bmsuaW5kZXhPZihzdGFydCwg
bGFzdCk7XG5cdCAgICAgIHJpZ2h0ID0gY2h1bmsuaW5kZXhPZihzdG9wLCBsYXN0KTtcblx0ICAg
ICAgaWYgKH5sZWZ0ICYmICF+cmlnaHQgfHwgIX5sZWZ0ICYmIH5yaWdodCkge1xuXHQgICAgICAg
IHZhciB0bXAgPSByb3V0ZXMuc2xpY2UoMCwgKGkgfHwgMSkgKyAxKS5qb2luKGRlbGltaXRlcik7
XG5cdCAgICAgICAgcm91dGVzID0gWyB0bXAgXS5jb25jYXQocm91dGVzLnNsaWNlKChpIHx8IDEp
ICsgMSkpO1xuXHQgICAgICB9XG5cdCAgICAgIGxhc3QgPSAocmlnaHQgPiBsZWZ0ID8gcmlnaHQg
OiBsZWZ0KSArIDE7XG5cdCAgICAgIGkgPSAwO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgbGFz
dCA9IDA7XG5cdCAgICB9XG5cdCAgfVxuXHQgIHJldHVybiByb3V0ZXM7XG5cdH1cblx0XG5cdHZh
ciBRVUVSWV9TRVBBUkFUT1IgPSAvXFw/LiovO1xuXHRcblx0Um91dGVyLnByb3RvdHlwZS5jb25m
aWd1cmUgPSBmdW5jdGlvbihvcHRpb25zKSB7XG5cdCAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307
XG5cdCAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLm1ldGhvZHMubGVuZ3RoOyBpKyspIHtcblx0
ICAgIHRoaXMuX21ldGhvZHNbdGhpcy5tZXRob2RzW2ldXSA9IHRydWU7XG5cdCAgfVxuXHQgIHRo
aXMucmVjdXJzZSA9IG9wdGlvbnMucmVjdXJzZSB8fCB0aGlzLnJlY3Vyc2UgfHwgZmFsc2U7XG5c
dCAgdGhpcy5hc3luYyA9IG9wdGlvbnMuYXN5bmMgfHwgZmFsc2U7XG5cdCAgdGhpcy5kZWxpbWl0
ZXIgPSBvcHRpb25zLmRlbGltaXRlciB8fCBcIi9cIjtcblx0ICB0aGlzLnN0cmljdCA9IHR5cGVv
ZiBvcHRpb25zLnN0cmljdCA9PT0gXCJ1bmRlZmluZWRcIiA/IHRydWUgOiBvcHRpb25zLnN0cmlj
dDtcblx0ICB0aGlzLm5vdGZvdW5kID0gb3B0aW9ucy5ub3Rmb3VuZDtcblx0ICB0aGlzLnJlc291
cmNlID0gb3B0aW9ucy5yZXNvdXJjZTtcblx0ICB0aGlzLmhpc3RvcnkgPSBvcHRpb25zLmh0bWw1
aGlzdG9yeSAmJiB0aGlzLmhpc3RvcnlTdXBwb3J0IHx8IGZhbHNlO1xuXHQgIHRoaXMucnVuX2lu
X2luaXQgPSB0aGlzLmhpc3RvcnkgPT09IHRydWUgJiYgb3B0aW9ucy5ydW5faGFuZGxlcl9pbl9p
bml0ICE9PSBmYWxzZTtcblx0ICB0aGlzLmNvbnZlcnRfaGFzaF9pbl9pbml0ID0gdGhpcy5oaXN0
b3J5ID09PSB0cnVlICYmIG9wdGlvbnMuY29udmVydF9oYXNoX2luX2luaXQgIT09IGZhbHNlO1xu
XHQgIHRoaXMuZXZlcnkgPSB7XG5cdCAgICBhZnRlcjogb3B0aW9ucy5hZnRlciB8fCBudWxsLFxu
XHQgICAgYmVmb3JlOiBvcHRpb25zLmJlZm9yZSB8fCBudWxsLFxuXHQgICAgb246IG9wdGlvbnMu
b24gfHwgbnVsbFxuXHQgIH07XG5cdCAgcmV0dXJuIHRoaXM7XG5cdH07XG5cdFxuXHRSb3V0ZXIu
cHJvdG90eXBlLnBhcmFtID0gZnVuY3Rpb24odG9rZW4sIG1hdGNoZXIpIHtcblx0ICBpZiAodG9r
ZW5bMF0gIT09IFwiOlwiKSB7XG5cdCAgICB0b2tlbiA9IFwiOlwiICsgdG9rZW47XG5cdCAgfVxu
XHQgIHZhciBjb21waWxlZCA9IG5ldyBSZWdFeHAodG9rZW4sIFwiZ1wiKTtcblx0ICB0aGlzLnBh
cmFtc1t0b2tlbl0gPSBmdW5jdGlvbihzdHIpIHtcblx0ICAgIHJldHVybiBzdHIucmVwbGFjZShj
b21waWxlZCwgbWF0Y2hlci5zb3VyY2UgfHwgbWF0Y2hlcik7XG5cdCAgfTtcblx0ICByZXR1cm4g
dGhpcztcblx0fTtcblx0XG5cdFJvdXRlci5wcm90b3R5cGUub24gPSBSb3V0ZXIucHJvdG90eXBl
LnJvdXRlID0gZnVuY3Rpb24obWV0aG9kLCBwYXRoLCByb3V0ZSkge1xuXHQgIHZhciBzZWxmID0g
dGhpcztcblx0ICBpZiAoIXJvdXRlICYmIHR5cGVvZiBwYXRoID09IFwiZnVuY3Rpb25cIikge1xu
XHQgICAgcm91dGUgPSBwYXRoO1xuXHQgICAgcGF0aCA9IG1ldGhvZDtcblx0ICAgIG1ldGhvZCA9
IFwib25cIjtcblx0ICB9XG5cdCAgaWYgKEFycmF5LmlzQXJyYXkocGF0aCkpIHtcblx0ICAgIHJl
dHVybiBwYXRoLmZvckVhY2goZnVuY3Rpb24ocCkge1xuXHQgICAgICBzZWxmLm9uKG1ldGhvZCwg
cCwgcm91dGUpO1xuXHQgICAgfSk7XG5cdCAgfVxuXHQgIGlmIChwYXRoLnNvdXJjZSkge1xuXHQg
ICAgcGF0aCA9IHBhdGguc291cmNlLnJlcGxhY2UoL1xcXFxcXC8vaWcsIFwiL1wiKTtcblx0ICB9
XG5cdCAgaWYgKEFycmF5LmlzQXJyYXkobWV0aG9kKSkge1xuXHQgICAgcmV0dXJuIG1ldGhvZC5m
b3JFYWNoKGZ1bmN0aW9uKG0pIHtcblx0ICAgICAgc2VsZi5vbihtLnRvTG93ZXJDYXNlKCksIHBh
dGgsIHJvdXRlKTtcblx0ICAgIH0pO1xuXHQgIH1cblx0ICBwYXRoID0gcGF0aC5zcGxpdChuZXcg
UmVnRXhwKHRoaXMuZGVsaW1pdGVyKSk7XG5cdCAgcGF0aCA9IHRlcm1pbmF0b3IocGF0aCwgdGhp
cy5kZWxpbWl0ZXIpO1xuXHQgIHRoaXMuaW5zZXJ0KG1ldGhvZCwgdGhpcy5zY29wZS5jb25jYXQo
cGF0aCksIHJvdXRlKTtcblx0fTtcblx0XG5cdFJvdXRlci5wcm90b3R5cGUucGF0aCA9IGZ1bmN0
aW9uKHBhdGgsIHJvdXRlc0ZuKSB7XG5cdCAgdmFyIHNlbGYgPSB0aGlzLCBsZW5ndGggPSB0aGlz
LnNjb3BlLmxlbmd0aDtcblx0ICBpZiAocGF0aC5zb3VyY2UpIHtcblx0ICAgIHBhdGggPSBwYXRo
LnNvdXJjZS5yZXBsYWNlKC9cXFxcXFwvL2lnLCBcIi9cIik7XG5cdCAgfVxuXHQgIHBhdGggPSBw
YXRoLnNwbGl0KG5ldyBSZWdFeHAodGhpcy5kZWxpbWl0ZXIpKTtcblx0ICBwYXRoID0gdGVybWlu
YXRvcihwYXRoLCB0aGlzLmRlbGltaXRlcik7XG5cdCAgdGhpcy5zY29wZSA9IHRoaXMuc2NvcGUu
Y29uY2F0KHBhdGgpO1xuXHQgIHJvdXRlc0ZuLmNhbGwodGhpcywgdGhpcyk7XG5cdCAgdGhpcy5z
Y29wZS5zcGxpY2UobGVuZ3RoLCBwYXRoLmxlbmd0aCk7XG5cdH07XG5cdFxuXHRSb3V0ZXIucHJv
dG90eXBlLmRpc3BhdGNoID0gZnVuY3Rpb24obWV0aG9kLCBwYXRoLCBjYWxsYmFjaykge1xuXHQg
IHZhciBzZWxmID0gdGhpcywgZm5zID0gdGhpcy50cmF2ZXJzZShtZXRob2QsIHBhdGgucmVwbGFj
ZShRVUVSWV9TRVBBUkFUT1IsIFwiXCIpLCB0aGlzLnJvdXRlcywgXCJcIiksIGludm9rZWQgPSB0
aGlzLl9pbnZva2VkLCBhZnRlcjtcblx0ICB0aGlzLl9pbnZva2VkID0gdHJ1ZTtcblx0ICBpZiAo
IWZucyB8fCBmbnMubGVuZ3RoID09PSAwKSB7XG5cdCAgICB0aGlzLmxhc3QgPSBbXTtcblx0ICAg
IGlmICh0eXBlb2YgdGhpcy5ub3Rmb3VuZCA9PT0gXCJmdW5jdGlvblwiKSB7XG5cdCAgICAgIHRo
aXMuaW52b2tlKFsgdGhpcy5ub3Rmb3VuZCBdLCB7XG5cdCAgICAgICAgbWV0aG9kOiBtZXRob2Qs
XG5cdCAgICAgICAgcGF0aDogcGF0aFxuXHQgICAgICB9LCBjYWxsYmFjayk7XG5cdCAgICB9XG5c
dCAgICByZXR1cm4gZmFsc2U7XG5cdCAgfVxuXHQgIGlmICh0aGlzLnJlY3Vyc2UgPT09IFwiZm9y
d2FyZFwiKSB7XG5cdCAgICBmbnMgPSBmbnMucmV2ZXJzZSgpO1xuXHQgIH1cblx0ICBmdW5jdGlv
biB1cGRhdGVBbmRJbnZva2UoKSB7XG5cdCAgICBzZWxmLmxhc3QgPSBmbnMuYWZ0ZXI7XG5cdCAg
ICBzZWxmLmludm9rZShzZWxmLnJ1bmxpc3QoZm5zKSwgc2VsZiwgY2FsbGJhY2spO1xuXHQgIH1c
blx0ICBhZnRlciA9IHRoaXMuZXZlcnkgJiYgdGhpcy5ldmVyeS5hZnRlciA/IFsgdGhpcy5ldmVy
eS5hZnRlciBdLmNvbmNhdCh0aGlzLmxhc3QpIDogWyB0aGlzLmxhc3QgXTtcblx0ICBpZiAoYWZ0
ZXIgJiYgYWZ0ZXIubGVuZ3RoID4gMCAmJiBpbnZva2VkKSB7XG5cdCAgICBpZiAodGhpcy5hc3lu
Yykge1xuXHQgICAgICB0aGlzLmludm9rZShhZnRlciwgdGhpcywgdXBkYXRlQW5kSW52b2tlKTtc
blx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIHRoaXMuaW52b2tlKGFmdGVyLCB0aGlzKTtcblx0ICAg
ICAgdXBkYXRlQW5kSW52b2tlKCk7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gdHJ1ZTtcblx0ICB9
XG5cdCAgdXBkYXRlQW5kSW52b2tlKCk7XG5cdCAgcmV0dXJuIHRydWU7XG5cdH07XG5cdFxuXHRS
b3V0ZXIucHJvdG90eXBlLmludm9rZSA9IGZ1bmN0aW9uKGZucywgdGhpc0FyZywgY2FsbGJhY2sp
IHtcblx0ICB2YXIgc2VsZiA9IHRoaXM7XG5cdCAgdmFyIGFwcGx5O1xuXHQgIGlmICh0aGlzLmFz
eW5jKSB7XG5cdCAgICBhcHBseSA9IGZ1bmN0aW9uKGZuLCBuZXh0KSB7XG5cdCAgICAgIGlmIChB
cnJheS5pc0FycmF5KGZuKSkge1xuXHQgICAgICAgIHJldHVybiBfYXN5bmNFdmVyeVNlcmllcyhm
biwgYXBwbHksIG5leHQpO1xuXHQgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBmbiA9PSBcImZ1bmN0
aW9uXCIpIHtcblx0ICAgICAgICBmbi5hcHBseSh0aGlzQXJnLCAoZm5zLmNhcHR1cmVzIHx8IFtd
KS5jb25jYXQobmV4dCkpO1xuXHQgICAgICB9XG5cdCAgICB9O1xuXHQgICAgX2FzeW5jRXZlcnlT
ZXJpZXMoZm5zLCBhcHBseSwgZnVuY3Rpb24oKSB7XG5cdCAgICAgIGlmIChjYWxsYmFjaykge1xu
XHQgICAgICAgIGNhbGxiYWNrLmFwcGx5KHRoaXNBcmcsIGFyZ3VtZW50cyk7XG5cdCAgICAgIH1c
blx0ICAgIH0pO1xuXHQgIH0gZWxzZSB7XG5cdCAgICBhcHBseSA9IGZ1bmN0aW9uKGZuKSB7XG5c
dCAgICAgIGlmIChBcnJheS5pc0FycmF5KGZuKSkge1xuXHQgICAgICAgIHJldHVybiBfZXZlcnko
Zm4sIGFwcGx5KTtcblx0ICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZm4gPT09IFwiZnVuY3Rpb25c
Iikge1xuXHQgICAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzQXJnLCBmbnMuY2FwdHVyZXMgfHwg
W10pO1xuXHQgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBmbiA9PT0gXCJzdHJpbmdcIiAmJiBzZWxm
LnJlc291cmNlKSB7XG5cdCAgICAgICAgc2VsZi5yZXNvdXJjZVtmbl0uYXBwbHkodGhpc0FyZywg
Zm5zLmNhcHR1cmVzIHx8IFtdKTtcblx0ICAgICAgfVxuXHQgICAgfTtcblx0ICAgIF9ldmVyeShm
bnMsIGFwcGx5KTtcblx0ICB9XG5cdH07XG5cdFxuXHRSb3V0ZXIucHJvdG90eXBlLnRyYXZlcnNl
ID0gZnVuY3Rpb24obWV0aG9kLCBwYXRoLCByb3V0ZXMsIHJlZ2V4cCwgZmlsdGVyKSB7XG5cdCAg
dmFyIGZucyA9IFtdLCBjdXJyZW50LCBleGFjdCwgbWF0Y2gsIG5leHQsIHRoYXQ7XG5cdCAgZnVu
Y3Rpb24gZmlsdGVyUm91dGVzKHJvdXRlcykge1xuXHQgICAgaWYgKCFmaWx0ZXIpIHtcblx0ICAg
ICAgcmV0dXJuIHJvdXRlcztcblx0ICAgIH1cblx0ICAgIGZ1bmN0aW9uIGRlZXBDb3B5KHNvdXJj
ZSkge1xuXHQgICAgICB2YXIgcmVzdWx0ID0gW107XG5cdCAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgc291cmNlLmxlbmd0aDsgaSsrKSB7XG5cdCAgICAgICAgcmVzdWx0W2ldID0gQXJyYXkuaXNB
cnJheShzb3VyY2VbaV0pID8gZGVlcENvcHkoc291cmNlW2ldKSA6IHNvdXJjZVtpXTtcblx0ICAg
ICAgfVxuXHQgICAgICByZXR1cm4gcmVzdWx0O1xuXHQgICAgfVxuXHQgICAgZnVuY3Rpb24gYXBw
bHlGaWx0ZXIoZm5zKSB7XG5cdCAgICAgIGZvciAodmFyIGkgPSBmbnMubGVuZ3RoIC0gMTsgaSA+
PSAwOyBpLS0pIHtcblx0ICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShmbnNbaV0pKSB7XG5cdCAg
ICAgICAgICBhcHBseUZpbHRlcihmbnNbaV0pO1xuXHQgICAgICAgICAgaWYgKGZuc1tpXS5sZW5n
dGggPT09IDApIHtcblx0ICAgICAgICAgICAgZm5zLnNwbGljZShpLCAxKTtcblx0ICAgICAgICAg
IH1cblx0ICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgaWYgKCFmaWx0ZXIoZm5zW2ldKSkg
e1xuXHQgICAgICAgICAgICBmbnMuc3BsaWNlKGksIDEpO1xuXHQgICAgICAgICAgfVxuXHQgICAg
ICAgIH1cblx0ICAgICAgfVxuXHQgICAgfVxuXHQgICAgdmFyIG5ld1JvdXRlcyA9IGRlZXBDb3B5
KHJvdXRlcyk7XG5cdCAgICBuZXdSb3V0ZXMubWF0Y2hlZCA9IHJvdXRlcy5tYXRjaGVkO1xuXHQg
ICAgbmV3Um91dGVzLmNhcHR1cmVzID0gcm91dGVzLmNhcHR1cmVzO1xuXHQgICAgbmV3Um91dGVz
LmFmdGVyID0gcm91dGVzLmFmdGVyLmZpbHRlcihmaWx0ZXIpO1xuXHQgICAgYXBwbHlGaWx0ZXIo
bmV3Um91dGVzKTtcblx0ICAgIHJldHVybiBuZXdSb3V0ZXM7XG5cdCAgfVxuXHQgIGlmIChwYXRo
ID09PSB0aGlzLmRlbGltaXRlciAmJiByb3V0ZXNbbWV0aG9kXSkge1xuXHQgICAgbmV4dCA9IFsg
WyByb3V0ZXMuYmVmb3JlLCByb3V0ZXNbbWV0aG9kXSBdLmZpbHRlcihCb29sZWFuKSBdO1xuXHQg
ICAgbmV4dC5hZnRlciA9IFsgcm91dGVzLmFmdGVyIF0uZmlsdGVyKEJvb2xlYW4pO1xuXHQgICAg
bmV4dC5tYXRjaGVkID0gdHJ1ZTtcblx0ICAgIG5leHQuY2FwdHVyZXMgPSBbXTtcblx0ICAgIHJl
dHVybiBmaWx0ZXJSb3V0ZXMobmV4dCk7XG5cdCAgfVxuXHQgIGZvciAodmFyIHIgaW4gcm91dGVz
KSB7XG5cdCAgICBpZiAocm91dGVzLmhhc093blByb3BlcnR5KHIpICYmICghdGhpcy5fbWV0aG9k
c1tyXSB8fCB0aGlzLl9tZXRob2RzW3JdICYmIHR5cGVvZiByb3V0ZXNbcl0gPT09IFwib2JqZWN0
XCIgJiYgIUFycmF5LmlzQXJyYXkocm91dGVzW3JdKSkpIHtcblx0ICAgICAgY3VycmVudCA9IGV4
YWN0ID0gcmVnZXhwICsgdGhpcy5kZWxpbWl0ZXIgKyByO1xuXHQgICAgICBpZiAoIXRoaXMuc3Ry
aWN0KSB7XG5cdCAgICAgICAgZXhhY3QgKz0gXCJbXCIgKyB0aGlzLmRlbGltaXRlciArIFwiXT9c
Ijtcblx0ICAgICAgfVxuXHQgICAgICBtYXRjaCA9IHBhdGgubWF0Y2gobmV3IFJlZ0V4cChcIl5c
IiArIGV4YWN0KSk7XG5cdCAgICAgIGlmICghbWF0Y2gpIHtcblx0ICAgICAgICBjb250aW51ZTtc
blx0ICAgICAgfVxuXHQgICAgICBpZiAobWF0Y2hbMF0gJiYgbWF0Y2hbMF0gPT0gcGF0aCAmJiBy
b3V0ZXNbcl1bbWV0aG9kXSkge1xuXHQgICAgICAgIG5leHQgPSBbIFsgcm91dGVzW3JdLmJlZm9y
ZSwgcm91dGVzW3JdW21ldGhvZF0gXS5maWx0ZXIoQm9vbGVhbikgXTtcblx0ICAgICAgICBuZXh0
LmFmdGVyID0gWyByb3V0ZXNbcl0uYWZ0ZXIgXS5maWx0ZXIoQm9vbGVhbik7XG5cdCAgICAgICAg
bmV4dC5tYXRjaGVkID0gdHJ1ZTtcblx0ICAgICAgICBuZXh0LmNhcHR1cmVzID0gbWF0Y2guc2xp
Y2UoMSk7XG5cdCAgICAgICAgaWYgKHRoaXMucmVjdXJzZSAmJiByb3V0ZXMgPT09IHRoaXMucm91
dGVzKSB7XG5cdCAgICAgICAgICBuZXh0LnB1c2goWyByb3V0ZXMuYmVmb3JlLCByb3V0ZXMub24g
XS5maWx0ZXIoQm9vbGVhbikpO1xuXHQgICAgICAgICAgbmV4dC5hZnRlciA9IG5leHQuYWZ0ZXIu
Y29uY2F0KFsgcm91dGVzLmFmdGVyIF0uZmlsdGVyKEJvb2xlYW4pKTtcblx0ICAgICAgICB9XG5c
dCAgICAgICAgcmV0dXJuIGZpbHRlclJvdXRlcyhuZXh0KTtcblx0ICAgICAgfVxuXHQgICAgICBu
ZXh0ID0gdGhpcy50cmF2ZXJzZShtZXRob2QsIHBhdGgsIHJvdXRlc1tyXSwgY3VycmVudCk7XG5c
dCAgICAgIGlmIChuZXh0Lm1hdGNoZWQpIHtcblx0ICAgICAgICBpZiAobmV4dC5sZW5ndGggPiAw
KSB7XG5cdCAgICAgICAgICBmbnMgPSBmbnMuY29uY2F0KG5leHQpO1xuXHQgICAgICAgIH1cblx0
ICAgICAgICBpZiAodGhpcy5yZWN1cnNlKSB7XG5cdCAgICAgICAgICBmbnMucHVzaChbIHJvdXRl
c1tyXS5iZWZvcmUsIHJvdXRlc1tyXS5vbiBdLmZpbHRlcihCb29sZWFuKSk7XG5cdCAgICAgICAg
ICBuZXh0LmFmdGVyID0gbmV4dC5hZnRlci5jb25jYXQoWyByb3V0ZXNbcl0uYWZ0ZXIgXS5maWx0
ZXIoQm9vbGVhbikpO1xuXHQgICAgICAgICAgaWYgKHJvdXRlcyA9PT0gdGhpcy5yb3V0ZXMpIHtc
blx0ICAgICAgICAgICAgZm5zLnB1c2goWyByb3V0ZXNbXCJiZWZvcmVcIl0sIHJvdXRlc1tcIm9u
XCJdIF0uZmlsdGVyKEJvb2xlYW4pKTtcblx0ICAgICAgICAgICAgbmV4dC5hZnRlciA9IG5leHQu
YWZ0ZXIuY29uY2F0KFsgcm91dGVzW1wiYWZ0ZXJcIl0gXS5maWx0ZXIoQm9vbGVhbikpO1xuXHQg
ICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgICBmbnMubWF0Y2hlZCA9IHRydWU7XG5c
dCAgICAgICAgZm5zLmNhcHR1cmVzID0gbmV4dC5jYXB0dXJlcztcblx0ICAgICAgICBmbnMuYWZ0
ZXIgPSBuZXh0LmFmdGVyO1xuXHQgICAgICAgIHJldHVybiBmaWx0ZXJSb3V0ZXMoZm5zKTtcblx0
ICAgICAgfVxuXHQgICAgfVxuXHQgIH1cblx0ICByZXR1cm4gZmFsc2U7XG5cdH07XG5cdFxuXHRS
b3V0ZXIucHJvdG90eXBlLmluc2VydCA9IGZ1bmN0aW9uKG1ldGhvZCwgcGF0aCwgcm91dGUsIHBh
cmVudCkge1xuXHQgIHZhciBtZXRob2RUeXBlLCBwYXJlbnRUeXBlLCBpc0FycmF5LCBuZXN0ZWQs
IHBhcnQ7XG5cdCAgcGF0aCA9IHBhdGguZmlsdGVyKGZ1bmN0aW9uKHApIHtcblx0ICAgIHJldHVy
biBwICYmIHAubGVuZ3RoID4gMDtcblx0ICB9KTtcblx0ICBwYXJlbnQgPSBwYXJlbnQgfHwgdGhp
cy5yb3V0ZXM7XG5cdCAgcGFydCA9IHBhdGguc2hpZnQoKTtcblx0ICBpZiAoL1xcOnxcXCovLnRl
c3QocGFydCkgJiYgIS9cXFxcZHxcXFxcdy8udGVzdChwYXJ0KSkge1xuXHQgICAgcGFydCA9IHJl
Z2lmeVN0cmluZyhwYXJ0LCB0aGlzLnBhcmFtcyk7XG5cdCAgfVxuXHQgIGlmIChwYXRoLmxlbmd0
aCA+IDApIHtcblx0ICAgIHBhcmVudFtwYXJ0XSA9IHBhcmVudFtwYXJ0XSB8fCB7fTtcblx0ICAg
IHJldHVybiB0aGlzLmluc2VydChtZXRob2QsIHBhdGgsIHJvdXRlLCBwYXJlbnRbcGFydF0pO1xu
XHQgIH1cblx0ICBpZiAoIXBhcnQgJiYgIXBhdGgubGVuZ3RoICYmIHBhcmVudCA9PT0gdGhpcy5y
b3V0ZXMpIHtcblx0ICAgIG1ldGhvZFR5cGUgPSB0eXBlb2YgcGFyZW50W21ldGhvZF07XG5cdCAg
ICBzd2l0Y2ggKG1ldGhvZFR5cGUpIHtcblx0ICAgICBjYXNlIFwiZnVuY3Rpb25cIjpcblx0ICAg
ICAgcGFyZW50W21ldGhvZF0gPSBbIHBhcmVudFttZXRob2RdLCByb3V0ZSBdO1xuXHQgICAgICBy
ZXR1cm47XG5cdCAgICAgY2FzZSBcIm9iamVjdFwiOlxuXHQgICAgICBwYXJlbnRbbWV0aG9kXS5w
dXNoKHJvdXRlKTtcblx0ICAgICAgcmV0dXJuO1xuXHQgICAgIGNhc2UgXCJ1bmRlZmluZWRcIjpc
blx0ICAgICAgcGFyZW50W21ldGhvZF0gPSByb3V0ZTtcblx0ICAgICAgcmV0dXJuO1xuXHQgICAg
fVxuXHQgICAgcmV0dXJuO1xuXHQgIH1cblx0ICBwYXJlbnRUeXBlID0gdHlwZW9mIHBhcmVudFtw
YXJ0XTtcblx0ICBpc0FycmF5ID0gQXJyYXkuaXNBcnJheShwYXJlbnRbcGFydF0pO1xuXHQgIGlm
IChwYXJlbnRbcGFydF0gJiYgIWlzQXJyYXkgJiYgcGFyZW50VHlwZSA9PSBcIm9iamVjdFwiKSB7
XG5cdCAgICBtZXRob2RUeXBlID0gdHlwZW9mIHBhcmVudFtwYXJ0XVttZXRob2RdO1xuXHQgICAg
c3dpdGNoIChtZXRob2RUeXBlKSB7XG5cdCAgICAgY2FzZSBcImZ1bmN0aW9uXCI6XG5cdCAgICAg
IHBhcmVudFtwYXJ0XVttZXRob2RdID0gWyBwYXJlbnRbcGFydF1bbWV0aG9kXSwgcm91dGUgXTtc
blx0ICAgICAgcmV0dXJuO1xuXHQgICAgIGNhc2UgXCJvYmplY3RcIjpcblx0ICAgICAgcGFyZW50
W3BhcnRdW21ldGhvZF0ucHVzaChyb3V0ZSk7XG5cdCAgICAgIHJldHVybjtcblx0ICAgICBjYXNl
IFwidW5kZWZpbmVkXCI6XG5cdCAgICAgIHBhcmVudFtwYXJ0XVttZXRob2RdID0gcm91dGU7XG5c
dCAgICAgIHJldHVybjtcblx0ICAgIH1cblx0ICB9IGVsc2UgaWYgKHBhcmVudFR5cGUgPT0gXCJ1
bmRlZmluZWRcIikge1xuXHQgICAgbmVzdGVkID0ge307XG5cdCAgICBuZXN0ZWRbbWV0aG9kXSA9
IHJvdXRlO1xuXHQgICAgcGFyZW50W3BhcnRdID0gbmVzdGVkO1xuXHQgICAgcmV0dXJuO1xuXHQg
IH1cblx0ICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHJvdXRlIGNvbnRleHQ6IFwiICsgcGFy
ZW50VHlwZSk7XG5cdH07XG5cdFxuXHRcblx0XG5cdFJvdXRlci5wcm90b3R5cGUuZXh0ZW5kID0g
ZnVuY3Rpb24obWV0aG9kcykge1xuXHQgIHZhciBzZWxmID0gdGhpcywgbGVuID0gbWV0aG9kcy5s
ZW5ndGgsIGk7XG5cdCAgZnVuY3Rpb24gZXh0ZW5kKG1ldGhvZCkge1xuXHQgICAgc2VsZi5fbWV0
aG9kc1ttZXRob2RdID0gdHJ1ZTtcblx0ICAgIHNlbGZbbWV0aG9kXSA9IGZ1bmN0aW9uKCkge1xu
XHQgICAgICB2YXIgZXh0cmEgPSBhcmd1bWVudHMubGVuZ3RoID09PSAxID8gWyBtZXRob2QsIFwi
XCIgXSA6IFsgbWV0aG9kIF07XG5cdCAgICAgIHNlbGYub24uYXBwbHkoc2VsZiwgZXh0cmEuY29u
Y2F0KEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cykpKTtcblx0ICAgIH07XG5c
dCAgfVxuXHQgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykge1xuXHQgICAgZXh0ZW5kKG1ldGhv
ZHNbaV0pO1xuXHQgIH1cblx0fTtcblx0XG5cdFJvdXRlci5wcm90b3R5cGUucnVubGlzdCA9IGZ1
bmN0aW9uKGZucykge1xuXHQgIHZhciBydW5saXN0ID0gdGhpcy5ldmVyeSAmJiB0aGlzLmV2ZXJ5
LmJlZm9yZSA/IFsgdGhpcy5ldmVyeS5iZWZvcmUgXS5jb25jYXQoX2ZsYXR0ZW4oZm5zKSkgOiBf
ZmxhdHRlbihmbnMpO1xuXHQgIGlmICh0aGlzLmV2ZXJ5ICYmIHRoaXMuZXZlcnkub24pIHtcblx0
ICAgIHJ1bmxpc3QucHVzaCh0aGlzLmV2ZXJ5Lm9uKTtcblx0ICB9XG5cdCAgcnVubGlzdC5jYXB0
dXJlcyA9IGZucy5jYXB0dXJlcztcblx0ICBydW5saXN0LnNvdXJjZSA9IGZucy5zb3VyY2U7XG5c
dCAgcmV0dXJuIHJ1bmxpc3Q7XG5cdH07XG5cdFxuXHRSb3V0ZXIucHJvdG90eXBlLm1vdW50ID0g
ZnVuY3Rpb24ocm91dGVzLCBwYXRoKSB7XG5cdCAgaWYgKCFyb3V0ZXMgfHwgdHlwZW9mIHJvdXRl
cyAhPT0gXCJvYmplY3RcIiB8fCBBcnJheS5pc0FycmF5KHJvdXRlcykpIHtcblx0ICAgIHJldHVy
bjtcblx0ICB9XG5cdCAgdmFyIHNlbGYgPSB0aGlzO1xuXHQgIHBhdGggPSBwYXRoIHx8IFtdO1xu
XHQgIGlmICghQXJyYXkuaXNBcnJheShwYXRoKSkge1xuXHQgICAgcGF0aCA9IHBhdGguc3BsaXQo
c2VsZi5kZWxpbWl0ZXIpO1xuXHQgIH1cblx0ICBmdW5jdGlvbiBpbnNlcnRPck1vdW50KHJvdXRl
LCBsb2NhbCkge1xuXHQgICAgdmFyIHJlbmFtZSA9IHJvdXRlLCBwYXJ0cyA9IHJvdXRlLnNwbGl0
KHNlbGYuZGVsaW1pdGVyKSwgcm91dGVUeXBlID0gdHlwZW9mIHJvdXRlc1tyb3V0ZV0sIGlzUm91
dGUgPSBwYXJ0c1swXSA9PT0gXCJcIiB8fCAhc2VsZi5fbWV0aG9kc1twYXJ0c1swXV0sIGV2ZW50
ID0gaXNSb3V0ZSA/IFwib25cIiA6IHJlbmFtZTtcblx0ICAgIGlmIChpc1JvdXRlKSB7XG5cdCAg
ICAgIHJlbmFtZSA9IHJlbmFtZS5zbGljZSgocmVuYW1lLm1hdGNoKG5ldyBSZWdFeHAoXCJeXCIg
KyBzZWxmLmRlbGltaXRlcikpIHx8IFsgXCJcIiBdKVswXS5sZW5ndGgpO1xuXHQgICAgICBwYXJ0
cy5zaGlmdCgpO1xuXHQgICAgfVxuXHQgICAgaWYgKGlzUm91dGUgJiYgcm91dGVUeXBlID09PSBc
Im9iamVjdFwiICYmICFBcnJheS5pc0FycmF5KHJvdXRlc1tyb3V0ZV0pKSB7XG5cdCAgICAgIGxv
Y2FsID0gbG9jYWwuY29uY2F0KHBhcnRzKTtcblx0ICAgICAgc2VsZi5tb3VudChyb3V0ZXNbcm91
dGVdLCBsb2NhbCk7XG5cdCAgICAgIHJldHVybjtcblx0ICAgIH1cblx0ICAgIGlmIChpc1JvdXRl
KSB7XG5cdCAgICAgIGxvY2FsID0gbG9jYWwuY29uY2F0KHJlbmFtZS5zcGxpdChzZWxmLmRlbGlt
aXRlcikpO1xuXHQgICAgICBsb2NhbCA9IHRlcm1pbmF0b3IobG9jYWwsIHNlbGYuZGVsaW1pdGVy
KTtcblx0ICAgIH1cblx0ICAgIHNlbGYuaW5zZXJ0KGV2ZW50LCBsb2NhbCwgcm91dGVzW3JvdXRl
XSk7XG5cdCAgfVxuXHQgIGZvciAodmFyIHJvdXRlIGluIHJvdXRlcykge1xuXHQgICAgaWYgKHJv
dXRlcy5oYXNPd25Qcm9wZXJ0eShyb3V0ZSkpIHtcblx0ICAgICAgaW5zZXJ0T3JNb3VudChyb3V0
ZSwgcGF0aC5zbGljZSgwKSk7XG5cdCAgICB9XG5cdCAgfVxuXHR9O1xuXHRcblx0XG5cdFxuXHR9
KCB0cnVlID8gZXhwb3J0cyA6IHdpbmRvdykpO1xuXG4vKioqLyB9LFxuLyogNSAqLyxcbi8qIDYg
Ki8sXG4vKiA3ICovLFxuLyogOCAqLyxcbi8qIDkgKi8sXG4vKiAxMCAqL1xuLyoqKi8gZnVuY3Rp
b24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0LypcclxuXHRcdE1JVCBMaWNlbnNlIGh0dHA6Ly93
d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwXHJcblx0XHRBdXRob3Ig
VG9iaWFzIEtvcHBlcnMgQHNva3JhXHJcblx0Ki9cclxuXHQvLyBjc3MgYmFzZSBjb2RlLCBpbmpl
Y3RlZCBieSB0aGUgY3NzLWxvYWRlclxyXG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7
XHJcblx0XHR2YXIgbGlzdCA9IFtdO1xyXG5cdFxyXG5cdFx0Ly8gcmV0dXJuIHRoZSBsaXN0IG9m
IG1vZHVsZXMgYXMgY3NzIHN0cmluZ1xyXG5cdFx0bGlzdC50b1N0cmluZyA9IGZ1bmN0aW9uIHRv
U3RyaW5nKCkge1xyXG5cdFx0XHR2YXIgcmVzdWx0ID0gW107XHJcblx0XHRcdGZvcih2YXIgaSA9
IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0dmFyIGl0ZW0gPSB0aGlzW2ld
O1xyXG5cdFx0XHRcdGlmKGl0ZW1bMl0pIHtcclxuXHRcdFx0XHRcdHJlc3VsdC5wdXNoKFwiQG1l
ZGlhIFwiICsgaXRlbVsyXSArIFwie1wiICsgaXRlbVsxXSArIFwifVwiKTtcclxuXHRcdFx0XHR9
IGVsc2Uge1xyXG5cdFx0XHRcdFx0cmVzdWx0LnB1c2goaXRlbVsxXSk7XHJcblx0XHRcdFx0fVxy
XG5cdFx0XHR9XHJcblx0XHRcdHJldHVybiByZXN1bHQuam9pbihcIlwiKTtcclxuXHRcdH07XHJc
blx0XHJcblx0XHQvLyBpbXBvcnQgYSBsaXN0IG9mIG1vZHVsZXMgaW50byB0aGUgbGlzdFxyXG5c
dFx0bGlzdC5pID0gZnVuY3Rpb24obW9kdWxlcywgbWVkaWFRdWVyeSkge1xyXG5cdFx0XHRpZih0
eXBlb2YgbW9kdWxlcyA9PT0gXCJzdHJpbmdcIilcclxuXHRcdFx0XHRtb2R1bGVzID0gW1tudWxs
LCBtb2R1bGVzLCBcIlwiXV07XHJcblx0XHRcdHZhciBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzID0g
e307XHJcblx0XHRcdGZvcih2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XHJcblx0
XHRcdFx0dmFyIGlkID0gdGhpc1tpXVswXTtcclxuXHRcdFx0XHRpZih0eXBlb2YgaWQgPT09IFwi
bnVtYmVyXCIpXHJcblx0XHRcdFx0XHRhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2lkXSA9IHRydWU7
XHJcblx0XHRcdH1cclxuXHRcdFx0Zm9yKGkgPSAwOyBpIDwgbW9kdWxlcy5sZW5ndGg7IGkrKykg
e1xyXG5cdFx0XHRcdHZhciBpdGVtID0gbW9kdWxlc1tpXTtcclxuXHRcdFx0XHQvLyBza2lwIGFs
cmVhZHkgaW1wb3J0ZWQgbW9kdWxlXHJcblx0XHRcdFx0Ly8gdGhpcyBpbXBsZW1lbnRhdGlvbiBp
cyBub3QgMTAwJSBwZXJmZWN0IGZvciB3ZWlyZCBtZWRpYSBxdWVyeSBjb21iaW5hdGlvbnNcclxu
XHRcdFx0XHQvLyAgd2hlbiBhIG1vZHVsZSBpcyBpbXBvcnRlZCBtdWx0aXBsZSB0aW1lcyB3aXRo
IGRpZmZlcmVudCBtZWRpYSBxdWVyaWVzLlxyXG5cdFx0XHRcdC8vICBJIGhvcGUgdGhpcyB3aWxs
IG5ldmVyIG9jY3VyIChIZXkgdGhpcyB3YXkgd2UgaGF2ZSBzbWFsbGVyIGJ1bmRsZXMpXHJcblx0
XHRcdFx0aWYodHlwZW9mIGl0ZW1bMF0gIT09IFwibnVtYmVyXCIgfHwgIWFscmVhZHlJbXBvcnRl
ZE1vZHVsZXNbaXRlbVswXV0pIHtcclxuXHRcdFx0XHRcdGlmKG1lZGlhUXVlcnkgJiYgIWl0ZW1b
Ml0pIHtcclxuXHRcdFx0XHRcdFx0aXRlbVsyXSA9IG1lZGlhUXVlcnk7XHJcblx0XHRcdFx0XHR9
IGVsc2UgaWYobWVkaWFRdWVyeSkge1xyXG5cdFx0XHRcdFx0XHRpdGVtWzJdID0gXCIoXCIgKyBp
dGVtWzJdICsgXCIpIGFuZCAoXCIgKyBtZWRpYVF1ZXJ5ICsgXCIpXCI7XHJcblx0XHRcdFx0XHR9
XHJcblx0XHRcdFx0XHRsaXN0LnB1c2goaXRlbSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJc
blx0XHR9O1xyXG5cdFx0cmV0dXJuIGxpc3Q7XHJcblx0fTtcclxuXG5cbi8qKiovIH0sXG4vKiAx
MSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9f
KSB7XG5cblx0Lypcblx0XHRNSVQgTGljZW5zZSBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xp
Y2Vuc2VzL21pdC1saWNlbnNlLnBocFxuXHRcdEF1dGhvciBUb2JpYXMgS29wcGVycyBAc29rcmFc
blx0Ki9cblx0dmFyIHN0eWxlc0luRG9tID0ge30sXG5cdFx0bWVtb2l6ZSA9IGZ1bmN0aW9uKGZu
KSB7XG5cdFx0XHR2YXIgbWVtbztcblx0XHRcdHJldHVybiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRc
dGlmICh0eXBlb2YgbWVtbyA9PT0gXCJ1bmRlZmluZWRcIikgbWVtbyA9IGZuLmFwcGx5KHRoaXMs
IGFyZ3VtZW50cyk7XG5cdFx0XHRcdHJldHVybiBtZW1vO1xuXHRcdFx0fTtcblx0XHR9LFxuXHRc
dGlzT2xkSUUgPSBtZW1vaXplKGZ1bmN0aW9uKCkge1xuXHRcdFx0cmV0dXJuIC9tc2llIFs2LTld
XFxiLy50ZXN0KHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkpO1xuXHRc
dH0pLFxuXHRcdGdldEhlYWRFbGVtZW50ID0gbWVtb2l6ZShmdW5jdGlvbiAoKSB7XG5cdFx0XHRy
ZXR1cm4gZG9jdW1lbnQuaGVhZCB8fCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImhl
YWRcIilbMF07XG5cdFx0fSksXG5cdFx0c2luZ2xldG9uRWxlbWVudCA9IG51bGwsXG5cdFx0c2lu
Z2xldG9uQ291bnRlciA9IDAsXG5cdFx0c3R5bGVFbGVtZW50c0luc2VydGVkQXRUb3AgPSBbXTtc
blx0XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24obGlzdCwgb3B0aW9ucykge1xuXHRcdGlm
KGZhbHNlKSB7XG5cdFx0XHRpZih0eXBlb2YgZG9jdW1lbnQgIT09IFwib2JqZWN0XCIpIHRocm93
IG5ldyBFcnJvcihcIlRoZSBzdHlsZS1sb2FkZXIgY2Fubm90IGJlIHVzZWQgaW4gYSBub24tYnJv
d3NlciBlbnZpcm9ubWVudFwiKTtcblx0XHR9XG5cdFxuXHRcdG9wdGlvbnMgPSBvcHRpb25zIHx8
IHt9O1xuXHRcdC8vIEZvcmNlIHNpbmdsZS10YWcgc29sdXRpb24gb24gSUU2LTksIHdoaWNoIGhh
cyBhIGhhcmQgbGltaXQgb24gdGhlICMgb2YgPHN0eWxlPlxuXHRcdC8vIHRhZ3MgaXQgd2lsbCBh
bGxvdyBvbiBhIHBhZ2Vcblx0XHRpZiAodHlwZW9mIG9wdGlvbnMuc2luZ2xldG9uID09PSBcInVu
ZGVmaW5lZFwiKSBvcHRpb25zLnNpbmdsZXRvbiA9IGlzT2xkSUUoKTtcblx0XG5cdFx0Ly8gQnkg
ZGVmYXVsdCwgYWRkIDxzdHlsZT4gdGFncyB0byB0aGUgYm90dG9tIG9mIDxoZWFkPi5cblx0XHRp
ZiAodHlwZW9mIG9wdGlvbnMuaW5zZXJ0QXQgPT09IFwidW5kZWZpbmVkXCIpIG9wdGlvbnMuaW5z
ZXJ0QXQgPSBcImJvdHRvbVwiO1xuXHRcblx0XHR2YXIgc3R5bGVzID0gbGlzdFRvU3R5bGVzKGxp
c3QpO1xuXHRcdGFkZFN0eWxlc1RvRG9tKHN0eWxlcywgb3B0aW9ucyk7XG5cdFxuXHRcdHJldHVy
biBmdW5jdGlvbiB1cGRhdGUobmV3TGlzdCkge1xuXHRcdFx0dmFyIG1heVJlbW92ZSA9IFtdO1xu
XHRcdFx0Zm9yKHZhciBpID0gMDsgaSA8IHN0eWxlcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHR2
YXIgaXRlbSA9IHN0eWxlc1tpXTtcblx0XHRcdFx0dmFyIGRvbVN0eWxlID0gc3R5bGVzSW5Eb21b
aXRlbS5pZF07XG5cdFx0XHRcdGRvbVN0eWxlLnJlZnMtLTtcblx0XHRcdFx0bWF5UmVtb3ZlLnB1
c2goZG9tU3R5bGUpO1xuXHRcdFx0fVxuXHRcdFx0aWYobmV3TGlzdCkge1xuXHRcdFx0XHR2YXIg
bmV3U3R5bGVzID0gbGlzdFRvU3R5bGVzKG5ld0xpc3QpO1xuXHRcdFx0XHRhZGRTdHlsZXNUb0Rv
bShuZXdTdHlsZXMsIG9wdGlvbnMpO1xuXHRcdFx0fVxuXHRcdFx0Zm9yKHZhciBpID0gMDsgaSA8
IG1heVJlbW92ZS5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHR2YXIgZG9tU3R5bGUgPSBtYXlSZW1v
dmVbaV07XG5cdFx0XHRcdGlmKGRvbVN0eWxlLnJlZnMgPT09IDApIHtcblx0XHRcdFx0XHRmb3Io
dmFyIGogPSAwOyBqIDwgZG9tU3R5bGUucGFydHMubGVuZ3RoOyBqKyspXG5cdFx0XHRcdFx0XHRk
b21TdHlsZS5wYXJ0c1tqXSgpO1xuXHRcdFx0XHRcdGRlbGV0ZSBzdHlsZXNJbkRvbVtkb21TdHls
ZS5pZF07XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9O1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBh
ZGRTdHlsZXNUb0RvbShzdHlsZXMsIG9wdGlvbnMpIHtcblx0XHRmb3IodmFyIGkgPSAwOyBpIDwg
c3R5bGVzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHR2YXIgaXRlbSA9IHN0eWxlc1tpXTtcblx0XHRc
dHZhciBkb21TdHlsZSA9IHN0eWxlc0luRG9tW2l0ZW0uaWRdO1xuXHRcdFx0aWYoZG9tU3R5bGUp
IHtcblx0XHRcdFx0ZG9tU3R5bGUucmVmcysrO1xuXHRcdFx0XHRmb3IodmFyIGogPSAwOyBqIDwg
ZG9tU3R5bGUucGFydHMubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRkb21TdHlsZS5wYXJ0c1tq
XShpdGVtLnBhcnRzW2pdKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRmb3IoOyBqIDwgaXRlbS5wYXJ0
cy5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdGRvbVN0eWxlLnBhcnRzLnB1c2goYWRkU3R5bGUo
aXRlbS5wYXJ0c1tqXSwgb3B0aW9ucykpO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRc
dFx0XHR2YXIgcGFydHMgPSBbXTtcblx0XHRcdFx0Zm9yKHZhciBqID0gMDsgaiA8IGl0ZW0ucGFy
dHMubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRwYXJ0cy5wdXNoKGFkZFN0eWxlKGl0ZW0ucGFy
dHNbal0sIG9wdGlvbnMpKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRzdHlsZXNJbkRvbVtpdGVtLmlk
XSA9IHtpZDogaXRlbS5pZCwgcmVmczogMSwgcGFydHM6IHBhcnRzfTtcblx0XHRcdH1cblx0XHR9
XG5cdH1cblx0XG5cdGZ1bmN0aW9uIGxpc3RUb1N0eWxlcyhsaXN0KSB7XG5cdFx0dmFyIHN0eWxl
cyA9IFtdO1xuXHRcdHZhciBuZXdTdHlsZXMgPSB7fTtcblx0XHRmb3IodmFyIGkgPSAwOyBpIDwg
bGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0dmFyIGl0ZW0gPSBsaXN0W2ldO1xuXHRcdFx0dmFy
IGlkID0gaXRlbVswXTtcblx0XHRcdHZhciBjc3MgPSBpdGVtWzFdO1xuXHRcdFx0dmFyIG1lZGlh
ID0gaXRlbVsyXTtcblx0XHRcdHZhciBzb3VyY2VNYXAgPSBpdGVtWzNdO1xuXHRcdFx0dmFyIHBh
cnQgPSB7Y3NzOiBjc3MsIG1lZGlhOiBtZWRpYSwgc291cmNlTWFwOiBzb3VyY2VNYXB9O1xuXHRc
dFx0aWYoIW5ld1N0eWxlc1tpZF0pXG5cdFx0XHRcdHN0eWxlcy5wdXNoKG5ld1N0eWxlc1tpZF0g
PSB7aWQ6IGlkLCBwYXJ0czogW3BhcnRdfSk7XG5cdFx0XHRlbHNlXG5cdFx0XHRcdG5ld1N0eWxl
c1tpZF0ucGFydHMucHVzaChwYXJ0KTtcblx0XHR9XG5cdFx0cmV0dXJuIHN0eWxlcztcblx0fVxu
XHRcblx0ZnVuY3Rpb24gaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMsIHN0eWxlRWxlbWVudCkg
e1xuXHRcdHZhciBoZWFkID0gZ2V0SGVhZEVsZW1lbnQoKTtcblx0XHR2YXIgbGFzdFN0eWxlRWxl
bWVudEluc2VydGVkQXRUb3AgPSBzdHlsZUVsZW1lbnRzSW5zZXJ0ZWRBdFRvcFtzdHlsZUVsZW1l
bnRzSW5zZXJ0ZWRBdFRvcC5sZW5ndGggLSAxXTtcblx0XHRpZiAob3B0aW9ucy5pbnNlcnRBdCA9
PT0gXCJ0b3BcIikge1xuXHRcdFx0aWYoIWxhc3RTdHlsZUVsZW1lbnRJbnNlcnRlZEF0VG9wKSB7
XG5cdFx0XHRcdGhlYWQuaW5zZXJ0QmVmb3JlKHN0eWxlRWxlbWVudCwgaGVhZC5maXJzdENoaWxk
KTtcblx0XHRcdH0gZWxzZSBpZihsYXN0U3R5bGVFbGVtZW50SW5zZXJ0ZWRBdFRvcC5uZXh0U2li
bGluZykge1xuXHRcdFx0XHRoZWFkLmluc2VydEJlZm9yZShzdHlsZUVsZW1lbnQsIGxhc3RTdHls
ZUVsZW1lbnRJbnNlcnRlZEF0VG9wLm5leHRTaWJsaW5nKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0
XHRcdGhlYWQuYXBwZW5kQ2hpbGQoc3R5bGVFbGVtZW50KTtcblx0XHRcdH1cblx0XHRcdHN0eWxl
RWxlbWVudHNJbnNlcnRlZEF0VG9wLnB1c2goc3R5bGVFbGVtZW50KTtcblx0XHR9IGVsc2UgaWYg
KG9wdGlvbnMuaW5zZXJ0QXQgPT09IFwiYm90dG9tXCIpIHtcblx0XHRcdGhlYWQuYXBwZW5kQ2hp
bGQoc3R5bGVFbGVtZW50KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFwi
SW52YWxpZCB2YWx1ZSBmb3IgcGFyYW1ldGVyICdpbnNlcnRBdCcuIE11c3QgYmUgJ3RvcCcgb3Ig
J2JvdHRvbScuXCIpO1xuXHRcdH1cblx0fVxuXHRcblx0ZnVuY3Rpb24gcmVtb3ZlU3R5bGVFbGVt
ZW50KHN0eWxlRWxlbWVudCkge1xuXHRcdHN0eWxlRWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNo
aWxkKHN0eWxlRWxlbWVudCk7XG5cdFx0dmFyIGlkeCA9IHN0eWxlRWxlbWVudHNJbnNlcnRlZEF0
VG9wLmluZGV4T2Yoc3R5bGVFbGVtZW50KTtcblx0XHRpZihpZHggPj0gMCkge1xuXHRcdFx0c3R5
bGVFbGVtZW50c0luc2VydGVkQXRUb3Auc3BsaWNlKGlkeCwgMSk7XG5cdFx0fVxuXHR9XG5cdFxu
XHRmdW5jdGlvbiBjcmVhdGVTdHlsZUVsZW1lbnQob3B0aW9ucykge1xuXHRcdHZhciBzdHlsZUVs
ZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7XG5cdFx0c3R5bGVFbGVt
ZW50LnR5cGUgPSBcInRleHQvY3NzXCI7XG5cdFx0aW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMs
IHN0eWxlRWxlbWVudCk7XG5cdFx0cmV0dXJuIHN0eWxlRWxlbWVudDtcblx0fVxuXHRcblx0ZnVu
Y3Rpb24gYWRkU3R5bGUob2JqLCBvcHRpb25zKSB7XG5cdFx0dmFyIHN0eWxlRWxlbWVudCwgdXBk
YXRlLCByZW1vdmU7XG5cdFxuXHRcdGlmIChvcHRpb25zLnNpbmdsZXRvbikge1xuXHRcdFx0dmFy
IHN0eWxlSW5kZXggPSBzaW5nbGV0b25Db3VudGVyKys7XG5cdFx0XHRzdHlsZUVsZW1lbnQgPSBz
aW5nbGV0b25FbGVtZW50IHx8IChzaW5nbGV0b25FbGVtZW50ID0gY3JlYXRlU3R5bGVFbGVtZW50
KG9wdGlvbnMpKTtcblx0XHRcdHVwZGF0ZSA9IGFwcGx5VG9TaW5nbGV0b25UYWcuYmluZChudWxs
LCBzdHlsZUVsZW1lbnQsIHN0eWxlSW5kZXgsIGZhbHNlKTtcblx0XHRcdHJlbW92ZSA9IGFwcGx5
VG9TaW5nbGV0b25UYWcuYmluZChudWxsLCBzdHlsZUVsZW1lbnQsIHN0eWxlSW5kZXgsIHRydWUp
O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRzdHlsZUVsZW1lbnQgPSBjcmVhdGVTdHlsZUVsZW1lbnQo
b3B0aW9ucyk7XG5cdFx0XHR1cGRhdGUgPSBhcHBseVRvVGFnLmJpbmQobnVsbCwgc3R5bGVFbGVt
ZW50KTtcblx0XHRcdHJlbW92ZSA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRyZW1vdmVTdHlsZUVs
ZW1lbnQoc3R5bGVFbGVtZW50KTtcblx0XHRcdH07XG5cdFx0fVxuXHRcblx0XHR1cGRhdGUob2Jq
KTtcblx0XG5cdFx0cmV0dXJuIGZ1bmN0aW9uIHVwZGF0ZVN0eWxlKG5ld09iaikge1xuXHRcdFx0
aWYobmV3T2JqKSB7XG5cdFx0XHRcdGlmKG5ld09iai5jc3MgPT09IG9iai5jc3MgJiYgbmV3T2Jq
Lm1lZGlhID09PSBvYmoubWVkaWEgJiYgbmV3T2JqLnNvdXJjZU1hcCA9PT0gb2JqLnNvdXJjZU1h
cClcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdHVwZGF0ZShvYmogPSBuZXdPYmopO1xuXHRc
dFx0fSBlbHNlIHtcblx0XHRcdFx0cmVtb3ZlKCk7XG5cdFx0XHR9XG5cdFx0fTtcblx0fVxuXHRc
blx0dmFyIHJlcGxhY2VUZXh0ID0gKGZ1bmN0aW9uICgpIHtcblx0XHR2YXIgdGV4dFN0b3JlID0g
W107XG5cdFxuXHRcdHJldHVybiBmdW5jdGlvbiAoaW5kZXgsIHJlcGxhY2VtZW50KSB7XG5cdFx0
XHR0ZXh0U3RvcmVbaW5kZXhdID0gcmVwbGFjZW1lbnQ7XG5cdFx0XHRyZXR1cm4gdGV4dFN0b3Jl
LmZpbHRlcihCb29sZWFuKS5qb2luKCdcXG4nKTtcblx0XHR9O1xuXHR9KSgpO1xuXHRcblx0ZnVu
Y3Rpb24gYXBwbHlUb1NpbmdsZXRvblRhZyhzdHlsZUVsZW1lbnQsIGluZGV4LCByZW1vdmUsIG9i
aikge1xuXHRcdHZhciBjc3MgPSByZW1vdmUgPyBcIlwiIDogb2JqLmNzcztcblx0XG5cdFx0aWYg
KHN0eWxlRWxlbWVudC5zdHlsZVNoZWV0KSB7XG5cdFx0XHRzdHlsZUVsZW1lbnQuc3R5bGVTaGVl
dC5jc3NUZXh0ID0gcmVwbGFjZVRleHQoaW5kZXgsIGNzcyk7XG5cdFx0fSBlbHNlIHtcblx0XHRc
dHZhciBjc3NOb2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKTtcblx0XHRcdHZhciBj
aGlsZE5vZGVzID0gc3R5bGVFbGVtZW50LmNoaWxkTm9kZXM7XG5cdFx0XHRpZiAoY2hpbGROb2Rl
c1tpbmRleF0pIHN0eWxlRWxlbWVudC5yZW1vdmVDaGlsZChjaGlsZE5vZGVzW2luZGV4XSk7XG5c
dFx0XHRpZiAoY2hpbGROb2Rlcy5sZW5ndGgpIHtcblx0XHRcdFx0c3R5bGVFbGVtZW50Lmluc2Vy
dEJlZm9yZShjc3NOb2RlLCBjaGlsZE5vZGVzW2luZGV4XSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRc
dFx0XHRzdHlsZUVsZW1lbnQuYXBwZW5kQ2hpbGQoY3NzTm9kZSk7XG5cdFx0XHR9XG5cdFx0fVxu
XHR9XG5cdFxuXHRmdW5jdGlvbiBhcHBseVRvVGFnKHN0eWxlRWxlbWVudCwgb2JqKSB7XG5cdFx0
dmFyIGNzcyA9IG9iai5jc3M7XG5cdFx0dmFyIG1lZGlhID0gb2JqLm1lZGlhO1xuXHRcdHZhciBz
b3VyY2VNYXAgPSBvYmouc291cmNlTWFwO1xuXHRcblx0XHRpZiAobWVkaWEpIHtcblx0XHRcdHN0
eWxlRWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJtZWRpYVwiLCBtZWRpYSk7XG5cdFx0fVxuXHRcblx0
XHRpZiAoc291cmNlTWFwKSB7XG5cdFx0XHQvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29t
L2RldnRvb2xzL2RvY3MvamF2YXNjcmlwdC1kZWJ1Z2dpbmdcblx0XHRcdC8vIHRoaXMgbWFrZXMg
c291cmNlIG1hcHMgaW5zaWRlIHN0eWxlIHRhZ3Mgd29yayBwcm9wZXJseSBpbiBDaHJvbWVcblx0
XHRcdGNzcyArPSAnXFxuLyojIHNvdXJjZVVSTD0nICsgc291cmNlTWFwLnNvdXJjZXNbMF0gKyAn
ICovJztcblx0XHRcdC8vIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzI2NjAzODc1XG5cdFx0
XHRjc3MgKz0gXCJcXG4vKiMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247
YmFzZTY0LFwiICsgYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdp
Znkoc291cmNlTWFwKSkpKSArIFwiICovXCI7XG5cdFx0fVxuXHRcblx0XHRpZiAoc3R5bGVFbGVt
ZW50LnN0eWxlU2hlZXQpIHtcblx0XHRcdHN0eWxlRWxlbWVudC5zdHlsZVNoZWV0LmNzc1RleHQg
PSBjc3M7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHdoaWxlKHN0eWxlRWxlbWVudC5maXJzdENoaWxk
KSB7XG5cdFx0XHRcdHN0eWxlRWxlbWVudC5yZW1vdmVDaGlsZChzdHlsZUVsZW1lbnQuZmlyc3RD
aGlsZCk7XG5cdFx0XHR9XG5cdFx0XHRzdHlsZUVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUoY3NzKSk7XG5cdFx0fVxuXHR9XG5cblxuLyoqKi8gfVxuXSk7XG5cblxu
Ly8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHN0YXRpYy9qcy92ZW5kb3IuYTUyNTE3YzVhYTk4ZTdm
YmVhMmUuanMiLCIvKiFcbiAqIFZ1ZS5qcyB2Mi4xLjNcbiAqIChjKSAyMDE0LTIwMTYgRXZhbiBZ
b3VcbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS5cbiAqL1xuJ3VzZSBzdHJpY3Qn
O1xuXG4vKiAgKi9cblxuLyoqXG4gKiBDb252ZXJ0IGEgdmFsdWUgdG8gYSBzdHJpbmcgdGhhdCBp
cyBhY3R1YWxseSByZW5kZXJlZC5cbiAqL1xuZnVuY3Rpb24gX3RvU3RyaW5nICh2YWwpIHtcbiAg
cmV0dXJuIHZhbCA9PSBudWxsXG4gICAgPyAnJ1xuICAgIDogdHlwZW9mIHZhbCA9PT0gJ29iamVj
dCdcbiAgICAgID8gSlNPTi5zdHJpbmdpZnkodmFsLCBudWxsLCAyKVxuICAgICAgOiBTdHJpbmco
dmFsKVxufVxuXG4vKipcbiAqIENvbnZlcnQgYSBpbnB1dCB2YWx1ZSB0byBhIG51bWJlciBmb3Ig
cGVyc2lzdGVuY2UuXG4gKiBJZiB0aGUgY29udmVyc2lvbiBmYWlscywgcmV0dXJuIG9yaWdpbmFs
IHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gdG9OdW1iZXIgKHZhbCkge1xuICB2YXIgbiA9IHBhcnNl
RmxvYXQodmFsLCAxMCk7XG4gIHJldHVybiAobiB8fCBuID09PSAwKSA/IG4gOiB2YWxcbn1cblxu
LyoqXG4gKiBNYWtlIGEgbWFwIGFuZCByZXR1cm4gYSBmdW5jdGlvbiBmb3IgY2hlY2tpbmcgaWYg
YSBrZXlcbiAqIGlzIGluIHRoYXQgbWFwLlxuICovXG5mdW5jdGlvbiBtYWtlTWFwIChcbiAgc3Ry
LFxuICBleHBlY3RzTG93ZXJDYXNlXG4pIHtcbiAgdmFyIG1hcCA9IE9iamVjdC5jcmVhdGUobnVs
bCk7XG4gIHZhciBsaXN0ID0gc3RyLnNwbGl0KCcsJyk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwg
bGlzdC5sZW5ndGg7IGkrKykge1xuICAgIG1hcFtsaXN0W2ldXSA9IHRydWU7XG4gIH1cbiAgcmV0
dXJuIGV4cGVjdHNMb3dlckNhc2VcbiAgICA/IGZ1bmN0aW9uICh2YWwpIHsgcmV0dXJuIG1hcFt2
YWwudG9Mb3dlckNhc2UoKV07IH1cbiAgICA6IGZ1bmN0aW9uICh2YWwpIHsgcmV0dXJuIG1hcFt2
YWxdOyB9XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgYSB0YWcgaXMgYSBidWlsdC1pbiB0YWcuXG4g
Ki9cbnZhciBpc0J1aWx0SW5UYWcgPSBtYWtlTWFwKCdzbG90LGNvbXBvbmVudCcsIHRydWUpO1xu
XG4vKipcbiAqIFJlbW92ZSBhbiBpdGVtIGZyb20gYW4gYXJyYXlcbiAqL1xuZnVuY3Rpb24gcmVt
b3ZlJDEgKGFyciwgaXRlbSkge1xuICBpZiAoYXJyLmxlbmd0aCkge1xuICAgIHZhciBpbmRleCA9
IGFyci5pbmRleE9mKGl0ZW0pO1xuICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICByZXR1cm4g
YXJyLnNwbGljZShpbmRleCwgMSlcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBDaGVjayB3aGV0
aGVyIHRoZSBvYmplY3QgaGFzIHRoZSBwcm9wZXJ0eS5cbiAqL1xudmFyIGhhc093blByb3BlcnR5
ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbmZ1bmN0aW9uIGhhc093biAob2Jq
LCBrZXkpIHtcbiAgcmV0dXJuIGhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpXG59XG5cbi8q
KlxuICogQ2hlY2sgaWYgdmFsdWUgaXMgcHJpbWl0aXZlXG4gKi9cbmZ1bmN0aW9uIGlzUHJpbWl0
aXZlICh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyB8fCB0eXBl
b2YgdmFsdWUgPT09ICdudW1iZXInXG59XG5cbi8qKlxuICogQ3JlYXRlIGEgY2FjaGVkIHZlcnNp
b24gb2YgYSBwdXJlIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBjYWNoZWQgKGZuKSB7XG4gIHZh
ciBjYWNoZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHJldHVybiBmdW5jdGlvbiBjYWNoZWRG
biAoc3RyKSB7XG4gICAgdmFyIGhpdCA9IGNhY2hlW3N0cl07XG4gICAgcmV0dXJuIGhpdCB8fCAo
Y2FjaGVbc3RyXSA9IGZuKHN0cikpXG4gIH1cbn1cblxuLyoqXG4gKiBDYW1lbGl6ZSBhIGh5cGhl
bi1kZWxtaXRlZCBzdHJpbmcuXG4gKi9cbnZhciBjYW1lbGl6ZVJFID0gLy0oXFx3KS9nO1xudmFy
IGNhbWVsaXplID0gY2FjaGVkKGZ1bmN0aW9uIChzdHIpIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNl
KGNhbWVsaXplUkUsIGZ1bmN0aW9uIChfLCBjKSB7IHJldHVybiBjID8gYy50b1VwcGVyQ2FzZSgp
IDogJyc7IH0pXG59KTtcblxuLyoqXG4gKiBDYXBpdGFsaXplIGEgc3RyaW5nLlxuICovXG52YXIg
Y2FwaXRhbGl6ZSA9IGNhY2hlZChmdW5jdGlvbiAoc3RyKSB7XG4gIHJldHVybiBzdHIuY2hhckF0
KDApLnRvVXBwZXJDYXNlKCkgKyBzdHIuc2xpY2UoMSlcbn0pO1xuXG4vKipcbiAqIEh5cGhlbmF0
ZSBhIGNhbWVsQ2FzZSBzdHJpbmcuXG4gKi9cbnZhciBoeXBoZW5hdGVSRSA9IC8oW14tXSkoW0Et
Wl0pL2c7XG52YXIgaHlwaGVuYXRlID0gY2FjaGVkKGZ1bmN0aW9uIChzdHIpIHtcbiAgcmV0dXJu
IHN0clxuICAgIC5yZXBsYWNlKGh5cGhlbmF0ZVJFLCAnJDEtJDInKVxuICAgIC5yZXBsYWNlKGh5
cGhlbmF0ZVJFLCAnJDEtJDInKVxuICAgIC50b0xvd2VyQ2FzZSgpXG59KTtcblxuLyoqXG4gKiBT
aW1wbGUgYmluZCwgZmFzdGVyIHRoYW4gbmF0aXZlXG4gKi9cbmZ1bmN0aW9uIGJpbmQkMSAoZm4s
IGN0eCkge1xuICBmdW5jdGlvbiBib3VuZEZuIChhKSB7XG4gICAgdmFyIGwgPSBhcmd1bWVudHMu
bGVuZ3RoO1xuICAgIHJldHVybiBsXG4gICAgICA/IGwgPiAxXG4gICAgICAgID8gZm4uYXBwbHko
Y3R4LCBhcmd1bWVudHMpXG4gICAgICAgIDogZm4uY2FsbChjdHgsIGEpXG4gICAgICA6IGZuLmNh
bGwoY3R4KVxuICB9XG4gIC8vIHJlY29yZCBvcmlnaW5hbCBmbiBsZW5ndGhcbiAgYm91bmRGbi5f
bGVuZ3RoID0gZm4ubGVuZ3RoO1xuICByZXR1cm4gYm91bmRGblxufVxuXG4vKipcbiAqIENvbnZl
cnQgYW4gQXJyYXktbGlrZSBvYmplY3QgdG8gYSByZWFsIEFycmF5LlxuICovXG5mdW5jdGlvbiB0
b0FycmF5IChsaXN0LCBzdGFydCkge1xuICBzdGFydCA9IHN0YXJ0IHx8IDA7XG4gIHZhciBpID0g
bGlzdC5sZW5ndGggLSBzdGFydDtcbiAgdmFyIHJldCA9IG5ldyBBcnJheShpKTtcbiAgd2hpbGUg
KGktLSkge1xuICAgIHJldFtpXSA9IGxpc3RbaSArIHN0YXJ0XTtcbiAgfVxuICByZXR1cm4gcmV0
XG59XG5cbi8qKlxuICogTWl4IHByb3BlcnRpZXMgaW50byB0YXJnZXQgb2JqZWN0LlxuICovXG5m
dW5jdGlvbiBleHRlbmQgKHRvLCBfZnJvbSkge1xuICBmb3IgKHZhciBrZXkgaW4gX2Zyb20pIHtc
biAgICB0b1trZXldID0gX2Zyb21ba2V5XTtcbiAgfVxuICByZXR1cm4gdG9cbn1cblxuLyoqXG4g
KiBRdWljayBvYmplY3QgY2hlY2sgLSB0aGlzIGlzIHByaW1hcmlseSB1c2VkIHRvIHRlbGxcbiAq
IE9iamVjdHMgZnJvbSBwcmltaXRpdmUgdmFsdWVzIHdoZW4gd2Uga25vdyB0aGUgdmFsdWVcbiAq
IGlzIGEgSlNPTi1jb21wbGlhbnQgdHlwZS5cbiAqL1xuZnVuY3Rpb24gaXNPYmplY3QgKG9iaikg
e1xuICByZXR1cm4gb2JqICE9PSBudWxsICYmIHR5cGVvZiBvYmogPT09ICdvYmplY3QnXG59XG5c
bi8qKlxuICogU3RyaWN0IG9iamVjdCB0eXBlIGNoZWNrLiBPbmx5IHJldHVybnMgdHJ1ZVxuICog
Zm9yIHBsYWluIEphdmFTY3JpcHQgb2JqZWN0cy5cbiAqL1xudmFyIHRvU3RyaW5nID0gT2JqZWN0
LnByb3RvdHlwZS50b1N0cmluZztcbnZhciBPQkpFQ1RfU1RSSU5HID0gJ1tvYmplY3QgT2JqZWN0
XSc7XG5mdW5jdGlvbiBpc1BsYWluT2JqZWN0IChvYmopIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNh
bGwob2JqKSA9PT0gT0JKRUNUX1NUUklOR1xufVxuXG4vKipcbiAqIE1lcmdlIGFuIEFycmF5IG9m
IE9iamVjdHMgaW50byBhIHNpbmdsZSBPYmplY3QuXG4gKi9cbmZ1bmN0aW9uIHRvT2JqZWN0IChh
cnIpIHtcbiAgdmFyIHJlcyA9IHt9O1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGFyci5sZW5ndGg7
IGkrKykge1xuICAgIGlmIChhcnJbaV0pIHtcbiAgICAgIGV4dGVuZChyZXMsIGFycltpXSk7XG4g
ICAgfVxuICB9XG4gIHJldHVybiByZXNcbn1cblxuLyoqXG4gKiBQZXJmb3JtIG5vIG9wZXJhdGlv
bi5cbiAqL1xuZnVuY3Rpb24gbm9vcCAoKSB7fVxuXG4vKipcbiAqIEFsd2F5cyByZXR1cm4gZmFs
c2UuXG4gKi9cbnZhciBubyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGZhbHNlOyB9O1xuXG4vKipc
biAqIEdlbmVyYXRlIGEgc3RhdGljIGtleXMgc3RyaW5nIGZyb20gY29tcGlsZXIgbW9kdWxlcy5c
biAqL1xuZnVuY3Rpb24gZ2VuU3RhdGljS2V5cyAobW9kdWxlcykge1xuICByZXR1cm4gbW9kdWxl
cy5yZWR1Y2UoZnVuY3Rpb24gKGtleXMsIG0pIHtcbiAgICByZXR1cm4ga2V5cy5jb25jYXQobS5z
dGF0aWNLZXlzIHx8IFtdKVxuICB9LCBbXSkuam9pbignLCcpXG59XG5cbi8qKlxuICogQ2hlY2sg
aWYgdHdvIHZhbHVlcyBhcmUgbG9vc2VseSBlcXVhbCAtIHRoYXQgaXMsXG4gKiBpZiB0aGV5IGFy
ZSBwbGFpbiBvYmplY3RzLCBkbyB0aGV5IGhhdmUgdGhlIHNhbWUgc2hhcGU/XG4gKi9cbmZ1bmN0
aW9uIGxvb3NlRXF1YWwgKGEsIGIpIHtcbiAgLyogZXNsaW50LWRpc2FibGUgZXFlcWVxICovXG4g
IHJldHVybiBhID09IGIgfHwgKFxuICAgIGlzT2JqZWN0KGEpICYmIGlzT2JqZWN0KGIpXG4gICAg
ICA/IEpTT04uc3RyaW5naWZ5KGEpID09PSBKU09OLnN0cmluZ2lmeShiKVxuICAgICAgOiBmYWxz
ZVxuICApXG4gIC8qIGVzbGludC1lbmFibGUgZXFlcWVxICovXG59XG5cbmZ1bmN0aW9uIGxvb3Nl
SW5kZXhPZiAoYXJyLCB2YWwpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBp
KyspIHtcbiAgICBpZiAobG9vc2VFcXVhbChhcnJbaV0sIHZhbCkpIHsgcmV0dXJuIGkgfVxuICB9
XG4gIHJldHVybiAtMVxufVxuXG4vKiAgKi9cblxuLyoqXG4gKiBDaGVjayBpZiBhIHN0cmluZyBz
dGFydHMgd2l0aCAkIG9yIF9cbiAqL1xuZnVuY3Rpb24gaXNSZXNlcnZlZCAoc3RyKSB7XG4gIHZh
ciBjID0gKHN0ciArICcnKS5jaGFyQ29kZUF0KDApO1xuICByZXR1cm4gYyA9PT0gMHgyNCB8fCBj
ID09PSAweDVGXG59XG5cbi8qKlxuICogRGVmaW5lIGEgcHJvcGVydHkuXG4gKi9cbmZ1bmN0aW9u
IGRlZiAob2JqLCBrZXksIHZhbCwgZW51bWVyYWJsZSkge1xuICBPYmplY3QuZGVmaW5lUHJvcGVy
dHkob2JqLCBrZXksIHtcbiAgICB2YWx1ZTogdmFsLFxuICAgIGVudW1lcmFibGU6ICEhZW51bWVy
YWJsZSxcbiAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICBjb25maWd1cmFibGU6IHRydWVcbiAgfSk7
XG59XG5cbi8qKlxuICogUGFyc2Ugc2ltcGxlIHBhdGguXG4gKi9cbnZhciBiYWlsUkUgPSAvW15c
XHcuJF0vO1xuZnVuY3Rpb24gcGFyc2VQYXRoIChwYXRoKSB7XG4gIGlmIChiYWlsUkUudGVzdChw
YXRoKSkge1xuICAgIHJldHVyblxuICB9IGVsc2Uge1xuICAgIHZhciBzZWdtZW50cyA9IHBhdGgu
c3BsaXQoJy4nKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKG9iaikge1xuICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBzZWdtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoIW9iaikgeyBy
ZXR1cm4gfVxuICAgICAgICBvYmogPSBvYmpbc2VnbWVudHNbaV1dO1xuICAgICAgfVxuICAgICAg
cmV0dXJuIG9ialxuICAgIH1cbiAgfVxufVxuXG4vKiAgKi9cbi8qIGdsb2JhbHMgTXV0YXRpb25P
YnNlcnZlciAqL1xuXG4vLyBjYW4gd2UgdXNlIF9fcHJvdG9fXz9cbnZhciBoYXNQcm90byA9ICdf
X3Byb3RvX18nIGluIHt9O1xuXG4vLyBCcm93c2VyIGVudmlyb25tZW50IHNuaWZmaW5nXG52YXIg
aW5Ccm93c2VyID1cbiAgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgT2JqZWN0
LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHdpbmRvdykgIT09ICdbb2JqZWN0IE9iamVjdF0nO1xu
XG52YXIgVUEgPSBpbkJyb3dzZXIgJiYgd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dl
ckNhc2UoKTtcbnZhciBpc0lFID0gVUEgJiYgL21zaWV8dHJpZGVudC8udGVzdChVQSk7XG52YXIg
aXNJRTkgPSBVQSAmJiBVQS5pbmRleE9mKCdtc2llIDkuMCcpID4gMDtcbnZhciBpc0VkZ2UgPSBV
QSAmJiBVQS5pbmRleE9mKCdlZGdlLycpID4gMDtcbnZhciBpc0FuZHJvaWQgPSBVQSAmJiBVQS5p
bmRleE9mKCdhbmRyb2lkJykgPiAwO1xudmFyIGlzSU9TID0gVUEgJiYgL2lwaG9uZXxpcGFkfGlw
b2R8aW9zLy50ZXN0KFVBKTtcblxuLy8gdGhpcyBuZWVkcyB0byBiZSBsYXp5LWV2YWxlZCBiZWNh
dXNlIHZ1ZSBtYXkgYmUgcmVxdWlyZWQgYmVmb3JlXG4vLyB2dWUtc2VydmVyLXJlbmRlcmVyIGNh
biBzZXQgVlVFX0VOVlxudmFyIF9pc1NlcnZlcjtcbnZhciBpc1NlcnZlclJlbmRlcmluZyA9IGZ1
bmN0aW9uICgpIHtcbiAgaWYgKF9pc1NlcnZlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgLyogaXN0
YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKCFpbkJyb3dzZXIgJiYgdHlwZW9mIGdsb2JhbCAh
PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIC8vIGRldGVjdCBwcmVzZW5jZSBvZiB2dWUtc2VydmVy
LXJlbmRlcmVyIGFuZCBhdm9pZFxuICAgICAgLy8gV2VicGFjayBzaGltbWluZyB0aGUgcHJvY2Vz
c1xuICAgICAgX2lzU2VydmVyID0gZ2xvYmFsWydwcm9jZXNzJ10uZW52LlZVRV9FTlYgPT09ICdz
ZXJ2ZXInO1xuICAgIH0gZWxzZSB7XG4gICAgICBfaXNTZXJ2ZXIgPSBmYWxzZTtcbiAgICB9XG4g
IH1cbiAgcmV0dXJuIF9pc1NlcnZlclxufTtcblxuLy8gZGV0ZWN0IGRldnRvb2xzXG52YXIgZGV2
dG9vbHMgPSBpbkJyb3dzZXIgJiYgd2luZG93Ll9fVlVFX0RFVlRPT0xTX0dMT0JBTF9IT09LX187
XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5mdW5jdGlvbiBpc05hdGl2ZSAoQ3Rvcikg
e1xuICByZXR1cm4gL25hdGl2ZSBjb2RlLy50ZXN0KEN0b3IudG9TdHJpbmcoKSlcbn1cblxuLyoq
XG4gKiBEZWZlciBhIHRhc2sgdG8gZXhlY3V0ZSBpdCBhc3luY2hyb25vdXNseS5cbiAqL1xudmFy
IG5leHRUaWNrID0gKGZ1bmN0aW9uICgpIHtcbiAgdmFyIGNhbGxiYWNrcyA9IFtdO1xuICB2YXIg
cGVuZGluZyA9IGZhbHNlO1xuICB2YXIgdGltZXJGdW5jO1xuXG4gIGZ1bmN0aW9uIG5leHRUaWNr
SGFuZGxlciAoKSB7XG4gICAgcGVuZGluZyA9IGZhbHNlO1xuICAgIHZhciBjb3BpZXMgPSBjYWxs
YmFja3Muc2xpY2UoMCk7XG4gICAgY2FsbGJhY2tzLmxlbmd0aCA9IDA7XG4gICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBjb3BpZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvcGllc1tpXSgpO1xuICAg
IH1cbiAgfVxuXG4gIC8vIHRoZSBuZXh0VGljayBiZWhhdmlvciBsZXZlcmFnZXMgdGhlIG1pY3Jv
dGFzayBxdWV1ZSwgd2hpY2ggY2FuIGJlIGFjY2Vzc2VkXG4gIC8vIHZpYSBlaXRoZXIgbmF0aXZl
IFByb21pc2UudGhlbiBvciBNdXRhdGlvbk9ic2VydmVyLlxuICAvLyBNdXRhdGlvbk9ic2VydmVy
IGhhcyB3aWRlciBzdXBwb3J0LCBob3dldmVyIGl0IGlzIHNlcmlvdXNseSBidWdnZWQgaW5cbiAg
Ly8gVUlXZWJWaWV3IGluIGlPUyA+PSA5LjMuMyB3aGVuIHRyaWdnZXJlZCBpbiB0b3VjaCBldmVu
dCBoYW5kbGVycy4gSXRcbiAgLy8gY29tcGxldGVseSBzdG9wcyB3b3JraW5nIGFmdGVyIHRyaWdn
ZXJpbmcgYSBmZXcgdGltZXMuLi4gc28sIGlmIG5hdGl2ZVxuICAvLyBQcm9taXNlIGlzIGF2YWls
YWJsZSwgd2Ugd2lsbCB1c2UgaXQ6XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAo
dHlwZW9mIFByb21pc2UgIT09ICd1bmRlZmluZWQnICYmIGlzTmF0aXZlKFByb21pc2UpKSB7XG4g
ICAgdmFyIHAgPSBQcm9taXNlLnJlc29sdmUoKTtcbiAgICB0aW1lckZ1bmMgPSBmdW5jdGlvbiAo
KSB7XG4gICAgICBwLnRoZW4obmV4dFRpY2tIYW5kbGVyKTtcbiAgICAgIC8vIGluIHByb2JsZW1h
dGljIFVJV2ViVmlld3MsIFByb21pc2UudGhlbiBkb2Vzbid0IGNvbXBsZXRlbHkgYnJlYWssIGJ1
dFxuICAgICAgLy8gaXQgY2FuIGdldCBzdHVjayBpbiBhIHdlaXJkIHN0YXRlIHdoZXJlIGNhbGxi
YWNrcyBhcmUgcHVzaGVkIGludG8gdGhlXG4gICAgICAvLyBtaWNyb3Rhc2sgcXVldWUgYnV0IHRo
ZSBxdWV1ZSBpc24ndCBiZWluZyBmbHVzaGVkLCB1bnRpbCB0aGUgYnJvd3NlclxuICAgICAgLy8g
bmVlZHMgdG8gZG8gc29tZSBvdGhlciB3b3JrLCBlLmcuIGhhbmRsZSBhIHRpbWVyLiBUaGVyZWZv
cmUgd2UgY2FuXG4gICAgICAvLyBcImZvcmNlXCIgdGhlIG1pY3JvdGFzayBxdWV1ZSB0byBiZSBm
bHVzaGVkIGJ5IGFkZGluZyBhbiBlbXB0eSB0aW1lci5cbiAgICAgIGlmIChpc0lPUykgeyBzZXRU
aW1lb3V0KG5vb3ApOyB9XG4gICAgfTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgTXV0YXRpb25PYnNl
cnZlciAhPT0gJ3VuZGVmaW5lZCcgJiYgKFxuICAgIGlzTmF0aXZlKE11dGF0aW9uT2JzZXJ2ZXIp
IHx8XG4gICAgLy8gUGhhbnRvbUpTIGFuZCBpT1MgNy54XG4gICAgTXV0YXRpb25PYnNlcnZlci50
b1N0cmluZygpID09PSAnW29iamVjdCBNdXRhdGlvbk9ic2VydmVyQ29uc3RydWN0b3JdJ1xuICAp
KSB7XG4gICAgLy8gdXNlIE11dGF0aW9uT2JzZXJ2ZXIgd2hlcmUgbmF0aXZlIFByb21pc2UgaXMg
bm90IGF2YWlsYWJsZSxcbiAgICAvLyBlLmcuIFBoYW50b21KUyBJRTExLCBpT1M3LCBBbmRyb2lk
IDQuNFxuICAgIHZhciBjb3VudGVyID0gMTtcbiAgICB2YXIgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRp
b25PYnNlcnZlcihuZXh0VGlja0hhbmRsZXIpO1xuICAgIHZhciB0ZXh0Tm9kZSA9IGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKFN0cmluZyhjb3VudGVyKSk7XG4gICAgb2JzZXJ2ZXIub2JzZXJ2ZSh0
ZXh0Tm9kZSwge1xuICAgICAgY2hhcmFjdGVyRGF0YTogdHJ1ZVxuICAgIH0pO1xuICAgIHRpbWVy
RnVuYyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvdW50ZXIgPSAoY291bnRlciArIDEpICUgMjtc
biAgICAgIHRleHROb2RlLmRhdGEgPSBTdHJpbmcoY291bnRlcik7XG4gICAgfTtcbiAgfSBlbHNl
IHtcbiAgICAvLyBmYWxsYmFjayB0byBzZXRUaW1lb3V0XG4gICAgLyogaXN0YW5idWwgaWdub3Jl
IG5leHQgKi9cbiAgICB0aW1lckZ1bmMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBzZXRUaW1lb3V0
KG5leHRUaWNrSGFuZGxlciwgMCk7XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiBx
dWV1ZU5leHRUaWNrIChjYiwgY3R4KSB7XG4gICAgdmFyIF9yZXNvbHZlO1xuICAgIGNhbGxiYWNr
cy5wdXNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChjYikgeyBjYi5jYWxsKGN0eCk7IH1cbiAg
ICAgIGlmIChfcmVzb2x2ZSkgeyBfcmVzb2x2ZShjdHgpOyB9XG4gICAgfSk7XG4gICAgaWYgKCFw
ZW5kaW5nKSB7XG4gICAgICBwZW5kaW5nID0gdHJ1ZTtcbiAgICAgIHRpbWVyRnVuYygpO1xuICAg
IH1cbiAgICBpZiAoIWNiICYmIHR5cGVvZiBQcm9taXNlICE9PSAndW5kZWZpbmVkJykge1xuICAg
ICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG4gICAgICAgIF9yZXNv
bHZlID0gcmVzb2x2ZTtcbiAgICAgIH0pXG4gICAgfVxuICB9XG59KSgpO1xuXG52YXIgX1NldDtc
bi8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuaWYgKHR5cGVvZiBTZXQgIT09ICd1bmRlZmluZWQn
ICYmIGlzTmF0aXZlKFNldCkpIHtcbiAgLy8gdXNlIG5hdGl2ZSBTZXQgd2hlbiBhdmFpbGFibGUu
XG4gIF9TZXQgPSBTZXQ7XG59IGVsc2Uge1xuICAvLyBhIG5vbi1zdGFuZGFyZCBTZXQgcG9seWZp
bGwgdGhhdCBvbmx5IHdvcmtzIHdpdGggcHJpbWl0aXZlIGtleXMuXG4gIF9TZXQgPSAoZnVuY3Rp
b24gKCkge1xuICAgIGZ1bmN0aW9uIFNldCAoKSB7XG4gICAgICB0aGlzLnNldCA9IE9iamVjdC5j
cmVhdGUobnVsbCk7XG4gICAgfVxuICAgIFNldC5wcm90b3R5cGUuaGFzID0gZnVuY3Rpb24gaGFz
IChrZXkpIHtcbiAgICAgIHJldHVybiB0aGlzLnNldFtrZXldICE9PSB1bmRlZmluZWRcbiAgICB9
O1xuICAgIFNldC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gYWRkIChrZXkpIHtcbiAgICAgIHRo
aXMuc2V0W2tleV0gPSAxO1xuICAgIH07XG4gICAgU2V0LnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0
aW9uIGNsZWFyICgpIHtcbiAgICAgIHRoaXMuc2V0ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAg
ICB9O1xuXG4gICAgcmV0dXJuIFNldDtcbiAgfSgpKTtcbn1cblxuLyogICovXG5cbnZhciBjb25m
aWcgPSB7XG4gIC8qKlxuICAgKiBPcHRpb24gbWVyZ2Ugc3RyYXRlZ2llcyAodXNlZCBpbiBjb3Jl
L3V0aWwvb3B0aW9ucylcbiAgICovXG4gIG9wdGlvbk1lcmdlU3RyYXRlZ2llczogT2JqZWN0LmNy
ZWF0ZShudWxsKSxcblxuICAvKipcbiAgICogV2hldGhlciB0byBzdXBwcmVzcyB3YXJuaW5ncy5c
biAgICovXG4gIHNpbGVudDogZmFsc2UsXG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZW5hYmxl
IGRldnRvb2xzXG4gICAqL1xuICBkZXZ0b29sczogcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJyxcblxuICAvKipcbiAgICogRXJyb3IgaGFuZGxlciBmb3Igd2F0Y2hlciBlcnJv
cnNcbiAgICovXG4gIGVycm9ySGFuZGxlcjogbnVsbCxcblxuICAvKipcbiAgICogSWdub3JlIGNl
cnRhaW4gY3VzdG9tIGVsZW1lbnRzXG4gICAqL1xuICBpZ25vcmVkRWxlbWVudHM6IG51bGwsXG5c
biAgLyoqXG4gICAqIEN1c3RvbSB1c2VyIGtleSBhbGlhc2VzIGZvciB2LW9uXG4gICAqL1xuICBr
ZXlDb2RlczogT2JqZWN0LmNyZWF0ZShudWxsKSxcblxuICAvKipcbiAgICogQ2hlY2sgaWYgYSB0
YWcgaXMgcmVzZXJ2ZWQgc28gdGhhdCBpdCBjYW5ub3QgYmUgcmVnaXN0ZXJlZCBhcyBhXG4gICAq
IGNvbXBvbmVudC4gVGhpcyBpcyBwbGF0Zm9ybS1kZXBlbmRlbnQgYW5kIG1heSBiZSBvdmVyd3Jp
dHRlbi5cbiAgICovXG4gIGlzUmVzZXJ2ZWRUYWc6IG5vLFxuXG4gIC8qKlxuICAgKiBDaGVjayBp
ZiBhIHRhZyBpcyBhbiB1bmtub3duIGVsZW1lbnQuXG4gICAqIFBsYXRmb3JtLWRlcGVuZGVudC5c
biAgICovXG4gIGlzVW5rbm93bkVsZW1lbnQ6IG5vLFxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG5h
bWVzcGFjZSBvZiBhbiBlbGVtZW50XG4gICAqL1xuICBnZXRUYWdOYW1lc3BhY2U6IG5vb3AsXG5c
biAgLyoqXG4gICAqIENoZWNrIGlmIGFuIGF0dHJpYnV0ZSBtdXN0IGJlIGJvdW5kIHVzaW5nIHBy
b3BlcnR5LCBlLmcuIHZhbHVlXG4gICAqIFBsYXRmb3JtLWRlcGVuZGVudC5cbiAgICovXG4gIG11
c3RVc2VQcm9wOiBubyxcblxuICAvKipcbiAgICogTGlzdCBvZiBhc3NldCB0eXBlcyB0aGF0IGEg
Y29tcG9uZW50IGNhbiBvd24uXG4gICAqL1xuICBfYXNzZXRUeXBlczogW1xuICAgICdjb21wb25l
bnQnLFxuICAgICdkaXJlY3RpdmUnLFxuICAgICdmaWx0ZXInXG4gIF0sXG5cbiAgLyoqXG4gICAq
IExpc3Qgb2YgbGlmZWN5Y2xlIGhvb2tzLlxuICAgKi9cbiAgX2xpZmVjeWNsZUhvb2tzOiBbXG4g
ICAgJ2JlZm9yZUNyZWF0ZScsXG4gICAgJ2NyZWF0ZWQnLFxuICAgICdiZWZvcmVNb3VudCcsXG4g
ICAgJ21vdW50ZWQnLFxuICAgICdiZWZvcmVVcGRhdGUnLFxuICAgICd1cGRhdGVkJyxcbiAgICAn
YmVmb3JlRGVzdHJveScsXG4gICAgJ2Rlc3Ryb3llZCcsXG4gICAgJ2FjdGl2YXRlZCcsXG4gICAg
J2RlYWN0aXZhdGVkJ1xuICBdLFxuXG4gIC8qKlxuICAgKiBNYXggY2lyY3VsYXIgdXBkYXRlcyBh
bGxvd2VkIGluIGEgc2NoZWR1bGVyIGZsdXNoIGN5Y2xlLlxuICAgKi9cbiAgX21heFVwZGF0ZUNv
dW50OiAxMDBcbn07XG5cbnZhciB3YXJuID0gbm9vcDtcbnZhciBmb3JtYXRDb21wb25lbnROYW1l
O1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIg
aGFzQ29uc29sZSA9IHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJztcblxuICB3YXJuID0g
ZnVuY3Rpb24gKG1zZywgdm0pIHtcbiAgICBpZiAoaGFzQ29uc29sZSAmJiAoIWNvbmZpZy5zaWxl
bnQpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFwiW1Z1ZSB3YXJuXTogXCIgKyBtc2cgKyBcIiBc
IiArIChcbiAgICAgICAgdm0gPyBmb3JtYXRMb2NhdGlvbihmb3JtYXRDb21wb25lbnROYW1lKHZt
KSkgOiAnJ1xuICAgICAgKSk7XG4gICAgfVxuICB9O1xuXG4gIGZvcm1hdENvbXBvbmVudE5hbWUg
PSBmdW5jdGlvbiAodm0pIHtcbiAgICBpZiAodm0uJHJvb3QgPT09IHZtKSB7XG4gICAgICByZXR1
cm4gJ3Jvb3QgaW5zdGFuY2UnXG4gICAgfVxuICAgIHZhciBuYW1lID0gdm0uX2lzVnVlXG4gICAg
ICA/IHZtLiRvcHRpb25zLm5hbWUgfHwgdm0uJG9wdGlvbnMuX2NvbXBvbmVudFRhZ1xuICAgICAg
OiB2bS5uYW1lO1xuICAgIHJldHVybiAoXG4gICAgICAobmFtZSA/IChcImNvbXBvbmVudCA8XCIg
KyBuYW1lICsgXCI+XCIpIDogXCJhbm9ueW1vdXMgY29tcG9uZW50XCIpICtcbiAgICAgICh2bS5f
aXNWdWUgJiYgdm0uJG9wdGlvbnMuX19maWxlID8gKFwiIGF0IFwiICsgKHZtLiRvcHRpb25zLl9f
ZmlsZSkpIDogJycpXG4gICAgKVxuICB9O1xuXG4gIHZhciBmb3JtYXRMb2NhdGlvbiA9IGZ1bmN0
aW9uIChzdHIpIHtcbiAgICBpZiAoc3RyID09PSAnYW5vbnltb3VzIGNvbXBvbmVudCcpIHtcbiAg
ICAgIHN0ciArPSBcIiAtIHVzZSB0aGUgXFxcIm5hbWVcXFwiIG9wdGlvbiBmb3IgYmV0dGVyIGRl
YnVnZ2luZyBtZXNzYWdlcy5cIjtcbiAgICB9XG4gICAgcmV0dXJuIChcIlxcbihmb3VuZCBpbiBc
IiArIHN0ciArIFwiKVwiKVxuICB9O1xufVxuXG4vKiAgKi9cblxuXG52YXIgdWlkJDEgPSAwO1xu
XG4vKipcbiAqIEEgZGVwIGlzIGFuIG9ic2VydmFibGUgdGhhdCBjYW4gaGF2ZSBtdWx0aXBsZVxu
ICogZGlyZWN0aXZlcyBzdWJzY3JpYmluZyB0byBpdC5cbiAqL1xudmFyIERlcCA9IGZ1bmN0aW9u
IERlcCAoKSB7XG4gIHRoaXMuaWQgPSB1aWQkMSsrO1xuICB0aGlzLnN1YnMgPSBbXTtcbn07XG5c
bkRlcC5wcm90b3R5cGUuYWRkU3ViID0gZnVuY3Rpb24gYWRkU3ViIChzdWIpIHtcbiAgdGhpcy5z
dWJzLnB1c2goc3ViKTtcbn07XG5cbkRlcC5wcm90b3R5cGUucmVtb3ZlU3ViID0gZnVuY3Rpb24g
cmVtb3ZlU3ViIChzdWIpIHtcbiAgcmVtb3ZlJDEodGhpcy5zdWJzLCBzdWIpO1xufTtcblxuRGVw
LnByb3RvdHlwZS5kZXBlbmQgPSBmdW5jdGlvbiBkZXBlbmQgKCkge1xuICBpZiAoRGVwLnRhcmdl
dCkge1xuICAgIERlcC50YXJnZXQuYWRkRGVwKHRoaXMpO1xuICB9XG59O1xuXG5EZXAucHJvdG90
eXBlLm5vdGlmeSA9IGZ1bmN0aW9uIG5vdGlmeSAoKSB7XG4gIC8vIHN0YWJsaXplIHRoZSBzdWJz
Y3JpYmVyIGxpc3QgZmlyc3RcbiAgdmFyIHN1YnMgPSB0aGlzLnN1YnMuc2xpY2UoKTtcbiAgZm9y
ICh2YXIgaSA9IDAsIGwgPSBzdWJzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIHN1YnNbaV0u
dXBkYXRlKCk7XG4gIH1cbn07XG5cbi8vIHRoZSBjdXJyZW50IHRhcmdldCB3YXRjaGVyIGJlaW5n
IGV2YWx1YXRlZC5cbi8vIHRoaXMgaXMgZ2xvYmFsbHkgdW5pcXVlIGJlY2F1c2UgdGhlcmUgY291
bGQgYmUgb25seSBvbmVcbi8vIHdhdGNoZXIgYmVpbmcgZXZhbHVhdGVkIGF0IGFueSB0aW1lLlxu
RGVwLnRhcmdldCA9IG51bGw7XG52YXIgdGFyZ2V0U3RhY2sgPSBbXTtcblxuZnVuY3Rpb24gcHVz
aFRhcmdldCAoX3RhcmdldCkge1xuICBpZiAoRGVwLnRhcmdldCkgeyB0YXJnZXRTdGFjay5wdXNo
KERlcC50YXJnZXQpOyB9XG4gIERlcC50YXJnZXQgPSBfdGFyZ2V0O1xufVxuXG5mdW5jdGlvbiBw
b3BUYXJnZXQgKCkge1xuICBEZXAudGFyZ2V0ID0gdGFyZ2V0U3RhY2sucG9wKCk7XG59XG5cbi8q
XG4gKiBub3QgdHlwZSBjaGVja2luZyB0aGlzIGZpbGUgYmVjYXVzZSBmbG93IGRvZXNuJ3QgcGxh
eSB3ZWxsIHdpdGhcbiAqIGR5bmFtaWNhbGx5IGFjY2Vzc2luZyBtZXRob2RzIG9uIEFycmF5IHBy
b3RvdHlwZVxuICovXG5cbnZhciBhcnJheVByb3RvID0gQXJyYXkucHJvdG90eXBlO1xudmFyIGFy
cmF5TWV0aG9kcyA9IE9iamVjdC5jcmVhdGUoYXJyYXlQcm90byk7W1xuICAncHVzaCcsXG4gICdw
b3AnLFxuICAnc2hpZnQnLFxuICAndW5zaGlmdCcsXG4gICdzcGxpY2UnLFxuICAnc29ydCcsXG4g
ICdyZXZlcnNlJ1xuXVxuLmZvckVhY2goZnVuY3Rpb24gKG1ldGhvZCkge1xuICAvLyBjYWNoZSBv
cmlnaW5hbCBtZXRob2RcbiAgdmFyIG9yaWdpbmFsID0gYXJyYXlQcm90b1ttZXRob2RdO1xuICBk
ZWYoYXJyYXlNZXRob2RzLCBtZXRob2QsIGZ1bmN0aW9uIG11dGF0b3IgKCkge1xuICAgIHZhciBh
cmd1bWVudHMkMSA9IGFyZ3VtZW50cztcblxuICAgIC8vIGF2b2lkIGxlYWtpbmcgYXJndW1lbnRz
OlxuICAgIC8vIGh0dHA6Ly9qc3BlcmYuY29tL2Nsb3N1cmUtd2l0aC1hcmd1bWVudHNcbiAgICB2
YXIgaSA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkoaSk7XG4g
ICAgd2hpbGUgKGktLSkge1xuICAgICAgYXJnc1tpXSA9IGFyZ3VtZW50cyQxW2ldO1xuICAgIH1c
biAgICB2YXIgcmVzdWx0ID0gb3JpZ2luYWwuYXBwbHkodGhpcywgYXJncyk7XG4gICAgdmFyIG9i
ID0gdGhpcy5fX29iX187XG4gICAgdmFyIGluc2VydGVkO1xuICAgIHN3aXRjaCAobWV0aG9kKSB7
XG4gICAgICBjYXNlICdwdXNoJzpcbiAgICAgICAgaW5zZXJ0ZWQgPSBhcmdzO1xuICAgICAgICBi
cmVha1xuICAgICAgY2FzZSAndW5zaGlmdCc6XG4gICAgICAgIGluc2VydGVkID0gYXJncztcbiAg
ICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ3NwbGljZSc6XG4gICAgICAgIGluc2VydGVkID0gYXJn
cy5zbGljZSgyKTtcbiAgICAgICAgYnJlYWtcbiAgICB9XG4gICAgaWYgKGluc2VydGVkKSB7IG9i
Lm9ic2VydmVBcnJheShpbnNlcnRlZCk7IH1cbiAgICAvLyBub3RpZnkgY2hhbmdlXG4gICAgb2Iu
ZGVwLm5vdGlmeSgpO1xuICAgIHJldHVybiByZXN1bHRcbiAgfSk7XG59KTtcblxuLyogICovXG5c
bnZhciBhcnJheUtleXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhhcnJheU1ldGhvZHMp
O1xuXG4vKipcbiAqIEJ5IGRlZmF1bHQsIHdoZW4gYSByZWFjdGl2ZSBwcm9wZXJ0eSBpcyBzZXQs
IHRoZSBuZXcgdmFsdWUgaXNcbiAqIGFsc28gY29udmVydGVkIHRvIGJlY29tZSByZWFjdGl2ZS4g
SG93ZXZlciB3aGVuIHBhc3NpbmcgZG93biBwcm9wcyxcbiAqIHdlIGRvbid0IHdhbnQgdG8gZm9y
Y2UgY29udmVyc2lvbiBiZWNhdXNlIHRoZSB2YWx1ZSBtYXkgYmUgYSBuZXN0ZWQgdmFsdWVcbiAq
IHVuZGVyIGEgZnJvemVuIGRhdGEgc3RydWN0dXJlLiBDb252ZXJ0aW5nIGl0IHdvdWxkIGRlZmVh
dCB0aGUgb3B0aW1pemF0aW9uLlxuICovXG52YXIgb2JzZXJ2ZXJTdGF0ZSA9IHtcbiAgc2hvdWxk
Q29udmVydDogdHJ1ZSxcbiAgaXNTZXR0aW5nUHJvcHM6IGZhbHNlXG59O1xuXG4vKipcbiAqIE9i
c2VydmVyIGNsYXNzIHRoYXQgYXJlIGF0dGFjaGVkIHRvIGVhY2ggb2JzZXJ2ZWRcbiAqIG9iamVj
dC4gT25jZSBhdHRhY2hlZCwgdGhlIG9ic2VydmVyIGNvbnZlcnRzIHRhcmdldFxuICogb2JqZWN0
J3MgcHJvcGVydHkga2V5cyBpbnRvIGdldHRlci9zZXR0ZXJzIHRoYXRcbiAqIGNvbGxlY3QgZGVw
ZW5kZW5jaWVzIGFuZCBkaXNwYXRjaGVzIHVwZGF0ZXMuXG4gKi9cbnZhciBPYnNlcnZlciA9IGZ1
bmN0aW9uIE9ic2VydmVyICh2YWx1ZSkge1xuICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIHRoaXMu
ZGVwID0gbmV3IERlcCgpO1xuICB0aGlzLnZtQ291bnQgPSAwO1xuICBkZWYodmFsdWUsICdfX29i
X18nLCB0aGlzKTtcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgdmFyIGF1Z21l
bnQgPSBoYXNQcm90b1xuICAgICAgPyBwcm90b0F1Z21lbnRcbiAgICAgIDogY29weUF1Z21lbnQ7
XG4gICAgYXVnbWVudCh2YWx1ZSwgYXJyYXlNZXRob2RzLCBhcnJheUtleXMpO1xuICAgIHRoaXMu
b2JzZXJ2ZUFycmF5KHZhbHVlKTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLndhbGsodmFsdWUpO1xu
ICB9XG59O1xuXG4vKipcbiAqIFdhbGsgdGhyb3VnaCBlYWNoIHByb3BlcnR5IGFuZCBjb252ZXJ0
IHRoZW0gaW50b1xuICogZ2V0dGVyL3NldHRlcnMuIFRoaXMgbWV0aG9kIHNob3VsZCBvbmx5IGJl
IGNhbGxlZCB3aGVuXG4gKiB2YWx1ZSB0eXBlIGlzIE9iamVjdC5cbiAqL1xuT2JzZXJ2ZXIucHJv
dG90eXBlLndhbGsgPSBmdW5jdGlvbiB3YWxrIChvYmopIHtcbiAgdmFyIGtleXMgPSBPYmplY3Qu
a2V5cyhvYmopO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAg
ICBkZWZpbmVSZWFjdGl2ZSQkMShvYmosIGtleXNbaV0sIG9ialtrZXlzW2ldXSk7XG4gIH1cbn07
XG5cbi8qKlxuICogT2JzZXJ2ZSBhIGxpc3Qgb2YgQXJyYXkgaXRlbXMuXG4gKi9cbk9ic2VydmVy
LnByb3RvdHlwZS5vYnNlcnZlQXJyYXkgPSBmdW5jdGlvbiBvYnNlcnZlQXJyYXkgKGl0ZW1zKSB7
XG4gIGZvciAodmFyIGkgPSAwLCBsID0gaXRlbXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAg
b2JzZXJ2ZShpdGVtc1tpXSk7XG4gIH1cbn07XG5cbi8vIGhlbHBlcnNcblxuLyoqXG4gKiBBdWdt
ZW50IGFuIHRhcmdldCBPYmplY3Qgb3IgQXJyYXkgYnkgaW50ZXJjZXB0aW5nXG4gKiB0aGUgcHJv
dG90eXBlIGNoYWluIHVzaW5nIF9fcHJvdG9fX1xuICovXG5mdW5jdGlvbiBwcm90b0F1Z21lbnQg
KHRhcmdldCwgc3JjKSB7XG4gIC8qIGVzbGludC1kaXNhYmxlIG5vLXByb3RvICovXG4gIHRhcmdl
dC5fX3Byb3RvX18gPSBzcmM7XG4gIC8qIGVzbGludC1lbmFibGUgbm8tcHJvdG8gKi9cbn1cblxu
LyoqXG4gKiBBdWdtZW50IGFuIHRhcmdldCBPYmplY3Qgb3IgQXJyYXkgYnkgZGVmaW5pbmdcbiAq
IGhpZGRlbiBwcm9wZXJ0aWVzLlxuICpcbiAqIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG4gKi9cbmZ1
bmN0aW9uIGNvcHlBdWdtZW50ICh0YXJnZXQsIHNyYywga2V5cykge1xuICBmb3IgKHZhciBpID0g
MCwgbCA9IGtleXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgdmFyIGtleSA9IGtleXNbaV07
XG4gICAgZGVmKHRhcmdldCwga2V5LCBzcmNba2V5XSk7XG4gIH1cbn1cblxuLyoqXG4gKiBBdHRl
bXB0IHRvIGNyZWF0ZSBhbiBvYnNlcnZlciBpbnN0YW5jZSBmb3IgYSB2YWx1ZSxcbiAqIHJldHVy
bnMgdGhlIG5ldyBvYnNlcnZlciBpZiBzdWNjZXNzZnVsbHkgb2JzZXJ2ZWQsXG4gKiBvciB0aGUg
ZXhpc3Rpbmcgb2JzZXJ2ZXIgaWYgdGhlIHZhbHVlIGFscmVhZHkgaGFzIG9uZS5cbiAqL1xuZnVu
Y3Rpb24gb2JzZXJ2ZSAodmFsdWUpIHtcbiAgaWYgKCFpc09iamVjdCh2YWx1ZSkpIHtcbiAgICBy
ZXR1cm5cbiAgfVxuICB2YXIgb2I7XG4gIGlmIChoYXNPd24odmFsdWUsICdfX29iX18nKSAmJiB2
YWx1ZS5fX29iX18gaW5zdGFuY2VvZiBPYnNlcnZlcikge1xuICAgIG9iID0gdmFsdWUuX19vYl9f
O1xuICB9IGVsc2UgaWYgKFxuICAgIG9ic2VydmVyU3RhdGUuc2hvdWxkQ29udmVydCAmJlxuICAg
ICFpc1NlcnZlclJlbmRlcmluZygpICYmXG4gICAgKEFycmF5LmlzQXJyYXkodmFsdWUpIHx8IGlz
UGxhaW5PYmplY3QodmFsdWUpKSAmJlxuICAgIE9iamVjdC5pc0V4dGVuc2libGUodmFsdWUpICYm
XG4gICAgIXZhbHVlLl9pc1Z1ZVxuICApIHtcbiAgICBvYiA9IG5ldyBPYnNlcnZlcih2YWx1ZSk7
XG4gIH1cbiAgcmV0dXJuIG9iXG59XG5cbi8qKlxuICogRGVmaW5lIGEgcmVhY3RpdmUgcHJvcGVy
dHkgb24gYW4gT2JqZWN0LlxuICovXG5mdW5jdGlvbiBkZWZpbmVSZWFjdGl2ZSQkMSAoXG4gIG9i
aixcbiAga2V5LFxuICB2YWwsXG4gIGN1c3RvbVNldHRlclxuKSB7XG4gIHZhciBkZXAgPSBuZXcg
RGVwKCk7XG5cbiAgdmFyIHByb3BlcnR5ID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihvYmosIGtleSk7XG4gIGlmIChwcm9wZXJ0eSAmJiBwcm9wZXJ0eS5jb25maWd1cmFibGUgPT09
IGZhbHNlKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICAvLyBjYXRlciBmb3IgcHJlLWRlZmluZWQg
Z2V0dGVyL3NldHRlcnNcbiAgdmFyIGdldHRlciA9IHByb3BlcnR5ICYmIHByb3BlcnR5LmdldDtc
biAgdmFyIHNldHRlciA9IHByb3BlcnR5ICYmIHByb3BlcnR5LnNldDtcblxuICB2YXIgY2hpbGRP
YiA9IG9ic2VydmUodmFsKTtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7XG4g
ICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgZ2V0OiBm
dW5jdGlvbiByZWFjdGl2ZUdldHRlciAoKSB7XG4gICAgICB2YXIgdmFsdWUgPSBnZXR0ZXIgPyBn
ZXR0ZXIuY2FsbChvYmopIDogdmFsO1xuICAgICAgaWYgKERlcC50YXJnZXQpIHtcbiAgICAgICAg
ZGVwLmRlcGVuZCgpO1xuICAgICAgICBpZiAoY2hpbGRPYikge1xuICAgICAgICAgIGNoaWxkT2Iu
ZGVwLmRlcGVuZCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVl
KSkge1xuICAgICAgICAgIGRlcGVuZEFycmF5KHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxu
ICAgICAgcmV0dXJuIHZhbHVlXG4gICAgfSxcbiAgICBzZXQ6IGZ1bmN0aW9uIHJlYWN0aXZlU2V0
dGVyIChuZXdWYWwpIHtcbiAgICAgIHZhciB2YWx1ZSA9IGdldHRlciA/IGdldHRlci5jYWxsKG9i
aikgOiB2YWw7XG4gICAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby1zZWxmLWNvbXBhcmUgKi9cbiAg
ICAgIGlmIChuZXdWYWwgPT09IHZhbHVlIHx8IChuZXdWYWwgIT09IG5ld1ZhbCAmJiB2YWx1ZSAh
PT0gdmFsdWUpKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgLyogZXNsaW50LWVu
YWJsZSBuby1zZWxmLWNvbXBhcmUgKi9cbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAh
PT0gJ3Byb2R1Y3Rpb24nICYmIGN1c3RvbVNldHRlcikge1xuICAgICAgICBjdXN0b21TZXR0ZXIo
KTtcbiAgICAgIH1cbiAgICAgIGlmIChzZXR0ZXIpIHtcbiAgICAgICAgc2V0dGVyLmNhbGwob2Jq
LCBuZXdWYWwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAg
fVxuICAgICAgY2hpbGRPYiA9IG9ic2VydmUobmV3VmFsKTtcbiAgICAgIGRlcC5ub3RpZnkoKTtc
biAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIFNldCBhIHByb3BlcnR5IG9uIGFuIG9iamVjdC4g
QWRkcyB0aGUgbmV3IHByb3BlcnR5IGFuZFxuICogdHJpZ2dlcnMgY2hhbmdlIG5vdGlmaWNhdGlv
biBpZiB0aGUgcHJvcGVydHkgZG9lc24ndFxuICogYWxyZWFkeSBleGlzdC5cbiAqL1xuZnVuY3Rp
b24gc2V0IChvYmosIGtleSwgdmFsKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KG9iaikpIHtcbiAg
ICBvYmoubGVuZ3RoID0gTWF0aC5tYXgob2JqLmxlbmd0aCwga2V5KTtcbiAgICBvYmouc3BsaWNl
KGtleSwgMSwgdmFsKTtcbiAgICByZXR1cm4gdmFsXG4gIH1cbiAgaWYgKGhhc093bihvYmosIGtl
eSkpIHtcbiAgICBvYmpba2V5XSA9IHZhbDtcbiAgICByZXR1cm5cbiAgfVxuICB2YXIgb2IgPSBv
YmouX19vYl9fO1xuICBpZiAob2JqLl9pc1Z1ZSB8fCAob2IgJiYgb2Iudm1Db3VudCkpIHtcbiAg
ICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4oXG4gICAgICAn
QXZvaWQgYWRkaW5nIHJlYWN0aXZlIHByb3BlcnRpZXMgdG8gYSBWdWUgaW5zdGFuY2Ugb3IgaXRz
IHJvb3QgJGRhdGEgJyArXG4gICAgICAnYXQgcnVudGltZSAtIGRlY2xhcmUgaXQgdXBmcm9udCBp
biB0aGUgZGF0YSBvcHRpb24uJ1xuICAgICk7XG4gICAgcmV0dXJuXG4gIH1cbiAgaWYgKCFvYikg
e1xuICAgIG9ialtrZXldID0gdmFsO1xuICAgIHJldHVyblxuICB9XG4gIGRlZmluZVJlYWN0aXZl
JCQxKG9iLnZhbHVlLCBrZXksIHZhbCk7XG4gIG9iLmRlcC5ub3RpZnkoKTtcbiAgcmV0dXJuIHZh
bFxufVxuXG4vKipcbiAqIERlbGV0ZSBhIHByb3BlcnR5IGFuZCB0cmlnZ2VyIGNoYW5nZSBpZiBu
ZWNlc3NhcnkuXG4gKi9cbmZ1bmN0aW9uIGRlbCAob2JqLCBrZXkpIHtcbiAgdmFyIG9iID0gb2Jq
Ll9fb2JfXztcbiAgaWYgKG9iai5faXNWdWUgfHwgKG9iICYmIG9iLnZtQ291bnQpKSB7XG4gICAg
cHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgJ0F2
b2lkIGRlbGV0aW5nIHByb3BlcnRpZXMgb24gYSBWdWUgaW5zdGFuY2Ugb3IgaXRzIHJvb3QgJGRh
dGEgJyArXG4gICAgICAnLSBqdXN0IHNldCBpdCB0byBudWxsLidcbiAgICApO1xuICAgIHJldHVy
blxuICB9XG4gIGlmICghaGFzT3duKG9iaiwga2V5KSkge1xuICAgIHJldHVyblxuICB9XG4gIGRl
bGV0ZSBvYmpba2V5XTtcbiAgaWYgKCFvYikge1xuICAgIHJldHVyblxuICB9XG4gIG9iLmRlcC5u
b3RpZnkoKTtcbn1cblxuLyoqXG4gKiBDb2xsZWN0IGRlcGVuZGVuY2llcyBvbiBhcnJheSBlbGVt
ZW50cyB3aGVuIHRoZSBhcnJheSBpcyB0b3VjaGVkLCBzaW5jZVxuICogd2UgY2Fubm90IGludGVy
Y2VwdCBhcnJheSBlbGVtZW50IGFjY2VzcyBsaWtlIHByb3BlcnR5IGdldHRlcnMuXG4gKi9cbmZ1
bmN0aW9uIGRlcGVuZEFycmF5ICh2YWx1ZSkge1xuICBmb3IgKHZhciBlID0gKHZvaWQgMCksIGkg
PSAwLCBsID0gdmFsdWUubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgZSA9IHZhbHVlW2ldO1xu
ICAgIGUgJiYgZS5fX29iX18gJiYgZS5fX29iX18uZGVwLmRlcGVuZCgpO1xuICAgIGlmIChBcnJh
eS5pc0FycmF5KGUpKSB7XG4gICAgICBkZXBlbmRBcnJheShlKTtcbiAgICB9XG4gIH1cbn1cblxu
LyogICovXG5cbi8qKlxuICogT3B0aW9uIG92ZXJ3cml0aW5nIHN0cmF0ZWdpZXMgYXJlIGZ1bmN0
aW9ucyB0aGF0IGhhbmRsZVxuICogaG93IHRvIG1lcmdlIGEgcGFyZW50IG9wdGlvbiB2YWx1ZSBh
bmQgYSBjaGlsZCBvcHRpb25cbiAqIHZhbHVlIGludG8gdGhlIGZpbmFsIHZhbHVlLlxuICovXG52
YXIgc3RyYXRzID0gY29uZmlnLm9wdGlvbk1lcmdlU3RyYXRlZ2llcztcblxuLyoqXG4gKiBPcHRp
b25zIHdpdGggcmVzdHJpY3Rpb25zXG4gKi9cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0g
J3Byb2R1Y3Rpb24nKSB7XG4gIHN0cmF0cy5lbCA9IHN0cmF0cy5wcm9wc0RhdGEgPSBmdW5jdGlv
biAocGFyZW50LCBjaGlsZCwgdm0sIGtleSkge1xuICAgIGlmICghdm0pIHtcbiAgICAgIHdhcm4o
XG4gICAgICAgIFwib3B0aW9uIFxcXCJcIiArIGtleSArIFwiXFxcIiBjYW4gb25seSBiZSB1c2Vk
IGR1cmluZyBpbnN0YW5jZSBcIiArXG4gICAgICAgICdjcmVhdGlvbiB3aXRoIHRoZSBgbmV3YCBr
ZXl3b3JkLidcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBkZWZhdWx0U3RyYXQocGFyZW50
LCBjaGlsZClcbiAgfTtcbn1cblxuLyoqXG4gKiBIZWxwZXIgdGhhdCByZWN1cnNpdmVseSBtZXJn
ZXMgdHdvIGRhdGEgb2JqZWN0cyB0b2dldGhlci5cbiAqL1xuZnVuY3Rpb24gbWVyZ2VEYXRhICh0
bywgZnJvbSkge1xuICBpZiAoIWZyb20pIHsgcmV0dXJuIHRvIH1cbiAgdmFyIGtleSwgdG9WYWws
IGZyb21WYWw7XG4gIHZhciBrZXlzID0gT2JqZWN0LmtleXMoZnJvbSk7XG4gIGZvciAodmFyIGkg
PSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgIGtleSA9IGtleXNbaV07XG4gICAgdG9W
YWwgPSB0b1trZXldO1xuICAgIGZyb21WYWwgPSBmcm9tW2tleV07XG4gICAgaWYgKCFoYXNPd24o
dG8sIGtleSkpIHtcbiAgICAgIHNldCh0bywga2V5LCBmcm9tVmFsKTtcbiAgICB9IGVsc2UgaWYg
KGlzUGxhaW5PYmplY3QodG9WYWwpICYmIGlzUGxhaW5PYmplY3QoZnJvbVZhbCkpIHtcbiAgICAg
IG1lcmdlRGF0YSh0b1ZhbCwgZnJvbVZhbCk7XG4gICAgfVxuICB9XG4gIHJldHVybiB0b1xufVxu
XG4vKipcbiAqIERhdGFcbiAqL1xuc3RyYXRzLmRhdGEgPSBmdW5jdGlvbiAoXG4gIHBhcmVudFZh
bCxcbiAgY2hpbGRWYWwsXG4gIHZtXG4pIHtcbiAgaWYgKCF2bSkge1xuICAgIC8vIGluIGEgVnVl
LmV4dGVuZCBtZXJnZSwgYm90aCBzaG91bGQgYmUgZnVuY3Rpb25zXG4gICAgaWYgKCFjaGlsZFZh
bCkge1xuICAgICAgcmV0dXJuIHBhcmVudFZhbFxuICAgIH1cbiAgICBpZiAodHlwZW9mIGNoaWxk
VmFsICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3By
b2R1Y3Rpb24nICYmIHdhcm4oXG4gICAgICAgICdUaGUgXCJkYXRhXCIgb3B0aW9uIHNob3VsZCBi
ZSBhIGZ1bmN0aW9uICcgK1xuICAgICAgICAndGhhdCByZXR1cm5zIGEgcGVyLWluc3RhbmNlIHZh
bHVlIGluIGNvbXBvbmVudCAnICtcbiAgICAgICAgJ2RlZmluaXRpb25zLicsXG4gICAgICAgIHZt
XG4gICAgICApO1xuICAgICAgcmV0dXJuIHBhcmVudFZhbFxuICAgIH1cbiAgICBpZiAoIXBhcmVu
dFZhbCkge1xuICAgICAgcmV0dXJuIGNoaWxkVmFsXG4gICAgfVxuICAgIC8vIHdoZW4gcGFyZW50
VmFsICYgY2hpbGRWYWwgYXJlIGJvdGggcHJlc2VudCxcbiAgICAvLyB3ZSBuZWVkIHRvIHJldHVy
biBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGVcbiAgICAvLyBtZXJnZWQgcmVzdWx0IG9mIGJv
dGggZnVuY3Rpb25zLi4uIG5vIG5lZWQgdG9cbiAgICAvLyBjaGVjayBpZiBwYXJlbnRWYWwgaXMg
YSBmdW5jdGlvbiBoZXJlIGJlY2F1c2VcbiAgICAvLyBpdCBoYXMgdG8gYmUgYSBmdW5jdGlvbiB0
byBwYXNzIHByZXZpb3VzIG1lcmdlcy5cbiAgICByZXR1cm4gZnVuY3Rpb24gbWVyZ2VkRGF0YUZu
ICgpIHtcbiAgICAgIHJldHVybiBtZXJnZURhdGEoXG4gICAgICAgIGNoaWxkVmFsLmNhbGwodGhp
cyksXG4gICAgICAgIHBhcmVudFZhbC5jYWxsKHRoaXMpXG4gICAgICApXG4gICAgfVxuICB9IGVs
c2UgaWYgKHBhcmVudFZhbCB8fCBjaGlsZFZhbCkge1xuICAgIHJldHVybiBmdW5jdGlvbiBtZXJn
ZWRJbnN0YW5jZURhdGFGbiAoKSB7XG4gICAgICAvLyBpbnN0YW5jZSBtZXJnZVxuICAgICAgdmFy
IGluc3RhbmNlRGF0YSA9IHR5cGVvZiBjaGlsZFZhbCA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICA/
IGNoaWxkVmFsLmNhbGwodm0pXG4gICAgICAgIDogY2hpbGRWYWw7XG4gICAgICB2YXIgZGVmYXVs
dERhdGEgPSB0eXBlb2YgcGFyZW50VmFsID09PSAnZnVuY3Rpb24nXG4gICAgICAgID8gcGFyZW50
VmFsLmNhbGwodm0pXG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgaWYgKGluc3RhbmNlRGF0
YSkge1xuICAgICAgICByZXR1cm4gbWVyZ2VEYXRhKGluc3RhbmNlRGF0YSwgZGVmYXVsdERhdGEp
XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZGVmYXVsdERhdGFcbiAgICAgIH1cbiAg
ICB9XG4gIH1cbn07XG5cbi8qKlxuICogSG9va3MgYW5kIHBhcmFtIGF0dHJpYnV0ZXMgYXJlIG1l
cmdlZCBhcyBhcnJheXMuXG4gKi9cbmZ1bmN0aW9uIG1lcmdlSG9vayAoXG4gIHBhcmVudFZhbCxc
biAgY2hpbGRWYWxcbikge1xuICByZXR1cm4gY2hpbGRWYWxcbiAgICA/IHBhcmVudFZhbFxuICAg
ICAgPyBwYXJlbnRWYWwuY29uY2F0KGNoaWxkVmFsKVxuICAgICAgOiBBcnJheS5pc0FycmF5KGNo
aWxkVmFsKVxuICAgICAgICA/IGNoaWxkVmFsXG4gICAgICAgIDogW2NoaWxkVmFsXVxuICAgIDog
cGFyZW50VmFsXG59XG5cbmNvbmZpZy5fbGlmZWN5Y2xlSG9va3MuZm9yRWFjaChmdW5jdGlvbiAo
aG9vaykge1xuICBzdHJhdHNbaG9va10gPSBtZXJnZUhvb2s7XG59KTtcblxuLyoqXG4gKiBBc3Nl
dHNcbiAqXG4gKiBXaGVuIGEgdm0gaXMgcHJlc2VudCAoaW5zdGFuY2UgY3JlYXRpb24pLCB3ZSBu
ZWVkIHRvIGRvXG4gKiBhIHRocmVlLXdheSBtZXJnZSBiZXR3ZWVuIGNvbnN0cnVjdG9yIG9wdGlv
bnMsIGluc3RhbmNlXG4gKiBvcHRpb25zIGFuZCBwYXJlbnQgb3B0aW9ucy5cbiAqL1xuZnVuY3Rp
b24gbWVyZ2VBc3NldHMgKHBhcmVudFZhbCwgY2hpbGRWYWwpIHtcbiAgdmFyIHJlcyA9IE9iamVj
dC5jcmVhdGUocGFyZW50VmFsIHx8IG51bGwpO1xuICByZXR1cm4gY2hpbGRWYWxcbiAgICA/IGV4
dGVuZChyZXMsIGNoaWxkVmFsKVxuICAgIDogcmVzXG59XG5cbmNvbmZpZy5fYXNzZXRUeXBlcy5m
b3JFYWNoKGZ1bmN0aW9uICh0eXBlKSB7XG4gIHN0cmF0c1t0eXBlICsgJ3MnXSA9IG1lcmdlQXNz
ZXRzO1xufSk7XG5cbi8qKlxuICogV2F0Y2hlcnMuXG4gKlxuICogV2F0Y2hlcnMgaGFzaGVzIHNo
b3VsZCBub3Qgb3ZlcndyaXRlIG9uZVxuICogYW5vdGhlciwgc28gd2UgbWVyZ2UgdGhlbSBhcyBh
cnJheXMuXG4gKi9cbnN0cmF0cy53YXRjaCA9IGZ1bmN0aW9uIChwYXJlbnRWYWwsIGNoaWxkVmFs
KSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoIWNoaWxkVmFsKSB7IHJldHVy
biBwYXJlbnRWYWwgfVxuICBpZiAoIXBhcmVudFZhbCkgeyByZXR1cm4gY2hpbGRWYWwgfVxuICB2
YXIgcmV0ID0ge307XG4gIGV4dGVuZChyZXQsIHBhcmVudFZhbCk7XG4gIGZvciAodmFyIGtleSBp
biBjaGlsZFZhbCkge1xuICAgIHZhciBwYXJlbnQgPSByZXRba2V5XTtcbiAgICB2YXIgY2hpbGQg
PSBjaGlsZFZhbFtrZXldO1xuICAgIGlmIChwYXJlbnQgJiYgIUFycmF5LmlzQXJyYXkocGFyZW50
KSkge1xuICAgICAgcGFyZW50ID0gW3BhcmVudF07XG4gICAgfVxuICAgIHJldFtrZXldID0gcGFy
ZW50XG4gICAgICA/IHBhcmVudC5jb25jYXQoY2hpbGQpXG4gICAgICA6IFtjaGlsZF07XG4gIH1c
biAgcmV0dXJuIHJldFxufTtcblxuLyoqXG4gKiBPdGhlciBvYmplY3QgaGFzaGVzLlxuICovXG5z
dHJhdHMucHJvcHMgPVxuc3RyYXRzLm1ldGhvZHMgPVxuc3RyYXRzLmNvbXB1dGVkID0gZnVuY3Rp
b24gKHBhcmVudFZhbCwgY2hpbGRWYWwpIHtcbiAgaWYgKCFjaGlsZFZhbCkgeyByZXR1cm4gcGFy
ZW50VmFsIH1cbiAgaWYgKCFwYXJlbnRWYWwpIHsgcmV0dXJuIGNoaWxkVmFsIH1cbiAgdmFyIHJl
dCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIGV4dGVuZChyZXQsIHBhcmVudFZhbCk7XG4gIGV4
dGVuZChyZXQsIGNoaWxkVmFsKTtcbiAgcmV0dXJuIHJldFxufTtcblxuLyoqXG4gKiBEZWZhdWx0
IHN0cmF0ZWd5LlxuICovXG52YXIgZGVmYXVsdFN0cmF0ID0gZnVuY3Rpb24gKHBhcmVudFZhbCwg
Y2hpbGRWYWwpIHtcbiAgcmV0dXJuIGNoaWxkVmFsID09PSB1bmRlZmluZWRcbiAgICA/IHBhcmVu
dFZhbFxuICAgIDogY2hpbGRWYWxcbn07XG5cbi8qKlxuICogVmFsaWRhdGUgY29tcG9uZW50IG5h
bWVzXG4gKi9cbmZ1bmN0aW9uIGNoZWNrQ29tcG9uZW50cyAob3B0aW9ucykge1xuICBmb3IgKHZh
ciBrZXkgaW4gb3B0aW9ucy5jb21wb25lbnRzKSB7XG4gICAgdmFyIGxvd2VyID0ga2V5LnRvTG93
ZXJDYXNlKCk7XG4gICAgaWYgKGlzQnVpbHRJblRhZyhsb3dlcikgfHwgY29uZmlnLmlzUmVzZXJ2
ZWRUYWcobG93ZXIpKSB7XG4gICAgICB3YXJuKFxuICAgICAgICAnRG8gbm90IHVzZSBidWlsdC1p
biBvciByZXNlcnZlZCBIVE1MIGVsZW1lbnRzIGFzIGNvbXBvbmVudCAnICtcbiAgICAgICAgJ2lk
OiAnICsga2V5XG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEVuc3VyZSBhbGwg
cHJvcHMgb3B0aW9uIHN5bnRheCBhcmUgbm9ybWFsaXplZCBpbnRvIHRoZVxuICogT2JqZWN0LWJh
c2VkIGZvcm1hdC5cbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplUHJvcHMgKG9wdGlvbnMpIHtcbiAg
dmFyIHByb3BzID0gb3B0aW9ucy5wcm9wcztcbiAgaWYgKCFwcm9wcykgeyByZXR1cm4gfVxuICB2
YXIgcmVzID0ge307XG4gIHZhciBpLCB2YWwsIG5hbWU7XG4gIGlmIChBcnJheS5pc0FycmF5KHBy
b3BzKSkge1xuICAgIGkgPSBwcm9wcy5sZW5ndGg7XG4gICAgd2hpbGUgKGktLSkge1xuICAgICAg
dmFsID0gcHJvcHNbaV07XG4gICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAg
ICAgICAgbmFtZSA9IGNhbWVsaXplKHZhbCk7XG4gICAgICAgIHJlc1tuYW1lXSA9IHsgdHlwZTog
bnVsbCB9O1xuICAgICAgfSBlbHNlIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nKSB7XG4gICAgICAgIHdhcm4oJ3Byb3BzIG11c3QgYmUgc3RyaW5ncyB3aGVuIHVzaW5n
IGFycmF5IHN5bnRheC4nKTtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAoaXNQbGFpbk9i
amVjdChwcm9wcykpIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gcHJvcHMpIHtcbiAgICAgIHZhbCA9
IHByb3BzW2tleV07XG4gICAgICBuYW1lID0gY2FtZWxpemUoa2V5KTtcbiAgICAgIHJlc1tuYW1l
XSA9IGlzUGxhaW5PYmplY3QodmFsKVxuICAgICAgICA/IHZhbFxuICAgICAgICA6IHsgdHlwZTog
dmFsIH07XG4gICAgfVxuICB9XG4gIG9wdGlvbnMucHJvcHMgPSByZXM7XG59XG5cbi8qKlxuICog
Tm9ybWFsaXplIHJhdyBmdW5jdGlvbiBkaXJlY3RpdmVzIGludG8gb2JqZWN0IGZvcm1hdC5cbiAq
L1xuZnVuY3Rpb24gbm9ybWFsaXplRGlyZWN0aXZlcyAob3B0aW9ucykge1xuICB2YXIgZGlycyA9
IG9wdGlvbnMuZGlyZWN0aXZlcztcbiAgaWYgKGRpcnMpIHtcbiAgICBmb3IgKHZhciBrZXkgaW4g
ZGlycykge1xuICAgICAgdmFyIGRlZiA9IGRpcnNba2V5XTtcbiAgICAgIGlmICh0eXBlb2YgZGVm
ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGRpcnNba2V5XSA9IHsgYmluZDogZGVmLCB1cGRh
dGU6IGRlZiB9O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIE1lcmdlIHR3byBv
cHRpb24gb2JqZWN0cyBpbnRvIGEgbmV3IG9uZS5cbiAqIENvcmUgdXRpbGl0eSB1c2VkIGluIGJv
dGggaW5zdGFudGlhdGlvbiBhbmQgaW5oZXJpdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIG1lcmdlT3B0
aW9ucyAoXG4gIHBhcmVudCxcbiAgY2hpbGQsXG4gIHZtXG4pIHtcbiAgaWYgKHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBjaGVja0NvbXBvbmVudHMoY2hpbGQp
O1xuICB9XG4gIG5vcm1hbGl6ZVByb3BzKGNoaWxkKTtcbiAgbm9ybWFsaXplRGlyZWN0aXZlcyhj
aGlsZCk7XG4gIHZhciBleHRlbmRzRnJvbSA9IGNoaWxkLmV4dGVuZHM7XG4gIGlmIChleHRlbmRz
RnJvbSkge1xuICAgIHBhcmVudCA9IHR5cGVvZiBleHRlbmRzRnJvbSA9PT0gJ2Z1bmN0aW9uJ1xu
ICAgICAgPyBtZXJnZU9wdGlvbnMocGFyZW50LCBleHRlbmRzRnJvbS5vcHRpb25zLCB2bSlcbiAg
ICAgIDogbWVyZ2VPcHRpb25zKHBhcmVudCwgZXh0ZW5kc0Zyb20sIHZtKTtcbiAgfVxuICBpZiAo
Y2hpbGQubWl4aW5zKSB7XG4gICAgZm9yICh2YXIgaSA9IDAsIGwgPSBjaGlsZC5taXhpbnMubGVu
Z3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICB2YXIgbWl4aW4gPSBjaGlsZC5taXhpbnNbaV07XG4g
ICAgICBpZiAobWl4aW4ucHJvdG90eXBlIGluc3RhbmNlb2YgVnVlJDMpIHtcbiAgICAgICAgbWl4
aW4gPSBtaXhpbi5vcHRpb25zO1xuICAgICAgfVxuICAgICAgcGFyZW50ID0gbWVyZ2VPcHRpb25z
KHBhcmVudCwgbWl4aW4sIHZtKTtcbiAgICB9XG4gIH1cbiAgdmFyIG9wdGlvbnMgPSB7fTtcbiAg
dmFyIGtleTtcbiAgZm9yIChrZXkgaW4gcGFyZW50KSB7XG4gICAgbWVyZ2VGaWVsZChrZXkpO1xu
ICB9XG4gIGZvciAoa2V5IGluIGNoaWxkKSB7XG4gICAgaWYgKCFoYXNPd24ocGFyZW50LCBrZXkp
KSB7XG4gICAgICBtZXJnZUZpZWxkKGtleSk7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIG1lcmdl
RmllbGQgKGtleSkge1xuICAgIHZhciBzdHJhdCA9IHN0cmF0c1trZXldIHx8IGRlZmF1bHRTdHJh
dDtcbiAgICBvcHRpb25zW2tleV0gPSBzdHJhdChwYXJlbnRba2V5XSwgY2hpbGRba2V5XSwgdm0s
IGtleSk7XG4gIH1cbiAgcmV0dXJuIG9wdGlvbnNcbn1cblxuLyoqXG4gKiBSZXNvbHZlIGFuIGFz
c2V0LlxuICogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIGJlY2F1c2UgY2hpbGQgaW5zdGFuY2VzIG5l
ZWQgYWNjZXNzXG4gKiB0byBhc3NldHMgZGVmaW5lZCBpbiBpdHMgYW5jZXN0b3IgY2hhaW4uXG4g
Ki9cbmZ1bmN0aW9uIHJlc29sdmVBc3NldCAoXG4gIG9wdGlvbnMsXG4gIHR5cGUsXG4gIGlkLFxu
ICB3YXJuTWlzc2luZ1xuKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAodHlw
ZW9mIGlkICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVyblxuICB9XG4gIHZhciBhc3NldHMgPSBv
cHRpb25zW3R5cGVdO1xuICB2YXIgcmVzID0gYXNzZXRzW2lkXSB8fFxuICAgIC8vIGNhbWVsQ2Fz
ZSBJRFxuICAgIGFzc2V0c1tjYW1lbGl6ZShpZCldIHx8XG4gICAgLy8gUGFzY2FsIENhc2UgSURc
biAgICBhc3NldHNbY2FwaXRhbGl6ZShjYW1lbGl6ZShpZCkpXTtcbiAgaWYgKHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgd2Fybk1pc3NpbmcgJiYgIXJlcykge1xuICAg
IHdhcm4oXG4gICAgICAnRmFpbGVkIHRvIHJlc29sdmUgJyArIHR5cGUuc2xpY2UoMCwgLTEpICsg
JzogJyArIGlkLFxuICAgICAgb3B0aW9uc1xuICAgICk7XG4gIH1cbiAgcmV0dXJuIHJlc1xufVxu
XG4vKiAgKi9cblxuZnVuY3Rpb24gdmFsaWRhdGVQcm9wIChcbiAga2V5LFxuICBwcm9wT3B0aW9u
cyxcbiAgcHJvcHNEYXRhLFxuICB2bVxuKSB7XG4gIHZhciBwcm9wID0gcHJvcE9wdGlvbnNba2V5
XTtcbiAgdmFyIGFic2VudCA9ICFoYXNPd24ocHJvcHNEYXRhLCBrZXkpO1xuICB2YXIgdmFsdWUg
PSBwcm9wc0RhdGFba2V5XTtcbiAgLy8gaGFuZGxlIGJvb2xlYW4gcHJvcHNcbiAgaWYgKGlzQm9v
bGVhblR5cGUocHJvcC50eXBlKSkge1xuICAgIGlmIChhYnNlbnQgJiYgIWhhc093bihwcm9wLCAn
ZGVmYXVsdCcpKSB7XG4gICAgICB2YWx1ZSA9IGZhbHNlO1xuICAgIH0gZWxzZSBpZiAodmFsdWUg
PT09ICcnIHx8IHZhbHVlID09PSBoeXBoZW5hdGUoa2V5KSkge1xuICAgICAgdmFsdWUgPSB0cnVl
O1xuICAgIH1cbiAgfVxuICAvLyBjaGVjayBkZWZhdWx0IHZhbHVlXG4gIGlmICh2YWx1ZSA9PT0g
dW5kZWZpbmVkKSB7XG4gICAgdmFsdWUgPSBnZXRQcm9wRGVmYXVsdFZhbHVlKHZtLCBwcm9wLCBr
ZXkpO1xuICAgIC8vIHNpbmNlIHRoZSBkZWZhdWx0IHZhbHVlIGlzIGEgZnJlc2ggY29weSxcbiAg
ICAvLyBtYWtlIHN1cmUgdG8gb2JzZXJ2ZSBpdC5cbiAgICB2YXIgcHJldlNob3VsZENvbnZlcnQg
PSBvYnNlcnZlclN0YXRlLnNob3VsZENvbnZlcnQ7XG4gICAgb2JzZXJ2ZXJTdGF0ZS5zaG91bGRD
b252ZXJ0ID0gdHJ1ZTtcbiAgICBvYnNlcnZlKHZhbHVlKTtcbiAgICBvYnNlcnZlclN0YXRlLnNo
b3VsZENvbnZlcnQgPSBwcmV2U2hvdWxkQ29udmVydDtcbiAgfVxuICBpZiAocHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGFzc2VydFByb3AocHJvcCwga2V5LCB2
YWx1ZSwgdm0sIGFic2VudCk7XG4gIH1cbiAgcmV0dXJuIHZhbHVlXG59XG5cbi8qKlxuICogR2V0
IHRoZSBkZWZhdWx0IHZhbHVlIG9mIGEgcHJvcC5cbiAqL1xuZnVuY3Rpb24gZ2V0UHJvcERlZmF1
bHRWYWx1ZSAodm0sIHByb3AsIGtleSkge1xuICAvLyBubyBkZWZhdWx0LCByZXR1cm4gdW5kZWZp
bmVkXG4gIGlmICghaGFzT3duKHByb3AsICdkZWZhdWx0JykpIHtcbiAgICByZXR1cm4gdW5kZWZp
bmVkXG4gIH1cbiAgdmFyIGRlZiA9IHByb3AuZGVmYXVsdDtcbiAgLy8gd2FybiBhZ2FpbnN0IG5v
bi1mYWN0b3J5IGRlZmF1bHRzIGZvciBPYmplY3QgJiBBcnJheVxuICBpZiAoaXNPYmplY3QoZGVm
KSkge1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgd2Fybihc
biAgICAgICdJbnZhbGlkIGRlZmF1bHQgdmFsdWUgZm9yIHByb3AgXCInICsga2V5ICsgJ1wiOiAn
ICtcbiAgICAgICdQcm9wcyB3aXRoIHR5cGUgT2JqZWN0L0FycmF5IG11c3QgdXNlIGEgZmFjdG9y
eSBmdW5jdGlvbiAnICtcbiAgICAgICd0byByZXR1cm4gdGhlIGRlZmF1bHQgdmFsdWUuJyxcbiAg
ICAgIHZtXG4gICAgKTtcbiAgfVxuICAvLyB0aGUgcmF3IHByb3AgdmFsdWUgd2FzIGFsc28gdW5k
ZWZpbmVkIGZyb20gcHJldmlvdXMgcmVuZGVyLFxuICAvLyByZXR1cm4gcHJldmlvdXMgZGVmYXVs
dCB2YWx1ZSB0byBhdm9pZCB1bm5lY2Vzc2FyeSB3YXRjaGVyIHRyaWdnZXJcbiAgaWYgKHZtICYm
IHZtLiRvcHRpb25zLnByb3BzRGF0YSAmJlxuICAgIHZtLiRvcHRpb25zLnByb3BzRGF0YVtrZXld
ID09PSB1bmRlZmluZWQgJiZcbiAgICB2bVtrZXldICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1
cm4gdm1ba2V5XVxuICB9XG4gIC8vIGNhbGwgZmFjdG9yeSBmdW5jdGlvbiBmb3Igbm9uLUZ1bmN0
aW9uIHR5cGVzXG4gIHJldHVybiB0eXBlb2YgZGVmID09PSAnZnVuY3Rpb24nICYmIHByb3AudHlw
ZSAhPT0gRnVuY3Rpb25cbiAgICA/IGRlZi5jYWxsKHZtKVxuICAgIDogZGVmXG59XG5cbi8qKlxu
ICogQXNzZXJ0IHdoZXRoZXIgYSBwcm9wIGlzIHZhbGlkLlxuICovXG5mdW5jdGlvbiBhc3NlcnRQ
cm9wIChcbiAgcHJvcCxcbiAgbmFtZSxcbiAgdmFsdWUsXG4gIHZtLFxuICBhYnNlbnRcbikge1xu
ICBpZiAocHJvcC5yZXF1aXJlZCAmJiBhYnNlbnQpIHtcbiAgICB3YXJuKFxuICAgICAgJ01pc3Np
bmcgcmVxdWlyZWQgcHJvcDogXCInICsgbmFtZSArICdcIicsXG4gICAgICB2bVxuICAgICk7XG4g
ICAgcmV0dXJuXG4gIH1cbiAgaWYgKHZhbHVlID09IG51bGwgJiYgIXByb3AucmVxdWlyZWQpIHtc
biAgICByZXR1cm5cbiAgfVxuICB2YXIgdHlwZSA9IHByb3AudHlwZTtcbiAgdmFyIHZhbGlkID0g
IXR5cGUgfHwgdHlwZSA9PT0gdHJ1ZTtcbiAgdmFyIGV4cGVjdGVkVHlwZXMgPSBbXTtcbiAgaWYg
KHR5cGUpIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodHlwZSkpIHtcbiAgICAgIHR5cGUgPSBb
dHlwZV07XG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdHlwZS5sZW5ndGggJiYgIXZh
bGlkOyBpKyspIHtcbiAgICAgIHZhciBhc3NlcnRlZFR5cGUgPSBhc3NlcnRUeXBlKHZhbHVlLCB0
eXBlW2ldKTtcbiAgICAgIGV4cGVjdGVkVHlwZXMucHVzaChhc3NlcnRlZFR5cGUuZXhwZWN0ZWRU
eXBlKTtcbiAgICAgIHZhbGlkID0gYXNzZXJ0ZWRUeXBlLnZhbGlkO1xuICAgIH1cbiAgfVxuICBp
ZiAoIXZhbGlkKSB7XG4gICAgd2FybihcbiAgICAgICdJbnZhbGlkIHByb3A6IHR5cGUgY2hlY2sg
ZmFpbGVkIGZvciBwcm9wIFwiJyArIG5hbWUgKyAnXCIuJyArXG4gICAgICAnIEV4cGVjdGVkICcg
KyBleHBlY3RlZFR5cGVzLm1hcChjYXBpdGFsaXplKS5qb2luKCcsICcpICtcbiAgICAgICcsIGdv
dCAnICsgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKS5zbGljZSg4LCAtMSkg
KyAnLicsXG4gICAgICB2bVxuICAgICk7XG4gICAgcmV0dXJuXG4gIH1cbiAgdmFyIHZhbGlkYXRv
ciA9IHByb3AudmFsaWRhdG9yO1xuICBpZiAodmFsaWRhdG9yKSB7XG4gICAgaWYgKCF2YWxpZGF0
b3IodmFsdWUpKSB7XG4gICAgICB3YXJuKFxuICAgICAgICAnSW52YWxpZCBwcm9wOiBjdXN0b20g
dmFsaWRhdG9yIGNoZWNrIGZhaWxlZCBmb3IgcHJvcCBcIicgKyBuYW1lICsgJ1wiLicsXG4gICAg
ICAgIHZtXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEFzc2VydCB0aGUgdHlw
ZSBvZiBhIHZhbHVlXG4gKi9cbmZ1bmN0aW9uIGFzc2VydFR5cGUgKHZhbHVlLCB0eXBlKSB7XG4g
IHZhciB2YWxpZDtcbiAgdmFyIGV4cGVjdGVkVHlwZSA9IGdldFR5cGUodHlwZSk7XG4gIGlmIChl
eHBlY3RlZFR5cGUgPT09ICdTdHJpbmcnKSB7XG4gICAgdmFsaWQgPSB0eXBlb2YgdmFsdWUgPT09
IChleHBlY3RlZFR5cGUgPSAnc3RyaW5nJyk7XG4gIH0gZWxzZSBpZiAoZXhwZWN0ZWRUeXBlID09
PSAnTnVtYmVyJykge1xuICAgIHZhbGlkID0gdHlwZW9mIHZhbHVlID09PSAoZXhwZWN0ZWRUeXBl
ID0gJ251bWJlcicpO1xuICB9IGVsc2UgaWYgKGV4cGVjdGVkVHlwZSA9PT0gJ0Jvb2xlYW4nKSB7
XG4gICAgdmFsaWQgPSB0eXBlb2YgdmFsdWUgPT09IChleHBlY3RlZFR5cGUgPSAnYm9vbGVhbicp
O1xuICB9IGVsc2UgaWYgKGV4cGVjdGVkVHlwZSA9PT0gJ0Z1bmN0aW9uJykge1xuICAgIHZhbGlk
ID0gdHlwZW9mIHZhbHVlID09PSAoZXhwZWN0ZWRUeXBlID0gJ2Z1bmN0aW9uJyk7XG4gIH0gZWxz
ZSBpZiAoZXhwZWN0ZWRUeXBlID09PSAnT2JqZWN0Jykge1xuICAgIHZhbGlkID0gaXNQbGFpbk9i
amVjdCh2YWx1ZSk7XG4gIH0gZWxzZSBpZiAoZXhwZWN0ZWRUeXBlID09PSAnQXJyYXknKSB7XG4g
ICAgdmFsaWQgPSBBcnJheS5pc0FycmF5KHZhbHVlKTtcbiAgfSBlbHNlIHtcbiAgICB2YWxpZCA9
IHZhbHVlIGluc3RhbmNlb2YgdHlwZTtcbiAgfVxuICByZXR1cm4ge1xuICAgIHZhbGlkOiB2YWxp
ZCxcbiAgICBleHBlY3RlZFR5cGU6IGV4cGVjdGVkVHlwZVxuICB9XG59XG5cbi8qKlxuICogVXNl
IGZ1bmN0aW9uIHN0cmluZyBuYW1lIHRvIGNoZWNrIGJ1aWx0LWluIHR5cGVzLFxuICogYmVjYXVz
ZSBhIHNpbXBsZSBlcXVhbGl0eSBjaGVjayB3aWxsIGZhaWwgd2hlbiBydW5uaW5nXG4gKiBhY3Jv
c3MgZGlmZmVyZW50IHZtcyAvIGlmcmFtZXMuXG4gKi9cbmZ1bmN0aW9uIGdldFR5cGUgKGZuKSB7
XG4gIHZhciBtYXRjaCA9IGZuICYmIGZuLnRvU3RyaW5nKCkubWF0Y2goL15cXHMqZnVuY3Rpb24g
KFxcdyspLyk7XG4gIHJldHVybiBtYXRjaCAmJiBtYXRjaFsxXVxufVxuXG5mdW5jdGlvbiBpc0Jv
b2xlYW5UeXBlIChmbikge1xuICBpZiAoIUFycmF5LmlzQXJyYXkoZm4pKSB7XG4gICAgcmV0dXJu
IGdldFR5cGUoZm4pID09PSAnQm9vbGVhbidcbiAgfVxuICBmb3IgKHZhciBpID0gMCwgbGVuID0g
Zm4ubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBpZiAoZ2V0VHlwZShmbltpXSkgPT09ICdC
b29sZWFuJykge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gIH1cbiAgLyogaXN0YW5idWwg
aWdub3JlIG5leHQgKi9cbiAgcmV0dXJuIGZhbHNlXG59XG5cblxuXG52YXIgdXRpbCA9IE9iamVj
dC5mcmVlemUoe1xuXHRkZWZpbmVSZWFjdGl2ZTogZGVmaW5lUmVhY3RpdmUkJDEsXG5cdF90b1N0
cmluZzogX3RvU3RyaW5nLFxuXHR0b051bWJlcjogdG9OdW1iZXIsXG5cdG1ha2VNYXA6IG1ha2VN
YXAsXG5cdGlzQnVpbHRJblRhZzogaXNCdWlsdEluVGFnLFxuXHRyZW1vdmU6IHJlbW92ZSQxLFxu
XHRoYXNPd246IGhhc093bixcblx0aXNQcmltaXRpdmU6IGlzUHJpbWl0aXZlLFxuXHRjYWNoZWQ6
IGNhY2hlZCxcblx0Y2FtZWxpemU6IGNhbWVsaXplLFxuXHRjYXBpdGFsaXplOiBjYXBpdGFsaXpl
LFxuXHRoeXBoZW5hdGU6IGh5cGhlbmF0ZSxcblx0YmluZDogYmluZCQxLFxuXHR0b0FycmF5OiB0
b0FycmF5LFxuXHRleHRlbmQ6IGV4dGVuZCxcblx0aXNPYmplY3Q6IGlzT2JqZWN0LFxuXHRpc1Bs
YWluT2JqZWN0OiBpc1BsYWluT2JqZWN0LFxuXHR0b09iamVjdDogdG9PYmplY3QsXG5cdG5vb3A6
IG5vb3AsXG5cdG5vOiBubyxcblx0Z2VuU3RhdGljS2V5czogZ2VuU3RhdGljS2V5cyxcblx0bG9v
c2VFcXVhbDogbG9vc2VFcXVhbCxcblx0bG9vc2VJbmRleE9mOiBsb29zZUluZGV4T2YsXG5cdGlz
UmVzZXJ2ZWQ6IGlzUmVzZXJ2ZWQsXG5cdGRlZjogZGVmLFxuXHRwYXJzZVBhdGg6IHBhcnNlUGF0
aCxcblx0aGFzUHJvdG86IGhhc1Byb3RvLFxuXHRpbkJyb3dzZXI6IGluQnJvd3Nlcixcblx0VUE6
IFVBLFxuXHRpc0lFOiBpc0lFLFxuXHRpc0lFOTogaXNJRTksXG5cdGlzRWRnZTogaXNFZGdlLFxu
XHRpc0FuZHJvaWQ6IGlzQW5kcm9pZCxcblx0aXNJT1M6IGlzSU9TLFxuXHRpc1NlcnZlclJlbmRl
cmluZzogaXNTZXJ2ZXJSZW5kZXJpbmcsXG5cdGRldnRvb2xzOiBkZXZ0b29scyxcblx0bmV4dFRp
Y2s6IG5leHRUaWNrLFxuXHRnZXQgX1NldCAoKSB7IHJldHVybiBfU2V0OyB9LFxuXHRtZXJnZU9w
dGlvbnM6IG1lcmdlT3B0aW9ucyxcblx0cmVzb2x2ZUFzc2V0OiByZXNvbHZlQXNzZXQsXG5cdGdl
dCB3YXJuICgpIHsgcmV0dXJuIHdhcm47IH0sXG5cdGdldCBmb3JtYXRDb21wb25lbnROYW1lICgp
IHsgcmV0dXJuIGZvcm1hdENvbXBvbmVudE5hbWU7IH0sXG5cdHZhbGlkYXRlUHJvcDogdmFsaWRh
dGVQcm9wXG59KTtcblxuLyogbm90IHR5cGUgY2hlY2tpbmcgdGhpcyBmaWxlIGJlY2F1c2UgZmxv
dyBkb2Vzbid0IHBsYXkgd2VsbCB3aXRoIFByb3h5ICovXG5cbnZhciBpbml0UHJveHk7XG5cbmlm
IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBhbGxvd2Vk
R2xvYmFscyA9IG1ha2VNYXAoXG4gICAgJ0luZmluaXR5LHVuZGVmaW5lZCxOYU4saXNGaW5pdGUs
aXNOYU4sJyArXG4gICAgJ3BhcnNlRmxvYXQscGFyc2VJbnQsZGVjb2RlVVJJLGRlY29kZVVSSUNv
bXBvbmVudCxlbmNvZGVVUkksZW5jb2RlVVJJQ29tcG9uZW50LCcgK1xuICAgICdNYXRoLE51bWJl
cixEYXRlLEFycmF5LE9iamVjdCxCb29sZWFuLFN0cmluZyxSZWdFeHAsTWFwLFNldCxKU09OLElu
dGwsJyArXG4gICAgJ3JlcXVpcmUnIC8vIGZvciBXZWJwYWNrL0Jyb3dzZXJpZnlcbiAgKTtcblxu
ICB2YXIgd2Fybk5vblByZXNlbnQgPSBmdW5jdGlvbiAodGFyZ2V0LCBrZXkpIHtcbiAgICB3YXJu
KFxuICAgICAgXCJQcm9wZXJ0eSBvciBtZXRob2QgXFxcIlwiICsga2V5ICsgXCJcXFwiIGlzIG5v
dCBkZWZpbmVkIG9uIHRoZSBpbnN0YW5jZSBidXQgXCIgK1xuICAgICAgXCJyZWZlcmVuY2VkIGR1
cmluZyByZW5kZXIuIE1ha2Ugc3VyZSB0byBkZWNsYXJlIHJlYWN0aXZlIGRhdGEgXCIgK1xuICAg
ICAgXCJwcm9wZXJ0aWVzIGluIHRoZSBkYXRhIG9wdGlvbi5cIixcbiAgICAgIHRhcmdldFxuICAg
ICk7XG4gIH07XG5cbiAgdmFyIGhhc1Byb3h5ID1cbiAgICB0eXBlb2YgUHJveHkgIT09ICd1bmRl
ZmluZWQnICYmXG4gICAgUHJveHkudG9TdHJpbmcoKS5tYXRjaCgvbmF0aXZlIGNvZGUvKTtcblxu
ICB2YXIgaGFzSGFuZGxlciA9IHtcbiAgICBoYXM6IGZ1bmN0aW9uIGhhcyAodGFyZ2V0LCBrZXkp
IHtcbiAgICAgIHZhciBoYXMgPSBrZXkgaW4gdGFyZ2V0O1xuICAgICAgdmFyIGlzQWxsb3dlZCA9
IGFsbG93ZWRHbG9iYWxzKGtleSkgfHwga2V5LmNoYXJBdCgwKSA9PT0gJ18nO1xuICAgICAgaWYg
KCFoYXMgJiYgIWlzQWxsb3dlZCkge1xuICAgICAgICB3YXJuTm9uUHJlc2VudCh0YXJnZXQsIGtl
eSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gaGFzIHx8ICFpc0FsbG93ZWRcbiAgICB9XG4gIH07
XG5cbiAgdmFyIGdldEhhbmRsZXIgPSB7XG4gICAgZ2V0OiBmdW5jdGlvbiBnZXQgKHRhcmdldCwg
a2V5KSB7XG4gICAgICBpZiAodHlwZW9mIGtleSA9PT0gJ3N0cmluZycgJiYgIShrZXkgaW4gdGFy
Z2V0KSkge1xuICAgICAgICB3YXJuTm9uUHJlc2VudCh0YXJnZXQsIGtleSk7XG4gICAgICB9XG4g
ICAgICByZXR1cm4gdGFyZ2V0W2tleV1cbiAgICB9XG4gIH07XG5cbiAgaW5pdFByb3h5ID0gZnVu
Y3Rpb24gaW5pdFByb3h5ICh2bSkge1xuICAgIGlmIChoYXNQcm94eSkge1xuICAgICAgLy8gZGV0
ZXJtaW5lIHdoaWNoIHByb3h5IGhhbmRsZXIgdG8gdXNlXG4gICAgICB2YXIgb3B0aW9ucyA9IHZt
LiRvcHRpb25zO1xuICAgICAgdmFyIGhhbmRsZXJzID0gb3B0aW9ucy5yZW5kZXIgJiYgb3B0aW9u
cy5yZW5kZXIuX3dpdGhTdHJpcHBlZFxuICAgICAgICA/IGdldEhhbmRsZXJcbiAgICAgICAgOiBo
YXNIYW5kbGVyO1xuICAgICAgdm0uX3JlbmRlclByb3h5ID0gbmV3IFByb3h5KHZtLCBoYW5kbGVy
cyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZtLl9yZW5kZXJQcm94eSA9IHZtO1xuICAgIH1cbiAg
fTtcbn1cblxuLyogICovXG5cblxudmFyIHF1ZXVlID0gW107XG52YXIgaGFzJDEgPSB7fTtcbnZh
ciBjaXJjdWxhciA9IHt9O1xudmFyIHdhaXRpbmcgPSBmYWxzZTtcbnZhciBmbHVzaGluZyA9IGZh
bHNlO1xudmFyIGluZGV4ID0gMDtcblxuLyoqXG4gKiBSZXNldCB0aGUgc2NoZWR1bGVyJ3Mgc3Rh
dGUuXG4gKi9cbmZ1bmN0aW9uIHJlc2V0U2NoZWR1bGVyU3RhdGUgKCkge1xuICBxdWV1ZS5sZW5n
dGggPSAwO1xuICBoYXMkMSA9IHt9O1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJykge1xuICAgIGNpcmN1bGFyID0ge307XG4gIH1cbiAgd2FpdGluZyA9IGZsdXNo
aW5nID0gZmFsc2U7XG59XG5cbi8qKlxuICogRmx1c2ggYm90aCBxdWV1ZXMgYW5kIHJ1biB0aGUg
d2F0Y2hlcnMuXG4gKi9cbmZ1bmN0aW9uIGZsdXNoU2NoZWR1bGVyUXVldWUgKCkge1xuICBmbHVz
aGluZyA9IHRydWU7XG5cbiAgLy8gU29ydCBxdWV1ZSBiZWZvcmUgZmx1c2guXG4gIC8vIFRoaXMg
ZW5zdXJlcyB0aGF0OlxuICAvLyAxLiBDb21wb25lbnRzIGFyZSB1cGRhdGVkIGZyb20gcGFyZW50
IHRvIGNoaWxkLiAoYmVjYXVzZSBwYXJlbnQgaXMgYWx3YXlzXG4gIC8vICAgIGNyZWF0ZWQgYmVm
b3JlIHRoZSBjaGlsZClcbiAgLy8gMi4gQSBjb21wb25lbnQncyB1c2VyIHdhdGNoZXJzIGFyZSBy
dW4gYmVmb3JlIGl0cyByZW5kZXIgd2F0Y2hlciAoYmVjYXVzZVxuICAvLyAgICB1c2VyIHdhdGNo
ZXJzIGFyZSBjcmVhdGVkIGJlZm9yZSB0aGUgcmVuZGVyIHdhdGNoZXIpXG4gIC8vIDMuIElmIGEg
Y29tcG9uZW50IGlzIGRlc3Ryb3llZCBkdXJpbmcgYSBwYXJlbnQgY29tcG9uZW50J3Mgd2F0Y2hl
ciBydW4sXG4gIC8vICAgIGl0cyB3YXRjaGVycyBjYW4gYmUgc2tpcHBlZC5cbiAgcXVldWUuc29y
dChmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYS5pZCAtIGIuaWQ7IH0pO1xuXG4gIC8vIGRvIG5v
dCBjYWNoZSBsZW5ndGggYmVjYXVzZSBtb3JlIHdhdGNoZXJzIG1pZ2h0IGJlIHB1c2hlZFxuICAv
LyBhcyB3ZSBydW4gZXhpc3Rpbmcgd2F0Y2hlcnNcbiAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwg
cXVldWUubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgdmFyIHdhdGNoZXIgPSBxdWV1ZVtpbmRleF07
XG4gICAgdmFyIGlkID0gd2F0Y2hlci5pZDtcbiAgICBoYXMkMVtpZF0gPSBudWxsO1xuICAgIHdh
dGNoZXIucnVuKCk7XG4gICAgLy8gaW4gZGV2IGJ1aWxkLCBjaGVjayBhbmQgc3RvcCBjaXJjdWxh
ciB1cGRhdGVzLlxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24n
ICYmIGhhcyQxW2lkXSAhPSBudWxsKSB7XG4gICAgICBjaXJjdWxhcltpZF0gPSAoY2lyY3VsYXJb
aWRdIHx8IDApICsgMTtcbiAgICAgIGlmIChjaXJjdWxhcltpZF0gPiBjb25maWcuX21heFVwZGF0
ZUNvdW50KSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgJ1lvdSBtYXkgaGF2ZSBhbiBpbmZp
bml0ZSB1cGRhdGUgbG9vcCAnICsgKFxuICAgICAgICAgICAgd2F0Y2hlci51c2VyXG4gICAgICAg
ICAgICAgID8gKFwiaW4gd2F0Y2hlciB3aXRoIGV4cHJlc3Npb24gXFxcIlwiICsgKHdhdGNoZXIu
ZXhwcmVzc2lvbikgKyBcIlxcXCJcIilcbiAgICAgICAgICAgICAgOiBcImluIGEgY29tcG9uZW50
IHJlbmRlciBmdW5jdGlvbi5cIlxuICAgICAgICAgICksXG4gICAgICAgICAgd2F0Y2hlci52bVxu
ICAgICAgICApO1xuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIGRl
dnRvb2wgaG9va1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKGRldnRvb2xzICYm
IGNvbmZpZy5kZXZ0b29scykge1xuICAgIGRldnRvb2xzLmVtaXQoJ2ZsdXNoJyk7XG4gIH1cblxu
ICByZXNldFNjaGVkdWxlclN0YXRlKCk7XG59XG5cbi8qKlxuICogUHVzaCBhIHdhdGNoZXIgaW50
byB0aGUgd2F0Y2hlciBxdWV1ZS5cbiAqIEpvYnMgd2l0aCBkdXBsaWNhdGUgSURzIHdpbGwgYmUg
c2tpcHBlZCB1bmxlc3MgaXQnc1xuICogcHVzaGVkIHdoZW4gdGhlIHF1ZXVlIGlzIGJlaW5nIGZs
dXNoZWQuXG4gKi9cbmZ1bmN0aW9uIHF1ZXVlV2F0Y2hlciAod2F0Y2hlcikge1xuICB2YXIgaWQg
PSB3YXRjaGVyLmlkO1xuICBpZiAoaGFzJDFbaWRdID09IG51bGwpIHtcbiAgICBoYXMkMVtpZF0g
PSB0cnVlO1xuICAgIGlmICghZmx1c2hpbmcpIHtcbiAgICAgIHF1ZXVlLnB1c2god2F0Y2hlcik7
XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGlmIGFscmVhZHkgZmx1c2hpbmcsIHNwbGljZSB0aGUg
d2F0Y2hlciBiYXNlZCBvbiBpdHMgaWRcbiAgICAgIC8vIGlmIGFscmVhZHkgcGFzdCBpdHMgaWQs
IGl0IHdpbGwgYmUgcnVuIG5leHQgaW1tZWRpYXRlbHkuXG4gICAgICB2YXIgaSA9IHF1ZXVlLmxl
bmd0aCAtIDE7XG4gICAgICB3aGlsZSAoaSA+PSAwICYmIHF1ZXVlW2ldLmlkID4gd2F0Y2hlci5p
ZCkge1xuICAgICAgICBpLS07XG4gICAgICB9XG4gICAgICBxdWV1ZS5zcGxpY2UoTWF0aC5tYXgo
aSwgaW5kZXgpICsgMSwgMCwgd2F0Y2hlcik7XG4gICAgfVxuICAgIC8vIHF1ZXVlIHRoZSBmbHVz
aFxuICAgIGlmICghd2FpdGluZykge1xuICAgICAgd2FpdGluZyA9IHRydWU7XG4gICAgICBuZXh0
VGljayhmbHVzaFNjaGVkdWxlclF1ZXVlKTtcbiAgICB9XG4gIH1cbn1cblxuLyogICovXG5cbnZh
ciB1aWQkMiA9IDA7XG5cbi8qKlxuICogQSB3YXRjaGVyIHBhcnNlcyBhbiBleHByZXNzaW9uLCBj
b2xsZWN0cyBkZXBlbmRlbmNpZXMsXG4gKiBhbmQgZmlyZXMgY2FsbGJhY2sgd2hlbiB0aGUgZXhw
cmVzc2lvbiB2YWx1ZSBjaGFuZ2VzLlxuICogVGhpcyBpcyB1c2VkIGZvciBib3RoIHRoZSAkd2F0
Y2goKSBhcGkgYW5kIGRpcmVjdGl2ZXMuXG4gKi9cbnZhciBXYXRjaGVyID0gZnVuY3Rpb24gV2F0
Y2hlciAoXG4gIHZtLFxuICBleHBPckZuLFxuICBjYixcbiAgb3B0aW9uc1xuKSB7XG4gIGlmICgg
b3B0aW9ucyA9PT0gdm9pZCAwICkgb3B0aW9ucyA9IHt9O1xuXG4gIHRoaXMudm0gPSB2bTtcbiAg
dm0uX3dhdGNoZXJzLnB1c2godGhpcyk7XG4gIC8vIG9wdGlvbnNcbiAgdGhpcy5kZWVwID0gISFv
cHRpb25zLmRlZXA7XG4gIHRoaXMudXNlciA9ICEhb3B0aW9ucy51c2VyO1xuICB0aGlzLmxhenkg
PSAhIW9wdGlvbnMubGF6eTtcbiAgdGhpcy5zeW5jID0gISFvcHRpb25zLnN5bmM7XG4gIHRoaXMu
ZXhwcmVzc2lvbiA9IGV4cE9yRm4udG9TdHJpbmcoKTtcbiAgdGhpcy5jYiA9IGNiO1xuICB0aGlz
LmlkID0gKyt1aWQkMjsgLy8gdWlkIGZvciBiYXRjaGluZ1xuICB0aGlzLmFjdGl2ZSA9IHRydWU7
XG4gIHRoaXMuZGlydHkgPSB0aGlzLmxhenk7IC8vIGZvciBsYXp5IHdhdGNoZXJzXG4gIHRoaXMu
ZGVwcyA9IFtdO1xuICB0aGlzLm5ld0RlcHMgPSBbXTtcbiAgdGhpcy5kZXBJZHMgPSBuZXcgX1Nl
dCgpO1xuICB0aGlzLm5ld0RlcElkcyA9IG5ldyBfU2V0KCk7XG4gIC8vIHBhcnNlIGV4cHJlc3Np
b24gZm9yIGdldHRlclxuICBpZiAodHlwZW9mIGV4cE9yRm4gPT09ICdmdW5jdGlvbicpIHtcbiAg
ICB0aGlzLmdldHRlciA9IGV4cE9yRm47XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5nZXR0ZXIgPSBw
YXJzZVBhdGgoZXhwT3JGbik7XG4gICAgaWYgKCF0aGlzLmdldHRlcikge1xuICAgICAgdGhpcy5n
ZXR0ZXIgPSBmdW5jdGlvbiAoKSB7fTtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicgJiYgd2FybihcbiAgICAgICAgXCJGYWlsZWQgd2F0Y2hpbmcgcGF0aDogXFxc
IlwiICsgZXhwT3JGbiArIFwiXFxcIiBcIiArXG4gICAgICAgICdXYXRjaGVyIG9ubHkgYWNjZXB0
cyBzaW1wbGUgZG90LWRlbGltaXRlZCBwYXRocy4gJyArXG4gICAgICAgICdGb3IgZnVsbCBjb250
cm9sLCB1c2UgYSBmdW5jdGlvbiBpbnN0ZWFkLicsXG4gICAgICAgIHZtXG4gICAgICApO1xuICAg
IH1cbiAgfVxuICB0aGlzLnZhbHVlID0gdGhpcy5sYXp5XG4gICAgPyB1bmRlZmluZWRcbiAgICA6
IHRoaXMuZ2V0KCk7XG59O1xuXG4vKipcbiAqIEV2YWx1YXRlIHRoZSBnZXR0ZXIsIGFuZCByZS1j
b2xsZWN0IGRlcGVuZGVuY2llcy5cbiAqL1xuV2F0Y2hlci5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rp
b24gZ2V0ICgpIHtcbiAgcHVzaFRhcmdldCh0aGlzKTtcbiAgdmFyIHZhbHVlID0gdGhpcy5nZXR0
ZXIuY2FsbCh0aGlzLnZtLCB0aGlzLnZtKTtcbiAgLy8gXCJ0b3VjaFwiIGV2ZXJ5IHByb3BlcnR5
IHNvIHRoZXkgYXJlIGFsbCB0cmFja2VkIGFzXG4gIC8vIGRlcGVuZGVuY2llcyBmb3IgZGVlcCB3
YXRjaGluZ1xuICBpZiAodGhpcy5kZWVwKSB7XG4gICAgdHJhdmVyc2UodmFsdWUpO1xuICB9XG4g
IHBvcFRhcmdldCgpO1xuICB0aGlzLmNsZWFudXBEZXBzKCk7XG4gIHJldHVybiB2YWx1ZVxufTtc
blxuLyoqXG4gKiBBZGQgYSBkZXBlbmRlbmN5IHRvIHRoaXMgZGlyZWN0aXZlLlxuICovXG5XYXRj
aGVyLnByb3RvdHlwZS5hZGREZXAgPSBmdW5jdGlvbiBhZGREZXAgKGRlcCkge1xuICB2YXIgaWQg
PSBkZXAuaWQ7XG4gIGlmICghdGhpcy5uZXdEZXBJZHMuaGFzKGlkKSkge1xuICAgIHRoaXMubmV3
RGVwSWRzLmFkZChpZCk7XG4gICAgdGhpcy5uZXdEZXBzLnB1c2goZGVwKTtcbiAgICBpZiAoIXRo
aXMuZGVwSWRzLmhhcyhpZCkpIHtcbiAgICAgIGRlcC5hZGRTdWIodGhpcyk7XG4gICAgfVxuICB9
XG59O1xuXG4vKipcbiAqIENsZWFuIHVwIGZvciBkZXBlbmRlbmN5IGNvbGxlY3Rpb24uXG4gKi9c
bldhdGNoZXIucHJvdG90eXBlLmNsZWFudXBEZXBzID0gZnVuY3Rpb24gY2xlYW51cERlcHMgKCkg
e1xuICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gIHZhciBpID0gdGhpcy5kZXBzLmxlbmd0aDtc
biAgd2hpbGUgKGktLSkge1xuICAgIHZhciBkZXAgPSB0aGlzJDEuZGVwc1tpXTtcbiAgICBpZiAo
IXRoaXMkMS5uZXdEZXBJZHMuaGFzKGRlcC5pZCkpIHtcbiAgICAgIGRlcC5yZW1vdmVTdWIodGhp
cyQxKTtcbiAgICB9XG4gIH1cbiAgdmFyIHRtcCA9IHRoaXMuZGVwSWRzO1xuICB0aGlzLmRlcElk
cyA9IHRoaXMubmV3RGVwSWRzO1xuICB0aGlzLm5ld0RlcElkcyA9IHRtcDtcbiAgdGhpcy5uZXdE
ZXBJZHMuY2xlYXIoKTtcbiAgdG1wID0gdGhpcy5kZXBzO1xuICB0aGlzLmRlcHMgPSB0aGlzLm5l
d0RlcHM7XG4gIHRoaXMubmV3RGVwcyA9IHRtcDtcbiAgdGhpcy5uZXdEZXBzLmxlbmd0aCA9IDA7
XG59O1xuXG4vKipcbiAqIFN1YnNjcmliZXIgaW50ZXJmYWNlLlxuICogV2lsbCBiZSBjYWxsZWQg
d2hlbiBhIGRlcGVuZGVuY3kgY2hhbmdlcy5cbiAqL1xuV2F0Y2hlci5wcm90b3R5cGUudXBkYXRl
ID0gZnVuY3Rpb24gdXBkYXRlICgpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAg
aWYgKHRoaXMubGF6eSkge1xuICAgIHRoaXMuZGlydHkgPSB0cnVlO1xuICB9IGVsc2UgaWYgKHRo
aXMuc3luYykge1xuICAgIHRoaXMucnVuKCk7XG4gIH0gZWxzZSB7XG4gICAgcXVldWVXYXRjaGVy
KHRoaXMpO1xuICB9XG59O1xuXG4vKipcbiAqIFNjaGVkdWxlciBqb2IgaW50ZXJmYWNlLlxuICog
V2lsbCBiZSBjYWxsZWQgYnkgdGhlIHNjaGVkdWxlci5cbiAqL1xuV2F0Y2hlci5wcm90b3R5cGUu
cnVuID0gZnVuY3Rpb24gcnVuICgpIHtcbiAgaWYgKHRoaXMuYWN0aXZlKSB7XG4gICAgdmFyIHZh
bHVlID0gdGhpcy5nZXQoKTtcbiAgICAgIGlmIChcbiAgICAgICAgdmFsdWUgIT09IHRoaXMudmFs
dWUgfHxcbiAgICAgIC8vIERlZXAgd2F0Y2hlcnMgYW5kIHdhdGNoZXJzIG9uIE9iamVjdC9BcnJh
eXMgc2hvdWxkIGZpcmUgZXZlblxuICAgICAgLy8gd2hlbiB0aGUgdmFsdWUgaXMgdGhlIHNhbWUs
IGJlY2F1c2UgdGhlIHZhbHVlIG1heVxuICAgICAgLy8gaGF2ZSBtdXRhdGVkLlxuICAgICAgaXNP
YmplY3QodmFsdWUpIHx8XG4gICAgICB0aGlzLmRlZXBcbiAgICApIHtcbiAgICAgIC8vIHNldCBu
ZXcgdmFsdWVcbiAgICAgIHZhciBvbGRWYWx1ZSA9IHRoaXMudmFsdWU7XG4gICAgICB0aGlzLnZh
bHVlID0gdmFsdWU7XG4gICAgICBpZiAodGhpcy51c2VyKSB7XG4gICAgICAgIHRyeSB7XG4gICAg
ICAgICAgdGhpcy5jYi5jYWxsKHRoaXMudm0sIHZhbHVlLCBvbGRWYWx1ZSk7XG4gICAgICAgIH0g
Y2F0Y2ggKGUpIHtcbiAgICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nICYmIHdhcm4oXG4gICAgICAgICAgICAoXCJFcnJvciBpbiB3YXRjaGVyIFxcXCJcIiArICh0
aGlzLmV4cHJlc3Npb24pICsgXCJcXFwiXCIpLFxuICAgICAgICAgICAgdGhpcy52bVxuICAgICAg
ICAgICk7XG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgICBp
ZiAoY29uZmlnLmVycm9ySGFuZGxlcikge1xuICAgICAgICAgICAgY29uZmlnLmVycm9ySGFuZGxl
ci5jYWxsKG51bGwsIGUsIHRoaXMudm0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAg
ICB0aHJvdyBlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAg
ICB0aGlzLmNiLmNhbGwodGhpcy52bSwgdmFsdWUsIG9sZFZhbHVlKTtcbiAgICAgIH1cbiAgICB9
XG4gIH1cbn07XG5cbi8qKlxuICogRXZhbHVhdGUgdGhlIHZhbHVlIG9mIHRoZSB3YXRjaGVyLlxu
ICogVGhpcyBvbmx5IGdldHMgY2FsbGVkIGZvciBsYXp5IHdhdGNoZXJzLlxuICovXG5XYXRjaGVy
LnByb3RvdHlwZS5ldmFsdWF0ZSA9IGZ1bmN0aW9uIGV2YWx1YXRlICgpIHtcbiAgdGhpcy52YWx1
ZSA9IHRoaXMuZ2V0KCk7XG4gIHRoaXMuZGlydHkgPSBmYWxzZTtcbn07XG5cbi8qKlxuICogRGVw
ZW5kIG9uIGFsbCBkZXBzIGNvbGxlY3RlZCBieSB0aGlzIHdhdGNoZXIuXG4gKi9cbldhdGNoZXIu
cHJvdG90eXBlLmRlcGVuZCA9IGZ1bmN0aW9uIGRlcGVuZCAoKSB7XG4gICAgdmFyIHRoaXMkMSA9
IHRoaXM7XG5cbiAgdmFyIGkgPSB0aGlzLmRlcHMubGVuZ3RoO1xuICB3aGlsZSAoaS0tKSB7XG4g
ICAgdGhpcyQxLmRlcHNbaV0uZGVwZW5kKCk7XG4gIH1cbn07XG5cbi8qKlxuICogUmVtb3ZlIHNl
bGYgZnJvbSBhbGwgZGVwZW5kZW5jaWVzJyBzdWJzY3JpYmVyIGxpc3QuXG4gKi9cbldhdGNoZXIu
cHJvdG90eXBlLnRlYXJkb3duID0gZnVuY3Rpb24gdGVhcmRvd24gKCkge1xuICAgIHZhciB0aGlz
JDEgPSB0aGlzO1xuXG4gIGlmICh0aGlzLmFjdGl2ZSkge1xuICAgIC8vIHJlbW92ZSBzZWxmIGZy
b20gdm0ncyB3YXRjaGVyIGxpc3RcbiAgICAvLyB0aGlzIGlzIGEgc29tZXdoYXQgZXhwZW5zaXZl
IG9wZXJhdGlvbiBzbyB3ZSBza2lwIGl0XG4gICAgLy8gaWYgdGhlIHZtIGlzIGJlaW5nIGRlc3Ry
b3llZCBvciBpcyBwZXJmb3JtaW5nIGEgdi1mb3JcbiAgICAvLyByZS1yZW5kZXIgKHRoZSB3YXRj
aGVyIGxpc3QgaXMgdGhlbiBmaWx0ZXJlZCBieSB2LWZvcikuXG4gICAgaWYgKCF0aGlzLnZtLl9p
c0JlaW5nRGVzdHJveWVkICYmICF0aGlzLnZtLl92Rm9yUmVtb3ZpbmcpIHtcbiAgICAgIHJlbW92
ZSQxKHRoaXMudm0uX3dhdGNoZXJzLCB0aGlzKTtcbiAgICB9XG4gICAgdmFyIGkgPSB0aGlzLmRl
cHMubGVuZ3RoO1xuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgIHRoaXMkMS5kZXBzW2ldLnJlbW92
ZVN1Yih0aGlzJDEpO1xuICAgIH1cbiAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xuICB9XG59O1xu
XG4vKipcbiAqIFJlY3Vyc2l2ZWx5IHRyYXZlcnNlIGFuIG9iamVjdCB0byBldm9rZSBhbGwgY29u
dmVydGVkXG4gKiBnZXR0ZXJzLCBzbyB0aGF0IGV2ZXJ5IG5lc3RlZCBwcm9wZXJ0eSBpbnNpZGUg
dGhlIG9iamVjdFxuICogaXMgY29sbGVjdGVkIGFzIGEgXCJkZWVwXCIgZGVwZW5kZW5jeS5cbiAq
L1xudmFyIHNlZW5PYmplY3RzID0gbmV3IF9TZXQoKTtcbmZ1bmN0aW9uIHRyYXZlcnNlICh2YWwp
IHtcbiAgc2Vlbk9iamVjdHMuY2xlYXIoKTtcbiAgX3RyYXZlcnNlKHZhbCwgc2Vlbk9iamVjdHMp
O1xufVxuXG5mdW5jdGlvbiBfdHJhdmVyc2UgKHZhbCwgc2Vlbikge1xuICB2YXIgaSwga2V5cztc
biAgdmFyIGlzQSA9IEFycmF5LmlzQXJyYXkodmFsKTtcbiAgaWYgKCghaXNBICYmICFpc09iamVj
dCh2YWwpKSB8fCAhT2JqZWN0LmlzRXh0ZW5zaWJsZSh2YWwpKSB7XG4gICAgcmV0dXJuXG4gIH1c
biAgaWYgKHZhbC5fX29iX18pIHtcbiAgICB2YXIgZGVwSWQgPSB2YWwuX19vYl9fLmRlcC5pZDtc
biAgICBpZiAoc2Vlbi5oYXMoZGVwSWQpKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgc2Vl
bi5hZGQoZGVwSWQpO1xuICB9XG4gIGlmIChpc0EpIHtcbiAgICBpID0gdmFsLmxlbmd0aDtcbiAg
ICB3aGlsZSAoaS0tKSB7IF90cmF2ZXJzZSh2YWxbaV0sIHNlZW4pOyB9XG4gIH0gZWxzZSB7XG4g
ICAga2V5cyA9IE9iamVjdC5rZXlzKHZhbCk7XG4gICAgaSA9IGtleXMubGVuZ3RoO1xuICAgIHdo
aWxlIChpLS0pIHsgX3RyYXZlcnNlKHZhbFtrZXlzW2ldXSwgc2Vlbik7IH1cbiAgfVxufVxuXG4v
KiAgKi9cblxuZnVuY3Rpb24gaW5pdFN0YXRlICh2bSkge1xuICB2bS5fd2F0Y2hlcnMgPSBbXTtc
biAgaW5pdFByb3BzKHZtKTtcbiAgaW5pdERhdGEodm0pO1xuICBpbml0Q29tcHV0ZWQodm0pO1xu
ICBpbml0TWV0aG9kcyh2bSk7XG4gIGluaXRXYXRjaCh2bSk7XG59XG5cbnZhciBpc1Jlc2VydmVk
UHJvcCA9IG1ha2VNYXAoJ2tleSxyZWYsc2xvdCcpO1xuXG5mdW5jdGlvbiBpbml0UHJvcHMgKHZt
KSB7XG4gIHZhciBwcm9wcyA9IHZtLiRvcHRpb25zLnByb3BzO1xuICBpZiAocHJvcHMpIHtcbiAg
ICB2YXIgcHJvcHNEYXRhID0gdm0uJG9wdGlvbnMucHJvcHNEYXRhIHx8IHt9O1xuICAgIHZhciBr
ZXlzID0gdm0uJG9wdGlvbnMuX3Byb3BLZXlzID0gT2JqZWN0LmtleXMocHJvcHMpO1xuICAgIHZh
ciBpc1Jvb3QgPSAhdm0uJHBhcmVudDtcbiAgICAvLyByb290IGluc3RhbmNlIHByb3BzIHNob3Vs
ZCBiZSBjb252ZXJ0ZWRcbiAgICBvYnNlcnZlclN0YXRlLnNob3VsZENvbnZlcnQgPSBpc1Jvb3Q7
XG4gICAgdmFyIGxvb3AgPSBmdW5jdGlvbiAoIGkgKSB7XG4gICAgICB2YXIga2V5ID0ga2V5c1tp
XTtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAocHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBpZiAoaXNSZXNlcnZlZFBy
b3Aoa2V5KSkge1xuICAgICAgICAgIHdhcm4oXG4gICAgICAgICAgICAoXCJcXFwiXCIgKyBrZXkg
KyBcIlxcXCIgaXMgYSByZXNlcnZlZCBhdHRyaWJ1dGUgYW5kIGNhbm5vdCBiZSB1c2VkIGFzIGNv
bXBvbmVudCBwcm9wLlwiKSxcbiAgICAgICAgICAgIHZtXG4gICAgICAgICAgKTtcbiAgICAgICAg
fVxuICAgICAgICBkZWZpbmVSZWFjdGl2ZSQkMSh2bSwga2V5LCB2YWxpZGF0ZVByb3Aoa2V5LCBw
cm9wcywgcHJvcHNEYXRhLCB2bSksIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBpZiAodm0uJHBh
cmVudCAmJiAhb2JzZXJ2ZXJTdGF0ZS5pc1NldHRpbmdQcm9wcykge1xuICAgICAgICAgICAgd2Fy
bihcbiAgICAgICAgICAgICAgXCJBdm9pZCBtdXRhdGluZyBhIHByb3AgZGlyZWN0bHkgc2luY2Ug
dGhlIHZhbHVlIHdpbGwgYmUgXCIgK1xuICAgICAgICAgICAgICBcIm92ZXJ3cml0dGVuIHdoZW5l
dmVyIHRoZSBwYXJlbnQgY29tcG9uZW50IHJlLXJlbmRlcnMuIFwiICtcbiAgICAgICAgICAgICAg
XCJJbnN0ZWFkLCB1c2UgYSBkYXRhIG9yIGNvbXB1dGVkIHByb3BlcnR5IGJhc2VkIG9uIHRoZSBw
cm9wJ3MgXCIgK1xuICAgICAgICAgICAgICBcInZhbHVlLiBQcm9wIGJlaW5nIG11dGF0ZWQ6IFxc
XCJcIiArIGtleSArIFwiXFxcIlwiLFxuICAgICAgICAgICAgICB2bVxuICAgICAgICAgICAgKTtc
biAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVmaW5l
UmVhY3RpdmUkJDEodm0sIGtleSwgdmFsaWRhdGVQcm9wKGtleSwgcHJvcHMsIHByb3BzRGF0YSwg
dm0pKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxl
bmd0aDsgaSsrKSBsb29wKCBpICk7XG4gICAgb2JzZXJ2ZXJTdGF0ZS5zaG91bGRDb252ZXJ0ID0g
dHJ1ZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpbml0RGF0YSAodm0pIHtcbiAgdmFyIGRhdGEgPSB2
bS4kb3B0aW9ucy5kYXRhO1xuICBkYXRhID0gdm0uX2RhdGEgPSB0eXBlb2YgZGF0YSA9PT0gJ2Z1
bmN0aW9uJ1xuICAgID8gZGF0YS5jYWxsKHZtKVxuICAgIDogZGF0YSB8fCB7fTtcbiAgaWYgKCFp
c1BsYWluT2JqZWN0KGRhdGEpKSB7XG4gICAgZGF0YSA9IHt9O1xuICAgIHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAgICAgICdkYXRhIGZ1bmN0aW9ucyBz
aG91bGQgcmV0dXJuIGFuIG9iamVjdC4nLFxuICAgICAgdm1cbiAgICApO1xuICB9XG4gIC8vIHBy
b3h5IGRhdGEgb24gaW5zdGFuY2VcbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhkYXRhKTtcbiAg
dmFyIHByb3BzID0gdm0uJG9wdGlvbnMucHJvcHM7XG4gIHZhciBpID0ga2V5cy5sZW5ndGg7XG4g
IHdoaWxlIChpLS0pIHtcbiAgICBpZiAocHJvcHMgJiYgaGFzT3duKHByb3BzLCBrZXlzW2ldKSkg
e1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxu
ICAgICAgICBcIlRoZSBkYXRhIHByb3BlcnR5IFxcXCJcIiArIChrZXlzW2ldKSArIFwiXFxcIiBp
cyBhbHJlYWR5IGRlY2xhcmVkIGFzIGEgcHJvcC4gXCIgK1xuICAgICAgICBcIlVzZSBwcm9wIGRl
ZmF1bHQgdmFsdWUgaW5zdGVhZC5cIixcbiAgICAgICAgdm1cbiAgICAgICk7XG4gICAgfSBlbHNl
IHtcbiAgICAgIHByb3h5KHZtLCBrZXlzW2ldKTtcbiAgICB9XG4gIH1cbiAgLy8gb2JzZXJ2ZSBk
YXRhXG4gIG9ic2VydmUoZGF0YSk7XG4gIGRhdGEuX19vYl9fICYmIGRhdGEuX19vYl9fLnZtQ291
bnQrKztcbn1cblxudmFyIGNvbXB1dGVkU2hhcmVkRGVmaW5pdGlvbiA9IHtcbiAgZW51bWVyYWJs
ZTogdHJ1ZSxcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBnZXQ6IG5vb3AsXG4gIHNldDogbm9v
cFxufTtcblxuZnVuY3Rpb24gaW5pdENvbXB1dGVkICh2bSkge1xuICB2YXIgY29tcHV0ZWQgPSB2
bS4kb3B0aW9ucy5jb21wdXRlZDtcbiAgaWYgKGNvbXB1dGVkKSB7XG4gICAgZm9yICh2YXIga2V5
IGluIGNvbXB1dGVkKSB7XG4gICAgICB2YXIgdXNlckRlZiA9IGNvbXB1dGVkW2tleV07XG4gICAg
ICBpZiAodHlwZW9mIHVzZXJEZWYgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgY29tcHV0ZWRT
aGFyZWREZWZpbml0aW9uLmdldCA9IG1ha2VDb21wdXRlZEdldHRlcih1c2VyRGVmLCB2bSk7XG4g
ICAgICAgIGNvbXB1dGVkU2hhcmVkRGVmaW5pdGlvbi5zZXQgPSBub29wO1xuICAgICAgfSBlbHNl
IHtcbiAgICAgICAgY29tcHV0ZWRTaGFyZWREZWZpbml0aW9uLmdldCA9IHVzZXJEZWYuZ2V0XG4g
ICAgICAgICAgPyB1c2VyRGVmLmNhY2hlICE9PSBmYWxzZVxuICAgICAgICAgICAgPyBtYWtlQ29t
cHV0ZWRHZXR0ZXIodXNlckRlZi5nZXQsIHZtKVxuICAgICAgICAgICAgOiBiaW5kJDEodXNlckRl
Zi5nZXQsIHZtKVxuICAgICAgICAgIDogbm9vcDtcbiAgICAgICAgY29tcHV0ZWRTaGFyZWREZWZp
bml0aW9uLnNldCA9IHVzZXJEZWYuc2V0XG4gICAgICAgICAgPyBiaW5kJDEodXNlckRlZi5zZXQs
IHZtKVxuICAgICAgICAgIDogbm9vcDtcbiAgICAgIH1cbiAgICAgIE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eSh2bSwga2V5LCBjb21wdXRlZFNoYXJlZERlZmluaXRpb24pO1xuICAgIH1cbiAgfVxufVxu
XG5mdW5jdGlvbiBtYWtlQ29tcHV0ZWRHZXR0ZXIgKGdldHRlciwgb3duZXIpIHtcbiAgdmFyIHdh
dGNoZXIgPSBuZXcgV2F0Y2hlcihvd25lciwgZ2V0dGVyLCBub29wLCB7XG4gICAgbGF6eTogdHJ1
ZVxuICB9KTtcbiAgcmV0dXJuIGZ1bmN0aW9uIGNvbXB1dGVkR2V0dGVyICgpIHtcbiAgICBpZiAo
d2F0Y2hlci5kaXJ0eSkge1xuICAgICAgd2F0Y2hlci5ldmFsdWF0ZSgpO1xuICAgIH1cbiAgICBp
ZiAoRGVwLnRhcmdldCkge1xuICAgICAgd2F0Y2hlci5kZXBlbmQoKTtcbiAgICB9XG4gICAgcmV0
dXJuIHdhdGNoZXIudmFsdWVcbiAgfVxufVxuXG5mdW5jdGlvbiBpbml0TWV0aG9kcyAodm0pIHtc
biAgdmFyIG1ldGhvZHMgPSB2bS4kb3B0aW9ucy5tZXRob2RzO1xuICBpZiAobWV0aG9kcykge1xu
ICAgIGZvciAodmFyIGtleSBpbiBtZXRob2RzKSB7XG4gICAgICB2bVtrZXldID0gbWV0aG9kc1tr
ZXldID09IG51bGwgPyBub29wIDogYmluZCQxKG1ldGhvZHNba2V5XSwgdm0pO1xuICAgICAgaWYg
KHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgbWV0aG9kc1trZXldID09
IG51bGwpIHtcbiAgICAgICAgd2FybihcbiAgICAgICAgICBcIm1ldGhvZCBcXFwiXCIgKyBrZXkg
KyBcIlxcXCIgaGFzIGFuIHVuZGVmaW5lZCB2YWx1ZSBpbiB0aGUgY29tcG9uZW50IGRlZmluaXRp
b24uIFwiICtcbiAgICAgICAgICBcIkRpZCB5b3UgcmVmZXJlbmNlIHRoZSBmdW5jdGlvbiBjb3Jy
ZWN0bHk/XCIsXG4gICAgICAgICAgdm1cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1c
bn1cblxuZnVuY3Rpb24gaW5pdFdhdGNoICh2bSkge1xuICB2YXIgd2F0Y2ggPSB2bS4kb3B0aW9u
cy53YXRjaDtcbiAgaWYgKHdhdGNoKSB7XG4gICAgZm9yICh2YXIga2V5IGluIHdhdGNoKSB7XG4g
ICAgICB2YXIgaGFuZGxlciA9IHdhdGNoW2tleV07XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSho
YW5kbGVyKSkge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGhhbmRsZXIubGVuZ3RoOyBp
KyspIHtcbiAgICAgICAgICBjcmVhdGVXYXRjaGVyKHZtLCBrZXksIGhhbmRsZXJbaV0pO1xuICAg
ICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjcmVhdGVXYXRjaGVyKHZtLCBrZXksIGhh
bmRsZXIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBjcmVhdGVXYXRjaGVy
ICh2bSwga2V5LCBoYW5kbGVyKSB7XG4gIHZhciBvcHRpb25zO1xuICBpZiAoaXNQbGFpbk9iamVj
dChoYW5kbGVyKSkge1xuICAgIG9wdGlvbnMgPSBoYW5kbGVyO1xuICAgIGhhbmRsZXIgPSBoYW5k
bGVyLmhhbmRsZXI7XG4gIH1cbiAgaWYgKHR5cGVvZiBoYW5kbGVyID09PSAnc3RyaW5nJykge1xu
ICAgIGhhbmRsZXIgPSB2bVtoYW5kbGVyXTtcbiAgfVxuICB2bS4kd2F0Y2goa2V5LCBoYW5kbGVy
LCBvcHRpb25zKTtcbn1cblxuZnVuY3Rpb24gc3RhdGVNaXhpbiAoVnVlKSB7XG4gIC8vIGZsb3cg
c29tZWhvdyBoYXMgcHJvYmxlbXMgd2l0aCBkaXJlY3RseSBkZWNsYXJlZCBkZWZpbml0aW9uIG9i
amVjdFxuICAvLyB3aGVuIHVzaW5nIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSwgc28gd2UgaGF2ZSB0
byBwcm9jZWR1cmFsbHkgYnVpbGQgdXBcbiAgLy8gdGhlIG9iamVjdCBoZXJlLlxuICB2YXIgZGF0
YURlZiA9IHt9O1xuICBkYXRhRGVmLmdldCA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhp
cy5fZGF0YVxuICB9O1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
Jykge1xuICAgIGRhdGFEZWYuc2V0ID0gZnVuY3Rpb24gKG5ld0RhdGEpIHtcbiAgICAgIHdhcm4o
XG4gICAgICAgICdBdm9pZCByZXBsYWNpbmcgaW5zdGFuY2Ugcm9vdCAkZGF0YS4gJyArXG4gICAg
ICAgICdVc2UgbmVzdGVkIGRhdGEgcHJvcGVydGllcyBpbnN0ZWFkLicsXG4gICAgICAgIHRoaXNc
biAgICAgICk7XG4gICAgfTtcbiAgfVxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoVnVlLnByb3Rv
dHlwZSwgJyRkYXRhJywgZGF0YURlZik7XG5cbiAgVnVlLnByb3RvdHlwZS4kc2V0ID0gc2V0O1xu
ICBWdWUucHJvdG90eXBlLiRkZWxldGUgPSBkZWw7XG5cbiAgVnVlLnByb3RvdHlwZS4kd2F0Y2gg
PSBmdW5jdGlvbiAoXG4gICAgZXhwT3JGbixcbiAgICBjYixcbiAgICBvcHRpb25zXG4gICkge1xu
ICAgIHZhciB2bSA9IHRoaXM7XG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gICAgb3B0
aW9ucy51c2VyID0gdHJ1ZTtcbiAgICB2YXIgd2F0Y2hlciA9IG5ldyBXYXRjaGVyKHZtLCBleHBP
ckZuLCBjYiwgb3B0aW9ucyk7XG4gICAgaWYgKG9wdGlvbnMuaW1tZWRpYXRlKSB7XG4gICAgICBj
Yi5jYWxsKHZtLCB3YXRjaGVyLnZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIGZ1bmN0aW9uIHVu
d2F0Y2hGbiAoKSB7XG4gICAgICB3YXRjaGVyLnRlYXJkb3duKCk7XG4gICAgfVxuICB9O1xufVxu
XG5mdW5jdGlvbiBwcm94eSAodm0sIGtleSkge1xuICBpZiAoIWlzUmVzZXJ2ZWQoa2V5KSkge1xu
ICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh2bSwga2V5LCB7XG4gICAgICBjb25maWd1cmFibGU6
IHRydWUsXG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiBmdW5jdGlvbiBwcm94
eUdldHRlciAoKSB7XG4gICAgICAgIHJldHVybiB2bS5fZGF0YVtrZXldXG4gICAgICB9LFxuICAg
ICAgc2V0OiBmdW5jdGlvbiBwcm94eVNldHRlciAodmFsKSB7XG4gICAgICAgIHZtLl9kYXRhW2tl
eV0gPSB2YWw7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cblxuLyogICovXG5cbnZhciBWTm9k
ZSA9IGZ1bmN0aW9uIFZOb2RlIChcbiAgdGFnLFxuICBkYXRhLFxuICBjaGlsZHJlbixcbiAgdGV4
dCxcbiAgZWxtLFxuICBucyxcbiAgY29udGV4dCxcbiAgY29tcG9uZW50T3B0aW9uc1xuKSB7XG4g
IHRoaXMudGFnID0gdGFnO1xuICB0aGlzLmRhdGEgPSBkYXRhO1xuICB0aGlzLmNoaWxkcmVuID0g
Y2hpbGRyZW47XG4gIHRoaXMudGV4dCA9IHRleHQ7XG4gIHRoaXMuZWxtID0gZWxtO1xuICB0aGlz
Lm5zID0gbnM7XG4gIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7XG4gIHRoaXMuZnVuY3Rpb25hbENv
bnRleHQgPSB1bmRlZmluZWQ7XG4gIHRoaXMua2V5ID0gZGF0YSAmJiBkYXRhLmtleTtcbiAgdGhp
cy5jb21wb25lbnRPcHRpb25zID0gY29tcG9uZW50T3B0aW9ucztcbiAgdGhpcy5jaGlsZCA9IHVu
ZGVmaW5lZDtcbiAgdGhpcy5wYXJlbnQgPSB1bmRlZmluZWQ7XG4gIHRoaXMucmF3ID0gZmFsc2U7
XG4gIHRoaXMuaXNTdGF0aWMgPSBmYWxzZTtcbiAgdGhpcy5pc1Jvb3RJbnNlcnQgPSB0cnVlO1xu
ICB0aGlzLmlzQ29tbWVudCA9IGZhbHNlO1xuICB0aGlzLmlzQ2xvbmVkID0gZmFsc2U7XG4gIHRo
aXMuaXNPbmNlID0gZmFsc2U7XG59O1xuXG52YXIgZW1wdHlWTm9kZSA9IGZ1bmN0aW9uICgpIHtc
biAgdmFyIG5vZGUgPSBuZXcgVk5vZGUoKTtcbiAgbm9kZS50ZXh0ID0gJyc7XG4gIG5vZGUuaXND
b21tZW50ID0gdHJ1ZTtcbiAgcmV0dXJuIG5vZGVcbn07XG5cbi8vIG9wdGltaXplZCBzaGFsbG93
IGNsb25lXG4vLyB1c2VkIGZvciBzdGF0aWMgbm9kZXMgYW5kIHNsb3Qgbm9kZXMgYmVjYXVzZSB0
aGV5IG1heSBiZSByZXVzZWQgYWNyb3NzXG4vLyBtdWx0aXBsZSByZW5kZXJzLCBjbG9uaW5nIHRo
ZW0gYXZvaWRzIGVycm9ycyB3aGVuIERPTSBtYW5pcHVsYXRpb25zIHJlbHlcbi8vIG9uIHRoZWly
IGVsbSByZWZlcmVuY2UuXG5mdW5jdGlvbiBjbG9uZVZOb2RlICh2bm9kZSkge1xuICB2YXIgY2xv
bmVkID0gbmV3IFZOb2RlKFxuICAgIHZub2RlLnRhZyxcbiAgICB2bm9kZS5kYXRhLFxuICAgIHZu
b2RlLmNoaWxkcmVuLFxuICAgIHZub2RlLnRleHQsXG4gICAgdm5vZGUuZWxtLFxuICAgIHZub2Rl
Lm5zLFxuICAgIHZub2RlLmNvbnRleHQsXG4gICAgdm5vZGUuY29tcG9uZW50T3B0aW9uc1xuICAp
O1xuICBjbG9uZWQuaXNTdGF0aWMgPSB2bm9kZS5pc1N0YXRpYztcbiAgY2xvbmVkLmtleSA9IHZu
b2RlLmtleTtcbiAgY2xvbmVkLmlzQ2xvbmVkID0gdHJ1ZTtcbiAgcmV0dXJuIGNsb25lZFxufVxu
XG5mdW5jdGlvbiBjbG9uZVZOb2RlcyAodm5vZGVzKSB7XG4gIHZhciByZXMgPSBuZXcgQXJyYXko
dm5vZGVzLmxlbmd0aCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdm5vZGVzLmxlbmd0aDsgaSsr
KSB7XG4gICAgcmVzW2ldID0gY2xvbmVWTm9kZSh2bm9kZXNbaV0pO1xuICB9XG4gIHJldHVybiBy
ZXNcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIG1lcmdlVk5vZGVIb29rIChkZWYsIGhvb2tLZXks
IGhvb2ssIGtleSkge1xuICBrZXkgPSBrZXkgKyBob29rS2V5O1xuICB2YXIgaW5qZWN0ZWRIYXNo
ID0gZGVmLl9faW5qZWN0ZWQgfHwgKGRlZi5fX2luamVjdGVkID0ge30pO1xuICBpZiAoIWluamVj
dGVkSGFzaFtrZXldKSB7XG4gICAgaW5qZWN0ZWRIYXNoW2tleV0gPSB0cnVlO1xuICAgIHZhciBv
bGRIb29rID0gZGVmW2hvb2tLZXldO1xuICAgIGlmIChvbGRIb29rKSB7XG4gICAgICBkZWZbaG9v
a0tleV0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIG9sZEhvb2suYXBwbHkodGhpcywgYXJndW1l
bnRzKTtcbiAgICAgICAgaG9vay5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfTtcbiAg
ICB9IGVsc2Uge1xuICAgICAgZGVmW2hvb2tLZXldID0gaG9vaztcbiAgICB9XG4gIH1cbn1cblxu
LyogICovXG5cbmZ1bmN0aW9uIHVwZGF0ZUxpc3RlbmVycyAoXG4gIG9uLFxuICBvbGRPbixcbiAg
YWRkLFxuICByZW1vdmUkJDEsXG4gIHZtXG4pIHtcbiAgdmFyIG5hbWUsIGN1ciwgb2xkLCBmbiwg
ZXZlbnQsIGNhcHR1cmU7XG4gIGZvciAobmFtZSBpbiBvbikge1xuICAgIGN1ciA9IG9uW25hbWVd
O1xuICAgIG9sZCA9IG9sZE9uW25hbWVdO1xuICAgIGlmICghY3VyKSB7XG4gICAgICBwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4oXG4gICAgICAgIFwiSW52YWxp
ZCBoYW5kbGVyIGZvciBldmVudCBcXFwiXCIgKyBuYW1lICsgXCJcXFwiOiBnb3QgXCIgKyBTdHJp
bmcoY3VyKSxcbiAgICAgICAgdm1cbiAgICAgICk7XG4gICAgfSBlbHNlIGlmICghb2xkKSB7XG4g
ICAgICBjYXB0dXJlID0gbmFtZS5jaGFyQXQoMCkgPT09ICchJztcbiAgICAgIGV2ZW50ID0gY2Fw
dHVyZSA/IG5hbWUuc2xpY2UoMSkgOiBuYW1lO1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY3Vy
KSkge1xuICAgICAgICBhZGQoZXZlbnQsIChjdXIuaW52b2tlciA9IGFyckludm9rZXIoY3VyKSks
IGNhcHR1cmUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKCFjdXIuaW52b2tlcikge1xu
ICAgICAgICAgIGZuID0gY3VyO1xuICAgICAgICAgIGN1ciA9IG9uW25hbWVdID0ge307XG4gICAg
ICAgICAgY3VyLmZuID0gZm47XG4gICAgICAgICAgY3VyLmludm9rZXIgPSBmbkludm9rZXIoY3Vy
KTtcbiAgICAgICAgfVxuICAgICAgICBhZGQoZXZlbnQsIGN1ci5pbnZva2VyLCBjYXB0dXJlKTtc
biAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGN1ciAhPT0gb2xkKSB7XG4gICAgICBpZiAoQXJyYXku
aXNBcnJheShvbGQpKSB7XG4gICAgICAgIG9sZC5sZW5ndGggPSBjdXIubGVuZ3RoO1xuICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IG9sZC5sZW5ndGg7IGkrKykgeyBvbGRbaV0gPSBjdXJbaV07
IH1cbiAgICAgICAgb25bbmFtZV0gPSBvbGQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvbGQu
Zm4gPSBjdXI7XG4gICAgICAgIG9uW25hbWVdID0gb2xkO1xuICAgICAgfVxuICAgIH1cbiAgfVxu
ICBmb3IgKG5hbWUgaW4gb2xkT24pIHtcbiAgICBpZiAoIW9uW25hbWVdKSB7XG4gICAgICBldmVu
dCA9IG5hbWUuY2hhckF0KDApID09PSAnIScgPyBuYW1lLnNsaWNlKDEpIDogbmFtZTtcbiAgICAg
IHJlbW92ZSQkMShldmVudCwgb2xkT25bbmFtZV0uaW52b2tlcik7XG4gICAgfVxuICB9XG59XG5c
bmZ1bmN0aW9uIGFyckludm9rZXIgKGFycikge1xuICByZXR1cm4gZnVuY3Rpb24gKGV2KSB7XG4g
ICAgdmFyIGFyZ3VtZW50cyQxID0gYXJndW1lbnRzO1xuXG4gICAgdmFyIHNpbmdsZSA9IGFyZ3Vt
ZW50cy5sZW5ndGggPT09IDE7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBp
KyspIHtcbiAgICAgIHNpbmdsZSA/IGFycltpXShldikgOiBhcnJbaV0uYXBwbHkobnVsbCwgYXJn
dW1lbnRzJDEpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBmbkludm9rZXIgKG8pIHtcbiAg
cmV0dXJuIGZ1bmN0aW9uIChldikge1xuICAgIHZhciBzaW5nbGUgPSBhcmd1bWVudHMubGVuZ3Ro
ID09PSAxO1xuICAgIHNpbmdsZSA/IG8uZm4oZXYpIDogby5mbi5hcHBseShudWxsLCBhcmd1bWVu
dHMpO1xuICB9XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBub3JtYWxpemVDaGlsZHJlbiAoXG4g
IGNoaWxkcmVuLFxuICBucyxcbiAgbmVzdGVkSW5kZXhcbikge1xuICBpZiAoaXNQcmltaXRpdmUo
Y2hpbGRyZW4pKSB7XG4gICAgcmV0dXJuIFtjcmVhdGVUZXh0Vk5vZGUoY2hpbGRyZW4pXVxuICB9
XG4gIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xuICAgIHZhciByZXMgPSBbXTtcbiAg
ICBmb3IgKHZhciBpID0gMCwgbCA9IGNoaWxkcmVuLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAg
ICAgdmFyIGMgPSBjaGlsZHJlbltpXTtcbiAgICAgIHZhciBsYXN0ID0gcmVzW3Jlcy5sZW5ndGgg
LSAxXTtcbiAgICAgIC8vICBuZXN0ZWRcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGMpKSB7XG4g
ICAgICAgIHJlcy5wdXNoLmFwcGx5KHJlcywgbm9ybWFsaXplQ2hpbGRyZW4oYywgbnMsICgobmVz
dGVkSW5kZXggfHwgJycpICsgXCJfXCIgKyBpKSkpO1xuICAgICAgfSBlbHNlIGlmIChpc1ByaW1p
dGl2ZShjKSkge1xuICAgICAgICBpZiAobGFzdCAmJiBsYXN0LnRleHQpIHtcbiAgICAgICAgICBs
YXN0LnRleHQgKz0gU3RyaW5nKGMpO1xuICAgICAgICB9IGVsc2UgaWYgKGMgIT09ICcnKSB7XG4g
ICAgICAgICAgLy8gY29udmVydCBwcmltaXRpdmUgdG8gdm5vZGVcbiAgICAgICAgICByZXMucHVz
aChjcmVhdGVUZXh0Vk5vZGUoYykpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGMgaW5z
dGFuY2VvZiBWTm9kZSkge1xuICAgICAgICBpZiAoYy50ZXh0ICYmIGxhc3QgJiYgbGFzdC50ZXh0
KSB7XG4gICAgICAgICAgaWYgKCFsYXN0LmlzQ2xvbmVkKSB7XG4gICAgICAgICAgICBsYXN0LnRl
eHQgKz0gYy50ZXh0O1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAv
LyBpbmhlcml0IHBhcmVudCBuYW1lc3BhY2VcbiAgICAgICAgICBpZiAobnMpIHtcbiAgICAgICAg
ICAgIGFwcGx5TlMoYywgbnMpO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBkZWZhdWx0IGtl
eSBmb3IgbmVzdGVkIGFycmF5IGNoaWxkcmVuIChsaWtlbHkgZ2VuZXJhdGVkIGJ5IHYtZm9yKVxu
ICAgICAgICAgIGlmIChjLnRhZyAmJiBjLmtleSA9PSBudWxsICYmIG5lc3RlZEluZGV4ICE9IG51
bGwpIHtcbiAgICAgICAgICAgIGMua2V5ID0gXCJfX3ZsaXN0XCIgKyBuZXN0ZWRJbmRleCArIFwi
X1wiICsgaSArIFwiX19cIjtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzLnB1c2goYyk7XG4g
ICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc1xuICB9XG59XG5cbmZ1bmN0
aW9uIGNyZWF0ZVRleHRWTm9kZSAodmFsKSB7XG4gIHJldHVybiBuZXcgVk5vZGUodW5kZWZpbmVk
LCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgU3RyaW5nKHZhbCkpXG59XG5cbmZ1bmN0aW9uIGFwcGx5
TlMgKHZub2RlLCBucykge1xuICBpZiAodm5vZGUudGFnICYmICF2bm9kZS5ucykge1xuICAgIHZu
b2RlLm5zID0gbnM7XG4gICAgaWYgKHZub2RlLmNoaWxkcmVuKSB7XG4gICAgICBmb3IgKHZhciBp
ID0gMCwgbCA9IHZub2RlLmNoaWxkcmVuLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICBh
cHBseU5TKHZub2RlLmNoaWxkcmVuW2ldLCBucyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5c
bi8qICAqL1xuXG5mdW5jdGlvbiBnZXRGaXJzdENvbXBvbmVudENoaWxkIChjaGlsZHJlbikge1xu
ICByZXR1cm4gY2hpbGRyZW4gJiYgY2hpbGRyZW4uZmlsdGVyKGZ1bmN0aW9uIChjKSB7IHJldHVy
biBjICYmIGMuY29tcG9uZW50T3B0aW9uczsgfSlbMF1cbn1cblxuLyogICovXG5cbnZhciBhY3Rp
dmVJbnN0YW5jZSA9IG51bGw7XG5cbmZ1bmN0aW9uIGluaXRMaWZlY3ljbGUgKHZtKSB7XG4gIHZh
ciBvcHRpb25zID0gdm0uJG9wdGlvbnM7XG5cbiAgLy8gbG9jYXRlIGZpcnN0IG5vbi1hYnN0cmFj
dCBwYXJlbnRcbiAgdmFyIHBhcmVudCA9IG9wdGlvbnMucGFyZW50O1xuICBpZiAocGFyZW50ICYm
ICFvcHRpb25zLmFic3RyYWN0KSB7XG4gICAgd2hpbGUgKHBhcmVudC4kb3B0aW9ucy5hYnN0cmFj
dCAmJiBwYXJlbnQuJHBhcmVudCkge1xuICAgICAgcGFyZW50ID0gcGFyZW50LiRwYXJlbnQ7XG4g
ICAgfVxuICAgIHBhcmVudC4kY2hpbGRyZW4ucHVzaCh2bSk7XG4gIH1cblxuICB2bS4kcGFyZW50
ID0gcGFyZW50O1xuICB2bS4kcm9vdCA9IHBhcmVudCA/IHBhcmVudC4kcm9vdCA6IHZtO1xuXG4g
IHZtLiRjaGlsZHJlbiA9IFtdO1xuICB2bS4kcmVmcyA9IHt9O1xuXG4gIHZtLl93YXRjaGVyID0g
bnVsbDtcbiAgdm0uX2luYWN0aXZlID0gZmFsc2U7XG4gIHZtLl9pc01vdW50ZWQgPSBmYWxzZTtc
biAgdm0uX2lzRGVzdHJveWVkID0gZmFsc2U7XG4gIHZtLl9pc0JlaW5nRGVzdHJveWVkID0gZmFs
c2U7XG59XG5cbmZ1bmN0aW9uIGxpZmVjeWNsZU1peGluIChWdWUpIHtcbiAgVnVlLnByb3RvdHlw
ZS5fbW91bnQgPSBmdW5jdGlvbiAoXG4gICAgZWwsXG4gICAgaHlkcmF0aW5nXG4gICkge1xuICAg
IHZhciB2bSA9IHRoaXM7XG4gICAgdm0uJGVsID0gZWw7XG4gICAgaWYgKCF2bS4kb3B0aW9ucy5y
ZW5kZXIpIHtcbiAgICAgIHZtLiRvcHRpb25zLnJlbmRlciA9IGVtcHR5Vk5vZGU7XG4gICAgICBp
ZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAvKiBp
c3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgICAgaWYgKHZtLiRvcHRpb25zLnRlbXBsYXRlICYm
IHZtLiRvcHRpb25zLnRlbXBsYXRlLmNoYXJBdCgwKSAhPT0gJyMnKSB7XG4gICAgICAgICAgd2Fy
bihcbiAgICAgICAgICAgICdZb3UgYXJlIHVzaW5nIHRoZSBydW50aW1lLW9ubHkgYnVpbGQgb2Yg
VnVlIHdoZXJlIHRoZSB0ZW1wbGF0ZSAnICtcbiAgICAgICAgICAgICdvcHRpb24gaXMgbm90IGF2
YWlsYWJsZS4gRWl0aGVyIHByZS1jb21waWxlIHRoZSB0ZW1wbGF0ZXMgaW50byAnICtcbiAgICAg
ICAgICAgICdyZW5kZXIgZnVuY3Rpb25zLCBvciB1c2UgdGhlIGNvbXBpbGVyLWluY2x1ZGVkIGJ1
aWxkLicsXG4gICAgICAgICAgICB2bVxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4g
ICAgICAgICAgd2FybihcbiAgICAgICAgICAgICdGYWlsZWQgdG8gbW91bnQgY29tcG9uZW50OiB0
ZW1wbGF0ZSBvciByZW5kZXIgZnVuY3Rpb24gbm90IGRlZmluZWQuJyxcbiAgICAgICAgICAgIHZt
XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBjYWxsSG9vayh2
bSwgJ2JlZm9yZU1vdW50Jyk7XG4gICAgdm0uX3dhdGNoZXIgPSBuZXcgV2F0Y2hlcih2bSwgZnVu
Y3Rpb24gKCkge1xuICAgICAgdm0uX3VwZGF0ZSh2bS5fcmVuZGVyKCksIGh5ZHJhdGluZyk7XG4g
ICAgfSwgbm9vcCk7XG4gICAgaHlkcmF0aW5nID0gZmFsc2U7XG4gICAgLy8gbWFudWFsbHkgbW91
bnRlZCBpbnN0YW5jZSwgY2FsbCBtb3VudGVkIG9uIHNlbGZcbiAgICAvLyBtb3VudGVkIGlzIGNh
bGxlZCBmb3IgcmVuZGVyLWNyZWF0ZWQgY2hpbGQgY29tcG9uZW50cyBpbiBpdHMgaW5zZXJ0ZWQg
aG9va1xuICAgIGlmICh2bS4kdm5vZGUgPT0gbnVsbCkge1xuICAgICAgdm0uX2lzTW91bnRlZCA9
IHRydWU7XG4gICAgICBjYWxsSG9vayh2bSwgJ21vdW50ZWQnKTtcbiAgICB9XG4gICAgcmV0dXJu
IHZtXG4gIH07XG5cbiAgVnVlLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKHZub2RlLCBo
eWRyYXRpbmcpIHtcbiAgICB2YXIgdm0gPSB0aGlzO1xuICAgIGlmICh2bS5faXNNb3VudGVkKSB7
XG4gICAgICBjYWxsSG9vayh2bSwgJ2JlZm9yZVVwZGF0ZScpO1xuICAgIH1cbiAgICB2YXIgcHJl
dkVsID0gdm0uJGVsO1xuICAgIHZhciBwcmV2QWN0aXZlSW5zdGFuY2UgPSBhY3RpdmVJbnN0YW5j
ZTtcbiAgICBhY3RpdmVJbnN0YW5jZSA9IHZtO1xuICAgIHZhciBwcmV2Vm5vZGUgPSB2bS5fdm5v
ZGU7XG4gICAgdm0uX3Zub2RlID0gdm5vZGU7XG4gICAgaWYgKCFwcmV2Vm5vZGUpIHtcbiAgICAg
IC8vIFZ1ZS5wcm90b3R5cGUuX19wYXRjaF9fIGlzIGluamVjdGVkIGluIGVudHJ5IHBvaW50c1xu
ICAgICAgLy8gYmFzZWQgb24gdGhlIHJlbmRlcmluZyBiYWNrZW5kIHVzZWQuXG4gICAgICB2bS4k
ZWwgPSB2bS5fX3BhdGNoX18odm0uJGVsLCB2bm9kZSwgaHlkcmF0aW5nKTtcbiAgICB9IGVsc2Ug
e1xuICAgICAgdm0uJGVsID0gdm0uX19wYXRjaF9fKHByZXZWbm9kZSwgdm5vZGUpO1xuICAgIH1c
biAgICBhY3RpdmVJbnN0YW5jZSA9IHByZXZBY3RpdmVJbnN0YW5jZTtcbiAgICAvLyB1cGRhdGUg
X192dWVfXyByZWZlcmVuY2VcbiAgICBpZiAocHJldkVsKSB7XG4gICAgICBwcmV2RWwuX192dWVf
XyA9IG51bGw7XG4gICAgfVxuICAgIGlmICh2bS4kZWwpIHtcbiAgICAgIHZtLiRlbC5fX3Z1ZV9f
ID0gdm07XG4gICAgfVxuICAgIC8vIGlmIHBhcmVudCBpcyBhbiBIT0MsIHVwZGF0ZSBpdHMgJGVs
IGFzIHdlbGxcbiAgICBpZiAodm0uJHZub2RlICYmIHZtLiRwYXJlbnQgJiYgdm0uJHZub2RlID09
PSB2bS4kcGFyZW50Ll92bm9kZSkge1xuICAgICAgdm0uJHBhcmVudC4kZWwgPSB2bS4kZWw7XG4g
ICAgfVxuICAgIGlmICh2bS5faXNNb3VudGVkKSB7XG4gICAgICBjYWxsSG9vayh2bSwgJ3VwZGF0
ZWQnKTtcbiAgICB9XG4gIH07XG5cbiAgVnVlLnByb3RvdHlwZS5fdXBkYXRlRnJvbVBhcmVudCA9
IGZ1bmN0aW9uIChcbiAgICBwcm9wc0RhdGEsXG4gICAgbGlzdGVuZXJzLFxuICAgIHBhcmVudFZu
b2RlLFxuICAgIHJlbmRlckNoaWxkcmVuXG4gICkge1xuICAgIHZhciB2bSA9IHRoaXM7XG4gICAg
dmFyIGhhc0NoaWxkcmVuID0gISEodm0uJG9wdGlvbnMuX3JlbmRlckNoaWxkcmVuIHx8IHJlbmRl
ckNoaWxkcmVuKTtcbiAgICB2bS4kb3B0aW9ucy5fcGFyZW50Vm5vZGUgPSBwYXJlbnRWbm9kZTtc
biAgICB2bS4kdm5vZGUgPSBwYXJlbnRWbm9kZTsgLy8gdXBkYXRlIHZtJ3MgcGxhY2Vob2xkZXIg
bm9kZSB3aXRob3V0IHJlLXJlbmRlclxuICAgIGlmICh2bS5fdm5vZGUpIHsgLy8gdXBkYXRlIGNo
aWxkIHRyZWUncyBwYXJlbnRcbiAgICAgIHZtLl92bm9kZS5wYXJlbnQgPSBwYXJlbnRWbm9kZTtc
biAgICB9XG4gICAgdm0uJG9wdGlvbnMuX3JlbmRlckNoaWxkcmVuID0gcmVuZGVyQ2hpbGRyZW47
XG4gICAgLy8gdXBkYXRlIHByb3BzXG4gICAgaWYgKHByb3BzRGF0YSAmJiB2bS4kb3B0aW9ucy5w
cm9wcykge1xuICAgICAgb2JzZXJ2ZXJTdGF0ZS5zaG91bGRDb252ZXJ0ID0gZmFsc2U7XG4gICAg
ICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBv
YnNlcnZlclN0YXRlLmlzU2V0dGluZ1Byb3BzID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHZhciBw
cm9wS2V5cyA9IHZtLiRvcHRpb25zLl9wcm9wS2V5cyB8fCBbXTtcbiAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgcHJvcEtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGtleSA9IHByb3BL
ZXlzW2ldO1xuICAgICAgICB2bVtrZXldID0gdmFsaWRhdGVQcm9wKGtleSwgdm0uJG9wdGlvbnMu
cHJvcHMsIHByb3BzRGF0YSwgdm0pO1xuICAgICAgfVxuICAgICAgb2JzZXJ2ZXJTdGF0ZS5zaG91
bGRDb252ZXJ0ID0gdHJ1ZTtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3By
b2R1Y3Rpb24nKSB7XG4gICAgICAgIG9ic2VydmVyU3RhdGUuaXNTZXR0aW5nUHJvcHMgPSBmYWxz
ZTtcbiAgICAgIH1cbiAgICAgIHZtLiRvcHRpb25zLnByb3BzRGF0YSA9IHByb3BzRGF0YTtcbiAg
ICB9XG4gICAgLy8gdXBkYXRlIGxpc3RlbmVyc1xuICAgIGlmIChsaXN0ZW5lcnMpIHtcbiAgICAg
IHZhciBvbGRMaXN0ZW5lcnMgPSB2bS4kb3B0aW9ucy5fcGFyZW50TGlzdGVuZXJzO1xuICAgICAg
dm0uJG9wdGlvbnMuX3BhcmVudExpc3RlbmVycyA9IGxpc3RlbmVycztcbiAgICAgIHZtLl91cGRh
dGVMaXN0ZW5lcnMobGlzdGVuZXJzLCBvbGRMaXN0ZW5lcnMpO1xuICAgIH1cbiAgICAvLyByZXNv
bHZlIHNsb3RzICsgZm9yY2UgdXBkYXRlIGlmIGhhcyBjaGlsZHJlblxuICAgIGlmIChoYXNDaGls
ZHJlbikge1xuICAgICAgdm0uJHNsb3RzID0gcmVzb2x2ZVNsb3RzKHJlbmRlckNoaWxkcmVuLCB2
bS5fcmVuZGVyQ29udGV4dCk7XG4gICAgICB2bS4kZm9yY2VVcGRhdGUoKTtcbiAgICB9XG4gIH07
XG5cbiAgVnVlLnByb3RvdHlwZS4kZm9yY2VVcGRhdGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFy
IHZtID0gdGhpcztcbiAgICBpZiAodm0uX3dhdGNoZXIpIHtcbiAgICAgIHZtLl93YXRjaGVyLnVw
ZGF0ZSgpO1xuICAgIH1cbiAgfTtcblxuICBWdWUucHJvdG90eXBlLiRkZXN0cm95ID0gZnVuY3Rp
b24gKCkge1xuICAgIHZhciB2bSA9IHRoaXM7XG4gICAgaWYgKHZtLl9pc0JlaW5nRGVzdHJveWVk
KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY2FsbEhvb2sodm0sICdiZWZvcmVEZXN0cm95
Jyk7XG4gICAgdm0uX2lzQmVpbmdEZXN0cm95ZWQgPSB0cnVlO1xuICAgIC8vIHJlbW92ZSBzZWxm
IGZyb20gcGFyZW50XG4gICAgdmFyIHBhcmVudCA9IHZtLiRwYXJlbnQ7XG4gICAgaWYgKHBhcmVu
dCAmJiAhcGFyZW50Ll9pc0JlaW5nRGVzdHJveWVkICYmICF2bS4kb3B0aW9ucy5hYnN0cmFjdCkg
e1xuICAgICAgcmVtb3ZlJDEocGFyZW50LiRjaGlsZHJlbiwgdm0pO1xuICAgIH1cbiAgICAvLyB0
ZWFyZG93biB3YXRjaGVyc1xuICAgIGlmICh2bS5fd2F0Y2hlcikge1xuICAgICAgdm0uX3dhdGNo
ZXIudGVhcmRvd24oKTtcbiAgICB9XG4gICAgdmFyIGkgPSB2bS5fd2F0Y2hlcnMubGVuZ3RoO1xu
ICAgIHdoaWxlIChpLS0pIHtcbiAgICAgIHZtLl93YXRjaGVyc1tpXS50ZWFyZG93bigpO1xuICAg
IH1cbiAgICAvLyByZW1vdmUgcmVmZXJlbmNlIGZyb20gZGF0YSBvYlxuICAgIC8vIGZyb3plbiBv
YmplY3QgbWF5IG5vdCBoYXZlIG9ic2VydmVyLlxuICAgIGlmICh2bS5fZGF0YS5fX29iX18pIHtc
biAgICAgIHZtLl9kYXRhLl9fb2JfXy52bUNvdW50LS07XG4gICAgfVxuICAgIC8vIGNhbGwgdGhl
IGxhc3QgaG9vay4uLlxuICAgIHZtLl9pc0Rlc3Ryb3llZCA9IHRydWU7XG4gICAgY2FsbEhvb2so
dm0sICdkZXN0cm95ZWQnKTtcbiAgICAvLyB0dXJuIG9mZiBhbGwgaW5zdGFuY2UgbGlzdGVuZXJz
LlxuICAgIHZtLiRvZmYoKTtcbiAgICAvLyByZW1vdmUgX192dWVfXyByZWZlcmVuY2VcbiAgICBp
ZiAodm0uJGVsKSB7XG4gICAgICB2bS4kZWwuX192dWVfXyA9IG51bGw7XG4gICAgfVxuICAgIC8v
IGludm9rZSBkZXN0cm95IGhvb2tzIG9uIGN1cnJlbnQgcmVuZGVyZWQgdHJlZVxuICAgIHZtLl9f
cGF0Y2hfXyh2bS5fdm5vZGUsIG51bGwpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBjYWxsSG9vayAo
dm0sIGhvb2spIHtcbiAgdmFyIGhhbmRsZXJzID0gdm0uJG9wdGlvbnNbaG9va107XG4gIGlmICho
YW5kbGVycykge1xuICAgIGZvciAodmFyIGkgPSAwLCBqID0gaGFuZGxlcnMubGVuZ3RoOyBpIDwg
ajsgaSsrKSB7XG4gICAgICBoYW5kbGVyc1tpXS5jYWxsKHZtKTtcbiAgICB9XG4gIH1cbiAgdm0u
JGVtaXQoJ2hvb2s6JyArIGhvb2spO1xufVxuXG4vKiAgKi9cblxudmFyIGhvb2tzID0geyBpbml0
OiBpbml0LCBwcmVwYXRjaDogcHJlcGF0Y2gsIGluc2VydDogaW5zZXJ0LCBkZXN0cm95OiBkZXN0
cm95JDEgfTtcbnZhciBob29rc1RvTWVyZ2UgPSBPYmplY3Qua2V5cyhob29rcyk7XG5cbmZ1bmN0
aW9uIGNyZWF0ZUNvbXBvbmVudCAoXG4gIEN0b3IsXG4gIGRhdGEsXG4gIGNvbnRleHQsXG4gIGNo
aWxkcmVuLFxuICB0YWdcbikge1xuICBpZiAoIUN0b3IpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4g
IHZhciBiYXNlQ3RvciA9IGNvbnRleHQuJG9wdGlvbnMuX2Jhc2U7XG4gIGlmIChpc09iamVjdChD
dG9yKSkge1xuICAgIEN0b3IgPSBiYXNlQ3Rvci5leHRlbmQoQ3Rvcik7XG4gIH1cblxuICBpZiAo
dHlwZW9mIEN0b3IgIT09ICdmdW5jdGlvbicpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgd2FybigoXCJJbnZhbGlkIENvbXBvbmVudCBk
ZWZpbml0aW9uOiBcIiArIChTdHJpbmcoQ3RvcikpKSwgY29udGV4dCk7XG4gICAgfVxuICAgIHJl
dHVyblxuICB9XG5cbiAgLy8gYXN5bmMgY29tcG9uZW50XG4gIGlmICghQ3Rvci5jaWQpIHtcbiAg
ICBpZiAoQ3Rvci5yZXNvbHZlZCkge1xuICAgICAgQ3RvciA9IEN0b3IucmVzb2x2ZWQ7XG4gICAg
fSBlbHNlIHtcbiAgICAgIEN0b3IgPSByZXNvbHZlQXN5bmNDb21wb25lbnQoQ3RvciwgYmFzZUN0
b3IsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgLy8gaXQncyBvayB0byBxdWV1ZSB0aGlzIG9uIGV2
ZXJ5IHJlbmRlciBiZWNhdXNlXG4gICAgICAgIC8vICRmb3JjZVVwZGF0ZSBpcyBidWZmZXJlZCBi
eSB0aGUgc2NoZWR1bGVyLlxuICAgICAgICBjb250ZXh0LiRmb3JjZVVwZGF0ZSgpO1xuICAgICAg
fSk7XG4gICAgICBpZiAoIUN0b3IpIHtcbiAgICAgICAgLy8gcmV0dXJuIG5vdGhpbmcgaWYgdGhp
cyBpcyBpbmRlZWQgYW4gYXN5bmMgY29tcG9uZW50XG4gICAgICAgIC8vIHdhaXQgZm9yIHRoZSBj
YWxsYmFjayB0byB0cmlnZ2VyIHBhcmVudCB1cGRhdGUuXG4gICAgICAgIHJldHVyblxuICAgICAg
fVxuICAgIH1cbiAgfVxuXG4gIC8vIHJlc29sdmUgY29uc3RydWN0b3Igb3B0aW9ucyBpbiBjYXNl
IGdsb2JhbCBtaXhpbnMgYXJlIGFwcGxpZWQgYWZ0ZXJcbiAgLy8gY29tcG9uZW50IGNvbnN0cnVj
dG9yIGNyZWF0aW9uXG4gIHJlc29sdmVDb25zdHJ1Y3Rvck9wdGlvbnMoQ3Rvcik7XG5cbiAgZGF0
YSA9IGRhdGEgfHwge307XG5cbiAgLy8gZXh0cmFjdCBwcm9wc1xuICB2YXIgcHJvcHNEYXRhID0g
ZXh0cmFjdFByb3BzKGRhdGEsIEN0b3IpO1xuXG4gIC8vIGZ1bmN0aW9uYWwgY29tcG9uZW50XG4g
IGlmIChDdG9yLm9wdGlvbnMuZnVuY3Rpb25hbCkge1xuICAgIHJldHVybiBjcmVhdGVGdW5jdGlv
bmFsQ29tcG9uZW50KEN0b3IsIHByb3BzRGF0YSwgZGF0YSwgY29udGV4dCwgY2hpbGRyZW4pXG4g
IH1cblxuICAvLyBleHRyYWN0IGxpc3RlbmVycywgc2luY2UgdGhlc2UgbmVlZHMgdG8gYmUgdHJl
YXRlZCBhc1xuICAvLyBjaGlsZCBjb21wb25lbnQgbGlzdGVuZXJzIGluc3RlYWQgb2YgRE9NIGxp
c3RlbmVyc1xuICB2YXIgbGlzdGVuZXJzID0gZGF0YS5vbjtcbiAgLy8gcmVwbGFjZSB3aXRoIGxp
c3RlbmVycyB3aXRoIC5uYXRpdmUgbW9kaWZpZXJcbiAgZGF0YS5vbiA9IGRhdGEubmF0aXZlT247
XG5cbiAgaWYgKEN0b3Iub3B0aW9ucy5hYnN0cmFjdCkge1xuICAgIC8vIGFic3RyYWN0IGNvbXBv
bmVudHMgZG8gbm90IGtlZXAgYW55dGhpbmdcbiAgICAvLyBvdGhlciB0aGFuIHByb3BzICYgbGlz
dGVuZXJzXG4gICAgZGF0YSA9IHt9O1xuICB9XG5cbiAgLy8gbWVyZ2UgY29tcG9uZW50IG1hbmFn
ZW1lbnQgaG9va3Mgb250byB0aGUgcGxhY2Vob2xkZXIgbm9kZVxuICBtZXJnZUhvb2tzKGRhdGEp
O1xuXG4gIC8vIHJldHVybiBhIHBsYWNlaG9sZGVyIHZub2RlXG4gIHZhciBuYW1lID0gQ3Rvci5v
cHRpb25zLm5hbWUgfHwgdGFnO1xuICB2YXIgdm5vZGUgPSBuZXcgVk5vZGUoXG4gICAgKFwidnVl
LWNvbXBvbmVudC1cIiArIChDdG9yLmNpZCkgKyAobmFtZSA/IChcIi1cIiArIG5hbWUpIDogJycp
KSxcbiAgICBkYXRhLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQs
IGNvbnRleHQsXG4gICAgeyBDdG9yOiBDdG9yLCBwcm9wc0RhdGE6IHByb3BzRGF0YSwgbGlzdGVu
ZXJzOiBsaXN0ZW5lcnMsIHRhZzogdGFnLCBjaGlsZHJlbjogY2hpbGRyZW4gfVxuICApO1xuICBy
ZXR1cm4gdm5vZGVcbn1cblxuZnVuY3Rpb24gY3JlYXRlRnVuY3Rpb25hbENvbXBvbmVudCAoXG4g
IEN0b3IsXG4gIHByb3BzRGF0YSxcbiAgZGF0YSxcbiAgY29udGV4dCxcbiAgY2hpbGRyZW5cbikg
e1xuICB2YXIgcHJvcHMgPSB7fTtcbiAgdmFyIHByb3BPcHRpb25zID0gQ3Rvci5vcHRpb25zLnBy
b3BzO1xuICBpZiAocHJvcE9wdGlvbnMpIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gcHJvcE9wdGlv
bnMpIHtcbiAgICAgIHByb3BzW2tleV0gPSB2YWxpZGF0ZVByb3Aoa2V5LCBwcm9wT3B0aW9ucywg
cHJvcHNEYXRhKTtcbiAgICB9XG4gIH1cbiAgdmFyIHZub2RlID0gQ3Rvci5vcHRpb25zLnJlbmRl
ci5jYWxsKFxuICAgIG51bGwsXG4gICAgLy8gZW5zdXJlIHRoZSBjcmVhdGVFbGVtZW50IGZ1bmN0
aW9uIGluIGZ1bmN0aW9uYWwgY29tcG9uZW50c1xuICAgIC8vIGdldHMgYSB1bmlxdWUgY29udGV4
dCAtIHRoaXMgaXMgbmVjZXNzYXJ5IGZvciBjb3JyZWN0IG5hbWVkIHNsb3QgY2hlY2tcbiAgICBi
aW5kJDEoY3JlYXRlRWxlbWVudCwgeyBfc2VsZjogT2JqZWN0LmNyZWF0ZShjb250ZXh0KSB9KSxc
biAgICB7XG4gICAgICBwcm9wczogcHJvcHMsXG4gICAgICBkYXRhOiBkYXRhLFxuICAgICAgcGFy
ZW50OiBjb250ZXh0LFxuICAgICAgY2hpbGRyZW46IG5vcm1hbGl6ZUNoaWxkcmVuKGNoaWxkcmVu
KSxcbiAgICAgIHNsb3RzOiBmdW5jdGlvbiAoKSB7IHJldHVybiByZXNvbHZlU2xvdHMoY2hpbGRy
ZW4sIGNvbnRleHQpOyB9XG4gICAgfVxuICApO1xuICBpZiAodm5vZGUgaW5zdGFuY2VvZiBWTm9k
ZSkge1xuICAgIHZub2RlLmZ1bmN0aW9uYWxDb250ZXh0ID0gY29udGV4dDtcbiAgICBpZiAoZGF0
YS5zbG90KSB7XG4gICAgICAodm5vZGUuZGF0YSB8fCAodm5vZGUuZGF0YSA9IHt9KSkuc2xvdCA9
IGRhdGEuc2xvdDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHZub2RlXG59XG5cbmZ1bmN0aW9uIGNy
ZWF0ZUNvbXBvbmVudEluc3RhbmNlRm9yVm5vZGUgKFxuICB2bm9kZSwgLy8gd2Uga25vdyBpdCdz
IE1vdW50ZWRDb21wb25lbnRWTm9kZSBidXQgZmxvdyBkb2Vzbid0XG4gIHBhcmVudCAvLyBhY3Rp
dmVJbnN0YW5jZSBpbiBsaWZlY3ljbGUgc3RhdGVcbikge1xuICB2YXIgdm5vZGVDb21wb25lbnRP
cHRpb25zID0gdm5vZGUuY29tcG9uZW50T3B0aW9ucztcbiAgdmFyIG9wdGlvbnMgPSB7XG4gICAg
X2lzQ29tcG9uZW50OiB0cnVlLFxuICAgIHBhcmVudDogcGFyZW50LFxuICAgIHByb3BzRGF0YTog
dm5vZGVDb21wb25lbnRPcHRpb25zLnByb3BzRGF0YSxcbiAgICBfY29tcG9uZW50VGFnOiB2bm9k
ZUNvbXBvbmVudE9wdGlvbnMudGFnLFxuICAgIF9wYXJlbnRWbm9kZTogdm5vZGUsXG4gICAgX3Bh
cmVudExpc3RlbmVyczogdm5vZGVDb21wb25lbnRPcHRpb25zLmxpc3RlbmVycyxcbiAgICBfcmVu
ZGVyQ2hpbGRyZW46IHZub2RlQ29tcG9uZW50T3B0aW9ucy5jaGlsZHJlblxuICB9O1xuICAvLyBj
aGVjayBpbmxpbmUtdGVtcGxhdGUgcmVuZGVyIGZ1bmN0aW9uc1xuICB2YXIgaW5saW5lVGVtcGxh
dGUgPSB2bm9kZS5kYXRhLmlubGluZVRlbXBsYXRlO1xuICBpZiAoaW5saW5lVGVtcGxhdGUpIHtc
biAgICBvcHRpb25zLnJlbmRlciA9IGlubGluZVRlbXBsYXRlLnJlbmRlcjtcbiAgICBvcHRpb25z
LnN0YXRpY1JlbmRlckZucyA9IGlubGluZVRlbXBsYXRlLnN0YXRpY1JlbmRlckZucztcbiAgfVxu
ICByZXR1cm4gbmV3IHZub2RlQ29tcG9uZW50T3B0aW9ucy5DdG9yKG9wdGlvbnMpXG59XG5cbmZ1
bmN0aW9uIGluaXQgKHZub2RlLCBoeWRyYXRpbmcpIHtcbiAgaWYgKCF2bm9kZS5jaGlsZCB8fCB2
bm9kZS5jaGlsZC5faXNEZXN0cm95ZWQpIHtcbiAgICB2YXIgY2hpbGQgPSB2bm9kZS5jaGlsZCA9
IGNyZWF0ZUNvbXBvbmVudEluc3RhbmNlRm9yVm5vZGUodm5vZGUsIGFjdGl2ZUluc3RhbmNlKTtc
biAgICBjaGlsZC4kbW91bnQoaHlkcmF0aW5nID8gdm5vZGUuZWxtIDogdW5kZWZpbmVkLCBoeWRy
YXRpbmcpO1xuICB9IGVsc2UgaWYgKHZub2RlLmRhdGEua2VlcEFsaXZlKSB7XG4gICAgLy8ga2Vw
dC1hbGl2ZSBjb21wb25lbnRzLCB0cmVhdCBhcyBhIHBhdGNoXG4gICAgdmFyIG1vdW50ZWROb2Rl
ID0gdm5vZGU7IC8vIHdvcmsgYXJvdW5kIGZsb3dcbiAgICBwcmVwYXRjaChtb3VudGVkTm9kZSwg
bW91bnRlZE5vZGUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHByZXBhdGNoIChcbiAgb2xkVm5vZGUs
XG4gIHZub2RlXG4pIHtcbiAgdmFyIG9wdGlvbnMgPSB2bm9kZS5jb21wb25lbnRPcHRpb25zO1xu
ICB2YXIgY2hpbGQgPSB2bm9kZS5jaGlsZCA9IG9sZFZub2RlLmNoaWxkO1xuICBjaGlsZC5fdXBk
YXRlRnJvbVBhcmVudChcbiAgICBvcHRpb25zLnByb3BzRGF0YSwgLy8gdXBkYXRlZCBwcm9wc1xu
ICAgIG9wdGlvbnMubGlzdGVuZXJzLCAvLyB1cGRhdGVkIGxpc3RlbmVyc1xuICAgIHZub2RlLCAv
LyBuZXcgcGFyZW50IHZub2RlXG4gICAgb3B0aW9ucy5jaGlsZHJlbiAvLyBuZXcgY2hpbGRyZW5c
biAgKTtcbn1cblxuZnVuY3Rpb24gaW5zZXJ0ICh2bm9kZSkge1xuICBpZiAoIXZub2RlLmNoaWxk
Ll9pc01vdW50ZWQpIHtcbiAgICB2bm9kZS5jaGlsZC5faXNNb3VudGVkID0gdHJ1ZTtcbiAgICBj
YWxsSG9vayh2bm9kZS5jaGlsZCwgJ21vdW50ZWQnKTtcbiAgfVxuICBpZiAodm5vZGUuZGF0YS5r
ZWVwQWxpdmUpIHtcbiAgICB2bm9kZS5jaGlsZC5faW5hY3RpdmUgPSBmYWxzZTtcbiAgICBjYWxs
SG9vayh2bm9kZS5jaGlsZCwgJ2FjdGl2YXRlZCcpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGRlc3Ry
b3kkMSAodm5vZGUpIHtcbiAgaWYgKCF2bm9kZS5jaGlsZC5faXNEZXN0cm95ZWQpIHtcbiAgICBp
ZiAoIXZub2RlLmRhdGEua2VlcEFsaXZlKSB7XG4gICAgICB2bm9kZS5jaGlsZC4kZGVzdHJveSgp
O1xuICAgIH0gZWxzZSB7XG4gICAgICB2bm9kZS5jaGlsZC5faW5hY3RpdmUgPSB0cnVlO1xuICAg
ICAgY2FsbEhvb2sodm5vZGUuY2hpbGQsICdkZWFjdGl2YXRlZCcpO1xuICAgIH1cbiAgfVxufVxu
XG5mdW5jdGlvbiByZXNvbHZlQXN5bmNDb21wb25lbnQgKFxuICBmYWN0b3J5LFxuICBiYXNlQ3Rv
cixcbiAgY2Jcbikge1xuICBpZiAoZmFjdG9yeS5yZXF1ZXN0ZWQpIHtcbiAgICAvLyBwb29sIGNh
bGxiYWNrc1xuICAgIGZhY3RvcnkucGVuZGluZ0NhbGxiYWNrcy5wdXNoKGNiKTtcbiAgfSBlbHNl
IHtcbiAgICBmYWN0b3J5LnJlcXVlc3RlZCA9IHRydWU7XG4gICAgdmFyIGNicyA9IGZhY3Rvcnku
cGVuZGluZ0NhbGxiYWNrcyA9IFtjYl07XG4gICAgdmFyIHN5bmMgPSB0cnVlO1xuXG4gICAgdmFy
IHJlc29sdmUgPSBmdW5jdGlvbiAocmVzKSB7XG4gICAgICBpZiAoaXNPYmplY3QocmVzKSkge1xu
ICAgICAgICByZXMgPSBiYXNlQ3Rvci5leHRlbmQocmVzKTtcbiAgICAgIH1cbiAgICAgIC8vIGNh
Y2hlIHJlc29sdmVkXG4gICAgICBmYWN0b3J5LnJlc29sdmVkID0gcmVzO1xuICAgICAgLy8gaW52
b2tlIGNhbGxiYWNrcyBvbmx5IGlmIHRoaXMgaXMgbm90IGEgc3luY2hyb25vdXMgcmVzb2x2ZVxu
ICAgICAgLy8gKGFzeW5jIHJlc29sdmVzIGFyZSBzaGltbWVkIGFzIHN5bmNocm9ub3VzIGR1cmlu
ZyBTU1IpXG4gICAgICBpZiAoIXN5bmMpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBj
YnMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgY2JzW2ldKHJlcyk7XG4gICAgICAg
IH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdmFyIHJlamVjdCA9IGZ1bmN0aW9uIChyZWFzb24p
IHtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgd2Fybihc
biAgICAgICAgXCJGYWlsZWQgdG8gcmVzb2x2ZSBhc3luYyBjb21wb25lbnQ6IFwiICsgKFN0cmlu
ZyhmYWN0b3J5KSkgK1xuICAgICAgICAocmVhc29uID8gKFwiXFxuUmVhc29uOiBcIiArIHJlYXNv
bikgOiAnJylcbiAgICAgICk7XG4gICAgfTtcblxuICAgIHZhciByZXMgPSBmYWN0b3J5KHJlc29s
dmUsIHJlamVjdCk7XG5cbiAgICAvLyBoYW5kbGUgcHJvbWlzZVxuICAgIGlmIChyZXMgJiYgdHlw
ZW9mIHJlcy50aGVuID09PSAnZnVuY3Rpb24nICYmICFmYWN0b3J5LnJlc29sdmVkKSB7XG4gICAg
ICByZXMudGhlbihyZXNvbHZlLCByZWplY3QpO1xuICAgIH1cblxuICAgIHN5bmMgPSBmYWxzZTtc
biAgICAvLyByZXR1cm4gaW4gY2FzZSByZXNvbHZlZCBzeW5jaHJvbm91c2x5XG4gICAgcmV0dXJu
IGZhY3RvcnkucmVzb2x2ZWRcbiAgfVxufVxuXG5mdW5jdGlvbiBleHRyYWN0UHJvcHMgKGRhdGEs
IEN0b3IpIHtcbiAgLy8gd2UgYXJlIG9ubHkgZXh0cmFjdGluZyByYXcgdmFsdWVzIGhlcmUuXG4g
IC8vIHZhbGlkYXRpb24gYW5kIGRlZmF1bHQgdmFsdWVzIGFyZSBoYW5kbGVkIGluIHRoZSBjaGls
ZFxuICAvLyBjb21wb25lbnQgaXRzZWxmLlxuICB2YXIgcHJvcE9wdGlvbnMgPSBDdG9yLm9wdGlv
bnMucHJvcHM7XG4gIGlmICghcHJvcE9wdGlvbnMpIHtcbiAgICByZXR1cm5cbiAgfVxuICB2YXIg
cmVzID0ge307XG4gIHZhciBhdHRycyA9IGRhdGEuYXR0cnM7XG4gIHZhciBwcm9wcyA9IGRhdGEu
cHJvcHM7XG4gIHZhciBkb21Qcm9wcyA9IGRhdGEuZG9tUHJvcHM7XG4gIGlmIChhdHRycyB8fCBw
cm9wcyB8fCBkb21Qcm9wcykge1xuICAgIGZvciAodmFyIGtleSBpbiBwcm9wT3B0aW9ucykge1xu
ICAgICAgdmFyIGFsdEtleSA9IGh5cGhlbmF0ZShrZXkpO1xuICAgICAgY2hlY2tQcm9wKHJlcywg
cHJvcHMsIGtleSwgYWx0S2V5LCB0cnVlKSB8fFxuICAgICAgY2hlY2tQcm9wKHJlcywgYXR0cnMs
IGtleSwgYWx0S2V5KSB8fFxuICAgICAgY2hlY2tQcm9wKHJlcywgZG9tUHJvcHMsIGtleSwgYWx0
S2V5KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG5mdW5jdGlvbiBjaGVja1Byb3Ag
KFxuICByZXMsXG4gIGhhc2gsXG4gIGtleSxcbiAgYWx0S2V5LFxuICBwcmVzZXJ2ZVxuKSB7XG4g
IGlmIChoYXNoKSB7XG4gICAgaWYgKGhhc093bihoYXNoLCBrZXkpKSB7XG4gICAgICByZXNba2V5
XSA9IGhhc2hba2V5XTtcbiAgICAgIGlmICghcHJlc2VydmUpIHtcbiAgICAgICAgZGVsZXRlIGhh
c2hba2V5XTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlXG4gICAgfSBlbHNlIGlmIChoYXNP
d24oaGFzaCwgYWx0S2V5KSkge1xuICAgICAgcmVzW2tleV0gPSBoYXNoW2FsdEtleV07XG4gICAg
ICBpZiAoIXByZXNlcnZlKSB7XG4gICAgICAgIGRlbGV0ZSBoYXNoW2FsdEtleV07XG4gICAgICB9
XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2Vcbn1cblxuZnVu
Y3Rpb24gbWVyZ2VIb29rcyAoZGF0YSkge1xuICBpZiAoIWRhdGEuaG9vaykge1xuICAgIGRhdGEu
aG9vayA9IHt9O1xuICB9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgaG9va3NUb01lcmdlLmxlbmd0
aDsgaSsrKSB7XG4gICAgdmFyIGtleSA9IGhvb2tzVG9NZXJnZVtpXTtcbiAgICB2YXIgZnJvbVBh
cmVudCA9IGRhdGEuaG9va1trZXldO1xuICAgIHZhciBvdXJzID0gaG9va3Nba2V5XTtcbiAgICBk
YXRhLmhvb2tba2V5XSA9IGZyb21QYXJlbnQgPyBtZXJnZUhvb2skMShvdXJzLCBmcm9tUGFyZW50
KSA6IG91cnM7XG4gIH1cbn1cblxuZnVuY3Rpb24gbWVyZ2VIb29rJDEgKGEsIGIpIHtcbiAgLy8g
c2luY2UgYWxsIGhvb2tzIGhhdmUgYXQgbW9zdCB0d28gYXJncywgdXNlIGZpeGVkIGFyZ3NcbiAg
Ly8gdG8gYXZvaWQgaGF2aW5nIHRvIHVzZSBmbi5hcHBseSgpLlxuICByZXR1cm4gZnVuY3Rpb24g
KF8sIF9fKSB7XG4gICAgYShfLCBfXyk7XG4gICAgYihfLCBfXyk7XG4gIH1cbn1cblxuLyogICov
XG5cbi8vIHdyYXBwZXIgZnVuY3Rpb24gZm9yIHByb3ZpZGluZyBhIG1vcmUgZmxleGlibGUgaW50
ZXJmYWNlXG4vLyB3aXRob3V0IGdldHRpbmcgeWVsbGVkIGF0IGJ5IGZsb3dcbmZ1bmN0aW9uIGNy
ZWF0ZUVsZW1lbnQgKFxuICB0YWcsXG4gIGRhdGEsXG4gIGNoaWxkcmVuXG4pIHtcbiAgaWYgKGRh
dGEgJiYgKEFycmF5LmlzQXJyYXkoZGF0YSkgfHwgdHlwZW9mIGRhdGEgIT09ICdvYmplY3QnKSkg
e1xuICAgIGNoaWxkcmVuID0gZGF0YTtcbiAgICBkYXRhID0gdW5kZWZpbmVkO1xuICB9XG4gIC8v
IG1ha2Ugc3VyZSB0byB1c2UgcmVhbCBpbnN0YW5jZSBpbnN0ZWFkIG9mIHByb3h5IGFzIGNvbnRl
eHRcbiAgcmV0dXJuIF9jcmVhdGVFbGVtZW50KHRoaXMuX3NlbGYsIHRhZywgZGF0YSwgY2hpbGRy
ZW4pXG59XG5cbmZ1bmN0aW9uIF9jcmVhdGVFbGVtZW50IChcbiAgY29udGV4dCxcbiAgdGFnLFxu
ICBkYXRhLFxuICBjaGlsZHJlblxuKSB7XG4gIGlmIChkYXRhICYmIGRhdGEuX19vYl9fKSB7XG4g
ICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAg
XCJBdm9pZCB1c2luZyBvYnNlcnZlZCBkYXRhIG9iamVjdCBhcyB2bm9kZSBkYXRhOiBcIiArIChK
U09OLnN0cmluZ2lmeShkYXRhKSkgKyBcIlxcblwiICtcbiAgICAgICdBbHdheXMgY3JlYXRlIGZy
ZXNoIHZub2RlIGRhdGEgb2JqZWN0cyBpbiBlYWNoIHJlbmRlciEnLFxuICAgICAgY29udGV4dFxu
ICAgICk7XG4gICAgcmV0dXJuXG4gIH1cbiAgaWYgKCF0YWcpIHtcbiAgICAvLyBpbiBjYXNlIG9m
IGNvbXBvbmVudCA6aXMgc2V0IHRvIGZhbHN5IHZhbHVlXG4gICAgcmV0dXJuIGVtcHR5Vk5vZGUo
KVxuICB9XG4gIC8vIHN1cHBvcnQgc2luZ2xlIGZ1bmN0aW9uIGNoaWxkcmVuIGFzIGRlZmF1bHQg
c2NvcGVkIHNsb3RcbiAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pICYmXG4gICAgICB0eXBl
b2YgY2hpbGRyZW5bMF0gPT09ICdmdW5jdGlvbicpIHtcbiAgICBkYXRhID0gZGF0YSB8fCB7fTtc
biAgICBkYXRhLnNjb3BlZFNsb3RzID0geyBkZWZhdWx0OiBjaGlsZHJlblswXSB9O1xuICAgIGNo
aWxkcmVuLmxlbmd0aCA9IDA7XG4gIH1cbiAgaWYgKHR5cGVvZiB0YWcgPT09ICdzdHJpbmcnKSB7
XG4gICAgdmFyIEN0b3I7XG4gICAgdmFyIG5zID0gY29uZmlnLmdldFRhZ05hbWVzcGFjZSh0YWcp
O1xuICAgIGlmIChjb25maWcuaXNSZXNlcnZlZFRhZyh0YWcpKSB7XG4gICAgICAvLyBwbGF0Zm9y
bSBidWlsdC1pbiBlbGVtZW50c1xuICAgICAgcmV0dXJuIG5ldyBWTm9kZShcbiAgICAgICAgdGFn
LCBkYXRhLCBub3JtYWxpemVDaGlsZHJlbihjaGlsZHJlbiwgbnMpLFxuICAgICAgICB1bmRlZmlu
ZWQsIHVuZGVmaW5lZCwgbnMsIGNvbnRleHRcbiAgICAgIClcbiAgICB9IGVsc2UgaWYgKChDdG9y
ID0gcmVzb2x2ZUFzc2V0KGNvbnRleHQuJG9wdGlvbnMsICdjb21wb25lbnRzJywgdGFnKSkpIHtc
biAgICAgIC8vIGNvbXBvbmVudFxuICAgICAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChDdG9yLCBk
YXRhLCBjb250ZXh0LCBjaGlsZHJlbiwgdGFnKVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyB1bmtu
b3duIG9yIHVubGlzdGVkIG5hbWVzcGFjZWQgZWxlbWVudHNcbiAgICAgIC8vIGNoZWNrIGF0IHJ1
bnRpbWUgYmVjYXVzZSBpdCBtYXkgZ2V0IGFzc2lnbmVkIGEgbmFtZXNwYWNlIHdoZW4gaXRzXG4g
ICAgICAvLyBwYXJlbnQgbm9ybWFsaXplcyBjaGlsZHJlblxuICAgICAgdmFyIGNoaWxkTnMgPSB0
YWcgPT09ICdmb3JlaWduT2JqZWN0JyA/ICd4aHRtbCcgOiBucztcbiAgICAgIHJldHVybiBuZXcg
Vk5vZGUoXG4gICAgICAgIHRhZywgZGF0YSwgbm9ybWFsaXplQ2hpbGRyZW4oY2hpbGRyZW4sIGNo
aWxkTnMpLFxuICAgICAgICB1bmRlZmluZWQsIHVuZGVmaW5lZCwgbnMsIGNvbnRleHRcbiAgICAg
IClcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gZGlyZWN0IGNvbXBvbmVudCBvcHRpb25zIC8g
Y29uc3RydWN0b3JcbiAgICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KHRhZywgZGF0YSwgY29udGV4
dCwgY2hpbGRyZW4pXG4gIH1cbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGluaXRSZW5kZXIgKHZt
KSB7XG4gIHZtLiR2bm9kZSA9IG51bGw7IC8vIHRoZSBwbGFjZWhvbGRlciBub2RlIGluIHBhcmVu
dCB0cmVlXG4gIHZtLl92bm9kZSA9IG51bGw7IC8vIHRoZSByb290IG9mIHRoZSBjaGlsZCB0cmVl
XG4gIHZtLl9zdGF0aWNUcmVlcyA9IG51bGw7XG4gIHZtLl9yZW5kZXJDb250ZXh0ID0gdm0uJG9w
dGlvbnMuX3BhcmVudFZub2RlICYmIHZtLiRvcHRpb25zLl9wYXJlbnRWbm9kZS5jb250ZXh0O1xu
ICB2bS4kc2xvdHMgPSByZXNvbHZlU2xvdHModm0uJG9wdGlvbnMuX3JlbmRlckNoaWxkcmVuLCB2
bS5fcmVuZGVyQ29udGV4dCk7XG4gIHZtLiRzY29wZWRTbG90cyA9IHt9O1xuICAvLyBiaW5kIHRo
ZSBwdWJsaWMgY3JlYXRlRWxlbWVudCBmbiB0byB0aGlzIGluc3RhbmNlXG4gIC8vIHNvIHRoYXQg
d2UgZ2V0IHByb3BlciByZW5kZXIgY29udGV4dCBpbnNpZGUgaXQuXG4gIHZtLiRjcmVhdGVFbGVt
ZW50ID0gYmluZCQxKGNyZWF0ZUVsZW1lbnQsIHZtKTtcbiAgaWYgKHZtLiRvcHRpb25zLmVsKSB7
XG4gICAgdm0uJG1vdW50KHZtLiRvcHRpb25zLmVsKTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZW5k
ZXJNaXhpbiAoVnVlKSB7XG4gIFZ1ZS5wcm90b3R5cGUuJG5leHRUaWNrID0gZnVuY3Rpb24gKGZu
KSB7XG4gICAgcmV0dXJuIG5leHRUaWNrKGZuLCB0aGlzKVxuICB9O1xuXG4gIFZ1ZS5wcm90b3R5
cGUuX3JlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdm0gPSB0aGlzO1xuICAgIHZhciBy
ZWYgPSB2bS4kb3B0aW9ucztcbiAgICB2YXIgcmVuZGVyID0gcmVmLnJlbmRlcjtcbiAgICB2YXIg
c3RhdGljUmVuZGVyRm5zID0gcmVmLnN0YXRpY1JlbmRlckZucztcbiAgICB2YXIgX3BhcmVudFZu
b2RlID0gcmVmLl9wYXJlbnRWbm9kZTtcblxuICAgIGlmICh2bS5faXNNb3VudGVkKSB7XG4gICAg
ICAvLyBjbG9uZSBzbG90IG5vZGVzIG9uIHJlLXJlbmRlcnNcbiAgICAgIGZvciAodmFyIGtleSBp
biB2bS4kc2xvdHMpIHtcbiAgICAgICAgdm0uJHNsb3RzW2tleV0gPSBjbG9uZVZOb2Rlcyh2bS4k
c2xvdHNba2V5XSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKF9wYXJlbnRWbm9kZSAmJiBf
cGFyZW50Vm5vZGUuZGF0YS5zY29wZWRTbG90cykge1xuICAgICAgdm0uJHNjb3BlZFNsb3RzID0g
X3BhcmVudFZub2RlLmRhdGEuc2NvcGVkU2xvdHM7XG4gICAgfVxuXG4gICAgaWYgKHN0YXRpY1Jl
bmRlckZucyAmJiAhdm0uX3N0YXRpY1RyZWVzKSB7XG4gICAgICB2bS5fc3RhdGljVHJlZXMgPSBb
XTtcbiAgICB9XG4gICAgLy8gc2V0IHBhcmVudCB2bm9kZS4gdGhpcyBhbGxvd3MgcmVuZGVyIGZ1
bmN0aW9ucyB0byBoYXZlIGFjY2Vzc1xuICAgIC8vIHRvIHRoZSBkYXRhIG9uIHRoZSBwbGFjZWhv
bGRlciBub2RlLlxuICAgIHZtLiR2bm9kZSA9IF9wYXJlbnRWbm9kZTtcbiAgICAvLyByZW5kZXIg
c2VsZlxuICAgIHZhciB2bm9kZTtcbiAgICB0cnkge1xuICAgICAgdm5vZGUgPSByZW5kZXIuY2Fs
bCh2bS5fcmVuZGVyUHJveHksIHZtLiRjcmVhdGVFbGVtZW50KTtcbiAgICB9IGNhdGNoIChlKSB7
XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAg
ICAgICB3YXJuKChcIkVycm9yIHdoZW4gcmVuZGVyaW5nIFwiICsgKGZvcm1hdENvbXBvbmVudE5h
bWUodm0pKSArIFwiOlwiKSk7XG4gICAgICB9XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxz
ZSAqL1xuICAgICAgaWYgKGNvbmZpZy5lcnJvckhhbmRsZXIpIHtcbiAgICAgICAgY29uZmlnLmVy
cm9ySGFuZGxlci5jYWxsKG51bGwsIGUsIHZtKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlm
IChpc1NlcnZlclJlbmRlcmluZygpKSB7XG4gICAgICAgICAgdGhyb3cgZVxuICAgICAgICB9IGVs
c2Uge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAg
ICAgIC8vIHJldHVybiBwcmV2aW91cyB2bm9kZSB0byBwcmV2ZW50IHJlbmRlciBlcnJvciBjYXVz
aW5nIGJsYW5rIGNvbXBvbmVudFxuICAgICAgdm5vZGUgPSB2bS5fdm5vZGU7XG4gICAgfVxuICAg
IC8vIHJldHVybiBlbXB0eSB2bm9kZSBpbiBjYXNlIHRoZSByZW5kZXIgZnVuY3Rpb24gZXJyb3Jl
ZCBvdXRcbiAgICBpZiAoISh2bm9kZSBpbnN0YW5jZW9mIFZOb2RlKSkge1xuICAgICAgaWYgKHBy
b2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgQXJyYXkuaXNBcnJheSh2bm9k
ZSkpIHtcbiAgICAgICAgd2FybihcbiAgICAgICAgICAnTXVsdGlwbGUgcm9vdCBub2RlcyByZXR1
cm5lZCBmcm9tIHJlbmRlciBmdW5jdGlvbi4gUmVuZGVyIGZ1bmN0aW9uICcgK1xuICAgICAgICAg
ICdzaG91bGQgcmV0dXJuIGEgc2luZ2xlIHJvb3Qgbm9kZS4nLFxuICAgICAgICAgIHZtXG4gICAg
ICAgICk7XG4gICAgICB9XG4gICAgICB2bm9kZSA9IGVtcHR5Vk5vZGUoKTtcbiAgICB9XG4gICAg
Ly8gc2V0IHBhcmVudFxuICAgIHZub2RlLnBhcmVudCA9IF9wYXJlbnRWbm9kZTtcbiAgICByZXR1
cm4gdm5vZGVcbiAgfTtcblxuICAvLyBzaG9ydGhhbmRzIHVzZWQgaW4gcmVuZGVyIGZ1bmN0aW9u
c1xuICBWdWUucHJvdG90eXBlLl9oID0gY3JlYXRlRWxlbWVudDtcbiAgLy8gdG9TdHJpbmcgZm9y
IG11c3RhY2hlc1xuICBWdWUucHJvdG90eXBlLl9zID0gX3RvU3RyaW5nO1xuICAvLyBudW1iZXIg
Y29udmVyc2lvblxuICBWdWUucHJvdG90eXBlLl9uID0gdG9OdW1iZXI7XG4gIC8vIGVtcHR5IHZu
b2RlXG4gIFZ1ZS5wcm90b3R5cGUuX2UgPSBlbXB0eVZOb2RlO1xuICAvLyBsb29zZSBlcXVhbFxu
ICBWdWUucHJvdG90eXBlLl9xID0gbG9vc2VFcXVhbDtcbiAgLy8gbG9vc2UgaW5kZXhPZlxuICBW
dWUucHJvdG90eXBlLl9pID0gbG9vc2VJbmRleE9mO1xuXG4gIC8vIHJlbmRlciBzdGF0aWMgdHJl
ZSBieSBpbmRleFxuICBWdWUucHJvdG90eXBlLl9tID0gZnVuY3Rpb24gcmVuZGVyU3RhdGljIChc
biAgICBpbmRleCxcbiAgICBpc0luRm9yXG4gICkge1xuICAgIHZhciB0cmVlID0gdGhpcy5fc3Rh
dGljVHJlZXNbaW5kZXhdO1xuICAgIC8vIGlmIGhhcyBhbHJlYWR5LXJlbmRlcmVkIHN0YXRpYyB0
cmVlIGFuZCBub3QgaW5zaWRlIHYtZm9yLFxuICAgIC8vIHdlIGNhbiByZXVzZSB0aGUgc2FtZSB0
cmVlIGJ5IGRvaW5nIGEgc2hhbGxvdyBjbG9uZS5cbiAgICBpZiAodHJlZSAmJiAhaXNJbkZvcikg
e1xuICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHJlZSlcbiAgICAgICAgPyBjbG9uZVZOb2Rl
cyh0cmVlKVxuICAgICAgICA6IGNsb25lVk5vZGUodHJlZSlcbiAgICB9XG4gICAgLy8gb3RoZXJ3
aXNlLCByZW5kZXIgYSBmcmVzaCB0cmVlLlxuICAgIHRyZWUgPSB0aGlzLl9zdGF0aWNUcmVlc1tp
bmRleF0gPSB0aGlzLiRvcHRpb25zLnN0YXRpY1JlbmRlckZuc1tpbmRleF0uY2FsbCh0aGlzLl9y
ZW5kZXJQcm94eSk7XG4gICAgbWFya1N0YXRpYyh0cmVlLCAoXCJfX3N0YXRpY19fXCIgKyBpbmRl
eCksIGZhbHNlKTtcbiAgICByZXR1cm4gdHJlZVxuICB9O1xuXG4gIC8vIG1hcmsgbm9kZSBhcyBz
dGF0aWMgKHYtb25jZSlcbiAgVnVlLnByb3RvdHlwZS5fbyA9IGZ1bmN0aW9uIG1hcmtPbmNlIChc
biAgICB0cmVlLFxuICAgIGluZGV4LFxuICAgIGtleVxuICApIHtcbiAgICBtYXJrU3RhdGljKHRy
ZWUsIChcIl9fb25jZV9fXCIgKyBpbmRleCArIChrZXkgPyAoXCJfXCIgKyBrZXkpIDogXCJcIikp
LCB0cnVlKTtcbiAgICByZXR1cm4gdHJlZVxuICB9O1xuXG4gIGZ1bmN0aW9uIG1hcmtTdGF0aWMg
KHRyZWUsIGtleSwgaXNPbmNlKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodHJlZSkpIHtcbiAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdHJlZS5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAo
dHJlZVtpXSAmJiB0eXBlb2YgdHJlZVtpXSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBtYXJr
U3RhdGljTm9kZSh0cmVlW2ldLCAoa2V5ICsgXCJfXCIgKyBpKSwgaXNPbmNlKTtcbiAgICAgICAg
fVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBtYXJrU3RhdGljTm9kZSh0cmVlLCBrZXks
IGlzT25jZSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gbWFya1N0YXRpY05vZGUgKG5vZGUs
IGtleSwgaXNPbmNlKSB7XG4gICAgbm9kZS5pc1N0YXRpYyA9IHRydWU7XG4gICAgbm9kZS5rZXkg
PSBrZXk7XG4gICAgbm9kZS5pc09uY2UgPSBpc09uY2U7XG4gIH1cblxuICAvLyBmaWx0ZXIgcmVz
b2x1dGlvbiBoZWxwZXJcbiAgdmFyIGlkZW50aXR5ID0gZnVuY3Rpb24gKF8pIHsgcmV0dXJuIF87
IH07XG4gIFZ1ZS5wcm90b3R5cGUuX2YgPSBmdW5jdGlvbiByZXNvbHZlRmlsdGVyIChpZCkge1xu
ICAgIHJldHVybiByZXNvbHZlQXNzZXQodGhpcy4kb3B0aW9ucywgJ2ZpbHRlcnMnLCBpZCwgdHJ1
ZSkgfHwgaWRlbnRpdHlcbiAgfTtcblxuICAvLyByZW5kZXIgdi1mb3JcbiAgVnVlLnByb3RvdHlw
ZS5fbCA9IGZ1bmN0aW9uIHJlbmRlckxpc3QgKFxuICAgIHZhbCxcbiAgICByZW5kZXJcbiAgKSB7
XG4gICAgdmFyIHJldCwgaSwgbCwga2V5cywga2V5O1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZh
bCkpIHtcbiAgICAgIHJldCA9IG5ldyBBcnJheSh2YWwubGVuZ3RoKTtcbiAgICAgIGZvciAoaSA9
IDAsIGwgPSB2YWwubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIHJldFtpXSA9IHJlbmRl
cih2YWxbaV0sIGkpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbCA9PT0gJ251
bWJlcicpIHtcbiAgICAgIHJldCA9IG5ldyBBcnJheSh2YWwpO1xuICAgICAgZm9yIChpID0gMDsg
aSA8IHZhbDsgaSsrKSB7XG4gICAgICAgIHJldFtpXSA9IHJlbmRlcihpICsgMSwgaSk7XG4gICAg
ICB9XG4gICAgfSBlbHNlIGlmIChpc09iamVjdCh2YWwpKSB7XG4gICAgICBrZXlzID0gT2JqZWN0
LmtleXModmFsKTtcbiAgICAgIHJldCA9IG5ldyBBcnJheShrZXlzLmxlbmd0aCk7XG4gICAgICBm
b3IgKGkgPSAwLCBsID0ga2V5cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAga2V5ID0g
a2V5c1tpXTtcbiAgICAgICAgcmV0W2ldID0gcmVuZGVyKHZhbFtrZXldLCBrZXksIGkpO1xuICAg
ICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmV0XG4gIH07XG5cbiAgLy8gcmVuZGVyU2xvdFxuICBW
dWUucHJvdG90eXBlLl90ID0gZnVuY3Rpb24gKFxuICAgIG5hbWUsXG4gICAgZmFsbGJhY2ssXG4g
ICAgcHJvcHNcbiAgKSB7XG4gICAgdmFyIHNjb3BlZFNsb3RGbiA9IHRoaXMuJHNjb3BlZFNsb3Rz
W25hbWVdO1xuICAgIGlmIChzY29wZWRTbG90Rm4pIHsgLy8gc2NvcGVkIHNsb3RcbiAgICAgIHJl
dHVybiBzY29wZWRTbG90Rm4ocHJvcHMgfHwge30pIHx8IGZhbGxiYWNrXG4gICAgfSBlbHNlIHtc
biAgICAgIHZhciBzbG90Tm9kZXMgPSB0aGlzLiRzbG90c1tuYW1lXTtcbiAgICAgIC8vIHdhcm4g
ZHVwbGljYXRlIHNsb3QgdXNhZ2VcbiAgICAgIGlmIChzbG90Tm9kZXMgJiYgcHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBzbG90Tm9kZXMuX3JlbmRlcmVk
ICYmIHdhcm4oXG4gICAgICAgICAgXCJEdXBsaWNhdGUgcHJlc2VuY2Ugb2Ygc2xvdCBcXFwiXCIg
KyBuYW1lICsgXCJcXFwiIGZvdW5kIGluIHRoZSBzYW1lIHJlbmRlciB0cmVlIFwiICtcbiAgICAg
ICAgICBcIi0gdGhpcyB3aWxsIGxpa2VseSBjYXVzZSByZW5kZXIgZXJyb3JzLlwiLFxuICAgICAg
ICAgIHRoaXNcbiAgICAgICAgKTtcbiAgICAgICAgc2xvdE5vZGVzLl9yZW5kZXJlZCA9IHRydWU7
XG4gICAgICB9XG4gICAgICByZXR1cm4gc2xvdE5vZGVzIHx8IGZhbGxiYWNrXG4gICAgfVxuICB9
O1xuXG4gIC8vIGFwcGx5IHYtYmluZCBvYmplY3RcbiAgVnVlLnByb3RvdHlwZS5fYiA9IGZ1bmN0
aW9uIGJpbmRQcm9wcyAoXG4gICAgZGF0YSxcbiAgICB0YWcsXG4gICAgdmFsdWUsXG4gICAgYXNQ
cm9wXG4gICkge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgaWYgKCFpc09iamVjdCh2YWx1ZSkp
IHtcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJu
KFxuICAgICAgICAgICd2LWJpbmQgd2l0aG91dCBhcmd1bWVudCBleHBlY3RzIGFuIE9iamVjdCBv
ciBBcnJheSB2YWx1ZScsXG4gICAgICAgICAgdGhpc1xuICAgICAgICApO1xuICAgICAgfSBlbHNl
IHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgdmFsdWUg
PSB0b09iamVjdCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yICh2YXIga2V5IGluIHZh
bHVlKSB7XG4gICAgICAgICAgaWYgKGtleSA9PT0gJ2NsYXNzJyB8fCBrZXkgPT09ICdzdHlsZScp
IHtcbiAgICAgICAgICAgIGRhdGFba2V5XSA9IHZhbHVlW2tleV07XG4gICAgICAgICAgfSBlbHNl
IHtcbiAgICAgICAgICAgIHZhciBoYXNoID0gYXNQcm9wIHx8IGNvbmZpZy5tdXN0VXNlUHJvcCh0
YWcsIGtleSlcbiAgICAgICAgICAgICAgPyBkYXRhLmRvbVByb3BzIHx8IChkYXRhLmRvbVByb3Bz
ID0ge30pXG4gICAgICAgICAgICAgIDogZGF0YS5hdHRycyB8fCAoZGF0YS5hdHRycyA9IHt9KTtc
biAgICAgICAgICAgIGhhc2hba2V5XSA9IHZhbHVlW2tleV07XG4gICAgICAgICAgfVxuICAgICAg
ICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBkYXRhXG4gIH07XG5cbiAgLy8gZXhwb3Nl
IHYtb24ga2V5Q29kZXNcbiAgVnVlLnByb3RvdHlwZS5fayA9IGZ1bmN0aW9uIGdldEtleUNvZGVz
IChrZXkpIHtcbiAgICByZXR1cm4gY29uZmlnLmtleUNvZGVzW2tleV1cbiAgfTtcbn1cblxuZnVu
Y3Rpb24gcmVzb2x2ZVNsb3RzIChcbiAgcmVuZGVyQ2hpbGRyZW4sXG4gIGNvbnRleHRcbikge1xu
ICB2YXIgc2xvdHMgPSB7fTtcbiAgaWYgKCFyZW5kZXJDaGlsZHJlbikge1xuICAgIHJldHVybiBz
bG90c1xuICB9XG4gIHZhciBjaGlsZHJlbiA9IG5vcm1hbGl6ZUNoaWxkcmVuKHJlbmRlckNoaWxk
cmVuKSB8fCBbXTtcbiAgdmFyIGRlZmF1bHRTbG90ID0gW107XG4gIHZhciBuYW1lLCBjaGlsZDtc
biAgZm9yICh2YXIgaSA9IDAsIGwgPSBjaGlsZHJlbi5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAg
ICBjaGlsZCA9IGNoaWxkcmVuW2ldO1xuICAgIC8vIG5hbWVkIHNsb3RzIHNob3VsZCBvbmx5IGJl
IHJlc3BlY3RlZCBpZiB0aGUgdm5vZGUgd2FzIHJlbmRlcmVkIGluIHRoZVxuICAgIC8vIHNhbWUg
Y29udGV4dC5cbiAgICBpZiAoKGNoaWxkLmNvbnRleHQgPT09IGNvbnRleHQgfHwgY2hpbGQuZnVu
Y3Rpb25hbENvbnRleHQgPT09IGNvbnRleHQpICYmXG4gICAgICAgIGNoaWxkLmRhdGEgJiYgKG5h
bWUgPSBjaGlsZC5kYXRhLnNsb3QpKSB7XG4gICAgICB2YXIgc2xvdCA9IChzbG90c1tuYW1lXSB8
fCAoc2xvdHNbbmFtZV0gPSBbXSkpO1xuICAgICAgaWYgKGNoaWxkLnRhZyA9PT0gJ3RlbXBsYXRl
Jykge1xuICAgICAgICBzbG90LnB1c2guYXBwbHkoc2xvdCwgY2hpbGQuY2hpbGRyZW4pO1xuICAg
ICAgfSBlbHNlIHtcbiAgICAgICAgc2xvdC5wdXNoKGNoaWxkKTtcbiAgICAgIH1cbiAgICB9IGVs
c2Uge1xuICAgICAgZGVmYXVsdFNsb3QucHVzaChjaGlsZCk7XG4gICAgfVxuICB9XG4gIC8vIGln
bm9yZSBzaW5nbGUgd2hpdGVzcGFjZVxuICBpZiAoZGVmYXVsdFNsb3QubGVuZ3RoICYmICEoXG4g
ICAgZGVmYXVsdFNsb3QubGVuZ3RoID09PSAxICYmXG4gICAgKGRlZmF1bHRTbG90WzBdLnRleHQg
PT09ICcgJyB8fCBkZWZhdWx0U2xvdFswXS5pc0NvbW1lbnQpXG4gICkpIHtcbiAgICBzbG90cy5k
ZWZhdWx0ID0gZGVmYXVsdFNsb3Q7XG4gIH1cbiAgcmV0dXJuIHNsb3RzXG59XG5cbi8qICAqL1xu
XG5mdW5jdGlvbiBpbml0RXZlbnRzICh2bSkge1xuICB2bS5fZXZlbnRzID0gT2JqZWN0LmNyZWF0
ZShudWxsKTtcbiAgLy8gaW5pdCBwYXJlbnQgYXR0YWNoZWQgZXZlbnRzXG4gIHZhciBsaXN0ZW5l
cnMgPSB2bS4kb3B0aW9ucy5fcGFyZW50TGlzdGVuZXJzO1xuICB2YXIgb24gPSBiaW5kJDEodm0u
JG9uLCB2bSk7XG4gIHZhciBvZmYgPSBiaW5kJDEodm0uJG9mZiwgdm0pO1xuICB2bS5fdXBkYXRl
TGlzdGVuZXJzID0gZnVuY3Rpb24gKGxpc3RlbmVycywgb2xkTGlzdGVuZXJzKSB7XG4gICAgdXBk
YXRlTGlzdGVuZXJzKGxpc3RlbmVycywgb2xkTGlzdGVuZXJzIHx8IHt9LCBvbiwgb2ZmLCB2bSk7
XG4gIH07XG4gIGlmIChsaXN0ZW5lcnMpIHtcbiAgICB2bS5fdXBkYXRlTGlzdGVuZXJzKGxpc3Rl
bmVycyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZXZlbnRzTWl4aW4gKFZ1ZSkge1xuICBWdWUucHJv
dG90eXBlLiRvbiA9IGZ1bmN0aW9uIChldmVudCwgZm4pIHtcbiAgICB2YXIgdm0gPSB0aGlzOyh2
bS5fZXZlbnRzW2V2ZW50XSB8fCAodm0uX2V2ZW50c1tldmVudF0gPSBbXSkpLnB1c2goZm4pO1xu
ICAgIHJldHVybiB2bVxuICB9O1xuXG4gIFZ1ZS5wcm90b3R5cGUuJG9uY2UgPSBmdW5jdGlvbiAo
ZXZlbnQsIGZuKSB7XG4gICAgdmFyIHZtID0gdGhpcztcbiAgICBmdW5jdGlvbiBvbiAoKSB7XG4g
ICAgICB2bS4kb2ZmKGV2ZW50LCBvbik7XG4gICAgICBmbi5hcHBseSh2bSwgYXJndW1lbnRzKTtc
biAgICB9XG4gICAgb24uZm4gPSBmbjtcbiAgICB2bS4kb24oZXZlbnQsIG9uKTtcbiAgICByZXR1
cm4gdm1cbiAgfTtcblxuICBWdWUucHJvdG90eXBlLiRvZmYgPSBmdW5jdGlvbiAoZXZlbnQsIGZu
KSB7XG4gICAgdmFyIHZtID0gdGhpcztcbiAgICAvLyBhbGxcbiAgICBpZiAoIWFyZ3VtZW50cy5s
ZW5ndGgpIHtcbiAgICAgIHZtLl9ldmVudHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAg
cmV0dXJuIHZtXG4gICAgfVxuICAgIC8vIHNwZWNpZmljIGV2ZW50XG4gICAgdmFyIGNicyA9IHZt
Ll9ldmVudHNbZXZlbnRdO1xuICAgIGlmICghY2JzKSB7XG4gICAgICByZXR1cm4gdm1cbiAgICB9
XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEpIHtcbiAgICAgIHZtLl9ldmVudHNbZXZl
bnRdID0gbnVsbDtcbiAgICAgIHJldHVybiB2bVxuICAgIH1cbiAgICAvLyBzcGVjaWZpYyBoYW5k
bGVyXG4gICAgdmFyIGNiO1xuICAgIHZhciBpID0gY2JzLmxlbmd0aDtcbiAgICB3aGlsZSAoaS0t
KSB7XG4gICAgICBjYiA9IGNic1tpXTtcbiAgICAgIGlmIChjYiA9PT0gZm4gfHwgY2IuZm4gPT09
IGZuKSB7XG4gICAgICAgIGNicy5zcGxpY2UoaSwgMSk7XG4gICAgICAgIGJyZWFrXG4gICAgICB9
XG4gICAgfVxuICAgIHJldHVybiB2bVxuICB9O1xuXG4gIFZ1ZS5wcm90b3R5cGUuJGVtaXQgPSBm
dW5jdGlvbiAoZXZlbnQpIHtcbiAgICB2YXIgdm0gPSB0aGlzO1xuICAgIHZhciBjYnMgPSB2bS5f
ZXZlbnRzW2V2ZW50XTtcbiAgICBpZiAoY2JzKSB7XG4gICAgICBjYnMgPSBjYnMubGVuZ3RoID4g
MSA/IHRvQXJyYXkoY2JzKSA6IGNicztcbiAgICAgIHZhciBhcmdzID0gdG9BcnJheShhcmd1bWVu
dHMsIDEpO1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBjYnMubGVuZ3RoOyBpIDwgbDsgaSsr
KSB7XG4gICAgICAgIGNic1tpXS5hcHBseSh2bSwgYXJncyk7XG4gICAgICB9XG4gICAgfVxuICAg
IHJldHVybiB2bVxuICB9O1xufVxuXG4vKiAgKi9cblxudmFyIHVpZCA9IDA7XG5cbmZ1bmN0aW9u
IGluaXRNaXhpbiAoVnVlKSB7XG4gIFZ1ZS5wcm90b3R5cGUuX2luaXQgPSBmdW5jdGlvbiAob3B0
aW9ucykge1xuICAgIHZhciB2bSA9IHRoaXM7XG4gICAgLy8gYSB1aWRcbiAgICB2bS5fdWlkID0g
dWlkKys7XG4gICAgLy8gYSBmbGFnIHRvIGF2b2lkIHRoaXMgYmVpbmcgb2JzZXJ2ZWRcbiAgICB2
bS5faXNWdWUgPSB0cnVlO1xuICAgIC8vIG1lcmdlIG9wdGlvbnNcbiAgICBpZiAob3B0aW9ucyAm
JiBvcHRpb25zLl9pc0NvbXBvbmVudCkge1xuICAgICAgLy8gb3B0aW1pemUgaW50ZXJuYWwgY29t
cG9uZW50IGluc3RhbnRpYXRpb25cbiAgICAgIC8vIHNpbmNlIGR5bmFtaWMgb3B0aW9ucyBtZXJn
aW5nIGlzIHByZXR0eSBzbG93LCBhbmQgbm9uZSBvZiB0aGVcbiAgICAgIC8vIGludGVybmFsIGNv
bXBvbmVudCBvcHRpb25zIG5lZWRzIHNwZWNpYWwgdHJlYXRtZW50LlxuICAgICAgaW5pdEludGVy
bmFsQ29tcG9uZW50KHZtLCBvcHRpb25zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdm0uJG9wdGlv
bnMgPSBtZXJnZU9wdGlvbnMoXG4gICAgICAgIHJlc29sdmVDb25zdHJ1Y3Rvck9wdGlvbnModm0u
Y29uc3RydWN0b3IpLFxuICAgICAgICBvcHRpb25zIHx8IHt9LFxuICAgICAgICB2bVxuICAgICAg
KTtcbiAgICB9XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAocHJvY2Vz
cy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaW5pdFByb3h5KHZtKTtc
biAgICB9IGVsc2Uge1xuICAgICAgdm0uX3JlbmRlclByb3h5ID0gdm07XG4gICAgfVxuICAgIC8v
IGV4cG9zZSByZWFsIHNlbGZcbiAgICB2bS5fc2VsZiA9IHZtO1xuICAgIGluaXRMaWZlY3ljbGUo
dm0pO1xuICAgIGluaXRFdmVudHModm0pO1xuICAgIGNhbGxIb29rKHZtLCAnYmVmb3JlQ3JlYXRl
Jyk7XG4gICAgaW5pdFN0YXRlKHZtKTtcbiAgICBjYWxsSG9vayh2bSwgJ2NyZWF0ZWQnKTtcbiAg
ICBpbml0UmVuZGVyKHZtKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gaW5pdEludGVybmFsQ29tcG9u
ZW50ICh2bSwgb3B0aW9ucykge1xuICB2YXIgb3B0cyA9IHZtLiRvcHRpb25zID0gT2JqZWN0LmNy
ZWF0ZSh2bS5jb25zdHJ1Y3Rvci5vcHRpb25zKTtcbiAgLy8gZG9pbmcgdGhpcyBiZWNhdXNlIGl0
J3MgZmFzdGVyIHRoYW4gZHluYW1pYyBlbnVtZXJhdGlvbi5cbiAgb3B0cy5wYXJlbnQgPSBvcHRp
b25zLnBhcmVudDtcbiAgb3B0cy5wcm9wc0RhdGEgPSBvcHRpb25zLnByb3BzRGF0YTtcbiAgb3B0
cy5fcGFyZW50Vm5vZGUgPSBvcHRpb25zLl9wYXJlbnRWbm9kZTtcbiAgb3B0cy5fcGFyZW50TGlz
dGVuZXJzID0gb3B0aW9ucy5fcGFyZW50TGlzdGVuZXJzO1xuICBvcHRzLl9yZW5kZXJDaGlsZHJl
biA9IG9wdGlvbnMuX3JlbmRlckNoaWxkcmVuO1xuICBvcHRzLl9jb21wb25lbnRUYWcgPSBvcHRp
b25zLl9jb21wb25lbnRUYWc7XG4gIGlmIChvcHRpb25zLnJlbmRlcikge1xuICAgIG9wdHMucmVu
ZGVyID0gb3B0aW9ucy5yZW5kZXI7XG4gICAgb3B0cy5zdGF0aWNSZW5kZXJGbnMgPSBvcHRpb25z
LnN0YXRpY1JlbmRlckZucztcbiAgfVxufVxuXG5mdW5jdGlvbiByZXNvbHZlQ29uc3RydWN0b3JP
cHRpb25zIChDdG9yKSB7XG4gIHZhciBvcHRpb25zID0gQ3Rvci5vcHRpb25zO1xuICBpZiAoQ3Rv
ci5zdXBlcikge1xuICAgIHZhciBzdXBlck9wdGlvbnMgPSBDdG9yLnN1cGVyLm9wdGlvbnM7XG4g
ICAgdmFyIGNhY2hlZFN1cGVyT3B0aW9ucyA9IEN0b3Iuc3VwZXJPcHRpb25zO1xuICAgIHZhciBl
eHRlbmRPcHRpb25zID0gQ3Rvci5leHRlbmRPcHRpb25zO1xuICAgIGlmIChzdXBlck9wdGlvbnMg
IT09IGNhY2hlZFN1cGVyT3B0aW9ucykge1xuICAgICAgLy8gc3VwZXIgb3B0aW9uIGNoYW5nZWRc
biAgICAgIEN0b3Iuc3VwZXJPcHRpb25zID0gc3VwZXJPcHRpb25zO1xuICAgICAgZXh0ZW5kT3B0
aW9ucy5yZW5kZXIgPSBvcHRpb25zLnJlbmRlcjtcbiAgICAgIGV4dGVuZE9wdGlvbnMuc3RhdGlj
UmVuZGVyRm5zID0gb3B0aW9ucy5zdGF0aWNSZW5kZXJGbnM7XG4gICAgICBleHRlbmRPcHRpb25z
Ll9zY29wZUlkID0gb3B0aW9ucy5fc2NvcGVJZDtcbiAgICAgIG9wdGlvbnMgPSBDdG9yLm9wdGlv
bnMgPSBtZXJnZU9wdGlvbnMoc3VwZXJPcHRpb25zLCBleHRlbmRPcHRpb25zKTtcbiAgICAgIGlm
IChvcHRpb25zLm5hbWUpIHtcbiAgICAgICAgb3B0aW9ucy5jb21wb25lbnRzW29wdGlvbnMubmFt
ZV0gPSBDdG9yO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gb3B0aW9uc1xufVxuXG5m
dW5jdGlvbiBWdWUkMyAob3B0aW9ucykge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09
ICdwcm9kdWN0aW9uJyAmJlxuICAgICEodGhpcyBpbnN0YW5jZW9mIFZ1ZSQzKSkge1xuICAgIHdh
cm4oJ1Z1ZSBpcyBhIGNvbnN0cnVjdG9yIGFuZCBzaG91bGQgYmUgY2FsbGVkIHdpdGggdGhlIGBu
ZXdgIGtleXdvcmQnKTtcbiAgfVxuICB0aGlzLl9pbml0KG9wdGlvbnMpO1xufVxuXG5pbml0TWl4
aW4oVnVlJDMpO1xuc3RhdGVNaXhpbihWdWUkMyk7XG5ldmVudHNNaXhpbihWdWUkMyk7XG5saWZl
Y3ljbGVNaXhpbihWdWUkMyk7XG5yZW5kZXJNaXhpbihWdWUkMyk7XG5cbi8qICAqL1xuXG5mdW5j
dGlvbiBpbml0VXNlIChWdWUpIHtcbiAgVnVlLnVzZSA9IGZ1bmN0aW9uIChwbHVnaW4pIHtcbiAg
ICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAocGx1Z2luLmluc3RhbGxlZCkge1xu
ICAgICAgcmV0dXJuXG4gICAgfVxuICAgIC8vIGFkZGl0aW9uYWwgcGFyYW1ldGVyc1xuICAgIHZh
ciBhcmdzID0gdG9BcnJheShhcmd1bWVudHMsIDEpO1xuICAgIGFyZ3MudW5zaGlmdCh0aGlzKTtc
biAgICBpZiAodHlwZW9mIHBsdWdpbi5pbnN0YWxsID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBw
bHVnaW4uaW5zdGFsbC5hcHBseShwbHVnaW4sIGFyZ3MpO1xuICAgIH0gZWxzZSB7XG4gICAgICBw
bHVnaW4uYXBwbHkobnVsbCwgYXJncyk7XG4gICAgfVxuICAgIHBsdWdpbi5pbnN0YWxsZWQgPSB0
cnVlO1xuICAgIHJldHVybiB0aGlzXG4gIH07XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBpbml0
TWl4aW4kMSAoVnVlKSB7XG4gIFZ1ZS5taXhpbiA9IGZ1bmN0aW9uIChtaXhpbikge1xuICAgIHRo
aXMub3B0aW9ucyA9IG1lcmdlT3B0aW9ucyh0aGlzLm9wdGlvbnMsIG1peGluKTtcbiAgfTtcbn1c
blxuLyogICovXG5cbmZ1bmN0aW9uIGluaXRFeHRlbmQgKFZ1ZSkge1xuICAvKipcbiAgICogRWFj
aCBpbnN0YW5jZSBjb25zdHJ1Y3RvciwgaW5jbHVkaW5nIFZ1ZSwgaGFzIGEgdW5pcXVlXG4gICAq
IGNpZC4gVGhpcyBlbmFibGVzIHVzIHRvIGNyZWF0ZSB3cmFwcGVkIFwiY2hpbGRcbiAgICogY29u
c3RydWN0b3JzXCIgZm9yIHByb3RvdHlwYWwgaW5oZXJpdGFuY2UgYW5kIGNhY2hlIHRoZW0uXG4g
ICAqL1xuICBWdWUuY2lkID0gMDtcbiAgdmFyIGNpZCA9IDE7XG5cbiAgLyoqXG4gICAqIENsYXNz
IGluaGVyaXRhbmNlXG4gICAqL1xuICBWdWUuZXh0ZW5kID0gZnVuY3Rpb24gKGV4dGVuZE9wdGlv
bnMpIHtcbiAgICBleHRlbmRPcHRpb25zID0gZXh0ZW5kT3B0aW9ucyB8fCB7fTtcbiAgICB2YXIg
U3VwZXIgPSB0aGlzO1xuICAgIHZhciBTdXBlcklkID0gU3VwZXIuY2lkO1xuICAgIHZhciBjYWNo
ZWRDdG9ycyA9IGV4dGVuZE9wdGlvbnMuX0N0b3IgfHwgKGV4dGVuZE9wdGlvbnMuX0N0b3IgPSB7
fSk7XG4gICAgaWYgKGNhY2hlZEN0b3JzW1N1cGVySWRdKSB7XG4gICAgICByZXR1cm4gY2FjaGVk
Q3RvcnNbU3VwZXJJZF1cbiAgICB9XG4gICAgdmFyIG5hbWUgPSBleHRlbmRPcHRpb25zLm5hbWUg
fHwgU3VwZXIub3B0aW9ucy5uYW1lO1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0g
J3Byb2R1Y3Rpb24nKSB7XG4gICAgICBpZiAoIS9eW2EtekEtWl1bXFx3LV0qJC8udGVzdChuYW1l
KSkge1xuICAgICAgICB3YXJuKFxuICAgICAgICAgICdJbnZhbGlkIGNvbXBvbmVudCBuYW1lOiBc
IicgKyBuYW1lICsgJ1wiLiBDb21wb25lbnQgbmFtZXMgJyArXG4gICAgICAgICAgJ2NhbiBvbmx5
IGNvbnRhaW4gYWxwaGFudW1lcmljIGNoYXJhY2F0ZXJzIGFuZCB0aGUgaHlwaGVuLidcbiAgICAg
ICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdmFyIFN1YiA9IGZ1bmN0aW9uIFZ1ZUNvbXBvbmVu
dCAob3B0aW9ucykge1xuICAgICAgdGhpcy5faW5pdChvcHRpb25zKTtcbiAgICB9O1xuICAgIFN1
Yi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFN1cGVyLnByb3RvdHlwZSk7XG4gICAgU3ViLnBy
b3RvdHlwZS5jb25zdHJ1Y3RvciA9IFN1YjtcbiAgICBTdWIuY2lkID0gY2lkKys7XG4gICAgU3Vi
Lm9wdGlvbnMgPSBtZXJnZU9wdGlvbnMoXG4gICAgICBTdXBlci5vcHRpb25zLFxuICAgICAgZXh0
ZW5kT3B0aW9uc1xuICAgICk7XG4gICAgU3ViWydzdXBlciddID0gU3VwZXI7XG4gICAgLy8gYWxs
b3cgZnVydGhlciBleHRlbnNpb24vbWl4aW4vcGx1Z2luIHVzYWdlXG4gICAgU3ViLmV4dGVuZCA9
IFN1cGVyLmV4dGVuZDtcbiAgICBTdWIubWl4aW4gPSBTdXBlci5taXhpbjtcbiAgICBTdWIudXNl
ID0gU3VwZXIudXNlO1xuICAgIC8vIGNyZWF0ZSBhc3NldCByZWdpc3RlcnMsIHNvIGV4dGVuZGVk
IGNsYXNzZXNcbiAgICAvLyBjYW4gaGF2ZSB0aGVpciBwcml2YXRlIGFzc2V0cyB0b28uXG4gICAg
Y29uZmlnLl9hc3NldFR5cGVzLmZvckVhY2goZnVuY3Rpb24gKHR5cGUpIHtcbiAgICAgIFN1Ylt0
eXBlXSA9IFN1cGVyW3R5cGVdO1xuICAgIH0pO1xuICAgIC8vIGVuYWJsZSByZWN1cnNpdmUgc2Vs
Zi1sb29rdXBcbiAgICBpZiAobmFtZSkge1xuICAgICAgU3ViLm9wdGlvbnMuY29tcG9uZW50c1tu
YW1lXSA9IFN1YjtcbiAgICB9XG4gICAgLy8ga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgc3VwZXIg
b3B0aW9ucyBhdCBleHRlbnNpb24gdGltZS5cbiAgICAvLyBsYXRlciBhdCBpbnN0YW50aWF0aW9u
IHdlIGNhbiBjaGVjayBpZiBTdXBlcidzIG9wdGlvbnMgaGF2ZVxuICAgIC8vIGJlZW4gdXBkYXRl
ZC5cbiAgICBTdWIuc3VwZXJPcHRpb25zID0gU3VwZXIub3B0aW9ucztcbiAgICBTdWIuZXh0ZW5k
T3B0aW9ucyA9IGV4dGVuZE9wdGlvbnM7XG4gICAgLy8gY2FjaGUgY29uc3RydWN0b3JcbiAgICBj
YWNoZWRDdG9yc1tTdXBlcklkXSA9IFN1YjtcbiAgICByZXR1cm4gU3ViXG4gIH07XG59XG5cbi8q
ICAqL1xuXG5mdW5jdGlvbiBpbml0QXNzZXRSZWdpc3RlcnMgKFZ1ZSkge1xuICAvKipcbiAgICog
Q3JlYXRlIGFzc2V0IHJlZ2lzdHJhdGlvbiBtZXRob2RzLlxuICAgKi9cbiAgY29uZmlnLl9hc3Nl
dFR5cGVzLmZvckVhY2goZnVuY3Rpb24gKHR5cGUpIHtcbiAgICBWdWVbdHlwZV0gPSBmdW5jdGlv
biAoXG4gICAgICBpZCxcbiAgICAgIGRlZmluaXRpb25cbiAgICApIHtcbiAgICAgIGlmICghZGVm
aW5pdGlvbikge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zW3R5cGUgKyAncyddW2lkXVxu
ICAgICAgfSBlbHNlIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICAg
IGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAg
aWYgKHR5cGUgPT09ICdjb21wb25lbnQnICYmIGNvbmZpZy5pc1Jlc2VydmVkVGFnKGlkKSkge1xu
ICAgICAgICAgICAgd2FybihcbiAgICAgICAgICAgICAgJ0RvIG5vdCB1c2UgYnVpbHQtaW4gb3Ig
cmVzZXJ2ZWQgSFRNTCBlbGVtZW50cyBhcyBjb21wb25lbnQgJyArXG4gICAgICAgICAgICAgICdp
ZDogJyArIGlkXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAg
ICBpZiAodHlwZSA9PT0gJ2NvbXBvbmVudCcgJiYgaXNQbGFpbk9iamVjdChkZWZpbml0aW9uKSkg
e1xuICAgICAgICAgIGRlZmluaXRpb24ubmFtZSA9IGRlZmluaXRpb24ubmFtZSB8fCBpZDtcbiAg
ICAgICAgICBkZWZpbml0aW9uID0gdGhpcy5vcHRpb25zLl9iYXNlLmV4dGVuZChkZWZpbml0aW9u
KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZSA9PT0gJ2RpcmVjdGl2ZScgJiYgdHlwZW9m
IGRlZmluaXRpb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICBkZWZpbml0aW9uID0geyBi
aW5kOiBkZWZpbml0aW9uLCB1cGRhdGU6IGRlZmluaXRpb24gfTtcbiAgICAgICAgfVxuICAgICAg
ICB0aGlzLm9wdGlvbnNbdHlwZSArICdzJ11baWRdID0gZGVmaW5pdGlvbjtcbiAgICAgICAgcmV0
dXJuIGRlZmluaXRpb25cbiAgICAgIH1cbiAgICB9O1xuICB9KTtcbn1cblxuLyogICovXG5cbnZh
ciBwYXR0ZXJuVHlwZXMgPSBbU3RyaW5nLCBSZWdFeHBdO1xuXG5mdW5jdGlvbiBtYXRjaGVzIChw
YXR0ZXJuLCBuYW1lKSB7XG4gIGlmICh0eXBlb2YgcGF0dGVybiA9PT0gJ3N0cmluZycpIHtcbiAg
ICByZXR1cm4gcGF0dGVybi5zcGxpdCgnLCcpLmluZGV4T2YobmFtZSkgPiAtMVxuICB9IGVsc2Ug
e1xuICAgIHJldHVybiBwYXR0ZXJuLnRlc3QobmFtZSlcbiAgfVxufVxuXG52YXIgS2VlcEFsaXZl
ID0ge1xuICBuYW1lOiAna2VlcC1hbGl2ZScsXG4gIGFic3RyYWN0OiB0cnVlLFxuICBwcm9wczog
e1xuICAgIGluY2x1ZGU6IHBhdHRlcm5UeXBlcyxcbiAgICBleGNsdWRlOiBwYXR0ZXJuVHlwZXNc
biAgfSxcbiAgY3JlYXRlZDogZnVuY3Rpb24gY3JlYXRlZCAoKSB7XG4gICAgdGhpcy5jYWNoZSA9
IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIH0sXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyICgp
IHtcbiAgICB2YXIgdm5vZGUgPSBnZXRGaXJzdENvbXBvbmVudENoaWxkKHRoaXMuJHNsb3RzLmRl
ZmF1bHQpO1xuICAgIGlmICh2bm9kZSAmJiB2bm9kZS5jb21wb25lbnRPcHRpb25zKSB7XG4gICAg
ICB2YXIgb3B0cyA9IHZub2RlLmNvbXBvbmVudE9wdGlvbnM7XG4gICAgICAvLyBjaGVjayBwYXR0
ZXJuXG4gICAgICB2YXIgbmFtZSA9IG9wdHMuQ3Rvci5vcHRpb25zLm5hbWUgfHwgb3B0cy50YWc7
XG4gICAgICBpZiAobmFtZSAmJiAoXG4gICAgICAgICh0aGlzLmluY2x1ZGUgJiYgIW1hdGNoZXMo
dGhpcy5pbmNsdWRlLCBuYW1lKSkgfHxcbiAgICAgICAgKHRoaXMuZXhjbHVkZSAmJiBtYXRjaGVz
KHRoaXMuZXhjbHVkZSwgbmFtZSkpXG4gICAgICApKSB7XG4gICAgICAgIHJldHVybiB2bm9kZVxu
ICAgICAgfVxuICAgICAgdmFyIGtleSA9IHZub2RlLmtleSA9PSBudWxsXG4gICAgICAgIC8vIHNh
bWUgY29uc3RydWN0b3IgbWF5IGdldCByZWdpc3RlcmVkIGFzIGRpZmZlcmVudCBsb2NhbCBjb21w
b25lbnRzXG4gICAgICAgIC8vIHNvIGNpZCBhbG9uZSBpcyBub3QgZW5vdWdoICgjMzI2OSlcbiAg
ICAgICAgPyBvcHRzLkN0b3IuY2lkICsgKG9wdHMudGFnID8gKFwiOjpcIiArIChvcHRzLnRhZykp
IDogJycpXG4gICAgICAgIDogdm5vZGUua2V5O1xuICAgICAgaWYgKHRoaXMuY2FjaGVba2V5XSkg
e1xuICAgICAgICB2bm9kZS5jaGlsZCA9IHRoaXMuY2FjaGVba2V5XS5jaGlsZDtcbiAgICAgIH0g
ZWxzZSB7XG4gICAgICAgIHRoaXMuY2FjaGVba2V5XSA9IHZub2RlO1xuICAgICAgfVxuICAgICAg
dm5vZGUuZGF0YS5rZWVwQWxpdmUgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gdm5vZGVcbiAg
fSxcbiAgZGVzdHJveWVkOiBmdW5jdGlvbiBkZXN0cm95ZWQgKCkge1xuICAgIHZhciB0aGlzJDEg
PSB0aGlzO1xuXG4gICAgZm9yICh2YXIga2V5IGluIHRoaXMuY2FjaGUpIHtcbiAgICAgIHZhciB2
bm9kZSA9IHRoaXMkMS5jYWNoZVtrZXldO1xuICAgICAgY2FsbEhvb2sodm5vZGUuY2hpbGQsICdk
ZWFjdGl2YXRlZCcpO1xuICAgICAgdm5vZGUuY2hpbGQuJGRlc3Ryb3koKTtcbiAgICB9XG4gIH1c
bn07XG5cbnZhciBidWlsdEluQ29tcG9uZW50cyA9IHtcbiAgS2VlcEFsaXZlOiBLZWVwQWxpdmVc
bn07XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBpbml0R2xvYmFsQVBJIChWdWUpIHtcbiAgLy8gY29u
ZmlnXG4gIHZhciBjb25maWdEZWYgPSB7fTtcbiAgY29uZmlnRGVmLmdldCA9IGZ1bmN0aW9uICgp
IHsgcmV0dXJuIGNvbmZpZzsgfTtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJv
ZHVjdGlvbicpIHtcbiAgICBjb25maWdEZWYuc2V0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgd2Fy
bihcbiAgICAgICAgJ0RvIG5vdCByZXBsYWNlIHRoZSBWdWUuY29uZmlnIG9iamVjdCwgc2V0IGlu
ZGl2aWR1YWwgZmllbGRzIGluc3RlYWQuJ1xuICAgICAgKTtcbiAgICB9O1xuICB9XG4gIE9iamVj
dC5kZWZpbmVQcm9wZXJ0eShWdWUsICdjb25maWcnLCBjb25maWdEZWYpO1xuICBWdWUudXRpbCA9
IHV0aWw7XG4gIFZ1ZS5zZXQgPSBzZXQ7XG4gIFZ1ZS5kZWxldGUgPSBkZWw7XG4gIFZ1ZS5uZXh0
VGljayA9IG5leHRUaWNrO1xuXG4gIFZ1ZS5vcHRpb25zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtc
biAgY29uZmlnLl9hc3NldFR5cGVzLmZvckVhY2goZnVuY3Rpb24gKHR5cGUpIHtcbiAgICBWdWUu
b3B0aW9uc1t0eXBlICsgJ3MnXSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIH0pO1xuXG4gIC8v
IHRoaXMgaXMgdXNlZCB0byBpZGVudGlmeSB0aGUgXCJiYXNlXCIgY29uc3RydWN0b3IgdG8gZXh0
ZW5kIGFsbCBwbGFpbi1vYmplY3RcbiAgLy8gY29tcG9uZW50cyB3aXRoIGluIFdlZXgncyBtdWx0
aS1pbnN0YW5jZSBzY2VuYXJpb3MuXG4gIFZ1ZS5vcHRpb25zLl9iYXNlID0gVnVlO1xuXG4gIGV4
dGVuZChWdWUub3B0aW9ucy5jb21wb25lbnRzLCBidWlsdEluQ29tcG9uZW50cyk7XG5cbiAgaW5p
dFVzZShWdWUpO1xuICBpbml0TWl4aW4kMShWdWUpO1xuICBpbml0RXh0ZW5kKFZ1ZSk7XG4gIGlu
aXRBc3NldFJlZ2lzdGVycyhWdWUpO1xufVxuXG5pbml0R2xvYmFsQVBJKFZ1ZSQzKTtcblxuT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KFZ1ZSQzLnByb3RvdHlwZSwgJyRpc1NlcnZlcicsIHtcbiAgZ2V0
OiBpc1NlcnZlclJlbmRlcmluZ1xufSk7XG5cblZ1ZSQzLnZlcnNpb24gPSAnMi4xLjMnO1xuXG4v
KiAgKi9cblxuLy8gYXR0cmlidXRlcyB0aGF0IHNob3VsZCBiZSB1c2luZyBwcm9wcyBmb3IgYmlu
ZGluZ1xudmFyIG11c3RVc2VQcm9wID0gZnVuY3Rpb24gKHRhZywgYXR0cikge1xuICByZXR1cm4g
KFxuICAgIChhdHRyID09PSAndmFsdWUnICYmICh0YWcgPT09ICdpbnB1dCcgfHwgdGFnID09PSAn
dGV4dGFyZWEnIHx8IHRhZyA9PT0gJ29wdGlvbicpKSB8fFxuICAgIChhdHRyID09PSAnc2VsZWN0
ZWQnICYmIHRhZyA9PT0gJ29wdGlvbicpIHx8XG4gICAgKGF0dHIgPT09ICdjaGVja2VkJyAmJiB0
YWcgPT09ICdpbnB1dCcpIHx8XG4gICAgKGF0dHIgPT09ICdtdXRlZCcgJiYgdGFnID09PSAndmlk
ZW8nKVxuICApXG59O1xuXG52YXIgaXNFbnVtZXJhdGVkQXR0ciA9IG1ha2VNYXAoJ2NvbnRlbnRl
ZGl0YWJsZSxkcmFnZ2FibGUsc3BlbGxjaGVjaycpO1xuXG52YXIgaXNCb29sZWFuQXR0ciA9IG1h
a2VNYXAoXG4gICdhbGxvd2Z1bGxzY3JlZW4sYXN5bmMsYXV0b2ZvY3VzLGF1dG9wbGF5LGNoZWNr
ZWQsY29tcGFjdCxjb250cm9scyxkZWNsYXJlLCcgK1xuICAnZGVmYXVsdCxkZWZhdWx0Y2hlY2tl
ZCxkZWZhdWx0bXV0ZWQsZGVmYXVsdHNlbGVjdGVkLGRlZmVyLGRpc2FibGVkLCcgK1xuICAnZW5h
YmxlZCxmb3Jtbm92YWxpZGF0ZSxoaWRkZW4saW5kZXRlcm1pbmF0ZSxpbmVydCxpc21hcCxpdGVt
c2NvcGUsbG9vcCxtdWx0aXBsZSwnICtcbiAgJ211dGVkLG5vaHJlZixub3Jlc2l6ZSxub3NoYWRl
LG5vdmFsaWRhdGUsbm93cmFwLG9wZW4scGF1c2VvbmV4aXQscmVhZG9ubHksJyArXG4gICdyZXF1
aXJlZCxyZXZlcnNlZCxzY29wZWQsc2VhbWxlc3Msc2VsZWN0ZWQsc29ydGFibGUsdHJhbnNsYXRl
LCcgK1xuICAndHJ1ZXNwZWVkLHR5cGVtdXN0bWF0Y2gsdmlzaWJsZSdcbik7XG5cbnZhciBpc0F0
dHIgPSBtYWtlTWFwKFxuICAnYWNjZXB0LGFjY2VwdC1jaGFyc2V0LGFjY2Vzc2tleSxhY3Rpb24s
YWxpZ24sYWx0LGFzeW5jLGF1dG9jb21wbGV0ZSwnICtcbiAgJ2F1dG9mb2N1cyxhdXRvcGxheSxh
dXRvc2F2ZSxiZ2NvbG9yLGJvcmRlcixidWZmZXJlZCxjaGFsbGVuZ2UsY2hhcnNldCwnICtcbiAg
J2NoZWNrZWQsY2l0ZSxjbGFzcyxjb2RlLGNvZGViYXNlLGNvbG9yLGNvbHMsY29sc3Bhbixjb250
ZW50LGh0dHAtZXF1aXYsJyArXG4gICduYW1lLGNvbnRlbnRlZGl0YWJsZSxjb250ZXh0bWVudSxj
b250cm9scyxjb29yZHMsZGF0YSxkYXRldGltZSxkZWZhdWx0LCcgK1xuICAnZGVmZXIsZGlyLGRp
cm5hbWUsZGlzYWJsZWQsZG93bmxvYWQsZHJhZ2dhYmxlLGRyb3B6b25lLGVuY3R5cGUsbWV0aG9k
LGZvciwnICtcbiAgJ2Zvcm0sZm9ybWFjdGlvbixoZWFkZXJzLDx0aD4saGVpZ2h0LGhpZGRlbixo
aWdoLGhyZWYsaHJlZmxhbmcsaHR0cC1lcXVpdiwnICtcbiAgJ2ljb24saWQsaXNtYXAsaXRlbXBy
b3Asa2V5dHlwZSxraW5kLGxhYmVsLGxhbmcsbGFuZ3VhZ2UsbGlzdCxsb29wLGxvdywnICtcbiAg
J21hbmlmZXN0LG1heCxtYXhsZW5ndGgsbWVkaWEsbWV0aG9kLEdFVCxQT1NULG1pbixtdWx0aXBs
ZSxlbWFpbCxmaWxlLCcgK1xuICAnbXV0ZWQsbmFtZSxub3ZhbGlkYXRlLG9wZW4sb3B0aW11bSxw
YXR0ZXJuLHBpbmcscGxhY2Vob2xkZXIscG9zdGVyLCcgK1xuICAncHJlbG9hZCxyYWRpb2dyb3Vw
LHJlYWRvbmx5LHJlbCxyZXF1aXJlZCxyZXZlcnNlZCxyb3dzLHJvd3NwYW4sc2FuZGJveCwnICtc
biAgJ3Njb3BlLHNjb3BlZCxzZWFtbGVzcyxzZWxlY3RlZCxzaGFwZSxzaXplLHR5cGUsdGV4dCxw
YXNzd29yZCxzaXplcyxzcGFuLCcgK1xuICAnc3BlbGxjaGVjayxzcmMsc3JjZG9jLHNyY2xhbmcs
c3Jjc2V0LHN0YXJ0LHN0ZXAsc3R5bGUsc3VtbWFyeSx0YWJpbmRleCwnICtcbiAgJ3RhcmdldCx0
aXRsZSx0eXBlLHVzZW1hcCx2YWx1ZSx3aWR0aCx3cmFwJ1xuKTtcblxuXG5cbnZhciB4bGlua05T
ID0gJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsnO1xuXG52YXIgaXNYbGluayA9IGZ1bmN0
aW9uIChuYW1lKSB7XG4gIHJldHVybiBuYW1lLmNoYXJBdCg1KSA9PT0gJzonICYmIG5hbWUuc2xp
Y2UoMCwgNSkgPT09ICd4bGluaydcbn07XG5cbnZhciBnZXRYbGlua1Byb3AgPSBmdW5jdGlvbiAo
bmFtZSkge1xuICByZXR1cm4gaXNYbGluayhuYW1lKSA/IG5hbWUuc2xpY2UoNiwgbmFtZS5sZW5n
dGgpIDogJydcbn07XG5cbnZhciBpc0ZhbHN5QXR0clZhbHVlID0gZnVuY3Rpb24gKHZhbCkge1xu
ICByZXR1cm4gdmFsID09IG51bGwgfHwgdmFsID09PSBmYWxzZVxufTtcblxuLyogICovXG5cbmZ1
bmN0aW9uIGdlbkNsYXNzRm9yVm5vZGUgKHZub2RlKSB7XG4gIHZhciBkYXRhID0gdm5vZGUuZGF0
YTtcbiAgdmFyIHBhcmVudE5vZGUgPSB2bm9kZTtcbiAgdmFyIGNoaWxkTm9kZSA9IHZub2RlO1xu
ICB3aGlsZSAoY2hpbGROb2RlLmNoaWxkKSB7XG4gICAgY2hpbGROb2RlID0gY2hpbGROb2RlLmNo
aWxkLl92bm9kZTtcbiAgICBpZiAoY2hpbGROb2RlLmRhdGEpIHtcbiAgICAgIGRhdGEgPSBtZXJn
ZUNsYXNzRGF0YShjaGlsZE5vZGUuZGF0YSwgZGF0YSk7XG4gICAgfVxuICB9XG4gIHdoaWxlICgo
cGFyZW50Tm9kZSA9IHBhcmVudE5vZGUucGFyZW50KSkge1xuICAgIGlmIChwYXJlbnROb2RlLmRh
dGEpIHtcbiAgICAgIGRhdGEgPSBtZXJnZUNsYXNzRGF0YShkYXRhLCBwYXJlbnROb2RlLmRhdGEp
O1xuICAgIH1cbiAgfVxuICByZXR1cm4gZ2VuQ2xhc3NGcm9tRGF0YShkYXRhKVxufVxuXG5mdW5j
dGlvbiBtZXJnZUNsYXNzRGF0YSAoY2hpbGQsIHBhcmVudCkge1xuICByZXR1cm4ge1xuICAgIHN0
YXRpY0NsYXNzOiBjb25jYXQoY2hpbGQuc3RhdGljQ2xhc3MsIHBhcmVudC5zdGF0aWNDbGFzcyks
XG4gICAgY2xhc3M6IGNoaWxkLmNsYXNzXG4gICAgICA/IFtjaGlsZC5jbGFzcywgcGFyZW50LmNs
YXNzXVxuICAgICAgOiBwYXJlbnQuY2xhc3NcbiAgfVxufVxuXG5mdW5jdGlvbiBnZW5DbGFzc0Zy
b21EYXRhIChkYXRhKSB7XG4gIHZhciBkeW5hbWljQ2xhc3MgPSBkYXRhLmNsYXNzO1xuICB2YXIg
c3RhdGljQ2xhc3MgPSBkYXRhLnN0YXRpY0NsYXNzO1xuICBpZiAoc3RhdGljQ2xhc3MgfHwgZHlu
YW1pY0NsYXNzKSB7XG4gICAgcmV0dXJuIGNvbmNhdChzdGF0aWNDbGFzcywgc3RyaW5naWZ5Q2xh
c3MoZHluYW1pY0NsYXNzKSlcbiAgfVxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICBy
ZXR1cm4gJydcbn1cblxuZnVuY3Rpb24gY29uY2F0IChhLCBiKSB7XG4gIHJldHVybiBhID8gYiA/
IChhICsgJyAnICsgYikgOiBhIDogKGIgfHwgJycpXG59XG5cbmZ1bmN0aW9uIHN0cmluZ2lmeUNs
YXNzICh2YWx1ZSkge1xuICB2YXIgcmVzID0gJyc7XG4gIGlmICghdmFsdWUpIHtcbiAgICByZXR1
cm4gcmVzXG4gIH1cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1
cm4gdmFsdWVcbiAgfVxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICB2YXIgc3Ry
aW5naWZpZWQ7XG4gICAgZm9yICh2YXIgaSA9IDAsIGwgPSB2YWx1ZS5sZW5ndGg7IGkgPCBsOyBp
KyspIHtcbiAgICAgIGlmICh2YWx1ZVtpXSkge1xuICAgICAgICBpZiAoKHN0cmluZ2lmaWVkID0g
c3RyaW5naWZ5Q2xhc3ModmFsdWVbaV0pKSkge1xuICAgICAgICAgIHJlcyArPSBzdHJpbmdpZmll
ZCArICcgJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzLnNsaWNl
KDAsIC0xKVxuICB9XG4gIGlmIChpc09iamVjdCh2YWx1ZSkpIHtcbiAgICBmb3IgKHZhciBrZXkg
aW4gdmFsdWUpIHtcbiAgICAgIGlmICh2YWx1ZVtrZXldKSB7IHJlcyArPSBrZXkgKyAnICc7IH1c
biAgICB9XG4gICAgcmV0dXJuIHJlcy5zbGljZSgwLCAtMSlcbiAgfVxuICAvKiBpc3RhbmJ1bCBp
Z25vcmUgbmV4dCAqL1xuICByZXR1cm4gcmVzXG59XG5cbi8qICAqL1xuXG52YXIgbmFtZXNwYWNl
TWFwID0ge1xuICBzdmc6ICdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycsXG4gIG1hdGg6ICdo
dHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJyxcbiAgeGh0bWw6ICdodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hodG1sJ1xufTtcblxudmFyIGlzSFRNTFRhZyA9IG1ha2VNYXAoXG4gICdo
dG1sLGJvZHksYmFzZSxoZWFkLGxpbmssbWV0YSxzdHlsZSx0aXRsZSwnICtcbiAgJ2FkZHJlc3Ms
YXJ0aWNsZSxhc2lkZSxmb290ZXIsaGVhZGVyLGgxLGgyLGgzLGg0LGg1LGg2LGhncm91cCxuYXYs
c2VjdGlvbiwnICtcbiAgJ2RpdixkZCxkbCxkdCxmaWdjYXB0aW9uLGZpZ3VyZSxocixpbWcsbGks
bWFpbixvbCxwLHByZSx1bCwnICtcbiAgJ2EsYixhYmJyLGJkaSxiZG8sYnIsY2l0ZSxjb2RlLGRh
dGEsZGZuLGVtLGksa2JkLG1hcmsscSxycCxydCxydGMscnVieSwnICtcbiAgJ3Msc2FtcCxzbWFs
bCxzcGFuLHN0cm9uZyxzdWIsc3VwLHRpbWUsdSx2YXIsd2JyLGFyZWEsYXVkaW8sbWFwLHRyYWNr
LHZpZGVvLCcgK1xuICAnZW1iZWQsb2JqZWN0LHBhcmFtLHNvdXJjZSxjYW52YXMsc2NyaXB0LG5v
c2NyaXB0LGRlbCxpbnMsJyArXG4gICdjYXB0aW9uLGNvbCxjb2xncm91cCx0YWJsZSx0aGVhZCx0
Ym9keSx0ZCx0aCx0ciwnICtcbiAgJ2J1dHRvbixkYXRhbGlzdCxmaWVsZHNldCxmb3JtLGlucHV0
LGxhYmVsLGxlZ2VuZCxtZXRlcixvcHRncm91cCxvcHRpb24sJyArXG4gICdvdXRwdXQscHJvZ3Jl
c3Msc2VsZWN0LHRleHRhcmVhLCcgK1xuICAnZGV0YWlscyxkaWFsb2csbWVudSxtZW51aXRlbSxz
dW1tYXJ5LCcgK1xuICAnY29udGVudCxlbGVtZW50LHNoYWRvdyx0ZW1wbGF0ZSdcbik7XG5cbnZh
ciBpc1VuYXJ5VGFnID0gbWFrZU1hcChcbiAgJ2FyZWEsYmFzZSxicixjb2wsZW1iZWQsZnJhbWUs
aHIsaW1nLGlucHV0LGlzaW5kZXgsa2V5Z2VuLCcgK1xuICAnbGluayxtZXRhLHBhcmFtLHNvdXJj
ZSx0cmFjayx3YnInLFxuICB0cnVlXG4pO1xuXG4vLyBFbGVtZW50cyB0aGF0IHlvdSBjYW4sIGlu
dGVudGlvbmFsbHksIGxlYXZlIG9wZW5cbi8vIChhbmQgd2hpY2ggY2xvc2UgdGhlbXNlbHZlcylc
bnZhciBjYW5CZUxlZnRPcGVuVGFnID0gbWFrZU1hcChcbiAgJ2NvbGdyb3VwLGRkLGR0LGxpLG9w
dGlvbnMscCx0ZCx0Zm9vdCx0aCx0aGVhZCx0cixzb3VyY2UnLFxuICB0cnVlXG4pO1xuXG4vLyBI
VE1MNSB0YWdzIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2luZGljZXMu
aHRtbCNlbGVtZW50cy0zXG4vLyBQaHJhc2luZyBDb250ZW50IGh0dHBzOi8vaHRtbC5zcGVjLndo
YXR3Zy5vcmcvbXVsdGlwYWdlL2RvbS5odG1sI3BocmFzaW5nLWNvbnRlbnRcbnZhciBpc05vblBo
cmFzaW5nVGFnID0gbWFrZU1hcChcbiAgJ2FkZHJlc3MsYXJ0aWNsZSxhc2lkZSxiYXNlLGJsb2Nr
cXVvdGUsYm9keSxjYXB0aW9uLGNvbCxjb2xncm91cCxkZCwnICtcbiAgJ2RldGFpbHMsZGlhbG9n
LGRpdixkbCxkdCxmaWVsZHNldCxmaWdjYXB0aW9uLGZpZ3VyZSxmb290ZXIsZm9ybSwnICtcbiAg
J2gxLGgyLGgzLGg0LGg1LGg2LGhlYWQsaGVhZGVyLGhncm91cCxocixodG1sLGxlZ2VuZCxsaSxt
ZW51aXRlbSxtZXRhLCcgK1xuICAnb3B0Z3JvdXAsb3B0aW9uLHBhcmFtLHJwLHJ0LHNvdXJjZSxz
dHlsZSxzdW1tYXJ5LHRib2R5LHRkLHRmb290LHRoLHRoZWFkLCcgK1xuICAndGl0bGUsdHIsdHJh
Y2snLFxuICB0cnVlXG4pO1xuXG4vLyB0aGlzIG1hcCBpcyBpbnRlbnRpb25hbGx5IHNlbGVjdGl2
ZSwgb25seSBjb3ZlcmluZyBTVkcgZWxlbWVudHMgdGhhdCBtYXlcbi8vIGNvbnRhaW4gY2hpbGQg
ZWxlbWVudHMuXG52YXIgaXNTVkcgPSBtYWtlTWFwKFxuICAnc3ZnLGFuaW1hdGUsY2lyY2xlLGNs
aXBwYXRoLGN1cnNvcixkZWZzLGRlc2MsZWxsaXBzZSxmaWx0ZXIsZm9udCwnICtcbiAgJ2ZvbnQt
ZmFjZSxnLGdseXBoLGltYWdlLGxpbmUsbWFya2VyLG1hc2ssbWlzc2luZy1nbHlwaCxwYXRoLHBh
dHRlcm4sJyArXG4gICdwb2x5Z29uLHBvbHlsaW5lLHJlY3Qsc3dpdGNoLHN5bWJvbCx0ZXh0LHRl
eHRwYXRoLHRzcGFuLHVzZSx2aWV3JyxcbiAgdHJ1ZVxuKTtcblxudmFyIGlzUHJlVGFnID0gZnVu
Y3Rpb24gKHRhZykgeyByZXR1cm4gdGFnID09PSAncHJlJzsgfTtcblxudmFyIGlzUmVzZXJ2ZWRU
YWcgPSBmdW5jdGlvbiAodGFnKSB7XG4gIHJldHVybiBpc0hUTUxUYWcodGFnKSB8fCBpc1NWRyh0
YWcpXG59O1xuXG5mdW5jdGlvbiBnZXRUYWdOYW1lc3BhY2UgKHRhZykge1xuICBpZiAoaXNTVkco
dGFnKSkge1xuICAgIHJldHVybiAnc3ZnJ1xuICB9XG4gIC8vIGJhc2ljIHN1cHBvcnQgZm9yIE1h
dGhNTFxuICAvLyBub3RlIGl0IGRvZXNuJ3Qgc3VwcG9ydCBvdGhlciBNYXRoTUwgZWxlbWVudHMg
YmVpbmcgY29tcG9uZW50IHJvb3RzXG4gIGlmICh0YWcgPT09ICdtYXRoJykge1xuICAgIHJldHVy
biAnbWF0aCdcbiAgfVxufVxuXG52YXIgdW5rbm93bkVsZW1lbnRDYWNoZSA9IE9iamVjdC5jcmVh
dGUobnVsbCk7XG5mdW5jdGlvbiBpc1Vua25vd25FbGVtZW50ICh0YWcpIHtcbiAgLyogaXN0YW5i
dWwgaWdub3JlIGlmICovXG4gIGlmICghaW5Ccm93c2VyKSB7XG4gICAgcmV0dXJuIHRydWVcbiAg
fVxuICBpZiAoaXNSZXNlcnZlZFRhZyh0YWcpKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbiAg
dGFnID0gdGFnLnRvTG93ZXJDYXNlKCk7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBp
ZiAodW5rbm93bkVsZW1lbnRDYWNoZVt0YWddICE9IG51bGwpIHtcbiAgICByZXR1cm4gdW5rbm93
bkVsZW1lbnRDYWNoZVt0YWddXG4gIH1cbiAgdmFyIGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCh0YWcpO1xuICBpZiAodGFnLmluZGV4T2YoJy0nKSA+IC0xKSB7XG4gICAgLy8gaHR0cDovL3N0
YWNrb3ZlcmZsb3cuY29tL2EvMjgyMTAzNjQvMTA3MDI0NFxuICAgIHJldHVybiAodW5rbm93bkVs
ZW1lbnRDYWNoZVt0YWddID0gKFxuICAgICAgZWwuY29uc3RydWN0b3IgPT09IHdpbmRvdy5IVE1M
VW5rbm93bkVsZW1lbnQgfHxcbiAgICAgIGVsLmNvbnN0cnVjdG9yID09PSB3aW5kb3cuSFRNTEVs
ZW1lbnRcbiAgICApKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiAodW5rbm93bkVsZW1lbnRDYWNo
ZVt0YWddID0gL0hUTUxVbmtub3duRWxlbWVudC8udGVzdChlbC50b1N0cmluZygpKSlcbiAgfVxu
fVxuXG4vKiAgKi9cblxuLyoqXG4gKiBRdWVyeSBhbiBlbGVtZW50IHNlbGVjdG9yIGlmIGl0J3Mg
bm90IGFuIGVsZW1lbnQgYWxyZWFkeS5cbiAqL1xuZnVuY3Rpb24gcXVlcnkgKGVsKSB7XG4gIGlm
ICh0eXBlb2YgZWwgPT09ICdzdHJpbmcnKSB7XG4gICAgdmFyIHNlbGVjdG9yID0gZWw7XG4gICAg
ZWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGVsKTtcbiAgICBpZiAoIWVsKSB7XG4gICAgICBw
cm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4oXG4gICAgICAgICdD
YW5ub3QgZmluZCBlbGVtZW50OiAnICsgc2VsZWN0b3JcbiAgICAgICk7XG4gICAgICByZXR1cm4g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JylcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGVsXG59
XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBjcmVhdGVFbGVtZW50JDEgKHRhZ05hbWUsIHZub2RlKSB7
XG4gIHZhciBlbG0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHRhZ05hbWUpO1xuICBpZiAodGFn
TmFtZSAhPT0gJ3NlbGVjdCcpIHtcbiAgICByZXR1cm4gZWxtXG4gIH1cbiAgaWYgKHZub2RlLmRh
dGEgJiYgdm5vZGUuZGF0YS5hdHRycyAmJiAnbXVsdGlwbGUnIGluIHZub2RlLmRhdGEuYXR0cnMp
IHtcbiAgICBlbG0uc2V0QXR0cmlidXRlKCdtdWx0aXBsZScsICdtdWx0aXBsZScpO1xuICB9XG4g
IHJldHVybiBlbG1cbn1cblxuZnVuY3Rpb24gY3JlYXRlRWxlbWVudE5TIChuYW1lc3BhY2UsIHRh
Z05hbWUpIHtcbiAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhuYW1lc3BhY2VNYXBb
bmFtZXNwYWNlXSwgdGFnTmFtZSlcbn1cblxuZnVuY3Rpb24gY3JlYXRlVGV4dE5vZGUgKHRleHQp
IHtcbiAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRleHQpXG59XG5cbmZ1bmN0aW9u
IGNyZWF0ZUNvbW1lbnQgKHRleHQpIHtcbiAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZUNvbW1lbnQo
dGV4dClcbn1cblxuZnVuY3Rpb24gaW5zZXJ0QmVmb3JlIChwYXJlbnROb2RlLCBuZXdOb2RlLCBy
ZWZlcmVuY2VOb2RlKSB7XG4gIHBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKG5ld05vZGUsIHJlZmVy
ZW5jZU5vZGUpO1xufVxuXG5mdW5jdGlvbiByZW1vdmVDaGlsZCAobm9kZSwgY2hpbGQpIHtcbiAg
bm9kZS5yZW1vdmVDaGlsZChjaGlsZCk7XG59XG5cbmZ1bmN0aW9uIGFwcGVuZENoaWxkIChub2Rl
LCBjaGlsZCkge1xuICBub2RlLmFwcGVuZENoaWxkKGNoaWxkKTtcbn1cblxuZnVuY3Rpb24gcGFy
ZW50Tm9kZSAobm9kZSkge1xuICByZXR1cm4gbm9kZS5wYXJlbnROb2RlXG59XG5cbmZ1bmN0aW9u
IG5leHRTaWJsaW5nIChub2RlKSB7XG4gIHJldHVybiBub2RlLm5leHRTaWJsaW5nXG59XG5cbmZ1
bmN0aW9uIHRhZ05hbWUgKG5vZGUpIHtcbiAgcmV0dXJuIG5vZGUudGFnTmFtZVxufVxuXG5mdW5j
dGlvbiBzZXRUZXh0Q29udGVudCAobm9kZSwgdGV4dCkge1xuICBub2RlLnRleHRDb250ZW50ID0g
dGV4dDtcbn1cblxuZnVuY3Rpb24gY2hpbGROb2RlcyAobm9kZSkge1xuICByZXR1cm4gbm9kZS5j
aGlsZE5vZGVzXG59XG5cbmZ1bmN0aW9uIHNldEF0dHJpYnV0ZSAobm9kZSwga2V5LCB2YWwpIHtc
biAgbm9kZS5zZXRBdHRyaWJ1dGUoa2V5LCB2YWwpO1xufVxuXG5cbnZhciBub2RlT3BzID0gT2Jq
ZWN0LmZyZWV6ZSh7XG5cdGNyZWF0ZUVsZW1lbnQ6IGNyZWF0ZUVsZW1lbnQkMSxcblx0Y3JlYXRl
RWxlbWVudE5TOiBjcmVhdGVFbGVtZW50TlMsXG5cdGNyZWF0ZVRleHROb2RlOiBjcmVhdGVUZXh0
Tm9kZSxcblx0Y3JlYXRlQ29tbWVudDogY3JlYXRlQ29tbWVudCxcblx0aW5zZXJ0QmVmb3JlOiBp
bnNlcnRCZWZvcmUsXG5cdHJlbW92ZUNoaWxkOiByZW1vdmVDaGlsZCxcblx0YXBwZW5kQ2hpbGQ6
IGFwcGVuZENoaWxkLFxuXHRwYXJlbnROb2RlOiBwYXJlbnROb2RlLFxuXHRuZXh0U2libGluZzog
bmV4dFNpYmxpbmcsXG5cdHRhZ05hbWU6IHRhZ05hbWUsXG5cdHNldFRleHRDb250ZW50OiBzZXRU
ZXh0Q29udGVudCxcblx0Y2hpbGROb2RlczogY2hpbGROb2Rlcyxcblx0c2V0QXR0cmlidXRlOiBz
ZXRBdHRyaWJ1dGVcbn0pO1xuXG4vKiAgKi9cblxudmFyIHJlZiA9IHtcbiAgY3JlYXRlOiBmdW5j
dGlvbiBjcmVhdGUgKF8sIHZub2RlKSB7XG4gICAgcmVnaXN0ZXJSZWYodm5vZGUpO1xuICB9LFxu
ICB1cGRhdGU6IGZ1bmN0aW9uIHVwZGF0ZSAob2xkVm5vZGUsIHZub2RlKSB7XG4gICAgaWYgKG9s
ZFZub2RlLmRhdGEucmVmICE9PSB2bm9kZS5kYXRhLnJlZikge1xuICAgICAgcmVnaXN0ZXJSZWYo
b2xkVm5vZGUsIHRydWUpO1xuICAgICAgcmVnaXN0ZXJSZWYodm5vZGUpO1xuICAgIH1cbiAgfSxc
biAgZGVzdHJveTogZnVuY3Rpb24gZGVzdHJveSAodm5vZGUpIHtcbiAgICByZWdpc3RlclJlZih2
bm9kZSwgdHJ1ZSk7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIHJlZ2lzdGVyUmVmICh2bm9kZSwgaXNS
ZW1vdmFsKSB7XG4gIHZhciBrZXkgPSB2bm9kZS5kYXRhLnJlZjtcbiAgaWYgKCFrZXkpIHsgcmV0
dXJuIH1cblxuICB2YXIgdm0gPSB2bm9kZS5jb250ZXh0O1xuICB2YXIgcmVmID0gdm5vZGUuY2hp
bGQgfHwgdm5vZGUuZWxtO1xuICB2YXIgcmVmcyA9IHZtLiRyZWZzO1xuICBpZiAoaXNSZW1vdmFs
KSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkocmVmc1trZXldKSkge1xuICAgICAgcmVtb3ZlJDEo
cmVmc1trZXldLCByZWYpO1xuICAgIH0gZWxzZSBpZiAocmVmc1trZXldID09PSByZWYpIHtcbiAg
ICAgIHJlZnNba2V5XSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKHZu
b2RlLmRhdGEucmVmSW5Gb3IpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlZnNba2V5XSkg
JiYgcmVmc1trZXldLmluZGV4T2YocmVmKSA8IDApIHtcbiAgICAgICAgcmVmc1trZXldLnB1c2go
cmVmKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlZnNba2V5XSA9IFtyZWZdO1xuICAgICAg
fVxuICAgIH0gZWxzZSB7XG4gICAgICByZWZzW2tleV0gPSByZWY7XG4gICAgfVxuICB9XG59XG5c
bi8qKlxuICogVmlydHVhbCBET00gcGF0Y2hpbmcgYWxnb3JpdGhtIGJhc2VkIG9uIFNuYWJiZG9t
IGJ5XG4gKiBTaW1vbiBGcmlpcyBWaW5kdW0gKEBwYWxkZXBpbmQpXG4gKiBMaWNlbnNlZCB1bmRl
ciB0aGUgTUlUIExpY2Vuc2VcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9wYWxkZXBpbmQvc25hYmJk
b20vYmxvYi9tYXN0ZXIvTElDRU5TRVxuICpcbiAqIG1vZGlmaWVkIGJ5IEV2YW4gWW91IChAeXl4
OTkwODAzKVxuICpcblxuLypcbiAqIE5vdCB0eXBlLWNoZWNraW5nIHRoaXMgYmVjYXVzZSB0aGlz
IGZpbGUgaXMgcGVyZi1jcml0aWNhbCBhbmQgdGhlIGNvc3RcbiAqIG9mIG1ha2luZyBmbG93IHVu
ZGVyc3RhbmQgaXQgaXMgbm90IHdvcnRoIGl0LlxuICovXG5cbnZhciBlbXB0eU5vZGUgPSBuZXcg
Vk5vZGUoJycsIHt9LCBbXSk7XG5cbnZhciBob29rcyQxID0gWydjcmVhdGUnLCAndXBkYXRlJywg
J3JlbW92ZScsICdkZXN0cm95J107XG5cbmZ1bmN0aW9uIGlzVW5kZWYgKHMpIHtcbiAgcmV0dXJu
IHMgPT0gbnVsbFxufVxuXG5mdW5jdGlvbiBpc0RlZiAocykge1xuICByZXR1cm4gcyAhPSBudWxs
XG59XG5cbmZ1bmN0aW9uIHNhbWVWbm9kZSAodm5vZGUxLCB2bm9kZTIpIHtcbiAgcmV0dXJuIChc
biAgICB2bm9kZTEua2V5ID09PSB2bm9kZTIua2V5ICYmXG4gICAgdm5vZGUxLnRhZyA9PT0gdm5v
ZGUyLnRhZyAmJlxuICAgIHZub2RlMS5pc0NvbW1lbnQgPT09IHZub2RlMi5pc0NvbW1lbnQgJiZc
biAgICAhdm5vZGUxLmRhdGEgPT09ICF2bm9kZTIuZGF0YVxuICApXG59XG5cbmZ1bmN0aW9uIGNy
ZWF0ZUtleVRvT2xkSWR4IChjaGlsZHJlbiwgYmVnaW5JZHgsIGVuZElkeCkge1xuICB2YXIgaSwg
a2V5O1xuICB2YXIgbWFwID0ge307XG4gIGZvciAoaSA9IGJlZ2luSWR4OyBpIDw9IGVuZElkeDsg
KytpKSB7XG4gICAga2V5ID0gY2hpbGRyZW5baV0ua2V5O1xuICAgIGlmIChpc0RlZihrZXkpKSB7
IG1hcFtrZXldID0gaTsgfVxuICB9XG4gIHJldHVybiBtYXBcbn1cblxuZnVuY3Rpb24gY3JlYXRl
UGF0Y2hGdW5jdGlvbiAoYmFja2VuZCkge1xuICB2YXIgaSwgajtcbiAgdmFyIGNicyA9IHt9O1xu
XG4gIHZhciBtb2R1bGVzID0gYmFja2VuZC5tb2R1bGVzO1xuICB2YXIgbm9kZU9wcyA9IGJhY2tl
bmQubm9kZU9wcztcblxuICBmb3IgKGkgPSAwOyBpIDwgaG9va3MkMS5sZW5ndGg7ICsraSkge1xu
ICAgIGNic1tob29rcyQxW2ldXSA9IFtdO1xuICAgIGZvciAoaiA9IDA7IGogPCBtb2R1bGVzLmxl
bmd0aDsgKytqKSB7XG4gICAgICBpZiAobW9kdWxlc1tqXVtob29rcyQxW2ldXSAhPT0gdW5kZWZp
bmVkKSB7IGNic1tob29rcyQxW2ldXS5wdXNoKG1vZHVsZXNbal1baG9va3MkMVtpXV0pOyB9XG4g
ICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZW1wdHlOb2RlQXQgKGVsbSkge1xuICAgIHJldHVybiBu
ZXcgVk5vZGUobm9kZU9wcy50YWdOYW1lKGVsbSkudG9Mb3dlckNhc2UoKSwge30sIFtdLCB1bmRl
ZmluZWQsIGVsbSlcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZVJtQ2IgKGNoaWxkRWxtLCBsaXN0
ZW5lcnMpIHtcbiAgICBmdW5jdGlvbiByZW1vdmUkJDEgKCkge1xuICAgICAgaWYgKC0tcmVtb3Zl
JCQxLmxpc3RlbmVycyA9PT0gMCkge1xuICAgICAgICByZW1vdmVFbGVtZW50KGNoaWxkRWxtKTtc
biAgICAgIH1cbiAgICB9XG4gICAgcmVtb3ZlJCQxLmxpc3RlbmVycyA9IGxpc3RlbmVycztcbiAg
ICByZXR1cm4gcmVtb3ZlJCQxXG4gIH1cblxuICBmdW5jdGlvbiByZW1vdmVFbGVtZW50IChlbCkg
e1xuICAgIHZhciBwYXJlbnQgPSBub2RlT3BzLnBhcmVudE5vZGUoZWwpO1xuICAgIC8vIGVsZW1l
bnQgbWF5IGhhdmUgYWxyZWFkeSBiZWVuIHJlbW92ZWQgZHVlIHRvIHYtaHRtbFxuICAgIGlmIChw
YXJlbnQpIHtcbiAgICAgIG5vZGVPcHMucmVtb3ZlQ2hpbGQocGFyZW50LCBlbCk7XG4gICAgfVxu
ICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlRWxtICh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCBu
ZXN0ZWQpIHtcbiAgICB2YXIgaTtcbiAgICB2YXIgZGF0YSA9IHZub2RlLmRhdGE7XG4gICAgdm5v
ZGUuaXNSb290SW5zZXJ0ID0gIW5lc3RlZDtcbiAgICBpZiAoaXNEZWYoZGF0YSkpIHtcbiAgICAg
IGlmIChpc0RlZihpID0gZGF0YS5ob29rKSAmJiBpc0RlZihpID0gaS5pbml0KSkgeyBpKHZub2Rl
KTsgfVxuICAgICAgLy8gYWZ0ZXIgY2FsbGluZyB0aGUgaW5pdCBob29rLCBpZiB0aGUgdm5vZGUg
aXMgYSBjaGlsZCBjb21wb25lbnRcbiAgICAgIC8vIGl0IHNob3VsZCd2ZSBjcmVhdGVkIGEgY2hp
bGQgaW5zdGFuY2UgYW5kIG1vdW50ZWQgaXQuIHRoZSBjaGlsZFxuICAgICAgLy8gY29tcG9uZW50
IGFsc28gaGFzIHNldCB0aGUgcGxhY2Vob2xkZXIgdm5vZGUncyBlbG0uXG4gICAgICAvLyBpbiB0
aGF0IGNhc2Ugd2UgY2FuIGp1c3QgcmV0dXJuIHRoZSBlbGVtZW50IGFuZCBiZSBkb25lLlxuICAg
ICAgaWYgKGlzRGVmKGkgPSB2bm9kZS5jaGlsZCkpIHtcbiAgICAgICAgaW5pdENvbXBvbmVudCh2
bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAgICAgcmV0dXJuIHZub2RlLmVsbVxuICAg
ICAgfVxuICAgIH1cbiAgICB2YXIgY2hpbGRyZW4gPSB2bm9kZS5jaGlsZHJlbjtcbiAgICB2YXIg
dGFnID0gdm5vZGUudGFnO1xuICAgIGlmIChpc0RlZih0YWcpKSB7XG4gICAgICBpZiAocHJvY2Vz
cy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBpZiAoXG4gICAgICAg
ICAgIXZub2RlLm5zICYmXG4gICAgICAgICAgIShjb25maWcuaWdub3JlZEVsZW1lbnRzICYmIGNv
bmZpZy5pZ25vcmVkRWxlbWVudHMuaW5kZXhPZih0YWcpID4gLTEpICYmXG4gICAgICAgICAgY29u
ZmlnLmlzVW5rbm93bkVsZW1lbnQodGFnKVxuICAgICAgICApIHtcbiAgICAgICAgICB3YXJuKFxu
ICAgICAgICAgICAgJ1Vua25vd24gY3VzdG9tIGVsZW1lbnQ6IDwnICsgdGFnICsgJz4gLSBkaWQg
eW91ICcgK1xuICAgICAgICAgICAgJ3JlZ2lzdGVyIHRoZSBjb21wb25lbnQgY29ycmVjdGx5PyBG
b3IgcmVjdXJzaXZlIGNvbXBvbmVudHMsICcgK1xuICAgICAgICAgICAgJ21ha2Ugc3VyZSB0byBw
cm92aWRlIHRoZSBcIm5hbWVcIiBvcHRpb24uJyxcbiAgICAgICAgICAgIHZub2RlLmNvbnRleHRc
biAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB2bm9kZS5lbG0gPSB2bm9k
ZS5uc1xuICAgICAgICA/IG5vZGVPcHMuY3JlYXRlRWxlbWVudE5TKHZub2RlLm5zLCB0YWcpXG4g
ICAgICAgIDogbm9kZU9wcy5jcmVhdGVFbGVtZW50KHRhZywgdm5vZGUpO1xuICAgICAgc2V0U2Nv
cGUodm5vZGUpO1xuICAgICAgY3JlYXRlQ2hpbGRyZW4odm5vZGUsIGNoaWxkcmVuLCBpbnNlcnRl
ZFZub2RlUXVldWUpO1xuICAgICAgaWYgKGlzRGVmKGRhdGEpKSB7XG4gICAgICAgIGludm9rZUNy
ZWF0ZUhvb2tzKHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUpO1xuICAgICAgfVxuICAgIH0gZWxz
ZSBpZiAodm5vZGUuaXNDb21tZW50KSB7XG4gICAgICB2bm9kZS5lbG0gPSBub2RlT3BzLmNyZWF0
ZUNvbW1lbnQodm5vZGUudGV4dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZub2RlLmVsbSA9IG5v
ZGVPcHMuY3JlYXRlVGV4dE5vZGUodm5vZGUudGV4dCk7XG4gICAgfVxuICAgIHJldHVybiB2bm9k
ZS5lbG1cbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZUNoaWxkcmVuICh2bm9kZSwgY2hpbGRyZW4s
IGluc2VydGVkVm5vZGVRdWV1ZSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkg
e1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7ICsraSkge1xuICAg
ICAgICBub2RlT3BzLmFwcGVuZENoaWxkKHZub2RlLmVsbSwgY3JlYXRlRWxtKGNoaWxkcmVuW2ld
LCBpbnNlcnRlZFZub2RlUXVldWUsIHRydWUpKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlz
UHJpbWl0aXZlKHZub2RlLnRleHQpKSB7XG4gICAgICBub2RlT3BzLmFwcGVuZENoaWxkKHZub2Rl
LmVsbSwgbm9kZU9wcy5jcmVhdGVUZXh0Tm9kZSh2bm9kZS50ZXh0KSk7XG4gICAgfVxuICB9XG5c
biAgZnVuY3Rpb24gaXNQYXRjaGFibGUgKHZub2RlKSB7XG4gICAgd2hpbGUgKHZub2RlLmNoaWxk
KSB7XG4gICAgICB2bm9kZSA9IHZub2RlLmNoaWxkLl92bm9kZTtcbiAgICB9XG4gICAgcmV0dXJu
IGlzRGVmKHZub2RlLnRhZylcbiAgfVxuXG4gIGZ1bmN0aW9uIGludm9rZUNyZWF0ZUhvb2tzICh2
bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKSB7XG4gICAgZm9yICh2YXIgaSQxID0gMDsgaSQxIDwg
Y2JzLmNyZWF0ZS5sZW5ndGg7ICsraSQxKSB7XG4gICAgICBjYnMuY3JlYXRlW2kkMV0oZW1wdHlO
b2RlLCB2bm9kZSk7XG4gICAgfVxuICAgIGkgPSB2bm9kZS5kYXRhLmhvb2s7IC8vIFJldXNlIHZh
cmlhYmxlXG4gICAgaWYgKGlzRGVmKGkpKSB7XG4gICAgICBpZiAoaS5jcmVhdGUpIHsgaS5jcmVh
dGUoZW1wdHlOb2RlLCB2bm9kZSk7IH1cbiAgICAgIGlmIChpLmluc2VydCkgeyBpbnNlcnRlZFZu
b2RlUXVldWUucHVzaCh2bm9kZSk7IH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBpbml0Q29t
cG9uZW50ICh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKSB7XG4gICAgaWYgKHZub2RlLmRhdGEu
cGVuZGluZ0luc2VydCkge1xuICAgICAgaW5zZXJ0ZWRWbm9kZVF1ZXVlLnB1c2guYXBwbHkoaW5z
ZXJ0ZWRWbm9kZVF1ZXVlLCB2bm9kZS5kYXRhLnBlbmRpbmdJbnNlcnQpO1xuICAgIH1cbiAgICB2
bm9kZS5lbG0gPSB2bm9kZS5jaGlsZC4kZWw7XG4gICAgaWYgKGlzUGF0Y2hhYmxlKHZub2RlKSkg
e1xuICAgICAgaW52b2tlQ3JlYXRlSG9va3Modm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSk7XG4g
ICAgICBzZXRTY29wZSh2bm9kZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGVtcHR5IGNvbXBv
bmVudCByb290LlxuICAgICAgLy8gc2tpcCBhbGwgZWxlbWVudC1yZWxhdGVkIG1vZHVsZXMgZXhj
ZXB0IGZvciByZWYgKCMzNDU1KVxuICAgICAgcmVnaXN0ZXJSZWYodm5vZGUpO1xuICAgICAgLy8g
bWFrZSBzdXJlIHRvIGludm9rZSB0aGUgaW5zZXJ0IGhvb2tcbiAgICAgIGluc2VydGVkVm5vZGVR
dWV1ZS5wdXNoKHZub2RlKTtcbiAgICB9XG4gIH1cblxuICAvLyBzZXQgc2NvcGUgaWQgYXR0cmli
dXRlIGZvciBzY29wZWQgQ1NTLlxuICAvLyB0aGlzIGlzIGltcGxlbWVudGVkIGFzIGEgc3BlY2lh
bCBjYXNlIHRvIGF2b2lkIHRoZSBvdmVyaGVhZFxuICAvLyBvZiBnb2luZyB0aHJvdWdoIHRoZSBu
b3JtYWwgYXR0cmlidXRlIHBhdGNoaW5nIHByb2Nlc3MuXG4gIGZ1bmN0aW9uIHNldFNjb3BlICh2
bm9kZSkge1xuICAgIHZhciBpO1xuICAgIGlmIChpc0RlZihpID0gdm5vZGUuY29udGV4dCkgJiYg
aXNEZWYoaSA9IGkuJG9wdGlvbnMuX3Njb3BlSWQpKSB7XG4gICAgICBub2RlT3BzLnNldEF0dHJp
YnV0ZSh2bm9kZS5lbG0sIGksICcnKTtcbiAgICB9XG4gICAgaWYgKGlzRGVmKGkgPSBhY3RpdmVJ
bnN0YW5jZSkgJiZcbiAgICAgICAgaSAhPT0gdm5vZGUuY29udGV4dCAmJlxuICAgICAgICBpc0Rl
ZihpID0gaS4kb3B0aW9ucy5fc2NvcGVJZCkpIHtcbiAgICAgIG5vZGVPcHMuc2V0QXR0cmlidXRl
KHZub2RlLmVsbSwgaSwgJycpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGFkZFZub2RlcyAo
cGFyZW50RWxtLCBiZWZvcmUsIHZub2Rlcywgc3RhcnRJZHgsIGVuZElkeCwgaW5zZXJ0ZWRWbm9k
ZVF1ZXVlKSB7XG4gICAgZm9yICg7IHN0YXJ0SWR4IDw9IGVuZElkeDsgKytzdGFydElkeCkge1xu
ICAgICAgbm9kZU9wcy5pbnNlcnRCZWZvcmUocGFyZW50RWxtLCBjcmVhdGVFbG0odm5vZGVzW3N0
YXJ0SWR4XSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKSwgYmVmb3JlKTtcbiAgICB9XG4gIH1cblxuICBm
dW5jdGlvbiBpbnZva2VEZXN0cm95SG9vayAodm5vZGUpIHtcbiAgICB2YXIgaSwgajtcbiAgICB2
YXIgZGF0YSA9IHZub2RlLmRhdGE7XG4gICAgaWYgKGlzRGVmKGRhdGEpKSB7XG4gICAgICBpZiAo
aXNEZWYoaSA9IGRhdGEuaG9vaykgJiYgaXNEZWYoaSA9IGkuZGVzdHJveSkpIHsgaSh2bm9kZSk7
IH1cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBjYnMuZGVzdHJveS5sZW5ndGg7ICsraSkgeyBjYnMu
ZGVzdHJveVtpXSh2bm9kZSk7IH1cbiAgICB9XG4gICAgaWYgKGlzRGVmKGkgPSB2bm9kZS5jaGls
ZHJlbikpIHtcbiAgICAgIGZvciAoaiA9IDA7IGogPCB2bm9kZS5jaGlsZHJlbi5sZW5ndGg7ICsr
aikge1xuICAgICAgICBpbnZva2VEZXN0cm95SG9vayh2bm9kZS5jaGlsZHJlbltqXSk7XG4gICAg
ICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcmVtb3ZlVm5vZGVzIChwYXJlbnRFbG0sIHZu
b2Rlcywgc3RhcnRJZHgsIGVuZElkeCkge1xuICAgIGZvciAoOyBzdGFydElkeCA8PSBlbmRJZHg7
ICsrc3RhcnRJZHgpIHtcbiAgICAgIHZhciBjaCA9IHZub2Rlc1tzdGFydElkeF07XG4gICAgICBp
ZiAoaXNEZWYoY2gpKSB7XG4gICAgICAgIGlmIChpc0RlZihjaC50YWcpKSB7XG4gICAgICAgICAg
cmVtb3ZlQW5kSW52b2tlUmVtb3ZlSG9vayhjaCk7XG4gICAgICAgICAgaW52b2tlRGVzdHJveUhv
b2soY2gpO1xuICAgICAgICB9IGVsc2UgeyAvLyBUZXh0IG5vZGVcbiAgICAgICAgICBub2RlT3Bz
LnJlbW92ZUNoaWxkKHBhcmVudEVsbSwgY2guZWxtKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAg
IH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHJlbW92ZUFuZEludm9rZVJlbW92ZUhvb2sgKHZub2RlLCBy
bSkge1xuICAgIGlmIChybSB8fCBpc0RlZih2bm9kZS5kYXRhKSkge1xuICAgICAgdmFyIGxpc3Rl
bmVycyA9IGNicy5yZW1vdmUubGVuZ3RoICsgMTtcbiAgICAgIGlmICghcm0pIHtcbiAgICAgICAg
Ly8gZGlyZWN0bHkgcmVtb3ZpbmdcbiAgICAgICAgcm0gPSBjcmVhdGVSbUNiKHZub2RlLmVsbSwg
bGlzdGVuZXJzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHdlIGhhdmUgYSByZWN1cnNp
dmVseSBwYXNzZWQgZG93biBybSBjYWxsYmFja1xuICAgICAgICAvLyBpbmNyZWFzZSB0aGUgbGlz
dGVuZXJzIGNvdW50XG4gICAgICAgIHJtLmxpc3RlbmVycyArPSBsaXN0ZW5lcnM7XG4gICAgICB9
XG4gICAgICAvLyByZWN1cnNpdmVseSBpbnZva2UgaG9va3Mgb24gY2hpbGQgY29tcG9uZW50IHJv
b3Qgbm9kZVxuICAgICAgaWYgKGlzRGVmKGkgPSB2bm9kZS5jaGlsZCkgJiYgaXNEZWYoaSA9IGku
X3Zub2RlKSAmJiBpc0RlZihpLmRhdGEpKSB7XG4gICAgICAgIHJlbW92ZUFuZEludm9rZVJlbW92
ZUhvb2soaSwgcm0pO1xuICAgICAgfVxuICAgICAgZm9yIChpID0gMDsgaSA8IGNicy5yZW1vdmUu
bGVuZ3RoOyArK2kpIHtcbiAgICAgICAgY2JzLnJlbW92ZVtpXSh2bm9kZSwgcm0pO1xuICAgICAg
fVxuICAgICAgaWYgKGlzRGVmKGkgPSB2bm9kZS5kYXRhLmhvb2spICYmIGlzRGVmKGkgPSBpLnJl
bW92ZSkpIHtcbiAgICAgICAgaSh2bm9kZSwgcm0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAg
cm0oKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmVtb3ZlRWxlbWVudCh2bm9kZS5l
bG0pO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHVwZGF0ZUNoaWxkcmVuIChwYXJlbnRFbG0s
IG9sZENoLCBuZXdDaCwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCByZW1vdmVPbmx5KSB7XG4gICAgdmFy
IG9sZFN0YXJ0SWR4ID0gMDtcbiAgICB2YXIgbmV3U3RhcnRJZHggPSAwO1xuICAgIHZhciBvbGRF
bmRJZHggPSBvbGRDaC5sZW5ndGggLSAxO1xuICAgIHZhciBvbGRTdGFydFZub2RlID0gb2xkQ2hb
MF07XG4gICAgdmFyIG9sZEVuZFZub2RlID0gb2xkQ2hbb2xkRW5kSWR4XTtcbiAgICB2YXIgbmV3
RW5kSWR4ID0gbmV3Q2gubGVuZ3RoIC0gMTtcbiAgICB2YXIgbmV3U3RhcnRWbm9kZSA9IG5ld0No
WzBdO1xuICAgIHZhciBuZXdFbmRWbm9kZSA9IG5ld0NoW25ld0VuZElkeF07XG4gICAgdmFyIG9s
ZEtleVRvSWR4LCBpZHhJbk9sZCwgZWxtVG9Nb3ZlLCBiZWZvcmU7XG5cbiAgICAvLyByZW1vdmVP
bmx5IGlzIGEgc3BlY2lhbCBmbGFnIHVzZWQgb25seSBieSA8dHJhbnNpdGlvbi1ncm91cD5cbiAg
ICAvLyB0byBlbnN1cmUgcmVtb3ZlZCBlbGVtZW50cyBzdGF5IGluIGNvcnJlY3QgcmVsYXRpdmUg
cG9zaXRpb25zXG4gICAgLy8gZHVyaW5nIGxlYXZpbmcgdHJhbnNpdGlvbnNcbiAgICB2YXIgY2Fu
TW92ZSA9ICFyZW1vdmVPbmx5O1xuXG4gICAgd2hpbGUgKG9sZFN0YXJ0SWR4IDw9IG9sZEVuZElk
eCAmJiBuZXdTdGFydElkeCA8PSBuZXdFbmRJZHgpIHtcbiAgICAgIGlmIChpc1VuZGVmKG9sZFN0
YXJ0Vm5vZGUpKSB7XG4gICAgICAgIG9sZFN0YXJ0Vm5vZGUgPSBvbGRDaFsrK29sZFN0YXJ0SWR4
XTsgLy8gVm5vZGUgaGFzIGJlZW4gbW92ZWQgbGVmdFxuICAgICAgfSBlbHNlIGlmIChpc1VuZGVm
KG9sZEVuZFZub2RlKSkge1xuICAgICAgICBvbGRFbmRWbm9kZSA9IG9sZENoWy0tb2xkRW5kSWR4
XTtcbiAgICAgIH0gZWxzZSBpZiAoc2FtZVZub2RlKG9sZFN0YXJ0Vm5vZGUsIG5ld1N0YXJ0Vm5v
ZGUpKSB7XG4gICAgICAgIHBhdGNoVm5vZGUob2xkU3RhcnRWbm9kZSwgbmV3U3RhcnRWbm9kZSwg
aW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAgICAgb2xkU3RhcnRWbm9kZSA9IG9sZENoWysrb2xk
U3RhcnRJZHhdO1xuICAgICAgICBuZXdTdGFydFZub2RlID0gbmV3Q2hbKytuZXdTdGFydElkeF07
XG4gICAgICB9IGVsc2UgaWYgKHNhbWVWbm9kZShvbGRFbmRWbm9kZSwgbmV3RW5kVm5vZGUpKSB7
XG4gICAgICAgIHBhdGNoVm5vZGUob2xkRW5kVm5vZGUsIG5ld0VuZFZub2RlLCBpbnNlcnRlZFZu
b2RlUXVldWUpO1xuICAgICAgICBvbGRFbmRWbm9kZSA9IG9sZENoWy0tb2xkRW5kSWR4XTtcbiAg
ICAgICAgbmV3RW5kVm5vZGUgPSBuZXdDaFstLW5ld0VuZElkeF07XG4gICAgICB9IGVsc2UgaWYg
KHNhbWVWbm9kZShvbGRTdGFydFZub2RlLCBuZXdFbmRWbm9kZSkpIHsgLy8gVm5vZGUgbW92ZWQg
cmlnaHRcbiAgICAgICAgcGF0Y2hWbm9kZShvbGRTdGFydFZub2RlLCBuZXdFbmRWbm9kZSwgaW5z
ZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAgICAgY2FuTW92ZSAmJiBub2RlT3BzLmluc2VydEJlZm9y
ZShwYXJlbnRFbG0sIG9sZFN0YXJ0Vm5vZGUuZWxtLCBub2RlT3BzLm5leHRTaWJsaW5nKG9sZEVu
ZFZub2RlLmVsbSkpO1xuICAgICAgICBvbGRTdGFydFZub2RlID0gb2xkQ2hbKytvbGRTdGFydElk
eF07XG4gICAgICAgIG5ld0VuZFZub2RlID0gbmV3Q2hbLS1uZXdFbmRJZHhdO1xuICAgICAgfSBl
bHNlIGlmIChzYW1lVm5vZGUob2xkRW5kVm5vZGUsIG5ld1N0YXJ0Vm5vZGUpKSB7IC8vIFZub2Rl
IG1vdmVkIGxlZnRcbiAgICAgICAgcGF0Y2hWbm9kZShvbGRFbmRWbm9kZSwgbmV3U3RhcnRWbm9k
ZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAgICAgY2FuTW92ZSAmJiBub2RlT3BzLmluc2Vy
dEJlZm9yZShwYXJlbnRFbG0sIG9sZEVuZFZub2RlLmVsbSwgb2xkU3RhcnRWbm9kZS5lbG0pO1xu
ICAgICAgICBvbGRFbmRWbm9kZSA9IG9sZENoWy0tb2xkRW5kSWR4XTtcbiAgICAgICAgbmV3U3Rh
cnRWbm9kZSA9IG5ld0NoWysrbmV3U3RhcnRJZHhdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAg
aWYgKGlzVW5kZWYob2xkS2V5VG9JZHgpKSB7IG9sZEtleVRvSWR4ID0gY3JlYXRlS2V5VG9PbGRJ
ZHgob2xkQ2gsIG9sZFN0YXJ0SWR4LCBvbGRFbmRJZHgpOyB9XG4gICAgICAgIGlkeEluT2xkID0g
aXNEZWYobmV3U3RhcnRWbm9kZS5rZXkpID8gb2xkS2V5VG9JZHhbbmV3U3RhcnRWbm9kZS5rZXld
IDogbnVsbDtcbiAgICAgICAgaWYgKGlzVW5kZWYoaWR4SW5PbGQpKSB7IC8vIE5ldyBlbGVtZW50
XG4gICAgICAgICAgbm9kZU9wcy5pbnNlcnRCZWZvcmUocGFyZW50RWxtLCBjcmVhdGVFbG0obmV3
U3RhcnRWbm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKSwgb2xkU3RhcnRWbm9kZS5lbG0pO1xuICAg
ICAgICAgIG5ld1N0YXJ0Vm5vZGUgPSBuZXdDaFsrK25ld1N0YXJ0SWR4XTtcbiAgICAgICAgfSBl
bHNlIHtcbiAgICAgICAgICBlbG1Ub01vdmUgPSBvbGRDaFtpZHhJbk9sZF07XG4gICAgICAgICAg
LyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVf
RU5WICE9PSAncHJvZHVjdGlvbicgJiYgIWVsbVRvTW92ZSkge1xuICAgICAgICAgICAgd2Fybihc
biAgICAgICAgICAgICAgJ0l0IHNlZW1zIHRoZXJlIGFyZSBkdXBsaWNhdGUga2V5cyB0aGF0IGlz
IGNhdXNpbmcgYW4gdXBkYXRlIGVycm9yLiAnICtcbiAgICAgICAgICAgICAgJ01ha2Ugc3VyZSBl
YWNoIHYtZm9yIGl0ZW0gaGFzIGEgdW5pcXVlIGtleS4nXG4gICAgICAgICAgICApO1xuICAgICAg
ICAgIH1cbiAgICAgICAgICBpZiAoZWxtVG9Nb3ZlLnRhZyAhPT0gbmV3U3RhcnRWbm9kZS50YWcp
IHtcbiAgICAgICAgICAgIC8vIHNhbWUga2V5IGJ1dCBkaWZmZXJlbnQgZWxlbWVudC4gdHJlYXQg
YXMgbmV3IGVsZW1lbnRcbiAgICAgICAgICAgIG5vZGVPcHMuaW5zZXJ0QmVmb3JlKHBhcmVudEVs
bSwgY3JlYXRlRWxtKG5ld1N0YXJ0Vm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSksIG9sZFN0YXJ0
Vm5vZGUuZWxtKTtcbiAgICAgICAgICAgIG5ld1N0YXJ0Vm5vZGUgPSBuZXdDaFsrK25ld1N0YXJ0
SWR4XTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGF0Y2hWbm9kZShlbG1Ub01v
dmUsIG5ld1N0YXJ0Vm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSk7XG4gICAgICAgICAgICBvbGRD
aFtpZHhJbk9sZF0gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICBjYW5Nb3ZlICYmIG5vZGVPcHMu
aW5zZXJ0QmVmb3JlKHBhcmVudEVsbSwgbmV3U3RhcnRWbm9kZS5lbG0sIG9sZFN0YXJ0Vm5vZGUu
ZWxtKTtcbiAgICAgICAgICAgIG5ld1N0YXJ0Vm5vZGUgPSBuZXdDaFsrK25ld1N0YXJ0SWR4XTtc
biAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKG9sZFN0YXJ0
SWR4ID4gb2xkRW5kSWR4KSB7XG4gICAgICBiZWZvcmUgPSBpc1VuZGVmKG5ld0NoW25ld0VuZElk
eCArIDFdKSA/IG51bGwgOiBuZXdDaFtuZXdFbmRJZHggKyAxXS5lbG07XG4gICAgICBhZGRWbm9k
ZXMocGFyZW50RWxtLCBiZWZvcmUsIG5ld0NoLCBuZXdTdGFydElkeCwgbmV3RW5kSWR4LCBpbnNl
cnRlZFZub2RlUXVldWUpO1xuICAgIH0gZWxzZSBpZiAobmV3U3RhcnRJZHggPiBuZXdFbmRJZHgp
IHtcbiAgICAgIHJlbW92ZVZub2RlcyhwYXJlbnRFbG0sIG9sZENoLCBvbGRTdGFydElkeCwgb2xk
RW5kSWR4KTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBwYXRjaFZub2RlIChvbGRWbm9kZSwg
dm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSwgcmVtb3ZlT25seSkge1xuICAgIGlmIChvbGRWbm9k
ZSA9PT0gdm5vZGUpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICAvLyByZXVzZSBlbGVtZW50
IGZvciBzdGF0aWMgdHJlZXMuXG4gICAgLy8gbm90ZSB3ZSBvbmx5IGRvIHRoaXMgaWYgdGhlIHZu
b2RlIGlzIGNsb25lZCAtXG4gICAgLy8gaWYgdGhlIG5ldyBub2RlIGlzIG5vdCBjbG9uZWQgaXQg
bWVhbnMgdGhlIHJlbmRlciBmdW5jdGlvbnMgaGF2ZSBiZWVuXG4gICAgLy8gcmVzZXQgYnkgdGhl
IGhvdC1yZWxvYWQtYXBpIGFuZCB3ZSBuZWVkIHRvIGRvIGEgcHJvcGVyIHJlLXJlbmRlci5cbiAg
ICBpZiAodm5vZGUuaXNTdGF0aWMgJiZcbiAgICAgICAgb2xkVm5vZGUuaXNTdGF0aWMgJiZcbiAg
ICAgICAgdm5vZGUua2V5ID09PSBvbGRWbm9kZS5rZXkgJiZcbiAgICAgICAgKHZub2RlLmlzQ2xv
bmVkIHx8IHZub2RlLmlzT25jZSkpIHtcbiAgICAgIHZub2RlLmVsbSA9IG9sZFZub2RlLmVsbTtc
biAgICAgIHZub2RlLmNoaWxkID0gb2xkVm5vZGUuY2hpbGQ7XG4gICAgICByZXR1cm5cbiAgICB9
XG4gICAgdmFyIGk7XG4gICAgdmFyIGRhdGEgPSB2bm9kZS5kYXRhO1xuICAgIHZhciBoYXNEYXRh
ID0gaXNEZWYoZGF0YSk7XG4gICAgaWYgKGhhc0RhdGEgJiYgaXNEZWYoaSA9IGRhdGEuaG9vaykg
JiYgaXNEZWYoaSA9IGkucHJlcGF0Y2gpKSB7XG4gICAgICBpKG9sZFZub2RlLCB2bm9kZSk7XG4g
ICAgfVxuICAgIHZhciBlbG0gPSB2bm9kZS5lbG0gPSBvbGRWbm9kZS5lbG07XG4gICAgdmFyIG9s
ZENoID0gb2xkVm5vZGUuY2hpbGRyZW47XG4gICAgdmFyIGNoID0gdm5vZGUuY2hpbGRyZW47XG4g
ICAgaWYgKGhhc0RhdGEgJiYgaXNQYXRjaGFibGUodm5vZGUpKSB7XG4gICAgICBmb3IgKGkgPSAw
OyBpIDwgY2JzLnVwZGF0ZS5sZW5ndGg7ICsraSkgeyBjYnMudXBkYXRlW2ldKG9sZFZub2RlLCB2
bm9kZSk7IH1cbiAgICAgIGlmIChpc0RlZihpID0gZGF0YS5ob29rKSAmJiBpc0RlZihpID0gaS51
cGRhdGUpKSB7IGkob2xkVm5vZGUsIHZub2RlKTsgfVxuICAgIH1cbiAgICBpZiAoaXNVbmRlZih2
bm9kZS50ZXh0KSkge1xuICAgICAgaWYgKGlzRGVmKG9sZENoKSAmJiBpc0RlZihjaCkpIHtcbiAg
ICAgICAgaWYgKG9sZENoICE9PSBjaCkgeyB1cGRhdGVDaGlsZHJlbihlbG0sIG9sZENoLCBjaCwg
aW5zZXJ0ZWRWbm9kZVF1ZXVlLCByZW1vdmVPbmx5KTsgfVxuICAgICAgfSBlbHNlIGlmIChpc0Rl
ZihjaCkpIHtcbiAgICAgICAgaWYgKGlzRGVmKG9sZFZub2RlLnRleHQpKSB7IG5vZGVPcHMuc2V0
VGV4dENvbnRlbnQoZWxtLCAnJyk7IH1cbiAgICAgICAgYWRkVm5vZGVzKGVsbSwgbnVsbCwgY2gs
IDAsIGNoLmxlbmd0aCAtIDEsIGluc2VydGVkVm5vZGVRdWV1ZSk7XG4gICAgICB9IGVsc2UgaWYg
KGlzRGVmKG9sZENoKSkge1xuICAgICAgICByZW1vdmVWbm9kZXMoZWxtLCBvbGRDaCwgMCwgb2xk
Q2gubGVuZ3RoIC0gMSk7XG4gICAgICB9IGVsc2UgaWYgKGlzRGVmKG9sZFZub2RlLnRleHQpKSB7
XG4gICAgICAgIG5vZGVPcHMuc2V0VGV4dENvbnRlbnQoZWxtLCAnJyk7XG4gICAgICB9XG4gICAg
fSBlbHNlIGlmIChvbGRWbm9kZS50ZXh0ICE9PSB2bm9kZS50ZXh0KSB7XG4gICAgICBub2RlT3Bz
LnNldFRleHRDb250ZW50KGVsbSwgdm5vZGUudGV4dCk7XG4gICAgfVxuICAgIGlmIChoYXNEYXRh
KSB7XG4gICAgICBpZiAoaXNEZWYoaSA9IGRhdGEuaG9vaykgJiYgaXNEZWYoaSA9IGkucG9zdHBh
dGNoKSkgeyBpKG9sZFZub2RlLCB2bm9kZSk7IH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBp
bnZva2VJbnNlcnRIb29rICh2bm9kZSwgcXVldWUsIGluaXRpYWwpIHtcbiAgICAvLyBkZWxheSBp
bnNlcnQgaG9va3MgZm9yIGNvbXBvbmVudCByb290IG5vZGVzLCBpbnZva2UgdGhlbSBhZnRlciB0
aGVcbiAgICAvLyBlbGVtZW50IGlzIHJlYWxseSBpbnNlcnRlZFxuICAgIGlmIChpbml0aWFsICYm
IHZub2RlLnBhcmVudCkge1xuICAgICAgdm5vZGUucGFyZW50LmRhdGEucGVuZGluZ0luc2VydCA9
IHF1ZXVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHF1ZXVlLmxl
bmd0aDsgKytpKSB7XG4gICAgICAgIHF1ZXVlW2ldLmRhdGEuaG9vay5pbnNlcnQocXVldWVbaV0p
O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHZhciBiYWlsZWQgPSBmYWxzZTtcbiAgZnVuY3Rp
b24gaHlkcmF0ZSAoZWxtLCB2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKSB7XG4gICAgaWYgKHBy
b2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGlmICghYXNzZXJ0
Tm9kZU1hdGNoKGVsbSwgdm5vZGUpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxu
ICAgIH1cbiAgICB2bm9kZS5lbG0gPSBlbG07XG4gICAgdmFyIHRhZyA9IHZub2RlLnRhZztcbiAg
ICB2YXIgZGF0YSA9IHZub2RlLmRhdGE7XG4gICAgdmFyIGNoaWxkcmVuID0gdm5vZGUuY2hpbGRy
ZW47XG4gICAgaWYgKGlzRGVmKGRhdGEpKSB7XG4gICAgICBpZiAoaXNEZWYoaSA9IGRhdGEuaG9v
aykgJiYgaXNEZWYoaSA9IGkuaW5pdCkpIHsgaSh2bm9kZSwgdHJ1ZSAvKiBoeWRyYXRpbmcgKi8p
OyB9XG4gICAgICBpZiAoaXNEZWYoaSA9IHZub2RlLmNoaWxkKSkge1xuICAgICAgICAvLyBjaGls
ZCBjb21wb25lbnQuIGl0IHNob3VsZCBoYXZlIGh5ZHJhdGVkIGl0cyBvd24gdHJlZS5cbiAgICAg
ICAgaW5pdENvbXBvbmVudCh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAgICAgcmV0
dXJuIHRydWVcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGlzRGVmKHRhZykpIHtcbiAgICAgIGlm
IChpc0RlZihjaGlsZHJlbikpIHtcbiAgICAgICAgdmFyIGNoaWxkTm9kZXMgPSBub2RlT3BzLmNo
aWxkTm9kZXMoZWxtKTtcbiAgICAgICAgLy8gZW1wdHkgZWxlbWVudCwgYWxsb3cgY2xpZW50IHRv
IHBpY2sgdXAgYW5kIHBvcHVsYXRlIGNoaWxkcmVuXG4gICAgICAgIGlmICghY2hpbGROb2Rlcy5s
ZW5ndGgpIHtcbiAgICAgICAgICBjcmVhdGVDaGlsZHJlbih2bm9kZSwgY2hpbGRyZW4sIGluc2Vy
dGVkVm5vZGVRdWV1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIGNoaWxkcmVu
TWF0Y2ggPSB0cnVlO1xuICAgICAgICAgIGlmIChjaGlsZE5vZGVzLmxlbmd0aCAhPT0gY2hpbGRy
ZW4ubGVuZ3RoKSB7XG4gICAgICAgICAgICBjaGlsZHJlbk1hdGNoID0gZmFsc2U7XG4gICAgICAg
ICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvciAodmFyIGkkMSA9IDA7IGkkMSA8IGNoaWxkcmVu
Lmxlbmd0aDsgaSQxKyspIHtcbiAgICAgICAgICAgICAgaWYgKCFoeWRyYXRlKGNoaWxkTm9kZXNb
aSQxXSwgY2hpbGRyZW5baSQxXSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKSkge1xuICAgICAgICAgICAg
ICAgIGNoaWxkcmVuTWF0Y2ggPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBicmVha1xuICAgICAg
ICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghY2hp
bGRyZW5NYXRjaCkge1xuICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicgJiZcbiAgICAgICAgICAgICAgICB0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVm
aW5lZCcgJiZcbiAgICAgICAgICAgICAgICAhYmFpbGVkKSB7XG4gICAgICAgICAgICAgIGJhaWxl
ZCA9IHRydWU7XG4gICAgICAgICAgICAgIGNvbnNvbGUud2FybignUGFyZW50OiAnLCBlbG0pO1xu
ICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ01pc21hdGNoaW5nIGNoaWxkTm9kZXMgdnMuIFZO
b2RlczogJywgY2hpbGROb2RlcywgY2hpbGRyZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBp
ZiAoaXNEZWYoZGF0YSkpIHtcbiAgICAgICAgaW52b2tlQ3JlYXRlSG9va3Modm5vZGUsIGluc2Vy
dGVkVm5vZGVRdWV1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlXG4gIH1cblxu
ICBmdW5jdGlvbiBhc3NlcnROb2RlTWF0Y2ggKG5vZGUsIHZub2RlKSB7XG4gICAgaWYgKHZub2Rl
LnRhZykge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgdm5vZGUudGFnLmluZGV4T2YoJ3Z1ZS1j
b21wb25lbnQnKSA9PT0gMCB8fFxuICAgICAgICB2bm9kZS50YWcudG9Mb3dlckNhc2UoKSA9PT0g
bm9kZU9wcy50YWdOYW1lKG5vZGUpLnRvTG93ZXJDYXNlKClcbiAgICAgIClcbiAgICB9IGVsc2Ug
e1xuICAgICAgcmV0dXJuIF90b1N0cmluZyh2bm9kZS50ZXh0KSA9PT0gbm9kZS5kYXRhXG4gICAg
fVxuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIHBhdGNoIChvbGRWbm9kZSwgdm5vZGUsIGh5ZHJh
dGluZywgcmVtb3ZlT25seSkge1xuICAgIGlmICghdm5vZGUpIHtcbiAgICAgIGlmIChvbGRWbm9k
ZSkgeyBpbnZva2VEZXN0cm95SG9vayhvbGRWbm9kZSk7IH1cbiAgICAgIHJldHVyblxuICAgIH1c
blxuICAgIHZhciBlbG0sIHBhcmVudDtcbiAgICB2YXIgaXNJbml0aWFsUGF0Y2ggPSBmYWxzZTtc
biAgICB2YXIgaW5zZXJ0ZWRWbm9kZVF1ZXVlID0gW107XG5cbiAgICBpZiAoIW9sZFZub2RlKSB7
XG4gICAgICAvLyBlbXB0eSBtb3VudCwgY3JlYXRlIG5ldyByb290IGVsZW1lbnRcbiAgICAgIGlz
SW5pdGlhbFBhdGNoID0gdHJ1ZTtcbiAgICAgIGNyZWF0ZUVsbSh2bm9kZSwgaW5zZXJ0ZWRWbm9k
ZVF1ZXVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGlzUmVhbEVsZW1lbnQgPSBpc0RlZihv
bGRWbm9kZS5ub2RlVHlwZSk7XG4gICAgICBpZiAoIWlzUmVhbEVsZW1lbnQgJiYgc2FtZVZub2Rl
KG9sZFZub2RlLCB2bm9kZSkpIHtcbiAgICAgICAgcGF0Y2hWbm9kZShvbGRWbm9kZSwgdm5vZGUs
IGluc2VydGVkVm5vZGVRdWV1ZSwgcmVtb3ZlT25seSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAg
ICBpZiAoaXNSZWFsRWxlbWVudCkge1xuICAgICAgICAgIC8vIG1vdW50aW5nIHRvIGEgcmVhbCBl
bGVtZW50XG4gICAgICAgICAgLy8gY2hlY2sgaWYgdGhpcyBpcyBzZXJ2ZXItcmVuZGVyZWQgY29u
dGVudCBhbmQgaWYgd2UgY2FuIHBlcmZvcm1cbiAgICAgICAgICAvLyBhIHN1Y2Nlc3NmdWwgaHlk
cmF0aW9uLlxuICAgICAgICAgIGlmIChvbGRWbm9kZS5ub2RlVHlwZSA9PT0gMSAmJiBvbGRWbm9k
ZS5oYXNBdHRyaWJ1dGUoJ3NlcnZlci1yZW5kZXJlZCcpKSB7XG4gICAgICAgICAgICBvbGRWbm9k
ZS5yZW1vdmVBdHRyaWJ1dGUoJ3NlcnZlci1yZW5kZXJlZCcpO1xuICAgICAgICAgICAgaHlkcmF0
aW5nID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGh5ZHJhdGluZykge1xuICAg
ICAgICAgICAgaWYgKGh5ZHJhdGUob2xkVm5vZGUsIHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUp
KSB7XG4gICAgICAgICAgICAgIGludm9rZUluc2VydEhvb2sodm5vZGUsIGluc2VydGVkVm5vZGVR
dWV1ZSwgdHJ1ZSk7XG4gICAgICAgICAgICAgIHJldHVybiBvbGRWbm9kZVxuICAgICAgICAgICAg
fSBlbHNlIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAg
ICAgICAgICAgIHdhcm4oXG4gICAgICAgICAgICAgICAgJ1RoZSBjbGllbnQtc2lkZSByZW5kZXJl
ZCB2aXJ0dWFsIERPTSB0cmVlIGlzIG5vdCBtYXRjaGluZyAnICtcbiAgICAgICAgICAgICAgICAn
c2VydmVyLXJlbmRlcmVkIGNvbnRlbnQuIFRoaXMgaXMgbGlrZWx5IGNhdXNlZCBieSBpbmNvcnJl
Y3QgJyArXG4gICAgICAgICAgICAgICAgJ0hUTUwgbWFya3VwLCBmb3IgZXhhbXBsZSBuZXN0aW5n
IGJsb2NrLWxldmVsIGVsZW1lbnRzIGluc2lkZSAnICtcbiAgICAgICAgICAgICAgICAnPHA+LCBv
ciBtaXNzaW5nIDx0Ym9keT4uIEJhaWxpbmcgaHlkcmF0aW9uIGFuZCBwZXJmb3JtaW5nICcgK1xu
ICAgICAgICAgICAgICAgICdmdWxsIGNsaWVudC1zaWRlIHJlbmRlci4nXG4gICAgICAgICAgICAg
ICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIGVpdGhlciBub3Qg
c2VydmVyLXJlbmRlcmVkLCBvciBoeWRyYXRpb24gZmFpbGVkLlxuICAgICAgICAgIC8vIGNyZWF0
ZSBhbiBlbXB0eSBub2RlIGFuZCByZXBsYWNlIGl0XG4gICAgICAgICAgb2xkVm5vZGUgPSBlbXB0
eU5vZGVBdChvbGRWbm9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxtID0gb2xkVm5vZGUuZWxt
O1xuICAgICAgICBwYXJlbnQgPSBub2RlT3BzLnBhcmVudE5vZGUoZWxtKTtcblxuICAgICAgICBj
cmVhdGVFbG0odm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSk7XG5cbiAgICAgICAgLy8gY29tcG9u
ZW50IHJvb3QgZWxlbWVudCByZXBsYWNlZC5cbiAgICAgICAgLy8gdXBkYXRlIHBhcmVudCBwbGFj
ZWhvbGRlciBub2RlIGVsZW1lbnQsIHJlY3Vyc2l2ZWx5XG4gICAgICAgIGlmICh2bm9kZS5wYXJl
bnQpIHtcbiAgICAgICAgICB2YXIgYW5jZXN0b3IgPSB2bm9kZS5wYXJlbnQ7XG4gICAgICAgICAg
d2hpbGUgKGFuY2VzdG9yKSB7XG4gICAgICAgICAgICBhbmNlc3Rvci5lbG0gPSB2bm9kZS5lbG07
XG4gICAgICAgICAgICBhbmNlc3RvciA9IGFuY2VzdG9yLnBhcmVudDtcbiAgICAgICAgICB9XG4g
ICAgICAgICAgaWYgKGlzUGF0Y2hhYmxlKHZub2RlKSkge1xuICAgICAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBjYnMuY3JlYXRlLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICAgIGNicy5j
cmVhdGVbaV0oZW1wdHlOb2RlLCB2bm9kZS5wYXJlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAg
ICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwYXJlbnQgIT09IG51bGwpIHtcbiAgICAg
ICAgICBub2RlT3BzLmluc2VydEJlZm9yZShwYXJlbnQsIHZub2RlLmVsbSwgbm9kZU9wcy5uZXh0
U2libGluZyhlbG0pKTtcbiAgICAgICAgICByZW1vdmVWbm9kZXMocGFyZW50LCBbb2xkVm5vZGVd
LCAwLCAwKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0RlZihvbGRWbm9kZS50YWcpKSB7XG4gICAg
ICAgICAgaW52b2tlRGVzdHJveUhvb2sob2xkVm5vZGUpO1xuICAgICAgICB9XG4gICAgICB9XG4g
ICAgfVxuXG4gICAgaW52b2tlSW5zZXJ0SG9vayh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCBp
c0luaXRpYWxQYXRjaCk7XG4gICAgcmV0dXJuIHZub2RlLmVsbVxuICB9XG59XG5cbi8qICAqL1xu
XG52YXIgZGlyZWN0aXZlcyA9IHtcbiAgY3JlYXRlOiB1cGRhdGVEaXJlY3RpdmVzLFxuICB1cGRh
dGU6IHVwZGF0ZURpcmVjdGl2ZXMsXG4gIGRlc3Ryb3k6IGZ1bmN0aW9uIHVuYmluZERpcmVjdGl2
ZXMgKHZub2RlKSB7XG4gICAgdXBkYXRlRGlyZWN0aXZlcyh2bm9kZSwgZW1wdHlOb2RlKTtcbiAg
fVxufTtcblxuZnVuY3Rpb24gdXBkYXRlRGlyZWN0aXZlcyAoXG4gIG9sZFZub2RlLFxuICB2bm9k
ZVxuKSB7XG4gIGlmICghb2xkVm5vZGUuZGF0YS5kaXJlY3RpdmVzICYmICF2bm9kZS5kYXRhLmRp
cmVjdGl2ZXMpIHtcbiAgICByZXR1cm5cbiAgfVxuICB2YXIgaXNDcmVhdGUgPSBvbGRWbm9kZSA9
PT0gZW1wdHlOb2RlO1xuICB2YXIgb2xkRGlycyA9IG5vcm1hbGl6ZURpcmVjdGl2ZXMkMShvbGRW
bm9kZS5kYXRhLmRpcmVjdGl2ZXMsIG9sZFZub2RlLmNvbnRleHQpO1xuICB2YXIgbmV3RGlycyA9
IG5vcm1hbGl6ZURpcmVjdGl2ZXMkMSh2bm9kZS5kYXRhLmRpcmVjdGl2ZXMsIHZub2RlLmNvbnRl
eHQpO1xuXG4gIHZhciBkaXJzV2l0aEluc2VydCA9IFtdO1xuICB2YXIgZGlyc1dpdGhQb3N0cGF0
Y2ggPSBbXTtcblxuICB2YXIga2V5LCBvbGREaXIsIGRpcjtcbiAgZm9yIChrZXkgaW4gbmV3RGly
cykge1xuICAgIG9sZERpciA9IG9sZERpcnNba2V5XTtcbiAgICBkaXIgPSBuZXdEaXJzW2tleV07
XG4gICAgaWYgKCFvbGREaXIpIHtcbiAgICAgIC8vIG5ldyBkaXJlY3RpdmUsIGJpbmRcbiAgICAg
IGNhbGxIb29rJDEoZGlyLCAnYmluZCcsIHZub2RlLCBvbGRWbm9kZSk7XG4gICAgICBpZiAoZGly
LmRlZiAmJiBkaXIuZGVmLmluc2VydGVkKSB7XG4gICAgICAgIGRpcnNXaXRoSW5zZXJ0LnB1c2go
ZGlyKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gZXhpc3RpbmcgZGlyZWN0aXZl
LCB1cGRhdGVcbiAgICAgIGRpci5vbGRWYWx1ZSA9IG9sZERpci52YWx1ZTtcbiAgICAgIGNhbGxI
b29rJDEoZGlyLCAndXBkYXRlJywgdm5vZGUsIG9sZFZub2RlKTtcbiAgICAgIGlmIChkaXIuZGVm
ICYmIGRpci5kZWYuY29tcG9uZW50VXBkYXRlZCkge1xuICAgICAgICBkaXJzV2l0aFBvc3RwYXRj
aC5wdXNoKGRpcik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGRpcnNXaXRoSW5zZXJ0
Lmxlbmd0aCkge1xuICAgIHZhciBjYWxsSW5zZXJ0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgZGly
c1dpdGhJbnNlcnQuZm9yRWFjaChmdW5jdGlvbiAoZGlyKSB7XG4gICAgICAgIGNhbGxIb29rJDEo
ZGlyLCAnaW5zZXJ0ZWQnLCB2bm9kZSwgb2xkVm5vZGUpO1xuICAgICAgfSk7XG4gICAgfTtcbiAg
ICBpZiAoaXNDcmVhdGUpIHtcbiAgICAgIG1lcmdlVk5vZGVIb29rKHZub2RlLmRhdGEuaG9vayB8
fCAodm5vZGUuZGF0YS5ob29rID0ge30pLCAnaW5zZXJ0JywgY2FsbEluc2VydCwgJ2Rpci1pbnNl
cnQnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2FsbEluc2VydCgpO1xuICAgIH1cbiAgfVxuXG4g
IGlmIChkaXJzV2l0aFBvc3RwYXRjaC5sZW5ndGgpIHtcbiAgICBtZXJnZVZOb2RlSG9vayh2bm9k
ZS5kYXRhLmhvb2sgfHwgKHZub2RlLmRhdGEuaG9vayA9IHt9KSwgJ3Bvc3RwYXRjaCcsIGZ1bmN0
aW9uICgpIHtcbiAgICAgIGRpcnNXaXRoUG9zdHBhdGNoLmZvckVhY2goZnVuY3Rpb24gKGRpcikg
e1xuICAgICAgICBjYWxsSG9vayQxKGRpciwgJ2NvbXBvbmVudFVwZGF0ZWQnLCB2bm9kZSwgb2xk
Vm5vZGUpO1xuICAgICAgfSk7XG4gICAgfSwgJ2Rpci1wb3N0cGF0Y2gnKTtcbiAgfVxuXG4gIGlm
ICghaXNDcmVhdGUpIHtcbiAgICBmb3IgKGtleSBpbiBvbGREaXJzKSB7XG4gICAgICBpZiAoIW5l
d0RpcnNba2V5XSkge1xuICAgICAgICAvLyBubyBsb25nZXIgcHJlc2VudCwgdW5iaW5kXG4gICAg
ICAgIGNhbGxIb29rJDEob2xkRGlyc1trZXldLCAndW5iaW5kJywgb2xkVm5vZGUpO1xuICAgICAg
fVxuICAgIH1cbiAgfVxufVxuXG52YXIgZW1wdHlNb2RpZmllcnMgPSBPYmplY3QuY3JlYXRlKG51
bGwpO1xuXG5mdW5jdGlvbiBub3JtYWxpemVEaXJlY3RpdmVzJDEgKFxuICBkaXJzLFxuICB2bVxu
KSB7XG4gIHZhciByZXMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBpZiAoIWRpcnMpIHtcbiAg
ICByZXR1cm4gcmVzXG4gIH1cbiAgdmFyIGksIGRpcjtcbiAgZm9yIChpID0gMDsgaSA8IGRpcnMu
bGVuZ3RoOyBpKyspIHtcbiAgICBkaXIgPSBkaXJzW2ldO1xuICAgIGlmICghZGlyLm1vZGlmaWVy
cykge1xuICAgICAgZGlyLm1vZGlmaWVycyA9IGVtcHR5TW9kaWZpZXJzO1xuICAgIH1cbiAgICBy
ZXNbZ2V0UmF3RGlyTmFtZShkaXIpXSA9IGRpcjtcbiAgICBkaXIuZGVmID0gcmVzb2x2ZUFzc2V0
KHZtLiRvcHRpb25zLCAnZGlyZWN0aXZlcycsIGRpci5uYW1lLCB0cnVlKTtcbiAgfVxuICByZXR1
cm4gcmVzXG59XG5cbmZ1bmN0aW9uIGdldFJhd0Rpck5hbWUgKGRpcikge1xuICByZXR1cm4gZGly
LnJhd05hbWUgfHwgKChkaXIubmFtZSkgKyBcIi5cIiArIChPYmplY3Qua2V5cyhkaXIubW9kaWZp
ZXJzIHx8IHt9KS5qb2luKCcuJykpKVxufVxuXG5mdW5jdGlvbiBjYWxsSG9vayQxIChkaXIsIGhv
b2ssIHZub2RlLCBvbGRWbm9kZSkge1xuICB2YXIgZm4gPSBkaXIuZGVmICYmIGRpci5kZWZbaG9v
a107XG4gIGlmIChmbikge1xuICAgIGZuKHZub2RlLmVsbSwgZGlyLCB2bm9kZSwgb2xkVm5vZGUp
O1xuICB9XG59XG5cbnZhciBiYXNlTW9kdWxlcyA9IFtcbiAgcmVmLFxuICBkaXJlY3RpdmVzXG5d
O1xuXG4vKiAgKi9cblxuZnVuY3Rpb24gdXBkYXRlQXR0cnMgKG9sZFZub2RlLCB2bm9kZSkge1xu
ICBpZiAoIW9sZFZub2RlLmRhdGEuYXR0cnMgJiYgIXZub2RlLmRhdGEuYXR0cnMpIHtcbiAgICBy
ZXR1cm5cbiAgfVxuICB2YXIga2V5LCBjdXIsIG9sZDtcbiAgdmFyIGVsbSA9IHZub2RlLmVsbTtc
biAgdmFyIG9sZEF0dHJzID0gb2xkVm5vZGUuZGF0YS5hdHRycyB8fCB7fTtcbiAgdmFyIGF0dHJz
ID0gdm5vZGUuZGF0YS5hdHRycyB8fCB7fTtcbiAgLy8gY2xvbmUgb2JzZXJ2ZWQgb2JqZWN0cywg
YXMgdGhlIHVzZXIgcHJvYmFibHkgd2FudHMgdG8gbXV0YXRlIGl0XG4gIGlmIChhdHRycy5fX29i
X18pIHtcbiAgICBhdHRycyA9IHZub2RlLmRhdGEuYXR0cnMgPSBleHRlbmQoe30sIGF0dHJzKTtc
biAgfVxuXG4gIGZvciAoa2V5IGluIGF0dHJzKSB7XG4gICAgY3VyID0gYXR0cnNba2V5XTtcbiAg
ICBvbGQgPSBvbGRBdHRyc1trZXldO1xuICAgIGlmIChvbGQgIT09IGN1cikge1xuICAgICAgc2V0
QXR0cihlbG0sIGtleSwgY3VyKTtcbiAgICB9XG4gIH1cbiAgZm9yIChrZXkgaW4gb2xkQXR0cnMp
IHtcbiAgICBpZiAoYXR0cnNba2V5XSA9PSBudWxsKSB7XG4gICAgICBpZiAoaXNYbGluayhrZXkp
KSB7XG4gICAgICAgIGVsbS5yZW1vdmVBdHRyaWJ1dGVOUyh4bGlua05TLCBnZXRYbGlua1Byb3Ao
a2V5KSk7XG4gICAgICB9IGVsc2UgaWYgKCFpc0VudW1lcmF0ZWRBdHRyKGtleSkpIHtcbiAgICAg
ICAgZWxtLnJlbW92ZUF0dHJpYnV0ZShrZXkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5m
dW5jdGlvbiBzZXRBdHRyIChlbCwga2V5LCB2YWx1ZSkge1xuICBpZiAoaXNCb29sZWFuQXR0cihr
ZXkpKSB7XG4gICAgLy8gc2V0IGF0dHJpYnV0ZSBmb3IgYmxhbmsgdmFsdWVcbiAgICAvLyBlLmcu
IDxvcHRpb24gZGlzYWJsZWQ+U2VsZWN0IG9uZTwvb3B0aW9uPlxuICAgIGlmIChpc0ZhbHN5QXR0
clZhbHVlKHZhbHVlKSkge1xuICAgICAgZWwucmVtb3ZlQXR0cmlidXRlKGtleSk7XG4gICAgfSBl
bHNlIHtcbiAgICAgIGVsLnNldEF0dHJpYnV0ZShrZXksIGtleSk7XG4gICAgfVxuICB9IGVsc2Ug
aWYgKGlzRW51bWVyYXRlZEF0dHIoa2V5KSkge1xuICAgIGVsLnNldEF0dHJpYnV0ZShrZXksIGlz
RmFsc3lBdHRyVmFsdWUodmFsdWUpIHx8IHZhbHVlID09PSAnZmFsc2UnID8gJ2ZhbHNlJyA6ICd0
cnVlJyk7XG4gIH0gZWxzZSBpZiAoaXNYbGluayhrZXkpKSB7XG4gICAgaWYgKGlzRmFsc3lBdHRy
VmFsdWUodmFsdWUpKSB7XG4gICAgICBlbC5yZW1vdmVBdHRyaWJ1dGVOUyh4bGlua05TLCBnZXRY
bGlua1Byb3Aoa2V5KSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsLnNldEF0dHJpYnV0ZU5TKHhs
aW5rTlMsIGtleSwgdmFsdWUpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoaXNGYWxzeUF0
dHJWYWx1ZSh2YWx1ZSkpIHtcbiAgICAgIGVsLnJlbW92ZUF0dHJpYnV0ZShrZXkpO1xuICAgIH0g
ZWxzZSB7XG4gICAgICBlbC5zZXRBdHRyaWJ1dGUoa2V5LCB2YWx1ZSk7XG4gICAgfVxuICB9XG59
XG5cbnZhciBhdHRycyA9IHtcbiAgY3JlYXRlOiB1cGRhdGVBdHRycyxcbiAgdXBkYXRlOiB1cGRh
dGVBdHRyc1xufTtcblxuLyogICovXG5cbmZ1bmN0aW9uIHVwZGF0ZUNsYXNzIChvbGRWbm9kZSwg
dm5vZGUpIHtcbiAgdmFyIGVsID0gdm5vZGUuZWxtO1xuICB2YXIgZGF0YSA9IHZub2RlLmRhdGE7
XG4gIHZhciBvbGREYXRhID0gb2xkVm5vZGUuZGF0YTtcbiAgaWYgKCFkYXRhLnN0YXRpY0NsYXNz
ICYmICFkYXRhLmNsYXNzICYmXG4gICAgICAoIW9sZERhdGEgfHwgKCFvbGREYXRhLnN0YXRpY0Ns
YXNzICYmICFvbGREYXRhLmNsYXNzKSkpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIHZhciBjbHMg
PSBnZW5DbGFzc0ZvclZub2RlKHZub2RlKTtcblxuICAvLyBoYW5kbGUgdHJhbnNpdGlvbiBjbGFz
c2VzXG4gIHZhciB0cmFuc2l0aW9uQ2xhc3MgPSBlbC5fdHJhbnNpdGlvbkNsYXNzZXM7XG4gIGlm
ICh0cmFuc2l0aW9uQ2xhc3MpIHtcbiAgICBjbHMgPSBjb25jYXQoY2xzLCBzdHJpbmdpZnlDbGFz
cyh0cmFuc2l0aW9uQ2xhc3MpKTtcbiAgfVxuXG4gIC8vIHNldCB0aGUgY2xhc3NcbiAgaWYgKGNs
cyAhPT0gZWwuX3ByZXZDbGFzcykge1xuICAgIGVsLnNldEF0dHJpYnV0ZSgnY2xhc3MnLCBjbHMp
O1xuICAgIGVsLl9wcmV2Q2xhc3MgPSBjbHM7XG4gIH1cbn1cblxudmFyIGtsYXNzID0ge1xuICBj
cmVhdGU6IHVwZGF0ZUNsYXNzLFxuICB1cGRhdGU6IHVwZGF0ZUNsYXNzXG59O1xuXG4vLyBza2lw
IHR5cGUgY2hlY2tpbmcgdGhpcyBmaWxlIGJlY2F1c2Ugd2UgbmVlZCB0byBhdHRhY2ggcHJpdmF0
ZSBwcm9wZXJ0aWVzXG4vLyB0byBlbGVtZW50c1xuXG5mdW5jdGlvbiB1cGRhdGVET01MaXN0ZW5l
cnMgKG9sZFZub2RlLCB2bm9kZSkge1xuICBpZiAoIW9sZFZub2RlLmRhdGEub24gJiYgIXZub2Rl
LmRhdGEub24pIHtcbiAgICByZXR1cm5cbiAgfVxuICB2YXIgb24gPSB2bm9kZS5kYXRhLm9uIHx8
IHt9O1xuICB2YXIgb2xkT24gPSBvbGRWbm9kZS5kYXRhLm9uIHx8IHt9O1xuICB2YXIgYWRkID0g
dm5vZGUuZWxtLl92X2FkZCB8fCAodm5vZGUuZWxtLl92X2FkZCA9IGZ1bmN0aW9uIChldmVudCwg
aGFuZGxlciwgY2FwdHVyZSkge1xuICAgIHZub2RlLmVsbS5hZGRFdmVudExpc3RlbmVyKGV2ZW50
LCBoYW5kbGVyLCBjYXB0dXJlKTtcbiAgfSk7XG4gIHZhciByZW1vdmUgPSB2bm9kZS5lbG0uX3Zf
cmVtb3ZlIHx8ICh2bm9kZS5lbG0uX3ZfcmVtb3ZlID0gZnVuY3Rpb24gKGV2ZW50LCBoYW5kbGVy
KSB7XG4gICAgdm5vZGUuZWxtLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQsIGhhbmRsZXIpO1xu
ICB9KTtcbiAgdXBkYXRlTGlzdGVuZXJzKG9uLCBvbGRPbiwgYWRkLCByZW1vdmUsIHZub2RlLmNv
bnRleHQpO1xufVxuXG52YXIgZXZlbnRzID0ge1xuICBjcmVhdGU6IHVwZGF0ZURPTUxpc3RlbmVy
cyxcbiAgdXBkYXRlOiB1cGRhdGVET01MaXN0ZW5lcnNcbn07XG5cbi8qICAqL1xuXG5mdW5jdGlv
biB1cGRhdGVET01Qcm9wcyAob2xkVm5vZGUsIHZub2RlKSB7XG4gIGlmICghb2xkVm5vZGUuZGF0
YS5kb21Qcm9wcyAmJiAhdm5vZGUuZGF0YS5kb21Qcm9wcykge1xuICAgIHJldHVyblxuICB9XG4g
IHZhciBrZXksIGN1cjtcbiAgdmFyIGVsbSA9IHZub2RlLmVsbTtcbiAgdmFyIG9sZFByb3BzID0g
b2xkVm5vZGUuZGF0YS5kb21Qcm9wcyB8fCB7fTtcbiAgdmFyIHByb3BzID0gdm5vZGUuZGF0YS5k
b21Qcm9wcyB8fCB7fTtcbiAgLy8gY2xvbmUgb2JzZXJ2ZWQgb2JqZWN0cywgYXMgdGhlIHVzZXIg
cHJvYmFibHkgd2FudHMgdG8gbXV0YXRlIGl0XG4gIGlmIChwcm9wcy5fX29iX18pIHtcbiAgICBw
cm9wcyA9IHZub2RlLmRhdGEuZG9tUHJvcHMgPSBleHRlbmQoe30sIHByb3BzKTtcbiAgfVxuXG4g
IGZvciAoa2V5IGluIG9sZFByb3BzKSB7XG4gICAgaWYgKHByb3BzW2tleV0gPT0gbnVsbCkge1xu
ICAgICAgZWxtW2tleV0gPSAnJztcbiAgICB9XG4gIH1cbiAgZm9yIChrZXkgaW4gcHJvcHMpIHtc
biAgICBjdXIgPSBwcm9wc1trZXldO1xuICAgIC8vIGlnbm9yZSBjaGlsZHJlbiBpZiB0aGUgbm9k
ZSBoYXMgdGV4dENvbnRlbnQgb3IgaW5uZXJIVE1MLFxuICAgIC8vIGFzIHRoZXNlIHdpbGwgdGhy
b3cgYXdheSBleGlzdGluZyBET00gbm9kZXMgYW5kIGNhdXNlIHJlbW92YWwgZXJyb3JzXG4gICAg
Ly8gb24gc3Vic2VxdWVudCBwYXRjaGVzICgjMzM2MClcbiAgICBpZiAoa2V5ID09PSAndGV4dENv
bnRlbnQnIHx8IGtleSA9PT0gJ2lubmVySFRNTCcpIHtcbiAgICAgIGlmICh2bm9kZS5jaGlsZHJl
bikgeyB2bm9kZS5jaGlsZHJlbi5sZW5ndGggPSAwOyB9XG4gICAgICBpZiAoY3VyID09PSBvbGRQ
cm9wc1trZXldKSB7IGNvbnRpbnVlIH1cbiAgICB9XG4gICAgaWYgKGtleSA9PT0gJ3ZhbHVlJykg
e1xuICAgICAgLy8gc3RvcmUgdmFsdWUgYXMgX3ZhbHVlIGFzIHdlbGwgc2luY2VcbiAgICAgIC8v
IG5vbi1zdHJpbmcgdmFsdWVzIHdpbGwgYmUgc3RyaW5naWZpZWRcbiAgICAgIGVsbS5fdmFsdWUg
PSBjdXI7XG4gICAgICAvLyBhdm9pZCByZXNldHRpbmcgY3Vyc29yIHBvc2l0aW9uIHdoZW4gdmFs
dWUgaXMgdGhlIHNhbWVcbiAgICAgIHZhciBzdHJDdXIgPSBjdXIgPT0gbnVsbCA/ICcnIDogU3Ry
aW5nKGN1cik7XG4gICAgICBpZiAoZWxtLnZhbHVlICE9PSBzdHJDdXIgJiYgIWVsbS5jb21wb3Np
bmcpIHtcbiAgICAgICAgZWxtLnZhbHVlID0gc3RyQ3VyO1xuICAgICAgfVxuICAgIH0gZWxzZSB7
XG4gICAgICBlbG1ba2V5XSA9IGN1cjtcbiAgICB9XG4gIH1cbn1cblxudmFyIGRvbVByb3BzID0g
e1xuICBjcmVhdGU6IHVwZGF0ZURPTVByb3BzLFxuICB1cGRhdGU6IHVwZGF0ZURPTVByb3BzXG59
O1xuXG4vKiAgKi9cblxudmFyIHBhcnNlU3R5bGVUZXh0ID0gY2FjaGVkKGZ1bmN0aW9uIChjc3NU
ZXh0KSB7XG4gIHZhciByZXMgPSB7fTtcbiAgdmFyIGhhc0JhY2tncm91bmQgPSBjc3NUZXh0Lmlu
ZGV4T2YoJ2JhY2tncm91bmQnKSA+PSAwO1xuICAvLyBtYXliZSB3aXRoIGJhY2tncm91bmQtaW1h
Z2U6IHVybChodHRwOi8veHh4KSBvciBiYXNlNjQgaW1nXG4gIHZhciBsaXN0RGVsaW1pdGVyID0g
aGFzQmFja2dyb3VuZCA/IC87KD8hW14oXSpcXCkpL2cgOiAnOyc7XG4gIHZhciBwcm9wZXJ0eURl
bGltaXRlciA9IGhhc0JhY2tncm91bmQgPyAvOiguKykvIDogJzonO1xuICBjc3NUZXh0LnNwbGl0
KGxpc3REZWxpbWl0ZXIpLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICBpZiAoaXRlbSkg
e1xuICAgICAgdmFyIHRtcCA9IGl0ZW0uc3BsaXQocHJvcGVydHlEZWxpbWl0ZXIpO1xuICAgICAg
dG1wLmxlbmd0aCA+IDEgJiYgKHJlc1t0bXBbMF0udHJpbSgpXSA9IHRtcFsxXS50cmltKCkpO1xu
ICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXNcbn0pO1xuXG4vLyBtZXJnZSBzdGF0aWMgYW5kIGR5
bmFtaWMgc3R5bGUgZGF0YSBvbiB0aGUgc2FtZSB2bm9kZVxuZnVuY3Rpb24gbm9ybWFsaXplU3R5
bGVEYXRhIChkYXRhKSB7XG4gIHZhciBzdHlsZSA9IG5vcm1hbGl6ZVN0eWxlQmluZGluZyhkYXRh
LnN0eWxlKTtcbiAgLy8gc3RhdGljIHN0eWxlIGlzIHByZS1wcm9jZXNzZWQgaW50byBhbiBvYmpl
Y3QgZHVyaW5nIGNvbXBpbGF0aW9uXG4gIC8vIGFuZCBpcyBhbHdheXMgYSBmcmVzaCBvYmplY3Qs
IHNvIGl0J3Mgc2FmZSB0byBtZXJnZSBpbnRvIGl0XG4gIHJldHVybiBkYXRhLnN0YXRpY1N0eWxl
XG4gICAgPyBleHRlbmQoZGF0YS5zdGF0aWNTdHlsZSwgc3R5bGUpXG4gICAgOiBzdHlsZVxufVxu
XG4vLyBub3JtYWxpemUgcG9zc2libGUgYXJyYXkgLyBzdHJpbmcgdmFsdWVzIGludG8gT2JqZWN0
XG5mdW5jdGlvbiBub3JtYWxpemVTdHlsZUJpbmRpbmcgKGJpbmRpbmdTdHlsZSkge1xuICBpZiAo
QXJyYXkuaXNBcnJheShiaW5kaW5nU3R5bGUpKSB7XG4gICAgcmV0dXJuIHRvT2JqZWN0KGJpbmRp
bmdTdHlsZSlcbiAgfVxuICBpZiAodHlwZW9mIGJpbmRpbmdTdHlsZSA9PT0gJ3N0cmluZycpIHtc
biAgICByZXR1cm4gcGFyc2VTdHlsZVRleHQoYmluZGluZ1N0eWxlKVxuICB9XG4gIHJldHVybiBi
aW5kaW5nU3R5bGVcbn1cblxuLyoqXG4gKiBwYXJlbnQgY29tcG9uZW50IHN0eWxlIHNob3VsZCBi
ZSBhZnRlciBjaGlsZCdzXG4gKiBzbyB0aGF0IHBhcmVudCBjb21wb25lbnQncyBzdHlsZSBjb3Vs
ZCBvdmVycmlkZSBpdFxuICovXG5mdW5jdGlvbiBnZXRTdHlsZSAodm5vZGUsIGNoZWNrQ2hpbGQp
IHtcbiAgdmFyIHJlcyA9IHt9O1xuICB2YXIgc3R5bGVEYXRhO1xuXG4gIGlmIChjaGVja0NoaWxk
KSB7XG4gICAgdmFyIGNoaWxkTm9kZSA9IHZub2RlO1xuICAgIHdoaWxlIChjaGlsZE5vZGUuY2hp
bGQpIHtcbiAgICAgIGNoaWxkTm9kZSA9IGNoaWxkTm9kZS5jaGlsZC5fdm5vZGU7XG4gICAgICBp
ZiAoY2hpbGROb2RlLmRhdGEgJiYgKHN0eWxlRGF0YSA9IG5vcm1hbGl6ZVN0eWxlRGF0YShjaGls
ZE5vZGUuZGF0YSkpKSB7XG4gICAgICAgIGV4dGVuZChyZXMsIHN0eWxlRGF0YSk7XG4gICAgICB9
XG4gICAgfVxuICB9XG5cbiAgaWYgKChzdHlsZURhdGEgPSBub3JtYWxpemVTdHlsZURhdGEodm5v
ZGUuZGF0YSkpKSB7XG4gICAgZXh0ZW5kKHJlcywgc3R5bGVEYXRhKTtcbiAgfVxuXG4gIHZhciBw
YXJlbnROb2RlID0gdm5vZGU7XG4gIHdoaWxlICgocGFyZW50Tm9kZSA9IHBhcmVudE5vZGUucGFy
ZW50KSkge1xuICAgIGlmIChwYXJlbnROb2RlLmRhdGEgJiYgKHN0eWxlRGF0YSA9IG5vcm1hbGl6
ZVN0eWxlRGF0YShwYXJlbnROb2RlLmRhdGEpKSkge1xuICAgICAgZXh0ZW5kKHJlcywgc3R5bGVE
YXRhKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG4vKiAgKi9cblxudmFyIGNzc1Zh
clJFID0gL14tLS87XG52YXIgc2V0UHJvcCA9IGZ1bmN0aW9uIChlbCwgbmFtZSwgdmFsKSB7XG4g
IC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoY3NzVmFyUkUudGVzdChuYW1lKSkge1xu
ICAgIGVsLnN0eWxlLnNldFByb3BlcnR5KG5hbWUsIHZhbCk7XG4gIH0gZWxzZSB7XG4gICAgZWwu
c3R5bGVbbm9ybWFsaXplKG5hbWUpXSA9IHZhbDtcbiAgfVxufTtcblxudmFyIHByZWZpeGVzID0g
WydXZWJraXQnLCAnTW96JywgJ21zJ107XG5cbnZhciB0ZXN0RWw7XG52YXIgbm9ybWFsaXplID0g
Y2FjaGVkKGZ1bmN0aW9uIChwcm9wKSB7XG4gIHRlc3RFbCA9IHRlc3RFbCB8fCBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgcHJvcCA9IGNhbWVsaXplKHByb3ApO1xuICBpZiAocHJv
cCAhPT0gJ2ZpbHRlcicgJiYgKHByb3AgaW4gdGVzdEVsLnN0eWxlKSkge1xuICAgIHJldHVybiBw
cm9wXG4gIH1cbiAgdmFyIHVwcGVyID0gcHJvcC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHBy
b3Auc2xpY2UoMSk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcHJlZml4ZXMubGVuZ3RoOyBpKysp
IHtcbiAgICB2YXIgcHJlZml4ZWQgPSBwcmVmaXhlc1tpXSArIHVwcGVyO1xuICAgIGlmIChwcmVm
aXhlZCBpbiB0ZXN0RWwuc3R5bGUpIHtcbiAgICAgIHJldHVybiBwcmVmaXhlZFxuICAgIH1cbiAg
fVxufSk7XG5cbmZ1bmN0aW9uIHVwZGF0ZVN0eWxlIChvbGRWbm9kZSwgdm5vZGUpIHtcbiAgdmFy
IGRhdGEgPSB2bm9kZS5kYXRhO1xuICB2YXIgb2xkRGF0YSA9IG9sZFZub2RlLmRhdGE7XG5cbiAg
aWYgKCFkYXRhLnN0YXRpY1N0eWxlICYmICFkYXRhLnN0eWxlICYmXG4gICAgICAhb2xkRGF0YS5z
dGF0aWNTdHlsZSAmJiAhb2xkRGF0YS5zdHlsZSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgdmFy
IGN1ciwgbmFtZTtcbiAgdmFyIGVsID0gdm5vZGUuZWxtO1xuICB2YXIgb2xkU3RhdGljU3R5bGUg
PSBvbGRWbm9kZS5kYXRhLnN0YXRpY1N0eWxlO1xuICB2YXIgb2xkU3R5bGVCaW5kaW5nID0gb2xk
Vm5vZGUuZGF0YS5zdHlsZSB8fCB7fTtcblxuICAvLyBpZiBzdGF0aWMgc3R5bGUgZXhpc3RzLCBz
dHlsZWJpbmRpbmcgYWxyZWFkeSBtZXJnZWQgaW50byBpdCB3aGVuIGRvaW5nIG5vcm1hbGl6ZVN0
eWxlRGF0YVxuICB2YXIgb2xkU3R5bGUgPSBvbGRTdGF0aWNTdHlsZSB8fCBvbGRTdHlsZUJpbmRp
bmc7XG5cbiAgdmFyIHN0eWxlID0gbm9ybWFsaXplU3R5bGVCaW5kaW5nKHZub2RlLmRhdGEuc3R5
bGUpIHx8IHt9O1xuXG4gIHZub2RlLmRhdGEuc3R5bGUgPSBzdHlsZS5fX29iX18gPyBleHRlbmQo
e30sIHN0eWxlKSA6IHN0eWxlO1xuXG4gIHZhciBuZXdTdHlsZSA9IGdldFN0eWxlKHZub2RlLCB0
cnVlKTtcblxuICBmb3IgKG5hbWUgaW4gb2xkU3R5bGUpIHtcbiAgICBpZiAobmV3U3R5bGVbbmFt
ZV0gPT0gbnVsbCkge1xuICAgICAgc2V0UHJvcChlbCwgbmFtZSwgJycpO1xuICAgIH1cbiAgfVxu
ICBmb3IgKG5hbWUgaW4gbmV3U3R5bGUpIHtcbiAgICBjdXIgPSBuZXdTdHlsZVtuYW1lXTtcbiAg
ICBpZiAoY3VyICE9PSBvbGRTdHlsZVtuYW1lXSkge1xuICAgICAgLy8gaWU5IHNldHRpbmcgdG8g
bnVsbCBoYXMgbm8gZWZmZWN0LCBtdXN0IHVzZSBlbXB0eSBzdHJpbmdcbiAgICAgIHNldFByb3Ao
ZWwsIG5hbWUsIGN1ciA9PSBudWxsID8gJycgOiBjdXIpO1xuICAgIH1cbiAgfVxufVxuXG52YXIg
c3R5bGUgPSB7XG4gIGNyZWF0ZTogdXBkYXRlU3R5bGUsXG4gIHVwZGF0ZTogdXBkYXRlU3R5bGVc
bn07XG5cbi8qICAqL1xuXG4vKipcbiAqIEFkZCBjbGFzcyB3aXRoIGNvbXBhdGliaWxpdHkgZm9y
IFNWRyBzaW5jZSBjbGFzc0xpc3QgaXMgbm90IHN1cHBvcnRlZCBvblxuICogU1ZHIGVsZW1lbnRz
IGluIElFXG4gKi9cbmZ1bmN0aW9uIGFkZENsYXNzIChlbCwgY2xzKSB7XG4gIC8qIGlzdGFuYnVs
IGlnbm9yZSBpZiAqL1xuICBpZiAoIWNscyB8fCAhY2xzLnRyaW0oKSkge1xuICAgIHJldHVyblxu
ICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgaWYgKGVsLmNsYXNzTGlzdCkg
e1xuICAgIGlmIChjbHMuaW5kZXhPZignICcpID4gLTEpIHtcbiAgICAgIGNscy5zcGxpdCgvXFxz
Ky8pLmZvckVhY2goZnVuY3Rpb24gKGMpIHsgcmV0dXJuIGVsLmNsYXNzTGlzdC5hZGQoYyk7IH0p
O1xuICAgIH0gZWxzZSB7XG4gICAgICBlbC5jbGFzc0xpc3QuYWRkKGNscyk7XG4gICAgfVxuICB9
IGVsc2Uge1xuICAgIHZhciBjdXIgPSAnICcgKyBlbC5nZXRBdHRyaWJ1dGUoJ2NsYXNzJykgKyAn
ICc7XG4gICAgaWYgKGN1ci5pbmRleE9mKCcgJyArIGNscyArICcgJykgPCAwKSB7XG4gICAgICBl
bC5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgKGN1ciArIGNscykudHJpbSgpKTtcbiAgICB9XG4gIH1c
bn1cblxuLyoqXG4gKiBSZW1vdmUgY2xhc3Mgd2l0aCBjb21wYXRpYmlsaXR5IGZvciBTVkcgc2lu
Y2UgY2xhc3NMaXN0IGlzIG5vdCBzdXBwb3J0ZWQgb25cbiAqIFNWRyBlbGVtZW50cyBpbiBJRVxu
ICovXG5mdW5jdGlvbiByZW1vdmVDbGFzcyAoZWwsIGNscykge1xuICAvKiBpc3RhbmJ1bCBpZ25v
cmUgaWYgKi9cbiAgaWYgKCFjbHMgfHwgIWNscy50cmltKCkpIHtcbiAgICByZXR1cm5cbiAgfVxu
XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gIGlmIChlbC5jbGFzc0xpc3QpIHtcbiAg
ICBpZiAoY2xzLmluZGV4T2YoJyAnKSA+IC0xKSB7XG4gICAgICBjbHMuc3BsaXQoL1xccysvKS5m
b3JFYWNoKGZ1bmN0aW9uIChjKSB7IHJldHVybiBlbC5jbGFzc0xpc3QucmVtb3ZlKGMpOyB9KTtc
biAgICB9IGVsc2Uge1xuICAgICAgZWwuY2xhc3NMaXN0LnJlbW92ZShjbHMpO1xuICAgIH1cbiAg
fSBlbHNlIHtcbiAgICB2YXIgY3VyID0gJyAnICsgZWwuZ2V0QXR0cmlidXRlKCdjbGFzcycpICsg
JyAnO1xuICAgIHZhciB0YXIgPSAnICcgKyBjbHMgKyAnICc7XG4gICAgd2hpbGUgKGN1ci5pbmRl
eE9mKHRhcikgPj0gMCkge1xuICAgICAgY3VyID0gY3VyLnJlcGxhY2UodGFyLCAnICcpO1xuICAg
IH1cbiAgICBlbC5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgY3VyLnRyaW0oKSk7XG4gIH1cbn1cblxu
LyogICovXG5cbnZhciBoYXNUcmFuc2l0aW9uID0gaW5Ccm93c2VyICYmICFpc0lFOTtcbnZhciBU
UkFOU0lUSU9OID0gJ3RyYW5zaXRpb24nO1xudmFyIEFOSU1BVElPTiA9ICdhbmltYXRpb24nO1xu
XG4vLyBUcmFuc2l0aW9uIHByb3BlcnR5L2V2ZW50IHNuaWZmaW5nXG52YXIgdHJhbnNpdGlvblBy
b3AgPSAndHJhbnNpdGlvbic7XG52YXIgdHJhbnNpdGlvbkVuZEV2ZW50ID0gJ3RyYW5zaXRpb25l
bmQnO1xudmFyIGFuaW1hdGlvblByb3AgPSAnYW5pbWF0aW9uJztcbnZhciBhbmltYXRpb25FbmRF
dmVudCA9ICdhbmltYXRpb25lbmQnO1xuaWYgKGhhc1RyYW5zaXRpb24pIHtcbiAgLyogaXN0YW5i
dWwgaWdub3JlIGlmICovXG4gIGlmICh3aW5kb3cub250cmFuc2l0aW9uZW5kID09PSB1bmRlZmlu
ZWQgJiZcbiAgICB3aW5kb3cub253ZWJraXR0cmFuc2l0aW9uZW5kICE9PSB1bmRlZmluZWQpIHtc
biAgICB0cmFuc2l0aW9uUHJvcCA9ICdXZWJraXRUcmFuc2l0aW9uJztcbiAgICB0cmFuc2l0aW9u
RW5kRXZlbnQgPSAnd2Via2l0VHJhbnNpdGlvbkVuZCc7XG4gIH1cbiAgaWYgKHdpbmRvdy5vbmFu
aW1hdGlvbmVuZCA9PT0gdW5kZWZpbmVkICYmXG4gICAgd2luZG93Lm9ud2Via2l0YW5pbWF0aW9u
ZW5kICE9PSB1bmRlZmluZWQpIHtcbiAgICBhbmltYXRpb25Qcm9wID0gJ1dlYmtpdEFuaW1hdGlv
bic7XG4gICAgYW5pbWF0aW9uRW5kRXZlbnQgPSAnd2Via2l0QW5pbWF0aW9uRW5kJztcbiAgfVxu
fVxuXG52YXIgcmFmID0gKGluQnJvd3NlciAmJiB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1l
KSB8fCBzZXRUaW1lb3V0O1xuZnVuY3Rpb24gbmV4dEZyYW1lIChmbikge1xuICByYWYoZnVuY3Rp
b24gKCkge1xuICAgIHJhZihmbik7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBhZGRUcmFuc2l0aW9u
Q2xhc3MgKGVsLCBjbHMpIHtcbiAgKGVsLl90cmFuc2l0aW9uQ2xhc3NlcyB8fCAoZWwuX3RyYW5z
aXRpb25DbGFzc2VzID0gW10pKS5wdXNoKGNscyk7XG4gIGFkZENsYXNzKGVsLCBjbHMpO1xufVxu
XG5mdW5jdGlvbiByZW1vdmVUcmFuc2l0aW9uQ2xhc3MgKGVsLCBjbHMpIHtcbiAgaWYgKGVsLl90
cmFuc2l0aW9uQ2xhc3Nlcykge1xuICAgIHJlbW92ZSQxKGVsLl90cmFuc2l0aW9uQ2xhc3Nlcywg
Y2xzKTtcbiAgfVxuICByZW1vdmVDbGFzcyhlbCwgY2xzKTtcbn1cblxuZnVuY3Rpb24gd2hlblRy
YW5zaXRpb25FbmRzIChcbiAgZWwsXG4gIGV4cGVjdGVkVHlwZSxcbiAgY2Jcbikge1xuICB2YXIg
cmVmID0gZ2V0VHJhbnNpdGlvbkluZm8oZWwsIGV4cGVjdGVkVHlwZSk7XG4gIHZhciB0eXBlID0g
cmVmLnR5cGU7XG4gIHZhciB0aW1lb3V0ID0gcmVmLnRpbWVvdXQ7XG4gIHZhciBwcm9wQ291bnQg
PSByZWYucHJvcENvdW50O1xuICBpZiAoIXR5cGUpIHsgcmV0dXJuIGNiKCkgfVxuICB2YXIgZXZl
bnQgPSB0eXBlID09PSBUUkFOU0lUSU9OID8gdHJhbnNpdGlvbkVuZEV2ZW50IDogYW5pbWF0aW9u
RW5kRXZlbnQ7XG4gIHZhciBlbmRlZCA9IDA7XG4gIHZhciBlbmQgPSBmdW5jdGlvbiAoKSB7XG4g
ICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudCwgb25FbmQpO1xuICAgIGNiKCk7XG4gIH07
XG4gIHZhciBvbkVuZCA9IGZ1bmN0aW9uIChlKSB7XG4gICAgaWYgKGUudGFyZ2V0ID09PSBlbCkg
e1xuICAgICAgaWYgKCsrZW5kZWQgPj0gcHJvcENvdW50KSB7XG4gICAgICAgIGVuZCgpO1xuICAg
ICAgfVxuICAgIH1cbiAgfTtcbiAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgaWYgKGVu
ZGVkIDwgcHJvcENvdW50KSB7XG4gICAgICBlbmQoKTtcbiAgICB9XG4gIH0sIHRpbWVvdXQgKyAx
KTtcbiAgZWwuYWRkRXZlbnRMaXN0ZW5lcihldmVudCwgb25FbmQpO1xufVxuXG52YXIgdHJhbnNm
b3JtUkUgPSAvXFxiKHRyYW5zZm9ybXxhbGwpKCx8JCkvO1xuXG5mdW5jdGlvbiBnZXRUcmFuc2l0
aW9uSW5mbyAoZWwsIGV4cGVjdGVkVHlwZSkge1xuICB2YXIgc3R5bGVzID0gd2luZG93LmdldENv
bXB1dGVkU3R5bGUoZWwpO1xuICB2YXIgdHJhbnNpdGlvbmVEZWxheXMgPSBzdHlsZXNbdHJhbnNp
dGlvblByb3AgKyAnRGVsYXknXS5zcGxpdCgnLCAnKTtcbiAgdmFyIHRyYW5zaXRpb25EdXJhdGlv
bnMgPSBzdHlsZXNbdHJhbnNpdGlvblByb3AgKyAnRHVyYXRpb24nXS5zcGxpdCgnLCAnKTtcbiAg
dmFyIHRyYW5zaXRpb25UaW1lb3V0ID0gZ2V0VGltZW91dCh0cmFuc2l0aW9uZURlbGF5cywgdHJh
bnNpdGlvbkR1cmF0aW9ucyk7XG4gIHZhciBhbmltYXRpb25EZWxheXMgPSBzdHlsZXNbYW5pbWF0
aW9uUHJvcCArICdEZWxheSddLnNwbGl0KCcsICcpO1xuICB2YXIgYW5pbWF0aW9uRHVyYXRpb25z
ID0gc3R5bGVzW2FuaW1hdGlvblByb3AgKyAnRHVyYXRpb24nXS5zcGxpdCgnLCAnKTtcbiAgdmFy
IGFuaW1hdGlvblRpbWVvdXQgPSBnZXRUaW1lb3V0KGFuaW1hdGlvbkRlbGF5cywgYW5pbWF0aW9u
RHVyYXRpb25zKTtcblxuICB2YXIgdHlwZTtcbiAgdmFyIHRpbWVvdXQgPSAwO1xuICB2YXIgcHJv
cENvdW50ID0gMDtcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChleHBlY3RlZFR5
cGUgPT09IFRSQU5TSVRJT04pIHtcbiAgICBpZiAodHJhbnNpdGlvblRpbWVvdXQgPiAwKSB7XG4g
ICAgICB0eXBlID0gVFJBTlNJVElPTjtcbiAgICAgIHRpbWVvdXQgPSB0cmFuc2l0aW9uVGltZW91
dDtcbiAgICAgIHByb3BDb3VudCA9IHRyYW5zaXRpb25EdXJhdGlvbnMubGVuZ3RoO1xuICAgIH1c
biAgfSBlbHNlIGlmIChleHBlY3RlZFR5cGUgPT09IEFOSU1BVElPTikge1xuICAgIGlmIChhbmlt
YXRpb25UaW1lb3V0ID4gMCkge1xuICAgICAgdHlwZSA9IEFOSU1BVElPTjtcbiAgICAgIHRpbWVv
dXQgPSBhbmltYXRpb25UaW1lb3V0O1xuICAgICAgcHJvcENvdW50ID0gYW5pbWF0aW9uRHVyYXRp
b25zLmxlbmd0aDtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdGltZW91dCA9IE1hdGgubWF4KHRy
YW5zaXRpb25UaW1lb3V0LCBhbmltYXRpb25UaW1lb3V0KTtcbiAgICB0eXBlID0gdGltZW91dCA+
IDBcbiAgICAgID8gdHJhbnNpdGlvblRpbWVvdXQgPiBhbmltYXRpb25UaW1lb3V0XG4gICAgICAg
ID8gVFJBTlNJVElPTlxuICAgICAgICA6IEFOSU1BVElPTlxuICAgICAgOiBudWxsO1xuICAgIHBy
b3BDb3VudCA9IHR5cGVcbiAgICAgID8gdHlwZSA9PT0gVFJBTlNJVElPTlxuICAgICAgICA/IHRy
YW5zaXRpb25EdXJhdGlvbnMubGVuZ3RoXG4gICAgICAgIDogYW5pbWF0aW9uRHVyYXRpb25zLmxl
bmd0aFxuICAgICAgOiAwO1xuICB9XG4gIHZhciBoYXNUcmFuc2Zvcm0gPVxuICAgIHR5cGUgPT09
IFRSQU5TSVRJT04gJiZcbiAgICB0cmFuc2Zvcm1SRS50ZXN0KHN0eWxlc1t0cmFuc2l0aW9uUHJv
cCArICdQcm9wZXJ0eSddKTtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiB0eXBlLFxuICAgIHRpbWVv
dXQ6IHRpbWVvdXQsXG4gICAgcHJvcENvdW50OiBwcm9wQ291bnQsXG4gICAgaGFzVHJhbnNmb3Jt
OiBoYXNUcmFuc2Zvcm1cbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRUaW1lb3V0IChkZWxheXMsIGR1
cmF0aW9ucykge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICB3aGlsZSAoZGVsYXlz
Lmxlbmd0aCA8IGR1cmF0aW9ucy5sZW5ndGgpIHtcbiAgICBkZWxheXMgPSBkZWxheXMuY29uY2F0
KGRlbGF5cyk7XG4gIH1cblxuICByZXR1cm4gTWF0aC5tYXguYXBwbHkobnVsbCwgZHVyYXRpb25z
Lm1hcChmdW5jdGlvbiAoZCwgaSkge1xuICAgIHJldHVybiB0b01zKGQpICsgdG9NcyhkZWxheXNb
aV0pXG4gIH0pKVxufVxuXG5mdW5jdGlvbiB0b01zIChzKSB7XG4gIHJldHVybiBOdW1iZXIocy5z
bGljZSgwLCAtMSkpICogMTAwMFxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gZW50ZXIgKHZub2Rl
KSB7XG4gIHZhciBlbCA9IHZub2RlLmVsbTtcblxuICAvLyBjYWxsIGxlYXZlIGNhbGxiYWNrIG5v
d1xuICBpZiAoZWwuX2xlYXZlQ2IpIHtcbiAgICBlbC5fbGVhdmVDYi5jYW5jZWxsZWQgPSB0cnVl
O1xuICAgIGVsLl9sZWF2ZUNiKCk7XG4gIH1cblxuICB2YXIgZGF0YSA9IHJlc29sdmVUcmFuc2l0
aW9uKHZub2RlLmRhdGEudHJhbnNpdGlvbik7XG4gIGlmICghZGF0YSkge1xuICAgIHJldHVyblxu
ICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChlbC5fZW50ZXJDYiB8fCBl
bC5ub2RlVHlwZSAhPT0gMSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgdmFyIGNzcyA9IGRhdGEu
Y3NzO1xuICB2YXIgdHlwZSA9IGRhdGEudHlwZTtcbiAgdmFyIGVudGVyQ2xhc3MgPSBkYXRhLmVu
dGVyQ2xhc3M7XG4gIHZhciBlbnRlckFjdGl2ZUNsYXNzID0gZGF0YS5lbnRlckFjdGl2ZUNsYXNz
O1xuICB2YXIgYXBwZWFyQ2xhc3MgPSBkYXRhLmFwcGVhckNsYXNzO1xuICB2YXIgYXBwZWFyQWN0
aXZlQ2xhc3MgPSBkYXRhLmFwcGVhckFjdGl2ZUNsYXNzO1xuICB2YXIgYmVmb3JlRW50ZXIgPSBk
YXRhLmJlZm9yZUVudGVyO1xuICB2YXIgZW50ZXIgPSBkYXRhLmVudGVyO1xuICB2YXIgYWZ0ZXJF
bnRlciA9IGRhdGEuYWZ0ZXJFbnRlcjtcbiAgdmFyIGVudGVyQ2FuY2VsbGVkID0gZGF0YS5lbnRl
ckNhbmNlbGxlZDtcbiAgdmFyIGJlZm9yZUFwcGVhciA9IGRhdGEuYmVmb3JlQXBwZWFyO1xuICB2
YXIgYXBwZWFyID0gZGF0YS5hcHBlYXI7XG4gIHZhciBhZnRlckFwcGVhciA9IGRhdGEuYWZ0ZXJB
cHBlYXI7XG4gIHZhciBhcHBlYXJDYW5jZWxsZWQgPSBkYXRhLmFwcGVhckNhbmNlbGxlZDtcblxu
ICAvLyBhY3RpdmVJbnN0YW5jZSB3aWxsIGFsd2F5cyBiZSB0aGUgPHRyYW5zaXRpb24+IGNvbXBv
bmVudCBtYW5hZ2luZyB0aGlzXG4gIC8vIHRyYW5zaXRpb24uIE9uZSBlZGdlIGNhc2UgdG8gY2hl
Y2sgaXMgd2hlbiB0aGUgPHRyYW5zaXRpb24+IGlzIHBsYWNlZFxuICAvLyBhcyB0aGUgcm9vdCBu
b2RlIG9mIGEgY2hpbGQgY29tcG9uZW50LiBJbiB0aGF0IGNhc2Ugd2UgbmVlZCB0byBjaGVja1xu
ICAvLyA8dHJhbnNpdGlvbj4ncyBwYXJlbnQgZm9yIGFwcGVhciBjaGVjay5cbiAgdmFyIHRyYW5z
aXRpb25Ob2RlID0gYWN0aXZlSW5zdGFuY2UuJHZub2RlO1xuICB2YXIgY29udGV4dCA9IHRyYW5z
aXRpb25Ob2RlICYmIHRyYW5zaXRpb25Ob2RlLnBhcmVudFxuICAgID8gdHJhbnNpdGlvbk5vZGUu
cGFyZW50LmNvbnRleHRcbiAgICA6IGFjdGl2ZUluc3RhbmNlO1xuXG4gIHZhciBpc0FwcGVhciA9
ICFjb250ZXh0Ll9pc01vdW50ZWQgfHwgIXZub2RlLmlzUm9vdEluc2VydDtcblxuICBpZiAoaXNB
cHBlYXIgJiYgIWFwcGVhciAmJiBhcHBlYXIgIT09ICcnKSB7XG4gICAgcmV0dXJuXG4gIH1cblxu
ICB2YXIgc3RhcnRDbGFzcyA9IGlzQXBwZWFyID8gYXBwZWFyQ2xhc3MgOiBlbnRlckNsYXNzO1xu
ICB2YXIgYWN0aXZlQ2xhc3MgPSBpc0FwcGVhciA/IGFwcGVhckFjdGl2ZUNsYXNzIDogZW50ZXJB
Y3RpdmVDbGFzcztcbiAgdmFyIGJlZm9yZUVudGVySG9vayA9IGlzQXBwZWFyID8gKGJlZm9yZUFw
cGVhciB8fCBiZWZvcmVFbnRlcikgOiBiZWZvcmVFbnRlcjtcbiAgdmFyIGVudGVySG9vayA9IGlz
QXBwZWFyID8gKHR5cGVvZiBhcHBlYXIgPT09ICdmdW5jdGlvbicgPyBhcHBlYXIgOiBlbnRlcikg
OiBlbnRlcjtcbiAgdmFyIGFmdGVyRW50ZXJIb29rID0gaXNBcHBlYXIgPyAoYWZ0ZXJBcHBlYXIg
fHwgYWZ0ZXJFbnRlcikgOiBhZnRlckVudGVyO1xuICB2YXIgZW50ZXJDYW5jZWxsZWRIb29rID0g
aXNBcHBlYXIgPyAoYXBwZWFyQ2FuY2VsbGVkIHx8IGVudGVyQ2FuY2VsbGVkKSA6IGVudGVyQ2Fu
Y2VsbGVkO1xuXG4gIHZhciBleHBlY3RzQ1NTID0gY3NzICE9PSBmYWxzZSAmJiAhaXNJRTk7XG4g
IHZhciB1c2VyV2FudHNDb250cm9sID1cbiAgICBlbnRlckhvb2sgJiZcbiAgICAvLyBlbnRlckhv
b2sgbWF5IGJlIGEgYm91bmQgbWV0aG9kIHdoaWNoIGV4cG9zZXNcbiAgICAvLyB0aGUgbGVuZ3Ro
IG9mIG9yaWdpbmFsIGZuIGFzIF9sZW5ndGhcbiAgICAoZW50ZXJIb29rLl9sZW5ndGggfHwgZW50
ZXJIb29rLmxlbmd0aCkgPiAxO1xuXG4gIHZhciBjYiA9IGVsLl9lbnRlckNiID0gb25jZShmdW5j
dGlvbiAoKSB7XG4gICAgaWYgKGV4cGVjdHNDU1MpIHtcbiAgICAgIHJlbW92ZVRyYW5zaXRpb25D
bGFzcyhlbCwgYWN0aXZlQ2xhc3MpO1xuICAgIH1cbiAgICBpZiAoY2IuY2FuY2VsbGVkKSB7XG4g
ICAgICBpZiAoZXhwZWN0c0NTUykge1xuICAgICAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWws
IHN0YXJ0Q2xhc3MpO1xuICAgICAgfVxuICAgICAgZW50ZXJDYW5jZWxsZWRIb29rICYmIGVudGVy
Q2FuY2VsbGVkSG9vayhlbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFmdGVyRW50ZXJIb29rICYm
IGFmdGVyRW50ZXJIb29rKGVsKTtcbiAgICB9XG4gICAgZWwuX2VudGVyQ2IgPSBudWxsO1xuICB9
KTtcblxuICBpZiAoIXZub2RlLmRhdGEuc2hvdykge1xuICAgIC8vIHJlbW92ZSBwZW5kaW5nIGxl
YXZlIGVsZW1lbnQgb24gZW50ZXIgYnkgaW5qZWN0aW5nIGFuIGluc2VydCBob29rXG4gICAgbWVy
Z2VWTm9kZUhvb2sodm5vZGUuZGF0YS5ob29rIHx8ICh2bm9kZS5kYXRhLmhvb2sgPSB7fSksICdp
bnNlcnQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgcGFyZW50ID0gZWwucGFyZW50Tm9kZTtc
biAgICAgIHZhciBwZW5kaW5nTm9kZSA9IHBhcmVudCAmJiBwYXJlbnQuX3BlbmRpbmcgJiYgcGFy
ZW50Ll9wZW5kaW5nW3Zub2RlLmtleV07XG4gICAgICBpZiAocGVuZGluZ05vZGUgJiYgcGVuZGlu
Z05vZGUudGFnID09PSB2bm9kZS50YWcgJiYgcGVuZGluZ05vZGUuZWxtLl9sZWF2ZUNiKSB7XG4g
ICAgICAgIHBlbmRpbmdOb2RlLmVsbS5fbGVhdmVDYigpO1xuICAgICAgfVxuICAgICAgZW50ZXJI
b29rICYmIGVudGVySG9vayhlbCwgY2IpO1xuICAgIH0sICd0cmFuc2l0aW9uLWluc2VydCcpO1xu
ICB9XG5cbiAgLy8gc3RhcnQgZW50ZXIgdHJhbnNpdGlvblxuICBiZWZvcmVFbnRlckhvb2sgJiYg
YmVmb3JlRW50ZXJIb29rKGVsKTtcbiAgaWYgKGV4cGVjdHNDU1MpIHtcbiAgICBhZGRUcmFuc2l0
aW9uQ2xhc3MoZWwsIHN0YXJ0Q2xhc3MpO1xuICAgIGFkZFRyYW5zaXRpb25DbGFzcyhlbCwgYWN0
aXZlQ2xhc3MpO1xuICAgIG5leHRGcmFtZShmdW5jdGlvbiAoKSB7XG4gICAgICByZW1vdmVUcmFu
c2l0aW9uQ2xhc3MoZWwsIHN0YXJ0Q2xhc3MpO1xuICAgICAgaWYgKCFjYi5jYW5jZWxsZWQgJiYg
IXVzZXJXYW50c0NvbnRyb2wpIHtcbiAgICAgICAgd2hlblRyYW5zaXRpb25FbmRzKGVsLCB0eXBl
LCBjYik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAodm5vZGUuZGF0YS5zaG93KSB7
XG4gICAgZW50ZXJIb29rICYmIGVudGVySG9vayhlbCwgY2IpO1xuICB9XG5cbiAgaWYgKCFleHBl
Y3RzQ1NTICYmICF1c2VyV2FudHNDb250cm9sKSB7XG4gICAgY2IoKTtcbiAgfVxufVxuXG5mdW5j
dGlvbiBsZWF2ZSAodm5vZGUsIHJtKSB7XG4gIHZhciBlbCA9IHZub2RlLmVsbTtcblxuICAvLyBj
YWxsIGVudGVyIGNhbGxiYWNrIG5vd1xuICBpZiAoZWwuX2VudGVyQ2IpIHtcbiAgICBlbC5fZW50
ZXJDYi5jYW5jZWxsZWQgPSB0cnVlO1xuICAgIGVsLl9lbnRlckNiKCk7XG4gIH1cblxuICB2YXIg
ZGF0YSA9IHJlc29sdmVUcmFuc2l0aW9uKHZub2RlLmRhdGEudHJhbnNpdGlvbik7XG4gIGlmICgh
ZGF0YSkge1xuICAgIHJldHVybiBybSgpXG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYg
Ki9cbiAgaWYgKGVsLl9sZWF2ZUNiIHx8IGVsLm5vZGVUeXBlICE9PSAxKSB7XG4gICAgcmV0dXJu
XG4gIH1cblxuICB2YXIgY3NzID0gZGF0YS5jc3M7XG4gIHZhciB0eXBlID0gZGF0YS50eXBlO1xu
ICB2YXIgbGVhdmVDbGFzcyA9IGRhdGEubGVhdmVDbGFzcztcbiAgdmFyIGxlYXZlQWN0aXZlQ2xh
c3MgPSBkYXRhLmxlYXZlQWN0aXZlQ2xhc3M7XG4gIHZhciBiZWZvcmVMZWF2ZSA9IGRhdGEuYmVm
b3JlTGVhdmU7XG4gIHZhciBsZWF2ZSA9IGRhdGEubGVhdmU7XG4gIHZhciBhZnRlckxlYXZlID0g
ZGF0YS5hZnRlckxlYXZlO1xuICB2YXIgbGVhdmVDYW5jZWxsZWQgPSBkYXRhLmxlYXZlQ2FuY2Vs
bGVkO1xuICB2YXIgZGVsYXlMZWF2ZSA9IGRhdGEuZGVsYXlMZWF2ZTtcblxuICB2YXIgZXhwZWN0
c0NTUyA9IGNzcyAhPT0gZmFsc2UgJiYgIWlzSUU5O1xuICB2YXIgdXNlcldhbnRzQ29udHJvbCA9
XG4gICAgbGVhdmUgJiZcbiAgICAvLyBsZWF2ZSBob29rIG1heSBiZSBhIGJvdW5kIG1ldGhvZCB3
aGljaCBleHBvc2VzXG4gICAgLy8gdGhlIGxlbmd0aCBvZiBvcmlnaW5hbCBmbiBhcyBfbGVuZ3Ro
XG4gICAgKGxlYXZlLl9sZW5ndGggfHwgbGVhdmUubGVuZ3RoKSA+IDE7XG5cbiAgdmFyIGNiID0g
ZWwuX2xlYXZlQ2IgPSBvbmNlKGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoZWwucGFyZW50Tm9kZSAm
JiBlbC5wYXJlbnROb2RlLl9wZW5kaW5nKSB7XG4gICAgICBlbC5wYXJlbnROb2RlLl9wZW5kaW5n
W3Zub2RlLmtleV0gPSBudWxsO1xuICAgIH1cbiAgICBpZiAoZXhwZWN0c0NTUykge1xuICAgICAg
cmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGVsLCBsZWF2ZUFjdGl2ZUNsYXNzKTtcbiAgICB9XG4gICAg
aWYgKGNiLmNhbmNlbGxlZCkge1xuICAgICAgaWYgKGV4cGVjdHNDU1MpIHtcbiAgICAgICAgcmVt
b3ZlVHJhbnNpdGlvbkNsYXNzKGVsLCBsZWF2ZUNsYXNzKTtcbiAgICAgIH1cbiAgICAgIGxlYXZl
Q2FuY2VsbGVkICYmIGxlYXZlQ2FuY2VsbGVkKGVsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcm0o
KTtcbiAgICAgIGFmdGVyTGVhdmUgJiYgYWZ0ZXJMZWF2ZShlbCk7XG4gICAgfVxuICAgIGVsLl9s
ZWF2ZUNiID0gbnVsbDtcbiAgfSk7XG5cbiAgaWYgKGRlbGF5TGVhdmUpIHtcbiAgICBkZWxheUxl
YXZlKHBlcmZvcm1MZWF2ZSk7XG4gIH0gZWxzZSB7XG4gICAgcGVyZm9ybUxlYXZlKCk7XG4gIH1c
blxuICBmdW5jdGlvbiBwZXJmb3JtTGVhdmUgKCkge1xuICAgIC8vIHRoZSBkZWxheWVkIGxlYXZl
IG1heSBoYXZlIGFscmVhZHkgYmVlbiBjYW5jZWxsZWRcbiAgICBpZiAoY2IuY2FuY2VsbGVkKSB7
XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgLy8gcmVjb3JkIGxlYXZpbmcgZWxlbWVudFxuICAg
IGlmICghdm5vZGUuZGF0YS5zaG93KSB7XG4gICAgICAoZWwucGFyZW50Tm9kZS5fcGVuZGluZyB8
fCAoZWwucGFyZW50Tm9kZS5fcGVuZGluZyA9IHt9KSlbdm5vZGUua2V5XSA9IHZub2RlO1xuICAg
IH1cbiAgICBiZWZvcmVMZWF2ZSAmJiBiZWZvcmVMZWF2ZShlbCk7XG4gICAgaWYgKGV4cGVjdHND
U1MpIHtcbiAgICAgIGFkZFRyYW5zaXRpb25DbGFzcyhlbCwgbGVhdmVDbGFzcyk7XG4gICAgICBh
ZGRUcmFuc2l0aW9uQ2xhc3MoZWwsIGxlYXZlQWN0aXZlQ2xhc3MpO1xuICAgICAgbmV4dEZyYW1l
KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGVsLCBsZWF2ZUNs
YXNzKTtcbiAgICAgICAgaWYgKCFjYi5jYW5jZWxsZWQgJiYgIXVzZXJXYW50c0NvbnRyb2wpIHtc
biAgICAgICAgICB3aGVuVHJhbnNpdGlvbkVuZHMoZWwsIHR5cGUsIGNiKTtcbiAgICAgICAgfVxu
ICAgICAgfSk7XG4gICAgfVxuICAgIGxlYXZlICYmIGxlYXZlKGVsLCBjYik7XG4gICAgaWYgKCFl
eHBlY3RzQ1NTICYmICF1c2VyV2FudHNDb250cm9sKSB7XG4gICAgICBjYigpO1xuICAgIH1cbiAg
fVxufVxuXG5mdW5jdGlvbiByZXNvbHZlVHJhbnNpdGlvbiAoZGVmJCQxKSB7XG4gIGlmICghZGVm
JCQxKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAg
aWYgKHR5cGVvZiBkZWYkJDEgPT09ICdvYmplY3QnKSB7XG4gICAgdmFyIHJlcyA9IHt9O1xuICAg
IGlmIChkZWYkJDEuY3NzICE9PSBmYWxzZSkge1xuICAgICAgZXh0ZW5kKHJlcywgYXV0b0Nzc1Ry
YW5zaXRpb24oZGVmJCQxLm5hbWUgfHwgJ3YnKSk7XG4gICAgfVxuICAgIGV4dGVuZChyZXMsIGRl
ZiQkMSk7XG4gICAgcmV0dXJuIHJlc1xuICB9IGVsc2UgaWYgKHR5cGVvZiBkZWYkJDEgPT09ICdz
dHJpbmcnKSB7XG4gICAgcmV0dXJuIGF1dG9Dc3NUcmFuc2l0aW9uKGRlZiQkMSlcbiAgfVxufVxu
XG52YXIgYXV0b0Nzc1RyYW5zaXRpb24gPSBjYWNoZWQoZnVuY3Rpb24gKG5hbWUpIHtcbiAgcmV0
dXJuIHtcbiAgICBlbnRlckNsYXNzOiAobmFtZSArIFwiLWVudGVyXCIpLFxuICAgIGxlYXZlQ2xh
c3M6IChuYW1lICsgXCItbGVhdmVcIiksXG4gICAgYXBwZWFyQ2xhc3M6IChuYW1lICsgXCItZW50
ZXJcIiksXG4gICAgZW50ZXJBY3RpdmVDbGFzczogKG5hbWUgKyBcIi1lbnRlci1hY3RpdmVcIiks
XG4gICAgbGVhdmVBY3RpdmVDbGFzczogKG5hbWUgKyBcIi1sZWF2ZS1hY3RpdmVcIiksXG4gICAg
YXBwZWFyQWN0aXZlQ2xhc3M6IChuYW1lICsgXCItZW50ZXItYWN0aXZlXCIpXG4gIH1cbn0pO1xu
XG5mdW5jdGlvbiBvbmNlIChmbikge1xuICB2YXIgY2FsbGVkID0gZmFsc2U7XG4gIHJldHVybiBm
dW5jdGlvbiAoKSB7XG4gICAgaWYgKCFjYWxsZWQpIHtcbiAgICAgIGNhbGxlZCA9IHRydWU7XG4g
ICAgICBmbigpO1xuICAgIH1cbiAgfVxufVxuXG52YXIgdHJhbnNpdGlvbiA9IGluQnJvd3NlciA/
IHtcbiAgY3JlYXRlOiBmdW5jdGlvbiBjcmVhdGUgKF8sIHZub2RlKSB7XG4gICAgaWYgKCF2bm9k
ZS5kYXRhLnNob3cpIHtcbiAgICAgIGVudGVyKHZub2RlKTtcbiAgICB9XG4gIH0sXG4gIHJlbW92
ZTogZnVuY3Rpb24gcmVtb3ZlICh2bm9kZSwgcm0pIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUg
ZWxzZSAqL1xuICAgIGlmICghdm5vZGUuZGF0YS5zaG93KSB7XG4gICAgICBsZWF2ZSh2bm9kZSwg
cm0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBybSgpO1xuICAgIH1cbiAgfVxufSA6IHt9O1xuXG52
YXIgcGxhdGZvcm1Nb2R1bGVzID0gW1xuICBhdHRycyxcbiAga2xhc3MsXG4gIGV2ZW50cyxcbiAg
ZG9tUHJvcHMsXG4gIHN0eWxlLFxuICB0cmFuc2l0aW9uXG5dO1xuXG4vKiAgKi9cblxuLy8gdGhl
IGRpcmVjdGl2ZSBtb2R1bGUgc2hvdWxkIGJlIGFwcGxpZWQgbGFzdCwgYWZ0ZXIgYWxsXG4vLyBi
dWlsdC1pbiBtb2R1bGVzIGhhdmUgYmVlbiBhcHBsaWVkLlxudmFyIG1vZHVsZXMgPSBwbGF0Zm9y
bU1vZHVsZXMuY29uY2F0KGJhc2VNb2R1bGVzKTtcblxudmFyIHBhdGNoJDEgPSBjcmVhdGVQYXRj
aEZ1bmN0aW9uKHsgbm9kZU9wczogbm9kZU9wcywgbW9kdWxlczogbW9kdWxlcyB9KTtcblxuLyoq
XG4gKiBOb3QgdHlwZSBjaGVja2luZyB0aGlzIGZpbGUgYmVjYXVzZSBmbG93IGRvZXNuJ3QgbGlr
ZSBhdHRhY2hpbmdcbiAqIHByb3BlcnRpZXMgdG8gRWxlbWVudHMuXG4gKi9cblxudmFyIG1vZGVs
YWJsZVRhZ1JFID0gL15pbnB1dHxzZWxlY3R8dGV4dGFyZWF8dnVlLWNvbXBvbmVudC1bMC05XSso
LVswLTlhLXpBLVpfLV0qKT8kLztcblxuLyogaXN0YW5idWwgaWdub3JlIGlmICovXG5pZiAoaXNJ
RTkpIHtcbiAgLy8gaHR0cDovL3d3dy5tYXR0czQxMS5jb20vcG9zdC9pbnRlcm5ldC1leHBsb3Jl
ci05LW9uaW5wdXQvXG4gIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3NlbGVjdGlvbmNoYW5n
ZScsIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZWwgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xu
ICAgIGlmIChlbCAmJiBlbC52bW9kZWwpIHtcbiAgICAgIHRyaWdnZXIoZWwsICdpbnB1dCcpO1xu
ICAgIH1cbiAgfSk7XG59XG5cbnZhciBtb2RlbCA9IHtcbiAgaW5zZXJ0ZWQ6IGZ1bmN0aW9uIGlu
c2VydGVkIChlbCwgYmluZGluZywgdm5vZGUpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKCFtb2RlbGFibGVUYWdSRS50ZXN0KHZu
b2RlLnRhZykpIHtcbiAgICAgICAgd2FybihcbiAgICAgICAgICBcInYtbW9kZWwgaXMgbm90IHN1
cHBvcnRlZCBvbiBlbGVtZW50IHR5cGU6IDxcIiArICh2bm9kZS50YWcpICsgXCI+LiBcIiArXG4g
ICAgICAgICAgJ0lmIHlvdSBhcmUgd29ya2luZyB3aXRoIGNvbnRlbnRlZGl0YWJsZSwgaXRcXCdz
IHJlY29tbWVuZGVkIHRvICcgK1xuICAgICAgICAgICd3cmFwIGEgbGlicmFyeSBkZWRpY2F0ZWQg
Zm9yIHRoYXQgcHVycG9zZSBpbnNpZGUgYSBjdXN0b20gY29tcG9uZW50LicsXG4gICAgICAgICAg
dm5vZGUuY29udGV4dFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodm5vZGUu
dGFnID09PSAnc2VsZWN0Jykge1xuICAgICAgdmFyIGNiID0gZnVuY3Rpb24gKCkge1xuICAgICAg
ICBzZXRTZWxlY3RlZChlbCwgYmluZGluZywgdm5vZGUuY29udGV4dCk7XG4gICAgICB9O1xuICAg
ICAgY2IoKTtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgaWYgKGlzSUUg
fHwgaXNFZGdlKSB7XG4gICAgICAgIHNldFRpbWVvdXQoY2IsIDApO1xuICAgICAgfVxuICAgIH0g
ZWxzZSBpZiAoXG4gICAgICAodm5vZGUudGFnID09PSAndGV4dGFyZWEnIHx8IGVsLnR5cGUgPT09
ICd0ZXh0JykgJiZcbiAgICAgICFiaW5kaW5nLm1vZGlmaWVycy5sYXp5XG4gICAgKSB7XG4gICAg
ICBpZiAoIWlzQW5kcm9pZCkge1xuICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCdjb21wb3Np
dGlvbnN0YXJ0Jywgb25Db21wb3NpdGlvblN0YXJ0KTtcbiAgICAgICAgZWwuYWRkRXZlbnRMaXN0
ZW5lcignY29tcG9zaXRpb25lbmQnLCBvbkNvbXBvc2l0aW9uRW5kKTtcbiAgICAgIH1cbiAgICAg
IC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgaWYgKGlzSUU5KSB7XG4gICAgICAgIGVs
LnZtb2RlbCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBjb21wb25lbnRVcGRhdGVk
OiBmdW5jdGlvbiBjb21wb25lbnRVcGRhdGVkIChlbCwgYmluZGluZywgdm5vZGUpIHtcbiAgICBp
ZiAodm5vZGUudGFnID09PSAnc2VsZWN0Jykge1xuICAgICAgc2V0U2VsZWN0ZWQoZWwsIGJpbmRp
bmcsIHZub2RlLmNvbnRleHQpO1xuICAgICAgLy8gaW4gY2FzZSB0aGUgb3B0aW9ucyByZW5kZXJl
ZCBieSB2LWZvciBoYXZlIGNoYW5nZWQsXG4gICAgICAvLyBpdCdzIHBvc3NpYmxlIHRoYXQgdGhl
IHZhbHVlIGlzIG91dC1vZi1zeW5jIHdpdGggdGhlIHJlbmRlcmVkIG9wdGlvbnMuXG4gICAgICAv
LyBkZXRlY3Qgc3VjaCBjYXNlcyBhbmQgZmlsdGVyIG91dCB2YWx1ZXMgdGhhdCBubyBsb25nZXIg
aGFzIGEgbWF0Y2hpbmdcbiAgICAgIC8vIG9wdGlvbiBpbiB0aGUgRE9NLlxuICAgICAgdmFyIG5l
ZWRSZXNldCA9IGVsLm11bHRpcGxlXG4gICAgICAgID8gYmluZGluZy52YWx1ZS5zb21lKGZ1bmN0
aW9uICh2KSB7IHJldHVybiBoYXNOb01hdGNoaW5nT3B0aW9uKHYsIGVsLm9wdGlvbnMpOyB9KVxu
ICAgICAgICA6IGJpbmRpbmcudmFsdWUgIT09IGJpbmRpbmcub2xkVmFsdWUgJiYgaGFzTm9NYXRj
aGluZ09wdGlvbihiaW5kaW5nLnZhbHVlLCBlbC5vcHRpb25zKTtcbiAgICAgIGlmIChuZWVkUmVz
ZXQpIHtcbiAgICAgICAgdHJpZ2dlcihlbCwgJ2NoYW5nZScpO1xuICAgICAgfVxuICAgIH1cbiAg
fVxufTtcblxuZnVuY3Rpb24gc2V0U2VsZWN0ZWQgKGVsLCBiaW5kaW5nLCB2bSkge1xuICB2YXIg
dmFsdWUgPSBiaW5kaW5nLnZhbHVlO1xuICB2YXIgaXNNdWx0aXBsZSA9IGVsLm11bHRpcGxlO1xu
ICBpZiAoaXNNdWx0aXBsZSAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICBwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4oXG4gICAgICBcIjxzZWxlY3Qg
bXVsdGlwbGUgdi1tb2RlbD1cXFwiXCIgKyAoYmluZGluZy5leHByZXNzaW9uKSArIFwiXFxcIj4g
XCIgK1xuICAgICAgXCJleHBlY3RzIGFuIEFycmF5IHZhbHVlIGZvciBpdHMgYmluZGluZywgYnV0
IGdvdCBcIiArIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpLnNsaWNlKDgs
IC0xKSksXG4gICAgICB2bVxuICAgICk7XG4gICAgcmV0dXJuXG4gIH1cbiAgdmFyIHNlbGVjdGVk
LCBvcHRpb247XG4gIGZvciAodmFyIGkgPSAwLCBsID0gZWwub3B0aW9ucy5sZW5ndGg7IGkgPCBs
OyBpKyspIHtcbiAgICBvcHRpb24gPSBlbC5vcHRpb25zW2ldO1xuICAgIGlmIChpc011bHRpcGxl
KSB7XG4gICAgICBzZWxlY3RlZCA9IGxvb3NlSW5kZXhPZih2YWx1ZSwgZ2V0VmFsdWUob3B0aW9u
KSkgPiAtMTtcbiAgICAgIGlmIChvcHRpb24uc2VsZWN0ZWQgIT09IHNlbGVjdGVkKSB7XG4gICAg
ICAgIG9wdGlvbi5zZWxlY3RlZCA9IHNlbGVjdGVkO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4g
ICAgICBpZiAobG9vc2VFcXVhbChnZXRWYWx1ZShvcHRpb24pLCB2YWx1ZSkpIHtcbiAgICAgICAg
aWYgKGVsLnNlbGVjdGVkSW5kZXggIT09IGkpIHtcbiAgICAgICAgICBlbC5zZWxlY3RlZEluZGV4
ID0gaTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAg
aWYgKCFpc011bHRpcGxlKSB7XG4gICAgZWwuc2VsZWN0ZWRJbmRleCA9IC0xO1xuICB9XG59XG5c
bmZ1bmN0aW9uIGhhc05vTWF0Y2hpbmdPcHRpb24gKHZhbHVlLCBvcHRpb25zKSB7XG4gIGZvciAo
dmFyIGkgPSAwLCBsID0gb3B0aW9ucy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBpZiAobG9v
c2VFcXVhbChnZXRWYWx1ZShvcHRpb25zW2ldKSwgdmFsdWUpKSB7XG4gICAgICByZXR1cm4gZmFs
c2VcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWVcbn1cblxuZnVuY3Rpb24gZ2V0VmFsdWUgKG9w
dGlvbikge1xuICByZXR1cm4gJ192YWx1ZScgaW4gb3B0aW9uXG4gICAgPyBvcHRpb24uX3ZhbHVl
XG4gICAgOiBvcHRpb24udmFsdWVcbn1cblxuZnVuY3Rpb24gb25Db21wb3NpdGlvblN0YXJ0IChl
KSB7XG4gIGUudGFyZ2V0LmNvbXBvc2luZyA9IHRydWU7XG59XG5cbmZ1bmN0aW9uIG9uQ29tcG9z
aXRpb25FbmQgKGUpIHtcbiAgZS50YXJnZXQuY29tcG9zaW5nID0gZmFsc2U7XG4gIHRyaWdnZXIo
ZS50YXJnZXQsICdpbnB1dCcpO1xufVxuXG5mdW5jdGlvbiB0cmlnZ2VyIChlbCwgdHlwZSkge1xu
ICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdIVE1MRXZlbnRzJyk7XG4gIGUuaW5pdEV2
ZW50KHR5cGUsIHRydWUsIHRydWUpO1xuICBlbC5kaXNwYXRjaEV2ZW50KGUpO1xufVxuXG4vKiAg
Ki9cblxuLy8gcmVjdXJzaXZlbHkgc2VhcmNoIGZvciBwb3NzaWJsZSB0cmFuc2l0aW9uIGRlZmlu
ZWQgaW5zaWRlIHRoZSBjb21wb25lbnQgcm9vdFxuZnVuY3Rpb24gbG9jYXRlTm9kZSAodm5vZGUp
IHtcbiAgcmV0dXJuIHZub2RlLmNoaWxkICYmICghdm5vZGUuZGF0YSB8fCAhdm5vZGUuZGF0YS50
cmFuc2l0aW9uKVxuICAgID8gbG9jYXRlTm9kZSh2bm9kZS5jaGlsZC5fdm5vZGUpXG4gICAgOiB2
bm9kZVxufVxuXG52YXIgc2hvdyA9IHtcbiAgYmluZDogZnVuY3Rpb24gYmluZCAoZWwsIHJlZiwg
dm5vZGUpIHtcbiAgICB2YXIgdmFsdWUgPSByZWYudmFsdWU7XG5cbiAgICB2bm9kZSA9IGxvY2F0
ZU5vZGUodm5vZGUpO1xuICAgIHZhciB0cmFuc2l0aW9uID0gdm5vZGUuZGF0YSAmJiB2bm9kZS5k
YXRhLnRyYW5zaXRpb247XG4gICAgaWYgKHZhbHVlICYmIHRyYW5zaXRpb24gJiYgIWlzSUU5KSB7
XG4gICAgICBlbnRlcih2bm9kZSk7XG4gICAgfVxuICAgIHZhciBvcmlnaW5hbERpc3BsYXkgPSBl
bC5zdHlsZS5kaXNwbGF5ID09PSAnbm9uZScgPyAnJyA6IGVsLnN0eWxlLmRpc3BsYXk7XG4gICAg
ZWwuc3R5bGUuZGlzcGxheSA9IHZhbHVlID8gb3JpZ2luYWxEaXNwbGF5IDogJ25vbmUnO1xuICAg
IGVsLl9fdk9yaWdpbmFsRGlzcGxheSA9IG9yaWdpbmFsRGlzcGxheTtcbiAgfSxcbiAgdXBkYXRl
OiBmdW5jdGlvbiB1cGRhdGUgKGVsLCByZWYsIHZub2RlKSB7XG4gICAgdmFyIHZhbHVlID0gcmVm
LnZhbHVlO1xuICAgIHZhciBvbGRWYWx1ZSA9IHJlZi5vbGRWYWx1ZTtcblxuICAgIC8qIGlzdGFu
YnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmICh2YWx1ZSA9PT0gb2xkVmFsdWUpIHsgcmV0dXJuIH1c
biAgICB2bm9kZSA9IGxvY2F0ZU5vZGUodm5vZGUpO1xuICAgIHZhciB0cmFuc2l0aW9uID0gdm5v
ZGUuZGF0YSAmJiB2bm9kZS5kYXRhLnRyYW5zaXRpb247XG4gICAgaWYgKHRyYW5zaXRpb24gJiYg
IWlzSUU5KSB7XG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgZW50ZXIodm5vZGUpO1xuICAg
ICAgICBlbC5zdHlsZS5kaXNwbGF5ID0gZWwuX192T3JpZ2luYWxEaXNwbGF5O1xuICAgICAgfSBl
bHNlIHtcbiAgICAgICAgbGVhdmUodm5vZGUsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBlbC5z
dHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2Ug
e1xuICAgICAgZWwuc3R5bGUuZGlzcGxheSA9IHZhbHVlID8gZWwuX192T3JpZ2luYWxEaXNwbGF5
IDogJ25vbmUnO1xuICAgIH1cbiAgfVxufTtcblxudmFyIHBsYXRmb3JtRGlyZWN0aXZlcyA9IHtc
biAgbW9kZWw6IG1vZGVsLFxuICBzaG93OiBzaG93XG59O1xuXG4vKiAgKi9cblxuLy8gUHJvdmlk
ZXMgdHJhbnNpdGlvbiBzdXBwb3J0IGZvciBhIHNpbmdsZSBlbGVtZW50L2NvbXBvbmVudC5cbi8v
IHN1cHBvcnRzIHRyYW5zaXRpb24gbW9kZSAob3V0LWluIC8gaW4tb3V0KVxuXG52YXIgdHJhbnNp
dGlvblByb3BzID0ge1xuICBuYW1lOiBTdHJpbmcsXG4gIGFwcGVhcjogQm9vbGVhbixcbiAgY3Nz
OiBCb29sZWFuLFxuICBtb2RlOiBTdHJpbmcsXG4gIHR5cGU6IFN0cmluZyxcbiAgZW50ZXJDbGFz
czogU3RyaW5nLFxuICBsZWF2ZUNsYXNzOiBTdHJpbmcsXG4gIGVudGVyQWN0aXZlQ2xhc3M6IFN0
cmluZyxcbiAgbGVhdmVBY3RpdmVDbGFzczogU3RyaW5nLFxuICBhcHBlYXJDbGFzczogU3RyaW5n
LFxuICBhcHBlYXJBY3RpdmVDbGFzczogU3RyaW5nXG59O1xuXG4vLyBpbiBjYXNlIHRoZSBjaGls
ZCBpcyBhbHNvIGFuIGFic3RyYWN0IGNvbXBvbmVudCwgZS5nLiA8a2VlcC1hbGl2ZT5cbi8vIHdl
IHdhbnQgdG8gcmVjdXJzaXZlbHkgcmV0cmlldmUgdGhlIHJlYWwgY29tcG9uZW50IHRvIGJlIHJl
bmRlcmVkXG5mdW5jdGlvbiBnZXRSZWFsQ2hpbGQgKHZub2RlKSB7XG4gIHZhciBjb21wT3B0aW9u
cyA9IHZub2RlICYmIHZub2RlLmNvbXBvbmVudE9wdGlvbnM7XG4gIGlmIChjb21wT3B0aW9ucyAm
JiBjb21wT3B0aW9ucy5DdG9yLm9wdGlvbnMuYWJzdHJhY3QpIHtcbiAgICByZXR1cm4gZ2V0UmVh
bENoaWxkKGdldEZpcnN0Q29tcG9uZW50Q2hpbGQoY29tcE9wdGlvbnMuY2hpbGRyZW4pKVxuICB9
IGVsc2Uge1xuICAgIHJldHVybiB2bm9kZVxuICB9XG59XG5cbmZ1bmN0aW9uIGV4dHJhY3RUcmFu
c2l0aW9uRGF0YSAoY29tcCkge1xuICB2YXIgZGF0YSA9IHt9O1xuICB2YXIgb3B0aW9ucyA9IGNv
bXAuJG9wdGlvbnM7XG4gIC8vIHByb3BzXG4gIGZvciAodmFyIGtleSBpbiBvcHRpb25zLnByb3Bz
RGF0YSkge1xuICAgIGRhdGFba2V5XSA9IGNvbXBba2V5XTtcbiAgfVxuICAvLyBldmVudHMuXG4g
IC8vIGV4dHJhY3QgbGlzdGVuZXJzIGFuZCBwYXNzIHRoZW0gZGlyZWN0bHkgdG8gdGhlIHRyYW5z
aXRpb24gbWV0aG9kc1xuICB2YXIgbGlzdGVuZXJzID0gb3B0aW9ucy5fcGFyZW50TGlzdGVuZXJz
O1xuICBmb3IgKHZhciBrZXkkMSBpbiBsaXN0ZW5lcnMpIHtcbiAgICBkYXRhW2NhbWVsaXplKGtl
eSQxKV0gPSBsaXN0ZW5lcnNba2V5JDFdLmZuO1xuICB9XG4gIHJldHVybiBkYXRhXG59XG5cbmZ1
bmN0aW9uIHBsYWNlaG9sZGVyIChoLCByYXdDaGlsZCkge1xuICByZXR1cm4gL1xcZC1rZWVwLWFs
aXZlJC8udGVzdChyYXdDaGlsZC50YWcpXG4gICAgPyBoKCdrZWVwLWFsaXZlJylcbiAgICA6IG51
bGxcbn1cblxuZnVuY3Rpb24gaGFzUGFyZW50VHJhbnNpdGlvbiAodm5vZGUpIHtcbiAgd2hpbGUg
KCh2bm9kZSA9IHZub2RlLnBhcmVudCkpIHtcbiAgICBpZiAodm5vZGUuZGF0YS50cmFuc2l0aW9u
KSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgfVxufVxuXG52YXIgVHJhbnNpdGlvbiA9
IHtcbiAgbmFtZTogJ3RyYW5zaXRpb24nLFxuICBwcm9wczogdHJhbnNpdGlvblByb3BzLFxuICBh
YnN0cmFjdDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIgKGgpIHtcbiAgICB2YXIg
dGhpcyQxID0gdGhpcztcblxuICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuJHNsb3RzLmRlZmF1bHQ7
XG4gICAgaWYgKCFjaGlsZHJlbikge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gZmls
dGVyIG91dCB0ZXh0IG5vZGVzIChwb3NzaWJsZSB3aGl0ZXNwYWNlcylcbiAgICBjaGlsZHJlbiA9
IGNoaWxkcmVuLmZpbHRlcihmdW5jdGlvbiAoYykgeyByZXR1cm4gYy50YWc7IH0pO1xuICAgIC8q
IGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmICghY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAg
ICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyB3YXJuIG11bHRpcGxlIGVsZW1lbnRzXG4gICAgaWYg
KHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgY2hpbGRyZW4ubGVuZ3Ro
ID4gMSkge1xuICAgICAgd2FybihcbiAgICAgICAgJzx0cmFuc2l0aW9uPiBjYW4gb25seSBiZSB1
c2VkIG9uIGEgc2luZ2xlIGVsZW1lbnQuIFVzZSAnICtcbiAgICAgICAgJzx0cmFuc2l0aW9uLWdy
b3VwPiBmb3IgbGlzdHMuJyxcbiAgICAgICAgdGhpcy4kcGFyZW50XG4gICAgICApO1xuICAgIH1c
blxuICAgIHZhciBtb2RlID0gdGhpcy5tb2RlO1xuXG4gICAgLy8gd2FybiBpbnZhbGlkIG1vZGVc
biAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJlxuICAgICAg
ICBtb2RlICYmIG1vZGUgIT09ICdpbi1vdXQnICYmIG1vZGUgIT09ICdvdXQtaW4nKSB7XG4gICAg
ICB3YXJuKFxuICAgICAgICAnaW52YWxpZCA8dHJhbnNpdGlvbj4gbW9kZTogJyArIG1vZGUsXG4g
ICAgICAgIHRoaXMuJHBhcmVudFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB2YXIgcmF3Q2hpbGQg
PSBjaGlsZHJlblswXTtcblxuICAgIC8vIGlmIHRoaXMgaXMgYSBjb21wb25lbnQgcm9vdCBub2Rl
IGFuZCB0aGUgY29tcG9uZW50J3NcbiAgICAvLyBwYXJlbnQgY29udGFpbmVyIG5vZGUgYWxzbyBo
YXMgdHJhbnNpdGlvbiwgc2tpcC5cbiAgICBpZiAoaGFzUGFyZW50VHJhbnNpdGlvbih0aGlzLiR2
bm9kZSkpIHtcbiAgICAgIHJldHVybiByYXdDaGlsZFxuICAgIH1cblxuICAgIC8vIGFwcGx5IHRy
YW5zaXRpb24gZGF0YSB0byBjaGlsZFxuICAgIC8vIHVzZSBnZXRSZWFsQ2hpbGQoKSB0byBpZ25v
cmUgYWJzdHJhY3QgY29tcG9uZW50cyBlLmcuIGtlZXAtYWxpdmVcbiAgICB2YXIgY2hpbGQgPSBn
ZXRSZWFsQ2hpbGQocmF3Q2hpbGQpO1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAg
IGlmICghY2hpbGQpIHtcbiAgICAgIHJldHVybiByYXdDaGlsZFxuICAgIH1cblxuICAgIGlmICh0
aGlzLl9sZWF2aW5nKSB7XG4gICAgICByZXR1cm4gcGxhY2Vob2xkZXIoaCwgcmF3Q2hpbGQpXG4g
ICAgfVxuXG4gICAgdmFyIGtleSA9IGNoaWxkLmtleSA9IGNoaWxkLmtleSA9PSBudWxsIHx8IGNo
aWxkLmlzU3RhdGljXG4gICAgICA/IChcIl9fdlwiICsgKGNoaWxkLnRhZyArIHRoaXMuX3VpZCkg
KyBcIl9fXCIpXG4gICAgICA6IGNoaWxkLmtleTtcbiAgICB2YXIgZGF0YSA9IChjaGlsZC5kYXRh
IHx8IChjaGlsZC5kYXRhID0ge30pKS50cmFuc2l0aW9uID0gZXh0cmFjdFRyYW5zaXRpb25EYXRh
KHRoaXMpO1xuICAgIHZhciBvbGRSYXdDaGlsZCA9IHRoaXMuX3Zub2RlO1xuICAgIHZhciBvbGRD
aGlsZCA9IGdldFJlYWxDaGlsZChvbGRSYXdDaGlsZCk7XG5cbiAgICAvLyBtYXJrIHYtc2hvd1xu
ICAgIC8vIHNvIHRoYXQgdGhlIHRyYW5zaXRpb24gbW9kdWxlIGNhbiBoYW5kIG92ZXIgdGhlIGNv
bnRyb2wgdG8gdGhlIGRpcmVjdGl2ZVxuICAgIGlmIChjaGlsZC5kYXRhLmRpcmVjdGl2ZXMgJiYg
Y2hpbGQuZGF0YS5kaXJlY3RpdmVzLnNvbWUoZnVuY3Rpb24gKGQpIHsgcmV0dXJuIGQubmFtZSA9
PT0gJ3Nob3cnOyB9KSkge1xuICAgICAgY2hpbGQuZGF0YS5zaG93ID0gdHJ1ZTtcbiAgICB9XG5c
biAgICBpZiAob2xkQ2hpbGQgJiYgb2xkQ2hpbGQuZGF0YSAmJiBvbGRDaGlsZC5rZXkgIT09IGtl
eSkge1xuICAgICAgLy8gcmVwbGFjZSBvbGQgY2hpbGQgdHJhbnNpdGlvbiBkYXRhIHdpdGggZnJl
c2ggb25lXG4gICAgICAvLyBpbXBvcnRhbnQgZm9yIGR5bmFtaWMgdHJhbnNpdGlvbnMhXG4gICAg
ICB2YXIgb2xkRGF0YSA9IG9sZENoaWxkLmRhdGEudHJhbnNpdGlvbiA9IGV4dGVuZCh7fSwgZGF0
YSk7XG5cbiAgICAgIC8vIGhhbmRsZSB0cmFuc2l0aW9uIG1vZGVcbiAgICAgIGlmIChtb2RlID09
PSAnb3V0LWluJykge1xuICAgICAgICAvLyByZXR1cm4gcGxhY2Vob2xkZXIgbm9kZSBhbmQgcXVl
dWUgdXBkYXRlIHdoZW4gbGVhdmUgZmluaXNoZXNcbiAgICAgICAgdGhpcy5fbGVhdmluZyA9IHRy
dWU7XG4gICAgICAgIG1lcmdlVk5vZGVIb29rKG9sZERhdGEsICdhZnRlckxlYXZlJywgZnVuY3Rp
b24gKCkge1xuICAgICAgICAgIHRoaXMkMS5fbGVhdmluZyA9IGZhbHNlO1xuICAgICAgICAgIHRo
aXMkMS4kZm9yY2VVcGRhdGUoKTtcbiAgICAgICAgfSwga2V5KTtcbiAgICAgICAgcmV0dXJuIHBs
YWNlaG9sZGVyKGgsIHJhd0NoaWxkKVxuICAgICAgfSBlbHNlIGlmIChtb2RlID09PSAnaW4tb3V0
Jykge1xuICAgICAgICB2YXIgZGVsYXllZExlYXZlO1xuICAgICAgICB2YXIgcGVyZm9ybUxlYXZl
ID0gZnVuY3Rpb24gKCkgeyBkZWxheWVkTGVhdmUoKTsgfTtcbiAgICAgICAgbWVyZ2VWTm9kZUhv
b2soZGF0YSwgJ2FmdGVyRW50ZXInLCBwZXJmb3JtTGVhdmUsIGtleSk7XG4gICAgICAgIG1lcmdl
Vk5vZGVIb29rKGRhdGEsICdlbnRlckNhbmNlbGxlZCcsIHBlcmZvcm1MZWF2ZSwga2V5KTtcbiAg
ICAgICAgbWVyZ2VWTm9kZUhvb2sob2xkRGF0YSwgJ2RlbGF5TGVhdmUnLCBmdW5jdGlvbiAobGVh
dmUpIHtcbiAgICAgICAgICBkZWxheWVkTGVhdmUgPSBsZWF2ZTtcbiAgICAgICAgfSwga2V5KTtc
biAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmF3Q2hpbGRcbiAgfVxufTtcblxuLyogICov
XG5cbi8vIFByb3ZpZGVzIHRyYW5zaXRpb24gc3VwcG9ydCBmb3IgbGlzdCBpdGVtcy5cbi8vIHN1
cHBvcnRzIG1vdmUgdHJhbnNpdGlvbnMgdXNpbmcgdGhlIEZMSVAgdGVjaG5pcXVlLlxuXG4vLyBC
ZWNhdXNlIHRoZSB2ZG9tJ3MgY2hpbGRyZW4gdXBkYXRlIGFsZ29yaXRobSBpcyBcInVuc3RhYmxl
XCIgLSBpLmUuXG4vLyBpdCBkb2Vzbid0IGd1YXJhbnRlZSB0aGUgcmVsYXRpdmUgcG9zaXRpb25p
bmcgb2YgcmVtb3ZlZCBlbGVtZW50cyxcbi8vIHdlIGZvcmNlIHRyYW5zaXRpb24tZ3JvdXAgdG8g
dXBkYXRlIGl0cyBjaGlsZHJlbiBpbnRvIHR3byBwYXNzZXM6XG4vLyBpbiB0aGUgZmlyc3QgcGFz
cywgd2UgcmVtb3ZlIGFsbCBub2RlcyB0aGF0IG5lZWQgdG8gYmUgcmVtb3ZlZCxcbi8vIHRyaWdn
ZXJpbmcgdGhlaXIgbGVhdmluZyB0cmFuc2l0aW9uOyBpbiB0aGUgc2Vjb25kIHBhc3MsIHdlIGlu
c2VydC9tb3ZlXG4vLyBpbnRvIHRoZSBmaW5hbCBkaXNpcmVkIHN0YXRlLiBUaGlzIHdheSBpbiB0
aGUgc2Vjb25kIHBhc3MgcmVtb3ZlZFxuLy8gbm9kZXMgd2lsbCByZW1haW4gd2hlcmUgdGhleSBz
aG91bGQgYmUuXG5cbnZhciBwcm9wcyA9IGV4dGVuZCh7XG4gIHRhZzogU3RyaW5nLFxuICBtb3Zl
Q2xhc3M6IFN0cmluZ1xufSwgdHJhbnNpdGlvblByb3BzKTtcblxuZGVsZXRlIHByb3BzLm1vZGU7
XG5cbnZhciBUcmFuc2l0aW9uR3JvdXAgPSB7XG4gIHByb3BzOiBwcm9wcyxcblxuICByZW5kZXI6
IGZ1bmN0aW9uIHJlbmRlciAoaCkge1xuICAgIHZhciB0YWcgPSB0aGlzLnRhZyB8fCB0aGlzLiR2
bm9kZS5kYXRhLnRhZyB8fCAnc3Bhbic7XG4gICAgdmFyIG1hcCA9IE9iamVjdC5jcmVhdGUobnVs
bCk7XG4gICAgdmFyIHByZXZDaGlsZHJlbiA9IHRoaXMucHJldkNoaWxkcmVuID0gdGhpcy5jaGls
ZHJlbjtcbiAgICB2YXIgcmF3Q2hpbGRyZW4gPSB0aGlzLiRzbG90cy5kZWZhdWx0IHx8IFtdO1xu
ICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuY2hpbGRyZW4gPSBbXTtcbiAgICB2YXIgdHJhbnNpdGlv
bkRhdGEgPSBleHRyYWN0VHJhbnNpdGlvbkRhdGEodGhpcyk7XG5cbiAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHJhd0NoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgYyA9IHJhd0NoaWxk
cmVuW2ldO1xuICAgICAgaWYgKGMudGFnKSB7XG4gICAgICAgIGlmIChjLmtleSAhPSBudWxsICYm
IFN0cmluZyhjLmtleSkuaW5kZXhPZignX192bGlzdCcpICE9PSAwKSB7XG4gICAgICAgICAgY2hp
bGRyZW4ucHVzaChjKTtcbiAgICAgICAgICBtYXBbYy5rZXldID0gY1xuICAgICAgICAgIDsoYy5k
YXRhIHx8IChjLmRhdGEgPSB7fSkpLnRyYW5zaXRpb24gPSB0cmFuc2l0aW9uRGF0YTtcbiAgICAg
ICAgfSBlbHNlIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4g
ICAgICAgICAgdmFyIG9wdHMgPSBjLmNvbXBvbmVudE9wdGlvbnM7XG4gICAgICAgICAgdmFyIG5h
bWUgPSBvcHRzXG4gICAgICAgICAgICA/IChvcHRzLkN0b3Iub3B0aW9ucy5uYW1lIHx8IG9wdHMu
dGFnKVxuICAgICAgICAgICAgOiBjLnRhZztcbiAgICAgICAgICB3YXJuKChcIjx0cmFuc2l0aW9u
LWdyb3VwPiBjaGlsZHJlbiBtdXN0IGJlIGtleWVkOiA8XCIgKyBuYW1lICsgXCI+XCIpKTtcbiAg
ICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwcmV2Q2hpbGRyZW4pIHtcbiAgICAg
IHZhciBrZXB0ID0gW107XG4gICAgICB2YXIgcmVtb3ZlZCA9IFtdO1xuICAgICAgZm9yICh2YXIg
aSQxID0gMDsgaSQxIDwgcHJldkNoaWxkcmVuLmxlbmd0aDsgaSQxKyspIHtcbiAgICAgICAgdmFy
IGMkMSA9IHByZXZDaGlsZHJlbltpJDFdO1xuICAgICAgICBjJDEuZGF0YS50cmFuc2l0aW9uID0g
dHJhbnNpdGlvbkRhdGE7XG4gICAgICAgIGMkMS5kYXRhLnBvcyA9IGMkMS5lbG0uZ2V0Qm91bmRp
bmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGlmIChtYXBbYyQxLmtleV0pIHtcbiAgICAgICAgICBr
ZXB0LnB1c2goYyQxKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZW1vdmVkLnB1c2go
YyQxKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5rZXB0ID0gaCh0YWcsIG51bGws
IGtlcHQpO1xuICAgICAgdGhpcy5yZW1vdmVkID0gcmVtb3ZlZDtcbiAgICB9XG5cbiAgICByZXR1
cm4gaCh0YWcsIG51bGwsIGNoaWxkcmVuKVxuICB9LFxuXG4gIGJlZm9yZVVwZGF0ZTogZnVuY3Rp
b24gYmVmb3JlVXBkYXRlICgpIHtcbiAgICAvLyBmb3JjZSByZW1vdmluZyBwYXNzXG4gICAgdGhp
cy5fX3BhdGNoX18oXG4gICAgICB0aGlzLl92bm9kZSxcbiAgICAgIHRoaXMua2VwdCxcbiAgICAg
IGZhbHNlLCAvLyBoeWRyYXRpbmdcbiAgICAgIHRydWUgLy8gcmVtb3ZlT25seSAoIWltcG9ydGFu
dCwgYXZvaWRzIHVubmVjZXNzYXJ5IG1vdmVzKVxuICAgICk7XG4gICAgdGhpcy5fdm5vZGUgPSB0
aGlzLmtlcHQ7XG4gIH0sXG5cbiAgdXBkYXRlZDogZnVuY3Rpb24gdXBkYXRlZCAoKSB7XG4gICAg
dmFyIGNoaWxkcmVuID0gdGhpcy5wcmV2Q2hpbGRyZW47XG4gICAgdmFyIG1vdmVDbGFzcyA9IHRo
aXMubW92ZUNsYXNzIHx8ICgodGhpcy5uYW1lIHx8ICd2JykgKyAnLW1vdmUnKTtcbiAgICBpZiAo
IWNoaWxkcmVuLmxlbmd0aCB8fCAhdGhpcy5oYXNNb3ZlKGNoaWxkcmVuWzBdLmVsbSwgbW92ZUNs
YXNzKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gd2UgZGl2aWRlIHRoZSB3b3Jr
IGludG8gdGhyZWUgbG9vcHMgdG8gYXZvaWQgbWl4aW5nIERPTSByZWFkcyBhbmQgd3JpdGVzXG4g
ICAgLy8gaW4gZWFjaCBpdGVyYXRpb24gLSB3aGljaCBoZWxwcyBwcmV2ZW50IGxheW91dCB0aHJh
c2hpbmcuXG4gICAgY2hpbGRyZW4uZm9yRWFjaChjYWxsUGVuZGluZ0Nicyk7XG4gICAgY2hpbGRy
ZW4uZm9yRWFjaChyZWNvcmRQb3NpdGlvbik7XG4gICAgY2hpbGRyZW4uZm9yRWFjaChhcHBseVRy
YW5zbGF0aW9uKTtcblxuICAgIC8vIGZvcmNlIHJlZmxvdyB0byBwdXQgZXZlcnl0aGluZyBpbiBw
b3NpdGlvblxuICAgIHZhciBmID0gZG9jdW1lbnQuYm9keS5vZmZzZXRIZWlnaHQ7IC8vIGVzbGlu
dC1kaXNhYmxlLWxpbmVcblxuICAgIGNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24gKGMpIHtcbiAg
ICAgIGlmIChjLmRhdGEubW92ZWQpIHtcbiAgICAgICAgdmFyIGVsID0gYy5lbG07XG4gICAgICAg
IHZhciBzID0gZWwuc3R5bGU7XG4gICAgICAgIGFkZFRyYW5zaXRpb25DbGFzcyhlbCwgbW92ZUNs
YXNzKTtcbiAgICAgICAgcy50cmFuc2Zvcm0gPSBzLldlYmtpdFRyYW5zZm9ybSA9IHMudHJhbnNp
dGlvbkR1cmF0aW9uID0gJyc7XG4gICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIodHJhbnNpdGlv
bkVuZEV2ZW50LCBlbC5fbW92ZUNiID0gZnVuY3Rpb24gY2IgKGUpIHtcbiAgICAgICAgICBpZiAo
IWUgfHwgL3RyYW5zZm9ybSQvLnRlc3QoZS5wcm9wZXJ0eU5hbWUpKSB7XG4gICAgICAgICAgICBl
bC5yZW1vdmVFdmVudExpc3RlbmVyKHRyYW5zaXRpb25FbmRFdmVudCwgY2IpO1xuICAgICAgICAg
ICAgZWwuX21vdmVDYiA9IG51bGw7XG4gICAgICAgICAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3Mo
ZWwsIG1vdmVDbGFzcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9
KTtcbiAgfSxcblxuICBtZXRob2RzOiB7XG4gICAgaGFzTW92ZTogZnVuY3Rpb24gaGFzTW92ZSAo
ZWwsIG1vdmVDbGFzcykge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICBp
ZiAoIWhhc1RyYW5zaXRpb24pIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAg
ICBpZiAodGhpcy5faGFzTW92ZSAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oYXNN
b3ZlXG4gICAgICB9XG4gICAgICBhZGRUcmFuc2l0aW9uQ2xhc3MoZWwsIG1vdmVDbGFzcyk7XG4g
ICAgICB2YXIgaW5mbyA9IGdldFRyYW5zaXRpb25JbmZvKGVsKTtcbiAgICAgIHJlbW92ZVRyYW5z
aXRpb25DbGFzcyhlbCwgbW92ZUNsYXNzKTtcbiAgICAgIHJldHVybiAodGhpcy5faGFzTW92ZSA9
IGluZm8uaGFzVHJhbnNmb3JtKVxuICAgIH1cbiAgfVxufTtcblxuZnVuY3Rpb24gY2FsbFBlbmRp
bmdDYnMgKGMpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChjLmVsbS5fbW92
ZUNiKSB7XG4gICAgYy5lbG0uX21vdmVDYigpO1xuICB9XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBp
ZiAqL1xuICBpZiAoYy5lbG0uX2VudGVyQ2IpIHtcbiAgICBjLmVsbS5fZW50ZXJDYigpO1xuICB9
XG59XG5cbmZ1bmN0aW9uIHJlY29yZFBvc2l0aW9uIChjKSB7XG4gIGMuZGF0YS5uZXdQb3MgPSBj
LmVsbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbn1cblxuZnVuY3Rpb24gYXBwbHlUcmFuc2xh
dGlvbiAoYykge1xuICB2YXIgb2xkUG9zID0gYy5kYXRhLnBvcztcbiAgdmFyIG5ld1BvcyA9IGMu
ZGF0YS5uZXdQb3M7XG4gIHZhciBkeCA9IG9sZFBvcy5sZWZ0IC0gbmV3UG9zLmxlZnQ7XG4gIHZh
ciBkeSA9IG9sZFBvcy50b3AgLSBuZXdQb3MudG9wO1xuICBpZiAoZHggfHwgZHkpIHtcbiAgICBj
LmRhdGEubW92ZWQgPSB0cnVlO1xuICAgIHZhciBzID0gYy5lbG0uc3R5bGU7XG4gICAgcy50cmFu
c2Zvcm0gPSBzLldlYmtpdFRyYW5zZm9ybSA9IFwidHJhbnNsYXRlKFwiICsgZHggKyBcInB4LFwi
ICsgZHkgKyBcInB4KVwiO1xuICAgIHMudHJhbnNpdGlvbkR1cmF0aW9uID0gJzBzJztcbiAgfVxu
fVxuXG52YXIgcGxhdGZvcm1Db21wb25lbnRzID0ge1xuICBUcmFuc2l0aW9uOiBUcmFuc2l0aW9u
LFxuICBUcmFuc2l0aW9uR3JvdXA6IFRyYW5zaXRpb25Hcm91cFxufTtcblxuLyogICovXG5cbi8v
IGluc3RhbGwgcGxhdGZvcm0gc3BlY2lmaWMgdXRpbHNcblZ1ZSQzLmNvbmZpZy5pc1Vua25vd25F
bGVtZW50ID0gaXNVbmtub3duRWxlbWVudDtcblZ1ZSQzLmNvbmZpZy5pc1Jlc2VydmVkVGFnID0g
aXNSZXNlcnZlZFRhZztcblZ1ZSQzLmNvbmZpZy5nZXRUYWdOYW1lc3BhY2UgPSBnZXRUYWdOYW1l
c3BhY2U7XG5WdWUkMy5jb25maWcubXVzdFVzZVByb3AgPSBtdXN0VXNlUHJvcDtcblxuLy8gaW5z
dGFsbCBwbGF0Zm9ybSBydW50aW1lIGRpcmVjdGl2ZXMgJiBjb21wb25lbnRzXG5leHRlbmQoVnVl
JDMub3B0aW9ucy5kaXJlY3RpdmVzLCBwbGF0Zm9ybURpcmVjdGl2ZXMpO1xuZXh0ZW5kKFZ1ZSQz
Lm9wdGlvbnMuY29tcG9uZW50cywgcGxhdGZvcm1Db21wb25lbnRzKTtcblxuLy8gaW5zdGFsbCBw
bGF0Zm9ybSBwYXRjaCBmdW5jdGlvblxuVnVlJDMucHJvdG90eXBlLl9fcGF0Y2hfXyA9IGluQnJv
d3NlciA/IHBhdGNoJDEgOiBub29wO1xuXG4vLyB3cmFwIG1vdW50XG5WdWUkMy5wcm90b3R5cGUu
JG1vdW50ID0gZnVuY3Rpb24gKFxuICBlbCxcbiAgaHlkcmF0aW5nXG4pIHtcbiAgZWwgPSBlbCAm
JiBpbkJyb3dzZXIgPyBxdWVyeShlbCkgOiB1bmRlZmluZWQ7XG4gIHJldHVybiB0aGlzLl9tb3Vu
dChlbCwgaHlkcmF0aW5nKVxufTtcblxuLy8gZGV2dG9vbHMgZ2xvYmFsIGhvb2tcbi8qIGlzdGFu
YnVsIGlnbm9yZSBuZXh0ICovXG5zZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgaWYgKGNvbmZp
Zy5kZXZ0b29scykge1xuICAgIGlmIChkZXZ0b29scykge1xuICAgICAgZGV2dG9vbHMuZW1pdCgn
aW5pdCcsIFZ1ZSQzKTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJyAmJlxuICAgICAgaW5Ccm93c2VyICYmIC9DaHJvbWVcXC9cXGQr
Ly50ZXN0KHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50KVxuICAgICkge1xuICAgICAgY29uc29s
ZS5sb2coXG4gICAgICAgICdEb3dubG9hZCB0aGUgVnVlIERldnRvb2xzIGZvciBhIGJldHRlciBk
ZXZlbG9wbWVudCBleHBlcmllbmNlOlxcbicgK1xuICAgICAgICAnaHR0cHM6Ly9naXRodWIuY29t
L3Z1ZWpzL3Z1ZS1kZXZ0b29scydcbiAgICAgICk7XG4gICAgfVxuICB9XG59LCAwKTtcblxuLyog
ICovXG5cbi8vIGNoZWNrIHdoZXRoZXIgY3VycmVudCBicm93c2VyIGVuY29kZXMgYSBjaGFyIGlu
c2lkZSBhdHRyaWJ1dGUgdmFsdWVzXG5mdW5jdGlvbiBzaG91bGREZWNvZGUgKGNvbnRlbnQsIGVu
Y29kZWQpIHtcbiAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICBk
aXYuaW5uZXJIVE1MID0gXCI8ZGl2IGE9XFxcIlwiICsgY29udGVudCArIFwiXFxcIj5cIjtcbiAg
cmV0dXJuIGRpdi5pbm5lckhUTUwuaW5kZXhPZihlbmNvZGVkKSA+IDBcbn1cblxuLy8gIzM2NjNc
bi8vIElFIGVuY29kZXMgbmV3bGluZXMgaW5zaWRlIGF0dHJpYnV0ZSB2YWx1ZXMgd2hpbGUgb3Ro
ZXIgYnJvd3NlcnMgZG9uJ3RcbnZhciBzaG91bGREZWNvZGVOZXdsaW5lcyA9IGluQnJvd3NlciA/
IHNob3VsZERlY29kZSgnXFxuJywgJyYjMTA7JykgOiBmYWxzZTtcblxuLyogICovXG5cbnZhciBk
ZWNvZGVyO1xuXG5mdW5jdGlvbiBkZWNvZGUgKGh0bWwpIHtcbiAgZGVjb2RlciA9IGRlY29kZXIg
fHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIGRlY29kZXIuaW5uZXJIVE1MID0g
aHRtbDtcbiAgcmV0dXJuIGRlY29kZXIudGV4dENvbnRlbnRcbn1cblxuLyoqXG4gKiBOb3QgdHlw
ZS1jaGVja2luZyB0aGlzIGZpbGUgYmVjYXVzZSBpdCdzIG1vc3RseSB2ZW5kb3IgY29kZS5cbiAq
L1xuXG4vKiFcbiAqIEhUTUwgUGFyc2VyIEJ5IEpvaG4gUmVzaWcgKGVqb2huLm9yZylcbiAqIE1v
ZGlmaWVkIGJ5IEp1cml5IFwia2FuZ2F4XCIgWmF5dHNldlxuICogT3JpZ2luYWwgY29kZSBieSBF
cmlrIEFydmlkc3NvbiwgTW96aWxsYSBQdWJsaWMgTGljZW5zZVxuICogaHR0cDovL2VyaWsuZWFl
Lm5ldC9zaW1wbGVodG1scGFyc2VyL3NpbXBsZWh0bWxwYXJzZXIuanNcbiAqL1xuXG4vLyBSZWd1
bGFyIEV4cHJlc3Npb25zIGZvciBwYXJzaW5nIHRhZ3MgYW5kIGF0dHJpYnV0ZXNcbnZhciBzaW5n
bGVBdHRySWRlbnRpZmllciA9IC8oW15cXHNcIic8Pi89XSspLztcbnZhciBzaW5nbGVBdHRyQXNz
aWduID0gLyg/Oj0pLztcbnZhciBzaW5nbGVBdHRyVmFsdWVzID0gW1xuICAvLyBhdHRyIHZhbHVl
IGRvdWJsZSBxdW90ZXNcbiAgL1wiKFteXCJdKilcIisvLnNvdXJjZSxcbiAgLy8gYXR0ciB2YWx1
ZSwgc2luZ2xlIHF1b3Rlc1xuICAvJyhbXiddKiknKy8uc291cmNlLFxuICAvLyBhdHRyIHZhbHVl
LCBubyBxdW90ZXNcbiAgLyhbXlxcc1wiJz08PmBdKykvLnNvdXJjZVxuXTtcbnZhciBhdHRyaWJ1
dGUgPSBuZXcgUmVnRXhwKFxuICAnXlxcXFxzKicgKyBzaW5nbGVBdHRySWRlbnRpZmllci5zb3Vy
Y2UgK1xuICAnKD86XFxcXHMqKCcgKyBzaW5nbGVBdHRyQXNzaWduLnNvdXJjZSArICcpJyArXG4g
ICdcXFxccyooPzonICsgc2luZ2xlQXR0clZhbHVlcy5qb2luKCd8JykgKyAnKSk/J1xuKTtcblxu
Ly8gY291bGQgdXNlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14bWwtbmFtZXMtMTk5
OTAxMTQvI05ULVFOYW1lXG4vLyBidXQgZm9yIFZ1ZSB0ZW1wbGF0ZXMgd2UgY2FuIGVuZm9yY2Ug
YSBzaW1wbGUgY2hhcnNldFxudmFyIG5jbmFtZSA9ICdbYS16QS1aX11bXFxcXHdcXFxcLVxcXFwu
XSonO1xudmFyIHFuYW1lQ2FwdHVyZSA9ICcoKD86JyArIG5jbmFtZSArICdcXFxcOik/JyArIG5j
bmFtZSArICcpJztcbnZhciBzdGFydFRhZ09wZW4gPSBuZXcgUmVnRXhwKCdePCcgKyBxbmFtZUNh
cHR1cmUpO1xudmFyIHN0YXJ0VGFnQ2xvc2UgPSAvXlxccyooXFwvPyk+LztcbnZhciBlbmRUYWcg
PSBuZXcgUmVnRXhwKCdePFxcXFwvJyArIHFuYW1lQ2FwdHVyZSArICdbXj5dKj4nKTtcbnZhciBk
b2N0eXBlID0gL148IURPQ1RZUEUgW14+XSs+L2k7XG52YXIgY29tbWVudCA9IC9ePCEtLS87XG52
YXIgY29uZGl0aW9uYWxDb21tZW50ID0gL148IVxcWy87XG5cbnZhciBJU19SRUdFWF9DQVBUVVJJ
TkdfQlJPS0VOID0gZmFsc2U7XG4neCcucmVwbGFjZSgveCguKT8vZywgZnVuY3Rpb24gKG0sIGcp
IHtcbiAgSVNfUkVHRVhfQ0FQVFVSSU5HX0JST0tFTiA9IGcgPT09ICcnO1xufSk7XG5cbi8vIFNw
ZWNpYWwgRWxlbWVudHMgKGNhbiBjb250YWluIGFueXRoaW5nKVxudmFyIGlzU2NyaXB0T3JTdHls
ZSA9IG1ha2VNYXAoJ3NjcmlwdCxzdHlsZScsIHRydWUpO1xudmFyIGhhc0xhbmcgPSBmdW5jdGlv
biAoYXR0cikgeyByZXR1cm4gYXR0ci5uYW1lID09PSAnbGFuZycgJiYgYXR0ci52YWx1ZSAhPT0g
J2h0bWwnOyB9O1xudmFyIGlzU3BlY2lhbFRhZyA9IGZ1bmN0aW9uICh0YWcsIGlzU0ZDLCBzdGFj
aykge1xuICBpZiAoaXNTY3JpcHRPclN0eWxlKHRhZykpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9
XG4gIGlmIChpc1NGQyAmJiBzdGFjay5sZW5ndGggPT09IDEpIHtcbiAgICAvLyB0b3AtbGV2ZWwg
dGVtcGxhdGUgdGhhdCBoYXMgbm8gcHJlLXByb2Nlc3NvclxuICAgIGlmICh0YWcgPT09ICd0ZW1w
bGF0ZScgJiYgIXN0YWNrWzBdLmF0dHJzLnNvbWUoaGFzTGFuZykpIHtcbiAgICAgIHJldHVybiBm
YWxzZVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgfVxuICByZXR1
cm4gZmFsc2Vcbn07XG5cbnZhciByZUNhY2hlID0ge307XG5cbnZhciBsdFJFID0gLyZsdDsvZztc
bnZhciBndFJFID0gLyZndDsvZztcbnZhciBubFJFID0gLyYjMTA7L2c7XG52YXIgYW1wUkUgPSAv
JmFtcDsvZztcbnZhciBxdW90ZVJFID0gLyZxdW90Oy9nO1xuXG5mdW5jdGlvbiBkZWNvZGVBdHRy
ICh2YWx1ZSwgc2hvdWxkRGVjb2RlTmV3bGluZXMpIHtcbiAgaWYgKHNob3VsZERlY29kZU5ld2xp
bmVzKSB7XG4gICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKG5sUkUsICdcXG4nKTtcbiAgfVxuICBy
ZXR1cm4gdmFsdWVcbiAgICAucmVwbGFjZShsdFJFLCAnPCcpXG4gICAgLnJlcGxhY2UoZ3RSRSwg
Jz4nKVxuICAgIC5yZXBsYWNlKGFtcFJFLCAnJicpXG4gICAgLnJlcGxhY2UocXVvdGVSRSwgJ1wi
Jylcbn1cblxuZnVuY3Rpb24gcGFyc2VIVE1MIChodG1sLCBvcHRpb25zKSB7XG4gIHZhciBzdGFj
ayA9IFtdO1xuICB2YXIgZXhwZWN0SFRNTCA9IG9wdGlvbnMuZXhwZWN0SFRNTDtcbiAgdmFyIGlz
VW5hcnlUYWckJDEgPSBvcHRpb25zLmlzVW5hcnlUYWcgfHwgbm87XG4gIHZhciBpbmRleCA9IDA7
XG4gIHZhciBsYXN0LCBsYXN0VGFnO1xuICB3aGlsZSAoaHRtbCkge1xuICAgIGxhc3QgPSBodG1s
O1xuICAgIC8vIE1ha2Ugc3VyZSB3ZSdyZSBub3QgaW4gYSBzY3JpcHQgb3Igc3R5bGUgZWxlbWVu
dFxuICAgIGlmICghbGFzdFRhZyB8fCAhaXNTcGVjaWFsVGFnKGxhc3RUYWcsIG9wdGlvbnMuc2Zj
LCBzdGFjaykpIHtcbiAgICAgIHZhciB0ZXh0RW5kID0gaHRtbC5pbmRleE9mKCc8Jyk7XG4gICAg
ICBpZiAodGV4dEVuZCA9PT0gMCkge1xuICAgICAgICAvLyBDb21tZW50OlxuICAgICAgICBpZiAo
Y29tbWVudC50ZXN0KGh0bWwpKSB7XG4gICAgICAgICAgdmFyIGNvbW1lbnRFbmQgPSBodG1sLmlu
ZGV4T2YoJy0tPicpO1xuXG4gICAgICAgICAgaWYgKGNvbW1lbnRFbmQgPj0gMCkge1xuICAgICAg
ICAgICAgYWR2YW5jZShjb21tZW50RW5kICsgMyk7XG4gICAgICAgICAgICBjb250aW51ZVxuICAg
ICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGh0dHA6Ly9lbi53aWtpcGVkaWEub3Jn
L3dpa2kvQ29uZGl0aW9uYWxfY29tbWVudCNEb3dubGV2ZWwtcmV2ZWFsZWRfY29uZGl0aW9uYWxf
Y29tbWVudFxuICAgICAgICBpZiAoY29uZGl0aW9uYWxDb21tZW50LnRlc3QoaHRtbCkpIHtcbiAg
ICAgICAgICB2YXIgY29uZGl0aW9uYWxFbmQgPSBodG1sLmluZGV4T2YoJ10+Jyk7XG5cbiAgICAg
ICAgICBpZiAoY29uZGl0aW9uYWxFbmQgPj0gMCkge1xuICAgICAgICAgICAgYWR2YW5jZShjb25k
aXRpb25hbEVuZCArIDIpO1xuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICB9XG4gICAg
ICAgIH1cblxuICAgICAgICAvLyBEb2N0eXBlOlxuICAgICAgICB2YXIgZG9jdHlwZU1hdGNoID0g
aHRtbC5tYXRjaChkb2N0eXBlKTtcbiAgICAgICAgaWYgKGRvY3R5cGVNYXRjaCkge1xuICAgICAg
ICAgIGFkdmFuY2UoZG9jdHlwZU1hdGNoWzBdLmxlbmd0aCk7XG4gICAgICAgICAgY29udGludWVc
biAgICAgICAgfVxuXG4gICAgICAgIC8vIEVuZCB0YWc6XG4gICAgICAgIHZhciBlbmRUYWdNYXRj
aCA9IGh0bWwubWF0Y2goZW5kVGFnKTtcbiAgICAgICAgaWYgKGVuZFRhZ01hdGNoKSB7XG4gICAg
ICAgICAgdmFyIGN1ckluZGV4ID0gaW5kZXg7XG4gICAgICAgICAgYWR2YW5jZShlbmRUYWdNYXRj
aFswXS5sZW5ndGgpO1xuICAgICAgICAgIHBhcnNlRW5kVGFnKGVuZFRhZ01hdGNoWzBdLCBlbmRU
YWdNYXRjaFsxXSwgY3VySW5kZXgsIGluZGV4KTtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAg
ICB9XG5cbiAgICAgICAgLy8gU3RhcnQgdGFnOlxuICAgICAgICB2YXIgc3RhcnRUYWdNYXRjaCA9
IHBhcnNlU3RhcnRUYWcoKTtcbiAgICAgICAgaWYgKHN0YXJ0VGFnTWF0Y2gpIHtcbiAgICAgICAg
ICBoYW5kbGVTdGFydFRhZyhzdGFydFRhZ01hdGNoKTtcbiAgICAgICAgICBjb250aW51ZVxuICAg
ICAgICB9XG4gICAgICB9XG5cbiAgICAgIHZhciB0ZXh0ID0gKHZvaWQgMCksIHJlc3QkMSA9ICh2
b2lkIDApLCBuZXh0ID0gKHZvaWQgMCk7XG4gICAgICBpZiAodGV4dEVuZCA+IDApIHtcbiAgICAg
ICAgcmVzdCQxID0gaHRtbC5zbGljZSh0ZXh0RW5kKTtcbiAgICAgICAgd2hpbGUgKFxuICAgICAg
ICAgICFlbmRUYWcudGVzdChyZXN0JDEpICYmXG4gICAgICAgICAgIXN0YXJ0VGFnT3Blbi50ZXN0
KHJlc3QkMSkgJiZcbiAgICAgICAgICAhY29tbWVudC50ZXN0KHJlc3QkMSkgJiZcbiAgICAgICAg
ICAhY29uZGl0aW9uYWxDb21tZW50LnRlc3QocmVzdCQxKVxuICAgICAgICApIHtcbiAgICAgICAg
ICAvLyA8IGluIHBsYWluIHRleHQsIGJlIGZvcmdpdmluZyBhbmQgdHJlYXQgaXQgYXMgdGV4dFxu
ICAgICAgICAgIG5leHQgPSByZXN0JDEuaW5kZXhPZignPCcsIDEpO1xuICAgICAgICAgIGlmIChu
ZXh0IDwgMCkgeyBicmVhayB9XG4gICAgICAgICAgdGV4dEVuZCArPSBuZXh0O1xuICAgICAgICAg
IHJlc3QkMSA9IGh0bWwuc2xpY2UodGV4dEVuZCk7XG4gICAgICAgIH1cbiAgICAgICAgdGV4dCA9
IGh0bWwuc3Vic3RyaW5nKDAsIHRleHRFbmQpO1xuICAgICAgICBhZHZhbmNlKHRleHRFbmQpO1xu
ICAgICAgfVxuXG4gICAgICBpZiAodGV4dEVuZCA8IDApIHtcbiAgICAgICAgdGV4dCA9IGh0bWw7
XG4gICAgICAgIGh0bWwgPSAnJztcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMuY2hhcnMg
JiYgdGV4dCkge1xuICAgICAgICBvcHRpb25zLmNoYXJzKHRleHQpO1xuICAgICAgfVxuICAgIH0g
ZWxzZSB7XG4gICAgICB2YXIgc3RhY2tlZFRhZyA9IGxhc3RUYWcudG9Mb3dlckNhc2UoKTtcbiAg
ICAgIHZhciByZVN0YWNrZWRUYWcgPSByZUNhY2hlW3N0YWNrZWRUYWddIHx8IChyZUNhY2hlW3N0
YWNrZWRUYWddID0gbmV3IFJlZ0V4cCgnKFtcXFxcc1xcXFxTXSo/KSg8LycgKyBzdGFja2VkVGFn
ICsgJ1tePl0qPiknLCAnaScpKTtcbiAgICAgIHZhciBlbmRUYWdMZW5ndGggPSAwO1xuICAgICAg
dmFyIHJlc3QgPSBodG1sLnJlcGxhY2UocmVTdGFja2VkVGFnLCBmdW5jdGlvbiAoYWxsLCB0ZXh0
LCBlbmRUYWcpIHtcbiAgICAgICAgZW5kVGFnTGVuZ3RoID0gZW5kVGFnLmxlbmd0aDtcbiAgICAg
ICAgaWYgKHN0YWNrZWRUYWcgIT09ICdzY3JpcHQnICYmIHN0YWNrZWRUYWcgIT09ICdzdHlsZScg
JiYgc3RhY2tlZFRhZyAhPT0gJ25vc2NyaXB0Jykge1xuICAgICAgICAgIHRleHQgPSB0ZXh0XG4g
ICAgICAgICAgICAucmVwbGFjZSgvPCEtLShbXFxzXFxTXSo/KS0tPi9nLCAnJDEnKVxuICAgICAg
ICAgICAgLnJlcGxhY2UoLzwhXFxbQ0RBVEFcXFsoW1xcc1xcU10qPyldXT4vZywgJyQxJyk7XG4g
ICAgICAgIH1cbiAgICAgICAgaWYgKG9wdGlvbnMuY2hhcnMpIHtcbiAgICAgICAgICBvcHRpb25z
LmNoYXJzKHRleHQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnJ1xuICAgICAgfSk7XG4g
ICAgICBpbmRleCArPSBodG1sLmxlbmd0aCAtIHJlc3QubGVuZ3RoO1xuICAgICAgaHRtbCA9IHJl
c3Q7XG4gICAgICBwYXJzZUVuZFRhZygnPC8nICsgc3RhY2tlZFRhZyArICc+Jywgc3RhY2tlZFRh
ZywgaW5kZXggLSBlbmRUYWdMZW5ndGgsIGluZGV4KTtcbiAgICB9XG5cbiAgICBpZiAoaHRtbCA9
PT0gbGFzdCAmJiBvcHRpb25zLmNoYXJzKSB7XG4gICAgICBvcHRpb25zLmNoYXJzKGh0bWwpO1xu
ICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICAvLyBDbGVhbiB1cCBhbnkgcmVtYWluaW5nIHRh
Z3NcbiAgcGFyc2VFbmRUYWcoKTtcblxuICBmdW5jdGlvbiBhZHZhbmNlIChuKSB7XG4gICAgaW5k
ZXggKz0gbjtcbiAgICBodG1sID0gaHRtbC5zdWJzdHJpbmcobik7XG4gIH1cblxuICBmdW5jdGlv
biBwYXJzZVN0YXJ0VGFnICgpIHtcbiAgICB2YXIgc3RhcnQgPSBodG1sLm1hdGNoKHN0YXJ0VGFn
T3Blbik7XG4gICAgaWYgKHN0YXJ0KSB7XG4gICAgICB2YXIgbWF0Y2ggPSB7XG4gICAgICAgIHRh
Z05hbWU6IHN0YXJ0WzFdLFxuICAgICAgICBhdHRyczogW10sXG4gICAgICAgIHN0YXJ0OiBpbmRl
eFxuICAgICAgfTtcbiAgICAgIGFkdmFuY2Uoc3RhcnRbMF0ubGVuZ3RoKTtcbiAgICAgIHZhciBl
bmQsIGF0dHI7XG4gICAgICB3aGlsZSAoIShlbmQgPSBodG1sLm1hdGNoKHN0YXJ0VGFnQ2xvc2Up
KSAmJiAoYXR0ciA9IGh0bWwubWF0Y2goYXR0cmlidXRlKSkpIHtcbiAgICAgICAgYWR2YW5jZShh
dHRyWzBdLmxlbmd0aCk7XG4gICAgICAgIG1hdGNoLmF0dHJzLnB1c2goYXR0cik7XG4gICAgICB9
XG4gICAgICBpZiAoZW5kKSB7XG4gICAgICAgIG1hdGNoLnVuYXJ5U2xhc2ggPSBlbmRbMV07XG4g
ICAgICAgIGFkdmFuY2UoZW5kWzBdLmxlbmd0aCk7XG4gICAgICAgIG1hdGNoLmVuZCA9IGluZGV4
O1xuICAgICAgICByZXR1cm4gbWF0Y2hcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlv
biBoYW5kbGVTdGFydFRhZyAobWF0Y2gpIHtcbiAgICB2YXIgdGFnTmFtZSA9IG1hdGNoLnRhZ05h
bWU7XG4gICAgdmFyIHVuYXJ5U2xhc2ggPSBtYXRjaC51bmFyeVNsYXNoO1xuXG4gICAgaWYgKGV4
cGVjdEhUTUwpIHtcbiAgICAgIGlmIChsYXN0VGFnID09PSAncCcgJiYgaXNOb25QaHJhc2luZ1Rh
Zyh0YWdOYW1lKSkge1xuICAgICAgICBwYXJzZUVuZFRhZygnJywgbGFzdFRhZyk7XG4gICAgICB9
XG4gICAgICBpZiAoY2FuQmVMZWZ0T3BlblRhZyh0YWdOYW1lKSAmJiBsYXN0VGFnID09PSB0YWdO
YW1lKSB7XG4gICAgICAgIHBhcnNlRW5kVGFnKCcnLCB0YWdOYW1lKTtcbiAgICAgIH1cbiAgICB9
XG5cbiAgICB2YXIgdW5hcnkgPSBpc1VuYXJ5VGFnJCQxKHRhZ05hbWUpIHx8IHRhZ05hbWUgPT09
ICdodG1sJyAmJiBsYXN0VGFnID09PSAnaGVhZCcgfHwgISF1bmFyeVNsYXNoO1xuXG4gICAgdmFy
IGwgPSBtYXRjaC5hdHRycy5sZW5ndGg7XG4gICAgdmFyIGF0dHJzID0gbmV3IEFycmF5KGwpO1xu
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICB2YXIgYXJncyA9IG1hdGNo
LmF0dHJzW2ldO1xuICAgICAgLy8gaGFja2lzaCB3b3JrIGFyb3VuZCBGRiBidWcgaHR0cHM6Ly9i
dWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY5Nzc4XG4gICAgICBpZiAoSVNf
UkVHRVhfQ0FQVFVSSU5HX0JST0tFTiAmJiBhcmdzWzBdLmluZGV4T2YoJ1wiXCInKSA9PT0gLTEp
IHtcbiAgICAgICAgaWYgKGFyZ3NbM10gPT09ICcnKSB7IGRlbGV0ZSBhcmdzWzNdOyB9XG4gICAg
ICAgIGlmIChhcmdzWzRdID09PSAnJykgeyBkZWxldGUgYXJnc1s0XTsgfVxuICAgICAgICBpZiAo
YXJnc1s1XSA9PT0gJycpIHsgZGVsZXRlIGFyZ3NbNV07IH1cbiAgICAgIH1cbiAgICAgIHZhciB2
YWx1ZSA9IGFyZ3NbM10gfHwgYXJnc1s0XSB8fCBhcmdzWzVdIHx8ICcnO1xuICAgICAgYXR0cnNb
aV0gPSB7XG4gICAgICAgIG5hbWU6IGFyZ3NbMV0sXG4gICAgICAgIHZhbHVlOiBkZWNvZGVBdHRy
KFxuICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgIG9wdGlvbnMuc2hvdWxkRGVjb2RlTmV3bGlu
ZXNcbiAgICAgICAgKVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAoIXVuYXJ5KSB7XG4gICAg
ICBzdGFjay5wdXNoKHsgdGFnOiB0YWdOYW1lLCBhdHRyczogYXR0cnMgfSk7XG4gICAgICBsYXN0
VGFnID0gdGFnTmFtZTtcbiAgICAgIHVuYXJ5U2xhc2ggPSAnJztcbiAgICB9XG5cbiAgICBpZiAo
b3B0aW9ucy5zdGFydCkge1xuICAgICAgb3B0aW9ucy5zdGFydCh0YWdOYW1lLCBhdHRycywgdW5h
cnksIG1hdGNoLnN0YXJ0LCBtYXRjaC5lbmQpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHBh
cnNlRW5kVGFnICh0YWcsIHRhZ05hbWUsIHN0YXJ0LCBlbmQpIHtcbiAgICB2YXIgcG9zO1xuICAg
IGlmIChzdGFydCA9PSBudWxsKSB7IHN0YXJ0ID0gaW5kZXg7IH1cbiAgICBpZiAoZW5kID09IG51
bGwpIHsgZW5kID0gaW5kZXg7IH1cblxuICAgIC8vIEZpbmQgdGhlIGNsb3Nlc3Qgb3BlbmVkIHRh
ZyBvZiB0aGUgc2FtZSB0eXBlXG4gICAgaWYgKHRhZ05hbWUpIHtcbiAgICAgIHZhciBuZWVkbGUg
PSB0YWdOYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICBmb3IgKHBvcyA9IHN0YWNrLmxlbmd0aCAt
IDE7IHBvcyA+PSAwOyBwb3MtLSkge1xuICAgICAgICBpZiAoc3RhY2tbcG9zXS50YWcudG9Mb3dl
ckNhc2UoKSA9PT0gbmVlZGxlKSB7XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAg
fVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBJZiBubyB0YWcgbmFtZSBpcyBwcm92aWRlZCwgY2xl
YW4gc2hvcFxuICAgICAgcG9zID0gMDtcbiAgICB9XG5cbiAgICBpZiAocG9zID49IDApIHtcbiAg
ICAgIC8vIENsb3NlIGFsbCB0aGUgb3BlbiBlbGVtZW50cywgdXAgdGhlIHN0YWNrXG4gICAgICBm
b3IgKHZhciBpID0gc3RhY2subGVuZ3RoIC0gMTsgaSA+PSBwb3M7IGktLSkge1xuICAgICAgICBp
ZiAob3B0aW9ucy5lbmQpIHtcbiAgICAgICAgICBvcHRpb25zLmVuZChzdGFja1tpXS50YWcsIHN0
YXJ0LCBlbmQpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFJlbW92ZSB0aGUgb3Bl
biBlbGVtZW50cyBmcm9tIHRoZSBzdGFja1xuICAgICAgc3RhY2subGVuZ3RoID0gcG9zO1xuICAg
ICAgbGFzdFRhZyA9IHBvcyAmJiBzdGFja1twb3MgLSAxXS50YWc7XG4gICAgfSBlbHNlIGlmICh0
YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdicicpIHtcbiAgICAgIGlmIChvcHRpb25zLnN0YXJ0
KSB7XG4gICAgICAgIG9wdGlvbnMuc3RhcnQodGFnTmFtZSwgW10sIHRydWUsIHN0YXJ0LCBlbmQp
O1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSAncCcp
IHtcbiAgICAgIGlmIChvcHRpb25zLnN0YXJ0KSB7XG4gICAgICAgIG9wdGlvbnMuc3RhcnQodGFn
TmFtZSwgW10sIGZhbHNlLCBzdGFydCwgZW5kKTtcbiAgICAgIH1cbiAgICAgIGlmIChvcHRpb25z
LmVuZCkge1xuICAgICAgICBvcHRpb25zLmVuZCh0YWdOYW1lLCBzdGFydCwgZW5kKTtcbiAgICAg
IH1cbiAgICB9XG4gIH1cbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIHBhcnNlRmlsdGVycyAoZXhw
KSB7XG4gIHZhciBpblNpbmdsZSA9IGZhbHNlO1xuICB2YXIgaW5Eb3VibGUgPSBmYWxzZTtcbiAg
dmFyIGluVGVtcGxhdGVTdHJpbmcgPSBmYWxzZTtcbiAgdmFyIGluUmVnZXggPSBmYWxzZTtcbiAg
dmFyIGN1cmx5ID0gMDtcbiAgdmFyIHNxdWFyZSA9IDA7XG4gIHZhciBwYXJlbiA9IDA7XG4gIHZh
ciBsYXN0RmlsdGVySW5kZXggPSAwO1xuICB2YXIgYywgcHJldiwgaSwgZXhwcmVzc2lvbiwgZmls
dGVycztcblxuICBmb3IgKGkgPSAwOyBpIDwgZXhwLmxlbmd0aDsgaSsrKSB7XG4gICAgcHJldiA9
IGM7XG4gICAgYyA9IGV4cC5jaGFyQ29kZUF0KGkpO1xuICAgIGlmIChpblNpbmdsZSkge1xuICAg
ICAgaWYgKGMgPT09IDB4MjcgJiYgcHJldiAhPT0gMHg1QykgeyBpblNpbmdsZSA9IGZhbHNlOyB9
XG4gICAgfSBlbHNlIGlmIChpbkRvdWJsZSkge1xuICAgICAgaWYgKGMgPT09IDB4MjIgJiYgcHJl
diAhPT0gMHg1QykgeyBpbkRvdWJsZSA9IGZhbHNlOyB9XG4gICAgfSBlbHNlIGlmIChpblRlbXBs
YXRlU3RyaW5nKSB7XG4gICAgICBpZiAoYyA9PT0gMHg2MCAmJiBwcmV2ICE9PSAweDVDKSB7IGlu
VGVtcGxhdGVTdHJpbmcgPSBmYWxzZTsgfVxuICAgIH0gZWxzZSBpZiAoaW5SZWdleCkge1xuICAg
ICAgaWYgKGMgPT09IDB4MmYgJiYgcHJldiAhPT0gMHg1QykgeyBpblJlZ2V4ID0gZmFsc2U7IH1c
biAgICB9IGVsc2UgaWYgKFxuICAgICAgYyA9PT0gMHg3QyAmJiAvLyBwaXBlXG4gICAgICBleHAu
Y2hhckNvZGVBdChpICsgMSkgIT09IDB4N0MgJiZcbiAgICAgIGV4cC5jaGFyQ29kZUF0KGkgLSAx
KSAhPT0gMHg3QyAmJlxuICAgICAgIWN1cmx5ICYmICFzcXVhcmUgJiYgIXBhcmVuXG4gICAgKSB7
XG4gICAgICBpZiAoZXhwcmVzc2lvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIC8vIGZpcnN0
IGZpbHRlciwgZW5kIG9mIGV4cHJlc3Npb25cbiAgICAgICAgbGFzdEZpbHRlckluZGV4ID0gaSAr
IDE7XG4gICAgICAgIGV4cHJlc3Npb24gPSBleHAuc2xpY2UoMCwgaSkudHJpbSgpO1xuICAgICAg
fSBlbHNlIHtcbiAgICAgICAgcHVzaEZpbHRlcigpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4g
ICAgICBzd2l0Y2ggKGMpIHtcbiAgICAgICAgY2FzZSAweDIyOiBpbkRvdWJsZSA9IHRydWU7IGJy
ZWFrICAgICAgICAgLy8gXCJcbiAgICAgICAgY2FzZSAweDI3OiBpblNpbmdsZSA9IHRydWU7IGJy
ZWFrICAgICAgICAgLy8gJ1xuICAgICAgICBjYXNlIDB4NjA6IGluVGVtcGxhdGVTdHJpbmcgPSB0
cnVlOyBicmVhayAvLyBgXG4gICAgICAgIGNhc2UgMHgyZjogaW5SZWdleCA9IHRydWU7IGJyZWFr
ICAgICAgICAgIC8vIC9cbiAgICAgICAgY2FzZSAweDI4OiBwYXJlbisrOyBicmVhayAgICAgICAg
ICAgICAgICAgLy8gKFxuICAgICAgICBjYXNlIDB4Mjk6IHBhcmVuLS07IGJyZWFrICAgICAgICAg
ICAgICAgICAvLyApXG4gICAgICAgIGNhc2UgMHg1Qjogc3F1YXJlKys7IGJyZWFrICAgICAgICAg
ICAgICAgIC8vIFtcbiAgICAgICAgY2FzZSAweDVEOiBzcXVhcmUtLTsgYnJlYWsgICAgICAgICAg
ICAgICAgLy8gXVxuICAgICAgICBjYXNlIDB4N0I6IGN1cmx5Kys7IGJyZWFrICAgICAgICAgICAg
ICAgICAvLyB7XG4gICAgICAgIGNhc2UgMHg3RDogY3VybHktLTsgYnJlYWsgICAgICAgICAgICAg
ICAgIC8vIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoZXhwcmVzc2lvbiA9PT0gdW5k
ZWZpbmVkKSB7XG4gICAgZXhwcmVzc2lvbiA9IGV4cC5zbGljZSgwLCBpKS50cmltKCk7XG4gIH0g
ZWxzZSBpZiAobGFzdEZpbHRlckluZGV4ICE9PSAwKSB7XG4gICAgcHVzaEZpbHRlcigpO1xuICB9
XG5cbiAgZnVuY3Rpb24gcHVzaEZpbHRlciAoKSB7XG4gICAgKGZpbHRlcnMgfHwgKGZpbHRlcnMg
PSBbXSkpLnB1c2goZXhwLnNsaWNlKGxhc3RGaWx0ZXJJbmRleCwgaSkudHJpbSgpKTtcbiAgICBs
YXN0RmlsdGVySW5kZXggPSBpICsgMTtcbiAgfVxuXG4gIGlmIChmaWx0ZXJzKSB7XG4gICAgZm9y
IChpID0gMDsgaSA8IGZpbHRlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGV4cHJlc3Npb24gPSB3
cmFwRmlsdGVyKGV4cHJlc3Npb24sIGZpbHRlcnNbaV0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVy
biBleHByZXNzaW9uXG59XG5cbmZ1bmN0aW9uIHdyYXBGaWx0ZXIgKGV4cCwgZmlsdGVyKSB7XG4g
IHZhciBpID0gZmlsdGVyLmluZGV4T2YoJygnKTtcbiAgaWYgKGkgPCAwKSB7XG4gICAgLy8gX2Y6
IHJlc29sdmVGaWx0ZXJcbiAgICByZXR1cm4gKFwiX2YoXFxcIlwiICsgZmlsdGVyICsgXCJcXFwi
KShcIiArIGV4cCArIFwiKVwiKVxuICB9IGVsc2Uge1xuICAgIHZhciBuYW1lID0gZmlsdGVyLnNs
aWNlKDAsIGkpO1xuICAgIHZhciBhcmdzID0gZmlsdGVyLnNsaWNlKGkgKyAxKTtcbiAgICByZXR1
cm4gKFwiX2YoXFxcIlwiICsgbmFtZSArIFwiXFxcIikoXCIgKyBleHAgKyBcIixcIiArIGFyZ3Mp
XG4gIH1cbn1cblxuLyogICovXG5cbnZhciBkZWZhdWx0VGFnUkUgPSAvXFx7XFx7KCg/Oi58XFxu
KSs/KVxcfVxcfS9nO1xudmFyIHJlZ2V4RXNjYXBlUkUgPSAvWy0uKis/XiR7fSgpfFtcXF0vXFxc
XF0vZztcblxudmFyIGJ1aWxkUmVnZXggPSBjYWNoZWQoZnVuY3Rpb24gKGRlbGltaXRlcnMpIHtc
biAgdmFyIG9wZW4gPSBkZWxpbWl0ZXJzWzBdLnJlcGxhY2UocmVnZXhFc2NhcGVSRSwgJ1xcXFwk
JicpO1xuICB2YXIgY2xvc2UgPSBkZWxpbWl0ZXJzWzFdLnJlcGxhY2UocmVnZXhFc2NhcGVSRSwg
J1xcXFwkJicpO1xuICByZXR1cm4gbmV3IFJlZ0V4cChvcGVuICsgJygoPzoufFxcXFxuKSs/KScg
KyBjbG9zZSwgJ2cnKVxufSk7XG5cbmZ1bmN0aW9uIHBhcnNlVGV4dCAoXG4gIHRleHQsXG4gIGRl
bGltaXRlcnNcbikge1xuICB2YXIgdGFnUkUgPSBkZWxpbWl0ZXJzID8gYnVpbGRSZWdleChkZWxp
bWl0ZXJzKSA6IGRlZmF1bHRUYWdSRTtcbiAgaWYgKCF0YWdSRS50ZXN0KHRleHQpKSB7XG4gICAg
cmV0dXJuXG4gIH1cbiAgdmFyIHRva2VucyA9IFtdO1xuICB2YXIgbGFzdEluZGV4ID0gdGFnUkUu
bGFzdEluZGV4ID0gMDtcbiAgdmFyIG1hdGNoLCBpbmRleDtcbiAgd2hpbGUgKChtYXRjaCA9IHRh
Z1JFLmV4ZWModGV4dCkpKSB7XG4gICAgaW5kZXggPSBtYXRjaC5pbmRleDtcbiAgICAvLyBwdXNo
IHRleHQgdG9rZW5cbiAgICBpZiAoaW5kZXggPiBsYXN0SW5kZXgpIHtcbiAgICAgIHRva2Vucy5w
dXNoKEpTT04uc3RyaW5naWZ5KHRleHQuc2xpY2UobGFzdEluZGV4LCBpbmRleCkpKTtcbiAgICB9
XG4gICAgLy8gdGFnIHRva2VuXG4gICAgdmFyIGV4cCA9IHBhcnNlRmlsdGVycyhtYXRjaFsxXS50
cmltKCkpO1xuICAgIHRva2Vucy5wdXNoKChcIl9zKFwiICsgZXhwICsgXCIpXCIpKTtcbiAgICBs
YXN0SW5kZXggPSBpbmRleCArIG1hdGNoWzBdLmxlbmd0aDtcbiAgfVxuICBpZiAobGFzdEluZGV4
IDwgdGV4dC5sZW5ndGgpIHtcbiAgICB0b2tlbnMucHVzaChKU09OLnN0cmluZ2lmeSh0ZXh0LnNs
aWNlKGxhc3RJbmRleCkpKTtcbiAgfVxuICByZXR1cm4gdG9rZW5zLmpvaW4oJysnKVxufVxuXG4v
KiAgKi9cblxuZnVuY3Rpb24gYmFzZVdhcm4gKG1zZykge1xuICBjb25zb2xlLmVycm9yKChcIltW
dWUgcGFyc2VyXTogXCIgKyBtc2cpKTtcbn1cblxuZnVuY3Rpb24gcGx1Y2tNb2R1bGVGdW5jdGlv
biAoXG4gIG1vZHVsZXMsXG4gIGtleVxuKSB7XG4gIHJldHVybiBtb2R1bGVzXG4gICAgPyBtb2R1
bGVzLm1hcChmdW5jdGlvbiAobSkgeyByZXR1cm4gbVtrZXldOyB9KS5maWx0ZXIoZnVuY3Rpb24g
KF8pIHsgcmV0dXJuIF87IH0pXG4gICAgOiBbXVxufVxuXG5mdW5jdGlvbiBhZGRQcm9wIChlbCwg
bmFtZSwgdmFsdWUpIHtcbiAgKGVsLnByb3BzIHx8IChlbC5wcm9wcyA9IFtdKSkucHVzaCh7IG5h
bWU6IG5hbWUsIHZhbHVlOiB2YWx1ZSB9KTtcbn1cblxuZnVuY3Rpb24gYWRkQXR0ciAoZWwsIG5h
bWUsIHZhbHVlKSB7XG4gIChlbC5hdHRycyB8fCAoZWwuYXR0cnMgPSBbXSkpLnB1c2goeyBuYW1l
OiBuYW1lLCB2YWx1ZTogdmFsdWUgfSk7XG59XG5cbmZ1bmN0aW9uIGFkZERpcmVjdGl2ZSAoXG4g
IGVsLFxuICBuYW1lLFxuICByYXdOYW1lLFxuICB2YWx1ZSxcbiAgYXJnLFxuICBtb2RpZmllcnNc
bikge1xuICAoZWwuZGlyZWN0aXZlcyB8fCAoZWwuZGlyZWN0aXZlcyA9IFtdKSkucHVzaCh7IG5h
bWU6IG5hbWUsIHJhd05hbWU6IHJhd05hbWUsIHZhbHVlOiB2YWx1ZSwgYXJnOiBhcmcsIG1vZGlm
aWVyczogbW9kaWZpZXJzIH0pO1xufVxuXG5mdW5jdGlvbiBhZGRIYW5kbGVyIChcbiAgZWwsXG4g
IG5hbWUsXG4gIHZhbHVlLFxuICBtb2RpZmllcnMsXG4gIGltcG9ydGFudFxuKSB7XG4gIC8vIGNo
ZWNrIGNhcHR1cmUgbW9kaWZpZXJcbiAgaWYgKG1vZGlmaWVycyAmJiBtb2RpZmllcnMuY2FwdHVy
ZSkge1xuICAgIGRlbGV0ZSBtb2RpZmllcnMuY2FwdHVyZTtcbiAgICBuYW1lID0gJyEnICsgbmFt
ZTsgLy8gbWFyayB0aGUgZXZlbnQgYXMgY2FwdHVyZWRcbiAgfVxuICB2YXIgZXZlbnRzO1xuICBp
ZiAobW9kaWZpZXJzICYmIG1vZGlmaWVycy5uYXRpdmUpIHtcbiAgICBkZWxldGUgbW9kaWZpZXJz
Lm5hdGl2ZTtcbiAgICBldmVudHMgPSBlbC5uYXRpdmVFdmVudHMgfHwgKGVsLm5hdGl2ZUV2ZW50
cyA9IHt9KTtcbiAgfSBlbHNlIHtcbiAgICBldmVudHMgPSBlbC5ldmVudHMgfHwgKGVsLmV2ZW50
cyA9IHt9KTtcbiAgfVxuICB2YXIgbmV3SGFuZGxlciA9IHsgdmFsdWU6IHZhbHVlLCBtb2RpZmll
cnM6IG1vZGlmaWVycyB9O1xuICB2YXIgaGFuZGxlcnMgPSBldmVudHNbbmFtZV07XG4gIC8qIGlz
dGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoQXJyYXkuaXNBcnJheShoYW5kbGVycykpIHtcbiAg
ICBpbXBvcnRhbnQgPyBoYW5kbGVycy51bnNoaWZ0KG5ld0hhbmRsZXIpIDogaGFuZGxlcnMucHVz
aChuZXdIYW5kbGVyKTtcbiAgfSBlbHNlIGlmIChoYW5kbGVycykge1xuICAgIGV2ZW50c1tuYW1l
XSA9IGltcG9ydGFudCA/IFtuZXdIYW5kbGVyLCBoYW5kbGVyc10gOiBbaGFuZGxlcnMsIG5ld0hh
bmRsZXJdO1xuICB9IGVsc2Uge1xuICAgIGV2ZW50c1tuYW1lXSA9IG5ld0hhbmRsZXI7XG4gIH1c
bn1cblxuZnVuY3Rpb24gZ2V0QmluZGluZ0F0dHIgKFxuICBlbCxcbiAgbmFtZSxcbiAgZ2V0U3Rh
dGljXG4pIHtcbiAgdmFyIGR5bmFtaWNWYWx1ZSA9XG4gICAgZ2V0QW5kUmVtb3ZlQXR0cihlbCwg
JzonICsgbmFtZSkgfHxcbiAgICBnZXRBbmRSZW1vdmVBdHRyKGVsLCAndi1iaW5kOicgKyBuYW1l
KTtcbiAgaWYgKGR5bmFtaWNWYWx1ZSAhPSBudWxsKSB7XG4gICAgcmV0dXJuIHBhcnNlRmlsdGVy
cyhkeW5hbWljVmFsdWUpXG4gIH0gZWxzZSBpZiAoZ2V0U3RhdGljICE9PSBmYWxzZSkge1xuICAg
IHZhciBzdGF0aWNWYWx1ZSA9IGdldEFuZFJlbW92ZUF0dHIoZWwsIG5hbWUpO1xuICAgIGlmIChz
dGF0aWNWYWx1ZSAhPSBudWxsKSB7XG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoc3RhdGlj
VmFsdWUpXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGdldEFuZFJlbW92ZUF0dHIgKGVsLCBu
YW1lKSB7XG4gIHZhciB2YWw7XG4gIGlmICgodmFsID0gZWwuYXR0cnNNYXBbbmFtZV0pICE9IG51
bGwpIHtcbiAgICB2YXIgbGlzdCA9IGVsLmF0dHJzTGlzdDtcbiAgICBmb3IgKHZhciBpID0gMCwg
bCA9IGxpc3QubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICBpZiAobGlzdFtpXS5uYW1lID09
PSBuYW1lKSB7XG4gICAgICAgIGxpc3Quc3BsaWNlKGksIDEpO1xuICAgICAgICBicmVha1xuICAg
ICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gdmFsXG59XG5cbnZhciBsZW47XG52YXIgc3RyO1xu
dmFyIGNocjtcbnZhciBpbmRleCQxO1xudmFyIGV4cHJlc3Npb25Qb3M7XG52YXIgZXhwcmVzc2lv
bkVuZFBvcztcblxuLyoqXG4gKiBwYXJzZSBkaXJlY3RpdmUgbW9kZWwgdG8gZG8gdGhlIGFycmF5
IHVwZGF0ZSB0cmFuc2Zvcm0uIGFbaWR4XSA9IHZhbCA9PiAkJGEuc3BsaWNlKCQkaWR4LCAxLCB2
YWwpXG4gKlxuICogZm9yIGxvb3AgcG9zc2libGUgY2FzZXM6XG4gKlxuICogLSB0ZXN0XG4gKiAt
IHRlc3RbaWR4XVxuICogLSB0ZXN0W3Rlc3QxW2lkeF1dXG4gKiAtIHRlc3RbXCJhXCJdW2lkeF1c
biAqIC0geHh4LnRlc3RbYVthXS50ZXN0MVtpZHhdXVxuICogLSB0ZXN0Lnh4eC5hW1wiYXNhXCJd
W3Rlc3QxW2lkeF1dXG4gKlxuICovXG5cbmZ1bmN0aW9uIHBhcnNlTW9kZWwgKHZhbCkge1xuICBz
dHIgPSB2YWw7XG4gIGxlbiA9IHN0ci5sZW5ndGg7XG4gIGluZGV4JDEgPSBleHByZXNzaW9uUG9z
ID0gZXhwcmVzc2lvbkVuZFBvcyA9IDA7XG5cbiAgaWYgKHZhbC5pbmRleE9mKCdbJykgPCAwIHx8
IHZhbC5sYXN0SW5kZXhPZignXScpIDwgbGVuIC0gMSkge1xuICAgIHJldHVybiB7XG4gICAgICBl
eHA6IHZhbCxcbiAgICAgIGlkeDogbnVsbFxuICAgIH1cbiAgfVxuXG4gIHdoaWxlICghZW9mKCkp
IHtcbiAgICBjaHIgPSBuZXh0KCk7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAg
aWYgKGlzU3RyaW5nU3RhcnQoY2hyKSkge1xuICAgICAgcGFyc2VTdHJpbmcoY2hyKTtcbiAgICB9
IGVsc2UgaWYgKGNociA9PT0gMHg1Qikge1xuICAgICAgcGFyc2VCcmFja2V0KGNocik7XG4gICAg
fVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBleHA6IHZhbC5zdWJzdHJpbmcoMCwgZXhwcmVzc2lv
blBvcyksXG4gICAgaWR4OiB2YWwuc3Vic3RyaW5nKGV4cHJlc3Npb25Qb3MgKyAxLCBleHByZXNz
aW9uRW5kUG9zKVxuICB9XG59XG5cbmZ1bmN0aW9uIG5leHQgKCkge1xuICByZXR1cm4gc3RyLmNo
YXJDb2RlQXQoKytpbmRleCQxKVxufVxuXG5mdW5jdGlvbiBlb2YgKCkge1xuICByZXR1cm4gaW5k
ZXgkMSA+PSBsZW5cbn1cblxuZnVuY3Rpb24gaXNTdHJpbmdTdGFydCAoY2hyKSB7XG4gIHJldHVy
biBjaHIgPT09IDB4MjIgfHwgY2hyID09PSAweDI3XG59XG5cbmZ1bmN0aW9uIHBhcnNlQnJhY2tl
dCAoY2hyKSB7XG4gIHZhciBpbkJyYWNrZXQgPSAxO1xuICBleHByZXNzaW9uUG9zID0gaW5kZXgk
MTtcbiAgd2hpbGUgKCFlb2YoKSkge1xuICAgIGNociA9IG5leHQoKTtcbiAgICBpZiAoaXNTdHJp
bmdTdGFydChjaHIpKSB7XG4gICAgICBwYXJzZVN0cmluZyhjaHIpO1xuICAgICAgY29udGludWVc
biAgICB9XG4gICAgaWYgKGNociA9PT0gMHg1QikgeyBpbkJyYWNrZXQrKzsgfVxuICAgIGlmIChj
aHIgPT09IDB4NUQpIHsgaW5CcmFja2V0LS07IH1cbiAgICBpZiAoaW5CcmFja2V0ID09PSAwKSB7
XG4gICAgICBleHByZXNzaW9uRW5kUG9zID0gaW5kZXgkMTtcbiAgICAgIGJyZWFrXG4gICAgfVxu
ICB9XG59XG5cbmZ1bmN0aW9uIHBhcnNlU3RyaW5nIChjaHIpIHtcbiAgdmFyIHN0cmluZ1F1b3Rl
ID0gY2hyO1xuICB3aGlsZSAoIWVvZigpKSB7XG4gICAgY2hyID0gbmV4dCgpO1xuICAgIGlmIChj
aHIgPT09IHN0cmluZ1F1b3RlKSB7XG4gICAgICBicmVha1xuICAgIH1cbiAgfVxufVxuXG4vKiAg
Ki9cblxudmFyIGRpclJFID0gL152LXxeQHxeOi87XG52YXIgZm9yQWxpYXNSRSA9IC8oLio/KVxc
cysoPzppbnxvZilcXHMrKC4qKS87XG52YXIgZm9ySXRlcmF0b3JSRSA9IC9cXCgoXFx7W159XSpc
XH18W14sXSopLChbXixdKikoPzosKFteLF0qKSk/XFwpLztcbnZhciBiaW5kUkUgPSAvXjp8XnYt
YmluZDovO1xudmFyIG9uUkUgPSAvXkB8XnYtb246LztcbnZhciBhcmdSRSA9IC86KC4qKSQvO1xu
dmFyIG1vZGlmaWVyUkUgPSAvXFwuW14uXSsvZztcblxudmFyIGRlY29kZUhUTUxDYWNoZWQgPSBj
YWNoZWQoZGVjb2RlKTtcblxuLy8gY29uZmlndXJhYmxlIHN0YXRlXG52YXIgd2FybiQxO1xudmFy
IHBsYXRmb3JtR2V0VGFnTmFtZXNwYWNlO1xudmFyIHBsYXRmb3JtTXVzdFVzZVByb3A7XG52YXIg
cGxhdGZvcm1Jc1ByZVRhZztcbnZhciBwcmVUcmFuc2Zvcm1zO1xudmFyIHRyYW5zZm9ybXM7XG52
YXIgcG9zdFRyYW5zZm9ybXM7XG52YXIgZGVsaW1pdGVycztcblxuLyoqXG4gKiBDb252ZXJ0IEhU
TUwgc3RyaW5nIHRvIEFTVC5cbiAqL1xuZnVuY3Rpb24gcGFyc2UgKFxuICB0ZW1wbGF0ZSxcbiAg
b3B0aW9uc1xuKSB7XG4gIHdhcm4kMSA9IG9wdGlvbnMud2FybiB8fCBiYXNlV2FybjtcbiAgcGxh
dGZvcm1HZXRUYWdOYW1lc3BhY2UgPSBvcHRpb25zLmdldFRhZ05hbWVzcGFjZSB8fCBubztcbiAg
cGxhdGZvcm1NdXN0VXNlUHJvcCA9IG9wdGlvbnMubXVzdFVzZVByb3AgfHwgbm87XG4gIHBsYXRm
b3JtSXNQcmVUYWcgPSBvcHRpb25zLmlzUHJlVGFnIHx8IG5vO1xuICBwcmVUcmFuc2Zvcm1zID0g
cGx1Y2tNb2R1bGVGdW5jdGlvbihvcHRpb25zLm1vZHVsZXMsICdwcmVUcmFuc2Zvcm1Ob2RlJyk7
XG4gIHRyYW5zZm9ybXMgPSBwbHVja01vZHVsZUZ1bmN0aW9uKG9wdGlvbnMubW9kdWxlcywgJ3Ry
YW5zZm9ybU5vZGUnKTtcbiAgcG9zdFRyYW5zZm9ybXMgPSBwbHVja01vZHVsZUZ1bmN0aW9uKG9w
dGlvbnMubW9kdWxlcywgJ3Bvc3RUcmFuc2Zvcm1Ob2RlJyk7XG4gIGRlbGltaXRlcnMgPSBvcHRp
b25zLmRlbGltaXRlcnM7XG4gIHZhciBzdGFjayA9IFtdO1xuICB2YXIgcHJlc2VydmVXaGl0ZXNw
YWNlID0gb3B0aW9ucy5wcmVzZXJ2ZVdoaXRlc3BhY2UgIT09IGZhbHNlO1xuICB2YXIgcm9vdDtc
biAgdmFyIGN1cnJlbnRQYXJlbnQ7XG4gIHZhciBpblZQcmUgPSBmYWxzZTtcbiAgdmFyIGluUHJl
ID0gZmFsc2U7XG4gIHZhciB3YXJuZWQgPSBmYWxzZTtcbiAgcGFyc2VIVE1MKHRlbXBsYXRlLCB7
XG4gICAgZXhwZWN0SFRNTDogb3B0aW9ucy5leHBlY3RIVE1MLFxuICAgIGlzVW5hcnlUYWc6IG9w
dGlvbnMuaXNVbmFyeVRhZyxcbiAgICBzaG91bGREZWNvZGVOZXdsaW5lczogb3B0aW9ucy5zaG91
bGREZWNvZGVOZXdsaW5lcyxcbiAgICBzdGFydDogZnVuY3Rpb24gc3RhcnQgKHRhZywgYXR0cnMs
IHVuYXJ5KSB7XG4gICAgICAvLyBjaGVjayBuYW1lc3BhY2UuXG4gICAgICAvLyBpbmhlcml0IHBh
cmVudCBucyBpZiB0aGVyZSBpcyBvbmVcbiAgICAgIHZhciBucyA9IChjdXJyZW50UGFyZW50ICYm
IGN1cnJlbnRQYXJlbnQubnMpIHx8IHBsYXRmb3JtR2V0VGFnTmFtZXNwYWNlKHRhZyk7XG5cbiAg
ICAgIC8vIGhhbmRsZSBJRSBzdmcgYnVnXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9c
biAgICAgIGlmIChpc0lFICYmIG5zID09PSAnc3ZnJykge1xuICAgICAgICBhdHRycyA9IGd1YXJk
SUVTVkdCdWcoYXR0cnMpO1xuICAgICAgfVxuXG4gICAgICB2YXIgZWxlbWVudCA9IHtcbiAgICAg
ICAgdHlwZTogMSxcbiAgICAgICAgdGFnOiB0YWcsXG4gICAgICAgIGF0dHJzTGlzdDogYXR0cnMs
XG4gICAgICAgIGF0dHJzTWFwOiBtYWtlQXR0cnNNYXAoYXR0cnMpLFxuICAgICAgICBwYXJlbnQ6
IGN1cnJlbnRQYXJlbnQsXG4gICAgICAgIGNoaWxkcmVuOiBbXVxuICAgICAgfTtcbiAgICAgIGlm
IChucykge1xuICAgICAgICBlbGVtZW50Lm5zID0gbnM7XG4gICAgICB9XG5cbiAgICAgIGlmIChp
c0ZvcmJpZGRlblRhZyhlbGVtZW50KSAmJiAhaXNTZXJ2ZXJSZW5kZXJpbmcoKSkge1xuICAgICAg
ICBlbGVtZW50LmZvcmJpZGRlbiA9IHRydWU7XG4gICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicgJiYgd2FybiQxKFxuICAgICAgICAgICdUZW1wbGF0ZXMgc2hvdWxk
IG9ubHkgYmUgcmVzcG9uc2libGUgZm9yIG1hcHBpbmcgdGhlIHN0YXRlIHRvIHRoZSAnICtcbiAg
ICAgICAgICAnVUkuIEF2b2lkIHBsYWNpbmcgdGFncyB3aXRoIHNpZGUtZWZmZWN0cyBpbiB5b3Vy
IHRlbXBsYXRlcywgc3VjaCBhcyAnICtcbiAgICAgICAgICBcIjxcIiArIHRhZyArIFwiPi5cIlxu
ICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICAvLyBhcHBseSBwcmUtdHJhbnNmb3Jtc1xuICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcmVUcmFuc2Zvcm1zLmxlbmd0aDsgaSsrKSB7XG4gICAg
ICAgIHByZVRyYW5zZm9ybXNbaV0oZWxlbWVudCwgb3B0aW9ucyk7XG4gICAgICB9XG5cbiAgICAg
IGlmICghaW5WUHJlKSB7XG4gICAgICAgIHByb2Nlc3NQcmUoZWxlbWVudCk7XG4gICAgICAgIGlm
IChlbGVtZW50LnByZSkge1xuICAgICAgICAgIGluVlByZSA9IHRydWU7XG4gICAgICAgIH1cbiAg
ICAgIH1cbiAgICAgIGlmIChwbGF0Zm9ybUlzUHJlVGFnKGVsZW1lbnQudGFnKSkge1xuICAgICAg
ICBpblByZSA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoaW5WUHJlKSB7XG4gICAgICAgIHBy
b2Nlc3NSYXdBdHRycyhlbGVtZW50KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHByb2Nlc3NG
b3IoZWxlbWVudCk7XG4gICAgICAgIHByb2Nlc3NJZihlbGVtZW50KTtcbiAgICAgICAgcHJvY2Vz
c09uY2UoZWxlbWVudCk7XG4gICAgICAgIHByb2Nlc3NLZXkoZWxlbWVudCk7XG5cbiAgICAgICAg
Ly8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhpcyBpcyBhIHBsYWluIGVsZW1lbnQgYWZ0ZXJcbiAgICAg
ICAgLy8gcmVtb3Zpbmcgc3RydWN0dXJhbCBhdHRyaWJ1dGVzXG4gICAgICAgIGVsZW1lbnQucGxh
aW4gPSAhZWxlbWVudC5rZXkgJiYgIWF0dHJzLmxlbmd0aDtcblxuICAgICAgICBwcm9jZXNzUmVm
KGVsZW1lbnQpO1xuICAgICAgICBwcm9jZXNzU2xvdChlbGVtZW50KTtcbiAgICAgICAgcHJvY2Vz
c0NvbXBvbmVudChlbGVtZW50KTtcbiAgICAgICAgZm9yICh2YXIgaSQxID0gMDsgaSQxIDwgdHJh
bnNmb3Jtcy5sZW5ndGg7IGkkMSsrKSB7XG4gICAgICAgICAgdHJhbnNmb3Jtc1tpJDFdKGVsZW1l
bnQsIG9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgICAgIHByb2Nlc3NBdHRycyhlbGVtZW50KTtc
biAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gY2hlY2tSb290Q29uc3RyYWludHMgKGVsKSB7XG4g
ICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmICF3YXJu
ZWQpIHtcbiAgICAgICAgICBpZiAoZWwudGFnID09PSAnc2xvdCcgfHwgZWwudGFnID09PSAndGVt
cGxhdGUnKSB7XG4gICAgICAgICAgICB3YXJuZWQgPSB0cnVlO1xuICAgICAgICAgICAgd2FybiQx
KFxuICAgICAgICAgICAgICBcIkNhbm5vdCB1c2UgPFwiICsgKGVsLnRhZykgKyBcIj4gYXMgY29t
cG9uZW50IHJvb3QgZWxlbWVudCBiZWNhdXNlIGl0IG1heSBcIiArXG4gICAgICAgICAgICAgICdj
b250YWluIG11bHRpcGxlIG5vZGVzOlxcbicgKyB0ZW1wbGF0ZVxuICAgICAgICAgICAgKTtcbiAg
ICAgICAgICB9XG4gICAgICAgICAgaWYgKGVsLmF0dHJzTWFwLmhhc093blByb3BlcnR5KCd2LWZv
cicpKSB7XG4gICAgICAgICAgICB3YXJuZWQgPSB0cnVlO1xuICAgICAgICAgICAgd2FybiQxKFxu
ICAgICAgICAgICAgICAnQ2Fubm90IHVzZSB2LWZvciBvbiBzdGF0ZWZ1bCBjb21wb25lbnQgcm9v
dCBlbGVtZW50IGJlY2F1c2UgJyArXG4gICAgICAgICAgICAgICdpdCByZW5kZXJzIG11bHRpcGxl
IGVsZW1lbnRzOlxcbicgKyB0ZW1wbGF0ZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4g
ICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gdHJlZSBtYW5hZ2VtZW50XG4gICAgICBpZiAo
IXJvb3QpIHtcbiAgICAgICAgcm9vdCA9IGVsZW1lbnQ7XG4gICAgICAgIGNoZWNrUm9vdENvbnN0
cmFpbnRzKHJvb3QpO1xuICAgICAgfSBlbHNlIGlmICghc3RhY2subGVuZ3RoKSB7XG4gICAgICAg
IC8vIGFsbG93IHJvb3QgZWxlbWVudHMgd2l0aCB2LWlmLCB2LWVsc2UtaWYgYW5kIHYtZWxzZVxu
ICAgICAgICBpZiAocm9vdC5pZiAmJiAoZWxlbWVudC5lbHNlaWYgfHwgZWxlbWVudC5lbHNlKSkg
e1xuICAgICAgICAgIGNoZWNrUm9vdENvbnN0cmFpbnRzKGVsZW1lbnQpO1xuICAgICAgICAgIGFk
ZElmQ29uZGl0aW9uKHJvb3QsIHtcbiAgICAgICAgICAgIGV4cDogZWxlbWVudC5lbHNlaWYsXG4g
ICAgICAgICAgICBibG9jazogZWxlbWVudFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Ug
aWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgIXdhcm5lZCkge1xu
ICAgICAgICAgIHdhcm5lZCA9IHRydWU7XG4gICAgICAgICAgd2FybiQxKFxuICAgICAgICAgICAg
XCJDb21wb25lbnQgdGVtcGxhdGUgc2hvdWxkIGNvbnRhaW4gZXhhY3RseSBvbmUgcm9vdCBlbGVt
ZW50OlwiICtcbiAgICAgICAgICAgIFwiXFxuXFxuXCIgKyB0ZW1wbGF0ZSArIFwiXFxuXFxuXCIg
K1xuICAgICAgICAgICAgXCJJZiB5b3UgYXJlIHVzaW5nIHYtaWYgb24gbXVsdGlwbGUgZWxlbWVu
dHMsIFwiICtcbiAgICAgICAgICAgIFwidXNlIHYtZWxzZS1pZiB0byBjaGFpbiB0aGVtIGluc3Rl
YWQuXCJcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoY3VycmVu
dFBhcmVudCAmJiAhZWxlbWVudC5mb3JiaWRkZW4pIHtcbiAgICAgICAgaWYgKGVsZW1lbnQuZWxz
ZWlmIHx8IGVsZW1lbnQuZWxzZSkge1xuICAgICAgICAgIHByb2Nlc3NJZkNvbmRpdGlvbnMoZWxl
bWVudCwgY3VycmVudFBhcmVudCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5zbG90U2Nv
cGUpIHsgLy8gc2NvcGVkIHNsb3RcbiAgICAgICAgICBjdXJyZW50UGFyZW50LnBsYWluID0gZmFs
c2U7XG4gICAgICAgICAgdmFyIG5hbWUgPSBlbGVtZW50LnNsb3RUYXJnZXQgfHwgJ2RlZmF1bHQn
OyhjdXJyZW50UGFyZW50LnNjb3BlZFNsb3RzIHx8IChjdXJyZW50UGFyZW50LnNjb3BlZFNsb3Rz
ID0ge30pKVtuYW1lXSA9IGVsZW1lbnQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY3Vy
cmVudFBhcmVudC5jaGlsZHJlbi5wdXNoKGVsZW1lbnQpO1xuICAgICAgICAgIGVsZW1lbnQucGFy
ZW50ID0gY3VycmVudFBhcmVudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKCF1bmFy
eSkge1xuICAgICAgICBjdXJyZW50UGFyZW50ID0gZWxlbWVudDtcbiAgICAgICAgc3RhY2sucHVz
aChlbGVtZW50KTtcbiAgICAgIH1cbiAgICAgIC8vIGFwcGx5IHBvc3QtdHJhbnNmb3Jtc1xuICAg
ICAgZm9yICh2YXIgaSQyID0gMDsgaSQyIDwgcG9zdFRyYW5zZm9ybXMubGVuZ3RoOyBpJDIrKykg
e1xuICAgICAgICBwb3N0VHJhbnNmb3Jtc1tpJDJdKGVsZW1lbnQsIG9wdGlvbnMpO1xuICAgICAg
fVxuICAgIH0sXG5cbiAgICBlbmQ6IGZ1bmN0aW9uIGVuZCAoKSB7XG4gICAgICAvLyByZW1vdmUg
dHJhaWxpbmcgd2hpdGVzcGFjZVxuICAgICAgdmFyIGVsZW1lbnQgPSBzdGFja1tzdGFjay5sZW5n
dGggLSAxXTtcbiAgICAgIHZhciBsYXN0Tm9kZSA9IGVsZW1lbnQuY2hpbGRyZW5bZWxlbWVudC5j
aGlsZHJlbi5sZW5ndGggLSAxXTtcbiAgICAgIGlmIChsYXN0Tm9kZSAmJiBsYXN0Tm9kZS50eXBl
ID09PSAzICYmIGxhc3ROb2RlLnRleHQgPT09ICcgJykge1xuICAgICAgICBlbGVtZW50LmNoaWxk
cmVuLnBvcCgpO1xuICAgICAgfVxuICAgICAgLy8gcG9wIHN0YWNrXG4gICAgICBzdGFjay5sZW5n
dGggLT0gMTtcbiAgICAgIGN1cnJlbnRQYXJlbnQgPSBzdGFja1tzdGFjay5sZW5ndGggLSAxXTtc
biAgICAgIC8vIGNoZWNrIHByZSBzdGF0ZVxuICAgICAgaWYgKGVsZW1lbnQucHJlKSB7XG4gICAg
ICAgIGluVlByZSA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKHBsYXRmb3JtSXNQcmVUYWco
ZWxlbWVudC50YWcpKSB7XG4gICAgICAgIGluUHJlID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSxc
blxuICAgIGNoYXJzOiBmdW5jdGlvbiBjaGFycyAodGV4dCkge1xuICAgICAgaWYgKCFjdXJyZW50
UGFyZW50KSB7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nICYmICF3YXJuZWQgJiYgdGV4dCA9PT0gdGVtcGxhdGUpIHtcbiAgICAgICAgICB3YXJuZWQg
PSB0cnVlO1xuICAgICAgICAgIHdhcm4kMShcbiAgICAgICAgICAgICdDb21wb25lbnQgdGVtcGxh
dGUgcmVxdWlyZXMgYSByb290IGVsZW1lbnQsIHJhdGhlciB0aGFuIGp1c3QgdGV4dDpcXG5cXG4n
ICsgdGVtcGxhdGVcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVyblxuICAg
ICAgfVxuICAgICAgLy8gSUUgdGV4dGFyZWEgcGxhY2Vob2xkZXIgYnVnXG4gICAgICAvKiBpc3Rh
bmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIGlmIChpc0lFICYmXG4gICAgICAgICAgY3VycmVudFBh
cmVudC50YWcgPT09ICd0ZXh0YXJlYScgJiZcbiAgICAgICAgICBjdXJyZW50UGFyZW50LmF0dHJz
TWFwLnBsYWNlaG9sZGVyID09PSB0ZXh0KSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAg
ICAgdGV4dCA9IGluUHJlIHx8IHRleHQudHJpbSgpXG4gICAgICAgID8gZGVjb2RlSFRNTENhY2hl
ZCh0ZXh0KVxuICAgICAgICAvLyBvbmx5IHByZXNlcnZlIHdoaXRlc3BhY2UgaWYgaXRzIG5vdCBy
aWdodCBhZnRlciBhIHN0YXJ0aW5nIHRhZ1xuICAgICAgICA6IHByZXNlcnZlV2hpdGVzcGFjZSAm
JiBjdXJyZW50UGFyZW50LmNoaWxkcmVuLmxlbmd0aCA/ICcgJyA6ICcnO1xuICAgICAgaWYgKHRl
eHQpIHtcbiAgICAgICAgdmFyIGV4cHJlc3Npb247XG4gICAgICAgIGlmICghaW5WUHJlICYmIHRl
eHQgIT09ICcgJyAmJiAoZXhwcmVzc2lvbiA9IHBhcnNlVGV4dCh0ZXh0LCBkZWxpbWl0ZXJzKSkp
IHtcbiAgICAgICAgICBjdXJyZW50UGFyZW50LmNoaWxkcmVuLnB1c2goe1xuICAgICAgICAgICAg
dHlwZTogMixcbiAgICAgICAgICAgIGV4cHJlc3Npb246IGV4cHJlc3Npb24sXG4gICAgICAgICAg
ICB0ZXh0OiB0ZXh0XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAg
Y3VycmVudFBhcmVudC5jaGlsZHJlbi5wdXNoKHtcbiAgICAgICAgICAgIHR5cGU6IDMsXG4gICAg
ICAgICAgICB0ZXh0OiB0ZXh0XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAg
ICB9XG4gIH0pO1xuICByZXR1cm4gcm9vdFxufVxuXG5mdW5jdGlvbiBwcm9jZXNzUHJlIChlbCkg
e1xuICBpZiAoZ2V0QW5kUmVtb3ZlQXR0cihlbCwgJ3YtcHJlJykgIT0gbnVsbCkge1xuICAgIGVs
LnByZSA9IHRydWU7XG4gIH1cbn1cblxuZnVuY3Rpb24gcHJvY2Vzc1Jhd0F0dHJzIChlbCkge1xu
ICB2YXIgbCA9IGVsLmF0dHJzTGlzdC5sZW5ndGg7XG4gIGlmIChsKSB7XG4gICAgdmFyIGF0dHJz
ID0gZWwuYXR0cnMgPSBuZXcgQXJyYXkobCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBp
KyspIHtcbiAgICAgIGF0dHJzW2ldID0ge1xuICAgICAgICBuYW1lOiBlbC5hdHRyc0xpc3RbaV0u
bmFtZSxcbiAgICAgICAgdmFsdWU6IEpTT04uc3RyaW5naWZ5KGVsLmF0dHJzTGlzdFtpXS52YWx1
ZSlcbiAgICAgIH07XG4gICAgfVxuICB9IGVsc2UgaWYgKCFlbC5wcmUpIHtcbiAgICAvLyBub24g
cm9vdCBub2RlIGluIHByZSBibG9ja3Mgd2l0aCBubyBhdHRyaWJ1dGVzXG4gICAgZWwucGxhaW4g
PSB0cnVlO1xuICB9XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NLZXkgKGVsKSB7XG4gIHZhciBleHAg
PSBnZXRCaW5kaW5nQXR0cihlbCwgJ2tleScpO1xuICBpZiAoZXhwKSB7XG4gICAgaWYgKHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgZWwudGFnID09PSAndGVtcGxhdGUn
KSB7XG4gICAgICB3YXJuJDEoXCI8dGVtcGxhdGU+IGNhbm5vdCBiZSBrZXllZC4gUGxhY2UgdGhl
IGtleSBvbiByZWFsIGVsZW1lbnRzIGluc3RlYWQuXCIpO1xuICAgIH1cbiAgICBlbC5rZXkgPSBl
eHA7XG4gIH1cbn1cblxuZnVuY3Rpb24gcHJvY2Vzc1JlZiAoZWwpIHtcbiAgdmFyIHJlZiA9IGdl
dEJpbmRpbmdBdHRyKGVsLCAncmVmJyk7XG4gIGlmIChyZWYpIHtcbiAgICBlbC5yZWYgPSByZWY7
XG4gICAgZWwucmVmSW5Gb3IgPSBjaGVja0luRm9yKGVsKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBw
cm9jZXNzRm9yIChlbCkge1xuICB2YXIgZXhwO1xuICBpZiAoKGV4cCA9IGdldEFuZFJlbW92ZUF0
dHIoZWwsICd2LWZvcicpKSkge1xuICAgIHZhciBpbk1hdGNoID0gZXhwLm1hdGNoKGZvckFsaWFz
UkUpO1xuICAgIGlmICghaW5NYXRjaCkge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09
ICdwcm9kdWN0aW9uJyAmJiB3YXJuJDEoXG4gICAgICAgIChcIkludmFsaWQgdi1mb3IgZXhwcmVz
c2lvbjogXCIgKyBleHApXG4gICAgICApO1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGVsLmZv
ciA9IGluTWF0Y2hbMl0udHJpbSgpO1xuICAgIHZhciBhbGlhcyA9IGluTWF0Y2hbMV0udHJpbSgp
O1xuICAgIHZhciBpdGVyYXRvck1hdGNoID0gYWxpYXMubWF0Y2goZm9ySXRlcmF0b3JSRSk7XG4g
ICAgaWYgKGl0ZXJhdG9yTWF0Y2gpIHtcbiAgICAgIGVsLmFsaWFzID0gaXRlcmF0b3JNYXRjaFsx
XS50cmltKCk7XG4gICAgICBlbC5pdGVyYXRvcjEgPSBpdGVyYXRvck1hdGNoWzJdLnRyaW0oKTtc
biAgICAgIGlmIChpdGVyYXRvck1hdGNoWzNdKSB7XG4gICAgICAgIGVsLml0ZXJhdG9yMiA9IGl0
ZXJhdG9yTWF0Y2hbM10udHJpbSgpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBlbC5h
bGlhcyA9IGFsaWFzO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBwcm9jZXNzSWYgKGVsKSB7
XG4gIHZhciBleHAgPSBnZXRBbmRSZW1vdmVBdHRyKGVsLCAndi1pZicpO1xuICBpZiAoZXhwKSB7
XG4gICAgZWwuaWYgPSBleHA7XG4gICAgYWRkSWZDb25kaXRpb24oZWwsIHtcbiAgICAgIGV4cDog
ZXhwLFxuICAgICAgYmxvY2s6IGVsXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKGdldEFu
ZFJlbW92ZUF0dHIoZWwsICd2LWVsc2UnKSAhPSBudWxsKSB7XG4gICAgICBlbC5lbHNlID0gdHJ1
ZTtcbiAgICB9XG4gICAgdmFyIGVsc2VpZiA9IGdldEFuZFJlbW92ZUF0dHIoZWwsICd2LWVsc2Ut
aWYnKTtcbiAgICBpZiAoZWxzZWlmKSB7XG4gICAgICBlbC5lbHNlaWYgPSBlbHNlaWY7XG4gICAg
fVxuICB9XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NJZkNvbmRpdGlvbnMgKGVsLCBwYXJlbnQpIHtc
biAgdmFyIHByZXYgPSBmaW5kUHJldkVsZW1lbnQocGFyZW50LmNoaWxkcmVuKTtcbiAgaWYgKHBy
ZXYgJiYgcHJldi5pZikge1xuICAgIGFkZElmQ29uZGl0aW9uKHByZXYsIHtcbiAgICAgIGV4cDog
ZWwuZWxzZWlmLFxuICAgICAgYmxvY2s6IGVsXG4gICAgfSk7XG4gIH0gZWxzZSBpZiAocHJvY2Vz
cy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHdhcm4kMShcbiAgICAgIFwi
di1cIiArIChlbC5lbHNlaWYgPyAoJ2Vsc2UtaWY9XCInICsgZWwuZWxzZWlmICsgJ1wiJykgOiAn
ZWxzZScpICsgXCIgXCIgK1xuICAgICAgXCJ1c2VkIG9uIGVsZW1lbnQgPFwiICsgKGVsLnRhZykg
KyBcIj4gd2l0aG91dCBjb3JyZXNwb25kaW5nIHYtaWYuXCJcbiAgICApO1xuICB9XG59XG5cbmZ1
bmN0aW9uIGFkZElmQ29uZGl0aW9uIChlbCwgY29uZGl0aW9uKSB7XG4gIGlmICghZWwuY29uZGl0
aW9ucykge1xuICAgIGVsLmNvbmRpdGlvbnMgPSBbXTtcbiAgfVxuICBlbC5jb25kaXRpb25zLnB1
c2goY29uZGl0aW9uKTtcbn1cblxuZnVuY3Rpb24gcHJvY2Vzc09uY2UgKGVsKSB7XG4gIHZhciBv
bmNlID0gZ2V0QW5kUmVtb3ZlQXR0cihlbCwgJ3Ytb25jZScpO1xuICBpZiAob25jZSAhPSBudWxs
KSB7XG4gICAgZWwub25jZSA9IHRydWU7XG4gIH1cbn1cblxuZnVuY3Rpb24gcHJvY2Vzc1Nsb3Qg
KGVsKSB7XG4gIGlmIChlbC50YWcgPT09ICdzbG90Jykge1xuICAgIGVsLnNsb3ROYW1lID0gZ2V0
QmluZGluZ0F0dHIoZWwsICduYW1lJyk7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9
PSAncHJvZHVjdGlvbicgJiYgZWwua2V5KSB7XG4gICAgICB3YXJuJDEoXG4gICAgICAgIFwiYGtl
eWAgZG9lcyBub3Qgd29yayBvbiA8c2xvdD4gYmVjYXVzZSBzbG90cyBhcmUgYWJzdHJhY3Qgb3V0
bGV0cyBcIiArXG4gICAgICAgIFwiYW5kIGNhbiBwb3NzaWJseSBleHBhbmQgaW50byBtdWx0aXBs
ZSBlbGVtZW50cy4gXCIgK1xuICAgICAgICBcIlVzZSB0aGUga2V5IG9uIGEgd3JhcHBpbmcgZWxl
bWVudCBpbnN0ZWFkLlwiXG4gICAgICApO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB2YXIgc2xv
dFRhcmdldCA9IGdldEJpbmRpbmdBdHRyKGVsLCAnc2xvdCcpO1xuICAgIGlmIChzbG90VGFyZ2V0
KSB7XG4gICAgICBlbC5zbG90VGFyZ2V0ID0gc2xvdFRhcmdldCA9PT0gJ1wiXCInID8gJ1wiZGVm
YXVsdFwiJyA6IHNsb3RUYXJnZXQ7XG4gICAgfVxuICAgIGlmIChlbC50YWcgPT09ICd0ZW1wbGF0
ZScpIHtcbiAgICAgIGVsLnNsb3RTY29wZSA9IGdldEFuZFJlbW92ZUF0dHIoZWwsICdzY29wZScp
O1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBwcm9jZXNzQ29tcG9uZW50IChlbCkge1xuICB2
YXIgYmluZGluZztcbiAgaWYgKChiaW5kaW5nID0gZ2V0QmluZGluZ0F0dHIoZWwsICdpcycpKSkg
e1xuICAgIGVsLmNvbXBvbmVudCA9IGJpbmRpbmc7XG4gIH1cbiAgaWYgKGdldEFuZFJlbW92ZUF0
dHIoZWwsICdpbmxpbmUtdGVtcGxhdGUnKSAhPSBudWxsKSB7XG4gICAgZWwuaW5saW5lVGVtcGxh
dGUgPSB0cnVlO1xuICB9XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NBdHRycyAoZWwpIHtcbiAgdmFy
IGxpc3QgPSBlbC5hdHRyc0xpc3Q7XG4gIHZhciBpLCBsLCBuYW1lLCByYXdOYW1lLCB2YWx1ZSwg
YXJnLCBtb2RpZmllcnMsIGlzUHJvcDtcbiAgZm9yIChpID0gMCwgbCA9IGxpc3QubGVuZ3RoOyBp
IDwgbDsgaSsrKSB7XG4gICAgbmFtZSA9IHJhd05hbWUgPSBsaXN0W2ldLm5hbWU7XG4gICAgdmFs
dWUgPSBsaXN0W2ldLnZhbHVlO1xuICAgIGlmIChkaXJSRS50ZXN0KG5hbWUpKSB7XG4gICAgICAv
LyBtYXJrIGVsZW1lbnQgYXMgZHluYW1pY1xuICAgICAgZWwuaGFzQmluZGluZ3MgPSB0cnVlO1xu
ICAgICAgLy8gbW9kaWZpZXJzXG4gICAgICBtb2RpZmllcnMgPSBwYXJzZU1vZGlmaWVycyhuYW1l
KTtcbiAgICAgIGlmIChtb2RpZmllcnMpIHtcbiAgICAgICAgbmFtZSA9IG5hbWUucmVwbGFjZSht
b2RpZmllclJFLCAnJyk7XG4gICAgICB9XG4gICAgICBpZiAoYmluZFJFLnRlc3QobmFtZSkpIHsg
Ly8gdi1iaW5kXG4gICAgICAgIG5hbWUgPSBuYW1lLnJlcGxhY2UoYmluZFJFLCAnJyk7XG4gICAg
ICAgIHZhbHVlID0gcGFyc2VGaWx0ZXJzKHZhbHVlKTtcbiAgICAgICAgaWYgKG1vZGlmaWVycykg
e1xuICAgICAgICAgIGlmIChtb2RpZmllcnMucHJvcCkge1xuICAgICAgICAgICAgaXNQcm9wID0g
dHJ1ZTtcbiAgICAgICAgICAgIG5hbWUgPSBjYW1lbGl6ZShuYW1lKTtcbiAgICAgICAgICAgIGlm
IChuYW1lID09PSAnaW5uZXJIdG1sJykgeyBuYW1lID0gJ2lubmVySFRNTCc7IH1cbiAgICAgICAg
ICB9XG4gICAgICAgICAgaWYgKG1vZGlmaWVycy5jYW1lbCkge1xuICAgICAgICAgICAgbmFtZSA9
IGNhbWVsaXplKG5hbWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNQ
cm9wIHx8IHBsYXRmb3JtTXVzdFVzZVByb3AoZWwudGFnLCBuYW1lKSkge1xuICAgICAgICAgIGFk
ZFByb3AoZWwsIG5hbWUsIHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhZGRB
dHRyKGVsLCBuYW1lLCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAob25SRS50
ZXN0KG5hbWUpKSB7IC8vIHYtb25cbiAgICAgICAgbmFtZSA9IG5hbWUucmVwbGFjZShvblJFLCAn
Jyk7XG4gICAgICAgIGFkZEhhbmRsZXIoZWwsIG5hbWUsIHZhbHVlLCBtb2RpZmllcnMpO1xuICAg
ICAgfSBlbHNlIHsgLy8gbm9ybWFsIGRpcmVjdGl2ZXNcbiAgICAgICAgbmFtZSA9IG5hbWUucmVw
bGFjZShkaXJSRSwgJycpO1xuICAgICAgICAvLyBwYXJzZSBhcmdcbiAgICAgICAgdmFyIGFyZ01h
dGNoID0gbmFtZS5tYXRjaChhcmdSRSk7XG4gICAgICAgIGlmIChhcmdNYXRjaCAmJiAoYXJnID0g
YXJnTWF0Y2hbMV0pKSB7XG4gICAgICAgICAgbmFtZSA9IG5hbWUuc2xpY2UoMCwgLShhcmcubGVu
Z3RoICsgMSkpO1xuICAgICAgICB9XG4gICAgICAgIGFkZERpcmVjdGl2ZShlbCwgbmFtZSwgcmF3
TmFtZSwgdmFsdWUsIGFyZywgbW9kaWZpZXJzKTtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgbmFtZSA9PT0gJ21vZGVsJykge1xuICAgICAgICAg
IGNoZWNrRm9yQWxpYXNNb2RlbChlbCwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAg
fSBlbHNlIHtcbiAgICAgIC8vIGxpdGVyYWwgYXR0cmlidXRlXG4gICAgICBpZiAocHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICB2YXIgZXhwcmVzc2lvbiA9
IHBhcnNlVGV4dCh2YWx1ZSwgZGVsaW1pdGVycyk7XG4gICAgICAgIGlmIChleHByZXNzaW9uKSB7
XG4gICAgICAgICAgd2FybiQxKFxuICAgICAgICAgICAgbmFtZSArIFwiPVxcXCJcIiArIHZhbHVl
ICsgXCJcXFwiOiBcIiArXG4gICAgICAgICAgICAnSW50ZXJwb2xhdGlvbiBpbnNpZGUgYXR0cmli
dXRlcyBoYXMgYmVlbiByZW1vdmVkLiAnICtcbiAgICAgICAgICAgICdVc2Ugdi1iaW5kIG9yIHRo
ZSBjb2xvbiBzaG9ydGhhbmQgaW5zdGVhZC4gRm9yIGV4YW1wbGUsICcgK1xuICAgICAgICAgICAg
J2luc3RlYWQgb2YgPGRpdiBpZD1cInt7IHZhbCB9fVwiPiwgdXNlIDxkaXYgOmlkPVwidmFsXCI+
LidcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBhZGRBdHRyKGVsLCBu
YW1lLCBKU09OLnN0cmluZ2lmeSh2YWx1ZSkpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBj
aGVja0luRm9yIChlbCkge1xuICB2YXIgcGFyZW50ID0gZWw7XG4gIHdoaWxlIChwYXJlbnQpIHtc
biAgICBpZiAocGFyZW50LmZvciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxu
ICAgIH1cbiAgICBwYXJlbnQgPSBwYXJlbnQucGFyZW50O1xuICB9XG4gIHJldHVybiBmYWxzZVxu
fVxuXG5mdW5jdGlvbiBwYXJzZU1vZGlmaWVycyAobmFtZSkge1xuICB2YXIgbWF0Y2ggPSBuYW1l
Lm1hdGNoKG1vZGlmaWVyUkUpO1xuICBpZiAobWF0Y2gpIHtcbiAgICB2YXIgcmV0ID0ge307XG4g
ICAgbWF0Y2guZm9yRWFjaChmdW5jdGlvbiAobSkgeyByZXRbbS5zbGljZSgxKV0gPSB0cnVlOyB9
KTtcbiAgICByZXR1cm4gcmV0XG4gIH1cbn1cblxuZnVuY3Rpb24gbWFrZUF0dHJzTWFwIChhdHRy
cykge1xuICB2YXIgbWFwID0ge307XG4gIGZvciAodmFyIGkgPSAwLCBsID0gYXR0cnMubGVuZ3Ro
OyBpIDwgbDsgaSsrKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVj
dGlvbicgJiYgbWFwW2F0dHJzW2ldLm5hbWVdICYmICFpc0lFKSB7XG4gICAgICB3YXJuJDEoJ2R1
cGxpY2F0ZSBhdHRyaWJ1dGU6ICcgKyBhdHRyc1tpXS5uYW1lKTtcbiAgICB9XG4gICAgbWFwW2F0
dHJzW2ldLm5hbWVdID0gYXR0cnNbaV0udmFsdWU7XG4gIH1cbiAgcmV0dXJuIG1hcFxufVxuXG5m
dW5jdGlvbiBmaW5kUHJldkVsZW1lbnQgKGNoaWxkcmVuKSB7XG4gIHZhciBpID0gY2hpbGRyZW4u
bGVuZ3RoO1xuICB3aGlsZSAoaS0tKSB7XG4gICAgaWYgKGNoaWxkcmVuW2ldLnRhZykgeyByZXR1
cm4gY2hpbGRyZW5baV0gfVxuICB9XG59XG5cbmZ1bmN0aW9uIGlzRm9yYmlkZGVuVGFnIChlbCkg
e1xuICByZXR1cm4gKFxuICAgIGVsLnRhZyA9PT0gJ3N0eWxlJyB8fFxuICAgIChlbC50YWcgPT09
ICdzY3JpcHQnICYmIChcbiAgICAgICFlbC5hdHRyc01hcC50eXBlIHx8XG4gICAgICBlbC5hdHRy
c01hcC50eXBlID09PSAndGV4dC9qYXZhc2NyaXB0J1xuICAgICkpXG4gIClcbn1cblxudmFyIGll
TlNCdWcgPSAvXnhtbG5zOk5TXFxkKy87XG52YXIgaWVOU1ByZWZpeCA9IC9eTlNcXGQrOi87XG5c
bi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5mdW5jdGlvbiBndWFyZElFU1ZHQnVnIChhdHRy
cykge1xuICB2YXIgcmVzID0gW107XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cnMubGVuZ3Ro
OyBpKyspIHtcbiAgICB2YXIgYXR0ciA9IGF0dHJzW2ldO1xuICAgIGlmICghaWVOU0J1Zy50ZXN0
KGF0dHIubmFtZSkpIHtcbiAgICAgIGF0dHIubmFtZSA9IGF0dHIubmFtZS5yZXBsYWNlKGllTlNQ
cmVmaXgsICcnKTtcbiAgICAgIHJlcy5wdXNoKGF0dHIpO1xuICAgIH1cbiAgfVxuICByZXR1cm4g
cmVzXG59XG5cbmZ1bmN0aW9uIGNoZWNrRm9yQWxpYXNNb2RlbCAoZWwsIHZhbHVlKSB7XG4gIHZh
ciBfZWwgPSBlbDtcbiAgd2hpbGUgKF9lbCkge1xuICAgIGlmIChfZWwuZm9yICYmIF9lbC5hbGlh
cyA9PT0gdmFsdWUpIHtcbiAgICAgIHdhcm4kMShcbiAgICAgICAgXCI8XCIgKyAoZWwudGFnKSAr
IFwiIHYtbW9kZWw9XFxcIlwiICsgdmFsdWUgKyBcIlxcXCI+OiBcIiArXG4gICAgICAgIFwiWW91
IGFyZSBiaW5kaW5nIHYtbW9kZWwgZGlyZWN0bHkgdG8gYSB2LWZvciBpdGVyYXRpb24gYWxpYXMu
IFwiICtcbiAgICAgICAgXCJUaGlzIHdpbGwgbm90IGJlIGFibGUgdG8gbW9kaWZ5IHRoZSB2LWZv
ciBzb3VyY2UgYXJyYXkgYmVjYXVzZSBcIiArXG4gICAgICAgIFwid3JpdGluZyB0byB0aGUgYWxp
YXMgaXMgbGlrZSBtb2RpZnlpbmcgYSBmdW5jdGlvbiBsb2NhbCB2YXJpYWJsZS4gXCIgK1xuICAg
ICAgICBcIkNvbnNpZGVyIHVzaW5nIGFuIGFycmF5IG9mIG9iamVjdHMgYW5kIHVzZSB2LW1vZGVs
IG9uIGFuIG9iamVjdCBwcm9wZXJ0eSBpbnN0ZWFkLlwiXG4gICAgICApO1xuICAgIH1cbiAgICBf
ZWwgPSBfZWwucGFyZW50O1xuICB9XG59XG5cbi8qICAqL1xuXG52YXIgaXNTdGF0aWNLZXk7XG52
YXIgaXNQbGF0Zm9ybVJlc2VydmVkVGFnO1xuXG52YXIgZ2VuU3RhdGljS2V5c0NhY2hlZCA9IGNh
Y2hlZChnZW5TdGF0aWNLZXlzJDEpO1xuXG4vKipcbiAqIEdvYWwgb2YgdGhlIG9wdGltaXplcjog
d2FsayB0aGUgZ2VuZXJhdGVkIHRlbXBsYXRlIEFTVCB0cmVlXG4gKiBhbmQgZGV0ZWN0IHN1Yi10
cmVlcyB0aGF0IGFyZSBwdXJlbHkgc3RhdGljLCBpLmUuIHBhcnRzIG9mXG4gKiB0aGUgRE9NIHRo
YXQgbmV2ZXIgbmVlZHMgdG8gY2hhbmdlLlxuICpcbiAqIE9uY2Ugd2UgZGV0ZWN0IHRoZXNlIHN1
Yi10cmVlcywgd2UgY2FuOlxuICpcbiAqIDEuIEhvaXN0IHRoZW0gaW50byBjb25zdGFudHMsIHNv
IHRoYXQgd2Ugbm8gbG9uZ2VyIG5lZWQgdG9cbiAqICAgIGNyZWF0ZSBmcmVzaCBub2RlcyBmb3Ig
dGhlbSBvbiBlYWNoIHJlLXJlbmRlcjtcbiAqIDIuIENvbXBsZXRlbHkgc2tpcCB0aGVtIGluIHRo
ZSBwYXRjaGluZyBwcm9jZXNzLlxuICovXG5mdW5jdGlvbiBvcHRpbWl6ZSAocm9vdCwgb3B0aW9u
cykge1xuICBpZiAoIXJvb3QpIHsgcmV0dXJuIH1cbiAgaXNTdGF0aWNLZXkgPSBnZW5TdGF0aWNL
ZXlzQ2FjaGVkKG9wdGlvbnMuc3RhdGljS2V5cyB8fCAnJyk7XG4gIGlzUGxhdGZvcm1SZXNlcnZl
ZFRhZyA9IG9wdGlvbnMuaXNSZXNlcnZlZFRhZyB8fCAoZnVuY3Rpb24gKCkgeyByZXR1cm4gZmFs
c2U7IH0pO1xuICAvLyBmaXJzdCBwYXNzOiBtYXJrIGFsbCBub24tc3RhdGljIG5vZGVzLlxuICBt
YXJrU3RhdGljKHJvb3QpO1xuICAvLyBzZWNvbmQgcGFzczogbWFyayBzdGF0aWMgcm9vdHMuXG4g
IG1hcmtTdGF0aWNSb290cyhyb290LCBmYWxzZSk7XG59XG5cbmZ1bmN0aW9uIGdlblN0YXRpY0tl
eXMkMSAoa2V5cykge1xuICByZXR1cm4gbWFrZU1hcChcbiAgICAndHlwZSx0YWcsYXR0cnNMaXN0
LGF0dHJzTWFwLHBsYWluLHBhcmVudCxjaGlsZHJlbixhdHRycycgK1xuICAgIChrZXlzID8gJywn
ICsga2V5cyA6ICcnKVxuICApXG59XG5cbmZ1bmN0aW9uIG1hcmtTdGF0aWMgKG5vZGUpIHtcbiAg
bm9kZS5zdGF0aWMgPSBpc1N0YXRpYyhub2RlKTtcbiAgaWYgKG5vZGUudHlwZSA9PT0gMSkge1xu
ICAgIC8vIGRvIG5vdCBtYWtlIGNvbXBvbmVudCBzbG90IGNvbnRlbnQgc3RhdGljLiB0aGlzIGF2
b2lkc1xuICAgIC8vIDEuIGNvbXBvbmVudHMgbm90IGFibGUgdG8gbXV0YXRlIHNsb3Qgbm9kZXNc
biAgICAvLyAyLiBzdGF0aWMgc2xvdCBjb250ZW50IGZhaWxzIGZvciBob3QtcmVsb2FkaW5nXG4g
ICAgaWYgKFxuICAgICAgIWlzUGxhdGZvcm1SZXNlcnZlZFRhZyhub2RlLnRhZykgJiZcbiAgICAg
IG5vZGUudGFnICE9PSAnc2xvdCcgJiZcbiAgICAgIG5vZGUuYXR0cnNNYXBbJ2lubGluZS10ZW1w
bGF0ZSddID09IG51bGxcbiAgICApIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBmb3IgKHZh
ciBpID0gMCwgbCA9IG5vZGUuY2hpbGRyZW4ubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICB2
YXIgY2hpbGQgPSBub2RlLmNoaWxkcmVuW2ldO1xuICAgICAgbWFya1N0YXRpYyhjaGlsZCk7XG4g
ICAgICBpZiAoIWNoaWxkLnN0YXRpYykge1xuICAgICAgICBub2RlLnN0YXRpYyA9IGZhbHNlO1xu
ICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBtYXJrU3RhdGljUm9vdHMgKG5vZGUs
IGlzSW5Gb3IpIHtcbiAgaWYgKG5vZGUudHlwZSA9PT0gMSkge1xuICAgIGlmIChub2RlLnN0YXRp
YyB8fCBub2RlLm9uY2UpIHtcbiAgICAgIG5vZGUuc3RhdGljSW5Gb3IgPSBpc0luRm9yO1xuICAg
IH1cbiAgICAvLyBGb3IgYSBub2RlIHRvIHF1YWxpZnkgYXMgYSBzdGF0aWMgcm9vdCwgaXQgc2hv
dWxkIGhhdmUgY2hpbGRyZW4gdGhhdFxuICAgIC8vIGFyZSBub3QganVzdCBzdGF0aWMgdGV4dC4g
T3RoZXJ3aXNlIHRoZSBjb3N0IG9mIGhvaXN0aW5nIG91dCB3aWxsXG4gICAgLy8gb3V0d2VpZ2gg
dGhlIGJlbmVmaXRzIGFuZCBpdCdzIGJldHRlciBvZmYgdG8ganVzdCBhbHdheXMgcmVuZGVyIGl0
IGZyZXNoLlxuICAgIGlmIChub2RlLnN0YXRpYyAmJiBub2RlLmNoaWxkcmVuLmxlbmd0aCAmJiAh
KFxuICAgICAgbm9kZS5jaGlsZHJlbi5sZW5ndGggPT09IDEgJiZcbiAgICAgIG5vZGUuY2hpbGRy
ZW5bMF0udHlwZSA9PT0gM1xuICAgICkpIHtcbiAgICAgIG5vZGUuc3RhdGljUm9vdCA9IHRydWU7
XG4gICAgICByZXR1cm5cbiAgICB9IGVsc2Uge1xuICAgICAgbm9kZS5zdGF0aWNSb290ID0gZmFs
c2U7XG4gICAgfVxuICAgIGlmIChub2RlLmNoaWxkcmVuKSB7XG4gICAgICBmb3IgKHZhciBpID0g
MCwgbCA9IG5vZGUuY2hpbGRyZW4ubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIG1hcmtT
dGF0aWNSb290cyhub2RlLmNoaWxkcmVuW2ldLCBpc0luRm9yIHx8ICEhbm9kZS5mb3IpO1xuICAg
ICAgfVxuICAgIH1cbiAgICBpZiAobm9kZS5jb25kaXRpb25zKSB7XG4gICAgICB3YWxrVGhyb3Vn
aENvbmRpdGlvbnNCbG9ja3Mobm9kZS5jb25kaXRpb25zLCBpc0luRm9yKTtcbiAgICB9XG4gIH1c
bn1cblxuZnVuY3Rpb24gd2Fsa1Rocm91Z2hDb25kaXRpb25zQmxvY2tzIChjb25kaXRpb25CbG9j
a3MsIGlzSW5Gb3IpIHtcbiAgZm9yICh2YXIgaSA9IDEsIGxlbiA9IGNvbmRpdGlvbkJsb2Nrcy5s
ZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIG1hcmtTdGF0aWNSb290cyhjb25kaXRpb25CbG9j
a3NbaV0uYmxvY2ssIGlzSW5Gb3IpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzU3RhdGljIChub2Rl
KSB7XG4gIGlmIChub2RlLnR5cGUgPT09IDIpIHsgLy8gZXhwcmVzc2lvblxuICAgIHJldHVybiBm
YWxzZVxuICB9XG4gIGlmIChub2RlLnR5cGUgPT09IDMpIHsgLy8gdGV4dFxuICAgIHJldHVybiB0
cnVlXG4gIH1cbiAgcmV0dXJuICEhKG5vZGUucHJlIHx8IChcbiAgICAhbm9kZS5oYXNCaW5kaW5n
cyAmJiAvLyBubyBkeW5hbWljIGJpbmRpbmdzXG4gICAgIW5vZGUuaWYgJiYgIW5vZGUuZm9yICYm
IC8vIG5vdCB2LWlmIG9yIHYtZm9yIG9yIHYtZWxzZVxuICAgICFpc0J1aWx0SW5UYWcobm9kZS50
YWcpICYmIC8vIG5vdCBhIGJ1aWx0LWluXG4gICAgaXNQbGF0Zm9ybVJlc2VydmVkVGFnKG5vZGUu
dGFnKSAmJiAvLyBub3QgYSBjb21wb25lbnRcbiAgICAhaXNEaXJlY3RDaGlsZE9mVGVtcGxhdGVG
b3Iobm9kZSkgJiZcbiAgICBPYmplY3Qua2V5cyhub2RlKS5ldmVyeShpc1N0YXRpY0tleSlcbiAg
KSlcbn1cblxuZnVuY3Rpb24gaXNEaXJlY3RDaGlsZE9mVGVtcGxhdGVGb3IgKG5vZGUpIHtcbiAg
d2hpbGUgKG5vZGUucGFyZW50KSB7XG4gICAgbm9kZSA9IG5vZGUucGFyZW50O1xuICAgIGlmIChu
b2RlLnRhZyAhPT0gJ3RlbXBsYXRlJykge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICAg
IGlmIChub2RlLmZvcikge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gIH1cbiAgcmV0dXJu
IGZhbHNlXG59XG5cbi8qICAqL1xuXG52YXIgZm5FeHBSRSA9IC9eXFxzKihbXFx3JF9dK3xcXChb
XildKj9cXCkpXFxzKj0+fF5mdW5jdGlvblxccypcXCgvO1xudmFyIHNpbXBsZVBhdGhSRSA9IC9e
XFxzKltBLVphLXpfJF1bXFx3JF0qKD86XFwuW0EtWmEtel8kXVtcXHckXSp8XFxbJy4qPyddfFxc
W1wiLio/XCJdfFxcW1xcZCtdfFxcW1tBLVphLXpfJF1bXFx3JF0qXSkqXFxzKiQvO1xuXG4vLyBr
ZXlDb2RlIGFsaWFzZXNcbnZhciBrZXlDb2RlcyA9IHtcbiAgZXNjOiAyNyxcbiAgdGFiOiA5LFxu
ICBlbnRlcjogMTMsXG4gIHNwYWNlOiAzMixcbiAgdXA6IDM4LFxuICBsZWZ0OiAzNyxcbiAgcmln
aHQ6IDM5LFxuICBkb3duOiA0MCxcbiAgJ2RlbGV0ZSc6IFs4LCA0Nl1cbn07XG5cbnZhciBtb2Rp
ZmllckNvZGUgPSB7XG4gIHN0b3A6ICckZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7JyxcbiAgcHJl
dmVudDogJyRldmVudC5wcmV2ZW50RGVmYXVsdCgpOycsXG4gIHNlbGY6ICdpZigkZXZlbnQudGFy
Z2V0ICE9PSAkZXZlbnQuY3VycmVudFRhcmdldClyZXR1cm47J1xufTtcblxudmFyIGlzTW91c2VF
dmVudFJFID0gL15tb3VzZXxecG9pbnRlcnxeKGNsaWNrfGRibGNsaWNrfGNvbnRleHRtZW51fHdo
ZWVsKSQvO1xudmFyIG1vdXNlRXZlbnRNb2RpZmllckNvZGUgPSB7XG4gIGN0cmw6ICdpZighJGV2
ZW50LmN0cmxLZXkpcmV0dXJuOycsXG4gIHNoaWZ0OiAnaWYoISRldmVudC5zaGlmdEtleSlyZXR1
cm47JyxcbiAgYWx0OiAnaWYoISRldmVudC5hbHRLZXkpcmV0dXJuOycsXG4gIG1ldGE6ICdpZigh
JGV2ZW50Lm1ldGFLZXkpcmV0dXJuOydcbn07XG5cbmZ1bmN0aW9uIGdlbkhhbmRsZXJzIChldmVu
dHMsIG5hdGl2ZSkge1xuICB2YXIgcmVzID0gbmF0aXZlID8gJ25hdGl2ZU9uOnsnIDogJ29uOnsn
O1xuICBmb3IgKHZhciBuYW1lIGluIGV2ZW50cykge1xuICAgIHJlcyArPSBcIlxcXCJcIiArIG5h
bWUgKyBcIlxcXCI6XCIgKyAoZ2VuSGFuZGxlcihuYW1lLCBldmVudHNbbmFtZV0pKSArIFwiLFwi
O1xuICB9XG4gIHJldHVybiByZXMuc2xpY2UoMCwgLTEpICsgJ30nXG59XG5cbmZ1bmN0aW9uIGdl
bkhhbmRsZXIgKFxuICBuYW1lLFxuICBoYW5kbGVyXG4pIHtcbiAgaWYgKCFoYW5kbGVyKSB7XG4g
ICAgcmV0dXJuICdmdW5jdGlvbigpe30nXG4gIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShoYW5k
bGVyKSkge1xuICAgIHJldHVybiAoXCJbXCIgKyAoaGFuZGxlci5tYXAoZnVuY3Rpb24gKGhhbmRs
ZXIpIHsgcmV0dXJuIGdlbkhhbmRsZXIobmFtZSwgaGFuZGxlcik7IH0pLmpvaW4oJywnKSkgKyBc
Il1cIilcbiAgfSBlbHNlIGlmICghaGFuZGxlci5tb2RpZmllcnMpIHtcbiAgICByZXR1cm4gZm5F
eHBSRS50ZXN0KGhhbmRsZXIudmFsdWUpIHx8IHNpbXBsZVBhdGhSRS50ZXN0KGhhbmRsZXIudmFs
dWUpXG4gICAgICA/IGhhbmRsZXIudmFsdWVcbiAgICAgIDogKFwiZnVuY3Rpb24oJGV2ZW50KXtc
IiArIChoYW5kbGVyLnZhbHVlKSArIFwifVwiKVxuICB9IGVsc2Uge1xuICAgIHZhciBjb2RlID0g
Jyc7XG4gICAgdmFyIGtleXMgPSBbXTtcbiAgICB2YXIgaXNNb3VzZUV2bmV0ID0gaXNNb3VzZUV2
ZW50UkUudGVzdChuYW1lKTtcbiAgICBmb3IgKHZhciBrZXkgaW4gaGFuZGxlci5tb2RpZmllcnMp
IHtcbiAgICAgIGlmIChtb2RpZmllckNvZGVba2V5XSkge1xuICAgICAgICBjb2RlICs9IG1vZGlm
aWVyQ29kZVtrZXldO1xuICAgICAgfSBlbHNlIGlmIChpc01vdXNlRXZuZXQgJiYgbW91c2VFdmVu
dE1vZGlmaWVyQ29kZVtrZXldKSB7XG4gICAgICAgIGNvZGUgKz0gbW91c2VFdmVudE1vZGlmaWVy
Q29kZVtrZXldO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAga2V5cy5wdXNoKGtleSk7XG4gICAg
ICB9XG4gICAgfVxuICAgIGlmIChrZXlzLmxlbmd0aCkge1xuICAgICAgY29kZSA9IGdlbktleUZp
bHRlcihrZXlzKSArIGNvZGU7XG4gICAgfVxuICAgIHZhciBoYW5kbGVyQ29kZSA9IHNpbXBsZVBh
dGhSRS50ZXN0KGhhbmRsZXIudmFsdWUpXG4gICAgICA/IGhhbmRsZXIudmFsdWUgKyAnKCRldmVu
dCknXG4gICAgICA6IGhhbmRsZXIudmFsdWU7XG4gICAgcmV0dXJuICdmdW5jdGlvbigkZXZlbnQp
eycgKyBjb2RlICsgaGFuZGxlckNvZGUgKyAnfSdcbiAgfVxufVxuXG5mdW5jdGlvbiBnZW5LZXlG
aWx0ZXIgKGtleXMpIHtcbiAgdmFyIGNvZGUgPSBrZXlzLmxlbmd0aCA9PT0gMVxuICAgID8gbm9y
bWFsaXplS2V5Q29kZShrZXlzWzBdKVxuICAgIDogQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBs
eShbXSwga2V5cy5tYXAobm9ybWFsaXplS2V5Q29kZSkpO1xuICBpZiAoQXJyYXkuaXNBcnJheShj
b2RlKSkge1xuICAgIHJldHVybiAoXCJpZihcIiArIChjb2RlLm1hcChmdW5jdGlvbiAoYykgeyBy
ZXR1cm4gKFwiJGV2ZW50LmtleUNvZGUhPT1cIiArIGMpOyB9KS5qb2luKCcmJicpKSArIFwiKXJl
dHVybjtcIilcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gKFwiaWYoJGV2ZW50LmtleUNvZGUhPT1c
IiArIGNvZGUgKyBcIilyZXR1cm47XCIpXG4gIH1cbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplS2V5
Q29kZSAoa2V5KSB7XG4gIHJldHVybiAoXG4gICAgcGFyc2VJbnQoa2V5LCAxMCkgfHwgLy8gbnVt
YmVyIGtleUNvZGVcbiAgICBrZXlDb2Rlc1trZXldIHx8IC8vIGJ1aWx0LWluIGFsaWFzXG4gICAg
KFwiX2soXCIgKyAoSlNPTi5zdHJpbmdpZnkoa2V5KSkgKyBcIilcIikgLy8gY3VzdG9tIGFsaWFz
XG4gIClcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGJpbmQkMiAoZWwsIGRpcikge1xuICBlbC53
cmFwRGF0YSA9IGZ1bmN0aW9uIChjb2RlKSB7XG4gICAgcmV0dXJuIChcIl9iKFwiICsgY29kZSAr
IFwiLCdcIiArIChlbC50YWcpICsgXCInLFwiICsgKGRpci52YWx1ZSkgKyAoZGlyLm1vZGlmaWVy
cyAmJiBkaXIubW9kaWZpZXJzLnByb3AgPyAnLHRydWUnIDogJycpICsgXCIpXCIpXG4gIH07XG59
XG5cbnZhciBiYXNlRGlyZWN0aXZlcyA9IHtcbiAgYmluZDogYmluZCQyLFxuICBjbG9hazogbm9v
cFxufTtcblxuLyogICovXG5cbi8vIGNvbmZpZ3VyYWJsZSBzdGF0ZVxudmFyIHdhcm4kMjtcbnZh
ciB0cmFuc2Zvcm1zJDE7XG52YXIgZGF0YUdlbkZucztcbnZhciBwbGF0Zm9ybURpcmVjdGl2ZXMk
MTtcbnZhciBzdGF0aWNSZW5kZXJGbnM7XG52YXIgb25jZUNvdW50O1xudmFyIGN1cnJlbnRPcHRp
b25zO1xuXG5mdW5jdGlvbiBnZW5lcmF0ZSAoXG4gIGFzdCxcbiAgb3B0aW9uc1xuKSB7XG4gIC8v
IHNhdmUgcHJldmlvdXMgc3RhdGljUmVuZGVyRm5zIHNvIGdlbmVyYXRlIGNhbGxzIGNhbiBiZSBu
ZXN0ZWRcbiAgdmFyIHByZXZTdGF0aWNSZW5kZXJGbnMgPSBzdGF0aWNSZW5kZXJGbnM7XG4gIHZh
ciBjdXJyZW50U3RhdGljUmVuZGVyRm5zID0gc3RhdGljUmVuZGVyRm5zID0gW107XG4gIHZhciBw
cmV2T25jZUNvdW50ID0gb25jZUNvdW50O1xuICBvbmNlQ291bnQgPSAwO1xuICBjdXJyZW50T3B0
aW9ucyA9IG9wdGlvbnM7XG4gIHdhcm4kMiA9IG9wdGlvbnMud2FybiB8fCBiYXNlV2FybjtcbiAg
dHJhbnNmb3JtcyQxID0gcGx1Y2tNb2R1bGVGdW5jdGlvbihvcHRpb25zLm1vZHVsZXMsICd0cmFu
c2Zvcm1Db2RlJyk7XG4gIGRhdGFHZW5GbnMgPSBwbHVja01vZHVsZUZ1bmN0aW9uKG9wdGlvbnMu
bW9kdWxlcywgJ2dlbkRhdGEnKTtcbiAgcGxhdGZvcm1EaXJlY3RpdmVzJDEgPSBvcHRpb25zLmRp
cmVjdGl2ZXMgfHwge307XG4gIHZhciBjb2RlID0gYXN0ID8gZ2VuRWxlbWVudChhc3QpIDogJ19o
KFwiZGl2XCIpJztcbiAgc3RhdGljUmVuZGVyRm5zID0gcHJldlN0YXRpY1JlbmRlckZucztcbiAg
b25jZUNvdW50ID0gcHJldk9uY2VDb3VudDtcbiAgcmV0dXJuIHtcbiAgICByZW5kZXI6IChcIndp
dGgodGhpcyl7cmV0dXJuIFwiICsgY29kZSArIFwifVwiKSxcbiAgICBzdGF0aWNSZW5kZXJGbnM6
IGN1cnJlbnRTdGF0aWNSZW5kZXJGbnNcbiAgfVxufVxuXG5mdW5jdGlvbiBnZW5FbGVtZW50IChl
bCkge1xuICBpZiAoZWwuc3RhdGljUm9vdCAmJiAhZWwuc3RhdGljUHJvY2Vzc2VkKSB7XG4gICAg
cmV0dXJuIGdlblN0YXRpYyhlbClcbiAgfSBlbHNlIGlmIChlbC5vbmNlICYmICFlbC5vbmNlUHJv
Y2Vzc2VkKSB7XG4gICAgcmV0dXJuIGdlbk9uY2UoZWwpXG4gIH0gZWxzZSBpZiAoZWwuZm9yICYm
ICFlbC5mb3JQcm9jZXNzZWQpIHtcbiAgICByZXR1cm4gZ2VuRm9yKGVsKVxuICB9IGVsc2UgaWYg
KGVsLmlmICYmICFlbC5pZlByb2Nlc3NlZCkge1xuICAgIHJldHVybiBnZW5JZihlbClcbiAgfSBl
bHNlIGlmIChlbC50YWcgPT09ICd0ZW1wbGF0ZScgJiYgIWVsLnNsb3RUYXJnZXQpIHtcbiAgICBy
ZXR1cm4gZ2VuQ2hpbGRyZW4oZWwpIHx8ICd2b2lkIDAnXG4gIH0gZWxzZSBpZiAoZWwudGFnID09
PSAnc2xvdCcpIHtcbiAgICByZXR1cm4gZ2VuU2xvdChlbClcbiAgfSBlbHNlIHtcbiAgICAvLyBj
b21wb25lbnQgb3IgZWxlbWVudFxuICAgIHZhciBjb2RlO1xuICAgIGlmIChlbC5jb21wb25lbnQp
IHtcbiAgICAgIGNvZGUgPSBnZW5Db21wb25lbnQoZWwuY29tcG9uZW50LCBlbCk7XG4gICAgfSBl
bHNlIHtcbiAgICAgIHZhciBkYXRhID0gZWwucGxhaW4gPyB1bmRlZmluZWQgOiBnZW5EYXRhKGVs
KTtcblxuICAgICAgdmFyIGNoaWxkcmVuID0gZWwuaW5saW5lVGVtcGxhdGUgPyBudWxsIDogZ2Vu
Q2hpbGRyZW4oZWwpO1xuICAgICAgY29kZSA9IFwiX2goJ1wiICsgKGVsLnRhZykgKyBcIidcIiAr
IChkYXRhID8gKFwiLFwiICsgZGF0YSkgOiAnJykgKyAoY2hpbGRyZW4gPyAoXCIsXCIgKyBjaGls
ZHJlbikgOiAnJykgKyBcIilcIjtcbiAgICB9XG4gICAgLy8gbW9kdWxlIHRyYW5zZm9ybXNcbiAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IHRyYW5zZm9ybXMkMS5sZW5ndGg7IGkrKykge1xuICAgICAg
Y29kZSA9IHRyYW5zZm9ybXMkMVtpXShlbCwgY29kZSk7XG4gICAgfVxuICAgIHJldHVybiBjb2Rl
XG4gIH1cbn1cblxuLy8gaG9pc3Qgc3RhdGljIHN1Yi10cmVlcyBvdXRcbmZ1bmN0aW9uIGdlblN0
YXRpYyAoZWwpIHtcbiAgZWwuc3RhdGljUHJvY2Vzc2VkID0gdHJ1ZTtcbiAgc3RhdGljUmVuZGVy
Rm5zLnB1c2goKFwid2l0aCh0aGlzKXtyZXR1cm4gXCIgKyAoZ2VuRWxlbWVudChlbCkpICsgXCJ9
XCIpKTtcbiAgcmV0dXJuIChcIl9tKFwiICsgKHN0YXRpY1JlbmRlckZucy5sZW5ndGggLSAxKSAr
IChlbC5zdGF0aWNJbkZvciA/ICcsdHJ1ZScgOiAnJykgKyBcIilcIilcbn1cblxuLy8gdi1vbmNl
XG5mdW5jdGlvbiBnZW5PbmNlIChlbCkge1xuICBlbC5vbmNlUHJvY2Vzc2VkID0gdHJ1ZTtcbiAg
aWYgKGVsLmlmICYmICFlbC5pZlByb2Nlc3NlZCkge1xuICAgIHJldHVybiBnZW5JZihlbClcbiAg
fSBlbHNlIGlmIChlbC5zdGF0aWNJbkZvcikge1xuICAgIHZhciBrZXkgPSAnJztcbiAgICB2YXIg
cGFyZW50ID0gZWwucGFyZW50O1xuICAgIHdoaWxlIChwYXJlbnQpIHtcbiAgICAgIGlmIChwYXJl
bnQuZm9yKSB7XG4gICAgICAgIGtleSA9IHBhcmVudC5rZXk7XG4gICAgICAgIGJyZWFrXG4gICAg
ICB9XG4gICAgICBwYXJlbnQgPSBwYXJlbnQucGFyZW50O1xuICAgIH1cbiAgICBpZiAoIWtleSkg
e1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuJDIo
XG4gICAgICAgIFwidi1vbmNlIGNhbiBvbmx5IGJlIHVzZWQgaW5zaWRlIHYtZm9yIHRoYXQgaXMg
a2V5ZWQuIFwiXG4gICAgICApO1xuICAgICAgcmV0dXJuIGdlbkVsZW1lbnQoZWwpXG4gICAgfVxu
ICAgIHJldHVybiAoXCJfbyhcIiArIChnZW5FbGVtZW50KGVsKSkgKyBcIixcIiArIChvbmNlQ291
bnQrKykgKyAoa2V5ID8gKFwiLFwiICsga2V5KSA6IFwiXCIpICsgXCIpXCIpXG4gIH0gZWxzZSB7
XG4gICAgcmV0dXJuIGdlblN0YXRpYyhlbClcbiAgfVxufVxuXG5mdW5jdGlvbiBnZW5JZiAoZWwp
IHtcbiAgZWwuaWZQcm9jZXNzZWQgPSB0cnVlOyAvLyBhdm9pZCByZWN1cnNpb25cbiAgcmV0dXJu
IGdlbklmQ29uZGl0aW9ucyhlbC5jb25kaXRpb25zKVxufVxuXG5mdW5jdGlvbiBnZW5JZkNvbmRp
dGlvbnMgKGNvbmRpdGlvbnMpIHtcbiAgaWYgKCFjb25kaXRpb25zLmxlbmd0aCkge1xuICAgIHJl
dHVybiAnX2UoKSdcbiAgfVxuXG4gIHZhciBjb25kaXRpb24gPSBjb25kaXRpb25zLnNoaWZ0KCk7
XG4gIGlmIChjb25kaXRpb24uZXhwKSB7XG4gICAgcmV0dXJuIChcIihcIiArIChjb25kaXRpb24u
ZXhwKSArIFwiKT9cIiArIChnZW5UZXJuYXJ5RXhwKGNvbmRpdGlvbi5ibG9jaykpICsgXCI6XCIg
KyAoZ2VuSWZDb25kaXRpb25zKGNvbmRpdGlvbnMpKSlcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4g
KFwiXCIgKyAoZ2VuVGVybmFyeUV4cChjb25kaXRpb24uYmxvY2spKSlcbiAgfVxuXG4gIC8vIHYt
aWYgd2l0aCB2LW9uY2Ugc2h1b2xkIGdlbmVyYXRlIGNvZGUgbGlrZSAoYSk/X20oMCk6X20oMSlc
biAgZnVuY3Rpb24gZ2VuVGVybmFyeUV4cCAoZWwpIHtcbiAgICByZXR1cm4gZWwub25jZSA/IGdl
bk9uY2UoZWwpIDogZ2VuRWxlbWVudChlbClcbiAgfVxufVxuXG5mdW5jdGlvbiBnZW5Gb3IgKGVs
KSB7XG4gIHZhciBleHAgPSBlbC5mb3I7XG4gIHZhciBhbGlhcyA9IGVsLmFsaWFzO1xuICB2YXIg
aXRlcmF0b3IxID0gZWwuaXRlcmF0b3IxID8gKFwiLFwiICsgKGVsLml0ZXJhdG9yMSkpIDogJyc7
XG4gIHZhciBpdGVyYXRvcjIgPSBlbC5pdGVyYXRvcjIgPyAoXCIsXCIgKyAoZWwuaXRlcmF0b3Iy
KSkgOiAnJztcbiAgZWwuZm9yUHJvY2Vzc2VkID0gdHJ1ZTsgLy8gYXZvaWQgcmVjdXJzaW9uXG4g
IHJldHVybiBcIl9sKChcIiArIGV4cCArIFwiKSxcIiArXG4gICAgXCJmdW5jdGlvbihcIiArIGFs
aWFzICsgaXRlcmF0b3IxICsgaXRlcmF0b3IyICsgXCIpe1wiICtcbiAgICAgIFwicmV0dXJuIFwi
ICsgKGdlbkVsZW1lbnQoZWwpKSArXG4gICAgJ30pJ1xufVxuXG5mdW5jdGlvbiBnZW5EYXRhIChl
bCkge1xuICB2YXIgZGF0YSA9ICd7JztcblxuICAvLyBkaXJlY3RpdmVzIGZpcnN0LlxuICAvLyBk
aXJlY3RpdmVzIG1heSBtdXRhdGUgdGhlIGVsJ3Mgb3RoZXIgcHJvcGVydGllcyBiZWZvcmUgdGhl
eSBhcmUgZ2VuZXJhdGVkLlxuICB2YXIgZGlycyA9IGdlbkRpcmVjdGl2ZXMoZWwpO1xuICBpZiAo
ZGlycykgeyBkYXRhICs9IGRpcnMgKyAnLCc7IH1cblxuICAvLyBrZXlcbiAgaWYgKGVsLmtleSkg
e1xuICAgIGRhdGEgKz0gXCJrZXk6XCIgKyAoZWwua2V5KSArIFwiLFwiO1xuICB9XG4gIC8vIHJl
ZlxuICBpZiAoZWwucmVmKSB7XG4gICAgZGF0YSArPSBcInJlZjpcIiArIChlbC5yZWYpICsgXCIs
XCI7XG4gIH1cbiAgaWYgKGVsLnJlZkluRm9yKSB7XG4gICAgZGF0YSArPSBcInJlZkluRm9yOnRy
dWUsXCI7XG4gIH1cbiAgLy8gcmVjb3JkIG9yaWdpbmFsIHRhZyBuYW1lIGZvciBjb21wb25lbnRz
IHVzaW5nIFwiaXNcIiBhdHRyaWJ1dGVcbiAgaWYgKGVsLmNvbXBvbmVudCkge1xuICAgIGRhdGEg
Kz0gXCJ0YWc6XFxcIlwiICsgKGVsLnRhZykgKyBcIlxcXCIsXCI7XG4gIH1cbiAgLy8gbW9kdWxl
IGRhdGEgZ2VuZXJhdGlvbiBmdW5jdGlvbnNcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRhR2Vu
Rm5zLmxlbmd0aDsgaSsrKSB7XG4gICAgZGF0YSArPSBkYXRhR2VuRm5zW2ldKGVsKTtcbiAgfVxu
ICAvLyBhdHRyaWJ1dGVzXG4gIGlmIChlbC5hdHRycykge1xuICAgIGRhdGEgKz0gXCJhdHRyczp7
XCIgKyAoZ2VuUHJvcHMoZWwuYXR0cnMpKSArIFwifSxcIjtcbiAgfVxuICAvLyBET00gcHJvcHNc
biAgaWYgKGVsLnByb3BzKSB7XG4gICAgZGF0YSArPSBcImRvbVByb3BzOntcIiArIChnZW5Qcm9w
cyhlbC5wcm9wcykpICsgXCJ9LFwiO1xuICB9XG4gIC8vIGV2ZW50IGhhbmRsZXJzXG4gIGlmIChl
bC5ldmVudHMpIHtcbiAgICBkYXRhICs9IChnZW5IYW5kbGVycyhlbC5ldmVudHMpKSArIFwiLFwi
O1xuICB9XG4gIGlmIChlbC5uYXRpdmVFdmVudHMpIHtcbiAgICBkYXRhICs9IChnZW5IYW5kbGVy
cyhlbC5uYXRpdmVFdmVudHMsIHRydWUpKSArIFwiLFwiO1xuICB9XG4gIC8vIHNsb3QgdGFyZ2V0
XG4gIGlmIChlbC5zbG90VGFyZ2V0KSB7XG4gICAgZGF0YSArPSBcInNsb3Q6XCIgKyAoZWwuc2xv
dFRhcmdldCkgKyBcIixcIjtcbiAgfVxuICAvLyBzY29wZWQgc2xvdHNcbiAgaWYgKGVsLnNjb3Bl
ZFNsb3RzKSB7XG4gICAgZGF0YSArPSAoZ2VuU2NvcGVkU2xvdHMoZWwuc2NvcGVkU2xvdHMpKSAr
IFwiLFwiO1xuICB9XG4gIC8vIGlubGluZS10ZW1wbGF0ZVxuICBpZiAoZWwuaW5saW5lVGVtcGxh
dGUpIHtcbiAgICB2YXIgaW5saW5lVGVtcGxhdGUgPSBnZW5JbmxpbmVUZW1wbGF0ZShlbCk7XG4g
ICAgaWYgKGlubGluZVRlbXBsYXRlKSB7XG4gICAgICBkYXRhICs9IGlubGluZVRlbXBsYXRlICsg
XCIsXCI7XG4gICAgfVxuICB9XG4gIGRhdGEgPSBkYXRhLnJlcGxhY2UoLywkLywgJycpICsgJ30n
O1xuICAvLyB2LWJpbmQgZGF0YSB3cmFwXG4gIGlmIChlbC53cmFwRGF0YSkge1xuICAgIGRhdGEg
PSBlbC53cmFwRGF0YShkYXRhKTtcbiAgfVxuICByZXR1cm4gZGF0YVxufVxuXG5mdW5jdGlvbiBn
ZW5EaXJlY3RpdmVzIChlbCkge1xuICB2YXIgZGlycyA9IGVsLmRpcmVjdGl2ZXM7XG4gIGlmICgh
ZGlycykgeyByZXR1cm4gfVxuICB2YXIgcmVzID0gJ2RpcmVjdGl2ZXM6Wyc7XG4gIHZhciBoYXNS
dW50aW1lID0gZmFsc2U7XG4gIHZhciBpLCBsLCBkaXIsIG5lZWRSdW50aW1lO1xuICBmb3IgKGkg
PSAwLCBsID0gZGlycy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBkaXIgPSBkaXJzW2ldO1xu
ICAgIG5lZWRSdW50aW1lID0gdHJ1ZTtcbiAgICB2YXIgZ2VuID0gcGxhdGZvcm1EaXJlY3RpdmVz
JDFbZGlyLm5hbWVdIHx8IGJhc2VEaXJlY3RpdmVzW2Rpci5uYW1lXTtcbiAgICBpZiAoZ2VuKSB7
XG4gICAgICAvLyBjb21waWxlLXRpbWUgZGlyZWN0aXZlIHRoYXQgbWFuaXB1bGF0ZXMgQVNULlxu
ICAgICAgLy8gcmV0dXJucyB0cnVlIGlmIGl0IGFsc28gbmVlZHMgYSBydW50aW1lIGNvdW50ZXJw
YXJ0LlxuICAgICAgbmVlZFJ1bnRpbWUgPSAhIWdlbihlbCwgZGlyLCB3YXJuJDIpO1xuICAgIH1c
biAgICBpZiAobmVlZFJ1bnRpbWUpIHtcbiAgICAgIGhhc1J1bnRpbWUgPSB0cnVlO1xuICAgICAg
cmVzICs9IFwie25hbWU6XFxcIlwiICsgKGRpci5uYW1lKSArIFwiXFxcIixyYXdOYW1lOlxcXCJc
IiArIChkaXIucmF3TmFtZSkgKyBcIlxcXCJcIiArIChkaXIudmFsdWUgPyAoXCIsdmFsdWU6KFwi
ICsgKGRpci52YWx1ZSkgKyBcIiksZXhwcmVzc2lvbjpcIiArIChKU09OLnN0cmluZ2lmeShkaXIu
dmFsdWUpKSkgOiAnJykgKyAoZGlyLmFyZyA/IChcIixhcmc6XFxcIlwiICsgKGRpci5hcmcpICsg
XCJcXFwiXCIpIDogJycpICsgKGRpci5tb2RpZmllcnMgPyAoXCIsbW9kaWZpZXJzOlwiICsgKEpT
T04uc3RyaW5naWZ5KGRpci5tb2RpZmllcnMpKSkgOiAnJykgKyBcIn0sXCI7XG4gICAgfVxuICB9
XG4gIGlmIChoYXNSdW50aW1lKSB7XG4gICAgcmV0dXJuIHJlcy5zbGljZSgwLCAtMSkgKyAnXSdc
biAgfVxufVxuXG5mdW5jdGlvbiBnZW5JbmxpbmVUZW1wbGF0ZSAoZWwpIHtcbiAgdmFyIGFzdCA9
IGVsLmNoaWxkcmVuWzBdO1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJyAmJiAoXG4gICAgZWwuY2hpbGRyZW4ubGVuZ3RoID4gMSB8fCBhc3QudHlwZSAhPT0gMVxu
ICApKSB7XG4gICAgd2FybiQyKCdJbmxpbmUtdGVtcGxhdGUgY29tcG9uZW50cyBtdXN0IGhhdmUg
ZXhhY3RseSBvbmUgY2hpbGQgZWxlbWVudC4nKTtcbiAgfVxuICBpZiAoYXN0LnR5cGUgPT09IDEp
IHtcbiAgICB2YXIgaW5saW5lUmVuZGVyRm5zID0gZ2VuZXJhdGUoYXN0LCBjdXJyZW50T3B0aW9u
cyk7XG4gICAgcmV0dXJuIChcImlubGluZVRlbXBsYXRlOntyZW5kZXI6ZnVuY3Rpb24oKXtcIiAr
IChpbmxpbmVSZW5kZXJGbnMucmVuZGVyKSArIFwifSxzdGF0aWNSZW5kZXJGbnM6W1wiICsgKGlu
bGluZVJlbmRlckZucy5zdGF0aWNSZW5kZXJGbnMubWFwKGZ1bmN0aW9uIChjb2RlKSB7IHJldHVy
biAoXCJmdW5jdGlvbigpe1wiICsgY29kZSArIFwifVwiKTsgfSkuam9pbignLCcpKSArIFwiXX1c
IilcbiAgfVxufVxuXG5mdW5jdGlvbiBnZW5TY29wZWRTbG90cyAoc2xvdHMpIHtcbiAgcmV0dXJu
IChcInNjb3BlZFNsb3RzOntcIiArIChPYmplY3Qua2V5cyhzbG90cykubWFwKGZ1bmN0aW9uIChr
ZXkpIHsgcmV0dXJuIGdlblNjb3BlZFNsb3Qoa2V5LCBzbG90c1trZXldKTsgfSkuam9pbignLCcp
KSArIFwifVwiKVxufVxuXG5mdW5jdGlvbiBnZW5TY29wZWRTbG90IChrZXksIGVsKSB7XG4gIHJl
dHVybiBrZXkgKyBcIjpmdW5jdGlvbihcIiArIChTdHJpbmcoZWwuYXR0cnNNYXAuc2NvcGUpKSAr
IFwiKXtcIiArXG4gICAgXCJyZXR1cm4gXCIgKyAoZWwudGFnID09PSAndGVtcGxhdGUnXG4gICAg
ICA/IGdlbkNoaWxkcmVuKGVsKSB8fCAndm9pZCAwJ1xuICAgICAgOiBnZW5FbGVtZW50KGVsKSkg
KyBcIn1cIlxufVxuXG5mdW5jdGlvbiBnZW5DaGlsZHJlbiAoZWwpIHtcbiAgaWYgKGVsLmNoaWxk
cmVuLmxlbmd0aCkge1xuICAgIHJldHVybiAnWycgKyBlbC5jaGlsZHJlbi5tYXAoZ2VuTm9kZSku
am9pbignLCcpICsgJ10nXG4gIH1cbn1cblxuZnVuY3Rpb24gZ2VuTm9kZSAobm9kZSkge1xuICBp
ZiAobm9kZS50eXBlID09PSAxKSB7XG4gICAgcmV0dXJuIGdlbkVsZW1lbnQobm9kZSlcbiAgfSBl
bHNlIHtcbiAgICByZXR1cm4gZ2VuVGV4dChub2RlKVxuICB9XG59XG5cbmZ1bmN0aW9uIGdlblRl
eHQgKHRleHQpIHtcbiAgcmV0dXJuIHRleHQudHlwZSA9PT0gMlxuICAgID8gdGV4dC5leHByZXNz
aW9uIC8vIG5vIG5lZWQgZm9yICgpIGJlY2F1c2UgYWxyZWFkeSB3cmFwcGVkIGluIF9zKClcbiAg
ICA6IHRyYW5zZm9ybVNwZWNpYWxOZXdsaW5lcyhKU09OLnN0cmluZ2lmeSh0ZXh0LnRleHQpKVxu
fVxuXG5mdW5jdGlvbiBnZW5TbG90IChlbCkge1xuICB2YXIgc2xvdE5hbWUgPSBlbC5zbG90TmFt
ZSB8fCAnXCJkZWZhdWx0XCInO1xuICB2YXIgY2hpbGRyZW4gPSBnZW5DaGlsZHJlbihlbCk7XG4g
IHJldHVybiAoXCJfdChcIiArIHNsb3ROYW1lICsgKGNoaWxkcmVuID8gKFwiLFwiICsgY2hpbGRy
ZW4pIDogJycpICsgKGVsLmF0dHJzID8gKChjaGlsZHJlbiA/ICcnIDogJyxudWxsJykgKyBcIix7
XCIgKyAoZWwuYXR0cnMubWFwKGZ1bmN0aW9uIChhKSB7IHJldHVybiAoKGNhbWVsaXplKGEubmFt
ZSkpICsgXCI6XCIgKyAoYS52YWx1ZSkpOyB9KS5qb2luKCcsJykpICsgXCJ9XCIpIDogJycpICsg
XCIpXCIpXG59XG5cbi8vIGNvbXBvbmVudE5hbWUgaXMgZWwuY29tcG9uZW50LCB0YWtlIGl0IGFz
IGFyZ3VtZW50IHRvIHNodW4gZmxvdydzIHBlc3NpbWlzdGljIHJlZmluZW1lbnRcbmZ1bmN0aW9u
IGdlbkNvbXBvbmVudCAoY29tcG9uZW50TmFtZSwgZWwpIHtcbiAgdmFyIGNoaWxkcmVuID0gZWwu
aW5saW5lVGVtcGxhdGUgPyBudWxsIDogZ2VuQ2hpbGRyZW4oZWwpO1xuICByZXR1cm4gKFwiX2go
XCIgKyBjb21wb25lbnROYW1lICsgXCIsXCIgKyAoZ2VuRGF0YShlbCkpICsgKGNoaWxkcmVuID8g
KFwiLFwiICsgY2hpbGRyZW4pIDogJycpICsgXCIpXCIpXG59XG5cbmZ1bmN0aW9uIGdlblByb3Bz
IChwcm9wcykge1xuICB2YXIgcmVzID0gJyc7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMu
bGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcHJvcCA9IHByb3BzW2ldO1xuICAgIHJlcyArPSBcIlxc
XCJcIiArIChwcm9wLm5hbWUpICsgXCJcXFwiOlwiICsgKHRyYW5zZm9ybVNwZWNpYWxOZXdsaW5l
cyhwcm9wLnZhbHVlKSkgKyBcIixcIjtcbiAgfVxuICByZXR1cm4gcmVzLnNsaWNlKDAsIC0xKVxu
fVxuXG4vLyAjMzg5NSwgIzQyNjhcbmZ1bmN0aW9uIHRyYW5zZm9ybVNwZWNpYWxOZXdsaW5lcyAo
dGV4dCkge1xuICByZXR1cm4gdGV4dFxuICAgIC5yZXBsYWNlKC9cXHUyMDI4L2csICdcXFxcdTIw
MjgnKVxuICAgIC5yZXBsYWNlKC9cXHUyMDI5L2csICdcXFxcdTIwMjknKVxufVxuXG4vKiAgKi9c
blxuLyoqXG4gKiBDb21waWxlIGEgdGVtcGxhdGUuXG4gKi9cbmZ1bmN0aW9uIGNvbXBpbGUkMSAo
XG4gIHRlbXBsYXRlLFxuICBvcHRpb25zXG4pIHtcbiAgdmFyIGFzdCA9IHBhcnNlKHRlbXBsYXRl
LnRyaW0oKSwgb3B0aW9ucyk7XG4gIG9wdGltaXplKGFzdCwgb3B0aW9ucyk7XG4gIHZhciBjb2Rl
ID0gZ2VuZXJhdGUoYXN0LCBvcHRpb25zKTtcbiAgcmV0dXJuIHtcbiAgICBhc3Q6IGFzdCxcbiAg
ICByZW5kZXI6IGNvZGUucmVuZGVyLFxuICAgIHN0YXRpY1JlbmRlckZuczogY29kZS5zdGF0aWNS
ZW5kZXJGbnNcbiAgfVxufVxuXG4vKiAgKi9cblxuLy8gb3BlcmF0b3JzIGxpa2UgdHlwZW9mLCBp
bnN0YW5jZW9mIGFuZCBpbiBhcmUgYWxsb3dlZFxudmFyIHByb2hpYml0ZWRLZXl3b3JkUkUgPSBu
ZXcgUmVnRXhwKCdcXFxcYicgKyAoXG4gICdkbyxpZixmb3IsbGV0LG5ldyx0cnksdmFyLGNhc2Us
ZWxzZSx3aXRoLGF3YWl0LGJyZWFrLGNhdGNoLGNsYXNzLGNvbnN0LCcgK1xuICAnc3VwZXIsdGhy
b3csd2hpbGUseWllbGQsZGVsZXRlLGV4cG9ydCxpbXBvcnQscmV0dXJuLHN3aXRjaCxkZWZhdWx0
LCcgK1xuICAnZXh0ZW5kcyxmaW5hbGx5LGNvbnRpbnVlLGRlYnVnZ2VyLGZ1bmN0aW9uLGFyZ3Vt
ZW50cydcbikuc3BsaXQoJywnKS5qb2luKCdcXFxcYnxcXFxcYicpICsgJ1xcXFxiJyk7XG4vLyBj
aGVjayB2YWxpZCBpZGVudGlmaWVyIGZvciB2LWZvclxudmFyIGlkZW50UkUgPSAvW0EtWmEtel8k
XVtcXHckXSovO1xuLy8gc3RyaXAgc3RyaW5ncyBpbiBleHByZXNzaW9uc1xudmFyIHN0cmlwU3Ry
aW5nUkUgPSAvJyg/OlteJ1xcXFxdfFxcXFwuKSonfFwiKD86W15cIlxcXFxdfFxcXFwuKSpcInxg
KD86W15gXFxcXF18XFxcXC4pKlxcJFxce3xcXH0oPzpbXmBcXFxcXXxcXFxcLikqYHxgKD86W15g
XFxcXF18XFxcXC4pKmAvZztcblxuLy8gZGV0ZWN0IHByb2JsZW1hdGljIGV4cHJlc3Npb25zIGlu
IGEgdGVtcGxhdGVcbmZ1bmN0aW9uIGRldGVjdEVycm9ycyAoYXN0KSB7XG4gIHZhciBlcnJvcnMg
PSBbXTtcbiAgaWYgKGFzdCkge1xuICAgIGNoZWNrTm9kZShhc3QsIGVycm9ycyk7XG4gIH1cbiAg
cmV0dXJuIGVycm9yc1xufVxuXG5mdW5jdGlvbiBjaGVja05vZGUgKG5vZGUsIGVycm9ycykge1xu
ICBpZiAobm9kZS50eXBlID09PSAxKSB7XG4gICAgZm9yICh2YXIgbmFtZSBpbiBub2RlLmF0dHJz
TWFwKSB7XG4gICAgICBpZiAoZGlyUkUudGVzdChuYW1lKSkge1xuICAgICAgICB2YXIgdmFsdWUg
PSBub2RlLmF0dHJzTWFwW25hbWVdO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICBp
ZiAobmFtZSA9PT0gJ3YtZm9yJykge1xuICAgICAgICAgICAgY2hlY2tGb3Iobm9kZSwgKFwidi1m
b3I9XFxcIlwiICsgdmFsdWUgKyBcIlxcXCJcIiksIGVycm9ycyk7XG4gICAgICAgICAgfSBlbHNl
IHtcbiAgICAgICAgICAgIGNoZWNrRXhwcmVzc2lvbih2YWx1ZSwgKG5hbWUgKyBcIj1cXFwiXCIg
KyB2YWx1ZSArIFwiXFxcIlwiKSwgZXJyb3JzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAg
ICAgIH1cbiAgICB9XG4gICAgaWYgKG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgbm9kZS5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICBjaGVja05vZGUo
bm9kZS5jaGlsZHJlbltpXSwgZXJyb3JzKTtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAo
bm9kZS50eXBlID09PSAyKSB7XG4gICAgY2hlY2tFeHByZXNzaW9uKG5vZGUuZXhwcmVzc2lvbiwg
bm9kZS50ZXh0LCBlcnJvcnMpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNoZWNrRm9yIChub2RlLCB0
ZXh0LCBlcnJvcnMpIHtcbiAgY2hlY2tFeHByZXNzaW9uKG5vZGUuZm9yIHx8ICcnLCB0ZXh0LCBl
cnJvcnMpO1xuICBjaGVja0lkZW50aWZpZXIobm9kZS5hbGlhcywgJ3YtZm9yIGFsaWFzJywgdGV4
dCwgZXJyb3JzKTtcbiAgY2hlY2tJZGVudGlmaWVyKG5vZGUuaXRlcmF0b3IxLCAndi1mb3IgaXRl
cmF0b3InLCB0ZXh0LCBlcnJvcnMpO1xuICBjaGVja0lkZW50aWZpZXIobm9kZS5pdGVyYXRvcjIs
ICd2LWZvciBpdGVyYXRvcicsIHRleHQsIGVycm9ycyk7XG59XG5cbmZ1bmN0aW9uIGNoZWNrSWRl
bnRpZmllciAoaWRlbnQsIHR5cGUsIHRleHQsIGVycm9ycykge1xuICBpZiAodHlwZW9mIGlkZW50
ID09PSAnc3RyaW5nJyAmJiAhaWRlbnRSRS50ZXN0KGlkZW50KSkge1xuICAgIGVycm9ycy5wdXNo
KChcIi0gaW52YWxpZCBcIiArIHR5cGUgKyBcIiBcXFwiXCIgKyBpZGVudCArIFwiXFxcIiBpbiBl
eHByZXNzaW9uOiBcIiArIHRleHQpKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjaGVja0V4cHJlc3Np
b24gKGV4cCwgdGV4dCwgZXJyb3JzKSB7XG4gIHRyeSB7XG4gICAgbmV3IEZ1bmN0aW9uKChcInJl
dHVybiBcIiArIGV4cCkpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgdmFyIGtleXdvcmRNYXRjaCA9
IGV4cC5yZXBsYWNlKHN0cmlwU3RyaW5nUkUsICcnKS5tYXRjaChwcm9oaWJpdGVkS2V5d29yZFJF
KTtcbiAgICBpZiAoa2V5d29yZE1hdGNoKSB7XG4gICAgICBlcnJvcnMucHVzaChcbiAgICAgICAg
XCItIGF2b2lkIHVzaW5nIEphdmFTY3JpcHQga2V5d29yZCBhcyBwcm9wZXJ0eSBuYW1lOiBcIiAr
XG4gICAgICAgIFwiXFxcIlwiICsgKGtleXdvcmRNYXRjaFswXSkgKyBcIlxcXCIgaW4gZXhwcmVz
c2lvbiBcIiArIHRleHRcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVycm9ycy5wdXNo
KChcIi0gaW52YWxpZCBleHByZXNzaW9uOiBcIiArIHRleHQpKTtcbiAgICB9XG4gIH1cbn1cblxu
LyogICovXG5cbmZ1bmN0aW9uIHRyYW5zZm9ybU5vZGUgKGVsLCBvcHRpb25zKSB7XG4gIHZhciB3
YXJuID0gb3B0aW9ucy53YXJuIHx8IGJhc2VXYXJuO1xuICB2YXIgc3RhdGljQ2xhc3MgPSBnZXRB
bmRSZW1vdmVBdHRyKGVsLCAnY2xhc3MnKTtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9
PSAncHJvZHVjdGlvbicgJiYgc3RhdGljQ2xhc3MpIHtcbiAgICB2YXIgZXhwcmVzc2lvbiA9IHBh
cnNlVGV4dChzdGF0aWNDbGFzcywgb3B0aW9ucy5kZWxpbWl0ZXJzKTtcbiAgICBpZiAoZXhwcmVz
c2lvbikge1xuICAgICAgd2FybihcbiAgICAgICAgXCJjbGFzcz1cXFwiXCIgKyBzdGF0aWNDbGFz
cyArIFwiXFxcIjogXCIgK1xuICAgICAgICAnSW50ZXJwb2xhdGlvbiBpbnNpZGUgYXR0cmlidXRl
cyBoYXMgYmVlbiByZW1vdmVkLiAnICtcbiAgICAgICAgJ1VzZSB2LWJpbmQgb3IgdGhlIGNvbG9u
IHNob3J0aGFuZCBpbnN0ZWFkLiBGb3IgZXhhbXBsZSwgJyArXG4gICAgICAgICdpbnN0ZWFkIG9m
IDxkaXYgY2xhc3M9XCJ7eyB2YWwgfX1cIj4sIHVzZSA8ZGl2IDpjbGFzcz1cInZhbFwiPi4nXG4g
ICAgICApO1xuICAgIH1cbiAgfVxuICBpZiAoc3RhdGljQ2xhc3MpIHtcbiAgICBlbC5zdGF0aWND
bGFzcyA9IEpTT04uc3RyaW5naWZ5KHN0YXRpY0NsYXNzKTtcbiAgfVxuICB2YXIgY2xhc3NCaW5k
aW5nID0gZ2V0QmluZGluZ0F0dHIoZWwsICdjbGFzcycsIGZhbHNlIC8qIGdldFN0YXRpYyAqLyk7
XG4gIGlmIChjbGFzc0JpbmRpbmcpIHtcbiAgICBlbC5jbGFzc0JpbmRpbmcgPSBjbGFzc0JpbmRp
bmc7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2VuRGF0YSQxIChlbCkge1xuICB2YXIgZGF0YSA9ICcn
O1xuICBpZiAoZWwuc3RhdGljQ2xhc3MpIHtcbiAgICBkYXRhICs9IFwic3RhdGljQ2xhc3M6XCIg
KyAoZWwuc3RhdGljQ2xhc3MpICsgXCIsXCI7XG4gIH1cbiAgaWYgKGVsLmNsYXNzQmluZGluZykg
e1xuICAgIGRhdGEgKz0gXCJjbGFzczpcIiArIChlbC5jbGFzc0JpbmRpbmcpICsgXCIsXCI7XG4g
IH1cbiAgcmV0dXJuIGRhdGFcbn1cblxudmFyIGtsYXNzJDEgPSB7XG4gIHN0YXRpY0tleXM6IFsn
c3RhdGljQ2xhc3MnXSxcbiAgdHJhbnNmb3JtTm9kZTogdHJhbnNmb3JtTm9kZSxcbiAgZ2VuRGF0
YTogZ2VuRGF0YSQxXG59O1xuXG4vKiAgKi9cblxuZnVuY3Rpb24gdHJhbnNmb3JtTm9kZSQxIChl
bCwgb3B0aW9ucykge1xuICB2YXIgd2FybiA9IG9wdGlvbnMud2FybiB8fCBiYXNlV2FybjtcbiAg
dmFyIHN0YXRpY1N0eWxlID0gZ2V0QW5kUmVtb3ZlQXR0cihlbCwgJ3N0eWxlJyk7XG4gIGlmIChz
dGF0aWNTdHlsZSkge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmIChwcm9j
ZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB2YXIgZXhwcmVzc2lv
biA9IHBhcnNlVGV4dChzdGF0aWNTdHlsZSwgb3B0aW9ucy5kZWxpbWl0ZXJzKTtcbiAgICAgIGlm
IChleHByZXNzaW9uKSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgXCJzdHlsZT1cXFwiXCIg
KyBzdGF0aWNTdHlsZSArIFwiXFxcIjogXCIgK1xuICAgICAgICAgICdJbnRlcnBvbGF0aW9uIGlu
c2lkZSBhdHRyaWJ1dGVzIGhhcyBiZWVuIHJlbW92ZWQuICcgK1xuICAgICAgICAgICdVc2Ugdi1i
aW5kIG9yIHRoZSBjb2xvbiBzaG9ydGhhbmQgaW5zdGVhZC4gRm9yIGV4YW1wbGUsICcgK1xuICAg
ICAgICAgICdpbnN0ZWFkIG9mIDxkaXYgc3R5bGU9XCJ7eyB2YWwgfX1cIj4sIHVzZSA8ZGl2IDpz
dHlsZT1cInZhbFwiPi4nXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIGVsLnN0YXRp
Y1N0eWxlID0gSlNPTi5zdHJpbmdpZnkocGFyc2VTdHlsZVRleHQoc3RhdGljU3R5bGUpKTtcbiAg
fVxuXG4gIHZhciBzdHlsZUJpbmRpbmcgPSBnZXRCaW5kaW5nQXR0cihlbCwgJ3N0eWxlJywgZmFs
c2UgLyogZ2V0U3RhdGljICovKTtcbiAgaWYgKHN0eWxlQmluZGluZykge1xuICAgIGVsLnN0eWxl
QmluZGluZyA9IHN0eWxlQmluZGluZztcbiAgfVxufVxuXG5mdW5jdGlvbiBnZW5EYXRhJDIgKGVs
KSB7XG4gIHZhciBkYXRhID0gJyc7XG4gIGlmIChlbC5zdGF0aWNTdHlsZSkge1xuICAgIGRhdGEg
Kz0gXCJzdGF0aWNTdHlsZTpcIiArIChlbC5zdGF0aWNTdHlsZSkgKyBcIixcIjtcbiAgfVxuICBp
ZiAoZWwuc3R5bGVCaW5kaW5nKSB7XG4gICAgZGF0YSArPSBcInN0eWxlOihcIiArIChlbC5zdHls
ZUJpbmRpbmcpICsgXCIpLFwiO1xuICB9XG4gIHJldHVybiBkYXRhXG59XG5cbnZhciBzdHlsZSQx
ID0ge1xuICBzdGF0aWNLZXlzOiBbJ3N0YXRpY1N0eWxlJ10sXG4gIHRyYW5zZm9ybU5vZGU6IHRy
YW5zZm9ybU5vZGUkMSxcbiAgZ2VuRGF0YTogZ2VuRGF0YSQyXG59O1xuXG52YXIgbW9kdWxlcyQx
ID0gW1xuICBrbGFzcyQxLFxuICBzdHlsZSQxXG5dO1xuXG4vKiAgKi9cblxudmFyIHdhcm4kMztc
blxuZnVuY3Rpb24gbW9kZWwkMSAoXG4gIGVsLFxuICBkaXIsXG4gIF93YXJuXG4pIHtcbiAgd2Fy
biQzID0gX3dhcm47XG4gIHZhciB2YWx1ZSA9IGRpci52YWx1ZTtcbiAgdmFyIG1vZGlmaWVycyA9
IGRpci5tb2RpZmllcnM7XG4gIHZhciB0YWcgPSBlbC50YWc7XG4gIHZhciB0eXBlID0gZWwuYXR0
cnNNYXAudHlwZTtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicp
IHtcbiAgICB2YXIgZHluYW1pY1R5cGUgPSBlbC5hdHRyc01hcFsndi1iaW5kOnR5cGUnXSB8fCBl
bC5hdHRyc01hcFsnOnR5cGUnXTtcbiAgICBpZiAodGFnID09PSAnaW5wdXQnICYmIGR5bmFtaWNU
eXBlKSB7XG4gICAgICB3YXJuJDMoXG4gICAgICAgIFwiPGlucHV0IDp0eXBlPVxcXCJcIiArIGR5
bmFtaWNUeXBlICsgXCJcXFwiIHYtbW9kZWw9XFxcIlwiICsgdmFsdWUgKyBcIlxcXCI+Olxcblwi
ICtcbiAgICAgICAgXCJ2LW1vZGVsIGRvZXMgbm90IHN1cHBvcnQgZHluYW1pYyBpbnB1dCB0eXBl
cy4gVXNlIHYtaWYgYnJhbmNoZXMgaW5zdGVhZC5cIlxuICAgICAgKTtcbiAgICB9XG4gIH1cbiAg
aWYgKHRhZyA9PT0gJ3NlbGVjdCcpIHtcbiAgICBnZW5TZWxlY3QoZWwsIHZhbHVlLCBtb2RpZmll
cnMpO1xuICB9IGVsc2UgaWYgKHRhZyA9PT0gJ2lucHV0JyAmJiB0eXBlID09PSAnY2hlY2tib3gn
KSB7XG4gICAgZ2VuQ2hlY2tib3hNb2RlbChlbCwgdmFsdWUsIG1vZGlmaWVycyk7XG4gIH0gZWxz
ZSBpZiAodGFnID09PSAnaW5wdXQnICYmIHR5cGUgPT09ICdyYWRpbycpIHtcbiAgICBnZW5SYWRp
b01vZGVsKGVsLCB2YWx1ZSwgbW9kaWZpZXJzKTtcbiAgfSBlbHNlIHtcbiAgICBnZW5EZWZhdWx0
TW9kZWwoZWwsIHZhbHVlLCBtb2RpZmllcnMpO1xuICB9XG4gIC8vIGVuc3VyZSBydW50aW1lIGRp
cmVjdGl2ZSBtZXRhZGF0YVxuICByZXR1cm4gdHJ1ZVxufVxuXG5mdW5jdGlvbiBnZW5DaGVja2Jv
eE1vZGVsIChcbiAgZWwsXG4gIHZhbHVlLFxuICBtb2RpZmllcnNcbikge1xuICBpZiAocHJvY2Vz
cy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJlxuICAgIGVsLmF0dHJzTWFwLmNoZWNr
ZWQgIT0gbnVsbCkge1xuICAgIHdhcm4kMyhcbiAgICAgIFwiPFwiICsgKGVsLnRhZykgKyBcIiB2
LW1vZGVsPVxcXCJcIiArIHZhbHVlICsgXCJcXFwiIGNoZWNrZWQ+OlxcblwiICtcbiAgICAgIFwi
aW5saW5lIGNoZWNrZWQgYXR0cmlidXRlcyB3aWxsIGJlIGlnbm9yZWQgd2hlbiB1c2luZyB2LW1v
ZGVsLiBcIiArXG4gICAgICAnRGVjbGFyZSBpbml0aWFsIHZhbHVlcyBpbiB0aGUgY29tcG9uZW50
XFwncyBkYXRhIG9wdGlvbiBpbnN0ZWFkLidcbiAgICApO1xuICB9XG4gIHZhciBudW1iZXIgPSBt
b2RpZmllcnMgJiYgbW9kaWZpZXJzLm51bWJlcjtcbiAgdmFyIHZhbHVlQmluZGluZyA9IGdldEJp
bmRpbmdBdHRyKGVsLCAndmFsdWUnKSB8fCAnbnVsbCc7XG4gIHZhciB0cnVlVmFsdWVCaW5kaW5n
ID0gZ2V0QmluZGluZ0F0dHIoZWwsICd0cnVlLXZhbHVlJykgfHwgJ3RydWUnO1xuICB2YXIgZmFs
c2VWYWx1ZUJpbmRpbmcgPSBnZXRCaW5kaW5nQXR0cihlbCwgJ2ZhbHNlLXZhbHVlJykgfHwgJ2Zh
bHNlJztcbiAgYWRkUHJvcChlbCwgJ2NoZWNrZWQnLFxuICAgIFwiQXJyYXkuaXNBcnJheShcIiAr
IHZhbHVlICsgXCIpXCIgK1xuICAgICAgXCI/X2koXCIgKyB2YWx1ZSArIFwiLFwiICsgdmFsdWVC
aW5kaW5nICsgXCIpPi0xXCIgK1xuICAgICAgXCI6X3EoXCIgKyB2YWx1ZSArIFwiLFwiICsgdHJ1
ZVZhbHVlQmluZGluZyArIFwiKVwiXG4gICk7XG4gIGFkZEhhbmRsZXIoZWwsICdjaGFuZ2UnLFxu
ICAgIFwidmFyICQkYT1cIiArIHZhbHVlICsgXCIsXCIgK1xuICAgICAgICAnJCRlbD0kZXZlbnQu
dGFyZ2V0LCcgK1xuICAgICAgICBcIiQkYz0kJGVsLmNoZWNrZWQ/KFwiICsgdHJ1ZVZhbHVlQmlu
ZGluZyArIFwiKTooXCIgKyBmYWxzZVZhbHVlQmluZGluZyArIFwiKTtcIiArXG4gICAgJ2lmKEFy
cmF5LmlzQXJyYXkoJCRhKSl7JyArXG4gICAgICBcInZhciAkJHY9XCIgKyAobnVtYmVyID8gJ19u
KCcgKyB2YWx1ZUJpbmRpbmcgKyAnKScgOiB2YWx1ZUJpbmRpbmcpICsgXCIsXCIgK1xuICAgICAg
ICAgICckJGk9X2koJCRhLCQkdik7JyArXG4gICAgICBcImlmKCQkYyl7JCRpPDAmJihcIiArIHZh
bHVlICsgXCI9JCRhLmNvbmNhdCgkJHYpKX1cIiArXG4gICAgICBcImVsc2V7JCRpPi0xJiYoXCIg
KyB2YWx1ZSArIFwiPSQkYS5zbGljZSgwLCQkaSkuY29uY2F0KCQkYS5zbGljZSgkJGkrMSkpKX1c
IiArXG4gICAgXCJ9ZWxzZXtcIiArIHZhbHVlICsgXCI9JCRjfVwiLFxuICAgIG51bGwsIHRydWVc
biAgKTtcbn1cblxuZnVuY3Rpb24gZ2VuUmFkaW9Nb2RlbCAoXG4gICAgZWwsXG4gICAgdmFsdWUs
XG4gICAgbW9kaWZpZXJzXG4pIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJv
ZHVjdGlvbicgJiZcbiAgICBlbC5hdHRyc01hcC5jaGVja2VkICE9IG51bGwpIHtcbiAgICB3YXJu
JDMoXG4gICAgICBcIjxcIiArIChlbC50YWcpICsgXCIgdi1tb2RlbD1cXFwiXCIgKyB2YWx1ZSAr
IFwiXFxcIiBjaGVja2VkPjpcXG5cIiArXG4gICAgICBcImlubGluZSBjaGVja2VkIGF0dHJpYnV0
ZXMgd2lsbCBiZSBpZ25vcmVkIHdoZW4gdXNpbmcgdi1tb2RlbC4gXCIgK1xuICAgICAgJ0RlY2xh
cmUgaW5pdGlhbCB2YWx1ZXMgaW4gdGhlIGNvbXBvbmVudFxcJ3MgZGF0YSBvcHRpb24gaW5zdGVh
ZC4nXG4gICAgKTtcbiAgfVxuICB2YXIgbnVtYmVyID0gbW9kaWZpZXJzICYmIG1vZGlmaWVycy5u
dW1iZXI7XG4gIHZhciB2YWx1ZUJpbmRpbmcgPSBnZXRCaW5kaW5nQXR0cihlbCwgJ3ZhbHVlJykg
fHwgJ251bGwnO1xuICB2YWx1ZUJpbmRpbmcgPSBudW1iZXIgPyAoXCJfbihcIiArIHZhbHVlQmlu
ZGluZyArIFwiKVwiKSA6IHZhbHVlQmluZGluZztcbiAgYWRkUHJvcChlbCwgJ2NoZWNrZWQnLCAo
XCJfcShcIiArIHZhbHVlICsgXCIsXCIgKyB2YWx1ZUJpbmRpbmcgKyBcIilcIikpO1xuICBhZGRI
YW5kbGVyKGVsLCAnY2hhbmdlJywgZ2VuQXNzaWdubWVudENvZGUodmFsdWUsIHZhbHVlQmluZGlu
ZyksIG51bGwsIHRydWUpO1xufVxuXG5mdW5jdGlvbiBnZW5EZWZhdWx0TW9kZWwgKFxuICBlbCxc
biAgdmFsdWUsXG4gIG1vZGlmaWVyc1xuKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAh
PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgaWYgKGVsLnRhZyA9PT0gJ2lucHV0JyAmJiBlbC5hdHRy
c01hcC52YWx1ZSkge1xuICAgICAgd2FybiQzKFxuICAgICAgICBcIjxcIiArIChlbC50YWcpICsg
XCIgdi1tb2RlbD1cXFwiXCIgKyB2YWx1ZSArIFwiXFxcIiB2YWx1ZT1cXFwiXCIgKyAoZWwuYXR0
cnNNYXAudmFsdWUpICsgXCJcXFwiPjpcXG5cIiArXG4gICAgICAgICdpbmxpbmUgdmFsdWUgYXR0
cmlidXRlcyB3aWxsIGJlIGlnbm9yZWQgd2hlbiB1c2luZyB2LW1vZGVsLiAnICtcbiAgICAgICAg
J0RlY2xhcmUgaW5pdGlhbCB2YWx1ZXMgaW4gdGhlIGNvbXBvbmVudFxcJ3MgZGF0YSBvcHRpb24g
aW5zdGVhZC4nXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoZWwudGFnID09PSAndGV4dGFyZWEn
ICYmIGVsLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgd2FybiQzKFxuICAgICAgICBcIjx0ZXh0
YXJlYSB2LW1vZGVsPVxcXCJcIiArIHZhbHVlICsgXCJcXFwiPjpcXG5cIiArXG4gICAgICAgICdp
bmxpbmUgY29udGVudCBpbnNpZGUgPHRleHRhcmVhPiB3aWxsIGJlIGlnbm9yZWQgd2hlbiB1c2lu
ZyB2LW1vZGVsLiAnICtcbiAgICAgICAgJ0RlY2xhcmUgaW5pdGlhbCB2YWx1ZXMgaW4gdGhlIGNv
bXBvbmVudFxcJ3MgZGF0YSBvcHRpb24gaW5zdGVhZC4nXG4gICAgICApO1xuICAgIH1cbiAgfVxu
XG4gIHZhciB0eXBlID0gZWwuYXR0cnNNYXAudHlwZTtcbiAgdmFyIHJlZiA9IG1vZGlmaWVycyB8
fCB7fTtcbiAgdmFyIGxhenkgPSByZWYubGF6eTtcbiAgdmFyIG51bWJlciA9IHJlZi5udW1iZXI7
XG4gIHZhciB0cmltID0gcmVmLnRyaW07XG4gIHZhciBldmVudCA9IGxhenkgfHwgKGlzSUUgJiYg
dHlwZSA9PT0gJ3JhbmdlJykgPyAnY2hhbmdlJyA6ICdpbnB1dCc7XG4gIHZhciBuZWVkQ29tcG9z
aXRpb25HdWFyZCA9ICFsYXp5ICYmIHR5cGUgIT09ICdyYW5nZSc7XG4gIHZhciBpc05hdGl2ZSA9
IGVsLnRhZyA9PT0gJ2lucHV0JyB8fCBlbC50YWcgPT09ICd0ZXh0YXJlYSc7XG5cbiAgdmFyIHZh
bHVlRXhwcmVzc2lvbiA9IGlzTmF0aXZlXG4gICAgPyAoXCIkZXZlbnQudGFyZ2V0LnZhbHVlXCIg
KyAodHJpbSA/ICcudHJpbSgpJyA6ICcnKSlcbiAgICA6IHRyaW0gPyBcIih0eXBlb2YgJGV2ZW50
ID09PSAnc3RyaW5nJyA/ICRldmVudC50cmltKCkgOiAkZXZlbnQpXCIgOiBcIiRldmVudFwiO1xu
ICB2YWx1ZUV4cHJlc3Npb24gPSBudW1iZXIgfHwgdHlwZSA9PT0gJ251bWJlcidcbiAgICA/IChc
Il9uKFwiICsgdmFsdWVFeHByZXNzaW9uICsgXCIpXCIpXG4gICAgOiB2YWx1ZUV4cHJlc3Npb247
XG4gIHZhciBjb2RlID0gZ2VuQXNzaWdubWVudENvZGUodmFsdWUsIHZhbHVlRXhwcmVzc2lvbik7
XG4gIGlmIChpc05hdGl2ZSAmJiBuZWVkQ29tcG9zaXRpb25HdWFyZCkge1xuICAgIGNvZGUgPSBc
ImlmKCRldmVudC50YXJnZXQuY29tcG9zaW5nKXJldHVybjtcIiArIGNvZGU7XG4gIH1cbiAgLy8g
aW5wdXRzIHdpdGggdHlwZT1cImZpbGVcIiBhcmUgcmVhZCBvbmx5IGFuZCBzZXR0aW5nIHRoZSBp
bnB1dCdzXG4gIC8vIHZhbHVlIHdpbGwgdGhyb3cgYW4gZXJyb3IuXG4gIGlmIChwcm9jZXNzLmVu
di5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmXG4gICAgICB0eXBlID09PSAnZmlsZScpIHtc
biAgICB3YXJuJDMoXG4gICAgICBcIjxcIiArIChlbC50YWcpICsgXCIgdi1tb2RlbD1cXFwiXCIg
KyB2YWx1ZSArIFwiXFxcIiB0eXBlPVxcXCJmaWxlXFxcIj46XFxuXCIgK1xuICAgICAgXCJGaWxl
IGlucHV0cyBhcmUgcmVhZCBvbmx5LiBVc2UgYSB2LW9uOmNoYW5nZSBsaXN0ZW5lciBpbnN0ZWFk
LlwiXG4gICAgKTtcbiAgfVxuICBhZGRQcm9wKGVsLCAndmFsdWUnLCBpc05hdGl2ZSA/IChcIl9z
KFwiICsgdmFsdWUgKyBcIilcIikgOiAoXCIoXCIgKyB2YWx1ZSArIFwiKVwiKSk7XG4gIGFkZEhh
bmRsZXIoZWwsIGV2ZW50LCBjb2RlLCBudWxsLCB0cnVlKTtcbn1cblxuZnVuY3Rpb24gZ2VuU2Vs
ZWN0IChcbiAgICBlbCxcbiAgICB2YWx1ZSxcbiAgICBtb2RpZmllcnNcbikge1xuICBpZiAocHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGVsLmNoaWxkcmVuLnNv
bWUoY2hlY2tPcHRpb25XYXJuaW5nKTtcbiAgfVxuXG4gIHZhciBudW1iZXIgPSBtb2RpZmllcnMg
JiYgbW9kaWZpZXJzLm51bWJlcjtcbiAgdmFyIGFzc2lnbm1lbnQgPSBcIkFycmF5LnByb3RvdHlw
ZS5maWx0ZXJcIiArXG4gICAgXCIuY2FsbCgkZXZlbnQudGFyZ2V0Lm9wdGlvbnMsZnVuY3Rpb24o
byl7cmV0dXJuIG8uc2VsZWN0ZWR9KVwiICtcbiAgICBcIi5tYXAoZnVuY3Rpb24obyl7dmFyIHZh
bCA9IFxcXCJfdmFsdWVcXFwiIGluIG8gPyBvLl92YWx1ZSA6IG8udmFsdWU7XCIgK1xuICAgIFwi
cmV0dXJuIFwiICsgKG51bWJlciA/ICdfbih2YWwpJyA6ICd2YWwnKSArIFwifSlcIiArXG4gICAg
KGVsLmF0dHJzTWFwLm11bHRpcGxlID09IG51bGwgPyAnWzBdJyA6ICcnKTtcblxuICB2YXIgY29k
ZSA9IGdlbkFzc2lnbm1lbnRDb2RlKHZhbHVlLCBhc3NpZ25tZW50KTtcbiAgYWRkSGFuZGxlcihl
bCwgJ2NoYW5nZScsIGNvZGUsIG51bGwsIHRydWUpO1xufVxuXG5mdW5jdGlvbiBjaGVja09wdGlv
bldhcm5pbmcgKG9wdGlvbikge1xuICBpZiAob3B0aW9uLnR5cGUgPT09IDEgJiZcbiAgICBvcHRp
b24udGFnID09PSAnb3B0aW9uJyAmJlxuICAgIG9wdGlvbi5hdHRyc01hcC5zZWxlY3RlZCAhPSBu
dWxsKSB7XG4gICAgd2FybiQzKFxuICAgICAgXCI8c2VsZWN0IHYtbW9kZWw9XFxcIlwiICsgKG9w
dGlvbi5wYXJlbnQuYXR0cnNNYXBbJ3YtbW9kZWwnXSkgKyBcIlxcXCI+OlxcblwiICtcbiAgICAg
ICdpbmxpbmUgc2VsZWN0ZWQgYXR0cmlidXRlcyBvbiA8b3B0aW9uPiB3aWxsIGJlIGlnbm9yZWQg
d2hlbiB1c2luZyB2LW1vZGVsLiAnICtcbiAgICAgICdEZWNsYXJlIGluaXRpYWwgdmFsdWVzIGlu
IHRoZSBjb21wb25lbnRcXCdzIGRhdGEgb3B0aW9uIGluc3RlYWQuJ1xuICAgICk7XG4gICAgcmV0
dXJuIHRydWVcbiAgfVxuICByZXR1cm4gZmFsc2Vcbn1cblxuZnVuY3Rpb24gZ2VuQXNzaWdubWVu
dENvZGUgKHZhbHVlLCBhc3NpZ25tZW50KSB7XG4gIHZhciBtb2RlbFJzID0gcGFyc2VNb2RlbCh2
YWx1ZSk7XG4gIGlmIChtb2RlbFJzLmlkeCA9PT0gbnVsbCkge1xuICAgIHJldHVybiAodmFsdWUg
KyBcIj1cIiArIGFzc2lnbm1lbnQpXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIFwidmFyICQkZXhw
ID0gXCIgKyAobW9kZWxScy5leHApICsgXCIsICQkaWR4ID0gXCIgKyAobW9kZWxScy5pZHgpICsg
XCI7XCIgK1xuICAgICAgXCJpZiAoIUFycmF5LmlzQXJyYXkoJCRleHApKXtcIiArXG4gICAgICAg
IHZhbHVlICsgXCI9XCIgKyBhc3NpZ25tZW50ICsgXCJ9XCIgK1xuICAgICAgXCJlbHNleyQkZXhw
LnNwbGljZSgkJGlkeCwgMSwgXCIgKyBhc3NpZ25tZW50ICsgXCIpfVwiXG4gIH1cbn1cblxuLyog
ICovXG5cbmZ1bmN0aW9uIHRleHQgKGVsLCBkaXIpIHtcbiAgaWYgKGRpci52YWx1ZSkge1xuICAg
IGFkZFByb3AoZWwsICd0ZXh0Q29udGVudCcsIChcIl9zKFwiICsgKGRpci52YWx1ZSkgKyBcIilc
IikpO1xuICB9XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBodG1sIChlbCwgZGlyKSB7XG4gIGlm
IChkaXIudmFsdWUpIHtcbiAgICBhZGRQcm9wKGVsLCAnaW5uZXJIVE1MJywgKFwiX3MoXCIgKyAo
ZGlyLnZhbHVlKSArIFwiKVwiKSk7XG4gIH1cbn1cblxudmFyIGRpcmVjdGl2ZXMkMSA9IHtcbiAg
bW9kZWw6IG1vZGVsJDEsXG4gIHRleHQ6IHRleHQsXG4gIGh0bWw6IGh0bWxcbn07XG5cbi8qICAq
L1xuXG52YXIgY2FjaGUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG52YXIgYmFzZU9wdGlvbnMg
PSB7XG4gIGV4cGVjdEhUTUw6IHRydWUsXG4gIG1vZHVsZXM6IG1vZHVsZXMkMSxcbiAgc3RhdGlj
S2V5czogZ2VuU3RhdGljS2V5cyhtb2R1bGVzJDEpLFxuICBkaXJlY3RpdmVzOiBkaXJlY3RpdmVz
JDEsXG4gIGlzUmVzZXJ2ZWRUYWc6IGlzUmVzZXJ2ZWRUYWcsXG4gIGlzVW5hcnlUYWc6IGlzVW5h
cnlUYWcsXG4gIG11c3RVc2VQcm9wOiBtdXN0VXNlUHJvcCxcbiAgZ2V0VGFnTmFtZXNwYWNlOiBn
ZXRUYWdOYW1lc3BhY2UsXG4gIGlzUHJlVGFnOiBpc1ByZVRhZ1xufTtcblxuZnVuY3Rpb24gY29t
cGlsZSQkMSAoXG4gIHRlbXBsYXRlLFxuICBvcHRpb25zXG4pIHtcbiAgb3B0aW9ucyA9IG9wdGlv
bnNcbiAgICA/IGV4dGVuZChleHRlbmQoe30sIGJhc2VPcHRpb25zKSwgb3B0aW9ucylcbiAgICA6
IGJhc2VPcHRpb25zO1xuICByZXR1cm4gY29tcGlsZSQxKHRlbXBsYXRlLCBvcHRpb25zKVxufVxu
XG5mdW5jdGlvbiBjb21waWxlVG9GdW5jdGlvbnMgKFxuICB0ZW1wbGF0ZSxcbiAgb3B0aW9ucyxc
biAgdm1cbikge1xuICB2YXIgX3dhcm4gPSAob3B0aW9ucyAmJiBvcHRpb25zLndhcm4pIHx8IHdh
cm47XG4gIC8vIGRldGVjdCBwb3NzaWJsZSBDU1AgcmVzdHJpY3Rpb25cbiAgLyogaXN0YW5idWwg
aWdub3JlIGlmICovXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24n
KSB7XG4gICAgdHJ5IHtcbiAgICAgIG5ldyBGdW5jdGlvbigncmV0dXJuIDEnKTtcbiAgICB9IGNh
dGNoIChlKSB7XG4gICAgICBpZiAoZS50b1N0cmluZygpLm1hdGNoKC91bnNhZmUtZXZhbHxDU1Av
KSkge1xuICAgICAgICBfd2FybihcbiAgICAgICAgICAnSXQgc2VlbXMgeW91IGFyZSB1c2luZyB0
aGUgc3RhbmRhbG9uZSBidWlsZCBvZiBWdWUuanMgaW4gYW4gJyArXG4gICAgICAgICAgJ2Vudmly
b25tZW50IHdpdGggQ29udGVudCBTZWN1cml0eSBQb2xpY3kgdGhhdCBwcm9oaWJpdHMgdW5zYWZl
LWV2YWwuICcgK1xuICAgICAgICAgICdUaGUgdGVtcGxhdGUgY29tcGlsZXIgY2Fubm90IHdvcmsg
aW4gdGhpcyBlbnZpcm9ubWVudC4gQ29uc2lkZXIgJyArXG4gICAgICAgICAgJ3JlbGF4aW5nIHRo
ZSBwb2xpY3kgdG8gYWxsb3cgdW5zYWZlLWV2YWwgb3IgcHJlLWNvbXBpbGluZyB5b3VyICcgK1xu
ICAgICAgICAgICd0ZW1wbGF0ZXMgaW50byByZW5kZXIgZnVuY3Rpb25zLidcbiAgICAgICAgKTtc
biAgICAgIH1cbiAgICB9XG4gIH1cbiAgdmFyIGtleSA9IG9wdGlvbnMgJiYgb3B0aW9ucy5kZWxp
bWl0ZXJzXG4gICAgPyBTdHJpbmcob3B0aW9ucy5kZWxpbWl0ZXJzKSArIHRlbXBsYXRlXG4gICAg
OiB0ZW1wbGF0ZTtcbiAgaWYgKGNhY2hlW2tleV0pIHtcbiAgICByZXR1cm4gY2FjaGVba2V5XVxu
ICB9XG4gIHZhciByZXMgPSB7fTtcbiAgdmFyIGNvbXBpbGVkID0gY29tcGlsZSQkMSh0ZW1wbGF0
ZSwgb3B0aW9ucyk7XG4gIHJlcy5yZW5kZXIgPSBtYWtlRnVuY3Rpb24oY29tcGlsZWQucmVuZGVy
KTtcbiAgdmFyIGwgPSBjb21waWxlZC5zdGF0aWNSZW5kZXJGbnMubGVuZ3RoO1xuICByZXMuc3Rh
dGljUmVuZGVyRm5zID0gbmV3IEFycmF5KGwpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGw7IGkr
Kykge1xuICAgIHJlcy5zdGF0aWNSZW5kZXJGbnNbaV0gPSBtYWtlRnVuY3Rpb24oY29tcGlsZWQu
c3RhdGljUmVuZGVyRm5zW2ldKTtcbiAgfVxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09
ICdwcm9kdWN0aW9uJykge1xuICAgIGlmIChyZXMucmVuZGVyID09PSBub29wIHx8IHJlcy5zdGF0
aWNSZW5kZXJGbnMuc29tZShmdW5jdGlvbiAoZm4pIHsgcmV0dXJuIGZuID09PSBub29wOyB9KSkg
e1xuICAgICAgX3dhcm4oXG4gICAgICAgIFwiZmFpbGVkIHRvIGNvbXBpbGUgdGVtcGxhdGU6XFxu
XFxuXCIgKyB0ZW1wbGF0ZSArIFwiXFxuXFxuXCIgK1xuICAgICAgICBkZXRlY3RFcnJvcnMoY29t
cGlsZWQuYXN0KS5qb2luKCdcXG4nKSArXG4gICAgICAgICdcXG5cXG4nLFxuICAgICAgICB2bVxu
ICAgICAgKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIChjYWNoZVtrZXldID0gcmVzKVxufVxuXG5m
dW5jdGlvbiBtYWtlRnVuY3Rpb24gKGNvZGUpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gbmV3IEZ1
bmN0aW9uKGNvZGUpXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gbm9vcFxuICB9XG59XG5c
bi8qICAqL1xuXG52YXIgaWRUb1RlbXBsYXRlID0gY2FjaGVkKGZ1bmN0aW9uIChpZCkge1xuICB2
YXIgZWwgPSBxdWVyeShpZCk7XG4gIHJldHVybiBlbCAmJiBlbC5pbm5lckhUTUxcbn0pO1xuXG52
YXIgbW91bnQgPSBWdWUkMy5wcm90b3R5cGUuJG1vdW50O1xuVnVlJDMucHJvdG90eXBlLiRtb3Vu
dCA9IGZ1bmN0aW9uIChcbiAgZWwsXG4gIGh5ZHJhdGluZ1xuKSB7XG4gIGVsID0gZWwgJiYgcXVl
cnkoZWwpO1xuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoZWwgPT09IGRvY3Vt
ZW50LmJvZHkgfHwgZWwgPT09IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkge1xuICAgIHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAgICAgIFwiRG8gbm90
IG1vdW50IFZ1ZSB0byA8aHRtbD4gb3IgPGJvZHk+IC0gbW91bnQgdG8gbm9ybWFsIGVsZW1lbnRz
IGluc3RlYWQuXCJcbiAgICApO1xuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICB2YXIgb3B0aW9u
cyA9IHRoaXMuJG9wdGlvbnM7XG4gIC8vIHJlc29sdmUgdGVtcGxhdGUvZWwgYW5kIGNvbnZlcnQg
dG8gcmVuZGVyIGZ1bmN0aW9uXG4gIGlmICghb3B0aW9ucy5yZW5kZXIpIHtcbiAgICB2YXIgdGVt
cGxhdGUgPSBvcHRpb25zLnRlbXBsYXRlO1xuICAgIGlmICh0ZW1wbGF0ZSkge1xuICAgICAgaWYg
KHR5cGVvZiB0ZW1wbGF0ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgaWYgKHRlbXBsYXRlLmNo
YXJBdCgwKSA9PT0gJyMnKSB7XG4gICAgICAgICAgdGVtcGxhdGUgPSBpZFRvVGVtcGxhdGUodGVt
cGxhdGUpO1xuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgICAgIGlm
IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmICF0ZW1wbGF0ZSkge1xu
ICAgICAgICAgICAgd2FybihcbiAgICAgICAgICAgICAgKFwiVGVtcGxhdGUgZWxlbWVudCBub3Qg
Zm91bmQgb3IgaXMgZW1wdHk6IFwiICsgKG9wdGlvbnMudGVtcGxhdGUpKSxcbiAgICAgICAgICAg
ICAgdGhpc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0g
ZWxzZSBpZiAodGVtcGxhdGUubm9kZVR5cGUpIHtcbiAgICAgICAgdGVtcGxhdGUgPSB0ZW1wbGF0
ZS5pbm5lckhUTUw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9E
RV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgIHdhcm4oJ2ludmFsaWQgdGVtcGxh
dGUgb3B0aW9uOicgKyB0ZW1wbGF0ZSwgdGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJu
IHRoaXNcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGVsKSB7XG4gICAgICB0ZW1wbGF0ZSA9IGdl
dE91dGVySFRNTChlbCk7XG4gICAgfVxuICAgIGlmICh0ZW1wbGF0ZSkge1xuICAgICAgdmFyIHJl
ZiA9IGNvbXBpbGVUb0Z1bmN0aW9ucyh0ZW1wbGF0ZSwge1xuICAgICAgICB3YXJuOiB3YXJuLFxu
ICAgICAgICBzaG91bGREZWNvZGVOZXdsaW5lczogc2hvdWxkRGVjb2RlTmV3bGluZXMsXG4gICAg
ICAgIGRlbGltaXRlcnM6IG9wdGlvbnMuZGVsaW1pdGVyc1xuICAgICAgfSwgdGhpcyk7XG4gICAg
ICB2YXIgcmVuZGVyID0gcmVmLnJlbmRlcjtcbiAgICAgIHZhciBzdGF0aWNSZW5kZXJGbnMgPSBy
ZWYuc3RhdGljUmVuZGVyRm5zO1xuICAgICAgb3B0aW9ucy5yZW5kZXIgPSByZW5kZXI7XG4gICAg
ICBvcHRpb25zLnN0YXRpY1JlbmRlckZucyA9IHN0YXRpY1JlbmRlckZucztcbiAgICB9XG4gIH1c
biAgcmV0dXJuIG1vdW50LmNhbGwodGhpcywgZWwsIGh5ZHJhdGluZylcbn07XG5cbi8qKlxuICog
R2V0IG91dGVySFRNTCBvZiBlbGVtZW50cywgdGFraW5nIGNhcmVcbiAqIG9mIFNWRyBlbGVtZW50
cyBpbiBJRSBhcyB3ZWxsLlxuICovXG5mdW5jdGlvbiBnZXRPdXRlckhUTUwgKGVsKSB7XG4gIGlm
IChlbC5vdXRlckhUTUwpIHtcbiAgICByZXR1cm4gZWwub3V0ZXJIVE1MXG4gIH0gZWxzZSB7XG4g
ICAgdmFyIGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIGNv
bnRhaW5lci5hcHBlbmRDaGlsZChlbC5jbG9uZU5vZGUodHJ1ZSkpO1xuICAgIHJldHVybiBjb250
YWluZXIuaW5uZXJIVE1MXG4gIH1cbn1cblxuVnVlJDMuY29tcGlsZSA9IGNvbXBpbGVUb0Z1bmN0
aW9ucztcblxubW9kdWxlLmV4cG9ydHMgPSBWdWUkMztcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8v
L1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi92dWUvZGlzdC92dWUuY29tbW9uLmpzXG4vLyBt
b2R1bGUgaWQgPSAxXG4vLyBtb2R1bGUgY2h1bmtzID0gMiIsIlxuXG4vL1xuLy8gR2VuZXJhdGVk
IG9uIFR1ZSBEZWMgMTYgMjAxNCAxMjoxMzo0NyBHTVQrMDEwMCAoQ0VUKSBieSBDaGFybGllIFJv
YmJpbnMsIFBhb2xvIEZyYWdvbWVuaSAmIHRoZSBDb250cmlidXRvcnMgKFVzaW5nIENvZGVzdXJn
ZW9uKS5cbi8vIFZlcnNpb24gMS4yLjZcbi8vXG5cbihmdW5jdGlvbiAoZXhwb3J0cykge1xuXG4v
KlxuICogYnJvd3Nlci5qczogQnJvd3NlciBzcGVjaWZpYyBmdW5jdGlvbmFsaXR5IGZvciBkaXJl
Y3Rvci5cbiAqXG4gKiAoQykgMjAxMSwgQ2hhcmxpZSBSb2JiaW5zLCBQYW9sbyBGcmFnb21lbmks
ICYgdGhlIENvbnRyaWJ1dG9ycy5cbiAqIE1JVCBMSUNFTlNFXG4gKlxuICovXG5cbnZhciBkbG9j
ID0gZG9jdW1lbnQubG9jYXRpb247XG5cbmZ1bmN0aW9uIGRsb2NIYXNoRW1wdHkoKSB7XG4gIC8v
IE5vbi1JRSBicm93c2VycyByZXR1cm4gJycgd2hlbiB0aGUgYWRkcmVzcyBiYXIgc2hvd3MgJyMn
OyBEaXJlY3RvcidzIGxvZ2ljXG4gIC8vIGFzc3VtZXMgYm90aCBtZWFuIGVtcHR5LlxuICByZXR1
cm4gZGxvYy5oYXNoID09PSAnJyB8fCBkbG9jLmhhc2ggPT09ICcjJztcbn1cblxudmFyIGxpc3Rl
bmVyID0ge1xuICBtb2RlOiAnbW9kZXJuJyxcbiAgaGFzaDogZGxvYy5oYXNoLFxuICBoaXN0b3J5
OiBmYWxzZSxcblxuICBjaGVjazogZnVuY3Rpb24gKCkge1xuICAgIHZhciBoID0gZGxvYy5oYXNo
O1xuICAgIGlmIChoICE9IHRoaXMuaGFzaCkge1xuICAgICAgdGhpcy5oYXNoID0gaDtcbiAgICAg
IHRoaXMub25IYXNoQ2hhbmdlZCgpO1xuICAgIH1cbiAgfSxcblxuICBmaXJlOiBmdW5jdGlvbiAo
KSB7XG4gICAgaWYgKHRoaXMubW9kZSA9PT0gJ21vZGVybicpIHtcbiAgICAgIHRoaXMuaGlzdG9y
eSA9PT0gdHJ1ZSA/IHdpbmRvdy5vbnBvcHN0YXRlKCkgOiB3aW5kb3cub25oYXNoY2hhbmdlKCk7
XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5vbkhhc2hDaGFuZ2VkKCk7XG4gICAgfVxu
ICB9LFxuXG4gIGluaXQ6IGZ1bmN0aW9uIChmbiwgaGlzdG9yeSkge1xuICAgIHZhciBzZWxmID0g
dGhpcztcbiAgICB0aGlzLmhpc3RvcnkgPSBoaXN0b3J5O1xuXG4gICAgaWYgKCFSb3V0ZXIubGlz
dGVuZXJzKSB7XG4gICAgICBSb3V0ZXIubGlzdGVuZXJzID0gW107XG4gICAgfVxuXG4gICAgZnVu
Y3Rpb24gb25jaGFuZ2Uob25DaGFuZ2VFdmVudCkge1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGwg
PSBSb3V0ZXIubGlzdGVuZXJzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICBSb3V0ZXIu
bGlzdGVuZXJzW2ldKG9uQ2hhbmdlRXZlbnQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vbm90
ZSBJRTggaXMgYmVpbmcgY291bnRlZCBhcyAnbW9kZXJuJyBiZWNhdXNlIGl0IGhhcyB0aGUgaGFz
aGNoYW5nZSBldmVudFxuICAgIGlmICgnb25oYXNoY2hhbmdlJyBpbiB3aW5kb3cgJiYgKGRvY3Vt
ZW50LmRvY3VtZW50TW9kZSA9PT0gdW5kZWZpbmVkXG4gICAgICB8fCBkb2N1bWVudC5kb2N1bWVu
dE1vZGUgPiA3KSkge1xuICAgICAgLy8gQXQgbGVhc3QgZm9yIG5vdyBIVE1MNSBoaXN0b3J5IGlz
IGF2YWlsYWJsZSBmb3IgJ21vZGVybicgYnJvd3NlcnMgb25seVxuICAgICAgaWYgKHRoaXMuaGlz
dG9yeSA9PT0gdHJ1ZSkge1xuICAgICAgICAvLyBUaGVyZSBpcyBhbiBvbGQgYnVnIGluIENocm9t
ZSB0aGF0IGNhdXNlcyBvbnBvcHN0YXRlIHRvIGZpcmUgZXZlblxuICAgICAgICAvLyB1cG9uIGlu
aXRpYWwgcGFnZSBsb2FkLiBTaW5jZSB0aGUgaGFuZGxlciBpcyBydW4gbWFudWFsbHkgaW4gaW5p
dCgpLFxuICAgICAgICAvLyB0aGlzIHdvdWxkIGNhdXNlIENocm9tZSB0byBydW4gaXQgdHdpc2Uu
IEN1cnJlbnRseSB0aGUgb25seVxuICAgICAgICAvLyB3b3JrYXJvdW5kIHNlZW1zIHRvIGJlIHRv
IHNldCB0aGUgaGFuZGxlciBhZnRlciB0aGUgaW5pdGlhbCBwYWdlIGxvYWRcbiAgICAgICAgLy8g
aHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9NjMwNDBc
biAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgICB3aW5kb3cub25wb3Bz
dGF0ZSA9IG9uY2hhbmdlO1xuICAgICAgICB9LCA1MDApO1xuICAgICAgfVxuICAgICAgZWxzZSB7
XG4gICAgICAgIHdpbmRvdy5vbmhhc2hjaGFuZ2UgPSBvbmNoYW5nZTtcbiAgICAgIH1cbiAgICAg
IHRoaXMubW9kZSA9ICdtb2Rlcm4nO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIC8vXG4gICAg
ICAvLyBJRSBzdXBwb3J0LCBiYXNlZCBvbiBhIGNvbmNlcHQgYnkgRXJpayBBcnZpZHNvbiAuLi5c
biAgICAgIC8vXG4gICAgICB2YXIgZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJh
bWUnKTtcbiAgICAgIGZyYW1lLmlkID0gJ3N0YXRlLWZyYW1lJztcbiAgICAgIGZyYW1lLnN0eWxl
LmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGZyYW1l
KTtcbiAgICAgIHRoaXMud3JpdGVGcmFtZSgnJyk7XG5cbiAgICAgIGlmICgnb25wcm9wZXJ0eWNo
YW5nZScgaW4gZG9jdW1lbnQgJiYgJ2F0dGFjaEV2ZW50JyBpbiBkb2N1bWVudCkge1xuICAgICAg
ICBkb2N1bWVudC5hdHRhY2hFdmVudCgnb25wcm9wZXJ0eWNoYW5nZScsIGZ1bmN0aW9uICgpIHtc
biAgICAgICAgICBpZiAoZXZlbnQucHJvcGVydHlOYW1lID09PSAnbG9jYXRpb24nKSB7XG4gICAg
ICAgICAgICBzZWxmLmNoZWNrKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1c
blxuICAgICAgd2luZG93LnNldEludGVydmFsKGZ1bmN0aW9uICgpIHsgc2VsZi5jaGVjaygpOyB9
LCA1MCk7XG5cbiAgICAgIHRoaXMub25IYXNoQ2hhbmdlZCA9IG9uY2hhbmdlO1xuICAgICAgdGhp
cy5tb2RlID0gJ2xlZ2FjeSc7XG4gICAgfVxuXG4gICAgUm91dGVyLmxpc3RlbmVycy5wdXNoKGZu
KTtcblxuICAgIHJldHVybiB0aGlzLm1vZGU7XG4gIH0sXG5cbiAgZGVzdHJveTogZnVuY3Rpb24g
KGZuKSB7XG4gICAgaWYgKCFSb3V0ZXIgfHwgIVJvdXRlci5saXN0ZW5lcnMpIHtcbiAgICAgIHJl
dHVybjtcbiAgICB9XG5cbiAgICB2YXIgbGlzdGVuZXJzID0gUm91dGVyLmxpc3RlbmVycztcblxu
ICAgIGZvciAodmFyIGkgPSBsaXN0ZW5lcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAg
ICAgIGlmIChsaXN0ZW5lcnNbaV0gPT09IGZuKSB7XG4gICAgICAgIGxpc3RlbmVycy5zcGxpY2Uo
aSwgMSk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIHNldEhhc2g6IGZ1bmN0aW9uIChzKSB7
XG4gICAgLy8gTW96aWxsYSBhbHdheXMgYWRkcyBhbiBlbnRyeSB0byB0aGUgaGlzdG9yeVxuICAg
IGlmICh0aGlzLm1vZGUgPT09ICdsZWdhY3knKSB7XG4gICAgICB0aGlzLndyaXRlRnJhbWUocyk7
XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaGlzdG9yeSA9PT0gdHJ1ZSkge1xuICAgICAgd2luZG93
Lmhpc3RvcnkucHVzaFN0YXRlKHt9LCBkb2N1bWVudC50aXRsZSwgcyk7XG4gICAgICAvLyBGaXJl
IGFuIG9ucG9wc3RhdGUgZXZlbnQgbWFudWFsbHkgc2luY2UgcHVzaGluZyBkb2VzIG5vdCBvYnZp
b3VzbHlcbiAgICAgIC8vIHRyaWdnZXIgdGhlIHBvcCBldmVudC5cbiAgICAgIHRoaXMuZmlyZSgp
O1xuICAgIH0gZWxzZSB7XG4gICAgICBkbG9jLmhhc2ggPSAoc1swXSA9PT0gJy8nKSA/IHMgOiAn
LycgKyBzO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfSxcblxuICB3cml0ZUZyYW1lOiBm
dW5jdGlvbiAocykge1xuICAgIC8vIElFIHN1cHBvcnQuLi5cbiAgICB2YXIgZiA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdzdGF0ZS1mcmFtZScpO1xuICAgIHZhciBkID0gZi5jb250ZW50RG9j
dW1lbnQgfHwgZi5jb250ZW50V2luZG93LmRvY3VtZW50O1xuICAgIGQub3BlbigpO1xuICAgIGQu
d3JpdGUoXCI8c2NyaXB0Pl9oYXNoID0gJ1wiICsgcyArIFwiJzsgb25sb2FkID0gcGFyZW50Lmxp
c3RlbmVyLnN5bmNIYXNoOzxzY3JpcHQ+XCIpO1xuICAgIGQuY2xvc2UoKTtcbiAgfSxcblxuICBz
eW5jSGFzaDogZnVuY3Rpb24gKCkge1xuICAgIC8vIElFIHN1cHBvcnQuLi5cbiAgICB2YXIgcyA9
IHRoaXMuX2hhc2g7XG4gICAgaWYgKHMgIT0gZGxvYy5oYXNoKSB7XG4gICAgICBkbG9jLmhhc2gg
PSBzO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfSxcblxuICBvbkhhc2hDaGFuZ2VkOiBm
dW5jdGlvbiAoKSB7fVxufTtcblxudmFyIFJvdXRlciA9IGV4cG9ydHMuUm91dGVyID0gZnVuY3Rp
b24gKHJvdXRlcykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgUm91dGVyKSkgcmV0dXJuIG5l
dyBSb3V0ZXIocm91dGVzKTtcblxuICB0aGlzLnBhcmFtcyAgID0ge307XG4gIHRoaXMucm91dGVz
ICAgPSB7fTtcbiAgdGhpcy5tZXRob2RzICA9IFsnb24nLCAnb25jZScsICdhZnRlcicsICdiZWZv
cmUnXTtcbiAgdGhpcy5zY29wZSAgICA9IFtdO1xuICB0aGlzLl9tZXRob2RzID0ge307XG5cbiAg
dGhpcy5faW5zZXJ0ID0gdGhpcy5pbnNlcnQ7XG4gIHRoaXMuaW5zZXJ0ID0gdGhpcy5pbnNlcnRF
eDtcblxuICB0aGlzLmhpc3RvcnlTdXBwb3J0ID0gKHdpbmRvdy5oaXN0b3J5ICE9IG51bGwgPyB3
aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUgOiBudWxsKSAhPSBudWxsXG5cbiAgdGhpcy5jb25maWd1
cmUoKTtcbiAgdGhpcy5tb3VudChyb3V0ZXMgfHwge30pO1xufTtcblxuUm91dGVyLnByb3RvdHlw
ZS5pbml0ID0gZnVuY3Rpb24gKHIpIHtcbiAgdmFyIHNlbGYgPSB0aGlzXG4gICAgLCByb3V0ZVRv
O1xuICB0aGlzLmhhbmRsZXIgPSBmdW5jdGlvbihvbkNoYW5nZUV2ZW50KSB7XG4gICAgdmFyIG5l
d1VSTCA9IG9uQ2hhbmdlRXZlbnQgJiYgb25DaGFuZ2VFdmVudC5uZXdVUkwgfHwgd2luZG93Lmxv
Y2F0aW9uLmhhc2g7XG4gICAgdmFyIHVybCA9IHNlbGYuaGlzdG9yeSA9PT0gdHJ1ZSA/IHNlbGYu
Z2V0UGF0aCgpIDogbmV3VVJMLnJlcGxhY2UoLy4qIy8sICcnKTtcbiAgICBzZWxmLmRpc3BhdGNo
KCdvbicsIHVybC5jaGFyQXQoMCkgPT09ICcvJyA/IHVybCA6ICcvJyArIHVybCk7XG4gIH07XG5c
biAgbGlzdGVuZXIuaW5pdCh0aGlzLmhhbmRsZXIsIHRoaXMuaGlzdG9yeSk7XG5cbiAgaWYgKHRo
aXMuaGlzdG9yeSA9PT0gZmFsc2UpIHtcbiAgICBpZiAoZGxvY0hhc2hFbXB0eSgpICYmIHIpIHtc
biAgICAgIGRsb2MuaGFzaCA9IHI7XG4gICAgfSBlbHNlIGlmICghZGxvY0hhc2hFbXB0eSgpKSB7
XG4gICAgICBzZWxmLmRpc3BhdGNoKCdvbicsICcvJyArIGRsb2MuaGFzaC5yZXBsYWNlKC9eKCNc
XC98I3xcXC8pLywgJycpKTtcbiAgICB9XG4gIH1cbiAgZWxzZSB7XG4gICAgaWYgKHRoaXMuY29u
dmVydF9oYXNoX2luX2luaXQpIHtcbiAgICAgIC8vIFVzZSBoYXNoIGFzIHJvdXRlXG4gICAgICBy
b3V0ZVRvID0gZGxvY0hhc2hFbXB0eSgpICYmIHIgPyByIDogIWRsb2NIYXNoRW1wdHkoKSA/IGRs
b2MuaGFzaC5yZXBsYWNlKC9eIy8sICcnKSA6IG51bGw7XG4gICAgICBpZiAocm91dGVUbykge1xu
ICAgICAgICB3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUoe30sIGRvY3VtZW50LnRpdGxlLCBy
b3V0ZVRvKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAvLyBVc2UgY2Fub25p
Y2FsIHVybFxuICAgICAgcm91dGVUbyA9IHRoaXMuZ2V0UGF0aCgpO1xuICAgIH1cblxuICAgIC8v
IFJvdXRlciBoYXMgYmVlbiBpbml0aWFsaXplZCwgYnV0IGR1ZSB0byB0aGUgY2hyb21lIGJ1ZyBp
dCB3aWxsIG5vdFxuICAgIC8vIHlldCBhY3R1YWxseSByb3V0ZSBIVE1MNSBoaXN0b3J5IHN0YXRl
IGNoYW5nZXMuIFRodXMsIGRlY2lkZSBpZiBzaG91bGQgcm91dGUuXG4gICAgaWYgKHJvdXRlVG8g
fHwgdGhpcy5ydW5faW5faW5pdCA9PT0gdHJ1ZSkge1xuICAgICAgdGhpcy5oYW5kbGVyKCk7XG4g
ICAgfVxuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5Sb3V0ZXIucHJvdG90eXBlLmV4cGxv
ZGUgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciB2ID0gdGhpcy5oaXN0b3J5ID09PSB0cnVlID8gdGhp
cy5nZXRQYXRoKCkgOiBkbG9jLmhhc2g7XG4gIGlmICh2LmNoYXJBdCgxKSA9PT0gJy8nKSB7IHY9
di5zbGljZSgxKSB9XG4gIHJldHVybiB2LnNsaWNlKDEsIHYubGVuZ3RoKS5zcGxpdChcIi9cIik7
XG59O1xuXG5Sb3V0ZXIucHJvdG90eXBlLnNldFJvdXRlID0gZnVuY3Rpb24gKGksIHYsIHZhbCkg
e1xuICB2YXIgdXJsID0gdGhpcy5leHBsb2RlKCk7XG5cbiAgaWYgKHR5cGVvZiBpID09PSAnbnVt
YmVyJyAmJiB0eXBlb2YgdiA9PT0gJ3N0cmluZycpIHtcbiAgICB1cmxbaV0gPSB2O1xuICB9XG4g
IGVsc2UgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7XG4gICAgdXJsLnNwbGljZShpLCB2
LCBzKTtcbiAgfVxuICBlbHNlIHtcbiAgICB1cmwgPSBbaV07XG4gIH1cblxuICBsaXN0ZW5lci5z
ZXRIYXNoKHVybC5qb2luKCcvJykpO1xuICByZXR1cm4gdXJsO1xufTtcblxuLy9cbi8vICMjIyBm
dW5jdGlvbiBpbnNlcnRFeChtZXRob2QsIHBhdGgsIHJvdXRlLCBwYXJlbnQpXG4vLyAjIyMjIEBt
ZXRob2Qge3N0cmluZ30gTWV0aG9kIHRvIGluc2VydCB0aGUgc3BlY2lmaWMgYHJvdXRlYC5cbi8v
ICMjIyMgQHBhdGgge0FycmF5fSBQYXJzZWQgcGF0aCB0byBpbnNlcnQgdGhlIGByb3V0ZWAgYXQu
XG4vLyAjIyMjIEByb3V0ZSB7QXJyYXl8ZnVuY3Rpb259IFJvdXRlIGhhbmRsZXJzIHRvIGluc2Vy
dC5cbi8vICMjIyMgQHBhcmVudCB7T2JqZWN0fSAqKk9wdGlvbmFsKiogUGFyZW50IFwicm91dGVz
XCIgdG8gaW5zZXJ0IGludG8uXG4vLyBpbnNlcnQgYSBjYWxsYmFjayB0aGF0IHdpbGwgb25seSBv
Y2N1ciBvbmNlIHBlciB0aGUgbWF0Y2hlZCByb3V0ZS5cbi8vXG5Sb3V0ZXIucHJvdG90eXBlLmlu
c2VydEV4ID0gZnVuY3Rpb24obWV0aG9kLCBwYXRoLCByb3V0ZSwgcGFyZW50KSB7XG4gIGlmICht
ZXRob2QgPT09IFwib25jZVwiKSB7XG4gICAgbWV0aG9kID0gXCJvblwiO1xuICAgIHJvdXRlID0g
ZnVuY3Rpb24ocm91dGUpIHtcbiAgICAgIHZhciBvbmNlID0gZmFsc2U7XG4gICAgICByZXR1cm4g
ZnVuY3Rpb24oKSB7XG4gICAgICAgIGlmIChvbmNlKSByZXR1cm47XG4gICAgICAgIG9uY2UgPSB0
cnVlO1xuICAgICAgICByZXR1cm4gcm91dGUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAg
IH07XG4gICAgfShyb3V0ZSk7XG4gIH1cbiAgcmV0dXJuIHRoaXMuX2luc2VydChtZXRob2QsIHBh
dGgsIHJvdXRlLCBwYXJlbnQpO1xufTtcblxuUm91dGVyLnByb3RvdHlwZS5nZXRSb3V0ZSA9IGZ1
bmN0aW9uICh2KSB7XG4gIHZhciByZXQgPSB2O1xuXG4gIGlmICh0eXBlb2YgdiA9PT0gXCJudW1i
ZXJcIikge1xuICAgIHJldCA9IHRoaXMuZXhwbG9kZSgpW3ZdO1xuICB9XG4gIGVsc2UgaWYgKHR5
cGVvZiB2ID09PSBcInN0cmluZ1wiKXtcbiAgICB2YXIgaCA9IHRoaXMuZXhwbG9kZSgpO1xuICAg
IHJldCA9IGguaW5kZXhPZih2KTtcbiAgfVxuICBlbHNlIHtcbiAgICByZXQgPSB0aGlzLmV4cGxv
ZGUoKTtcbiAgfVxuXG4gIHJldHVybiByZXQ7XG59O1xuXG5Sb3V0ZXIucHJvdG90eXBlLmRlc3Ry
b3kgPSBmdW5jdGlvbiAoKSB7XG4gIGxpc3RlbmVyLmRlc3Ryb3kodGhpcy5oYW5kbGVyKTtcbiAg
cmV0dXJuIHRoaXM7XG59O1xuXG5Sb3V0ZXIucHJvdG90eXBlLmdldFBhdGggPSBmdW5jdGlvbiAo
KSB7XG4gIHZhciBwYXRoID0gd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lO1xuICBpZiAocGF0aC5z
dWJzdHIoMCwgMSkgIT09ICcvJykge1xuICAgIHBhdGggPSAnLycgKyBwYXRoO1xuICB9XG4gIHJl
dHVybiBwYXRoO1xufTtcbmZ1bmN0aW9uIF9ldmVyeShhcnIsIGl0ZXJhdG9yKSB7XG4gIGZvciAo
dmFyIGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgaWYgKGl0ZXJhdG9yKGFy
cltpXSwgaSwgYXJyKSA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cbn1c
blxuZnVuY3Rpb24gX2ZsYXR0ZW4oYXJyKSB7XG4gIHZhciBmbGF0ID0gW107XG4gIGZvciAodmFy
IGkgPSAwLCBuID0gYXJyLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgIGZsYXQgPSBmbGF0LmNv
bmNhdChhcnJbaV0pO1xuICB9XG4gIHJldHVybiBmbGF0O1xufVxuXG5mdW5jdGlvbiBfYXN5bmNF
dmVyeVNlcmllcyhhcnIsIGl0ZXJhdG9yLCBjYWxsYmFjaykge1xuICBpZiAoIWFyci5sZW5ndGgp
IHtcbiAgICByZXR1cm4gY2FsbGJhY2soKTtcbiAgfVxuICB2YXIgY29tcGxldGVkID0gMDtcbiAg
KGZ1bmN0aW9uIGl0ZXJhdGUoKSB7XG4gICAgaXRlcmF0b3IoYXJyW2NvbXBsZXRlZF0sIGZ1bmN0
aW9uKGVycikge1xuICAgICAgaWYgKGVyciB8fCBlcnIgPT09IGZhbHNlKSB7XG4gICAgICAgIGNh
bGxiYWNrKGVycik7XG4gICAgICAgIGNhbGxiYWNrID0gZnVuY3Rpb24oKSB7fTtcbiAgICAgIH0g
ZWxzZSB7XG4gICAgICAgIGNvbXBsZXRlZCArPSAxO1xuICAgICAgICBpZiAoY29tcGxldGVkID09
PSBhcnIubGVuZ3RoKSB7XG4gICAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgfSBlbHNlIHtc
biAgICAgICAgICBpdGVyYXRlKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfSko
KTtcbn1cblxuZnVuY3Rpb24gcGFyYW1pZnlTdHJpbmcoc3RyLCBwYXJhbXMsIG1vZCkge1xuICBt
b2QgPSBzdHI7XG4gIGZvciAodmFyIHBhcmFtIGluIHBhcmFtcykge1xuICAgIGlmIChwYXJhbXMu
aGFzT3duUHJvcGVydHkocGFyYW0pKSB7XG4gICAgICBtb2QgPSBwYXJhbXNbcGFyYW1dKHN0cik7
XG4gICAgICBpZiAobW9kICE9PSBzdHIpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAg
fVxuICB9XG4gIHJldHVybiBtb2QgPT09IHN0ciA/IFwiKFsuX2EtekEtWjAtOS0lKCldKylcIiA6
IG1vZDtcbn1cblxuZnVuY3Rpb24gcmVnaWZ5U3RyaW5nKHN0ciwgcGFyYW1zKSB7XG4gIHZhciBt
YXRjaGVzLCBsYXN0ID0gMCwgb3V0ID0gXCJcIjtcbiAgd2hpbGUgKG1hdGNoZXMgPSBzdHIuc3Vi
c3RyKGxhc3QpLm1hdGNoKC9bXlxcd1xcZFxcLSAlQCZdKlxcKlteXFx3XFxkXFwtICVAJl0qLykp
IHtcbiAgICBsYXN0ID0gbWF0Y2hlcy5pbmRleCArIG1hdGNoZXNbMF0ubGVuZ3RoO1xuICAgIG1h
dGNoZXNbMF0gPSBtYXRjaGVzWzBdLnJlcGxhY2UoL15cXCovLCBcIihbXy4oKSFcXFxcICVAJmEt
ekEtWjAtOS1dKylcIik7XG4gICAgb3V0ICs9IHN0ci5zdWJzdHIoMCwgbWF0Y2hlcy5pbmRleCkg
KyBtYXRjaGVzWzBdO1xuICB9XG4gIHN0ciA9IG91dCArPSBzdHIuc3Vic3RyKGxhc3QpO1xuICB2
YXIgY2FwdHVyZXMgPSBzdHIubWF0Y2goLzooW15cXC9dKykvaWcpLCBjYXB0dXJlLCBsZW5ndGg7
XG4gIGlmIChjYXB0dXJlcykge1xuICAgIGxlbmd0aCA9IGNhcHR1cmVzLmxlbmd0aDtcbiAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICBjYXB0dXJlID0gY2FwdHVy
ZXNbaV07XG4gICAgICBpZiAoY2FwdHVyZS5zbGljZSgwLCAyKSA9PT0gXCI6OlwiKSB7XG4gICAg
ICAgIHN0ciA9IGNhcHR1cmUuc2xpY2UoMSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdHIg
PSBzdHIucmVwbGFjZShjYXB0dXJlLCBwYXJhbWlmeVN0cmluZyhjYXB0dXJlLCBwYXJhbXMpKTtc
biAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHN0cjtcbn1cblxuZnVuY3Rpb24gdGVybWlu
YXRvcihyb3V0ZXMsIGRlbGltaXRlciwgc3RhcnQsIHN0b3ApIHtcbiAgdmFyIGxhc3QgPSAwLCBs
ZWZ0ID0gMCwgcmlnaHQgPSAwLCBzdGFydCA9IChzdGFydCB8fCBcIihcIikudG9TdHJpbmcoKSwg
c3RvcCA9IChzdG9wIHx8IFwiKVwiKS50b1N0cmluZygpLCBpO1xuICBmb3IgKGkgPSAwOyBpIDwg
cm91dGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGNodW5rID0gcm91dGVzW2ldO1xuICAgIGlm
IChjaHVuay5pbmRleE9mKHN0YXJ0LCBsYXN0KSA+IGNodW5rLmluZGV4T2Yoc3RvcCwgbGFzdCkg
fHwgfmNodW5rLmluZGV4T2Yoc3RhcnQsIGxhc3QpICYmICF+Y2h1bmsuaW5kZXhPZihzdG9wLCBs
YXN0KSB8fCAhfmNodW5rLmluZGV4T2Yoc3RhcnQsIGxhc3QpICYmIH5jaHVuay5pbmRleE9mKHN0
b3AsIGxhc3QpKSB7XG4gICAgICBsZWZ0ID0gY2h1bmsuaW5kZXhPZihzdGFydCwgbGFzdCk7XG4g
ICAgICByaWdodCA9IGNodW5rLmluZGV4T2Yoc3RvcCwgbGFzdCk7XG4gICAgICBpZiAofmxlZnQg
JiYgIX5yaWdodCB8fCAhfmxlZnQgJiYgfnJpZ2h0KSB7XG4gICAgICAgIHZhciB0bXAgPSByb3V0
ZXMuc2xpY2UoMCwgKGkgfHwgMSkgKyAxKS5qb2luKGRlbGltaXRlcik7XG4gICAgICAgIHJvdXRl
cyA9IFsgdG1wIF0uY29uY2F0KHJvdXRlcy5zbGljZSgoaSB8fCAxKSArIDEpKTtcbiAgICAgIH1c
biAgICAgIGxhc3QgPSAocmlnaHQgPiBsZWZ0ID8gcmlnaHQgOiBsZWZ0KSArIDE7XG4gICAgICBp
ID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgbGFzdCA9IDA7XG4gICAgfVxuICB9XG4gIHJldHVy
biByb3V0ZXM7XG59XG5cbnZhciBRVUVSWV9TRVBBUkFUT1IgPSAvXFw/LiovO1xuXG5Sb3V0ZXIu
cHJvdG90eXBlLmNvbmZpZ3VyZSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgb3B0aW9ucyA9IG9w
dGlvbnMgfHwge307XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5tZXRob2RzLmxlbmd0aDsg
aSsrKSB7XG4gICAgdGhpcy5fbWV0aG9kc1t0aGlzLm1ldGhvZHNbaV1dID0gdHJ1ZTtcbiAgfVxu
ICB0aGlzLnJlY3Vyc2UgPSBvcHRpb25zLnJlY3Vyc2UgfHwgdGhpcy5yZWN1cnNlIHx8IGZhbHNl
O1xuICB0aGlzLmFzeW5jID0gb3B0aW9ucy5hc3luYyB8fCBmYWxzZTtcbiAgdGhpcy5kZWxpbWl0
ZXIgPSBvcHRpb25zLmRlbGltaXRlciB8fCBcIi9cIjtcbiAgdGhpcy5zdHJpY3QgPSB0eXBlb2Yg
b3B0aW9ucy5zdHJpY3QgPT09IFwidW5kZWZpbmVkXCIgPyB0cnVlIDogb3B0aW9ucy5zdHJpY3Q7
XG4gIHRoaXMubm90Zm91bmQgPSBvcHRpb25zLm5vdGZvdW5kO1xuICB0aGlzLnJlc291cmNlID0g
b3B0aW9ucy5yZXNvdXJjZTtcbiAgdGhpcy5oaXN0b3J5ID0gb3B0aW9ucy5odG1sNWhpc3Rvcnkg
JiYgdGhpcy5oaXN0b3J5U3VwcG9ydCB8fCBmYWxzZTtcbiAgdGhpcy5ydW5faW5faW5pdCA9IHRo
aXMuaGlzdG9yeSA9PT0gdHJ1ZSAmJiBvcHRpb25zLnJ1bl9oYW5kbGVyX2luX2luaXQgIT09IGZh
bHNlO1xuICB0aGlzLmNvbnZlcnRfaGFzaF9pbl9pbml0ID0gdGhpcy5oaXN0b3J5ID09PSB0cnVl
ICYmIG9wdGlvbnMuY29udmVydF9oYXNoX2luX2luaXQgIT09IGZhbHNlO1xuICB0aGlzLmV2ZXJ5
ID0ge1xuICAgIGFmdGVyOiBvcHRpb25zLmFmdGVyIHx8IG51bGwsXG4gICAgYmVmb3JlOiBvcHRp
b25zLmJlZm9yZSB8fCBudWxsLFxuICAgIG9uOiBvcHRpb25zLm9uIHx8IG51bGxcbiAgfTtcbiAg
cmV0dXJuIHRoaXM7XG59O1xuXG5Sb3V0ZXIucHJvdG90eXBlLnBhcmFtID0gZnVuY3Rpb24odG9r
ZW4sIG1hdGNoZXIpIHtcbiAgaWYgKHRva2VuWzBdICE9PSBcIjpcIikge1xuICAgIHRva2VuID0g
XCI6XCIgKyB0b2tlbjtcbiAgfVxuICB2YXIgY29tcGlsZWQgPSBuZXcgUmVnRXhwKHRva2VuLCBc
ImdcIik7XG4gIHRoaXMucGFyYW1zW3Rva2VuXSA9IGZ1bmN0aW9uKHN0cikge1xuICAgIHJldHVy
biBzdHIucmVwbGFjZShjb21waWxlZCwgbWF0Y2hlci5zb3VyY2UgfHwgbWF0Y2hlcik7XG4gIH07
XG4gIHJldHVybiB0aGlzO1xufTtcblxuUm91dGVyLnByb3RvdHlwZS5vbiA9IFJvdXRlci5wcm90
b3R5cGUucm91dGUgPSBmdW5jdGlvbihtZXRob2QsIHBhdGgsIHJvdXRlKSB7XG4gIHZhciBzZWxm
ID0gdGhpcztcbiAgaWYgKCFyb3V0ZSAmJiB0eXBlb2YgcGF0aCA9PSBcImZ1bmN0aW9uXCIpIHtc
biAgICByb3V0ZSA9IHBhdGg7XG4gICAgcGF0aCA9IG1ldGhvZDtcbiAgICBtZXRob2QgPSBcIm9u
XCI7XG4gIH1cbiAgaWYgKEFycmF5LmlzQXJyYXkocGF0aCkpIHtcbiAgICByZXR1cm4gcGF0aC5m
b3JFYWNoKGZ1bmN0aW9uKHApIHtcbiAgICAgIHNlbGYub24obWV0aG9kLCBwLCByb3V0ZSk7XG4g
ICAgfSk7XG4gIH1cbiAgaWYgKHBhdGguc291cmNlKSB7XG4gICAgcGF0aCA9IHBhdGguc291cmNl
LnJlcGxhY2UoL1xcXFxcXC8vaWcsIFwiL1wiKTtcbiAgfVxuICBpZiAoQXJyYXkuaXNBcnJheSht
ZXRob2QpKSB7XG4gICAgcmV0dXJuIG1ldGhvZC5mb3JFYWNoKGZ1bmN0aW9uKG0pIHtcbiAgICAg
IHNlbGYub24obS50b0xvd2VyQ2FzZSgpLCBwYXRoLCByb3V0ZSk7XG4gICAgfSk7XG4gIH1cbiAg
cGF0aCA9IHBhdGguc3BsaXQobmV3IFJlZ0V4cCh0aGlzLmRlbGltaXRlcikpO1xuICBwYXRoID0g
dGVybWluYXRvcihwYXRoLCB0aGlzLmRlbGltaXRlcik7XG4gIHRoaXMuaW5zZXJ0KG1ldGhvZCwg
dGhpcy5zY29wZS5jb25jYXQocGF0aCksIHJvdXRlKTtcbn07XG5cblJvdXRlci5wcm90b3R5cGUu
cGF0aCA9IGZ1bmN0aW9uKHBhdGgsIHJvdXRlc0ZuKSB7XG4gIHZhciBzZWxmID0gdGhpcywgbGVu
Z3RoID0gdGhpcy5zY29wZS5sZW5ndGg7XG4gIGlmIChwYXRoLnNvdXJjZSkge1xuICAgIHBhdGgg
PSBwYXRoLnNvdXJjZS5yZXBsYWNlKC9cXFxcXFwvL2lnLCBcIi9cIik7XG4gIH1cbiAgcGF0aCA9
IHBhdGguc3BsaXQobmV3IFJlZ0V4cCh0aGlzLmRlbGltaXRlcikpO1xuICBwYXRoID0gdGVybWlu
YXRvcihwYXRoLCB0aGlzLmRlbGltaXRlcik7XG4gIHRoaXMuc2NvcGUgPSB0aGlzLnNjb3BlLmNv
bmNhdChwYXRoKTtcbiAgcm91dGVzRm4uY2FsbCh0aGlzLCB0aGlzKTtcbiAgdGhpcy5zY29wZS5z
cGxpY2UobGVuZ3RoLCBwYXRoLmxlbmd0aCk7XG59O1xuXG5Sb3V0ZXIucHJvdG90eXBlLmRpc3Bh
dGNoID0gZnVuY3Rpb24obWV0aG9kLCBwYXRoLCBjYWxsYmFjaykge1xuICB2YXIgc2VsZiA9IHRo
aXMsIGZucyA9IHRoaXMudHJhdmVyc2UobWV0aG9kLCBwYXRoLnJlcGxhY2UoUVVFUllfU0VQQVJB
VE9SLCBcIlwiKSwgdGhpcy5yb3V0ZXMsIFwiXCIpLCBpbnZva2VkID0gdGhpcy5faW52b2tlZCwg
YWZ0ZXI7XG4gIHRoaXMuX2ludm9rZWQgPSB0cnVlO1xuICBpZiAoIWZucyB8fCBmbnMubGVuZ3Ro
ID09PSAwKSB7XG4gICAgdGhpcy5sYXN0ID0gW107XG4gICAgaWYgKHR5cGVvZiB0aGlzLm5vdGZv
dW5kID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIHRoaXMuaW52b2tlKFsgdGhpcy5ub3Rmb3Vu
ZCBdLCB7XG4gICAgICAgIG1ldGhvZDogbWV0aG9kLFxuICAgICAgICBwYXRoOiBwYXRoXG4gICAg
ICB9LCBjYWxsYmFjayk7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAodGhp
cy5yZWN1cnNlID09PSBcImZvcndhcmRcIikge1xuICAgIGZucyA9IGZucy5yZXZlcnNlKCk7XG4g
IH1cbiAgZnVuY3Rpb24gdXBkYXRlQW5kSW52b2tlKCkge1xuICAgIHNlbGYubGFzdCA9IGZucy5h
ZnRlcjtcbiAgICBzZWxmLmludm9rZShzZWxmLnJ1bmxpc3QoZm5zKSwgc2VsZiwgY2FsbGJhY2sp
O1xuICB9XG4gIGFmdGVyID0gdGhpcy5ldmVyeSAmJiB0aGlzLmV2ZXJ5LmFmdGVyID8gWyB0aGlz
LmV2ZXJ5LmFmdGVyIF0uY29uY2F0KHRoaXMubGFzdCkgOiBbIHRoaXMubGFzdCBdO1xuICBpZiAo
YWZ0ZXIgJiYgYWZ0ZXIubGVuZ3RoID4gMCAmJiBpbnZva2VkKSB7XG4gICAgaWYgKHRoaXMuYXN5
bmMpIHtcbiAgICAgIHRoaXMuaW52b2tlKGFmdGVyLCB0aGlzLCB1cGRhdGVBbmRJbnZva2UpO1xu
ICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmludm9rZShhZnRlciwgdGhpcyk7XG4gICAgICB1cGRh
dGVBbmRJbnZva2UoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgdXBkYXRlQW5k
SW52b2tlKCk7XG4gIHJldHVybiB0cnVlO1xufTtcblxuUm91dGVyLnByb3RvdHlwZS5pbnZva2Ug
PSBmdW5jdGlvbihmbnMsIHRoaXNBcmcsIGNhbGxiYWNrKSB7XG4gIHZhciBzZWxmID0gdGhpcztc
biAgdmFyIGFwcGx5O1xuICBpZiAodGhpcy5hc3luYykge1xuICAgIGFwcGx5ID0gZnVuY3Rpb24o
Zm4sIG5leHQpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGZuKSkge1xuICAgICAgICByZXR1
cm4gX2FzeW5jRXZlcnlTZXJpZXMoZm4sIGFwcGx5LCBuZXh0KTtcbiAgICAgIH0gZWxzZSBpZiAo
dHlwZW9mIGZuID09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBmbi5hcHBseSh0aGlzQXJnLCAo
Zm5zLmNhcHR1cmVzIHx8IFtdKS5jb25jYXQobmV4dCkpO1xuICAgICAgfVxuICAgIH07XG4gICAg
X2FzeW5jRXZlcnlTZXJpZXMoZm5zLCBhcHBseSwgZnVuY3Rpb24oKSB7XG4gICAgICBpZiAoY2Fs
bGJhY2spIHtcbiAgICAgICAgY2FsbGJhY2suYXBwbHkodGhpc0FyZywgYXJndW1lbnRzKTtcbiAg
ICAgIH1cbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBhcHBseSA9IGZ1bmN0aW9uKGZuKSB7XG4g
ICAgICBpZiAoQXJyYXkuaXNBcnJheShmbikpIHtcbiAgICAgICAgcmV0dXJuIF9ldmVyeShmbiwg
YXBwbHkpO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZm4gPT09IFwiZnVuY3Rpb25cIikge1xu
ICAgICAgICByZXR1cm4gZm4uYXBwbHkodGhpc0FyZywgZm5zLmNhcHR1cmVzIHx8IFtdKTtcbiAg
ICAgIH0gZWxzZSBpZiAodHlwZW9mIGZuID09PSBcInN0cmluZ1wiICYmIHNlbGYucmVzb3VyY2Up
IHtcbiAgICAgICAgc2VsZi5yZXNvdXJjZVtmbl0uYXBwbHkodGhpc0FyZywgZm5zLmNhcHR1cmVz
IHx8IFtdKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIF9ldmVyeShmbnMsIGFwcGx5KTtcbiAgfVxu
fTtcblxuUm91dGVyLnByb3RvdHlwZS50cmF2ZXJzZSA9IGZ1bmN0aW9uKG1ldGhvZCwgcGF0aCwg
cm91dGVzLCByZWdleHAsIGZpbHRlcikge1xuICB2YXIgZm5zID0gW10sIGN1cnJlbnQsIGV4YWN0
LCBtYXRjaCwgbmV4dCwgdGhhdDtcbiAgZnVuY3Rpb24gZmlsdGVyUm91dGVzKHJvdXRlcykge1xu
ICAgIGlmICghZmlsdGVyKSB7XG4gICAgICByZXR1cm4gcm91dGVzO1xuICAgIH1cbiAgICBmdW5j
dGlvbiBkZWVwQ29weShzb3VyY2UpIHtcbiAgICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgc291cmNlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHJlc3VsdFtp
XSA9IEFycmF5LmlzQXJyYXkoc291cmNlW2ldKSA/IGRlZXBDb3B5KHNvdXJjZVtpXSkgOiBzb3Vy
Y2VbaV07XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBmdW5jdGlv
biBhcHBseUZpbHRlcihmbnMpIHtcbiAgICAgIGZvciAodmFyIGkgPSBmbnMubGVuZ3RoIC0gMTsg
aSA+PSAwOyBpLS0pIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZm5zW2ldKSkge1xuICAg
ICAgICAgIGFwcGx5RmlsdGVyKGZuc1tpXSk7XG4gICAgICAgICAgaWYgKGZuc1tpXS5sZW5ndGgg
PT09IDApIHtcbiAgICAgICAgICAgIGZucy5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgfVxuICAg
ICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICghZmlsdGVyKGZuc1tpXSkpIHtcbiAgICAgICAg
ICAgIGZucy5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4g
ICAgfVxuICAgIHZhciBuZXdSb3V0ZXMgPSBkZWVwQ29weShyb3V0ZXMpO1xuICAgIG5ld1JvdXRl
cy5tYXRjaGVkID0gcm91dGVzLm1hdGNoZWQ7XG4gICAgbmV3Um91dGVzLmNhcHR1cmVzID0gcm91
dGVzLmNhcHR1cmVzO1xuICAgIG5ld1JvdXRlcy5hZnRlciA9IHJvdXRlcy5hZnRlci5maWx0ZXIo
ZmlsdGVyKTtcbiAgICBhcHBseUZpbHRlcihuZXdSb3V0ZXMpO1xuICAgIHJldHVybiBuZXdSb3V0
ZXM7XG4gIH1cbiAgaWYgKHBhdGggPT09IHRoaXMuZGVsaW1pdGVyICYmIHJvdXRlc1ttZXRob2Rd
KSB7XG4gICAgbmV4dCA9IFsgWyByb3V0ZXMuYmVmb3JlLCByb3V0ZXNbbWV0aG9kXSBdLmZpbHRl
cihCb29sZWFuKSBdO1xuICAgIG5leHQuYWZ0ZXIgPSBbIHJvdXRlcy5hZnRlciBdLmZpbHRlcihC
b29sZWFuKTtcbiAgICBuZXh0Lm1hdGNoZWQgPSB0cnVlO1xuICAgIG5leHQuY2FwdHVyZXMgPSBb
XTtcbiAgICByZXR1cm4gZmlsdGVyUm91dGVzKG5leHQpO1xuICB9XG4gIGZvciAodmFyIHIgaW4g
cm91dGVzKSB7XG4gICAgaWYgKHJvdXRlcy5oYXNPd25Qcm9wZXJ0eShyKSAmJiAoIXRoaXMuX21l
dGhvZHNbcl0gfHwgdGhpcy5fbWV0aG9kc1tyXSAmJiB0eXBlb2Ygcm91dGVzW3JdID09PSBcIm9i
amVjdFwiICYmICFBcnJheS5pc0FycmF5KHJvdXRlc1tyXSkpKSB7XG4gICAgICBjdXJyZW50ID0g
ZXhhY3QgPSByZWdleHAgKyB0aGlzLmRlbGltaXRlciArIHI7XG4gICAgICBpZiAoIXRoaXMuc3Ry
aWN0KSB7XG4gICAgICAgIGV4YWN0ICs9IFwiW1wiICsgdGhpcy5kZWxpbWl0ZXIgKyBcIl0/XCI7
XG4gICAgICB9XG4gICAgICBtYXRjaCA9IHBhdGgubWF0Y2gobmV3IFJlZ0V4cChcIl5cIiArIGV4
YWN0KSk7XG4gICAgICBpZiAoIW1hdGNoKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxu
ICAgICAgaWYgKG1hdGNoWzBdICYmIG1hdGNoWzBdID09IHBhdGggJiYgcm91dGVzW3JdW21ldGhv
ZF0pIHtcbiAgICAgICAgbmV4dCA9IFsgWyByb3V0ZXNbcl0uYmVmb3JlLCByb3V0ZXNbcl1bbWV0
aG9kXSBdLmZpbHRlcihCb29sZWFuKSBdO1xuICAgICAgICBuZXh0LmFmdGVyID0gWyByb3V0ZXNb
cl0uYWZ0ZXIgXS5maWx0ZXIoQm9vbGVhbik7XG4gICAgICAgIG5leHQubWF0Y2hlZCA9IHRydWU7
XG4gICAgICAgIG5leHQuY2FwdHVyZXMgPSBtYXRjaC5zbGljZSgxKTtcbiAgICAgICAgaWYgKHRo
aXMucmVjdXJzZSAmJiByb3V0ZXMgPT09IHRoaXMucm91dGVzKSB7XG4gICAgICAgICAgbmV4dC5w
dXNoKFsgcm91dGVzLmJlZm9yZSwgcm91dGVzLm9uIF0uZmlsdGVyKEJvb2xlYW4pKTtcbiAgICAg
ICAgICBuZXh0LmFmdGVyID0gbmV4dC5hZnRlci5jb25jYXQoWyByb3V0ZXMuYWZ0ZXIgXS5maWx0
ZXIoQm9vbGVhbikpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmaWx0ZXJSb3V0ZXMobmV4
dCk7XG4gICAgICB9XG4gICAgICBuZXh0ID0gdGhpcy50cmF2ZXJzZShtZXRob2QsIHBhdGgsIHJv
dXRlc1tyXSwgY3VycmVudCk7XG4gICAgICBpZiAobmV4dC5tYXRjaGVkKSB7XG4gICAgICAgIGlm
IChuZXh0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBmbnMgPSBmbnMuY29uY2F0KG5leHQpO1xu
ICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnJlY3Vyc2UpIHtcbiAgICAgICAgICBmbnMucHVz
aChbIHJvdXRlc1tyXS5iZWZvcmUsIHJvdXRlc1tyXS5vbiBdLmZpbHRlcihCb29sZWFuKSk7XG4g
ICAgICAgICAgbmV4dC5hZnRlciA9IG5leHQuYWZ0ZXIuY29uY2F0KFsgcm91dGVzW3JdLmFmdGVy
IF0uZmlsdGVyKEJvb2xlYW4pKTtcbiAgICAgICAgICBpZiAocm91dGVzID09PSB0aGlzLnJvdXRl
cykge1xuICAgICAgICAgICAgZm5zLnB1c2goWyByb3V0ZXNbXCJiZWZvcmVcIl0sIHJvdXRlc1tc
Im9uXCJdIF0uZmlsdGVyKEJvb2xlYW4pKTtcbiAgICAgICAgICAgIG5leHQuYWZ0ZXIgPSBuZXh0
LmFmdGVyLmNvbmNhdChbIHJvdXRlc1tcImFmdGVyXCJdIF0uZmlsdGVyKEJvb2xlYW4pKTtcbiAg
ICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZm5zLm1hdGNoZWQgPSB0cnVlO1xuICAgICAg
ICBmbnMuY2FwdHVyZXMgPSBuZXh0LmNhcHR1cmVzO1xuICAgICAgICBmbnMuYWZ0ZXIgPSBuZXh0
LmFmdGVyO1xuICAgICAgICByZXR1cm4gZmlsdGVyUm91dGVzKGZucyk7XG4gICAgICB9XG4gICAg
fVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn07XG5cblJvdXRlci5wcm90b3R5cGUuaW5zZXJ0ID0g
ZnVuY3Rpb24obWV0aG9kLCBwYXRoLCByb3V0ZSwgcGFyZW50KSB7XG4gIHZhciBtZXRob2RUeXBl
LCBwYXJlbnRUeXBlLCBpc0FycmF5LCBuZXN0ZWQsIHBhcnQ7XG4gIHBhdGggPSBwYXRoLmZpbHRl
cihmdW5jdGlvbihwKSB7XG4gICAgcmV0dXJuIHAgJiYgcC5sZW5ndGggPiAwO1xuICB9KTtcbiAg
cGFyZW50ID0gcGFyZW50IHx8IHRoaXMucm91dGVzO1xuICBwYXJ0ID0gcGF0aC5zaGlmdCgpO1xu
ICBpZiAoL1xcOnxcXCovLnRlc3QocGFydCkgJiYgIS9cXFxcZHxcXFxcdy8udGVzdChwYXJ0KSkg
e1xuICAgIHBhcnQgPSByZWdpZnlTdHJpbmcocGFydCwgdGhpcy5wYXJhbXMpO1xuICB9XG4gIGlm
IChwYXRoLmxlbmd0aCA+IDApIHtcbiAgICBwYXJlbnRbcGFydF0gPSBwYXJlbnRbcGFydF0gfHwg
e307XG4gICAgcmV0dXJuIHRoaXMuaW5zZXJ0KG1ldGhvZCwgcGF0aCwgcm91dGUsIHBhcmVudFtw
YXJ0XSk7XG4gIH1cbiAgaWYgKCFwYXJ0ICYmICFwYXRoLmxlbmd0aCAmJiBwYXJlbnQgPT09IHRo
aXMucm91dGVzKSB7XG4gICAgbWV0aG9kVHlwZSA9IHR5cGVvZiBwYXJlbnRbbWV0aG9kXTtcbiAg
ICBzd2l0Y2ggKG1ldGhvZFR5cGUpIHtcbiAgICAgY2FzZSBcImZ1bmN0aW9uXCI6XG4gICAgICBw
YXJlbnRbbWV0aG9kXSA9IFsgcGFyZW50W21ldGhvZF0sIHJvdXRlIF07XG4gICAgICByZXR1cm47
XG4gICAgIGNhc2UgXCJvYmplY3RcIjpcbiAgICAgIHBhcmVudFttZXRob2RdLnB1c2gocm91dGUp
O1xuICAgICAgcmV0dXJuO1xuICAgICBjYXNlIFwidW5kZWZpbmVkXCI6XG4gICAgICBwYXJlbnRb
bWV0aG9kXSA9IHJvdXRlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICByZXR1cm47XG4gIH1c
biAgcGFyZW50VHlwZSA9IHR5cGVvZiBwYXJlbnRbcGFydF07XG4gIGlzQXJyYXkgPSBBcnJheS5p
c0FycmF5KHBhcmVudFtwYXJ0XSk7XG4gIGlmIChwYXJlbnRbcGFydF0gJiYgIWlzQXJyYXkgJiYg
cGFyZW50VHlwZSA9PSBcIm9iamVjdFwiKSB7XG4gICAgbWV0aG9kVHlwZSA9IHR5cGVvZiBwYXJl
bnRbcGFydF1bbWV0aG9kXTtcbiAgICBzd2l0Y2ggKG1ldGhvZFR5cGUpIHtcbiAgICAgY2FzZSBc
ImZ1bmN0aW9uXCI6XG4gICAgICBwYXJlbnRbcGFydF1bbWV0aG9kXSA9IFsgcGFyZW50W3BhcnRd
W21ldGhvZF0sIHJvdXRlIF07XG4gICAgICByZXR1cm47XG4gICAgIGNhc2UgXCJvYmplY3RcIjpc
biAgICAgIHBhcmVudFtwYXJ0XVttZXRob2RdLnB1c2gocm91dGUpO1xuICAgICAgcmV0dXJuO1xu
ICAgICBjYXNlIFwidW5kZWZpbmVkXCI6XG4gICAgICBwYXJlbnRbcGFydF1bbWV0aG9kXSA9IHJv
dXRlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfSBlbHNlIGlmIChwYXJlbnRUeXBlID09IFwi
dW5kZWZpbmVkXCIpIHtcbiAgICBuZXN0ZWQgPSB7fTtcbiAgICBuZXN0ZWRbbWV0aG9kXSA9IHJv
dXRlO1xuICAgIHBhcmVudFtwYXJ0XSA9IG5lc3RlZDtcbiAgICByZXR1cm47XG4gIH1cbiAgdGhy
b3cgbmV3IEVycm9yKFwiSW52YWxpZCByb3V0ZSBjb250ZXh0OiBcIiArIHBhcmVudFR5cGUpO1xu
fTtcblxuXG5cblJvdXRlci5wcm90b3R5cGUuZXh0ZW5kID0gZnVuY3Rpb24obWV0aG9kcykge1xu
ICB2YXIgc2VsZiA9IHRoaXMsIGxlbiA9IG1ldGhvZHMubGVuZ3RoLCBpO1xuICBmdW5jdGlvbiBl
eHRlbmQobWV0aG9kKSB7XG4gICAgc2VsZi5fbWV0aG9kc1ttZXRob2RdID0gdHJ1ZTtcbiAgICBz
ZWxmW21ldGhvZF0gPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBleHRyYSA9IGFyZ3VtZW50cy5s
ZW5ndGggPT09IDEgPyBbIG1ldGhvZCwgXCJcIiBdIDogWyBtZXRob2QgXTtcbiAgICAgIHNlbGYu
b24uYXBwbHkoc2VsZiwgZXh0cmEuY29uY2F0KEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFy
Z3VtZW50cykpKTtcbiAgICB9O1xuICB9XG4gIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykge1xu
ICAgIGV4dGVuZChtZXRob2RzW2ldKTtcbiAgfVxufTtcblxuUm91dGVyLnByb3RvdHlwZS5ydW5s
aXN0ID0gZnVuY3Rpb24oZm5zKSB7XG4gIHZhciBydW5saXN0ID0gdGhpcy5ldmVyeSAmJiB0aGlz
LmV2ZXJ5LmJlZm9yZSA/IFsgdGhpcy5ldmVyeS5iZWZvcmUgXS5jb25jYXQoX2ZsYXR0ZW4oZm5z
KSkgOiBfZmxhdHRlbihmbnMpO1xuICBpZiAodGhpcy5ldmVyeSAmJiB0aGlzLmV2ZXJ5Lm9uKSB7
XG4gICAgcnVubGlzdC5wdXNoKHRoaXMuZXZlcnkub24pO1xuICB9XG4gIHJ1bmxpc3QuY2FwdHVy
ZXMgPSBmbnMuY2FwdHVyZXM7XG4gIHJ1bmxpc3Quc291cmNlID0gZm5zLnNvdXJjZTtcbiAgcmV0
dXJuIHJ1bmxpc3Q7XG59O1xuXG5Sb3V0ZXIucHJvdG90eXBlLm1vdW50ID0gZnVuY3Rpb24ocm91
dGVzLCBwYXRoKSB7XG4gIGlmICghcm91dGVzIHx8IHR5cGVvZiByb3V0ZXMgIT09IFwib2JqZWN0
XCIgfHwgQXJyYXkuaXNBcnJheShyb3V0ZXMpKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIHZhciBz
ZWxmID0gdGhpcztcbiAgcGF0aCA9IHBhdGggfHwgW107XG4gIGlmICghQXJyYXkuaXNBcnJheShw
YXRoKSkge1xuICAgIHBhdGggPSBwYXRoLnNwbGl0KHNlbGYuZGVsaW1pdGVyKTtcbiAgfVxuICBm
dW5jdGlvbiBpbnNlcnRPck1vdW50KHJvdXRlLCBsb2NhbCkge1xuICAgIHZhciByZW5hbWUgPSBy
b3V0ZSwgcGFydHMgPSByb3V0ZS5zcGxpdChzZWxmLmRlbGltaXRlciksIHJvdXRlVHlwZSA9IHR5
cGVvZiByb3V0ZXNbcm91dGVdLCBpc1JvdXRlID0gcGFydHNbMF0gPT09IFwiXCIgfHwgIXNlbGYu
X21ldGhvZHNbcGFydHNbMF1dLCBldmVudCA9IGlzUm91dGUgPyBcIm9uXCIgOiByZW5hbWU7XG4g
ICAgaWYgKGlzUm91dGUpIHtcbiAgICAgIHJlbmFtZSA9IHJlbmFtZS5zbGljZSgocmVuYW1lLm1h
dGNoKG5ldyBSZWdFeHAoXCJeXCIgKyBzZWxmLmRlbGltaXRlcikpIHx8IFsgXCJcIiBdKVswXS5s
ZW5ndGgpO1xuICAgICAgcGFydHMuc2hpZnQoKTtcbiAgICB9XG4gICAgaWYgKGlzUm91dGUgJiYg
cm91dGVUeXBlID09PSBcIm9iamVjdFwiICYmICFBcnJheS5pc0FycmF5KHJvdXRlc1tyb3V0ZV0p
KSB7XG4gICAgICBsb2NhbCA9IGxvY2FsLmNvbmNhdChwYXJ0cyk7XG4gICAgICBzZWxmLm1vdW50
KHJvdXRlc1tyb3V0ZV0sIGxvY2FsKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGlz
Um91dGUpIHtcbiAgICAgIGxvY2FsID0gbG9jYWwuY29uY2F0KHJlbmFtZS5zcGxpdChzZWxmLmRl
bGltaXRlcikpO1xuICAgICAgbG9jYWwgPSB0ZXJtaW5hdG9yKGxvY2FsLCBzZWxmLmRlbGltaXRl
cik7XG4gICAgfVxuICAgIHNlbGYuaW5zZXJ0KGV2ZW50LCBsb2NhbCwgcm91dGVzW3JvdXRlXSk7
XG4gIH1cbiAgZm9yICh2YXIgcm91dGUgaW4gcm91dGVzKSB7XG4gICAgaWYgKHJvdXRlcy5oYXNP
d25Qcm9wZXJ0eShyb3V0ZSkpIHtcbiAgICAgIGluc2VydE9yTW91bnQocm91dGUsIHBhdGguc2xp
Y2UoMCkpO1xuICAgIH1cbiAgfVxufTtcblxuXG5cbn0odHlwZW9mIGV4cG9ydHMgPT09IFwib2Jq
ZWN0XCIgPyBleHBvcnRzIDogd2luZG93KSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBX
RUJQQUNLIEZPT1RFUlxuLy8gLi9+L2RpcmVjdG9yL2J1aWxkL2RpcmVjdG9yLmpzXG4vLyBtb2R1
bGUgaWQgPSA0XG4vLyBtb2R1bGUgY2h1bmtzID0gMiIsIi8qXHJcblx0TUlUIExpY2Vuc2UgaHR0
cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHBcclxuXHRBdXRo
b3IgVG9iaWFzIEtvcHBlcnMgQHNva3JhXHJcbiovXHJcbi8vIGNzcyBiYXNlIGNvZGUsIGluamVj
dGVkIGJ5IHRoZSBjc3MtbG9hZGVyXHJcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7XHJc
blx0dmFyIGxpc3QgPSBbXTtcclxuXHJcblx0Ly8gcmV0dXJuIHRoZSBsaXN0IG9mIG1vZHVsZXMg
YXMgY3NzIHN0cmluZ1xyXG5cdGxpc3QudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZygpIHtc
clxuXHRcdHZhciByZXN1bHQgPSBbXTtcclxuXHRcdGZvcih2YXIgaSA9IDA7IGkgPCB0aGlzLmxl
bmd0aDsgaSsrKSB7XHJcblx0XHRcdHZhciBpdGVtID0gdGhpc1tpXTtcclxuXHRcdFx0aWYoaXRl
bVsyXSkge1xyXG5cdFx0XHRcdHJlc3VsdC5wdXNoKFwiQG1lZGlhIFwiICsgaXRlbVsyXSArIFwi
e1wiICsgaXRlbVsxXSArIFwifVwiKTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRyZXN1
bHQucHVzaChpdGVtWzFdKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHJlc3Vs
dC5qb2luKFwiXCIpO1xyXG5cdH07XHJcblxyXG5cdC8vIGltcG9ydCBhIGxpc3Qgb2YgbW9kdWxl
cyBpbnRvIHRoZSBsaXN0XHJcblx0bGlzdC5pID0gZnVuY3Rpb24obW9kdWxlcywgbWVkaWFRdWVy
eSkge1xyXG5cdFx0aWYodHlwZW9mIG1vZHVsZXMgPT09IFwic3RyaW5nXCIpXHJcblx0XHRcdG1v
ZHVsZXMgPSBbW251bGwsIG1vZHVsZXMsIFwiXCJdXTtcclxuXHRcdHZhciBhbHJlYWR5SW1wb3J0
ZWRNb2R1bGVzID0ge307XHJcblx0XHRmb3IodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkr
Kykge1xyXG5cdFx0XHR2YXIgaWQgPSB0aGlzW2ldWzBdO1xyXG5cdFx0XHRpZih0eXBlb2YgaWQg
PT09IFwibnVtYmVyXCIpXHJcblx0XHRcdFx0YWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpZF0gPSB0
cnVlO1xyXG5cdFx0fVxyXG5cdFx0Zm9yKGkgPSAwOyBpIDwgbW9kdWxlcy5sZW5ndGg7IGkrKykg
e1xyXG5cdFx0XHR2YXIgaXRlbSA9IG1vZHVsZXNbaV07XHJcblx0XHRcdC8vIHNraXAgYWxyZWFk
eSBpbXBvcnRlZCBtb2R1bGVcclxuXHRcdFx0Ly8gdGhpcyBpbXBsZW1lbnRhdGlvbiBpcyBub3Qg
MTAwJSBwZXJmZWN0IGZvciB3ZWlyZCBtZWRpYSBxdWVyeSBjb21iaW5hdGlvbnNcclxuXHRcdFx0
Ly8gIHdoZW4gYSBtb2R1bGUgaXMgaW1wb3J0ZWQgbXVsdGlwbGUgdGltZXMgd2l0aCBkaWZmZXJl
bnQgbWVkaWEgcXVlcmllcy5cclxuXHRcdFx0Ly8gIEkgaG9wZSB0aGlzIHdpbGwgbmV2ZXIgb2Nj
dXIgKEhleSB0aGlzIHdheSB3ZSBoYXZlIHNtYWxsZXIgYnVuZGxlcylcclxuXHRcdFx0aWYodHlw
ZW9mIGl0ZW1bMF0gIT09IFwibnVtYmVyXCIgfHwgIWFscmVhZHlJbXBvcnRlZE1vZHVsZXNbaXRl
bVswXV0pIHtcclxuXHRcdFx0XHRpZihtZWRpYVF1ZXJ5ICYmICFpdGVtWzJdKSB7XHJcblx0XHRc
dFx0XHRpdGVtWzJdID0gbWVkaWFRdWVyeTtcclxuXHRcdFx0XHR9IGVsc2UgaWYobWVkaWFRdWVy
eSkge1xyXG5cdFx0XHRcdFx0aXRlbVsyXSA9IFwiKFwiICsgaXRlbVsyXSArIFwiKSBhbmQgKFwi
ICsgbWVkaWFRdWVyeSArIFwiKVwiO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRsaXN0LnB1c2go
aXRlbSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9O1xyXG5cdHJldHVybiBsaXN0O1xyXG59
O1xyXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34v
Y3NzLWxvYWRlci9saWIvY3NzLWJhc2UuanNcbi8vIG1vZHVsZSBpZCA9IDEwXG4vLyBtb2R1bGUg
Y2h1bmtzID0gMiIsIi8qXG5cdE1JVCBMaWNlbnNlIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcv
bGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwXG5cdEF1dGhvciBUb2JpYXMgS29wcGVycyBAc29rcmFc
biovXG52YXIgc3R5bGVzSW5Eb20gPSB7fSxcblx0bWVtb2l6ZSA9IGZ1bmN0aW9uKGZuKSB7XG5c
dFx0dmFyIG1lbW87XG5cdFx0cmV0dXJuIGZ1bmN0aW9uICgpIHtcblx0XHRcdGlmICh0eXBlb2Yg
bWVtbyA9PT0gXCJ1bmRlZmluZWRcIikgbWVtbyA9IGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7
XG5cdFx0XHRyZXR1cm4gbWVtbztcblx0XHR9O1xuXHR9LFxuXHRpc09sZElFID0gbWVtb2l6ZShm
dW5jdGlvbigpIHtcblx0XHRyZXR1cm4gL21zaWUgWzYtOV1cXGIvLnRlc3Qod2luZG93Lm5hdmln
YXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKSk7XG5cdH0pLFxuXHRnZXRIZWFkRWxlbWVudCA9
IG1lbW9pemUoZnVuY3Rpb24gKCkge1xuXHRcdHJldHVybiBkb2N1bWVudC5oZWFkIHx8IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaGVhZFwiKVswXTtcblx0fSksXG5cdHNpbmdsZXRv
bkVsZW1lbnQgPSBudWxsLFxuXHRzaW5nbGV0b25Db3VudGVyID0gMCxcblx0c3R5bGVFbGVtZW50
c0luc2VydGVkQXRUb3AgPSBbXTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihsaXN0LCBv
cHRpb25zKSB7XG5cdGlmKHR5cGVvZiBERUJVRyAhPT0gXCJ1bmRlZmluZWRcIiAmJiBERUJVRykg
e1xuXHRcdGlmKHR5cGVvZiBkb2N1bWVudCAhPT0gXCJvYmplY3RcIikgdGhyb3cgbmV3IEVycm9y
KFwiVGhlIHN0eWxlLWxvYWRlciBjYW5ub3QgYmUgdXNlZCBpbiBhIG5vbi1icm93c2VyIGVudmly
b25tZW50XCIpO1xuXHR9XG5cblx0b3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cdC8vIEZvcmNl
IHNpbmdsZS10YWcgc29sdXRpb24gb24gSUU2LTksIHdoaWNoIGhhcyBhIGhhcmQgbGltaXQgb24g
dGhlICMgb2YgPHN0eWxlPlxuXHQvLyB0YWdzIGl0IHdpbGwgYWxsb3cgb24gYSBwYWdlXG5cdGlm
ICh0eXBlb2Ygb3B0aW9ucy5zaW5nbGV0b24gPT09IFwidW5kZWZpbmVkXCIpIG9wdGlvbnMuc2lu
Z2xldG9uID0gaXNPbGRJRSgpO1xuXG5cdC8vIEJ5IGRlZmF1bHQsIGFkZCA8c3R5bGU+IHRhZ3Mg
dG8gdGhlIGJvdHRvbSBvZiA8aGVhZD4uXG5cdGlmICh0eXBlb2Ygb3B0aW9ucy5pbnNlcnRBdCA9
PT0gXCJ1bmRlZmluZWRcIikgb3B0aW9ucy5pbnNlcnRBdCA9IFwiYm90dG9tXCI7XG5cblx0dmFy
IHN0eWxlcyA9IGxpc3RUb1N0eWxlcyhsaXN0KTtcblx0YWRkU3R5bGVzVG9Eb20oc3R5bGVzLCBv
cHRpb25zKTtcblxuXHRyZXR1cm4gZnVuY3Rpb24gdXBkYXRlKG5ld0xpc3QpIHtcblx0XHR2YXIg
bWF5UmVtb3ZlID0gW107XG5cdFx0Zm9yKHZhciBpID0gMDsgaSA8IHN0eWxlcy5sZW5ndGg7IGkr
Kykge1xuXHRcdFx0dmFyIGl0ZW0gPSBzdHlsZXNbaV07XG5cdFx0XHR2YXIgZG9tU3R5bGUgPSBz
dHlsZXNJbkRvbVtpdGVtLmlkXTtcblx0XHRcdGRvbVN0eWxlLnJlZnMtLTtcblx0XHRcdG1heVJl
bW92ZS5wdXNoKGRvbVN0eWxlKTtcblx0XHR9XG5cdFx0aWYobmV3TGlzdCkge1xuXHRcdFx0dmFy
IG5ld1N0eWxlcyA9IGxpc3RUb1N0eWxlcyhuZXdMaXN0KTtcblx0XHRcdGFkZFN0eWxlc1RvRG9t
KG5ld1N0eWxlcywgb3B0aW9ucyk7XG5cdFx0fVxuXHRcdGZvcih2YXIgaSA9IDA7IGkgPCBtYXlS
ZW1vdmUubGVuZ3RoOyBpKyspIHtcblx0XHRcdHZhciBkb21TdHlsZSA9IG1heVJlbW92ZVtpXTtc
blx0XHRcdGlmKGRvbVN0eWxlLnJlZnMgPT09IDApIHtcblx0XHRcdFx0Zm9yKHZhciBqID0gMDsg
aiA8IGRvbVN0eWxlLnBhcnRzLmxlbmd0aDsgaisrKVxuXHRcdFx0XHRcdGRvbVN0eWxlLnBhcnRz
W2pdKCk7XG5cdFx0XHRcdGRlbGV0ZSBzdHlsZXNJbkRvbVtkb21TdHlsZS5pZF07XG5cdFx0XHR9
XG5cdFx0fVxuXHR9O1xufVxuXG5mdW5jdGlvbiBhZGRTdHlsZXNUb0RvbShzdHlsZXMsIG9wdGlv
bnMpIHtcblx0Zm9yKHZhciBpID0gMDsgaSA8IHN0eWxlcy5sZW5ndGg7IGkrKykge1xuXHRcdHZh
ciBpdGVtID0gc3R5bGVzW2ldO1xuXHRcdHZhciBkb21TdHlsZSA9IHN0eWxlc0luRG9tW2l0ZW0u
aWRdO1xuXHRcdGlmKGRvbVN0eWxlKSB7XG5cdFx0XHRkb21TdHlsZS5yZWZzKys7XG5cdFx0XHRm
b3IodmFyIGogPSAwOyBqIDwgZG9tU3R5bGUucGFydHMubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0
ZG9tU3R5bGUucGFydHNbal0oaXRlbS5wYXJ0c1tqXSk7XG5cdFx0XHR9XG5cdFx0XHRmb3IoOyBq
IDwgaXRlbS5wYXJ0cy5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRkb21TdHlsZS5wYXJ0cy5wdXNo
KGFkZFN0eWxlKGl0ZW0ucGFydHNbal0sIG9wdGlvbnMpKTtcblx0XHRcdH1cblx0XHR9IGVsc2Ug
e1xuXHRcdFx0dmFyIHBhcnRzID0gW107XG5cdFx0XHRmb3IodmFyIGogPSAwOyBqIDwgaXRlbS5w
YXJ0cy5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRwYXJ0cy5wdXNoKGFkZFN0eWxlKGl0ZW0ucGFy
dHNbal0sIG9wdGlvbnMpKTtcblx0XHRcdH1cblx0XHRcdHN0eWxlc0luRG9tW2l0ZW0uaWRdID0g
e2lkOiBpdGVtLmlkLCByZWZzOiAxLCBwYXJ0czogcGFydHN9O1xuXHRcdH1cblx0fVxufVxuXG5m
dW5jdGlvbiBsaXN0VG9TdHlsZXMobGlzdCkge1xuXHR2YXIgc3R5bGVzID0gW107XG5cdHZhciBu
ZXdTdHlsZXMgPSB7fTtcblx0Zm9yKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtc
blx0XHR2YXIgaXRlbSA9IGxpc3RbaV07XG5cdFx0dmFyIGlkID0gaXRlbVswXTtcblx0XHR2YXIg
Y3NzID0gaXRlbVsxXTtcblx0XHR2YXIgbWVkaWEgPSBpdGVtWzJdO1xuXHRcdHZhciBzb3VyY2VN
YXAgPSBpdGVtWzNdO1xuXHRcdHZhciBwYXJ0ID0ge2NzczogY3NzLCBtZWRpYTogbWVkaWEsIHNv
dXJjZU1hcDogc291cmNlTWFwfTtcblx0XHRpZighbmV3U3R5bGVzW2lkXSlcblx0XHRcdHN0eWxl
cy5wdXNoKG5ld1N0eWxlc1tpZF0gPSB7aWQ6IGlkLCBwYXJ0czogW3BhcnRdfSk7XG5cdFx0ZWxz
ZVxuXHRcdFx0bmV3U3R5bGVzW2lkXS5wYXJ0cy5wdXNoKHBhcnQpO1xuXHR9XG5cdHJldHVybiBz
dHlsZXM7XG59XG5cbmZ1bmN0aW9uIGluc2VydFN0eWxlRWxlbWVudChvcHRpb25zLCBzdHlsZUVs
ZW1lbnQpIHtcblx0dmFyIGhlYWQgPSBnZXRIZWFkRWxlbWVudCgpO1xuXHR2YXIgbGFzdFN0eWxl
RWxlbWVudEluc2VydGVkQXRUb3AgPSBzdHlsZUVsZW1lbnRzSW5zZXJ0ZWRBdFRvcFtzdHlsZUVs
ZW1lbnRzSW5zZXJ0ZWRBdFRvcC5sZW5ndGggLSAxXTtcblx0aWYgKG9wdGlvbnMuaW5zZXJ0QXQg
PT09IFwidG9wXCIpIHtcblx0XHRpZighbGFzdFN0eWxlRWxlbWVudEluc2VydGVkQXRUb3ApIHtc
blx0XHRcdGhlYWQuaW5zZXJ0QmVmb3JlKHN0eWxlRWxlbWVudCwgaGVhZC5maXJzdENoaWxkKTtc
blx0XHR9IGVsc2UgaWYobGFzdFN0eWxlRWxlbWVudEluc2VydGVkQXRUb3AubmV4dFNpYmxpbmcp
IHtcblx0XHRcdGhlYWQuaW5zZXJ0QmVmb3JlKHN0eWxlRWxlbWVudCwgbGFzdFN0eWxlRWxlbWVu
dEluc2VydGVkQXRUb3AubmV4dFNpYmxpbmcpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRoZWFkLmFw
cGVuZENoaWxkKHN0eWxlRWxlbWVudCk7XG5cdFx0fVxuXHRcdHN0eWxlRWxlbWVudHNJbnNlcnRl
ZEF0VG9wLnB1c2goc3R5bGVFbGVtZW50KTtcblx0fSBlbHNlIGlmIChvcHRpb25zLmluc2VydEF0
ID09PSBcImJvdHRvbVwiKSB7XG5cdFx0aGVhZC5hcHBlbmRDaGlsZChzdHlsZUVsZW1lbnQpO1xu
XHR9IGVsc2Uge1xuXHRcdHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgdmFsdWUgZm9yIHBhcmFt
ZXRlciAnaW5zZXJ0QXQnLiBNdXN0IGJlICd0b3AnIG9yICdib3R0b20nLlwiKTtcblx0fVxufVxu
XG5mdW5jdGlvbiByZW1vdmVTdHlsZUVsZW1lbnQoc3R5bGVFbGVtZW50KSB7XG5cdHN0eWxlRWxl
bWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHN0eWxlRWxlbWVudCk7XG5cdHZhciBpZHggPSBz
dHlsZUVsZW1lbnRzSW5zZXJ0ZWRBdFRvcC5pbmRleE9mKHN0eWxlRWxlbWVudCk7XG5cdGlmKGlk
eCA+PSAwKSB7XG5cdFx0c3R5bGVFbGVtZW50c0luc2VydGVkQXRUb3Auc3BsaWNlKGlkeCwgMSk7
XG5cdH1cbn1cblxuZnVuY3Rpb24gY3JlYXRlU3R5bGVFbGVtZW50KG9wdGlvbnMpIHtcblx0dmFy
IHN0eWxlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTtcblx0c3R5
bGVFbGVtZW50LnR5cGUgPSBcInRleHQvY3NzXCI7XG5cdGluc2VydFN0eWxlRWxlbWVudChvcHRp
b25zLCBzdHlsZUVsZW1lbnQpO1xuXHRyZXR1cm4gc3R5bGVFbGVtZW50O1xufVxuXG5mdW5jdGlv
biBhZGRTdHlsZShvYmosIG9wdGlvbnMpIHtcblx0dmFyIHN0eWxlRWxlbWVudCwgdXBkYXRlLCBy
ZW1vdmU7XG5cblx0aWYgKG9wdGlvbnMuc2luZ2xldG9uKSB7XG5cdFx0dmFyIHN0eWxlSW5kZXgg
PSBzaW5nbGV0b25Db3VudGVyKys7XG5cdFx0c3R5bGVFbGVtZW50ID0gc2luZ2xldG9uRWxlbWVu
dCB8fCAoc2luZ2xldG9uRWxlbWVudCA9IGNyZWF0ZVN0eWxlRWxlbWVudChvcHRpb25zKSk7XG5c
dFx0dXBkYXRlID0gYXBwbHlUb1NpbmdsZXRvblRhZy5iaW5kKG51bGwsIHN0eWxlRWxlbWVudCwg
c3R5bGVJbmRleCwgZmFsc2UpO1xuXHRcdHJlbW92ZSA9IGFwcGx5VG9TaW5nbGV0b25UYWcuYmlu
ZChudWxsLCBzdHlsZUVsZW1lbnQsIHN0eWxlSW5kZXgsIHRydWUpO1xuXHR9IGVsc2Uge1xuXHRc
dHN0eWxlRWxlbWVudCA9IGNyZWF0ZVN0eWxlRWxlbWVudChvcHRpb25zKTtcblx0XHR1cGRhdGUg
PSBhcHBseVRvVGFnLmJpbmQobnVsbCwgc3R5bGVFbGVtZW50KTtcblx0XHRyZW1vdmUgPSBmdW5j
dGlvbigpIHtcblx0XHRcdHJlbW92ZVN0eWxlRWxlbWVudChzdHlsZUVsZW1lbnQpO1xuXHRcdH07
XG5cdH1cblxuXHR1cGRhdGUob2JqKTtcblxuXHRyZXR1cm4gZnVuY3Rpb24gdXBkYXRlU3R5bGUo
bmV3T2JqKSB7XG5cdFx0aWYobmV3T2JqKSB7XG5cdFx0XHRpZihuZXdPYmouY3NzID09PSBvYmou
Y3NzICYmIG5ld09iai5tZWRpYSA9PT0gb2JqLm1lZGlhICYmIG5ld09iai5zb3VyY2VNYXAgPT09
IG9iai5zb3VyY2VNYXApXG5cdFx0XHRcdHJldHVybjtcblx0XHRcdHVwZGF0ZShvYmogPSBuZXdP
YmopO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZW1vdmUoKTtcblx0XHR9XG5cdH07XG59XG5cbnZh
ciByZXBsYWNlVGV4dCA9IChmdW5jdGlvbiAoKSB7XG5cdHZhciB0ZXh0U3RvcmUgPSBbXTtcblxu
XHRyZXR1cm4gZnVuY3Rpb24gKGluZGV4LCByZXBsYWNlbWVudCkge1xuXHRcdHRleHRTdG9yZVtp
bmRleF0gPSByZXBsYWNlbWVudDtcblx0XHRyZXR1cm4gdGV4dFN0b3JlLmZpbHRlcihCb29sZWFu
KS5qb2luKCdcXG4nKTtcblx0fTtcbn0pKCk7XG5cbmZ1bmN0aW9uIGFwcGx5VG9TaW5nbGV0b25U
YWcoc3R5bGVFbGVtZW50LCBpbmRleCwgcmVtb3ZlLCBvYmopIHtcblx0dmFyIGNzcyA9IHJlbW92
ZSA/IFwiXCIgOiBvYmouY3NzO1xuXG5cdGlmIChzdHlsZUVsZW1lbnQuc3R5bGVTaGVldCkge1xu
XHRcdHN0eWxlRWxlbWVudC5zdHlsZVNoZWV0LmNzc1RleHQgPSByZXBsYWNlVGV4dChpbmRleCwg
Y3NzKTtcblx0fSBlbHNlIHtcblx0XHR2YXIgY3NzTm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHRO
b2RlKGNzcyk7XG5cdFx0dmFyIGNoaWxkTm9kZXMgPSBzdHlsZUVsZW1lbnQuY2hpbGROb2Rlcztc
blx0XHRpZiAoY2hpbGROb2Rlc1tpbmRleF0pIHN0eWxlRWxlbWVudC5yZW1vdmVDaGlsZChjaGls
ZE5vZGVzW2luZGV4XSk7XG5cdFx0aWYgKGNoaWxkTm9kZXMubGVuZ3RoKSB7XG5cdFx0XHRzdHls
ZUVsZW1lbnQuaW5zZXJ0QmVmb3JlKGNzc05vZGUsIGNoaWxkTm9kZXNbaW5kZXhdKTtcblx0XHR9
IGVsc2Uge1xuXHRcdFx0c3R5bGVFbGVtZW50LmFwcGVuZENoaWxkKGNzc05vZGUpO1xuXHRcdH1c
blx0fVxufVxuXG5mdW5jdGlvbiBhcHBseVRvVGFnKHN0eWxlRWxlbWVudCwgb2JqKSB7XG5cdHZh
ciBjc3MgPSBvYmouY3NzO1xuXHR2YXIgbWVkaWEgPSBvYmoubWVkaWE7XG5cdHZhciBzb3VyY2VN
YXAgPSBvYmouc291cmNlTWFwO1xuXG5cdGlmIChtZWRpYSkge1xuXHRcdHN0eWxlRWxlbWVudC5z
ZXRBdHRyaWJ1dGUoXCJtZWRpYVwiLCBtZWRpYSk7XG5cdH1cblxuXHRpZiAoc291cmNlTWFwKSB7
XG5cdFx0Ly8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9kZXZ0b29scy9kb2NzL2phdmFz
Y3JpcHQtZGVidWdnaW5nXG5cdFx0Ly8gdGhpcyBtYWtlcyBzb3VyY2UgbWFwcyBpbnNpZGUgc3R5
bGUgdGFncyB3b3JrIHByb3Blcmx5IGluIENocm9tZVxuXHRcdGNzcyArPSAnXFxuLyojIHNvdXJj
ZVVSTD0nICsgc291cmNlTWFwLnNvdXJjZXNbMF0gKyAnICovJztcblx0XHQvLyBodHRwOi8vc3Rh
Y2tvdmVyZmxvdy5jb20vYS8yNjYwMzg3NVxuXHRcdGNzcyArPSBcIlxcbi8qIyBzb3VyY2VNYXBw
aW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsXCIgKyBidG9hKHVuZXNjYXBlKGVu
Y29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShzb3VyY2VNYXApKSkpICsgXCIgKi9cIjtc
blx0fVxuXG5cdGlmIChzdHlsZUVsZW1lbnQuc3R5bGVTaGVldCkge1xuXHRcdHN0eWxlRWxlbWVu
dC5zdHlsZVNoZWV0LmNzc1RleHQgPSBjc3M7XG5cdH0gZWxzZSB7XG5cdFx0d2hpbGUoc3R5bGVF
bGVtZW50LmZpcnN0Q2hpbGQpIHtcblx0XHRcdHN0eWxlRWxlbWVudC5yZW1vdmVDaGlsZChzdHls
ZUVsZW1lbnQuZmlyc3RDaGlsZCk7XG5cdFx0fVxuXHRcdHN0eWxlRWxlbWVudC5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpKTtcblx0fVxufVxuXG5cblxuLy8vLy8vLy8v
Ly8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L3Z1ZS1zdHlsZS1sb2FkZXIvYWRk
U3R5bGVzLmpzXG4vLyBtb2R1bGUgaWQgPSAxMVxuLy8gbW9kdWxlIGNodW5rcyA9IDIiXSwic291
cmNlUm9vdCI6IiJ9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvdnVlanMtY2xpL2luZGV4Lmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvaW5k
ZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40NzliYTQ4ZjBmZWY1MDQxYTRhYzBlYWI1YzM5MGJkZWM3OWFi
ODAwCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2luZGV4Lmh0bWwK
QEAgLTAsMCArMSwxMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgPGhlYWQ+CisgICAg
PG1ldGEgY2hhcnNldD0idXRmLTgiPgorICAgIDx0aXRsZT52dWUtY2xpLXRvZG9tdmM8L3RpdGxl
PgorICA8L2hlYWQ+CisgIDxib2R5PgorICAgIDxkaXYgaWQ9ImFwcCI+PC9kaXY+CisgICAgPCEt
LSBidWlsdCBmaWxlcyB3aWxsIGJlIGF1dG8gaW5qZWN0ZWQgLS0+CisgIDwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9wYWNrYWdlLmpzb24gYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy92dWVqcy1jbGkvcGFja2FnZS5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk5YzM0NDU3NjI5NTVj
YjRkOWYyNGY1YTNhZmU0Y2E0NmY2NjhkNWUKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy92dWVqcy1jbGkvcGFja2FnZS5qc29uCkBAIC0wLDAgKzEsNTcgQEAKK3sKKyAgIm5hbWUiOiAi
dnVlLWNsaS10b2RvbXZjIiwKKyAgInZlcnNpb24iOiAiMS4wLjAiLAorICAiZGVzY3JpcHRpb24i
OiAiVnVlLmpzIFRvZG9NVkMiLAorICAiYXV0aG9yIjogIkFkZHkgT3NtYW5pIDxhZGR5b3NtYW5p
QGdtYWlsLmNvbT4iLAorICAicHJpdmF0ZSI6IHRydWUsCisgICJzY3JpcHRzIjogeworICAgICJk
ZXYiOiAibm9kZSBidWlsZC9kZXYtc2VydmVyLmpzIiwKKyAgICAiYnVpbGQiOiAibm9kZSBidWls
ZC9idWlsZC5qcyIsCisgICAgImxpbnQiOiAiZXNsaW50IC0tZXh0IC5qcywudnVlIHNyYyIKKyAg
fSwKKyAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAiZGlyZWN0b3IiOiAiXjEuMi44IiwKKyAgICAi
dnVlIjogIl4yLjEuMCIKKyAgfSwKKyAgImRldkRlcGVuZGVuY2llcyI6IHsKKyAgICAiYXV0b3By
ZWZpeGVyIjogIl42LjQuMCIsCisgICAgImJhYmVsLWNvcmUiOiAiXjYuMC4wIiwKKyAgICAiYmFi
ZWwtZXNsaW50IjogIl43LjAuMCIsCisgICAgImJhYmVsLWxvYWRlciI6ICJeNi4wLjAiLAorICAg
ICJiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLXJ1bnRpbWUiOiAiXjYuMC4wIiwKKyAgICAiYmFiZWwt
cHJlc2V0LWVzMjAxNSI6ICJeNi4wLjAiLAorICAgICJiYWJlbC1wcmVzZXQtc3RhZ2UtMiI6ICJe
Ni4wLjAiLAorICAgICJiYWJlbC1yZWdpc3RlciI6ICJeNi4wLjAiLAorICAgICJjaGFsayI6ICJe
MS4xLjMiLAorICAgICJjb25uZWN0LWhpc3RvcnktYXBpLWZhbGxiYWNrIjogIl4xLjEuMCIsCisg
ICAgImNzcy1sb2FkZXIiOiAiXjAuMjUuMCIsCisgICAgImVzbGludCI6ICJeMy43LjEiLAorICAg
ICJlc2xpbnQtZnJpZW5kbHktZm9ybWF0dGVyIjogIl4yLjAuNSIsCisgICAgImVzbGludC1sb2Fk
ZXIiOiAiXjEuNS4wIiwKKyAgICAiZXNsaW50LXBsdWdpbi1odG1sIjogIl4xLjMuMCIsCisgICAg
ImV2ZW50c291cmNlLXBvbHlmaWxsIjogIl4wLjkuNiIsCisgICAgImV4cHJlc3MiOiAiXjQuMTMu
MyIsCisgICAgImV4dHJhY3QtdGV4dC13ZWJwYWNrLXBsdWdpbiI6ICJeMS4wLjEiLAorICAgICJm
aWxlLWxvYWRlciI6ICJeMC45LjAiLAorICAgICJmdW5jdGlvbi1iaW5kIjogIl4xLjAuMiIsCisg
ICAgImh0bWwtd2VicGFjay1wbHVnaW4iOiAiXjIuOC4xIiwKKyAgICAiaHR0cC1wcm94eS1taWRk
bGV3YXJlIjogIl4wLjE3LjIiLAorICAgICJqc29uLWxvYWRlciI6ICJeMC41LjQiLAorICAgICJz
ZW12ZXIiOiAiXjUuMy4wIiwKKyAgICAib3BuIjogIl40LjAuMiIsCisgICAgIm9yYSI6ICJeMC4z
LjAiLAorICAgICJzaGVsbGpzIjogIl4wLjcuNCIsCisgICAgInVybC1sb2FkZXIiOiAiXjAuNS43
IiwKKyAgICAidnVlLWxvYWRlciI6ICJeMTAuMC4wIiwKKyAgICAidnVlLXN0eWxlLWxvYWRlciI6
ICJeMS4wLjAiLAorICAgICJ2dWUtdGVtcGxhdGUtY29tcGlsZXIiOiAiXjIuMS4wIiwKKyAgICAi
d2VicGFjayI6ICJeMS4xMy4yIiwKKyAgICAid2VicGFjay1kZXYtbWlkZGxld2FyZSI6ICJeMS44
LjMiLAorICAgICJ3ZWJwYWNrLWhvdC1taWRkbGV3YXJlIjogIl4yLjEyLjIiLAorICAgICJ3ZWJw
YWNrLW1lcmdlIjogIl4wLjE0LjEiCisgIH0sCisgICJlbmdpbmVzIjogeworICAgICJub2RlIjog
Ij49IDQuMC4wIiwKKyAgICAibnBtIjogIj49IDMuMC4wIgorICB9Cit9CmRpZmYgLS1naXQgYS9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy92dWVqcy1jbGkvc3JjL0FwcC52dWUgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkv
c3JjL0FwcC52dWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWVhZWRlYTUwMGI0MmEzZTJmMGY4YjQ0MGNmNWVlOWZi
NzY4YmIzNwotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9zcmMvQXBw
LnZ1ZQpAQCAtMCwwICsxLDE2IEBACis8dGVtcGxhdGU+CisgIDxkaXYgaWQ9ImFwcCI+CisgICAg
PFRvZG9zPjwvVG9kb3M+CisgIDwvZGl2PgorPC90ZW1wbGF0ZT4KKworPHNjcmlwdD4KK2ltcG9y
dCBUb2RvcyBmcm9tICcuL2NvbXBvbmVudHMvVG9kb3MnCisKK2V4cG9ydCBkZWZhdWx0IHsKKyAg
ICBuYW1lOiAnYXBwJywKKyAgICBjb21wb25lbnRzOiB7CisgICAgICAgIFRvZG9zCisgICAgfQor
fQorPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvc3JjL2NvbXBv
bmVudHMvVG9kb3MudnVlIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL3NyYy9jb21wb25lbnRzL1Rv
ZG9zLnZ1ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43MGI1ZjdhOTE5YzI4YzJhM2Q1NWNmOTU4MzJhYjc3ODdmMjNl
MTkzCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL3NyYy9jb21wb25l
bnRzL1RvZG9zLnZ1ZQpAQCAtMCwwICsxLDExMiBAQAorPHRlbXBsYXRlPgorICAgIDxzZWN0aW9u
IGNsYXNzPSJ0b2RvYXBwIj4KKyAgICAgICAgPGhlYWRlciBjbGFzcz0iaGVhZGVyIj4KKyAgICAg
ICAgICAgIDxoMT5Ub2RvczwvaDE+CisgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgY2xh
c3M9Im5ldy10b2RvIiBhdXRvZm9jdXMgYXV0b2NvbXBsZXRlPSJvZmYiIHBsYWNlaG9sZGVyPSJX
aGF0IG5lZWRzIHRvIGJlIGRvbmU/IiB2LW1vZGVsPSJuZXdUb2RvIiBAa2V5dXAuZW50ZXI9ImFk
ZFRvZG8iIC8+CisgICAgICAgIDwvaGVhZGVyPgorICAgICAgICA8c2VjdGlvbiBjbGFzcz0ibWFp
biIgdi1zaG93PSJ0b2Rvcy5sZW5ndGgiIHYtY2xvYWs+CisgICAgICAgICAgICA8aW5wdXQgdHlw
ZT0iY2hlY2tib3giIGNsYXNzPSJ0b2dnbGUtYWxsIiB2LW1vZGVsPSJhbGxEb25lIj4KKyAgICAg
ICAgICAgIDx1bCBjbGFzcz0idG9kby1saXN0Ij4KKyAgICAgICAgICAgICAgICA8bGkgY2xhc3M9
InRvZG8iIHYtZm9yPSJ0b2RvIGluIGZpbHRlcmVkVG9kb3MiIDpjbGFzcz0ie2NvbXBsZXRlZCA6
IHRvZG8uY29tcGxldGVkLCBlZGl0aW5nIDogdG9kbyA9PT0gZWRpdGluZyB9Ij4KKyAgICAgICAg
ICAgICAgICAgICAgPGRpdiBjbGFzcz0idmlldyI+CisgICAgICAgICAgICAgICAgICAgICAgICA8
aW5wdXQgdHlwZT0iY2hlY2tib3giIHYtbW9kZWw9InRvZG8uY29tcGxldGVkIiBjbGFzcz0idG9n
Z2xlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBAZGJsY2xpY2s9ImVkaXRUb2Rv
KHRvZG8pIj57eyB0b2RvLnRpdGxlIH19PC9sYWJlbD4KKyAgICAgICAgICAgICAgICAgICAgICAg
IDxidXR0b24gY2xhc3M9ImRlc3Ryb3kiIEBjbGljay5wcmV2ZW50PSJkZWxldGVUb2RvKHRvZG8p
Ij48L2J1dHRvbj4KKyAgICAgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAg
ICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iZWRpdCIgdi1tb2RlbD0idG9kby50aXRsZSIg
QGtleXVwLmVudGVyPSJkb25lRWRpdCIgQGJsdXI9ImRvbmVFZGl0IiB2LXRvZG9Gb2N1cz0idG9k
byA9PT0gZWRpdGluZyI+PC9pbnB1dD4KKyAgICAgICAgICAgICAgICA8L2xpPgorICAgICAgICAg
ICAgPC91bD4KKyAgICAgICAgPC9kaXY+CisgICAgICAgIDxmb290ZXIgY2xhc3M9ImZvb3RlciIg
di1zaG93PSJ0b2Rvcy5sZW5ndGggPiAwIj4KKyAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0b2Rv
LWNvdW50Ij4KKyAgICAgICAgICAgIDxzdHJvbmc+e3sgcmVtYWluaW5nIH19PC9zdHJvbmc+IHt7
IHJlbWFpbmluZyB8IHBsdXJhbGl6ZSB9fSBsZWZ0CisgICAgICAgICAgICA8L3NwYW4+CisgICAg
ICAgICAgICA8dWwgY2xhc3M9ImZpbHRlcnMiPgorICAgICAgICAgICAgICAgIDxsaT48YSBocmVm
PSIjL2FsbCIgOmNsYXNzPSJ7c2VsZWN0ZWQ6IGZpbHRlciA9PSAnYWxsJ30iIEBjbGljaz0iZmls
dGVyID0gJ2FsbCciPkFsbDwvYT48L2xpPgorICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIj
L2FjdGl2ZSIgOmNsYXNzPSJ7c2VsZWN0ZWQ6IGZpbHRlciA9PSAnYWN0aXZlJ30iIEBjbGljaz0i
ZmlsdGVyID0gJ2FjdGl2ZSciPkFjdGl2ZTwvYT48L2xpPgorICAgICAgICAgICAgICAgIDxsaT48
YSBocmVmPSIjL2NvbXBsZXRlZCIgOmNsYXNzPSJ7c2VsZWN0ZWQ6IGZpbHRlciA9PSAnY29tcGxl
dGVkJ30iIEBjbGljaz0iZmlsdGVyID0gJ2NvbXBsZXRlZCciPkNvbXBsZXRlZDwvYT48L2xpPgor
ICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImNsZWFyLWNvbXBs
ZXRlZCIgdi1zaG93PSJjb21wbGV0ZWQiIEBjbGljay5wcmV2ZW50PSJkZWxldGVDb21wbGV0ZWQi
PkNsZWFyIENvbXBsZXRlZDwvYnV0dG9uPgorICAgICAgICA8L2Zvb3Rlcj4KKyAgICA8L3NlY3Rp
b24+Cis8L3RlbXBsYXRlPgorCis8c2NyaXB0PgoraW1wb3J0IFZ1ZSBmcm9tICd2dWUnCisKK2V4
cG9ydCBkZWZhdWx0IHsKKyAgICBkYXRhICgpIHsKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAg
ICAgIHRvZG9zOiBbXSwKKyAgICAgICAgICAgIG5ld1RvZG86ICcnLAorICAgICAgICAgICAgZmls
dGVyOiAnYWxsJywKKyAgICAgICAgICAgIGFsbERvbmU6IGZhbHNlLAorICAgICAgICAgICAgZWRp
dGluZzogbnVsbAorICAgICAgICB9CisgICAgfSwKKyAgICBmaWx0ZXJzOiB7CisgICAgICAgIHBs
dXJhbGl6ZTogZnVuY3Rpb24gKG4pIHsKKyAgICAgICAgcmV0dXJuIG4gPT09IDEgPyAnaXRlbScg
OiAnaXRlbXMnCisgICAgICAgIH0KKyAgICB9LAorICAgIGRpcmVjdGl2ZXM6IHsKKyAgICAgICAg
dG9kb0ZvY3VzIChlbCwgdmFsdWUpIHsKKyAgICAgICAgICAgIGlmICh2YWx1ZSkgeworICAgICAg
ICAgICAgICAgIFZ1ZS5uZXh0VGljayhfID0+IHsKKyAgICAgICAgICAgICAgICAgICAgZWwuZm9j
dXMoKQorICAgICAgICAgICAgICAgIH0pCisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
LAorICAgIG1ldGhvZHM6IHsKKyAgICAgICAgYWRkVG9kbyAoKSB7CisgICAgICAgICAgICB0aGlz
LnRvZG9zLnB1c2goeworICAgICAgICAgICAgICAgIGNvbXBsZXRlZDogZmFsc2UsCisgICAgICAg
ICAgICAgICAgdGl0bGU6IHRoaXMubmV3VG9kbworICAgICAgICAgICAgfSkKKyAgICAgICAgICAg
IHRoaXMubmV3VG9kbyA9ICcnCisgICAgICAgIH0sCisgICAgICAgIGRlbGV0ZVRvZG8gKHRvZG8p
IHsKKyAgICAgICAgICAgIHRoaXMudG9kb3MgPSB0aGlzLnRvZG9zLmZpbHRlcih0ID0+IHQgIT09
IHRvZG8pCisgICAgICAgIH0sCisgICAgICAgIGRlbGV0ZUNvbXBsZXRlZCAoKSB7CisgICAgICAg
ICAgICB0aGlzLnRvZG9zID0gdGhpcy50b2Rvcy5maWx0ZXIodG9kbyA9PiAhdG9kby5jb21wbGV0
ZWQpCisgICAgICAgIH0sCisgICAgICAgIGVkaXRUb2RvICh0b2RvKSB7CisgICAgICAgICAgICB0
aGlzLmVkaXRpbmcgPSB0b2RvCisgICAgICAgIH0sCisgICAgICAgIGRvbmVFZGl0ICgpIHsKKyAg
ICAgICAgICAgIHRoaXMuZWRpdGluZyA9IG51bGwKKyAgICAgICAgfQorICAgIH0sCisgICAgY29t
cHV0ZWQ6IHsKKyAgICAgICAgcmVtYWluaW5nICgpIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlz
LnRvZG9zLmZpbHRlcih0b2RvID0+ICF0b2RvLmNvbXBsZXRlZCkubGVuZ3RoCisgICAgICAgIH0s
CisgICAgICAgIGNvbXBsZXRlZCAoKSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy50b2Rvcy5m
aWx0ZXIodG9kbyA9PiB0b2RvLmNvbXBsZXRlZCkubGVuZ3RoCisgICAgICAgIH0sCisgICAgICAg
IGZpbHRlcmVkVG9kb3MgKCkgeworICAgICAgICAgICAgaWYgKHRoaXMuZmlsdGVyID09PSAnYWN0
aXZlJykgeworICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRvZG9zLmZpbHRlcih0b2RvID0+
ICF0b2RvLmNvbXBsZXRlZCkKKyAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5maWx0ZXIgPT09
ICdjb21wbGV0ZWQnKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudG9kb3MuZmlsdGVy
KHRvZG8gPT4gdG9kby5jb21wbGV0ZWQpCisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJl
dHVybiB0aGlzLnRvZG9zCisgICAgICAgIH0sCisgICAgICAgIGFsbERvbmU6IHsKKyAgICAgICAg
ICAgIGdldCAoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVtYWluaW5nID09PSAw
CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgc2V0ICh2YWx1ZSkgeworICAgICAgICAgICAg
ICAgIHRoaXMudG9kb3MuZm9yRWFjaCh0b2RvID0+IHsKKyAgICAgICAgICAgICAgICAgICAgdG9k
by5jb21wbGV0ZWQgPSB2YWx1ZQorICAgICAgICAgICAgICAgIH0pCisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9Cit9Cis8L3NjcmlwdD4KKworPHN0eWxlIHNyYz0iLi90b2RvLmNzcyI+
PC9zdHlsZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy92dWVqcy1jbGkvc3JjL2NvbXBvbmVudHMvdG9kby5jc3MgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVq
cy1jbGkvc3JjL2NvbXBvbmVudHMvdG9kby5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTBlM2QyZjZiNzkzZDQy
Y2I0ZTIwYWVlYTQ4YTNiNWNlYjQ4NmVlNQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L3Z1ZWpzLWNsaS9zcmMvY29tcG9uZW50cy90b2RvLmNzcwpAQCAtMCwwICsxLDM3MCBAQAoraHRt
bCwKK2JvZHkgeworICAgIG1hcmdpbjogMDsKKyAgICBwYWRkaW5nOiAwOworfQorCitidXR0b24g
eworICAgIG1hcmdpbjogMDsKKyAgICBwYWRkaW5nOiAwOworICAgIGJvcmRlcjogMDsKKyAgICBi
YWNrZ3JvdW5kOiBub25lOworICAgIGZvbnQtc2l6ZTogMTAwJTsKKyAgICB2ZXJ0aWNhbC1hbGln
bjogYmFzZWxpbmU7CisgICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7CisgICAgZm9udC13ZWlnaHQ6
IGluaGVyaXQ7CisgICAgY29sb3I6IGluaGVyaXQ7CisgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBu
b25lOworICAgIGFwcGVhcmFuY2U6IG5vbmU7CisgICAgLXdlYmtpdC1mb250LXNtb290aGluZzog
YW50aWFsaWFzZWQ7CisgICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTsKK30K
KworYm9keSB7CisgICAgZm9udDogMTRweCAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIEFy
aWFsLCBzYW5zLXNlcmlmOworICAgIGxpbmUtaGVpZ2h0OiAxLjRlbTsKKyAgICBiYWNrZ3JvdW5k
OiAjZjVmNWY1OworICAgIGNvbG9yOiAjNGQ0ZDRkOworICAgIG1pbi13aWR0aDogMjMwcHg7Cisg
ICAgbWF4LXdpZHRoOiA1NTBweDsKKyAgICBtYXJnaW46IDAgYXV0bzsKKyAgICAtd2Via2l0LWZv
bnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKKyAgICAtbW96LW9zeC1mb250LXNtb290aGluZzog
Z3JheXNjYWxlOworICAgIGZvbnQtd2VpZ2h0OiAzMDA7Cit9CisKKzpmb2N1cyB7CisgICAgb3V0
bGluZTogMDsKK30KKworLmhpZGRlbiB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKworLnRvZG9h
cHAgeworICAgIGJhY2tncm91bmQ6ICNmZmY7CisgICAgbWFyZ2luOiAxMzBweCAwIDQwcHggMDsK
KyAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgYm94LXNoYWRvdzogMCAycHggNHB4IDAgcmdi
YSgwLCAwLCAwLCAwLjIpLAorICAgICAgICAgICAgICAgIDAgMjVweCA1MHB4IDAgcmdiYSgwLCAw
LCAwLCAwLjEpOworfQorCisudG9kb2FwcCBpbnB1dDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRl
ciB7CisgICAgZm9udC1zdHlsZTogaXRhbGljOworICAgIGZvbnQtd2VpZ2h0OiAzMDA7CisgICAg
Y29sb3I6ICNlNmU2ZTY7Cit9CisKKy50b2RvYXBwIGlucHV0OjotbW96LXBsYWNlaG9sZGVyIHsK
KyAgICBmb250LXN0eWxlOiBpdGFsaWM7CisgICAgZm9udC13ZWlnaHQ6IDMwMDsKKyAgICBjb2xv
cjogI2U2ZTZlNjsKK30KKworLnRvZG9hcHAgaW5wdXQ6OmlucHV0LXBsYWNlaG9sZGVyIHsKKyAg
ICBmb250LXN0eWxlOiBpdGFsaWM7CisgICAgZm9udC13ZWlnaHQ6IDMwMDsKKyAgICBjb2xvcjog
I2U2ZTZlNjsKK30KKworLnRvZG9hcHAgaDEgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAg
ICB0b3A6IC0xNTVweDsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBmb250LXNpemU6IDEwMHB4Owor
ICAgIGZvbnQtd2VpZ2h0OiAxMDA7CisgICAgdGV4dC1hbGlnbjogY2VudGVyOworICAgIGNvbG9y
OiByZ2JhKDE3NSwgNDcsIDQ3LCAwLjE1KTsKKyAgICAtd2Via2l0LXRleHQtcmVuZGVyaW5nOiBv
cHRpbWl6ZUxlZ2liaWxpdHk7CisgICAgLW1vei10ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdp
YmlsaXR5OworICAgIHRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7Cit9CisKKy5u
ZXctdG9kbywKKy5lZGl0IHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgbWFyZ2luOiAw
OworICAgIHdpZHRoOiAxMDAlOworICAgIGZvbnQtc2l6ZTogMjRweDsKKyAgICBmb250LWZhbWls
eTogaW5oZXJpdDsKKyAgICBmb250LXdlaWdodDogaW5oZXJpdDsKKyAgICBsaW5lLWhlaWdodDog
MS40ZW07CisgICAgYm9yZGVyOiAwOworICAgIGNvbG9yOiBpbmhlcml0OworICAgIHBhZGRpbmc6
IDZweDsKKyAgICBib3JkZXI6IDFweCBzb2xpZCAjOTk5OworICAgIGJveC1zaGFkb3c6IGluc2V0
IDAgLTFweCA1cHggMCByZ2JhKDAsIDAsIDAsIDAuMik7CisgICAgYm94LXNpemluZzogYm9yZGVy
LWJveDsKKyAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKKyAgICAtbW96
LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlOworfQorCisubmV3LXRvZG8geworICAgIHBh
ZGRpbmc6IDE2cHggMTZweCAxNnB4IDYwcHg7CisgICAgYm9yZGVyOiBub25lOworICAgIGJhY2tn
cm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4wMDMpOworICAgIGJveC1zaGFkb3c6IGluc2V0IDAgLTJw
eCAxcHggcmdiYSgwLDAsMCwwLjAzKTsKK30KKworLm1haW4geworICAgIHBvc2l0aW9uOiByZWxh
dGl2ZTsKKyAgICB6LWluZGV4OiAyOworICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZTZlNmU2
OworfQorCitsYWJlbFtmb3I9J3RvZ2dsZS1hbGwnXSB7CisgICAgZGlzcGxheTogbm9uZTsKK30K
KworLnRvZ2dsZS1hbGwgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IC01NXB4
OworICAgIGxlZnQ6IC0xMnB4OworICAgIHdpZHRoOiA2MHB4OworICAgIGhlaWdodDogMzRweDsK
KyAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CisgICAgYm9yZGVyOiBub25lOyAvKiBNb2JpbGUgU2Fm
YXJpICovCit9CisKKy50b2dnbGUtYWxsOmJlZm9yZSB7CisgICAgY29udGVudDogJ+Kdryc7Cisg
ICAgZm9udC1zaXplOiAyMnB4OworICAgIGNvbG9yOiAjZTZlNmU2OworICAgIHBhZGRpbmc6IDEw
cHggMjdweCAxMHB4IDI3cHg7Cit9CisKKy50b2dnbGUtYWxsOmNoZWNrZWQ6YmVmb3JlIHsKKyAg
ICBjb2xvcjogIzczNzM3MzsKK30KKworLnRvZG8tbGlzdCB7CisgICAgbWFyZ2luOiAwOworICAg
IHBhZGRpbmc6IDA7CisgICAgbGlzdC1zdHlsZTogbm9uZTsKK30KKworLnRvZG8tbGlzdCBsaSB7
CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgIGZvbnQtc2l6ZTogMjRweDsKKyAgICBib3Jk
ZXItYm90dG9tOiAxcHggc29saWQgI2VkZWRlZDsKK30KKworLnRvZG8tbGlzdCBsaTpsYXN0LWNo
aWxkIHsKKyAgICBib3JkZXItYm90dG9tOiBub25lOworfQorCisudG9kby1saXN0IGxpLmVkaXRp
bmcgeworICAgIGJvcmRlci1ib3R0b206IG5vbmU7CisgICAgcGFkZGluZzogMDsKK30KKworLnRv
ZG8tbGlzdCBsaS5lZGl0aW5nIC5lZGl0IHsKKyAgICBkaXNwbGF5OiBibG9jazsKKyAgICB3aWR0
aDogNTA2cHg7CisgICAgcGFkZGluZzogMTJweCAxNnB4OworICAgIG1hcmdpbjogMCAwIDAgNDNw
eDsKK30KKworLnRvZG8tbGlzdCBsaS5lZGl0aW5nIC52aWV3IHsKKyAgICBkaXNwbGF5OiBub25l
OworfQorCisudG9kby1saXN0IGxpIC50b2dnbGUgeworICAgIHRleHQtYWxpZ246IGNlbnRlcjsK
KyAgICB3aWR0aDogNDBweDsKKyAgICAvKiBhdXRvLCBzaW5jZSBub24tV2ViS2l0IGJyb3dzZXJz
IGRvZXNuJ3Qgc3VwcG9ydCBpbnB1dCBzdHlsaW5nICovCisgICAgaGVpZ2h0OiBhdXRvOworICAg
IHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IDA7CisgICAgYm90dG9tOiAwOworICAgIG1h
cmdpbjogYXV0byAwOworICAgIGJvcmRlcjogbm9uZTsgLyogTW9iaWxlIFNhZmFyaSAqLworICAg
IC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKKyAgICBhcHBlYXJhbmNlOiBub25lOworfQorCisu
dG9kby1saXN0IGxpIC50b2dnbGU6YWZ0ZXIgeworICAgIGNvbnRlbnQ6IHVybCgnZGF0YTppbWFn
ZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdp
ZHRoPSI0MCIgaGVpZ2h0PSI0MCIgdmlld0JveD0iLTEwIC0xOCAxMDAgMTM1Ij48Y2lyY2xlIGN4
PSI1MCIgY3k9IjUwIiByPSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZWRlZGVkIiBzdHJva2Ut
d2lkdGg9IjMiLz48L3N2Zz4nKTsKK30KKworLnRvZG8tbGlzdCBsaSAudG9nZ2xlOmNoZWNrZWQ6
YWZ0ZXIgeworICAgIGNvbnRlbnQ6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIg
dmlld0JveD0iLTEwIC0xOCAxMDAgMTM1Ij48Y2lyY2xlIGN4PSI1MCIgY3k9IjUwIiByPSI1MCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYmRkYWQ1IiBzdHJva2Utd2lkdGg9IjMiLz48cGF0aCBmaWxs
PSIjNWRjMmFmIiBkPSJNNzIgMjVMNDIgNzEgMjcgNTZsLTQgNCAyMCAyMCAzNC01MnoiLz48L3N2
Zz4nKTsKK30KKworLnRvZG8tbGlzdCBsaSBsYWJlbCB7CisgICAgd29yZC1icmVhazogYnJlYWst
YWxsOworICAgIHBhZGRpbmc6IDE1cHggNjBweCAxNXB4IDE1cHg7CisgICAgbWFyZ2luLWxlZnQ6
IDQ1cHg7CisgICAgZGlzcGxheTogYmxvY2s7CisgICAgbGluZS1oZWlnaHQ6IDEuMjsKKyAgICB0
cmFuc2l0aW9uOiBjb2xvciAwLjRzOworfQorCisudG9kby1saXN0IGxpLmNvbXBsZXRlZCBsYWJl
bCB7CisgICAgY29sb3I6ICNkOWQ5ZDk7CisgICAgdGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91
Z2g7Cit9CisKKy50b2RvLWxpc3QgbGkgLmRlc3Ryb3kgeworICAgIGRpc3BsYXk6IG5vbmU7Cisg
ICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDogMDsKKyAgICByaWdodDogMTBweDsKKyAg
ICBib3R0b206IDA7CisgICAgd2lkdGg6IDQwcHg7CisgICAgaGVpZ2h0OiA0MHB4OworICAgIG1h
cmdpbjogYXV0byAwOworICAgIGZvbnQtc2l6ZTogMzBweDsKKyAgICBjb2xvcjogI2NjOWE5YTsK
KyAgICBtYXJnaW4tYm90dG9tOiAxMXB4OworICAgIHRyYW5zaXRpb246IGNvbG9yIDAuMnMgZWFz
ZS1vdXQ7Cit9CisKKy50b2RvLWxpc3QgbGkgLmRlc3Ryb3k6aG92ZXIgeworICAgIGNvbG9yOiAj
YWY1YjVlOworfQorCisudG9kby1saXN0IGxpIC5kZXN0cm95OmFmdGVyIHsKKyAgICBjb250ZW50
OiAnw5cnOworfQorCisudG9kby1saXN0IGxpOmhvdmVyIC5kZXN0cm95IHsKKyAgICBkaXNwbGF5
OiBibG9jazsKK30KKworLnRvZG8tbGlzdCBsaSAuZWRpdCB7CisgICAgZGlzcGxheTogbm9uZTsK
K30KKworLnRvZG8tbGlzdCBsaS5lZGl0aW5nOmxhc3QtY2hpbGQgeworICAgIG1hcmdpbi1ib3R0
b206IC0xcHg7Cit9CisKKy5mb290ZXIgeworICAgIGNvbG9yOiAjNzc3OworICAgIHBhZGRpbmc6
IDEwcHggMTVweDsKKyAgICBoZWlnaHQ6IDIwcHg7CisgICAgdGV4dC1hbGlnbjogY2VudGVyOwor
ICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZTZlNmU2OworfQorCisuZm9vdGVyOmJlZm9yZSB7
CisgICAgY29udGVudDogJyc7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHJpZ2h0OiAw
OworICAgIGJvdHRvbTogMDsKKyAgICBsZWZ0OiAwOworICAgIGhlaWdodDogNTBweDsKKyAgICBv
dmVyZmxvdzogaGlkZGVuOworICAgIGJveC1zaGFkb3c6IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAs
IDAuMiksCisgICAgICAgICAgICAgICAgMCA4cHggMCAtM3B4ICNmNmY2ZjYsCisgICAgICAgICAg
ICAgICAgMCA5cHggMXB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLAorICAgICAgICAgICAgICAg
IDAgMTZweCAwIC02cHggI2Y2ZjZmNiwKKyAgICAgICAgICAgICAgICAwIDE3cHggMnB4IC02cHgg
cmdiYSgwLCAwLCAwLCAwLjIpOworfQorCisudG9kby1jb3VudCB7CisgICAgZmxvYXQ6IGxlZnQ7
CisgICAgdGV4dC1hbGlnbjogbGVmdDsKK30KKworLnRvZG8tY291bnQgc3Ryb25nIHsKKyAgICBm
b250LXdlaWdodDogMzAwOworfQorCisuZmlsdGVycyB7CisgICAgbWFyZ2luOiAwOworICAgIHBh
ZGRpbmc6IDA7CisgICAgbGlzdC1zdHlsZTogbm9uZTsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7
CisgICAgcmlnaHQ6IDA7CisgICAgbGVmdDogMDsKK30KKworLmZpbHRlcnMgbGkgeworICAgIGRp
c3BsYXk6IGlubGluZTsKK30KKworLmZpbHRlcnMgbGkgYSB7CisgICAgY29sb3I6IGluaGVyaXQ7
CisgICAgbWFyZ2luOiAzcHg7CisgICAgcGFkZGluZzogM3B4IDdweDsKKyAgICB0ZXh0LWRlY29y
YXRpb246IG5vbmU7CisgICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CisgICAgYm9y
ZGVyLXJhZGl1czogM3B4OworfQorCisuZmlsdGVycyBsaSBhOmhvdmVyIHsKKyAgICBib3JkZXIt
Y29sb3I6IHJnYmEoMTc1LCA0NywgNDcsIDAuMSk7Cit9CisKKy5maWx0ZXJzIGxpIGEuc2VsZWN0
ZWQgeworICAgIGJvcmRlci1jb2xvcjogcmdiYSgxNzUsIDQ3LCA0NywgMC4yKTsKK30KKworLmNs
ZWFyLWNvbXBsZXRlZCwKK2h0bWwgLmNsZWFyLWNvbXBsZXRlZDphY3RpdmUgeworICAgIGZsb2F0
OiByaWdodDsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgbGluZS1oZWlnaHQ6IDIwcHg7
CisgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOworICAgIGN1cnNvcjogcG9pbnRlcjsKK30KKwor
LmNsZWFyLWNvbXBsZXRlZDpob3ZlciB7CisgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7
Cit9CisKKy5pbmZvIHsKKyAgICBtYXJnaW46IDY1cHggYXV0byAwOworICAgIGNvbG9yOiAjYmZi
ZmJmOworICAgIGZvbnQtc2l6ZTogMTBweDsKKyAgICB0ZXh0LXNoYWRvdzogMCAxcHggMCByZ2Jh
KDI1NSwgMjU1LCAyNTUsIDAuNSk7CisgICAgdGV4dC1hbGlnbjogY2VudGVyOworfQorCisuaW5m
byBwIHsKKyAgICBsaW5lLWhlaWdodDogMTsKK30KKworLmluZm8gYSB7CisgICAgY29sb3I6IGlu
aGVyaXQ7CisgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOworICAgIGZvbnQtd2VpZ2h0OiA0MDA7
Cit9CisKKy5pbmZvIGE6aG92ZXIgeworICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwor
fQorCisvKgorICAgIEhhY2sgdG8gcmVtb3ZlIGJhY2tncm91bmQgZnJvbSBNb2JpbGUgU2FmYXJp
LgorICAgIENhbid0IHVzZSBpdCBnbG9iYWxseSBzaW5jZSBpdCBkZXN0cm95cyBjaGVja2JveGVz
IGluIEZpcmVmb3gKKyovCitAbWVkaWEgc2NyZWVuIGFuZCAoLXdlYmtpdC1taW4tZGV2aWNlLXBp
eGVsLXJhdGlvOjApIHsKKyAgICAudG9nZ2xlLWFsbCwKKyAgICAudG9kby1saXN0IGxpIC50b2dn
bGUgeworICAgICAgICBiYWNrZ3JvdW5kOiBub25lOworICAgIH0KKworICAgIC50b2RvLWxpc3Qg
bGkgLnRvZ2dsZSB7CisgICAgICAgIGhlaWdodDogNDBweDsKKyAgICB9CisKKyAgICAudG9nZ2xl
LWFsbCB7CisgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpOworICAgICAg
ICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7CisgICAgICAgIC13ZWJraXQtYXBwZWFyYW5jZTog
bm9uZTsKKyAgICAgICAgYXBwZWFyYW5jZTogbm9uZTsKKyAgICB9Cit9CisKK0BtZWRpYSAobWF4
LXdpZHRoOiA0MzBweCkgeworICAgIC5mb290ZXIgeworICAgICAgICBoZWlnaHQ6IDUwcHg7Cisg
ICAgfQorCisgICAgLmZpbHRlcnMgeworICAgICAgICBib3R0b206IDEwcHg7CisgICAgfQorfQpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL3NyYy9tYWluLmpzIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvdnVlanMtY2xpL3NyYy9tYWluLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5NjM0MjU3MzA5NjZmYmVhZTJh
MGU3ODlkNmNkZmZjMGJjMDZjZGQKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVq
cy1jbGkvc3JjL21haW4uanMKQEAgLTAsMCArMSwyOCBAQAorLy8gVGhlIFZ1ZSBidWlsZCB2ZXJz
aW9uIHRvIGxvYWQgd2l0aCB0aGUgYGltcG9ydGAgY29tbWFuZAorLy8gKHJ1bnRpbWUtb25seSBv
ciBzdGFuZGFsb25lKSBoYXMgYmVlbiBzZXQgaW4gd2VicGFjay5iYXNlLmNvbmYgd2l0aCBhbiBh
bGlhcy4KK2ltcG9ydCBWdWUgZnJvbSAndnVlJworaW1wb3J0IEFwcCBmcm9tICcuL0FwcCcKK2lt
cG9ydCBEaXJlY3RvciBmcm9tICdkaXJlY3Rvci9idWlsZC9kaXJlY3RvcicKKworLyogZXNsaW50
LWRpc2FibGUgbm8tbmV3ICovCit3aW5kb3cuVnVlQXBwID0gbmV3IFZ1ZSh7CisgICAgZWw6ICcj
YXBwJywKKyAgICByZW5kZXI6IGggPT4gaChBcHApCit9KQorCitjb25zdCByb3V0ZXIgPSBuZXcg
RGlyZWN0b3IuUm91dGVyKCk7CisKK1snYWxsJywgJ2FjdGl2ZScsICdjb21wbGV0ZWQnXS5mb3JF
YWNoKHZpc2liaWxpdHkgPT4geworICByb3V0ZXIub24odmlzaWJpbGl0eSwgKCkgPT4geworICAg
IHdpbmRvdy5WdWVBcHAuZmlsdGVyID0gdmlzaWJpbGl0eTsKKyAgfSk7Cit9KTsKKworcm91dGVy
LmNvbmZpZ3VyZSh7CisgIG5vdGZvdW5kOiBmdW5jdGlvbiAoKSB7CisgICAgd2luZG93LmxvY2F0
aW9uLmhhc2ggPSAnJzsKKyAgICB3aW5kb3cuVnVlQXBwLmZpbHRlciA9ICdhbGwnOworICB9Cit9
KTsKKworcm91dGVyLmluaXQoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvc3RhdGljLy5naXRrZWVwIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
dnVlanMtY2xpL3N0YXRpYy8uZ2l0a2VlcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNjlkZTI5YmIyZDFkNjQzNGI4
YjI5YWU3NzVhZDhjMmU0OGM1MzkxCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkv
eWFybi5sb2NrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL3lhcm4ubG9jawpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
NDZjYWUwN2Q5YTE0ZGQwYWFjMzNmNGRjZGRlN2FiOWFjMmRhZDdiCi0tLSAvZGV2L251bGwKKysr
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL3lhcm4ubG9jawpAQCAtMCwwICsxLDQxMDMgQEAKKyMg
VEhJUyBJUyBBTiBBVVRPR0VORVJBVEVEIEZJTEUuIERPIE5PVCBFRElUIFRISVMgRklMRSBESVJF
Q1RMWS4KKyMgeWFybiBsb2NrZmlsZSB2MQorYWJicmV2QDE6CisgIHZlcnNpb24gIjEuMC45Igor
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9hYmJyZXYvLS9hYmJyZXYt
MS4wLjkudGd6IzkxYjQ3OTI1ODhhNzczOGMyNWYzNWRkNmY2Mzc1MmEyZjg3NzYxMzUiCisKK2Fj
Y2VwdHNAfjEuMy4zOgorICB2ZXJzaW9uICIxLjMuMyIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vYWNjZXB0cy8tL2FjY2VwdHMtMS4zLjMudGd6I2MzY2E3NDM0OTM4
NjQ4YzNlMGQ5YzFlMzI4ZGQ2OGI2MjJjMjg0Y2EiCisgIGRlcGVuZGVuY2llczoKKyAgICBtaW1l
LXR5cGVzICJ+Mi4xLjExIgorICAgIG5lZ290aWF0b3IgIjAuNi4xIgorCithY29ybi1qc3hAXjMu
MC4wOgorICB2ZXJzaW9uICIzLjAuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vYWNvcm4tanN4Ly0vYWNvcm4tanN4LTMuMC4xLnRneiNhZmRmOTQ4OGZiMWVjZWZj
ODM0OGY2ZmIyMmY0NjRlMzJhNThiMzZiIgorICBkZXBlbmRlbmNpZXM6CisgICAgYWNvcm4gIl4z
LjAuNCIKKworYWNvcm5AXjMuMC4wLCBhY29ybkBeMy4wLjQ6CisgIHZlcnNpb24gIjMuMy4wIgor
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9hY29ybi8tL2Fjb3JuLTMu
My4wLnRneiM0NWUzN2ZiMzllOGRhM2YyNWJhZWUzZmY1MzY5ZTJiYjVmMjIwMTdhIgorCithY29y
bkBeNC4wLjE6CisgIHZlcnNpb24gIjQuMC4zIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9hY29ybi8tL2Fjb3JuLTQuMC4zLnRneiMxYTNlODUwYjQyOGU3M2JhNmIw
OWQxY2M1MjdmNWFhYWQ0ZDAzZWYxIgorCithanYta2V5d29yZHNAXjEuMC4wOgorICB2ZXJzaW9u
ICIxLjIuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYWp2LWtl
eXdvcmRzLy0vYWp2LWtleXdvcmRzLTEuMi4wLnRneiM2NzZjNGYwODdiZmUxZThiMTJkY2E2ZmRh
MmYzYzc0ZjQxN2IwOTljIgorCithanZAXjQuNy4wOgorICB2ZXJzaW9uICI0LjkuMiIKKyAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYWp2Ly0vYWp2LTQuOS4yLnRneiMz
ZjdkY2RhOTViMGMzNGJjZWIyZDY5OTQ1MTE3ZDE0NjIxOWYxYTJjIgorICBkZXBlbmRlbmNpZXM6
CisgICAgY28gIl40LjYuMCIKKyAgICBqc29uLXN0YWJsZS1zdHJpbmdpZnkgIl4xLjAuMSIKKwor
YWxpZ24tdGV4dEBeMC4xLjEsIGFsaWduLXRleHRAXjAuMS4zOgorICB2ZXJzaW9uICIwLjEuNCIK
KyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYWxpZ24tdGV4dC8tL2Fs
aWduLXRleHQtMC4xLjQudGd6IzBjZDkwYTU2MTA5M2YzNWQwYTk5MjU2YzIyYjcwNjk0MzNmYWQx
MTciCisgIGRlcGVuZGVuY2llczoKKyAgICBraW5kLW9mICJeMy4wLjIiCisgICAgbG9uZ2VzdCAi
XjEuMC4xIgorICAgIHJlcGVhdC1zdHJpbmcgIl4xLjUuMiIKKworYWxwaGFudW0tc29ydEBeMS4w
LjEsIGFscGhhbnVtLXNvcnRAXjEuMC4yOgorICB2ZXJzaW9uICIxLjAuMiIKKyAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYWxwaGFudW0tc29ydC8tL2FscGhhbnVtLXNv
cnQtMS4wLjIudGd6Izk3YTExMTk2NDliMjExYWQzMzY5MWQ5ZjlmNDg2YThlYzlmYmUwYTMiCisK
K2FtZGVmaW5lQD49MC4wLjQ6CisgIHZlcnNpb24gIjEuMC4xIgorICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9hbWRlZmluZS8tL2FtZGVmaW5lLTEuMC4xLnRneiM0YTUy
ODJhYzE2NDcyOWU5MzYxOWJjZmQzYWQxNTFmODE3Y2U5MWY1IgorCithbnNpLWVzY2FwZXNAXjEu
MS4wOgorICB2ZXJzaW9uICIxLjQuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vYW5zaS1lc2NhcGVzLy0vYW5zaS1lc2NhcGVzLTEuNC4wLnRneiNkM2E4YTgzYjMx
OWFhNjc3OTM2NjJiMTNlNzYxYzc5MTE0MjIzMDZlIgorCithbnNpLWh0bWxAMC4wLjY6CisgIHZl
cnNpb24gIjAuMC42IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9h
bnNpLWh0bWwvLS9hbnNpLWh0bWwtMC4wLjYudGd6I2JkYThlMzNkZDJlZTFjMjBmNTRjMDhlYjQw
NTcxM2NiZmMwZWQ4MGUiCisKK2Fuc2ktcmVnZXhAXjIuMC4wOgorICB2ZXJzaW9uICIyLjAuMCIK
KyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYW5zaS1yZWdleC8tL2Fu
c2ktcmVnZXgtMi4wLjAudGd6I2M1MDYxYjZlMGVmOGE4MTc3NWU1MGY1ZDY2MTUxYmY2YmYzNzEx
MDciCisKK2Fuc2ktc3R5bGVzQF4yLjIuMToKKyAgdmVyc2lvbiAiMi4yLjEiCisgIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Fuc2ktc3R5bGVzLy0vYW5zaS1zdHlsZXMt
Mi4yLjEudGd6I2I0MzJkZDMzNThiNjM0Y2Y3NWUxZTQ2NjQzNjgyNDA1MzNjMWRkYmUiCisKK2Fu
eW1hdGNoQF4xLjMuMDoKKyAgdmVyc2lvbiAiMS4zLjAiCisgIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL2FueW1hdGNoLy0vYW55bWF0Y2gtMS4zLjAudGd6I2EzZTUyZmEz
OTE2OGM4MjVmZjU3YjAyNDgxMjZjZTVhOGZmOTU1MDciCisgIGRlcGVuZGVuY2llczoKKyAgICBh
cnJpZnkgIl4xLjAuMCIKKyAgICBtaWNyb21hdGNoICJeMi4xLjUiCisKK2Fwcm9iYUBeMS4wLjM6
CisgIHZlcnNpb24gIjEuMC40IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9hcHJvYmEvLS9hcHJvYmEtMS4wLjQudGd6IzI3MTM2ODA3NzVlNzYxNGM4YmExODZjMDY1
ZDRlMmU1MmQxMDcyYzAiCisKK2FyZS13ZS10aGVyZS15ZXRAfjEuMS4yOgorICB2ZXJzaW9uICIx
LjEuMiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYXJlLXdlLXRo
ZXJlLXlldC8tL2FyZS13ZS10aGVyZS15ZXQtMS4xLjIudGd6IzgwZTQ3MGU5NWEwODQ3OTRmZTE4
OTkyNjJjNTY2N2M2ZTg4ZGUxYjMiCisgIGRlcGVuZGVuY2llczoKKyAgICBkZWxlZ2F0ZXMgIl4x
LjAuMCIKKyAgICByZWFkYWJsZS1zdHJlYW0gIl4yLjAuMCB8fCBeMS4xLjEzIgorCithcmdwYXJz
ZUBeMS4wLjc6CisgIHZlcnNpb24gIjEuMC45IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9hcmdwYXJzZS8tL2FyZ3BhcnNlLTEuMC45LnRneiM3M2Q4M2JjMjYzZjg2
ZTk3ZjhjYzRmNmJhZTFiMGU5MGE3ZDIyYzg2IgorICBkZXBlbmRlbmNpZXM6CisgICAgc3ByaW50
Zi1qcyAifjEuMC4yIgorCithcnItZGlmZkBeMi4wLjA6CisgIHZlcnNpb24gIjIuMC4wIgorICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9hcnItZGlmZi8tL2Fyci1kaWZm
LTIuMC4wLnRneiM4ZjNiODI3Zjk1NWE4YmQ2Njk2OTdlNGE0MjU2YWMzY2VhZTM1NmNmIgorICBk
ZXBlbmRlbmNpZXM6CisgICAgYXJyLWZsYXR0ZW4gIl4xLjAuMSIKKworYXJyLWZsYXR0ZW5AXjEu
MC4xOgorICB2ZXJzaW9uICIxLjAuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vYXJyLWZsYXR0ZW4vLS9hcnItZmxhdHRlbi0xLjAuMS50Z3ojZTVmZmU1NGQ0NWUx
OWYzMmYyMTZlOTFlYjk5YzhjZTg5MmJiNjA0YiIKKworYXJyYXktZmxhdHRlbkAxLjEuMToKKyAg
dmVyc2lvbiAiMS4xLjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L2FycmF5LWZsYXR0ZW4vLS9hcnJheS1mbGF0dGVuLTEuMS4xLnRneiM5YTVmNjk5MDUxYjFlNzA3
MzMyOGYyYTAwODk2OGI2NGVhMjk1NWQyIgorCithcnJheS11bmlvbkBeMS4wLjE6CisgIHZlcnNp
b24gIjEuMC4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9hcnJh
eS11bmlvbi8tL2FycmF5LXVuaW9uLTEuMC4yLnRneiM5YTM0NDEwZTRmNGUzZGEyM2RlYTM3NWJl
NWJlNzBmMjQ3NzhlYzM5IgorICBkZXBlbmRlbmNpZXM6CisgICAgYXJyYXktdW5pcSAiXjEuMC4x
IgorCithcnJheS11bmlxQF4xLjAuMToKKyAgdmVyc2lvbiAiMS4wLjMiCisgIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2FycmF5LXVuaXEvLS9hcnJheS11bmlxLTEuMC4z
LnRneiNhZjZhYzg3N2EyNWNjN2Y3NGUwNTg4OTQ3NTM4NThkZmRiMjRmZGI2IgorCithcnJheS11
bmlxdWVAXjAuMi4xOgorICB2ZXJzaW9uICIwLjIuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vYXJyYXktdW5pcXVlLy0vYXJyYXktdW5pcXVlLTAuMi4xLnRneiNh
MWQ5N2NjYWZjYmMyNjI1Y2M3MGZhZGNlYjM2YTUwYzU4YjAxYTUzIgorCithcnJpZnlAXjEuMC4w
OgorICB2ZXJzaW9uICIxLjAuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vYXJyaWZ5Ly0vYXJyaWZ5LTEuMC4xLnRneiM4OTg1MDhkYTIyMjZmMzgwZGY5MDQ3Mjg0
NTY4NDljMTUwMWE0YjBkIgorCithc24xQH4wLjIuMzoKKyAgdmVyc2lvbiAiMC4yLjMiCisgIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2FzbjEvLS9hc24xLTAuMi4zLnRn
eiNkYWM4Nzg3NzEzYzk5NjY4NDlmYzgxODA3NzdlYmU5YzFkZGYzYjg2IgorCithc3NlcnQtcGx1
c0BeMC4yLjA6CisgIHZlcnNpb24gIjAuMi4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9hc3NlcnQtcGx1cy8tL2Fzc2VydC1wbHVzLTAuMi4wLnRneiNkNzRlMWI4
N2U3YWZmYzBkYjhhYWRiNzAyMWYzZmU0ODEwMWFiMjM0IgorCithc3NlcnQtcGx1c0BeMS4wLjA6
CisgIHZlcnNpb24gIjEuMC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9hc3NlcnQtcGx1cy8tL2Fzc2VydC1wbHVzLTEuMC4wLnRneiNmMTJlMGYzYzVkNzdiMGIx
Y2RkOTE0Njk0MmU0ZTk2YzFlNGRkNTI1IgorCithc3NlcnRAXjEuMS4xOgorICB2ZXJzaW9uICIx
LjQuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYXNzZXJ0Ly0v
YXNzZXJ0LTEuNC4xLnRneiM5OTkxMmQ1OTE4MzZiNWE2ZjViMzQ1YzBmMDdlZWZjMDhmYzY1ZDkx
IgorICBkZXBlbmRlbmNpZXM6CisgICAgdXRpbCAiMC4xMC4zIgorCithc3luYy1lYWNoQF4xLjAu
MDoKKyAgdmVyc2lvbiAiMS4wLjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w
a2cuY29tL2FzeW5jLWVhY2gvLS9hc3luYy1lYWNoLTEuMC4xLnRneiMxOWQzODZhMWQ5ZWRjNmU3
YzFjODVkMzg4YWVkYmNjNTZkMzM2MDJkIgorCithc3luY0BeMC45LjA6CisgIHZlcnNpb24gIjAu
OS4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9hc3luYy8tL2Fz
eW5jLTAuOS4yLnRneiNhZWE3NGQ1ZTYxYzFmODk5NjEzYmY2NGJkYTY2ZDRjNzhmMmZkMTdkIgor
Cithc3luY0BeMS4zLjAsIGFzeW5jQF4xLjUuMDoKKyAgdmVyc2lvbiAiMS41LjIiCisgIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2FzeW5jLy0vYXN5bmMtMS41LjIudGd6
I2VjNmE2MWFlNTY0ODBjMGMzY2IyNDFjOTU2MThlMjA4OTJmOTY3MmEiCisKK2FzeW5jQH4wLjIu
NjoKKyAgdmVyc2lvbiAiMC4yLjEwIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9hc3luYy8tL2FzeW5jLTAuMi4xMC50Z3ojYjZiYmUwYjA2NzRiOWQ3MTk3MDhjYTM4
ZGU4YzIzN2NiNTI2YzNkMSIKKworYXN5bmNraXRAXjAuNC4wOgorICB2ZXJzaW9uICIwLjQuMCIK
KyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYXN5bmNraXQvLS9hc3lu
Y2tpdC0wLjQuMC50Z3ojYzc5ZWQ5N2Y3ZjM0Y2I4ZjJiYTFiYzk3OTBiY2MzNjY0NzRiNGI3OSIK
KworYXV0b3ByZWZpeGVyQF42LjMuMSwgYXV0b3ByZWZpeGVyQF42LjQuMDoKKyAgdmVyc2lvbiAi
Ni41LjMiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2F1dG9wcmVm
aXhlci8tL2F1dG9wcmVmaXhlci02LjUuMy50Z3ojMmQ4NTNhZjY2ZDA0NDQ5ZmNmNTBkYjMwNjYy
NzlhYjU0YzNlNGIwMSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGJyb3dzZXJzbGlzdCAifjEuNC4w
IgorICAgIGNhbml1c2UtZGIgIl4xLjAuMzAwMDA1NzgiCisgICAgbm9ybWFsaXplLXJhbmdlICJe
MC4xLjIiCisgICAgbnVtMmZyYWN0aW9uICJeMS4yLjIiCisgICAgcG9zdGNzcyAiXjUuMi41Igor
ICAgIHBvc3Rjc3MtdmFsdWUtcGFyc2VyICJeMy4yLjMiCisKK2F3cy1zaWduMkB+MC42LjA6Cisg
IHZlcnNpb24gIjAuNi4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9hd3Mtc2lnbjIvLS9hd3Mtc2lnbjItMC42LjAudGd6IzE0MzQyZGQzOGRiY2M5NGQwZTViODdk
NzYzY2Q2MzYxMmMwZTc5NGYiCisKK2F3czRAXjEuMi4xOgorICB2ZXJzaW9uICIxLjUuMCIKKyAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYXdzNC8tL2F3czQtMS41LjAu
dGd6IzBhMjlmZmI3OWMzMWM5ZTcxMmVlYjA4N2U4ZTdhNjRiNGE1NmQ3NTUiCisKK2JhYmVsLWNv
ZGUtZnJhbWVAXjYuMTEuMCwgYmFiZWwtY29kZS1mcmFtZUBeNi4xNi4wOgorICB2ZXJzaW9uICI2
LjE2LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLWNv
ZGUtZnJhbWUvLS9iYWJlbC1jb2RlLWZyYW1lLTYuMTYuMC50Z3ojZjkwZTYwZGEwODYyOTA5ZDNj
ZTA5ODczM2I1ZDM5ODdjOTdjYjhkZSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGNoYWxrICJeMS4x
LjAiCisgICAgZXN1dGlscyAiXjIuMC4yIgorICAgIGpzLXRva2VucyAiXjIuMC4wIgorCitiYWJl
bC1jb3JlQF42LjAuMCwgYmFiZWwtY29yZUBeNi4xOC4wOgorICB2ZXJzaW9uICI2LjE4LjIiCisg
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLWNvcmUvLS9iYWJl
bC1jb3JlLTYuMTguMi50Z3ojZDhiYjE0ZGQ2OTg2ZmE0ZjM1NjZhMjZjZWRhMzk2NGZhMGUwNGU1
YiIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGJhYmVsLWNvZGUtZnJhbWUgIl42LjE2LjAiCisgICAg
YmFiZWwtZ2VuZXJhdG9yICJeNi4xOC4wIgorICAgIGJhYmVsLWhlbHBlcnMgIl42LjE2LjAiCisg
ICAgYmFiZWwtbWVzc2FnZXMgIl42LjguMCIKKyAgICBiYWJlbC1yZWdpc3RlciAiXjYuMTguMCIK
KyAgICBiYWJlbC1ydW50aW1lICJeNi45LjEiCisgICAgYmFiZWwtdGVtcGxhdGUgIl42LjE2LjAi
CisgICAgYmFiZWwtdHJhdmVyc2UgIl42LjE4LjAiCisgICAgYmFiZWwtdHlwZXMgIl42LjE4LjAi
CisgICAgYmFieWxvbiAiXjYuMTEuMCIKKyAgICBjb252ZXJ0LXNvdXJjZS1tYXAgIl4xLjEuMCIK
KyAgICBkZWJ1ZyAiXjIuMS4xIgorICAgIGpzb241ICJeMC41LjAiCisgICAgbG9kYXNoICJeNC4y
LjAiCisgICAgbWluaW1hdGNoICJeMy4wLjIiCisgICAgcGF0aC1pcy1hYnNvbHV0ZSAiXjEuMC4w
IgorICAgIHByaXZhdGUgIl4wLjEuNiIKKyAgICBzbGFzaCAiXjEuMC4wIgorICAgIHNvdXJjZS1t
YXAgIl4wLjUuMCIKKworYmFiZWwtZXNsaW50QF43LjAuMDoKKyAgdmVyc2lvbiAiNy4xLjEiCisg
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLWVzbGludC8tL2Jh
YmVsLWVzbGludC03LjEuMS50Z3ojOGE2YTg4NGYwODVhYTcwNjBhZjY5Y2ZjNzczNDFjMmY5OTM3
MGZiMiIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGJhYmVsLWNvZGUtZnJhbWUgIl42LjE2LjAiCisg
ICAgYmFiZWwtdHJhdmVyc2UgIl42LjE1LjAiCisgICAgYmFiZWwtdHlwZXMgIl42LjE1LjAiCisg
ICAgYmFieWxvbiAiXjYuMTMuMCIKKyAgICBsb2Rhc2gucGlja2J5ICJeNC42LjAiCisKK2JhYmVs
LWdlbmVyYXRvckBeNi4xOC4wOgorICB2ZXJzaW9uICI2LjE5LjAiCisgIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLWdlbmVyYXRvci8tL2JhYmVsLWdlbmVyYXRv
ci02LjE5LjAudGd6IzliMmYyNDQyMDQ3NzdhM2Q2ODEwZWMxMjdjNjczYzg3YjM0OWZhYzUiCisg
IGRlcGVuZGVuY2llczoKKyAgICBiYWJlbC1tZXNzYWdlcyAiXjYuOC4wIgorICAgIGJhYmVsLXJ1
bnRpbWUgIl42LjkuMCIKKyAgICBiYWJlbC10eXBlcyAiXjYuMTkuMCIKKyAgICBkZXRlY3QtaW5k
ZW50ICJeNC4wLjAiCisgICAganNlc2MgIl4xLjMuMCIKKyAgICBsb2Rhc2ggIl40LjIuMCIKKyAg
ICBzb3VyY2UtbWFwICJeMC41LjAiCisKK2JhYmVsLWhlbHBlci1iaW5kaWZ5LWRlY29yYXRvcnNA
XjYuMTguMDoKKyAgdmVyc2lvbiAiNi4xOC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9iYWJlbC1oZWxwZXItYmluZGlmeS1kZWNvcmF0b3JzLy0vYmFiZWwtaGVs
cGVyLWJpbmRpZnktZGVjb3JhdG9ycy02LjE4LjAudGd6I2ZjMDBjNTczNjc2YTZlNzAyZmZmYTAw
MDE5NTgwODkyZWM4NzgwYTUiCisgIGRlcGVuZGVuY2llczoKKyAgICBiYWJlbC1ydW50aW1lICJe
Ni4wLjAiCisgICAgYmFiZWwtdHJhdmVyc2UgIl42LjE4LjAiCisgICAgYmFiZWwtdHlwZXMgIl42
LjE4LjAiCisKK2JhYmVsLWhlbHBlci1idWlsZGVyLWJpbmFyeS1hc3NpZ25tZW50LW9wZXJhdG9y
LXZpc2l0b3JAXjYuOC4wOgorICB2ZXJzaW9uICI2LjE4LjAiCisgIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLWhlbHBlci1idWlsZGVyLWJpbmFyeS1hc3NpZ25t
ZW50LW9wZXJhdG9yLXZpc2l0b3IvLS9iYWJlbC1oZWxwZXItYnVpbGRlci1iaW5hcnktYXNzaWdu
bWVudC1vcGVyYXRvci12aXNpdG9yLTYuMTguMC50Z3ojOGFlODE0OTg5ZjdhNTM2ODIxNTJlMzQw
MWEwNGZhYmQwYmIzMzNhNiIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGJhYmVsLWhlbHBlci1leHBs
b2RlLWFzc2lnbmFibGUtZXhwcmVzc2lvbiAiXjYuMTguMCIKKyAgICBiYWJlbC1ydW50aW1lICJe
Ni4wLjAiCisgICAgYmFiZWwtdHlwZXMgIl42LjE4LjAiCisKK2JhYmVsLWhlbHBlci1jYWxsLWRl
bGVnYXRlQF42LjE4LjA6CisgIHZlcnNpb24gIjYuMTguMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtaGVscGVyLWNhbGwtZGVsZWdhdGUvLS9iYWJlbC1o
ZWxwZXItY2FsbC1kZWxlZ2F0ZS02LjE4LjAudGd6IzA1YjE0YWFmYTQzMDg4NGIwMzQwOTdlZjI5
ZTlmMDY3ZWE0MTMzYmQiCisgIGRlcGVuZGVuY2llczoKKyAgICBiYWJlbC1oZWxwZXItaG9pc3Qt
dmFyaWFibGVzICJeNi4xOC4wIgorICAgIGJhYmVsLXJ1bnRpbWUgIl42LjAuMCIKKyAgICBiYWJl
bC10cmF2ZXJzZSAiXjYuMTguMCIKKyAgICBiYWJlbC10eXBlcyAiXjYuMTguMCIKKworYmFiZWwt
aGVscGVyLWRlZmluZS1tYXBAXjYuMTguMCwgYmFiZWwtaGVscGVyLWRlZmluZS1tYXBAXjYuOC4w
OgorICB2ZXJzaW9uICI2LjE4LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w
a2cuY29tL2JhYmVsLWhlbHBlci1kZWZpbmUtbWFwLy0vYmFiZWwtaGVscGVyLWRlZmluZS1tYXAt
Ni4xOC4wLnRneiM4ZDZjODVkYzdmYmI0YzE5YmUzZGU0MDQ3NGQxOGU5N2MzNjc2ZWMyIgorICBk
ZXBlbmRlbmNpZXM6CisgICAgYmFiZWwtaGVscGVyLWZ1bmN0aW9uLW5hbWUgIl42LjE4LjAiCisg
ICAgYmFiZWwtcnVudGltZSAiXjYuOS4wIgorICAgIGJhYmVsLXR5cGVzICJeNi4xOC4wIgorICAg
IGxvZGFzaCAiXjQuMi4wIgorCitiYWJlbC1oZWxwZXItZXhwbG9kZS1hc3NpZ25hYmxlLWV4cHJl
c3Npb25AXjYuMTguMDoKKyAgdmVyc2lvbiAiNi4xOC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1oZWxwZXItZXhwbG9kZS1hc3NpZ25hYmxlLWV4cHJl
c3Npb24vLS9iYWJlbC1oZWxwZXItZXhwbG9kZS1hc3NpZ25hYmxlLWV4cHJlc3Npb24tNi4xOC4w
LnRneiMxNGI4ZThjMmQwM2FkNzM1ZDRiMjBmMTg0MGIyNGNkMWY2NTIzOWZlIgorICBkZXBlbmRl
bmNpZXM6CisgICAgYmFiZWwtcnVudGltZSAiXjYuMC4wIgorICAgIGJhYmVsLXRyYXZlcnNlICJe
Ni4xOC4wIgorICAgIGJhYmVsLXR5cGVzICJeNi4xOC4wIgorCitiYWJlbC1oZWxwZXItZXhwbG9k
ZS1jbGFzc0BeNi44LjA6CisgIHZlcnNpb24gIjYuMTguMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtaGVscGVyLWV4cGxvZGUtY2xhc3MvLS9iYWJlbC1o
ZWxwZXItZXhwbG9kZS1jbGFzcy02LjE4LjAudGd6I2M0NGY3NmY0ZmEyM2I5YzVkNjA3Y2JhYzVk
NDExNWU3YTc2ZjYyY2IiCisgIGRlcGVuZGVuY2llczoKKyAgICBiYWJlbC1oZWxwZXItYmluZGlm
eS1kZWNvcmF0b3JzICJeNi4xOC4wIgorICAgIGJhYmVsLXJ1bnRpbWUgIl42LjAuMCIKKyAgICBi
YWJlbC10cmF2ZXJzZSAiXjYuMTguMCIKKyAgICBiYWJlbC10eXBlcyAiXjYuMTguMCIKKworYmFi
ZWwtaGVscGVyLWZ1bmN0aW9uLW5hbWVAXjYuMTguMCwgYmFiZWwtaGVscGVyLWZ1bmN0aW9uLW5h
bWVAXjYuOC4wOgorICB2ZXJzaW9uICI2LjE4LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL2JhYmVsLWhlbHBlci1mdW5jdGlvbi1uYW1lLy0vYmFiZWwtaGVscGVy
LWZ1bmN0aW9uLW5hbWUtNi4xOC4wLnRneiM2OGVjNzFhZWJhMWYzZTI4YjJhNmYwNzMwMTkwYjc1
NGE5YmYzMGU2IgorICBkZXBlbmRlbmNpZXM6CisgICAgYmFiZWwtaGVscGVyLWdldC1mdW5jdGlv
bi1hcml0eSAiXjYuMTguMCIKKyAgICBiYWJlbC1ydW50aW1lICJeNi4wLjAiCisgICAgYmFiZWwt
dGVtcGxhdGUgIl42LjguMCIKKyAgICBiYWJlbC10cmF2ZXJzZSAiXjYuMTguMCIKKyAgICBiYWJl
bC10eXBlcyAiXjYuMTguMCIKKworYmFiZWwtaGVscGVyLWdldC1mdW5jdGlvbi1hcml0eUBeNi4x
OC4wOgorICB2ZXJzaW9uICI2LjE4LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL2JhYmVsLWhlbHBlci1nZXQtZnVuY3Rpb24tYXJpdHkvLS9iYWJlbC1oZWxwZXIt
Z2V0LWZ1bmN0aW9uLWFyaXR5LTYuMTguMC50Z3ojYTViMTk2OTVmZDNmOWNkZmMzMjgzOThiNDdk
YWZjZDcwOTRmOWYyNCIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGJhYmVsLXJ1bnRpbWUgIl42LjAu
MCIKKyAgICBiYWJlbC10eXBlcyAiXjYuMTguMCIKKworYmFiZWwtaGVscGVyLWhvaXN0LXZhcmlh
Ymxlc0BeNi4xOC4wOgorICB2ZXJzaW9uICI2LjE4LjAiCisgIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLWhlbHBlci1ob2lzdC12YXJpYWJsZXMvLS9iYWJlbC1o
ZWxwZXItaG9pc3QtdmFyaWFibGVzLTYuMTguMC50Z3ojYTgzNWI1YWI4YjQ2ZDZkZTliYWJlZmFl
NGQ5OGVhNDFlODY2YjgyYSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGJhYmVsLXJ1bnRpbWUgIl42
LjAuMCIKKyAgICBiYWJlbC10eXBlcyAiXjYuMTguMCIKKworYmFiZWwtaGVscGVyLW9wdGltaXNl
LWNhbGwtZXhwcmVzc2lvbkBeNi4xOC4wOgorICB2ZXJzaW9uICI2LjE4LjAiCisgIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLWhlbHBlci1vcHRpbWlzZS1jYWxs
LWV4cHJlc3Npb24vLS9iYWJlbC1oZWxwZXItb3B0aW1pc2UtY2FsbC1leHByZXNzaW9uLTYuMTgu
MC50Z3ojOTI2MWQwMjk5ZWUxYTRmMDhhNmRkMjhiN2I3Yzc3NzM0OGZkOGYwZiIKKyAgZGVwZW5k
ZW5jaWVzOgorICAgIGJhYmVsLXJ1bnRpbWUgIl42LjAuMCIKKyAgICBiYWJlbC10eXBlcyAiXjYu
MTguMCIKKworYmFiZWwtaGVscGVyLXJlZ2V4QF42LjguMDoKKyAgdmVyc2lvbiAiNi4xOC4wIgor
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1oZWxwZXItcmVn
ZXgvLS9iYWJlbC1oZWxwZXItcmVnZXgtNi4xOC4wLnRneiNhZTBlYmZkNzdkZTg2Y2IyZjFhZjI1
OGUyY2MyMGI1ZmU4OTNlY2M2IgorICBkZXBlbmRlbmNpZXM6CisgICAgYmFiZWwtcnVudGltZSAi
XjYuOS4wIgorICAgIGJhYmVsLXR5cGVzICJeNi4xOC4wIgorICAgIGxvZGFzaCAiXjQuMi4wIgor
CitiYWJlbC1oZWxwZXItcmVtYXAtYXN5bmMtdG8tZ2VuZXJhdG9yQF42LjE2LjAsIGJhYmVsLWhl
bHBlci1yZW1hcC1hc3luYy10by1nZW5lcmF0b3JAXjYuMTYuMjoKKyAgdmVyc2lvbiAiNi4xOC4w
IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1oZWxwZXIt
cmVtYXAtYXN5bmMtdG8tZ2VuZXJhdG9yLy0vYmFiZWwtaGVscGVyLXJlbWFwLWFzeW5jLXRvLWdl
bmVyYXRvci02LjE4LjAudGd6IzMzNmNkZjNjYWI2NTBiYjE5MWIwMmZjMTZhMzcwOGU3YmU3Zjlj
ZTUiCisgIGRlcGVuZGVuY2llczoKKyAgICBiYWJlbC1oZWxwZXItZnVuY3Rpb24tbmFtZSAiXjYu
MTguMCIKKyAgICBiYWJlbC1ydW50aW1lICJeNi4wLjAiCisgICAgYmFiZWwtdGVtcGxhdGUgIl42
LjE2LjAiCisgICAgYmFiZWwtdHJhdmVyc2UgIl42LjE4LjAiCisgICAgYmFiZWwtdHlwZXMgIl42
LjE4LjAiCisKK2JhYmVsLWhlbHBlci1yZXBsYWNlLXN1cGVyc0BeNi4xOC4wLCBiYWJlbC1oZWxw
ZXItcmVwbGFjZS1zdXBlcnNAXjYuOC4wOgorICB2ZXJzaW9uICI2LjE4LjAiCisgIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLWhlbHBlci1yZXBsYWNlLXN1cGVy
cy8tL2JhYmVsLWhlbHBlci1yZXBsYWNlLXN1cGVycy02LjE4LjAudGd6IzI4ZWM2OTg3N2JlNDE0
NGRiZDY0ZjRjYzNhMzM3ZTg5ZjI5YTkyNGUiCisgIGRlcGVuZGVuY2llczoKKyAgICBiYWJlbC1o
ZWxwZXItb3B0aW1pc2UtY2FsbC1leHByZXNzaW9uICJeNi4xOC4wIgorICAgIGJhYmVsLW1lc3Nh
Z2VzICJeNi44LjAiCisgICAgYmFiZWwtcnVudGltZSAiXjYuMC4wIgorICAgIGJhYmVsLXRlbXBs
YXRlICJeNi4xNi4wIgorICAgIGJhYmVsLXRyYXZlcnNlICJeNi4xOC4wIgorICAgIGJhYmVsLXR5
cGVzICJeNi4xOC4wIgorCitiYWJlbC1oZWxwZXJzQF42LjE2LjA6CisgIHZlcnNpb24gIjYuMTYu
MCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtaGVscGVy
cy8tL2JhYmVsLWhlbHBlcnMtNi4xNi4wLnRneiMxMDk1ZWMxMGQ5OTI3OTQ2MDU1M2U2N2ViM2Vl
ZTk5NzNkMzg2N2UzIgorICBkZXBlbmRlbmNpZXM6CisgICAgYmFiZWwtcnVudGltZSAiXjYuMC4w
IgorICAgIGJhYmVsLXRlbXBsYXRlICJeNi4xNi4wIgorCitiYWJlbC1sb2FkZXJAXjYuMC4wOgor
ICB2ZXJzaW9uICI2LjIuOSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vYmFiZWwtbG9hZGVyLy0vYmFiZWwtbG9hZGVyLTYuMi45LnRneiMyYmNlNmExYzI5YjQ3YWZh
OTBiOTM3YmExZmIxZjg3MDg0ZDYxYzYxIgorICBkZXBlbmRlbmNpZXM6CisgICAgZmluZC1jYWNo
ZS1kaXIgIl4wLjEuMSIKKyAgICBsb2FkZXItdXRpbHMgIl4wLjIuMTEiCisgICAgbWtkaXJwICJe
MC41LjEiCisgICAgb2JqZWN0LWFzc2lnbiAiXjQuMC4xIgorCitiYWJlbC1tZXNzYWdlc0BeNi44
LjA6CisgIHZlcnNpb24gIjYuOC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9iYWJlbC1tZXNzYWdlcy8tL2JhYmVsLW1lc3NhZ2VzLTYuOC4wLnRneiNiZjUwNDcz
NmNhOTY3ZTZkNjVlZjBhZGI1YTJhNWY5NDdjOGUwZWI5IgorICBkZXBlbmRlbmNpZXM6CisgICAg
YmFiZWwtcnVudGltZSAiXjYuMC4wIgorCitiYWJlbC1wbHVnaW4tY2hlY2stZXMyMDE1LWNvbnN0
YW50c0BeNi4zLjEzOgorICB2ZXJzaW9uICI2LjguMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vYmFiZWwtcGx1Z2luLWNoZWNrLWVzMjAxNS1jb25zdGFudHMvLS9i
YWJlbC1wbHVnaW4tY2hlY2stZXMyMDE1LWNvbnN0YW50cy02LjguMC50Z3ojZGJmMDI0YzMyZWQz
N2JmZGE4ZGVlMWU3NmRhMDIzODZhOGQyNmZlNyIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGJhYmVs
LXJ1bnRpbWUgIl42LjAuMCIKKworYmFiZWwtcGx1Z2luLXN5bnRheC1hc3luYy1mdW5jdGlvbnNA
XjYuOC4wOgorICB2ZXJzaW9uICI2LjEzLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdpbi1zeW50YXgtYXN5bmMtZnVuY3Rpb25zLy0vYmFiZWwt
cGx1Z2luLXN5bnRheC1hc3luYy1mdW5jdGlvbnMtNi4xMy4wLnRneiNjYWQ5Y2FkMTE5MWI1YWQ2
MzRiZjMwYWUwODcyMzkxZTA2NDdiZTk1IgorCitiYWJlbC1wbHVnaW4tc3ludGF4LWFzeW5jLWdl
bmVyYXRvcnNAXjYuNS4wOgorICB2ZXJzaW9uICI2LjEzLjAiCisgIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdpbi1zeW50YXgtYXN5bmMtZ2VuZXJhdG9y
cy8tL2JhYmVsLXBsdWdpbi1zeW50YXgtYXN5bmMtZ2VuZXJhdG9ycy02LjEzLjAudGd6IzZiYzk2
M2ViYjE2ZWNjYmFlNmI5MmI1OTZlYjdmMzVjMzQyYThiOWEiCisKK2JhYmVsLXBsdWdpbi1zeW50
YXgtY2xhc3MtcHJvcGVydGllc0BeNi44LjA6CisgIHZlcnNpb24gIjYuMTMuMCIKKyAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtcGx1Z2luLXN5bnRheC1jbGFz
cy1wcm9wZXJ0aWVzLy0vYmFiZWwtcGx1Z2luLXN5bnRheC1jbGFzcy1wcm9wZXJ0aWVzLTYuMTMu
MC50Z3ojZDdlYjIzYjc5YTMxN2Y4NTQzOTYyYzUwNWI4MjdjN2Q2Y2FjMjdkZSIKKworYmFiZWwt
cGx1Z2luLXN5bnRheC1kZWNvcmF0b3JzQF42LjEzLjA6CisgIHZlcnNpb24gIjYuMTMuMCIKKyAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtcGx1Z2luLXN5bnRh
eC1kZWNvcmF0b3JzLy0vYmFiZWwtcGx1Z2luLXN5bnRheC1kZWNvcmF0b3JzLTYuMTMuMC50Z3oj
MzEyNTYzYjRkYmRlM2NjODA2Y2VlM2U0MTZjY2VlYWRkZDExYWMwYiIKKworYmFiZWwtcGx1Z2lu
LXN5bnRheC1keW5hbWljLWltcG9ydEBeNi4xOC4wOgorICB2ZXJzaW9uICI2LjE4LjAiCisgIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdpbi1zeW50YXgt
ZHluYW1pYy1pbXBvcnQvLS9iYWJlbC1wbHVnaW4tc3ludGF4LWR5bmFtaWMtaW1wb3J0LTYuMTgu
MC50Z3ojOGQ2YTI2MjI5YzgzNzQ1YTk5ODJhNDQxMDUxNTcyY2FhMTc5YjFkYSIKKworYmFiZWwt
cGx1Z2luLXN5bnRheC1leHBvbmVudGlhdGlvbi1vcGVyYXRvckBeNi44LjA6CisgIHZlcnNpb24g
IjYuMTMuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwt
cGx1Z2luLXN5bnRheC1leHBvbmVudGlhdGlvbi1vcGVyYXRvci8tL2JhYmVsLXBsdWdpbi1zeW50
YXgtZXhwb25lbnRpYXRpb24tb3BlcmF0b3ItNi4xMy4wLnRneiM5ZWU3ZTgzMzcyOTBkYTk1Mjg4
MjAxYTZhNTdmNDE3MDMxNzgzMGRlIgorCitiYWJlbC1wbHVnaW4tc3ludGF4LW9iamVjdC1yZXN0
LXNwcmVhZEBeNi44LjA6CisgIHZlcnNpb24gIjYuMTMuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtcGx1Z2luLXN5bnRheC1vYmplY3QtcmVzdC1zcHJl
YWQvLS9iYWJlbC1wbHVnaW4tc3ludGF4LW9iamVjdC1yZXN0LXNwcmVhZC02LjEzLjAudGd6I2Zk
NjUzNmYyYmNlMTM4MzZmZmEzYTU0NThjNDkwM2E1OTdiYjNiZjUiCisKK2JhYmVsLXBsdWdpbi1z
eW50YXgtdHJhaWxpbmctZnVuY3Rpb24tY29tbWFzQF42LjMuMTM6CisgIHZlcnNpb24gIjYuMTMu
MCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtcGx1Z2lu
LXN5bnRheC10cmFpbGluZy1mdW5jdGlvbi1jb21tYXMvLS9iYWJlbC1wbHVnaW4tc3ludGF4LXRy
YWlsaW5nLWZ1bmN0aW9uLWNvbW1hcy02LjEzLjAudGd6IzJiODRiN2Q1M2RkNzQ0Zjk0ZmYxZmFk
NzY2OTQwNjI3NGIyM2Y1NDEiCisKK2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tYXN5bmMtZ2VuZXJh
dG9yLWZ1bmN0aW9uc0BeNi4xNy4wOgorICB2ZXJzaW9uICI2LjE3LjAiCisgIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tYXN5bmMt
Z2VuZXJhdG9yLWZ1bmN0aW9ucy8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tYXN5bmMtZ2VuZXJh
dG9yLWZ1bmN0aW9ucy02LjE3LjAudGd6I2QwYjVhMmIyZjA5NDBmMmIyNDVmYTIwYTAwNTE5ZWQ3
YmM2Y2FlNTQiCisgIGRlcGVuZGVuY2llczoKKyAgICBiYWJlbC1oZWxwZXItcmVtYXAtYXN5bmMt
dG8tZ2VuZXJhdG9yICJeNi4xNi4yIgorICAgIGJhYmVsLXBsdWdpbi1zeW50YXgtYXN5bmMtZ2Vu
ZXJhdG9ycyAiXjYuNS4wIgorICAgIGJhYmVsLXJ1bnRpbWUgIl42LjAuMCIKKworYmFiZWwtcGx1
Z2luLXRyYW5zZm9ybS1hc3luYy10by1nZW5lcmF0b3JAXjYuMTYuMDoKKyAgdmVyc2lvbiAiNi4x
Ni4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1wbHVn
aW4tdHJhbnNmb3JtLWFzeW5jLXRvLWdlbmVyYXRvci8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0t
YXN5bmMtdG8tZ2VuZXJhdG9yLTYuMTYuMC50Z3ojMTllYzM2Y2IxNDg2YjU5ZjlmNDY4YWRmYTQy
Y2UxMzkwOGNhMjk5OSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGJhYmVsLWhlbHBlci1yZW1hcC1h
c3luYy10by1nZW5lcmF0b3IgIl42LjE2LjAiCisgICAgYmFiZWwtcGx1Z2luLXN5bnRheC1hc3lu
Yy1mdW5jdGlvbnMgIl42LjguMCIKKyAgICBiYWJlbC1ydW50aW1lICJeNi4wLjAiCisKK2JhYmVs
LXBsdWdpbi10cmFuc2Zvcm0tY2xhc3MtcHJvcGVydGllc0BeNi4xOC4wOgorICB2ZXJzaW9uICI2
LjE5LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBs
dWdpbi10cmFuc2Zvcm0tY2xhc3MtcHJvcGVydGllcy8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0t
Y2xhc3MtcHJvcGVydGllcy02LjE5LjAudGd6IzEyNzRiMzQ5YWJhYWRjODM1MTY0ZTIwMDRmNGEy
NDQ0YTI3ODhkNWYiCisgIGRlcGVuZGVuY2llczoKKyAgICBiYWJlbC1oZWxwZXItZnVuY3Rpb24t
bmFtZSAiXjYuMTguMCIKKyAgICBiYWJlbC1wbHVnaW4tc3ludGF4LWNsYXNzLXByb3BlcnRpZXMg
Il42LjguMCIKKyAgICBiYWJlbC1ydW50aW1lICJeNi45LjEiCisgICAgYmFiZWwtdGVtcGxhdGUg
Il42LjE1LjAiCisKK2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZGVjb3JhdG9yc0BeNi4xMy4wOgor
ICB2ZXJzaW9uICI2LjEzLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZGVjb3JhdG9ycy8tL2JhYmVsLXBsdWdpbi10cmFu
c2Zvcm0tZGVjb3JhdG9ycy02LjEzLjAudGd6IzgyZDY1YzE0NzBhZTgzZTJkMTNlZWJlY2IwYTFj
MjQ3NmQ2MmRhOWQiCisgIGRlcGVuZGVuY2llczoKKyAgICBiYWJlbC1oZWxwZXItZGVmaW5lLW1h
cCAiXjYuOC4wIgorICAgIGJhYmVsLWhlbHBlci1leHBsb2RlLWNsYXNzICJeNi44LjAiCisgICAg
YmFiZWwtcGx1Z2luLXN5bnRheC1kZWNvcmF0b3JzICJeNi4xMy4wIgorICAgIGJhYmVsLXJ1bnRp
bWUgIl42LjAuMCIKKyAgICBiYWJlbC10ZW1wbGF0ZSAiXjYuOC4wIgorICAgIGJhYmVsLXR5cGVz
ICJeNi4xMy4wIgorCitiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1hcnJvdy1mdW5jdGlv
bnNAXjYuMy4xMzoKKyAgdmVyc2lvbiAiNi44LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LWFycm93LWZ1bmN0
aW9ucy8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LWFycm93LWZ1bmN0aW9ucy02Ljgu
MC50Z3ojNWI2M2FmYzMxODFiZGM5YThjNGQ0ODFiNWE0ZjNmN2Q3ZmVmM2Q5ZCIKKyAgZGVwZW5k
ZW5jaWVzOgorICAgIGJhYmVsLXJ1bnRpbWUgIl42LjAuMCIKKworYmFiZWwtcGx1Z2luLXRyYW5z
Zm9ybS1lczIwMTUtYmxvY2stc2NvcGVkLWZ1bmN0aW9uc0BeNi4zLjEzOgorICB2ZXJzaW9uICI2
LjguMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtcGx1
Z2luLXRyYW5zZm9ybS1lczIwMTUtYmxvY2stc2NvcGVkLWZ1bmN0aW9ucy8tL2JhYmVsLXBsdWdp
bi10cmFuc2Zvcm0tZXMyMDE1LWJsb2NrLXNjb3BlZC1mdW5jdGlvbnMtNi44LjAudGd6I2VkOTVk
NjI5YzRiNWE3MWFlMjk2ODJiOTk4ZjcwZDk4MzNlYjM2NmQiCisgIGRlcGVuZGVuY2llczoKKyAg
ICBiYWJlbC1ydW50aW1lICJeNi4wLjAiCisKK2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1
LWJsb2NrLXNjb3BpbmdAXjYuMTguMDoKKyAgdmVyc2lvbiAiNi4xOC4wIgorICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAx
NS1ibG9jay1zY29waW5nLy0vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtYmxvY2stc2Nv
cGluZy02LjE4LjAudGd6IzNiZmRjZmVjMzE4ZDQ2ZGYyMjUyNWNkZWE4OGYxOTc4ODEzNjUzYWYi
CisgIGRlcGVuZGVuY2llczoKKyAgICBiYWJlbC1ydW50aW1lICJeNi45LjAiCisgICAgYmFiZWwt
dGVtcGxhdGUgIl42LjE1LjAiCisgICAgYmFiZWwtdHJhdmVyc2UgIl42LjE4LjAiCisgICAgYmFi
ZWwtdHlwZXMgIl42LjE4LjAiCisgICAgbG9kYXNoICJeNC4yLjAiCisKK2JhYmVsLXBsdWdpbi10
cmFuc2Zvcm0tZXMyMDE1LWNsYXNzZXNAXjYuMTguMDoKKyAgdmVyc2lvbiAiNi4xOC4wIgorICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1wbHVnaW4tdHJhbnNm
b3JtLWVzMjAxNS1jbGFzc2VzLy0vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtY2xhc3Nl
cy02LjE4LjAudGd6I2ZmZTdhMTczMjFiZjgzZTQ5NGRjZGEwYWUzZmM3MmRmNDhmZmQxZDkiCisg
IGRlcGVuZGVuY2llczoKKyAgICBiYWJlbC1oZWxwZXItZGVmaW5lLW1hcCAiXjYuMTguMCIKKyAg
ICBiYWJlbC1oZWxwZXItZnVuY3Rpb24tbmFtZSAiXjYuMTguMCIKKyAgICBiYWJlbC1oZWxwZXIt
b3B0aW1pc2UtY2FsbC1leHByZXNzaW9uICJeNi4xOC4wIgorICAgIGJhYmVsLWhlbHBlci1yZXBs
YWNlLXN1cGVycyAiXjYuMTguMCIKKyAgICBiYWJlbC1tZXNzYWdlcyAiXjYuOC4wIgorICAgIGJh
YmVsLXJ1bnRpbWUgIl42LjkuMCIKKyAgICBiYWJlbC10ZW1wbGF0ZSAiXjYuMTQuMCIKKyAgICBi
YWJlbC10cmF2ZXJzZSAiXjYuMTguMCIKKyAgICBiYWJlbC10eXBlcyAiXjYuMTguMCIKKworYmFi
ZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtY29tcHV0ZWQtcHJvcGVydGllc0BeNi4zLjEzOgor
ICB2ZXJzaW9uICI2LjguMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtY29tcHV0ZWQtcHJvcGVydGllcy8tL2Jh
YmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LWNvbXB1dGVkLXByb3BlcnRpZXMtNi44LjAudGd6
I2Y1MTAxMGZkNjFiM2JkN2I2YjYwYTVmZGZkMzA3YmI3YTUyNzk4NzAiCisgIGRlcGVuZGVuY2ll
czoKKyAgICBiYWJlbC1oZWxwZXItZGVmaW5lLW1hcCAiXjYuOC4wIgorICAgIGJhYmVsLXJ1bnRp
bWUgIl42LjAuMCIKKyAgICBiYWJlbC10ZW1wbGF0ZSAiXjYuOC4wIgorCitiYWJlbC1wbHVnaW4t
dHJhbnNmb3JtLWVzMjAxNS1kZXN0cnVjdHVyaW5nQF42LjE4LjA6CisgIHZlcnNpb24gIjYuMTku
MCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtcGx1Z2lu
LXRyYW5zZm9ybS1lczIwMTUtZGVzdHJ1Y3R1cmluZy8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0t
ZXMyMDE1LWRlc3RydWN0dXJpbmctNi4xOS4wLnRneiNmZjFkOTExYzRiM2Y0Y2FiNjIxYmQ2Njcw
MmE4NjlhY2QxOTAwNTMzIgorICBkZXBlbmRlbmNpZXM6CisgICAgYmFiZWwtcnVudGltZSAiXjYu
OS4wIgorCitiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1kdXBsaWNhdGUta2V5c0BeNi42
LjA6CisgIHZlcnNpb24gIjYuOC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1kdXBsaWNhdGUta2V5cy8tL2Jh
YmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LWR1cGxpY2F0ZS1rZXlzLTYuOC4wLnRneiNmZDhm
N2Y3MTcxZmMxMDhjYzFjNzBjMzE2NGI5ZjE1YTgxYzI1ZjdkIgorICBkZXBlbmRlbmNpZXM6Cisg
ICAgYmFiZWwtcnVudGltZSAiXjYuMC4wIgorICAgIGJhYmVsLXR5cGVzICJeNi44LjAiCisKK2Jh
YmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LWZvci1vZkBeNi4xOC4wOgorICB2ZXJzaW9uICI2
LjE4LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBs
dWdpbi10cmFuc2Zvcm0tZXMyMDE1LWZvci1vZi8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMy
MDE1LWZvci1vZi02LjE4LjAudGd6IzRjNTE3NTA0ZGI2NGJmOGNmYzExOWE2YjhmMTc3MjExZjIw
MjhhNzAiCisgIGRlcGVuZGVuY2llczoKKyAgICBiYWJlbC1ydW50aW1lICJeNi4wLjAiCisKK2Jh
YmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LWZ1bmN0aW9uLW5hbWVAXjYuOS4wOgorICB2ZXJz
aW9uICI2LjkuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFi
ZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtZnVuY3Rpb24tbmFtZS8tL2JhYmVsLXBsdWdpbi10
cmFuc2Zvcm0tZXMyMDE1LWZ1bmN0aW9uLW5hbWUtNi45LjAudGd6IzhjMTM1YjE3ZGJkMDY0ZTVi
YmE1NmVjNTExYmFhZWUyZmNhODI3MTkiCisgIGRlcGVuZGVuY2llczoKKyAgICBiYWJlbC1oZWxw
ZXItZnVuY3Rpb24tbmFtZSAiXjYuOC4wIgorICAgIGJhYmVsLXJ1bnRpbWUgIl42LjkuMCIKKyAg
ICBiYWJlbC10eXBlcyAiXjYuOS4wIgorCitiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1s
aXRlcmFsc0BeNi4zLjEzOgorICB2ZXJzaW9uICI2LjguMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtbGl0ZXJh
bHMvLS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1saXRlcmFscy02LjguMC50Z3ojNTBh
YTJlNWM3OTU4ZmMyYWIyNWQ3NGVjMTE3ZTBjYzk4ZjA0NjQ2OCIKKyAgZGVwZW5kZW5jaWVzOgor
ICAgIGJhYmVsLXJ1bnRpbWUgIl42LjAuMCIKKworYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIw
MTUtbW9kdWxlcy1hbWRAXjYuMTguMDoKKyAgdmVyc2lvbiAiNi4xOC4wIgorICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAx
NS1tb2R1bGVzLWFtZC8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LW1vZHVsZXMtYW1k
LTYuMTguMC50Z3ojNDlhMDU0Y2JiNzYyYmRmOWFlMmQ4YTgwNzA3NmNmYWRlNjE0MWU0MCIKKyAg
ZGVwZW5kZW5jaWVzOgorICAgIGJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LW1vZHVsZXMt
Y29tbW9uanMgIl42LjE4LjAiCisgICAgYmFiZWwtcnVudGltZSAiXjYuMC4wIgorICAgIGJhYmVs
LXRlbXBsYXRlICJeNi44LjAiCisKK2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LW1vZHVs
ZXMtY29tbW9uanNAXjYuMTguMDoKKyAgdmVyc2lvbiAiNi4xOC4wIgorICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1t
b2R1bGVzLWNvbW1vbmpzLy0vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtbW9kdWxlcy1j
b21tb25qcy02LjE4LjAudGd6I2MxNWFlNWJiMTFiMzJhMGFiZGNjOThhNTgzN2JhYTRlZThkNjdi
Y2MiCisgIGRlcGVuZGVuY2llczoKKyAgICBiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLXN0cmljdC1t
b2RlICJeNi4xOC4wIgorICAgIGJhYmVsLXJ1bnRpbWUgIl42LjAuMCIKKyAgICBiYWJlbC10ZW1w
bGF0ZSAiXjYuMTYuMCIKKyAgICBiYWJlbC10eXBlcyAiXjYuMTguMCIKKworYmFiZWwtcGx1Z2lu
LXRyYW5zZm9ybS1lczIwMTUtbW9kdWxlcy1zeXN0ZW1qc0BeNi4xOC4wOgorICB2ZXJzaW9uICI2
LjE5LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBs
dWdpbi10cmFuc2Zvcm0tZXMyMDE1LW1vZHVsZXMtc3lzdGVtanMvLS9iYWJlbC1wbHVnaW4tdHJh
bnNmb3JtLWVzMjAxNS1tb2R1bGVzLXN5c3RlbWpzLTYuMTkuMC50Z3ojNTA0MzgxMzZlYmE3NDUy
N2VmYTAwYTViMGZlZmFmMWRjNDA3MWRhNiIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGJhYmVsLWhl
bHBlci1ob2lzdC12YXJpYWJsZXMgIl42LjE4LjAiCisgICAgYmFiZWwtcnVudGltZSAiXjYuMTEu
NiIKKyAgICBiYWJlbC10ZW1wbGF0ZSAiXjYuMTQuMCIKKworYmFiZWwtcGx1Z2luLXRyYW5zZm9y
bS1lczIwMTUtbW9kdWxlcy11bWRAXjYuMTguMDoKKyAgdmVyc2lvbiAiNi4xOC4wIgorICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1wbHVnaW4tdHJhbnNmb3Jt
LWVzMjAxNS1tb2R1bGVzLXVtZC8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LW1vZHVs
ZXMtdW1kLTYuMTguMC50Z3ojMjMzNTE3NzBlY2U1YzFmOGU4M2VkNjdjYjFkNzk5Mjg4NDQ5MWU1
MCIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LW1v
ZHVsZXMtYW1kICJeNi4xOC4wIgorICAgIGJhYmVsLXJ1bnRpbWUgIl42LjAuMCIKKyAgICBiYWJl
bC10ZW1wbGF0ZSAiXjYuOC4wIgorCitiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1vYmpl
Y3Qtc3VwZXJAXjYuMy4xMzoKKyAgdmVyc2lvbiAiNi44LjAiCisgIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LW9iamVj
dC1zdXBlci8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LW9iamVjdC1zdXBlci02Ljgu
MC50Z3ojMWI4NTg3NDBhNWE0NDAwODg3YzIzZGNmZjZmNGQ1NmVlYTRhMjRjNSIKKyAgZGVwZW5k
ZW5jaWVzOgorICAgIGJhYmVsLWhlbHBlci1yZXBsYWNlLXN1cGVycyAiXjYuOC4wIgorICAgIGJh
YmVsLXJ1bnRpbWUgIl42LjAuMCIKKworYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtcGFy
YW1ldGVyc0BeNi4xOC4wOgorICB2ZXJzaW9uICI2LjE4LjAiCisgIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LXBhcmFt
ZXRlcnMvLS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1wYXJhbWV0ZXJzLTYuMTguMC50
Z3ojOWIyY2ZlMjM4YzU0OWYxNjM1YmEyN2ZjMWRhYTg1OGJlNzA2MDhiMSIKKyAgZGVwZW5kZW5j
aWVzOgorICAgIGJhYmVsLWhlbHBlci1jYWxsLWRlbGVnYXRlICJeNi4xOC4wIgorICAgIGJhYmVs
LWhlbHBlci1nZXQtZnVuY3Rpb24tYXJpdHkgIl42LjE4LjAiCisgICAgYmFiZWwtcnVudGltZSAi
XjYuOS4wIgorICAgIGJhYmVsLXRlbXBsYXRlICJeNi4xNi4wIgorICAgIGJhYmVsLXRyYXZlcnNl
ICJeNi4xOC4wIgorICAgIGJhYmVsLXR5cGVzICJeNi4xOC4wIgorCitiYWJlbC1wbHVnaW4tdHJh
bnNmb3JtLWVzMjAxNS1zaG9ydGhhbmQtcHJvcGVydGllc0BeNi4xOC4wOgorICB2ZXJzaW9uICI2
LjE4LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBs
dWdpbi10cmFuc2Zvcm0tZXMyMDE1LXNob3J0aGFuZC1wcm9wZXJ0aWVzLy0vYmFiZWwtcGx1Z2lu
LXRyYW5zZm9ybS1lczIwMTUtc2hvcnRoYW5kLXByb3BlcnRpZXMtNi4xOC4wLnRneiNlMmVkZTNi
N2RmNDdiZjk4MDE1MTkyNjUzNGQxZGQwY2JlYTU4ZjQzIgorICBkZXBlbmRlbmNpZXM6CisgICAg
YmFiZWwtcnVudGltZSAiXjYuMC4wIgorICAgIGJhYmVsLXR5cGVzICJeNi4xOC4wIgorCitiYWJl
bC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1zcHJlYWRAXjYuMy4xMzoKKyAgdmVyc2lvbiAiNi44
LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdp
bi10cmFuc2Zvcm0tZXMyMDE1LXNwcmVhZC8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1
LXNwcmVhZC02LjguMC50Z3ojMDIxN2Y3MzdlM2I4MjFmYTVhNjY5ZjE4N2M2ZWQ1OTIwNWYwNWU5
YyIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGJhYmVsLXJ1bnRpbWUgIl42LjAuMCIKKworYmFiZWwt
cGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtc3RpY2t5LXJlZ2V4QF42LjMuMTM6CisgIHZlcnNpb24g
IjYuOC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1w
bHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1zdGlja3ktcmVnZXgvLS9iYWJlbC1wbHVnaW4tdHJhbnNm
b3JtLWVzMjAxNS1zdGlja3ktcmVnZXgtNi44LjAudGd6I2U3M2QzMDBhNDQwYTM1ZDVjNjRmNWMy
YTM0NGRjMjM2ZTNkZjQ3YmUiCisgIGRlcGVuZGVuY2llczoKKyAgICBiYWJlbC1oZWxwZXItcmVn
ZXggIl42LjguMCIKKyAgICBiYWJlbC1ydW50aW1lICJeNi4wLjAiCisgICAgYmFiZWwtdHlwZXMg
Il42LjguMCIKKworYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtdGVtcGxhdGUtbGl0ZXJh
bHNAXjYuNi4wOgorICB2ZXJzaW9uICI2LjguMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtdGVtcGxhdGUtbGl0
ZXJhbHMvLS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS10ZW1wbGF0ZS1saXRlcmFscy02
LjguMC50Z3ojODZlYjg3NmQwYTJjNjM1ZGE0ZWMwNDhiNGY3ZGU5ZGZjODk3ZTY2YiIKKyAgZGVw
ZW5kZW5jaWVzOgorICAgIGJhYmVsLXJ1bnRpbWUgIl42LjAuMCIKKworYmFiZWwtcGx1Z2luLXRy
YW5zZm9ybS1lczIwMTUtdHlwZW9mLXN5bWJvbEBeNi4xOC4wOgorICB2ZXJzaW9uICI2LjE4LjAi
CisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdpbi10
cmFuc2Zvcm0tZXMyMDE1LXR5cGVvZi1zeW1ib2wvLS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVz
MjAxNS10eXBlb2Ytc3ltYm9sLTYuMTguMC50Z3ojMGIxNGM0ODYyOWM5MGZmNDdhMDY1MDA3N2Y2
YWE2OTliZWUzNTc5OCIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGJhYmVsLXJ1bnRpbWUgIl42LjAu
MCIKKworYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtdW5pY29kZS1yZWdleEBeNi4zLjEz
OgorICB2ZXJzaW9uICI2LjExLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w
a2cuY29tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LXVuaWNvZGUtcmVnZXgvLS9iYWJl
bC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS11bmljb2RlLXJlZ2V4LTYuMTEuMC50Z3ojNjI5OGNl
YWJhYWQ4OGQ1MGEzZjRmMzkyZDhkZTk5NzI2MGY2ZWYyYyIKKyAgZGVwZW5kZW5jaWVzOgorICAg
IGJhYmVsLWhlbHBlci1yZWdleCAiXjYuOC4wIgorICAgIGJhYmVsLXJ1bnRpbWUgIl42LjAuMCIK
KyAgICByZWdleHB1LWNvcmUgIl4yLjAuMCIKKworYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1leHBv
bmVudGlhdGlvbi1vcGVyYXRvckBeNi4zLjEzOgorICB2ZXJzaW9uICI2LjguMCIKKyAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1l
eHBvbmVudGlhdGlvbi1vcGVyYXRvci8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXhwb25lbnRp
YXRpb24tb3BlcmF0b3ItNi44LjAudGd6I2RiMjU3NDJlOTMzOWVhZGU2NzZjYTlhY2VjNDZmOTU1
NTk5YTY4YTQiCisgIGRlcGVuZGVuY2llczoKKyAgICBiYWJlbC1oZWxwZXItYnVpbGRlci1iaW5h
cnktYXNzaWdubWVudC1vcGVyYXRvci12aXNpdG9yICJeNi44LjAiCisgICAgYmFiZWwtcGx1Z2lu
LXN5bnRheC1leHBvbmVudGlhdGlvbi1vcGVyYXRvciAiXjYuOC4wIgorICAgIGJhYmVsLXJ1bnRp
bWUgIl42LjAuMCIKKworYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1vYmplY3QtcmVzdC1zcHJlYWRA
XjYuMTYuMDoKKyAgdmVyc2lvbiAiNi4xOS4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLW9iamVjdC1yZXN0LXNwcmVhZC8t
L2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tb2JqZWN0LXJlc3Qtc3ByZWFkLTYuMTkuMC50Z3ojZjZh
YzQyOGVlM2NiNGM2YWEwMDk0M2VkMTQyMmNlODEzNjAzYjM0YyIKKyAgZGVwZW5kZW5jaWVzOgor
ICAgIGJhYmVsLXBsdWdpbi1zeW50YXgtb2JqZWN0LXJlc3Qtc3ByZWFkICJeNi44LjAiCisgICAg
YmFiZWwtcnVudGltZSAiXjYuMC4wIgorCitiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLXJlZ2VuZXJh
dG9yQF42LjE2LjA6CisgIHZlcnNpb24gIjYuMTYuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1yZWdlbmVyYXRvci8tL2Jh
YmVsLXBsdWdpbi10cmFuc2Zvcm0tcmVnZW5lcmF0b3ItNi4xNi4xLnRneiNhNzVkZTZiMDQ4YTE0
MTU0YWFlMTRiMDEyMjc1NmM1YmVkMzkyZjU5IgorICBkZXBlbmRlbmNpZXM6CisgICAgYmFiZWwt
cnVudGltZSAiXjYuOS4wIgorICAgIGJhYmVsLXR5cGVzICJeNi4xNi4wIgorICAgIHByaXZhdGUg
In4wLjEuNSIKKworYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1ydW50aW1lQF42LjAuMDoKKyAgdmVy
c2lvbiAiNi4xNS4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9i
YWJlbC1wbHVnaW4tdHJhbnNmb3JtLXJ1bnRpbWUvLS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLXJ1
bnRpbWUtNi4xNS4wLnRneiMzZDc1YjRkOTQ5YWQ4MWFmMTU3NTcwMjczODQ2ZmI1OWFlYjBkNTdj
IgorICBkZXBlbmRlbmNpZXM6CisgICAgYmFiZWwtcnVudGltZSAiXjYuOS4wIgorCitiYWJlbC1w
bHVnaW4tdHJhbnNmb3JtLXN0cmljdC1tb2RlQF42LjE4LjA6CisgIHZlcnNpb24gIjYuMTguMCIK
KyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtcGx1Z2luLXRy
YW5zZm9ybS1zdHJpY3QtbW9kZS8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tc3RyaWN0LW1vZGUt
Ni4xOC4wLnRneiNkZjdjZjI5OTFmZTA0NmY0NDE2M2RjZDExMGQ1Y2E0M2JjNjUyYjlkIgorICBk
ZXBlbmRlbmNpZXM6CisgICAgYmFiZWwtcnVudGltZSAiXjYuMC4wIgorICAgIGJhYmVsLXR5cGVz
ICJeNi4xOC4wIgorCitiYWJlbC1wcmVzZXQtZXMyMDE1QF42LjAuMDoKKyAgdmVyc2lvbiAiNi4x
OC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1wcmVz
ZXQtZXMyMDE1Ly0vYmFiZWwtcHJlc2V0LWVzMjAxNS02LjE4LjAudGd6I2I4YzcwZGY4NGVjOTQ4
YzQzZGNmMmJmNzcwZTk4OGViN2RhODgzMTIiCisgIGRlcGVuZGVuY2llczoKKyAgICBiYWJlbC1w
bHVnaW4tY2hlY2stZXMyMDE1LWNvbnN0YW50cyAiXjYuMy4xMyIKKyAgICBiYWJlbC1wbHVnaW4t
dHJhbnNmb3JtLWVzMjAxNS1hcnJvdy1mdW5jdGlvbnMgIl42LjMuMTMiCisgICAgYmFiZWwtcGx1
Z2luLXRyYW5zZm9ybS1lczIwMTUtYmxvY2stc2NvcGVkLWZ1bmN0aW9ucyAiXjYuMy4xMyIKKyAg
ICBiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1ibG9jay1zY29waW5nICJeNi4xOC4wIgor
ICAgIGJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LWNsYXNzZXMgIl42LjE4LjAiCisgICAg
YmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtY29tcHV0ZWQtcHJvcGVydGllcyAiXjYuMy4x
MyIKKyAgICBiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1kZXN0cnVjdHVyaW5nICJeNi4x
OC4wIgorICAgIGJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LWR1cGxpY2F0ZS1rZXlzICJe
Ni42LjAiCisgICAgYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtZm9yLW9mICJeNi4xOC4w
IgorICAgIGJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LWZ1bmN0aW9uLW5hbWUgIl42Ljku
MCIKKyAgICBiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1saXRlcmFscyAiXjYuMy4xMyIK
KyAgICBiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1tb2R1bGVzLWFtZCAiXjYuMTguMCIK
KyAgICBiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1tb2R1bGVzLWNvbW1vbmpzICJeNi4x
OC4wIgorICAgIGJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LW1vZHVsZXMtc3lzdGVtanMg
Il42LjE4LjAiCisgICAgYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtbW9kdWxlcy11bWQg
Il42LjE4LjAiCisgICAgYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtb2JqZWN0LXN1cGVy
ICJeNi4zLjEzIgorICAgIGJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LXBhcmFtZXRlcnMg
Il42LjE4LjAiCisgICAgYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtc2hvcnRoYW5kLXBy
b3BlcnRpZXMgIl42LjE4LjAiCisgICAgYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtc3By
ZWFkICJeNi4zLjEzIgorICAgIGJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LXN0aWNreS1y
ZWdleCAiXjYuMy4xMyIKKyAgICBiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS10ZW1wbGF0
ZS1saXRlcmFscyAiXjYuNi4wIgorICAgIGJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LXR5
cGVvZi1zeW1ib2wgIl42LjE4LjAiCisgICAgYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUt
dW5pY29kZS1yZWdleCAiXjYuMy4xMyIKKyAgICBiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLXJlZ2Vu
ZXJhdG9yICJeNi4xNi4wIgorCitiYWJlbC1wcmVzZXQtc3RhZ2UtMkBeNi4wLjA6CisgIHZlcnNp
b24gIjYuMTguMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFi
ZWwtcHJlc2V0LXN0YWdlLTIvLS9iYWJlbC1wcmVzZXQtc3RhZ2UtMi02LjE4LjAudGd6IzllYjdi
ZjlhOGU5MWM2ODI2MGQ1YmE3NTAwNDkzY2FhYWRhNGI1YjUiCisgIGRlcGVuZGVuY2llczoKKyAg
ICBiYWJlbC1wbHVnaW4tc3ludGF4LWR5bmFtaWMtaW1wb3J0ICJeNi4xOC4wIgorICAgIGJhYmVs
LXBsdWdpbi10cmFuc2Zvcm0tY2xhc3MtcHJvcGVydGllcyAiXjYuMTguMCIKKyAgICBiYWJlbC1w
bHVnaW4tdHJhbnNmb3JtLWRlY29yYXRvcnMgIl42LjEzLjAiCisgICAgYmFiZWwtcHJlc2V0LXN0
YWdlLTMgIl42LjE3LjAiCisKK2JhYmVsLXByZXNldC1zdGFnZS0zQF42LjE3LjA6CisgIHZlcnNp
b24gIjYuMTcuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFi
ZWwtcHJlc2V0LXN0YWdlLTMvLS9iYWJlbC1wcmVzZXQtc3RhZ2UtMy02LjE3LjAudGd6I2I2NjM4
ZTQ2ZGI2ZTkxZTNmODg5MDEzZDhjZTE0MzkxN2M2ODVlMzkiCisgIGRlcGVuZGVuY2llczoKKyAg
ICBiYWJlbC1wbHVnaW4tc3ludGF4LXRyYWlsaW5nLWZ1bmN0aW9uLWNvbW1hcyAiXjYuMy4xMyIK
KyAgICBiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWFzeW5jLWdlbmVyYXRvci1mdW5jdGlvbnMgIl42
LjE3LjAiCisgICAgYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1hc3luYy10by1nZW5lcmF0b3IgIl42
LjE2LjAiCisgICAgYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1leHBvbmVudGlhdGlvbi1vcGVyYXRv
ciAiXjYuMy4xMyIKKyAgICBiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLW9iamVjdC1yZXN0LXNwcmVh
ZCAiXjYuMTYuMCIKKworYmFiZWwtcmVnaXN0ZXJAXjYuMC4wLCBiYWJlbC1yZWdpc3RlckBeNi4x
OC4wOgorICB2ZXJzaW9uICI2LjE4LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL2JhYmVsLXJlZ2lzdGVyLy0vYmFiZWwtcmVnaXN0ZXItNi4xOC4wLnRneiM4OTJl
MmUwMzg2NTA3OGRkOTBhZDJjNzE1MTExZWM0NDQ5YjMyYTY4IgorICBkZXBlbmRlbmNpZXM6Cisg
ICAgYmFiZWwtY29yZSAiXjYuMTguMCIKKyAgICBiYWJlbC1ydW50aW1lICJeNi4xMS42IgorICAg
IGNvcmUtanMgIl4yLjQuMCIKKyAgICBob21lLW9yLXRtcCAiXjIuMC4wIgorICAgIGxvZGFzaCAi
XjQuMi4wIgorICAgIG1rZGlycCAiXjAuNS4xIgorICAgIHNvdXJjZS1tYXAtc3VwcG9ydCAiXjAu
NC4yIgorCitiYWJlbC1ydW50aW1lQF42LjAuMCwgYmFiZWwtcnVudGltZUBeNi4xMS42LCBiYWJl
bC1ydW50aW1lQF42LjkuMCwgYmFiZWwtcnVudGltZUBeNi45LjE6CisgIHZlcnNpb24gIjYuMTgu
MCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtcnVudGlt
ZS8tL2JhYmVsLXJ1bnRpbWUtNi4xOC4wLnRneiMwZjQxNzdmZmQ5ODQ5MmVmMTNiOWY4MjNlOTk5
NGEwMjU4NGM5MDc4IgorICBkZXBlbmRlbmNpZXM6CisgICAgY29yZS1qcyAiXjIuNC4wIgorICAg
IHJlZ2VuZXJhdG9yLXJ1bnRpbWUgIl4wLjkuNSIKKworYmFiZWwtdGVtcGxhdGVAXjYuMTQuMCwg
YmFiZWwtdGVtcGxhdGVAXjYuMTUuMCwgYmFiZWwtdGVtcGxhdGVAXjYuMTYuMCwgYmFiZWwtdGVt
cGxhdGVAXjYuOC4wOgorICB2ZXJzaW9uICI2LjE2LjAiCisgIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXRlbXBsYXRlLy0vYmFiZWwtdGVtcGxhdGUtNi4xNi4w
LnRneiNlMTQ5ZGQxYTlmMDNhMzVmODE3ZGRiYzRkMDQ4MTk4OGU3ZWJjOGNhIgorICBkZXBlbmRl
bmNpZXM6CisgICAgYmFiZWwtcnVudGltZSAiXjYuOS4wIgorICAgIGJhYmVsLXRyYXZlcnNlICJe
Ni4xNi4wIgorICAgIGJhYmVsLXR5cGVzICJeNi4xNi4wIgorICAgIGJhYnlsb24gIl42LjExLjAi
CisgICAgbG9kYXNoICJeNC4yLjAiCisKK2JhYmVsLXRyYXZlcnNlQF42LjE1LjAsIGJhYmVsLXRy
YXZlcnNlQF42LjE2LjAsIGJhYmVsLXRyYXZlcnNlQF42LjE4LjA6CisgIHZlcnNpb24gIjYuMTku
MCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtdHJhdmVy
c2UvLS9iYWJlbC10cmF2ZXJzZS02LjE5LjAudGd6IzY4MzYzZmI4MjFlMjYyNDdkNTJhNTE5YTg0
YjJjZWFiOGRmNGY1NWEiCisgIGRlcGVuZGVuY2llczoKKyAgICBiYWJlbC1jb2RlLWZyYW1lICJe
Ni4xNi4wIgorICAgIGJhYmVsLW1lc3NhZ2VzICJeNi44LjAiCisgICAgYmFiZWwtcnVudGltZSAi
XjYuOS4wIgorICAgIGJhYmVsLXR5cGVzICJeNi4xOS4wIgorICAgIGJhYnlsb24gIl42LjExLjAi
CisgICAgZGVidWcgIl4yLjIuMCIKKyAgICBnbG9iYWxzICJeOS4wLjAiCisgICAgaW52YXJpYW50
ICJeMi4yLjAiCisgICAgbG9kYXNoICJeNC4yLjAiCisKK2JhYmVsLXR5cGVzQF42LjEzLjAsIGJh
YmVsLXR5cGVzQF42LjE1LjAsIGJhYmVsLXR5cGVzQF42LjE2LjAsIGJhYmVsLXR5cGVzQF42LjE4
LjAsIGJhYmVsLXR5cGVzQF42LjE5LjAsIGJhYmVsLXR5cGVzQF42LjguMCwgYmFiZWwtdHlwZXNA
XjYuOS4wOgorICB2ZXJzaW9uICI2LjE5LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL2JhYmVsLXR5cGVzLy0vYmFiZWwtdHlwZXMtNi4xOS4wLnRneiM4ZGIyOTcy
ZGJlZDAxZjExOTJhOGI2MDJiYTFlMWU0YzUxNjI0MGI5IgorICBkZXBlbmRlbmNpZXM6CisgICAg
YmFiZWwtcnVudGltZSAiXjYuOS4xIgorICAgIGVzdXRpbHMgIl4yLjAuMiIKKyAgICBsb2Rhc2gg
Il40LjIuMCIKKyAgICB0by1mYXN0LXByb3BlcnRpZXMgIl4xLjAuMSIKKworYmFieWxvbkBeNi4x
MS4wLCBiYWJ5bG9uQF42LjEzLjA6CisgIHZlcnNpb24gIjYuMTQuMSIKKyAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFieWxvbi8tL2JhYnlsb24tNi4xNC4xLnRneiM5
NTYyNzVmYWI3Mjc1M2FkOWIzNDM1ZDdhZmU1OGY4YmYwYTI5ODE1IgorCitiYWxhbmNlZC1tYXRj
aEBeMC40LjEsIGJhbGFuY2VkLW1hdGNoQF4wLjQuMjoKKyAgdmVyc2lvbiAiMC40LjIiCisgIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhbGFuY2VkLW1hdGNoLy0vYmFs
YW5jZWQtbWF0Y2gtMC40LjIudGd6I2NiM2YzZTNjNzMyZGMwZjAxZWU3MGI0MDNmMzAyZTYxZDc3
MDk4MzgiCisKK2Jhc2U2NC1qc0BeMS4wLjI6CisgIHZlcnNpb24gIjEuMi4wIgorICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYXNlNjQtanMvLS9iYXNlNjQtanMtMS4y
LjAudGd6I2EzOTk5MmQ3MjM1ODQ4MTE5ODJiZTVlMjkwYmI2YTUzZDg2NzAwZjEiCisKK2Jjcnlw
dC1wYmtkZkBeMS4wLjA6CisgIHZlcnNpb24gIjEuMC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9iY3J5cHQtcGJrZGYvLS9iY3J5cHQtcGJrZGYtMS4wLjAudGd6
IzNjYTc2Yjg1MjQxYzcxNzBiZjdkOTcwM2U3YjlhYTc0NjMwMDQwZDQiCisgIGRlcGVuZGVuY2ll
czoKKyAgICB0d2VldG5hY2wgIl4wLjE0LjMiCisKK2JpZy5qc0BeMy4xLjM6CisgIHZlcnNpb24g
IjMuMS4zIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iaWcuanMv
LS9iaWcuanMtMy4xLjMudGd6IzRjYWRhMjE5MzY1MmViM2NhOWVjOGU1NWM5MDE1NjY5Yzk4MDY5
NzgiCisKK2JpbmFyeS1leHRlbnNpb25zQF4xLjAuMDoKKyAgdmVyc2lvbiAiMS44LjAiCisgIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JpbmFyeS1leHRlbnNpb25zLy0v
YmluYXJ5LWV4dGVuc2lvbnMtMS44LjAudGd6IzQ4ZWM4ZDE2ZGY0Mzc3ZWFlNWZhNTg4NDY4MjQ4
MGFmNGQ5NWM3NzQiCisKK2Jsb2NrLXN0cmVhbUAqOgorICB2ZXJzaW9uICIwLjAuOSIKKyAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmxvY2stc3RyZWFtLy0vYmxvY2st
c3RyZWFtLTAuMC45LnRneiMxM2ViZmU3NzhhMDMyMDVjZmUwMzc1MTQ4MWViYjRiMzMwMGMxMjZh
IgorICBkZXBlbmRlbmNpZXM6CisgICAgaW5oZXJpdHMgIn4yLjAuMCIKKworYmx1ZWJpcmRAXjMu
MC41LCBibHVlYmlyZEBeMy4xLjEsIGJsdWViaXJkQF4zLjQuNjoKKyAgdmVyc2lvbiAiMy40LjYi
CisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JsdWViaXJkLy0vYmx1
ZWJpcmQtMy40LjYudGd6IzAxZGE4ZDgyMWQ4NzgxM2QxNTg5NjdlNzQzZDVmZTZjNjJjZjhjMGYi
CisKK2Jvb2xiYXNlQH4xLjAuMDoKKyAgdmVyc2lvbiAiMS4wLjAiCisgIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Jvb2xiYXNlLy0vYm9vbGJhc2UtMS4wLjAudGd6IzY4
ZGZmNWZiZTYwYzUxZWIzNzcyNWVhOWUzZWQzMTBkY2MxZTc3NmUiCisKK2Jvb21AMi54Lng6Cisg
IHZlcnNpb24gIjIuMTAuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vYm9vbS8tL2Jvb20tMi4xMC4xLnRneiMzOWM4OTE4Y2VmZjU3OTlmODNmOTQ5MmE4NDhmNjI1
YWRkMGM3NjZmIgorICBkZXBlbmRlbmNpZXM6CisgICAgaG9layAiMi54LngiCisKK2JyYWNlLWV4
cGFuc2lvbkBeMS4wLjA6CisgIHZlcnNpb24gIjEuMS42IgorICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9icmFjZS1leHBhbnNpb24vLS9icmFjZS1leHBhbnNpb24tMS4x
LjYudGd6IzcxOTdkN2VhYTliODdlNjQ4MzkwZWE2MWZjNjZjODQ0Mjc0MjBkZjkiCisgIGRlcGVu
ZGVuY2llczoKKyAgICBiYWxhbmNlZC1tYXRjaCAiXjAuNC4xIgorICAgIGNvbmNhdC1tYXAgIjAu
MC4xIgorCiticmFjZXNAXjEuOC4yOgorICB2ZXJzaW9uICIxLjguNSIKKyAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYnJhY2VzLy0vYnJhY2VzLTEuOC41LnRneiNiYTc3
OTYyZTEyZGZmOTY5ZDZiNzY3MTFlOTE0YjczNzg1N2JmNmE3IgorICBkZXBlbmRlbmNpZXM6Cisg
ICAgZXhwYW5kLXJhbmdlICJeMS44LjEiCisgICAgcHJlc2VydmUgIl4wLjIuMCIKKyAgICByZXBl
YXQtZWxlbWVudCAiXjEuMS4yIgorCiticm93c2VyaWZ5LWFlc0AwLjQuMDoKKyAgdmVyc2lvbiAi
MC40LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Jyb3dzZXJp
ZnktYWVzLy0vYnJvd3NlcmlmeS1hZXMtMC40LjAudGd6IzA2NzE0OWI2NjhkZjMxYzRiNTg1MzNl
MDJkMDFlODA2ZDg2MDhlMmMiCisgIGRlcGVuZGVuY2llczoKKyAgICBpbmhlcml0cyAiXjIuMC4x
IgorCiticm93c2VyaWZ5LXpsaWJAXjAuMS40OgorICB2ZXJzaW9uICIwLjEuNCIKKyAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYnJvd3NlcmlmeS16bGliLy0vYnJvd3Nl
cmlmeS16bGliLTAuMS40LnRneiNiYjM1ZjhhNTE5ZjYwMGUwZmE2Yjg0ODUyNDFjOTc5ZDAxNDFm
YjJkIgorICBkZXBlbmRlbmNpZXM6CisgICAgcGFrbyAifjAuMi4wIgorCiticm93c2Vyc2xpc3RA
fjEuNC4wOgorICB2ZXJzaW9uICIxLjQuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vYnJvd3NlcnNsaXN0Ly0vYnJvd3NlcnNsaXN0LTEuNC4wLnRneiM5Y2ZkY2Y1
Mzg0ZDkxNThmNWI3MGRhMmFhMDBiMzBlOGZmMDE5MDQ5IgorICBkZXBlbmRlbmNpZXM6CisgICAg
Y2FuaXVzZS1kYiAiXjEuMC4zMDAwMDUzOSIKKworYnVmZmVyLXNoaW1zQF4xLjAuMDoKKyAgdmVy
c2lvbiAiMS4wLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2J1
ZmZlci1zaGltcy8tL2J1ZmZlci1zaGltcy0xLjAuMC50Z3ojOTk3OGNlMzE3Mzg4YzY0OWFkODc5
MzAyOGMzNDc3ZWYwNDRhOGI1MSIKKworYnVmZmVyQF40LjkuMDoKKyAgdmVyc2lvbiAiNC45LjEi
CisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2J1ZmZlci8tL2J1ZmZl
ci00LjkuMS50Z3ojNmQxYmI2MDFiMDdhNGVmY2VkOTcwOTQxMzIwOTMwMjdjOTViYzI5OCIKKyAg
ZGVwZW5kZW5jaWVzOgorICAgIGJhc2U2NC1qcyAiXjEuMC4yIgorICAgIGllZWU3NTQgIl4xLjEu
NCIKKyAgICBpc2FycmF5ICJeMS4wLjAiCisKK2J1aWx0aW4tc3RhdHVzLWNvZGVzQF4yLjAuMDoK
KyAgdmVyc2lvbiAiMi4wLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL2J1aWx0aW4tc3RhdHVzLWNvZGVzLy0vYnVpbHRpbi1zdGF0dXMtY29kZXMtMi4wLjAudGd6
IzZmMjIwMDNiYWFjZjAwM2NjZDI4N2FmZTY4NzIxNTFmZGRjNTg1NzkiCisKK2NhbGxlci1wYXRo
QF4wLjEuMDoKKyAgdmVyc2lvbiAiMC4xLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL2NhbGxlci1wYXRoLy0vY2FsbGVyLXBhdGgtMC4xLjAudGd6Izk0MDg1ZWY2
MzU4MWVjZDNkYWE5MjQ0NGE4ZmU5NGU4MjU3Nzc1MWYiCisgIGRlcGVuZGVuY2llczoKKyAgICBj
YWxsc2l0ZXMgIl4wLjIuMCIKKworY2FsbHNpdGVzQF4wLjIuMDoKKyAgdmVyc2lvbiAiMC4yLjAi
CisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NhbGxzaXRlcy8tL2Nh
bGxzaXRlcy0wLjIuMC50Z3ojYWZhYjk2MjYyOTEwYTdmMzNjMTlhNTc3NTgyNWM2OWYzNGUzNTBj
YSIKKworY2FtZWwtY2FzZUAzLjAueDoKKyAgdmVyc2lvbiAiMy4wLjAiCisgIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NhbWVsLWNhc2UvLS9jYW1lbC1jYXNlLTMuMC4w
LnRneiNjYTNjMzY4OGE0ZTljZjNhNGNkYTc3N2RjNGRjYmM3MTMyNDljZjczIgorICBkZXBlbmRl
bmNpZXM6CisgICAgbm8tY2FzZSAiXjIuMi4wIgorICAgIHVwcGVyLWNhc2UgIl4xLjEuMSIKKwor
Y2FtZWxjYXNlQF4xLjAuMjoKKyAgdmVyc2lvbiAiMS4yLjEiCisgIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NhbWVsY2FzZS8tL2NhbWVsY2FzZS0xLjIuMS50Z3ojOWJi
NTMwNGQyZTBiNTY2OThiMmM3NThiMDhhM2VhYTlkYWE1OGEzOSIKKworY2FuaXVzZS1kYkBeMS4w
LjMwMDAwNTM5LCBjYW5pdXNlLWRiQF4xLjAuMzAwMDA1Nzg6CisgIHZlcnNpb24gIjEuMC4zMDAw
MDU5MiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY2FuaXVzZS1k
Yi8tL2Nhbml1c2UtZGItMS4wLjMwMDAwNTkyLnRneiM3YjkxNjAyMzk0MWRmNDA2M2Q5ZDk0NmEx
ZjlhZDBkNWVkYWYyYmNkIgorCitjYXNlbGVzc0B+MC4xMS4wOgorICB2ZXJzaW9uICIwLjExLjAi
CisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Nhc2VsZXNzLy0vY2Fz
ZWxlc3MtMC4xMS4wLnRneiM3MTViOTZlYTk4NDE1OTNjYzMzMDY3OTIzZjVlYzYwZWJkYTRmN2Q3
IgorCitjZW50ZXItYWxpZ25AXjAuMS4xOgorICB2ZXJzaW9uICIwLjEuMyIKKyAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY2VudGVyLWFsaWduLy0vY2VudGVyLWFsaWdu
LTAuMS4zLnRneiNhYTBkMzI2MjliNmVlOTcyMjAwNDExY2JkNDQ2MWM5MDdiYzJiN2FkIgorICBk
ZXBlbmRlbmNpZXM6CisgICAgYWxpZ24tdGV4dCAiXjAuMS4zIgorICAgIGxhenktY2FjaGUgIl4x
LjAuMyIKKworY2hhbGtAXjEuMC4wLCBjaGFsa0BeMS4xLjAsIGNoYWxrQF4xLjEuMSwgY2hhbGtA
XjEuMS4zOgorICB2ZXJzaW9uICIxLjEuMyIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vY2hhbGsvLS9jaGFsay0xLjEuMy50Z3ojYTgxMTVjNTVlNGE3MDJmZTRkMTUw
YWJkMzg3MjgyMmE3ZTA5ZmM5OCIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGFuc2ktc3R5bGVzICJe
Mi4yLjEiCisgICAgZXNjYXBlLXN0cmluZy1yZWdleHAgIl4xLjAuMiIKKyAgICBoYXMtYW5zaSAi
XjIuMC4wIgorICAgIHN0cmlwLWFuc2kgIl4zLjAuMCIKKyAgICBzdXBwb3J0cy1jb2xvciAiXjIu
MC4wIgorCitjaG9raWRhckBeMS4wLjA6CisgIHZlcnNpb24gIjEuNi4xIgorICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jaG9raWRhci8tL2Nob2tpZGFyLTEuNi4xLnRn
eiMyZjQ0NDdhYjVlOTZlNTBmYjNkNzg5ZmQ5MGQ0YzcyZTBlNGM3MGMyIgorICBkZXBlbmRlbmNp
ZXM6CisgICAgYW55bWF0Y2ggIl4xLjMuMCIKKyAgICBhc3luYy1lYWNoICJeMS4wLjAiCisgICAg
Z2xvYi1wYXJlbnQgIl4yLjAuMCIKKyAgICBpbmhlcml0cyAiXjIuMC4xIgorICAgIGlzLWJpbmFy
eS1wYXRoICJeMS4wLjAiCisgICAgaXMtZ2xvYiAiXjIuMC4wIgorICAgIHBhdGgtaXMtYWJzb2x1
dGUgIl4xLjAuMCIKKyAgICByZWFkZGlycCAiXjIuMC4wIgorICBvcHRpb25hbERlcGVuZGVuY2ll
czoKKyAgICBmc2V2ZW50cyAiXjEuMC4wIgorCitjaXJjdWxhci1qc29uQF4wLjMuMDoKKyAgdmVy
c2lvbiAiMC4zLjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Np
cmN1bGFyLWpzb24vLS9jaXJjdWxhci1qc29uLTAuMy4xLnRneiNiZThiMzZhZWZjY2RlOGIzY2E3
YWEyZDZhZmMwN2EzNzI0MmMwZDJkIgorCitjbGFwQF4xLjAuOToKKyAgdmVyc2lvbiAiMS4xLjIi
CisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NsYXAvLS9jbGFwLTEu
MS4yLnRneiMzMTY1NDViZjIyMjI5MjI1YTJjZWNhYTY4MjRjZDJmNTZhOTcwOWVkIgorICBkZXBl
bmRlbmNpZXM6CisgICAgY2hhbGsgIl4xLjEuMyIKKworY2xlYW4tY3NzQDMuNC54OgorICB2ZXJz
aW9uICIzLjQuMjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Ns
ZWFuLWNzcy8tL2NsZWFuLWNzcy0zLjQuMjEudGd6IzIxMDFkNWRiZDE5ZDYzZGJjMTZhNzVlYmQ1
NzBlN2MzMzk0OGY2NWIiCisgIGRlcGVuZGVuY2llczoKKyAgICBjb21tYW5kZXIgIjIuOC54Igor
ICAgIHNvdXJjZS1tYXAgIjAuNC54IgorCitjbGktY3Vyc29yQF4xLjAuMSwgY2xpLWN1cnNvckBe
MS4wLjI6CisgIHZlcnNpb24gIjEuMC4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9jbGktY3Vyc29yLy0vY2xpLWN1cnNvci0xLjAuMi50Z3ojNjRkYTNmN2Q1NmE1
NDQxMmU1OTc5NGJkNjJkYzM1Mjk1ZThmMjk4NyIKKyAgZGVwZW5kZW5jaWVzOgorICAgIHJlc3Rv
cmUtY3Vyc29yICJeMS4wLjEiCisKK2NsaS1zcGlubmVyc0BeMC4yLjA6CisgIHZlcnNpb24gIjAu
Mi4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jbGktc3Bpbm5l
cnMvLS9jbGktc3Bpbm5lcnMtMC4yLjAudGd6Izg1MDc4NzM3OTEzYjg4MGY2ZWM5ZmZlN2I2NWU4
M2VjNzc3NjI4NGYiCisKK2NsaS13aWR0aEBeMi4wLjA6CisgIHZlcnNpb24gIjIuMS4wIgorICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jbGktd2lkdGgvLS9jbGktd2lk
dGgtMi4xLjAudGd6I2IyMzRjYTIwOWIyOWVmNjZmYzUxOGQ5Yjk4ZDU4NDdiMDBlZGYwMGEiCisK
K2NsaXVpQF4yLjEuMDoKKyAgdmVyc2lvbiAiMi4xLjAiCisgIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL2NsaXVpLy0vY2xpdWktMi4xLjAudGd6IzRiNDc1NzYwZmY4MDI2
NGM3NjJjM2ExNzE5MDMyZTkxYzdmZWEwZDEiCisgIGRlcGVuZGVuY2llczoKKyAgICBjZW50ZXIt
YWxpZ24gIl4wLjEuMSIKKyAgICByaWdodC1hbGlnbiAiXjAuMS4xIgorICAgIHdvcmR3cmFwICIw
LjAuMiIKKworY2xvbmVAXjEuMC4yOgorICB2ZXJzaW9uICIxLjAuMiIKKyAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY2xvbmUvLS9jbG9uZS0xLjAuMi50Z3ojMjYwYjdh
OTllYmIxZWRmZTI0NzUzODE3NWY3ODMyNDNjYjE5ZDE0OSIKKworY29AXjQuNi4wOgorICB2ZXJz
aW9uICI0LjYuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY28v
LS9jby00LjYuMC50Z3ojNmVhNmJkZjNkODUzYWU1NGNjYjhlNDdiZmEwYmYzZjkwMzFmYjE4NCIK
KworY29hQH4xLjAuMToKKyAgdmVyc2lvbiAiMS4wLjEiCisgIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL2NvYS8tL2NvYS0xLjAuMS50Z3ojN2Y5NTkzNDZjZmM4NzE5ZTNm
NzIzM2NkNjg1Mjg1NGE3YzY3ZDhhMyIKKyAgZGVwZW5kZW5jaWVzOgorICAgIHEgIl4xLjEuMiIK
KworY29kZS1wb2ludC1hdEBeMS4wLjA6CisgIHZlcnNpb24gIjEuMS4wIgorICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jb2RlLXBvaW50LWF0Ly0vY29kZS1wb2ludC1h
dC0xLjEuMC50Z3ojMGQwNzBiNGQwNDNhNWJlYTMzYTJmMWE0MGUyZWRiM2Q5YTRjY2Y3NyIKKwor
Y29sb3ItY29udmVydEBeMS4zLjA6CisgIHZlcnNpb24gIjEuOC4yIgorICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jb2xvci1jb252ZXJ0Ly0vY29sb3ItY29udmVydC0x
LjguMi50Z3ojYmU4NjgxODRkN2M4NjMxNzY2ZDU0ZTcwNzhlMjY3MmQ3YzdlMzMzOSIKKyAgZGVw
ZW5kZW5jaWVzOgorICAgIGNvbG9yLW5hbWUgIl4xLjEuMSIKKworY29sb3ItbmFtZUBeMS4wLjAs
IGNvbG9yLW5hbWVAXjEuMS4xOgorICB2ZXJzaW9uICIxLjEuMSIKKyAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vY29sb3ItbmFtZS8tL2NvbG9yLW5hbWUtMS4xLjEudGd6
IzRiMTQxNTMwNGNmNTAwMjhlYTgxNjQzNjQzYmQ4MmVhMDU4MDM2ODkiCisKK2NvbG9yLXN0cmlu
Z0BeMC4zLjA6CisgIHZlcnNpb24gIjAuMy4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9jb2xvci1zdHJpbmcvLS9jb2xvci1zdHJpbmctMC4zLjAudGd6IzI3ZDQ2
ZmI2NzAyNWM1YzJmYTI1OTkzYmZiZjU3OWU0Nzg0MWI5OTEiCisgIGRlcGVuZGVuY2llczoKKyAg
ICBjb2xvci1uYW1lICJeMS4wLjAiCisKK2NvbG9yQF4wLjExLjA6CisgIHZlcnNpb24gIjAuMTEu
NCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY29sb3IvLS9jb2xv
ci0wLjExLjQudGd6IzZkN2I1Yzc0ZmI2NWU4NDFjZDQ4NzkyYWQxZWQ1ZTA3YjkwNGQ3NjQiCisg
IGRlcGVuZGVuY2llczoKKyAgICBjbG9uZSAiXjEuMC4yIgorICAgIGNvbG9yLWNvbnZlcnQgIl4x
LjMuMCIKKyAgICBjb2xvci1zdHJpbmcgIl4wLjMuMCIKKworY29sb3JtaW5AXjEuMC41OgorICB2
ZXJzaW9uICIxLjEuMiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
Y29sb3JtaW4vLS9jb2xvcm1pbi0xLjEuMi50Z3ojZWEyZjc0MjBhNzJiOTY4ODFhMzhhYWU1OWVj
MTI0YTZmNzI5ODEzMyIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGNvbG9yICJeMC4xMS4wIgorICAg
IGNzcy1jb2xvci1uYW1lcyAiMC4wLjQiCisgICAgaGFzICJeMS4wLjEiCisKK2NvbG9yc0B+MS4x
LjI6CisgIHZlcnNpb24gIjEuMS4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9jb2xvcnMvLS9jb2xvcnMtMS4xLjIudGd6IzE2OGE0NzAxNzU2YjZhN2Y1MWExMmNl
MGM5N2JmYTI4YzA4NGVkNjMiCisKK2NvbWJpbmVkLXN0cmVhbUBeMS4wLjUsIGNvbWJpbmVkLXN0
cmVhbUB+MS4wLjU6CisgIHZlcnNpb24gIjEuMC41IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9jb21iaW5lZC1zdHJlYW0vLS9jb21iaW5lZC1zdHJlYW0tMS4wLjUu
dGd6IzkzODM3MGE1N2I0YTUxZGVhMmM3N2MxNWQ1YzVmZGY4OTUxNjQwMDkiCisgIGRlcGVuZGVu
Y2llczoKKyAgICBkZWxheWVkLXN0cmVhbSAifjEuMC4wIgorCitjb21tYW5kZXJAXjIuOS4wLCBj
b21tYW5kZXJAMi45Lng6CisgIHZlcnNpb24gIjIuOS4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9jb21tYW5kZXIvLS9jb21tYW5kZXItMi45LjAudGd6IzljOTkw
OTQxNzZlMTIyNDBjYjIyZDZjNTE0NjA5ODQwMGZlMGY3ZDQiCisgIGRlcGVuZGVuY2llczoKKyAg
ICBncmFjZWZ1bC1yZWFkbGluayAiPj0gMS4wLjAiCisKK2NvbW1hbmRlckAyLjgueDoKKyAgdmVy
c2lvbiAiMi44LjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Nv
bW1hbmRlci8tL2NvbW1hbmRlci0yLjguMS50Z3ojMDZiZTM2N2ZlYmZkYTBjMzMwYWExZTJhMDcy
ZDNkYzk3NjI0MjVkNCIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGdyYWNlZnVsLXJlYWRsaW5rICI+
PSAxLjAuMCIKKworY29tbW9uZGlyQF4xLjAuMToKKyAgdmVyc2lvbiAiMS4wLjEiCisgIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NvbW1vbmRpci8tL2NvbW1vbmRpci0x
LjAuMS50Z3ojZGRkODAwZGEwYzY2MTI3MzkzY2NhNTk1MGVhOTY4YTNhYWYxMjUzYiIKKworY29u
Y2F0LW1hcEAwLjAuMToKKyAgdmVyc2lvbiAiMC4wLjEiCisgIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL2NvbmNhdC1tYXAvLS9jb25jYXQtbWFwLTAuMC4xLnRneiNkOGE5
NmJkNzdmZDY4ZGY3NzkzYTczMDM2YTNiYTBkNTQwNWQ0NzdiIgorCitjb25jYXQtc3RyZWFtQF4x
LjQuNjoKKyAgdmVyc2lvbiAiMS41LjIiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL2NvbmNhdC1zdHJlYW0vLS9jb25jYXQtc3RyZWFtLTEuNS4yLnRneiM3MDg5Nzg2
MjRkODU2YWY0MWE1YTc0MWRlZmRkMjYxZGE3NTJjMjY2IgorICBkZXBlbmRlbmNpZXM6CisgICAg
aW5oZXJpdHMgIn4yLjAuMSIKKyAgICByZWFkYWJsZS1zdHJlYW0gIn4yLjAuMCIKKyAgICB0eXBl
ZGFycmF5ICJ+MC4wLjUiCisKK2NvbmZpZy1jaGFpbkB+MS4xLjU6CisgIHZlcnNpb24gIjEuMS4x
MSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY29uZmlnLWNoYWlu
Ly0vY29uZmlnLWNoYWluLTEuMS4xMS50Z3ojYWJhMDk3NDdkZmJlNGMzZTcwZTc2NmE2ZTQxNTg2
ZTE4NTlmYzZmMiIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGluaSAiXjEuMy40IgorICAgIHByb3Rv
LWxpc3QgIn4xLjIuMSIKKworY29ubmVjdC1oaXN0b3J5LWFwaS1mYWxsYmFja0BeMS4xLjA6Cisg
IHZlcnNpb24gIjEuMy4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9jb25uZWN0LWhpc3RvcnktYXBpLWZhbGxiYWNrLy0vY29ubmVjdC1oaXN0b3J5LWFwaS1mYWxs
YmFjay0xLjMuMC50Z3ojZTUxZDE3ZjhmMGVmMGRiOTBhNjRmZGI0N2RlMzA1MTU1NmU5ZjE2OSIK
KworY29uc29sZS1icm93c2VyaWZ5QF4xLjEuMDoKKyAgdmVyc2lvbiAiMS4xLjAiCisgIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NvbnNvbGUtYnJvd3NlcmlmeS8tL2Nv
bnNvbGUtYnJvd3NlcmlmeS0xLjEuMC50Z3ojZjAyNDFjNDU3MzBhOWZjNjMyM2IyMDZkYmYzOGVk
Yzc0MWQwYmIxMCIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGRhdGUtbm93ICJeMC4xLjQiCisKK2Nv
bnNvbGUtY29udHJvbC1zdHJpbmdzQF4xLjAuMCwgY29uc29sZS1jb250cm9sLXN0cmluZ3NAfjEu
MS4wOgorICB2ZXJzaW9uICIxLjEuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vY29uc29sZS1jb250cm9sLXN0cmluZ3MvLS9jb25zb2xlLWNvbnRyb2wtc3RyaW5n
cy0xLjEuMC50Z3ojM2Q3Y2Y0NDY0ZGI2NDQ2ZWE2NDRiZjRiMzk1MDdmOTg1MTAwOGU4ZSIKKwor
Y29uc29saWRhdGVAXjAuMTQuMDoKKyAgdmVyc2lvbiAiMC4xNC41IgorICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jb25zb2xpZGF0ZS8tL2NvbnNvbGlkYXRlLTAuMTQu
NS50Z3ojNWEyNTA0N2JjNzZmNzMwNzI2NjdjOGNiNTJjOTg5ODg4ZjQ5NGM2MyIKKyAgZGVwZW5k
ZW5jaWVzOgorICAgIGJsdWViaXJkICJeMy4xLjEiCisKK2NvbnN0YW50cy1icm93c2VyaWZ5QF4x
LjAuMDoKKyAgdmVyc2lvbiAiMS4wLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL2NvbnN0YW50cy1icm93c2VyaWZ5Ly0vY29uc3RhbnRzLWJyb3dzZXJpZnktMS4w
LjAudGd6I2MyMGI5NmQ4YzYxNzc0OGFhZjFjMTYwMjE3NjBjZDI3ZmNiOGNiNzUiCisKK2NvbnRl
bnQtZGlzcG9zaXRpb25AMC41LjE6CisgIHZlcnNpb24gIjAuNS4xIgorICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jb250ZW50LWRpc3Bvc2l0aW9uLy0vY29udGVudC1k
aXNwb3NpdGlvbi0wLjUuMS50Z3ojODc0NzZjNmE2N2M4ZGFhODdlMzJlODc2MTZkZjg4M2JhN2Zi
MDcxYiIKKworY29udGVudC10eXBlQH4xLjAuMjoKKyAgdmVyc2lvbiAiMS4wLjIiCisgIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NvbnRlbnQtdHlwZS8tL2NvbnRlbnQt
dHlwZS0xLjAuMi50Z3ojYjdkMTEzYWVlN2E4ZGQyN2JkMjExMzNjNGRjMjUyOWRmMTcyMWVlZCIK
KworY29udmVydC1zb3VyY2UtbWFwQF4xLjEuMDoKKyAgdmVyc2lvbiAiMS4zLjAiCisgIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NvbnZlcnQtc291cmNlLW1hcC8tL2Nv
bnZlcnQtc291cmNlLW1hcC0xLjMuMC50Z3ojZTlmM2U5YzZlMjcyOGVmYzI2NzY2OTZhNzBlYjM4
MmY3MzEwNmE2NyIKKworY29va2llLXNpZ25hdHVyZUAxLjAuNjoKKyAgdmVyc2lvbiAiMS4wLjYi
CisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Nvb2tpZS1zaWduYXR1
cmUvLS9jb29raWUtc2lnbmF0dXJlLTEuMC42LnRneiNlMzAzYTg4MmIzNDJjYzNlZThjYTUxM2E3
OTk5OTczNGRhYjNhZTJjIgorCitjb29raWVAMC4zLjE6CisgIHZlcnNpb24gIjAuMy4xIgorICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jb29raWUvLS9jb29raWUtMC4z
LjEudGd6I2U3ZTBhMWY5ZWY0M2I0YzhiYTkyNWM1YzVhOTZlODA2ZDE2ODczYmIiCisKK2NvcmUt
anNAXjIuNC4wOgorICB2ZXJzaW9uICIyLjQuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vY29yZS1qcy8tL2NvcmUtanMtMi40LjEudGd6IzRkZTkxMWU2NjdiMGVh
ZTkxMjRlMzQyNTRiNTNhZWE2ZmM2MThkM2UiCisKK2NvcmUtdXRpbC1pc0B+MS4wLjA6CisgIHZl
cnNpb24gIjEuMC4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9j
b3JlLXV0aWwtaXMvLS9jb3JlLXV0aWwtaXMtMS4wLjIudGd6I2I1ZmQ1NDIyMGFhMmJjNWFiNTdh
YWI3MTQwYzk0MDc1NDUwM2MxYTciCisKK2NyeXB0aWxlc0AyLngueDoKKyAgdmVyc2lvbiAiMi4w
LjUiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NyeXB0aWxlcy8t
L2NyeXB0aWxlcy0yLjAuNS50Z3ojM2JkZmVjZGM2MDgxNDdjMWM2NzIwMmZhMjkxZTdkY2E1OWVh
YTNiOCIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGJvb20gIjIueC54IgorCitjcnlwdG8tYnJvd3Nl
cmlmeUAzLjMuMDoKKyAgdmVyc2lvbiAiMy4zLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL2NyeXB0by1icm93c2VyaWZ5Ly0vY3J5cHRvLWJyb3dzZXJpZnktMy4z
LjAudGd6I2I5ZmM3NWJiNGEwZWQ2MWRjZjFjZDVkYWU5NmViMzBjOWMzZTUwNmMiCisgIGRlcGVu
ZGVuY2llczoKKyAgICBicm93c2VyaWZ5LWFlcyAiMC40LjAiCisgICAgcGJrZGYyLWNvbXBhdCAi
Mi4wLjEiCisgICAgcmlwZW1kMTYwICIwLjIuMCIKKyAgICBzaGEuanMgIjIuMi42IgorCitjc3Mt
Y29sb3ItbmFtZXNAMC4wLjQ6CisgIHZlcnNpb24gIjAuMC40IgorICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jc3MtY29sb3ItbmFtZXMvLS9jc3MtY29sb3ItbmFtZXMt
MC4wLjQudGd6IzgwOGFkYzJlNzljZjg0NzM4MDY5YjY0NmNiMjBlYzI3YmViNjI5ZTAiCisKK2Nz
cy1sb2FkZXJAXjAuMjUuMDoKKyAgdmVyc2lvbiAiMC4yNS4wIgorICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jc3MtbG9hZGVyLy0vY3NzLWxvYWRlci0wLjI1LjAudGd6
I2MzZmViYzhjZTI4ZjRjODM1NzZiNmIxMzcwN2Y0N2Y5MGMzOTAyMjMiCisgIGRlcGVuZGVuY2ll
czoKKyAgICBiYWJlbC1jb2RlLWZyYW1lICJeNi4xMS4wIgorICAgIGNzcy1zZWxlY3Rvci10b2tl
bml6ZXIgIl4wLjYuMCIKKyAgICBjc3NuYW5vICI+PTIuNi4xIDw0IgorICAgIGxvYWRlci11dGls
cyAifjAuMi4yIgorICAgIGxvZGFzaC5jYW1lbGNhc2UgIl4zLjAuMSIKKyAgICBvYmplY3QtYXNz
aWduICJeNC4wLjEiCisgICAgcG9zdGNzcyAiXjUuMC42IgorICAgIHBvc3Rjc3MtbW9kdWxlcy1l
eHRyYWN0LWltcG9ydHMgIl4xLjAuMCIKKyAgICBwb3N0Y3NzLW1vZHVsZXMtbG9jYWwtYnktZGVm
YXVsdCAiXjEuMC4xIgorICAgIHBvc3Rjc3MtbW9kdWxlcy1zY29wZSAiXjEuMC4wIgorICAgIHBv
c3Rjc3MtbW9kdWxlcy12YWx1ZXMgIl4xLjEuMCIKKyAgICBzb3VyY2UtbGlzdC1tYXAgIl4wLjEu
NCIKKworY3NzLXNlbGVjdEBeMS4xLjA6CisgIHZlcnNpb24gIjEuMi4wIgorICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jc3Mtc2VsZWN0Ly0vY3NzLXNlbGVjdC0xLjIu
MC50Z3ojMmIzYTExMDUzOWM1MzU1ZjFjZDhkMzE0NjIzZTg3MGIxMjFlYzg1OCIKKyAgZGVwZW5k
ZW5jaWVzOgorICAgIGJvb2xiYXNlICJ+MS4wLjAiCisgICAgY3NzLXdoYXQgIjIuMSIKKyAgICBk
b211dGlscyAiMS41LjEiCisgICAgbnRoLWNoZWNrICJ+MS4wLjEiCisKK2Nzcy1zZWxlY3Rvci10
b2tlbml6ZXJAXjAuNi4wOgorICB2ZXJzaW9uICIwLjYuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vY3NzLXNlbGVjdG9yLXRva2VuaXplci8tL2Nzcy1zZWxlY3Rv
ci10b2tlbml6ZXItMC42LjAudGd6IzY0NDVmNTgyYzc5MzBkMjQxZGNjNTAwN2E0M2Q2ZmNiOGYw
NzMxNTIiCisgIGRlcGVuZGVuY2llczoKKyAgICBjc3Nlc2MgIl4wLjEuMCIKKyAgICBmYXN0cGFy
c2UgIl4xLjEuMSIKKyAgICByZWdleHB1LWNvcmUgIl4xLjAuMCIKKworY3NzLXdoYXRAMi4xOgor
ICB2ZXJzaW9uICIyLjEuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vY3NzLXdoYXQvLS9jc3Mtd2hhdC0yLjEuMC50Z3ojOTQ2N2QwMzJjMzhjZmFlZmI5ZjJkNzk1
MDEyNTMwNjJmODdmYTFiZCIKKworY3NzZXNjQF4wLjEuMDoKKyAgdmVyc2lvbiAiMC4xLjAiCisg
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Nzc2VzYy8tL2Nzc2VzYy0w
LjEuMC50Z3ojYzgxNDkwM2U0NTYyMzM3MWEwNDc3YjQwMTA5YWFhZmJlZWFkZGJiNCIKKworImNz
c25hbm9APj0yLjYuMSA8NCI6CisgIHZlcnNpb24gIjMuOC4xIgorICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jc3NuYW5vLy0vY3NzbmFuby0zLjguMS50Z3ojMDA4YTQ4
MjE0OGVlOTQ4Y2YwYWYyZWU2ZTQ0YmQ5N2M1M2Y4ODZlYyIKKyAgZGVwZW5kZW5jaWVzOgorICAg
IGF1dG9wcmVmaXhlciAiXjYuMy4xIgorICAgIGRlY2FtZWxpemUgIl4xLjEuMiIKKyAgICBkZWZp
bmVkICJeMS4wLjAiCisgICAgaGFzICJeMS4wLjEiCisgICAgb2JqZWN0LWFzc2lnbiAiXjQuMC4x
IgorICAgIHBvc3Rjc3MgIl41LjAuMTQiCisgICAgcG9zdGNzcy1jYWxjICJeNS4yLjAiCisgICAg
cG9zdGNzcy1jb2xvcm1pbiAiXjIuMS44IgorICAgIHBvc3Rjc3MtY29udmVydC12YWx1ZXMgIl4y
LjMuNCIKKyAgICBwb3N0Y3NzLWRpc2NhcmQtY29tbWVudHMgIl4yLjAuNCIKKyAgICBwb3N0Y3Nz
LWRpc2NhcmQtZHVwbGljYXRlcyAiXjIuMC4xIgorICAgIHBvc3Rjc3MtZGlzY2FyZC1lbXB0eSAi
XjIuMC4xIgorICAgIHBvc3Rjc3MtZGlzY2FyZC1vdmVycmlkZGVuICJeMC4xLjEiCisgICAgcG9z
dGNzcy1kaXNjYXJkLXVudXNlZCAiXjIuMi4xIgorICAgIHBvc3Rjc3MtZmlsdGVyLXBsdWdpbnMg
Il4yLjAuMCIKKyAgICBwb3N0Y3NzLW1lcmdlLWlkZW50cyAiXjIuMS41IgorICAgIHBvc3Rjc3Mt
bWVyZ2UtbG9uZ2hhbmQgIl4yLjAuMSIKKyAgICBwb3N0Y3NzLW1lcmdlLXJ1bGVzICJeMi4wLjMi
CisgICAgcG9zdGNzcy1taW5pZnktZm9udC12YWx1ZXMgIl4xLjAuMiIKKyAgICBwb3N0Y3NzLW1p
bmlmeS1ncmFkaWVudHMgIl4xLjAuMSIKKyAgICBwb3N0Y3NzLW1pbmlmeS1wYXJhbXMgIl4xLjAu
NCIKKyAgICBwb3N0Y3NzLW1pbmlmeS1zZWxlY3RvcnMgIl4yLjAuNCIKKyAgICBwb3N0Y3NzLW5v
cm1hbGl6ZS1jaGFyc2V0ICJeMS4xLjAiCisgICAgcG9zdGNzcy1ub3JtYWxpemUtdXJsICJeMy4w
LjciCisgICAgcG9zdGNzcy1vcmRlcmVkLXZhbHVlcyAiXjIuMS4wIgorICAgIHBvc3Rjc3MtcmVk
dWNlLWlkZW50cyAiXjIuMi4yIgorICAgIHBvc3Rjc3MtcmVkdWNlLWluaXRpYWwgIl4xLjAuMCIK
KyAgICBwb3N0Y3NzLXJlZHVjZS10cmFuc2Zvcm1zICJeMS4wLjMiCisgICAgcG9zdGNzcy1zdmdv
ICJeMi4xLjEiCisgICAgcG9zdGNzcy11bmlxdWUtc2VsZWN0b3JzICJeMi4wLjIiCisgICAgcG9z
dGNzcy12YWx1ZS1wYXJzZXIgIl4zLjIuMyIKKyAgICBwb3N0Y3NzLXppbmRleCAiXjIuMC4xIgor
Citjc3NvQH4yLjIuMToKKyAgdmVyc2lvbiAiMi4yLjEiCisgIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL2Nzc28vLS9jc3NvLTIuMi4xLnRneiM1MWZiYjUzNDdlNTBlODFl
NmVkNTE2NjhhNDg0OTBhZTZmZTJhZmUyIgorICBkZXBlbmRlbmNpZXM6CisgICAgY2xhcCAiXjEu
MC45IgorICAgIHNvdXJjZS1tYXAgIl4wLjUuMyIKKworZEBeMC4xLjEsIGRAfjAuMS4xOgorICB2
ZXJzaW9uICIwLjEuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
ZC8tL2QtMC4xLjEudGd6I2RhMTg0YzUzNWQxOGQ4ZWU3YmEyYWEyMjliOTE0MDA5ZmFlMTEzMDki
CisgIGRlcGVuZGVuY2llczoKKyAgICBlczUtZXh0ICJ+MC4xMC4yIgorCitkYXNoZGFzaEBeMS4x
Mi4wOgorICB2ZXJzaW9uICIxLjE0LjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL2Rhc2hkYXNoLy0vZGFzaGRhc2gtMS4xNC4xLnRneiM4NTNjZmEwZjdjYmUyZmVk
NWRlMjAzMjZiOGRkNTgxMDM1ZjZlMmYwIgorICBkZXBlbmRlbmNpZXM6CisgICAgYXNzZXJ0LXBs
dXMgIl4xLjAuMCIKKworZGF0ZS1ub3dAXjAuMS40OgorICB2ZXJzaW9uICIwLjEuNCIKKyAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZGF0ZS1ub3cvLS9kYXRlLW5vdy0w
LjEuNC50Z3ojZWFmNDM5ZmQ0ZDQ4NDhhZDc0ZTVjYzdkYmVmMjAwNjcyYjllMzQ1YiIKKworZGUt
aW5kZW50QF4xLjAuMjoKKyAgdmVyc2lvbiAiMS4wLjIiCisgIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL2RlLWluZGVudC8tL2RlLWluZGVudC0xLjAuMi50Z3ojYjIwMzhl
ODQ2ZGMzM2JhYTU3OTYxMjhkMDgwNGI0NTViOGMxZTIxZCIKKworZGVidWdAXjIuMS4xLCBkZWJ1
Z0BeMi4yLjA6CisgIHZlcnNpb24gIjIuMy4zIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9kZWJ1Zy8tL2RlYnVnLTIuMy4zLnRneiM0MGM0NTNlNjdlNmUxM2M5MDFk
ZGVjMzE3YWY4OTg2Y2RhOWVmZjhjIgorICBkZXBlbmRlbmNpZXM6CisgICAgbXMgIjAuNy4yIgor
CitkZWJ1Z0B+Mi4yLjA6CisgIHZlcnNpb24gIjIuMi4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9kZWJ1Zy8tL2RlYnVnLTIuMi4wLnRneiNmODcwNTdlOTk1YjFh
MWY2YWU2YTQ5NjA2NjQxMzdiYzU2ZjAzOWRhIgorICBkZXBlbmRlbmNpZXM6CisgICAgbXMgIjAu
Ny4xIgorCitkZWNhbWVsaXplQF4xLjAuMCwgZGVjYW1lbGl6ZUBeMS4xLjI6CisgIHZlcnNpb24g
IjEuMi4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9kZWNhbWVs
aXplLy0vZGVjYW1lbGl6ZS0xLjIuMC50Z3ojZjY1MzRkMTUxNDgyNjliMjAzNTJlN2JlZTI2ZjUw
MWY5YTE5MTI5MCIKKworZGVlcC1leHRlbmRAfjAuNC4wOgorICB2ZXJzaW9uICIwLjQuMSIKKyAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZGVlcC1leHRlbmQvLS9kZWVw
LWV4dGVuZC0wLjQuMS50Z3ojZWZlNDExM2QwODA4NWY0ZTZmOTY4Nzc1OTgxMGY4MDc0NjllMjI1
MyIKKworZGVlcC1pc0B+MC4xLjM6CisgIHZlcnNpb24gIjAuMS4zIgorICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9kZWVwLWlzLy0vZGVlcC1pcy0wLjEuMy50Z3ojYjM2
OWQ2ZmI1ZGJjMTNlZWNmNTI0ZjkxYjA3MGZlZWRjMzU3Y2YzNCIKKworZGVmaW5lZEBeMS4wLjA6
CisgIHZlcnNpb24gIjEuMC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9kZWZpbmVkLy0vZGVmaW5lZC0xLjAuMC50Z3ojYzk4ZDliY2VmNzU2NzQxODhlMTEwOTY5
MTUxMTk5ZTM5YjFmYTY5MyIKKworZGVsQF4yLjAuMjoKKyAgdmVyc2lvbiAiMi4yLjIiCisgIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2RlbC8tL2RlbC0yLjIuMi50Z3oj
YzEyYzk4MWQwNjc4NDZjODRiY2FmODYyY2ZmOTMwZDkwN2ZmZDFhOCIKKyAgZGVwZW5kZW5jaWVz
OgorICAgIGdsb2JieSAiXjUuMC4wIgorICAgIGlzLXBhdGgtY3dkICJeMS4wLjAiCisgICAgaXMt
cGF0aC1pbi1jd2QgIl4xLjAuMCIKKyAgICBvYmplY3QtYXNzaWduICJeNC4wLjEiCisgICAgcGlm
eSAiXjIuMC4wIgorICAgIHBpbmtpZS1wcm9taXNlICJeMi4wLjAiCisgICAgcmltcmFmICJeMi4y
LjgiCisKK2RlbGF5ZWQtc3RyZWFtQH4xLjAuMDoKKyAgdmVyc2lvbiAiMS4wLjAiCisgIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2RlbGF5ZWQtc3RyZWFtLy0vZGVsYXll
ZC1zdHJlYW0tMS4wLjAudGd6I2RmM2FlMTk5YWNhZGZiN2Q0NDBhYWFlMGIyOWUyMjcyYjI0ZWM2
MTkiCisKK2RlbGVnYXRlc0BeMS4wLjA6CisgIHZlcnNpb24gIjEuMC4wIgorICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9kZWxlZ2F0ZXMvLS9kZWxlZ2F0ZXMtMS4wLjAu
dGd6Izg0YzZlMTU5YjgxOTA0ZmRjYTU5YTBlZjQ0Y2Q4NzBkMzEyNTBmOWEiCisKK2RlcGRAfjEu
MS4wOgorICB2ZXJzaW9uICIxLjEuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vZGVwZC8tL2RlcGQtMS4xLjAudGd6I2UxYmQ4MmM2YWFiNmNlZDk2NWI5N2I4OGIx
N2VkM2U1MjhjYTE4YzMiCisKK2Rlc3Ryb3lAfjEuMC40OgorICB2ZXJzaW9uICIxLjAuNCIKKyAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZGVzdHJveS8tL2Rlc3Ryb3kt
MS4wLjQudGd6Izk3ODg1NzQ0MmM0NDc0OWU0MjA2NjEzZTM3OTQ2MjA1ODI2YWJkODAiCisKK2Rl
dGVjdC1pbmRlbnRAXjQuMC4wOgorICB2ZXJzaW9uICI0LjAuMCIKKyAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vZGV0ZWN0LWluZGVudC8tL2RldGVjdC1pbmRlbnQtNC4w
LjAudGd6I2Y3NmQwNjQzNTJjZGY0M2ExY2I2Y2U2MTljNGVlM2E5NDc1ZGUyMDgiCisgIGRlcGVu
ZGVuY2llczoKKyAgICByZXBlYXRpbmcgIl4yLjAuMCIKKworZGlyZWN0b3JAXjEuMi44OgorICB2
ZXJzaW9uICIxLjIuOCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
ZGlyZWN0b3IvLS9kaXJlY3Rvci0xLjIuOC50Z3ojYzZkOWI0ZGQ4OTBlOWFmZjUzNjUxODNmZTlj
YzhlNzM5OTRjZjJkNSIKKworZG9jdHJpbmVAXjEuMi4yOgorICB2ZXJzaW9uICIxLjUuMCIKKyAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZG9jdHJpbmUvLS9kb2N0cmlu
ZS0xLjUuMC50Z3ojMzc5ZGNlNzMwZjYxNjZmNzZjZWZhNGU2NzA3YTE1OWIwMmM1YTZmYSIKKyAg
ZGVwZW5kZW5jaWVzOgorICAgIGVzdXRpbHMgIl4yLjAuMiIKKyAgICBpc2FycmF5ICJeMS4wLjAi
CisKK2RvbS1jb252ZXJ0ZXJAfjAuMToKKyAgdmVyc2lvbiAiMC4xLjQiCisgIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2RvbS1jb252ZXJ0ZXIvLS9kb20tY29udmVydGVy
LTAuMS40LnRneiNhNDVlZjU3MjdiODkwYzliZmZlNmQ3Yzg3NmU3YjE5Y2IwZTE3ZjNiIgorICBk
ZXBlbmRlbmNpZXM6CisgICAgdXRpbGEgIn4wLjMiCisKK2RvbS1zZXJpYWxpemVyQDA6CisgIHZl
cnNpb24gIjAuMS4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9k
b20tc2VyaWFsaXplci8tL2RvbS1zZXJpYWxpemVyLTAuMS4wLnRneiMwNzNjNjk3NTQ2Y2UwNzgw
Y2UyM2JlNGEyOGUyOTNlNDBiYzMwYzgyIgorICBkZXBlbmRlbmNpZXM6CisgICAgZG9tZWxlbWVu
dHR5cGUgIn4xLjEuMSIKKyAgICBlbnRpdGllcyAifjEuMS4xIgorCitkb21haW4tYnJvd3NlckBe
MS4xLjE6CisgIHZlcnNpb24gIjEuMS43IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9kb21haW4tYnJvd3Nlci8tL2RvbWFpbi1icm93c2VyLTEuMS43LnRneiM4Njdh
YTRiMDkzZmFhMDVmMWRlMDhjMDZmNGQ3YjIxZmRmODY5OGJjIgorCitkb21lbGVtZW50dHlwZUBe
MS4zLjAsIGRvbWVsZW1lbnR0eXBlQDE6CisgIHZlcnNpb24gIjEuMy4wIgorICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9kb21lbGVtZW50dHlwZS8tL2RvbWVsZW1lbnR0
eXBlLTEuMy4wLnRneiNiMTdhZWQ4MmU4YWI1OWU1MmRkOWMxOWIxNzU2ZTBmYzE4NzIwNGMyIgor
Citkb21lbGVtZW50dHlwZUB+MS4xLjE6CisgIHZlcnNpb24gIjEuMS4zIgorICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9kb21lbGVtZW50dHlwZS8tL2RvbWVsZW1lbnR0
eXBlLTEuMS4zLnRneiNiZDI4NzczZTI2NDI4ODFhZWM1MTU0NDkyNDI5OWM1Y2Q4MjIxODViIgor
Citkb21oYW5kbGVyQF4yLjMuMDoKKyAgdmVyc2lvbiAiMi4zLjAiCisgIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2RvbWhhbmRsZXIvLS9kb21oYW5kbGVyLTIuMy4wLnRn
eiMyZGU1OWEwODIyZDUwMjdmYWJmZjZmMDMyYzJiMjVhMmE4YWJlNzM4IgorICBkZXBlbmRlbmNp
ZXM6CisgICAgZG9tZWxlbWVudHR5cGUgIjEiCisKK2RvbWhhbmRsZXJAMi4xOgorICB2ZXJzaW9u
ICIyLjEuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZG9taGFu
ZGxlci8tL2RvbWhhbmRsZXItMi4xLjAudGd6I2QyNjQ2ZjVlNTdmNmMzYmFiMTFjZjZjYjA1ZDNj
MGFjZjc0MTI1OTQiCisgIGRlcGVuZGVuY2llczoKKyAgICBkb21lbGVtZW50dHlwZSAiMSIKKwor
ZG9tdXRpbHNAXjEuNS4xLCBkb211dGlsc0AxLjUuMToKKyAgdmVyc2lvbiAiMS41LjEiCisgIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2RvbXV0aWxzLy0vZG9tdXRpbHMt
MS41LjEudGd6I2RjZDg0ODhhMjZmNTYzZDYxMDc5ZTQ4YzlmN2I3ZTMyMzczNjgyY2YiCisgIGRl
cGVuZGVuY2llczoKKyAgICBkb20tc2VyaWFsaXplciAiMCIKKyAgICBkb21lbGVtZW50dHlwZSAi
MSIKKworZG9tdXRpbHNAMS4xOgorICB2ZXJzaW9uICIxLjEuNiIKKyAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vZG9tdXRpbHMvLS9kb211dGlscy0xLjEuNi50Z3ojYmRk
YzNkZTA5OWI5YTJlZmFjYzUxYzYyM2YyOGY0MTZlY2M1NzQ4NSIKKyAgZGVwZW5kZW5jaWVzOgor
ICAgIGRvbWVsZW1lbnR0eXBlICIxIgorCitlY2MtanNibkB+MC4xLjE6CisgIHZlcnNpb24gIjAu
MS4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9lY2MtanNibi8t
L2VjYy1qc2JuLTAuMS4xLnRneiMwZmM3M2E5ZWQ1ZjBkNTNjMzgxOTMzOTg1MjNlZjdlNTQzNzc3
NTA1IgorICBkZXBlbmRlbmNpZXM6CisgICAganNibiAifjAuMS4wIgorCitlZGl0b3Jjb25maWdA
XjAuMTMuMjoKKyAgdmVyc2lvbiAiMC4xMy4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9lZGl0b3Jjb25maWcvLS9lZGl0b3Jjb25maWctMC4xMy4yLnRneiM4ZTU3
OTI2ZDllZTY5YWI2Y2I5OTlmMDI3YzIxNzE0NjdhY2NlYjM1IgorICBkZXBlbmRlbmNpZXM6Cisg
ICAgYmx1ZWJpcmQgIl4zLjAuNSIKKyAgICBjb21tYW5kZXIgIl4yLjkuMCIKKyAgICBscnUtY2Fj
aGUgIl4zLjIuMCIKKyAgICBzaWdtdW5kICJeMS4wLjEiCisKK2VlLWZpcnN0QDEuMS4xOgorICB2
ZXJzaW9uICIxLjEuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
ZWUtZmlyc3QvLS9lZS1maXJzdC0xLjEuMS50Z3ojNTkwYzYxMTU2YjBhZTJmNGYwMjU1NzMyYTE1
OGIyNjZiYzU2YjIxZCIKKworZW1vamlzLWxpc3RAXjIuMC4wOgorICB2ZXJzaW9uICIyLjEuMCIK
KyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZW1vamlzLWxpc3QvLS9l
bW9qaXMtbGlzdC0yLjEuMC50Z3ojNGRhYTRkOWRiMDBmOTgxOTg4MGM3OWZhNDU3YWU1YjA5YTFm
ZDM4OSIKKworZW5jb2RldXJsQH4xLjAuMToKKyAgdmVyc2lvbiAiMS4wLjEiCisgIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2VuY29kZXVybC8tL2VuY29kZXVybC0xLjAu
MS50Z3ojNzllM2Q1ODY1NTM0NjkwOWZlNmYwZjQ1YTVkZTY4MTAzYjI5NGQyMCIKKworZW5oYW5j
ZWQtcmVzb2x2ZUB+MC45LjA6CisgIHZlcnNpb24gIjAuOS4xIgorICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9lbmhhbmNlZC1yZXNvbHZlLy0vZW5oYW5jZWQtcmVzb2x2
ZS0wLjkuMS50Z3ojNGQ2ZTY4OWIzNzI1Zjg2MDkwOTI3Y2NjODZjZDlmMTYzNWI4OWUyZSIKKyAg
ZGVwZW5kZW5jaWVzOgorICAgIGdyYWNlZnVsLWZzICJeNC4xLjIiCisgICAgbWVtb3J5LWZzICJe
MC4yLjAiCisgICAgdGFwYWJsZSAiXjAuMS44IgorCitlbnRpdGllc0BeMS4xLjEsIGVudGl0aWVz
QH4xLjEuMToKKyAgdmVyc2lvbiAiMS4xLjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL2VudGl0aWVzLy0vZW50aXRpZXMtMS4xLjEudGd6IzZlNWMyZDBhNTYyMWI1
ZGFkYWVjZWY4MGI5MGVkZmI1Y2Q3NzcyZjAiCisKK2Vycm5vQF4wLjEuMzoKKyAgdmVyc2lvbiAi
MC4xLjQiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Vycm5vLy0v
ZXJybm8tMC4xLjQudGd6I2I4OTZlMjNhOWU1ZThiYTMzODcxZmM5OTZhYmQzNjM1ZmM5YTFjN2Qi
CisgIGRlcGVuZGVuY2llczoKKyAgICBwcnIgIn4wLjAuMCIKKworZXM1LWV4dEBeMC4xMC43LCBl
czUtZXh0QF4wLjEwLjgsIGVzNS1leHRAfjAuMTAuMTEsIGVzNS1leHRAfjAuMTAuMiwgZXM1LWV4
dEB+MC4xMC43OgorICB2ZXJzaW9uICIwLjEwLjEyIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9lczUtZXh0Ly0vZXM1LWV4dC0wLjEwLjEyLnRneiNhYTg0NjQxZDRk
Yjc2YjYyYWJiYTVlNDVmZDgwNWVjYmFiMTQwMDQ3IgorICBkZXBlbmRlbmNpZXM6CisgICAgZXM2
LWl0ZXJhdG9yICIyIgorICAgIGVzNi1zeW1ib2wgIn4zLjEiCisKK2VzNi1pdGVyYXRvckAyOgor
ICB2ZXJzaW9uICIyLjAuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vZXM2LWl0ZXJhdG9yLy0vZXM2LWl0ZXJhdG9yLTIuMC4wLnRneiNiZDk2ODU2N2Q2MTYzNWUz
M2MwYjgwNzI3NjEzYzljYjRiMDk2YmFjIgorICBkZXBlbmRlbmNpZXM6CisgICAgZCAiXjAuMS4x
IgorICAgIGVzNS1leHQgIl4wLjEwLjciCisgICAgZXM2LXN5bWJvbCAiMyIKKworZXM2LW1hcEBe
MC4xLjM6CisgIHZlcnNpb24gIjAuMS40IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9lczYtbWFwLy0vZXM2LW1hcC0wLjEuNC50Z3ojYTM0YjE0N2JlMjI0NzczYTRk
N2RhODA3Mjc5NGNlZmEzNjMyYjg5NyIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGQgIn4wLjEuMSIK
KyAgICBlczUtZXh0ICJ+MC4xMC4xMSIKKyAgICBlczYtaXRlcmF0b3IgIjIiCisgICAgZXM2LXNl
dCAifjAuMS4zIgorICAgIGVzNi1zeW1ib2wgIn4zLjEuMCIKKyAgICBldmVudC1lbWl0dGVyICJ+
MC4zLjQiCisKK2VzNi1zZXRAfjAuMS4zOgorICB2ZXJzaW9uICIwLjEuNCIKKyAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZXM2LXNldC8tL2VzNi1zZXQtMC4xLjQudGd6
Izk1MTZiNjc2MWMyOTY0YjkyZmY0Nzk0NTYyMzNhMjQ3ZGM3MDdjZTgiCisgIGRlcGVuZGVuY2ll
czoKKyAgICBkICJ+MC4xLjEiCisgICAgZXM1LWV4dCAifjAuMTAuMTEiCisgICAgZXM2LWl0ZXJh
dG9yICIyIgorICAgIGVzNi1zeW1ib2wgIjMiCisgICAgZXZlbnQtZW1pdHRlciAifjAuMy40Igor
CitlczYtc3ltYm9sQH4zLjEsIGVzNi1zeW1ib2xAfjMuMS4wLCBlczYtc3ltYm9sQDM6CisgIHZl
cnNpb24gIjMuMS4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9l
czYtc3ltYm9sLy0vZXM2LXN5bWJvbC0zLjEuMC50Z3ojOTQ0ODFjNjU1ZTdhN2NhZDgyZWJhODMy
ZDk3ZDU0MzM0OTZkN2ZmYSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGQgIn4wLjEuMSIKKyAgICBl
czUtZXh0ICJ+MC4xMC4xMSIKKworZXM2LXdlYWstbWFwQF4yLjAuMToKKyAgdmVyc2lvbiAiMi4w
LjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2VzNi13ZWFrLW1h
cC8tL2VzNi13ZWFrLW1hcC0yLjAuMS50Z3ojMGQyYmJkODgyN2ViNWZiNGJhOGY5N2ZiZmVhNTBk
NDNkYjIxZWE4MSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGQgIl4wLjEuMSIKKyAgICBlczUtZXh0
ICJeMC4xMC44IgorICAgIGVzNi1pdGVyYXRvciAiMiIKKyAgICBlczYtc3ltYm9sICIzIgorCitl
c2NhcGUtaHRtbEB+MS4wLjM6CisgIHZlcnNpb24gIjEuMC4zIgorICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9lc2NhcGUtaHRtbC8tL2VzY2FwZS1odG1sLTEuMC4zLnRn
eiMwMjU4ZWFlNGQzZDBjMDk3NGRlMWMxNjkxODhlZjAwNTFkMWQxOTg4IgorCitlc2NhcGUtc3Ry
aW5nLXJlZ2V4cEBeMS4wLjIsIGVzY2FwZS1zdHJpbmctcmVnZXhwQF4xLjAuNToKKyAgdmVyc2lv
biAiMS4wLjUiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2VzY2Fw
ZS1zdHJpbmctcmVnZXhwLy0vZXNjYXBlLXN0cmluZy1yZWdleHAtMS4wLjUudGd6IzFiNjFjMDU2
MjE5MGE4ZGZmNmFlM2JiMmNmMDIwMGNhMTMwYjg2ZDQiCisKK2VzY29wZUBeMy42LjA6CisgIHZl
cnNpb24gIjMuNi4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9l
c2NvcGUvLS9lc2NvcGUtMy42LjAudGd6I2UwMTk3NWU4MTI3ODFhMTYzYTZkYWRmZGQ4MDM5OGRj
NjRjODg5YzMiCisgIGRlcGVuZGVuY2llczoKKyAgICBlczYtbWFwICJeMC4xLjMiCisgICAgZXM2
LXdlYWstbWFwICJeMi4wLjEiCisgICAgZXNyZWN1cnNlICJeNC4xLjAiCisgICAgZXN0cmF2ZXJz
ZSAiXjQuMS4xIgorCitlc2xpbnQtZnJpZW5kbHktZm9ybWF0dGVyQF4yLjAuNToKKyAgdmVyc2lv
biAiMi4wLjYiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2VzbGlu
dC1mcmllbmRseS1mb3JtYXR0ZXIvLS9lc2xpbnQtZnJpZW5kbHktZm9ybWF0dGVyLTIuMC42LnRn
eiNlZGRkMThkZDAwMTc5OGI4Zjc2OWUxNjk5MzZhMzc0OWMzNmMyZDVhIgorICBkZXBlbmRlbmNp
ZXM6CisgICAgY2hhbGsgIl4xLjAuMCIKKyAgICBleHRlbmQgIl4zLjAuMCIKKyAgICBtaW5pbWlz
dCAiXjEuMi4wIgorICAgIHRleHQtdGFibGUgIl4wLjIuMCIKKworZXNsaW50LWxvYWRlckBeMS41
LjA6CisgIHZlcnNpb24gIjEuNi4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9lc2xpbnQtbG9hZGVyLy0vZXNsaW50LWxvYWRlci0xLjYuMS50Z3ojOTZjNDdjODEy
NzcyZWViMDc3ZTNhODE2ODE4MThlNjcxYTJjYWJmNSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGZp
bmQtY2FjaGUtZGlyICJeMC4xLjEiCisgICAgbG9hZGVyLXV0aWxzICJeMC4yLjciCisgICAgb2Jq
ZWN0LWFzc2lnbiAiXjQuMC4xIgorICAgIG9iamVjdC1oYXNoICJeMS4xLjQiCisKK2VzbGludC1w
bHVnaW4taHRtbEBeMS4zLjA6CisgIHZlcnNpb24gIjEuNy4wIgorICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9lc2xpbnQtcGx1Z2luLWh0bWwvLS9lc2xpbnQtcGx1Z2lu
LWh0bWwtMS43LjAudGd6IzJhNWIwMzg4NGQ4ZDU2YWRmOWFkOTg2NGU5YzAzNjQ4MGZiNjI5Yzki
CisgIGRlcGVuZGVuY2llczoKKyAgICBodG1scGFyc2VyMiAiXjMuOC4yIgorCitlc2xpbnRAXjMu
Ny4xOgorICB2ZXJzaW9uICIzLjExLjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL2VzbGludC8tL2VzbGludC0zLjExLjEudGd6IzQwOGJlNTgxMDQxMzg1Y2JhOTQ3
Y2Q4ZDFjZDIyMjc3ODJiNTVkYmYiCisgIGRlcGVuZGVuY2llczoKKyAgICBiYWJlbC1jb2RlLWZy
YW1lICJeNi4xNi4wIgorICAgIGNoYWxrICJeMS4xLjMiCisgICAgY29uY2F0LXN0cmVhbSAiXjEu
NC42IgorICAgIGRlYnVnICJeMi4xLjEiCisgICAgZG9jdHJpbmUgIl4xLjIuMiIKKyAgICBlc2Nv
cGUgIl4zLjYuMCIKKyAgICBlc3ByZWUgIl4zLjMuMSIKKyAgICBlc3RyYXZlcnNlICJeNC4yLjAi
CisgICAgZXN1dGlscyAiXjIuMC4yIgorICAgIGZpbGUtZW50cnktY2FjaGUgIl4yLjAuMCIKKyAg
ICBnbG9iICJeNy4wLjMiCisgICAgZ2xvYmFscyAiXjkuMi4wIgorICAgIGlnbm9yZSAiXjMuMi4w
IgorICAgIGltdXJtdXJoYXNoICJeMC4xLjQiCisgICAgaW5xdWlyZXIgIl4wLjEyLjAiCisgICAg
aXMtbXktanNvbi12YWxpZCAiXjIuMTAuMCIKKyAgICBpcy1yZXNvbHZhYmxlICJeMS4wLjAiCisg
ICAganMteWFtbCAiXjMuNS4xIgorICAgIGpzb24tc3RhYmxlLXN0cmluZ2lmeSAiXjEuMC4wIgor
ICAgIGxldm4gIl4wLjMuMCIKKyAgICBsb2Rhc2ggIl40LjAuMCIKKyAgICBta2RpcnAgIl4wLjUu
MCIKKyAgICBuYXR1cmFsLWNvbXBhcmUgIl4xLjQuMCIKKyAgICBvcHRpb25hdG9yICJeMC44LjIi
CisgICAgcGF0aC1pcy1pbnNpZGUgIl4xLjAuMSIKKyAgICBwbHVyYWxpemUgIl4xLjIuMSIKKyAg
ICBwcm9ncmVzcyAiXjEuMS44IgorICAgIHJlcXVpcmUtdW5jYWNoZWQgIl4xLjAuMiIKKyAgICBz
aGVsbGpzICJeMC43LjUiCisgICAgc3RyaXAtYm9tICJeMy4wLjAiCisgICAgc3RyaXAtanNvbi1j
b21tZW50cyAifjEuMC4xIgorICAgIHRhYmxlICJeMy43LjgiCisgICAgdGV4dC10YWJsZSAifjAu
Mi4wIgorICAgIHVzZXItaG9tZSAiXjIuMC4wIgorCitlc3ByZWVAXjMuMy4xOgorICB2ZXJzaW9u
ICIzLjMuMiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZXNwcmVl
Ly0vZXNwcmVlLTMuMy4yLnRneiNkYmYzZmFkZWI0ZWNiNGQ0Nzc4MzAzZTUwMTAzYjNkMzZjODhi
ODljIgorICBkZXBlbmRlbmNpZXM6CisgICAgYWNvcm4gIl40LjAuMSIKKyAgICBhY29ybi1qc3gg
Il4zLjAuMCIKKworZXNwcmltYUBeMi42LjA6CisgIHZlcnNpb24gIjIuNy4zIgorICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9lc3ByaW1hLy0vZXNwcmltYS0yLjcuMy50
Z3ojOTZlM2I3MGQ1Nzc5ZjZhZDQ5Y2QwMzI2NzNkMWMzMTI3NjdiYTU4MSIKKworZXNyZWN1cnNl
QF40LjEuMDoKKyAgdmVyc2lvbiAiNC4xLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL2VzcmVjdXJzZS8tL2VzcmVjdXJzZS00LjEuMC50Z3ojNDcxM2I2NTM2YWRm
N2YyYWM0ZjMyN2Q1NTllNzc1NmJmZjY0ODIyMCIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGVzdHJh
dmVyc2UgIn40LjEuMCIKKyAgICBvYmplY3QtYXNzaWduICJeNC4wLjEiCisKK2VzdHJhdmVyc2VA
XjQuMS4xLCBlc3RyYXZlcnNlQF40LjIuMDoKKyAgdmVyc2lvbiAiNC4yLjAiCisgIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2VzdHJhdmVyc2UvLS9lc3RyYXZlcnNlLTQu
Mi4wLnRneiMwZGVlM2ZlZDMxZmNkNDY5NjE4Y2U3MzQyMDk5ZmMxYWZhMGJkYjEzIgorCitlc3Ry
YXZlcnNlQH40LjEuMDoKKyAgdmVyc2lvbiAiNC4xLjEiCisgIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL2VzdHJhdmVyc2UvLS9lc3RyYXZlcnNlLTQuMS4xLnRneiNmNmNh
Y2E3Mjg5MzNhODUwZWY5MDY2MWQwZTE3OTgyYmE0NzExMWEyIgorCitlc3V0aWxzQF4yLjAuMjoK
KyAgdmVyc2lvbiAiMi4wLjIiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL2VzdXRpbHMvLS9lc3V0aWxzLTIuMC4yLnRneiMwYWJmNGYxY2FhNWJjYjFmN2E5ZDhhY2M2
ZGVhNGZhYWEwNGJhYzliIgorCitldGFnQH4xLjcuMDoKKyAgdmVyc2lvbiAiMS43LjAiCisgIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2V0YWcvLS9ldGFnLTEuNy4wLnRn
eiMwM2QzMGI1ZjY3ZGQ2ZTYzMmQyOTQ1ZDMwZDY2NTI3MzFhMzRkNWQ4IgorCitldmVudC1lbWl0
dGVyQH4wLjMuNDoKKyAgdmVyc2lvbiAiMC4zLjQiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL2V2ZW50LWVtaXR0ZXIvLS9ldmVudC1lbWl0dGVyLTAuMy40LnRneiM4
ZDYzZGRmYjRjZmUxZmFlM2IzMmNhMjY1YzRjNzIwMjIyMDgwYmI1IgorICBkZXBlbmRlbmNpZXM6
CisgICAgZCAifjAuMS4xIgorICAgIGVzNS1leHQgIn4wLjEwLjciCisKK2V2ZW50ZW1pdHRlcjNA
MS54Lng6CisgIHZlcnNpb24gIjEuMi4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9ldmVudGVtaXR0ZXIzLy0vZXZlbnRlbWl0dGVyMy0xLjIuMC50Z3ojMWM4Njk5
MWQ4MTZhZDFlNTA0NzUwZTczODc0MjI0ZWNmM2JlYzUwOCIKKworZXZlbnRzQF4xLjAuMDoKKyAg
dmVyc2lvbiAiMS4xLjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L2V2ZW50cy8tL2V2ZW50cy0xLjEuMS50Z3ojOWViZGI3NjM1YWQwOTljNzBkY2M0YzJhMWY1MDA0
Mjg4ZThiZDkyNCIKKworZXZlbnRzb3VyY2UtcG9seWZpbGxAXjAuOS42OgorICB2ZXJzaW9uICIw
LjkuNiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZXZlbnRzb3Vy
Y2UtcG9seWZpbGwvLS9ldmVudHNvdXJjZS1wb2x5ZmlsbC0wLjkuNi50Z3ojMTBlMGQxODdmMTEx
YjE2N2YyOGZkYWI5MTg4NDNjZTdkODE4ZjEzYyIKKworZXhpdC1ob29rQF4xLjAuMDoKKyAgdmVy
c2lvbiAiMS4xLjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2V4
aXQtaG9vay8tL2V4aXQtaG9vay0xLjEuMS50Z3ojZjA1Y2EyMzNiNDhjMDVkNTRmZmYwNzc2NWRm
ODUwN2U5NWMwMmZmOCIKKworZXhwYW5kLWJyYWNrZXRzQF4wLjEuNDoKKyAgdmVyc2lvbiAiMC4x
LjUiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2V4cGFuZC1icmFj
a2V0cy8tL2V4cGFuZC1icmFja2V0cy0wLjEuNS50Z3ojZGYwNzI4NGUzNDJhODA3Y2Q3MzNhYzVh
ZjcyNDExZTU4MWQxMTc3YiIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGlzLXBvc2l4LWJyYWNrZXQg
Il4wLjEuMCIKKworZXhwYW5kLXJhbmdlQF4xLjguMToKKyAgdmVyc2lvbiAiMS44LjIiCisgIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2V4cGFuZC1yYW5nZS8tL2V4cGFu
ZC1yYW5nZS0xLjguMi50Z3ojYTI5OWVmZmQzMzVmZTI3MjFlYmFlOGUyNTdlYzc5NjQ0ZmM4NTMz
NyIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGZpbGwtcmFuZ2UgIl4yLjEuMCIKKworZXhwcmVzc0Be
NC4xMy4zOgorICB2ZXJzaW9uICI0LjE0LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL2V4cHJlc3MvLS9leHByZXNzLTQuMTQuMC50Z3ojYzFlZTNmNDJjZGM4OTFm
YjNkYzY1MGE4OTIyZDUxZWM4NDdkMGQ2NiIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGFjY2VwdHMg
In4xLjMuMyIKKyAgICBhcnJheS1mbGF0dGVuICIxLjEuMSIKKyAgICBjb250ZW50LWRpc3Bvc2l0
aW9uICIwLjUuMSIKKyAgICBjb250ZW50LXR5cGUgIn4xLjAuMiIKKyAgICBjb29raWUgIjAuMy4x
IgorICAgIGNvb2tpZS1zaWduYXR1cmUgIjEuMC42IgorICAgIGRlYnVnICJ+Mi4yLjAiCisgICAg
ZGVwZCAifjEuMS4wIgorICAgIGVuY29kZXVybCAifjEuMC4xIgorICAgIGVzY2FwZS1odG1sICJ+
MS4wLjMiCisgICAgZXRhZyAifjEuNy4wIgorICAgIGZpbmFsaGFuZGxlciAiMC41LjAiCisgICAg
ZnJlc2ggIjAuMy4wIgorICAgIG1lcmdlLWRlc2NyaXB0b3JzICIxLjAuMSIKKyAgICBtZXRob2Rz
ICJ+MS4xLjIiCisgICAgb24tZmluaXNoZWQgIn4yLjMuMCIKKyAgICBwYXJzZXVybCAifjEuMy4x
IgorICAgIHBhdGgtdG8tcmVnZXhwICIwLjEuNyIKKyAgICBwcm94eS1hZGRyICJ+MS4xLjIiCisg
ICAgcXMgIjYuMi4wIgorICAgIHJhbmdlLXBhcnNlciAifjEuMi4wIgorICAgIHNlbmQgIjAuMTQu
MSIKKyAgICBzZXJ2ZS1zdGF0aWMgIn4xLjExLjEiCisgICAgdHlwZS1pcyAifjEuNi4xMyIKKyAg
ICB1dGlscy1tZXJnZSAiMS4wLjAiCisgICAgdmFyeSAifjEuMS4wIgorCitleHRlbmRAXjMuMC4w
LCBleHRlbmRAfjMuMC4wOgorICB2ZXJzaW9uICIzLjAuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vZXh0ZW5kLy0vZXh0ZW5kLTMuMC4wLnRneiM1YTQ3NDM1M2I5
ZjMzNTNkZGQ4MTc2ZGZkMzdiOTFjODNhNDZmMWQ0IgorCitleHRnbG9iQF4wLjMuMToKKyAgdmVy
c2lvbiAiMC4zLjIiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2V4
dGdsb2IvLS9leHRnbG9iLTAuMy4yLnRneiMyZTE4ZmYzZDJmNDlhYjI3NjVjZWM5MDIzZjAxMWRh
YThkODM0OWExIgorICBkZXBlbmRlbmNpZXM6CisgICAgaXMtZXh0Z2xvYiAiXjEuMC4wIgorCitl
eHRyYWN0LXRleHQtd2VicGFjay1wbHVnaW5AXjEuMC4xOgorICB2ZXJzaW9uICIxLjAuMSIKKyAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZXh0cmFjdC10ZXh0LXdlYnBh
Y2stcGx1Z2luLy0vZXh0cmFjdC10ZXh0LXdlYnBhY2stcGx1Z2luLTEuMC4xLnRneiNjOTViZjNj
YmFhYzQ5ZGM5NmYxZGM2ZTA3MjU0OWZiYjY1NGNjZDJjIgorICBkZXBlbmRlbmNpZXM6CisgICAg
YXN5bmMgIl4xLjUuMCIKKyAgICBsb2FkZXItdXRpbHMgIl4wLjIuMyIKKyAgICB3ZWJwYWNrLXNv
dXJjZXMgIl4wLjEuMCIKKworZXh0c3ByaW50ZkAxLjAuMjoKKyAgdmVyc2lvbiAiMS4wLjIiCisg
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2V4dHNwcmludGYvLS9leHRz
cHJpbnRmLTEuMC4yLnRneiNlMTA4MGUwNjU4ZTMwMGIwNjI5NDk5MGNjNzBlMTUwMjIzNWZkNTUw
IgorCitmYXN0LWxldmVuc2h0ZWluQH4yLjAuNDoKKyAgdmVyc2lvbiAiMi4wLjUiCisgIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Zhc3QtbGV2ZW5zaHRlaW4vLS9mYXN0
LWxldmVuc2h0ZWluLTIuMC41LnRneiNiZDMzMTQ1NzQ0NTE5YWIxYzM2YzNlZTlmMzFmMDhlOTA3
OWI2N2YyIgorCitmYXN0cGFyc2VAXjEuMS4xOgorICB2ZXJzaW9uICIxLjEuMSIKKyAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZmFzdHBhcnNlLy0vZmFzdHBhcnNlLTEu
MS4xLnRneiNkMWUyNjQzYjM4YTk0ZDc1ODNiNDc5MDYwZTZjNGFmZmM5NDA3MWY4IgorCitmaWd1
cmVzQF4xLjMuNToKKyAgdmVyc2lvbiAiMS43LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL2ZpZ3VyZXMvLS9maWd1cmVzLTEuNy4wLnRneiNjYmUxZTNhZmZjZjFj
ZDQ0YjgwY2FkZmVkMjhkYzc5M2E5NzAxZDJlIgorICBkZXBlbmRlbmNpZXM6CisgICAgZXNjYXBl
LXN0cmluZy1yZWdleHAgIl4xLjAuNSIKKyAgICBvYmplY3QtYXNzaWduICJeNC4xLjAiCisKK2Zp
bGUtZW50cnktY2FjaGVAXjIuMC4wOgorICB2ZXJzaW9uICIyLjAuMCIKKyAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZmlsZS1lbnRyeS1jYWNoZS8tL2ZpbGUtZW50cnkt
Y2FjaGUtMi4wLjAudGd6I2MzOTI5OTBjM2U2ODQ3ODNkODM4YjhjODRhNDVkOGEwNDg0NTgzNjEi
CisgIGRlcGVuZGVuY2llczoKKyAgICBmbGF0LWNhY2hlICJeMS4yLjEiCisgICAgb2JqZWN0LWFz
c2lnbiAiXjQuMC4xIgorCitmaWxlLWxvYWRlckBeMC45LjA6CisgIHZlcnNpb24gIjAuOS4wIgor
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9maWxlLWxvYWRlci8tL2Zp
bGUtbG9hZGVyLTAuOS4wLnRneiMxZDJkYWRkZDQyNGNlNmQxYjA3Y2ZlM2Y3OTczMWJlZDM2MTdh
YjQyIgorICBkZXBlbmRlbmNpZXM6CisgICAgbG9hZGVyLXV0aWxzICJ+MC4yLjUiCisKK2ZpbGVu
YW1lLXJlZ2V4QF4yLjAuMDoKKyAgdmVyc2lvbiAiMi4wLjAiCisgIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2ZpbGVuYW1lLXJlZ2V4Ly0vZmlsZW5hbWUtcmVnZXgtMi4w
LjAudGd6Izk5NmUzZTgwNDc5Yjk4Yjk4OTdmMTVhOGE1OGIzZDA4NGU5MjY3NzUiCisKK2ZpbGwt
cmFuZ2VAXjIuMS4wOgorICB2ZXJzaW9uICIyLjIuMyIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vZmlsbC1yYW5nZS8tL2ZpbGwtcmFuZ2UtMi4yLjMudGd6IzUwYjc3
ZGZkN2U0NjliYzc0OTI0NzA5NjM2OTlmZTdhODQ4NWE3MjMiCisgIGRlcGVuZGVuY2llczoKKyAg
ICBpcy1udW1iZXIgIl4yLjEuMCIKKyAgICBpc29iamVjdCAiXjIuMC4wIgorICAgIHJhbmRvbWF0
aWMgIl4xLjEuMyIKKyAgICByZXBlYXQtZWxlbWVudCAiXjEuMS4yIgorICAgIHJlcGVhdC1zdHJp
bmcgIl4xLjUuMiIKKworZmluYWxoYW5kbGVyQDAuNS4wOgorICB2ZXJzaW9uICIwLjUuMCIKKyAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZmluYWxoYW5kbGVyLy0vZmlu
YWxoYW5kbGVyLTAuNS4wLnRneiNlOTUwOGFiZWNlOWI2ZGJhODcxYTY5NDJhMWQ3OTExYjkxOTEx
YWM3IgorICBkZXBlbmRlbmNpZXM6CisgICAgZGVidWcgIn4yLjIuMCIKKyAgICBlc2NhcGUtaHRt
bCAifjEuMC4zIgorICAgIG9uLWZpbmlzaGVkICJ+Mi4zLjAiCisgICAgc3RhdHVzZXMgIn4xLjMu
MCIKKyAgICB1bnBpcGUgIn4xLjAuMCIKKworZmluZC1jYWNoZS1kaXJAXjAuMS4xOgorICB2ZXJz
aW9uICIwLjEuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZmlu
ZC1jYWNoZS1kaXIvLS9maW5kLWNhY2hlLWRpci0wLjEuMS50Z3ojYzhkZWZhZTU3YzhhNTJhOGE3
ODRmOWUzMWM1N2M3NDJlOTkzYTBiOSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGNvbW1vbmRpciAi
XjEuMC4xIgorICAgIG1rZGlycCAiXjAuNS4xIgorICAgIHBrZy1kaXIgIl4xLjAuMCIKKworZmlu
ZC11cEBeMS4wLjA6CisgIHZlcnNpb24gIjEuMS4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9maW5kLXVwLy0vZmluZC11cC0xLjEuMi50Z3ojNmIyZTk4MjJiMWEy
Y2UwYTYwYWI2NGQ2MTBlY2NhZDUzY2IyNGQwZiIKKyAgZGVwZW5kZW5jaWVzOgorICAgIHBhdGgt
ZXhpc3RzICJeMi4wLjAiCisgICAgcGlua2llLXByb21pc2UgIl4yLjAuMCIKKworZmxhdC1jYWNo
ZUBeMS4yLjE6CisgIHZlcnNpb24gIjEuMi4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9mbGF0LWNhY2hlLy0vZmxhdC1jYWNoZS0xLjIuMS50Z3ojNmM4MzdkNjIy
NWE3ZGU1NjU5MzIzNzQwYjM2ZDUzNjFmNzE2OTFmZiIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGNp
cmN1bGFyLWpzb24gIl4wLjMuMCIKKyAgICBkZWwgIl4yLjAuMiIKKyAgICBncmFjZWZ1bC1mcyAi
XjQuMS4yIgorICAgIHdyaXRlICJeMC4yLjEiCisKK2ZsYXR0ZW5AXjEuMC4yOgorICB2ZXJzaW9u
ICIxLjAuMiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZmxhdHRl
bi8tL2ZsYXR0ZW4tMS4wLjIudGd6I2RhZTQ2YTlkNzhmYmUyNTI5MjI1OGNjMWU3ODBhNDFkOTVj
MDM3ODIiCisKK2Zvci1pbkBeMC4xLjU6CisgIHZlcnNpb24gIjAuMS42IgorICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9mb3ItaW4vLS9mb3ItaW4tMC4xLjYudGd6I2M5
Zjk2ZTg5YmZhZDE4YTU0NWFmNWVjM2VkMzUyYTFkOWU1YjRkYzgiCisKK2Zvci1vd25AXjAuMS40
OgorICB2ZXJzaW9uICIwLjEuNCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vZm9yLW93bi8tL2Zvci1vd24tMC4xLjQudGd6IzAxNDliNDFhMzkwODhjNzUxNWY1MWVi
ZTFjMTM4NmQ0NWY5MzUwNzIiCisgIGRlcGVuZGVuY2llczoKKyAgICBmb3ItaW4gIl4wLjEuNSIK
KworZm9yZXZlci1hZ2VudEB+MC42LjE6CisgIHZlcnNpb24gIjAuNi4xIgorICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9mb3JldmVyLWFnZW50Ly0vZm9yZXZlci1hZ2Vu
dC0wLjYuMS50Z3ojZmJjNzFmMGM0MWFkZWIzN2Y5NmM1NzdhZDFlZDQyZDhmZGFjY2E5MSIKKwor
Zm9ybS1kYXRhQH4yLjEuMToKKyAgdmVyc2lvbiAiMi4xLjIiCisgIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Zvcm0tZGF0YS8tL2Zvcm0tZGF0YS0yLjEuMi50Z3ojODlj
MzUzNDAwOGI5N2VhZGE0Y2JiMTU3ZDU4ZjZmNWRmMDI1ZWFlNCIKKyAgZGVwZW5kZW5jaWVzOgor
ICAgIGFzeW5ja2l0ICJeMC40LjAiCisgICAgY29tYmluZWQtc3RyZWFtICJeMS4wLjUiCisgICAg
bWltZS10eXBlcyAiXjIuMS4xMiIKKworZm9yd2FyZGVkQH4wLjEuMDoKKyAgdmVyc2lvbiAiMC4x
LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2ZvcndhcmRlZC8t
L2ZvcndhcmRlZC0wLjEuMC50Z3ojMTllZjk4NzRjNGFlMWMyOTdiY2YwNzhmZGU2M2EwOWI2NmE4
NDM2MyIKKworZnJlc2hAMC4zLjA6CisgIHZlcnNpb24gIjAuMy4wIgorICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9mcmVzaC8tL2ZyZXNoLTAuMy4wLnRneiM2NTFmODM4
ZTIyNDI0ZTc1NjZkZTE2MWQ4MzU4Y2FhMTk5ZjgzZDRmIgorCitmcy5yZWFscGF0aEBeMS4wLjA6
CisgIHZlcnNpb24gIjEuMC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9mcy5yZWFscGF0aC8tL2ZzLnJlYWxwYXRoLTEuMC4wLnRneiMxNTA0YWQyNTIzMTU4Y2Fh
NDBkYjRhMjc4N2NiMDE0MTE5OTRlYTRmIgorCitmc2V2ZW50c0BeMS4wLjA6CisgIHZlcnNpb24g
IjEuMC4xNSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZnNldmVu
dHMvLS9mc2V2ZW50cy0xLjAuMTUudGd6I2ZhNjNmNTkwZjNjMmFkOTEyNzVlNDk3MmE2Y2VhNTQ1
ZmIwYWFlNDQiCisgIGRlcGVuZGVuY2llczoKKyAgICBuYW4gIl4yLjMuMCIKKyAgICBub2RlLXBy
ZS1neXAgIl4wLjYuMjkiCisKK2ZzdHJlYW0taWdub3JlQH4xLjAuNToKKyAgdmVyc2lvbiAiMS4w
LjUiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2ZzdHJlYW0taWdu
b3JlLy0vZnN0cmVhbS1pZ25vcmUtMS4wLjUudGd6IzljMzFkYWUzNDc2NzAxOGZlMWQyNDliMjRk
YWRhNjdkMDkyZGExMDUiCisgIGRlcGVuZGVuY2llczoKKyAgICBmc3RyZWFtICJeMS4wLjAiCisg
ICAgaW5oZXJpdHMgIjIiCisgICAgbWluaW1hdGNoICJeMy4wLjAiCisKK2ZzdHJlYW1AXjEuMC4w
LCBmc3RyZWFtQF4xLjAuMiwgZnN0cmVhbUB+MS4wLjEwOgorICB2ZXJzaW9uICIxLjAuMTAiCisg
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2ZzdHJlYW0vLS9mc3RyZWFt
LTEuMC4xMC50Z3ojNjA0ZThhOTJmZTI2ZmZkOWY2ZmFlMzAzOTlkNDk4NGUxYWIyMjgyMiIKKyAg
ZGVwZW5kZW5jaWVzOgorICAgIGdyYWNlZnVsLWZzICJeNC4xLjIiCisgICAgaW5oZXJpdHMgIn4y
LjAuMCIKKyAgICBta2RpcnAgIj49MC41IDAiCisgICAgcmltcmFmICIyIgorCitmdW5jdGlvbi1i
aW5kQF4xLjAuMjoKKyAgdmVyc2lvbiAiMS4xLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL2Z1bmN0aW9uLWJpbmQvLS9mdW5jdGlvbi1iaW5kLTEuMS4wLnRneiMx
NjE3NjcxNGM4MDE3OThlNGU4ZjJjZjdmNzUyOTQ2N2JiNGE1NzcxIgorCitnYXVnZUB+Mi43LjE6
CisgIHZlcnNpb24gIjIuNy4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9nYXVnZS8tL2dhdWdlLTIuNy4yLnRneiMxNWNlY2MzMWIwMmQwNTM0NWE1ZDZiMGUxNzFj
ZGIzYWQyMzA3Nzc0IgorICBkZXBlbmRlbmNpZXM6CisgICAgYXByb2JhICJeMS4wLjMiCisgICAg
Y29uc29sZS1jb250cm9sLXN0cmluZ3MgIl4xLjAuMCIKKyAgICBoYXMtdW5pY29kZSAiXjIuMC4w
IgorICAgIG9iamVjdC1hc3NpZ24gIl40LjEuMCIKKyAgICBzaWduYWwtZXhpdCAiXjMuMC4wIgor
ICAgIHN0cmluZy13aWR0aCAiXjEuMC4xIgorICAgIHN0cmlwLWFuc2kgIl4zLjAuMSIKKyAgICBz
dXBwb3J0cy1jb2xvciAiXjAuMi4wIgorICAgIHdpZGUtYWxpZ24gIl4xLjEuMCIKKworZ2VuZXJh
dGUtZnVuY3Rpb25AXjIuMC4wOgorICB2ZXJzaW9uICIyLjAuMCIKKyAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vZ2VuZXJhdGUtZnVuY3Rpb24vLS9nZW5lcmF0ZS1mdW5j
dGlvbi0yLjAuMC50Z3ojNjg1OGZlN2MwOTY5YjdkNGU5MDkzMzM3NjQ3YWM3OWY2MGRmYmU3NCIK
KworZ2VuZXJhdGUtb2JqZWN0LXByb3BlcnR5QF4xLjEuMDoKKyAgdmVyc2lvbiAiMS4yLjAiCisg
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2dlbmVyYXRlLW9iamVjdC1w
cm9wZXJ0eS8tL2dlbmVyYXRlLW9iamVjdC1wcm9wZXJ0eS0xLjIuMC50Z3ojOWMwZTFjNDAzMDhj
ZTgwNGY0NzgzNjE4YjkzN2ZhODhmOTlkNTBkMCIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGlzLXBy
b3BlcnR5ICJeMS4wLjAiCisKK2dldHBhc3NAXjAuMS4xOgorICB2ZXJzaW9uICIwLjEuNiIKKyAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZ2V0cGFzcy8tL2dldHBhc3Mt
MC4xLjYudGd6IzI4M2ZmZDlmYzEyNTY4NDA4NzUzMTFjMWI2MGU4YzQwMTg3MTEwZTYiCisgIGRl
cGVuZGVuY2llczoKKyAgICBhc3NlcnQtcGx1cyAiXjEuMC4wIgorCitnbG9iLWJhc2VAXjAuMy4w
OgorICB2ZXJzaW9uICIwLjMuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vZ2xvYi1iYXNlLy0vZ2xvYi1iYXNlLTAuMy4wLnRneiNkYmIxNjRmNjIyMWIxYzBiMWNj
ZjgyYWVhMzI4YjQ5N2RmMGVhM2M0IgorICBkZXBlbmRlbmNpZXM6CisgICAgZ2xvYi1wYXJlbnQg
Il4yLjAuMCIKKyAgICBpcy1nbG9iICJeMi4wLjAiCisKK2dsb2ItcGFyZW50QF4yLjAuMDoKKyAg
dmVyc2lvbiAiMi4wLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L2dsb2ItcGFyZW50Ly0vZ2xvYi1wYXJlbnQtMi4wLjAudGd6IzgxMzgzZDcyZGIwNTRmY2NjZjUz
MzZkYWE5MDJmMTgyZjZlZGJiMjgiCisgIGRlcGVuZGVuY2llczoKKyAgICBpcy1nbG9iICJeMi4w
LjAiCisKK2dsb2JAXjcuMC4wLCBnbG9iQF43LjAuMywgZ2xvYkBeNy4wLjU6CisgIHZlcnNpb24g
IjcuMS4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9nbG9iLy0v
Z2xvYi03LjEuMS50Z3ojODA1MjExZGYwNGZhYWYxYzYzYTM2MDAzMDZjZGY1YWRlNTBiMmVjOCIK
KyAgZGVwZW5kZW5jaWVzOgorICAgIGZzLnJlYWxwYXRoICJeMS4wLjAiCisgICAgaW5mbGlnaHQg
Il4xLjAuNCIKKyAgICBpbmhlcml0cyAiMiIKKyAgICBtaW5pbWF0Y2ggIl4zLjAuMiIKKyAgICBv
bmNlICJeMS4zLjAiCisgICAgcGF0aC1pcy1hYnNvbHV0ZSAiXjEuMC4wIgorCitnbG9iYWxzQF45
LjAuMCwgZ2xvYmFsc0BeOS4yLjA6CisgIHZlcnNpb24gIjkuMTQuMCIKKyAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZ2xvYmFscy8tL2dsb2JhbHMtOS4xNC4wLnRneiM4
ODU5OTM2YWYwMDM4NzQxMjYzMDUzYjM5ZDBlNzZjYTI0MWU0MDM0IgorCitnbG9iYnlAXjUuMC4w
OgorICB2ZXJzaW9uICI1LjAuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vZ2xvYmJ5Ly0vZ2xvYmJ5LTUuMC4wLnRneiNlYmQ4NDY2N2NhMGRiYjMzMGI5OWJjZmM2
OGVhYzJiYzU0MzcwZTBkIgorICBkZXBlbmRlbmNpZXM6CisgICAgYXJyYXktdW5pb24gIl4xLjAu
MSIKKyAgICBhcnJpZnkgIl4xLjAuMCIKKyAgICBnbG9iICJeNy4wLjMiCisgICAgb2JqZWN0LWFz
c2lnbiAiXjQuMC4xIgorICAgIHBpZnkgIl4yLjAuMCIKKyAgICBwaW5raWUtcHJvbWlzZSAiXjIu
MC4wIgorCitncmFjZWZ1bC1mc0BeNC4xLjI6CisgIHZlcnNpb24gIjQuMS4xMSIKKyAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZ3JhY2VmdWwtZnMvLS9ncmFjZWZ1bC1m
cy00LjEuMTEudGd6IzBlOGJkZmU0ZDFkZGI4ODU0ZDY0ZTA0ZWE3YzAwZTJhMDI2ZTU2NTgiCisK
KyJncmFjZWZ1bC1yZWFkbGlua0A+PSAxLjAuMCI6CisgIHZlcnNpb24gIjEuMC4xIgorICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9ncmFjZWZ1bC1yZWFkbGluay8tL2dy
YWNlZnVsLXJlYWRsaW5rLTEuMC4xLnRneiM0Y2FmYWQ3NmJjNjJmMDJmYTAzOWIyZjk0ZTlhM2Rk
M2EzOTFhNzI1IgorCitoYXItdmFsaWRhdG9yQH4yLjAuNjoKKyAgdmVyc2lvbiAiMi4wLjYiCisg
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2hhci12YWxpZGF0b3IvLS9o
YXItdmFsaWRhdG9yLTIuMC42LnRneiNjZGNiYzA4MTg4MjY1YWQxMTliNmE1YTdjOGFiNzBlZWNm
YjVkMjdkIgorICBkZXBlbmRlbmNpZXM6CisgICAgY2hhbGsgIl4xLjEuMSIKKyAgICBjb21tYW5k
ZXIgIl4yLjkuMCIKKyAgICBpcy1teS1qc29uLXZhbGlkICJeMi4xMi40IgorICAgIHBpbmtpZS1w
cm9taXNlICJeMi4wLjAiCisKK2hhcy1hbnNpQF4yLjAuMDoKKyAgdmVyc2lvbiAiMi4wLjAiCisg
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2hhcy1hbnNpLy0vaGFzLWFu
c2ktMi4wLjAudGd6IzM0ZjUwNDljZTFlY2RmMmIwNjQ5YWYzZWYyNGU0NWVkMzU0MTZkOTEiCisg
IGRlcGVuZGVuY2llczoKKyAgICBhbnNpLXJlZ2V4ICJeMi4wLjAiCisKK2hhcy1mbGFnQF4xLjAu
MDoKKyAgdmVyc2lvbiAiMS4wLjAiCisgIHJlc29sdmVkICJodHRwOi8vcmVnaXN0cnkubnBtanMu
b3JnL2hhcy1mbGFnLy0vaGFzLWZsYWctMS4wLjAudGd6IzlkOWU3OTMxNjVjZTAxN2EwMGYwMDQx
OGM0M2Y5NDJhN2IxZDExZmEiCisKK2hhcy11bmljb2RlQF4yLjAuMDoKKyAgdmVyc2lvbiAiMi4w
LjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2hhcy11bmljb2Rl
Ly0vaGFzLXVuaWNvZGUtMi4wLjEudGd6I2UwZTZmZTZhMjhjZjUxMTM4ODU1ZTA4NmQxNjkxZTc3
MWRlMmE4YjkiCisKK2hhc0BeMS4wLjE6CisgIHZlcnNpb24gIjEuMC4xIgorICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9oYXMvLS9oYXMtMS4wLjEudGd6Izg0NjE3MzNm
NTM4YjA4MzdjOTM2MWUzOWE5YWI5ZTk3MDRkYzJmMjgiCisgIGRlcGVuZGVuY2llczoKKyAgICBm
dW5jdGlvbi1iaW5kICJeMS4wLjIiCisKK2hhc2gtc3VtQF4xLjAuMjoKKyAgdmVyc2lvbiAiMS4w
LjIiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2hhc2gtc3VtLy0v
aGFzaC1zdW0tMS4wLjIudGd6IzMzYjQwNzc3NzU0YzY0MzI1NzNjMTIwY2MzODA4YmJkMTBkNDdm
MDQiCisKK2hhd2tAfjMuMS4zOgorICB2ZXJzaW9uICIzLjEuMyIKKyAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vaGF3ay8tL2hhd2stMy4xLjMudGd6IzA3ODQ0NGJkN2Mx
NjQwYjBmZTU0MGQyYzliNzNkNTk2NzhlOGUxYzQiCisgIGRlcGVuZGVuY2llczoKKyAgICBib29t
ICIyLngueCIKKyAgICBjcnlwdGlsZXMgIjIueC54IgorICAgIGhvZWsgIjIueC54IgorICAgIHNu
dHAgIjEueC54IgorCitoZUBeMS4xLjAsIGhlQDEuMS54OgorICB2ZXJzaW9uICIxLjEuMCIKKyAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaGUvLS9oZS0xLjEuMC50Z3oj
MjkzMTlkNDliZWVjMTNhOWIxZjNjNGY5YjJhNmRkZTQ4NTliYjJhNyIKKworaG9la0AyLngueDoK
KyAgdmVyc2lvbiAiMi4xNi4zIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9ob2VrLy0vaG9lay0yLjE2LjMudGd6IzIwYmI3NDAzZDNjZWEzOThlOTFkYzQ3MTBhOGZm
MWI4Mjc0YTI1ZWQiCisKK2hvbWUtb3ItdG1wQF4yLjAuMDoKKyAgdmVyc2lvbiAiMi4wLjAiCisg
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2hvbWUtb3ItdG1wLy0vaG9t
ZS1vci10bXAtMi4wLjAudGd6I2UzNmMzZjJkMmNhZTdkNzQ2YTg1N2UzOGQxOGQ1ZjMyYTc4ODJk
YjgiCisgIGRlcGVuZGVuY2llczoKKyAgICBvcy1ob21lZGlyICJeMS4wLjAiCisgICAgb3MtdG1w
ZGlyICJeMS4wLjEiCisKK2h0bWwtY29tbWVudC1yZWdleEBeMS4xLjA6CisgIHZlcnNpb24gIjEu
MS4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9odG1sLWNvbW1l
bnQtcmVnZXgvLS9odG1sLWNvbW1lbnQtcmVnZXgtMS4xLjEudGd6IzY2OGI5Mzc3NmVhYWU1NWVi
ZGU4ZjNhZDQ2NGIzMDdhNDk2MzYyNWUiCisKK2h0bWwtZW50aXRpZXNAXjEuMi4wOgorICB2ZXJz
aW9uICIxLjIuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaHRt
bC1lbnRpdGllcy8tL2h0bWwtZW50aXRpZXMtMS4yLjAudGd6IzQxOTQ4Y2FmODVjZTgyZmVkMzZl
NGU2YTBlZDM3MWE2NjY0Mzc5ZTIiCisKK2h0bWwtbWluaWZpZXJAXjMuMS4wOgorICB2ZXJzaW9u
ICIzLjIuMyIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaHRtbC1t
aW5pZmllci8tL2h0bWwtbWluaWZpZXItMy4yLjMudGd6I2QyZmY1MzZlMjRkOTU3MjZjMzMyNDkz
ZDhmNzdkODRkYmVkODUzNzIiCisgIGRlcGVuZGVuY2llczoKKyAgICBjYW1lbC1jYXNlICIzLjAu
eCIKKyAgICBjbGVhbi1jc3MgIjMuNC54IgorICAgIGNvbW1hbmRlciAiMi45LngiCisgICAgaGUg
IjEuMS54IgorICAgIG5jbmFtZSAiMS4wLngiCisgICAgcGFyYW0tY2FzZSAiMi4xLngiCisgICAg
cmVsYXRldXJsICIwLjIueCIKKyAgICB1Z2xpZnktanMgIjIuNy54IgorCitodG1sLXdlYnBhY2st
cGx1Z2luQF4yLjguMToKKyAgdmVyc2lvbiAiMi4yNC4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9odG1sLXdlYnBhY2stcGx1Z2luLy0vaHRtbC13ZWJwYWNrLXBs
dWdpbi0yLjI0LjEudGd6IzdmNDVmYzY3OGY2NmVhYzJkNDMzZjIyMzM2YjQzOTlkYTAyM2I1N2Ui
CisgIGRlcGVuZGVuY2llczoKKyAgICBibHVlYmlyZCAiXjMuNC42IgorICAgIGh0bWwtbWluaWZp
ZXIgIl4zLjEuMCIKKyAgICBsb2FkZXItdXRpbHMgIl4wLjIuMTYiCisgICAgbG9kYXNoICJeNC4x
Ni40IgorICAgIHByZXR0eS1lcnJvciAiXjIuMC4yIgorICAgIHRvcG9zb3J0ICJeMS4wLjAiCisK
K2h0bWxwYXJzZXIyQF4zLjguMjoKKyAgdmVyc2lvbiAiMy45LjIiCisgIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2h0bWxwYXJzZXIyLy0vaHRtbHBhcnNlcjItMy45LjIu
dGd6IzFiZGY4N2FjY2EwZjNmOWU1M2ZhNGZjY2ViMGY0YjRjYmIwMGIzMzgiCisgIGRlcGVuZGVu
Y2llczoKKyAgICBkb21lbGVtZW50dHlwZSAiXjEuMy4wIgorICAgIGRvbWhhbmRsZXIgIl4yLjMu
MCIKKyAgICBkb211dGlscyAiXjEuNS4xIgorICAgIGVudGl0aWVzICJeMS4xLjEiCisgICAgaW5o
ZXJpdHMgIl4yLjAuMSIKKyAgICByZWFkYWJsZS1zdHJlYW0gIl4yLjAuMiIKKworaHRtbHBhcnNl
cjJAfjMuMy4wOgorICB2ZXJzaW9uICIzLjMuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vaHRtbHBhcnNlcjIvLS9odG1scGFyc2VyMi0zLjMuMC50Z3ojY2M3MGQw
NWE1OWY2NTQyZTQzZjBlNjg1Yzk4MmUxNGM5MjRhOWVmZSIKKyAgZGVwZW5kZW5jaWVzOgorICAg
IGRvbWVsZW1lbnR0eXBlICIxIgorICAgIGRvbWhhbmRsZXIgIjIuMSIKKyAgICBkb211dGlscyAi
MS4xIgorICAgIHJlYWRhYmxlLXN0cmVhbSAiMS4wIgorCitodHRwLWVycm9yc0B+MS41LjA6Cisg
IHZlcnNpb24gIjEuNS4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9odHRwLWVycm9ycy8tL2h0dHAtZXJyb3JzLTEuNS4xLnRneiM3ODhjMGQyYzFkZTJjODFiOWU2
ZThjMDE4NDNiNmI5N2ViOTIwNzUwIgorICBkZXBlbmRlbmNpZXM6CisgICAgaW5oZXJpdHMgIjIu
MC4zIgorICAgIHNldHByb3RvdHlwZW9mICIxLjAuMiIKKyAgICBzdGF0dXNlcyAiPj0gMS4zLjEg
PCAyIgorCitodHRwLXByb3h5LW1pZGRsZXdhcmVAXjAuMTcuMjoKKyAgdmVyc2lvbiAiMC4xNy4z
IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9odHRwLXByb3h5LW1p
ZGRsZXdhcmUvLS9odHRwLXByb3h5LW1pZGRsZXdhcmUtMC4xNy4zLnRneiM5NDAzODIxNDcxNDli
ODU2MDg0ZjU1MzQ3NTJkNWI1YTgxNjhjZDFkIgorICBkZXBlbmRlbmNpZXM6CisgICAgaHR0cC1w
cm94eSAiXjEuMTYuMiIKKyAgICBpcy1nbG9iICJeMy4xLjAiCisgICAgbG9kYXNoICJeNC4xNy4y
IgorICAgIG1pY3JvbWF0Y2ggIl4yLjMuMTEiCisKK2h0dHAtcHJveHlAXjEuMTYuMjoKKyAgdmVy
c2lvbiAiMS4xNi4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9o
dHRwLXByb3h5Ly0vaHR0cC1wcm94eS0xLjE2LjIudGd6IzA2ZGZmMjkyOTUyYmY2NGRiZTg0NzFm
YTlkZjczMDY2ZDRmMzc3NDIiCisgIGRlcGVuZGVuY2llczoKKyAgICBldmVudGVtaXR0ZXIzICIx
LngueCIKKyAgICByZXF1aXJlcy1wb3J0ICIxLngueCIKKworaHR0cC1zaWduYXR1cmVAfjEuMS4w
OgorICB2ZXJzaW9uICIxLjEuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vaHR0cC1zaWduYXR1cmUvLS9odHRwLXNpZ25hdHVyZS0xLjEuMS50Z3ojZGY3MmUyNjcw
NjZjZDBhYzY3ZmI3NmFkZjhlMTM0YThmYmNmOTFiZiIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGFz
c2VydC1wbHVzICJeMC4yLjAiCisgICAganNwcmltICJeMS4yLjIiCisgICAgc3NocGsgIl4xLjcu
MCIKKworaHR0cHMtYnJvd3NlcmlmeUAwLjAuMToKKyAgdmVyc2lvbiAiMC4wLjEiCisgIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2h0dHBzLWJyb3dzZXJpZnkvLS9odHRw
cy1icm93c2VyaWZ5LTAuMC4xLnRneiMzZjkxMzY1Y2FiZTYwYjc3ZWQwZWJiYTI0YjQ1NGUzZTA5
ZDk1YTgyIgorCitpY3NzLXJlcGxhY2Utc3ltYm9sc0BeMS4wLjI6CisgIHZlcnNpb24gIjEuMC4y
IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pY3NzLXJlcGxhY2Ut
c3ltYm9scy8tL2ljc3MtcmVwbGFjZS1zeW1ib2xzLTEuMC4yLnRneiNjYjBiNjA1NGViM2FmNmVk
YzlhYjFkNjJkMDE5MzNlMmQ0YzhiZmE1IgorCitpZWVlNzU0QF4xLjEuNDoKKyAgdmVyc2lvbiAi
MS4xLjgiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2llZWU3NTQv
LS9pZWVlNzU0LTEuMS44LnRneiNiZTMzZDQwYWMxMGVmMTkyNjcwMWY2ZjA4YTJkODZmYmZkMWFk
M2U0IgorCitpZ25vcmVAXjMuMi4wOgorICB2ZXJzaW9uICIzLjIuMCIKKyAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaWdub3JlLy0vaWdub3JlLTMuMi4wLnRneiM4ZDg4
ZjAzYzMwMDJhMGFjNTIxMTRkYjI1ZDJjNjczYjBiZjFlNDM1IgorCitpbXVybXVyaGFzaEBeMC4x
LjQ6CisgIHZlcnNpb24gIjAuMS40IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9pbXVybXVyaGFzaC8tL2ltdXJtdXJoYXNoLTAuMS40LnRneiM5MjE4YjliMmI5Mjhh
MjM4YjEzZGM0ZmI2YjZkNTc2ZjIzMTQ1M2VhIgorCitpbmRleGVzLW9mQF4xLjAuMToKKyAgdmVy
c2lvbiAiMS4wLjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lu
ZGV4ZXMtb2YvLS9pbmRleGVzLW9mLTEuMC4xLnRneiNmMzBmNzE2YzhlMmJkMzQ2YzdiNjdkM2Rm
MzkxNTU2NmE3YzA1NjA3IgorCitpbmRleG9mQDAuMC4xOgorICB2ZXJzaW9uICIwLjAuMSIKKyAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaW5kZXhvZi8tL2luZGV4b2Yt
MC4wLjEudGd6IzgyZGMzMzZkMjMyYjkwNjIxNzlkMDVhYjMyOTNhNjYwNTlmZDQzNWQiCisKK2lu
ZmxpZ2h0QF4xLjAuNDoKKyAgdmVyc2lvbiAiMS4wLjYiCisgIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL2luZmxpZ2h0Ly0vaW5mbGlnaHQtMS4wLjYudGd6IzQ5YmQ2MzMx
ZDdkMDJkMGMwOWJjOTEwYTEwNzViYTgxNjViNTZkZjkiCisgIGRlcGVuZGVuY2llczoKKyAgICBv
bmNlICJeMS4zLjAiCisgICAgd3JhcHB5ICIxIgorCitpbmhlcml0c0BeMi4wLjEsIGluaGVyaXRz
QH4yLjAuMCwgaW5oZXJpdHNAfjIuMC4xLCBpbmhlcml0c0AyLCBpbmhlcml0c0AyLjAuMzoKKyAg
dmVyc2lvbiAiMi4wLjMiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L2luaGVyaXRzLy0vaW5oZXJpdHMtMi4wLjMudGd6IzYzM2MyYzgzZTNkYTQyYTUwMmY1MjQ2NjAy
MjQ4MGY0MjA4MjYxZGUiCisKK2luaGVyaXRzQDIuMC4xOgorICB2ZXJzaW9uICIyLjAuMSIKKyAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaW5oZXJpdHMvLS9pbmhlcml0
cy0yLjAuMS50Z3ojYjE3ZDA4ZDMyNmI0NDIzZTU2OGVmZjcxOWY5MWIwYjFjYmRmNjlmMSIKKwor
aW5pQF4xLjMuNCwgaW5pQH4xLjMuMDoKKyAgdmVyc2lvbiAiMS4zLjQiCisgIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2luaS8tL2luaS0xLjMuNC50Z3ojMDUzN2NiNzlk
YWY1OWI1OWExYTUxN2RmZjcwNmM4NmVjMDM5MTYyZSIKKworaW5xdWlyZXJAXjAuMTIuMDoKKyAg
dmVyc2lvbiAiMC4xMi4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9pbnF1aXJlci8tL2lucXVpcmVyLTAuMTIuMC50Z3ojMWVmMmJmZDYzNTA0ZGYwYmM3NTc4NWZm
ZjhjMmM0MWRmMTJmMDc3ZSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGFuc2ktZXNjYXBlcyAiXjEu
MS4wIgorICAgIGFuc2ktcmVnZXggIl4yLjAuMCIKKyAgICBjaGFsayAiXjEuMC4wIgorICAgIGNs
aS1jdXJzb3IgIl4xLjAuMSIKKyAgICBjbGktd2lkdGggIl4yLjAuMCIKKyAgICBmaWd1cmVzICJe
MS4zLjUiCisgICAgbG9kYXNoICJeNC4zLjAiCisgICAgcmVhZGxpbmUyICJeMS4wLjEiCisgICAg
cnVuLWFzeW5jICJeMC4xLjAiCisgICAgcngtbGl0ZSAiXjMuMS4yIgorICAgIHN0cmluZy13aWR0
aCAiXjEuMC4xIgorICAgIHN0cmlwLWFuc2kgIl4zLjAuMCIKKyAgICB0aHJvdWdoICJeMi4zLjYi
CisKK2ludGVycHJldEBeMC42LjQ6CisgIHZlcnNpb24gIjAuNi42IgorICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pbnRlcnByZXQvLS9pbnRlcnByZXQtMC42LjYudGd6
I2ZlY2Q3YTE4ZTdjZTVjYTZhYmZiOTUzZTFmODYyMTNhNDlmMTYyNWIiCisKK2ludGVycHJldEBe
MS4wLjA6CisgIHZlcnNpb24gIjEuMC4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9pbnRlcnByZXQvLS9pbnRlcnByZXQtMS4wLjEudGd6I2Q1NzlmYjdmNjkzYjg1
ODAwNDk0N2FmMzlmYTBkYjQ5Zjc5NTYwMmMiCisKK2ludmFyaWFudEBeMi4yLjA6CisgIHZlcnNp
b24gIjIuMi4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pbnZh
cmlhbnQvLS9pbnZhcmlhbnQtMi4yLjIudGd6IzllMWY1NmFjMGFjZGI2YmYzMDMzMDZmMzM4YmUz
YjIwNGFlNjAzNjAiCisgIGRlcGVuZGVuY2llczoKKyAgICBsb29zZS1lbnZpZnkgIl4xLjAuMCIK
KworaXBhZGRyLmpzQDEuMS4xOgorICB2ZXJzaW9uICIxLjEuMSIKKyAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXBhZGRyLmpzLy0vaXBhZGRyLmpzLTEuMS4xLnRneiNj
NzkxZDk1ZjUyYjI5YzEyNDdkNWRmODBhZGEzOWI4YTczNjQ3MjMwIgorCitpcy1hYnNvbHV0ZS11
cmxAXjIuMC4wOgorICB2ZXJzaW9uICIyLjAuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vaXMtYWJzb2x1dGUtdXJsLy0vaXMtYWJzb2x1dGUtdXJsLTIuMC4wLnRn
eiM5YzRiMjBiMGU1YzBjYmVmOWE0NzlhMzY3ZWRlNmY5OTE2NzlmMzU5IgorCitpcy1iaW5hcnkt
cGF0aEBeMS4wLjA6CisgIHZlcnNpb24gIjEuMC4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9pcy1iaW5hcnktcGF0aC8tL2lzLWJpbmFyeS1wYXRoLTEuMC4xLnRn
eiM3NWYxNjY0MmI0ODBmMTg3YTcxMWM4MTQxNjFmZDNhNGE3NjU1ODk4IgorICBkZXBlbmRlbmNp
ZXM6CisgICAgYmluYXJ5LWV4dGVuc2lvbnMgIl4xLjAuMCIKKworaXMtYnVmZmVyQF4xLjAuMjoK
KyAgdmVyc2lvbiAiMS4xLjQiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL2lzLWJ1ZmZlci8tL2lzLWJ1ZmZlci0xLjEuNC50Z3ojY2ZjODZjY2Q1ZGM1YTUyZmE4MDQ4
OTExMWM2OTIwYzQ1N2UyZDk4YiIKKworaXMtZG90ZmlsZUBeMS4wLjA6CisgIHZlcnNpb24gIjEu
MC4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy1kb3RmaWxl
Ly0vaXMtZG90ZmlsZS0xLjAuMi50Z3ojMmMxMzIzODNmMzkxOTlmOGVkYzI2OGNhMDFiOWIwMDdk
MjA1Y2M0ZCIKKworaXMtZXF1YWwtc2hhbGxvd0BeMC4xLjM6CisgIHZlcnNpb24gIjAuMS4zIgor
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy1lcXVhbC1zaGFsbG93
Ly0vaXMtZXF1YWwtc2hhbGxvdy0wLjEuMy50Z3ojMjIzODA5OGZjMjIxZGUwYmNmYTVkOWVhYzRj
NDVkNjM4YWExYzUzNCIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGlzLXByaW1pdGl2ZSAiXjIuMC4w
IgorCitpcy1leHRlbmRhYmxlQF4wLjEuMToKKyAgdmVyc2lvbiAiMC4xLjEiCisgIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lzLWV4dGVuZGFibGUvLS9pcy1leHRlbmRh
YmxlLTAuMS4xLnRneiM2MmIxMTBlMjg5YTQ3MTQxOGUzZWMzNmE2MTdkNDcyZTMwMWRmYzg5Igor
Citpcy1leHRnbG9iQF4xLjAuMDoKKyAgdmVyc2lvbiAiMS4wLjAiCisgIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lzLWV4dGdsb2IvLS9pcy1leHRnbG9iLTEuMC4wLnRn
eiNhYzQ2ODE3N2M0OTQzNDA1YTA5MmZjOGYyOTc2MGM2ZmZjNjIwNmMwIgorCitpcy1leHRnbG9i
QF4yLjEuMDoKKyAgdmVyc2lvbiAiMi4xLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL2lzLWV4dGdsb2IvLS9pcy1leHRnbG9iLTIuMS4wLnRneiMzMzQxMWE0ODJi
MDQ2YmY5NWU2YjBjYjI3ZWUyNzExYWY0Y2YxNWFkIgorCitpcy1maW5pdGVAXjEuMC4wOgorICB2
ZXJzaW9uICIxLjAuMiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
aXMtZmluaXRlLy0vaXMtZmluaXRlLTEuMC4yLnRneiNjYzY2Nzc2OTU2MDJiZTU1MGVmMTFlOGI0
YWE2MzA1MzQyYjZkMGFhIgorICBkZXBlbmRlbmNpZXM6CisgICAgbnVtYmVyLWlzLW5hbiAiXjEu
MC4wIgorCitpcy1mdWxsd2lkdGgtY29kZS1wb2ludEBeMS4wLjA6CisgIHZlcnNpb24gIjEuMC4w
IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy1mdWxsd2lkdGgt
Y29kZS1wb2ludC8tL2lzLWZ1bGx3aWR0aC1jb2RlLXBvaW50LTEuMC4wLnRneiNlZjllMzEzODZm
MDMxYTdmMGQ2NDNhZjgyZmRlNTBjNDU3ZWYwMGNiIgorICBkZXBlbmRlbmNpZXM6CisgICAgbnVt
YmVyLWlzLW5hbiAiXjEuMC4wIgorCitpcy1mdWxsd2lkdGgtY29kZS1wb2ludEBeMi4wLjA6Cisg
IHZlcnNpb24gIjIuMC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9pcy1mdWxsd2lkdGgtY29kZS1wb2ludC8tL2lzLWZ1bGx3aWR0aC1jb2RlLXBvaW50LTIuMC4w
LnRneiNhM2IzMGE1YzRmMTk5MTgzMTY3YWFhYjkzYmVlZmFlM2RkZmI2NTRmIgorCitpcy1nbG9i
QF4yLjAuMCwgaXMtZ2xvYkBeMi4wLjE6CisgIHZlcnNpb24gIjIuMC4xIgorICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy1nbG9iLy0vaXMtZ2xvYi0yLjAuMS50Z3oj
ZDA5NmY5MjZhM2RlZDU2MDBmM2ZkZmQ5MTE5OGNiMDg4OGMyZDg2MyIKKyAgZGVwZW5kZW5jaWVz
OgorICAgIGlzLWV4dGdsb2IgIl4xLjAuMCIKKworaXMtZ2xvYkBeMy4xLjA6CisgIHZlcnNpb24g
IjMuMS4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy1nbG9i
Ly0vaXMtZ2xvYi0zLjEuMC50Z3ojN2JhNWFlMjQyMTc4MDRhYzcwNzA3Yjk2OTIyNTY3NDg2Y2Mz
ZTg0YSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGlzLWV4dGdsb2IgIl4yLjEuMCIKKworaXMtbXkt
anNvbi12YWxpZEBeMi4xMC4wLCBpcy1teS1qc29uLXZhbGlkQF4yLjEyLjQ6CisgIHZlcnNpb24g
IjIuMTUuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXMtbXkt
anNvbi12YWxpZC8tL2lzLW15LWpzb24tdmFsaWQtMi4xNS4wLnRneiM5MzZlZGRhM2NhM2MyMTFm
ZDk4ZjNiMmQzZTA4ZGE0M2Y3YjI5MTViIgorICBkZXBlbmRlbmNpZXM6CisgICAgZ2VuZXJhdGUt
ZnVuY3Rpb24gIl4yLjAuMCIKKyAgICBnZW5lcmF0ZS1vYmplY3QtcHJvcGVydHkgIl4xLjEuMCIK
KyAgICBqc29ucG9pbnRlciAiXjQuMC4wIgorICAgIHh0ZW5kICJeNC4wLjAiCisKK2lzLW51bWJl
ckBeMi4wLjIsIGlzLW51bWJlckBeMi4xLjA6CisgIHZlcnNpb24gIjIuMS4wIgorICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy1udW1iZXIvLS9pcy1udW1iZXItMi4x
LjAudGd6IzAxZmNiYmIzOTM0NjNhNTQ4ZjJmNDY2Y2NlMTZkZWNlNDlkYjkwOGYiCisgIGRlcGVu
ZGVuY2llczoKKyAgICBraW5kLW9mICJeMy4wLjIiCisKK2lzLXBhdGgtY3dkQF4xLjAuMDoKKyAg
dmVyc2lvbiAiMS4wLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L2lzLXBhdGgtY3dkLy0vaXMtcGF0aC1jd2QtMS4wLjAudGd6I2QyMjVlYzIzMTMyZTg5ZWRkMzhm
ZGE3Njc0NzJlNjJlNjVmMTEwNmQiCisKK2lzLXBhdGgtaW4tY3dkQF4xLjAuMDoKKyAgdmVyc2lv
biAiMS4wLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lzLXBh
dGgtaW4tY3dkLy0vaXMtcGF0aC1pbi1jd2QtMS4wLjAudGd6IzY0Nzc1ODJiODIxNGQ2MDIzNDYw
OTQ1NjcwMDNiZThhOWVhYzA0ZGMiCisgIGRlcGVuZGVuY2llczoKKyAgICBpcy1wYXRoLWluc2lk
ZSAiXjEuMC4wIgorCitpcy1wYXRoLWluc2lkZUBeMS4wLjA6CisgIHZlcnNpb24gIjEuMC4wIgor
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy1wYXRoLWluc2lkZS8t
L2lzLXBhdGgtaW5zaWRlLTEuMC4wLnRneiNmYzA2ZTVhMTY4M2ZiZGExM2RlNjY3YWZmNzE3YmJj
MTBhNDhmMzdmIgorICBkZXBlbmRlbmNpZXM6CisgICAgcGF0aC1pcy1pbnNpZGUgIl4xLjAuMSIK
KworaXMtcGxhaW4tb2JqQF4xLjAuMDoKKyAgdmVyc2lvbiAiMS4xLjAiCisgIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lzLXBsYWluLW9iai8tL2lzLXBsYWluLW9iai0x
LjEuMC50Z3ojNzFhNTBjODQyOWRmY2E3NzNjOTJhMzkwYTRhMDNiMzlmY2Q1MWQzZSIKKworaXMt
cG9zaXgtYnJhY2tldEBeMC4xLjA6CisgIHZlcnNpb24gIjAuMS4xIgorICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy1wb3NpeC1icmFja2V0Ly0vaXMtcG9zaXgtYnJh
Y2tldC0wLjEuMS50Z3ojMzMzNGRjNzk3NzQzNjhlOTJmMDE2ZTZmYmMwYTg4ZjVjZDZlNmJjNCIK
KworaXMtcHJpbWl0aXZlQF4yLjAuMDoKKyAgdmVyc2lvbiAiMi4wLjAiCisgIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lzLXByaW1pdGl2ZS8tL2lzLXByaW1pdGl2ZS0y
LjAuMC50Z3ojMjA3YmFiOTE2Mzg0OTljMDdiMmFkZjI0MGE0MWE4NzIxMDAzNDU3NSIKKworaXMt
cHJvcGVydHlAXjEuMC4wOgorICB2ZXJzaW9uICIxLjAuMiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vaXMtcHJvcGVydHkvLS9pcy1wcm9wZXJ0eS0xLjAuMi50Z3oj
NTdmZTFjNGU0ODQ3NGVkZDY1YjA5OTExZjI2YjFjZDQwOTVkZGE4NCIKKworaXMtcmVzb2x2YWJs
ZUBeMS4wLjA6CisgIHZlcnNpb24gIjEuMC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9pcy1yZXNvbHZhYmxlLy0vaXMtcmVzb2x2YWJsZS0xLjAuMC50Z3ojOGRm
NTdjNjFlYTJlM2M1MDE0MDhkMTAwZmIwMTNjZjhkNmUwY2M2MiIKKyAgZGVwZW5kZW5jaWVzOgor
ICAgIHRyeWl0ICJeMS4wLjEiCisKK2lzLXN2Z0BeMi4wLjA6CisgIHZlcnNpb24gIjIuMS4wIgor
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy1zdmcvLS9pcy1zdmct
Mi4xLjAudGd6I2NmNjEwOTBkYTBkOWVmYmNhYjg3MjJkZWJhNmYwMzIyMDhkYmIwZTkiCisgIGRl
cGVuZGVuY2llczoKKyAgICBodG1sLWNvbW1lbnQtcmVnZXggIl4xLjEuMCIKKworaXMtdHlwZWRh
cnJheUB+MS4wLjA6CisgIHZlcnNpb24gIjEuMC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9pcy10eXBlZGFycmF5Ly0vaXMtdHlwZWRhcnJheS0xLjAuMC50Z3oj
ZTQ3OWM4MDg1OGRmMGMxYjExZGRkYTY5NDBmOTYwMTFmY2RhNGE5YSIKKworaXNhcnJheUBeMS4w
LjAsIGlzYXJyYXlAfjEuMC4wLCBpc2FycmF5QDEuMC4wOgorICB2ZXJzaW9uICIxLjAuMCIKKyAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXNhcnJheS8tL2lzYXJyYXkt
MS4wLjAudGd6I2JiOTM1ZDQ4NTgyY2JhMTY4YzA2ODM0OTU3YTU0YTNlMDcxMjRmMTEiCisKK2lz
YXJyYXlAMC4wLjE6CisgIHZlcnNpb24gIjAuMC4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9pc2FycmF5Ly0vaXNhcnJheS0wLjAuMS50Z3ojOGExOGFjZmNhOWE4
ZjQxNzdlMDlhYmZjNjAzODkzOWIwNWQxZWVkZiIKKworaXNvYmplY3RAXjIuMC4wOgorICB2ZXJz
aW9uICIyLjEuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXNv
YmplY3QvLS9pc29iamVjdC0yLjEuMC50Z3ojZjA2NTU2MTA5NmEzZjFkYTJlZjQ2MjcyZjgxNWM4
NDBkODdlMGM4OSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGlzYXJyYXkgIjEuMC4wIgorCitpc3N0
cmVhbUB+MC4xLjI6CisgIHZlcnNpb24gIjAuMS4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9pc3N0cmVhbS8tL2lzc3RyZWFtLTAuMS4yLnRneiM0N2U2M2Y3YWY1
NWFmYTZmOTJlMTUwMGU2OTBlYjhiODUyOWMwOTlhIgorCitqb2RpZDI1NTE5QF4xLjAuMDoKKyAg
dmVyc2lvbiAiMS4wLjIiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L2pvZGlkMjU1MTkvLS9qb2RpZDI1NTE5LTEuMC4yLnRneiMwNmQ0OTEyMjU1MDkzNDE5NDc3ZDQy
NTYzMzYwNmUwZTkwNzgyOTY3IgorICBkZXBlbmRlbmNpZXM6CisgICAganNibiAifjAuMS4wIgor
Citqcy1iYXNlNjRAXjIuMS45OgorICB2ZXJzaW9uICIyLjEuOSIKKyAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vanMtYmFzZTY0Ly0vanMtYmFzZTY0LTIuMS45LnRneiNm
MGU4MGFlMDM5YTRiZDY1NGI1ZjI4MWZjOTNmMDRhOTE0YTdmY2NlIgorCitqcy1iZWF1dGlmeUBe
MS42LjM6CisgIHZlcnNpb24gIjEuNi40IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9qcy1iZWF1dGlmeS8tL2pzLWJlYXV0aWZ5LTEuNi40LnRneiNhOWFmNzk2OTk3
NDJhYzlhMWI2ZmRkYzFmZGJjNzhiYzRkNTE1ZmMzIgorICBkZXBlbmRlbmNpZXM6CisgICAgY29u
ZmlnLWNoYWluICJ+MS4xLjUiCisgICAgZWRpdG9yY29uZmlnICJeMC4xMy4yIgorICAgIG1rZGly
cCAifjAuNS4wIgorICAgIG5vcHQgIn4zLjAuMSIKKworanMtdG9rZW5zQF4yLjAuMDoKKyAgdmVy
c2lvbiAiMi4wLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2pz
LXRva2Vucy8tL2pzLXRva2Vucy0yLjAuMC50Z3ojNzk5MDNmNTU2M2VlNzc4Y2MxMTYyZTZkY2Yx
YTAwMjdjOTdmOWNiNSIKKworanMteWFtbEBeMy41LjE6CisgIHZlcnNpb24gIjMuNy4wIgorICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9qcy15YW1sLy0vanMteWFtbC0z
LjcuMC50Z3ojNWM5NjdkZGQ4MzdhOWJmZGNhNWYyZGU4NDI1M2FiZThhMWMwM2I4MCIKKyAgZGVw
ZW5kZW5jaWVzOgorICAgIGFyZ3BhcnNlICJeMS4wLjciCisgICAgZXNwcmltYSAiXjIuNi4wIgor
Citqcy15YW1sQH4zLjYuMToKKyAgdmVyc2lvbiAiMy42LjEiCisgIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2pzLXlhbWwvLS9qcy15YW1sLTMuNi4xLnRneiM2ZTVmZTY3
ZDhiMjA1Y2U0ZDIyZmFkMDViNzc4MWU4ZGFkY2M0YjMwIgorICBkZXBlbmRlbmNpZXM6CisgICAg
YXJncGFyc2UgIl4xLjAuNyIKKyAgICBlc3ByaW1hICJeMi42LjAiCisKK2pzYm5AfjAuMS4wOgor
ICB2ZXJzaW9uICIwLjEuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vanNibi8tL2pzYm4tMC4xLjAudGd6IzY1MDk4N2RhMGRkNzRmNGViZjVhMTEzNzdhMmFhMmQy
NzNlOTdkZmQiCisKK2pzZXNjQF4xLjMuMDoKKyAgdmVyc2lvbiAiMS4zLjAiCisgIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2pzZXNjLy0vanNlc2MtMS4zLjAudGd6IzQ2
YzNmZWM4YzE4OTJiMTJiMDgzM2RiOWJjNzYyMjE3NmRiYWIzNGIiCisKK2pzZXNjQH4wLjUuMDoK
KyAgdmVyc2lvbiAiMC41LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL2pzZXNjLy0vanNlc2MtMC41LjAudGd6I2U3ZGVlNjZlMzVkNmZjMTZmNzEwZmU5MWQ1Y2Y2
OWY3MGYwODkxMWQiCisKK2pzb24tbG9hZGVyQF4wLjUuNDoKKyAgdmVyc2lvbiAiMC41LjQiCisg
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2pzb24tbG9hZGVyLy0vanNv
bi1sb2FkZXItMC41LjQudGd6IzhiYWExMzY1YTYzMmY1OGEzYzQ2ZDIwMTc1ZmM2MDAyYzk2ZTM3
ZGUiCisKK2pzb24tc2NoZW1hQDAuMi4zOgorICB2ZXJzaW9uICIwLjIuMyIKKyAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vanNvbi1zY2hlbWEvLS9qc29uLXNjaGVtYS0w
LjIuMy50Z3ojYjQ4MGM4OTJlNTlhMmYwNTk1NGNlNzI3YmQzZjJhNGU4ODJmOWUxMyIKKworanNv
bi1zdGFibGUtc3RyaW5naWZ5QF4xLjAuMCwganNvbi1zdGFibGUtc3RyaW5naWZ5QF4xLjAuMToK
KyAgdmVyc2lvbiAiMS4wLjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL2pzb24tc3RhYmxlLXN0cmluZ2lmeS8tL2pzb24tc3RhYmxlLXN0cmluZ2lmeS0xLjAuMS50
Z3ojOWE3NTlkMzljNWYyZmY1MDNmZDUzMDA2NDZlZDQ0NWY4OGM0ZjlhZiIKKyAgZGVwZW5kZW5j
aWVzOgorICAgIGpzb25pZnkgIn4wLjAuMCIKKworanNvbi1zdHJpbmdpZnktc2FmZUB+NS4wLjE6
CisgIHZlcnNpb24gIjUuMC4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9qc29uLXN0cmluZ2lmeS1zYWZlLy0vanNvbi1zdHJpbmdpZnktc2FmZS01LjAuMS50Z3oj
MTI5NmEyZDU4ZmQ0NWYxOWEwZjZjZTAxZDY1NzAxZTJjNzM1YjZlYiIKKworanNvbjVAXjAuNS4w
OgorICB2ZXJzaW9uICIwLjUuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vanNvbjUvLS9qc29uNS0wLjUuMS50Z3ojMWVhZGU3YWNjMDEyMDM0YWQ4NGUyMzk2NzY3
ZWFkOWZhNTQ5NTgyMSIKKworanNvbmlmeUB+MC4wLjA6CisgIHZlcnNpb24gIjAuMC4wIgorICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9qc29uaWZ5Ly0vanNvbmlmeS0w
LjAuMC50Z3ojMmM3NGI2ZWU0MWQ5M2NhNTFiN2I1YWFlZThmNTAzNjMxZDI1MmE3MyIKKworanNv
bnBvaW50ZXJAXjQuMC4wOgorICB2ZXJzaW9uICI0LjAuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vanNvbnBvaW50ZXIvLS9qc29ucG9pbnRlci00LjAuMC50Z3oj
NjY2MWUxNjFkMmZjNDQ1ZjE5Zjk4NDMwMjMxMzQzNzIyZTFmY2JkNSIKKworanNwcmltQF4xLjIu
MjoKKyAgdmVyc2lvbiAiMS4zLjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w
a2cuY29tL2pzcHJpbS8tL2pzcHJpbS0xLjMuMS50Z3ojMmE3MjU2ZjcwNDEyYTI5ZWUzNjcwYWFj
YTYyNTk5NGM0ZGNmZjI1MiIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGV4dHNwcmludGYgIjEuMC4y
IgorICAgIGpzb24tc2NoZW1hICIwLjIuMyIKKyAgICB2ZXJyb3IgIjEuMy42IgorCitraW5kLW9m
QF4zLjAuMjoKKyAgdmVyc2lvbiAiMy4xLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL2tpbmQtb2YvLS9raW5kLW9mLTMuMS4wLnRneiM0NzVkNjk4YTVlNDlmZjVl
NTNkMTRlM2U3MzI0MjlkYzhiZjRjZjQ3IgorICBkZXBlbmRlbmNpZXM6CisgICAgaXMtYnVmZmVy
ICJeMS4wLjIiCisKK2xhenktY2FjaGVAXjEuMC4zOgorICB2ZXJzaW9uICIxLjAuNCIKKyAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbGF6eS1jYWNoZS8tL2xhenktY2Fj
aGUtMS4wLjQudGd6I2ExZDc4ZmMzYTUwNDc0Y2I4MDg0NWQzYjNiNmUxZGE0OWE0NDZlOGUiCisK
K2xldm5AXjAuMy4wLCBsZXZuQH4wLjMuMDoKKyAgdmVyc2lvbiAiMC4zLjAiCisgIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2xldm4vLS9sZXZuLTAuMy4wLnRneiMzYjA5
OTI0ZWRmOWYwODNjMDQ5MGZkZDRjMGJjNDQyMWUwNDc2NGVlIgorICBkZXBlbmRlbmNpZXM6Cisg
ICAgcHJlbHVkZS1scyAifjEuMS4yIgorICAgIHR5cGUtY2hlY2sgIn4wLjMuMiIKKworbG9hZGVy
LXV0aWxzQF4wLjIuMTAsIGxvYWRlci11dGlsc0BeMC4yLjExLCBsb2FkZXItdXRpbHNAXjAuMi4x
NiwgbG9hZGVyLXV0aWxzQF4wLjIuMywgbG9hZGVyLXV0aWxzQF4wLjIuNywgbG9hZGVyLXV0aWxz
QH4wLjIuMiwgbG9hZGVyLXV0aWxzQH4wLjIuNSwgbG9hZGVyLXV0aWxzQDAuMi54OgorICB2ZXJz
aW9uICIwLjIuMTYiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2xv
YWRlci11dGlscy8tL2xvYWRlci11dGlscy0wLjIuMTYudGd6I2YwODYzMjA2NmVkODI4MjgzNWRm
Zjg4ZGZiNTI3MDQ3NjVhZGVlNmQiCisgIGRlcGVuZGVuY2llczoKKyAgICBiaWcuanMgIl4zLjEu
MyIKKyAgICBlbW9qaXMtbGlzdCAiXjIuMC4wIgorICAgIGpzb241ICJeMC41LjAiCisgICAgb2Jq
ZWN0LWFzc2lnbiAiXjQuMC4xIgorCitsb2Rhc2guX2FycmF5Y29weUBeMy4wLjA6CisgIHZlcnNp
b24gIjMuMC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9sb2Rh
c2guX2FycmF5Y29weS8tL2xvZGFzaC5fYXJyYXljb3B5LTMuMC4wLnRneiM3NmU3YjdjMWYxZmI5
MjU0NzM3NDg3OGE1NjJlZDA2YTNlNTBmNmUxIgorCitsb2Rhc2guX2FycmF5ZWFjaEBeMy4wLjA6
CisgIHZlcnNpb24gIjMuMC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9sb2Rhc2guX2FycmF5ZWFjaC8tL2xvZGFzaC5fYXJyYXllYWNoLTMuMC4wLnRneiNiYWIx
NTZiMmE5MGQzZjFiYmQ1YzY1MzQwMzM0OWU1ZTU5MzNlZjllIgorCitsb2Rhc2guX2Jhc2VjYWxs
YmFja0BeMy4wLjA6CisgIHZlcnNpb24gIjMuMy4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9sb2Rhc2guX2Jhc2VjYWxsYmFjay8tL2xvZGFzaC5fYmFzZWNhbGxi
YWNrLTMuMy4xLnRneiNiN2IyYmI0M2RjMjE2MDQyNGEyMWNjZjI2YzU3ZTQ0Mzc3MmE4ZTI3Igor
ICBkZXBlbmRlbmNpZXM6CisgICAgbG9kYXNoLl9iYXNlaXNlcXVhbCAiXjMuMC4wIgorICAgIGxv
ZGFzaC5fYmluZGNhbGxiYWNrICJeMy4wLjAiCisgICAgbG9kYXNoLmlzYXJyYXkgIl4zLjAuMCIK
KyAgICBsb2Rhc2gucGFpcnMgIl4zLjAuMCIKKworbG9kYXNoLl9iYXNlY29weUBeMy4wLjA6Cisg
IHZlcnNpb24gIjMuMC4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9sb2Rhc2guX2Jhc2Vjb3B5Ly0vbG9kYXNoLl9iYXNlY29weS0zLjAuMS50Z3ojOGRhMGU2YTg3
NmNmMzQ0YzBhZDhhNTQ4ODIxMTFkZDNjNWM3Y2EzNiIKKworbG9kYXNoLl9iYXNlZWFjaEBeMy4w
LjA6CisgIHZlcnNpb24gIjMuMC40IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9sb2Rhc2guX2Jhc2VlYWNoLy0vbG9kYXNoLl9iYXNlZWFjaC0zLjAuNC50Z3ojY2Y4
NzA2NTcyY2ExNDRlOGQ5ZDc1MjI3Yzk5MGRhOTgyZjkzMmFmMyIKKyAgZGVwZW5kZW5jaWVzOgor
ICAgIGxvZGFzaC5rZXlzICJeMy4wLjAiCisKK2xvZGFzaC5fYmFzZWZpbmRAXjMuMC4wOgorICB2
ZXJzaW9uICIzLjAuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
bG9kYXNoLl9iYXNlZmluZC8tL2xvZGFzaC5fYmFzZWZpbmQtMy4wLjAudGd6I2IyYmJhMDVjYzY0
NWY5NzJkZTJjZjkyNWZhMmJmNjNhMGY2MGM4YWUiCisKK2xvZGFzaC5fYmFzZWZpbmRpbmRleEBe
My4wLjA6CisgIHZlcnNpb24gIjMuNi4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9sb2Rhc2guX2Jhc2VmaW5kaW5kZXgvLS9sb2Rhc2guX2Jhc2VmaW5kaW5kZXgt
My42LjAudGd6I2YwODMzNjBhMWIwMjI0MThlZDgxYmM4OTliZWIzMTJlMjFlNzRhNGYiCisKK2xv
ZGFzaC5fYmFzZWZvckBeMy4wLjA6CisgIHZlcnNpb24gIjMuMC4zIgorICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9sb2Rhc2guX2Jhc2Vmb3IvLS9sb2Rhc2guX2Jhc2Vm
b3ItMy4wLjMudGd6Izc1NTBiNGU5MjE4ZWYwOWZhZDI0MzQzYjYxMjAyMWM3OWI0YzIwYzIiCisK
K2xvZGFzaC5fYmFzZWlzZXF1YWxAXjMuMC4wOgorICB2ZXJzaW9uICIzLjAuNyIKKyAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbG9kYXNoLl9iYXNlaXNlcXVhbC8tL2xv
ZGFzaC5fYmFzZWlzZXF1YWwtMy4wLjcudGd6I2Q4MDI1Zjc2MzM5ZDI5MzQyNzY3ZGNjODg3Y2U1
Y2I5NWE1YjUxZjEiCisgIGRlcGVuZGVuY2llczoKKyAgICBsb2Rhc2guaXNhcnJheSAiXjMuMC4w
IgorICAgIGxvZGFzaC5pc3R5cGVkYXJyYXkgIl4zLjAuMCIKKyAgICBsb2Rhc2gua2V5cyAiXjMu
MC4wIgorCitsb2Rhc2guX2JpbmRjYWxsYmFja0BeMy4wLjA6CisgIHZlcnNpb24gIjMuMC4xIgor
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9sb2Rhc2guX2JpbmRjYWxs
YmFjay8tL2xvZGFzaC5fYmluZGNhbGxiYWNrLTMuMC4xLnRneiNlNTMxYzI3NjQ0Y2Y4YjU3YTk5
ZTE3ZWQ5NWIzNWM3NDg3ODkzOTJlIgorCitsb2Rhc2guX2NyZWF0ZWFzc2lnbmVyQF4zLjAuMDoK
KyAgdmVyc2lvbiAiMy4xLjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL2xvZGFzaC5fY3JlYXRlYXNzaWduZXIvLS9sb2Rhc2guX2NyZWF0ZWFzc2lnbmVyLTMuMS4x
LnRneiM4MzhhNWJhZTJmZGFjYTYzYWMyMmRlZThlMTlmYTRlNmQ2OTcwYjExIgorICBkZXBlbmRl
bmNpZXM6CisgICAgbG9kYXNoLl9iaW5kY2FsbGJhY2sgIl4zLjAuMCIKKyAgICBsb2Rhc2guX2lz
aXRlcmF0ZWVjYWxsICJeMy4wLjAiCisgICAgbG9kYXNoLnJlc3RwYXJhbSAiXjMuMC4wIgorCits
b2Rhc2guX2NyZWF0ZWNvbXBvdW5kZXJAXjMuMC4wOgorICB2ZXJzaW9uICIzLjAuMCIKKyAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbG9kYXNoLl9jcmVhdGVjb21wb3Vu
ZGVyLy0vbG9kYXNoLl9jcmVhdGVjb21wb3VuZGVyLTMuMC4wLnRneiM1ZGQyY2I1NTM3MmQ2ZTcw
ZTBlMjM5MmZiMjMwNGQ2NjMxMDkxMDc1IgorICBkZXBlbmRlbmNpZXM6CisgICAgbG9kYXNoLmRl
YnVyciAiXjMuMC4wIgorICAgIGxvZGFzaC53b3JkcyAiXjMuMC4wIgorCitsb2Rhc2guX2dldG5h
dGl2ZUBeMy4wLjA6CisgIHZlcnNpb24gIjMuOS4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9sb2Rhc2guX2dldG5hdGl2ZS8tL2xvZGFzaC5fZ2V0bmF0aXZlLTMu
OS4xLnRneiM1NzBiYzdkZWRlNDZkNjFjZGNkZTY4N2Q2NWQzZWVjYmFhM2FhZmY1IgorCitsb2Rh
c2guX2lzaXRlcmF0ZWVjYWxsQF4zLjAuMDoKKyAgdmVyc2lvbiAiMy4wLjkiCisgIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2xvZGFzaC5faXNpdGVyYXRlZWNhbGwvLS9s
b2Rhc2guX2lzaXRlcmF0ZWVjYWxsLTMuMC45LnRneiM1MjAzYWQ3YmE0MjVmYWU4NDI0NjBlNjk2
ZGI5Y2YzZTZhYWMwNTdjIgorCitsb2Rhc2guX3Jvb3RAXjMuMC4wOgorICB2ZXJzaW9uICIzLjAu
MSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbG9kYXNoLl9yb290
Ly0vbG9kYXNoLl9yb290LTMuMC4xLnRneiNmYmExYzQ1MjRjMTllZTlhNWY4MTM2YjQ2MDlmMDE3
Y2Y0ZGVkNjkyIgorCitsb2Rhc2guY2FtZWxjYXNlQF4zLjAuMToKKyAgdmVyc2lvbiAiMy4wLjEi
CisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2xvZGFzaC5jYW1lbGNh
c2UvLS9sb2Rhc2guY2FtZWxjYXNlLTMuMC4xLnRneiM5MzJjOGI4N2Y4YTQzNzc4OTdjNjcxOTc1
MzMyODJmOTdhZWFjMjk4IgorICBkZXBlbmRlbmNpZXM6CisgICAgbG9kYXNoLl9jcmVhdGVjb21w
b3VuZGVyICJeMy4wLjAiCisKK2xvZGFzaC5kZWJ1cnJAXjMuMC4wOgorICB2ZXJzaW9uICIzLjIu
MCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbG9kYXNoLmRlYnVy
ci8tL2xvZGFzaC5kZWJ1cnItMy4yLjAudGd6IzZkYThmNTQzMzRhMzY2YTdjZjRjNGM3NmVmOGQ4
MGFhMWIzNjVlZDUiCisgIGRlcGVuZGVuY2llczoKKyAgICBsb2Rhc2guX3Jvb3QgIl4zLjAuMCIK
KworbG9kYXNoLmZpbmRAXjMuMi4xOgorICB2ZXJzaW9uICIzLjIuMSIKKyAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbG9kYXNoLmZpbmQvLS9sb2Rhc2guZmluZC0zLjIu
MS50Z3ojMDQ2ZTMxOWYzYWNlOTEyYWM2YzkyNDZjN2Y2ODNjNWVjMDdiMzZhZCIKKyAgZGVwZW5k
ZW5jaWVzOgorICAgIGxvZGFzaC5fYmFzZWNhbGxiYWNrICJeMy4wLjAiCisgICAgbG9kYXNoLl9i
YXNlZWFjaCAiXjMuMC4wIgorICAgIGxvZGFzaC5fYmFzZWZpbmQgIl4zLjAuMCIKKyAgICBsb2Rh
c2guX2Jhc2VmaW5kaW5kZXggIl4zLjAuMCIKKyAgICBsb2Rhc2guaXNhcnJheSAiXjMuMC4wIgor
ICAgIGxvZGFzaC5rZXlzICJeMy4wLjAiCisKK2xvZGFzaC5pbmRleG9mQF40LjAuNToKKyAgdmVy
c2lvbiAiNC4wLjUiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2xv
ZGFzaC5pbmRleG9mLy0vbG9kYXNoLmluZGV4b2YtNC4wLjUudGd6IzUzNzE0YWRjMmNkZGQ2ZWQ4
NzYzOGY4OTNhYTliNmMyNGUzMWVmM2MiCisKK2xvZGFzaC5pc2FyZ3VtZW50c0BeMy4wLjA6Cisg
IHZlcnNpb24gIjMuMS4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9sb2Rhc2guaXNhcmd1bWVudHMvLS9sb2Rhc2guaXNhcmd1bWVudHMtMy4xLjAudGd6IzJmNTcz
ZDg1YzZhMjQyODlmZjAwNjYzYjQ5MWMxZDMzOGZmMzQ1OGEiCisKK2xvZGFzaC5pc2FycmF5QF4z
LjAuMDoKKyAgdmVyc2lvbiAiMy4wLjQiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL2xvZGFzaC5pc2FycmF5Ly0vbG9kYXNoLmlzYXJyYXktMy4wLjQudGd6Izc5ZTRl
Yjg4YzM2YTgxMjJhZjg2Zjg0NGFhOWJjZDg1MWI1ZmJiNTUiCisKK2xvZGFzaC5pc2VxdWFsQF40
LjIuMDoKKyAgdmVyc2lvbiAiNC40LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL2xvZGFzaC5pc2VxdWFsLy0vbG9kYXNoLmlzZXF1YWwtNC40LjAudGd6IzYyOTU3
NjhlOThlMTRkYzE1Y2U4ZDM2MmVmNjM0MGRiODI4NTIwMzEiCisKK2xvZGFzaC5pc3BsYWlub2Jq
ZWN0QF4zLjAuMCwgbG9kYXNoLmlzcGxhaW5vYmplY3RAXjMuMi4wOgorICB2ZXJzaW9uICIzLjIu
MCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbG9kYXNoLmlzcGxh
aW5vYmplY3QvLS9sb2Rhc2guaXNwbGFpbm9iamVjdC0zLjIuMC50Z3ojOWE4MjM4YWUxNmIyMDA0
MzI5NjBjZDczNDY1MTJkMDEyM2ZiZjRjNSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGxvZGFzaC5f
YmFzZWZvciAiXjMuMC4wIgorICAgIGxvZGFzaC5pc2FyZ3VtZW50cyAiXjMuMC4wIgorICAgIGxv
ZGFzaC5rZXlzaW4gIl4zLjAuMCIKKworbG9kYXNoLmlzdHlwZWRhcnJheUBeMy4wLjA6CisgIHZl
cnNpb24gIjMuMC42IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9s
b2Rhc2guaXN0eXBlZGFycmF5Ly0vbG9kYXNoLmlzdHlwZWRhcnJheS0zLjAuNi50Z3ojYzlhNDc3
NDk4NjA3NTAxZDhlODQ5NGQyODNiODdjMzkyODFjZWY2MiIKKworbG9kYXNoLmtleXNAXjMuMC4w
OgorICB2ZXJzaW9uICIzLjEuMiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vbG9kYXNoLmtleXMvLS9sb2Rhc2gua2V5cy0zLjEuMi50Z3ojNGRiYzA0NzJiMTU2YmU1
MGEwYjI4Njg1NWQxYmQwYjBjNjU2MDk4YSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGxvZGFzaC5f
Z2V0bmF0aXZlICJeMy4wLjAiCisgICAgbG9kYXNoLmlzYXJndW1lbnRzICJeMy4wLjAiCisgICAg
bG9kYXNoLmlzYXJyYXkgIl4zLjAuMCIKKworbG9kYXNoLmtleXNpbkBeMy4wLjA6CisgIHZlcnNp
b24gIjMuMC44IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9sb2Rh
c2gua2V5c2luLy0vbG9kYXNoLmtleXNpbi0zLjAuOC50Z3ojMjJjNDQ5M2ViYmVkYjE0Mjc5NjJh
NTRiNDQ1YjJjOGE3NjdmYjQ3ZiIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGxvZGFzaC5pc2FyZ3Vt
ZW50cyAiXjMuMC4wIgorICAgIGxvZGFzaC5pc2FycmF5ICJeMy4wLjAiCisKK2xvZGFzaC5tZXJn
ZUBeMy4zLjI6CisgIHZlcnNpb24gIjMuMy4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9sb2Rhc2gubWVyZ2UvLS9sb2Rhc2gubWVyZ2UtMy4zLjIudGd6IzBkOTBk
OTNlZDYzN2IxODc4NDM3YmIzZTIxNjAxMjYwZDdhZmU5OTQiCisgIGRlcGVuZGVuY2llczoKKyAg
ICBsb2Rhc2guX2FycmF5Y29weSAiXjMuMC4wIgorICAgIGxvZGFzaC5fYXJyYXllYWNoICJeMy4w
LjAiCisgICAgbG9kYXNoLl9jcmVhdGVhc3NpZ25lciAiXjMuMC4wIgorICAgIGxvZGFzaC5fZ2V0
bmF0aXZlICJeMy4wLjAiCisgICAgbG9kYXNoLmlzYXJndW1lbnRzICJeMy4wLjAiCisgICAgbG9k
YXNoLmlzYXJyYXkgIl4zLjAuMCIKKyAgICBsb2Rhc2guaXNwbGFpbm9iamVjdCAiXjMuMC4wIgor
ICAgIGxvZGFzaC5pc3R5cGVkYXJyYXkgIl4zLjAuMCIKKyAgICBsb2Rhc2gua2V5cyAiXjMuMC4w
IgorICAgIGxvZGFzaC5rZXlzaW4gIl4zLjAuMCIKKyAgICBsb2Rhc2gudG9wbGFpbm9iamVjdCAi
XjMuMC4wIgorCitsb2Rhc2gucGFpcnNAXjMuMC4wOgorICB2ZXJzaW9uICIzLjAuMSIKKyAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbG9kYXNoLnBhaXJzLy0vbG9kYXNo
LnBhaXJzLTMuMC4xLnRneiNiYmUwOGQ1Nzg2ZWVlYWEwOWExNWM5MWViZjBkY2I3ZDJiZTMyNmE5
IgorICBkZXBlbmRlbmNpZXM6CisgICAgbG9kYXNoLmtleXMgIl4zLjAuMCIKKworbG9kYXNoLnBp
Y2tieUBeNC42LjA6CisgIHZlcnNpb24gIjQuNi4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9sb2Rhc2gucGlja2J5Ly0vbG9kYXNoLnBpY2tieS00LjYuMC50Z3oj
N2RlYTIxZDhjMThkNzcwM2EyN2M3MDRjMTVkM2I4NGE2N2UzM2FmZiIKKworbG9kYXNoLnJlc3Rw
YXJhbUBeMy4wLjA6CisgIHZlcnNpb24gIjMuNi4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9sb2Rhc2gucmVzdHBhcmFtLy0vbG9kYXNoLnJlc3RwYXJhbS0zLjYu
MS50Z3ojOTM2YTRlMzA5ZWYzMzBhNzY0NWVkNDE0NTk4NmM4NWFlNWIyMDgwNSIKKworbG9kYXNo
LnRvcGxhaW5vYmplY3RAXjMuMC4wOgorICB2ZXJzaW9uICIzLjAuMCIKKyAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbG9kYXNoLnRvcGxhaW5vYmplY3QvLS9sb2Rhc2gu
dG9wbGFpbm9iamVjdC0zLjAuMC50Z3ojMjg3OTBhZDk0MmQyOTNkNzhhYTY2M2EwN2VjZjdmNTJj
YTA0MTk4ZCIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGxvZGFzaC5fYmFzZWNvcHkgIl4zLjAuMCIK
KyAgICBsb2Rhc2gua2V5c2luICJeMy4wLjAiCisKK2xvZGFzaC53b3Jkc0BeMy4wLjA6CisgIHZl
cnNpb24gIjMuMi4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9s
b2Rhc2gud29yZHMvLS9sb2Rhc2gud29yZHMtMy4yLjAudGd6IzRlMmE4NjQ5YmMwODc0NWIxN2M2
OTViMWEzY2U4ZmVlNTk2NjIzYjMiCisgIGRlcGVuZGVuY2llczoKKyAgICBsb2Rhc2guX3Jvb3Qg
Il4zLjAuMCIKKworbG9kYXNoQF40LjAuMCwgbG9kYXNoQF40LjE2LjQsIGxvZGFzaEBeNC4xNy4y
LCBsb2Rhc2hAXjQuMi4wLCBsb2Rhc2hAXjQuMy4wOgorICB2ZXJzaW9uICI0LjE3LjIiCisgIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2xvZGFzaC8tL2xvZGFzaC00LjE3
LjIudGd6IzM0YTMwNTViYWJlMDRjZTQyNDY3YjYwN2Q3MDAwNzJjN2ZmNmJmNDIiCisKK2xvZy1z
eW1ib2xzQF4xLjAuMjoKKyAgdmVyc2lvbiAiMS4wLjIiCisgIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL2xvZy1zeW1ib2xzLy0vbG9nLXN5bWJvbHMtMS4wLjIudGd6IzM3
NmZmN2I1OGVhMzA4NmEwZjA5ZmFjYzc0NjE3ZWNhNTAxZTFhMTgiCisgIGRlcGVuZGVuY2llczoK
KyAgICBjaGFsayAiXjEuMC4wIgorCitsb25nZXN0QF4xLjAuMToKKyAgdmVyc2lvbiAiMS4wLjEi
CisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2xvbmdlc3QvLS9sb25n
ZXN0LTEuMC4xLnRneiMzMGEwYjJkYTM4ZjczNzcwZTgyOTRhMGQyMmU2NjI1ZWQ3N2QwMDk3Igor
Citsb29zZS1lbnZpZnlAXjEuMC4wOgorICB2ZXJzaW9uICIxLjMuMCIKKyAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbG9vc2UtZW52aWZ5Ly0vbG9vc2UtZW52aWZ5LTEu
My4wLnRneiM2YjI2MjQ4YzQyZjZkNGZhNGIwZDg1NDJmNzhlZGZjZGUzNTY0MmE4IgorICBkZXBl
bmRlbmNpZXM6CisgICAganMtdG9rZW5zICJeMi4wLjAiCisKK2xvd2VyLWNhc2VAXjEuMS4xOgor
ICB2ZXJzaW9uICIxLjEuMyIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vbG93ZXItY2FzZS8tL2xvd2VyLWNhc2UtMS4xLjMudGd6I2M5MjM5M2Q5NzY3OTNlZWU1YmE0
ZWRiNTgzY2Y4ZWFlMzViZDliZmIiCisKK2xydS1jYWNoZUBeMy4yLjA6CisgIHZlcnNpb24gIjMu
Mi4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9scnUtY2FjaGUv
LS9scnUtY2FjaGUtMy4yLjAudGd6IzcxNzg5YjNiN2Y1Mzk5YmVjODU2NWRkYTM4YWEzMGQyYTA5
N2VmZWUiCisgIGRlcGVuZGVuY2llczoKKyAgICBwc2V1ZG9tYXAgIl4xLjAuMSIKKworbHJ1LWNh
Y2hlQF40LjAuMToKKyAgdmVyc2lvbiAiNC4wLjIiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL2xydS1jYWNoZS8tL2xydS1jYWNoZS00LjAuMi50Z3ojMWQxNzY3OWMw
NjljZGE1ZDA0MDk5MWEwOWRiYzJjMGRiMzc3ZTU1ZSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIHBz
ZXVkb21hcCAiXjEuMC4xIgorICAgIHlhbGxpc3QgIl4yLjAuMCIKKworbWFjYWRkcmVzc0BeMC4y
Ljg6CisgIHZlcnNpb24gIjAuMi44IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9tYWNhZGRyZXNzLy0vbWFjYWRkcmVzcy0wLjIuOC50Z3ojNTkwNGRjNTM3YzM5ZWM2
ZGJlZmVhZTkwMjMyNzEzNWZhODUxMWYxMiIKKworbWF0aC1leHByZXNzaW9uLWV2YWx1YXRvckBe
MS4yLjE0OgorICB2ZXJzaW9uICIxLjIuMTQiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL21hdGgtZXhwcmVzc2lvbi1ldmFsdWF0b3IvLS9tYXRoLWV4cHJlc3Npb24t
ZXZhbHVhdG9yLTEuMi4xNC50Z3ojMzk1MTE3NzFlZDk2MDI0MDVmYmE5YWZmZmYxN2ViNGQyYTM4
NDNhYiIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGxvZGFzaC5pbmRleG9mICJeNC4wLjUiCisKK21l
ZGlhLXR5cGVyQDAuMy4wOgorICB2ZXJzaW9uICIwLjMuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vbWVkaWEtdHlwZXIvLS9tZWRpYS10eXBlci0wLjMuMC50Z3oj
ODcxMGQ3YWYwYWE2MjZmOGZmZmExY2UwMDE2ODU0NTI2MzI1NTc0OCIKKworbWVtb3J5LWZzQF4w
LjIuMDoKKyAgdmVyc2lvbiAiMC4yLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL21lbW9yeS1mcy8tL21lbW9yeS1mcy0wLjIuMC50Z3ojZjJiYjI1MzY4YmMxMjFl
MzkxYzI1MjBkZTkyOTY5Y2FlZTBhMDI5MCIKKworbWVtb3J5LWZzQH4wLjMuMDoKKyAgdmVyc2lv
biAiMC4zLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL21lbW9y
eS1mcy8tL21lbW9yeS1mcy0wLjMuMC50Z3ojN2JjYzZiNjI5ZTNhNDNlODcxZDdlMjlhY2E2YWU4
YTdmMTVjYmIyMCIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGVycm5vICJeMC4xLjMiCisgICAgcmVh
ZGFibGUtc3RyZWFtICJeMi4wLjEiCisKK21lcmdlLWRlc2NyaXB0b3JzQDEuMC4xOgorICB2ZXJz
aW9uICIxLjAuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbWVy
Z2UtZGVzY3JpcHRvcnMvLS9tZXJnZS1kZXNjcmlwdG9ycy0xLjAuMS50Z3ojYjAwYWFhNTU2ZGQ4
YjQ0NTY4MTUwZWM5ZDFiOTUzZjNmOTBjYmI2MSIKKworbWV0aG9kc0B+MS4xLjI6CisgIHZlcnNp
b24gIjEuMS4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9tZXRo
b2RzLy0vbWV0aG9kcy0xLjEuMi50Z3ojNTUyOWE0ZDY3NjU0MTM0ZWRjYzUyNjY2NTY4MzViMGY4
NTFhZmNlZSIKKworbWljcm9tYXRjaEBeMi4xLjUsIG1pY3JvbWF0Y2hAXjIuMy4xMToKKyAgdmVy
c2lvbiAiMi4zLjExIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9t
aWNyb21hdGNoLy0vbWljcm9tYXRjaC0yLjMuMTEudGd6Izg2Njc3Yzk3ZDE3MjBiMzYzNDMxZDA0
ZDBkMTUyOTNiZDM4YzE1NjUiCisgIGRlcGVuZGVuY2llczoKKyAgICBhcnItZGlmZiAiXjIuMC4w
IgorICAgIGFycmF5LXVuaXF1ZSAiXjAuMi4xIgorICAgIGJyYWNlcyAiXjEuOC4yIgorICAgIGV4
cGFuZC1icmFja2V0cyAiXjAuMS40IgorICAgIGV4dGdsb2IgIl4wLjMuMSIKKyAgICBmaWxlbmFt
ZS1yZWdleCAiXjIuMC4wIgorICAgIGlzLWV4dGdsb2IgIl4xLjAuMCIKKyAgICBpcy1nbG9iICJe
Mi4wLjEiCisgICAga2luZC1vZiAiXjMuMC4yIgorICAgIG5vcm1hbGl6ZS1wYXRoICJeMi4wLjEi
CisgICAgb2JqZWN0Lm9taXQgIl4yLjAuMCIKKyAgICBwYXJzZS1nbG9iICJeMy4wLjQiCisgICAg
cmVnZXgtY2FjaGUgIl4wLjQuMiIKKworbWltZS1kYkB+MS4yNS4wOgorICB2ZXJzaW9uICIxLjI1
LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL21pbWUtZGIvLS9t
aW1lLWRiLTEuMjUuMC50Z3ojYzE4ZGJkN2M3M2E1ZGJmNmY0NGEwMjRkYzBkMTY1YTFlN2IxYzM5
MiIKKworbWltZS10eXBlc0BeMi4xLjEyLCBtaW1lLXR5cGVzQH4yLjEuMTEsIG1pbWUtdHlwZXNA
fjIuMS4xMywgbWltZS10eXBlc0B+Mi4xLjc6CisgIHZlcnNpb24gIjIuMS4xMyIKKyAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbWltZS10eXBlcy8tL21pbWUtdHlwZXMt
Mi4xLjEzLnRneiNlMDdhYWE5YzZjNmI5YTdjYTMwMTJjNjkwMDNhZDI1YTM5ZTkyYTg4IgorICBk
ZXBlbmRlbmNpZXM6CisgICAgbWltZS1kYiAifjEuMjUuMCIKKworbWltZUBeMS4zLjQsIG1pbWVA
MS4zLjQ6CisgIHZlcnNpb24gIjEuMy40IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9taW1lLy0vbWltZS0xLjMuNC50Z3ojMTE1ZjllM2I2YjNkYWYyOTU5OTgzY2Iz
OGYxNDlhMmQ0MGViNWQ1MyIKKworbWltZUAxLjIueDoKKyAgdmVyc2lvbiAiMS4yLjExIgorICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9taW1lLy0vbWltZS0xLjIuMTEu
dGd6IzU4MjAzZWVkODZlM2E1ZWYxN2FlZDJiN2Q5ZWJkNDdmMGE2MGRkMTAiCisKK21pbmltYXRj
aEBeMy4wLjAsIG1pbmltYXRjaEBeMy4wLjI6CisgIHZlcnNpb24gIjMuMC4zIgorICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9taW5pbWF0Y2gvLS9taW5pbWF0Y2gtMy4w
LjMudGd6IzJhNGU0MDkwYjk2YjJkYjA2YTlkN2RmMDEwNTVhNjJhNzdjOWI3NzQiCisgIGRlcGVu
ZGVuY2llczoKKyAgICBicmFjZS1leHBhbnNpb24gIl4xLjAuMCIKKworbWluaW1pc3RAXjEuMi4w
OgorICB2ZXJzaW9uICIxLjIuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vbWluaW1pc3QvLS9taW5pbWlzdC0xLjIuMC50Z3ojYTM1MDA4YjIwZjQxMzgzZWVjMWZi
OTE0ZjRjZDVkZjc5YTI2NDI4NCIKKworbWluaW1pc3RAfjAuMC4xOgorICB2ZXJzaW9uICIwLjAu
MTAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL21pbmltaXN0Ly0v
bWluaW1pc3QtMC4wLjEwLnRneiNkZTNmOTg1NDNkYmY5NjA4MmJlNDhhZDFhMGM3Y2RhODM2MzAx
ZGNmIgorCittaW5pbWlzdEAwLjAuODoKKyAgdmVyc2lvbiAiMC4wLjgiCisgIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL21pbmltaXN0Ly0vbWluaW1pc3QtMC4wLjgudGd6
Izg1N2ZjYWJmYzMzOTdkMjYyNWI4MjI4MjYyZTg2YWE3YTAxMWIwNWQiCisKK21rZGlycEBeMC41
LjAsIG1rZGlycEBeMC41LjEsICJta2RpcnBAPj0wLjUgMCIsIG1rZGlycEB+MC41LjAsIG1rZGly
cEB+MC41LjE6CisgIHZlcnNpb24gIjAuNS4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9ta2RpcnAvLS9ta2RpcnAtMC41LjEudGd6IzMwMDU3NDM4ZWFjNmNmN2Y4
YzQ3NjdmMzg2NDhkNjY5N2Q3NWM5MDMiCisgIGRlcGVuZGVuY2llczoKKyAgICBtaW5pbWlzdCAi
MC4wLjgiCisKK21zQDAuNy4xOgorICB2ZXJzaW9uICIwLjcuMSIKKyAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vbXMvLS9tcy0wLjcuMS50Z3ojOWNkMTNjMDNhZGJmZjI1
YjY1ZWZmZGU3Y2U4NjRlZTk1MjAxNzA5OCIKKworbXNAMC43LjI6CisgIHZlcnNpb24gIjAuNy4y
IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9tcy8tL21zLTAuNy4y
LnRneiNhZTI1Y2YyNTEyYjM4ODVhMWQ5NWQ3ZjAzNzg2OGQ4NDMxMTI0NzY1IgorCittdXRlLXN0
cmVhbUAwLjAuNToKKyAgdmVyc2lvbiAiMC4wLjUiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL211dGUtc3RyZWFtLy0vbXV0ZS1zdHJlYW0tMC4wLjUudGd6IzhmYmZh
YmIwYTk4YTI1M2QzMTg0MzMxZjllOGRlYjczNzJmYWM2YzAiCisKK25hbkBeMi4zLjA6CisgIHZl
cnNpb24gIjIuNC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9u
YW4vLS9uYW4tMi40LjAudGd6I2ZiM2M1OWQ0NWZlNGVmZmUyMTVmMGI4OTBmOGFkZjZlYjMyZDIy
MzIiCisKK25hdHVyYWwtY29tcGFyZUBeMS40LjA6CisgIHZlcnNpb24gIjEuNC4wIgorICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9uYXR1cmFsLWNvbXBhcmUvLS9uYXR1
cmFsLWNvbXBhcmUtMS40LjAudGd6IzRhYmViZmVlZDc1NDFmMmMyN2FjZmIyOWJkYmJkMTVjOGQ1
YmE0ZjciCisKK25jbmFtZUAxLjAueDoKKyAgdmVyc2lvbiAiMS4wLjAiCisgIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL25jbmFtZS8tL25jbmFtZS0xLjAuMC50Z3ojNWI1
N2FkMThiMWNhMDkyODY0ZWY2MmIwYjFlZDgxOTRmMzgzYjcxYyIKKyAgZGVwZW5kZW5jaWVzOgor
ICAgIHhtbC1jaGFyLWNsYXNzZXMgIl4xLjAuMCIKKworbmVnb3RpYXRvckAwLjYuMToKKyAgdmVy
c2lvbiAiMC42LjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL25l
Z290aWF0b3IvLS9uZWdvdGlhdG9yLTAuNi4xLnRneiMyYjMyNzE4NGU4OTkyMTAxMTc3YjI4NTYz
ZmI1ZTcxMDJhY2QwY2E5IgorCituby1jYXNlQF4yLjIuMDoKKyAgdmVyc2lvbiAiMi4zLjAiCisg
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL25vLWNhc2UvLS9uby1jYXNl
LTIuMy4wLnRneiNjYTI4MjVjY2I3NmIxOGU2Zjc5ZDU3M2RjZmJmMWVhY2UzM2RkMTY0IgorICBk
ZXBlbmRlbmNpZXM6CisgICAgbG93ZXItY2FzZSAiXjEuMS4xIgorCitub2RlLWxpYnMtYnJvd3Nl
ckBeMC43LjA6CisgIHZlcnNpb24gIjAuNy4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9ub2RlLWxpYnMtYnJvd3Nlci8tL25vZGUtbGlicy1icm93c2VyLTAuNy4w
LnRneiMzZTI3MmMwODE5ZTMwODkzNWUyNjY3NDQwOGQ3YWYwZTE0OTFiODNiIgorICBkZXBlbmRl
bmNpZXM6CisgICAgYXNzZXJ0ICJeMS4xLjEiCisgICAgYnJvd3NlcmlmeS16bGliICJeMC4xLjQi
CisgICAgYnVmZmVyICJeNC45LjAiCisgICAgY29uc29sZS1icm93c2VyaWZ5ICJeMS4xLjAiCisg
ICAgY29uc3RhbnRzLWJyb3dzZXJpZnkgIl4xLjAuMCIKKyAgICBjcnlwdG8tYnJvd3NlcmlmeSAi
My4zLjAiCisgICAgZG9tYWluLWJyb3dzZXIgIl4xLjEuMSIKKyAgICBldmVudHMgIl4xLjAuMCIK
KyAgICBodHRwcy1icm93c2VyaWZ5ICIwLjAuMSIKKyAgICBvcy1icm93c2VyaWZ5ICJeMC4yLjAi
CisgICAgcGF0aC1icm93c2VyaWZ5ICIwLjAuMCIKKyAgICBwcm9jZXNzICJeMC4xMS4wIgorICAg
IHB1bnljb2RlICJeMS4yLjQiCisgICAgcXVlcnlzdHJpbmctZXMzICJeMC4yLjAiCisgICAgcmVh
ZGFibGUtc3RyZWFtICJeMi4wLjUiCisgICAgc3RyZWFtLWJyb3dzZXJpZnkgIl4yLjAuMSIKKyAg
ICBzdHJlYW0taHR0cCAiXjIuMy4xIgorICAgIHN0cmluZ19kZWNvZGVyICJeMC4xMC4yNSIKKyAg
ICB0aW1lcnMtYnJvd3NlcmlmeSAiXjIuMC4yIgorICAgIHR0eS1icm93c2VyaWZ5ICIwLjAuMCIK
KyAgICB1cmwgIl4wLjExLjAiCisgICAgdXRpbCAiXjAuMTAuMyIKKyAgICB2bS1icm93c2VyaWZ5
ICIwLjAuNCIKKworbm9kZS1wcmUtZ3lwQF4wLjYuMjk6CisgIHZlcnNpb24gIjAuNi4zMiIKKyAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbm9kZS1wcmUtZ3lwLy0vbm9k
ZS1wcmUtZ3lwLTAuNi4zMi50Z3ojZmM0NTJiMzc2ZTczMTliM2QyNTVmNWYzNDg1M2VmNmZkOGZl
MWZkNSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIG1rZGlycCAifjAuNS4xIgorICAgIG5vcHQgIn4z
LjAuNiIKKyAgICBucG1sb2cgIl40LjAuMSIKKyAgICByYyAifjEuMS42IgorICAgIHJlcXVlc3Qg
Il4yLjc5LjAiCisgICAgcmltcmFmICJ+Mi41LjQiCisgICAgc2VtdmVyICJ+NS4zLjAiCisgICAg
dGFyICJ+Mi4yLjEiCisgICAgdGFyLXBhY2sgIn4zLjMuMCIKKworbm9wdEB+My4wLjEsIG5vcHRA
fjMuMC42OgorICB2ZXJzaW9uICIzLjAuNiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vbm9wdC8tL25vcHQtMy4wLjYudGd6I2M2NDY1ZGJmMDhhYmNkNGRiMzU5MzE3
Zjc5YWM2OGE2NDZiMjhmZjkiCisgIGRlcGVuZGVuY2llczoKKyAgICBhYmJyZXYgIjEiCisKK25v
cm1hbGl6ZS1wYXRoQF4yLjAuMToKKyAgdmVyc2lvbiAiMi4wLjEiCisgIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL25vcm1hbGl6ZS1wYXRoLy0vbm9ybWFsaXplLXBhdGgt
Mi4wLjEudGd6IzQ3ODg2YWMxNjYyNzYwZDQyNjFiN2Q5NzlkMjQxNzA5ZDNjZTNmN2EiCisKK25v
cm1hbGl6ZS1yYW5nZUBeMC4xLjI6CisgIHZlcnNpb24gIjAuMS4yIgorICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9ub3JtYWxpemUtcmFuZ2UvLS9ub3JtYWxpemUtcmFu
Z2UtMC4xLjIudGd6IzJkMTBjMDZiZGZkMzEyZWE5Nzc3Njk1YTRkMjg0Mzk0NTZiNzU5NDIiCisK
K25vcm1hbGl6ZS11cmxAXjEuNC4wOgorICB2ZXJzaW9uICIxLjguMCIKKyAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbm9ybWFsaXplLXVybC8tL25vcm1hbGl6ZS11cmwt
MS44LjAudGd6I2E5NTUwYjA3OWFhMzUyM2M4NWQ3OGRmMjRlZWYxOTU5ZmNlMzU5YWIiCisgIGRl
cGVuZGVuY2llczoKKyAgICBvYmplY3QtYXNzaWduICJeNC4wLjEiCisgICAgcHJlcGVuZC1odHRw
ICJeMS4wLjAiCisgICAgcXVlcnktc3RyaW5nICJeNC4xLjAiCisgICAgc29ydC1rZXlzICJeMS4w
LjAiCisKK25wbWxvZ0BeNC4wLjE6CisgIHZlcnNpb24gIjQuMC4xIgorICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9ucG1sb2cvLS9ucG1sb2ctNC4wLjEudGd6I2QxNGY1
MDNiNGNkNzk3MTAzNzU1NTMwMDRiYTk2ZTY2NjJmYmMwYjgiCisgIGRlcGVuZGVuY2llczoKKyAg
ICBhcmUtd2UtdGhlcmUteWV0ICJ+MS4xLjIiCisgICAgY29uc29sZS1jb250cm9sLXN0cmluZ3Mg
In4xLjEuMCIKKyAgICBnYXVnZSAifjIuNy4xIgorICAgIHNldC1ibG9ja2luZyAifjIuMC4wIgor
CitudGgtY2hlY2tAfjEuMC4xOgorICB2ZXJzaW9uICIxLjAuMSIKKyAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vbnRoLWNoZWNrLy0vbnRoLWNoZWNrLTEuMC4xLnRneiM5
OTI5YWNkZjYyOGZjMmM0MTA5OGRlYWI4MmFjNTgwY2YxNDlhYWU0IgorICBkZXBlbmRlbmNpZXM6
CisgICAgYm9vbGJhc2UgIn4xLjAuMCIKKworbnVtMmZyYWN0aW9uQF4xLjIuMjoKKyAgdmVyc2lv
biAiMS4yLjIiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL251bTJm
cmFjdGlvbi8tL251bTJmcmFjdGlvbi0xLjIuMi50Z3ojNmY2ODJiNmEwMjdhNGU5ZGRmYTQ1NjRj
ZDI1ODlkMWQ0ZTY2OWVkZSIKKworbnVtYmVyLWlzLW5hbkBeMS4wLjA6CisgIHZlcnNpb24gIjEu
MC4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9udW1iZXItaXMt
bmFuLy0vbnVtYmVyLWlzLW5hbi0xLjAuMS50Z3ojMDk3YjYwMmI1MzQyMmE1MjJjMWFmYjg3OTAz
MTgzMzY5NDFhMDExZCIKKworb2F1dGgtc2lnbkB+MC44LjE6CisgIHZlcnNpb24gIjAuOC4yIgor
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9vYXV0aC1zaWduLy0vb2F1
dGgtc2lnbi0wLjguMi50Z3ojNDZhNmFiN2YwYWVhZDhkZWFlOWVjMDU2NTc4MGI3ZDRlZmViOWQ0
MyIKKworb2JqZWN0LWFzc2lnbkBeNC4wLjAsIG9iamVjdC1hc3NpZ25AXjQuMC4xLCBvYmplY3Qt
YXNzaWduQF40LjEuMDoKKyAgdmVyc2lvbiAiNC4xLjAiCisgIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL29iamVjdC1hc3NpZ24vLS9vYmplY3QtYXNzaWduLTQuMS4wLnRn
eiM3YTNiM2QwZTk4MDYzZDQzZjRjMDNmMmU4YWU2Y2Q1MWE4Njg4M2EwIgorCitvYmplY3QtaGFz
aEBeMS4xLjQ6CisgIHZlcnNpb24gIjEuMS41IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9vYmplY3QtaGFzaC8tL29iamVjdC1oYXNoLTEuMS41LnRneiNiZGQ4NDRl
MDMwZDA4NjFiNjkyY2ExNzVjNmNhYjY4NjhlYzIzM2Q3IgorCitvYmplY3Qub21pdEBeMi4wLjA6
CisgIHZlcnNpb24gIjIuMC4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9vYmplY3Qub21pdC8tL29iamVjdC5vbWl0LTIuMC4xLnRneiMxYTljNzQ0ODI5ZjM5ZGJi
ODU4Yzc2Y2EzNTc5YWUyYTU0ZWJkMWZhIgorICBkZXBlbmRlbmNpZXM6CisgICAgZm9yLW93biAi
XjAuMS40IgorICAgIGlzLWV4dGVuZGFibGUgIl4wLjEuMSIKKworb24tZmluaXNoZWRAfjIuMy4w
OgorICB2ZXJzaW9uICIyLjMuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vb24tZmluaXNoZWQvLS9vbi1maW5pc2hlZC0yLjMuMC50Z3ojMjBmMTMzNjQ4MWIwODNj
ZDc1MzM3OTkyYTE2OTcxYWEyZDkwNjk0NyIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGVlLWZpcnN0
ICIxLjEuMSIKKworb25jZUBeMS4zLjA6CisgIHZlcnNpb24gIjEuNC4wIgorICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9vbmNlLy0vb25jZS0xLjQuMC50Z3ojNTgzYjFh
YTc3NTk2MWQ0YjExM2FjMTdkOWM1MGJhZWY5ZGQ3NmJkMSIKKyAgZGVwZW5kZW5jaWVzOgorICAg
IHdyYXBweSAiMSIKKworb25jZUB+MS4zLjM6CisgIHZlcnNpb24gIjEuMy4zIgorICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9vbmNlLy0vb25jZS0xLjMuMy50Z3ojYjJl
MjYxNTU3Y2U0YzMxNGVjODMwNGYzZmE4MjY2M2U0Mjk3Y2EyMCIKKyAgZGVwZW5kZW5jaWVzOgor
ICAgIHdyYXBweSAiMSIKKworb25ldGltZUBeMS4wLjA6CisgIHZlcnNpb24gIjEuMS4wIgorICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9vbmV0aW1lLy0vb25ldGltZS0x
LjEuMC50Z3ojYTFmNzgzOGY4MzE0YzUxNmYwNWVjZWZjYmM0Y2NmZTA0YjRlZDc4OSIKKworb3Bu
QF40LjAuMjoKKyAgdmVyc2lvbiAiNC4wLjIiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL29wbi8tL29wbi00LjAuMi50Z3ojN2FiYzIyZTY0NGRmZjYzYjBhOTZkNWFi
N2YyNzkwYzBmMDFhYmM5NSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIG9iamVjdC1hc3NpZ24gIl40
LjAuMSIKKyAgICBwaW5raWUtcHJvbWlzZSAiXjIuMC4wIgorCitvcHRpbWlzdEB+MC42LjA6Cisg
IHZlcnNpb24gIjAuNi4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9vcHRpbWlzdC8tL29wdGltaXN0LTAuNi4xLnRneiNkYTNlYTc0Njg2ZmEyMWExOWExMTFjMzI2
ZTkwZWIxNWEwMTk2Njg2IgorICBkZXBlbmRlbmNpZXM6CisgICAgbWluaW1pc3QgIn4wLjAuMSIK
KyAgICB3b3Jkd3JhcCAifjAuMC4yIgorCitvcHRpb25hdG9yQF4wLjguMjoKKyAgdmVyc2lvbiAi
MC44LjIiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL29wdGlvbmF0
b3IvLS9vcHRpb25hdG9yLTAuOC4yLnRneiMzNjRjNWU0MDlkM2Y0ZDYzMDFkNmMwYjRjMDViYmE1
MDE4MGFlYjY0IgorICBkZXBlbmRlbmNpZXM6CisgICAgZGVlcC1pcyAifjAuMS4zIgorICAgIGZh
c3QtbGV2ZW5zaHRlaW4gIn4yLjAuNCIKKyAgICBsZXZuICJ+MC4zLjAiCisgICAgcHJlbHVkZS1s
cyAifjEuMS4yIgorICAgIHR5cGUtY2hlY2sgIn4wLjMuMiIKKyAgICB3b3Jkd3JhcCAifjEuMC4w
IgorCitvcmFAXjAuMy4wOgorICB2ZXJzaW9uICIwLjMuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vb3JhLy0vb3JhLTAuMy4wLnRneiMzNjdhMDc4YWQyNWNmYjA5
NmRhNTAxMTE1ZWI1YjQwMWUwN2Q3NDk1IgorICBkZXBlbmRlbmNpZXM6CisgICAgY2hhbGsgIl4x
LjEuMSIKKyAgICBjbGktY3Vyc29yICJeMS4wLjIiCisgICAgY2xpLXNwaW5uZXJzICJeMC4yLjAi
CisgICAgbG9nLXN5bWJvbHMgIl4xLjAuMiIKKworb3MtYnJvd3NlcmlmeUBeMC4yLjA6CisgIHZl
cnNpb24gIjAuMi4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9v
cy1icm93c2VyaWZ5Ly0vb3MtYnJvd3NlcmlmeS0wLjIuMS50Z3ojNjNmYzRjY2VlNWQyZDc3NjNk
MjZiYmY4NjAxMDc4ZTZjMmUwMDQ0ZiIKKworb3MtaG9tZWRpckBeMS4wLjA6CisgIHZlcnNpb24g
IjEuMC4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9vcy1ob21l
ZGlyLy0vb3MtaG9tZWRpci0xLjAuMi50Z3ojZmZiYzQ5ODgzMzZlMGU4MzNkZTBjMTY4YzdlZjE1
MjEyMWFhN2ZiMyIKKworb3MtdG1wZGlyQF4xLjAuMToKKyAgdmVyc2lvbiAiMS4wLjIiCisgIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL29zLXRtcGRpci8tL29zLXRtcGRp
ci0xLjAuMi50Z3ojYmJlNjc0MDZjNzlhYTg1YzVjZmVjNzY2ZmU1NzM0NTU1ZGZhMTI3NCIKKwor
cGFrb0B+MC4yLjA6CisgIHZlcnNpb24gIjAuMi45IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9wYWtvLy0vcGFrby0wLjIuOS50Z3ojZjNmNzUyMmY0ZWY3ODIzNDhk
YTgxNjFiYWQ5ZWNmZDUxYmY4M2E3NSIKKworcGFyYW0tY2FzZUAyLjEueDoKKyAgdmVyc2lvbiAi
Mi4xLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3BhcmFtLWNh
c2UvLS9wYXJhbS1jYXNlLTIuMS4wLnRneiMyNjE5ZjkwZmQ2YzgyOWVkMGI5NThmMWM4NGVkMDNh
NzQ1YTZkNzBhIgorICBkZXBlbmRlbmNpZXM6CisgICAgbm8tY2FzZSAiXjIuMi4wIgorCitwYXJz
ZS1nbG9iQF4zLjAuNDoKKyAgdmVyc2lvbiAiMy4wLjQiCisgIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL3BhcnNlLWdsb2IvLS9wYXJzZS1nbG9iLTMuMC40LnRneiNiMmMz
NzZjZmIxMWYzNTUxM2JhZGQxNzNlZjBiYjZlM2EzODgzOTFjIgorICBkZXBlbmRlbmNpZXM6Cisg
ICAgZ2xvYi1iYXNlICJeMC4zLjAiCisgICAgaXMtZG90ZmlsZSAiXjEuMC4wIgorICAgIGlzLWV4
dGdsb2IgIl4xLjAuMCIKKyAgICBpcy1nbG9iICJeMi4wLjAiCisKK3BhcnNldXJsQH4xLjMuMToK
KyAgdmVyc2lvbiAiMS4zLjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL3BhcnNldXJsLy0vcGFyc2V1cmwtMS4zLjEudGd6I2M4YWI4YzkyMjNiYTM0ODg4YWE2NGEy
OTdiMjg4NTNiZWMxOGRhNTYiCisKK3BhdGgtYnJvd3NlcmlmeUAwLjAuMDoKKyAgdmVyc2lvbiAi
MC4wLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3BhdGgtYnJv
d3NlcmlmeS8tL3BhdGgtYnJvd3NlcmlmeS0wLjAuMC50Z3ojYTBiODcwNzI5YWFlMjE0MDA1Yjdk
NTAzMmVjMmNiYmIwZmI0NDUxYSIKKworcGF0aC1leGlzdHNAXjIuMC4wOgorICB2ZXJzaW9uICIy
LjEuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcGF0aC1leGlz
dHMvLS9wYXRoLWV4aXN0cy0yLjEuMC50Z3ojMGZlYjZjNjRmMGZjNTE4ZDlhNzU0ZGQ1ZWZiNjJj
NzAyMjc2MWY0YiIKKyAgZGVwZW5kZW5jaWVzOgorICAgIHBpbmtpZS1wcm9taXNlICJeMi4wLjAi
CisKK3BhdGgtaXMtYWJzb2x1dGVAXjEuMC4wOgorICB2ZXJzaW9uICIxLjAuMSIKKyAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcGF0aC1pcy1hYnNvbHV0ZS8tL3BhdGgt
aXMtYWJzb2x1dGUtMS4wLjEudGd6IzE3NGI5MjY4NzM1NTM0ZmZiYzdhY2U2YmY1M2E1YTllMWI1
YzVmNWYiCisKK3BhdGgtaXMtaW5zaWRlQF4xLjAuMToKKyAgdmVyc2lvbiAiMS4wLjIiCisgIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3BhdGgtaXMtaW5zaWRlLy0vcGF0
aC1pcy1pbnNpZGUtMS4wLjIudGd6IzM2NTQxN2RlZGU0NDQzMGQxYzExYWY2MTAyN2ZhY2YwNzRi
ZGZjNTMiCisKK3BhdGgtdG8tcmVnZXhwQDAuMS43OgorICB2ZXJzaW9uICIwLjEuNyIKKyAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcGF0aC10by1yZWdleHAvLS9wYXRo
LXRvLXJlZ2V4cC0wLjEuNy50Z3ojZGY2MDQxNzgwMDVmNTIyZjE1ZWI0NDkwZTcyNDdhMWJmYWE2
N2Y4YyIKKworcGJrZGYyLWNvbXBhdEAyLjAuMToKKyAgdmVyc2lvbiAiMi4wLjEiCisgIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Bia2RmMi1jb21wYXQvLS9wYmtkZjIt
Y29tcGF0LTIuMC4xLnRneiNiNmUwYzhmYTk5NDk0ZDk0ZTA1MTE1NzU4MDJhNTlhNWMxNDJmMjg4
IgorCitwaWZ5QF4yLjAuMDoKKyAgdmVyc2lvbiAiMi4zLjAiCisgIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3BpZnkvLS9waWZ5LTIuMy4wLnRneiNlZDE0MWE2YWMwNDNh
ODQ5ZWE1ODg0OThlN2RjYThiMTUzMzBlOTBjIgorCitwaW5raWUtcHJvbWlzZUBeMi4wLjA6Cisg
IHZlcnNpb24gIjIuMC4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9waW5raWUtcHJvbWlzZS8tL3BpbmtpZS1wcm9taXNlLTIuMC4xLnRneiMyMTM1ZDZkZmE3YTM1
OGMwNjlhYzliMTc4Nzc2Mjg4MjI4NDUwZmZhIgorICBkZXBlbmRlbmNpZXM6CisgICAgcGlua2ll
ICJeMi4wLjAiCisKK3BpbmtpZUBeMi4wLjA6CisgIHZlcnNpb24gIjIuMC40IgorICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9waW5raWUvLS9waW5raWUtMi4wLjQudGd6
IzcyNTU2YjgwY2ZhMGQ0OGE5NzRlODBlNzcyNDhlODBlZDRmN2Y4NzAiCisKK3BrZy1kaXJAXjEu
MC4wOgorICB2ZXJzaW9uICIxLjAuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vcGtnLWRpci8tL3BrZy1kaXItMS4wLjAudGd6IzdhNGI1MDhhOGQ1YmIyZDYyOWQ0
NDcwNTZmZjRlOWM5MzE0Y2YzZDQiCisgIGRlcGVuZGVuY2llczoKKyAgICBmaW5kLXVwICJeMS4w
LjAiCisKK3BsdXJhbGl6ZUBeMS4yLjE6CisgIHZlcnNpb24gIjEuMi4xIgorICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wbHVyYWxpemUvLS9wbHVyYWxpemUtMS4yLjEu
dGd6I2QxYTIxNDgzZmQyMmJiNDFlNThhMTJmYTM0MjE4MjMxNDA4OTdjNDUiCisKK3Bvc3Rjc3Mt
Y2FsY0BeNS4yLjA6CisgIHZlcnNpb24gIjUuMy4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9wb3N0Y3NzLWNhbGMvLS9wb3N0Y3NzLWNhbGMtNS4zLjEudGd6Izc3
YmFlN2NhOTI4YWQ4NTcxNmUyZmRhNDJmMjYxYmY3YzFkNjViNWUiCisgIGRlcGVuZGVuY2llczoK
KyAgICBwb3N0Y3NzICJeNS4wLjIiCisgICAgcG9zdGNzcy1tZXNzYWdlLWhlbHBlcnMgIl4yLjAu
MCIKKyAgICByZWR1Y2UtY3NzLWNhbGMgIl4xLjIuNiIKKworcG9zdGNzcy1jb2xvcm1pbkBeMi4x
Ljg6CisgIHZlcnNpb24gIjIuMi4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9wb3N0Y3NzLWNvbG9ybWluLy0vcG9zdGNzcy1jb2xvcm1pbi0yLjIuMS50Z3ojZGM1
NDIxYjZhZTZmNzc5ZWY2YmZkNDczNTJiOTRhYmU1OWQwMzE2YiIKKyAgZGVwZW5kZW5jaWVzOgor
ICAgIGNvbG9ybWluICJeMS4wLjUiCisgICAgcG9zdGNzcyAiXjUuMC4xMyIKKyAgICBwb3N0Y3Nz
LXZhbHVlLXBhcnNlciAiXjMuMi4zIgorCitwb3N0Y3NzLWNvbnZlcnQtdmFsdWVzQF4yLjMuNDoK
KyAgdmVyc2lvbiAiMi41LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL3Bvc3Rjc3MtY29udmVydC12YWx1ZXMvLS9wb3N0Y3NzLWNvbnZlcnQtdmFsdWVzLTIuNS4w
LnRneiM1NzBhY2ViMDRiMzA2MWZiMjVmNmY0NmJkMDMyOWU3YWI2MjYzYzBiIgorICBkZXBlbmRl
bmNpZXM6CisgICAgcG9zdGNzcyAiXjUuMC4xMSIKKyAgICBwb3N0Y3NzLXZhbHVlLXBhcnNlciAi
XjMuMS4yIgorCitwb3N0Y3NzLWRpc2NhcmQtY29tbWVudHNAXjIuMC40OgorICB2ZXJzaW9uICIy
LjAuNCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcG9zdGNzcy1k
aXNjYXJkLWNvbW1lbnRzLy0vcG9zdGNzcy1kaXNjYXJkLWNvbW1lbnRzLTIuMC40LnRneiNiZWZl
ODlmYWZkNWIzZGFjZTVjY2NlNTFiNzZiODE1MTRiZTAwZTNkIgorICBkZXBlbmRlbmNpZXM6Cisg
ICAgcG9zdGNzcyAiXjUuMC4xNCIKKworcG9zdGNzcy1kaXNjYXJkLWR1cGxpY2F0ZXNAXjIuMC4x
OgorICB2ZXJzaW9uICIyLjAuMiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vcG9zdGNzcy1kaXNjYXJkLWR1cGxpY2F0ZXMvLS9wb3N0Y3NzLWRpc2NhcmQtZHVwbGlj
YXRlcy0yLjAuMi50Z3ojMDJiZTUyMGU5MTU3MWZmYjEwNzM4NzY2YTk4MWQ1NzcwOTg5YmIzMiIK
KyAgZGVwZW5kZW5jaWVzOgorICAgIHBvc3Rjc3MgIl41LjAuNCIKKworcG9zdGNzcy1kaXNjYXJk
LWVtcHR5QF4yLjAuMToKKyAgdmVyc2lvbiAiMi4xLjAiCisgIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL3Bvc3Rjc3MtZGlzY2FyZC1lbXB0eS8tL3Bvc3Rjc3MtZGlzY2Fy
ZC1lbXB0eS0yLjEuMC50Z3ojZDJiNGJkOWQ1Y2VkNWViZDhkY2FkZTc2NDBjN2Q3Y2Q3ZjRmOTJi
NSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIHBvc3Rjc3MgIl41LjAuMTQiCisKK3Bvc3Rjc3MtZGlz
Y2FyZC1vdmVycmlkZGVuQF4wLjEuMToKKyAgdmVyc2lvbiAiMC4xLjEiCisgIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Bvc3Rjc3MtZGlzY2FyZC1vdmVycmlkZGVuLy0v
cG9zdGNzcy1kaXNjYXJkLW92ZXJyaWRkZW4tMC4xLjEudGd6IzhiMWVhZjU1NGY2ODZmYjI4OGNk
ODc0YzU1NjY3YjBhYTM2NjhkNTgiCisgIGRlcGVuZGVuY2llczoKKyAgICBwb3N0Y3NzICJeNS4w
LjE2IgorCitwb3N0Y3NzLWRpc2NhcmQtdW51c2VkQF4yLjIuMToKKyAgdmVyc2lvbiAiMi4yLjMi
CisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Bvc3Rjc3MtZGlzY2Fy
ZC11bnVzZWQvLS9wb3N0Y3NzLWRpc2NhcmQtdW51c2VkLTIuMi4zLnRneiNiY2UzMGIyY2M1OTFm
ZmM2MzQzMjJiNWZiMzQ2NGI2ZDkzNGY0NDMzIgorICBkZXBlbmRlbmNpZXM6CisgICAgcG9zdGNz
cyAiXjUuMC4xNCIKKyAgICB1bmlxcyAiXjIuMC4wIgorCitwb3N0Y3NzLWZpbHRlci1wbHVnaW5z
QF4yLjAuMDoKKyAgdmVyc2lvbiAiMi4wLjIiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL3Bvc3Rjc3MtZmlsdGVyLXBsdWdpbnMvLS9wb3N0Y3NzLWZpbHRlci1wbHVn
aW5zLTIuMC4yLnRneiM2ZDg1ODYyNTM0ZDczNWFjNDIwZTRhODU4MDZlMWY1ZDQyODZkODRjIgor
ICBkZXBlbmRlbmNpZXM6CisgICAgcG9zdGNzcyAiXjUuMC40IgorICAgIHVuaXFpZCAiXjQuMC4w
IgorCitwb3N0Y3NzLW1lcmdlLWlkZW50c0BeMi4xLjU6CisgIHZlcnNpb24gIjIuMS43IgorICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wb3N0Y3NzLW1lcmdlLWlkZW50
cy8tL3Bvc3Rjc3MtbWVyZ2UtaWRlbnRzLTIuMS43LnRneiM0YzU1MzAzMTNjMDhlMWQ1YjNiYmYz
ZDJiYmM3NDdlMjc4ZWVhMjcwIgorICBkZXBlbmRlbmNpZXM6CisgICAgaGFzICJeMS4wLjEiCisg
ICAgcG9zdGNzcyAiXjUuMC4xMCIKKyAgICBwb3N0Y3NzLXZhbHVlLXBhcnNlciAiXjMuMS4xIgor
Citwb3N0Y3NzLW1lcmdlLWxvbmdoYW5kQF4yLjAuMToKKyAgdmVyc2lvbiAiMi4wLjEiCisgIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Bvc3Rjc3MtbWVyZ2UtbG9uZ2hh
bmQvLS9wb3N0Y3NzLW1lcmdlLWxvbmdoYW5kLTIuMC4xLnRneiNmZjU5YjVkZWM2ZDU4NmNlMmNl
YTE4MzEzOGY1NWM1ODc2ZmE5Y2RjIgorICBkZXBlbmRlbmNpZXM6CisgICAgcG9zdGNzcyAiXjUu
MC40IgorCitwb3N0Y3NzLW1lcmdlLXJ1bGVzQF4yLjAuMzoKKyAgdmVyc2lvbiAiMi4wLjEwIgor
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wb3N0Y3NzLW1lcmdlLXJ1
bGVzLy0vcG9zdGNzcy1tZXJnZS1ydWxlcy0yLjAuMTAudGd6IzU0YjM2MGJlODA0ZTdlNjlhNWM3
MjIyNjM1MjQ3YjkyYTM1NjllOWIiCisgIGRlcGVuZGVuY2llczoKKyAgICBwb3N0Y3NzICJeNS4w
LjQiCisgICAgdmVuZG9ycyAiXjEuMC4wIgorCitwb3N0Y3NzLW1lc3NhZ2UtaGVscGVyc0BeMi4w
LjA6CisgIHZlcnNpb24gIjIuMC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9wb3N0Y3NzLW1lc3NhZ2UtaGVscGVycy8tL3Bvc3Rjc3MtbWVzc2FnZS1oZWxwZXJz
LTIuMC4wLnRneiNhNGYyZjRmYWI2ZTRmZTAwMmYwYWVkMDAwNDc4Y2RmNTJmOWJhNjBlIgorCitw
b3N0Y3NzLW1pbmlmeS1mb250LXZhbHVlc0BeMS4wLjI6CisgIHZlcnNpb24gIjEuMC41IgorICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wb3N0Y3NzLW1pbmlmeS1mb250
LXZhbHVlcy8tL3Bvc3Rjc3MtbWluaWZ5LWZvbnQtdmFsdWVzLTEuMC41LnRneiM0YjU4ZWRiNTY2
NDFlYmE3Yzg0NzRhYjM1MjZjYWZkN2JiZGVjYjY5IgorICBkZXBlbmRlbmNpZXM6CisgICAgb2Jq
ZWN0LWFzc2lnbiAiXjQuMC4xIgorICAgIHBvc3Rjc3MgIl41LjAuNCIKKyAgICBwb3N0Y3NzLXZh
bHVlLXBhcnNlciAiXjMuMC4yIgorCitwb3N0Y3NzLW1pbmlmeS1ncmFkaWVudHNAXjEuMC4xOgor
ICB2ZXJzaW9uICIxLjAuNSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vcG9zdGNzcy1taW5pZnktZ3JhZGllbnRzLy0vcG9zdGNzcy1taW5pZnktZ3JhZGllbnRzLTEu
MC41LnRneiM1ZGJkYTExMzczNzAzZjgzY2ZiNGEzZWEzODgxZDhkNzVmZjVlNmUxIgorICBkZXBl
bmRlbmNpZXM6CisgICAgcG9zdGNzcyAiXjUuMC4xMiIKKyAgICBwb3N0Y3NzLXZhbHVlLXBhcnNl
ciAiXjMuMy4wIgorCitwb3N0Y3NzLW1pbmlmeS1wYXJhbXNAXjEuMC40OgorICB2ZXJzaW9uICIx
LjAuNSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcG9zdGNzcy1t
aW5pZnktcGFyYW1zLy0vcG9zdGNzcy1taW5pZnktcGFyYW1zLTEuMC41LnRneiM4MmQ2MDI2NDNi
ODYxNmE2MWZiMzYzNGQ3ZWRlMDI4OTgzNmQ2N2Y5IgorICBkZXBlbmRlbmNpZXM6CisgICAgYWxw
aGFudW0tc29ydCAiXjEuMC4xIgorICAgIHBvc3Rjc3MgIl41LjAuMiIKKyAgICBwb3N0Y3NzLXZh
bHVlLXBhcnNlciAiXjMuMC4yIgorICAgIHVuaXFzICJeMi4wLjAiCisKK3Bvc3Rjc3MtbWluaWZ5
LXNlbGVjdG9yc0BeMi4wLjQ6CisgIHZlcnNpb24gIjIuMC43IgorICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wb3N0Y3NzLW1pbmlmeS1zZWxlY3RvcnMvLS9wb3N0Y3Nz
LW1pbmlmeS1zZWxlY3RvcnMtMi4wLjcudGd6I2JmYjkyNDhmZTE0ZGIzMzc3MGYwMzY1NzJkZTZi
NDg5N2M0OGQ4MWMiCisgIGRlcGVuZGVuY2llczoKKyAgICBhbHBoYW51bS1zb3J0ICJeMS4wLjIi
CisgICAgaGFzICJeMS4wLjEiCisgICAgcG9zdGNzcyAiXjUuMC4xNCIKKyAgICBwb3N0Y3NzLXNl
bGVjdG9yLXBhcnNlciAiXjIuMC4wIgorCitwb3N0Y3NzLW1vZHVsZXMtZXh0cmFjdC1pbXBvcnRz
QF4xLjAuMDoKKyAgdmVyc2lvbiAiMS4wLjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL3Bvc3Rjc3MtbW9kdWxlcy1leHRyYWN0LWltcG9ydHMvLS9wb3N0Y3NzLW1v
ZHVsZXMtZXh0cmFjdC1pbXBvcnRzLTEuMC4xLnRneiM4ZmIzZmVmOWE2ZGQwNDIwZDNmNmQ0MzUz
Y2YxZmY3M2YyYjJhMzQxIgorICBkZXBlbmRlbmNpZXM6CisgICAgcG9zdGNzcyAiXjUuMC40Igor
Citwb3N0Y3NzLW1vZHVsZXMtbG9jYWwtYnktZGVmYXVsdEBeMS4wLjE6CisgIHZlcnNpb24gIjEu
MS4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wb3N0Y3NzLW1v
ZHVsZXMtbG9jYWwtYnktZGVmYXVsdC8tL3Bvc3Rjc3MtbW9kdWxlcy1sb2NhbC1ieS1kZWZhdWx0
LTEuMS4xLnRneiMyOWExMDY3M2ZhMzdkMTkyNTEyNjVjYTJiYTMxNTBkOTA0MGViNGNlIgorICBk
ZXBlbmRlbmNpZXM6CisgICAgY3NzLXNlbGVjdG9yLXRva2VuaXplciAiXjAuNi4wIgorICAgIHBv
c3Rjc3MgIl41LjAuNCIKKworcG9zdGNzcy1tb2R1bGVzLXNjb3BlQF4xLjAuMDoKKyAgdmVyc2lv
biAiMS4wLjIiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Bvc3Rj
c3MtbW9kdWxlcy1zY29wZS8tL3Bvc3Rjc3MtbW9kdWxlcy1zY29wZS0xLjAuMi50Z3ojZmY5Nzcz
OTVlNWUwNjIwMmQ3MzYyMjkwYjg4YjFlOGNkMDQ5ZGUyOSIKKyAgZGVwZW5kZW5jaWVzOgorICAg
IGNzcy1zZWxlY3Rvci10b2tlbml6ZXIgIl4wLjYuMCIKKyAgICBwb3N0Y3NzICJeNS4wLjQiCisK
K3Bvc3Rjc3MtbW9kdWxlcy12YWx1ZXNAXjEuMS4wOgorICB2ZXJzaW9uICIxLjIuMiIKKyAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcG9zdGNzcy1tb2R1bGVzLXZhbHVl
cy8tL3Bvc3Rjc3MtbW9kdWxlcy12YWx1ZXMtMS4yLjIudGd6I2YwZTdkNDc2ZmUxZWQ4OGM1ZTRj
N2Y5NzUzM2EzZTc3MmFkOTRjYTEiCisgIGRlcGVuZGVuY2llczoKKyAgICBpY3NzLXJlcGxhY2Ut
c3ltYm9scyAiXjEuMC4yIgorICAgIHBvc3Rjc3MgIl41LjAuMTQiCisKK3Bvc3Rjc3Mtbm9ybWFs
aXplLWNoYXJzZXRAXjEuMS4wOgorICB2ZXJzaW9uICIxLjEuMSIKKyAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vcG9zdGNzcy1ub3JtYWxpemUtY2hhcnNldC8tL3Bvc3Rj
c3Mtbm9ybWFsaXplLWNoYXJzZXQtMS4xLjEudGd6I2VmOWVlNzEyMTJkN2ZlNzU5Yzc4ZWQxNjJm
NjFlZDYyYjVjYjkzZjEiCisgIGRlcGVuZGVuY2llczoKKyAgICBwb3N0Y3NzICJeNS4wLjUiCisK
K3Bvc3Rjc3Mtbm9ybWFsaXplLXVybEBeMy4wLjc6CisgIHZlcnNpb24gIjMuMC43IgorICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wb3N0Y3NzLW5vcm1hbGl6ZS11cmwv
LS9wb3N0Y3NzLW5vcm1hbGl6ZS11cmwtMy4wLjcudGd6IzZiZDkwZDBhNGJjNWExZGYyMmMyNmVh
NjVjNTMyNTdkYzM4MjlmNGUiCisgIGRlcGVuZGVuY2llczoKKyAgICBpcy1hYnNvbHV0ZS11cmwg
Il4yLjAuMCIKKyAgICBub3JtYWxpemUtdXJsICJeMS40LjAiCisgICAgcG9zdGNzcyAiXjUuMC4x
NCIKKyAgICBwb3N0Y3NzLXZhbHVlLXBhcnNlciAiXjMuMi4zIgorCitwb3N0Y3NzLW9yZGVyZWQt
dmFsdWVzQF4yLjEuMDoKKyAgdmVyc2lvbiAiMi4yLjIiCisgIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL3Bvc3Rjc3Mtb3JkZXJlZC12YWx1ZXMvLS9wb3N0Y3NzLW9yZGVy
ZWQtdmFsdWVzLTIuMi4yLnRneiNiZThiNTExNzQxZmFiMmRhYzhlNjE0YTIzMDJlOWQxMDI2N2Iw
NzcxIgorICBkZXBlbmRlbmNpZXM6CisgICAgcG9zdGNzcyAiXjUuMC40IgorICAgIHBvc3Rjc3Mt
dmFsdWUtcGFyc2VyICJeMy4wLjEiCisKK3Bvc3Rjc3MtcmVkdWNlLWlkZW50c0BeMi4yLjI6Cisg
IHZlcnNpb24gIjIuMy4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9wb3N0Y3NzLXJlZHVjZS1pZGVudHMvLS9wb3N0Y3NzLXJlZHVjZS1pZGVudHMtMi4zLjEudGd6
IzAyNGU4ZTIxOWY1Mjc3MzMxMzQwODU3M2RiOTY0NWJhNjJkMmQyZmUiCisgIGRlcGVuZGVuY2ll
czoKKyAgICBwb3N0Y3NzICJeNS4wLjQiCisgICAgcG9zdGNzcy12YWx1ZS1wYXJzZXIgIl4zLjAu
MiIKKworcG9zdGNzcy1yZWR1Y2UtaW5pdGlhbEBeMS4wLjA6CisgIHZlcnNpb24gIjEuMC4wIgor
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wb3N0Y3NzLXJlZHVjZS1p
bml0aWFsLy0vcG9zdGNzcy1yZWR1Y2UtaW5pdGlhbC0xLjAuMC50Z3ojOGY3MzliOTM4Mjg5ZWYy
ZTQ4OTM2ZDcxMDE3ODNlNDc0MWNhOWJiYiIKKyAgZGVwZW5kZW5jaWVzOgorICAgIHBvc3Rjc3Mg
Il41LjAuNCIKKworcG9zdGNzcy1yZWR1Y2UtdHJhbnNmb3Jtc0BeMS4wLjM6CisgIHZlcnNpb24g
IjEuMC40IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wb3N0Y3Nz
LXJlZHVjZS10cmFuc2Zvcm1zLy0vcG9zdGNzcy1yZWR1Y2UtdHJhbnNmb3Jtcy0xLjAuNC50Z3oj
ZmY3NmY0ZDgyMTI0MzdiMzFjMjk4YTQyZDJlMTQ0NDAyNTc3MWFlMSIKKyAgZGVwZW5kZW5jaWVz
OgorICAgIGhhcyAiXjEuMC4xIgorICAgIHBvc3Rjc3MgIl41LjAuOCIKKyAgICBwb3N0Y3NzLXZh
bHVlLXBhcnNlciAiXjMuMC4xIgorCitwb3N0Y3NzLXNlbGVjdG9yLXBhcnNlckBeMi4wLjA6Cisg
IHZlcnNpb24gIjIuMi4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9wb3N0Y3NzLXNlbGVjdG9yLXBhcnNlci8tL3Bvc3Rjc3Mtc2VsZWN0b3ItcGFyc2VyLTIuMi4y
LnRneiMzZDcwZjVhZGRhMTMwZGE1MWM3YzBjMmZjMDIzZjU2YjEzNzRmZTA4IgorICBkZXBlbmRl
bmNpZXM6CisgICAgZmxhdHRlbiAiXjEuMC4yIgorICAgIGluZGV4ZXMtb2YgIl4xLjAuMSIKKyAg
ICB1bmlxICJeMS4wLjEiCisKK3Bvc3Rjc3Mtc3Znb0BeMi4xLjE6CisgIHZlcnNpb24gIjIuMS41
IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wb3N0Y3NzLXN2Z28v
LS9wb3N0Y3NzLXN2Z28tMi4xLjUudGd6IzQ2ZmMwMzYzZjAxYmFiNmEzNmE5YWJiMDFjMjI5ZmNj
NDUzNjMwOTQiCisgIGRlcGVuZGVuY2llczoKKyAgICBpcy1zdmcgIl4yLjAuMCIKKyAgICBwb3N0
Y3NzICJeNS4wLjE0IgorICAgIHBvc3Rjc3MtdmFsdWUtcGFyc2VyICJeMy4yLjMiCisgICAgc3Zn
byAiXjAuNy4wIgorCitwb3N0Y3NzLXVuaXF1ZS1zZWxlY3RvcnNAXjIuMC4yOgorICB2ZXJzaW9u
ICIyLjAuMiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcG9zdGNz
cy11bmlxdWUtc2VsZWN0b3JzLy0vcG9zdGNzcy11bmlxdWUtc2VsZWN0b3JzLTIuMC4yLnRneiM5
ODFkNTdkMjlkZGNiMzNlN2IxZGZlMWZkNDNiODY0OWY5MzNjYTFkIgorICBkZXBlbmRlbmNpZXM6
CisgICAgYWxwaGFudW0tc29ydCAiXjEuMC4xIgorICAgIHBvc3Rjc3MgIl41LjAuNCIKKyAgICB1
bmlxcyAiXjIuMC4wIgorCitwb3N0Y3NzLXZhbHVlLXBhcnNlckBeMy4wLjEsIHBvc3Rjc3MtdmFs
dWUtcGFyc2VyQF4zLjAuMiwgcG9zdGNzcy12YWx1ZS1wYXJzZXJAXjMuMS4xLCBwb3N0Y3NzLXZh
bHVlLXBhcnNlckBeMy4xLjIsIHBvc3Rjc3MtdmFsdWUtcGFyc2VyQF4zLjIuMywgcG9zdGNzcy12
YWx1ZS1wYXJzZXJAXjMuMy4wOgorICB2ZXJzaW9uICIzLjMuMCIKKyAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vcG9zdGNzcy12YWx1ZS1wYXJzZXIvLS9wb3N0Y3NzLXZh
bHVlLXBhcnNlci0zLjMuMC50Z3ojODdmMzhmOWYxOGY3NzRhNGFiNGM4YTIzMmY1YzVjZTg4NzJh
OWQxNSIKKworcG9zdGNzcy16aW5kZXhAXjIuMC4xOgorICB2ZXJzaW9uICIyLjIuMCIKKyAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcG9zdGNzcy16aW5kZXgvLS9wb3N0
Y3NzLXppbmRleC0yLjIuMC50Z3ojZDIxMDlkZGMwNTViOTFhZjY3ZmM0Y2IzYjAyNTk0NjYzOWQy
YWYyMiIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGhhcyAiXjEuMC4xIgorICAgIHBvc3Rjc3MgIl41
LjAuNCIKKyAgICB1bmlxcyAiXjIuMC4wIgorCitwb3N0Y3NzQF41LjAuMTAsIHBvc3Rjc3NAXjUu
MC4xMSwgcG9zdGNzc0BeNS4wLjEyLCBwb3N0Y3NzQF41LjAuMTMsIHBvc3Rjc3NAXjUuMC4xNCwg
cG9zdGNzc0BeNS4wLjE2LCBwb3N0Y3NzQF41LjAuMiwgcG9zdGNzc0BeNS4wLjQsIHBvc3Rjc3NA
XjUuMC41LCBwb3N0Y3NzQF41LjAuNiwgcG9zdGNzc0BeNS4wLjgsIHBvc3Rjc3NAXjUuMi41Ogor
ICB2ZXJzaW9uICI1LjIuNiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vcG9zdGNzcy8tL3Bvc3Rjc3MtNS4yLjYudGd6I2EyNTJjZDY3Y2Q1MjU4NTAzNWYxN2U5YWQx
MmIzNTEzN2E3YmRkOWUiCisgIGRlcGVuZGVuY2llczoKKyAgICBjaGFsayAiXjEuMS4zIgorICAg
IGpzLWJhc2U2NCAiXjIuMS45IgorICAgIHNvdXJjZS1tYXAgIl4wLjUuNiIKKyAgICBzdXBwb3J0
cy1jb2xvciAiXjMuMS4yIgorCitwcmVsdWRlLWxzQH4xLjEuMjoKKyAgdmVyc2lvbiAiMS4xLjIi
CisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3ByZWx1ZGUtbHMvLS9w
cmVsdWRlLWxzLTEuMS4yLnRneiMyMTkzMmE1NDlmNWU1MmZmZDlhODI3ZjU3MGUwNGJlNjJhOTdk
YTU0IgorCitwcmVwZW5kLWh0dHBAXjEuMC4wOgorICB2ZXJzaW9uICIxLjAuNCIKKyAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcHJlcGVuZC1odHRwLy0vcHJlcGVuZC1o
dHRwLTEuMC40LnRneiNkNGY0NTYyYjBjZTM2OTZlNDFhYzUyZDBlMDAyZTU3YTYzNWRjNmRjIgor
CitwcmVzZXJ2ZUBeMC4yLjA6CisgIHZlcnNpb24gIjAuMi4wIgorICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wcmVzZXJ2ZS8tL3ByZXNlcnZlLTAuMi4wLnRneiM4MTVl
ZDFmNmViYzY1OTI2Zjg2NWIzMTBjMDcxM2JjYjMzMTVjZTRiIgorCitwcmV0dHktZXJyb3JAXjIu
MC4yOgorICB2ZXJzaW9uICIyLjAuMiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vcHJldHR5LWVycm9yLy0vcHJldHR5LWVycm9yLTIuMC4yLnRneiNhN2RiMTljYmI1
MjljYTlmMGFmM2QzYTJmNzdkNWNhZjhlNWRlYzIzIgorICBkZXBlbmRlbmNpZXM6CisgICAgcmVu
ZGVya2lkICJ+Mi4wLjAiCisgICAgdXRpbGEgIn4wLjQiCisKK3ByaXZhdGVAXjAuMS42LCBwcml2
YXRlQH4wLjEuNToKKyAgdmVyc2lvbiAiMC4xLjYiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL3ByaXZhdGUvLS9wcml2YXRlLTAuMS42LnRneiM1NWM2YTk3NmQwZjli
YWZiOTkyNDg1MTM1MGZlNDdiOWI1ZmJiN2MxIgorCitwcm9jZXNzLW5leHRpY2stYXJnc0B+MS4w
LjY6CisgIHZlcnNpb24gIjEuMC43IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9wcm9jZXNzLW5leHRpY2stYXJncy8tL3Byb2Nlc3MtbmV4dGljay1hcmdzLTEuMC43
LnRneiMxNTBlMjBiNzU2NTkwYWQzZjkxMDkzZjI1YTRmMmFkOGJmZjMwYmEzIgorCitwcm9jZXNz
QF4wLjExLjA6CisgIHZlcnNpb24gIjAuMTEuOSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vcHJvY2Vzcy8tL3Byb2Nlc3MtMC4xMS45LnRneiM3YmQ1YWQyMWFhNjI1
M2U3ZGE4NjgyMjY0ZjFlMTFkMTFjMDMxOGMxIgorCitwcm9ncmVzc0BeMS4xLjg6CisgIHZlcnNp
b24gIjEuMS44IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wcm9n
cmVzcy8tL3Byb2dyZXNzLTEuMS44LnRneiNlMjYwYzc4ZjYxNjFjZGQ5YjBlNTZjYzNlMGE4NWRl
MTdjN2E1N2JlIgorCitwcm90by1saXN0QH4xLjIuMToKKyAgdmVyc2lvbiAiMS4yLjQiCisgIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Byb3RvLWxpc3QvLS9wcm90by1s
aXN0LTEuMi40LnRneiMyMTJkNWJmZTEzMTgzMDZhNDIwZjY0MDJiOGUyNmZmMzk2NDdhODQ5Igor
Citwcm94eS1hZGRyQH4xLjEuMjoKKyAgdmVyc2lvbiAiMS4xLjIiCisgIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Byb3h5LWFkZHIvLS9wcm94eS1hZGRyLTEuMS4yLnRn
eiNiNGNjNWYyMjYxMGQ5NTM1ODI0YzEyM2FlZjlkM2NmNzNjNDBiYTM3IgorICBkZXBlbmRlbmNp
ZXM6CisgICAgZm9yd2FyZGVkICJ+MC4xLjAiCisgICAgaXBhZGRyLmpzICIxLjEuMSIKKworcHJy
QH4wLjAuMDoKKyAgdmVyc2lvbiAiMC4wLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL3Byci8tL3Byci0wLjAuMC50Z3ojMWE4NGI4NTkwODMyNTUwMTQxMTg1M2Qw
MDgxZWUzZmE4NmUyOTI2YSIKKworcHNldWRvbWFwQF4xLjAuMToKKyAgdmVyc2lvbiAiMS4wLjIi
CisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3BzZXVkb21hcC8tL3Bz
ZXVkb21hcC0xLjAuMi50Z3ojZjA1MmEyOGRhNzBlNjE4OTE3ZWYwYThhYzM0YzFhZTVhNjgyODZi
MyIKKworcHVueWNvZGVAXjEuMi40LCBwdW55Y29kZUBeMS40LjE6CisgIHZlcnNpb24gIjEuNC4x
IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wdW55Y29kZS8tL3B1
bnljb2RlLTEuNC4xLnRneiNjMGQ1YTYzYjI3MTg4MDBhZDhlMWViMGZhNTI2OWM4NGRkNDE4NDVl
IgorCitwdW55Y29kZUAxLjMuMjoKKyAgdmVyc2lvbiAiMS4zLjIiCisgIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3B1bnljb2RlLy0vcHVueWNvZGUtMS4zLjIudGd6Izk2
NTNhMDM2ZmI3YzFlZTQyMzQyZjIzMjVjY2VlZmVhMzkyNmM0OGQiCisKK3FAXjEuMS4yOgorICB2
ZXJzaW9uICIxLjQuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
cS8tL3EtMS40LjEudGd6IzU1NzA1YmNkOTNjNWYzNjczNTMwYzJjMmNiYzBjMmIzYWRkYzI4NmUi
CisKK3FzQH42LjMuMDoKKyAgdmVyc2lvbiAiNi4zLjAiCisgIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL3FzLy0vcXMtNi4zLjAudGd6I2Y0MDNiMjY0ZjIzYmMwMTIyOGM3
NDEzMWI0MDdmMThkNWVhNWQ0NDIiCisKK3FzQDYuMi4wOgorICB2ZXJzaW9uICI2LjIuMCIKKyAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcXMvLS9xcy02LjIuMC50Z3oj
M2I3ODQ4YzAzYzJkZWNlNjlhOTUyMmIwZmFlOGM0MTI2ZDc0NWYzYiIKKworcXVlcnktc3RyaW5n
QF40LjEuMDoKKyAgdmVyc2lvbiAiNC4yLjMiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL3F1ZXJ5LXN0cmluZy8tL3F1ZXJ5LXN0cmluZy00LjIuMy50Z3ojOWYyNzI3
M2QyMDdhMjVhOGVlNGM3YjhjNzRkY2Q0NWQ1NTZkYjgyMiIKKyAgZGVwZW5kZW5jaWVzOgorICAg
IG9iamVjdC1hc3NpZ24gIl40LjEuMCIKKyAgICBzdHJpY3QtdXJpLWVuY29kZSAiXjEuMC4wIgor
CitxdWVyeXN0cmluZy1lczNAXjAuMi4wOgorICB2ZXJzaW9uICIwLjIuMSIKKyAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcXVlcnlzdHJpbmctZXMzLy0vcXVlcnlzdHJp
bmctZXMzLTAuMi4xLnRneiM5ZWM2MWY3OTA0OTg3NTcwN2Q2OTQxNDU5NmZkOTA3YTRkNzExZTcz
IgorCitxdWVyeXN0cmluZ0BeMC4yLjAsIHF1ZXJ5c3RyaW5nQDAuMi4wOgorICB2ZXJzaW9uICIw
LjIuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcXVlcnlzdHJp
bmcvLS9xdWVyeXN0cmluZy0wLjIuMC50Z3ojYjIwOTg0OTIwM2JiMjVkZjgyMGRhNzU2ZTc0NzAw
NTg3ODUyMTYyMCIKKworcmFuZG9tYXRpY0BeMS4xLjM6CisgIHZlcnNpb24gIjEuMS42IgorICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9yYW5kb21hdGljLy0vcmFuZG9t
YXRpYy0xLjEuNi50Z3ojMTEwZGNhYmZmMzk3ZTlkY2ZmN2MwNzg5Y2NjMGE0OWFkZjFlYzViYiIK
KyAgZGVwZW5kZW5jaWVzOgorICAgIGlzLW51bWJlciAiXjIuMC4yIgorICAgIGtpbmQtb2YgIl4z
LjAuMiIKKworcmFuZ2UtcGFyc2VyQF4xLjAuMywgcmFuZ2UtcGFyc2VyQH4xLjIuMDoKKyAgdmVy
c2lvbiAiMS4yLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Jh
bmdlLXBhcnNlci8tL3JhbmdlLXBhcnNlci0xLjIuMC50Z3ojZjQ5YmU2YjQ4Nzg5NGRkYzQwZGNj
OTRhMzIyZjYxMTA5MmUwMGQ1ZSIKKworcmNAfjEuMS42OgorICB2ZXJzaW9uICIxLjEuNiIKKyAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcmMvLS9yYy0xLjEuNi50Z3oj
NDM2NTFiNzZiNmFlNTNiNWM4MDJmMTE1MWZhM2ZjM2IwNTk5NjljOSIKKyAgZGVwZW5kZW5jaWVz
OgorICAgIGRlZXAtZXh0ZW5kICJ+MC40LjAiCisgICAgaW5pICJ+MS4zLjAiCisgICAgbWluaW1p
c3QgIl4xLjIuMCIKKyAgICBzdHJpcC1qc29uLWNvbW1lbnRzICJ+MS4wLjQiCisKKyJyZWFkYWJs
ZS1zdHJlYW1AXjIuMC4wIHx8IF4xLjEuMTMiLCByZWFkYWJsZS1zdHJlYW1AXjIuMC4xLCByZWFk
YWJsZS1zdHJlYW1AXjIuMC4yLCByZWFkYWJsZS1zdHJlYW1AXjIuMC41LCByZWFkYWJsZS1zdHJl
YW1AXjIuMS4wOgorICB2ZXJzaW9uICIyLjIuMiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vcmVhZGFibGUtc3RyZWFtLy0vcmVhZGFibGUtc3RyZWFtLTIuMi4yLnRn
eiNhOWU2ZmVjM2M3ZGRhODVmOGJiMWIzYmE3MDI4NjA0NTU2ZmM4MjVlIgorICBkZXBlbmRlbmNp
ZXM6CisgICAgYnVmZmVyLXNoaW1zICJeMS4wLjAiCisgICAgY29yZS11dGlsLWlzICJ+MS4wLjAi
CisgICAgaW5oZXJpdHMgIn4yLjAuMSIKKyAgICBpc2FycmF5ICJ+MS4wLjAiCisgICAgcHJvY2Vz
cy1uZXh0aWNrLWFyZ3MgIn4xLjAuNiIKKyAgICBzdHJpbmdfZGVjb2RlciAifjAuMTAueCIKKyAg
ICB1dGlsLWRlcHJlY2F0ZSAifjEuMC4xIgorCityZWFkYWJsZS1zdHJlYW1AfjIuMC4wOgorICB2
ZXJzaW9uICIyLjAuNiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
cmVhZGFibGUtc3RyZWFtLy0vcmVhZGFibGUtc3RyZWFtLTIuMC42LnRneiM4ZjkwMzQxZTY4YTUz
Y2NjOTI4Nzg4ZGFjZmNkMTFiMzZlYjliNzhlIgorICBkZXBlbmRlbmNpZXM6CisgICAgY29yZS11
dGlsLWlzICJ+MS4wLjAiCisgICAgaW5oZXJpdHMgIn4yLjAuMSIKKyAgICBpc2FycmF5ICJ+MS4w
LjAiCisgICAgcHJvY2Vzcy1uZXh0aWNrLWFyZ3MgIn4xLjAuNiIKKyAgICBzdHJpbmdfZGVjb2Rl
ciAifjAuMTAueCIKKyAgICB1dGlsLWRlcHJlY2F0ZSAifjEuMC4xIgorCityZWFkYWJsZS1zdHJl
YW1AfjIuMS40OgorICB2ZXJzaW9uICIyLjEuNSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vcmVhZGFibGUtc3RyZWFtLy0vcmVhZGFibGUtc3RyZWFtLTIuMS41LnRn
eiM2NmZhOGI3MjBlMTQzOGIzNjQ2ODFmMmFkMWE2M2M2MTg0NDhjOWQwIgorICBkZXBlbmRlbmNp
ZXM6CisgICAgYnVmZmVyLXNoaW1zICJeMS4wLjAiCisgICAgY29yZS11dGlsLWlzICJ+MS4wLjAi
CisgICAgaW5oZXJpdHMgIn4yLjAuMSIKKyAgICBpc2FycmF5ICJ+MS4wLjAiCisgICAgcHJvY2Vz
cy1uZXh0aWNrLWFyZ3MgIn4xLjAuNiIKKyAgICBzdHJpbmdfZGVjb2RlciAifjAuMTAueCIKKyAg
ICB1dGlsLWRlcHJlY2F0ZSAifjEuMC4xIgorCityZWFkYWJsZS1zdHJlYW1AMS4wOgorICB2ZXJz
aW9uICIxLjAuMzQiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Jl
YWRhYmxlLXN0cmVhbS8tL3JlYWRhYmxlLXN0cmVhbS0xLjAuMzQudGd6IzEyNTgyMGUzNGJjODQy
ZDJmMmFhYWZhZmU0YzI5MTZlZTMyYzE1N2MiCisgIGRlcGVuZGVuY2llczoKKyAgICBjb3JlLXV0
aWwtaXMgIn4xLjAuMCIKKyAgICBpbmhlcml0cyAifjIuMC4xIgorICAgIGlzYXJyYXkgIjAuMC4x
IgorICAgIHN0cmluZ19kZWNvZGVyICJ+MC4xMC54IgorCityZWFkZGlycEBeMi4wLjA6CisgIHZl
cnNpb24gIjIuMS4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9y
ZWFkZGlycC8tL3JlYWRkaXJwLTIuMS4wLnRneiM0ZWQwYWQwNjBkZjMwNzMzMDBjNDg0NDAzNzNm
NzJkMWNjNjQyZDc4IgorICBkZXBlbmRlbmNpZXM6CisgICAgZ3JhY2VmdWwtZnMgIl40LjEuMiIK
KyAgICBtaW5pbWF0Y2ggIl4zLjAuMiIKKyAgICByZWFkYWJsZS1zdHJlYW0gIl4yLjAuMiIKKyAg
ICBzZXQtaW1tZWRpYXRlLXNoaW0gIl4xLjAuMSIKKworcmVhZGxpbmUyQF4xLjAuMToKKyAgdmVy
c2lvbiAiMS4wLjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Jl
YWRsaW5lMi8tL3JlYWRsaW5lMi0xLjAuMS50Z3ojNDEwNTk2MDhmZmMxNTQ3NTdiNzE1ZDk5ODlk
MTk5ZmZiZjM3MmUzNSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGNvZGUtcG9pbnQtYXQgIl4xLjAu
MCIKKyAgICBpcy1mdWxsd2lkdGgtY29kZS1wb2ludCAiXjEuMC4wIgorICAgIG11dGUtc3RyZWFt
ICIwLjAuNSIKKworcmVjaG9pckBeMC42LjI6CisgIHZlcnNpb24gIjAuNi4yIgorICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9yZWNob2lyLy0vcmVjaG9pci0wLjYuMi50
Z3ojODUyMDRiNTRkYmE4MmQ1NzQyZTI4Yzk2NzU2ZWY0M2FmNTBlMzM4NCIKKyAgZGVwZW5kZW5j
aWVzOgorICAgIHJlc29sdmUgIl4xLjEuNiIKKworcmVkdWNlLWNzcy1jYWxjQF4xLjIuNjoKKyAg
dmVyc2lvbiAiMS4zLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L3JlZHVjZS1jc3MtY2FsYy8tL3JlZHVjZS1jc3MtY2FsYy0xLjMuMC50Z3ojNzQ3YzkxNGUwNDk2
MTRhNGM5Y2ZiYmE2Mjk4NzFhZDFkMjkyNzcxNiIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGJhbGFu
Y2VkLW1hdGNoICJeMC40LjIiCisgICAgbWF0aC1leHByZXNzaW9uLWV2YWx1YXRvciAiXjEuMi4x
NCIKKyAgICByZWR1Y2UtZnVuY3Rpb24tY2FsbCAiXjEuMC4xIgorCityZWR1Y2UtZnVuY3Rpb24t
Y2FsbEBeMS4wLjE6CisgIHZlcnNpb24gIjEuMC4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9yZWR1Y2UtZnVuY3Rpb24tY2FsbC8tL3JlZHVjZS1mdW5jdGlvbi1j
YWxsLTEuMC4yLnRneiM1YTIwMGJmOTJlMGUzNzc1MTc1MmZlNDViMGFiMzMwZmQ0YjZiZTk5Igor
ICBkZXBlbmRlbmNpZXM6CisgICAgYmFsYW5jZWQtbWF0Y2ggIl4wLjQuMiIKKworcmVnZW5lcmF0
ZUBeMS4yLjE6CisgIHZlcnNpb24gIjEuMy4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9yZWdlbmVyYXRlLy0vcmVnZW5lcmF0ZS0xLjMuMi50Z3ojZDE5NDFjNjdi
YWQ0MzdlMWJlNzY0MzNhZGQ1YjM4NWY5NWIxOTI2MCIKKworcmVnZW5lcmF0b3ItcnVudGltZUBe
MC45LjU6CisgIHZlcnNpb24gIjAuOS42IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9yZWdlbmVyYXRvci1ydW50aW1lLy0vcmVnZW5lcmF0b3ItcnVudGltZS0wLjku
Ni50Z3ojZDMzZWI5NWQwZDIwMDFhNGJlMzk2NTk3MDdjNTFiMGNiNzFjZTAyOSIKKworcmVnZXgt
Y2FjaGVAXjAuNC4yOgorICB2ZXJzaW9uICIwLjQuMyIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vcmVnZXgtY2FjaGUvLS9yZWdleC1jYWNoZS0wLjQuMy50Z3ojOWIx
YTZjMzVkNGQwZGZjZWY1NzExYWU2NTFlOGU5ZDNkNzExNDE0NSIKKyAgZGVwZW5kZW5jaWVzOgor
ICAgIGlzLWVxdWFsLXNoYWxsb3cgIl4wLjEuMyIKKyAgICBpcy1wcmltaXRpdmUgIl4yLjAuMCIK
KworcmVnZXhwdS1jb3JlQF4xLjAuMDoKKyAgdmVyc2lvbiAiMS4wLjAiCisgIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3JlZ2V4cHUtY29yZS8tL3JlZ2V4cHUtY29yZS0x
LjAuMC50Z3ojODZhNzYzZjU4ZWU0ZDdjMmY2YjEwMmU0NzY0MDUwZGU3ZWQ5MGM2YiIKKyAgZGVw
ZW5kZW5jaWVzOgorICAgIHJlZ2VuZXJhdGUgIl4xLjIuMSIKKyAgICByZWdqc2dlbiAiXjAuMi4w
IgorICAgIHJlZ2pzcGFyc2VyICJeMC4xLjQiCisKK3JlZ2V4cHUtY29yZUBeMi4wLjA6CisgIHZl
cnNpb24gIjIuMC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9y
ZWdleHB1LWNvcmUvLS9yZWdleHB1LWNvcmUtMi4wLjAudGd6IzQ5ZDAzODgzN2I4ZGNmOGJmYTVi
OWE0MjEzOTkzOGU2ZWEyYWUyNDAiCisgIGRlcGVuZGVuY2llczoKKyAgICByZWdlbmVyYXRlICJe
MS4yLjEiCisgICAgcmVnanNnZW4gIl4wLjIuMCIKKyAgICByZWdqc3BhcnNlciAiXjAuMS40Igor
CityZWdqc2dlbkBeMC4yLjA6CisgIHZlcnNpb24gIjAuMi4wIgorICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9yZWdqc2dlbi8tL3JlZ2pzZ2VuLTAuMi4wLnRneiM2YzAx
NmFkZWFjNTU0Zjc1ODIzZmUzN2FjMDViOTJkNWE0ZWRiMWY3IgorCityZWdqc3BhcnNlckBeMC4x
LjQ6CisgIHZlcnNpb24gIjAuMS41IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9yZWdqc3BhcnNlci8tL3JlZ2pzcGFyc2VyLTAuMS41LnRneiM3ZWU4Zjg0ZGM2ZmE3
OTJkM2ZkMGFlMjI4ZDI0YmQ5NDllYWQyMDVjIgorICBkZXBlbmRlbmNpZXM6CisgICAganNlc2Mg
In4wLjUuMCIKKworcmVsYXRldXJsQDAuMi54OgorICB2ZXJzaW9uICIwLjIuNyIKKyAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcmVsYXRldXJsLy0vcmVsYXRldXJsLTAu
Mi43LnRneiM1NGRiZjM3N2U1MTQ0MGFjYTkwYTRjZDI3NDYwMGQzZmYyZDg4OGE5IgorCityZW5k
ZXJraWRAfjIuMC4wOgorICB2ZXJzaW9uICIyLjAuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vcmVuZGVya2lkLy0vcmVuZGVya2lkLTIuMC4wLnRneiMxODU5NzUz
ZTdhNWFkYmYzNTQ0M2FiYTBkNGU0NTc5ZTc4YWJlZTg1IgorICBkZXBlbmRlbmNpZXM6CisgICAg
Y3NzLXNlbGVjdCAiXjEuMS4wIgorICAgIGRvbS1jb252ZXJ0ZXIgIn4wLjEiCisgICAgaHRtbHBh
cnNlcjIgIn4zLjMuMCIKKyAgICBzdHJpcC1hbnNpICJeMy4wLjAiCisgICAgdXRpbGEgIn4wLjMi
CisKK3JlcGVhdC1lbGVtZW50QF4xLjEuMjoKKyAgdmVyc2lvbiAiMS4xLjIiCisgIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3JlcGVhdC1lbGVtZW50Ly0vcmVwZWF0LWVs
ZW1lbnQtMS4xLjIudGd6I2VmMDg5YTE3OGQxNDgzYmFhZTRkOTNlYjk4YjRmOWU0ZTExZDk5MGEi
CisKK3JlcGVhdC1zdHJpbmdAXjEuNS4yOgorICB2ZXJzaW9uICIxLjYuMSIKKyAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcmVwZWF0LXN0cmluZy8tL3JlcGVhdC1zdHJp
bmctMS42LjEudGd6IzhkY2FlNDcwZTFjODhhYmMyZDYwMGZmZjRhNzc2Mjg2ZGE3NWU2MzciCisK
K3JlcGVhdGluZ0BeMi4wLjA6CisgIHZlcnNpb24gIjIuMC4xIgorICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9yZXBlYXRpbmcvLS9yZXBlYXRpbmctMi4wLjEudGd6IzUy
MTRjNTNhOTI2ZDM1NTI3MDc1MjdmYmFiNDE1ZGJjMDhkMDZkZGEiCisgIGRlcGVuZGVuY2llczoK
KyAgICBpcy1maW5pdGUgIl4xLjAuMCIKKworcmVxdWVzdEBeMi43OS4wOgorICB2ZXJzaW9uICIy
Ljc5LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3JlcXVlc3Qv
LS9yZXF1ZXN0LTIuNzkuMC50Z3ojNGRmZTViZjZiZThiOGNkYzM3ZmNmOTNlMDRiNjU1Nzc3MjI3
MTBkZSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGF3cy1zaWduMiAifjAuNi4wIgorICAgIGF3czQg
Il4xLjIuMSIKKyAgICBjYXNlbGVzcyAifjAuMTEuMCIKKyAgICBjb21iaW5lZC1zdHJlYW0gIn4x
LjAuNSIKKyAgICBleHRlbmQgIn4zLjAuMCIKKyAgICBmb3JldmVyLWFnZW50ICJ+MC42LjEiCisg
ICAgZm9ybS1kYXRhICJ+Mi4xLjEiCisgICAgaGFyLXZhbGlkYXRvciAifjIuMC42IgorICAgIGhh
d2sgIn4zLjEuMyIKKyAgICBodHRwLXNpZ25hdHVyZSAifjEuMS4wIgorICAgIGlzLXR5cGVkYXJy
YXkgIn4xLjAuMCIKKyAgICBpc3N0cmVhbSAifjAuMS4yIgorICAgIGpzb24tc3RyaW5naWZ5LXNh
ZmUgIn41LjAuMSIKKyAgICBtaW1lLXR5cGVzICJ+Mi4xLjciCisgICAgb2F1dGgtc2lnbiAifjAu
OC4xIgorICAgIHFzICJ+Ni4zLjAiCisgICAgc3RyaW5nc3RyZWFtICJ+MC4wLjQiCisgICAgdG91
Z2gtY29va2llICJ+Mi4zLjAiCisgICAgdHVubmVsLWFnZW50ICJ+MC40LjEiCisgICAgdXVpZCAi
XjMuMC4wIgorCityZXF1aXJlLXVuY2FjaGVkQF4xLjAuMjoKKyAgdmVyc2lvbiAiMS4wLjMiCisg
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3JlcXVpcmUtdW5jYWNoZWQv
LS9yZXF1aXJlLXVuY2FjaGVkLTEuMC4zLnRneiM0ZTBkNTZkNmM5NjYyZmQzMWU0MzAxMWM0Yjk1
YWE0OTk1NTQyMWQzIgorICBkZXBlbmRlbmNpZXM6CisgICAgY2FsbGVyLXBhdGggIl4wLjEuMCIK
KyAgICByZXNvbHZlLWZyb20gIl4xLjAuMCIKKworcmVxdWlyZXMtcG9ydEAxLngueDoKKyAgdmVy
c2lvbiAiMS4wLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Jl
cXVpcmVzLXBvcnQvLS9yZXF1aXJlcy1wb3J0LTEuMC4wLnRneiM5MjVkMjYwMWQzOWFjNDg1ZTA5
MWNmMGRhNWM2ZTY5NGRjM2RjYWZmIgorCityZXNvbHZlLWZyb21AXjEuMC4wOgorICB2ZXJzaW9u
ICIxLjAuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcmVzb2x2
ZS1mcm9tLy0vcmVzb2x2ZS1mcm9tLTEuMC4xLnRneiMyNmNiZmU5MzVkMWFlZWVhYmIyOWJjM2Zl
NWFlYjAxZTkzZDQ0MjI2IgorCityZXNvbHZlQF4xLjEuNjoKKyAgdmVyc2lvbiAiMS4xLjciCisg
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Jlc29sdmUvLS9yZXNvbHZl
LTEuMS43LnRneiMyMDMxMTRkODJhZDJjNWVkOWU4ZTA0MTFiMzkzMjg3NWU4ODllOTdiIgorCity
ZXN0b3JlLWN1cnNvckBeMS4wLjE6CisgIHZlcnNpb24gIjEuMC4xIgorICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9yZXN0b3JlLWN1cnNvci8tL3Jlc3RvcmUtY3Vyc29y
LTEuMC4xLnRneiMzNDY2MWY0Njg4NjMyN2ZlZDI5OTE0NzkxNTIyNTJkZjkyZGFhNTQxIgorICBk
ZXBlbmRlbmNpZXM6CisgICAgZXhpdC1ob29rICJeMS4wLjAiCisgICAgb25ldGltZSAiXjEuMC4w
IgorCityaWdodC1hbGlnbkBeMC4xLjE6CisgIHZlcnNpb24gIjAuMS4zIgorICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9yaWdodC1hbGlnbi8tL3JpZ2h0LWFsaWduLTAu
MS4zLnRneiM2MTMzOWI3MjJmZTZhMzUxNTY4OTIxMGQyNGUxNGM5NjE0ODYxM2VmIgorICBkZXBl
bmRlbmNpZXM6CisgICAgYWxpZ24tdGV4dCAiXjAuMS4xIgorCityaW1yYWZAXjIuMi44LCByaW1y
YWZAfjIuNS4xLCByaW1yYWZAfjIuNS40LCByaW1yYWZAMjoKKyAgdmVyc2lvbiAiMi41LjQiCisg
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3JpbXJhZi8tL3JpbXJhZi0y
LjUuNC50Z3ojOTY4MDAwOTNjYmYxYTBjODZiZDk1YjQ2MjU0Njc1MzVjMjlkZmEwNCIKKyAgZGVw
ZW5kZW5jaWVzOgorICAgIGdsb2IgIl43LjAuNSIKKworcmlwZW1kMTYwQDAuMi4wOgorICB2ZXJz
aW9uICIwLjIuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcmlw
ZW1kMTYwLy0vcmlwZW1kMTYwLTAuMi4wLnRneiMyYmYxOThiZGUxNjdjYWNmYTUxYzBhOTI4ZTg0
YjY4YmJlMTcxZmNlIgorCitydW4tYXN5bmNAXjAuMS4wOgorICB2ZXJzaW9uICIwLjEuMCIKKyAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcnVuLWFzeW5jLy0vcnVuLWFz
eW5jLTAuMS4wLnRneiNjOGFkNGE1ZTExMDY2MWU0MDJhN2QyMWI1MzBlMDA5ZjI1ZjhlMzg5Igor
ICBkZXBlbmRlbmNpZXM6CisgICAgb25jZSAiXjEuMy4wIgorCityeC1saXRlQF4zLjEuMjoKKyAg
dmVyc2lvbiAiMy4xLjIiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L3J4LWxpdGUvLS9yeC1saXRlLTMuMS4yLnRneiMxOWNlNTAyY2E1NzI2NjVmM2I2NDdiMTA5Mzlm
OTdmZDE2MTVmMTAyIgorCitzYXhAfjEuMi4xOgorICB2ZXJzaW9uICIxLjIuMSIKKyAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc2F4Ly0vc2F4LTEuMi4xLnRneiM3Yjhl
NjU2MTkwYjIyOGU4MWE2NmFlYTc0ODQ4MGQ4MjhjZDJkMzdhIgorCitzZW12ZXJAXjUuMy4wLCBz
ZW12ZXJAfjUuMy4wOgorICB2ZXJzaW9uICI1LjMuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vc2VtdmVyLy0vc2VtdmVyLTUuMy4wLnRneiM5YjJjZTVkM2RlMDJk
MTdjNjAxMmFkMzI2YWE2YjRkMGNmNTRmOTRmIgorCitzZW5kQDAuMTQuMToKKyAgdmVyc2lvbiAi
MC4xNC4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zZW5kLy0v
c2VuZC0wLjE0LjEudGd6I2E5NTQ5ODQzMjUzOTJmNTE1MzJhNzc2MDc2MGU0NTk1OThjODlmN2Ei
CisgIGRlcGVuZGVuY2llczoKKyAgICBkZWJ1ZyAifjIuMi4wIgorICAgIGRlcGQgIn4xLjEuMCIK
KyAgICBkZXN0cm95ICJ+MS4wLjQiCisgICAgZW5jb2RldXJsICJ+MS4wLjEiCisgICAgZXNjYXBl
LWh0bWwgIn4xLjAuMyIKKyAgICBldGFnICJ+MS43LjAiCisgICAgZnJlc2ggIjAuMy4wIgorICAg
IGh0dHAtZXJyb3JzICJ+MS41LjAiCisgICAgbWltZSAiMS4zLjQiCisgICAgbXMgIjAuNy4xIgor
ICAgIG9uLWZpbmlzaGVkICJ+Mi4zLjAiCisgICAgcmFuZ2UtcGFyc2VyICJ+MS4yLjAiCisgICAg
c3RhdHVzZXMgIn4xLjMuMCIKKworc2VydmUtc3RhdGljQH4xLjExLjE6CisgIHZlcnNpb24gIjEu
MTEuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc2VydmUtc3Rh
dGljLy0vc2VydmUtc3RhdGljLTEuMTEuMS50Z3ojZDZjY2U3NjkzNTA1ZjczM2M3NTlkZTU3YmVm
YzFhZjc2YzBmMDgwNSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGVuY29kZXVybCAifjEuMC4xIgor
ICAgIGVzY2FwZS1odG1sICJ+MS4wLjMiCisgICAgcGFyc2V1cmwgIn4xLjMuMSIKKyAgICBzZW5k
ICIwLjE0LjEiCisKK3NldC1ibG9ja2luZ0B+Mi4wLjA6CisgIHZlcnNpb24gIjIuMC4wIgorICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zZXQtYmxvY2tpbmcvLS9zZXQt
YmxvY2tpbmctMi4wLjAudGd6IzA0NWY5NzgyZDAxMWFlOWE2ODAzZGRkMzgyYjI0MzkyYjNkODkw
ZjciCisKK3NldC1pbW1lZGlhdGUtc2hpbUBeMS4wLjE6CisgIHZlcnNpb24gIjEuMC4xIgorICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zZXQtaW1tZWRpYXRlLXNoaW0v
LS9zZXQtaW1tZWRpYXRlLXNoaW0tMS4wLjEudGd6IzRiMmIxYjI3ZWI4MDhhOWY4ZGNjNDgxYTU4
ZTVlNTZmNTk5ZjNmNjEiCisKK3NldGltbWVkaWF0ZUBeMS4wLjQ6CisgIHZlcnNpb24gIjEuMC41
IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zZXRpbW1lZGlhdGUv
LS9zZXRpbW1lZGlhdGUtMS4wLjUudGd6IzI5MGNiYjIzMmUzMDY5NDJkN2Q3ZWE5YjgzNzMyYWI3
ODU2ZjgyODUiCisKK3NldHByb3RvdHlwZW9mQDEuMC4yOgorICB2ZXJzaW9uICIxLjAuMiIKKyAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc2V0cHJvdG90eXBlb2YvLS9z
ZXRwcm90b3R5cGVvZi0xLjAuMi50Z3ojODFhNTUyMTQxZWMxMDRiODhlODljZTM4MzEwM2FkNWM2
NjU2NGQwOCIKKworc2hhLmpzQDIuMi42OgorICB2ZXJzaW9uICIyLjIuNiIKKyAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc2hhLmpzLy0vc2hhLmpzLTIuMi42LnRneiMx
N2RkZWRkYzVmNzIyZmI2NjUwMTY1ODg5NTQ2MTk3Nzg2NzMxNWJhIgorCitzaGVsbGpzQF4wLjcu
NCwgc2hlbGxqc0BeMC43LjU6CisgIHZlcnNpb24gIjAuNy41IgorICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zaGVsbGpzLy0vc2hlbGxqcy0wLjcuNS50Z3ojMmVlZjdh
NTBhMjFlMWNjZjM3ZGEwMGRmNzY3ZWM2OWUzMGFkMDY3NSIKKyAgZGVwZW5kZW5jaWVzOgorICAg
IGdsb2IgIl43LjAuMCIKKyAgICBpbnRlcnByZXQgIl4xLjAuMCIKKyAgICByZWNob2lyICJeMC42
LjIiCisKK3NpZ211bmRAXjEuMC4xOgorICB2ZXJzaW9uICIxLjAuMSIKKyAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc2lnbXVuZC8tL3NpZ211bmQtMS4wLjEudGd6IzNm
ZjIxZjE5OGNhZDIxNzVmOWYzYjc4MTg1M2ZkOTRkMGQxOWI1OTAiCisKK3NpZ25hbC1leGl0QF4z
LjAuMDoKKyAgdmVyc2lvbiAiMy4wLjIiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL3NpZ25hbC1leGl0Ly0vc2lnbmFsLWV4aXQtMy4wLjIudGd6I2I1ZmRjMDhmMTI4
N2VhMTE3ODYyOGU0MTVlMjUxMzJiNzM2NDZjNmQiCisKK3NsYXNoQF4xLjAuMDoKKyAgdmVyc2lv
biAiMS4wLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3NsYXNo
Ly0vc2xhc2gtMS4wLjAudGd6I2M0MWYyZjZjMzlmYzE2ZDFjZDE3YWQ0YjVkODk2MTE0YWU0NzBk
NTUiCisKK3NsaWNlLWFuc2lAMC4wLjQ6CisgIHZlcnNpb24gIjAuMC40IgorICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zbGljZS1hbnNpLy0vc2xpY2UtYW5zaS0wLjAu
NC50Z3ojZWRiZjg5MDNmNjZmN2NlMmY4ZWFmZDZjZWVkNjVlMjY0YzgzMWIzNSIKKworc250cEAx
LngueDoKKyAgdmVyc2lvbiAiMS4wLjkiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL3NudHAvLS9zbnRwLTEuMC45LnRneiM2NTQxMTg0Y2M5MGFlZWE2YzZlN2IzNWUy
NjU5MDgyNDQzYzY2MTk4IgorICBkZXBlbmRlbmNpZXM6CisgICAgaG9layAiMi54LngiCisKK3Nv
cnQta2V5c0BeMS4wLjA6CisgIHZlcnNpb24gIjEuMS4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9zb3J0LWtleXMvLS9zb3J0LWtleXMtMS4xLjIudGd6IzQ0MWI2
ZDRkMzQ2Nzk4ZjFiNGU0OWU4OTIwYWRmYmEwZTU0M2Y5YWQiCisgIGRlcGVuZGVuY2llczoKKyAg
ICBpcy1wbGFpbi1vYmogIl4xLjAuMCIKKworc291cmNlLWxpc3QtbWFwQF4wLjEuNCwgc291cmNl
LWxpc3QtbWFwQH4wLjEuMCwgc291cmNlLWxpc3QtbWFwQH4wLjEuNzoKKyAgdmVyc2lvbiAiMC4x
LjciCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3NvdXJjZS1saXN0
LW1hcC8tL3NvdXJjZS1saXN0LW1hcC0wLjEuNy50Z3ojZDRiNWNlMmE0NjUzNWM3MmM3ZTg1Mjdj
NzFhNzdkMjUwNjE4MTcyZSIKKworc291cmNlLW1hcC1zdXBwb3J0QF4wLjQuMjoKKyAgdmVyc2lv
biAiMC40LjYiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3NvdXJj
ZS1tYXAtc3VwcG9ydC8tL3NvdXJjZS1tYXAtc3VwcG9ydC0wLjQuNi50Z3ojMzI1NTJhYTY0YjQ1
ODM5MmE4NWVhYjNiMGI1ZWU2MTUyNzE2N2FlYiIKKyAgZGVwZW5kZW5jaWVzOgorICAgIHNvdXJj
ZS1tYXAgIl4wLjUuMyIKKworc291cmNlLW1hcEBeMC41LjAsIHNvdXJjZS1tYXBAXjAuNS4zLCBz
b3VyY2UtbWFwQF4wLjUuNiwgc291cmNlLW1hcEB+MC41LjEsIHNvdXJjZS1tYXBAfjAuNS4zOgor
ICB2ZXJzaW9uICIwLjUuNiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vc291cmNlLW1hcC8tL3NvdXJjZS1tYXAtMC41LjYudGd6Izc1Y2UzOGY1MmJmMDczM2M1YTdm
MGMxMThkODEzMzRhMmJiNWY0MTIiCisKK3NvdXJjZS1tYXBAfjAuNC4xLCBzb3VyY2UtbWFwQDAu
NC54OgorICB2ZXJzaW9uICIwLjQuNCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vc291cmNlLW1hcC8tL3NvdXJjZS1tYXAtMC40LjQudGd6I2ViYTRmNWRhOWMwZGM5
OTlkZTY4MDMyZDhiNGY3NjE3MzY1MjAzNmIiCisgIGRlcGVuZGVuY2llczoKKyAgICBhbWRlZmlu
ZSAiPj0wLjAuNCIKKworc3ByaW50Zi1qc0B+MS4wLjI6CisgIHZlcnNpb24gIjEuMC4zIgorICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zcHJpbnRmLWpzLy0vc3ByaW50
Zi1qcy0xLjAuMy50Z3ojMDRlNjkyNmY2NjI4OTUzNTRmM2RkMDE1MjAzNjMzYjg1NzI5N2UyYyIK
Kworc3NocGtAXjEuNy4wOgorICB2ZXJzaW9uICIxLjEwLjEiCisgIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3NzaHBrLy0vc3NocGstMS4xMC4xLnRneiMzMGUxYTVkMzI5
MjQ0OTc0YTFhZjYxNTExMzM5ZDU5NWFmNjYzOGIwIgorICBkZXBlbmRlbmNpZXM6CisgICAgYXNu
MSAifjAuMi4zIgorICAgIGFzc2VydC1wbHVzICJeMS4wLjAiCisgICAgZGFzaGRhc2ggIl4xLjEy
LjAiCisgICAgZ2V0cGFzcyAiXjAuMS4xIgorICBvcHRpb25hbERlcGVuZGVuY2llczoKKyAgICBi
Y3J5cHQtcGJrZGYgIl4xLjAuMCIKKyAgICBlY2MtanNibiAifjAuMS4xIgorICAgIGpvZGlkMjU1
MTkgIl4xLjAuMCIKKyAgICBqc2JuICJ+MC4xLjAiCisgICAgdHdlZXRuYWNsICJ+MC4xNC4wIgor
Cisic3RhdHVzZXNAPj0gMS4zLjEgPCAyIiwgc3RhdHVzZXNAfjEuMy4wOgorICB2ZXJzaW9uICIx
LjMuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc3RhdHVzZXMv
LS9zdGF0dXNlcy0xLjMuMS50Z3ojZmFmNTFiOWViNzRhYWVmM2IzYWNmNGFkNWY2MWFiZjI0Y2I3
YjkzZSIKKworc3RyZWFtLWJyb3dzZXJpZnlAXjIuMC4xOgorICB2ZXJzaW9uICIyLjAuMSIKKyAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc3RyZWFtLWJyb3dzZXJpZnkv
LS9zdHJlYW0tYnJvd3NlcmlmeS0yLjAuMS50Z3ojNjYyNjZlZTVmOWJkYjk5NDBhNGU0NTE0Y2Fm
YjQzYmI3MWU1YzlkYiIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGluaGVyaXRzICJ+Mi4wLjEiCisg
ICAgcmVhZGFibGUtc3RyZWFtICJeMi4wLjIiCisKK3N0cmVhbS1odHRwQF4yLjMuMToKKyAgdmVy
c2lvbiAiMi41LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3N0
cmVhbS1odHRwLy0vc3RyZWFtLWh0dHAtMi41LjAudGd6IzU4NWVlZTUxMzIxN2VkOThmZTE5OTgx
N2U3MzEzYjZmNzcyYTY4MDIiCisgIGRlcGVuZGVuY2llczoKKyAgICBidWlsdGluLXN0YXR1cy1j
b2RlcyAiXjIuMC4wIgorICAgIGluaGVyaXRzICJeMi4wLjEiCisgICAgcmVhZGFibGUtc3RyZWFt
ICJeMi4xLjAiCisgICAgdG8tYXJyYXlidWZmZXIgIl4xLjAuMCIKKyAgICB4dGVuZCAiXjQuMC4w
IgorCitzdHJpY3QtdXJpLWVuY29kZUBeMS4wLjA6CisgIHZlcnNpb24gIjEuMS4wIgorICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zdHJpY3QtdXJpLWVuY29kZS8tL3N0
cmljdC11cmktZW5jb2RlLTEuMS4wLnRneiMyNzliMjI1ZGYxZDU4MmIxZjU0ZTY1YWRkZDQzNTJl
MThmYWEwNzEzIgorCitzdHJpbmdfZGVjb2RlckBeMC4xMC4yNSwgc3RyaW5nX2RlY29kZXJAfjAu
MTAueDoKKyAgdmVyc2lvbiAiMC4xMC4zMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vc3RyaW5nX2RlY29kZXIvLS9zdHJpbmdfZGVjb2Rlci0wLjEwLjMxLnRneiM2
MmUyMDNiYzQxNzY2YzZjMjhjOWZjODQzMDFkYWIxYzUzMTBmYTk0IgorCitzdHJpbmctd2lkdGhA
XjEuMC4xOgorICB2ZXJzaW9uICIxLjAuMiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vc3RyaW5nLXdpZHRoLy0vc3RyaW5nLXdpZHRoLTEuMC4yLnRneiMxMThiZGY1
YjhjZGM1MWEyYTdlNzBkMjExZTA3ZTJiMGI5YjEwN2QzIgorICBkZXBlbmRlbmNpZXM6CisgICAg
Y29kZS1wb2ludC1hdCAiXjEuMC4wIgorICAgIGlzLWZ1bGx3aWR0aC1jb2RlLXBvaW50ICJeMS4w
LjAiCisgICAgc3RyaXAtYW5zaSAiXjMuMC4wIgorCitzdHJpbmctd2lkdGhAXjIuMC4wOgorICB2
ZXJzaW9uICIyLjAuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
c3RyaW5nLXdpZHRoLy0vc3RyaW5nLXdpZHRoLTIuMC4wLnRneiM2MzVjNTQzNmNjNzJhNmUwYzM4
N2NlY2EyNzhkNGUyZWVjNTI2ODdlIgorICBkZXBlbmRlbmNpZXM6CisgICAgaXMtZnVsbHdpZHRo
LWNvZGUtcG9pbnQgIl4yLjAuMCIKKyAgICBzdHJpcC1hbnNpICJeMy4wLjAiCisKK3N0cmluZ3N0
cmVhbUB+MC4wLjQ6CisgIHZlcnNpb24gIjAuMC41IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9zdHJpbmdzdHJlYW0vLS9zdHJpbmdzdHJlYW0tMC4wLjUudGd6IzRl
NDg0Y2Q0ZGU1YTBiYmJlZTE4ZTQ2MzA3NzEwYThhODE2MjE4NzgiCisKK3N0cmlwLWFuc2lAXjMu
MC4wLCBzdHJpcC1hbnNpQF4zLjAuMToKKyAgdmVyc2lvbiAiMy4wLjEiCisgIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3N0cmlwLWFuc2kvLS9zdHJpcC1hbnNpLTMuMC4x
LnRneiM2YTM4NWZiODg1M2Q5NTJkNWZmMDVkMGU4YWFmOTQyNzhkYzYzZGNmIgorICBkZXBlbmRl
bmNpZXM6CisgICAgYW5zaS1yZWdleCAiXjIuMC4wIgorCitzdHJpcC1ib21AXjMuMC4wOgorICB2
ZXJzaW9uICIzLjAuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
c3RyaXAtYm9tLy0vc3RyaXAtYm9tLTMuMC4wLnRneiMyMzM0YzE4ZTljNzU5ZjdiZGQ1NmZkZWY3
ZTlhZTNkNTg4ZTY4ZWQzIgorCitzdHJpcC1qc29uLWNvbW1lbnRzQH4xLjAuMSwgc3RyaXAtanNv
bi1jb21tZW50c0B+MS4wLjQ6CisgIHZlcnNpb24gIjEuMC40IgorICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zdHJpcC1qc29uLWNvbW1lbnRzLy0vc3RyaXAtanNvbi1j
b21tZW50cy0xLjAuNC50Z3ojMWUxNWZiY2FjOTdkM2VlOTliZjJkNzNiNGM2NTZiMDgyYmJhZmI5
MSIKKworc3VwcG9ydHMtY29sb3JAXjAuMi4wOgorICB2ZXJzaW9uICIwLjIuMCIKKyAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc3VwcG9ydHMtY29sb3IvLS9zdXBwb3J0
cy1jb2xvci0wLjIuMC50Z3ojZDkyZGUyNjk0ZWIzZjY3MzIzOTczZDdhZTNkOGI1NWI0YzIyMTkw
YSIKKworc3VwcG9ydHMtY29sb3JAXjIuMC4wOgorICB2ZXJzaW9uICIyLjAuMCIKKyAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc3VwcG9ydHMtY29sb3IvLS9zdXBwb3J0
cy1jb2xvci0yLjAuMC50Z3ojNTM1ZDA0NWNlNmI2MzYzZmE0MDExNzA4NDYyOTk5NWU5ZGYzMjRj
NyIKKworc3VwcG9ydHMtY29sb3JAXjMuMS4wLCBzdXBwb3J0cy1jb2xvckBeMy4xLjI6CisgIHZl
cnNpb24gIjMuMS4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9z
dXBwb3J0cy1jb2xvci8tL3N1cHBvcnRzLWNvbG9yLTMuMS4yLnRneiM3MmEyNjI4OTRkOWQ0MDhi
OTU2Y2EwNWZmMzdiMmVkOGE2ZTJhMmQ1IgorICBkZXBlbmRlbmNpZXM6CisgICAgaGFzLWZsYWcg
Il4xLjAuMCIKKworc3Znb0BeMC43LjA6CisgIHZlcnNpb24gIjAuNy4xIgorICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zdmdvLy0vc3Znby0wLjcuMS50Z3ojMjg3MzIw
ZmVkOTcyY2IwOTdlNzJjMmJiMTY4NWY5NmZlMDhmODAzNCIKKyAgZGVwZW5kZW5jaWVzOgorICAg
IGNvYSAifjEuMC4xIgorICAgIGNvbG9ycyAifjEuMS4yIgorICAgIGNzc28gIn4yLjIuMSIKKyAg
ICBqcy15YW1sICJ+My42LjEiCisgICAgbWtkaXJwICJ+MC41LjEiCisgICAgc2F4ICJ+MS4yLjEi
CisgICAgd2hldC5leHRlbmQgIn4wLjkuOSIKKwordGFibGVAXjMuNy44OgorICB2ZXJzaW9uICIz
LjguMyIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vdGFibGUvLS90
YWJsZS0zLjguMy50Z3ojMmJiYzU0MmYwZmRhOTg2MWE3NTVkMzk0N2ZlZmQ4YjNmNTEzODU1ZiIK
KyAgZGVwZW5kZW5jaWVzOgorICAgIGFqdiAiXjQuNy4wIgorICAgIGFqdi1rZXl3b3JkcyAiXjEu
MC4wIgorICAgIGNoYWxrICJeMS4xLjEiCisgICAgbG9kYXNoICJeNC4wLjAiCisgICAgc2xpY2Ut
YW5zaSAiMC4wLjQiCisgICAgc3RyaW5nLXdpZHRoICJeMi4wLjAiCisKK3RhcGFibGVAXjAuMS44
LCB0YXBhYmxlQH4wLjEuODoKKyAgdmVyc2lvbiAiMC4xLjEwIgorICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS90YXBhYmxlLy0vdGFwYWJsZS0wLjEuMTAudGd6IzI5YzM1
NzA3YzJiNzBlNTBkMDc0ODJiNWQyMDJlOGVkNDQ2ZGFmZDQiCisKK3Rhci1wYWNrQH4zLjMuMDoK
KyAgdmVyc2lvbiAiMy4zLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL3Rhci1wYWNrLy0vdGFyLXBhY2stMy4zLjAudGd6IzMwOTMxODE2NDE4ZjU1YWZjNGQyMTc3
NWFmZGQ2NzIwY2VlNDVkYWUiCisgIGRlcGVuZGVuY2llczoKKyAgICBkZWJ1ZyAifjIuMi4wIgor
ICAgIGZzdHJlYW0gIn4xLjAuMTAiCisgICAgZnN0cmVhbS1pZ25vcmUgIn4xLjAuNSIKKyAgICBv
bmNlICJ+MS4zLjMiCisgICAgcmVhZGFibGUtc3RyZWFtICJ+Mi4xLjQiCisgICAgcmltcmFmICJ+
Mi41LjEiCisgICAgdGFyICJ+Mi4yLjEiCisgICAgdWlkLW51bWJlciAifjAuMC42IgorCit0YXJA
fjIuMi4xOgorICB2ZXJzaW9uICIyLjIuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vdGFyLy0vdGFyLTIuMi4xLnRneiM4ZTRkMmEyNTZjMGUyMTg1YzZiMThhZDY5
NGFlYzk2OGI4M2NiMWQxIgorICBkZXBlbmRlbmNpZXM6CisgICAgYmxvY2stc3RyZWFtICIqIgor
ICAgIGZzdHJlYW0gIl4xLjAuMiIKKyAgICBpbmhlcml0cyAiMiIKKwordGV4dC10YWJsZUBeMC4y
LjAsIHRleHQtdGFibGVAfjAuMi4wOgorICB2ZXJzaW9uICIwLjIuMCIKKyAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vdGV4dC10YWJsZS8tL3RleHQtdGFibGUtMC4yLjAu
dGd6IzdmNWVlODIzYWU4MDUyMDdjMDBhZjJkZjRhODRlYzNmY2ZhNTcwYjQiCisKK3Rocm91Z2hA
XjIuMy42OgorICB2ZXJzaW9uICIyLjMuOCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vdGhyb3VnaC8tL3Rocm91Z2gtMi4zLjgudGd6IzBkZDRjOWZmYWFiYzM1Nzk2
MGIxYjcyNDExNWQ3ZTBlODZhMmUxZjUiCisKK3RpbWVycy1icm93c2VyaWZ5QF4yLjAuMjoKKyAg
dmVyc2lvbiAiMi4wLjIiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L3RpbWVycy1icm93c2VyaWZ5Ly0vdGltZXJzLWJyb3dzZXJpZnktMi4wLjIudGd6I2FiNDg4M2Nm
NTk3ZGNkNTBhZjIxMTM0OWEwMGZiY2E1NmFjODZiODYiCisgIGRlcGVuZGVuY2llczoKKyAgICBz
ZXRpbW1lZGlhdGUgIl4xLjAuNCIKKwordG8tYXJyYXlidWZmZXJAXjEuMC4wOgorICB2ZXJzaW9u
ICIxLjAuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vdG8tYXJy
YXlidWZmZXIvLS90by1hcnJheWJ1ZmZlci0xLjAuMS50Z3ojN2QyMjliMWZjYzYzN2U0NjZjYTA4
MTE4MDgzNmE3YWFiZmY4M2Y0MyIKKwordG8tZmFzdC1wcm9wZXJ0aWVzQF4xLjAuMToKKyAgdmVy
c2lvbiAiMS4wLjIiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Rv
LWZhc3QtcHJvcGVydGllcy8tL3RvLWZhc3QtcHJvcGVydGllcy0xLjAuMi50Z3ojZjNmNWMwYzNi
YTcyOTlhN2VmOTk0MjdlNDQ2MzMyNTdhZGU0MzMyMCIKKwordG9wb3NvcnRAXjEuMC4wOgorICB2
ZXJzaW9uICIxLjAuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
dG9wb3NvcnQvLS90b3Bvc29ydC0xLjAuMC50Z3ojYjY2Y2YzODVhMWE4YThlNjhlNDViODI1OWU3
ZjU1ODc1ZThiMDZlZiIKKwordG91Z2gtY29va2llQH4yLjMuMDoKKyAgdmVyc2lvbiAiMi4zLjIi
CisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3RvdWdoLWNvb2tpZS8t
L3RvdWdoLWNvb2tpZS0yLjMuMi50Z3ojZjA4MWY3NmU0Yzg1NzIwZTZjMzdhNWZhY2VkNzM3MTUw
ZDg0MDcyYSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIHB1bnljb2RlICJeMS40LjEiCisKK3RyeWl0
QF4xLjAuMToKKyAgdmVyc2lvbiAiMS4wLjMiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL3RyeWl0Ly0vdHJ5aXQtMS4wLjMudGd6IzM5M2JlNzMwYTk0NDZmZDFlYWQ2
ZGE1OWEwMTQzMDhmMzZjMjg5Y2IiCisKK3R0eS1icm93c2VyaWZ5QDAuMC4wOgorICB2ZXJzaW9u
ICIwLjAuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vdHR5LWJy
b3dzZXJpZnkvLS90dHktYnJvd3NlcmlmeS0wLjAuMC50Z3ojYTE1N2JhNDAyZGEyNGU5YmY5NTdm
OWFhNjlkNTI0ZWVkNDI5MDFhNiIKKwordHVubmVsLWFnZW50QH4wLjQuMToKKyAgdmVyc2lvbiAi
MC40LjMiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3R1bm5lbC1h
Z2VudC8tL3R1bm5lbC1hZ2VudC0wLjQuMy50Z3ojNjM3M2RiNzY5MDlmZTU3MGUwOGQ3MzU4MzM2
NWVkODI4YTc0ZWVlYiIKKwordHdlZXRuYWNsQF4wLjE0LjMsIHR3ZWV0bmFjbEB+MC4xNC4wOgor
ICB2ZXJzaW9uICIwLjE0LjQiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL3R3ZWV0bmFjbC8tL3R3ZWV0bmFjbC0wLjE0LjQudGd6IzhjOWRiZmI1Mjc5NTY4NmYxNjZj
ZDIwMjM3OTRiY2YxMDNkMTNjMmIiCisKK3R5cGUtY2hlY2tAfjAuMy4yOgorICB2ZXJzaW9uICIw
LjMuMiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vdHlwZS1jaGVj
ay8tL3R5cGUtY2hlY2stMC4zLjIudGd6IzU4ODRjYWI1MTJjZjFkMzU1ZTNmYjc4NGYzMDgwNGIy
YjUyMGRiNzIiCisgIGRlcGVuZGVuY2llczoKKyAgICBwcmVsdWRlLWxzICJ+MS4xLjIiCisKK3R5
cGUtaXNAfjEuNi4xMzoKKyAgdmVyc2lvbiAiMS42LjE0IgorICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS90eXBlLWlzLy0vdHlwZS1pcy0xLjYuMTQudGd6I2UyMTk2Mzlj
MTdkZWQxY2EwNzg5MDkyZGQ1NGEwMzgyNmI4MTdjYjIiCisgIGRlcGVuZGVuY2llczoKKyAgICBt
ZWRpYS10eXBlciAiMC4zLjAiCisgICAgbWltZS10eXBlcyAifjIuMS4xMyIKKwordHlwZWRhcnJh
eUB+MC4wLjU6CisgIHZlcnNpb24gIjAuMC42IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS90eXBlZGFycmF5Ly0vdHlwZWRhcnJheS0wLjAuNi50Z3ojODY3YWM3NGUz
ODY0MTg3YjFkM2Q0N2Q5OTZhNzhlYzVjODgzMDc3NyIKKwordWdsaWZ5LWpzQH4yLjcuMywgdWds
aWZ5LWpzQDIuNy54OgorICB2ZXJzaW9uICIyLjcuNSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vdWdsaWZ5LWpzLy0vdWdsaWZ5LWpzLTIuNy41LnRneiM0NjEyYzBj
N2JhYWVlMmJhN2M0ODdkZTQ5MDRhZTEyMjA3OWYyY2E4IgorICBkZXBlbmRlbmNpZXM6CisgICAg
YXN5bmMgIn4wLjIuNiIKKyAgICBzb3VyY2UtbWFwICJ+MC41LjEiCisgICAgdWdsaWZ5LXRvLWJy
b3dzZXJpZnkgIn4xLjAuMCIKKyAgICB5YXJncyAifjMuMTAuMCIKKwordWdsaWZ5LXRvLWJyb3dz
ZXJpZnlAfjEuMC4wOgorICB2ZXJzaW9uICIxLjAuMiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vdWdsaWZ5LXRvLWJyb3dzZXJpZnkvLS91Z2xpZnktdG8tYnJvd3Nl
cmlmeS0xLjAuMi50Z3ojNmUwOTI0ZDZiZGE2YjVhZmUzNDllMzlhNmQ2MzI4NTBhMGY4ODJiNyIK
KwordWlkLW51bWJlckB+MC4wLjY6CisgIHZlcnNpb24gIjAuMC42IgorICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS91aWQtbnVtYmVyLy0vdWlkLW51bWJlci0wLjAuNi50
Z3ojMGVhMTBlODAzNWU4ZWI1YjhlNDQ0OWYwNmRhMWM3MzA2NjNiYWE4MSIKKwordW5pcUBeMS4w
LjE6CisgIHZlcnNpb24gIjEuMC4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS91bmlxLy0vdW5pcS0xLjAuMS50Z3ojYjMxYzVhZTgyNTQ4NDRhM2E4MjgxNTQxY2Uy
YjA0Yjg2NWE3MzRmZiIKKwordW5pcWlkQF40LjAuMDoKKyAgdmVyc2lvbiAiNC4xLjAiCisgIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3VuaXFpZC8tL3VuaXFpZC00LjEu
MC50Z3ojMzNkOTY3OWY2NTAyMmY0ODk4OGEwM2ZkMjRlN2RjYWY4ZjEwOWVjYSIKKyAgZGVwZW5k
ZW5jaWVzOgorICAgIG1hY2FkZHJlc3MgIl4wLjIuOCIKKwordW5pcXNAXjIuMC4wOgorICB2ZXJz
aW9uICIyLjAuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vdW5p
cXMvLS91bmlxcy0yLjAuMC50Z3ojZmZlZGU0YjM2YjI1MjkwNjk2ZTZlMTY1ZDRhNTllZGI5OThl
NmIwMiIKKwordW5waXBlQH4xLjAuMDoKKyAgdmVyc2lvbiAiMS4wLjAiCisgIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3VucGlwZS8tL3VucGlwZS0xLjAuMC50Z3ojYjJi
ZjRlZTg1MTRhYWU2MTY1YjQ4MTc4MjlkMjFiMmVmNDk5MDRlYyIKKwordXBwZXItY2FzZUBeMS4x
LjE6CisgIHZlcnNpb24gIjEuMS4zIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS91cHBlci1jYXNlLy0vdXBwZXItY2FzZS0xLjEuMy50Z3ojZjZiNDUwMWMyZWM0Y2Rk
MjZiYTc4YmU3MjIyOTYxZGU3NzYyMTU5OCIKKwordXJsLWxvYWRlckBeMC41Ljc6CisgIHZlcnNp
b24gIjAuNS43IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS91cmwt
bG9hZGVyLy0vdXJsLWxvYWRlci0wLjUuNy50Z3ojNjdlODc3OTc1OWY4MDAwZGE3NDk5NDkwNjY4
MGM5NDNhOWIwOTI1ZCIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGxvYWRlci11dGlscyAiMC4yLngi
CisgICAgbWltZSAiMS4yLngiCisKK3VybEBeMC4xMS4wOgorICB2ZXJzaW9uICIwLjExLjAiCisg
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3VybC8tL3VybC0wLjExLjAu
dGd6IzM4MzhlOTdjZmM2MDUyMWViNzNjNTI1YThlNTViZmRkOWUyZTI4ZjEiCisgIGRlcGVuZGVu
Y2llczoKKyAgICBwdW55Y29kZSAiMS4zLjIiCisgICAgcXVlcnlzdHJpbmcgIjAuMi4wIgorCit1
c2VyLWhvbWVAXjIuMC4wOgorICB2ZXJzaW9uICIyLjAuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vdXNlci1ob21lLy0vdXNlci1ob21lLTIuMC4wLnRneiM5Yzcw
YmZkODE2OWJjMWRjYmY0ODYwNGUwZjA0YjhiNDljZGU5ZTlmIgorICBkZXBlbmRlbmNpZXM6Cisg
ICAgb3MtaG9tZWRpciAiXjEuMC4wIgorCit1dGlsLWRlcHJlY2F0ZUB+MS4wLjE6CisgIHZlcnNp
b24gIjEuMC4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS91dGls
LWRlcHJlY2F0ZS8tL3V0aWwtZGVwcmVjYXRlLTEuMC4yLnRneiM0NTBkNGRjOWZhNzBkZTczMjc2
MmZiZDJkNGEyODk4MTQxOWEwY2NmIgorCit1dGlsQF4wLjEwLjMsIHV0aWxAMC4xMC4zOgorICB2
ZXJzaW9uICIwLjEwLjMiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L3V0aWwvLS91dGlsLTAuMTAuMy50Z3ojN2FmYjFhZmU1MDgwNTI0NjQ4OWUzZGI3ZmUwZWQzNzkz
MzZhYzBmOSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGluaGVyaXRzICIyLjAuMSIKKwordXRpbGFA
fjAuMzoKKyAgdmVyc2lvbiAiMC4zLjMiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL3V0aWxhLy0vdXRpbGEtMC4zLjMudGd6I2Q3ZThlN2Q3ZTMwOTEwNzA5MmIwNWY4
ZDk2ODg4MjRkNjMzYTQyMjYiCisKK3V0aWxhQH4wLjQ6CisgIHZlcnNpb24gIjAuNC4wIgorICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS91dGlsYS8tL3V0aWxhLTAuNC4w
LnRneiM4YTE2YTA1ZDQ0NTY1N2EzYWVhNWVlY2M1YjEyYTRmYTUzNzk3NzJjIgorCit1dGlscy1t
ZXJnZUAxLjAuMDoKKyAgdmVyc2lvbiAiMS4wLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL3V0aWxzLW1lcmdlLy0vdXRpbHMtbWVyZ2UtMS4wLjAudGd6IzAyOTRm
YjkyMmJiOTM3NTE1MzU0MWM0ZjcwOTYyMzFmMjg3YzhhZjgiCisKK3V1aWRAXjMuMC4wOgorICB2
ZXJzaW9uICIzLjAuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
dXVpZC8tL3V1aWQtMy4wLjEudGd6IzY1NDRiYmEyZGZkYThjMWNmMTdlNjI5YTNhMzA1ZTJiYjFm
ZWU2YzEiCisKK3ZhcnlAfjEuMS4wOgorICB2ZXJzaW9uICIxLjEuMCIKKyAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vdmFyeS8tL3ZhcnktMS4xLjAudGd6I2UxZTVhZmZi
YmQxNmFlNzY4ZGQyNjc0Mzk0YjlhZDMwMjI2NTMxNDAiCisKK3ZlbmRvcnNAXjEuMC4wOgorICB2
ZXJzaW9uICIxLjAuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
dmVuZG9ycy8tL3ZlbmRvcnMtMS4wLjEudGd6IzM3YWQ3M2M4ZWU0MTdmYjNkNTgwZTc4NTMxMjMw
N2QyNzQ4NDdmMjIiCisKK3ZlcnJvckAxLjMuNjoKKyAgdmVyc2lvbiAiMS4zLjYiCisgIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3ZlcnJvci8tL3ZlcnJvci0xLjMuNi50
Z3ojY2ZmNWRmMTI5NDZkMjk3ZDJiYWFlZmFhMjY4OWUyNWJlMDFjMDA1YyIKKyAgZGVwZW5kZW5j
aWVzOgorICAgIGV4dHNwcmludGYgIjEuMC4yIgorCit2bS1icm93c2VyaWZ5QDAuMC40OgorICB2
ZXJzaW9uICIwLjAuNCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
dm0tYnJvd3NlcmlmeS8tL3ZtLWJyb3dzZXJpZnktMC4wLjQudGd6IzVkN2VhNDViYmVmOWU0YTZm
ZjY1Zjk1NDM4ZTBhODdjMzU3ZDVhNzMiCisgIGRlcGVuZGVuY2llczoKKyAgICBpbmRleG9mICIw
LjAuMSIKKwordnVlLWhvdC1yZWxvYWQtYXBpQF4yLjAuMToKKyAgdmVyc2lvbiAiMi4wLjYiCisg
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Z1ZS1ob3QtcmVsb2FkLWFw
aS8tL3Z1ZS1ob3QtcmVsb2FkLWFwaS0yLjAuNi50Z3ojODE3ZDRiZmIzMGY1NTQyOGFhMTAxMmQw
Mjk0OTllMDdmMzE0N2QyMSIKKwordnVlLWxvYWRlckBeMTAuMC4wOgorICB2ZXJzaW9uICIxMC4w
LjIiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Z1ZS1sb2FkZXIv
LS92dWUtbG9hZGVyLTEwLjAuMi50Z3ojNmZlN2JjZWZiMzJjNTQzOWJkMDMzODQ2NGFhMjI2NzNh
ZDYyMjk5YyIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGNvbnNvbGlkYXRlICJeMC4xNC4wIgorICAg
IGhhc2gtc3VtICJeMS4wLjIiCisgICAganMtYmVhdXRpZnkgIl4xLjYuMyIKKyAgICBsb2FkZXIt
dXRpbHMgIl4wLjIuMTAiCisgICAgbHJ1LWNhY2hlICJeNC4wLjEiCisgICAgb2JqZWN0LWFzc2ln
biAiXjQuMC4wIgorICAgIHBvc3Rjc3MgIl41LjAuMTAiCisgICAgcG9zdGNzcy1zZWxlY3Rvci1w
YXJzZXIgIl4yLjAuMCIKKyAgICBzb3VyY2UtbWFwICJeMC41LjYiCisgICAgdnVlLWhvdC1yZWxv
YWQtYXBpICJeMi4wLjEiCisgICAgdnVlLXN0eWxlLWxvYWRlciAiXjEuMC4wIgorICAgIHZ1ZS10
ZW1wbGF0ZS1lczIwMTUtY29tcGlsZXIgIl4xLjIuMiIKKwordnVlLXN0eWxlLWxvYWRlckBeMS4w
LjA6CisgIHZlcnNpb24gIjEuMC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS92dWUtc3R5bGUtbG9hZGVyLy0vdnVlLXN0eWxlLWxvYWRlci0xLjAuMC50Z3ojYWJl
YjdiZDBmNDYzMTMwODM3NDEyNDRkMzA3OWQ0ZjE0NDQ5ZTA0OSIKKyAgZGVwZW5kZW5jaWVzOgor
ICAgIGxvYWRlci11dGlscyAiXjAuMi43IgorCit2dWUtdGVtcGxhdGUtY29tcGlsZXJAXjIuMS4w
OgorICB2ZXJzaW9uICIyLjEuNCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vdnVlLXRlbXBsYXRlLWNvbXBpbGVyLy0vdnVlLXRlbXBsYXRlLWNvbXBpbGVyLTIuMS40
LnRneiNjZTk5Y2I5YzJmNTg0MjA2MmQzYjc0NGM3MTYyMjRiNjEzZjE5OGQ0IgorICBkZXBlbmRl
bmNpZXM6CisgICAgZGUtaW5kZW50ICJeMS4wLjIiCisgICAgaGUgIl4xLjEuMCIKKwordnVlLXRl
bXBsYXRlLWVzMjAxNS1jb21waWxlckBeMS4yLjI6CisgIHZlcnNpb24gIjEuMy4yIgorICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS92dWUtdGVtcGxhdGUtZXMyMDE1LWNv
bXBpbGVyLy0vdnVlLXRlbXBsYXRlLWVzMjAxNS1jb21waWxlci0xLjMuMi50Z3ojYzA0MDgwMjI3
NTE0OTI5YmE1NDBkZTdhN2E5M2FjNDMwNDY3YmRjMCIKKwordnVlQF4yLjEuMDoKKyAgdmVyc2lv
biAiMi4xLjQiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Z1ZS8t
L3Z1ZS0yLjEuNC50Z3ojZDQ5MGY4ZmNmNjk2ODQ3ZDhjZjdmOGViOTE2OGU5YTVkZDgwNmJmYyIK
Kword2F0Y2hwYWNrQF4wLjIuMToKKyAgdmVyc2lvbiAiMC4yLjkiCisgIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3dhdGNocGFjay8tL3dhdGNocGFjay0wLjIuOS50Z3oj
NjJlYWE0YWI1ZTViYTM1ZmRmYzAxODI3NTYyNmUzYzBmNWUzZmIwYiIKKyAgZGVwZW5kZW5jaWVz
OgorICAgIGFzeW5jICJeMC45LjAiCisgICAgY2hva2lkYXIgIl4xLjAuMCIKKyAgICBncmFjZWZ1
bC1mcyAiXjQuMS4yIgorCit3ZWJwYWNrLWNvcmVAfjAuNi45OgorICB2ZXJzaW9uICIwLjYuOSIK
KyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vd2VicGFjay1jb3JlLy0v
d2VicGFjay1jb3JlLTAuNi45LnRneiNmYzU3MTU4OGM4NTU4ZGE3N2JlOWVmYjZkZWJkYzVhM2Ix
NzJiZGMyIgorICBkZXBlbmRlbmNpZXM6CisgICAgc291cmNlLWxpc3QtbWFwICJ+MC4xLjciCisg
ICAgc291cmNlLW1hcCAifjAuNC4xIgorCit3ZWJwYWNrLWRldi1taWRkbGV3YXJlQF4xLjguMzoK
KyAgdmVyc2lvbiAiMS44LjQiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL3dlYnBhY2stZGV2LW1pZGRsZXdhcmUvLS93ZWJwYWNrLWRldi1taWRkbGV3YXJlLTEuOC40
LnRneiNlODc2NWM5MTIyODg3Y2U5ZTNhYmQ0Y2M5YzNlYjMxYjYxZTA5NDhkIgorICBkZXBlbmRl
bmNpZXM6CisgICAgbWVtb3J5LWZzICJ+MC4zLjAiCisgICAgbWltZSAiXjEuMy40IgorICAgIHBh
dGgtaXMtYWJzb2x1dGUgIl4xLjAuMCIKKyAgICByYW5nZS1wYXJzZXIgIl4xLjAuMyIKKword2Vi
cGFjay1ob3QtbWlkZGxld2FyZUBeMi4xMi4yOgorICB2ZXJzaW9uICIyLjEzLjIiCisgIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3dlYnBhY2staG90LW1pZGRsZXdhcmUv
LS93ZWJwYWNrLWhvdC1taWRkbGV3YXJlLTIuMTMuMi50Z3ojNjUwMGIxNWU2ZDRmMWE5NTkwZjhk
ZjcwODE4M2Y0ZDJhYzJjM2U5ZSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGFuc2ktaHRtbCAiMC4w
LjYiCisgICAgaHRtbC1lbnRpdGllcyAiXjEuMi4wIgorICAgIHF1ZXJ5c3RyaW5nICJeMC4yLjAi
CisgICAgc3RyaXAtYW5zaSAiXjMuMC4wIgorCit3ZWJwYWNrLW1lcmdlQF4wLjE0LjE6CisgIHZl
cnNpb24gIjAuMTQuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
d2VicGFjay1tZXJnZS8tL3dlYnBhY2stbWVyZ2UtMC4xNC4xLnRneiNkNmJmZTZkOTM2MGEwMjRl
MWU3ZjhlNjM4M2FlNzM1ZjE3MzdjZDIzIgorICBkZXBlbmRlbmNpZXM6CisgICAgbG9kYXNoLmZp
bmQgIl4zLjIuMSIKKyAgICBsb2Rhc2guaXNlcXVhbCAiXjQuMi4wIgorICAgIGxvZGFzaC5pc3Bs
YWlub2JqZWN0ICJeMy4yLjAiCisgICAgbG9kYXNoLm1lcmdlICJeMy4zLjIiCisKK3dlYnBhY2st
c291cmNlc0BeMC4xLjA6CisgIHZlcnNpb24gIjAuMS4zIgorICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS93ZWJwYWNrLXNvdXJjZXMvLS93ZWJwYWNrLXNvdXJjZXMtMC4x
LjMudGd6IzE1Y2UyZmI3OWQwYTFkYTcyNzQ0NGJhN2M3NTdiZjE2NDI5NGYzMTAiCisgIGRlcGVu
ZGVuY2llczoKKyAgICBzb3VyY2UtbGlzdC1tYXAgIn4wLjEuMCIKKyAgICBzb3VyY2UtbWFwICJ+
MC41LjMiCisKK3dlYnBhY2tAXjEuMTMuMjoKKyAgdmVyc2lvbiAiMS4xNC4wIgorICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS93ZWJwYWNrLy0vd2VicGFjay0xLjE0LjAu
dGd6IzU0ZjFmZmI5MjA1MWEzMjhhNWIyMDU3ZDZhZTMzYzI4OTQ2MmM4MjMiCisgIGRlcGVuZGVu
Y2llczoKKyAgICBhY29ybiAiXjMuMC4wIgorICAgIGFzeW5jICJeMS4zLjAiCisgICAgY2xvbmUg
Il4xLjAuMiIKKyAgICBlbmhhbmNlZC1yZXNvbHZlICJ+MC45LjAiCisgICAgaW50ZXJwcmV0ICJe
MC42LjQiCisgICAgbG9hZGVyLXV0aWxzICJeMC4yLjExIgorICAgIG1lbW9yeS1mcyAifjAuMy4w
IgorICAgIG1rZGlycCAifjAuNS4wIgorICAgIG5vZGUtbGlicy1icm93c2VyICJeMC43LjAiCisg
ICAgb3B0aW1pc3QgIn4wLjYuMCIKKyAgICBzdXBwb3J0cy1jb2xvciAiXjMuMS4wIgorICAgIHRh
cGFibGUgIn4wLjEuOCIKKyAgICB1Z2xpZnktanMgIn4yLjcuMyIKKyAgICB3YXRjaHBhY2sgIl4w
LjIuMSIKKyAgICB3ZWJwYWNrLWNvcmUgIn4wLjYuOSIKKword2hldC5leHRlbmRAfjAuOS45Ogor
ICB2ZXJzaW9uICIwLjkuOSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vd2hldC5leHRlbmQvLS93aGV0LmV4dGVuZC0wLjkuOS50Z3ojZjg3N2Q1YmY2NDhjOTdlNWFh
NTQyZmFkYzE2ZDZhMjU5YjljMTFhMSIKKword2lkZS1hbGlnbkBeMS4xLjA6CisgIHZlcnNpb24g
IjEuMS4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS93aWRlLWFs
aWduLy0vd2lkZS1hbGlnbi0xLjEuMC50Z3ojNDBlZGRlODAyYTcxZmVhMWYwNzBkYTNlNjJkY2Rh
MmU3YWRkOTZhZCIKKyAgZGVwZW5kZW5jaWVzOgorICAgIHN0cmluZy13aWR0aCAiXjEuMC4xIgor
Cit3aW5kb3ctc2l6ZUAwLjEuMDoKKyAgdmVyc2lvbiAiMC4xLjAiCisgIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3dpbmRvdy1zaXplLy0vd2luZG93LXNpemUtMC4xLjAu
dGd6IzU0MzhjZDJlYTkzYjIwMmVmYTNhMTlmZTg4ODdhZWU3Yzk0ZjljOWQiCisKK3dvcmR3cmFw
QH4wLjAuMjoKKyAgdmVyc2lvbiAiMC4wLjMiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL3dvcmR3cmFwLy0vd29yZHdyYXAtMC4wLjMudGd6I2EzZDVkYTZjZDVjMGJj
MDAwOGQzNzIzNGJiYWYxYmVkNjMwNTkxMDciCisKK3dvcmR3cmFwQH4xLjAuMDoKKyAgdmVyc2lv
biAiMS4wLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3dvcmR3
cmFwLy0vd29yZHdyYXAtMS4wLjAudGd6IzI3NTg0ODEwODkxNDU2YTQxNzFjOGQwMjI2NDQxYWRl
OTBjYmNhZWIiCisKK3dvcmR3cmFwQDAuMC4yOgorICB2ZXJzaW9uICIwLjAuMiIKKyAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vd29yZHdyYXAvLS93b3Jkd3JhcC0wLjAu
Mi50Z3ojYjc5NjY5YmI0MmVjYjQwOWY4M2Q1ODNjYWQ1MmNhMTdlYWExNjQzZiIKKword3JhcHB5
QDE6CisgIHZlcnNpb24gIjEuMC4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS93cmFwcHkvLS93cmFwcHktMS4wLjIudGd6I2I1MjQzZDhmM2VjMWFhMzVmMTM2NDYw
NWJjMGQxMDM2ZTMwYWI2OWYiCisKK3dyaXRlQF4wLjIuMToKKyAgdmVyc2lvbiAiMC4yLjEiCisg
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3dyaXRlLy0vd3JpdGUtMC4y
LjEudGd6IzVmYzAzODI4ZTI2NGNlYTNmZTkxNDU1NDc2ZjdhM2M1NjZjYjA3NTciCisgIGRlcGVu
ZGVuY2llczoKKyAgICBta2RpcnAgIl4wLjUuMSIKKworeG1sLWNoYXItY2xhc3Nlc0BeMS4wLjA6
CisgIHZlcnNpb24gIjEuMC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS94bWwtY2hhci1jbGFzc2VzLy0veG1sLWNoYXItY2xhc3Nlcy0xLjAuMC50Z3ojNjQ2NTc4
NDhhMjBmZmM1ZGY1ODNhNDJhZDhhMjc3YjQ1MTJiYmM0ZCIKKworeHRlbmRAXjQuMC4wOgorICB2
ZXJzaW9uICI0LjAuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
eHRlbmQvLS94dGVuZC00LjAuMS50Z3ojYTVjNmQ1MzJiZTY1NmUyM2RiODIwZWZiOTQzYTFmMDQ5
OThkNjNhZiIKKworeWFsbGlzdEBeMi4wLjA6CisgIHZlcnNpb24gIjIuMC4wIgorICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS95YWxsaXN0Ly0veWFsbGlzdC0yLjAuMC50
Z3ojMzA2YzU0MzgzNWYwOWVlMWE0Y2IyM2I3YmNlOWFiMzQxYzkxY2RkNCIKKworeWFyZ3NAfjMu
MTAuMDoKKyAgdmVyc2lvbiAiMy4xMC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS95YXJncy8tL3lhcmdzLTMuMTAuMC50Z3ojZjdlZTdiZDg1N2RkN2MxZDJkMzhj
MGU3NGVmYmQ2ODFkMTQzMWZkMSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIGNhbWVsY2FzZSAiXjEu
MC4yIgorICAgIGNsaXVpICJeMi4xLjAiCisgICAgZGVjYW1lbGl6ZSAiXjEuMC4wIgorICAgIHdp
bmRvdy1zaXplICIwLjEuMCIKKwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9kZXBlbmRlbmN5LWV4YW1wbGVzL2ZsaWdodC8uZ2l0aWdu
b3JlIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9kZXBl
bmRlbmN5LWV4YW1wbGVzL2ZsaWdodC8uZ2l0aWdub3JlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBjMjY1OGQ3ZDFiMzE4NDhjM2I3MTk2MDU0M2NiMDM2OGU1NmNkNGM3Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZGVwZW5kZW5jeS1leGFtcGxlcy9mbGlnaHQv
LmdpdGlnbm9yZQorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLW5vZGVfbW9kdWxlcy8KZGlm
ZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
ZGVwZW5kZW5jeS1leGFtcGxlcy9mbGlnaHQvYXBwL2pzL2FwcC5qcyBiL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZGVwZW5kZW5jeS1leGFtcGxlcy9mbGln
aHQvYXBwL2pzL2FwcC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzE0YTFlM2E0
MmYzZDZjZWZlOTg4ZTU1YWI0NDMxYjk1MDgwMmQyZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2RlcGVuZGVuY3ktZXhhbXBsZXMvZmxpZ2h0L2FwcC9qcy9hcHAuanMKKysr
IC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi0vKmdsb2JhbCBkZWZpbmUgKi8KLSd1c2Ugc3Ry
aWN0JzsKLQotZGVmaW5lKFsKLSAgICAnLi9kYXRhL3RvZG9zJywKLSAgICAnLi9kYXRhL3N0YXRz
JywKLSAgICAnLi91aS9uZXdfaXRlbScsCi0gICAgJy4vdWkvdG9kb19saXN0JywKLSAgICAnLi91
aS9zdGF0cycsCi0gICAgJy4vdWkvbWFpbl9zZWxlY3RvcicsCi0gICAgJy4vdWkvdG9nZ2xlX2Fs
bCcKLV0sIGZ1bmN0aW9uIChUb2Rvc0RhdGEsIFN0YXRzRGF0YSwgTmV3SXRlbVVJLCBUb2RvTGlz
dFVJLCBTdGF0c1VJLCBNYWluU2VsZWN0b3JVSSwgVG9nZ2xlQWxsVUkpIHsKLSAgICB2YXIgaW5p
dGlhbGl6ZSA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgU3RhdHNEYXRhLmF0dGFjaFRvKGRvY3Vt
ZW50KTsKLSAgICAgICAgVG9kb3NEYXRhLmF0dGFjaFRvKGRvY3VtZW50KTsKLSAgICAgICAgTmV3
SXRlbVVJLmF0dGFjaFRvKCcjbmV3LXRvZG8nKTsKLSAgICAgICAgTWFpblNlbGVjdG9yVUkuYXR0
YWNoVG8oJyNtYWluJyk7Ci0gICAgICAgIFN0YXRzVUkuYXR0YWNoVG8oJyNmb290ZXInKTsKLSAg
ICAgICAgVG9nZ2xlQWxsVUkuYXR0YWNoVG8oJyN0b2dnbGUtYWxsJyk7Ci0gICAgICAgIFRvZG9M
aXN0VUkuYXR0YWNoVG8oJyN0b2RvLWxpc3QnKTsKLQotICAgICAgICB2YXIgZHVtbXlOb2RlVG9O
b3RpZnlBcHBJc1JlYWR5ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Ci0gICAgICAg
IGR1bW15Tm9kZVRvTm90aWZ5QXBwSXNSZWFkeS5pZCA9ICdhcHBJc1JlYWR5JzsKLSAgICAgICAg
ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkdW1teU5vZGVUb05vdGlmeUFwcElzUmVhZHkpOwot
ICAgIH07Ci0KLSAgICByZXR1cm4gewotICAgICAgICBpbml0aWFsaXplOiBpbml0aWFsaXplCi0g
ICAgfTsKLX0pOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9kZXBlbmRlbmN5LWV4YW1wbGVzL2ZsaWdodC9hcHAvanMvZGF0YS9zdGF0
cy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZGVw
ZW5kZW5jeS1leGFtcGxlcy9mbGlnaHQvYXBwL2pzL2RhdGEvc3RhdHMuanMKaW5kZXggMTY5N2Mw
MGMyYWI5Y2EzYmZiYTI0NWU4Yjk5MTQ2OGJiZjEzNTc2OS4uYzg5MzNmZDJkMDc0MjA2NWI2ZDlk
M2RlNmM0N2U3NjI4YjU5MDgzMCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9kZXBlbmRlbmN5LWV4YW1wbGVzL2ZsaWdodC9hcHAvanMv
ZGF0YS9zdGF0cy5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2RlcGVuZGVuY3ktZXhhbXBsZXMvZmxpZ2h0L2FwcC9qcy9kYXRhL3N0YXRzLmpz
CkBAIC0zLDEwICszLDEwIEBACiAKIGRlZmluZShbCiAgICAgJ2ZsaWdodC9saWIvY29tcG9uZW50
JywKLSAgICAnLi4vc3RvcmUnCisgICAgJ2FwcC9zdG9yZScKIF0sIGZ1bmN0aW9uIChkZWZpbmVD
b21wb25lbnQsIGRhdGFTdG9yZSkgewogICAgIGZ1bmN0aW9uIHN0YXRzKCkgewotICAgICAgICB0
aGlzLmRlZmF1bHRBdHRycyh7CisgICAgICAgIHRoaXMuYXR0cmlidXRlcyh7CiAgICAgICAgICAg
ICBkYXRhU3RvcmU6IGRhdGFTdG9yZQogICAgICAgICB9KTsKIApAQCAtMjEsNyArMjEsNyBAQCBk
ZWZpbmUoWwogICAgICAgICAgICAgICAgIGFsbDogYWxsLAogICAgICAgICAgICAgICAgIHJlbWFp
bmluZzogcmVtYWluaW5nLAogICAgICAgICAgICAgICAgIGNvbXBsZXRlZDogYWxsIC0gcmVtYWlu
aW5nLAotICAgICAgICAgICAgICAgIGZpbHRlcjogbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2ZpbHRl
cicpIHx8ICcnCisgICAgICAgICAgICAgICAgZmlsdGVyOiAnJwogICAgICAgICAgICAgfSk7CiAg
ICAgICAgIH07CiAKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvZGVwZW5kZW5jeS1leGFtcGxlcy9mbGlnaHQvYXBwL2pzL2RhdGEvdG9k
b3MuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Rl
cGVuZGVuY3ktZXhhbXBsZXMvZmxpZ2h0L2FwcC9qcy9kYXRhL3RvZG9zLmpzCmluZGV4IGZjYTZm
NDJhMmQ2NmM5YzRkNjllMDNkZDJiZGEzODNiOWI3ZTQwYTkuLjUxYjhiOTMzZTEzYTcyNjNlMTFl
NmJlMTE2ZjBhODhiNTM5MDVlZjggMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZGVwZW5kZW5jeS1leGFtcGxlcy9mbGlnaHQvYXBwL2pz
L2RhdGEvdG9kb3MuanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9kZXBlbmRlbmN5LWV4YW1wbGVzL2ZsaWdodC9hcHAvanMvZGF0YS90b2Rvcy5q
cwpAQCAtMywxMSArMywxMSBAQAogCiBkZWZpbmUoWwogICAgICdmbGlnaHQvbGliL2NvbXBvbmVu
dCcsCi0gICAgJy4uL3N0b3JlJworICAgICdhcHAvc3RvcmUnCiBdLCBmdW5jdGlvbiAoZGVmaW5l
Q29tcG9uZW50LCBkYXRhU3RvcmUpIHsKICAgICBmdW5jdGlvbiB0b2RvcygpIHsKICAgICAgICAg
dmFyIGZpbHRlcjsKLSAgICAgICAgdGhpcy5kZWZhdWx0QXR0cnMoeworICAgICAgICB0aGlzLmF0
dHJpYnV0ZXMoewogICAgICAgICAgICAgZGF0YVN0b3JlOiBkYXRhU3RvcmUKICAgICAgICAgfSk7
CiAKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvZGVwZW5kZW5jeS1leGFtcGxlcy9mbGlnaHQvYXBwL2pzL21haW4uanMgYi9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2RlcGVuZGVuY3ktZXhhbXBs
ZXMvZmxpZ2h0L2FwcC9qcy9tYWluLmpzCmluZGV4IGRiYWVhMGMzYjIyMjk5NTM1ZWI4OTU1YzEw
NzZjMTRjODhiNWQzZDEuLmI3OTM5ODU3YmZjMmEwYWU3ZWQ2ZTg4OGRmMmE0MGI3MmI1N2I1Y2Mg
MTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvZGVwZW5kZW5jeS1leGFtcGxlcy9mbGlnaHQvYXBwL2pzL21haW4uanMKKysrIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9kZXBlbmRlbmN5LWV4YW1w
bGVzL2ZsaWdodC9hcHAvanMvbWFpbi5qcwpAQCAtMSwyMiArMSwzMCBAQAorLypnbG9iYWwgREVC
VUcgKi8KICd1c2Ugc3RyaWN0JzsKIAogcmVxdWlyZS5jb25maWcoewogICAgIGJhc2VVcmw6ICcu
LycsCiAgICAgcGF0aHM6IHsKLSAgICAgICAganF1ZXJ5OiAnYm93ZXJfY29tcG9uZW50cy9qcXVl
cnkvanF1ZXJ5JywKLSAgICAgICAgZXM1c2hpbTogJ2Jvd2VyX2NvbXBvbmVudHMvZXM1LXNoaW0v
ZXM1LXNoaW0nLAotICAgICAgICBlczVzaGFtOiAnYm93ZXJfY29tcG9uZW50cy9lczUtc2hpbS9l
czUtc2hhbScsCi0gICAgICAgIHRleHQ6ICdib3dlcl9jb21wb25lbnRzL3JlcXVpcmVqcy10ZXh0
L3RleHQnLAotICAgICAgICBmbGlnaHQ6ICdib3dlcl9jb21wb25lbnRzL2ZsaWdodCcsCi0gICAg
ICAgIGRlcG90OiAnYm93ZXJfY29tcG9uZW50cy9kZXBvdC9kZXBvdCcKKyAgICAgICAganF1ZXJ5
OiAnbm9kZV9tb2R1bGVzL2pxdWVyeS9kaXN0L2pxdWVyeScsCisgICAgICAgIGVzNXNoaW06ICdu
b2RlX21vZHVsZXMvZXM1LXNoaW0vZXM1LXNoaW0nLAorICAgICAgICBlczVzaGFtOiAnbm9kZV9t
b2R1bGVzL2VzNS1zaGltL2VzNS1zaGFtJywKKyAgICAgICAgdGV4dDogJ25vZGVfbW9kdWxlcy9y
ZXF1aXJlanMtdGV4dC90ZXh0JywKKyAgICAgICAgZmxpZ2h0OiAnbm9kZV9tb2R1bGVzL2ZsaWdo
dCcsCisgICAgICAgIGRlcG90OiAnbm9kZV9tb2R1bGVzL2RlcG90L2RlcG90JywKKyAgICAgICAg
YXBwOiAnYXBwL2pzJywKKyAgICAgICAgdGVtcGxhdGVzOiAnYXBwL3RlbXBsYXRlcycsCisgICAg
ICAgIHVpOiAnYXBwL2pzL3VpJywKKyAgICAgICAgZGF0YTogJ2FwcC9qcy9kYXRhJywKICAgICB9
LAogICAgIHNoaW06IHsKLSAgICAgICAgJ2FwcC9qcy9hcHAnOiB7CisgICAgICAgICdhcHAvcGFn
ZS9hcHAnOiB7CiAgICAgICAgICAgICBkZXBzOiBbJ2pxdWVyeScsICdlczVzaGltJywgJ2VzNXNo
YW0nXQogICAgICAgICB9CiAgICAgfQogfSk7CiAKLXJlcXVpcmUoWydhcHAvanMvYXBwJ10sIGZ1
bmN0aW9uIChBcHApIHsKLSAgICBBcHAuaW5pdGlhbGl6ZSgpOworcmVxdWlyZShbXSwgZnVuY3Rp
b24gKCkgeworICAgIHJlcXVpcmUoWydhcHAvcGFnZS9hcHAnXSxmdW5jdGlvbihBcHApeworICAg
ICAgICBBcHAuaW5pdGlhbGl6ZSgpOworICAgICAgICBjb25zb2xlLmxvZyhBcHApOworICAgIH0p
OwogfSk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2RlcGVuZGVuY3ktZXhhbXBsZXMvZmxpZ2h0L2FwcC9qcy9wYWdlL2FwcC5qcyBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZGVwZW5kZW5j
eS1leGFtcGxlcy9mbGlnaHQvYXBwL2pzL3BhZ2UvYXBwLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYxNzMzYTNk
ODMwMDdjN2YwNmQ2MWMyMDcwOTUzNzhlZDdhMTQwNTgKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2RlcGVuZGVuY3ktZXhh
bXBsZXMvZmxpZ2h0L2FwcC9qcy9wYWdlL2FwcC5qcwpAQCAtMCwwICsxLDI2IEBACisvKmdsb2Jh
bCBkZWZpbmUgKi8KKyd1c2Ugc3RyaWN0JzsKKworZGVmaW5lKFsKKyAgICAnZGF0YS90b2Rvcycs
CisgICAgJ2RhdGEvc3RhdHMnLAorICAgICd1aS9uZXdfaXRlbScsCisgICAgJ3VpL3RvZG9fbGlz
dCcsCisgICAgJ3VpL3N0YXRzJywKKyAgICAndWkvbWFpbl9zZWxlY3RvcicsCisgICAgJ3VpL3Rv
Z2dsZV9hbGwnCitdLCBmdW5jdGlvbiAoVG9kb3NEYXRhLCBTdGF0c0RhdGEsIE5ld0l0ZW1VSSwg
VG9kb0xpc3RVSSwgU3RhdHNVSSwgTWFpblNlbGVjdG9yVUksIFRvZ2dsZUFsbFVJKSB7CisgICAg
dmFyIGluaXRpYWxpemUgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgIFN0YXRzRGF0YS5hdHRhY2hU
byhkb2N1bWVudCk7CisgICAgICAgIFRvZG9zRGF0YS5hdHRhY2hUbyhkb2N1bWVudCk7CisgICAg
ICAgIE5ld0l0ZW1VSS5hdHRhY2hUbygnI25ldy10b2RvJyk7CisgICAgICAgIE1haW5TZWxlY3Rv
clVJLmF0dGFjaFRvKCcjbWFpbicpOworICAgICAgICBTdGF0c1VJLmF0dGFjaFRvKCcjZm9vdGVy
Jyk7CisgICAgICAgIFRvZ2dsZUFsbFVJLmF0dGFjaFRvKCcjdG9nZ2xlLWFsbCcpOworICAgICAg
ICBUb2RvTGlzdFVJLmF0dGFjaFRvKCcjdG9kby1saXN0Jyk7CisgICAgfTsKKworICAgIHJldHVy
biB7CisgICAgICAgIGluaXRpYWxpemU6IGluaXRpYWxpemUKKyAgICB9OworfSk7CmRpZmYgLS1n
aXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2RlcGVu
ZGVuY3ktZXhhbXBsZXMvZmxpZ2h0L2FwcC9qcy91aS9zdGF0cy5qcyBiL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZGVwZW5kZW5jeS1leGFtcGxlcy9mbGln
aHQvYXBwL2pzL3VpL3N0YXRzLmpzCmluZGV4IDA4ZTVlY2RmMzNhZmMwMDEyODlhMTEzM2VlMWI2
NzgwY2Y2YWUzY2YuLjFkYTdhYzY2YTc0N2RjYTY0YjcwNjAzOWJiNjA4NTUwZDM2MjBkZGQgMTAw
NjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
ZGVwZW5kZW5jeS1leGFtcGxlcy9mbGlnaHQvYXBwL2pzL3VpL3N0YXRzLmpzCisrKyBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZGVwZW5kZW5jeS1leGFt
cGxlcy9mbGlnaHQvYXBwL2pzL3VpL3N0YXRzLmpzCkBAIC00LDEzICs0LDEzIEBACiBkZWZpbmUo
WwogICAgICdmbGlnaHQvbGliL2NvbXBvbmVudCcsCiAgICAgJy4vd2l0aF9maWx0ZXJzJywKLSAg
ICAndGV4dCFhcHAvdGVtcGxhdGVzL3N0YXRzLmh0bWwnLAotICAgICcuLi91dGlscycKKyAgICAn
dGV4dCF0ZW1wbGF0ZXMvc3RhdHMuaHRtbCcsCisgICAgJ2FwcC91dGlscycKIF0sIGZ1bmN0aW9u
IChkZWZpbmVDb21wb25lbnQsIHdpdGhGaWx0ZXJzLCBzdGF0c1RtcGwsIHV0aWxzKSB7CiAgICAg
ZnVuY3Rpb24gc3RhdHMoKSB7CiAgICAgICAgIHZhciB0ZW1wbGF0ZSA9IHV0aWxzLnRtcGwoc3Rh
dHNUbXBsKTsKIAotICAgICAgICB0aGlzLmRlZmF1bHRBdHRycyh7CisgICAgICAgIHRoaXMuYXR0
cmlidXRlcyh7CiAgICAgICAgICAgICBjbGVhckNvbXBsZXRlZFNlbGVjdG9yOiAnI2NsZWFyLWNv
bXBsZXRlZCcKICAgICAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZGVwZW5kZW5jeS1leGFtcGxlcy9mbGlnaHQvYXBw
L2pzL3VpL3RvZG9fbGlzdC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvZGVwZW5kZW5jeS1leGFtcGxlcy9mbGlnaHQvYXBwL2pzL3VpL3RvZG9fbGlz
dC5qcwppbmRleCA4YzgwNmZhMmY5MmJkZTQ1N2EzZWQ2N2YxMDAwOGIyMGEwNmIzZDE3Li5kOTRk
ODNkNzU1NDgwYmY3OTNjODgzZGUwMzFlYzI0YjAxYWI3YTdlIDEwMDY0NAotLS0gYS9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2RlcGVuZGVuY3ktZXhhbXBs
ZXMvZmxpZ2h0L2FwcC9qcy91aS90b2RvX2xpc3QuanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9kZXBlbmRlbmN5LWV4YW1wbGVzL2ZsaWdodC9h
cHAvanMvdWkvdG9kb19saXN0LmpzCkBAIC0zLDE0ICszLDE0IEBACiAKIGRlZmluZShbCiAgICAg
J2ZsaWdodC9saWIvY29tcG9uZW50JywKLSAgICAndGV4dCFhcHAvdGVtcGxhdGVzL3RvZG8uaHRt
bCcsCi0gICAgJy4uL3V0aWxzJworICAgICd0ZXh0IXRlbXBsYXRlcy90b2RvLmh0bWwnLAorICAg
ICdhcHAvdXRpbHMnCiBdLCBmdW5jdGlvbiAoZGVmaW5lQ29tcG9uZW50LCB0b2RvVG1wbCwgdXRp
bHMpIHsKICAgICBmdW5jdGlvbiB0b2RvTGlzdCgpIHsKICAgICAgICAgdmFyIEVOVEVSX0tFWSA9
IDEzOwogICAgICAgICB2YXIgdGVtcGxhdGUgPSB1dGlscy50bXBsKHRvZG9UbXBsKTsKIAotICAg
ICAgICB0aGlzLmRlZmF1bHRBdHRycyh7CisgICAgICAgIHRoaXMuYXR0cmlidXRlcyh7CiAgICAg
ICAgICAgICBkZXN0cm95U2VsZWN0b3I6ICdidXR0b24uZGVzdHJveScsCiAgICAgICAgICAgICB0
b2dnbGVTZWxlY3RvcjogJ2lucHV0LnRvZ2dsZScsCiAgICAgICAgICAgICBsYWJlbFNlbGVjdG9y
OiAnbGFiZWwnLApkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9kZXBlbmRlbmN5LWV4YW1wbGVzL2ZsaWdodC9hcHAvanMvdWkvd2l0aF9m
aWx0ZXJzLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9kZXBlbmRlbmN5LWV4YW1wbGVzL2ZsaWdodC9hcHAvanMvdWkvd2l0aF9maWx0ZXJzLmpzCmlu
ZGV4IDQ2ZjM0YzhmMDdhNjE0MDg2ZTAwZmIwYjUyMjUzZjgyMjRhNDRhODIuLmIxNzI3OThlMWU5
NzA0OTdhOTBmNjNjMmY0MDIzYzdjZjkwYzM3MTMgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZGVwZW5kZW5jeS1leGFtcGxlcy9mbGln
aHQvYXBwL2pzL3VpL3dpdGhfZmlsdGVycy5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2RlcGVuZGVuY3ktZXhhbXBsZXMvZmxpZ2h0L2FwcC9q
cy91aS93aXRoX2ZpbHRlcnMuanMKQEAgLTMsNyArMyw3IEBACiAKIGRlZmluZShmdW5jdGlvbiAo
KSB7CiAgICAgcmV0dXJuIGZ1bmN0aW9uIHdpdGhGaWx0ZXJzKCkgewotICAgICAgICB0aGlzLmRl
ZmF1bHRBdHRycyh7CisgICAgICAgIHRoaXMuYXR0cmlidXRlcyh7CiAgICAgICAgICAgICBmaWx0
ZXJTZWxlY3RvcjogJyNmaWx0ZXJzIGEnCiAgICAgICAgIH0pOwogCmRpZmYgLS1naXQgYS9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2RlcGVuZGVuY3ktZXhh
bXBsZXMvZmxpZ2h0L2FwcC90ZW1wbGF0ZXMvc3RhdHMuaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZGVwZW5kZW5jeS1leGFtcGxlcy9mbGlnaHQv
YXBwL3RlbXBsYXRlcy9zdGF0cy5odG1sCmluZGV4IGJhYjNiNWNmM2Y2OGMwNmFlMzEzNGY0MmU0
YTA5MDZhMWE3MDhiZTcuLmM3Y2JhOWVhODQ4NmY3NjkzOTIzMTY1NzU5Y2E3NGNkMTk1ODBiYmEg
MTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvZGVwZW5kZW5jeS1leGFtcGxlcy9mbGlnaHQvYXBwL3RlbXBsYXRlcy9zdGF0cy5odG1sCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZGVwZW5k
ZW5jeS1leGFtcGxlcy9mbGlnaHQvYXBwL3RlbXBsYXRlcy9zdGF0cy5odG1sCkBAIC0xMyw1ICsx
Myw1IEBACiAgICAgPC9saT4KIDwvdWw+CiA8JSBpZiAoY29tcGxldGVkKSB7ICU+Ci08YnV0dG9u
IGlkPSJjbGVhci1jb21wbGV0ZWQiPkNsZWFyIGNvbXBsZXRlZCAoPCU9IGNvbXBsZXRlZCAlPik8
L2J1dHRvbj4KKzxidXR0b24gaWQ9ImNsZWFyLWNvbXBsZXRlZCI+Q2xlYXIgY29tcGxldGVkPC9i
dXR0b24+CiA8JSB9ICU+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2RlcGVuZGVuY3ktZXhhbXBsZXMvZmxpZ2h0L2Jvd2VyLmpzb24g
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2RlcGVuZGVu
Y3ktZXhhbXBsZXMvZmxpZ2h0L2Jvd2VyLmpzb24KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDQ1ZjUwZjQwMTNlZDNiZWFjZjVmODhkMWNhMzkwMGRiODkyZDYwNTQuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9kZXBlbmRlbmN5LWV4YW1wbGVzL2ZsaWdodC9ib3dl
ci5qc29uCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotewotICAibmFtZSI6ICJmbGln
aHQtdG9kb212YyIsCi0gICJ2ZXJzaW9uIjogIjAuMC4wIiwKLSAgImRlcGVuZGVuY2llcyI6IHsK
LSAgICAiZGVwb3QiOiAifjAuMS40IiwKLSAgICAiZmxpZ2h0IjogIn4xLjEuMCIsCi0gICAgImpx
dWVyeSI6ICIxLjguMyIsCi0gICAgInJlcXVpcmVqcyI6ICJ+Mi4xLjUiLAotICAgICJ0b2RvbXZj
LWNvbW1vbiI6ICJ+MC4xLjQiLAotICAgICJyZXF1aXJlanMtdGV4dCI6ICJ+Mi4wLjEwIgotICB9
LAotICAiZGV2RGVwZW5kZW5jaWVzIjogewotICAgICJqYXNtaW5lLWZsaWdodCI6ICJ+Mi4xLjAi
LAotICAgICJqYXNtaW5lLWpxdWVyeSI6ICJ+MS41LjgiCi0gIH0KLX0KZGlmZiAtLWdpdCBhL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZGVwZW5kZW5jeS1l
eGFtcGxlcy9mbGlnaHQvYm93ZXJfY29tcG9uZW50cy9kZXBvdC9kZXBvdC5qcyBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZGVwZW5kZW5jeS1leGFtcGxl
cy9mbGlnaHQvYm93ZXJfY29tcG9uZW50cy9kZXBvdC9kZXBvdC5qcwpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMWM3NjM4NDIzZGY0ZmI4Y2NkNTE4M2Q2YmRkNGUxNjg3YWQ4M2QwOC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2RlcGVuZGVuY3ktZXhhbXBsZXMv
ZmxpZ2h0L2Jvd2VyX2NvbXBvbmVudHMvZGVwb3QvZGVwb3QuanMKKysrIC9kZXYvbnVsbApAQCAt
MSwyNTEgKzAsMCBAQAotLy8gZGVwb3QuanMgdjAuMS42Ci0KLS8vIChjKSAyMDEzIE1pY2hhbCBL
dWtsaXMKLS8vIExpY2Vuc2VkIHVuZGVyIFRoZSBNSVQgTGljZW5zZQotLy8gaHR0cDovL29wZW5z
b3VyY2Uub3JnL2xpY2Vuc2VzL01JVAotCi0oZnVuY3Rpb24gKG5hbWUsIHJvb3QsIGZhY3Rvcnkp
IHsKLSAgaWYgKHR5cGVvZiBleHBvcnRzID09ICdvYmplY3QnKSB7Ci0gICAgbW9kdWxlLmV4cG9y
dHMgPSBmYWN0b3J5KCk7Ci0gIH0gZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PSAnZnVuY3Rpb24n
ICYmIGRlZmluZS5hbWQpIHsKLSAgICBkZWZpbmUoZmFjdG9yeSk7Ci0gIH0gZWxzZSB7Ci0gICAg
cm9vdFtuYW1lXSA9IGZhY3RvcnkoKTsKLSAgfQotfSgiZGVwb3QiLCB0aGlzLCBmdW5jdGlvbiAo
KSB7Ci0KLSAgInVzZSBzdHJpY3QiOwotCi0gIC8vIGRlcG90IGFwaQotCi0gIHZhciBhcGkgPSB7
Ci0KLSAgICBzYXZlOiBmdW5jdGlvbiAocmVjb3JkKSB7Ci0gICAgICB2YXIgaWQ7Ci0KLSAgICAg
IGlmICghcmVjb3JkW3RoaXMuaWRBdHRyaWJ1dGVdKSB7Ci0gICAgICAgIHJlY29yZFt0aGlzLmlk
QXR0cmlidXRlXSA9IGd1aWQoKTsKLSAgICAgIH0KLQotICAgICAgaWQgPSByZWNvcmRbdGhpcy5p
ZEF0dHJpYnV0ZV0gKyAnJzsKLQotICAgICAgaWYgKHRoaXMuaWRzLmluZGV4T2YoaWQpIDwgMCkg
ewotICAgICAgICB0aGlzLmlkcy5wdXNoKGlkKTsKLSAgICAgICAgdGhpcy5zdG9yYWdlQWRhcHRv
ci5zZXRJdGVtKHRoaXMubmFtZSwgdGhpcy5pZHMuam9pbigiLCIpKTsKLSAgICAgIH0KLQotICAg
ICAgdGhpcy5zdG9yYWdlQWRhcHRvci5zZXRJdGVtKGdldEtleSh0aGlzLm5hbWUsIGlkKSwgSlNP
Ti5zdHJpbmdpZnkocmVjb3JkKSk7Ci0KLSAgICAgIHJldHVybiByZWNvcmQ7Ci0gICAgfSwKLQot
ICAgIHVwZGF0ZTogZnVuY3Rpb24gKGlkLCBkYXRhKSB7Ci0gICAgICBpZiAodHlwZW9mIGRhdGEg
PT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAgZGF0YSA9IGlkOwotICAgICAgICBpZCA9IGRhdGFb
dGhpcy5pZEF0dHJpYnV0ZV07Ci0gICAgICB9Ci0KLSAgICAgIHZhciByZWNvcmQgPSB0aGlzLmdl
dChpZCk7Ci0KLSAgICAgIGlmIChyZWNvcmQpIHsKLSAgICAgICAgcmVjb3JkID0gZXh0ZW5kKHJl
Y29yZCwgZGF0YSk7Ci0gICAgICAgIHRoaXMuc2F2ZShyZWNvcmQpOwotICAgICAgfQotCi0gICAg
ICByZXR1cm4gcmVjb3JkOwotICAgIH0sCi0KLSAgICB1cGRhdGVBbGw6IGZ1bmN0aW9uIChkYXRh
KSB7Ci0gICAgICB2YXIgcmVjb3JkcyA9IHRoaXMuYWxsKCk7Ci0KLSAgICAgIHJlY29yZHMuZm9y
RWFjaChmdW5jdGlvbiAocmVjb3JkKSB7Ci0gICAgICAgIHJlY29yZCA9IGV4dGVuZChyZWNvcmQs
IGRhdGEpOwotICAgICAgICB0aGlzLnNhdmUocmVjb3JkKTsKLSAgICAgIH0sIHRoaXMpOwotCi0g
ICAgICByZXR1cm4gcmVjb3JkczsKLSAgICB9LAotCi0gICAgZmluZDogZnVuY3Rpb24gKGNyaXRl
cmlhKSB7Ci0gICAgICB2YXIga2V5LCBtYXRjaCwgcmVjb3JkOwotICAgICAgdmFyIG5hbWUgPSB0
aGlzLm5hbWU7Ci0gICAgICB2YXIgc2VsZiA9IHRoaXM7Ci0KLSAgICAgIGlmICghY3JpdGVyaWEp
IHJldHVybiB0aGlzLmFsbCgpOwotCi0gICAgICByZXR1cm4gdGhpcy5pZHMucmVkdWNlKGZ1bmN0
aW9uIChtZW1vLCBpZCkgewotICAgICAgICByZWNvcmQgPSBqc29uRGF0YShzZWxmLnN0b3JhZ2VB
ZGFwdG9yLmdldEl0ZW0oZ2V0S2V5KG5hbWUsIGlkKSkpOwotICAgICAgICBtYXRjaCA9IGZpbmRN
YXRjaChjcml0ZXJpYSwgcmVjb3JkKTsKLQotICAgICAgICBpZiAobWF0Y2gpIHsKLSAgICAgICAg
ICBtZW1vLnB1c2gocmVjb3JkKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBtZW1vOwot
ICAgICAgfSwgW10pOwotICAgIH0sCi0KLSAgICBnZXQ6IGZ1bmN0aW9uIChpZCkgewotICAgICAg
cmV0dXJuIGpzb25EYXRhKHRoaXMuc3RvcmFnZUFkYXB0b3IuZ2V0SXRlbShnZXRLZXkodGhpcy5u
YW1lLCBpZCkpKTsKLSAgICB9LAotCi0gICAgYWxsOiBmdW5jdGlvbiAoKSB7Ci0gICAgICB2YXIg
cmVjb3JkLCBzZWxmID0gdGhpcywgbmFtZSA9IHRoaXMubmFtZTsKLQotICAgICAgcmV0dXJuIHRo
aXMuaWRzLnJlZHVjZShmdW5jdGlvbiAobWVtbywgaWQpIHsKLSAgICAgICAgcmVjb3JkID0gc2Vs
Zi5zdG9yYWdlQWRhcHRvci5nZXRJdGVtKGdldEtleShuYW1lLCBpZCkpOwotCi0gICAgICAgIGlm
IChyZWNvcmQpIHsKLSAgICAgICAgICBtZW1vLnB1c2goanNvbkRhdGEocmVjb3JkKSk7Ci0gICAg
ICAgIH0KLQotICAgICAgICByZXR1cm4gbWVtbzsKLSAgICAgIH0sIFtdKTsKLSAgICB9LAotCi0g
ICAgZGVzdHJveTogZnVuY3Rpb24gKHJlY29yZCkgewotICAgICAgdmFyIGluZGV4OwotICAgICAg
dmFyIGlkID0gKHJlY29yZFt0aGlzLmlkQXR0cmlidXRlXSkgPyByZWNvcmRbdGhpcy5pZEF0dHJp
YnV0ZV0gOiByZWNvcmQ7Ci0gICAgICB2YXIga2V5ID0gZ2V0S2V5KHRoaXMubmFtZSwgaWQpOwot
Ci0gICAgICByZWNvcmQgPSBqc29uRGF0YSh0aGlzLnN0b3JhZ2VBZGFwdG9yLmdldEl0ZW0oa2V5
KSk7Ci0gICAgICB0aGlzLnN0b3JhZ2VBZGFwdG9yLnJlbW92ZUl0ZW0oa2V5KTsKLQotICAgICAg
aW5kZXggPSB0aGlzLmlkcy5pbmRleE9mKGlkKTsKLSAgICAgIGlmIChpbmRleCAhPSAtMSkgdGhp
cy5pZHMuc3BsaWNlKGluZGV4LCAxKTsKLSAgICAgIHRoaXMuc3RvcmFnZUFkYXB0b3Iuc2V0SXRl
bSh0aGlzLm5hbWUsIHRoaXMuaWRzLmpvaW4oIiwiKSk7Ci0KLSAgICAgIHJldHVybiByZWNvcmQ7
Ci0gICAgfSwKLQotICAgIGRlc3Ryb3lBbGw6IGZ1bmN0aW9uIChjcml0ZXJpYSkgewotICAgICAg
dmFyIGF0dHIsIGlkLCBtYXRjaCwgcmVjb3JkLCBrZXk7Ci0KLSAgICAgIGZvciAodmFyIGkgPSB0
aGlzLmlkcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgewotICAgICAgICBpZCA9IHRoaXMuaWRz
W2ldOwotICAgICAgICBrZXkgPSBnZXRLZXkodGhpcy5uYW1lLCBpZCk7Ci0KLSAgICAgICAgaWYg
KGNyaXRlcmlhKSB7Ci0KLSAgICAgICAgICByZWNvcmQgPSBqc29uRGF0YSh0aGlzLnN0b3JhZ2VB
ZGFwdG9yLmdldEl0ZW0oa2V5KSk7Ci0gICAgICAgICAgbWF0Y2ggPSBmaW5kTWF0Y2goY3JpdGVy
aWEsIHJlY29yZCk7Ci0KLSAgICAgICAgICBpZiAobWF0Y2gpIHsKLSAgICAgICAgICAgIHRoaXMu
c3RvcmFnZUFkYXB0b3IucmVtb3ZlSXRlbShrZXkpOwotICAgICAgICAgICAgdGhpcy5pZHMuc3Bs
aWNlKGksIDEpOwotICAgICAgICAgIH0KLQotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAg
ICAgICAgIHRoaXMuc3RvcmFnZUFkYXB0b3IucmVtb3ZlSXRlbShrZXkpOwotICAgICAgICB9Ci0g
ICAgICB9Ci0KLSAgICAgIGlmIChjcml0ZXJpYSkgewotICAgICAgICB0aGlzLnN0b3JhZ2VBZGFw
dG9yLnNldEl0ZW0odGhpcy5uYW1lLCB0aGlzLmlkcy5qb2luKCIsIikpOwotICAgICAgfQotICAg
ICAgZWxzZSB7Ci0gICAgICAgIHRoaXMuc3RvcmFnZUFkYXB0b3IucmVtb3ZlSXRlbSh0aGlzLm5h
bWUpOwotICAgICAgICB0aGlzLmlkcyA9IFtdOwotICAgICAgfQotICAgIH0sCi0KLSAgICBzaXpl
OiBmdW5jdGlvbiAoKSB7Ci0gICAgICByZXR1cm4gdGhpcy5pZHMubGVuZ3RoOwotICAgIH0KLSAg
fTsKLQotICAvLyBoZWxwZXJzCi0KLSAgZnVuY3Rpb24ganNvbkRhdGEoZGF0YSkgewotICAgIHJl
dHVybiBkYXRhICYmIEpTT04ucGFyc2UoZGF0YSk7Ci0gIH0KLQotICBmdW5jdGlvbiBnZXRLZXko
bmFtZSwgaWQpIHsKLSAgICByZXR1cm4gbmFtZSArICItIiArIGlkOwotICB9Ci0KLSAgZnVuY3Rp
b24gZmluZE1hdGNoKGNyaXRlcmlhLCByZWNvcmQpIHsKLSAgICB2YXIgbWF0Y2gsIGF0dHI7Ci0K
LSAgICBpZiAodHlwZW9mIGNyaXRlcmlhID09ICdmdW5jdGlvbicpIHsKLSAgICAgIG1hdGNoID0g
Y3JpdGVyaWEocmVjb3JkKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICBtYXRjaCA9IHRydWU7
Ci0gICAgICBmb3IgKGF0dHIgaW4gY3JpdGVyaWEpIHsKLSAgICAgICAgbWF0Y2ggJj0gKGNyaXRl
cmlhW2F0dHJdID09PSByZWNvcmRbYXR0cl0pOwotICAgICAgfQotICAgIH0KLQotICAgIHJldHVy
biBtYXRjaDsKLSAgfQotCi0gIGZ1bmN0aW9uIHM0KCkgewotICAgIHJldHVybiBNYXRoLmZsb29y
KCgxICsgTWF0aC5yYW5kb20oKSkgKiAweDEwMDAwKQotICAgICAgLnRvU3RyaW5nKDE2KS5zdWJz
dHJpbmcoMSk7Ci0gIH0KLQotICBmdW5jdGlvbiBndWlkKCkgewotICAgIHJldHVybiBzNCgpICsg
czQoKSArICctJyArIHM0KCkgKyAnLScgKyBzNCgpICsKLSAgICAgICctJyArczQoKSArICctJyAr
IHM0KCkgKyBzNCgpICsgczQoKTsKLSAgfQotCi0gIGZ1bmN0aW9uIGV4dGVuZChkZXN0LCBzb3Vy
Y2UpIHsKLSAgICBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7Ci0gICAgICBpZiAoc291cmNlLmhh
c093blByb3BlcnR5KGtleSkpIHsKLSAgICAgICAgZGVzdFtrZXldID0gc291cmNlW2tleV07Ci0g
ICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIGRlc3Q7Ci0gIH0KLQotICBmdW5jdGlvbiBkZXBv
dChuYW1lLCBvcHRpb25zKSB7Ci0gICAgdmFyIHN0b3JlLCBpZHM7Ci0KLSAgICB2YXIgZGF0YSA9
IHt9OwotICAgIHZhciBsb2NhbFN0b3JhZ2UgPSB7Ci0gICAgICAgIGdldEl0ZW06IGZ1bmN0aW9u
IChrZXkpIHsgcmV0dXJuIGRhdGFba2V5XTsgfSwKLSAgICAgICAgc2V0SXRlbTogZnVuY3Rpb24g
KGtleSwgdmFsdWUpIHsKLSAgICAgICAgICAgIGlmICghZGF0YVtrZXldKQotICAgICAgICAgICAg
ICAgIHRoaXMubGVuZ3RoKys7Ci0gICAgICAgICAgICBkYXRhW2tleV0gPSB2YWx1ZTsKLSAgICAg
ICAgfSwKLSAgICAgICAgcmVtb3ZlSXRlbTogZnVuY3Rpb24gKGtleSkgewotICAgICAgICAgICAg
ZGVsZXRlIGRhdGFba2V5XTsKLSAgICAgICAgICAgIHRoaXMubGVuZ3RoLS07Ci0gICAgICAgIH0s
Ci0gICAgICAgIGtleTogZnVuY3Rpb24gKGluZGV4KSB7Ci0gICAgICAgICAgICB2YXIgaSA9IDA7
Ci0gICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gZGF0YSkgewotICAgICAgICAgICAgICAgIGlm
IChpID09IGluZGV4KQotICAgICAgICAgICAgICAgICAgICByZXR1cm4ga2V5OwotICAgICAgICAg
ICAgICAgIGkrKzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBudWxsOwotICAg
ICAgICB9LAotICAgICAgICBsZW5ndGg6IDAsCi0gICAgfTsKLQotICAgIG9wdGlvbnMgPSBleHRl
bmQoewotICAgICAgaWRBdHRyaWJ1dGU6ICdfaWQnLAotICAgICAgc3RvcmFnZUFkYXB0b3I6IGxv
Y2FsU3RvcmFnZQotICAgIH0sIG9wdGlvbnMpOwotCi0gICAgaWYgKCFvcHRpb25zLnN0b3JhZ2VB
ZGFwdG9yKSB0aHJvdyBuZXcgRXJyb3IoIk5vIHN0b3JhZ2UgYWRhcHRvciB3YXMgZm91bmQiKTsK
LQotICAgIHN0b3JlID0gb3B0aW9ucy5zdG9yYWdlQWRhcHRvci5nZXRJdGVtKG5hbWUpOwotICAg
IGlkcyA9IChzdG9yZSAmJiBzdG9yZS5zcGxpdCgiLCIpKSB8fCBbXTsKLQotICAgIHJldHVybiBP
YmplY3QuY3JlYXRlKGFwaSwgewotICAgICAgbmFtZTogeyB2YWx1ZTogbmFtZSB9LAotICAgICAg
c3RvcmU6IHsgdmFsdWU6IHN0b3JlIH0sCi0gICAgICBpZHM6IHsgdmFsdWU6IGlkcywgd3JpdGFi
bGU6IHRydWUgfSwKLSAgICAgIGlkQXR0cmlidXRlOiB7IHZhbHVlOiBvcHRpb25zLmlkQXR0cmli
dXRlIH0sCi0gICAgICBzdG9yYWdlQWRhcHRvcjogeyB2YWx1ZTogb3B0aW9ucy5zdG9yYWdlQWRh
cHRvciB9Ci0gICAgfSk7Ci0gIH0KLQotICByZXR1cm4gZGVwb3Q7Ci19KSk7CmRpZmYgLS1naXQg
YS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2RlcGVuZGVu
Y3ktZXhhbXBsZXMvZmxpZ2h0L2Jvd2VyX2NvbXBvbmVudHMvZXM1LXNoaW0vZXM1LXNoYW0uanMg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2RlcGVuZGVu
Y3ktZXhhbXBsZXMvZmxpZ2h0L2Jvd2VyX2NvbXBvbmVudHMvZXM1LXNoaW0vZXM1LXNoYW0uanMK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGExYjQ2Y2JjMWZhNjFmNWNhNDQyZjRmZDVk
Y2Q3NjA0MTk2MWJlOWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9kZXBl
bmRlbmN5LWV4YW1wbGVzL2ZsaWdodC9ib3dlcl9jb21wb25lbnRzL2VzNS1zaGltL2VzNS1zaGFt
LmpzCisrKyAvZGV2L251bGwKQEAgLTEsMzI2ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA5LTIw
MTIgYnkgY29udHJpYnV0b3JzLCBNSVQgTGljZW5zZQotLy8gdmltOiB0cz00IHN0cz00IHN3PTQg
ZXhwYW5kdGFiCi0KLS8vIE1vZHVsZSBzeXN0ZW1zIG1hZ2ljIGRhbmNlCi0oZnVuY3Rpb24gKGRl
ZmluaXRpb24pIHsKLSAgICAvLyBSZXF1aXJlSlMKLSAgICBpZiAodHlwZW9mIGRlZmluZSA9PSAi
ZnVuY3Rpb24iKSB7Ci0gICAgICAgIGRlZmluZShkZWZpbml0aW9uKTsKLSAgICAvLyBZVUkzCi0g
ICAgfSBlbHNlIGlmICh0eXBlb2YgWVVJID09ICJmdW5jdGlvbiIpIHsKLSAgICAgICAgWVVJLmFk
ZCgiZXM1LXNoYW0iLCBkZWZpbml0aW9uKTsKLSAgICAvLyBDb21tb25KUyBhbmQgPHNjcmlwdD4K
LSAgICB9IGVsc2UgewotICAgICAgICBkZWZpbml0aW9uKCk7Ci0gICAgfQotfSkoZnVuY3Rpb24g
KCkgewotCi0vLyBFUzUgMTUuMi4zLjIKLS8vIGh0dHA6Ly9lczUuZ2l0aHViLmNvbS8jeDE1LjIu
My4yCi1pZiAoIU9iamVjdC5nZXRQcm90b3R5cGVPZikgewotICAgIC8vIGh0dHBzOi8vZ2l0aHVi
LmNvbS9rcmlza293YWwvZXM1LXNoaW0vaXNzdWVzI2lzc3VlLzIKLSAgICAvLyBodHRwOi8vZWpv
aG4ub3JnL2Jsb2cvb2JqZWN0Z2V0cHJvdG90eXBlb2YvCi0gICAgLy8gcmVjb21tZW5kZWQgYnkg
ZnNjaGFlZmVyIG9uIGdpdGh1YgotICAgIE9iamVjdC5nZXRQcm90b3R5cGVPZiA9IGZ1bmN0aW9u
IGdldFByb3RvdHlwZU9mKG9iamVjdCkgewotICAgICAgICByZXR1cm4gb2JqZWN0Ll9fcHJvdG9f
XyB8fCAoCi0gICAgICAgICAgICBvYmplY3QuY29uc3RydWN0b3IKLSAgICAgICAgICAgICAgICA/
IG9iamVjdC5jb25zdHJ1Y3Rvci5wcm90b3R5cGUKLSAgICAgICAgICAgICAgICA6IHByb3RvdHlw
ZU9mT2JqZWN0Ci0gICAgICAgICk7Ci0gICAgfTsKLX0KLQotLy8gRVM1IDE1LjIuMy4zCi0vLyBo
dHRwOi8vZXM1LmdpdGh1Yi5jb20vI3gxNS4yLjMuMwotaWYgKCFPYmplY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKSB7Ci0gICAgdmFyIEVSUl9OT05fT0JKRUNUID0gIk9iamVjdC5nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IgY2FsbGVkIG9uIGEgbm9uLW9iamVjdDogIjsKLQotICAgIE9iamVj
dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3Iob2JqZWN0LCBwcm9wZXJ0eSkgewotICAgICAgICBpZiAoKHR5cGVvZiBvYmplY3QgIT0g
Im9iamVjdCIgJiYgdHlwZW9mIG9iamVjdCAhPSAiZnVuY3Rpb24iKSB8fCBvYmplY3QgPT09IG51
bGwpIHsKLSAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRVJSX05PTl9PQkpFQ1QgKyBv
YmplY3QpOwotICAgICAgICB9Ci0gICAgICAgIC8vIElmIG9iamVjdCBkb2VzIG5vdCBvd25zIHBy
b3BlcnR5IHJldHVybiB1bmRlZmluZWQgaW1tZWRpYXRlbHkuCi0gICAgICAgIGlmICghb3ducyhv
YmplY3QsIHByb3BlcnR5KSkgewotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAg
ICAgICAgLy8gSWYgb2JqZWN0IGhhcyBhIHByb3BlcnR5IHRoZW4gaXQncyBmb3Igc3VyZSBib3Ro
IGBlbnVtZXJhYmxlYCBhbmQKLSAgICAgICAgLy8gYGNvbmZpZ3VyYWJsZWAuCi0gICAgICAgIHZh
ciBkZXNjcmlwdG9yID0gIHsgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH07
Ci0KLSAgICAgICAgLy8gSWYgSlMgZW5naW5lIHN1cHBvcnRzIGFjY2Vzc29yIHByb3BlcnRpZXMg
dGhlbiBwcm9wZXJ0eSBtYXkgYmUgYQotICAgICAgICAvLyBnZXR0ZXIgb3Igc2V0dGVyLgotICAg
ICAgICBpZiAoc3VwcG9ydHNBY2Nlc3NvcnMpIHsKLSAgICAgICAgICAgIC8vIFVuZm9ydHVuYXRl
bHkgYF9fbG9va3VwR2V0dGVyX19gIHdpbGwgcmV0dXJuIGEgZ2V0dGVyIGV2ZW4KLSAgICAgICAg
ICAgIC8vIGlmIG9iamVjdCBoYXMgb3duIG5vbiBnZXR0ZXIgcHJvcGVydHkgYWxvbmcgd2l0aCBh
IHNhbWUgbmFtZWQKLSAgICAgICAgICAgIC8vIGluaGVyaXRlZCBnZXR0ZXIuIFRvIGF2b2lkIG1p
c2JlaGF2aW9yIHdlIHRlbXBvcmFyeSByZW1vdmUKLSAgICAgICAgICAgIC8vIGBfX3Byb3RvX19g
IHNvIHRoYXQgYF9fbG9va3VwR2V0dGVyX19gIHdpbGwgcmV0dXJuIGdldHRlciBvbmx5Ci0gICAg
ICAgICAgICAvLyBpZiBpdCdzIG93bmVkIGJ5IGFuIG9iamVjdC4KLSAgICAgICAgICAgIHZhciBw
cm90b3R5cGUgPSBvYmplY3QuX19wcm90b19fOwotICAgICAgICAgICAgb2JqZWN0Ll9fcHJvdG9f
XyA9IHByb3RvdHlwZU9mT2JqZWN0OwotCi0gICAgICAgICAgICB2YXIgZ2V0dGVyID0gbG9va3Vw
R2V0dGVyKG9iamVjdCwgcHJvcGVydHkpOwotICAgICAgICAgICAgdmFyIHNldHRlciA9IGxvb2t1
cFNldHRlcihvYmplY3QsIHByb3BlcnR5KTsKLQotICAgICAgICAgICAgLy8gT25jZSB3ZSBoYXZl
IGdldHRlciBhbmQgc2V0dGVyIHdlIGNhbiBwdXQgdmFsdWVzIGJhY2suCi0gICAgICAgICAgICBv
YmplY3QuX19wcm90b19fID0gcHJvdG90eXBlOwotCi0gICAgICAgICAgICBpZiAoZ2V0dGVyIHx8
IHNldHRlcikgewotICAgICAgICAgICAgICAgIGlmIChnZXR0ZXIpIHsKLSAgICAgICAgICAgICAg
ICAgICAgZGVzY3JpcHRvci5nZXQgPSBnZXR0ZXI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIGlmIChzZXR0ZXIpIHsKLSAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRvci5z
ZXQgPSBzZXR0ZXI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIC8vIElmIGl0
IHdhcyBhY2Nlc3NvciBwcm9wZXJ0eSB3ZSdyZSBkb25lIGFuZCByZXR1cm4gaGVyZQotICAgICAg
ICAgICAgICAgIC8vIGluIG9yZGVyIHRvIGF2b2lkIGFkZGluZyBgdmFsdWVgIHRvIHRoZSBkZXNj
cmlwdG9yLgotICAgICAgICAgICAgICAgIHJldHVybiBkZXNjcmlwdG9yOwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0KLSAgICAgICAgLy8gSWYgd2UgZ290IHRoaXMgZmFyIHdlIGtub3cgdGhh
dCBvYmplY3QgaGFzIGFuIG93biBwcm9wZXJ0eSB0aGF0IGlzCi0gICAgICAgIC8vIG5vdCBhbiBh
Y2Nlc3NvciBzbyB3ZSBzZXQgaXQgYXMgYSB2YWx1ZSBhbmQgcmV0dXJuIGRlc2NyaXB0b3IuCi0g
ICAgICAgIGRlc2NyaXB0b3IudmFsdWUgPSBvYmplY3RbcHJvcGVydHldOwotICAgICAgICByZXR1
cm4gZGVzY3JpcHRvcjsKLSAgICB9OwotfQotCi0vLyBFUzUgMTUuMi4zLjQKLS8vIGh0dHA6Ly9l
czUuZ2l0aHViLmNvbS8jeDE1LjIuMy40Ci1pZiAoIU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVz
KSB7Ci0gICAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMgPSBmdW5jdGlvbiBnZXRPd25Qcm9w
ZXJ0eU5hbWVzKG9iamVjdCkgewotICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMob2JqZWN0KTsK
LSAgICB9OwotfQotCi0vLyBFUzUgMTUuMi4zLjUKLS8vIGh0dHA6Ly9lczUuZ2l0aHViLmNvbS8j
eDE1LjIuMy41Ci1pZiAoIU9iamVjdC5jcmVhdGUpIHsKLSAgICBPYmplY3QuY3JlYXRlID0gZnVu
Y3Rpb24gY3JlYXRlKHByb3RvdHlwZSwgcHJvcGVydGllcykgewotICAgICAgICB2YXIgb2JqZWN0
OwotICAgICAgICBpZiAocHJvdG90eXBlID09PSBudWxsKSB7Ci0gICAgICAgICAgICBvYmplY3Qg
PSB7ICJfX3Byb3RvX18iOiBudWxsIH07Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBp
ZiAodHlwZW9mIHByb3RvdHlwZSAhPSAib2JqZWN0IikgewotICAgICAgICAgICAgICAgIHRocm93
IG5ldyBUeXBlRXJyb3IoInR5cGVvZiBwcm90b3R5cGVbIisodHlwZW9mIHByb3RvdHlwZSkrIl0g
IT0gJ29iamVjdCciKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZhciBUeXBlID0gZnVu
Y3Rpb24gKCkge307Ci0gICAgICAgICAgICBUeXBlLnByb3RvdHlwZSA9IHByb3RvdHlwZTsKLSAg
ICAgICAgICAgIG9iamVjdCA9IG5ldyBUeXBlKCk7Ci0gICAgICAgICAgICAvLyBJRSBoYXMgbm8g
YnVpbHQtaW4gaW1wbGVtZW50YXRpb24gb2YgYE9iamVjdC5nZXRQcm90b3R5cGVPZmAKLSAgICAg
ICAgICAgIC8vIG5laXRoZXIgYF9fcHJvdG9fX2AsIGJ1dCB0aGlzIG1hbnVhbGx5IHNldHRpbmcg
YF9fcHJvdG9fX2Agd2lsbAotICAgICAgICAgICAgLy8gZ3VhcmFudGVlIHRoYXQgYE9iamVjdC5n
ZXRQcm90b3R5cGVPZmAgd2lsbCB3b3JrIGFzIGV4cGVjdGVkIHdpdGgKLSAgICAgICAgICAgIC8v
IG9iamVjdHMgY3JlYXRlZCB1c2luZyBgT2JqZWN0LmNyZWF0ZWAKLSAgICAgICAgICAgIG9iamVj
dC5fX3Byb3RvX18gPSBwcm90b3R5cGU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHByb3BlcnRp
ZXMgIT09IHZvaWQgMCkgewotICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMob2Jq
ZWN0LCBwcm9wZXJ0aWVzKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gb2JqZWN0OwotICAg
IH07Ci19Ci0KLS8vIEVTNSAxNS4yLjMuNgotLy8gaHR0cDovL2VzNS5naXRodWIuY29tLyN4MTUu
Mi4zLjYKLQotLy8gUGF0Y2ggZm9yIFdlYktpdCBhbmQgSUU4IHN0YW5kYXJkIG1vZGUKLS8vIERl
c2lnbmVkIGJ5IGhheCA8aGF4LmdpdGh1Yi5jb20+Ci0vLyByZWxhdGVkIGlzc3VlOiBodHRwczov
L2dpdGh1Yi5jb20va3Jpc2tvd2FsL2VzNS1zaGltL2lzc3VlcyNpc3N1ZS81Ci0vLyBJRTggUmVm
ZXJlbmNlOgotLy8gICAgIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9k
ZDI4MjkwMC5hc3B4Ci0vLyAgICAgaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJy
YXJ5L2RkMjI5OTE2LmFzcHgKLS8vIFdlYktpdCBCdWdzOgotLy8gICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjQyMwotCi1mdW5jdGlvbiBkb2VzRGVmaW5lUHJv
cGVydHlXb3JrKG9iamVjdCkgewotICAgIHRyeSB7Ci0gICAgICAgIE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eShvYmplY3QsICJzZW50aW5lbCIsIHt9KTsKLSAgICAgICAgcmV0dXJuICJzZW50aW5lbCIg
aW4gb2JqZWN0OwotICAgIH0gY2F0Y2ggKGV4Y2VwdGlvbikgewotICAgICAgICAvLyByZXR1cm5z
IGZhbHN5Ci0gICAgfQotfQotCi0vLyBjaGVjayB3aGV0aGVyIGRlZmluZVByb3BlcnR5IHdvcmtz
IGlmIGl0J3MgZ2l2ZW4uIE90aGVyd2lzZSwKLS8vIHNoaW0gcGFydGlhbGx5LgotaWYgKE9iamVj
dC5kZWZpbmVQcm9wZXJ0eSkgewotICAgIHZhciBkZWZpbmVQcm9wZXJ0eVdvcmtzT25PYmplY3Qg
PSBkb2VzRGVmaW5lUHJvcGVydHlXb3JrKHt9KTsKLSAgICB2YXIgZGVmaW5lUHJvcGVydHlXb3Jr
c09uRG9tID0gdHlwZW9mIGRvY3VtZW50ID09ICJ1bmRlZmluZWQiIHx8Ci0gICAgICAgIGRvZXNE
ZWZpbmVQcm9wZXJ0eVdvcmsoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpOwotICAgIGlm
ICghZGVmaW5lUHJvcGVydHlXb3Jrc09uT2JqZWN0IHx8ICFkZWZpbmVQcm9wZXJ0eVdvcmtzT25E
b20pIHsKLSAgICAgICAgdmFyIGRlZmluZVByb3BlcnR5RmFsbGJhY2sgPSBPYmplY3QuZGVmaW5l
UHJvcGVydHk7Ci0gICAgfQotfQotCi1pZiAoIU9iamVjdC5kZWZpbmVQcm9wZXJ0eSB8fCBkZWZp
bmVQcm9wZXJ0eUZhbGxiYWNrKSB7Ci0gICAgdmFyIEVSUl9OT05fT0JKRUNUX0RFU0NSSVBUT1Ig
PSAiUHJvcGVydHkgZGVzY3JpcHRpb24gbXVzdCBiZSBhbiBvYmplY3Q6ICI7Ci0gICAgdmFyIEVS
Ul9OT05fT0JKRUNUX1RBUkdFVCA9ICJPYmplY3QuZGVmaW5lUHJvcGVydHkgY2FsbGVkIG9uIG5v
bi1vYmplY3Q6ICIKLSAgICB2YXIgRVJSX0FDQ0VTU09SU19OT1RfU1VQUE9SVEVEID0gImdldHRl
cnMgJiBzZXR0ZXJzIGNhbiBub3QgYmUgZGVmaW5lZCAiICsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIm9uIHRoaXMgamF2YXNjcmlwdCBlbmdpbmUiOwotCi0gICAgT2Jq
ZWN0LmRlZmluZVByb3BlcnR5ID0gZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkob2JqZWN0LCBwcm9w
ZXJ0eSwgZGVzY3JpcHRvcikgewotICAgICAgICBpZiAoKHR5cGVvZiBvYmplY3QgIT0gIm9iamVj
dCIgJiYgdHlwZW9mIG9iamVjdCAhPSAiZnVuY3Rpb24iKSB8fCBvYmplY3QgPT09IG51bGwpIHsK
LSAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRVJSX05PTl9PQkpFQ1RfVEFSR0VUICsg
b2JqZWN0KTsKLSAgICAgICAgfQotICAgICAgICBpZiAoKHR5cGVvZiBkZXNjcmlwdG9yICE9ICJv
YmplY3QiICYmIHR5cGVvZiBkZXNjcmlwdG9yICE9ICJmdW5jdGlvbiIpIHx8IGRlc2NyaXB0b3Ig
PT09IG51bGwpIHsKLSAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRVJSX05PTl9PQkpF
Q1RfREVTQ1JJUFRPUiArIGRlc2NyaXB0b3IpOwotICAgICAgICB9Ci0gICAgICAgIC8vIG1ha2Ug
YSB2YWxpYW50IGF0dGVtcHQgdG8gdXNlIHRoZSByZWFsIGRlZmluZVByb3BlcnR5Ci0gICAgICAg
IC8vIGZvciBJOCdzIERPTSBlbGVtZW50cy4KLSAgICAgICAgaWYgKGRlZmluZVByb3BlcnR5RmFs
bGJhY2spIHsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGRlZmlu
ZVByb3BlcnR5RmFsbGJhY2suY2FsbChPYmplY3QsIG9iamVjdCwgcHJvcGVydHksIGRlc2NyaXB0
b3IpOwotICAgICAgICAgICAgfSBjYXRjaCAoZXhjZXB0aW9uKSB7Ci0gICAgICAgICAgICAgICAg
Ly8gdHJ5IHRoZSBzaGltIGlmIHRoZSByZWFsIG9uZSBkb2Vzbid0IHdvcmsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vIElmIGl0J3MgYSBkYXRhIHByb3BlcnR5LgotICAg
ICAgICBpZiAob3ducyhkZXNjcmlwdG9yLCAidmFsdWUiKSkgewotICAgICAgICAgICAgLy8gZmFp
bCBzaWxlbnRseSBpZiAid3JpdGFibGUiLCAiZW51bWVyYWJsZSIsIG9yICJjb25maWd1cmFibGUi
Ci0gICAgICAgICAgICAvLyBhcmUgcmVxdWVzdGVkIGJ1dCBub3Qgc3VwcG9ydGVkCi0gICAgICAg
ICAgICAvKgotICAgICAgICAgICAgLy8gYWx0ZXJuYXRlIGFwcHJvYWNoOgotICAgICAgICAgICAg
aWYgKCAvLyBjYW4ndCBpbXBsZW1lbnQgdGhlc2UgZmVhdHVyZXM7IGFsbG93IGZhbHNlIGJ1dCBu
b3QgdHJ1ZQotICAgICAgICAgICAgICAgICEob3ducyhkZXNjcmlwdG9yLCAid3JpdGFibGUiKSA/
IGRlc2NyaXB0b3Iud3JpdGFibGUgOiB0cnVlKSB8fAotICAgICAgICAgICAgICAgICEob3ducyhk
ZXNjcmlwdG9yLCAiZW51bWVyYWJsZSIpID8gZGVzY3JpcHRvci5lbnVtZXJhYmxlIDogdHJ1ZSkg
fHwKLSAgICAgICAgICAgICAgICAhKG93bnMoZGVzY3JpcHRvciwgImNvbmZpZ3VyYWJsZSIpID8g
ZGVzY3JpcHRvci5jb25maWd1cmFibGUgOiB0cnVlKQotICAgICAgICAgICAgKQotICAgICAgICAg
ICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKAotICAgICAgICAgICAgICAgICAgICAiVGhpcyBp
bXBsZW1lbnRhdGlvbiBvZiBPYmplY3QuZGVmaW5lUHJvcGVydHkgZG9lcyBub3QgIiArCi0gICAg
ICAgICAgICAgICAgICAgICJzdXBwb3J0IGNvbmZpZ3VyYWJsZSwgZW51bWVyYWJsZSwgb3Igd3Jp
dGFibGUuIgotICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICAqLwotCi0gICAgICAgICAg
ICBpZiAoc3VwcG9ydHNBY2Nlc3NvcnMgJiYgKGxvb2t1cEdldHRlcihvYmplY3QsIHByb3BlcnR5
KSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb29rdXBTZXR0ZXIo
b2JqZWN0LCBwcm9wZXJ0eSkpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8vIEFz
IGFjY2Vzc29ycyBhcmUgc3VwcG9ydGVkIG9ubHkgb24gZW5naW5lcyBpbXBsZW1lbnRpbmcKLSAg
ICAgICAgICAgICAgICAvLyBgX19wcm90b19fYCB3ZSBjYW4gc2FmZWx5IG92ZXJyaWRlIGBfX3By
b3RvX19gIHdoaWxlIGRlZmluaW5nCi0gICAgICAgICAgICAgICAgLy8gYSBwcm9wZXJ0eSB0byBt
YWtlIHN1cmUgdGhhdCB3ZSBkb24ndCBoaXQgYW4gaW5oZXJpdGVkCi0gICAgICAgICAgICAgICAg
Ly8gYWNjZXNzb3IuCi0gICAgICAgICAgICAgICAgdmFyIHByb3RvdHlwZSA9IG9iamVjdC5fX3By
b3RvX187Ci0gICAgICAgICAgICAgICAgb2JqZWN0Ll9fcHJvdG9fXyA9IHByb3RvdHlwZU9mT2Jq
ZWN0OwotICAgICAgICAgICAgICAgIC8vIERlbGV0aW5nIGEgcHJvcGVydHkgYW55d2F5IHNpbmNl
IGdldHRlciAvIHNldHRlciBtYXkgYmUKLSAgICAgICAgICAgICAgICAvLyBkZWZpbmVkIG9uIG9i
amVjdCBpdHNlbGYuCi0gICAgICAgICAgICAgICAgZGVsZXRlIG9iamVjdFtwcm9wZXJ0eV07Ci0g
ICAgICAgICAgICAgICAgb2JqZWN0W3Byb3BlcnR5XSA9IGRlc2NyaXB0b3IudmFsdWU7Ci0gICAg
ICAgICAgICAgICAgLy8gU2V0dGluZyBvcmlnaW5hbCBgX19wcm90b19fYCBiYWNrIG5vdy4KLSAg
ICAgICAgICAgICAgICBvYmplY3QuX19wcm90b19fID0gcHJvdG90eXBlOwotICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgICBvYmplY3RbcHJvcGVydHldID0gZGVzY3JpcHRvci52
YWx1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmICgh
c3VwcG9ydHNBY2Nlc3NvcnMpIHsKLSAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9y
KEVSUl9BQ0NFU1NPUlNfTk9UX1NVUFBPUlRFRCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAvLyBJZiB3ZSBnb3QgdGhhdCBmYXIgdGhlbiBnZXR0ZXJzIGFuZCBzZXR0ZXJzIGNhbiBiZSBk
ZWZpbmVkICEhCi0gICAgICAgICAgICBpZiAob3ducyhkZXNjcmlwdG9yLCAiZ2V0IikpIHsKLSAg
ICAgICAgICAgICAgICBkZWZpbmVHZXR0ZXIob2JqZWN0LCBwcm9wZXJ0eSwgZGVzY3JpcHRvci5n
ZXQpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKG93bnMoZGVzY3JpcHRvciwgInNl
dCIpKSB7Ci0gICAgICAgICAgICAgICAgZGVmaW5lU2V0dGVyKG9iamVjdCwgcHJvcGVydHksIGRl
c2NyaXB0b3Iuc2V0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICByZXR1cm4g
b2JqZWN0OwotICAgIH07Ci19Ci0KLS8vIEVTNSAxNS4yLjMuNwotLy8gaHR0cDovL2VzNS5naXRo
dWIuY29tLyN4MTUuMi4zLjcKLWlmICghT2JqZWN0LmRlZmluZVByb3BlcnRpZXMpIHsKLSAgICBP
YmplY3QuZGVmaW5lUHJvcGVydGllcyA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXMob2JqZWN0
LCBwcm9wZXJ0aWVzKSB7Ci0gICAgICAgIGZvciAodmFyIHByb3BlcnR5IGluIHByb3BlcnRpZXMp
IHsKLSAgICAgICAgICAgIGlmIChvd25zKHByb3BlcnRpZXMsIHByb3BlcnR5KSAmJiBwcm9wZXJ0
eSAhPSAiX19wcm90b19fIikgewotICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0
eShvYmplY3QsIHByb3BlcnR5LCBwcm9wZXJ0aWVzW3Byb3BlcnR5XSk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG9iamVjdDsKLSAgICB9OwotfQotCi0vLyBFUzUg
MTUuMi4zLjgKLS8vIGh0dHA6Ly9lczUuZ2l0aHViLmNvbS8jeDE1LjIuMy44Ci1pZiAoIU9iamVj
dC5zZWFsKSB7Ci0gICAgT2JqZWN0LnNlYWwgPSBmdW5jdGlvbiBzZWFsKG9iamVjdCkgewotICAg
ICAgICAvLyB0aGlzIGlzIG1pc2xlYWRpbmcgYW5kIGJyZWFrcyBmZWF0dXJlLWRldGVjdGlvbiwg
YnV0Ci0gICAgICAgIC8vIGFsbG93cyAic2VjdXJhYmxlIiBjb2RlIHRvICJncmFjZWZ1bGx5IiBk
ZWdyYWRlIHRvIHdvcmtpbmcKLSAgICAgICAgLy8gYnV0IGluc2VjdXJlIGNvZGUuCi0gICAgICAg
IHJldHVybiBvYmplY3Q7Ci0gICAgfTsKLX0KLQotLy8gRVM1IDE1LjIuMy45Ci0vLyBodHRwOi8v
ZXM1LmdpdGh1Yi5jb20vI3gxNS4yLjMuOQotaWYgKCFPYmplY3QuZnJlZXplKSB7Ci0gICAgT2Jq
ZWN0LmZyZWV6ZSA9IGZ1bmN0aW9uIGZyZWV6ZShvYmplY3QpIHsKLSAgICAgICAgLy8gdGhpcyBp
cyBtaXNsZWFkaW5nIGFuZCBicmVha3MgZmVhdHVyZS1kZXRlY3Rpb24sIGJ1dAotICAgICAgICAv
LyBhbGxvd3MgInNlY3VyYWJsZSIgY29kZSB0byAiZ3JhY2VmdWxseSIgZGVncmFkZSB0byB3b3Jr
aW5nCi0gICAgICAgIC8vIGJ1dCBpbnNlY3VyZSBjb2RlLgotICAgICAgICByZXR1cm4gb2JqZWN0
OwotICAgIH07Ci19Ci0KLS8vIGRldGVjdCBhIFJoaW5vIGJ1ZyBhbmQgcGF0Y2ggaXQKLXRyeSB7
Ci0gICAgT2JqZWN0LmZyZWV6ZShmdW5jdGlvbiAoKSB7fSk7Ci19IGNhdGNoIChleGNlcHRpb24p
IHsKLSAgICBPYmplY3QuZnJlZXplID0gKGZ1bmN0aW9uIGZyZWV6ZShmcmVlemVPYmplY3QpIHsK
LSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIGZyZWV6ZShvYmplY3QpIHsKLSAgICAgICAgICAgIGlm
ICh0eXBlb2Ygb2JqZWN0ID09ICJmdW5jdGlvbiIpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4g
b2JqZWN0OwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZnJl
ZXplT2JqZWN0KG9iamVjdCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0gICAgfSkoT2Jq
ZWN0LmZyZWV6ZSk7Ci19Ci0KLS8vIEVTNSAxNS4yLjMuMTAKLS8vIGh0dHA6Ly9lczUuZ2l0aHVi
LmNvbS8jeDE1LjIuMy4xMAotaWYgKCFPYmplY3QucHJldmVudEV4dGVuc2lvbnMpIHsKLSAgICBP
YmplY3QucHJldmVudEV4dGVuc2lvbnMgPSBmdW5jdGlvbiBwcmV2ZW50RXh0ZW5zaW9ucyhvYmpl
Y3QpIHsKLSAgICAgICAgLy8gdGhpcyBpcyBtaXNsZWFkaW5nIGFuZCBicmVha3MgZmVhdHVyZS1k
ZXRlY3Rpb24sIGJ1dAotICAgICAgICAvLyBhbGxvd3MgInNlY3VyYWJsZSIgY29kZSB0byAiZ3Jh
Y2VmdWxseSIgZGVncmFkZSB0byB3b3JraW5nCi0gICAgICAgIC8vIGJ1dCBpbnNlY3VyZSBjb2Rl
LgotICAgICAgICByZXR1cm4gb2JqZWN0OwotICAgIH07Ci19Ci0KLS8vIEVTNSAxNS4yLjMuMTEK
LS8vIGh0dHA6Ly9lczUuZ2l0aHViLmNvbS8jeDE1LjIuMy4xMQotaWYgKCFPYmplY3QuaXNTZWFs
ZWQpIHsKLSAgICBPYmplY3QuaXNTZWFsZWQgPSBmdW5jdGlvbiBpc1NlYWxlZChvYmplY3QpIHsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH07Ci19Ci0KLS8vIEVTNSAxNS4yLjMuMTIKLS8v
IGh0dHA6Ly9lczUuZ2l0aHViLmNvbS8jeDE1LjIuMy4xMgotaWYgKCFPYmplY3QuaXNGcm96ZW4p
IHsKLSAgICBPYmplY3QuaXNGcm96ZW4gPSBmdW5jdGlvbiBpc0Zyb3plbihvYmplY3QpIHsKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH07Ci19Ci0KLS8vIEVTNSAxNS4yLjMuMTMKLS8vIGh0
dHA6Ly9lczUuZ2l0aHViLmNvbS8jeDE1LjIuMy4xMwotaWYgKCFPYmplY3QuaXNFeHRlbnNpYmxl
KSB7Ci0gICAgT2JqZWN0LmlzRXh0ZW5zaWJsZSA9IGZ1bmN0aW9uIGlzRXh0ZW5zaWJsZShvYmpl
Y3QpIHsKLSAgICAgICAgLy8gMS4gSWYgVHlwZShPKSBpcyBub3QgT2JqZWN0IHRocm93IGEgVHlw
ZUVycm9yIGV4Y2VwdGlvbi4KLSAgICAgICAgaWYgKE9iamVjdChvYmplY3QpICE9PSBvYmplY3Qp
IHsKLSAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoKTsgLy8gVE9ETyBtZXNzYWdlCi0g
ICAgICAgIH0KLSAgICAgICAgLy8gMi4gUmV0dXJuIHRoZSBCb29sZWFuIHZhbHVlIG9mIHRoZSBb
W0V4dGVuc2libGVdXSBpbnRlcm5hbCBwcm9wZXJ0eSBvZiBPLgotICAgICAgICB2YXIgbmFtZSA9
ICcnOwotICAgICAgICB3aGlsZSAob3ducyhvYmplY3QsIG5hbWUpKSB7Ci0gICAgICAgICAgICBu
YW1lICs9ICc/JzsKLSAgICAgICAgfQotICAgICAgICBvYmplY3RbbmFtZV0gPSB0cnVlOwotICAg
ICAgICB2YXIgcmV0dXJuVmFsdWUgPSBvd25zKG9iamVjdCwgbmFtZSk7Ci0gICAgICAgIGRlbGV0
ZSBvYmplY3RbbmFtZV07Ci0gICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTsKLSAgICB9OwotfQot
Ci19KTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvZGVwZW5kZW5jeS1leGFtcGxlcy9mbGlnaHQvYm93ZXJfY29tcG9uZW50cy9lczUt
c2hpbS9lczUtc2hpbS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvZGVwZW5kZW5jeS1leGFtcGxlcy9mbGlnaHQvYm93ZXJfY29tcG9uZW50cy9lczUt
c2hpbS9lczUtc2hpbS5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDU5MTk3ZGI0
NWY2NTNiMTg5NjBhOGU4MjI0MzFhMWYyMmVkMzk3Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2RlcGVuZGVuY3ktZXhhbXBsZXMvZmxpZ2h0L2Jvd2VyX2NvbXBvbmVudHMv
ZXM1LXNoaW0vZXM1LXNoaW0uanMKKysrIC9kZXYvbnVsbApAQCAtMSw3NzggKzAsMCBAQAotLy8g
Q29weXJpZ2h0IDIwMDktMjAxMiBieSBjb250cmlidXRvcnMsIE1JVCBMaWNlbnNlCi0vLyB2aW06
IHRzPTQgc3RzPTQgc3c9NCBleHBhbmR0YWIKLQotLy8gTW9kdWxlIHN5c3RlbXMgbWFnaWMgZGFu
Y2UKLShmdW5jdGlvbiAoZGVmaW5pdGlvbikgewotICAgIC8vIFJlcXVpcmVKUwotICAgIGlmICh0
eXBlb2YgZGVmaW5lID09ICJmdW5jdGlvbiIpIHsKLSAgICAgICAgZGVmaW5lKGRlZmluaXRpb24p
OwotICAgIC8vIFlVSTMKLSAgICB9IGVsc2UgaWYgKHR5cGVvZiBZVUkgPT0gImZ1bmN0aW9uIikg
ewotICAgICAgICBZVUkuYWRkKCJlczUiLCBkZWZpbml0aW9uKTsKLSAgICAvLyBDb21tb25KUyBh
bmQgPHNjcmlwdD4KLSAgICB9IGVsc2UgewotICAgICAgICBkZWZpbml0aW9uKCk7Ci0gICAgfQot
fSkoZnVuY3Rpb24gKCkgewotCi0vKioKLSAqIEJyaW5ncyBhbiBlbnZpcm9ubWVudCBhcyBjbG9z
ZSB0byBFQ01BU2NyaXB0IDUgY29tcGxpYW5jZQotICogYXMgaXMgcG9zc2libGUgd2l0aCB0aGUg
ZmFjaWxpdGllcyBvZiBlcnN0d2hpbGUgZW5naW5lcy4KLSAqCi0gKiBBbm5vdGF0ZWQgRVM1OiBo
dHRwOi8vZXM1LmdpdGh1Yi5jb20vIChzcGVjaWZpYyBsaW5rcyBiZWxvdykKLSAqIEVTNSBTcGVj
OiBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvcHVibGljYXRpb25zL2ZpbGVzL0VD
TUEtU1QvRWNtYS0yNjIucGRmCi0gKiBSZXF1aXJlZCByZWFkaW5nOiBodHRwOi8vamF2YXNjcmlw
dHdlYmxvZy53b3JkcHJlc3MuY29tLzIwMTEvMTIvMDUvZXh0ZW5kaW5nLWphdmFzY3JpcHQtbmF0
aXZlcy8KLSAqLwotCi0vLwotLy8gRnVuY3Rpb24KLS8vID09PT09PT09Ci0vLwotCi0vLyBFUy01
IDE1LjMuNC41Ci0vLyBodHRwOi8vZXM1LmdpdGh1Yi5jb20vI3gxNS4zLjQuNQotCi1pZiAoIUZ1
bmN0aW9uLnByb3RvdHlwZS5iaW5kKSB7Ci0gICAgRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQgPSBm
dW5jdGlvbiBiaW5kKHRoYXQpIHsgLy8gLmxlbmd0aCBpcyAxCi0gICAgICAgIC8vIDEuIExldCBU
YXJnZXQgYmUgdGhlIHRoaXMgdmFsdWUuCi0gICAgICAgIHZhciB0YXJnZXQgPSB0aGlzOwotICAg
ICAgICAvLyAyLiBJZiBJc0NhbGxhYmxlKFRhcmdldCkgaXMgZmFsc2UsIHRocm93IGEgVHlwZUVy
cm9yIGV4Y2VwdGlvbi4KLSAgICAgICAgaWYgKHR5cGVvZiB0YXJnZXQgIT0gImZ1bmN0aW9uIikg
ewotICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24ucHJvdG90eXBlLmJp
bmQgY2FsbGVkIG9uIGluY29tcGF0aWJsZSAiICsgdGFyZ2V0KTsKLSAgICAgICAgfQotICAgICAg
ICAvLyAzLiBMZXQgQSBiZSBhIG5ldyAocG9zc2libHkgZW1wdHkpIGludGVybmFsIGxpc3Qgb2Yg
YWxsIG9mIHRoZQotICAgICAgICAvLyAgIGFyZ3VtZW50IHZhbHVlcyBwcm92aWRlZCBhZnRlciB0
aGlzQXJnIChhcmcxLCBhcmcyIGV0YyksIGluIG9yZGVyLgotICAgICAgICAvLyBYWFggc2xpY2Vk
QXJncyB3aWxsIHN0YW5kIGluIGZvciAiQSIgaWYgdXNlZAotICAgICAgICB2YXIgYXJncyA9IHNs
aWNlLmNhbGwoYXJndW1lbnRzLCAxKTsgLy8gZm9yIG5vcm1hbCBjYWxsCi0gICAgICAgIC8vIDQu
IExldCBGIGJlIGEgbmV3IG5hdGl2ZSBFQ01BU2NyaXB0IG9iamVjdC4KLSAgICAgICAgLy8gMTEu
IFNldCB0aGUgW1tQcm90b3R5cGVdXSBpbnRlcm5hbCBwcm9wZXJ0eSBvZiBGIHRvIHRoZSBzdGFu
ZGFyZAotICAgICAgICAvLyAgIGJ1aWx0LWluIEZ1bmN0aW9uIHByb3RvdHlwZSBvYmplY3QgYXMg
c3BlY2lmaWVkIGluIDE1LjMuMy4xLgotICAgICAgICAvLyAxMi4gU2V0IHRoZSBbW0NhbGxdXSBp
bnRlcm5hbCBwcm9wZXJ0eSBvZiBGIGFzIGRlc2NyaWJlZCBpbgotICAgICAgICAvLyAgIDE1LjMu
NC41LjEuCi0gICAgICAgIC8vIDEzLiBTZXQgdGhlIFtbQ29uc3RydWN0XV0gaW50ZXJuYWwgcHJv
cGVydHkgb2YgRiBhcyBkZXNjcmliZWQgaW4KLSAgICAgICAgLy8gICAxNS4zLjQuNS4yLgotICAg
ICAgICAvLyAxNC4gU2V0IHRoZSBbW0hhc0luc3RhbmNlXV0gaW50ZXJuYWwgcHJvcGVydHkgb2Yg
RiBhcyBkZXNjcmliZWQgaW4KLSAgICAgICAgLy8gICAxNS4zLjQuNS4zLgotICAgICAgICB2YXIg
Ym91bmQgPSBmdW5jdGlvbiAoKSB7Ci0KLSAgICAgICAgICAgIGlmICh0aGlzIGluc3RhbmNlb2Yg
Ym91bmQpIHsKLSAgICAgICAgICAgICAgICAvLyAxNS4zLjQuNS4yIFtbQ29uc3RydWN0XV0KLSAg
ICAgICAgICAgICAgICAvLyBXaGVuIHRoZSBbW0NvbnN0cnVjdF1dIGludGVybmFsIG1ldGhvZCBv
ZiBhIGZ1bmN0aW9uIG9iamVjdCwKLSAgICAgICAgICAgICAgICAvLyBGIHRoYXQgd2FzIGNyZWF0
ZWQgdXNpbmcgdGhlIGJpbmQgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggYQotICAgICAgICAgICAg
ICAgIC8vIGxpc3Qgb2YgYXJndW1lbnRzIEV4dHJhQXJncywgdGhlIGZvbGxvd2luZyBzdGVwcyBh
cmUgdGFrZW46Ci0gICAgICAgICAgICAgICAgLy8gMS4gTGV0IHRhcmdldCBiZSB0aGUgdmFsdWUg
b2YgRidzIFtbVGFyZ2V0RnVuY3Rpb25dXQotICAgICAgICAgICAgICAgIC8vICAgaW50ZXJuYWwg
cHJvcGVydHkuCi0gICAgICAgICAgICAgICAgLy8gMi4gSWYgdGFyZ2V0IGhhcyBubyBbW0NvbnN0
cnVjdF1dIGludGVybmFsIG1ldGhvZCwgYQotICAgICAgICAgICAgICAgIC8vICAgVHlwZUVycm9y
IGV4Y2VwdGlvbiBpcyB0aHJvd24uCi0gICAgICAgICAgICAgICAgLy8gMy4gTGV0IGJvdW5kQXJn
cyBiZSB0aGUgdmFsdWUgb2YgRidzIFtbQm91bmRBcmdzXV0gaW50ZXJuYWwKLSAgICAgICAgICAg
ICAgICAvLyAgIHByb3BlcnR5LgotICAgICAgICAgICAgICAgIC8vIDQuIExldCBhcmdzIGJlIGEg
bmV3IGxpc3QgY29udGFpbmluZyB0aGUgc2FtZSB2YWx1ZXMgYXMgdGhlCi0gICAgICAgICAgICAg
ICAgLy8gICBsaXN0IGJvdW5kQXJncyBpbiB0aGUgc2FtZSBvcmRlciBmb2xsb3dlZCBieSB0aGUg
c2FtZQotICAgICAgICAgICAgICAgIC8vICAgdmFsdWVzIGFzIHRoZSBsaXN0IEV4dHJhQXJncyBp
biB0aGUgc2FtZSBvcmRlci4KLSAgICAgICAgICAgICAgICAvLyA1LiBSZXR1cm4gdGhlIHJlc3Vs
dCBvZiBjYWxsaW5nIHRoZSBbW0NvbnN0cnVjdF1dIGludGVybmFsCi0gICAgICAgICAgICAgICAg
Ly8gICBtZXRob2Qgb2YgdGFyZ2V0IHByb3ZpZGluZyBhcmdzIGFzIHRoZSBhcmd1bWVudHMuCi0K
LSAgICAgICAgICAgICAgICB2YXIgRiA9IGZ1bmN0aW9uKCl7fTsKLSAgICAgICAgICAgICAgICBG
LnByb3RvdHlwZSA9IHRhcmdldC5wcm90b3R5cGU7Ci0gICAgICAgICAgICAgICAgdmFyIHNlbGYg
PSBuZXcgRjsKLQotICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSB0YXJnZXQuYXBwbHkoCi0g
ICAgICAgICAgICAgICAgICAgIHNlbGYsCi0gICAgICAgICAgICAgICAgICAgIGFyZ3MuY29uY2F0
KHNsaWNlLmNhbGwoYXJndW1lbnRzKSkKLSAgICAgICAgICAgICAgICApOwotICAgICAgICAgICAg
ICAgIGlmIChPYmplY3QocmVzdWx0KSA9PT0gcmVzdWx0KSB7Ci0gICAgICAgICAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVy
biBzZWxmOwotCi0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIC8vIDE1LjMu
NC41LjEgW1tDYWxsXV0KLSAgICAgICAgICAgICAgICAvLyBXaGVuIHRoZSBbW0NhbGxdXSBpbnRl
cm5hbCBtZXRob2Qgb2YgYSBmdW5jdGlvbiBvYmplY3QsIEYsCi0gICAgICAgICAgICAgICAgLy8g
d2hpY2ggd2FzIGNyZWF0ZWQgdXNpbmcgdGhlIGJpbmQgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGgg
YQotICAgICAgICAgICAgICAgIC8vIHRoaXMgdmFsdWUgYW5kIGEgbGlzdCBvZiBhcmd1bWVudHMg
RXh0cmFBcmdzLCB0aGUgZm9sbG93aW5nCi0gICAgICAgICAgICAgICAgLy8gc3RlcHMgYXJlIHRh
a2VuOgotICAgICAgICAgICAgICAgIC8vIDEuIExldCBib3VuZEFyZ3MgYmUgdGhlIHZhbHVlIG9m
IEYncyBbW0JvdW5kQXJnc11dIGludGVybmFsCi0gICAgICAgICAgICAgICAgLy8gICBwcm9wZXJ0
eS4KLSAgICAgICAgICAgICAgICAvLyAyLiBMZXQgYm91bmRUaGlzIGJlIHRoZSB2YWx1ZSBvZiBG
J3MgW1tCb3VuZFRoaXNdXSBpbnRlcm5hbAotICAgICAgICAgICAgICAgIC8vICAgcHJvcGVydHku
Ci0gICAgICAgICAgICAgICAgLy8gMy4gTGV0IHRhcmdldCBiZSB0aGUgdmFsdWUgb2YgRidzIFtb
VGFyZ2V0RnVuY3Rpb25dXSBpbnRlcm5hbAotICAgICAgICAgICAgICAgIC8vICAgcHJvcGVydHku
Ci0gICAgICAgICAgICAgICAgLy8gNC4gTGV0IGFyZ3MgYmUgYSBuZXcgbGlzdCBjb250YWluaW5n
IHRoZSBzYW1lIHZhbHVlcyBhcyB0aGUKLSAgICAgICAgICAgICAgICAvLyAgIGxpc3QgYm91bmRB
cmdzIGluIHRoZSBzYW1lIG9yZGVyIGZvbGxvd2VkIGJ5IHRoZSBzYW1lCi0gICAgICAgICAgICAg
ICAgLy8gICB2YWx1ZXMgYXMgdGhlIGxpc3QgRXh0cmFBcmdzIGluIHRoZSBzYW1lIG9yZGVyLgot
ICAgICAgICAgICAgICAgIC8vIDUuIFJldHVybiB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlIFtb
Q2FsbF1dIGludGVybmFsIG1ldGhvZAotICAgICAgICAgICAgICAgIC8vICAgb2YgdGFyZ2V0IHBy
b3ZpZGluZyBib3VuZFRoaXMgYXMgdGhlIHRoaXMgdmFsdWUgYW5kCi0gICAgICAgICAgICAgICAg
Ly8gICBwcm92aWRpbmcgYXJncyBhcyB0aGUgYXJndW1lbnRzLgotCi0gICAgICAgICAgICAgICAg
Ly8gZXF1aXY6IHRhcmdldC5jYWxsKHRoaXMsIC4uLmJvdW5kQXJncywgLi4uYXJncykKLSAgICAg
ICAgICAgICAgICByZXR1cm4gdGFyZ2V0LmFwcGx5KAotICAgICAgICAgICAgICAgICAgICB0aGF0
LAotICAgICAgICAgICAgICAgICAgICBhcmdzLmNvbmNhdChzbGljZS5jYWxsKGFyZ3VtZW50cykp
Ci0gICAgICAgICAgICAgICAgKTsKLQotICAgICAgICAgICAgfQotCi0gICAgICAgIH07Ci0gICAg
ICAgIC8vIFhYWCBib3VuZC5sZW5ndGggaXMgbmV2ZXIgd3JpdGFibGUsIHNvIGRvbid0IGV2ZW4g
dHJ5Ci0gICAgICAgIC8vCi0gICAgICAgIC8vIDE1LiBJZiB0aGUgW1tDbGFzc11dIGludGVybmFs
IHByb3BlcnR5IG9mIFRhcmdldCBpcyAiRnVuY3Rpb24iLCB0aGVuCi0gICAgICAgIC8vICAgICBh
LiBMZXQgTCBiZSB0aGUgbGVuZ3RoIHByb3BlcnR5IG9mIFRhcmdldCBtaW51cyB0aGUgbGVuZ3Ro
IG9mIEEuCi0gICAgICAgIC8vICAgICBiLiBTZXQgdGhlIGxlbmd0aCBvd24gcHJvcGVydHkgb2Yg
RiB0byBlaXRoZXIgMCBvciBMLCB3aGljaGV2ZXIgaXMKLSAgICAgICAgLy8gICAgICAgbGFyZ2Vy
LgotICAgICAgICAvLyAxNi4gRWxzZSBzZXQgdGhlIGxlbmd0aCBvd24gcHJvcGVydHkgb2YgRiB0
byAwLgotICAgICAgICAvLyAxNy4gU2V0IHRoZSBhdHRyaWJ1dGVzIG9mIHRoZSBsZW5ndGggb3du
IHByb3BlcnR5IG9mIEYgdG8gdGhlIHZhbHVlcwotICAgICAgICAvLyAgIHNwZWNpZmllZCBpbiAx
NS4zLjUuMS4KLQotICAgICAgICAvLyBUT0RPCi0gICAgICAgIC8vIDE4LiBTZXQgdGhlIFtbRXh0
ZW5zaWJsZV1dIGludGVybmFsIHByb3BlcnR5IG9mIEYgdG8gdHJ1ZS4KLQotICAgICAgICAvLyBU
T0RPCi0gICAgICAgIC8vIDE5LiBMZXQgdGhyb3dlciBiZSB0aGUgW1tUaHJvd1R5cGVFcnJvcl1d
IGZ1bmN0aW9uIE9iamVjdCAoMTMuMi4zKS4KLSAgICAgICAgLy8gMjAuIENhbGwgdGhlIFtbRGVm
aW5lT3duUHJvcGVydHldXSBpbnRlcm5hbCBtZXRob2Qgb2YgRiB3aXRoCi0gICAgICAgIC8vICAg
YXJndW1lbnRzICJjYWxsZXIiLCBQcm9wZXJ0eURlc2NyaXB0b3Ige1tbR2V0XV06IHRocm93ZXIs
IFtbU2V0XV06Ci0gICAgICAgIC8vICAgdGhyb3dlciwgW1tFbnVtZXJhYmxlXV06IGZhbHNlLCBb
W0NvbmZpZ3VyYWJsZV1dOiBmYWxzZX0sIGFuZAotICAgICAgICAvLyAgIGZhbHNlLgotICAgICAg
ICAvLyAyMS4gQ2FsbCB0aGUgW1tEZWZpbmVPd25Qcm9wZXJ0eV1dIGludGVybmFsIG1ldGhvZCBv
ZiBGIHdpdGgKLSAgICAgICAgLy8gICBhcmd1bWVudHMgImFyZ3VtZW50cyIsIFByb3BlcnR5RGVz
Y3JpcHRvciB7W1tHZXRdXTogdGhyb3dlciwKLSAgICAgICAgLy8gICBbW1NldF1dOiB0aHJvd2Vy
LCBbW0VudW1lcmFibGVdXTogZmFsc2UsIFtbQ29uZmlndXJhYmxlXV06IGZhbHNlfSwKLSAgICAg
ICAgLy8gICBhbmQgZmFsc2UuCi0KLSAgICAgICAgLy8gVE9ETwotICAgICAgICAvLyBOT1RFIEZ1
bmN0aW9uIG9iamVjdHMgY3JlYXRlZCB1c2luZyBGdW5jdGlvbi5wcm90b3R5cGUuYmluZCBkbyBu
b3QKLSAgICAgICAgLy8gaGF2ZSBhIHByb3RvdHlwZSBwcm9wZXJ0eSBvciB0aGUgW1tDb2RlXV0s
IFtbRm9ybWFsUGFyYW1ldGVyc11dLCBhbmQKLSAgICAgICAgLy8gW1tTY29wZV1dIGludGVybmFs
IHByb3BlcnRpZXMuCi0gICAgICAgIC8vIFhYWCBjYW4ndCBkZWxldGUgcHJvdG90eXBlIGluIHB1
cmUtanMuCi0KLSAgICAgICAgLy8gMjIuIFJldHVybiBGLgotICAgICAgICByZXR1cm4gYm91bmQ7
Ci0gICAgfTsKLX0KLQotLy8gU2hvcnRjdXQgdG8gYW4gb2Z0ZW4gYWNjZXNzZWQgcHJvcGVydGll
cywgaW4gb3JkZXIgdG8gYXZvaWQgbXVsdGlwbGUKLS8vIGRlcmVmZXJlbmNlIHRoYXQgY29zdHMg
dW5pdmVyc2FsbHkuCi0vLyBfUGxlYXNlIG5vdGU6IFNob3J0Y3V0cyBhcmUgZGVmaW5lZCBhZnRl
ciBgRnVuY3Rpb24ucHJvdG90eXBlLmJpbmRgIGFzIHdlCi0vLyB1cyBpdCBpbiBkZWZpbmluZyBz
aG9ydGN1dHMuCi12YXIgY2FsbCA9IEZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsOwotdmFyIHByb3Rv
dHlwZU9mQXJyYXkgPSBBcnJheS5wcm90b3R5cGU7Ci12YXIgcHJvdG90eXBlT2ZPYmplY3QgPSBP
YmplY3QucHJvdG90eXBlOwotdmFyIHNsaWNlID0gcHJvdG90eXBlT2ZBcnJheS5zbGljZTsKLS8v
IEhhdmluZyBhIHRvU3RyaW5nIGxvY2FsIHZhcmlhYmxlIG5hbWUgYnJlYWtzIGluIE9wZXJhIHNv
IHVzZSBfdG9TdHJpbmcuCi12YXIgX3RvU3RyaW5nID0gY2FsbC5iaW5kKHByb3RvdHlwZU9mT2Jq
ZWN0LnRvU3RyaW5nKTsKLXZhciBvd25zID0gY2FsbC5iaW5kKHByb3RvdHlwZU9mT2JqZWN0Lmhh
c093blByb3BlcnR5KTsKLQotLy8gSWYgSlMgZW5naW5lIHN1cHBvcnRzIGFjY2Vzc29ycyBjcmVh
dGluZyBzaG9ydGN1dHMuCi12YXIgZGVmaW5lR2V0dGVyOwotdmFyIGRlZmluZVNldHRlcjsKLXZh
ciBsb29rdXBHZXR0ZXI7Ci12YXIgbG9va3VwU2V0dGVyOwotdmFyIHN1cHBvcnRzQWNjZXNzb3Jz
OwotaWYgKChzdXBwb3J0c0FjY2Vzc29ycyA9IG93bnMocHJvdG90eXBlT2ZPYmplY3QsICJfX2Rl
ZmluZUdldHRlcl9fIikpKSB7Ci0gICAgZGVmaW5lR2V0dGVyID0gY2FsbC5iaW5kKHByb3RvdHlw
ZU9mT2JqZWN0Ll9fZGVmaW5lR2V0dGVyX18pOwotICAgIGRlZmluZVNldHRlciA9IGNhbGwuYmlu
ZChwcm90b3R5cGVPZk9iamVjdC5fX2RlZmluZVNldHRlcl9fKTsKLSAgICBsb29rdXBHZXR0ZXIg
PSBjYWxsLmJpbmQocHJvdG90eXBlT2ZPYmplY3QuX19sb29rdXBHZXR0ZXJfXyk7Ci0gICAgbG9v
a3VwU2V0dGVyID0gY2FsbC5iaW5kKHByb3RvdHlwZU9mT2JqZWN0Ll9fbG9va3VwU2V0dGVyX18p
OwotfQotCi0vLwotLy8gQXJyYXkKLS8vID09PT09Ci0vLwotCi0vLyBFUzUgMTUuNC4zLjIKLS8v
IGh0dHA6Ly9lczUuZ2l0aHViLmNvbS8jeDE1LjQuMy4yCi0vLyBodHRwczovL2RldmVsb3Blci5t
b3ppbGxhLm9yZy9lbi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9BcnJheS9p
c0FycmF5Ci1pZiAoIUFycmF5LmlzQXJyYXkpIHsKLSAgICBBcnJheS5pc0FycmF5ID0gZnVuY3Rp
b24gaXNBcnJheShvYmopIHsKLSAgICAgICAgcmV0dXJuIF90b1N0cmluZyhvYmopID09ICJbb2Jq
ZWN0IEFycmF5XSI7Ci0gICAgfTsKLX0KLQotLy8gVGhlIElzQ2FsbGFibGUoKSBjaGVjayBpbiB0
aGUgQXJyYXkgZnVuY3Rpb25zCi0vLyBoYXMgYmVlbiByZXBsYWNlZCB3aXRoIGEgc3RyaWN0IGNo
ZWNrIG9uIHRoZQotLy8gaW50ZXJuYWwgY2xhc3Mgb2YgdGhlIG9iamVjdCB0byB0cmFwIGNhc2Vz
IHdoZXJlCi0vLyB0aGUgcHJvdmlkZWQgZnVuY3Rpb24gd2FzIGFjdHVhbGx5IGEgcmVndWxhcgot
Ly8gZXhwcmVzc2lvbiBsaXRlcmFsLCB3aGljaCBpbiBWOCBhbmQKLS8vIEphdmFTY3JpcHRDb3Jl
IGlzIGEgdHlwZW9mICJmdW5jdGlvbiIuICBPbmx5IGluCi0vLyBWOCBhcmUgcmVndWxhciBleHBy
ZXNzaW9uIGxpdGVyYWxzIHBlcm1pdHRlZCBhcwotLy8gcmVkdWNlIHBhcmFtZXRlcnMsIHNvIGl0
IGlzIGRlc2lyYWJsZSBpbiB0aGUKLS8vIGdlbmVyYWwgY2FzZSBmb3IgdGhlIHNoaW0gdG8gbWF0
Y2ggdGhlIG1vcmUKLS8vIHN0cmljdCBhbmQgY29tbW9uIGJlaGF2aW9yIG9mIHJlamVjdGluZyBy
ZWd1bGFyCi0vLyBleHByZXNzaW9ucy4KLQotLy8gRVM1IDE1LjQuNC4xOAotLy8gaHR0cDovL2Vz
NS5naXRodWIuY29tLyN4MTUuNC40LjE4Ci0vLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9y
Zy9lbi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9hcnJheS9mb3JFYWNoCi1p
ZiAoIUFycmF5LnByb3RvdHlwZS5mb3JFYWNoKSB7Ci0gICAgQXJyYXkucHJvdG90eXBlLmZvckVh
Y2ggPSBmdW5jdGlvbiBmb3JFYWNoKGZ1biAvKiwgdGhpc3AqLykgewotICAgICAgICB2YXIgc2Vs
ZiA9IHRvT2JqZWN0KHRoaXMpLAotICAgICAgICAgICAgdGhpc3AgPSBhcmd1bWVudHNbMV0sCi0g
ICAgICAgICAgICBpID0gLTEsCi0gICAgICAgICAgICBsZW5ndGggPSBzZWxmLmxlbmd0aCA+Pj4g
MDsKLQotICAgICAgICAvLyBJZiBubyBjYWxsYmFjayBmdW5jdGlvbiBvciBpZiBjYWxsYmFjayBp
cyBub3QgYSBjYWxsYWJsZSBmdW5jdGlvbgotICAgICAgICBpZiAoX3RvU3RyaW5nKGZ1bikgIT0g
IltvYmplY3QgRnVuY3Rpb25dIikgewotICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigp
OyAvLyBUT0RPIG1lc3NhZ2UKLSAgICAgICAgfQotCi0gICAgICAgIHdoaWxlICgrK2kgPCBsZW5n
dGgpIHsKLSAgICAgICAgICAgIGlmIChpIGluIHNlbGYpIHsKLSAgICAgICAgICAgICAgICAvLyBJ
bnZva2UgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHdpdGggY2FsbCwgcGFzc2luZyBhcmd1bWVudHM6
Ci0gICAgICAgICAgICAgICAgLy8gY29udGV4dCwgcHJvcGVydHkgdmFsdWUsIHByb3BlcnR5IGtl
eSwgdGhpc0FyZyBvYmplY3QgY29udGV4dAotICAgICAgICAgICAgICAgIGZ1bi5jYWxsKHRoaXNw
LCBzZWxmW2ldLCBpLCBzZWxmKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH07Ci19
Ci0KLS8vIEVTNSAxNS40LjQuMTkKLS8vIGh0dHA6Ly9lczUuZ2l0aHViLmNvbS8jeDE1LjQuNC4x
OQotLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4vQ29yZV9KYXZhU2NyaXB0XzEu
NV9SZWZlcmVuY2UvT2JqZWN0cy9BcnJheS9tYXAKLWlmICghQXJyYXkucHJvdG90eXBlLm1hcCkg
ewotICAgIEFycmF5LnByb3RvdHlwZS5tYXAgPSBmdW5jdGlvbiBtYXAoZnVuIC8qLCB0aGlzcCov
KSB7Ci0gICAgICAgIHZhciBzZWxmID0gdG9PYmplY3QodGhpcyksCi0gICAgICAgICAgICBsZW5n
dGggPSBzZWxmLmxlbmd0aCA+Pj4gMCwKLSAgICAgICAgICAgIHJlc3VsdCA9IEFycmF5KGxlbmd0
aCksCi0gICAgICAgICAgICB0aGlzcCA9IGFyZ3VtZW50c1sxXTsKLQotICAgICAgICAvLyBJZiBu
byBjYWxsYmFjayBmdW5jdGlvbiBvciBpZiBjYWxsYmFjayBpcyBub3QgYSBjYWxsYWJsZSBmdW5j
dGlvbgotICAgICAgICBpZiAoX3RvU3RyaW5nKGZ1bikgIT0gIltvYmplY3QgRnVuY3Rpb25dIikg
ewotICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihmdW4gKyAiIGlzIG5vdCBhIGZ1bmN0
aW9uIik7Ci0gICAgICAgIH0KLQotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsg
aSsrKSB7Ci0gICAgICAgICAgICBpZiAoaSBpbiBzZWxmKQotICAgICAgICAgICAgICAgIHJlc3Vs
dFtpXSA9IGZ1bi5jYWxsKHRoaXNwLCBzZWxmW2ldLCBpLCBzZWxmKTsKLSAgICAgICAgfQotICAg
ICAgICByZXR1cm4gcmVzdWx0OwotICAgIH07Ci19Ci0KLS8vIEVTNSAxNS40LjQuMjAKLS8vIGh0
dHA6Ly9lczUuZ2l0aHViLmNvbS8jeDE1LjQuNC4yMAotLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96
aWxsYS5vcmcvZW4vQ29yZV9KYXZhU2NyaXB0XzEuNV9SZWZlcmVuY2UvT2JqZWN0cy9BcnJheS9m
aWx0ZXIKLWlmICghQXJyYXkucHJvdG90eXBlLmZpbHRlcikgewotICAgIEFycmF5LnByb3RvdHlw
ZS5maWx0ZXIgPSBmdW5jdGlvbiBmaWx0ZXIoZnVuIC8qLCB0aGlzcCAqLykgewotICAgICAgICB2
YXIgc2VsZiA9IHRvT2JqZWN0KHRoaXMpLAotICAgICAgICAgICAgbGVuZ3RoID0gc2VsZi5sZW5n
dGggPj4+IDAsCi0gICAgICAgICAgICByZXN1bHQgPSBbXSwKLSAgICAgICAgICAgIHZhbHVlLAot
ICAgICAgICAgICAgdGhpc3AgPSBhcmd1bWVudHNbMV07Ci0KLSAgICAgICAgLy8gSWYgbm8gY2Fs
bGJhY2sgZnVuY3Rpb24gb3IgaWYgY2FsbGJhY2sgaXMgbm90IGEgY2FsbGFibGUgZnVuY3Rpb24K
LSAgICAgICAgaWYgKF90b1N0cmluZyhmdW4pICE9ICJbb2JqZWN0IEZ1bmN0aW9uXSIpIHsKLSAg
ICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoZnVuICsgIiBpcyBub3QgYSBmdW5jdGlvbiIp
OwotICAgICAgICB9Ci0KLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykg
ewotICAgICAgICAgICAgaWYgKGkgaW4gc2VsZikgewotICAgICAgICAgICAgICAgIHZhbHVlID0g
c2VsZltpXTsKLSAgICAgICAgICAgICAgICBpZiAoZnVuLmNhbGwodGhpc3AsIHZhbHVlLCBpLCBz
ZWxmKSkgewotICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh2YWx1ZSk7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHJldHVybiByZXN1
bHQ7Ci0gICAgfTsKLX0KLQotLy8gRVM1IDE1LjQuNC4xNgotLy8gaHR0cDovL2VzNS5naXRodWIu
Y29tLyN4MTUuNC40LjE2Ci0vLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi9KYXZh
U2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9BcnJheS9ldmVyeQotaWYgKCFBcnJheS5w
cm90b3R5cGUuZXZlcnkpIHsKLSAgICBBcnJheS5wcm90b3R5cGUuZXZlcnkgPSBmdW5jdGlvbiBl
dmVyeShmdW4gLyosIHRoaXNwICovKSB7Ci0gICAgICAgIHZhciBzZWxmID0gdG9PYmplY3QodGhp
cyksCi0gICAgICAgICAgICBsZW5ndGggPSBzZWxmLmxlbmd0aCA+Pj4gMCwKLSAgICAgICAgICAg
IHRoaXNwID0gYXJndW1lbnRzWzFdOwotCi0gICAgICAgIC8vIElmIG5vIGNhbGxiYWNrIGZ1bmN0
aW9uIG9yIGlmIGNhbGxiYWNrIGlzIG5vdCBhIGNhbGxhYmxlIGZ1bmN0aW9uCi0gICAgICAgIGlm
IChfdG9TdHJpbmcoZnVuKSAhPSAiW29iamVjdCBGdW5jdGlvbl0iKSB7Ci0gICAgICAgICAgICB0
aHJvdyBuZXcgVHlwZUVycm9yKGZ1biArICIgaXMgbm90IGEgZnVuY3Rpb24iKTsKLSAgICAgICAg
fQotCi0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICAgICAg
ICAgIGlmIChpIGluIHNlbGYgJiYgIWZ1bi5jYWxsKHRoaXNwLCBzZWxmW2ldLCBpLCBzZWxmKSkg
ewotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9OwotfQotCi0vLyBFUzUgMTUuNC40LjE3Ci0v
LyBodHRwOi8vZXM1LmdpdGh1Yi5jb20vI3gxNS40LjQuMTcKLS8vIGh0dHBzOi8vZGV2ZWxvcGVy
Lm1vemlsbGEub3JnL2VuL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0FycmF5
L3NvbWUKLWlmICghQXJyYXkucHJvdG90eXBlLnNvbWUpIHsKLSAgICBBcnJheS5wcm90b3R5cGUu
c29tZSA9IGZ1bmN0aW9uIHNvbWUoZnVuIC8qLCB0aGlzcCAqLykgewotICAgICAgICB2YXIgc2Vs
ZiA9IHRvT2JqZWN0KHRoaXMpLAotICAgICAgICAgICAgbGVuZ3RoID0gc2VsZi5sZW5ndGggPj4+
IDAsCi0gICAgICAgICAgICB0aGlzcCA9IGFyZ3VtZW50c1sxXTsKLQotICAgICAgICAvLyBJZiBu
byBjYWxsYmFjayBmdW5jdGlvbiBvciBpZiBjYWxsYmFjayBpcyBub3QgYSBjYWxsYWJsZSBmdW5j
dGlvbgotICAgICAgICBpZiAoX3RvU3RyaW5nKGZ1bikgIT0gIltvYmplY3QgRnVuY3Rpb25dIikg
ewotICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihmdW4gKyAiIGlzIG5vdCBhIGZ1bmN0
aW9uIik7Ci0gICAgICAgIH0KLQotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsg
aSsrKSB7Ci0gICAgICAgICAgICBpZiAoaSBpbiBzZWxmICYmIGZ1bi5jYWxsKHRoaXNwLCBzZWxm
W2ldLCBpLCBzZWxmKSkgewotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9OwotfQotCi0vLyBF
UzUgMTUuNC40LjIxCi0vLyBodHRwOi8vZXM1LmdpdGh1Yi5jb20vI3gxNS40LjQuMjEKLS8vIGh0
dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuL0NvcmVfSmF2YVNjcmlwdF8xLjVfUmVmZXJl
bmNlL09iamVjdHMvQXJyYXkvcmVkdWNlCi1pZiAoIUFycmF5LnByb3RvdHlwZS5yZWR1Y2UpIHsK
LSAgICBBcnJheS5wcm90b3R5cGUucmVkdWNlID0gZnVuY3Rpb24gcmVkdWNlKGZ1biAvKiwgaW5p
dGlhbCovKSB7Ci0gICAgICAgIHZhciBzZWxmID0gdG9PYmplY3QodGhpcyksCi0gICAgICAgICAg
ICBsZW5ndGggPSBzZWxmLmxlbmd0aCA+Pj4gMDsKLQotICAgICAgICAvLyBJZiBubyBjYWxsYmFj
ayBmdW5jdGlvbiBvciBpZiBjYWxsYmFjayBpcyBub3QgYSBjYWxsYWJsZSBmdW5jdGlvbgotICAg
ICAgICBpZiAoX3RvU3RyaW5nKGZ1bikgIT0gIltvYmplY3QgRnVuY3Rpb25dIikgewotICAgICAg
ICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihmdW4gKyAiIGlzIG5vdCBhIGZ1bmN0aW9uIik7Ci0g
ICAgICAgIH0KLQotICAgICAgICAvLyBubyB2YWx1ZSB0byByZXR1cm4gaWYgbm8gaW5pdGlhbCB2
YWx1ZSBhbmQgYW4gZW1wdHkgYXJyYXkKLSAgICAgICAgaWYgKCFsZW5ndGggJiYgYXJndW1lbnRz
Lmxlbmd0aCA9PSAxKSB7Ci0gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdyZWR1Y2Ug
b2YgZW1wdHkgYXJyYXkgd2l0aCBubyBpbml0aWFsIHZhbHVlJyk7Ci0gICAgICAgIH0KLQotICAg
ICAgICB2YXIgaSA9IDA7Ci0gICAgICAgIHZhciByZXN1bHQ7Ci0gICAgICAgIGlmIChhcmd1bWVu
dHMubGVuZ3RoID49IDIpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IGFyZ3VtZW50c1sxXTsKLSAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICBpZiAoaSBp
biBzZWxmKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHNlbGZbaSsrXTsKLSAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAg
ICAgLy8gaWYgYXJyYXkgY29udGFpbnMgbm8gdmFsdWVzLCBubyBpbml0aWFsIHZhbHVlIHRvIHJl
dHVybgotICAgICAgICAgICAgICAgIGlmICgrK2kgPj0gbGVuZ3RoKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3JlZHVjZSBvZiBlbXB0eSBhcnJheSB3aXRoIG5v
IGluaXRpYWwgdmFsdWUnKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IHdoaWxl
ICh0cnVlKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZvciAoOyBpIDwgbGVuZ3RoOyBpKyspIHsK
LSAgICAgICAgICAgIGlmIChpIGluIHNlbGYpIHsKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBm
dW4uY2FsbCh2b2lkIDAsIHJlc3VsdCwgc2VsZltpXSwgaSwgc2VsZik7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH07Ci19Ci0KLS8vIEVT
NSAxNS40LjQuMjIKLS8vIGh0dHA6Ly9lczUuZ2l0aHViLmNvbS8jeDE1LjQuNC4yMgotLy8gaHR0
cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4vQ29yZV9KYXZhU2NyaXB0XzEuNV9SZWZlcmVu
Y2UvT2JqZWN0cy9BcnJheS9yZWR1Y2VSaWdodAotaWYgKCFBcnJheS5wcm90b3R5cGUucmVkdWNl
UmlnaHQpIHsKLSAgICBBcnJheS5wcm90b3R5cGUucmVkdWNlUmlnaHQgPSBmdW5jdGlvbiByZWR1
Y2VSaWdodChmdW4gLyosIGluaXRpYWwqLykgewotICAgICAgICB2YXIgc2VsZiA9IHRvT2JqZWN0
KHRoaXMpLAotICAgICAgICAgICAgbGVuZ3RoID0gc2VsZi5sZW5ndGggPj4+IDA7Ci0KLSAgICAg
ICAgLy8gSWYgbm8gY2FsbGJhY2sgZnVuY3Rpb24gb3IgaWYgY2FsbGJhY2sgaXMgbm90IGEgY2Fs
bGFibGUgZnVuY3Rpb24KLSAgICAgICAgaWYgKF90b1N0cmluZyhmdW4pICE9ICJbb2JqZWN0IEZ1
bmN0aW9uXSIpIHsKLSAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoZnVuICsgIiBpcyBu
b3QgYSBmdW5jdGlvbiIpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gbm8gdmFsdWUgdG8gcmV0
dXJuIGlmIG5vIGluaXRpYWwgdmFsdWUsIGVtcHR5IGFycmF5Ci0gICAgICAgIGlmICghbGVuZ3Ro
ICYmIGFyZ3VtZW50cy5sZW5ndGggPT0gMSkgewotICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVF
cnJvcigncmVkdWNlUmlnaHQgb2YgZW1wdHkgYXJyYXkgd2l0aCBubyBpbml0aWFsIHZhbHVlJyk7
Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgcmVzdWx0LCBpID0gbGVuZ3RoIC0gMTsKLSAgICAg
ICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPj0gMikgewotICAgICAgICAgICAgcmVzdWx0ID0gYXJn
dW1lbnRzWzFdOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgZG8gewotICAgICAgICAg
ICAgICAgIGlmIChpIGluIHNlbGYpIHsKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gc2Vs
ZltpLS1dOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgICAgICAvLyBpZiBhcnJheSBjb250YWlucyBubyB2YWx1ZXMsIG5vIGluaXRp
YWwgdmFsdWUgdG8gcmV0dXJuCi0gICAgICAgICAgICAgICAgaWYgKC0taSA8IDApIHsKLSAgICAg
ICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigncmVkdWNlUmlnaHQgb2YgZW1wdHkg
YXJyYXkgd2l0aCBubyBpbml0aWFsIHZhbHVlJyk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgfSB3aGlsZSAodHJ1ZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBkbyB7Ci0gICAgICAg
ICAgICBpZiAoaSBpbiB0aGlzKSB7Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gZnVuLmNhbGwo
dm9pZCAwLCByZXN1bHQsIHNlbGZbaV0sIGksIHNlbGYpOwotICAgICAgICAgICAgfQotICAgICAg
ICB9IHdoaWxlIChpLS0pOwotCi0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfTsKLX0KLQot
Ly8gRVM1IDE1LjQuNC4xNAotLy8gaHR0cDovL2VzNS5naXRodWIuY29tLyN4MTUuNC40LjE0Ci0v
LyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9H
bG9iYWxfT2JqZWN0cy9BcnJheS9pbmRleE9mCi1pZiAoIUFycmF5LnByb3RvdHlwZS5pbmRleE9m
KSB7Ci0gICAgQXJyYXkucHJvdG90eXBlLmluZGV4T2YgPSBmdW5jdGlvbiBpbmRleE9mKHNvdWdo
dCAvKiwgZnJvbUluZGV4ICovICkgewotICAgICAgICB2YXIgc2VsZiA9IHRvT2JqZWN0KHRoaXMp
LAotICAgICAgICAgICAgbGVuZ3RoID0gc2VsZi5sZW5ndGggPj4+IDA7Ci0KLSAgICAgICAgaWYg
KCFsZW5ndGgpIHsKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQotCi0gICAgICAg
IHZhciBpID0gMDsKLSAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxKSB7Ci0gICAgICAg
ICAgICBpID0gdG9JbnRlZ2VyKGFyZ3VtZW50c1sxXSk7Ci0gICAgICAgIH0KLQotICAgICAgICAv
LyBoYW5kbGUgbmVnYXRpdmUgaW5kaWNlcwotICAgICAgICBpID0gaSA+PSAwID8gaSA6IE1hdGgu
bWF4KDAsIGxlbmd0aCArIGkpOwotICAgICAgICBmb3IgKDsgaSA8IGxlbmd0aDsgaSsrKSB7Ci0g
ICAgICAgICAgICBpZiAoaSBpbiBzZWxmICYmIHNlbGZbaV0gPT09IHNvdWdodCkgewotICAgICAg
ICAgICAgICAgIHJldHVybiBpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHJl
dHVybiAtMTsKLSAgICB9OwotfQotCi0vLyBFUzUgMTUuNC40LjE1Ci0vLyBodHRwOi8vZXM1Lmdp
dGh1Yi5jb20vI3gxNS40LjQuMTUKLS8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2Vu
L0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0FycmF5L2xhc3RJbmRleE9mCi1p
ZiAoIUFycmF5LnByb3RvdHlwZS5sYXN0SW5kZXhPZikgewotICAgIEFycmF5LnByb3RvdHlwZS5s
YXN0SW5kZXhPZiA9IGZ1bmN0aW9uIGxhc3RJbmRleE9mKHNvdWdodCAvKiwgZnJvbUluZGV4ICov
KSB7Ci0gICAgICAgIHZhciBzZWxmID0gdG9PYmplY3QodGhpcyksCi0gICAgICAgICAgICBsZW5n
dGggPSBzZWxmLmxlbmd0aCA+Pj4gMDsKLQotICAgICAgICBpZiAoIWxlbmd0aCkgewotICAgICAg
ICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9Ci0gICAgICAgIHZhciBpID0gbGVuZ3RoIC0gMTsK
LSAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxKSB7Ci0gICAgICAgICAgICBpID0gTWF0
aC5taW4oaSwgdG9JbnRlZ2VyKGFyZ3VtZW50c1sxXSkpOwotICAgICAgICB9Ci0gICAgICAgIC8v
IGhhbmRsZSBuZWdhdGl2ZSBpbmRpY2VzCi0gICAgICAgIGkgPSBpID49IDAgPyBpIDogbGVuZ3Ro
IC0gTWF0aC5hYnMoaSk7Ci0gICAgICAgIGZvciAoOyBpID49IDA7IGktLSkgewotICAgICAgICAg
ICAgaWYgKGkgaW4gc2VsZiAmJiBzb3VnaHQgPT09IHNlbGZbaV0pIHsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gaTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICByZXR1cm4gLTE7
Ci0gICAgfTsKLX0KLQotLy8KLS8vIE9iamVjdAotLy8gPT09PT09Ci0vLwotCi0vLyBFUzUgMTUu
Mi4zLjE0Ci0vLyBodHRwOi8vZXM1LmdpdGh1Yi5jb20vI3gxNS4yLjMuMTQKLWlmICghT2JqZWN0
LmtleXMpIHsKLSAgICAvLyBodHRwOi8vd2hhdHRoZWhlYWRzYWlkLmNvbS8yMDEwLzEwL2Etc2Fm
ZXItb2JqZWN0LWtleXMtY29tcGF0aWJpbGl0eS1pbXBsZW1lbnRhdGlvbgotICAgIHZhciBoYXNE
b250RW51bUJ1ZyA9IHRydWUsCi0gICAgICAgIGRvbnRFbnVtcyA9IFsKLSAgICAgICAgICAgICJ0
b1N0cmluZyIsCi0gICAgICAgICAgICAidG9Mb2NhbGVTdHJpbmciLAotICAgICAgICAgICAgInZh
bHVlT2YiLAotICAgICAgICAgICAgImhhc093blByb3BlcnR5IiwKLSAgICAgICAgICAgICJpc1By
b3RvdHlwZU9mIiwKLSAgICAgICAgICAgICJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsCi0gICAgICAg
ICAgICAiY29uc3RydWN0b3IiCi0gICAgICAgIF0sCi0gICAgICAgIGRvbnRFbnVtc0xlbmd0aCA9
IGRvbnRFbnVtcy5sZW5ndGg7Ci0KLSAgICBmb3IgKHZhciBrZXkgaW4geyJ0b1N0cmluZyI6IG51
bGx9KSB7Ci0gICAgICAgIGhhc0RvbnRFbnVtQnVnID0gZmFsc2U7Ci0gICAgfQotCi0gICAgT2Jq
ZWN0LmtleXMgPSBmdW5jdGlvbiBrZXlzKG9iamVjdCkgewotCi0gICAgICAgIGlmICgodHlwZW9m
IG9iamVjdCAhPSAib2JqZWN0IiAmJiB0eXBlb2Ygb2JqZWN0ICE9ICJmdW5jdGlvbiIpIHx8IG9i
amVjdCA9PT0gbnVsbCkgewotICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0
LmtleXMgY2FsbGVkIG9uIGEgbm9uLW9iamVjdCIpOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFy
IGtleXMgPSBbXTsKLSAgICAgICAgZm9yICh2YXIgbmFtZSBpbiBvYmplY3QpIHsKLSAgICAgICAg
ICAgIGlmIChvd25zKG9iamVjdCwgbmFtZSkpIHsKLSAgICAgICAgICAgICAgICBrZXlzLnB1c2go
bmFtZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoaGFzRG9udEVu
dW1CdWcpIHsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBpaSA9IGRvbnRFbnVtc0xlbmd0
aDsgaSA8IGlpOyBpKyspIHsKLSAgICAgICAgICAgICAgICB2YXIgZG9udEVudW0gPSBkb250RW51
bXNbaV07Ci0gICAgICAgICAgICAgICAgaWYgKG93bnMob2JqZWN0LCBkb250RW51bSkpIHsKLSAg
ICAgICAgICAgICAgICAgICAga2V5cy5wdXNoKGRvbnRFbnVtKTsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGtleXM7Ci0gICAgfTsK
LQotfQotCi0vLwotLy8gRGF0ZQotLy8gPT09PQotLy8KLQotLy8gRVM1IDE1LjkuNS40MwotLy8g
aHR0cDovL2VzNS5naXRodWIuY29tLyN4MTUuOS41LjQzCi0vLyBUaGlzIGZ1bmN0aW9uIHJldHVy
bnMgYSBTdHJpbmcgdmFsdWUgcmVwcmVzZW50IHRoZSBpbnN0YW5jZSBpbiB0aW1lCi0vLyByZXBy
ZXNlbnRlZCBieSB0aGlzIERhdGUgb2JqZWN0LiBUaGUgZm9ybWF0IG9mIHRoZSBTdHJpbmcgaXMg
dGhlIERhdGUgVGltZQotLy8gc3RyaW5nIGZvcm1hdCBkZWZpbmVkIGluIDE1LjkuMS4xNS4gQWxs
IGZpZWxkcyBhcmUgcHJlc2VudCBpbiB0aGUgU3RyaW5nLgotLy8gVGhlIHRpbWUgem9uZSBpcyBh
bHdheXMgVVRDLCBkZW5vdGVkIGJ5IHRoZSBzdWZmaXggWi4gSWYgdGhlIHRpbWUgdmFsdWUgb2YK
LS8vIHRoaXMgb2JqZWN0IGlzIG5vdCBhIGZpbml0ZSBOdW1iZXIgYSBSYW5nZUVycm9yIGV4Y2Vw
dGlvbiBpcyB0aHJvd24uCi1pZiAoIURhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nIHx8IChuZXcg
RGF0ZSgtNjIxOTg3NTUyMDAwMDApLnRvSVNPU3RyaW5nKCkuaW5kZXhPZignLTAwMDAwMScpID09
PSAtMSkpIHsKLSAgICBEYXRlLnByb3RvdHlwZS50b0lTT1N0cmluZyA9IGZ1bmN0aW9uIHRvSVNP
U3RyaW5nKCkgewotICAgICAgICB2YXIgcmVzdWx0LCBsZW5ndGgsIHZhbHVlLCB5ZWFyOwotICAg
ICAgICBpZiAoIWlzRmluaXRlKHRoaXMpKSB7Ci0gICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VF
cnJvcigiRGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmcgY2FsbGVkIG9uIG5vbi1maW5pdGUgdmFs
dWUuIik7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyB0aGUgZGF0ZSB0aW1lIHN0cmluZyBmb3Jt
YXQgaXMgc3BlY2lmaWVkIGluIDE1LjkuMS4xNS4KLSAgICAgICAgcmVzdWx0ID0gW3RoaXMuZ2V0
VVRDTW9udGgoKSArIDEsIHRoaXMuZ2V0VVRDRGF0ZSgpLAotICAgICAgICAgICAgdGhpcy5nZXRV
VENIb3VycygpLCB0aGlzLmdldFVUQ01pbnV0ZXMoKSwgdGhpcy5nZXRVVENTZWNvbmRzKCldOwot
ICAgICAgICB5ZWFyID0gdGhpcy5nZXRVVENGdWxsWWVhcigpOwotICAgICAgICB5ZWFyID0gKHll
YXIgPCAwID8gJy0nIDogKHllYXIgPiA5OTk5ID8gJysnIDogJycpKSArICgnMDAwMDAnICsgTWF0
aC5hYnMoeWVhcikpLnNsaWNlKDAgPD0geWVhciAmJiB5ZWFyIDw9IDk5OTkgPyAtNCA6IC02KTsK
LQotICAgICAgICBsZW5ndGggPSByZXN1bHQubGVuZ3RoOwotICAgICAgICB3aGlsZSAobGVuZ3Ro
LS0pIHsKLSAgICAgICAgICAgIHZhbHVlID0gcmVzdWx0W2xlbmd0aF07Ci0gICAgICAgICAgICAv
LyBwYWQgbW9udGhzLCBkYXlzLCBob3VycywgbWludXRlcywgYW5kIHNlY29uZHMgdG8gaGF2ZSB0
d28gZGlnaXRzLgotICAgICAgICAgICAgaWYgKHZhbHVlIDwgMTApIHsKLSAgICAgICAgICAgICAg
ICByZXN1bHRbbGVuZ3RoXSA9ICIwIiArIHZhbHVlOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgICAgIC8vIHBhZCBtaWxsaXNlY29uZHMgdG8gaGF2ZSB0aHJlZSBkaWdpdHMuCi0gICAg
ICAgIHJldHVybiB5ZWFyICsgIi0iICsgcmVzdWx0LnNsaWNlKDAsIDIpLmpvaW4oIi0iKSArICJU
IiArIHJlc3VsdC5zbGljZSgyKS5qb2luKCI6IikgKyAiLiIgKwotICAgICAgICAgICAgKCIwMDAi
ICsgdGhpcy5nZXRVVENNaWxsaXNlY29uZHMoKSkuc2xpY2UoLTMpICsgIloiOwotICAgIH0KLX0K
LQotLy8gRVM1IDE1LjkuNC40Ci0vLyBodHRwOi8vZXM1LmdpdGh1Yi5jb20vI3gxNS45LjQuNAot
aWYgKCFEYXRlLm5vdykgewotICAgIERhdGUubm93ID0gZnVuY3Rpb24gbm93KCkgewotICAgICAg
ICByZXR1cm4gbmV3IERhdGUoKS5nZXRUaW1lKCk7Ci0gICAgfTsKLX0KLQotLy8gRVM1IDE1Ljku
NS40NAotLy8gaHR0cDovL2VzNS5naXRodWIuY29tLyN4MTUuOS41LjQ0Ci0vLyBUaGlzIGZ1bmN0
aW9uIHByb3ZpZGVzIGEgU3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgRGF0ZSBvYmplY3QgZm9y
IHVzZSBieQotLy8gSlNPTi5zdHJpbmdpZnkgKDE1LjEyLjMpLgotaWYgKCFEYXRlLnByb3RvdHlw
ZS50b0pTT04pIHsKLSAgICBEYXRlLnByb3RvdHlwZS50b0pTT04gPSBmdW5jdGlvbiB0b0pTT04o
a2V5KSB7Ci0gICAgICAgIC8vIFdoZW4gdGhlIHRvSlNPTiBtZXRob2QgaXMgY2FsbGVkIHdpdGgg
YXJndW1lbnQga2V5LCB0aGUgZm9sbG93aW5nCi0gICAgICAgIC8vIHN0ZXBzIGFyZSB0YWtlbjoK
LQotICAgICAgICAvLyAxLiAgTGV0IE8gYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIFRvT2JqZWN0
LCBnaXZpbmcgaXQgdGhlIHRoaXMKLSAgICAgICAgLy8gdmFsdWUgYXMgaXRzIGFyZ3VtZW50Lgot
ICAgICAgICAvLyAyLiBMZXQgdHYgYmUgVG9QcmltaXRpdmUoTywgaGludCBOdW1iZXIpLgotICAg
ICAgICAvLyAzLiBJZiB0diBpcyBhIE51bWJlciBhbmQgaXMgbm90IGZpbml0ZSwgcmV0dXJuIG51
bGwuCi0gICAgICAgIC8vIFhYWAotICAgICAgICAvLyA0LiBMZXQgdG9JU08gYmUgdGhlIHJlc3Vs
dCBvZiBjYWxsaW5nIHRoZSBbW0dldF1dIGludGVybmFsIG1ldGhvZCBvZgotICAgICAgICAvLyBP
IHdpdGggYXJndW1lbnQgInRvSVNPU3RyaW5nIi4KLSAgICAgICAgLy8gNS4gSWYgSXNDYWxsYWJs
ZSh0b0lTTykgaXMgZmFsc2UsIHRocm93IGEgVHlwZUVycm9yIGV4Y2VwdGlvbi4KLSAgICAgICAg
aWYgKHR5cGVvZiB0aGlzLnRvSVNPU3RyaW5nICE9ICJmdW5jdGlvbiIpIHsKLSAgICAgICAgICAg
IHRocm93IG5ldyBUeXBlRXJyb3IoJ3RvSVNPU3RyaW5nIHByb3BlcnR5IGlzIG5vdCBjYWxsYWJs
ZScpOwotICAgICAgICB9Ci0gICAgICAgIC8vIDYuIFJldHVybiB0aGUgcmVzdWx0IG9mIGNhbGxp
bmcgdGhlIFtbQ2FsbF1dIGludGVybmFsIG1ldGhvZCBvZgotICAgICAgICAvLyAgdG9JU08gd2l0
aCBPIGFzIHRoZSB0aGlzIHZhbHVlIGFuZCBhbiBlbXB0eSBhcmd1bWVudCBsaXN0LgotICAgICAg
ICByZXR1cm4gdGhpcy50b0lTT1N0cmluZygpOwotCi0gICAgICAgIC8vIE5PVEUgMSBUaGUgYXJn
dW1lbnQgaXMgaWdub3JlZC4KLQotICAgICAgICAvLyBOT1RFIDIgVGhlIHRvSlNPTiBmdW5jdGlv
biBpcyBpbnRlbnRpb25hbGx5IGdlbmVyaWM7IGl0IGRvZXMgbm90Ci0gICAgICAgIC8vIHJlcXVp
cmUgdGhhdCBpdHMgdGhpcyB2YWx1ZSBiZSBhIERhdGUgb2JqZWN0LiBUaGVyZWZvcmUsIGl0IGNh
biBiZQotICAgICAgICAvLyB0cmFuc2ZlcnJlZCB0byBvdGhlciBraW5kcyBvZiBvYmplY3RzIGZv
ciB1c2UgYXMgYSBtZXRob2QuIEhvd2V2ZXIsCi0gICAgICAgIC8vIGl0IGRvZXMgcmVxdWlyZSB0
aGF0IGFueSBzdWNoIG9iamVjdCBoYXZlIGEgdG9JU09TdHJpbmcgbWV0aG9kLiBBbgotICAgICAg
ICAvLyBvYmplY3QgaXMgZnJlZSB0byB1c2UgdGhlIGFyZ3VtZW50IGtleSB0byBmaWx0ZXIgaXRz
Ci0gICAgICAgIC8vIHN0cmluZ2lmaWNhdGlvbi4KLSAgICB9OwotfQotCi0vLyBFUzUgMTUuOS40
LjIKLS8vIGh0dHA6Ly9lczUuZ2l0aHViLmNvbS8jeDE1LjkuNC4yCi0vLyBiYXNlZCBvbiB3b3Jr
IHNoYXJlZCBieSBEYW5pZWwgRnJpZXNlbiAoZGFudG1hbikKLS8vIGh0dHA6Ly9naXN0LmdpdGh1
Yi5jb20vMzAzMjQ5Ci1pZiAoIURhdGUucGFyc2UgfHwgRGF0ZS5wYXJzZSgiKzI3NTc2MC0wOS0x
M1QwMDowMDowMC4wMDBaIikgIT09IDguNjRlMTUpIHsKLSAgICAvLyBYWFggZ2xvYmFsIGFzc2ln
bm1lbnQgd29uJ3Qgd29yayBpbiBlbWJlZGRpbmdzIHRoYXQgdXNlCi0gICAgLy8gYW4gYWx0ZXJu
YXRlIG9iamVjdCBmb3IgdGhlIGNvbnRleHQuCi0gICAgRGF0ZSA9IChmdW5jdGlvbihOYXRpdmVE
YXRlKSB7Ci0KLSAgICAgICAgLy8gRGF0ZS5sZW5ndGggPT09IDcKLSAgICAgICAgdmFyIERhdGUg
PSBmdW5jdGlvbiBEYXRlKFksIE0sIEQsIGgsIG0sIHMsIG1zKSB7Ci0gICAgICAgICAgICB2YXIg
bGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDsKLSAgICAgICAgICAgIGlmICh0aGlzIGluc3RhbmNl
b2YgTmF0aXZlRGF0ZSkgewotICAgICAgICAgICAgICAgIHZhciBkYXRlID0gbGVuZ3RoID09IDEg
JiYgU3RyaW5nKFkpID09PSBZID8gLy8gaXNTdHJpbmcoWSkKLSAgICAgICAgICAgICAgICAgICAg
Ly8gV2UgZXhwbGljaXRseSBwYXNzIGl0IHRocm91Z2ggcGFyc2U6Ci0gICAgICAgICAgICAgICAg
ICAgIG5ldyBOYXRpdmVEYXRlKERhdGUucGFyc2UoWSkpIDoKLSAgICAgICAgICAgICAgICAgICAg
Ly8gV2UgaGF2ZSB0byBtYW51YWxseSBtYWtlIGNhbGxzIGRlcGVuZGluZyBvbiBhcmd1bWVudAot
ICAgICAgICAgICAgICAgICAgICAvLyBsZW5ndGggaGVyZQotICAgICAgICAgICAgICAgICAgICBs
ZW5ndGggPj0gNyA/IG5ldyBOYXRpdmVEYXRlKFksIE0sIEQsIGgsIG0sIHMsIG1zKSA6Ci0gICAg
ICAgICAgICAgICAgICAgIGxlbmd0aCA+PSA2ID8gbmV3IE5hdGl2ZURhdGUoWSwgTSwgRCwgaCwg
bSwgcykgOgotICAgICAgICAgICAgICAgICAgICBsZW5ndGggPj0gNSA/IG5ldyBOYXRpdmVEYXRl
KFksIE0sIEQsIGgsIG0pIDoKLSAgICAgICAgICAgICAgICAgICAgbGVuZ3RoID49IDQgPyBuZXcg
TmF0aXZlRGF0ZShZLCBNLCBELCBoKSA6Ci0gICAgICAgICAgICAgICAgICAgIGxlbmd0aCA+PSAz
ID8gbmV3IE5hdGl2ZURhdGUoWSwgTSwgRCkgOgotICAgICAgICAgICAgICAgICAgICBsZW5ndGgg
Pj0gMiA/IG5ldyBOYXRpdmVEYXRlKFksIE0pIDoKLSAgICAgICAgICAgICAgICAgICAgbGVuZ3Ro
ID49IDEgPyBuZXcgTmF0aXZlRGF0ZShZKSA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbmV3IE5hdGl2ZURhdGUoKTsKLSAgICAgICAgICAgICAgICAvLyBQcmV2ZW50IG1peHVw
cyB3aXRoIHVuZml4ZWQgRGF0ZSBvYmplY3QKLSAgICAgICAgICAgICAgICBkYXRlLmNvbnN0cnVj
dG9yID0gRGF0ZTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZGF0ZTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIHJldHVybiBOYXRpdmVEYXRlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7Ci0g
ICAgICAgIH07Ci0KLSAgICAgICAgLy8gMTUuOS4xLjE1IERhdGUgVGltZSBTdHJpbmcgRm9ybWF0
LgotICAgICAgICB2YXIgaXNvRGF0ZUV4cHJlc3Npb24gPSBuZXcgUmVnRXhwKCJeIiArCi0gICAg
ICAgICAgICAiKFxcZHs0fXxbXCtcLV1cXGR7Nn0pIiArIC8vIGZvdXItZGlnaXQgeWVhciBjYXB0
dXJlIG9yIHNpZ24gKyA2LWRpZ2l0IGV4dGVuZGVkIHllYXIKLSAgICAgICAgICAgICIoPzotKFxc
ZHsyfSkiICsgLy8gb3B0aW9uYWwgbW9udGggY2FwdHVyZQotICAgICAgICAgICAgIig/Oi0oXFxk
ezJ9KSIgKyAvLyBvcHRpb25hbCBkYXkgY2FwdHVyZQotICAgICAgICAgICAgIig/OiIgKyAvLyBj
YXB0dXJlIGhvdXJzOm1pbnV0ZXM6c2Vjb25kcy5taWxsaXNlY29uZHMKLSAgICAgICAgICAgICAg
ICAiVChcXGR7Mn0pIiArIC8vIGhvdXJzIGNhcHR1cmUKLSAgICAgICAgICAgICAgICAiOihcXGR7
Mn0pIiArIC8vIG1pbnV0ZXMgY2FwdHVyZQotICAgICAgICAgICAgICAgICIoPzoiICsgLy8gb3B0
aW9uYWwgOnNlY29uZHMubWlsbGlzZWNvbmRzCi0gICAgICAgICAgICAgICAgICAgICI6KFxcZHsy
fSkiICsgLy8gc2Vjb25kcyBjYXB0dXJlCi0gICAgICAgICAgICAgICAgICAgICIoPzpcXC4oXFxk
ezN9KSk/IiArIC8vIG1pbGxpc2Vjb25kcyBjYXB0dXJlCi0gICAgICAgICAgICAgICAgIik/IiAr
Ci0gICAgICAgICAgICAiKD86IiArIC8vIGNhcHR1cmUgVVRDIG9mZnNldCBjb21wb25lbnQKLSAg
ICAgICAgICAgICAgICAiWnwiICsgLy8gVVRDIGNhcHR1cmUKLSAgICAgICAgICAgICAgICAiKD86
IiArIC8vIG9mZnNldCBzcGVjaWZpZXIgKy8taG91cnM6bWludXRlcwotICAgICAgICAgICAgICAg
ICAgICAiKFstK10pIiArIC8vIHNpZ24gY2FwdHVyZQotICAgICAgICAgICAgICAgICAgICAiKFxc
ZHsyfSkiICsgLy8gaG91cnMgb2Zmc2V0IGNhcHR1cmUKLSAgICAgICAgICAgICAgICAgICAgIjoo
XFxkezJ9KSIgKyAvLyBtaW51dGVzIG9mZnNldCBjYXB0dXJlCi0gICAgICAgICAgICAgICAgIiki
ICsKLSAgICAgICAgICAgICIpPyk/KT8pPyIgKwotICAgICAgICAiJCIpOwotCi0gICAgICAgIC8v
IENvcHkgYW55IGN1c3RvbSBtZXRob2RzIGEgM3JkIHBhcnR5IGxpYnJhcnkgbWF5IGhhdmUgYWRk
ZWQKLSAgICAgICAgZm9yICh2YXIga2V5IGluIE5hdGl2ZURhdGUpIHsKLSAgICAgICAgICAgIERh
dGVba2V5XSA9IE5hdGl2ZURhdGVba2V5XTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIENvcHkg
Im5hdGl2ZSIgbWV0aG9kcyBleHBsaWNpdGx5OyB0aGV5IG1heSBiZSBub24tZW51bWVyYWJsZQot
ICAgICAgICBEYXRlLm5vdyA9IE5hdGl2ZURhdGUubm93OwotICAgICAgICBEYXRlLlVUQyA9IE5h
dGl2ZURhdGUuVVRDOwotICAgICAgICBEYXRlLnByb3RvdHlwZSA9IE5hdGl2ZURhdGUucHJvdG90
eXBlOwotICAgICAgICBEYXRlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IERhdGU7Ci0KLSAgICAg
ICAgLy8gVXBncmFkZSBEYXRlLnBhcnNlIHRvIGhhbmRsZSBzaW1wbGlmaWVkIElTTyA4NjAxIHN0
cmluZ3MKLSAgICAgICAgRGF0ZS5wYXJzZSA9IGZ1bmN0aW9uIHBhcnNlKHN0cmluZykgewotICAg
ICAgICAgICAgdmFyIG1hdGNoID0gaXNvRGF0ZUV4cHJlc3Npb24uZXhlYyhzdHJpbmcpOwotICAg
ICAgICAgICAgaWYgKG1hdGNoKSB7Ci0gICAgICAgICAgICAgICAgbWF0Y2guc2hpZnQoKTsgLy8g
a2lsbCBtYXRjaFswXSwgdGhlIGZ1bGwgbWF0Y2gKLSAgICAgICAgICAgICAgICAvLyBwYXJzZSBt
b250aHMsIGRheXMsIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzLCBhbmQgbWlsbGlzZWNvbmRzCi0g
ICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCA3OyBpKyspIHsKLSAgICAgICAgICAg
ICAgICAgICAgLy8gcHJvdmlkZSBkZWZhdWx0IHZhbHVlcyBpZiBuZWNlc3NhcnkKLSAgICAgICAg
ICAgICAgICAgICAgbWF0Y2hbaV0gPSArKG1hdGNoW2ldIHx8IChpIDwgMyA/IDEgOiAwKSk7Ci0g
ICAgICAgICAgICAgICAgICAgIC8vIG1hdGNoWzFdIGlzIHRoZSBtb250aC4gTW9udGhzIGFyZSAw
LTExIGluIEphdmFTY3JpcHQKLSAgICAgICAgICAgICAgICAgICAgLy8gYERhdGVgIG9iamVjdHMs
IGJ1dCAxLTEyIGluIElTTyBub3RhdGlvbiwgc28gd2UKLSAgICAgICAgICAgICAgICAgICAgLy8g
ZGVjcmVtZW50LgotICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PSAxKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBtYXRjaFtpXS0tOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgLy8gcGFyc2UgdGhlIFVUQyBvZmZzZXQgY29t
cG9uZW50Ci0gICAgICAgICAgICAgICAgdmFyIG1pbnV0ZU9mZnNldCA9ICttYXRjaC5wb3AoKSwg
aG91ck9mZnNldCA9ICttYXRjaC5wb3AoKSwgc2lnbiA9IG1hdGNoLnBvcCgpOwotCi0gICAgICAg
ICAgICAgICAgLy8gY29tcHV0ZSB0aGUgZXhwbGljaXQgdGltZSB6b25lIG9mZnNldCBpZiBzcGVj
aWZpZWQKLSAgICAgICAgICAgICAgICB2YXIgb2Zmc2V0ID0gMDsKLSAgICAgICAgICAgICAgICBp
ZiAoc2lnbikgewotICAgICAgICAgICAgICAgICAgICAvLyBkZXRlY3QgaW52YWxpZCBvZmZzZXRz
IGFuZCByZXR1cm4gZWFybHkKLSAgICAgICAgICAgICAgICAgICAgaWYgKGhvdXJPZmZzZXQgPiAy
MyB8fCBtaW51dGVPZmZzZXQgPiA1OSkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IE5hTjsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIC8vIGV4
cHJlc3MgdGhlIHByb3ZpZGVkIHRpbWUgem9uZSBvZmZzZXQgaW4gbWludXRlcy4gVGhlIG9mZnNl
dCBpcwotICAgICAgICAgICAgICAgICAgICAvLyBuZWdhdGl2ZSBmb3IgdGltZSB6b25lcyB3ZXN0
IG9mIFVUQzsgcG9zaXRpdmUgb3RoZXJ3aXNlLgotICAgICAgICAgICAgICAgICAgICBvZmZzZXQg
PSAoaG91ck9mZnNldCAqIDYwICsgbWludXRlT2Zmc2V0KSAqIDZlNCAqIChzaWduID09ICIrIiA/
IC0xIDogMSk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgLy8gRGF0ZS5V
VEMgZm9yIHllYXJzIGJldHdlZW4gMCBhbmQgOTkgY29udmVydHMgeWVhciB0byAxOTAwICsgeWVh
cgotICAgICAgICAgICAgICAgIC8vIFRoZSBHcmVnb3JpYW4gY2FsZW5kYXIgaGFzIGEgNDAwLXll
YXIgY3ljbGUsIHNvCi0gICAgICAgICAgICAgICAgLy8gdG8gRGF0ZS5VVEMoeWVhciArIDQwMCwg
Li4uLiApIC0gMTI2MjI3ODA4MDAwMDAgPT0gRGF0ZS5VVEMoeWVhciwgLi4uKSwKLSAgICAgICAg
ICAgICAgICAvLyB3aGVyZSAxMjYyMjc4MDgwMDAwMCAtIG51bWJlciBvZiBtaWxsaXNlY29uZHMg
aW4gR3JlZ29yaWFuIGNhbGVuZGFyIDQwMCB5ZWFycwotICAgICAgICAgICAgICAgIHZhciB5ZWFy
ID0gK21hdGNoWzBdOwotICAgICAgICAgICAgICAgIGlmICgwIDw9IHllYXIgJiYgeWVhciA8PSA5
OSkgewotICAgICAgICAgICAgICAgICAgICBtYXRjaFswXSA9IHllYXIgKyA0MDA7Ci0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiBOYXRpdmVEYXRlLlVUQy5hcHBseSh0aGlzLCBtYXRjaCkgKyBv
ZmZzZXQgLSAxMjYyMjc4MDgwMDAwMDsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
ICAgICAvLyBjb21wdXRlIGEgbmV3IFVUQyBkYXRlIHZhbHVlLCBhY2NvdW50aW5nIGZvciB0aGUg
b3B0aW9uYWwgb2Zmc2V0Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5hdGl2ZURhdGUuVVRDLmFw
cGx5KHRoaXMsIG1hdGNoKSArIG9mZnNldDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJl
dHVybiBOYXRpdmVEYXRlLnBhcnNlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7Ci0gICAgICAgIH07
Ci0KLSAgICAgICAgcmV0dXJuIERhdGU7Ci0gICAgfSkoRGF0ZSk7Ci19Ci0KLS8vCi0vLyBTdHJp
bmcKLS8vID09PT09PQotLy8KLQotLy8gRVM1IDE1LjUuNC4yMAotLy8gaHR0cDovL2VzNS5naXRo
dWIuY29tLyN4MTUuNS40LjIwCi12YXIgd3MgPSAiXHgwOVx4MEFceDBCXHgwQ1x4MERceDIwXHhB
MFx1MTY4MFx1MTgwRVx1MjAwMFx1MjAwMVx1MjAwMlx1MjAwMyIgKwotICAgICJcdTIwMDRcdTIw
MDVcdTIwMDZcdTIwMDdcdTIwMDhcdTIwMDlcdTIwMEFcdTIwMkZcdTIwNUZcdTMwMDBcdTIwMjgi
ICsKLSAgICAiXHUyMDI5XHVGRUZGIjsKLWlmICghU3RyaW5nLnByb3RvdHlwZS50cmltIHx8IHdz
LnRyaW0oKSkgewotICAgIC8vIGh0dHA6Ly9ibG9nLnN0ZXZlbmxldml0aGFuLmNvbS9hcmNoaXZl
cy9mYXN0ZXItdHJpbS1qYXZhc2NyaXB0Ci0gICAgLy8gaHR0cDovL3BlcmZlY3Rpb25raWxscy5j
b20vd2hpdGVzcGFjZS1kZXZpYXRpb25zLwotICAgIHdzID0gIlsiICsgd3MgKyAiXSI7Ci0gICAg
dmFyIHRyaW1CZWdpblJlZ2V4cCA9IG5ldyBSZWdFeHAoIl4iICsgd3MgKyB3cyArICIqIiksCi0g
ICAgICAgIHRyaW1FbmRSZWdleHAgPSBuZXcgUmVnRXhwKHdzICsgd3MgKyAiKiQiKTsKLSAgICBT
dHJpbmcucHJvdG90eXBlLnRyaW0gPSBmdW5jdGlvbiB0cmltKCkgewotICAgICAgICBpZiAodGhp
cyA9PT0gdW5kZWZpbmVkIHx8IHRoaXMgPT09IG51bGwpIHsKLSAgICAgICAgICAgIHRocm93IG5l
dyBUeXBlRXJyb3IoImNhbid0IGNvbnZlcnQgIit0aGlzKyIgdG8gb2JqZWN0Iik7Ci0gICAgICAg
IH0KLSAgICAgICAgcmV0dXJuIFN0cmluZyh0aGlzKS5yZXBsYWNlKHRyaW1CZWdpblJlZ2V4cCwg
IiIpLnJlcGxhY2UodHJpbUVuZFJlZ2V4cCwgIiIpOwotICAgIH07Ci19Ci0KLS8vCi0vLyBVdGls
Ci0vLyA9PT09PT0KLS8vCi0KLS8vIEVTNSA5LjQKLS8vIGh0dHA6Ly9lczUuZ2l0aHViLmNvbS8j
eDkuNAotLy8gaHR0cDovL2pzcGVyZi5jb20vdG8taW50ZWdlcgotdmFyIHRvSW50ZWdlciA9IGZ1
bmN0aW9uIChuKSB7Ci0gICAgbiA9ICtuOwotICAgIGlmIChuICE9PSBuKSB7IC8vIGlzTmFOCi0g
ICAgICAgIG4gPSAwOwotICAgIH0gZWxzZSBpZiAobiAhPT0gMCAmJiBuICE9PSAoMS8wKSAmJiBu
ICE9PSAtKDEvMCkpIHsKLSAgICAgICAgbiA9IChuID4gMCB8fCAtMSkgKiBNYXRoLmZsb29yKE1h
dGguYWJzKG4pKTsKLSAgICB9Ci0gICAgcmV0dXJuIG47Ci19OwotCi12YXIgcHJlcGFyZVN0cmlu
ZyA9ICJhIlswXSAhPSAiYSI7Ci0gICAgLy8gRVM1IDkuOQotICAgIC8vIGh0dHA6Ly9lczUuZ2l0
aHViLmNvbS8jeDkuOQotdmFyIHRvT2JqZWN0ID0gZnVuY3Rpb24gKG8pIHsKLSAgICBpZiAobyA9
PSBudWxsKSB7IC8vIHRoaXMgbWF0Y2hlcyBib3RoIG51bGwgYW5kIHVuZGVmaW5lZAotICAgICAg
ICB0aHJvdyBuZXcgVHlwZUVycm9yKCJjYW4ndCBjb252ZXJ0ICIrbysiIHRvIG9iamVjdCIpOwot
ICAgIH0KLSAgICAvLyBJZiB0aGUgaW1wbGVtZW50YXRpb24gZG9lc24ndCBzdXBwb3J0IGJ5LWlu
ZGV4IGFjY2VzcyBvZgotICAgIC8vIHN0cmluZyBjaGFyYWN0ZXJzIChleC4gSUUgPCA5KSwgc3Bs
aXQgdGhlIHN0cmluZwotICAgIGlmIChwcmVwYXJlU3RyaW5nICYmIHR5cGVvZiBvID09ICJzdHJp
bmciICYmIG8pIHsKLSAgICAgICAgcmV0dXJuIG8uc3BsaXQoIiIpOwotICAgIH0KLSAgICByZXR1
cm4gT2JqZWN0KG8pOwotfTsKLQotfSk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2RlcGVuZGVuY3ktZXhhbXBsZXMvZmxpZ2h0L2Jv
d2VyX2NvbXBvbmVudHMvZmxpZ2h0L2xpYi9hZHZpY2UuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2RlcGVuZGVuY3ktZXhhbXBsZXMvZmxpZ2h0L2Jv
d2VyX2NvbXBvbmVudHMvZmxpZ2h0L2xpYi9hZHZpY2UuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDg5OGMzNDA2ZTVmNjgyMzM2OWU0NzhjNTk2YjFlNDkzMTA3MjcxMDUuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9kZXBlbmRlbmN5LWV4YW1wbGVzL2ZsaWdo
dC9ib3dlcl9jb21wb25lbnRzL2ZsaWdodC9saWIvYWR2aWNlLmpzCisrKyAvZGV2L251bGwKQEAg
LTEsNjkgKzAsMCBAQAotLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0vLyBDb3B5cmlnaHQgMjAxMyBUd2l0dGVyLCBJbmMKLS8vIExpY2Vuc2VkIHVuZGVyIFRo
ZSBNSVQgTGljZW5zZQotLy8gaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVAotLy8g
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLWRlZmluZSgKLQot
ICBbCi0gICAgJy4vY29tcG9zZScKLSAgXSwKLQotICBmdW5jdGlvbihjb21wb3NlKSB7Ci0gICAg
J3VzZSBzdHJpY3QnOwotCi0gICAgdmFyIGFkdmljZSA9IHsKLQotICAgICAgYXJvdW5kOiBmdW5j
dGlvbihiYXNlLCB3cmFwcGVkKSB7Ci0gICAgICAgIHJldHVybiBmdW5jdGlvbiBjb21wb3NlZEFy
b3VuZCgpIHsKLSAgICAgICAgICAvLyB1bnBhY2tpbmcgYXJndW1lbnRzIGJ5IGhhbmQgYmVuY2ht
YXJrZWQgZmFzdGVyCi0gICAgICAgICAgdmFyIGkgPSAwLCBsID0gYXJndW1lbnRzLmxlbmd0aCwg
YXJncyA9IG5ldyBBcnJheShsICsgMSk7Ci0gICAgICAgICAgYXJnc1swXSA9IGJhc2UuYmluZCh0
aGlzKTsKLSAgICAgICAgICBmb3IgKDsgaSA8IGw7IGkrKykgYXJnc1tpICsgMV0gPSBhcmd1bWVu
dHNbaV07Ci0KLSAgICAgICAgICByZXR1cm4gd3JhcHBlZC5hcHBseSh0aGlzLCBhcmdzKTsKLSAg
ICAgICAgfTsKLSAgICAgIH0sCi0KLSAgICAgIGJlZm9yZTogZnVuY3Rpb24oYmFzZSwgYmVmb3Jl
KSB7Ci0gICAgICAgIHZhciBiZWZvcmVGbiA9ICh0eXBlb2YgYmVmb3JlID09ICdmdW5jdGlvbicp
ID8gYmVmb3JlIDogYmVmb3JlLm9ialtiZWZvcmUuZm5OYW1lXTsKLSAgICAgICAgcmV0dXJuIGZ1
bmN0aW9uIGNvbXBvc2VkQmVmb3JlKCkgewotICAgICAgICAgIGJlZm9yZUZuLmFwcGx5KHRoaXMs
IGFyZ3VtZW50cyk7Ci0gICAgICAgICAgcmV0dXJuIGJhc2UuYXBwbHkodGhpcywgYXJndW1lbnRz
KTsKLSAgICAgICAgfTsKLSAgICAgIH0sCi0KLSAgICAgIGFmdGVyOiBmdW5jdGlvbihiYXNlLCBh
ZnRlcikgewotICAgICAgICB2YXIgYWZ0ZXJGbiA9ICh0eXBlb2YgYWZ0ZXIgPT0gJ2Z1bmN0aW9u
JykgPyBhZnRlciA6IGFmdGVyLm9ialthZnRlci5mbk5hbWVdOwotICAgICAgICByZXR1cm4gZnVu
Y3Rpb24gY29tcG9zZWRBZnRlcigpIHsKLSAgICAgICAgICB2YXIgcmVzID0gKGJhc2UudW5ib3Vu
ZCB8fCBiYXNlKS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwotICAgICAgICAgIGFmdGVyRm4uYXBw
bHkodGhpcywgYXJndW1lbnRzKTsKLSAgICAgICAgICByZXR1cm4gcmVzOwotICAgICAgICB9Owot
ICAgICAgfSwKLQotICAgICAgLy8gYSBtaXhpbiB0aGF0IGFsbG93cyBvdGhlciBtaXhpbnMgdG8g
YXVnbWVudCBleGlzdGluZyBmdW5jdGlvbnMgYnkgYWRkaW5nIGFkZGl0aW9uYWwKLSAgICAgIC8v
IGNvZGUgYmVmb3JlLCBhZnRlciBvciBhcm91bmQuCi0gICAgICB3aXRoQWR2aWNlOiBmdW5jdGlv
bigpIHsKLSAgICAgICAgWydiZWZvcmUnLCAnYWZ0ZXInLCAnYXJvdW5kJ10uZm9yRWFjaChmdW5j
dGlvbihtKSB7Ci0gICAgICAgICAgdGhpc1ttXSA9IGZ1bmN0aW9uKG1ldGhvZCwgZm4pIHsKLQot
ICAgICAgICAgICAgY29tcG9zZS51bmxvY2tQcm9wZXJ0eSh0aGlzLCBtZXRob2QsIGZ1bmN0aW9u
KCkgewotICAgICAgICAgICAgICBpZiAodHlwZW9mIHRoaXNbbWV0aG9kXSA9PSAnZnVuY3Rpb24n
KSB7Ci0gICAgICAgICAgICAgICAgdGhpc1ttZXRob2RdID0gYWR2aWNlW21dKHRoaXNbbWV0aG9k
XSwgZm4pOwotICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHRoaXNbbWV0
aG9kXSA9IGZuOwotICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgcmV0dXJuIHRoaXNb
bWV0aG9kXTsKLSAgICAgICAgICAgIH0pOwotCi0gICAgICAgICAgfTsKLSAgICAgICAgfSwgdGhp
cyk7Ci0gICAgICB9Ci0gICAgfTsKLQotICAgIHJldHVybiBhZHZpY2U7Ci0gIH0KLSk7CmRpZmYg
LS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Rl
cGVuZGVuY3ktZXhhbXBsZXMvZmxpZ2h0L2Jvd2VyX2NvbXBvbmVudHMvZmxpZ2h0L2xpYi9iYXNl
LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9kZXBl
bmRlbmN5LWV4YW1wbGVzL2ZsaWdodC9ib3dlcl9jb21wb25lbnRzL2ZsaWdodC9saWIvYmFzZS5q
cwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmYxMWEwY2ExNTg1MGQ0OTEyMGU4NGVk
MzUwY2QyMTYyOWQ5OWZiYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Rl
cGVuZGVuY3ktZXhhbXBsZXMvZmxpZ2h0L2Jvd2VyX2NvbXBvbmVudHMvZmxpZ2h0L2xpYi9iYXNl
LmpzCisrKyAvZGV2L251bGwKQEAgLTEsMjE5ICswLDAgQEAKLS8vID09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLy8gQ29weXJpZ2h0IDIwMTMgVHdpdHRlciwgSW5j
Ci0vLyBMaWNlbnNlZCB1bmRlciBUaGUgTUlUIExpY2Vuc2UKLS8vIGh0dHA6Ly9vcGVuc291cmNl
Lm9yZy9saWNlbnNlcy9NSVQKLS8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotCi1kZWZpbmUoCi0KLSAgWwotICAgICcuL3V0aWxzJywKLSAgICAnLi9yZWdpc3Ry
eScsCi0gICAgJy4vZGVidWcnCi0gIF0sCi0KLSAgZnVuY3Rpb24odXRpbHMsIHJlZ2lzdHJ5LCBk
ZWJ1ZykgewotICAgICd1c2Ugc3RyaWN0JzsKLQotICAgIC8vIGNvbW1vbiBtaXhpbiBhbGxvY2F0
ZXMgYmFzaWMgZnVuY3Rpb25hbGl0eSAtIHVzZWQgYnkgYWxsIGNvbXBvbmVudCBwcm90b3R5cGVz
Ci0gICAgLy8gY2FsbGJhY2sgY29udGV4dCBpcyBib3VuZCB0byBjb21wb25lbnQKLSAgICB2YXIg
Y29tcG9uZW50SWQgPSAwOwotCi0gICAgZnVuY3Rpb24gdGVhcmRvd25JbnN0YW5jZShpbnN0YW5j
ZUluZm8pewotICAgICAgaW5zdGFuY2VJbmZvLmV2ZW50cy5zbGljZSgpLmZvckVhY2goZnVuY3Rp
b24oZXZlbnQpIHsKLSAgICAgICAgdmFyIGFyZ3MgPSBbZXZlbnQudHlwZV07Ci0KLSAgICAgICAg
ZXZlbnQuZWxlbWVudCAmJiBhcmdzLnVuc2hpZnQoZXZlbnQuZWxlbWVudCk7Ci0gICAgICAgICh0
eXBlb2YgZXZlbnQuY2FsbGJhY2sgPT0gJ2Z1bmN0aW9uJykgJiYgYXJncy5wdXNoKGV2ZW50LmNh
bGxiYWNrKTsKLQotICAgICAgICB0aGlzLm9mZi5hcHBseSh0aGlzLCBhcmdzKTsKLSAgICAgIH0s
IGluc3RhbmNlSW5mby5pbnN0YW5jZSk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gY2hlY2tTZXJp
YWxpemFibGUodHlwZSwgZGF0YSkgewotICAgICAgdHJ5IHsKLSAgICAgICAgd2luZG93LnBvc3RN
ZXNzYWdlKGRhdGEsICcqJyk7Ci0gICAgICB9IGNhdGNoKGUpIHsKLSAgICAgICAgY29uc29sZS5s
b2coJ3Vuc2VyaWFsaXphYmxlIGRhdGEgZm9yIGV2ZW50Jyx0eXBlLCc6JyxkYXRhKTsKLSAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKAotICAgICAgICAgIFsnVGhlIGV2ZW50JywgdHlwZSwgJ29uIGNv
bXBvbmVudCcsIHRoaXMudG9TdHJpbmcoKSwgJ3dhcyB0cmlnZ2VyZWQgd2l0aCBub24tc2VyaWFs
aXphYmxlIGRhdGEnXS5qb2luKCcgJykKLSAgICAgICAgKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAg
ICBmdW5jdGlvbiB3aXRoQmFzZSgpIHsKLQotICAgICAgLy8gZGVsZWdhdGUgdHJpZ2dlciwgYmlu
ZCBhbmQgdW5iaW5kIHRvIGFuIGVsZW1lbnQKLSAgICAgIC8vIGlmICRlbGVtZW50IG5vdCBzdXBw
bGllZCwgdXNlIGNvbXBvbmVudCdzIG5vZGUKLSAgICAgIC8vIG90aGVyIGFyZ3VtZW50cyBhcmUg
cGFzc2VkIG9uCi0gICAgICAvLyBldmVudCBjYW4gYmUgZWl0aGVyIGEgc3RyaW5nIHNwZWNpZnlp
bmcgdGhlIHR5cGUKLSAgICAgIC8vIG9mIHRoZSBldmVudCwgb3IgYSBoYXNoIHNwZWNpZnlpbmcg
Ym90aCB0aGUgdHlwZQotICAgICAgLy8gYW5kIGEgZGVmYXVsdCBmdW5jdGlvbiB0byBiZSBjYWxs
ZWQuCi0gICAgICB0aGlzLnRyaWdnZXIgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgdmFyICRlbGVt
ZW50LCB0eXBlLCBkYXRhLCBldmVudCwgZGVmYXVsdEZuOwotICAgICAgICB2YXIgbGFzdEluZGV4
ID0gYXJndW1lbnRzLmxlbmd0aCAtIDEsIGxhc3RBcmcgPSBhcmd1bWVudHNbbGFzdEluZGV4XTsK
LQotICAgICAgICBpZiAodHlwZW9mIGxhc3RBcmcgIT0gJ3N0cmluZycgJiYgIShsYXN0QXJnICYm
IGxhc3RBcmcuZGVmYXVsdEJlaGF2aW9yKSkgewotICAgICAgICAgIGxhc3RJbmRleC0tOwotICAg
ICAgICAgIGRhdGEgPSBsYXN0QXJnOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGxhc3RJbmRl
eCA9PSAxKSB7Ci0gICAgICAgICAgJGVsZW1lbnQgPSAkKGFyZ3VtZW50c1swXSk7Ci0gICAgICAg
ICAgZXZlbnQgPSBhcmd1bWVudHNbMV07Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgJGVs
ZW1lbnQgPSB0aGlzLiRub2RlOwotICAgICAgICAgIGV2ZW50ID0gYXJndW1lbnRzWzBdOwotICAg
ICAgICB9Ci0KLSAgICAgICAgaWYgKGV2ZW50LmRlZmF1bHRCZWhhdmlvcikgewotICAgICAgICAg
IGRlZmF1bHRGbiA9IGV2ZW50LmRlZmF1bHRCZWhhdmlvcjsKLSAgICAgICAgICBldmVudCA9ICQu
RXZlbnQoZXZlbnQudHlwZSk7Ci0gICAgICAgIH0KLQotICAgICAgICB0eXBlID0gZXZlbnQudHlw
ZSB8fCBldmVudDsKLQotICAgICAgICBpZiAoZGVidWcuZW5hYmxlZCAmJiB3aW5kb3cucG9zdE1l
c3NhZ2UpIHsKLSAgICAgICAgICBjaGVja1NlcmlhbGl6YWJsZS5jYWxsKHRoaXMsIHR5cGUsIGRh
dGEpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmF0dHIuZXZlbnREYXRh
ID09PSAnb2JqZWN0JykgewotICAgICAgICAgIGRhdGEgPSAkLmV4dGVuZCh0cnVlLCB7fSwgdGhp
cy5hdHRyLmV2ZW50RGF0YSwgZGF0YSk7Ci0gICAgICAgIH0KLQotICAgICAgICAkZWxlbWVudC50
cmlnZ2VyKChldmVudCB8fCB0eXBlKSwgZGF0YSk7Ci0KLSAgICAgICAgaWYgKGRlZmF1bHRGbiAm
JiAhZXZlbnQuaXNEZWZhdWx0UHJldmVudGVkKCkpIHsKLSAgICAgICAgICAodGhpc1tkZWZhdWx0
Rm5dIHx8IGRlZmF1bHRGbikuY2FsbCh0aGlzKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVy
biAkZWxlbWVudDsKLSAgICAgIH07Ci0KLSAgICAgIHRoaXMub24gPSBmdW5jdGlvbigpIHsKLSAg
ICAgICAgdmFyICRlbGVtZW50LCB0eXBlLCBjYWxsYmFjaywgb3JpZ2luYWxDYjsKLSAgICAgICAg
dmFyIGxhc3RJbmRleCA9IGFyZ3VtZW50cy5sZW5ndGggLSAxLCBvcmlnaW4gPSBhcmd1bWVudHNb
bGFzdEluZGV4XTsKLQotICAgICAgICBpZiAodHlwZW9mIG9yaWdpbiA9PSAnb2JqZWN0Jykgewot
ICAgICAgICAgIC8vZGVsZWdhdGUgY2FsbGJhY2sKLSAgICAgICAgICBvcmlnaW5hbENiID0gdXRp
bHMuZGVsZWdhdGUoCi0gICAgICAgICAgICB0aGlzLnJlc29sdmVEZWxlZ2F0ZVJ1bGVzKG9yaWdp
bikKLSAgICAgICAgICApOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIG9yaWdpbmFsQ2Ig
PSBvcmlnaW47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAobGFzdEluZGV4ID09IDIpIHsKLSAg
ICAgICAgICAkZWxlbWVudCA9ICQoYXJndW1lbnRzWzBdKTsKLSAgICAgICAgICB0eXBlID0gYXJn
dW1lbnRzWzFdOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICRlbGVtZW50ID0gdGhpcy4k
bm9kZTsKLSAgICAgICAgICB0eXBlID0gYXJndW1lbnRzWzBdOwotICAgICAgICB9Ci0KLSAgICAg
ICAgaWYgKHR5cGVvZiBvcmlnaW5hbENiICE9ICdmdW5jdGlvbicgJiYgdHlwZW9mIG9yaWdpbmFs
Q2IgIT0gJ29iamVjdCcpIHsKLSAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuYWJsZSB0byBi
aW5kIHRvICInICsgdHlwZSArICciIGJlY2F1c2UgdGhlIGdpdmVuIGNhbGxiYWNrIGlzIG5vdCBh
IGZ1bmN0aW9uIG9yIGFuIG9iamVjdCcpOwotICAgICAgICB9Ci0KLSAgICAgICAgY2FsbGJhY2sg
PSBvcmlnaW5hbENiLmJpbmQodGhpcyk7Ci0gICAgICAgIGNhbGxiYWNrLnRhcmdldCA9IG9yaWdp
bmFsQ2I7Ci0KLSAgICAgICAgLy8gaWYgdGhlIG9yaWdpbmFsIGNhbGxiYWNrIGlzIGFscmVhZHkg
YnJhbmRlZCBieSBqUXVlcnkncyBndWlkLCBjb3B5IGl0IHRvIHRoZSBjb250ZXh0LWJvdW5kIHZl
cnNpb24KLSAgICAgICAgaWYgKG9yaWdpbmFsQ2IuZ3VpZCkgewotICAgICAgICAgIGNhbGxiYWNr
Lmd1aWQgPSBvcmlnaW5hbENiLmd1aWQ7Ci0gICAgICAgIH0KLQotICAgICAgICAkZWxlbWVudC5v
bih0eXBlLCBjYWxsYmFjayk7Ci0KLSAgICAgICAgLy8gZ2V0IGpxdWVyeSdzIGd1aWQgZnJvbSBv
dXIgYm91bmQgZm4sIHNvIHVuYmluZGluZyB3aWxsIHdvcmsKLSAgICAgICAgb3JpZ2luYWxDYi5n
dWlkID0gY2FsbGJhY2suZ3VpZDsKLQotICAgICAgICByZXR1cm4gY2FsbGJhY2s7Ci0gICAgICB9
OwotCi0gICAgICB0aGlzLm9mZiA9IGZ1bmN0aW9uKCkgewotICAgICAgICB2YXIgJGVsZW1lbnQs
IHR5cGUsIGNhbGxiYWNrOwotICAgICAgICB2YXIgbGFzdEluZGV4ID0gYXJndW1lbnRzLmxlbmd0
aCAtIDE7Ci0KLSAgICAgICAgaWYgKHR5cGVvZiBhcmd1bWVudHNbbGFzdEluZGV4XSA9PSAnZnVu
Y3Rpb24nKSB7Ci0gICAgICAgICAgY2FsbGJhY2sgPSBhcmd1bWVudHNbbGFzdEluZGV4XTsKLSAg
ICAgICAgICBsYXN0SW5kZXggLT0gMTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChsYXN0SW5k
ZXggPT0gMSkgewotICAgICAgICAgICRlbGVtZW50ID0gJChhcmd1bWVudHNbMF0pOwotICAgICAg
ICAgIHR5cGUgPSBhcmd1bWVudHNbMV07Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgJGVs
ZW1lbnQgPSB0aGlzLiRub2RlOwotICAgICAgICAgIHR5cGUgPSBhcmd1bWVudHNbMF07Ci0gICAg
ICAgIH0KLQotICAgICAgICByZXR1cm4gJGVsZW1lbnQub2ZmKHR5cGUsIGNhbGxiYWNrKTsKLSAg
ICAgIH07Ci0KLSAgICAgIHRoaXMucmVzb2x2ZURlbGVnYXRlUnVsZXMgPSBmdW5jdGlvbihydWxl
SW5mbykgewotICAgICAgICB2YXIgcnVsZXMgPSB7fTsKLQotICAgICAgICBPYmplY3Qua2V5cyhy
dWxlSW5mbykuZm9yRWFjaChmdW5jdGlvbihyKSB7Ci0gICAgICAgICAgaWYgKCEociBpbiB0aGlz
LmF0dHIpKSB7Ci0gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbXBvbmVudCAiJyArIHRo
aXMudG9TdHJpbmcoKSArICciIHdhbnRzIHRvIGxpc3RlbiBvbiAiJyArIHIgKyAnIiBidXQgbm8g
c3VjaCBhdHRyaWJ1dGUgd2FzIGRlZmluZWQuJyk7Ci0gICAgICAgICAgfQotICAgICAgICAgIHJ1
bGVzW3RoaXMuYXR0cltyXV0gPSBydWxlSW5mb1tyXTsKLSAgICAgICAgfSwgdGhpcyk7Ci0KLSAg
ICAgICAgcmV0dXJuIHJ1bGVzOwotICAgICAgfTsKLQotICAgICAgdGhpcy5kZWZhdWx0QXR0cnMg
PSBmdW5jdGlvbihkZWZhdWx0cykgewotICAgICAgICB1dGlscy5wdXNoKHRoaXMuZGVmYXVsdHMs
IGRlZmF1bHRzLCB0cnVlKSB8fCAodGhpcy5kZWZhdWx0cyA9IGRlZmF1bHRzKTsKLSAgICAgIH07
Ci0KLSAgICAgIHRoaXMuc2VsZWN0ID0gZnVuY3Rpb24oYXR0cmlidXRlS2V5KSB7Ci0gICAgICAg
IHJldHVybiB0aGlzLiRub2RlLmZpbmQodGhpcy5hdHRyW2F0dHJpYnV0ZUtleV0pOwotICAgICAg
fTsKLQotICAgICAgdGhpcy5pbml0aWFsaXplID0gZnVuY3Rpb24obm9kZSwgYXR0cnMpIHsKLSAg
ICAgICAgYXR0cnMgfHwgKGF0dHJzID0ge30pOwotICAgICAgICAvL29ubHkgYXNzaWduIGlkZW50
aXR5IGlmIHRoZXJlIGlzbid0IG9uZSAoaW5pdGlhbGl6ZSBjYW4gYmUgY2FsbGVkIG11bHRpcGxl
IHRpbWVzKQotICAgICAgICB0aGlzLmlkZW50aXR5IHx8ICh0aGlzLmlkZW50aXR5ID0gY29tcG9u
ZW50SWQrKyk7Ci0KLSAgICAgICAgaWYgKCFub2RlKSB7Ci0gICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCdDb21wb25lbnQgbmVlZHMgYSBub2RlJyk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAo
bm9kZS5qcXVlcnkpIHsKLSAgICAgICAgICB0aGlzLm5vZGUgPSBub2RlWzBdOwotICAgICAgICAg
IHRoaXMuJG5vZGUgPSBub2RlOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIHRoaXMubm9k
ZSA9IG5vZGU7Ci0gICAgICAgICAgdGhpcy4kbm9kZSA9ICQobm9kZSk7Ci0gICAgICAgIH0KLQot
ICAgICAgICAvLyBtZXJnZSBkZWZhdWx0cyB3aXRoIHN1cHBsaWVkIG9wdGlvbnMKLSAgICAgICAg
Ly8gcHV0IG9wdGlvbnMgaW4gYXR0ci5fX3Byb3RvX18gdG8gYXZvaWQgbWVyZ2Ugb3ZlcmhlYWQK
LSAgICAgICAgdmFyIGF0dHIgPSBPYmplY3QuY3JlYXRlKGF0dHJzKTsKLSAgICAgICAgZm9yICh2
YXIga2V5IGluIHRoaXMuZGVmYXVsdHMpIHsKLSAgICAgICAgICBpZiAoIWF0dHJzLmhhc093blBy
b3BlcnR5KGtleSkpIHsKLSAgICAgICAgICAgIGF0dHJba2V5XSA9IHRoaXMuZGVmYXVsdHNba2V5
XTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLmF0dHIgPSBhdHRyOwot
Ci0gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuZGVmYXVsdHMgfHwge30pLmZvckVhY2goZnVuY3Rp
b24oa2V5KSB7Ci0gICAgICAgICAgaWYgKHRoaXMuZGVmYXVsdHNba2V5XSA9PT0gbnVsbCAmJiB0
aGlzLmF0dHJba2V5XSA9PT0gbnVsbCkgewotICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdS
ZXF1aXJlZCBhdHRyaWJ1dGUgIicgKyBrZXkgKyAnIiBub3Qgc3BlY2lmaWVkIGluIGF0dGFjaFRv
IGZvciBjb21wb25lbnQgIicgKyB0aGlzLnRvU3RyaW5nKCkgKyAnIi4nKTsKLSAgICAgICAgICB9
Ci0gICAgICAgIH0sIHRoaXMpOwotCi0gICAgICAgIHJldHVybiB0aGlzOwotICAgICAgfTsKLQot
ICAgICAgdGhpcy50ZWFyZG93biA9IGZ1bmN0aW9uKCkgewotICAgICAgICB0ZWFyZG93bkluc3Rh
bmNlKHJlZ2lzdHJ5LmZpbmRJbnN0YW5jZUluZm8odGhpcykpOwotICAgICAgfTsKLSAgICB9Ci0K
LSAgICByZXR1cm4gd2l0aEJhc2U7Ci0gIH0KLSk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2RlcGVuZGVuY3ktZXhhbXBsZXMvZmxp
Z2h0L2Jvd2VyX2NvbXBvbmVudHMvZmxpZ2h0L2xpYi9jb21wb25lbnQuanMgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2RlcGVuZGVuY3ktZXhhbXBsZXMv
ZmxpZ2h0L2Jvd2VyX2NvbXBvbmVudHMvZmxpZ2h0L2xpYi9jb21wb25lbnQuanMKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyYzhiNTUwNTU0NWQxNTJlNDBlYjgwOGIyYjI1MTkxNTU1
ZTYwMGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9kZXBlbmRlbmN5LWV4
YW1wbGVzL2ZsaWdodC9ib3dlcl9jb21wb25lbnRzL2ZsaWdodC9saWIvY29tcG9uZW50LmpzCisr
KyAvZGV2L251bGwKQEAgLTEsMTIwICswLDAgQEAKLS8vID09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLy8gQ29weXJpZ2h0IDIwMTMgVHdpdHRlciwgSW5jCi0vLyBM
aWNlbnNlZCB1bmRlciBUaGUgTUlUIExpY2Vuc2UKLS8vIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9s
aWNlbnNlcy9NSVQKLS8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotCi1kZWZpbmUoCi0KLSAgWwotICAgICcuL2FkdmljZScsCi0gICAgJy4vdXRpbHMnLAotICAg
ICcuL2NvbXBvc2UnLAotICAgICcuL2Jhc2UnLAotICAgICcuL3JlZ2lzdHJ5JywKLSAgICAnLi9s
b2dnZXInLAotICAgICcuL2RlYnVnJwotICBdLAotCi0gIGZ1bmN0aW9uKGFkdmljZSwgdXRpbHMs
IGNvbXBvc2UsIHdpdGhCYXNlLCByZWdpc3RyeSwgd2l0aExvZ2dpbmcsIGRlYnVnKSB7Ci0gICAg
J3VzZSBzdHJpY3QnOwotCi0gICAgdmFyIGZ1bmN0aW9uTmFtZVJlZ0V4ID0gL2Z1bmN0aW9uICgu
Kj8pXHM/XCgvOwotCi0gICAgLy8gdGVhcmRvd24gZm9yIGFsbCBpbnN0YW5jZXMgb2YgdGhpcyBj
b25zdHJ1Y3RvcgotICAgIGZ1bmN0aW9uIHRlYXJkb3duQWxsKCkgewotICAgICAgdmFyIGNvbXBv
bmVudEluZm8gPSByZWdpc3RyeS5maW5kQ29tcG9uZW50SW5mbyh0aGlzKTsKLQotICAgICAgY29t
cG9uZW50SW5mbyAmJiBPYmplY3Qua2V5cyhjb21wb25lbnRJbmZvLmluc3RhbmNlcykuZm9yRWFj
aChmdW5jdGlvbihrKSB7Ci0gICAgICAgIHZhciBpbmZvID0gY29tcG9uZW50SW5mby5pbnN0YW5j
ZXNba107Ci0gICAgICAgIGluZm8uaW5zdGFuY2UudGVhcmRvd24oKTsKLSAgICAgIH0pOwotICAg
IH0KLQotICAgIGZ1bmN0aW9uIGNoZWNrU2VyaWFsaXphYmxlKHR5cGUsIGRhdGEpIHsKLSAgICAg
IHRyeSB7Ci0gICAgICAgIHdpbmRvdy5wb3N0TWVzc2FnZShkYXRhLCAnKicpOwotICAgICAgfSBj
YXRjaChlKSB7Ci0gICAgICAgIGNvbnNvbGUubG9nKCd1bnNlcmlhbGl6YWJsZSBkYXRhIGZvciBl
dmVudCcsdHlwZSwnOicsZGF0YSk7Ci0gICAgICAgIHRocm93IG5ldyBFcnJvcigKLSAgICAgICAg
ICBbJ1RoZSBldmVudCcsIHR5cGUsICdvbiBjb21wb25lbnQnLCB0aGlzLnRvU3RyaW5nKCksICd3
YXMgdHJpZ2dlcmVkIHdpdGggbm9uLXNlcmlhbGl6YWJsZSBkYXRhJ10uam9pbignICcpCi0gICAg
ICAgICk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gYXR0YWNoVG8oc2VsZWN0b3Iv
Kiwgb3B0aW9ucyBhcmdzICovKSB7Ci0gICAgICAvLyB1bnBhY2tpbmcgYXJndW1lbnRzIGJ5IGhh
bmQgYmVuY2htYXJrZWQgZmFzdGVyCi0gICAgICB2YXIgbCA9IGFyZ3VtZW50cy5sZW5ndGg7Ci0g
ICAgICB2YXIgYXJncyA9IG5ldyBBcnJheShsIC0gMSk7Ci0gICAgICBmb3IgKHZhciBpID0gMTsg
aSA8IGw7IGkrKykgYXJnc1tpIC0gMV0gPSBhcmd1bWVudHNbaV07Ci0KLSAgICAgIGlmICghc2Vs
ZWN0b3IpIHsKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb21wb25lbnQgbmVlZHMgdG8gYmUg
YXR0YWNoVG9cJ2QgYSBqUXVlcnkgb2JqZWN0LCBuYXRpdmUgbm9kZSBvciBzZWxlY3RvciBzdHJp
bmcnKTsKLSAgICAgIH0KLQotICAgICAgdmFyIG9wdGlvbnMgPSB1dGlscy5tZXJnZS5hcHBseSh1
dGlscywgYXJncyk7Ci0gICAgICB2YXIgY29tcG9uZW50SW5mbyA9IHJlZ2lzdHJ5LmZpbmRDb21w
b25lbnRJbmZvKHRoaXMpOwotCi0gICAgICAkKHNlbGVjdG9yKS5lYWNoKGZ1bmN0aW9uKGksIG5v
ZGUpIHsKLSAgICAgICAgaWYgKGNvbXBvbmVudEluZm8gJiYgY29tcG9uZW50SW5mby5pc0F0dGFj
aGVkVG8obm9kZSkpIHsKLSAgICAgICAgICAvLyBhbHJlYWR5IGF0dGFjaGVkCi0gICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgKG5ldyB0aGlzKS5pbml0aWFsaXplKG5vZGUs
IG9wdGlvbnMpOwotICAgICAgfS5iaW5kKHRoaXMpKTsKLSAgICB9Ci0KLSAgICAvLyBkZWZpbmUg
dGhlIGNvbnN0cnVjdG9yIGZvciBhIGN1c3RvbSBjb21wb25lbnQgdHlwZQotICAgIC8vIHRha2Vz
IGFuIHVubGltaXRlZCBudW1iZXIgb2YgbWl4aW4gZnVuY3Rpb25zIGFzIGFyZ3VtZW50cwotICAg
IC8vIHR5cGljYWwgYXBpIGNhbGwgd2l0aCAzIG1peGluczogZGVmaW5lKHRpbWVsaW5lLCB3aXRo
VHdlZXRDYXBhYmlsaXR5LCB3aXRoU2Nyb2xsQ2FwYWJpbGl0eSk7Ci0gICAgZnVuY3Rpb24gZGVm
aW5lKC8qbWl4aW5zKi8pIHsKLSAgICAgIC8vIHVucGFja2luZyBhcmd1bWVudHMgYnkgaGFuZCBi
ZW5jaG1hcmtlZCBmYXN0ZXIKLSAgICAgIHZhciBsID0gYXJndW1lbnRzLmxlbmd0aDsKLSAgICAg
IC8vIGFkZCB0aHJlZSBmb3IgY29tbW9uIG1peGlucwotICAgICAgdmFyIG1peGlucyA9IG5ldyBB
cnJheShsICsgMyk7Ci0gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGw7IGkrKykgbWl4aW5zW2ld
ID0gYXJndW1lbnRzW2ldOwotCi0gICAgICB2YXIgQ29tcG9uZW50ID0gZnVuY3Rpb24oKSB7fTsK
LQotICAgICAgQ29tcG9uZW50LnRvU3RyaW5nID0gQ29tcG9uZW50LnByb3RvdHlwZS50b1N0cmlu
ZyA9IGZ1bmN0aW9uKCkgewotICAgICAgICB2YXIgcHJldHR5UHJpbnRNaXhpbnMgPSBtaXhpbnMu
bWFwKGZ1bmN0aW9uKG1peGluKSB7Ci0gICAgICAgICAgaWYgKG1peGluLm5hbWUgPT0gbnVsbCkg
ewotICAgICAgICAgICAgLy8gZnVuY3Rpb24gbmFtZSBwcm9wZXJ0eSBub3Qgc3VwcG9ydGVkIGJ5
IHRoaXMgYnJvd3NlciwgdXNlIHJlZ2V4Ci0gICAgICAgICAgICB2YXIgbSA9IG1peGluLnRvU3Ry
aW5nKCkubWF0Y2goZnVuY3Rpb25OYW1lUmVnRXgpOwotICAgICAgICAgICAgcmV0dXJuIChtICYm
IG1bMV0pID8gbVsxXSA6ICcnOwotICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByZXR1
cm4gKG1peGluLm5hbWUgIT0gJ3dpdGhCYXNlJykgPyBtaXhpbi5uYW1lIDogJyc7Ci0gICAgICAg
ICAgfQotICAgICAgICB9KS5maWx0ZXIoQm9vbGVhbikuam9pbignLCAnKTsKLSAgICAgICAgcmV0
dXJuIHByZXR0eVByaW50TWl4aW5zOwotICAgICAgfTsKLQotICAgICAgaWYgKGRlYnVnLmVuYWJs
ZWQpIHsKLSAgICAgICAgQ29tcG9uZW50LmRlc2NyaWJlID0gQ29tcG9uZW50LnByb3RvdHlwZS5k
ZXNjcmliZSA9IENvbXBvbmVudC50b1N0cmluZygpOwotICAgICAgfQotCi0gICAgICAvLyAnb3B0
aW9ucycgaXMgb3B0aW9uYWwgaGFzaCB0byBiZSBtZXJnZWQgd2l0aCAnZGVmYXVsdHMnIGluIHRo
ZSBjb21wb25lbnQgZGVmaW5pdGlvbgotICAgICAgQ29tcG9uZW50LmF0dGFjaFRvID0gYXR0YWNo
VG87Ci0gICAgICBDb21wb25lbnQudGVhcmRvd25BbGwgPSB0ZWFyZG93bkFsbDsKLQotICAgICAg
Ly8gcHJlcGVuZCBjb21tb24gbWl4aW5zIHRvIHN1cHBsaWVkIGxpc3QsIHRoZW4gbWl4aW4gYWxs
IGZsYXZvcnMKLSAgICAgIGlmIChkZWJ1Zy5lbmFibGVkKSB7Ci0gICAgICAgIG1peGlucy51bnNo
aWZ0KHdpdGhMb2dnaW5nKTsKLSAgICAgIH0KLSAgICAgIG1peGlucy51bnNoaWZ0KHdpdGhCYXNl
LCBhZHZpY2Uud2l0aEFkdmljZSwgcmVnaXN0cnkud2l0aFJlZ2lzdHJhdGlvbik7Ci0gICAgICBj
b21wb3NlLm1peGluKENvbXBvbmVudC5wcm90b3R5cGUsIG1peGlucyk7Ci0KLSAgICAgIHJldHVy
biBDb21wb25lbnQ7Ci0gICAgfQotCi0gICAgZGVmaW5lLnRlYXJkb3duQWxsID0gZnVuY3Rpb24o
KSB7Ci0gICAgICByZWdpc3RyeS5jb21wb25lbnRzLnNsaWNlKCkuZm9yRWFjaChmdW5jdGlvbihj
KSB7Ci0gICAgICAgIGMuY29tcG9uZW50LnRlYXJkb3duQWxsKCk7Ci0gICAgICB9KTsKLSAgICAg
IHJlZ2lzdHJ5LnJlc2V0KCk7Ci0gICAgfTsKLQotICAgIHJldHVybiBkZWZpbmU7Ci0gIH0KLSk7
CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2RlcGVuZGVuY3ktZXhhbXBsZXMvZmxpZ2h0L2Jvd2VyX2NvbXBvbmVudHMvZmxpZ2h0L2xp
Yi9jb21wb3NlLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9kZXBlbmRlbmN5LWV4YW1wbGVzL2ZsaWdodC9ib3dlcl9jb21wb25lbnRzL2ZsaWdodC9s
aWIvY29tcG9zZS5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmQ3OWQ5OWVlMDll
Mjk2YmE5MzkxMTQxOTUyYTMzZWIxYmUwN2Y5OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2RlcGVuZGVuY3ktZXhhbXBsZXMvZmxpZ2h0L2Jvd2VyX2NvbXBvbmVudHMvZmxp
Z2h0L2xpYi9jb21wb3NlLmpzCisrKyAvZGV2L251bGwKQEAgLTEsODUgKzAsMCBAQAotLy8gPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0vLyBDb3B5cmlnaHQgMjAx
MyBUd2l0dGVyLCBJbmMKLS8vIExpY2Vuc2VkIHVuZGVyIFRoZSBNSVQgTGljZW5zZQotLy8gaHR0
cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVAotLy8gPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0KLWRlZmluZSgKLQotICBbCi0gICAgJy4vdXRpbHMnLAot
ICAgICcuL2RlYnVnJwotICBdLAotCi0gIGZ1bmN0aW9uKHV0aWxzLCBkZWJ1ZykgewotICAgICd1
c2Ugc3RyaWN0JzsKLQotICAgIC8vZW51bWVyYWJsZXMgYXJlIHNoaW1zIC0gZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yIHNoaW0gZG9lc24ndCB3b3JrCi0gICAgdmFyIGNhbldyaXRlUHJvdGVjdCA9
IGRlYnVnLmVuYWJsZWQgJiYgIXV0aWxzLmlzRW51bWVyYWJsZShPYmplY3QsICdnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3InKTsKLSAgICAvL3doaXRlbGlzdCBvZiB1bmxvY2thYmxlIHByb3BlcnR5
IG5hbWVzCi0gICAgdmFyIGRvbnRMb2NrID0gWydtaXhlZEluJ107Ci0KLSAgICBpZiAoY2FuV3Jp
dGVQcm90ZWN0KSB7Ci0gICAgICAvL0lFOCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgaXMgYnVp
bHQtaW4gYnV0IHRocm93cyBleGVwdGlvbiBvbiBub24gRE9NIG9iamVjdHMKLSAgICAgIHRyeSB7
Ci0gICAgICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0LCAna2V5cycp
OwotICAgICAgfSBjYXRjaChlKSB7Ci0gICAgICAgIGNhbldyaXRlUHJvdGVjdCA9IGZhbHNlOwot
ICAgICAgfQotICAgIH0KLQotICAgIGZ1bmN0aW9uIHNldFByb3BlcnR5V3JpdGFiaWxpdHkob2Jq
LCBpc1dyaXRhYmxlKSB7Ci0gICAgICBpZiAoIWNhbldyaXRlUHJvdGVjdCkgewotICAgICAgICBy
ZXR1cm47Ci0gICAgICB9Ci0KLSAgICAgIHZhciBwcm9wcyA9IE9iamVjdC5jcmVhdGUobnVsbCk7
Ci0KLSAgICAgIE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaCgKLSAgICAgICAgZnVuY3Rpb24gKGtl
eSkgewotICAgICAgICAgIGlmIChkb250TG9jay5pbmRleE9mKGtleSkgPCAwKSB7Ci0gICAgICAg
ICAgICB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBrZXkp
OwotICAgICAgICAgICAgZGVzYy53cml0YWJsZSA9IGlzV3JpdGFibGU7Ci0gICAgICAgICAgICBw
cm9wc1trZXldID0gZGVzYzsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICk7Ci0KLSAg
ICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKG9iaiwgcHJvcHMpOwotICAgIH0KLQotICAgIGZ1
bmN0aW9uIHVubG9ja1Byb3BlcnR5KG9iaiwgcHJvcCwgb3ApIHsKLSAgICAgIHZhciB3cml0YWJs
ZTsKLQotICAgICAgaWYgKCFjYW5Xcml0ZVByb3RlY3QgfHwgIW9iai5oYXNPd25Qcm9wZXJ0eShw
cm9wKSkgewotICAgICAgICBvcC5jYWxsKG9iaik7Ci0gICAgICAgIHJldHVybjsKLSAgICAgIH0K
LQotICAgICAgd3JpdGFibGUgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwg
cHJvcCkud3JpdGFibGU7Ci0gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBwcm9wLCB7
IHdyaXRhYmxlOiB0cnVlIH0pOwotICAgICAgb3AuY2FsbChvYmopOwotICAgICAgT2JqZWN0LmRl
ZmluZVByb3BlcnR5KG9iaiwgcHJvcCwgeyB3cml0YWJsZTogd3JpdGFibGUgfSk7Ci0gICAgfQot
Ci0gICAgZnVuY3Rpb24gbWl4aW4oYmFzZSwgbWl4aW5zKSB7Ci0gICAgICBiYXNlLm1peGVkSW4g
PSBiYXNlLmhhc093blByb3BlcnR5KCdtaXhlZEluJykgPyBiYXNlLm1peGVkSW4gOiBbXTsKLQot
ICAgICAgbWl4aW5zLmZvckVhY2goZnVuY3Rpb24obWl4aW4pIHsKLSAgICAgICAgaWYgKGJhc2Uu
bWl4ZWRJbi5pbmRleE9mKG1peGluKSA9PSAtMSkgewotICAgICAgICAgIHNldFByb3BlcnR5V3Jp
dGFiaWxpdHkoYmFzZSwgZmFsc2UpOwotICAgICAgICAgIG1peGluLmNhbGwoYmFzZSk7Ci0gICAg
ICAgICAgYmFzZS5taXhlZEluLnB1c2gobWl4aW4pOwotICAgICAgICB9Ci0gICAgICB9KTsKLQot
ICAgICAgc2V0UHJvcGVydHlXcml0YWJpbGl0eShiYXNlLCB0cnVlKTsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gewotICAgICAgbWl4aW46IG1peGluLAotICAgICAgdW5sb2NrUHJvcGVydHk6IHVubG9j
a1Byb3BlcnR5Ci0gICAgfTsKLQotICB9Ci0pOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9kZXBlbmRlbmN5LWV4YW1wbGVzL2ZsaWdo
dC9ib3dlcl9jb21wb25lbnRzL2ZsaWdodC9saWIvZGVidWcuanMgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2RlcGVuZGVuY3ktZXhhbXBsZXMvZmxpZ2h0
L2Jvd2VyX2NvbXBvbmVudHMvZmxpZ2h0L2xpYi9kZWJ1Zy5qcwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMjY3MGFjZmIzNWE4ZmQyMTZmZDAxYjcxZDcyODA4OGQ2MTA2M2M4Ny4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2RlcGVuZGVuY3ktZXhhbXBsZXMvZmxp
Z2h0L2Jvd2VyX2NvbXBvbmVudHMvZmxpZ2h0L2xpYi9kZWJ1Zy5qcworKysgL2Rldi9udWxsCkBA
IC0xLDE1NyArMCwwIEBACi0vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS8vIENvcHlyaWdodCAyMDEzIFR3aXR0ZXIsIEluYwotLy8gTGljZW5zZWQgdW5kZXIg
VGhlIE1JVCBMaWNlbnNlCi0vLyBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUCi0v
LyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotZGVmaW5lKAot
Ci0gIFtdLAotCi0gIGZ1bmN0aW9uKCkgewotICAgICd1c2Ugc3RyaWN0JzsKLQotICAgIC8vKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICAgLy8gU2VhcmNoIG9iamVjdCBtb2Rl
bAotICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSAgICBmdW5jdGlv
biB0cmF2ZXJzZSh1dGlsLCBzZWFyY2hUZXJtLCBvcHRpb25zKSB7Ci0gICAgICBvcHRpb25zID0g
b3B0aW9ucyB8fCB7fTsKLSAgICAgIHZhciBvYmogPSBvcHRpb25zLm9iaiB8fCB3aW5kb3c7Ci0g
ICAgICB2YXIgcGF0aCA9IG9wdGlvbnMucGF0aCB8fCAoKG9iaj09d2luZG93KSA/ICd3aW5kb3cn
IDogJycpOwotICAgICAgdmFyIHByb3BzID0gT2JqZWN0LmtleXMob2JqKTsKLSAgICAgIHByb3Bz
LmZvckVhY2goZnVuY3Rpb24ocHJvcCkgewotICAgICAgICBpZiAoKHRlc3RzW3V0aWxdIHx8IHV0
aWwpKHNlYXJjaFRlcm0sIG9iaiwgcHJvcCkpewotICAgICAgICAgIGNvbnNvbGUubG9nKFtwYXRo
LCAnLicsIHByb3BdLmpvaW4oJycpLCAnLT4nLCBbJygnLCB0eXBlb2Ygb2JqW3Byb3BdLCAnKSdd
LmpvaW4oJycpLCBvYmpbcHJvcF0pOwotICAgICAgICB9Ci0gICAgICAgIGlmIChPYmplY3QucHJv
dG90eXBlLnRvU3RyaW5nLmNhbGwob2JqW3Byb3BdKSA9PSAnW29iamVjdCBPYmplY3RdJyAmJiAo
b2JqW3Byb3BdICE9IG9iaikgJiYgcGF0aC5zcGxpdCgnLicpLmluZGV4T2YocHJvcCkgPT0gLTEp
IHsKLSAgICAgICAgICB0cmF2ZXJzZSh1dGlsLCBzZWFyY2hUZXJtLCB7b2JqOiBvYmpbcHJvcF0s
IHBhdGg6IFtwYXRoLHByb3BdLmpvaW4oJy4nKX0pOwotICAgICAgICB9Ci0gICAgICB9KTsKLSAg
ICB9Ci0KLSAgICBmdW5jdGlvbiBzZWFyY2godXRpbCwgZXhwZWN0ZWQsIHNlYXJjaFRlcm0sIG9w
dGlvbnMpIHsKLSAgICAgIGlmICghZXhwZWN0ZWQgfHwgdHlwZW9mIHNlYXJjaFRlcm0gPT0gZXhw
ZWN0ZWQpIHsKLSAgICAgICAgdHJhdmVyc2UodXRpbCwgc2VhcmNoVGVybSwgb3B0aW9ucyk7Ci0g
ICAgICB9IGVsc2UgewotICAgICAgICBjb25zb2xlLmVycm9yKFtzZWFyY2hUZXJtLCAnbXVzdCBi
ZScsIGV4cGVjdGVkXS5qb2luKCcgJykpOwotICAgICAgfQotICAgIH0KLQotICAgIHZhciB0ZXN0
cyA9IHsKLSAgICAgICduYW1lJzogZnVuY3Rpb24oc2VhcmNoVGVybSwgb2JqLCBwcm9wKSB7cmV0
dXJuIHNlYXJjaFRlcm0gPT0gcHJvcDt9LAotICAgICAgJ25hbWVDb250YWlucyc6IGZ1bmN0aW9u
KHNlYXJjaFRlcm0sIG9iaiwgcHJvcCkge3JldHVybiBwcm9wLmluZGV4T2Yoc2VhcmNoVGVybSkg
PiAtMTt9LAotICAgICAgJ3R5cGUnOiBmdW5jdGlvbihzZWFyY2hUZXJtLCBvYmosIHByb3ApIHty
ZXR1cm4gb2JqW3Byb3BdIGluc3RhbmNlb2Ygc2VhcmNoVGVybTt9LAotICAgICAgJ3ZhbHVlJzog
ZnVuY3Rpb24oc2VhcmNoVGVybSwgb2JqLCBwcm9wKSB7cmV0dXJuIG9ialtwcm9wXSA9PT0gc2Vh
cmNoVGVybTt9LAotICAgICAgJ3ZhbHVlQ29lcmNlZCc6IGZ1bmN0aW9uKHNlYXJjaFRlcm0sIG9i
aiwgcHJvcCkge3JldHVybiBvYmpbcHJvcF0gPT0gc2VhcmNoVGVybTt9Ci0gICAgfTsKLQotICAg
IGZ1bmN0aW9uIGJ5TmFtZShzZWFyY2hUZXJtLCBvcHRpb25zKSB7c2VhcmNoKCduYW1lJywgJ3N0
cmluZycsIHNlYXJjaFRlcm0sIG9wdGlvbnMpO30KLSAgICBmdW5jdGlvbiBieU5hbWVDb250YWlu
cyhzZWFyY2hUZXJtLCBvcHRpb25zKSB7c2VhcmNoKCduYW1lQ29udGFpbnMnLCAnc3RyaW5nJywg
c2VhcmNoVGVybSwgb3B0aW9ucyk7fQotICAgIGZ1bmN0aW9uIGJ5VHlwZShzZWFyY2hUZXJtLCBv
cHRpb25zKSB7c2VhcmNoKCd0eXBlJywgJ2Z1bmN0aW9uJywgc2VhcmNoVGVybSwgb3B0aW9ucyk7
fQotICAgIGZ1bmN0aW9uIGJ5VmFsdWUoc2VhcmNoVGVybSwgb3B0aW9ucykge3NlYXJjaCgndmFs
dWUnLCBudWxsLCBzZWFyY2hUZXJtLCBvcHRpb25zKTt9Ci0gICAgZnVuY3Rpb24gYnlWYWx1ZUNv
ZXJjZWQoc2VhcmNoVGVybSwgb3B0aW9ucykge3NlYXJjaCgndmFsdWVDb2VyY2VkJywgbnVsbCwg
c2VhcmNoVGVybSwgb3B0aW9ucyk7fQotICAgIGZ1bmN0aW9uIGN1c3RvbShmbiwgb3B0aW9ucykg
e3RyYXZlcnNlKGZuLCBudWxsLCBvcHRpb25zKTt9Ci0KLSAgICAvLyoqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKgotICAgIC8vIEV2ZW50IGxvZ2dpbmcKLSAgICAvLyoqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKgotCi0gICAgdmFyIEFMTCA9ICdhbGwnOyAvL25vIGZpbHRl
cgotCi0gICAgLy9ubyBsb2dnaW5nIGJ5IGRlZmF1bHQKLSAgICB2YXIgZGVmYXVsdEV2ZW50TmFt
ZXNGaWx0ZXIgPSBbXTsKLSAgICB2YXIgZGVmYXVsdEFjdGlvbnNGaWx0ZXIgPSBbXTsKLQotICAg
IHZhciBsb2dGaWx0ZXIgPSByZXRyaWV2ZUxvZ0ZpbHRlcigpOwotCi0gICAgZnVuY3Rpb24gZmls
dGVyRXZlbnRMb2dzQnlBY3Rpb24oLyphY3Rpb25zKi8pIHsKLSAgICAgIHZhciBhY3Rpb25zID0g
W10uc2xpY2UuY2FsbChhcmd1bWVudHMpOwotCi0gICAgICBsb2dGaWx0ZXIuZXZlbnROYW1lcy5s
ZW5ndGggfHwgKGxvZ0ZpbHRlci5ldmVudE5hbWVzID0gQUxMKTsKLSAgICAgIGxvZ0ZpbHRlci5h
Y3Rpb25zID0gYWN0aW9ucy5sZW5ndGggPyBhY3Rpb25zIDogQUxMOwotICAgICAgc2F2ZUxvZ0Zp
bHRlcigpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGZpbHRlckV2ZW50TG9nc0J5TmFtZSgvKmV2
ZW50TmFtZXMqLykgewotICAgICAgdmFyIGV2ZW50TmFtZXMgPSBbXS5zbGljZS5jYWxsKGFyZ3Vt
ZW50cyk7Ci0KLSAgICAgIGxvZ0ZpbHRlci5hY3Rpb25zLmxlbmd0aCB8fCAobG9nRmlsdGVyLmFj
dGlvbnMgPSBBTEwpOwotICAgICAgbG9nRmlsdGVyLmV2ZW50TmFtZXMgPSBldmVudE5hbWVzLmxl
bmd0aCA/IGV2ZW50TmFtZXMgOiBBTEw7Ci0gICAgICBzYXZlTG9nRmlsdGVyKCk7Ci0gICAgfQot
Ci0gICAgZnVuY3Rpb24gaGlkZUFsbEV2ZW50TG9ncygpIHsKLSAgICAgIGxvZ0ZpbHRlci5hY3Rp
b25zID0gW107Ci0gICAgICBsb2dGaWx0ZXIuZXZlbnROYW1lcyA9IFtdOwotICAgICAgc2F2ZUxv
Z0ZpbHRlcigpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHNob3dBbGxFdmVudExvZ3MoKSB7Ci0g
ICAgICBsb2dGaWx0ZXIuYWN0aW9ucyA9IEFMTDsKLSAgICAgIGxvZ0ZpbHRlci5ldmVudE5hbWVz
ID0gQUxMOwotICAgICAgc2F2ZUxvZ0ZpbHRlcigpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHNh
dmVMb2dGaWx0ZXIoKSB7Ci0gICAgICBpZiAod2luZG93LmxvY2FsU3RvcmFnZSkgewotICAgICAg
ICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnbG9nRmlsdGVyX2V2ZW50TmFtZXMnLCBsb2dGaWx0ZXIu
ZXZlbnROYW1lcyk7Ci0gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdsb2dGaWx0ZXJfYWN0
aW9ucycsIGxvZ0ZpbHRlci5hY3Rpb25zKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICBmdW5jdGlv
biByZXRyaWV2ZUxvZ0ZpbHRlcigpIHsKLSAgICAgIHZhciByZXN1bHQgPSB7Ci0gICAgICAgIGV2
ZW50TmFtZXM6ICh3aW5kb3cubG9jYWxTdG9yYWdlICYmIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCds
b2dGaWx0ZXJfZXZlbnROYW1lcycpKSB8fCBkZWZhdWx0RXZlbnROYW1lc0ZpbHRlciwKLSAgICAg
ICAgYWN0aW9uczogKHdpbmRvdy5sb2NhbFN0b3JhZ2UgJiYgbG9jYWxTdG9yYWdlLmdldEl0ZW0o
J2xvZ0ZpbHRlcl9hY3Rpb25zJykpIHx8IGRlZmF1bHRBY3Rpb25zRmlsdGVyCi0gICAgICB9Owot
Ci0gICAgICAvLyByZWNvbnN0aXR1dGUgYXJyYXlzCi0gICAgICBPYmplY3Qua2V5cyhyZXN1bHQp
LmZvckVhY2goZnVuY3Rpb24oaykgewotICAgICAgICB2YXIgdGhpc1Byb3AgPSByZXN1bHRba107
Ci0gICAgICAgIGlmICh0eXBlb2YgdGhpc1Byb3AgPT0gJ3N0cmluZycgJiYgdGhpc1Byb3AgIT09
IEFMTCkgewotICAgICAgICAgIHJlc3VsdFtrXSA9IHRoaXNQcm9wLnNwbGl0KCcsJyk7Ci0gICAg
ICAgIH0KLSAgICAgIH0pOwotICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICByZXR1
cm4gewotCi0gICAgICBlbmFibGU6IGZ1bmN0aW9uKGVuYWJsZSkgewotICAgICAgICB0aGlzLmVu
YWJsZWQgPSAhIWVuYWJsZTsKLQotICAgICAgICBpZiAoZW5hYmxlICYmIHdpbmRvdy5jb25zb2xl
KSB7Ci0gICAgICAgICAgY29uc29sZS5pbmZvKCdCb290aW5nIGluIERFQlVHIG1vZGUnKTsKLSAg
ICAgICAgICBjb25zb2xlLmluZm8oJ1lvdSBjYW4gY29uZmlndXJlIGV2ZW50IGxvZ2dpbmcgd2l0
aCBERUJVRy5ldmVudHMubG9nQWxsKCkvbG9nTm9uZSgpL2xvZ0J5TmFtZSgpL2xvZ0J5QWN0aW9u
KCknKTsKLSAgICAgICAgfQotCi0gICAgICAgIHdpbmRvdy5ERUJVRyA9IHRoaXM7Ci0gICAgICB9
LAotCi0gICAgICBmaW5kOiB7Ci0gICAgICAgIGJ5TmFtZTogYnlOYW1lLAotICAgICAgICBieU5h
bWVDb250YWluczogYnlOYW1lQ29udGFpbnMsCi0gICAgICAgIGJ5VHlwZTogYnlUeXBlLAotICAg
ICAgICBieVZhbHVlOiBieVZhbHVlLAotICAgICAgICBieVZhbHVlQ29lcmNlZDogYnlWYWx1ZUNv
ZXJjZWQsCi0gICAgICAgIGN1c3RvbTogY3VzdG9tCi0gICAgICB9LAotCi0gICAgICBldmVudHM6
IHsKLSAgICAgICAgbG9nRmlsdGVyOiBsb2dGaWx0ZXIsCi0KLSAgICAgICAgLy8gQWNjZXB0cyBh
bnkgbnVtYmVyIG9mIGFjdGlvbiBhcmdzCi0gICAgICAgIC8vIGUuZy4gREVCVUcuZXZlbnRzLmxv
Z0J5QWN0aW9uKCJvbiIsICJvZmYiKQotICAgICAgICBsb2dCeUFjdGlvbjogZmlsdGVyRXZlbnRM
b2dzQnlBY3Rpb24sCi0KLSAgICAgICAgLy8gQWNjZXB0cyBhbnkgbnVtYmVyIG9mIGV2ZW50IG5h
bWUgYXJncyAoaW5jLiByZWdleCBvciB3aWxkY2FyZHMpCi0gICAgICAgIC8vIGUuZy4gREVCVUcu
ZXZlbnRzLmxvZ0J5TmFtZSgvdWkuKi8sICIqVGhyZWFkKiIpOwotICAgICAgICBsb2dCeU5hbWU6
IGZpbHRlckV2ZW50TG9nc0J5TmFtZSwKLQotICAgICAgICBsb2dBbGw6IHNob3dBbGxFdmVudExv
Z3MsCi0gICAgICAgIGxvZ05vbmU6IGhpZGVBbGxFdmVudExvZ3MKLSAgICAgIH0KLSAgICB9Owot
ICB9Ci0pOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9kZXBlbmRlbmN5LWV4YW1wbGVzL2ZsaWdodC9ib3dlcl9jb21wb25lbnRzL2Zs
aWdodC9saWIvaW5kZXguanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2RlcGVuZGVuY3ktZXhhbXBsZXMvZmxpZ2h0L2Jvd2VyX2NvbXBvbmVudHMvZmxp
Z2h0L2xpYi9pbmRleC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDk4MDZhYWM0
Y2Y0NTJiM2VhZGJkODRlMjM2ODBjNmRjNWE5NjZkNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2RlcGVuZGVuY3ktZXhhbXBsZXMvZmxpZ2h0L2Jvd2VyX2NvbXBvbmVudHMv
ZmxpZ2h0L2xpYi9pbmRleC5qcworKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLS8vID09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLy8gQ29weXJpZ2h0IDIw
MTMgVHdpdHRlciwgSW5jCi0vLyBMaWNlbnNlZCB1bmRlciBUaGUgTUlUIExpY2Vuc2UKLS8vIGh0
dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQKLS8vID09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotCi1kZWZpbmUoCi0KLSAgWwotICAgICcuL2FkdmljZScs
Ci0gICAgJy4vY29tcG9uZW50JywKLSAgICAnLi9jb21wb3NlJywKLSAgICAnLi9sb2dnZXInLAot
ICAgICcuL3JlZ2lzdHJ5JywKLSAgICAnLi91dGlscycKLSAgXSwKLQotICBmdW5jdGlvbihhZHZp
Y2UsIGNvbXBvbmVudCwgY29tcG9zZSwgbG9nZ2VyLCByZWdpc3RyeSwgdXRpbHMpIHsKLSAgICAn
dXNlIHN0cmljdCc7Ci0KLSAgICByZXR1cm4gewotICAgICAgYWR2aWNlOiBhZHZpY2UsCi0gICAg
ICBjb21wb25lbnQ6IGNvbXBvbmVudCwKLSAgICAgIGNvbXBvc2U6IGNvbXBvc2UsCi0gICAgICBs
b2dnZXI6IGxvZ2dlciwKLSAgICAgIHJlZ2lzdHJ5OiByZWdpc3RyeSwKLSAgICAgIHV0aWxzOiB1
dGlscwotICAgIH07Ci0KLSAgfQotKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZGVwZW5kZW5jeS1leGFtcGxlcy9mbGlnaHQvYm93
ZXJfY29tcG9uZW50cy9mbGlnaHQvbGliL2xvZ2dlci5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZGVwZW5kZW5jeS1leGFtcGxlcy9mbGlnaHQvYm93
ZXJfY29tcG9uZW50cy9mbGlnaHQvbGliL2xvZ2dlci5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNzFkZDNhOGI1ZjhmZmFlYzE4OTQ2NjcwMzdiOTBjODAzNDY1MTA5ZS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2RlcGVuZGVuY3ktZXhhbXBsZXMvZmxpZ2h0
L2Jvd2VyX2NvbXBvbmVudHMvZmxpZ2h0L2xpYi9sb2dnZXIuanMKKysrIC9kZXYvbnVsbApAQCAt
MSw4OCArMCwwIEBACi0vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS8vIENvcHlyaWdodCAyMDEzIFR3aXR0ZXIsIEluYwotLy8gTGljZW5zZWQgdW5kZXIgVGhl
IE1JVCBMaWNlbnNlCi0vLyBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUCi0vLyA9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotZGVmaW5lKAotCi0g
IFsKLSAgICAnLi91dGlscycKLSAgXSwKLQotICBmdW5jdGlvbih1dGlscykgewotICAgICd1c2Ug
c3RyaWN0JzsKLQotICAgIHZhciBhY3Rpb25TeW1ib2xzID0gewotICAgICAgb246ICc8LScsCi0g
ICAgICB0cmlnZ2VyOiAnLT4nLAotICAgICAgb2ZmOiAneCAnCi0gICAgfTsKLQotICAgIGZ1bmN0
aW9uIGVsZW1Ub1N0cmluZyhlbGVtKSB7Ci0gICAgICB2YXIgdGFnU3RyID0gZWxlbS50YWdOYW1l
ID8gZWxlbS50YWdOYW1lLnRvTG93ZXJDYXNlKCkgOiBlbGVtLnRvU3RyaW5nKCk7Ci0gICAgICB2
YXIgY2xhc3NTdHIgPSBlbGVtLmNsYXNzTmFtZSA/ICcuJyArIChlbGVtLmNsYXNzTmFtZSkgOiAn
JzsKLSAgICAgIHZhciByZXN1bHQgPSB0YWdTdHIgKyBjbGFzc1N0cjsKLSAgICAgIHJldHVybiBl
bGVtLnRhZ05hbWUgPyBbJ1wnJywgJ1wnJ10uam9pbihyZXN1bHQpIDogcmVzdWx0OwotICAgIH0K
LQotICAgIGZ1bmN0aW9uIGxvZyhhY3Rpb24sIGNvbXBvbmVudCwgZXZlbnRBcmdzKSB7Ci0gICAg
ICB2YXIgbmFtZSwgZWxlbSwgZm4sIGxvZ0ZpbHRlciwgdG9SZWdFeHAsIGFjdGlvbkxvZ2dhYmxl
LCBuYW1lTG9nZ2FibGU7Ci0KLSAgICAgIGlmICh0eXBlb2YgZXZlbnRBcmdzW2V2ZW50QXJncy5s
ZW5ndGgtMV0gPT0gJ2Z1bmN0aW9uJykgewotICAgICAgICBmbiA9IGV2ZW50QXJncy5wb3AoKTsK
LSAgICAgICAgZm4gPSBmbi51bmJvdW5kIHx8IGZuOyAvLyB1c2UgdW5ib3VuZCB2ZXJzaW9uIGlm
IGFueSAoYmV0dGVyIGluZm8pCi0gICAgICB9Ci0KLSAgICAgIGlmICh0eXBlb2YgZXZlbnRBcmdz
W2V2ZW50QXJncy5sZW5ndGggLSAxXSA9PSAnb2JqZWN0JykgewotICAgICAgICBldmVudEFyZ3Mu
cG9wKCk7IC8vIHRyaWdnZXIgZGF0YSBhcmcgLSBub3QgbG9nZ2VkIHJpZ2h0IG5vdwotICAgICAg
fQotCi0gICAgICBpZiAoZXZlbnRBcmdzLmxlbmd0aCA9PSAyKSB7Ci0gICAgICAgIGVsZW0gPSBl
dmVudEFyZ3NbMF07Ci0gICAgICAgIG5hbWUgPSBldmVudEFyZ3NbMV07Ci0gICAgICB9IGVsc2Ug
ewotICAgICAgICBlbGVtID0gY29tcG9uZW50LiRub2RlWzBdOwotICAgICAgICBuYW1lID0gZXZl
bnRBcmdzWzBdOwotICAgICAgfQotCi0gICAgICBpZiAod2luZG93LkRFQlVHICYmIHdpbmRvdy5E
RUJVRy5lbmFibGVkKSB7Ci0gICAgICAgIGxvZ0ZpbHRlciA9IERFQlVHLmV2ZW50cy5sb2dGaWx0
ZXI7Ci0KLSAgICAgICAgLy8gbm8gcmVnZXggZm9yIHlvdSwgYWN0aW9ucy4uLgotICAgICAgICBh
Y3Rpb25Mb2dnYWJsZSA9IGxvZ0ZpbHRlci5hY3Rpb25zID09ICdhbGwnIHx8IChsb2dGaWx0ZXIu
YWN0aW9ucy5pbmRleE9mKGFjdGlvbikgPiAtMSk7Ci0gICAgICAgIC8vIGV2ZW50IG5hbWUgZmls
dGVyIGFsbG93IHdpbGRjYXJkcyBvciByZWdleC4uLgotICAgICAgICB0b1JlZ0V4cCA9IGZ1bmN0
aW9uKGV4cHIpIHsKLSAgICAgICAgICByZXR1cm4gZXhwci50ZXN0ID8gZXhwciA6IG5ldyBSZWdF
eHAoJ14nICsgZXhwci5yZXBsYWNlKC9cKi9nLCAnLionKSArICckJyk7Ci0gICAgICAgIH07Ci0g
ICAgICAgIG5hbWVMb2dnYWJsZSA9Ci0gICAgICAgICAgbG9nRmlsdGVyLmV2ZW50TmFtZXMgPT0g
J2FsbCcgfHwKLSAgICAgICAgICBsb2dGaWx0ZXIuZXZlbnROYW1lcy5zb21lKGZ1bmN0aW9uKGUp
IHtyZXR1cm4gdG9SZWdFeHAoZSkudGVzdChuYW1lKTt9KTsKLQotICAgICAgICBpZiAoYWN0aW9u
TG9nZ2FibGUgJiYgbmFtZUxvZ2dhYmxlKSB7Ci0gICAgICAgICAgY29uc29sZS5pbmZvKAotICAg
ICAgICAgICAgYWN0aW9uU3ltYm9sc1thY3Rpb25dLAotICAgICAgICAgICAgYWN0aW9uLAotICAg
ICAgICAgICAgJ1snICsgbmFtZSArICddJywKLSAgICAgICAgICAgIGVsZW1Ub1N0cmluZyhlbGVt
KSwKLSAgICAgICAgICAgIGNvbXBvbmVudC5jb25zdHJ1Y3Rvci5kZXNjcmliZS5zcGxpdCgnICcp
LnNsaWNlKDAsMykuam9pbignICcpIC8vIHR3byBtaXhpbnMgb25seQotICAgICAgICAgICk7Ci0g
ICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0KLSAgICBmdW5jdGlvbiB3aXRoTG9nZ2luZygpIHsK
LSAgICAgIHRoaXMuYmVmb3JlKCd0cmlnZ2VyJywgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGxvZygn
dHJpZ2dlcicsIHRoaXMsIHV0aWxzLnRvQXJyYXkoYXJndW1lbnRzKSk7Ci0gICAgICB9KTsKLSAg
ICAgIHRoaXMuYmVmb3JlKCdvbicsIGZ1bmN0aW9uKCkgewotICAgICAgICBsb2coJ29uJywgdGhp
cywgdXRpbHMudG9BcnJheShhcmd1bWVudHMpKTsKLSAgICAgIH0pOwotICAgICAgdGhpcy5iZWZv
cmUoJ29mZicsIGZ1bmN0aW9uKCkgewotICAgICAgICBsb2coJ29mZicsIHRoaXMsIHV0aWxzLnRv
QXJyYXkoYXJndW1lbnRzKSk7Ci0gICAgICB9KTsKLSAgICB9Ci0KLSAgICByZXR1cm4gd2l0aExv
Z2dpbmc7Ci0gIH0KLSk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2RlcGVuZGVuY3ktZXhhbXBsZXMvZmxpZ2h0L2Jvd2VyX2NvbXBv
bmVudHMvZmxpZ2h0L2xpYi9yZWdpc3RyeS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZGVwZW5kZW5jeS1leGFtcGxlcy9mbGlnaHQvYm93ZXJfY29t
cG9uZW50cy9mbGlnaHQvbGliL3JlZ2lzdHJ5LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA5MDZhNjgxYWRmNDNhMzgyY2U5ZGI0MTIxZGY2YzA4MTYwODY3ZDU4Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZGVwZW5kZW5jeS1leGFtcGxlcy9mbGlnaHQvYm93
ZXJfY29tcG9uZW50cy9mbGlnaHQvbGliL3JlZ2lzdHJ5LmpzCisrKyAvZGV2L251bGwKQEAgLTEs
MjIyICswLDAgQEAKLS8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLy8gQ29weXJpZ2h0IDIwMTMgVHdpdHRlciwgSW5jCi0vLyBMaWNlbnNlZCB1bmRlciBUaGUg
TUlUIExpY2Vuc2UKLS8vIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQKLS8vID09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi1kZWZpbmUoCi0KLSAg
W10sCi0KLSAgZnVuY3Rpb24oKSB7Ci0gICAgJ3VzZSBzdHJpY3QnOwotCi0gICAgZnVuY3Rpb24g
cGFyc2VFdmVudEFyZ3MoaW5zdGFuY2UsIGFyZ3MpIHsKLSAgICAgIHZhciBlbGVtZW50LCB0eXBl
LCBjYWxsYmFjazsKLSAgICAgIHZhciBlbmQgPSBhcmdzLmxlbmd0aDsKLQotICAgICAgaWYgKHR5
cGVvZiBhcmdzW2VuZCAtIDFdID09PSAnZnVuY3Rpb24nKSB7Ci0gICAgICAgIGVuZCAtPSAxOwot
ICAgICAgICBjYWxsYmFjayA9IGFyZ3NbZW5kXTsKLSAgICAgIH0KLQotICAgICAgaWYgKHR5cGVv
ZiBhcmdzW2VuZCAtIDFdID09PSAnb2JqZWN0JykgewotICAgICAgICBlbmQgLT0gMTsKLSAgICAg
IH0KLQotICAgICAgaWYgKGVuZCA9PSAyKSB7Ci0gICAgICAgIGVsZW1lbnQgPSBhcmdzWzBdOwot
ICAgICAgICB0eXBlID0gYXJnc1sxXTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIGVsZW1lbnQg
PSBpbnN0YW5jZS5ub2RlOwotICAgICAgICB0eXBlID0gYXJnc1swXTsKLSAgICAgIH0KLQotICAg
ICAgcmV0dXJuIHsKLSAgICAgICAgZWxlbWVudDogZWxlbWVudCwKLSAgICAgICAgdHlwZTogdHlw
ZSwKLSAgICAgICAgY2FsbGJhY2s6IGNhbGxiYWNrCi0gICAgICB9OwotICAgIH0KLQotICAgIGZ1
bmN0aW9uIG1hdGNoRXZlbnQoYSwgYikgewotICAgICAgcmV0dXJuICgKLSAgICAgICAgKGEuZWxl
bWVudCA9PSBiLmVsZW1lbnQpICYmCi0gICAgICAgIChhLnR5cGUgPT0gYi50eXBlKSAmJgotICAg
ICAgICAoYi5jYWxsYmFjayA9PSBudWxsIHx8IChhLmNhbGxiYWNrID09IGIuY2FsbGJhY2spKQot
ICAgICAgKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBSZWdpc3RyeSgpIHsKLQotICAgICAgdmFy
IHJlZ2lzdHJ5ID0gdGhpczsKLQotICAgICAgKHRoaXMucmVzZXQgPSBmdW5jdGlvbigpIHsKLSAg
ICAgICAgdGhpcy5jb21wb25lbnRzID0gW107Ci0gICAgICAgIHRoaXMuYWxsSW5zdGFuY2VzID0g
e307Ci0gICAgICAgIHRoaXMuZXZlbnRzID0gW107Ci0gICAgICB9KS5jYWxsKHRoaXMpOwotCi0g
ICAgICBmdW5jdGlvbiBDb21wb25lbnRJbmZvKGNvbXBvbmVudCkgewotICAgICAgICB0aGlzLmNv
bXBvbmVudCA9IGNvbXBvbmVudDsKLSAgICAgICAgdGhpcy5hdHRhY2hlZFRvID0gW107Ci0gICAg
ICAgIHRoaXMuaW5zdGFuY2VzID0ge307Ci0KLSAgICAgICAgdGhpcy5hZGRJbnN0YW5jZSA9IGZ1
bmN0aW9uKGluc3RhbmNlKSB7Ci0gICAgICAgICAgdmFyIGluc3RhbmNlSW5mbyA9IG5ldyBJbnN0
YW5jZUluZm8oaW5zdGFuY2UpOwotICAgICAgICAgIHRoaXMuaW5zdGFuY2VzW2luc3RhbmNlLmlk
ZW50aXR5XSA9IGluc3RhbmNlSW5mbzsKLSAgICAgICAgICB0aGlzLmF0dGFjaGVkVG8ucHVzaChp
bnN0YW5jZS5ub2RlKTsKLQotICAgICAgICAgIHJldHVybiBpbnN0YW5jZUluZm87Ci0gICAgICAg
IH07Ci0KLSAgICAgICAgdGhpcy5yZW1vdmVJbnN0YW5jZSA9IGZ1bmN0aW9uKGluc3RhbmNlKSB7
Ci0gICAgICAgICAgZGVsZXRlIHRoaXMuaW5zdGFuY2VzW2luc3RhbmNlLmlkZW50aXR5XTsKLSAg
ICAgICAgICB2YXIgaW5kZXhPZk5vZGUgPSB0aGlzLmF0dGFjaGVkVG8uaW5kZXhPZihpbnN0YW5j
ZS5ub2RlKTsKLSAgICAgICAgICAoaW5kZXhPZk5vZGUgPiAtMSkgJiYgdGhpcy5hdHRhY2hlZFRv
LnNwbGljZShpbmRleE9mTm9kZSwgMSk7Ci0KLSAgICAgICAgICBpZiAoIU9iamVjdC5rZXlzKHRo
aXMuaW5zdGFuY2VzKS5sZW5ndGgpIHsKLSAgICAgICAgICAgIC8vaWYgSSBob2xkIG5vIG1vcmUg
aW5zdGFuY2VzIHJlbW92ZSBtZSBmcm9tIHJlZ2lzdHJ5Ci0gICAgICAgICAgICByZWdpc3RyeS5y
ZW1vdmVDb21wb25lbnRJbmZvKHRoaXMpOwotICAgICAgICAgIH0KLSAgICAgICAgfTsKLQotICAg
ICAgICB0aGlzLmlzQXR0YWNoZWRUbyA9IGZ1bmN0aW9uKG5vZGUpIHsKLSAgICAgICAgICByZXR1
cm4gdGhpcy5hdHRhY2hlZFRvLmluZGV4T2Yobm9kZSkgPiAtMTsKLSAgICAgICAgfTsKLSAgICAg
IH0KLQotICAgICAgZnVuY3Rpb24gSW5zdGFuY2VJbmZvKGluc3RhbmNlKSB7Ci0gICAgICAgIHRo
aXMuaW5zdGFuY2UgPSBpbnN0YW5jZTsKLSAgICAgICAgdGhpcy5ldmVudHMgPSBbXTsKLQotICAg
ICAgICB0aGlzLmFkZEJpbmQgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICAgIHRoaXMuZXZl
bnRzLnB1c2goZXZlbnQpOwotICAgICAgICAgIHJlZ2lzdHJ5LmV2ZW50cy5wdXNoKGV2ZW50KTsK
LSAgICAgICAgfTsKLQotICAgICAgICB0aGlzLnJlbW92ZUJpbmQgPSBmdW5jdGlvbihldmVudCkg
ewotICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBlOyBlID0gdGhpcy5ldmVudHNbaV07IGkrKykg
ewotICAgICAgICAgICAgaWYgKG1hdGNoRXZlbnQoZSwgZXZlbnQpKSB7Ci0gICAgICAgICAgICAg
IHRoaXMuZXZlbnRzLnNwbGljZShpLCAxKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0g
ICAgICAgIH07Ci0gICAgICB9Ci0KLSAgICAgIHRoaXMuYWRkSW5zdGFuY2UgPSBmdW5jdGlvbihp
bnN0YW5jZSkgewotICAgICAgICB2YXIgY29tcG9uZW50ID0gdGhpcy5maW5kQ29tcG9uZW50SW5m
byhpbnN0YW5jZSk7Ci0KLSAgICAgICAgaWYgKCFjb21wb25lbnQpIHsKLSAgICAgICAgICBjb21w
b25lbnQgPSBuZXcgQ29tcG9uZW50SW5mbyhpbnN0YW5jZS5jb25zdHJ1Y3Rvcik7Ci0gICAgICAg
ICAgdGhpcy5jb21wb25lbnRzLnB1c2goY29tcG9uZW50KTsKLSAgICAgICAgfQotCi0gICAgICAg
IHZhciBpbnN0ID0gY29tcG9uZW50LmFkZEluc3RhbmNlKGluc3RhbmNlKTsKLQotICAgICAgICB0
aGlzLmFsbEluc3RhbmNlc1tpbnN0YW5jZS5pZGVudGl0eV0gPSBpbnN0OwotCi0gICAgICAgIHJl
dHVybiBjb21wb25lbnQ7Ci0gICAgICB9OwotCi0gICAgICB0aGlzLnJlbW92ZUluc3RhbmNlID0g
ZnVuY3Rpb24oaW5zdGFuY2UpIHsKLSAgICAgICAgdmFyIGluZGV4LCBpbnN0SW5mbyA9IHRoaXMu
ZmluZEluc3RhbmNlSW5mbyhpbnN0YW5jZSk7Ci0KLSAgICAgICAgLy9yZW1vdmUgZnJvbSBjb21w
b25lbnQgaW5mbwotICAgICAgICB2YXIgY29tcG9uZW50SW5mbyA9IHRoaXMuZmluZENvbXBvbmVu
dEluZm8oaW5zdGFuY2UpOwotICAgICAgICBjb21wb25lbnRJbmZvICYmIGNvbXBvbmVudEluZm8u
cmVtb3ZlSW5zdGFuY2UoaW5zdGFuY2UpOwotCi0gICAgICAgIC8vcmVtb3ZlIGZyb20gcmVnaXN0
cnkKLSAgICAgICAgZGVsZXRlIHRoaXMuYWxsSW5zdGFuY2VzW2luc3RhbmNlLmlkZW50aXR5XTsK
LSAgICAgIH07Ci0KLSAgICAgIHRoaXMucmVtb3ZlQ29tcG9uZW50SW5mbyA9IGZ1bmN0aW9uKGNv
bXBvbmVudEluZm8pIHsKLSAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5jb21wb25lbnRzLmluZGV4
T2YoY29tcG9uZW50SW5mbyk7Ci0gICAgICAgIChpbmRleCA+IC0xKSAmJiB0aGlzLmNvbXBvbmVu
dHMuc3BsaWNlKGluZGV4LCAxKTsKLSAgICAgIH07Ci0KLSAgICAgIHRoaXMuZmluZENvbXBvbmVu
dEluZm8gPSBmdW5jdGlvbih3aGljaCkgewotICAgICAgICB2YXIgY29tcG9uZW50ID0gd2hpY2gu
YXR0YWNoVG8gPyB3aGljaCA6IHdoaWNoLmNvbnN0cnVjdG9yOwotCi0gICAgICAgIGZvciAodmFy
IGkgPSAwLCBjOyBjID0gdGhpcy5jb21wb25lbnRzW2ldOyBpKyspIHsKLSAgICAgICAgICBpZiAo
Yy5jb21wb25lbnQgPT09IGNvbXBvbmVudCkgewotICAgICAgICAgICAgcmV0dXJuIGM7Ci0gICAg
ICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICB9OwotCi0g
ICAgICB0aGlzLmZpbmRJbnN0YW5jZUluZm8gPSBmdW5jdGlvbihpbnN0YW5jZSkgewotICAgICAg
ICByZXR1cm4gdGhpcy5hbGxJbnN0YW5jZXNbaW5zdGFuY2UuaWRlbnRpdHldIHx8IG51bGw7Ci0g
ICAgICB9OwotCi0gICAgICB0aGlzLmZpbmRJbnN0YW5jZUluZm9CeU5vZGUgPSBmdW5jdGlvbihu
b2RlKSB7Ci0gICAgICAgIHZhciByZXN1bHQgPSBbXTsKLSAgICAgICAgT2JqZWN0LmtleXModGhp
cy5hbGxJbnN0YW5jZXMpLmZvckVhY2goZnVuY3Rpb24oaykgewotICAgICAgICAgIHZhciB0aGlz
SW5zdGFuY2VJbmZvID0gdGhpcy5hbGxJbnN0YW5jZXNba107Ci0gICAgICAgICAgaWYgKHRoaXNJ
bnN0YW5jZUluZm8uaW5zdGFuY2Uubm9kZSA9PT0gbm9kZSkgewotICAgICAgICAgICAgcmVzdWx0
LnB1c2godGhpc0luc3RhbmNlSW5mbyk7Ci0gICAgICAgICAgfQotICAgICAgICB9LCB0aGlzKTsK
LSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgIH07Ci0KLSAgICAgIHRoaXMub24gPSBmdW5j
dGlvbihjb21wb25lbnRPbikgewotICAgICAgICB2YXIgaW5zdGFuY2UgPSByZWdpc3RyeS5maW5k
SW5zdGFuY2VJbmZvKHRoaXMpLCBib3VuZENhbGxiYWNrOwotCi0gICAgICAgIC8vIHVucGFja2lu
ZyBhcmd1bWVudHMgYnkgaGFuZCBiZW5jaG1hcmtlZCBmYXN0ZXIKLSAgICAgICAgdmFyIGwgPSBh
cmd1bWVudHMubGVuZ3RoLCBpID0gMTsKLSAgICAgICAgdmFyIG90aGVyQXJncyA9IG5ldyBBcnJh
eShsIC0gMSk7Ci0gICAgICAgIGZvciAoOyBpIDwgbDsgaSsrKSBvdGhlckFyZ3NbaSAtIDFdID0g
YXJndW1lbnRzW2ldOwotCi0gICAgICAgIGlmIChpbnN0YW5jZSkgewotICAgICAgICAgIGJvdW5k
Q2FsbGJhY2sgPSBjb21wb25lbnRPbi5hcHBseShudWxsLCBvdGhlckFyZ3MpOwotICAgICAgICAg
IGlmIChib3VuZENhbGxiYWNrKSB7Ci0gICAgICAgICAgICBvdGhlckFyZ3Nbb3RoZXJBcmdzLmxl
bmd0aC0xXSA9IGJvdW5kQ2FsbGJhY2s7Ci0gICAgICAgICAgfQotICAgICAgICAgIHZhciBldmVu
dCA9IHBhcnNlRXZlbnRBcmdzKHRoaXMsIG90aGVyQXJncyk7Ci0gICAgICAgICAgaW5zdGFuY2Uu
YWRkQmluZChldmVudCk7Ci0gICAgICAgIH0KLSAgICAgIH07Ci0KLSAgICAgIHRoaXMub2ZmID0g
ZnVuY3Rpb24oLyplbCwgdHlwZSwgY2FsbGJhY2sqLykgewotICAgICAgICB2YXIgZXZlbnQgPSBw
YXJzZUV2ZW50QXJncyh0aGlzLCBhcmd1bWVudHMpLAotICAgICAgICAgICAgaW5zdGFuY2UgPSBy
ZWdpc3RyeS5maW5kSW5zdGFuY2VJbmZvKHRoaXMpOwotCi0gICAgICAgIGlmIChpbnN0YW5jZSkg
ewotICAgICAgICAgIGluc3RhbmNlLnJlbW92ZUJpbmQoZXZlbnQpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgLy9yZW1vdmUgZnJvbSBnbG9iYWwgZXZlbnQgcmVnaXN0cnkKLSAgICAgICAgZm9yICh2
YXIgaSA9IDAsIGU7IGUgPSByZWdpc3RyeS5ldmVudHNbaV07IGkrKykgewotICAgICAgICAgIGlm
IChtYXRjaEV2ZW50KGUsIGV2ZW50KSkgewotICAgICAgICAgICAgcmVnaXN0cnkuZXZlbnRzLnNw
bGljZShpLCAxKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH07Ci0KLSAgICAgIC8v
IGRlYnVnIHRvb2xzIG1heSB3YW50IHRvIGFkZCBhZHZpY2UgdG8gdHJpZ2dlcgotICAgICAgcmVn
aXN0cnkudHJpZ2dlciA9IGZ1bmN0aW9uKCkge307Ci0KLSAgICAgIHRoaXMudGVhcmRvd24gPSBm
dW5jdGlvbigpIHsKLSAgICAgICAgcmVnaXN0cnkucmVtb3ZlSW5zdGFuY2UodGhpcyk7Ci0gICAg
ICB9OwotCi0gICAgICB0aGlzLndpdGhSZWdpc3RyYXRpb24gPSBmdW5jdGlvbigpIHsKLSAgICAg
ICAgdGhpcy5hZnRlcignaW5pdGlhbGl6ZScsIGZ1bmN0aW9uKCkgewotICAgICAgICAgIHJlZ2lz
dHJ5LmFkZEluc3RhbmNlKHRoaXMpOwotICAgICAgICB9KTsKLQotICAgICAgICB0aGlzLmFyb3Vu
ZCgnb24nLCByZWdpc3RyeS5vbik7Ci0gICAgICAgIHRoaXMuYWZ0ZXIoJ29mZicsIHJlZ2lzdHJ5
Lm9mZik7Ci0gICAgICAgIC8vZGVidWcgdG9vbHMgbWF5IHdhbnQgdG8gYWRkIGFkdmljZSB0byB0
cmlnZ2VyCi0gICAgICAgIHdpbmRvdy5ERUJVRyAmJiBERUJVRy5lbmFibGVkICYmIHRoaXMuYWZ0
ZXIoJ3RyaWdnZXInLCByZWdpc3RyeS50cmlnZ2VyKTsKLSAgICAgICAgdGhpcy5hZnRlcigndGVh
cmRvd24nLCB7b2JqOiByZWdpc3RyeSwgZm5OYW1lOiAndGVhcmRvd24nfSk7Ci0gICAgICB9Owot
Ci0gICAgfQotCi0gICAgcmV0dXJuIG5ldyBSZWdpc3RyeTsKLSAgfQotKTsKZGlmZiAtLWdpdCBh
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZGVwZW5kZW5j
eS1leGFtcGxlcy9mbGlnaHQvYm93ZXJfY29tcG9uZW50cy9mbGlnaHQvbGliL3V0aWxzLmpzIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9kZXBlbmRlbmN5
LWV4YW1wbGVzL2ZsaWdodC9ib3dlcl9jb21wb25lbnRzL2ZsaWdodC9saWIvdXRpbHMuanMKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdmZjA0ZDU5MGRmODk3NzQ3MzJhNzYzNDZiODU3
NjM3ZTVhNjQ2MTcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9kZXBlbmRl
bmN5LWV4YW1wbGVzL2ZsaWdodC9ib3dlcl9jb21wb25lbnRzL2ZsaWdodC9saWIvdXRpbHMuanMK
KysrIC9kZXYvbnVsbApAQCAtMSwyMzUgKzAsMCBAQAotLy8gPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0vLyBDb3B5cmlnaHQgMjAxMyBUd2l0dGVyLCBJbmMKLS8v
IExpY2Vuc2VkIHVuZGVyIFRoZSBNSVQgTGljZW5zZQotLy8gaHR0cDovL29wZW5zb3VyY2Uub3Jn
L2xpY2Vuc2VzL01JVAotLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0KLWRlZmluZSgKLQotICBbXSwKLQotICBmdW5jdGlvbigpIHsKLSAgICAndXNlIHN0cmlj
dCc7Ci0KLSAgICB2YXIgYXJyeSA9IFtdOwotICAgIHZhciBERUZBVUxUX0lOVEVSVkFMID0gMTAw
OwotCi0gICAgdmFyIHV0aWxzID0gewotCi0gICAgICBpc0RvbU9iajogZnVuY3Rpb24ob2JqKSB7
Ci0gICAgICAgIHJldHVybiAhIShvYmoubm9kZVR5cGUgfHwgKG9iaiA9PT0gd2luZG93KSk7Ci0g
ICAgICB9LAotCi0gICAgICB0b0FycmF5OiBmdW5jdGlvbihvYmosIGZyb20pIHsKLSAgICAgICAg
cmV0dXJuIGFycnkuc2xpY2UuY2FsbChvYmosIGZyb20pOwotICAgICAgfSwKLQotICAgICAgLy8g
cmV0dXJucyBuZXcgb2JqZWN0IHJlcHJlc2VudGluZyBtdWx0aXBsZSBvYmplY3RzIG1lcmdlZCB0
b2dldGhlcgotICAgICAgLy8gb3B0aW9uYWwgZmluYWwgYXJndW1lbnQgaXMgYm9vbGVhbiB3aGlj
aCBzcGVjaWZpZXMgaWYgbWVyZ2UgaXMgcmVjdXJzaXZlCi0gICAgICAvLyBvcmlnaW5hbCBvYmpl
Y3RzIGFyZSB1bm1vZGlmaWVkCi0gICAgICAvLwotICAgICAgLy8gdXNhZ2U6Ci0gICAgICAvLyAg
IHZhciBiYXNlID0ge2E6MiwgYjo2fTsKLSAgICAgIC8vICAgdmFyIGV4dHJhID0ge2I6MywgYzo0
fTsKLSAgICAgIC8vICAgbWVyZ2UoYmFzZSwgZXh0cmEpOyAvL3thOjIsIGI6MywgYzo0fQotICAg
ICAgLy8gICBiYXNlOyAvL3thOjIsIGI6Nn0KLSAgICAgIC8vCi0gICAgICAvLyAgIHZhciBiYXNl
ID0ge2E6MiwgYjo2fTsKLSAgICAgIC8vICAgdmFyIGV4dHJhID0ge2I6MywgYzo0fTsKLSAgICAg
IC8vICAgdmFyIGV4dHJhRXh0cmEgPSB7YTo0LCBkOjl9OwotICAgICAgLy8gICBtZXJnZShiYXNl
LCBleHRyYSwgZXh0cmFFeHRyYSk7IC8ve2E6NCwgYjozLCBjOjQuIGQ6IDl9Ci0gICAgICAvLyAg
IGJhc2U7IC8ve2E6MiwgYjo2fQotICAgICAgLy8KLSAgICAgIC8vICAgdmFyIGJhc2UgPSB7YToy
LCBiOntiYjo0LCBjYzo1fX07Ci0gICAgICAvLyAgIHZhciBleHRyYSA9IHthOjQsIGI6e2NjOjcs
IGRkOjF9fTsKLSAgICAgIC8vICAgbWVyZ2UoYmFzZSwgZXh0cmEsIHRydWUpOyAvL3thOjQsIGI6
e2JiOjQsIGNjOjcsIGRkOjF9fQotICAgICAgLy8gICBiYXNlOyAvL3thOjIsIGI6Nn0KLQotICAg
ICAgbWVyZ2U6IGZ1bmN0aW9uKC8qb2JqMSwgb2JqMiwuLi4uZGVlcENvcHkqLykgewotICAgICAg
ICAvLyB1bnBhY2tpbmcgYXJndW1lbnRzIGJ5IGhhbmQgYmVuY2htYXJrZWQgZmFzdGVyCi0gICAg
ICAgIHZhciBsID0gYXJndW1lbnRzLmxlbmd0aCwKLSAgICAgICAgICAgIGkgPSAwLAotICAgICAg
ICAgICAgYXJncyA9IG5ldyBBcnJheShsICsgMSk7Ci0gICAgICAgIGZvciAoOyBpIDwgbDsgaSsr
KSBhcmdzW2kgKyAxXSA9IGFyZ3VtZW50c1tpXTsKLQotICAgICAgICBpZiAobCA9PT0gMCkgewot
ICAgICAgICAgIHJldHVybiB7fTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vc3RhcnQgd2l0aCBl
bXB0eSBvYmplY3Qgc28gYSBjb3B5IGlzIGNyZWF0ZWQKLSAgICAgICAgYXJnc1swXSA9IHt9Owot
Ci0gICAgICAgIGlmIChhcmdzW2FyZ3MubGVuZ3RoIC0gMV0gPT09IHRydWUpIHsKLSAgICAgICAg
ICAvL2pxdWVyeSBleHRlbmQgcmVxdWlyZXMgZGVlcCBjb3B5IGFzIGZpcnN0IGFyZwotICAgICAg
ICAgIGFyZ3MucG9wKCk7Ci0gICAgICAgICAgYXJncy51bnNoaWZ0KHRydWUpOwotICAgICAgICB9
Ci0KLSAgICAgICAgcmV0dXJuICQuZXh0ZW5kLmFwcGx5KHVuZGVmaW5lZCwgYXJncyk7Ci0gICAg
ICB9LAotCi0gICAgICAvLyB1cGRhdGVzIGJhc2UgaW4gcGxhY2UgYnkgY29weWluZyBwcm9wZXJ0
aWVzIG9mIGV4dHJhIHRvIGl0Ci0gICAgICAvLyBvcHRpb25hbGx5IGNsb2JiZXIgcHJvdGVjdGVk
Ci0gICAgICAvLyB1c2FnZToKLSAgICAgIC8vICAgdmFyIGJhc2UgPSB7YToyLCBiOjZ9OwotICAg
ICAgLy8gICB2YXIgZXh0cmEgPSB7Yzo0fTsKLSAgICAgIC8vICAgcHVzaChiYXNlLCBleHRyYSk7
IC8ve2E6MiwgYjo2LCBjOjR9Ci0gICAgICAvLyAgIGJhc2U7IC8ve2E6MiwgYjo2LCBjOjR9Ci0g
ICAgICAvLwotICAgICAgLy8gICB2YXIgYmFzZSA9IHthOjIsIGI6Nn07Ci0gICAgICAvLyAgIHZh
ciBleHRyYSA9IHtiOiA0IGM6NH07Ci0gICAgICAvLyAgIHB1c2goYmFzZSwgZXh0cmEsIHRydWUp
OyAvL0Vycm9yICgidXRpbHMucHVzaCBhdHRlbXB0ZWQgdG8gb3ZlcndyaXRlICdiJyB3aGlsZSBy
dW5uaW5nIGluIHByb3RlY3RlZCBtb2RlIikKLSAgICAgIC8vICAgYmFzZTsgLy97YToyLCBiOjZ9
Ci0gICAgICAvLwotICAgICAgLy8gb2JqZWN0cyB3aXRoIHRoZSBzYW1lIGtleSB3aWxsIG1lcmdl
IHJlY3Vyc2l2ZWx5IHdoZW4gcHJvdGVjdCBpcyBmYWxzZQotICAgICAgLy8gZWc6Ci0gICAgICAv
LyB2YXIgYmFzZSA9IHthOjE2LCBiOntiYjo0LCBjYzoxMH19OwotICAgICAgLy8gdmFyIGV4dHJh
ID0ge2I6e2NjOjI1LCBkZDoxOX0sIGM6NX07Ci0gICAgICAvLyBwdXNoKGJhc2UsIGV4dHJhKTsg
Ly97YToxNiwge2JiOjQsIGNjOjI1LCBkZDoxOX0sIGM6NX0KLSAgICAgIC8vCi0gICAgICBwdXNo
OiBmdW5jdGlvbihiYXNlLCBleHRyYSwgcHJvdGVjdCkgewotICAgICAgICBpZiAoYmFzZSkgewot
ICAgICAgICAgIE9iamVjdC5rZXlzKGV4dHJhIHx8IHt9KS5mb3JFYWNoKGZ1bmN0aW9uKGtleSkg
ewotICAgICAgICAgICAgaWYgKGJhc2Vba2V5XSAmJiBwcm90ZWN0KSB7Ci0gICAgICAgICAgICAg
IHRocm93IG5ldyBFcnJvcigndXRpbHMucHVzaCBhdHRlbXB0ZWQgdG8gb3ZlcndyaXRlICInICsg
a2V5ICsgJyIgd2hpbGUgcnVubmluZyBpbiBwcm90ZWN0ZWQgbW9kZScpOwotICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICBpZiAodHlwZW9mIGJhc2Vba2V5XSA9PSAnb2JqZWN0JyAmJiB0eXBl
b2YgZXh0cmFba2V5XSA9PSAnb2JqZWN0JykgewotICAgICAgICAgICAgICAvLyByZWN1cnNlCi0g
ICAgICAgICAgICAgIHRoaXMucHVzaChiYXNlW2tleV0sIGV4dHJhW2tleV0pOwotICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgLy8gbm8gcHJvdGVjdCwgc28gZXh0cmEgd2lucwot
ICAgICAgICAgICAgICBiYXNlW2tleV0gPSBleHRyYVtrZXldOwotICAgICAgICAgICAgfQotICAg
ICAgICAgIH0sIHRoaXMpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGJhc2U7Ci0gICAg
ICB9LAotCi0gICAgICBpc0VudW1lcmFibGU6IGZ1bmN0aW9uKG9iaiwgcHJvcGVydHkpIHsKLSAg
ICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKG9iaikuaW5kZXhPZihwcm9wZXJ0eSkgPiAtMTsKLSAg
ICAgIH0sCi0KLSAgICAgIC8vIGJ1aWxkIGEgZnVuY3Rpb24gZnJvbSBvdGhlciBmdW5jdGlvbihz
KQotICAgICAgLy8gdXRpbHMuY29tcG9zZShhLGIsYykgLT4gYShiKGMoKSkpOwotICAgICAgLy8g
aW1wbGVtZW50YXRpb24gbGlmdGVkIGZyb20gdW5kZXJzY29yZS5qcyAoYykgMjAwOS0yMDEyIEpl
cmVteSBBc2hrZW5hcwotICAgICAgY29tcG9zZTogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZhciBm
dW5jcyA9IGFyZ3VtZW50czsKLQotICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7Ci0gICAgICAg
ICAgdmFyIGFyZ3MgPSBhcmd1bWVudHM7Ci0KLSAgICAgICAgICBmb3IgKHZhciBpID0gZnVuY3Mu
bGVuZ3RoLTE7IGkgPj0gMDsgaS0tKSB7Ci0gICAgICAgICAgICBhcmdzID0gW2Z1bmNzW2ldLmFw
cGx5KHRoaXMsIGFyZ3MpXTsKLSAgICAgICAgICB9Ci0KLSAgICAgICAgICByZXR1cm4gYXJnc1sw
XTsKLSAgICAgICAgfTsKLSAgICAgIH0sCi0KLSAgICAgIC8vIENhbiBvbmx5IHVuaXF1ZSBhcnJh
eXMgb2YgaG9tb2dlbmVvdXMgcHJpbWl0aXZlcywgZS5nLiBhbiBhcnJheSBvZiBvbmx5IHN0cmlu
Z3MsIGFuIGFycmF5IG9mIG9ubHkgYm9vbGVhbnMsIG9yIGFuIGFycmF5IG9mIG9ubHkgbnVtZXJp
Y3MKLSAgICAgIHVuaXF1ZUFycmF5OiBmdW5jdGlvbihhcnJheSkgewotICAgICAgICB2YXIgdSA9
IHt9LCBhID0gW107Ci0KLSAgICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBhcnJheS5sZW5ndGg7
IGkgPCBsOyArK2kpIHsKLSAgICAgICAgICBpZiAodS5oYXNPd25Qcm9wZXJ0eShhcnJheVtpXSkp
IHsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgIH0KLQotICAgICAgICAgIGEucHVz
aChhcnJheVtpXSk7Ci0gICAgICAgICAgdVthcnJheVtpXV0gPSAxOwotICAgICAgICB9Ci0KLSAg
ICAgICAgcmV0dXJuIGE7Ci0gICAgICB9LAotCi0gICAgICBkZWJvdW5jZTogZnVuY3Rpb24oZnVu
Yywgd2FpdCwgaW1tZWRpYXRlKSB7Ci0gICAgICAgIGlmICh0eXBlb2Ygd2FpdCAhPSAnbnVtYmVy
JykgewotICAgICAgICAgIHdhaXQgPSBERUZBVUxUX0lOVEVSVkFMOwotICAgICAgICB9Ci0KLSAg
ICAgICAgdmFyIHRpbWVvdXQsIHJlc3VsdDsKLQotICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7
Ci0gICAgICAgICAgdmFyIGNvbnRleHQgPSB0aGlzLCBhcmdzID0gYXJndW1lbnRzOwotICAgICAg
ICAgIHZhciBsYXRlciA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgdGltZW91dCA9IG51bGw7
Ci0gICAgICAgICAgICBpZiAoIWltbWVkaWF0ZSkgewotICAgICAgICAgICAgICByZXN1bHQgPSBm
dW5jLmFwcGx5KGNvbnRleHQsIGFyZ3MpOwotICAgICAgICAgICAgfQotICAgICAgICAgIH07Ci0g
ICAgICAgICAgdmFyIGNhbGxOb3cgPSBpbW1lZGlhdGUgJiYgIXRpbWVvdXQ7Ci0KLSAgICAgICAg
ICBjbGVhclRpbWVvdXQodGltZW91dCk7Ci0gICAgICAgICAgdGltZW91dCA9IHNldFRpbWVvdXQo
bGF0ZXIsIHdhaXQpOwotCi0gICAgICAgICAgaWYgKGNhbGxOb3cpIHsKLSAgICAgICAgICAgIHJl
c3VsdCA9IGZ1bmMuYXBwbHkoY29udGV4dCwgYXJncyk7Ci0gICAgICAgICAgfQotCi0gICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgfTsKLSAgICAgIH0sCi0KLSAgICAgIHRocm90dGxl
OiBmdW5jdGlvbihmdW5jLCB3YWl0KSB7Ci0gICAgICAgIGlmICh0eXBlb2Ygd2FpdCAhPSAnbnVt
YmVyJykgewotICAgICAgICAgIHdhaXQgPSBERUZBVUxUX0lOVEVSVkFMOwotICAgICAgICB9Ci0K
LSAgICAgICAgdmFyIGNvbnRleHQsIGFyZ3MsIHRpbWVvdXQsIHRocm90dGxpbmcsIG1vcmUsIHJl
c3VsdDsKLSAgICAgICAgdmFyIHdoZW5Eb25lID0gdGhpcy5kZWJvdW5jZShmdW5jdGlvbigpewot
ICAgICAgICAgIG1vcmUgPSB0aHJvdHRsaW5nID0gZmFsc2U7Ci0gICAgICAgIH0sIHdhaXQpOwot
Ci0gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHsKLSAgICAgICAgICBjb250ZXh0ID0gdGhpczsg
YXJncyA9IGFyZ3VtZW50czsKLSAgICAgICAgICB2YXIgbGF0ZXIgPSBmdW5jdGlvbigpIHsKLSAg
ICAgICAgICAgIHRpbWVvdXQgPSBudWxsOwotICAgICAgICAgICAgaWYgKG1vcmUpIHsKLSAgICAg
ICAgICAgICAgcmVzdWx0ID0gZnVuYy5hcHBseShjb250ZXh0LCBhcmdzKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIHdoZW5Eb25lKCk7Ci0gICAgICAgICAgfTsKLQotICAgICAgICAgIGlm
ICghdGltZW91dCkgewotICAgICAgICAgICAgdGltZW91dCA9IHNldFRpbWVvdXQobGF0ZXIsIHdh
aXQpOwotICAgICAgICAgIH0KLQotICAgICAgICAgIGlmICh0aHJvdHRsaW5nKSB7Ci0gICAgICAg
ICAgICBtb3JlID0gdHJ1ZTsKLSAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdGhyb3R0
bGluZyA9IHRydWU7Ci0gICAgICAgICAgICByZXN1bHQgPSBmdW5jLmFwcGx5KGNvbnRleHQsIGFy
Z3MpOwotICAgICAgICAgIH0KLQotICAgICAgICAgIHdoZW5Eb25lKCk7Ci0gICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKLSAgICAgICAgfTsKLSAgICAgIH0sCi0KLSAgICAgIGNvdW50VGhlbjogZnVu
Y3Rpb24obnVtLCBiYXNlKSB7Ci0gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHsKLSAgICAgICAg
ICBpZiAoIS0tbnVtKSB7IHJldHVybiBiYXNlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0KLSAg
ICAgICAgfTsKLSAgICAgIH0sCi0KLSAgICAgIGRlbGVnYXRlOiBmdW5jdGlvbihydWxlcykgewot
ICAgICAgICByZXR1cm4gZnVuY3Rpb24oZSwgZGF0YSkgewotICAgICAgICAgIHZhciB0YXJnZXQg
PSAkKGUudGFyZ2V0KSwgcGFyZW50OwotCi0gICAgICAgICAgT2JqZWN0LmtleXMocnVsZXMpLmZv
ckVhY2goZnVuY3Rpb24oc2VsZWN0b3IpIHsKLSAgICAgICAgICAgIGlmICgocGFyZW50ID0gdGFy
Z2V0LmNsb3Nlc3Qoc2VsZWN0b3IpKS5sZW5ndGgpIHsKLSAgICAgICAgICAgICAgZGF0YSA9IGRh
dGEgfHwge307Ci0gICAgICAgICAgICAgIGRhdGEuZWwgPSBwYXJlbnRbMF07Ci0gICAgICAgICAg
ICAgIHJldHVybiBydWxlc1tzZWxlY3Rvcl0uYXBwbHkodGhpcywgW2UsIGRhdGFdKTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICB9LCB0aGlzKTsKLSAgICAgICAgfTsKLSAgICAgIH0KLQotICAg
IH07Ci0KLSAgICByZXR1cm4gdXRpbHM7Ci0gIH0KLSk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2RlcGVuZGVuY3ktZXhhbXBsZXMv
ZmxpZ2h0L2Jvd2VyX2NvbXBvbmVudHMvanF1ZXJ5L2pxdWVyeS5qcyBiL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZGVwZW5kZW5jeS1leGFtcGxlcy9mbGln
aHQvYm93ZXJfY29tcG9uZW50cy9qcXVlcnkvanF1ZXJ5LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBiNDMxODUxOWU4OGRhNjE2ZDM4MWFlYjFjMTYwNTJlNjI4MWJhZDRlLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZGVwZW5kZW5jeS1leGFtcGxlcy9mbGln
aHQvYm93ZXJfY29tcG9uZW50cy9qcXVlcnkvanF1ZXJ5LmpzCisrKyAvZGV2L251bGwKQEAgLTEs
OTQ3MiArMCwwIEBACi0vKiEKLSAqIGpRdWVyeSBKYXZhU2NyaXB0IExpYnJhcnkgdjEuOC4zCi0g
KiBodHRwOi8vanF1ZXJ5LmNvbS8KLSAqCi0gKiBJbmNsdWRlcyBTaXp6bGUuanMKLSAqIGh0dHA6
Ly9zaXp6bGVqcy5jb20vCi0gKgotICogQ29weXJpZ2h0IDIwMTIgalF1ZXJ5IEZvdW5kYXRpb24g
YW5kIG90aGVyIGNvbnRyaWJ1dG9ycwotICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNl
Ci0gKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlCi0gKgotICogRGF0ZTogVHVlIE5vdiAxMyAy
MDEyIDA4OjIwOjMzIEdNVC0wNTAwIChFYXN0ZXJuIFN0YW5kYXJkIFRpbWUpCi0gKi8KLShmdW5j
dGlvbiggd2luZG93LCB1bmRlZmluZWQgKSB7Ci12YXIKLSAgICAgICAgLy8gQSBjZW50cmFsIHJl
ZmVyZW5jZSB0byB0aGUgcm9vdCBqUXVlcnkoZG9jdW1lbnQpCi0gICAgICAgIHJvb3RqUXVlcnks
Ci0KLSAgICAgICAgLy8gVGhlIGRlZmVycmVkIHVzZWQgb24gRE9NIHJlYWR5Ci0gICAgICAgIHJl
YWR5TGlzdCwKLQotICAgICAgICAvLyBVc2UgdGhlIGNvcnJlY3QgZG9jdW1lbnQgYWNjb3JkaW5n
bHkgd2l0aCB3aW5kb3cgYXJndW1lbnQgKHNhbmRib3gpCi0gICAgICAgIGRvY3VtZW50ID0gd2lu
ZG93LmRvY3VtZW50LAotICAgICAgICBsb2NhdGlvbiA9IHdpbmRvdy5sb2NhdGlvbiwKLSAgICAg
ICAgbmF2aWdhdG9yID0gd2luZG93Lm5hdmlnYXRvciwKLQotICAgICAgICAvLyBNYXAgb3ZlciBq
UXVlcnkgaW4gY2FzZSBvZiBvdmVyd3JpdGUKLSAgICAgICAgX2pRdWVyeSA9IHdpbmRvdy5qUXVl
cnksCi0KLSAgICAgICAgLy8gTWFwIG92ZXIgdGhlICQgaW4gY2FzZSBvZiBvdmVyd3JpdGUKLSAg
ICAgICAgXyQgPSB3aW5kb3cuJCwKLQotICAgICAgICAvLyBTYXZlIGEgcmVmZXJlbmNlIHRvIHNv
bWUgY29yZSBtZXRob2RzCi0gICAgICAgIGNvcmVfcHVzaCA9IEFycmF5LnByb3RvdHlwZS5wdXNo
LAotICAgICAgICBjb3JlX3NsaWNlID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLAotICAgICAgICBj
b3JlX2luZGV4T2YgPSBBcnJheS5wcm90b3R5cGUuaW5kZXhPZiwKLSAgICAgICAgY29yZV90b1N0
cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsCi0gICAgICAgIGNvcmVfaGFzT3duID0g
T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSwKLSAgICAgICAgY29yZV90cmltID0gU3Ry
aW5nLnByb3RvdHlwZS50cmltLAotCi0gICAgICAgIC8vIERlZmluZSBhIGxvY2FsIGNvcHkgb2Yg
alF1ZXJ5Ci0gICAgICAgIGpRdWVyeSA9IGZ1bmN0aW9uKCBzZWxlY3RvciwgY29udGV4dCApIHsK
LSAgICAgICAgICAgICAgICAvLyBUaGUgalF1ZXJ5IG9iamVjdCBpcyBhY3R1YWxseSBqdXN0IHRo
ZSBpbml0IGNvbnN0cnVjdG9yICdlbmhhbmNlZCcKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3
IGpRdWVyeS5mbi5pbml0KCBzZWxlY3RvciwgY29udGV4dCwgcm9vdGpRdWVyeSApOwotICAgICAg
ICB9LAotCi0gICAgICAgIC8vIFVzZWQgZm9yIG1hdGNoaW5nIG51bWJlcnMKLSAgICAgICAgY29y
ZV9wbnVtID0gL1tcLStdPyg/OlxkKlwufClcZCsoPzpbZUVdW1wtK10/XGQrfCkvLnNvdXJjZSwK
LQotICAgICAgICAvLyBVc2VkIGZvciBkZXRlY3RpbmcgYW5kIHRyaW1taW5nIHdoaXRlc3BhY2UK
LSAgICAgICAgY29yZV9ybm90d2hpdGUgPSAvXFMvLAotICAgICAgICBjb3JlX3JzcGFjZSA9IC9c
cysvLAotCi0gICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSB0cmltIEJPTSBhbmQgTkJTUCAoaGVyZSdz
IGxvb2tpbmcgYXQgeW91LCBTYWZhcmkgNS4wIGFuZCBJRSkKLSAgICAgICAgcnRyaW0gPSAvXltc
c1x1RkVGRlx4QTBdK3xbXHNcdUZFRkZceEEwXSskL2csCi0KLSAgICAgICAgLy8gQSBzaW1wbGUg
d2F5IHRvIGNoZWNrIGZvciBIVE1MIHN0cmluZ3MKLSAgICAgICAgLy8gUHJpb3JpdGl6ZSAjaWQg
b3ZlciA8dGFnPiB0byBhdm9pZCBYU1MgdmlhIGxvY2F0aW9uLmhhc2ggKCM5NTIxKQotICAgICAg
ICBycXVpY2tFeHByID0gL14oPzpbXiM8XSooPFtcd1xXXSs+KVtePl0qJHwjKFtcd1wtXSopJCkv
LAotCi0gICAgICAgIC8vIE1hdGNoIGEgc3RhbmRhbG9uZSB0YWcKLSAgICAgICAgcnNpbmdsZVRh
ZyA9IC9ePChcdyspXHMqXC8/Pig/OjxcL1wxPnwpJC8sCi0KLSAgICAgICAgLy8gSlNPTiBSZWdF
eHAKLSAgICAgICAgcnZhbGlkY2hhcnMgPSAvXltcXSw6e31cc10qJC8sCi0gICAgICAgIHJ2YWxp
ZGJyYWNlcyA9IC8oPzpefDp8LCkoPzpccypcWykrL2csCi0gICAgICAgIHJ2YWxpZGVzY2FwZSA9
IC9cXCg/OlsiXFxcL2JmbnJ0XXx1W1xkYS1mQS1GXXs0fSkvZywKLSAgICAgICAgcnZhbGlkdG9r
ZW5zID0gLyJbXiJcXFxyXG5dKiJ8dHJ1ZXxmYWxzZXxudWxsfC0/KD86XGRcZCpcLnwpXGQrKD86
W2VFXVtcLStdP1xkK3wpL2csCi0KLSAgICAgICAgLy8gTWF0Y2hlcyBkYXNoZWQgc3RyaW5nIGZv
ciBjYW1lbGl6aW5nCi0gICAgICAgIHJtc1ByZWZpeCA9IC9eLW1zLS8sCi0gICAgICAgIHJkYXNo
QWxwaGEgPSAvLShbXGRhLXpdKS9naSwKLQotICAgICAgICAvLyBVc2VkIGJ5IGpRdWVyeS5jYW1l
bENhc2UgYXMgY2FsbGJhY2sgdG8gcmVwbGFjZSgpCi0gICAgICAgIGZjYW1lbENhc2UgPSBmdW5j
dGlvbiggYWxsLCBsZXR0ZXIgKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICggbGV0dGVyICsg
IiIgKS50b1VwcGVyQ2FzZSgpOwotICAgICAgICB9LAotCi0gICAgICAgIC8vIFRoZSByZWFkeSBl
dmVudCBoYW5kbGVyIGFuZCBzZWxmIGNsZWFudXAgbWV0aG9kCi0gICAgICAgIERPTUNvbnRlbnRM
b2FkZWQgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBpZiAoIGRvY3VtZW50LmFkZEV2
ZW50TGlzdGVuZXIgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVF
dmVudExpc3RlbmVyKCAiRE9NQ29udGVudExvYWRlZCIsIERPTUNvbnRlbnRMb2FkZWQsIGZhbHNl
ICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkucmVhZHkoKTsKLSAgICAgICAgICAg
ICAgICB9IGVsc2UgaWYgKCBkb2N1bWVudC5yZWFkeVN0YXRlID09PSAiY29tcGxldGUiICkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2UncmUgaGVyZSBiZWNhdXNlIHJlYWR5U3RhdGUg
PT09ICJjb21wbGV0ZSIgaW4gb2xkSUUKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoaWNo
IGlzIGdvb2QgZW5vdWdoIGZvciB1cyB0byBjYWxsIHRoZSBkb20gcmVhZHkhCi0gICAgICAgICAg
ICAgICAgICAgICAgICBkb2N1bWVudC5kZXRhY2hFdmVudCggIm9ucmVhZHlzdGF0ZWNoYW5nZSIs
IERPTUNvbnRlbnRMb2FkZWQgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5yZWFk
eSgpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgfSwKLQotICAgICAgICAvLyBbW0NsYXNz
XV0gLT4gdHlwZSBwYWlycwotICAgICAgICBjbGFzczJ0eXBlID0ge307Ci0KLWpRdWVyeS5mbiA9
IGpRdWVyeS5wcm90b3R5cGUgPSB7Ci0gICAgICAgIGNvbnN0cnVjdG9yOiBqUXVlcnksCi0gICAg
ICAgIGluaXQ6IGZ1bmN0aW9uKCBzZWxlY3RvciwgY29udGV4dCwgcm9vdGpRdWVyeSApIHsKLSAg
ICAgICAgICAgICAgICB2YXIgbWF0Y2gsIGVsZW0sIHJldCwgZG9jOwotCi0gICAgICAgICAgICAg
ICAgLy8gSGFuZGxlICQoIiIpLCAkKG51bGwpLCAkKHVuZGVmaW5lZCksICQoZmFsc2UpCi0gICAg
ICAgICAgICAgICAgaWYgKCAhc2VsZWN0b3IgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdGhpczsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBIYW5k
bGUgJChET01FbGVtZW50KQotICAgICAgICAgICAgICAgIGlmICggc2VsZWN0b3Iubm9kZVR5cGUg
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQgPSB0aGlzWzBdID0gc2Vs
ZWN0b3I7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxlbmd0aCA9IDE7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgICAgICAvLyBIYW5kbGUgSFRNTCBzdHJpbmdzCi0gICAgICAgICAgICAgICAgaWYgKCB0
eXBlb2Ygc2VsZWN0b3IgPT09ICJzdHJpbmciICkgewotICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCBzZWxlY3Rvci5jaGFyQXQoMCkgPT09ICI8IiAmJiBzZWxlY3Rvci5jaGFyQXQoIHNlbGVj
dG9yLmxlbmd0aCAtIDEgKSA9PT0gIj4iICYmIHNlbGVjdG9yLmxlbmd0aCA+PSAzICkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBc3N1bWUgdGhhdCBzdHJpbmdzIHRoYXQg
c3RhcnQgYW5kIGVuZCB3aXRoIDw+IGFyZSBIVE1MIGFuZCBza2lwIHRoZSByZWdleCBjaGVjawot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCA9IFsgbnVsbCwgc2VsZWN0b3Is
IG51bGwgXTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggPSBycXVpY2tFeHByLmV4ZWMoIHNlbGVjdG9yICk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIC8v
IE1hdGNoIGh0bWwgb3IgbWFrZSBzdXJlIG5vIGNvbnRleHQgaXMgc3BlY2lmaWVkIGZvciAjaWQK
LSAgICAgICAgICAgICAgICAgICAgICAgIGlmICggbWF0Y2ggJiYgKG1hdGNoWzFdIHx8ICFjb250
ZXh0KSApIHsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBIQU5ETEU6ICQo
aHRtbCkgLT4gJChhcnJheSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBt
YXRjaFsxXSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250
ZXh0ID0gY29udGV4dCBpbnN0YW5jZW9mIGpRdWVyeSA/IGNvbnRleHRbMF0gOiBjb250ZXh0Owot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvYyA9ICggY29udGV4dCAm
JiBjb250ZXh0Lm5vZGVUeXBlID8gY29udGV4dC5vd25lckRvY3VtZW50IHx8IGNvbnRleHQgOiBk
b2N1bWVudCApOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
c2NyaXB0cyBpcyB0cnVlIGZvciBiYWNrLWNvbXBhdAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNlbGVjdG9yID0galF1ZXJ5LnBhcnNlSFRNTCggbWF0Y2hbMV0sIGRv
YywgdHJ1ZSApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgg
cnNpbmdsZVRhZy50ZXN0KCBtYXRjaFsxXSApICYmIGpRdWVyeS5pc1BsYWluT2JqZWN0KCBjb250
ZXh0ICkgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0aGlzLmF0dHIuY2FsbCggc2VsZWN0b3IsIGNvbnRleHQsIHRydWUgKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4galF1ZXJ5Lm1lcmdlKCB0aGlzLCBzZWxlY3RvciApOwot
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEhBTkRMRTogJCgjaWQpCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZWxlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCBtYXRj
aFsyXSApOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2hl
Y2sgcGFyZW50Tm9kZSB0byBjYXRjaCB3aGVuIEJsYWNrYmVycnkgNC42IHJldHVybnMKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBub2RlcyB0aGF0IGFyZSBubyBs
b25nZXIgaW4gdGhlIGRvY3VtZW50ICM2OTYzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCBlbGVtICYmIGVsZW0ucGFyZW50Tm9kZSApIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEhhbmRsZSB0aGUgY2FzZSB3
aGVyZSBJRSBhbmQgT3BlcmEgcmV0dXJuIGl0ZW1zCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBieSBuYW1lIGluc3RlYWQgb2YgSUQKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggZWxlbS5pZCAhPT0g
bWF0Y2hbMl0gKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiByb290alF1ZXJ5LmZpbmQoIHNlbGVjdG9yICk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgd2UgaW5q
ZWN0IHRoZSBlbGVtZW50IGRpcmVjdGx5IGludG8gdGhlIGpRdWVyeSBvYmplY3QKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGVuZ3RoID0gMTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNbMF0g
PSBlbGVtOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dCA9IGRvY3Vt
ZW50OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0
b3IgPSBzZWxlY3RvcjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdGhpczsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICAgICAgICAgICAgICAvLyBIQU5ETEU6ICQoZXhwciwgJCguLi4pKQotICAgICAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlIGlmICggIWNvbnRleHQgfHwgY29udGV4dC5qcXVlcnkgKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoIGNvbnRleHQgfHwgcm9vdGpR
dWVyeSApLmZpbmQoIHNlbGVjdG9yICk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIEhB
TkRMRTogJChleHByLCBjb250ZXh0KQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gKHdoaWNo
IGlzIGp1c3QgZXF1aXZhbGVudCB0bzogJChjb250ZXh0KS5maW5kKGV4cHIpCi0gICAgICAgICAg
ICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdGhpcy5jb25zdHJ1Y3RvciggY29udGV4dCApLmZpbmQoIHNlbGVjdG9yICk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBIQU5ETEU6ICQoZnVu
Y3Rpb24pCi0gICAgICAgICAgICAgICAgLy8gU2hvcnRjdXQgZm9yIGRvY3VtZW50IHJlYWR5Ci0g
ICAgICAgICAgICAgICAgfSBlbHNlIGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIHNlbGVjdG9yICkg
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcm9vdGpRdWVyeS5yZWFkeSggc2Vs
ZWN0b3IgKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAoIHNlbGVj
dG9yLnNlbGVjdG9yICE9PSB1bmRlZmluZWQgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0
aGlzLnNlbGVjdG9yID0gc2VsZWN0b3Iuc2VsZWN0b3I7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICB0aGlzLmNvbnRleHQgPSBzZWxlY3Rvci5jb250ZXh0OwotICAgICAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgICAgIHJldHVybiBqUXVlcnkubWFrZUFycmF5KCBzZWxlY3RvciwgdGhpcyAp
OwotICAgICAgICB9LAotCi0gICAgICAgIC8vIFN0YXJ0IHdpdGggYW4gZW1wdHkgc2VsZWN0b3IK
LSAgICAgICAgc2VsZWN0b3I6ICIiLAotCi0gICAgICAgIC8vIFRoZSBjdXJyZW50IHZlcnNpb24g
b2YgalF1ZXJ5IGJlaW5nIHVzZWQKLSAgICAgICAganF1ZXJ5OiAiMS44LjMiLAotCi0gICAgICAg
IC8vIFRoZSBkZWZhdWx0IGxlbmd0aCBvZiBhIGpRdWVyeSBvYmplY3QgaXMgMAotICAgICAgICBs
ZW5ndGg6IDAsCi0KLSAgICAgICAgLy8gVGhlIG51bWJlciBvZiBlbGVtZW50cyBjb250YWluZWQg
aW4gdGhlIG1hdGNoZWQgZWxlbWVudCBzZXQKLSAgICAgICAgc2l6ZTogZnVuY3Rpb24oKSB7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubGVuZ3RoOwotICAgICAgICB9LAotCi0gICAgICAg
IHRvQXJyYXk6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIHJldHVybiBjb3JlX3NsaWNl
LmNhbGwoIHRoaXMgKTsKLSAgICAgICAgfSwKLQotICAgICAgICAvLyBHZXQgdGhlIE50aCBlbGVt
ZW50IGluIHRoZSBtYXRjaGVkIGVsZW1lbnQgc2V0IE9SCi0gICAgICAgIC8vIEdldCB0aGUgd2hv
bGUgbWF0Y2hlZCBlbGVtZW50IHNldCBhcyBhIGNsZWFuIGFycmF5Ci0gICAgICAgIGdldDogZnVu
Y3Rpb24oIG51bSApIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gbnVtID09IG51bGwgPwotCi0g
ICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXR1cm4gYSAnY2xlYW4nIGFycmF5Ci0gICAgICAg
ICAgICAgICAgICAgICAgICB0aGlzLnRvQXJyYXkoKSA6Ci0KLSAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIFJldHVybiBqdXN0IHRoZSBvYmplY3QKLSAgICAgICAgICAgICAgICAgICAgICAgICgg
bnVtIDwgMCA/IHRoaXNbIHRoaXMubGVuZ3RoICsgbnVtIF0gOiB0aGlzWyBudW0gXSApOwotICAg
ICAgICB9LAotCi0gICAgICAgIC8vIFRha2UgYW4gYXJyYXkgb2YgZWxlbWVudHMgYW5kIHB1c2gg
aXQgb250byB0aGUgc3RhY2sKLSAgICAgICAgLy8gKHJldHVybmluZyB0aGUgbmV3IG1hdGNoZWQg
ZWxlbWVudCBzZXQpCi0gICAgICAgIHB1c2hTdGFjazogZnVuY3Rpb24oIGVsZW1zLCBuYW1lLCBz
ZWxlY3RvciApIHsKLQotICAgICAgICAgICAgICAgIC8vIEJ1aWxkIGEgbmV3IGpRdWVyeSBtYXRj
aGVkIGVsZW1lbnQgc2V0Ci0gICAgICAgICAgICAgICAgdmFyIHJldCA9IGpRdWVyeS5tZXJnZSgg
dGhpcy5jb25zdHJ1Y3RvcigpLCBlbGVtcyApOwotCi0gICAgICAgICAgICAgICAgLy8gQWRkIHRo
ZSBvbGQgb2JqZWN0IG9udG8gdGhlIHN0YWNrIChhcyBhIHJlZmVyZW5jZSkKLSAgICAgICAgICAg
ICAgICByZXQucHJldk9iamVjdCA9IHRoaXM7Ci0KLSAgICAgICAgICAgICAgICByZXQuY29udGV4
dCA9IHRoaXMuY29udGV4dDsKLQotICAgICAgICAgICAgICAgIGlmICggbmFtZSA9PT0gImZpbmQi
ICkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0LnNlbGVjdG9yID0gdGhpcy5zZWxlY3Rv
ciArICggdGhpcy5zZWxlY3RvciA/ICIgIiA6ICIiICkgKyBzZWxlY3RvcjsKLSAgICAgICAgICAg
ICAgICB9IGVsc2UgaWYgKCBuYW1lICkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0LnNl
bGVjdG9yID0gdGhpcy5zZWxlY3RvciArICIuIiArIG5hbWUgKyAiKCIgKyBzZWxlY3RvciArICIp
IjsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBSZXR1cm4gdGhlIG5l
d2x5LWZvcm1lZCBlbGVtZW50IHNldAotICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Ci0gICAg
ICAgIH0sCi0KLSAgICAgICAgLy8gRXhlY3V0ZSBhIGNhbGxiYWNrIGZvciBldmVyeSBlbGVtZW50
IGluIHRoZSBtYXRjaGVkIHNldC4KLSAgICAgICAgLy8gKFlvdSBjYW4gc2VlZCB0aGUgYXJndW1l
bnRzIHdpdGggYW4gYXJyYXkgb2YgYXJncywgYnV0IHRoaXMgaXMKLSAgICAgICAgLy8gb25seSB1
c2VkIGludGVybmFsbHkuKQotICAgICAgICBlYWNoOiBmdW5jdGlvbiggY2FsbGJhY2ssIGFyZ3Mg
KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGpRdWVyeS5lYWNoKCB0aGlzLCBjYWxsYmFjaywg
YXJncyApOwotICAgICAgICB9LAotCi0gICAgICAgIHJlYWR5OiBmdW5jdGlvbiggZm4gKSB7Ci0g
ICAgICAgICAgICAgICAgLy8gQWRkIHRoZSBjYWxsYmFjawotICAgICAgICAgICAgICAgIGpRdWVy
eS5yZWFkeS5wcm9taXNlKCkuZG9uZSggZm4gKTsKLQotICAgICAgICAgICAgICAgIHJldHVybiB0
aGlzOwotICAgICAgICB9LAotCi0gICAgICAgIGVxOiBmdW5jdGlvbiggaSApIHsKLSAgICAgICAg
ICAgICAgICBpID0gK2k7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGkgPT09IC0xID8KLSAgICAg
ICAgICAgICAgICAgICAgICAgIHRoaXMuc2xpY2UoIGkgKSA6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB0aGlzLnNsaWNlKCBpLCBpICsgMSApOwotICAgICAgICB9LAotCi0gICAgICAgIGZpcnN0
OiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcSggMCApOwotICAg
ICAgICB9LAotCi0gICAgICAgIGxhc3Q6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIHJl
dHVybiB0aGlzLmVxKCAtMSApOwotICAgICAgICB9LAotCi0gICAgICAgIHNsaWNlOiBmdW5jdGlv
bigpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wdXNoU3RhY2soIGNvcmVfc2xpY2Uu
YXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApLAotICAgICAgICAgICAgICAgICAgICAgICAgInNsaWNl
IiwgY29yZV9zbGljZS5jYWxsKGFyZ3VtZW50cykuam9pbigiLCIpICk7Ci0gICAgICAgIH0sCi0K
LSAgICAgICAgbWFwOiBmdW5jdGlvbiggY2FsbGJhY2sgKSB7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIHRoaXMucHVzaFN0YWNrKCBqUXVlcnkubWFwKHRoaXMsIGZ1bmN0aW9uKCBlbGVtLCBpICkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrLmNhbGwoIGVsZW0sIGks
IGVsZW0gKTsKLSAgICAgICAgICAgICAgICB9KSk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgZW5k
OiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wcmV2T2JqZWN0IHx8
IHRoaXMuY29uc3RydWN0b3IobnVsbCk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgLy8gRm9yIGlu
dGVybmFsIHVzZSBvbmx5LgotICAgICAgICAvLyBCZWhhdmVzIGxpa2UgYW4gQXJyYXkncyBtZXRo
b2QsIG5vdCBsaWtlIGEgalF1ZXJ5IG1ldGhvZC4KLSAgICAgICAgcHVzaDogY29yZV9wdXNoLAot
ICAgICAgICBzb3J0OiBbXS5zb3J0LAotICAgICAgICBzcGxpY2U6IFtdLnNwbGljZQotfTsKLQot
Ly8gR2l2ZSB0aGUgaW5pdCBmdW5jdGlvbiB0aGUgalF1ZXJ5IHByb3RvdHlwZSBmb3IgbGF0ZXIg
aW5zdGFudGlhdGlvbgotalF1ZXJ5LmZuLmluaXQucHJvdG90eXBlID0galF1ZXJ5LmZuOwotCi1q
UXVlcnkuZXh0ZW5kID0galF1ZXJ5LmZuLmV4dGVuZCA9IGZ1bmN0aW9uKCkgewotICAgICAgICB2
YXIgb3B0aW9ucywgbmFtZSwgc3JjLCBjb3B5LCBjb3B5SXNBcnJheSwgY2xvbmUsCi0gICAgICAg
ICAgICAgICAgdGFyZ2V0ID0gYXJndW1lbnRzWzBdIHx8IHt9LAotICAgICAgICAgICAgICAgIGkg
PSAxLAotICAgICAgICAgICAgICAgIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGgsCi0gICAgICAg
ICAgICAgICAgZGVlcCA9IGZhbHNlOwotCi0gICAgICAgIC8vIEhhbmRsZSBhIGRlZXAgY29weSBz
aXR1YXRpb24KLSAgICAgICAgaWYgKCB0eXBlb2YgdGFyZ2V0ID09PSAiYm9vbGVhbiIgKSB7Ci0g
ICAgICAgICAgICAgICAgZGVlcCA9IHRhcmdldDsKLSAgICAgICAgICAgICAgICB0YXJnZXQgPSBh
cmd1bWVudHNbMV0gfHwge307Ci0gICAgICAgICAgICAgICAgLy8gc2tpcCB0aGUgYm9vbGVhbiBh
bmQgdGhlIHRhcmdldAotICAgICAgICAgICAgICAgIGkgPSAyOwotICAgICAgICB9Ci0KLSAgICAg
ICAgLy8gSGFuZGxlIGNhc2Ugd2hlbiB0YXJnZXQgaXMgYSBzdHJpbmcgb3Igc29tZXRoaW5nIChw
b3NzaWJsZSBpbiBkZWVwIGNvcHkpCi0gICAgICAgIGlmICggdHlwZW9mIHRhcmdldCAhPT0gIm9i
amVjdCIgJiYgIWpRdWVyeS5pc0Z1bmN0aW9uKHRhcmdldCkgKSB7Ci0gICAgICAgICAgICAgICAg
dGFyZ2V0ID0ge307Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBleHRlbmQgalF1ZXJ5IGl0c2Vs
ZiBpZiBvbmx5IG9uZSBhcmd1bWVudCBpcyBwYXNzZWQKLSAgICAgICAgaWYgKCBsZW5ndGggPT09
IGkgKSB7Ci0gICAgICAgICAgICAgICAgdGFyZ2V0ID0gdGhpczsKLSAgICAgICAgICAgICAgICAt
LWk7Ci0gICAgICAgIH0KLQotICAgICAgICBmb3IgKCA7IGkgPCBsZW5ndGg7IGkrKyApIHsKLSAg
ICAgICAgICAgICAgICAvLyBPbmx5IGRlYWwgd2l0aCBub24tbnVsbC91bmRlZmluZWQgdmFsdWVz
Ci0gICAgICAgICAgICAgICAgaWYgKCAob3B0aW9ucyA9IGFyZ3VtZW50c1sgaSBdKSAhPSBudWxs
ICkgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gRXh0ZW5kIHRoZSBiYXNlIG9iamVjdAot
ICAgICAgICAgICAgICAgICAgICAgICAgZm9yICggbmFtZSBpbiBvcHRpb25zICkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzcmMgPSB0YXJnZXRbIG5hbWUgXTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29weSA9IG9wdGlvbnNbIG5hbWUgXTsKLQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBQcmV2ZW50IG5ldmVyLWVuZGluZyBsb29wCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggdGFyZ2V0ID09PSBjb3B5ICkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gUmVjdXJzZSBpZiB3ZSdyZSBtZXJnaW5nIHBsYWluIG9iamVjdHMgb3IgYXJyYXlz
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggZGVlcCAmJiBjb3B5ICYmICgg
alF1ZXJ5LmlzUGxhaW5PYmplY3QoY29weSkgfHwgKGNvcHlJc0FycmF5ID0galF1ZXJ5LmlzQXJy
YXkoY29weSkpICkgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCBjb3B5SXNBcnJheSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvcHlJc0FycmF5ID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9uZSA9IHNyYyAmJiBqUXVlcnkuaXNBcnJheShz
cmMpID8gc3JjIDogW107Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2xvbmUgPSBzcmMgJiYgalF1ZXJ5LmlzUGxhaW5PYmplY3Qoc3JjKSA/IHNyYyA6IHt9Owot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5ldmVyIG1vdmUgb3JpZ2luYWwgb2JqZWN0
cywgY2xvbmUgdGhlbQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRh
cmdldFsgbmFtZSBdID0galF1ZXJ5LmV4dGVuZCggZGVlcCwgY2xvbmUsIGNvcHkgKTsKLQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEb24ndCBicmluZyBpbiB1bmRlZmluZWQg
dmFsdWVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIGNvcHkg
IT09IHVuZGVmaW5lZCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0YXJnZXRbIG5hbWUgXSA9IGNvcHk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
IH0KLQotICAgICAgICAvLyBSZXR1cm4gdGhlIG1vZGlmaWVkIG9iamVjdAotICAgICAgICByZXR1
cm4gdGFyZ2V0OwotfTsKLQotalF1ZXJ5LmV4dGVuZCh7Ci0gICAgICAgIG5vQ29uZmxpY3Q6IGZ1
bmN0aW9uKCBkZWVwICkgewotICAgICAgICAgICAgICAgIGlmICggd2luZG93LiQgPT09IGpRdWVy
eSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy4kID0gXyQ7Ci0gICAgICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKCBkZWVwICYmIHdpbmRvdy5qUXVlcnkgPT09
IGpRdWVyeSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5qUXVlcnkgPSBfalF1
ZXJ5OwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHJldHVybiBqUXVlcnk7
Ci0gICAgICAgIH0sCi0KLSAgICAgICAgLy8gSXMgdGhlIERPTSByZWFkeSB0byBiZSB1c2VkPyBT
ZXQgdG8gdHJ1ZSBvbmNlIGl0IG9jY3Vycy4KLSAgICAgICAgaXNSZWFkeTogZmFsc2UsCi0KLSAg
ICAgICAgLy8gQSBjb3VudGVyIHRvIHRyYWNrIGhvdyBtYW55IGl0ZW1zIHRvIHdhaXQgZm9yIGJl
Zm9yZQotICAgICAgICAvLyB0aGUgcmVhZHkgZXZlbnQgZmlyZXMuIFNlZSAjNjc4MQotICAgICAg
ICByZWFkeVdhaXQ6IDEsCi0KLSAgICAgICAgLy8gSG9sZCAob3IgcmVsZWFzZSkgdGhlIHJlYWR5
IGV2ZW50Ci0gICAgICAgIGhvbGRSZWFkeTogZnVuY3Rpb24oIGhvbGQgKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKCBob2xkICkgewotICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LnJlYWR5
V2FpdCsrOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBqUXVlcnkucmVhZHkoIHRydWUgKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgIH0sCi0K
LSAgICAgICAgLy8gSGFuZGxlIHdoZW4gdGhlIERPTSBpcyByZWFkeQotICAgICAgICByZWFkeTog
ZnVuY3Rpb24oIHdhaXQgKSB7Ci0KLSAgICAgICAgICAgICAgICAvLyBBYm9ydCBpZiB0aGVyZSBh
cmUgcGVuZGluZyBob2xkcyBvciB3ZSdyZSBhbHJlYWR5IHJlYWR5Ci0gICAgICAgICAgICAgICAg
aWYgKCB3YWl0ID09PSB0cnVlID8gLS1qUXVlcnkucmVhZHlXYWl0IDogalF1ZXJ5LmlzUmVhZHkg
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICAgICAgLy8gTWFrZSBzdXJlIGJvZHkgZXhpc3RzLCBhdCBsZWFzdCwgaW4g
Y2FzZSBJRSBnZXRzIGEgbGl0dGxlIG92ZXJ6ZWFsb3VzICh0aWNrZXQgIzU0NDMpLgotICAgICAg
ICAgICAgICAgIGlmICggIWRvY3VtZW50LmJvZHkgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gc2V0VGltZW91dCggalF1ZXJ5LnJlYWR5LCAxICk7Ci0gICAgICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICAgICAgLy8gUmVtZW1iZXIgdGhhdCB0aGUgRE9NIGlzIHJlYWR5Ci0g
ICAgICAgICAgICAgICAgalF1ZXJ5LmlzUmVhZHkgPSB0cnVlOwotCi0gICAgICAgICAgICAgICAg
Ly8gSWYgYSBub3JtYWwgRE9NIFJlYWR5IGV2ZW50IGZpcmVkLCBkZWNyZW1lbnQsIGFuZCB3YWl0
IGlmIG5lZWQgYmUKLSAgICAgICAgICAgICAgICBpZiAoIHdhaXQgIT09IHRydWUgJiYgLS1qUXVl
cnkucmVhZHlXYWl0ID4gMCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSBhcmUgZnVuY3Rp
b25zIGJvdW5kLCB0byBleGVjdXRlCi0gICAgICAgICAgICAgICAgcmVhZHlMaXN0LnJlc29sdmVX
aXRoKCBkb2N1bWVudCwgWyBqUXVlcnkgXSApOwotCi0gICAgICAgICAgICAgICAgLy8gVHJpZ2dl
ciBhbnkgYm91bmQgcmVhZHkgZXZlbnRzCi0gICAgICAgICAgICAgICAgaWYgKCBqUXVlcnkuZm4u
dHJpZ2dlciApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeSggZG9jdW1lbnQgKS50
cmlnZ2VyKCJyZWFkeSIpLm9mZigicmVhZHkiKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
IH0sCi0KLSAgICAgICAgLy8gU2VlIHRlc3QvdW5pdC9jb3JlLmpzIGZvciBkZXRhaWxzIGNvbmNl
cm5pbmcgaXNGdW5jdGlvbi4KLSAgICAgICAgLy8gU2luY2UgdmVyc2lvbiAxLjMsIERPTSBtZXRo
b2RzIGFuZCBmdW5jdGlvbnMgbGlrZSBhbGVydAotICAgICAgICAvLyBhcmVuJ3Qgc3VwcG9ydGVk
LiBUaGV5IHJldHVybiBmYWxzZSBvbiBJRSAoIzI5NjgpLgotICAgICAgICBpc0Z1bmN0aW9uOiBm
dW5jdGlvbiggb2JqICkgewotICAgICAgICAgICAgICAgIHJldHVybiBqUXVlcnkudHlwZShvYmop
ID09PSAiZnVuY3Rpb24iOwotICAgICAgICB9LAotCi0gICAgICAgIGlzQXJyYXk6IEFycmF5Lmlz
QXJyYXkgfHwgZnVuY3Rpb24oIG9iaiApIHsKLSAgICAgICAgICAgICAgICByZXR1cm4galF1ZXJ5
LnR5cGUob2JqKSA9PT0gImFycmF5IjsKLSAgICAgICAgfSwKLQotICAgICAgICBpc1dpbmRvdzog
ZnVuY3Rpb24oIG9iaiApIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gb2JqICE9IG51bGwgJiYg
b2JqID09IG9iai53aW5kb3c7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgaXNOdW1lcmljOiBmdW5j
dGlvbiggb2JqICkgewotICAgICAgICAgICAgICAgIHJldHVybiAhaXNOYU4oIHBhcnNlRmxvYXQo
b2JqKSApICYmIGlzRmluaXRlKCBvYmogKTsKLSAgICAgICAgfSwKLQotICAgICAgICB0eXBlOiBm
dW5jdGlvbiggb2JqICkgewotICAgICAgICAgICAgICAgIHJldHVybiBvYmogPT0gbnVsbCA/Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcoIG9iaiApIDoKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGNsYXNzMnR5cGVbIGNvcmVfdG9TdHJpbmcuY2FsbChvYmopIF0gfHwgIm9iamVjdCI7
Ci0gICAgICAgIH0sCi0KLSAgICAgICAgaXNQbGFpbk9iamVjdDogZnVuY3Rpb24oIG9iaiApIHsK
LSAgICAgICAgICAgICAgICAvLyBNdXN0IGJlIGFuIE9iamVjdC4KLSAgICAgICAgICAgICAgICAv
LyBCZWNhdXNlIG9mIElFLCB3ZSBhbHNvIGhhdmUgdG8gY2hlY2sgdGhlIHByZXNlbmNlIG9mIHRo
ZSBjb25zdHJ1Y3RvciBwcm9wZXJ0eS4KLSAgICAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhh
dCBET00gbm9kZXMgYW5kIHdpbmRvdyBvYmplY3RzIGRvbid0IHBhc3MgdGhyb3VnaCwgYXMgd2Vs
bAotICAgICAgICAgICAgICAgIGlmICggIW9iaiB8fCBqUXVlcnkudHlwZShvYmopICE9PSAib2Jq
ZWN0IiB8fCBvYmoubm9kZVR5cGUgfHwgalF1ZXJ5LmlzV2luZG93KCBvYmogKSApIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm90IG93biBj
b25zdHJ1Y3RvciBwcm9wZXJ0eSBtdXN0IGJlIE9iamVjdAotICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCBvYmouY29uc3RydWN0b3IgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIWNvcmVfaGFzT3duLmNhbGwob2JqLCAiY29uc3RydWN0b3IiKSAmJgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAhY29yZV9oYXNPd24uY2FsbChvYmouY29uc3RydWN0b3IucHJv
dG90eXBlLCAiaXNQcm90b3R5cGVPZiIpICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgfSBjYXRjaCAoIGUgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBJRTgsOSBX
aWxsIHRocm93IGV4Y2VwdGlvbnMgb24gY2VydGFpbiBob3N0IG9iamVjdHMgIzk4OTcKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgICAgICAvLyBPd24gcHJvcGVydGllcyBhcmUgZW51bWVyYXRlZCBmaXJzdGx5LCBz
byB0byBzcGVlZCB1cCwKLSAgICAgICAgICAgICAgICAvLyBpZiBsYXN0IG9uZSBpcyBvd24sIHRo
ZW4gYWxsIHByb3BlcnRpZXMgYXJlIG93bi4KLQotICAgICAgICAgICAgICAgIHZhciBrZXk7Ci0g
ICAgICAgICAgICAgICAgZm9yICgga2V5IGluIG9iaiApIHt9Ci0KLSAgICAgICAgICAgICAgICBy
ZXR1cm4ga2V5ID09PSB1bmRlZmluZWQgfHwgY29yZV9oYXNPd24uY2FsbCggb2JqLCBrZXkgKTsK
LSAgICAgICAgfSwKLQotICAgICAgICBpc0VtcHR5T2JqZWN0OiBmdW5jdGlvbiggb2JqICkgewot
ICAgICAgICAgICAgICAgIHZhciBuYW1lOwotICAgICAgICAgICAgICAgIGZvciAoIG5hbWUgaW4g
b2JqICkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfSwKLQotICAg
ICAgICBlcnJvcjogZnVuY3Rpb24oIG1zZyApIHsKLSAgICAgICAgICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoIG1zZyApOwotICAgICAgICB9LAotCi0gICAgICAgIC8vIGRhdGE6IHN0cmluZyBvZiBo
dG1sCi0gICAgICAgIC8vIGNvbnRleHQgKG9wdGlvbmFsKTogSWYgc3BlY2lmaWVkLCB0aGUgZnJh
Z21lbnQgd2lsbCBiZSBjcmVhdGVkIGluIHRoaXMgY29udGV4dCwgZGVmYXVsdHMgdG8gZG9jdW1l
bnQKLSAgICAgICAgLy8gc2NyaXB0cyAob3B0aW9uYWwpOiBJZiB0cnVlLCB3aWxsIGluY2x1ZGUg
c2NyaXB0cyBwYXNzZWQgaW4gdGhlIGh0bWwgc3RyaW5nCi0gICAgICAgIHBhcnNlSFRNTDogZnVu
Y3Rpb24oIGRhdGEsIGNvbnRleHQsIHNjcmlwdHMgKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHBh
cnNlZDsKLSAgICAgICAgICAgICAgICBpZiAoICFkYXRhIHx8IHR5cGVvZiBkYXRhICE9PSAic3Ry
aW5nIiApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoIHR5cGVvZiBjb250ZXh0ID09PSAiYm9vbGVh
biIgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRzID0gY29udGV4dDsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnRleHQgPSAwOwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICBjb250ZXh0ID0gY29udGV4dCB8fCBkb2N1bWVudDsKLQotICAgICAgICAgICAg
ICAgIC8vIFNpbmdsZSB0YWcKLSAgICAgICAgICAgICAgICBpZiAoIChwYXJzZWQgPSByc2luZ2xl
VGFnLmV4ZWMoIGRhdGEgKSkgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWyBj
b250ZXh0LmNyZWF0ZUVsZW1lbnQoIHBhcnNlZFsxXSApIF07Ci0gICAgICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICAgICAgcGFyc2VkID0galF1ZXJ5LmJ1aWxkRnJhZ21lbnQoIFsgZGF0YSBd
LCBjb250ZXh0LCBzY3JpcHRzID8gbnVsbCA6IFtdICk7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IGpRdWVyeS5tZXJnZSggW10sCi0gICAgICAgICAgICAgICAgICAgICAgICAocGFyc2VkLmNhY2hl
YWJsZSA/IGpRdWVyeS5jbG9uZSggcGFyc2VkLmZyYWdtZW50ICkgOiBwYXJzZWQuZnJhZ21lbnQp
LmNoaWxkTm9kZXMgKTsKLSAgICAgICAgfSwKLQotICAgICAgICBwYXJzZUpTT046IGZ1bmN0aW9u
KCBkYXRhICkgewotICAgICAgICAgICAgICAgIGlmICggIWRhdGEgfHwgdHlwZW9mIGRhdGEgIT09
ICJzdHJpbmciKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAg
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgbGVhZGluZy90cmFp
bGluZyB3aGl0ZXNwYWNlIGlzIHJlbW92ZWQgKElFIGNhbid0IGhhbmRsZSBpdCkKLSAgICAgICAg
ICAgICAgICBkYXRhID0galF1ZXJ5LnRyaW0oIGRhdGEgKTsKLQotICAgICAgICAgICAgICAgIC8v
IEF0dGVtcHQgdG8gcGFyc2UgdXNpbmcgdGhlIG5hdGl2ZSBKU09OIHBhcnNlciBmaXJzdAotICAg
ICAgICAgICAgICAgIGlmICggd2luZG93LkpTT04gJiYgd2luZG93LkpTT04ucGFyc2UgKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gd2luZG93LkpTT04ucGFyc2UoIGRhdGEgKTsK
LSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIGlu
Y29taW5nIGRhdGEgaXMgYWN0dWFsIEpTT04KLSAgICAgICAgICAgICAgICAvLyBMb2dpYyBib3Jy
b3dlZCBmcm9tIGh0dHA6Ly9qc29uLm9yZy9qc29uMi5qcwotICAgICAgICAgICAgICAgIGlmICgg
cnZhbGlkY2hhcnMudGVzdCggZGF0YS5yZXBsYWNlKCBydmFsaWRlc2NhcGUsICJAIiApCi0gICAg
ICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSggcnZhbGlkdG9rZW5zLCAiXSIgKQotICAgICAg
ICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoIHJ2YWxpZGJyYWNlcywgIiIpKSApIHsKLQotICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICggbmV3IEZ1bmN0aW9uKCAicmV0dXJuICIgKyBk
YXRhICkgKSgpOwotCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGpRdWVyeS5l
cnJvciggIkludmFsaWQgSlNPTjogIiArIGRhdGEgKTsKLSAgICAgICAgfSwKLQotICAgICAgICAv
LyBDcm9zcy1icm93c2VyIHhtbCBwYXJzaW5nCi0gICAgICAgIHBhcnNlWE1MOiBmdW5jdGlvbigg
ZGF0YSApIHsKLSAgICAgICAgICAgICAgICB2YXIgeG1sLCB0bXA7Ci0gICAgICAgICAgICAgICAg
aWYgKCAhZGF0YSB8fCB0eXBlb2YgZGF0YSAhPT0gInN0cmluZyIgKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICggd2luZG93LkRPTVBhcnNlciAp
IHsgLy8gU3RhbmRhcmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gbmV3
IERPTVBhcnNlcigpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWwgPSB0bXAu
cGFyc2VGcm9tU3RyaW5nKCBkYXRhICwgInRleHQveG1sIiApOwotICAgICAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsgLy8gSUUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1s
ID0gbmV3IEFjdGl2ZVhPYmplY3QoICJNaWNyb3NvZnQuWE1MRE9NIiApOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB4bWwuYXN5bmMgPSAiZmFsc2UiOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB4bWwubG9hZFhNTCggZGF0YSApOwotICAgICAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIH0gY2F0Y2goIGUgKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICB4bWwgPSB1bmRlZmluZWQ7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIGlmICggIXhtbCB8fCAheG1sLmRvY3VtZW50RWxlbWVudCB8fCB4bWwuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoICJwYXJzZXJlcnJvciIgKS5sZW5ndGggKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBqUXVlcnkuZXJyb3IoICJJbnZhbGlkIFhNTDogIiArIGRhdGEgKTsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHhtbDsKLSAgICAgICAgfSwKLQotICAgICAg
ICBub29wOiBmdW5jdGlvbigpIHt9LAotCi0gICAgICAgIC8vIEV2YWx1YXRlcyBhIHNjcmlwdCBp
biBhIGdsb2JhbCBjb250ZXh0Ci0gICAgICAgIC8vIFdvcmthcm91bmRzIGJhc2VkIG9uIGZpbmRp
bmdzIGJ5IEppbSBEcmlzY29sbAotICAgICAgICAvLyBodHRwOi8vd2VibG9ncy5qYXZhLm5ldC9i
bG9nL2RyaXNjb2xsL2FyY2hpdmUvMjAwOS8wOS8wOC9ldmFsLWphdmFzY3JpcHQtZ2xvYmFsLWNv
bnRleHQKLSAgICAgICAgZ2xvYmFsRXZhbDogZnVuY3Rpb24oIGRhdGEgKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKCBkYXRhICYmIGNvcmVfcm5vdHdoaXRlLnRlc3QoIGRhdGEgKSApIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIFdlIHVzZSBleGVjU2NyaXB0IG9uIEludGVybmV0IEV4cGxv
cmVyCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSB1c2UgYW4gYW5vbnltb3VzIGZ1bmN0
aW9uIHNvIHRoYXQgY29udGV4dCBpcyB3aW5kb3cKLSAgICAgICAgICAgICAgICAgICAgICAgIC8v
IHJhdGhlciB0aGFuIGpRdWVyeSBpbiBGaXJlZm94Ci0gICAgICAgICAgICAgICAgICAgICAgICAo
IHdpbmRvdy5leGVjU2NyaXB0IHx8IGZ1bmN0aW9uKCBkYXRhICkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB3aW5kb3dbICJldmFsIiBdLmNhbGwoIHdpbmRvdywgZGF0YSApOwot
ICAgICAgICAgICAgICAgICAgICAgICAgfSApKCBkYXRhICk7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICB9LAotCi0gICAgICAgIC8vIENvbnZlcnQgZGFzaGVkIHRvIGNhbWVsQ2FzZTsgdXNl
ZCBieSB0aGUgY3NzIGFuZCBkYXRhIG1vZHVsZXMKLSAgICAgICAgLy8gTWljcm9zb2Z0IGZvcmdv
dCB0byBodW1wIHRoZWlyIHZlbmRvciBwcmVmaXggKCM5NTcyKQotICAgICAgICBjYW1lbENhc2U6
IGZ1bmN0aW9uKCBzdHJpbmcgKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBs
YWNlKCBybXNQcmVmaXgsICJtcy0iICkucmVwbGFjZSggcmRhc2hBbHBoYSwgZmNhbWVsQ2FzZSAp
OwotICAgICAgICB9LAotCi0gICAgICAgIG5vZGVOYW1lOiBmdW5jdGlvbiggZWxlbSwgbmFtZSAp
IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZWxlbS5ub2RlTmFtZSAmJiBlbGVtLm5vZGVOYW1l
LnRvTG93ZXJDYXNlKCkgPT09IG5hbWUudG9Mb3dlckNhc2UoKTsKLSAgICAgICAgfSwKLQotICAg
ICAgICAvLyBhcmdzIGlzIGZvciBpbnRlcm5hbCB1c2FnZSBvbmx5Ci0gICAgICAgIGVhY2g6IGZ1
bmN0aW9uKCBvYmosIGNhbGxiYWNrLCBhcmdzICkgewotICAgICAgICAgICAgICAgIHZhciBuYW1l
LAotICAgICAgICAgICAgICAgICAgICAgICAgaSA9IDAsCi0gICAgICAgICAgICAgICAgICAgICAg
ICBsZW5ndGggPSBvYmoubGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgaXNPYmogPSBs
ZW5ndGggPT09IHVuZGVmaW5lZCB8fCBqUXVlcnkuaXNGdW5jdGlvbiggb2JqICk7Ci0KLSAgICAg
ICAgICAgICAgICBpZiAoIGFyZ3MgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGlz
T2JqICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKCBuYW1lIGluIG9i
aiApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGNhbGxi
YWNrLmFwcGx5KCBvYmpbIG5hbWUgXSwgYXJncyApID09PSBmYWxzZSApIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZm9yICggOyBpIDwgbGVuZ3RoOyApIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGNhbGxiYWNrLmFwcGx5KCBvYmpbIGkrKyBd
LCBhcmdzICkgPT09IGZhbHNlICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBBIHNwZWNpYWwsIGZhc3QsIGNhc2Ug
Zm9yIHRoZSBtb3N0IGNvbW1vbiB1c2Ugb2YgZWFjaAotICAgICAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGlzT2JqICkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmb3IgKCBuYW1lIGluIG9iaiApIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGNhbGxiYWNrLmNhbGwoIG9ialsgbmFtZSBdLCBu
YW1lLCBvYmpbIG5hbWUgXSApID09PSBmYWxzZSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZm9yICggOyBpIDwgbGVuZ3RoOyApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoIGNhbGxiYWNrLmNhbGwoIG9ialsgaSBdLCBpLCBvYmpbIGkrKyBd
ICkgPT09IGZhbHNlICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgcmV0dXJuIG9iajsK
LSAgICAgICAgfSwKLQotICAgICAgICAvLyBVc2UgbmF0aXZlIFN0cmluZy50cmltIGZ1bmN0aW9u
IHdoZXJldmVyIHBvc3NpYmxlCi0gICAgICAgIHRyaW06IGNvcmVfdHJpbSAmJiAhY29yZV90cmlt
LmNhbGwoIlx1RkVGRlx4QTAiKSA/Ci0gICAgICAgICAgICAgICAgZnVuY3Rpb24oIHRleHQgKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGV4dCA9PSBudWxsID8KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIiIgOgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb3JlX3RyaW0uY2FsbCggdGV4dCApOwotICAgICAgICAgICAgICAgIH0gOgotCi0gICAg
ICAgICAgICAgICAgLy8gT3RoZXJ3aXNlIHVzZSBvdXIgb3duIHRyaW1taW5nIGZ1bmN0aW9uYWxp
dHkKLSAgICAgICAgICAgICAgICBmdW5jdGlvbiggdGV4dCApIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB0ZXh0ID09IG51bGwgPwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiIiA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggdGV4dCArICIiICku
cmVwbGFjZSggcnRyaW0sICIiICk7Ci0gICAgICAgICAgICAgICAgfSwKLQotICAgICAgICAvLyBy
ZXN1bHRzIGlzIGZvciBpbnRlcm5hbCB1c2FnZSBvbmx5Ci0gICAgICAgIG1ha2VBcnJheTogZnVu
Y3Rpb24oIGFyciwgcmVzdWx0cyApIHsKLSAgICAgICAgICAgICAgICB2YXIgdHlwZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJldCA9IHJlc3VsdHMgfHwgW107Ci0KLSAgICAgICAgICAgICAg
ICBpZiAoIGFyciAhPSBudWxsICkgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHdp
bmRvdywgc3RyaW5ncyAoYW5kIGZ1bmN0aW9ucykgYWxzbyBoYXZlICdsZW5ndGgnCi0gICAgICAg
ICAgICAgICAgICAgICAgICAvLyBUd2Vha2VkIGxvZ2ljIHNsaWdodGx5IHRvIGhhbmRsZSBCbGFj
a2JlcnJ5IDQuNyBSZWdFeHAgaXNzdWVzICM2OTMwCi0gICAgICAgICAgICAgICAgICAgICAgICB0
eXBlID0galF1ZXJ5LnR5cGUoIGFyciApOwotCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAo
IGFyci5sZW5ndGggPT0gbnVsbCB8fCB0eXBlID09PSAic3RyaW5nIiB8fCB0eXBlID09PSAiZnVu
Y3Rpb24iIHx8IHR5cGUgPT09ICJyZWdleHAiIHx8IGpRdWVyeS5pc1dpbmRvdyggYXJyICkgKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcmVfcHVzaC5jYWxsKCByZXQsIGFy
ciApOwotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgalF1ZXJ5Lm1lcmdlKCByZXQsIGFyciApOwotICAgICAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHJldHVybiBy
ZXQ7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgaW5BcnJheTogZnVuY3Rpb24oIGVsZW0sIGFyciwg
aSApIHsKLSAgICAgICAgICAgICAgICB2YXIgbGVuOwotCi0gICAgICAgICAgICAgICAgaWYgKCBh
cnIgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGNvcmVfaW5kZXhPZiApIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvcmVfaW5kZXhPZi5jYWxsKCBh
cnIsIGVsZW0sIGkgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
ICAgICAgICAgICAgbGVuID0gYXJyLmxlbmd0aDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGkg
PSBpID8gaSA8IDAgPyBNYXRoLm1heCggMCwgbGVuICsgaSApIDogaSA6IDA7Ci0KLSAgICAgICAg
ICAgICAgICAgICAgICAgIGZvciAoIDsgaSA8IGxlbjsgaSsrICkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBTa2lwIGFjY2Vzc2luZyBpbiBzcGFyc2UgYXJyYXlzCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggaSBpbiBhcnIgJiYgYXJyWyBpIF0gPT09
IGVsZW0gKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICByZXR1cm4gLTE7
Ci0gICAgICAgIH0sCi0KLSAgICAgICAgbWVyZ2U6IGZ1bmN0aW9uKCBmaXJzdCwgc2Vjb25kICkg
ewotICAgICAgICAgICAgICAgIHZhciBsID0gc2Vjb25kLmxlbmd0aCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGkgPSBmaXJzdC5sZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICBqID0g
MDsKLQotICAgICAgICAgICAgICAgIGlmICggdHlwZW9mIGwgPT09ICJudW1iZXIiICkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgZm9yICggOyBqIDwgbDsgaisrICkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmaXJzdFsgaSsrIF0gPSBzZWNvbmRbIGogXTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICB3aGlsZSAoIHNlY29uZFtqXSAhPT0gdW5kZWZpbmVkICkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJzdFsgaSsrIF0gPSBzZWNvbmRbIGorKyBdOwot
ICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgICAgIGZpcnN0Lmxlbmd0aCA9IGk7Ci0KLSAgICAgICAgICAgICAgICByZXR1cm4gZmlyc3Q7
Ci0gICAgICAgIH0sCi0KLSAgICAgICAgZ3JlcDogZnVuY3Rpb24oIGVsZW1zLCBjYWxsYmFjaywg
aW52ICkgewotICAgICAgICAgICAgICAgIHZhciByZXRWYWwsCi0gICAgICAgICAgICAgICAgICAg
ICAgICByZXQgPSBbXSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAwLAotICAgICAgICAg
ICAgICAgICAgICAgICAgbGVuZ3RoID0gZWxlbXMubGVuZ3RoOwotICAgICAgICAgICAgICAgIGlu
diA9ICEhaW52OwotCi0gICAgICAgICAgICAgICAgLy8gR28gdGhyb3VnaCB0aGUgYXJyYXksIG9u
bHkgc2F2aW5nIHRoZSBpdGVtcwotICAgICAgICAgICAgICAgIC8vIHRoYXQgcGFzcyB0aGUgdmFs
aWRhdG9yIGZ1bmN0aW9uCi0gICAgICAgICAgICAgICAgZm9yICggOyBpIDwgbGVuZ3RoOyBpKysg
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXRWYWwgPSAhIWNhbGxiYWNrKCBlbGVtc1sg
aSBdLCBpICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGludiAhPT0gcmV0VmFsICkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXQucHVzaCggZWxlbXNbIGkgXSAp
OwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgICAgIHJldHVybiByZXQ7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgLy8gYXJnIGlzIGZv
ciBpbnRlcm5hbCB1c2FnZSBvbmx5Ci0gICAgICAgIG1hcDogZnVuY3Rpb24oIGVsZW1zLCBjYWxs
YmFjaywgYXJnICkgewotICAgICAgICAgICAgICAgIHZhciB2YWx1ZSwga2V5LAotICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0ID0gW10sCi0gICAgICAgICAgICAgICAgICAgICAgICBpID0gMCwK
LSAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aCA9IGVsZW1zLmxlbmd0aCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIGpxdWVyeSBvYmplY3RzIGFyZSB0cmVhdGVkIGFzIGFycmF5cwot
ICAgICAgICAgICAgICAgICAgICAgICAgaXNBcnJheSA9IGVsZW1zIGluc3RhbmNlb2YgalF1ZXJ5
IHx8IGxlbmd0aCAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiBsZW5ndGggPT09ICJudW1iZXIiICYm
ICggKCBsZW5ndGggPiAwICYmIGVsZW1zWyAwIF0gJiYgZWxlbXNbIGxlbmd0aCAtMSBdICkgfHwg
bGVuZ3RoID09PSAwIHx8IGpRdWVyeS5pc0FycmF5KCBlbGVtcyApICkgOwotCi0gICAgICAgICAg
ICAgICAgLy8gR28gdGhyb3VnaCB0aGUgYXJyYXksIHRyYW5zbGF0aW5nIGVhY2ggb2YgdGhlIGl0
ZW1zIHRvIHRoZWlyCi0gICAgICAgICAgICAgICAgaWYgKCBpc0FycmF5ICkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgZm9yICggOyBpIDwgbGVuZ3RoOyBpKysgKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZhbHVlID0gY2FsbGJhY2soIGVsZW1zWyBpIF0sIGksIGFyZyAp
OwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggdmFsdWUgIT0gbnVsbCAp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXRbIHJldC5sZW5n
dGggXSA9IHZhbHVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBHbyB0aHJvdWdoIGV2ZXJ5
IGtleSBvbiB0aGUgb2JqZWN0LAotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBmb3IgKCBrZXkgaW4gZWxlbXMgKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZhbHVlID0gY2FsbGJhY2soIGVsZW1zWyBrZXkgXSwga2V5LCBhcmcgKTsK
LQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHZhbHVlICE9IG51bGwgKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0WyByZXQubGVuZ3Ro
IF0gPSB2YWx1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIC8v
IEZsYXR0ZW4gYW55IG5lc3RlZCBhcnJheXMKLSAgICAgICAgICAgICAgICByZXR1cm4gcmV0LmNv
bmNhdC5hcHBseSggW10sIHJldCApOwotICAgICAgICB9LAotCi0gICAgICAgIC8vIEEgZ2xvYmFs
IEdVSUQgY291bnRlciBmb3Igb2JqZWN0cwotICAgICAgICBndWlkOiAxLAotCi0gICAgICAgIC8v
IEJpbmQgYSBmdW5jdGlvbiB0byBhIGNvbnRleHQsIG9wdGlvbmFsbHkgcGFydGlhbGx5IGFwcGx5
aW5nIGFueQotICAgICAgICAvLyBhcmd1bWVudHMuCi0gICAgICAgIHByb3h5OiBmdW5jdGlvbigg
Zm4sIGNvbnRleHQgKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHRtcCwgYXJncywgcHJveHk7Ci0K
LSAgICAgICAgICAgICAgICBpZiAoIHR5cGVvZiBjb250ZXh0ID09PSAic3RyaW5nIiApIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IGZuWyBjb250ZXh0IF07Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBjb250ZXh0ID0gZm47Ci0gICAgICAgICAgICAgICAgICAgICAgICBmbiA9IHRt
cDsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBRdWljayBjaGVjayB0
byBkZXRlcm1pbmUgaWYgdGFyZ2V0IGlzIGNhbGxhYmxlLCBpbiB0aGUgc3BlYwotICAgICAgICAg
ICAgICAgIC8vIHRoaXMgdGhyb3dzIGEgVHlwZUVycm9yLCBidXQgd2Ugd2lsbCBqdXN0IHJldHVy
biB1bmRlZmluZWQuCi0gICAgICAgICAgICAgICAgaWYgKCAhalF1ZXJ5LmlzRnVuY3Rpb24oIGZu
ICkgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOwotICAgICAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIC8vIFNpbXVsYXRlZCBiaW5kCi0gICAgICAg
ICAgICAgICAgYXJncyA9IGNvcmVfc2xpY2UuY2FsbCggYXJndW1lbnRzLCAyICk7Ci0gICAgICAg
ICAgICAgICAgcHJveHkgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmbi5hcHBseSggY29udGV4dCwgYXJncy5jb25jYXQoIGNvcmVfc2xpY2UuY2FsbCggYXJn
dW1lbnRzICkgKSApOwotICAgICAgICAgICAgICAgIH07Ci0KLSAgICAgICAgICAgICAgICAvLyBT
ZXQgdGhlIGd1aWQgb2YgdW5pcXVlIGhhbmRsZXIgdG8gdGhlIHNhbWUgb2Ygb3JpZ2luYWwgaGFu
ZGxlciwgc28gaXQgY2FuIGJlIHJlbW92ZWQKLSAgICAgICAgICAgICAgICBwcm94eS5ndWlkID0g
Zm4uZ3VpZCA9IGZuLmd1aWQgfHwgalF1ZXJ5Lmd1aWQrKzsKLQotICAgICAgICAgICAgICAgIHJl
dHVybiBwcm94eTsKLSAgICAgICAgfSwKLQotICAgICAgICAvLyBNdWx0aWZ1bmN0aW9uYWwgbWV0
aG9kIHRvIGdldCBhbmQgc2V0IHZhbHVlcyBvZiBhIGNvbGxlY3Rpb24KLSAgICAgICAgLy8gVGhl
IHZhbHVlL3MgY2FuIG9wdGlvbmFsbHkgYmUgZXhlY3V0ZWQgaWYgaXQncyBhIGZ1bmN0aW9uCi0g
ICAgICAgIGFjY2VzczogZnVuY3Rpb24oIGVsZW1zLCBmbiwga2V5LCB2YWx1ZSwgY2hhaW5hYmxl
LCBlbXB0eUdldCwgcGFzcyApIHsKLSAgICAgICAgICAgICAgICB2YXIgZXhlYywKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGJ1bGsgPSBrZXkgPT0gbnVsbCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGkgPSAwLAotICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoID0gZWxlbXMubGVuZ3Ro
OwotCi0gICAgICAgICAgICAgICAgLy8gU2V0cyBtYW55IHZhbHVlcwotICAgICAgICAgICAgICAg
IGlmICgga2V5ICYmIHR5cGVvZiBrZXkgPT09ICJvYmplY3QiICkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgZm9yICggaSBpbiBrZXkgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGpRdWVyeS5hY2Nlc3MoIGVsZW1zLCBmbiwgaSwga2V5W2ldLCAxLCBlbXB0eUdldCwgdmFs
dWUgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAg
IGNoYWluYWJsZSA9IDE7Ci0KLSAgICAgICAgICAgICAgICAvLyBTZXRzIG9uZSB2YWx1ZQotICAg
ICAgICAgICAgICAgIH0gZWxzZSBpZiAoIHZhbHVlICE9PSB1bmRlZmluZWQgKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAvLyBPcHRpb25hbGx5LCBmdW5jdGlvbiB2YWx1ZXMgZ2V0IGV4ZWN1
dGVkIGlmIGV4ZWMgaXMgdHJ1ZQotICAgICAgICAgICAgICAgICAgICAgICAgZXhlYyA9IHBhc3Mg
PT09IHVuZGVmaW5lZCAmJiBqUXVlcnkuaXNGdW5jdGlvbiggdmFsdWUgKTsKLQotICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKCBidWxrICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBCdWxrIG9wZXJhdGlvbnMgb25seSBpdGVyYXRlIHdoZW4gZXhlY3V0aW5nIGZ1bmN0
aW9uIHZhbHVlcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGV4ZWMgKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlYyA9IGZuOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZuID0gZnVuY3Rpb24oIGVsZW0s
IGtleSwgdmFsdWUgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZXhlYy5jYWxsKCBqUXVlcnkoIGVsZW0gKSwgdmFsdWUgKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwotCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIE90aGVyd2lzZSB0aGV5IHJ1biBhZ2FpbnN0IHRoZSBlbnRpcmUg
c2V0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm4uY2FsbCggZWxlbXMsIHZhbHVlICk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm4gPSBudWxsOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgICAgICAgICAgICAgIGlmICggZm4gKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZvciAoOyBpIDwgbGVuZ3RoOyBpKysgKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZm4oIGVsZW1zW2ldLCBrZXksIGV4ZWMgPyB2YWx1ZS5j
YWxsKCBlbGVtc1tpXSwgaSwgZm4oIGVsZW1zW2ldLCBrZXkgKSApIDogdmFsdWUsIHBhc3MgKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICBjaGFpbmFibGUgPSAxOwotICAgICAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHJldHVybiBjaGFpbmFibGUgPwotICAgICAgICAg
ICAgICAgICAgICAgICAgZWxlbXMgOgotCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBHZXRz
Ci0gICAgICAgICAgICAgICAgICAgICAgICBidWxrID8KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZm4uY2FsbCggZWxlbXMgKSA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxlbmd0aCA/IGZuKCBlbGVtc1swXSwga2V5ICkgOiBlbXB0eUdldDsKLSAgICAgICAgfSwK
LQotICAgICAgICBub3c6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIHJldHVybiAoIG5l
dyBEYXRlKCkgKS5nZXRUaW1lKCk7Ci0gICAgICAgIH0KLX0pOwotCi1qUXVlcnkucmVhZHkucHJv
bWlzZSA9IGZ1bmN0aW9uKCBvYmogKSB7Ci0gICAgICAgIGlmICggIXJlYWR5TGlzdCApIHsKLQot
ICAgICAgICAgICAgICAgIHJlYWR5TGlzdCA9IGpRdWVyeS5EZWZlcnJlZCgpOwotCi0gICAgICAg
ICAgICAgICAgLy8gQ2F0Y2ggY2FzZXMgd2hlcmUgJChkb2N1bWVudCkucmVhZHkoKSBpcyBjYWxs
ZWQgYWZ0ZXIgdGhlIGJyb3dzZXIgZXZlbnQgaGFzIGFscmVhZHkgb2NjdXJyZWQuCi0gICAgICAg
ICAgICAgICAgLy8gd2Ugb25jZSB0cmllZCB0byB1c2UgcmVhZHlTdGF0ZSAiaW50ZXJhY3RpdmUi
IGhlcmUsIGJ1dCBpdCBjYXVzZWQgaXNzdWVzIGxpa2UgdGhlIG9uZQotICAgICAgICAgICAgICAg
IC8vIGRpc2NvdmVyZWQgYnkgQ2hyaXNTIGhlcmU6IGh0dHA6Ly9idWdzLmpxdWVyeS5jb20vdGlj
a2V0LzEyMjgyI2NvbW1lbnQ6MTUKLSAgICAgICAgICAgICAgICBpZiAoIGRvY3VtZW50LnJlYWR5
U3RhdGUgPT09ICJjb21wbGV0ZSIgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBIYW5k
bGUgaXQgYXN5bmNocm9ub3VzbHkgdG8gYWxsb3cgc2NyaXB0cyB0aGUgb3Bwb3J0dW5pdHkgdG8g
ZGVsYXkgcmVhZHkKLSAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoIGpRdWVyeS5y
ZWFkeSwgMSApOwotCi0gICAgICAgICAgICAgICAgLy8gU3RhbmRhcmRzLWJhc2VkIGJyb3dzZXJz
IHN1cHBvcnQgRE9NQ29udGVudExvYWRlZAotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIGRv
Y3VtZW50LmFkZEV2ZW50TGlzdGVuZXIgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBV
c2UgdGhlIGhhbmR5IGV2ZW50IGNhbGxiYWNrCi0gICAgICAgICAgICAgICAgICAgICAgICBkb2N1
bWVudC5hZGRFdmVudExpc3RlbmVyKCAiRE9NQ29udGVudExvYWRlZCIsIERPTUNvbnRlbnRMb2Fk
ZWQsIGZhbHNlICk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIEEgZmFsbGJhY2sgdG8g
d2luZG93Lm9ubG9hZCwgdGhhdCB3aWxsIGFsd2F5cyB3b3JrCi0gICAgICAgICAgICAgICAgICAg
ICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lciggImxvYWQiLCBqUXVlcnkucmVhZHksIGZhbHNl
ICk7Ci0KLSAgICAgICAgICAgICAgICAvLyBJZiBJRSBldmVudCBtb2RlbCBpcyB1c2VkCi0gICAg
ICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVuc3VyZSBm
aXJpbmcgYmVmb3JlIG9ubG9hZCwgbWF5YmUgbGF0ZSBidXQgc2FmZSBhbHNvIGZvciBpZnJhbWVz
Ci0gICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5hdHRhY2hFdmVudCggIm9ucmVhZHlz
dGF0ZWNoYW5nZSIsIERPTUNvbnRlbnRMb2FkZWQgKTsKLQotICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gQSBmYWxsYmFjayB0byB3aW5kb3cub25sb2FkLCB0aGF0IHdpbGwgYWx3YXlzIHdvcmsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5hdHRhY2hFdmVudCggIm9ubG9hZCIsIGpR
dWVyeS5yZWFkeSApOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiBJRSBhbmQgbm90
IGEgZnJhbWUKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnRpbnVhbGx5IGNoZWNrIHRv
IHNlZSBpZiB0aGUgZG9jdW1lbnQgaXMgcmVhZHkKLSAgICAgICAgICAgICAgICAgICAgICAgIHZh
ciB0b3AgPSBmYWxzZTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdG9wID0gd2luZG93LmZyYW1lRWxlbWVudCA9PSBudWxs
ICYmIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0g
Y2F0Y2goZSkge30KLQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCB0b3AgJiYgdG9wLmRv
U2Nyb2xsICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuY3Rpb24gZG9T
Y3JvbGxDaGVjaygpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoICFqUXVlcnkuaXNSZWFkeSApIHsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gVXNlIHRoZSB0cmljayBieSBEaWVnbyBQZXJpbmkK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gaHR0cDovL2phdmFzY3JpcHQubndib3guY29tL0lFQ29udGVudExvYWRlZC8KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wLmRvU2Ny
b2xsKCJsZWZ0Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9IGNhdGNoKGUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoIGRvU2Nyb2xsQ2hlY2ssIDUwICk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBleGVj
dXRlIGFueSB3YWl0aW5nIGZ1bmN0aW9ucwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgalF1ZXJ5LnJlYWR5KCk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSgp
OwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
fQotICAgICAgICByZXR1cm4gcmVhZHlMaXN0LnByb21pc2UoIG9iaiApOwotfTsKLQotLy8gUG9w
dWxhdGUgdGhlIGNsYXNzMnR5cGUgbWFwCi1qUXVlcnkuZWFjaCgiQm9vbGVhbiBOdW1iZXIgU3Ry
aW5nIEZ1bmN0aW9uIEFycmF5IERhdGUgUmVnRXhwIE9iamVjdCIuc3BsaXQoIiAiKSwgZnVuY3Rp
b24oaSwgbmFtZSkgewotICAgICAgICBjbGFzczJ0eXBlWyAiW29iamVjdCAiICsgbmFtZSArICJd
IiBdID0gbmFtZS50b0xvd2VyQ2FzZSgpOwotfSk7Ci0KLS8vIEFsbCBqUXVlcnkgb2JqZWN0cyBz
aG91bGQgcG9pbnQgYmFjayB0byB0aGVzZQotcm9vdGpRdWVyeSA9IGpRdWVyeShkb2N1bWVudCk7
Ci0vLyBTdHJpbmcgdG8gT2JqZWN0IG9wdGlvbnMgZm9ybWF0IGNhY2hlCi12YXIgb3B0aW9uc0Nh
Y2hlID0ge307Ci0KLS8vIENvbnZlcnQgU3RyaW5nLWZvcm1hdHRlZCBvcHRpb25zIGludG8gT2Jq
ZWN0LWZvcm1hdHRlZCBvbmVzIGFuZCBzdG9yZSBpbiBjYWNoZQotZnVuY3Rpb24gY3JlYXRlT3B0
aW9ucyggb3B0aW9ucyApIHsKLSAgICAgICAgdmFyIG9iamVjdCA9IG9wdGlvbnNDYWNoZVsgb3B0
aW9ucyBdID0ge307Ci0gICAgICAgIGpRdWVyeS5lYWNoKCBvcHRpb25zLnNwbGl0KCBjb3JlX3Jz
cGFjZSApLCBmdW5jdGlvbiggXywgZmxhZyApIHsKLSAgICAgICAgICAgICAgICBvYmplY3RbIGZs
YWcgXSA9IHRydWU7Ci0gICAgICAgIH0pOwotICAgICAgICByZXR1cm4gb2JqZWN0OwotfQotCi0v
KgotICogQ3JlYXRlIGEgY2FsbGJhY2sgbGlzdCB1c2luZyB0aGUgZm9sbG93aW5nIHBhcmFtZXRl
cnM6Ci0gKgotICogICAgICBvcHRpb25zOiBhbiBvcHRpb25hbCBsaXN0IG9mIHNwYWNlLXNlcGFy
YXRlZCBvcHRpb25zIHRoYXQgd2lsbCBjaGFuZ2UgaG93Ci0gKiAgICAgICAgICAgICAgICAgICAg
ICB0aGUgY2FsbGJhY2sgbGlzdCBiZWhhdmVzIG9yIGEgbW9yZSB0cmFkaXRpb25hbCBvcHRpb24g
b2JqZWN0Ci0gKgotICogQnkgZGVmYXVsdCBhIGNhbGxiYWNrIGxpc3Qgd2lsbCBhY3QgbGlrZSBh
biBldmVudCBjYWxsYmFjayBsaXN0IGFuZCBjYW4gYmUKLSAqICJmaXJlZCIgbXVsdGlwbGUgdGlt
ZXMuCi0gKgotICogUG9zc2libGUgb3B0aW9uczoKLSAqCi0gKiAgICAgIG9uY2U6ICAgICAgICAg
ICAgICAgICAgIHdpbGwgZW5zdXJlIHRoZSBjYWxsYmFjayBsaXN0IGNhbiBvbmx5IGJlIGZpcmVk
IG9uY2UgKGxpa2UgYSBEZWZlcnJlZCkKLSAqCi0gKiAgICAgIG1lbW9yeTogICAgICAgICAgICAg
ICAgIHdpbGwga2VlcCB0cmFjayBvZiBwcmV2aW91cyB2YWx1ZXMgYW5kIHdpbGwgY2FsbCBhbnkg
Y2FsbGJhY2sgYWRkZWQKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
ZnRlciB0aGUgbGlzdCBoYXMgYmVlbiBmaXJlZCByaWdodCBhd2F5IHdpdGggdGhlIGxhdGVzdCAi
bWVtb3JpemVkIgotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVl
cyAobGlrZSBhIERlZmVycmVkKQotICoKLSAqICAgICAgdW5pcXVlOiAgICAgICAgICAgICAgICAg
d2lsbCBlbnN1cmUgYSBjYWxsYmFjayBjYW4gb25seSBiZSBhZGRlZCBvbmNlIChubyBkdXBsaWNh
dGUgaW4gdGhlIGxpc3QpCi0gKgotICogICAgICBzdG9wT25GYWxzZTogICAgaW50ZXJydXB0IGNh
bGxpbmdzIHdoZW4gYSBjYWxsYmFjayByZXR1cm5zIGZhbHNlCi0gKgotICovCi1qUXVlcnkuQ2Fs
bGJhY2tzID0gZnVuY3Rpb24oIG9wdGlvbnMgKSB7Ci0KLSAgICAgICAgLy8gQ29udmVydCBvcHRp
b25zIGZyb20gU3RyaW5nLWZvcm1hdHRlZCB0byBPYmplY3QtZm9ybWF0dGVkIGlmIG5lZWRlZAot
ICAgICAgICAvLyAod2UgY2hlY2sgaW4gY2FjaGUgZmlyc3QpCi0gICAgICAgIG9wdGlvbnMgPSB0
eXBlb2Ygb3B0aW9ucyA9PT0gInN0cmluZyIgPwotICAgICAgICAgICAgICAgICggb3B0aW9uc0Nh
Y2hlWyBvcHRpb25zIF0gfHwgY3JlYXRlT3B0aW9ucyggb3B0aW9ucyApICkgOgotICAgICAgICAg
ICAgICAgIGpRdWVyeS5leHRlbmQoIHt9LCBvcHRpb25zICk7Ci0KLSAgICAgICAgdmFyIC8vIExh
c3QgZmlyZSB2YWx1ZSAoZm9yIG5vbi1mb3JnZXR0YWJsZSBsaXN0cykKLSAgICAgICAgICAgICAg
ICBtZW1vcnksCi0gICAgICAgICAgICAgICAgLy8gRmxhZyB0byBrbm93IGlmIGxpc3Qgd2FzIGFs
cmVhZHkgZmlyZWQKLSAgICAgICAgICAgICAgICBmaXJlZCwKLSAgICAgICAgICAgICAgICAvLyBG
bGFnIHRvIGtub3cgaWYgbGlzdCBpcyBjdXJyZW50bHkgZmlyaW5nCi0gICAgICAgICAgICAgICAg
ZmlyaW5nLAotICAgICAgICAgICAgICAgIC8vIEZpcnN0IGNhbGxiYWNrIHRvIGZpcmUgKHVzZWQg
aW50ZXJuYWxseSBieSBhZGQgYW5kIGZpcmVXaXRoKQotICAgICAgICAgICAgICAgIGZpcmluZ1N0
YXJ0LAotICAgICAgICAgICAgICAgIC8vIEVuZCBvZiB0aGUgbG9vcCB3aGVuIGZpcmluZwotICAg
ICAgICAgICAgICAgIGZpcmluZ0xlbmd0aCwKLSAgICAgICAgICAgICAgICAvLyBJbmRleCBvZiBj
dXJyZW50bHkgZmlyaW5nIGNhbGxiYWNrIChtb2RpZmllZCBieSByZW1vdmUgaWYgbmVlZGVkKQot
ICAgICAgICAgICAgICAgIGZpcmluZ0luZGV4LAotICAgICAgICAgICAgICAgIC8vIEFjdHVhbCBj
YWxsYmFjayBsaXN0Ci0gICAgICAgICAgICAgICAgbGlzdCA9IFtdLAotICAgICAgICAgICAgICAg
IC8vIFN0YWNrIG9mIGZpcmUgY2FsbHMgZm9yIHJlcGVhdGFibGUgbGlzdHMKLSAgICAgICAgICAg
ICAgICBzdGFjayA9ICFvcHRpb25zLm9uY2UgJiYgW10sCi0gICAgICAgICAgICAgICAgLy8gRmly
ZSBjYWxsYmFja3MKLSAgICAgICAgICAgICAgICBmaXJlID0gZnVuY3Rpb24oIGRhdGEgKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBtZW1vcnkgPSBvcHRpb25zLm1lbW9yeSAmJiBkYXRhOwot
ICAgICAgICAgICAgICAgICAgICAgICAgZmlyZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAg
ICAgICAgZmlyaW5nSW5kZXggPSBmaXJpbmdTdGFydCB8fCAwOwotICAgICAgICAgICAgICAgICAg
ICAgICAgZmlyaW5nU3RhcnQgPSAwOwotICAgICAgICAgICAgICAgICAgICAgICAgZmlyaW5nTGVu
Z3RoID0gbGlzdC5sZW5ndGg7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmaXJpbmcgPSB0cnVl
OwotICAgICAgICAgICAgICAgICAgICAgICAgZm9yICggOyBsaXN0ICYmIGZpcmluZ0luZGV4IDwg
ZmlyaW5nTGVuZ3RoOyBmaXJpbmdJbmRleCsrICkgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoIGxpc3RbIGZpcmluZ0luZGV4IF0uYXBwbHkoIGRhdGFbIDAgXSwgZGF0YVsg
MSBdICkgPT09IGZhbHNlICYmIG9wdGlvbnMuc3RvcE9uRmFsc2UgKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5ID0gZmFsc2U7IC8vIFRvIHByZXZlbnQg
ZnVydGhlciBjYWxscyB1c2luZyBhZGQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgZmlyaW5nID0gZmFs
c2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGxpc3QgKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICggc3RhY2sgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCBzdGFjay5sZW5ndGggKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJlKCBzdGFjay5zaGlmdCgpICk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCBtZW1vcnkgKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbGlzdCA9IFtdOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNlbGYuZGlzYWJsZSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAg
ICAgICAvLyBBY3R1YWwgQ2FsbGJhY2tzIG9iamVjdAotICAgICAgICAgICAgICAgIHNlbGYgPSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBBZGQgYSBjYWxsYmFjayBvciBhIGNvbGxlY3Rp
b24gb2YgY2FsbGJhY2tzIHRvIHRoZSBsaXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICBhZGQ6
IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGxpc3Qg
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRmlyc3QsIHdl
IHNhdmUgdGhlIGN1cnJlbnQgbGVuZ3RoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyIHN0YXJ0ID0gbGlzdC5sZW5ndGg7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKGZ1bmN0aW9uIGFkZCggYXJncyApIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5lYWNoKCBhcmdzLCBmdW5j
dGlvbiggXywgYXJnICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2YXIgdHlwZSA9IGpRdWVyeS50eXBlKCBhcmcgKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCB0eXBl
ID09PSAiZnVuY3Rpb24iICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggIW9wdGlvbnMudW5pcXVlIHx8ICFzZWxm
LmhhcyggYXJnICkgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0LnB1c2goIGFyZyApOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlIGlmICggYXJnICYmIGFyZy5sZW5ndGggJiYgdHlwZSAhPT0gInN0cmluZyIgKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gSW5zcGVjdCByZWN1cnNpdmVseQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZCggYXJnICk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKCBhcmd1bWVudHMgKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEbyB3ZSBuZWVkIHRvIGFkZCB0
aGUgY2FsbGJhY2tzIHRvIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIGN1cnJlbnQgZmlyaW5nIGJhdGNoPwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICggZmlyaW5nICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZmlyaW5nTGVuZ3RoID0gbGlzdC5sZW5ndGg7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2l0aCBtZW1vcnksIGlmIHdlJ3Jl
IG5vdCBmaXJpbmcgdGhlbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIHdlIHNob3VsZCBjYWxsIHJpZ2h0IGF3YXkKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9IGVsc2UgaWYgKCBtZW1vcnkgKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJpbmdTdGFydCA9IHN0YXJ0OwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyZSggbWVtb3J5ICk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB0aGlzOwotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIFJlbW92ZSBhIGNhbGxiYWNrIGZyb20gdGhlIGxpc3QKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHJlbW92ZTogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICggbGlzdCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBqUXVlcnkuZWFjaCggYXJndW1lbnRzLCBmdW5jdGlvbiggXywgYXJnICkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGluZGV4OwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUoICggaW5k
ZXggPSBqUXVlcnkuaW5BcnJheSggYXJnLCBsaXN0LCBpbmRleCApICkgPiAtMSApIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC5z
cGxpY2UoIGluZGV4LCAxICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIEhhbmRsZSBmaXJpbmcgaW5kZXhlcwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGZpcmluZyAp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoIGluZGV4IDw9IGZpcmluZ0xlbmd0aCApIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZpcmluZ0xlbmd0aC0tOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGluZGV4IDw9IGZpcmluZ0lu
ZGV4ICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZmlyaW5nSW5kZXgtLTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsK
LSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBD
b250cm9sIGlmIGEgZ2l2ZW4gY2FsbGJhY2sgaXMgaW4gdGhlIGxpc3QKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGhhczogZnVuY3Rpb24oIGZuICkgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4galF1ZXJ5LmluQXJyYXkoIGZuLCBsaXN0ICkgPiAtMTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBSZW1vdmUgYWxs
IGNhbGxiYWNrcyBmcm9tIHRoZSBsaXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbXB0eTog
ZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QgPSBbXTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgLy8gSGF2ZSB0aGUgbGlz
dCBkbyBub3RoaW5nIGFueW1vcmUKLSAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGU6IGZ1
bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0ID0gc3RhY2sg
PSBtZW1vcnkgPSB1bmRlZmluZWQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB0aGlzOwotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIElzIGl0IGRpc2FibGVkPwotICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJs
ZWQ6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
IWxpc3Q7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gTG9jayB0aGUgbGlzdCBpbiBpdHMgY3VycmVudCBzdGF0ZQotICAgICAgICAgICAgICAg
ICAgICAgICAgbG9jazogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0YWNrID0gdW5kZWZpbmVkOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoICFtZW1vcnkgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2VsZi5kaXNhYmxlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgLy8gSXMgaXQgbG9ja2VkPwotICAg
ICAgICAgICAgICAgICAgICAgICAgbG9ja2VkOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuICFzdGFjazsKLSAgICAgICAgICAgICAgICAgICAgICAg
IH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBDYWxsIGFsbCBjYWxsYmFja3Mgd2l0aCB0
aGUgZ2l2ZW4gY29udGV4dCBhbmQgYXJndW1lbnRzCi0gICAgICAgICAgICAgICAgICAgICAgICBm
aXJlV2l0aDogZnVuY3Rpb24oIGNvbnRleHQsIGFyZ3MgKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFyZ3MgPSBhcmdzIHx8IFtdOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhcmdzID0gWyBjb250ZXh0LCBhcmdzLnNsaWNlID8gYXJncy5zbGljZSgpIDogYXJn
cyBdOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGxpc3QgJiYgKCAhZmly
ZWQgfHwgc3RhY2sgKSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoIGZpcmluZyApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0YWNrLnB1c2goIGFyZ3MgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZmlyZSggYXJncyApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBDYWxsIGFsbCB0aGUgY2FsbGJh
Y2tzIHdpdGggdGhlIGdpdmVuIGFyZ3VtZW50cwotICAgICAgICAgICAgICAgICAgICAgICAgZmly
ZTogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmly
ZVdpdGgoIHRoaXMsIGFyZ3VtZW50cyApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdGhpczsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAvLyBUbyBrbm93IGlmIHRoZSBjYWxsYmFja3MgaGF2ZSBhbHJlYWR5IGJlZW4g
Y2FsbGVkIGF0IGxlYXN0IG9uY2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGZpcmVkOiBmdW5j
dGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEhZmlyZWQ7
Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfTsKLQotICAgICAg
ICByZXR1cm4gc2VsZjsKLX07Ci1qUXVlcnkuZXh0ZW5kKHsKLQotICAgICAgICBEZWZlcnJlZDog
ZnVuY3Rpb24oIGZ1bmMgKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHR1cGxlcyA9IFsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWN0aW9uLCBhZGQgbGlzdGVuZXIsIGxpc3Rl
bmVyIGxpc3QsIGZpbmFsIHN0YXRlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsg
InJlc29sdmUiLCAiZG9uZSIsIGpRdWVyeS5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksICJyZXNv
bHZlZCIgXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyAicmVqZWN0IiwgImZh
aWwiLCBqUXVlcnkuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLCAicmVqZWN0ZWQiIF0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsgIm5vdGlmeSIsICJwcm9ncmVzcyIsIGpRdWVy
eS5DYWxsYmFja3MoIm1lbW9yeSIpIF0KLSAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9ICJwZW5kaW5nIiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHByb21pc2UgPSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRl
OiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gc3RhdGU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFsd2F5czogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQuZG9uZSggYXJndW1lbnRzICku
ZmFpbCggYXJndW1lbnRzICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRoaXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW46IGZ1bmN0aW9uKCAvKiBmbkRvbmUsIGZu
RmFpbCwgZm5Qcm9ncmVzcyAqLyApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2YXIgZm5zID0gYXJndW1lbnRzOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBqUXVlcnkuRGVmZXJyZWQoZnVuY3Rpb24oIG5ld0RlZmVyICkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5
LmVhY2goIHR1cGxlcywgZnVuY3Rpb24oIGksIHR1cGxlICkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYWN0aW9uID0gdHVwbGVb
IDAgXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmbiA9IGZuc1sgaSBdOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkZWZlcnJlZFsgZG9uZSB8IGZhaWwgfCBw
cm9ncmVzcyBdIGZvciBmb3J3YXJkaW5nIGFjdGlvbnMgdG8gbmV3RGVmZXIKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWRbIHR1
cGxlWzFdIF0oIGpRdWVyeS5pc0Z1bmN0aW9uKCBmbiApID8KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZhciByZXR1cm5lZCA9IGZuLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMg
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICggcmV0dXJuZWQgJiYgalF1ZXJ5LmlzRnVuY3Rpb24oIHJl
dHVybmVkLnByb21pc2UgKSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuZWQucHJv
bWlzZSgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmRvbmUoIG5ld0RlZmVyLnJl
c29sdmUgKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mYWlsKCBuZXdEZWZlci5y
ZWplY3QgKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5wcm9ncmVzcyggbmV3RGVm
ZXIubm90aWZ5ICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBuZXdEZWZlclsgYWN0aW9uICsgIldpdGgiIF0oIHRoaXMgPT09IGRlZmVycmVkID8gbmV3
RGVmZXIgOiB0aGlzLCBbIHJldHVybmVkIF0gKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
IDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBuZXdEZWZlclsgYWN0aW9uIF0KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZm5zID0gbnVsbDsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9KS5wcm9taXNlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdldCBhIHByb21p
c2UgZm9yIHRoaXMgZGVmZXJyZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
SWYgb2JqIGlzIHByb3ZpZGVkLCB0aGUgcHJvbWlzZSBhc3BlY3QgaXMgYWRkZWQgdG8gdGhlIG9i
amVjdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9taXNlOiBmdW5jdGlvbigg
b2JqICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBv
YmogIT0gbnVsbCA/IGpRdWVyeS5leHRlbmQoIG9iaiwgcHJvbWlzZSApIDogcHJvbWlzZTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAg
fSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkID0ge307Ci0KLSAgICAgICAgICAg
ICAgICAvLyBLZWVwIHBpcGUgZm9yIGJhY2stY29tcGF0Ci0gICAgICAgICAgICAgICAgcHJvbWlz
ZS5waXBlID0gcHJvbWlzZS50aGVuOwotCi0gICAgICAgICAgICAgICAgLy8gQWRkIGxpc3Qtc3Bl
Y2lmaWMgbWV0aG9kcwotICAgICAgICAgICAgICAgIGpRdWVyeS5lYWNoKCB0dXBsZXMsIGZ1bmN0
aW9uKCBpLCB0dXBsZSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsaXN0ID0gdHVw
bGVbIDIgXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVTdHJpbmcgPSB0
dXBsZVsgMyBdOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBwcm9taXNlWyBkb25lIHwg
ZmFpbCB8IHByb2dyZXNzIF0gPSBsaXN0LmFkZAotICAgICAgICAgICAgICAgICAgICAgICAgcHJv
bWlzZVsgdHVwbGVbMV0gXSA9IGxpc3QuYWRkOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAv
LyBIYW5kbGUgc3RhdGUKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICggc3RhdGVTdHJpbmcg
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QuYWRkKGZ1bmN0aW9uKCkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YXRlID0gWyBy
ZXNvbHZlZCB8IHJlamVjdGVkIF0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGF0ZSA9IHN0YXRlU3RyaW5nOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIFsgcmVqZWN0X2xpc3QgfCByZXNvbHZlX2xpc3QgXS5kaXNhYmxlOyBwcm9ncmVzc19s
aXN0LmxvY2sKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdHVwbGVzWyBpIF4g
MSBdWyAyIF0uZGlzYWJsZSwgdHVwbGVzWyAyIF1bIDIgXS5sb2NrICk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRlZmVycmVkWyByZXNv
bHZlIHwgcmVqZWN0IHwgbm90aWZ5IF0gPSBsaXN0LmZpcmUKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGRlZmVycmVkWyB0dXBsZVswXSBdID0gbGlzdC5maXJlOwotICAgICAgICAgICAgICAgICAg
ICAgICAgZGVmZXJyZWRbIHR1cGxlWzBdICsgIldpdGgiIF0gPSBsaXN0LmZpcmVXaXRoOwotICAg
ICAgICAgICAgICAgIH0pOwotCi0gICAgICAgICAgICAgICAgLy8gTWFrZSB0aGUgZGVmZXJyZWQg
YSBwcm9taXNlCi0gICAgICAgICAgICAgICAgcHJvbWlzZS5wcm9taXNlKCBkZWZlcnJlZCApOwot
Ci0gICAgICAgICAgICAgICAgLy8gQ2FsbCBnaXZlbiBmdW5jIGlmIGFueQotICAgICAgICAgICAg
ICAgIGlmICggZnVuYyApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmMuY2FsbCggZGVm
ZXJyZWQsIGRlZmVycmVkICk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAg
Ly8gQWxsIGRvbmUhCi0gICAgICAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkOwotICAgICAgICB9
LAotCi0gICAgICAgIC8vIERlZmVycmVkIGhlbHBlcgotICAgICAgICB3aGVuOiBmdW5jdGlvbigg
c3Vib3JkaW5hdGUgLyogLCAuLi4sIHN1Ym9yZGluYXRlTiAqLyApIHsKLSAgICAgICAgICAgICAg
ICB2YXIgaSA9IDAsCi0gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlVmFsdWVzID0gY29y
ZV9zbGljZS5jYWxsKCBhcmd1bWVudHMgKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0
aCA9IHJlc29sdmVWYWx1ZXMubGVuZ3RoLAotCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyB0
aGUgY291bnQgb2YgdW5jb21wbGV0ZWQgc3Vib3JkaW5hdGVzCi0gICAgICAgICAgICAgICAgICAg
ICAgICByZW1haW5pbmcgPSBsZW5ndGggIT09IDEgfHwgKCBzdWJvcmRpbmF0ZSAmJiBqUXVlcnku
aXNGdW5jdGlvbiggc3Vib3JkaW5hdGUucHJvbWlzZSApICkgPyBsZW5ndGggOiAwLAotCi0gICAg
ICAgICAgICAgICAgICAgICAgICAvLyB0aGUgbWFzdGVyIERlZmVycmVkLiBJZiByZXNvbHZlVmFs
dWVzIGNvbnNpc3Qgb2Ygb25seSBhIHNpbmdsZSBEZWZlcnJlZCwganVzdCB1c2UgdGhhdC4KLSAg
ICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkID0gcmVtYWluaW5nID09PSAxID8gc3Vib3Jk
aW5hdGUgOiBqUXVlcnkuRGVmZXJyZWQoKSwKLQotICAgICAgICAgICAgICAgICAgICAgICAgLy8g
VXBkYXRlIGZ1bmN0aW9uIGZvciBib3RoIHJlc29sdmUgYW5kIHByb2dyZXNzIHZhbHVlcwotICAg
ICAgICAgICAgICAgICAgICAgICAgdXBkYXRlRnVuYyA9IGZ1bmN0aW9uKCBpLCBjb250ZXh0cywg
dmFsdWVzICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rp
b24oIHZhbHVlICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnRleHRzWyBpIF0gPSB0aGlzOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZhbHVlc1sgaSBdID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBjb3JlX3NsaWNlLmNhbGwo
IGFyZ3VtZW50cyApIDogdmFsdWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYoIHZhbHVlcyA9PT0gcHJvZ3Jlc3NWYWx1ZXMgKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5ub3RpZnlXaXRoKCBjb250
ZXh0cywgdmFsdWVzICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIGlmICggISggLS1yZW1haW5pbmcgKSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmVXaXRoKCBjb250ZXh0cywg
dmFsdWVzICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgICAgICAgICAgICAg
fSwKLQotICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3Jlc3NWYWx1ZXMsIHByb2dyZXNzQ29u
dGV4dHMsIHJlc29sdmVDb250ZXh0czsKLQotICAgICAgICAgICAgICAgIC8vIGFkZCBsaXN0ZW5l
cnMgdG8gRGVmZXJyZWQgc3Vib3JkaW5hdGVzOyB0cmVhdCBvdGhlcnMgYXMgcmVzb2x2ZWQKLSAg
ICAgICAgICAgICAgICBpZiAoIGxlbmd0aCA+IDEgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBwcm9ncmVzc1ZhbHVlcyA9IG5ldyBBcnJheSggbGVuZ3RoICk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBwcm9ncmVzc0NvbnRleHRzID0gbmV3IEFycmF5KCBsZW5ndGggKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHJlc29sdmVDb250ZXh0cyA9IG5ldyBBcnJheSggbGVuZ3RoICk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBmb3IgKCA7IGkgPCBsZW5ndGg7IGkrKyApIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCByZXNvbHZlVmFsdWVzWyBpIF0gJiYgalF1
ZXJ5LmlzRnVuY3Rpb24oIHJlc29sdmVWYWx1ZXNbIGkgXS5wcm9taXNlICkgKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZVZhbHVlc1sgaSBdLnByb21p
c2UoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmRv
bmUoIHVwZGF0ZUZ1bmMoIGksIHJlc29sdmVDb250ZXh0cywgcmVzb2x2ZVZhbHVlcyApICkKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mYWlsKCBkZWZl
cnJlZC5yZWplY3QgKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLnByb2dyZXNzKCB1cGRhdGVGdW5jKCBpLCBwcm9ncmVzc0NvbnRleHRzLCBwcm9ncmVz
c1ZhbHVlcyApICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1yZW1haW5pbmc7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBpZiB3ZSdyZSBub3Qgd2Fp
dGluZyBvbiBhbnl0aGluZywgcmVzb2x2ZSB0aGUgbWFzdGVyCi0gICAgICAgICAgICAgICAgaWYg
KCAhcmVtYWluaW5nICkgewotICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2
ZVdpdGgoIHJlc29sdmVDb250ZXh0cywgcmVzb2x2ZVZhbHVlcyApOwotICAgICAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlKCk7Ci0gICAgICAg
IH0KLX0pOwotalF1ZXJ5LnN1cHBvcnQgPSAoZnVuY3Rpb24oKSB7Ci0KLSAgICAgICAgdmFyIHN1
cHBvcnQsCi0gICAgICAgICAgICAgICAgYWxsLAotICAgICAgICAgICAgICAgIGEsCi0gICAgICAg
ICAgICAgICAgc2VsZWN0LAotICAgICAgICAgICAgICAgIG9wdCwKLSAgICAgICAgICAgICAgICBp
bnB1dCwKLSAgICAgICAgICAgICAgICBmcmFnbWVudCwKLSAgICAgICAgICAgICAgICBldmVudE5h
bWUsCi0gICAgICAgICAgICAgICAgaSwKLSAgICAgICAgICAgICAgICBpc1N1cHBvcnRlZCwKLSAg
ICAgICAgICAgICAgICBjbGlja0ZuLAotICAgICAgICAgICAgICAgIGRpdiA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOwotCi0gICAgICAgIC8vIFNldHVwCi0gICAgICAgIGRpdi5zZXRB
dHRyaWJ1dGUoICJjbGFzc05hbWUiLCAidCIgKTsKLSAgICAgICAgZGl2LmlubmVySFRNTCA9ICIg
IDxsaW5rLz48dGFibGU+PC90YWJsZT48YSBocmVmPScvYSc+YTwvYT48aW5wdXQgdHlwZT0nY2hl
Y2tib3gnLz4iOwotCi0gICAgICAgIC8vIFN1cHBvcnQgdGVzdHMgd29uJ3QgcnVuIGluIHNvbWUg
bGltaXRlZCBvciBub24tYnJvd3NlciBlbnZpcm9ubWVudHMKLSAgICAgICAgYWxsID0gZGl2Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCIqIik7Ci0gICAgICAgIGEgPSBkaXYuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoImEiKVsgMCBdOwotICAgICAgICBpZiAoICFhbGwgfHwgIWEgfHwgIWFsbC5sZW5ndGgg
KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHt9OwotICAgICAgICB9Ci0KLSAgICAgICAgLy8g
Rmlyc3QgYmF0Y2ggb2YgdGVzdHMKLSAgICAgICAgc2VsZWN0ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgic2VsZWN0Iik7Ci0gICAgICAgIG9wdCA9IHNlbGVjdC5hcHBlbmRDaGlsZCggZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgib3B0aW9uIikgKTsKLSAgICAgICAgaW5wdXQgPSBkaXYuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoImlucHV0IilbIDAgXTsKLQotICAgICAgICBhLnN0eWxlLmNzc1RleHQg
PSAidG9wOjFweDtmbG9hdDpsZWZ0O29wYWNpdHk6LjUiOwotICAgICAgICBzdXBwb3J0ID0gewot
ICAgICAgICAgICAgICAgIC8vIElFIHN0cmlwcyBsZWFkaW5nIHdoaXRlc3BhY2Ugd2hlbiAuaW5u
ZXJIVE1MIGlzIHVzZWQKLSAgICAgICAgICAgICAgICBsZWFkaW5nV2hpdGVzcGFjZTogKCBkaXYu
Zmlyc3RDaGlsZC5ub2RlVHlwZSA9PT0gMyApLAotCi0gICAgICAgICAgICAgICAgLy8gTWFrZSBz
dXJlIHRoYXQgdGJvZHkgZWxlbWVudHMgYXJlbid0IGF1dG9tYXRpY2FsbHkgaW5zZXJ0ZWQKLSAg
ICAgICAgICAgICAgICAvLyBJRSB3aWxsIGluc2VydCB0aGVtIGludG8gZW1wdHkgdGFibGVzCi0g
ICAgICAgICAgICAgICAgdGJvZHk6ICFkaXYuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRib2R5Iiku
bGVuZ3RoLAotCi0gICAgICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgbGluayBlbGVtZW50
cyBnZXQgc2VyaWFsaXplZCBjb3JyZWN0bHkgYnkgaW5uZXJIVE1MCi0gICAgICAgICAgICAgICAg
Ly8gVGhpcyByZXF1aXJlcyBhIHdyYXBwZXIgZWxlbWVudCBpbiBJRQotICAgICAgICAgICAgICAg
IGh0bWxTZXJpYWxpemU6ICEhZGl2LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIikubGVuZ3Ro
LAotCi0gICAgICAgICAgICAgICAgLy8gR2V0IHRoZSBzdHlsZSBpbmZvcm1hdGlvbiBmcm9tIGdl
dEF0dHJpYnV0ZQotICAgICAgICAgICAgICAgIC8vIChJRSB1c2VzIC5jc3NUZXh0IGluc3RlYWQp
Ci0gICAgICAgICAgICAgICAgc3R5bGU6IC90b3AvLnRlc3QoIGEuZ2V0QXR0cmlidXRlKCJzdHls
ZSIpICksCi0KLSAgICAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCBVUkxzIGFyZW4ndCBt
YW5pcHVsYXRlZAotICAgICAgICAgICAgICAgIC8vIChJRSBub3JtYWxpemVzIGl0IGJ5IGRlZmF1
bHQpCi0gICAgICAgICAgICAgICAgaHJlZk5vcm1hbGl6ZWQ6ICggYS5nZXRBdHRyaWJ1dGUoImhy
ZWYiKSA9PT0gIi9hIiApLAotCi0gICAgICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgZWxl
bWVudCBvcGFjaXR5IGV4aXN0cwotICAgICAgICAgICAgICAgIC8vIChJRSB1c2VzIGZpbHRlciBp
bnN0ZWFkKQotICAgICAgICAgICAgICAgIC8vIFVzZSBhIHJlZ2V4IHRvIHdvcmsgYXJvdW5kIGEg
V2ViS2l0IGlzc3VlLiBTZWUgIzUxNDUKLSAgICAgICAgICAgICAgICBvcGFjaXR5OiAvXjAuNS8u
dGVzdCggYS5zdHlsZS5vcGFjaXR5ICksCi0KLSAgICAgICAgICAgICAgICAvLyBWZXJpZnkgc3R5
bGUgZmxvYXQgZXhpc3RlbmNlCi0gICAgICAgICAgICAgICAgLy8gKElFIHVzZXMgc3R5bGVGbG9h
dCBpbnN0ZWFkIG9mIGNzc0Zsb2F0KQotICAgICAgICAgICAgICAgIGNzc0Zsb2F0OiAhIWEuc3R5
bGUuY3NzRmxvYXQsCi0KLSAgICAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCBpZiBubyB2
YWx1ZSBpcyBzcGVjaWZpZWQgZm9yIGEgY2hlY2tib3gKLSAgICAgICAgICAgICAgICAvLyB0aGF0
IGl0IGRlZmF1bHRzIHRvICJvbiIuCi0gICAgICAgICAgICAgICAgLy8gKFdlYktpdCBkZWZhdWx0
cyB0byAiIiBpbnN0ZWFkKQotICAgICAgICAgICAgICAgIGNoZWNrT246ICggaW5wdXQudmFsdWUg
PT09ICJvbiIgKSwKLQotICAgICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IGEgc2VsZWN0
ZWQtYnktZGVmYXVsdCBvcHRpb24gaGFzIGEgd29ya2luZyBzZWxlY3RlZCBwcm9wZXJ0eS4KLSAg
ICAgICAgICAgICAgICAvLyAoV2ViS2l0IGRlZmF1bHRzIHRvIGZhbHNlIGluc3RlYWQgb2YgdHJ1
ZSwgSUUgdG9vLCBpZiBpdCdzIGluIGFuIG9wdGdyb3VwKQotICAgICAgICAgICAgICAgIG9wdFNl
bGVjdGVkOiBvcHQuc2VsZWN0ZWQsCi0KLSAgICAgICAgICAgICAgICAvLyBUZXN0IHNldEF0dHJp
YnV0ZSBvbiBjYW1lbENhc2UgY2xhc3MuIElmIGl0IHdvcmtzLCB3ZSBuZWVkIGF0dHJGaXhlcyB3
aGVuIGRvaW5nIGdldC9zZXRBdHRyaWJ1dGUgKGllNi83KQotICAgICAgICAgICAgICAgIGdldFNl
dEF0dHJpYnV0ZTogZGl2LmNsYXNzTmFtZSAhPT0gInQiLAotCi0gICAgICAgICAgICAgICAgLy8g
VGVzdHMgZm9yIGVuY3R5cGUgc3VwcG9ydCBvbiBhIGZvcm0gKCM2NzQzKQotICAgICAgICAgICAg
ICAgIGVuY3R5cGU6ICEhZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZm9ybSIpLmVuY3R5cGUsCi0K
LSAgICAgICAgICAgICAgICAvLyBNYWtlcyBzdXJlIGNsb25pbmcgYW4gaHRtbDUgZWxlbWVudCBk
b2VzIG5vdCBjYXVzZSBwcm9ibGVtcwotICAgICAgICAgICAgICAgIC8vIFdoZXJlIG91dGVySFRN
TCBpcyB1bmRlZmluZWQsIHRoaXMgc3RpbGwgd29ya3MKLSAgICAgICAgICAgICAgICBodG1sNUNs
b25lOiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJuYXYiKS5jbG9uZU5vZGUoIHRydWUgKS5vdXRl
ckhUTUwgIT09ICI8Om5hdj48LzpuYXY+IiwKLQotICAgICAgICAgICAgICAgIC8vIGpRdWVyeS5z
dXBwb3J0LmJveE1vZGVsIERFUFJFQ0FURUQgaW4gMS44IHNpbmNlIHdlIGRvbid0IHN1cHBvcnQg
UXVpcmtzIE1vZGUKLSAgICAgICAgICAgICAgICBib3hNb2RlbDogKCBkb2N1bWVudC5jb21wYXRN
b2RlID09PSAiQ1NTMUNvbXBhdCIgKSwKLQotICAgICAgICAgICAgICAgIC8vIFdpbGwgYmUgZGVm
aW5lZCBsYXRlcgotICAgICAgICAgICAgICAgIHN1Ym1pdEJ1YmJsZXM6IHRydWUsCi0gICAgICAg
ICAgICAgICAgY2hhbmdlQnViYmxlczogdHJ1ZSwKLSAgICAgICAgICAgICAgICBmb2N1c2luQnVi
YmxlczogZmFsc2UsCi0gICAgICAgICAgICAgICAgZGVsZXRlRXhwYW5kbzogdHJ1ZSwKLSAgICAg
ICAgICAgICAgICBub0Nsb25lRXZlbnQ6IHRydWUsCi0gICAgICAgICAgICAgICAgaW5saW5lQmxv
Y2tOZWVkc0xheW91dDogZmFsc2UsCi0gICAgICAgICAgICAgICAgc2hyaW5rV3JhcEJsb2Nrczog
ZmFsc2UsCi0gICAgICAgICAgICAgICAgcmVsaWFibGVNYXJnaW5SaWdodDogdHJ1ZSwKLSAgICAg
ICAgICAgICAgICBib3hTaXppbmdSZWxpYWJsZTogdHJ1ZSwKLSAgICAgICAgICAgICAgICBwaXhl
bFBvc2l0aW9uOiBmYWxzZQotICAgICAgICB9OwotCi0gICAgICAgIC8vIE1ha2Ugc3VyZSBjaGVj
a2VkIHN0YXR1cyBpcyBwcm9wZXJseSBjbG9uZWQKLSAgICAgICAgaW5wdXQuY2hlY2tlZCA9IHRy
dWU7Ci0gICAgICAgIHN1cHBvcnQubm9DbG9uZUNoZWNrZWQgPSBpbnB1dC5jbG9uZU5vZGUoIHRy
dWUgKS5jaGVja2VkOwotCi0gICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBvcHRpb25zIGlu
c2lkZSBkaXNhYmxlZCBzZWxlY3RzIGFyZW4ndCBtYXJrZWQgYXMgZGlzYWJsZWQKLSAgICAgICAg
Ly8gKFdlYktpdCBtYXJrcyB0aGVtIGFzIGRpc2FibGVkKQotICAgICAgICBzZWxlY3QuZGlzYWJs
ZWQgPSB0cnVlOwotICAgICAgICBzdXBwb3J0Lm9wdERpc2FibGVkID0gIW9wdC5kaXNhYmxlZDsK
LQotICAgICAgICAvLyBUZXN0IHRvIHNlZSBpZiBpdCdzIHBvc3NpYmxlIHRvIGRlbGV0ZSBhbiBl
eHBhbmRvIGZyb20gYW4gZWxlbWVudAotICAgICAgICAvLyBGYWlscyBpbiBJbnRlcm5ldCBFeHBs
b3JlcgotICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIGRlbGV0ZSBkaXYudGVzdDsKLSAg
ICAgICAgfSBjYXRjaCggZSApIHsKLSAgICAgICAgICAgICAgICBzdXBwb3J0LmRlbGV0ZUV4cGFu
ZG8gPSBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICggIWRpdi5hZGRFdmVudExpc3Rl
bmVyICYmIGRpdi5hdHRhY2hFdmVudCAmJiBkaXYuZmlyZUV2ZW50ICkgewotICAgICAgICAgICAg
ICAgIGRpdi5hdHRhY2hFdmVudCggIm9uY2xpY2siLCBjbGlja0ZuID0gZnVuY3Rpb24oKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAvLyBDbG9uaW5nIGEgbm9kZSBzaG91bGRuJ3QgY29weSBv
dmVyIGFueQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gYm91bmQgZXZlbnQgaGFuZGxlcnMg
KElFIGRvZXMgdGhpcykKLSAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnQubm9DbG9uZUV2
ZW50ID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgZGl2LmNs
b25lTm9kZSggdHJ1ZSApLmZpcmVFdmVudCgib25jbGljayIpOwotICAgICAgICAgICAgICAgIGRp
di5kZXRhY2hFdmVudCggIm9uY2xpY2siLCBjbGlja0ZuICk7Ci0gICAgICAgIH0KLQotICAgICAg
ICAvLyBDaGVjayBpZiBhIHJhZGlvIG1haW50YWlucyBpdHMgdmFsdWUKLSAgICAgICAgLy8gYWZ0
ZXIgYmVpbmcgYXBwZW5kZWQgdG8gdGhlIERPTQotICAgICAgICBpbnB1dCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImlucHV0Iik7Ci0gICAgICAgIGlucHV0LnZhbHVlID0gInQiOwotICAgICAg
ICBpbnB1dC5zZXRBdHRyaWJ1dGUoICJ0eXBlIiwgInJhZGlvIiApOwotICAgICAgICBzdXBwb3J0
LnJhZGlvVmFsdWUgPSBpbnB1dC52YWx1ZSA9PT0gInQiOwotCi0gICAgICAgIGlucHV0LnNldEF0
dHJpYnV0ZSggImNoZWNrZWQiLCAiY2hlY2tlZCIgKTsKLQotICAgICAgICAvLyAjMTEyMTcgLSBX
ZWJLaXQgbG9zZXMgY2hlY2sgd2hlbiB0aGUgbmFtZSBpcyBhZnRlciB0aGUgY2hlY2tlZCBhdHRy
aWJ1dGUKLSAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCAibmFtZSIsICJ0IiApOwotCi0gICAg
ICAgIGRpdi5hcHBlbmRDaGlsZCggaW5wdXQgKTsKLSAgICAgICAgZnJhZ21lbnQgPSBkb2N1bWVu
dC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7Ci0gICAgICAgIGZyYWdtZW50LmFwcGVuZENoaWxk
KCBkaXYubGFzdENoaWxkICk7Ci0KLSAgICAgICAgLy8gV2ViS2l0IGRvZXNuJ3QgY2xvbmUgY2hl
Y2tlZCBzdGF0ZSBjb3JyZWN0bHkgaW4gZnJhZ21lbnRzCi0gICAgICAgIHN1cHBvcnQuY2hlY2tD
bG9uZSA9IGZyYWdtZW50LmNsb25lTm9kZSggdHJ1ZSApLmNsb25lTm9kZSggdHJ1ZSApLmxhc3RD
aGlsZC5jaGVja2VkOwotCi0gICAgICAgIC8vIENoZWNrIGlmIGEgZGlzY29ubmVjdGVkIGNoZWNr
Ym94IHdpbGwgcmV0YWluIGl0cyBjaGVja2VkCi0gICAgICAgIC8vIHZhbHVlIG9mIHRydWUgYWZ0
ZXIgYXBwZW5kZWQgdG8gdGhlIERPTSAoSUU2LzcpCi0gICAgICAgIHN1cHBvcnQuYXBwZW5kQ2hl
Y2tlZCA9IGlucHV0LmNoZWNrZWQ7Ci0KLSAgICAgICAgZnJhZ21lbnQucmVtb3ZlQ2hpbGQoIGlu
cHV0ICk7Ci0gICAgICAgIGZyYWdtZW50LmFwcGVuZENoaWxkKCBkaXYgKTsKLQotICAgICAgICAv
LyBUZWNobmlxdWUgZnJvbSBKdXJpeSBaYXl0c2V2Ci0gICAgICAgIC8vIGh0dHA6Ly9wZXJmZWN0
aW9ua2lsbHMuY29tL2RldGVjdGluZy1ldmVudC1zdXBwb3J0LXdpdGhvdXQtYnJvd3Nlci1zbmlm
ZmluZy8KLSAgICAgICAgLy8gV2Ugb25seSBjYXJlIGFib3V0IHRoZSBjYXNlIHdoZXJlIG5vbi1z
dGFuZGFyZCBldmVudCBzeXN0ZW1zCi0gICAgICAgIC8vIGFyZSB1c2VkLCBuYW1lbHkgaW4gSUUu
IFNob3J0LWNpcmN1aXRpbmcgaGVyZSBoZWxwcyB1cyB0bwotICAgICAgICAvLyBhdm9pZCBhbiBl
dmFsIGNhbGwgKGluIHNldEF0dHJpYnV0ZSkgd2hpY2ggY2FuIGNhdXNlIENTUAotICAgICAgICAv
LyB0byBnbyBoYXl3aXJlLiBTZWU6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuL1Nl
Y3VyaXR5L0NTUAotICAgICAgICBpZiAoIGRpdi5hdHRhY2hFdmVudCApIHsKLSAgICAgICAgICAg
ICAgICBmb3IgKCBpIGluIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN1Ym1pdDogdHJ1ZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZTogdHJ1ZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGZvY3VzaW46IHRydWUKLSAgICAgICAgICAgICAgICB9KSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBldmVudE5hbWUgPSAib24iICsgaTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGlzU3VwcG9ydGVkID0gKCBldmVudE5hbWUgaW4gZGl2ICk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoICFpc1N1cHBvcnRlZCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGl2LnNldEF0dHJpYnV0ZSggZXZlbnROYW1lLCAicmV0dXJuOyIgKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaXNTdXBwb3J0ZWQgPSAoIHR5cGVvZiBkaXZbIGV2ZW50TmFt
ZSBdID09PSAiZnVuY3Rpb24iICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBzdXBwb3J0WyBpICsgIkJ1YmJsZXMiIF0gPSBpc1N1cHBvcnRlZDsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBSdW4gdGVzdHMgdGhh
dCBuZWVkIGEgYm9keSBhdCBkb2MgcmVhZHkKLSAgICAgICAgalF1ZXJ5KGZ1bmN0aW9uKCkgewot
ICAgICAgICAgICAgICAgIHZhciBjb250YWluZXIsIGRpdiwgdGRzLCBtYXJnaW5EaXYsCi0gICAg
ICAgICAgICAgICAgICAgICAgICBkaXZSZXNldCA9ICJwYWRkaW5nOjA7bWFyZ2luOjA7Ym9yZGVy
OjA7ZGlzcGxheTpibG9jaztvdmVyZmxvdzpoaWRkZW47IiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdOwotCi0g
ICAgICAgICAgICAgICAgaWYgKCAhYm9keSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8v
IFJldHVybiBmb3IgZnJhbWVzZXQgZG9jcyB0aGF0IGRvbid0IGhhdmUgYSBib2R5Ci0gICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICAgICAgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAg
ICAgICAgICAgY29udGFpbmVyLnN0eWxlLmNzc1RleHQgPSAidmlzaWJpbGl0eTpoaWRkZW47Ym9y
ZGVyOjA7d2lkdGg6MDtoZWlnaHQ6MDtwb3NpdGlvbjpzdGF0aWM7dG9wOjA7bWFyZ2luLXRvcDox
cHgiOwotICAgICAgICAgICAgICAgIGJvZHkuaW5zZXJ0QmVmb3JlKCBjb250YWluZXIsIGJvZHku
Zmlyc3RDaGlsZCApOwotCi0gICAgICAgICAgICAgICAgLy8gQ29uc3RydWN0IHRoZSB0ZXN0IGVs
ZW1lbnQKLSAgICAgICAgICAgICAgICBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KTsKLSAgICAgICAgICAgICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoIGRpdiApOwotCi0gICAg
ICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGFibGUgY2VsbHMgc3RpbGwgaGF2ZSBvZmZzZXRXaWR0
aC9IZWlnaHQgd2hlbiB0aGV5IGFyZSBzZXQKLSAgICAgICAgICAgICAgICAvLyB0byBkaXNwbGF5
Om5vbmUgYW5kIHRoZXJlIGFyZSBzdGlsbCBvdGhlciB2aXNpYmxlIHRhYmxlIGNlbGxzIGluIGEK
LSAgICAgICAgICAgICAgICAvLyB0YWJsZSByb3c7IGlmIHNvLCBvZmZzZXRXaWR0aC9IZWlnaHQg
YXJlIG5vdCByZWxpYWJsZSBmb3IgdXNlIHdoZW4KLSAgICAgICAgICAgICAgICAvLyBkZXRlcm1p
bmluZyBpZiBhbiBlbGVtZW50IGhhcyBiZWVuIGhpZGRlbiBkaXJlY3RseSB1c2luZwotICAgICAg
ICAgICAgICAgIC8vIGRpc3BsYXk6bm9uZSAoaXQgaXMgc3RpbGwgc2FmZSB0byB1c2Ugb2Zmc2V0
cyBpZiBhIHBhcmVudCBlbGVtZW50IGlzCi0gICAgICAgICAgICAgICAgLy8gaGlkZGVuOyBkb24g
c2FmZXR5IGdvZ2dsZXMgYW5kIHNlZSBidWcgIzQ1MTIgZm9yIG1vcmUgaW5mb3JtYXRpb24pLgot
ICAgICAgICAgICAgICAgIC8vIChvbmx5IElFIDggZmFpbHMgdGhpcyB0ZXN0KQotICAgICAgICAg
ICAgICAgIGRpdi5pbm5lckhUTUwgPSAiPHRhYmxlPjx0cj48dGQ+PC90ZD48dGQ+dDwvdGQ+PC90
cj48L3RhYmxlPiI7Ci0gICAgICAgICAgICAgICAgdGRzID0gZGl2LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZCIpOwotICAgICAgICAgICAgICAgIHRkc1sgMCBdLnN0eWxlLmNzc1RleHQgPSAicGFk
ZGluZzowO21hcmdpbjowO2JvcmRlcjowO2Rpc3BsYXk6bm9uZSI7Ci0gICAgICAgICAgICAgICAg
aXNTdXBwb3J0ZWQgPSAoIHRkc1sgMCBdLm9mZnNldEhlaWdodCA9PT0gMCApOwotCi0gICAgICAg
ICAgICAgICAgdGRzWyAwIF0uc3R5bGUuZGlzcGxheSA9ICIiOwotICAgICAgICAgICAgICAgIHRk
c1sgMSBdLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7Ci0KLSAgICAgICAgICAgICAgICAvLyBDaGVj
ayBpZiBlbXB0eSB0YWJsZSBjZWxscyBzdGlsbCBoYXZlIG9mZnNldFdpZHRoL0hlaWdodAotICAg
ICAgICAgICAgICAgIC8vIChJRSA8PSA4IGZhaWwgdGhpcyB0ZXN0KQotICAgICAgICAgICAgICAg
IHN1cHBvcnQucmVsaWFibGVIaWRkZW5PZmZzZXRzID0gaXNTdXBwb3J0ZWQgJiYgKCB0ZHNbIDAg
XS5vZmZzZXRIZWlnaHQgPT09IDAgKTsKLQotICAgICAgICAgICAgICAgIC8vIENoZWNrIGJveC1z
aXppbmcgYW5kIG1hcmdpbiBiZWhhdmlvcgotICAgICAgICAgICAgICAgIGRpdi5pbm5lckhUTUwg
PSAiIjsKLSAgICAgICAgICAgICAgICBkaXYuc3R5bGUuY3NzVGV4dCA9ICJib3gtc2l6aW5nOmJv
cmRlci1ib3g7LW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7LXdlYmtpdC1ib3gtc2l6aW5nOmJv
cmRlci1ib3g7cGFkZGluZzoxcHg7Ym9yZGVyOjFweDtkaXNwbGF5OmJsb2NrO3dpZHRoOjRweDtt
YXJnaW4tdG9wOjElO3Bvc2l0aW9uOmFic29sdXRlO3RvcDoxJTsiOwotICAgICAgICAgICAgICAg
IHN1cHBvcnQuYm94U2l6aW5nID0gKCBkaXYub2Zmc2V0V2lkdGggPT09IDQgKTsKLSAgICAgICAg
ICAgICAgICBzdXBwb3J0LmRvZXNOb3RJbmNsdWRlTWFyZ2luSW5Cb2R5T2Zmc2V0ID0gKCBib2R5
Lm9mZnNldFRvcCAhPT0gMSApOwotCi0gICAgICAgICAgICAgICAgLy8gTk9URTogVG8gYW55IGZ1
dHVyZSBtYWludGFpbmVyLCB3ZSd2ZSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZQotICAgICAgICAg
ICAgICAgIC8vIGJlY2F1c2UganNkb20gb24gbm9kZS5qcyB3aWxsIGJyZWFrIHdpdGhvdXQgaXQu
Ci0gICAgICAgICAgICAgICAgaWYgKCB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSApIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHN1cHBvcnQucGl4ZWxQb3NpdGlvbiA9ICggd2luZG93LmdldENv
bXB1dGVkU3R5bGUoIGRpdiwgbnVsbCApIHx8IHt9ICkudG9wICE9PSAiMSUiOwotICAgICAgICAg
ICAgICAgICAgICAgICAgc3VwcG9ydC5ib3hTaXppbmdSZWxpYWJsZSA9ICggd2luZG93LmdldENv
bXB1dGVkU3R5bGUoIGRpdiwgbnVsbCApIHx8IHsgd2lkdGg6ICI0cHgiIH0gKS53aWR0aCA9PT0g
IjRweCI7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIGRpdiB3aXRoIGV4
cGxpY2l0IHdpZHRoIGFuZCBubyBtYXJnaW4tcmlnaHQgaW5jb3JyZWN0bHkKLSAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGdldHMgY29tcHV0ZWQgbWFyZ2luLXJpZ2h0IGJhc2VkIG9uIHdpZHRo
IG9mIGNvbnRhaW5lci4gRm9yIG1vcmUKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluZm8g
c2VlIGJ1ZyAjMzMzMwotICAgICAgICAgICAgICAgICAgICAgICAgLy8gRmFpbHMgaW4gV2ViS2l0
IGJlZm9yZSBGZWIgMjAxMSBuaWdodGxpZXMKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdl
YktpdCBCdWcgMTMzNDMgLSBnZXRDb21wdXRlZFN0eWxlIHJldHVybnMgd3JvbmcgdmFsdWUgZm9y
IG1hcmdpbi1yaWdodAotICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luRGl2ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5E
aXYuc3R5bGUuY3NzVGV4dCA9IGRpdi5zdHlsZS5jc3NUZXh0ID0gZGl2UmVzZXQ7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBtYXJnaW5EaXYuc3R5bGUubWFyZ2luUmlnaHQgPSBtYXJnaW5EaXYu
c3R5bGUud2lkdGggPSAiMCI7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkaXYuc3R5bGUud2lk
dGggPSAiMXB4IjsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRpdi5hcHBlbmRDaGlsZCggbWFy
Z2luRGl2ICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0LnJlbGlhYmxlTWFyZ2lu
UmlnaHQgPQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhcGFyc2VGbG9hdCggKCB3
aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSggbWFyZ2luRGl2LCBudWxsICkgfHwge30gKS5tYXJnaW5S
aWdodCApOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmICggdHlwZW9m
IGRpdi5zdHlsZS56b29tICE9PSAidW5kZWZpbmVkIiApIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIENoZWNrIGlmIG5hdGl2ZWx5IGJsb2NrLWxldmVsIGVsZW1lbnRzIGFjdCBsaWtlIGlu
bGluZS1ibG9jawotICAgICAgICAgICAgICAgICAgICAgICAgLy8gZWxlbWVudHMgd2hlbiBzZXR0
aW5nIHRoZWlyIGRpc3BsYXkgdG8gJ2lubGluZScgYW5kIGdpdmluZwotICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gdGhlbSBsYXlvdXQKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIChJRSA8
IDggZG9lcyB0aGlzKQotICAgICAgICAgICAgICAgICAgICAgICAgZGl2LmlubmVySFRNTCA9ICIi
OwotICAgICAgICAgICAgICAgICAgICAgICAgZGl2LnN0eWxlLmNzc1RleHQgPSBkaXZSZXNldCAr
ICJ3aWR0aDoxcHg7cGFkZGluZzoxcHg7ZGlzcGxheTppbmxpbmU7em9vbToxIjsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHN1cHBvcnQuaW5saW5lQmxvY2tOZWVkc0xheW91dCA9ICggZGl2Lm9m
ZnNldFdpZHRoID09PSAzICk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGlm
IGVsZW1lbnRzIHdpdGggbGF5b3V0IHNocmluay13cmFwIHRoZWlyIGNoaWxkcmVuCi0gICAgICAg
ICAgICAgICAgICAgICAgICAvLyAoSUUgNiBkb2VzIHRoaXMpCi0gICAgICAgICAgICAgICAgICAg
ICAgICBkaXYuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBkaXYuc3R5bGUub3ZlcmZsb3cgPSAidmlzaWJsZSI7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBkaXYuaW5uZXJIVE1MID0gIjxkaXY+PC9kaXY+IjsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGRpdi5maXJzdENoaWxkLnN0eWxlLndpZHRoID0gIjVweCI7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBzdXBwb3J0LnNocmlua1dyYXBCbG9ja3MgPSAoIGRpdi5vZmZzZXRXaWR0aCAhPT0gMyAp
OwotCi0gICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXIuc3R5bGUuem9vbSA9IDE7Ci0g
ICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgLy8gTnVsbCBlbGVtZW50cyB0byBh
dm9pZCBsZWFrcyBpbiBJRQotICAgICAgICAgICAgICAgIGJvZHkucmVtb3ZlQ2hpbGQoIGNvbnRh
aW5lciApOwotICAgICAgICAgICAgICAgIGNvbnRhaW5lciA9IGRpdiA9IHRkcyA9IG1hcmdpbkRp
diA9IG51bGw7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIC8vIE51bGwgZWxlbWVudHMgdG8gYXZv
aWQgbGVha3MgaW4gSUUKLSAgICAgICAgZnJhZ21lbnQucmVtb3ZlQ2hpbGQoIGRpdiApOwotICAg
ICAgICBhbGwgPSBhID0gc2VsZWN0ID0gb3B0ID0gaW5wdXQgPSBmcmFnbWVudCA9IGRpdiA9IG51
bGw7Ci0KLSAgICAgICAgcmV0dXJuIHN1cHBvcnQ7Ci19KSgpOwotdmFyIHJicmFjZSA9IC8oPzpc
e1tcc1xTXSpcfXxcW1tcc1xTXSpcXSkkLywKLSAgICAgICAgcm11bHRpRGFzaCA9IC8oW0EtWl0p
L2c7Ci0KLWpRdWVyeS5leHRlbmQoewotICAgICAgICBjYWNoZToge30sCi0KLSAgICAgICAgZGVs
ZXRlZElkczogW10sCi0KLSAgICAgICAgLy8gUmVtb3ZlIGF0IG5leHQgbWFqb3IgcmVsZWFzZSAo
MS45LzIuMCkKLSAgICAgICAgdXVpZDogMCwKLQotICAgICAgICAvLyBVbmlxdWUgZm9yIGVhY2gg
Y29weSBvZiBqUXVlcnkgb24gdGhlIHBhZ2UKLSAgICAgICAgLy8gTm9uLWRpZ2l0cyByZW1vdmVk
IHRvIG1hdGNoIHJpbmxpbmVqUXVlcnkKLSAgICAgICAgZXhwYW5kbzogImpRdWVyeSIgKyAoIGpR
dWVyeS5mbi5qcXVlcnkgKyBNYXRoLnJhbmRvbSgpICkucmVwbGFjZSggL1xEL2csICIiICksCi0K
LSAgICAgICAgLy8gVGhlIGZvbGxvd2luZyBlbGVtZW50cyB0aHJvdyB1bmNhdGNoYWJsZSBleGNl
cHRpb25zIGlmIHlvdQotICAgICAgICAvLyBhdHRlbXB0IHRvIGFkZCBleHBhbmRvIHByb3BlcnRp
ZXMgdG8gdGhlbS4KLSAgICAgICAgbm9EYXRhOiB7Ci0gICAgICAgICAgICAgICAgImVtYmVkIjog
dHJ1ZSwKLSAgICAgICAgICAgICAgICAvLyBCYW4gYWxsIG9iamVjdHMgZXhjZXB0IGZvciBGbGFz
aCAod2hpY2ggaGFuZGxlIGV4cGFuZG9zKQotICAgICAgICAgICAgICAgICJvYmplY3QiOiAiY2xz
aWQ6RDI3Q0RCNkUtQUU2RC0xMWNmLTk2QjgtNDQ0NTUzNTQwMDAwIiwKLSAgICAgICAgICAgICAg
ICAiYXBwbGV0IjogdHJ1ZQotICAgICAgICB9LAotCi0gICAgICAgIGhhc0RhdGE6IGZ1bmN0aW9u
KCBlbGVtICkgewotICAgICAgICAgICAgICAgIGVsZW0gPSBlbGVtLm5vZGVUeXBlID8galF1ZXJ5
LmNhY2hlWyBlbGVtW2pRdWVyeS5leHBhbmRvXSBdIDogZWxlbVsgalF1ZXJ5LmV4cGFuZG8gXTsK
LSAgICAgICAgICAgICAgICByZXR1cm4gISFlbGVtICYmICFpc0VtcHR5RGF0YU9iamVjdCggZWxl
bSApOwotICAgICAgICB9LAotCi0gICAgICAgIGRhdGE6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBk
YXRhLCBwdnQgLyogSW50ZXJuYWwgVXNlIE9ubHkgKi8gKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KCAhalF1ZXJ5LmFjY2VwdERhdGEoIGVsZW0gKSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICB2YXIgdGhpc0Nh
Y2hlLCByZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbEtleSA9IGpRdWVyeS5l
eHBhbmRvLAotICAgICAgICAgICAgICAgICAgICAgICAgZ2V0QnlOYW1lID0gdHlwZW9mIG5hbWUg
PT09ICJzdHJpbmciLAotCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBoYXZlIHRvIGhh
bmRsZSBET00gbm9kZXMgYW5kIEpTIG9iamVjdHMgZGlmZmVyZW50bHkgYmVjYXVzZSBJRTYtNwot
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FuJ3QgR0Mgb2JqZWN0IHJlZmVyZW5jZXMgcHJv
cGVybHkgYWNyb3NzIHRoZSBET00tSlMgYm91bmRhcnkKLSAgICAgICAgICAgICAgICAgICAgICAg
IGlzTm9kZSA9IGVsZW0ubm9kZVR5cGUsCi0KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIE9u
bHkgRE9NIG5vZGVzIG5lZWQgdGhlIGdsb2JhbCBqUXVlcnkgY2FjaGU7IEpTIG9iamVjdCBkYXRh
IGlzCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBhdHRhY2hlZCBkaXJlY3RseSB0byB0aGUg
b2JqZWN0IHNvIEdDIGNhbiBvY2N1ciBhdXRvbWF0aWNhbGx5Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBjYWNoZSA9IGlzTm9kZSA/IGpRdWVyeS5jYWNoZSA6IGVsZW0sCi0KLSAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIE9ubHkgZGVmaW5pbmcgYW4gSUQgZm9yIEpTIG9iamVjdHMgaWYgaXRz
IGNhY2hlIGFscmVhZHkgZXhpc3RzIGFsbG93cwotICAgICAgICAgICAgICAgICAgICAgICAgLy8g
dGhlIGNvZGUgdG8gc2hvcnRjdXQgb24gdGhlIHNhbWUgcGF0aCBhcyBhIERPTSBub2RlIHdpdGgg
bm8gY2FjaGUKLSAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gaXNOb2RlID8gZWxlbVsgaW50
ZXJuYWxLZXkgXSA6IGVsZW1bIGludGVybmFsS2V5IF0gJiYgaW50ZXJuYWxLZXk7Ci0KLSAgICAg
ICAgICAgICAgICAvLyBBdm9pZCBkb2luZyBhbnkgbW9yZSB3b3JrIHRoYW4gd2UgbmVlZCB0byB3
aGVuIHRyeWluZyB0byBnZXQgZGF0YSBvbiBhbgotICAgICAgICAgICAgICAgIC8vIG9iamVjdCB0
aGF0IGhhcyBubyBkYXRhIGF0IGFsbAotICAgICAgICAgICAgICAgIGlmICggKCFpZCB8fCAhY2Fj
aGVbaWRdIHx8ICghcHZ0ICYmICFjYWNoZVtpZF0uZGF0YSkpICYmIGdldEJ5TmFtZSAmJiBkYXRh
ID09PSB1bmRlZmluZWQgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKCAhaWQgKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAvLyBPbmx5IERPTSBub2RlcyBuZWVkIGEgbmV3IHVuaXF1ZSBJRCBmb3Ig
ZWFjaCBlbGVtZW50IHNpbmNlIHRoZWlyIGRhdGEKLSAgICAgICAgICAgICAgICAgICAgICAgIC8v
IGVuZHMgdXAgaW4gdGhlIGdsb2JhbCBjYWNoZQotICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCBpc05vZGUgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1bIGludGVy
bmFsS2V5IF0gPSBpZCA9IGpRdWVyeS5kZWxldGVkSWRzLnBvcCgpIHx8IGpRdWVyeS5ndWlkKys7
Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZCA9IGludGVybmFsS2V5OwotICAgICAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmICggIWNhY2hlWyBpZCBdICkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVbIGlkIF0gPSB7fTsKLQotICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gQXZvaWRzIGV4cG9zaW5nIGpRdWVyeSBtZXRhZGF0YSBvbiBwbGFp
biBKUyBvYmplY3RzIHdoZW4gdGhlIG9iamVjdAotICAgICAgICAgICAgICAgICAgICAgICAgLy8g
aXMgc2VyaWFsaXplZCB1c2luZyBKU09OLnN0cmluZ2lmeQotICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCAhaXNOb2RlICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWNo
ZVsgaWQgXS50b0pTT04gPSBqUXVlcnkubm9vcDsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBBbiBvYmplY3QgY2FuIGJl
IHBhc3NlZCB0byBqUXVlcnkuZGF0YSBpbnN0ZWFkIG9mIGEga2V5L3ZhbHVlIHBhaXI7IHRoaXMg
Z2V0cwotICAgICAgICAgICAgICAgIC8vIHNoYWxsb3cgY29waWVkIG92ZXIgb250byB0aGUgZXhp
c3RpbmcgY2FjaGUKLSAgICAgICAgICAgICAgICBpZiAoIHR5cGVvZiBuYW1lID09PSAib2JqZWN0
IiB8fCB0eXBlb2YgbmFtZSA9PT0gImZ1bmN0aW9uIiApIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICggcHZ0ICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWNoZVsg
aWQgXSA9IGpRdWVyeS5leHRlbmQoIGNhY2hlWyBpZCBdLCBuYW1lICk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWNo
ZVsgaWQgXS5kYXRhID0galF1ZXJ5LmV4dGVuZCggY2FjaGVbIGlkIF0uZGF0YSwgbmFtZSApOwot
ICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgICAgIHRoaXNDYWNoZSA9IGNhY2hlWyBpZCBdOwotCi0gICAgICAgICAgICAgICAgLy8galF1
ZXJ5IGRhdGEoKSBpcyBzdG9yZWQgaW4gYSBzZXBhcmF0ZSBvYmplY3QgaW5zaWRlIHRoZSBvYmpl
Y3QncyBpbnRlcm5hbCBkYXRhCi0gICAgICAgICAgICAgICAgLy8gY2FjaGUgaW4gb3JkZXIgdG8g
YXZvaWQga2V5IGNvbGxpc2lvbnMgYmV0d2VlbiBpbnRlcm5hbCBkYXRhIGFuZCB1c2VyLWRlZmlu
ZWQKLSAgICAgICAgICAgICAgICAvLyBkYXRhLgotICAgICAgICAgICAgICAgIGlmICggIXB2dCAp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICggIXRoaXNDYWNoZS5kYXRhICkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzQ2FjaGUuZGF0YSA9IHt9OwotICAgICAg
ICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzQ2FjaGUg
PSB0aGlzQ2FjaGUuZGF0YTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBp
ZiAoIGRhdGEgIT09IHVuZGVmaW5lZCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXND
YWNoZVsgalF1ZXJ5LmNhbWVsQ2FzZSggbmFtZSApIF0gPSBkYXRhOwotICAgICAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgICAgIC8vIENoZWNrIGZvciBib3RoIGNvbnZlcnRlZC10by1jYW1l
bCBhbmQgbm9uLWNvbnZlcnRlZCBkYXRhIHByb3BlcnR5IG5hbWVzCi0gICAgICAgICAgICAgICAg
Ly8gSWYgYSBkYXRhIHByb3BlcnR5IHdhcyBzcGVjaWZpZWQKLSAgICAgICAgICAgICAgICBpZiAo
IGdldEJ5TmFtZSApIHsKLQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gRmlyc3QgVHJ5IHRv
IGZpbmQgYXMtaXMgcHJvcGVydHkgZGF0YQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0g
dGhpc0NhY2hlWyBuYW1lIF07Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRlc3QgZm9y
IG51bGx8dW5kZWZpbmVkIHByb3BlcnR5IGRhdGEKLSAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICggcmV0ID09IG51bGwgKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
VHJ5IHRvIGZpbmQgdGhlIGNhbWVsQ2FzZWQgcHJvcGVydHkKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0ID0gdGhpc0NhY2hlWyBqUXVlcnkuY2FtZWxDYXNlKCBuYW1lICkgXTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0ID0gdGhpc0NhY2hlOwotICAgICAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgcmVt
b3ZlRGF0YTogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIHB2dCAvKiBJbnRlcm5hbCBVc2UgT25seSAq
LyApIHsKLSAgICAgICAgICAgICAgICBpZiAoICFqUXVlcnkuYWNjZXB0RGF0YSggZWxlbSApICkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgICAgIHZhciB0aGlzQ2FjaGUsIGksIGwsCi0KLSAgICAgICAgICAgICAgICAg
ICAgICAgIGlzTm9kZSA9IGVsZW0ubm9kZVR5cGUsCi0KLSAgICAgICAgICAgICAgICAgICAgICAg
IC8vIFNlZSBqUXVlcnkuZGF0YSBmb3IgbW9yZSBpbmZvcm1hdGlvbgotICAgICAgICAgICAgICAg
ICAgICAgICAgY2FjaGUgPSBpc05vZGUgPyBqUXVlcnkuY2FjaGUgOiBlbGVtLAotICAgICAgICAg
ICAgICAgICAgICAgICAgaWQgPSBpc05vZGUgPyBlbGVtWyBqUXVlcnkuZXhwYW5kbyBdIDogalF1
ZXJ5LmV4cGFuZG87Ci0KLSAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBhbHJlYWR5IG5v
IGNhY2hlIGVudHJ5IGZvciB0aGlzIG9iamVjdCwgdGhlcmUgaXMgbm8KLSAgICAgICAgICAgICAg
ICAvLyBwdXJwb3NlIGluIGNvbnRpbnVpbmcKLSAgICAgICAgICAgICAgICBpZiAoICFjYWNoZVsg
aWQgXSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAoIG5hbWUgKSB7Ci0KLSAgICAgICAgICAgICAgICAg
ICAgICAgIHRoaXNDYWNoZSA9IHB2dCA/IGNhY2hlWyBpZCBdIDogY2FjaGVbIGlkIF0uZGF0YTsK
LQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCB0aGlzQ2FjaGUgKSB7Ci0KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3VwcG9ydCBhcnJheSBvciBzcGFjZSBzZXBhcmF0
ZWQgc3RyaW5nIG5hbWVzIGZvciBkYXRhIGtleXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCAhalF1ZXJ5LmlzQXJyYXkoIG5hbWUgKSApIHsKLQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyeSB0aGUgc3RyaW5nIGFzIGEga2V5IGJlZm9y
ZSBhbnkgbWFuaXB1bGF0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCBuYW1lIGluIHRoaXNDYWNoZSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSBbIG5hbWUgXTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzcGxpdCB0aGUgY2FtZWwgY2FzZWQgdmVyc2lv
biBieSBzcGFjZXMgdW5sZXNzIGEga2V5IHdpdGggdGhlIHNwYWNlcyBleGlzdHMKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSBqUXVlcnkuY2Ft
ZWxDYXNlKCBuYW1lICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoIG5hbWUgaW4gdGhpc0NhY2hlICkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0gWyBuYW1lIF07Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1l
ID0gbmFtZS5zcGxpdCgiICIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZvciAoIGkgPSAwLCBsID0gbmFtZS5sZW5ndGg7IGkgPCBsOyBpKysgKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHRoaXNDYWNo
ZVsgbmFtZVtpXSBdOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gZGF0YSBsZWZ0IGlu
IHRoZSBjYWNoZSwgd2Ugd2FudCB0byBjb250aW51ZQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBhbmQgbGV0IHRoZSBjYWNoZSBvYmplY3QgaXRzZWxmIGdldCBkZXN0cm95ZWQK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhKCBwdnQgPyBpc0VtcHR5RGF0
YU9iamVjdCA6IGpRdWVyeS5pc0VtcHR5T2JqZWN0ICkoIHRoaXNDYWNoZSApICkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgICAgIC8vIFNlZSBqUXVlcnkuZGF0YSBmb3IgbW9yZSBp
bmZvcm1hdGlvbgotICAgICAgICAgICAgICAgIGlmICggIXB2dCApIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGRlbGV0ZSBjYWNoZVsgaWQgXS5kYXRhOwotCi0gICAgICAgICAgICAgICAgICAg
ICAgICAvLyBEb24ndCBkZXN0cm95IHRoZSBwYXJlbnQgY2FjaGUgdW5sZXNzIHRoZSBpbnRlcm5h
bCBkYXRhIG9iamVjdAotICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGFkIGJlZW4gdGhlIG9u
bHkgdGhpbmcgbGVmdCBpbiBpdAotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhaXNFbXB0
eURhdGFPYmplY3QoIGNhY2hlWyBpZCBdICkgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBEZXN0cm95IHRoZSBjYWNoZQotICAgICAgICAgICAg
ICAgIGlmICggaXNOb2RlICkgewotICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmNsZWFu
RGF0YSggWyBlbGVtIF0sIHRydWUgKTsKLQotICAgICAgICAgICAgICAgIC8vIFVzZSBkZWxldGUg
d2hlbiBzdXBwb3J0ZWQgZm9yIGV4cGFuZG9zIG9yIGBjYWNoZWAgaXMgbm90IGEgd2luZG93IHBl
ciBpc1dpbmRvdyAoIzEwMDgwKQotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIGpRdWVyeS5z
dXBwb3J0LmRlbGV0ZUV4cGFuZG8gfHwgY2FjaGUgIT0gY2FjaGUud2luZG93ICkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgZGVsZXRlIGNhY2hlWyBpZCBdOwotCi0gICAgICAgICAgICAgICAg
Ly8gV2hlbiBhbGwgZWxzZSBmYWlscywgbnVsbAotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBjYWNoZVsgaWQgXSA9IG51bGw7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICB9LAotCi0gICAgICAgIC8vIEZvciBpbnRlcm5hbCB1c2Ugb25seS4KLSAg
ICAgICAgX2RhdGE6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBkYXRhICkgewotICAgICAgICAgICAg
ICAgIHJldHVybiBqUXVlcnkuZGF0YSggZWxlbSwgbmFtZSwgZGF0YSwgdHJ1ZSApOwotICAgICAg
ICB9LAotCi0gICAgICAgIC8vIEEgbWV0aG9kIGZvciBkZXRlcm1pbmluZyBpZiBhIERPTSBub2Rl
IGNhbiBoYW5kbGUgdGhlIGRhdGEgZXhwYW5kbwotICAgICAgICBhY2NlcHREYXRhOiBmdW5jdGlv
biggZWxlbSApIHsKLSAgICAgICAgICAgICAgICB2YXIgbm9EYXRhID0gZWxlbS5ub2RlTmFtZSAm
JiBqUXVlcnkubm9EYXRhWyBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgXTsKLQotICAgICAg
ICAgICAgICAgIC8vIG5vZGVzIGFjY2VwdCBkYXRhIHVubGVzcyBvdGhlcndpc2Ugc3BlY2lmaWVk
OyByZWplY3Rpb24gY2FuIGJlIGNvbmRpdGlvbmFsCi0gICAgICAgICAgICAgICAgcmV0dXJuICFu
b0RhdGEgfHwgbm9EYXRhICE9PSB0cnVlICYmIGVsZW0uZ2V0QXR0cmlidXRlKCJjbGFzc2lkIikg
PT09IG5vRGF0YTsKLSAgICAgICAgfQotfSk7Ci0KLWpRdWVyeS5mbi5leHRlbmQoewotICAgICAg
ICBkYXRhOiBmdW5jdGlvbigga2V5LCB2YWx1ZSApIHsKLSAgICAgICAgICAgICAgICB2YXIgcGFy
dHMsIHBhcnQsIGF0dHIsIG5hbWUsIGwsCi0gICAgICAgICAgICAgICAgICAgICAgICBlbGVtID0g
dGhpc1swXSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAwLAotICAgICAgICAgICAgICAg
ICAgICAgICAgZGF0YSA9IG51bGw7Ci0KLSAgICAgICAgICAgICAgICAvLyBHZXRzIGFsbCB2YWx1
ZXMKLSAgICAgICAgICAgICAgICBpZiAoIGtleSA9PT0gdW5kZWZpbmVkICkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKCB0aGlzLmxlbmd0aCApIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGF0YSA9IGpRdWVyeS5kYXRhKCBlbGVtICk7Ci0KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICYmICFqUXVlcnkuX2Rh
dGEoIGVsZW0sICJwYXJzZWRBdHRycyIgKSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhdHRyID0gZWxlbS5hdHRyaWJ1dGVzOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZvciAoIGwgPSBhdHRyLmxlbmd0aDsgaSA8IGw7IGkrKyAp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUg
PSBhdHRyW2ldLm5hbWU7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICggIW5hbWUuaW5kZXhPZiggImRhdGEtIiApICkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0galF1ZXJ5
LmNhbWVsQ2FzZSggbmFtZS5zdWJzdHJpbmcoNSkgKTsKLQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhQXR0ciggZWxlbSwgbmFtZSwg
ZGF0YVsgbmFtZSBdICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5fZGF0YSggZWxlbSwg
InBhcnNlZEF0dHJzIiwgdHJ1ZSApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBkYXRhOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIC8vIFNldHMg
bXVsdGlwbGUgdmFsdWVzCi0gICAgICAgICAgICAgICAgaWYgKCB0eXBlb2Yga2V5ID09PSAib2Jq
ZWN0IiApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rp
b24oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5kYXRhKCB0aGlz
LCBrZXkgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgICAgIHBhcnRzID0ga2V5LnNwbGl0KCAiLiIsIDIgKTsKLSAgICAgICAg
ICAgICAgICBwYXJ0c1sxXSA9IHBhcnRzWzFdID8gIi4iICsgcGFydHNbMV0gOiAiIjsKLSAgICAg
ICAgICAgICAgICBwYXJ0ID0gcGFydHNbMV0gKyAiISI7Ci0KLSAgICAgICAgICAgICAgICByZXR1
cm4galF1ZXJ5LmFjY2VzcyggdGhpcywgZnVuY3Rpb24oIHZhbHVlICkgewotCi0gICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoIHZhbHVlID09PSB1bmRlZmluZWQgKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRhdGEgPSB0aGlzLnRyaWdnZXJIYW5kbGVyKCAiZ2V0RGF0YSIg
KyBwYXJ0LCBbIHBhcnRzWzBdIF0gKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBUcnkgdG8gZmV0Y2ggYW55IGludGVybmFsbHkgc3RvcmVkIGRhdGEgZmlyc3QKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBkYXRhID09PSB1bmRlZmluZWQgJiYgZWxl
bSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0galF1
ZXJ5LmRhdGEoIGVsZW0sIGtleSApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRhdGEgPSBkYXRhQXR0ciggZWxlbSwga2V5LCBkYXRhICk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZGF0YSA9PT0gdW5kZWZpbmVkICYmIHBhcnRzWzFdID8KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGEoIHBhcnRzWzBdICkgOgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRzWzFdID0gdmFsdWU7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICB0aGlzLmVhY2goZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZhciBzZWxmID0galF1ZXJ5KCB0aGlzICk7Ci0KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50cmlnZ2VySGFuZGxlciggInNldERhdGEiICsg
cGFydCwgcGFydHMgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmRh
dGEoIHRoaXMsIGtleSwgdmFsdWUgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2VsZi50cmlnZ2VySGFuZGxlciggImNoYW5nZURhdGEiICsgcGFydCwgcGFydHMgKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIH0sIG51bGwsIHZhbHVlLCBh
cmd1bWVudHMubGVuZ3RoID4gMSwgbnVsbCwgZmFsc2UgKTsKLSAgICAgICAgfSwKLQotICAgICAg
ICByZW1vdmVEYXRhOiBmdW5jdGlvbigga2V5ICkgewotICAgICAgICAgICAgICAgIHJldHVybiB0
aGlzLmVhY2goZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkucmVt
b3ZlRGF0YSggdGhpcywga2V5ICk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KLX0p
OwotCi1mdW5jdGlvbiBkYXRhQXR0ciggZWxlbSwga2V5LCBkYXRhICkgewotICAgICAgICAvLyBJ
ZiBub3RoaW5nIHdhcyBmb3VuZCBpbnRlcm5hbGx5LCB0cnkgdG8gZmV0Y2ggYW55Ci0gICAgICAg
IC8vIGRhdGEgZnJvbSB0aGUgSFRNTDUgZGF0YS0qIGF0dHJpYnV0ZQotICAgICAgICBpZiAoIGRh
dGEgPT09IHVuZGVmaW5lZCAmJiBlbGVtLm5vZGVUeXBlID09PSAxICkgewotCi0gICAgICAgICAg
ICAgICAgdmFyIG5hbWUgPSAiZGF0YS0iICsga2V5LnJlcGxhY2UoIHJtdWx0aURhc2gsICItJDEi
ICkudG9Mb3dlckNhc2UoKTsKLQotICAgICAgICAgICAgICAgIGRhdGEgPSBlbGVtLmdldEF0dHJp
YnV0ZSggbmFtZSApOwotCi0gICAgICAgICAgICAgICAgaWYgKCB0eXBlb2YgZGF0YSA9PT0gInN0
cmluZyIgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkYXRhID0gZGF0YSA9PT0gInRydWUiID8gdHJ1ZSA6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPT09ICJmYWxzZSIgPyBmYWxzZSA6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPT09ICJudWxsIiA/IG51bGwgOgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBPbmx5IGNvbnZlcnQgdG8gYSBudW1iZXIg
aWYgaXQgZG9lc24ndCBjaGFuZ2UgdGhlIHN0cmluZwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICArZGF0YSArICIiID09PSBkYXRhID8gK2RhdGEgOgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByYnJhY2UudGVzdCggZGF0YSApID8galF1ZXJ5LnBhcnNlSlNPTiggZGF0
YSApIDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOwotICAg
ICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCggZSApIHt9Ci0KLSAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBzZXQgdGhlIGRhdGEgc28gaXQgaXNuJ3QgY2hhbmdlZCBs
YXRlcgotICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmRhdGEoIGVsZW0sIGtleSwgZGF0
YSApOwotCi0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGRhdGEgPSB1bmRlZmluZWQ7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAg
ICAgcmV0dXJuIGRhdGE7Ci19Ci0KLS8vIGNoZWNrcyBhIGNhY2hlIG9iamVjdCBmb3IgZW1wdGlu
ZXNzCi1mdW5jdGlvbiBpc0VtcHR5RGF0YU9iamVjdCggb2JqICkgewotICAgICAgICB2YXIgbmFt
ZTsKLSAgICAgICAgZm9yICggbmFtZSBpbiBvYmogKSB7Ci0KLSAgICAgICAgICAgICAgICAvLyBp
ZiB0aGUgcHVibGljIGRhdGEgb2JqZWN0IGlzIGVtcHR5LCB0aGUgcHJpdmF0ZSBpcyBzdGlsbCBl
bXB0eQotICAgICAgICAgICAgICAgIGlmICggbmFtZSA9PT0gImRhdGEiICYmIGpRdWVyeS5pc0Vt
cHR5T2JqZWN0KCBvYmpbbmFtZV0gKSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoIG5hbWUgIT09ICJ0
b0pTT04iICkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiB0cnVlOwotfQotalF1ZXJ5
LmV4dGVuZCh7Ci0gICAgICAgIHF1ZXVlOiBmdW5jdGlvbiggZWxlbSwgdHlwZSwgZGF0YSApIHsK
LSAgICAgICAgICAgICAgICB2YXIgcXVldWU7Ci0KLSAgICAgICAgICAgICAgICBpZiAoIGVsZW0g
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0eXBlID0gKCB0eXBlIHx8ICJmeCIgKSArICJx
dWV1ZSI7Ci0gICAgICAgICAgICAgICAgICAgICAgICBxdWV1ZSA9IGpRdWVyeS5fZGF0YSggZWxl
bSwgdHlwZSApOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBTcGVlZCB1cCBkZXF1ZXVl
IGJ5IGdldHRpbmcgb3V0IHF1aWNrbHkgaWYgdGhpcyBpcyBqdXN0IGEgbG9va3VwCi0gICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoIGRhdGEgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICggIXF1ZXVlIHx8IGpRdWVyeS5pc0FycmF5KGRhdGEpICkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXVlID0galF1ZXJ5Ll9kYXRhKCBlbGVt
LCB0eXBlLCBqUXVlcnkubWFrZUFycmF5KGRhdGEpICk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcXVldWUucHVzaCggZGF0YSApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gcXVldWUgfHwgW107Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICB9LAotCi0gICAgICAg
IGRlcXVldWU6IGZ1bmN0aW9uKCBlbGVtLCB0eXBlICkgewotICAgICAgICAgICAgICAgIHR5cGUg
PSB0eXBlIHx8ICJmeCI7Ci0KLSAgICAgICAgICAgICAgICB2YXIgcXVldWUgPSBqUXVlcnkucXVl
dWUoIGVsZW0sIHR5cGUgKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0TGVuZ3RoID0g
cXVldWUubGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgZm4gPSBxdWV1ZS5zaGlmdCgp
LAotICAgICAgICAgICAgICAgICAgICAgICAgaG9va3MgPSBqUXVlcnkuX3F1ZXVlSG9va3MoIGVs
ZW0sIHR5cGUgKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgPSBmdW5jdGlvbigpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmRlcXVldWUoIGVsZW0sIHR5
cGUgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH07Ci0KLSAgICAgICAgICAgICAgICAvLyBJ
ZiB0aGUgZnggcXVldWUgaXMgZGVxdWV1ZWQsIGFsd2F5cyByZW1vdmUgdGhlIHByb2dyZXNzIHNl
bnRpbmVsCi0gICAgICAgICAgICAgICAgaWYgKCBmbiA9PT0gImlucHJvZ3Jlc3MiICkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgZm4gPSBxdWV1ZS5zaGlmdCgpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgc3RhcnRMZW5ndGgtLTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
ICAgICBpZiAoIGZuICkgewotCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBBZGQgYSBwcm9n
cmVzcyBzZW50aW5lbCB0byBwcmV2ZW50IHRoZSBmeCBxdWV1ZSBmcm9tIGJlaW5nCi0gICAgICAg
ICAgICAgICAgICAgICAgICAvLyBhdXRvbWF0aWNhbGx5IGRlcXVldWVkCi0gICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoIHR5cGUgPT09ICJmeCIgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHF1ZXVlLnVuc2hpZnQoICJpbnByb2dyZXNzIiApOwotICAgICAgICAgICAgICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBjbGVhciB1cCB0aGUgbGFz
dCBxdWV1ZSBzdG9wIGZ1bmN0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgaG9v
a3Muc3RvcDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZuLmNhbGwoIGVsZW0sIG5leHQsIGhv
b2tzICk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKCAhc3RhcnRM
ZW5ndGggJiYgaG9va3MgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBob29rcy5lbXB0eS5m
aXJlKCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICB9LAotCi0gICAgICAgIC8vIG5vdCBp
bnRlbmRlZCBmb3IgcHVibGljIGNvbnN1bXB0aW9uIC0gZ2VuZXJhdGVzIGEgcXVldWVIb29rcyBv
YmplY3QsIG9yIHJldHVybnMgdGhlIGN1cnJlbnQgb25lCi0gICAgICAgIF9xdWV1ZUhvb2tzOiBm
dW5jdGlvbiggZWxlbSwgdHlwZSApIHsKLSAgICAgICAgICAgICAgICB2YXIga2V5ID0gdHlwZSAr
ICJxdWV1ZUhvb2tzIjsKLSAgICAgICAgICAgICAgICByZXR1cm4galF1ZXJ5Ll9kYXRhKCBlbGVt
LCBrZXkgKSB8fCBqUXVlcnkuX2RhdGEoIGVsZW0sIGtleSwgewotICAgICAgICAgICAgICAgICAg
ICAgICAgZW1wdHk6IGpRdWVyeS5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IikuYWRkKGZ1bmN0aW9u
KCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkucmVtb3ZlRGF0YSgg
ZWxlbSwgdHlwZSArICJxdWV1ZSIsIHRydWUgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgalF1ZXJ5LnJlbW92ZURhdGEoIGVsZW0sIGtleSwgdHJ1ZSApOwotICAgICAgICAgICAg
ICAgICAgICAgICAgfSkKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgfQotfSk7Ci0KLWpR
dWVyeS5mbi5leHRlbmQoewotICAgICAgICBxdWV1ZTogZnVuY3Rpb24oIHR5cGUsIGRhdGEgKSB7
Ci0gICAgICAgICAgICAgICAgdmFyIHNldHRlciA9IDI7Ci0KLSAgICAgICAgICAgICAgICBpZiAo
IHR5cGVvZiB0eXBlICE9PSAic3RyaW5nIiApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRh
dGEgPSB0eXBlOwotICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSA9ICJmeCI7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBzZXR0ZXItLTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgICAgICBpZiAoIGFyZ3VtZW50cy5sZW5ndGggPCBzZXR0ZXIgKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4galF1ZXJ5LnF1ZXVlKCB0aGlzWzBdLCB0eXBlICk7Ci0gICAgICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEgPT09IHVuZGVmaW5lZCA/
Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzIDoKLSAgICAgICAgICAgICAgICAgICAgICAg
IHRoaXMuZWFjaChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmFyIHF1ZXVlID0galF1ZXJ5LnF1ZXVlKCB0aGlzLCB0eXBlLCBkYXRhICk7Ci0KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5zdXJlIGEgaG9va3MgZm9yIHRoaXMgcXVldWUK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5Ll9xdWV1ZUhvb2tzKCB0aGlz
LCB0eXBlICk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCB0eXBlID09
PSAiZngiICYmIHF1ZXVlWzBdICE9PSAiaW5wcm9ncmVzcyIgKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmRlcXVldWUoIHRoaXMsIHR5cGUgKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAg
fSk7Ci0gICAgICAgIH0sCi0gICAgICAgIGRlcXVldWU6IGZ1bmN0aW9uKCB0eXBlICkgewotICAg
ICAgICAgICAgICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBqUXVlcnkuZGVxdWV1ZSggdGhpcywgdHlwZSApOwotICAgICAgICAgICAgICAg
IH0pOwotICAgICAgICB9LAotICAgICAgICAvLyBCYXNlZCBvZmYgb2YgdGhlIHBsdWdpbiBieSBD
bGludCBIZWxmZXJzLCB3aXRoIHBlcm1pc3Npb24uCi0gICAgICAgIC8vIGh0dHA6Ly9ibGluZHNp
Z25hbHMuY29tL2luZGV4LnBocC8yMDA5LzA3L2pxdWVyeS1kZWxheS8KLSAgICAgICAgZGVsYXk6
IGZ1bmN0aW9uKCB0aW1lLCB0eXBlICkgewotICAgICAgICAgICAgICAgIHRpbWUgPSBqUXVlcnku
ZnggPyBqUXVlcnkuZnguc3BlZWRzWyB0aW1lIF0gfHwgdGltZSA6IHRpbWU7Ci0gICAgICAgICAg
ICAgICAgdHlwZSA9IHR5cGUgfHwgImZ4IjsKLQotICAgICAgICAgICAgICAgIHJldHVybiB0aGlz
LnF1ZXVlKCB0eXBlLCBmdW5jdGlvbiggbmV4dCwgaG9va3MgKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICB2YXIgdGltZW91dCA9IHNldFRpbWVvdXQoIG5leHQsIHRpbWUgKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGhvb2tzLnN0b3AgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KCB0aW1lb3V0ICk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICB9OwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICB9LAotICAgICAgICBj
bGVhclF1ZXVlOiBmdW5jdGlvbiggdHlwZSApIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhp
cy5xdWV1ZSggdHlwZSB8fCAiZngiLCBbXSApOwotICAgICAgICB9LAotICAgICAgICAvLyBHZXQg
YSBwcm9taXNlIHJlc29sdmVkIHdoZW4gcXVldWVzIG9mIGEgY2VydGFpbiB0eXBlCi0gICAgICAg
IC8vIGFyZSBlbXB0aWVkIChmeCBpcyB0aGUgdHlwZSBieSBkZWZhdWx0KQotICAgICAgICBwcm9t
aXNlOiBmdW5jdGlvbiggdHlwZSwgb2JqICkgewotICAgICAgICAgICAgICAgIHZhciB0bXAsCi0g
ICAgICAgICAgICAgICAgICAgICAgICBjb3VudCA9IDEsCi0gICAgICAgICAgICAgICAgICAgICAg
ICBkZWZlciA9IGpRdWVyeS5EZWZlcnJlZCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgZWxl
bWVudHMgPSB0aGlzLAotICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMubGVuZ3RoLAot
ICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSA9IGZ1bmN0aW9uKCkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoICEoIC0tY291bnQgKSApIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlci5yZXNvbHZlV2l0aCggZWxlbWVudHMs
IFsgZWxlbWVudHMgXSApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgICAgICAgICB9OwotCi0gICAgICAgICAgICAgICAgaWYgKCB0eXBlb2YgdHlw
ZSAhPT0gInN0cmluZyIgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvYmogPSB0eXBlOwot
ICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSA9IHVuZGVmaW5lZDsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgdHlwZSA9IHR5cGUgfHwgImZ4IjsKLQotICAgICAgICAgICAg
ICAgIHdoaWxlKCBpLS0gKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBqUXVlcnku
X2RhdGEoIGVsZW1lbnRzWyBpIF0sIHR5cGUgKyAicXVldWVIb29rcyIgKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICggdG1wICYmIHRtcC5lbXB0eSApIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY291bnQrKzsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dG1wLmVtcHR5LmFkZCggcmVzb2x2ZSApOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXNvbHZlKCk7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIGRlZmVyLnByb21pc2UoIG9iaiApOwotICAgICAgICB9Ci19KTsKLXZhciBub2Rl
SG9vaywgYm9vbEhvb2ssIGZpeFNwZWNpZmllZCwKLSAgICAgICAgcmNsYXNzID0gL1tcdFxyXG5d
L2csCi0gICAgICAgIHJyZXR1cm4gPSAvXHIvZywKLSAgICAgICAgcnR5cGUgPSAvXig/OmJ1dHRv
bnxpbnB1dCkkL2ksCi0gICAgICAgIHJmb2N1c2FibGUgPSAvXig/OmJ1dHRvbnxpbnB1dHxvYmpl
Y3R8c2VsZWN0fHRleHRhcmVhKSQvaSwKLSAgICAgICAgcmNsaWNrYWJsZSA9IC9eYSg/OnJlYXwp
JC9pLAotICAgICAgICByYm9vbGVhbiA9IC9eKD86YXV0b2ZvY3VzfGF1dG9wbGF5fGFzeW5jfGNo
ZWNrZWR8Y29udHJvbHN8ZGVmZXJ8ZGlzYWJsZWR8aGlkZGVufGxvb3B8bXVsdGlwbGV8b3Blbnxy
ZWFkb25seXxyZXF1aXJlZHxzY29wZWR8c2VsZWN0ZWQpJC9pLAotICAgICAgICBnZXRTZXRBdHRy
aWJ1dGUgPSBqUXVlcnkuc3VwcG9ydC5nZXRTZXRBdHRyaWJ1dGU7Ci0KLWpRdWVyeS5mbi5leHRl
bmQoewotICAgICAgICBhdHRyOiBmdW5jdGlvbiggbmFtZSwgdmFsdWUgKSB7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIGpRdWVyeS5hY2Nlc3MoIHRoaXMsIGpRdWVyeS5hdHRyLCBuYW1lLCB2YWx1
ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDEgKTsKLSAgICAgICAgfSwKLQotICAgICAgICByZW1vdmVB
dHRyOiBmdW5jdGlvbiggbmFtZSApIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lYWNo
KGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LnJlbW92ZUF0dHIo
IHRoaXMsIG5hbWUgKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgfSwKLQotICAgICAg
ICBwcm9wOiBmdW5jdGlvbiggbmFtZSwgdmFsdWUgKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IGpRdWVyeS5hY2Nlc3MoIHRoaXMsIGpRdWVyeS5wcm9wLCBuYW1lLCB2YWx1ZSwgYXJndW1lbnRz
Lmxlbmd0aCA+IDEgKTsKLSAgICAgICAgfSwKLQotICAgICAgICByZW1vdmVQcm9wOiBmdW5jdGlv
biggbmFtZSApIHsKLSAgICAgICAgICAgICAgICBuYW1lID0galF1ZXJ5LnByb3BGaXhbIG5hbWUg
XSB8fCBuYW1lOwotICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyB0cnkvY2F0Y2ggaGFuZGxlcyBjYXNlcyB3aGVy
ZSBJRSBiYWxrcyAoc3VjaCBhcyByZW1vdmluZyBhIHByb3BlcnR5IG9uIHdpbmRvdykKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRoaXNbIG5hbWUgXSA9IHVuZGVmaW5lZDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGVsZXRlIHRoaXNbIG5hbWUgXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2go
IGUgKSB7fQotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICB9LAotCi0gICAgICAgIGFkZENs
YXNzOiBmdW5jdGlvbiggdmFsdWUgKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGNsYXNzTmFtZXMs
IGksIGwsIGVsZW0sCi0gICAgICAgICAgICAgICAgICAgICAgICBzZXRDbGFzcywgYywgY2w7Ci0K
LSAgICAgICAgICAgICAgICBpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCB2YWx1ZSApICkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiggaiApIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KCB0aGlzICkuYWRkQ2xhc3MoIHZh
bHVlLmNhbGwodGhpcywgaiwgdGhpcy5jbGFzc05hbWUpICk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB9KTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAoIHZhbHVl
ICYmIHR5cGVvZiB2YWx1ZSA9PT0gInN0cmluZyIgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBjbGFzc05hbWVzID0gdmFsdWUuc3BsaXQoIGNvcmVfcnNwYWNlICk7Ci0KLSAgICAgICAgICAg
ICAgICAgICAgICAgIGZvciAoIGkgPSAwLCBsID0gdGhpcy5sZW5ndGg7IGkgPCBsOyBpKysgKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0gPSB0aGlzWyBpIF07Ci0KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggIWVsZW0uY2xh
c3NOYW1lICYmIGNsYXNzTmFtZXMubGVuZ3RoID09PSAxICkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbS5jbGFzc05hbWUgPSB2YWx1ZTsKLQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDbGFzcyA9ICIgIiAr
IGVsZW0uY2xhc3NOYW1lICsgIiAiOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmb3IgKCBjID0gMCwgY2wgPSBjbGFzc05hbWVzLmxlbmd0aDsgYyA8
IGNsOyBjKysgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICggc2V0Q2xhc3MuaW5kZXhPZiggIiAiICsgY2xhc3NOYW1lc1sgYyBd
ICsgIiAiICkgPCAwICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNldENsYXNzICs9IGNsYXNzTmFtZXNbIGMgXSArICIg
IjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbS5jbGFz
c05hbWUgPSBqUXVlcnkudHJpbSggc2V0Q2xhc3MgKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
ICAgICByZXR1cm4gdGhpczsKLSAgICAgICAgfSwKLQotICAgICAgICByZW1vdmVDbGFzczogZnVu
Y3Rpb24oIHZhbHVlICkgewotICAgICAgICAgICAgICAgIHZhciByZW1vdmVzLCBjbGFzc05hbWUs
IGVsZW0sIGMsIGNsLCBpLCBsOwotCi0gICAgICAgICAgICAgICAgaWYgKCBqUXVlcnkuaXNGdW5j
dGlvbiggdmFsdWUgKSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVh
Y2goZnVuY3Rpb24oIGogKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVy
eSggdGhpcyApLnJlbW92ZUNsYXNzKCB2YWx1ZS5jYWxsKHRoaXMsIGosIHRoaXMuY2xhc3NOYW1l
KSApOwotICAgICAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIGlmICggKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gInN0cmluZyIpIHx8
IHZhbHVlID09PSB1bmRlZmluZWQgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVz
ID0gKCB2YWx1ZSB8fCAiIiApLnNwbGl0KCBjb3JlX3JzcGFjZSApOwotCi0gICAgICAgICAgICAg
ICAgICAgICAgICBmb3IgKCBpID0gMCwgbCA9IHRoaXMubGVuZ3RoOyBpIDwgbDsgaSsrICkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtID0gdGhpc1sgaSBdOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgJiYgZWxl
bS5jbGFzc05hbWUgKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjbGFzc05hbWUgPSAoIiAiICsgZWxlbS5jbGFzc05hbWUgKyAiICIpLnJlcGxhY2UoIHJjbGFz
cywgIiAiICk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBs
b29wIG92ZXIgZWFjaCBpdGVtIGluIHRoZSByZW1vdmFsIGxpc3QKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmb3IgKCBjID0gMCwgY2wgPSByZW1vdmVzLmxlbmd0aDsg
YyA8IGNsOyBjKysgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBSZW1vdmUgdW50aWwgdGhlcmUgaXMgbm90aGluZyB0byByZW1vdmUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoIGNsYXNz
TmFtZS5pbmRleE9mKCIgIiArIHJlbW92ZXNbIGMgXSArICIgIikgPj0gMCApIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1l
ID0gY2xhc3NOYW1lLnJlcGxhY2UoICIgIiArIHJlbW92ZXNbIGMgXSArICIgIiAsICIgIiApOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBlbGVtLmNsYXNzTmFtZSA9IHZhbHVlID8galF1ZXJ5LnRyaW0o
IGNsYXNzTmFtZSApIDogIiI7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
ICAgICByZXR1cm4gdGhpczsKLSAgICAgICAgfSwKLQotICAgICAgICB0b2dnbGVDbGFzczogZnVu
Y3Rpb24oIHZhbHVlLCBzdGF0ZVZhbCApIHsKLSAgICAgICAgICAgICAgICB2YXIgdHlwZSA9IHR5
cGVvZiB2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzQm9vbCA9IHR5cGVvZiBzdGF0
ZVZhbCA9PT0gImJvb2xlYW4iOwotCi0gICAgICAgICAgICAgICAgaWYgKCBqUXVlcnkuaXNGdW5j
dGlvbiggdmFsdWUgKSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVh
Y2goZnVuY3Rpb24oIGkgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVy
eSggdGhpcyApLnRvZ2dsZUNsYXNzKCB2YWx1ZS5jYWxsKHRoaXMsIGksIHRoaXMuY2xhc3NOYW1l
LCBzdGF0ZVZhbCksIHN0YXRlVmFsICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9KTsKLSAg
ICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0
aW9uKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCB0eXBlID09PSAic3RyaW5nIiAp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG9nZ2xlIGluZGl2aWR1YWwg
Y2xhc3MgbmFtZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNsYXNzTmFt
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gMCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmID0galF1ZXJ5KCB0aGlzICks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBzdGF0ZVZh
bCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWVzID0g
dmFsdWUuc3BsaXQoIGNvcmVfcnNwYWNlICk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgd2hpbGUgKCAoY2xhc3NOYW1lID0gY2xhc3NOYW1lc1sgaSsrIF0pICkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoZWNrIGVhY2ggY2xhc3NOYW1l
IGdpdmVuLCBzcGFjZSBzZXBhcmF0ZWQgbGlzdAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YXRlID0gaXNCb29sID8gc3RhdGUgOiAhc2VsZi5oYXNDbGFzcyggY2xh
c3NOYW1lICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZlsg
c3RhdGUgPyAiYWRkQ2xhc3MiIDogInJlbW92ZUNsYXNzIiBdKCBjbGFzc05hbWUgKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgaWYgKCB0eXBlID09PSAidW5kZWZpbmVkIiB8fCB0eXBlID09PSAiYm9vbGVhbiIgKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggdGhpcy5jbGFzc05hbWUgKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RvcmUgY2xhc3NO
YW1lIGlmIHNldAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVy
eS5fZGF0YSggdGhpcywgIl9fY2xhc3NOYW1lX18iLCB0aGlzLmNsYXNzTmFtZSApOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gdG9nZ2xlIHdob2xlIGNsYXNzTmFtZQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0aGlzLmNsYXNzTmFtZSA9IHRoaXMuY2xhc3NOYW1lIHx8IHZhbHVlID09PSBmYWxz
ZSA/ICIiIDogalF1ZXJ5Ll9kYXRhKCB0aGlzLCAiX19jbGFzc05hbWVfXyIgKSB8fCAiIjsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgfSwK
LQotICAgICAgICBoYXNDbGFzczogZnVuY3Rpb24oIHNlbGVjdG9yICkgewotICAgICAgICAgICAg
ICAgIHZhciBjbGFzc05hbWUgPSAiICIgKyBzZWxlY3RvciArICIgIiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGkgPSAwLAotICAgICAgICAgICAgICAgICAgICAgICAgbCA9IHRoaXMubGVuZ3Ro
OwotICAgICAgICAgICAgICAgIGZvciAoIDsgaSA8IGw7IGkrKyApIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICggdGhpc1tpXS5ub2RlVHlwZSA9PT0gMSAmJiAoIiAiICsgdGhpc1tpXS5j
bGFzc05hbWUgKyAiICIpLnJlcGxhY2UocmNsYXNzLCAiICIpLmluZGV4T2YoIGNsYXNzTmFtZSAp
ID49IDAgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfSwKLQotICAgICAgICB2YWw6IGZ1bmN0aW9u
KCB2YWx1ZSApIHsKLSAgICAgICAgICAgICAgICB2YXIgaG9va3MsIHJldCwgaXNGdW5jdGlvbiwK
LSAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0gPSB0aGlzWzBdOwotCi0gICAgICAgICAgICAg
ICAgaWYgKCAhYXJndW1lbnRzLmxlbmd0aCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICggZWxlbSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9va3MgPSBqUXVl
cnkudmFsSG9va3NbIGVsZW0udHlwZSBdIHx8IGpRdWVyeS52YWxIb29rc1sgZWxlbS5ub2RlTmFt
ZS50b0xvd2VyQ2FzZSgpIF07Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCBob29rcyAmJiAiZ2V0IiBpbiBob29rcyAmJiAocmV0ID0gaG9va3MuZ2V0KCBlbGVtLCAidmFs
dWUiICkpICE9PSB1bmRlZmluZWQgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHJldDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IGVsZW0udmFsdWU7Ci0KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiByZXQgPT09ICJzdHJp
bmciID8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBoYW5kbGUg
bW9zdCBjb21tb24gc3RyaW5nIGNhc2VzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0LnJlcGxhY2UocnJldHVybiwgIiIpIDoKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBoYW5kbGUgY2FzZXMgd2hlcmUgdmFsdWUgaXMgbnVsbC91
bmRlZiBvciBudW1iZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXQgPT0gbnVsbCA/ICIiIDogcmV0OwotICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICAgICAgaXNGdW5jdGlvbiA9IGpRdWVyeS5pc0Z1bmN0aW9uKCB2YWx1ZSApOwotCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiggaSApIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHZhciB2YWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
bGYgPSBqUXVlcnkodGhpcyk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICggdGhpcy5u
b2RlVHlwZSAhPT0gMSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoIGlzRnVuY3Rpb24gKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCA9
IHZhbHVlLmNhbGwoIHRoaXMsIGksIHNlbGYudmFsKCkgKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCA9IHZhbHVl
OwotICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICAv
LyBUcmVhdCBudWxsL3VuZGVmaW5lZCBhcyAiIjsgY29udmVydCBudW1iZXJzIHRvIHN0cmluZwot
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCB2YWwgPT0gbnVsbCApIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmFsID0gIiI7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgaWYgKCB0eXBlb2YgdmFsID09PSAibnVtYmVyIiApIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdmFsICs9ICIiOwotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IGlmICggalF1ZXJ5LmlzQXJyYXkoIHZhbCApICkgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2YWwgPSBqUXVlcnkubWFwKHZhbCwgZnVuY3Rpb24gKCB2YWx1ZSApIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgPT0gbnVsbCA/
ICIiIDogdmFsdWUgKyAiIjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGhvb2tz
ID0galF1ZXJ5LnZhbEhvb2tzWyB0aGlzLnR5cGUgXSB8fCBqUXVlcnkudmFsSG9va3NbIHRoaXMu
bm9kZU5hbWUudG9Mb3dlckNhc2UoKSBdOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBJ
ZiBzZXQgcmV0dXJucyB1bmRlZmluZWQsIGZhbGwgYmFjayB0byBub3JtYWwgc2V0dGluZwotICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCAhaG9va3MgfHwgISgic2V0IiBpbiBob29rcykgfHwg
aG9va3Muc2V0KCB0aGlzLCB2YWwsICJ2YWx1ZSIgKSA9PT0gdW5kZWZpbmVkICkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdmFsOwotICAgICAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci19KTsKLQotalF1
ZXJ5LmV4dGVuZCh7Ci0gICAgICAgIHZhbEhvb2tzOiB7Ci0gICAgICAgICAgICAgICAgb3B0aW9u
OiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCBlbGVtICkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhdHRyaWJ1dGVzLnZhbHVlIGlzIHVuZGVm
aW5lZCBpbiBCbGFja2JlcnJ5IDQuNyBidXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gdXNlcyAudmFsdWUuIFNlZSAjNjkzMgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2YXIgdmFsID0gZWxlbS5hdHRyaWJ1dGVzLnZhbHVlOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gIXZhbCB8fCB2YWwuc3BlY2lmaWVkID8gZWxlbS52YWx1ZSA6
IGVsZW0udGV4dDsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9
LAotICAgICAgICAgICAgICAgIHNlbGVjdDogewotICAgICAgICAgICAgICAgICAgICAgICAgZ2V0
OiBmdW5jdGlvbiggZWxlbSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFy
IHZhbHVlLCBvcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
b3B0aW9ucyA9IGVsZW0ub3B0aW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbmRleCA9IGVsZW0uc2VsZWN0ZWRJbmRleCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvbmUgPSBlbGVtLnR5cGUgPT09ICJzZWxlY3Qtb25lIiB8fCBp
bmRleCA8IDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVz
ID0gb25lID8gbnVsbCA6IFtdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1heCA9IG9uZSA/IGluZGV4ICsgMSA6IG9wdGlvbnMubGVuZ3RoLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBpbmRleCA8IDAgPwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4IDoKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uZSA/IGluZGV4IDogMDsKLQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBMb29wIHRocm91Z2ggYWxsIHRoZSBzZWxl
Y3RlZCBvcHRpb25zCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoIDsgaSA8
IG1heDsgaSsrICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9w
dGlvbiA9IG9wdGlvbnNbIGkgXTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIG9sZElFIGRvZXNuJ3QgdXBkYXRlIHNlbGVjdGVkIGFmdGVyIGZvcm0gcmVzZXQg
KCMyNTUxKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggKCBv
cHRpb24uc2VsZWN0ZWQgfHwgaSA9PT0gaW5kZXggKSAmJgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEb24ndCByZXR1cm4gb3B0aW9u
cyB0aGF0IGFyZSBkaXNhYmxlZCBvciBpbiBhIGRpc2FibGVkIG9wdGdyb3VwCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggalF1ZXJ5LnN1
cHBvcnQub3B0RGlzYWJsZWQgPyAhb3B0aW9uLmRpc2FibGVkIDogb3B0aW9uLmdldEF0dHJpYnV0
ZSgiZGlzYWJsZWQiKSA9PT0gbnVsbCApICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICggIW9wdGlvbi5wYXJlbnROb2RlLmRpc2FibGVk
IHx8ICFqUXVlcnkubm9kZU5hbWUoIG9wdGlvbi5wYXJlbnROb2RlLCAib3B0Z3JvdXAiICkgKSAp
IHsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
R2V0IHRoZSBzcGVjaWZpYyB2YWx1ZSBmb3IgdGhlIG9wdGlvbgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBqUXVlcnkoIG9wdGlvbiApLnZh
bCgpOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBXZSBkb24ndCBuZWVkIGFuIGFycmF5IGZvciBvbmUgc2VsZWN0cwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBvbmUgKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1
ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTXVsdGkt
U2VsZWN0cyByZXR1cm4gYW4gYXJyYXkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZhbHVlcy5wdXNoKCB2YWx1ZSApOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZXM7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICB9LAotCi0gICAgICAgICAgICAgICAgICAgICAgICBzZXQ6IGZ1
bmN0aW9uKCBlbGVtLCB2YWx1ZSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmFyIHZhbHVlcyA9IGpRdWVyeS5tYWtlQXJyYXkoIHZhbHVlICk7Ci0KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgalF1ZXJ5KGVsZW0pLmZpbmQoIm9wdGlvbiIpLmVhY2goZnVuY3Rp
b24oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxl
Y3RlZCA9IGpRdWVyeS5pbkFycmF5KCBqUXVlcnkodGhpcykudmFsKCksIHZhbHVlcyApID49IDA7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwotCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICggIXZhbHVlcy5sZW5ndGggKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZWxlbS5zZWxlY3RlZEluZGV4ID0gLTE7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHZhbHVlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgIH0sCi0KLSAgICAgICAgLy8gVW51c2VkIGluIDEuOCwgbGVmdCBpbiBz
byBhdHRyRm4tc3RhYmJlcnMgd29uJ3QgZGllOyByZW1vdmUgaW4gMS45Ci0gICAgICAgIGF0dHJG
bjoge30sCi0KLSAgICAgICAgYXR0cjogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIHZhbHVlLCBwYXNz
ICkgewotICAgICAgICAgICAgICAgIHZhciByZXQsIGhvb2tzLCBub3R4bWwsCi0gICAgICAgICAg
ICAgICAgICAgICAgICBuVHlwZSA9IGVsZW0ubm9kZVR5cGU7Ci0KLSAgICAgICAgICAgICAgICAv
LyBkb24ndCBnZXQvc2V0IGF0dHJpYnV0ZXMgb24gdGV4dCwgY29tbWVudCBhbmQgYXR0cmlidXRl
IG5vZGVzCi0gICAgICAgICAgICAgICAgaWYgKCAhZWxlbSB8fCBuVHlwZSA9PT0gMyB8fCBuVHlw
ZSA9PT0gOCB8fCBuVHlwZSA9PT0gMiApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAoIHBhc3MgJiYgalF1
ZXJ5LmlzRnVuY3Rpb24oIGpRdWVyeS5mblsgbmFtZSBdICkgKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4galF1ZXJ5KCBlbGVtIClbIG5hbWUgXSggdmFsdWUgKTsKLSAgICAgICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBGYWxsYmFjayB0byBwcm9wIHdoZW4gYXR0
cmlidXRlcyBhcmUgbm90IHN1cHBvcnRlZAotICAgICAgICAgICAgICAgIGlmICggdHlwZW9mIGVs
ZW0uZ2V0QXR0cmlidXRlID09PSAidW5kZWZpbmVkIiApIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBqUXVlcnkucHJvcCggZWxlbSwgbmFtZSwgdmFsdWUgKTsKLSAgICAgICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgICAgICBub3R4bWwgPSBuVHlwZSAhPT0gMSB8fCAhalF1ZXJ5
LmlzWE1MRG9jKCBlbGVtICk7Ci0KLSAgICAgICAgICAgICAgICAvLyBBbGwgYXR0cmlidXRlcyBh
cmUgbG93ZXJjYXNlCi0gICAgICAgICAgICAgICAgLy8gR3JhYiBuZWNlc3NhcnkgaG9vayBpZiBv
bmUgaXMgZGVmaW5lZAotICAgICAgICAgICAgICAgIGlmICggbm90eG1sICkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgbmFtZSA9IG5hbWUudG9Mb3dlckNhc2UoKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGhvb2tzID0galF1ZXJ5LmF0dHJIb29rc1sgbmFtZSBdIHx8ICggcmJvb2xlYW4u
dGVzdCggbmFtZSApID8gYm9vbEhvb2sgOiBub2RlSG9vayApOwotICAgICAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgICAgIGlmICggdmFsdWUgIT09IHVuZGVmaW5lZCApIHsKLQotICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCB2YWx1ZSA9PT0gbnVsbCApIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgalF1ZXJ5LnJlbW92ZUF0dHIoIGVsZW0sIG5hbWUgKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgaWYgKCBob29rcyAmJiAic2V0IiBpbiBob29rcyAmJiBub3R4bWwgJiYgKHJl
dCA9IGhvb2tzLnNldCggZWxlbSwgdmFsdWUsIG5hbWUgKSkgIT09IHVuZGVmaW5lZCApIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKLQotICAgICAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxl
bS5zZXRBdHRyaWJ1dGUoIG5hbWUsIHZhbHVlICsgIiIgKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICAgICAgfSBlbHNlIGlmICggaG9va3MgJiYgImdldCIgaW4gaG9va3MgJiYgbm90
eG1sICYmIChyZXQgPSBob29rcy5nZXQoIGVsZW0sIG5hbWUgKSkgIT09IG51bGwgKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0OwotCi0gICAgICAgICAgICAgICAgfSBlbHNl
IHsKLQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gZWxlbS5nZXRBdHRyaWJ1dGUoIG5h
bWUgKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm9uLWV4aXN0ZW50IGF0dHJpYnV0
ZXMgcmV0dXJuIG51bGwsIHdlIG5vcm1hbGl6ZSB0byB1bmRlZmluZWQKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiByZXQgPT09IG51bGwgPwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bmRlZmluZWQgOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXQ7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICB9LAotCi0gICAgICAgIHJlbW92ZUF0dHI6IGZ1
bmN0aW9uKCBlbGVtLCB2YWx1ZSApIHsKLSAgICAgICAgICAgICAgICB2YXIgcHJvcE5hbWUsIGF0
dHJOYW1lcywgbmFtZSwgaXNCb29sLAotICAgICAgICAgICAgICAgICAgICAgICAgaSA9IDA7Ci0K
LSAgICAgICAgICAgICAgICBpZiAoIHZhbHVlICYmIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7Ci0K
LSAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJOYW1lcyA9IHZhbHVlLnNwbGl0KCBjb3JlX3Jz
cGFjZSApOwotCi0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKCA7IGkgPCBhdHRyTmFtZXMu
bGVuZ3RoOyBpKysgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSBh
dHRyTmFtZXNbIGkgXTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIG5h
bWUgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcE5hbWUg
PSBqUXVlcnkucHJvcEZpeFsgbmFtZSBdIHx8IG5hbWU7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaXNCb29sID0gcmJvb2xlYW4udGVzdCggbmFtZSApOwotCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2VlICM5Njk5IGZvciBleHBs
YW5hdGlvbiBvZiB0aGlzIGFwcHJvYWNoIChzZXR0aW5nIGZpcnN0LCB0aGVuIHJlbW92YWwpCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRG8gbm90IGRvIHRoaXMg
Zm9yIGJvb2xlYW4gYXR0cmlidXRlcyAoc2VlICMxMDg3MCkKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoICFpc0Jvb2wgKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkuYXR0ciggZWxlbSwgbmFtZSwgIiIg
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbS5yZW1vdmVBdHRyaWJ1dGUoIGdldFNl
dEF0dHJpYnV0ZSA/IG5hbWUgOiBwcm9wTmFtZSApOwotCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gU2V0IGNvcnJlc3BvbmRpbmcgcHJvcGVydHkgdG8gZmFsc2Ug
Zm9yIGJvb2xlYW4gYXR0cmlidXRlcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICggaXNCb29sICYmIHByb3BOYW1lIGluIGVsZW0gKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtWyBwcm9wTmFtZSBdID0gZmFs
c2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICB9LAotCi0gICAgICAgIGF0dHJIb29rczogewotICAgICAg
ICAgICAgICAgIHR5cGU6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNldDogZnVuY3Rpb24o
IGVsZW0sIHZhbHVlICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBj
YW4ndCBhbGxvdyB0aGUgdHlwZSBwcm9wZXJ0eSB0byBiZSBjaGFuZ2VkIChzaW5jZSBpdCBjYXVz
ZXMgcHJvYmxlbXMgaW4gSUUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgg
cnR5cGUudGVzdCggZWxlbS5ub2RlTmFtZSApICYmIGVsZW0ucGFyZW50Tm9kZSApIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkuZXJyb3IoICJ0eXBlIHBy
b3BlcnR5IGNhbid0IGJlIGNoYW5nZWQiICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0gZWxzZSBpZiAoICFqUXVlcnkuc3VwcG9ydC5yYWRpb1ZhbHVlICYmIHZhbHVlID09PSAi
cmFkaW8iICYmIGpRdWVyeS5ub2RlTmFtZShlbGVtLCAiaW5wdXQiKSApIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTZXR0aW5nIHRoZSB0eXBlIG9uIGEgcmFk
aW8gYnV0dG9uIGFmdGVyIHRoZSB2YWx1ZSByZXNldHMgdGhlIHZhbHVlIGluIElFNi05Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVzZXQgdmFsdWUgdG8gaXQn
cyBkZWZhdWx0IGluIGNhc2UgdHlwZSBpcyBzZXQgYWZ0ZXIgdmFsdWUKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGZvciBlbGVtZW50IGNyZWF0aW9u
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZhbCA9IGVsZW0u
dmFsdWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbS5zZXRB
dHRyaWJ1dGUoICJ0eXBlIiwgdmFsdWUgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoIHZhbCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGVsZW0udmFsdWUgPSB2YWw7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB2YWx1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAg
ICAgLy8gVXNlIHRoZSB2YWx1ZSBwcm9wZXJ0eSBmb3IgYmFjayBjb21wYXQKLSAgICAgICAgICAg
ICAgICAvLyBVc2UgdGhlIG5vZGVIb29rIGZvciBidXR0b24gZWxlbWVudHMgaW4gSUU2LzcgKCMx
OTU0KQotICAgICAgICAgICAgICAgIHZhbHVlOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBn
ZXQ6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoIG5vZGVIb29rICYmIGpRdWVyeS5ub2RlTmFtZSggZWxlbSwgImJ1dHRvbiIgKSAp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbm9kZUhv
b2suZ2V0KCBlbGVtLCBuYW1lICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5hbWUgaW4gZWxlbSA/Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbS52YWx1ZSA6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbDsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKCBlbGVt
LCB2YWx1ZSwgbmFtZSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBu
b2RlSG9vayAmJiBqUXVlcnkubm9kZU5hbWUoIGVsZW0sICJidXR0b24iICkgKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGVIb29rLnNldCggZWxl
bSwgdmFsdWUsIG5hbWUgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEb2VzIG5vdCByZXR1cm4gc28gdGhhdCBz
ZXRBdHRyaWJ1dGUgaXMgYWxzbyB1c2VkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVsZW0udmFsdWUgPSB2YWx1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgIH0sCi0KLSAgICAgICAgcHJvcEZpeDogewotICAgICAgICAgICAg
ICAgIHRhYmluZGV4OiAidGFiSW5kZXgiLAotICAgICAgICAgICAgICAgIHJlYWRvbmx5OiAicmVh
ZE9ubHkiLAotICAgICAgICAgICAgICAgICJmb3IiOiAiaHRtbEZvciIsCi0gICAgICAgICAgICAg
ICAgImNsYXNzIjogImNsYXNzTmFtZSIsCi0gICAgICAgICAgICAgICAgbWF4bGVuZ3RoOiAibWF4
TGVuZ3RoIiwKLSAgICAgICAgICAgICAgICBjZWxsc3BhY2luZzogImNlbGxTcGFjaW5nIiwKLSAg
ICAgICAgICAgICAgICBjZWxscGFkZGluZzogImNlbGxQYWRkaW5nIiwKLSAgICAgICAgICAgICAg
ICByb3dzcGFuOiAicm93U3BhbiIsCi0gICAgICAgICAgICAgICAgY29sc3BhbjogImNvbFNwYW4i
LAotICAgICAgICAgICAgICAgIHVzZW1hcDogInVzZU1hcCIsCi0gICAgICAgICAgICAgICAgZnJh
bWVib3JkZXI6ICJmcmFtZUJvcmRlciIsCi0gICAgICAgICAgICAgICAgY29udGVudGVkaXRhYmxl
OiAiY29udGVudEVkaXRhYmxlIgotICAgICAgICB9LAotCi0gICAgICAgIHByb3A6IGZ1bmN0aW9u
KCBlbGVtLCBuYW1lLCB2YWx1ZSApIHsKLSAgICAgICAgICAgICAgICB2YXIgcmV0LCBob29rcywg
bm90eG1sLAotICAgICAgICAgICAgICAgICAgICAgICAgblR5cGUgPSBlbGVtLm5vZGVUeXBlOwot
Ci0gICAgICAgICAgICAgICAgLy8gZG9uJ3QgZ2V0L3NldCBwcm9wZXJ0aWVzIG9uIHRleHQsIGNv
bW1lbnQgYW5kIGF0dHJpYnV0ZSBub2RlcwotICAgICAgICAgICAgICAgIGlmICggIWVsZW0gfHwg
blR5cGUgPT09IDMgfHwgblR5cGUgPT09IDggfHwgblR5cGUgPT09IDIgKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAg
ICAgbm90eG1sID0gblR5cGUgIT09IDEgfHwgIWpRdWVyeS5pc1hNTERvYyggZWxlbSApOwotCi0g
ICAgICAgICAgICAgICAgaWYgKCBub3R4bWwgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAv
LyBGaXggbmFtZSBhbmQgYXR0YWNoIGhvb2tzCi0gICAgICAgICAgICAgICAgICAgICAgICBuYW1l
ID0galF1ZXJ5LnByb3BGaXhbIG5hbWUgXSB8fCBuYW1lOwotICAgICAgICAgICAgICAgICAgICAg
ICAgaG9va3MgPSBqUXVlcnkucHJvcEhvb2tzWyBuYW1lIF07Ci0gICAgICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICAgICAgaWYgKCB2YWx1ZSAhPT0gdW5kZWZpbmVkICkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKCBob29rcyAmJiAic2V0IiBpbiBob29rcyAmJiAocmV0ID0gaG9v
a3Muc2V0KCBlbGVtLCB2YWx1ZSwgbmFtZSApKSAhPT0gdW5kZWZpbmVkICkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0OwotCi0gICAgICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKCBl
bGVtWyBuYW1lIF0gPSB2YWx1ZSApOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICggaG9va3Mg
JiYgImdldCIgaW4gaG9va3MgJiYgKHJldCA9IGhvb2tzLmdldCggZWxlbSwgbmFtZSApKSAhPT0g
bnVsbCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKLQot
ICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGVsZW1bIG5hbWUgXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgIH0sCi0KLSAgICAgICAgcHJvcEhvb2tzOiB7Ci0g
ICAgICAgICAgICAgICAgdGFiSW5kZXg6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGdldDog
ZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVs
ZW0udGFiSW5kZXggZG9lc24ndCBhbHdheXMgcmV0dXJuIHRoZSBjb3JyZWN0IHZhbHVlIHdoZW4g
aXQgaGFzbid0IGJlZW4gZXhwbGljaXRseSBzZXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gaHR0cDovL2ZsdWlkcHJvamVjdC5vcmcvYmxvZy8yMDA4LzAxLzA5L2dldHRpbmct
c2V0dGluZy1hbmQtcmVtb3ZpbmctdGFiaW5kZXgtdmFsdWVzLXdpdGgtamF2YXNjcmlwdC8KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF0dHJpYnV0ZU5vZGUgPSBlbGVtLmdl
dEF0dHJpYnV0ZU5vZGUoInRhYmluZGV4Iik7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGF0dHJpYnV0ZU5vZGUgJiYgYXR0cmlidXRlTm9kZS5zcGVjaWZpZWQgPwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlSW50KCBhdHRyaWJ1
dGVOb2RlLnZhbHVlLCAxMCApIDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZm9jdXNhYmxlLnRlc3QoIGVsZW0ubm9kZU5hbWUgKSB8fCByY2xpY2thYmxlLnRlc3Qo
IGVsZW0ubm9kZU5hbWUgKSAmJiBlbGVtLmhyZWYgPwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMCA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICB9Ci19KTsKLQotLy8gSG9vayBmb3IgYm9vbGVh
biBhdHRyaWJ1dGVzCi1ib29sSG9vayA9IHsKLSAgICAgICAgZ2V0OiBmdW5jdGlvbiggZWxlbSwg
bmFtZSApIHsKLSAgICAgICAgICAgICAgICAvLyBBbGlnbiBib29sZWFuIGF0dHJpYnV0ZXMgd2l0
aCBjb3JyZXNwb25kaW5nIHByb3BlcnRpZXMKLSAgICAgICAgICAgICAgICAvLyBGYWxsIGJhY2sg
dG8gYXR0cmlidXRlIHByZXNlbmNlIHdoZXJlIHNvbWUgYm9vbGVhbnMgYXJlIG5vdCBzdXBwb3J0
ZWQKLSAgICAgICAgICAgICAgICB2YXIgYXR0ck5vZGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICBwcm9wZXJ0eSA9IGpRdWVyeS5wcm9wKCBlbGVtLCBuYW1lICk7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIHByb3BlcnR5ID09PSB0cnVlIHx8IHR5cGVvZiBwcm9wZXJ0eSAhPT0gImJvb2xlYW4i
ICYmICggYXR0ck5vZGUgPSBlbGVtLmdldEF0dHJpYnV0ZU5vZGUobmFtZSkgKSAmJiBhdHRyTm9k
ZS5ub2RlVmFsdWUgIT09IGZhbHNlID8KLSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUudG9M
b3dlckNhc2UoKSA6Ci0gICAgICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWQ7Ci0gICAgICAg
IH0sCi0gICAgICAgIHNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlLCBuYW1lICkgewotICAgICAg
ICAgICAgICAgIHZhciBwcm9wTmFtZTsKLSAgICAgICAgICAgICAgICBpZiAoIHZhbHVlID09PSBm
YWxzZSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlbW92ZSBib29sZWFuIGF0dHJp
YnV0ZXMgd2hlbiBzZXQgdG8gZmFsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5y
ZW1vdmVBdHRyKCBlbGVtLCBuYW1lICk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlIGlzIHRydWUgc2luY2Ugd2Uga25vdyBhdCB0aGlz
IHBvaW50IGl0J3MgdHlwZSBib29sZWFuIGFuZCBub3QgZmFsc2UKLSAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIFNldCBib29sZWFuIGF0dHJpYnV0ZXMgdG8gdGhlIHNhbWUgbmFtZSBhbmQgc2V0
IHRoZSBET00gcHJvcGVydHkKLSAgICAgICAgICAgICAgICAgICAgICAgIHByb3BOYW1lID0galF1
ZXJ5LnByb3BGaXhbIG5hbWUgXSB8fCBuYW1lOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCBwcm9wTmFtZSBpbiBlbGVtICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBPbmx5IHNldCB0aGUgSURMIHNwZWNpZmljYWxseSBpZiBpdCBhbHJlYWR5IGV4aXN0cyBvbiB0
aGUgZWxlbWVudAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtWyBwcm9wTmFt
ZSBdID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAg
ICAgICAgICAgZWxlbS5zZXRBdHRyaWJ1dGUoIG5hbWUsIG5hbWUudG9Mb3dlckNhc2UoKSApOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gbmFtZTsKLSAgICAgICAg
fQotfTsKLQotLy8gSUU2LzcgZG8gbm90IHN1cHBvcnQgZ2V0dGluZy9zZXR0aW5nIHNvbWUgYXR0
cmlidXRlcyB3aXRoIGdldC9zZXRBdHRyaWJ1dGUKLWlmICggIWdldFNldEF0dHJpYnV0ZSApIHsK
LQotICAgICAgICBmaXhTcGVjaWZpZWQgPSB7Ci0gICAgICAgICAgICAgICAgbmFtZTogdHJ1ZSwK
LSAgICAgICAgICAgICAgICBpZDogdHJ1ZSwKLSAgICAgICAgICAgICAgICBjb29yZHM6IHRydWUK
LSAgICAgICAgfTsKLQotICAgICAgICAvLyBVc2UgdGhpcyBmb3IgYW55IGF0dHJpYnV0ZSBpbiBJ
RTYvNwotICAgICAgICAvLyBUaGlzIGZpeGVzIGFsbW9zdCBldmVyeSBJRTYvNyBpc3N1ZQotICAg
ICAgICBub2RlSG9vayA9IGpRdWVyeS52YWxIb29rcy5idXR0b24gPSB7Ci0gICAgICAgICAgICAg
ICAgZ2V0OiBmdW5jdGlvbiggZWxlbSwgbmFtZSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHZhciByZXQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXQgPSBlbGVtLmdldEF0dHJpYnV0
ZU5vZGUoIG5hbWUgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQgJiYgKCBm
aXhTcGVjaWZpZWRbIG5hbWUgXSA/IHJldC52YWx1ZSAhPT0gIiIgOiByZXQuc3BlY2lmaWVkICkg
PwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXQudmFsdWUgOgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWQ7Ci0gICAgICAgICAgICAgICAgfSwKLSAg
ICAgICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSwgbmFtZSApIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIFNldCB0aGUgZXhpc3Rpbmcgb3IgY3JlYXRlIGEgbmV3IGF0
dHJpYnV0ZSBub2RlCi0gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmV0ID0gZWxlbS5nZXRB
dHRyaWJ1dGVOb2RlKCBuYW1lICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoICFyZXQg
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IGRvY3VtZW50LmNyZWF0
ZUF0dHJpYnV0ZSggbmFtZSApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVt
LnNldEF0dHJpYnV0ZU5vZGUoIHJldCApOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICggcmV0LnZhbHVlID0gdmFsdWUgKyAiIiApOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLQotICAgICAgICAvLyBTZXQgd2lkdGggYW5k
IGhlaWdodCB0byBhdXRvIGluc3RlYWQgb2YgMCBvbiBlbXB0eSBzdHJpbmcoIEJ1ZyAjODE1MCAp
Ci0gICAgICAgIC8vIFRoaXMgaXMgZm9yIHJlbW92YWxzCi0gICAgICAgIGpRdWVyeS5lYWNoKFsg
IndpZHRoIiwgImhlaWdodCIgXSwgZnVuY3Rpb24oIGksIG5hbWUgKSB7Ci0gICAgICAgICAgICAg
ICAgalF1ZXJ5LmF0dHJIb29rc1sgbmFtZSBdID0galF1ZXJ5LmV4dGVuZCggalF1ZXJ5LmF0dHJI
b29rc1sgbmFtZSBdLCB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKCBl
bGVtLCB2YWx1ZSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCB2YWx1
ZSA9PT0gIiIgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxl
bS5zZXRBdHRyaWJ1dGUoIG5hbWUsICJhdXRvIiApOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0pOwot
ICAgICAgICB9KTsKLQotICAgICAgICAvLyBTZXQgY29udGVudGVkaXRhYmxlIHRvIGZhbHNlIG9u
IHJlbW92YWxzKCMxMDQyOSkKLSAgICAgICAgLy8gU2V0dGluZyB0byBlbXB0eSBzdHJpbmcgdGhy
b3dzIGFuIGVycm9yIGFzIGFuIGludmFsaWQgdmFsdWUKLSAgICAgICAgalF1ZXJ5LmF0dHJIb29r
cy5jb250ZW50ZWRpdGFibGUgPSB7Ci0gICAgICAgICAgICAgICAgZ2V0OiBub2RlSG9vay5nZXQs
Ci0gICAgICAgICAgICAgICAgc2V0OiBmdW5jdGlvbiggZWxlbSwgdmFsdWUsIG5hbWUgKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHZhbHVlID09PSAiIiApIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSAiZmFsc2UiOwotICAgICAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZUhvb2suc2V0KCBlbGVtLCB2YWx1
ZSwgbmFtZSApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLX0KLQotCi0vLyBTb21l
IGF0dHJpYnV0ZXMgcmVxdWlyZSBhIHNwZWNpYWwgY2FsbCBvbiBJRQotaWYgKCAhalF1ZXJ5LnN1
cHBvcnQuaHJlZk5vcm1hbGl6ZWQgKSB7Ci0gICAgICAgIGpRdWVyeS5lYWNoKFsgImhyZWYiLCAi
c3JjIiwgIndpZHRoIiwgImhlaWdodCIgXSwgZnVuY3Rpb24oIGksIG5hbWUgKSB7Ci0gICAgICAg
ICAgICAgICAgalF1ZXJ5LmF0dHJIb29rc1sgbmFtZSBdID0galF1ZXJ5LmV4dGVuZCggalF1ZXJ5
LmF0dHJIb29rc1sgbmFtZSBdLCB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0
aW9uKCBlbGVtICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmV0ID0g
ZWxlbS5nZXRBdHRyaWJ1dGUoIG5hbWUsIDIgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHJldCA9PT0gbnVsbCA/IHVuZGVmaW5lZCA6IHJldDsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci19Ci0KLWlm
ICggIWpRdWVyeS5zdXBwb3J0LnN0eWxlICkgewotICAgICAgICBqUXVlcnkuYXR0ckhvb2tzLnN0
eWxlID0gewotICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAvLyBSZXR1cm4gdW5kZWZpbmVkIGluIHRoZSBjYXNlIG9mIGVtcHR5
IHN0cmluZwotICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm9ybWFsaXplIHRvIGxvd2VyY2Fz
ZSBzaW5jZSBJRSB1cHBlcmNhc2VzIGNzcyBwcm9wZXJ0eSBuYW1lcwotICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGVsZW0uc3R5bGUuY3NzVGV4dC50b0xvd2VyQ2FzZSgpIHx8IHVuZGVm
aW5lZDsKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHNldDogZnVuY3Rpb24o
IGVsZW0sIHZhbHVlICkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICggZWxlbS5z
dHlsZS5jc3NUZXh0ID0gdmFsdWUgKyAiIiApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
fTsKLX0KLQotLy8gU2FmYXJpIG1pcy1yZXBvcnRzIHRoZSBkZWZhdWx0IHNlbGVjdGVkIHByb3Bl
cnR5IG9mIGFuIG9wdGlvbgotLy8gQWNjZXNzaW5nIHRoZSBwYXJlbnQncyBzZWxlY3RlZEluZGV4
IHByb3BlcnR5IGZpeGVzIGl0Ci1pZiAoICFqUXVlcnkuc3VwcG9ydC5vcHRTZWxlY3RlZCApIHsK
LSAgICAgICAgalF1ZXJ5LnByb3BIb29rcy5zZWxlY3RlZCA9IGpRdWVyeS5leHRlbmQoIGpRdWVy
eS5wcm9wSG9va3Muc2VsZWN0ZWQsIHsKLSAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCBl
bGVtICkgewotICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBhcmVudCA9IGVsZW0ucGFyZW50
Tm9kZTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBwYXJlbnQgKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5zZWxlY3RlZEluZGV4OwotCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IGl0IGFsc28gd29ya3Mg
d2l0aCBvcHRncm91cHMsIHNlZSAjNTcwMQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoIHBhcmVudC5wYXJlbnROb2RlICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBhcmVudC5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXg7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgfSk7Ci19Ci0KLS8vIElFNi83IGNhbGwgZW5jdHlwZSBlbmNvZGluZwotaWYgKCAhalF1ZXJ5
LnN1cHBvcnQuZW5jdHlwZSApIHsKLSAgICAgICAgalF1ZXJ5LnByb3BGaXguZW5jdHlwZSA9ICJl
bmNvZGluZyI7Ci19Ci0KLS8vIFJhZGlvcyBhbmQgY2hlY2tib3hlcyBnZXR0ZXIvc2V0dGVyCi1p
ZiAoICFqUXVlcnkuc3VwcG9ydC5jaGVja09uICkgewotICAgICAgICBqUXVlcnkuZWFjaChbICJy
YWRpbyIsICJjaGVja2JveCIgXSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgalF1ZXJ5
LnZhbEhvb2tzWyB0aGlzIF0gPSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0
aW9uKCBlbGVtICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBIYW5kbGUg
dGhlIGNhc2Ugd2hlcmUgaW4gV2Via2l0ICIiIGlzIHJldHVybmVkIGluc3RlYWQgb2YgIm9uIiBp
ZiBhIHZhbHVlIGlzbid0IHNwZWNpZmllZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZWxlbS5nZXRBdHRyaWJ1dGUoInZhbHVlIikgPT09IG51bGwgPyAib24iIDogZWxl
bS52YWx1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Owot
ICAgICAgICB9KTsKLX0KLWpRdWVyeS5lYWNoKFsgInJhZGlvIiwgImNoZWNrYm94IiBdLCBmdW5j
dGlvbigpIHsKLSAgICAgICAgalF1ZXJ5LnZhbEhvb2tzWyB0aGlzIF0gPSBqUXVlcnkuZXh0ZW5k
KCBqUXVlcnkudmFsSG9va3NbIHRoaXMgXSwgewotICAgICAgICAgICAgICAgIHNldDogZnVuY3Rp
b24oIGVsZW0sIHZhbHVlICkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBqUXVlcnku
aXNBcnJheSggdmFsdWUgKSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuICggZWxlbS5jaGVja2VkID0galF1ZXJ5LmluQXJyYXkoIGpRdWVyeShlbGVtKS52YWwoKSwg
dmFsdWUgKSA+PSAwICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICB9KTsKLX0pOwotdmFyIHJmb3JtRWxlbXMgPSAvXig/OnRleHRhcmVhfGlu
cHV0fHNlbGVjdCkkL2ksCi0gICAgICAgIHJ0eXBlbmFtZXNwYWNlID0gL14oW15cLl0qfCkoPzpc
LiguKyl8KSQvLAotICAgICAgICByaG92ZXJIYWNrID0gLyg/Ol58XHMpaG92ZXIoXC5cUyt8KVxi
LywKLSAgICAgICAgcmtleUV2ZW50ID0gL15rZXkvLAotICAgICAgICBybW91c2VFdmVudCA9IC9e
KD86bW91c2V8Y29udGV4dG1lbnUpfGNsaWNrLywKLSAgICAgICAgcmZvY3VzTW9ycGggPSAvXig/
OmZvY3VzaW5mb2N1c3xmb2N1c291dGJsdXIpJC8sCi0gICAgICAgIGhvdmVySGFjayA9IGZ1bmN0
aW9uKCBldmVudHMgKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGpRdWVyeS5ldmVudC5zcGVj
aWFsLmhvdmVyID8gZXZlbnRzIDogZXZlbnRzLnJlcGxhY2UoIHJob3ZlckhhY2ssICJtb3VzZWVu
dGVyJDEgbW91c2VsZWF2ZSQxIiApOwotICAgICAgICB9OwotCi0vKgotICogSGVscGVyIGZ1bmN0
aW9ucyBmb3IgbWFuYWdpbmcgZXZlbnRzIC0tIG5vdCBwYXJ0IG9mIHRoZSBwdWJsaWMgaW50ZXJm
YWNlLgotICogUHJvcHMgdG8gRGVhbiBFZHdhcmRzJyBhZGRFdmVudCBsaWJyYXJ5IGZvciBtYW55
IG9mIHRoZSBpZGVhcy4KLSAqLwotalF1ZXJ5LmV2ZW50ID0gewotCi0gICAgICAgIGFkZDogZnVu
Y3Rpb24oIGVsZW0sIHR5cGVzLCBoYW5kbGVyLCBkYXRhLCBzZWxlY3RvciApIHsKLQotICAgICAg
ICAgICAgICAgIHZhciBlbGVtRGF0YSwgZXZlbnRIYW5kbGUsIGV2ZW50cywKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHQsIHRucywgdHlwZSwgbmFtZXNwYWNlcywgaGFuZGxlT2JqLAotICAgICAg
ICAgICAgICAgICAgICAgICAgaGFuZGxlT2JqSW4sIGhhbmRsZXJzLCBzcGVjaWFsOwotCi0gICAg
ICAgICAgICAgICAgLy8gRG9uJ3QgYXR0YWNoIGV2ZW50cyB0byBub0RhdGEgb3IgdGV4dC9jb21t
ZW50IG5vZGVzIChhbGxvdyBwbGFpbiBvYmplY3RzIHRobykKLSAgICAgICAgICAgICAgICBpZiAo
IGVsZW0ubm9kZVR5cGUgPT09IDMgfHwgZWxlbS5ub2RlVHlwZSA9PT0gOCB8fCAhdHlwZXMgfHwg
IWhhbmRsZXIgfHwgIShlbGVtRGF0YSA9IGpRdWVyeS5fZGF0YSggZWxlbSApKSApIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgICAgICAvLyBDYWxsZXIgY2FuIHBhc3MgaW4gYW4gb2JqZWN0IG9mIGN1c3RvbSBkYXRhIGlu
IGxpZXUgb2YgdGhlIGhhbmRsZXIKLSAgICAgICAgICAgICAgICBpZiAoIGhhbmRsZXIuaGFuZGxl
ciApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZU9iakluID0gaGFuZGxlcjsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXIgPSBoYW5kbGVPYmpJbi5oYW5kbGVyOwotICAg
ICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3IgPSBoYW5kbGVPYmpJbi5zZWxlY3RvcjsKLSAg
ICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUg
aGFuZGxlciBoYXMgYSB1bmlxdWUgSUQsIHVzZWQgdG8gZmluZC9yZW1vdmUgaXQgbGF0ZXIKLSAg
ICAgICAgICAgICAgICBpZiAoICFoYW5kbGVyLmd1aWQgKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBoYW5kbGVyLmd1aWQgPSBqUXVlcnkuZ3VpZCsrOwotICAgICAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgICAgIC8vIEluaXQgdGhlIGVsZW1lbnQncyBldmVudCBzdHJ1Y3R1cmUgYW5k
IG1haW4gaGFuZGxlciwgaWYgdGhpcyBpcyB0aGUgZmlyc3QKLSAgICAgICAgICAgICAgICBldmVu
dHMgPSBlbGVtRGF0YS5ldmVudHM7Ci0gICAgICAgICAgICAgICAgaWYgKCAhZXZlbnRzICkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgZWxlbURhdGEuZXZlbnRzID0gZXZlbnRzID0ge307Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGV2ZW50SGFuZGxlID0gZWxlbURhdGEu
aGFuZGxlOwotICAgICAgICAgICAgICAgIGlmICggIWV2ZW50SGFuZGxlICkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgZWxlbURhdGEuaGFuZGxlID0gZXZlbnRIYW5kbGUgPSBmdW5jdGlvbigg
ZSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGlzY2FyZCB0aGUgc2Vj
b25kIGV2ZW50IG9mIGEgalF1ZXJ5LmV2ZW50LnRyaWdnZXIoKSBhbmQKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gd2hlbiBhbiBldmVudCBpcyBjYWxsZWQgYWZ0ZXIgYSBwYWdl
IGhhcyB1bmxvYWRlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHlw
ZW9mIGpRdWVyeSAhPT0gInVuZGVmaW5lZCIgJiYgKCFlIHx8IGpRdWVyeS5ldmVudC50cmlnZ2Vy
ZWQgIT09IGUudHlwZSkgPwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGpRdWVyeS5ldmVudC5kaXNwYXRjaC5hcHBseSggZXZlbnRIYW5kbGUuZWxlbSwgYXJndW1lbnRz
ICkgOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZDsK
LSAgICAgICAgICAgICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBB
ZGQgZWxlbSBhcyBhIHByb3BlcnR5IG9mIHRoZSBoYW5kbGUgZm4gdG8gcHJldmVudCBhIG1lbW9y
eSBsZWFrIHdpdGggSUUgbm9uLW5hdGl2ZSBldmVudHMKLSAgICAgICAgICAgICAgICAgICAgICAg
IGV2ZW50SGFuZGxlLmVsZW0gPSBlbGVtOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgICAgIC8vIEhhbmRsZSBtdWx0aXBsZSBldmVudHMgc2VwYXJhdGVkIGJ5IGEgc3BhY2UKLSAg
ICAgICAgICAgICAgICAvLyBqUXVlcnkoLi4uKS5iaW5kKCJtb3VzZW92ZXIgbW91c2VvdXQiLCBm
bik7Ci0gICAgICAgICAgICAgICAgdHlwZXMgPSBqUXVlcnkudHJpbSggaG92ZXJIYWNrKHR5cGVz
KSApLnNwbGl0KCAiICIgKTsKLSAgICAgICAgICAgICAgICBmb3IgKCB0ID0gMDsgdCA8IHR5cGVz
Lmxlbmd0aDsgdCsrICkgewotCi0gICAgICAgICAgICAgICAgICAgICAgICB0bnMgPSBydHlwZW5h
bWVzcGFjZS5leGVjKCB0eXBlc1t0XSApIHx8IFtdOwotICAgICAgICAgICAgICAgICAgICAgICAg
dHlwZSA9IHRuc1sxXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVzcGFjZXMgPSAoIHRu
c1syXSB8fCAiIiApLnNwbGl0KCAiLiIgKS5zb3J0KCk7Ci0KLSAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIElmIGV2ZW50IGNoYW5nZXMgaXRzIHR5cGUsIHVzZSB0aGUgc3BlY2lhbCBldmVudCBo
YW5kbGVycyBmb3IgdGhlIGNoYW5nZWQgdHlwZQotICAgICAgICAgICAgICAgICAgICAgICAgc3Bl
Y2lhbCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsWyB0eXBlIF0gfHwge307Ci0KLSAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIElmIHNlbGVjdG9yIGRlZmluZWQsIGRldGVybWluZSBzcGVjaWFsIGV2
ZW50IGFwaSB0eXBlLCBvdGhlcndpc2UgZ2l2ZW4gdHlwZQotICAgICAgICAgICAgICAgICAgICAg
ICAgdHlwZSA9ICggc2VsZWN0b3IgPyBzcGVjaWFsLmRlbGVnYXRlVHlwZSA6IHNwZWNpYWwuYmlu
ZFR5cGUgKSB8fCB0eXBlOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBVcGRhdGUgc3Bl
Y2lhbCBiYXNlZCBvbiBuZXdseSByZXNldCB0eXBlCi0gICAgICAgICAgICAgICAgICAgICAgICBz
cGVjaWFsID0galF1ZXJ5LmV2ZW50LnNwZWNpYWxbIHR5cGUgXSB8fCB7fTsKLQotICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gaGFuZGxlT2JqIGlzIHBhc3NlZCB0byBhbGwgZXZlbnQgaGFuZGxl
cnMKLSAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZU9iaiA9IGpRdWVyeS5leHRlbmQoewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiB0eXBlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvcmlnVHlwZTogdG5zWzFdLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkYXRhOiBkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBoYW5kbGVyOiBoYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWlk
OiBoYW5kbGVyLmd1aWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9y
OiBzZWxlY3RvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmVlZHNDb250ZXh0
OiBzZWxlY3RvciAmJiBqUXVlcnkuZXhwci5tYXRjaC5uZWVkc0NvbnRleHQudGVzdCggc2VsZWN0
b3IgKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZXNwYWNlOiBuYW1lc3Bh
Y2VzLmpvaW4oIi4iKQotICAgICAgICAgICAgICAgICAgICAgICAgfSwgaGFuZGxlT2JqSW4gKTsK
LQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gSW5pdCB0aGUgZXZlbnQgaGFuZGxlciBxdWV1
ZSBpZiB3ZSdyZSB0aGUgZmlyc3QKLSAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXJzID0g
ZXZlbnRzWyB0eXBlIF07Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoICFoYW5kbGVycyAp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcnMgPSBldmVudHNbIHR5
cGUgXSA9IFtdOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVycy5kZWxl
Z2F0ZUNvdW50ID0gMDsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBPbmx5
IHVzZSBhZGRFdmVudExpc3RlbmVyL2F0dGFjaEV2ZW50IGlmIHRoZSBzcGVjaWFsIGV2ZW50cyBo
YW5kbGVyIHJldHVybnMgZmFsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCAhc3BlY2lhbC5zZXR1cCB8fCBzcGVjaWFsLnNldHVwLmNhbGwoIGVsZW0sIGRhdGEsIG5hbWVz
cGFjZXMsIGV2ZW50SGFuZGxlICkgPT09IGZhbHNlICkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIEJpbmQgdGhlIGdsb2JhbCBldmVudCBoYW5kbGVyIHRvIHRo
ZSBlbGVtZW50Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBl
bGVtLmFkZEV2ZW50TGlzdGVuZXIgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBlbGVtLmFkZEV2ZW50TGlzdGVuZXIoIHR5cGUsIGV2ZW50SGFuZGxl
LCBmYWxzZSApOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBl
bHNlIGlmICggZWxlbS5hdHRhY2hFdmVudCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGVsZW0uYXR0YWNoRXZlbnQoICJvbiIgKyB0eXBlLCBldmVu
dEhhbmRsZSApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHNwZWNpYWwuYWRkICkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWFsLmFkZC5jYWxsKCBlbGVtLCBoYW5kbGVP
YmogKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICFoYW5kbGVPYmou
aGFuZGxlci5ndWlkICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGhhbmRsZU9iai5oYW5kbGVyLmd1aWQgPSBoYW5kbGVyLmd1aWQ7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gQWRkIHRvIHRoZSBlbGVtZW50J3MgaGFuZGxlciBsaXN0LCBkZWxl
Z2F0ZXMgaW4gZnJvbnQKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICggc2VsZWN0b3IgKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXJzLnNwbGljZSggaGFuZGxl
cnMuZGVsZWdhdGVDb3VudCsrLCAwLCBoYW5kbGVPYmogKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXJzLnB1
c2goIGhhbmRsZU9iaiApOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICAgICAgICAgICAgICAvLyBLZWVwIHRyYWNrIG9mIHdoaWNoIGV2ZW50cyBoYXZlIGV2ZXIgYmVl
biB1c2VkLCBmb3IgZXZlbnQgb3B0aW1pemF0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICBq
UXVlcnkuZXZlbnQuZ2xvYmFsWyB0eXBlIF0gPSB0cnVlOwotICAgICAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgICAgIC8vIE51bGxpZnkgZWxlbSB0byBwcmV2ZW50IG1lbW9yeSBsZWFrcyBp
biBJRQotICAgICAgICAgICAgICAgIGVsZW0gPSBudWxsOwotICAgICAgICB9LAotCi0gICAgICAg
IGdsb2JhbDoge30sCi0KLSAgICAgICAgLy8gRGV0YWNoIGFuIGV2ZW50IG9yIHNldCBvZiBldmVu
dHMgZnJvbSBhbiBlbGVtZW50Ci0gICAgICAgIHJlbW92ZTogZnVuY3Rpb24oIGVsZW0sIHR5cGVz
LCBoYW5kbGVyLCBzZWxlY3RvciwgbWFwcGVkVHlwZXMgKSB7Ci0KLSAgICAgICAgICAgICAgICB2
YXIgdCwgdG5zLCB0eXBlLCBvcmlnVHlwZSwgbmFtZXNwYWNlcywgb3JpZ0NvdW50LAotICAgICAg
ICAgICAgICAgICAgICAgICAgaiwgZXZlbnRzLCBzcGVjaWFsLCBldmVudFR5cGUsIGhhbmRsZU9i
aiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1EYXRhID0galF1ZXJ5Lmhhc0RhdGEoIGVs
ZW0gKSAmJiBqUXVlcnkuX2RhdGEoIGVsZW0gKTsKLQotICAgICAgICAgICAgICAgIGlmICggIWVs
ZW1EYXRhIHx8ICEoZXZlbnRzID0gZWxlbURhdGEuZXZlbnRzKSApIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAv
LyBPbmNlIGZvciBlYWNoIHR5cGUubmFtZXNwYWNlIGluIHR5cGVzOyB0eXBlIG1heSBiZSBvbWl0
dGVkCi0gICAgICAgICAgICAgICAgdHlwZXMgPSBqUXVlcnkudHJpbSggaG92ZXJIYWNrKCB0eXBl
cyB8fCAiIiApICkuc3BsaXQoIiAiKTsKLSAgICAgICAgICAgICAgICBmb3IgKCB0ID0gMDsgdCA8
IHR5cGVzLmxlbmd0aDsgdCsrICkgewotICAgICAgICAgICAgICAgICAgICAgICAgdG5zID0gcnR5
cGVuYW1lc3BhY2UuZXhlYyggdHlwZXNbdF0gKSB8fCBbXTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHR5cGUgPSBvcmlnVHlwZSA9IHRuc1sxXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5h
bWVzcGFjZXMgPSB0bnNbMl07Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFVuYmluZCBh
bGwgZXZlbnRzIChvbiB0aGlzIG5hbWVzcGFjZSwgaWYgcHJvdmlkZWQpIGZvciB0aGUgZWxlbWVu
dAotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhdHlwZSApIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZm9yICggdHlwZSBpbiBldmVudHMgKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmV2ZW50LnJlbW92ZSggZWxlbSwgdHlw
ZSArIHR5cGVzWyB0IF0sIGhhbmRsZXIsIHNlbGVjdG9yLCB0cnVlICk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
dGludWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAg
ICAgIHNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgdHlwZSBdIHx8IHt9OwotICAgICAg
ICAgICAgICAgICAgICAgICAgdHlwZSA9ICggc2VsZWN0b3I/IHNwZWNpYWwuZGVsZWdhdGVUeXBl
IDogc3BlY2lhbC5iaW5kVHlwZSApIHx8IHR5cGU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBl
dmVudFR5cGUgPSBldmVudHNbIHR5cGUgXSB8fCBbXTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IG9yaWdDb3VudCA9IGV2ZW50VHlwZS5sZW5ndGg7Ci0gICAgICAgICAgICAgICAgICAgICAgICBu
YW1lc3BhY2VzID0gbmFtZXNwYWNlcyA/IG5ldyBSZWdFeHAoIihefFxcLikiICsgbmFtZXNwYWNl
cy5zcGxpdCgiLiIpLnNvcnQoKS5qb2luKCJcXC4oPzouKlxcLnwpIikgKyAiKFxcLnwkKSIpIDog
bnVsbDsKLQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIG1hdGNoaW5nIGV2ZW50
cwotICAgICAgICAgICAgICAgICAgICAgICAgZm9yICggaiA9IDA7IGogPCBldmVudFR5cGUubGVu
Z3RoOyBqKysgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZU9iaiA9
IGV2ZW50VHlwZVsgaiBdOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgg
KCBtYXBwZWRUeXBlcyB8fCBvcmlnVHlwZSA9PT0gaGFuZGxlT2JqLm9yaWdUeXBlICkgJiYKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAhaGFuZGxlciB8fCBoYW5k
bGVyLmd1aWQgPT09IGhhbmRsZU9iai5ndWlkICkgJiYKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKCAhbmFtZXNwYWNlcyB8fCBuYW1lc3BhY2VzLnRlc3QoIGhhbmRs
ZU9iai5uYW1lc3BhY2UgKSApICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICggIXNlbGVjdG9yIHx8IHNlbGVjdG9yID09PSBoYW5kbGVPYmouc2VsZWN0b3IgfHwg
c2VsZWN0b3IgPT09ICIqKiIgJiYgaGFuZGxlT2JqLnNlbGVjdG9yICkgKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRUeXBlLnNwbGljZSggai0tLCAxICk7
Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGhhbmRsZU9i
ai5zZWxlY3RvciApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGV2ZW50VHlwZS5kZWxlZ2F0ZUNvdW50LS07Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICggc3BlY2lhbC5yZW1vdmUgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzcGVjaWFsLnJlbW92ZS5jYWxsKCBlbGVtLCBoYW5kbGVPYmog
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIGdlbmVyaWMgZXZlbnQgaGFuZGxlciBpZiB3
ZSByZW1vdmVkIHNvbWV0aGluZyBhbmQgbm8gbW9yZSBoYW5kbGVycyBleGlzdAotICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gKGF2b2lkcyBwb3RlbnRpYWwgZm9yIGVuZGxlc3MgcmVjdXJzaW9u
IGR1cmluZyByZW1vdmFsIG9mIHNwZWNpYWwgZXZlbnQgaGFuZGxlcnMpCi0gICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoIGV2ZW50VHlwZS5sZW5ndGggPT09IDAgJiYgb3JpZ0NvdW50ICE9PSBl
dmVudFR5cGUubGVuZ3RoICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
ICFzcGVjaWFsLnRlYXJkb3duIHx8IHNwZWNpYWwudGVhcmRvd24uY2FsbCggZWxlbSwgbmFtZXNw
YWNlcywgZWxlbURhdGEuaGFuZGxlICkgPT09IGZhbHNlICkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5yZW1vdmVFdmVudCggZWxlbSwgdHlwZSwgZWxl
bURhdGEuaGFuZGxlICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgZXZlbnRzWyB0eXBlIF07Ci0gICAg
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAg
ICAgLy8gUmVtb3ZlIHRoZSBleHBhbmRvIGlmIGl0J3Mgbm8gbG9uZ2VyIHVzZWQKLSAgICAgICAg
ICAgICAgICBpZiAoIGpRdWVyeS5pc0VtcHR5T2JqZWN0KCBldmVudHMgKSApIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGRlbGV0ZSBlbGVtRGF0YS5oYW5kbGU7Ci0KLSAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIHJlbW92ZURhdGEgYWxzbyBjaGVja3MgZm9yIGVtcHRpbmVzcyBhbmQgY2xl
YXJzIHRoZSBleHBhbmRvIGlmIGVtcHR5Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBzbyB1
c2UgaXQgaW5zdGVhZCBvZiBkZWxldGUKLSAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5y
ZW1vdmVEYXRhKCBlbGVtLCAiZXZlbnRzIiwgdHJ1ZSApOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgfSwKLQotICAgICAgICAvLyBFdmVudHMgdGhhdCBhcmUgc2FmZSB0byBzaG9ydC1jaXJj
dWl0IGlmIG5vIGhhbmRsZXJzIGFyZSBhdHRhY2hlZC4KLSAgICAgICAgLy8gTmF0aXZlIERPTSBl
dmVudHMgc2hvdWxkIG5vdCBiZSBhZGRlZCwgdGhleSBtYXkgaGF2ZSBpbmxpbmUgaGFuZGxlcnMu
Ci0gICAgICAgIGN1c3RvbUV2ZW50OiB7Ci0gICAgICAgICAgICAgICAgImdldERhdGEiOiB0cnVl
LAotICAgICAgICAgICAgICAgICJzZXREYXRhIjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAiY2hh
bmdlRGF0YSI6IHRydWUKLSAgICAgICAgfSwKLQotICAgICAgICB0cmlnZ2VyOiBmdW5jdGlvbigg
ZXZlbnQsIGRhdGEsIGVsZW0sIG9ubHlIYW5kbGVycyApIHsKLSAgICAgICAgICAgICAgICAvLyBE
b24ndCBkbyBldmVudHMgb24gdGV4dCBhbmQgY29tbWVudCBub2RlcwotICAgICAgICAgICAgICAg
IGlmICggZWxlbSAmJiAoZWxlbS5ub2RlVHlwZSA9PT0gMyB8fCBlbGVtLm5vZGVUeXBlID09PSA4
KSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgICAgICAvLyBFdmVudCBvYmplY3Qgb3IgZXZlbnQgdHlwZQotICAgICAg
ICAgICAgICAgIHZhciBjYWNoZSwgZXhjbHVzaXZlLCBpLCBjdXIsIG9sZCwgb250eXBlLCBzcGVj
aWFsLCBoYW5kbGUsIGV2ZW50UGF0aCwgYnViYmxlVHlwZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHR5cGUgPSBldmVudC50eXBlIHx8IGV2ZW50LAotICAgICAgICAgICAgICAgICAgICAgICAg
bmFtZXNwYWNlcyA9IFtdOwotCi0gICAgICAgICAgICAgICAgLy8gZm9jdXMvYmx1ciBtb3JwaHMg
dG8gZm9jdXNpbi9vdXQ7IGVuc3VyZSB3ZSdyZSBub3QgZmlyaW5nIHRoZW0gcmlnaHQgbm93Ci0g
ICAgICAgICAgICAgICAgaWYgKCByZm9jdXNNb3JwaC50ZXN0KCB0eXBlICsgalF1ZXJ5LmV2ZW50
LnRyaWdnZXJlZCApICkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmICggdHlwZS5pbmRleE9mKCAiISIgKSA+
PSAwICkgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gRXhjbHVzaXZlIGV2ZW50cyB0cmln
Z2VyIG9ubHkgZm9yIHRoZSBleGFjdCBldmVudCAobm8gbmFtZXNwYWNlcykKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHR5cGUgPSB0eXBlLnNsaWNlKDAsIC0xKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGV4Y2x1c2l2ZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICAgICAgaWYgKCB0eXBlLmluZGV4T2YoICIuIiApID49IDAgKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAvLyBOYW1lc3BhY2VkIHRyaWdnZXI7IGNyZWF0ZSBhIHJlZ2V4cCB0byBtYXRjaCBl
dmVudCB0eXBlIGluIGhhbmRsZSgpCi0gICAgICAgICAgICAgICAgICAgICAgICBuYW1lc3BhY2Vz
ID0gdHlwZS5zcGxpdCgiLiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSA9IG5hbWVz
cGFjZXMuc2hpZnQoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVzcGFjZXMuc29ydCgp
OwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmICggKCFlbGVtIHx8IGpR
dWVyeS5ldmVudC5jdXN0b21FdmVudFsgdHlwZSBdKSAmJiAhalF1ZXJ5LmV2ZW50Lmdsb2JhbFsg
dHlwZSBdICkgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm8galF1ZXJ5IGhhbmRsZXJz
IGZvciB0aGlzIGV2ZW50IHR5cGUsIGFuZCBpdCBjYW4ndCBoYXZlIGlubGluZSBoYW5kbGVycwot
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgICAgIC8vIENhbGxlciBjYW4gcGFzcyBpbiBhbiBFdmVudCwgT2JqZWN0LCBvciBq
dXN0IGFuIGV2ZW50IHR5cGUgc3RyaW5nCi0gICAgICAgICAgICAgICAgZXZlbnQgPSB0eXBlb2Yg
ZXZlbnQgPT09ICJvYmplY3QiID8KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGpRdWVyeS5F
dmVudCBvYmplY3QKLSAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50WyBqUXVlcnkuZXhwYW5k
byBdID8gZXZlbnQgOgotICAgICAgICAgICAgICAgICAgICAgICAgLy8gT2JqZWN0IGxpdGVyYWwK
LSAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBqUXVlcnkuRXZlbnQoIHR5cGUsIGV2ZW50ICkg
OgotICAgICAgICAgICAgICAgICAgICAgICAgLy8gSnVzdCB0aGUgZXZlbnQgdHlwZSAoc3RyaW5n
KQotICAgICAgICAgICAgICAgICAgICAgICAgbmV3IGpRdWVyeS5FdmVudCggdHlwZSApOwotCi0g
ICAgICAgICAgICAgICAgZXZlbnQudHlwZSA9IHR5cGU7Ci0gICAgICAgICAgICAgICAgZXZlbnQu
aXNUcmlnZ2VyID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBldmVudC5leGNsdXNpdmUgPSBleGNs
dXNpdmU7Ci0gICAgICAgICAgICAgICAgZXZlbnQubmFtZXNwYWNlID0gbmFtZXNwYWNlcy5qb2lu
KCAiLiIgKTsKLSAgICAgICAgICAgICAgICBldmVudC5uYW1lc3BhY2VfcmUgPSBldmVudC5uYW1l
c3BhY2U/IG5ldyBSZWdFeHAoIihefFxcLikiICsgbmFtZXNwYWNlcy5qb2luKCJcXC4oPzouKlxc
LnwpIikgKyAiKFxcLnwkKSIpIDogbnVsbDsKLSAgICAgICAgICAgICAgICBvbnR5cGUgPSB0eXBl
LmluZGV4T2YoICI6IiApIDwgMCA/ICJvbiIgKyB0eXBlIDogIiI7Ci0KLSAgICAgICAgICAgICAg
ICAvLyBIYW5kbGUgYSBnbG9iYWwgdHJpZ2dlcgotICAgICAgICAgICAgICAgIGlmICggIWVsZW0g
KSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IFN0b3AgdGF1bnRpbmcgdGhl
IGRhdGEgY2FjaGU7IHJlbW92ZSBnbG9iYWwgZXZlbnRzIGFuZCBhbHdheXMgYXR0YWNoIHRvIGRv
Y3VtZW50Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYWNoZSA9IGpRdWVyeS5jYWNoZTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGZvciAoIGkgaW4gY2FjaGUgKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICggY2FjaGVbIGkgXS5ldmVudHMgJiYgY2FjaGVbIGkgXS5l
dmVudHNbIHR5cGUgXSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBqUXVlcnkuZXZlbnQudHJpZ2dlciggZXZlbnQsIGRhdGEsIGNhY2hlWyBpIF0uaGFuZGxlLmVs
ZW0sIHRydWUgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIC8vIENsZWFuIHVwIHRoZSBldmVudCBpbiBj
YXNlIGl0IGlzIGJlaW5nIHJldXNlZAotICAgICAgICAgICAgICAgIGV2ZW50LnJlc3VsdCA9IHVu
ZGVmaW5lZDsKLSAgICAgICAgICAgICAgICBpZiAoICFldmVudC50YXJnZXQgKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBldmVudC50YXJnZXQgPSBlbGVtOwotICAgICAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgICAgIC8vIENsb25lIGFueSBpbmNvbWluZyBkYXRhIGFuZCBwcmVwZW5k
IHRoZSBldmVudCwgY3JlYXRpbmcgdGhlIGhhbmRsZXIgYXJnIGxpc3QKLSAgICAgICAgICAgICAg
ICBkYXRhID0gZGF0YSAhPSBudWxsID8galF1ZXJ5Lm1ha2VBcnJheSggZGF0YSApIDogW107Ci0g
ICAgICAgICAgICAgICAgZGF0YS51bnNoaWZ0KCBldmVudCApOwotCi0gICAgICAgICAgICAgICAg
Ly8gQWxsb3cgc3BlY2lhbCBldmVudHMgdG8gZHJhdyBvdXRzaWRlIHRoZSBsaW5lcwotICAgICAg
ICAgICAgICAgIHNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgdHlwZSBdIHx8IHt9Owot
ICAgICAgICAgICAgICAgIGlmICggc3BlY2lhbC50cmlnZ2VyICYmIHNwZWNpYWwudHJpZ2dlci5h
cHBseSggZWxlbSwgZGF0YSApID09PSBmYWxzZSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBEZXRlcm1p
bmUgZXZlbnQgcHJvcGFnYXRpb24gcGF0aCBpbiBhZHZhbmNlLCBwZXIgVzNDIGV2ZW50cyBzcGVj
ICgjOTk1MSkKLSAgICAgICAgICAgICAgICAvLyBCdWJibGUgdXAgdG8gZG9jdW1lbnQsIHRoZW4g
dG8gd2luZG93OyB3YXRjaCBmb3IgYSBnbG9iYWwgb3duZXJEb2N1bWVudCB2YXIgKCM5NzI0KQot
ICAgICAgICAgICAgICAgIGV2ZW50UGF0aCA9IFtbIGVsZW0sIHNwZWNpYWwuYmluZFR5cGUgfHwg
dHlwZSBdXTsKLSAgICAgICAgICAgICAgICBpZiAoICFvbmx5SGFuZGxlcnMgJiYgIXNwZWNpYWwu
bm9CdWJibGUgJiYgIWpRdWVyeS5pc1dpbmRvdyggZWxlbSApICkgewotCi0gICAgICAgICAgICAg
ICAgICAgICAgICBidWJibGVUeXBlID0gc3BlY2lhbC5kZWxlZ2F0ZVR5cGUgfHwgdHlwZTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGN1ciA9IHJmb2N1c01vcnBoLnRlc3QoIGJ1YmJsZVR5cGUg
KyB0eXBlICkgPyBlbGVtIDogZWxlbS5wYXJlbnROb2RlOwotICAgICAgICAgICAgICAgICAgICAg
ICAgZm9yICggb2xkID0gZWxlbTsgY3VyOyBjdXIgPSBjdXIucGFyZW50Tm9kZSApIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRQYXRoLnB1c2goWyBjdXIsIGJ1YmJsZVR5
cGUgXSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZCA9IGN1cjsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gT25seSBh
ZGQgd2luZG93IGlmIHdlIGdvdCB0byBkb2N1bWVudCAoZS5nLiwgbm90IHBsYWluIG9iaiBvciBk
ZXRhY2hlZCBET00pCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIG9sZCA9PT0gKGVsZW0u
b3duZXJEb2N1bWVudCB8fCBkb2N1bWVudCkgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGV2ZW50UGF0aC5wdXNoKFsgb2xkLmRlZmF1bHRWaWV3IHx8IG9sZC5wYXJlbnRXaW5k
b3cgfHwgd2luZG93LCBidWJibGVUeXBlIF0pOwotICAgICAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIC8vIEZpcmUgaGFuZGxlcnMgb24g
dGhlIGV2ZW50IHBhdGgKLSAgICAgICAgICAgICAgICBmb3IgKCBpID0gMDsgaSA8IGV2ZW50UGF0
aC5sZW5ndGggJiYgIWV2ZW50LmlzUHJvcGFnYXRpb25TdG9wcGVkKCk7IGkrKyApIHsKLQotICAg
ICAgICAgICAgICAgICAgICAgICAgY3VyID0gZXZlbnRQYXRoW2ldWzBdOwotICAgICAgICAgICAg
ICAgICAgICAgICAgZXZlbnQudHlwZSA9IGV2ZW50UGF0aFtpXVsxXTsKLQotICAgICAgICAgICAg
ICAgICAgICAgICAgaGFuZGxlID0gKCBqUXVlcnkuX2RhdGEoIGN1ciwgImV2ZW50cyIgKSB8fCB7
fSApWyBldmVudC50eXBlIF0gJiYgalF1ZXJ5Ll9kYXRhKCBjdXIsICJoYW5kbGUiICk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoIGhhbmRsZSApIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaGFuZGxlLmFwcGx5KCBjdXIsIGRhdGEgKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB0aGlzIGlzIGEg
YmFyZSBKUyBmdW5jdGlvbiBhbmQgbm90IGEgalF1ZXJ5IGhhbmRsZXIKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGhhbmRsZSA9IG9udHlwZSAmJiBjdXJbIG9udHlwZSBdOwotICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCBoYW5kbGUgJiYgalF1ZXJ5LmFjY2VwdERhdGEoIGN1ciApICYmIGhh
bmRsZS5hcHBseSAmJiBoYW5kbGUuYXBwbHkoIGN1ciwgZGF0YSApID09PSBmYWxzZSApIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgZXZlbnQudHlwZSA9IHR5cGU7Ci0KLSAgICAgICAgICAgICAgICAvLyBJZiBub2JvZHkgcHJl
dmVudGVkIHRoZSBkZWZhdWx0IGFjdGlvbiwgZG8gaXQgbm93Ci0gICAgICAgICAgICAgICAgaWYg
KCAhb25seUhhbmRsZXJzICYmICFldmVudC5pc0RlZmF1bHRQcmV2ZW50ZWQoKSApIHsKLQotICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCAoIXNwZWNpYWwuX2RlZmF1bHQgfHwgc3BlY2lhbC5f
ZGVmYXVsdC5hcHBseSggZWxlbS5vd25lckRvY3VtZW50LCBkYXRhICkgPT09IGZhbHNlKSAmJgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhKHR5cGUgPT09ICJjbGljayIgJiYgalF1
ZXJ5Lm5vZGVOYW1lKCBlbGVtLCAiYSIgKSkgJiYgalF1ZXJ5LmFjY2VwdERhdGEoIGVsZW0gKSAp
IHsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDYWxsIGEgbmF0aXZlIERP
TSBtZXRob2Qgb24gdGhlIHRhcmdldCB3aXRoIHRoZSBzYW1lIG5hbWUgbmFtZSBhcyB0aGUgZXZl
bnQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENhbid0IHVzZSBhbiAuaXNG
dW5jdGlvbigpIGNoZWNrIGhlcmUgYmVjYXVzZSBJRTYvNyBmYWlscyB0aGF0IHRlc3QuCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERvbid0IGRvIGRlZmF1bHQgYWN0aW9ucyBv
biB3aW5kb3csIHRoYXQncyB3aGVyZSBnbG9iYWwgdmFyaWFibGVzIGJlICgjNjE3MCkKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSUU8OSBkaWVzIG9uIGZvY3VzL2JsdXIgdG8g
aGlkZGVuIGVsZW1lbnQgKCMxNDg2KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoIG9udHlwZSAmJiBlbGVtWyB0eXBlIF0gJiYgKCh0eXBlICE9PSAiZm9jdXMiICYmIHR5cGUg
IT09ICJibHVyIikgfHwgZXZlbnQudGFyZ2V0Lm9mZnNldFdpZHRoICE9PSAwKSAmJiAhalF1ZXJ5
LmlzV2luZG93KCBlbGVtICkgKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBEb24ndCByZS10cmlnZ2VyIGFuIG9uRk9PIGV2ZW50IHdoZW4gd2UgY2FsbCBp
dHMgRk9PKCkgbWV0aG9kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
b2xkID0gZWxlbVsgb250eXBlIF07Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoIG9sZCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVsZW1bIG9udHlwZSBdID0gbnVsbDsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBQcmV2ZW50IHJlLXRyaWdnZXJpbmcgb2YgdGhlIHNhbWUgZXZlbnQsIHNpbmNl
IHdlIGFscmVhZHkgYnViYmxlZCBpdCBhYm92ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGpRdWVyeS5ldmVudC50cmlnZ2VyZWQgPSB0eXBlOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1bIHR5cGUgXSgpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5ldmVudC50cmlnZ2VyZWQgPSB1bmRl
ZmluZWQ7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIG9s
ZCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVs
ZW1bIG9udHlwZSBdID0gb2xkOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHJldHVybiBl
dmVudC5yZXN1bHQ7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgZGlzcGF0Y2g6IGZ1bmN0aW9uKCBl
dmVudCApIHsKLQotICAgICAgICAgICAgICAgIC8vIE1ha2UgYSB3cml0YWJsZSBqUXVlcnkuRXZl
bnQgZnJvbSB0aGUgbmF0aXZlIGV2ZW50IG9iamVjdAotICAgICAgICAgICAgICAgIGV2ZW50ID0g
alF1ZXJ5LmV2ZW50LmZpeCggZXZlbnQgfHwgd2luZG93LmV2ZW50ICk7Ci0KLSAgICAgICAgICAg
ICAgICB2YXIgaSwgaiwgY3VyLCByZXQsIHNlbE1hdGNoLCBtYXRjaGVkLCBtYXRjaGVzLCBoYW5k
bGVPYmosIHNlbCwgcmVsYXRlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXJzID0g
KCAoalF1ZXJ5Ll9kYXRhKCB0aGlzLCAiZXZlbnRzIiApIHx8IHt9IClbIGV2ZW50LnR5cGUgXSB8
fCBbXSksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZWxlZ2F0ZUNvdW50ID0gaGFuZGxlcnMu
ZGVsZWdhdGVDb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MgPSBjb3JlX3NsaWNl
LmNhbGwoIGFyZ3VtZW50cyApLAotICAgICAgICAgICAgICAgICAgICAgICAgcnVuX2FsbCA9ICFl
dmVudC5leGNsdXNpdmUgJiYgIWV2ZW50Lm5hbWVzcGFjZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgZXZlbnQudHlwZSBdIHx8IHt9LAot
ICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlclF1ZXVlID0gW107Ci0KLSAgICAgICAgICAg
ICAgICAvLyBVc2UgdGhlIGZpeC1lZCBqUXVlcnkuRXZlbnQgcmF0aGVyIHRoYW4gdGhlIChyZWFk
LW9ubHkpIG5hdGl2ZSBldmVudAotICAgICAgICAgICAgICAgIGFyZ3NbMF0gPSBldmVudDsKLSAg
ICAgICAgICAgICAgICBldmVudC5kZWxlZ2F0ZVRhcmdldCA9IHRoaXM7Ci0KLSAgICAgICAgICAg
ICAgICAvLyBDYWxsIHRoZSBwcmVEaXNwYXRjaCBob29rIGZvciB0aGUgbWFwcGVkIHR5cGUsIGFu
ZCBsZXQgaXQgYmFpbCBpZiBkZXNpcmVkCi0gICAgICAgICAgICAgICAgaWYgKCBzcGVjaWFsLnBy
ZURpc3BhdGNoICYmIHNwZWNpYWwucHJlRGlzcGF0Y2guY2FsbCggdGhpcywgZXZlbnQgKSA9PT0g
ZmFsc2UgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICAgICAgLy8gRGV0ZXJtaW5lIGhhbmRsZXJzIHRoYXQgc2hvdWxk
IHJ1biBpZiB0aGVyZSBhcmUgZGVsZWdhdGVkIGV2ZW50cwotICAgICAgICAgICAgICAgIC8vIEF2
b2lkIG5vbi1sZWZ0LWNsaWNrIGJ1YmJsaW5nIGluIEZpcmVmb3ggKCMzODYxKQotICAgICAgICAg
ICAgICAgIGlmICggZGVsZWdhdGVDb3VudCAmJiAhKGV2ZW50LmJ1dHRvbiAmJiBldmVudC50eXBl
ID09PSAiY2xpY2siKSApIHsKLQotICAgICAgICAgICAgICAgICAgICAgICAgZm9yICggY3VyID0g
ZXZlbnQudGFyZ2V0OyBjdXIgIT0gdGhpczsgY3VyID0gY3VyLnBhcmVudE5vZGUgfHwgdGhpcyAp
IHsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEb24ndCBwcm9jZXNzIGNs
aWNrcyAoT05MWSkgb24gZGlzYWJsZWQgZWxlbWVudHMgKCM2OTExLCAjODE2NSwgIzExMzgyLCAj
MTE3NjQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggY3VyLmRpc2FibGVk
ICE9PSB0cnVlIHx8IGV2ZW50LnR5cGUgIT09ICJjbGljayIgKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2VsTWF0Y2ggPSB7fTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVzID0gW107Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZm9yICggaSA9IDA7IGkgPCBkZWxlZ2F0ZUNvdW50OyBpKysg
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5k
bGVPYmogPSBoYW5kbGVyc1sgaSBdOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2VsID0gaGFuZGxlT2JqLnNlbGVjdG9yOwotCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHNlbE1hdGNoWyBzZWwgXSA9
PT0gdW5kZWZpbmVkICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZWxNYXRjaFsgc2VsIF0gPSBoYW5kbGVPYmoubmVlZHNDb250ZXh0
ID8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBqUXVlcnkoIHNlbCwgdGhpcyApLmluZGV4KCBjdXIgKSA+PSAwIDoKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBqUXVlcnkuZmluZCggc2VsLCB0aGlzLCBudWxsLCBbIGN1ciBdICkubGVuZ3RoOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBzZWxNYXRjaFsgc2VsIF0g
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1hdGNoZXMucHVzaCggaGFuZGxlT2JqICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgg
bWF0Y2hlcy5sZW5ndGggKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBoYW5kbGVyUXVldWUucHVzaCh7IGVsZW06IGN1ciwgbWF0Y2hlczogbWF0Y2hl
cyB9KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBBZGQgdGhlIHJlbWFpbmluZyAo
ZGlyZWN0bHktYm91bmQpIGhhbmRsZXJzCi0gICAgICAgICAgICAgICAgaWYgKCBoYW5kbGVycy5s
ZW5ndGggPiBkZWxlZ2F0ZUNvdW50ICkgewotICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxl
clF1ZXVlLnB1c2goeyBlbGVtOiB0aGlzLCBtYXRjaGVzOiBoYW5kbGVycy5zbGljZSggZGVsZWdh
dGVDb3VudCApIH0pOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIC8vIFJ1
biBkZWxlZ2F0ZXMgZmlyc3Q7IHRoZXkgbWF5IHdhbnQgdG8gc3RvcCBwcm9wYWdhdGlvbiBiZW5l
YXRoIHVzCi0gICAgICAgICAgICAgICAgZm9yICggaSA9IDA7IGkgPCBoYW5kbGVyUXVldWUubGVu
Z3RoICYmICFldmVudC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpOyBpKysgKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBtYXRjaGVkID0gaGFuZGxlclF1ZXVlWyBpIF07Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBldmVudC5jdXJyZW50VGFyZ2V0ID0gbWF0Y2hlZC5lbGVtOwotCi0gICAgICAg
ICAgICAgICAgICAgICAgICBmb3IgKCBqID0gMDsgaiA8IG1hdGNoZWQubWF0Y2hlcy5sZW5ndGgg
JiYgIWV2ZW50LmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkKCk7IGorKyApIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlT2JqID0gbWF0Y2hlZC5tYXRjaGVzWyBq
IF07Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVHJpZ2dlcmVkIGV2ZW50
IG11c3QgZWl0aGVyIDEpIGJlIG5vbi1leGNsdXNpdmUgYW5kIGhhdmUgbm8gbmFtZXNwYWNlLCBv
cgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAyKSBoYXZlIG5hbWVzcGFjZShz
KSBhIHN1YnNldCBvciBlcXVhbCB0byB0aG9zZSBpbiB0aGUgYm91bmQgZXZlbnQgKGJvdGggY2Fu
IGhhdmUgbm8gbmFtZXNwYWNlKS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCBydW5fYWxsIHx8ICghZXZlbnQubmFtZXNwYWNlICYmICFoYW5kbGVPYmoubmFtZXNwYWNlKSB8
fCBldmVudC5uYW1lc3BhY2VfcmUgJiYgZXZlbnQubmFtZXNwYWNlX3JlLnRlc3QoIGhhbmRsZU9i
ai5uYW1lc3BhY2UgKSApIHsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGV2ZW50LmRhdGEgPSBoYW5kbGVPYmouZGF0YTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBldmVudC5oYW5kbGVPYmogPSBoYW5kbGVPYmo7Ci0KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXQgPSAoIChqUXVlcnkuZXZlbnQuc3Bl
Y2lhbFsgaGFuZGxlT2JqLm9yaWdUeXBlIF0gfHwge30pLmhhbmRsZSB8fCBoYW5kbGVPYmouaGFu
ZGxlciApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC5hcHBseSggbWF0Y2hlZC5lbGVtLCBhcmdzICk7Ci0KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHJldCAhPT0gdW5kZWZpbmVkICkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucmVzdWx0ID0g
cmV0OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCByZXQgPT09IGZhbHNlICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJv
cGFnYXRpb24oKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBDYWxsIHRoZSBwb3N0RGlzcGF0
Y2ggaG9vayBmb3IgdGhlIG1hcHBlZCB0eXBlCi0gICAgICAgICAgICAgICAgaWYgKCBzcGVjaWFs
LnBvc3REaXNwYXRjaCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpYWwucG9zdERp
c3BhdGNoLmNhbGwoIHRoaXMsIGV2ZW50ICk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIGV2ZW50LnJlc3VsdDsKLSAgICAgICAgfSwKLQotICAgICAgICAvLyBJ
bmNsdWRlcyBzb21lIGV2ZW50IHByb3BzIHNoYXJlZCBieSBLZXlFdmVudCBhbmQgTW91c2VFdmVu
dAotICAgICAgICAvLyAqKiogYXR0ckNoYW5nZSBhdHRyTmFtZSByZWxhdGVkTm9kZSBzcmNFbGVt
ZW50ICBhcmUgbm90IG5vcm1hbGl6ZWQsIG5vbi1XM0MsIGRlcHJlY2F0ZWQsIHdpbGwgYmUgcmVt
b3ZlZCBpbiAxLjggKioqCi0gICAgICAgIHByb3BzOiAiYXR0ckNoYW5nZSBhdHRyTmFtZSByZWxh
dGVkTm9kZSBzcmNFbGVtZW50IGFsdEtleSBidWJibGVzIGNhbmNlbGFibGUgY3RybEtleSBjdXJy
ZW50VGFyZ2V0IGV2ZW50UGhhc2UgbWV0YUtleSByZWxhdGVkVGFyZ2V0IHNoaWZ0S2V5IHRhcmdl
dCB0aW1lU3RhbXAgdmlldyB3aGljaCIuc3BsaXQoIiAiKSwKLQotICAgICAgICBmaXhIb29rczog
e30sCi0KLSAgICAgICAga2V5SG9va3M6IHsKLSAgICAgICAgICAgICAgICBwcm9wczogImNoYXIg
Y2hhckNvZGUga2V5IGtleUNvZGUiLnNwbGl0KCIgIiksCi0gICAgICAgICAgICAgICAgZmlsdGVy
OiBmdW5jdGlvbiggZXZlbnQsIG9yaWdpbmFsICkgewotCi0gICAgICAgICAgICAgICAgICAgICAg
ICAvLyBBZGQgd2hpY2ggZm9yIGtleSBldmVudHMKLSAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICggZXZlbnQud2hpY2ggPT0gbnVsbCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZXZlbnQud2hpY2ggPSBvcmlnaW5hbC5jaGFyQ29kZSAhPSBudWxsID8gb3JpZ2luYWwuY2hh
ckNvZGUgOiBvcmlnaW5hbC5rZXlDb2RlOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXZlbnQ7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICB9LAotCi0gICAgICAgIG1vdXNlSG9va3M6IHsKLSAgICAgICAgICAgICAgICBwcm9w
czogImJ1dHRvbiBidXR0b25zIGNsaWVudFggY2xpZW50WSBmcm9tRWxlbWVudCBvZmZzZXRYIG9m
ZnNldFkgcGFnZVggcGFnZVkgc2NyZWVuWCBzY3JlZW5ZIHRvRWxlbWVudCIuc3BsaXQoIiAiKSwK
LSAgICAgICAgICAgICAgICBmaWx0ZXI6IGZ1bmN0aW9uKCBldmVudCwgb3JpZ2luYWwgKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB2YXIgZXZlbnREb2MsIGRvYywgYm9keSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uID0gb3JpZ2luYWwuYnV0dG9uLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tRWxlbWVudCA9IG9yaWdpbmFsLmZyb21FbGVt
ZW50OwotCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBDYWxjdWxhdGUgcGFnZVgvWSBpZiBt
aXNzaW5nIGFuZCBjbGllbnRYL1kgYXZhaWxhYmxlCi0gICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoIGV2ZW50LnBhZ2VYID09IG51bGwgJiYgb3JpZ2luYWwuY2xpZW50WCAhPSBudWxsICkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudERvYyA9IGV2ZW50LnRhcmdldC5v
d25lckRvY3VtZW50IHx8IGRvY3VtZW50OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkb2MgPSBldmVudERvYy5kb2N1bWVudEVsZW1lbnQ7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvZHkgPSBldmVudERvYy5ib2R5OwotCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGV2ZW50LnBhZ2VYID0gb3JpZ2luYWwuY2xpZW50WCArICggZG9jICYmIGRvYy5z
Y3JvbGxMZWZ0IHx8IGJvZHkgJiYgYm9keS5zY3JvbGxMZWZ0IHx8IDAgKSAtICggZG9jICYmIGRv
Yy5jbGllbnRMZWZ0IHx8IGJvZHkgJiYgYm9keS5jbGllbnRMZWZ0IHx8IDAgKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucGFnZVkgPSBvcmlnaW5hbC5jbGllbnRZICsg
KCBkb2MgJiYgZG9jLnNjcm9sbFRvcCAgfHwgYm9keSAmJiBib2R5LnNjcm9sbFRvcCAgfHwgMCAp
IC0gKCBkb2MgJiYgZG9jLmNsaWVudFRvcCAgfHwgYm9keSAmJiBib2R5LmNsaWVudFRvcCAgfHwg
MCApOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAg
ICAvLyBBZGQgcmVsYXRlZFRhcmdldCwgaWYgbmVjZXNzYXJ5Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoICFldmVudC5yZWxhdGVkVGFyZ2V0ICYmIGZyb21FbGVtZW50ICkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5yZWxhdGVkVGFyZ2V0ID0gZnJvbUVsZW1l
bnQgPT09IGV2ZW50LnRhcmdldCA/IG9yaWdpbmFsLnRvRWxlbWVudCA6IGZyb21FbGVtZW50Owot
ICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBB
ZGQgd2hpY2ggZm9yIGNsaWNrOiAxID09PSBsZWZ0OyAyID09PSBtaWRkbGU7IDMgPT09IHJpZ2h0
Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBOb3RlOiBidXR0b24gaXMgbm90IG5vcm1hbGl6
ZWQsIHNvIGRvbid0IHVzZSBpdAotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhZXZlbnQu
d2hpY2ggJiYgYnV0dG9uICE9PSB1bmRlZmluZWQgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGV2ZW50LndoaWNoID0gKCBidXR0b24gJiAxID8gMSA6ICggYnV0dG9uICYgMiA/
IDMgOiAoIGJ1dHRvbiAmIDQgPyAyIDogMCApICkgKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV2ZW50OwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgfSwKLQotICAgICAgICBmaXg6IGZ1bmN0aW9uKCBldmVudCApIHsKLSAg
ICAgICAgICAgICAgICBpZiAoIGV2ZW50WyBqUXVlcnkuZXhwYW5kbyBdICkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGV2ZW50OwotICAgICAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgICAgIC8vIENyZWF0ZSBhIHdyaXRhYmxlIGNvcHkgb2YgdGhlIGV2ZW50IG9iamVjdCBh
bmQgbm9ybWFsaXplIHNvbWUgcHJvcGVydGllcwotICAgICAgICAgICAgICAgIHZhciBpLCBwcm9w
LAotICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudCA9IGV2ZW50LAotICAgICAg
ICAgICAgICAgICAgICAgICAgZml4SG9vayA9IGpRdWVyeS5ldmVudC5maXhIb29rc1sgZXZlbnQu
dHlwZSBdIHx8IHt9LAotICAgICAgICAgICAgICAgICAgICAgICAgY29weSA9IGZpeEhvb2sucHJv
cHMgPyB0aGlzLnByb3BzLmNvbmNhdCggZml4SG9vay5wcm9wcyApIDogdGhpcy5wcm9wczsKLQot
ICAgICAgICAgICAgICAgIGV2ZW50ID0galF1ZXJ5LkV2ZW50KCBvcmlnaW5hbEV2ZW50ICk7Ci0K
LSAgICAgICAgICAgICAgICBmb3IgKCBpID0gY29weS5sZW5ndGg7IGk7ICkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgcHJvcCA9IGNvcHlbIC0taSBdOwotICAgICAgICAgICAgICAgICAgICAg
ICAgZXZlbnRbIHByb3AgXSA9IG9yaWdpbmFsRXZlbnRbIHByb3AgXTsKLSAgICAgICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBGaXggdGFyZ2V0IHByb3BlcnR5LCBpZiBuZWNlc3Nh
cnkgKCMxOTI1LCBJRSA2LzcvOCAmIFNhZmFyaTIpCi0gICAgICAgICAgICAgICAgaWYgKCAhZXZl
bnQudGFyZ2V0ICkgewotICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQudGFyZ2V0ID0gb3Jp
Z2luYWxFdmVudC5zcmNFbGVtZW50IHx8IGRvY3VtZW50OwotICAgICAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgICAgIC8vIFRhcmdldCBzaG91bGQgbm90IGJlIGEgdGV4dCBub2RlICgjNTA0
LCBTYWZhcmkpCi0gICAgICAgICAgICAgICAgaWYgKCBldmVudC50YXJnZXQubm9kZVR5cGUgPT09
IDMgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBldmVudC50YXJnZXQgPSBldmVudC50YXJn
ZXQucGFyZW50Tm9kZTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBG
b3IgbW91c2Uva2V5IGV2ZW50cywgbWV0YUtleT09ZmFsc2UgaWYgaXQncyB1bmRlZmluZWQgKCMz
MzY4LCAjMTEzMjg7IElFNi83LzgpCi0gICAgICAgICAgICAgICAgZXZlbnQubWV0YUtleSA9ICEh
ZXZlbnQubWV0YUtleTsKLQotICAgICAgICAgICAgICAgIHJldHVybiBmaXhIb29rLmZpbHRlcj8g
Zml4SG9vay5maWx0ZXIoIGV2ZW50LCBvcmlnaW5hbEV2ZW50ICkgOiBldmVudDsKLSAgICAgICAg
fSwKLQotICAgICAgICBzcGVjaWFsOiB7Ci0gICAgICAgICAgICAgICAgbG9hZDogewotICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gUHJldmVudCB0cmlnZ2VyZWQgaW1hZ2UubG9hZCBldmVudHMg
ZnJvbSBidWJibGluZyB0byB3aW5kb3cubG9hZAotICAgICAgICAgICAgICAgICAgICAgICAgbm9C
dWJibGU6IHRydWUKLSAgICAgICAgICAgICAgICB9LAotCi0gICAgICAgICAgICAgICAgZm9jdXM6
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlbGVnYXRlVHlwZTogImZvY3VzaW4iCi0gICAg
ICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICBibHVyOiB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBkZWxlZ2F0ZVR5cGU6ICJmb2N1c291dCIKLSAgICAgICAgICAgICAgICB9LAotCi0g
ICAgICAgICAgICAgICAgYmVmb3JldW5sb2FkOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBz
ZXR1cDogZnVuY3Rpb24oIGRhdGEsIG5hbWVzcGFjZXMsIGV2ZW50SGFuZGxlICkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBvbmx5IHdhbnQgdG8gZG8gdGhpcyBzcGVj
aWFsIGNhc2Ugb24gd2luZG93cwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
IGpRdWVyeS5pc1dpbmRvdyggdGhpcyApICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRoaXMub25iZWZvcmV1bmxvYWQgPSBldmVudEhhbmRsZTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLQot
ICAgICAgICAgICAgICAgICAgICAgICAgdGVhcmRvd246IGZ1bmN0aW9uKCBuYW1lc3BhY2VzLCBl
dmVudEhhbmRsZSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCB0aGlz
Lm9uYmVmb3JldW5sb2FkID09PSBldmVudEhhbmRsZSApIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0aGlzLm9uYmVmb3JldW5sb2FkID0gbnVsbDsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgfSwKLQotICAgICAgICBzaW11bGF0ZTogZnVuY3Rpb24o
IHR5cGUsIGVsZW0sIGV2ZW50LCBidWJibGUgKSB7Ci0gICAgICAgICAgICAgICAgLy8gUGlnZ3li
YWNrIG9uIGEgZG9ub3IgZXZlbnQgdG8gc2ltdWxhdGUgYSBkaWZmZXJlbnQgb25lLgotICAgICAg
ICAgICAgICAgIC8vIEZha2Ugb3JpZ2luYWxFdmVudCB0byBhdm9pZCBkb25vcidzIHN0b3BQcm9w
YWdhdGlvbiwgYnV0IGlmIHRoZQotICAgICAgICAgICAgICAgIC8vIHNpbXVsYXRlZCBldmVudCBw
cmV2ZW50cyBkZWZhdWx0IHRoZW4gd2UgZG8gdGhlIHNhbWUgb24gdGhlIGRvbm9yLgotICAgICAg
ICAgICAgICAgIHZhciBlID0galF1ZXJ5LmV4dGVuZCgKLSAgICAgICAgICAgICAgICAgICAgICAg
IG5ldyBqUXVlcnkuRXZlbnQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LAotICAg
ICAgICAgICAgICAgICAgICAgICAgeyB0eXBlOiB0eXBlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpc1NpbXVsYXRlZDogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb3JpZ2luYWxFdmVudDoge30KLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICApOwotICAgICAgICAgICAgICAgIGlmICggYnViYmxlICkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgalF1ZXJ5LmV2ZW50LnRyaWdnZXIoIGUsIG51bGwsIGVsZW0gKTsKLSAg
ICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmV2
ZW50LmRpc3BhdGNoLmNhbGwoIGVsZW0sIGUgKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgaWYgKCBlLmlzRGVmYXVsdFByZXZlbnRlZCgpICkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLX07Ci0KLS8vIFNvbWUgcGx1Z2lucyBhcmUgdXNpbmcsIGJ1dCBpdCdzIHVuZG9jdW1l
bnRlZC9kZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQuCi0vLyBUaGUgMS43IHNwZWNpYWwg
ZXZlbnQgaW50ZXJmYWNlIHNob3VsZCBwcm92aWRlIGFsbCB0aGUgaG9va3MgbmVlZGVkIG5vdy4K
LWpRdWVyeS5ldmVudC5oYW5kbGUgPSBqUXVlcnkuZXZlbnQuZGlzcGF0Y2g7Ci0KLWpRdWVyeS5y
ZW1vdmVFdmVudCA9IGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIgPwotICAgICAgICBmdW5j
dGlvbiggZWxlbSwgdHlwZSwgaGFuZGxlICkgewotICAgICAgICAgICAgICAgIGlmICggZWxlbS5y
ZW1vdmVFdmVudExpc3RlbmVyICkgewotICAgICAgICAgICAgICAgICAgICAgICAgZWxlbS5yZW1v
dmVFdmVudExpc3RlbmVyKCB0eXBlLCBoYW5kbGUsIGZhbHNlICk7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICB9IDoKLSAgICAgICAgZnVuY3Rpb24oIGVsZW0sIHR5cGUsIGhhbmRsZSApIHsK
LSAgICAgICAgICAgICAgICB2YXIgbmFtZSA9ICJvbiIgKyB0eXBlOwotCi0gICAgICAgICAgICAg
ICAgaWYgKCBlbGVtLmRldGFjaEV2ZW50ICkgewotCi0gICAgICAgICAgICAgICAgICAgICAgICAv
LyAjODU0NSwgIzcwNTQsIHByZXZlbnRpbmcgbWVtb3J5IGxlYWtzIGZvciBjdXN0b20gZXZlbnRz
IGluIElFNi04Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBkZXRhY2hFdmVudCBuZWVkZWQg
cHJvcGVydHkgb24gZWxlbWVudCwgYnkgbmFtZSBvZiB0aGF0IGV2ZW50LCB0byBwcm9wZXJseSBl
eHBvc2UgaXQgdG8gR0MKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICggdHlwZW9mIGVsZW1b
IG5hbWUgXSA9PT0gInVuZGVmaW5lZCIgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGVsZW1bIG5hbWUgXSA9IG51bGw7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgICAgICAgICAgICAgIGVsZW0uZGV0YWNoRXZlbnQoIG5hbWUsIGhhbmRsZSApOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLQotalF1ZXJ5LkV2ZW50ID0gZnVuY3Rpb24o
IHNyYywgcHJvcHMgKSB7Ci0gICAgICAgIC8vIEFsbG93IGluc3RhbnRpYXRpb24gd2l0aG91dCB0
aGUgJ25ldycga2V5d29yZAotICAgICAgICBpZiAoICEodGhpcyBpbnN0YW5jZW9mIGpRdWVyeS5F
dmVudCkgKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBqUXVlcnkuRXZlbnQoIHNyYywg
cHJvcHMgKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEV2ZW50IG9iamVjdAotICAgICAgICBp
ZiAoIHNyYyAmJiBzcmMudHlwZSApIHsKLSAgICAgICAgICAgICAgICB0aGlzLm9yaWdpbmFsRXZl
bnQgPSBzcmM7Ci0gICAgICAgICAgICAgICAgdGhpcy50eXBlID0gc3JjLnR5cGU7Ci0KLSAgICAg
ICAgICAgICAgICAvLyBFdmVudHMgYnViYmxpbmcgdXAgdGhlIGRvY3VtZW50IG1heSBoYXZlIGJl
ZW4gbWFya2VkIGFzIHByZXZlbnRlZAotICAgICAgICAgICAgICAgIC8vIGJ5IGEgaGFuZGxlciBs
b3dlciBkb3duIHRoZSB0cmVlOyByZWZsZWN0IHRoZSBjb3JyZWN0IHZhbHVlLgotICAgICAgICAg
ICAgICAgIHRoaXMuaXNEZWZhdWx0UHJldmVudGVkID0gKCBzcmMuZGVmYXVsdFByZXZlbnRlZCB8
fCBzcmMucmV0dXJuVmFsdWUgPT09IGZhbHNlIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICBz
cmMuZ2V0UHJldmVudERlZmF1bHQgJiYgc3JjLmdldFByZXZlbnREZWZhdWx0KCkgKSA/IHJldHVy
blRydWUgOiByZXR1cm5GYWxzZTsKLQotICAgICAgICAvLyBFdmVudCB0eXBlCi0gICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgdGhpcy50eXBlID0gc3JjOwotICAgICAgICB9Ci0KLSAg
ICAgICAgLy8gUHV0IGV4cGxpY2l0bHkgcHJvdmlkZWQgcHJvcGVydGllcyBvbnRvIHRoZSBldmVu
dCBvYmplY3QKLSAgICAgICAgaWYgKCBwcm9wcyApIHsKLSAgICAgICAgICAgICAgICBqUXVlcnku
ZXh0ZW5kKCB0aGlzLCBwcm9wcyApOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gQ3JlYXRlIGEg
dGltZXN0YW1wIGlmIGluY29taW5nIGV2ZW50IGRvZXNuJ3QgaGF2ZSBvbmUKLSAgICAgICAgdGhp
cy50aW1lU3RhbXAgPSBzcmMgJiYgc3JjLnRpbWVTdGFtcCB8fCBqUXVlcnkubm93KCk7Ci0KLSAg
ICAgICAgLy8gTWFyayBpdCBhcyBmaXhlZAotICAgICAgICB0aGlzWyBqUXVlcnkuZXhwYW5kbyBd
ID0gdHJ1ZTsKLX07Ci0KLWZ1bmN0aW9uIHJldHVybkZhbHNlKCkgewotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci19Ci1mdW5jdGlvbiByZXR1cm5UcnVlKCkgewotICAgICAgICByZXR1cm4gdHJ1ZTsK
LX0KLQotLy8galF1ZXJ5LkV2ZW50IGlzIGJhc2VkIG9uIERPTTMgRXZlbnRzIGFzIHNwZWNpZmll
ZCBieSB0aGUgRUNNQVNjcmlwdCBMYW5ndWFnZSBCaW5kaW5nCi0vLyBodHRwOi8vd3d3LnczLm9y
Zy9UUi8yMDAzL1dELURPTS1MZXZlbC0zLUV2ZW50cy0yMDAzMDMzMS9lY21hLXNjcmlwdC1iaW5k
aW5nLmh0bWwKLWpRdWVyeS5FdmVudC5wcm90b3R5cGUgPSB7Ci0gICAgICAgIHByZXZlbnREZWZh
dWx0OiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICB0aGlzLmlzRGVmYXVsdFByZXZlbnRl
ZCA9IHJldHVyblRydWU7Ci0KLSAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMub3JpZ2luYWxF
dmVudDsKLSAgICAgICAgICAgICAgICBpZiAoICFlICkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIC8vIGlmIHBy
ZXZlbnREZWZhdWx0IGV4aXN0cyBydW4gaXQgb24gdGhlIG9yaWdpbmFsIGV2ZW50Ci0gICAgICAg
ICAgICAgICAgaWYgKCBlLnByZXZlbnREZWZhdWx0ICkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgZS5wcmV2ZW50RGVmYXVsdCgpOwotCi0gICAgICAgICAgICAgICAgLy8gb3RoZXJ3aXNlIHNl
dCB0aGUgcmV0dXJuVmFsdWUgcHJvcGVydHkgb2YgdGhlIG9yaWdpbmFsIGV2ZW50IHRvIGZhbHNl
IChJRSkKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAg
ZS5yZXR1cm5WYWx1ZSA9IGZhbHNlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAg
ICAgICAgc3RvcFByb3BhZ2F0aW9uOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICB0aGlz
LmlzUHJvcGFnYXRpb25TdG9wcGVkID0gcmV0dXJuVHJ1ZTsKLQotICAgICAgICAgICAgICAgIHZh
ciBlID0gdGhpcy5vcmlnaW5hbEV2ZW50OwotICAgICAgICAgICAgICAgIGlmICggIWUgKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIC8vIGlmIHN0b3BQcm9wYWdhdGlvbiBleGlzdHMgcnVuIGl0IG9uIHRoZSBvcmln
aW5hbCBldmVudAotICAgICAgICAgICAgICAgIGlmICggZS5zdG9wUHJvcGFnYXRpb24gKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAvLyBvdGhlcndpc2Ugc2V0IHRoZSBjYW5jZWxCdWJibGUg
cHJvcGVydHkgb2YgdGhlIG9yaWdpbmFsIGV2ZW50IHRvIHRydWUgKElFKQotICAgICAgICAgICAg
ICAgIGUuY2FuY2VsQnViYmxlID0gdHJ1ZTsKLSAgICAgICAgfSwKLSAgICAgICAgc3RvcEltbWVk
aWF0ZVByb3BhZ2F0aW9uOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICB0aGlzLmlzSW1t
ZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkID0gcmV0dXJuVHJ1ZTsKLSAgICAgICAgICAgICAgICB0
aGlzLnN0b3BQcm9wYWdhdGlvbigpOwotICAgICAgICB9LAotICAgICAgICBpc0RlZmF1bHRQcmV2
ZW50ZWQ6IHJldHVybkZhbHNlLAotICAgICAgICBpc1Byb3BhZ2F0aW9uU3RvcHBlZDogcmV0dXJu
RmFsc2UsCi0gICAgICAgIGlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkOiByZXR1cm5GYWxz
ZQotfTsKLQotLy8gQ3JlYXRlIG1vdXNlZW50ZXIvbGVhdmUgZXZlbnRzIHVzaW5nIG1vdXNlb3Zl
ci9vdXQgYW5kIGV2ZW50LXRpbWUgY2hlY2tzCi1qUXVlcnkuZWFjaCh7Ci0gICAgICAgIG1vdXNl
ZW50ZXI6ICJtb3VzZW92ZXIiLAotICAgICAgICBtb3VzZWxlYXZlOiAibW91c2VvdXQiCi19LCBm
dW5jdGlvbiggb3JpZywgZml4ICkgewotICAgICAgICBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgb3Jp
ZyBdID0gewotICAgICAgICAgICAgICAgIGRlbGVnYXRlVHlwZTogZml4LAotICAgICAgICAgICAg
ICAgIGJpbmRUeXBlOiBmaXgsCi0KLSAgICAgICAgICAgICAgICBoYW5kbGU6IGZ1bmN0aW9uKCBl
dmVudCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRhcmdldCA9IHRoaXMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlbGF0ZWQgPSBldmVudC5yZWxhdGVkVGFyZ2V0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBoYW5kbGVPYmogPSBldmVudC5oYW5kbGVPYmosCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yID0gaGFuZGxlT2JqLnNlbGVjdG9yOwotCi0g
ICAgICAgICAgICAgICAgICAgICAgICAvLyBGb3IgbW91c2VudGVyL2xlYXZlIGNhbGwgdGhlIGhh
bmRsZXIgaWYgcmVsYXRlZCBpcyBvdXRzaWRlIHRoZSB0YXJnZXQuCi0gICAgICAgICAgICAgICAg
ICAgICAgICAvLyBOQjogTm8gcmVsYXRlZFRhcmdldCBpZiB0aGUgbW91c2UgbGVmdC9lbnRlcmVk
IHRoZSBicm93c2VyIHdpbmRvdwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhcmVsYXRl
ZCB8fCAocmVsYXRlZCAhPT0gdGFyZ2V0ICYmICFqUXVlcnkuY29udGFpbnMoIHRhcmdldCwgcmVs
YXRlZCApKSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQudHlwZSA9
IGhhbmRsZU9iai5vcmlnVHlwZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
ID0gaGFuZGxlT2JqLmhhbmRsZXIuYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBldmVudC50eXBlID0gZml4OwotICAgICAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgIH07Ci19KTsKLQotLy8gSUUgc3VibWl0IGRlbGVnYXRpb24KLWlm
ICggIWpRdWVyeS5zdXBwb3J0LnN1Ym1pdEJ1YmJsZXMgKSB7Ci0KLSAgICAgICAgalF1ZXJ5LmV2
ZW50LnNwZWNpYWwuc3VibWl0ID0gewotICAgICAgICAgICAgICAgIHNldHVwOiBmdW5jdGlvbigp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIE9ubHkgbmVlZCB0aGlzIGZvciBkZWxlZ2F0
ZWQgZm9ybSBzdWJtaXQgZXZlbnRzCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGpRdWVy
eS5ub2RlTmFtZSggdGhpcywgImZvcm0iICkgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gTGF6eS1hZGQgYSBzdWJtaXQgaGFuZGxlciB3aGVuIGEgZGVz
Y2VuZGFudCBmb3JtIG1heSBwb3RlbnRpYWxseSBiZSBzdWJtaXR0ZWQKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGpRdWVyeS5ldmVudC5hZGQoIHRoaXMsICJjbGljay5fc3VibWl0IGtleXByZXNz
Ll9zdWJtaXQiLCBmdW5jdGlvbiggZSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gTm9kZSBuYW1lIGNoZWNrIGF2b2lkcyBhIFZNTC1yZWxhdGVkIGNyYXNoIGluIElFICgj
OTgwNykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVsZW0gPSBlLnRhcmdl
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtID0galF1ZXJ5
Lm5vZGVOYW1lKCBlbGVtLCAiaW5wdXQiICkgfHwgalF1ZXJ5Lm5vZGVOYW1lKCBlbGVtLCAiYnV0
dG9uIiApID8gZWxlbS5mb3JtIDogdW5kZWZpbmVkOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoIGZvcm0gJiYgIWpRdWVyeS5fZGF0YSggZm9ybSwgIl9zdWJtaXRfYXR0YWNo
ZWQiICkgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5
LmV2ZW50LmFkZCggZm9ybSwgInN1Ym1pdC5fc3VibWl0IiwgZnVuY3Rpb24oIGV2ZW50ICkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQuX3N1
Ym1pdF9idWJibGUgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0pOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5f
ZGF0YSggZm9ybSwgIl9zdWJtaXRfYXR0YWNoZWQiLCB0cnVlICk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gcmV0dXJuIHVuZGVmaW5lZCBzaW5jZSB3ZSBkb24ndCBuZWVkIGFu
IGV2ZW50IGxpc3RlbmVyCi0gICAgICAgICAgICAgICAgfSwKLQotICAgICAgICAgICAgICAgIHBv
c3REaXNwYXRjaDogZnVuY3Rpb24oIGV2ZW50ICkgewotICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gSWYgZm9ybSB3YXMgc3VibWl0dGVkIGJ5IHRoZSB1c2VyLCBidWJibGUgdGhlIGV2ZW50IHVw
IHRoZSB0cmVlCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGV2ZW50Ll9zdWJtaXRfYnVi
YmxlICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgZXZlbnQuX3N1
Ym1pdF9idWJibGU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggdGhpcy5w
YXJlbnROb2RlICYmICFldmVudC5pc1RyaWdnZXIgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgalF1ZXJ5LmV2ZW50LnNpbXVsYXRlKCAic3VibWl0IiwgdGhpcy5w
YXJlbnROb2RlLCBldmVudCwgdHJ1ZSApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSwKLQotICAg
ICAgICAgICAgICAgIHRlYXJkb3duOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIE9ubHkgbmVlZCB0aGlzIGZvciBkZWxlZ2F0ZWQgZm9ybSBzdWJtaXQgZXZlbnRzCi0g
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGpRdWVyeS5ub2RlTmFtZSggdGhpcywgImZvcm0i
ICkgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVt
b3ZlIGRlbGVnYXRlZCBoYW5kbGVyczsgY2xlYW5EYXRhIGV2ZW50dWFsbHkgcmVhcHMgc3VibWl0
IGhhbmRsZXJzIGF0dGFjaGVkIGFib3ZlCi0gICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnku
ZXZlbnQucmVtb3ZlKCB0aGlzLCAiLl9zdWJtaXQiICk7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICB9OwotfQotCi0vLyBJRSBjaGFuZ2UgZGVsZWdhdGlvbiBhbmQgY2hlY2tib3gvcmFkaW8g
Zml4Ci1pZiAoICFqUXVlcnkuc3VwcG9ydC5jaGFuZ2VCdWJibGVzICkgewotCi0gICAgICAgIGpR
dWVyeS5ldmVudC5zcGVjaWFsLmNoYW5nZSA9IHsKLQotICAgICAgICAgICAgICAgIHNldHVwOiBm
dW5jdGlvbigpIHsKLQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCByZm9ybUVsZW1zLnRl
c3QoIHRoaXMubm9kZU5hbWUgKSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gSUUgZG9lc24ndCBmaXJlIGNoYW5nZSBvbiBhIGNoZWNrL3JhZGlvIHVudGlsIGJsdXI7IHRy
aWdnZXIgaXQgb24gY2xpY2sKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWZ0
ZXIgYSBwcm9wZXJ0eWNoYW5nZS4gRWF0IHRoZSBibHVyLWNoYW5nZSBpbiBzcGVjaWFsLmNoYW5n
ZS5oYW5kbGUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgc3RpbGwg
ZmlyZXMgb25jaGFuZ2UgYSBzZWNvbmQgdGltZSBmb3IgY2hlY2svcmFkaW8gYWZ0ZXIgYmx1ci4K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCB0aGlzLnR5cGUgPT09ICJjaGVj
a2JveCIgfHwgdGhpcy50eXBlID09PSAicmFkaW8iICkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGpRdWVyeS5ldmVudC5hZGQoIHRoaXMsICJwcm9wZXJ0eWNoYW5n
ZS5fY2hhbmdlIiwgZnVuY3Rpb24oIGV2ZW50ICkgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBldmVudC5vcmlnaW5hbEV2ZW50LnByb3BlcnR5
TmFtZSA9PT0gImNoZWNrZWQiICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9qdXN0X2NoYW5nZWQgPSB0cnVlOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGpRdWVyeS5ldmVudC5hZGQoIHRoaXMsICJjbGljay5fY2hhbmdlIiwg
ZnVuY3Rpb24oIGV2ZW50ICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCB0aGlzLl9qdXN0X2NoYW5nZWQgJiYgIWV2ZW50LmlzVHJpZ2dlciAp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGhpcy5fanVzdF9jaGFuZ2VkID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBBbGxvdyB0cmlnZ2VyZWQsIHNpbXVsYXRlZCBjaGFuZ2UgZXZl
bnRzICgjMTE1MDApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBqUXVlcnkuZXZlbnQuc2ltdWxhdGUoICJjaGFuZ2UiLCB0aGlzLCBldmVudCwgdHJ1ZSAp
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIERlbGVnYXRlZCBldmVudDsgbGF6eS1hZGQgYSBjaGFuZ2UgaGFuZGxlciBv
biBkZXNjZW5kYW50IGlucHV0cwotICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmV2ZW50
LmFkZCggdGhpcywgImJlZm9yZWFjdGl2YXRlLl9jaGFuZ2UiLCBmdW5jdGlvbiggZSApIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVsZW0gPSBlLnRhcmdldDsKLQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHJmb3JtRWxlbXMudGVzdCggZWxlbS5u
b2RlTmFtZSApICYmICFqUXVlcnkuX2RhdGEoIGVsZW0sICJfY2hhbmdlX2F0dGFjaGVkIiApICkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5ldmVudC5h
ZGQoIGVsZW0sICJjaGFuZ2UuX2NoYW5nZSIsIGZ1bmN0aW9uKCBldmVudCApIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggdGhpcy5wYXJlbnRO
b2RlICYmICFldmVudC5pc1NpbXVsYXRlZCAmJiAhZXZlbnQuaXNUcmlnZ2VyICkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnku
ZXZlbnQuc2ltdWxhdGUoICJjaGFuZ2UiLCB0aGlzLnBhcmVudE5vZGUsIGV2ZW50LCB0cnVlICk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5Ll9kYXRhKCBlbGVtLCAiX2NoYW5nZV9hdHRh
Y2hlZCIsIHRydWUgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgfSwKLQotICAgICAgICAgICAg
ICAgIGhhbmRsZTogZnVuY3Rpb24oIGV2ZW50ICkgewotICAgICAgICAgICAgICAgICAgICAgICAg
dmFyIGVsZW0gPSBldmVudC50YXJnZXQ7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN3
YWxsb3cgbmF0aXZlIGNoYW5nZSBldmVudHMgZnJvbSBjaGVja2JveC9yYWRpbywgd2UgYWxyZWFk
eSB0cmlnZ2VyZWQgdGhlbSBhYm92ZQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCB0aGlz
ICE9PSBlbGVtIHx8IGV2ZW50LmlzU2ltdWxhdGVkIHx8IGV2ZW50LmlzVHJpZ2dlciB8fCAoZWxl
bS50eXBlICE9PSAicmFkaW8iICYmIGVsZW0udHlwZSAhPT0gImNoZWNrYm94IikgKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBldmVudC5oYW5kbGVPYmouaGFuZGxl
ci5hcHBseSggdGhpcywgYXJndW1lbnRzICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgfSwKLQotICAgICAgICAgICAgICAgIHRlYXJkb3duOiBmdW5jdGlvbigp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5ldmVudC5yZW1vdmUoIHRoaXMsICIu
X2NoYW5nZSIgKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICFyZm9ybUVsZW1z
LnRlc3QoIHRoaXMubm9kZU5hbWUgKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgIH07Ci19
Ci0KLS8vIENyZWF0ZSAiYnViYmxpbmciIGZvY3VzIGFuZCBibHVyIGV2ZW50cwotaWYgKCAhalF1
ZXJ5LnN1cHBvcnQuZm9jdXNpbkJ1YmJsZXMgKSB7Ci0gICAgICAgIGpRdWVyeS5lYWNoKHsgZm9j
dXM6ICJmb2N1c2luIiwgYmx1cjogImZvY3Vzb3V0IiB9LCBmdW5jdGlvbiggb3JpZywgZml4ICkg
ewotCi0gICAgICAgICAgICAgICAgLy8gQXR0YWNoIGEgc2luZ2xlIGNhcHR1cmluZyBoYW5kbGVy
IHdoaWxlIHNvbWVvbmUgd2FudHMgZm9jdXNpbi9mb2N1c291dAotICAgICAgICAgICAgICAgIHZh
ciBhdHRhY2hlcyA9IDAsCi0gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVyID0gZnVuY3Rp
b24oIGV2ZW50ICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkuZXZl
bnQuc2ltdWxhdGUoIGZpeCwgZXZlbnQudGFyZ2V0LCBqUXVlcnkuZXZlbnQuZml4KCBldmVudCAp
LCB0cnVlICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9OwotCi0gICAgICAgICAgICAgICAg
alF1ZXJ5LmV2ZW50LnNwZWNpYWxbIGZpeCBdID0gewotICAgICAgICAgICAgICAgICAgICAgICAg
c2V0dXA6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
IGF0dGFjaGVzKysgPT09IDAgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lciggb3JpZywgaGFuZGxlciwgdHJ1ZSApOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAg
ICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgdGVhcmRvd246IGZ1bmN0aW9uKCkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIC0tYXR0YWNoZXMgPT09IDAgKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZl
bnRMaXN0ZW5lciggb3JpZywgaGFuZGxlciwgdHJ1ZSApOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
fTsKLSAgICAgICAgfSk7Ci19Ci0KLWpRdWVyeS5mbi5leHRlbmQoewotCi0gICAgICAgIG9uOiBm
dW5jdGlvbiggdHlwZXMsIHNlbGVjdG9yLCBkYXRhLCBmbiwgLypJTlRFUk5BTCovIG9uZSApIHsK
LSAgICAgICAgICAgICAgICB2YXIgb3JpZ0ZuLCB0eXBlOwotCi0gICAgICAgICAgICAgICAgLy8g
VHlwZXMgY2FuIGJlIGEgbWFwIG9mIHR5cGVzL2hhbmRsZXJzCi0gICAgICAgICAgICAgICAgaWYg
KCB0eXBlb2YgdHlwZXMgPT09ICJvYmplY3QiICkgewotICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gKCB0eXBlcy1PYmplY3QsIHNlbGVjdG9yLCBkYXRhICkKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICggdHlwZW9mIHNlbGVjdG9yICE9PSAic3RyaW5nIiApIHsgLy8gJiYgc2VsZWN0b3Ig
IT0gbnVsbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoIHR5cGVzLU9iamVj
dCwgZGF0YSApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhIHx8
IHNlbGVjdG9yOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RvciA9IHVu
ZGVmaW5lZDsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg
ICAgIGZvciAoIHR5cGUgaW4gdHlwZXMgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRoaXMub24oIHR5cGUsIHNlbGVjdG9yLCBkYXRhLCB0eXBlc1sgdHlwZSBdLCBvbmUgKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0aGlzOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmICggZGF0YSA9
PSBudWxsICYmIGZuID09IG51bGwgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyAoIHR5
cGVzLCBmbiApCi0gICAgICAgICAgICAgICAgICAgICAgICBmbiA9IHNlbGVjdG9yOwotICAgICAg
ICAgICAgICAgICAgICAgICAgZGF0YSA9IHNlbGVjdG9yID0gdW5kZWZpbmVkOwotICAgICAgICAg
ICAgICAgIH0gZWxzZSBpZiAoIGZuID09IG51bGwgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoIHR5cGVvZiBzZWxlY3RvciA9PT0gInN0cmluZyIgKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vICggdHlwZXMsIHNlbGVjdG9yLCBmbiApCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZuID0gZGF0YTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGF0YSA9IHVuZGVmaW5lZDsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICggdHlwZXMsIGRhdGEsIGZuICkK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm4gPSBkYXRhOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkYXRhID0gc2VsZWN0b3I7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNlbGVjdG9yID0gdW5kZWZpbmVkOwotICAgICAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoIGZuID09PSBmYWxz
ZSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZuID0gcmV0dXJuRmFsc2U7Ci0gICAgICAg
ICAgICAgICAgfSBlbHNlIGlmICggIWZuICkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHRoaXM7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKCBvbmUg
PT09IDEgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvcmlnRm4gPSBmbjsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGZuID0gZnVuY3Rpb24oIGV2ZW50ICkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBDYW4gdXNlIGFuIGVtcHR5IHNldCwgc2luY2UgZXZlbnQgY29u
dGFpbnMgdGhlIGluZm8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KCku
b2ZmKCBldmVudCApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3Jp
Z0ZuLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH07
Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBVc2Ugc2FtZSBndWlkIHNvIGNhbGxlciBjYW4g
cmVtb3ZlIHVzaW5nIG9yaWdGbgotICAgICAgICAgICAgICAgICAgICAgICAgZm4uZ3VpZCA9IG9y
aWdGbi5ndWlkIHx8ICggb3JpZ0ZuLmd1aWQgPSBqUXVlcnkuZ3VpZCsrICk7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmV2ZW50LmFkZCggdGhpcywgdHlwZXMsIGZu
LCBkYXRhLCBzZWxlY3RvciApOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICB9LAotICAg
ICAgICBvbmU6IGZ1bmN0aW9uKCB0eXBlcywgc2VsZWN0b3IsIGRhdGEsIGZuICkgewotICAgICAg
ICAgICAgICAgIHJldHVybiB0aGlzLm9uKCB0eXBlcywgc2VsZWN0b3IsIGRhdGEsIGZuLCAxICk7
Ci0gICAgICAgIH0sCi0gICAgICAgIG9mZjogZnVuY3Rpb24oIHR5cGVzLCBzZWxlY3RvciwgZm4g
KSB7Ci0gICAgICAgICAgICAgICAgdmFyIGhhbmRsZU9iaiwgdHlwZTsKLSAgICAgICAgICAgICAg
ICBpZiAoIHR5cGVzICYmIHR5cGVzLnByZXZlbnREZWZhdWx0ICYmIHR5cGVzLmhhbmRsZU9iaiAp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vICggZXZlbnQgKSAgZGlzcGF0Y2hlZCBqUXVl
cnkuRXZlbnQKLSAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZU9iaiA9IHR5cGVzLmhhbmRs
ZU9iajsKLSAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeSggdHlwZXMuZGVsZWdhdGVUYXJn
ZXQgKS5vZmYoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZU9iai5uYW1l
c3BhY2UgPyBoYW5kbGVPYmoub3JpZ1R5cGUgKyAiLiIgKyBoYW5kbGVPYmoubmFtZXNwYWNlIDog
aGFuZGxlT2JqLm9yaWdUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5k
bGVPYmouc2VsZWN0b3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZU9i
ai5oYW5kbGVyCi0gICAgICAgICAgICAgICAgICAgICAgICApOwotICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlm
ICggdHlwZW9mIHR5cGVzID09PSAib2JqZWN0IiApIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IC8vICggdHlwZXMtb2JqZWN0IFssIHNlbGVjdG9yXSApCi0gICAgICAgICAgICAgICAgICAgICAg
ICBmb3IgKCB0eXBlIGluIHR5cGVzICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0aGlzLm9mZiggdHlwZSwgc2VsZWN0b3IsIHR5cGVzWyB0eXBlIF0gKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoIHNlbGVjdG9yID09PSBmYWxzZSB8
fCB0eXBlb2Ygc2VsZWN0b3IgPT09ICJmdW5jdGlvbiIgKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAvLyAoIHR5cGVzIFssIGZuXSApCi0gICAgICAgICAgICAgICAgICAgICAgICBmbiA9IHNl
bGVjdG9yOwotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3IgPSB1bmRlZmluZWQ7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmICggZm4gPT09IGZhbHNlICkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgZm4gPSByZXR1cm5GYWxzZTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGpRdWVyeS5ldmVudC5yZW1vdmUoIHRoaXMsIHR5cGVzLCBmbiwg
c2VsZWN0b3IgKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgfSwKLQotICAgICAgICBi
aW5kOiBmdW5jdGlvbiggdHlwZXMsIGRhdGEsIGZuICkgewotICAgICAgICAgICAgICAgIHJldHVy
biB0aGlzLm9uKCB0eXBlcywgbnVsbCwgZGF0YSwgZm4gKTsKLSAgICAgICAgfSwKLSAgICAgICAg
dW5iaW5kOiBmdW5jdGlvbiggdHlwZXMsIGZuICkgewotICAgICAgICAgICAgICAgIHJldHVybiB0
aGlzLm9mZiggdHlwZXMsIG51bGwsIGZuICk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgbGl2ZTog
ZnVuY3Rpb24oIHR5cGVzLCBkYXRhLCBmbiApIHsKLSAgICAgICAgICAgICAgICBqUXVlcnkoIHRo
aXMuY29udGV4dCApLm9uKCB0eXBlcywgdGhpcy5zZWxlY3RvciwgZGF0YSwgZm4gKTsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gdGhpczsKLSAgICAgICAgfSwKLSAgICAgICAgZGllOiBmdW5jdGlv
biggdHlwZXMsIGZuICkgewotICAgICAgICAgICAgICAgIGpRdWVyeSggdGhpcy5jb250ZXh0ICku
b2ZmKCB0eXBlcywgdGhpcy5zZWxlY3RvciB8fCAiKioiLCBmbiApOwotICAgICAgICAgICAgICAg
IHJldHVybiB0aGlzOwotICAgICAgICB9LAotCi0gICAgICAgIGRlbGVnYXRlOiBmdW5jdGlvbigg
c2VsZWN0b3IsIHR5cGVzLCBkYXRhLCBmbiApIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhp
cy5vbiggdHlwZXMsIHNlbGVjdG9yLCBkYXRhLCBmbiApOwotICAgICAgICB9LAotICAgICAgICB1
bmRlbGVnYXRlOiBmdW5jdGlvbiggc2VsZWN0b3IsIHR5cGVzLCBmbiApIHsKLSAgICAgICAgICAg
ICAgICAvLyAoIG5hbWVzcGFjZSApIG9yICggc2VsZWN0b3IsIHR5cGVzIFssIGZuXSApCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPT09IDEgPyB0aGlzLm9mZiggc2Vs
ZWN0b3IsICIqKiIgKSA6IHRoaXMub2ZmKCB0eXBlcywgc2VsZWN0b3IgfHwgIioqIiwgZm4gKTsK
LSAgICAgICAgfSwKLQotICAgICAgICB0cmlnZ2VyOiBmdW5jdGlvbiggdHlwZSwgZGF0YSApIHsK
LSAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgalF1ZXJ5LmV2ZW50LnRyaWdnZXIoIHR5cGUsIGRhdGEsIHRoaXMgKTsK
LSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgfSwKLSAgICAgICAgdHJpZ2dlckhhbmRsZXI6
IGZ1bmN0aW9uKCB0eXBlLCBkYXRhICkgewotICAgICAgICAgICAgICAgIGlmICggdGhpc1swXSAp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBqUXVlcnkuZXZlbnQudHJpZ2dlcigg
dHlwZSwgZGF0YSwgdGhpc1swXSwgdHJ1ZSApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
fSwKLQotICAgICAgICB0b2dnbGU6IGZ1bmN0aW9uKCBmbiApIHsKLSAgICAgICAgICAgICAgICAv
LyBTYXZlIHJlZmVyZW5jZSB0byBhcmd1bWVudHMgZm9yIGFjY2VzcyBpbiBjbG9zdXJlCi0gICAg
ICAgICAgICAgICAgdmFyIGFyZ3MgPSBhcmd1bWVudHMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICBndWlkID0gZm4uZ3VpZCB8fCBqUXVlcnkuZ3VpZCsrLAotICAgICAgICAgICAgICAgICAgICAg
ICAgaSA9IDAsCi0gICAgICAgICAgICAgICAgICAgICAgICB0b2dnbGVyID0gZnVuY3Rpb24oIGV2
ZW50ICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGaWd1cmUgb3V0IHdo
aWNoIGZ1bmN0aW9uIHRvIGV4ZWN1dGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmFyIGxhc3RUb2dnbGUgPSAoIGpRdWVyeS5fZGF0YSggdGhpcywgImxhc3RUb2dnbGUiICsgZm4u
Z3VpZCApIHx8IDAgKSAlIGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVy
eS5fZGF0YSggdGhpcywgImxhc3RUb2dnbGUiICsgZm4uZ3VpZCwgbGFzdFRvZ2dsZSArIDEgKTsK
LQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCBjbGlj
a3Mgc3RvcAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVm
YXVsdCgpOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBleGVjdXRl
IHRoZSBmdW5jdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXJn
c1sgbGFzdFRvZ2dsZSBdLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKSB8fCBmYWxzZTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIH07Ci0KLSAgICAgICAgICAgICAgICAvLyBsaW5rIGFsbCB0aGUg
ZnVuY3Rpb25zLCBzbyBhbnkgb2YgdGhlbSBjYW4gdW5iaW5kIHRoaXMgY2xpY2sgaGFuZGxlcgot
ICAgICAgICAgICAgICAgIHRvZ2dsZXIuZ3VpZCA9IGd1aWQ7Ci0gICAgICAgICAgICAgICAgd2hp
bGUgKCBpIDwgYXJncy5sZW5ndGggKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBhcmdzWyBp
KysgXS5ndWlkID0gZ3VpZDsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBy
ZXR1cm4gdGhpcy5jbGljayggdG9nZ2xlciApOwotICAgICAgICB9LAotCi0gICAgICAgIGhvdmVy
OiBmdW5jdGlvbiggZm5PdmVyLCBmbk91dCApIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhp
cy5tb3VzZWVudGVyKCBmbk92ZXIgKS5tb3VzZWxlYXZlKCBmbk91dCB8fCBmbk92ZXIgKTsKLSAg
ICAgICAgfQotfSk7Ci0KLWpRdWVyeS5lYWNoKCAoImJsdXIgZm9jdXMgZm9jdXNpbiBmb2N1c291
dCBsb2FkIHJlc2l6ZSBzY3JvbGwgdW5sb2FkIGNsaWNrIGRibGNsaWNrICIgKwotICAgICAgICAi
bW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVy
IG1vdXNlbGVhdmUgIiArCi0gICAgICAgICJjaGFuZ2Ugc2VsZWN0IHN1Ym1pdCBrZXlkb3duIGtl
eXByZXNzIGtleXVwIGVycm9yIGNvbnRleHRtZW51Iikuc3BsaXQoIiAiKSwgZnVuY3Rpb24oIGks
IG5hbWUgKSB7Ci0KLSAgICAgICAgLy8gSGFuZGxlIGV2ZW50IGJpbmRpbmcKLSAgICAgICAgalF1
ZXJ5LmZuWyBuYW1lIF0gPSBmdW5jdGlvbiggZGF0YSwgZm4gKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKCBmbiA9PSBudWxsICkgewotICAgICAgICAgICAgICAgICAgICAgICAgZm4gPSBkYXRhOwot
ICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IG51bGw7Ci0gICAgICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPiAwID8KLSAgICAgICAg
ICAgICAgICAgICAgICAgIHRoaXMub24oIG5hbWUsIG51bGwsIGRhdGEsIGZuICkgOgotICAgICAg
ICAgICAgICAgICAgICAgICAgdGhpcy50cmlnZ2VyKCBuYW1lICk7Ci0gICAgICAgIH07Ci0KLSAg
ICAgICAgaWYgKCBya2V5RXZlbnQudGVzdCggbmFtZSApICkgewotICAgICAgICAgICAgICAgIGpR
dWVyeS5ldmVudC5maXhIb29rc1sgbmFtZSBdID0galF1ZXJ5LmV2ZW50LmtleUhvb2tzOwotICAg
ICAgICB9Ci0KLSAgICAgICAgaWYgKCBybW91c2VFdmVudC50ZXN0KCBuYW1lICkgKSB7Ci0gICAg
ICAgICAgICAgICAgalF1ZXJ5LmV2ZW50LmZpeEhvb2tzWyBuYW1lIF0gPSBqUXVlcnkuZXZlbnQu
bW91c2VIb29rczsKLSAgICAgICAgfQotfSk7Ci0vKiEKLSAqIFNpenpsZSBDU1MgU2VsZWN0b3Ig
RW5naW5lCi0gKiBDb3B5cmlnaHQgMjAxMiBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29u
dHJpYnV0b3JzCi0gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UKLSAqIGh0dHA6Ly9z
aXp6bGVqcy5jb20vCi0gKi8KLShmdW5jdGlvbiggd2luZG93LCB1bmRlZmluZWQgKSB7Ci0KLXZh
ciBjYWNoZWRydW5zLAotICAgICAgICBhc3NlcnRHZXRJZE5vdE5hbWUsCi0gICAgICAgIEV4cHIs
Ci0gICAgICAgIGdldFRleHQsCi0gICAgICAgIGlzWE1MLAotICAgICAgICBjb250YWlucywKLSAg
ICAgICAgY29tcGlsZSwKLSAgICAgICAgc29ydE9yZGVyLAotICAgICAgICBoYXNEdXBsaWNhdGUs
Ci0gICAgICAgIG91dGVybW9zdENvbnRleHQsCi0KLSAgICAgICAgYmFzZUhhc0R1cGxpY2F0ZSA9
IHRydWUsCi0gICAgICAgIHN0cnVuZGVmaW5lZCA9ICJ1bmRlZmluZWQiLAotCi0gICAgICAgIGV4
cGFuZG8gPSAoICJzaXpjYWNoZSIgKyBNYXRoLnJhbmRvbSgpICkucmVwbGFjZSggIi4iLCAiIiAp
LAotCi0gICAgICAgIFRva2VuID0gU3RyaW5nLAotICAgICAgICBkb2N1bWVudCA9IHdpbmRvdy5k
b2N1bWVudCwKLSAgICAgICAgZG9jRWxlbSA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwKLSAg
ICAgICAgZGlycnVucyA9IDAsCi0gICAgICAgIGRvbmUgPSAwLAotICAgICAgICBwb3AgPSBbXS5w
b3AsCi0gICAgICAgIHB1c2ggPSBbXS5wdXNoLAotICAgICAgICBzbGljZSA9IFtdLnNsaWNlLAot
ICAgICAgICAvLyBVc2UgYSBzdHJpcHBlZC1kb3duIGluZGV4T2YgaWYgYSBuYXRpdmUgb25lIGlz
IHVuYXZhaWxhYmxlCi0gICAgICAgIGluZGV4T2YgPSBbXS5pbmRleE9mIHx8IGZ1bmN0aW9uKCBl
bGVtICkgewotICAgICAgICAgICAgICAgIHZhciBpID0gMCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGxlbiA9IHRoaXMubGVuZ3RoOwotICAgICAgICAgICAgICAgIGZvciAoIDsgaSA8IGxlbjsg
aSsrICkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCB0aGlzW2ldID09PSBlbGVtICkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IC0xOwotICAgICAgICB9LAotCi0gICAgICAgIC8vIEF1Z21lbnQgYSBmdW5jdGlvbiBmb3Igc3Bl
Y2lhbCB1c2UgYnkgU2l6emxlCi0gICAgICAgIG1hcmtGdW5jdGlvbiA9IGZ1bmN0aW9uKCBmbiwg
dmFsdWUgKSB7Ci0gICAgICAgICAgICAgICAgZm5bIGV4cGFuZG8gXSA9IHZhbHVlID09IG51bGwg
fHwgdmFsdWU7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZuOwotICAgICAgICB9LAotCi0gICAg
ICAgIGNyZWF0ZUNhY2hlID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGNhY2hl
ID0ge30sCi0gICAgICAgICAgICAgICAgICAgICAgICBrZXlzID0gW107Ci0KLSAgICAgICAgICAg
ICAgICByZXR1cm4gbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCBrZXksIHZhbHVlICkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gT25seSBrZWVwIHRoZSBtb3N0IHJlY2VudCBlbnRyaWVzCi0g
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGtleXMucHVzaCgga2V5ICkgPiBFeHByLmNhY2hl
TGVuZ3RoICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgY2FjaGVb
IGtleXMuc2hpZnQoKSBdOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICAgICAgICAgICAgICAvLyBSZXRyaWV2ZSB3aXRoIChrZXkgKyAiICIpIHRvIGF2b2lkIGNvbGxp
c2lvbiB3aXRoIG5hdGl2ZSBPYmplY3QucHJvdG90eXBlIHByb3BlcnRpZXMgKHNlZSBJc3N1ZSAj
MTU3KQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChjYWNoZVsga2V5ICsgIiAiIF0g
PSB2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgfSwgY2FjaGUgKTsKLSAgICAgICAgfSwKLQotICAg
ICAgICBjbGFzc0NhY2hlID0gY3JlYXRlQ2FjaGUoKSwKLSAgICAgICAgdG9rZW5DYWNoZSA9IGNy
ZWF0ZUNhY2hlKCksCi0gICAgICAgIGNvbXBpbGVyQ2FjaGUgPSBjcmVhdGVDYWNoZSgpLAotCi0g
ICAgICAgIC8vIFJlZ2V4Ci0KLSAgICAgICAgLy8gV2hpdGVzcGFjZSBjaGFyYWN0ZXJzIGh0dHA6
Ly93d3cudzMub3JnL1RSL2NzczMtc2VsZWN0b3JzLyN3aGl0ZXNwYWNlCi0gICAgICAgIHdoaXRl
c3BhY2UgPSAiW1xceDIwXFx0XFxyXFxuXFxmXSIsCi0gICAgICAgIC8vIGh0dHA6Ly93d3cudzMu
b3JnL1RSL2NzczMtc3ludGF4LyNjaGFyYWN0ZXJzCi0gICAgICAgIGNoYXJhY3RlckVuY29kaW5n
ID0gIig/OlxcXFwufFstXFx3XXxbXlxceDAwLVxceGEwXSkrIiwKLQotICAgICAgICAvLyBMb29z
ZWx5IG1vZGVsZWQgb24gQ1NTIGlkZW50aWZpZXIgY2hhcmFjdGVycwotICAgICAgICAvLyBBbiB1
bnF1b3RlZCB2YWx1ZSBzaG91bGQgYmUgYSBDU1MgaWRlbnRpZmllciAoaHR0cDovL3d3dy53My5v
cmcvVFIvY3NzMy1zZWxlY3RvcnMvI2F0dHJpYnV0ZS1zZWxlY3RvcnMpCi0gICAgICAgIC8vIFBy
b3BlciBzeW50YXg6IGh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIxL3N5bmRhdGEuaHRtbCN2YWx1
ZS1kZWYtaWRlbnRpZmllcgotICAgICAgICBpZGVudGlmaWVyID0gY2hhcmFjdGVyRW5jb2Rpbmcu
cmVwbGFjZSggInciLCAidyMiICksCi0KLSAgICAgICAgLy8gQWNjZXB0YWJsZSBvcGVyYXRvcnMg
aHR0cDovL3d3dy53My5vcmcvVFIvc2VsZWN0b3JzLyNhdHRyaWJ1dGUtc2VsZWN0b3JzCi0gICAg
ICAgIG9wZXJhdG9ycyA9ICIoWypeJHwhfl0/PSkiLAotICAgICAgICBhdHRyaWJ1dGVzID0gIlxc
WyIgKyB3aGl0ZXNwYWNlICsgIiooIiArIGNoYXJhY3RlckVuY29kaW5nICsgIikiICsgd2hpdGVz
cGFjZSArCi0gICAgICAgICAgICAgICAgIiooPzoiICsgb3BlcmF0b3JzICsgd2hpdGVzcGFjZSAr
ICIqKD86KFsnXCJdKSgoPzpcXFxcLnxbXlxcXFxdKSo/KVxcM3woIiArIGlkZW50aWZpZXIgKyAi
KXwpfCkiICsgd2hpdGVzcGFjZSArICIqXFxdIiwKLQotICAgICAgICAvLyBQcmVmZXIgYXJndW1l
bnRzIG5vdCBpbiBwYXJlbnMvYnJhY2tldHMsCi0gICAgICAgIC8vICAgdGhlbiBhdHRyaWJ1dGUg
c2VsZWN0b3JzIGFuZCBub24tcHNldWRvcyAoZGVub3RlZCBieSA6KSwKLSAgICAgICAgLy8gICB0
aGVuIGFueXRoaW5nIGVsc2UKLSAgICAgICAgLy8gVGhlc2UgcHJlZmVyZW5jZXMgYXJlIGhlcmUg
dG8gcmVkdWNlIHRoZSBudW1iZXIgb2Ygc2VsZWN0b3JzCi0gICAgICAgIC8vICAgbmVlZGluZyB0
b2tlbml6ZSBpbiB0aGUgUFNFVURPIHByZUZpbHRlcgotICAgICAgICBwc2V1ZG9zID0gIjooIiAr
IGNoYXJhY3RlckVuY29kaW5nICsgIikoPzpcXCgoPzooWydcIl0pKCg/OlxcXFwufFteXFxcXF0p
Kj8pXFwyfChbXigpW1xcXV0qfCg/Oig/OiIgKyBhdHRyaWJ1dGVzICsgIil8W146XXxcXFxcLikq
fC4qKSlcXCl8KSIsCi0KLSAgICAgICAgLy8gRm9yIG1hdGNoRXhwci5QT1MgYW5kIG1hdGNoRXhw
ci5uZWVkc0NvbnRleHQKLSAgICAgICAgcG9zID0gIjooZXZlbnxvZGR8ZXF8Z3R8bHR8bnRofGZp
cnN0fGxhc3QpKD86XFwoIiArIHdoaXRlc3BhY2UgKwotICAgICAgICAgICAgICAgICIqKCg/Oi1c
XGQpP1xcZCopIiArIHdoaXRlc3BhY2UgKyAiKlxcKXwpKD89W14tXXwkKSIsCi0KLSAgICAgICAg
Ly8gTGVhZGluZyBhbmQgbm9uLWVzY2FwZWQgdHJhaWxpbmcgd2hpdGVzcGFjZSwgY2FwdHVyaW5n
IHNvbWUgbm9uLXdoaXRlc3BhY2UgY2hhcmFjdGVycyBwcmVjZWRpbmcgdGhlIGxhdHRlcgotICAg
ICAgICBydHJpbSA9IG5ldyBSZWdFeHAoICJeIiArIHdoaXRlc3BhY2UgKyAiK3woKD86XnxbXlxc
XFxdKSg/OlxcXFwuKSopIiArIHdoaXRlc3BhY2UgKyAiKyQiLCAiZyIgKSwKLQotICAgICAgICBy
Y29tbWEgPSBuZXcgUmVnRXhwKCAiXiIgKyB3aGl0ZXNwYWNlICsgIiosIiArIHdoaXRlc3BhY2Ug
KyAiKiIgKSwKLSAgICAgICAgcmNvbWJpbmF0b3JzID0gbmV3IFJlZ0V4cCggIl4iICsgd2hpdGVz
cGFjZSArICIqKFtcXHgyMFxcdFxcclxcblxcZj4rfl0pIiArIHdoaXRlc3BhY2UgKyAiKiIgKSwK
LSAgICAgICAgcnBzZXVkbyA9IG5ldyBSZWdFeHAoIHBzZXVkb3MgKSwKLQotICAgICAgICAvLyBF
YXNpbHktcGFyc2VhYmxlL3JldHJpZXZhYmxlIElEIG9yIFRBRyBvciBDTEFTUyBzZWxlY3RvcnMK
LSAgICAgICAgcnF1aWNrRXhwciA9IC9eKD86IyhbXHdcLV0rKXwoXHcrKXxcLihbXHdcLV0rKSkk
LywKLQotICAgICAgICBybm90ID0gL146bm90LywKLSAgICAgICAgcnNpYmxpbmcgPSAvW1x4MjBc
dFxyXG5cZl0qWyt+XS8sCi0gICAgICAgIHJlbmRzV2l0aE5vdCA9IC86bm90XCgkLywKLQotICAg
ICAgICByaGVhZGVyID0gL2hcZC9pLAotICAgICAgICByaW5wdXRzID0gL2lucHV0fHNlbGVjdHx0
ZXh0YXJlYXxidXR0b24vaSwKLQotICAgICAgICByYmFja3NsYXNoID0gL1xcKD8hXFwpL2csCi0K
LSAgICAgICAgbWF0Y2hFeHByID0gewotICAgICAgICAgICAgICAgICJJRCI6IG5ldyBSZWdFeHAo
ICJeIygiICsgY2hhcmFjdGVyRW5jb2RpbmcgKyAiKSIgKSwKLSAgICAgICAgICAgICAgICAiQ0xB
U1MiOiBuZXcgUmVnRXhwKCAiXlxcLigiICsgY2hhcmFjdGVyRW5jb2RpbmcgKyAiKSIgKSwKLSAg
ICAgICAgICAgICAgICAiTkFNRSI6IG5ldyBSZWdFeHAoICJeXFxbbmFtZT1bJ1wiXT8oIiArIGNo
YXJhY3RlckVuY29kaW5nICsgIilbJ1wiXT9cXF0iICksCi0gICAgICAgICAgICAgICAgIlRBRyI6
IG5ldyBSZWdFeHAoICJeKCIgKyBjaGFyYWN0ZXJFbmNvZGluZy5yZXBsYWNlKCAidyIsICJ3KiIg
KSArICIpIiApLAotICAgICAgICAgICAgICAgICJBVFRSIjogbmV3IFJlZ0V4cCggIl4iICsgYXR0
cmlidXRlcyApLAotICAgICAgICAgICAgICAgICJQU0VVRE8iOiBuZXcgUmVnRXhwKCAiXiIgKyBw
c2V1ZG9zICksCi0gICAgICAgICAgICAgICAgIlBPUyI6IG5ldyBSZWdFeHAoIHBvcywgImkiICks
Ci0gICAgICAgICAgICAgICAgIkNISUxEIjogbmV3IFJlZ0V4cCggIl46KG9ubHl8bnRofGZpcnN0
fGxhc3QpLWNoaWxkKD86XFwoIiArIHdoaXRlc3BhY2UgKwotICAgICAgICAgICAgICAgICAgICAg
ICAgIiooZXZlbnxvZGR8KChbKy1dfCkoXFxkKilufCkiICsgd2hpdGVzcGFjZSArICIqKD86KFsr
LV18KSIgKyB3aGl0ZXNwYWNlICsKLSAgICAgICAgICAgICAgICAgICAgICAgICIqKFxcZCspfCkp
IiArIHdoaXRlc3BhY2UgKyAiKlxcKXwpIiwgImkiICksCi0gICAgICAgICAgICAgICAgLy8gRm9y
IHVzZSBpbiBsaWJyYXJpZXMgaW1wbGVtZW50aW5nIC5pcygpCi0gICAgICAgICAgICAgICAgIm5l
ZWRzQ29udGV4dCI6IG5ldyBSZWdFeHAoICJeIiArIHdoaXRlc3BhY2UgKyAiKls+K35dfCIgKyBw
b3MsICJpIiApCi0gICAgICAgIH0sCi0KLSAgICAgICAgLy8gU3VwcG9ydAotCi0gICAgICAgIC8v
IFVzZWQgZm9yIHRlc3Rpbmcgc29tZXRoaW5nIG9uIGFuIGVsZW1lbnQKLSAgICAgICAgYXNzZXJ0
ID0gZnVuY3Rpb24oIGZuICkgewotICAgICAgICAgICAgICAgIHZhciBkaXYgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJkaXYiKTsKLQotICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZm4oIGRpdiApOwotICAgICAgICAgICAgICAgIH0gY2F0Y2gg
KGUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAg
ICAgICB9IGZpbmFsbHkgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVsZWFzZSBtZW1v
cnkgaW4gSUUKLSAgICAgICAgICAgICAgICAgICAgICAgIGRpdiA9IG51bGw7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICB9LAotCi0gICAgICAgIC8vIENoZWNrIGlmIGdldEVsZW1lbnRzQnlU
YWdOYW1lKCIqIikgcmV0dXJucyBvbmx5IGVsZW1lbnRzCi0gICAgICAgIGFzc2VydFRhZ05hbWVO
b0NvbW1lbnRzID0gYXNzZXJ0KGZ1bmN0aW9uKCBkaXYgKSB7Ci0gICAgICAgICAgICAgICAgZGl2
LmFwcGVuZENoaWxkKCBkb2N1bWVudC5jcmVhdGVDb21tZW50KCIiKSApOwotICAgICAgICAgICAg
ICAgIHJldHVybiAhZGl2LmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikubGVuZ3RoOwotICAgICAg
ICB9KSwKLQotICAgICAgICAvLyBDaGVjayBpZiBnZXRBdHRyaWJ1dGUgcmV0dXJucyBub3JtYWxp
emVkIGhyZWYgYXR0cmlidXRlcwotICAgICAgICBhc3NlcnRIcmVmTm90Tm9ybWFsaXplZCA9IGFz
c2VydChmdW5jdGlvbiggZGl2ICkgewotICAgICAgICAgICAgICAgIGRpdi5pbm5lckhUTUwgPSAi
PGEgaHJlZj0nIyc+PC9hPiI7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGRpdi5maXJzdENoaWxk
ICYmIHR5cGVvZiBkaXYuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUgIT09IHN0cnVuZGVmaW5lZCAm
JgotICAgICAgICAgICAgICAgICAgICAgICAgZGl2LmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCJo
cmVmIikgPT09ICIjIjsKLSAgICAgICAgfSksCi0KLSAgICAgICAgLy8gQ2hlY2sgaWYgYXR0cmli
dXRlcyBzaG91bGQgYmUgcmV0cmlldmVkIGJ5IGF0dHJpYnV0ZSBub2RlcwotICAgICAgICBhc3Nl
cnRBdHRyaWJ1dGVzID0gYXNzZXJ0KGZ1bmN0aW9uKCBkaXYgKSB7Ci0gICAgICAgICAgICAgICAg
ZGl2LmlubmVySFRNTCA9ICI8c2VsZWN0Pjwvc2VsZWN0PiI7Ci0gICAgICAgICAgICAgICAgdmFy
IHR5cGUgPSB0eXBlb2YgZGl2Lmxhc3RDaGlsZC5nZXRBdHRyaWJ1dGUoIm11bHRpcGxlIik7Ci0g
ICAgICAgICAgICAgICAgLy8gSUU4IHJldHVybnMgYSBzdHJpbmcgZm9yIHNvbWUgYXR0cmlidXRl
cyBldmVuIHdoZW4gbm90IHByZXNlbnQKLSAgICAgICAgICAgICAgICByZXR1cm4gdHlwZSAhPT0g
ImJvb2xlYW4iICYmIHR5cGUgIT09ICJzdHJpbmciOwotICAgICAgICB9KSwKLQotICAgICAgICAv
LyBDaGVjayBpZiBnZXRFbGVtZW50c0J5Q2xhc3NOYW1lIGNhbiBiZSB0cnVzdGVkCi0gICAgICAg
IGFzc2VydFVzYWJsZUNsYXNzTmFtZSA9IGFzc2VydChmdW5jdGlvbiggZGl2ICkgewotICAgICAg
ICAgICAgICAgIC8vIE9wZXJhIGNhbid0IGZpbmQgYSBzZWNvbmQgY2xhc3NuYW1lIChpbiA5LjYp
Ci0gICAgICAgICAgICAgICAgZGl2LmlubmVySFRNTCA9ICI8ZGl2IGNsYXNzPSdoaWRkZW4gZSc+
PC9kaXY+PGRpdiBjbGFzcz0naGlkZGVuJz48L2Rpdj4iOwotICAgICAgICAgICAgICAgIGlmICgg
IWRpdi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lIHx8ICFkaXYuZ2V0RWxlbWVudHNCeUNsYXNzTmFt
ZSgiZSIpLmxlbmd0aCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBTYWZhcmkgMy4yIGNhY2hl
cyBjbGFzcyBhdHRyaWJ1dGVzIGFuZCBkb2Vzbid0IGNhdGNoIGNoYW5nZXMKLSAgICAgICAgICAg
ICAgICBkaXYubGFzdENoaWxkLmNsYXNzTmFtZSA9ICJlIjsKLSAgICAgICAgICAgICAgICByZXR1
cm4gZGl2LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImUiKS5sZW5ndGggPT09IDI7Ci0gICAgICAg
IH0pLAotCi0gICAgICAgIC8vIENoZWNrIGlmIGdldEVsZW1lbnRCeUlkIHJldHVybnMgZWxlbWVu
dHMgYnkgbmFtZQotICAgICAgICAvLyBDaGVjayBpZiBnZXRFbGVtZW50c0J5TmFtZSBwcml2aWxl
Z2VzIGZvcm0gY29udHJvbHMgb3IgcmV0dXJucyBlbGVtZW50cyBieSBJRAotICAgICAgICBhc3Nl
cnRVc2FibGVOYW1lID0gYXNzZXJ0KGZ1bmN0aW9uKCBkaXYgKSB7Ci0gICAgICAgICAgICAgICAg
Ly8gSW5qZWN0IGNvbnRlbnQKLSAgICAgICAgICAgICAgICBkaXYuaWQgPSBleHBhbmRvICsgMDsK
LSAgICAgICAgICAgICAgICBkaXYuaW5uZXJIVE1MID0gIjxhIG5hbWU9JyIgKyBleHBhbmRvICsg
Iic+PC9hPjxkaXYgbmFtZT0nIiArIGV4cGFuZG8gKyAiJz48L2Rpdj4iOwotICAgICAgICAgICAg
ICAgIGRvY0VsZW0uaW5zZXJ0QmVmb3JlKCBkaXYsIGRvY0VsZW0uZmlyc3RDaGlsZCApOwotCi0g
ICAgICAgICAgICAgICAgLy8gVGVzdAotICAgICAgICAgICAgICAgIHZhciBwYXNzID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeU5hbWUgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ1Z2d5
IGJyb3dzZXJzIHdpbGwgcmV0dXJuIGZld2VyIHRoYW4gdGhlIGNvcnJlY3QgMgotICAgICAgICAg
ICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoIGV4cGFuZG8gKS5sZW5n
dGggPT09IDIgKwotICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnVnZ3kgYnJvd3NlcnMgd2ls
bCByZXR1cm4gbW9yZSB0aGFuIHRoZSBjb3JyZWN0IDAKLSAgICAgICAgICAgICAgICAgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCBleHBhbmRvICsgMCApLmxlbmd0aDsKLSAgICAg
ICAgICAgICAgICBhc3NlcnRHZXRJZE5vdE5hbWUgPSAhZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
IGV4cGFuZG8gKTsKLQotICAgICAgICAgICAgICAgIC8vIENsZWFudXAKLSAgICAgICAgICAgICAg
ICBkb2NFbGVtLnJlbW92ZUNoaWxkKCBkaXYgKTsKLQotICAgICAgICAgICAgICAgIHJldHVybiBw
YXNzOwotICAgICAgICB9KTsKLQotLy8gSWYgc2xpY2UgaXMgbm90IGF2YWlsYWJsZSwgcHJvdmlk
ZSBhIGJhY2t1cAotdHJ5IHsKLSAgICAgICAgc2xpY2UuY2FsbCggZG9jRWxlbS5jaGlsZE5vZGVz
LCAwIClbMF0ubm9kZVR5cGU7Ci19IGNhdGNoICggZSApIHsKLSAgICAgICAgc2xpY2UgPSBmdW5j
dGlvbiggaSApIHsKLSAgICAgICAgICAgICAgICB2YXIgZWxlbSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJlc3VsdHMgPSBbXTsKLSAgICAgICAgICAgICAgICBmb3IgKCA7IChlbGVtID0gdGhp
c1tpXSk7IGkrKyApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMucHVzaCggZWxl
bSApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0czsK
LSAgICAgICAgfTsKLX0KLQotZnVuY3Rpb24gU2l6emxlKCBzZWxlY3RvciwgY29udGV4dCwgcmVz
dWx0cywgc2VlZCApIHsKLSAgICAgICAgcmVzdWx0cyA9IHJlc3VsdHMgfHwgW107Ci0gICAgICAg
IGNvbnRleHQgPSBjb250ZXh0IHx8IGRvY3VtZW50OwotICAgICAgICB2YXIgbWF0Y2gsIGVsZW0s
IHhtbCwgbSwKLSAgICAgICAgICAgICAgICBub2RlVHlwZSA9IGNvbnRleHQubm9kZVR5cGU7Ci0K
LSAgICAgICAgaWYgKCAhc2VsZWN0b3IgfHwgdHlwZW9mIHNlbGVjdG9yICE9PSAic3RyaW5nIiAp
IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0czsKLSAgICAgICAgfQotCi0gICAgICAg
IGlmICggbm9kZVR5cGUgIT09IDEgJiYgbm9kZVR5cGUgIT09IDkgKSB7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIFtdOwotICAgICAgICB9Ci0KLSAgICAgICAgeG1sID0gaXNYTUwoIGNvbnRleHQg
KTsKLQotICAgICAgICBpZiAoICF4bWwgJiYgIXNlZWQgKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KCAobWF0Y2ggPSBycXVpY2tFeHByLmV4ZWMoIHNlbGVjdG9yICkpICkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gU3BlZWQtdXA6IFNpenpsZSgiI0lEIikKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICggKG0gPSBtYXRjaFsxXSkgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICggbm9kZVR5cGUgPT09IDkgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZWxlbSA9IGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQoIG0gKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayBwYXJlbnROb2RlIHRv
IGNhdGNoIHdoZW4gQmxhY2tiZXJyeSA0LjYgcmV0dXJucwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIG5vZGVzIHRoYXQgYXJlIG5vIGxvbmdlciBpbiB0aGUgZG9j
dW1lbnQgIzY5NjMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
IGVsZW0gJiYgZWxlbS5wYXJlbnROb2RlICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gSGFuZGxlIHRoZSBjYXNlIHdoZXJlIElFLCBPcGVyYSwg
YW5kIFdlYmtpdCByZXR1cm4gaXRlbXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIGJ5IG5hbWUgaW5zdGVhZCBvZiBJRAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBlbGVtLmlkID09PSBtICkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXN1bHRzLnB1c2goIGVsZW0gKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdHM7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRzOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDb250ZXh0IGlz
IG5vdCBhIGRvY3VtZW50Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCBjb250ZXh0Lm93bmVyRG9jdW1lbnQgJiYgKGVsZW0gPSBjb250ZXh0Lm93bmVyRG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoIG0gKSkgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnRhaW5zKCBjb250ZXh0LCBlbGVtICkgJiYgZWxlbS5pZCA9
PT0gbSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlc3VsdHMucHVzaCggZWxlbSApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdHM7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIFNwZWVkLXVwOiBTaXp6bGUoIlRBRyIpCi0gICAgICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCBtYXRjaFsyXSApIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHVzaC5hcHBseSggcmVzdWx0cywgc2xpY2UuY2FsbChjb250ZXh0
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCBzZWxlY3RvciApLCAwKSApOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0czsKLQotICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gU3BlZWQtdXA6IFNpenpsZSgiLkNMQVNTIikKLSAgICAgICAgICAgICAgICAgICAgICAg
IH0gZWxzZSBpZiAoIChtID0gbWF0Y2hbM10pICYmIGFzc2VydFVzYWJsZUNsYXNzTmFtZSAmJiBj
b250ZXh0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHB1c2guYXBwbHkoIHJlc3VsdHMsIHNsaWNlLmNhbGwoY29udGV4dC5nZXRFbGVt
ZW50c0J5Q2xhc3NOYW1lKCBtICksIDApICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiByZXN1bHRzOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vIEFsbCBvdGhlcnMKLSAgICAgICAgcmV0
dXJuIHNlbGVjdCggc2VsZWN0b3IucmVwbGFjZSggcnRyaW0sICIkMSIgKSwgY29udGV4dCwgcmVz
dWx0cywgc2VlZCwgeG1sICk7Ci19Ci0KLVNpenpsZS5tYXRjaGVzID0gZnVuY3Rpb24oIGV4cHIs
IGVsZW1lbnRzICkgewotICAgICAgICByZXR1cm4gU2l6emxlKCBleHByLCBudWxsLCBudWxsLCBl
bGVtZW50cyApOwotfTsKLQotU2l6emxlLm1hdGNoZXNTZWxlY3RvciA9IGZ1bmN0aW9uKCBlbGVt
LCBleHByICkgewotICAgICAgICByZXR1cm4gU2l6emxlKCBleHByLCBudWxsLCBudWxsLCBbIGVs
ZW0gXSApLmxlbmd0aCA+IDA7Ci19OwotCi0vLyBSZXR1cm5zIGEgZnVuY3Rpb24gdG8gdXNlIGlu
IHBzZXVkb3MgZm9yIGlucHV0IHR5cGVzCi1mdW5jdGlvbiBjcmVhdGVJbnB1dFBzZXVkbyggdHlw
ZSApIHsKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkgewotICAgICAgICAgICAgICAg
IHZhciBuYW1lID0gZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOwotICAgICAgICAgICAgICAg
IHJldHVybiBuYW1lID09PSAiaW5wdXQiICYmIGVsZW0udHlwZSA9PT0gdHlwZTsKLSAgICAgICAg
fTsKLX0KLQotLy8gUmV0dXJucyBhIGZ1bmN0aW9uIHRvIHVzZSBpbiBwc2V1ZG9zIGZvciBidXR0
b25zCi1mdW5jdGlvbiBjcmVhdGVCdXR0b25Qc2V1ZG8oIHR5cGUgKSB7Ci0gICAgICAgIHJldHVy
biBmdW5jdGlvbiggZWxlbSApIHsKLSAgICAgICAgICAgICAgICB2YXIgbmFtZSA9IGVsZW0ubm9k
ZU5hbWUudG9Mb3dlckNhc2UoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gKG5hbWUgPT09ICJp
bnB1dCIgfHwgbmFtZSA9PT0gImJ1dHRvbiIpICYmIGVsZW0udHlwZSA9PT0gdHlwZTsKLSAgICAg
ICAgfTsKLX0KLQotLy8gUmV0dXJucyBhIGZ1bmN0aW9uIHRvIHVzZSBpbiBwc2V1ZG9zIGZvciBw
b3NpdGlvbmFscwotZnVuY3Rpb24gY3JlYXRlUG9zaXRpb25hbFBzZXVkbyggZm4gKSB7Ci0gICAg
ICAgIHJldHVybiBtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIGFyZ3VtZW50ICkgewotICAgICAgICAg
ICAgICAgIGFyZ3VtZW50ID0gK2FyZ3VtZW50OwotICAgICAgICAgICAgICAgIHJldHVybiBtYXJr
RnVuY3Rpb24oZnVuY3Rpb24oIHNlZWQsIG1hdGNoZXMgKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB2YXIgaiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hJbmRleGVz
ID0gZm4oIFtdLCBzZWVkLmxlbmd0aCwgYXJndW1lbnQgKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaSA9IG1hdGNoSW5kZXhlcy5sZW5ndGg7Ci0KLSAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIE1hdGNoIGVsZW1lbnRzIGZvdW5kIGF0IHRoZSBzcGVjaWZpZWQgaW5kZXhlcwot
ICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCBpLS0gKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICggc2VlZFsgKGogPSBtYXRjaEluZGV4ZXNbaV0pIF0gKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VlZFtqXSA9ICEobWF0Y2hl
c1tqXSA9IHNlZWRbal0pOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwot
fQotCi0vKioKLSAqIFV0aWxpdHkgZnVuY3Rpb24gZm9yIHJldHJpZXZpbmcgdGhlIHRleHQgdmFs
dWUgb2YgYW4gYXJyYXkgb2YgRE9NIG5vZGVzCi0gKiBAcGFyYW0ge0FycmF5fEVsZW1lbnR9IGVs
ZW0KLSAqLwotZ2V0VGV4dCA9IFNpenpsZS5nZXRUZXh0ID0gZnVuY3Rpb24oIGVsZW0gKSB7Ci0g
ICAgICAgIHZhciBub2RlLAotICAgICAgICAgICAgICAgIHJldCA9ICIiLAotICAgICAgICAgICAg
ICAgIGkgPSAwLAotICAgICAgICAgICAgICAgIG5vZGVUeXBlID0gZWxlbS5ub2RlVHlwZTsKLQot
ICAgICAgICBpZiAoIG5vZGVUeXBlICkgewotICAgICAgICAgICAgICAgIGlmICggbm9kZVR5cGUg
PT09IDEgfHwgbm9kZVR5cGUgPT09IDkgfHwgbm9kZVR5cGUgPT09IDExICkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gVXNlIHRleHRDb250ZW50IGZvciBlbGVtZW50cwotICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gaW5uZXJUZXh0IHVzYWdlIHJlbW92ZWQgZm9yIGNvbnNpc3RlbmN5
IG9mIG5ldyBsaW5lcyAoc2VlICMxMTE1MykKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICgg
dHlwZW9mIGVsZW0udGV4dENvbnRlbnQgPT09ICJzdHJpbmciICkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbS50ZXh0Q29udGVudDsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRy
YXZlcnNlIGl0cyBjaGlsZHJlbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3Ig
KCBlbGVtID0gZWxlbS5maXJzdENoaWxkOyBlbGVtOyBlbGVtID0gZWxlbS5uZXh0U2libGluZyAp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXQgKz0gZ2V0VGV4
dCggZWxlbSApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmICggbm9kZVR5cGUgPT09
IDMgfHwgbm9kZVR5cGUgPT09IDQgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZWxlbS5ub2RlVmFsdWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIC8vIERv
IG5vdCBpbmNsdWRlIGNvbW1lbnQgb3IgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbiBub2RlcwotICAg
ICAgICB9IGVsc2UgewotCi0gICAgICAgICAgICAgICAgLy8gSWYgbm8gbm9kZVR5cGUsIHRoaXMg
aXMgZXhwZWN0ZWQgdG8gYmUgYW4gYXJyYXkKLSAgICAgICAgICAgICAgICBmb3IgKCA7IChub2Rl
ID0gZWxlbVtpXSk7IGkrKyApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIERvIG5vdCB0
cmF2ZXJzZSBjb21tZW50IG5vZGVzCi0gICAgICAgICAgICAgICAgICAgICAgICByZXQgKz0gZ2V0
VGV4dCggbm9kZSApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICByZXR1
cm4gcmV0OwotfTsKLQotaXNYTUwgPSBTaXp6bGUuaXNYTUwgPSBmdW5jdGlvbiggZWxlbSApIHsK
LSAgICAgICAgLy8gZG9jdW1lbnRFbGVtZW50IGlzIHZlcmlmaWVkIGZvciBjYXNlcyB3aGVyZSBp
dCBkb2Vzbid0IHlldCBleGlzdAotICAgICAgICAvLyAoc3VjaCBhcyBsb2FkaW5nIGlmcmFtZXMg
aW4gSUUgLSAjNDgzMykKLSAgICAgICAgdmFyIGRvY3VtZW50RWxlbWVudCA9IGVsZW0gJiYgKGVs
ZW0ub3duZXJEb2N1bWVudCB8fCBlbGVtKS5kb2N1bWVudEVsZW1lbnQ7Ci0gICAgICAgIHJldHVy
biBkb2N1bWVudEVsZW1lbnQgPyBkb2N1bWVudEVsZW1lbnQubm9kZU5hbWUgIT09ICJIVE1MIiA6
IGZhbHNlOwotfTsKLQotLy8gRWxlbWVudCBjb250YWlucyBhbm90aGVyCi1jb250YWlucyA9IFNp
enpsZS5jb250YWlucyA9IGRvY0VsZW0uY29udGFpbnMgPwotICAgICAgICBmdW5jdGlvbiggYSwg
YiApIHsKLSAgICAgICAgICAgICAgICB2YXIgYWRvd24gPSBhLm5vZGVUeXBlID09PSA5ID8gYS5k
b2N1bWVudEVsZW1lbnQgOiBhLAotICAgICAgICAgICAgICAgICAgICAgICAgYnVwID0gYiAmJiBi
LnBhcmVudE5vZGU7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGEgPT09IGJ1cCB8fCAhISggYnVw
ICYmIGJ1cC5ub2RlVHlwZSA9PT0gMSAmJiBhZG93bi5jb250YWlucyAmJiBhZG93bi5jb250YWlu
cyhidXApICk7Ci0gICAgICAgIH0gOgotICAgICAgICBkb2NFbGVtLmNvbXBhcmVEb2N1bWVudFBv
c2l0aW9uID8KLSAgICAgICAgZnVuY3Rpb24oIGEsIGIgKSB7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIGIgJiYgISEoIGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oIGIgKSAmIDE2ICk7Ci0gICAg
ICAgIH0gOgotICAgICAgICBmdW5jdGlvbiggYSwgYiApIHsKLSAgICAgICAgICAgICAgICB3aGls
ZSAoIChiID0gYi5wYXJlbnROb2RlKSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICgg
YiA9PT0gYSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfTsKLQotU2l6emxlLmF0dHIgPSBmdW5jdGlv
biggZWxlbSwgbmFtZSApIHsKLSAgICAgICAgdmFyIHZhbCwKLSAgICAgICAgICAgICAgICB4bWwg
PSBpc1hNTCggZWxlbSApOwotCi0gICAgICAgIGlmICggIXhtbCApIHsKLSAgICAgICAgICAgICAg
ICBuYW1lID0gbmFtZS50b0xvd2VyQ2FzZSgpOwotICAgICAgICB9Ci0gICAgICAgIGlmICggKHZh
bCA9IEV4cHIuYXR0ckhhbmRsZVsgbmFtZSBdKSApIHsKLSAgICAgICAgICAgICAgICByZXR1cm4g
dmFsKCBlbGVtICk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCB4bWwgfHwgYXNzZXJ0QXR0cmli
dXRlcyApIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZWxlbS5nZXRBdHRyaWJ1dGUoIG5hbWUg
KTsKLSAgICAgICAgfQotICAgICAgICB2YWwgPSBlbGVtLmdldEF0dHJpYnV0ZU5vZGUoIG5hbWUg
KTsKLSAgICAgICAgcmV0dXJuIHZhbCA/Ci0gICAgICAgICAgICAgICAgdHlwZW9mIGVsZW1bIG5h
bWUgXSA9PT0gImJvb2xlYW4iID8KLSAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1bIG5hbWUg
XSA/IG5hbWUgOiBudWxsIDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhbC5zcGVjaWZpZWQg
PyB2YWwudmFsdWUgOiBudWxsIDoKLSAgICAgICAgICAgICAgICBudWxsOwotfTsKLQotRXhwciA9
IFNpenpsZS5zZWxlY3RvcnMgPSB7Ci0KLSAgICAgICAgLy8gQ2FuIGJlIGFkanVzdGVkIGJ5IHRo
ZSB1c2VyCi0gICAgICAgIGNhY2hlTGVuZ3RoOiA1MCwKLQotICAgICAgICBjcmVhdGVQc2V1ZG86
IG1hcmtGdW5jdGlvbiwKLQotICAgICAgICBtYXRjaDogbWF0Y2hFeHByLAotCi0gICAgICAgIC8v
IElFNi83IHJldHVybiBhIG1vZGlmaWVkIGhyZWYKLSAgICAgICAgYXR0ckhhbmRsZTogYXNzZXJ0
SHJlZk5vdE5vcm1hbGl6ZWQgPwotICAgICAgICAgICAgICAgIHt9IDoKLSAgICAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAiaHJlZiI6IGZ1bmN0aW9uKCBlbGVtICkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbS5nZXRBdHRyaWJ1dGUo
ICJocmVmIiwgMiApOwotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICJ0eXBlIjogZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBlbGVtLmdldEF0dHJpYnV0ZSgidHlwZSIpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0sCi0KLSAgICAgICAgZmluZDogewot
ICAgICAgICAgICAgICAgICJJRCI6IGFzc2VydEdldElkTm90TmFtZSA/Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBmdW5jdGlvbiggaWQsIGNvbnRleHQsIHhtbCApIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCB0eXBlb2YgY29udGV4dC5nZXRFbGVtZW50QnlJZCAhPT0g
c3RydW5kZWZpbmVkICYmICF4bWwgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyIG0gPSBjb250ZXh0LmdldEVsZW1lbnRCeUlkKCBpZCApOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIHBhcmVudE5vZGUgdG8gY2F0
Y2ggd2hlbiBCbGFja2JlcnJ5IDQuNiByZXR1cm5zCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gbm9kZXMgdGhhdCBhcmUgbm8gbG9uZ2VyIGluIHRoZSBkb2N1bWVu
dCAjNjk2MwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBt
ICYmIG0ucGFyZW50Tm9kZSA/IFttXSA6IFtdOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IDoKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGZ1bmN0aW9uKCBpZCwgY29udGV4dCwgeG1sICkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoIHR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRCeUlkICE9PSBzdHJ1bmRl
ZmluZWQgJiYgIXhtbCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2YXIgbSA9IGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQoIGlkICk7Ci0KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbSA/Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtLmlkID09PSBpZCB8fCB0eXBlb2YgbS5nZXRB
dHRyaWJ1dGVOb2RlICE9PSBzdHJ1bmRlZmluZWQgJiYgbS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIp
LnZhbHVlID09PSBpZCA/Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFttXSA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCA6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBbXTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLQotICAgICAgICAgICAgICAgICJU
QUciOiBhc3NlcnRUYWdOYW1lTm9Db21tZW50cyA/Ci0gICAgICAgICAgICAgICAgICAgICAgICBm
dW5jdGlvbiggdGFnLCBjb250ZXh0ICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoIHR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lICE9PSBzdHJ1bmRlZmlu
ZWQgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNv
bnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIHRhZyApOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IDoKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGZ1bmN0aW9uKCB0YWcsIGNvbnRleHQgKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZhciByZXN1bHRzID0gY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgg
dGFnICk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRmlsdGVyIG91dCBw
b3NzaWJsZSBjb21tZW50cwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHRh
ZyA9PT0gIioiICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZh
ciBlbGVtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dG1wID0gW10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpID0gMDsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAo
IDsgKGVsZW0gPSByZXN1bHRzW2ldKTsgaSsrICkgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAu
cHVzaCggZWxlbSApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0bXA7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdHM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9LAotCi0gICAgICAg
ICAgICAgICAgIk5BTUUiOiBhc3NlcnRVc2FibGVOYW1lICYmIGZ1bmN0aW9uKCB0YWcsIGNvbnRl
eHQgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHR5cGVvZiBjb250ZXh0LmdldEVs
ZW1lbnRzQnlOYW1lICE9PSBzdHJ1bmRlZmluZWQgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBjb250ZXh0LmdldEVsZW1lbnRzQnlOYW1lKCBuYW1lICk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSwKLQotICAgICAgICAgICAg
ICAgICJDTEFTUyI6IGFzc2VydFVzYWJsZUNsYXNzTmFtZSAmJiBmdW5jdGlvbiggY2xhc3NOYW1l
LCBjb250ZXh0LCB4bWwgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHR5cGVvZiBj
b250ZXh0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUgIT09IHN0cnVuZGVmaW5lZCAmJiAheG1sICkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5nZXRFbGVt
ZW50c0J5Q2xhc3NOYW1lKCBjbGFzc05hbWUgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgIH0sCi0KLSAgICAgICAgcmVsYXRpdmU6IHsKLSAg
ICAgICAgICAgICAgICAiPiI6IHsgZGlyOiAicGFyZW50Tm9kZSIsIGZpcnN0OiB0cnVlIH0sCi0g
ICAgICAgICAgICAgICAgIiAiOiB7IGRpcjogInBhcmVudE5vZGUiIH0sCi0gICAgICAgICAgICAg
ICAgIisiOiB7IGRpcjogInByZXZpb3VzU2libGluZyIsIGZpcnN0OiB0cnVlIH0sCi0gICAgICAg
ICAgICAgICAgIn4iOiB7IGRpcjogInByZXZpb3VzU2libGluZyIgfQotICAgICAgICB9LAotCi0g
ICAgICAgIHByZUZpbHRlcjogewotICAgICAgICAgICAgICAgICJBVFRSIjogZnVuY3Rpb24oIG1h
dGNoICkgewotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hbMV0gPSBtYXRjaFsxXS5yZXBs
YWNlKCByYmFja3NsYXNoLCAiIiApOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBNb3Zl
IHRoZSBnaXZlbiB2YWx1ZSB0byBtYXRjaFszXSB3aGV0aGVyIHF1b3RlZCBvciB1bnF1b3RlZAot
ICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hbM10gPSAoIG1hdGNoWzRdIHx8IG1hdGNoWzVd
IHx8ICIiICkucmVwbGFjZSggcmJhY2tzbGFzaCwgIiIgKTsKLQotICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCBtYXRjaFsyXSA9PT0gIn49IiApIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbWF0Y2hbM10gPSAiICIgKyBtYXRjaFszXSArICIgIjsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoLnNsaWNl
KCAwLCA0ICk7Ci0gICAgICAgICAgICAgICAgfSwKLQotICAgICAgICAgICAgICAgICJDSElMRCI6
IGZ1bmN0aW9uKCBtYXRjaCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1hdGNoZXMg
ZnJvbSBtYXRjaEV4cHJbIkNISUxEIl0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MSB0eXBlIChvbmx5fG50aHwuLi4pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIg
YXJndW1lbnQgKGV2ZW58b2RkfFxkKnxcZCpuKFsrLV1cZCspP3wuLi4pCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDMgeG4tY29tcG9uZW50IG9mIHhuK3kgYXJndW1lbnQgKFsrLV0/
XGQqbnwpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQgc2lnbiBvZiB4bi1jb21w
b25lbnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNSB4IG9mIHhuLWNvbXBvbmVu
dAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2IHNpZ24gb2YgeS1jb21wb25lbnQK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNyB5IG9mIHktY29tcG9uZW50Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hbMV0g
PSBtYXRjaFsxXS50b0xvd2VyQ2FzZSgpOwotCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAo
IG1hdGNoWzFdID09PSAibnRoIiApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gbnRoLWNoaWxkIHJlcXVpcmVzIGFyZ3VtZW50Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICggIW1hdGNoWzJdICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFNpenpsZS5lcnJvciggbWF0Y2hbMF0gKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG51bWVy
aWMgeCBhbmQgeSBwYXJhbWV0ZXJzIGZvciBFeHByLmZpbHRlci5DSElMRAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyByZW1lbWJlciB0aGF0IGZhbHNlL3RydWUgY2FzdCByZXNw
ZWN0aXZlbHkgdG8gMC8xCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzNd
ID0gKyggbWF0Y2hbM10gPyBtYXRjaFs0XSArIChtYXRjaFs1XSB8fCAxKSA6IDIgKiAoIG1hdGNo
WzJdID09PSAiZXZlbiIgfHwgbWF0Y2hbMl0gPT09ICJvZGQiICkgKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbWF0Y2hbNF0gPSArKCAoIG1hdGNoWzZdICsgbWF0Y2hbN10gKSB8
fCBtYXRjaFsyXSA9PT0gIm9kZCIgKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3Ro
ZXIgdHlwZXMgcHJvaGliaXQgYXJndW1lbnRzCi0gICAgICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgaWYgKCBtYXRjaFsyXSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2l6
emxlLmVycm9yKCBtYXRjaFswXSApOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWF0Y2g7Ci0gICAgICAgICAgICAgICAgfSwKLQot
ICAgICAgICAgICAgICAgICJQU0VVRE8iOiBmdW5jdGlvbiggbWF0Y2ggKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICB2YXIgdW5xdW90ZWQsIGV4Y2VzczsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICggbWF0Y2hFeHByWyJDSElMRCJdLnRlc3QoIG1hdGNoWzBdICkgKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICAgICAgICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIG1hdGNoWzNdICkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFsyXSA9IG1hdGNoWzNdOwotICAgICAg
ICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICggKHVucXVvdGVkID0gbWF0Y2hbNF0pICkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBPbmx5IGNoZWNrIGFyZ3VtZW50cyB0
aGF0IGNvbnRhaW4gYSBwc2V1ZG8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCBycHNldWRvLnRlc3QodW5xdW90ZWQpICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gR2V0IGV4Y2VzcyBmcm9tIHRva2VuaXplIChyZWN1cnNpdmVseSkKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXhjZXNzID0gdG9rZW5pemUo
IHVucXVvdGVkLCB0cnVlICkpICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gYWR2YW5jZSB0byB0aGUgbmV4dCBjbG9zaW5nIHBhcmVudGhlc2lzCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGV4Y2VzcyA9IHVucXVvdGVkLmluZGV4
T2YoICIpIiwgdW5xdW90ZWQubGVuZ3RoIC0gZXhjZXNzICkgLSB1bnF1b3RlZC5sZW5ndGgpICkg
ewotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXhjZXNzIGlz
IGEgbmVnYXRpdmUgaW5kZXgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnF1b3RlZCA9IHVucXVvdGVkLnNsaWNlKCAwLCBleGNlc3MgKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFswXSA9IG1hdGNoWzBdLnNsaWNlKCAwLCBl
eGNlc3MgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtYXRjaFsyXSA9IHVucXVvdGVkOwotICAgICAgICAgICAgICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXR1cm4gb25seSBjYXB0
dXJlcyBuZWVkZWQgYnkgdGhlIHBzZXVkbyBmaWx0ZXIgbWV0aG9kICh0eXBlIGFuZCBhcmd1bWVu
dCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaC5zbGljZSggMCwgMyApOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgfSwKLQotICAgICAgICBmaWx0ZXI6IHsKLSAgICAg
ICAgICAgICAgICAiSUQiOiBhc3NlcnRHZXRJZE5vdE5hbWUgPwotICAgICAgICAgICAgICAgICAg
ICAgICAgZnVuY3Rpb24oIGlkICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZCA9IGlkLnJlcGxhY2UoIHJiYWNrc2xhc2gsICIiICk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmdW5jdGlvbiggZWxlbSApIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbS5nZXRBdHRyaWJ1dGUoImlkIikgPT09IGlk
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgICAgICAg
ICAgICAgfSA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiggaWQgKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gaWQucmVwbGFjZSggcmJhY2tzbGFzaCwg
IiIgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCBl
bGVtICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBub2Rl
ID0gdHlwZW9mIGVsZW0uZ2V0QXR0cmlidXRlTm9kZSAhPT0gc3RydW5kZWZpbmVkICYmIGVsZW0u
Z2V0QXR0cmlidXRlTm9kZSgiaWQiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gbm9kZSAmJiBub2RlLnZhbHVlID09PSBpZDsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0KLSAgICAg
ICAgICAgICAgICAiVEFHIjogZnVuY3Rpb24oIG5vZGVOYW1lICkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCBub2RlTmFtZSA9PT0gIioiICkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7IHJldHVybiB0cnVlOyB9OwotICAgICAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZU5hbWUgPSBub2Rl
TmFtZS5yZXBsYWNlKCByYmFja3NsYXNoLCAiIiApLnRvTG93ZXJDYXNlKCk7Ci0KLSAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiggZWxlbSApIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW0ubm9kZU5hbWUgJiYgZWxlbS5ub2RlTmFtZS50
b0xvd2VyQ2FzZSgpID09PSBub2RlTmFtZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH07Ci0g
ICAgICAgICAgICAgICAgfSwKLQotICAgICAgICAgICAgICAgICJDTEFTUyI6IGZ1bmN0aW9uKCBj
bGFzc05hbWUgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGF0dGVybiA9IGNsYXNz
Q2FjaGVbIGV4cGFuZG8gXVsgY2xhc3NOYW1lICsgIiAiIF07Ci0KLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBwYXR0ZXJuIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChwYXR0ZXJuID0gbmV3IFJlZ0V4cCggIihefCIgKyB3aGl0ZXNwYWNlICsgIikiICsgY2xhc3NO
YW1lICsgIigiICsgd2hpdGVzcGFjZSArICJ8JCkiICkpICYmCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNsYXNzQ2FjaGUoIGNsYXNzTmFtZSwgZnVuY3Rpb24oIGVsZW0gKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhdHRlcm4udGVz
dCggZWxlbS5jbGFzc05hbWUgfHwgKHR5cGVvZiBlbGVtLmdldEF0dHJpYnV0ZSAhPT0gc3RydW5k
ZWZpbmVkICYmIGVsZW0uZ2V0QXR0cmlidXRlKCJjbGFzcyIpKSB8fCAiIiApOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICB9LAotCi0gICAgICAg
ICAgICAgICAgIkFUVFIiOiBmdW5jdGlvbiggbmFtZSwgb3BlcmF0b3IsIGNoZWNrICkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCBlbGVtLCBjb250ZXh0ICkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gU2l6emxlLmF0dHIo
IGVsZW0sIG5hbWUgKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHJl
c3VsdCA9PSBudWxsICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBvcGVyYXRvciA9PT0gIiE9IjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICFvcGVyYXRvciApIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlc3VsdCArPSAiIjsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gb3BlcmF0b3IgPT09ICI9IiA/IHJlc3VsdCA9PT0gY2hlY2sgOgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yID09PSAiIT0iID8gcmVzdWx0
ICE9PSBjaGVjayA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Bl
cmF0b3IgPT09ICJePSIgPyBjaGVjayAmJiByZXN1bHQuaW5kZXhPZiggY2hlY2sgKSA9PT0gMCA6
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3IgPT09ICIq
PSIgPyBjaGVjayAmJiByZXN1bHQuaW5kZXhPZiggY2hlY2sgKSA+IC0xIDoKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvciA9PT0gIiQ9IiA/IGNoZWNrICYm
IHJlc3VsdC5zdWJzdHIoIHJlc3VsdC5sZW5ndGggLSBjaGVjay5sZW5ndGggKSA9PT0gY2hlY2sg
OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yID09PSAi
fj0iID8gKCAiICIgKyByZXN1bHQgKyAiICIgKS5pbmRleE9mKCBjaGVjayApID4gLTEgOgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yID09PSAifD0iID8g
cmVzdWx0ID09PSBjaGVjayB8fCByZXN1bHQuc3Vic3RyKCAwLCBjaGVjay5sZW5ndGggKyAxICkg
PT09IGNoZWNrICsgIi0iIDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICAgICAgfSwK
LQotICAgICAgICAgICAgICAgICJDSElMRCI6IGZ1bmN0aW9uKCB0eXBlLCBhcmd1bWVudCwgZmly
c3QsIGxhc3QgKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICggdHlwZSA9PT0gIm50
aCIgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbigg
ZWxlbSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbm9k
ZSwgZGlmZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBhcmVudCA9IGVsZW0ucGFyZW50Tm9kZTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICggZmlyc3QgPT09IDEgJiYgbGFzdCA9PT0gMCApIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggcGFyZW50ICkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlmZiA9IDA7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKCBub2RlID0gcGFyZW50LmZp
cnN0Q2hpbGQ7IG5vZGU7IG5vZGUgPSBub2RlLm5leHRTaWJsaW5nICkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIG5vZGUubm9k
ZVR5cGUgPT09IDEgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGlmZisrOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggZWxlbSA9PT0gbm9k
ZSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIEluY29ycG9yYXRlIHRoZSBvZmZzZXQgKG9yIGNhc3QgdG8gTmFOKSwgdGhlbiBj
aGVjayBhZ2FpbnN0IGN5Y2xlIHNpemUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkaWZmIC09IGxhc3Q7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGRpZmYgPT09IGZpcnN0IHx8ICggZGlmZiAlIGZpcnN0ID09PSAwICYmIGRp
ZmYgLyBmaXJzdCA+PSAwICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmdW5jdGlvbiggZWxlbSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFy
IG5vZGUgPSBlbGVtOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAo
IHR5cGUgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAi
b25seSI6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiZmly
c3QiOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hp
bGUgKCAobm9kZSA9IG5vZGUucHJldmlvdXNTaWJsaW5nKSApIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBub2RlLm5vZGVUeXBl
ID09PSAxICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHR5cGUgPT09ICJmaXJzdCIgKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlID0g
ZWxlbTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogZmFsbHMgdGhyb3VnaCAqLwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNhc2UgImxhc3QiOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgd2hpbGUgKCAobm9kZSA9IG5vZGUubmV4dFNpYmxpbmcpICkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIG5vZGUu
bm9kZVR5cGUgPT09IDEgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9OwotICAgICAg
ICAgICAgICAgIH0sCi0KLSAgICAgICAgICAgICAgICAiUFNFVURPIjogZnVuY3Rpb24oIHBzZXVk
bywgYXJndW1lbnQgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBwc2V1ZG8tY2xhc3Mg
bmFtZXMgYXJlIGNhc2UtaW5zZW5zaXRpdmUKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGh0
dHA6Ly93d3cudzMub3JnL1RSL3NlbGVjdG9ycy8jcHNldWRvLWNsYXNzZXMKLSAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIFByaW9yaXRpemUgYnkgY2FzZSBzZW5zaXRpdml0eSBpbiBjYXNlIGN1
c3RvbSBwc2V1ZG9zIGFyZSBhZGRlZCB3aXRoIHVwcGVyY2FzZSBsZXR0ZXJzCi0gICAgICAgICAg
ICAgICAgICAgICAgICAvLyBSZW1lbWJlciB0aGF0IHNldEZpbHRlcnMgaW5oZXJpdHMgZnJvbSBw
c2V1ZG9zCi0gICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXJncywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZm4gPSBFeHByLnBzZXVkb3NbIHBzZXVkbyBdIHx8IEV4cHIuc2V0
RmlsdGVyc1sgcHNldWRvLnRvTG93ZXJDYXNlKCkgXSB8fAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFNpenpsZS5lcnJvciggInVuc3VwcG9ydGVkIHBzZXVkbzogIiAr
IHBzZXVkbyApOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgdXNlciBtYXkgdXNl
IGNyZWF0ZVBzZXVkbyB0byBpbmRpY2F0ZSB0aGF0Ci0gICAgICAgICAgICAgICAgICAgICAgICAv
LyBhcmd1bWVudHMgYXJlIG5lZWRlZCB0byBjcmVhdGUgdGhlIGZpbHRlciBmdW5jdGlvbgotICAg
ICAgICAgICAgICAgICAgICAgICAgLy8ganVzdCBhcyBTaXp6bGUgZG9lcwotICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCBmblsgZXhwYW5kbyBdICkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZm4oIGFyZ3VtZW50ICk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJ1dCBtYWludGFpbiBzdXBwb3J0IGZv
ciBvbGQgc2lnbmF0dXJlcwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBmbi5sZW5ndGgg
PiAxICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzID0gWyBwc2V1ZG8s
IHBzZXVkbywgIiIsIGFyZ3VtZW50IF07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBFeHByLnNldEZpbHRlcnMuaGFzT3duUHJvcGVydHkoIHBzZXVkby50b0xvd2VyQ2Fz
ZSgpICkgPwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtGdW5j
dGlvbihmdW5jdGlvbiggc2VlZCwgbWF0Y2hlcyApIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpZHgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZWQgPSBmbiggc2VlZCwgYXJn
dW1lbnQgKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaSA9IG1hdGNoZWQubGVuZ3RoOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCBpLS0gKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkeCA9IGluZGV4T2YuY2FsbCgg
c2VlZCwgbWF0Y2hlZFtpXSApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZWVkWyBpZHggXSA9ICEoIG1hdGNoZXNbIGlkeCBdID0gbWF0
Y2hlZFtpXSApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIDoKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiggZWxlbSApIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmbigg
ZWxlbSwgMCwgYXJncyApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH07Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBmbjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgIH0sCi0KLSAgICAgICAgcHNl
dWRvczogewotICAgICAgICAgICAgICAgICJub3QiOiBtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIHNl
bGVjdG9yICkgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gVHJpbSB0aGUgc2VsZWN0b3Ig
cGFzc2VkIHRvIGNvbXBpbGUKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIGF2b2lkIHRy
ZWF0aW5nIGxlYWRpbmcgYW5kIHRyYWlsaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBz
cGFjZXMgYXMgY29tYmluYXRvcnMKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpbnB1dCA9
IFtdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzID0gW10sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZXIgPSBjb21waWxlKCBzZWxlY3Rvci5y
ZXBsYWNlKCBydHJpbSwgIiQxIiApICk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBtYXRjaGVyWyBleHBhbmRvIF0gPwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
YXJrRnVuY3Rpb24oZnVuY3Rpb24oIHNlZWQsIG1hdGNoZXMsIGNvbnRleHQsIHhtbCApIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZWxlbSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVubWF0Y2hlZCA9IG1hdGNo
ZXIoIHNlZWQsIG51bGwsIHhtbCwgW10gKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGkgPSBzZWVkLmxlbmd0aDsKLQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIE1hdGNoIGVsZW1lbnRzIHVubWF0Y2hlZCBieSBgbWF0
Y2hlcmAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoIGkt
LSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICggKGVsZW0gPSB1bm1hdGNoZWRbaV0pICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWVkW2ldID0gIShtYXRjaGVzW2ldID0gZWxl
bSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9KSA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1
bmN0aW9uKCBlbGVtLCBjb250ZXh0LCB4bWwgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW5wdXRbMF0gPSBlbGVtOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1hdGNoZXIoIGlucHV0LCBudWxsLCB4bWwsIHJlc3VsdHMgKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIXJlc3VsdHMucG9w
KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICAgICAg
fSksCi0KLSAgICAgICAgICAgICAgICAiaGFzIjogbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCBzZWxl
Y3RvciApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiggZWxlbSAp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNpenpsZSggc2VsZWN0
b3IsIGVsZW0gKS5sZW5ndGggPiAwOwotICAgICAgICAgICAgICAgICAgICAgICAgfTsKLSAgICAg
ICAgICAgICAgICB9KSwKLQotICAgICAgICAgICAgICAgICJjb250YWlucyI6IG1hcmtGdW5jdGlv
bihmdW5jdGlvbiggdGV4dCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5j
dGlvbiggZWxlbSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgg
ZWxlbS50ZXh0Q29udGVudCB8fCBlbGVtLmlubmVyVGV4dCB8fCBnZXRUZXh0KCBlbGVtICkgKS5p
bmRleE9mKCB0ZXh0ICkgPiAtMTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH07Ci0gICAgICAg
ICAgICAgICAgfSksCi0KLSAgICAgICAgICAgICAgICAiZW5hYmxlZCI6IGZ1bmN0aW9uKCBlbGVt
ICkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW0uZGlzYWJsZWQgPT09IGZh
bHNlOwotICAgICAgICAgICAgICAgIH0sCi0KLSAgICAgICAgICAgICAgICAiZGlzYWJsZWQiOiBm
dW5jdGlvbiggZWxlbSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbGVtLmRp
c2FibGVkID09PSB0cnVlOwotICAgICAgICAgICAgICAgIH0sCi0KLSAgICAgICAgICAgICAgICAi
Y2hlY2tlZCI6IGZ1bmN0aW9uKCBlbGVtICkgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8g
SW4gQ1NTMywgOmNoZWNrZWQgc2hvdWxkIHJldHVybiBib3RoIGNoZWNrZWQgYW5kIHNlbGVjdGVk
IGVsZW1lbnRzCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9U
Ui8yMDExL1JFQy1jc3MzLXNlbGVjdG9ycy0yMDExMDkyOS8jY2hlY2tlZAotICAgICAgICAgICAg
ICAgICAgICAgICAgdmFyIG5vZGVOYW1lID0gZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChub2RlTmFtZSA9PT0gImlucHV0IiAmJiAh
IWVsZW0uY2hlY2tlZCkgfHwgKG5vZGVOYW1lID09PSAib3B0aW9uIiAmJiAhIWVsZW0uc2VsZWN0
ZWQpOwotICAgICAgICAgICAgICAgIH0sCi0KLSAgICAgICAgICAgICAgICAic2VsZWN0ZWQiOiBm
dW5jdGlvbiggZWxlbSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFjY2Vzc2luZyB0
aGlzIHByb3BlcnR5IG1ha2VzIHNlbGVjdGVkLWJ5LWRlZmF1bHQKLSAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIG9wdGlvbnMgaW4gU2FmYXJpIHdvcmsgcHJvcGVybHkKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICggZWxlbS5wYXJlbnROb2RlICkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlbGVtLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleDsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW0uc2VsZWN0
ZWQgPT09IHRydWU7Ci0gICAgICAgICAgICAgICAgfSwKLQotICAgICAgICAgICAgICAgICJwYXJl
bnQiOiBmdW5jdGlvbiggZWxlbSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAh
RXhwci5wc2V1ZG9zWyJlbXB0eSJdKCBlbGVtICk7Ci0gICAgICAgICAgICAgICAgfSwKLQotICAg
ICAgICAgICAgICAgICJlbXB0eSI6IGZ1bmN0aW9uKCBlbGVtICkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIvc2VsZWN0b3JzLyNlbXB0eS1wc2V1ZG8K
LSAgICAgICAgICAgICAgICAgICAgICAgIC8vIDplbXB0eSBpcyBvbmx5IGFmZmVjdGVkIGJ5IGVs
ZW1lbnQgbm9kZXMgYW5kIGNvbnRlbnQgbm9kZXMoaW5jbHVkaW5nIHRleHQoMyksIGNkYXRhKDQp
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgbm90IGNvbW1lbnQsIHByb2Nlc3Npbmcg
aW5zdHJ1Y3Rpb25zLCBvciBvdGhlcnMKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoYW5r
cyB0byBEaWVnbyBQZXJpbmkgZm9yIHRoZSBub2RlTmFtZSBzaG9ydGN1dAotICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gICBHcmVhdGVyIHRoYW4gIkAiIG1lYW5zIGFscGhhIGNoYXJhY3RlcnMg
KHNwZWNpZmljYWxseSBub3Qgc3RhcnRpbmcgd2l0aCAiIyIgb3IgIj8iKQotICAgICAgICAgICAg
ICAgICAgICAgICAgdmFyIG5vZGVUeXBlOwotICAgICAgICAgICAgICAgICAgICAgICAgZWxlbSA9
IGVsZW0uZmlyc3RDaGlsZDsKLSAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICggZWxlbSAp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBlbGVtLm5vZGVOYW1lID4g
IkAiIHx8IChub2RlVHlwZSA9IGVsZW0ubm9kZVR5cGUpID09PSAzIHx8IG5vZGVUeXBlID09PSA0
ICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlbGVtID0gZWxlbS5uZXh0U2libGluZzsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAg
ICAgICAgIH0sCi0KLSAgICAgICAgICAgICAgICAiaGVhZGVyIjogZnVuY3Rpb24oIGVsZW0gKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmhlYWRlci50ZXN0KCBlbGVtLm5vZGVO
YW1lICk7Ci0gICAgICAgICAgICAgICAgfSwKLQotICAgICAgICAgICAgICAgICJ0ZXh0IjogZnVu
Y3Rpb24oIGVsZW0gKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdHlwZSwgYXR0cjsK
LSAgICAgICAgICAgICAgICAgICAgICAgIC8vIElFNiBhbmQgNyB3aWxsIG1hcCBlbGVtLnR5cGUg
dG8gJ3RleHQnIGZvciBuZXcgSFRNTDUgdHlwZXMgKHNlYXJjaCwgZXRjKQotICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gdXNlIGdldEF0dHJpYnV0ZSBpbnN0ZWFkIHRvIHRlc3QgdGhpcyBjYXNl
Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2Fz
ZSgpID09PSAiaW5wdXQiICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0eXBl
ID0gZWxlbS50eXBlKSA9PT0gInRleHQiICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICggKGF0dHIgPSBlbGVtLmdldEF0dHJpYnV0ZSgidHlwZSIpKSA9PSBudWxsIHx8IGF0dHIu
dG9Mb3dlckNhc2UoKSA9PT0gdHlwZSApOwotICAgICAgICAgICAgICAgIH0sCi0KLSAgICAgICAg
ICAgICAgICAvLyBJbnB1dCB0eXBlcwotICAgICAgICAgICAgICAgICJyYWRpbyI6IGNyZWF0ZUlu
cHV0UHNldWRvKCJyYWRpbyIpLAotICAgICAgICAgICAgICAgICJjaGVja2JveCI6IGNyZWF0ZUlu
cHV0UHNldWRvKCJjaGVja2JveCIpLAotICAgICAgICAgICAgICAgICJmaWxlIjogY3JlYXRlSW5w
dXRQc2V1ZG8oImZpbGUiKSwKLSAgICAgICAgICAgICAgICAicGFzc3dvcmQiOiBjcmVhdGVJbnB1
dFBzZXVkbygicGFzc3dvcmQiKSwKLSAgICAgICAgICAgICAgICAiaW1hZ2UiOiBjcmVhdGVJbnB1
dFBzZXVkbygiaW1hZ2UiKSwKLQotICAgICAgICAgICAgICAgICJzdWJtaXQiOiBjcmVhdGVCdXR0
b25Qc2V1ZG8oInN1Ym1pdCIpLAotICAgICAgICAgICAgICAgICJyZXNldCI6IGNyZWF0ZUJ1dHRv
blBzZXVkbygicmVzZXQiKSwKLQotICAgICAgICAgICAgICAgICJidXR0b24iOiBmdW5jdGlvbigg
ZWxlbSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuYW1lID0gZWxlbS5ub2RlTmFt
ZS50b0xvd2VyQ2FzZSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5hbWUgPT09
ICJpbnB1dCIgJiYgZWxlbS50eXBlID09PSAiYnV0dG9uIiB8fCBuYW1lID09PSAiYnV0dG9uIjsK
LSAgICAgICAgICAgICAgICB9LAotCi0gICAgICAgICAgICAgICAgImlucHV0IjogZnVuY3Rpb24o
IGVsZW0gKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmlucHV0cy50ZXN0KCBl
bGVtLm5vZGVOYW1lICk7Ci0gICAgICAgICAgICAgICAgfSwKLQotICAgICAgICAgICAgICAgICJm
b2N1cyI6IGZ1bmN0aW9uKCBlbGVtICkgewotICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRv
YyA9IGVsZW0ub3duZXJEb2N1bWVudDsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBl
bGVtID09PSBkb2MuYWN0aXZlRWxlbWVudCAmJiAoIWRvYy5oYXNGb2N1cyB8fCBkb2MuaGFzRm9j
dXMoKSkgJiYgISEoZWxlbS50eXBlIHx8IGVsZW0uaHJlZiB8fCB+ZWxlbS50YWJJbmRleCk7Ci0g
ICAgICAgICAgICAgICAgfSwKLQotICAgICAgICAgICAgICAgICJhY3RpdmUiOiBmdW5jdGlvbigg
ZWxlbSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbGVtID09PSBlbGVtLm93
bmVyRG9jdW1lbnQuYWN0aXZlRWxlbWVudDsKLSAgICAgICAgICAgICAgICB9LAotCi0gICAgICAg
ICAgICAgICAgLy8gUG9zaXRpb25hbCB0eXBlcwotICAgICAgICAgICAgICAgICJmaXJzdCI6IGNy
ZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gWyAwIF07Ci0gICAgICAgICAgICAgICAgfSksCi0KLSAgICAgICAgICAgICAgICAi
bGFzdCI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24oIG1hdGNoSW5kZXhlcywgbGVu
Z3RoICkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsgbGVuZ3RoIC0gMSBdOwot
ICAgICAgICAgICAgICAgIH0pLAotCi0gICAgICAgICAgICAgICAgImVxIjogY3JlYXRlUG9zaXRp
b25hbFBzZXVkbyhmdW5jdGlvbiggbWF0Y2hJbmRleGVzLCBsZW5ndGgsIGFyZ3VtZW50ICkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsgYXJndW1lbnQgPCAwID8gYXJndW1lbnQg
KyBsZW5ndGggOiBhcmd1bWVudCBdOwotICAgICAgICAgICAgICAgIH0pLAotCi0gICAgICAgICAg
ICAgICAgImV2ZW4iOiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9uKCBtYXRjaEluZGV4
ZXMsIGxlbmd0aCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoIHZhciBpID0gMDsg
aSA8IGxlbmd0aDsgaSArPSAyICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
YXRjaEluZGV4ZXMucHVzaCggaSApOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoSW5kZXhlczsKLSAgICAgICAgICAgICAgICB9
KSwKLQotICAgICAgICAgICAgICAgICJvZGQiOiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0
aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0aCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZv
ciAoIHZhciBpID0gMTsgaSA8IGxlbmd0aDsgaSArPSAyICkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtYXRjaEluZGV4ZXMucHVzaCggaSApOwotICAgICAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoSW5kZXhlczsKLSAg
ICAgICAgICAgICAgICB9KSwKLQotICAgICAgICAgICAgICAgICJsdCI6IGNyZWF0ZVBvc2l0aW9u
YWxQc2V1ZG8oZnVuY3Rpb24oIG1hdGNoSW5kZXhlcywgbGVuZ3RoLCBhcmd1bWVudCApIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGZvciAoIHZhciBpID0gYXJndW1lbnQgPCAwID8gYXJndW1l
bnQgKyBsZW5ndGggOiBhcmd1bWVudDsgLS1pID49IDA7ICkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtYXRjaEluZGV4ZXMucHVzaCggaSApOwotICAgICAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoSW5kZXhlczsKLSAg
ICAgICAgICAgICAgICB9KSwKLQotICAgICAgICAgICAgICAgICJndCI6IGNyZWF0ZVBvc2l0aW9u
YWxQc2V1ZG8oZnVuY3Rpb24oIG1hdGNoSW5kZXhlcywgbGVuZ3RoLCBhcmd1bWVudCApIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGZvciAoIHZhciBpID0gYXJndW1lbnQgPCAwID8gYXJndW1l
bnQgKyBsZW5ndGggOiBhcmd1bWVudDsgKytpIDwgbGVuZ3RoOyApIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbWF0Y2hJbmRleGVzLnB1c2goIGkgKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaEluZGV4ZXM7
Ci0gICAgICAgICAgICAgICAgfSkKLSAgICAgICAgfQotfTsKLQotZnVuY3Rpb24gc2libGluZ0No
ZWNrKCBhLCBiLCByZXQgKSB7Ci0gICAgICAgIGlmICggYSA9PT0gYiApIHsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gcmV0OwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIGN1ciA9IGEubmV4dFNp
Ymxpbmc7Ci0KLSAgICAgICAgd2hpbGUgKCBjdXIgKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCBj
dXIgPT09IGIgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgY3VyID0gY3VyLm5leHRTaWJsaW5nOwotICAg
ICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIDE7Ci19Ci0KLXNvcnRPcmRlciA9IGRvY0VsZW0uY29t
cGFyZURvY3VtZW50UG9zaXRpb24gPwotICAgICAgICBmdW5jdGlvbiggYSwgYiApIHsKLSAgICAg
ICAgICAgICAgICBpZiAoIGEgPT09IGIgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBoYXNE
dXBsaWNhdGUgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAg
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgcmV0dXJuICggIWEuY29tcGFyZURvY3Vt
ZW50UG9zaXRpb24gfHwgIWIuY29tcGFyZURvY3VtZW50UG9zaXRpb24gPwotICAgICAgICAgICAg
ICAgICAgICAgICAgYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiA6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGIpICYgNAotICAgICAgICAgICAgICAg
ICkgPyAtMSA6IDE7Ci0gICAgICAgIH0gOgotICAgICAgICBmdW5jdGlvbiggYSwgYiApIHsKLSAg
ICAgICAgICAgICAgICAvLyBUaGUgbm9kZXMgYXJlIGlkZW50aWNhbCwgd2UgY2FuIGV4aXQgZWFy
bHkKLSAgICAgICAgICAgICAgICBpZiAoIGEgPT09IGIgKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBoYXNEdXBsaWNhdGUgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IDA7Ci0KLSAgICAgICAgICAgICAgICAvLyBGYWxsYmFjayB0byB1c2luZyBzb3VyY2VJbmRleCAo
aW4gSUUpIGlmIGl0J3MgYXZhaWxhYmxlIG9uIGJvdGggbm9kZXMKLSAgICAgICAgICAgICAgICB9
IGVsc2UgaWYgKCBhLnNvdXJjZUluZGV4ICYmIGIuc291cmNlSW5kZXggKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gYS5zb3VyY2VJbmRleCAtIGIuc291cmNlSW5kZXg7Ci0gICAg
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgdmFyIGFsLCBibCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGFwID0gW10sCi0gICAgICAgICAgICAgICAgICAgICAgICBicCA9IFtdLAot
ICAgICAgICAgICAgICAgICAgICAgICAgYXVwID0gYS5wYXJlbnROb2RlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgYnVwID0gYi5wYXJlbnROb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAg
Y3VyID0gYXVwOwotCi0gICAgICAgICAgICAgICAgLy8gSWYgdGhlIG5vZGVzIGFyZSBzaWJsaW5n
cyAob3IgaWRlbnRpY2FsKSB3ZSBjYW4gZG8gYSBxdWljayBjaGVjawotICAgICAgICAgICAgICAg
IGlmICggYXVwID09PSBidXAgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2li
bGluZ0NoZWNrKCBhLCBiICk7Ci0KLSAgICAgICAgICAgICAgICAvLyBJZiBubyBwYXJlbnRzIHdl
cmUgZm91bmQgdGhlbiB0aGUgbm9kZXMgYXJlIGRpc2Nvbm5lY3RlZAotICAgICAgICAgICAgICAg
IH0gZWxzZSBpZiAoICFhdXAgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7
Ci0KLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCAhYnVwICkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAg
Ly8gT3RoZXJ3aXNlIHRoZXkncmUgc29tZXdoZXJlIGVsc2UgaW4gdGhlIHRyZWUgc28gd2UgbmVl
ZAotICAgICAgICAgICAgICAgIC8vIHRvIGJ1aWxkIHVwIGEgZnVsbCBsaXN0IG9mIHRoZSBwYXJl
bnROb2RlcyBmb3IgY29tcGFyaXNvbgotICAgICAgICAgICAgICAgIHdoaWxlICggY3VyICkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgYXAudW5zaGlmdCggY3VyICk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBjdXIgPSBjdXIucGFyZW50Tm9kZTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgICAgICBjdXIgPSBidXA7Ci0KLSAgICAgICAgICAgICAgICB3aGlsZSAoIGN1ciAp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJwLnVuc2hpZnQoIGN1ciApOwotICAgICAgICAg
ICAgICAgICAgICAgICAgY3VyID0gY3VyLnBhcmVudE5vZGU7Ci0gICAgICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICAgICAgYWwgPSBhcC5sZW5ndGg7Ci0gICAgICAgICAgICAgICAgYmwgPSBi
cC5sZW5ndGg7Ci0KLSAgICAgICAgICAgICAgICAvLyBTdGFydCB3YWxraW5nIGRvd24gdGhlIHRy
ZWUgbG9va2luZyBmb3IgYSBkaXNjcmVwYW5jeQotICAgICAgICAgICAgICAgIGZvciAoIHZhciBp
ID0gMDsgaSA8IGFsICYmIGkgPCBibDsgaSsrICkgewotICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCBhcFtpXSAhPT0gYnBbaV0gKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBzaWJsaW5nQ2hlY2soIGFwW2ldLCBicFtpXSApOwotICAgICAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIC8vIFdlIGVuZGVk
IHNvbWVwbGFjZSB1cCB0aGUgdHJlZSBzbyBkbyBhIHNpYmxpbmcgY2hlY2sKLSAgICAgICAgICAg
ICAgICByZXR1cm4gaSA9PT0gYWwgPwotICAgICAgICAgICAgICAgICAgICAgICAgc2libGluZ0No
ZWNrKCBhLCBicFtpXSwgLTEgKSA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzaWJsaW5nQ2hl
Y2soIGFwW2ldLCBiLCAxICk7Ci0gICAgICAgIH07Ci0KLS8vIEFsd2F5cyBhc3N1bWUgdGhlIHBy
ZXNlbmNlIG9mIGR1cGxpY2F0ZXMgaWYgc29ydCBkb2Vzbid0Ci0vLyBwYXNzIHRoZW0gdG8gb3Vy
IGNvbXBhcmlzb24gZnVuY3Rpb24gKGFzIGluIEdvb2dsZSBDaHJvbWUpLgotWzAsIDBdLnNvcnQo
IHNvcnRPcmRlciApOwotYmFzZUhhc0R1cGxpY2F0ZSA9ICFoYXNEdXBsaWNhdGU7Ci0KLS8vIERv
Y3VtZW50IHNvcnRpbmcgYW5kIHJlbW92aW5nIGR1cGxpY2F0ZXMKLVNpenpsZS51bmlxdWVTb3J0
ID0gZnVuY3Rpb24oIHJlc3VsdHMgKSB7Ci0gICAgICAgIHZhciBlbGVtLAotICAgICAgICAgICAg
ICAgIGR1cGxpY2F0ZXMgPSBbXSwKLSAgICAgICAgICAgICAgICBpID0gMSwKLSAgICAgICAgICAg
ICAgICBqID0gMDsKLQotICAgICAgICBoYXNEdXBsaWNhdGUgPSBiYXNlSGFzRHVwbGljYXRlOwot
ICAgICAgICByZXN1bHRzLnNvcnQoIHNvcnRPcmRlciApOwotCi0gICAgICAgIGlmICggaGFzRHVw
bGljYXRlICkgewotICAgICAgICAgICAgICAgIGZvciAoIDsgKGVsZW0gPSByZXN1bHRzW2ldKTsg
aSsrICkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBlbGVtID09PSByZXN1bHRzWyBp
IC0gMSBdICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqID0gZHVwbGljYXRl
cy5wdXNoKCBpICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIHdoaWxlICggai0tICkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0cy5zcGxpY2UoIGR1cGxpY2F0ZXNbIGogXSwgMSApOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiByZXN1bHRzOwotfTsKLQotU2l6emxlLmVy
cm9yID0gZnVuY3Rpb24oIG1zZyApIHsKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCAiU3ludGF4
IGVycm9yLCB1bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogIiArIG1zZyApOwotfTsKLQotZnVuY3Rp
b24gdG9rZW5pemUoIHNlbGVjdG9yLCBwYXJzZU9ubHkgKSB7Ci0gICAgICAgIHZhciBtYXRjaGVk
LCBtYXRjaCwgdG9rZW5zLCB0eXBlLAotICAgICAgICAgICAgICAgIHNvRmFyLCBncm91cHMsIHBy
ZUZpbHRlcnMsCi0gICAgICAgICAgICAgICAgY2FjaGVkID0gdG9rZW5DYWNoZVsgZXhwYW5kbyBd
WyBzZWxlY3RvciArICIgIiBdOwotCi0gICAgICAgIGlmICggY2FjaGVkICkgewotICAgICAgICAg
ICAgICAgIHJldHVybiBwYXJzZU9ubHkgPyAwIDogY2FjaGVkLnNsaWNlKCAwICk7Ci0gICAgICAg
IH0KLQotICAgICAgICBzb0ZhciA9IHNlbGVjdG9yOwotICAgICAgICBncm91cHMgPSBbXTsKLSAg
ICAgICAgcHJlRmlsdGVycyA9IEV4cHIucHJlRmlsdGVyOwotCi0gICAgICAgIHdoaWxlICggc29G
YXIgKSB7Ci0KLSAgICAgICAgICAgICAgICAvLyBDb21tYSBhbmQgZmlyc3QgcnVuCi0gICAgICAg
ICAgICAgICAgaWYgKCAhbWF0Y2hlZCB8fCAobWF0Y2ggPSByY29tbWEuZXhlYyggc29GYXIgKSkg
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIG1hdGNoICkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBEb24ndCBjb25zdW1lIHRyYWlsaW5nIGNvbW1hcyBhcyB2
YWxpZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb0ZhciA9IHNvRmFyLnNsaWNl
KCBtYXRjaFswXS5sZW5ndGggKSB8fCBzb0ZhcjsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgICAgICAgIGdyb3Vwcy5wdXNoKCB0b2tlbnMgPSBbXSApOwotICAg
ICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIG1hdGNoZWQgPSBmYWxzZTsKLQotICAg
ICAgICAgICAgICAgIC8vIENvbWJpbmF0b3JzCi0gICAgICAgICAgICAgICAgaWYgKCAobWF0Y2gg
PSByY29tYmluYXRvcnMuZXhlYyggc29GYXIgKSkgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICB0b2tlbnMucHVzaCggbWF0Y2hlZCA9IG5ldyBUb2tlbiggbWF0Y2guc2hpZnQoKSApICk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBzb0ZhciA9IHNvRmFyLnNsaWNlKCBtYXRjaGVkLmxlbmd0
aCApOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBDYXN0IGRlc2NlbmRhbnQgY29tYmlu
YXRvcnMgdG8gc3BhY2UKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZWQudHlwZSA9IG1h
dGNoWzBdLnJlcGxhY2UoIHJ0cmltLCAiICIgKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgICAgICAvLyBGaWx0ZXJzCi0gICAgICAgICAgICAgICAgZm9yICggdHlwZSBpbiBFeHBy
LmZpbHRlciApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICggKG1hdGNoID0gbWF0Y2hF
eHByWyB0eXBlIF0uZXhlYyggc29GYXIgKSkgJiYgKCFwcmVGaWx0ZXJzWyB0eXBlIF0gfHwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoID0gcHJlRmlsdGVyc1sgdHlwZSBd
KCBtYXRjaCApKSkgKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5z
LnB1c2goIG1hdGNoZWQgPSBuZXcgVG9rZW4oIG1hdGNoLnNoaWZ0KCkgKSApOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzb0ZhciA9IHNvRmFyLnNsaWNlKCBtYXRjaGVkLmxlbmd0
aCApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVkLnR5cGUgPSB0eXBl
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVkLm1hdGNoZXMgPSBtYXRj
aDsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgICAgICBpZiAoICFtYXRjaGVkICkgewotICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLy8gUmV0dXJuIHRo
ZSBsZW5ndGggb2YgdGhlIGludmFsaWQgZXhjZXNzCi0gICAgICAgIC8vIGlmIHdlJ3JlIGp1c3Qg
cGFyc2luZwotICAgICAgICAvLyBPdGhlcndpc2UsIHRocm93IGFuIGVycm9yIG9yIHJldHVybiB0
b2tlbnMKLSAgICAgICAgcmV0dXJuIHBhcnNlT25seSA/Ci0gICAgICAgICAgICAgICAgc29GYXIu
bGVuZ3RoIDoKLSAgICAgICAgICAgICAgICBzb0ZhciA/Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBTaXp6bGUuZXJyb3IoIHNlbGVjdG9yICkgOgotICAgICAgICAgICAgICAgICAgICAgICAgLy8g
Q2FjaGUgdGhlIHRva2VucwotICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5DYWNoZSggc2Vs
ZWN0b3IsIGdyb3VwcyApLnNsaWNlKCAwICk7Ci19Ci0KLWZ1bmN0aW9uIGFkZENvbWJpbmF0b3Io
IG1hdGNoZXIsIGNvbWJpbmF0b3IsIGJhc2UgKSB7Ci0gICAgICAgIHZhciBkaXIgPSBjb21iaW5h
dG9yLmRpciwKLSAgICAgICAgICAgICAgICBjaGVja05vbkVsZW1lbnRzID0gYmFzZSAmJiBjb21i
aW5hdG9yLmRpciA9PT0gInBhcmVudE5vZGUiLAotICAgICAgICAgICAgICAgIGRvbmVOYW1lID0g
ZG9uZSsrOwotCi0gICAgICAgIHJldHVybiBjb21iaW5hdG9yLmZpcnN0ID8KLSAgICAgICAgICAg
ICAgICAvLyBDaGVjayBhZ2FpbnN0IGNsb3Nlc3QgYW5jZXN0b3IvcHJlY2VkaW5nIGVsZW1lbnQK
LSAgICAgICAgICAgICAgICBmdW5jdGlvbiggZWxlbSwgY29udGV4dCwgeG1sICkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgd2hpbGUgKCAoZWxlbSA9IGVsZW1bIGRpciBdKSApIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBjaGVja05vbkVsZW1lbnRzIHx8IGVsZW0u
bm9kZVR5cGUgPT09IDEgICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBtYXRjaGVyKCBlbGVtLCBjb250ZXh0LCB4bWwgKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIH0gOgotCi0gICAgICAgICAgICAgICAgLy8gQ2hlY2sgYWdhaW5zdCBhbGwgYW5jZXN0
b3IvcHJlY2VkaW5nIGVsZW1lbnRzCi0gICAgICAgICAgICAgICAgZnVuY3Rpb24oIGVsZW0sIGNv
bnRleHQsIHhtbCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGNhbid0IHNldCBh
cmJpdHJhcnkgZGF0YSBvbiBYTUwgbm9kZXMsIHNvIHRoZXkgZG9uJ3QgYmVuZWZpdCBmcm9tIGRp
ciBjYWNoaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoICF4bWwgKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjYWNoZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkaXJrZXkgPSBkaXJydW5zICsgIiAiICsgZG9uZU5hbWUgKyAi
ICIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVka2V5ID0g
ZGlya2V5ICsgY2FjaGVkcnVuczsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hp
bGUgKCAoZWxlbSA9IGVsZW1bIGRpciBdKSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoIGNoZWNrTm9uRWxlbWVudHMgfHwgZWxlbS5ub2RlVHlwZSA9PT0g
MSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICggKGNhY2hlID0gZWxlbVsgZXhwYW5kbyBdKSA9PT0gY2FjaGVka2V5ICkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWxl
bS5zaXpzZXQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UgaWYgKCB0eXBlb2YgY2FjaGUgPT09ICJzdHJpbmciICYmIGNhY2hlLmluZGV4T2Yo
ZGlya2V5KSA9PT0gMCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCBlbGVtLnNpenNldCApIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWxl
bTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZWxlbVsgZXhwYW5kbyBdID0gY2FjaGVka2V5OwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIG1hdGNoZXIoIGVsZW0sIGNv
bnRleHQsIHhtbCApICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0uc2l6c2V0ID0gdHJ1ZTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZWxlbTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlbGVtLnNpenNldCA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
d2hpbGUgKCAoZWxlbSA9IGVsZW1bIGRpciBdKSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoIGNoZWNrTm9uRWxlbWVudHMgfHwgZWxlbS5ub2RlVHlwZSA9
PT0gMSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmICggbWF0Y2hlciggZWxlbSwgY29udGV4dCwgeG1sICkgKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbGVtOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH07
Ci19Ci0KLWZ1bmN0aW9uIGVsZW1lbnRNYXRjaGVyKCBtYXRjaGVycyApIHsKLSAgICAgICAgcmV0
dXJuIG1hdGNoZXJzLmxlbmd0aCA+IDEgPwotICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCBlbGVt
LCBjb250ZXh0LCB4bWwgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IG1hdGNo
ZXJzLmxlbmd0aDsKLSAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICggaS0tICkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICFtYXRjaGVyc1tpXSggZWxlbSwgY29u
dGV4dCwgeG1sICkgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgICAgICAgICAgICB9IDoKLSAgICAgICAgICAgICAgICBtYXRjaGVyc1swXTsKLX0KLQot
ZnVuY3Rpb24gY29uZGVuc2UoIHVubWF0Y2hlZCwgbWFwLCBmaWx0ZXIsIGNvbnRleHQsIHhtbCAp
IHsKLSAgICAgICAgdmFyIGVsZW0sCi0gICAgICAgICAgICAgICAgbmV3VW5tYXRjaGVkID0gW10s
Ci0gICAgICAgICAgICAgICAgaSA9IDAsCi0gICAgICAgICAgICAgICAgbGVuID0gdW5tYXRjaGVk
Lmxlbmd0aCwKLSAgICAgICAgICAgICAgICBtYXBwZWQgPSBtYXAgIT0gbnVsbDsKLQotICAgICAg
ICBmb3IgKCA7IGkgPCBsZW47IGkrKyApIHsKLSAgICAgICAgICAgICAgICBpZiAoIChlbGVtID0g
dW5tYXRjaGVkW2ldKSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICggIWZpbHRlciB8
fCBmaWx0ZXIoIGVsZW0sIGNvbnRleHQsIHhtbCApICkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBuZXdVbm1hdGNoZWQucHVzaCggZWxlbSApOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoIG1hcHBlZCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtYXAucHVzaCggaSApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIG5ld1VubWF0Y2hlZDsKLX0KLQotZnVuY3Rpb24gc2V0
TWF0Y2hlciggcHJlRmlsdGVyLCBzZWxlY3RvciwgbWF0Y2hlciwgcG9zdEZpbHRlciwgcG9zdEZp
bmRlciwgcG9zdFNlbGVjdG9yICkgewotICAgICAgICBpZiAoIHBvc3RGaWx0ZXIgJiYgIXBvc3RG
aWx0ZXJbIGV4cGFuZG8gXSApIHsKLSAgICAgICAgICAgICAgICBwb3N0RmlsdGVyID0gc2V0TWF0
Y2hlciggcG9zdEZpbHRlciApOwotICAgICAgICB9Ci0gICAgICAgIGlmICggcG9zdEZpbmRlciAm
JiAhcG9zdEZpbmRlclsgZXhwYW5kbyBdICkgewotICAgICAgICAgICAgICAgIHBvc3RGaW5kZXIg
PSBzZXRNYXRjaGVyKCBwb3N0RmluZGVyLCBwb3N0U2VsZWN0b3IgKTsKLSAgICAgICAgfQotICAg
ICAgICByZXR1cm4gbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCBzZWVkLCByZXN1bHRzLCBjb250ZXh0
LCB4bWwgKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHRlbXAsIGksIGVsZW0sCi0gICAgICAgICAg
ICAgICAgICAgICAgICBwcmVNYXAgPSBbXSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHBvc3RN
YXAgPSBbXSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHByZWV4aXN0aW5nID0gcmVzdWx0cy5s
ZW5ndGgsCi0KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdldCBpbml0aWFsIGVsZW1lbnRz
IGZyb20gc2VlZCBvciBjb250ZXh0Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbGVtcyA9IHNl
ZWQgfHwgbXVsdGlwbGVDb250ZXh0cyggc2VsZWN0b3IgfHwgIioiLCBjb250ZXh0Lm5vZGVUeXBl
ID8gWyBjb250ZXh0IF0gOiBjb250ZXh0LCBbXSApLAotCi0gICAgICAgICAgICAgICAgICAgICAg
ICAvLyBQcmVmaWx0ZXIgdG8gZ2V0IG1hdGNoZXIgaW5wdXQsIHByZXNlcnZpbmcgYSBtYXAgZm9y
IHNlZWQtcmVzdWx0cyBzeW5jaHJvbml6YXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgIG1h
dGNoZXJJbiA9IHByZUZpbHRlciAmJiAoIHNlZWQgfHwgIXNlbGVjdG9yICkgPwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25kZW5zZSggZWxlbXMsIHByZU1hcCwgcHJlRmlsdGVy
LCBjb250ZXh0LCB4bWwgKSA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1z
LAotCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVyT3V0ID0gbWF0Y2hlciA/Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgYSBwb3N0RmluZGVyLCBv
ciBmaWx0ZXJlZCBzZWVkLCBvciBub24tc2VlZCBwb3N0RmlsdGVyIG9yIHByZWV4aXN0aW5nIHJl
c3VsdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc3RGaW5kZXIgfHwgKCBz
ZWVkID8gcHJlRmlsdGVyIDogcHJlZXhpc3RpbmcgfHwgcG9zdEZpbHRlciApID8KLQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIC4uLmludGVybWVkaWF0ZSBwcm9j
ZXNzaW5nIGlzIG5lY2Vzc2FyeQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFtdIDoKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIC4u
Lm90aGVyd2lzZSB1c2UgcmVzdWx0cyBkaXJlY3RseQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlc3VsdHMgOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtYXRjaGVySW47Ci0KLSAgICAgICAgICAgICAgICAvLyBGaW5kIHByaW1hcnkgbWF0Y2hlcwot
ICAgICAgICAgICAgICAgIGlmICggbWF0Y2hlciApIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IG1hdGNoZXIoIG1hdGNoZXJJbiwgbWF0Y2hlck91dCwgY29udGV4dCwgeG1sICk7Ci0gICAgICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgLy8gQXBwbHkgcG9zdEZpbHRlcgotICAgICAg
ICAgICAgICAgIGlmICggcG9zdEZpbHRlciApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRl
bXAgPSBjb25kZW5zZSggbWF0Y2hlck91dCwgcG9zdE1hcCApOwotICAgICAgICAgICAgICAgICAg
ICAgICAgcG9zdEZpbHRlciggdGVtcCwgW10sIGNvbnRleHQsIHhtbCApOwotCi0gICAgICAgICAg
ICAgICAgICAgICAgICAvLyBVbi1tYXRjaCBmYWlsaW5nIGVsZW1lbnRzIGJ5IG1vdmluZyB0aGVt
IGJhY2sgdG8gbWF0Y2hlckluCi0gICAgICAgICAgICAgICAgICAgICAgICBpID0gdGVtcC5sZW5n
dGg7Ci0gICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoIGktLSApIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCAoZWxlbSA9IHRlbXBbaV0pICkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZXJPdXRbIHBvc3RNYXBbaV0gXSA9
ICEobWF0Y2hlckluWyBwb3N0TWFwW2ldIF0gPSBlbGVtKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgICAgIGlmICggc2VlZCApIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICggcG9zdEZpbmRlciB8fCBwcmVGaWx0ZXIgKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICggcG9zdEZpbmRlciApIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBHZXQgdGhlIGZpbmFsIG1hdGNoZXJPdXQgYnkgY29uZGVuc2lu
ZyB0aGlzIGludGVybWVkaWF0ZSBpbnRvIHBvc3RGaW5kZXIgY29udGV4dHMKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wID0gW107Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG1hdGNoZXJPdXQubGVuZ3RoOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICggaS0tICkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAoZWxlbSA9IG1hdGNo
ZXJPdXRbaV0pICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBSZXN0b3JlIG1hdGNoZXJJbiBzaW5jZSBlbGVtIGlzIG5vdCB5ZXQg
YSBmaW5hbCBtYXRjaAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0ZW1wLnB1c2goIChtYXRjaGVySW5baV0gPSBlbGVtKSApOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwb3N0RmluZGVyKCBudWxsLCAobWF0Y2hlck91dCA9IFtdKSwgdGVtcCwg
eG1sICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBNb3ZlIG1hdGNoZWQgZWxlbWVudHMgZnJvbSBzZWVkIHRv
IHJlc3VsdHMgdG8ga2VlcCB0aGVtIHN5bmNocm9uaXplZAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpID0gbWF0Y2hlck91dC5sZW5ndGg7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHdoaWxlICggaS0tICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICggKGVsZW0gPSBtYXRjaGVyT3V0W2ldKSAmJgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRlbXAgPSBwb3N0RmluZGVyID8gaW5k
ZXhPZi5jYWxsKCBzZWVkLCBlbGVtICkgOiBwcmVNYXBbaV0pID4gLTEgKSB7Ci0KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlZWRbdGVtcF0gPSAhKHJl
c3VsdHNbdGVtcF0gPSBlbGVtKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIC8vIEFkZCBlbGVtZW50cyB0byByZXN1bHRz
LCB0aHJvdWdoIHBvc3RGaW5kZXIgaWYgZGVmaW5lZAotICAgICAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVyT3V0ID0gY29uZGVuc2UoCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZXJPdXQgPT09IHJlc3VsdHMgPwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZXJPdXQuc3BsaWNlKCBwcmVl
eGlzdGluZywgbWF0Y2hlck91dC5sZW5ndGggKSA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbWF0Y2hlck91dAotICAgICAgICAgICAgICAgICAgICAgICAgKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICggcG9zdEZpbmRlciApIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcG9zdEZpbmRlciggbnVsbCwgcmVzdWx0cywgbWF0Y2hlck91dCwg
eG1sICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwdXNoLmFwcGx5KCByZXN1bHRzLCBtYXRjaGVyT3V0ICk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICB9KTsKLX0K
LQotZnVuY3Rpb24gbWF0Y2hlckZyb21Ub2tlbnMoIHRva2VucyApIHsKLSAgICAgICAgdmFyIGNo
ZWNrQ29udGV4dCwgbWF0Y2hlciwgaiwKLSAgICAgICAgICAgICAgICBsZW4gPSB0b2tlbnMubGVu
Z3RoLAotICAgICAgICAgICAgICAgIGxlYWRpbmdSZWxhdGl2ZSA9IEV4cHIucmVsYXRpdmVbIHRv
a2Vuc1swXS50eXBlIF0sCi0gICAgICAgICAgICAgICAgaW1wbGljaXRSZWxhdGl2ZSA9IGxlYWRp
bmdSZWxhdGl2ZSB8fCBFeHByLnJlbGF0aXZlWyIgIl0sCi0gICAgICAgICAgICAgICAgaSA9IGxl
YWRpbmdSZWxhdGl2ZSA/IDEgOiAwLAotCi0gICAgICAgICAgICAgICAgLy8gVGhlIGZvdW5kYXRp
b25hbCBtYXRjaGVyIGVuc3VyZXMgdGhhdCBlbGVtZW50cyBhcmUgcmVhY2hhYmxlIGZyb20gdG9w
LWxldmVsIGNvbnRleHQocykKLSAgICAgICAgICAgICAgICBtYXRjaENvbnRleHQgPSBhZGRDb21i
aW5hdG9yKCBmdW5jdGlvbiggZWxlbSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBlbGVtID09PSBjaGVja0NvbnRleHQ7Ci0gICAgICAgICAgICAgICAgfSwgaW1wbGljaXRSZWxh
dGl2ZSwgdHJ1ZSApLAotICAgICAgICAgICAgICAgIG1hdGNoQW55Q29udGV4dCA9IGFkZENvbWJp
bmF0b3IoIGZ1bmN0aW9uKCBlbGVtICkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGluZGV4T2YuY2FsbCggY2hlY2tDb250ZXh0LCBlbGVtICkgPiAtMTsKLSAgICAgICAgICAgICAg
ICB9LCBpbXBsaWNpdFJlbGF0aXZlLCB0cnVlICksCi0gICAgICAgICAgICAgICAgbWF0Y2hlcnMg
PSBbIGZ1bmN0aW9uKCBlbGVtLCBjb250ZXh0LCB4bWwgKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gKCAhbGVhZGluZ1JlbGF0aXZlICYmICggeG1sIHx8IGNvbnRleHQgIT09IG91
dGVybW9zdENvbnRleHQgKSApIHx8ICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KGNoZWNrQ29udGV4dCA9IGNvbnRleHQpLm5vZGVUeXBlID8KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtYXRjaENvbnRleHQoIGVsZW0sIGNvbnRleHQsIHhtbCApIDoK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaEFueUNvbnRleHQo
IGVsZW0sIGNvbnRleHQsIHhtbCApICk7Ci0gICAgICAgICAgICAgICAgfSBdOwotCi0gICAgICAg
IGZvciAoIDsgaSA8IGxlbjsgaSsrICkgewotICAgICAgICAgICAgICAgIGlmICggKG1hdGNoZXIg
PSBFeHByLnJlbGF0aXZlWyB0b2tlbnNbaV0udHlwZSBdKSApIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG1hdGNoZXJzID0gWyBhZGRDb21iaW5hdG9yKCBlbGVtZW50TWF0Y2hlciggbWF0Y2hl
cnMgKSwgbWF0Y2hlciApIF07Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIG1hdGNoZXIgPSBFeHByLmZpbHRlclsgdG9rZW5zW2ldLnR5cGUgXS5hcHBs
eSggbnVsbCwgdG9rZW5zW2ldLm1hdGNoZXMgKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gUmV0dXJuIHNwZWNpYWwgdXBvbiBzZWVpbmcgYSBwb3NpdGlvbmFsIG1hdGNoZXIKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICggbWF0Y2hlclsgZXhwYW5kbyBdICkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBGaW5kIHRoZSBuZXh0IHJlbGF0aXZlIG9wZXJhdG9y
IChpZiBhbnkpIGZvciBwcm9wZXIgaGFuZGxpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaiA9ICsraTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICggOyBq
IDwgbGVuOyBqKysgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCBFeHByLnJlbGF0aXZlWyB0b2tlbnNbal0udHlwZSBdICkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXRNYXRjaGVyKAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPiAxICYmIGVsZW1lbnRN
YXRjaGVyKCBtYXRjaGVycyApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGkgPiAxICYmIHRva2Vucy5zbGljZSggMCwgaSAtIDEgKS5qb2luKCIiKS5yZXBsYWNlKCBy
dHJpbSwgIiQxIiApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1h
dGNoZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA8IGogJiYg
bWF0Y2hlckZyb21Ub2tlbnMoIHRva2Vucy5zbGljZSggaSwgaiApICksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaiA8IGxlbiAmJiBtYXRjaGVyRnJvbVRva2Vucygg
KHRva2VucyA9IHRva2Vucy5zbGljZSggaiApKSApLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGogPCBsZW4gJiYgdG9rZW5zLmpvaW4oIiIpCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBtYXRjaGVycy5wdXNoKCBtYXRjaGVyICk7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGVsZW1lbnRNYXRjaGVyKCBtYXRjaGVy
cyApOwotfQotCi1mdW5jdGlvbiBtYXRjaGVyRnJvbUdyb3VwTWF0Y2hlcnMoIGVsZW1lbnRNYXRj
aGVycywgc2V0TWF0Y2hlcnMgKSB7Ci0gICAgICAgIHZhciBieVNldCA9IHNldE1hdGNoZXJzLmxl
bmd0aCA+IDAsCi0gICAgICAgICAgICAgICAgYnlFbGVtZW50ID0gZWxlbWVudE1hdGNoZXJzLmxl
bmd0aCA+IDAsCi0gICAgICAgICAgICAgICAgc3VwZXJNYXRjaGVyID0gZnVuY3Rpb24oIHNlZWQs
IGNvbnRleHQsIHhtbCwgcmVzdWx0cywgZXhwYW5kQ29udGV4dCApIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHZhciBlbGVtLCBqLCBtYXRjaGVyLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXRNYXRjaGVkID0gW10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1hdGNoZWRDb3VudCA9IDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAi
MCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVubWF0Y2hlZCA9IHNlZWQgJiYg
W10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dGVybW9zdCA9IGV4cGFuZENv
bnRleHQgIT0gbnVsbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dEJh
Y2t1cCA9IG91dGVybW9zdENvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIFdlIG11c3QgYWx3YXlzIGhhdmUgZWl0aGVyIHNlZWQgZWxlbWVudHMgb3IgY29udGV4dAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtcyA9IHNlZWQgfHwgYnlFbGVtZW50
ICYmIEV4cHIuZmluZFsiVEFHIl0oICIqIiwgZXhwYW5kQ29udGV4dCAmJiBjb250ZXh0LnBhcmVu
dE5vZGUgfHwgY29udGV4dCApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBO
ZXN0ZWQgbWF0Y2hlcnMgc2hvdWxkIHVzZSBub24taW50ZWdlciBkaXJydW5zCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRpcnJ1bnNVbmlxdWUgPSAoZGlycnVucyArPSBjb250ZXh0
QmFja3VwID09IG51bGwgPyAxIDogTWF0aC5FKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCBvdXRlcm1vc3QgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dGVy
bW9zdENvbnRleHQgPSBjb250ZXh0ICE9PSBkb2N1bWVudCAmJiBjb250ZXh0OwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjYWNoZWRydW5zID0gc3VwZXJNYXRjaGVyLmVsOwotICAg
ICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBBZGQg
ZWxlbWVudHMgcGFzc2luZyBlbGVtZW50TWF0Y2hlcnMgZGlyZWN0bHkgdG8gcmVzdWx0cwotICAg
ICAgICAgICAgICAgICAgICAgICAgZm9yICggOyAoZWxlbSA9IGVsZW1zW2ldKSAhPSBudWxsOyBp
KysgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggYnlFbGVtZW50ICYm
IGVsZW0gKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICgg
aiA9IDA7IChtYXRjaGVyID0gZWxlbWVudE1hdGNoZXJzW2pdKTsgaisrICkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBtYXRjaGVyKCBlbGVt
LCBjb250ZXh0LCB4bWwgKSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cy5wdXNoKCBlbGVtICk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoIG91dGVybW9zdCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRpcnJ1bnMgPSBkaXJydW5zVW5pcXVlOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVkcnVucyA9ICsr
c3VwZXJNYXRjaGVyLmVsOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIFRyYWNrIHVubWF0Y2hlZCBlbGVtZW50cyBmb3Igc2V0IGZpbHRl
cnMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBieVNldCApIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGV5IHdpbGwgaGF2ZSBnb25l
IHRocm91Z2ggYWxsIHBvc3NpYmxlIG1hdGNoZXJzCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKCAoZWxlbSA9ICFtYXRjaGVyICYmIGVsZW0pICkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlZENvdW50LS07
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTGVuZ3RoZW4gdGhlIGFycmF5IGZvciBl
dmVyeSBlbGVtZW50LCBtYXRjaGVkIG9yIG5vdAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICggc2VlZCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVubWF0Y2hlZC5wdXNoKCBlbGVtICk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIEFwcGx5IHNldCBmaWx0ZXJzIHRvIHVubWF0Y2hlZCBlbGVtZW50cwotICAgICAgICAg
ICAgICAgICAgICAgICAgbWF0Y2hlZENvdW50ICs9IGk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoIGJ5U2V0ICYmIGkgIT09IG1hdGNoZWRDb3VudCApIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZm9yICggaiA9IDA7IChtYXRjaGVyID0gc2V0TWF0Y2hlcnNbal0pOyBq
KysgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlcigg
dW5tYXRjaGVkLCBzZXRNYXRjaGVkLCBjb250ZXh0LCB4bWwgKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgg
c2VlZCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZWlu
dGVncmF0ZSBlbGVtZW50IG1hdGNoZXMgdG8gZWxpbWluYXRlIHRoZSBuZWVkIGZvciBzb3J0aW5n
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBtYXRjaGVkQ291
bnQgPiAwICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgd2hpbGUgKCBpLS0gKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICggISh1bm1hdGNoZWRbaV0gfHwgc2V0TWF0Y2hlZFtpXSkg
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0TWF0Y2hlZFtpXSA9IHBvcC5jYWxsKCByZXN1bHRzICk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBEaXNjYXJkIGluZGV4IHBsYWNlaG9sZGVyIHZhbHVlcyB0byBn
ZXQgb25seSBhY3R1YWwgbWF0Y2hlcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNldE1hdGNoZWQgPSBjb25kZW5zZSggc2V0TWF0Y2hlZCApOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gQWRkIG1hdGNoZXMgdG8gcmVzdWx0cwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwdXNoLmFwcGx5KCByZXN1bHRzLCBzZXRNYXRjaGVkICk7Ci0KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gU2VlZGxlc3Mgc2V0IG1hdGNoZXMgc3VjY2VlZGluZyBtdWx0aXBs
ZSBzdWNjZXNzZnVsIG1hdGNoZXJzIHN0aXB1bGF0ZSBzb3J0aW5nCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICggb3V0ZXJtb3N0ICYmICFzZWVkICYmIHNldE1hdGNoZWQubGVu
Z3RoID4gMCAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbWF0
Y2hlZENvdW50ICsgc2V0TWF0Y2hlcnMubGVuZ3RoICkgPiAxICkgewotCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgU2l6emxlLnVuaXF1ZVNvcnQoIHJlc3VsdHMgKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBPdmVycmlkZSBtYW5pcHVsYXRpb24g
b2YgZ2xvYmFscyBieSBuZXN0ZWQgbWF0Y2hlcnMKLSAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICggb3V0ZXJtb3N0ICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJydW5z
ID0gZGlycnVuc1VuaXF1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ZXJt
b3N0Q29udGV4dCA9IGNvbnRleHRCYWNrdXA7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1bm1hdGNoZWQ7Ci0gICAgICAgICAgICAg
ICAgfTsKLQotICAgICAgICBzdXBlck1hdGNoZXIuZWwgPSAwOwotICAgICAgICByZXR1cm4gYnlT
ZXQgPwotICAgICAgICAgICAgICAgIG1hcmtGdW5jdGlvbiggc3VwZXJNYXRjaGVyICkgOgotICAg
ICAgICAgICAgICAgIHN1cGVyTWF0Y2hlcjsKLX0KLQotY29tcGlsZSA9IFNpenpsZS5jb21waWxl
ID0gZnVuY3Rpb24oIHNlbGVjdG9yLCBncm91cCAvKiBJbnRlcm5hbCBVc2UgT25seSAqLyApIHsK
LSAgICAgICAgdmFyIGksCi0gICAgICAgICAgICAgICAgc2V0TWF0Y2hlcnMgPSBbXSwKLSAgICAg
ICAgICAgICAgICBlbGVtZW50TWF0Y2hlcnMgPSBbXSwKLSAgICAgICAgICAgICAgICBjYWNoZWQg
PSBjb21waWxlckNhY2hlWyBleHBhbmRvIF1bIHNlbGVjdG9yICsgIiAiIF07Ci0KLSAgICAgICAg
aWYgKCAhY2FjaGVkICkgewotICAgICAgICAgICAgICAgIC8vIEdlbmVyYXRlIGEgZnVuY3Rpb24g
b2YgcmVjdXJzaXZlIGZ1bmN0aW9ucyB0aGF0IGNhbiBiZSB1c2VkIHRvIGNoZWNrIGVhY2ggZWxl
bWVudAotICAgICAgICAgICAgICAgIGlmICggIWdyb3VwICkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgZ3JvdXAgPSB0b2tlbml6ZSggc2VsZWN0b3IgKTsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgaSA9IGdyb3VwLmxlbmd0aDsKLSAgICAgICAgICAgICAgICB3aGlsZSAo
IGktLSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlZCA9IG1hdGNoZXJGcm9tVG9r
ZW5zKCBncm91cFtpXSApOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBjYWNoZWRbIGV4
cGFuZG8gXSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TWF0Y2hlcnMu
cHVzaCggY2FjaGVkICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50TWF0Y2hlcnMucHVzaCggY2FjaGVkICk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICAgICAgLy8gQ2FjaGUgdGhlIGNvbXBpbGVkIGZ1bmN0aW9uCi0gICAgICAgICAgICAgICAg
Y2FjaGVkID0gY29tcGlsZXJDYWNoZSggc2VsZWN0b3IsIG1hdGNoZXJGcm9tR3JvdXBNYXRjaGVy
cyggZWxlbWVudE1hdGNoZXJzLCBzZXRNYXRjaGVycyApICk7Ci0gICAgICAgIH0KLSAgICAgICAg
cmV0dXJuIGNhY2hlZDsKLX07Ci0KLWZ1bmN0aW9uIG11bHRpcGxlQ29udGV4dHMoIHNlbGVjdG9y
LCBjb250ZXh0cywgcmVzdWx0cyApIHsKLSAgICAgICAgdmFyIGkgPSAwLAotICAgICAgICAgICAg
ICAgIGxlbiA9IGNvbnRleHRzLmxlbmd0aDsKLSAgICAgICAgZm9yICggOyBpIDwgbGVuOyBpKysg
KSB7Ci0gICAgICAgICAgICAgICAgU2l6emxlKCBzZWxlY3RvciwgY29udGV4dHNbaV0sIHJlc3Vs
dHMgKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gcmVzdWx0czsKLX0KLQotZnVuY3Rpb24g
c2VsZWN0KCBzZWxlY3RvciwgY29udGV4dCwgcmVzdWx0cywgc2VlZCwgeG1sICkgewotICAgICAg
ICB2YXIgaSwgdG9rZW5zLCB0b2tlbiwgdHlwZSwgZmluZCwKLSAgICAgICAgICAgICAgICBtYXRj
aCA9IHRva2VuaXplKCBzZWxlY3RvciApLAotICAgICAgICAgICAgICAgIGogPSBtYXRjaC5sZW5n
dGg7Ci0KLSAgICAgICAgaWYgKCAhc2VlZCApIHsKLSAgICAgICAgICAgICAgICAvLyBUcnkgdG8g
bWluaW1pemUgb3BlcmF0aW9ucyBpZiB0aGVyZSBpcyBvbmx5IG9uZSBncm91cAotICAgICAgICAg
ICAgICAgIGlmICggbWF0Y2gubGVuZ3RoID09PSAxICkgewotCi0gICAgICAgICAgICAgICAgICAg
ICAgICAvLyBUYWtlIGEgc2hvcnRjdXQgYW5kIHNldCB0aGUgY29udGV4dCBpZiB0aGUgcm9vdCBz
ZWxlY3RvciBpcyBhbiBJRAotICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5zID0gbWF0Y2hb
MF0gPSBtYXRjaFswXS5zbGljZSggMCApOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCB0
b2tlbnMubGVuZ3RoID4gMiAmJiAodG9rZW4gPSB0b2tlbnNbMF0pLnR5cGUgPT09ICJJRCIgJiYK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0Lm5vZGVUeXBl
ID09PSA5ICYmICF4bWwgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBFeHByLnJlbGF0aXZlWyB0b2tlbnNbMV0udHlwZSBdICkgewotCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQgPSBFeHByLmZpbmRbIklEIl0oIHRva2VuLm1hdGNoZXNb
MF0ucmVwbGFjZSggcmJhY2tzbGFzaCwgIiIgKSwgY29udGV4dCwgeG1sIClbMF07Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggIWNvbnRleHQgKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdHM7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZWxlY3RvciA9IHNlbGVjdG9yLnNsaWNlKCB0b2tlbnMuc2hpZnQoKS5sZW5ndGggKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gRmV0Y2gg
YSBzZWVkIHNldCBmb3IgcmlnaHQtdG8tbGVmdCBtYXRjaGluZwotICAgICAgICAgICAgICAgICAg
ICAgICAgZm9yICggaSA9IG1hdGNoRXhwclsiUE9TIl0udGVzdCggc2VsZWN0b3IgKSA/IC0xIDog
dG9rZW5zLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tICkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0b2tlbiA9IHRva2Vuc1tpXTsKLQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBBYm9ydCBpZiB3ZSBoaXQgYSBjb21iaW5hdG9yCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICggRXhwci5yZWxhdGl2ZVsgKHR5cGUgPSB0b2tlbi50eXBlKSBd
ICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICggKGZpbmQgPSBFeHByLmZpbmRbIHR5cGUgXSkgKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2VhcmNoLCBleHBhbmRpbmcgY29udGV4dCBm
b3IgbGVhZGluZyBzaWJsaW5nIGNvbWJpbmF0b3JzCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKCAoc2VlZCA9IGZpbmQoCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi5tYXRjaGVzWzBdLnJlcGxhY2UoIHJiYWNr
c2xhc2gsICIiICksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByc2libGluZy50ZXN0KCB0b2tlbnNbMF0udHlwZSApICYmIGNvbnRleHQucGFyZW50Tm9k
ZSB8fCBjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgeG1sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSkgKSB7
Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElm
IHNlZWQgaXMgZW1wdHkgb3Igbm8gdG9rZW5zIHJlbWFpbiwgd2UgY2FuIHJldHVybiBlYXJseQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5zLnNw
bGljZSggaSwgMSApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2VsZWN0b3IgPSBzZWVkLmxlbmd0aCAmJiB0b2tlbnMuam9pbigiIik7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICFzZWxlY3RvciAp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHVzaC5hcHBseSggcmVzdWx0cywgc2xpY2UuY2FsbCggc2VlZCwgMCApICk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBy
ZXN1bHRzOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBDb21waWxlIGFuZCBleGVjdXRl
IGEgZmlsdGVyaW5nIGZ1bmN0aW9uCi0gICAgICAgIC8vIFByb3ZpZGUgYG1hdGNoYCB0byBhdm9p
ZCByZXRva2VuaXphdGlvbiBpZiB3ZSBtb2RpZmllZCB0aGUgc2VsZWN0b3IgYWJvdmUKLSAgICAg
ICAgY29tcGlsZSggc2VsZWN0b3IsIG1hdGNoICkoCi0gICAgICAgICAgICAgICAgc2VlZCwKLSAg
ICAgICAgICAgICAgICBjb250ZXh0LAotICAgICAgICAgICAgICAgIHhtbCwKLSAgICAgICAgICAg
ICAgICByZXN1bHRzLAotICAgICAgICAgICAgICAgIHJzaWJsaW5nLnRlc3QoIHNlbGVjdG9yICkK
LSAgICAgICAgKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdHM7Ci19Ci0KLWlmICggZG9jdW1lbnQu
cXVlcnlTZWxlY3RvckFsbCApIHsKLSAgICAgICAgKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAg
ICAgIHZhciBkaXNjb25uZWN0ZWRNYXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgIG9sZFNl
bGVjdCA9IHNlbGVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc2NhcGUgPSAvJ3xcXC9n
LAotICAgICAgICAgICAgICAgICAgICAgICAgcmF0dHJpYnV0ZVF1b3RlcyA9IC9cPVtceDIwXHRc
clxuXGZdKihbXiciXF1dKilbXHgyMFx0XHJcblxmXSpcXS9nLAotCi0gICAgICAgICAgICAgICAg
ICAgICAgICAvLyBxU2EoOmZvY3VzKSByZXBvcnRzIGZhbHNlIHdoZW4gdHJ1ZSAoQ2hyb21lIDIx
KSwgbm8gbmVlZCB0byBhbHNvIGFkZCB0byBidWdneU1hdGNoZXMgc2luY2UgbWF0Y2hlcyBjaGVj
a3MgYnVnZ3lRU0EKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIEEgc3VwcG9ydCB0ZXN0IHdv
dWxkIHJlcXVpcmUgdG9vIG11Y2ggY29kZSAod291bGQgaW5jbHVkZSBkb2N1bWVudCByZWFkeSkK
LSAgICAgICAgICAgICAgICAgICAgICAgIHJidWdneVFTQSA9IFsgIjpmb2N1cyIgXSwKLQotICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gbWF0Y2hlc1NlbGVjdG9yKDphY3RpdmUpIHJlcG9ydHMg
ZmFsc2Ugd2hlbiB0cnVlIChJRTkvT3BlcmEgMTEuNSkKLSAgICAgICAgICAgICAgICAgICAgICAg
IC8vIEEgc3VwcG9ydCB0ZXN0IHdvdWxkIHJlcXVpcmUgdG9vIG11Y2ggY29kZSAod291bGQgaW5j
bHVkZSBkb2N1bWVudCByZWFkeSkKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGp1c3Qgc2tp
cCBtYXRjaGVzU2VsZWN0b3IgZm9yIDphY3RpdmUKLSAgICAgICAgICAgICAgICAgICAgICAgIHJi
dWdneU1hdGNoZXMgPSBbICI6YWN0aXZlIiBdLAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0
Y2hlcyA9IGRvY0VsZW0ubWF0Y2hlc1NlbGVjdG9yIHx8Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRvY0VsZW0ubW96TWF0Y2hlc1NlbGVjdG9yIHx8Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRvY0VsZW0ud2Via2l0TWF0Y2hlc1NlbGVjdG9yIHx8Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRvY0VsZW0ub01hdGNoZXNTZWxlY3RvciB8fAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2NFbGVtLm1zTWF0Y2hlc1NlbGVjdG9yOwot
Ci0gICAgICAgICAgICAgICAgLy8gQnVpbGQgUVNBIHJlZ2V4Ci0gICAgICAgICAgICAgICAgLy8g
UmVnZXggc3RyYXRlZ3kgYWRvcHRlZCBmcm9tIERpZWdvIFBlcmluaQotICAgICAgICAgICAgICAg
IGFzc2VydChmdW5jdGlvbiggZGl2ICkgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2Vs
ZWN0IGlzIHNldCB0byBlbXB0eSBzdHJpbmcgb24gcHVycG9zZQotICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gVGhpcyBpcyB0byB0ZXN0IElFJ3MgdHJlYXRtZW50IG9mIG5vdCBleHBsaWN0bHkK
LSAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNldHRpbmcgYSBib29sZWFuIGNvbnRlbnQgYXR0
cmlidXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2luY2UgaXRzIHByZXNlbmNlIHNo
b3VsZCBiZSBlbm91Z2gKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGh0dHA6Ly9idWdzLmpx
dWVyeS5jb20vdGlja2V0LzEyMzU5Ci0gICAgICAgICAgICAgICAgICAgICAgICBkaXYuaW5uZXJI
VE1MID0gIjxzZWxlY3Q+PG9wdGlvbiBzZWxlY3RlZD0nJz48L29wdGlvbj48L3NlbGVjdD4iOwot
Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBJRTggLSBTb21lIGJvb2xlYW4gYXR0cmlidXRl
cyBhcmUgbm90IHRyZWF0ZWQgY29ycmVjdGx5Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAo
ICFkaXYucXVlcnlTZWxlY3RvckFsbCgiW3NlbGVjdGVkXSIpLmxlbmd0aCApIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmJ1Z2d5UVNBLnB1c2goICJcXFsiICsgd2hpdGVzcGFj
ZSArICIqKD86Y2hlY2tlZHxkaXNhYmxlZHxpc21hcHxtdWx0aXBsZXxyZWFkb25seXxzZWxlY3Rl
ZHx2YWx1ZSkiICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIFdlYmtpdC9PcGVyYSAtIDpjaGVja2VkIHNob3VsZCByZXR1cm4gc2VsZWN0
ZWQgb3B0aW9uIGVsZW1lbnRzCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBodHRwOi8vd3d3
LnczLm9yZy9UUi8yMDExL1JFQy1jc3MzLXNlbGVjdG9ycy0yMDExMDkyOS8jY2hlY2tlZAotICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gSUU4IHRocm93cyBlcnJvciBoZXJlIChkbyBub3QgcHV0
IHRlc3RzIGFmdGVyIHRoaXMgb25lKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhZGl2
LnF1ZXJ5U2VsZWN0b3JBbGwoIjpjaGVja2VkIikubGVuZ3RoICkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByYnVnZ3lRU0EucHVzaCgiOmNoZWNrZWQiKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgICAgIGFz
c2VydChmdW5jdGlvbiggZGl2ICkgewotCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBPcGVy
YSAxMC0xMi9JRTkgLSBePSAkPSAqPSBhbmQgZW1wdHkgdmFsdWVzCi0gICAgICAgICAgICAgICAg
ICAgICAgICAvLyBTaG91bGQgbm90IHNlbGVjdCBhbnl0aGluZwotICAgICAgICAgICAgICAgICAg
ICAgICAgZGl2LmlubmVySFRNTCA9ICI8cCB0ZXN0PScnPjwvcD4iOwotICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCBkaXYucXVlcnlTZWxlY3RvckFsbCgiW3Rlc3RePScnXSIpLmxlbmd0aCAp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmJ1Z2d5UVNBLnB1c2goICJbKl4k
XT0iICsgd2hpdGVzcGFjZSArICIqKD86XCJcInwnJykiICk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZGIDMuNSAtIDplbmFibGVkLzpk
aXNhYmxlZCBhbmQgaGlkZGVuIGVsZW1lbnRzIChoaWRkZW4gZWxlbWVudHMgYXJlIHN0aWxsIGVu
YWJsZWQpCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBJRTggdGhyb3dzIGVycm9yIGhlcmUg
KGRvIG5vdCBwdXQgdGVzdHMgYWZ0ZXIgdGhpcyBvbmUpCi0gICAgICAgICAgICAgICAgICAgICAg
ICBkaXYuaW5uZXJIVE1MID0gIjxpbnB1dCB0eXBlPSdoaWRkZW4nLz4iOwotICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCAhZGl2LnF1ZXJ5U2VsZWN0b3JBbGwoIjplbmFibGVkIikubGVuZ3Ro
ICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYnVnZ3lRU0EucHVzaCgiOmVu
YWJsZWQiLCAiOmRpc2FibGVkIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgfSk7Ci0KLSAgICAgICAgICAgICAgICAvLyByYnVnZ3lRU0EgYWx3YXlzIGNvbnRh
aW5zIDpmb2N1cywgc28gbm8gbmVlZCBmb3IgYSBsZW5ndGggY2hlY2sKLSAgICAgICAgICAgICAg
ICByYnVnZ3lRU0EgPSAvKiByYnVnZ3lRU0EubGVuZ3RoICYmICovIG5ldyBSZWdFeHAoIHJidWdn
eVFTQS5qb2luKCJ8IikgKTsKLQotICAgICAgICAgICAgICAgIHNlbGVjdCA9IGZ1bmN0aW9uKCBz
ZWxlY3RvciwgY29udGV4dCwgcmVzdWx0cywgc2VlZCwgeG1sICkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gT25seSB1c2UgcXVlcnlTZWxlY3RvckFsbCB3aGVuIG5vdCBmaWx0ZXJpbmcs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIHRoaXMgaXMgbm90IHhtbCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIGFuZCB3aGVuIG5vIFFTQSBidWdzIGFwcGx5Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoICFzZWVkICYmICF4bWwgJiYgIXJidWdneVFTQS50ZXN0KCBz
ZWxlY3RvciApICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZ3JvdXBz
LCBpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZCA9IHRydWUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlkID0gZXhwYW5kbywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdDb250ZXh0ID0gY29u
dGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdTZWxlY3Rv
ciA9IGNvbnRleHQubm9kZVR5cGUgPT09IDkgJiYgc2VsZWN0b3I7Ci0KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gcVNBIHdvcmtzIHN0cmFuZ2VseSBvbiBFbGVtZW50LXJvb3Rl
ZCBxdWVyaWVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGNhbiB3b3Jr
IGFyb3VuZCB0aGlzIGJ5IHNwZWNpZnlpbmcgYW4gZXh0cmEgSUQgb24gdGhlIHJvb3QKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIHdvcmtpbmcgdXAgZnJvbSB0aGVyZSAo
VGhhbmtzIHRvIEFuZHJldyBEdXBvbnQgZm9yIHRoZSB0ZWNobmlxdWUpCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIElFIDggZG9lc24ndCB3b3JrIG9uIG9iamVjdCBlbGVtZW50
cwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGNvbnRleHQubm9kZVR5cGUg
PT09IDEgJiYgY29udGV4dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpICE9PSAib2JqZWN0IiApIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cHMgPSB0b2tlbml6
ZSggc2VsZWN0b3IgKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmICggKG9sZCA9IGNvbnRleHQuZ2V0QXR0cmlidXRlKCJpZCIpKSApIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pZCA9IG9sZC5yZXBsYWNlKCBy
ZXNjYXBlLCAiXFwkJiIgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29udGV4dC5zZXRBdHRyaWJ1dGUoICJpZCIsIG5pZCApOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBuaWQgPSAiW2lkPSciICsgbmlkICsgIiddICI7Ci0KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpID0gZ3JvdXBzLmxlbmd0aDsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoIGktLSApIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3Vwc1tpXSA9IG5pZCArIGdyb3Vw
c1tpXS5qb2luKCIiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3Q29udGV4dCA9IHJz
aWJsaW5nLnRlc3QoIHNlbGVjdG9yICkgJiYgY29udGV4dC5wYXJlbnROb2RlIHx8IGNvbnRleHQ7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3U2VsZWN0b3IgPSBn
cm91cHMuam9pbigiLCIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBuZXdTZWxlY3RvciApIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaC5hcHBseSggcmVzdWx0cywgc2xp
Y2UuY2FsbCggbmV3Q29udGV4dC5xdWVyeVNlbGVjdG9yQWxsKAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdTZWxlY3RvcgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSwgMCApICk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0
czsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoKHFzYUVy
cm9yKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBmaW5hbGx5
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgg
IW9sZCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29udGV4dC5yZW1vdmVBdHRyaWJ1dGUoImlkIik7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBvbGRTZWxlY3QoIHNlbGVjdG9yLCBjb250ZXh0LCByZXN1bHRzLCBzZWVkLCB4bWwgKTsKLSAg
ICAgICAgICAgICAgICB9OwotCi0gICAgICAgICAgICAgICAgaWYgKCBtYXRjaGVzICkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KGZ1bmN0aW9uKCBkaXYgKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIHRvIHNlZSBpZiBpdCdzIHBvc3NpYmxlIHRv
IGRvIG1hdGNoZXNTZWxlY3RvcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBv
biBhIGRpc2Nvbm5lY3RlZCBub2RlIChJRSA5KQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkaXNjb25uZWN0ZWRNYXRjaCA9IG1hdGNoZXMuY2FsbCggZGl2LCAiZGl2IiApOwotCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgc2hvdWxkIGZhaWwgd2l0aCBh
biBleGNlcHRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR2Vja28gZG9l
cyBub3QgZXJyb3IsIHJldHVybnMgZmFsc2UgaW5zdGVhZAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1hdGNoZXMuY2FsbCggZGl2LCAiW3Rlc3QhPScnXTpzaXp6bGUiICk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmJ1Z2d5TWF0Y2hlcy5wdXNoKCAiIT0iLCBwc2V1
ZG9zICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKCBlICkge30K
LSAgICAgICAgICAgICAgICAgICAgICAgIH0pOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAv
LyByYnVnZ3lNYXRjaGVzIGFsd2F5cyBjb250YWlucyA6YWN0aXZlIGFuZCA6Zm9jdXMsIHNvIG5v
IG5lZWQgZm9yIGEgbGVuZ3RoIGNoZWNrCi0gICAgICAgICAgICAgICAgICAgICAgICByYnVnZ3lN
YXRjaGVzID0gLyogcmJ1Z2d5TWF0Y2hlcy5sZW5ndGggJiYgKi8gbmV3IFJlZ0V4cCggcmJ1Z2d5
TWF0Y2hlcy5qb2luKCJ8IikgKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgU2l6emxlLm1h
dGNoZXNTZWxlY3RvciA9IGZ1bmN0aW9uKCBlbGVtLCBleHByICkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCBhdHRyaWJ1dGUgc2VsZWN0b3JzIGFy
ZSBxdW90ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwciA9IGV4cHIucmVw
bGFjZSggcmF0dHJpYnV0ZVF1b3RlcywgIj0nJDEnXSIgKTsKLQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyByYnVnZ3lNYXRjaGVzIGFsd2F5cyBjb250YWlucyA6YWN0aXZlLCBz
byBubyBuZWVkIGZvciBhbiBleGlzdGVuY2UgY2hlY2sKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCAhaXNYTUwoIGVsZW0gKSAmJiAhcmJ1Z2d5TWF0Y2hlcy50ZXN0KCBleHBy
ICkgJiYgIXJidWdneVFTQS50ZXN0KCBleHByICkgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZhciByZXQgPSBtYXRjaGVzLmNhbGwoIGVsZW0sIGV4cHIgKTsKLQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSUUgOSdz
IG1hdGNoZXNTZWxlY3RvciByZXR1cm5zIGZhbHNlIG9uIGRpc2Nvbm5lY3RlZCBub2RlcwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCByZXQgfHwg
ZGlzY29ubmVjdGVkTWF0Y2ggfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBcyB3ZWxsLCBkaXNjb25uZWN0ZWQgbm9k
ZXMgYXJlIHNhaWQgdG8gYmUgaW4gYSBkb2N1bWVudAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZyYWdtZW50IGluIElF
IDkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlbGVtLmRvY3VtZW50ICYmIGVsZW0uZG9jdW1lbnQubm9kZVR5cGUgIT09IDEx
ICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gcmV0OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0
Y2goZSkge30KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBTaXp6bGUoIGV4cHIsIG51bGwsIG51bGwsIFsg
ZWxlbSBdICkubGVuZ3RoID4gMDsKLSAgICAgICAgICAgICAgICAgICAgICAgIH07Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICB9KSgpOwotfQotCi0vLyBEZXByZWNhdGVkCi1FeHByLnBzZXVk
b3NbIm50aCJdID0gRXhwci5wc2V1ZG9zWyJlcSJdOwotCi0vLyBCYWNrLWNvbXBhdAotZnVuY3Rp
b24gc2V0RmlsdGVycygpIHt9Ci1FeHByLmZpbHRlcnMgPSBzZXRGaWx0ZXJzLnByb3RvdHlwZSA9
IEV4cHIucHNldWRvczsKLUV4cHIuc2V0RmlsdGVycyA9IG5ldyBzZXRGaWx0ZXJzKCk7Ci0KLS8v
IE92ZXJyaWRlIHNpenpsZSBhdHRyaWJ1dGUgcmV0cmlldmFsCi1TaXp6bGUuYXR0ciA9IGpRdWVy
eS5hdHRyOwotalF1ZXJ5LmZpbmQgPSBTaXp6bGU7Ci1qUXVlcnkuZXhwciA9IFNpenpsZS5zZWxl
Y3RvcnM7Ci1qUXVlcnkuZXhwclsiOiJdID0galF1ZXJ5LmV4cHIucHNldWRvczsKLWpRdWVyeS51
bmlxdWUgPSBTaXp6bGUudW5pcXVlU29ydDsKLWpRdWVyeS50ZXh0ID0gU2l6emxlLmdldFRleHQ7
Ci1qUXVlcnkuaXNYTUxEb2MgPSBTaXp6bGUuaXNYTUw7Ci1qUXVlcnkuY29udGFpbnMgPSBTaXp6
bGUuY29udGFpbnM7Ci0KLQotfSkoIHdpbmRvdyApOwotdmFyIHJ1bnRpbCA9IC9VbnRpbCQvLAot
ICAgICAgICBycGFyZW50c3ByZXYgPSAvXig/OnBhcmVudHN8cHJldig/OlVudGlsfEFsbCkpLywK
LSAgICAgICAgaXNTaW1wbGUgPSAvXi5bXjojXFtcLixdKiQvLAotICAgICAgICBybmVlZHNDb250
ZXh0ID0galF1ZXJ5LmV4cHIubWF0Y2gubmVlZHNDb250ZXh0LAotICAgICAgICAvLyBtZXRob2Rz
IGd1YXJhbnRlZWQgdG8gcHJvZHVjZSBhIHVuaXF1ZSBzZXQgd2hlbiBzdGFydGluZyBmcm9tIGEg
dW5pcXVlIHNldAotICAgICAgICBndWFyYW50ZWVkVW5pcXVlID0gewotICAgICAgICAgICAgICAg
IGNoaWxkcmVuOiB0cnVlLAotICAgICAgICAgICAgICAgIGNvbnRlbnRzOiB0cnVlLAotICAgICAg
ICAgICAgICAgIG5leHQ6IHRydWUsCi0gICAgICAgICAgICAgICAgcHJldjogdHJ1ZQotICAgICAg
ICB9OwotCi1qUXVlcnkuZm4uZXh0ZW5kKHsKLSAgICAgICAgZmluZDogZnVuY3Rpb24oIHNlbGVj
dG9yICkgewotICAgICAgICAgICAgICAgIHZhciBpLCBsLCBsZW5ndGgsIG4sIHIsIHJldCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHNlbGYgPSB0aGlzOwotCi0gICAgICAgICAgICAgICAgaWYg
KCB0eXBlb2Ygc2VsZWN0b3IgIT09ICJzdHJpbmciICkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGpRdWVyeSggc2VsZWN0b3IgKS5maWx0ZXIoZnVuY3Rpb24oKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoIGkgPSAwLCBsID0gc2VsZi5sZW5ndGg7IGkg
PCBsOyBpKysgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCBqUXVlcnkuY29udGFpbnMoIHNlbGZbIGkgXSwgdGhpcyApICkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgICAgICByZXQgPSB0aGlzLnB1c2hTdGFjayggIiIsICJmaW5kIiwgc2Vs
ZWN0b3IgKTsKLQotICAgICAgICAgICAgICAgIGZvciAoIGkgPSAwLCBsID0gdGhpcy5sZW5ndGg7
IGkgPCBsOyBpKysgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGggPSByZXQubGVu
Z3RoOwotICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmZpbmQoIHNlbGVjdG9yLCB0aGlz
W2ldLCByZXQgKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBpID4gMCApIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIHJlc3Vs
dHMgYXJlIHVuaXF1ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKCBuID0g
bGVuZ3RoOyBuIDwgcmV0Lmxlbmd0aDsgbisrICkgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZvciAoIHIgPSAwOyByIDwgbGVuZ3RoOyByKysgKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHJldFtyXSA9PT0g
cmV0W25dICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXQuc3BsaWNlKG4tLSwgMSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
ICAgIHJldHVybiByZXQ7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgaGFzOiBmdW5jdGlvbiggdGFy
Z2V0ICkgewotICAgICAgICAgICAgICAgIHZhciBpLAotICAgICAgICAgICAgICAgICAgICAgICAg
dGFyZ2V0cyA9IGpRdWVyeSggdGFyZ2V0LCB0aGlzICksCi0gICAgICAgICAgICAgICAgICAgICAg
ICBsZW4gPSB0YXJnZXRzLmxlbmd0aDsKLQotICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmZp
bHRlcihmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoIGkgPSAwOyBp
IDwgbGVuOyBpKysgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggalF1
ZXJ5LmNvbnRhaW5zKCB0aGlzLCB0YXJnZXRzW2ldICkgKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9
KTsKLSAgICAgICAgfSwKLQotICAgICAgICBub3Q6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHsKLSAg
ICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wdXNoU3RhY2soIHdpbm5vdyh0aGlzLCBzZWxlY3Rv
ciwgZmFsc2UpLCAibm90Iiwgc2VsZWN0b3IpOwotICAgICAgICB9LAotCi0gICAgICAgIGZpbHRl
cjogZnVuY3Rpb24oIHNlbGVjdG9yICkgewotICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnB1
c2hTdGFjayggd2lubm93KHRoaXMsIHNlbGVjdG9yLCB0cnVlKSwgImZpbHRlciIsIHNlbGVjdG9y
ICk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgaXM6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHsKLSAg
ICAgICAgICAgICAgICByZXR1cm4gISFzZWxlY3RvciAmJiAoCi0gICAgICAgICAgICAgICAgICAg
ICAgICB0eXBlb2Ygc2VsZWN0b3IgPT09ICJzdHJpbmciID8KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIHBvc2l0aW9uYWwvcmVsYXRpdmUgc2VsZWN0b3Is
IGNoZWNrIG1lbWJlcnNoaXAgaW4gdGhlIHJldHVybmVkIHNldAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBzbyAkKCJwOmZpcnN0IikuaXMoInA6bGFzdCIpIHdvbid0IHJldHVy
biB0cnVlIGZvciBhIGRvYyB3aXRoIHR3byAicCIuCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJuZWVkc0NvbnRleHQudGVzdCggc2VsZWN0b3IgKSA/Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KCBzZWxlY3RvciwgdGhpcy5jb250ZXh0ICku
aW5kZXgoIHRoaXNbMF0gKSA+PSAwIDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBqUXVlcnkuZmlsdGVyKCBzZWxlY3RvciwgdGhpcyApLmxlbmd0aCA+IDAgOgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlciggc2VsZWN0b3IgKS5sZW5n
dGggPiAwICk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgY2xvc2VzdDogZnVuY3Rpb24oIHNlbGVj
dG9ycywgY29udGV4dCApIHsKLSAgICAgICAgICAgICAgICB2YXIgY3VyLAotICAgICAgICAgICAg
ICAgICAgICAgICAgaSA9IDAsCi0gICAgICAgICAgICAgICAgICAgICAgICBsID0gdGhpcy5sZW5n
dGgsCi0gICAgICAgICAgICAgICAgICAgICAgICByZXQgPSBbXSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHBvcyA9IHJuZWVkc0NvbnRleHQudGVzdCggc2VsZWN0b3JzICkgfHwgdHlwZW9mIHNl
bGVjdG9ycyAhPT0gInN0cmluZyIgPwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBq
UXVlcnkoIHNlbGVjdG9ycywgY29udGV4dCB8fCB0aGlzLmNvbnRleHQgKSA6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDA7Ci0KLSAgICAgICAgICAgICAgICBmb3IgKCA7IGkgPCBs
OyBpKysgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjdXIgPSB0aGlzW2ldOwotCi0gICAg
ICAgICAgICAgICAgICAgICAgICB3aGlsZSAoIGN1ciAmJiBjdXIub3duZXJEb2N1bWVudCAmJiBj
dXIgIT09IGNvbnRleHQgJiYgY3VyLm5vZGVUeXBlICE9PSAxMSApIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCBwb3MgPyBwb3MuaW5kZXgoY3VyKSA+IC0xIDogalF1ZXJ5
LmZpbmQubWF0Y2hlc1NlbGVjdG9yKGN1ciwgc2VsZWN0b3JzKSApIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXQucHVzaCggY3VyICk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyID0gY3VyLnBh
cmVudE5vZGU7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICAgICAgcmV0ID0gcmV0Lmxlbmd0aCA+IDEgPyBqUXVlcnkudW5pcXVlKCBy
ZXQgKSA6IHJldDsKLQotICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnB1c2hTdGFjayggcmV0
LCAiY2xvc2VzdCIsIHNlbGVjdG9ycyApOwotICAgICAgICB9LAotCi0gICAgICAgIC8vIERldGVy
bWluZSB0aGUgcG9zaXRpb24gb2YgYW4gZWxlbWVudCB3aXRoaW4KLSAgICAgICAgLy8gdGhlIG1h
dGNoZWQgc2V0IG9mIGVsZW1lbnRzCi0gICAgICAgIGluZGV4OiBmdW5jdGlvbiggZWxlbSApIHsK
LQotICAgICAgICAgICAgICAgIC8vIE5vIGFyZ3VtZW50LCByZXR1cm4gaW5kZXggaW4gcGFyZW50
Ci0gICAgICAgICAgICAgICAgaWYgKCAhZWxlbSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiAoIHRoaXNbMF0gJiYgdGhpc1swXS5wYXJlbnROb2RlICkgPyB0aGlzLnByZXZBbGwo
KS5sZW5ndGggOiAtMTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBp
bmRleCBpbiBzZWxlY3RvcgotICAgICAgICAgICAgICAgIGlmICggdHlwZW9mIGVsZW0gPT09ICJz
dHJpbmciICkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpRdWVyeS5pbkFycmF5
KCB0aGlzWzBdLCBqUXVlcnkoIGVsZW0gKSApOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgICAgIC8vIExvY2F0ZSB0aGUgcG9zaXRpb24gb2YgdGhlIGRlc2lyZWQgZWxlbWVudAot
ICAgICAgICAgICAgICAgIHJldHVybiBqUXVlcnkuaW5BcnJheSgKLSAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIElmIGl0IHJlY2VpdmVzIGEgalF1ZXJ5IG9iamVjdCwgdGhlIGZpcnN0IGVsZW1l
bnQgaXMgdXNlZAotICAgICAgICAgICAgICAgICAgICAgICAgZWxlbS5qcXVlcnkgPyBlbGVtWzBd
IDogZWxlbSwgdGhpcyApOwotICAgICAgICB9LAotCi0gICAgICAgIGFkZDogZnVuY3Rpb24oIHNl
bGVjdG9yLCBjb250ZXh0ICkgewotICAgICAgICAgICAgICAgIHZhciBzZXQgPSB0eXBlb2Ygc2Vs
ZWN0b3IgPT09ICJzdHJpbmciID8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1
ZXJ5KCBzZWxlY3RvciwgY29udGV4dCApIDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgalF1ZXJ5Lm1ha2VBcnJheSggc2VsZWN0b3IgJiYgc2VsZWN0b3Iubm9kZVR5cGUgPyBbIHNl
bGVjdG9yIF0gOiBzZWxlY3RvciApLAotICAgICAgICAgICAgICAgICAgICAgICAgYWxsID0galF1
ZXJ5Lm1lcmdlKCB0aGlzLmdldCgpLCBzZXQgKTsKLQotICAgICAgICAgICAgICAgIHJldHVybiB0
aGlzLnB1c2hTdGFjayggaXNEaXNjb25uZWN0ZWQoIHNldFswXSApIHx8IGlzRGlzY29ubmVjdGVk
KCBhbGxbMF0gKSA/Ci0gICAgICAgICAgICAgICAgICAgICAgICBhbGwgOgotICAgICAgICAgICAg
ICAgICAgICAgICAgalF1ZXJ5LnVuaXF1ZSggYWxsICkgKTsKLSAgICAgICAgfSwKLQotICAgICAg
ICBhZGRCYWNrOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IHRoaXMuYWRkKCBzZWxlY3RvciA9PSBudWxsID8KLSAgICAgICAgICAgICAgICAgICAgICAgIHRo
aXMucHJldk9iamVjdCA6IHRoaXMucHJldk9iamVjdC5maWx0ZXIoc2VsZWN0b3IpCi0gICAgICAg
ICAgICAgICAgKTsKLSAgICAgICAgfQotfSk7Ci0KLWpRdWVyeS5mbi5hbmRTZWxmID0galF1ZXJ5
LmZuLmFkZEJhY2s7Ci0KLS8vIEEgcGFpbmZ1bGx5IHNpbXBsZSBjaGVjayB0byBzZWUgaWYgYW4g
ZWxlbWVudCBpcyBkaXNjb25uZWN0ZWQKLS8vIGZyb20gYSBkb2N1bWVudCAoc2hvdWxkIGJlIGlt
cHJvdmVkLCB3aGVyZSBmZWFzaWJsZSkuCi1mdW5jdGlvbiBpc0Rpc2Nvbm5lY3RlZCggbm9kZSAp
IHsKLSAgICAgICAgcmV0dXJuICFub2RlIHx8ICFub2RlLnBhcmVudE5vZGUgfHwgbm9kZS5wYXJl
bnROb2RlLm5vZGVUeXBlID09PSAxMTsKLX0KLQotZnVuY3Rpb24gc2libGluZyggY3VyLCBkaXIg
KSB7Ci0gICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICBjdXIgPSBjdXJbIGRpciBdOwotICAg
ICAgICB9IHdoaWxlICggY3VyICYmIGN1ci5ub2RlVHlwZSAhPT0gMSApOwotCi0gICAgICAgIHJl
dHVybiBjdXI7Ci19Ci0KLWpRdWVyeS5lYWNoKHsKLSAgICAgICAgcGFyZW50OiBmdW5jdGlvbigg
ZWxlbSApIHsKLSAgICAgICAgICAgICAgICB2YXIgcGFyZW50ID0gZWxlbS5wYXJlbnROb2RlOwot
ICAgICAgICAgICAgICAgIHJldHVybiBwYXJlbnQgJiYgcGFyZW50Lm5vZGVUeXBlICE9PSAxMSA/
IHBhcmVudCA6IG51bGw7Ci0gICAgICAgIH0sCi0gICAgICAgIHBhcmVudHM6IGZ1bmN0aW9uKCBl
bGVtICkgewotICAgICAgICAgICAgICAgIHJldHVybiBqUXVlcnkuZGlyKCBlbGVtLCAicGFyZW50
Tm9kZSIgKTsKLSAgICAgICAgfSwKLSAgICAgICAgcGFyZW50c1VudGlsOiBmdW5jdGlvbiggZWxl
bSwgaSwgdW50aWwgKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGpRdWVyeS5kaXIoIGVsZW0s
ICJwYXJlbnROb2RlIiwgdW50aWwgKTsKLSAgICAgICAgfSwKLSAgICAgICAgbmV4dDogZnVuY3Rp
b24oIGVsZW0gKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNpYmxpbmcoIGVsZW0sICJuZXh0
U2libGluZyIgKTsKLSAgICAgICAgfSwKLSAgICAgICAgcHJldjogZnVuY3Rpb24oIGVsZW0gKSB7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNpYmxpbmcoIGVsZW0sICJwcmV2aW91c1NpYmxpbmci
ICk7Ci0gICAgICAgIH0sCi0gICAgICAgIG5leHRBbGw6IGZ1bmN0aW9uKCBlbGVtICkgewotICAg
ICAgICAgICAgICAgIHJldHVybiBqUXVlcnkuZGlyKCBlbGVtLCAibmV4dFNpYmxpbmciICk7Ci0g
ICAgICAgIH0sCi0gICAgICAgIHByZXZBbGw6IGZ1bmN0aW9uKCBlbGVtICkgewotICAgICAgICAg
ICAgICAgIHJldHVybiBqUXVlcnkuZGlyKCBlbGVtLCAicHJldmlvdXNTaWJsaW5nIiApOwotICAg
ICAgICB9LAotICAgICAgICBuZXh0VW50aWw6IGZ1bmN0aW9uKCBlbGVtLCBpLCB1bnRpbCApIHsK
LSAgICAgICAgICAgICAgICByZXR1cm4galF1ZXJ5LmRpciggZWxlbSwgIm5leHRTaWJsaW5nIiwg
dW50aWwgKTsKLSAgICAgICAgfSwKLSAgICAgICAgcHJldlVudGlsOiBmdW5jdGlvbiggZWxlbSwg
aSwgdW50aWwgKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGpRdWVyeS5kaXIoIGVsZW0sICJw
cmV2aW91c1NpYmxpbmciLCB1bnRpbCApOwotICAgICAgICB9LAotICAgICAgICBzaWJsaW5nczog
ZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGpRdWVyeS5zaWJsaW5n
KCAoIGVsZW0ucGFyZW50Tm9kZSB8fCB7fSApLmZpcnN0Q2hpbGQsIGVsZW0gKTsKLSAgICAgICAg
fSwKLSAgICAgICAgY2hpbGRyZW46IGZ1bmN0aW9uKCBlbGVtICkgewotICAgICAgICAgICAgICAg
IHJldHVybiBqUXVlcnkuc2libGluZyggZWxlbS5maXJzdENoaWxkICk7Ci0gICAgICAgIH0sCi0g
ICAgICAgIGNvbnRlbnRzOiBmdW5jdGlvbiggZWxlbSApIHsKLSAgICAgICAgICAgICAgICByZXR1
cm4galF1ZXJ5Lm5vZGVOYW1lKCBlbGVtLCAiaWZyYW1lIiApID8KLSAgICAgICAgICAgICAgICAg
ICAgICAgIGVsZW0uY29udGVudERvY3VtZW50IHx8IGVsZW0uY29udGVudFdpbmRvdy5kb2N1bWVu
dCA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkubWVyZ2UoIFtdLCBlbGVtLmNoaWxk
Tm9kZXMgKTsKLSAgICAgICAgfQotfSwgZnVuY3Rpb24oIG5hbWUsIGZuICkgewotICAgICAgICBq
UXVlcnkuZm5bIG5hbWUgXSA9IGZ1bmN0aW9uKCB1bnRpbCwgc2VsZWN0b3IgKSB7Ci0gICAgICAg
ICAgICAgICAgdmFyIHJldCA9IGpRdWVyeS5tYXAoIHRoaXMsIGZuLCB1bnRpbCApOwotCi0gICAg
ICAgICAgICAgICAgaWYgKCAhcnVudGlsLnRlc3QoIG5hbWUgKSApIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbGVjdG9yID0gdW50aWw7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICAgICAgaWYgKCBzZWxlY3RvciAmJiB0eXBlb2Ygc2VsZWN0b3IgPT09ICJzdHJpbmciICkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0galF1ZXJ5LmZpbHRlciggc2VsZWN0b3Is
IHJldCApOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHJldCA9IHRoaXMu
bGVuZ3RoID4gMSAmJiAhZ3VhcmFudGVlZFVuaXF1ZVsgbmFtZSBdID8galF1ZXJ5LnVuaXF1ZSgg
cmV0ICkgOiByZXQ7Ci0KLSAgICAgICAgICAgICAgICBpZiAoIHRoaXMubGVuZ3RoID4gMSAmJiBy
cGFyZW50c3ByZXYudGVzdCggbmFtZSApICkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0
ID0gcmV0LnJldmVyc2UoKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBy
ZXR1cm4gdGhpcy5wdXNoU3RhY2soIHJldCwgbmFtZSwgY29yZV9zbGljZS5jYWxsKCBhcmd1bWVu
dHMgKS5qb2luKCIsIikgKTsKLSAgICAgICAgfTsKLX0pOwotCi1qUXVlcnkuZXh0ZW5kKHsKLSAg
ICAgICAgZmlsdGVyOiBmdW5jdGlvbiggZXhwciwgZWxlbXMsIG5vdCApIHsKLSAgICAgICAgICAg
ICAgICBpZiAoIG5vdCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4cHIgPSAiOm5vdCgi
ICsgZXhwciArICIpIjsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICByZXR1
cm4gZWxlbXMubGVuZ3RoID09PSAxID8KLSAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5m
aW5kLm1hdGNoZXNTZWxlY3RvcihlbGVtc1swXSwgZXhwcikgPyBbIGVsZW1zWzBdIF0gOiBbXSA6
Ci0gICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkuZmluZC5tYXRjaGVzKGV4cHIsIGVsZW1z
KTsKLSAgICAgICAgfSwKLQotICAgICAgICBkaXI6IGZ1bmN0aW9uKCBlbGVtLCBkaXIsIHVudGls
ICkgewotICAgICAgICAgICAgICAgIHZhciBtYXRjaGVkID0gW10sCi0gICAgICAgICAgICAgICAg
ICAgICAgICBjdXIgPSBlbGVtWyBkaXIgXTsKLQotICAgICAgICAgICAgICAgIHdoaWxlICggY3Vy
ICYmIGN1ci5ub2RlVHlwZSAhPT0gOSAmJiAodW50aWwgPT09IHVuZGVmaW5lZCB8fCBjdXIubm9k
ZVR5cGUgIT09IDEgfHwgIWpRdWVyeSggY3VyICkuaXMoIHVudGlsICkpICkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKCBjdXIubm9kZVR5cGUgPT09IDEgKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1hdGNoZWQucHVzaCggY3VyICk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBjdXIgPSBjdXJbZGlyXTsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoZWQ7Ci0gICAgICAgIH0s
Ci0KLSAgICAgICAgc2libGluZzogZnVuY3Rpb24oIG4sIGVsZW0gKSB7Ci0gICAgICAgICAgICAg
ICAgdmFyIHIgPSBbXTsKLQotICAgICAgICAgICAgICAgIGZvciAoIDsgbjsgbiA9IG4ubmV4dFNp
YmxpbmcgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIG4ubm9kZVR5cGUgPT09IDEg
JiYgbiAhPT0gZWxlbSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5wdXNo
KCBuICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIHI7Ci0gICAgICAgIH0KLX0pOwotCi0vLyBJbXBsZW1lbnQg
dGhlIGlkZW50aWNhbCBmdW5jdGlvbmFsaXR5IGZvciBmaWx0ZXIgYW5kIG5vdAotZnVuY3Rpb24g
d2lubm93KCBlbGVtZW50cywgcXVhbGlmaWVyLCBrZWVwICkgewotCi0gICAgICAgIC8vIENhbid0
IHBhc3MgbnVsbCBvciB1bmRlZmluZWQgdG8gaW5kZXhPZiBpbiBGaXJlZm94IDQKLSAgICAgICAg
Ly8gU2V0IHRvIDAgdG8gc2tpcCBzdHJpbmcgY2hlY2sKLSAgICAgICAgcXVhbGlmaWVyID0gcXVh
bGlmaWVyIHx8IDA7Ci0KLSAgICAgICAgaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggcXVhbGlmaWVy
ICkgKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGpRdWVyeS5ncmVwKGVsZW1lbnRzLCBmdW5j
dGlvbiggZWxlbSwgaSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXRWYWwgPSAh
IXF1YWxpZmllci5jYWxsKCBlbGVtLCBpLCBlbGVtICk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gcmV0VmFsID09PSBrZWVwOwotICAgICAgICAgICAgICAgIH0pOwotCi0gICAgICAg
IH0gZWxzZSBpZiAoIHF1YWxpZmllci5ub2RlVHlwZSApIHsKLSAgICAgICAgICAgICAgICByZXR1
cm4galF1ZXJ5LmdyZXAoZWxlbWVudHMsIGZ1bmN0aW9uKCBlbGVtLCBpICkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuICggZWxlbSA9PT0gcXVhbGlmaWVyICkgPT09IGtlZXA7Ci0g
ICAgICAgICAgICAgICAgfSk7Ci0KLSAgICAgICAgfSBlbHNlIGlmICggdHlwZW9mIHF1YWxpZmll
ciA9PT0gInN0cmluZyIgKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGZpbHRlcmVkID0galF1ZXJ5
LmdyZXAoZWxlbWVudHMsIGZ1bmN0aW9uKCBlbGVtICkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGVsZW0ubm9kZVR5cGUgPT09IDE7Ci0gICAgICAgICAgICAgICAgfSk7Ci0KLSAg
ICAgICAgICAgICAgICBpZiAoIGlzU2ltcGxlLnRlc3QoIHF1YWxpZmllciApICkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGpRdWVyeS5maWx0ZXIocXVhbGlmaWVyLCBmaWx0ZXJl
ZCwgIWtlZXApOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBxdWFsaWZpZXIgPSBqUXVlcnkuZmlsdGVyKCBxdWFsaWZpZXIsIGZpbHRlcmVkICk7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGpRdWVyeS5ncmVw
KGVsZW1lbnRzLCBmdW5jdGlvbiggZWxlbSwgaSApIHsKLSAgICAgICAgICAgICAgICByZXR1cm4g
KCBqUXVlcnkuaW5BcnJheSggZWxlbSwgcXVhbGlmaWVyICkgPj0gMCApID09PSBrZWVwOwotICAg
ICAgICB9KTsKLX0KLWZ1bmN0aW9uIGNyZWF0ZVNhZmVGcmFnbWVudCggZG9jdW1lbnQgKSB7Ci0g
ICAgICAgIHZhciBsaXN0ID0gbm9kZU5hbWVzLnNwbGl0KCAifCIgKSwKLSAgICAgICAgc2FmZUZy
YWcgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7Ci0KLSAgICAgICAgaWYgKCBz
YWZlRnJhZy5jcmVhdGVFbGVtZW50ICkgewotICAgICAgICAgICAgICAgIHdoaWxlICggbGlzdC5s
ZW5ndGggKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzYWZlRnJhZy5jcmVhdGVFbGVtZW50
KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0LnBvcCgpCi0gICAgICAgICAg
ICAgICAgICAgICAgICApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBy
ZXR1cm4gc2FmZUZyYWc7Ci19Ci0KLXZhciBub2RlTmFtZXMgPSAiYWJicnxhcnRpY2xlfGFzaWRl
fGF1ZGlvfGJkaXxjYW52YXN8ZGF0YXxkYXRhbGlzdHxkZXRhaWxzfGZpZ2NhcHRpb258ZmlndXJl
fGZvb3RlcnwiICsKLSAgICAgICAgICAgICAgICAiaGVhZGVyfGhncm91cHxtYXJrfG1ldGVyfG5h
dnxvdXRwdXR8cHJvZ3Jlc3N8c2VjdGlvbnxzdW1tYXJ5fHRpbWV8dmlkZW8iLAotICAgICAgICBy
aW5saW5lalF1ZXJ5ID0gLyBqUXVlcnlcZCs9Iig/Om51bGx8XGQrKSIvZywKLSAgICAgICAgcmxl
YWRpbmdXaGl0ZXNwYWNlID0gL15ccysvLAotICAgICAgICByeGh0bWxUYWcgPSAvPCg/IWFyZWF8
YnJ8Y29sfGVtYmVkfGhyfGltZ3xpbnB1dHxsaW5rfG1ldGF8cGFyYW0pKChbXHc6XSspW14+XSop
XC8+L2dpLAotICAgICAgICBydGFnTmFtZSA9IC88KFtcdzpdKykvLAotICAgICAgICBydGJvZHkg
PSAvPHRib2R5L2ksCi0gICAgICAgIHJodG1sID0gLzx8JiM/XHcrOy8sCi0gICAgICAgIHJub0lu
bmVyaHRtbCA9IC88KD86c2NyaXB0fHN0eWxlfGxpbmspL2ksCi0gICAgICAgIHJub2NhY2hlID0g
LzwoPzpzY3JpcHR8b2JqZWN0fGVtYmVkfG9wdGlvbnxzdHlsZSkvaSwKLSAgICAgICAgcm5vc2hp
bWNhY2hlID0gbmV3IFJlZ0V4cCgiPCg/OiIgKyBub2RlTmFtZXMgKyAiKVtcXHMvPl0iLCAiaSIp
LAotICAgICAgICByY2hlY2thYmxlVHlwZSA9IC9eKD86Y2hlY2tib3h8cmFkaW8pJC8sCi0gICAg
ICAgIC8vIGNoZWNrZWQ9ImNoZWNrZWQiIG9yIGNoZWNrZWQKLSAgICAgICAgcmNoZWNrZWQgPSAv
Y2hlY2tlZFxzKig/OltePV18PVxzKi5jaGVja2VkLikvaSwKLSAgICAgICAgcnNjcmlwdFR5cGUg
PSAvXC8oamF2YXxlY21hKXNjcmlwdC9pLAotICAgICAgICByY2xlYW5TY3JpcHQgPSAvXlxzKjwh
KD86XFtDREFUQVxbfFwtXC0pfFtcXVwtXXsyfT5ccyokL2csCi0gICAgICAgIHdyYXBNYXAgPSB7
Ci0gICAgICAgICAgICAgICAgb3B0aW9uOiBbIDEsICI8c2VsZWN0IG11bHRpcGxlPSdtdWx0aXBs
ZSc+IiwgIjwvc2VsZWN0PiIgXSwKLSAgICAgICAgICAgICAgICBsZWdlbmQ6IFsgMSwgIjxmaWVs
ZHNldD4iLCAiPC9maWVsZHNldD4iIF0sCi0gICAgICAgICAgICAgICAgdGhlYWQ6IFsgMSwgIjx0
YWJsZT4iLCAiPC90YWJsZT4iIF0sCi0gICAgICAgICAgICAgICAgdHI6IFsgMiwgIjx0YWJsZT48
dGJvZHk+IiwgIjwvdGJvZHk+PC90YWJsZT4iIF0sCi0gICAgICAgICAgICAgICAgdGQ6IFsgMywg
Ijx0YWJsZT48dGJvZHk+PHRyPiIsICI8L3RyPjwvdGJvZHk+PC90YWJsZT4iIF0sCi0gICAgICAg
ICAgICAgICAgY29sOiBbIDIsICI8dGFibGU+PHRib2R5PjwvdGJvZHk+PGNvbGdyb3VwPiIsICI8
L2NvbGdyb3VwPjwvdGFibGU+IiBdLAotICAgICAgICAgICAgICAgIGFyZWE6IFsgMSwgIjxtYXA+
IiwgIjwvbWFwPiIgXSwKLSAgICAgICAgICAgICAgICBfZGVmYXVsdDogWyAwLCAiIiwgIiIgXQot
ICAgICAgICB9LAotICAgICAgICBzYWZlRnJhZ21lbnQgPSBjcmVhdGVTYWZlRnJhZ21lbnQoIGRv
Y3VtZW50ICksCi0gICAgICAgIGZyYWdtZW50RGl2ID0gc2FmZUZyYWdtZW50LmFwcGVuZENoaWxk
KCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSApOwotCi13cmFwTWFwLm9wdGdyb3VwID0g
d3JhcE1hcC5vcHRpb247Ci13cmFwTWFwLnRib2R5ID0gd3JhcE1hcC50Zm9vdCA9IHdyYXBNYXAu
Y29sZ3JvdXAgPSB3cmFwTWFwLmNhcHRpb24gPSB3cmFwTWFwLnRoZWFkOwotd3JhcE1hcC50aCA9
IHdyYXBNYXAudGQ7Ci0KLS8vIElFNi04IGNhbid0IHNlcmlhbGl6ZSBsaW5rLCBzY3JpcHQsIHN0
eWxlLCBvciBhbnkgaHRtbDUgKE5vU2NvcGUpIHRhZ3MsCi0vLyB1bmxlc3Mgd3JhcHBlZCBpbiBh
IGRpdiB3aXRoIG5vbi1icmVha2luZyBjaGFyYWN0ZXJzIGluIGZyb250IG9mIGl0LgotaWYgKCAh
alF1ZXJ5LnN1cHBvcnQuaHRtbFNlcmlhbGl6ZSApIHsKLSAgICAgICAgd3JhcE1hcC5fZGVmYXVs
dCA9IFsgMSwgIlg8ZGl2PiIsICI8L2Rpdj4iIF07Ci19Ci0KLWpRdWVyeS5mbi5leHRlbmQoewot
ICAgICAgICB0ZXh0OiBmdW5jdGlvbiggdmFsdWUgKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IGpRdWVyeS5hY2Nlc3MoIHRoaXMsIGZ1bmN0aW9uKCB2YWx1ZSApIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkID8KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgalF1ZXJ5LnRleHQoIHRoaXMgKSA6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRoaXMuZW1wdHkoKS5hcHBlbmQoICggdGhpc1swXSAmJiB0aGlzWzBdLm93
bmVyRG9jdW1lbnQgfHwgZG9jdW1lbnQgKS5jcmVhdGVUZXh0Tm9kZSggdmFsdWUgKSApOwotICAg
ICAgICAgICAgICAgIH0sIG51bGwsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoICk7Ci0gICAgICAg
IH0sCi0KLSAgICAgICAgd3JhcEFsbDogZnVuY3Rpb24oIGh0bWwgKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggaHRtbCApICkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihpKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGpRdWVyeSh0aGlzKS53cmFwQWxsKCBodG1sLmNhbGwodGhpcywgaSkgKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgICAgIGlmICggdGhpc1swXSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRo
ZSBlbGVtZW50cyB0byB3cmFwIHRoZSB0YXJnZXQgYXJvdW5kCi0gICAgICAgICAgICAgICAgICAg
ICAgICB2YXIgd3JhcCA9IGpRdWVyeSggaHRtbCwgdGhpc1swXS5vd25lckRvY3VtZW50ICkuZXEo
MCkuY2xvbmUodHJ1ZSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICggdGhpc1swXS5w
YXJlbnROb2RlICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cmFwLmluc2Vy
dEJlZm9yZSggdGhpc1swXSApOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICAgICAgICAgICAgICB3cmFwLm1hcChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdmFyIGVsZW0gPSB0aGlzOwotCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHdoaWxlICggZWxlbS5maXJzdENoaWxkICYmIGVsZW0uZmlyc3RDaGlsZC5ub2Rl
VHlwZSA9PT0gMSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
bGVtID0gZWxlbS5maXJzdENoaWxkOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW07Ci0gICAgICAg
ICAgICAgICAgICAgICAgICB9KS5hcHBlbmQoIHRoaXMgKTsKLSAgICAgICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsKLSAgICAgICAgfSwKLQotICAgICAgICB3cmFw
SW5uZXI6IGZ1bmN0aW9uKCBodG1sICkgewotICAgICAgICAgICAgICAgIGlmICggalF1ZXJ5Lmlz
RnVuY3Rpb24oIGh0bWwgKSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlz
LmVhY2goZnVuY3Rpb24oaSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVl
cnkodGhpcykud3JhcElubmVyKCBodG1sLmNhbGwodGhpcywgaSkgKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHJldHVy
biB0aGlzLmVhY2goZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2Vs
ZiA9IGpRdWVyeSggdGhpcyApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250
ZW50cyA9IHNlbGYuY29udGVudHMoKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBj
b250ZW50cy5sZW5ndGggKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRl
bnRzLndyYXBBbGwoIGh0bWwgKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hcHBlbmQoIGh0bWwgKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgfSwK
LQotICAgICAgICB3cmFwOiBmdW5jdGlvbiggaHRtbCApIHsKLSAgICAgICAgICAgICAgICB2YXIg
aXNGdW5jdGlvbiA9IGpRdWVyeS5pc0Z1bmN0aW9uKCBodG1sICk7Ci0KLSAgICAgICAgICAgICAg
ICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGpRdWVyeSggdGhpcyApLndyYXBBbGwoIGlzRnVuY3Rpb24gPyBodG1sLmNhbGwodGhpcywgaSkg
OiBodG1sICk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgdW53
cmFwOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJlbnQoKS5l
YWNoKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhalF1ZXJ5Lm5v
ZGVOYW1lKCB0aGlzLCAiYm9keSIgKSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgalF1ZXJ5KCB0aGlzICkucmVwbGFjZVdpdGgoIHRoaXMuY2hpbGROb2RlcyApOwotICAgICAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0pLmVuZCgpOwotICAgICAgICB9
LAotCi0gICAgICAgIGFwcGVuZDogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLCB0cnVlLCBmdW5jdGlvbiggZWxlbSApIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICggdGhpcy5ub2RlVHlwZSA9PT0gMSB8fCB0aGlzLm5vZGVU
eXBlID09PSAxMSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hcHBl
bmRDaGlsZCggZWxlbSApOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIH0pOwotICAgICAgICB9LAotCi0gICAgICAgIHByZXBlbmQ6IGZ1bmN0aW9uKCkgewotICAg
ICAgICAgICAgICAgIHJldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cywgdHJ1ZSwgZnVuY3Rp
b24oIGVsZW0gKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHRoaXMubm9kZVR5cGUg
PT09IDEgfHwgdGhpcy5ub2RlVHlwZSA9PT0gMTEgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRoaXMuaW5zZXJ0QmVmb3JlKCBlbGVtLCB0aGlzLmZpcnN0Q2hpbGQgKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgfSwK
LQotICAgICAgICBiZWZvcmU6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIGlmICggIWlz
RGlzY29ubmVjdGVkKCB0aGlzWzBdICkgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsIGZhbHNlLCBmdW5jdGlvbiggZWxlbSApIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9y
ZSggZWxlbSwgdGhpcyApOwotICAgICAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKCBhcmd1bWVudHMubGVuZ3RoICkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgdmFyIHNldCA9IGpRdWVyeS5jbGVhbiggYXJndW1lbnRzICk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wdXNoU3RhY2soIGpRdWVyeS5t
ZXJnZSggc2V0LCB0aGlzICksICJiZWZvcmUiLCB0aGlzLnNlbGVjdG9yICk7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICB9LAotCi0gICAgICAgIGFmdGVyOiBmdW5jdGlvbigpIHsKLSAgICAg
ICAgICAgICAgICBpZiAoICFpc0Rpc2Nvbm5lY3RlZCggdGhpc1swXSApICkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLCBmYWxzZSwgZnVu
Y3Rpb24oIGVsZW0gKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGFy
ZW50Tm9kZS5pbnNlcnRCZWZvcmUoIGVsZW0sIHRoaXMubmV4dFNpYmxpbmcgKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAg
IGlmICggYXJndW1lbnRzLmxlbmd0aCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhciBz
ZXQgPSBqUXVlcnkuY2xlYW4oIGFyZ3VtZW50cyApOwotICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRoaXMucHVzaFN0YWNrKCBqUXVlcnkubWVyZ2UoIHRoaXMsIHNldCApLCAiYWZ0ZXIi
LCB0aGlzLnNlbGVjdG9yICk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICB9LAotCi0gICAg
ICAgIC8vIGtlZXBEYXRhIGlzIGZvciBpbnRlcm5hbCB1c2Ugb25seS0tZG8gbm90IGRvY3VtZW50
Ci0gICAgICAgIHJlbW92ZTogZnVuY3Rpb24oIHNlbGVjdG9yLCBrZWVwRGF0YSApIHsKLSAgICAg
ICAgICAgICAgICB2YXIgZWxlbSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAwOwotCi0g
ICAgICAgICAgICAgICAgZm9yICggOyAoZWxlbSA9IHRoaXNbaV0pICE9IG51bGw7IGkrKyApIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGlmICggIXNlbGVjdG9yIHx8IGpRdWVyeS5maWx0ZXIo
IHNlbGVjdG9yLCBbIGVsZW0gXSApLmxlbmd0aCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCAha2VlcERhdGEgJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSApIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkuY2xlYW5EYXRhKCBlbGVt
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBqUXVlcnkuY2xlYW5EYXRhKCBbIGVsZW0gXSApOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCBlbGVtLnBhcmVudE5vZGUgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZWxlbS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKCBlbGVtICk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsKLSAgICAgICAgfSwK
LQotICAgICAgICBlbXB0eTogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGVsZW0s
Ci0gICAgICAgICAgICAgICAgICAgICAgICBpID0gMDsKLQotICAgICAgICAgICAgICAgIGZvciAo
IDsgKGVsZW0gPSB0aGlzW2ldKSAhPSBudWxsOyBpKysgKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAvLyBSZW1vdmUgZWxlbWVudCBub2RlcyBhbmQgcHJldmVudCBtZW1vcnkgbGVha3MKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSApIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmNsZWFuRGF0YSggZWxlbS5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgiKiIpICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIFJlbW92ZSBhbnkgcmVtYWluaW5nIG5vZGVzCi0gICAgICAg
ICAgICAgICAgICAgICAgICB3aGlsZSAoIGVsZW0uZmlyc3RDaGlsZCApIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZWxlbS5yZW1vdmVDaGlsZCggZWxlbS5maXJzdENoaWxkICk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgY2xvbmU6IGZ1bmN0
aW9uKCBkYXRhQW5kRXZlbnRzLCBkZWVwRGF0YUFuZEV2ZW50cyApIHsKLSAgICAgICAgICAgICAg
ICBkYXRhQW5kRXZlbnRzID0gZGF0YUFuZEV2ZW50cyA9PSBudWxsID8gZmFsc2UgOiBkYXRhQW5k
RXZlbnRzOwotICAgICAgICAgICAgICAgIGRlZXBEYXRhQW5kRXZlbnRzID0gZGVlcERhdGFBbmRF
dmVudHMgPT0gbnVsbCA/IGRhdGFBbmRFdmVudHMgOiBkZWVwRGF0YUFuZEV2ZW50czsKLQotICAg
ICAgICAgICAgICAgIHJldHVybiB0aGlzLm1hcCggZnVuY3Rpb24gKCkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGpRdWVyeS5jbG9uZSggdGhpcywgZGF0YUFuZEV2ZW50cywgZGVl
cERhdGFBbmRFdmVudHMgKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgfSwKLQotICAg
ICAgICBodG1sOiBmdW5jdGlvbiggdmFsdWUgKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGpR
dWVyeS5hY2Nlc3MoIHRoaXMsIGZ1bmN0aW9uKCB2YWx1ZSApIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHZhciBlbGVtID0gdGhpc1swXSB8fCB7fSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaSA9IDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSB0aGlz
Lmxlbmd0aDsKLQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCB2YWx1ZSA9PT0gdW5kZWZp
bmVkICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbS5ub2Rl
VHlwZSA9PT0gMSA/Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxl
bS5pbm5lckhUTUwucmVwbGFjZSggcmlubGluZWpRdWVyeSwgIiIgKSA6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkOwotICAgICAgICAgICAgICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBTZWUgaWYgd2UgY2FuIHRha2Ug
YSBzaG9ydGN1dCBhbmQganVzdCB1c2UgaW5uZXJIVE1MCi0gICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoIHR5cGVvZiB2YWx1ZSA9PT0gInN0cmluZyIgJiYgIXJub0lubmVyaHRtbC50ZXN0KCB2
YWx1ZSApICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggalF1ZXJ5LnN1cHBv
cnQuaHRtbFNlcmlhbGl6ZSB8fCAhcm5vc2hpbWNhY2hlLnRlc3QoIHZhbHVlICkgICkgJiYKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBqUXVlcnkuc3VwcG9ydC5sZWFkaW5nV2hp
dGVzcGFjZSB8fCAhcmxlYWRpbmdXaGl0ZXNwYWNlLnRlc3QoIHZhbHVlICkgKSAmJgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAhd3JhcE1hcFsgKCBydGFnTmFtZS5leGVjKCB2YWx1
ZSApIHx8IFsiIiwgIiJdIClbMV0udG9Mb3dlckNhc2UoKSBdICkgewotCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSggcnhodG1sVGFnLCAiPCQx
PjwvJDI+IiApOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IGkgPCBsOyBpKysgKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZW1v
dmUgZWxlbWVudCBub2RlcyBhbmQgcHJldmVudCBtZW1vcnkgbGVha3MKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0gPSB0aGlzW2ldIHx8IHt9Owot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBlbGVt
Lm5vZGVUeXBlID09PSAxICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBqUXVlcnkuY2xlYW5EYXRhKCBlbGVtLmdldEVsZW1lbnRzQnlU
YWdOYW1lKCAiKiIgKSApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBlbGVtLmlubmVySFRNTCA9IHZhbHVlOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVsZW0gPSAwOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElm
IHVzaW5nIGlubmVySFRNTCB0aHJvd3MgYW4gZXhjZXB0aW9uLCB1c2UgdGhlIGZhbGxiYWNrIG1l
dGhvZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoKGUpIHt9Ci0gICAg
ICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICggZWxl
bSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbXB0eSgpLmFwcGVu
ZCggdmFsdWUgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9
LCBudWxsLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCApOwotICAgICAgICB9LAotCi0gICAgICAg
IHJlcGxhY2VXaXRoOiBmdW5jdGlvbiggdmFsdWUgKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCAh
aXNEaXNjb25uZWN0ZWQoIHRoaXNbMF0gKSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8v
IE1ha2Ugc3VyZSB0aGF0IHRoZSBlbGVtZW50cyBhcmUgcmVtb3ZlZCBmcm9tIHRoZSBET00gYmVm
b3JlIHRoZXkgYXJlIGluc2VydGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIGNh
biBoZWxwIGZpeCByZXBsYWNpbmcgYSBwYXJlbnQgd2l0aCBjaGlsZCBlbGVtZW50cwotICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggdmFsdWUgKSApIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihp
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNlbGYgPSBq
UXVlcnkodGhpcyksIG9sZCA9IHNlbGYuaHRtbCgpOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNlbGYucmVwbGFjZVdpdGgoIHZhbHVlLmNhbGwoIHRoaXMsIGksIG9s
ZCApICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAg
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHR5cGVvZiB2YWx1
ZSAhPT0gInN0cmluZyIgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVl
ID0galF1ZXJ5KCB2YWx1ZSApLmRldGFjaCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbmV4dCA9IHRoaXMubmV4dFNpYmxp
bmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50ID0gdGhp
cy5wYXJlbnROb2RlOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeSgg
dGhpcyApLnJlbW92ZSgpOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgg
bmV4dCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnko
bmV4dCkuYmVmb3JlKCB2YWx1ZSApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeShw
YXJlbnQpLmFwcGVuZCggdmFsdWUgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIHRoaXMubGVuZ3RoID8KLSAgICAgICAgICAgICAgICAgICAgICAg
IHRoaXMucHVzaFN0YWNrKCBqUXVlcnkoalF1ZXJ5LmlzRnVuY3Rpb24odmFsdWUpID8gdmFsdWUo
KSA6IHZhbHVlKSwgInJlcGxhY2VXaXRoIiwgdmFsdWUgKSA6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB0aGlzOwotICAgICAgICB9LAotCi0gICAgICAgIGRldGFjaDogZnVuY3Rpb24oIHNlbGVj
dG9yICkgewotICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlbW92ZSggc2VsZWN0b3IsIHRy
dWUgKTsKLSAgICAgICAgfSwKLQotICAgICAgICBkb21NYW5pcDogZnVuY3Rpb24oIGFyZ3MsIHRh
YmxlLCBjYWxsYmFjayApIHsKLQotICAgICAgICAgICAgICAgIC8vIEZsYXR0ZW4gYW55IG5lc3Rl
ZCBhcnJheXMKLSAgICAgICAgICAgICAgICBhcmdzID0gW10uY29uY2F0LmFwcGx5KCBbXSwgYXJn
cyApOwotCi0gICAgICAgICAgICAgICAgdmFyIHJlc3VsdHMsIGZpcnN0LCBmcmFnbWVudCwgaU5v
Q2xvbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICBpID0gMCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHZhbHVlID0gYXJnc1swXSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdHMg
PSBbXSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGwgPSB0aGlzLmxlbmd0aDsKLQotICAgICAg
ICAgICAgICAgIC8vIFdlIGNhbid0IGNsb25lTm9kZSBmcmFnbWVudHMgdGhhdCBjb250YWluIGNo
ZWNrZWQsIGluIFdlYktpdAotICAgICAgICAgICAgICAgIGlmICggIWpRdWVyeS5zdXBwb3J0LmNo
ZWNrQ2xvbmUgJiYgbCA+IDEgJiYgdHlwZW9mIHZhbHVlID09PSAic3RyaW5nIiAmJiByY2hlY2tl
ZC50ZXN0KCB2YWx1ZSApICkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMu
ZWFjaChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5
KHRoaXMpLmRvbU1hbmlwKCBhcmdzLCB0YWJsZSwgY2FsbGJhY2sgKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmICgg
alF1ZXJ5LmlzRnVuY3Rpb24odmFsdWUpICkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHRoaXMuZWFjaChmdW5jdGlvbihpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZhciBzZWxmID0galF1ZXJ5KHRoaXMpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhcmdzWzBdID0gdmFsdWUuY2FsbCggdGhpcywgaSwgdGFibGUgPyBzZWxmLmh0bWwoKSA6
IHVuZGVmaW5lZCApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRvbU1h
bmlwKCBhcmdzLCB0YWJsZSwgY2FsbGJhY2sgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0p
OwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmICggdGhpc1swXSApIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMgPSBqUXVlcnkuYnVpbGRGcmFnbWVudCgg
YXJncywgdGhpcywgc2NyaXB0cyApOwotICAgICAgICAgICAgICAgICAgICAgICAgZnJhZ21lbnQg
PSByZXN1bHRzLmZyYWdtZW50OwotICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3QgPSBmcmFn
bWVudC5maXJzdENoaWxkOwotCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGZyYWdtZW50
LmNoaWxkTm9kZXMubGVuZ3RoID09PSAxICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmcmFnbWVudCA9IGZpcnN0OwotICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoIGZpcnN0ICkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0YWJsZSA9IHRhYmxlICYmIGpRdWVyeS5ub2RlTmFtZSggZmlyc3QsICJ0ciIg
KTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBVc2UgdGhlIG9yaWdpbmFs
IGZyYWdtZW50IGZvciB0aGUgbGFzdCBpdGVtIGluc3RlYWQgb2YgdGhlIGZpcnN0IGJlY2F1c2Ug
aXQgY2FuIGVuZCB1cAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiZWluZyBl
bXB0aWVkIGluY29ycmVjdGx5IGluIGNlcnRhaW4gc2l0dWF0aW9ucyAoIzgwNzApLgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGcmFnbWVudHMgZnJvbSB0aGUgZnJhZ21lbnQg
Y2FjaGUgbXVzdCBhbHdheXMgYmUgY2xvbmVkIGFuZCBuZXZlciB1c2VkIGluIHBsYWNlLgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKCBpTm9DbG9uZSA9IHJlc3VsdHMuY2Fj
aGVhYmxlIHx8IGwgLSAxOyBpIDwgbDsgaSsrICkgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNhbGxiYWNrLmNhbGwoCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0YWJsZSAmJiBqUXVlcnkubm9kZU5hbWUoIHRoaXNbaV0s
ICJ0YWJsZSIgKSA/Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZpbmRPckFwcGVuZCggdGhpc1tpXSwgInRib2R5IiApIDoKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpc1tpXSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPT09IGlO
b0Nsb25lID8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZnJhZ21lbnQgOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBqUXVlcnkuY2xvbmUoIGZyYWdtZW50LCB0cnVlLCB0cnVlICkK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIEZpeCAjMTE4MDk6IEF2b2lkIGxlYWtpbmcgbWVtb3J5Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBmcmFnbWVudCA9IGZpcnN0ID0gbnVsbDsKLQotICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCBzY3JpcHRzLmxlbmd0aCApIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgalF1ZXJ5LmVhY2goIHNjcmlwdHMsIGZ1bmN0aW9uKCBpLCBlbGVt
ICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggZWxlbS5z
cmMgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoIGpRdWVyeS5hamF4ICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBqUXVlcnkuYWpheCh7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBlbGVtLnNyYywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0eXBlOiAiR0VUIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogInNjcmlwdCIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YXN5bmM6IGZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbDogZmFsc2UsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRocm93cyI6IHRy
dWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBqUXVlcnkuZXJyb3IoIm5vIGFqYXgiKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgalF1ZXJ5Lmdsb2JhbEV2YWwoICggZWxlbS50ZXh0IHx8IGVsZW0udGV4dENv
bnRlbnQgfHwgZWxlbS5pbm5lckhUTUwgfHwgIiIgKS5yZXBsYWNlKCByY2xlYW5TY3JpcHQsICIi
ICkgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGVsZW0ucGFyZW50Tm9kZSAp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0u
cGFyZW50Tm9kZS5yZW1vdmVDaGlsZCggZWxlbSApOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgICAgIH0KLX0pOwotCi1mdW5jdGlvbiBmaW5kT3JBcHBl
bmQoIGVsZW0sIHRhZyApIHsKLSAgICAgICAgcmV0dXJuIGVsZW0uZ2V0RWxlbWVudHNCeVRhZ05h
bWUoIHRhZyApWzBdIHx8IGVsZW0uYXBwZW5kQ2hpbGQoIGVsZW0ub3duZXJEb2N1bWVudC5jcmVh
dGVFbGVtZW50KCB0YWcgKSApOwotfQotCi1mdW5jdGlvbiBjbG9uZUNvcHlFdmVudCggc3JjLCBk
ZXN0ICkgewotCi0gICAgICAgIGlmICggZGVzdC5ub2RlVHlwZSAhPT0gMSB8fCAhalF1ZXJ5Lmhh
c0RhdGEoIHNyYyApICkgewotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0g
ICAgICAgIHZhciB0eXBlLCBpLCBsLAotICAgICAgICAgICAgICAgIG9sZERhdGEgPSBqUXVlcnku
X2RhdGEoIHNyYyApLAotICAgICAgICAgICAgICAgIGN1ckRhdGEgPSBqUXVlcnkuX2RhdGEoIGRl
c3QsIG9sZERhdGEgKSwKLSAgICAgICAgICAgICAgICBldmVudHMgPSBvbGREYXRhLmV2ZW50czsK
LQotICAgICAgICBpZiAoIGV2ZW50cyApIHsKLSAgICAgICAgICAgICAgICBkZWxldGUgY3VyRGF0
YS5oYW5kbGU7Ci0gICAgICAgICAgICAgICAgY3VyRGF0YS5ldmVudHMgPSB7fTsKLQotICAgICAg
ICAgICAgICAgIGZvciAoIHR5cGUgaW4gZXZlbnRzICkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgZm9yICggaSA9IDAsIGwgPSBldmVudHNbIHR5cGUgXS5sZW5ndGg7IGkgPCBsOyBpKysgKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5ldmVudC5hZGQoIGRlc3Qs
IHR5cGUsIGV2ZW50c1sgdHlwZSBdWyBpIF0gKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBtYWtlIHRoZSBjbG9u
ZWQgcHVibGljIGRhdGEgb2JqZWN0IGEgY29weSBmcm9tIHRoZSBvcmlnaW5hbAotICAgICAgICBp
ZiAoIGN1ckRhdGEuZGF0YSApIHsKLSAgICAgICAgICAgICAgICBjdXJEYXRhLmRhdGEgPSBqUXVl
cnkuZXh0ZW5kKCB7fSwgY3VyRGF0YS5kYXRhICk7Ci0gICAgICAgIH0KLX0KLQotZnVuY3Rpb24g
Y2xvbmVGaXhBdHRyaWJ1dGVzKCBzcmMsIGRlc3QgKSB7Ci0gICAgICAgIHZhciBub2RlTmFtZTsK
LQotICAgICAgICAvLyBXZSBkbyBub3QgbmVlZCB0byBkbyBhbnl0aGluZyBmb3Igbm9uLUVsZW1l
bnRzCi0gICAgICAgIGlmICggZGVzdC5ub2RlVHlwZSAhPT0gMSApIHsKLSAgICAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBjbGVhckF0dHJpYnV0ZXMgcmVtb3Zl
cyB0aGUgYXR0cmlidXRlcywgd2hpY2ggd2UgZG9uJ3Qgd2FudCwKLSAgICAgICAgLy8gYnV0IGFs
c28gcmVtb3ZlcyB0aGUgYXR0YWNoRXZlbnQgZXZlbnRzLCB3aGljaCB3ZSAqZG8qIHdhbnQKLSAg
ICAgICAgaWYgKCBkZXN0LmNsZWFyQXR0cmlidXRlcyApIHsKLSAgICAgICAgICAgICAgICBkZXN0
LmNsZWFyQXR0cmlidXRlcygpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gbWVyZ2VBdHRyaWJ1
dGVzLCBpbiBjb250cmFzdCwgb25seSBtZXJnZXMgYmFjayBvbiB0aGUKLSAgICAgICAgLy8gb3Jp
Z2luYWwgYXR0cmlidXRlcywgbm90IHRoZSBldmVudHMKLSAgICAgICAgaWYgKCBkZXN0Lm1lcmdl
QXR0cmlidXRlcyApIHsKLSAgICAgICAgICAgICAgICBkZXN0Lm1lcmdlQXR0cmlidXRlcyggc3Jj
ICk7Ci0gICAgICAgIH0KLQotICAgICAgICBub2RlTmFtZSA9IGRlc3Qubm9kZU5hbWUudG9Mb3dl
ckNhc2UoKTsKLQotICAgICAgICBpZiAoIG5vZGVOYW1lID09PSAib2JqZWN0IiApIHsKLSAgICAg
ICAgICAgICAgICAvLyBJRTYtMTAgaW1wcm9wZXJseSBjbG9uZXMgY2hpbGRyZW4gb2Ygb2JqZWN0
IGVsZW1lbnRzIHVzaW5nIGNsYXNzaWQuCi0gICAgICAgICAgICAgICAgLy8gSUUxMCB0aHJvd3Mg
Tm9Nb2RpZmljYXRpb25BbGxvd2VkRXJyb3IgaWYgcGFyZW50IGlzIG51bGwsICMxMjEzMi4KLSAg
ICAgICAgICAgICAgICBpZiAoIGRlc3QucGFyZW50Tm9kZSApIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGRlc3Qub3V0ZXJIVE1MID0gc3JjLm91dGVySFRNTDsKLSAgICAgICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgICAgICAvLyBUaGlzIHBhdGggYXBwZWFycyB1bmF2b2lkYWJsZSBmb3Ig
SUU5LiBXaGVuIGNsb25pbmcgYW4gb2JqZWN0Ci0gICAgICAgICAgICAgICAgLy8gZWxlbWVudCBp
biBJRTksIHRoZSBvdXRlckhUTUwgc3RyYXRlZ3kgYWJvdmUgaXMgbm90IHN1ZmZpY2llbnQuCi0g
ICAgICAgICAgICAgICAgLy8gSWYgdGhlIHNyYyBoYXMgaW5uZXJIVE1MIGFuZCB0aGUgZGVzdGlu
YXRpb24gZG9lcyBub3QsCi0gICAgICAgICAgICAgICAgLy8gY29weSB0aGUgc3JjLmlubmVySFRN
TCBpbnRvIHRoZSBkZXN0LmlubmVySFRNTC4gIzEwMzI0Ci0gICAgICAgICAgICAgICAgaWYgKCBq
UXVlcnkuc3VwcG9ydC5odG1sNUNsb25lICYmIChzcmMuaW5uZXJIVE1MICYmICFqUXVlcnkudHJp
bShkZXN0LmlubmVySFRNTCkpICkgewotICAgICAgICAgICAgICAgICAgICAgICAgZGVzdC5pbm5l
ckhUTUwgPSBzcmMuaW5uZXJIVE1MOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICB9IGVs
c2UgaWYgKCBub2RlTmFtZSA9PT0gImlucHV0IiAmJiByY2hlY2thYmxlVHlwZS50ZXN0KCBzcmMu
dHlwZSApICkgewotICAgICAgICAgICAgICAgIC8vIElFNi04IGZhaWxzIHRvIHBlcnNpc3QgdGhl
IGNoZWNrZWQgc3RhdGUgb2YgYSBjbG9uZWQgY2hlY2tib3gKLSAgICAgICAgICAgICAgICAvLyBv
ciByYWRpbyBidXR0b24uIFdvcnNlLCBJRTYtNyBmYWlsIHRvIGdpdmUgdGhlIGNsb25lZCBlbGVt
ZW50Ci0gICAgICAgICAgICAgICAgLy8gYSBjaGVja2VkIGFwcGVhcmFuY2UgaWYgdGhlIGRlZmF1
bHRDaGVja2VkIHZhbHVlIGlzbid0IGFsc28gc2V0Ci0KLSAgICAgICAgICAgICAgICBkZXN0LmRl
ZmF1bHRDaGVja2VkID0gZGVzdC5jaGVja2VkID0gc3JjLmNoZWNrZWQ7Ci0KLSAgICAgICAgICAg
ICAgICAvLyBJRTYtNyBnZXQgY29uZnVzZWQgYW5kIGVuZCB1cCBzZXR0aW5nIHRoZSB2YWx1ZSBv
ZiBhIGNsb25lZAotICAgICAgICAgICAgICAgIC8vIGNoZWNrYm94L3JhZGlvIGJ1dHRvbiB0byBh
biBlbXB0eSBzdHJpbmcgaW5zdGVhZCBvZiAib24iCi0gICAgICAgICAgICAgICAgaWYgKCBkZXN0
LnZhbHVlICE9PSBzcmMudmFsdWUgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkZXN0LnZh
bHVlID0gc3JjLnZhbHVlOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAvLyBJRTYtOCBm
YWlscyB0byByZXR1cm4gdGhlIHNlbGVjdGVkIG9wdGlvbiB0byB0aGUgZGVmYXVsdCBzZWxlY3Rl
ZAotICAgICAgICAvLyBzdGF0ZSB3aGVuIGNsb25pbmcgb3B0aW9ucwotICAgICAgICB9IGVsc2Ug
aWYgKCBub2RlTmFtZSA9PT0gIm9wdGlvbiIgKSB7Ci0gICAgICAgICAgICAgICAgZGVzdC5zZWxl
Y3RlZCA9IHNyYy5kZWZhdWx0U2VsZWN0ZWQ7Ci0KLSAgICAgICAgLy8gSUU2LTggZmFpbHMgdG8g
c2V0IHRoZSBkZWZhdWx0VmFsdWUgdG8gdGhlIGNvcnJlY3QgdmFsdWUgd2hlbgotICAgICAgICAv
LyBjbG9uaW5nIG90aGVyIHR5cGVzIG9mIGlucHV0IGZpZWxkcwotICAgICAgICB9IGVsc2UgaWYg
KCBub2RlTmFtZSA9PT0gImlucHV0IiB8fCBub2RlTmFtZSA9PT0gInRleHRhcmVhIiApIHsKLSAg
ICAgICAgICAgICAgICBkZXN0LmRlZmF1bHRWYWx1ZSA9IHNyYy5kZWZhdWx0VmFsdWU7Ci0KLSAg
ICAgICAgLy8gSUUgYmxhbmtzIGNvbnRlbnRzIHdoZW4gY2xvbmluZyBzY3JpcHRzCi0gICAgICAg
IH0gZWxzZSBpZiAoIG5vZGVOYW1lID09PSAic2NyaXB0IiAmJiBkZXN0LnRleHQgIT09IHNyYy50
ZXh0ICkgewotICAgICAgICAgICAgICAgIGRlc3QudGV4dCA9IHNyYy50ZXh0OwotICAgICAgICB9
Ci0KLSAgICAgICAgLy8gRXZlbnQgZGF0YSBnZXRzIHJlZmVyZW5jZWQgaW5zdGVhZCBvZiBjb3Bp
ZWQgaWYgdGhlIGV4cGFuZG8KLSAgICAgICAgLy8gZ2V0cyBjb3BpZWQgdG9vCi0gICAgICAgIGRl
c3QucmVtb3ZlQXR0cmlidXRlKCBqUXVlcnkuZXhwYW5kbyApOwotfQotCi1qUXVlcnkuYnVpbGRG
cmFnbWVudCA9IGZ1bmN0aW9uKCBhcmdzLCBjb250ZXh0LCBzY3JpcHRzICkgewotICAgICAgICB2
YXIgZnJhZ21lbnQsIGNhY2hlYWJsZSwgY2FjaGVoaXQsCi0gICAgICAgICAgICAgICAgZmlyc3Qg
PSBhcmdzWyAwIF07Ci0KLSAgICAgICAgLy8gU2V0IGNvbnRleHQgZnJvbSB3aGF0IG1heSBjb21l
IGluIGFzIHVuZGVmaW5lZCBvciBhIGpRdWVyeSBjb2xsZWN0aW9uIG9yIGEgbm9kZQotICAgICAg
ICAvLyBVcGRhdGVkIHRvIGZpeCAjMTIyNjYgd2hlcmUgYWNjZXNzaW5nIGNvbnRleHRbMF0gY291
bGQgdGhyb3cgYW4gZXhjZXB0aW9uIGluIElFOS8xMCAmCi0gICAgICAgIC8vIGFsc28gZG91Ymxl
cyBhcyBmaXggZm9yICM4OTUwIHdoZXJlIHBsYWluIG9iamVjdHMgY2F1c2VkIGNyZWF0ZURvY3Vt
ZW50RnJhZ21lbnQgZXhjZXB0aW9uCi0gICAgICAgIGNvbnRleHQgPSBjb250ZXh0IHx8IGRvY3Vt
ZW50OwotICAgICAgICBjb250ZXh0ID0gIWNvbnRleHQubm9kZVR5cGUgJiYgY29udGV4dFswXSB8
fCBjb250ZXh0OwotICAgICAgICBjb250ZXh0ID0gY29udGV4dC5vd25lckRvY3VtZW50IHx8IGNv
bnRleHQ7Ci0KLSAgICAgICAgLy8gT25seSBjYWNoZSAic21hbGwiICgxLzIgS0IpIEhUTUwgc3Ry
aW5ncyB0aGF0IGFyZSBhc3NvY2lhdGVkIHdpdGggdGhlIG1haW4gZG9jdW1lbnQKLSAgICAgICAg
Ly8gQ2xvbmluZyBvcHRpb25zIGxvc2VzIHRoZSBzZWxlY3RlZCBzdGF0ZSwgc28gZG9uJ3QgY2Fj
aGUgdGhlbQotICAgICAgICAvLyBJRSA2IGRvZXNuJ3QgbGlrZSBpdCB3aGVuIHlvdSBwdXQgPG9i
amVjdD4gb3IgPGVtYmVkPiBlbGVtZW50cyBpbiBhIGZyYWdtZW50Ci0gICAgICAgIC8vIEFsc28s
IFdlYktpdCBkb2VzIG5vdCBjbG9uZSAnY2hlY2tlZCcgYXR0cmlidXRlcyBvbiBjbG9uZU5vZGUs
IHNvIGRvbid0IGNhY2hlCi0gICAgICAgIC8vIExhc3RseSwgSUU2LDcsOCB3aWxsIG5vdCBjb3Jy
ZWN0bHkgcmV1c2UgY2FjaGVkIGZyYWdtZW50cyB0aGF0IHdlcmUgY3JlYXRlZCBmcm9tIHVua25v
d24gZWxlbXMgIzEwNTAxCi0gICAgICAgIGlmICggYXJncy5sZW5ndGggPT09IDEgJiYgdHlwZW9m
IGZpcnN0ID09PSAic3RyaW5nIiAmJiBmaXJzdC5sZW5ndGggPCA1MTIgJiYgY29udGV4dCA9PT0g
ZG9jdW1lbnQgJiYKLSAgICAgICAgICAgICAgICBmaXJzdC5jaGFyQXQoMCkgPT09ICI8IiAmJiAh
cm5vY2FjaGUudGVzdCggZmlyc3QgKSAmJgotICAgICAgICAgICAgICAgIChqUXVlcnkuc3VwcG9y
dC5jaGVja0Nsb25lIHx8ICFyY2hlY2tlZC50ZXN0KCBmaXJzdCApKSAmJgotICAgICAgICAgICAg
ICAgIChqUXVlcnkuc3VwcG9ydC5odG1sNUNsb25lIHx8ICFybm9zaGltY2FjaGUudGVzdCggZmly
c3QgKSkgKSB7Ci0KLSAgICAgICAgICAgICAgICAvLyBNYXJrIGNhY2hlYWJsZSBhbmQgbG9vayBm
b3IgYSBoaXQKLSAgICAgICAgICAgICAgICBjYWNoZWFibGUgPSB0cnVlOwotICAgICAgICAgICAg
ICAgIGZyYWdtZW50ID0galF1ZXJ5LmZyYWdtZW50c1sgZmlyc3QgXTsKLSAgICAgICAgICAgICAg
ICBjYWNoZWhpdCA9IGZyYWdtZW50ICE9PSB1bmRlZmluZWQ7Ci0gICAgICAgIH0KLQotICAgICAg
ICBpZiAoICFmcmFnbWVudCApIHsKLSAgICAgICAgICAgICAgICBmcmFnbWVudCA9IGNvbnRleHQu
Y3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwotICAgICAgICAgICAgICAgIGpRdWVyeS5jbGVhbigg
YXJncywgY29udGV4dCwgZnJhZ21lbnQsIHNjcmlwdHMgKTsKLQotICAgICAgICAgICAgICAgIC8v
IFVwZGF0ZSB0aGUgY2FjaGUsIGJ1dCBvbmx5IHN0b3JlIGZhbHNlCi0gICAgICAgICAgICAgICAg
Ly8gdW5sZXNzIHRoaXMgaXMgYSBzZWNvbmQgcGFyc2luZyBvZiB0aGUgc2FtZSBjb250ZW50Ci0g
ICAgICAgICAgICAgICAgaWYgKCBjYWNoZWFibGUgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBqUXVlcnkuZnJhZ21lbnRzWyBmaXJzdCBdID0gY2FjaGVoaXQgJiYgZnJhZ21lbnQ7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHsgZnJhZ21lbnQ6IGZy
YWdtZW50LCBjYWNoZWFibGU6IGNhY2hlYWJsZSB9OwotfTsKLQotalF1ZXJ5LmZyYWdtZW50cyA9
IHt9OwotCi1qUXVlcnkuZWFjaCh7Ci0gICAgICAgIGFwcGVuZFRvOiAiYXBwZW5kIiwKLSAgICAg
ICAgcHJlcGVuZFRvOiAicHJlcGVuZCIsCi0gICAgICAgIGluc2VydEJlZm9yZTogImJlZm9yZSIs
Ci0gICAgICAgIGluc2VydEFmdGVyOiAiYWZ0ZXIiLAotICAgICAgICByZXBsYWNlQWxsOiAicmVw
bGFjZVdpdGgiCi19LCBmdW5jdGlvbiggbmFtZSwgb3JpZ2luYWwgKSB7Ci0gICAgICAgIGpRdWVy
eS5mblsgbmFtZSBdID0gZnVuY3Rpb24oIHNlbGVjdG9yICkgewotICAgICAgICAgICAgICAgIHZh
ciBlbGVtcywKLSAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAwLAotICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0ID0gW10sCi0gICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnQgPSBqUXVl
cnkoIHNlbGVjdG9yICksCi0gICAgICAgICAgICAgICAgICAgICAgICBsID0gaW5zZXJ0Lmxlbmd0
aCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudCA9IHRoaXMubGVuZ3RoID09PSAxICYm
IHRoaXNbMF0ucGFyZW50Tm9kZTsKLQotICAgICAgICAgICAgICAgIGlmICggKHBhcmVudCA9PSBu
dWxsIHx8IHBhcmVudCAmJiBwYXJlbnQubm9kZVR5cGUgPT09IDExICYmIHBhcmVudC5jaGlsZE5v
ZGVzLmxlbmd0aCA9PT0gMSkgJiYgbCA9PT0gMSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGluc2VydFsgb3JpZ2luYWwgXSggdGhpc1swXSApOwotICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRoaXM7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGZvciAoIDsgaSA8IGw7IGkrKyApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZWxlbXMgPSAoIGkgPiAwID8gdGhpcy5jbG9uZSh0cnVlKSA6IHRoaXMgKS5nZXQoKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KCBpbnNlcnRbaV0gKVsgb3Jp
Z2luYWwgXSggZWxlbXMgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0g
cmV0LmNvbmNhdCggZWxlbXMgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHVzaFN0YWNrKCByZXQsIG5hbWUsIGluc2Vy
dC5zZWxlY3RvciApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLX0pOwotCi1mdW5j
dGlvbiBnZXRBbGwoIGVsZW0gKSB7Ci0gICAgICAgIGlmICggdHlwZW9mIGVsZW0uZ2V0RWxlbWVu
dHNCeVRhZ05hbWUgIT09ICJ1bmRlZmluZWQiICkgewotICAgICAgICAgICAgICAgIHJldHVybiBl
bGVtLmdldEVsZW1lbnRzQnlUYWdOYW1lKCAiKiIgKTsKLQotICAgICAgICB9IGVsc2UgaWYgKCB0
eXBlb2YgZWxlbS5xdWVyeVNlbGVjdG9yQWxsICE9PSAidW5kZWZpbmVkIiApIHsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gZWxlbS5xdWVyeVNlbGVjdG9yQWxsKCAiKiIgKTsKLQotICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgIHJldHVybiBbXTsKLSAgICAgICAgfQotfQotCi0vLyBV
c2VkIGluIGNsZWFuLCBmaXhlcyB0aGUgZGVmYXVsdENoZWNrZWQgcHJvcGVydHkKLWZ1bmN0aW9u
IGZpeERlZmF1bHRDaGVja2VkKCBlbGVtICkgewotICAgICAgICBpZiAoIHJjaGVja2FibGVUeXBl
LnRlc3QoIGVsZW0udHlwZSApICkgewotICAgICAgICAgICAgICAgIGVsZW0uZGVmYXVsdENoZWNr
ZWQgPSBlbGVtLmNoZWNrZWQ7Ci0gICAgICAgIH0KLX0KLQotalF1ZXJ5LmV4dGVuZCh7Ci0gICAg
ICAgIGNsb25lOiBmdW5jdGlvbiggZWxlbSwgZGF0YUFuZEV2ZW50cywgZGVlcERhdGFBbmRFdmVu
dHMgKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHNyY0VsZW1lbnRzLAotICAgICAgICAgICAgICAg
ICAgICAgICAgZGVzdEVsZW1lbnRzLAotICAgICAgICAgICAgICAgICAgICAgICAgaSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGNsb25lOwotCi0gICAgICAgICAgICAgICAgaWYgKCBqUXVlcnku
c3VwcG9ydC5odG1sNUNsb25lIHx8IGpRdWVyeS5pc1hNTERvYyhlbGVtKSB8fCAhcm5vc2hpbWNh
Y2hlLnRlc3QoICI8IiArIGVsZW0ubm9kZU5hbWUgKyAiPiIgKSApIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGNsb25lID0gZWxlbS5jbG9uZU5vZGUoIHRydWUgKTsKLQotICAgICAgICAgICAg
ICAgIC8vIElFPD04IGRvZXMgbm90IHByb3Blcmx5IGNsb25lIGRldGFjaGVkLCB1bmtub3duIGVs
ZW1lbnQgbm9kZXMKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAg
ICAgICAgZnJhZ21lbnREaXYuaW5uZXJIVE1MID0gZWxlbS5vdXRlckhUTUw7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBmcmFnbWVudERpdi5yZW1vdmVDaGlsZCggY2xvbmUgPSBmcmFnbWVudERp
di5maXJzdENoaWxkICk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYg
KCAoIWpRdWVyeS5zdXBwb3J0Lm5vQ2xvbmVFdmVudCB8fCAhalF1ZXJ5LnN1cHBvcnQubm9DbG9u
ZUNoZWNrZWQpICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbGVtLm5vZGVU
eXBlID09PSAxIHx8IGVsZW0ubm9kZVR5cGUgPT09IDExKSAmJiAhalF1ZXJ5LmlzWE1MRG9jKGVs
ZW0pICkgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gSUUgY29waWVzIGV2ZW50cyBib3Vu
ZCB2aWEgYXR0YWNoRXZlbnQgd2hlbiB1c2luZyBjbG9uZU5vZGUuCi0gICAgICAgICAgICAgICAg
ICAgICAgICAvLyBDYWxsaW5nIGRldGFjaEV2ZW50IG9uIHRoZSBjbG9uZSB3aWxsIGFsc28gcmVt
b3ZlIHRoZSBldmVudHMKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZyb20gdGhlIG9yaWdp
bmFsLiBJbiBvcmRlciB0byBnZXQgYXJvdW5kIHRoaXMsIHdlIHVzZSBzb21lCi0gICAgICAgICAg
ICAgICAgICAgICAgICAvLyBwcm9wcmlldGFyeSBtZXRob2RzIHRvIGNsZWFyIHRoZSBldmVudHMu
IFRoYW5rcyB0byBNb29Ub29scwotICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ3V5cyBmb3Ig
dGhpcyBob3RuZXNzLgotCi0gICAgICAgICAgICAgICAgICAgICAgICBjbG9uZUZpeEF0dHJpYnV0
ZXMoIGVsZW0sIGNsb25lICk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFVzaW5nIFNp
enpsZSBoZXJlIGlzIGNyYXp5IHNsb3csIHNvIHdlIHVzZSBnZXRFbGVtZW50c0J5VGFnTmFtZSBp
bnN0ZWFkCi0gICAgICAgICAgICAgICAgICAgICAgICBzcmNFbGVtZW50cyA9IGdldEFsbCggZWxl
bSApOwotICAgICAgICAgICAgICAgICAgICAgICAgZGVzdEVsZW1lbnRzID0gZ2V0QWxsKCBjbG9u
ZSApOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBXZWlyZCBpdGVyYXRpb24gYmVjYXVz
ZSBJRSB3aWxsIHJlcGxhY2UgdGhlIGxlbmd0aCBwcm9wZXJ0eQotICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gd2l0aCBhbiBlbGVtZW50IGlmIHlvdSBhcmUgY2xvbmluZyB0aGUgYm9keSBhbmQg
b25lIG9mIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gZWxlbWVudHMgb24gdGhlIHBh
Z2UgaGFzIGEgbmFtZSBvciBpZCBvZiAibGVuZ3RoIgotICAgICAgICAgICAgICAgICAgICAgICAg
Zm9yICggaSA9IDA7IHNyY0VsZW1lbnRzW2ldOyArK2kgKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBkZXN0aW5hdGlvbiBub2RlIGlzIG5vdCBu
dWxsOyBGaXhlcyAjOTU4NwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGRl
c3RFbGVtZW50c1tpXSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjbG9uZUZpeEF0dHJpYnV0ZXMoIHNyY0VsZW1lbnRzW2ldLCBkZXN0RWxlbWVudHNbaV0gKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIC8vIENvcHkgdGhlIGV2
ZW50cyBmcm9tIHRoZSBvcmlnaW5hbCB0byB0aGUgY2xvbmUKLSAgICAgICAgICAgICAgICBpZiAo
IGRhdGFBbmRFdmVudHMgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjbG9uZUNvcHlFdmVu
dCggZWxlbSwgY2xvbmUgKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBkZWVwRGF0
YUFuZEV2ZW50cyApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjRWxlbWVu
dHMgPSBnZXRBbGwoIGVsZW0gKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVz
dEVsZW1lbnRzID0gZ2V0QWxsKCBjbG9uZSApOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZvciAoIGkgPSAwOyBzcmNFbGVtZW50c1tpXTsgKytpICkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb25lQ29weUV2ZW50KCBzcmNFbGVtZW50c1tp
XSwgZGVzdEVsZW1lbnRzW2ldICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgICAgICBzcmNFbGVtZW50cyA9IGRlc3RFbGVtZW50cyA9IG51bGw7Ci0KLSAgICAgICAgICAg
ICAgICAvLyBSZXR1cm4gdGhlIGNsb25lZCBzZXQKLSAgICAgICAgICAgICAgICByZXR1cm4gY2xv
bmU7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgY2xlYW46IGZ1bmN0aW9uKCBlbGVtcywgY29udGV4
dCwgZnJhZ21lbnQsIHNjcmlwdHMgKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGksIGosIGVsZW0s
IHRhZywgd3JhcCwgZGVwdGgsIGRpdiwgaGFzQm9keSwgdGJvZHksIGxlbiwgaGFuZGxlU2NyaXB0
LCBqc1RhZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICBzYWZlID0gY29udGV4dCA9PT0gZG9j
dW1lbnQgJiYgc2FmZUZyYWdtZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gW107
Ci0KLSAgICAgICAgICAgICAgICAvLyBFbnN1cmUgdGhhdCBjb250ZXh0IGlzIGEgZG9jdW1lbnQK
LSAgICAgICAgICAgICAgICBpZiAoICFjb250ZXh0IHx8IHR5cGVvZiBjb250ZXh0LmNyZWF0ZURv
Y3VtZW50RnJhZ21lbnQgPT09ICJ1bmRlZmluZWQiICkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgY29udGV4dCA9IGRvY3VtZW50OwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
ICAgIC8vIFVzZSB0aGUgYWxyZWFkeS1jcmVhdGVkIHNhZmUgZnJhZ21lbnQgaWYgY29udGV4dCBw
ZXJtaXRzCi0gICAgICAgICAgICAgICAgZm9yICggaSA9IDA7IChlbGVtID0gZWxlbXNbaV0pICE9
IG51bGw7IGkrKyApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICggdHlwZW9mIGVsZW0g
PT09ICJudW1iZXIiICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtICs9
ICIiOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoICFlbGVtICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gQ29udmVydCBodG1sIHN0cmluZyBpbnRvIERPTSBub2RlcwotICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCB0eXBlb2YgZWxlbSA9PT0gInN0cmluZyIgKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICggIXJodG1sLnRlc3QoIGVsZW0gKSApIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtID0gY29udGV4dC5jcmVhdGVUZXh0Tm9k
ZSggZWxlbSApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVuc3VyZSBhIHNhZmUgY29u
dGFpbmVyIGluIHdoaWNoIHRvIHJlbmRlciB0aGUgaHRtbAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNhZmUgPSBzYWZlIHx8IGNyZWF0ZVNhZmVGcmFnbWVudCggY29u
dGV4dCApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpdiA9IGNv
bnRleHQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2FmZS5hcHBlbmRDaGlsZCggZGl2ICk7Ci0KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBGaXggIlhIVE1MIi1zdHlsZSB0YWdzIGluIGFsbCBi
cm93c2VycwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0gPSBl
bGVtLnJlcGxhY2UocnhodG1sVGFnLCAiPCQxPjwvJDI+Iik7Ci0KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBHbyB0byBodG1sIGFuZCBiYWNrLCB0aGVuIHBlZWwg
b2ZmIGV4dHJhIHdyYXBwZXJzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGFnID0gKCBydGFnTmFtZS5leGVjKCBlbGVtICkgfHwgWyIiLCAiIl0gKVsxXS50b0xvd2Vy
Q2FzZSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyYXAgPSB3
cmFwTWFwWyB0YWcgXSB8fCB3cmFwTWFwLl9kZWZhdWx0OwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRlcHRoID0gd3JhcFswXTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkaXYuaW5uZXJIVE1MID0gd3JhcFsxXSArIGVsZW0gKyB3cmFw
WzJdOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTW92ZSB0
byB0aGUgcmlnaHQgZGVwdGgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB3aGlsZSAoIGRlcHRoLS0gKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkaXYgPSBkaXYubGFzdENoaWxkOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIFJlbW92ZSBJRSdzIGF1dG9pbnNlcnRlZCA8dGJvZHk+IGZyb20gdGFibGUgZnJh
Z21lbnRzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhalF1
ZXJ5LnN1cHBvcnQudGJvZHkgKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIFN0cmluZyB3YXMgYSA8dGFibGU+LCAqbWF5KiBoYXZlIHNwdXJp
b3VzIDx0Ym9keT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGhhc0JvZHkgPSBydGJvZHkudGVzdChlbGVtKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGJvZHkgPSB0YWcgPT09ICJ0YWJsZSIg
JiYgIWhhc0JvZHkgPwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRpdi5maXJzdENoaWxkICYmIGRpdi5maXJzdENoaWxkLmNo
aWxkTm9kZXMgOgotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gU3RyaW5nIHdhcyBhIGJhcmUgPHRoZWFkPiBvciA8dGZv
b3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgd3JhcFsxXSA9PT0gIjx0YWJsZT4iICYmICFoYXNCb2R5ID8KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRpdi5jaGlsZE5vZGVzIDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdOwotCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKCBqID0gdGJvZHkubGVu
Z3RoIC0gMTsgaiA+PSAwIDsgLS1qICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGpRdWVyeS5ub2RlTmFtZSggdGJvZHlbIGog
XSwgInRib2R5IiApICYmICF0Ym9keVsgaiBdLmNoaWxkTm9kZXMubGVuZ3RoICkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRib2R5WyBqIF0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCggdGJvZHlbIGogXSApOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gSUUgY29tcGxldGVseSBraWxscyBsZWFkaW5nIHdoaXRlc3Bh
Y2Ugd2hlbiBpbm5lckhUTUwgaXMgdXNlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICggIWpRdWVyeS5zdXBwb3J0LmxlYWRpbmdXaGl0ZXNwYWNlICYmIHJsZWFk
aW5nV2hpdGVzcGFjZS50ZXN0KCBlbGVtICkgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkaXYuaW5zZXJ0QmVmb3JlKCBjb250ZXh0LmNyZWF0ZVRl
eHROb2RlKCBybGVhZGluZ1doaXRlc3BhY2UuZXhlYyhlbGVtKVswXSApLCBkaXYuZmlyc3RDaGls
ZCApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0gPSBkaXYuY2hpbGROb2RlczsK
LQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRha2Ugb3V0IG9m
IGZyYWdtZW50IGNvbnRhaW5lciAod2UgbmVlZCBhIGZyZXNoIGRpdiBlYWNoIHRpbWUpCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGl2LnBhcmVudE5vZGUucmVtb3Zl
Q2hpbGQoIGRpdiApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICggZWxlbS5u
b2RlVHlwZSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0LnB1c2goIGVs
ZW0gKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGpRdWVyeS5tZXJnZSggcmV0LCBlbGVtICk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgLy8gRml4
ICMxMTM1NjogQ2xlYXIgZWxlbWVudHMgZnJvbSBzYWZlRnJhZ21lbnQKLSAgICAgICAgICAgICAg
ICBpZiAoIGRpdiApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0gPSBkaXYgPSBzYWZl
ID0gbnVsbDsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBSZXNldCBk
ZWZhdWx0Q2hlY2tlZCBmb3IgYW55IHJhZGlvcyBhbmQgY2hlY2tib3hlcwotICAgICAgICAgICAg
ICAgIC8vIGFib3V0IHRvIGJlIGFwcGVuZGVkIHRvIHRoZSBET00gaW4gSUUgNi83ICgjODA2MCkK
LSAgICAgICAgICAgICAgICBpZiAoICFqUXVlcnkuc3VwcG9ydC5hcHBlbmRDaGVja2VkICkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgZm9yICggaSA9IDA7IChlbGVtID0gcmV0W2ldKSAhPSBu
dWxsOyBpKysgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggalF1ZXJ5
Lm5vZGVOYW1lKCBlbGVtLCAiaW5wdXQiICkgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZml4RGVmYXVsdENoZWNrZWQoIGVsZW0gKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICggdHlwZW9mIGVsZW0uZ2V0RWxlbWVudHNCeVRh
Z05hbWUgIT09ICJ1bmRlZmluZWQiICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGpRdWVyeS5ncmVwKCBlbGVtLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIp
LCBmaXhEZWZhdWx0Q2hlY2tlZCApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICAgICAgLy8gQXBwZW5kIGVsZW1lbnRzIHRvIGEgcHJvdmlkZWQgZG9jdW1lbnQgZnJhZ21l
bnQKLSAgICAgICAgICAgICAgICBpZiAoIGZyYWdtZW50ICkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gU3BlY2lhbCBoYW5kbGluZyBvZiBlYWNoIHNjcmlwdCBlbGVtZW50Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBoYW5kbGVTY3JpcHQgPSBmdW5jdGlvbiggZWxlbSApIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgd2UgY29uc2lkZXIgaXQgZXhl
Y3V0YWJsZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICFlbGVtLnR5cGUg
fHwgcnNjcmlwdFR5cGUudGVzdCggZWxlbS50eXBlICkgKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gRGV0YWNoIHRoZSBzY3JpcHQgYW5kIHN0b3JlIGl0IGlu
IHRoZSBzY3JpcHRzIGFycmF5IChpZiBwcm92aWRlZCkgb3IgdGhlIGZyYWdtZW50Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmV0dXJuIHRydXRoeSB0byBpbmRp
Y2F0ZSB0aGF0IGl0IGhhcyBiZWVuIGhhbmRsZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gc2NyaXB0cyA/Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRzLnB1c2goIGVsZW0ucGFyZW50Tm9kZSA/IGVs
ZW0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCggZWxlbSApIDogZWxlbSApIDoKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYWdtZW50LmFwcGVuZENoaWxk
KCBlbGVtICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICAgICAgICAgIH07Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoIGkgPSAwOyAo
ZWxlbSA9IHJldFtpXSkgIT0gbnVsbDsgaSsrICkgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBDaGVjayBpZiB3ZSdyZSBkb25lIGFmdGVyIGhhbmRsaW5nIGFuIGV4ZWN1dGFi
bGUgc2NyaXB0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggISggalF1ZXJ5
Lm5vZGVOYW1lKCBlbGVtLCAic2NyaXB0IiApICYmIGhhbmRsZVNjcmlwdCggZWxlbSApICkgKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXBwZW5kIHRvIGZy
YWdtZW50IGFuZCBoYW5kbGUgZW1iZWRkZWQgc2NyaXB0cwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZyYWdtZW50LmFwcGVuZENoaWxkKCBlbGVtICk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCB0eXBlb2YgZWxlbS5nZXRFbGVt
ZW50c0J5VGFnTmFtZSAhPT0gInVuZGVmaW5lZCIgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBoYW5kbGVTY3JpcHQgYWx0ZXJzIHRoZSBET00s
IHNvIHVzZSBqUXVlcnkubWVyZ2UgdG8gZW5zdXJlIHNuYXBzaG90IGl0ZXJhdGlvbgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganNUYWdzID0galF1ZXJ5
LmdyZXAoIGpRdWVyeS5tZXJnZSggW10sIGVsZW0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlw
dCIpICksIGhhbmRsZVNjcmlwdCApOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBTcGxpY2UgdGhlIHNjcmlwdHMgaW50byByZXQgYWZ0ZXIgdGhl
aXIgZm9ybWVyIGFuY2VzdG9yIGFuZCBhZHZhbmNlIG91ciBpbmRleCBiZXlvbmQgdGhlbQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0LnNwbGljZS5h
cHBseSggcmV0LCBbaSArIDEsIDBdLmNvbmNhdCgganNUYWdzICkgKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgKz0ganNUYWdzLmxlbmd0aDsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgICAgICByZXR1cm4gcmV0OwotICAgICAgICB9LAotCi0gICAg
ICAgIGNsZWFuRGF0YTogZnVuY3Rpb24oIGVsZW1zLCAvKiBpbnRlcm5hbCAqLyBhY2NlcHREYXRh
ICkgewotICAgICAgICAgICAgICAgIHZhciBkYXRhLCBpZCwgZWxlbSwgdHlwZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGkgPSAwLAotICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWxL
ZXkgPSBqUXVlcnkuZXhwYW5kbywKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlID0galF1
ZXJ5LmNhY2hlLAotICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlRXhwYW5kbyA9IGpRdWVy
eS5zdXBwb3J0LmRlbGV0ZUV4cGFuZG8sCi0gICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWFs
ID0galF1ZXJ5LmV2ZW50LnNwZWNpYWw7Ci0KLSAgICAgICAgICAgICAgICBmb3IgKCA7IChlbGVt
ID0gZWxlbXNbaV0pICE9IG51bGw7IGkrKyApIHsKLQotICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCBhY2NlcHREYXRhIHx8IGpRdWVyeS5hY2NlcHREYXRhKCBlbGVtICkgKSB7Ci0KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBlbGVtWyBpbnRlcm5hbEtleSBdOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gaWQgJiYgY2FjaGVbIGlkIF07Ci0K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBkYXRhICkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggZGF0YS5ldmVudHMgKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKCB0eXBlIGlu
IGRhdGEuZXZlbnRzICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoIHNwZWNpYWxbIHR5cGUgXSApIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnku
ZXZlbnQucmVtb3ZlKCBlbGVtLCB0eXBlICk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBhIHNob3J0Y3V0IHRvIGF2
b2lkIGpRdWVyeS5ldmVudC5yZW1vdmUncyBvdmVyaGVhZAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVy
eS5yZW1vdmVFdmVudCggZWxlbSwgdHlwZSwgZGF0YS5oYW5kbGUgKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIFJlbW92ZSBjYWNoZSBvbmx5IGlmIGl0IHdhcyBub3QgYWxyZWFkeSByZW1v
dmVkIGJ5IGpRdWVyeS5ldmVudC5yZW1vdmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoIGNhY2hlWyBpZCBdICkgewotCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgY2FjaGVbIGlkIF07Ci0KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElFIGRvZXMgbm90IGFs
bG93IHVzIHRvIGRlbGV0ZSBleHBhbmRvIHByb3BlcnRpZXMgZnJvbSBub2RlcywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5vciBkb2VzIGl0IGhh
dmUgYSByZW1vdmVBdHRyaWJ1dGUgZnVuY3Rpb24gb24gRG9jdW1lbnQgbm9kZXM7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3ZSBtdXN0IGhhbmRs
ZSBhbGwgb2YgdGhlc2UgY2FzZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICggZGVsZXRlRXhwYW5kbyApIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGVsZW1bIGludGVybmFs
S2V5IF07Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0gZWxzZSBpZiAoIGVsZW0ucmVtb3ZlQXR0cmlidXRlICkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtLnJlbW92ZUF0dHJpYnV0
ZSggaW50ZXJuYWxLZXkgKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZWxlbVsgaW50ZXJuYWxLZXkgXSA9IG51bGw7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5kZWxldGVkSWRzLnB1
c2goIGlkICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICB9Ci19KTsKLS8vIExpbWl0IHNjb3BlIHBvbGx1
dGlvbiBmcm9tIGFueSBkZXByZWNhdGVkIEFQSQotKGZ1bmN0aW9uKCkgewotCi12YXIgbWF0Y2hl
ZCwgYnJvd3NlcjsKLQotLy8gVXNlIG9mIGpRdWVyeS5icm93c2VyIGlzIGZyb3duZWQgdXBvbi4K
LS8vIE1vcmUgZGV0YWlsczogaHR0cDovL2FwaS5qcXVlcnkuY29tL2pRdWVyeS5icm93c2VyCi0v
LyBqUXVlcnkudWFNYXRjaCBtYWludGFpbmVkIGZvciBiYWNrLWNvbXBhdAotalF1ZXJ5LnVhTWF0
Y2ggPSBmdW5jdGlvbiggdWEgKSB7Ci0gICAgICAgIHVhID0gdWEudG9Mb3dlckNhc2UoKTsKLQot
ICAgICAgICB2YXIgbWF0Y2ggPSAvKGNocm9tZSlbIFwvXShbXHcuXSspLy5leGVjKCB1YSApIHx8
Ci0gICAgICAgICAgICAgICAgLyh3ZWJraXQpWyBcL10oW1x3Ll0rKS8uZXhlYyggdWEgKSB8fAot
ICAgICAgICAgICAgICAgIC8ob3BlcmEpKD86Lip2ZXJzaW9ufClbIFwvXShbXHcuXSspLy5leGVj
KCB1YSApIHx8Ci0gICAgICAgICAgICAgICAgLyhtc2llKSAoW1x3Ll0rKS8uZXhlYyggdWEgKSB8
fAotICAgICAgICAgICAgICAgIHVhLmluZGV4T2YoImNvbXBhdGlibGUiKSA8IDAgJiYgLyhtb3pp
bGxhKSg/Oi4qPyBydjooW1x3Ll0rKXwpLy5leGVjKCB1YSApIHx8Ci0gICAgICAgICAgICAgICAg
W107Ci0KLSAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgICAgICBicm93c2VyOiBtYXRjaFsg
MSBdIHx8ICIiLAotICAgICAgICAgICAgICAgIHZlcnNpb246IG1hdGNoWyAyIF0gfHwgIjAiCi0g
ICAgICAgIH07Ci19OwotCi1tYXRjaGVkID0galF1ZXJ5LnVhTWF0Y2goIG5hdmlnYXRvci51c2Vy
QWdlbnQgKTsKLWJyb3dzZXIgPSB7fTsKLQotaWYgKCBtYXRjaGVkLmJyb3dzZXIgKSB7Ci0gICAg
ICAgIGJyb3dzZXJbIG1hdGNoZWQuYnJvd3NlciBdID0gdHJ1ZTsKLSAgICAgICAgYnJvd3Nlci52
ZXJzaW9uID0gbWF0Y2hlZC52ZXJzaW9uOwotfQotCi0vLyBDaHJvbWUgaXMgV2Via2l0LCBidXQg
V2Via2l0IGlzIGFsc28gU2FmYXJpLgotaWYgKCBicm93c2VyLmNocm9tZSApIHsKLSAgICAgICAg
YnJvd3Nlci53ZWJraXQgPSB0cnVlOwotfSBlbHNlIGlmICggYnJvd3Nlci53ZWJraXQgKSB7Ci0g
ICAgICAgIGJyb3dzZXIuc2FmYXJpID0gdHJ1ZTsKLX0KLQotalF1ZXJ5LmJyb3dzZXIgPSBicm93
c2VyOwotCi1qUXVlcnkuc3ViID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIGZ1bmN0aW9uIGpRdWVy
eVN1Yiggc2VsZWN0b3IsIGNvbnRleHQgKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBq
UXVlcnlTdWIuZm4uaW5pdCggc2VsZWN0b3IsIGNvbnRleHQgKTsKLSAgICAgICAgfQotICAgICAg
ICBqUXVlcnkuZXh0ZW5kKCB0cnVlLCBqUXVlcnlTdWIsIHRoaXMgKTsKLSAgICAgICAgalF1ZXJ5
U3ViLnN1cGVyY2xhc3MgPSB0aGlzOwotICAgICAgICBqUXVlcnlTdWIuZm4gPSBqUXVlcnlTdWIu
cHJvdG90eXBlID0gdGhpcygpOwotICAgICAgICBqUXVlcnlTdWIuZm4uY29uc3RydWN0b3IgPSBq
UXVlcnlTdWI7Ci0gICAgICAgIGpRdWVyeVN1Yi5zdWIgPSB0aGlzLnN1YjsKLSAgICAgICAgalF1
ZXJ5U3ViLmZuLmluaXQgPSBmdW5jdGlvbiBpbml0KCBzZWxlY3RvciwgY29udGV4dCApIHsKLSAg
ICAgICAgICAgICAgICBpZiAoIGNvbnRleHQgJiYgY29udGV4dCBpbnN0YW5jZW9mIGpRdWVyeSAm
JiAhKGNvbnRleHQgaW5zdGFuY2VvZiBqUXVlcnlTdWIpICkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgY29udGV4dCA9IGpRdWVyeVN1YiggY29udGV4dCApOwotICAgICAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgICAgIHJldHVybiBqUXVlcnkuZm4uaW5pdC5jYWxsKCB0aGlzLCBzZWxl
Y3RvciwgY29udGV4dCwgcm9vdGpRdWVyeVN1YiApOwotICAgICAgICB9OwotICAgICAgICBqUXVl
cnlTdWIuZm4uaW5pdC5wcm90b3R5cGUgPSBqUXVlcnlTdWIuZm47Ci0gICAgICAgIHZhciByb290
alF1ZXJ5U3ViID0galF1ZXJ5U3ViKGRvY3VtZW50KTsKLSAgICAgICAgcmV0dXJuIGpRdWVyeVN1
YjsKLX07Ci0KLX0pKCk7Ci12YXIgY3VyQ1NTLCBpZnJhbWUsIGlmcmFtZURvYywKLSAgICAgICAg
cmFscGhhID0gL2FscGhhXChbXildKlwpL2ksCi0gICAgICAgIHJvcGFjaXR5ID0gL29wYWNpdHk9
KFteKV0qKS8sCi0gICAgICAgIHJwb3NpdGlvbiA9IC9eKHRvcHxyaWdodHxib3R0b218bGVmdCkk
LywKLSAgICAgICAgLy8gc3dhcHBhYmxlIGlmIGRpc3BsYXkgaXMgbm9uZSBvciBzdGFydHMgd2l0
aCB0YWJsZSBleGNlcHQgInRhYmxlIiwgInRhYmxlLWNlbGwiLCBvciAidGFibGUtY2FwdGlvbiIK
LSAgICAgICAgLy8gc2VlIGhlcmUgZm9yIGRpc3BsYXkgdmFsdWVzOiBodHRwczovL2RldmVsb3Bl
ci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0NTUy9kaXNwbGF5Ci0gICAgICAgIHJkaXNwbGF5c3dh
cCA9IC9eKG5vbmV8dGFibGUoPyEtY1tlYV0pLispLywKLSAgICAgICAgcm1hcmdpbiA9IC9ebWFy
Z2luLywKLSAgICAgICAgcm51bXNwbGl0ID0gbmV3IFJlZ0V4cCggIl4oIiArIGNvcmVfcG51bSAr
ICIpKC4qKSQiLCAiaSIgKSwKLSAgICAgICAgcm51bW5vbnB4ID0gbmV3IFJlZ0V4cCggIl4oIiAr
IGNvcmVfcG51bSArICIpKD8hcHgpW2EteiVdKyQiLCAiaSIgKSwKLSAgICAgICAgcnJlbE51bSA9
IG5ldyBSZWdFeHAoICJeKFstK10pPSgiICsgY29yZV9wbnVtICsgIikiLCAiaSIgKSwKLSAgICAg
ICAgZWxlbWRpc3BsYXkgPSB7IEJPRFk6ICJibG9jayIgfSwKLQotICAgICAgICBjc3NTaG93ID0g
eyBwb3NpdGlvbjogImFic29sdXRlIiwgdmlzaWJpbGl0eTogImhpZGRlbiIsIGRpc3BsYXk6ICJi
bG9jayIgfSwKLSAgICAgICAgY3NzTm9ybWFsVHJhbnNmb3JtID0gewotICAgICAgICAgICAgICAg
IGxldHRlclNwYWNpbmc6IDAsCi0gICAgICAgICAgICAgICAgZm9udFdlaWdodDogNDAwCi0gICAg
ICAgIH0sCi0KLSAgICAgICAgY3NzRXhwYW5kID0gWyAiVG9wIiwgIlJpZ2h0IiwgIkJvdHRvbSIs
ICJMZWZ0IiBdLAotICAgICAgICBjc3NQcmVmaXhlcyA9IFsgIldlYmtpdCIsICJPIiwgIk1veiIs
ICJtcyIgXSwKLQotICAgICAgICBldmVudHNUb2dnbGUgPSBqUXVlcnkuZm4udG9nZ2xlOwotCi0v
LyByZXR1cm4gYSBjc3MgcHJvcGVydHkgbWFwcGVkIHRvIGEgcG90ZW50aWFsbHkgdmVuZG9yIHBy
ZWZpeGVkIHByb3BlcnR5Ci1mdW5jdGlvbiB2ZW5kb3JQcm9wTmFtZSggc3R5bGUsIG5hbWUgKSB7
Ci0KLSAgICAgICAgLy8gc2hvcnRjdXQgZm9yIG5hbWVzIHRoYXQgYXJlIG5vdCB2ZW5kb3IgcHJl
Zml4ZWQKLSAgICAgICAgaWYgKCBuYW1lIGluIHN0eWxlICkgewotICAgICAgICAgICAgICAgIHJl
dHVybiBuYW1lOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gY2hlY2sgZm9yIHZlbmRvciBwcmVm
aXhlZCBuYW1lcwotICAgICAgICB2YXIgY2FwTmFtZSA9IG5hbWUuY2hhckF0KDApLnRvVXBwZXJD
YXNlKCkgKyBuYW1lLnNsaWNlKDEpLAotICAgICAgICAgICAgICAgIG9yaWdOYW1lID0gbmFtZSwK
LSAgICAgICAgICAgICAgICBpID0gY3NzUHJlZml4ZXMubGVuZ3RoOwotCi0gICAgICAgIHdoaWxl
ICggaS0tICkgewotICAgICAgICAgICAgICAgIG5hbWUgPSBjc3NQcmVmaXhlc1sgaSBdICsgY2Fw
TmFtZTsKLSAgICAgICAgICAgICAgICBpZiAoIG5hbWUgaW4gc3R5bGUgKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gbmFtZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgIH0K
LQotICAgICAgICByZXR1cm4gb3JpZ05hbWU7Ci19Ci0KLWZ1bmN0aW9uIGlzSGlkZGVuKCBlbGVt
LCBlbCApIHsKLSAgICAgICAgZWxlbSA9IGVsIHx8IGVsZW07Ci0gICAgICAgIHJldHVybiBqUXVl
cnkuY3NzKCBlbGVtLCAiZGlzcGxheSIgKSA9PT0gIm5vbmUiIHx8ICFqUXVlcnkuY29udGFpbnMo
IGVsZW0ub3duZXJEb2N1bWVudCwgZWxlbSApOwotfQotCi1mdW5jdGlvbiBzaG93SGlkZSggZWxl
bWVudHMsIHNob3cgKSB7Ci0gICAgICAgIHZhciBlbGVtLCBkaXNwbGF5LAotICAgICAgICAgICAg
ICAgIHZhbHVlcyA9IFtdLAotICAgICAgICAgICAgICAgIGluZGV4ID0gMCwKLSAgICAgICAgICAg
ICAgICBsZW5ndGggPSBlbGVtZW50cy5sZW5ndGg7Ci0KLSAgICAgICAgZm9yICggOyBpbmRleCA8
IGxlbmd0aDsgaW5kZXgrKyApIHsKLSAgICAgICAgICAgICAgICBlbGVtID0gZWxlbWVudHNbIGlu
ZGV4IF07Ci0gICAgICAgICAgICAgICAgaWYgKCAhZWxlbS5zdHlsZSApIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICB2YWx1ZXNbIGluZGV4IF0gPSBqUXVlcnkuX2RhdGEoIGVsZW0sICJvbGRkaXNwbGF5IiApOwot
ICAgICAgICAgICAgICAgIGlmICggc2hvdyApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8v
IFJlc2V0IHRoZSBpbmxpbmUgZGlzcGxheSBvZiB0aGlzIGVsZW1lbnQgdG8gbGVhcm4gaWYgaXQg
aXMKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJlaW5nIGhpZGRlbiBieSBjYXNjYWRlZCBy
dWxlcyBvciBub3QKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICggIXZhbHVlc1sgaW5kZXgg
XSAmJiBlbGVtLnN0eWxlLmRpc3BsYXkgPT09ICJub25lIiApIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZWxlbS5zdHlsZS5kaXNwbGF5ID0gIiI7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNldCBlbGVtZW50cyB3aGlj
aCBoYXZlIGJlZW4gb3ZlcnJpZGRlbiB3aXRoIGRpc3BsYXk6IG5vbmUKLSAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGluIGEgc3R5bGVzaGVldCB0byB3aGF0ZXZlciB0aGUgZGVmYXVsdCBicm93
c2VyIHN0eWxlIGlzCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3Igc3VjaCBhbiBlbGVt
ZW50Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGVsZW0uc3R5bGUuZGlzcGxheSA9PT0g
IiIgJiYgaXNIaWRkZW4oIGVsZW0gKSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdmFsdWVzWyBpbmRleCBdID0galF1ZXJ5Ll9kYXRhKCBlbGVtLCAib2xkZGlzcGxheSIsIGNz
c19kZWZhdWx0RGlzcGxheShlbGVtLm5vZGVOYW1lKSApOwotICAgICAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBk
aXNwbGF5ID0gY3VyQ1NTKCBlbGVtLCAiZGlzcGxheSIgKTsKLQotICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCAhdmFsdWVzWyBpbmRleCBdICYmIGRpc3BsYXkgIT09ICJub25lIiApIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5Ll9kYXRhKCBlbGVtLCAib2xkZGlz
cGxheSIsIGRpc3BsYXkgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBTZXQgdGhlIGRpc3BsYXkgb2YgbW9zdCBv
ZiB0aGUgZWxlbWVudHMgaW4gYSBzZWNvbmQgbG9vcAotICAgICAgICAvLyB0byBhdm9pZCB0aGUg
Y29uc3RhbnQgcmVmbG93Ci0gICAgICAgIGZvciAoIGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7
IGluZGV4KysgKSB7Ci0gICAgICAgICAgICAgICAgZWxlbSA9IGVsZW1lbnRzWyBpbmRleCBdOwot
ICAgICAgICAgICAgICAgIGlmICggIWVsZW0uc3R5bGUgKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKCAh
c2hvdyB8fCBlbGVtLnN0eWxlLmRpc3BsYXkgPT09ICJub25lIiB8fCBlbGVtLnN0eWxlLmRpc3Bs
YXkgPT09ICIiICkgewotICAgICAgICAgICAgICAgICAgICAgICAgZWxlbS5zdHlsZS5kaXNwbGF5
ID0gc2hvdyA/IHZhbHVlc1sgaW5kZXggXSB8fCAiIiA6ICJub25lIjsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gZWxlbWVudHM7Ci19Ci0KLWpRdWVyeS5m
bi5leHRlbmQoewotICAgICAgICBjc3M6IGZ1bmN0aW9uKCBuYW1lLCB2YWx1ZSApIHsKLSAgICAg
ICAgICAgICAgICByZXR1cm4galF1ZXJ5LmFjY2VzcyggdGhpcywgZnVuY3Rpb24oIGVsZW0sIG5h
bWUsIHZhbHVlICkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlICE9PSB1
bmRlZmluZWQgPwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkuc3R5bGUo
IGVsZW0sIG5hbWUsIHZhbHVlICkgOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBq
UXVlcnkuY3NzKCBlbGVtLCBuYW1lICk7Ci0gICAgICAgICAgICAgICAgfSwgbmFtZSwgdmFsdWUs
IGFyZ3VtZW50cy5sZW5ndGggPiAxICk7Ci0gICAgICAgIH0sCi0gICAgICAgIHNob3c6IGZ1bmN0
aW9uKCkgewotICAgICAgICAgICAgICAgIHJldHVybiBzaG93SGlkZSggdGhpcywgdHJ1ZSApOwot
ICAgICAgICB9LAotICAgICAgICBoaWRlOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gc2hvd0hpZGUoIHRoaXMgKTsKLSAgICAgICAgfSwKLSAgICAgICAgdG9nZ2xlOiBmdW5j
dGlvbiggc3RhdGUsIGZuMiApIHsKLSAgICAgICAgICAgICAgICB2YXIgYm9vbCA9IHR5cGVvZiBz
dGF0ZSA9PT0gImJvb2xlYW4iOwotCi0gICAgICAgICAgICAgICAgaWYgKCBqUXVlcnkuaXNGdW5j
dGlvbiggc3RhdGUgKSAmJiBqUXVlcnkuaXNGdW5jdGlvbiggZm4yICkgKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZXZlbnRzVG9nZ2xlLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMg
KTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lYWNo
KGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBib29sID8gc3RhdGUg
OiBpc0hpZGRlbiggdGhpcyApICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBq
UXVlcnkoIHRoaXMgKS5zaG93KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoIHRoaXMgKS5oaWRlKCk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0K
LX0pOwotCi1qUXVlcnkuZXh0ZW5kKHsKLSAgICAgICAgLy8gQWRkIGluIHN0eWxlIHByb3BlcnR5
IGhvb2tzIGZvciBvdmVycmlkaW5nIHRoZSBkZWZhdWx0Ci0gICAgICAgIC8vIGJlaGF2aW9yIG9m
IGdldHRpbmcgYW5kIHNldHRpbmcgYSBzdHlsZSBwcm9wZXJ0eQotICAgICAgICBjc3NIb29rczog
ewotICAgICAgICAgICAgICAgIG9wYWNpdHk6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGdl
dDogZnVuY3Rpb24oIGVsZW0sIGNvbXB1dGVkICkgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoIGNvbXB1dGVkICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIFdlIHNob3VsZCBhbHdheXMgZ2V0IGEgbnVtYmVyIGJhY2sgZnJvbSBvcGFj
aXR5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJldCA9IGN1
ckNTUyggZWxlbSwgIm9wYWNpdHkiICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHJldCA9PT0gIiIgPyAiMSIgOiByZXQ7Ci0KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgfSwKLQotICAgICAgICAvLyBFeGNsdWRlIHRoZSBmb2xsb3dpbmcg
Y3NzIHByb3BlcnRpZXMgdG8gYWRkIHB4Ci0gICAgICAgIGNzc051bWJlcjogewotICAgICAgICAg
ICAgICAgICJmaWxsT3BhY2l0eSI6IHRydWUsCi0gICAgICAgICAgICAgICAgImZvbnRXZWlnaHQi
OiB0cnVlLAotICAgICAgICAgICAgICAgICJsaW5lSGVpZ2h0IjogdHJ1ZSwKLSAgICAgICAgICAg
ICAgICAib3BhY2l0eSI6IHRydWUsCi0gICAgICAgICAgICAgICAgIm9ycGhhbnMiOiB0cnVlLAot
ICAgICAgICAgICAgICAgICJ3aWRvd3MiOiB0cnVlLAotICAgICAgICAgICAgICAgICJ6SW5kZXgi
OiB0cnVlLAotICAgICAgICAgICAgICAgICJ6b29tIjogdHJ1ZQotICAgICAgICB9LAotCi0gICAg
ICAgIC8vIEFkZCBpbiBwcm9wZXJ0aWVzIHdob3NlIG5hbWVzIHlvdSB3aXNoIHRvIGZpeCBiZWZv
cmUKLSAgICAgICAgLy8gc2V0dGluZyBvciBnZXR0aW5nIHRoZSB2YWx1ZQotICAgICAgICBjc3NQ
cm9wczogewotICAgICAgICAgICAgICAgIC8vIG5vcm1hbGl6ZSBmbG9hdCBjc3MgcHJvcGVydHkK
LSAgICAgICAgICAgICAgICAiZmxvYXQiOiBqUXVlcnkuc3VwcG9ydC5jc3NGbG9hdCA/ICJjc3NG
bG9hdCIgOiAic3R5bGVGbG9hdCIKLSAgICAgICAgfSwKLQotICAgICAgICAvLyBHZXQgYW5kIHNl
dCB0aGUgc3R5bGUgcHJvcGVydHkgb24gYSBET00gTm9kZQotICAgICAgICBzdHlsZTogZnVuY3Rp
b24oIGVsZW0sIG5hbWUsIHZhbHVlLCBleHRyYSApIHsKLSAgICAgICAgICAgICAgICAvLyBEb24n
dCBzZXQgc3R5bGVzIG9uIHRleHQgYW5kIGNvbW1lbnQgbm9kZXMKLSAgICAgICAgICAgICAgICBp
ZiAoICFlbGVtIHx8IGVsZW0ubm9kZVR5cGUgPT09IDMgfHwgZWxlbS5ub2RlVHlwZSA9PT0gOCB8
fCAhZWxlbS5zdHlsZSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCB3ZSdyZSB3
b3JraW5nIHdpdGggdGhlIHJpZ2h0IG5hbWUKLSAgICAgICAgICAgICAgICB2YXIgcmV0LCB0eXBl
LCBob29rcywKLSAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdOYW1lID0galF1ZXJ5LmNhbWVs
Q2FzZSggbmFtZSApLAotICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGUgPSBlbGVtLnN0eWxl
OwotCi0gICAgICAgICAgICAgICAgbmFtZSA9IGpRdWVyeS5jc3NQcm9wc1sgb3JpZ05hbWUgXSB8
fCAoIGpRdWVyeS5jc3NQcm9wc1sgb3JpZ05hbWUgXSA9IHZlbmRvclByb3BOYW1lKCBzdHlsZSwg
b3JpZ05hbWUgKSApOwotCi0gICAgICAgICAgICAgICAgLy8gZ2V0cyBob29rIGZvciB0aGUgcHJl
Zml4ZWQgdmVyc2lvbgotICAgICAgICAgICAgICAgIC8vIGZvbGxvd2VkIGJ5IHRoZSB1bnByZWZp
eGVkIHZlcnNpb24KLSAgICAgICAgICAgICAgICBob29rcyA9IGpRdWVyeS5jc3NIb29rc1sgbmFt
ZSBdIHx8IGpRdWVyeS5jc3NIb29rc1sgb3JpZ05hbWUgXTsKLQotICAgICAgICAgICAgICAgIC8v
IENoZWNrIGlmIHdlJ3JlIHNldHRpbmcgYSB2YWx1ZQotICAgICAgICAgICAgICAgIGlmICggdmFs
dWUgIT09IHVuZGVmaW5lZCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgPSB0eXBl
b2YgdmFsdWU7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnZlcnQgcmVsYXRpdmUg
bnVtYmVyIHN0cmluZ3MgKCs9IG9yIC09KSB0byByZWxhdGl2ZSBudW1iZXJzLiAjNzM0NQotICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCB0eXBlID09PSAic3RyaW5nIiAmJiAocmV0ID0gcnJl
bE51bS5leGVjKCB2YWx1ZSApKSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmFsdWUgPSAoIHJldFsxXSArIDEgKSAqIHJldFsyXSArIHBhcnNlRmxvYXQoIGpRdWVyeS5jc3Mo
IGVsZW0sIG5hbWUgKSApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGaXhl
cyBidWcgIzkyMzcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSA9ICJudW1i
ZXIiOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAg
ICAvLyBNYWtlIHN1cmUgdGhhdCBOYU4gYW5kIG51bGwgdmFsdWVzIGFyZW4ndCBzZXQuIFNlZTog
IzcxMTYKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICggdmFsdWUgPT0gbnVsbCB8fCB0eXBl
ID09PSAibnVtYmVyIiAmJiBpc05hTiggdmFsdWUgKSApIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICAgICAgICAgICAgICAvLyBJZiBhIG51bWJlciB3YXMgcGFzc2VkIGluLCBhZGQgJ3B4JyB0
byB0aGUgKGV4Y2VwdCBmb3IgY2VydGFpbiBDU1MgcHJvcGVydGllcykKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICggdHlwZSA9PT0gIm51bWJlciIgJiYgIWpRdWVyeS5jc3NOdW1iZXJbIG9y
aWdOYW1lIF0gKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlICs9ICJw
eCI7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAg
IC8vIElmIGEgaG9vayB3YXMgcHJvdmlkZWQsIHVzZSB0aGF0IHZhbHVlLCBvdGhlcndpc2UganVz
dCBzZXQgdGhlIHNwZWNpZmllZCB2YWx1ZQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAh
aG9va3MgfHwgISgic2V0IiBpbiBob29rcykgfHwgKHZhbHVlID0gaG9va3Muc2V0KCBlbGVtLCB2
YWx1ZSwgZXh0cmEgKSkgIT09IHVuZGVmaW5lZCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gV3JhcHBlZCB0byBwcmV2ZW50IElFIGZyb20gdGhyb3dpbmcgZXJyb3JzIHdo
ZW4gJ2ludmFsaWQnIHZhbHVlcyBhcmUgcHJvdmlkZWQKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gRml4ZXMgYnVnICM1NTA5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVb
IG5hbWUgXSA9IHZhbHVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNo
KGUpIHt9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgYSBob29rIHdhcyBwcm92aWRlZCBn
ZXQgdGhlIG5vbi1jb21wdXRlZCB2YWx1ZSBmcm9tIHRoZXJlCi0gICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoIGhvb2tzICYmICJnZXQiIGluIGhvb2tzICYmIChyZXQgPSBob29rcy5nZXQoIGVs
ZW0sIGZhbHNlLCBleHRyYSApKSAhPT0gdW5kZWZpbmVkICkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gcmV0OwotICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICAgICAgICAgICAgICAvLyBPdGhlcndpc2UganVzdCBnZXQgdGhlIHZhbHVlIGZy
b20gdGhlIHN0eWxlIG9iamVjdAotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0eWxl
WyBuYW1lIF07Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICB9LAotCi0gICAgICAgIGNzczog
ZnVuY3Rpb24oIGVsZW0sIG5hbWUsIG51bWVyaWMsIGV4dHJhICkgewotICAgICAgICAgICAgICAg
IHZhciB2YWwsIG51bSwgaG9va3MsCi0gICAgICAgICAgICAgICAgICAgICAgICBvcmlnTmFtZSA9
IGpRdWVyeS5jYW1lbENhc2UoIG5hbWUgKTsKLQotICAgICAgICAgICAgICAgIC8vIE1ha2Ugc3Vy
ZSB0aGF0IHdlJ3JlIHdvcmtpbmcgd2l0aCB0aGUgcmlnaHQgbmFtZQotICAgICAgICAgICAgICAg
IG5hbWUgPSBqUXVlcnkuY3NzUHJvcHNbIG9yaWdOYW1lIF0gfHwgKCBqUXVlcnkuY3NzUHJvcHNb
IG9yaWdOYW1lIF0gPSB2ZW5kb3JQcm9wTmFtZSggZWxlbS5zdHlsZSwgb3JpZ05hbWUgKSApOwot
Ci0gICAgICAgICAgICAgICAgLy8gZ2V0cyBob29rIGZvciB0aGUgcHJlZml4ZWQgdmVyc2lvbgot
ICAgICAgICAgICAgICAgIC8vIGZvbGxvd2VkIGJ5IHRoZSB1bnByZWZpeGVkIHZlcnNpb24KLSAg
ICAgICAgICAgICAgICBob29rcyA9IGpRdWVyeS5jc3NIb29rc1sgbmFtZSBdIHx8IGpRdWVyeS5j
c3NIb29rc1sgb3JpZ05hbWUgXTsKLQotICAgICAgICAgICAgICAgIC8vIElmIGEgaG9vayB3YXMg
cHJvdmlkZWQgZ2V0IHRoZSBjb21wdXRlZCB2YWx1ZSBmcm9tIHRoZXJlCi0gICAgICAgICAgICAg
ICAgaWYgKCBob29rcyAmJiAiZ2V0IiBpbiBob29rcyApIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHZhbCA9IGhvb2tzLmdldCggZWxlbSwgdHJ1ZSwgZXh0cmEgKTsKLSAgICAgICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBPdGhlcndpc2UsIGlmIGEgd2F5IHRvIGdldCB0aGUg
Y29tcHV0ZWQgdmFsdWUgZXhpc3RzLCB1c2UgdGhhdAotICAgICAgICAgICAgICAgIGlmICggdmFs
ID09PSB1bmRlZmluZWQgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YWwgPSBjdXJDU1Mo
IGVsZW0sIG5hbWUgKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvL2Nv
bnZlcnQgIm5vcm1hbCIgdG8gY29tcHV0ZWQgdmFsdWUKLSAgICAgICAgICAgICAgICBpZiAoIHZh
bCA9PT0gIm5vcm1hbCIgJiYgbmFtZSBpbiBjc3NOb3JtYWxUcmFuc2Zvcm0gKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICB2YWwgPSBjc3NOb3JtYWxUcmFuc2Zvcm1bIG5hbWUgXTsKLSAgICAg
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBSZXR1cm4sIGNvbnZlcnRpbmcgdG8g
bnVtYmVyIGlmIGZvcmNlZCBvciBhIHF1YWxpZmllciB3YXMgcHJvdmlkZWQgYW5kIHZhbCBsb29r
cyBudW1lcmljCi0gICAgICAgICAgICAgICAgaWYgKCBudW1lcmljIHx8IGV4dHJhICE9PSB1bmRl
ZmluZWQgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBudW0gPSBwYXJzZUZsb2F0KCB2YWwg
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1lcmljIHx8IGpRdWVyeS5pc051
bWVyaWMoIG51bSApID8gbnVtIHx8IDAgOiB2YWw7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIHJldHVybiB2YWw7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgLy8gQSBtZXRob2Qg
Zm9yIHF1aWNrbHkgc3dhcHBpbmcgaW4vb3V0IENTUyBwcm9wZXJ0aWVzIHRvIGdldCBjb3JyZWN0
IGNhbGN1bGF0aW9ucwotICAgICAgICBzd2FwOiBmdW5jdGlvbiggZWxlbSwgb3B0aW9ucywgY2Fs
bGJhY2sgKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHJldCwgbmFtZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIG9sZCA9IHt9OwotCi0gICAgICAgICAgICAgICAgLy8gUmVtZW1iZXIgdGhlIG9s
ZCB2YWx1ZXMsIGFuZCBpbnNlcnQgdGhlIG5ldyBvbmVzCi0gICAgICAgICAgICAgICAgZm9yICgg
bmFtZSBpbiBvcHRpb25zICkgewotICAgICAgICAgICAgICAgICAgICAgICAgb2xkWyBuYW1lIF0g
PSBlbGVtLnN0eWxlWyBuYW1lIF07Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbGVtLnN0eWxl
WyBuYW1lIF0gPSBvcHRpb25zWyBuYW1lIF07Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICAgICAgcmV0ID0gY2FsbGJhY2suY2FsbCggZWxlbSApOwotCi0gICAgICAgICAgICAgICAg
Ly8gUmV2ZXJ0IHRoZSBvbGQgdmFsdWVzCi0gICAgICAgICAgICAgICAgZm9yICggbmFtZSBpbiBv
cHRpb25zICkgewotICAgICAgICAgICAgICAgICAgICAgICAgZWxlbS5zdHlsZVsgbmFtZSBdID0g
b2xkWyBuYW1lIF07Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgcmV0dXJu
IHJldDsKLSAgICAgICAgfQotfSk7Ci0KLS8vIE5PVEU6IFRvIGFueSBmdXR1cmUgbWFpbnRhaW5l
ciwgd2UndmUgd2luZG93LmdldENvbXB1dGVkU3R5bGUKLS8vIGJlY2F1c2UganNkb20gb24gbm9k
ZS5qcyB3aWxsIGJyZWFrIHdpdGhvdXQgaXQuCi1pZiAoIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxl
ICkgewotICAgICAgICBjdXJDU1MgPSBmdW5jdGlvbiggZWxlbSwgbmFtZSApIHsKLSAgICAgICAg
ICAgICAgICB2YXIgcmV0LCB3aWR0aCwgbWluV2lkdGgsIG1heFdpZHRoLAotICAgICAgICAgICAg
ICAgICAgICAgICAgY29tcHV0ZWQgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSggZWxlbSwgbnVs
bCApLAotICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGUgPSBlbGVtLnN0eWxlOwotCi0gICAg
ICAgICAgICAgICAgaWYgKCBjb21wdXRlZCApIHsKLQotICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gZ2V0UHJvcGVydHlWYWx1ZSBpcyBvbmx5IG5lZWRlZCBmb3IgLmNzcygnZmlsdGVyJykgaW4g
SUU5LCBzZWUgIzEyNTM3Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXQgPSBjb21wdXRlZC5n
ZXRQcm9wZXJ0eVZhbHVlKCBuYW1lICkgfHwgY29tcHV0ZWRbIG5hbWUgXTsKLQotICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKCByZXQgPT09ICIiICYmICFqUXVlcnkuY29udGFpbnMoIGVsZW0u
b3duZXJEb2N1bWVudCwgZWxlbSApICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXQgPSBqUXVlcnkuc3R5bGUoIGVsZW0sIG5hbWUgKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gQSB0cmlidXRlIHRvIHRoZSAiYXdl
c29tZSBoYWNrIGJ5IERlYW4gRWR3YXJkcyIKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIENo
cm9tZSA8IDE3IGFuZCBTYWZhcmkgNS4wIHVzZXMgImNvbXB1dGVkIHZhbHVlIiBpbnN0ZWFkIG9m
ICJ1c2VkIHZhbHVlIiBmb3IgbWFyZ2luLXJpZ2h0Ci0gICAgICAgICAgICAgICAgICAgICAgICAv
LyBTYWZhcmkgNS4xLjcgKGF0IGxlYXN0KSByZXR1cm5zIHBlcmNlbnRhZ2UgZm9yIGEgbGFyZ2Vy
IHNldCBvZiB2YWx1ZXMsIGJ1dCB3aWR0aCBzZWVtcyB0byBiZSByZWxpYWJseSBwaXhlbHMKLSAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgaXMgYWdhaW5zdCB0aGUgQ1NTT00gZHJhZnQg
c3BlYzogaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3Nzb20vI3Jlc29sdmVkLXZhbHVlcwotICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCBybnVtbm9ucHgudGVzdCggcmV0ICkgJiYgcm1hcmdp
bi50ZXN0KCBuYW1lICkgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRo
ID0gc3R5bGUud2lkdGg7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbldpZHRo
ID0gc3R5bGUubWluV2lkdGg7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heFdp
ZHRoID0gc3R5bGUubWF4V2lkdGg7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3R5bGUubWluV2lkdGggPSBzdHlsZS5tYXhXaWR0aCA9IHN0eWxlLndpZHRoID0gcmV0OwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXQgPSBjb21wdXRlZC53aWR0aDsKLQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZS53aWR0aCA9IHdpZHRoOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZS5taW5XaWR0aCA9IG1pbldpZHRoOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZS5tYXhXaWR0aCA9IG1heFdpZHRoOwot
ICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgICAgIHJldHVybiByZXQ7Ci0gICAgICAgIH07Ci19IGVsc2UgaWYgKCBkb2N1bWVudC5kb2N1
bWVudEVsZW1lbnQuY3VycmVudFN0eWxlICkgewotICAgICAgICBjdXJDU1MgPSBmdW5jdGlvbigg
ZWxlbSwgbmFtZSApIHsKLSAgICAgICAgICAgICAgICB2YXIgbGVmdCwgcnNMZWZ0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0ID0gZWxlbS5jdXJyZW50U3R5bGUgJiYgZWxlbS5jdXJyZW50
U3R5bGVbIG5hbWUgXSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlID0gZWxlbS5zdHls
ZTsKLQotICAgICAgICAgICAgICAgIC8vIEF2b2lkIHNldHRpbmcgcmV0IHRvIGVtcHR5IHN0cmlu
ZyBoZXJlCi0gICAgICAgICAgICAgICAgLy8gc28gd2UgZG9uJ3QgZGVmYXVsdCB0byBhdXRvCi0g
ICAgICAgICAgICAgICAgaWYgKCByZXQgPT0gbnVsbCAmJiBzdHlsZSAmJiBzdHlsZVsgbmFtZSBd
ICkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gc3R5bGVbIG5hbWUgXTsKLSAgICAg
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBGcm9tIHRoZSBhd2Vzb21lIGhhY2sg
YnkgRGVhbiBFZHdhcmRzCi0gICAgICAgICAgICAgICAgLy8gaHR0cDovL2VyaWsuZWFlLm5ldC9h
cmNoaXZlcy8yMDA3LzA3LzI3LzE4LjU0LjE1LyNjb21tZW50LTEwMjI5MQotCi0gICAgICAgICAg
ICAgICAgLy8gSWYgd2UncmUgbm90IGRlYWxpbmcgd2l0aCBhIHJlZ3VsYXIgcGl4ZWwgbnVtYmVy
Ci0gICAgICAgICAgICAgICAgLy8gYnV0IGEgbnVtYmVyIHRoYXQgaGFzIGEgd2VpcmQgZW5kaW5n
LCB3ZSBuZWVkIHRvIGNvbnZlcnQgaXQgdG8gcGl4ZWxzCi0gICAgICAgICAgICAgICAgLy8gYnV0
IG5vdCBwb3NpdGlvbiBjc3MgYXR0cmlidXRlcywgYXMgdGhvc2UgYXJlIHByb3BvcnRpb25hbCB0
byB0aGUgcGFyZW50IGVsZW1lbnQgaW5zdGVhZAotICAgICAgICAgICAgICAgIC8vIGFuZCB3ZSBj
YW4ndCBtZWFzdXJlIHRoZSBwYXJlbnQgaW5zdGVhZCBiZWNhdXNlIGl0IG1pZ2h0IHRyaWdnZXIg
YSAic3RhY2tpbmcgZG9sbHMiIHByb2JsZW0KLSAgICAgICAgICAgICAgICBpZiAoIHJudW1ub25w
eC50ZXN0KCByZXQgKSAmJiAhcnBvc2l0aW9uLnRlc3QoIG5hbWUgKSApIHsKLQotICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gUmVtZW1iZXIgdGhlIG9yaWdpbmFsIHZhbHVlcwotICAgICAgICAg
ICAgICAgICAgICAgICAgbGVmdCA9IHN0eWxlLmxlZnQ7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICByc0xlZnQgPSBlbGVtLnJ1bnRpbWVTdHlsZSAmJiBlbGVtLnJ1bnRpbWVTdHlsZS5sZWZ0Owot
Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBQdXQgaW4gdGhlIG5ldyB2YWx1ZXMgdG8gZ2V0
IGEgY29tcHV0ZWQgdmFsdWUgb3V0Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHJzTGVm
dCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbS5ydW50aW1lU3R5bGUu
bGVmdCA9IGVsZW0uY3VycmVudFN0eWxlLmxlZnQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZS5sZWZ0ID0gbmFtZSA9PT0gImZvbnRTaXpl
IiA/ICIxZW0iIDogcmV0OwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gc3R5bGUucGl4
ZWxMZWZ0ICsgInB4IjsKLQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmV2ZXJ0IHRoZSBj
aGFuZ2VkIHZhbHVlcwotICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGUubGVmdCA9IGxlZnQ7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHJzTGVmdCApIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZWxlbS5ydW50aW1lU3R5bGUubGVmdCA9IHJzTGVmdDsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAg
ICByZXR1cm4gcmV0ID09PSAiIiA/ICJhdXRvIiA6IHJldDsKLSAgICAgICAgfTsKLX0KLQotZnVu
Y3Rpb24gc2V0UG9zaXRpdmVOdW1iZXIoIGVsZW0sIHZhbHVlLCBzdWJ0cmFjdCApIHsKLSAgICAg
ICAgdmFyIG1hdGNoZXMgPSBybnVtc3BsaXQuZXhlYyggdmFsdWUgKTsKLSAgICAgICAgcmV0dXJu
IG1hdGNoZXMgPwotICAgICAgICAgICAgICAgICAgICAgICAgTWF0aC5tYXgoIDAsIG1hdGNoZXNb
IDEgXSAtICggc3VidHJhY3QgfHwgMCApICkgKyAoIG1hdGNoZXNbIDIgXSB8fCAicHgiICkgOgot
ICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU7Ci19Ci0KLWZ1bmN0aW9uIGF1Z21lbnRXaWR0
aE9ySGVpZ2h0KCBlbGVtLCBuYW1lLCBleHRyYSwgaXNCb3JkZXJCb3ggKSB7Ci0gICAgICAgIHZh
ciBpID0gZXh0cmEgPT09ICggaXNCb3JkZXJCb3ggPyAiYm9yZGVyIiA6ICJjb250ZW50IiApID8K
LSAgICAgICAgICAgICAgICAvLyBJZiB3ZSBhbHJlYWR5IGhhdmUgdGhlIHJpZ2h0IG1lYXN1cmVt
ZW50LCBhdm9pZCBhdWdtZW50YXRpb24KLSAgICAgICAgICAgICAgICA0IDoKLSAgICAgICAgICAg
ICAgICAvLyBPdGhlcndpc2UgaW5pdGlhbGl6ZSBmb3IgaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCBw
cm9wZXJ0aWVzCi0gICAgICAgICAgICAgICAgbmFtZSA9PT0gIndpZHRoIiA/IDEgOiAwLAotCi0g
ICAgICAgICAgICAgICAgdmFsID0gMDsKLQotICAgICAgICBmb3IgKCA7IGkgPCA0OyBpICs9IDIg
KSB7Ci0gICAgICAgICAgICAgICAgLy8gYm90aCBib3ggbW9kZWxzIGV4Y2x1ZGUgbWFyZ2luLCBz
byBhZGQgaXQgaWYgd2Ugd2FudCBpdAotICAgICAgICAgICAgICAgIGlmICggZXh0cmEgPT09ICJt
YXJnaW4iICkgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2UgdXNlIGpRdWVyeS5jc3Mg
aW5zdGVhZCBvZiBjdXJDU1MgaGVyZQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmVjYXVz
ZSBvZiB0aGUgcmVsaWFibGVNYXJnaW5SaWdodCBDU1MgaG9vayEKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHZhbCArPSBqUXVlcnkuY3NzKCBlbGVtLCBleHRyYSArIGNzc0V4cGFuZFsgaSBdLCB0
cnVlICk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgLy8gRnJvbSB0aGlz
IHBvaW50IG9uIHdlIHVzZSBjdXJDU1MgZm9yIG1heGltdW0gcGVyZm9ybWFuY2UgKHJlbGV2YW50
IGluIGFuaW1hdGlvbnMpCi0gICAgICAgICAgICAgICAgaWYgKCBpc0JvcmRlckJveCApIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGJvcmRlci1ib3ggaW5jbHVkZXMgcGFkZGluZywgc28g
cmVtb3ZlIGl0IGlmIHdlIHdhbnQgY29udGVudAotICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCBleHRyYSA9PT0gImNvbnRlbnQiICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2YWwgLT0gcGFyc2VGbG9hdCggY3VyQ1NTKCBlbGVtLCAicGFkZGluZyIgKyBjc3NFeHBhbmRb
IGkgXSApICkgfHwgMDsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gYXQgdGhpcyBwb2ludCwgZXh0cmEgaXNuJ3QgYm9yZGVyIG5vciBtYXJn
aW4sIHNvIHJlbW92ZSBib3JkZXIKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICggZXh0cmEg
IT09ICJtYXJnaW4iICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgLT0g
cGFyc2VGbG9hdCggY3VyQ1NTKCBlbGVtLCAiYm9yZGVyIiArIGNzc0V4cGFuZFsgaSBdICsgIldp
ZHRoIiApICkgfHwgMDsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXQgdGhpcyBwb2ludCwgZXh0
cmEgaXNuJ3QgY29udGVudCwgc28gYWRkIHBhZGRpbmcKLSAgICAgICAgICAgICAgICAgICAgICAg
IHZhbCArPSBwYXJzZUZsb2F0KCBjdXJDU1MoIGVsZW0sICJwYWRkaW5nIiArIGNzc0V4cGFuZFsg
aSBdICkgKSB8fCAwOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBhdCB0aGlzIHBvaW50
LCBleHRyYSBpc24ndCBjb250ZW50IG5vciBwYWRkaW5nLCBzbyBhZGQgYm9yZGVyCi0gICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoIGV4dHJhICE9PSAicGFkZGluZyIgKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZhbCArPSBwYXJzZUZsb2F0KCBjdXJDU1MoIGVsZW0sICJi
b3JkZXIiICsgY3NzRXhwYW5kWyBpIF0gKyAiV2lkdGgiICkgKSB8fCAwOwotICAgICAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHJl
dHVybiB2YWw7Ci19Ci0KLWZ1bmN0aW9uIGdldFdpZHRoT3JIZWlnaHQoIGVsZW0sIG5hbWUsIGV4
dHJhICkgewotCi0gICAgICAgIC8vIFN0YXJ0IHdpdGggb2Zmc2V0IHByb3BlcnR5LCB3aGljaCBp
cyBlcXVpdmFsZW50IHRvIHRoZSBib3JkZXItYm94IHZhbHVlCi0gICAgICAgIHZhciB2YWwgPSBu
YW1lID09PSAid2lkdGgiID8gZWxlbS5vZmZzZXRXaWR0aCA6IGVsZW0ub2Zmc2V0SGVpZ2h0LAot
ICAgICAgICAgICAgICAgIHZhbHVlSXNCb3JkZXJCb3ggPSB0cnVlLAotICAgICAgICAgICAgICAg
IGlzQm9yZGVyQm94ID0galF1ZXJ5LnN1cHBvcnQuYm94U2l6aW5nICYmIGpRdWVyeS5jc3MoIGVs
ZW0sICJib3hTaXppbmciICkgPT09ICJib3JkZXItYm94IjsKLQotICAgICAgICAvLyBzb21lIG5v
bi1odG1sIGVsZW1lbnRzIHJldHVybiB1bmRlZmluZWQgZm9yIG9mZnNldFdpZHRoLCBzbyBjaGVj
ayBmb3IgbnVsbC91bmRlZmluZWQKLSAgICAgICAgLy8gc3ZnIC0gaHR0cHM6Ly9idWd6aWxsYS5t
b3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQ5Mjg1Ci0gICAgICAgIC8vIE1hdGhNTCAtIGh0
dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTQ5MTY2OAotICAgICAg
ICBpZiAoIHZhbCA8PSAwIHx8IHZhbCA9PSBudWxsICkgewotICAgICAgICAgICAgICAgIC8vIEZh
bGwgYmFjayB0byBjb21wdXRlZCB0aGVuIHVuY29tcHV0ZWQgY3NzIGlmIG5lY2Vzc2FyeQotICAg
ICAgICAgICAgICAgIHZhbCA9IGN1ckNTUyggZWxlbSwgbmFtZSApOwotICAgICAgICAgICAgICAg
IGlmICggdmFsIDwgMCB8fCB2YWwgPT0gbnVsbCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHZhbCA9IGVsZW0uc3R5bGVbIG5hbWUgXTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgICAgICAvLyBDb21wdXRlZCB1bml0IGlzIG5vdCBwaXhlbHMuIFN0b3AgaGVyZSBhbmQgcmV0
dXJuLgotICAgICAgICAgICAgICAgIGlmICggcm51bW5vbnB4LnRlc3QodmFsKSApIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWw7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICAgICAgLy8gd2UgbmVlZCB0aGUgY2hlY2sgZm9yIHN0eWxlIGluIGNhc2UgYSBicm93
c2VyIHdoaWNoIHJldHVybnMgdW5yZWxpYWJsZSB2YWx1ZXMKLSAgICAgICAgICAgICAgICAvLyBm
b3IgZ2V0Q29tcHV0ZWRTdHlsZSBzaWxlbnRseSBmYWxscyBiYWNrIHRvIHRoZSByZWxpYWJsZSBl
bGVtLnN0eWxlCi0gICAgICAgICAgICAgICAgdmFsdWVJc0JvcmRlckJveCA9IGlzQm9yZGVyQm94
ICYmICggalF1ZXJ5LnN1cHBvcnQuYm94U2l6aW5nUmVsaWFibGUgfHwgdmFsID09PSBlbGVtLnN0
eWxlWyBuYW1lIF0gKTsKLQotICAgICAgICAgICAgICAgIC8vIE5vcm1hbGl6ZSAiIiwgYXV0bywg
YW5kIHByZXBhcmUgZm9yIGV4dHJhCi0gICAgICAgICAgICAgICAgdmFsID0gcGFyc2VGbG9hdCgg
dmFsICkgfHwgMDsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIHVzZSB0aGUgYWN0aXZlIGJveC1z
aXppbmcgbW9kZWwgdG8gYWRkL3N1YnRyYWN0IGlycmVsZXZhbnQgc3R5bGVzCi0gICAgICAgIHJl
dHVybiAoIHZhbCArCi0gICAgICAgICAgICAgICAgYXVnbWVudFdpZHRoT3JIZWlnaHQoCi0gICAg
ICAgICAgICAgICAgICAgICAgICBlbGVtLAotICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhIHx8ICggaXNCb3JkZXJCb3ggPyAiYm9yZGVy
IiA6ICJjb250ZW50IiApLAotICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVJc0JvcmRlckJv
eAotICAgICAgICAgICAgICAgICkKLSAgICAgICAgKSArICJweCI7Ci19Ci0KLQotLy8gVHJ5IHRv
IGRldGVybWluZSB0aGUgZGVmYXVsdCBkaXNwbGF5IHZhbHVlIG9mIGFuIGVsZW1lbnQKLWZ1bmN0
aW9uIGNzc19kZWZhdWx0RGlzcGxheSggbm9kZU5hbWUgKSB7Ci0gICAgICAgIGlmICggZWxlbWRp
c3BsYXlbIG5vZGVOYW1lIF0gKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1kaXNwbGF5
WyBub2RlTmFtZSBdOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIGVsZW0gPSBqUXVlcnkoICI8
IiArIG5vZGVOYW1lICsgIj4iICkuYXBwZW5kVG8oIGRvY3VtZW50LmJvZHkgKSwKLSAgICAgICAg
ICAgICAgICBkaXNwbGF5ID0gZWxlbS5jc3MoImRpc3BsYXkiKTsKLSAgICAgICAgZWxlbS5yZW1v
dmUoKTsKLQotICAgICAgICAvLyBJZiB0aGUgc2ltcGxlIHdheSBmYWlscywKLSAgICAgICAgLy8g
Z2V0IGVsZW1lbnQncyByZWFsIGRlZmF1bHQgZGlzcGxheSBieSBhdHRhY2hpbmcgaXQgdG8gYSB0
ZW1wIGlmcmFtZQotICAgICAgICBpZiAoIGRpc3BsYXkgPT09ICJub25lIiB8fCBkaXNwbGF5ID09
PSAiIiApIHsKLSAgICAgICAgICAgICAgICAvLyBVc2UgdGhlIGFscmVhZHktY3JlYXRlZCBpZnJh
bWUgaWYgcG9zc2libGUKLSAgICAgICAgICAgICAgICBpZnJhbWUgPSBkb2N1bWVudC5ib2R5LmFw
cGVuZENoaWxkKAotICAgICAgICAgICAgICAgICAgICAgICAgaWZyYW1lIHx8IGpRdWVyeS5leHRl
bmQoIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpLCB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZyYW1lQm9yZGVyOiAwLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB3aWR0aDogMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0
OiAwCi0gICAgICAgICAgICAgICAgICAgICAgICB9KQotICAgICAgICAgICAgICAgICk7Ci0KLSAg
ICAgICAgICAgICAgICAvLyBDcmVhdGUgYSBjYWNoZWFibGUgY29weSBvZiB0aGUgaWZyYW1lIGRv
Y3VtZW50IG9uIGZpcnN0IGNhbGwuCi0gICAgICAgICAgICAgICAgLy8gSUUgYW5kIE9wZXJhIHdp
bGwgYWxsb3cgdXMgdG8gcmV1c2UgdGhlIGlmcmFtZURvYyB3aXRob3V0IHJlLXdyaXRpbmcgdGhl
IGZha2UgSFRNTAotICAgICAgICAgICAgICAgIC8vIGRvY3VtZW50IHRvIGl0OyBXZWJLaXQgJiBG
aXJlZm94IHdvbid0IGFsbG93IHJldXNpbmcgdGhlIGlmcmFtZSBkb2N1bWVudC4KLSAgICAgICAg
ICAgICAgICBpZiAoICFpZnJhbWVEb2MgfHwgIWlmcmFtZS5jcmVhdGVFbGVtZW50ICkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgaWZyYW1lRG9jID0gKCBpZnJhbWUuY29udGVudFdpbmRvdyB8
fCBpZnJhbWUuY29udGVudERvY3VtZW50ICkuZG9jdW1lbnQ7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBpZnJhbWVEb2Mud3JpdGUoIjwhZG9jdHlwZSBodG1sPjxodG1sPjxib2R5PiIpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgaWZyYW1lRG9jLmNsb3NlKCk7Ci0gICAgICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICAgICAgZWxlbSA9IGlmcmFtZURvYy5ib2R5LmFwcGVuZENoaWxkKCBp
ZnJhbWVEb2MuY3JlYXRlRWxlbWVudChub2RlTmFtZSkgKTsKLQotICAgICAgICAgICAgICAgIGRp
c3BsYXkgPSBjdXJDU1MoIGVsZW0sICJkaXNwbGF5IiApOwotICAgICAgICAgICAgICAgIGRvY3Vt
ZW50LmJvZHkucmVtb3ZlQ2hpbGQoIGlmcmFtZSApOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8g
U3RvcmUgdGhlIGNvcnJlY3QgZGVmYXVsdCBkaXNwbGF5Ci0gICAgICAgIGVsZW1kaXNwbGF5WyBu
b2RlTmFtZSBdID0gZGlzcGxheTsKLQotICAgICAgICByZXR1cm4gZGlzcGxheTsKLX0KLQotalF1
ZXJ5LmVhY2goWyAiaGVpZ2h0IiwgIndpZHRoIiBdLCBmdW5jdGlvbiggaSwgbmFtZSApIHsKLSAg
ICAgICAgalF1ZXJ5LmNzc0hvb2tzWyBuYW1lIF0gPSB7Ci0gICAgICAgICAgICAgICAgZ2V0OiBm
dW5jdGlvbiggZWxlbSwgY29tcHV0ZWQsIGV4dHJhICkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCBjb21wdXRlZCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
Y2VydGFpbiBlbGVtZW50cyBjYW4gaGF2ZSBkaW1lbnNpb24gaW5mbyBpZiB3ZSBpbnZpc2libHkg
c2hvdyB0aGVtCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhvd2V2ZXIsIGl0
IG11c3QgaGF2ZSBhIGN1cnJlbnQgZGlzcGxheSBzdHlsZSB0aGF0IHdvdWxkIGJlbmVmaXQgZnJv
bSB0aGlzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggZWxlbS5vZmZzZXRX
aWR0aCA9PT0gMCAmJiByZGlzcGxheXN3YXAudGVzdCggY3VyQ1NTKCBlbGVtLCAiZGlzcGxheSIg
KSApICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBq
UXVlcnkuc3dhcCggZWxlbSwgY3NzU2hvdywgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0V2lkdGhPckhlaWdodCgg
ZWxlbSwgbmFtZSwgZXh0cmEgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0V2lkdGhPckhlaWdo
dCggZWxlbSwgbmFtZSwgZXh0cmEgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0sCi0KLSAgICAg
ICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSwgZXh0cmEgKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gc2V0UG9zaXRpdmVOdW1iZXIoIGVsZW0sIHZhbHVlLCBl
eHRyYSA/Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1Z21lbnRXaWR0aE9ySGVp
Z2h0KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBqUXVlcnkuc3VwcG9ydC5ib3hTaXppbmcgJiYgalF1ZXJ5LmNzcygg
ZWxlbSwgImJveFNpemluZyIgKSA9PT0gImJvcmRlci1ib3giCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICkgOiAwCi0gICAgICAgICAgICAgICAgICAgICAgICApOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgfTsKLX0pOwotCi1pZiAoICFqUXVlcnkuc3VwcG9ydC5vcGFjaXR5
ICkgewotICAgICAgICBqUXVlcnkuY3NzSG9va3Mub3BhY2l0eSA9IHsKLSAgICAgICAgICAgICAg
ICBnZXQ6IGZ1bmN0aW9uKCBlbGVtLCBjb21wdXRlZCApIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIElFIHVzZXMgZmlsdGVycyBmb3Igb3BhY2l0eQotICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHJvcGFjaXR5LnRlc3QoIChjb21wdXRlZCAmJiBlbGVtLmN1cnJlbnRTdHlsZSA/
IGVsZW0uY3VycmVudFN0eWxlLmZpbHRlciA6IGVsZW0uc3R5bGUuZmlsdGVyKSB8fCAiIiApID8K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAwLjAxICogcGFyc2VGbG9hdCggUmVn
RXhwLiQxICkgKSArICIiIDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcHV0
ZWQgPyAiMSIgOiAiIjsKLSAgICAgICAgICAgICAgICB9LAotCi0gICAgICAgICAgICAgICAgc2V0
OiBmdW5jdGlvbiggZWxlbSwgdmFsdWUgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXIg
c3R5bGUgPSBlbGVtLnN0eWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJy
ZW50U3R5bGUgPSBlbGVtLmN1cnJlbnRTdHlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb3BhY2l0eSA9IGpRdWVyeS5pc051bWVyaWMoIHZhbHVlICkgPyAiYWxwaGEob3BhY2l0
eT0iICsgdmFsdWUgKiAxMDAgKyAiKSIgOiAiIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZmlsdGVyID0gY3VycmVudFN0eWxlICYmIGN1cnJlbnRTdHlsZS5maWx0ZXIgfHwgc3R5
bGUuZmlsdGVyIHx8ICIiOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBJRSBoYXMgdHJv
dWJsZSB3aXRoIG9wYWNpdHkgaWYgaXQgZG9lcyBub3QgaGF2ZSBsYXlvdXQKLSAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIEZvcmNlIGl0IGJ5IHNldHRpbmcgdGhlIHpvb20gbGV2ZWwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHN0eWxlLnpvb20gPSAxOwotCi0gICAgICAgICAgICAgICAgICAg
ICAgICAvLyBpZiBzZXR0aW5nIG9wYWNpdHkgdG8gMSwgYW5kIG5vIG90aGVyIGZpbHRlcnMgZXhp
c3QgLSBhdHRlbXB0IHRvIHJlbW92ZSBmaWx0ZXIgYXR0cmlidXRlICM2NjUyCi0gICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoIHZhbHVlID49IDEgJiYgalF1ZXJ5LnRyaW0oIGZpbHRlci5yZXBs
YWNlKCByYWxwaGEsICIiICkgKSA9PT0gIiIgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3R5bGUucmVtb3ZlQXR0cmlidXRlICkgewotCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIFNldHRpbmcgc3R5bGUuZmlsdGVyIHRvIG51bGwsICIiICYgIiAiIHN0aWxs
IGxlYXZlICJmaWx0ZXI6IiBpbiB0aGUgY3NzVGV4dAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBpZiAiZmlsdGVyOiIgaXMgcHJlc2VudCBhdCBhbGwsIGNsZWFyVHlwZSBpcyBk
aXNhYmxlZCwgd2Ugd2FudCB0byBhdm9pZCB0aGlzCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIHN0eWxlLnJlbW92ZUF0dHJpYnV0ZSBpcyBJRSBPbmx5LCBidXQgc28gYXBwYXJl
bnRseSBpcyB0aGlzIGNvZGUgcGF0aC4uLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdHlsZS5yZW1vdmVBdHRyaWJ1dGUoICJmaWx0ZXIiICk7Ci0KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gaWYgdGhlcmUgdGhlcmUgaXMgbm8gZmlsdGVyIHN0eWxlIGFwcGxp
ZWQgaW4gYSBjc3MgcnVsZSwgd2UgYXJlIGRvbmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCBjdXJyZW50U3R5bGUgJiYgIWN1cnJlbnRTdHlsZS5maWx0ZXIgKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIG90aGVyd2lzZSwgc2V0IG5ldyBmaWx0ZXIgdmFsdWVzCi0g
ICAgICAgICAgICAgICAgICAgICAgICBzdHlsZS5maWx0ZXIgPSByYWxwaGEudGVzdCggZmlsdGVy
ICkgPwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIucmVwbGFjZSggcmFs
cGhhLCBvcGFjaXR5ICkgOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIg
KyAiICIgKyBvcGFjaXR5OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLX0KLQotLy8g
VGhlc2UgaG9va3MgY2Fubm90IGJlIGFkZGVkIHVudGlsIERPTSByZWFkeSBiZWNhdXNlIHRoZSBz
dXBwb3J0IHRlc3QKLS8vIGZvciBpdCBpcyBub3QgcnVuIHVudGlsIGFmdGVyIERPTSByZWFkeQot
alF1ZXJ5KGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAoICFqUXVlcnkuc3VwcG9ydC5yZWxpYWJs
ZU1hcmdpblJpZ2h0ICkgewotICAgICAgICAgICAgICAgIGpRdWVyeS5jc3NIb29rcy5tYXJnaW5S
aWdodCA9IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24oIGVsZW0sIGNv
bXB1dGVkICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZWJLaXQgQnVn
IDEzMzQzIC0gZ2V0Q29tcHV0ZWRTdHlsZSByZXR1cm5zIHdyb25nIHZhbHVlIGZvciBtYXJnaW4t
cmlnaHQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV29yayBhcm91bmQgYnkg
dGVtcG9yYXJpbHkgc2V0dGluZyBlbGVtZW50IGRpc3BsYXkgdG8gaW5saW5lLWJsb2NrCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBqUXVlcnkuc3dhcCggZWxlbSwgeyAi
ZGlzcGxheSI6ICJpbmxpbmUtYmxvY2siIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggY29tcHV0ZWQgKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3VyQ1NTKCBlbGVtLCAi
bWFyZ2luUmlnaHQiICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICB9OwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gV2Vi
a2l0IGJ1ZzogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5MDg0Ci0g
ICAgICAgIC8vIGdldENvbXB1dGVkU3R5bGUgcmV0dXJucyBwZXJjZW50IHdoZW4gc3BlY2lmaWVk
IGZvciB0b3AvbGVmdC9ib3R0b20vcmlnaHQKLSAgICAgICAgLy8gcmF0aGVyIHRoYW4gbWFrZSB0
aGUgY3NzIG1vZHVsZSBkZXBlbmQgb24gdGhlIG9mZnNldCBtb2R1bGUsIHdlIGp1c3QgY2hlY2sg
Zm9yIGl0IGhlcmUKLSAgICAgICAgaWYgKCAhalF1ZXJ5LnN1cHBvcnQucGl4ZWxQb3NpdGlvbiAm
JiBqUXVlcnkuZm4ucG9zaXRpb24gKSB7Ci0gICAgICAgICAgICAgICAgalF1ZXJ5LmVhY2goIFsg
InRvcCIsICJsZWZ0IiBdLCBmdW5jdGlvbiggaSwgcHJvcCApIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGpRdWVyeS5jc3NIb29rc1sgcHJvcCBdID0gewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCBlbGVtLCBjb21wdXRlZCApIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGNvbXB1dGVkICkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJldCA9IGN1ckNTUygg
ZWxlbSwgcHJvcCApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gaWYgY3VyQ1NTIHJldHVybnMgcGVyY2VudGFnZSwgZmFsbGJhY2sgdG8gb2Zmc2V0
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
cm51bW5vbnB4LnRlc3QoIHJldCApID8galF1ZXJ5KCBlbGVtICkucG9zaXRpb24oKVsgcHJvcCBd
ICsgInB4IiA6IHJldDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg
ICAgIH07Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KLQotfSk7Ci0KLWlmICggalF1
ZXJ5LmV4cHIgJiYgalF1ZXJ5LmV4cHIuZmlsdGVycyApIHsKLSAgICAgICAgalF1ZXJ5LmV4cHIu
ZmlsdGVycy5oaWRkZW4gPSBmdW5jdGlvbiggZWxlbSApIHsKLSAgICAgICAgICAgICAgICByZXR1
cm4gKCBlbGVtLm9mZnNldFdpZHRoID09PSAwICYmIGVsZW0ub2Zmc2V0SGVpZ2h0ID09PSAwICkg
fHwgKCFqUXVlcnkuc3VwcG9ydC5yZWxpYWJsZUhpZGRlbk9mZnNldHMgJiYgKChlbGVtLnN0eWxl
ICYmIGVsZW0uc3R5bGUuZGlzcGxheSkgfHwgY3VyQ1NTKCBlbGVtLCAiZGlzcGxheSIgKSkgPT09
ICJub25lIik7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgalF1ZXJ5LmV4cHIuZmlsdGVycy52aXNp
YmxlID0gZnVuY3Rpb24oIGVsZW0gKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICFqUXVlcnku
ZXhwci5maWx0ZXJzLmhpZGRlbiggZWxlbSApOwotICAgICAgICB9OwotfQotCi0vLyBUaGVzZSBo
b29rcyBhcmUgdXNlZCBieSBhbmltYXRlIHRvIGV4cGFuZCBwcm9wZXJ0aWVzCi1qUXVlcnkuZWFj
aCh7Ci0gICAgICAgIG1hcmdpbjogIiIsCi0gICAgICAgIHBhZGRpbmc6ICIiLAotICAgICAgICBi
b3JkZXI6ICJXaWR0aCIKLX0sIGZ1bmN0aW9uKCBwcmVmaXgsIHN1ZmZpeCApIHsKLSAgICAgICAg
alF1ZXJ5LmNzc0hvb2tzWyBwcmVmaXggKyBzdWZmaXggXSA9IHsKLSAgICAgICAgICAgICAgICBl
eHBhbmQ6IGZ1bmN0aW9uKCB2YWx1ZSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhciBp
LAotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzc3VtZXMgYSBzaW5nbGUg
bnVtYmVyIGlmIG5vdCBhIHN0cmluZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
YXJ0cyA9IHR5cGVvZiB2YWx1ZSA9PT0gInN0cmluZyIgPyB2YWx1ZS5zcGxpdCgiICIpIDogWyB2
YWx1ZSBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBhbmRlZCA9IHt9Owot
Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKCBpID0gMDsgaSA8IDQ7IGkrKyApIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwYW5kZWRbIHByZWZpeCArIGNzc0V4cGFu
ZFsgaSBdICsgc3VmZml4IF0gPQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHBhcnRzWyBpIF0gfHwgcGFydHNbIGkgLSAyIF0gfHwgcGFydHNbIDAgXTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4cGFu
ZGVkOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLQotICAgICAgICBpZiAoICFybWFy
Z2luLnRlc3QoIHByZWZpeCApICkgewotICAgICAgICAgICAgICAgIGpRdWVyeS5jc3NIb29rc1sg
cHJlZml4ICsgc3VmZml4IF0uc2V0ID0gc2V0UG9zaXRpdmVOdW1iZXI7Ci0gICAgICAgIH0KLX0p
OwotdmFyIHIyMCA9IC8lMjAvZywKLSAgICAgICAgcmJyYWNrZXQgPSAvXFtcXSQvLAotICAgICAg
ICByQ1JMRiA9IC9ccj9cbi9nLAotICAgICAgICByaW5wdXQgPSAvXig/OmNvbG9yfGRhdGV8ZGF0
ZXRpbWV8ZGF0ZXRpbWUtbG9jYWx8ZW1haWx8aGlkZGVufG1vbnRofG51bWJlcnxwYXNzd29yZHxy
YW5nZXxzZWFyY2h8dGVsfHRleHR8dGltZXx1cmx8d2VlaykkL2ksCi0gICAgICAgIHJzZWxlY3RU
ZXh0YXJlYSA9IC9eKD86c2VsZWN0fHRleHRhcmVhKS9pOwotCi1qUXVlcnkuZm4uZXh0ZW5kKHsK
LSAgICAgICAgc2VyaWFsaXplOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4g
alF1ZXJ5LnBhcmFtKCB0aGlzLnNlcmlhbGl6ZUFycmF5KCkgKTsKLSAgICAgICAgfSwKLSAgICAg
ICAgc2VyaWFsaXplQXJyYXk6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIHJldHVybiB0
aGlzLm1hcChmdW5jdGlvbigpewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMu
ZWxlbWVudHMgPyBqUXVlcnkubWFrZUFycmF5KCB0aGlzLmVsZW1lbnRzICkgOiB0aGlzOwotICAg
ICAgICAgICAgICAgIH0pCi0gICAgICAgICAgICAgICAgLmZpbHRlcihmdW5jdGlvbigpewotICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubmFtZSAmJiAhdGhpcy5kaXNhYmxlZCAm
JgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHRoaXMuY2hlY2tlZCB8fCByc2Vs
ZWN0VGV4dGFyZWEudGVzdCggdGhpcy5ub2RlTmFtZSApIHx8Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmlucHV0LnRlc3QoIHRoaXMudHlwZSApICk7Ci0gICAgICAg
ICAgICAgICAgfSkKLSAgICAgICAgICAgICAgICAubWFwKGZ1bmN0aW9uKCBpLCBlbGVtICl7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB2YXIgdmFsID0galF1ZXJ5KCB0aGlzICkudmFsKCk7Ci0K
LSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWwgPT0gbnVsbCA/Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG51bGwgOgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBqUXVlcnkuaXNBcnJheSggdmFsICkgPwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGpRdWVyeS5tYXAoIHZhbCwgZnVuY3Rpb24oIHZhbCwgaSApewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgbmFtZTog
ZWxlbS5uYW1lLCB2YWx1ZTogdmFsLnJlcGxhY2UoIHJDUkxGLCAiXHJcbiIgKSB9OwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIDoKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWU6IGVsZW0ubmFtZSwgdmFsdWU6IHZhbC5yZXBs
YWNlKCByQ1JMRiwgIlxyXG4iICkgfTsKLSAgICAgICAgICAgICAgICB9KS5nZXQoKTsKLSAgICAg
ICAgfQotfSk7Ci0KLS8vU2VyaWFsaXplIGFuIGFycmF5IG9mIGZvcm0gZWxlbWVudHMgb3IgYSBz
ZXQgb2YKLS8va2V5L3ZhbHVlcyBpbnRvIGEgcXVlcnkgc3RyaW5nCi1qUXVlcnkucGFyYW0gPSBm
dW5jdGlvbiggYSwgdHJhZGl0aW9uYWwgKSB7Ci0gICAgICAgIHZhciBwcmVmaXgsCi0gICAgICAg
ICAgICAgICAgcyA9IFtdLAotICAgICAgICAgICAgICAgIGFkZCA9IGZ1bmN0aW9uKCBrZXksIHZh
bHVlICkgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdmFsdWUgaXMgYSBmdW5jdGlv
biwgaW52b2tlIGl0IGFuZCByZXR1cm4gaXRzIHZhbHVlCi0gICAgICAgICAgICAgICAgICAgICAg
ICB2YWx1ZSA9IGpRdWVyeS5pc0Z1bmN0aW9uKCB2YWx1ZSApID8gdmFsdWUoKSA6ICggdmFsdWUg
PT0gbnVsbCA/ICIiIDogdmFsdWUgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNbIHMubGVu
Z3RoIF0gPSBlbmNvZGVVUklDb21wb25lbnQoIGtleSApICsgIj0iICsgZW5jb2RlVVJJQ29tcG9u
ZW50KCB2YWx1ZSApOwotICAgICAgICAgICAgICAgIH07Ci0KLSAgICAgICAgLy8gU2V0IHRyYWRp
dGlvbmFsIHRvIHRydWUgZm9yIGpRdWVyeSA8PSAxLjMuMiBiZWhhdmlvci4KLSAgICAgICAgaWYg
KCB0cmFkaXRpb25hbCA9PT0gdW5kZWZpbmVkICkgewotICAgICAgICAgICAgICAgIHRyYWRpdGlv
bmFsID0galF1ZXJ5LmFqYXhTZXR0aW5ncyAmJiBqUXVlcnkuYWpheFNldHRpbmdzLnRyYWRpdGlv
bmFsOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gSWYgYW4gYXJyYXkgd2FzIHBhc3NlZCBpbiwg
YXNzdW1lIHRoYXQgaXQgaXMgYW4gYXJyYXkgb2YgZm9ybSBlbGVtZW50cy4KLSAgICAgICAgaWYg
KCBqUXVlcnkuaXNBcnJheSggYSApIHx8ICggYS5qcXVlcnkgJiYgIWpRdWVyeS5pc1BsYWluT2Jq
ZWN0KCBhICkgKSApIHsKLSAgICAgICAgICAgICAgICAvLyBTZXJpYWxpemUgdGhlIGZvcm0gZWxl
bWVudHMKLSAgICAgICAgICAgICAgICBqUXVlcnkuZWFjaCggYSwgZnVuY3Rpb24oKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBhZGQoIHRoaXMubmFtZSwgdGhpcy52YWx1ZSApOwotICAgICAg
ICAgICAgICAgIH0pOwotCi0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgLy8gSWYg
dHJhZGl0aW9uYWwsIGVuY29kZSB0aGUgIm9sZCIgd2F5ICh0aGUgd2F5IDEuMy4yIG9yIG9sZGVy
Ci0gICAgICAgICAgICAgICAgLy8gZGlkIGl0KSwgb3RoZXJ3aXNlIGVuY29kZSBwYXJhbXMgcmVj
dXJzaXZlbHkuCi0gICAgICAgICAgICAgICAgZm9yICggcHJlZml4IGluIGEgKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBidWlsZFBhcmFtcyggcHJlZml4LCBhWyBwcmVmaXggXSwgdHJhZGl0
aW9uYWwsIGFkZCApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8v
IFJldHVybiB0aGUgcmVzdWx0aW5nIHNlcmlhbGl6YXRpb24KLSAgICAgICAgcmV0dXJuIHMuam9p
biggIiYiICkucmVwbGFjZSggcjIwLCAiKyIgKTsKLX07Ci0KLWZ1bmN0aW9uIGJ1aWxkUGFyYW1z
KCBwcmVmaXgsIG9iaiwgdHJhZGl0aW9uYWwsIGFkZCApIHsKLSAgICAgICAgdmFyIG5hbWU7Ci0K
LSAgICAgICAgaWYgKCBqUXVlcnkuaXNBcnJheSggb2JqICkgKSB7Ci0gICAgICAgICAgICAgICAg
Ly8gU2VyaWFsaXplIGFycmF5IGl0ZW0uCi0gICAgICAgICAgICAgICAgalF1ZXJ5LmVhY2goIG9i
aiwgZnVuY3Rpb24oIGksIHYgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHRyYWRp
dGlvbmFsIHx8IHJicmFja2V0LnRlc3QoIHByZWZpeCApICkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBUcmVhdCBlYWNoIGFycmF5IGl0ZW0gYXMgYSBzY2FsYXIuCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZCggcHJlZml4LCB2ICk7Ci0KLSAgICAgICAg
ICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIElmIGFycmF5IGl0ZW0gaXMgbm9uLXNjYWxhciAoYXJyYXkgb3Igb2JqZWN0KSwgZW5jb2Rl
IGl0cwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBudW1lcmljIGluZGV4IHRv
IHJlc29sdmUgZGVzZXJpYWxpemF0aW9uIGFtYmlndWl0eSBpc3N1ZXMuCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCByYWNrIChhcyBvZiAxLjAuMCkgY2FuJ3Qg
Y3VycmVudGx5IGRlc2VyaWFsaXplCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IG5lc3RlZCBhcnJheXMgcHJvcGVybHksIGFuZCBhdHRlbXB0aW5nIHRvIGRvIHNvIG1heSBjYXVz
ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhIHNlcnZlciBlcnJvci4gUG9z
c2libGUgZml4ZXMgYXJlIHRvIG1vZGlmeSByYWNrJ3MKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gZGVzZXJpYWxpemF0aW9uIGFsZ29yaXRobSBvciB0byBwcm92aWRlIGFuIG9w
dGlvbiBvciBmbGFnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIGZvcmNl
IGFycmF5IHNlcmlhbGl6YXRpb24gdG8gYmUgc2hhbGxvdy4KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYnVpbGRQYXJhbXMoIHByZWZpeCArICJbIiArICggdHlwZW9mIHYgPT09ICJv
YmplY3QiID8gaSA6ICIiICkgKyAiXSIsIHYsIHRyYWRpdGlvbmFsLCBhZGQgKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9KTsKLQotICAgICAgICB9IGVsc2Ug
aWYgKCAhdHJhZGl0aW9uYWwgJiYgalF1ZXJ5LnR5cGUoIG9iaiApID09PSAib2JqZWN0IiApIHsK
LSAgICAgICAgICAgICAgICAvLyBTZXJpYWxpemUgb2JqZWN0IGl0ZW0uCi0gICAgICAgICAgICAg
ICAgZm9yICggbmFtZSBpbiBvYmogKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBidWlsZFBh
cmFtcyggcHJlZml4ICsgIlsiICsgbmFtZSArICJdIiwgb2JqWyBuYW1lIF0sIHRyYWRpdGlvbmFs
LCBhZGQgKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICAvLyBTZXJpYWxpemUgc2NhbGFyIGl0ZW0uCi0gICAgICAgICAgICAgICAgYWRkKCBw
cmVmaXgsIG9iaiApOwotICAgICAgICB9Ci19Ci12YXIKLSAgICAgICAgLy8gRG9jdW1lbnQgbG9j
YXRpb24KLSAgICAgICAgYWpheExvY1BhcnRzLAotICAgICAgICBhamF4TG9jYXRpb24sCi0KLSAg
ICAgICAgcmhhc2ggPSAvIy4qJC8sCi0gICAgICAgIHJoZWFkZXJzID0gL14oLio/KTpbIFx0XSoo
W15cclxuXSopXHI/JC9tZywgLy8gSUUgbGVhdmVzIGFuIFxyIGNoYXJhY3RlciBhdCBFT0wKLSAg
ICAgICAgLy8gIzc2NTMsICM4MTI1LCAjODE1MjogbG9jYWwgcHJvdG9jb2wgZGV0ZWN0aW9uCi0g
ICAgICAgIHJsb2NhbFByb3RvY29sID0gL14oPzphYm91dHxhcHB8YXBwXC1zdG9yYWdlfC4rXC1l
eHRlbnNpb258ZmlsZXxyZXN8d2lkZ2V0KTokLywKLSAgICAgICAgcm5vQ29udGVudCA9IC9eKD86
R0VUfEhFQUQpJC8sCi0gICAgICAgIHJwcm90b2NvbCA9IC9eXC9cLy8sCi0gICAgICAgIHJxdWVy
eSA9IC9cPy8sCi0gICAgICAgIHJzY3JpcHQgPSAvPHNjcmlwdFxiW148XSooPzooPyE8XC9zY3Jp
cHQ+KTxbXjxdKikqPFwvc2NyaXB0Pi9naSwKLSAgICAgICAgcnRzID0gLyhbPyZdKV89W14mXSov
LAotICAgICAgICBydXJsID0gL14oW1x3XCtcLlwtXSs6KSg/OlwvXC8oW15cLz8jOl0qKSg/Ojoo
XGQrKXwpfCkvLAotCi0gICAgICAgIC8vIEtlZXAgYSBjb3B5IG9mIHRoZSBvbGQgbG9hZCBtZXRo
b2QKLSAgICAgICAgX2xvYWQgPSBqUXVlcnkuZm4ubG9hZCwKLQotICAgICAgICAvKiBQcmVmaWx0
ZXJzCi0gICAgICAgICAqIDEpIFRoZXkgYXJlIHVzZWZ1bCB0byBpbnRyb2R1Y2UgY3VzdG9tIGRh
dGFUeXBlcyAoc2VlIGFqYXgvanNvbnAuanMgZm9yIGFuIGV4YW1wbGUpCi0gICAgICAgICAqIDIp
IFRoZXNlIGFyZSBjYWxsZWQ6Ci0gICAgICAgICAqICAgIC0gQkVGT1JFIGFza2luZyBmb3IgYSB0
cmFuc3BvcnQKLSAgICAgICAgICogICAgLSBBRlRFUiBwYXJhbSBzZXJpYWxpemF0aW9uIChzLmRh
dGEgaXMgYSBzdHJpbmcgaWYgcy5wcm9jZXNzRGF0YSBpcyB0cnVlKQotICAgICAgICAgKiAzKSBr
ZXkgaXMgdGhlIGRhdGFUeXBlCi0gICAgICAgICAqIDQpIHRoZSBjYXRjaGFsbCBzeW1ib2wgIioi
IGNhbiBiZSB1c2VkCi0gICAgICAgICAqIDUpIGV4ZWN1dGlvbiB3aWxsIHN0YXJ0IHdpdGggdHJh
bnNwb3J0IGRhdGFUeXBlIGFuZCBUSEVOIGNvbnRpbnVlIGRvd24gdG8gIioiIGlmIG5lZWRlZAot
ICAgICAgICAgKi8KLSAgICAgICAgcHJlZmlsdGVycyA9IHt9LAotCi0gICAgICAgIC8qIFRyYW5z
cG9ydHMgYmluZGluZ3MKLSAgICAgICAgICogMSkga2V5IGlzIHRoZSBkYXRhVHlwZQotICAgICAg
ICAgKiAyKSB0aGUgY2F0Y2hhbGwgc3ltYm9sICIqIiBjYW4gYmUgdXNlZAotICAgICAgICAgKiAz
KSBzZWxlY3Rpb24gd2lsbCBzdGFydCB3aXRoIHRyYW5zcG9ydCBkYXRhVHlwZSBhbmQgVEhFTiBn
byB0byAiKiIgaWYgbmVlZGVkCi0gICAgICAgICAqLwotICAgICAgICB0cmFuc3BvcnRzID0ge30s
Ci0KLSAgICAgICAgLy8gQXZvaWQgY29tbWVudC1wcm9sb2cgY2hhciBzZXF1ZW5jZSAoIzEwMDk4
KTsgbXVzdCBhcHBlYXNlIGxpbnQgYW5kIGV2YWRlIGNvbXByZXNzaW9uCi0gICAgICAgIGFsbFR5
cGVzID0gWyIqLyJdICsgWyIqIl07Ci0KLS8vICM4MTM4LCBJRSBtYXkgdGhyb3cgYW4gZXhjZXB0
aW9uIHdoZW4gYWNjZXNzaW5nCi0vLyBhIGZpZWxkIGZyb20gd2luZG93LmxvY2F0aW9uIGlmIGRv
Y3VtZW50LmRvbWFpbiBoYXMgYmVlbiBzZXQKLXRyeSB7Ci0gICAgICAgIGFqYXhMb2NhdGlvbiA9
IGxvY2F0aW9uLmhyZWY7Ci19IGNhdGNoKCBlICkgewotICAgICAgICAvLyBVc2UgdGhlIGhyZWYg
YXR0cmlidXRlIG9mIGFuIEEgZWxlbWVudAotICAgICAgICAvLyBzaW5jZSBJRSB3aWxsIG1vZGlm
eSBpdCBnaXZlbiBkb2N1bWVudC5sb2NhdGlvbgotICAgICAgICBhamF4TG9jYXRpb24gPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCAiYSIgKTsKLSAgICAgICAgYWpheExvY2F0aW9uLmhyZWYgPSAi
IjsKLSAgICAgICAgYWpheExvY2F0aW9uID0gYWpheExvY2F0aW9uLmhyZWY7Ci19Ci0KLS8vIFNl
Z21lbnQgbG9jYXRpb24gaW50byBwYXJ0cwotYWpheExvY1BhcnRzID0gcnVybC5leGVjKCBhamF4
TG9jYXRpb24udG9Mb3dlckNhc2UoKSApIHx8IFtdOwotCi0vLyBCYXNlICJjb25zdHJ1Y3RvciIg
Zm9yIGpRdWVyeS5hamF4UHJlZmlsdGVyIGFuZCBqUXVlcnkuYWpheFRyYW5zcG9ydAotZnVuY3Rp
b24gYWRkVG9QcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCBzdHJ1Y3R1cmUgKSB7Ci0KLSAgICAgICAg
Ly8gZGF0YVR5cGVFeHByZXNzaW9uIGlzIG9wdGlvbmFsIGFuZCBkZWZhdWx0cyB0byAiKiIKLSAg
ICAgICAgcmV0dXJuIGZ1bmN0aW9uKCBkYXRhVHlwZUV4cHJlc3Npb24sIGZ1bmMgKSB7Ci0KLSAg
ICAgICAgICAgICAgICBpZiAoIHR5cGVvZiBkYXRhVHlwZUV4cHJlc3Npb24gIT09ICJzdHJpbmci
ICkgewotICAgICAgICAgICAgICAgICAgICAgICAgZnVuYyA9IGRhdGFUeXBlRXhwcmVzc2lvbjsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlRXhwcmVzc2lvbiA9ICIqIjsKLSAgICAg
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICB2YXIgZGF0YVR5cGUsIGxpc3QsIHBsYWNl
QmVmb3JlLAotICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGVzID0gZGF0YVR5cGVFeHBy
ZXNzaW9uLnRvTG93ZXJDYXNlKCkuc3BsaXQoIGNvcmVfcnNwYWNlICksCi0gICAgICAgICAgICAg
ICAgICAgICAgICBpID0gMCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aCA9IGRhdGFU
eXBlcy5sZW5ndGg7Ci0KLSAgICAgICAgICAgICAgICBpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBm
dW5jICkgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBGb3IgZWFjaCBkYXRhVHlwZSBp
biB0aGUgZGF0YVR5cGVFeHByZXNzaW9uCi0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKCA7
IGkgPCBsZW5ndGg7IGkrKyApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0
YVR5cGUgPSBkYXRhVHlwZXNbIGkgXTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gV2UgY29udHJvbCBpZiB3ZSdyZSBhc2tlZCB0byBhZGQgYmVmb3JlCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIGFueSBleGlzdGluZyBlbGVtZW50Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBsYWNlQmVmb3JlID0gL15cKy8udGVzdCggZGF0YVR5cGUgKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBwbGFjZUJlZm9yZSApIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZSA9IGRhdGFUeXBl
LnN1YnN0ciggMSApIHx8ICIqIjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0ID0gc3RydWN0dXJlWyBkYXRhVHlw
ZSBdID0gc3RydWN0dXJlWyBkYXRhVHlwZSBdIHx8IFtdOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyB0aGVuIHdlIGFkZCB0byB0aGUgc3RydWN0dXJlIGFjY29yZGluZ2x5Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RbIHBsYWNlQmVmb3JlID8gInVuc2hp
ZnQiIDogInB1c2giIF0oIGZ1bmMgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgIH07Ci19Ci0KLS8vIEJhc2UgaW5zcGVjdGlvbiBmdW5jdGlv
biBmb3IgcHJlZmlsdGVycyBhbmQgdHJhbnNwb3J0cwotZnVuY3Rpb24gaW5zcGVjdFByZWZpbHRl
cnNPclRyYW5zcG9ydHMoIHN0cnVjdHVyZSwgb3B0aW9ucywgb3JpZ2luYWxPcHRpb25zLCBqcVhI
UiwKLSAgICAgICAgICAgICAgICBkYXRhVHlwZSAvKiBpbnRlcm5hbCAqLywgaW5zcGVjdGVkIC8q
IGludGVybmFsICovICkgewotCi0gICAgICAgIGRhdGFUeXBlID0gZGF0YVR5cGUgfHwgb3B0aW9u
cy5kYXRhVHlwZXNbIDAgXTsKLSAgICAgICAgaW5zcGVjdGVkID0gaW5zcGVjdGVkIHx8IHt9Owot
Ci0gICAgICAgIGluc3BlY3RlZFsgZGF0YVR5cGUgXSA9IHRydWU7Ci0KLSAgICAgICAgdmFyIHNl
bGVjdGlvbiwKLSAgICAgICAgICAgICAgICBsaXN0ID0gc3RydWN0dXJlWyBkYXRhVHlwZSBdLAot
ICAgICAgICAgICAgICAgIGkgPSAwLAotICAgICAgICAgICAgICAgIGxlbmd0aCA9IGxpc3QgPyBs
aXN0Lmxlbmd0aCA6IDAsCi0gICAgICAgICAgICAgICAgZXhlY3V0ZU9ubHkgPSAoIHN0cnVjdHVy
ZSA9PT0gcHJlZmlsdGVycyApOwotCi0gICAgICAgIGZvciAoIDsgaSA8IGxlbmd0aCAmJiAoIGV4
ZWN1dGVPbmx5IHx8ICFzZWxlY3Rpb24gKTsgaSsrICkgewotICAgICAgICAgICAgICAgIHNlbGVj
dGlvbiA9IGxpc3RbIGkgXSggb3B0aW9ucywgb3JpZ2luYWxPcHRpb25zLCBqcVhIUiApOwotICAg
ICAgICAgICAgICAgIC8vIElmIHdlIGdvdCByZWRpcmVjdGVkIHRvIGFub3RoZXIgZGF0YVR5cGUK
LSAgICAgICAgICAgICAgICAvLyB3ZSB0cnkgdGhlcmUgaWYgZXhlY3V0aW5nIG9ubHkgYW5kIG5v
dCBkb25lIGFscmVhZHkKLSAgICAgICAgICAgICAgICBpZiAoIHR5cGVvZiBzZWxlY3Rpb24gPT09
ICJzdHJpbmciICkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhZXhlY3V0ZU9ubHkg
fHwgaW5zcGVjdGVkWyBzZWxlY3Rpb24gXSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2VsZWN0aW9uID0gdW5kZWZpbmVkOwotICAgICAgICAgICAgICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5kYXRhVHlwZXMu
dW5zaGlmdCggc2VsZWN0aW9uICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
bGVjdGlvbiA9IGluc3BlY3RQcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlLCBvcHRpb25zLCBvcmln
aW5hbE9wdGlvbnMsIGpxWEhSLCBzZWxlY3Rpb24sIGluc3BlY3RlZCApOwotICAgICAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICAvLyBJ
ZiB3ZSdyZSBvbmx5IGV4ZWN1dGluZyBvciBub3RoaW5nIHdhcyBzZWxlY3RlZAotICAgICAgICAv
LyB3ZSB0cnkgdGhlIGNhdGNoYWxsIGRhdGFUeXBlIGlmIG5vdCBkb25lIGFscmVhZHkKLSAgICAg
ICAgaWYgKCAoIGV4ZWN1dGVPbmx5IHx8ICFzZWxlY3Rpb24gKSAmJiAhaW5zcGVjdGVkWyAiKiIg
XSApIHsKLSAgICAgICAgICAgICAgICBzZWxlY3Rpb24gPSBpbnNwZWN0UHJlZmlsdGVyc09yVHJh
bnNwb3J0cygKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlLCBvcHRp
b25zLCBvcmlnaW5hbE9wdGlvbnMsIGpxWEhSLCAiKiIsIGluc3BlY3RlZCApOwotICAgICAgICB9
Ci0gICAgICAgIC8vIHVubmVjZXNzYXJ5IHdoZW4gb25seSBleGVjdXRpbmcgKHByZWZpbHRlcnMp
Ci0gICAgICAgIC8vIGJ1dCBpdCdsbCBiZSBpZ25vcmVkIGJ5IHRoZSBjYWxsZXIgaW4gdGhhdCBj
YXNlCi0gICAgICAgIHJldHVybiBzZWxlY3Rpb247Ci19Ci0KLS8vIEEgc3BlY2lhbCBleHRlbmQg
Zm9yIGFqYXggb3B0aW9ucwotLy8gdGhhdCB0YWtlcyAiZmxhdCIgb3B0aW9ucyAobm90IHRvIGJl
IGRlZXAgZXh0ZW5kZWQpCi0vLyBGaXhlcyAjOTg4NwotZnVuY3Rpb24gYWpheEV4dGVuZCggdGFy
Z2V0LCBzcmMgKSB7Ci0gICAgICAgIHZhciBrZXksIGRlZXAsCi0gICAgICAgICAgICAgICAgZmxh
dE9wdGlvbnMgPSBqUXVlcnkuYWpheFNldHRpbmdzLmZsYXRPcHRpb25zIHx8IHt9OwotICAgICAg
ICBmb3IgKCBrZXkgaW4gc3JjICkgewotICAgICAgICAgICAgICAgIGlmICggc3JjWyBrZXkgXSAh
PT0gdW5kZWZpbmVkICkgewotICAgICAgICAgICAgICAgICAgICAgICAgKCBmbGF0T3B0aW9uc1sg
a2V5IF0gPyB0YXJnZXQgOiAoIGRlZXAgfHwgKCBkZWVwID0ge30gKSApIClbIGtleSBdID0gc3Jj
WyBrZXkgXTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCBkZWVw
ICkgewotICAgICAgICAgICAgICAgIGpRdWVyeS5leHRlbmQoIHRydWUsIHRhcmdldCwgZGVlcCAp
OwotICAgICAgICB9Ci19Ci0KLWpRdWVyeS5mbi5sb2FkID0gZnVuY3Rpb24oIHVybCwgcGFyYW1z
LCBjYWxsYmFjayApIHsKLSAgICAgICAgaWYgKCB0eXBlb2YgdXJsICE9PSAic3RyaW5nIiAmJiBf
bG9hZCApIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gX2xvYWQuYXBwbHkoIHRoaXMsIGFyZ3Vt
ZW50cyApOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gRG9uJ3QgZG8gYSByZXF1ZXN0IGlmIG5v
IGVsZW1lbnRzIGFyZSBiZWluZyByZXF1ZXN0ZWQKLSAgICAgICAgaWYgKCAhdGhpcy5sZW5ndGgg
KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgICAgIH0KLQotICAgICAgICB2
YXIgc2VsZWN0b3IsIHR5cGUsIHJlc3BvbnNlLAotICAgICAgICAgICAgICAgIHNlbGYgPSB0aGlz
LAotICAgICAgICAgICAgICAgIG9mZiA9IHVybC5pbmRleE9mKCIgIik7Ci0KLSAgICAgICAgaWYg
KCBvZmYgPj0gMCApIHsKLSAgICAgICAgICAgICAgICBzZWxlY3RvciA9IHVybC5zbGljZSggb2Zm
LCB1cmwubGVuZ3RoICk7Ci0gICAgICAgICAgICAgICAgdXJsID0gdXJsLnNsaWNlKCAwLCBvZmYg
KTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIElmIGl0J3MgYSBmdW5jdGlvbgotICAgICAgICBp
ZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBwYXJhbXMgKSApIHsKLQotICAgICAgICAgICAgICAgIC8v
IFdlIGFzc3VtZSB0aGF0IGl0J3MgdGhlIGNhbGxiYWNrCi0gICAgICAgICAgICAgICAgY2FsbGJh
Y2sgPSBwYXJhbXM7Ci0gICAgICAgICAgICAgICAgcGFyYW1zID0gdW5kZWZpbmVkOwotCi0gICAg
ICAgIC8vIE90aGVyd2lzZSwgYnVpbGQgYSBwYXJhbSBzdHJpbmcKLSAgICAgICAgfSBlbHNlIGlm
ICggcGFyYW1zICYmIHR5cGVvZiBwYXJhbXMgPT09ICJvYmplY3QiICkgewotICAgICAgICAgICAg
ICAgIHR5cGUgPSAiUE9TVCI7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBSZXF1ZXN0IHRoZSBy
ZW1vdGUgZG9jdW1lbnQKLSAgICAgICAgalF1ZXJ5LmFqYXgoewotICAgICAgICAgICAgICAgIHVy
bDogdXJsLAotCi0gICAgICAgICAgICAgICAgLy8gaWYgInR5cGUiIHZhcmlhYmxlIGlzIHVuZGVm
aW5lZCwgdGhlbiAiR0VUIiBtZXRob2Qgd2lsbCBiZSB1c2VkCi0gICAgICAgICAgICAgICAgdHlw
ZTogdHlwZSwKLSAgICAgICAgICAgICAgICBkYXRhVHlwZTogImh0bWwiLAotICAgICAgICAgICAg
ICAgIGRhdGE6IHBhcmFtcywKLSAgICAgICAgICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24oIGpx
WEhSLCBzdGF0dXMgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGNhbGxiYWNrICkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmVhY2goIGNhbGxiYWNrLCBy
ZXNwb25zZSB8fCBbIGpxWEhSLnJlc3BvbnNlVGV4dCwgc3RhdHVzLCBqcVhIUiBdICk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICB9KS5kb25l
KGZ1bmN0aW9uKCByZXNwb25zZVRleHQgKSB7Ci0KLSAgICAgICAgICAgICAgICAvLyBTYXZlIHJl
c3BvbnNlIGZvciB1c2UgaW4gY29tcGxldGUgY2FsbGJhY2sKLSAgICAgICAgICAgICAgICByZXNw
b25zZSA9IGFyZ3VtZW50czsKLQotICAgICAgICAgICAgICAgIC8vIFNlZSBpZiBhIHNlbGVjdG9y
IHdhcyBzcGVjaWZpZWQKLSAgICAgICAgICAgICAgICBzZWxmLmh0bWwoIHNlbGVjdG9yID8KLQot
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIGEgZHVtbXkgZGl2IHRvIGhvbGQgdGhl
IHJlc3VsdHMKLSAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeSgiPGRpdj4iKQotCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluamVjdCB0aGUgY29udGVudHMgb2YgdGhl
IGRvY3VtZW50IGluLCByZW1vdmluZyB0aGUgc2NyaXB0cwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyB0byBhdm9pZCBhbnkgJ1Blcm1pc3Npb24gRGVuaWVkJyBlcnJvcnMgaW4g
SUUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmFwcGVuZCggcmVzcG9uc2VUZXh0
LnJlcGxhY2UoIHJzY3JpcHQsICIiICkgKQotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIExvY2F0ZSB0aGUgc3BlY2lmaWVkIGVsZW1lbnRzCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC5maW5kKCBzZWxlY3RvciApIDoKLQotICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gSWYgbm90LCBqdXN0IGluamVjdCB0aGUgZnVsbCByZXN1bHQKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHJlc3BvbnNlVGV4dCApOwotCi0gICAgICAgIH0pOwotCi0gICAgICAgIHJldHVy
biB0aGlzOwotfTsKLQotLy8gQXR0YWNoIGEgYnVuY2ggb2YgZnVuY3Rpb25zIGZvciBoYW5kbGlu
ZyBjb21tb24gQUpBWCBldmVudHMKLWpRdWVyeS5lYWNoKCAiYWpheFN0YXJ0IGFqYXhTdG9wIGFq
YXhDb21wbGV0ZSBhamF4RXJyb3IgYWpheFN1Y2Nlc3MgYWpheFNlbmQiLnNwbGl0KCAiICIgKSwg
ZnVuY3Rpb24oIGksIG8gKXsKLSAgICAgICAgalF1ZXJ5LmZuWyBvIF0gPSBmdW5jdGlvbiggZiAp
ewotICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9uKCBvLCBmICk7Ci0gICAgICAgIH07Ci19
KTsKLQotalF1ZXJ5LmVhY2goIFsgImdldCIsICJwb3N0IiBdLCBmdW5jdGlvbiggaSwgbWV0aG9k
ICkgewotICAgICAgICBqUXVlcnlbIG1ldGhvZCBdID0gZnVuY3Rpb24oIHVybCwgZGF0YSwgY2Fs
bGJhY2ssIHR5cGUgKSB7Ci0gICAgICAgICAgICAgICAgLy8gc2hpZnQgYXJndW1lbnRzIGlmIGRh
dGEgYXJndW1lbnQgd2FzIG9taXR0ZWQKLSAgICAgICAgICAgICAgICBpZiAoIGpRdWVyeS5pc0Z1
bmN0aW9uKCBkYXRhICkgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0eXBlID0gdHlwZSB8
fCBjYWxsYmFjazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrID0gZGF0YTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSB1bmRlZmluZWQ7Ci0gICAgICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICAgICAgcmV0dXJuIGpRdWVyeS5hamF4KHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHR5cGU6IG1ldGhvZCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHVybDogdXJs
LAotICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogZGF0YSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHN1Y2Nlc3M6IGNhbGxiYWNrLAotICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVR5
cGU6IHR5cGUKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgfTsKLX0pOwotCi1qUXVlcnku
ZXh0ZW5kKHsKLQotICAgICAgICBnZXRTY3JpcHQ6IGZ1bmN0aW9uKCB1cmwsIGNhbGxiYWNrICkg
ewotICAgICAgICAgICAgICAgIHJldHVybiBqUXVlcnkuZ2V0KCB1cmwsIHVuZGVmaW5lZCwgY2Fs
bGJhY2ssICJzY3JpcHQiICk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgZ2V0SlNPTjogZnVuY3Rp
b24oIHVybCwgZGF0YSwgY2FsbGJhY2sgKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGpRdWVy
eS5nZXQoIHVybCwgZGF0YSwgY2FsbGJhY2ssICJqc29uIiApOwotICAgICAgICB9LAotCi0gICAg
ICAgIC8vIENyZWF0ZXMgYSBmdWxsIGZsZWRnZWQgc2V0dGluZ3Mgb2JqZWN0IGludG8gdGFyZ2V0
Ci0gICAgICAgIC8vIHdpdGggYm90aCBhamF4U2V0dGluZ3MgYW5kIHNldHRpbmdzIGZpZWxkcy4K
LSAgICAgICAgLy8gSWYgdGFyZ2V0IGlzIG9taXR0ZWQsIHdyaXRlcyBpbnRvIGFqYXhTZXR0aW5n
cy4KLSAgICAgICAgYWpheFNldHVwOiBmdW5jdGlvbiggdGFyZ2V0LCBzZXR0aW5ncyApIHsKLSAg
ICAgICAgICAgICAgICBpZiAoIHNldHRpbmdzICkgewotICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gQnVpbGRpbmcgYSBzZXR0aW5ncyBvYmplY3QKLSAgICAgICAgICAgICAgICAgICAgICAgIGFq
YXhFeHRlbmQoIHRhcmdldCwgalF1ZXJ5LmFqYXhTZXR0aW5ncyApOwotICAgICAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBFeHRlbmRpbmcgYWpheFNldHRp
bmdzCi0gICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncyA9IHRhcmdldDsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHRhcmdldCA9IGpRdWVyeS5hamF4U2V0dGluZ3M7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIGFqYXhFeHRlbmQoIHRhcmdldCwgc2V0dGluZ3MgKTsK
LSAgICAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0OwotICAgICAgICB9LAotCi0gICAgICAgIGFq
YXhTZXR0aW5nczogewotICAgICAgICAgICAgICAgIHVybDogYWpheExvY2F0aW9uLAotICAgICAg
ICAgICAgICAgIGlzTG9jYWw6IHJsb2NhbFByb3RvY29sLnRlc3QoIGFqYXhMb2NQYXJ0c1sgMSBd
ICksCi0gICAgICAgICAgICAgICAgZ2xvYmFsOiB0cnVlLAotICAgICAgICAgICAgICAgIHR5cGU6
ICJHRVQiLAotICAgICAgICAgICAgICAgIGNvbnRlbnRUeXBlOiAiYXBwbGljYXRpb24veC13d3ct
Zm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PVVURi04IiwKLSAgICAgICAgICAgICAgICBwcm9jZXNz
RGF0YTogdHJ1ZSwKLSAgICAgICAgICAgICAgICBhc3luYzogdHJ1ZSwKLSAgICAgICAgICAgICAg
ICAvKgotICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDAsCi0gICAgICAgICAgICAgICAgZGF0YTog
bnVsbCwKLSAgICAgICAgICAgICAgICBkYXRhVHlwZTogbnVsbCwKLSAgICAgICAgICAgICAgICB1
c2VybmFtZTogbnVsbCwKLSAgICAgICAgICAgICAgICBwYXNzd29yZDogbnVsbCwKLSAgICAgICAg
ICAgICAgICBjYWNoZTogbnVsbCwKLSAgICAgICAgICAgICAgICB0aHJvd3M6IGZhbHNlLAotICAg
ICAgICAgICAgICAgIHRyYWRpdGlvbmFsOiBmYWxzZSwKLSAgICAgICAgICAgICAgICBoZWFkZXJz
OiB7fSwKLSAgICAgICAgICAgICAgICAqLwotCi0gICAgICAgICAgICAgICAgYWNjZXB0czogewot
ICAgICAgICAgICAgICAgICAgICAgICAgeG1sOiAiYXBwbGljYXRpb24veG1sLCB0ZXh0L3htbCIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICBodG1sOiAidGV4dC9odG1sIiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHRleHQ6ICJ0ZXh0L3BsYWluIiwKLSAgICAgICAgICAgICAgICAgICAgICAg
IGpzb246ICJhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L2phdmFzY3JpcHQiLAotICAgICAgICAgICAg
ICAgICAgICAgICAgIioiOiBhbGxUeXBlcwotICAgICAgICAgICAgICAgIH0sCi0KLSAgICAgICAg
ICAgICAgICBjb250ZW50czogewotICAgICAgICAgICAgICAgICAgICAgICAgeG1sOiAveG1sLywK
LSAgICAgICAgICAgICAgICAgICAgICAgIGh0bWw6IC9odG1sLywKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGpzb246IC9qc29uLwotICAgICAgICAgICAgICAgIH0sCi0KLSAgICAgICAgICAgICAg
ICByZXNwb25zZUZpZWxkczogewotICAgICAgICAgICAgICAgICAgICAgICAgeG1sOiAicmVzcG9u
c2VYTUwiLAotICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogInJlc3BvbnNlVGV4dCIKLSAg
ICAgICAgICAgICAgICB9LAotCi0gICAgICAgICAgICAgICAgLy8gTGlzdCBvZiBkYXRhIGNvbnZl
cnRlcnMKLSAgICAgICAgICAgICAgICAvLyAxKSBrZXkgZm9ybWF0IGlzICJzb3VyY2VfdHlwZSBk
ZXN0aW5hdGlvbl90eXBlIiAoYSBzaW5nbGUgc3BhY2UgaW4tYmV0d2VlbikKLSAgICAgICAgICAg
ICAgICAvLyAyKSB0aGUgY2F0Y2hhbGwgc3ltYm9sICIqIiBjYW4gYmUgdXNlZCBmb3Igc291cmNl
X3R5cGUKLSAgICAgICAgICAgICAgICBjb252ZXJ0ZXJzOiB7Ci0KLSAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIENvbnZlcnQgYW55dGhpbmcgdG8gdGV4dAotICAgICAgICAgICAgICAgICAgICAg
ICAgIiogdGV4dCI6IHdpbmRvdy5TdHJpbmcsCi0KLSAgICAgICAgICAgICAgICAgICAgICAgIC8v
IFRleHQgdG8gaHRtbCAodHJ1ZSA9IG5vIHRyYW5zZm9ybWF0aW9uKQotICAgICAgICAgICAgICAg
ICAgICAgICAgInRleHQgaHRtbCI6IHRydWUsCi0KLSAgICAgICAgICAgICAgICAgICAgICAgIC8v
IEV2YWx1YXRlIHRleHQgYXMgYSBqc29uIGV4cHJlc3Npb24KLSAgICAgICAgICAgICAgICAgICAg
ICAgICJ0ZXh0IGpzb24iOiBqUXVlcnkucGFyc2VKU09OLAotCi0gICAgICAgICAgICAgICAgICAg
ICAgICAvLyBQYXJzZSB0ZXh0IGFzIHhtbAotICAgICAgICAgICAgICAgICAgICAgICAgInRleHQg
eG1sIjogalF1ZXJ5LnBhcnNlWE1MCi0gICAgICAgICAgICAgICAgfSwKLQotICAgICAgICAgICAg
ICAgIC8vIEZvciBvcHRpb25zIHRoYXQgc2hvdWxkbid0IGJlIGRlZXAgZXh0ZW5kZWQ6Ci0gICAg
ICAgICAgICAgICAgLy8geW91IGNhbiBhZGQgeW91ciBvd24gY3VzdG9tIG9wdGlvbnMgaGVyZSBp
ZgotICAgICAgICAgICAgICAgIC8vIGFuZCB3aGVuIHlvdSBjcmVhdGUgb25lIHRoYXQgc2hvdWxk
bid0IGJlCi0gICAgICAgICAgICAgICAgLy8gZGVlcCBleHRlbmRlZCAoc2VlIGFqYXhFeHRlbmQp
Ci0gICAgICAgICAgICAgICAgZmxhdE9wdGlvbnM6IHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRleHQ6IHRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHRydWUKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgIH0sCi0KLSAgICAgICAgYWpheFByZWZpbHRlcjogYWRkVG9Q
cmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCBwcmVmaWx0ZXJzICksCi0gICAgICAgIGFqYXhUcmFuc3Bv
cnQ6IGFkZFRvUHJlZmlsdGVyc09yVHJhbnNwb3J0cyggdHJhbnNwb3J0cyApLAotCi0gICAgICAg
IC8vIE1haW4gbWV0aG9kCi0gICAgICAgIGFqYXg6IGZ1bmN0aW9uKCB1cmwsIG9wdGlvbnMgKSB7
Ci0KLSAgICAgICAgICAgICAgICAvLyBJZiB1cmwgaXMgYW4gb2JqZWN0LCBzaW11bGF0ZSBwcmUt
MS41IHNpZ25hdHVyZQotICAgICAgICAgICAgICAgIGlmICggdHlwZW9mIHVybCA9PT0gIm9iamVj
dCIgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zID0gdXJsOwotICAgICAgICAg
ICAgICAgICAgICAgICAgdXJsID0gdW5kZWZpbmVkOwotICAgICAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgICAgIC8vIEZvcmNlIG9wdGlvbnMgdG8gYmUgYW4gb2JqZWN0Ci0gICAgICAgICAg
ICAgICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307Ci0KLSAgICAgICAgICAgICAgICB2YXIgLy8g
aWZNb2RpZmllZCBrZXkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmTW9kaWZpZWRLZXksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXNwb25zZSBoZWFkZXJzCi0gICAgICAgICAgICAg
ICAgICAgICAgICByZXNwb25zZUhlYWRlcnNTdHJpbmcsCi0gICAgICAgICAgICAgICAgICAgICAg
ICByZXNwb25zZUhlYWRlcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyB0cmFuc3BvcnQK
LSAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9ydCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIHRpbWVvdXQgaGFuZGxlCi0gICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0VGlt
ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBDcm9zcy1kb21haW4gZGV0ZWN0aW9uIHZh
cnMKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gVG8ga25vdyBpZiBnbG9iYWwgZXZlbnRzIGFyZSB0byBiZSBkaXNwYXRjaGVkCi0gICAg
ICAgICAgICAgICAgICAgICAgICBmaXJlR2xvYmFscywKLSAgICAgICAgICAgICAgICAgICAgICAg
IC8vIExvb3AgdmFyaWFibGUKLSAgICAgICAgICAgICAgICAgICAgICAgIGksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAvLyBDcmVhdGUgdGhlIGZpbmFsIG9wdGlvbnMgb2JqZWN0Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBzID0galF1ZXJ5LmFqYXhTZXR1cCgge30sIG9wdGlvbnMgKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIENhbGxiYWNrcyBjb250ZXh0Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBjYWxsYmFja0NvbnRleHQgPSBzLmNvbnRleHQgfHwgcywKLSAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIENvbnRleHQgZm9yIGdsb2JhbCBldmVudHMKLSAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIEl0J3MgdGhlIGNhbGxiYWNrQ29udGV4dCBpZiBvbmUgd2FzIHByb3ZpZGVk
IGluIHRoZSBvcHRpb25zCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgaWYgaXQncyBh
IERPTSBub2RlIG9yIGEgalF1ZXJ5IGNvbGxlY3Rpb24KLSAgICAgICAgICAgICAgICAgICAgICAg
IGdsb2JhbEV2ZW50Q29udGV4dCA9IGNhbGxiYWNrQ29udGV4dCAhPT0gcyAmJgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoIGNhbGxiYWNrQ29udGV4dC5ub2RlVHlwZSB8fCBjYWxs
YmFja0NvbnRleHQgaW5zdGFuY2VvZiBqUXVlcnkgKSA/Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoIGNhbGxiYWNrQ29udGV4dCApIDogalF1
ZXJ5LmV2ZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGVmZXJyZWRzCi0gICAgICAg
ICAgICAgICAgICAgICAgICBkZWZlcnJlZCA9IGpRdWVyeS5EZWZlcnJlZCgpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgY29tcGxldGVEZWZlcnJlZCA9IGpRdWVyeS5DYWxsYmFja3MoICJvbmNl
IG1lbW9yeSIgKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN0YXR1cy1kZXBlbmRlbnQg
Y2FsbGJhY2tzCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXNDb2RlID0gcy5zdGF0dXND
b2RlIHx8IHt9LAotICAgICAgICAgICAgICAgICAgICAgICAgLy8gSGVhZGVycyAodGhleSBhcmUg
c2VudCBhbGwgYXQgb25jZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RIZWFkZXJz
ID0ge30sCi0gICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SGVhZGVyc05hbWVzID0ge30s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUganFYSFIgc3RhdGUKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YXRlID0gMCwKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIERlZmF1
bHQgYWJvcnQgbWVzc2FnZQotICAgICAgICAgICAgICAgICAgICAgICAgc3RyQWJvcnQgPSAiY2Fu
Y2VsZWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgLy8gRmFrZSB4aHIKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGpxWEhSID0gewotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlYWR5U3RhdGU6IDAsCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2Fj
aGVzIHRoZSBoZWFkZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVxdWVz
dEhlYWRlcjogZnVuY3Rpb24oIG5hbWUsIHZhbHVlICkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICggIXN0YXRlICkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxuYW1lID0gbmFtZS50b0xvd2VyQ2FzZSgp
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9
IHJlcXVlc3RIZWFkZXJzTmFtZXNbIGxuYW1lIF0gPSByZXF1ZXN0SGVhZGVyc05hbWVzWyBsbmFt
ZSBdIHx8IG5hbWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXF1ZXN0SGVhZGVyc1sgbmFtZSBdID0gdmFsdWU7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB0aGlzOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAot
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJhdyBzdHJpbmcKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ2V0QWxsUmVzcG9uc2VIZWFkZXJzOiBmdW5jdGlvbigp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGUg
PT09IDIgPyByZXNwb25zZUhlYWRlcnNTdHJpbmcgOiBudWxsOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9LAotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJ1
aWxkcyBoZWFkZXJzIGhhc2h0YWJsZSBpZiBuZWVkZWQKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ2V0UmVzcG9uc2VIZWFkZXI6IGZ1bmN0aW9uKCBrZXkgKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG1hdGNoOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggc3RhdGUgPT09IDIgKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICFyZXNwb25zZUhlYWRl
cnMgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlc3BvbnNlSGVhZGVycyA9IHt9OwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSggKCBtYXRjaCA9IHJoZWFkZXJzLmV4
ZWMoIHJlc3BvbnNlSGVhZGVyc1N0cmluZyApICkgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VIZWFkZXJz
WyBtYXRjaFsxXS50b0xvd2VyQ2FzZSgpIF0gPSBtYXRjaFsgMiBdOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCA9IHJlc3BvbnNlSGVhZGVyc1sga2V5
LnRvTG93ZXJDYXNlKCkgXTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNo
ID09PSB1bmRlZmluZWQgPyBudWxsIDogbWF0Y2g7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0sCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gT3ZlcnJpZGVz
IHJlc3BvbnNlIGNvbnRlbnQtdHlwZSBoZWFkZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb3ZlcnJpZGVNaW1lVHlwZTogZnVuY3Rpb24oIHR5cGUgKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhc3RhdGUgKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLm1pbWVUeXBlID0gdHlwZTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0sCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2Fu
Y2VsIHRoZSByZXF1ZXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFib3J0OiBm
dW5jdGlvbiggc3RhdHVzVGV4dCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdGF0dXNUZXh0ID0gc3RhdHVzVGV4dCB8fCBzdHJBYm9ydDsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHRyYW5zcG9ydCApIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9ydC5hYm9ydCgg
c3RhdHVzVGV4dCApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb25lKCAwLCBzdGF0dXNU
ZXh0ICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRo
aXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICAgICAgIH07Ci0KLSAgICAgICAgICAgICAgICAvLyBDYWxsYmFjayBmb3Igd2hlbiBldmVyeXRo
aW5nIGlzIGRvbmUKLSAgICAgICAgICAgICAgICAvLyBJdCBpcyBkZWZpbmVkIGhlcmUgYmVjYXVz
ZSBqc2xpbnQgY29tcGxhaW5zIGlmIGl0IGlzIGRlY2xhcmVkCi0gICAgICAgICAgICAgICAgLy8g
YXQgdGhlIGVuZCBvZiB0aGUgZnVuY3Rpb24gKHdoaWNoIHdvdWxkIGJlIG1vcmUgbG9naWNhbCBh
bmQgcmVhZGFibGUpCi0gICAgICAgICAgICAgICAgZnVuY3Rpb24gZG9uZSggc3RhdHVzLCBuYXRp
dmVTdGF0dXNUZXh0LCByZXNwb25zZXMsIGhlYWRlcnMgKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB2YXIgaXNTdWNjZXNzLCBzdWNjZXNzLCBlcnJvciwgcmVzcG9uc2UsIG1vZGlmaWVkLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXNUZXh0ID0gbmF0aXZlU3RhdHVz
VGV4dDsKLQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2FsbGVkIG9uY2UKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICggc3RhdGUgPT09IDIgKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gU3RhdGUgaXMgImRvbmUiIG5vdwotICAgICAgICAgICAgICAg
ICAgICAgICAgc3RhdGUgPSAyOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBDbGVhciB0
aW1lb3V0IGlmIGl0IGV4aXN0cwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCB0aW1lb3V0
VGltZXIgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCgg
dGltZW91dFRpbWVyICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIERlcmVmZXJlbmNlIHRyYW5zcG9ydCBmb3IgZWFybHkgZ2FyYmFnZSBj
b2xsZWN0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyAobm8gbWF0dGVyIGhvdyBsb25n
IHRoZSBqcVhIUiBvYmplY3Qgd2lsbCBiZSB1c2VkKQotICAgICAgICAgICAgICAgICAgICAgICAg
dHJhbnNwb3J0ID0gdW5kZWZpbmVkOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBDYWNo
ZSByZXNwb25zZSBoZWFkZXJzCi0gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZUhlYWRl
cnNTdHJpbmcgPSBoZWFkZXJzIHx8ICIiOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBT
ZXQgcmVhZHlTdGF0ZQotICAgICAgICAgICAgICAgICAgICAgICAganFYSFIucmVhZHlTdGF0ZSA9
IHN0YXR1cyA+IDAgPyA0IDogMDsKLQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gR2V0IHJl
c3BvbnNlIGRhdGEKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICggcmVzcG9uc2VzICkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IGFqYXhIYW5kbGVSZXNw
b25zZXMoIHMsIGpxWEhSLCByZXNwb25zZXMgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgc3VjY2Vzc2Z1bCwgaGFuZGxlIHR5cGUg
Y2hhaW5pbmcKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICggc3RhdHVzID49IDIwMCAmJiBz
dGF0dXMgPCAzMDAgfHwgc3RhdHVzID09PSAzMDQgKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gU2V0IHRoZSBJZi1Nb2RpZmllZC1TaW5jZSBhbmQvb3IgSWYtTm9uZS1N
YXRjaCBoZWFkZXIsIGlmIGluIGlmTW9kaWZpZWQgbW9kZS4KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCBzLmlmTW9kaWZpZWQgKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtb2RpZmllZCA9IGpxWEhSLmdldFJlc3BvbnNlSGVhZGVyKCJM
YXN0LU1vZGlmaWVkIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCBtb2RpZmllZCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGpRdWVyeS5sYXN0TW9kaWZpZWRbIGlmTW9kaWZpZWRLZXkgXSA9IG1vZGlmaWVk
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllZCA9IGpxWEhSLmdldFJlc3BvbnNl
SGVhZGVyKCJFdGFnIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCBtb2RpZmllZCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGpRdWVyeS5ldGFnWyBpZk1vZGlmaWVkS2V5IF0gPSBtb2RpZmllZDsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiBu
b3QgbW9kaWZpZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBzdGF0dXMg
PT09IDMwNCApIHsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
YXR1c1RleHQgPSAibm90bW9kaWZpZWQiOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlzU3VjY2VzcyA9IHRydWU7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gSWYgd2UgaGF2ZSBkYXRhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0gZWxzZSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1N1
Y2Nlc3MgPSBhamF4Q29udmVydCggcywgcmVzcG9uc2UgKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGF0dXNUZXh0ID0gaXNTdWNjZXNzLnN0YXRlOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBpc1N1Y2Nlc3MuZGF0
YTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciA9IGlzU3Vj
Y2Vzcy5lcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1N1
Y2Nlc3MgPSAhZXJyb3I7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIFdlIGV4dHJhY3QgZXJyb3IgZnJvbSBzdGF0dXNUZXh0Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIHRoZW4gbm9ybWFsaXplIHN0YXR1c1RleHQgYW5kIHN0YXR1cyBm
b3Igbm9uLWFib3J0cwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciA9IHN0
YXR1c1RleHQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggIXN0YXR1c1Rl
eHQgfHwgc3RhdHVzICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0YXR1c1RleHQgPSAiZXJyb3IiOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICggc3RhdHVzIDwgMCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IDA7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNldCBk
YXRhIGZvciB0aGUgZmFrZSB4aHIgb2JqZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgICBqcVhI
Ui5zdGF0dXMgPSBzdGF0dXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICBqcVhIUi5zdGF0dXNU
ZXh0ID0gKCBuYXRpdmVTdGF0dXNUZXh0IHx8IHN0YXR1c1RleHQgKSArICIiOwotCi0gICAgICAg
ICAgICAgICAgICAgICAgICAvLyBTdWNjZXNzL0Vycm9yCi0gICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoIGlzU3VjY2VzcyApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVm
ZXJyZWQucmVzb2x2ZVdpdGgoIGNhbGxiYWNrQ29udGV4dCwgWyBzdWNjZXNzLCBzdGF0dXNUZXh0
LCBqcVhIUiBdICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3RXaXRoKCBjYWxsYmFja0NvbnRl
eHQsIFsganFYSFIsIHN0YXR1c1RleHQsIGVycm9yIF0gKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3RhdHVzLWRlcGVuZGVudCBjYWxs
YmFja3MKLSAgICAgICAgICAgICAgICAgICAgICAgIGpxWEhSLnN0YXR1c0NvZGUoIHN0YXR1c0Nv
ZGUgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c0NvZGUgPSB1bmRlZmluZWQ7Ci0K
LSAgICAgICAgICAgICAgICAgICAgICAgIGlmICggZmlyZUdsb2JhbHMgKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbEV2ZW50Q29udGV4dC50cmlnZ2VyKCAiYWpheCIg
KyAoIGlzU3VjY2VzcyA/ICJTdWNjZXNzIiA6ICJFcnJvciIgKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsganFYSFIsIHMsIGlzU3VjY2VzcyA/IHN1
Y2Nlc3MgOiBlcnJvciBdICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIENvbXBsZXRlCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21w
bGV0ZURlZmVycmVkLmZpcmVXaXRoKCBjYWxsYmFja0NvbnRleHQsIFsganFYSFIsIHN0YXR1c1Rl
eHQgXSApOwotCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGZpcmVHbG9iYWxzICkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWxFdmVudENvbnRleHQudHJpZ2dl
ciggImFqYXhDb21wbGV0ZSIsIFsganFYSFIsIHMgXSApOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBIYW5kbGUgdGhlIGdsb2JhbCBBSkFYIGNvdW50ZXIKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCAhKCAtLWpRdWVyeS5hY3RpdmUgKSApIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkuZXZlbnQudHJpZ2dlcigg
ImFqYXhTdG9wIiApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAg
Ly8gQXR0YWNoIGRlZmVycmVkcwotICAgICAgICAgICAgICAgIGRlZmVycmVkLnByb21pc2UoIGpx
WEhSICk7Ci0gICAgICAgICAgICAgICAganFYSFIuc3VjY2VzcyA9IGpxWEhSLmRvbmU7Ci0gICAg
ICAgICAgICAgICAganFYSFIuZXJyb3IgPSBqcVhIUi5mYWlsOwotICAgICAgICAgICAgICAgIGpx
WEhSLmNvbXBsZXRlID0gY29tcGxldGVEZWZlcnJlZC5hZGQ7Ci0KLSAgICAgICAgICAgICAgICAv
LyBTdGF0dXMtZGVwZW5kZW50IGNhbGxiYWNrcwotICAgICAgICAgICAgICAgIGpxWEhSLnN0YXR1
c0NvZGUgPSBmdW5jdGlvbiggbWFwICkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBt
YXAgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0bXA7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggc3RhdGUgPCAyICkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoIHRtcCBpbiBtYXAgKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXNDb2RlWyB0bXAg
XSA9IFsgc3RhdHVzQ29kZVt0bXBdLCBtYXBbdG1wXSBdOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBtYXBb
IGpxWEhSLnN0YXR1cyBdOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGpxWEhSLmFsd2F5cyggdG1wICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0aGlzOwotICAgICAgICAgICAgICAgIH07Ci0KLSAgICAgICAgICAgICAgICAvLyBSZW1vdmUg
aGFzaCBjaGFyYWN0ZXIgKCM3NTMxOiBhbmQgc3RyaW5nIHByb21vdGlvbikKLSAgICAgICAgICAg
ICAgICAvLyBBZGQgcHJvdG9jb2wgaWYgbm90IHByb3ZpZGVkICgjNTg2NjogSUU3IGlzc3VlIHdp
dGggcHJvdG9jb2wtbGVzcyB1cmxzKQotICAgICAgICAgICAgICAgIC8vIFdlIGFsc28gdXNlIHRo
ZSB1cmwgcGFyYW1ldGVyIGlmIGF2YWlsYWJsZQotICAgICAgICAgICAgICAgIHMudXJsID0gKCAo
IHVybCB8fCBzLnVybCApICsgIiIgKS5yZXBsYWNlKCByaGFzaCwgIiIgKS5yZXBsYWNlKCBycHJv
dG9jb2wsIGFqYXhMb2NQYXJ0c1sgMSBdICsgIi8vIiApOwotCi0gICAgICAgICAgICAgICAgLy8g
RXh0cmFjdCBkYXRhVHlwZXMgbGlzdAotICAgICAgICAgICAgICAgIHMuZGF0YVR5cGVzID0galF1
ZXJ5LnRyaW0oIHMuZGF0YVR5cGUgfHwgIioiICkudG9Mb3dlckNhc2UoKS5zcGxpdCggY29yZV9y
c3BhY2UgKTsKLQotICAgICAgICAgICAgICAgIC8vIEEgY3Jvc3MtZG9tYWluIHJlcXVlc3QgaXMg
aW4gb3JkZXIgd2hlbiB3ZSBoYXZlIGEgcHJvdG9jb2w6aG9zdDpwb3J0IG1pc21hdGNoCi0gICAg
ICAgICAgICAgICAgaWYgKCBzLmNyb3NzRG9tYWluID09IG51bGwgKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBwYXJ0cyA9IHJ1cmwuZXhlYyggcy51cmwudG9Mb3dlckNhc2UoKSApOwotICAg
ICAgICAgICAgICAgICAgICAgICAgcy5jcm9zc0RvbWFpbiA9ICEhKCBwYXJ0cyAmJgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoIHBhcnRzWyAxIF0gIT09IGFqYXhMb2NQYXJ0c1sg
MSBdIHx8IHBhcnRzWyAyIF0gIT09IGFqYXhMb2NQYXJ0c1sgMiBdIHx8Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBwYXJ0c1sgMyBdIHx8ICggcGFydHNbIDEgXSA9
PT0gImh0dHA6IiA/IDgwIDogNDQzICkgKSAhPQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKCBhamF4TG9jUGFydHNbIDMgXSB8fCAoIGFqYXhMb2NQYXJ0
c1sgMSBdID09PSAiaHR0cDoiID8gODAgOiA0NDMgKSApICkKLSAgICAgICAgICAgICAgICAgICAg
ICAgICk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgLy8gQ29udmVydCBk
YXRhIGlmIG5vdCBhbHJlYWR5IGEgc3RyaW5nCi0gICAgICAgICAgICAgICAgaWYgKCBzLmRhdGEg
JiYgcy5wcm9jZXNzRGF0YSAmJiB0eXBlb2Ygcy5kYXRhICE9PSAic3RyaW5nIiApIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHMuZGF0YSA9IGpRdWVyeS5wYXJhbSggcy5kYXRhLCBzLnRyYWRp
dGlvbmFsICk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgLy8gQXBwbHkg
cHJlZmlsdGVycwotICAgICAgICAgICAgICAgIGluc3BlY3RQcmVmaWx0ZXJzT3JUcmFuc3BvcnRz
KCBwcmVmaWx0ZXJzLCBzLCBvcHRpb25zLCBqcVhIUiApOwotCi0gICAgICAgICAgICAgICAgLy8g
SWYgcmVxdWVzdCB3YXMgYWJvcnRlZCBpbnNpZGUgYSBwcmVmaWx0ZXIsIHN0b3AgdGhlcmUKLSAg
ICAgICAgICAgICAgICBpZiAoIHN0YXRlID09PSAyICkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGpxWEhSOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIC8v
IFdlIGNhbiBmaXJlIGdsb2JhbCBldmVudHMgYXMgb2Ygbm93IGlmIGFza2VkIHRvCi0gICAgICAg
ICAgICAgICAgZmlyZUdsb2JhbHMgPSBzLmdsb2JhbDsKLQotICAgICAgICAgICAgICAgIC8vIFVw
cGVyY2FzZSB0aGUgdHlwZQotICAgICAgICAgICAgICAgIHMudHlwZSA9IHMudHlwZS50b1VwcGVy
Q2FzZSgpOwotCi0gICAgICAgICAgICAgICAgLy8gRGV0ZXJtaW5lIGlmIHJlcXVlc3QgaGFzIGNv
bnRlbnQKLSAgICAgICAgICAgICAgICBzLmhhc0NvbnRlbnQgPSAhcm5vQ29udGVudC50ZXN0KCBz
LnR5cGUgKTsKLQotICAgICAgICAgICAgICAgIC8vIFdhdGNoIGZvciBhIG5ldyBzZXQgb2YgcmVx
dWVzdHMKLSAgICAgICAgICAgICAgICBpZiAoIGZpcmVHbG9iYWxzICYmIGpRdWVyeS5hY3RpdmUr
KyA9PT0gMCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5ldmVudC50cmlnZ2Vy
KCAiYWpheFN0YXJ0IiApOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIC8v
IE1vcmUgb3B0aW9ucyBoYW5kbGluZyBmb3IgcmVxdWVzdHMgd2l0aCBubyBjb250ZW50Ci0gICAg
ICAgICAgICAgICAgaWYgKCAhcy5oYXNDb250ZW50ICkgewotCi0gICAgICAgICAgICAgICAgICAg
ICAgICAvLyBJZiBkYXRhIGlzIGF2YWlsYWJsZSwgYXBwZW5kIGRhdGEgdG8gdXJsCi0gICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoIHMuZGF0YSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcy51cmwgKz0gKCBycXVlcnkudGVzdCggcy51cmwgKSA/ICImIiA6ICI/IiApICsg
cy5kYXRhOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAjOTY4MjogcmVtb3Zl
IGRhdGEgc28gdGhhdCBpdCdzIG5vdCB1c2VkIGluIGFuIGV2ZW50dWFsIHJldHJ5Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBzLmRhdGE7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdldCBpZk1vZGlmaWVkS2V5
IGJlZm9yZSBhZGRpbmcgdGhlIGFudGktY2FjaGUgcGFyYW1ldGVyCi0gICAgICAgICAgICAgICAg
ICAgICAgICBpZk1vZGlmaWVkS2V5ID0gcy51cmw7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAg
IC8vIEFkZCBhbnRpLWNhY2hlIGluIHVybCBpZiBuZWVkZWQKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICggcy5jYWNoZSA9PT0gZmFsc2UgKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyIHRzID0galF1ZXJ5Lm5vdygpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIHRyeSByZXBsYWNpbmcgXz0gaWYgaXQgaXMgdGhlcmUKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXQgPSBzLnVybC5yZXBsYWNlKCBy
dHMsICIkMV89IiArIHRzICk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
aWYgbm90aGluZyB3YXMgcmVwbGFjZWQsIGFkZCB0aW1lc3RhbXAgdG8gdGhlIGVuZAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzLnVybCA9IHJldCArICggKCByZXQgPT09IHMudXJs
ICkgPyAoIHJxdWVyeS50ZXN0KCBzLnVybCApID8gIiYiIDogIj8iICkgKyAiXz0iICsgdHMgOiAi
IiApOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgICAgIC8vIFNldCB0aGUgY29ycmVjdCBoZWFkZXIsIGlmIGRhdGEgaXMgYmVpbmcg
c2VudAotICAgICAgICAgICAgICAgIGlmICggcy5kYXRhICYmIHMuaGFzQ29udGVudCAmJiBzLmNv
bnRlbnRUeXBlICE9PSBmYWxzZSB8fCBvcHRpb25zLmNvbnRlbnRUeXBlICkgewotICAgICAgICAg
ICAgICAgICAgICAgICAganFYSFIuc2V0UmVxdWVzdEhlYWRlciggIkNvbnRlbnQtVHlwZSIsIHMu
Y29udGVudFR5cGUgKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBT
ZXQgdGhlIElmLU1vZGlmaWVkLVNpbmNlIGFuZC9vciBJZi1Ob25lLU1hdGNoIGhlYWRlciwgaWYg
aW4gaWZNb2RpZmllZCBtb2RlLgotICAgICAgICAgICAgICAgIGlmICggcy5pZk1vZGlmaWVkICkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgaWZNb2RpZmllZEtleSA9IGlmTW9kaWZpZWRLZXkg
fHwgcy51cmw7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGpRdWVyeS5sYXN0TW9kaWZp
ZWRbIGlmTW9kaWZpZWRLZXkgXSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
anFYSFIuc2V0UmVxdWVzdEhlYWRlciggIklmLU1vZGlmaWVkLVNpbmNlIiwgalF1ZXJ5Lmxhc3RN
b2RpZmllZFsgaWZNb2RpZmllZEtleSBdICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGpRdWVyeS5ldGFnWyBpZk1vZGlmaWVkS2V5IF0g
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpxWEhSLnNldFJlcXVlc3RIZWFk
ZXIoICJJZi1Ob25lLU1hdGNoIiwgalF1ZXJ5LmV0YWdbIGlmTW9kaWZpZWRLZXkgXSApOwotICAg
ICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
ICAgIC8vIFNldCB0aGUgQWNjZXB0cyBoZWFkZXIgZm9yIHRoZSBzZXJ2ZXIsIGRlcGVuZGluZyBv
biB0aGUgZGF0YVR5cGUKLSAgICAgICAgICAgICAgICBqcVhIUi5zZXRSZXF1ZXN0SGVhZGVyKAot
ICAgICAgICAgICAgICAgICAgICAgICAgIkFjY2VwdCIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICBzLmRhdGFUeXBlc1sgMCBdICYmIHMuYWNjZXB0c1sgcy5kYXRhVHlwZXNbMF0gXSA/Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuYWNjZXB0c1sgcy5kYXRhVHlwZXNbMF0gXSAr
ICggcy5kYXRhVHlwZXNbIDAgXSAhPT0gIioiID8gIiwgIiArIGFsbFR5cGVzICsgIjsgcT0wLjAx
IiA6ICIiICkgOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLmFjY2VwdHNbICIq
IiBdCi0gICAgICAgICAgICAgICAgKTsKLQotICAgICAgICAgICAgICAgIC8vIENoZWNrIGZvciBo
ZWFkZXJzIG9wdGlvbgotICAgICAgICAgICAgICAgIGZvciAoIGkgaW4gcy5oZWFkZXJzICkgewot
ICAgICAgICAgICAgICAgICAgICAgICAganFYSFIuc2V0UmVxdWVzdEhlYWRlciggaSwgcy5oZWFk
ZXJzWyBpIF0gKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBBbGxv
dyBjdXN0b20gaGVhZGVycy9taW1ldHlwZXMgYW5kIGVhcmx5IGFib3J0Ci0gICAgICAgICAgICAg
ICAgaWYgKCBzLmJlZm9yZVNlbmQgJiYgKCBzLmJlZm9yZVNlbmQuY2FsbCggY2FsbGJhY2tDb250
ZXh0LCBqcVhIUiwgcyApID09PSBmYWxzZSB8fCBzdGF0ZSA9PT0gMiApICkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBBYm9ydCBpZiBub3QgZG9uZSBhbHJlYWR5IGFuZCBy
ZXR1cm4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpxWEhSLmFib3J0
KCk7Ci0KLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBhYm9ydGluZyBp
cyBubyBsb25nZXIgYSBjYW5jZWxsYXRpb24KLSAgICAgICAgICAgICAgICBzdHJBYm9ydCA9ICJh
Ym9ydCI7Ci0KLSAgICAgICAgICAgICAgICAvLyBJbnN0YWxsIGNhbGxiYWNrcyBvbiBkZWZlcnJl
ZHMKLSAgICAgICAgICAgICAgICBmb3IgKCBpIGluIHsgc3VjY2VzczogMSwgZXJyb3I6IDEsIGNv
bXBsZXRlOiAxIH0gKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBqcVhIUlsgaSBdKCBzWyBp
IF0gKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBHZXQgdHJhbnNw
b3J0Ci0gICAgICAgICAgICAgICAgdHJhbnNwb3J0ID0gaW5zcGVjdFByZWZpbHRlcnNPclRyYW5z
cG9ydHMoIHRyYW5zcG9ydHMsIHMsIG9wdGlvbnMsIGpxWEhSICk7Ci0KLSAgICAgICAgICAgICAg
ICAvLyBJZiBubyB0cmFuc3BvcnQsIHdlIGF1dG8tYWJvcnQKLSAgICAgICAgICAgICAgICBpZiAo
ICF0cmFuc3BvcnQgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkb25lKCAtMSwgIk5vIFRy
YW5zcG9ydCIgKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAg
ICAgICAganFYSFIucmVhZHlTdGF0ZSA9IDE7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBT
ZW5kIGdsb2JhbCBldmVudAotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBmaXJlR2xvYmFs
cyApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsRXZlbnRDb250ZXh0
LnRyaWdnZXIoICJhamF4U2VuZCIsIFsganFYSFIsIHMgXSApOwotICAgICAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGltZW91dAotICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCBzLmFzeW5jICYmIHMudGltZW91dCA+IDAgKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXRUaW1lciA9IHNldFRpbWVvdXQoIGZ1bmN0aW9u
KCl7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganFYSFIuYWJvcnQo
ICJ0aW1lb3V0IiApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBzLnRpbWVv
dXQgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAg
ICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSAxOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc3BvcnQuc2VuZCggcmVxdWVzdEhlYWRl
cnMsIGRvbmUgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUHJvcGFnYXRlIGV4Y2VwdGlvbiBhcyBlcnJv
ciBpZiBub3QgZG9uZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHN0YXRl
IDwgMiApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb25lKCAt
MSwgZSApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTaW1wbHkgcmV0aHJv
dyBvdGhlcndpc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBlOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgcmV0dXJuIGpxWEhSOwotICAgICAgICB9
LAotCi0gICAgICAgIC8vIENvdW50ZXIgZm9yIGhvbGRpbmcgdGhlIG51bWJlciBvZiBhY3RpdmUg
cXVlcmllcwotICAgICAgICBhY3RpdmU6IDAsCi0KLSAgICAgICAgLy8gTGFzdC1Nb2RpZmllZCBo
ZWFkZXIgY2FjaGUgZm9yIG5leHQgcmVxdWVzdAotICAgICAgICBsYXN0TW9kaWZpZWQ6IHt9LAot
ICAgICAgICBldGFnOiB7fQotCi19KTsKLQotLyogSGFuZGxlcyByZXNwb25zZXMgdG8gYW4gYWph
eCByZXF1ZXN0OgotICogLSBzZXRzIGFsbCByZXNwb25zZVhYWCBmaWVsZHMgYWNjb3JkaW5nbHkK
LSAqIC0gZmluZHMgdGhlIHJpZ2h0IGRhdGFUeXBlIChtZWRpYXRlcyBiZXR3ZWVuIGNvbnRlbnQt
dHlwZSBhbmQgZXhwZWN0ZWQgZGF0YVR5cGUpCi0gKiAtIHJldHVybnMgdGhlIGNvcnJlc3BvbmRp
bmcgcmVzcG9uc2UKLSAqLwotZnVuY3Rpb24gYWpheEhhbmRsZVJlc3BvbnNlcyggcywganFYSFIs
IHJlc3BvbnNlcyApIHsKLQotICAgICAgICB2YXIgY3QsIHR5cGUsIGZpbmFsRGF0YVR5cGUsIGZp
cnN0RGF0YVR5cGUsCi0gICAgICAgICAgICAgICAgY29udGVudHMgPSBzLmNvbnRlbnRzLAotICAg
ICAgICAgICAgICAgIGRhdGFUeXBlcyA9IHMuZGF0YVR5cGVzLAotICAgICAgICAgICAgICAgIHJl
c3BvbnNlRmllbGRzID0gcy5yZXNwb25zZUZpZWxkczsKLQotICAgICAgICAvLyBGaWxsIHJlc3Bv
bnNlWFhYIGZpZWxkcwotICAgICAgICBmb3IgKCB0eXBlIGluIHJlc3BvbnNlRmllbGRzICkgewot
ICAgICAgICAgICAgICAgIGlmICggdHlwZSBpbiByZXNwb25zZXMgKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBqcVhIUlsgcmVzcG9uc2VGaWVsZHNbdHlwZV0gXSA9IHJlc3BvbnNlc1sgdHlw
ZSBdOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vIFJlbW92ZSBh
dXRvIGRhdGFUeXBlIGFuZCBnZXQgY29udGVudC10eXBlIGluIHRoZSBwcm9jZXNzCi0gICAgICAg
IHdoaWxlKCBkYXRhVHlwZXNbIDAgXSA9PT0gIioiICkgewotICAgICAgICAgICAgICAgIGRhdGFU
eXBlcy5zaGlmdCgpOwotICAgICAgICAgICAgICAgIGlmICggY3QgPT09IHVuZGVmaW5lZCApIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGN0ID0gcy5taW1lVHlwZSB8fCBqcVhIUi5nZXRSZXNw
b25zZUhlYWRlciggImNvbnRlbnQtdHlwZSIgKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
IH0KLQotICAgICAgICAvLyBDaGVjayBpZiB3ZSdyZSBkZWFsaW5nIHdpdGggYSBrbm93biBjb250
ZW50LXR5cGUKLSAgICAgICAgaWYgKCBjdCApIHsKLSAgICAgICAgICAgICAgICBmb3IgKCB0eXBl
IGluIGNvbnRlbnRzICkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBjb250ZW50c1sg
dHlwZSBdICYmIGNvbnRlbnRzWyB0eXBlIF0udGVzdCggY3QgKSApIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGF0YVR5cGVzLnVuc2hpZnQoIHR5cGUgKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLy8gQ2hlY2sgdG8gc2VlIGlm
IHdlIGhhdmUgYSByZXNwb25zZSBmb3IgdGhlIGV4cGVjdGVkIGRhdGFUeXBlCi0gICAgICAgIGlm
ICggZGF0YVR5cGVzWyAwIF0gaW4gcmVzcG9uc2VzICkgewotICAgICAgICAgICAgICAgIGZpbmFs
RGF0YVR5cGUgPSBkYXRhVHlwZXNbIDAgXTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAvLyBUcnkgY29udmVydGlibGUgZGF0YVR5cGVzCi0gICAgICAgICAgICAgICAgZm9yICgg
dHlwZSBpbiByZXNwb25zZXMgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoICFkYXRh
VHlwZXNbIDAgXSB8fCBzLmNvbnZlcnRlcnNbIHR5cGUgKyAiICIgKyBkYXRhVHlwZXNbMF0gXSAp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxEYXRhVHlwZSA9IHR5cGU7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhZmlyc3REYXRhVHlwZSAp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3REYXRhVHlwZSA9IHR5cGU7
Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIC8vIE9yIGp1c3QgdXNlIGZpcnN0IG9uZQotICAgICAgICAgICAgICAgIGZpbmFsRGF0
YVR5cGUgPSBmaW5hbERhdGFUeXBlIHx8IGZpcnN0RGF0YVR5cGU7Ci0gICAgICAgIH0KLQotICAg
ICAgICAvLyBJZiB3ZSBmb3VuZCBhIGRhdGFUeXBlCi0gICAgICAgIC8vIFdlIGFkZCB0aGUgZGF0
YVR5cGUgdG8gdGhlIGxpc3QgaWYgbmVlZGVkCi0gICAgICAgIC8vIGFuZCByZXR1cm4gdGhlIGNv
cnJlc3BvbmRpbmcgcmVzcG9uc2UKLSAgICAgICAgaWYgKCBmaW5hbERhdGFUeXBlICkgewotICAg
ICAgICAgICAgICAgIGlmICggZmluYWxEYXRhVHlwZSAhPT0gZGF0YVR5cGVzWyAwIF0gKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZXMudW5zaGlmdCggZmluYWxEYXRhVHlwZSAp
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2VzWyBm
aW5hbERhdGFUeXBlIF07Ci0gICAgICAgIH0KLX0KLQotLy8gQ2hhaW4gY29udmVyc2lvbnMgZ2l2
ZW4gdGhlIHJlcXVlc3QgYW5kIHRoZSBvcmlnaW5hbCByZXNwb25zZQotZnVuY3Rpb24gYWpheENv
bnZlcnQoIHMsIHJlc3BvbnNlICkgewotCi0gICAgICAgIHZhciBjb252LCBjb252MiwgY3VycmVu
dCwgdG1wLAotICAgICAgICAgICAgICAgIC8vIFdvcmsgd2l0aCBhIGNvcHkgb2YgZGF0YVR5cGVz
IGluIGNhc2Ugd2UgbmVlZCB0byBtb2RpZnkgaXQgZm9yIGNvbnZlcnNpb24KLSAgICAgICAgICAg
ICAgICBkYXRhVHlwZXMgPSBzLmRhdGFUeXBlcy5zbGljZSgpLAotICAgICAgICAgICAgICAgIHBy
ZXYgPSBkYXRhVHlwZXNbIDAgXSwKLSAgICAgICAgICAgICAgICBjb252ZXJ0ZXJzID0ge30sCi0g
ICAgICAgICAgICAgICAgaSA9IDA7Ci0KLSAgICAgICAgLy8gQXBwbHkgdGhlIGRhdGFGaWx0ZXIg
aWYgcHJvdmlkZWQKLSAgICAgICAgaWYgKCBzLmRhdGFGaWx0ZXIgKSB7Ci0gICAgICAgICAgICAg
ICAgcmVzcG9uc2UgPSBzLmRhdGFGaWx0ZXIoIHJlc3BvbnNlLCBzLmRhdGFUeXBlICk7Ci0gICAg
ICAgIH0KLQotICAgICAgICAvLyBDcmVhdGUgY29udmVydGVycyBtYXAgd2l0aCBsb3dlcmNhc2Vk
IGtleXMKLSAgICAgICAgaWYgKCBkYXRhVHlwZXNbIDEgXSApIHsKLSAgICAgICAgICAgICAgICBm
b3IgKCBjb252IGluIHMuY29udmVydGVycyApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnZlcnRlcnNbIGNvbnYudG9Mb3dlckNhc2UoKSBdID0gcy5jb252ZXJ0ZXJzWyBjb252IF07Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLy8gQ29udmVydCB0byBlYWNo
IHNlcXVlbnRpYWwgZGF0YVR5cGUsIHRvbGVyYXRpbmcgbGlzdCBtb2RpZmljYXRpb24KLSAgICAg
ICAgZm9yICggOyAoY3VycmVudCA9IGRhdGFUeXBlc1srK2ldKTsgKSB7Ci0KLSAgICAgICAgICAg
ICAgICAvLyBUaGVyZSdzIG9ubHkgd29yayB0byBkbyBpZiBjdXJyZW50IGRhdGFUeXBlIGlzIG5v
bi1hdXRvCi0gICAgICAgICAgICAgICAgaWYgKCBjdXJyZW50ICE9PSAiKiIgKSB7Ci0KLSAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIENvbnZlcnQgcmVzcG9uc2UgaWYgcHJldiBkYXRhVHlwZSBp
cyBub24tYXV0byBhbmQgZGlmZmVycyBmcm9tIGN1cnJlbnQKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICggcHJldiAhPT0gIioiICYmIHByZXYgIT09IGN1cnJlbnQgKSB7Ci0KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2VlayBhIGRpcmVjdCBjb252ZXJ0ZXIKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udiA9IGNvbnZlcnRlcnNbIHByZXYgKyAiICIg
KyBjdXJyZW50IF0gfHwgY29udmVydGVyc1sgIiogIiArIGN1cnJlbnQgXTsKLQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiBub25lIGZvdW5kLCBzZWVrIGEgcGFpcgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICFjb252ICkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoIGNvbnYyIGluIGNvbnZlcnRlcnMgKSB7
Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElm
IGNvbnYyIG91dHB1dHMgY3VycmVudAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdG1wID0gY29udjIuc3BsaXQoIiAiKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggdG1wWyAxIF0gPT09IGN1cnJlbnQg
KSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gSWYgcHJldiBjYW4gYmUgY29udmVydGVkIHRvIGFjY2VwdGVkIGlucHV0Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnYg
PSBjb252ZXJ0ZXJzWyBwcmV2ICsgIiAiICsgdG1wWyAwIF0gXSB8fAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRl
cnNbICIqICIgKyB0bXBbIDAgXSBdOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGNvbnYgKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ29uZGVuc2Ug
ZXF1aXZhbGVuY2UgY29udmVydGVycwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggY29udiA9PT0gdHJ1ZSApIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnYgPSBjb252ZXJ0ZXJzWyBjb252MiBdOwotCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gT3Ro
ZXJ3aXNlLCBpbnNlcnQgdGhlIGludGVybWVkaWF0ZSBkYXRhVHlwZQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBp
ZiAoIGNvbnZlcnRlcnNbIGNvbnYyIF0gIT09IHRydWUgKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJy
ZW50ID0gdG1wWyAwIF07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZXMuc3BsaWNlKCBpLS0sIDAs
IGN1cnJlbnQgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFwcGx5IGNvbnZlcnRlciAoaWYg
bm90IGFuIGVxdWl2YWxlbmNlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
IGNvbnYgIT09IHRydWUgKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBVbmxlc3MgZXJyb3JzIGFyZSBhbGxvd2VkIHRvIGJ1YmJsZSwgY2F0Y2ggYW5kIHJl
dHVybiB0aGVtCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBj
b252ICYmIHNbInRocm93cyJdICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBjb252KCByZXNwb25zZSApOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IGNvbnYoIHJlc3Bv
bnNlICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
IGNhdGNoICggZSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHsgc3RhdGU6ICJwYXJzZXJlcnJvciIsIGVycm9yOiBjb252
ID8gZSA6ICJObyBjb252ZXJzaW9uIGZyb20gIiArIHByZXYgKyAiIHRvICIgKyBjdXJyZW50IH07
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIFVwZGF0ZSBwcmV2IGZvciBuZXh0IGl0ZXJhdGlvbgotICAgICAgICAg
ICAgICAgICAgICAgICAgcHJldiA9IGN1cnJlbnQ7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0KLSAgICAgICAgcmV0dXJuIHsgc3RhdGU6ICJzdWNjZXNzIiwgZGF0YTogcmVzcG9uc2Ug
fTsKLX0KLXZhciBvbGRDYWxsYmFja3MgPSBbXSwKLSAgICAgICAgcnF1ZXN0aW9uID0gL1w/LywK
LSAgICAgICAgcmpzb25wID0gLyg9KVw/KD89JnwkKXxcP1w/LywKLSAgICAgICAgbm9uY2UgPSBq
UXVlcnkubm93KCk7Ci0KLS8vIERlZmF1bHQganNvbnAgc2V0dGluZ3MKLWpRdWVyeS5hamF4U2V0
dXAoewotICAgICAgICBqc29ucDogImNhbGxiYWNrIiwKLSAgICAgICAganNvbnBDYWxsYmFjazog
ZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGNhbGxiYWNrID0gb2xkQ2FsbGJhY2tz
LnBvcCgpIHx8ICggalF1ZXJ5LmV4cGFuZG8gKyAiXyIgKyAoIG5vbmNlKysgKSApOwotICAgICAg
ICAgICAgICAgIHRoaXNbIGNhbGxiYWNrIF0gPSB0cnVlOwotICAgICAgICAgICAgICAgIHJldHVy
biBjYWxsYmFjazsKLSAgICAgICAgfQotfSk7Ci0KLS8vIERldGVjdCwgbm9ybWFsaXplIG9wdGlv
bnMgYW5kIGluc3RhbGwgY2FsbGJhY2tzIGZvciBqc29ucCByZXF1ZXN0cwotalF1ZXJ5LmFqYXhQ
cmVmaWx0ZXIoICJqc29uIGpzb25wIiwgZnVuY3Rpb24oIHMsIG9yaWdpbmFsU2V0dGluZ3MsIGpx
WEhSICkgewotCi0gICAgICAgIHZhciBjYWxsYmFja05hbWUsIG92ZXJ3cml0dGVuLCByZXNwb25z
ZUNvbnRhaW5lciwKLSAgICAgICAgICAgICAgICBkYXRhID0gcy5kYXRhLAotICAgICAgICAgICAg
ICAgIHVybCA9IHMudXJsLAotICAgICAgICAgICAgICAgIGhhc0NhbGxiYWNrID0gcy5qc29ucCAh
PT0gZmFsc2UsCi0gICAgICAgICAgICAgICAgcmVwbGFjZUluVXJsID0gaGFzQ2FsbGJhY2sgJiYg
cmpzb25wLnRlc3QoIHVybCApLAotICAgICAgICAgICAgICAgIHJlcGxhY2VJbkRhdGEgPSBoYXND
YWxsYmFjayAmJiAhcmVwbGFjZUluVXJsICYmIHR5cGVvZiBkYXRhID09PSAic3RyaW5nIiAmJgot
ICAgICAgICAgICAgICAgICAgICAgICAgISggcy5jb250ZW50VHlwZSB8fCAiIiApLmluZGV4T2Yo
ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpICYmCi0gICAgICAgICAgICAgICAg
ICAgICAgICByanNvbnAudGVzdCggZGF0YSApOwotCi0gICAgICAgIC8vIEhhbmRsZSBpZmYgdGhl
IGV4cGVjdGVkIGRhdGEgdHlwZSBpcyAianNvbnAiIG9yIHdlIGhhdmUgYSBwYXJhbWV0ZXIgdG8g
c2V0Ci0gICAgICAgIGlmICggcy5kYXRhVHlwZXNbIDAgXSA9PT0gImpzb25wIiB8fCByZXBsYWNl
SW5VcmwgfHwgcmVwbGFjZUluRGF0YSApIHsKLQotICAgICAgICAgICAgICAgIC8vIEdldCBjYWxs
YmFjayBuYW1lLCByZW1lbWJlcmluZyBwcmVleGlzdGluZyB2YWx1ZSBhc3NvY2lhdGVkIHdpdGgg
aXQKLSAgICAgICAgICAgICAgICBjYWxsYmFja05hbWUgPSBzLmpzb25wQ2FsbGJhY2sgPSBqUXVl
cnkuaXNGdW5jdGlvbiggcy5qc29ucENhbGxiYWNrICkgPwotICAgICAgICAgICAgICAgICAgICAg
ICAgcy5qc29ucENhbGxiYWNrKCkgOgotICAgICAgICAgICAgICAgICAgICAgICAgcy5qc29ucENh
bGxiYWNrOwotICAgICAgICAgICAgICAgIG92ZXJ3cml0dGVuID0gd2luZG93WyBjYWxsYmFja05h
bWUgXTsKLQotICAgICAgICAgICAgICAgIC8vIEluc2VydCBjYWxsYmFjayBpbnRvIHVybCBvciBm
b3JtIGRhdGEKLSAgICAgICAgICAgICAgICBpZiAoIHJlcGxhY2VJblVybCApIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHMudXJsID0gdXJsLnJlcGxhY2UoIHJqc29ucCwgIiQxIiArIGNhbGxi
YWNrTmFtZSApOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIHJlcGxhY2VJbkRhdGEgKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBzLmRhdGEgPSBkYXRhLnJlcGxhY2UoIHJqc29ucCwg
IiQxIiArIGNhbGxiYWNrTmFtZSApOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIGhhc0Nh
bGxiYWNrICkgewotICAgICAgICAgICAgICAgICAgICAgICAgcy51cmwgKz0gKCBycXVlc3Rpb24u
dGVzdCggdXJsICkgPyAiJiIgOiAiPyIgKSArIHMuanNvbnAgKyAiPSIgKyBjYWxsYmFja05hbWU7
Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgLy8gVXNlIGRhdGEgY29udmVy
dGVyIHRvIHJldHJpZXZlIGpzb24gYWZ0ZXIgc2NyaXB0IGV4ZWN1dGlvbgotICAgICAgICAgICAg
ICAgIHMuY29udmVydGVyc1sic2NyaXB0IGpzb24iXSA9IGZ1bmN0aW9uKCkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKCAhcmVzcG9uc2VDb250YWluZXIgKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGpRdWVyeS5lcnJvciggY2FsbGJhY2tOYW1lICsgIiB3YXMgbm90
IGNhbGxlZCIgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiByZXNwb25zZUNvbnRhaW5lclsgMCBdOwotICAgICAgICAgICAgICAgIH07
Ci0KLSAgICAgICAgICAgICAgICAvLyBmb3JjZSBqc29uIGRhdGFUeXBlCi0gICAgICAgICAgICAg
ICAgcy5kYXRhVHlwZXNbIDAgXSA9ICJqc29uIjsKLQotICAgICAgICAgICAgICAgIC8vIEluc3Rh
bGwgY2FsbGJhY2sKLSAgICAgICAgICAgICAgICB3aW5kb3dbIGNhbGxiYWNrTmFtZSBdID0gZnVu
Y3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZUNvbnRhaW5lciA9IGFy
Z3VtZW50czsKLSAgICAgICAgICAgICAgICB9OwotCi0gICAgICAgICAgICAgICAgLy8gQ2xlYW4t
dXAgZnVuY3Rpb24gKGZpcmVzIGFmdGVyIGNvbnZlcnRlcnMpCi0gICAgICAgICAgICAgICAganFY
SFIuYWx3YXlzKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVzdG9y
ZSBwcmVleGlzdGluZyB2YWx1ZQotICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93WyBjYWxs
YmFja05hbWUgXSA9IG92ZXJ3cml0dGVuOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBT
YXZlIGJhY2sgYXMgZnJlZQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBzWyBjYWxsYmFj
a05hbWUgXSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWFrZSBzdXJl
IHRoYXQgcmUtdXNpbmcgdGhlIG9wdGlvbnMgZG9lc24ndCBzY3JldyB0aGluZ3MgYXJvdW5kCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuanNvbnBDYWxsYmFjayA9IG9yaWdpbmFs
U2V0dGluZ3MuanNvbnBDYWxsYmFjazsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBzYXZlIHRoZSBjYWxsYmFjayBuYW1lIGZvciBmdXR1cmUgdXNlCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG9sZENhbGxiYWNrcy5wdXNoKCBjYWxsYmFja05hbWUgKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2Fs
bCBpZiBpdCB3YXMgYSBmdW5jdGlvbiBhbmQgd2UgaGF2ZSBhIHJlc3BvbnNlCi0gICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoIHJlc3BvbnNlQ29udGFpbmVyICYmIGpRdWVyeS5pc0Z1bmN0aW9u
KCBvdmVyd3JpdHRlbiApICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVy
d3JpdHRlbiggcmVzcG9uc2VDb250YWluZXJbIDAgXSApOwotICAgICAgICAgICAgICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZUNvbnRhaW5lciA9IG92ZXJ3
cml0dGVuID0gdW5kZWZpbmVkOwotICAgICAgICAgICAgICAgIH0pOwotCi0gICAgICAgICAgICAg
ICAgLy8gRGVsZWdhdGUgdG8gc2NyaXB0Ci0gICAgICAgICAgICAgICAgcmV0dXJuICJzY3JpcHQi
OwotICAgICAgICB9Ci19KTsKLS8vIEluc3RhbGwgc2NyaXB0IGRhdGFUeXBlCi1qUXVlcnkuYWph
eFNldHVwKHsKLSAgICAgICAgYWNjZXB0czogewotICAgICAgICAgICAgICAgIHNjcmlwdDogInRl
eHQvamF2YXNjcmlwdCwgYXBwbGljYXRpb24vamF2YXNjcmlwdCwgYXBwbGljYXRpb24vZWNtYXNj
cmlwdCwgYXBwbGljYXRpb24veC1lY21hc2NyaXB0IgotICAgICAgICB9LAotICAgICAgICBjb250
ZW50czogewotICAgICAgICAgICAgICAgIHNjcmlwdDogL2phdmFzY3JpcHR8ZWNtYXNjcmlwdC8K
LSAgICAgICAgfSwKLSAgICAgICAgY29udmVydGVyczogewotICAgICAgICAgICAgICAgICJ0ZXh0
IHNjcmlwdCI6IGZ1bmN0aW9uKCB0ZXh0ICkgewotICAgICAgICAgICAgICAgICAgICAgICAgalF1
ZXJ5Lmdsb2JhbEV2YWwoIHRleHQgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0
ZXh0OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgfQotfSk7Ci0KLS8vIEhhbmRsZSBjYWNo
ZSdzIHNwZWNpYWwgY2FzZSBhbmQgZ2xvYmFsCi1qUXVlcnkuYWpheFByZWZpbHRlciggInNjcmlw
dCIsIGZ1bmN0aW9uKCBzICkgewotICAgICAgICBpZiAoIHMuY2FjaGUgPT09IHVuZGVmaW5lZCAp
IHsKLSAgICAgICAgICAgICAgICBzLmNhY2hlID0gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAg
aWYgKCBzLmNyb3NzRG9tYWluICkgewotICAgICAgICAgICAgICAgIHMudHlwZSA9ICJHRVQiOwot
ICAgICAgICAgICAgICAgIHMuZ2xvYmFsID0gZmFsc2U7Ci0gICAgICAgIH0KLX0pOwotCi0vLyBC
aW5kIHNjcmlwdCB0YWcgaGFjayB0cmFuc3BvcnQKLWpRdWVyeS5hamF4VHJhbnNwb3J0KCAic2Ny
aXB0IiwgZnVuY3Rpb24ocykgewotCi0gICAgICAgIC8vIFRoaXMgdHJhbnNwb3J0IG9ubHkgZGVh
bHMgd2l0aCBjcm9zcyBkb21haW4gcmVxdWVzdHMKLSAgICAgICAgaWYgKCBzLmNyb3NzRG9tYWlu
ICkgewotCi0gICAgICAgICAgICAgICAgdmFyIHNjcmlwdCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGhlYWQgPSBkb2N1bWVudC5oZWFkIHx8IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCAiaGVhZCIgKVswXSB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7Ci0KLSAgICAgICAgICAg
ICAgICByZXR1cm4gewotCi0gICAgICAgICAgICAgICAgICAgICAgICBzZW5kOiBmdW5jdGlvbigg
XywgY2FsbGJhY2sgKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggInNjcmlwdCIgKTsKLQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzY3JpcHQuYXN5bmMgPSAiYXN5bmMiOwotCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICggcy5zY3JpcHRDaGFyc2V0ICkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdC5jaGFyc2V0ID0gcy5zY3JpcHRDaGFy
c2V0OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2NyaXB0LnNyYyA9IHMudXJsOwotCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIEF0dGFjaCBoYW5kbGVycyBmb3IgYWxsIGJyb3dzZXJzCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdC5vbmxvYWQgPSBzY3JpcHQub25yZWFk
eXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oIF8sIGlzQWJvcnQgKSB7Ci0KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGlzQWJvcnQgfHwgIXNjcmlwdC5yZWFkeVN0
YXRlIHx8IC9sb2FkZWR8Y29tcGxldGUvLnRlc3QoIHNjcmlwdC5yZWFkeVN0YXRlICkgKSB7Ci0K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEhhbmRs
ZSBtZW1vcnkgbGVhayBpbiBJRQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2NyaXB0Lm9ubG9hZCA9IHNjcmlwdC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBu
dWxsOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBSZW1vdmUgdGhlIHNjcmlwdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCBoZWFkICYmIHNjcmlwdC5wYXJlbnROb2RlICkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkLnJlbW92
ZUNoaWxkKCBzY3JpcHQgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gRGVyZWZlcmVuY2UgdGhlIHNjcmlwdAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0ID0gdW5kZWZpbmVkOwotCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDYWxsYmFjayBpZiBub3Qg
YWJvcnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICggIWlzQWJvcnQgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNhbGxiYWNrKCAyMDAsICJzdWNjZXNzIiApOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVXNlIGluc2VydEJlZm9yZSBp
bnN0ZWFkIG9mIGFwcGVuZENoaWxkICB0byBjaXJjdW12ZW50IGFuIElFNiBidWcuCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgYXJpc2VzIHdoZW4gYSBiYXNlIG5vZGUg
aXMgdXNlZCAoIzI3MDkgYW5kICM0Mzc4KS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaGVhZC5pbnNlcnRCZWZvcmUoIHNjcmlwdCwgaGVhZC5maXJzdENoaWxkICk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICB9LAotCi0gICAgICAgICAgICAgICAgICAgICAgICBhYm9ydDogZnVu
Y3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggc2NyaXB0ICkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdC5vbmxvYWQo
IDAsIDEgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH07Ci0gICAgICAgIH0KLX0pOwotdmFyIHho
ckNhbGxiYWNrcywKLSAgICAgICAgLy8gIzUyODA6IEludGVybmV0IEV4cGxvcmVyIHdpbGwga2Vl
cCBjb25uZWN0aW9ucyBhbGl2ZSBpZiB3ZSBkb24ndCBhYm9ydCBvbiB1bmxvYWQKLSAgICAgICAg
eGhyT25VbmxvYWRBYm9ydCA9IHdpbmRvdy5BY3RpdmVYT2JqZWN0ID8gZnVuY3Rpb24oKSB7Ci0g
ICAgICAgICAgICAgICAgLy8gQWJvcnQgYWxsIHBlbmRpbmcgcmVxdWVzdHMKLSAgICAgICAgICAg
ICAgICBmb3IgKCB2YXIga2V5IGluIHhockNhbGxiYWNrcyApIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHhockNhbGxiYWNrc1sga2V5IF0oIDAsIDEgKTsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgIH0gOiBmYWxzZSwKLSAgICAgICAgeGhySWQgPSAwOwotCi0vLyBGdW5jdGlvbnMgdG8g
Y3JlYXRlIHhocnMKLWZ1bmN0aW9uIGNyZWF0ZVN0YW5kYXJkWEhSKCkgewotICAgICAgICB0cnkg
ewotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgd2luZG93LlhNTEh0dHBSZXF1ZXN0KCk7Ci0g
ICAgICAgIH0gY2F0Y2goIGUgKSB7fQotfQotCi1mdW5jdGlvbiBjcmVhdGVBY3RpdmVYSFIoKSB7
Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyB3aW5kb3cuQWN0aXZl
WE9iamVjdCggIk1pY3Jvc29mdC5YTUxIVFRQIiApOwotICAgICAgICB9IGNhdGNoKCBlICkge30K
LX0KLQotLy8gQ3JlYXRlIHRoZSByZXF1ZXN0IG9iamVjdAotLy8gKFRoaXMgaXMgc3RpbGwgYXR0
YWNoZWQgdG8gYWpheFNldHRpbmdzIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5KQotalF1ZXJ5
LmFqYXhTZXR0aW5ncy54aHIgPSB3aW5kb3cuQWN0aXZlWE9iamVjdCA/Ci0gICAgICAgIC8qIE1p
Y3Jvc29mdCBmYWlsZWQgdG8gcHJvcGVybHkKLSAgICAgICAgICogaW1wbGVtZW50IHRoZSBYTUxI
dHRwUmVxdWVzdCBpbiBJRTcgKGNhbid0IHJlcXVlc3QgbG9jYWwgZmlsZXMpLAotICAgICAgICAg
KiBzbyB3ZSB1c2UgdGhlIEFjdGl2ZVhPYmplY3Qgd2hlbiBpdCBpcyBhdmFpbGFibGUKLSAgICAg
ICAgICogQWRkaXRpb25hbGx5IFhNTEh0dHBSZXF1ZXN0IGNhbiBiZSBkaXNhYmxlZCBpbiBJRTcv
SUU4IHNvCi0gICAgICAgICAqIHdlIG5lZWQgYSBmYWxsYmFjay4KLSAgICAgICAgICovCi0gICAg
ICAgIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIHJldHVybiAhdGhpcy5pc0xvY2FsICYm
IGNyZWF0ZVN0YW5kYXJkWEhSKCkgfHwgY3JlYXRlQWN0aXZlWEhSKCk7Ci0gICAgICAgIH0gOgot
ICAgICAgICAvLyBGb3IgYWxsIG90aGVyIGJyb3dzZXJzLCB1c2UgdGhlIHN0YW5kYXJkIFhNTEh0
dHBSZXF1ZXN0IG9iamVjdAotICAgICAgICBjcmVhdGVTdGFuZGFyZFhIUjsKLQotLy8gRGV0ZXJt
aW5lIHN1cHBvcnQgcHJvcGVydGllcwotKGZ1bmN0aW9uKCB4aHIgKSB7Ci0gICAgICAgIGpRdWVy
eS5leHRlbmQoIGpRdWVyeS5zdXBwb3J0LCB7Ci0gICAgICAgICAgICAgICAgYWpheDogISF4aHIs
Ci0gICAgICAgICAgICAgICAgY29yczogISF4aHIgJiYgKCAid2l0aENyZWRlbnRpYWxzIiBpbiB4
aHIgKQotICAgICAgICB9KTsKLX0pKCBqUXVlcnkuYWpheFNldHRpbmdzLnhocigpICk7Ci0KLS8v
IENyZWF0ZSB0cmFuc3BvcnQgaWYgdGhlIGJyb3dzZXIgY2FuIHByb3ZpZGUgYW4geGhyCi1pZiAo
IGpRdWVyeS5zdXBwb3J0LmFqYXggKSB7Ci0KLSAgICAgICAgalF1ZXJ5LmFqYXhUcmFuc3BvcnQo
ZnVuY3Rpb24oIHMgKSB7Ci0gICAgICAgICAgICAgICAgLy8gQ3Jvc3MgZG9tYWluIG9ubHkgYWxs
b3dlZCBpZiBzdXBwb3J0ZWQgdGhyb3VnaCBYTUxIdHRwUmVxdWVzdAotICAgICAgICAgICAgICAg
IGlmICggIXMuY3Jvc3NEb21haW4gfHwgalF1ZXJ5LnN1cHBvcnQuY29ycyApIHsKLQotICAgICAg
ICAgICAgICAgICAgICAgICAgdmFyIGNhbGxiYWNrOwotCi0gICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5kOiBmdW5jdGlv
biggaGVhZGVycywgY29tcGxldGUgKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBHZXQgYSBuZXcgeGhyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdmFyIGhhbmRsZSwgaSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHhociA9IHMueGhyKCk7Ci0KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBPcGVuIHRoZSBzb2NrZXQKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBQYXNzaW5nIG51bGwgdXNlcm5hbWUsIGdlbmVyYXRl
cyBhIGxvZ2luIHBvcHVwIG9uIE9wZXJhICgjMjg2NSkKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoIHMudXNlcm5hbWUgKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4aHIub3Blbiggcy50eXBlLCBzLnVybCwgcy5h
c3luYywgcy51c2VybmFtZSwgcy5wYXNzd29yZCApOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB4aHIub3Blbiggcy50eXBlLCBzLnVybCwgcy5hc3luYyApOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFwcGx5IGN1c3RvbSBmaWVsZHMgaWYgcHJvdmlk
ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHMueGhyRmll
bGRzICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Zm9yICggaSBpbiBzLnhockZpZWxkcyApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgeGhyWyBpIF0gPSBzLnhockZpZWxkc1sgaSBdOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIE92ZXJyaWRlIG1pbWUgdHlwZSBpZiBuZWVkZWQKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHMubWltZVR5cGUgJiYg
eGhyLm92ZXJyaWRlTWltZVR5cGUgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB4aHIub3ZlcnJpZGVNaW1lVHlwZSggcy5taW1lVHlwZSApOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFgtUmVxdWVzdGVkLVdpdGggaGVhZGVyCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRm9yIGNyb3NzLWRvbWFpbiBy
ZXF1ZXN0cywgc2VlaW5nIGFzIGNvbmRpdGlvbnMgZm9yIGEgcHJlZmxpZ2h0IGFyZQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFraW4gdG8gYSBqaWdzYXcgcHV6
emxlLCB3ZSBzaW1wbHkgbmV2ZXIgc2V0IGl0IHRvIGJlIHN1cmUuCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gKGl0IGNhbiBhbHdheXMgYmUgc2V0IG9uIGEgcGVy
LXJlcXVlc3QgYmFzaXMgb3IgZXZlbiB1c2luZyBhamF4U2V0dXApCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gRm9yIHNhbWUtZG9tYWluIHJlcXVlc3RzLCB3b24n
dCBjaGFuZ2UgaGVhZGVyIGlmIGFscmVhZHkgcHJvdmlkZWQuCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCAhcy5jcm9zc0RvbWFpbiAmJiAhaGVhZGVyc1siWC1S
ZXF1ZXN0ZWQtV2l0aCJdICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaGVhZGVyc1sgIlgtUmVxdWVzdGVkLVdpdGgiIF0gPSAiWE1MSHR0cFJlcXVl
c3QiOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5lZWQgYW4gZXh0cmEgdHJ5L2Nh
dGNoIGZvciBjcm9zcyBkb21haW4gcmVxdWVzdHMgaW4gRmlyZWZveCAzCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoIGkgaW4gaGVhZGVycyApIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGhyLnNldFJl
cXVlc3RIZWFkZXIoIGksIGhlYWRlcnNbIGkgXSApOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0gY2F0Y2goIF8gKSB7fQotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gRG8gc2VuZCB0aGUgcmVxdWVzdAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgbWF5IHJhaXNlIGFuIGV4Y2VwdGlvbiB3aGljaCBp
cyBhY3R1YWxseQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhh
bmRsZWQgaW4galF1ZXJ5LmFqYXggKHNvIG5vIHRyeS9jYXRjaCBoZXJlKQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhoci5zZW5kKCAoIHMuaGFzQ29udGVudCAmJiBz
LmRhdGEgKSB8fCBudWxsICk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBMaXN0ZW5lcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNhbGxiYWNrID0gZnVuY3Rpb24oIF8sIGlzQWJvcnQgKSB7Ci0KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdGF0dXMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c1RleHQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
c3BvbnNlSGVhZGVycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVzcG9uc2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB4bWw7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZpcmVmb3ggdGhyb3dzIGV4Y2VwdGlvbnMgd2hl
biBhY2Nlc3NpbmcgcHJvcGVydGllcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gb2YgYW4geGhyIHdoZW4gYSBuZXR3b3JrIGVycm9yIG9jY3VycmVk
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBodHRw
Oi8vaGVscGZ1bC5rbm9icy1kaWFscy5jb20vaW5kZXgucGhwL0NvbXBvbmVudF9yZXR1cm5lZF9m
YWlsdXJlX2NvZGU6XzB4ODAwNDAxMTFfKE5TX0VSUk9SX05PVF9BVkFJTEFCTEUpCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewotCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdhcyBu
ZXZlciBjYWxsZWQgYW5kIGlzIGFib3J0ZWQgb3IgY29tcGxldGUKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBjYWxsYmFjayAmJiAo
IGlzQWJvcnQgfHwgeGhyLnJlYWR5U3RhdGUgPT09IDQgKSApIHsKLQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE9ubHkg
Y2FsbGVkIG9uY2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayA9IHVuZGVmaW5lZDsKLQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERv
IG5vdCBrZWVwIGFzIGFjdGl2ZSBhbnltb3JlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBoYW5kbGUgKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0galF1ZXJ5Lm5vb3A7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoIHhock9uVW5sb2FkQWJvcnQgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRlbGV0ZSB4aHJDYWxsYmFja3NbIGhhbmRsZSBdOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIElmIGl0J3MgYW4gYWJvcnQKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGlzQWJvcnQgKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBBYm9ydCBpdCBtYW51YWxseSBpZiBuZWVkZWQKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICggeGhyLnJlYWR5U3RhdGUgIT09IDQgKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHhoci5hYm9ydCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGF0dXMgPSB4aHIuc3RhdHVzOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VI
ZWFkZXJzID0geGhyLmdldEFsbFJlc3BvbnNlSGVhZGVycygpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVz
cG9uc2VzID0ge307Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWwgPSB4aHIucmVzcG9uc2VYTUw7Ci0KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIENvbnN0cnVjdCByZXNwb25zZSBsaXN0Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoIHhtbCAmJiB4bWwuZG9jdW1lbnRFbGVtZW50IC8qICM0OTU4ICovICkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXNwb25zZXMueG1sID0geG1sOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBXaGVuIHJlcXVlc3RpbmcgYmluYXJ5IGRhdGEsIElFNi05IHdpbGwg
dGhyb3cgYW4gZXhjZXB0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvbiBhbnkgYXR0ZW1wdCB0byBh
Y2Nlc3MgcmVzcG9uc2VUZXh0ICgjMTE0MjYpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXNwb25zZXMudGV4dCA9IHhoci5yZXNwb25zZVRleHQ7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9IGNhdGNoKCBlICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBGaXJlZm94IHRocm93cyBhbiBleGNlcHRpb24gd2hlbiBhY2Nlc3NpbmcKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIHN0YXR1c1RleHQgZm9yIGZhdWx0eSBjcm9zcy1kb21haW4gcmVxdWVzdHMK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c1RleHQg
PSB4aHIuc3RhdHVzVGV4dDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2goIGUgKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIFdlIG5vcm1hbGl6ZSB3aXRoIFdlYmtpdCBnaXZpbmcgYW4gZW1w
dHkgc3RhdHVzVGV4dAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXNUZXh0ID0gIiI7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZpbHRlciBzdGF0dXMgZm9yIG5v
biBzdGFuZGFyZCBiZWhhdmlvcnMKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHJlcXVlc3Qg
aXMgbG9jYWwgYW5kIHdlIGhhdmUgZGF0YTogYXNzdW1lIGEgc3VjY2VzcwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gKHN1Y2Nlc3Mgd2l0aCBubyBkYXRhIHdvbid0IGdldCBub3RpZmllZCwgdGhhdCdzIHRo
ZSBiZXN0IHdlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYW4gZG8gZ2l2ZW4gY3VycmVudCBpbXBsZW1l
bnRhdGlvbnMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICFzdGF0dXMgJiYgcy5pc0xvY2FsICYmICFz
LmNyb3NzRG9tYWluICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSByZXNwb25z
ZXMudGV4dCA/IDIwMCA6IDQwNDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElFIC0gIzE0NTA6IHNvbWV0
aW1lcyByZXR1cm5zIDEyMjMgd2hlbiBpdCBzaG91bGQgYmUgMjA0Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgaWYgKCBzdGF0dXMgPT09IDEyMjMgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
YXR1cyA9IDIwNDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2goIGZpcmVmb3hBY2Nlc3NF
eGNlcHRpb24gKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICggIWlzQWJvcnQgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGUoIC0xLCBmaXJl
Zm94QWNjZXNzRXhjZXB0aW9uICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gQ2FsbCBjb21wbGV0ZSBpZiBuZWVkZWQKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggcmVzcG9uc2VzICkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0
ZSggc3RhdHVzLCBzdGF0dXNUZXh0LCByZXNwb25zZXMsIHJlc3BvbnNlSGVhZGVycyApOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07Ci0KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoICFzLmFzeW5jICkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgd2UncmUgaW4gc3luYyBtb2RlIHdl
IGZpcmUgdGhlIGNhbGxiYWNrCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjYWxsYmFjaygpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0gZWxzZSBpZiAoIHhoci5yZWFkeVN0YXRlID09PSA0ICkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKElFNiAmIElFNykgaWYgaXQn
cyBpbiBjYWNoZSBhbmQgaGFzIGJlZW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIHJldHJpZXZlZCBkaXJlY3RseSB3ZSBuZWVkIHRvIGZpcmUgdGhl
IGNhbGxiYWNrCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXRUaW1lb3V0KCBjYWxsYmFjaywgMCApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBoYW5kbGUgPSArK3hocklkOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCB4aHJPblVubG9hZEFib3J0ICkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDcmVh
dGUgdGhlIGFjdGl2ZSB4aHJzIGNhbGxiYWNrcyBsaXN0IGlmIG5lZWRlZAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgYXR0YWNo
IHRoZSB1bmxvYWQgaGFuZGxlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoICF4aHJDYWxsYmFja3MgKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGhyQ2Fs
bGJhY2tzID0ge307Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KCB3aW5kb3cgKS51bmxvYWQoIHhock9uVW5sb2Fk
QWJvcnQgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBBZGQgdG8gbGlzdCBvZiBhY3RpdmUgeGhycyBjYWxsYmFja3MKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGhyQ2Fs
bGJhY2tzWyBoYW5kbGUgXSA9IGNhbGxiYWNrOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGNhbGxiYWNrOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfSwKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYm9ydDog
ZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCBjYWxsYmFjayApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNhbGxiYWNrKDAsMSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgICAgICB9OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgfSk7Ci19Ci12YXIgZnhO
b3csIHRpbWVySWQsCi0gICAgICAgIHJmeHR5cGVzID0gL14oPzp0b2dnbGV8c2hvd3xoaWRlKSQv
LAotICAgICAgICByZnhudW0gPSBuZXcgUmVnRXhwKCAiXig/OihbLStdKT18KSgiICsgY29yZV9w
bnVtICsgIikoW2EteiVdKikkIiwgImkiICksCi0gICAgICAgIHJydW4gPSAvcXVldWVIb29rcyQv
LAotICAgICAgICBhbmltYXRpb25QcmVmaWx0ZXJzID0gWyBkZWZhdWx0UHJlZmlsdGVyIF0sCi0g
ICAgICAgIHR3ZWVuZXJzID0gewotICAgICAgICAgICAgICAgICIqIjogW2Z1bmN0aW9uKCBwcm9w
LCB2YWx1ZSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlbmQsIHVuaXQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR3ZWVuID0gdGhpcy5jcmVhdGVUd2VlbiggcHJv
cCwgdmFsdWUgKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydHMgPSByZnhu
dW0uZXhlYyggdmFsdWUgKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0
ID0gdHdlZW4uY3VyKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0ID0g
K3RhcmdldCB8fCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsZSA9IDEs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEl0ZXJhdGlvbnMgPSAyMDsKLQot
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBwYXJ0cyApIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZW5kID0gK3BhcnRzWzJdOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bml0ID0gcGFydHNbM10gfHwgKCBqUXVlcnkuY3NzTnVtYmVyWyBwcm9wIF0gPyAi
IiA6ICJweCIgKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBuZWVk
IHRvIGNvbXB1dGUgc3RhcnRpbmcgdmFsdWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCB1bml0ICE9PSAicHgiICYmIHN0YXJ0ICkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIEl0ZXJhdGl2ZWx5IGFwcHJveGltYXRlIGZyb20gYSBub256
ZXJvIHN0YXJ0aW5nIHBvaW50Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gUHJlZmVyIHRoZSBjdXJyZW50IHByb3BlcnR5LCBiZWNhdXNlIHRoaXMgcHJvY2VzcyB3
aWxsIGJlIHRyaXZpYWwgaWYgaXQgdXNlcyB0aGUgc2FtZSB1bml0cwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZhbGxiYWNrIHRvIGVuZCBvciBhIHNpbXBsZSBj
b25zdGFudAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0ID0g
alF1ZXJ5LmNzcyggdHdlZW4uZWxlbSwgcHJvcCwgdHJ1ZSApIHx8IGVuZCB8fCAxOwotCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG8gewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgcHJldmlvdXMgaXRlcmF0aW9u
IHplcm9lZCBvdXQsIGRvdWJsZSB1bnRpbCB3ZSBnZXQgKnNvbWV0aGluZyoKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFVzZSBhIHN0cmluZyBmb3Ig
ZG91YmxpbmcgZmFjdG9yIHNvIHdlIGRvbid0IGFjY2lkZW50YWxseSBzZWUgc2NhbGUgYXMgdW5j
aGFuZ2VkIGJlbG93Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzY2FsZSA9IHNjYWxlIHx8ICIuNSI7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIEFkanVzdCBhbmQgYXBwbHkKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0ID0gc3RhcnQgLyBzY2FsZTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5z
dHlsZSggdHdlZW4uZWxlbSwgcHJvcCwgc3RhcnQgKyB1bml0ICk7Ci0KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBVcGRhdGUgc2NhbGUsIHRvbGVyYXRpbmcgemVy
byBvciBOYU4gZnJvbSB0d2Vlbi5jdXIoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIEFuZCBicmVha2luZyB0aGUgbG9vcCBpZiBzY2FsZSBpcyB1bmNoYW5nZWQg
b3IgcGVyZmVjdCwgb3IgaWYgd2UndmUganVzdCBoYWQgZW5vdWdoCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoIHNjYWxlICE9PSAoc2NhbGUgPSB0d2Vl
bi5jdXIoKSAvIHRhcmdldCkgJiYgc2NhbGUgIT09IDEgJiYgLS1tYXhJdGVyYXRpb25zICk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0d2Vlbi51bml0ID0gdW5pdDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdHdlZW4uc3RhcnQgPSBzdGFydDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gSWYgYSArPS8tPSB0b2tlbiB3YXMgcHJvdmlkZWQsIHdlJ3JlIGRvaW5nIGEgcmVsYXRp
dmUgYW5pbWF0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR3ZWVuLmVuZCA9
IHBhcnRzWzFdID8gc3RhcnQgKyAoIHBhcnRzWzFdICsgMSApICogZW5kIDogZW5kOwotICAgICAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHR3ZWVu
OwotICAgICAgICAgICAgICAgIH1dCi0gICAgICAgIH07Ci0KLS8vIEFuaW1hdGlvbnMgY3JlYXRl
ZCBzeW5jaHJvbm91c2x5IHdpbGwgcnVuIHN5bmNocm9ub3VzbHkKLWZ1bmN0aW9uIGNyZWF0ZUZ4
Tm93KCkgewotICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAg
IGZ4Tm93ID0gdW5kZWZpbmVkOwotICAgICAgICB9LCAwICk7Ci0gICAgICAgIHJldHVybiAoIGZ4
Tm93ID0galF1ZXJ5Lm5vdygpICk7Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZVR3ZWVucyggYW5pbWF0
aW9uLCBwcm9wcyApIHsKLSAgICAgICAgalF1ZXJ5LmVhY2goIHByb3BzLCBmdW5jdGlvbiggcHJv
cCwgdmFsdWUgKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGNvbGxlY3Rpb24gPSAoIHR3ZWVuZXJz
WyBwcm9wIF0gfHwgW10gKS5jb25jYXQoIHR3ZWVuZXJzWyAiKiIgXSApLAotICAgICAgICAgICAg
ICAgICAgICAgICAgaW5kZXggPSAwLAotICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoID0g
Y29sbGVjdGlvbi5sZW5ndGg7Ci0gICAgICAgICAgICAgICAgZm9yICggOyBpbmRleCA8IGxlbmd0
aDsgaW5kZXgrKyApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICggY29sbGVjdGlvblsg
aW5kZXggXS5jYWxsKCBhbmltYXRpb24sIHByb3AsIHZhbHVlICkgKSB7Ci0KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gd2UncmUgZG9uZSB3aXRoIHRoaXMgcHJvcGVydHkKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgfSk7Ci19Ci0KLWZ1bmN0aW9uIEFu
aW1hdGlvbiggZWxlbSwgcHJvcGVydGllcywgb3B0aW9ucyApIHsKLSAgICAgICAgdmFyIHJlc3Vs
dCwKLSAgICAgICAgICAgICAgICBpbmRleCA9IDAsCi0gICAgICAgICAgICAgICAgdHdlZW5lcklu
ZGV4ID0gMCwKLSAgICAgICAgICAgICAgICBsZW5ndGggPSBhbmltYXRpb25QcmVmaWx0ZXJzLmxl
bmd0aCwKLSAgICAgICAgICAgICAgICBkZWZlcnJlZCA9IGpRdWVyeS5EZWZlcnJlZCgpLmFsd2F5
cyggZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBkb24ndCBtYXRjaCBl
bGVtIGluIHRoZSA6YW5pbWF0ZWQgc2VsZWN0b3IKLSAgICAgICAgICAgICAgICAgICAgICAgIGRl
bGV0ZSB0aWNrLmVsZW07Ci0gICAgICAgICAgICAgICAgfSksCi0gICAgICAgICAgICAgICAgdGlj
ayA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGN1cnJlbnRUaW1l
ID0gZnhOb3cgfHwgY3JlYXRlRnhOb3coKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVtYWluaW5nID0gTWF0aC5tYXgoIDAsIGFuaW1hdGlvbi5zdGFydFRpbWUgKyBhbmltYXRp
b24uZHVyYXRpb24gLSBjdXJyZW50VGltZSApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBhcmNoYWljIGNyYXNoIGJ1ZyB3b24ndCBhbGxvdyB1cyB0byB1c2UgMSAtICggMC41
IHx8IDAgKSAoIzEyNDk3KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wID0g
cmVtYWluaW5nIC8gYW5pbWF0aW9uLmR1cmF0aW9uIHx8IDAsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBlcmNlbnQgPSAxIC0gdGVtcCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW5kZXggPSAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW5n
dGggPSBhbmltYXRpb24udHdlZW5zLmxlbmd0aDsKLQotICAgICAgICAgICAgICAgICAgICAgICAg
Zm9yICggOyBpbmRleCA8IGxlbmd0aCA7IGluZGV4KysgKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFuaW1hdGlvbi50d2VlbnNbIGluZGV4IF0ucnVuKCBwZXJjZW50ICk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVy
cmVkLm5vdGlmeVdpdGgoIGVsZW0sIFsgYW5pbWF0aW9uLCBwZXJjZW50LCByZW1haW5pbmcgXSk7
Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICggcGVyY2VudCA8IDEgJiYgbGVuZ3RoICkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVtYWluaW5nOwotICAg
ICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGVmZXJyZWQucmVzb2x2ZVdpdGgoIGVsZW0sIFsgYW5pbWF0aW9uIF0gKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgYW5pbWF0aW9u
ID0gZGVmZXJyZWQucHJvbWlzZSh7Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbGVtOiBlbGVt
LAotICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM6IGpRdWVyeS5leHRlbmQoIHt9LCBwcm9w
ZXJ0aWVzICksCi0gICAgICAgICAgICAgICAgICAgICAgICBvcHRzOiBqUXVlcnkuZXh0ZW5kKCB0
cnVlLCB7IHNwZWNpYWxFYXNpbmc6IHt9IH0sIG9wdGlvbnMgKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG9yaWdpbmFsUHJvcGVydGllczogcHJvcGVydGllcywKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG9yaWdpbmFsT3B0aW9uczogb3B0aW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAg
IHN0YXJ0VGltZTogZnhOb3cgfHwgY3JlYXRlRnhOb3coKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGR1cmF0aW9uOiBvcHRpb25zLmR1cmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAg
dHdlZW5zOiBbXSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZVR3ZWVuOiBmdW5jdGlv
biggcHJvcCwgZW5kLCBlYXNpbmcgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZhciB0d2VlbiA9IGpRdWVyeS5Ud2VlbiggZWxlbSwgYW5pbWF0aW9uLm9wdHMsIHByb3AsIGVu
ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1h
dGlvbi5vcHRzLnNwZWNpYWxFYXNpbmdbIHByb3AgXSB8fCBhbmltYXRpb24ub3B0cy5lYXNpbmcg
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLnR3ZWVucy5wdXNo
KCB0d2VlbiApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHdlZW47
Ci0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgc3Rv
cDogZnVuY3Rpb24oIGdvdG9FbmQgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZhciBpbmRleCA9IDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gaWYgd2UgYXJlIGdvaW5nIHRvIHRoZSBlbmQsIHdlIHdhbnQgdG8gcnVuIGFsbCB0aGUgdHdl
ZW5zCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3RoZXJ3aXNl
IHdlIHNraXAgdGhpcyBwYXJ0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbGVuZ3RoID0gZ290b0VuZCA/IGFuaW1hdGlvbi50d2VlbnMubGVuZ3RoIDogMDsKLQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKCA7IGluZGV4IDwgbGVuZ3RoIDsgaW5k
ZXgrKyApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRp
b24udHdlZW5zWyBpbmRleCBdLnJ1biggMSApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVzb2x2ZSB3aGVu
IHdlIHBsYXllZCB0aGUgbGFzdCBmcmFtZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBvdGhlcndpc2UsIHJlamVjdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoIGdvdG9FbmQgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGVmZXJyZWQucmVzb2x2ZVdpdGgoIGVsZW0sIFsgYW5pbWF0aW9uLCBnb3RvRW5kIF0gKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3RXaXRoKCBlbGVtLCBbIGFuaW1h
dGlvbiwgZ290b0VuZCBdICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSksCi0gICAgICAgICAgICAgICAgcHJvcHMg
PSBhbmltYXRpb24ucHJvcHM7Ci0KLSAgICAgICAgcHJvcEZpbHRlciggcHJvcHMsIGFuaW1hdGlv
bi5vcHRzLnNwZWNpYWxFYXNpbmcgKTsKLQotICAgICAgICBmb3IgKCA7IGluZGV4IDwgbGVuZ3Ro
IDsgaW5kZXgrKyApIHsKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBhbmltYXRpb25QcmVmaWx0
ZXJzWyBpbmRleCBdLmNhbGwoIGFuaW1hdGlvbiwgZWxlbSwgcHJvcHMsIGFuaW1hdGlvbi5vcHRz
ICk7Ci0gICAgICAgICAgICAgICAgaWYgKCByZXN1bHQgKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAg
ICAgIGNyZWF0ZVR3ZWVucyggYW5pbWF0aW9uLCBwcm9wcyApOwotCi0gICAgICAgIGlmICggalF1
ZXJ5LmlzRnVuY3Rpb24oIGFuaW1hdGlvbi5vcHRzLnN0YXJ0ICkgKSB7Ci0gICAgICAgICAgICAg
ICAgYW5pbWF0aW9uLm9wdHMuc3RhcnQuY2FsbCggZWxlbSwgYW5pbWF0aW9uICk7Ci0gICAgICAg
IH0KLQotICAgICAgICBqUXVlcnkuZngudGltZXIoCi0gICAgICAgICAgICAgICAgalF1ZXJ5LmV4
dGVuZCggdGljaywgewotICAgICAgICAgICAgICAgICAgICAgICAgYW5pbTogYW5pbWF0aW9uLAot
ICAgICAgICAgICAgICAgICAgICAgICAgcXVldWU6IGFuaW1hdGlvbi5vcHRzLnF1ZXVlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgZWxlbTogZWxlbQotICAgICAgICAgICAgICAgIH0pCi0gICAg
ICAgICk7Ci0KLSAgICAgICAgLy8gYXR0YWNoIGNhbGxiYWNrcyBmcm9tIG9wdGlvbnMKLSAgICAg
ICAgcmV0dXJuIGFuaW1hdGlvbi5wcm9ncmVzcyggYW5pbWF0aW9uLm9wdHMucHJvZ3Jlc3MgKQot
ICAgICAgICAgICAgICAgIC5kb25lKCBhbmltYXRpb24ub3B0cy5kb25lLCBhbmltYXRpb24ub3B0
cy5jb21wbGV0ZSApCi0gICAgICAgICAgICAgICAgLmZhaWwoIGFuaW1hdGlvbi5vcHRzLmZhaWwg
KQotICAgICAgICAgICAgICAgIC5hbHdheXMoIGFuaW1hdGlvbi5vcHRzLmFsd2F5cyApOwotfQot
Ci1mdW5jdGlvbiBwcm9wRmlsdGVyKCBwcm9wcywgc3BlY2lhbEVhc2luZyApIHsKLSAgICAgICAg
dmFyIGluZGV4LCBuYW1lLCBlYXNpbmcsIHZhbHVlLCBob29rczsKLQotICAgICAgICAvLyBjYW1l
bENhc2UsIHNwZWNpYWxFYXNpbmcgYW5kIGV4cGFuZCBjc3NIb29rIHBhc3MKLSAgICAgICAgZm9y
ICggaW5kZXggaW4gcHJvcHMgKSB7Ci0gICAgICAgICAgICAgICAgbmFtZSA9IGpRdWVyeS5jYW1l
bENhc2UoIGluZGV4ICk7Ci0gICAgICAgICAgICAgICAgZWFzaW5nID0gc3BlY2lhbEVhc2luZ1sg
bmFtZSBdOwotICAgICAgICAgICAgICAgIHZhbHVlID0gcHJvcHNbIGluZGV4IF07Ci0gICAgICAg
ICAgICAgICAgaWYgKCBqUXVlcnkuaXNBcnJheSggdmFsdWUgKSApIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGVhc2luZyA9IHZhbHVlWyAxIF07Ci0gICAgICAgICAgICAgICAgICAgICAgICB2
YWx1ZSA9IHByb3BzWyBpbmRleCBdID0gdmFsdWVbIDAgXTsKLSAgICAgICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgICAgICBpZiAoIGluZGV4ICE9PSBuYW1lICkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgcHJvcHNbIG5hbWUgXSA9IHZhbHVlOwotICAgICAgICAgICAgICAgICAgICAgICAg
ZGVsZXRlIHByb3BzWyBpbmRleCBdOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
ICAgIGhvb2tzID0galF1ZXJ5LmNzc0hvb2tzWyBuYW1lIF07Ci0gICAgICAgICAgICAgICAgaWYg
KCBob29rcyAmJiAiZXhwYW5kIiBpbiBob29rcyApIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHZhbHVlID0gaG9va3MuZXhwYW5kKCB2YWx1ZSApOwotICAgICAgICAgICAgICAgICAgICAgICAg
ZGVsZXRlIHByb3BzWyBuYW1lIF07Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5vdCBx
dWl0ZSAkLmV4dGVuZCwgdGhpcyB3b250IG92ZXJ3cml0ZSBrZXlzIGFscmVhZHkgcHJlc2VudC4K
LSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFsc28gLSByZXVzaW5nICdpbmRleCcgZnJvbSBh
Ym92ZSBiZWNhdXNlIHdlIGhhdmUgdGhlIGNvcnJlY3QgIm5hbWUiCi0gICAgICAgICAgICAgICAg
ICAgICAgICBmb3IgKCBpbmRleCBpbiB2YWx1ZSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCAhKCBpbmRleCBpbiBwcm9wcyApICkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHByb3BzWyBpbmRleCBdID0gdmFsdWVbIGluZGV4IF07Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lhbEVhc2luZ1sgaW5k
ZXggXSA9IGVhc2luZzsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBzcGVjaWFsRWFzaW5nWyBuYW1lIF0gPSBlYXNpbmc7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICB9Ci19Ci0KLWpRdWVyeS5BbmltYXRpb24gPSBqUXVlcnkuZXh0ZW5k
KCBBbmltYXRpb24sIHsKLQotICAgICAgICB0d2VlbmVyOiBmdW5jdGlvbiggcHJvcHMsIGNhbGxi
YWNrICkgewotICAgICAgICAgICAgICAgIGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIHByb3BzICkg
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayA9IHByb3BzOwotICAgICAgICAg
ICAgICAgICAgICAgICAgcHJvcHMgPSBbICIqIiBdOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcyA9IHByb3BzLnNwbGl0KCIgIik7Ci0gICAg
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgdmFyIHByb3AsCi0gICAgICAgICAgICAg
ICAgICAgICAgICBpbmRleCA9IDAsCi0gICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGggPSBw
cm9wcy5sZW5ndGg7Ci0KLSAgICAgICAgICAgICAgICBmb3IgKCA7IGluZGV4IDwgbGVuZ3RoIDsg
aW5kZXgrKyApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHByb3AgPSBwcm9wc1sgaW5kZXgg
XTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHR3ZWVuZXJzWyBwcm9wIF0gPSB0d2VlbmVyc1sg
cHJvcCBdIHx8IFtdOwotICAgICAgICAgICAgICAgICAgICAgICAgdHdlZW5lcnNbIHByb3AgXS51
bnNoaWZ0KCBjYWxsYmFjayApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgfSwKLQotICAg
ICAgICBwcmVmaWx0ZXI6IGZ1bmN0aW9uKCBjYWxsYmFjaywgcHJlcGVuZCApIHsKLSAgICAgICAg
ICAgICAgICBpZiAoIHByZXBlbmQgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRp
b25QcmVmaWx0ZXJzLnVuc2hpZnQoIGNhbGxiYWNrICk7Ci0gICAgICAgICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvblByZWZpbHRlcnMucHVzaCggY2Fs
bGJhY2sgKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgIH0KLX0pOwotCi1mdW5jdGlvbiBk
ZWZhdWx0UHJlZmlsdGVyKCBlbGVtLCBwcm9wcywgb3B0cyApIHsKLSAgICAgICAgdmFyIGluZGV4
LCBwcm9wLCB2YWx1ZSwgbGVuZ3RoLCBkYXRhU2hvdywgdG9nZ2xlLCB0d2VlbiwgaG9va3MsIG9s
ZGZpcmUsCi0gICAgICAgICAgICAgICAgYW5pbSA9IHRoaXMsCi0gICAgICAgICAgICAgICAgc3R5
bGUgPSBlbGVtLnN0eWxlLAotICAgICAgICAgICAgICAgIG9yaWcgPSB7fSwKLSAgICAgICAgICAg
ICAgICBoYW5kbGVkID0gW10sCi0gICAgICAgICAgICAgICAgaGlkZGVuID0gZWxlbS5ub2RlVHlw
ZSAmJiBpc0hpZGRlbiggZWxlbSApOwotCi0gICAgICAgIC8vIGhhbmRsZSBxdWV1ZTogZmFsc2Ug
cHJvbWlzZXMKLSAgICAgICAgaWYgKCAhb3B0cy5xdWV1ZSApIHsKLSAgICAgICAgICAgICAgICBo
b29rcyA9IGpRdWVyeS5fcXVldWVIb29rcyggZWxlbSwgImZ4IiApOwotICAgICAgICAgICAgICAg
IGlmICggaG9va3MudW5xdWV1ZWQgPT0gbnVsbCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGhvb2tzLnVucXVldWVkID0gMDsKLSAgICAgICAgICAgICAgICAgICAgICAgIG9sZGZpcmUgPSBo
b29rcy5lbXB0eS5maXJlOwotICAgICAgICAgICAgICAgICAgICAgICAgaG9va3MuZW1wdHkuZmly
ZSA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICFo
b29rcy51bnF1ZXVlZCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvbGRmaXJlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGhv
b2tzLnVucXVldWVkKys7Ci0KLSAgICAgICAgICAgICAgICBhbmltLmFsd2F5cyhmdW5jdGlvbigp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvaW5nIHRoaXMgbWFrZXMgc3VyZSB0aGF0
IHRoZSBjb21wbGV0ZSBoYW5kbGVyIHdpbGwgYmUgY2FsbGVkCi0gICAgICAgICAgICAgICAgICAg
ICAgICAvLyBiZWZvcmUgdGhpcyBjb21wbGV0ZXMKLSAgICAgICAgICAgICAgICAgICAgICAgIGFu
aW0uYWx3YXlzKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBo
b29rcy51bnF1ZXVlZC0tOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICFq
UXVlcnkucXVldWUoIGVsZW0sICJmeCIgKS5sZW5ndGggKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaG9va3MuZW1wdHkuZmlyZSgpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAg
ICAgICAgICB9KTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIGhlaWdodC93aWR0aCBvdmVyZmxv
dyBwYXNzCi0gICAgICAgIGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSAmJiAoICJoZWlnaHQiIGlu
IHByb3BzIHx8ICJ3aWR0aCIgaW4gcHJvcHMgKSApIHsKLSAgICAgICAgICAgICAgICAvLyBNYWtl
IHN1cmUgdGhhdCBub3RoaW5nIHNuZWFrcyBvdXQKLSAgICAgICAgICAgICAgICAvLyBSZWNvcmQg
YWxsIDMgb3ZlcmZsb3cgYXR0cmlidXRlcyBiZWNhdXNlIElFIGRvZXMgbm90Ci0gICAgICAgICAg
ICAgICAgLy8gY2hhbmdlIHRoZSBvdmVyZmxvdyBhdHRyaWJ1dGUgd2hlbiBvdmVyZmxvd1ggYW5k
Ci0gICAgICAgICAgICAgICAgLy8gb3ZlcmZsb3dZIGFyZSBzZXQgdG8gdGhlIHNhbWUgdmFsdWUK
LSAgICAgICAgICAgICAgICBvcHRzLm92ZXJmbG93ID0gWyBzdHlsZS5vdmVyZmxvdywgc3R5bGUu
b3ZlcmZsb3dYLCBzdHlsZS5vdmVyZmxvd1kgXTsKLQotICAgICAgICAgICAgICAgIC8vIFNldCBk
aXNwbGF5IHByb3BlcnR5IHRvIGlubGluZS1ibG9jayBmb3IgaGVpZ2h0L3dpZHRoCi0gICAgICAg
ICAgICAgICAgLy8gYW5pbWF0aW9ucyBvbiBpbmxpbmUgZWxlbWVudHMgdGhhdCBhcmUgaGF2aW5n
IHdpZHRoL2hlaWdodCBhbmltYXRlZAotICAgICAgICAgICAgICAgIGlmICggalF1ZXJ5LmNzcygg
ZWxlbSwgImRpc3BsYXkiICkgPT09ICJpbmxpbmUiICYmCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGpRdWVyeS5jc3MoIGVsZW0sICJmbG9hdCIgKSA9PT0gIm5vbmUiICkgewotCi0g
ICAgICAgICAgICAgICAgICAgICAgICAvLyBpbmxpbmUtbGV2ZWwgZWxlbWVudHMgYWNjZXB0IGlu
bGluZS1ibG9jazsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJsb2NrLWxldmVsIGVsZW1l
bnRzIG5lZWQgdG8gYmUgaW5saW5lIHdpdGggbGF5b3V0Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoICFqUXVlcnkuc3VwcG9ydC5pbmxpbmVCbG9ja05lZWRzTGF5b3V0IHx8IGNzc19kZWZh
dWx0RGlzcGxheSggZWxlbS5ub2RlTmFtZSApID09PSAiaW5saW5lIiApIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3R5bGUuZGlzcGxheSA9ICJpbmxpbmUtYmxvY2siOwotCi0g
ICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdHlsZS56b29tID0gMTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIG9wdHMub3ZlcmZsb3cgKSB7
Ci0gICAgICAgICAgICAgICAgc3R5bGUub3ZlcmZsb3cgPSAiaGlkZGVuIjsKLSAgICAgICAgICAg
ICAgICBpZiAoICFqUXVlcnkuc3VwcG9ydC5zaHJpbmtXcmFwQmxvY2tzICkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgYW5pbS5kb25lKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdHlsZS5vdmVyZmxvdyA9IG9wdHMub3ZlcmZsb3dbIDAgXTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGUub3ZlcmZsb3dYID0gb3B0cy5vdmVyZmxv
d1sgMSBdOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZS5vdmVyZmxvd1kg
PSBvcHRzLm92ZXJmbG93WyAyIF07Ci0gICAgICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotCi0gICAgICAgIC8vIHNob3cvaGlkZSBwYXNzCi0g
ICAgICAgIGZvciAoIGluZGV4IGluIHByb3BzICkgewotICAgICAgICAgICAgICAgIHZhbHVlID0g
cHJvcHNbIGluZGV4IF07Ci0gICAgICAgICAgICAgICAgaWYgKCByZnh0eXBlcy5leGVjKCB2YWx1
ZSApICkgewotICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHByb3BzWyBpbmRleCBdOwot
ICAgICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlID0gdG9nZ2xlIHx8IHZhbHVlID09PSAidG9n
Z2xlIjsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICggdmFsdWUgPT09ICggaGlkZGVuID8g
ImhpZGUiIDogInNob3ciICkgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAg
ICAgaGFuZGxlZC5wdXNoKCBpbmRleCApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgfQot
Ci0gICAgICAgIGxlbmd0aCA9IGhhbmRsZWQubGVuZ3RoOwotICAgICAgICBpZiAoIGxlbmd0aCAp
IHsKLSAgICAgICAgICAgICAgICBkYXRhU2hvdyA9IGpRdWVyeS5fZGF0YSggZWxlbSwgImZ4c2hv
dyIgKSB8fCBqUXVlcnkuX2RhdGEoIGVsZW0sICJmeHNob3ciLCB7fSApOwotICAgICAgICAgICAg
ICAgIGlmICggImhpZGRlbiIgaW4gZGF0YVNob3cgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBoaWRkZW4gPSBkYXRhU2hvdy5oaWRkZW47Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICAgICAgLy8gc3RvcmUgc3RhdGUgaWYgaXRzIHRvZ2dsZSAtIGVuYWJsZXMgLnN0b3AoKS50
b2dnbGUoKSB0byAicmV2ZXJzZSIKLSAgICAgICAgICAgICAgICBpZiAoIHRvZ2dsZSApIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGRhdGFTaG93LmhpZGRlbiA9ICFoaWRkZW47Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmICggaGlkZGVuICkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgalF1ZXJ5KCBlbGVtICkuc2hvdygpOwotICAgICAgICAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBhbmltLmRvbmUoZnVuY3Rpb24oKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeSggZWxlbSApLmhpZGUoKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBhbmltLmRvbmUoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcHJv
cDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5yZW1vdmVEYXRhKCBlbGVtLCAiZnhz
aG93IiwgdHJ1ZSApOwotICAgICAgICAgICAgICAgICAgICAgICAgZm9yICggcHJvcCBpbiBvcmln
ICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkuc3R5bGUoIGVsZW0s
IHByb3AsIG9yaWdbIHByb3AgXSApOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIGZvciAoIGluZGV4ID0gMCA7IGluZGV4IDwg
bGVuZ3RoIDsgaW5kZXgrKyApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHByb3AgPSBoYW5k
bGVkWyBpbmRleCBdOwotICAgICAgICAgICAgICAgICAgICAgICAgdHdlZW4gPSBhbmltLmNyZWF0
ZVR3ZWVuKCBwcm9wLCBoaWRkZW4gPyBkYXRhU2hvd1sgcHJvcCBdIDogMCApOwotICAgICAgICAg
ICAgICAgICAgICAgICAgb3JpZ1sgcHJvcCBdID0gZGF0YVNob3dbIHByb3AgXSB8fCBqUXVlcnku
c3R5bGUoIGVsZW0sIHByb3AgKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhKCBw
cm9wIGluIGRhdGFTaG93ICkgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRh
dGFTaG93WyBwcm9wIF0gPSB0d2Vlbi5zdGFydDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCBoaWRkZW4gKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdHdlZW4uZW5kID0gdHdlZW4uc3RhcnQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdHdlZW4uc3RhcnQgPSBwcm9wID09PSAid2lkdGgiIHx8IHByb3AgPT09
ICJoZWlnaHQiID8gMSA6IDA7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgIH0KLX0K
LQotZnVuY3Rpb24gVHdlZW4oIGVsZW0sIG9wdGlvbnMsIHByb3AsIGVuZCwgZWFzaW5nICkgewot
ICAgICAgICByZXR1cm4gbmV3IFR3ZWVuLnByb3RvdHlwZS5pbml0KCBlbGVtLCBvcHRpb25zLCBw
cm9wLCBlbmQsIGVhc2luZyApOwotfQotalF1ZXJ5LlR3ZWVuID0gVHdlZW47Ci0KLVR3ZWVuLnBy
b3RvdHlwZSA9IHsKLSAgICAgICAgY29uc3RydWN0b3I6IFR3ZWVuLAotICAgICAgICBpbml0OiBm
dW5jdGlvbiggZWxlbSwgb3B0aW9ucywgcHJvcCwgZW5kLCBlYXNpbmcsIHVuaXQgKSB7Ci0gICAg
ICAgICAgICAgICAgdGhpcy5lbGVtID0gZWxlbTsKLSAgICAgICAgICAgICAgICB0aGlzLnByb3Ag
PSBwcm9wOwotICAgICAgICAgICAgICAgIHRoaXMuZWFzaW5nID0gZWFzaW5nIHx8ICJzd2luZyI7
Ci0gICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9uczsKLSAgICAgICAgICAgICAg
ICB0aGlzLnN0YXJ0ID0gdGhpcy5ub3cgPSB0aGlzLmN1cigpOwotICAgICAgICAgICAgICAgIHRo
aXMuZW5kID0gZW5kOwotICAgICAgICAgICAgICAgIHRoaXMudW5pdCA9IHVuaXQgfHwgKCBqUXVl
cnkuY3NzTnVtYmVyWyBwcm9wIF0gPyAiIiA6ICJweCIgKTsKLSAgICAgICAgfSwKLSAgICAgICAg
Y3VyOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICB2YXIgaG9va3MgPSBUd2Vlbi5wcm9w
SG9va3NbIHRoaXMucHJvcCBdOwotCi0gICAgICAgICAgICAgICAgcmV0dXJuIGhvb2tzICYmIGhv
b2tzLmdldCA/Ci0gICAgICAgICAgICAgICAgICAgICAgICBob29rcy5nZXQoIHRoaXMgKSA6Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBUd2Vlbi5wcm9wSG9va3MuX2RlZmF1bHQuZ2V0KCB0aGlz
ICk7Ci0gICAgICAgIH0sCi0gICAgICAgIHJ1bjogZnVuY3Rpb24oIHBlcmNlbnQgKSB7Ci0gICAg
ICAgICAgICAgICAgdmFyIGVhc2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgaG9va3MgPSBU
d2Vlbi5wcm9wSG9va3NbIHRoaXMucHJvcCBdOwotCi0gICAgICAgICAgICAgICAgaWYgKCB0aGlz
Lm9wdGlvbnMuZHVyYXRpb24gKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBvcyA9
IGVhc2VkID0galF1ZXJ5LmVhc2luZ1sgdGhpcy5lYXNpbmcgXSgKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcGVyY2VudCwgdGhpcy5vcHRpb25zLmR1cmF0aW9uICogcGVyY2VudCwg
MCwgMSwgdGhpcy5vcHRpb25zLmR1cmF0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICApOwot
ICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBv
cyA9IGVhc2VkID0gcGVyY2VudDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
dGhpcy5ub3cgPSAoIHRoaXMuZW5kIC0gdGhpcy5zdGFydCApICogZWFzZWQgKyB0aGlzLnN0YXJ0
OwotCi0gICAgICAgICAgICAgICAgaWYgKCB0aGlzLm9wdGlvbnMuc3RlcCApIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5zdGVwLmNhbGwoIHRoaXMuZWxlbSwgdGhpcy5u
b3csIHRoaXMgKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAoIGhv
b2tzICYmIGhvb2tzLnNldCApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGhvb2tzLnNldCgg
dGhpcyApOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBUd2Vlbi5wcm9wSG9va3MuX2RlZmF1bHQuc2V0KCB0aGlzICk7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOwotICAgICAgICB9Ci19OwotCi1Ud2Vlbi5w
cm90b3R5cGUuaW5pdC5wcm90b3R5cGUgPSBUd2Vlbi5wcm90b3R5cGU7Ci0KLVR3ZWVuLnByb3BI
b29rcyA9IHsKLSAgICAgICAgX2RlZmF1bHQ6IHsKLSAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0
aW9uKCB0d2VlbiApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHQ7Ci0KLSAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICggdHdlZW4uZWxlbVsgdHdlZW4ucHJvcCBdICE9IG51
bGwgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCF0d2Vlbi5lbGVtLnN0eWxl
IHx8IHR3ZWVuLmVsZW0uc3R5bGVbIHR3ZWVuLnByb3AgXSA9PSBudWxsKSApIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHR3ZWVuLmVsZW1bIHR3ZWVuLnByb3AgXTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgLy8g
cGFzc2luZyBhbnkgdmFsdWUgYXMgYSA0dGggcGFyYW1ldGVyIHRvIC5jc3Mgd2lsbCBhdXRvbWF0
aWNhbGx5Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBhdHRlbXB0IGEgcGFyc2VGbG9hdCBh
bmQgZmFsbGJhY2sgdG8gYSBzdHJpbmcgaWYgdGhlIHBhcnNlIGZhaWxzCi0gICAgICAgICAgICAg
ICAgICAgICAgICAvLyBzbywgc2ltcGxlIHZhbHVlcyBzdWNoIGFzICIxMHB4IiBhcmUgcGFyc2Vk
IHRvIEZsb2F0LgotICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29tcGxleCB2YWx1ZXMgc3Vj
aCBhcyAicm90YXRlKDFyYWQpIiBhcmUgcmV0dXJuZWQgYXMgaXMuCi0gICAgICAgICAgICAgICAg
ICAgICAgICByZXN1bHQgPSBqUXVlcnkuY3NzKCB0d2Vlbi5lbGVtLCB0d2Vlbi5wcm9wLCBmYWxz
ZSwgIiIgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVtcHR5IHN0cmluZ3MsIG51bGws
IHVuZGVmaW5lZCBhbmQgImF1dG8iIGFyZSBjb252ZXJ0ZWQgdG8gMC4KLSAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiAhcmVzdWx0IHx8IHJlc3VsdCA9PT0gImF1dG8iID8gMCA6IHJlc3Vs
dDsKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHNldDogZnVuY3Rpb24oIHR3
ZWVuICkgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXNlIHN0ZXAgaG9vayBmb3IgYmFj
ayBjb21wYXQgLSB1c2UgY3NzSG9vayBpZiBpdHMgdGhlcmUgLSB1c2UgLnN0eWxlIGlmIGl0cwot
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXZhaWxhYmxlIGFuZCB1c2UgcGxhaW4gcHJvcGVy
dGllcyB3aGVyZSBhdmFpbGFibGUKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICggalF1ZXJ5
LmZ4LnN0ZXBbIHR3ZWVuLnByb3AgXSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgalF1ZXJ5LmZ4LnN0ZXBbIHR3ZWVuLnByb3AgXSggdHdlZW4gKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIH0gZWxzZSBpZiAoIHR3ZWVuLmVsZW0uc3R5bGUgJiYgKCB0d2Vlbi5lbGVtLnN0
eWxlWyBqUXVlcnkuY3NzUHJvcHNbIHR3ZWVuLnByb3AgXSBdICE9IG51bGwgfHwgalF1ZXJ5LmNz
c0hvb2tzWyB0d2Vlbi5wcm9wIF0gKSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgalF1ZXJ5LnN0eWxlKCB0d2Vlbi5lbGVtLCB0d2Vlbi5wcm9wLCB0d2Vlbi5ub3cgKyB0d2Vl
bi51bml0ICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0d2Vlbi5lbGVtWyB0d2Vlbi5wcm9wIF0gPSB0d2Vlbi5ub3c7
Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICB9
Ci19OwotCi0vLyBSZW1vdmUgaW4gMi4wIC0gdGhpcyBzdXBwb3J0cyBJRTgncyBwYW5pYyBiYXNl
ZCBhcHByb2FjaAotLy8gdG8gc2V0dGluZyB0aGluZ3Mgb24gZGlzY29ubmVjdGVkIG5vZGVzCi0K
LVR3ZWVuLnByb3BIb29rcy5zY3JvbGxUb3AgPSBUd2Vlbi5wcm9wSG9va3Muc2Nyb2xsTGVmdCA9
IHsKLSAgICAgICAgc2V0OiBmdW5jdGlvbiggdHdlZW4gKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KCB0d2Vlbi5lbGVtLm5vZGVUeXBlICYmIHR3ZWVuLmVsZW0ucGFyZW50Tm9kZSApIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHR3ZWVuLmVsZW1bIHR3ZWVuLnByb3AgXSA9IHR3ZWVuLm5vdzsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgIH0KLX07Ci0KLWpRdWVyeS5lYWNoKFsgInRvZ2ds
ZSIsICJzaG93IiwgImhpZGUiIF0sIGZ1bmN0aW9uKCBpLCBuYW1lICkgewotICAgICAgICB2YXIg
Y3NzRm4gPSBqUXVlcnkuZm5bIG5hbWUgXTsKLSAgICAgICAgalF1ZXJ5LmZuWyBuYW1lIF0gPSBm
dW5jdGlvbiggc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKSB7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIHNwZWVkID09IG51bGwgfHwgdHlwZW9mIHNwZWVkID09PSAiYm9vbGVhbiIgfHwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIHNwZWNpYWwgY2hlY2sgZm9yIC50b2dnbGUoIGhhbmRsZXIs
IGhhbmRsZXIsIC4uLiApCi0gICAgICAgICAgICAgICAgICAgICAgICAoICFpICYmIGpRdWVyeS5p
c0Z1bmN0aW9uKCBzcGVlZCApICYmIGpRdWVyeS5pc0Z1bmN0aW9uKCBlYXNpbmcgKSApID8KLSAg
ICAgICAgICAgICAgICAgICAgICAgIGNzc0ZuLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKSA6Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFuaW1hdGUoIGdlbkZ4KCBuYW1lLCB0cnVlICks
IHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICk7Ci0gICAgICAgIH07Ci19KTsKLQotalF1ZXJ5LmZu
LmV4dGVuZCh7Ci0gICAgICAgIGZhZGVUbzogZnVuY3Rpb24oIHNwZWVkLCB0bywgZWFzaW5nLCBj
YWxsYmFjayApIHsKLQotICAgICAgICAgICAgICAgIC8vIHNob3cgYW55IGhpZGRlbiBlbGVtZW50
cyBhZnRlciBzZXR0aW5nIG9wYWNpdHkgdG8gMAotICAgICAgICAgICAgICAgIHJldHVybiB0aGlz
LmZpbHRlciggaXNIaWRkZW4gKS5jc3MoICJvcGFjaXR5IiwgMCApLnNob3coKQotCi0gICAgICAg
ICAgICAgICAgICAgICAgICAvLyBhbmltYXRlIHRvIHRoZSB2YWx1ZSBzcGVjaWZpZWQKLSAgICAg
ICAgICAgICAgICAgICAgICAgIC5lbmQoKS5hbmltYXRlKHsgb3BhY2l0eTogdG8gfSwgc3BlZWQs
IGVhc2luZywgY2FsbGJhY2sgKTsKLSAgICAgICAgfSwKLSAgICAgICAgYW5pbWF0ZTogZnVuY3Rp
b24oIHByb3AsIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICkgewotICAgICAgICAgICAgICAgIHZh
ciBlbXB0eSA9IGpRdWVyeS5pc0VtcHR5T2JqZWN0KCBwcm9wICksCi0gICAgICAgICAgICAgICAg
ICAgICAgICBvcHRhbGwgPSBqUXVlcnkuc3BlZWQoIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICks
Ci0gICAgICAgICAgICAgICAgICAgICAgICBkb0FuaW1hdGlvbiA9IGZ1bmN0aW9uKCkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBPcGVyYXRlIG9uIGEgY29weSBvZiBwcm9w
IHNvIHBlci1wcm9wZXJ0eSBlYXNpbmcgd29uJ3QgYmUgbG9zdAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2YXIgYW5pbSA9IEFuaW1hdGlvbiggdGhpcywgalF1ZXJ5LmV4dGVuZCgg
e30sIHByb3AgKSwgb3B0YWxsICk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gRW1wdHkgYW5pbWF0aW9ucyByZXNvbHZlIGltbWVkaWF0ZWx5Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICggZW1wdHkgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYW5pbS5zdG9wKCB0cnVlICk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH07Ci0KLSAgICAgICAgICAgICAg
ICByZXR1cm4gZW1wdHkgfHwgb3B0YWxsLnF1ZXVlID09PSBmYWxzZSA/Ci0gICAgICAgICAgICAg
ICAgICAgICAgICB0aGlzLmVhY2goIGRvQW5pbWF0aW9uICkgOgotICAgICAgICAgICAgICAgICAg
ICAgICAgdGhpcy5xdWV1ZSggb3B0YWxsLnF1ZXVlLCBkb0FuaW1hdGlvbiApOwotICAgICAgICB9
LAotICAgICAgICBzdG9wOiBmdW5jdGlvbiggdHlwZSwgY2xlYXJRdWV1ZSwgZ290b0VuZCApIHsK
LSAgICAgICAgICAgICAgICB2YXIgc3RvcFF1ZXVlID0gZnVuY3Rpb24oIGhvb2tzICkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgdmFyIHN0b3AgPSBob29rcy5zdG9wOwotICAgICAgICAgICAg
ICAgICAgICAgICAgZGVsZXRlIGhvb2tzLnN0b3A7Ci0gICAgICAgICAgICAgICAgICAgICAgICBz
dG9wKCBnb3RvRW5kICk7Ci0gICAgICAgICAgICAgICAgfTsKLQotICAgICAgICAgICAgICAgIGlm
ICggdHlwZW9mIHR5cGUgIT09ICJzdHJpbmciICkgewotICAgICAgICAgICAgICAgICAgICAgICAg
Z290b0VuZCA9IGNsZWFyUXVldWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjbGVhclF1ZXVl
ID0gdHlwZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgPSB1bmRlZmluZWQ7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmICggY2xlYXJRdWV1ZSAmJiB0eXBlICE9
PSBmYWxzZSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucXVldWUoIHR5cGUgfHwg
ImZ4IiwgW10gKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICByZXR1cm4g
dGhpcy5lYWNoKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRlcXVl
dWUgPSB0cnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCA9IHR5cGUg
IT0gbnVsbCAmJiB0eXBlICsgInF1ZXVlSG9va3MiLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0aW1lcnMgPSBqUXVlcnkudGltZXJzLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkYXRhID0galF1ZXJ5Ll9kYXRhKCB0aGlzICk7Ci0KLSAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICggaW5kZXggKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICggZGF0YVsgaW5kZXggXSAmJiBkYXRhWyBpbmRleCBdLnN0b3AgKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcFF1ZXVlKCBkYXRhWyBpbmRleCBdICk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoIGluZGV4IGlu
IGRhdGEgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBk
YXRhWyBpbmRleCBdICYmIGRhdGFbIGluZGV4IF0uc3RvcCAmJiBycnVuLnRlc3QoIGluZGV4ICkg
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9w
UXVldWUoIGRhdGFbIGluZGV4IF0gKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgZm9yICggaW5kZXggPSB0
aW1lcnMubGVuZ3RoOyBpbmRleC0tOyApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCB0aW1lcnNbIGluZGV4IF0uZWxlbSA9PT0gdGhpcyAmJiAodHlwZSA9PSBudWxsIHx8
IHRpbWVyc1sgaW5kZXggXS5xdWV1ZSA9PT0gdHlwZSkgKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdGltZXJzWyBpbmRleCBdLmFuaW0uc3RvcCggZ290b0VuZCAp
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcXVldWUgPSBmYWxz
ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lcnMuc3BsaWNl
KCBpbmRleCwgMSApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YXJ0IHRo
ZSBuZXh0IGluIHRoZSBxdWV1ZSBpZiB0aGUgbGFzdCBzdGVwIHdhc24ndCBmb3JjZWQKLSAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIHRpbWVycyBjdXJyZW50bHkgd2lsbCBjYWxsIHRoZWlyIGNv
bXBsZXRlIGNhbGxiYWNrcywgd2hpY2ggd2lsbCBkZXF1ZXVlCi0gICAgICAgICAgICAgICAgICAg
ICAgICAvLyBidXQgb25seSBpZiB0aGV5IHdlcmUgZ290b0VuZAotICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCBkZXF1ZXVlIHx8ICFnb3RvRW5kICkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBqUXVlcnkuZGVxdWV1ZSggdGhpcywgdHlwZSApOwotICAgICAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci19KTsKLQotLy8gR2Vu
ZXJhdGUgcGFyYW1ldGVycyB0byBjcmVhdGUgYSBzdGFuZGFyZCBhbmltYXRpb24KLWZ1bmN0aW9u
IGdlbkZ4KCB0eXBlLCBpbmNsdWRlV2lkdGggKSB7Ci0gICAgICAgIHZhciB3aGljaCwKLSAgICAg
ICAgICAgICAgICBhdHRycyA9IHsgaGVpZ2h0OiB0eXBlIH0sCi0gICAgICAgICAgICAgICAgaSA9
IDA7Ci0KLSAgICAgICAgLy8gaWYgd2UgaW5jbHVkZSB3aWR0aCwgc3RlcCB2YWx1ZSBpcyAxIHRv
IGRvIGFsbCBjc3NFeHBhbmQgdmFsdWVzLAotICAgICAgICAvLyBpZiB3ZSBkb24ndCBpbmNsdWRl
IHdpZHRoLCBzdGVwIHZhbHVlIGlzIDIgdG8gc2tpcCBvdmVyIExlZnQgYW5kIFJpZ2h0Ci0gICAg
ICAgIGluY2x1ZGVXaWR0aCA9IGluY2x1ZGVXaWR0aD8gMSA6IDA7Ci0gICAgICAgIGZvciggOyBp
IDwgNCA7IGkgKz0gMiAtIGluY2x1ZGVXaWR0aCApIHsKLSAgICAgICAgICAgICAgICB3aGljaCA9
IGNzc0V4cGFuZFsgaSBdOwotICAgICAgICAgICAgICAgIGF0dHJzWyAibWFyZ2luIiArIHdoaWNo
IF0gPSBhdHRyc1sgInBhZGRpbmciICsgd2hpY2ggXSA9IHR5cGU7Ci0gICAgICAgIH0KLQotICAg
ICAgICBpZiAoIGluY2x1ZGVXaWR0aCApIHsKLSAgICAgICAgICAgICAgICBhdHRycy5vcGFjaXR5
ID0gYXR0cnMud2lkdGggPSB0eXBlOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGF0dHJz
OwotfQotCi0vLyBHZW5lcmF0ZSBzaG9ydGN1dHMgZm9yIGN1c3RvbSBhbmltYXRpb25zCi1qUXVl
cnkuZWFjaCh7Ci0gICAgICAgIHNsaWRlRG93bjogZ2VuRngoInNob3ciKSwKLSAgICAgICAgc2xp
ZGVVcDogZ2VuRngoImhpZGUiKSwKLSAgICAgICAgc2xpZGVUb2dnbGU6IGdlbkZ4KCJ0b2dnbGUi
KSwKLSAgICAgICAgZmFkZUluOiB7IG9wYWNpdHk6ICJzaG93IiB9LAotICAgICAgICBmYWRlT3V0
OiB7IG9wYWNpdHk6ICJoaWRlIiB9LAotICAgICAgICBmYWRlVG9nZ2xlOiB7IG9wYWNpdHk6ICJ0
b2dnbGUiIH0KLX0sIGZ1bmN0aW9uKCBuYW1lLCBwcm9wcyApIHsKLSAgICAgICAgalF1ZXJ5LmZu
WyBuYW1lIF0gPSBmdW5jdGlvbiggc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKSB7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIHRoaXMuYW5pbWF0ZSggcHJvcHMsIHNwZWVkLCBlYXNpbmcsIGNhbGxi
YWNrICk7Ci0gICAgICAgIH07Ci19KTsKLQotalF1ZXJ5LnNwZWVkID0gZnVuY3Rpb24oIHNwZWVk
LCBlYXNpbmcsIGZuICkgewotICAgICAgICB2YXIgb3B0ID0gc3BlZWQgJiYgdHlwZW9mIHNwZWVk
ID09PSAib2JqZWN0IiA/IGpRdWVyeS5leHRlbmQoIHt9LCBzcGVlZCApIDogewotICAgICAgICAg
ICAgICAgIGNvbXBsZXRlOiBmbiB8fCAhZm4gJiYgZWFzaW5nIHx8Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBqUXVlcnkuaXNGdW5jdGlvbiggc3BlZWQgKSAmJiBzcGVlZCwKLSAgICAgICAgICAg
ICAgICBkdXJhdGlvbjogc3BlZWQsCi0gICAgICAgICAgICAgICAgZWFzaW5nOiBmbiAmJiBlYXNp
bmcgfHwgZWFzaW5nICYmICFqUXVlcnkuaXNGdW5jdGlvbiggZWFzaW5nICkgJiYgZWFzaW5nCi0g
ICAgICAgIH07Ci0KLSAgICAgICAgb3B0LmR1cmF0aW9uID0galF1ZXJ5LmZ4Lm9mZiA/IDAgOiB0
eXBlb2Ygb3B0LmR1cmF0aW9uID09PSAibnVtYmVyIiA/IG9wdC5kdXJhdGlvbiA6Ci0gICAgICAg
ICAgICAgICAgb3B0LmR1cmF0aW9uIGluIGpRdWVyeS5meC5zcGVlZHMgPyBqUXVlcnkuZnguc3Bl
ZWRzWyBvcHQuZHVyYXRpb24gXSA6IGpRdWVyeS5meC5zcGVlZHMuX2RlZmF1bHQ7Ci0KLSAgICAg
ICAgLy8gbm9ybWFsaXplIG9wdC5xdWV1ZSAtIHRydWUvdW5kZWZpbmVkL251bGwgLT4gImZ4Igot
ICAgICAgICBpZiAoIG9wdC5xdWV1ZSA9PSBudWxsIHx8IG9wdC5xdWV1ZSA9PT0gdHJ1ZSApIHsK
LSAgICAgICAgICAgICAgICBvcHQucXVldWUgPSAiZngiOwotICAgICAgICB9Ci0KLSAgICAgICAg
Ly8gUXVldWVpbmcKLSAgICAgICAgb3B0Lm9sZCA9IG9wdC5jb21wbGV0ZTsKLQotICAgICAgICBv
cHQuY29tcGxldGUgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBpZiAoIGpRdWVyeS5p
c0Z1bmN0aW9uKCBvcHQub2xkICkgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvcHQub2xk
LmNhbGwoIHRoaXMgKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAo
IG9wdC5xdWV1ZSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5kZXF1ZXVlKCB0
aGlzLCBvcHQucXVldWUgKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0KLSAgICAg
ICAgcmV0dXJuIG9wdDsKLX07Ci0KLWpRdWVyeS5lYXNpbmcgPSB7Ci0gICAgICAgIGxpbmVhcjog
ZnVuY3Rpb24oIHAgKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHA7Ci0gICAgICAgIH0sCi0g
ICAgICAgIHN3aW5nOiBmdW5jdGlvbiggcCApIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gMC41
IC0gTWF0aC5jb3MoIHAqTWF0aC5QSSApIC8gMjsKLSAgICAgICAgfQotfTsKLQotalF1ZXJ5LnRp
bWVycyA9IFtdOwotalF1ZXJ5LmZ4ID0gVHdlZW4ucHJvdG90eXBlLmluaXQ7Ci1qUXVlcnkuZngu
dGljayA9IGZ1bmN0aW9uKCkgewotICAgICAgICB2YXIgdGltZXIsCi0gICAgICAgICAgICAgICAg
dGltZXJzID0galF1ZXJ5LnRpbWVycywKLSAgICAgICAgICAgICAgICBpID0gMDsKLQotICAgICAg
ICBmeE5vdyA9IGpRdWVyeS5ub3coKTsKLQotICAgICAgICBmb3IgKCA7IGkgPCB0aW1lcnMubGVu
Z3RoOyBpKysgKSB7Ci0gICAgICAgICAgICAgICAgdGltZXIgPSB0aW1lcnNbIGkgXTsKLSAgICAg
ICAgICAgICAgICAvLyBDaGVja3MgdGhlIHRpbWVyIGhhcyBub3QgYWxyZWFkeSBiZWVuIHJlbW92
ZWQKLSAgICAgICAgICAgICAgICBpZiAoICF0aW1lcigpICYmIHRpbWVyc1sgaSBdID09PSB0aW1l
ciApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVycy5zcGxpY2UoIGktLSwgMSApOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlmICggIXRpbWVycy5sZW5n
dGggKSB7Ci0gICAgICAgICAgICAgICAgalF1ZXJ5LmZ4LnN0b3AoKTsKLSAgICAgICAgfQotICAg
ICAgICBmeE5vdyA9IHVuZGVmaW5lZDsKLX07Ci0KLWpRdWVyeS5meC50aW1lciA9IGZ1bmN0aW9u
KCB0aW1lciApIHsKLSAgICAgICAgaWYgKCB0aW1lcigpICYmIGpRdWVyeS50aW1lcnMucHVzaCgg
dGltZXIgKSAmJiAhdGltZXJJZCApIHsKLSAgICAgICAgICAgICAgICB0aW1lcklkID0gc2V0SW50
ZXJ2YWwoIGpRdWVyeS5meC50aWNrLCBqUXVlcnkuZnguaW50ZXJ2YWwgKTsKLSAgICAgICAgfQot
fTsKLQotalF1ZXJ5LmZ4LmludGVydmFsID0gMTM7Ci0KLWpRdWVyeS5meC5zdG9wID0gZnVuY3Rp
b24oKSB7Ci0gICAgICAgIGNsZWFySW50ZXJ2YWwoIHRpbWVySWQgKTsKLSAgICAgICAgdGltZXJJ
ZCA9IG51bGw7Ci19OwotCi1qUXVlcnkuZnguc3BlZWRzID0gewotICAgICAgICBzbG93OiA2MDAs
Ci0gICAgICAgIGZhc3Q6IDIwMCwKLSAgICAgICAgLy8gRGVmYXVsdCBzcGVlZAotICAgICAgICBf
ZGVmYXVsdDogNDAwCi19OwotCi0vLyBCYWNrIENvbXBhdCA8MS44IGV4dGVuc2lvbiBwb2ludAot
alF1ZXJ5LmZ4LnN0ZXAgPSB7fTsKLQotaWYgKCBqUXVlcnkuZXhwciAmJiBqUXVlcnkuZXhwci5m
aWx0ZXJzICkgewotICAgICAgICBqUXVlcnkuZXhwci5maWx0ZXJzLmFuaW1hdGVkID0gZnVuY3Rp
b24oIGVsZW0gKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGpRdWVyeS5ncmVwKGpRdWVyeS50
aW1lcnMsIGZ1bmN0aW9uKCBmbiApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBl
bGVtID09PSBmbi5lbGVtOwotICAgICAgICAgICAgICAgIH0pLmxlbmd0aDsKLSAgICAgICAgfTsK
LX0KLXZhciBycm9vdCA9IC9eKD86Ym9keXxodG1sKSQvaTsKLQotalF1ZXJ5LmZuLm9mZnNldCA9
IGZ1bmN0aW9uKCBvcHRpb25zICkgewotICAgICAgICBpZiAoIGFyZ3VtZW50cy5sZW5ndGggKSB7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMgPT09IHVuZGVmaW5lZCA/Ci0gICAgICAg
ICAgICAgICAgICAgICAgICB0aGlzIDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZWFj
aChmdW5jdGlvbiggaSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5
Lm9mZnNldC5zZXRPZmZzZXQoIHRoaXMsIG9wdGlvbnMsIGkgKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIH0pOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIGRvY0VsZW0sIGJvZHksIHdpbiwg
Y2xpZW50VG9wLCBjbGllbnRMZWZ0LCBzY3JvbGxUb3AsIHNjcm9sbExlZnQsCi0gICAgICAgICAg
ICAgICAgYm94ID0geyB0b3A6IDAsIGxlZnQ6IDAgfSwKLSAgICAgICAgICAgICAgICBlbGVtID0g
dGhpc1sgMCBdLAotICAgICAgICAgICAgICAgIGRvYyA9IGVsZW0gJiYgZWxlbS5vd25lckRvY3Vt
ZW50OwotCi0gICAgICAgIGlmICggIWRvYyApIHsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLQotICAgICAgICBpZiAoIChib2R5ID0gZG9jLmJvZHkpID09PSBlbGVtICkgewot
ICAgICAgICAgICAgICAgIHJldHVybiBqUXVlcnkub2Zmc2V0LmJvZHlPZmZzZXQoIGVsZW0gKTsK
LSAgICAgICAgfQotCi0gICAgICAgIGRvY0VsZW0gPSBkb2MuZG9jdW1lbnRFbGVtZW50OwotCi0g
ICAgICAgIC8vIE1ha2Ugc3VyZSBpdCdzIG5vdCBhIGRpc2Nvbm5lY3RlZCBET00gbm9kZQotICAg
ICAgICBpZiAoICFqUXVlcnkuY29udGFpbnMoIGRvY0VsZW0sIGVsZW0gKSApIHsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gYm94OwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gSWYgd2UgZG9uJ3Qg
aGF2ZSBnQkNSLCBqdXN0IHVzZSAwLDAgcmF0aGVyIHRoYW4gZXJyb3IKLSAgICAgICAgLy8gQmxh
Y2tCZXJyeSA1LCBpT1MgMyAob3JpZ2luYWwgaVBob25lKQotICAgICAgICBpZiAoIHR5cGVvZiBl
bGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCAhPT0gInVuZGVmaW5lZCIgKSB7Ci0gICAgICAgICAg
ICAgICAgYm94ID0gZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKLSAgICAgICAgfQotICAg
ICAgICB3aW4gPSBnZXRXaW5kb3coIGRvYyApOwotICAgICAgICBjbGllbnRUb3AgID0gZG9jRWxl
bS5jbGllbnRUb3AgIHx8IGJvZHkuY2xpZW50VG9wICB8fCAwOwotICAgICAgICBjbGllbnRMZWZ0
ID0gZG9jRWxlbS5jbGllbnRMZWZ0IHx8IGJvZHkuY2xpZW50TGVmdCB8fCAwOwotICAgICAgICBz
Y3JvbGxUb3AgID0gd2luLnBhZ2VZT2Zmc2V0IHx8IGRvY0VsZW0uc2Nyb2xsVG9wOwotICAgICAg
ICBzY3JvbGxMZWZ0ID0gd2luLnBhZ2VYT2Zmc2V0IHx8IGRvY0VsZW0uc2Nyb2xsTGVmdDsKLSAg
ICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgICAgICB0b3A6IGJveC50b3AgICsgc2Nyb2xsVG9w
ICAtIGNsaWVudFRvcCwKLSAgICAgICAgICAgICAgICBsZWZ0OiBib3gubGVmdCArIHNjcm9sbExl
ZnQgLSBjbGllbnRMZWZ0Ci0gICAgICAgIH07Ci19OwotCi1qUXVlcnkub2Zmc2V0ID0gewotCi0g
ICAgICAgIGJvZHlPZmZzZXQ6IGZ1bmN0aW9uKCBib2R5ICkgewotICAgICAgICAgICAgICAgIHZh
ciB0b3AgPSBib2R5Lm9mZnNldFRvcCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQgPSBi
b2R5Lm9mZnNldExlZnQ7Ci0KLSAgICAgICAgICAgICAgICBpZiAoIGpRdWVyeS5zdXBwb3J0LmRv
ZXNOb3RJbmNsdWRlTWFyZ2luSW5Cb2R5T2Zmc2V0ICkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgdG9wICArPSBwYXJzZUZsb2F0KCBqUXVlcnkuY3NzKGJvZHksICJtYXJnaW5Ub3AiKSApIHx8
IDA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsZWZ0ICs9IHBhcnNlRmxvYXQoIGpRdWVyeS5j
c3MoYm9keSwgIm1hcmdpbkxlZnQiKSApIHx8IDA7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIHsgdG9wOiB0b3AsIGxlZnQ6IGxlZnQgfTsKLSAgICAgICAgfSwK
LQotICAgICAgICBzZXRPZmZzZXQ6IGZ1bmN0aW9uKCBlbGVtLCBvcHRpb25zLCBpICkgewotICAg
ICAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IGpRdWVyeS5jc3MoIGVsZW0sICJwb3NpdGlvbiIg
KTsKLQotICAgICAgICAgICAgICAgIC8vIHNldCBwb3NpdGlvbiBmaXJzdCwgaW4tY2FzZSB0b3Av
bGVmdCBhcmUgc2V0IGV2ZW4gb24gc3RhdGljIGVsZW0KLSAgICAgICAgICAgICAgICBpZiAoIHBv
c2l0aW9uID09PSAic3RhdGljIiApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0uc3R5
bGUucG9zaXRpb24gPSAicmVsYXRpdmUiOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgICAgIHZhciBjdXJFbGVtID0galF1ZXJ5KCBlbGVtICksCi0gICAgICAgICAgICAgICAgICAg
ICAgICBjdXJPZmZzZXQgPSBjdXJFbGVtLm9mZnNldCgpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgY3VyQ1NTVG9wID0galF1ZXJ5LmNzcyggZWxlbSwgInRvcCIgKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGN1ckNTU0xlZnQgPSBqUXVlcnkuY3NzKCBlbGVtLCAibGVmdCIgKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGNhbGN1bGF0ZVBvc2l0aW9uID0gKCBwb3NpdGlvbiA9PT0gImFi
c29sdXRlIiB8fCBwb3NpdGlvbiA9PT0gImZpeGVkIiApICYmIGpRdWVyeS5pbkFycmF5KCJhdXRv
IiwgW2N1ckNTU1RvcCwgY3VyQ1NTTGVmdF0pID4gLTEsCi0gICAgICAgICAgICAgICAgICAgICAg
ICBwcm9wcyA9IHt9LCBjdXJQb3NpdGlvbiA9IHt9LCBjdXJUb3AsIGN1ckxlZnQ7Ci0KLSAgICAg
ICAgICAgICAgICAvLyBuZWVkIHRvIGJlIGFibGUgdG8gY2FsY3VsYXRlIHBvc2l0aW9uIGlmIGVp
dGhlciB0b3Agb3IgbGVmdCBpcyBhdXRvIGFuZCBwb3NpdGlvbiBpcyBlaXRoZXIgYWJzb2x1dGUg
b3IgZml4ZWQKLSAgICAgICAgICAgICAgICBpZiAoIGNhbGN1bGF0ZVBvc2l0aW9uICkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgY3VyUG9zaXRpb24gPSBjdXJFbGVtLnBvc2l0aW9uKCk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBjdXJUb3AgPSBjdXJQb3NpdGlvbi50b3A7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBjdXJMZWZ0ID0gY3VyUG9zaXRpb24ubGVmdDsKLSAgICAgICAgICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgY3VyVG9wID0gcGFyc2VGbG9h
dCggY3VyQ1NTVG9wICkgfHwgMDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGN1ckxlZnQgPSBw
YXJzZUZsb2F0KCBjdXJDU1NMZWZ0ICkgfHwgMDsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgICAgICBpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBvcHRpb25zICkgKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBvcHRpb25zID0gb3B0aW9ucy5jYWxsKCBlbGVtLCBpLCBjdXJPZmZz
ZXQgKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAoIG9wdGlvbnMu
dG9wICE9IG51bGwgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy50b3AgPSAoIG9w
dGlvbnMudG9wIC0gY3VyT2Zmc2V0LnRvcCApICsgY3VyVG9wOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICBpZiAoIG9wdGlvbnMubGVmdCAhPSBudWxsICkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgcHJvcHMubGVmdCA9ICggb3B0aW9ucy5sZWZ0IC0gY3VyT2Zmc2V0Lmxl
ZnQgKSArIGN1ckxlZnQ7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYg
KCAidXNpbmciIGluIG9wdGlvbnMgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25z
LnVzaW5nLmNhbGwoIGVsZW0sIHByb3BzICk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGN1ckVsZW0uY3NzKCBwcm9wcyApOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotfTsKLQotCi1qUXVlcnkuZm4uZXh0ZW5kKHsKLQotICAgICAgICBw
b3NpdGlvbjogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCAhdGhpc1swXSApIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgICAgICB2YXIgZWxlbSA9IHRoaXNbMF0sCi0KLSAgICAgICAgICAgICAgICAvLyBH
ZXQgKnJlYWwqIG9mZnNldFBhcmVudAotICAgICAgICAgICAgICAgIG9mZnNldFBhcmVudCA9IHRo
aXMub2Zmc2V0UGFyZW50KCksCi0KLSAgICAgICAgICAgICAgICAvLyBHZXQgY29ycmVjdCBvZmZz
ZXRzCi0gICAgICAgICAgICAgICAgb2Zmc2V0ICAgICAgID0gdGhpcy5vZmZzZXQoKSwKLSAgICAg
ICAgICAgICAgICBwYXJlbnRPZmZzZXQgPSBycm9vdC50ZXN0KG9mZnNldFBhcmVudFswXS5ub2Rl
TmFtZSkgPyB7IHRvcDogMCwgbGVmdDogMCB9IDogb2Zmc2V0UGFyZW50Lm9mZnNldCgpOwotCi0g
ICAgICAgICAgICAgICAgLy8gU3VidHJhY3QgZWxlbWVudCBtYXJnaW5zCi0gICAgICAgICAgICAg
ICAgLy8gbm90ZTogd2hlbiBhbiBlbGVtZW50IGhhcyBtYXJnaW46IGF1dG8gdGhlIG9mZnNldExl
ZnQgYW5kIG1hcmdpbkxlZnQKLSAgICAgICAgICAgICAgICAvLyBhcmUgdGhlIHNhbWUgaW4gU2Fm
YXJpIGNhdXNpbmcgb2Zmc2V0LmxlZnQgdG8gaW5jb3JyZWN0bHkgYmUgMAotICAgICAgICAgICAg
ICAgIG9mZnNldC50b3AgIC09IHBhcnNlRmxvYXQoIGpRdWVyeS5jc3MoZWxlbSwgIm1hcmdpblRv
cCIpICkgfHwgMDsKLSAgICAgICAgICAgICAgICBvZmZzZXQubGVmdCAtPSBwYXJzZUZsb2F0KCBq
UXVlcnkuY3NzKGVsZW0sICJtYXJnaW5MZWZ0IikgKSB8fCAwOwotCi0gICAgICAgICAgICAgICAg
Ly8gQWRkIG9mZnNldFBhcmVudCBib3JkZXJzCi0gICAgICAgICAgICAgICAgcGFyZW50T2Zmc2V0
LnRvcCAgKz0gcGFyc2VGbG9hdCggalF1ZXJ5LmNzcyhvZmZzZXRQYXJlbnRbMF0sICJib3JkZXJU
b3BXaWR0aCIpICkgfHwgMDsKLSAgICAgICAgICAgICAgICBwYXJlbnRPZmZzZXQubGVmdCArPSBw
YXJzZUZsb2F0KCBqUXVlcnkuY3NzKG9mZnNldFBhcmVudFswXSwgImJvcmRlckxlZnRXaWR0aCIp
ICkgfHwgMDsKLQotICAgICAgICAgICAgICAgIC8vIFN1YnRyYWN0IHRoZSB0d28gb2Zmc2V0cwot
ICAgICAgICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0b3A6ICBv
ZmZzZXQudG9wICAtIHBhcmVudE9mZnNldC50b3AsCi0gICAgICAgICAgICAgICAgICAgICAgICBs
ZWZ0OiBvZmZzZXQubGVmdCAtIHBhcmVudE9mZnNldC5sZWZ0Ci0gICAgICAgICAgICAgICAgfTsK
LSAgICAgICAgfSwKLQotICAgICAgICBvZmZzZXRQYXJlbnQ6IGZ1bmN0aW9uKCkgewotICAgICAg
ICAgICAgICAgIHJldHVybiB0aGlzLm1hcChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHZhciBvZmZzZXRQYXJlbnQgPSB0aGlzLm9mZnNldFBhcmVudCB8fCBkb2N1bWVudC5i
b2R5OwotICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCBvZmZzZXRQYXJlbnQgJiYgKCFy
cm9vdC50ZXN0KG9mZnNldFBhcmVudC5ub2RlTmFtZSkgJiYgalF1ZXJ5LmNzcyhvZmZzZXRQYXJl
bnQsICJwb3NpdGlvbiIpID09PSAic3RhdGljIikgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG9mZnNldFBhcmVudCA9IG9mZnNldFBhcmVudC5vZmZzZXRQYXJlbnQ7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2Zm
c2V0UGFyZW50IHx8IGRvY3VtZW50LmJvZHk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAg
IH0KLX0pOwotCi0KLS8vIENyZWF0ZSBzY3JvbGxMZWZ0IGFuZCBzY3JvbGxUb3AgbWV0aG9kcwot
alF1ZXJ5LmVhY2goIHtzY3JvbGxMZWZ0OiAicGFnZVhPZmZzZXQiLCBzY3JvbGxUb3A6ICJwYWdl
WU9mZnNldCJ9LCBmdW5jdGlvbiggbWV0aG9kLCBwcm9wICkgewotICAgICAgICB2YXIgdG9wID0g
L1kvLnRlc3QoIHByb3AgKTsKLQotICAgICAgICBqUXVlcnkuZm5bIG1ldGhvZCBdID0gZnVuY3Rp
b24oIHZhbCApIHsKLSAgICAgICAgICAgICAgICByZXR1cm4galF1ZXJ5LmFjY2VzcyggdGhpcywg
ZnVuY3Rpb24oIGVsZW0sIG1ldGhvZCwgdmFsICkgewotICAgICAgICAgICAgICAgICAgICAgICAg
dmFyIHdpbiA9IGdldFdpbmRvdyggZWxlbSApOwotCi0gICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoIHZhbCA9PT0gdW5kZWZpbmVkICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gd2luID8gKHByb3AgaW4gd2luKSA/IHdpblsgcHJvcCBdIDoKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW4uZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50
WyBtZXRob2QgXSA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxl
bVsgbWV0aG9kIF07Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICggd2luICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3
aW4uc2Nyb2xsVG8oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXRv
cCA/IHZhbCA6IGpRdWVyeSggd2luICkuc2Nyb2xsTGVmdCgpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0b3AgPyB2YWwgOiBqUXVlcnkoIHdpbiApLnNjcm9sbFRv
cCgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7Ci0KLSAgICAgICAgICAgICAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1b
IG1ldGhvZCBdID0gdmFsOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIH0sIG1ldGhvZCwgdmFsLCBhcmd1bWVudHMubGVuZ3RoLCBudWxsICk7Ci0gICAgICAgIH07
Ci19KTsKLQotZnVuY3Rpb24gZ2V0V2luZG93KCBlbGVtICkgewotICAgICAgICByZXR1cm4galF1
ZXJ5LmlzV2luZG93KCBlbGVtICkgPwotICAgICAgICAgICAgICAgIGVsZW0gOgotICAgICAgICAg
ICAgICAgIGVsZW0ubm9kZVR5cGUgPT09IDkgPwotICAgICAgICAgICAgICAgICAgICAgICAgZWxl
bS5kZWZhdWx0VmlldyB8fCBlbGVtLnBhcmVudFdpbmRvdyA6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBmYWxzZTsKLX0KLS8vIENyZWF0ZSBpbm5lckhlaWdodCwgaW5uZXJXaWR0aCwgaGVpZ2h0
LCB3aWR0aCwgb3V0ZXJIZWlnaHQgYW5kIG91dGVyV2lkdGggbWV0aG9kcwotalF1ZXJ5LmVhY2go
IHsgSGVpZ2h0OiAiaGVpZ2h0IiwgV2lkdGg6ICJ3aWR0aCIgfSwgZnVuY3Rpb24oIG5hbWUsIHR5
cGUgKSB7Ci0gICAgICAgIGpRdWVyeS5lYWNoKCB7IHBhZGRpbmc6ICJpbm5lciIgKyBuYW1lLCBj
b250ZW50OiB0eXBlLCAiIjogIm91dGVyIiArIG5hbWUgfSwgZnVuY3Rpb24oIGRlZmF1bHRFeHRy
YSwgZnVuY05hbWUgKSB7Ci0gICAgICAgICAgICAgICAgLy8gbWFyZ2luIGlzIG9ubHkgZm9yIG91
dGVySGVpZ2h0LCBvdXRlcldpZHRoCi0gICAgICAgICAgICAgICAgalF1ZXJ5LmZuWyBmdW5jTmFt
ZSBdID0gZnVuY3Rpb24oIG1hcmdpbiwgdmFsdWUgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICB2YXIgY2hhaW5hYmxlID0gYXJndW1lbnRzLmxlbmd0aCAmJiAoIGRlZmF1bHRFeHRyYSB8fCB0
eXBlb2YgbWFyZ2luICE9PSAiYm9vbGVhbiIgKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZXh0cmEgPSBkZWZhdWx0RXh0cmEgfHwgKCBtYXJnaW4gPT09IHRydWUgfHwgdmFsdWUg
PT09IHRydWUgPyAibWFyZ2luIiA6ICJib3JkZXIiICk7Ci0KLSAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBqUXVlcnkuYWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggZWxlbSwgdHlwZSwgdmFs
dWUgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkb2M7Ci0KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBqUXVlcnkuaXNXaW5kb3coIGVsZW0gKSAp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBcyBvZiA1Lzgv
MjAxMiB0aGlzIHdpbGwgeWllbGQgaW5jb3JyZWN0IHJlc3VsdHMgZm9yIE1vYmlsZSBTYWZhcmks
IGJ1dCB0aGVyZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlz
bid0IGEgd2hvbGUgbG90IHdlIGNhbiBkby4gU2VlIHB1bGwgcmVxdWVzdCBhdCB0aGlzIFVSTCBm
b3IgZGlzY3Vzc2lvbjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBodHRwczovL2dpdGh1Yi5jb20vanF1ZXJ5L2pxdWVyeS9wdWxsLzc2NAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbGVtLmRvY3VtZW50LmRvY3VtZW50
RWxlbWVudFsgImNsaWVudCIgKyBuYW1lIF07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHZXQgZG9jdW1lbnQg
d2lkdGggb3IgaGVpZ2h0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggZWxl
bS5ub2RlVHlwZSA9PT0gOSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkb2MgPSBlbGVtLmRvY3VtZW50RWxlbWVudDsKLQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIEVpdGhlciBzY3JvbGxbV2lkdGgvSGVpZ2h0XSBvciBvZmZz
ZXRbV2lkdGgvSGVpZ2h0XSBvciBjbGllbnRbV2lkdGgvSGVpZ2h0XSwgd2hpY2hldmVyIGlzIGdy
ZWF0ZXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdW5mb3J0
dW5hdGVseSwgdGhpcyBjYXVzZXMgYnVnICMzODM4IGluIElFNi84IG9ubHksIGJ1dCB0aGVyZSBp
cyBjdXJyZW50bHkgbm8gZ29vZCwgc21hbGwgd2F5IHRvIGZpeCBpdC4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5tYXgoCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtLmJvZHlbICJzY3JvbGwiICsg
bmFtZSBdLCBkb2NbICJzY3JvbGwiICsgbmFtZSBdLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZWxlbS5ib2R5WyAib2Zmc2V0IiArIG5hbWUgXSwgZG9j
WyAib2Zmc2V0IiArIG5hbWUgXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRvY1sgImNsaWVudCIgKyBuYW1lIF0KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRl
ZmluZWQgPwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdldCB3
aWR0aCBvciBoZWlnaHQgb24gdGhlIGVsZW1lbnQsIHJlcXVlc3RpbmcgYnV0IG5vdCBmb3JjaW5n
IHBhcnNlRmxvYXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVl
cnkuY3NzKCBlbGVtLCB0eXBlLCB2YWx1ZSwgZXh0cmEgKSA6Ci0KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBTZXQgd2lkdGggb3IgaGVpZ2h0IG9uIHRoZSBlbGVt
ZW50Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LnN0eWxl
KCBlbGVtLCB0eXBlLCB2YWx1ZSwgZXh0cmEgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0s
IHR5cGUsIGNoYWluYWJsZSA/IG1hcmdpbiA6IHVuZGVmaW5lZCwgY2hhaW5hYmxlLCBudWxsICk7
Ci0gICAgICAgICAgICAgICAgfTsKLSAgICAgICAgfSk7Ci19KTsKLS8vIEV4cG9zZSBqUXVlcnkg
dG8gdGhlIGdsb2JhbCBvYmplY3QKLXdpbmRvdy5qUXVlcnkgPSB3aW5kb3cuJCA9IGpRdWVyeTsK
LQotLy8gRXhwb3NlIGpRdWVyeSBhcyBhbiBBTUQgbW9kdWxlLCBidXQgb25seSBmb3IgQU1EIGxv
YWRlcnMgdGhhdAotLy8gdW5kZXJzdGFuZCB0aGUgaXNzdWVzIHdpdGggbG9hZGluZyBtdWx0aXBs
ZSB2ZXJzaW9ucyBvZiBqUXVlcnkKLS8vIGluIGEgcGFnZSB0aGF0IGFsbCBtaWdodCBjYWxsIGRl
ZmluZSgpLiBUaGUgbG9hZGVyIHdpbGwgaW5kaWNhdGUKLS8vIHRoZXkgaGF2ZSBzcGVjaWFsIGFs
bG93YW5jZXMgZm9yIG11bHRpcGxlIGpRdWVyeSB2ZXJzaW9ucyBieQotLy8gc3BlY2lmeWluZyBk
ZWZpbmUuYW1kLmpRdWVyeSA9IHRydWUuIFJlZ2lzdGVyIGFzIGEgbmFtZWQgbW9kdWxlLAotLy8g
c2luY2UgalF1ZXJ5IGNhbiBiZSBjb25jYXRlbmF0ZWQgd2l0aCBvdGhlciBmaWxlcyB0aGF0IG1h
eSB1c2UgZGVmaW5lLAotLy8gYnV0IG5vdCB1c2UgYSBwcm9wZXIgY29uY2F0ZW5hdGlvbiBzY3Jp
cHQgdGhhdCB1bmRlcnN0YW5kcyBhbm9ueW1vdXMKLS8vIEFNRCBtb2R1bGVzLiBBIG5hbWVkIEFN
RCBpcyBzYWZlc3QgYW5kIG1vc3Qgcm9idXN0IHdheSB0byByZWdpc3Rlci4KLS8vIExvd2VyY2Fz
ZSBqcXVlcnkgaXMgdXNlZCBiZWNhdXNlIEFNRCBtb2R1bGUgbmFtZXMgYXJlIGRlcml2ZWQgZnJv
bQotLy8gZmlsZSBuYW1lcywgYW5kIGpRdWVyeSBpcyBub3JtYWxseSBkZWxpdmVyZWQgaW4gYSBs
b3dlcmNhc2UgZmlsZSBuYW1lLgotLy8gRG8gdGhpcyBhZnRlciBjcmVhdGluZyB0aGUgZ2xvYmFs
IHNvIHRoYXQgaWYgYW4gQU1EIG1vZHVsZSB3YW50cyB0byBjYWxsCi0vLyBub0NvbmZsaWN0IHRv
IGhpZGUgdGhpcyB2ZXJzaW9uIG9mIGpRdWVyeSwgaXQgd2lsbCB3b3JrLgotaWYgKCB0eXBlb2Yg
ZGVmaW5lID09PSAiZnVuY3Rpb24iICYmIGRlZmluZS5hbWQgJiYgZGVmaW5lLmFtZC5qUXVlcnkg
KSB7Ci0gICAgICAgIGRlZmluZSggImpxdWVyeSIsIFtdLCBmdW5jdGlvbiAoKSB7IHJldHVybiBq
UXVlcnk7IH0gKTsKLX0KLQotfSkoIHdpbmRvdyApOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9kZXBlbmRlbmN5LWV4YW1wbGVzL2Zs
aWdodC9ib3dlcl9jb21wb25lbnRzL3JlcXVpcmVqcy10ZXh0L3RleHQuanMgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2RlcGVuZGVuY3ktZXhhbXBsZXMv
ZmxpZ2h0L2Jvd2VyX2NvbXBvbmVudHMvcmVxdWlyZWpzLXRleHQvdGV4dC5qcwpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMWU0ZmM5NjYxMzUzNzQyZjc2MDc3ZjY2NDFhNzhiZmFmZThl
ZTQ5OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2RlcGVuZGVuY3ktZXhh
bXBsZXMvZmxpZ2h0L2Jvd2VyX2NvbXBvbmVudHMvcmVxdWlyZWpzLXRleHQvdGV4dC5qcworKysg
L2Rldi9udWxsCkBAIC0xLDM4NiArMCwwIEBACi0vKioKLSAqIEBsaWNlbnNlIFJlcXVpcmVKUyB0
ZXh0IDIuMC4xMCBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxMiwgVGhlIERvam8gRm91bmRhdGlvbiBB
bGwgUmlnaHRzIFJlc2VydmVkLgotICogQXZhaWxhYmxlIHZpYSB0aGUgTUlUIG9yIG5ldyBCU0Qg
bGljZW5zZS4KLSAqIHNlZTogaHR0cDovL2dpdGh1Yi5jb20vcmVxdWlyZWpzL3RleHQgZm9yIGRl
dGFpbHMKLSAqLwotLypqc2xpbnQgcmVnZXhwOiB0cnVlICovCi0vKmdsb2JhbCByZXF1aXJlLCBY
TUxIdHRwUmVxdWVzdCwgQWN0aXZlWE9iamVjdCwKLSAgZGVmaW5lLCB3aW5kb3csIHByb2Nlc3Ms
IFBhY2thZ2VzLAotICBqYXZhLCBsb2NhdGlvbiwgQ29tcG9uZW50cywgRmlsZVV0aWxzICovCi0K
LWRlZmluZShbJ21vZHVsZSddLCBmdW5jdGlvbiAobW9kdWxlKSB7Ci0gICAgJ3VzZSBzdHJpY3Qn
OwotCi0gICAgdmFyIHRleHQsIGZzLCBDYywgQ2ksIHhwY0lzV2luZG93cywKLSAgICAgICAgcHJv
Z0lkcyA9IFsnTXN4bWwyLlhNTEhUVFAnLCAnTWljcm9zb2Z0LlhNTEhUVFAnLCAnTXN4bWwyLlhN
TEhUVFAuNC4wJ10sCi0gICAgICAgIHhtbFJlZ0V4cCA9IC9eXHMqPFw/eG1sKFxzKSt2ZXJzaW9u
PVtcJ1wiXShcZCkqLihcZCkqW1wnXCJdKFxzKSpcPz4vaW0sCi0gICAgICAgIGJvZHlSZWdFeHAg
PSAvPGJvZHlbXj5dKj5ccyooW1xzXFNdKylccyo8XC9ib2R5Pi9pbSwKLSAgICAgICAgaGFzTG9j
YXRpb24gPSB0eXBlb2YgbG9jYXRpb24gIT09ICd1bmRlZmluZWQnICYmIGxvY2F0aW9uLmhyZWYs
Ci0gICAgICAgIGRlZmF1bHRQcm90b2NvbCA9IGhhc0xvY2F0aW9uICYmIGxvY2F0aW9uLnByb3Rv
Y29sICYmIGxvY2F0aW9uLnByb3RvY29sLnJlcGxhY2UoL1w6LywgJycpLAotICAgICAgICBkZWZh
dWx0SG9zdE5hbWUgPSBoYXNMb2NhdGlvbiAmJiBsb2NhdGlvbi5ob3N0bmFtZSwKLSAgICAgICAg
ZGVmYXVsdFBvcnQgPSBoYXNMb2NhdGlvbiAmJiAobG9jYXRpb24ucG9ydCB8fCB1bmRlZmluZWQp
LAotICAgICAgICBidWlsZE1hcCA9IHt9LAotICAgICAgICBtYXN0ZXJDb25maWcgPSAobW9kdWxl
LmNvbmZpZyAmJiBtb2R1bGUuY29uZmlnKCkpIHx8IHt9OwotCi0gICAgdGV4dCA9IHsKLSAgICAg
ICAgdmVyc2lvbjogJzIuMC4xMCcsCi0KLSAgICAgICAgc3RyaXA6IGZ1bmN0aW9uIChjb250ZW50
KSB7Ci0gICAgICAgICAgICAvL1N0cmlwcyA8P3htbCAuLi4/PiBkZWNsYXJhdGlvbnMgc28gdGhh
dCBleHRlcm5hbCBTVkcgYW5kIFhNTAotICAgICAgICAgICAgLy9kb2N1bWVudHMgY2FuIGJlIGFk
ZGVkIHRvIGEgZG9jdW1lbnQgd2l0aG91dCB3b3JyeS4gQWxzbywgaWYgdGhlIHN0cmluZwotICAg
ICAgICAgICAgLy9pcyBhbiBIVE1MIGRvY3VtZW50LCBvbmx5IHRoZSBwYXJ0IGluc2lkZSB0aGUg
Ym9keSB0YWcgaXMgcmV0dXJuZWQuCi0gICAgICAgICAgICBpZiAoY29udGVudCkgewotICAgICAg
ICAgICAgICAgIGNvbnRlbnQgPSBjb250ZW50LnJlcGxhY2UoeG1sUmVnRXhwLCAiIik7Ci0gICAg
ICAgICAgICAgICAgdmFyIG1hdGNoZXMgPSBjb250ZW50Lm1hdGNoKGJvZHlSZWdFeHApOwotICAg
ICAgICAgICAgICAgIGlmIChtYXRjaGVzKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQg
PSBtYXRjaGVzWzFdOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgY29udGVudCA9ICIiOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
cmV0dXJuIGNvbnRlbnQ7Ci0gICAgICAgIH0sCi0KLSAgICAgICAganNFc2NhcGU6IGZ1bmN0aW9u
IChjb250ZW50KSB7Ci0gICAgICAgICAgICByZXR1cm4gY29udGVudC5yZXBsYWNlKC8oWydcXF0p
L2csICdcXCQxJykKLSAgICAgICAgICAgICAgICAucmVwbGFjZSgvW1xmXS9nLCAiXFxmIikKLSAg
ICAgICAgICAgICAgICAucmVwbGFjZSgvW1xiXS9nLCAiXFxiIikKLSAgICAgICAgICAgICAgICAu
cmVwbGFjZSgvW1xuXS9nLCAiXFxuIikKLSAgICAgICAgICAgICAgICAucmVwbGFjZSgvW1x0XS9n
LCAiXFx0IikKLSAgICAgICAgICAgICAgICAucmVwbGFjZSgvW1xyXS9nLCAiXFxyIikKLSAgICAg
ICAgICAgICAgICAucmVwbGFjZSgvW1x1MjAyOF0vZywgIlxcdTIwMjgiKQotICAgICAgICAgICAg
ICAgIC5yZXBsYWNlKC9bXHUyMDI5XS9nLCAiXFx1MjAyOSIpOwotICAgICAgICB9LAotCi0gICAg
ICAgIGNyZWF0ZVhocjogbWFzdGVyQ29uZmlnLmNyZWF0ZVhociB8fCBmdW5jdGlvbiAoKSB7Ci0g
ICAgICAgICAgICAvL1dvdWxkIGxvdmUgdG8gZHVtcCB0aGUgQWN0aXZlWCBjcmFwIGluIGhlcmUu
IE5lZWQgSUUgNiB0byBkaWUgZmlyc3QuCi0gICAgICAgICAgICB2YXIgeGhyLCBpLCBwcm9nSWQ7
Ci0gICAgICAgICAgICBpZiAodHlwZW9mIFhNTEh0dHBSZXF1ZXN0ICE9PSAidW5kZWZpbmVkIikg
ewotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKLSAgICAgICAg
ICAgIH0gZWxzZSBpZiAodHlwZW9mIEFjdGl2ZVhPYmplY3QgIT09ICJ1bmRlZmluZWQiKSB7Ci0g
ICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IDM7IGkgKz0gMSkgewotICAgICAgICAgICAg
ICAgICAgICBwcm9nSWQgPSBwcm9nSWRzW2ldOwotICAgICAgICAgICAgICAgICAgICB0cnkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgeGhyID0gbmV3IEFjdGl2ZVhPYmplY3QocHJvZ0lkKTsK
LSAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge30KLQotICAgICAgICAgICAgICAgICAg
ICBpZiAoeGhyKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcm9nSWRzID0gW3Byb2dJZF07
ICAvLyBzbyBmYXN0ZXIgbmV4dCB0aW1lCi0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgcmV0dXJuIHhocjsKLSAgICAgICAgfSwKLQotICAgICAgICAvKioKLSAg
ICAgICAgICogUGFyc2VzIGEgcmVzb3VyY2UgbmFtZSBpbnRvIGl0cyBjb21wb25lbnQgcGFydHMu
IFJlc291cmNlIG5hbWVzCi0gICAgICAgICAqIGxvb2sgbGlrZTogbW9kdWxlL25hbWUuZXh0IXN0
cmlwLCB3aGVyZSB0aGUgIXN0cmlwIHBhcnQgaXMKLSAgICAgICAgICogb3B0aW9uYWwuCi0gICAg
ICAgICAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lIHRoZSByZXNvdXJjZSBuYW1lCi0gICAgICAgICAq
IEByZXR1cm5zIHtPYmplY3R9IHdpdGggcHJvcGVydGllcyAibW9kdWxlTmFtZSIsICJleHQiIGFu
ZCAic3RyaXAiCi0gICAgICAgICAqIHdoZXJlIHN0cmlwIGlzIGEgYm9vbGVhbi4KLSAgICAgICAg
ICovCi0gICAgICAgIHBhcnNlTmFtZTogZnVuY3Rpb24gKG5hbWUpIHsKLSAgICAgICAgICAgIHZh
ciBtb2ROYW1lLCBleHQsIHRlbXAsCi0gICAgICAgICAgICAgICAgc3RyaXAgPSBmYWxzZSwKLSAg
ICAgICAgICAgICAgICBpbmRleCA9IG5hbWUuaW5kZXhPZigiLiIpLAotICAgICAgICAgICAgICAg
IGlzUmVsYXRpdmUgPSBuYW1lLmluZGV4T2YoJy4vJykgPT09IDAgfHwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbmFtZS5pbmRleE9mKCcuLi8nKSA9PT0gMDsKLQotICAgICAgICAgICAg
aWYgKGluZGV4ICE9PSAtMSAmJiAoIWlzUmVsYXRpdmUgfHwgaW5kZXggPiAxKSkgewotICAgICAg
ICAgICAgICAgIG1vZE5hbWUgPSBuYW1lLnN1YnN0cmluZygwLCBpbmRleCk7Ci0gICAgICAgICAg
ICAgICAgZXh0ID0gbmFtZS5zdWJzdHJpbmcoaW5kZXggKyAxLCBuYW1lLmxlbmd0aCk7Ci0gICAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIG1vZE5hbWUgPSBuYW1lOwotICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICB0ZW1wID0gZXh0IHx8IG1vZE5hbWU7Ci0gICAgICAgICAg
ICBpbmRleCA9IHRlbXAuaW5kZXhPZigiISIpOwotICAgICAgICAgICAgaWYgKGluZGV4ICE9PSAt
MSkgewotICAgICAgICAgICAgICAgIC8vUHVsbCBvZmYgdGhlIHN0cmlwIGFyZy4KLSAgICAgICAg
ICAgICAgICBzdHJpcCA9IHRlbXAuc3Vic3RyaW5nKGluZGV4ICsgMSkgPT09ICJzdHJpcCI7Ci0g
ICAgICAgICAgICAgICAgdGVtcCA9IHRlbXAuc3Vic3RyaW5nKDAsIGluZGV4KTsKLSAgICAgICAg
ICAgICAgICBpZiAoZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGV4dCA9IHRlbXA7Ci0gICAg
ICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgbW9kTmFtZSA9IHRlbXA7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICByZXR1cm4g
ewotICAgICAgICAgICAgICAgIG1vZHVsZU5hbWU6IG1vZE5hbWUsCi0gICAgICAgICAgICAgICAg
ZXh0OiBleHQsCi0gICAgICAgICAgICAgICAgc3RyaXA6IHN0cmlwCi0gICAgICAgICAgICB9Owot
ICAgICAgICB9LAotCi0gICAgICAgIHhkUmVnRXhwOiAvXigoXHcrKVw6KT9cL1wvKFteXC9cXF0r
KS8sCi0KLSAgICAgICAgLyoqCi0gICAgICAgICAqIElzIGFuIFVSTCBvbiBhbm90aGVyIGRvbWFp
bi4gT25seSB3b3JrcyBmb3IgYnJvd3NlciB1c2UsIHJldHVybnMKLSAgICAgICAgICogZmFsc2Ug
aW4gbm9uLWJyb3dzZXIgZW52aXJvbm1lbnRzLiBPbmx5IHVzZWQgdG8ga25vdyBpZiBhbgotICAg
ICAgICAgKiBvcHRpbWl6ZWQgLmpzIHZlcnNpb24gb2YgYSB0ZXh0IHJlc291cmNlIHNob3VsZCBi
ZSBsb2FkZWQKLSAgICAgICAgICogaW5zdGVhZC4KLSAgICAgICAgICogQHBhcmFtIHtTdHJpbmd9
IHVybAotICAgICAgICAgKiBAcmV0dXJucyBCb29sZWFuCi0gICAgICAgICAqLwotICAgICAgICB1
c2VYaHI6IGZ1bmN0aW9uICh1cmwsIHByb3RvY29sLCBob3N0bmFtZSwgcG9ydCkgewotICAgICAg
ICAgICAgdmFyIHVQcm90b2NvbCwgdUhvc3ROYW1lLCB1UG9ydCwKLSAgICAgICAgICAgICAgICBt
YXRjaCA9IHRleHQueGRSZWdFeHAuZXhlYyh1cmwpOwotICAgICAgICAgICAgaWYgKCFtYXRjaCkg
ewotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgdVByb3RvY29sID0gbWF0Y2hbMl07Ci0gICAgICAgICAgICB1SG9zdE5hbWUgPSBtYXRjaFsz
XTsKLQotICAgICAgICAgICAgdUhvc3ROYW1lID0gdUhvc3ROYW1lLnNwbGl0KCc6Jyk7Ci0gICAg
ICAgICAgICB1UG9ydCA9IHVIb3N0TmFtZVsxXTsKLSAgICAgICAgICAgIHVIb3N0TmFtZSA9IHVI
b3N0TmFtZVswXTsKLQotICAgICAgICAgICAgcmV0dXJuICghdVByb3RvY29sIHx8IHVQcm90b2Nv
bCA9PT0gcHJvdG9jb2wpICYmCi0gICAgICAgICAgICAgICAgICAgKCF1SG9zdE5hbWUgfHwgdUhv
c3ROYW1lLnRvTG93ZXJDYXNlKCkgPT09IGhvc3RuYW1lLnRvTG93ZXJDYXNlKCkpICYmCi0gICAg
ICAgICAgICAgICAgICAgKCghdVBvcnQgJiYgIXVIb3N0TmFtZSkgfHwgdVBvcnQgPT09IHBvcnQp
OwotICAgICAgICB9LAotCi0gICAgICAgIGZpbmlzaExvYWQ6IGZ1bmN0aW9uIChuYW1lLCBzdHJp
cCwgY29udGVudCwgb25Mb2FkKSB7Ci0gICAgICAgICAgICBjb250ZW50ID0gc3RyaXAgPyB0ZXh0
LnN0cmlwKGNvbnRlbnQpIDogY29udGVudDsKLSAgICAgICAgICAgIGlmIChtYXN0ZXJDb25maWcu
aXNCdWlsZCkgewotICAgICAgICAgICAgICAgIGJ1aWxkTWFwW25hbWVdID0gY29udGVudDsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIG9uTG9hZChjb250ZW50KTsKLSAgICAgICAgfSwKLQot
ICAgICAgICBsb2FkOiBmdW5jdGlvbiAobmFtZSwgcmVxLCBvbkxvYWQsIGNvbmZpZykgewotICAg
ICAgICAgICAgLy9OYW1lIGhhcyBmb3JtYXQ6IHNvbWUubW9kdWxlLmZpbGV4dCFzdHJpcAotICAg
ICAgICAgICAgLy9UaGUgc3RyaXAgcGFydCBpcyBvcHRpb25hbC4KLSAgICAgICAgICAgIC8vaWYg
c3RyaXAgaXMgcHJlc2VudCwgdGhlbiB0aGF0IG1lYW5zIG9ubHkgZ2V0IHRoZSBzdHJpbmcgY29u
dGVudHMKLSAgICAgICAgICAgIC8vaW5zaWRlIGEgYm9keSB0YWcgaW4gYW4gSFRNTCBzdHJpbmcu
IEZvciBYTUwvU1ZHIGNvbnRlbnQgaXQgbWVhbnMKLSAgICAgICAgICAgIC8vcmVtb3ZpbmcgdGhl
IDw/eG1sIC4uLj8+IGRlY2xhcmF0aW9ucyBzbyB0aGUgY29udGVudCBjYW4gYmUgaW5zZXJ0ZWQK
LSAgICAgICAgICAgIC8vaW50byB0aGUgY3VycmVudCBkb2Mgd2l0aG91dCBwcm9ibGVtcy4KLQot
ICAgICAgICAgICAgLy8gRG8gbm90IGJvdGhlciB3aXRoIHRoZSB3b3JrIGlmIGEgYnVpbGQgYW5k
IHRleHQgd2lsbAotICAgICAgICAgICAgLy8gbm90IGJlIGlubGluZWQuCi0gICAgICAgICAgICBp
ZiAoY29uZmlnLmlzQnVpbGQgJiYgIWNvbmZpZy5pbmxpbmVUZXh0KSB7Ci0gICAgICAgICAgICAg
ICAgb25Mb2FkKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICBtYXN0ZXJDb25maWcuaXNCdWlsZCA9IGNvbmZpZy5pc0J1aWxkOwotCi0gICAg
ICAgICAgICB2YXIgcGFyc2VkID0gdGV4dC5wYXJzZU5hbWUobmFtZSksCi0gICAgICAgICAgICAg
ICAgbm9uU3RyaXBOYW1lID0gcGFyc2VkLm1vZHVsZU5hbWUgKwotICAgICAgICAgICAgICAgICAg
ICAocGFyc2VkLmV4dCA/ICcuJyArIHBhcnNlZC5leHQgOiAnJyksCi0gICAgICAgICAgICAgICAg
dXJsID0gcmVxLnRvVXJsKG5vblN0cmlwTmFtZSksCi0gICAgICAgICAgICAgICAgdXNlWGhyID0g
KG1hc3RlckNvbmZpZy51c2VYaHIpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgdGV4dC51
c2VYaHI7Ci0KLSAgICAgICAgICAgIC8vIERvIG5vdCBsb2FkIGlmIGl0IGlzIGFuIGVtcHR5OiB1
cmwKLSAgICAgICAgICAgIGlmICh1cmwuaW5kZXhPZignZW1wdHk6JykgPT09IDApIHsKLSAgICAg
ICAgICAgICAgICBvbkxvYWQoKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgIC8vTG9hZCB0aGUgdGV4dC4gVXNlIFhIUiBpZiBwb3NzaWJsZSBh
bmQgaW4gYSBicm93c2VyLgotICAgICAgICAgICAgaWYgKCFoYXNMb2NhdGlvbiB8fCB1c2VYaHIo
dXJsLCBkZWZhdWx0UHJvdG9jb2wsIGRlZmF1bHRIb3N0TmFtZSwgZGVmYXVsdFBvcnQpKSB7Ci0g
ICAgICAgICAgICAgICAgdGV4dC5nZXQodXJsLCBmdW5jdGlvbiAoY29udGVudCkgewotICAgICAg
ICAgICAgICAgICAgICB0ZXh0LmZpbmlzaExvYWQobmFtZSwgcGFyc2VkLnN0cmlwLCBjb250ZW50
LCBvbkxvYWQpOwotICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uIChlcnIpIHsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKG9uTG9hZC5lcnJvcikgewotICAgICAgICAgICAgICAgICAgICAgICAg
b25Mb2FkLmVycm9yKGVycik7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICB9KTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgLy9OZWVkIHRvIGZl
dGNoIHRoZSByZXNvdXJjZSBhY3Jvc3MgZG9tYWlucy4gQXNzdW1lCi0gICAgICAgICAgICAgICAg
Ly90aGUgcmVzb3VyY2UgaGFzIGJlZW4gb3B0aW1pemVkIGludG8gYSBKUyBtb2R1bGUuIEZldGNo
Ci0gICAgICAgICAgICAgICAgLy9ieSB0aGUgbW9kdWxlIG5hbWUgKyBleHRlbnNpb24sIGJ1dCBk
byBub3QgaW5jbHVkZSB0aGUKLSAgICAgICAgICAgICAgICAvLyFzdHJpcCBwYXJ0IHRvIGF2b2lk
IGZpbGUgc3lzdGVtIGlzc3Vlcy4KLSAgICAgICAgICAgICAgICByZXEoW25vblN0cmlwTmFtZV0s
IGZ1bmN0aW9uIChjb250ZW50KSB7Ci0gICAgICAgICAgICAgICAgICAgIHRleHQuZmluaXNoTG9h
ZChwYXJzZWQubW9kdWxlTmFtZSArICcuJyArIHBhcnNlZC5leHQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwYXJzZWQuc3RyaXAsIGNvbnRlbnQsIG9uTG9hZCk7Ci0gICAg
ICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0sCi0KLSAgICAgICAgd3Jp
dGU6IGZ1bmN0aW9uIChwbHVnaW5OYW1lLCBtb2R1bGVOYW1lLCB3cml0ZSwgY29uZmlnKSB7Ci0g
ICAgICAgICAgICBpZiAoYnVpbGRNYXAuaGFzT3duUHJvcGVydHkobW9kdWxlTmFtZSkpIHsKLSAg
ICAgICAgICAgICAgICB2YXIgY29udGVudCA9IHRleHQuanNFc2NhcGUoYnVpbGRNYXBbbW9kdWxl
TmFtZV0pOwotICAgICAgICAgICAgICAgIHdyaXRlLmFzTW9kdWxlKHBsdWdpbk5hbWUgKyAiISIg
KyBtb2R1bGVOYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZpbmUoZnVu
Y3Rpb24gKCkgeyByZXR1cm4gJyIgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb250ZW50ICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJzt9KTtcbiIpOwot
ICAgICAgICAgICAgfQotICAgICAgICB9LAotCi0gICAgICAgIHdyaXRlRmlsZTogZnVuY3Rpb24g
KHBsdWdpbk5hbWUsIG1vZHVsZU5hbWUsIHJlcSwgd3JpdGUsIGNvbmZpZykgewotICAgICAgICAg
ICAgdmFyIHBhcnNlZCA9IHRleHQucGFyc2VOYW1lKG1vZHVsZU5hbWUpLAotICAgICAgICAgICAg
ICAgIGV4dFBhcnQgPSBwYXJzZWQuZXh0ID8gJy4nICsgcGFyc2VkLmV4dCA6ICcnLAotICAgICAg
ICAgICAgICAgIG5vblN0cmlwTmFtZSA9IHBhcnNlZC5tb2R1bGVOYW1lICsgZXh0UGFydCwKLSAg
ICAgICAgICAgICAgICAvL1VzZSBhICcuanMnIGZpbGUgbmFtZSBzbyB0aGF0IGl0IGluZGljYXRl
cyBpdCBpcyBhCi0gICAgICAgICAgICAgICAgLy9zY3JpcHQgdGhhdCBjYW4gYmUgbG9hZGVkIGFj
cm9zcyBkb21haW5zLgotICAgICAgICAgICAgICAgIGZpbGVOYW1lID0gcmVxLnRvVXJsKHBhcnNl
ZC5tb2R1bGVOYW1lICsgZXh0UGFydCkgKyAnLmpzJzsKLQotICAgICAgICAgICAgLy9MZXZlcmFn
ZSBvd24gbG9hZCgpIG1ldGhvZCB0byBsb2FkIHBsdWdpbiB2YWx1ZSwgYnV0IG9ubHkKLSAgICAg
ICAgICAgIC8vd3JpdGUgb3V0IHZhbHVlcyB0aGF0IGRvIG5vdCBoYXZlIHRoZSBzdHJpcCBhcmd1
bWVudCwKLSAgICAgICAgICAgIC8vdG8gYXZvaWQgYW55IHBvdGVudGlhbCBpc3N1ZXMgd2l0aCAh
IGluIGZpbGUgbmFtZXMuCi0gICAgICAgICAgICB0ZXh0LmxvYWQobm9uU3RyaXBOYW1lLCByZXEs
IGZ1bmN0aW9uICh2YWx1ZSkgewotICAgICAgICAgICAgICAgIC8vVXNlIG93biB3cml0ZSgpIG1l
dGhvZCB0byBjb25zdHJ1Y3QgZnVsbCBtb2R1bGUgdmFsdWUuCi0gICAgICAgICAgICAgICAgLy9C
dXQgbmVlZCB0byBjcmVhdGUgc2hlbGwgdGhhdCB0cmFuc2xhdGVzIHdyaXRlRmlsZSdzCi0gICAg
ICAgICAgICAgICAgLy93cml0ZSgpIHRvIHRoZSByaWdodCBpbnRlcmZhY2UuCi0gICAgICAgICAg
ICAgICAgdmFyIHRleHRXcml0ZSA9IGZ1bmN0aW9uIChjb250ZW50cykgewotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gd3JpdGUoZmlsZU5hbWUsIGNvbnRlbnRzKTsKLSAgICAgICAgICAgICAg
ICB9OwotICAgICAgICAgICAgICAgIHRleHRXcml0ZS5hc01vZHVsZSA9IGZ1bmN0aW9uIChtb2R1
bGVOYW1lLCBjb250ZW50cykgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gd3JpdGUuYXNN
b2R1bGUobW9kdWxlTmFtZSwgZmlsZU5hbWUsIGNvbnRlbnRzKTsKLSAgICAgICAgICAgICAgICB9
OwotCi0gICAgICAgICAgICAgICAgdGV4dC53cml0ZShwbHVnaW5OYW1lLCBub25TdHJpcE5hbWUs
IHRleHRXcml0ZSwgY29uZmlnKTsKLSAgICAgICAgICAgIH0sIGNvbmZpZyk7Ci0gICAgICAgIH0K
LSAgICB9OwotCi0gICAgaWYgKG1hc3RlckNvbmZpZy5lbnYgPT09ICdub2RlJyB8fCAoIW1hc3Rl
ckNvbmZpZy5lbnYgJiYKLSAgICAgICAgICAgIHR5cGVvZiBwcm9jZXNzICE9PSAidW5kZWZpbmVk
IiAmJgotICAgICAgICAgICAgcHJvY2Vzcy52ZXJzaW9ucyAmJgotICAgICAgICAgICAgISFwcm9j
ZXNzLnZlcnNpb25zLm5vZGUgJiYKLSAgICAgICAgICAgICFwcm9jZXNzLnZlcnNpb25zWydub2Rl
LXdlYmtpdCddKSkgewotICAgICAgICAvL1VzaW5nIHNwZWNpYWwgcmVxdWlyZS5ub2RlUmVxdWly
ZSwgc29tZXRoaW5nIGFkZGVkIGJ5IHIuanMuCi0gICAgICAgIGZzID0gcmVxdWlyZS5ub2RlUmVx
dWlyZSgnZnMnKTsKLQotICAgICAgICB0ZXh0LmdldCA9IGZ1bmN0aW9uICh1cmwsIGNhbGxiYWNr
LCBlcnJiYWNrKSB7Ci0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIHZhciBmaWxl
ID0gZnMucmVhZEZpbGVTeW5jKHVybCwgJ3V0ZjgnKTsKLSAgICAgICAgICAgICAgICAvL1JlbW92
ZSBCT00gKEJ5dGUgTWFyayBPcmRlcikgZnJvbSB1dGY4IGZpbGVzIGlmIGl0IGlzIHRoZXJlLgot
ICAgICAgICAgICAgICAgIGlmIChmaWxlLmluZGV4T2YoJ1x1RkVGRicpID09PSAwKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGZpbGUgPSBmaWxlLnN1YnN0cmluZygxKTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2soZmlsZSk7Ci0gICAgICAgICAgICB9IGNhdGNo
IChlKSB7Ci0gICAgICAgICAgICAgICAgZXJyYmFjayhlKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfTsKLSAgICB9IGVsc2UgaWYgKG1hc3RlckNvbmZpZy5lbnYgPT09ICd4aHInIHx8ICghbWFz
dGVyQ29uZmlnLmVudiAmJgotICAgICAgICAgICAgdGV4dC5jcmVhdGVYaHIoKSkpIHsKLSAgICAg
ICAgdGV4dC5nZXQgPSBmdW5jdGlvbiAodXJsLCBjYWxsYmFjaywgZXJyYmFjaywgaGVhZGVycykg
ewotICAgICAgICAgICAgdmFyIHhociA9IHRleHQuY3JlYXRlWGhyKCksIGhlYWRlcjsKLSAgICAg
ICAgICAgIHhoci5vcGVuKCdHRVQnLCB1cmwsIHRydWUpOwotCi0gICAgICAgICAgICAvL0FsbG93
IHBsdWdpbnMgZGlyZWN0IGFjY2VzcyB0byB4aHIgaGVhZGVycwotICAgICAgICAgICAgaWYgKGhl
YWRlcnMpIHsKLSAgICAgICAgICAgICAgICBmb3IgKGhlYWRlciBpbiBoZWFkZXJzKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChoZWFkZXJzLmhhc093blByb3BlcnR5KGhlYWRlcikpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKGhlYWRlci50b0xvd2Vy
Q2FzZSgpLCBoZWFkZXJzW2hlYWRlcl0pOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvL0FsbG93IG92ZXJyaWRl
cyBzcGVjaWZpZWQgaW4gY29uZmlnCi0gICAgICAgICAgICBpZiAobWFzdGVyQ29uZmlnLm9uWGhy
KSB7Ci0gICAgICAgICAgICAgICAgbWFzdGVyQ29uZmlnLm9uWGhyKHhociwgdXJsKTsKLSAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9u
IChldnQpIHsKLSAgICAgICAgICAgICAgICB2YXIgc3RhdHVzLCBlcnI7Ci0gICAgICAgICAgICAg
ICAgLy9EbyBub3QgZXhwbGljaXRseSBoYW5kbGUgZXJyb3JzLCB0aG9zZSBzaG91bGQgYmUKLSAg
ICAgICAgICAgICAgICAvL3Zpc2libGUgdmlhIGNvbnNvbGUgb3V0cHV0IGluIHRoZSBicm93c2Vy
LgotICAgICAgICAgICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PT0gNCkgewotICAgICAgICAg
ICAgICAgICAgICBzdGF0dXMgPSB4aHIuc3RhdHVzOwotICAgICAgICAgICAgICAgICAgICBpZiAo
c3RhdHVzID4gMzk5ICYmIHN0YXR1cyA8IDYwMCkgewotICAgICAgICAgICAgICAgICAgICAgICAg
Ly9BbiBodHRwIDR4eCBvciA1eHggZXJyb3IuIFNpZ25hbCBhbiBlcnJvci4KLSAgICAgICAgICAg
ICAgICAgICAgICAgIGVyciA9IG5ldyBFcnJvcih1cmwgKyAnIEhUVFAgc3RhdHVzOiAnICsgc3Rh
dHVzKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGVyci54aHIgPSB4aHI7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBlcnJiYWNrKGVycik7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayh4aHIucmVzcG9uc2VUZXh0KTsKLSAg
ICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIGlmIChtYXN0ZXJDb25m
aWcub25YaHJDb21wbGV0ZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgbWFzdGVyQ29uZmln
Lm9uWGhyQ29tcGxldGUoeGhyLCB1cmwpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHhoci5zZW5kKG51bGwpOwot
ICAgICAgICB9OwotICAgIH0gZWxzZSBpZiAobWFzdGVyQ29uZmlnLmVudiA9PT0gJ3JoaW5vJyB8
fCAoIW1hc3RlckNvbmZpZy5lbnYgJiYKLSAgICAgICAgICAgIHR5cGVvZiBQYWNrYWdlcyAhPT0g
J3VuZGVmaW5lZCcgJiYgdHlwZW9mIGphdmEgIT09ICd1bmRlZmluZWQnKSkgewotICAgICAgICAv
L1doeSBKYXZhLCB3aHkgaXMgdGhpcyBzbyBhd2t3YXJkPwotICAgICAgICB0ZXh0LmdldCA9IGZ1
bmN0aW9uICh1cmwsIGNhbGxiYWNrKSB7Ci0gICAgICAgICAgICB2YXIgc3RyaW5nQnVmZmVyLCBs
aW5lLAotICAgICAgICAgICAgICAgIGVuY29kaW5nID0gInV0Zi04IiwKLSAgICAgICAgICAgICAg
ICBmaWxlID0gbmV3IGphdmEuaW8uRmlsZSh1cmwpLAotICAgICAgICAgICAgICAgIGxpbmVTZXBh
cmF0b3IgPSBqYXZhLmxhbmcuU3lzdGVtLmdldFByb3BlcnR5KCJsaW5lLnNlcGFyYXRvciIpLAot
ICAgICAgICAgICAgICAgIGlucHV0ID0gbmV3IGphdmEuaW8uQnVmZmVyZWRSZWFkZXIobmV3IGph
dmEuaW8uSW5wdXRTdHJlYW1SZWFkZXIobmV3IGphdmEuaW8uRmlsZUlucHV0U3RyZWFtKGZpbGUp
LCBlbmNvZGluZykpLAotICAgICAgICAgICAgICAgIGNvbnRlbnQgPSAnJzsKLSAgICAgICAgICAg
IHRyeSB7Ci0gICAgICAgICAgICAgICAgc3RyaW5nQnVmZmVyID0gbmV3IGphdmEubGFuZy5TdHJp
bmdCdWZmZXIoKTsKLSAgICAgICAgICAgICAgICBsaW5lID0gaW5wdXQucmVhZExpbmUoKTsKLQot
ICAgICAgICAgICAgICAgIC8vIEJ5dGUgT3JkZXIgTWFyayAoQk9NKSAtIFRoZSBVbmljb2RlIFN0
YW5kYXJkLCB2ZXJzaW9uIDMuMCwgcGFnZSAzMjQKLSAgICAgICAgICAgICAgICAvLyBodHRwOi8v
d3d3LnVuaWNvZGUub3JnL2ZhcS91dGZfYm9tLmh0bWwKLQotICAgICAgICAgICAgICAgIC8vIE5v
dGUgdGhhdCB3aGVuIHdlIHVzZSB1dGYtOCwgdGhlIEJPTSBzaG91bGQgYXBwZWFyIGFzICJFRiBC
QiBCRiIsIGJ1dCBpdCBkb2Vzbid0IGR1ZSB0byB0aGlzIGJ1ZyBpbiB0aGUgSkRLOgotICAgICAg
ICAgICAgICAgIC8vIGh0dHA6Ly9idWdzLnN1bi5jb20vYnVnZGF0YWJhc2Uvdmlld19idWcuZG8/
YnVnX2lkPTQ1MDgwNTgKLSAgICAgICAgICAgICAgICBpZiAobGluZSAmJiBsaW5lLmxlbmd0aCgp
ICYmIGxpbmUuY2hhckF0KDApID09PSAweGZlZmYpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8g
RWF0IHRoZSBCT00sIHNpbmNlIHdlJ3ZlIGFscmVhZHkgZm91bmQgdGhlIGVuY29kaW5nIG9uIHRo
aXMgZmlsZSwKLSAgICAgICAgICAgICAgICAgICAgLy8gYW5kIHdlIHBsYW4gdG8gY29uY2F0ZW5h
dGluZyB0aGlzIGJ1ZmZlciB3aXRoIG90aGVyczsgdGhlIEJPTSBzaG91bGQKLSAgICAgICAgICAg
ICAgICAgICAgLy8gb25seSBhcHBlYXIgYXQgdGhlIHRvcCBvZiBhIGZpbGUuCi0gICAgICAgICAg
ICAgICAgICAgIGxpbmUgPSBsaW5lLnN1YnN0cmluZygxKTsKLSAgICAgICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgICAgICBpZiAobGluZSAhPT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAg
ICBzdHJpbmdCdWZmZXIuYXBwZW5kKGxpbmUpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgICAgIHdoaWxlICgobGluZSA9IGlucHV0LnJlYWRMaW5lKCkpICE9PSBudWxsKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIHN0cmluZ0J1ZmZlci5hcHBlbmQobGluZVNlcGFyYXRvcik7Ci0g
ICAgICAgICAgICAgICAgICAgIHN0cmluZ0J1ZmZlci5hcHBlbmQobGluZSk7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIC8vTWFrZSBzdXJlIHdlIHJldHVybiBhIEphdmFTY3Jp
cHQgc3RyaW5nIGFuZCBub3QgYSBKYXZhIHN0cmluZy4KLSAgICAgICAgICAgICAgICBjb250ZW50
ID0gU3RyaW5nKHN0cmluZ0J1ZmZlci50b1N0cmluZygpKTsgLy9TdHJpbmcKLSAgICAgICAgICAg
IH0gZmluYWxseSB7Ci0gICAgICAgICAgICAgICAgaW5wdXQuY2xvc2UoKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGNhbGxiYWNrKGNvbnRlbnQpOwotICAgICAgICB9OwotICAgIH0gZWxz
ZSBpZiAobWFzdGVyQ29uZmlnLmVudiA9PT0gJ3hwY29ubmVjdCcgfHwgKCFtYXN0ZXJDb25maWcu
ZW52ICYmCi0gICAgICAgICAgICB0eXBlb2YgQ29tcG9uZW50cyAhPT0gJ3VuZGVmaW5lZCcgJiYg
Q29tcG9uZW50cy5jbGFzc2VzICYmCi0gICAgICAgICAgICBDb21wb25lbnRzLmludGVyZmFjZXMp
KSB7Ci0gICAgICAgIC8vQXZlcnQgeW91ciBnYXplIQotICAgICAgICBDYyA9IENvbXBvbmVudHMu
Y2xhc3NlcywKLSAgICAgICAgQ2kgPSBDb21wb25lbnRzLmludGVyZmFjZXM7Ci0gICAgICAgIENv
bXBvbmVudHMudXRpbHNbJ2ltcG9ydCddKCdyZXNvdXJjZTovL2dyZS9tb2R1bGVzL0ZpbGVVdGls
cy5qc20nKTsKLSAgICAgICAgeHBjSXNXaW5kb3dzID0gKCdAbW96aWxsYS5vcmcvd2luZG93cy1y
ZWdpc3RyeS1rZXk7MScgaW4gQ2MpOwotCi0gICAgICAgIHRleHQuZ2V0ID0gZnVuY3Rpb24gKHVy
bCwgY2FsbGJhY2spIHsKLSAgICAgICAgICAgIHZhciBpblN0cmVhbSwgY29udmVydFN0cmVhbSwg
ZmlsZU9iaiwKLSAgICAgICAgICAgICAgICByZWFkRGF0YSA9IHt9OwotCi0gICAgICAgICAgICBp
ZiAoeHBjSXNXaW5kb3dzKSB7Ci0gICAgICAgICAgICAgICAgdXJsID0gdXJsLnJlcGxhY2UoL1wv
L2csICdcXCcpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBmaWxlT2JqID0gbmV3IEZp
bGVVdGlscy5GaWxlKHVybCk7Ci0KLSAgICAgICAgICAgIC8vWFBDT00sIHlvdSBzbyBjcmF6eQot
ICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBpblN0cmVhbSA9IENjWydAbW96aWxs
YS5vcmcvbmV0d29yay9maWxlLWlucHV0LXN0cmVhbTsxJ10KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC5jcmVhdGVJbnN0YW5jZShDaS5uc0lGaWxlSW5wdXRTdHJlYW0pOwotICAgICAgICAg
ICAgICAgIGluU3RyZWFtLmluaXQoZmlsZU9iaiwgMSwgMCwgZmFsc2UpOwotCi0gICAgICAgICAg
ICAgICAgY29udmVydFN0cmVhbSA9IENjWydAbW96aWxsYS5vcmcvaW50bC9jb252ZXJ0ZXItaW5w
dXQtc3RyZWFtOzEnXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY3JlYXRlSW5z
dGFuY2UoQ2kubnNJQ29udmVydGVySW5wdXRTdHJlYW0pOwotICAgICAgICAgICAgICAgIGNvbnZl
cnRTdHJlYW0uaW5pdChpblN0cmVhbSwgInV0Zi04IiwgaW5TdHJlYW0uYXZhaWxhYmxlKCksCi0g
ICAgICAgICAgICAgICAgQ2kubnNJQ29udmVydGVySW5wdXRTdHJlYW0uREVGQVVMVF9SRVBMQUNF
TUVOVF9DSEFSQUNURVIpOwotCi0gICAgICAgICAgICAgICAgY29udmVydFN0cmVhbS5yZWFkU3Ry
aW5nKGluU3RyZWFtLmF2YWlsYWJsZSgpLCByZWFkRGF0YSk7Ci0gICAgICAgICAgICAgICAgY29u
dmVydFN0cmVhbS5jbG9zZSgpOwotICAgICAgICAgICAgICAgIGluU3RyZWFtLmNsb3NlKCk7Ci0g
ICAgICAgICAgICAgICAgY2FsbGJhY2socmVhZERhdGEudmFsdWUpOwotICAgICAgICAgICAgfSBj
YXRjaCAoZSkgewotICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigoZmlsZU9iaiAmJiBm
aWxlT2JqLnBhdGggfHwgJycpICsgJzogJyArIGUpOwotICAgICAgICAgICAgfQotICAgICAgICB9
OwotICAgIH0KLSAgICByZXR1cm4gdGV4dDsKLX0pOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9kZXBlbmRlbmN5LWV4YW1wbGVzL2Zs
aWdodC9ib3dlcl9jb21wb25lbnRzL3JlcXVpcmVqcy9yZXF1aXJlLmpzIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9kZXBlbmRlbmN5LWV4YW1wbGVzL2Zs
aWdodC9ib3dlcl9jb21wb25lbnRzL3JlcXVpcmVqcy9yZXF1aXJlLmpzCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAyY2UwOWI1ZTNiMjMxMWQ3MWU2ODBlODYyNjNjNjZiNDliOGVhYjUz
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZGVwZW5kZW5jeS1leGFtcGxl
cy9mbGlnaHQvYm93ZXJfY29tcG9uZW50cy9yZXF1aXJlanMvcmVxdWlyZS5qcworKysgL2Rldi9u
dWxsCkBAIC0xLDIwNTQgKzAsMCBAQAotLyoqIHZpbTogZXQ6dHM9NDpzdz00OnN0cz00Ci0gKiBA
bGljZW5zZSBSZXF1aXJlSlMgMi4xLjkgQ29weXJpZ2h0IChjKSAyMDEwLTIwMTIsIFRoZSBEb2pv
IEZvdW5kYXRpb24gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqIEF2YWlsYWJsZSB2aWEgdGhlIE1J
VCBvciBuZXcgQlNEIGxpY2Vuc2UuCi0gKiBzZWU6IGh0dHA6Ly9naXRodWIuY29tL2pyYnVya2Uv
cmVxdWlyZWpzIGZvciBkZXRhaWxzCi0gKi8KLS8vTm90IHVzaW5nIHN0cmljdDogdW5ldmVuIHN0
cmljdCBzdXBwb3J0IGluIGJyb3dzZXJzLCAjMzkyLCBhbmQgY2F1c2VzCi0vL3Byb2JsZW1zIHdp
dGggcmVxdWlyZWpzLmV4ZWMoKS90cmFuc3BpbGVyIHBsdWdpbnMgdGhhdCBtYXkgbm90IGJlIHN0
cmljdC4KLS8qanNsaW50IHJlZ2V4cDogdHJ1ZSwgbm9tZW46IHRydWUsIHNsb3BweTogdHJ1ZSAq
LwotLypnbG9iYWwgd2luZG93LCBuYXZpZ2F0b3IsIGRvY3VtZW50LCBpbXBvcnRTY3JpcHRzLCBz
ZXRUaW1lb3V0LCBvcGVyYSAqLwotCi12YXIgcmVxdWlyZWpzLCByZXF1aXJlLCBkZWZpbmU7Ci0o
ZnVuY3Rpb24gKGdsb2JhbCkgewotICAgIHZhciByZXEsIHMsIGhlYWQsIGJhc2VFbGVtZW50LCBk
YXRhTWFpbiwgc3JjLAotICAgICAgICBpbnRlcmFjdGl2ZVNjcmlwdCwgY3VycmVudGx5QWRkaW5n
U2NyaXB0LCBtYWluU2NyaXB0LCBzdWJQYXRoLAotICAgICAgICB2ZXJzaW9uID0gJzIuMS45JywK
LSAgICAgICAgY29tbWVudFJlZ0V4cCA9IC8oXC9cKihbXHNcU10qPylcKlwvfChbXjpdfF4pXC9c
LyguKikkKS9tZywKLSAgICAgICAgY2pzUmVxdWlyZVJlZ0V4cCA9IC9bXi5dXHMqcmVxdWlyZVxz
KlwoXHMqWyInXShbXiciXHNdKylbIiddXHMqXCkvZywKLSAgICAgICAganNTdWZmaXhSZWdFeHAg
PSAvXC5qcyQvLAotICAgICAgICBjdXJyRGlyUmVnRXhwID0gL15cLlwvLywKLSAgICAgICAgb3Ag
PSBPYmplY3QucHJvdG90eXBlLAotICAgICAgICBvc3RyaW5nID0gb3AudG9TdHJpbmcsCi0gICAg
ICAgIGhhc093biA9IG9wLmhhc093blByb3BlcnR5LAotICAgICAgICBhcCA9IEFycmF5LnByb3Rv
dHlwZSwKLSAgICAgICAgYXBzcCA9IGFwLnNwbGljZSwKLSAgICAgICAgaXNCcm93c2VyID0gISEo
dHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIG5hdmlnYXRvciAhPT0gJ3Vu
ZGVmaW5lZCcgJiYgd2luZG93LmRvY3VtZW50KSwKLSAgICAgICAgaXNXZWJXb3JrZXIgPSAhaXNC
cm93c2VyICYmIHR5cGVvZiBpbXBvcnRTY3JpcHRzICE9PSAndW5kZWZpbmVkJywKLSAgICAgICAg
Ly9QUzMgaW5kaWNhdGVzIGxvYWRlZCBhbmQgY29tcGxldGUsIGJ1dCBuZWVkIHRvIHdhaXQgZm9y
IGNvbXBsZXRlCi0gICAgICAgIC8vc3BlY2lmaWNhbGx5LiBTZXF1ZW5jZSBpcyAnbG9hZGluZycs
ICdsb2FkZWQnLCBleGVjdXRpb24sCi0gICAgICAgIC8vIHRoZW4gJ2NvbXBsZXRlJy4gVGhlIFVB
IGNoZWNrIGlzIHVuZm9ydHVuYXRlLCBidXQgbm90IHN1cmUgaG93Ci0gICAgICAgIC8vdG8gZmVh
dHVyZSB0ZXN0IHcvbyBjYXVzaW5nIHBlcmYgaXNzdWVzLgotICAgICAgICByZWFkeVJlZ0V4cCA9
IGlzQnJvd3NlciAmJiBuYXZpZ2F0b3IucGxhdGZvcm0gPT09ICdQTEFZU1RBVElPTiAzJyA/Ci0g
ICAgICAgICAgICAgICAgICAgICAgL15jb21wbGV0ZSQvIDogL14oY29tcGxldGV8bG9hZGVkKSQv
LAotICAgICAgICBkZWZDb250ZXh0TmFtZSA9ICdfJywKLSAgICAgICAgLy9PaCB0aGUgdHJhZ2Vk
eSwgZGV0ZWN0aW5nIG9wZXJhLiBTZWUgdGhlIHVzYWdlIG9mIGlzT3BlcmEgZm9yIHJlYXNvbi4K
LSAgICAgICAgaXNPcGVyYSA9IHR5cGVvZiBvcGVyYSAhPT0gJ3VuZGVmaW5lZCcgJiYgb3BlcmEu
dG9TdHJpbmcoKSA9PT0gJ1tvYmplY3QgT3BlcmFdJywKLSAgICAgICAgY29udGV4dHMgPSB7fSwK
LSAgICAgICAgY2ZnID0ge30sCi0gICAgICAgIGdsb2JhbERlZlF1ZXVlID0gW10sCi0gICAgICAg
IHVzZUludGVyYWN0aXZlID0gZmFsc2U7Ci0KLSAgICBmdW5jdGlvbiBpc0Z1bmN0aW9uKGl0KSB7
Ci0gICAgICAgIHJldHVybiBvc3RyaW5nLmNhbGwoaXQpID09PSAnW29iamVjdCBGdW5jdGlvbl0n
OwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGlzQXJyYXkoaXQpIHsKLSAgICAgICAgcmV0dXJuIG9z
dHJpbmcuY2FsbChpdCkgPT09ICdbb2JqZWN0IEFycmF5XSc7Ci0gICAgfQotCi0gICAgLyoqCi0g
ICAgICogSGVscGVyIGZ1bmN0aW9uIGZvciBpdGVyYXRpbmcgb3ZlciBhbiBhcnJheS4gSWYgdGhl
IGZ1bmMgcmV0dXJucwotICAgICAqIGEgdHJ1ZSB2YWx1ZSwgaXQgd2lsbCBicmVhayBvdXQgb2Yg
dGhlIGxvb3AuCi0gICAgICovCi0gICAgZnVuY3Rpb24gZWFjaChhcnksIGZ1bmMpIHsKLSAgICAg
ICAgaWYgKGFyeSkgewotICAgICAgICAgICAgdmFyIGk7Ci0gICAgICAgICAgICBmb3IgKGkgPSAw
OyBpIDwgYXJ5Lmxlbmd0aDsgaSArPSAxKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGFyeVtpXSAm
JiBmdW5jKGFyeVtpXSwgaSwgYXJ5KSkgewotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAv
KioKLSAgICAgKiBIZWxwZXIgZnVuY3Rpb24gZm9yIGl0ZXJhdGluZyBvdmVyIGFuIGFycmF5IGJh
Y2t3YXJkcy4gSWYgdGhlIGZ1bmMKLSAgICAgKiByZXR1cm5zIGEgdHJ1ZSB2YWx1ZSwgaXQgd2ls
bCBicmVhayBvdXQgb2YgdGhlIGxvb3AuCi0gICAgICovCi0gICAgZnVuY3Rpb24gZWFjaFJldmVy
c2UoYXJ5LCBmdW5jKSB7Ci0gICAgICAgIGlmIChhcnkpIHsKLSAgICAgICAgICAgIHZhciBpOwot
ICAgICAgICAgICAgZm9yIChpID0gYXJ5Lmxlbmd0aCAtIDE7IGkgPiAtMTsgaSAtPSAxKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKGFyeVtpXSAmJiBmdW5jKGFyeVtpXSwgaSwgYXJ5KSkgewotICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBoYXNQcm9wKG9iaiwgcHJvcCkgewot
ICAgICAgICByZXR1cm4gaGFzT3duLmNhbGwob2JqLCBwcm9wKTsKLSAgICB9Ci0KLSAgICBmdW5j
dGlvbiBnZXRPd24ob2JqLCBwcm9wKSB7Ci0gICAgICAgIHJldHVybiBoYXNQcm9wKG9iaiwgcHJv
cCkgJiYgb2JqW3Byb3BdOwotICAgIH0KLQotICAgIC8qKgotICAgICAqIEN5Y2xlcyBvdmVyIHBy
b3BlcnRpZXMgaW4gYW4gb2JqZWN0IGFuZCBjYWxscyBhIGZ1bmN0aW9uIGZvciBlYWNoCi0gICAg
ICogcHJvcGVydHkgdmFsdWUuIElmIHRoZSBmdW5jdGlvbiByZXR1cm5zIGEgdHJ1dGh5IHZhbHVl
LCB0aGVuIHRoZQotICAgICAqIGl0ZXJhdGlvbiBpcyBzdG9wcGVkLgotICAgICAqLwotICAgIGZ1
bmN0aW9uIGVhY2hQcm9wKG9iaiwgZnVuYykgewotICAgICAgICB2YXIgcHJvcDsKLSAgICAgICAg
Zm9yIChwcm9wIGluIG9iaikgewotICAgICAgICAgICAgaWYgKGhhc1Byb3Aob2JqLCBwcm9wKSkg
ewotICAgICAgICAgICAgICAgIGlmIChmdW5jKG9ialtwcm9wXSwgcHJvcCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogU2ltcGxlIGZ1bmN0aW9uIHRvIG1peCBp
biBwcm9wZXJ0aWVzIGZyb20gc291cmNlIGludG8gdGFyZ2V0LAotICAgICAqIGJ1dCBvbmx5IGlm
IHRhcmdldCBkb2VzIG5vdCBhbHJlYWR5IGhhdmUgYSBwcm9wZXJ0eSBvZiB0aGUgc2FtZSBuYW1l
LgotICAgICAqLwotICAgIGZ1bmN0aW9uIG1peGluKHRhcmdldCwgc291cmNlLCBmb3JjZSwgZGVl
cFN0cmluZ01peGluKSB7Ci0gICAgICAgIGlmIChzb3VyY2UpIHsKLSAgICAgICAgICAgIGVhY2hQ
cm9wKHNvdXJjZSwgZnVuY3Rpb24gKHZhbHVlLCBwcm9wKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KGZvcmNlIHx8ICFoYXNQcm9wKHRhcmdldCwgcHJvcCkpIHsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKGRlZXBTdHJpbmdNaXhpbiAmJiB0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoIXRhcmdldFtwcm9wXSkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRhcmdldFtwcm9wXSA9IHt9OwotICAgICAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgICAgICAgICAgbWl4aW4odGFyZ2V0W3Byb3BdLCB2YWx1ZSwgZm9y
Y2UsIGRlZXBTdHJpbmdNaXhpbik7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICB0YXJnZXRbcHJvcF0gPSB2YWx1ZTsKLSAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0g
ICAgICAgIHJldHVybiB0YXJnZXQ7Ci0gICAgfQotCi0gICAgLy9TaW1pbGFyIHRvIEZ1bmN0aW9u
LnByb3RvdHlwZS5iaW5kLCBidXQgdGhlICd0aGlzJyBvYmplY3QgaXMgc3BlY2lmaWVkCi0gICAg
Ly9maXJzdCwgc2luY2UgaXQgaXMgZWFzaWVyIHRvIHJlYWQvZmlndXJlIG91dCB3aGF0ICd0aGlz
JyB3aWxsIGJlLgotICAgIGZ1bmN0aW9uIGJpbmQob2JqLCBmbikgewotICAgICAgICByZXR1cm4g
ZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgcmV0dXJuIGZuLmFwcGx5KG9iaiwgYXJndW1lbnRz
KTsKLSAgICAgICAgfTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBzY3JpcHRzKCkgewotICAgICAg
ICByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NjcmlwdCcpOwotICAgIH0K
LQotICAgIGZ1bmN0aW9uIGRlZmF1bHRPbkVycm9yKGVycikgewotICAgICAgICB0aHJvdyBlcnI7
Ci0gICAgfQotCi0gICAgLy9BbGxvdyBnZXR0aW5nIGEgZ2xvYmFsIHRoYXQgZXhwcmVzc2VkIGlu
Ci0gICAgLy9kb3Qgbm90YXRpb24sIGxpa2UgJ2EuYi5jJy4KLSAgICBmdW5jdGlvbiBnZXRHbG9i
YWwodmFsdWUpIHsKLSAgICAgICAgaWYgKCF2YWx1ZSkgewotICAgICAgICAgICAgcmV0dXJuIHZh
bHVlOwotICAgICAgICB9Ci0gICAgICAgIHZhciBnID0gZ2xvYmFsOwotICAgICAgICBlYWNoKHZh
bHVlLnNwbGl0KCcuJyksIGZ1bmN0aW9uIChwYXJ0KSB7Ci0gICAgICAgICAgICBnID0gZ1twYXJ0
XTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHJldHVybiBnOwotICAgIH0KLQotICAgIC8qKgotICAg
ICAqIENvbnN0cnVjdHMgYW4gZXJyb3Igd2l0aCBhIHBvaW50ZXIgdG8gYW4gVVJMIHdpdGggbW9y
ZSBpbmZvcm1hdGlvbi4KLSAgICAgKiBAcGFyYW0ge1N0cmluZ30gaWQgdGhlIGVycm9yIElEIHRo
YXQgbWFwcyB0byBhbiBJRCBvbiBhIHdlYiBwYWdlLgotICAgICAqIEBwYXJhbSB7U3RyaW5nfSBt
ZXNzYWdlIGh1bWFuIHJlYWRhYmxlIGVycm9yLgotICAgICAqIEBwYXJhbSB7RXJyb3J9IFtlcnJd
IHRoZSBvcmlnaW5hbCBlcnJvciwgaWYgdGhlcmUgaXMgb25lLgotICAgICAqCi0gICAgICogQHJl
dHVybnMge0Vycm9yfQotICAgICAqLwotICAgIGZ1bmN0aW9uIG1ha2VFcnJvcihpZCwgbXNnLCBl
cnIsIHJlcXVpcmVNb2R1bGVzKSB7Ci0gICAgICAgIHZhciBlID0gbmV3IEVycm9yKG1zZyArICdc
bmh0dHA6Ly9yZXF1aXJlanMub3JnL2RvY3MvZXJyb3JzLmh0bWwjJyArIGlkKTsKLSAgICAgICAg
ZS5yZXF1aXJlVHlwZSA9IGlkOwotICAgICAgICBlLnJlcXVpcmVNb2R1bGVzID0gcmVxdWlyZU1v
ZHVsZXM7Ci0gICAgICAgIGlmIChlcnIpIHsKLSAgICAgICAgICAgIGUub3JpZ2luYWxFcnJvciA9
IGVycjsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gZTsKLSAgICB9Ci0KLSAgICBpZiAodHlw
ZW9mIGRlZmluZSAhPT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAgLy9JZiBhIGRlZmluZSBpcyBh
bHJlYWR5IGluIHBsYXkgdmlhIGFub3RoZXIgQU1EIGxvYWRlciwKLSAgICAgICAgLy9kbyBub3Qg
b3ZlcndyaXRlLgotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKHR5cGVvZiByZXF1
aXJlanMgIT09ICd1bmRlZmluZWQnKSB7Ci0gICAgICAgIGlmIChpc0Z1bmN0aW9uKHJlcXVpcmVq
cykpIHsKLSAgICAgICAgICAgIC8vRG8gbm90IG92ZXJ3cml0ZSBhbmQgZXhpc3RpbmcgcmVxdWly
ZWpzIGluc3RhbmNlLgotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGNm
ZyA9IHJlcXVpcmVqczsKLSAgICAgICAgcmVxdWlyZWpzID0gdW5kZWZpbmVkOwotICAgIH0KLQot
ICAgIC8vQWxsb3cgZm9yIGEgcmVxdWlyZSBjb25maWcgb2JqZWN0Ci0gICAgaWYgKHR5cGVvZiBy
ZXF1aXJlICE9PSAndW5kZWZpbmVkJyAmJiAhaXNGdW5jdGlvbihyZXF1aXJlKSkgewotICAgICAg
ICAvL2Fzc3VtZSBpdCBpcyBhIGNvbmZpZyBvYmplY3QuCi0gICAgICAgIGNmZyA9IHJlcXVpcmU7
Ci0gICAgICAgIHJlcXVpcmUgPSB1bmRlZmluZWQ7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gbmV3
Q29udGV4dChjb250ZXh0TmFtZSkgewotICAgICAgICB2YXIgaW5DaGVja0xvYWRlZCwgTW9kdWxl
LCBjb250ZXh0LCBoYW5kbGVycywKLSAgICAgICAgICAgIGNoZWNrTG9hZGVkVGltZW91dElkLAot
ICAgICAgICAgICAgY29uZmlnID0gewotICAgICAgICAgICAgICAgIC8vRGVmYXVsdHMuIERvIG5v
dCBzZXQgYSBkZWZhdWx0IGZvciBtYXAKLSAgICAgICAgICAgICAgICAvL2NvbmZpZyB0byBzcGVl
ZCB1cCBub3JtYWxpemUoKSwgd2hpY2gKLSAgICAgICAgICAgICAgICAvL3dpbGwgcnVuIGZhc3Rl
ciBpZiB0aGVyZSBpcyBubyBkZWZhdWx0LgotICAgICAgICAgICAgICAgIHdhaXRTZWNvbmRzOiA3
LAotICAgICAgICAgICAgICAgIGJhc2VVcmw6ICcuLycsCi0gICAgICAgICAgICAgICAgcGF0aHM6
IHt9LAotICAgICAgICAgICAgICAgIHBrZ3M6IHt9LAotICAgICAgICAgICAgICAgIHNoaW06IHt9
LAotICAgICAgICAgICAgICAgIGNvbmZpZzoge30KLSAgICAgICAgICAgIH0sCi0gICAgICAgICAg
ICByZWdpc3RyeSA9IHt9LAotICAgICAgICAgICAgLy9yZWdpc3RyeSBvZiBqdXN0IGVuYWJsZWQg
bW9kdWxlcywgdG8gc3BlZWQKLSAgICAgICAgICAgIC8vY3ljbGUgYnJlYWtpbmcgY29kZSB3aGVu
IGxvdHMgb2YgbW9kdWxlcwotICAgICAgICAgICAgLy9hcmUgcmVnaXN0ZXJlZCwgYnV0IG5vdCBh
Y3RpdmF0ZWQuCi0gICAgICAgICAgICBlbmFibGVkUmVnaXN0cnkgPSB7fSwKLSAgICAgICAgICAg
IHVuZGVmRXZlbnRzID0ge30sCi0gICAgICAgICAgICBkZWZRdWV1ZSA9IFtdLAotICAgICAgICAg
ICAgZGVmaW5lZCA9IHt9LAotICAgICAgICAgICAgdXJsRmV0Y2hlZCA9IHt9LAotICAgICAgICAg
ICAgcmVxdWlyZUNvdW50ZXIgPSAxLAotICAgICAgICAgICAgdW5ub3JtYWxpemVkQ291bnRlciA9
IDE7Ci0KLSAgICAgICAgLyoqCi0gICAgICAgICAqIFRyaW1zIHRoZSAuIGFuZCAuLiBmcm9tIGFu
IGFycmF5IG9mIHBhdGggc2VnbWVudHMuCi0gICAgICAgICAqIEl0IHdpbGwga2VlcCBhIGxlYWRp
bmcgcGF0aCBzZWdtZW50IGlmIGEgLi4gd2lsbCBiZWNvbWUKLSAgICAgICAgICogdGhlIGZpcnN0
IHBhdGggc2VnbWVudCwgdG8gaGVscCB3aXRoIG1vZHVsZSBuYW1lIGxvb2t1cHMsCi0gICAgICAg
ICAqIHdoaWNoIGFjdCBsaWtlIHBhdGhzLCBidXQgY2FuIGJlIHJlbWFwcGVkLiBCdXQgdGhlIGVu
ZCByZXN1bHQsCi0gICAgICAgICAqIGFsbCBwYXRocyB0aGF0IHVzZSB0aGlzIGZ1bmN0aW9uIHNo
b3VsZCBsb29rIG5vcm1hbGl6ZWQuCi0gICAgICAgICAqIE5PVEU6IHRoaXMgbWV0aG9kIE1PRElG
SUVTIHRoZSBpbnB1dCBhcnJheS4KLSAgICAgICAgICogQHBhcmFtIHtBcnJheX0gYXJ5IHRoZSBh
cnJheSBvZiBwYXRoIHNlZ21lbnRzLgotICAgICAgICAgKi8KLSAgICAgICAgZnVuY3Rpb24gdHJp
bURvdHMoYXJ5KSB7Ci0gICAgICAgICAgICB2YXIgaSwgcGFydDsKLSAgICAgICAgICAgIGZvciAo
aSA9IDA7IGFyeVtpXTsgaSArPSAxKSB7Ci0gICAgICAgICAgICAgICAgcGFydCA9IGFyeVtpXTsK
LSAgICAgICAgICAgICAgICBpZiAocGFydCA9PT0gJy4nKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGFyeS5zcGxpY2UoaSwgMSk7Ci0gICAgICAgICAgICAgICAgICAgIGkgLT0gMTsKLSAgICAgICAg
ICAgICAgICB9IGVsc2UgaWYgKHBhcnQgPT09ICcuLicpIHsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKGkgPT09IDEgJiYgKGFyeVsyXSA9PT0gJy4uJyB8fCBhcnlbMF0gPT09ICcuLicpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAvL0VuZCBvZiB0aGUgbGluZS4gS2VlcCBhdCBsZWFzdCBv
bmUgbm9uLWRvdAotICAgICAgICAgICAgICAgICAgICAgICAgLy9wYXRoIHNlZ21lbnQgYXQgdGhl
IGZyb250IHNvIGl0IGNhbiBiZSBtYXBwZWQKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vY29y
cmVjdGx5IHRvIGRpc2suIE90aGVyd2lzZSwgdGhlcmUgaXMgbGlrZWx5Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAvL25vIHBhdGggbWFwcGluZyBmb3IgYSBwYXRoIHN0YXJ0aW5nIHdpdGggJy4u
Jy4KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vVGhpcyBjYW4gc3RpbGwgZmFpbCwgYnV0IGNh
dGNoZXMgdGhlIG1vc3QgcmVhc29uYWJsZQotICAgICAgICAgICAgICAgICAgICAgICAgLy91c2Vz
IG9mIC4uCi0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlIGlmIChpID4gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgYXJ5LnNwbGlj
ZShpIC0gMSwgMik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpIC09IDI7Ci0gICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LQotICAgICAgICAvKioKLSAgICAgICAgICogR2l2ZW4gYSByZWxhdGl2ZSBtb2R1bGUgbmFtZSwg
bGlrZSAuL3NvbWV0aGluZywgbm9ybWFsaXplIGl0IHRvCi0gICAgICAgICAqIGEgcmVhbCBuYW1l
IHRoYXQgY2FuIGJlIG1hcHBlZCB0byBhIHBhdGguCi0gICAgICAgICAqIEBwYXJhbSB7U3RyaW5n
fSBuYW1lIHRoZSByZWxhdGl2ZSBuYW1lCi0gICAgICAgICAqIEBwYXJhbSB7U3RyaW5nfSBiYXNl
TmFtZSBhIHJlYWwgbmFtZSB0aGF0IHRoZSBuYW1lIGFyZyBpcyByZWxhdGl2ZQotICAgICAgICAg
KiB0by4KLSAgICAgICAgICogQHBhcmFtIHtCb29sZWFufSBhcHBseU1hcCBhcHBseSB0aGUgbWFw
IGNvbmZpZyB0byB0aGUgdmFsdWUuIFNob3VsZAotICAgICAgICAgKiBvbmx5IGJlIGRvbmUgaWYg
dGhpcyBub3JtYWxpemF0aW9uIGlzIGZvciBhIGRlcGVuZGVuY3kgSUQuCi0gICAgICAgICAqIEBy
ZXR1cm5zIHtTdHJpbmd9IG5vcm1hbGl6ZWQgbmFtZQotICAgICAgICAgKi8KLSAgICAgICAgZnVu
Y3Rpb24gbm9ybWFsaXplKG5hbWUsIGJhc2VOYW1lLCBhcHBseU1hcCkgewotICAgICAgICAgICAg
dmFyIHBrZ05hbWUsIHBrZ0NvbmZpZywgbWFwVmFsdWUsIG5hbWVQYXJ0cywgaSwgaiwgbmFtZVNl
Z21lbnQsCi0gICAgICAgICAgICAgICAgZm91bmRNYXAsIGZvdW5kSSwgZm91bmRTdGFyTWFwLCBz
dGFySSwKLSAgICAgICAgICAgICAgICBiYXNlUGFydHMgPSBiYXNlTmFtZSAmJiBiYXNlTmFtZS5z
cGxpdCgnLycpLAotICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRCYXNlUGFydHMgPSBiYXNlUGFy
dHMsCi0gICAgICAgICAgICAgICAgbWFwID0gY29uZmlnLm1hcCwKLSAgICAgICAgICAgICAgICBz
dGFyTWFwID0gbWFwICYmIG1hcFsnKiddOwotCi0gICAgICAgICAgICAvL0FkanVzdCBhbnkgcmVs
YXRpdmUgcGF0aHMuCi0gICAgICAgICAgICBpZiAobmFtZSAmJiBuYW1lLmNoYXJBdCgwKSA9PT0g
Jy4nKSB7Ci0gICAgICAgICAgICAgICAgLy9JZiBoYXZlIGEgYmFzZSBuYW1lLCB0cnkgdG8gbm9y
bWFsaXplIGFnYWluc3QgaXQsCi0gICAgICAgICAgICAgICAgLy9vdGhlcndpc2UsIGFzc3VtZSBp
dCBpcyBhIHRvcC1sZXZlbCByZXF1aXJlIHRoYXQgd2lsbAotICAgICAgICAgICAgICAgIC8vYmUg
cmVsYXRpdmUgdG8gYmFzZVVybCBpbiB0aGUgZW5kLgotICAgICAgICAgICAgICAgIGlmIChiYXNl
TmFtZSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0T3duKGNvbmZpZy5wa2dzLCBiYXNl
TmFtZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vSWYgdGhlIGJhc2VOYW1lIGlzIGEg
cGFja2FnZSBuYW1lLCB0aGVuIGp1c3QgdHJlYXQgaXQgYXMgb25lCi0gICAgICAgICAgICAgICAg
ICAgICAgICAvL25hbWUgdG8gY29uY2F0IHRoZSBuYW1lIHdpdGguCi0gICAgICAgICAgICAgICAg
ICAgICAgICBub3JtYWxpemVkQmFzZVBhcnRzID0gYmFzZVBhcnRzID0gW2Jhc2VOYW1lXTsKLSAg
ICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vQ29u
dmVydCBiYXNlTmFtZSB0byBhcnJheSwgYW5kIGxvcCBvZmYgdGhlIGxhc3QgcGFydCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIC8vc28gdGhhdCAuIG1hdGNoZXMgdGhhdCAnZGlyZWN0b3J5JyBh
bmQgbm90IG5hbWUgb2YgdGhlIGJhc2VOYW1lJ3MKLSAgICAgICAgICAgICAgICAgICAgICAgIC8v
bW9kdWxlLiBGb3IgaW5zdGFuY2UsIGJhc2VOYW1lIG9mICdvbmUvdHdvL3RocmVlJywgbWFwcyB0
bwotICAgICAgICAgICAgICAgICAgICAgICAgLy8nb25lL3R3by90aHJlZS5qcycsIGJ1dCB3ZSB3
YW50IHRoZSBkaXJlY3RvcnksICdvbmUvdHdvJyBmb3IKLSAgICAgICAgICAgICAgICAgICAgICAg
IC8vdGhpcyBub3JtYWxpemF0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXpl
ZEJhc2VQYXJ0cyA9IGJhc2VQYXJ0cy5zbGljZSgwLCBiYXNlUGFydHMubGVuZ3RoIC0gMSk7Ci0g
ICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICBuYW1lID0gbm9ybWFs
aXplZEJhc2VQYXJ0cy5jb25jYXQobmFtZS5zcGxpdCgnLycpKTsKLSAgICAgICAgICAgICAgICAg
ICAgdHJpbURvdHMobmFtZSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgLy9Tb21lIHVzZSBvZiBw
YWNrYWdlcyBtYXkgdXNlIGEgLiBwYXRoIHRvIHJlZmVyZW5jZSB0aGUKLSAgICAgICAgICAgICAg
ICAgICAgLy8nbWFpbicgbW9kdWxlIG5hbWUsIHNvIG5vcm1hbGl6ZSBmb3IgdGhhdC4KLSAgICAg
ICAgICAgICAgICAgICAgcGtnQ29uZmlnID0gZ2V0T3duKGNvbmZpZy5wa2dzLCAocGtnTmFtZSA9
IG5hbWVbMF0pKTsKLSAgICAgICAgICAgICAgICAgICAgbmFtZSA9IG5hbWUuam9pbignLycpOwot
ICAgICAgICAgICAgICAgICAgICBpZiAocGtnQ29uZmlnICYmIG5hbWUgPT09IHBrZ05hbWUgKyAn
LycgKyBwa2dDb25maWcubWFpbikgewotICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IHBr
Z05hbWU7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYg
KG5hbWUuaW5kZXhPZignLi8nKSA9PT0gMCkgewotICAgICAgICAgICAgICAgICAgICAvLyBObyBi
YXNlTmFtZSwgc28gdGhpcyBpcyBJRCBpcyByZXNvbHZlZCByZWxhdGl2ZQotICAgICAgICAgICAg
ICAgICAgICAvLyB0byBiYXNlVXJsLCBwdWxsIG9mZiB0aGUgbGVhZGluZyBkb3QuCi0gICAgICAg
ICAgICAgICAgICAgIG5hbWUgPSBuYW1lLnN1YnN0cmluZygyKTsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vQXBwbHkgbWFwIGNvbmZpZyBpZiBhdmFp
bGFibGUuCi0gICAgICAgICAgICBpZiAoYXBwbHlNYXAgJiYgbWFwICYmIChiYXNlUGFydHMgfHwg
c3Rhck1hcCkpIHsKLSAgICAgICAgICAgICAgICBuYW1lUGFydHMgPSBuYW1lLnNwbGl0KCcvJyk7
Ci0KLSAgICAgICAgICAgICAgICBmb3IgKGkgPSBuYW1lUGFydHMubGVuZ3RoOyBpID4gMDsgaSAt
PSAxKSB7Ci0gICAgICAgICAgICAgICAgICAgIG5hbWVTZWdtZW50ID0gbmFtZVBhcnRzLnNsaWNl
KDAsIGkpLmpvaW4oJy8nKTsKLQotICAgICAgICAgICAgICAgICAgICBpZiAoYmFzZVBhcnRzKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAvL0ZpbmQgdGhlIGxvbmdlc3QgYmFzZU5hbWUgc2Vn
bWVudCBtYXRjaCBpbiB0aGUgY29uZmlnLgotICAgICAgICAgICAgICAgICAgICAgICAgLy9Tbywg
ZG8gam9pbnMgb24gdGhlIGJpZ2dlc3QgdG8gc21hbGxlc3QgbGVuZ3RocyBvZiBiYXNlUGFydHMu
Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGogPSBiYXNlUGFydHMubGVuZ3RoOyBqID4g
MDsgaiAtPSAxKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwVmFsdWUgPSBnZXRP
d24obWFwLCBiYXNlUGFydHMuc2xpY2UoMCwgaikuam9pbignLycpKTsKLQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vYmFzZU5hbWUgc2VnbWVudCBoYXMgY29uZmlnLCBmaW5kIGlmIGl0
IGhhcyBvbmUgZm9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy90aGlzIG5hbWUuCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hcFZhbHVlKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1hcFZhbHVlID0gZ2V0T3duKG1hcFZhbHVlLCBuYW1lU2VnbWVu
dCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXBWYWx1ZSkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9NYXRjaCwgdXBkYXRlIG5hbWUgdG8g
dGhlIG5ldyB2YWx1ZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5k
TWFwID0gbWFwVmFsdWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3Vu
ZEkgPSBpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgICAgICAgICBpZiAoZm91bmRNYXApIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAg
Ly9DaGVjayBmb3IgYSBzdGFyIG1hcCBtYXRjaCwgYnV0IGp1c3QgaG9sZCBvbiB0byBpdCwKLSAg
ICAgICAgICAgICAgICAgICAgLy9pZiB0aGVyZSBpcyBhIHNob3J0ZXIgc2VnbWVudCBtYXRjaCBs
YXRlciBpbiBhIG1hdGNoaW5nCi0gICAgICAgICAgICAgICAgICAgIC8vY29uZmlnLCB0aGVuIGZh
dm9yIG92ZXIgdGhpcyBzdGFyIG1hcC4KLSAgICAgICAgICAgICAgICAgICAgaWYgKCFmb3VuZFN0
YXJNYXAgJiYgc3Rhck1hcCAmJiBnZXRPd24oc3Rhck1hcCwgbmFtZVNlZ21lbnQpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBmb3VuZFN0YXJNYXAgPSBnZXRPd24oc3Rhck1hcCwgbmFtZVNl
Z21lbnQpOwotICAgICAgICAgICAgICAgICAgICAgICAgc3RhckkgPSBpOwotICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKCFmb3Vu
ZE1hcCAmJiBmb3VuZFN0YXJNYXApIHsKLSAgICAgICAgICAgICAgICAgICAgZm91bmRNYXAgPSBm
b3VuZFN0YXJNYXA7Ci0gICAgICAgICAgICAgICAgICAgIGZvdW5kSSA9IHN0YXJJOwotICAgICAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmIChmb3VuZE1hcCkgewotICAgICAgICAg
ICAgICAgICAgICBuYW1lUGFydHMuc3BsaWNlKDAsIGZvdW5kSSwgZm91bmRNYXApOwotICAgICAg
ICAgICAgICAgICAgICBuYW1lID0gbmFtZVBhcnRzLmpvaW4oJy8nKTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHJldHVybiBuYW1lOwotICAgICAgICB9
Ci0KLSAgICAgICAgZnVuY3Rpb24gcmVtb3ZlU2NyaXB0KG5hbWUpIHsKLSAgICAgICAgICAgIGlm
IChpc0Jyb3dzZXIpIHsKLSAgICAgICAgICAgICAgICBlYWNoKHNjcmlwdHMoKSwgZnVuY3Rpb24g
KHNjcmlwdE5vZGUpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHNjcmlwdE5vZGUuZ2V0QXR0
cmlidXRlKCdkYXRhLXJlcXVpcmVtb2R1bGUnKSA9PT0gbmFtZSAmJgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNjcmlwdE5vZGUuZ2V0QXR0cmlidXRlKCdkYXRhLXJlcXVpcmVjb250ZXh0
JykgPT09IGNvbnRleHQuY29udGV4dE5hbWUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNj
cmlwdE5vZGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzY3JpcHROb2RlKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlv
biBoYXNQYXRoRmFsbGJhY2soaWQpIHsKLSAgICAgICAgICAgIHZhciBwYXRoQ29uZmlnID0gZ2V0
T3duKGNvbmZpZy5wYXRocywgaWQpOwotICAgICAgICAgICAgaWYgKHBhdGhDb25maWcgJiYgaXNB
cnJheShwYXRoQ29uZmlnKSAmJiBwYXRoQ29uZmlnLmxlbmd0aCA+IDEpIHsKLSAgICAgICAgICAg
ICAgICAvL1BvcCBvZmYgdGhlIGZpcnN0IGFycmF5IHZhbHVlLCBzaW5jZSBpdCBmYWlsZWQsIGFu
ZAotICAgICAgICAgICAgICAgIC8vcmV0cnkKLSAgICAgICAgICAgICAgICBwYXRoQ29uZmlnLnNo
aWZ0KCk7Ci0gICAgICAgICAgICAgICAgY29udGV4dC5yZXF1aXJlLnVuZGVmKGlkKTsKLSAgICAg
ICAgICAgICAgICBjb250ZXh0LnJlcXVpcmUoW2lkXSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvL1R1cm5zIGEgcGx1
Z2luIXJlc291cmNlIHRvIFtwbHVnaW4sIHJlc291cmNlXQotICAgICAgICAvL3dpdGggdGhlIHBs
dWdpbiBiZWluZyB1bmRlZmluZWQgaWYgdGhlIG5hbWUKLSAgICAgICAgLy9kaWQgbm90IGhhdmUg
YSBwbHVnaW4gcHJlZml4LgotICAgICAgICBmdW5jdGlvbiBzcGxpdFByZWZpeChuYW1lKSB7Ci0g
ICAgICAgICAgICB2YXIgcHJlZml4LAotICAgICAgICAgICAgICAgIGluZGV4ID0gbmFtZSA/IG5h
bWUuaW5kZXhPZignIScpIDogLTE7Ci0gICAgICAgICAgICBpZiAoaW5kZXggPiAtMSkgewotICAg
ICAgICAgICAgICAgIHByZWZpeCA9IG5hbWUuc3Vic3RyaW5nKDAsIGluZGV4KTsKLSAgICAgICAg
ICAgICAgICBuYW1lID0gbmFtZS5zdWJzdHJpbmcoaW5kZXggKyAxLCBuYW1lLmxlbmd0aCk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gW3ByZWZpeCwgbmFtZV07Ci0gICAgICAg
IH0KLQotICAgICAgICAvKioKLSAgICAgICAgICogQ3JlYXRlcyBhIG1vZHVsZSBtYXBwaW5nIHRo
YXQgaW5jbHVkZXMgcGx1Z2luIHByZWZpeCwgbW9kdWxlCi0gICAgICAgICAqIG5hbWUsIGFuZCBw
YXRoLiBJZiBwYXJlbnRNb2R1bGVNYXAgaXMgcHJvdmlkZWQgaXQgd2lsbAotICAgICAgICAgKiBh
bHNvIG5vcm1hbGl6ZSB0aGUgbmFtZSB2aWEgcmVxdWlyZS5ub3JtYWxpemUoKQotICAgICAgICAg
KgotICAgICAgICAgKiBAcGFyYW0ge1N0cmluZ30gbmFtZSB0aGUgbW9kdWxlIG5hbWUKLSAgICAg
ICAgICogQHBhcmFtIHtTdHJpbmd9IFtwYXJlbnRNb2R1bGVNYXBdIHBhcmVudCBtb2R1bGUgbWFw
Ci0gICAgICAgICAqIGZvciB0aGUgbW9kdWxlIG5hbWUsIHVzZWQgdG8gcmVzb2x2ZSByZWxhdGl2
ZSBuYW1lcy4KLSAgICAgICAgICogQHBhcmFtIHtCb29sZWFufSBpc05vcm1hbGl6ZWQ6IGlzIHRo
ZSBJRCBhbHJlYWR5IG5vcm1hbGl6ZWQuCi0gICAgICAgICAqIFRoaXMgaXMgdHJ1ZSBpZiB0aGlz
IGNhbGwgaXMgZG9uZSBmb3IgYSBkZWZpbmUoKSBtb2R1bGUgSUQuCi0gICAgICAgICAqIEBwYXJh
bSB7Qm9vbGVhbn0gYXBwbHlNYXA6IGFwcGx5IHRoZSBtYXAgY29uZmlnIHRvIHRoZSBJRC4KLSAg
ICAgICAgICogU2hvdWxkIG9ubHkgYmUgdHJ1ZSBpZiB0aGlzIG1hcCBpcyBmb3IgYSBkZXBlbmRl
bmN5LgotICAgICAgICAgKgotICAgICAgICAgKiBAcmV0dXJucyB7T2JqZWN0fQotICAgICAgICAg
Ki8KLSAgICAgICAgZnVuY3Rpb24gbWFrZU1vZHVsZU1hcChuYW1lLCBwYXJlbnRNb2R1bGVNYXAs
IGlzTm9ybWFsaXplZCwgYXBwbHlNYXApIHsKLSAgICAgICAgICAgIHZhciB1cmwsIHBsdWdpbk1v
ZHVsZSwgc3VmZml4LCBuYW1lUGFydHMsCi0gICAgICAgICAgICAgICAgcHJlZml4ID0gbnVsbCwK
LSAgICAgICAgICAgICAgICBwYXJlbnROYW1lID0gcGFyZW50TW9kdWxlTWFwID8gcGFyZW50TW9k
dWxlTWFwLm5hbWUgOiBudWxsLAotICAgICAgICAgICAgICAgIG9yaWdpbmFsTmFtZSA9IG5hbWUs
Ci0gICAgICAgICAgICAgICAgaXNEZWZpbmUgPSB0cnVlLAotICAgICAgICAgICAgICAgIG5vcm1h
bGl6ZWROYW1lID0gJyc7Ci0KLSAgICAgICAgICAgIC8vSWYgbm8gbmFtZSwgdGhlbiBpdCBtZWFu
cyBpdCBpcyBhIHJlcXVpcmUgY2FsbCwgZ2VuZXJhdGUgYW4KLSAgICAgICAgICAgIC8vaW50ZXJu
YWwgbmFtZS4KLSAgICAgICAgICAgIGlmICghbmFtZSkgewotICAgICAgICAgICAgICAgIGlzRGVm
aW5lID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgbmFtZSA9ICdfQHInICsgKHJlcXVpcmVDb3Vu
dGVyICs9IDEpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBuYW1lUGFydHMgPSBzcGxp
dFByZWZpeChuYW1lKTsKLSAgICAgICAgICAgIHByZWZpeCA9IG5hbWVQYXJ0c1swXTsKLSAgICAg
ICAgICAgIG5hbWUgPSBuYW1lUGFydHNbMV07Ci0KLSAgICAgICAgICAgIGlmIChwcmVmaXgpIHsK
LSAgICAgICAgICAgICAgICBwcmVmaXggPSBub3JtYWxpemUocHJlZml4LCBwYXJlbnROYW1lLCBh
cHBseU1hcCk7Ci0gICAgICAgICAgICAgICAgcGx1Z2luTW9kdWxlID0gZ2V0T3duKGRlZmluZWQs
IHByZWZpeCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vQWNjb3VudCBmb3IgcmVs
YXRpdmUgcGF0aHMgaWYgdGhlcmUgaXMgYSBiYXNlIG5hbWUuCi0gICAgICAgICAgICBpZiAobmFt
ZSkgewotICAgICAgICAgICAgICAgIGlmIChwcmVmaXgpIHsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKHBsdWdpbk1vZHVsZSAmJiBwbHVnaW5Nb2R1bGUubm9ybWFsaXplKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAvL1BsdWdpbiBpcyBsb2FkZWQsIHVzZSBpdHMgbm9ybWFsaXplIG1ldGhv
ZC4KLSAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWROYW1lID0gcGx1Z2luTW9kdWxl
Lm5vcm1hbGl6ZShuYW1lLCBmdW5jdGlvbiAobmFtZSkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBub3JtYWxpemUobmFtZSwgcGFyZW50TmFtZSwgYXBwbHlNYXApOwotICAg
ICAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkTmFtZSA9IG5vcm1hbGl6ZShuYW1lLCBw
YXJlbnROYW1lLCBhcHBseU1hcCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAvL0EgcmVndWxhciBtb2R1bGUuCi0g
ICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWROYW1lID0gbm9ybWFsaXplKG5hbWUsIHBhcmVu
dE5hbWUsIGFwcGx5TWFwKTsKLQotICAgICAgICAgICAgICAgICAgICAvL05vcm1hbGl6ZWQgbmFt
ZSBtYXkgYmUgYSBwbHVnaW4gSUQgZHVlIHRvIG1hcCBjb25maWcKLSAgICAgICAgICAgICAgICAg
ICAgLy9hcHBsaWNhdGlvbiBpbiBub3JtYWxpemUuIFRoZSBtYXAgY29uZmlnIHZhbHVlcyBtdXN0
Ci0gICAgICAgICAgICAgICAgICAgIC8vYWxyZWFkeSBiZSBub3JtYWxpemVkLCBzbyBkbyBub3Qg
bmVlZCB0byByZWRvIHRoYXQgcGFydC4KLSAgICAgICAgICAgICAgICAgICAgbmFtZVBhcnRzID0g
c3BsaXRQcmVmaXgobm9ybWFsaXplZE5hbWUpOwotICAgICAgICAgICAgICAgICAgICBwcmVmaXgg
PSBuYW1lUGFydHNbMF07Ci0gICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWROYW1lID0gbmFt
ZVBhcnRzWzFdOwotICAgICAgICAgICAgICAgICAgICBpc05vcm1hbGl6ZWQgPSB0cnVlOwotCi0g
ICAgICAgICAgICAgICAgICAgIHVybCA9IGNvbnRleHQubmFtZVRvVXJsKG5vcm1hbGl6ZWROYW1l
KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vSWYg
dGhlIGlkIGlzIGEgcGx1Z2luIGlkIHRoYXQgY2Fubm90IGJlIGRldGVybWluZWQgaWYgaXQgbmVl
ZHMKLSAgICAgICAgICAgIC8vbm9ybWFsaXphdGlvbiwgc3RhbXAgaXQgd2l0aCBhIHVuaXF1ZSBJ
RCBzbyB0d28gbWF0Y2hpbmcgcmVsYXRpdmUKLSAgICAgICAgICAgIC8vaWRzIHRoYXQgbWF5IGNv
bmZsaWN0IGNhbiBiZSBzZXBhcmF0ZS4KLSAgICAgICAgICAgIHN1ZmZpeCA9IHByZWZpeCAmJiAh
cGx1Z2luTW9kdWxlICYmICFpc05vcm1hbGl6ZWQgPwotICAgICAgICAgICAgICAgICAgICAgJ191
bm5vcm1hbGl6ZWQnICsgKHVubm9ybWFsaXplZENvdW50ZXIgKz0gMSkgOgotICAgICAgICAgICAg
ICAgICAgICAgJyc7Ci0KLSAgICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAgICAgcHJl
Zml4OiBwcmVmaXgsCi0gICAgICAgICAgICAgICAgbmFtZTogbm9ybWFsaXplZE5hbWUsCi0gICAg
ICAgICAgICAgICAgcGFyZW50TWFwOiBwYXJlbnRNb2R1bGVNYXAsCi0gICAgICAgICAgICAgICAg
dW5ub3JtYWxpemVkOiAhIXN1ZmZpeCwKLSAgICAgICAgICAgICAgICB1cmw6IHVybCwKLSAgICAg
ICAgICAgICAgICBvcmlnaW5hbE5hbWU6IG9yaWdpbmFsTmFtZSwKLSAgICAgICAgICAgICAgICBp
c0RlZmluZTogaXNEZWZpbmUsCi0gICAgICAgICAgICAgICAgaWQ6IChwcmVmaXggPwotICAgICAg
ICAgICAgICAgICAgICAgICAgcHJlZml4ICsgJyEnICsgbm9ybWFsaXplZE5hbWUgOgotICAgICAg
ICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZE5hbWUpICsgc3VmZml4Ci0gICAgICAgICAgICB9
OwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gZ2V0TW9kdWxlKGRlcE1hcCkgewotICAg
ICAgICAgICAgdmFyIGlkID0gZGVwTWFwLmlkLAotICAgICAgICAgICAgICAgIG1vZCA9IGdldE93
bihyZWdpc3RyeSwgaWQpOwotCi0gICAgICAgICAgICBpZiAoIW1vZCkgewotICAgICAgICAgICAg
ICAgIG1vZCA9IHJlZ2lzdHJ5W2lkXSA9IG5ldyBjb250ZXh0Lk1vZHVsZShkZXBNYXApOwotICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICByZXR1cm4gbW9kOwotICAgICAgICB9Ci0KLSAgICAg
ICAgZnVuY3Rpb24gb24oZGVwTWFwLCBuYW1lLCBmbikgewotICAgICAgICAgICAgdmFyIGlkID0g
ZGVwTWFwLmlkLAotICAgICAgICAgICAgICAgIG1vZCA9IGdldE93bihyZWdpc3RyeSwgaWQpOwot
Ci0gICAgICAgICAgICBpZiAoaGFzUHJvcChkZWZpbmVkLCBpZCkgJiYKLSAgICAgICAgICAgICAg
ICAgICAgKCFtb2QgfHwgbW9kLmRlZmluZUVtaXRDb21wbGV0ZSkpIHsKLSAgICAgICAgICAgICAg
ICBpZiAobmFtZSA9PT0gJ2RlZmluZWQnKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZuKGRlZmlu
ZWRbaWRdKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgICAgIG1vZCA9IGdldE1vZHVsZShkZXBNYXApOwotICAgICAgICAgICAgICAgIGlmICht
b2QuZXJyb3IgJiYgbmFtZSA9PT0gJ2Vycm9yJykgewotICAgICAgICAgICAgICAgICAgICBmbiht
b2QuZXJyb3IpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAg
IG1vZC5vbihuYW1lLCBmbik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gb25FcnJvcihlcnIsIGVycmJhY2spIHsKLSAgICAg
ICAgICAgIHZhciBpZHMgPSBlcnIucmVxdWlyZU1vZHVsZXMsCi0gICAgICAgICAgICAgICAgbm90
aWZpZWQgPSBmYWxzZTsKLQotICAgICAgICAgICAgaWYgKGVycmJhY2spIHsKLSAgICAgICAgICAg
ICAgICBlcnJiYWNrKGVycik7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg
IGVhY2goaWRzLCBmdW5jdGlvbiAoaWQpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIG1vZCA9
IGdldE93bihyZWdpc3RyeSwgaWQpOwotICAgICAgICAgICAgICAgICAgICBpZiAobW9kKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAvL1NldCBlcnJvciBvbiBtb2R1bGUsIHNvIGl0IHNraXBz
IHRpbWVvdXQgY2hlY2tzLgotICAgICAgICAgICAgICAgICAgICAgICAgbW9kLmVycm9yID0gZXJy
OwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1vZC5ldmVudHMuZXJyb3IpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBub3RpZmllZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbW9kLmVtaXQoJ2Vycm9yJywgZXJyKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0pOwotCi0gICAg
ICAgICAgICAgICAgaWYgKCFub3RpZmllZCkgewotICAgICAgICAgICAgICAgICAgICByZXEub25F
cnJvcihlcnIpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
Ci0gICAgICAgIC8qKgotICAgICAgICAgKiBJbnRlcm5hbCBtZXRob2QgdG8gdHJhbnNmZXIgZ2xv
YmFsUXVldWUgaXRlbXMgdG8gdGhpcyBjb250ZXh0J3MKLSAgICAgICAgICogZGVmUXVldWUuCi0g
ICAgICAgICAqLwotICAgICAgICBmdW5jdGlvbiB0YWtlR2xvYmFsUXVldWUoKSB7Ci0gICAgICAg
ICAgICAvL1B1c2ggYWxsIHRoZSBnbG9iYWxEZWZRdWV1ZSBpdGVtcyBpbnRvIHRoZSBjb250ZXh0
J3MgZGVmUXVldWUKLSAgICAgICAgICAgIGlmIChnbG9iYWxEZWZRdWV1ZS5sZW5ndGgpIHsKLSAg
ICAgICAgICAgICAgICAvL0FycmF5IHNwbGljZSBpbiB0aGUgdmFsdWVzIHNpbmNlIHRoZSBjb250
ZXh0IGNvZGUgaGFzIGEKLSAgICAgICAgICAgICAgICAvL2xvY2FsIHZhciByZWYgdG8gZGVmUXVl
dWUsIHNvIGNhbm5vdCBqdXN0IHJlYXNzaWduIHRoZSBvbmUKLSAgICAgICAgICAgICAgICAvL29u
IGNvbnRleHQuCi0gICAgICAgICAgICAgICAgYXBzcC5hcHBseShkZWZRdWV1ZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFtkZWZRdWV1ZS5sZW5ndGggLSAxLCAwXS5jb25jYXQoZ2xvYmFs
RGVmUXVldWUpKTsKLSAgICAgICAgICAgICAgICBnbG9iYWxEZWZRdWV1ZSA9IFtdOwotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaGFuZGxlcnMgPSB7Ci0gICAgICAgICAgICAn
cmVxdWlyZSc6IGZ1bmN0aW9uIChtb2QpIHsKLSAgICAgICAgICAgICAgICBpZiAobW9kLnJlcXVp
cmUpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1vZC5yZXF1aXJlOwotICAgICAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAobW9kLnJlcXVpcmUg
PSBjb250ZXh0Lm1ha2VSZXF1aXJlKG1vZC5tYXApKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB9LAotICAgICAgICAgICAgJ2V4cG9ydHMnOiBmdW5jdGlvbiAobW9kKSB7Ci0gICAg
ICAgICAgICAgICAgbW9kLnVzaW5nRXhwb3J0cyA9IHRydWU7Ci0gICAgICAgICAgICAgICAgaWYg
KG1vZC5tYXAuaXNEZWZpbmUpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG1vZC5leHBvcnRz
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbW9kLmV4cG9ydHM7Ci0gICAgICAg
ICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKG1v
ZC5leHBvcnRzID0gZGVmaW5lZFttb2QubWFwLmlkXSA9IHt9KTsKLSAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnbW9k
dWxlJzogZnVuY3Rpb24gKG1vZCkgewotICAgICAgICAgICAgICAgIGlmIChtb2QubW9kdWxlKSB7
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBtb2QubW9kdWxlOwotICAgICAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAobW9kLm1vZHVsZSA9IHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGlkOiBtb2QubWFwLmlkLAotICAgICAgICAgICAgICAgICAg
ICAgICAgdXJpOiBtb2QubWFwLnVybCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZzog
ZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwa2cgPSBnZXRPd24oY29uZmlnLnBrZ3MsIG1vZC5t
YXAuaWQpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZvciBwYWNrYWdlcywgb25s
eSBzdXBwb3J0IGNvbmZpZyB0YXJnZXRlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IGF0IHRoZSBtYWluIG1vZHVsZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gcGtn
ID8gZ2V0T3duKGNvbmZpZy5jb25maWcsIG1vZC5tYXAuaWQgKyAnLycgKyBwa2cubWFpbikgOgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRPd24oY29uZmlnLmNvbmZp
ZywgbW9kLm1hcC5pZCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICBjIHx8
IHt9OwotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAg
IGV4cG9ydHM6IGRlZmluZWRbbW9kLm1hcC5pZF0KLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9OwotCi0gICAgICAgIGZ1
bmN0aW9uIGNsZWFuUmVnaXN0cnkoaWQpIHsKLSAgICAgICAgICAgIC8vQ2xlYW4gdXAgbWFjaGlu
ZXJ5IHVzZWQgZm9yIHdhaXRpbmcgbW9kdWxlcy4KLSAgICAgICAgICAgIGRlbGV0ZSByZWdpc3Ry
eVtpZF07Ci0gICAgICAgICAgICBkZWxldGUgZW5hYmxlZFJlZ2lzdHJ5W2lkXTsKLSAgICAgICAg
fQotCi0gICAgICAgIGZ1bmN0aW9uIGJyZWFrQ3ljbGUobW9kLCB0cmFjZWQsIHByb2Nlc3NlZCkg
ewotICAgICAgICAgICAgdmFyIGlkID0gbW9kLm1hcC5pZDsKLQotICAgICAgICAgICAgaWYgKG1v
ZC5lcnJvcikgewotICAgICAgICAgICAgICAgIG1vZC5lbWl0KCdlcnJvcicsIG1vZC5lcnJvcik7
Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHRyYWNlZFtpZF0gPSB0cnVl
OwotICAgICAgICAgICAgICAgIGVhY2gobW9kLmRlcE1hcHMsIGZ1bmN0aW9uIChkZXBNYXAsIGkp
IHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGRlcElkID0gZGVwTWFwLmlkLAotICAgICAgICAg
ICAgICAgICAgICAgICAgZGVwID0gZ2V0T3duKHJlZ2lzdHJ5LCBkZXBJZCk7Ci0KLSAgICAgICAg
ICAgICAgICAgICAgLy9Pbmx5IGZvcmNlIHRoaW5ncyB0aGF0IGhhdmUgbm90IGNvbXBsZXRlZAot
ICAgICAgICAgICAgICAgICAgICAvL2JlaW5nIGRlZmluZWQsIHNvIHN0aWxsIGluIHRoZSByZWdp
c3RyeSwKLSAgICAgICAgICAgICAgICAgICAgLy9hbmQgb25seSBpZiBpdCBoYXMgbm90IGJlZW4g
bWF0Y2hlZCB1cAotICAgICAgICAgICAgICAgICAgICAvL2luIHRoZSBtb2R1bGUgYWxyZWFkeS4K
LSAgICAgICAgICAgICAgICAgICAgaWYgKGRlcCAmJiAhbW9kLmRlcE1hdGNoZWRbaV0gJiYgIXBy
b2Nlc3NlZFtkZXBJZF0pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZXRPd24odHJh
Y2VkLCBkZXBJZCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2QuZGVmaW5lRGVw
KGksIGRlZmluZWRbZGVwSWRdKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2QuY2hl
Y2soKTsgLy9wYXNzIGZhbHNlPwotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVha0N5Y2xlKGRlcCwgdHJhY2VkLCBwcm9jZXNz
ZWQpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgcHJvY2Vzc2VkW2lkXSA9IHRydWU7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBjaGVja0xvYWRl
ZCgpIHsKLSAgICAgICAgICAgIHZhciBtYXAsIG1vZElkLCBlcnIsIHVzaW5nUGF0aEZhbGxiYWNr
LAotICAgICAgICAgICAgICAgIHdhaXRJbnRlcnZhbCA9IGNvbmZpZy53YWl0U2Vjb25kcyAqIDEw
MDAsCi0gICAgICAgICAgICAgICAgLy9JdCBpcyBwb3NzaWJsZSB0byBkaXNhYmxlIHRoZSB3YWl0
IGludGVydmFsIGJ5IHVzaW5nIHdhaXRTZWNvbmRzIG9mIDAuCi0gICAgICAgICAgICAgICAgZXhw
aXJlZCA9IHdhaXRJbnRlcnZhbCAmJiAoY29udGV4dC5zdGFydFRpbWUgKyB3YWl0SW50ZXJ2YWwp
IDwgbmV3IERhdGUoKS5nZXRUaW1lKCksCi0gICAgICAgICAgICAgICAgbm9Mb2FkcyA9IFtdLAot
ICAgICAgICAgICAgICAgIHJlcUNhbGxzID0gW10sCi0gICAgICAgICAgICAgICAgc3RpbGxMb2Fk
aW5nID0gZmFsc2UsCi0gICAgICAgICAgICAgICAgbmVlZEN5Y2xlQ2hlY2sgPSB0cnVlOwotCi0g
ICAgICAgICAgICAvL0RvIG5vdCBib3RoZXIgaWYgdGhpcyBjYWxsIHdhcyBhIHJlc3VsdCBvZiBh
IGN5Y2xlIGJyZWFrLgotICAgICAgICAgICAgaWYgKGluQ2hlY2tMb2FkZWQpIHsKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGluQ2hlY2tMb2Fk
ZWQgPSB0cnVlOwotCi0gICAgICAgICAgICAvL0ZpZ3VyZSBvdXQgdGhlIHN0YXRlIG9mIGFsbCB0
aGUgbW9kdWxlcy4KLSAgICAgICAgICAgIGVhY2hQcm9wKGVuYWJsZWRSZWdpc3RyeSwgZnVuY3Rp
b24gKG1vZCkgewotICAgICAgICAgICAgICAgIG1hcCA9IG1vZC5tYXA7Ci0gICAgICAgICAgICAg
ICAgbW9kSWQgPSBtYXAuaWQ7Ci0KLSAgICAgICAgICAgICAgICAvL1NraXAgdGhpbmdzIHRoYXQg
YXJlIG5vdCBlbmFibGVkIG9yIGluIGVycm9yIHN0YXRlLgotICAgICAgICAgICAgICAgIGlmICgh
bW9kLmVuYWJsZWQpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgICAgIGlmICghbWFwLmlzRGVmaW5lKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHJlcUNhbGxzLnB1c2gobW9kKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgICAgICBpZiAoIW1vZC5lcnJvcikgewotICAgICAgICAgICAgICAgICAgICAvL0lmIHRo
ZSBtb2R1bGUgc2hvdWxkIGJlIGV4ZWN1dGVkLCBhbmQgaXQgaGFzIG5vdAotICAgICAgICAgICAg
ICAgICAgICAvL2JlZW4gaW5pdGVkIGFuZCB0aW1lIGlzIHVwLCByZW1lbWJlciBpdC4KLSAgICAg
ICAgICAgICAgICAgICAgaWYgKCFtb2QuaW5pdGVkICYmIGV4cGlyZWQpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChoYXNQYXRoRmFsbGJhY2sobW9kSWQpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdXNpbmdQYXRoRmFsbGJhY2sgPSB0cnVlOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0aWxsTG9hZGluZyA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vTG9hZHMucHVzaChtb2RJ
ZCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlU2NyaXB0KG1vZElkKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgh
bW9kLmluaXRlZCAmJiBtb2QuZmV0Y2hlZCAmJiBtYXAuaXNEZWZpbmUpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHN0aWxsTG9hZGluZyA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoIW1hcC5wcmVmaXgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL05vIHJl
YXNvbiB0byBrZWVwIGxvb2tpbmcgZm9yIHVuZmluaXNoZWQKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvL2xvYWRpbmcuIElmIHRoZSBvbmx5IHN0aWxsTG9hZGluZyBpcyBhCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy9wbHVnaW4gcmVzb3VyY2UgdGhvdWdoLCBrZWVwIGdvaW5n
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vYmVjYXVzZSBpdCBtYXkgYmUgdGhhdCBh
IHBsdWdpbiByZXNvdXJjZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vaXMgd2FpdGlu
ZyBvbiBhIG5vbi1wbHVnaW4gY3ljbGUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIChuZWVkQ3ljbGVDaGVjayA9IGZhbHNlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0p
OwotCi0gICAgICAgICAgICBpZiAoZXhwaXJlZCAmJiBub0xvYWRzLmxlbmd0aCkgewotICAgICAg
ICAgICAgICAgIC8vSWYgd2FpdCB0aW1lIGV4cGlyZWQsIHRocm93IGVycm9yIG9mIHVubG9hZGVk
IG1vZHVsZXMuCi0gICAgICAgICAgICAgICAgZXJyID0gbWFrZUVycm9yKCd0aW1lb3V0JywgJ0xv
YWQgdGltZW91dCBmb3IgbW9kdWxlczogJyArIG5vTG9hZHMsIG51bGwsIG5vTG9hZHMpOwotICAg
ICAgICAgICAgICAgIGVyci5jb250ZXh0TmFtZSA9IGNvbnRleHQuY29udGV4dE5hbWU7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIG9uRXJyb3IoZXJyKTsKLSAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgLy9Ob3QgZXhwaXJlZCwgY2hlY2sgZm9yIGEgY3ljbGUuCi0gICAgICAgICAgICBpZiAo
bmVlZEN5Y2xlQ2hlY2spIHsKLSAgICAgICAgICAgICAgICBlYWNoKHJlcUNhbGxzLCBmdW5jdGlv
biAobW9kKSB7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrQ3ljbGUobW9kLCB7fSwge30pOwot
ICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvL0lmIHN0
aWxsIHdhaXRpbmcgb24gbG9hZHMsIGFuZCB0aGUgd2FpdGluZyBsb2FkIGlzIHNvbWV0aGluZwot
ICAgICAgICAgICAgLy9vdGhlciB0aGFuIGEgcGx1Z2luIHJlc291cmNlLCBvciB0aGVyZSBhcmUg
c3RpbGwgb3V0c3RhbmRpbmcKLSAgICAgICAgICAgIC8vc2NyaXB0cywgdGhlbiBqdXN0IHRyeSBi
YWNrIGxhdGVyLgotICAgICAgICAgICAgaWYgKCghZXhwaXJlZCB8fCB1c2luZ1BhdGhGYWxsYmFj
aykgJiYgc3RpbGxMb2FkaW5nKSB7Ci0gICAgICAgICAgICAgICAgLy9Tb21ldGhpbmcgaXMgc3Rp
bGwgd2FpdGluZyB0byBsb2FkLiBXYWl0IGZvciBpdCwgYnV0IG9ubHkKLSAgICAgICAgICAgICAg
ICAvL2lmIGEgdGltZW91dCBpcyBub3QgYWxyZWFkeSBpbiBlZmZlY3QuCi0gICAgICAgICAgICAg
ICAgaWYgKChpc0Jyb3dzZXIgfHwgaXNXZWJXb3JrZXIpICYmICFjaGVja0xvYWRlZFRpbWVvdXRJ
ZCkgewotICAgICAgICAgICAgICAgICAgICBjaGVja0xvYWRlZFRpbWVvdXRJZCA9IHNldFRpbWVv
dXQoZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tMb2FkZWRUaW1l
b3V0SWQgPSAwOwotICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tMb2FkZWQoKTsKLSAgICAg
ICAgICAgICAgICAgICAgfSwgNTApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgaW5DaGVja0xvYWRlZCA9IGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAg
ICAgTW9kdWxlID0gZnVuY3Rpb24gKG1hcCkgewotICAgICAgICAgICAgdGhpcy5ldmVudHMgPSBn
ZXRPd24odW5kZWZFdmVudHMsIG1hcC5pZCkgfHwge307Ci0gICAgICAgICAgICB0aGlzLm1hcCA9
IG1hcDsKLSAgICAgICAgICAgIHRoaXMuc2hpbSA9IGdldE93bihjb25maWcuc2hpbSwgbWFwLmlk
KTsKLSAgICAgICAgICAgIHRoaXMuZGVwRXhwb3J0cyA9IFtdOwotICAgICAgICAgICAgdGhpcy5k
ZXBNYXBzID0gW107Ci0gICAgICAgICAgICB0aGlzLmRlcE1hdGNoZWQgPSBbXTsKLSAgICAgICAg
ICAgIHRoaXMucGx1Z2luTWFwcyA9IHt9OwotICAgICAgICAgICAgdGhpcy5kZXBDb3VudCA9IDA7
Ci0KLSAgICAgICAgICAgIC8qIHRoaXMuZXhwb3J0cyB0aGlzLmZhY3RvcnkKLSAgICAgICAgICAg
ICAgIHRoaXMuZGVwTWFwcyA9IFtdLAotICAgICAgICAgICAgICAgdGhpcy5lbmFibGVkLCB0aGlz
LmZldGNoZWQKLSAgICAgICAgICAgICovCi0gICAgICAgIH07Ci0KLSAgICAgICAgTW9kdWxlLnBy
b3RvdHlwZSA9IHsKLSAgICAgICAgICAgIGluaXQ6IGZ1bmN0aW9uIChkZXBNYXBzLCBmYWN0b3J5
LCBlcnJiYWNrLCBvcHRpb25zKSB7Ci0gICAgICAgICAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnMg
fHwge307Ci0KLSAgICAgICAgICAgICAgICAvL0RvIG5vdCBkbyBtb3JlIGluaXRzIGlmIGFscmVh
ZHkgZG9uZS4gQ2FuIGhhcHBlbiBpZiB0aGVyZQotICAgICAgICAgICAgICAgIC8vYXJlIG11bHRp
cGxlIGRlZmluZSBjYWxscyBmb3IgdGhlIHNhbWUgbW9kdWxlLiBUaGF0IGlzIG5vdAotICAgICAg
ICAgICAgICAgIC8vYSBub3JtYWwsIGNvbW1vbiBjYXNlLCBidXQgaXQgaXMgYWxzbyBub3QgdW5l
eHBlY3RlZC4KLSAgICAgICAgICAgICAgICBpZiAodGhpcy5pbml0ZWQpIHsKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHRo
aXMuZmFjdG9yeSA9IGZhY3Rvcnk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoZXJyYmFjaykgewot
ICAgICAgICAgICAgICAgICAgICAvL1JlZ2lzdGVyIGZvciBlcnJvcnMgb24gdGhpcyBtb2R1bGUu
Ci0gICAgICAgICAgICAgICAgICAgIHRoaXMub24oJ2Vycm9yJywgZXJyYmFjayk7Ci0gICAgICAg
ICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmV2ZW50cy5lcnJvcikgewotICAgICAgICAgICAgICAg
ICAgICAvL0lmIG5vIGVycmJhY2sgYWxyZWFkeSwgYnV0IHRoZXJlIGFyZSBlcnJvciBsaXN0ZW5l
cnMKLSAgICAgICAgICAgICAgICAgICAgLy9vbiB0aGlzIG1vZHVsZSwgc2V0IHVwIGFuIGVycmJh
Y2sgdG8gcGFzcyB0byB0aGUgZGVwcy4KLSAgICAgICAgICAgICAgICAgICAgZXJyYmFjayA9IGJp
bmQodGhpcywgZnVuY3Rpb24gKGVycikgewotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5l
bWl0KCdlcnJvcicsIGVycik7Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgICAgIC8vRG8gYSBjb3B5IG9mIHRoZSBkZXBlbmRlbmN5IGFy
cmF5LCBzbyB0aGF0Ci0gICAgICAgICAgICAgICAgLy9zb3VyY2UgaW5wdXRzIGFyZSBub3QgbW9k
aWZpZWQuIEZvciBleGFtcGxlCi0gICAgICAgICAgICAgICAgLy8ic2hpbSIgZGVwcyBhcmUgcGFz
c2VkIGluIGhlcmUgZGlyZWN0bHksIGFuZAotICAgICAgICAgICAgICAgIC8vZG9pbmcgYSBkaXJl
Y3QgbW9kaWZpY2F0aW9uIG9mIHRoZSBkZXBNYXBzIGFycmF5Ci0gICAgICAgICAgICAgICAgLy93
b3VsZCBhZmZlY3QgdGhhdCBjb25maWcuCi0gICAgICAgICAgICAgICAgdGhpcy5kZXBNYXBzID0g
ZGVwTWFwcyAmJiBkZXBNYXBzLnNsaWNlKDApOwotCi0gICAgICAgICAgICAgICAgdGhpcy5lcnJi
YWNrID0gZXJyYmFjazsKLQotICAgICAgICAgICAgICAgIC8vSW5kaWNhdGUgdGhpcyBtb2R1bGUg
aGFzIGJlIGluaXRpYWxpemVkCi0gICAgICAgICAgICAgICAgdGhpcy5pbml0ZWQgPSB0cnVlOwot
Ci0gICAgICAgICAgICAgICAgdGhpcy5pZ25vcmUgPSBvcHRpb25zLmlnbm9yZTsKLQotICAgICAg
ICAgICAgICAgIC8vQ291bGQgaGF2ZSBvcHRpb24gdG8gaW5pdCB0aGlzIG1vZHVsZSBpbiBlbmFi
bGVkIG1vZGUsCi0gICAgICAgICAgICAgICAgLy9vciBjb3VsZCBoYXZlIGJlZW4gcHJldmlvdXNs
eSBtYXJrZWQgYXMgZW5hYmxlZC4gSG93ZXZlciwKLSAgICAgICAgICAgICAgICAvL3RoZSBkZXBl
bmRlbmNpZXMgYXJlIG5vdCBrbm93biB1bnRpbCBpbml0IGlzIGNhbGxlZC4gU28KLSAgICAgICAg
ICAgICAgICAvL2lmIGVuYWJsZWQgcHJldmlvdXNseSwgbm93IHRyaWdnZXIgZGVwZW5kZW5jaWVz
IGFzIGVuYWJsZWQuCi0gICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMuZW5hYmxlZCB8fCB0aGlz
LmVuYWJsZWQpIHsKLSAgICAgICAgICAgICAgICAgICAgLy9FbmFibGUgdGhpcyBtb2R1bGUgYW5k
IGRlcGVuZGVuY2llcy4KLSAgICAgICAgICAgICAgICAgICAgLy9XaWxsIGNhbGwgdGhpcy5jaGVj
aygpCi0gICAgICAgICAgICAgICAgICAgIHRoaXMuZW5hYmxlKCk7Ci0gICAgICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGVjaygpOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIH0sCi0KLSAgICAgICAgICAgIGRlZmluZURlcDogZnVuY3Rpb24g
KGksIGRlcEV4cG9ydHMpIHsKLSAgICAgICAgICAgICAgICAvL0JlY2F1c2Ugb2YgY3ljbGVzLCBk
ZWZpbmVkIGNhbGxiYWNrIGZvciBhIGdpdmVuCi0gICAgICAgICAgICAgICAgLy9leHBvcnQgY2Fu
IGJlIGNhbGxlZCBtb3JlIHRoYW4gb25jZS4KLSAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZGVw
TWF0Y2hlZFtpXSkgewotICAgICAgICAgICAgICAgICAgICB0aGlzLmRlcE1hdGNoZWRbaV0gPSB0
cnVlOwotICAgICAgICAgICAgICAgICAgICB0aGlzLmRlcENvdW50IC09IDE7Ci0gICAgICAgICAg
ICAgICAgICAgIHRoaXMuZGVwRXhwb3J0c1tpXSA9IGRlcEV4cG9ydHM7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgfSwKLQotICAgICAgICAgICAgZmV0Y2g6IGZ1bmN0aW9uICgpIHsK
LSAgICAgICAgICAgICAgICBpZiAodGhpcy5mZXRjaGVkKSB7Ci0gICAgICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgdGhpcy5mZXRjaGVk
ID0gdHJ1ZTsKLQotICAgICAgICAgICAgICAgIGNvbnRleHQuc3RhcnRUaW1lID0gKG5ldyBEYXRl
KCkpLmdldFRpbWUoKTsKLQotICAgICAgICAgICAgICAgIHZhciBtYXAgPSB0aGlzLm1hcDsKLQot
ICAgICAgICAgICAgICAgIC8vSWYgdGhlIG1hbmFnZXIgaXMgZm9yIGEgcGx1Z2luIG1hbmFnZWQg
cmVzb3VyY2UsCi0gICAgICAgICAgICAgICAgLy9hc2sgdGhlIHBsdWdpbiB0byBsb2FkIGl0IG5v
dy4KLSAgICAgICAgICAgICAgICBpZiAodGhpcy5zaGltKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGNvbnRleHQubWFrZVJlcXVpcmUodGhpcy5tYXAsIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGVuYWJsZUJ1aWxkQ2FsbGJhY2s6IHRydWUKLSAgICAgICAgICAgICAgICAgICAgfSkodGhpcy5z
aGltLmRlcHMgfHwgW10sIGJpbmQodGhpcywgZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIG1hcC5wcmVmaXggPyB0aGlzLmNhbGxQbHVnaW4oKSA6IHRoaXMubG9h
ZCgpOwotICAgICAgICAgICAgICAgICAgICB9KSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgICAgICAgLy9SZWd1bGFyIGRlcGVuZGVuY3kuCi0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiBtYXAucHJlZml4ID8gdGhpcy5jYWxsUGx1Z2luKCkgOiB0aGlzLmxvYWQo
KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9LAotCi0gICAgICAgICAgICBsb2Fk
OiBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHVybCA9IHRoaXMubWFwLnVybDsK
LQotICAgICAgICAgICAgICAgIC8vUmVndWxhciBkZXBlbmRlbmN5LgotICAgICAgICAgICAgICAg
IGlmICghdXJsRmV0Y2hlZFt1cmxdKSB7Ci0gICAgICAgICAgICAgICAgICAgIHVybEZldGNoZWRb
dXJsXSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQubG9hZCh0aGlzLm1hcC5p
ZCwgdXJsKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9LAotCi0gICAgICAgICAg
ICAvKioKLSAgICAgICAgICAgICAqIENoZWNrcyBpZiB0aGUgbW9kdWxlIGlzIHJlYWR5IHRvIGRl
ZmluZSBpdHNlbGYsIGFuZCBpZiBzbywKLSAgICAgICAgICAgICAqIGRlZmluZSBpdC4KLSAgICAg
ICAgICAgICAqLwotICAgICAgICAgICAgY2hlY2s6IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAg
ICAgICBpZiAoIXRoaXMuZW5hYmxlZCB8fCB0aGlzLmVuYWJsaW5nKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICB2YXIg
ZXJyLCBjanNNb2R1bGUsCi0gICAgICAgICAgICAgICAgICAgIGlkID0gdGhpcy5tYXAuaWQsCi0g
ICAgICAgICAgICAgICAgICAgIGRlcEV4cG9ydHMgPSB0aGlzLmRlcEV4cG9ydHMsCi0gICAgICAg
ICAgICAgICAgICAgIGV4cG9ydHMgPSB0aGlzLmV4cG9ydHMsCi0gICAgICAgICAgICAgICAgICAg
IGZhY3RvcnkgPSB0aGlzLmZhY3Rvcnk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaW5p
dGVkKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRoaXMuZmV0Y2goKTsKLSAgICAgICAgICAgICAg
ICB9IGVsc2UgaWYgKHRoaXMuZXJyb3IpIHsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5lbWl0
KCdlcnJvcicsIHRoaXMuZXJyb3IpOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMu
ZGVmaW5pbmcpIHsKLSAgICAgICAgICAgICAgICAgICAgLy9UaGUgZmFjdG9yeSBjb3VsZCB0cmln
Z2VyIGFub3RoZXIgcmVxdWlyZSBjYWxsCi0gICAgICAgICAgICAgICAgICAgIC8vdGhhdCB3b3Vs
ZCByZXN1bHQgaW4gY2hlY2tpbmcgdGhpcyBtb2R1bGUgdG8KLSAgICAgICAgICAgICAgICAgICAg
Ly9kZWZpbmUgaXRzZWxmIGFnYWluLiBJZiBhbHJlYWR5IGluIHRoZSBwcm9jZXNzCi0gICAgICAg
ICAgICAgICAgICAgIC8vb2YgZG9pbmcgdGhhdCwgc2tpcCB0aGlzIHdvcmsuCi0gICAgICAgICAg
ICAgICAgICAgIHRoaXMuZGVmaW5pbmcgPSB0cnVlOwotCi0gICAgICAgICAgICAgICAgICAgIGlm
ICh0aGlzLmRlcENvdW50IDwgMSAmJiAhdGhpcy5kZWZpbmVkKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoaXNGdW5jdGlvbihmYWN0b3J5KSkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vSWYgdGhlcmUgaXMgYW4gZXJyb3IgbGlzdGVuZXIsIGZhdm9yIHBhc3NpbmcKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvL3RvIHRoYXQgaW5zdGVhZCBvZiB0aHJvd2luZyBh
biBlcnJvci4gSG93ZXZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL29ubHkgZG8g
aXQgZm9yIGRlZmluZSgpJ2QgIG1vZHVsZXMuIHJlcXVpcmUKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvL2VycmJhY2tzIHNob3VsZCBub3QgYmUgY2FsbGVkIGZvciBmYWlsdXJlcyBpbgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vdGhlaXIgY2FsbGJhY2tzICgjNjk5KS4gSG93
ZXZlciBpZiBhIGdsb2JhbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vb25FcnJvciBp
cyBzZXQsIHVzZSB0aGF0LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgodGhpcy5l
dmVudHMuZXJyb3IgJiYgdGhpcy5tYXAuaXNEZWZpbmUpIHx8Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlcS5vbkVycm9yICE9PSBkZWZhdWx0T25FcnJvcikgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZXhwb3J0cyA9IGNvbnRleHQuZXhlY0NiKGlkLCBmYWN0b3J5LCBkZXBFeHBvcnRz
LCBleHBvcnRzKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyID0gZTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cG9ydHMgPSBjb250ZXh0
LmV4ZWNDYihpZCwgZmFjdG9yeSwgZGVwRXhwb3J0cywgZXhwb3J0cyk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMu
bWFwLmlzRGVmaW5lKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vSWYgc2V0
dGluZyBleHBvcnRzIHZpYSAnbW9kdWxlJyBpcyBpbiBwbGF5LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvL2Zhdm9yIHRoYXQgb3ZlciByZXR1cm4gdmFsdWUgYW5kIGV4cG9ydHMu
IEFmdGVyIHRoYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vZmF2b3IgYSBu
b24tdW5kZWZpbmVkIHJldHVybiB2YWx1ZSBvdmVyIGV4cG9ydHMgdXNlLgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjanNNb2R1bGUgPSB0aGlzLm1vZHVsZTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGNqc01vZHVsZSAmJgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNqc01vZHVsZS5leHBvcnRzICE9PSB1bmRlZmluZWQgJiYK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL01ha2Ugc3VyZSBpdCBp
cyBub3QgYWxyZWFkeSB0aGUgZXhwb3J0cyB2YWx1ZQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNqc01vZHVsZS5leHBvcnRzICE9PSB0aGlzLmV4cG9ydHMpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cG9ydHMgPSBjanNNb2R1bGUuZXhw
b3J0czsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChleHBvcnRz
ID09PSB1bmRlZmluZWQgJiYgdGhpcy51c2luZ0V4cG9ydHMpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vZXhwb3J0cyBhbHJlYWR5IHNldCB0aGUgZGVmaW5lZCB2YWx1
ZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cG9ydHMgPSB0aGlzLmV4
cG9ydHM7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVyci5yZXF1aXJlTWFwID0gdGhpcy5t
YXA7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVyci5yZXF1aXJlTW9kdWxlcyA9
IHRoaXMubWFwLmlzRGVmaW5lID8gW3RoaXMubWFwLmlkXSA6IG51bGw7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGVyci5yZXF1aXJlVHlwZSA9IHRoaXMubWFwLmlzRGVmaW5lID8g
J2RlZmluZScgOiAncmVxdWlyZSc7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBvbkVycm9yKCh0aGlzLmVycm9yID0gZXJyKSk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vSnVzdCBhIGxpdGVyYWwgdmFsdWUKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBleHBvcnRzID0gZmFjdG9yeTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5leHBvcnRzID0gZXhwb3J0czsKLQotICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubWFwLmlzRGVmaW5lICYmICF0aGlzLmlnbm9y
ZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZWRbaWRdID0gZXhwb3J0czsK
LQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXEub25SZXNvdXJjZUxvYWQpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxLm9uUmVzb3VyY2VMb2FkKGNvbnRl
eHQsIHRoaXMubWFwLCB0aGlzLmRlcE1hcHMpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAgICAg
Ly9DbGVhbiB1cAotICAgICAgICAgICAgICAgICAgICAgICAgY2xlYW5SZWdpc3RyeShpZCk7Ci0K
LSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGVmaW5lZCA9IHRydWU7Ci0gICAgICAgICAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAvL0ZpbmlzaGVkIHRoZSBkZWZpbmUg
c3RhZ2UuIEFsbG93IGNhbGxpbmcgY2hlY2sgYWdhaW4KLSAgICAgICAgICAgICAgICAgICAgLy90
byBhbGxvdyBkZWZpbmUgbm90aWZpY2F0aW9ucyBiZWxvdyBpbiB0aGUgY2FzZSBvZiBhCi0gICAg
ICAgICAgICAgICAgICAgIC8vY3ljbGUuCi0gICAgICAgICAgICAgICAgICAgIHRoaXMuZGVmaW5p
bmcgPSBmYWxzZTsKLQotICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5kZWZpbmVkICYmICF0
aGlzLmRlZmluZUVtaXR0ZWQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGVmaW5l
RW1pdHRlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVtaXQoJ2RlZmlu
ZWQnLCB0aGlzLmV4cG9ydHMpOwotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWZpbmVF
bWl0Q29tcGxldGUgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB9LAotCi0gICAgICAgICAgICBjYWxsUGx1Z2luOiBmdW5jdGlv
biAoKSB7Ci0gICAgICAgICAgICAgICAgdmFyIG1hcCA9IHRoaXMubWFwLAotICAgICAgICAgICAg
ICAgICAgICBpZCA9IG1hcC5pZCwKLSAgICAgICAgICAgICAgICAgICAgLy9NYXAgYWxyZWFkeSBu
b3JtYWxpemVkIHRoZSBwcmVmaXguCi0gICAgICAgICAgICAgICAgICAgIHBsdWdpbk1hcCA9IG1h
a2VNb2R1bGVNYXAobWFwLnByZWZpeCk7Ci0KLSAgICAgICAgICAgICAgICAvL01hcmsgdGhpcyBh
cyBhIGRlcGVuZGVuY3kgZm9yIHRoaXMgcGx1Z2luLCBzbyBpdAotICAgICAgICAgICAgICAgIC8v
Y2FuIGJlIHRyYWNlZCBmb3IgY3ljbGVzLgotICAgICAgICAgICAgICAgIHRoaXMuZGVwTWFwcy5w
dXNoKHBsdWdpbk1hcCk7Ci0KLSAgICAgICAgICAgICAgICBvbihwbHVnaW5NYXAsICdkZWZpbmVk
JywgYmluZCh0aGlzLCBmdW5jdGlvbiAocGx1Z2luKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZh
ciBsb2FkLCBub3JtYWxpemVkTWFwLCBub3JtYWxpemVkTW9kLAotICAgICAgICAgICAgICAgICAg
ICAgICAgbmFtZSA9IHRoaXMubWFwLm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICBwYXJl
bnROYW1lID0gdGhpcy5tYXAucGFyZW50TWFwID8gdGhpcy5tYXAucGFyZW50TWFwLm5hbWUgOiBu
dWxsLAotICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxSZXF1aXJlID0gY29udGV4dC5tYWtl
UmVxdWlyZShtYXAucGFyZW50TWFwLCB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5h
YmxlQnVpbGRDYWxsYmFjazogdHJ1ZQotICAgICAgICAgICAgICAgICAgICAgICAgfSk7Ci0KLSAg
ICAgICAgICAgICAgICAgICAgLy9JZiBjdXJyZW50IG1hcCBpcyBub3Qgbm9ybWFsaXplZCwgd2Fp
dCBmb3IgdGhhdAotICAgICAgICAgICAgICAgICAgICAvL25vcm1hbGl6ZWQgbmFtZSB0byBsb2Fk
IGluc3RlYWQgb2YgY29udGludWluZy4KLSAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubWFw
LnVubm9ybWFsaXplZCkgewotICAgICAgICAgICAgICAgICAgICAgICAgLy9Ob3JtYWxpemUgdGhl
IElEIGlmIHRoZSBwbHVnaW4gYWxsb3dzIGl0LgotICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KHBsdWdpbi5ub3JtYWxpemUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0g
cGx1Z2luLm5vcm1hbGl6ZShuYW1lLCBmdW5jdGlvbiAobmFtZSkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbm9ybWFsaXplKG5hbWUsIHBhcmVudE5hbWUsIHRydWUp
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIHx8ICcnOwotICAgICAgICAgICAgICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICAvL3ByZWZpeCBhbmQgbmFtZSBz
aG91bGQgYWxyZWFkeSBiZSBub3JtYWxpemVkLCBubyBuZWVkCi0gICAgICAgICAgICAgICAgICAg
ICAgICAvL2ZvciBhcHBseWluZyBtYXAgY29uZmlnIGFnYWluIGVpdGhlci4KLSAgICAgICAgICAg
ICAgICAgICAgICAgIG5vcm1hbGl6ZWRNYXAgPSBtYWtlTW9kdWxlTWFwKG1hcC5wcmVmaXggKyAn
IScgKyBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGhpcy5tYXAucGFyZW50TWFwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG9u
KG5vcm1hbGl6ZWRNYXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlZmluZWQnLCBi
aW5kKHRoaXMsIGZ1bmN0aW9uICh2YWx1ZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0aGlzLmluaXQoW10sIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHZhbHVlOyB9LCBudWxsLCB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiB0cnVlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlOiB0cnVlCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0p
KTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZE1vZCA9IGdldE93bihyZWdp
c3RyeSwgbm9ybWFsaXplZE1hcC5pZCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9y
bWFsaXplZE1vZCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vTWFyayB0aGlzIGFz
IGEgZGVwZW5kZW5jeSBmb3IgdGhpcyBwbHVnaW4sIHNvIGl0Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy9jYW4gYmUgdHJhY2VkIGZvciBjeWNsZXMuCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGhpcy5kZXBNYXBzLnB1c2gobm9ybWFsaXplZE1hcCk7Ci0KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAodGhpcy5ldmVudHMuZXJyb3IpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZE1vZC5vbignZXJyb3InLCBiaW5kKHRoaXMsIGZ1
bmN0aW9uIChlcnIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMu
ZW1pdCgnZXJyb3InLCBlcnIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5vcm1hbGl6ZWRNb2QuZW5hYmxlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICAgICAgICAgIGxvYWQgPSBiaW5kKHRoaXMsIGZ1bmN0aW9uICh2YWx1ZSkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbml0KFtdLCBmdW5jdGlvbiAoKSB7IHJl
dHVybiB2YWx1ZTsgfSwgbnVsbCwgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJs
ZWQ6IHRydWUKLSAgICAgICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgICAg
ICB9KTsKLQotICAgICAgICAgICAgICAgICAgICBsb2FkLmVycm9yID0gYmluZCh0aGlzLCBmdW5j
dGlvbiAoZXJyKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmluaXRlZCA9IHRydWU7
Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVycm9yID0gZXJyOwotICAgICAgICAgICAg
ICAgICAgICAgICAgZXJyLnJlcXVpcmVNb2R1bGVzID0gW2lkXTsKLQotICAgICAgICAgICAgICAg
ICAgICAgICAgLy9SZW1vdmUgdGVtcCB1bm5vcm1hbGl6ZWQgbW9kdWxlcyBmb3IgdGhpcyBtb2R1
bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAvL3NpbmNlIHRoZXkgd2lsbCBuZXZlciBiZSBy
ZXNvbHZlZCBvdGhlcndpc2Ugbm93LgotICAgICAgICAgICAgICAgICAgICAgICAgZWFjaFByb3Ao
cmVnaXN0cnksIGZ1bmN0aW9uIChtb2QpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAobW9kLm1hcC5pZC5pbmRleE9mKGlkICsgJ191bm5vcm1hbGl6ZWQnKSA9PT0gMCkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhblJlZ2lzdHJ5KG1vZC5tYXAuaWQpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0p
OwotCi0gICAgICAgICAgICAgICAgICAgICAgICBvbkVycm9yKGVycik7Ci0gICAgICAgICAgICAg
ICAgICAgIH0pOwotCi0gICAgICAgICAgICAgICAgICAgIC8vQWxsb3cgcGx1Z2lucyB0byBsb2Fk
IG90aGVyIGNvZGUgd2l0aG91dCBoYXZpbmcgdG8ga25vdyB0aGUKLSAgICAgICAgICAgICAgICAg
ICAgLy9jb250ZXh0IG9yIGhvdyB0byAnY29tcGxldGUnIHRoZSBsb2FkLgotICAgICAgICAgICAg
ICAgICAgICBsb2FkLmZyb21UZXh0ID0gYmluZCh0aGlzLCBmdW5jdGlvbiAodGV4dCwgdGV4dEFs
dCkgewotICAgICAgICAgICAgICAgICAgICAgICAgLypqc2xpbnQgZXZpbDogdHJ1ZSAqLwotICAg
ICAgICAgICAgICAgICAgICAgICAgdmFyIG1vZHVsZU5hbWUgPSBtYXAubmFtZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtb2R1bGVNYXAgPSBtYWtlTW9kdWxlTWFwKG1vZHVsZU5hbWUp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc0ludGVyYWN0aXZlID0gdXNlSW50ZXJh
Y3RpdmU7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vQXMgb2YgMi4xLjAsIHN1cHBvcnQg
anVzdCBwYXNzaW5nIHRoZSB0ZXh0LCB0byByZWluZm9yY2UKLSAgICAgICAgICAgICAgICAgICAg
ICAgIC8vZnJvbVRleHQgb25seSBiZWluZyBjYWxsZWQgb25jZSBwZXIgcmVzb3VyY2UuIFN0aWxs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAvL3N1cHBvcnQgb2xkIHN0eWxlIG9mIHBhc3Npbmcg
bW9kdWxlTmFtZSBidXQgZGlzY2FyZAotICAgICAgICAgICAgICAgICAgICAgICAgLy90aGF0IG1v
ZHVsZU5hbWUgaW4gZmF2b3Igb2YgdGhlIGludGVybmFsIHJlZi4KLSAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICh0ZXh0QWx0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCA9
IHRleHRBbHQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAg
ICAgICAgIC8vVHVybiBvZmYgaW50ZXJhY3RpdmUgc2NyaXB0IG1hdGNoaW5nIGZvciBJRSBmb3Ig
YW55IGRlZmluZQotICAgICAgICAgICAgICAgICAgICAgICAgLy9jYWxscyBpbiB0aGUgdGV4dCwg
dGhlbiB0dXJuIGl0IGJhY2sgb24gYXQgdGhlIGVuZC4KLSAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChoYXNJbnRlcmFjdGl2ZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZUlu
dGVyYWN0aXZlID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgICAgICAgICAgICAgIC8vUHJpbWUgdGhlIHN5c3RlbSBieSBjcmVhdGluZyBhIG1vZHVsZSBp
bnN0YW5jZSBmb3IKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vaXQuCi0gICAgICAgICAgICAg
ICAgICAgICAgICBnZXRNb2R1bGUobW9kdWxlTWFwKTsKLQotICAgICAgICAgICAgICAgICAgICAg
ICAgLy9UcmFuc2ZlciBhbnkgY29uZmlnIHRvIHRoaXMgb3RoZXIgbW9kdWxlLgotICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKGhhc1Byb3AoY29uZmlnLmNvbmZpZywgaWQpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uZmlnLmNvbmZpZ1ttb2R1bGVOYW1lXSA9IGNvbmZpZy5j
b25maWdbaWRdOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAg
ICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcS5leGVjKHRleHQp
OwotICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBvbkVycm9yKG1ha2VFcnJvcignZnJvbXRleHRldmFsJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmcm9tVGV4dCBldmFs
IGZvciAnICsgaWQgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnIGZhaWxlZDogJyArIGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
W2lkXSkpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoaGFzSW50ZXJhY3RpdmUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
c2VJbnRlcmFjdGl2ZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgICAgICAgICAgICAgIC8vTWFyayB0aGlzIGFzIGEgZGVwZW5kZW5jeSBmb3IgdGhlIHBs
dWdpbgotICAgICAgICAgICAgICAgICAgICAgICAgLy9yZXNvdXJjZQotICAgICAgICAgICAgICAg
ICAgICAgICAgdGhpcy5kZXBNYXBzLnB1c2gobW9kdWxlTWFwKTsKLQotICAgICAgICAgICAgICAg
ICAgICAgICAgLy9TdXBwb3J0IGFub255bW91cyBtb2R1bGVzLgotICAgICAgICAgICAgICAgICAg
ICAgICAgY29udGV4dC5jb21wbGV0ZUxvYWQobW9kdWxlTmFtZSk7Ci0KLSAgICAgICAgICAgICAg
ICAgICAgICAgIC8vQmluZCB0aGUgdmFsdWUgb2YgdGhhdCBtb2R1bGUgdG8gdGhlIHZhbHVlIGZv
ciB0aGlzCi0gICAgICAgICAgICAgICAgICAgICAgICAvL3Jlc291cmNlIElELgotICAgICAgICAg
ICAgICAgICAgICAgICAgbG9jYWxSZXF1aXJlKFttb2R1bGVOYW1lXSwgbG9hZCk7Ci0gICAgICAg
ICAgICAgICAgICAgIH0pOwotCi0gICAgICAgICAgICAgICAgICAgIC8vVXNlIHBhcmVudE5hbWUg
aGVyZSBzaW5jZSB0aGUgcGx1Z2luJ3MgbmFtZSBpcyBub3QgcmVsaWFibGUsCi0gICAgICAgICAg
ICAgICAgICAgIC8vY291bGQgYmUgc29tZSB3ZWlyZCBzdHJpbmcgd2l0aCBubyBwYXRoIHRoYXQg
YWN0dWFsbHkgd2FudHMgdG8KLSAgICAgICAgICAgICAgICAgICAgLy9yZWZlcmVuY2UgdGhlIHBh
cmVudE5hbWUncyBwYXRoLgotICAgICAgICAgICAgICAgICAgICBwbHVnaW4ubG9hZChtYXAubmFt
ZSwgbG9jYWxSZXF1aXJlLCBsb2FkLCBjb25maWcpOwotICAgICAgICAgICAgICAgIH0pKTsKLQot
ICAgICAgICAgICAgICAgIGNvbnRleHQuZW5hYmxlKHBsdWdpbk1hcCwgdGhpcyk7Ci0gICAgICAg
ICAgICAgICAgdGhpcy5wbHVnaW5NYXBzW3BsdWdpbk1hcC5pZF0gPSBwbHVnaW5NYXA7Ci0gICAg
ICAgICAgICB9LAotCi0gICAgICAgICAgICBlbmFibGU6IGZ1bmN0aW9uICgpIHsKLSAgICAgICAg
ICAgICAgICBlbmFibGVkUmVnaXN0cnlbdGhpcy5tYXAuaWRdID0gdGhpczsKLSAgICAgICAgICAg
ICAgICB0aGlzLmVuYWJsZWQgPSB0cnVlOwotCi0gICAgICAgICAgICAgICAgLy9TZXQgZmxhZyBt
ZW50aW9uaW5nIHRoYXQgdGhlIG1vZHVsZSBpcyBlbmFibGluZywKLSAgICAgICAgICAgICAgICAv
L3NvIHRoYXQgaW1tZWRpYXRlIGNhbGxzIHRvIHRoZSBkZWZpbmVkIGNhbGxiYWNrcwotICAgICAg
ICAgICAgICAgIC8vZm9yIGRlcGVuZGVuY2llcyBkbyBub3QgdHJpZ2dlciBpbmFkdmVydGVudCBs
b2FkCi0gICAgICAgICAgICAgICAgLy93aXRoIHRoZSBkZXBDb3VudCBzdGlsbCBiZWluZyB6ZXJv
LgotICAgICAgICAgICAgICAgIHRoaXMuZW5hYmxpbmcgPSB0cnVlOwotCi0gICAgICAgICAgICAg
ICAgLy9FbmFibGUgZWFjaCBkZXBlbmRlbmN5Ci0gICAgICAgICAgICAgICAgZWFjaCh0aGlzLmRl
cE1hcHMsIGJpbmQodGhpcywgZnVuY3Rpb24gKGRlcE1hcCwgaSkgewotICAgICAgICAgICAgICAg
ICAgICB2YXIgaWQsIG1vZCwgaGFuZGxlcjsKLQotICAgICAgICAgICAgICAgICAgICBpZiAodHlw
ZW9mIGRlcE1hcCA9PT0gJ3N0cmluZycpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vRGVw
ZW5kZW5jeSBuZWVkcyB0byBiZSBjb252ZXJ0ZWQgdG8gYSBkZXBNYXAKLSAgICAgICAgICAgICAg
ICAgICAgICAgIC8vYW5kIHdpcmVkIHVwIHRvIHRoaXMgbW9kdWxlLgotICAgICAgICAgICAgICAg
ICAgICAgICAgZGVwTWFwID0gbWFrZU1vZHVsZU1hcChkZXBNYXAsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLm1hcC5pc0RlZmluZSA/IHRoaXMu
bWFwIDogdGhpcy5tYXAucGFyZW50TWFwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICF0aGlzLnNraXBNYXApOwotICAgICAgICAgICAgICAgICAgICAgICAg
dGhpcy5kZXBNYXBzW2ldID0gZGVwTWFwOwotCi0gICAgICAgICAgICAgICAgICAgICAgICBoYW5k
bGVyID0gZ2V0T3duKGhhbmRsZXJzLCBkZXBNYXAuaWQpOwotCi0gICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoaGFuZGxlcikgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGVw
RXhwb3J0c1tpXSA9IGhhbmRsZXIodGhpcyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAg
ICAgICB0aGlzLmRlcENvdW50ICs9IDE7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIG9uKGRl
cE1hcCwgJ2RlZmluZWQnLCBiaW5kKHRoaXMsIGZ1bmN0aW9uIChkZXBFeHBvcnRzKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWZpbmVEZXAoaSwgZGVwRXhwb3J0cyk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGVjaygpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgfSkpOwotCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5lcnJiYWNr
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb24oZGVwTWFwLCAnZXJyb3InLCBiaW5k
KHRoaXMsIHRoaXMuZXJyYmFjaykpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgaWQgPSBkZXBNYXAuaWQ7Ci0g
ICAgICAgICAgICAgICAgICAgIG1vZCA9IHJlZ2lzdHJ5W2lkXTsKLQotICAgICAgICAgICAgICAg
ICAgICAvL1NraXAgc3BlY2lhbCBtb2R1bGVzIGxpa2UgJ3JlcXVpcmUnLCAnZXhwb3J0cycsICdt
b2R1bGUnCi0gICAgICAgICAgICAgICAgICAgIC8vQWxzbywgZG9uJ3QgY2FsbCBlbmFibGUgaWYg
aXQgaXMgYWxyZWFkeSBlbmFibGVkLAotICAgICAgICAgICAgICAgICAgICAvL2ltcG9ydGFudCBp
biBjaXJjdWxhciBkZXBlbmRlbmN5IGNhc2VzLgotICAgICAgICAgICAgICAgICAgICBpZiAoIWhh
c1Byb3AoaGFuZGxlcnMsIGlkKSAmJiBtb2QgJiYgIW1vZC5lbmFibGVkKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBjb250ZXh0LmVuYWJsZShkZXBNYXAsIHRoaXMpOwotICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSkpOwotCi0gICAgICAgICAgICAgICAgLy9FbmFi
bGUgZWFjaCBwbHVnaW4gdGhhdCBpcyB1c2VkIGluCi0gICAgICAgICAgICAgICAgLy9hIGRlcGVu
ZGVuY3kKLSAgICAgICAgICAgICAgICBlYWNoUHJvcCh0aGlzLnBsdWdpbk1hcHMsIGJpbmQodGhp
cywgZnVuY3Rpb24gKHBsdWdpbk1hcCkgewotICAgICAgICAgICAgICAgICAgICB2YXIgbW9kID0g
Z2V0T3duKHJlZ2lzdHJ5LCBwbHVnaW5NYXAuaWQpOwotICAgICAgICAgICAgICAgICAgICBpZiAo
bW9kICYmICFtb2QuZW5hYmxlZCkgewotICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5l
bmFibGUocGx1Z2luTWFwLCB0aGlzKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIH0pKTsKLQotICAgICAgICAgICAgICAgIHRoaXMuZW5hYmxpbmcgPSBmYWxzZTsKLQot
ICAgICAgICAgICAgICAgIHRoaXMuY2hlY2soKTsKLSAgICAgICAgICAgIH0sCi0KLSAgICAgICAg
ICAgIG9uOiBmdW5jdGlvbiAobmFtZSwgY2IpIHsKLSAgICAgICAgICAgICAgICB2YXIgY2JzID0g
dGhpcy5ldmVudHNbbmFtZV07Ci0gICAgICAgICAgICAgICAgaWYgKCFjYnMpIHsKLSAgICAgICAg
ICAgICAgICAgICAgY2JzID0gdGhpcy5ldmVudHNbbmFtZV0gPSBbXTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgY2JzLnB1c2goY2IpOwotICAgICAgICAgICAgfSwKLQotICAg
ICAgICAgICAgZW1pdDogZnVuY3Rpb24gKG5hbWUsIGV2dCkgewotICAgICAgICAgICAgICAgIGVh
Y2godGhpcy5ldmVudHNbbmFtZV0sIGZ1bmN0aW9uIChjYikgewotICAgICAgICAgICAgICAgICAg
ICBjYihldnQpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIGlmIChuYW1l
ID09PSAnZXJyb3InKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vTm93IHRoYXQgdGhlIGVycm9y
IGhhbmRsZXIgd2FzIHRyaWdnZXJlZCwgcmVtb3ZlCi0gICAgICAgICAgICAgICAgICAgIC8vdGhl
IGxpc3RlbmVycywgc2luY2UgdGhpcyBicm9rZW4gTW9kdWxlIGluc3RhbmNlCi0gICAgICAgICAg
ICAgICAgICAgIC8vY2FuIHN0YXkgYXJvdW5kIGZvciBhIHdoaWxlIGluIHRoZSByZWdpc3RyeS4K
LSAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMuZXZlbnRzW25hbWVdOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLQotICAgICAgICBmdW5jdGlvbiBj
YWxsR2V0TW9kdWxlKGFyZ3MpIHsKLSAgICAgICAgICAgIC8vU2tpcCBtb2R1bGVzIGFscmVhZHkg
ZGVmaW5lZC4KLSAgICAgICAgICAgIGlmICghaGFzUHJvcChkZWZpbmVkLCBhcmdzWzBdKSkgewot
ICAgICAgICAgICAgICAgIGdldE1vZHVsZShtYWtlTW9kdWxlTWFwKGFyZ3NbMF0sIG51bGwsIHRy
dWUpKS5pbml0KGFyZ3NbMV0sIGFyZ3NbMl0pOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0K
LSAgICAgICAgZnVuY3Rpb24gcmVtb3ZlTGlzdGVuZXIobm9kZSwgZnVuYywgbmFtZSwgaWVOYW1l
KSB7Ci0gICAgICAgICAgICAvL0Zhdm9yIGRldGFjaEV2ZW50IGJlY2F1c2Ugb2YgSUU5Ci0gICAg
ICAgICAgICAvL2lzc3VlLCBzZWUgYXR0YWNoRXZlbnQvYWRkRXZlbnRMaXN0ZW5lciBjb21tZW50
IGVsc2V3aGVyZQotICAgICAgICAgICAgLy9pbiB0aGlzIGZpbGUuCi0gICAgICAgICAgICBpZiAo
bm9kZS5kZXRhY2hFdmVudCAmJiAhaXNPcGVyYSkgewotICAgICAgICAgICAgICAgIC8vUHJvYmFi
bHkgSUUuIElmIG5vdCBpdCB3aWxsIHRocm93IGFuIGVycm9yLCB3aGljaCB3aWxsIGJlCi0gICAg
ICAgICAgICAgICAgLy91c2VmdWwgdG8ga25vdy4KLSAgICAgICAgICAgICAgICBpZiAoaWVOYW1l
KSB7Ci0gICAgICAgICAgICAgICAgICAgIG5vZGUuZGV0YWNoRXZlbnQoaWVOYW1lLCBmdW5jKTsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg
IG5vZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihuYW1lLCBmdW5jLCBmYWxzZSk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvKioKLSAgICAgICAgICogR2l2ZW4gYW4gZXZlbnQg
ZnJvbSBhIHNjcmlwdCBub2RlLCBnZXQgdGhlIHJlcXVpcmVqcyBpbmZvIGZyb20gaXQsCi0gICAg
ICAgICAqIGFuZCB0aGVuIHJlbW92ZXMgdGhlIGV2ZW50IGxpc3RlbmVycyBvbiB0aGUgbm9kZS4K
LSAgICAgICAgICogQHBhcmFtIHtFdmVudH0gZXZ0Ci0gICAgICAgICAqIEByZXR1cm5zIHtPYmpl
Y3R9Ci0gICAgICAgICAqLwotICAgICAgICBmdW5jdGlvbiBnZXRTY3JpcHREYXRhKGV2dCkgewot
ICAgICAgICAgICAgLy9Vc2luZyBjdXJyZW50VGFyZ2V0IGluc3RlYWQgb2YgdGFyZ2V0IGZvciBG
aXJlZm94IDIuMCdzIHNha2UuIE5vdAotICAgICAgICAgICAgLy9hbGwgb2xkIGJyb3dzZXJzIHdp
bGwgYmUgc3VwcG9ydGVkLCBidXQgdGhpcyBvbmUgd2FzIGVhc3kgZW5vdWdoCi0gICAgICAgICAg
ICAvL3RvIHN1cHBvcnQgYW5kIHN0aWxsIG1ha2VzIHNlbnNlLgotICAgICAgICAgICAgdmFyIG5v
ZGUgPSBldnQuY3VycmVudFRhcmdldCB8fCBldnQuc3JjRWxlbWVudDsKLQotICAgICAgICAgICAg
Ly9SZW1vdmUgdGhlIGxpc3RlbmVycyBvbmNlIGhlcmUuCi0gICAgICAgICAgICByZW1vdmVMaXN0
ZW5lcihub2RlLCBjb250ZXh0Lm9uU2NyaXB0TG9hZCwgJ2xvYWQnLCAnb25yZWFkeXN0YXRlY2hh
bmdlJyk7Ci0gICAgICAgICAgICByZW1vdmVMaXN0ZW5lcihub2RlLCBjb250ZXh0Lm9uU2NyaXB0
RXJyb3IsICdlcnJvcicpOwotCi0gICAgICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgICAg
IG5vZGU6IG5vZGUsCi0gICAgICAgICAgICAgICAgaWQ6IG5vZGUgJiYgbm9kZS5nZXRBdHRyaWJ1
dGUoJ2RhdGEtcmVxdWlyZW1vZHVsZScpCi0gICAgICAgICAgICB9OwotICAgICAgICB9Ci0KLSAg
ICAgICAgZnVuY3Rpb24gaW50YWtlRGVmaW5lcygpIHsKLSAgICAgICAgICAgIHZhciBhcmdzOwot
Ci0gICAgICAgICAgICAvL0FueSBkZWZpbmVkIG1vZHVsZXMgaW4gdGhlIGdsb2JhbCBxdWV1ZSwg
aW50YWtlIHRoZW0gbm93LgotICAgICAgICAgICAgdGFrZUdsb2JhbFF1ZXVlKCk7Ci0KLSAgICAg
ICAgICAgIC8vTWFrZSBzdXJlIGFueSByZW1haW5pbmcgZGVmUXVldWUgaXRlbXMgZ2V0IHByb3Bl
cmx5IHByb2Nlc3NlZC4KLSAgICAgICAgICAgIHdoaWxlIChkZWZRdWV1ZS5sZW5ndGgpIHsKLSAg
ICAgICAgICAgICAgICBhcmdzID0gZGVmUXVldWUuc2hpZnQoKTsKLSAgICAgICAgICAgICAgICBp
ZiAoYXJnc1swXSA9PT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gb25FcnJv
cihtYWtlRXJyb3IoJ21pc21hdGNoJywgJ01pc21hdGNoZWQgYW5vbnltb3VzIGRlZmluZSgpIG1v
ZHVsZTogJyArIGFyZ3NbYXJncy5sZW5ndGggLSAxXSkpOwotICAgICAgICAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vYXJncyBhcmUgaWQsIGRlcHMsIGZhY3RvcnkuIFNo
b3VsZCBiZSBub3JtYWxpemVkIGJ5IHRoZQotICAgICAgICAgICAgICAgICAgICAvL2RlZmluZSgp
IGZ1bmN0aW9uLgotICAgICAgICAgICAgICAgICAgICBjYWxsR2V0TW9kdWxlKGFyZ3MpOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGNvbnRl
eHQgPSB7Ci0gICAgICAgICAgICBjb25maWc6IGNvbmZpZywKLSAgICAgICAgICAgIGNvbnRleHRO
YW1lOiBjb250ZXh0TmFtZSwKLSAgICAgICAgICAgIHJlZ2lzdHJ5OiByZWdpc3RyeSwKLSAgICAg
ICAgICAgIGRlZmluZWQ6IGRlZmluZWQsCi0gICAgICAgICAgICB1cmxGZXRjaGVkOiB1cmxGZXRj
aGVkLAotICAgICAgICAgICAgZGVmUXVldWU6IGRlZlF1ZXVlLAotICAgICAgICAgICAgTW9kdWxl
OiBNb2R1bGUsCi0gICAgICAgICAgICBtYWtlTW9kdWxlTWFwOiBtYWtlTW9kdWxlTWFwLAotICAg
ICAgICAgICAgbmV4dFRpY2s6IHJlcS5uZXh0VGljaywKLSAgICAgICAgICAgIG9uRXJyb3I6IG9u
RXJyb3IsCi0KLSAgICAgICAgICAgIC8qKgotICAgICAgICAgICAgICogU2V0IGEgY29uZmlndXJh
dGlvbiBmb3IgdGhlIGNvbnRleHQuCi0gICAgICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gY2Zn
IGNvbmZpZyBvYmplY3QgdG8gaW50ZWdyYXRlLgotICAgICAgICAgICAgICovCi0gICAgICAgICAg
ICBjb25maWd1cmU6IGZ1bmN0aW9uIChjZmcpIHsKLSAgICAgICAgICAgICAgICAvL01ha2Ugc3Vy
ZSB0aGUgYmFzZVVybCBlbmRzIGluIGEgc2xhc2guCi0gICAgICAgICAgICAgICAgaWYgKGNmZy5i
YXNlVXJsKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjZmcuYmFzZVVybC5jaGFyQXQoY2Zn
LmJhc2VVcmwubGVuZ3RoIC0gMSkgIT09ICcvJykgewotICAgICAgICAgICAgICAgICAgICAgICAg
Y2ZnLmJhc2VVcmwgKz0gJy8nOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICAgICAgLy9TYXZlIG9mZiB0aGUgcGF0aHMgYW5kIHBhY2thZ2Vz
IHNpbmNlIHRoZXkgcmVxdWlyZSBzcGVjaWFsIHByb2Nlc3NpbmcsCi0gICAgICAgICAgICAgICAg
Ly90aGV5IGFyZSBhZGRpdGl2ZS4KLSAgICAgICAgICAgICAgICB2YXIgcGtncyA9IGNvbmZpZy5w
a2dzLAotICAgICAgICAgICAgICAgICAgICBzaGltID0gY29uZmlnLnNoaW0sCi0gICAgICAgICAg
ICAgICAgICAgIG9ianMgPSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwYXRoczogdHJ1ZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZzogdHJ1ZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG1hcDogdHJ1ZQotICAgICAgICAgICAgICAgICAgICB9OwotCi0gICAgICAgICAgICAg
ICAgZWFjaFByb3AoY2ZnLCBmdW5jdGlvbiAodmFsdWUsIHByb3ApIHsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKG9ianNbcHJvcF0pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcm9w
ID09PSAnbWFwJykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY29uZmlnLm1h
cCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcubWFwID0ge307Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1peGluKGNvbmZpZ1twcm9wXSwgdmFsdWUsIHRydWUsIHRydWUpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXhpbihjb25m
aWdbcHJvcF0sIHZhbHVlLCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ1tw
cm9wXSA9IHZhbHVlOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSk7
Ci0KLSAgICAgICAgICAgICAgICAvL01lcmdlIHNoaW0KLSAgICAgICAgICAgICAgICBpZiAoY2Zn
LnNoaW0pIHsKLSAgICAgICAgICAgICAgICAgICAgZWFjaFByb3AoY2ZnLnNoaW0sIGZ1bmN0aW9u
ICh2YWx1ZSwgaWQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vTm9ybWFsaXplIHRoZSBz
dHJ1Y3R1cmUKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0FycmF5KHZhbHVlKSkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZXBzOiB2YWx1ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07
Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAo
KHZhbHVlLmV4cG9ydHMgfHwgdmFsdWUuaW5pdCkgJiYgIXZhbHVlLmV4cG9ydHNGbikgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLmV4cG9ydHNGbiA9IGNvbnRleHQubWFrZVNo
aW1FeHBvcnRzKHZhbHVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICAgICAgICAgIHNoaW1baWRdID0gdmFsdWU7Ci0gICAgICAgICAgICAgICAgICAgIH0pOwot
ICAgICAgICAgICAgICAgICAgICBjb25maWcuc2hpbSA9IHNoaW07Ci0gICAgICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICAgICAgLy9BZGp1c3QgcGFja2FnZXMgaWYgbmVjZXNzYXJ5LgotICAg
ICAgICAgICAgICAgIGlmIChjZmcucGFja2FnZXMpIHsKLSAgICAgICAgICAgICAgICAgICAgZWFj
aChjZmcucGFja2FnZXMsIGZ1bmN0aW9uIChwa2dPYmopIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHZhciBsb2NhdGlvbjsKLQotICAgICAgICAgICAgICAgICAgICAgICAgcGtnT2JqID0gdHlw
ZW9mIHBrZ09iaiA9PT0gJ3N0cmluZycgPyB7IG5hbWU6IHBrZ09iaiB9IDogcGtnT2JqOwotICAg
ICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24gPSBwa2dPYmoubG9jYXRpb247Ci0KLSAgICAg
ICAgICAgICAgICAgICAgICAgIC8vQ3JlYXRlIGEgYnJhbmQgbmV3IG9iamVjdCBvbiBwa2dzLCBz
aW5jZSBjdXJyZW50UGFja2FnZXMgY2FuCi0gICAgICAgICAgICAgICAgICAgICAgICAvL2JlIHBh
c3NlZCBpbiBhZ2FpbiwgYW5kIGNvbmZpZy5wa2dzIGlzIHRoZSBpbnRlcm5hbCB0cmFuc2Zvcm1l
ZAotICAgICAgICAgICAgICAgICAgICAgICAgLy9zdGF0ZSBmb3IgYWxsIHBhY2thZ2UgY29uZmln
cy4KLSAgICAgICAgICAgICAgICAgICAgICAgIHBrZ3NbcGtnT2JqLm5hbWVdID0gewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHBrZ09iai5uYW1lLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGxvY2F0aW9uOiBsb2NhdGlvbiB8fCBwa2dPYmoubmFtZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvL1JlbW92ZSBsZWFkaW5nIGRvdCBpbiBtYWluLCBzbyBtYWlu
IHBhdGhzIGFyZSBub3JtYWxpemVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vYW5k
IHJlbW92ZSBhbnkgdHJhaWxpbmcgLmpzLCBzaW5jZSBkaWZmZXJlbnQgcGFja2FnZQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vZW52cyBoYXZlIGRpZmZlcmVudCBjb252ZW50aW9uczog
c29tZSB1c2UgYSBtb2R1bGUgbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3Nv
bWUgdXNlIGEgZmlsZSBuYW1lLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1haW46IChw
a2dPYmoubWFpbiB8fCAnbWFpbicpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LnJlcGxhY2UoY3VyckRpclJlZ0V4cCwgJycpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLnJlcGxhY2UoanNTdWZmaXhSZWdFeHAsICcnKQotICAgICAgICAgICAgICAgICAgICAg
ICAgfTsKLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgLy9E
b25lIHdpdGggbW9kaWZpY2F0aW9ucywgYXNzaW5nIHBhY2thZ2VzIGJhY2sgdG8gY29udGV4dCBj
b25maWcKLSAgICAgICAgICAgICAgICAgICAgY29uZmlnLnBrZ3MgPSBwa2dzOwotICAgICAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgICAgIC8vSWYgdGhlcmUgYXJlIGFueSAid2FpdGluZyB0
byBleGVjdXRlIiBtb2R1bGVzIGluIHRoZSByZWdpc3RyeSwKLSAgICAgICAgICAgICAgICAvL3Vw
ZGF0ZSB0aGUgbWFwcyBmb3IgdGhlbSwgc2luY2UgdGhlaXIgaW5mbywgbGlrZSBVUkxzIHRvIGxv
YWQsCi0gICAgICAgICAgICAgICAgLy9tYXkgaGF2ZSBjaGFuZ2VkLgotICAgICAgICAgICAgICAg
IGVhY2hQcm9wKHJlZ2lzdHJ5LCBmdW5jdGlvbiAobW9kLCBpZCkgewotICAgICAgICAgICAgICAg
ICAgICAvL0lmIG1vZHVsZSBhbHJlYWR5IGhhcyBpbml0IGNhbGxlZCwgc2luY2UgaXQgaXMgdG9v
Ci0gICAgICAgICAgICAgICAgICAgIC8vbGF0ZSB0byBtb2RpZnkgdGhlbSwgYW5kIGlnbm9yZSB1
bm5vcm1hbGl6ZWQgb25lcwotICAgICAgICAgICAgICAgICAgICAvL3NpbmNlIHRoZXkgYXJlIHRy
YW5zaWVudC4KLSAgICAgICAgICAgICAgICAgICAgaWYgKCFtb2QuaW5pdGVkICYmICFtb2QubWFw
LnVubm9ybWFsaXplZCkgewotICAgICAgICAgICAgICAgICAgICAgICAgbW9kLm1hcCA9IG1ha2VN
b2R1bGVNYXAoaWQpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSk7
Ci0KLSAgICAgICAgICAgICAgICAvL0lmIGEgZGVwcyBhcnJheSBvciBhIGNvbmZpZyBjYWxsYmFj
ayBpcyBzcGVjaWZpZWQsIHRoZW4gY2FsbAotICAgICAgICAgICAgICAgIC8vcmVxdWlyZSB3aXRo
IHRob3NlIGFyZ3MuIFRoaXMgaXMgdXNlZnVsIHdoZW4gcmVxdWlyZSBpcyBkZWZpbmVkIGFzIGEK
LSAgICAgICAgICAgICAgICAvL2NvbmZpZyBvYmplY3QgYmVmb3JlIHJlcXVpcmUuanMgaXMgbG9h
ZGVkLgotICAgICAgICAgICAgICAgIGlmIChjZmcuZGVwcyB8fCBjZmcuY2FsbGJhY2spIHsKLSAg
ICAgICAgICAgICAgICAgICAgY29udGV4dC5yZXF1aXJlKGNmZy5kZXBzIHx8IFtdLCBjZmcuY2Fs
bGJhY2spOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0sCi0KLSAgICAgICAgICAg
IG1ha2VTaGltRXhwb3J0czogZnVuY3Rpb24gKHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgZnVu
Y3Rpb24gZm4oKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciByZXQ7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmICh2YWx1ZS5pbml0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXQgPSB2
YWx1ZS5pbml0LmFwcGx5KGdsb2JhbCwgYXJndW1lbnRzKTsKLSAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0IHx8ICh2YWx1ZS5leHBvcnRzICYmIGdl
dEdsb2JhbCh2YWx1ZS5leHBvcnRzKSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIHJldHVybiBmbjsKLSAgICAgICAgICAgIH0sCi0KLSAgICAgICAgICAgIG1ha2VSZXF1aXJl
OiBmdW5jdGlvbiAocmVsTWFwLCBvcHRpb25zKSB7Ci0gICAgICAgICAgICAgICAgb3B0aW9ucyA9
IG9wdGlvbnMgfHwge307Ci0KLSAgICAgICAgICAgICAgICBmdW5jdGlvbiBsb2NhbFJlcXVpcmUo
ZGVwcywgY2FsbGJhY2ssIGVycmJhY2spIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGlkLCBt
YXAsIHJlcXVpcmVNb2Q7Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMuZW5hYmxl
QnVpbGRDYWxsYmFjayAmJiBjYWxsYmFjayAmJiBpc0Z1bmN0aW9uKGNhbGxiYWNrKSkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2suX19yZXF1aXJlSnNCdWlsZCA9IHRydWU7Ci0g
ICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGRl
cHMgPT09ICdzdHJpbmcnKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNGdW5jdGlv
bihjYWxsYmFjaykpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL0ludmFsaWQgY2Fs
bAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvbkVycm9yKG1ha2VFcnJvcign
cmVxdWlyZWFyZ3MnLCAnSW52YWxpZCByZXF1aXJlIGNhbGwnKSwgZXJyYmFjayk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vSWYgcmVxdWly
ZXxleHBvcnRzfG1vZHVsZSBhcmUgcmVxdWVzdGVkLCBnZXQgdGhlCi0gICAgICAgICAgICAgICAg
ICAgICAgICAvL3ZhbHVlIGZvciB0aGVtIGZyb20gdGhlIHNwZWNpYWwgaGFuZGxlcnMuIENhdmVh
dDoKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vdGhpcyBvbmx5IHdvcmtzIHdoaWxlIG1vZHVs
ZSBpcyBiZWluZyBkZWZpbmVkLgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlbE1hcCAm
JiBoYXNQcm9wKGhhbmRsZXJzLCBkZXBzKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBoYW5kbGVyc1tkZXBzXShyZWdpc3RyeVtyZWxNYXAuaWRdKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgLy9TeW5jaHJvbm91cyBh
Y2Nlc3MgdG8gb25lIG1vZHVsZS4gSWYgcmVxdWlyZS5nZXQgaXMKLSAgICAgICAgICAgICAgICAg
ICAgICAgIC8vYXZhaWxhYmxlIChhcyBpbiB0aGUgTm9kZSBhZGFwdGVyKSwgcHJlZmVyIHRoYXQu
Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVxLmdldCkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiByZXEuZ2V0KGNvbnRleHQsIGRlcHMsIHJlbE1hcCwgbG9jYWxS
ZXF1aXJlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAg
ICAgICAgLy9Ob3JtYWxpemUgbW9kdWxlIG5hbWUsIGlmIGl0IGNvbnRhaW5zIC4gb3IgLi4KLSAg
ICAgICAgICAgICAgICAgICAgICAgIG1hcCA9IG1ha2VNb2R1bGVNYXAoZGVwcywgcmVsTWFwLCBm
YWxzZSwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZCA9IG1hcC5pZDsKLQotICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCFoYXNQcm9wKGRlZmluZWQsIGlkKSkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvbkVycm9yKG1ha2VFcnJvcignbm90bG9hZGVk
JywgJ01vZHVsZSBuYW1lICInICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZCArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyIgaGFz
IG5vdCBiZWVuIGxvYWRlZCB5ZXQgZm9yIGNvbnRleHQ6ICcgKwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHROYW1lICsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAocmVsTWFwID8gJycgOiAnLiBVc2UgcmVxdWlyZShbXSknKSkp
OwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGRlZmluZWRbaWRdOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAg
ICAgICAgLy9HcmFiIGRlZmluZXMgd2FpdGluZyBpbiB0aGUgZ2xvYmFsIHF1ZXVlLgotICAgICAg
ICAgICAgICAgICAgICBpbnRha2VEZWZpbmVzKCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgLy9N
YXJrIGFsbCB0aGUgZGVwZW5kZW5jaWVzIGFzIG5lZWRpbmcgdG8gYmUgbG9hZGVkLgotICAgICAg
ICAgICAgICAgICAgICBjb250ZXh0Lm5leHRUaWNrKGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIC8vU29tZSBkZWZpbmVzIGNvdWxkIGhhdmUgYmVlbiBhZGRlZCBzaW5jZSB0
aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vcmVxdWlyZSBjYWxsLCBjb2xsZWN0IHRoZW0u
Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnRha2VEZWZpbmVzKCk7Ci0KLSAgICAgICAgICAg
ICAgICAgICAgICAgIHJlcXVpcmVNb2QgPSBnZXRNb2R1bGUobWFrZU1vZHVsZU1hcChudWxsLCBy
ZWxNYXApKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgLy9TdG9yZSBpZiBtYXAgY29uZmln
IHNob3VsZCBiZSBhcHBsaWVkIHRvIHRoaXMgcmVxdWlyZQotICAgICAgICAgICAgICAgICAgICAg
ICAgLy9jYWxsIGZvciBkZXBlbmRlbmNpZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICByZXF1
aXJlTW9kLnNraXBNYXAgPSBvcHRpb25zLnNraXBNYXA7Ci0KLSAgICAgICAgICAgICAgICAgICAg
ICAgIHJlcXVpcmVNb2QuaW5pdChkZXBzLCBjYWxsYmFjaywgZXJyYmFjaywgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ6IHRydWUKLSAgICAgICAgICAgICAgICAgICAgICAg
IH0pOwotCi0gICAgICAgICAgICAgICAgICAgICAgICBjaGVja0xvYWRlZCgpOwotICAgICAgICAg
ICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9jYWxSZXF1aXJl
OwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIG1peGluKGxvY2FsUmVxdWly
ZSwgewotICAgICAgICAgICAgICAgICAgICBpc0Jyb3dzZXI6IGlzQnJvd3NlciwKLQotICAgICAg
ICAgICAgICAgICAgICAvKioKLSAgICAgICAgICAgICAgICAgICAgICogQ29udmVydHMgYSBtb2R1
bGUgbmFtZSArIC5leHRlbnNpb24gaW50byBhbiBVUkwgcGF0aC4KLSAgICAgICAgICAgICAgICAg
ICAgICogKlJlcXVpcmVzKiB0aGUgdXNlIG9mIGEgbW9kdWxlIG5hbWUuIEl0IGRvZXMgbm90IHN1
cHBvcnQgdXNpbmcKLSAgICAgICAgICAgICAgICAgICAgICogcGxhaW4gVVJMcyBsaWtlIG5hbWVU
b1VybC4KLSAgICAgICAgICAgICAgICAgICAgICovCi0gICAgICAgICAgICAgICAgICAgIHRvVXJs
OiBmdW5jdGlvbiAobW9kdWxlTmFtZVBsdXNFeHQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHZhciBleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBtb2R1bGVOYW1l
UGx1c0V4dC5sYXN0SW5kZXhPZignLicpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
Z21lbnQgPSBtb2R1bGVOYW1lUGx1c0V4dC5zcGxpdCgnLycpWzBdLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlzUmVsYXRpdmUgPSBzZWdtZW50ID09PSAnLicgfHwgc2VnbWVudCA9PT0g
Jy4uJzsKLQotICAgICAgICAgICAgICAgICAgICAgICAgLy9IYXZlIGEgZmlsZSBleHRlbnNpb24g
YWxpYXMsIGFuZCBpdCBpcyBub3QgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAvL2RvdHMg
ZnJvbSBhIHJlbGF0aXZlIHBhdGguCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXgg
IT09IC0xICYmICghaXNSZWxhdGl2ZSB8fCBpbmRleCA+IDEpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZXh0ID0gbW9kdWxlTmFtZVBsdXNFeHQuc3Vic3RyaW5nKGluZGV4LCBtb2R1
bGVOYW1lUGx1c0V4dC5sZW5ndGgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVs
ZU5hbWVQbHVzRXh0ID0gbW9kdWxlTmFtZVBsdXNFeHQuc3Vic3RyaW5nKDAsIGluZGV4KTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGNvbnRleHQubmFtZVRvVXJsKG5vcm1hbGl6ZShtb2R1bGVOYW1lUGx1c0V4dCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbE1hcCAmJiByZWxNYXAu
aWQsIHRydWUpLCBleHQsICB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgfSwKLQotICAgICAg
ICAgICAgICAgICAgICBkZWZpbmVkOiBmdW5jdGlvbiAoaWQpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBoYXNQcm9wKGRlZmluZWQsIG1ha2VNb2R1bGVNYXAoaWQsIHJlbE1hcCwg
ZmFsc2UsIHRydWUpLmlkKTsKLSAgICAgICAgICAgICAgICAgICAgfSwKLQotICAgICAgICAgICAg
ICAgICAgICBzcGVjaWZpZWQ6IGZ1bmN0aW9uIChpZCkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgaWQgPSBtYWtlTW9kdWxlTWFwKGlkLCByZWxNYXAsIGZhbHNlLCB0cnVlKS5pZDsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBoYXNQcm9wKGRlZmluZWQsIGlkKSB8fCBoYXNQcm9w
KHJlZ2lzdHJ5LCBpZCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9
KTsKLQotICAgICAgICAgICAgICAgIC8vT25seSBhbGxvdyB1bmRlZiBvbiB0b3AgbGV2ZWwgcmVx
dWlyZSBjYWxscwotICAgICAgICAgICAgICAgIGlmICghcmVsTWFwKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGxvY2FsUmVxdWlyZS51bmRlZiA9IGZ1bmN0aW9uIChpZCkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgLy9CaW5kIGFueSB3YWl0aW5nIGRlZmluZSgpIGNhbGxzIHRvIHRoaXMgY29u
dGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vZml4IGZvciAjNDA4Ci0gICAgICAgICAg
ICAgICAgICAgICAgICB0YWtlR2xvYmFsUXVldWUoKTsKLQotICAgICAgICAgICAgICAgICAgICAg
ICAgdmFyIG1hcCA9IG1ha2VNb2R1bGVNYXAoaWQsIHJlbE1hcCwgdHJ1ZSksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbW9kID0gZ2V0T3duKHJlZ2lzdHJ5LCBpZCk7Ci0KLSAgICAgICAg
ICAgICAgICAgICAgICAgIHJlbW92ZVNjcmlwdChpZCk7Ci0KLSAgICAgICAgICAgICAgICAgICAg
ICAgIGRlbGV0ZSBkZWZpbmVkW2lkXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB1
cmxGZXRjaGVkW21hcC51cmxdOwotICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHVuZGVm
RXZlbnRzW2lkXTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1vZCkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vSG9sZCBvbiB0byBsaXN0ZW5lcnMgaW4gY2FzZSB0aGUK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL21vZHVsZSB3aWxsIGJlIGF0dGVtcHRlZCB0
byBiZSByZWxvYWRlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vdXNpbmcgYSBkaWZm
ZXJlbnQgY29uZmlnLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtb2QuZXZlbnRz
LmRlZmluZWQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZFdmVudHNb
aWRdID0gbW9kLmV2ZW50czsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjbGVhblJlZ2lzdHJ5KGlkKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgICAgICByZXR1cm4gbG9jYWxSZXF1aXJlOwotICAgICAgICAgICAgfSwKLQot
ICAgICAgICAgICAgLyoqCi0gICAgICAgICAgICAgKiBDYWxsZWQgdG8gZW5hYmxlIGEgbW9kdWxl
IGlmIGl0IGlzIHN0aWxsIGluIHRoZSByZWdpc3RyeQotICAgICAgICAgICAgICogYXdhaXRpbmcg
ZW5hYmxlbWVudC4gQSBzZWNvbmQgYXJnLCBwYXJlbnQsIHRoZSBwYXJlbnQgbW9kdWxlLAotICAg
ICAgICAgICAgICogaXMgcGFzc2VkIGluIGZvciBjb250ZXh0LCB3aGVuIHRoaXMgbWV0aG9kIGlz
IG92ZXJyaWRlbiBieQotICAgICAgICAgICAgICogdGhlIG9wdGltaXplci4gTm90IHNob3duIGhl
cmUgdG8ga2VlcCBjb2RlIGNvbXBhY3QuCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIGVu
YWJsZTogZnVuY3Rpb24gKGRlcE1hcCkgewotICAgICAgICAgICAgICAgIHZhciBtb2QgPSBnZXRP
d24ocmVnaXN0cnksIGRlcE1hcC5pZCk7Ci0gICAgICAgICAgICAgICAgaWYgKG1vZCkgewotICAg
ICAgICAgICAgICAgICAgICBnZXRNb2R1bGUoZGVwTWFwKS5lbmFibGUoKTsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB9LAotCi0gICAgICAgICAgICAvKioKLSAgICAgICAgICAgICAq
IEludGVybmFsIG1ldGhvZCB1c2VkIGJ5IGVudmlyb25tZW50IGFkYXB0ZXJzIHRvIGNvbXBsZXRl
IGEgbG9hZCBldmVudC4KLSAgICAgICAgICAgICAqIEEgbG9hZCBldmVudCBjb3VsZCBiZSBhIHNj
cmlwdCBsb2FkIG9yIGp1c3QgYSBsb2FkIHBhc3MgZnJvbSBhIHN5bmNocm9ub3VzCi0gICAgICAg
ICAgICAgKiBsb2FkIGNhbGwuCi0gICAgICAgICAgICAgKiBAcGFyYW0ge1N0cmluZ30gbW9kdWxl
TmFtZSB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRvIHBvdGVudGlhbGx5IGNvbXBsZXRlLgotICAg
ICAgICAgICAgICovCi0gICAgICAgICAgICBjb21wbGV0ZUxvYWQ6IGZ1bmN0aW9uIChtb2R1bGVO
YW1lKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGZvdW5kLCBhcmdzLCBtb2QsCi0gICAgICAgICAg
ICAgICAgICAgIHNoaW0gPSBnZXRPd24oY29uZmlnLnNoaW0sIG1vZHVsZU5hbWUpIHx8IHt9LAot
ICAgICAgICAgICAgICAgICAgICBzaEV4cG9ydHMgPSBzaGltLmV4cG9ydHM7Ci0KLSAgICAgICAg
ICAgICAgICB0YWtlR2xvYmFsUXVldWUoKTsKLQotICAgICAgICAgICAgICAgIHdoaWxlIChkZWZR
dWV1ZS5sZW5ndGgpIHsKLSAgICAgICAgICAgICAgICAgICAgYXJncyA9IGRlZlF1ZXVlLnNoaWZ0
KCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhcmdzWzBdID09PSBudWxsKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBhcmdzWzBdID0gbW9kdWxlTmFtZTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIC8vSWYgYWxyZWFkeSBmb3VuZCBhbiBhbm9ueW1vdXMgbW9kdWxlIGFuZCBib3VuZCBp
dAotICAgICAgICAgICAgICAgICAgICAgICAgLy90byB0aGlzIG5hbWUsIHRoZW4gdGhpcyBpcyBz
b21lIG90aGVyIGFub24gbW9kdWxlCi0gICAgICAgICAgICAgICAgICAgICAgICAvL3dhaXRpbmcg
Zm9yIGl0cyBjb21wbGV0ZUxvYWQgdG8gZmlyZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChmb3VuZCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlOwot
ICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGFyZ3NbMF0gPT09IG1vZHVsZU5hbWUpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIC8vRm91bmQgbWF0Y2hpbmcgZGVmaW5lIGNhbGwgZm9y
IHRoaXMgc2NyaXB0IQotICAgICAgICAgICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlOwotICAg
ICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgY2FsbEdldE1vZHVsZShh
cmdzKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvL0RvIHRoaXMgYWZ0
ZXIgdGhlIGN5Y2xlIG9mIGNhbGxHZXRNb2R1bGUgaW4gY2FzZSB0aGUgcmVzdWx0Ci0gICAgICAg
ICAgICAgICAgLy9vZiB0aG9zZSBjYWxscy9pbml0IGNhbGxzIGNoYW5nZXMgdGhlIHJlZ2lzdHJ5
LgotICAgICAgICAgICAgICAgIG1vZCA9IGdldE93bihyZWdpc3RyeSwgbW9kdWxlTmFtZSk7Ci0K
LSAgICAgICAgICAgICAgICBpZiAoIWZvdW5kICYmICFoYXNQcm9wKGRlZmluZWQsIG1vZHVsZU5h
bWUpICYmIG1vZCAmJiAhbW9kLmluaXRlZCkgewotICAgICAgICAgICAgICAgICAgICBpZiAoY29u
ZmlnLmVuZm9yY2VEZWZpbmUgJiYgKCFzaEV4cG9ydHMgfHwgIWdldEdsb2JhbChzaEV4cG9ydHMp
KSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhhc1BhdGhGYWxsYmFjayhtb2R1bGVO
YW1lKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IG9uRXJyb3IobWFrZUVycm9yKCdub2RlZmluZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnTm8gZGVmaW5lIGNhbGwgZm9yICcgKyBtb2R1bGVOYW1lLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttb2R1bGVOYW1lXSkpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgICAgICAgICAgICAgLy9BIHNjcmlwdCB0aGF0IGRvZXMgbm90IGNhbGwgZGVm
aW5lKCksIHNvIGp1c3Qgc2ltdWxhdGUKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vdGhlIGNh
bGwgZm9yIGl0LgotICAgICAgICAgICAgICAgICAgICAgICAgY2FsbEdldE1vZHVsZShbbW9kdWxl
TmFtZSwgKHNoaW0uZGVwcyB8fCBbXSksIHNoaW0uZXhwb3J0c0ZuXSk7Ci0gICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBjaGVja0xvYWRl
ZCgpOwotICAgICAgICAgICAgfSwKLQotICAgICAgICAgICAgLyoqCi0gICAgICAgICAgICAgKiBD
b252ZXJ0cyBhIG1vZHVsZSBuYW1lIHRvIGEgZmlsZSBwYXRoLiBTdXBwb3J0cyBjYXNlcyB3aGVy
ZQotICAgICAgICAgICAgICogbW9kdWxlTmFtZSBtYXkgYWN0dWFsbHkgYmUganVzdCBhbiBVUkwu
Ci0gICAgICAgICAgICAgKiBOb3RlIHRoYXQgaXQgKipkb2VzIG5vdCoqIGNhbGwgbm9ybWFsaXpl
IG9uIHRoZSBtb2R1bGVOYW1lLAotICAgICAgICAgICAgICogaXQgaXMgYXNzdW1lZCB0byBoYXZl
IGFscmVhZHkgYmVlbiBub3JtYWxpemVkLiBUaGlzIGlzIGFuCi0gICAgICAgICAgICAgKiBpbnRl
cm5hbCBBUEksIG5vdCBhIHB1YmxpYyBvbmUuIFVzZSB0b1VybCBmb3IgdGhlIHB1YmxpYyBBUEku
Ci0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIG5hbWVUb1VybDogZnVuY3Rpb24gKG1vZHVs
ZU5hbWUsIGV4dCwgc2tpcEV4dCkgewotICAgICAgICAgICAgICAgIHZhciBwYXRocywgcGtncywg
cGtnLCBwa2dQYXRoLCBzeW1zLCBpLCBwYXJlbnRNb2R1bGUsIHVybCwKLSAgICAgICAgICAgICAg
ICAgICAgcGFyZW50UGF0aDsKLQotICAgICAgICAgICAgICAgIC8vSWYgYSBjb2xvbiBpcyBpbiB0
aGUgVVJMLCBpdCBpbmRpY2F0ZXMgYSBwcm90b2NvbCBpcyB1c2VkIGFuZCBpdCBpcyBqdXN0Ci0g
ICAgICAgICAgICAgICAgLy9hbiBVUkwgdG8gYSBmaWxlLCBvciBpZiBpdCBzdGFydHMgd2l0aCBh
IHNsYXNoLCBjb250YWlucyBhIHF1ZXJ5IGFyZyAoaS5lLiA/KQotICAgICAgICAgICAgICAgIC8v
b3IgZW5kcyB3aXRoIC5qcywgdGhlbiBhc3N1bWUgdGhlIHVzZXIgbWVhbnQgdG8gdXNlIGFuIHVy
bCBhbmQgbm90IGEgbW9kdWxlIGlkLgotICAgICAgICAgICAgICAgIC8vVGhlIHNsYXNoIGlzIGlt
cG9ydGFudCBmb3IgcHJvdG9jb2wtbGVzcyBVUkxzIGFzIHdlbGwgYXMgZnVsbCBwYXRocy4KLSAg
ICAgICAgICAgICAgICBpZiAocmVxLmpzRXh0UmVnRXhwLnRlc3QobW9kdWxlTmFtZSkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgLy9KdXN0IGEgcGxhaW4gcGF0aCwgbm90IG1vZHVsZSBuYW1lIGxv
b2t1cCwgc28ganVzdCByZXR1cm4gaXQuCi0gICAgICAgICAgICAgICAgICAgIC8vQWRkIGV4dGVu
c2lvbiBpZiBpdCBpcyBpbmNsdWRlZC4gVGhpcyBpcyBhIGJpdCB3b25reSwgb25seSBub24tLmpz
IHRoaW5ncyBwYXNzCi0gICAgICAgICAgICAgICAgICAgIC8vYW4gZXh0ZW5zaW9uLCB0aGlzIG1l
dGhvZCBwcm9iYWJseSBuZWVkcyB0byBiZSByZXdvcmtlZC4KLSAgICAgICAgICAgICAgICAgICAg
dXJsID0gbW9kdWxlTmFtZSArIChleHQgfHwgJycpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgICAgIC8vQSBtb2R1bGUgdGhhdCBuZWVkcyB0byBiZSBjb252ZXJ0
ZWQgdG8gYSBwYXRoLgotICAgICAgICAgICAgICAgICAgICBwYXRocyA9IGNvbmZpZy5wYXRoczsK
LSAgICAgICAgICAgICAgICAgICAgcGtncyA9IGNvbmZpZy5wa2dzOwotCi0gICAgICAgICAgICAg
ICAgICAgIHN5bXMgPSBtb2R1bGVOYW1lLnNwbGl0KCcvJyk7Ci0gICAgICAgICAgICAgICAgICAg
IC8vRm9yIGVhY2ggbW9kdWxlIG5hbWUgc2VnbWVudCwgc2VlIGlmIHRoZXJlIGlzIGEgcGF0aAot
ICAgICAgICAgICAgICAgICAgICAvL3JlZ2lzdGVyZWQgZm9yIGl0LiBTdGFydCB3aXRoIG1vc3Qg
c3BlY2lmaWMgbmFtZQotICAgICAgICAgICAgICAgICAgICAvL2FuZCB3b3JrIHVwIGZyb20gaXQu
Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IHN5bXMubGVuZ3RoOyBpID4gMDsgaSAtPSAx
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRNb2R1bGUgPSBzeW1zLnNsaWNlKDAs
IGkpLmpvaW4oJy8nKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHBrZyA9IGdldE93bihwa2dz
LCBwYXJlbnRNb2R1bGUpOwotICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50UGF0aCA9IGdl
dE93bihwYXRocywgcGFyZW50TW9kdWxlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChw
YXJlbnRQYXRoKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9JZiBhbiBhcnJheSwg
aXQgbWVhbnMgdGhlcmUgYXJlIGEgZmV3IGNob2ljZXMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy9DaG9vc2UgdGhlIG9uZSB0aGF0IGlzIGRlc2lyZWQKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoaXNBcnJheShwYXJlbnRQYXRoKSkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwYXJlbnRQYXRoID0gcGFyZW50UGF0aFswXTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ltcy5zcGxpY2Uo
MCwgaSwgcGFyZW50UGF0aCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHBrZykgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vSWYgbW9kdWxlIG5hbWUgaXMganVzdCB0aGUgcGFja2FnZSBuYW1lLCB0
aGVuIGxvb2tpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2ZvciB0aGUgbWFpbiBt
b2R1bGUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1vZHVsZU5hbWUgPT09IHBr
Zy5uYW1lKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBrZ1BhdGggPSBwa2cu
bG9jYXRpb24gKyAnLycgKyBwa2cubWFpbjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwa2dQYXRoID0gcGtnLmxv
Y2F0aW9uOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzeW1zLnNwbGljZSgwLCBpLCBwa2dQYXRoKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIC8vSm9pbiB0aGUgcGF0aCBwYXJ0cyB0
b2dldGhlciwgdGhlbiBmaWd1cmUgb3V0IGlmIGJhc2VVcmwgaXMgbmVlZGVkLgotICAgICAgICAg
ICAgICAgICAgICB1cmwgPSBzeW1zLmpvaW4oJy8nKTsKLSAgICAgICAgICAgICAgICAgICAgdXJs
ICs9IChleHQgfHwgKC9eZGF0YVw6fFw/Ly50ZXN0KHVybCkgfHwgc2tpcEV4dCA/ICcnIDogJy5q
cycpKTsKLSAgICAgICAgICAgICAgICAgICAgdXJsID0gKHVybC5jaGFyQXQoMCkgPT09ICcvJyB8
fCB1cmwubWF0Y2goL15bXHdcK1wuXC1dKzovKSA/ICcnIDogY29uZmlnLmJhc2VVcmwpICsgdXJs
OwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHJldHVybiBjb25maWcudXJs
QXJncyA/IHVybCArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1
cmwuaW5kZXhPZignPycpID09PSAtMSA/ICc/JyA6ICcmJykgKwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25maWcudXJsQXJncykgOiB1cmw7Ci0gICAgICAgICAg
ICB9LAotCi0gICAgICAgICAgICAvL0RlbGVnYXRlcyB0byByZXEubG9hZC4gQnJva2VuIG91dCBh
cyBhIHNlcGFyYXRlIGZ1bmN0aW9uIHRvCi0gICAgICAgICAgICAvL2FsbG93IG92ZXJyaWRpbmcg
aW4gdGhlIG9wdGltaXplci4KLSAgICAgICAgICAgIGxvYWQ6IGZ1bmN0aW9uIChpZCwgdXJsKSB7
Ci0gICAgICAgICAgICAgICAgcmVxLmxvYWQoY29udGV4dCwgaWQsIHVybCk7Ci0gICAgICAgICAg
ICB9LAotCi0gICAgICAgICAgICAvKioKLSAgICAgICAgICAgICAqIEV4ZWN1dGVzIGEgbW9kdWxl
IGNhbGxiYWNrIGZ1bmN0aW9uLiBCcm9rZW4gb3V0IGFzIGEgc2VwYXJhdGUgZnVuY3Rpb24KLSAg
ICAgICAgICAgICAqIHNvbGVseSB0byBhbGxvdyB0aGUgYnVpbGQgc3lzdGVtIHRvIHNlcXVlbmNl
IHRoZSBmaWxlcyBpbiB0aGUgYnVpbHQKLSAgICAgICAgICAgICAqIGxheWVyIGluIHRoZSByaWdo
dCBzZXF1ZW5jZS4KLSAgICAgICAgICAgICAqCi0gICAgICAgICAgICAgKiBAcHJpdmF0ZQotICAg
ICAgICAgICAgICovCi0gICAgICAgICAgICBleGVjQ2I6IGZ1bmN0aW9uIChuYW1lLCBjYWxsYmFj
aywgYXJncywgZXhwb3J0cykgewotICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjay5hcHBs
eShleHBvcnRzLCBhcmdzKTsKLSAgICAgICAgICAgIH0sCi0KLSAgICAgICAgICAgIC8qKgotICAg
ICAgICAgICAgICogY2FsbGJhY2sgZm9yIHNjcmlwdCBsb2FkcywgdXNlZCB0byBjaGVjayBzdGF0
dXMgb2YgbG9hZGluZy4KLSAgICAgICAgICAgICAqCi0gICAgICAgICAgICAgKiBAcGFyYW0ge0V2
ZW50fSBldnQgdGhlIGV2ZW50IGZyb20gdGhlIGJyb3dzZXIgZm9yIHRoZSBzY3JpcHQKLSAgICAg
ICAgICAgICAqIHRoYXQgd2FzIGxvYWRlZC4KLSAgICAgICAgICAgICAqLwotICAgICAgICAgICAg
b25TY3JpcHRMb2FkOiBmdW5jdGlvbiAoZXZ0KSB7Ci0gICAgICAgICAgICAgICAgLy9Vc2luZyBj
dXJyZW50VGFyZ2V0IGluc3RlYWQgb2YgdGFyZ2V0IGZvciBGaXJlZm94IDIuMCdzIHNha2UuIE5v
dAotICAgICAgICAgICAgICAgIC8vYWxsIG9sZCBicm93c2VycyB3aWxsIGJlIHN1cHBvcnRlZCwg
YnV0IHRoaXMgb25lIHdhcyBlYXN5IGVub3VnaAotICAgICAgICAgICAgICAgIC8vdG8gc3VwcG9y
dCBhbmQgc3RpbGwgbWFrZXMgc2Vuc2UuCi0gICAgICAgICAgICAgICAgaWYgKGV2dC50eXBlID09
PSAnbG9hZCcgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgIChyZWFkeVJlZ0V4cC50ZXN0KChl
dnQuY3VycmVudFRhcmdldCB8fCBldnQuc3JjRWxlbWVudCkucmVhZHlTdGF0ZSkpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIC8vUmVzZXQgaW50ZXJhY3RpdmUgc2NyaXB0IHNvIGEgc2NyaXB0IG5v
ZGUgaXMgbm90IGhlbGQgb250byBmb3IKLSAgICAgICAgICAgICAgICAgICAgLy90byBsb25nLgot
ICAgICAgICAgICAgICAgICAgICBpbnRlcmFjdGl2ZVNjcmlwdCA9IG51bGw7Ci0KLSAgICAgICAg
ICAgICAgICAgICAgLy9QdWxsIG91dCB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIGFuZCB0aGUgY29u
dGV4dC4KLSAgICAgICAgICAgICAgICAgICAgdmFyIGRhdGEgPSBnZXRTY3JpcHREYXRhKGV2dCk7
Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuY29tcGxldGVMb2FkKGRhdGEuaWQpOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0sCi0KLSAgICAgICAgICAgIC8qKgotICAgICAg
ICAgICAgICogQ2FsbGJhY2sgZm9yIHNjcmlwdCBlcnJvcnMuCi0gICAgICAgICAgICAgKi8KLSAg
ICAgICAgICAgIG9uU2NyaXB0RXJyb3I6IGZ1bmN0aW9uIChldnQpIHsKLSAgICAgICAgICAgICAg
ICB2YXIgZGF0YSA9IGdldFNjcmlwdERhdGEoZXZ0KTsKLSAgICAgICAgICAgICAgICBpZiAoIWhh
c1BhdGhGYWxsYmFjayhkYXRhLmlkKSkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gb25F
cnJvcihtYWtlRXJyb3IoJ3NjcmlwdGVycm9yJywgJ1NjcmlwdCBlcnJvciBmb3I6ICcgKyBkYXRh
LmlkLCBldnQsIFtkYXRhLmlkXSkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0K
LSAgICAgICAgfTsKLQotICAgICAgICBjb250ZXh0LnJlcXVpcmUgPSBjb250ZXh0Lm1ha2VSZXF1
aXJlKCk7Ci0gICAgICAgIHJldHVybiBjb250ZXh0OwotICAgIH0KLQotICAgIC8qKgotICAgICAq
IE1haW4gZW50cnkgcG9pbnQuCi0gICAgICoKLSAgICAgKiBJZiB0aGUgb25seSBhcmd1bWVudCB0
byByZXF1aXJlIGlzIGEgc3RyaW5nLCB0aGVuIHRoZSBtb2R1bGUgdGhhdAotICAgICAqIGlzIHJl
cHJlc2VudGVkIGJ5IHRoYXQgc3RyaW5nIGlzIGZldGNoZWQgZm9yIHRoZSBhcHByb3ByaWF0ZSBj
b250ZXh0LgotICAgICAqCi0gICAgICogSWYgdGhlIGZpcnN0IGFyZ3VtZW50IGlzIGFuIGFycmF5
LCB0aGVuIGl0IHdpbGwgYmUgdHJlYXRlZCBhcyBhbiBhcnJheQotICAgICAqIG9mIGRlcGVuZGVu
Y3kgc3RyaW5nIG5hbWVzIHRvIGZldGNoLiBBbiBvcHRpb25hbCBmdW5jdGlvbiBjYWxsYmFjayBj
YW4KLSAgICAgKiBiZSBzcGVjaWZpZWQgdG8gZXhlY3V0ZSB3aGVuIGFsbCBvZiB0aG9zZSBkZXBl
bmRlbmNpZXMgYXJlIGF2YWlsYWJsZS4KLSAgICAgKgotICAgICAqIE1ha2UgYSBsb2NhbCByZXEg
dmFyaWFibGUgdG8gaGVscCBDYWphIGNvbXBsaWFuY2UgKGl0IGFzc3VtZXMgdGhpbmdzCi0gICAg
ICogb24gYSByZXF1aXJlIHRoYXQgYXJlIG5vdCBzdGFuZGFyZGl6ZWQpLCBhbmQgdG8gZ2l2ZSBh
IHNob3J0Ci0gICAgICogbmFtZSBmb3IgbWluaWZpY2F0aW9uL2xvY2FsIHNjb3BlIHVzZS4KLSAg
ICAgKi8KLSAgICByZXEgPSByZXF1aXJlanMgPSBmdW5jdGlvbiAoZGVwcywgY2FsbGJhY2ssIGVy
cmJhY2ssIG9wdGlvbmFsKSB7Ci0KLSAgICAgICAgLy9GaW5kIHRoZSByaWdodCBjb250ZXh0LCB1
c2UgZGVmYXVsdAotICAgICAgICB2YXIgY29udGV4dCwgY29uZmlnLAotICAgICAgICAgICAgY29u
dGV4dE5hbWUgPSBkZWZDb250ZXh0TmFtZTsKLQotICAgICAgICAvLyBEZXRlcm1pbmUgaWYgaGF2
ZSBjb25maWcgb2JqZWN0IGluIHRoZSBjYWxsLgotICAgICAgICBpZiAoIWlzQXJyYXkoZGVwcykg
JiYgdHlwZW9mIGRlcHMgIT09ICdzdHJpbmcnKSB7Ci0gICAgICAgICAgICAvLyBkZXBzIGlzIGEg
Y29uZmlnIG9iamVjdAotICAgICAgICAgICAgY29uZmlnID0gZGVwczsKLSAgICAgICAgICAgIGlm
IChpc0FycmF5KGNhbGxiYWNrKSkgewotICAgICAgICAgICAgICAgIC8vIEFkanVzdCBhcmdzIGlm
IHRoZXJlIGFyZSBkZXBlbmRlbmNpZXMKLSAgICAgICAgICAgICAgICBkZXBzID0gY2FsbGJhY2s7
Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2sgPSBlcnJiYWNrOwotICAgICAgICAgICAgICAgIGVy
cmJhY2sgPSBvcHRpb25hbDsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
ZGVwcyA9IFtdOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGNvbmZp
ZyAmJiBjb25maWcuY29udGV4dCkgewotICAgICAgICAgICAgY29udGV4dE5hbWUgPSBjb25maWcu
Y29udGV4dDsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnRleHQgPSBnZXRPd24oY29udGV4dHMs
IGNvbnRleHROYW1lKTsKLSAgICAgICAgaWYgKCFjb250ZXh0KSB7Ci0gICAgICAgICAgICBjb250
ZXh0ID0gY29udGV4dHNbY29udGV4dE5hbWVdID0gcmVxLnMubmV3Q29udGV4dChjb250ZXh0TmFt
ZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoY29uZmlnKSB7Ci0gICAgICAgICAgICBjb250
ZXh0LmNvbmZpZ3VyZShjb25maWcpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGNvbnRl
eHQucmVxdWlyZShkZXBzLCBjYWxsYmFjaywgZXJyYmFjayk7Ci0gICAgfTsKLQotICAgIC8qKgot
ICAgICAqIFN1cHBvcnQgcmVxdWlyZS5jb25maWcoKSB0byBtYWtlIGl0IGVhc2llciB0byBjb29w
ZXJhdGUgd2l0aCBvdGhlcgotICAgICAqIEFNRCBsb2FkZXJzIG9uIGdsb2JhbGx5IGFncmVlZCBu
YW1lcy4KLSAgICAgKi8KLSAgICByZXEuY29uZmlnID0gZnVuY3Rpb24gKGNvbmZpZykgewotICAg
ICAgICByZXR1cm4gcmVxKGNvbmZpZyk7Ci0gICAgfTsKLQotICAgIC8qKgotICAgICAqIEV4ZWN1
dGUgc29tZXRoaW5nIGFmdGVyIHRoZSBjdXJyZW50IHRpY2sKLSAgICAgKiBvZiB0aGUgZXZlbnQg
bG9vcC4gT3ZlcnJpZGUgZm9yIG90aGVyIGVudnMKLSAgICAgKiB0aGF0IGhhdmUgYSBiZXR0ZXIg
c29sdXRpb24gdGhhbiBzZXRUaW1lb3V0LgotICAgICAqIEBwYXJhbSAge0Z1bmN0aW9ufSBmbiBm
dW5jdGlvbiB0byBleGVjdXRlIGxhdGVyLgotICAgICAqLwotICAgIHJlcS5uZXh0VGljayA9IHR5
cGVvZiBzZXRUaW1lb3V0ICE9PSAndW5kZWZpbmVkJyA/IGZ1bmN0aW9uIChmbikgewotICAgICAg
ICBzZXRUaW1lb3V0KGZuLCA0KTsKLSAgICB9IDogZnVuY3Rpb24gKGZuKSB7IGZuKCk7IH07Ci0K
LSAgICAvKioKLSAgICAgKiBFeHBvcnQgcmVxdWlyZSBhcyBhIGdsb2JhbCwgYnV0IG9ubHkgaWYg
aXQgZG9lcyBub3QgYWxyZWFkeSBleGlzdC4KLSAgICAgKi8KLSAgICBpZiAoIXJlcXVpcmUpIHsK
LSAgICAgICAgcmVxdWlyZSA9IHJlcTsKLSAgICB9Ci0KLSAgICByZXEudmVyc2lvbiA9IHZlcnNp
b247Ci0KLSAgICAvL1VzZWQgdG8gZmlsdGVyIG91dCBkZXBlbmRlbmNpZXMgdGhhdCBhcmUgYWxy
ZWFkeSBwYXRocy4KLSAgICByZXEuanNFeHRSZWdFeHAgPSAvXlwvfDp8XD98XC5qcyQvOwotICAg
IHJlcS5pc0Jyb3dzZXIgPSBpc0Jyb3dzZXI7Ci0gICAgcyA9IHJlcS5zID0gewotICAgICAgICBj
b250ZXh0czogY29udGV4dHMsCi0gICAgICAgIG5ld0NvbnRleHQ6IG5ld0NvbnRleHQKLSAgICB9
OwotCi0gICAgLy9DcmVhdGUgZGVmYXVsdCBjb250ZXh0LgotICAgIHJlcSh7fSk7Ci0KLSAgICAv
L0V4cG9ydHMgc29tZSBjb250ZXh0LXNlbnNpdGl2ZSBtZXRob2RzIG9uIGdsb2JhbCByZXF1aXJl
LgotICAgIGVhY2goWwotICAgICAgICAndG9VcmwnLAotICAgICAgICAndW5kZWYnLAotICAgICAg
ICAnZGVmaW5lZCcsCi0gICAgICAgICdzcGVjaWZpZWQnCi0gICAgXSwgZnVuY3Rpb24gKHByb3Ap
IHsKLSAgICAgICAgLy9SZWZlcmVuY2UgZnJvbSBjb250ZXh0cyBpbnN0ZWFkIG9mIGVhcmx5IGJp
bmRpbmcgdG8gZGVmYXVsdCBjb250ZXh0LAotICAgICAgICAvL3NvIHRoYXQgZHVyaW5nIGJ1aWxk
cywgdGhlIGxhdGVzdCBpbnN0YW5jZSBvZiB0aGUgZGVmYXVsdCBjb250ZXh0Ci0gICAgICAgIC8v
d2l0aCBpdHMgY29uZmlnIGdldHMgdXNlZC4KLSAgICAgICAgcmVxW3Byb3BdID0gZnVuY3Rpb24g
KCkgewotICAgICAgICAgICAgdmFyIGN0eCA9IGNvbnRleHRzW2RlZkNvbnRleHROYW1lXTsKLSAg
ICAgICAgICAgIHJldHVybiBjdHgucmVxdWlyZVtwcm9wXS5hcHBseShjdHgsIGFyZ3VtZW50cyk7
Ci0gICAgICAgIH07Ci0gICAgfSk7Ci0KLSAgICBpZiAoaXNCcm93c2VyKSB7Ci0gICAgICAgIGhl
YWQgPSBzLmhlYWQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdOwot
ICAgICAgICAvL0lmIEJBU0UgdGFnIGlzIGluIHBsYXksIHVzaW5nIGFwcGVuZENoaWxkIGlzIGEg
cHJvYmxlbSBmb3IgSUU2LgotICAgICAgICAvL1doZW4gdGhhdCBicm93c2VyIGRpZXMsIHRoaXMg
Y2FuIGJlIHJlbW92ZWQuIERldGFpbHMgaW4gdGhpcyBqUXVlcnkgYnVnOgotICAgICAgICAvL2h0
dHA6Ly9kZXYuanF1ZXJ5LmNvbS90aWNrZXQvMjcwOQotICAgICAgICBiYXNlRWxlbWVudCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdiYXNlJylbMF07Ci0gICAgICAgIGlmIChiYXNl
RWxlbWVudCkgewotICAgICAgICAgICAgaGVhZCA9IHMuaGVhZCA9IGJhc2VFbGVtZW50LnBhcmVu
dE5vZGU7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBBbnkgZXJyb3JzIHRo
YXQgcmVxdWlyZSBleHBsaWNpdGx5IGdlbmVyYXRlcyB3aWxsIGJlIHBhc3NlZCB0byB0aGlzCi0g
ICAgICogZnVuY3Rpb24uIEludGVyY2VwdC9vdmVycmlkZSBpdCBpZiB5b3Ugd2FudCBjdXN0b20g
ZXJyb3IgaGFuZGxpbmcuCi0gICAgICogQHBhcmFtIHtFcnJvcn0gZXJyIHRoZSBlcnJvciBvYmpl
Y3QuCi0gICAgICovCi0gICAgcmVxLm9uRXJyb3IgPSBkZWZhdWx0T25FcnJvcjsKLQotICAgIC8q
KgotICAgICAqIENyZWF0ZXMgdGhlIG5vZGUgZm9yIHRoZSBsb2FkIGNvbW1hbmQuIE9ubHkgdXNl
ZCBpbiBicm93c2VyIGVudnMuCi0gICAgICovCi0gICAgcmVxLmNyZWF0ZU5vZGUgPSBmdW5jdGlv
biAoY29uZmlnLCBtb2R1bGVOYW1lLCB1cmwpIHsKLSAgICAgICAgdmFyIG5vZGUgPSBjb25maWcu
eGh0bWwgPwotICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDov
L3d3dy53My5vcmcvMTk5OS94aHRtbCcsICdodG1sOnNjcmlwdCcpIDoKLSAgICAgICAgICAgICAg
ICBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsKLSAgICAgICAgbm9kZS50eXBlID0g
Y29uZmlnLnNjcmlwdFR5cGUgfHwgJ3RleHQvamF2YXNjcmlwdCc7Ci0gICAgICAgIG5vZGUuY2hh
cnNldCA9ICd1dGYtOCc7Ci0gICAgICAgIG5vZGUuYXN5bmMgPSB0cnVlOwotICAgICAgICByZXR1
cm4gbm9kZTsKLSAgICB9OwotCi0gICAgLyoqCi0gICAgICogRG9lcyB0aGUgcmVxdWVzdCB0byBs
b2FkIGEgbW9kdWxlIGZvciB0aGUgYnJvd3NlciBjYXNlLgotICAgICAqIE1ha2UgdGhpcyBhIHNl
cGFyYXRlIGZ1bmN0aW9uIHRvIGFsbG93IG90aGVyIGVudmlyb25tZW50cwotICAgICAqIHRvIG92
ZXJyaWRlIGl0LgotICAgICAqCi0gICAgICogQHBhcmFtIHtPYmplY3R9IGNvbnRleHQgdGhlIHJl
cXVpcmUgY29udGV4dCB0byBmaW5kIHN0YXRlLgotICAgICAqIEBwYXJhbSB7U3RyaW5nfSBtb2R1
bGVOYW1lIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUuCi0gICAgICogQHBhcmFtIHtPYmplY3R9IHVy
bCB0aGUgVVJMIHRvIHRoZSBtb2R1bGUuCi0gICAgICovCi0gICAgcmVxLmxvYWQgPSBmdW5jdGlv
biAoY29udGV4dCwgbW9kdWxlTmFtZSwgdXJsKSB7Ci0gICAgICAgIHZhciBjb25maWcgPSAoY29u
dGV4dCAmJiBjb250ZXh0LmNvbmZpZykgfHwge30sCi0gICAgICAgICAgICBub2RlOwotICAgICAg
ICBpZiAoaXNCcm93c2VyKSB7Ci0gICAgICAgICAgICAvL0luIHRoZSBicm93c2VyIHNvIHVzZSBh
IHNjcmlwdCB0YWcKLSAgICAgICAgICAgIG5vZGUgPSByZXEuY3JlYXRlTm9kZShjb25maWcsIG1v
ZHVsZU5hbWUsIHVybCk7Ci0KLSAgICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKCdkYXRhLXJl
cXVpcmVjb250ZXh0JywgY29udGV4dC5jb250ZXh0TmFtZSk7Ci0gICAgICAgICAgICBub2RlLnNl
dEF0dHJpYnV0ZSgnZGF0YS1yZXF1aXJlbW9kdWxlJywgbW9kdWxlTmFtZSk7Ci0KLSAgICAgICAg
ICAgIC8vU2V0IHVwIGxvYWQgbGlzdGVuZXIuIFRlc3QgYXR0YWNoRXZlbnQgZmlyc3QgYmVjYXVz
ZSBJRTkgaGFzCi0gICAgICAgICAgICAvL2Egc3VidGxlIGlzc3VlIGluIGl0cyBhZGRFdmVudExp
c3RlbmVyIGFuZCBzY3JpcHQgb25sb2FkIGZpcmluZ3MKLSAgICAgICAgICAgIC8vdGhhdCBkbyBu
b3QgbWF0Y2ggdGhlIGJlaGF2aW9yIG9mIGFsbCBvdGhlciBicm93c2VycyB3aXRoCi0gICAgICAg
ICAgICAvL2FkZEV2ZW50TGlzdGVuZXIgc3VwcG9ydCwgd2hpY2ggZmlyZSB0aGUgb25sb2FkIGV2
ZW50IGZvciBhCi0gICAgICAgICAgICAvL3NjcmlwdCByaWdodCBhZnRlciB0aGUgc2NyaXB0IGV4
ZWN1dGlvbi4gU2VlOgotICAgICAgICAgICAgLy9odHRwczovL2Nvbm5lY3QubWljcm9zb2Z0LmNv
bS9JRS9mZWVkYmFjay9kZXRhaWxzLzY0ODA1Ny9zY3JpcHQtb25sb2FkLWV2ZW50LWlzLW5vdC1m
aXJlZC1pbW1lZGlhdGVseS1hZnRlci1zY3JpcHQtZXhlY3V0aW9uCi0gICAgICAgICAgICAvL1VO
Rk9SVFVOQVRFTFkgT3BlcmEgaW1wbGVtZW50cyBhdHRhY2hFdmVudCBidXQgZG9lcyBub3QgZm9s
bG93IHRoZSBzY3JpcHQKLSAgICAgICAgICAgIC8vc2NyaXB0IGV4ZWN1dGlvbiBtb2RlLgotICAg
ICAgICAgICAgaWYgKG5vZGUuYXR0YWNoRXZlbnQgJiYKLSAgICAgICAgICAgICAgICAgICAgLy9D
aGVjayBpZiBub2RlLmF0dGFjaEV2ZW50IGlzIGFydGlmaWNpYWxseSBhZGRlZCBieSBjdXN0b20g
c2NyaXB0IG9yCi0gICAgICAgICAgICAgICAgICAgIC8vbmF0aXZlbHkgc3VwcG9ydGVkIGJ5IGJy
b3dzZXIKLSAgICAgICAgICAgICAgICAgICAgLy9yZWFkIGh0dHBzOi8vZ2l0aHViLmNvbS9qcmJ1
cmtlL3JlcXVpcmVqcy9pc3N1ZXMvMTg3Ci0gICAgICAgICAgICAgICAgICAgIC8vaWYgd2UgY2Fu
IE5PVCBmaW5kIFtuYXRpdmUgY29kZV0gdGhlbiBpdCBtdXN0IE5PVCBuYXRpdmVseSBzdXBwb3J0
ZWQuCi0gICAgICAgICAgICAgICAgICAgIC8vaW4gSUU4LCBub2RlLmF0dGFjaEV2ZW50IGRvZXMg
bm90IGhhdmUgdG9TdHJpbmcoKQotICAgICAgICAgICAgICAgICAgICAvL05vdGUgdGhlIHRlc3Qg
Zm9yICJbbmF0aXZlIGNvZGUiIHdpdGggbm8gY2xvc2luZyBicmFjZSwgc2VlOgotICAgICAgICAg
ICAgICAgICAgICAvL2h0dHBzOi8vZ2l0aHViLmNvbS9qcmJ1cmtlL3JlcXVpcmVqcy9pc3N1ZXMv
MjczCi0gICAgICAgICAgICAgICAgICAgICEobm9kZS5hdHRhY2hFdmVudC50b1N0cmluZyAmJiBu
b2RlLmF0dGFjaEV2ZW50LnRvU3RyaW5nKCkuaW5kZXhPZignW25hdGl2ZSBjb2RlJykgPCAwKSAm
JgotICAgICAgICAgICAgICAgICAgICAhaXNPcGVyYSkgewotICAgICAgICAgICAgICAgIC8vUHJv
YmFibHkgSUUuIElFIChhdCBsZWFzdCA2LTgpIGRvIG5vdCBmaXJlCi0gICAgICAgICAgICAgICAg
Ly9zY3JpcHQgb25sb2FkIHJpZ2h0IGFmdGVyIGV4ZWN1dGluZyB0aGUgc2NyaXB0LCBzbwotICAg
ICAgICAgICAgICAgIC8vd2UgY2Fubm90IHRpZSB0aGUgYW5vbnltb3VzIGRlZmluZSBjYWxsIHRv
IGEgbmFtZS4KLSAgICAgICAgICAgICAgICAvL0hvd2V2ZXIsIElFIHJlcG9ydHMgdGhlIHNjcmlw
dCBhcyBiZWluZyBpbiAnaW50ZXJhY3RpdmUnCi0gICAgICAgICAgICAgICAgLy9yZWFkeVN0YXRl
IGF0IHRoZSB0aW1lIG9mIHRoZSBkZWZpbmUgY2FsbC4KLSAgICAgICAgICAgICAgICB1c2VJbnRl
cmFjdGl2ZSA9IHRydWU7Ci0KLSAgICAgICAgICAgICAgICBub2RlLmF0dGFjaEV2ZW50KCdvbnJl
YWR5c3RhdGVjaGFuZ2UnLCBjb250ZXh0Lm9uU2NyaXB0TG9hZCk7Ci0gICAgICAgICAgICAgICAg
Ly9JdCB3b3VsZCBiZSBncmVhdCB0byBhZGQgYW4gZXJyb3IgaGFuZGxlciBoZXJlIHRvIGNhdGNo
Ci0gICAgICAgICAgICAgICAgLy80MDRzIGluIElFOSsuIEhvd2V2ZXIsIG9ucmVhZHlzdGF0ZWNo
YW5nZSB3aWxsIGZpcmUgYmVmb3JlCi0gICAgICAgICAgICAgICAgLy90aGUgZXJyb3IgaGFuZGxl
ciwgc28gdGhhdCBkb2VzIG5vdCBoZWxwLiBJZiBhZGRFdmVudExpc3RlbmVyCi0gICAgICAgICAg
ICAgICAgLy9pcyB1c2VkLCB0aGVuIElFIHdpbGwgZmlyZSBlcnJvciBiZWZvcmUgbG9hZCwgYnV0
IHdlIGNhbm5vdAotICAgICAgICAgICAgICAgIC8vdXNlIHRoYXQgcGF0aHdheSBnaXZlbiB0aGUg
Y29ubmVjdC5taWNyb3NvZnQuY29tIGlzc3VlCi0gICAgICAgICAgICAgICAgLy9tZW50aW9uZWQg
YWJvdmUgYWJvdXQgbm90IGRvaW5nIHRoZSAnc2NyaXB0IGV4ZWN1dGUsCi0gICAgICAgICAgICAg
ICAgLy90aGVuIGZpcmUgdGhlIHNjcmlwdCBsb2FkIGV2ZW50IGxpc3RlbmVyIGJlZm9yZSBleGVj
dXRlCi0gICAgICAgICAgICAgICAgLy9uZXh0IHNjcmlwdCcgdGhhdCBvdGhlciBicm93c2VycyBk
by4KLSAgICAgICAgICAgICAgICAvL0Jlc3QgaG9wZTogSUUxMCBmaXhlcyB0aGUgaXNzdWVzLAot
ICAgICAgICAgICAgICAgIC8vYW5kIHRoZW4gZGVzdHJveXMgYWxsIGluc3RhbGxzIG9mIElFIDYt
OS4KLSAgICAgICAgICAgICAgICAvL25vZGUuYXR0YWNoRXZlbnQoJ29uZXJyb3InLCBjb250ZXh0
Lm9uU2NyaXB0RXJyb3IpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBu
b2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBjb250ZXh0Lm9uU2NyaXB0TG9hZCwgZmFsc2Up
OwotICAgICAgICAgICAgICAgIG5vZGUuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCBjb250ZXh0
Lm9uU2NyaXB0RXJyb3IsIGZhbHNlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG5vZGUu
c3JjID0gdXJsOwotCi0gICAgICAgICAgICAvL0ZvciBzb21lIGNhY2hlIGNhc2VzIGluIElFIDYt
OCwgdGhlIHNjcmlwdCBleGVjdXRlcyBiZWZvcmUgdGhlIGVuZAotICAgICAgICAgICAgLy9vZiB0
aGUgYXBwZW5kQ2hpbGQgZXhlY3V0aW9uLCBzbyB0byB0aWUgYW4gYW5vbnltb3VzIGRlZmluZQot
ICAgICAgICAgICAgLy9jYWxsIHRvIHRoZSBtb2R1bGUgbmFtZSAod2hpY2ggaXMgc3RvcmVkIG9u
IHRoZSBub2RlKSwgaG9sZCBvbgotICAgICAgICAgICAgLy90byBhIHJlZmVyZW5jZSB0byB0aGlz
IG5vZGUsIGJ1dCBjbGVhciBhZnRlciB0aGUgRE9NIGluc2VydGlvbi4KLSAgICAgICAgICAgIGN1
cnJlbnRseUFkZGluZ1NjcmlwdCA9IG5vZGU7Ci0gICAgICAgICAgICBpZiAoYmFzZUVsZW1lbnQp
IHsKLSAgICAgICAgICAgICAgICBoZWFkLmluc2VydEJlZm9yZShub2RlLCBiYXNlRWxlbWVudCk7
Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGhlYWQuYXBwZW5kQ2hpbGQo
bm9kZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjdXJyZW50bHlBZGRpbmdTY3JpcHQg
PSBudWxsOwotCi0gICAgICAgICAgICByZXR1cm4gbm9kZTsKLSAgICAgICAgfSBlbHNlIGlmIChp
c1dlYldvcmtlcikgewotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAvL0luIGEg
d2ViIHdvcmtlciwgdXNlIGltcG9ydFNjcmlwdHMuIFRoaXMgaXMgbm90IGEgdmVyeQotICAgICAg
ICAgICAgICAgIC8vZWZmaWNpZW50IHVzZSBvZiBpbXBvcnRTY3JpcHRzLCBpbXBvcnRTY3JpcHRz
IHdpbGwgYmxvY2sgdW50aWwKLSAgICAgICAgICAgICAgICAvL2l0cyBzY3JpcHQgaXMgZG93bmxv
YWRlZCBhbmQgZXZhbHVhdGVkLiBIb3dldmVyLCBpZiB3ZWIgd29ya2VycwotICAgICAgICAgICAg
ICAgIC8vYXJlIGluIHBsYXksIHRoZSBleHBlY3RhdGlvbiB0aGF0IGEgYnVpbGQgaGFzIGJlZW4g
ZG9uZSBzbyB0aGF0Ci0gICAgICAgICAgICAgICAgLy9vbmx5IG9uZSBzY3JpcHQgbmVlZHMgdG8g
YmUgbG9hZGVkIGFueXdheS4gVGhpcyBtYXkgbmVlZCB0byBiZQotICAgICAgICAgICAgICAgIC8v
cmVldmFsdWF0ZWQgaWYgb3RoZXIgdXNlIGNhc2VzIGJlY29tZSBjb21tb24uCi0gICAgICAgICAg
ICAgICAgaW1wb3J0U2NyaXB0cyh1cmwpOwotCi0gICAgICAgICAgICAgICAgLy9BY2NvdW50IGZv
ciBhbm9ueW1vdXMgbW9kdWxlcwotICAgICAgICAgICAgICAgIGNvbnRleHQuY29tcGxldGVMb2Fk
KG1vZHVsZU5hbWUpOwotICAgICAgICAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICAgICAgICAg
IGNvbnRleHQub25FcnJvcihtYWtlRXJyb3IoJ2ltcG9ydHNjcmlwdHMnLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnaW1wb3J0U2NyaXB0cyBmYWlsZWQgZm9yICcgKwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlTmFtZSArICcgYXQgJyArIHVybCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgW21vZHVsZU5hbWVdKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICB9OwotCi0gICAgZnVuY3Rpb24gZ2V0SW50ZXJhY3RpdmVTY3JpcHQoKSB7Ci0gICAgICAgIGlm
IChpbnRlcmFjdGl2ZVNjcmlwdCAmJiBpbnRlcmFjdGl2ZVNjcmlwdC5yZWFkeVN0YXRlID09PSAn
aW50ZXJhY3RpdmUnKSB7Ci0gICAgICAgICAgICByZXR1cm4gaW50ZXJhY3RpdmVTY3JpcHQ7Ci0g
ICAgICAgIH0KLQotICAgICAgICBlYWNoUmV2ZXJzZShzY3JpcHRzKCksIGZ1bmN0aW9uIChzY3Jp
cHQpIHsKLSAgICAgICAgICAgIGlmIChzY3JpcHQucmVhZHlTdGF0ZSA9PT0gJ2ludGVyYWN0aXZl
JykgewotICAgICAgICAgICAgICAgIHJldHVybiAoaW50ZXJhY3RpdmVTY3JpcHQgPSBzY3JpcHQp
OwotICAgICAgICAgICAgfQotICAgICAgICB9KTsKLSAgICAgICAgcmV0dXJuIGludGVyYWN0aXZl
U2NyaXB0OwotICAgIH0KLQotICAgIC8vTG9vayBmb3IgYSBkYXRhLW1haW4gc2NyaXB0IGF0dHJp
YnV0ZSwgd2hpY2ggY291bGQgYWxzbyBhZGp1c3QgdGhlIGJhc2VVcmwuCi0gICAgaWYgKGlzQnJv
d3NlciAmJiAhY2ZnLnNraXBEYXRhTWFpbikgewotICAgICAgICAvL0ZpZ3VyZSBvdXQgYmFzZVVy
bC4gR2V0IGl0IGZyb20gdGhlIHNjcmlwdCB0YWcgd2l0aCByZXF1aXJlLmpzIGluIGl0LgotICAg
ICAgICBlYWNoUmV2ZXJzZShzY3JpcHRzKCksIGZ1bmN0aW9uIChzY3JpcHQpIHsKLSAgICAgICAg
ICAgIC8vU2V0IHRoZSAnaGVhZCcgd2hlcmUgd2UgY2FuIGFwcGVuZCBjaGlsZHJlbiBieQotICAg
ICAgICAgICAgLy91c2luZyB0aGUgc2NyaXB0J3MgcGFyZW50LgotICAgICAgICAgICAgaWYgKCFo
ZWFkKSB7Ci0gICAgICAgICAgICAgICAgaGVhZCA9IHNjcmlwdC5wYXJlbnROb2RlOwotICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICAvL0xvb2sgZm9yIGEgZGF0YS1tYWluIGF0dHJpYnV0ZSB0
byBzZXQgbWFpbiBzY3JpcHQgZm9yIHRoZSBwYWdlCi0gICAgICAgICAgICAvL3RvIGxvYWQuIElm
IGl0IGlzIHRoZXJlLCB0aGUgcGF0aCB0byBkYXRhIG1haW4gYmVjb21lcyB0aGUKLSAgICAgICAg
ICAgIC8vYmFzZVVybCwgaWYgaXQgaXMgbm90IGFscmVhZHkgc2V0LgotICAgICAgICAgICAgZGF0
YU1haW4gPSBzY3JpcHQuZ2V0QXR0cmlidXRlKCdkYXRhLW1haW4nKTsKLSAgICAgICAgICAgIGlm
IChkYXRhTWFpbikgewotICAgICAgICAgICAgICAgIC8vUHJlc2VydmUgZGF0YU1haW4gaW4gY2Fz
ZSBpdCBpcyBhIHBhdGggKGkuZS4gY29udGFpbnMgJz8nKQotICAgICAgICAgICAgICAgIG1haW5T
Y3JpcHQgPSBkYXRhTWFpbjsKLQotICAgICAgICAgICAgICAgIC8vU2V0IGZpbmFsIGJhc2VVcmwg
aWYgdGhlcmUgaXMgbm90IGFscmVhZHkgYW4gZXhwbGljaXQgb25lLgotICAgICAgICAgICAgICAg
IGlmICghY2ZnLmJhc2VVcmwpIHsKLSAgICAgICAgICAgICAgICAgICAgLy9QdWxsIG9mZiB0aGUg
ZGlyZWN0b3J5IG9mIGRhdGEtbWFpbiBmb3IgdXNlIGFzIHRoZQotICAgICAgICAgICAgICAgICAg
ICAvL2Jhc2VVcmwuCi0gICAgICAgICAgICAgICAgICAgIHNyYyA9IG1haW5TY3JpcHQuc3BsaXQo
Jy8nKTsKLSAgICAgICAgICAgICAgICAgICAgbWFpblNjcmlwdCA9IHNyYy5wb3AoKTsKLSAgICAg
ICAgICAgICAgICAgICAgc3ViUGF0aCA9IHNyYy5sZW5ndGggPyBzcmMuam9pbignLycpICArICcv
JyA6ICcuLyc7Ci0KLSAgICAgICAgICAgICAgICAgICAgY2ZnLmJhc2VVcmwgPSBzdWJQYXRoOwot
ICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIC8vU3RyaXAgb2ZmIGFueSB0cmFp
bGluZyAuanMgc2luY2UgbWFpblNjcmlwdCBpcyBub3cKLSAgICAgICAgICAgICAgICAvL2xpa2Ug
YSBtb2R1bGUgbmFtZS4KLSAgICAgICAgICAgICAgICBtYWluU2NyaXB0ID0gbWFpblNjcmlwdC5y
ZXBsYWNlKGpzU3VmZml4UmVnRXhwLCAnJyk7Ci0KLSAgICAgICAgICAgICAgICAgLy9JZiBtYWlu
U2NyaXB0IGlzIHN0aWxsIGEgcGF0aCwgZmFsbCBiYWNrIHRvIGRhdGFNYWluCi0gICAgICAgICAg
ICAgICAgaWYgKHJlcS5qc0V4dFJlZ0V4cC50ZXN0KG1haW5TY3JpcHQpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIG1haW5TY3JpcHQgPSBkYXRhTWFpbjsKLSAgICAgICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgICAgICAvL1B1dCB0aGUgZGF0YS1tYWluIHNjcmlwdCBpbiB0aGUgZmlsZXMgdG8g
bG9hZC4KLSAgICAgICAgICAgICAgICBjZmcuZGVwcyA9IGNmZy5kZXBzID8gY2ZnLmRlcHMuY29u
Y2F0KG1haW5TY3JpcHQpIDogW21haW5TY3JpcHRdOwotCi0gICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOwotICAgIH0KLQotICAgIC8qKgotICAg
ICAqIFRoZSBmdW5jdGlvbiB0aGF0IGhhbmRsZXMgZGVmaW5pdGlvbnMgb2YgbW9kdWxlcy4gRGlm
ZmVycyBmcm9tCi0gICAgICogcmVxdWlyZSgpIGluIHRoYXQgYSBzdHJpbmcgZm9yIHRoZSBtb2R1
bGUgc2hvdWxkIGJlIHRoZSBmaXJzdCBhcmd1bWVudCwKLSAgICAgKiBhbmQgdGhlIGZ1bmN0aW9u
IHRvIGV4ZWN1dGUgYWZ0ZXIgZGVwZW5kZW5jaWVzIGFyZSBsb2FkZWQgc2hvdWxkCi0gICAgICog
cmV0dXJuIGEgdmFsdWUgdG8gZGVmaW5lIHRoZSBtb2R1bGUgY29ycmVzcG9uZGluZyB0byB0aGUg
Zmlyc3QgYXJndW1lbnQncwotICAgICAqIG5hbWUuCi0gICAgICovCi0gICAgZGVmaW5lID0gZnVu
Y3Rpb24gKG5hbWUsIGRlcHMsIGNhbGxiYWNrKSB7Ci0gICAgICAgIHZhciBub2RlLCBjb250ZXh0
OwotCi0gICAgICAgIC8vQWxsb3cgZm9yIGFub255bW91cyBtb2R1bGVzCi0gICAgICAgIGlmICh0
eXBlb2YgbmFtZSAhPT0gJ3N0cmluZycpIHsKLSAgICAgICAgICAgIC8vQWRqdXN0IGFyZ3MgYXBw
cm9wcmlhdGVseQotICAgICAgICAgICAgY2FsbGJhY2sgPSBkZXBzOwotICAgICAgICAgICAgZGVw
cyA9IG5hbWU7Ci0gICAgICAgICAgICBuYW1lID0gbnVsbDsKLSAgICAgICAgfQotCi0gICAgICAg
IC8vVGhpcyBtb2R1bGUgbWF5IG5vdCBoYXZlIGRlcGVuZGVuY2llcwotICAgICAgICBpZiAoIWlz
QXJyYXkoZGVwcykpIHsKLSAgICAgICAgICAgIGNhbGxiYWNrID0gZGVwczsKLSAgICAgICAgICAg
IGRlcHMgPSBudWxsOwotICAgICAgICB9Ci0KLSAgICAgICAgLy9JZiBubyBuYW1lLCBhbmQgY2Fs
bGJhY2sgaXMgYSBmdW5jdGlvbiwgdGhlbiBmaWd1cmUgb3V0IGlmIGl0IGEKLSAgICAgICAgLy9D
b21tb25KUyB0aGluZyB3aXRoIGRlcGVuZGVuY2llcy4KLSAgICAgICAgaWYgKCFkZXBzICYmIGlz
RnVuY3Rpb24oY2FsbGJhY2spKSB7Ci0gICAgICAgICAgICBkZXBzID0gW107Ci0gICAgICAgICAg
ICAvL1JlbW92ZSBjb21tZW50cyBmcm9tIHRoZSBjYWxsYmFjayBzdHJpbmcsCi0gICAgICAgICAg
ICAvL2xvb2sgZm9yIHJlcXVpcmUgY2FsbHMsIGFuZCBwdWxsIHRoZW0gaW50byB0aGUgZGVwZW5k
ZW5jaWVzLAotICAgICAgICAgICAgLy9idXQgb25seSBpZiB0aGVyZSBhcmUgZnVuY3Rpb24gYXJn
cy4KLSAgICAgICAgICAgIGlmIChjYWxsYmFjay5sZW5ndGgpIHsKLSAgICAgICAgICAgICAgICBj
YWxsYmFjawotICAgICAgICAgICAgICAgICAgICAudG9TdHJpbmcoKQotICAgICAgICAgICAgICAg
ICAgICAucmVwbGFjZShjb21tZW50UmVnRXhwLCAnJykKLSAgICAgICAgICAgICAgICAgICAgLnJl
cGxhY2UoY2pzUmVxdWlyZVJlZ0V4cCwgZnVuY3Rpb24gKG1hdGNoLCBkZXApIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGRlcHMucHVzaChkZXApOwotICAgICAgICAgICAgICAgICAgICB9KTsK
LQotICAgICAgICAgICAgICAgIC8vTWF5IGJlIGEgQ29tbW9uSlMgdGhpbmcgZXZlbiB3aXRob3V0
IHJlcXVpcmUgY2FsbHMsIGJ1dCBzdGlsbAotICAgICAgICAgICAgICAgIC8vY291bGQgdXNlIGV4
cG9ydHMsIGFuZCBtb2R1bGUuIEF2b2lkIGRvaW5nIGV4cG9ydHMgYW5kIG1vZHVsZQotICAgICAg
ICAgICAgICAgIC8vd29yayB0aG91Z2ggaWYgaXQganVzdCBuZWVkcyByZXF1aXJlLgotICAgICAg
ICAgICAgICAgIC8vUkVRVUlSRVMgdGhlIGZ1bmN0aW9uIHRvIGV4cGVjdCB0aGUgQ29tbW9uSlMg
dmFyaWFibGVzIGluIHRoZQotICAgICAgICAgICAgICAgIC8vb3JkZXIgbGlzdGVkIGJlbG93Lgot
ICAgICAgICAgICAgICAgIGRlcHMgPSAoY2FsbGJhY2subGVuZ3RoID09PSAxID8gWydyZXF1aXJl
J10gOiBbJ3JlcXVpcmUnLCAnZXhwb3J0cycsICdtb2R1bGUnXSkuY29uY2F0KGRlcHMpOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLy9JZiBpbiBJRSA2LTggYW5kIGhpdCBh
biBhbm9ueW1vdXMgZGVmaW5lKCkgY2FsbCwgZG8gdGhlIGludGVyYWN0aXZlCi0gICAgICAgIC8v
d29yay4KLSAgICAgICAgaWYgKHVzZUludGVyYWN0aXZlKSB7Ci0gICAgICAgICAgICBub2RlID0g
Y3VycmVudGx5QWRkaW5nU2NyaXB0IHx8IGdldEludGVyYWN0aXZlU2NyaXB0KCk7Ci0gICAgICAg
ICAgICBpZiAobm9kZSkgewotICAgICAgICAgICAgICAgIGlmICghbmFtZSkgewotICAgICAgICAg
ICAgICAgICAgICBuYW1lID0gbm9kZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtcmVxdWlyZW1vZHVsZScp
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBjb250ZXh0ID0gY29udGV4dHNb
bm9kZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtcmVxdWlyZWNvbnRleHQnKV07Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLQotICAgICAgICAvL0Fsd2F5cyBzYXZlIG9mZiBldmFsdWF0aW5nIHRoZSBk
ZWYgY2FsbCB1bnRpbCB0aGUgc2NyaXB0IG9ubG9hZCBoYW5kbGVyLgotICAgICAgICAvL1RoaXMg
YWxsb3dzIG11bHRpcGxlIG1vZHVsZXMgdG8gYmUgaW4gYSBmaWxlIHdpdGhvdXQgcHJlbWF0dXJl
bHkKLSAgICAgICAgLy90cmFjaW5nIGRlcGVuZGVuY2llcywgYW5kIGFsbG93cyBmb3IgYW5vbnlt
b3VzIG1vZHVsZSBzdXBwb3J0LAotICAgICAgICAvL3doZXJlIHRoZSBtb2R1bGUgbmFtZSBpcyBu
b3Qga25vd24gdW50aWwgdGhlIHNjcmlwdCBvbmxvYWQgZXZlbnQKLSAgICAgICAgLy9vY2N1cnMu
IElmIG5vIGNvbnRleHQsIHVzZSB0aGUgZ2xvYmFsIHF1ZXVlLCBhbmQgZ2V0IGl0IHByb2Nlc3Nl
ZAotICAgICAgICAvL2luIHRoZSBvbnNjcmlwdCBsb2FkIGNhbGxiYWNrLgotICAgICAgICAoY29u
dGV4dCA/IGNvbnRleHQuZGVmUXVldWUgOiBnbG9iYWxEZWZRdWV1ZSkucHVzaChbbmFtZSwgZGVw
cywgY2FsbGJhY2tdKTsKLSAgICB9OwotCi0gICAgZGVmaW5lLmFtZCA9IHsKLSAgICAgICAgalF1
ZXJ5OiB0cnVlCi0gICAgfTsKLQotCi0gICAgLyoqCi0gICAgICogRXhlY3V0ZXMgdGhlIHRleHQu
IE5vcm1hbGx5IGp1c3QgdXNlcyBldmFsLCBidXQgY2FuIGJlIG1vZGlmaWVkCi0gICAgICogdG8g
dXNlIGEgYmV0dGVyLCBlbnZpcm9ubWVudC1zcGVjaWZpYyBjYWxsLiBPbmx5IHVzZWQgZm9yIHRy
YW5zcGlsaW5nCi0gICAgICogbG9hZGVyIHBsdWdpbnMsIG5vdCBmb3IgcGxhaW4gSlMgbW9kdWxl
cy4KLSAgICAgKiBAcGFyYW0ge1N0cmluZ30gdGV4dCB0aGUgdGV4dCB0byBleGVjdXRlL2V2YWx1
YXRlLgotICAgICAqLwotICAgIHJlcS5leGVjID0gZnVuY3Rpb24gKHRleHQpIHsKLSAgICAgICAg
Lypqc2xpbnQgZXZpbDogdHJ1ZSAqLwotICAgICAgICByZXR1cm4gZXZhbCh0ZXh0KTsKLSAgICB9
OwotCi0gICAgLy9TZXQgdXAgd2l0aCBjb25maWcgaW5mby4KLSAgICByZXEoY2ZnKTsKLX0odGhp
cykpOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9kZXBlbmRlbmN5LWV4YW1wbGVzL2ZsaWdodC9ib3dlcl9jb21wb25lbnRzL3RvZG9t
dmMtY29tbW9uL2Jhc2UuY3NzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9kZXBlbmRlbmN5LWV4YW1wbGVzL2ZsaWdodC9ib3dlcl9jb21wb25lbnRzL3Rv
ZG9tdmMtY29tbW9uL2Jhc2UuY3NzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNDVi
ZWY4MzE4OWM5MTVlZTc4ZWNhODQ3ZjkwOGM2ZDAyZDU4YTQwLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvZGVwZW5kZW5jeS1leGFtcGxlcy9mbGlnaHQvYm93ZXJfY29tcG9u
ZW50cy90b2RvbXZjLWNvbW1vbi9iYXNlLmNzcworKysgL2Rldi9udWxsCkBAIC0xLDU1NSArMCww
IEBACi1odG1sLAotYm9keSB7Ci0gICAgbWFyZ2luOiAwOwotICAgIHBhZGRpbmc6IDA7Ci19Ci0K
LWJ1dHRvbiB7Ci0gICAgbWFyZ2luOiAwOwotICAgIHBhZGRpbmc6IDA7Ci0gICAgYm9yZGVyOiAw
OwotICAgIGJhY2tncm91bmQ6IG5vbmU7Ci0gICAgZm9udC1zaXplOiAxMDAlOwotICAgIHZlcnRp
Y2FsLWFsaWduOiBiYXNlbGluZTsKLSAgICBmb250LWZhbWlseTogaW5oZXJpdDsKLSAgICBjb2xv
cjogaW5oZXJpdDsKLSAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7Ci0gICAgLW1zLWFwcGVh
cmFuY2U6IG5vbmU7Ci0gICAgLW8tYXBwZWFyYW5jZTogbm9uZTsKLSAgICBhcHBlYXJhbmNlOiBu
b25lOwotfQotCi1ib2R5IHsKLSAgICBmb250OiAxNHB4ICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZl
dGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7Ci0gICAgbGluZS1oZWlnaHQ6IDEuNGVtOwotICAgIGJh
Y2tncm91bmQ6ICNlYWVhZWEgdXJsKCdiZy5wbmcnKTsKLSAgICBjb2xvcjogIzRkNGQ0ZDsKLSAg
ICB3aWR0aDogNTUwcHg7Ci0gICAgbWFyZ2luOiAwIGF1dG87Ci0gICAgLXdlYmtpdC1mb250LXNt
b290aGluZzogYW50aWFsaWFzZWQ7Ci0gICAgLW1vei1mb250LXNtb290aGluZzogYW50aWFsaWFz
ZWQ7Ci0gICAgLW1zLWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKLSAgICAtby1mb250LXNt
b290aGluZzogYW50aWFsaWFzZWQ7Ci0gICAgZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwot
fQotCi1idXR0b24sCi1pbnB1dFt0eXBlPSJjaGVja2JveCJdIHsKLSAgb3V0bGluZTogbm9uZTsK
LX0KLQotI3RvZG9hcHAgewotICAgIGJhY2tncm91bmQ6ICNmZmY7Ci0gICAgYmFja2dyb3VuZDog
cmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkpOwotICAgIG1hcmdpbjogMTMwcHggMCA0MHB4IDA7Ci0g
ICAgYm9yZGVyOiAxcHggc29saWQgI2NjYzsKLSAgICBwb3NpdGlvbjogcmVsYXRpdmU7Ci0gICAg
Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMnB4OwotICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVz
OiAycHg7Ci0gICAgYm94LXNoYWRvdzogMCAycHggNnB4IDAgcmdiYSgwLCAwLCAwLCAwLjIpLAot
ICAgICAgICAgICAgICAgIDAgMjVweCA1MHB4IDAgcmdiYSgwLCAwLCAwLCAwLjE1KTsKLX0KLQot
I3RvZG9hcHA6YmVmb3JlIHsKLSAgICBjb250ZW50OiAnJzsKLSAgICBib3JkZXItbGVmdDogMXB4
IHNvbGlkICNmNWQ2ZDY7Ci0gICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI2Y1ZDZkNjsKLSAg
ICB3aWR0aDogMnB4OwotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICB0b3A6IDA7Ci0gICAg
bGVmdDogNDBweDsKLSAgICBoZWlnaHQ6IDEwMCU7Ci19Ci0KLSN0b2RvYXBwIGlucHV0Ojotd2Vi
a2l0LWlucHV0LXBsYWNlaG9sZGVyIHsKLSAgICBmb250LXN0eWxlOiBpdGFsaWM7Ci19Ci0KLSN0
b2RvYXBwIGlucHV0OjotbW96LXBsYWNlaG9sZGVyIHsKLSAgICBmb250LXN0eWxlOiBpdGFsaWM7
Ci0gICAgY29sb3I6ICNhOWE5YTk7Ci19Ci0KLSN0b2RvYXBwIGgxIHsKLSAgICBwb3NpdGlvbjog
YWJzb2x1dGU7Ci0gICAgdG9wOiAtMTIwcHg7Ci0gICAgd2lkdGg6IDEwMCU7Ci0gICAgZm9udC1z
aXplOiA3MHB4OwotICAgIGZvbnQtd2VpZ2h0OiBib2xkOwotICAgIHRleHQtYWxpZ246IGNlbnRl
cjsKLSAgICBjb2xvcjogI2IzYjNiMzsKLSAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAw
LjMpOwotICAgIHRleHQtc2hhZG93OiAtMXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpOwotICAg
IC13ZWJraXQtdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTsKLSAgICAtbW96LXRl
eHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7Ci0gICAgLW1zLXRleHQtcmVuZGVyaW5n
OiBvcHRpbWl6ZUxlZ2liaWxpdHk7Ci0gICAgLW8tdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVn
aWJpbGl0eTsKLSAgICB0ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5OwotfQotCi0j
aGVhZGVyIHsKLSAgICBwYWRkaW5nLXRvcDogMTVweDsKLSAgICBib3JkZXItcmFkaXVzOiBpbmhl
cml0OwotfQotCi0jaGVhZGVyOmJlZm9yZSB7Ci0gICAgY29udGVudDogJyc7Ci0gICAgcG9zaXRp
b246IGFic29sdXRlOwotICAgIHRvcDogMDsKLSAgICByaWdodDogMDsKLSAgICBsZWZ0OiAwOwot
ICAgIGhlaWdodDogMTVweDsKLSAgICB6LWluZGV4OiAyOwotICAgIGJvcmRlci1ib3R0b206IDFw
eCBzb2xpZCAjNmM2MTVjOwotICAgIGJhY2tncm91bmQ6ICM4ZDdkNzc7Ci0gICAgYmFja2dyb3Vu
ZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgZnJvbShy
Z2JhKDEzMiwgMTEwLCAxMDAsIDAuOCkpLHRvKHJnYmEoMTAxLCA4NCwgNzYsIDAuOCkpKTsKLSAg
ICBiYWNrZ3JvdW5kOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsIHJnYmEoMTMyLCAxMTAs
IDEwMCwgMC44KSwgcmdiYSgxMDEsIDg0LCA3NiwgMC44KSk7Ci0gICAgYmFja2dyb3VuZDogbGlu
ZWFyLWdyYWRpZW50KHRvcCwgcmdiYSgxMzIsIDExMCwgMTAwLCAwLjgpLCByZ2JhKDEwMSwgODQs
IDc2LCAwLjgpKTsKLSAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAxcHg7Ci0gICAgYm9yZGVy
LXRvcC1yaWdodC1yYWRpdXM6IDFweDsKLX0KLQotI25ldy10b2RvLAotLmVkaXQgewotICAgIHBv
c2l0aW9uOiByZWxhdGl2ZTsKLSAgICBtYXJnaW46IDA7Ci0gICAgd2lkdGg6IDEwMCU7Ci0gICAg
Zm9udC1zaXplOiAyNHB4OwotICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0OwotICAgIGxpbmUtaGVp
Z2h0OiAxLjRlbTsKLSAgICBib3JkZXI6IDA7Ci0gICAgb3V0bGluZTogbm9uZTsKLSAgICBjb2xv
cjogaW5oZXJpdDsKLSAgICBwYWRkaW5nOiA2cHg7Ci0gICAgYm9yZGVyOiAxcHggc29saWQgIzk5
OTsKLSAgICBib3gtc2hhZG93OiBpbnNldCAwIC0xcHggNXB4IDAgcmdiYSgwLCAwLCAwLCAwLjIp
OwotICAgIC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDsKLSAgICAtbXMtYm94LXNpemluZzog
Ym9yZGVyLWJveDsKLSAgICAtby1ib3gtc2l6aW5nOiBib3JkZXItYm94OwotICAgIGJveC1zaXpp
bmc6IGJvcmRlci1ib3g7Ci0gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7
Ci0gICAgLW1vei1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7Ci0gICAgLW1zLWZvbnQtc21v
b3RoaW5nOiBhbnRpYWxpYXNlZDsKLSAgICAtby1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7
Ci0gICAgZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwotfQotCi0jbmV3LXRvZG8gewotICAg
IHBhZGRpbmc6IDE2cHggMTZweCAxNnB4IDYwcHg7Ci0gICAgYm9yZGVyOiBub25lOwotICAgIGJh
Y2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4wMik7Ci0gICAgei1pbmRleDogMjsKLSAgICBib3gt
c2hhZG93OiBub25lOwotfQotCi0jbWFpbiB7Ci0gICAgcG9zaXRpb246IHJlbGF0aXZlOwotICAg
IHotaW5kZXg6IDI7Ci0gICAgYm9yZGVyLXRvcDogMXB4IGRvdHRlZCAjYWRhZGFkOwotfQotCi1s
YWJlbFtmb3I9J3RvZ2dsZS1hbGwnXSB7Ci0gICAgZGlzcGxheTogbm9uZTsKLX0KLQotI3RvZ2ds
ZS1hbGwgewotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICB0b3A6IC00MnB4OwotICAgIGxl
ZnQ6IC00cHg7Ci0gICAgd2lkdGg6IDQwcHg7Ci0gICAgdGV4dC1hbGlnbjogY2VudGVyOwotICAg
IC8qIE1vYmlsZSBTYWZhcmkgKi8KLSAgICBib3JkZXI6IG5vbmU7Ci19Ci0KLSN0b2dnbGUtYWxs
OmJlZm9yZSB7Ci0gICAgY29udGVudDogJ8K7JzsKLSAgICBmb250LXNpemU6IDI4cHg7Ci0gICAg
Y29sb3I6ICNkOWQ5ZDk7Ci0gICAgcGFkZGluZzogMCAyNXB4IDdweDsKLX0KLQotI3RvZ2dsZS1h
bGw6Y2hlY2tlZDpiZWZvcmUgewotICAgIGNvbG9yOiAjNzM3MzczOwotfQotCi0jdG9kby1saXN0
IHsKLSAgICBtYXJnaW46IDA7Ci0gICAgcGFkZGluZzogMDsKLSAgICBsaXN0LXN0eWxlOiBub25l
OwotfQotCi0jdG9kby1saXN0IGxpIHsKLSAgICBwb3NpdGlvbjogcmVsYXRpdmU7Ci0gICAgZm9u
dC1zaXplOiAyNHB4OwotICAgIGJvcmRlci1ib3R0b206IDFweCBkb3R0ZWQgI2NjYzsKLX0KLQot
I3RvZG8tbGlzdCBsaTpsYXN0LWNoaWxkIHsKLSAgICBib3JkZXItYm90dG9tOiBub25lOwotfQot
Ci0jdG9kby1saXN0IGxpLmVkaXRpbmcgewotICAgIGJvcmRlci1ib3R0b206IG5vbmU7Ci0gICAg
cGFkZGluZzogMDsKLX0KLQotI3RvZG8tbGlzdCBsaS5lZGl0aW5nIC5lZGl0IHsKLSAgICBkaXNw
bGF5OiBibG9jazsKLSAgICB3aWR0aDogNTA2cHg7Ci0gICAgcGFkZGluZzogMTNweCAxN3B4IDEy
cHggMTdweDsKLSAgICBtYXJnaW46IDAgMCAwIDQzcHg7Ci19Ci0KLSN0b2RvLWxpc3QgbGkuZWRp
dGluZyAudmlldyB7Ci0gICAgZGlzcGxheTogbm9uZTsKLX0KLQotI3RvZG8tbGlzdCBsaSAudG9n
Z2xlIHsKLSAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci0gICAgd2lkdGg6IDQwcHg7Ci0gICAgLyog
YXV0bywgc2luY2Ugbm9uLVdlYktpdCBicm93c2VycyBkb2Vzbid0IHN1cHBvcnQgaW5wdXQgc3R5
bGluZyAqLwotICAgIGhlaWdodDogYXV0bzsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAg
dG9wOiAwOwotICAgIGJvdHRvbTogMDsKLSAgICBtYXJnaW46IGF1dG8gMDsKLSAgICAvKiBNb2Jp
bGUgU2FmYXJpICovCi0gICAgYm9yZGVyOiBub25lOwotICAgIC13ZWJraXQtYXBwZWFyYW5jZTog
bm9uZTsKLSAgICAtbXMtYXBwZWFyYW5jZTogbm9uZTsKLSAgICAtby1hcHBlYXJhbmNlOiBub25l
OwotICAgIGFwcGVhcmFuY2U6IG5vbmU7Ci19Ci0KLSN0b2RvLWxpc3QgbGkgLnRvZ2dsZTphZnRl
ciB7Ci0gICAgY29udGVudDogJ+KclCc7Ci0gICAgLyogNDAgKyBhIGNvdXBsZSBvZiBwaXhlbHMg
dmlzdWFsIGFkanVzdG1lbnQgKi8KLSAgICBsaW5lLWhlaWdodDogNDNweDsKLSAgICBmb250LXNp
emU6IDIwcHg7Ci0gICAgY29sb3I6ICNkOWQ5ZDk7Ci0gICAgdGV4dC1zaGFkb3c6IDAgLTFweCAw
ICNiZmJmYmY7Ci19Ci0KLSN0b2RvLWxpc3QgbGkgLnRvZ2dsZTpjaGVja2VkOmFmdGVyIHsKLSAg
ICBjb2xvcjogIzg1YWRhNzsKLSAgICB0ZXh0LXNoYWRvdzogMCAxcHggMCAjNjY5OTkxOwotICAg
IGJvdHRvbTogMXB4OwotICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKLX0KLQotI3RvZG8tbGlzdCBs
aSBsYWJlbCB7Ci0gICAgd2hpdGUtc3BhY2U6IHByZTsKLSAgICB3b3JkLWJyZWFrOiBicmVhay13
b3JkOwotICAgIHBhZGRpbmc6IDE1cHggNjBweCAxNXB4IDE1cHg7Ci0gICAgbWFyZ2luLWxlZnQ6
IDQ1cHg7Ci0gICAgZGlzcGxheTogYmxvY2s7Ci0gICAgbGluZS1oZWlnaHQ6IDEuMjsKLSAgICAt
d2Via2l0LXRyYW5zaXRpb246IGNvbG9yIDAuNHM7Ci0gICAgdHJhbnNpdGlvbjogY29sb3IgMC40
czsKLX0KLQotI3RvZG8tbGlzdCBsaS5jb21wbGV0ZWQgbGFiZWwgewotICAgIGNvbG9yOiAjYTlh
OWE5OwotICAgIHRleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdoOwotfQotCi0jdG9kby1saXN0
IGxpIC5kZXN0cm95IHsKLSAgICBkaXNwbGF5OiBub25lOwotICAgIHBvc2l0aW9uOiBhYnNvbHV0
ZTsKLSAgICB0b3A6IDA7Ci0gICAgcmlnaHQ6IDEwcHg7Ci0gICAgYm90dG9tOiAwOwotICAgIHdp
ZHRoOiA0MHB4OwotICAgIGhlaWdodDogNDBweDsKLSAgICBtYXJnaW46IGF1dG8gMDsKLSAgICBm
b250LXNpemU6IDIycHg7Ci0gICAgY29sb3I6ICNhODhhOGE7Ci0gICAgLXdlYmtpdC10cmFuc2l0
aW9uOiBhbGwgMC4yczsKLSAgICB0cmFuc2l0aW9uOiBhbGwgMC4yczsKLX0KLQotI3RvZG8tbGlz
dCBsaSAuZGVzdHJveTpob3ZlciB7Ci0gICAgdGV4dC1zaGFkb3c6IDAgMCAxcHggIzAwMCwKLSAg
ICAgICAgICAgICAgICAgMCAwIDEwcHggcmdiYSgxOTksIDEwNywgMTA3LCAwLjgpOwotICAgIC13
ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxLjMpOwotICAgIC1tcy10cmFuc2Zvcm06IHNjYWxlKDEu
Myk7Ci0gICAgdHJhbnNmb3JtOiBzY2FsZSgxLjMpOwotfQotCi0jdG9kby1saXN0IGxpIC5kZXN0
cm95OmFmdGVyIHsKLSAgICBjb250ZW50OiAn4pyWJzsKLX0KLQotI3RvZG8tbGlzdCBsaTpob3Zl
ciAuZGVzdHJveSB7Ci0gICAgZGlzcGxheTogYmxvY2s7Ci19Ci0KLSN0b2RvLWxpc3QgbGkgLmVk
aXQgewotICAgIGRpc3BsYXk6IG5vbmU7Ci19Ci0KLSN0b2RvLWxpc3QgbGkuZWRpdGluZzpsYXN0
LWNoaWxkIHsKLSAgICBtYXJnaW4tYm90dG9tOiAtMXB4OwotfQotCi0jZm9vdGVyIHsKLSAgICBj
b2xvcjogIzc3NzsKLSAgICBwYWRkaW5nOiAwIDE1cHg7Ci0gICAgcG9zaXRpb246IGFic29sdXRl
OwotICAgIHJpZ2h0OiAwOwotICAgIGJvdHRvbTogLTMxcHg7Ci0gICAgbGVmdDogMDsKLSAgICBo
ZWlnaHQ6IDIwcHg7Ci0gICAgei1pbmRleDogMTsKLSAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci19
Ci0KLSNmb290ZXI6YmVmb3JlIHsKLSAgICBjb250ZW50OiAnJzsKLSAgICBwb3NpdGlvbjogYWJz
b2x1dGU7Ci0gICAgcmlnaHQ6IDA7Ci0gICAgYm90dG9tOiAzMXB4OwotICAgIGxlZnQ6IDA7Ci0g
ICAgaGVpZ2h0OiA1MHB4OwotICAgIHotaW5kZXg6IC0xOwotICAgIGJveC1zaGFkb3c6IDAgMXB4
IDFweCByZ2JhKDAsIDAsIDAsIDAuMyksCi0gICAgICAgICAgICAgICAgMCA2cHggMCAtM3B4IHJn
YmEoMjU1LCAyNTUsIDI1NSwgMC44KSwKLSAgICAgICAgICAgICAgICAwIDdweCAxcHggLTNweCBy
Z2JhKDAsIDAsIDAsIDAuMyksCi0gICAgICAgICAgICAgICAgMCA0M3B4IDAgLTZweCByZ2JhKDI1
NSwgMjU1LCAyNTUsIDAuOCksCi0gICAgICAgICAgICAgICAgMCA0NHB4IDJweCAtNnB4IHJnYmEo
MCwgMCwgMCwgMC4yKTsKLX0KLQotI3RvZG8tY291bnQgewotICAgIGZsb2F0OiBsZWZ0OwotICAg
IHRleHQtYWxpZ246IGxlZnQ7Ci19Ci0KLSNmaWx0ZXJzIHsKLSAgICBtYXJnaW46IDA7Ci0gICAg
cGFkZGluZzogMDsKLSAgICBsaXN0LXN0eWxlOiBub25lOwotICAgIHBvc2l0aW9uOiBhYnNvbHV0
ZTsKLSAgICByaWdodDogMDsKLSAgICBsZWZ0OiAwOwotfQotCi0jZmlsdGVycyBsaSB7Ci0gICAg
ZGlzcGxheTogaW5saW5lOwotfQotCi0jZmlsdGVycyBsaSBhIHsKLSAgICBjb2xvcjogIzgzNzU2
ZjsKLSAgICBtYXJnaW46IDJweDsKLSAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Ci19Ci0KLSNm
aWx0ZXJzIGxpIGEuc2VsZWN0ZWQgewotICAgIGZvbnQtd2VpZ2h0OiBib2xkOwotfQotCi0jY2xl
YXItY29tcGxldGVkIHsKLSAgICBmbG9hdDogcmlnaHQ7Ci0gICAgcG9zaXRpb246IHJlbGF0aXZl
OwotICAgIGxpbmUtaGVpZ2h0OiAyMHB4OwotICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKLSAg
ICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMSk7Ci0gICAgZm9udC1zaXplOiAxMXB4Owot
ICAgIHBhZGRpbmc6IDAgMTBweDsKLSAgICBib3JkZXItcmFkaXVzOiAzcHg7Ci0gICAgYm94LXNo
YWRvdzogMCAtMXB4IDAgMCByZ2JhKDAsIDAsIDAsIDAuMik7Ci19Ci0KLSNjbGVhci1jb21wbGV0
ZWQ6aG92ZXIgewotICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4xNSk7Ci0gICAgYm94
LXNoYWRvdzogMCAtMXB4IDAgMCByZ2JhKDAsIDAsIDAsIDAuMyk7Ci19Ci0KLSNpbmZvIHsKLSAg
ICBtYXJnaW46IDY1cHggYXV0byAwOwotICAgIGNvbG9yOiAjYTZhNmE2OwotICAgIGZvbnQtc2l6
ZTogMTJweDsKLSAgICB0ZXh0LXNoYWRvdzogMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAu
Nyk7Ci0gICAgdGV4dC1hbGlnbjogY2VudGVyOwotfQotCi0jaW5mbyBhIHsKLSAgICBjb2xvcjog
aW5oZXJpdDsKLX0KLQotLyoKLSAgICBIYWNrIHRvIHJlbW92ZSBiYWNrZ3JvdW5kIGZyb20gTW9i
aWxlIFNhZmFyaS4KLSAgICBDYW4ndCB1c2UgaXQgZ2xvYmFsbHkgc2luY2UgaXQgZGVzdHJveXMg
Y2hlY2tib3hlcyBpbiBGaXJlZm94IGFuZCBPcGVyYQotKi8KLQotQG1lZGlhIHNjcmVlbiBhbmQg
KC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzowKSB7Ci0gICAgI3RvZ2dsZS1hbGwsCi0g
ICAgI3RvZG8tbGlzdCBsaSAudG9nZ2xlIHsKLSAgICAgICAgYmFja2dyb3VuZDogbm9uZTsKLSAg
ICB9Ci0KLSAgICAjdG9kby1saXN0IGxpIC50b2dnbGUgewotICAgICAgICBoZWlnaHQ6IDQwcHg7
Ci0gICAgfQotCi0gICAgI3RvZ2dsZS1hbGwgewotICAgICAgICB0b3A6IC01NnB4OwotICAgICAg
ICBsZWZ0OiAtMTVweDsKLSAgICAgICAgd2lkdGg6IDY1cHg7Ci0gICAgICAgIGhlaWdodDogNDFw
eDsKLSAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7Ci0gICAgICAgIC1t
cy10cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7Ci0gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDkw
ZGVnKTsKLSAgICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwotICAgICAgICBhcHBlYXJh
bmNlOiBub25lOwotICAgIH0KLX0KLQotLmhpZGRlbiB7Ci0gICAgZGlzcGxheTogbm9uZTsKLX0K
LQotaHIgewotICAgIG1hcmdpbjogMjBweCAwOwotICAgIGJvcmRlcjogMDsKLSAgICBib3JkZXIt
dG9wOiAxcHggZGFzaGVkICNDNUM1QzU7Ci0gICAgYm9yZGVyLWJvdHRvbTogMXB4IGRhc2hlZCAj
RjdGN0Y3OwotfQotCi0ubGVhcm4gYSB7Ci0gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKLSAgICB0
ZXh0LWRlY29yYXRpb246IG5vbmU7Ci0gICAgY29sb3I6ICNiODNmNDU7Ci19Ci0KLS5sZWFybiBh
OmhvdmVyIHsKLSAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKLSAgICBjb2xvcjogIzc4
N2U3ZTsKLX0KLQotLmxlYXJuIGgzLAotLmxlYXJuIGg0LAotLmxlYXJuIGg1IHsKLSAgICBtYXJn
aW46IDEwcHggMDsKLSAgICBmb250LXdlaWdodDogNTAwOwotICAgIGxpbmUtaGVpZ2h0OiAxLjI7
Ci0gICAgY29sb3I6ICMwMDA7Ci19Ci0KLS5sZWFybiBoMyB7Ci0gICAgZm9udC1zaXplOiAyNHB4
OwotfQotCi0ubGVhcm4gaDQgewotICAgIGZvbnQtc2l6ZTogMThweDsKLX0KLQotLmxlYXJuIGg1
IHsKLSAgICBtYXJnaW4tYm90dG9tOiAwOwotICAgIGZvbnQtc2l6ZTogMTRweDsKLX0KLQotLmxl
YXJuIHVsIHsKLSAgICBwYWRkaW5nOiAwOwotICAgIG1hcmdpbjogMCAwIDMwcHggMjVweDsKLX0K
LQotLmxlYXJuIGxpIHsKLSAgICBsaW5lLWhlaWdodDogMjBweDsKLX0KLQotLmxlYXJuIHAgewot
ICAgIGZvbnQtc2l6ZTogMTVweDsKLSAgICBmb250LXdlaWdodDogMzAwOwotICAgIGxpbmUtaGVp
Z2h0OiAxLjM7Ci0gICAgbWFyZ2luLXRvcDogMDsKLSAgICBtYXJnaW4tYm90dG9tOiAwOwotfQot
Ci0ucXVvdGUgewotICAgIGJvcmRlcjogbm9uZTsKLSAgICBtYXJnaW46IDIwcHggMCA2MHB4IDA7
Ci19Ci0KLS5xdW90ZSBwIHsKLSAgICBmb250LXN0eWxlOiBpdGFsaWM7Ci19Ci0KLS5xdW90ZSBw
OmJlZm9yZSB7Ci0gICAgY29udGVudDogJ+KAnCc7Ci0gICAgZm9udC1zaXplOiA1MHB4OwotICAg
IG9wYWNpdHk6IC4xNTsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgdG9wOiAtMjBweDsK
LSAgICBsZWZ0OiAzcHg7Ci19Ci0KLS5xdW90ZSBwOmFmdGVyIHsKLSAgICBjb250ZW50OiAn4oCd
JzsKLSAgICBmb250LXNpemU6IDUwcHg7Ci0gICAgb3BhY2l0eTogLjE1OwotICAgIHBvc2l0aW9u
OiBhYnNvbHV0ZTsKLSAgICBib3R0b206IC00MnB4OwotICAgIHJpZ2h0OiAzcHg7Ci19Ci0KLS5x
dW90ZSBmb290ZXIgewotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICBib3R0b206IC00MHB4
OwotICAgIHJpZ2h0OiAwOwotfQotCi0ucXVvdGUgZm9vdGVyIGltZyB7Ci0gICAgYm9yZGVyLXJh
ZGl1czogM3B4OwotfQotCi0ucXVvdGUgZm9vdGVyIGEgewotICAgIG1hcmdpbi1sZWZ0OiA1cHg7
Ci0gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKLX0KLQotLnNwZWVjaC1idWJibGUgewotICAg
IHBvc2l0aW9uOiByZWxhdGl2ZTsKLSAgICBwYWRkaW5nOiAxMHB4OwotICAgIGJhY2tncm91bmQ6
IHJnYmEoMCwgMCwgMCwgLjA0KTsKLSAgICBib3JkZXItcmFkaXVzOiA1cHg7Ci19Ci0KLS5zcGVl
Y2gtYnViYmxlOmFmdGVyIHsKLSAgICBjb250ZW50OiAnJzsKLSAgICBwb3NpdGlvbjogYWJzb2x1
dGU7Ci0gICAgdG9wOiAxMDAlOwotICAgIHJpZ2h0OiAzMHB4OwotICAgIGJvcmRlcjogMTNweCBz
b2xpZCB0cmFuc3BhcmVudDsKLSAgICBib3JkZXItdG9wLWNvbG9yOiByZ2JhKDAsIDAsIDAsIC4w
NCk7Ci19Ci0KLS5sZWFybi1iYXIgPiAubGVhcm4gewotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsK
LSAgICB3aWR0aDogMjcycHg7Ci0gICAgdG9wOiA4cHg7Ci0gICAgbGVmdDogLTMwMHB4OwotICAg
IHBhZGRpbmc6IDEwcHg7Ci0gICAgYm9yZGVyLXJhZGl1czogNXB4OwotICAgIGJhY2tncm91bmQt
Y29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgLjYpOwotICAgIC13ZWJraXQtdHJhbnNpdGlvbi1w
cm9wZXJ0eTogbGVmdDsKLSAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiBsZWZ0OwotICAgIC13ZWJr
aXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogNTAwbXM7Ci0gICAgdHJhbnNpdGlvbi1kdXJhdGlvbjog
NTAwbXM7Ci19Ci0KLUBtZWRpYSAobWluLXdpZHRoOiA4OTlweCkgewotICAgIC5sZWFybi1iYXIg
ewotICAgICAgICB3aWR0aDogYXV0bzsKLSAgICAgICAgbWFyZ2luOiAwIDAgMCAzMDBweDsKLSAg
ICB9Ci0KLSAgICAubGVhcm4tYmFyID4gLmxlYXJuIHsKLSAgICAgICAgbGVmdDogOHB4OwotICAg
IH0KLQotICAgIC5sZWFybi1iYXIgI3RvZG9hcHAgewotICAgICAgICB3aWR0aDogNTUwcHg7Ci0g
ICAgICAgIG1hcmdpbjogMTMwcHggYXV0byA0MHB4IGF1dG87Ci0gICAgfQotfQpkaWZmIC0tZ2l0
IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9kZXBlbmRl
bmN5LWV4YW1wbGVzL2ZsaWdodC9ib3dlcl9jb21wb25lbnRzL3RvZG9tdmMtY29tbW9uL2Jhc2Uu
anMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2RlcGVu
ZGVuY3ktZXhhbXBsZXMvZmxpZ2h0L2Jvd2VyX2NvbXBvbmVudHMvdG9kb212Yy1jb21tb24vYmFz
ZS5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzY4ZTVlYTAzYTYxYWQzNjY3OWMx
NWVhMGFmNjQ4OTEzNzFkYjllYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2RlcGVuZGVuY3ktZXhhbXBsZXMvZmxpZ2h0L2Jvd2VyX2NvbXBvbmVudHMvdG9kb212Yy1jb21t
b24vYmFzZS5qcworKysgL2Rldi9udWxsCkBAIC0xLDIwOSArMCwwIEBACi0oZnVuY3Rpb24gKCkg
ewotICAgICd1c2Ugc3RyaWN0JzsKLQotICAgIC8vIFVuZGVyc2NvcmUncyBUZW1wbGF0ZSBNb2R1
bGUKLSAgICAvLyBDb3VydGVzeSBvZiB1bmRlcnNjb3JlanMub3JnCi0gICAgdmFyIF8gPSAoZnVu
Y3Rpb24gKF8pIHsKLSAgICAgICAgXy5kZWZhdWx0cyA9IGZ1bmN0aW9uIChvYmplY3QpIHsKLSAg
ICAgICAgICAgIGlmICghb2JqZWN0KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG9iamVjdDsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZvciAodmFyIGFyZ3NJbmRleCA9IDEsIGFyZ3NM
ZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoOyBhcmdzSW5kZXggPCBhcmdzTGVuZ3RoOyBhcmdzSW5k
ZXgrKykgewotICAgICAgICAgICAgICAgIHZhciBpdGVyYWJsZSA9IGFyZ3VtZW50c1thcmdzSW5k
ZXhdOwotICAgICAgICAgICAgICAgIGlmIChpdGVyYWJsZSkgewotICAgICAgICAgICAgICAgICAg
ICBmb3IgKHZhciBrZXkgaW4gaXRlcmFibGUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChvYmplY3Rba2V5XSA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Jq
ZWN0W2tleV0gPSBpdGVyYWJsZVtrZXldOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgcmV0dXJuIG9iamVjdDsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEJ5IGRlZmF1
bHQsIFVuZGVyc2NvcmUgdXNlcyBFUkItc3R5bGUgdGVtcGxhdGUgZGVsaW1pdGVycywgY2hhbmdl
IHRoZQotICAgICAgICAvLyBmb2xsb3dpbmcgdGVtcGxhdGUgc2V0dGluZ3MgdG8gdXNlIGFsdGVy
bmF0aXZlIGRlbGltaXRlcnMuCi0gICAgICAgIF8udGVtcGxhdGVTZXR0aW5ncyA9IHsKLSAgICAg
ICAgICAgIGV2YWx1YXRlICAgIDogLzwlKFtcc1xTXSs/KSU+L2csCi0gICAgICAgICAgICBpbnRl
cnBvbGF0ZSA6IC88JT0oW1xzXFNdKz8pJT4vZywKLSAgICAgICAgICAgIGVzY2FwZSAgICAgIDog
LzwlLShbXHNcU10rPyklPi9nCi0gICAgICAgIH07Ci0KLSAgICAgICAgLy8gV2hlbiBjdXN0b21p
emluZyBgdGVtcGxhdGVTZXR0aW5nc2AsIGlmIHlvdSBkb24ndCB3YW50IHRvIGRlZmluZSBhbgot
ICAgICAgICAvLyBpbnRlcnBvbGF0aW9uLCBldmFsdWF0aW9uIG9yIGVzY2FwaW5nIHJlZ2V4LCB3
ZSBuZWVkIG9uZSB0aGF0IGlzCi0gICAgICAgIC8vIGd1YXJhbnRlZWQgbm90IHRvIG1hdGNoLgot
ICAgICAgICB2YXIgbm9NYXRjaCA9IC8oLileLzsKLQotICAgICAgICAvLyBDZXJ0YWluIGNoYXJh
Y3RlcnMgbmVlZCB0byBiZSBlc2NhcGVkIHNvIHRoYXQgdGhleSBjYW4gYmUgcHV0IGludG8gYQot
ICAgICAgICAvLyBzdHJpbmcgbGl0ZXJhbC4KLSAgICAgICAgdmFyIGVzY2FwZXMgPSB7Ci0gICAg
ICAgICAgICAiJyI6ICAgICAgIiciLAotICAgICAgICAgICAgJ1xcJzogICAgICdcXCcsCi0gICAg
ICAgICAgICAnXHInOiAgICAgJ3InLAotICAgICAgICAgICAgJ1xuJzogICAgICduJywKLSAgICAg
ICAgICAgICdcdCc6ICAgICAndCcsCi0gICAgICAgICAgICAnXHUyMDI4JzogJ3UyMDI4JywKLSAg
ICAgICAgICAgICdcdTIwMjknOiAndTIwMjknCi0gICAgICAgIH07Ci0KLSAgICAgICAgdmFyIGVz
Y2FwZXIgPSAvXFx8J3xccnxcbnxcdHxcdTIwMjh8XHUyMDI5L2c7Ci0KLSAgICAgICAgLy8gSmF2
YVNjcmlwdCBtaWNyby10ZW1wbGF0aW5nLCBzaW1pbGFyIHRvIEpvaG4gUmVzaWcncyBpbXBsZW1l
bnRhdGlvbi4KLSAgICAgICAgLy8gVW5kZXJzY29yZSB0ZW1wbGF0aW5nIGhhbmRsZXMgYXJiaXRy
YXJ5IGRlbGltaXRlcnMsIHByZXNlcnZlcyB3aGl0ZXNwYWNlLAotICAgICAgICAvLyBhbmQgY29y
cmVjdGx5IGVzY2FwZXMgcXVvdGVzIHdpdGhpbiBpbnRlcnBvbGF0ZWQgY29kZS4KLSAgICAgICAg
Xy50ZW1wbGF0ZSA9IGZ1bmN0aW9uKHRleHQsIGRhdGEsIHNldHRpbmdzKSB7Ci0gICAgICAgICAg
ICB2YXIgcmVuZGVyOwotICAgICAgICAgICAgc2V0dGluZ3MgPSBfLmRlZmF1bHRzKHt9LCBzZXR0
aW5ncywgXy50ZW1wbGF0ZVNldHRpbmdzKTsKLQotICAgICAgICAgICAgLy8gQ29tYmluZSBkZWxp
bWl0ZXJzIGludG8gb25lIHJlZ3VsYXIgZXhwcmVzc2lvbiB2aWEgYWx0ZXJuYXRpb24uCi0gICAg
ICAgICAgICB2YXIgbWF0Y2hlciA9IG5ldyBSZWdFeHAoWwotICAgICAgICAgICAgICAgIChzZXR0
aW5ncy5lc2NhcGUgfHwgbm9NYXRjaCkuc291cmNlLAotICAgICAgICAgICAgICAgIChzZXR0aW5n
cy5pbnRlcnBvbGF0ZSB8fCBub01hdGNoKS5zb3VyY2UsCi0gICAgICAgICAgICAgICAgKHNldHRp
bmdzLmV2YWx1YXRlIHx8IG5vTWF0Y2gpLnNvdXJjZQotICAgICAgICAgICAgXS5qb2luKCd8Jykg
KyAnfCQnLCAnZycpOwotCi0gICAgICAgICAgICAvLyBDb21waWxlIHRoZSB0ZW1wbGF0ZSBzb3Vy
Y2UsIGVzY2FwaW5nIHN0cmluZyBsaXRlcmFscyBhcHByb3ByaWF0ZWx5LgotICAgICAgICAgICAg
dmFyIGluZGV4ID0gMDsKLSAgICAgICAgICAgIHZhciBzb3VyY2UgPSAiX19wKz0nIjsKLSAgICAg
ICAgICAgIHRleHQucmVwbGFjZShtYXRjaGVyLCBmdW5jdGlvbihtYXRjaCwgZXNjYXBlLCBpbnRl
cnBvbGF0ZSwgZXZhbHVhdGUsIG9mZnNldCkgewotICAgICAgICAgICAgICAgIHNvdXJjZSArPSB0
ZXh0LnNsaWNlKGluZGV4LCBvZmZzZXQpCi0gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKGVz
Y2FwZXIsIGZ1bmN0aW9uKG1hdGNoKSB7IHJldHVybiAnXFwnICsgZXNjYXBlc1ttYXRjaF07IH0p
OwotCi0gICAgICAgICAgICAgICAgaWYgKGVzY2FwZSkgewotICAgICAgICAgICAgICAgICAgICBz
b3VyY2UgKz0gIicrXG4oKF9fdD0oIiArIGVzY2FwZSArICIpKT09bnVsbD8nJzpfLmVzY2FwZShf
X3QpKStcbiciOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoaW50ZXJw
b2xhdGUpIHsKLSAgICAgICAgICAgICAgICAgICAgc291cmNlICs9ICInK1xuKChfX3Q9KCIgKyBp
bnRlcnBvbGF0ZSArICIpKT09bnVsbD8nJzpfX3QpK1xuJyI7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIGlmIChldmFsdWF0ZSkgewotICAgICAgICAgICAgICAgICAgICBzb3Vy
Y2UgKz0gIic7XG4iICsgZXZhbHVhdGUgKyAiXG5fX3ArPSciOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICBpbmRleCA9IG9mZnNldCArIG1hdGNoLmxlbmd0aDsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gbWF0Y2g7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIHNvdXJj
ZSArPSAiJztcbiI7Ci0KLSAgICAgICAgICAgIC8vIElmIGEgdmFyaWFibGUgaXMgbm90IHNwZWNp
ZmllZCwgcGxhY2UgZGF0YSB2YWx1ZXMgaW4gbG9jYWwgc2NvcGUuCi0gICAgICAgICAgICBpZiAo
IXNldHRpbmdzLnZhcmlhYmxlKSBzb3VyY2UgPSAnd2l0aChvYmp8fHt9KXtcbicgKyBzb3VyY2Ug
KyAnfVxuJzsKLQotICAgICAgICAgICAgc291cmNlID0gInZhciBfX3QsX19wPScnLF9faj1BcnJh
eS5wcm90b3R5cGUuam9pbiwiICsKLSAgICAgICAgICAgICAgICAicHJpbnQ9ZnVuY3Rpb24oKXtf
X3ArPV9fai5jYWxsKGFyZ3VtZW50cywnJyk7fTtcbiIgKwotICAgICAgICAgICAgICAgIHNvdXJj
ZSArICJyZXR1cm4gX19wO1xuIjsKLQotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAg
ICByZW5kZXIgPSBuZXcgRnVuY3Rpb24oc2V0dGluZ3MudmFyaWFibGUgfHwgJ29iaicsICdfJywg
c291cmNlKTsKLSAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICAgICAgICBlLnNv
dXJjZSA9IHNvdXJjZTsKLSAgICAgICAgICAgICAgICB0aHJvdyBlOwotICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICBpZiAoZGF0YSkgcmV0dXJuIHJlbmRlcihkYXRhLCBfKTsKLSAgICAgICAg
ICAgIHZhciB0ZW1wbGF0ZSA9IGZ1bmN0aW9uKGRhdGEpIHsKLSAgICAgICAgICAgICAgICByZXR1
cm4gcmVuZGVyLmNhbGwodGhpcywgZGF0YSwgXyk7Ci0gICAgICAgICAgICB9OwotCi0gICAgICAg
ICAgICAvLyBQcm92aWRlIHRoZSBjb21waWxlZCBmdW5jdGlvbiBzb3VyY2UgYXMgYSBjb252ZW5p
ZW5jZSBmb3IgcHJlY29tcGlsYXRpb24uCi0gICAgICAgICAgICB0ZW1wbGF0ZS5zb3VyY2UgPSAn
ZnVuY3Rpb24oJyArIChzZXR0aW5ncy52YXJpYWJsZSB8fCAnb2JqJykgKyAnKXtcbicgKyBzb3Vy
Y2UgKyAnfSc7Ci0KLSAgICAgICAgICAgIHJldHVybiB0ZW1wbGF0ZTsKLSAgICAgICAgfTsKLQot
ICAgICAgICByZXR1cm4gXzsKLSAgICB9KSh7fSk7Ci0KLSAgICBpZiAobG9jYXRpb24uaG9zdG5h
bWUgPT09ICd0b2RvbXZjLmNvbScpIHsKLSAgICAgICAgd2luZG93Ll9nYXEgPSBbWydfc2V0QWNj
b3VudCcsJ1VBLTMxMDgxMDYyLTEnXSxbJ190cmFja1BhZ2V2aWV3J11dOyhmdW5jdGlvbihkLHQp
e3ZhciBnPWQuY3JlYXRlRWxlbWVudCh0KSxzPWQuZ2V0RWxlbWVudHNCeVRhZ05hbWUodClbMF07
Zy5zcmM9Jy8vd3d3Lmdvb2dsZS1hbmFseXRpY3MuY29tL2dhLmpzJztzLnBhcmVudE5vZGUuaW5z
ZXJ0QmVmb3JlKGcscyl9KGRvY3VtZW50LCdzY3JpcHQnKSk7Ci0gICAgfQotCi0gICAgZnVuY3Rp
b24gcmVkaXJlY3QoKSB7Ci0gICAgICAgIGlmIChsb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ3Rhc3Rl
anMuZ2l0aHViLmlvJykgewotICAgICAgICAgICAgbG9jYXRpb24uaHJlZiA9IGxvY2F0aW9uLmhy
ZWYucmVwbGFjZSgndGFzdGVqcy5naXRodWIuaW8vdG9kb212YycsICd0b2RvbXZjLmNvbScpOwot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gZmluZFJvb3QoKSB7Ci0gICAgICAgIHZh
ciBiYXNlOwotCi0gICAgICAgIFsvbGFicy8sIC9cdyotZXhhbXBsZXMvXS5mb3JFYWNoKGZ1bmN0
aW9uIChocmVmKSB7Ci0gICAgICAgICAgICB2YXIgbWF0Y2ggPSBsb2NhdGlvbi5ocmVmLm1hdGNo
KGhyZWYpOwotCi0gICAgICAgICAgICBpZiAoIWJhc2UgJiYgbWF0Y2gpIHsKLSAgICAgICAgICAg
ICAgICBiYXNlID0gbG9jYXRpb24uaHJlZi5pbmRleE9mKG1hdGNoKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfSk7Ci0KLSAgICAgICAgcmV0dXJuIGxvY2F0aW9uLmhyZWYuc3Vic3RyKDAsIGJh
c2UpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGdldEZpbGUoZmlsZSwgY2FsbGJhY2spIHsKLSAg
ICAgICAgaWYgKCFsb2NhdGlvbi5ob3N0KSB7Ci0gICAgICAgICAgICByZXR1cm4gY29uc29sZS5p
bmZvKCdNaXNzIHRoZSBpbmZvIGJhcj8gUnVuIFRvZG9NVkMgZnJvbSBhIHNlcnZlciB0byBhdm9p
ZCBhIGNyb3NzLW9yaWdpbiBlcnJvci4nKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciB4aHIg
PSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKLQotICAgICAgICB4aHIub3BlbignR0VUJywgZmluZFJv
b3QoKSArIGZpbGUsIHRydWUpOwotICAgICAgICB4aHIuc2VuZCgpOwotCi0gICAgICAgIHhoci5v
bmxvYWQgPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICBpZiAoeGhyLnN0YXR1cyA9PT0gMjAw
ICYmIGNhbGxiYWNrKSB7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2soeGhyLnJlc3BvbnNlVGV4
dCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gTGVh
cm4obGVhcm5KU09OLCBjb25maWcpIHsKLSAgICAgICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIExl
YXJuKSkgewotICAgICAgICAgICAgcmV0dXJuIG5ldyBMZWFybihsZWFybkpTT04sIGNvbmZpZyk7
Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgdGVtcGxhdGUsIGZyYW1ld29yazsKLQotICAgICAg
ICBpZiAodHlwZW9mIGxlYXJuSlNPTiAhPT0gJ29iamVjdCcpIHsKLSAgICAgICAgICAgIHRyeSB7
Ci0gICAgICAgICAgICAgICAgbGVhcm5KU09OID0gSlNPTi5wYXJzZShsZWFybkpTT04pOwotICAg
ICAgICAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlmIChjb25maWcpIHsKLSAgICAgICAgICAgIHRl
bXBsYXRlID0gY29uZmlnLnRlbXBsYXRlOwotICAgICAgICAgICAgZnJhbWV3b3JrID0gY29uZmln
LmZyYW1ld29yazsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICghdGVtcGxhdGUgJiYgbGVhcm5K
U09OLnRlbXBsYXRlcykgewotICAgICAgICAgICAgdGVtcGxhdGUgPSBsZWFybkpTT04udGVtcGxh
dGVzLnRvZG9tdmM7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIWZyYW1ld29yayAmJiBkb2N1
bWVudC5xdWVyeVNlbGVjdG9yKCdbZGF0YS1mcmFtZXdvcmtdJykpIHsKLSAgICAgICAgICAgIGZy
YW1ld29yayA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLWZyYW1ld29ya10nKS5nZXRB
dHRyaWJ1dGUoJ2RhdGEtZnJhbWV3b3JrJyk7Ci0gICAgICAgIH0KLQotCi0gICAgICAgIGlmICh0
ZW1wbGF0ZSAmJiBsZWFybkpTT05bZnJhbWV3b3JrXSkgewotICAgICAgICAgICAgdGhpcy5mcmFt
ZXdvcmtKU09OID0gbGVhcm5KU09OW2ZyYW1ld29ya107Ci0gICAgICAgICAgICB0aGlzLnRlbXBs
YXRlID0gdGVtcGxhdGU7Ci0KLSAgICAgICAgICAgIHRoaXMuYXBwZW5kKCk7Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICBMZWFybi5wcm90b3R5cGUuYXBwZW5kID0gZnVuY3Rpb24gKCkgewotICAg
ICAgICB2YXIgYXNpZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhc2lkZScpOwotICAgICAg
ICBhc2lkZS5pbm5lckhUTUwgPSBfLnRlbXBsYXRlKHRoaXMudGVtcGxhdGUsIHRoaXMuZnJhbWV3
b3JrSlNPTik7Ci0gICAgICAgIGFzaWRlLmNsYXNzTmFtZSA9ICdsZWFybic7Ci0KLSAgICAgICAg
Ly8gTG9jYWxpemUgZGVtbyBsaW5rcwotICAgICAgICB2YXIgZGVtb0xpbmtzID0gYXNpZGUucXVl
cnlTZWxlY3RvckFsbCgnLmRlbW8tbGluaycpOwotICAgICAgICBBcnJheS5wcm90b3R5cGUuZm9y
RWFjaC5jYWxsKGRlbW9MaW5rcywgZnVuY3Rpb24gKGRlbW9MaW5rKSB7Ci0gICAgICAgICAgICBk
ZW1vTGluay5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBmaW5kUm9vdCgpICsgZGVtb0xpbmsuZ2V0QXR0
cmlidXRlKCdocmVmJykpOwotICAgICAgICB9KTsKLQotICAgICAgICBkb2N1bWVudC5ib2R5LmNs
YXNzTmFtZSA9IChkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSArICcgbGVhcm4tYmFyJykudHJpbSgp
OwotICAgICAgICBkb2N1bWVudC5ib2R5Lmluc2VydEFkamFjZW50SFRNTCgnYWZ0ZXJCZWdpbics
IGFzaWRlLm91dGVySFRNTCk7Ci0gICAgfTsKLQotICAgIHJlZGlyZWN0KCk7Ci0gICAgZ2V0Rmls
ZSgnbGVhcm4uanNvbicsIExlYXJuKTsKLX0pKCk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2RlcGVuZGVuY3ktZXhhbXBsZXMvZmxp
Z2h0L2Jvd2VyX2NvbXBvbmVudHMvdG9kb212Yy1jb21tb24vYmcucG5nIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9kZXBlbmRlbmN5LWV4YW1wbGVzL2Zs
aWdodC9ib3dlcl9jb21wb25lbnRzL3RvZG9tdmMtY29tbW9uL2JnLnBuZwpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggYjJhNzYwMDgyNWVlMTFmMjE4NDllZDQ3NTQ5OWM3ZDFlY2JjYzg3
MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMApHSVQgYmluYXJ5IHBh
dGNoCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKbGl0ZXJhbCAyMTI2CnpjbVYtVTIoa0J4UCk8aDsz
S3xMazAwMGUxTkpMVHEwMDNrRjAwM2tIMHt7UjM0VUIhcTAwMDBDUCl0LXM/KFhqRQp6Pis5eWA9
SEs3bnQ9fjN0MDAwTzVOa2w8WmN3VGp1KFE0dn43S1dFVyNZbT9sS192O1RtfCFGYylATndFbm10
c2gKenghT356ODFKVDNwRnNtPm09MDRoVmFfbFhsX2JtPStNOz1lSTwlJHJPMnRhYHN1aCpTciNQ
T3cqP2FkcSFPIUNWCnoqMCZiKXJrQ0NFVikxbkl1aUxCbnRVSC1NSkk7JnFZZ3p8ZEBOaG5uX2Fi
aTJnYHB1NE5BTVZpZDNoUyU/cXV6fgp6amxKZih4OGNqPFBHY2puKkorYXsmSDVwKm41JDVlMz88
S0NjP28wNm1Bc05TYmdQV08/UHojQ3puPCE9ez57VlMKelVWRVAxbXNnOWBeT0ZVaFNPNXJ0WEho
Umx5VTJpPjYkQlQ9Z2xHYHtKbGN0R0hyd1JJbSk2QnV1NjVqTFFuXkg4Cnp2bDlsWnFVQkErJXF2
TTVYQyt5WUBtZkEoWUJ+WFA9ZXw2PHslJF5lVThucks/djJjY2JASm9tNUNHPnJLQUw3Sgp6cGxI
RUlhdlZwfDBwMSZtIUdgVGk/PDdpWjt9QEc3I1opfUttJTIhRkhuUTAqJj9QTFIpRyFIQWFIZ1Uj
Y3wkZHoKenBqIzBIbWVhZEllPmAjKT1Kamtie0I9RktuVTNwYy0mWUBqX2o2KGg0WX4rVXE8UFUz
NkM7NWI9TV5GYD1wMWRJCnprPENRT1BOYTc+IV5KPUxIdW54MXhpNFFYSy1ZeyZNb1Q4a3k2VmI5
Y3xXaG5Pd0Z+Yz0zek95OGFna3RsaVM2Iwp6YCM4RmA5SClEPWJtazlCNU1uVyZfciMpZiRjKzsk
TFNyLUBeQW44ZGhjfklxdXV2PmpPSzdwdzdMSjsmWDBpMUMKekdNc0hkUDFPc0BueSQkaiE+WEFp
aSU3YnA1az5gcHlOQSF+ZXBiKSgpcDl6UjRZbDZ6PVV9e0NJZGgxeihGcEFvCnpRSVchOzB6cEN5
QzQqN1lMa1pDT0BjdWwwUl8memdoc0E4RWspeiU8IXAtYnZzc3BsWVkyfVA7IXY0Q1lqOWttRgp6
YjBiTl9tNFYqZl5ZWk1vYjIoajNwS2p+N3YjWnRrcz1Jbyt7c3UlV2l1a2RKSCRiP2Zaa2lBPVBZ
XzNPaERCa28KeihMVFFIWSZGXl4yaEctWWAqWjkzdmJ+Yz8qKEpjaERqVGZDcz96Um0qYCpOKlYt
JD0/UXF0aG5Tcio/T1Mzc2pLCnpvPF9VXmZ7fmFnNjB1bD5qTnBLYTkye0BOSCtTc3RYJUB9eEIq
SmshbH1QWjFjQ2xJbnN+fTVeIVJuY1VrKnJtQQp6JVNJVmd0NThFUXhMSitPaUZxPHl1NGVPRHw5
THQzZE5zZWZ4T3VxKUQmJF8lajBEZ3FDeTFnemN8dFREMyptZWUKens9JXw8YGB9X0h5cGhPdXs7
KXhrUmcrUW5IQ0MzVGYra3NwcVY2KnxRSy1SY3FEfTQ+S2tCdXdxdXlaTFVwfGdyCnpQVWJVYkZi
QnJQZDF4T2BeQypyLWkzcDkqRiMoT0JoITRXeUBhQyYqIXxPfEdYY2pEQSZZaEZ7O2NENypvKEdT
Xgp6QHBRU0U3KXhfODE9UXlqZTYqTFEjVFh1LTcobztTOHUzdHBEQTxTZ2NLY0tPcG1BOz1IQlpT
QE9GVEBfWE92eHEKeipOfDNLTHl0Z3pINkdVJiZVb2M0WnprNGx1bTNQezk/ZnBJNCtRR1BKK3Y2
YDFsZlJxM0xjUyooTSpXSyt8YiVPCnplJHo+MF9kZGolaG1Dc3BlWGRoWVJ9LWk5QT1DYEVvQ2hV
WXVIfl54ITkrfCYoUGdiKj5Dazw9OWp8KSpAeHlmVAp6cFAjK0t0PH0zOWJ8M1dsNGZ4VCgrRz9h
SD5nR15kQE1FYVVPSlJmeTU1VHRGSTdeWSlWdU1VPTdQcDB5NTVqU34KeitUSilpZ015cnFrWDt3
VThqNjhpSUR0cUpZaFNfRDNfT2VtLUBnNm1lX1JmaVF9dVRfSy1BLTlxRyV9Z2szRTljCnohOGBL
Z3NNTlhtKWJlbG9QZk1xbCp8JiRNPjFxYGkhY1kpUkZZbmpOWXUqZ1N2QDhYZWJWNyV9eFlMPjYp
R0pQSgp6SnBBN0szMWxjSnVJRktTdy17eDRGWDBLMkF6KX5YZzxgc091JDR8XjxNQzdAK3hid3hz
R2dUdkpJQUxqUHs2OEwKejhBWXVTR1MwR1VnazZXYHY0VztSeSp1b0VUbnVsUGl8NTczJWx2Klp4
dyN2NnlVUV5NT2ZjcFQjVjhSSURWIyNOCnpEMWArQWVtc09oKXdiV0RFeFZjZnBLeilqeVY9PH4m
WlhQZzZjfFpERTdVNGJrPERePi0oXlhKWDRZem9pTlJ2TAp6eXVZN34yNnctUF5adyU2Rn1zaEJ3
VjIkMDJjOFJzU1V5NmRNOTJkaUNBeGlYM0lVcXNxNWlnNj5VXyFWeSpxNSQKemptfTE2dEpyK1Fa
JlQ/SGtrcGVJd1ZYLXIxRUk9QCVabHQ7Njx0d0g4NklEPmcqbWomRSFBKSklZ1hKPXg2dSNsCnpj
S0VQPmJ4NHJxViprYEJCclokTXFqdHtUc0hjeFVIPjspaUFLfUIoS2lsYSZWRCViPzZtJl4wV0s0
XiZFWk5BSQp6OEFNWXNfJSREJXxNK0ArY1FxTC1oaTR5Rz5oKmp3ZGlpIVcxe31wPlpod0ZZdF80
U3Uxa2pZOTxiQVpqen45ZWsKel9EaWFyK0FmSkZQXzlAeW1VbyRLVz48LTVgISRWTk9JMXkoRURT
SDRXcENpakVfPmFsIU50PV5lVkVSI3VKMT1iCno7QldGMklneUY1TGV4Vit5ZWMkS2luO0FpQG15
bztHPnpKJmpyZFcjZWNYaElacGg1T1lxd19QRWZjRjU2PE8xOQp6TCk4ciFLTSgpaWYwYEA/VzQo
SmRjKTdXb1BHXiY9JDx6VXNNK0hDV2FrQ14zdFp4aytQalFHfUI+WjU8WjZWeHcKekJASHJWJCZs
fkBUYWo3MHBjZXtpU3VSTHNVY3pEWV81VG5EcThQeV9RM3doYEQ4ITRqSzt2RmRSUCtRMD16Snkq
Cnp6dVdkJSFhaUBEe3wqSjxJO09EJmklbHtKcC04KlB1M1ZHTFdpeWs2diNYbVFxd2AtKyVlJHxD
SncqQGA1emIzPAp6RX16IztrUmhMJnE1UERHNkBtbSokPlp1X1paRSNxM01jK04mMU9eN2hvaDlR
UjdgK0wkY0JQNXBxRz1mcUEwdWgKelVCdWtheFRGbUgpPHxYYnZwMmM9SFNiTmtwWHc3M2E1bHY3
ViRqYjkyI3laMTQxQCRYP0Z9SnQ4Z0lVN1dtNm05Cno/ZV87O3pzbm02YExaZVA+VD0kKUtyPlo/
a3IqVW1GcVI3engwQzZeYm1jc2NAMUFHdHdfck5IPi1YbSRkKnxRPAp6biYxTG4wdTc9bCZJTHM+
JUNrSnBgRGlHOUYxOHg0TmUrbGc8I2k/ZTdqTCV4OzRablJrTl5NeDA3KnFvTTZOPCQKRWYoPjBO
ITJrZE4KCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2RlcGVuZGVuY3ktZXhhbXBsZXMvZmxpZ2h0L2luZGV4Lmh0bWwgYi9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2RlcGVuZGVuY3ktZXhhbXBs
ZXMvZmxpZ2h0L2luZGV4Lmh0bWwKaW5kZXggM2RhY2VlYzYwODg2ZTk1MTY1MGE0ZTFmMDQ2YjM4
ZjcxOWIyNTI3Yi4uYmVjN2RmYjkwZTQyMDNhNjAzY2ExZjI1Nzg3NzUzNGViZmU4MGRlOCAxMDA2
NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9k
ZXBlbmRlbmN5LWV4YW1wbGVzL2ZsaWdodC9pbmRleC5odG1sCisrKyBiL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZGVwZW5kZW5jeS1leGFtcGxlcy9mbGln
aHQvaW5kZXguaHRtbApAQCAtMyw3ICszLDggQEAKICAgICA8aGVhZD4KICAgICAgICAgPG1ldGEg
Y2hhcnNldD0idXRmLTgiPgogICAgICAgICA8dGl0bGU+RmxpZ2h0IOKAoiBUb2RvPC90aXRsZT4K
LSAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJib3dlcl9jb21wb25lbnRzL3Rv
ZG9tdmMtY29tbW9uL2Jhc2UuY3NzIj4KKyAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSJub2RlX21vZHVsZXMvdG9kb212Yy1jb21tb24vYmFzZS5jc3MiPgorICAgICAgICA8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Im5vZGVfbW9kdWxlcy90b2RvbXZjLWFwcC1jc3MvaW5k
ZXguY3NzIj4KICAgICA8L2hlYWQ+CiAgICAgPGJvZHk+CiAgICAgICAgIDxzZWN0aW9uIGlkPSJ0
b2RvYXBwIj4KQEAgLTIzLDcgKzI0LDYgQEAKICAgICAgICAgICAgIDxwPkNyZWF0ZWQgYnkgPGEg
aHJlZj0iaHR0cDovL2dpdGh1Yi5jb20vbWt1a2xpcyI+TWljaGFsIEt1a2xpczwvYT48L3A+CiAg
ICAgICAgICAgICA8cD5QYXJ0IG9mIDxhIGhyZWY9Imh0dHA6Ly90b2RvbXZjLmNvbSI+VG9kb01W
QzwvYT48L3A+CiAgICAgICAgIDwvZm9vdGVyPgotICAgICAgICA8c2NyaXB0IHNyYz0iYm93ZXJf
Y29tcG9uZW50cy90b2RvbXZjLWNvbW1vbi9iYXNlLmpzIj48L3NjcmlwdD4KLSAgICAgICAgPHNj
cmlwdCBkYXRhLW1haW49ImFwcC9qcy9tYWluIiBzcmM9ImJvd2VyX2NvbXBvbmVudHMvcmVxdWly
ZWpzL3JlcXVpcmUuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IGRhdGEtbWFpbj0iYXBw
L2pzL21haW4iIHNyYz0ibm9kZV9tb2R1bGVzL3JlcXVpcmVqcy9yZXF1aXJlLmpzIj48L3Njcmlw
dD4KICAgICA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2RlcGVuZGVuY3ktZXhhbXBsZXMvZmxpZ2h0L2th
cm1hLmNvbmYuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2RlcGVuZGVuY3ktZXhhbXBsZXMvZmxpZ2h0L2thcm1hLmNvbmYuanMKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDM5YzI0MmI5NTM3MjIyYWUzYTFhMjRjNTQ2YzUzNDU1MWZhM2Uw
NWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9kZXBlbmRlbmN5LWV4YW1w
bGVzL2ZsaWdodC9rYXJtYS5jb25mLmpzCisrKyAvZGV2L251bGwKQEAgLTEsODQgKzAsMCBAQAot
Ly8gS2FybWEgY29uZmlndXJhdGlvbiBmaWxlCi0vLwotLy8gRm9yIGFsbCBhdmFpbGFibGUgY29u
ZmlnIG9wdGlvbnMgYW5kIGRlZmF1bHQgdmFsdWVzLCBzZWU6Ci0vLyBodHRwczovL2dpdGh1Yi5j
b20va2FybWEtcnVubmVyL2thcm1hL2Jsb2Ivc3RhYmxlL2xpYi9jb25maWcuanMjTDU0Ci0KLW1v
ZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGNvbmZpZykgewotICAgICd1c2Ugc3RyaWN0JzsKLQot
ICAgIGNvbmZpZy5zZXQoewotICAgICAgICAvLyBiYXNlIHBhdGgsIHRoYXQgd2lsbCBiZSB1c2Vk
IHRvIHJlc29sdmUgZmlsZXMgYW5kIGV4Y2x1ZGUKLSAgICAgICAgYmFzZVBhdGg6ICcnLAotCi0g
ICAgICAgIGZyYW1ld29ya3M6IFsnamFzbWluZSddLAotCi0gICAgICAgIC8vIGxpc3Qgb2YgZmls
ZXMgLyBwYXR0ZXJucyB0byBsb2FkIGluIHRoZSBicm93c2VyCi0gICAgICAgIGZpbGVzOiBbCi0g
ICAgICAgICAgICAvLyBsb2FkZWQgd2l0aG91dCByZXF1aXJlCi0gICAgICAgICAgICAnYm93ZXJf
Y29tcG9uZW50cy9lczUtc2hpbS9lczUtc2hpbS5qcycsCi0gICAgICAgICAgICAnYm93ZXJfY29t
cG9uZW50cy9lczUtc2hpbS9lczUtc2hhbS5qcycsCi0gICAgICAgICAgICAnYm93ZXJfY29tcG9u
ZW50cy9qcXVlcnkvanF1ZXJ5LmpzJywKLSAgICAgICAgICAgICdib3dlcl9jb21wb25lbnRzL2ph
c21pbmUtZmxpZ2h0L2xpYi9qYXNtaW5lLWZsaWdodC5qcycsCi0gICAgICAgICAgICAnYm93ZXJf
Y29tcG9uZW50cy9qYXNtaW5lLWpxdWVyeS9saWIvamFzbWluZS1qcXVlcnkuanMnLAotCi0gICAg
ICAgICAgICAvLyBoYWNrIHRvIGxvYWQgUmVxdWlyZUpTIGFmdGVyIHRoZSBzaGltIGxpYnMKLSAg
ICAgICAgICAgICdub2RlX21vZHVsZXMva2FybWEtcmVxdWlyZWpzL2xpYi9yZXF1aXJlLmpzJywK
LSAgICAgICAgICAgICdub2RlX21vZHVsZXMva2FybWEtcmVxdWlyZWpzL2xpYi9hZGFwdGVyLmpz
JywKLQotICAgICAgICAgICAgLy8gbG9hZGVkIHdpdGggcmVxdWlyZQotICAgICAgICAgICAgeyBw
YXR0ZXJuOiAnYm93ZXJfY29tcG9uZW50cy9mbGlnaHQvKiovKi5qcycsIGluY2x1ZGVkOiBmYWxz
ZSB9LAotICAgICAgICAgICAgeyBwYXR0ZXJuOiAnYm93ZXJfY29tcG9uZW50cy9kZXBvdC8qKi8q
LmpzJywgaW5jbHVkZWQ6IGZhbHNlIH0sCi0gICAgICAgICAgICB7IHBhdHRlcm46ICdib3dlcl9j
b21wb25lbnRzL3JlcXVpcmVqcy10ZXh0L3RleHQuanMnLCBpbmNsdWRlZDogZmFsc2UgfSwKLSAg
ICAgICAgICAgIHsgcGF0dGVybjogJ2FwcC8qKi8qLmpzJywgaW5jbHVkZWQ6IGZhbHNlIH0sCi0g
ICAgICAgICAgICB7IHBhdHRlcm46ICdhcHAvKiovKi5odG1sJywgaW5jbHVkZWQ6IGZhbHNlIH0s
Ci0gICAgICAgICAgICB7IHBhdHRlcm46ICd0ZXN0L3NwZWMvKiovKl9zcGVjLmpzJywgaW5jbHVk
ZWQ6IGZhbHNlIH0sCi0gICAgICAgICAgICB7IHBhdHRlcm46ICd0ZXN0L2ZpeHR1cmUvKi5odG1s
JywgaW5jbHVkZWQ6IGZhbHNlIH0sCi0KLSAgICAgICAgICAgIC8vIEVudHJ5IHBvaW50IGZvciBr
YXJtYS4KLSAgICAgICAgICAgICd0ZXN0L3Rlc3QtbWFpbi5qcycsCi0KLSAgICAgICAgICAgIHsg
cGF0dGVybjogJ3Rlc3QvbW9jay8qLmpzJywgaW5jbHVkZWQ6IHRydWUgfQotICAgICAgICBdLAot
Ci0gICAgICAgIC8vIGxpc3Qgb2YgZmlsZXMgdG8gZXhjbHVkZQotICAgICAgICBleGNsdWRlOiBb
XSwKLQotICAgICAgICAvLyB1c2UgZG90cyByZXBvcnRlciwgYXMgdHJhdmlzIHRlcm1pbmFsIGRv
ZXMgbm90IHN1cHBvcnQgZXNjYXBpbmcgc2VxdWVuY2VzCi0gICAgICAgIC8vIHBvc3NpYmxlIHZh
bHVlczogJ2RvdHMnLCAncHJvZ3Jlc3MnCi0gICAgICAgIC8vIENMSSAtLXJlcG9ydGVycyBwcm9n
cmVzcwotICAgICAgICByZXBvcnRlcnM6IFsnZG90cyddLAotCi0gICAgICAgIC8vIGVuYWJsZSAv
IGRpc2FibGUgd2F0Y2hpbmcgZmlsZSBhbmQgZXhlY3V0aW5nIHRlc3RzIHdoZW5ldmVyIGFueSBm
aWxlIGNoYW5nZXMKLSAgICAgICAgLy8gQ0xJIC0tYXV0by13YXRjaCAtLW5vLWF1dG8td2F0Y2gK
LSAgICAgICAgYXV0b1dhdGNoOiB0cnVlLAotCi0gICAgICAgIC8vIFN0YXJ0IHRoZXNlIGJyb3dz
ZXJzLCBjdXJyZW50bHkgYXZhaWxhYmxlOgotICAgICAgICAvLyAtIENocm9tZQotICAgICAgICAv
LyAtIENocm9tZUNhbmFyeQotICAgICAgICAvLyAtIEZpcmVmb3gKLSAgICAgICAgLy8gLSBPcGVy
YQotICAgICAgICAvLyAtIFNhZmFyaSAob25seSBNYWMpCi0gICAgICAgIC8vIC0gUGhhbnRvbUpT
Ci0gICAgICAgIC8vIC0gSUUgKG9ubHkgV2luZG93cykKLSAgICAgICAgLy8gQ0xJIC0tYnJvd3Nl
cnMgQ2hyb21lLCBGaXJlZm94LCBTYWZhcmkKLSAgICAgICAgYnJvd3NlcnM6IFsnQ2hyb21lJywg
J0ZpcmVmb3gnXSwKLQotICAgICAgICAvLyBJZiBicm93c2VyIGRvZXMgbm90IGNhcHR1cmUgaW4g
Z2l2ZW4gdGltZW91dCBbbXNdLCBraWxsIGl0Ci0gICAgICAgIC8vIENMSSAtLWNhcHR1cmUtdGlt
ZW91dCA1MDAwCi0gICAgICAgIGNhcHR1cmVUaW1lb3V0OiAyMDAwMCwKLQotICAgICAgICAvLyBB
dXRvIHJ1biB0ZXN0cyBvbiBzdGFydCAod2hlbiBicm93c2VycyBhcmUgY2FwdHVyZWQpIGFuZCBl
eGl0Ci0gICAgICAgIC8vIENMSSAtLXNpbmdsZS1ydW4gLS1uby1zaW5nbGUtcnVuCi0gICAgICAg
IHNpbmdsZVJ1bjogZmFsc2UsCi0KLSAgICAgICAgcGx1Z2luczogWwotICAgICAgICAgICAgJ2th
cm1hLWphc21pbmUnLAotICAgICAgICAgICAgJ2thcm1hLXJlcXVpcmVqcycsCi0gICAgICAgICAg
ICAna2FybWEtY2hyb21lLWxhdW5jaGVyJywKLSAgICAgICAgICAgICdrYXJtYS1maXJlZm94LWxh
dW5jaGVyJywKLSAgICAgICAgICAgICdrYXJtYS1pZS1sYXVuY2hlcicsCi0gICAgICAgICAgICAn
a2FybWEtcGhhbnRvbWpzLWxhdW5jaGVyJywKLSAgICAgICAgICAgICdrYXJtYS1zYWZhcmktbGF1
bmNoZXInCi0gICAgICAgIF0KLSAgICB9KTsKLX07CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2RlcGVuZGVuY3ktZXhhbXBsZXMvZmxp
Z2h0L25vZGVfbW9kdWxlcy9yZXF1aXJlanMvcmVxdWlyZS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZGVwZW5kZW5jeS1leGFtcGxlcy9mbGlnaHQv
bm9kZV9tb2R1bGVzL3JlcXVpcmVqcy9yZXF1aXJlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3YTViYjFkM2Jl
NzVjMmY2ZTBkN2Y4NDg0ZDAwYjg5MDMxOWRhMGYKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2RlcGVuZGVuY3ktZXhhbXBs
ZXMvZmxpZ2h0L25vZGVfbW9kdWxlcy9yZXF1aXJlanMvcmVxdWlyZS5qcwpAQCAtMCwwICsxLDIw
NzYgQEAKKy8qKiB2aW06IGV0OnRzPTQ6c3c9NDpzdHM9NAorICogQGxpY2Vuc2UgUmVxdWlyZUpT
IDIuMS4xNSBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxNCwgVGhlIERvam8gRm91bmRhdGlvbiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICogQXZhaWxhYmxlIHZpYSB0aGUgTUlUIG9yIG5ldyBCU0QgbGlj
ZW5zZS4KKyAqIHNlZTogaHR0cDovL2dpdGh1Yi5jb20vanJidXJrZS9yZXF1aXJlanMgZm9yIGRl
dGFpbHMKKyAqLworLy9Ob3QgdXNpbmcgc3RyaWN0OiB1bmV2ZW4gc3RyaWN0IHN1cHBvcnQgaW4g
YnJvd3NlcnMsICMzOTIsIGFuZCBjYXVzZXMKKy8vcHJvYmxlbXMgd2l0aCByZXF1aXJlanMuZXhl
YygpL3RyYW5zcGlsZXIgcGx1Z2lucyB0aGF0IG1heSBub3QgYmUgc3RyaWN0LgorLypqc2xpbnQg
cmVnZXhwOiB0cnVlLCBub21lbjogdHJ1ZSwgc2xvcHB5OiB0cnVlICovCisvKmdsb2JhbCB3aW5k
b3csIG5hdmlnYXRvciwgZG9jdW1lbnQsIGltcG9ydFNjcmlwdHMsIHNldFRpbWVvdXQsIG9wZXJh
ICovCisKK3ZhciByZXF1aXJlanMsIHJlcXVpcmUsIGRlZmluZTsKKyhmdW5jdGlvbiAoZ2xvYmFs
KSB7CisgICAgdmFyIHJlcSwgcywgaGVhZCwgYmFzZUVsZW1lbnQsIGRhdGFNYWluLCBzcmMsCisg
ICAgICAgIGludGVyYWN0aXZlU2NyaXB0LCBjdXJyZW50bHlBZGRpbmdTY3JpcHQsIG1haW5TY3Jp
cHQsIHN1YlBhdGgsCisgICAgICAgIHZlcnNpb24gPSAnMi4xLjE1JywKKyAgICAgICAgY29tbWVu
dFJlZ0V4cCA9IC8oXC9cKihbXHNcU10qPylcKlwvfChbXjpdfF4pXC9cLyguKikkKS9tZywKKyAg
ICAgICAgY2pzUmVxdWlyZVJlZ0V4cCA9IC9bXi5dXHMqcmVxdWlyZVxzKlwoXHMqWyInXShbXici
XHNdKylbIiddXHMqXCkvZywKKyAgICAgICAganNTdWZmaXhSZWdFeHAgPSAvXC5qcyQvLAorICAg
ICAgICBjdXJyRGlyUmVnRXhwID0gL15cLlwvLywKKyAgICAgICAgb3AgPSBPYmplY3QucHJvdG90
eXBlLAorICAgICAgICBvc3RyaW5nID0gb3AudG9TdHJpbmcsCisgICAgICAgIGhhc093biA9IG9w
Lmhhc093blByb3BlcnR5LAorICAgICAgICBhcCA9IEFycmF5LnByb3RvdHlwZSwKKyAgICAgICAg
YXBzcCA9IGFwLnNwbGljZSwKKyAgICAgICAgaXNCcm93c2VyID0gISEodHlwZW9mIHdpbmRvdyAh
PT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgd2lu
ZG93LmRvY3VtZW50KSwKKyAgICAgICAgaXNXZWJXb3JrZXIgPSAhaXNCcm93c2VyICYmIHR5cGVv
ZiBpbXBvcnRTY3JpcHRzICE9PSAndW5kZWZpbmVkJywKKyAgICAgICAgLy9QUzMgaW5kaWNhdGVz
IGxvYWRlZCBhbmQgY29tcGxldGUsIGJ1dCBuZWVkIHRvIHdhaXQgZm9yIGNvbXBsZXRlCisgICAg
ICAgIC8vc3BlY2lmaWNhbGx5LiBTZXF1ZW5jZSBpcyAnbG9hZGluZycsICdsb2FkZWQnLCBleGVj
dXRpb24sCisgICAgICAgIC8vIHRoZW4gJ2NvbXBsZXRlJy4gVGhlIFVBIGNoZWNrIGlzIHVuZm9y
dHVuYXRlLCBidXQgbm90IHN1cmUgaG93CisgICAgICAgIC8vdG8gZmVhdHVyZSB0ZXN0IHcvbyBj
YXVzaW5nIHBlcmYgaXNzdWVzLgorICAgICAgICByZWFkeVJlZ0V4cCA9IGlzQnJvd3NlciAmJiBu
YXZpZ2F0b3IucGxhdGZvcm0gPT09ICdQTEFZU1RBVElPTiAzJyA/CisgICAgICAgICAgICAgICAg
ICAgICAgL15jb21wbGV0ZSQvIDogL14oY29tcGxldGV8bG9hZGVkKSQvLAorICAgICAgICBkZWZD
b250ZXh0TmFtZSA9ICdfJywKKyAgICAgICAgLy9PaCB0aGUgdHJhZ2VkeSwgZGV0ZWN0aW5nIG9w
ZXJhLiBTZWUgdGhlIHVzYWdlIG9mIGlzT3BlcmEgZm9yIHJlYXNvbi4KKyAgICAgICAgaXNPcGVy
YSA9IHR5cGVvZiBvcGVyYSAhPT0gJ3VuZGVmaW5lZCcgJiYgb3BlcmEudG9TdHJpbmcoKSA9PT0g
J1tvYmplY3QgT3BlcmFdJywKKyAgICAgICAgY29udGV4dHMgPSB7fSwKKyAgICAgICAgY2ZnID0g
e30sCisgICAgICAgIGdsb2JhbERlZlF1ZXVlID0gW10sCisgICAgICAgIHVzZUludGVyYWN0aXZl
ID0gZmFsc2U7CisKKyAgICBmdW5jdGlvbiBpc0Z1bmN0aW9uKGl0KSB7CisgICAgICAgIHJldHVy
biBvc3RyaW5nLmNhbGwoaXQpID09PSAnW29iamVjdCBGdW5jdGlvbl0nOworICAgIH0KKworICAg
IGZ1bmN0aW9uIGlzQXJyYXkoaXQpIHsKKyAgICAgICAgcmV0dXJuIG9zdHJpbmcuY2FsbChpdCkg
PT09ICdbb2JqZWN0IEFycmF5XSc7CisgICAgfQorCisgICAgLyoqCisgICAgICogSGVscGVyIGZ1
bmN0aW9uIGZvciBpdGVyYXRpbmcgb3ZlciBhbiBhcnJheS4gSWYgdGhlIGZ1bmMgcmV0dXJucwor
ICAgICAqIGEgdHJ1ZSB2YWx1ZSwgaXQgd2lsbCBicmVhayBvdXQgb2YgdGhlIGxvb3AuCisgICAg
ICovCisgICAgZnVuY3Rpb24gZWFjaChhcnksIGZ1bmMpIHsKKyAgICAgICAgaWYgKGFyeSkgewor
ICAgICAgICAgICAgdmFyIGk7CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYXJ5Lmxlbmd0
aDsgaSArPSAxKSB7CisgICAgICAgICAgICAgICAgaWYgKGFyeVtpXSAmJiBmdW5jKGFyeVtpXSwg
aSwgYXJ5KSkgeworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBIZWxw
ZXIgZnVuY3Rpb24gZm9yIGl0ZXJhdGluZyBvdmVyIGFuIGFycmF5IGJhY2t3YXJkcy4gSWYgdGhl
IGZ1bmMKKyAgICAgKiByZXR1cm5zIGEgdHJ1ZSB2YWx1ZSwgaXQgd2lsbCBicmVhayBvdXQgb2Yg
dGhlIGxvb3AuCisgICAgICovCisgICAgZnVuY3Rpb24gZWFjaFJldmVyc2UoYXJ5LCBmdW5jKSB7
CisgICAgICAgIGlmIChhcnkpIHsKKyAgICAgICAgICAgIHZhciBpOworICAgICAgICAgICAgZm9y
IChpID0gYXJ5Lmxlbmd0aCAtIDE7IGkgPiAtMTsgaSAtPSAxKSB7CisgICAgICAgICAgICAgICAg
aWYgKGFyeVtpXSAmJiBmdW5jKGFyeVtpXSwgaSwgYXJ5KSkgeworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBmdW5jdGlvbiBoYXNQcm9wKG9iaiwgcHJvcCkgeworICAgICAgICByZXR1cm4g
aGFzT3duLmNhbGwob2JqLCBwcm9wKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBnZXRPd24ob2Jq
LCBwcm9wKSB7CisgICAgICAgIHJldHVybiBoYXNQcm9wKG9iaiwgcHJvcCkgJiYgb2JqW3Byb3Bd
OworICAgIH0KKworICAgIC8qKgorICAgICAqIEN5Y2xlcyBvdmVyIHByb3BlcnRpZXMgaW4gYW4g
b2JqZWN0IGFuZCBjYWxscyBhIGZ1bmN0aW9uIGZvciBlYWNoCisgICAgICogcHJvcGVydHkgdmFs
dWUuIElmIHRoZSBmdW5jdGlvbiByZXR1cm5zIGEgdHJ1dGh5IHZhbHVlLCB0aGVuIHRoZQorICAg
ICAqIGl0ZXJhdGlvbiBpcyBzdG9wcGVkLgorICAgICAqLworICAgIGZ1bmN0aW9uIGVhY2hQcm9w
KG9iaiwgZnVuYykgeworICAgICAgICB2YXIgcHJvcDsKKyAgICAgICAgZm9yIChwcm9wIGluIG9i
aikgeworICAgICAgICAgICAgaWYgKGhhc1Byb3Aob2JqLCBwcm9wKSkgeworICAgICAgICAgICAg
ICAgIGlmIChmdW5jKG9ialtwcm9wXSwgcHJvcCkpIHsKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
CisgICAgLyoqCisgICAgICogU2ltcGxlIGZ1bmN0aW9uIHRvIG1peCBpbiBwcm9wZXJ0aWVzIGZy
b20gc291cmNlIGludG8gdGFyZ2V0LAorICAgICAqIGJ1dCBvbmx5IGlmIHRhcmdldCBkb2VzIG5v
dCBhbHJlYWR5IGhhdmUgYSBwcm9wZXJ0eSBvZiB0aGUgc2FtZSBuYW1lLgorICAgICAqLworICAg
IGZ1bmN0aW9uIG1peGluKHRhcmdldCwgc291cmNlLCBmb3JjZSwgZGVlcFN0cmluZ01peGluKSB7
CisgICAgICAgIGlmIChzb3VyY2UpIHsKKyAgICAgICAgICAgIGVhY2hQcm9wKHNvdXJjZSwgZnVu
Y3Rpb24gKHZhbHVlLCBwcm9wKSB7CisgICAgICAgICAgICAgICAgaWYgKGZvcmNlIHx8ICFoYXNQ
cm9wKHRhcmdldCwgcHJvcCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGRlZXBTdHJpbmdN
aXhpbiAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICYmCisgICAgICAgICAg
ICAgICAgICAgICAgICAhaXNBcnJheSh2YWx1ZSkgJiYgIWlzRnVuY3Rpb24odmFsdWUpICYmCisg
ICAgICAgICAgICAgICAgICAgICAgICAhKHZhbHVlIGluc3RhbmNlb2YgUmVnRXhwKSkgeworCisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRhcmdldFtwcm9wXSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRhcmdldFtwcm9wXSA9IHt9OworICAgICAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgbWl4aW4odGFyZ2V0W3Byb3BdLCB2YWx1ZSwg
Zm9yY2UsIGRlZXBTdHJpbmdNaXhpbik7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRbcHJvcF0gPSB2YWx1ZTsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0pOworICAgICAgICB9
CisgICAgICAgIHJldHVybiB0YXJnZXQ7CisgICAgfQorCisgICAgLy9TaW1pbGFyIHRvIEZ1bmN0
aW9uLnByb3RvdHlwZS5iaW5kLCBidXQgdGhlICd0aGlzJyBvYmplY3QgaXMgc3BlY2lmaWVkCisg
ICAgLy9maXJzdCwgc2luY2UgaXQgaXMgZWFzaWVyIHRvIHJlYWQvZmlndXJlIG91dCB3aGF0ICd0
aGlzJyB3aWxsIGJlLgorICAgIGZ1bmN0aW9uIGJpbmQob2JqLCBmbikgeworICAgICAgICByZXR1
cm4gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgcmV0dXJuIGZuLmFwcGx5KG9iaiwgYXJndW1l
bnRzKTsKKyAgICAgICAgfTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzY3JpcHRzKCkgeworICAg
ICAgICByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NjcmlwdCcpOworICAg
IH0KKworICAgIGZ1bmN0aW9uIGRlZmF1bHRPbkVycm9yKGVycikgeworICAgICAgICB0aHJvdyBl
cnI7CisgICAgfQorCisgICAgLy9BbGxvdyBnZXR0aW5nIGEgZ2xvYmFsIHRoYXQgaXMgZXhwcmVz
c2VkIGluCisgICAgLy9kb3Qgbm90YXRpb24sIGxpa2UgJ2EuYi5jJy4KKyAgICBmdW5jdGlvbiBn
ZXRHbG9iYWwodmFsdWUpIHsKKyAgICAgICAgaWYgKCF2YWx1ZSkgeworICAgICAgICAgICAgcmV0
dXJuIHZhbHVlOworICAgICAgICB9CisgICAgICAgIHZhciBnID0gZ2xvYmFsOworICAgICAgICBl
YWNoKHZhbHVlLnNwbGl0KCcuJyksIGZ1bmN0aW9uIChwYXJ0KSB7CisgICAgICAgICAgICBnID0g
Z1twYXJ0XTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybiBnOworICAgIH0KKworICAgIC8q
KgorICAgICAqIENvbnN0cnVjdHMgYW4gZXJyb3Igd2l0aCBhIHBvaW50ZXIgdG8gYW4gVVJMIHdp
dGggbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgKiBAcGFyYW0ge1N0cmluZ30gaWQgdGhlIGVycm9y
IElEIHRoYXQgbWFwcyB0byBhbiBJRCBvbiBhIHdlYiBwYWdlLgorICAgICAqIEBwYXJhbSB7U3Ry
aW5nfSBtZXNzYWdlIGh1bWFuIHJlYWRhYmxlIGVycm9yLgorICAgICAqIEBwYXJhbSB7RXJyb3J9
IFtlcnJdIHRoZSBvcmlnaW5hbCBlcnJvciwgaWYgdGhlcmUgaXMgb25lLgorICAgICAqCisgICAg
ICogQHJldHVybnMge0Vycm9yfQorICAgICAqLworICAgIGZ1bmN0aW9uIG1ha2VFcnJvcihpZCwg
bXNnLCBlcnIsIHJlcXVpcmVNb2R1bGVzKSB7CisgICAgICAgIHZhciBlID0gbmV3IEVycm9yKG1z
ZyArICdcbmh0dHA6Ly9yZXF1aXJlanMub3JnL2RvY3MvZXJyb3JzLmh0bWwjJyArIGlkKTsKKyAg
ICAgICAgZS5yZXF1aXJlVHlwZSA9IGlkOworICAgICAgICBlLnJlcXVpcmVNb2R1bGVzID0gcmVx
dWlyZU1vZHVsZXM7CisgICAgICAgIGlmIChlcnIpIHsKKyAgICAgICAgICAgIGUub3JpZ2luYWxF
cnJvciA9IGVycjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZTsKKyAgICB9CisKKyAgICBp
ZiAodHlwZW9mIGRlZmluZSAhPT0gJ3VuZGVmaW5lZCcpIHsKKyAgICAgICAgLy9JZiBhIGRlZmlu
ZSBpcyBhbHJlYWR5IGluIHBsYXkgdmlhIGFub3RoZXIgQU1EIGxvYWRlciwKKyAgICAgICAgLy9k
byBub3Qgb3ZlcndyaXRlLgorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHR5cGVv
ZiByZXF1aXJlanMgIT09ICd1bmRlZmluZWQnKSB7CisgICAgICAgIGlmIChpc0Z1bmN0aW9uKHJl
cXVpcmVqcykpIHsKKyAgICAgICAgICAgIC8vRG8gbm90IG92ZXJ3cml0ZSBhbiBleGlzdGluZyBy
ZXF1aXJlanMgaW5zdGFuY2UuCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAg
ICAgY2ZnID0gcmVxdWlyZWpzOworICAgICAgICByZXF1aXJlanMgPSB1bmRlZmluZWQ7CisgICAg
fQorCisgICAgLy9BbGxvdyBmb3IgYSByZXF1aXJlIGNvbmZpZyBvYmplY3QKKyAgICBpZiAodHlw
ZW9mIHJlcXVpcmUgIT09ICd1bmRlZmluZWQnICYmICFpc0Z1bmN0aW9uKHJlcXVpcmUpKSB7Cisg
ICAgICAgIC8vYXNzdW1lIGl0IGlzIGEgY29uZmlnIG9iamVjdC4KKyAgICAgICAgY2ZnID0gcmVx
dWlyZTsKKyAgICAgICAgcmVxdWlyZSA9IHVuZGVmaW5lZDsKKyAgICB9CisKKyAgICBmdW5jdGlv
biBuZXdDb250ZXh0KGNvbnRleHROYW1lKSB7CisgICAgICAgIHZhciBpbkNoZWNrTG9hZGVkLCBN
b2R1bGUsIGNvbnRleHQsIGhhbmRsZXJzLAorICAgICAgICAgICAgY2hlY2tMb2FkZWRUaW1lb3V0
SWQsCisgICAgICAgICAgICBjb25maWcgPSB7CisgICAgICAgICAgICAgICAgLy9EZWZhdWx0cy4g
RG8gbm90IHNldCBhIGRlZmF1bHQgZm9yIG1hcAorICAgICAgICAgICAgICAgIC8vY29uZmlnIHRv
IHNwZWVkIHVwIG5vcm1hbGl6ZSgpLCB3aGljaAorICAgICAgICAgICAgICAgIC8vd2lsbCBydW4g
ZmFzdGVyIGlmIHRoZXJlIGlzIG5vIGRlZmF1bHQuCisgICAgICAgICAgICAgICAgd2FpdFNlY29u
ZHM6IDcsCisgICAgICAgICAgICAgICAgYmFzZVVybDogJy4vJywKKyAgICAgICAgICAgICAgICBw
YXRoczoge30sCisgICAgICAgICAgICAgICAgYnVuZGxlczoge30sCisgICAgICAgICAgICAgICAg
cGtnczoge30sCisgICAgICAgICAgICAgICAgc2hpbToge30sCisgICAgICAgICAgICAgICAgY29u
ZmlnOiB7fQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHJlZ2lzdHJ5ID0ge30sCisgICAg
ICAgICAgICAvL3JlZ2lzdHJ5IG9mIGp1c3QgZW5hYmxlZCBtb2R1bGVzLCB0byBzcGVlZAorICAg
ICAgICAgICAgLy9jeWNsZSBicmVha2luZyBjb2RlIHdoZW4gbG90cyBvZiBtb2R1bGVzCisgICAg
ICAgICAgICAvL2FyZSByZWdpc3RlcmVkLCBidXQgbm90IGFjdGl2YXRlZC4KKyAgICAgICAgICAg
IGVuYWJsZWRSZWdpc3RyeSA9IHt9LAorICAgICAgICAgICAgdW5kZWZFdmVudHMgPSB7fSwKKyAg
ICAgICAgICAgIGRlZlF1ZXVlID0gW10sCisgICAgICAgICAgICBkZWZpbmVkID0ge30sCisgICAg
ICAgICAgICB1cmxGZXRjaGVkID0ge30sCisgICAgICAgICAgICBidW5kbGVzTWFwID0ge30sCisg
ICAgICAgICAgICByZXF1aXJlQ291bnRlciA9IDEsCisgICAgICAgICAgICB1bm5vcm1hbGl6ZWRD
b3VudGVyID0gMTsKKworICAgICAgICAvKioKKyAgICAgICAgICogVHJpbXMgdGhlIC4gYW5kIC4u
IGZyb20gYW4gYXJyYXkgb2YgcGF0aCBzZWdtZW50cy4KKyAgICAgICAgICogSXQgd2lsbCBrZWVw
IGEgbGVhZGluZyBwYXRoIHNlZ21lbnQgaWYgYSAuLiB3aWxsIGJlY29tZQorICAgICAgICAgKiB0
aGUgZmlyc3QgcGF0aCBzZWdtZW50LCB0byBoZWxwIHdpdGggbW9kdWxlIG5hbWUgbG9va3VwcywK
KyAgICAgICAgICogd2hpY2ggYWN0IGxpa2UgcGF0aHMsIGJ1dCBjYW4gYmUgcmVtYXBwZWQuIEJ1
dCB0aGUgZW5kIHJlc3VsdCwKKyAgICAgICAgICogYWxsIHBhdGhzIHRoYXQgdXNlIHRoaXMgZnVu
Y3Rpb24gc2hvdWxkIGxvb2sgbm9ybWFsaXplZC4KKyAgICAgICAgICogTk9URTogdGhpcyBtZXRo
b2QgTU9ESUZJRVMgdGhlIGlucHV0IGFycmF5LgorICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSBh
cnkgdGhlIGFycmF5IG9mIHBhdGggc2VnbWVudHMuCisgICAgICAgICAqLworICAgICAgICBmdW5j
dGlvbiB0cmltRG90cyhhcnkpIHsKKyAgICAgICAgICAgIHZhciBpLCBwYXJ0OworICAgICAgICAg
ICAgZm9yIChpID0gMDsgaSA8IGFyeS5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgIHBh
cnQgPSBhcnlbaV07CisgICAgICAgICAgICAgICAgaWYgKHBhcnQgPT09ICcuJykgeworICAgICAg
ICAgICAgICAgICAgICBhcnkuc3BsaWNlKGksIDEpOworICAgICAgICAgICAgICAgICAgICBpIC09
IDE7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwYXJ0ID09PSAnLi4nKSB7CisgICAgICAg
ICAgICAgICAgICAgIC8vIElmIGF0IHRoZSBzdGFydCwgb3IgcHJldmlvdXMgdmFsdWUgaXMgc3Rp
bGwgLi4sCisgICAgICAgICAgICAgICAgICAgIC8vIGtlZXAgdGhlbSBzbyB0aGF0IHdoZW4gY29u
dmVydGVkIHRvIGEgcGF0aCBpdCBtYXkKKyAgICAgICAgICAgICAgICAgICAgLy8gc3RpbGwgd29y
ayB3aGVuIGNvbnZlcnRlZCB0byBhIHBhdGgsIGV2ZW4gdGhvdWdoCisgICAgICAgICAgICAgICAg
ICAgIC8vIGFzIGFuIElEIGl0IGlzIGxlc3MgdGhhbiBpZGVhbC4gSW4gbGFyZ2VyIHBvaW50Cisg
ICAgICAgICAgICAgICAgICAgIC8vIHJlbGVhc2VzLCBtYXkgYmUgYmV0dGVyIHRvIGp1c3Qga2lj
ayBvdXQgYW4gZXJyb3IuCisgICAgICAgICAgICAgICAgICAgIGlmIChpID09PSAwIHx8IChpID09
IDEgJiYgYXJ5WzJdID09PSAnLi4nKSB8fCBhcnlbaSAtIDFdID09PSAnLi4nKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlm
IChpID4gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgYXJ5LnNwbGljZShpIC0gMSwgMik7
CisgICAgICAgICAgICAgICAgICAgICAgICBpIC09IDI7CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAv
KioKKyAgICAgICAgICogR2l2ZW4gYSByZWxhdGl2ZSBtb2R1bGUgbmFtZSwgbGlrZSAuL3NvbWV0
aGluZywgbm9ybWFsaXplIGl0IHRvCisgICAgICAgICAqIGEgcmVhbCBuYW1lIHRoYXQgY2FuIGJl
IG1hcHBlZCB0byBhIHBhdGguCisgICAgICAgICAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lIHRoZSBy
ZWxhdGl2ZSBuYW1lCisgICAgICAgICAqIEBwYXJhbSB7U3RyaW5nfSBiYXNlTmFtZSBhIHJlYWwg
bmFtZSB0aGF0IHRoZSBuYW1lIGFyZyBpcyByZWxhdGl2ZQorICAgICAgICAgKiB0by4KKyAgICAg
ICAgICogQHBhcmFtIHtCb29sZWFufSBhcHBseU1hcCBhcHBseSB0aGUgbWFwIGNvbmZpZyB0byB0
aGUgdmFsdWUuIFNob3VsZAorICAgICAgICAgKiBvbmx5IGJlIGRvbmUgaWYgdGhpcyBub3JtYWxp
emF0aW9uIGlzIGZvciBhIGRlcGVuZGVuY3kgSUQuCisgICAgICAgICAqIEByZXR1cm5zIHtTdHJp
bmd9IG5vcm1hbGl6ZWQgbmFtZQorICAgICAgICAgKi8KKyAgICAgICAgZnVuY3Rpb24gbm9ybWFs
aXplKG5hbWUsIGJhc2VOYW1lLCBhcHBseU1hcCkgeworICAgICAgICAgICAgdmFyIHBrZ01haW4s
IG1hcFZhbHVlLCBuYW1lUGFydHMsIGksIGosIG5hbWVTZWdtZW50LCBsYXN0SW5kZXgsCisgICAg
ICAgICAgICAgICAgZm91bmRNYXAsIGZvdW5kSSwgZm91bmRTdGFyTWFwLCBzdGFySSwgbm9ybWFs
aXplZEJhc2VQYXJ0cywKKyAgICAgICAgICAgICAgICBiYXNlUGFydHMgPSAoYmFzZU5hbWUgJiYg
YmFzZU5hbWUuc3BsaXQoJy8nKSksCisgICAgICAgICAgICAgICAgbWFwID0gY29uZmlnLm1hcCwK
KyAgICAgICAgICAgICAgICBzdGFyTWFwID0gbWFwICYmIG1hcFsnKiddOworCisgICAgICAgICAg
ICAvL0FkanVzdCBhbnkgcmVsYXRpdmUgcGF0aHMuCisgICAgICAgICAgICBpZiAobmFtZSkgewor
ICAgICAgICAgICAgICAgIG5hbWUgPSBuYW1lLnNwbGl0KCcvJyk7CisgICAgICAgICAgICAgICAg
bGFzdEluZGV4ID0gbmFtZS5sZW5ndGggLSAxOworCisgICAgICAgICAgICAgICAgLy8gSWYgd2Fu
dGluZyBub2RlIElEIGNvbXBhdGliaWxpdHksIHN0cmlwIC5qcyBmcm9tIGVuZAorICAgICAgICAg
ICAgICAgIC8vIG9mIElEcy4gSGF2ZSB0byBkbyB0aGlzIGhlcmUsIGFuZCBub3QgaW4gbmFtZVRv
VXJsCisgICAgICAgICAgICAgICAgLy8gYmVjYXVzZSBub2RlIGFsbG93cyBlaXRoZXIgLmpzIG9y
IG5vbiAuanMgdG8gbWFwCisgICAgICAgICAgICAgICAgLy8gdG8gc2FtZSBmaWxlLgorICAgICAg
ICAgICAgICAgIGlmIChjb25maWcubm9kZUlkQ29tcGF0ICYmIGpzU3VmZml4UmVnRXhwLnRlc3Qo
bmFtZVtsYXN0SW5kZXhdKSkgeworICAgICAgICAgICAgICAgICAgICBuYW1lW2xhc3RJbmRleF0g
PSBuYW1lW2xhc3RJbmRleF0ucmVwbGFjZShqc1N1ZmZpeFJlZ0V4cCwgJycpOworICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIFN0YXJ0cyB3aXRoIGEgJy4nIHNvIG5lZWQg
dGhlIGJhc2VOYW1lCisgICAgICAgICAgICAgICAgaWYgKG5hbWVbMF0uY2hhckF0KDApID09PSAn
LicgJiYgYmFzZVBhcnRzKSB7CisgICAgICAgICAgICAgICAgICAgIC8vQ29udmVydCBiYXNlTmFt
ZSB0byBhcnJheSwgYW5kIGxvcCBvZmYgdGhlIGxhc3QgcGFydCwKKyAgICAgICAgICAgICAgICAg
ICAgLy9zbyB0aGF0IC4gbWF0Y2hlcyB0aGF0ICdkaXJlY3RvcnknIGFuZCBub3QgbmFtZSBvZiB0
aGUgYmFzZU5hbWUncworICAgICAgICAgICAgICAgICAgICAvL21vZHVsZS4gRm9yIGluc3RhbmNl
LCBiYXNlTmFtZSBvZiAnb25lL3R3by90aHJlZScsIG1hcHMgdG8KKyAgICAgICAgICAgICAgICAg
ICAgLy8nb25lL3R3by90aHJlZS5qcycsIGJ1dCB3ZSB3YW50IHRoZSBkaXJlY3RvcnksICdvbmUv
dHdvJyBmb3IKKyAgICAgICAgICAgICAgICAgICAgLy90aGlzIG5vcm1hbGl6YXRpb24uCisgICAg
ICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRCYXNlUGFydHMgPSBiYXNlUGFydHMuc2xpY2UoMCwg
YmFzZVBhcnRzLmxlbmd0aCAtIDEpOworICAgICAgICAgICAgICAgICAgICBuYW1lID0gbm9ybWFs
aXplZEJhc2VQYXJ0cy5jb25jYXQobmFtZSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgICAgdHJpbURvdHMobmFtZSk7CisgICAgICAgICAgICAgICAgbmFtZSA9IG5hbWUuam9p
bignLycpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvL0FwcGx5IG1hcCBjb25maWcg
aWYgYXZhaWxhYmxlLgorICAgICAgICAgICAgaWYgKGFwcGx5TWFwICYmIG1hcCAmJiAoYmFzZVBh
cnRzIHx8IHN0YXJNYXApKSB7CisgICAgICAgICAgICAgICAgbmFtZVBhcnRzID0gbmFtZS5zcGxp
dCgnLycpOworCisgICAgICAgICAgICAgICAgb3V0ZXJMb29wOiBmb3IgKGkgPSBuYW1lUGFydHMu
bGVuZ3RoOyBpID4gMDsgaSAtPSAxKSB7CisgICAgICAgICAgICAgICAgICAgIG5hbWVTZWdtZW50
ID0gbmFtZVBhcnRzLnNsaWNlKDAsIGkpLmpvaW4oJy8nKTsKKworICAgICAgICAgICAgICAgICAg
ICBpZiAoYmFzZVBhcnRzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvL0ZpbmQgdGhlIGxv
bmdlc3QgYmFzZU5hbWUgc2VnbWVudCBtYXRjaCBpbiB0aGUgY29uZmlnLgorICAgICAgICAgICAg
ICAgICAgICAgICAgLy9TbywgZG8gam9pbnMgb24gdGhlIGJpZ2dlc3QgdG8gc21hbGxlc3QgbGVu
Z3RocyBvZiBiYXNlUGFydHMuCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGogPSBiYXNl
UGFydHMubGVuZ3RoOyBqID4gMDsgaiAtPSAxKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbWFwVmFsdWUgPSBnZXRPd24obWFwLCBiYXNlUGFydHMuc2xpY2UoMCwgaikuam9pbignLycp
KTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vYmFzZU5hbWUgc2VnbWVudCBoYXMg
Y29uZmlnLCBmaW5kIGlmIGl0IGhhcyBvbmUgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy90aGlzIG5hbWUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hcFZhbHVl
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcFZhbHVlID0gZ2V0T3duKG1h
cFZhbHVlLCBuYW1lU2VnbWVudCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChtYXBWYWx1ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9NYXRj
aCwgdXBkYXRlIG5hbWUgdG8gdGhlIG5ldyB2YWx1ZS4KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZvdW5kTWFwID0gbWFwVmFsdWU7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmb3VuZEkgPSBpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWsgb3V0ZXJMb29wOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgLy9DaGVjayBm
b3IgYSBzdGFyIG1hcCBtYXRjaCwgYnV0IGp1c3QgaG9sZCBvbiB0byBpdCwKKyAgICAgICAgICAg
ICAgICAgICAgLy9pZiB0aGVyZSBpcyBhIHNob3J0ZXIgc2VnbWVudCBtYXRjaCBsYXRlciBpbiBh
IG1hdGNoaW5nCisgICAgICAgICAgICAgICAgICAgIC8vY29uZmlnLCB0aGVuIGZhdm9yIG92ZXIg
dGhpcyBzdGFyIG1hcC4KKyAgICAgICAgICAgICAgICAgICAgaWYgKCFmb3VuZFN0YXJNYXAgJiYg
c3Rhck1hcCAmJiBnZXRPd24oc3Rhck1hcCwgbmFtZVNlZ21lbnQpKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBmb3VuZFN0YXJNYXAgPSBnZXRPd24oc3Rhck1hcCwgbmFtZVNlZ21lbnQpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgc3RhckkgPSBpOworICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKCFmb3VuZE1hcCAmJiBm
b3VuZFN0YXJNYXApIHsKKyAgICAgICAgICAgICAgICAgICAgZm91bmRNYXAgPSBmb3VuZFN0YXJN
YXA7CisgICAgICAgICAgICAgICAgICAgIGZvdW5kSSA9IHN0YXJJOworICAgICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgICAgIGlmIChmb3VuZE1hcCkgeworICAgICAgICAgICAgICAgICAg
ICBuYW1lUGFydHMuc3BsaWNlKDAsIGZvdW5kSSwgZm91bmRNYXApOworICAgICAgICAgICAgICAg
ICAgICBuYW1lID0gbmFtZVBhcnRzLmpvaW4oJy8nKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIElmIHRoZSBuYW1lIHBvaW50cyB0byBhIHBhY2th
Z2UncyBuYW1lLCB1c2UKKyAgICAgICAgICAgIC8vIHRoZSBwYWNrYWdlIG1haW4gaW5zdGVhZC4K
KyAgICAgICAgICAgIHBrZ01haW4gPSBnZXRPd24oY29uZmlnLnBrZ3MsIG5hbWUpOworCisgICAg
ICAgICAgICByZXR1cm4gcGtnTWFpbiA/IHBrZ01haW4gOiBuYW1lOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gcmVtb3ZlU2NyaXB0KG5hbWUpIHsKKyAgICAgICAgICAgIGlmIChpc0Jy
b3dzZXIpIHsKKyAgICAgICAgICAgICAgICBlYWNoKHNjcmlwdHMoKSwgZnVuY3Rpb24gKHNjcmlw
dE5vZGUpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHNjcmlwdE5vZGUuZ2V0QXR0cmlidXRl
KCdkYXRhLXJlcXVpcmVtb2R1bGUnKSA9PT0gbmFtZSAmJgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNjcmlwdE5vZGUuZ2V0QXR0cmlidXRlKCdkYXRhLXJlcXVpcmVjb250ZXh0JykgPT09
IGNvbnRleHQuY29udGV4dE5hbWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdE5v
ZGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzY3JpcHROb2RlKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgfSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBoYXNQ
YXRoRmFsbGJhY2soaWQpIHsKKyAgICAgICAgICAgIHZhciBwYXRoQ29uZmlnID0gZ2V0T3duKGNv
bmZpZy5wYXRocywgaWQpOworICAgICAgICAgICAgaWYgKHBhdGhDb25maWcgJiYgaXNBcnJheShw
YXRoQ29uZmlnKSAmJiBwYXRoQ29uZmlnLmxlbmd0aCA+IDEpIHsKKyAgICAgICAgICAgICAgICAv
L1BvcCBvZmYgdGhlIGZpcnN0IGFycmF5IHZhbHVlLCBzaW5jZSBpdCBmYWlsZWQsIGFuZAorICAg
ICAgICAgICAgICAgIC8vcmV0cnkKKyAgICAgICAgICAgICAgICBwYXRoQ29uZmlnLnNoaWZ0KCk7
CisgICAgICAgICAgICAgICAgY29udGV4dC5yZXF1aXJlLnVuZGVmKGlkKTsKKworICAgICAgICAg
ICAgICAgIC8vQ3VzdG9tIHJlcXVpcmUgdGhhdCBkb2VzIG5vdCBkbyBtYXAgdHJhbnNsYXRpb24s
IHNpbmNlCisgICAgICAgICAgICAgICAgLy9JRCBpcyAiYWJzb2x1dGUiLCBhbHJlYWR5IG1hcHBl
ZC9yZXNvbHZlZC4KKyAgICAgICAgICAgICAgICBjb250ZXh0Lm1ha2VSZXF1aXJlKG51bGwsIHsK
KyAgICAgICAgICAgICAgICAgICAgc2tpcE1hcDogdHJ1ZQorICAgICAgICAgICAgICAgIH0pKFtp
ZF0pOworCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKworICAgICAgICAvL1R1cm5zIGEgcGx1Z2luIXJlc291cmNlIHRvIFtwbHVnaW4sIHJl
c291cmNlXQorICAgICAgICAvL3dpdGggdGhlIHBsdWdpbiBiZWluZyB1bmRlZmluZWQgaWYgdGhl
IG5hbWUKKyAgICAgICAgLy9kaWQgbm90IGhhdmUgYSBwbHVnaW4gcHJlZml4LgorICAgICAgICBm
dW5jdGlvbiBzcGxpdFByZWZpeChuYW1lKSB7CisgICAgICAgICAgICB2YXIgcHJlZml4LAorICAg
ICAgICAgICAgICAgIGluZGV4ID0gbmFtZSA/IG5hbWUuaW5kZXhPZignIScpIDogLTE7CisgICAg
ICAgICAgICBpZiAoaW5kZXggPiAtMSkgeworICAgICAgICAgICAgICAgIHByZWZpeCA9IG5hbWUu
c3Vic3RyaW5nKDAsIGluZGV4KTsKKyAgICAgICAgICAgICAgICBuYW1lID0gbmFtZS5zdWJzdHJp
bmcoaW5kZXggKyAxLCBuYW1lLmxlbmd0aCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBy
ZXR1cm4gW3ByZWZpeCwgbmFtZV07CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAg
ICogQ3JlYXRlcyBhIG1vZHVsZSBtYXBwaW5nIHRoYXQgaW5jbHVkZXMgcGx1Z2luIHByZWZpeCwg
bW9kdWxlCisgICAgICAgICAqIG5hbWUsIGFuZCBwYXRoLiBJZiBwYXJlbnRNb2R1bGVNYXAgaXMg
cHJvdmlkZWQgaXQgd2lsbAorICAgICAgICAgKiBhbHNvIG5vcm1hbGl6ZSB0aGUgbmFtZSB2aWEg
cmVxdWlyZS5ub3JtYWxpemUoKQorICAgICAgICAgKgorICAgICAgICAgKiBAcGFyYW0ge1N0cmlu
Z30gbmFtZSB0aGUgbW9kdWxlIG5hbWUKKyAgICAgICAgICogQHBhcmFtIHtTdHJpbmd9IFtwYXJl
bnRNb2R1bGVNYXBdIHBhcmVudCBtb2R1bGUgbWFwCisgICAgICAgICAqIGZvciB0aGUgbW9kdWxl
IG5hbWUsIHVzZWQgdG8gcmVzb2x2ZSByZWxhdGl2ZSBuYW1lcy4KKyAgICAgICAgICogQHBhcmFt
IHtCb29sZWFufSBpc05vcm1hbGl6ZWQ6IGlzIHRoZSBJRCBhbHJlYWR5IG5vcm1hbGl6ZWQuCisg
ICAgICAgICAqIFRoaXMgaXMgdHJ1ZSBpZiB0aGlzIGNhbGwgaXMgZG9uZSBmb3IgYSBkZWZpbmUo
KSBtb2R1bGUgSUQuCisgICAgICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gYXBwbHlNYXA6IGFwcGx5
IHRoZSBtYXAgY29uZmlnIHRvIHRoZSBJRC4KKyAgICAgICAgICogU2hvdWxkIG9ubHkgYmUgdHJ1
ZSBpZiB0aGlzIG1hcCBpcyBmb3IgYSBkZXBlbmRlbmN5LgorICAgICAgICAgKgorICAgICAgICAg
KiBAcmV0dXJucyB7T2JqZWN0fQorICAgICAgICAgKi8KKyAgICAgICAgZnVuY3Rpb24gbWFrZU1v
ZHVsZU1hcChuYW1lLCBwYXJlbnRNb2R1bGVNYXAsIGlzTm9ybWFsaXplZCwgYXBwbHlNYXApIHsK
KyAgICAgICAgICAgIHZhciB1cmwsIHBsdWdpbk1vZHVsZSwgc3VmZml4LCBuYW1lUGFydHMsCisg
ICAgICAgICAgICAgICAgcHJlZml4ID0gbnVsbCwKKyAgICAgICAgICAgICAgICBwYXJlbnROYW1l
ID0gcGFyZW50TW9kdWxlTWFwID8gcGFyZW50TW9kdWxlTWFwLm5hbWUgOiBudWxsLAorICAgICAg
ICAgICAgICAgIG9yaWdpbmFsTmFtZSA9IG5hbWUsCisgICAgICAgICAgICAgICAgaXNEZWZpbmUg
PSB0cnVlLAorICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWROYW1lID0gJyc7CisKKyAgICAgICAg
ICAgIC8vSWYgbm8gbmFtZSwgdGhlbiBpdCBtZWFucyBpdCBpcyBhIHJlcXVpcmUgY2FsbCwgZ2Vu
ZXJhdGUgYW4KKyAgICAgICAgICAgIC8vaW50ZXJuYWwgbmFtZS4KKyAgICAgICAgICAgIGlmICgh
bmFtZSkgeworICAgICAgICAgICAgICAgIGlzRGVmaW5lID0gZmFsc2U7CisgICAgICAgICAgICAg
ICAgbmFtZSA9ICdfQHInICsgKHJlcXVpcmVDb3VudGVyICs9IDEpOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBuYW1lUGFydHMgPSBzcGxpdFByZWZpeChuYW1lKTsKKyAgICAgICAgICAg
IHByZWZpeCA9IG5hbWVQYXJ0c1swXTsKKyAgICAgICAgICAgIG5hbWUgPSBuYW1lUGFydHNbMV07
CisKKyAgICAgICAgICAgIGlmIChwcmVmaXgpIHsKKyAgICAgICAgICAgICAgICBwcmVmaXggPSBu
b3JtYWxpemUocHJlZml4LCBwYXJlbnROYW1lLCBhcHBseU1hcCk7CisgICAgICAgICAgICAgICAg
cGx1Z2luTW9kdWxlID0gZ2V0T3duKGRlZmluZWQsIHByZWZpeCk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIC8vQWNjb3VudCBmb3IgcmVsYXRpdmUgcGF0aHMgaWYgdGhlcmUgaXMgYSBi
YXNlIG5hbWUuCisgICAgICAgICAgICBpZiAobmFtZSkgeworICAgICAgICAgICAgICAgIGlmIChw
cmVmaXgpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHBsdWdpbk1vZHVsZSAmJiBwbHVnaW5N
b2R1bGUubm9ybWFsaXplKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvL1BsdWdpbiBpcyBs
b2FkZWQsIHVzZSBpdHMgbm9ybWFsaXplIG1ldGhvZC4KKyAgICAgICAgICAgICAgICAgICAgICAg
IG5vcm1hbGl6ZWROYW1lID0gcGx1Z2luTW9kdWxlLm5vcm1hbGl6ZShuYW1lLCBmdW5jdGlvbiAo
bmFtZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBub3JtYWxpemUobmFt
ZSwgcGFyZW50TmFtZSwgYXBwbHlNYXApOworICAgICAgICAgICAgICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBJ
ZiBuZXN0ZWQgcGx1Z2luIHJlZmVyZW5jZXMsIHRoZW4gZG8gbm90IHRyeSB0bworICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gbm9ybWFsaXplLCBhcyBpdCB3aWxsIG5vdCBub3JtYWxpemUgY29y
cmVjdGx5LiBUaGlzCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBwbGFjZXMgYSByZXN0cmlj
dGlvbiBvbiByZXNvdXJjZUlkcywgYW5kIHRoZSBsb25nZXIKKyAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIHRlcm0gc29sdXRpb24gaXMgbm90IHRvIG5vcm1hbGl6ZSB1bnRpbCBwbHVnaW5zIGFy
ZQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9hZGVkIGFuZCBhbGwgbm9ybWFsaXphdGlv
bnMgdG8gYWxsb3cgZm9yIGFzeW5jCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2FkaW5n
IG9mIGEgbG9hZGVyIHBsdWdpbi4gQnV0IGZvciBub3csIGZpeGVzIHRoZQorICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gY29tbW9uIHVzZXMuIERldGFpbHMgaW4gIzExMzEKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG5vcm1hbGl6ZWROYW1lID0gbmFtZS5pbmRleE9mKCchJykgPT09IC0xID8K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplKG5hbWUs
IHBhcmVudE5hbWUsIGFwcGx5TWFwKSA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG5hbWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAvL0EgcmVndWxhciBtb2R1bGUuCisgICAgICAg
ICAgICAgICAgICAgIG5vcm1hbGl6ZWROYW1lID0gbm9ybWFsaXplKG5hbWUsIHBhcmVudE5hbWUs
IGFwcGx5TWFwKTsKKworICAgICAgICAgICAgICAgICAgICAvL05vcm1hbGl6ZWQgbmFtZSBtYXkg
YmUgYSBwbHVnaW4gSUQgZHVlIHRvIG1hcCBjb25maWcKKyAgICAgICAgICAgICAgICAgICAgLy9h
cHBsaWNhdGlvbiBpbiBub3JtYWxpemUuIFRoZSBtYXAgY29uZmlnIHZhbHVlcyBtdXN0CisgICAg
ICAgICAgICAgICAgICAgIC8vYWxyZWFkeSBiZSBub3JtYWxpemVkLCBzbyBkbyBub3QgbmVlZCB0
byByZWRvIHRoYXQgcGFydC4KKyAgICAgICAgICAgICAgICAgICAgbmFtZVBhcnRzID0gc3BsaXRQ
cmVmaXgobm9ybWFsaXplZE5hbWUpOworICAgICAgICAgICAgICAgICAgICBwcmVmaXggPSBuYW1l
UGFydHNbMF07CisgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWROYW1lID0gbmFtZVBhcnRz
WzFdOworICAgICAgICAgICAgICAgICAgICBpc05vcm1hbGl6ZWQgPSB0cnVlOworCisgICAgICAg
ICAgICAgICAgICAgIHVybCA9IGNvbnRleHQubmFtZVRvVXJsKG5vcm1hbGl6ZWROYW1lKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vSWYgdGhlIGlk
IGlzIGEgcGx1Z2luIGlkIHRoYXQgY2Fubm90IGJlIGRldGVybWluZWQgaWYgaXQgbmVlZHMKKyAg
ICAgICAgICAgIC8vbm9ybWFsaXphdGlvbiwgc3RhbXAgaXQgd2l0aCBhIHVuaXF1ZSBJRCBzbyB0
d28gbWF0Y2hpbmcgcmVsYXRpdmUKKyAgICAgICAgICAgIC8vaWRzIHRoYXQgbWF5IGNvbmZsaWN0
IGNhbiBiZSBzZXBhcmF0ZS4KKyAgICAgICAgICAgIHN1ZmZpeCA9IHByZWZpeCAmJiAhcGx1Z2lu
TW9kdWxlICYmICFpc05vcm1hbGl6ZWQgPworICAgICAgICAgICAgICAgICAgICAgJ191bm5vcm1h
bGl6ZWQnICsgKHVubm9ybWFsaXplZENvdW50ZXIgKz0gMSkgOgorICAgICAgICAgICAgICAgICAg
ICAgJyc7CisKKyAgICAgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAgICAgcHJlZml4OiBw
cmVmaXgsCisgICAgICAgICAgICAgICAgbmFtZTogbm9ybWFsaXplZE5hbWUsCisgICAgICAgICAg
ICAgICAgcGFyZW50TWFwOiBwYXJlbnRNb2R1bGVNYXAsCisgICAgICAgICAgICAgICAgdW5ub3Jt
YWxpemVkOiAhIXN1ZmZpeCwKKyAgICAgICAgICAgICAgICB1cmw6IHVybCwKKyAgICAgICAgICAg
ICAgICBvcmlnaW5hbE5hbWU6IG9yaWdpbmFsTmFtZSwKKyAgICAgICAgICAgICAgICBpc0RlZmlu
ZTogaXNEZWZpbmUsCisgICAgICAgICAgICAgICAgaWQ6IChwcmVmaXggPworICAgICAgICAgICAg
ICAgICAgICAgICAgcHJlZml4ICsgJyEnICsgbm9ybWFsaXplZE5hbWUgOgorICAgICAgICAgICAg
ICAgICAgICAgICAgbm9ybWFsaXplZE5hbWUpICsgc3VmZml4CisgICAgICAgICAgICB9OworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gZ2V0TW9kdWxlKGRlcE1hcCkgeworICAgICAgICAg
ICAgdmFyIGlkID0gZGVwTWFwLmlkLAorICAgICAgICAgICAgICAgIG1vZCA9IGdldE93bihyZWdp
c3RyeSwgaWQpOworCisgICAgICAgICAgICBpZiAoIW1vZCkgeworICAgICAgICAgICAgICAgIG1v
ZCA9IHJlZ2lzdHJ5W2lkXSA9IG5ldyBjb250ZXh0Lk1vZHVsZShkZXBNYXApOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICByZXR1cm4gbW9kOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gb24oZGVwTWFwLCBuYW1lLCBmbikgeworICAgICAgICAgICAgdmFyIGlkID0gZGVwTWFw
LmlkLAorICAgICAgICAgICAgICAgIG1vZCA9IGdldE93bihyZWdpc3RyeSwgaWQpOworCisgICAg
ICAgICAgICBpZiAoaGFzUHJvcChkZWZpbmVkLCBpZCkgJiYKKyAgICAgICAgICAgICAgICAgICAg
KCFtb2QgfHwgbW9kLmRlZmluZUVtaXRDb21wbGV0ZSkpIHsKKyAgICAgICAgICAgICAgICBpZiAo
bmFtZSA9PT0gJ2RlZmluZWQnKSB7CisgICAgICAgICAgICAgICAgICAgIGZuKGRlZmluZWRbaWRd
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIG1vZCA9IGdldE1vZHVsZShkZXBNYXApOworICAgICAgICAgICAgICAgIGlmIChtb2QuZXJy
b3IgJiYgbmFtZSA9PT0gJ2Vycm9yJykgeworICAgICAgICAgICAgICAgICAgICBmbihtb2QuZXJy
b3IpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIG1vZC5v
bihuYW1lLCBmbik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gb25FcnJvcihlcnIsIGVycmJhY2spIHsKKyAgICAgICAgICAg
IHZhciBpZHMgPSBlcnIucmVxdWlyZU1vZHVsZXMsCisgICAgICAgICAgICAgICAgbm90aWZpZWQg
PSBmYWxzZTsKKworICAgICAgICAgICAgaWYgKGVycmJhY2spIHsKKyAgICAgICAgICAgICAgICBl
cnJiYWNrKGVycik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGVhY2go
aWRzLCBmdW5jdGlvbiAoaWQpIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIG1vZCA9IGdldE93
bihyZWdpc3RyeSwgaWQpOworICAgICAgICAgICAgICAgICAgICBpZiAobW9kKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAvL1NldCBlcnJvciBvbiBtb2R1bGUsIHNvIGl0IHNraXBzIHRpbWVv
dXQgY2hlY2tzLgorICAgICAgICAgICAgICAgICAgICAgICAgbW9kLmVycm9yID0gZXJyOworICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKG1vZC5ldmVudHMuZXJyb3IpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBub3RpZmllZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbW9kLmVtaXQoJ2Vycm9yJywgZXJyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAg
ICAgICAgaWYgKCFub3RpZmllZCkgeworICAgICAgICAgICAgICAgICAgICByZXEub25FcnJvcihl
cnIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAg
ICAgIC8qKgorICAgICAgICAgKiBJbnRlcm5hbCBtZXRob2QgdG8gdHJhbnNmZXIgZ2xvYmFsUXVl
dWUgaXRlbXMgdG8gdGhpcyBjb250ZXh0J3MKKyAgICAgICAgICogZGVmUXVldWUuCisgICAgICAg
ICAqLworICAgICAgICBmdW5jdGlvbiB0YWtlR2xvYmFsUXVldWUoKSB7CisgICAgICAgICAgICAv
L1B1c2ggYWxsIHRoZSBnbG9iYWxEZWZRdWV1ZSBpdGVtcyBpbnRvIHRoZSBjb250ZXh0J3MgZGVm
UXVldWUKKyAgICAgICAgICAgIGlmIChnbG9iYWxEZWZRdWV1ZS5sZW5ndGgpIHsKKyAgICAgICAg
ICAgICAgICAvL0FycmF5IHNwbGljZSBpbiB0aGUgdmFsdWVzIHNpbmNlIHRoZSBjb250ZXh0IGNv
ZGUgaGFzIGEKKyAgICAgICAgICAgICAgICAvL2xvY2FsIHZhciByZWYgdG8gZGVmUXVldWUsIHNv
IGNhbm5vdCBqdXN0IHJlYXNzaWduIHRoZSBvbmUKKyAgICAgICAgICAgICAgICAvL29uIGNvbnRl
eHQuCisgICAgICAgICAgICAgICAgYXBzcC5hcHBseShkZWZRdWV1ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFtkZWZRdWV1ZS5sZW5ndGgsIDBdLmNvbmNhdChnbG9iYWxEZWZRdWV1ZSkp
OworICAgICAgICAgICAgICAgIGdsb2JhbERlZlF1ZXVlID0gW107CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKworICAgICAgICBoYW5kbGVycyA9IHsKKyAgICAgICAgICAgICdyZXF1aXJlJzog
ZnVuY3Rpb24gKG1vZCkgeworICAgICAgICAgICAgICAgIGlmIChtb2QucmVxdWlyZSkgeworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbW9kLnJlcXVpcmU7CisgICAgICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChtb2QucmVxdWlyZSA9IGNvbnRleHQu
bWFrZVJlcXVpcmUobW9kLm1hcCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0s
CisgICAgICAgICAgICAnZXhwb3J0cyc6IGZ1bmN0aW9uIChtb2QpIHsKKyAgICAgICAgICAgICAg
ICBtb2QudXNpbmdFeHBvcnRzID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBpZiAobW9kLm1hcC5p
c0RlZmluZSkgeworICAgICAgICAgICAgICAgICAgICBpZiAobW9kLmV4cG9ydHMpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiAoZGVmaW5lZFttb2QubWFwLmlkXSA9IG1vZC5leHBv
cnRzKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiAobW9kLmV4cG9ydHMgPSBkZWZpbmVkW21vZC5tYXAuaWRdID0ge30pOworICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgICdtb2R1bGUnOiBmdW5jdGlvbiAobW9kKSB7CisgICAgICAgICAgICAgICAgaWYg
KG1vZC5tb2R1bGUpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1vZC5tb2R1bGU7Cisg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChtb2Qu
bW9kdWxlID0geworICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IG1vZC5tYXAuaWQsCisgICAg
ICAgICAgICAgICAgICAgICAgICB1cmk6IG1vZC5tYXAudXJsLAorICAgICAgICAgICAgICAgICAg
ICAgICAgY29uZmlnOiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuICBnZXRPd24oY29uZmlnLmNvbmZpZywgbW9kLm1hcC5pZCkgfHwge307CisgICAgICAg
ICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgZXhwb3J0czogbW9k
LmV4cG9ydHMgfHwgKG1vZC5leHBvcnRzID0ge30pCisgICAgICAgICAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBm
dW5jdGlvbiBjbGVhblJlZ2lzdHJ5KGlkKSB7CisgICAgICAgICAgICAvL0NsZWFuIHVwIG1hY2hp
bmVyeSB1c2VkIGZvciB3YWl0aW5nIG1vZHVsZXMuCisgICAgICAgICAgICBkZWxldGUgcmVnaXN0
cnlbaWRdOworICAgICAgICAgICAgZGVsZXRlIGVuYWJsZWRSZWdpc3RyeVtpZF07CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBicmVha0N5Y2xlKG1vZCwgdHJhY2VkLCBwcm9jZXNzZWQp
IHsKKyAgICAgICAgICAgIHZhciBpZCA9IG1vZC5tYXAuaWQ7CisKKyAgICAgICAgICAgIGlmICht
b2QuZXJyb3IpIHsKKyAgICAgICAgICAgICAgICBtb2QuZW1pdCgnZXJyb3InLCBtb2QuZXJyb3Ip
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB0cmFjZWRbaWRdID0gdHJ1
ZTsKKyAgICAgICAgICAgICAgICBlYWNoKG1vZC5kZXBNYXBzLCBmdW5jdGlvbiAoZGVwTWFwLCBp
KSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBkZXBJZCA9IGRlcE1hcC5pZCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGRlcCA9IGdldE93bihyZWdpc3RyeSwgZGVwSWQpOworCisgICAgICAg
ICAgICAgICAgICAgIC8vT25seSBmb3JjZSB0aGluZ3MgdGhhdCBoYXZlIG5vdCBjb21wbGV0ZWQK
KyAgICAgICAgICAgICAgICAgICAgLy9iZWluZyBkZWZpbmVkLCBzbyBzdGlsbCBpbiB0aGUgcmVn
aXN0cnksCisgICAgICAgICAgICAgICAgICAgIC8vYW5kIG9ubHkgaWYgaXQgaGFzIG5vdCBiZWVu
IG1hdGNoZWQgdXAKKyAgICAgICAgICAgICAgICAgICAgLy9pbiB0aGUgbW9kdWxlIGFscmVhZHku
CisgICAgICAgICAgICAgICAgICAgIGlmIChkZXAgJiYgIW1vZC5kZXBNYXRjaGVkW2ldICYmICFw
cm9jZXNzZWRbZGVwSWRdKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0T3duKHRy
YWNlZCwgZGVwSWQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kLmRlZmluZURl
cChpLCBkZWZpbmVkW2RlcElkXSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kLmNo
ZWNrKCk7IC8vcGFzcyBmYWxzZT8KKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtDeWNsZShkZXAsIHRyYWNlZCwgcHJvY2Vz
c2VkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIHByb2Nlc3NlZFtpZF0gPSB0cnVl
OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tMb2Fk
ZWQoKSB7CisgICAgICAgICAgICB2YXIgZXJyLCB1c2luZ1BhdGhGYWxsYmFjaywKKyAgICAgICAg
ICAgICAgICB3YWl0SW50ZXJ2YWwgPSBjb25maWcud2FpdFNlY29uZHMgKiAxMDAwLAorICAgICAg
ICAgICAgICAgIC8vSXQgaXMgcG9zc2libGUgdG8gZGlzYWJsZSB0aGUgd2FpdCBpbnRlcnZhbCBi
eSB1c2luZyB3YWl0U2Vjb25kcyBvZiAwLgorICAgICAgICAgICAgICAgIGV4cGlyZWQgPSB3YWl0
SW50ZXJ2YWwgJiYgKGNvbnRleHQuc3RhcnRUaW1lICsgd2FpdEludGVydmFsKSA8IG5ldyBEYXRl
KCkuZ2V0VGltZSgpLAorICAgICAgICAgICAgICAgIG5vTG9hZHMgPSBbXSwKKyAgICAgICAgICAg
ICAgICByZXFDYWxscyA9IFtdLAorICAgICAgICAgICAgICAgIHN0aWxsTG9hZGluZyA9IGZhbHNl
LAorICAgICAgICAgICAgICAgIG5lZWRDeWNsZUNoZWNrID0gdHJ1ZTsKKworICAgICAgICAgICAg
Ly9EbyBub3QgYm90aGVyIGlmIHRoaXMgY2FsbCB3YXMgYSByZXN1bHQgb2YgYSBjeWNsZSBicmVh
ay4KKyAgICAgICAgICAgIGlmIChpbkNoZWNrTG9hZGVkKSB7CisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpbkNoZWNrTG9hZGVkID0gdHJ1ZTsK
KworICAgICAgICAgICAgLy9GaWd1cmUgb3V0IHRoZSBzdGF0ZSBvZiBhbGwgdGhlIG1vZHVsZXMu
CisgICAgICAgICAgICBlYWNoUHJvcChlbmFibGVkUmVnaXN0cnksIGZ1bmN0aW9uIChtb2QpIHsK
KyAgICAgICAgICAgICAgICB2YXIgbWFwID0gbW9kLm1hcCwKKyAgICAgICAgICAgICAgICAgICAg
bW9kSWQgPSBtYXAuaWQ7CisKKyAgICAgICAgICAgICAgICAvL1NraXAgdGhpbmdzIHRoYXQgYXJl
IG5vdCBlbmFibGVkIG9yIGluIGVycm9yIHN0YXRlLgorICAgICAgICAgICAgICAgIGlmICghbW9k
LmVuYWJsZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgICAgIGlmICghbWFwLmlzRGVmaW5lKSB7CisgICAgICAgICAgICAg
ICAgICAgIHJlcUNhbGxzLnB1c2gobW9kKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICAgICBpZiAoIW1vZC5lcnJvcikgeworICAgICAgICAgICAgICAgICAgICAvL0lmIHRoZSBt
b2R1bGUgc2hvdWxkIGJlIGV4ZWN1dGVkLCBhbmQgaXQgaGFzIG5vdAorICAgICAgICAgICAgICAg
ICAgICAvL2JlZW4gaW5pdGVkIGFuZCB0aW1lIGlzIHVwLCByZW1lbWJlciBpdC4KKyAgICAgICAg
ICAgICAgICAgICAgaWYgKCFtb2QuaW5pdGVkICYmIGV4cGlyZWQpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChoYXNQYXRoRmFsbGJhY2sobW9kSWQpKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdXNpbmdQYXRoRmFsbGJhY2sgPSB0cnVlOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0aWxsTG9hZGluZyA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vTG9hZHMucHVzaChtb2RJZCk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlU2NyaXB0KG1vZElkKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghbW9k
LmluaXRlZCAmJiBtb2QuZmV0Y2hlZCAmJiBtYXAuaXNEZWZpbmUpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHN0aWxsTG9hZGluZyA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoIW1hcC5wcmVmaXgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL05vIHJlYXNv
biB0byBrZWVwIGxvb2tpbmcgZm9yIHVuZmluaXNoZWQKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvL2xvYWRpbmcuIElmIHRoZSBvbmx5IHN0aWxsTG9hZGluZyBpcyBhCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy9wbHVnaW4gcmVzb3VyY2UgdGhvdWdoLCBrZWVwIGdvaW5nLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vYmVjYXVzZSBpdCBtYXkgYmUgdGhhdCBhIHBs
dWdpbiByZXNvdXJjZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vaXMgd2FpdGluZyBv
biBhIG5vbi1wbHVnaW4gY3ljbGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IChuZWVkQ3ljbGVDaGVjayA9IGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0pOwor
CisgICAgICAgICAgICBpZiAoZXhwaXJlZCAmJiBub0xvYWRzLmxlbmd0aCkgeworICAgICAgICAg
ICAgICAgIC8vSWYgd2FpdCB0aW1lIGV4cGlyZWQsIHRocm93IGVycm9yIG9mIHVubG9hZGVkIG1v
ZHVsZXMuCisgICAgICAgICAgICAgICAgZXJyID0gbWFrZUVycm9yKCd0aW1lb3V0JywgJ0xvYWQg
dGltZW91dCBmb3IgbW9kdWxlczogJyArIG5vTG9hZHMsIG51bGwsIG5vTG9hZHMpOworICAgICAg
ICAgICAgICAgIGVyci5jb250ZXh0TmFtZSA9IGNvbnRleHQuY29udGV4dE5hbWU7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIG9uRXJyb3IoZXJyKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgLy9Ob3QgZXhwaXJlZCwgY2hlY2sgZm9yIGEgY3ljbGUuCisgICAgICAgICAgICBpZiAobmVl
ZEN5Y2xlQ2hlY2spIHsKKyAgICAgICAgICAgICAgICBlYWNoKHJlcUNhbGxzLCBmdW5jdGlvbiAo
bW9kKSB7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrQ3ljbGUobW9kLCB7fSwge30pOworICAg
ICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvL0lmIHN0aWxs
IHdhaXRpbmcgb24gbG9hZHMsIGFuZCB0aGUgd2FpdGluZyBsb2FkIGlzIHNvbWV0aGluZworICAg
ICAgICAgICAgLy9vdGhlciB0aGFuIGEgcGx1Z2luIHJlc291cmNlLCBvciB0aGVyZSBhcmUgc3Rp
bGwgb3V0c3RhbmRpbmcKKyAgICAgICAgICAgIC8vc2NyaXB0cywgdGhlbiBqdXN0IHRyeSBiYWNr
IGxhdGVyLgorICAgICAgICAgICAgaWYgKCghZXhwaXJlZCB8fCB1c2luZ1BhdGhGYWxsYmFjaykg
JiYgc3RpbGxMb2FkaW5nKSB7CisgICAgICAgICAgICAgICAgLy9Tb21ldGhpbmcgaXMgc3RpbGwg
d2FpdGluZyB0byBsb2FkLiBXYWl0IGZvciBpdCwgYnV0IG9ubHkKKyAgICAgICAgICAgICAgICAv
L2lmIGEgdGltZW91dCBpcyBub3QgYWxyZWFkeSBpbiBlZmZlY3QuCisgICAgICAgICAgICAgICAg
aWYgKChpc0Jyb3dzZXIgfHwgaXNXZWJXb3JrZXIpICYmICFjaGVja0xvYWRlZFRpbWVvdXRJZCkg
eworICAgICAgICAgICAgICAgICAgICBjaGVja0xvYWRlZFRpbWVvdXRJZCA9IHNldFRpbWVvdXQo
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tMb2FkZWRUaW1lb3V0
SWQgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tMb2FkZWQoKTsKKyAgICAgICAg
ICAgICAgICAgICAgfSwgNTApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgaW5DaGVja0xvYWRlZCA9IGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAg
TW9kdWxlID0gZnVuY3Rpb24gKG1hcCkgeworICAgICAgICAgICAgdGhpcy5ldmVudHMgPSBnZXRP
d24odW5kZWZFdmVudHMsIG1hcC5pZCkgfHwge307CisgICAgICAgICAgICB0aGlzLm1hcCA9IG1h
cDsKKyAgICAgICAgICAgIHRoaXMuc2hpbSA9IGdldE93bihjb25maWcuc2hpbSwgbWFwLmlkKTsK
KyAgICAgICAgICAgIHRoaXMuZGVwRXhwb3J0cyA9IFtdOworICAgICAgICAgICAgdGhpcy5kZXBN
YXBzID0gW107CisgICAgICAgICAgICB0aGlzLmRlcE1hdGNoZWQgPSBbXTsKKyAgICAgICAgICAg
IHRoaXMucGx1Z2luTWFwcyA9IHt9OworICAgICAgICAgICAgdGhpcy5kZXBDb3VudCA9IDA7CisK
KyAgICAgICAgICAgIC8qIHRoaXMuZXhwb3J0cyB0aGlzLmZhY3RvcnkKKyAgICAgICAgICAgICAg
IHRoaXMuZGVwTWFwcyA9IFtdLAorICAgICAgICAgICAgICAgdGhpcy5lbmFibGVkLCB0aGlzLmZl
dGNoZWQKKyAgICAgICAgICAgICovCisgICAgICAgIH07CisKKyAgICAgICAgTW9kdWxlLnByb3Rv
dHlwZSA9IHsKKyAgICAgICAgICAgIGluaXQ6IGZ1bmN0aW9uIChkZXBNYXBzLCBmYWN0b3J5LCBl
cnJiYWNrLCBvcHRpb25zKSB7CisgICAgICAgICAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwg
e307CisKKyAgICAgICAgICAgICAgICAvL0RvIG5vdCBkbyBtb3JlIGluaXRzIGlmIGFscmVhZHkg
ZG9uZS4gQ2FuIGhhcHBlbiBpZiB0aGVyZQorICAgICAgICAgICAgICAgIC8vYXJlIG11bHRpcGxl
IGRlZmluZSBjYWxscyBmb3IgdGhlIHNhbWUgbW9kdWxlLiBUaGF0IGlzIG5vdAorICAgICAgICAg
ICAgICAgIC8vYSBub3JtYWwsIGNvbW1vbiBjYXNlLCBidXQgaXQgaXMgYWxzbyBub3QgdW5leHBl
Y3RlZC4KKyAgICAgICAgICAgICAgICBpZiAodGhpcy5pbml0ZWQpIHsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHRoaXMu
ZmFjdG9yeSA9IGZhY3Rvcnk7CisKKyAgICAgICAgICAgICAgICBpZiAoZXJyYmFjaykgeworICAg
ICAgICAgICAgICAgICAgICAvL1JlZ2lzdGVyIGZvciBlcnJvcnMgb24gdGhpcyBtb2R1bGUuCisg
ICAgICAgICAgICAgICAgICAgIHRoaXMub24oJ2Vycm9yJywgZXJyYmFjayk7CisgICAgICAgICAg
ICAgICAgfSBlbHNlIGlmICh0aGlzLmV2ZW50cy5lcnJvcikgeworICAgICAgICAgICAgICAgICAg
ICAvL0lmIG5vIGVycmJhY2sgYWxyZWFkeSwgYnV0IHRoZXJlIGFyZSBlcnJvciBsaXN0ZW5lcnMK
KyAgICAgICAgICAgICAgICAgICAgLy9vbiB0aGlzIG1vZHVsZSwgc2V0IHVwIGFuIGVycmJhY2sg
dG8gcGFzcyB0byB0aGUgZGVwcy4KKyAgICAgICAgICAgICAgICAgICAgZXJyYmFjayA9IGJpbmQo
dGhpcywgZnVuY3Rpb24gKGVycikgeworICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbWl0
KCdlcnJvcicsIGVycik7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgICAgIC8vRG8gYSBjb3B5IG9mIHRoZSBkZXBlbmRlbmN5IGFycmF5
LCBzbyB0aGF0CisgICAgICAgICAgICAgICAgLy9zb3VyY2UgaW5wdXRzIGFyZSBub3QgbW9kaWZp
ZWQuIEZvciBleGFtcGxlCisgICAgICAgICAgICAgICAgLy8ic2hpbSIgZGVwcyBhcmUgcGFzc2Vk
IGluIGhlcmUgZGlyZWN0bHksIGFuZAorICAgICAgICAgICAgICAgIC8vZG9pbmcgYSBkaXJlY3Qg
bW9kaWZpY2F0aW9uIG9mIHRoZSBkZXBNYXBzIGFycmF5CisgICAgICAgICAgICAgICAgLy93b3Vs
ZCBhZmZlY3QgdGhhdCBjb25maWcuCisgICAgICAgICAgICAgICAgdGhpcy5kZXBNYXBzID0gZGVw
TWFwcyAmJiBkZXBNYXBzLnNsaWNlKDApOworCisgICAgICAgICAgICAgICAgdGhpcy5lcnJiYWNr
ID0gZXJyYmFjazsKKworICAgICAgICAgICAgICAgIC8vSW5kaWNhdGUgdGhpcyBtb2R1bGUgaGFz
IGJlIGluaXRpYWxpemVkCisgICAgICAgICAgICAgICAgdGhpcy5pbml0ZWQgPSB0cnVlOworCisg
ICAgICAgICAgICAgICAgdGhpcy5pZ25vcmUgPSBvcHRpb25zLmlnbm9yZTsKKworICAgICAgICAg
ICAgICAgIC8vQ291bGQgaGF2ZSBvcHRpb24gdG8gaW5pdCB0aGlzIG1vZHVsZSBpbiBlbmFibGVk
IG1vZGUsCisgICAgICAgICAgICAgICAgLy9vciBjb3VsZCBoYXZlIGJlZW4gcHJldmlvdXNseSBt
YXJrZWQgYXMgZW5hYmxlZC4gSG93ZXZlciwKKyAgICAgICAgICAgICAgICAvL3RoZSBkZXBlbmRl
bmNpZXMgYXJlIG5vdCBrbm93biB1bnRpbCBpbml0IGlzIGNhbGxlZC4gU28KKyAgICAgICAgICAg
ICAgICAvL2lmIGVuYWJsZWQgcHJldmlvdXNseSwgbm93IHRyaWdnZXIgZGVwZW5kZW5jaWVzIGFz
IGVuYWJsZWQuCisgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMuZW5hYmxlZCB8fCB0aGlzLmVu
YWJsZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgLy9FbmFibGUgdGhpcyBtb2R1bGUgYW5kIGRl
cGVuZGVuY2llcy4KKyAgICAgICAgICAgICAgICAgICAgLy9XaWxsIGNhbGwgdGhpcy5jaGVjaygp
CisgICAgICAgICAgICAgICAgICAgIHRoaXMuZW5hYmxlKCk7CisgICAgICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGVjaygpOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgIGRlZmluZURlcDogZnVuY3Rpb24gKGks
IGRlcEV4cG9ydHMpIHsKKyAgICAgICAgICAgICAgICAvL0JlY2F1c2Ugb2YgY3ljbGVzLCBkZWZp
bmVkIGNhbGxiYWNrIGZvciBhIGdpdmVuCisgICAgICAgICAgICAgICAgLy9leHBvcnQgY2FuIGJl
IGNhbGxlZCBtb3JlIHRoYW4gb25jZS4KKyAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZGVwTWF0
Y2hlZFtpXSkgeworICAgICAgICAgICAgICAgICAgICB0aGlzLmRlcE1hdGNoZWRbaV0gPSB0cnVl
OworICAgICAgICAgICAgICAgICAgICB0aGlzLmRlcENvdW50IC09IDE7CisgICAgICAgICAgICAg
ICAgICAgIHRoaXMuZGVwRXhwb3J0c1tpXSA9IGRlcEV4cG9ydHM7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgZmV0Y2g6IGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgICAgICAgICBpZiAodGhpcy5mZXRjaGVkKSB7CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdGhpcy5mZXRjaGVkID0g
dHJ1ZTsKKworICAgICAgICAgICAgICAgIGNvbnRleHQuc3RhcnRUaW1lID0gKG5ldyBEYXRlKCkp
LmdldFRpbWUoKTsKKworICAgICAgICAgICAgICAgIHZhciBtYXAgPSB0aGlzLm1hcDsKKworICAg
ICAgICAgICAgICAgIC8vSWYgdGhlIG1hbmFnZXIgaXMgZm9yIGEgcGx1Z2luIG1hbmFnZWQgcmVz
b3VyY2UsCisgICAgICAgICAgICAgICAgLy9hc2sgdGhlIHBsdWdpbiB0byBsb2FkIGl0IG5vdy4K
KyAgICAgICAgICAgICAgICBpZiAodGhpcy5zaGltKSB7CisgICAgICAgICAgICAgICAgICAgIGNv
bnRleHQubWFrZVJlcXVpcmUodGhpcy5tYXAsIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVu
YWJsZUJ1aWxkQ2FsbGJhY2s6IHRydWUKKyAgICAgICAgICAgICAgICAgICAgfSkodGhpcy5zaGlt
LmRlcHMgfHwgW10sIGJpbmQodGhpcywgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIG1hcC5wcmVmaXggPyB0aGlzLmNhbGxQbHVnaW4oKSA6IHRoaXMubG9hZCgp
OworICAgICAgICAgICAgICAgICAgICB9KSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAgICAgLy9SZWd1bGFyIGRlcGVuZGVuY3kuCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBtYXAucHJlZml4ID8gdGhpcy5jYWxsUGx1Z2luKCkgOiB0aGlzLmxvYWQoKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorCisgICAgICAgICAgICBsb2FkOiBm
dW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgdmFyIHVybCA9IHRoaXMubWFwLnVybDsKKwor
ICAgICAgICAgICAgICAgIC8vUmVndWxhciBkZXBlbmRlbmN5LgorICAgICAgICAgICAgICAgIGlm
ICghdXJsRmV0Y2hlZFt1cmxdKSB7CisgICAgICAgICAgICAgICAgICAgIHVybEZldGNoZWRbdXJs
XSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQubG9hZCh0aGlzLm1hcC5pZCwg
dXJsKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorCisgICAgICAgICAgICAv
KioKKyAgICAgICAgICAgICAqIENoZWNrcyBpZiB0aGUgbW9kdWxlIGlzIHJlYWR5IHRvIGRlZmlu
ZSBpdHNlbGYsIGFuZCBpZiBzbywKKyAgICAgICAgICAgICAqIGRlZmluZSBpdC4KKyAgICAgICAg
ICAgICAqLworICAgICAgICAgICAgY2hlY2s6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoIXRoaXMuZW5hYmxlZCB8fCB0aGlzLmVuYWJsaW5nKSB7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB2YXIgZXJy
LCBjanNNb2R1bGUsCisgICAgICAgICAgICAgICAgICAgIGlkID0gdGhpcy5tYXAuaWQsCisgICAg
ICAgICAgICAgICAgICAgIGRlcEV4cG9ydHMgPSB0aGlzLmRlcEV4cG9ydHMsCisgICAgICAgICAg
ICAgICAgICAgIGV4cG9ydHMgPSB0aGlzLmV4cG9ydHMsCisgICAgICAgICAgICAgICAgICAgIGZh
Y3RvcnkgPSB0aGlzLmZhY3Rvcnk7CisKKyAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaW5pdGVk
KSB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuZmV0Y2goKTsKKyAgICAgICAgICAgICAgICB9
IGVsc2UgaWYgKHRoaXMuZXJyb3IpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5lbWl0KCdl
cnJvcicsIHRoaXMuZXJyb3IpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuZGVm
aW5pbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgLy9UaGUgZmFjdG9yeSBjb3VsZCB0cmlnZ2Vy
IGFub3RoZXIgcmVxdWlyZSBjYWxsCisgICAgICAgICAgICAgICAgICAgIC8vdGhhdCB3b3VsZCBy
ZXN1bHQgaW4gY2hlY2tpbmcgdGhpcyBtb2R1bGUgdG8KKyAgICAgICAgICAgICAgICAgICAgLy9k
ZWZpbmUgaXRzZWxmIGFnYWluLiBJZiBhbHJlYWR5IGluIHRoZSBwcm9jZXNzCisgICAgICAgICAg
ICAgICAgICAgIC8vb2YgZG9pbmcgdGhhdCwgc2tpcCB0aGlzIHdvcmsuCisgICAgICAgICAgICAg
ICAgICAgIHRoaXMuZGVmaW5pbmcgPSB0cnVlOworCisgICAgICAgICAgICAgICAgICAgIGlmICh0
aGlzLmRlcENvdW50IDwgMSAmJiAhdGhpcy5kZWZpbmVkKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoaXNGdW5jdGlvbihmYWN0b3J5KSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vSWYgdGhlcmUgaXMgYW4gZXJyb3IgbGlzdGVuZXIsIGZhdm9yIHBhc3NpbmcKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvL3RvIHRoYXQgaW5zdGVhZCBvZiB0aHJvd2luZyBhbiBl
cnJvci4gSG93ZXZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL29ubHkgZG8gaXQg
Zm9yIGRlZmluZSgpJ2QgIG1vZHVsZXMuIHJlcXVpcmUKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvL2VycmJhY2tzIHNob3VsZCBub3QgYmUgY2FsbGVkIGZvciBmYWlsdXJlcyBpbgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vdGhlaXIgY2FsbGJhY2tzICgjNjk5KS4gSG93ZXZl
ciBpZiBhIGdsb2JhbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vb25FcnJvciBpcyBz
ZXQsIHVzZSB0aGF0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgodGhpcy5ldmVu
dHMuZXJyb3IgJiYgdGhpcy5tYXAuaXNEZWZpbmUpIHx8CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlcS5vbkVycm9yICE9PSBkZWZhdWx0T25FcnJvcikgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZXhwb3J0cyA9IGNvbnRleHQuZXhlY0NiKGlkLCBmYWN0b3J5LCBkZXBFeHBvcnRzLCBl
eHBvcnRzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyID0gZTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cG9ydHMgPSBjb250ZXh0LmV4
ZWNDYihpZCwgZmFjdG9yeSwgZGVwRXhwb3J0cywgZXhwb3J0cyk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRmF2b3IgcmV0
dXJuIHZhbHVlIG92ZXIgZXhwb3J0cy4gSWYgbm9kZS9janMgaW4gcGxheSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyB0aGVuIHdpbGwgbm90IGhhdmUgYSByZXR1cm4gdmFsdWUgYW55
d2F5LiBGYXZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1vZHVsZS5leHBvcnRz
IGFzc2lnbm1lbnQgb3ZlciBleHBvcnRzIG9iamVjdC4KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAodGhpcy5tYXAuaXNEZWZpbmUgJiYgZXhwb3J0cyA9PT0gdW5kZWZpbmVkKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNqc01vZHVsZSA9IHRoaXMubW9kdWxlOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2pzTW9kdWxlKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBvcnRzID0gY2pzTW9kdWxlLmV4cG9ydHM7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy51c2luZ0V4
cG9ydHMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vZXhwb3J0cyBh
bHJlYWR5IHNldCB0aGUgZGVmaW5lZCB2YWx1ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGV4cG9ydHMgPSB0aGlzLmV4cG9ydHM7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoZXJyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGVyci5yZXF1aXJlTWFwID0gdGhpcy5tYXA7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVyci5yZXF1aXJlTW9kdWxlcyA9IHRoaXMubWFwLmlzRGVmaW5lID8gW3RoaXMubWFw
LmlkXSA6IG51bGw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVyci5yZXF1aXJl
VHlwZSA9IHRoaXMubWFwLmlzRGVmaW5lID8gJ2RlZmluZScgOiAncmVxdWlyZSc7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvbkVycm9yKCh0aGlzLmVycm9yID0gZXJy
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vSnVzdCBhIGxpdGVy
YWwgdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBvcnRzID0gZmFjdG9yeTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgdGhp
cy5leHBvcnRzID0gZXhwb3J0czsKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMu
bWFwLmlzRGVmaW5lICYmICF0aGlzLmlnbm9yZSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRlZmluZWRbaWRdID0gZXhwb3J0czsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChyZXEub25SZXNvdXJjZUxvYWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVxLm9uUmVzb3VyY2VMb2FkKGNvbnRleHQsIHRoaXMubWFwLCB0aGlzLmRlcE1hcHMpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgICAgICAgICAgLy9DbGVhbiB1cAorICAgICAgICAgICAgICAgICAg
ICAgICAgY2xlYW5SZWdpc3RyeShpZCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMu
ZGVmaW5lZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg
ICAgICAvL0ZpbmlzaGVkIHRoZSBkZWZpbmUgc3RhZ2UuIEFsbG93IGNhbGxpbmcgY2hlY2sgYWdh
aW4KKyAgICAgICAgICAgICAgICAgICAgLy90byBhbGxvdyBkZWZpbmUgbm90aWZpY2F0aW9ucyBi
ZWxvdyBpbiB0aGUgY2FzZSBvZiBhCisgICAgICAgICAgICAgICAgICAgIC8vY3ljbGUuCisgICAg
ICAgICAgICAgICAgICAgIHRoaXMuZGVmaW5pbmcgPSBmYWxzZTsKKworICAgICAgICAgICAgICAg
ICAgICBpZiAodGhpcy5kZWZpbmVkICYmICF0aGlzLmRlZmluZUVtaXR0ZWQpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHRoaXMuZGVmaW5lRW1pdHRlZCA9IHRydWU7CisgICAgICAgICAgICAg
ICAgICAgICAgICB0aGlzLmVtaXQoJ2RlZmluZWQnLCB0aGlzLmV4cG9ydHMpOworICAgICAgICAg
ICAgICAgICAgICAgICAgdGhpcy5kZWZpbmVFbWl0Q29tcGxldGUgPSB0cnVlOworICAgICAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorCisgICAg
ICAgICAgICBjYWxsUGx1Z2luOiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgdmFyIG1h
cCA9IHRoaXMubWFwLAorICAgICAgICAgICAgICAgICAgICBpZCA9IG1hcC5pZCwKKyAgICAgICAg
ICAgICAgICAgICAgLy9NYXAgYWxyZWFkeSBub3JtYWxpemVkIHRoZSBwcmVmaXguCisgICAgICAg
ICAgICAgICAgICAgIHBsdWdpbk1hcCA9IG1ha2VNb2R1bGVNYXAobWFwLnByZWZpeCk7CisKKyAg
ICAgICAgICAgICAgICAvL01hcmsgdGhpcyBhcyBhIGRlcGVuZGVuY3kgZm9yIHRoaXMgcGx1Z2lu
LCBzbyBpdAorICAgICAgICAgICAgICAgIC8vY2FuIGJlIHRyYWNlZCBmb3IgY3ljbGVzLgorICAg
ICAgICAgICAgICAgIHRoaXMuZGVwTWFwcy5wdXNoKHBsdWdpbk1hcCk7CisKKyAgICAgICAgICAg
ICAgICBvbihwbHVnaW5NYXAsICdkZWZpbmVkJywgYmluZCh0aGlzLCBmdW5jdGlvbiAocGx1Z2lu
KSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBsb2FkLCBub3JtYWxpemVkTWFwLCBub3JtYWxp
emVkTW9kLAorICAgICAgICAgICAgICAgICAgICAgICAgYnVuZGxlSWQgPSBnZXRPd24oYnVuZGxl
c01hcCwgdGhpcy5tYXAuaWQpLAorICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IHRoaXMu
bWFwLm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnROYW1lID0gdGhpcy5tYXAu
cGFyZW50TWFwID8gdGhpcy5tYXAucGFyZW50TWFwLm5hbWUgOiBudWxsLAorICAgICAgICAgICAg
ICAgICAgICAgICAgbG9jYWxSZXF1aXJlID0gY29udGV4dC5tYWtlUmVxdWlyZShtYXAucGFyZW50
TWFwLCB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlQnVpbGRDYWxsYmFjazog
dHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICAgICAg
Ly9JZiBjdXJyZW50IG1hcCBpcyBub3Qgbm9ybWFsaXplZCwgd2FpdCBmb3IgdGhhdAorICAgICAg
ICAgICAgICAgICAgICAvL25vcm1hbGl6ZWQgbmFtZSB0byBsb2FkIGluc3RlYWQgb2YgY29udGlu
dWluZy4KKyAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubWFwLnVubm9ybWFsaXplZCkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgLy9Ob3JtYWxpemUgdGhlIElEIGlmIHRoZSBwbHVnaW4g
YWxsb3dzIGl0LgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBsdWdpbi5ub3JtYWxpemUp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0gcGx1Z2luLm5vcm1hbGl6ZShu
YW1lLCBmdW5jdGlvbiAobmFtZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbm9ybWFsaXplKG5hbWUsIHBhcmVudE5hbWUsIHRydWUpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0pIHx8ICcnOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgICAgICAgICAvL3ByZWZpeCBhbmQgbmFtZSBzaG91bGQgYWxyZWFkeSBiZSBu
b3JtYWxpemVkLCBubyBuZWVkCisgICAgICAgICAgICAgICAgICAgICAgICAvL2ZvciBhcHBseWlu
ZyBtYXAgY29uZmlnIGFnYWluIGVpdGhlci4KKyAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1h
bGl6ZWRNYXAgPSBtYWtlTW9kdWxlTWFwKG1hcC5wcmVmaXggKyAnIScgKyBuYW1lLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXAu
cGFyZW50TWFwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9uKG5vcm1hbGl6ZWRNYXAsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlZmluZWQnLCBiaW5kKHRoaXMsIGZ1bmN0aW9u
ICh2YWx1ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmluaXQoW10s
IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHZhbHVlOyB9LCBudWxsLCB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiB0cnVlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWdub3JlOiB0cnVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKKworICAgICAgICAgICAg
ICAgICAgICAgICAgbm9ybWFsaXplZE1vZCA9IGdldE93bihyZWdpc3RyeSwgbm9ybWFsaXplZE1h
cC5pZCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9ybWFsaXplZE1vZCkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vTWFyayB0aGlzIGFzIGEgZGVwZW5kZW5jeSBmb3Ig
dGhpcyBwbHVnaW4sIHNvIGl0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9jYW4gYmUg
dHJhY2VkIGZvciBjeWNsZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kZXBN
YXBzLnB1c2gobm9ybWFsaXplZE1hcCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAodGhpcy5ldmVudHMuZXJyb3IpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bm9ybWFsaXplZE1vZC5vbignZXJyb3InLCBiaW5kKHRoaXMsIGZ1bmN0aW9uIChlcnIpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZW1pdCgnZXJyb3InLCBlcnIp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRNb2Qu
ZW5hYmxlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
ICAgIC8vSWYgYSBwYXRocyBjb25maWcsIHRoZW4ganVzdCBsb2FkIHRoYXQgZmlsZSBpbnN0ZWFk
IHRvCisgICAgICAgICAgICAgICAgICAgIC8vcmVzb2x2ZSB0aGUgcGx1Z2luLCBhcyBpdCBpcyBi
dWlsdCBpbnRvIHRoYXQgcGF0aHMgbGF5ZXIuCisgICAgICAgICAgICAgICAgICAgIGlmIChidW5k
bGVJZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXAudXJsID0gY29udGV4dC5u
YW1lVG9VcmwoYnVuZGxlSWQpOworICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkKCk7
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgICAgICBsb2FkID0gYmluZCh0aGlzLCBmdW5jdGlvbiAodmFsdWUp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5pdChbXSwgZnVuY3Rpb24gKCkgeyBy
ZXR1cm4gdmFsdWU7IH0sIG51bGwsIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFi
bGVkOiB0cnVlCisgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAg
ICAgfSk7CisKKyAgICAgICAgICAgICAgICAgICAgbG9hZC5lcnJvciA9IGJpbmQodGhpcywgZnVu
Y3Rpb24gKGVycikgeworICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbml0ZWQgPSB0cnVl
OworICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lcnJvciA9IGVycjsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGVyci5yZXF1aXJlTW9kdWxlcyA9IFtpZF07CisKKyAgICAgICAgICAgICAg
ICAgICAgICAgIC8vUmVtb3ZlIHRlbXAgdW5ub3JtYWxpemVkIG1vZHVsZXMgZm9yIHRoaXMgbW9k
dWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgLy9zaW5jZSB0aGV5IHdpbGwgbmV2ZXIgYmUg
cmVzb2x2ZWQgb3RoZXJ3aXNlIG5vdy4KKyAgICAgICAgICAgICAgICAgICAgICAgIGVhY2hQcm9w
KHJlZ2lzdHJ5LCBmdW5jdGlvbiAobW9kKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKG1vZC5tYXAuaWQuaW5kZXhPZihpZCArICdfdW5ub3JtYWxpemVkJykgPT09IDApIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYW5SZWdpc3RyeShtb2QubWFwLmlkKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9
KTsKKworICAgICAgICAgICAgICAgICAgICAgICAgb25FcnJvcihlcnIpOworICAgICAgICAgICAg
ICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgICAgICAvL0FsbG93IHBsdWdpbnMgdG8gbG9h
ZCBvdGhlciBjb2RlIHdpdGhvdXQgaGF2aW5nIHRvIGtub3cgdGhlCisgICAgICAgICAgICAgICAg
ICAgIC8vY29udGV4dCBvciBob3cgdG8gJ2NvbXBsZXRlJyB0aGUgbG9hZC4KKyAgICAgICAgICAg
ICAgICAgICAgbG9hZC5mcm9tVGV4dCA9IGJpbmQodGhpcywgZnVuY3Rpb24gKHRleHQsIHRleHRB
bHQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qanNsaW50IGV2aWw6IHRydWUgKi8KKyAg
ICAgICAgICAgICAgICAgICAgICAgIHZhciBtb2R1bGVOYW1lID0gbWFwLm5hbWUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbW9kdWxlTWFwID0gbWFrZU1vZHVsZU1hcChtb2R1bGVOYW1l
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNJbnRlcmFjdGl2ZSA9IHVzZUludGVy
YWN0aXZlOworCisgICAgICAgICAgICAgICAgICAgICAgICAvL0FzIG9mIDIuMS4wLCBzdXBwb3J0
IGp1c3QgcGFzc2luZyB0aGUgdGV4dCwgdG8gcmVpbmZvcmNlCisgICAgICAgICAgICAgICAgICAg
ICAgICAvL2Zyb21UZXh0IG9ubHkgYmVpbmcgY2FsbGVkIG9uY2UgcGVyIHJlc291cmNlLiBTdGls
bAorICAgICAgICAgICAgICAgICAgICAgICAgLy9zdXBwb3J0IG9sZCBzdHlsZSBvZiBwYXNzaW5n
IG1vZHVsZU5hbWUgYnV0IGRpc2NhcmQKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vdGhhdCBt
b2R1bGVOYW1lIGluIGZhdm9yIG9mIHRoZSBpbnRlcm5hbCByZWYuCisgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAodGV4dEFsdCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQg
PSB0ZXh0QWx0OworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
ICAgICAgICAvL1R1cm4gb2ZmIGludGVyYWN0aXZlIHNjcmlwdCBtYXRjaGluZyBmb3IgSUUgZm9y
IGFueSBkZWZpbmUKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vY2FsbHMgaW4gdGhlIHRleHQs
IHRoZW4gdHVybiBpdCBiYWNrIG9uIGF0IHRoZSBlbmQuCisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoaGFzSW50ZXJhY3RpdmUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VJ
bnRlcmFjdGl2ZSA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgICAgICAgICAgICAvL1ByaW1lIHRoZSBzeXN0ZW0gYnkgY3JlYXRpbmcgYSBtb2R1bGUg
aW5zdGFuY2UgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAvL2l0LgorICAgICAgICAgICAg
ICAgICAgICAgICAgZ2V0TW9kdWxlKG1vZHVsZU1hcCk7CisKKyAgICAgICAgICAgICAgICAgICAg
ICAgIC8vVHJhbnNmZXIgYW55IGNvbmZpZyB0byB0aGlzIG90aGVyIG1vZHVsZS4KKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChoYXNQcm9wKGNvbmZpZy5jb25maWcsIGlkKSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5jb25maWdbbW9kdWxlTmFtZV0gPSBjb25maWcu
Y29uZmlnW2lkXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg
ICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXEuZXhlYyh0ZXh0
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gb25FcnJvcihtYWtlRXJyb3IoJ2Zyb210ZXh0ZXZhbCcsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZnJvbVRleHQgZXZh
bCBmb3IgJyArIGlkICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJyBmYWlsZWQ6ICcgKyBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFtpZF0pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGhhc0ludGVyYWN0aXZlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dXNlSW50ZXJhY3RpdmUgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgICAgICAgICAvL01hcmsgdGhpcyBhcyBhIGRlcGVuZGVuY3kgZm9yIHRoZSBw
bHVnaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIC8vcmVzb3VyY2UKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHRoaXMuZGVwTWFwcy5wdXNoKG1vZHVsZU1hcCk7CisKKyAgICAgICAgICAgICAg
ICAgICAgICAgIC8vU3VwcG9ydCBhbm9ueW1vdXMgbW9kdWxlcy4KKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnRleHQuY29tcGxldGVMb2FkKG1vZHVsZU5hbWUpOworCisgICAgICAgICAgICAg
ICAgICAgICAgICAvL0JpbmQgdGhlIHZhbHVlIG9mIHRoYXQgbW9kdWxlIHRvIHRoZSB2YWx1ZSBm
b3IgdGhpcworICAgICAgICAgICAgICAgICAgICAgICAgLy9yZXNvdXJjZSBJRC4KKyAgICAgICAg
ICAgICAgICAgICAgICAgIGxvY2FsUmVxdWlyZShbbW9kdWxlTmFtZV0sIGxvYWQpOworICAgICAg
ICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgICAgICAvL1VzZSBwYXJlbnROYW1l
IGhlcmUgc2luY2UgdGhlIHBsdWdpbidzIG5hbWUgaXMgbm90IHJlbGlhYmxlLAorICAgICAgICAg
ICAgICAgICAgICAvL2NvdWxkIGJlIHNvbWUgd2VpcmQgc3RyaW5nIHdpdGggbm8gcGF0aCB0aGF0
IGFjdHVhbGx5IHdhbnRzIHRvCisgICAgICAgICAgICAgICAgICAgIC8vcmVmZXJlbmNlIHRoZSBw
YXJlbnROYW1lJ3MgcGF0aC4KKyAgICAgICAgICAgICAgICAgICAgcGx1Z2luLmxvYWQobWFwLm5h
bWUsIGxvY2FsUmVxdWlyZSwgbG9hZCwgY29uZmlnKTsKKyAgICAgICAgICAgICAgICB9KSk7CisK
KyAgICAgICAgICAgICAgICBjb250ZXh0LmVuYWJsZShwbHVnaW5NYXAsIHRoaXMpOworICAgICAg
ICAgICAgICAgIHRoaXMucGx1Z2luTWFwc1twbHVnaW5NYXAuaWRdID0gcGx1Z2luTWFwOworICAg
ICAgICAgICAgfSwKKworICAgICAgICAgICAgZW5hYmxlOiBmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICAgICAgZW5hYmxlZFJlZ2lzdHJ5W3RoaXMubWFwLmlkXSA9IHRoaXM7CisgICAgICAgICAg
ICAgICAgdGhpcy5lbmFibGVkID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgIC8vU2V0IGZsYWcg
bWVudGlvbmluZyB0aGF0IHRoZSBtb2R1bGUgaXMgZW5hYmxpbmcsCisgICAgICAgICAgICAgICAg
Ly9zbyB0aGF0IGltbWVkaWF0ZSBjYWxscyB0byB0aGUgZGVmaW5lZCBjYWxsYmFja3MKKyAgICAg
ICAgICAgICAgICAvL2ZvciBkZXBlbmRlbmNpZXMgZG8gbm90IHRyaWdnZXIgaW5hZHZlcnRlbnQg
bG9hZAorICAgICAgICAgICAgICAgIC8vd2l0aCB0aGUgZGVwQ291bnQgc3RpbGwgYmVpbmcgemVy
by4KKyAgICAgICAgICAgICAgICB0aGlzLmVuYWJsaW5nID0gdHJ1ZTsKKworICAgICAgICAgICAg
ICAgIC8vRW5hYmxlIGVhY2ggZGVwZW5kZW5jeQorICAgICAgICAgICAgICAgIGVhY2godGhpcy5k
ZXBNYXBzLCBiaW5kKHRoaXMsIGZ1bmN0aW9uIChkZXBNYXAsIGkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgdmFyIGlkLCBtb2QsIGhhbmRsZXI7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKHR5
cGVvZiBkZXBNYXAgPT09ICdzdHJpbmcnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvL0Rl
cGVuZGVuY3kgbmVlZHMgdG8gYmUgY29udmVydGVkIHRvIGEgZGVwTWFwCisgICAgICAgICAgICAg
ICAgICAgICAgICAvL2FuZCB3aXJlZCB1cCB0byB0aGlzIG1vZHVsZS4KKyAgICAgICAgICAgICAg
ICAgICAgICAgIGRlcE1hcCA9IG1ha2VNb2R1bGVNYXAoZGVwTWFwLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5tYXAuaXNEZWZpbmUgPyB0aGlz
Lm1hcCA6IHRoaXMubWFwLnBhcmVudE1hcCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAhdGhpcy5za2lwTWFwKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHRoaXMuZGVwTWFwc1tpXSA9IGRlcE1hcDsKKworICAgICAgICAgICAgICAgICAgICAgICAgaGFu
ZGxlciA9IGdldE93bihoYW5kbGVycywgZGVwTWFwLmlkKTsKKworICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGhhbmRsZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRl
cEV4cG9ydHNbaV0gPSBoYW5kbGVyKHRoaXMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAg
ICAgICAgdGhpcy5kZXBDb3VudCArPSAxOworCisgICAgICAgICAgICAgICAgICAgICAgICBvbihk
ZXBNYXAsICdkZWZpbmVkJywgYmluZCh0aGlzLCBmdW5jdGlvbiAoZGVwRXhwb3J0cykgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGVmaW5lRGVwKGksIGRlcEV4cG9ydHMpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2hlY2soKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIH0pKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZXJyYmFj
aykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uKGRlcE1hcCwgJ2Vycm9yJywgYmlu
ZCh0aGlzLCB0aGlzLmVycmJhY2spKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGlkID0gZGVwTWFwLmlkOwor
ICAgICAgICAgICAgICAgICAgICBtb2QgPSByZWdpc3RyeVtpZF07CisKKyAgICAgICAgICAgICAg
ICAgICAgLy9Ta2lwIHNwZWNpYWwgbW9kdWxlcyBsaWtlICdyZXF1aXJlJywgJ2V4cG9ydHMnLCAn
bW9kdWxlJworICAgICAgICAgICAgICAgICAgICAvL0Fsc28sIGRvbid0IGNhbGwgZW5hYmxlIGlm
IGl0IGlzIGFscmVhZHkgZW5hYmxlZCwKKyAgICAgICAgICAgICAgICAgICAgLy9pbXBvcnRhbnQg
aW4gY2lyY3VsYXIgZGVwZW5kZW5jeSBjYXNlcy4KKyAgICAgICAgICAgICAgICAgICAgaWYgKCFo
YXNQcm9wKGhhbmRsZXJzLCBpZCkgJiYgbW9kICYmICFtb2QuZW5hYmxlZCkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGV4dC5lbmFibGUoZGVwTWFwLCB0aGlzKTsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0pKTsKKworICAgICAgICAgICAgICAgIC8vRW5h
YmxlIGVhY2ggcGx1Z2luIHRoYXQgaXMgdXNlZCBpbgorICAgICAgICAgICAgICAgIC8vYSBkZXBl
bmRlbmN5CisgICAgICAgICAgICAgICAgZWFjaFByb3AodGhpcy5wbHVnaW5NYXBzLCBiaW5kKHRo
aXMsIGZ1bmN0aW9uIChwbHVnaW5NYXApIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIG1vZCA9
IGdldE93bihyZWdpc3RyeSwgcGx1Z2luTWFwLmlkKTsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KG1vZCAmJiAhbW9kLmVuYWJsZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQu
ZW5hYmxlKHBsdWdpbk1hcCwgdGhpcyk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICB9KSk7CisKKyAgICAgICAgICAgICAgICB0aGlzLmVuYWJsaW5nID0gZmFsc2U7CisK
KyAgICAgICAgICAgICAgICB0aGlzLmNoZWNrKCk7CisgICAgICAgICAgICB9LAorCisgICAgICAg
ICAgICBvbjogZnVuY3Rpb24gKG5hbWUsIGNiKSB7CisgICAgICAgICAgICAgICAgdmFyIGNicyA9
IHRoaXMuZXZlbnRzW25hbWVdOworICAgICAgICAgICAgICAgIGlmICghY2JzKSB7CisgICAgICAg
ICAgICAgICAgICAgIGNicyA9IHRoaXMuZXZlbnRzW25hbWVdID0gW107CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIGNicy5wdXNoKGNiKTsKKyAgICAgICAgICAgIH0sCisKKyAg
ICAgICAgICAgIGVtaXQ6IGZ1bmN0aW9uIChuYW1lLCBldnQpIHsKKyAgICAgICAgICAgICAgICBl
YWNoKHRoaXMuZXZlbnRzW25hbWVdLCBmdW5jdGlvbiAoY2IpIHsKKyAgICAgICAgICAgICAgICAg
ICAgY2IoZXZ0KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBpZiAobmFt
ZSA9PT0gJ2Vycm9yJykgeworICAgICAgICAgICAgICAgICAgICAvL05vdyB0aGF0IHRoZSBlcnJv
ciBoYW5kbGVyIHdhcyB0cmlnZ2VyZWQsIHJlbW92ZQorICAgICAgICAgICAgICAgICAgICAvL3Ro
ZSBsaXN0ZW5lcnMsIHNpbmNlIHRoaXMgYnJva2VuIE1vZHVsZSBpbnN0YW5jZQorICAgICAgICAg
ICAgICAgICAgICAvL2NhbiBzdGF5IGFyb3VuZCBmb3IgYSB3aGlsZSBpbiB0aGUgcmVnaXN0cnku
CisgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLmV2ZW50c1tuYW1lXTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgZnVuY3Rpb24g
Y2FsbEdldE1vZHVsZShhcmdzKSB7CisgICAgICAgICAgICAvL1NraXAgbW9kdWxlcyBhbHJlYWR5
IGRlZmluZWQuCisgICAgICAgICAgICBpZiAoIWhhc1Byb3AoZGVmaW5lZCwgYXJnc1swXSkpIHsK
KyAgICAgICAgICAgICAgICBnZXRNb2R1bGUobWFrZU1vZHVsZU1hcChhcmdzWzBdLCBudWxsLCB0
cnVlKSkuaW5pdChhcmdzWzFdLCBhcmdzWzJdKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIHJlbW92ZUxpc3RlbmVyKG5vZGUsIGZ1bmMsIG5hbWUsIGllTmFt
ZSkgeworICAgICAgICAgICAgLy9GYXZvciBkZXRhY2hFdmVudCBiZWNhdXNlIG9mIElFOQorICAg
ICAgICAgICAgLy9pc3N1ZSwgc2VlIGF0dGFjaEV2ZW50L2FkZEV2ZW50TGlzdGVuZXIgY29tbWVu
dCBlbHNld2hlcmUKKyAgICAgICAgICAgIC8vaW4gdGhpcyBmaWxlLgorICAgICAgICAgICAgaWYg
KG5vZGUuZGV0YWNoRXZlbnQgJiYgIWlzT3BlcmEpIHsKKyAgICAgICAgICAgICAgICAvL1Byb2Jh
Ymx5IElFLiBJZiBub3QgaXQgd2lsbCB0aHJvdyBhbiBlcnJvciwgd2hpY2ggd2lsbCBiZQorICAg
ICAgICAgICAgICAgIC8vdXNlZnVsIHRvIGtub3cuCisgICAgICAgICAgICAgICAgaWYgKGllTmFt
ZSkgeworICAgICAgICAgICAgICAgICAgICBub2RlLmRldGFjaEV2ZW50KGllTmFtZSwgZnVuYyk7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBub2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIobmFtZSwgZnVuYywgZmFsc2UpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIEdpdmVuIGFuIGV2ZW50
IGZyb20gYSBzY3JpcHQgbm9kZSwgZ2V0IHRoZSByZXF1aXJlanMgaW5mbyBmcm9tIGl0LAorICAg
ICAgICAgKiBhbmQgdGhlbiByZW1vdmVzIHRoZSBldmVudCBsaXN0ZW5lcnMgb24gdGhlIG5vZGUu
CisgICAgICAgICAqIEBwYXJhbSB7RXZlbnR9IGV2dAorICAgICAgICAgKiBAcmV0dXJucyB7T2Jq
ZWN0fQorICAgICAgICAgKi8KKyAgICAgICAgZnVuY3Rpb24gZ2V0U2NyaXB0RGF0YShldnQpIHsK
KyAgICAgICAgICAgIC8vVXNpbmcgY3VycmVudFRhcmdldCBpbnN0ZWFkIG9mIHRhcmdldCBmb3Ig
RmlyZWZveCAyLjAncyBzYWtlLiBOb3QKKyAgICAgICAgICAgIC8vYWxsIG9sZCBicm93c2VycyB3
aWxsIGJlIHN1cHBvcnRlZCwgYnV0IHRoaXMgb25lIHdhcyBlYXN5IGVub3VnaAorICAgICAgICAg
ICAgLy90byBzdXBwb3J0IGFuZCBzdGlsbCBtYWtlcyBzZW5zZS4KKyAgICAgICAgICAgIHZhciBu
b2RlID0gZXZ0LmN1cnJlbnRUYXJnZXQgfHwgZXZ0LnNyY0VsZW1lbnQ7CisKKyAgICAgICAgICAg
IC8vUmVtb3ZlIHRoZSBsaXN0ZW5lcnMgb25jZSBoZXJlLgorICAgICAgICAgICAgcmVtb3ZlTGlz
dGVuZXIobm9kZSwgY29udGV4dC5vblNjcmlwdExvYWQsICdsb2FkJywgJ29ucmVhZHlzdGF0ZWNo
YW5nZScpOworICAgICAgICAgICAgcmVtb3ZlTGlzdGVuZXIobm9kZSwgY29udGV4dC5vblNjcmlw
dEVycm9yLCAnZXJyb3InKTsKKworICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICAg
ICBub2RlOiBub2RlLAorICAgICAgICAgICAgICAgIGlkOiBub2RlICYmIG5vZGUuZ2V0QXR0cmli
dXRlKCdkYXRhLXJlcXVpcmVtb2R1bGUnKQorICAgICAgICAgICAgfTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIGludGFrZURlZmluZXMoKSB7CisgICAgICAgICAgICB2YXIgYXJnczsK
KworICAgICAgICAgICAgLy9BbnkgZGVmaW5lZCBtb2R1bGVzIGluIHRoZSBnbG9iYWwgcXVldWUs
IGludGFrZSB0aGVtIG5vdy4KKyAgICAgICAgICAgIHRha2VHbG9iYWxRdWV1ZSgpOworCisgICAg
ICAgICAgICAvL01ha2Ugc3VyZSBhbnkgcmVtYWluaW5nIGRlZlF1ZXVlIGl0ZW1zIGdldCBwcm9w
ZXJseSBwcm9jZXNzZWQuCisgICAgICAgICAgICB3aGlsZSAoZGVmUXVldWUubGVuZ3RoKSB7Cisg
ICAgICAgICAgICAgICAgYXJncyA9IGRlZlF1ZXVlLnNoaWZ0KCk7CisgICAgICAgICAgICAgICAg
aWYgKGFyZ3NbMF0gPT09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9uRXJy
b3IobWFrZUVycm9yKCdtaXNtYXRjaCcsICdNaXNtYXRjaGVkIGFub255bW91cyBkZWZpbmUoKSBt
b2R1bGU6ICcgKyBhcmdzW2FyZ3MubGVuZ3RoIC0gMV0pKTsKKyAgICAgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgICAgICAvL2FyZ3MgYXJlIGlkLCBkZXBzLCBmYWN0b3J5LiBT
aG91bGQgYmUgbm9ybWFsaXplZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgLy9kZWZpbmUo
KSBmdW5jdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgY2FsbEdldE1vZHVsZShhcmdzKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBjb250
ZXh0ID0geworICAgICAgICAgICAgY29uZmlnOiBjb25maWcsCisgICAgICAgICAgICBjb250ZXh0
TmFtZTogY29udGV4dE5hbWUsCisgICAgICAgICAgICByZWdpc3RyeTogcmVnaXN0cnksCisgICAg
ICAgICAgICBkZWZpbmVkOiBkZWZpbmVkLAorICAgICAgICAgICAgdXJsRmV0Y2hlZDogdXJsRmV0
Y2hlZCwKKyAgICAgICAgICAgIGRlZlF1ZXVlOiBkZWZRdWV1ZSwKKyAgICAgICAgICAgIE1vZHVs
ZTogTW9kdWxlLAorICAgICAgICAgICAgbWFrZU1vZHVsZU1hcDogbWFrZU1vZHVsZU1hcCwKKyAg
ICAgICAgICAgIG5leHRUaWNrOiByZXEubmV4dFRpY2ssCisgICAgICAgICAgICBvbkVycm9yOiBv
bkVycm9yLAorCisgICAgICAgICAgICAvKioKKyAgICAgICAgICAgICAqIFNldCBhIGNvbmZpZ3Vy
YXRpb24gZm9yIHRoZSBjb250ZXh0LgorICAgICAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IGNm
ZyBjb25maWcgb2JqZWN0IHRvIGludGVncmF0ZS4KKyAgICAgICAgICAgICAqLworICAgICAgICAg
ICAgY29uZmlndXJlOiBmdW5jdGlvbiAoY2ZnKSB7CisgICAgICAgICAgICAgICAgLy9NYWtlIHN1
cmUgdGhlIGJhc2VVcmwgZW5kcyBpbiBhIHNsYXNoLgorICAgICAgICAgICAgICAgIGlmIChjZmcu
YmFzZVVybCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoY2ZnLmJhc2VVcmwuY2hhckF0KGNm
Zy5iYXNlVXJsLmxlbmd0aCAtIDEpICE9PSAnLycpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNmZy5iYXNlVXJsICs9ICcvJzsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgICAgIC8vU2F2ZSBvZmYgdGhlIHBhdGhzIHNpbmNlIHRoZXkg
cmVxdWlyZSBzcGVjaWFsIHByb2Nlc3NpbmcsCisgICAgICAgICAgICAgICAgLy90aGV5IGFyZSBh
ZGRpdGl2ZS4KKyAgICAgICAgICAgICAgICB2YXIgc2hpbSA9IGNvbmZpZy5zaGltLAorICAgICAg
ICAgICAgICAgICAgICBvYmpzID0geworICAgICAgICAgICAgICAgICAgICAgICAgcGF0aHM6IHRy
dWUsCisgICAgICAgICAgICAgICAgICAgICAgICBidW5kbGVzOiB0cnVlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgY29uZmlnOiB0cnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgbWFwOiB0
cnVlCisgICAgICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgICAgICBlYWNoUHJvcChj
ZmcsIGZ1bmN0aW9uICh2YWx1ZSwgcHJvcCkgeworICAgICAgICAgICAgICAgICAgICBpZiAob2Jq
c1twcm9wXSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25maWdbcHJvcF0pIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWdbcHJvcF0gPSB7fTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIG1peGluKGNvbmZpZ1tw
cm9wXSwgdmFsdWUsIHRydWUsIHRydWUpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnW3Byb3BdID0gdmFsdWU7CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIC8vUmV2
ZXJzZSBtYXAgdGhlIGJ1bmRsZXMKKyAgICAgICAgICAgICAgICBpZiAoY2ZnLmJ1bmRsZXMpIHsK
KyAgICAgICAgICAgICAgICAgICAgZWFjaFByb3AoY2ZnLmJ1bmRsZXMsIGZ1bmN0aW9uICh2YWx1
ZSwgcHJvcCkgeworICAgICAgICAgICAgICAgICAgICAgICAgZWFjaCh2YWx1ZSwgZnVuY3Rpb24g
KHYpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodiAhPT0gcHJvcCkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidW5kbGVzTWFwW3ZdID0gcHJvcDsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgLy9NZXJnZSBzaGltCisgICAgICAgICAgICAgICAgaWYgKGNmZy5zaGltKSB7CisgICAgICAg
ICAgICAgICAgICAgIGVhY2hQcm9wKGNmZy5zaGltLCBmdW5jdGlvbiAodmFsdWUsIGlkKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAvL05vcm1hbGl6ZSB0aGUgc3RydWN0dXJlCisgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoaXNBcnJheSh2YWx1ZSkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2YWx1ZSA9IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVw
czogdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh2YWx1ZS5leHBvcnRzIHx8
IHZhbHVlLmluaXQpICYmICF2YWx1ZS5leHBvcnRzRm4pIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2YWx1ZS5leHBvcnRzRm4gPSBjb250ZXh0Lm1ha2VTaGltRXhwb3J0cyh2YWx1ZSk7
CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBzaGlt
W2lkXSA9IHZhbHVlOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAg
ICAgY29uZmlnLnNoaW0gPSBzaGltOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ICAgIC8vQWRqdXN0IHBhY2thZ2VzIGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgICAgICAgICBpZiAo
Y2ZnLnBhY2thZ2VzKSB7CisgICAgICAgICAgICAgICAgICAgIGVhY2goY2ZnLnBhY2thZ2VzLCBm
dW5jdGlvbiAocGtnT2JqKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbG9jYXRpb24s
IG5hbWU7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIHBrZ09iaiA9IHR5cGVvZiBwa2dPYmog
PT09ICdzdHJpbmcnID8geyBuYW1lOiBwa2dPYmogfSA6IHBrZ09iajsKKworICAgICAgICAgICAg
ICAgICAgICAgICAgbmFtZSA9IHBrZ09iai5uYW1lOworICAgICAgICAgICAgICAgICAgICAgICAg
bG9jYXRpb24gPSBwa2dPYmoubG9jYXRpb247CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
bG9jYXRpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcucGF0aHNbbmFt
ZV0gPSBwa2dPYmoubG9jYXRpb247CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICAgICAgICAgIC8vU2F2ZSBwb2ludGVyIHRvIG1haW4gbW9kdWxlIElEIGZvciBw
a2cgbmFtZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIC8vUmVtb3ZlIGxlYWRpbmcgZG90IGlu
IG1haW4sIHNvIG1haW4gcGF0aHMgYXJlIG5vcm1hbGl6ZWQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAvL2FuZCByZW1vdmUgYW55IHRyYWlsaW5nIC5qcywgc2luY2UgZGlmZmVyZW50IHBhY2th
Z2UKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vZW52cyBoYXZlIGRpZmZlcmVudCBjb252ZW50
aW9uczogc29tZSB1c2UgYSBtb2R1bGUgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIC8v
c29tZSB1c2UgYSBmaWxlIG5hbWUuCisgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcucGtn
c1tuYW1lXSA9IHBrZ09iai5uYW1lICsgJy8nICsgKHBrZ09iai5tYWluIHx8ICdtYWluJykKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZShjdXJyRGlyUmVnRXhw
LCAnJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZShqc1N1
ZmZpeFJlZ0V4cCwgJycpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICAvL0lmIHRoZXJlIGFyZSBhbnkgIndhaXRpbmcgdG8gZXhl
Y3V0ZSIgbW9kdWxlcyBpbiB0aGUgcmVnaXN0cnksCisgICAgICAgICAgICAgICAgLy91cGRhdGUg
dGhlIG1hcHMgZm9yIHRoZW0sIHNpbmNlIHRoZWlyIGluZm8sIGxpa2UgVVJMcyB0byBsb2FkLAor
ICAgICAgICAgICAgICAgIC8vbWF5IGhhdmUgY2hhbmdlZC4KKyAgICAgICAgICAgICAgICBlYWNo
UHJvcChyZWdpc3RyeSwgZnVuY3Rpb24gKG1vZCwgaWQpIHsKKyAgICAgICAgICAgICAgICAgICAg
Ly9JZiBtb2R1bGUgYWxyZWFkeSBoYXMgaW5pdCBjYWxsZWQsIHNpbmNlIGl0IGlzIHRvbworICAg
ICAgICAgICAgICAgICAgICAvL2xhdGUgdG8gbW9kaWZ5IHRoZW0sIGFuZCBpZ25vcmUgdW5ub3Jt
YWxpemVkIG9uZXMKKyAgICAgICAgICAgICAgICAgICAgLy9zaW5jZSB0aGV5IGFyZSB0cmFuc2ll
bnQuCisgICAgICAgICAgICAgICAgICAgIGlmICghbW9kLmluaXRlZCAmJiAhbW9kLm1hcC51bm5v
cm1hbGl6ZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1vZC5tYXAgPSBtYWtlTW9kdWxl
TWFwKGlkKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0pOworCisg
ICAgICAgICAgICAgICAgLy9JZiBhIGRlcHMgYXJyYXkgb3IgYSBjb25maWcgY2FsbGJhY2sgaXMg
c3BlY2lmaWVkLCB0aGVuIGNhbGwKKyAgICAgICAgICAgICAgICAvL3JlcXVpcmUgd2l0aCB0aG9z
ZSBhcmdzLiBUaGlzIGlzIHVzZWZ1bCB3aGVuIHJlcXVpcmUgaXMgZGVmaW5lZCBhcyBhCisgICAg
ICAgICAgICAgICAgLy9jb25maWcgb2JqZWN0IGJlZm9yZSByZXF1aXJlLmpzIGlzIGxvYWRlZC4K
KyAgICAgICAgICAgICAgICBpZiAoY2ZnLmRlcHMgfHwgY2ZnLmNhbGxiYWNrKSB7CisgICAgICAg
ICAgICAgICAgICAgIGNvbnRleHQucmVxdWlyZShjZmcuZGVwcyB8fCBbXSwgY2ZnLmNhbGxiYWNr
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorCisgICAgICAgICAgICBtYWtl
U2hpbUV4cG9ydHM6IGZ1bmN0aW9uICh2YWx1ZSkgeworICAgICAgICAgICAgICAgIGZ1bmN0aW9u
IGZuKCkgeworICAgICAgICAgICAgICAgICAgICB2YXIgcmV0OworICAgICAgICAgICAgICAgICAg
ICBpZiAodmFsdWUuaW5pdCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gdmFsdWUu
aW5pdC5hcHBseShnbG9iYWwsIGFyZ3VtZW50cyk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldCB8fCAodmFsdWUuZXhwb3J0cyAmJiBnZXRHbG9i
YWwodmFsdWUuZXhwb3J0cykpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZm47CisgICAgICAgICAgICB9LAorCisgICAgICAgICAgICBtYWtlUmVxdWlyZTogZnVu
Y3Rpb24gKHJlbE1hcCwgb3B0aW9ucykgeworICAgICAgICAgICAgICAgIG9wdGlvbnMgPSBvcHRp
b25zIHx8IHt9OworCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gbG9jYWxSZXF1aXJlKGRlcHMs
IGNhbGxiYWNrLCBlcnJiYWNrKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBpZCwgbWFwLCBy
ZXF1aXJlTW9kOworCisgICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmVuYWJsZUJ1aWxk
Q2FsbGJhY2sgJiYgY2FsbGJhY2sgJiYgaXNGdW5jdGlvbihjYWxsYmFjaykpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNhbGxiYWNrLl9fcmVxdWlyZUpzQnVpbGQgPSB0cnVlOworICAgICAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBkZXBzID09
PSAnc3RyaW5nJykgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24oY2Fs
bGJhY2spKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9JbnZhbGlkIGNhbGwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb25FcnJvcihtYWtlRXJyb3IoJ3JlcXVp
cmVhcmdzJywgJ0ludmFsaWQgcmVxdWlyZSBjYWxsJyksIGVycmJhY2spOworICAgICAgICAgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAvL0lmIHJlcXVpcmV8ZXhw
b3J0c3xtb2R1bGUgYXJlIHJlcXVlc3RlZCwgZ2V0IHRoZQorICAgICAgICAgICAgICAgICAgICAg
ICAgLy92YWx1ZSBmb3IgdGhlbSBmcm9tIHRoZSBzcGVjaWFsIGhhbmRsZXJzLiBDYXZlYXQ6Cisg
ICAgICAgICAgICAgICAgICAgICAgICAvL3RoaXMgb25seSB3b3JrcyB3aGlsZSBtb2R1bGUgaXMg
YmVpbmcgZGVmaW5lZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWxNYXAgJiYgaGFz
UHJvcChoYW5kbGVycywgZGVwcykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gaGFuZGxlcnNbZGVwc10ocmVnaXN0cnlbcmVsTWFwLmlkXSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vU3luY2hyb25vdXMgYWNjZXNz
IHRvIG9uZSBtb2R1bGUuIElmIHJlcXVpcmUuZ2V0IGlzCisgICAgICAgICAgICAgICAgICAgICAg
ICAvL2F2YWlsYWJsZSAoYXMgaW4gdGhlIE5vZGUgYWRhcHRlciksIHByZWZlciB0aGF0LgorICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcS5nZXQpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gcmVxLmdldChjb250ZXh0LCBkZXBzLCByZWxNYXAsIGxvY2FsUmVxdWly
ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAg
IC8vTm9ybWFsaXplIG1vZHVsZSBuYW1lLCBpZiBpdCBjb250YWlucyAuIG9yIC4uCisgICAgICAg
ICAgICAgICAgICAgICAgICBtYXAgPSBtYWtlTW9kdWxlTWFwKGRlcHMsIHJlbE1hcCwgZmFsc2Us
IHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBtYXAuaWQ7CisKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICghaGFzUHJvcChkZWZpbmVkLCBpZCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gb25FcnJvcihtYWtlRXJyb3IoJ25vdGxvYWRlZCcsICdN
b2R1bGUgbmFtZSAiJyArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWQgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICciIGhhcyBub3Qg
YmVlbiBsb2FkZWQgeWV0IGZvciBjb250ZXh0OiAnICsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0TmFtZSArCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKHJlbE1hcCA/ICcnIDogJy4gVXNlIHJlcXVpcmUoW10pJykpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBk
ZWZpbmVkW2lkXTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAg
IC8vR3JhYiBkZWZpbmVzIHdhaXRpbmcgaW4gdGhlIGdsb2JhbCBxdWV1ZS4KKyAgICAgICAgICAg
ICAgICAgICAgaW50YWtlRGVmaW5lcygpOworCisgICAgICAgICAgICAgICAgICAgIC8vTWFyayBh
bGwgdGhlIGRlcGVuZGVuY2llcyBhcyBuZWVkaW5nIHRvIGJlIGxvYWRlZC4KKyAgICAgICAgICAg
ICAgICAgICAgY29udGV4dC5uZXh0VGljayhmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAvL1NvbWUgZGVmaW5lcyBjb3VsZCBoYXZlIGJlZW4gYWRkZWQgc2luY2UgdGhlCisg
ICAgICAgICAgICAgICAgICAgICAgICAvL3JlcXVpcmUgY2FsbCwgY29sbGVjdCB0aGVtLgorICAg
ICAgICAgICAgICAgICAgICAgICAgaW50YWtlRGVmaW5lcygpOworCisgICAgICAgICAgICAgICAg
ICAgICAgICByZXF1aXJlTW9kID0gZ2V0TW9kdWxlKG1ha2VNb2R1bGVNYXAobnVsbCwgcmVsTWFw
KSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vU3RvcmUgaWYgbWFwIGNvbmZpZyBzaG91
bGQgYmUgYXBwbGllZCB0byB0aGlzIHJlcXVpcmUKKyAgICAgICAgICAgICAgICAgICAgICAgIC8v
Y2FsbCBmb3IgZGVwZW5kZW5jaWVzLgorICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZU1v
ZC5za2lwTWFwID0gb3B0aW9ucy5za2lwTWFwOworCisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXF1aXJlTW9kLmluaXQoZGVwcywgY2FsbGJhY2ssIGVycmJhY2ssIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlbmFibGVkOiB0cnVlCisgICAgICAgICAgICAgICAgICAgICAgICB9KTsK
KworICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tMb2FkZWQoKTsKKyAgICAgICAgICAgICAg
ICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvY2FsUmVxdWlyZTsKKyAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBtaXhpbihsb2NhbFJlcXVpcmUsIHsK
KyAgICAgICAgICAgICAgICAgICAgaXNCcm93c2VyOiBpc0Jyb3dzZXIsCisKKyAgICAgICAgICAg
ICAgICAgICAgLyoqCisgICAgICAgICAgICAgICAgICAgICAqIENvbnZlcnRzIGEgbW9kdWxlIG5h
bWUgKyAuZXh0ZW5zaW9uIGludG8gYW4gVVJMIHBhdGguCisgICAgICAgICAgICAgICAgICAgICAq
ICpSZXF1aXJlcyogdGhlIHVzZSBvZiBhIG1vZHVsZSBuYW1lLiBJdCBkb2VzIG5vdCBzdXBwb3J0
IHVzaW5nCisgICAgICAgICAgICAgICAgICAgICAqIHBsYWluIFVSTHMgbGlrZSBuYW1lVG9Vcmwu
CisgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICB0b1VybDogZnVu
Y3Rpb24gKG1vZHVsZU5hbWVQbHVzRXh0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIg
ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ID0gbW9kdWxlTmFtZVBsdXNF
eHQubGFzdEluZGV4T2YoJy4nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWdtZW50
ID0gbW9kdWxlTmFtZVBsdXNFeHQuc3BsaXQoJy8nKVswXSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpc1JlbGF0aXZlID0gc2VnbWVudCA9PT0gJy4nIHx8IHNlZ21lbnQgPT09ICcuLic7
CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vSGF2ZSBhIGZpbGUgZXh0ZW5zaW9uIGFsaWFz
LCBhbmQgaXQgaXMgbm90IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgLy9kb3RzIGZyb20g
YSByZWxhdGl2ZSBwYXRoLgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ICE9PSAt
MSAmJiAoIWlzUmVsYXRpdmUgfHwgaW5kZXggPiAxKSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGV4dCA9IG1vZHVsZU5hbWVQbHVzRXh0LnN1YnN0cmluZyhpbmRleCwgbW9kdWxlTmFt
ZVBsdXNFeHQubGVuZ3RoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVOYW1l
UGx1c0V4dCA9IG1vZHVsZU5hbWVQbHVzRXh0LnN1YnN0cmluZygwLCBpbmRleCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb250
ZXh0Lm5hbWVUb1VybChub3JtYWxpemUobW9kdWxlTmFtZVBsdXNFeHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxNYXAgJiYgcmVsTWFwLmlkLCB0
cnVlKSwgZXh0LCAgdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAg
ICAgICAgICAgZGVmaW5lZDogZnVuY3Rpb24gKGlkKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gaGFzUHJvcChkZWZpbmVkLCBtYWtlTW9kdWxlTWFwKGlkLCByZWxNYXAsIGZhbHNl
LCB0cnVlKS5pZCk7CisgICAgICAgICAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgICAgICAg
ICAgc3BlY2lmaWVkOiBmdW5jdGlvbiAoaWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlk
ID0gbWFrZU1vZHVsZU1hcChpZCwgcmVsTWFwLCBmYWxzZSwgdHJ1ZSkuaWQ7CisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gaGFzUHJvcChkZWZpbmVkLCBpZCkgfHwgaGFzUHJvcChyZWdp
c3RyeSwgaWQpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSk7CisK
KyAgICAgICAgICAgICAgICAvL09ubHkgYWxsb3cgdW5kZWYgb24gdG9wIGxldmVsIHJlcXVpcmUg
Y2FsbHMKKyAgICAgICAgICAgICAgICBpZiAoIXJlbE1hcCkgeworICAgICAgICAgICAgICAgICAg
ICBsb2NhbFJlcXVpcmUudW5kZWYgPSBmdW5jdGlvbiAoaWQpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIC8vQmluZCBhbnkgd2FpdGluZyBkZWZpbmUoKSBjYWxscyB0byB0aGlzIGNvbnRleHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAvL2ZpeCBmb3IgIzQwOAorICAgICAgICAgICAgICAg
ICAgICAgICAgdGFrZUdsb2JhbFF1ZXVlKCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIHZh
ciBtYXAgPSBtYWtlTW9kdWxlTWFwKGlkLCByZWxNYXAsIHRydWUpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1vZCA9IGdldE93bihyZWdpc3RyeSwgaWQpOworCisgICAgICAgICAgICAg
ICAgICAgICAgICByZW1vdmVTY3JpcHQoaWQpOworCisgICAgICAgICAgICAgICAgICAgICAgICBk
ZWxldGUgZGVmaW5lZFtpZF07CisgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgdXJsRmV0
Y2hlZFttYXAudXJsXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB1bmRlZkV2ZW50
c1tpZF07CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vQ2xlYW4gcXVldWVkIGRlZmluZXMg
dG9vLiBHbyBiYWNrd2FyZHMKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vaW4gYXJyYXkgc28g
dGhhdCB0aGUgc3BsaWNlcyBkbyBub3QKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vbWVzcyB1
cCB0aGUgaXRlcmF0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgZWFjaFJldmVyc2UoZGVm
UXVldWUsIGZ1bmN0aW9uKGFyZ3MsIGkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZihhcmdzWzBdID09PSBpZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZR
dWV1ZS5zcGxpY2UoaSwgMSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtb2Qp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL0hvbGQgb24gdG8gbGlzdGVuZXJzIGlu
IGNhc2UgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9tb2R1bGUgd2lsbCBiZSBh
dHRlbXB0ZWQgdG8gYmUgcmVsb2FkZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3Vz
aW5nIGEgZGlmZmVyZW50IGNvbmZpZy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
bW9kLmV2ZW50cy5kZWZpbmVkKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
ZGVmRXZlbnRzW2lkXSA9IG1vZC5ldmVudHM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYW5SZWdpc3RyeShpZCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAgICAgcmV0dXJuIGxvY2FsUmVxdWlyZTsKKyAgICAgICAg
ICAgIH0sCisKKyAgICAgICAgICAgIC8qKgorICAgICAgICAgICAgICogQ2FsbGVkIHRvIGVuYWJs
ZSBhIG1vZHVsZSBpZiBpdCBpcyBzdGlsbCBpbiB0aGUgcmVnaXN0cnkKKyAgICAgICAgICAgICAq
IGF3YWl0aW5nIGVuYWJsZW1lbnQuIEEgc2Vjb25kIGFyZywgcGFyZW50LCB0aGUgcGFyZW50IG1v
ZHVsZSwKKyAgICAgICAgICAgICAqIGlzIHBhc3NlZCBpbiBmb3IgY29udGV4dCwgd2hlbiB0aGlz
IG1ldGhvZCBpcyBvdmVycmlkZGVuIGJ5CisgICAgICAgICAgICAgKiB0aGUgb3B0aW1pemVyLiBO
b3Qgc2hvd24gaGVyZSB0byBrZWVwIGNvZGUgY29tcGFjdC4KKyAgICAgICAgICAgICAqLworICAg
ICAgICAgICAgZW5hYmxlOiBmdW5jdGlvbiAoZGVwTWFwKSB7CisgICAgICAgICAgICAgICAgdmFy
IG1vZCA9IGdldE93bihyZWdpc3RyeSwgZGVwTWFwLmlkKTsKKyAgICAgICAgICAgICAgICBpZiAo
bW9kKSB7CisgICAgICAgICAgICAgICAgICAgIGdldE1vZHVsZShkZXBNYXApLmVuYWJsZSgpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgIC8qKgorICAg
ICAgICAgICAgICogSW50ZXJuYWwgbWV0aG9kIHVzZWQgYnkgZW52aXJvbm1lbnQgYWRhcHRlcnMg
dG8gY29tcGxldGUgYSBsb2FkIGV2ZW50LgorICAgICAgICAgICAgICogQSBsb2FkIGV2ZW50IGNv
dWxkIGJlIGEgc2NyaXB0IGxvYWQgb3IganVzdCBhIGxvYWQgcGFzcyBmcm9tIGEgc3luY2hyb25v
dXMKKyAgICAgICAgICAgICAqIGxvYWQgY2FsbC4KKyAgICAgICAgICAgICAqIEBwYXJhbSB7U3Ry
aW5nfSBtb2R1bGVOYW1lIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdG8gcG90ZW50aWFsbHkgY29t
cGxldGUuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGNvbXBsZXRlTG9hZDogZnVuY3Rp
b24gKG1vZHVsZU5hbWUpIHsKKyAgICAgICAgICAgICAgICB2YXIgZm91bmQsIGFyZ3MsIG1vZCwK
KyAgICAgICAgICAgICAgICAgICAgc2hpbSA9IGdldE93bihjb25maWcuc2hpbSwgbW9kdWxlTmFt
ZSkgfHwge30sCisgICAgICAgICAgICAgICAgICAgIHNoRXhwb3J0cyA9IHNoaW0uZXhwb3J0czsK
KworICAgICAgICAgICAgICAgIHRha2VHbG9iYWxRdWV1ZSgpOworCisgICAgICAgICAgICAgICAg
d2hpbGUgKGRlZlF1ZXVlLmxlbmd0aCkgeworICAgICAgICAgICAgICAgICAgICBhcmdzID0gZGVm
UXVldWUuc2hpZnQoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGFyZ3NbMF0gPT09IG51bGwp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3NbMF0gPSBtb2R1bGVOYW1lOworICAgICAg
ICAgICAgICAgICAgICAgICAgLy9JZiBhbHJlYWR5IGZvdW5kIGFuIGFub255bW91cyBtb2R1bGUg
YW5kIGJvdW5kIGl0CisgICAgICAgICAgICAgICAgICAgICAgICAvL3RvIHRoaXMgbmFtZSwgdGhl
biB0aGlzIGlzIHNvbWUgb3RoZXIgYW5vbiBtb2R1bGUKKyAgICAgICAgICAgICAgICAgICAgICAg
IC8vd2FpdGluZyBmb3IgaXRzIGNvbXBsZXRlTG9hZCB0byBmaXJlLgorICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGZvdW5kKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBmb3Vu
ZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYXJnc1swXSA9PT0gbW9k
dWxlTmFtZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy9Gb3VuZCBtYXRjaGluZyBkZWZp
bmUgY2FsbCBmb3IgdGhpcyBzY3JpcHQhCisgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZCA9
IHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBjYWxs
R2V0TW9kdWxlKGFyZ3MpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8v
RG8gdGhpcyBhZnRlciB0aGUgY3ljbGUgb2YgY2FsbEdldE1vZHVsZSBpbiBjYXNlIHRoZSByZXN1
bHQKKyAgICAgICAgICAgICAgICAvL29mIHRob3NlIGNhbGxzL2luaXQgY2FsbHMgY2hhbmdlcyB0
aGUgcmVnaXN0cnkuCisgICAgICAgICAgICAgICAgbW9kID0gZ2V0T3duKHJlZ2lzdHJ5LCBtb2R1
bGVOYW1lKTsKKworICAgICAgICAgICAgICAgIGlmICghZm91bmQgJiYgIWhhc1Byb3AoZGVmaW5l
ZCwgbW9kdWxlTmFtZSkgJiYgbW9kICYmICFtb2QuaW5pdGVkKSB7CisgICAgICAgICAgICAgICAg
ICAgIGlmIChjb25maWcuZW5mb3JjZURlZmluZSAmJiAoIXNoRXhwb3J0cyB8fCAhZ2V0R2xvYmFs
KHNoRXhwb3J0cykpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGFzUGF0aEZhbGxi
YWNrKG1vZHVsZU5hbWUpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gb25FcnJvcihtYWtlRXJyb3IoJ25vZGVmaW5lJywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdObyBkZWZpbmUgY2FsbCBmb3IgJyArIG1v
ZHVsZU5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
dWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21vZHVs
ZU5hbWVdKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvL0Egc2NyaXB0IHRoYXQgZG9lcyBu
b3QgY2FsbCBkZWZpbmUoKSwgc28ganVzdCBzaW11bGF0ZQorICAgICAgICAgICAgICAgICAgICAg
ICAgLy90aGUgY2FsbCBmb3IgaXQuCisgICAgICAgICAgICAgICAgICAgICAgICBjYWxsR2V0TW9k
dWxlKFttb2R1bGVOYW1lLCAoc2hpbS5kZXBzIHx8IFtdKSwgc2hpbS5leHBvcnRzRm5dKTsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg
IGNoZWNrTG9hZGVkKCk7CisgICAgICAgICAgICB9LAorCisgICAgICAgICAgICAvKioKKyAgICAg
ICAgICAgICAqIENvbnZlcnRzIGEgbW9kdWxlIG5hbWUgdG8gYSBmaWxlIHBhdGguIFN1cHBvcnRz
IGNhc2VzIHdoZXJlCisgICAgICAgICAgICAgKiBtb2R1bGVOYW1lIG1heSBhY3R1YWxseSBiZSBq
dXN0IGFuIFVSTC4KKyAgICAgICAgICAgICAqIE5vdGUgdGhhdCBpdCAqKmRvZXMgbm90KiogY2Fs
bCBub3JtYWxpemUgb24gdGhlIG1vZHVsZU5hbWUsCisgICAgICAgICAgICAgKiBpdCBpcyBhc3N1
bWVkIHRvIGhhdmUgYWxyZWFkeSBiZWVuIG5vcm1hbGl6ZWQuIFRoaXMgaXMgYW4KKyAgICAgICAg
ICAgICAqIGludGVybmFsIEFQSSwgbm90IGEgcHVibGljIG9uZS4gVXNlIHRvVXJsIGZvciB0aGUg
cHVibGljIEFQSS4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgbmFtZVRvVXJsOiBmdW5j
dGlvbiAobW9kdWxlTmFtZSwgZXh0LCBza2lwRXh0KSB7CisgICAgICAgICAgICAgICAgdmFyIHBh
dGhzLCBzeW1zLCBpLCBwYXJlbnRNb2R1bGUsIHVybCwKKyAgICAgICAgICAgICAgICAgICAgcGFy
ZW50UGF0aCwgYnVuZGxlSWQsCisgICAgICAgICAgICAgICAgICAgIHBrZ01haW4gPSBnZXRPd24o
Y29uZmlnLnBrZ3MsIG1vZHVsZU5hbWUpOworCisgICAgICAgICAgICAgICAgaWYgKHBrZ01haW4p
IHsKKyAgICAgICAgICAgICAgICAgICAgbW9kdWxlTmFtZSA9IHBrZ01haW47CisgICAgICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAgICAgYnVuZGxlSWQgPSBnZXRPd24oYnVuZGxlc01hcCwg
bW9kdWxlTmFtZSk7CisKKyAgICAgICAgICAgICAgICBpZiAoYnVuZGxlSWQpIHsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQubmFtZVRvVXJsKGJ1bmRsZUlkLCBleHQsIHNraXBF
eHQpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vSWYgYSBjb2xvbiBp
cyBpbiB0aGUgVVJMLCBpdCBpbmRpY2F0ZXMgYSBwcm90b2NvbCBpcyB1c2VkIGFuZCBpdCBpcyBq
dXN0CisgICAgICAgICAgICAgICAgLy9hbiBVUkwgdG8gYSBmaWxlLCBvciBpZiBpdCBzdGFydHMg
d2l0aCBhIHNsYXNoLCBjb250YWlucyBhIHF1ZXJ5IGFyZyAoaS5lLiA/KQorICAgICAgICAgICAg
ICAgIC8vb3IgZW5kcyB3aXRoIC5qcywgdGhlbiBhc3N1bWUgdGhlIHVzZXIgbWVhbnQgdG8gdXNl
IGFuIHVybCBhbmQgbm90IGEgbW9kdWxlIGlkLgorICAgICAgICAgICAgICAgIC8vVGhlIHNsYXNo
IGlzIGltcG9ydGFudCBmb3IgcHJvdG9jb2wtbGVzcyBVUkxzIGFzIHdlbGwgYXMgZnVsbCBwYXRo
cy4KKyAgICAgICAgICAgICAgICBpZiAocmVxLmpzRXh0UmVnRXhwLnRlc3QobW9kdWxlTmFtZSkp
IHsKKyAgICAgICAgICAgICAgICAgICAgLy9KdXN0IGEgcGxhaW4gcGF0aCwgbm90IG1vZHVsZSBu
YW1lIGxvb2t1cCwgc28ganVzdCByZXR1cm4gaXQuCisgICAgICAgICAgICAgICAgICAgIC8vQWRk
IGV4dGVuc2lvbiBpZiBpdCBpcyBpbmNsdWRlZC4gVGhpcyBpcyBhIGJpdCB3b25reSwgb25seSBu
b24tLmpzIHRoaW5ncyBwYXNzCisgICAgICAgICAgICAgICAgICAgIC8vYW4gZXh0ZW5zaW9uLCB0
aGlzIG1ldGhvZCBwcm9iYWJseSBuZWVkcyB0byBiZSByZXdvcmtlZC4KKyAgICAgICAgICAgICAg
ICAgICAgdXJsID0gbW9kdWxlTmFtZSArIChleHQgfHwgJycpOworICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8vQSBtb2R1bGUgdGhhdCBuZWVkcyB0byBiZSBj
b252ZXJ0ZWQgdG8gYSBwYXRoLgorICAgICAgICAgICAgICAgICAgICBwYXRocyA9IGNvbmZpZy5w
YXRoczsKKworICAgICAgICAgICAgICAgICAgICBzeW1zID0gbW9kdWxlTmFtZS5zcGxpdCgnLycp
OworICAgICAgICAgICAgICAgICAgICAvL0ZvciBlYWNoIG1vZHVsZSBuYW1lIHNlZ21lbnQsIHNl
ZSBpZiB0aGVyZSBpcyBhIHBhdGgKKyAgICAgICAgICAgICAgICAgICAgLy9yZWdpc3RlcmVkIGZv
ciBpdC4gU3RhcnQgd2l0aCBtb3N0IHNwZWNpZmljIG5hbWUKKyAgICAgICAgICAgICAgICAgICAg
Ly9hbmQgd29yayB1cCBmcm9tIGl0LgorICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSBzeW1z
Lmxlbmd0aDsgaSA+IDA7IGkgLT0gMSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50
TW9kdWxlID0gc3ltcy5zbGljZSgwLCBpKS5qb2luKCcvJyk7CisKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHBhcmVudFBhdGggPSBnZXRPd24ocGF0aHMsIHBhcmVudE1vZHVsZSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAocGFyZW50UGF0aCkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vSWYgYW4gYXJyYXksIGl0IG1lYW5zIHRoZXJlIGFyZSBhIGZldyBjaG9pY2VzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vQ2hvb3NlIHRoZSBvbmUgdGhhdCBpcyBkZXNp
cmVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzQXJyYXkocGFyZW50UGF0aCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50UGF0aCA9IHBhcmVudFBh
dGhbMF07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN5bXMuc3BsaWNlKDAsIGksIHBhcmVudFBhdGgpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgLy9Kb2luIHRoZSBwYXRoIHBhcnRz
IHRvZ2V0aGVyLCB0aGVuIGZpZ3VyZSBvdXQgaWYgYmFzZVVybCBpcyBuZWVkZWQuCisgICAgICAg
ICAgICAgICAgICAgIHVybCA9IHN5bXMuam9pbignLycpOworICAgICAgICAgICAgICAgICAgICB1
cmwgKz0gKGV4dCB8fCAoL15kYXRhXDp8XD8vLnRlc3QodXJsKSB8fCBza2lwRXh0ID8gJycgOiAn
LmpzJykpOworICAgICAgICAgICAgICAgICAgICB1cmwgPSAodXJsLmNoYXJBdCgwKSA9PT0gJy8n
IHx8IHVybC5tYXRjaCgvXltcd1wrXC5cLV0rOi8pID8gJycgOiBjb25maWcuYmFzZVVybCkgKyB1
cmw7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbmZpZy51
cmxBcmdzID8gdXJsICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
KHVybC5pbmRleE9mKCc/JykgPT09IC0xID8gJz8nIDogJyYnKSArCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy51cmxBcmdzKSA6IHVybDsKKyAgICAgICAg
ICAgIH0sCisKKyAgICAgICAgICAgIC8vRGVsZWdhdGVzIHRvIHJlcS5sb2FkLiBCcm9rZW4gb3V0
IGFzIGEgc2VwYXJhdGUgZnVuY3Rpb24gdG8KKyAgICAgICAgICAgIC8vYWxsb3cgb3ZlcnJpZGlu
ZyBpbiB0aGUgb3B0aW1pemVyLgorICAgICAgICAgICAgbG9hZDogZnVuY3Rpb24gKGlkLCB1cmwp
IHsKKyAgICAgICAgICAgICAgICByZXEubG9hZChjb250ZXh0LCBpZCwgdXJsKTsKKyAgICAgICAg
ICAgIH0sCisKKyAgICAgICAgICAgIC8qKgorICAgICAgICAgICAgICogRXhlY3V0ZXMgYSBtb2R1
bGUgY2FsbGJhY2sgZnVuY3Rpb24uIEJyb2tlbiBvdXQgYXMgYSBzZXBhcmF0ZSBmdW5jdGlvbgor
ICAgICAgICAgICAgICogc29sZWx5IHRvIGFsbG93IHRoZSBidWlsZCBzeXN0ZW0gdG8gc2VxdWVu
Y2UgdGhlIGZpbGVzIGluIHRoZSBidWlsdAorICAgICAgICAgICAgICogbGF5ZXIgaW4gdGhlIHJp
Z2h0IHNlcXVlbmNlLgorICAgICAgICAgICAgICoKKyAgICAgICAgICAgICAqIEBwcml2YXRlCisg
ICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGV4ZWNDYjogZnVuY3Rpb24gKG5hbWUsIGNhbGxi
YWNrLCBhcmdzLCBleHBvcnRzKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrLmFw
cGx5KGV4cG9ydHMsIGFyZ3MpOworICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgLyoqCisg
ICAgICAgICAgICAgKiBjYWxsYmFjayBmb3Igc2NyaXB0IGxvYWRzLCB1c2VkIHRvIGNoZWNrIHN0
YXR1cyBvZiBsb2FkaW5nLgorICAgICAgICAgICAgICoKKyAgICAgICAgICAgICAqIEBwYXJhbSB7
RXZlbnR9IGV2dCB0aGUgZXZlbnQgZnJvbSB0aGUgYnJvd3NlciBmb3IgdGhlIHNjcmlwdAorICAg
ICAgICAgICAgICogdGhhdCB3YXMgbG9hZGVkLgorICAgICAgICAgICAgICovCisgICAgICAgICAg
ICBvblNjcmlwdExvYWQ6IGZ1bmN0aW9uIChldnQpIHsKKyAgICAgICAgICAgICAgICAvL1VzaW5n
IGN1cnJlbnRUYXJnZXQgaW5zdGVhZCBvZiB0YXJnZXQgZm9yIEZpcmVmb3ggMi4wJ3Mgc2FrZS4g
Tm90CisgICAgICAgICAgICAgICAgLy9hbGwgb2xkIGJyb3dzZXJzIHdpbGwgYmUgc3VwcG9ydGVk
LCBidXQgdGhpcyBvbmUgd2FzIGVhc3kgZW5vdWdoCisgICAgICAgICAgICAgICAgLy90byBzdXBw
b3J0IGFuZCBzdGlsbCBtYWtlcyBzZW5zZS4KKyAgICAgICAgICAgICAgICBpZiAoZXZ0LnR5cGUg
PT09ICdsb2FkJyB8fAorICAgICAgICAgICAgICAgICAgICAgICAgKHJlYWR5UmVnRXhwLnRlc3Qo
KGV2dC5jdXJyZW50VGFyZ2V0IHx8IGV2dC5zcmNFbGVtZW50KS5yZWFkeVN0YXRlKSkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgLy9SZXNldCBpbnRlcmFjdGl2ZSBzY3JpcHQgc28gYSBzY3JpcHQg
bm9kZSBpcyBub3QgaGVsZCBvbnRvIGZvcgorICAgICAgICAgICAgICAgICAgICAvL3RvIGxvbmcu
CisgICAgICAgICAgICAgICAgICAgIGludGVyYWN0aXZlU2NyaXB0ID0gbnVsbDsKKworICAgICAg
ICAgICAgICAgICAgICAvL1B1bGwgb3V0IHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgYW5kIHRoZSBj
b250ZXh0LgorICAgICAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IGdldFNjcmlwdERhdGEoZXZ0
KTsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC5jb21wbGV0ZUxvYWQoZGF0YS5pZCk7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgLyoqCisgICAg
ICAgICAgICAgKiBDYWxsYmFjayBmb3Igc2NyaXB0IGVycm9ycy4KKyAgICAgICAgICAgICAqLwor
ICAgICAgICAgICAgb25TY3JpcHRFcnJvcjogZnVuY3Rpb24gKGV2dCkgeworICAgICAgICAgICAg
ICAgIHZhciBkYXRhID0gZ2V0U2NyaXB0RGF0YShldnQpOworICAgICAgICAgICAgICAgIGlmICgh
aGFzUGF0aEZhbGxiYWNrKGRhdGEuaWQpKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBv
bkVycm9yKG1ha2VFcnJvcignc2NyaXB0ZXJyb3InLCAnU2NyaXB0IGVycm9yIGZvcjogJyArIGRh
dGEuaWQsIGV2dCwgW2RhdGEuaWRdKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorICAgICAgICB9OworCisgICAgICAgIGNvbnRleHQucmVxdWlyZSA9IGNvbnRleHQubWFrZVJl
cXVpcmUoKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQ7CisgICAgfQorCisgICAgLyoqCisgICAg
ICogTWFpbiBlbnRyeSBwb2ludC4KKyAgICAgKgorICAgICAqIElmIHRoZSBvbmx5IGFyZ3VtZW50
IHRvIHJlcXVpcmUgaXMgYSBzdHJpbmcsIHRoZW4gdGhlIG1vZHVsZSB0aGF0CisgICAgICogaXMg
cmVwcmVzZW50ZWQgYnkgdGhhdCBzdHJpbmcgaXMgZmV0Y2hlZCBmb3IgdGhlIGFwcHJvcHJpYXRl
IGNvbnRleHQuCisgICAgICoKKyAgICAgKiBJZiB0aGUgZmlyc3QgYXJndW1lbnQgaXMgYW4gYXJy
YXksIHRoZW4gaXQgd2lsbCBiZSB0cmVhdGVkIGFzIGFuIGFycmF5CisgICAgICogb2YgZGVwZW5k
ZW5jeSBzdHJpbmcgbmFtZXMgdG8gZmV0Y2guIEFuIG9wdGlvbmFsIGZ1bmN0aW9uIGNhbGxiYWNr
IGNhbgorICAgICAqIGJlIHNwZWNpZmllZCB0byBleGVjdXRlIHdoZW4gYWxsIG9mIHRob3NlIGRl
cGVuZGVuY2llcyBhcmUgYXZhaWxhYmxlLgorICAgICAqCisgICAgICogTWFrZSBhIGxvY2FsIHJl
cSB2YXJpYWJsZSB0byBoZWxwIENhamEgY29tcGxpYW5jZSAoaXQgYXNzdW1lcyB0aGluZ3MKKyAg
ICAgKiBvbiBhIHJlcXVpcmUgdGhhdCBhcmUgbm90IHN0YW5kYXJkaXplZCksIGFuZCB0byBnaXZl
IGEgc2hvcnQKKyAgICAgKiBuYW1lIGZvciBtaW5pZmljYXRpb24vbG9jYWwgc2NvcGUgdXNlLgor
ICAgICAqLworICAgIHJlcSA9IHJlcXVpcmVqcyA9IGZ1bmN0aW9uIChkZXBzLCBjYWxsYmFjaywg
ZXJyYmFjaywgb3B0aW9uYWwpIHsKKworICAgICAgICAvL0ZpbmQgdGhlIHJpZ2h0IGNvbnRleHQs
IHVzZSBkZWZhdWx0CisgICAgICAgIHZhciBjb250ZXh0LCBjb25maWcsCisgICAgICAgICAgICBj
b250ZXh0TmFtZSA9IGRlZkNvbnRleHROYW1lOworCisgICAgICAgIC8vIERldGVybWluZSBpZiBo
YXZlIGNvbmZpZyBvYmplY3QgaW4gdGhlIGNhbGwuCisgICAgICAgIGlmICghaXNBcnJheShkZXBz
KSAmJiB0eXBlb2YgZGVwcyAhPT0gJ3N0cmluZycpIHsKKyAgICAgICAgICAgIC8vIGRlcHMgaXMg
YSBjb25maWcgb2JqZWN0CisgICAgICAgICAgICBjb25maWcgPSBkZXBzOworICAgICAgICAgICAg
aWYgKGlzQXJyYXkoY2FsbGJhY2spKSB7CisgICAgICAgICAgICAgICAgLy8gQWRqdXN0IGFyZ3Mg
aWYgdGhlcmUgYXJlIGRlcGVuZGVuY2llcworICAgICAgICAgICAgICAgIGRlcHMgPSBjYWxsYmFj
azsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayA9IGVycmJhY2s7CisgICAgICAgICAgICAgICAg
ZXJyYmFjayA9IG9wdGlvbmFsOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBkZXBzID0gW107CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoY29u
ZmlnICYmIGNvbmZpZy5jb250ZXh0KSB7CisgICAgICAgICAgICBjb250ZXh0TmFtZSA9IGNvbmZp
Zy5jb250ZXh0OworICAgICAgICB9CisKKyAgICAgICAgY29udGV4dCA9IGdldE93bihjb250ZXh0
cywgY29udGV4dE5hbWUpOworICAgICAgICBpZiAoIWNvbnRleHQpIHsKKyAgICAgICAgICAgIGNv
bnRleHQgPSBjb250ZXh0c1tjb250ZXh0TmFtZV0gPSByZXEucy5uZXdDb250ZXh0KGNvbnRleHRO
YW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChjb25maWcpIHsKKyAgICAgICAgICAgIGNv
bnRleHQuY29uZmlndXJlKGNvbmZpZyk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gY29u
dGV4dC5yZXF1aXJlKGRlcHMsIGNhbGxiYWNrLCBlcnJiYWNrKTsKKyAgICB9OworCisgICAgLyoq
CisgICAgICogU3VwcG9ydCByZXF1aXJlLmNvbmZpZygpIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGNv
b3BlcmF0ZSB3aXRoIG90aGVyCisgICAgICogQU1EIGxvYWRlcnMgb24gZ2xvYmFsbHkgYWdyZWVk
IG5hbWVzLgorICAgICAqLworICAgIHJlcS5jb25maWcgPSBmdW5jdGlvbiAoY29uZmlnKSB7Cisg
ICAgICAgIHJldHVybiByZXEoY29uZmlnKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogRXhl
Y3V0ZSBzb21ldGhpbmcgYWZ0ZXIgdGhlIGN1cnJlbnQgdGljaworICAgICAqIG9mIHRoZSBldmVu
dCBsb29wLiBPdmVycmlkZSBmb3Igb3RoZXIgZW52cworICAgICAqIHRoYXQgaGF2ZSBhIGJldHRl
ciBzb2x1dGlvbiB0aGFuIHNldFRpbWVvdXQuCisgICAgICogQHBhcmFtICB7RnVuY3Rpb259IGZu
IGZ1bmN0aW9uIHRvIGV4ZWN1dGUgbGF0ZXIuCisgICAgICovCisgICAgcmVxLm5leHRUaWNrID0g
dHlwZW9mIHNldFRpbWVvdXQgIT09ICd1bmRlZmluZWQnID8gZnVuY3Rpb24gKGZuKSB7CisgICAg
ICAgIHNldFRpbWVvdXQoZm4sIDQpOworICAgIH0gOiBmdW5jdGlvbiAoZm4pIHsgZm4oKTsgfTsK
KworICAgIC8qKgorICAgICAqIEV4cG9ydCByZXF1aXJlIGFzIGEgZ2xvYmFsLCBidXQgb25seSBp
ZiBpdCBkb2VzIG5vdCBhbHJlYWR5IGV4aXN0LgorICAgICAqLworICAgIGlmICghcmVxdWlyZSkg
eworICAgICAgICByZXF1aXJlID0gcmVxOworICAgIH0KKworICAgIHJlcS52ZXJzaW9uID0gdmVy
c2lvbjsKKworICAgIC8vVXNlZCB0byBmaWx0ZXIgb3V0IGRlcGVuZGVuY2llcyB0aGF0IGFyZSBh
bHJlYWR5IHBhdGhzLgorICAgIHJlcS5qc0V4dFJlZ0V4cCA9IC9eXC98OnxcP3xcLmpzJC87Cisg
ICAgcmVxLmlzQnJvd3NlciA9IGlzQnJvd3NlcjsKKyAgICBzID0gcmVxLnMgPSB7CisgICAgICAg
IGNvbnRleHRzOiBjb250ZXh0cywKKyAgICAgICAgbmV3Q29udGV4dDogbmV3Q29udGV4dAorICAg
IH07CisKKyAgICAvL0NyZWF0ZSBkZWZhdWx0IGNvbnRleHQuCisgICAgcmVxKHt9KTsKKworICAg
IC8vRXhwb3J0cyBzb21lIGNvbnRleHQtc2Vuc2l0aXZlIG1ldGhvZHMgb24gZ2xvYmFsIHJlcXVp
cmUuCisgICAgZWFjaChbCisgICAgICAgICd0b1VybCcsCisgICAgICAgICd1bmRlZicsCisgICAg
ICAgICdkZWZpbmVkJywKKyAgICAgICAgJ3NwZWNpZmllZCcKKyAgICBdLCBmdW5jdGlvbiAocHJv
cCkgeworICAgICAgICAvL1JlZmVyZW5jZSBmcm9tIGNvbnRleHRzIGluc3RlYWQgb2YgZWFybHkg
YmluZGluZyB0byBkZWZhdWx0IGNvbnRleHQsCisgICAgICAgIC8vc28gdGhhdCBkdXJpbmcgYnVp
bGRzLCB0aGUgbGF0ZXN0IGluc3RhbmNlIG9mIHRoZSBkZWZhdWx0IGNvbnRleHQKKyAgICAgICAg
Ly93aXRoIGl0cyBjb25maWcgZ2V0cyB1c2VkLgorICAgICAgICByZXFbcHJvcF0gPSBmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICB2YXIgY3R4ID0gY29udGV4dHNbZGVmQ29udGV4dE5hbWVdOwor
ICAgICAgICAgICAgcmV0dXJuIGN0eC5yZXF1aXJlW3Byb3BdLmFwcGx5KGN0eCwgYXJndW1lbnRz
KTsKKyAgICAgICAgfTsKKyAgICB9KTsKKworICAgIGlmIChpc0Jyb3dzZXIpIHsKKyAgICAgICAg
aGVhZCA9IHMuaGVhZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF07
CisgICAgICAgIC8vSWYgQkFTRSB0YWcgaXMgaW4gcGxheSwgdXNpbmcgYXBwZW5kQ2hpbGQgaXMg
YSBwcm9ibGVtIGZvciBJRTYuCisgICAgICAgIC8vV2hlbiB0aGF0IGJyb3dzZXIgZGllcywgdGhp
cyBjYW4gYmUgcmVtb3ZlZC4gRGV0YWlscyBpbiB0aGlzIGpRdWVyeSBidWc6CisgICAgICAgIC8v
aHR0cDovL2Rldi5qcXVlcnkuY29tL3RpY2tldC8yNzA5CisgICAgICAgIGJhc2VFbGVtZW50ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2Jhc2UnKVswXTsKKyAgICAgICAgaWYgKGJh
c2VFbGVtZW50KSB7CisgICAgICAgICAgICBoZWFkID0gcy5oZWFkID0gYmFzZUVsZW1lbnQucGFy
ZW50Tm9kZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEFueSBlcnJvcnMg
dGhhdCByZXF1aXJlIGV4cGxpY2l0bHkgZ2VuZXJhdGVzIHdpbGwgYmUgcGFzc2VkIHRvIHRoaXMK
KyAgICAgKiBmdW5jdGlvbi4gSW50ZXJjZXB0L292ZXJyaWRlIGl0IGlmIHlvdSB3YW50IGN1c3Rv
bSBlcnJvciBoYW5kbGluZy4KKyAgICAgKiBAcGFyYW0ge0Vycm9yfSBlcnIgdGhlIGVycm9yIG9i
amVjdC4KKyAgICAgKi8KKyAgICByZXEub25FcnJvciA9IGRlZmF1bHRPbkVycm9yOworCisgICAg
LyoqCisgICAgICogQ3JlYXRlcyB0aGUgbm9kZSBmb3IgdGhlIGxvYWQgY29tbWFuZC4gT25seSB1
c2VkIGluIGJyb3dzZXIgZW52cy4KKyAgICAgKi8KKyAgICByZXEuY3JlYXRlTm9kZSA9IGZ1bmN0
aW9uIChjb25maWcsIG1vZHVsZU5hbWUsIHVybCkgeworICAgICAgICB2YXIgbm9kZSA9IGNvbmZp
Zy54aHRtbCA/CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJywgJ2h0bWw6c2NyaXB0JykgOgorICAgICAgICAgICAg
ICAgIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpOworICAgICAgICBub2RlLnR5cGUg
PSBjb25maWcuc2NyaXB0VHlwZSB8fCAndGV4dC9qYXZhc2NyaXB0JzsKKyAgICAgICAgbm9kZS5j
aGFyc2V0ID0gJ3V0Zi04JzsKKyAgICAgICAgbm9kZS5hc3luYyA9IHRydWU7CisgICAgICAgIHJl
dHVybiBub2RlOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBEb2VzIHRoZSByZXF1ZXN0IHRv
IGxvYWQgYSBtb2R1bGUgZm9yIHRoZSBicm93c2VyIGNhc2UuCisgICAgICogTWFrZSB0aGlzIGEg
c2VwYXJhdGUgZnVuY3Rpb24gdG8gYWxsb3cgb3RoZXIgZW52aXJvbm1lbnRzCisgICAgICogdG8g
b3ZlcnJpZGUgaXQuCisgICAgICoKKyAgICAgKiBAcGFyYW0ge09iamVjdH0gY29udGV4dCB0aGUg
cmVxdWlyZSBjb250ZXh0IHRvIGZpbmQgc3RhdGUuCisgICAgICogQHBhcmFtIHtTdHJpbmd9IG1v
ZHVsZU5hbWUgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZS4KKyAgICAgKiBAcGFyYW0ge09iamVjdH0g
dXJsIHRoZSBVUkwgdG8gdGhlIG1vZHVsZS4KKyAgICAgKi8KKyAgICByZXEubG9hZCA9IGZ1bmN0
aW9uIChjb250ZXh0LCBtb2R1bGVOYW1lLCB1cmwpIHsKKyAgICAgICAgdmFyIGNvbmZpZyA9IChj
b250ZXh0ICYmIGNvbnRleHQuY29uZmlnKSB8fCB7fSwKKyAgICAgICAgICAgIG5vZGU7CisgICAg
ICAgIGlmIChpc0Jyb3dzZXIpIHsKKyAgICAgICAgICAgIC8vSW4gdGhlIGJyb3dzZXIgc28gdXNl
IGEgc2NyaXB0IHRhZworICAgICAgICAgICAgbm9kZSA9IHJlcS5jcmVhdGVOb2RlKGNvbmZpZywg
bW9kdWxlTmFtZSwgdXJsKTsKKworICAgICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoJ2RhdGEt
cmVxdWlyZWNvbnRleHQnLCBjb250ZXh0LmNvbnRleHROYW1lKTsKKyAgICAgICAgICAgIG5vZGUu
c2V0QXR0cmlidXRlKCdkYXRhLXJlcXVpcmVtb2R1bGUnLCBtb2R1bGVOYW1lKTsKKworICAgICAg
ICAgICAgLy9TZXQgdXAgbG9hZCBsaXN0ZW5lci4gVGVzdCBhdHRhY2hFdmVudCBmaXJzdCBiZWNh
dXNlIElFOSBoYXMKKyAgICAgICAgICAgIC8vYSBzdWJ0bGUgaXNzdWUgaW4gaXRzIGFkZEV2ZW50
TGlzdGVuZXIgYW5kIHNjcmlwdCBvbmxvYWQgZmlyaW5ncworICAgICAgICAgICAgLy90aGF0IGRv
IG5vdCBtYXRjaCB0aGUgYmVoYXZpb3Igb2YgYWxsIG90aGVyIGJyb3dzZXJzIHdpdGgKKyAgICAg
ICAgICAgIC8vYWRkRXZlbnRMaXN0ZW5lciBzdXBwb3J0LCB3aGljaCBmaXJlIHRoZSBvbmxvYWQg
ZXZlbnQgZm9yIGEKKyAgICAgICAgICAgIC8vc2NyaXB0IHJpZ2h0IGFmdGVyIHRoZSBzY3JpcHQg
ZXhlY3V0aW9uLiBTZWU6CisgICAgICAgICAgICAvL2h0dHBzOi8vY29ubmVjdC5taWNyb3NvZnQu
Y29tL0lFL2ZlZWRiYWNrL2RldGFpbHMvNjQ4MDU3L3NjcmlwdC1vbmxvYWQtZXZlbnQtaXMtbm90
LWZpcmVkLWltbWVkaWF0ZWx5LWFmdGVyLXNjcmlwdC1leGVjdXRpb24KKyAgICAgICAgICAgIC8v
VU5GT1JUVU5BVEVMWSBPcGVyYSBpbXBsZW1lbnRzIGF0dGFjaEV2ZW50IGJ1dCBkb2VzIG5vdCBm
b2xsb3cgdGhlIHNjcmlwdAorICAgICAgICAgICAgLy9zY3JpcHQgZXhlY3V0aW9uIG1vZGUuCisg
ICAgICAgICAgICBpZiAobm9kZS5hdHRhY2hFdmVudCAmJgorICAgICAgICAgICAgICAgICAgICAv
L0NoZWNrIGlmIG5vZGUuYXR0YWNoRXZlbnQgaXMgYXJ0aWZpY2lhbGx5IGFkZGVkIGJ5IGN1c3Rv
bSBzY3JpcHQgb3IKKyAgICAgICAgICAgICAgICAgICAgLy9uYXRpdmVseSBzdXBwb3J0ZWQgYnkg
YnJvd3NlcgorICAgICAgICAgICAgICAgICAgICAvL3JlYWQgaHR0cHM6Ly9naXRodWIuY29tL2py
YnVya2UvcmVxdWlyZWpzL2lzc3Vlcy8xODcKKyAgICAgICAgICAgICAgICAgICAgLy9pZiB3ZSBj
YW4gTk9UIGZpbmQgW25hdGl2ZSBjb2RlXSB0aGVuIGl0IG11c3QgTk9UIG5hdGl2ZWx5IHN1cHBv
cnRlZC4KKyAgICAgICAgICAgICAgICAgICAgLy9pbiBJRTgsIG5vZGUuYXR0YWNoRXZlbnQgZG9l
cyBub3QgaGF2ZSB0b1N0cmluZygpCisgICAgICAgICAgICAgICAgICAgIC8vTm90ZSB0aGUgdGVz
dCBmb3IgIltuYXRpdmUgY29kZSIgd2l0aCBubyBjbG9zaW5nIGJyYWNlLCBzZWU6CisgICAgICAg
ICAgICAgICAgICAgIC8vaHR0cHM6Ly9naXRodWIuY29tL2pyYnVya2UvcmVxdWlyZWpzL2lzc3Vl
cy8yNzMKKyAgICAgICAgICAgICAgICAgICAgIShub2RlLmF0dGFjaEV2ZW50LnRvU3RyaW5nICYm
IG5vZGUuYXR0YWNoRXZlbnQudG9TdHJpbmcoKS5pbmRleE9mKCdbbmF0aXZlIGNvZGUnKSA8IDAp
ICYmCisgICAgICAgICAgICAgICAgICAgICFpc09wZXJhKSB7CisgICAgICAgICAgICAgICAgLy9Q
cm9iYWJseSBJRS4gSUUgKGF0IGxlYXN0IDYtOCkgZG8gbm90IGZpcmUKKyAgICAgICAgICAgICAg
ICAvL3NjcmlwdCBvbmxvYWQgcmlnaHQgYWZ0ZXIgZXhlY3V0aW5nIHRoZSBzY3JpcHQsIHNvCisg
ICAgICAgICAgICAgICAgLy93ZSBjYW5ub3QgdGllIHRoZSBhbm9ueW1vdXMgZGVmaW5lIGNhbGwg
dG8gYSBuYW1lLgorICAgICAgICAgICAgICAgIC8vSG93ZXZlciwgSUUgcmVwb3J0cyB0aGUgc2Ny
aXB0IGFzIGJlaW5nIGluICdpbnRlcmFjdGl2ZScKKyAgICAgICAgICAgICAgICAvL3JlYWR5U3Rh
dGUgYXQgdGhlIHRpbWUgb2YgdGhlIGRlZmluZSBjYWxsLgorICAgICAgICAgICAgICAgIHVzZUlu
dGVyYWN0aXZlID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgIG5vZGUuYXR0YWNoRXZlbnQoJ29u
cmVhZHlzdGF0ZWNoYW5nZScsIGNvbnRleHQub25TY3JpcHRMb2FkKTsKKyAgICAgICAgICAgICAg
ICAvL0l0IHdvdWxkIGJlIGdyZWF0IHRvIGFkZCBhbiBlcnJvciBoYW5kbGVyIGhlcmUgdG8gY2F0
Y2gKKyAgICAgICAgICAgICAgICAvLzQwNHMgaW4gSUU5Ky4gSG93ZXZlciwgb25yZWFkeXN0YXRl
Y2hhbmdlIHdpbGwgZmlyZSBiZWZvcmUKKyAgICAgICAgICAgICAgICAvL3RoZSBlcnJvciBoYW5k
bGVyLCBzbyB0aGF0IGRvZXMgbm90IGhlbHAuIElmIGFkZEV2ZW50TGlzdGVuZXIKKyAgICAgICAg
ICAgICAgICAvL2lzIHVzZWQsIHRoZW4gSUUgd2lsbCBmaXJlIGVycm9yIGJlZm9yZSBsb2FkLCBi
dXQgd2UgY2Fubm90CisgICAgICAgICAgICAgICAgLy91c2UgdGhhdCBwYXRod2F5IGdpdmVuIHRo
ZSBjb25uZWN0Lm1pY3Jvc29mdC5jb20gaXNzdWUKKyAgICAgICAgICAgICAgICAvL21lbnRpb25l
ZCBhYm92ZSBhYm91dCBub3QgZG9pbmcgdGhlICdzY3JpcHQgZXhlY3V0ZSwKKyAgICAgICAgICAg
ICAgICAvL3RoZW4gZmlyZSB0aGUgc2NyaXB0IGxvYWQgZXZlbnQgbGlzdGVuZXIgYmVmb3JlIGV4
ZWN1dGUKKyAgICAgICAgICAgICAgICAvL25leHQgc2NyaXB0JyB0aGF0IG90aGVyIGJyb3dzZXJz
IGRvLgorICAgICAgICAgICAgICAgIC8vQmVzdCBob3BlOiBJRTEwIGZpeGVzIHRoZSBpc3N1ZXMs
CisgICAgICAgICAgICAgICAgLy9hbmQgdGhlbiBkZXN0cm95cyBhbGwgaW5zdGFsbHMgb2YgSUUg
Ni05LgorICAgICAgICAgICAgICAgIC8vbm9kZS5hdHRhY2hFdmVudCgnb25lcnJvcicsIGNvbnRl
eHQub25TY3JpcHRFcnJvcik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IG5vZGUuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGNvbnRleHQub25TY3JpcHRMb2FkLCBmYWxz
ZSk7CisgICAgICAgICAgICAgICAgbm9kZS5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIGNvbnRl
eHQub25TY3JpcHRFcnJvciwgZmFsc2UpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbm9k
ZS5zcmMgPSB1cmw7CisKKyAgICAgICAgICAgIC8vRm9yIHNvbWUgY2FjaGUgY2FzZXMgaW4gSUUg
Ni04LCB0aGUgc2NyaXB0IGV4ZWN1dGVzIGJlZm9yZSB0aGUgZW5kCisgICAgICAgICAgICAvL29m
IHRoZSBhcHBlbmRDaGlsZCBleGVjdXRpb24sIHNvIHRvIHRpZSBhbiBhbm9ueW1vdXMgZGVmaW5l
CisgICAgICAgICAgICAvL2NhbGwgdG8gdGhlIG1vZHVsZSBuYW1lICh3aGljaCBpcyBzdG9yZWQg
b24gdGhlIG5vZGUpLCBob2xkIG9uCisgICAgICAgICAgICAvL3RvIGEgcmVmZXJlbmNlIHRvIHRo
aXMgbm9kZSwgYnV0IGNsZWFyIGFmdGVyIHRoZSBET00gaW5zZXJ0aW9uLgorICAgICAgICAgICAg
Y3VycmVudGx5QWRkaW5nU2NyaXB0ID0gbm9kZTsKKyAgICAgICAgICAgIGlmIChiYXNlRWxlbWVu
dCkgeworICAgICAgICAgICAgICAgIGhlYWQuaW5zZXJ0QmVmb3JlKG5vZGUsIGJhc2VFbGVtZW50
KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaGVhZC5hcHBlbmRDaGls
ZChub2RlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGN1cnJlbnRseUFkZGluZ1Njcmlw
dCA9IG51bGw7CisKKyAgICAgICAgICAgIHJldHVybiBub2RlOworICAgICAgICB9IGVsc2UgaWYg
KGlzV2ViV29ya2VyKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIC8vSW4g
YSB3ZWIgd29ya2VyLCB1c2UgaW1wb3J0U2NyaXB0cy4gVGhpcyBpcyBub3QgYSB2ZXJ5CisgICAg
ICAgICAgICAgICAgLy9lZmZpY2llbnQgdXNlIG9mIGltcG9ydFNjcmlwdHMsIGltcG9ydFNjcmlw
dHMgd2lsbCBibG9jayB1bnRpbAorICAgICAgICAgICAgICAgIC8vaXRzIHNjcmlwdCBpcyBkb3du
bG9hZGVkIGFuZCBldmFsdWF0ZWQuIEhvd2V2ZXIsIGlmIHdlYiB3b3JrZXJzCisgICAgICAgICAg
ICAgICAgLy9hcmUgaW4gcGxheSwgdGhlIGV4cGVjdGF0aW9uIHRoYXQgYSBidWlsZCBoYXMgYmVl
biBkb25lIHNvIHRoYXQKKyAgICAgICAgICAgICAgICAvL29ubHkgb25lIHNjcmlwdCBuZWVkcyB0
byBiZSBsb2FkZWQgYW55d2F5LiBUaGlzIG1heSBuZWVkIHRvIGJlCisgICAgICAgICAgICAgICAg
Ly9yZWV2YWx1YXRlZCBpZiBvdGhlciB1c2UgY2FzZXMgYmVjb21lIGNvbW1vbi4KKyAgICAgICAg
ICAgICAgICBpbXBvcnRTY3JpcHRzKHVybCk7CisKKyAgICAgICAgICAgICAgICAvL0FjY291bnQg
Zm9yIGFub255bW91cyBtb2R1bGVzCisgICAgICAgICAgICAgICAgY29udGV4dC5jb21wbGV0ZUxv
YWQobW9kdWxlTmFtZSk7CisgICAgICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICAg
ICAgY29udGV4dC5vbkVycm9yKG1ha2VFcnJvcignaW1wb3J0c2NyaXB0cycsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdpbXBvcnRTY3JpcHRzIGZhaWxlZCBmb3IgJyArCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVOYW1lICsgJyBhdCAnICsgdXJs
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBbbW9kdWxlTmFtZV0pKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH07CisKKyAgICBmdW5jdGlvbiBnZXRJbnRlcmFjdGl2ZVNjcmlwdCgpIHsKKyAgICAgICAg
aWYgKGludGVyYWN0aXZlU2NyaXB0ICYmIGludGVyYWN0aXZlU2NyaXB0LnJlYWR5U3RhdGUgPT09
ICdpbnRlcmFjdGl2ZScpIHsKKyAgICAgICAgICAgIHJldHVybiBpbnRlcmFjdGl2ZVNjcmlwdDsK
KyAgICAgICAgfQorCisgICAgICAgIGVhY2hSZXZlcnNlKHNjcmlwdHMoKSwgZnVuY3Rpb24gKHNj
cmlwdCkgeworICAgICAgICAgICAgaWYgKHNjcmlwdC5yZWFkeVN0YXRlID09PSAnaW50ZXJhY3Rp
dmUnKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIChpbnRlcmFjdGl2ZVNjcmlwdCA9IHNjcmlw
dCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgICAgICByZXR1cm4gaW50ZXJhY3Rp
dmVTY3JpcHQ7CisgICAgfQorCisgICAgLy9Mb29rIGZvciBhIGRhdGEtbWFpbiBzY3JpcHQgYXR0
cmlidXRlLCB3aGljaCBjb3VsZCBhbHNvIGFkanVzdCB0aGUgYmFzZVVybC4KKyAgICBpZiAoaXNC
cm93c2VyICYmICFjZmcuc2tpcERhdGFNYWluKSB7CisgICAgICAgIC8vRmlndXJlIG91dCBiYXNl
VXJsLiBHZXQgaXQgZnJvbSB0aGUgc2NyaXB0IHRhZyB3aXRoIHJlcXVpcmUuanMgaW4gaXQuCisg
ICAgICAgIGVhY2hSZXZlcnNlKHNjcmlwdHMoKSwgZnVuY3Rpb24gKHNjcmlwdCkgeworICAgICAg
ICAgICAgLy9TZXQgdGhlICdoZWFkJyB3aGVyZSB3ZSBjYW4gYXBwZW5kIGNoaWxkcmVuIGJ5Cisg
ICAgICAgICAgICAvL3VzaW5nIHRoZSBzY3JpcHQncyBwYXJlbnQuCisgICAgICAgICAgICBpZiAo
IWhlYWQpIHsKKyAgICAgICAgICAgICAgICBoZWFkID0gc2NyaXB0LnBhcmVudE5vZGU7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIC8vTG9vayBmb3IgYSBkYXRhLW1haW4gYXR0cmlidXRl
IHRvIHNldCBtYWluIHNjcmlwdCBmb3IgdGhlIHBhZ2UKKyAgICAgICAgICAgIC8vdG8gbG9hZC4g
SWYgaXQgaXMgdGhlcmUsIHRoZSBwYXRoIHRvIGRhdGEgbWFpbiBiZWNvbWVzIHRoZQorICAgICAg
ICAgICAgLy9iYXNlVXJsLCBpZiBpdCBpcyBub3QgYWxyZWFkeSBzZXQuCisgICAgICAgICAgICBk
YXRhTWFpbiA9IHNjcmlwdC5nZXRBdHRyaWJ1dGUoJ2RhdGEtbWFpbicpOworICAgICAgICAgICAg
aWYgKGRhdGFNYWluKSB7CisgICAgICAgICAgICAgICAgLy9QcmVzZXJ2ZSBkYXRhTWFpbiBpbiBj
YXNlIGl0IGlzIGEgcGF0aCAoaS5lLiBjb250YWlucyAnPycpCisgICAgICAgICAgICAgICAgbWFp
blNjcmlwdCA9IGRhdGFNYWluOworCisgICAgICAgICAgICAgICAgLy9TZXQgZmluYWwgYmFzZVVy
bCBpZiB0aGVyZSBpcyBub3QgYWxyZWFkeSBhbiBleHBsaWNpdCBvbmUuCisgICAgICAgICAgICAg
ICAgaWYgKCFjZmcuYmFzZVVybCkgeworICAgICAgICAgICAgICAgICAgICAvL1B1bGwgb2ZmIHRo
ZSBkaXJlY3Rvcnkgb2YgZGF0YS1tYWluIGZvciB1c2UgYXMgdGhlCisgICAgICAgICAgICAgICAg
ICAgIC8vYmFzZVVybC4KKyAgICAgICAgICAgICAgICAgICAgc3JjID0gbWFpblNjcmlwdC5zcGxp
dCgnLycpOworICAgICAgICAgICAgICAgICAgICBtYWluU2NyaXB0ID0gc3JjLnBvcCgpOworICAg
ICAgICAgICAgICAgICAgICBzdWJQYXRoID0gc3JjLmxlbmd0aCA/IHNyYy5qb2luKCcvJykgICsg
Jy8nIDogJy4vJzsKKworICAgICAgICAgICAgICAgICAgICBjZmcuYmFzZVVybCA9IHN1YlBhdGg7
CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy9TdHJpcCBvZmYgYW55IHRy
YWlsaW5nIC5qcyBzaW5jZSBtYWluU2NyaXB0IGlzIG5vdworICAgICAgICAgICAgICAgIC8vbGlr
ZSBhIG1vZHVsZSBuYW1lLgorICAgICAgICAgICAgICAgIG1haW5TY3JpcHQgPSBtYWluU2NyaXB0
LnJlcGxhY2UoanNTdWZmaXhSZWdFeHAsICcnKTsKKworICAgICAgICAgICAgICAgICAvL0lmIG1h
aW5TY3JpcHQgaXMgc3RpbGwgYSBwYXRoLCBmYWxsIGJhY2sgdG8gZGF0YU1haW4KKyAgICAgICAg
ICAgICAgICBpZiAocmVxLmpzRXh0UmVnRXhwLnRlc3QobWFpblNjcmlwdCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgbWFpblNjcmlwdCA9IGRhdGFNYWluOworICAgICAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgICAgIC8vUHV0IHRoZSBkYXRhLW1haW4gc2NyaXB0IGluIHRoZSBmaWxlcyB0
byBsb2FkLgorICAgICAgICAgICAgICAgIGNmZy5kZXBzID0gY2ZnLmRlcHMgPyBjZmcuZGVwcy5j
b25jYXQobWFpblNjcmlwdCkgOiBbbWFpblNjcmlwdF07CisKKyAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorCisgICAgLyoqCisg
ICAgICogVGhlIGZ1bmN0aW9uIHRoYXQgaGFuZGxlcyBkZWZpbml0aW9ucyBvZiBtb2R1bGVzLiBE
aWZmZXJzIGZyb20KKyAgICAgKiByZXF1aXJlKCkgaW4gdGhhdCBhIHN0cmluZyBmb3IgdGhlIG1v
ZHVsZSBzaG91bGQgYmUgdGhlIGZpcnN0IGFyZ3VtZW50LAorICAgICAqIGFuZCB0aGUgZnVuY3Rp
b24gdG8gZXhlY3V0ZSBhZnRlciBkZXBlbmRlbmNpZXMgYXJlIGxvYWRlZCBzaG91bGQKKyAgICAg
KiByZXR1cm4gYSB2YWx1ZSB0byBkZWZpbmUgdGhlIG1vZHVsZSBjb3JyZXNwb25kaW5nIHRvIHRo
ZSBmaXJzdCBhcmd1bWVudCdzCisgICAgICogbmFtZS4KKyAgICAgKi8KKyAgICBkZWZpbmUgPSBm
dW5jdGlvbiAobmFtZSwgZGVwcywgY2FsbGJhY2spIHsKKyAgICAgICAgdmFyIG5vZGUsIGNvbnRl
eHQ7CisKKyAgICAgICAgLy9BbGxvdyBmb3IgYW5vbnltb3VzIG1vZHVsZXMKKyAgICAgICAgaWYg
KHR5cGVvZiBuYW1lICE9PSAnc3RyaW5nJykgeworICAgICAgICAgICAgLy9BZGp1c3QgYXJncyBh
cHByb3ByaWF0ZWx5CisgICAgICAgICAgICBjYWxsYmFjayA9IGRlcHM7CisgICAgICAgICAgICBk
ZXBzID0gbmFtZTsKKyAgICAgICAgICAgIG5hbWUgPSBudWxsOworICAgICAgICB9CisKKyAgICAg
ICAgLy9UaGlzIG1vZHVsZSBtYXkgbm90IGhhdmUgZGVwZW5kZW5jaWVzCisgICAgICAgIGlmICgh
aXNBcnJheShkZXBzKSkgeworICAgICAgICAgICAgY2FsbGJhY2sgPSBkZXBzOworICAgICAgICAg
ICAgZGVwcyA9IG51bGw7CisgICAgICAgIH0KKworICAgICAgICAvL0lmIG5vIG5hbWUsIGFuZCBj
YWxsYmFjayBpcyBhIGZ1bmN0aW9uLCB0aGVuIGZpZ3VyZSBvdXQgaWYgaXQgYQorICAgICAgICAv
L0NvbW1vbkpTIHRoaW5nIHdpdGggZGVwZW5kZW5jaWVzLgorICAgICAgICBpZiAoIWRlcHMgJiYg
aXNGdW5jdGlvbihjYWxsYmFjaykpIHsKKyAgICAgICAgICAgIGRlcHMgPSBbXTsKKyAgICAgICAg
ICAgIC8vUmVtb3ZlIGNvbW1lbnRzIGZyb20gdGhlIGNhbGxiYWNrIHN0cmluZywKKyAgICAgICAg
ICAgIC8vbG9vayBmb3IgcmVxdWlyZSBjYWxscywgYW5kIHB1bGwgdGhlbSBpbnRvIHRoZSBkZXBl
bmRlbmNpZXMsCisgICAgICAgICAgICAvL2J1dCBvbmx5IGlmIHRoZXJlIGFyZSBmdW5jdGlvbiBh
cmdzLgorICAgICAgICAgICAgaWYgKGNhbGxiYWNrLmxlbmd0aCkgeworICAgICAgICAgICAgICAg
IGNhbGxiYWNrCisgICAgICAgICAgICAgICAgICAgIC50b1N0cmluZygpCisgICAgICAgICAgICAg
ICAgICAgIC5yZXBsYWNlKGNvbW1lbnRSZWdFeHAsICcnKQorICAgICAgICAgICAgICAgICAgICAu
cmVwbGFjZShjanNSZXF1aXJlUmVnRXhwLCBmdW5jdGlvbiAobWF0Y2gsIGRlcCkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgZGVwcy5wdXNoKGRlcCk7CisgICAgICAgICAgICAgICAgICAgIH0p
OworCisgICAgICAgICAgICAgICAgLy9NYXkgYmUgYSBDb21tb25KUyB0aGluZyBldmVuIHdpdGhv
dXQgcmVxdWlyZSBjYWxscywgYnV0IHN0aWxsCisgICAgICAgICAgICAgICAgLy9jb3VsZCB1c2Ug
ZXhwb3J0cywgYW5kIG1vZHVsZS4gQXZvaWQgZG9pbmcgZXhwb3J0cyBhbmQgbW9kdWxlCisgICAg
ICAgICAgICAgICAgLy93b3JrIHRob3VnaCBpZiBpdCBqdXN0IG5lZWRzIHJlcXVpcmUuCisgICAg
ICAgICAgICAgICAgLy9SRVFVSVJFUyB0aGUgZnVuY3Rpb24gdG8gZXhwZWN0IHRoZSBDb21tb25K
UyB2YXJpYWJsZXMgaW4gdGhlCisgICAgICAgICAgICAgICAgLy9vcmRlciBsaXN0ZWQgYmVsb3cu
CisgICAgICAgICAgICAgICAgZGVwcyA9IChjYWxsYmFjay5sZW5ndGggPT09IDEgPyBbJ3JlcXVp
cmUnXSA6IFsncmVxdWlyZScsICdleHBvcnRzJywgJ21vZHVsZSddKS5jb25jYXQoZGVwcyk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvL0lmIGluIElFIDYtOCBhbmQgaGl0
IGFuIGFub255bW91cyBkZWZpbmUoKSBjYWxsLCBkbyB0aGUgaW50ZXJhY3RpdmUKKyAgICAgICAg
Ly93b3JrLgorICAgICAgICBpZiAodXNlSW50ZXJhY3RpdmUpIHsKKyAgICAgICAgICAgIG5vZGUg
PSBjdXJyZW50bHlBZGRpbmdTY3JpcHQgfHwgZ2V0SW50ZXJhY3RpdmVTY3JpcHQoKTsKKyAgICAg
ICAgICAgIGlmIChub2RlKSB7CisgICAgICAgICAgICAgICAgaWYgKCFuYW1lKSB7CisgICAgICAg
ICAgICAgICAgICAgIG5hbWUgPSBub2RlLmdldEF0dHJpYnV0ZSgnZGF0YS1yZXF1aXJlbW9kdWxl
Jyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNvbnRleHQgPSBjb250ZXh0
c1tub2RlLmdldEF0dHJpYnV0ZSgnZGF0YS1yZXF1aXJlY29udGV4dCcpXTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorCisgICAgICAgIC8vQWx3YXlzIHNhdmUgb2ZmIGV2YWx1YXRpbmcgdGhl
IGRlZiBjYWxsIHVudGlsIHRoZSBzY3JpcHQgb25sb2FkIGhhbmRsZXIuCisgICAgICAgIC8vVGhp
cyBhbGxvd3MgbXVsdGlwbGUgbW9kdWxlcyB0byBiZSBpbiBhIGZpbGUgd2l0aG91dCBwcmVtYXR1
cmVseQorICAgICAgICAvL3RyYWNpbmcgZGVwZW5kZW5jaWVzLCBhbmQgYWxsb3dzIGZvciBhbm9u
eW1vdXMgbW9kdWxlIHN1cHBvcnQsCisgICAgICAgIC8vd2hlcmUgdGhlIG1vZHVsZSBuYW1lIGlz
IG5vdCBrbm93biB1bnRpbCB0aGUgc2NyaXB0IG9ubG9hZCBldmVudAorICAgICAgICAvL29jY3Vy
cy4gSWYgbm8gY29udGV4dCwgdXNlIHRoZSBnbG9iYWwgcXVldWUsIGFuZCBnZXQgaXQgcHJvY2Vz
c2VkCisgICAgICAgIC8vaW4gdGhlIG9uc2NyaXB0IGxvYWQgY2FsbGJhY2suCisgICAgICAgIChj
b250ZXh0ID8gY29udGV4dC5kZWZRdWV1ZSA6IGdsb2JhbERlZlF1ZXVlKS5wdXNoKFtuYW1lLCBk
ZXBzLCBjYWxsYmFja10pOworICAgIH07CisKKyAgICBkZWZpbmUuYW1kID0geworICAgICAgICBq
UXVlcnk6IHRydWUKKyAgICB9OworCisKKyAgICAvKioKKyAgICAgKiBFeGVjdXRlcyB0aGUgdGV4
dC4gTm9ybWFsbHkganVzdCB1c2VzIGV2YWwsIGJ1dCBjYW4gYmUgbW9kaWZpZWQKKyAgICAgKiB0
byB1c2UgYSBiZXR0ZXIsIGVudmlyb25tZW50LXNwZWNpZmljIGNhbGwuIE9ubHkgdXNlZCBmb3Ig
dHJhbnNwaWxpbmcKKyAgICAgKiBsb2FkZXIgcGx1Z2lucywgbm90IGZvciBwbGFpbiBKUyBtb2R1
bGVzLgorICAgICAqIEBwYXJhbSB7U3RyaW5nfSB0ZXh0IHRoZSB0ZXh0IHRvIGV4ZWN1dGUvZXZh
bHVhdGUuCisgICAgICovCisgICAgcmVxLmV4ZWMgPSBmdW5jdGlvbiAodGV4dCkgeworICAgICAg
ICAvKmpzbGludCBldmlsOiB0cnVlICovCisgICAgICAgIHJldHVybiBldmFsKHRleHQpOworICAg
IH07CisKKyAgICAvL1NldCB1cCB3aXRoIGNvbmZpZyBpbmZvLgorICAgIHJlcShjZmcpOworfSh0
aGlzKSk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2RlcGVuZGVuY3ktZXhhbXBsZXMvZmxpZ2h0L25vZGVfbW9kdWxlcy90b2RvbXZj
LWFwcC1jc3MvaW5kZXguY3NzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9kZXBlbmRlbmN5LWV4YW1wbGVzL2ZsaWdodC9ub2RlX21vZHVsZXMvdG9kb212
Yy1hcHAtY3NzL2luZGV4LmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jODE5YjQ3OWJlNDE1OTE0ZjBkYjNlYTEz
ZGMwMzYwYTA2NjhlZGYwCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9kZXBlbmRlbmN5LWV4YW1wbGVzL2ZsaWdodC9ub2Rl
X21vZHVsZXMvdG9kb212Yy1hcHAtY3NzL2luZGV4LmNzcwpAQCAtMCwwICsxLDM3NyBAQAoraHRt
bCwKK2JvZHkgeworICAgIG1hcmdpbjogMDsKKyAgICBwYWRkaW5nOiAwOworfQorCitidXR0b24g
eworICAgIG1hcmdpbjogMDsKKyAgICBwYWRkaW5nOiAwOworICAgIGJvcmRlcjogMDsKKyAgICBi
YWNrZ3JvdW5kOiBub25lOworICAgIGZvbnQtc2l6ZTogMTAwJTsKKyAgICB2ZXJ0aWNhbC1hbGln
bjogYmFzZWxpbmU7CisgICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7CisgICAgZm9udC13ZWlnaHQ6
IGluaGVyaXQ7CisgICAgY29sb3I6IGluaGVyaXQ7CisgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBu
b25lOworICAgIGFwcGVhcmFuY2U6IG5vbmU7CisgICAgLXdlYmtpdC1mb250LXNtb290aGluZzog
YW50aWFsaWFzZWQ7CisgICAgLW1vei1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CisgICAg
Zm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOworfQorCitib2R5IHsKKyAgICBmb250OiAxNHB4
ICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7CisgICAgbGlu
ZS1oZWlnaHQ6IDEuNGVtOworICAgIGJhY2tncm91bmQ6ICNmNWY1ZjU7CisgICAgY29sb3I6ICM0
ZDRkNGQ7CisgICAgbWluLXdpZHRoOiAyMzBweDsKKyAgICBtYXgtd2lkdGg6IDU1MHB4OworICAg
IG1hcmdpbjogMCBhdXRvOworICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2Vk
OworICAgIC1tb3otZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOworICAgIGZvbnQtc21vb3Ro
aW5nOiBhbnRpYWxpYXNlZDsKKyAgICBmb250LXdlaWdodDogMzAwOworfQorCitidXR0b24sCitp
bnB1dFt0eXBlPSJjaGVja2JveCJdIHsKKyAgICBvdXRsaW5lOiBub25lOworfQorCisuaGlkZGVu
IHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCisudG9kb2FwcCB7CisgICAgYmFja2dyb3VuZDog
I2ZmZjsKKyAgICBtYXJnaW46IDEzMHB4IDAgNDBweCAwOworICAgIHBvc2l0aW9uOiByZWxhdGl2
ZTsKKyAgICBib3gtc2hhZG93OiAwIDJweCA0cHggMCByZ2JhKDAsIDAsIDAsIDAuMiksCisgICAg
ICAgICAgICAgICAgMCAyNXB4IDUwcHggMCByZ2JhKDAsIDAsIDAsIDAuMSk7Cit9CisKKy50b2Rv
YXBwIGlucHV0Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsKKyAgICBmb250LXN0eWxlOiBp
dGFsaWM7CisgICAgZm9udC13ZWlnaHQ6IDMwMDsKKyAgICBjb2xvcjogI2U2ZTZlNjsKK30KKwor
LnRvZG9hcHAgaW5wdXQ6Oi1tb3otcGxhY2Vob2xkZXIgeworICAgIGZvbnQtc3R5bGU6IGl0YWxp
YzsKKyAgICBmb250LXdlaWdodDogMzAwOworICAgIGNvbG9yOiAjZTZlNmU2OworfQorCisudG9k
b2FwcCBpbnB1dDo6aW5wdXQtcGxhY2Vob2xkZXIgeworICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsK
KyAgICBmb250LXdlaWdodDogMzAwOworICAgIGNvbG9yOiAjZTZlNmU2OworfQorCisudG9kb2Fw
cCBoMSB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDogLTE1NXB4OworICAgIHdp
ZHRoOiAxMDAlOworICAgIGZvbnQtc2l6ZTogMTAwcHg7CisgICAgZm9udC13ZWlnaHQ6IDEwMDsK
KyAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CisgICAgY29sb3I6IHJnYmEoMTc1LCA0NywgNDcsIDAu
MTUpOworICAgIC13ZWJraXQtdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTsKKyAg
ICAtbW96LXRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7CisgICAgdGV4dC1yZW5k
ZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTsKK30KKworLm5ldy10b2RvLAorLmVkaXQgeworICAg
IHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICBtYXJnaW46IDA7CisgICAgd2lkdGg6IDEwMCU7Cisg
ICAgZm9udC1zaXplOiAyNHB4OworICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0OworICAgIGZvbnQt
d2VpZ2h0OiBpbmhlcml0OworICAgIGxpbmUtaGVpZ2h0OiAxLjRlbTsKKyAgICBib3JkZXI6IDA7
CisgICAgb3V0bGluZTogbm9uZTsKKyAgICBjb2xvcjogaW5oZXJpdDsKKyAgICBwYWRkaW5nOiA2
cHg7CisgICAgYm9yZGVyOiAxcHggc29saWQgIzk5OTsKKyAgICBib3gtc2hhZG93OiBpbnNldCAw
IC0xcHggNXB4IDAgcmdiYSgwLCAwLCAwLCAwLjIpOworICAgIGJveC1zaXppbmc6IGJvcmRlci1i
b3g7CisgICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CisgICAgLW1vei1m
b250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CisgICAgZm9udC1zbW9vdGhpbmc6IGFudGlhbGlh
c2VkOworfQorCisubmV3LXRvZG8geworICAgIHBhZGRpbmc6IDE2cHggMTZweCAxNnB4IDYwcHg7
CisgICAgYm9yZGVyOiBub25lOworICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4wMDMp
OworICAgIGJveC1zaGFkb3c6IGluc2V0IDAgLTJweCAxcHggcmdiYSgwLDAsMCwwLjAzKTsKK30K
KworLm1haW4geworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICB6LWluZGV4OiAyOworICAg
IGJvcmRlci10b3A6IDFweCBzb2xpZCAjZTZlNmU2OworfQorCitsYWJlbFtmb3I9J3RvZ2dsZS1h
bGwnXSB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKworLnRvZ2dsZS1hbGwgeworICAgIHBvc2l0
aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IC01NXB4OworICAgIGxlZnQ6IC0xMnB4OworICAgIHdp
ZHRoOiA2MHB4OworICAgIGhlaWdodDogMzRweDsKKyAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cisg
ICAgYm9yZGVyOiBub25lOyAvKiBNb2JpbGUgU2FmYXJpICovCit9CisKKy50b2dnbGUtYWxsOmJl
Zm9yZSB7CisgICAgY29udGVudDogJ+Kdryc7CisgICAgZm9udC1zaXplOiAyMnB4OworICAgIGNv
bG9yOiAjZTZlNmU2OworICAgIHBhZGRpbmc6IDEwcHggMjdweCAxMHB4IDI3cHg7Cit9CisKKy50
b2dnbGUtYWxsOmNoZWNrZWQ6YmVmb3JlIHsKKyAgICBjb2xvcjogIzczNzM3MzsKK30KKworLnRv
ZG8tbGlzdCB7CisgICAgbWFyZ2luOiAwOworICAgIHBhZGRpbmc6IDA7CisgICAgbGlzdC1zdHls
ZTogbm9uZTsKK30KKworLnRvZG8tbGlzdCBsaSB7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOwor
ICAgIGZvbnQtc2l6ZTogMjRweDsKKyAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2VkZWRl
ZDsKK30KKworLnRvZG8tbGlzdCBsaTpsYXN0LWNoaWxkIHsKKyAgICBib3JkZXItYm90dG9tOiBu
b25lOworfQorCisudG9kby1saXN0IGxpLmVkaXRpbmcgeworICAgIGJvcmRlci1ib3R0b206IG5v
bmU7CisgICAgcGFkZGluZzogMDsKK30KKworLnRvZG8tbGlzdCBsaS5lZGl0aW5nIC5lZGl0IHsK
KyAgICBkaXNwbGF5OiBibG9jazsKKyAgICB3aWR0aDogNTA2cHg7CisgICAgcGFkZGluZzogMTNw
eCAxN3B4IDEycHggMTdweDsKKyAgICBtYXJnaW46IDAgMCAwIDQzcHg7Cit9CisKKy50b2RvLWxp
c3QgbGkuZWRpdGluZyAudmlldyB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKworLnRvZG8tbGlz
dCBsaSAudG9nZ2xlIHsKKyAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CisgICAgd2lkdGg6IDQwcHg7
CisgICAgLyogYXV0bywgc2luY2Ugbm9uLVdlYktpdCBicm93c2VycyBkb2Vzbid0IHN1cHBvcnQg
aW5wdXQgc3R5bGluZyAqLworICAgIGhlaWdodDogYXV0bzsKKyAgICBwb3NpdGlvbjogYWJzb2x1
dGU7CisgICAgdG9wOiAwOworICAgIGJvdHRvbTogMDsKKyAgICBtYXJnaW46IGF1dG8gMDsKKyAg
ICBib3JkZXI6IG5vbmU7IC8qIE1vYmlsZSBTYWZhcmkgKi8KKyAgICAtd2Via2l0LWFwcGVhcmFu
Y2U6IG5vbmU7CisgICAgYXBwZWFyYW5jZTogbm9uZTsKK30KKworLnRvZG8tbGlzdCBsaSAudG9n
Z2xlOmFmdGVyIHsKKyAgICBjb250ZW50OiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iNDAiIGhlaWdodD0i
NDAiIHZpZXdCb3g9Ii0xMCAtMTggMTAwIDEzNSI+PGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgcj0i
NTAiIGZpbGw9Im5vbmUiIHN0cm9rZT0iI2VkZWRlZCIgc3Ryb2tlLXdpZHRoPSIzIi8+PC9zdmc+
Jyk7Cit9CisKKy50b2RvLWxpc3QgbGkgLnRvZ2dsZTpjaGVja2VkOmFmdGVyIHsKKyAgICBjb250
ZW50OiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9Ii0xMCAtMTgg
MTAwIDEzNSI+PGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgcj0iNTAiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0iI2JkZGFkNSIgc3Ryb2tlLXdpZHRoPSIzIi8+PHBhdGggZmlsbD0iIzVkYzJhZiIgZD0iTTcy
IDI1TDQyIDcxIDI3IDU2bC00IDQgMjAgMjAgMzQtNTJ6Ii8+PC9zdmc+Jyk7Cit9CisKKy50b2Rv
LWxpc3QgbGkgbGFiZWwgeworICAgIHdoaXRlLXNwYWNlOiBwcmU7CisgICAgd29yZC1icmVhazog
YnJlYWstd29yZDsKKyAgICBwYWRkaW5nOiAxNXB4IDYwcHggMTVweCAxNXB4OworICAgIG1hcmdp
bi1sZWZ0OiA0NXB4OworICAgIGRpc3BsYXk6IGJsb2NrOworICAgIGxpbmUtaGVpZ2h0OiAxLjI7
CisgICAgdHJhbnNpdGlvbjogY29sb3IgMC40czsKK30KKworLnRvZG8tbGlzdCBsaS5jb21wbGV0
ZWQgbGFiZWwgeworICAgIGNvbG9yOiAjZDlkOWQ5OworICAgIHRleHQtZGVjb3JhdGlvbjogbGlu
ZS10aHJvdWdoOworfQorCisudG9kby1saXN0IGxpIC5kZXN0cm95IHsKKyAgICBkaXNwbGF5OiBu
b25lOworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IDA7CisgICAgcmlnaHQ6IDEw
cHg7CisgICAgYm90dG9tOiAwOworICAgIHdpZHRoOiA0MHB4OworICAgIGhlaWdodDogNDBweDsK
KyAgICBtYXJnaW46IGF1dG8gMDsKKyAgICBmb250LXNpemU6IDMwcHg7CisgICAgY29sb3I6ICNj
YzlhOWE7CisgICAgbWFyZ2luLWJvdHRvbTogMTFweDsKKyAgICB0cmFuc2l0aW9uOiBjb2xvciAw
LjJzIGVhc2Utb3V0OworfQorCisudG9kby1saXN0IGxpIC5kZXN0cm95OmhvdmVyIHsKKyAgICBj
b2xvcjogI2FmNWI1ZTsKK30KKworLnRvZG8tbGlzdCBsaSAuZGVzdHJveTphZnRlciB7CisgICAg
Y29udGVudDogJ8OXJzsKK30KKworLnRvZG8tbGlzdCBsaTpob3ZlciAuZGVzdHJveSB7CisgICAg
ZGlzcGxheTogYmxvY2s7Cit9CisKKy50b2RvLWxpc3QgbGkgLmVkaXQgeworICAgIGRpc3BsYXk6
IG5vbmU7Cit9CisKKy50b2RvLWxpc3QgbGkuZWRpdGluZzpsYXN0LWNoaWxkIHsKKyAgICBtYXJn
aW4tYm90dG9tOiAtMXB4OworfQorCisuZm9vdGVyIHsKKyAgICBjb2xvcjogIzc3NzsKKyAgICBw
YWRkaW5nOiAxMHB4IDE1cHg7CisgICAgaGVpZ2h0OiAyMHB4OworICAgIHRleHQtYWxpZ246IGNl
bnRlcjsKKyAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2U2ZTZlNjsKK30KKworLmZvb3Rlcjpi
ZWZvcmUgeworICAgIGNvbnRlbnQ6ICcnOworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBy
aWdodDogMDsKKyAgICBib3R0b206IDA7CisgICAgbGVmdDogMDsKKyAgICBoZWlnaHQ6IDUwcHg7
CisgICAgb3ZlcmZsb3c6IGhpZGRlbjsKKyAgICBib3gtc2hhZG93OiAwIDFweCAxcHggcmdiYSgw
LCAwLCAwLCAwLjIpLAorICAgICAgICAgICAgICAgIDAgOHB4IDAgLTNweCAjZjZmNmY2LAorICAg
ICAgICAgICAgICAgIDAgOXB4IDFweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwKKyAgICAgICAg
ICAgICAgICAwIDE2cHggMCAtNnB4ICNmNmY2ZjYsCisgICAgICAgICAgICAgICAgMCAxN3B4IDJw
eCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKTsKK30KKworLnRvZG8tY291bnQgeworICAgIGZsb2F0
OiBsZWZ0OworICAgIHRleHQtYWxpZ246IGxlZnQ7Cit9CisKKy50b2RvLWNvdW50IHN0cm9uZyB7
CisgICAgZm9udC13ZWlnaHQ6IDMwMDsKK30KKworLmZpbHRlcnMgeworICAgIG1hcmdpbjogMDsK
KyAgICBwYWRkaW5nOiAwOworICAgIGxpc3Qtc3R5bGU6IG5vbmU7CisgICAgcG9zaXRpb246IGFi
c29sdXRlOworICAgIHJpZ2h0OiAwOworICAgIGxlZnQ6IDA7Cit9CisKKy5maWx0ZXJzIGxpIHsK
KyAgICBkaXNwbGF5OiBpbmxpbmU7Cit9CisKKy5maWx0ZXJzIGxpIGEgeworICAgIGNvbG9yOiBp
bmhlcml0OworICAgIG1hcmdpbjogM3B4OworICAgIHBhZGRpbmc6IDNweCA3cHg7CisgICAgdGV4
dC1kZWNvcmF0aW9uOiBub25lOworICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50Owor
ICAgIGJvcmRlci1yYWRpdXM6IDNweDsKK30KKworLmZpbHRlcnMgbGkgYS5zZWxlY3RlZCwKKy5m
aWx0ZXJzIGxpIGE6aG92ZXIgeworICAgIGJvcmRlci1jb2xvcjogcmdiYSgxNzUsIDQ3LCA0Nywg
MC4xKTsKK30KKworLmZpbHRlcnMgbGkgYS5zZWxlY3RlZCB7CisgICAgYm9yZGVyLWNvbG9yOiBy
Z2JhKDE3NSwgNDcsIDQ3LCAwLjIpOworfQorCisuY2xlYXItY29tcGxldGVkLAoraHRtbCAuY2xl
YXItY29tcGxldGVkOmFjdGl2ZSB7CisgICAgZmxvYXQ6IHJpZ2h0OworICAgIHBvc2l0aW9uOiBy
ZWxhdGl2ZTsKKyAgICBsaW5lLWhlaWdodDogMjBweDsKKyAgICB0ZXh0LWRlY29yYXRpb246IG5v
bmU7CisgICAgY3Vyc29yOiBwb2ludGVyOworfQorCisuY2xlYXItY29tcGxldGVkOmhvdmVyIHsK
KyAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKK30KKworLmluZm8geworICAgIG1hcmdp
bjogNjVweCBhdXRvIDA7CisgICAgY29sb3I6ICNiZmJmYmY7CisgICAgZm9udC1zaXplOiAxMHB4
OworICAgIHRleHQtc2hhZG93OiAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTsKKyAg
ICB0ZXh0LWFsaWduOiBjZW50ZXI7Cit9CisKKy5pbmZvIHAgeworICAgIGxpbmUtaGVpZ2h0OiAx
OworfQorCisuaW5mbyBhIHsKKyAgICBjb2xvcjogaW5oZXJpdDsKKyAgICB0ZXh0LWRlY29yYXRp
b246IG5vbmU7CisgICAgZm9udC13ZWlnaHQ6IDQwMDsKK30KKworLmluZm8gYTpob3ZlciB7Cisg
ICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Cit9CisKKy8qCisgICAgSGFjayB0byByZW1v
dmUgYmFja2dyb3VuZCBmcm9tIE1vYmlsZSBTYWZhcmkuCisgICAgQ2FuJ3QgdXNlIGl0IGdsb2Jh
bGx5IHNpbmNlIGl0IGRlc3Ryb3lzIGNoZWNrYm94ZXMgaW4gRmlyZWZveAorKi8KK0BtZWRpYSBz
Y3JlZW4gYW5kICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86MCkgeworICAgIC50b2dn
bGUtYWxsLAorICAgIC50b2RvLWxpc3QgbGkgLnRvZ2dsZSB7CisgICAgICAgIGJhY2tncm91bmQ6
IG5vbmU7CisgICAgfQorCisgICAgLnRvZG8tbGlzdCBsaSAudG9nZ2xlIHsKKyAgICAgICAgaGVp
Z2h0OiA0MHB4OworICAgIH0KKworICAgIC50b2dnbGUtYWxsIHsKKyAgICAgICAgLXdlYmtpdC10
cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7CisgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDkwZGVn
KTsKKyAgICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOworICAgICAgICBhcHBlYXJhbmNl
OiBub25lOworICAgIH0KK30KKworQG1lZGlhIChtYXgtd2lkdGg6IDQzMHB4KSB7CisgICAgLmZv
b3RlciB7CisgICAgICAgIGhlaWdodDogNTBweDsKKyAgICB9CisKKyAgICAuZmlsdGVycyB7Cisg
ICAgICAgIGJvdHRvbTogMTBweDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2RlcGVuZGVuY3ktZXhhbXBsZXMvZmxp
Z2h0L25vZGVfbW9kdWxlcy90b2RvbXZjLWFwcC1jc3MvcGFja2FnZS5qc29uIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9kZXBlbmRlbmN5LWV4YW1wbGVz
L2ZsaWdodC9ub2RlX21vZHVsZXMvdG9kb212Yy1hcHAtY3NzL3BhY2thZ2UuanNvbgpuZXcgZmls
ZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mNTI0ZWJjMmQ5YzA1NTIxNGJkZjEyNTFjODY4MTI0MDlmOWJjOTgwCi0tLSAvZGV2L251
bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9k
ZXBlbmRlbmN5LWV4YW1wbGVzL2ZsaWdodC9ub2RlX21vZHVsZXMvdG9kb212Yy1hcHAtY3NzL3Bh
Y2thZ2UuanNvbgpAQCAtMCwwICsxLDY5IEBACit7CisgICJuYW1lIjogInRvZG9tdmMtYXBwLWNz
cyIsCisgICJzdHlsZSI6ICJpbmRleC5jc3MiLAorICAidmVyc2lvbiI6ICIyLjAuMiIsCisgICJk
ZXNjcmlwdGlvbiI6ICJDU1MgZm9yIFRvZG9NVkMgYXBwcyIsCisgICJsaWNlbnNlIjogIkNDLUJZ
LTQuMCIsCisgICJyZXBvc2l0b3J5IjogeworICAgICJ0eXBlIjogImdpdCIsCisgICAgInVybCI6
ICJnaXQraHR0cHM6Ly9naXRodWIuY29tL3Rhc3RlanMvdG9kb212Yy1hcHAtY3NzLmdpdCIKKyAg
fSwKKyAgImF1dGhvciI6IHsKKyAgICAibmFtZSI6ICJTaW5kcmUgU29yaHVzIiwKKyAgICAiZW1h
aWwiOiAic2luZHJlc29yaHVzQGdtYWlsLmNvbSIsCisgICAgInVybCI6ICJzaW5kcmVzb3JodXMu
Y29tIgorICB9LAorICAiZmlsZXMiOiBbCisgICAgImluZGV4LmNzcyIKKyAgXSwKKyAgImtleXdv
cmRzIjogWworICAgICJ0b2RvbXZjIiwKKyAgICAidGFzdGVqcyIsCisgICAgImFwcCIsCisgICAg
InRvZG8iLAorICAgICJ0ZW1wbGF0ZSIsCisgICAgImNzcyIsCisgICAgInN0eWxlIiwKKyAgICAi
c3R5bGVzaGVldCIKKyAgXSwKKyAgImdpdEhlYWQiOiAiZmQxZTgzZjhmNTNhMGI4NTUzNzQxNTM2
NWYyYTYzMDFiYmI0MTk5ZiIsCisgICJidWdzIjogeworICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRo
dWIuY29tL3Rhc3RlanMvdG9kb212Yy1hcHAtY3NzL2lzc3VlcyIKKyAgfSwKKyAgImhvbWVwYWdl
IjogImh0dHBzOi8vZ2l0aHViLmNvbS90YXN0ZWpzL3RvZG9tdmMtYXBwLWNzcyIsCisgICJfaWQi
OiAidG9kb212Yy1hcHAtY3NzQDIuMC4yIiwKKyAgInNjcmlwdHMiOiB7fSwKKyAgIl9zaGFzdW0i
OiAiMzFmZjY3OWRjM2E0MDliMjYwYmM3ZTBhNmVhY2E1Zjg3NTdhODlhMSIsCisgICJfZnJvbSI6
ICJ0b2RvbXZjLWFwcC1jc3NAPj0yLjAuMSA8My4wLjAiLAorICAiX25wbVZlcnNpb24iOiAiMi4x
NC43IiwKKyAgIl9ub2RlVmVyc2lvbiI6ICI0LjIuMSIsCisgICJfbnBtVXNlciI6IHsKKyAgICAi
bmFtZSI6ICJzaW5kcmVzb3JodXMiLAorICAgICJlbWFpbCI6ICJzaW5kcmVzb3JodXNAZ21haWwu
Y29tIgorICB9LAorICAiZGlzdCI6IHsKKyAgICAic2hhc3VtIjogIjMxZmY2NzlkYzNhNDA5YjI2
MGJjN2UwYTZlYWNhNWY4NzU3YTg5YTEiLAorICAgICJ0YXJiYWxsIjogImh0dHA6Ly9yZWdpc3Ry
eS5ucG1qcy5vcmcvdG9kb212Yy1hcHAtY3NzLy0vdG9kb212Yy1hcHAtY3NzLTIuMC4yLnRneiIK
KyAgfSwKKyAgIm1haW50YWluZXJzIjogWworICAgIHsKKyAgICAgICJuYW1lIjogInNpbmRyZXNv
cmh1cyIsCisgICAgICAiZW1haWwiOiAic2luZHJlc29yaHVzQGdtYWlsLmNvbSIKKyAgICB9LAor
ICAgIHsKKyAgICAgICJuYW1lIjogImFkZHlvc21hbmkiLAorICAgICAgImVtYWlsIjogImFkZHlv
c21hbmlAZ21haWwuY29tIgorICAgIH0sCisgICAgeworICAgICAgIm5hbWUiOiAicGFzc3kiLAor
ICAgICAgImVtYWlsIjogInBoYXJ0aWdAcmRyZWkubmV0IgorICAgIH0sCisgICAgeworICAgICAg
Im5hbWUiOiAic3RlcGhlbnBsdXNwbHVzIiwKKyAgICAgICJlbWFpbCI6ICJzYXdjaHVrQGdtYWls
LmNvbSIKKyAgICB9CisgIF0sCisgICJkaXJlY3RvcmllcyI6IHt9LAorICAiX3Jlc29sdmVkIjog
Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3RvZG9tdmMtYXBwLWNzcy8tL3RvZG9tdmMtYXBw
LWNzcy0yLjAuMi50Z3oiLAorICAicmVhZG1lIjogIkVSUk9SOiBObyBSRUFETUUgZGF0YSBmb3Vu
ZCEiCit9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2RlcGVuZGVuY3ktZXhhbXBsZXMvZmxpZ2h0L25vZGVfbW9kdWxlcy90b2RvbXZj
LWFwcC1jc3MvcmVhZG1lLm1kIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9kZXBlbmRlbmN5LWV4YW1wbGVzL2ZsaWdodC9ub2RlX21vZHVsZXMvdG9kb212
Yy1hcHAtY3NzL3JlYWRtZS5tZApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZGRiZWJmMDI0YzA0YWViNjAyMGNhZjEz
MWEyZWQwMzE4OTA4MGE1Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9kZXBlbmRlbmN5LWV4YW1wbGVzL2ZsaWdodC9ub2Rl
X21vZHVsZXMvdG9kb212Yy1hcHAtY3NzL3JlYWRtZS5tZApAQCAtMCwwICsxLDI4IEBACisjIHRv
ZG9tdmMtYXBwLWNzcworCis+IENTUyBmb3IgVG9kb01WQyBhcHBzCisKKyFbXShzY3JlZW5zaG90
LnBuZykKKworCisjIyBJbnN0YWxsCisKKworYGBgCiskIG5wbSBpbnN0YWxsIC0tc2F2ZSB0b2Rv
bXZjLWFwcC1jc3MKK2BgYAorCisKKyMjIEdldHRpbmcgc3RhcnRlZAorCitgYGBodG1sCis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Im5vZGVfbW9kdWxlcy90b2RvbXZjLWFwcC1jc3MvaW5k
ZXguY3NzIj4KK2BgYAorCitTZWUgdGhlIFtUb2RvTVZDIGFwcCB0ZW1wbGF0ZV0oaHR0cHM6Ly9n
aXRodWIuY29tL3Rhc3RlanMvdG9kb212Yy1hcHAtdGVtcGxhdGUpLgorCisKKworIyMgTGljZW5z
ZQorCis8YSByZWw9ImxpY2Vuc2UiIGhyZWY9Imh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xp
Y2Vuc2VzL2J5LzQuMC9kZWVkLmVuX1VTIj48aW1nIGFsdD0iQ3JlYXRpdmUgQ29tbW9ucyBMaWNl
bnNlIiBzdHlsZT0iYm9yZGVyLXdpZHRoOjAiIHNyYz0iaHR0cDovL2kuY3JlYXRpdmVjb21tb25z
Lm9yZy9sL2J5LzQuMC84MHgxNS5wbmciIC8+PC9hPjxiciAvPlRoaXMgPHNwYW4geG1sbnM6ZGN0
PSJodHRwOi8vcHVybC5vcmcvZGMvdGVybXMvIiBocmVmPSJodHRwOi8vcHVybC5vcmcvZGMvZGNt
aXR5cGUvSW50ZXJhY3RpdmVSZXNvdXJjZSIgcmVsPSJkY3Q6dHlwZSI+d29yazwvc3Bhbj4gYnkg
PGEgeG1sbnM6Y2M9Imh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL25zIyIgaHJlZj0iaHR0cDov
L3NpbmRyZXNvcmh1cy5jb20iIHByb3BlcnR5PSJjYzphdHRyaWJ1dGlvbk5hbWUiIHJlbD0iY2M6
YXR0cmlidXRpb25VUkwiPlNpbmRyZSBTb3JodXM8L2E+IGlzIGxpY2Vuc2VkIHVuZGVyIGEgPGEg
cmVsPSJsaWNlbnNlIiBocmVmPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9i
eS80LjAvZGVlZC5lbl9VUyI+Q3JlYXRpdmUgQ29tbW9ucyBBdHRyaWJ1dGlvbiA0LjAgSW50ZXJu
YXRpb25hbCBMaWNlbnNlPC9hPi4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZGVwZW5kZW5jeS1leGFtcGxlcy9mbGlnaHQvbm9kZV9t
b2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jhc2UuY3NzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9kZXBlbmRlbmN5LWV4YW1wbGVzL2ZsaWdodC9ub2RlX21v
ZHVsZXMvdG9kb212Yy1jb21tb24vYmFzZS5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQyNWQzYzg0YWM2YzZh
ZWYyNmI5NjgzYTJiYzEwYzYxZjk2MGM4ZgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZGVwZW5kZW5jeS1leGFtcGxlcy9m
bGlnaHQvbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jhc2UuY3NzCkBAIC0wLDAgKzEsMTQx
IEBACitociB7CisgICAgbWFyZ2luOiAyMHB4IDA7CisgICAgYm9yZGVyOiAwOworICAgIGJvcmRl
ci10b3A6IDFweCBkYXNoZWQgI2M1YzVjNTsKKyAgICBib3JkZXItYm90dG9tOiAxcHggZGFzaGVk
ICNmN2Y3Zjc7Cit9CisKKy5sZWFybiBhIHsKKyAgICBmb250LXdlaWdodDogbm9ybWFsOworICAg
IHRleHQtZGVjb3JhdGlvbjogbm9uZTsKKyAgICBjb2xvcjogI2I4M2Y0NTsKK30KKworLmxlYXJu
IGE6aG92ZXIgeworICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOworICAgIGNvbG9yOiAj
Nzg3ZTdlOworfQorCisubGVhcm4gaDMsCisubGVhcm4gaDQsCisubGVhcm4gaDUgeworICAgIG1h
cmdpbjogMTBweCAwOworICAgIGZvbnQtd2VpZ2h0OiA1MDA7CisgICAgbGluZS1oZWlnaHQ6IDEu
MjsKKyAgICBjb2xvcjogIzAwMDsKK30KKworLmxlYXJuIGgzIHsKKyAgICBmb250LXNpemU6IDI0
cHg7Cit9CisKKy5sZWFybiBoNCB7CisgICAgZm9udC1zaXplOiAxOHB4OworfQorCisubGVhcm4g
aDUgeworICAgIG1hcmdpbi1ib3R0b206IDA7CisgICAgZm9udC1zaXplOiAxNHB4OworfQorCisu
bGVhcm4gdWwgeworICAgIHBhZGRpbmc6IDA7CisgICAgbWFyZ2luOiAwIDAgMzBweCAyNXB4Owor
fQorCisubGVhcm4gbGkgeworICAgIGxpbmUtaGVpZ2h0OiAyMHB4OworfQorCisubGVhcm4gcCB7
CisgICAgZm9udC1zaXplOiAxNXB4OworICAgIGZvbnQtd2VpZ2h0OiAzMDA7CisgICAgbGluZS1o
ZWlnaHQ6IDEuMzsKKyAgICBtYXJnaW4tdG9wOiAwOworICAgIG1hcmdpbi1ib3R0b206IDA7Cit9
CisKKyNpc3N1ZS1jb3VudCB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKworLnF1b3RlIHsKKyAg
ICBib3JkZXI6IG5vbmU7CisgICAgbWFyZ2luOiAyMHB4IDAgNjBweCAwOworfQorCisucXVvdGUg
cCB7CisgICAgZm9udC1zdHlsZTogaXRhbGljOworfQorCisucXVvdGUgcDpiZWZvcmUgeworICAg
IGNvbnRlbnQ6ICfigJwnOworICAgIGZvbnQtc2l6ZTogNTBweDsKKyAgICBvcGFjaXR5OiAuMTU7
CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDogLTIwcHg7CisgICAgbGVmdDogM3B4
OworfQorCisucXVvdGUgcDphZnRlciB7CisgICAgY29udGVudDogJ+KAnSc7CisgICAgZm9udC1z
aXplOiA1MHB4OworICAgIG9wYWNpdHk6IC4xNTsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7Cisg
ICAgYm90dG9tOiAtNDJweDsKKyAgICByaWdodDogM3B4OworfQorCisucXVvdGUgZm9vdGVyIHsK
KyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgYm90dG9tOiAtNDBweDsKKyAgICByaWdodDog
MDsKK30KKworLnF1b3RlIGZvb3RlciBpbWcgeworICAgIGJvcmRlci1yYWRpdXM6IDNweDsKK30K
KworLnF1b3RlIGZvb3RlciBhIHsKKyAgICBtYXJnaW4tbGVmdDogNXB4OworICAgIHZlcnRpY2Fs
LWFsaWduOiBtaWRkbGU7Cit9CisKKy5zcGVlY2gtYnViYmxlIHsKKyAgICBwb3NpdGlvbjogcmVs
YXRpdmU7CisgICAgcGFkZGluZzogMTBweDsKKyAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAs
IC4wNCk7CisgICAgYm9yZGVyLXJhZGl1czogNXB4OworfQorCisuc3BlZWNoLWJ1YmJsZTphZnRl
ciB7CisgICAgY29udGVudDogJyc7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDog
MTAwJTsKKyAgICByaWdodDogMzBweDsKKyAgICBib3JkZXI6IDEzcHggc29saWQgdHJhbnNwYXJl
bnQ7CisgICAgYm9yZGVyLXRvcC1jb2xvcjogcmdiYSgwLCAwLCAwLCAuMDQpOworfQorCisubGVh
cm4tYmFyID4gLmxlYXJuIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgd2lkdGg6IDI3
MnB4OworICAgIHRvcDogOHB4OworICAgIGxlZnQ6IC0zMDBweDsKKyAgICBwYWRkaW5nOiAxMHB4
OworICAgIGJvcmRlci1yYWRpdXM6IDVweDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1
NSwgMjU1LCAyNTUsIC42KTsKKyAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiBsZWZ0OworICAgIHRy
YW5zaXRpb24tZHVyYXRpb246IDUwMG1zOworfQorCitAbWVkaWEgKG1pbi13aWR0aDogODk5cHgp
IHsKKyAgICAubGVhcm4tYmFyIHsKKyAgICAgICAgd2lkdGg6IGF1dG87CisgICAgICAgIHBhZGRp
bmctbGVmdDogMzAwcHg7CisgICAgfQorCisgICAgLmxlYXJuLWJhciA+IC5sZWFybiB7CisgICAg
ICAgIGxlZnQ6IDhweDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2RlcGVuZGVuY3ktZXhhbXBsZXMvZmxpZ2h0L25v
ZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1vbi9iYXNlLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9kZXBlbmRlbmN5LWV4YW1wbGVzL2ZsaWdodC9ub2Rl
X21vZHVsZXMvdG9kb212Yy1jb21tb24vYmFzZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MWUwMDZiYzUwMmRk
YzRjNzRmNDdiZDEzYTgzOTIyNzdmODMwZGI4Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9kZXBlbmRlbmN5LWV4YW1wbGVz
L2ZsaWdodC9ub2RlX21vZHVsZXMvdG9kb212Yy1jb21tb24vYmFzZS5qcwpAQCAtMCwwICsxLDI0
OSBAQAorLyogZ2xvYmFsIF8gKi8KKyhmdW5jdGlvbiAoKSB7CisgICAgJ3VzZSBzdHJpY3QnOwor
CisgICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqLworICAgIC8vIFVuZGVyc2NvcmUncyBUZW1w
bGF0ZSBNb2R1bGUKKyAgICAvLyBDb3VydGVzeSBvZiB1bmRlcnNjb3JlanMub3JnCisgICAgdmFy
IF8gPSAoZnVuY3Rpb24gKF8pIHsKKyAgICAgICAgXy5kZWZhdWx0cyA9IGZ1bmN0aW9uIChvYmpl
Y3QpIHsKKyAgICAgICAgICAgIGlmICghb2JqZWN0KSB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IG9iamVjdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZvciAodmFyIGFyZ3NJbmRleCA9
IDEsIGFyZ3NMZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoOyBhcmdzSW5kZXggPCBhcmdzTGVuZ3Ro
OyBhcmdzSW5kZXgrKykgeworICAgICAgICAgICAgICAgIHZhciBpdGVyYWJsZSA9IGFyZ3VtZW50
c1thcmdzSW5kZXhdOworICAgICAgICAgICAgICAgIGlmIChpdGVyYWJsZSkgeworICAgICAgICAg
ICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gaXRlcmFibGUpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChvYmplY3Rba2V5XSA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb2JqZWN0W2tleV0gPSBpdGVyYWJsZVtrZXldOworICAgICAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorICAgICAgICAgICAgcmV0dXJuIG9iamVjdDsKKyAgICAgICAgfQorCisgICAgICAgIC8v
IEJ5IGRlZmF1bHQsIFVuZGVyc2NvcmUgdXNlcyBFUkItc3R5bGUgdGVtcGxhdGUgZGVsaW1pdGVy
cywgY2hhbmdlIHRoZQorICAgICAgICAvLyBmb2xsb3dpbmcgdGVtcGxhdGUgc2V0dGluZ3MgdG8g
dXNlIGFsdGVybmF0aXZlIGRlbGltaXRlcnMuCisgICAgICAgIF8udGVtcGxhdGVTZXR0aW5ncyA9
IHsKKyAgICAgICAgICAgIGV2YWx1YXRlICAgIDogLzwlKFtcc1xTXSs/KSU+L2csCisgICAgICAg
ICAgICBpbnRlcnBvbGF0ZSA6IC88JT0oW1xzXFNdKz8pJT4vZywKKyAgICAgICAgICAgIGVzY2Fw
ZSAgICAgIDogLzwlLShbXHNcU10rPyklPi9nCisgICAgICAgIH07CisKKyAgICAgICAgLy8gV2hl
biBjdXN0b21pemluZyBgdGVtcGxhdGVTZXR0aW5nc2AsIGlmIHlvdSBkb24ndCB3YW50IHRvIGRl
ZmluZSBhbgorICAgICAgICAvLyBpbnRlcnBvbGF0aW9uLCBldmFsdWF0aW9uIG9yIGVzY2FwaW5n
IHJlZ2V4LCB3ZSBuZWVkIG9uZSB0aGF0IGlzCisgICAgICAgIC8vIGd1YXJhbnRlZWQgbm90IHRv
IG1hdGNoLgorICAgICAgICB2YXIgbm9NYXRjaCA9IC8oLileLzsKKworICAgICAgICAvLyBDZXJ0
YWluIGNoYXJhY3RlcnMgbmVlZCB0byBiZSBlc2NhcGVkIHNvIHRoYXQgdGhleSBjYW4gYmUgcHV0
IGludG8gYQorICAgICAgICAvLyBzdHJpbmcgbGl0ZXJhbC4KKyAgICAgICAgdmFyIGVzY2FwZXMg
PSB7CisgICAgICAgICAgICAiJyI6ICAgICAgIiciLAorICAgICAgICAgICAgJ1xcJzogICAgICdc
XCcsCisgICAgICAgICAgICAnXHInOiAgICAgJ3InLAorICAgICAgICAgICAgJ1xuJzogICAgICdu
JywKKyAgICAgICAgICAgICdcdCc6ICAgICAndCcsCisgICAgICAgICAgICAnXHUyMDI4JzogJ3Uy
MDI4JywKKyAgICAgICAgICAgICdcdTIwMjknOiAndTIwMjknCisgICAgICAgIH07CisKKyAgICAg
ICAgdmFyIGVzY2FwZXIgPSAvXFx8J3xccnxcbnxcdHxcdTIwMjh8XHUyMDI5L2c7CisKKyAgICAg
ICAgLy8gSmF2YVNjcmlwdCBtaWNyby10ZW1wbGF0aW5nLCBzaW1pbGFyIHRvIEpvaG4gUmVzaWcn
cyBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgLy8gVW5kZXJzY29yZSB0ZW1wbGF0aW5nIGhhbmRs
ZXMgYXJiaXRyYXJ5IGRlbGltaXRlcnMsIHByZXNlcnZlcyB3aGl0ZXNwYWNlLAorICAgICAgICAv
LyBhbmQgY29ycmVjdGx5IGVzY2FwZXMgcXVvdGVzIHdpdGhpbiBpbnRlcnBvbGF0ZWQgY29kZS4K
KyAgICAgICAgXy50ZW1wbGF0ZSA9IGZ1bmN0aW9uKHRleHQsIGRhdGEsIHNldHRpbmdzKSB7Cisg
ICAgICAgICAgICB2YXIgcmVuZGVyOworICAgICAgICAgICAgc2V0dGluZ3MgPSBfLmRlZmF1bHRz
KHt9LCBzZXR0aW5ncywgXy50ZW1wbGF0ZVNldHRpbmdzKTsKKworICAgICAgICAgICAgLy8gQ29t
YmluZSBkZWxpbWl0ZXJzIGludG8gb25lIHJlZ3VsYXIgZXhwcmVzc2lvbiB2aWEgYWx0ZXJuYXRp
b24uCisgICAgICAgICAgICB2YXIgbWF0Y2hlciA9IG5ldyBSZWdFeHAoWworICAgICAgICAgICAg
ICAgIChzZXR0aW5ncy5lc2NhcGUgfHwgbm9NYXRjaCkuc291cmNlLAorICAgICAgICAgICAgICAg
IChzZXR0aW5ncy5pbnRlcnBvbGF0ZSB8fCBub01hdGNoKS5zb3VyY2UsCisgICAgICAgICAgICAg
ICAgKHNldHRpbmdzLmV2YWx1YXRlIHx8IG5vTWF0Y2gpLnNvdXJjZQorICAgICAgICAgICAgXS5q
b2luKCd8JykgKyAnfCQnLCAnZycpOworCisgICAgICAgICAgICAvLyBDb21waWxlIHRoZSB0ZW1w
bGF0ZSBzb3VyY2UsIGVzY2FwaW5nIHN0cmluZyBsaXRlcmFscyBhcHByb3ByaWF0ZWx5LgorICAg
ICAgICAgICAgdmFyIGluZGV4ID0gMDsKKyAgICAgICAgICAgIHZhciBzb3VyY2UgPSAiX19wKz0n
IjsKKyAgICAgICAgICAgIHRleHQucmVwbGFjZShtYXRjaGVyLCBmdW5jdGlvbihtYXRjaCwgZXNj
YXBlLCBpbnRlcnBvbGF0ZSwgZXZhbHVhdGUsIG9mZnNldCkgeworICAgICAgICAgICAgICAgIHNv
dXJjZSArPSB0ZXh0LnNsaWNlKGluZGV4LCBvZmZzZXQpCisgICAgICAgICAgICAgICAgICAgIC5y
ZXBsYWNlKGVzY2FwZXIsIGZ1bmN0aW9uKG1hdGNoKSB7IHJldHVybiAnXFwnICsgZXNjYXBlc1tt
YXRjaF07IH0pOworCisgICAgICAgICAgICAgICAgaWYgKGVzY2FwZSkgeworICAgICAgICAgICAg
ICAgICAgICBzb3VyY2UgKz0gIicrXG4oKF9fdD0oIiArIGVzY2FwZSArICIpKT09bnVsbD8nJzpf
LmVzY2FwZShfX3QpKStcbiciOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBp
ZiAoaW50ZXJwb2xhdGUpIHsKKyAgICAgICAgICAgICAgICAgICAgc291cmNlICs9ICInK1xuKChf
X3Q9KCIgKyBpbnRlcnBvbGF0ZSArICIpKT09bnVsbD8nJzpfX3QpK1xuJyI7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChldmFsdWF0ZSkgeworICAgICAgICAgICAgICAg
ICAgICBzb3VyY2UgKz0gIic7XG4iICsgZXZhbHVhdGUgKyAiXG5fX3ArPSciOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBpbmRleCA9IG9mZnNldCArIG1hdGNoLmxlbmd0aDsK
KyAgICAgICAgICAgICAgICByZXR1cm4gbWF0Y2g7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgIHNvdXJjZSArPSAiJztcbiI7CisKKyAgICAgICAgICAgIC8vIElmIGEgdmFyaWFibGUgaXMg
bm90IHNwZWNpZmllZCwgcGxhY2UgZGF0YSB2YWx1ZXMgaW4gbG9jYWwgc2NvcGUuCisgICAgICAg
ICAgICBpZiAoIXNldHRpbmdzLnZhcmlhYmxlKSBzb3VyY2UgPSAnd2l0aChvYmp8fHt9KXtcbicg
KyBzb3VyY2UgKyAnfVxuJzsKKworICAgICAgICAgICAgc291cmNlID0gInZhciBfX3QsX19wPScn
LF9faj1BcnJheS5wcm90b3R5cGUuam9pbiwiICsKKyAgICAgICAgICAgICAgICAicHJpbnQ9ZnVu
Y3Rpb24oKXtfX3ArPV9fai5jYWxsKGFyZ3VtZW50cywnJyk7fTtcbiIgKworICAgICAgICAgICAg
ICAgIHNvdXJjZSArICJyZXR1cm4gX19wO1xuIjsKKworICAgICAgICAgICAgdHJ5IHsKKyAgICAg
ICAgICAgICAgICByZW5kZXIgPSBuZXcgRnVuY3Rpb24oc2V0dGluZ3MudmFyaWFibGUgfHwgJ29i
aicsICdfJywgc291cmNlKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAg
ICAgICBlLnNvdXJjZSA9IHNvdXJjZTsKKyAgICAgICAgICAgICAgICB0aHJvdyBlOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBpZiAoZGF0YSkgcmV0dXJuIHJlbmRlcihkYXRhLCBfKTsK
KyAgICAgICAgICAgIHZhciB0ZW1wbGF0ZSA9IGZ1bmN0aW9uKGRhdGEpIHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gcmVuZGVyLmNhbGwodGhpcywgZGF0YSwgXyk7CisgICAgICAgICAgICB9Owor
CisgICAgICAgICAgICAvLyBQcm92aWRlIHRoZSBjb21waWxlZCBmdW5jdGlvbiBzb3VyY2UgYXMg
YSBjb252ZW5pZW5jZSBmb3IgcHJlY29tcGlsYXRpb24uCisgICAgICAgICAgICB0ZW1wbGF0ZS5z
b3VyY2UgPSAnZnVuY3Rpb24oJyArIChzZXR0aW5ncy52YXJpYWJsZSB8fCAnb2JqJykgKyAnKXtc
bicgKyBzb3VyY2UgKyAnfSc7CisKKyAgICAgICAgICAgIHJldHVybiB0ZW1wbGF0ZTsKKyAgICAg
ICAgfTsKKworICAgICAgICByZXR1cm4gXzsKKyAgICB9KSh7fSk7CisKKyAgICBpZiAobG9jYXRp
b24uaG9zdG5hbWUgPT09ICd0b2RvbXZjLmNvbScpIHsKKyAgICAgICAgKGZ1bmN0aW9uKGkscyxv
LGcscixhLG0pe2lbJ0dvb2dsZUFuYWx5dGljc09iamVjdCddPXI7aVtyXT1pW3JdfHxmdW5jdGlv
bigpeworICAgICAgICAoaVtyXS5xPWlbcl0ucXx8W10pLnB1c2goYXJndW1lbnRzKX0saVtyXS5s
PTEqbmV3IERhdGUoKTthPXMuY3JlYXRlRWxlbWVudChvKSwKKyAgICAgICAgbT1zLmdldEVsZW1l
bnRzQnlUYWdOYW1lKG8pWzBdO2EuYXN5bmM9MTthLnNyYz1nO20ucGFyZW50Tm9kZS5pbnNlcnRC
ZWZvcmUoYSxtKQorICAgICAgICB9KSh3aW5kb3csZG9jdW1lbnQsJ3NjcmlwdCcsJ2h0dHBzOi8v
d3d3Lmdvb2dsZS1hbmFseXRpY3MuY29tL2FuYWx5dGljcy5qcycsJ2dhJyk7CisgICAgICAgIGdh
KCdjcmVhdGUnLCAnVUEtMzEwODEwNjItMScsICdhdXRvJyk7CisgICAgICAgIGdhKCdzZW5kJywg
J3BhZ2V2aWV3Jyk7CisgICAgfQorICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovCisKKyAgICBm
dW5jdGlvbiByZWRpcmVjdCgpIHsKKyAgICAgICAgaWYgKGxvY2F0aW9uLmhvc3RuYW1lID09PSAn
dGFzdGVqcy5naXRodWIuaW8nKSB7CisgICAgICAgICAgICBsb2NhdGlvbi5ocmVmID0gbG9jYXRp
b24uaHJlZi5yZXBsYWNlKCd0YXN0ZWpzLmdpdGh1Yi5pby90b2RvbXZjJywgJ3RvZG9tdmMuY29t
Jyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiBmaW5kUm9vdCgpIHsKKyAgICAg
ICAgdmFyIGJhc2UgPSBsb2NhdGlvbi5ocmVmLmluZGV4T2YoJ2V4YW1wbGVzLycpOworICAgICAg
ICByZXR1cm4gbG9jYXRpb24uaHJlZi5zdWJzdHIoMCwgYmFzZSk7CisgICAgfQorCisgICAgZnVu
Y3Rpb24gZ2V0RmlsZShmaWxlLCBjYWxsYmFjaykgeworICAgICAgICBpZiAoIWxvY2F0aW9uLmhv
c3QpIHsKKyAgICAgICAgICAgIHJldHVybiBjb25zb2xlLmluZm8oJ01pc3MgdGhlIGluZm8gYmFy
PyBSdW4gVG9kb01WQyBmcm9tIGEgc2VydmVyIHRvIGF2b2lkIGEgY3Jvc3Mtb3JpZ2luIGVycm9y
LicpOworICAgICAgICB9CisKKyAgICAgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgp
OworCisgICAgICAgIHhoci5vcGVuKCdHRVQnLCBmaW5kUm9vdCgpICsgZmlsZSwgdHJ1ZSk7Cisg
ICAgICAgIHhoci5zZW5kKCk7CisKKyAgICAgICAgeGhyLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgICAgIGlmICh4aHIuc3RhdHVzID09PSAyMDAgJiYgY2FsbGJhY2spIHsKKyAgICAg
ICAgICAgICAgICBjYWxsYmFjayh4aHIucmVzcG9uc2VUZXh0KTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBMZWFybihsZWFybkpTT04sIGNvbmZpZykg
eworICAgICAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgTGVhcm4pKSB7CisgICAgICAgICAgICBy
ZXR1cm4gbmV3IExlYXJuKGxlYXJuSlNPTiwgY29uZmlnKTsKKyAgICAgICAgfQorCisgICAgICAg
IHZhciB0ZW1wbGF0ZSwgZnJhbWV3b3JrOworCisgICAgICAgIGlmICh0eXBlb2YgbGVhcm5KU09O
ICE9PSAnb2JqZWN0JykgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBsZWFy
bkpTT04gPSBKU09OLnBhcnNlKGxlYXJuSlNPTik7CisgICAgICAgICAgICB9IGNhdGNoIChlKSB7
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAg
ICAgICAgaWYgKGNvbmZpZykgeworICAgICAgICAgICAgdGVtcGxhdGUgPSBjb25maWcudGVtcGxh
dGU7CisgICAgICAgICAgICBmcmFtZXdvcmsgPSBjb25maWcuZnJhbWV3b3JrOworICAgICAgICB9
CisKKyAgICAgICAgaWYgKCF0ZW1wbGF0ZSAmJiBsZWFybkpTT04udGVtcGxhdGVzKSB7CisgICAg
ICAgICAgICB0ZW1wbGF0ZSA9IGxlYXJuSlNPTi50ZW1wbGF0ZXMudG9kb212YzsKKyAgICAgICAg
fQorCisgICAgICAgIGlmICghZnJhbWV3b3JrICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tk
YXRhLWZyYW1ld29ya10nKSkgeworICAgICAgICAgICAgZnJhbWV3b3JrID0gZG9jdW1lbnQucXVl
cnlTZWxlY3RvcignW2RhdGEtZnJhbWV3b3JrXScpLmRhdGFzZXQuZnJhbWV3b3JrOworICAgICAg
ICB9CisKKyAgICAgICAgdGhpcy50ZW1wbGF0ZSA9IHRlbXBsYXRlOworCisgICAgICAgIGlmIChs
ZWFybkpTT04uYmFja2VuZCkgeworICAgICAgICAgICAgdGhpcy5mcmFtZXdvcmtKU09OID0gbGVh
cm5KU09OLmJhY2tlbmQ7CisgICAgICAgICAgICB0aGlzLmZyYW1ld29ya0pTT04uaXNzdWVMYWJl
bCA9IGZyYW1ld29yazsKKyAgICAgICAgICAgIHRoaXMuYXBwZW5kKHsKKyAgICAgICAgICAgICAg
ICBiYWNrZW5kOiB0cnVlCisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSBlbHNlIGlmIChsZWFy
bkpTT05bZnJhbWV3b3JrXSkgeworICAgICAgICAgICAgdGhpcy5mcmFtZXdvcmtKU09OID0gbGVh
cm5KU09OW2ZyYW1ld29ya107CisgICAgICAgICAgICB0aGlzLmZyYW1ld29ya0pTT04uaXNzdWVM
YWJlbCA9IGZyYW1ld29yazsKKyAgICAgICAgICAgIHRoaXMuYXBwZW5kKCk7CisgICAgICAgIH0K
KworICAgICAgICB0aGlzLmZldGNoSXNzdWVDb3VudCgpOworICAgIH0KKworICAgIExlYXJuLnBy
b3RvdHlwZS5hcHBlbmQgPSBmdW5jdGlvbiAob3B0cykgeworICAgICAgICB2YXIgYXNpZGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdhc2lkZScpOworICAgICAgICBhc2lkZS5pbm5lckhUTUwg
PSBfLnRlbXBsYXRlKHRoaXMudGVtcGxhdGUsIHRoaXMuZnJhbWV3b3JrSlNPTik7CisgICAgICAg
IGFzaWRlLmNsYXNzTmFtZSA9ICdsZWFybic7CisKKyAgICAgICAgaWYgKG9wdHMgJiYgb3B0cy5i
YWNrZW5kKSB7CisgICAgICAgICAgICAvLyBSZW1vdmUgZGVtbyBsaW5rCisgICAgICAgICAgICB2
YXIgc291cmNlTGlua3MgPSBhc2lkZS5xdWVyeVNlbGVjdG9yKCcuc291cmNlLWxpbmtzJyk7Cisg
ICAgICAgICAgICB2YXIgaGVhZGluZyA9IHNvdXJjZUxpbmtzLmZpcnN0RWxlbWVudENoaWxkOwor
ICAgICAgICAgICAgdmFyIHNvdXJjZUxpbmsgPSBzb3VyY2VMaW5rcy5sYXN0RWxlbWVudENoaWxk
OworICAgICAgICAgICAgLy8gQ29ycmVjdCBsaW5rIHBhdGgKKyAgICAgICAgICAgIHZhciBocmVm
ID0gc291cmNlTGluay5nZXRBdHRyaWJ1dGUoJ2hyZWYnKTsKKyAgICAgICAgICAgIHNvdXJjZUxp
bmsuc2V0QXR0cmlidXRlKCdocmVmJywgaHJlZi5zdWJzdHIoaHJlZi5sYXN0SW5kZXhPZignaHR0
cCcpKSk7CisgICAgICAgICAgICBzb3VyY2VMaW5rcy5pbm5lckhUTUwgPSBoZWFkaW5nLm91dGVy
SFRNTCArIHNvdXJjZUxpbmsub3V0ZXJIVE1MOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgLy8gTG9jYWxpemUgZGVtbyBsaW5rcworICAgICAgICAgICAgdmFyIGRlbW9MaW5rcyA9IGFz
aWRlLnF1ZXJ5U2VsZWN0b3JBbGwoJy5kZW1vLWxpbmsnKTsKKyAgICAgICAgICAgIEFycmF5LnBy
b3RvdHlwZS5mb3JFYWNoLmNhbGwoZGVtb0xpbmtzLCBmdW5jdGlvbiAoZGVtb0xpbmspIHsKKyAg
ICAgICAgICAgICAgICBpZiAoZGVtb0xpbmsuZ2V0QXR0cmlidXRlKCdocmVmJykuc3Vic3RyKDAs
IDQpICE9PSAnaHR0cCcpIHsKKyAgICAgICAgICAgICAgICAgICAgZGVtb0xpbmsuc2V0QXR0cmli
dXRlKCdocmVmJywgZmluZFJvb3QoKSArIGRlbW9MaW5rLmdldEF0dHJpYnV0ZSgnaHJlZicpKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAg
IGRvY3VtZW50LmJvZHkuY2xhc3NOYW1lID0gKGRvY3VtZW50LmJvZHkuY2xhc3NOYW1lICsgJyBs
ZWFybi1iYXInKS50cmltKCk7CisgICAgICAgIGRvY3VtZW50LmJvZHkuaW5zZXJ0QWRqYWNlbnRI
VE1MKCdhZnRlckJlZ2luJywgYXNpZGUub3V0ZXJIVE1MKTsKKyAgICB9OworCisgICAgTGVhcm4u
cHJvdG90eXBlLmZldGNoSXNzdWVDb3VudCA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdmFyIGlz
c3VlTGluayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpc3N1ZS1jb3VudC1saW5rJyk7Cisg
ICAgICAgIGlmIChpc3N1ZUxpbmspIHsKKyAgICAgICAgICAgIHZhciB1cmwgPSBpc3N1ZUxpbmsu
aHJlZi5yZXBsYWNlKCdodHRwczovL2dpdGh1Yi5jb20nLCAnaHR0cHM6Ly9hcGkuZ2l0aHViLmNv
bS9yZXBvcycpOworICAgICAgICAgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwor
ICAgICAgICAgICAgeGhyLm9wZW4oJ0dFVCcsIHVybCwgdHJ1ZSk7CisgICAgICAgICAgICB4aHIu
b25sb2FkID0gZnVuY3Rpb24gKGUpIHsKKyAgICAgICAgICAgICAgICB2YXIgcGFyc2VkUmVzcG9u
c2UgPSBKU09OLnBhcnNlKGUudGFyZ2V0LnJlc3BvbnNlVGV4dCk7CisgICAgICAgICAgICAgICAg
aWYgKHBhcnNlZFJlc3BvbnNlIGluc3RhbmNlb2YgQXJyYXkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgdmFyIGNvdW50ID0gcGFyc2VkUmVzcG9uc2UubGVuZ3RoOworICAgICAgICAgICAgICAgICAg
ICBpZiAoY291bnQgIT09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzc3VlTGluay5p
bm5lckhUTUwgPSAnVGhpcyBhcHAgaGFzICcgKyBjb3VudCArICcgb3BlbiBpc3N1ZXMnOworICAg
ICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lzc3VlLWNvdW50
Jykuc3R5bGUuZGlzcGxheSA9ICdpbmxpbmUnOworICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIHhoci5zZW5kKCk7Cisg
ICAgICAgIH0KKyAgICB9OworCisgICAgcmVkaXJlY3QoKTsKKyAgICBnZXRGaWxlKCdsZWFybi5q
c29uJywgTGVhcm4pOworfSkoKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZGVwZW5kZW5jeS1leGFtcGxlcy9mbGlnaHQvbm9kZV9t
b2R1bGVzL3RvZG9tdmMtY29tbW9uL3BhY2thZ2UuanNvbiBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZGVwZW5kZW5jeS1leGFtcGxlcy9mbGlnaHQvbm9k
ZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL3BhY2thZ2UuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDc1
NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MDU2YzRi
ZjA3ODc4MDkyOTNjMWQzMWU1YjJmM2ZkODQzYzExMmZhCi0tLSAvZGV2L251bGwKKysrIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9kZXBlbmRlbmN5LWV4
YW1wbGVzL2ZsaWdodC9ub2RlX21vZHVsZXMvdG9kb212Yy1jb21tb24vcGFja2FnZS5qc29uCkBA
IC0wLDAgKzEsNjQgQEAKK3sKKyAgIm5hbWUiOiAidG9kb212Yy1jb21tb24iLAorICAidmVyc2lv
biI6ICIxLjAuMiIsCisgICJkZXNjcmlwdGlvbiI6ICJDb21tb24gVG9kb01WQyB1dGlsaXRpZXMg
dXNlZCBieSBvdXIgYXBwcyIsCisgICJsaWNlbnNlIjogIk1JVCIsCisgICJyZXBvc2l0b3J5Ijog
eworICAgICJ0eXBlIjogImdpdCIsCisgICAgInVybCI6ICJnaXQraHR0cHM6Ly9naXRodWIuY29t
L3Rhc3RlanMvdG9kb212Yy1jb21tb24uZ2l0IgorICB9LAorICAiYXV0aG9yIjogeworICAgICJu
YW1lIjogIlRhc3RlSlMiCisgIH0sCisgICJtYWluIjogImJhc2UuanMiLAorICAiZmlsZXMiOiBb
CisgICAgImJhc2UuanMiLAorICAgICJiYXNlLmNzcyIKKyAgXSwKKyAgImtleXdvcmRzIjogWwor
ICAgICJ0b2RvbXZjIiwKKyAgICAidGFzdGVqcyIsCisgICAgInV0aWwiLAorICAgICJ1dGlsaXRp
ZXMiCisgIF0sCisgICJnaXRIZWFkIjogImU4MmQwYzc5ZTAxNjg3Y2U3NDA3ZGY3ODZjYzc4NGFk
ODIxNjZjYjMiLAorICAiYnVncyI6IHsKKyAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS90
YXN0ZWpzL3RvZG9tdmMtY29tbW9uL2lzc3VlcyIKKyAgfSwKKyAgImhvbWVwYWdlIjogImh0dHBz
Oi8vZ2l0aHViLmNvbS90YXN0ZWpzL3RvZG9tdmMtY29tbW9uIiwKKyAgIl9pZCI6ICJ0b2RvbXZj
LWNvbW1vbkAxLjAuMiIsCisgICJzY3JpcHRzIjoge30sCisgICJfc2hhc3VtIjogImViM2FiNjEy
ODFhYzc0ODA5ZjU4NjljOTE3YzdiMDhiYzg0MjM0ZTAiLAorICAiX2Zyb20iOiAidG9kb212Yy1j
b21tb25APj0xLjAuMiA8Mi4wLjAiLAorICAiX25wbVZlcnNpb24iOiAiMi43LjQiLAorICAiX25v
ZGVWZXJzaW9uIjogIjAuMTIuMiIsCisgICJfbnBtVXNlciI6IHsKKyAgICAibmFtZSI6ICJzaW5k
cmVzb3JodXMiLAorICAgICJlbWFpbCI6ICJzaW5kcmVzb3JodXNAZ21haWwuY29tIgorICB9LAor
ICAiZGlzdCI6IHsKKyAgICAic2hhc3VtIjogImViM2FiNjEyODFhYzc0ODA5ZjU4NjljOTE3Yzdi
MDhiYzg0MjM0ZTAiLAorICAgICJ0YXJiYWxsIjogImh0dHA6Ly9yZWdpc3RyeS5ucG1qcy5vcmcv
dG9kb212Yy1jb21tb24vLS90b2RvbXZjLWNvbW1vbi0xLjAuMi50Z3oiCisgIH0sCisgICJtYWlu
dGFpbmVycyI6IFsKKyAgICB7CisgICAgICAibmFtZSI6ICJzaW5kcmVzb3JodXMiLAorICAgICAg
ImVtYWlsIjogInNpbmRyZXNvcmh1c0BnbWFpbC5jb20iCisgICAgfSwKKyAgICB7CisgICAgICAi
bmFtZSI6ICJhZGR5b3NtYW5pIiwKKyAgICAgICJlbWFpbCI6ICJhZGR5b3NtYW5pQGdtYWlsLmNv
bSIKKyAgICB9LAorICAgIHsKKyAgICAgICJuYW1lIjogInBhc3N5IiwKKyAgICAgICJlbWFpbCI6
ICJwaGFydGlnQHJkcmVpLm5ldCIKKyAgICB9LAorICAgIHsKKyAgICAgICJuYW1lIjogInN0ZXBo
ZW5wbHVzcGx1cyIsCisgICAgICAiZW1haWwiOiAic2F3Y2h1a0BnbWFpbC5jb20iCisgICAgfQor
ICBdLAorICAiZGlyZWN0b3JpZXMiOiB7fSwKKyAgIl9yZXNvbHZlZCI6ICJodHRwczovL3JlZ2lz
dHJ5Lm5wbWpzLm9yZy90b2RvbXZjLWNvbW1vbi8tL3RvZG9tdmMtY29tbW9uLTEuMC4yLnRneiIs
CisgICJyZWFkbWUiOiAiRVJST1I6IE5vIFJFQURNRSBkYXRhIGZvdW5kISIKK30KZGlmZiAtLWdp
dCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZGVwZW5k
ZW5jeS1leGFtcGxlcy9mbGlnaHQvbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL3JlYWRtZS5t
ZCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZGVwZW5k
ZW5jeS1leGFtcGxlcy9mbGlnaHQvbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL3JlYWRtZS5t
ZApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43YTVkZTUxMThmM2ZjNzc1OGU4ZGRjMGE2ODY4NzQ5Y2VlOWNhZjk1Ci0t
LSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9kZXBlbmRlbmN5LWV4YW1wbGVzL2ZsaWdodC9ub2RlX21vZHVsZXMvdG9kb212Yy1j
b21tb24vcmVhZG1lLm1kCkBAIC0wLDAgKzEsMTUgQEAKKyMgdG9kb212Yy1jb21tb24KKworPiBD
b21tb24gVG9kb01WQyB1dGlsaXRpZXMgdXNlZCBieSBvdXIgYXBwcworCisKKyMjIEluc3RhbGwK
KworYGBgCiskIG5wbSBpbnN0YWxsIC0tc2F2ZSB0b2RvbXZjLWNvbW1vbgorYGBgCisKKworIyMg
TGljZW5zZQorCitNSVQgwqkgW1Rhc3RlSlNdKGh0dHA6Ly90YXN0ZWpzLmNvbSkKZGlmZiAtLWdp
dCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZGVwZW5k
ZW5jeS1leGFtcGxlcy9mbGlnaHQvcGFja2FnZS5qc29uIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9kZXBlbmRlbmN5LWV4YW1wbGVzL2ZsaWdodC9wYWNr
YWdlLmpzb24KaW5kZXggY2MxY2Y3MmM4NWQ2M2U4NzdlMzg5ODY5ZmFkYTYxZTQ0ZTI5NGFjNy4u
ZGVjYzYyNDY1YmQzOWNiNjQyMjA5ZTJmYjcyZTQ0MDU0MTM0OWZhZCAxMDA2NDQKLS0tIGEvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9kZXBlbmRlbmN5LWV4
YW1wbGVzL2ZsaWdodC9wYWNrYWdlLmpzb24KKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9kZXBlbmRlbmN5LWV4YW1wbGVzL2ZsaWdodC9wYWNrYWdl
Lmpzb24KQEAgLTEsMTcgKzEsMjggQEAKIHsKLSAgIm5hbWUiOiAiZmxpZ2h0LXRvZG9tdmMiLAot
ICAidmVyc2lvbiI6ICIwLjAuMCIsCi0gICJkZXZEZXBlbmRlbmNpZXMiOiB7Ci0gICAgImthcm1h
IjogIn4wLjEwLjEiLAotICAgICJrYXJtYS1qYXNtaW5lIjogIn4wLjEuMCIsCi0gICAgImthcm1h
LXJlcXVpcmVqcyI6ICJ+MC4xLjAiLAotICAgICJrYXJtYS1jaHJvbWUtbGF1bmNoZXIiOiAifjAu
MS4wIiwKLSAgICAia2FybWEtaWUtbGF1bmNoZXIiOiAifjAuMS4xIiwKLSAgICAia2FybWEtZmly
ZWZveC1sYXVuY2hlciI6ICJ+MC4xLjAiLAotICAgICJrYXJtYS1waGFudG9tanMtbGF1bmNoZXIi
OiAifjAuMS4wIiwKLSAgICAia2FybWEtc2FmYXJpLWxhdW5jaGVyIjogIn4wLjEuMSIKLSAgfSwK
LSAgInNjcmlwdHMiOiB7Ci0gICAgInRlc3QiOiAia2FybWEgc3RhcnQgLS1icm93c2VycyBGaXJl
Zm94IC0tc2luZ2xlLXJ1biIKLSAgfQotfQorCSJwcml2YXRlIjogdHJ1ZSwKKwkiZGVwZW5kZW5j
aWVzIjogeworCQkiZGVwb3QiOiAiXjAuMS42IiwKKwkJImVzNS1zaGltIjogIl4yLjAuMCIsCisJ
CSJmbGlnaHRqcyI6ICJmbGlnaHRqcy9mbGlnaHQjdjEuMy4wIiwKKwkJImphc21pbmUtZmxpZ2h0
IjogImZsaWdodGpzL2phc21pbmUtZmxpZ2h0IzQuMC4wIiwKKwkJImpxdWVyeSI6ICJeMi4xLjAi
LAorCQkicmVxdWlyZWpzIjogIl4yLjEuMTUiLAorCQkicmVxdWlyZWpzLXRleHQiOiAiXjIuMC4x
MiIsCisJCSJ0b2RvbXZjLWFwcC1jc3MiOiAiXjEuMC4wIiwKKwkJInRvZG9tdmMtY29tbW9uIjog
Il4xLjAuMSIKKwl9LAorCSJkZXZEZXBlbmRlbmNpZXMiOiB7CisJCSJrYXJtYSI6ICJeMC4xMi42
IiwKKwkJImthcm1hLWphc21pbmUiOiAiXjAuMi4wIiwKKwkJImthcm1hLXJlcXVpcmVqcyI6ICJe
MC4yLjIiLAorCQkia2FybWEtY2hyb21lLWxhdW5jaGVyIjogIl4wLjEuMCIsCisJCSJrYXJtYS1p
ZS1sYXVuY2hlciI6ICJeMC4xLjEiLAorCQkia2FybWEtZmlyZWZveC1sYXVuY2hlciI6ICJeMC4x
LjAiLAorCQkia2FybWEtcGhhbnRvbWpzLWxhdW5jaGVyIjogIl4wLjEuMCIsCisJCSJrYXJtYS1z
YWZhcmktbGF1bmNoZXIiOiAiXjAuMS4xIiwKKwkJImphc21pbmUtanF1ZXJ5IjogIl4yLjAuNSIK
Kwl9LAorCSJzY3JpcHRzIjogeworCQkidGVzdCI6ICJrYXJtYSBzdGFydCAtLWJyb3dzZXJzIEZp
cmVmb3ggLS1zaW5nbGUtcnVuIgorCX0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2RlcGVuZGVuY3ktZXhhbXBsZXMvZmxpZ2h0L3JlYWRtZS5tZCBiL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZGVwZW5kZW5jeS1leGFtcGxlcy9mbGlnaHQv
cmVhZG1lLm1kCmluZGV4IDYxZmE1MzU3OTEzMzg3ZmU0NDZmNjBjYjkyMzEzMGIwOGNmZjllYmMu
LmU0NDM1ZDQyNzJhMjk2YTM4MGYyYmEyYTM3ZTQxODI0ZjA3OTA2Y2QgMTAwNjQ0Ci0tLSBhL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZGVwZW5kZW5jeS1l
eGFtcGxlcy9mbGlnaHQvcmVhZG1lLm1kCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZGVwZW5kZW5jeS1leGFtcGxlcy9mbGlnaHQvcmVhZG1lLm1k
CkBAIC0xMiw5ICsxMiw5IEBAIFRoZSBbRmxpZ2h0IHdlYnNpdGVdKGh0dHA6Ly9mbGlnaHRqcy5n
aXRodWIuaW8pIGlzIGEgZ3JlYXQgcmVzb3VyY2UgZm9yIGdldHRpbmcKIEhlcmUgYXJlIHNvbWUg
bGlua3MgeW91IG1heSBmaW5kIGhlbHBmdWw6CiAKICogW0dpdEh1Yl0oaHR0cHM6Ly9naXRodWIu
Y29tL2ZsaWdodGpzL2ZsaWdodCkKLSogW0RlbW8gQXBwbGljYXRpb25dKGh0dHA6Ly90d2l0dGVy
LmdpdGh1Yi5pby9mbGlnaHQvZGVtbykKKyogW0RlbW8gQXBwbGljYXRpb25dKGh0dHA6Ly9mbGln
aHRqcy5naXRodWIuaW8vZXhhbXBsZS1hcHAvKQogKiBbSW5zdGFsbGF0aW9uXShodHRwczovL2dp
dGh1Yi5jb20vZmxpZ2h0anMvZmxpZ2h0L2Jsb2IvbWFzdGVyL1JFQURNRS5tZCNpbnN0YWxsYXRp
b24pCi0qIFtGbGlnaHQgb24gVHdpdHRlcl0oaHR0cDovL3R3aXR0ZXIuY29tL2ZsaWdodCkKKyog
W0ZsaWdodCBvbiBUd2l0dGVyXShodHRwczovL3R3aXR0ZXIuY29tL2ZsaWdodGpzKQogCiBfSWYg
eW91IGhhdmUgb3RoZXIgaGVscGZ1bCBsaW5rcyB0byBzaGFyZSwgb3IgZmluZCBhbnkgb2YgdGhl
IGxpbmtzIGFib3ZlIG5vIGxvbmdlciB3b3JrLCBwbGVhc2UgW2xldCB1cyBrbm93XShodHRwczov
L2dpdGh1Yi5jb20vdGFzdGVqcy90b2RvbXZjL2lzc3VlcykuXwogCmRpZmYgLS1naXQgYS9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2RlcGVuZGVuY3ktZXhh
bXBsZXMvZmxpZ2h0L3Rlc3QvLmpzaGludHJjIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9kZXBlbmRlbmN5LWV4YW1wbGVzL2ZsaWdodC90ZXN0Ly5qc2hp
bnRyYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTkwMjMzY2VlYTcyOTU1MDYwOWU5
OTg1NjgwZTUwNDBjZGE1OTViOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2RlcGVuZGVuY3ktZXhhbXBsZXMvZmxpZ2h0L3Rlc3QvLmpzaGludHJjCisrKyAvZGV2L251bGwK
QEAgLTEsMzggKzAsMCBAQAotewotCSJub2RlIjogdHJ1ZSwKLQkiYnJvd3NlciI6IHRydWUsCi0J
ImVzbmV4dCI6IHRydWUsCi0JImJpdHdpc2UiOiB0cnVlLAotCSJjYW1lbGNhc2UiOiB0cnVlLAot
CSJjdXJseSI6IHRydWUsCi0JImVxZXFlcSI6IHRydWUsCi0JImltbWVkIjogdHJ1ZSwKLQkiaW5k
ZW50IjogNCwKLQkibGF0ZWRlZiI6IHRydWUsCi0JIm5ld2NhcCI6IHRydWUsCi0JIm5vYXJnIjog
dHJ1ZSwKLQkicXVvdG1hcmsiOiAic2luZ2xlIiwKLQkicmVnZXhwIjogdHJ1ZSwKLQkidW5kZWYi
OiB0cnVlLAotCSJ1bnVzZWQiOiB0cnVlLAotCSJzdHJpY3QiOiB0cnVlLAotCSJ0cmFpbGluZyI6
IHRydWUsCi0JInNtYXJ0dGFicyI6IHRydWUsCi0JIndoaXRlIjogdHJ1ZSwKLQkianF1ZXJ5Ijog
dHJ1ZSwKLQkiZ2xvYmFscyI6IHsKLQkJInJlcXVpcmVqcyI6IGZhbHNlLAotCQkiZGVzY3JpYmUi
OiBmYWxzZSwKLQkJImRlc2NyaWJlQ29tcG9uZW50IjogZmFsc2UsCi0JCSJzZXR1cENvbXBvbmVu
dCI6IGZhbHNlLAotCQkiaXQiOiBmYWxzZSwKLQkJImV4cGVjdCI6IGZhbHNlLAotCQkiYmVmb3Jl
RWFjaCI6IGZhbHNlLAotCQkiYWZ0ZXJFYWNoIjogZmFsc2UsCi0JCSJzcHlPbkV2ZW50IjogZmFs
c2UsCi0JCSJtb2NrcyI6IGZhbHNlLAotCQkicmVhZEZpeHR1cmVzIjogZmFsc2UsCi0JCSJzcHlP
biI6IGZhbHNlCi0JfQotfQotCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2RlcGVuZGVuY3ktZXhhbXBsZXMvZmxpZ2h0L3Rlc3QvZml4
dHVyZS9mb290ZXIuaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvZGVwZW5kZW5jeS1leGFtcGxlcy9mbGlnaHQvdGVzdC9maXh0dXJlL2Zvb3Rlci5o
dG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjN2E4OTcyZmZiYjhhZGY2ZmVmMDNm
ODk0MTgxNjIwMjhkOTUzNmExLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
ZGVwZW5kZW5jeS1leGFtcGxlcy9mbGlnaHQvdGVzdC9maXh0dXJlL2Zvb3Rlci5odG1sCisrKyAv
ZGV2L251bGwKQEAgLTEgKzAsMCBAQAotPGZvb3RlciBpZD0iZm9vdGVyIj48L2Zvb3Rlcj4KZGlm
ZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
ZGVwZW5kZW5jeS1leGFtcGxlcy9mbGlnaHQvdGVzdC9maXh0dXJlL25ld190b2RvLmh0bWwgYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2RlcGVuZGVuY3kt
ZXhhbXBsZXMvZmxpZ2h0L3Rlc3QvZml4dHVyZS9uZXdfdG9kby5odG1sCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAyYTlmZmQyNWUwYzUxMGI3MjdlZjkyZDY1MjJhOGNlMzgwMjUzNDBj
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZGVwZW5kZW5jeS1leGFtcGxl
cy9mbGlnaHQvdGVzdC9maXh0dXJlL25ld190b2RvLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSAr
MCwwIEBACi08aW5wdXQgaWQ9Im5ldy10b2RvIiBwbGFjZWhvbGRlcj0iV2hhdCBuZWVkcyB0byBi
ZSBkb25lPyIgYXV0b2ZvY3VzPgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9kZXBlbmRlbmN5LWV4YW1wbGVzL2ZsaWdodC90ZXN0L2Zp
eHR1cmUvdG9nZ2xlX2FsbC5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9kZXBlbmRlbmN5LWV4YW1wbGVzL2ZsaWdodC90ZXN0L2ZpeHR1cmUvdG9n
Z2xlX2FsbC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOWQ1M2RmMWY2OWY1
MDZmMzQ0OGJiZmE5NmJmODcyZjcyMjM3NjRmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvZGVwZW5kZW5jeS1leGFtcGxlcy9mbGlnaHQvdGVzdC9maXh0dXJlL3RvZ2dsZV9h
bGwuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLTxpbnB1dCBpZD0idG9nZ2xlLWFs
bCIgdHlwZT0iY2hlY2tib3giPgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9kZXBlbmRlbmN5LWV4YW1wbGVzL2ZsaWdodC90ZXN0L21v
Y2svZGF0YXN0b3JlLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9kZXBlbmRlbmN5LWV4YW1wbGVzL2ZsaWdodC90ZXN0L21vY2svZGF0YXN0b3JlLmpz
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YmU4NmM0NjAxZjRhM2FiYWEyNGExOGI2
NDBmYmIwMDcwODcxOThjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZGVw
ZW5kZW5jeS1leGFtcGxlcy9mbGlnaHQvdGVzdC9tb2NrL2RhdGFzdG9yZS5qcworKysgL2Rldi9u
dWxsCkBAIC0xLDI1ICswLDAgQEAKLShmdW5jdGlvbiAoKSB7Ci0gICAgJ3VzZSBzdHJpY3QnOwot
Ci0gICAgZnVuY3Rpb24gRmFrZURhdGFTdG9yZShkYXRhKSB7Ci0gICAgICAgIHRoaXMuZGF0YSA9
IGRhdGEgfHwgWwotICAgICAgICAgICAge3RpdGxlOiAnYnV5IHNvbWUgdW5pY29ybnMnLCBjb21w
bGV0ZWQ6IGZhbHNlLCBpZDogJzEwOGU4YzUxLWJiM2YtNjA4ZC0xNWUyLTYxMWNmYzdlNTgzOCd9
LAotICAgICAgICAgICAge3RpdGxlOiAnZ2V0IGEgYmFndWV0dGUgbXVzdGFjaGUnLCBjb21wbGV0
ZWQ6IGZhbHNlLCBpZDogJzZjZGQwYTFmLWI2ZjgtMjFlMS1mMzViLWFhMThhZjk5YWQ5MSd9LAot
ICAgICAgICAgICAge3RpdGxlOiAnc2hhdmUgeWFrcycsIGNvbXBsZXRlZDogdHJ1ZSwgaWQ6ICdh
YmU2NzhkZC0zMDg3LTE5OGMtZWVmYS0xODAyNDhjYjNkOGInfQotICAgICAgICBdOwotICAgIH0K
LQotICAgIEZha2VEYXRhU3RvcmUucHJvdG90eXBlLmFsbCA9IGZ1bmN0aW9uIGFsbCgpIHsKLSAg
ICAgICAgcmV0dXJuIHRoaXMuZGF0YTsKLSAgICB9OwotCi0gICAgRmFrZURhdGFTdG9yZS5wcm90
b3R5cGUuc2F2ZSA9IGZ1bmN0aW9uIHNhdmUoZGF0YSkgewotICAgICAgICB0aGlzLmRhdGEucHVz
aChkYXRhKTsKLSAgICB9OwotCi0gICAgRmFrZURhdGFTdG9yZS5wcm90b3R5cGUuZGVzdHJveUFs
bCA9IGZ1bmN0aW9uIGRlc3Ryb3lBbGwoKSB7Ci0gICAgICAgIC8vIFN0dWIKLSAgICB9OwotCi0g
ICAgd2luZG93Lm1vY2tzLkRhdGFTdG9yZSA9IEZha2VEYXRhU3RvcmU7Ci19KCkpOwpkaWZmIC0t
Z2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9kZXBl
bmRlbmN5LWV4YW1wbGVzL2ZsaWdodC90ZXN0L3NwZWMvZGF0YS9zdGF0c19zcGVjLmpzIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9kZXBlbmRlbmN5LWV4
YW1wbGVzL2ZsaWdodC90ZXN0L3NwZWMvZGF0YS9zdGF0c19zcGVjLmpzCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA3YjRhNDY1Njg1ZmM4NzQxZjgyZGM4MDdjZDI2YzRlMmY0ODA3OWEy
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZGVwZW5kZW5jeS1leGFtcGxl
cy9mbGlnaHQvdGVzdC9zcGVjL2RhdGEvc3RhdHNfc3BlYy5qcworKysgL2Rldi9udWxsCkBAIC0x
LDU3ICswLDAgQEAKLWRlc2NyaWJlQ29tcG9uZW50KCdhcHAvanMvZGF0YS9zdGF0cycsIGZ1bmN0
aW9uICgpIHsKLSAgICAndXNlIHN0cmljdCc7Ci0KLSAgICBkZXNjcmliZSgncmVjb3VudCB3aXRo
b3V0IGRhdGFzdG9yZScsIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgYmVmb3JlRWFjaChmdW5jdGlv
biAoKSB7Ci0gICAgICAgICAgICBzZXR1cENvbXBvbmVudCh7Ci0gICAgICAgICAgICAgICAgZGF0
YVN0b3JlOiBuZXcgbW9ja3MuRGF0YVN0b3JlKFtdKQotICAgICAgICAgICAgfSk7Ci0gICAgICAg
IH0pOwotCi0gICAgICAgIGFmdGVyRWFjaChmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICBsb2Nh
bFN0b3JhZ2UuY2xlYXIoKTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgaXQoJ3Nob3VsZCB0cmln
Z2VyIGEgZGF0YVN0YXRzQ291bnRlZCBldmVudCcsIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAg
IHNweU9uRXZlbnQoZG9jdW1lbnQsICdkYXRhU3RhdHNDb3VudGVkJyk7Ci0gICAgICAgICAgICB0
aGlzLmNvbXBvbmVudC5yZWNvdW50KCk7Ci0gICAgICAgICAgICBleHBlY3QoJ2RhdGFTdGF0c0Nv
dW50ZWQnKS50b0hhdmVCZWVuVHJpZ2dlcmVkT24oZG9jdW1lbnQpOwotICAgICAgICB9KTsKLQot
ICAgICAgICBpdCgnc2hvdWxkIHRyaWdnZXIgZGF0YVN0YXRzQ291bnRlZCB3aGVuIHRvZG9zIGFy
ZSBsb2FkZWQnLCBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICBzcHlPbkV2ZW50KGRvY3VtZW50
LCAnZGF0YVN0YXRzQ291bnRlZCcpOwotICAgICAgICAgICAgJChkb2N1bWVudCkudHJpZ2dlcign
ZGF0YVRvZG9zTG9hZGVkJyk7Ci0gICAgICAgICAgICBleHBlY3QoJ2RhdGFTdGF0c0NvdW50ZWQn
KS50b0hhdmVCZWVuVHJpZ2dlcmVkT24oZG9jdW1lbnQpOwotICAgICAgICB9KTsKLQotICAgICAg
ICBpdCgnc2hvdWxkIHByb3ZpZGUgZW1wdHkgc3RhdHMnLCBmdW5jdGlvbiAoKSB7Ci0gICAgICAg
ICAgICBzcHlPbkV2ZW50KGRvY3VtZW50LCAnZGF0YVN0YXRzQ291bnRlZCcpOwotICAgICAgICAg
ICAgdGhpcy5jb21wb25lbnQucmVjb3VudCgpOwotICAgICAgICAgICAgZXhwZWN0KCdkYXRhU3Rh
dHNDb3VudGVkJykudG9IYXZlQmVlblRyaWdnZXJlZE9uQW5kV2l0aChkb2N1bWVudCwgewotICAg
ICAgICAgICAgICAgIGFsbDogMCwKLSAgICAgICAgICAgICAgICByZW1haW5pbmc6IDAsCi0gICAg
ICAgICAgICAgICAgY29tcGxldGVkOiAwLAotICAgICAgICAgICAgICAgIGZpbHRlcjogJycKLSAg
ICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLSAgICB9KTsKLQotICAgIGRlc2NyaWJlKCdyZWNv
dW50IHdpdGggZGF0YXN0b3JlJywgZnVuY3Rpb24gKCkgewotICAgICAgICBiZWZvcmVFYWNoKGZ1
bmN0aW9uICgpIHsKLSAgICAgICAgICAgIHNldHVwQ29tcG9uZW50KHsKLSAgICAgICAgICAgICAg
ICBkYXRhU3RvcmU6IG5ldyBtb2Nrcy5EYXRhU3RvcmUoKQotICAgICAgICAgICAgfSk7Ci0gICAg
ICAgIH0pOwotCi0gICAgICAgIGl0KCdzaG91bGQgcHJvdmlkZSBmdWxsIHN0YXRzJywgZnVuY3Rp
b24gKCkgewotICAgICAgICAgICAgc3B5T25FdmVudChkb2N1bWVudCwgJ2RhdGFTdGF0c0NvdW50
ZWQnKTsKLSAgICAgICAgICAgIHRoaXMuY29tcG9uZW50LnJlY291bnQoKTsKLSAgICAgICAgICAg
IGV4cGVjdCgnZGF0YVN0YXRzQ291bnRlZCcpLnRvSGF2ZUJlZW5UcmlnZ2VyZWRPbkFuZFdpdGgo
ZG9jdW1lbnQsIHsKLSAgICAgICAgICAgICAgICBhbGw6IDMsCi0gICAgICAgICAgICAgICAgcmVt
YWluaW5nOiAyLAotICAgICAgICAgICAgICAgIGNvbXBsZXRlZDogMSwKLSAgICAgICAgICAgICAg
ICBmaWx0ZXI6ICcnCi0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci19KTsK
ZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvZGVwZW5kZW5jeS1leGFtcGxlcy9mbGlnaHQvdGVzdC9zcGVjL2RhdGEvdG9kb3Nfc3BlYy5q
cyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZGVwZW5k
ZW5jeS1leGFtcGxlcy9mbGlnaHQvdGVzdC9zcGVjL2RhdGEvdG9kb3Nfc3BlYy5qcwpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjY2NTJjZWI5NmY0NjAzNDZkMjY2NjUxYjIxOTBhYzk0
ZGFkZjQ0ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2RlcGVuZGVuY3kt
ZXhhbXBsZXMvZmxpZ2h0L3Rlc3Qvc3BlYy9kYXRhL3RvZG9zX3NwZWMuanMKKysrIC9kZXYvbnVs
bApAQCAtMSw0MSArMCwwIEBACi1kZXNjcmliZUNvbXBvbmVudCgnYXBwL2pzL2RhdGEvdG9kb3Mn
LCBmdW5jdGlvbiAoKSB7Ci0gICAgJ3VzZSBzdHJpY3QnOwotCi0gICAgZGVzY3JpYmUoJ3dpdGhv
dXQgZGF0YXN0b3JlJywgZnVuY3Rpb24gKCkgewotICAgICAgICBiZWZvcmVFYWNoKGZ1bmN0aW9u
ICgpIHsKLSAgICAgICAgICAgIHRoaXMuZGF0YVN0b3JlID0gbmV3IG1vY2tzLkRhdGFTdG9yZShb
XSk7Ci0gICAgICAgICAgICBzZXR1cENvbXBvbmVudCh7Ci0gICAgICAgICAgICAgICAgZGF0YVN0
b3JlOiB0aGlzLmRhdGFTdG9yZQotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotCi0gICAg
ICAgIGl0KCdzaG91bGQgYWRkIGEgbmV3IGVudHJ5JywgZnVuY3Rpb24gKCkgewotICAgICAgICAg
ICAgdmFyIHRpdGxlID0gJ2J1eSBzb21lIHVuaWNvcm5zJzsKLQotICAgICAgICAgICAgc3B5T25F
dmVudChkb2N1bWVudCwgJ2RhdGFUb2RvQWRkZWQnKTsKLSAgICAgICAgICAgIHRoaXMuY29tcG9u
ZW50LnRyaWdnZXIoJ3VpQWRkUmVxdWVzdGVkJywgewotICAgICAgICAgICAgICAgIHRpdGxlOiB0
aXRsZQotICAgICAgICAgICAgfSk7Ci0KLSAgICAgICAgICAgIGV4cGVjdCgnZGF0YVRvZG9BZGRl
ZCcpLnRvSGF2ZUJlZW5UcmlnZ2VyZWRPbihkb2N1bWVudCk7Ci0gICAgICAgICAgICBleHBlY3Qo
dGhpcy5kYXRhU3RvcmUuZGF0YS5sZW5ndGgpLnRvQmUoMSk7Ci0gICAgICAgICAgICBleHBlY3Qo
dGhpcy5kYXRhU3RvcmUuYWxsKClbMF0udGl0bGUpLnRvQmUodGl0bGUpOwotICAgICAgICB9KTsK
LSAgICB9KTsKLQotICAgIGRlc2NyaWJlKCd3aXRoIGRhdGFzdG9yZScsIGZ1bmN0aW9uICgpIHsK
LSAgICAgICAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICB0aGlzLmRhdGFT
dG9yZSA9IG5ldyBtb2Nrcy5EYXRhU3RvcmUoKTsKLSAgICAgICAgICAgIHNldHVwQ29tcG9uZW50
KHsKLSAgICAgICAgICAgICAgICBkYXRhU3RvcmU6IHRoaXMuZGF0YVN0b3JlCi0gICAgICAgICAg
ICB9KTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgaXQoJ3JlbW92ZXMgY29tcGxldGVkJywgZnVu
Y3Rpb24gKCkgewotICAgICAgICAgICAgc3B5T24odGhpcy5kYXRhU3RvcmUsICdkZXN0cm95QWxs
Jyk7Ci0gICAgICAgICAgICB0aGlzLmNvbXBvbmVudC50cmlnZ2VyKCd1aUNsZWFyUmVxdWVzdGVk
Jyk7Ci0gICAgICAgICAgICBleHBlY3QodGhpcy5kYXRhU3RvcmUuZGVzdHJveUFsbCkudG9IYXZl
QmVlbkNhbGxlZFdpdGgoeyBjb21wbGV0ZWQ6IHRydWUgfSk7Ci0gICAgICAgIH0pOwotICAgIH0p
OwotfSk7Ci0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvZGVwZW5kZW5jeS1leGFtcGxlcy9mbGlnaHQvdGVzdC9zcGVjL3VpL25ld19p
dGVtX3NwZWMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2RlcGVuZGVuY3ktZXhhbXBsZXMvZmxpZ2h0L3Rlc3Qvc3BlYy91aS9uZXdfaXRlbV9zcGVj
LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZGQ0MjllOTdiYzc1NDhmOGJkYzc2
OGY2YjNlMTQ4MDFkMmVkYjZmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
ZGVwZW5kZW5jeS1leGFtcGxlcy9mbGlnaHQvdGVzdC9zcGVjL3VpL25ld19pdGVtX3NwZWMuanMK
KysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1kZXNjcmliZUNvbXBvbmVudCgnYXBwL2pz
L3VpL25ld19pdGVtJywgZnVuY3Rpb24gKCkgewotICAgICd1c2Ugc3RyaWN0JzsKLQotICAgIHZh
ciBFTlRFUl9LRVkgPSAxMzsKLQotICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkgewotICAgICAg
ICBzZXR1cENvbXBvbmVudChyZWFkRml4dHVyZXMoJ25ld190b2RvLmh0bWwnKSk7Ci0gICAgfSk7
Ci0KLSAgICBpdCgndHJpZ2dlcnMgdWlBZGRSZXF1ZXN0ZWQgb24gZW50ZXInLCBmdW5jdGlvbiAo
KSB7Ci0gICAgICAgIHZhciBldmVudCA9ICQuRXZlbnQoJ2tleWRvd24nKTsKLSAgICAgICAgZXZl
bnQud2hpY2ggPSBFTlRFUl9LRVk7Ci0KLSAgICAgICAgc3B5T25FdmVudChkb2N1bWVudCwgJ3Vp
QWRkUmVxdWVzdGVkJyk7Ci0gICAgICAgIHRoaXMuY29tcG9uZW50LiRub2RlLnZhbCgnc2hhdmUg
bW9hciB5YWtzJyk7Ci0KLSAgICAgICAgdGhpcy5jb21wb25lbnQudHJpZ2dlcihldmVudCk7Ci0K
LSAgICAgICAgZXhwZWN0KCd1aUFkZFJlcXVlc3RlZCcpLnRvSGF2ZUJlZW5UcmlnZ2VyZWRPbkFu
ZFdpdGgoZG9jdW1lbnQsIHsKLSAgICAgICAgICAgIHRpdGxlOiAnc2hhdmUgbW9hciB5YWtzJwot
ICAgICAgICB9KTsKLSAgICB9KTsKLQotICAgIGl0KCd0cmltcyB2YWx1ZXMnLCBmdW5jdGlvbiAo
KSB7Ci0gICAgICAgIHZhciBldmVudCA9ICQuRXZlbnQoJ2tleWRvd24nKTsKLSAgICAgICAgZXZl
bnQud2hpY2ggPSBFTlRFUl9LRVk7Ci0KLSAgICAgICAgc3B5T25FdmVudChkb2N1bWVudCwgJ3Vp
QWRkUmVxdWVzdGVkJyk7Ci0gICAgICAgIHRoaXMuY29tcG9uZW50LiRub2RlLnZhbCgnICB0cmlt
IGlucHV0cyAnKTsKLQotICAgICAgICB0aGlzLmNvbXBvbmVudC50cmlnZ2VyKGV2ZW50KTsKLQot
ICAgICAgICBleHBlY3QoJ3VpQWRkUmVxdWVzdGVkJykudG9IYXZlQmVlblRyaWdnZXJlZE9uQW5k
V2l0aChkb2N1bWVudCwgewotICAgICAgICAgICAgdGl0bGU6ICd0cmltIGlucHV0cycKLSAgICAg
ICAgfSk7Ci0gICAgfSk7Ci0KLSAgICBpdCgnaWdub3JlIGVtcHR5IHZhbHVlcycsIGZ1bmN0aW9u
ICgpIHsKLSAgICAgICAgdmFyIGV2ZW50ID0gJC5FdmVudCgna2V5ZG93bicpOwotICAgICAgICBl
dmVudC53aGljaCA9IEVOVEVSX0tFWTsKLQotICAgICAgICBzcHlPbkV2ZW50KGRvY3VtZW50LCAn
dWlBZGRSZXF1ZXN0ZWQnKTsKLQotICAgICAgICB0aGlzLmNvbXBvbmVudC50cmlnZ2VyKGV2ZW50
KTsKLQotICAgICAgICBleHBlY3QoJ3VpQWRkUmVxdWVzdGVkJykubm90LnRvSGF2ZUJlZW5Ucmln
Z2VyZWRPbihkb2N1bWVudCk7Ci0gICAgfSk7Ci19KTsKLQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9kZXBlbmRlbmN5LWV4YW1wbGVz
L2ZsaWdodC90ZXN0L3NwZWMvdWkvc3RhdHNfc3BlYy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZGVwZW5kZW5jeS1leGFtcGxlcy9mbGlnaHQvdGVz
dC9zcGVjL3VpL3N0YXRzX3NwZWMuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkx
Yzg4ZDM5NTljMGM4OWI0ZDJlYTViNTdiZTEzY2MyMjkyNjE5MGYuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9kZXBlbmRlbmN5LWV4YW1wbGVzL2ZsaWdodC90ZXN0L3NwZWMv
dWkvc3RhdHNfc3BlYy5qcworKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLWRlc2NyaWJl
Q29tcG9uZW50KCdhcHAvanMvdWkvc3RhdHMnLCBmdW5jdGlvbiAoKSB7Ci0gICAgJ3VzZSBzdHJp
Y3QnOwotCi0gICAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7Ci0gICAgICAgIHNldHVwQ29tcG9u
ZW50KHJlYWRGaXh0dXJlcygnZm9vdGVyLmh0bWwnKSk7Ci0gICAgfSk7Ci0KLSAgICBpdCgncmVu
ZGVycyB3aGVuIHN0YXRzIGNoYW5nZScsIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgdmFyIGRhdGEg
PSB7Ci0gICAgICAgICAgICBhbGw6IDMsCi0gICAgICAgICAgICByZW1haW5pbmc6IDIsCi0gICAg
ICAgICAgICBjb21wbGV0ZWQ6IDEsCi0gICAgICAgICAgICBmaWx0ZXI6ICcnCi0gICAgICAgIH07
Ci0gICAgICAgIGV4cGVjdCh0aGlzLmNvbXBvbmVudC4kbm9kZSkudG9CZUVtcHR5KCk7Ci0gICAg
ICAgICQoZG9jdW1lbnQpLnRyaWdnZXIoJ2RhdGFTdGF0c0NvdW50ZWQnLCBkYXRhKTsKLSAgICAg
ICAgZXhwZWN0KHRoaXMuY29tcG9uZW50LiRub2RlKS5ub3QudG9CZUVtcHR5KCk7Ci0gICAgICAg
IGV4cGVjdCh0aGlzLmNvbXBvbmVudC4kbm9kZSkudG9CZVZpc2libGUoKTsKLSAgICB9KTsKLQot
ICAgIGl0KCdpcyBoaWRkZW4gd2hlbiBkYXRhIGlzIGVtcHR5JywgZnVuY3Rpb24gKCkgewotICAg
ICAgICB2YXIgZGF0YSA9IHsKLSAgICAgICAgICAgIGFsbDogMCwKLSAgICAgICAgICAgIHJlbWFp
bmluZzogMCwKLSAgICAgICAgICAgIGNvbXBsZXRlZDogMCwKLSAgICAgICAgICAgIGZpbHRlcjog
JycKLSAgICAgICAgfTsKLSAgICAgICAgJChkb2N1bWVudCkudHJpZ2dlcignZGF0YVN0YXRzQ291
bnRlZCcsIGRhdGEpOwotICAgICAgICBleHBlY3QodGhpcy5jb21wb25lbnQuJG5vZGUpLnRvQmVI
aWRkZW4oKTsKLSAgICB9KTsKLQotICAgIGl0KCdoaWRlcyBjbGVhci1jb21wbGV0ZWQgd2l0aCBu
byBjb21wbGV0ZWQgaXRlbXMnLCBmdW5jdGlvbiAoKSB7Ci0gICAgICAgIHZhciBkYXRhID0gewot
ICAgICAgICAgICAgYWxsOiAyLAotICAgICAgICAgICAgcmVtYWluaW5nOiAyLAotICAgICAgICAg
ICAgY29tcGxldGVkOiAwLAotICAgICAgICAgICAgZmlsdGVyOiAnJwotICAgICAgICB9OwotICAg
ICAgICB0aGlzLmNvbXBvbmVudC5yZW5kZXIobnVsbCwgZGF0YSk7Ci0gICAgICAgIGV4cGVjdCh0
aGlzLmNvbXBvbmVudC5zZWxlY3QoJ2NsZWFyQ29tcGxldGVkU2VsZWN0b3InKS5sZW5ndGgpLnRv
QmUoMCk7Ci0gICAgfSk7Ci0KLSAgICBpdCgnc2hvd3MgY2xlYXItY29tcGxldGVkIHdpdGggY29t
cGxldGVkIGl0ZW1zJywgZnVuY3Rpb24gKCkgewotICAgICAgICB2YXIgZGF0YSA9IHsKLSAgICAg
ICAgICAgIGFsbDogMiwKLSAgICAgICAgICAgIHJlbWFpbmluZzogMSwKLSAgICAgICAgICAgIGNv
bXBsZXRlZDogMSwKLSAgICAgICAgICAgIGZpbHRlcjogJycKLSAgICAgICAgfTsKLSAgICAgICAg
dGhpcy5jb21wb25lbnQucmVuZGVyKG51bGwsIGRhdGEpOwotICAgICAgICBleHBlY3QodGhpcy5j
b21wb25lbnQuc2VsZWN0KCdjbGVhckNvbXBsZXRlZFNlbGVjdG9yJykubGVuZ3RoKS50b0JlKDEp
OwotICAgIH0pOwotCi0gICAgaXQoJ3RyaWdnZXJzIHVpQ2xlYXJSZXF1ZXN0ZWQgb24gY2xpY2sn
LCBmdW5jdGlvbiAoKSB7Ci0gICAgICAgIHZhciBkYXRhID0gewotICAgICAgICAgICAgYWxsOiAy
LAotICAgICAgICAgICAgcmVtYWluaW5nOiAxLAotICAgICAgICAgICAgY29tcGxldGVkOiAxLAot
ICAgICAgICAgICAgZmlsdGVyOiAnJwotICAgICAgICB9OwotICAgICAgICBzcHlPbkV2ZW50KGRv
Y3VtZW50LCAndWlDbGVhclJlcXVlc3RlZCcpOwotICAgICAgICB0aGlzLmNvbXBvbmVudC5yZW5k
ZXIobnVsbCwgZGF0YSk7Ci0gICAgICAgIHRoaXMuY29tcG9uZW50LnRyaWdnZXIodGhpcy5jb21w
b25lbnQuYXR0ci5jbGVhckNvbXBsZXRlZFNlbGVjdG9yLCAnY2xpY2snKTsKLSAgICAgICAgZXhw
ZWN0KCd1aUNsZWFyUmVxdWVzdGVkJykudG9IYXZlQmVlblRyaWdnZXJlZE9uKHRoaXMuY29tcG9u
ZW50KTsKLSAgICB9KTsKLX0pOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9kZXBlbmRlbmN5LWV4YW1wbGVzL2ZsaWdodC90ZXN0L3Nw
ZWMvdWkvdG9nZ2xlX2FsbF9zcGVjLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9kZXBlbmRlbmN5LWV4YW1wbGVzL2ZsaWdodC90ZXN0L3NwZWMvdWkv
dG9nZ2xlX2FsbF9zcGVjLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMjZmYWYx
ODc1MDkxMTU5M2M5YjRmZDdmNjIxMTMzM2YzNjhhYWI4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvZGVwZW5kZW5jeS1leGFtcGxlcy9mbGlnaHQvdGVzdC9zcGVjL3VpL3Rv
Z2dsZV9hbGxfc3BlYy5qcworKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLWRlc2NyaWJl
Q29tcG9uZW50KCdhcHAvanMvdWkvdG9nZ2xlX2FsbCcsIGZ1bmN0aW9uICgpIHsKLSAgICAndXNl
IHN0cmljdCc7Ci0KLSAgICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHsKLSAgICAgICAgc2V0dXBD
b21wb25lbnQocmVhZEZpeHR1cmVzKCd0b2dnbGVfYWxsLmh0bWwnKSk7Ci0gICAgfSk7Ci0KLSAg
ICBpdCgnY2hlY2sgdGhlIGNoZWNrYm94IHcvbyByZW1haW5pbmcnLCBmdW5jdGlvbiAoKSB7Ci0g
ICAgICAgIHZhciBkYXRhID0gewotICAgICAgICAgICAgYWxsOiAyLAotICAgICAgICAgICAgcmVt
YWluaW5nOiAwLAotICAgICAgICAgICAgY29tcGxldGVkOiAyLAotICAgICAgICAgICAgZmlsdGVy
OiAnJwotICAgICAgICB9OwotICAgICAgICAkKGRvY3VtZW50KS50cmlnZ2VyKCdkYXRhU3RhdHND
b3VudGVkJywgZGF0YSk7Ci0gICAgICAgIGV4cGVjdCh0aGlzLmNvbXBvbmVudC4kbm9kZSkudG9C
ZUNoZWNrZWQoKTsKLSAgICB9KTsKLQotICAgIGl0KCd1bmNoZWNrIHRoZSBjaGVja2JveCB3LyBy
ZW1haW5pbmcnLCBmdW5jdGlvbiAoKSB7Ci0gICAgICAgIHZhciBkYXRhID0gewotICAgICAgICAg
ICAgYWxsOiAyLAotICAgICAgICAgICAgcmVtYWluaW5nOiAxLAotICAgICAgICAgICAgY29tcGxl
dGVkOiAxLAotICAgICAgICAgICAgZmlsdGVyOiAnJwotICAgICAgICB9OwotICAgICAgICAkKGRv
Y3VtZW50KS50cmlnZ2VyKCdkYXRhU3RhdHNDb3VudGVkJywgZGF0YSk7Ci0gICAgICAgIGV4cGVj
dCh0aGlzLmNvbXBvbmVudC4kbm9kZSkubm90LnRvQmVDaGVja2VkKCk7Ci0gICAgfSk7Ci19KTsK
LQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9kZXBlbmRlbmN5LWV4YW1wbGVzL2ZsaWdodC90ZXN0L3Rlc3QtbWFpbi5qcyBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZGVwZW5kZW5jeS1leGFt
cGxlcy9mbGlnaHQvdGVzdC90ZXN0LW1haW4uanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGE3MjY0Y2Y3MGE4YTQ5MWIyMmY3ODY1MjUzNWVlOWE4Y2Q0ZDdiOWIuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9kZXBlbmRlbmN5LWV4YW1wbGVzL2ZsaWdodC90ZXN0
L3Rlc3QtbWFpbi5qcworKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLS8qanNoaW50IGNh
bWVsY2FzZTpmYWxzZSovCi0vKmdsb2JhbCBqYXNtaW5lKi8KLSd1c2Ugc3RyaWN0JzsKLQotdmFy
IHRlc3RzID0gT2JqZWN0LmtleXMod2luZG93Ll9fa2FybWFfXy5maWxlcykuZmlsdGVyKGZ1bmN0
aW9uIChmaWxlKSB7Ci0gICAgcmV0dXJuICgvX3NwZWNcLmpzJC8udGVzdChmaWxlKSk7Ci19KTsK
LQotd2luZG93Lm1vY2tzID0ge307Ci0KLXJlcXVpcmVqcy5jb25maWcoewotICAgIC8vIEthcm1h
IHNlcnZlcyBmaWxlcyBmcm9tICcvYmFzZScKLSAgICBiYXNlVXJsOiAnL2Jhc2UnLAotCi0gICAg
cGF0aHM6IHsKLSAgICAgICAgZmxpZ2h0OiAnYm93ZXJfY29tcG9uZW50cy9mbGlnaHQnLAotICAg
ICAgICBkZXBvdDogJ2Jvd2VyX2NvbXBvbmVudHMvZGVwb3QvZGVwb3QnLAotICAgICAgICB0ZXh0
OiAnYm93ZXJfY29tcG9uZW50cy9yZXF1aXJlanMtdGV4dC90ZXh0JwotICAgIH0sCi0KLSAgICAv
LyBhc2sgUmVxdWlyZS5qcyB0byBsb2FkIHRoZXNlIGZpbGVzIChhbGwgb3VyIHRlc3RzKQotICAg
IGRlcHM6IHRlc3RzLAotCi0gICAgLy8gc3RhcnQgdGVzdCBydW4sIG9uY2UgUmVxdWlyZS5qcyBp
cyBkb25lCi0gICAgY2FsbGJhY2s6IHdpbmRvdy5fX2thcm1hX18uc3RhcnQKLX0pOwotCi1qYXNt
aW5lLmdldEZpeHR1cmVzKCkuZml4dHVyZXNQYXRoID0gJy9iYXNlL3Rlc3QvZml4dHVyZSc7CmRp
ZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2Z1bmN0aW9uYWwtcHJvZy1leGFtcGxlcy9lbG0vVG9kby5lbG0gYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Z1bmN0aW9uYWwtcHJvZy1leGFtcGxlcy9l
bG0vVG9kby5lbG0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmYxZDM5ZGIzMTcxOWY5NTJkMzIxOWVkNmVkMDcwMTkx
NGI1YWE2ZgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvZnVuY3Rpb25hbC1wcm9nLWV4YW1wbGVzL2VsbS9Ub2RvLmVsbQpA
QCAtMCwwICsxLDM5MCBAQAorcG9ydCBtb2R1bGUgVG9kbyBleHBvc2luZyAoLi4pCisKK3stfCBU
b2RvTVZDIGltcGxlbWVudGVkIGluIEVsbSwgdXNpbmcgcGxhaW4gSFRNTCBhbmQgQ1NTIGZvciBy
ZW5kZXJpbmcuCisKK1RoaXMgYXBwbGljYXRpb24gaXMgYnJva2VuIHVwIGludG8gZm91ciBkaXN0
aW5jdCBwYXJ0czoKKworICAxLiBNb2RlbCAgLSBhIGZ1bGwgZGVzY3JpcHRpb24gb2YgdGhlIGFw
cGxpY2F0aW9uIGFzIGRhdGEKKyAgMi4gVXBkYXRlIC0gYSB3YXkgdG8gdXBkYXRlIHRoZSBtb2Rl
bCBiYXNlZCBvbiB1c2VyIGFjdGlvbnMKKyAgMy4gVmlldyAgIC0gYSB3YXkgdG8gdmlzdWFsaXpl
IG91ciBtb2RlbCB3aXRoIEhUTUwKKworVGhpcyBwcm9ncmFtIGlzIG5vdCBwYXJ0aWN1bGFybHkg
bGFyZ2UsIHNvIGRlZmluaXRlbHkgc2VlIHRoZSBmb2xsb3dpbmcKK2RvY3VtZW50IGZvciBub3Rl
cyBvbiBzdHJ1Y3R1cmluZyBtb3JlIGNvbXBsZXggR1VJcyB3aXRoIEVsbToKK2h0dHA6Ly9ndWlk
ZS5lbG0tbGFuZy5vcmcvYXJjaGl0ZWN0dXJlLworLX0KKworaW1wb3J0IERvbQoraW1wb3J0IFRh
c2sKK2ltcG9ydCBIdG1sIGV4cG9zaW5nICguLikKK2ltcG9ydCBIdG1sLkF0dHJpYnV0ZXMgZXhw
b3NpbmcgKC4uKQoraW1wb3J0IEh0bWwuRXZlbnRzIGV4cG9zaW5nICguLikKK2ltcG9ydCBIdG1s
LkxhenkgZXhwb3NpbmcgKGxhenksIGxhenkyKQoraW1wb3J0IEh0bWwuQXBwCitpbXBvcnQgTmF2
aWdhdGlvbiBleHBvc2luZyAoUGFyc2VyKQoraW1wb3J0IFN0cmluZworaW1wb3J0IFN0cmluZy5F
eHRyYQoraW1wb3J0IFRvZG8uVGFzaworCisKKy0tIE1PREVMCistLSBUaGUgZnVsbCBhcHBsaWNh
dGlvbiBzdGF0ZSBvZiBvdXIgdG9kbyBhcHAuCisKKwordHlwZSBhbGlhcyBNb2RlbCA9CisgICAg
eyB0YXNrcyA6IExpc3QgVG9kby5UYXNrLk1vZGVsCisgICAgLCBmaWVsZCA6IFN0cmluZworICAg
ICwgdWlkIDogSW50CisgICAgLCB2aXNpYmlsaXR5IDogU3RyaW5nCisgICAgfQorCisKK3R5cGUg
YWxpYXMgRmxhZ3MgPQorICAgIE1heWJlIE1vZGVsCisKKworZW1wdHlNb2RlbCA6IE1vZGVsCitl
bXB0eU1vZGVsID0KKyAgICB7IHRhc2tzID0gW10KKyAgICAsIHZpc2liaWxpdHkgPSAiQWxsIgor
ICAgICwgZmllbGQgPSAiIgorICAgICwgdWlkID0gMAorICAgIH0KKworCisKKy0tIFVQREFURQor
LS0gQSBkZXNjcmlwdGlvbiBvZiB0aGUga2luZHMgb2YgYWN0aW9ucyB0aGF0IGNhbiBiZSBwZXJm
b3JtZWQgb24gdGhlIG1vZGVsIG9mCistLSBvdXIgYXBwbGljYXRpb24uIFNlZSB0aGUgZm9sbG93
aW5nIHBvc3QgZm9yIG1vcmUgaW5mbyBvbiB0aGlzIHBhdHRlcm4gYW5kCistLSBzb21lIGFsdGVy
bmF0aXZlczogaHR0cDovL2d1aWRlLmVsbS1sYW5nLm9yZy9hcmNoaXRlY3R1cmUvCisKKwordHlw
ZSBNc2cKKyAgICA9IE5vT3AKKyAgICB8IFVwZGF0ZUZpZWxkIFN0cmluZworICAgIHwgQWRkCisg
ICAgfCBVcGRhdGVUYXNrICggSW50LCBUb2RvLlRhc2suTXNnICkKKyAgICB8IERlbGV0ZUNvbXBs
ZXRlCisgICAgfCBDaGVja0FsbCBCb29sCisgICAgfCBDaGFuZ2VWaXNpYmlsaXR5IFN0cmluZwor
CisKKworLS0gSG93IHdlIHVwZGF0ZSBvdXIgTW9kZWwgb24gYW55IGdpdmVuIE1lc3NhZ2UKKwor
Cit1cGRhdGUgOiBNc2cgLT4gTW9kZWwgLT4gKCBNb2RlbCwgQ21kIE1zZyApCit1cGRhdGUgbXNn
IG1vZGVsID0KKyAgICBjYXNlIERlYnVnLmxvZyAiTUVTU0FHRTogIiBtc2cgb2YKKyAgICAgICAg
Tm9PcCAtPgorICAgICAgICAgICAgKCBtb2RlbCwgQ21kLm5vbmUgKQorCisgICAgICAgIFVwZGF0
ZUZpZWxkIHN0ciAtPgorICAgICAgICAgICAgbGV0CisgICAgICAgICAgICAgICAgbmV3TW9kZWwg
PQorICAgICAgICAgICAgICAgICAgICB7IG1vZGVsIHwgZmllbGQgPSBzdHIgfQorICAgICAgICAg
ICAgaW4KKyAgICAgICAgICAgICAgICAoIG5ld01vZGVsLCBzYXZlIG1vZGVsICkKKworICAgICAg
ICBBZGQgLT4KKyAgICAgICAgICAgIGxldAorICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uID0K
KyAgICAgICAgICAgICAgICAgICAgU3RyaW5nLnRyaW0gbW9kZWwuZmllbGQKKworICAgICAgICAg
ICAgICAgIG5ld01vZGVsID0KKyAgICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLmlzRW1wdHkg
ZGVzY3JpcHRpb24gdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgbW9kZWwKKyAgICAgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgeyBtb2RlbAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgdWlkID0gbW9kZWwudWlkICsgMQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICwgZmllbGQgPSAiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICwgdGFza3MgPSBtb2RlbC50YXNrcyArKyBbIFRvZG8uVGFzay5pbml0IGRlc2NyaXB0aW9uIG1v
ZGVsLnVpZCBdCisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBpbgorICAg
ICAgICAgICAgICAgICggbmV3TW9kZWwsIHNhdmUgbmV3TW9kZWwgKQorCisgICAgICAgIFVwZGF0
ZVRhc2sgKCBpZCwgdGFza01zZyApIC0+CisgICAgICAgICAgICBsZXQKKyAgICAgICAgICAgICAg
ICB1cGRhdGVUYXNrIHQgPQorICAgICAgICAgICAgICAgICAgICBpZiB0LmlkID09IGlkIHRoZW4K
KyAgICAgICAgICAgICAgICAgICAgICAgIFRvZG8uVGFzay51cGRhdGUgdGFza01zZyB0CisgICAg
ICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIEp1c3QgdAorCisg
ICAgICAgICAgICAgICAgbmV3TW9kZWwgPQorICAgICAgICAgICAgICAgICAgICB7IG1vZGVsIHwg
dGFza3MgPSBMaXN0LmZpbHRlck1hcCB1cGRhdGVUYXNrIG1vZGVsLnRhc2tzIH0KKyAgICAgICAg
ICAgIGluCisgICAgICAgICAgICAgICAgY2FzZSB0YXNrTXNnIG9mCisgICAgICAgICAgICAgICAg
ICAgIFRvZG8uVGFzay5Gb2N1cyBlbGVtZW50SWQgLT4KKyAgICAgICAgICAgICAgICAgICAgICAg
IG5ld01vZGVsICEgWyBzYXZlIG5ld01vZGVsLCBmb2N1c1Rhc2sgZWxlbWVudElkIF0KKworICAg
ICAgICAgICAgICAgICAgICBfIC0+CisgICAgICAgICAgICAgICAgICAgICAgICAoIG5ld01vZGVs
LCBzYXZlIG5ld01vZGVsICkKKworICAgICAgICBEZWxldGVDb21wbGV0ZSAtPgorICAgICAgICAg
ICAgbGV0CisgICAgICAgICAgICAgICAgbmV3TW9kZWwgPQorICAgICAgICAgICAgICAgICAgICB7
IG1vZGVsCisgICAgICAgICAgICAgICAgICAgICAgICB8IHRhc2tzID0gTGlzdC5maWx0ZXIgKG5v
dCA8PCAuY29tcGxldGVkKSBtb2RlbC50YXNrcworICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICBpbgorICAgICAgICAgICAgICAgICggbmV3TW9kZWwsIHNhdmUgbmV3TW9kZWwgKQor
CisgICAgICAgIENoZWNrQWxsIGJvb2wgLT4KKyAgICAgICAgICAgIGxldAorICAgICAgICAgICAg
ICAgIHVwZGF0ZVRhc2sgdCA9CisgICAgICAgICAgICAgICAgICAgIHsgdCB8IGNvbXBsZXRlZCA9
IGJvb2wgfQorCisgICAgICAgICAgICAgICAgbmV3TW9kZWwgPQorICAgICAgICAgICAgICAgICAg
ICB7IG1vZGVsIHwgdGFza3MgPSBMaXN0Lm1hcCB1cGRhdGVUYXNrIG1vZGVsLnRhc2tzIH0KKyAg
ICAgICAgICAgIGluCisgICAgICAgICAgICAgICAgKCBuZXdNb2RlbCwgc2F2ZSBuZXdNb2RlbCAp
CisKKyAgICAgICAgQ2hhbmdlVmlzaWJpbGl0eSB2aXNpYmlsaXR5IC0+CisgICAgICAgICAgICBs
ZXQKKyAgICAgICAgICAgICAgICBuZXdNb2RlbCA9CisgICAgICAgICAgICAgICAgICAgIHsgbW9k
ZWwgfCB2aXNpYmlsaXR5ID0gdmlzaWJpbGl0eSB9CisgICAgICAgICAgICBpbgorICAgICAgICAg
ICAgICAgICggbmV3TW9kZWwsIHNhdmUgbW9kZWwgKQorCisKK2ZvY3VzVGFzayA6IFN0cmluZyAt
PiBDbWQgTXNnCitmb2N1c1Rhc2sgZWxlbWVudElkID0KKyAgICBUYXNrLnBlcmZvcm0gKFxfIC0+
IE5vT3ApIChcXyAtPiBOb09wKSAoRG9tLmZvY3VzIGVsZW1lbnRJZCkKKworCisKKy0tIFZJRVcK
KworCit2aWV3IDogTW9kZWwgLT4gSHRtbCBNc2cKK3ZpZXcgbW9kZWwgPQorICAgIGRpdgorICAg
ICAgICBbIGNsYXNzICJ0b2RvbXZjLXdyYXBwZXIiCisgICAgICAgICwgc3R5bGUgWyAoICJ2aXNp
YmlsaXR5IiwgImhpZGRlbiIgKSBdCisgICAgICAgIF0KKyAgICAgICAgWyBzZWN0aW9uCisgICAg
ICAgICAgICBbIGNsYXNzICJ0b2RvYXBwIiBdCisgICAgICAgICAgICBbIGxhenkgdGFza0VudHJ5
IG1vZGVsLmZpZWxkCisgICAgICAgICAgICAsIGxhenkyIHRhc2tMaXN0IG1vZGVsLnZpc2liaWxp
dHkgbW9kZWwudGFza3MKKyAgICAgICAgICAgICwgbGF6eTIgY29udHJvbHMgbW9kZWwudmlzaWJp
bGl0eSBtb2RlbC50YXNrcworICAgICAgICAgICAgXQorICAgICAgICAsIGluZm9Gb290ZXIKKyAg
ICAgICAgXQorCisKK3Rhc2tFbnRyeSA6IFN0cmluZyAtPiBIdG1sIE1zZwordGFza0VudHJ5IHRh
c2sgPQorICAgIGhlYWRlcgorICAgICAgICBbIGNsYXNzICJoZWFkZXIiIF0KKyAgICAgICAgWyBo
MSBbXSBbIHRleHQgInRvZG9zIiBdCisgICAgICAgICwgaW5wdXQKKyAgICAgICAgICAgIFsgY2xh
c3MgIm5ldy10b2RvIgorICAgICAgICAgICAgLCBwbGFjZWhvbGRlciAiV2hhdCBuZWVkcyB0byBi
ZSBkb25lPyIKKyAgICAgICAgICAgICwgYXV0b2ZvY3VzIFRydWUKKyAgICAgICAgICAgICwgdmFs
dWUgdGFzaworICAgICAgICAgICAgLCBuYW1lICJuZXdUb2RvIgorICAgICAgICAgICAgLCBvbklu
cHV0IFVwZGF0ZUZpZWxkCisgICAgICAgICAgICAsIFRvZG8uVGFzay5vbkZpbmlzaCBBZGQgTm9P
cAorICAgICAgICAgICAgXQorICAgICAgICAgICAgW10KKyAgICAgICAgXQorCisKK3Rhc2tMaXN0
IDogU3RyaW5nIC0+IExpc3QgVG9kby5UYXNrLk1vZGVsIC0+IEh0bWwgTXNnCit0YXNrTGlzdCB2
aXNpYmlsaXR5IHRhc2tzID0KKyAgICBsZXQKKyAgICAgICAgaXNWaXNpYmxlIHRvZG8gPQorICAg
ICAgICAgICAgY2FzZSB2aXNpYmlsaXR5IG9mCisgICAgICAgICAgICAgICAgIkNvbXBsZXRlZCIg
LT4KKyAgICAgICAgICAgICAgICAgICAgdG9kby5jb21wbGV0ZWQKKworICAgICAgICAgICAgICAg
ICJBY3RpdmUiIC0+CisgICAgICAgICAgICAgICAgICAgIG5vdCB0b2RvLmNvbXBsZXRlZAorCisg
ICAgICAgICAgICAgICAgLS0gIkFsbCIKKyAgICAgICAgICAgICAgICBfIC0+CisgICAgICAgICAg
ICAgICAgICAgIFRydWUKKworICAgICAgICBhbGxDb21wbGV0ZWQgPQorICAgICAgICAgICAgTGlz
dC5hbGwgLmNvbXBsZXRlZCB0YXNrcworCisgICAgICAgIGNzc1Zpc2liaWxpdHkgPQorICAgICAg
ICAgICAgaWYgTGlzdC5pc0VtcHR5IHRhc2tzIHRoZW4KKyAgICAgICAgICAgICAgICAiaGlkZGVu
IgorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICJ2aXNpYmxlIgorICAgIGluCisg
ICAgICAgIHNlY3Rpb24KKyAgICAgICAgICAgIFsgY2xhc3MgIm1haW4iCisgICAgICAgICAgICAs
IHN0eWxlIFsgKCAidmlzaWJpbGl0eSIsIGNzc1Zpc2liaWxpdHkgKSBdCisgICAgICAgICAgICBd
CisgICAgICAgICAgICBbIGlucHV0CisgICAgICAgICAgICAgICAgWyBjbGFzcyAidG9nZ2xlLWFs
bCIKKyAgICAgICAgICAgICAgICAsIHR5cGUnICJjaGVja2JveCIKKyAgICAgICAgICAgICAgICAs
IG5hbWUgInRvZ2dsZSIKKyAgICAgICAgICAgICAgICAsIGNoZWNrZWQgYWxsQ29tcGxldGVkCisg
ICAgICAgICAgICAgICAgLCBvbkNsaWNrIChDaGVja0FsbCAobm90IGFsbENvbXBsZXRlZCkpCisg
ICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgIFtdCisgICAgICAgICAgICAsIGxhYmVs
CisgICAgICAgICAgICAgICAgWyBmb3IgInRvZ2dsZS1hbGwiIF0KKyAgICAgICAgICAgICAgICBb
IHRleHQgIk1hcmsgYWxsIGFzIGNvbXBsZXRlIiBdCisgICAgICAgICAgICAsIHVsCisgICAgICAg
ICAgICAgICAgWyBjbGFzcyAidG9kby1saXN0IiBdCisgICAgICAgICAgICAgICAgKExpc3QubWFw
CisgICAgICAgICAgICAgICAgICAgIChcdGFzayAtPgorICAgICAgICAgICAgICAgICAgICAgICAg
bGV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0YXNrLmlkCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNr
VmlldyA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRvZG8uVGFzay52aWV3IHRh
c2sKKyAgICAgICAgICAgICAgICAgICAgICAgIGluCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgSHRtbC5BcHAubWFwIChcbXNnIC0+IFVwZGF0ZVRhc2sgKCBpZCwgbXNnICkpIHRhc2tWaWV3
CisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgKExpc3QuZmlsdGVy
IGlzVmlzaWJsZSB0YXNrcykKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBdCisKKwor
Y29udHJvbHMgOiBTdHJpbmcgLT4gTGlzdCBUb2RvLlRhc2suTW9kZWwgLT4gSHRtbCBNc2cKK2Nv
bnRyb2xzIHZpc2liaWxpdHkgdGFza3MgPQorICAgIGxldAorICAgICAgICB0YXNrc0NvbXBsZXRl
ZCA9CisgICAgICAgICAgICBMaXN0Lmxlbmd0aCAoTGlzdC5maWx0ZXIgLmNvbXBsZXRlZCB0YXNr
cykKKworICAgICAgICB0YXNrc0xlZnQgPQorICAgICAgICAgICAgTGlzdC5sZW5ndGggdGFza3Mg
LSB0YXNrc0NvbXBsZXRlZAorCisgICAgICAgIGl0ZW1fID0KKyAgICAgICAgICAgIGlmIHRhc2tz
TGVmdCA9PSAxIHRoZW4KKyAgICAgICAgICAgICAgICAiIGl0ZW0iCisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgIiBpdGVtcyIKKyAgICBpbgorICAgICAgICBmb290ZXIKKyAgICAg
ICAgICAgIFsgY2xhc3MgImZvb3RlciIKKyAgICAgICAgICAgICwgaGlkZGVuIChMaXN0LmlzRW1w
dHkgdGFza3MpCisgICAgICAgICAgICBdCisgICAgICAgICAgICBbIHNwYW4KKyAgICAgICAgICAg
ICAgICBbIGNsYXNzICJ0b2RvLWNvdW50IiBdCisgICAgICAgICAgICAgICAgWyBzdHJvbmcgW10g
WyB0ZXh0ICh0b1N0cmluZyB0YXNrc0xlZnQpIF0KKyAgICAgICAgICAgICAgICAsIHRleHQgKGl0
ZW1fICsrICIgbGVmdCIpCisgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgLCB1bAorICAg
ICAgICAgICAgICAgIFsgY2xhc3MgImZpbHRlcnMiIF0KKyAgICAgICAgICAgICAgICBbIHZpc2li
aWxpdHlTd2FwICIjLyIgIkFsbCIgdmlzaWJpbGl0eQorICAgICAgICAgICAgICAgICwgdGV4dCAi
ICIKKyAgICAgICAgICAgICAgICAsIHZpc2liaWxpdHlTd2FwICIjL2FjdGl2ZSIgIkFjdGl2ZSIg
dmlzaWJpbGl0eQorICAgICAgICAgICAgICAgICwgdGV4dCAiICIKKyAgICAgICAgICAgICAgICAs
IHZpc2liaWxpdHlTd2FwICIjL2NvbXBsZXRlZCIgIkNvbXBsZXRlZCIgdmlzaWJpbGl0eQorICAg
ICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICwgYnV0dG9uCisgICAgICAgICAgICAgICAgWyBj
bGFzcyAiY2xlYXItY29tcGxldGVkIgorICAgICAgICAgICAgICAgICwgaGlkZGVuICh0YXNrc0Nv
bXBsZXRlZCA9PSAwKQorICAgICAgICAgICAgICAgICwgb25DbGljayBEZWxldGVDb21wbGV0ZQor
ICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICBbIHRleHQgKCJDbGVhciBjb21wbGV0
ZWQgKCIgKysgdG9TdHJpbmcgdGFza3NDb21wbGV0ZWQgKysgIikiKSBdCisgICAgICAgICAgICBd
CisKKwordmlzaWJpbGl0eVN3YXAgOiBTdHJpbmcgLT4gU3RyaW5nIC0+IFN0cmluZyAtPiBIdG1s
IE1zZwordmlzaWJpbGl0eVN3YXAgdXJpIHZpc2liaWxpdHkgYWN0dWFsVmlzaWJpbGl0eSA9Cisg
ICAgbGV0CisgICAgICAgIGNsYXNzTmFtZSA9CisgICAgICAgICAgICBpZiB2aXNpYmlsaXR5ID09
IGFjdHVhbFZpc2liaWxpdHkgdGhlbgorICAgICAgICAgICAgICAgICJzZWxlY3RlZCIKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAiIgorICAgIGluCisgICAgICAgIGxpCisgICAg
ICAgICAgICBbIG9uQ2xpY2sgKENoYW5nZVZpc2liaWxpdHkgdmlzaWJpbGl0eSkgXQorICAgICAg
ICAgICAgWyBhIFsgY2xhc3MgY2xhc3NOYW1lLCBocmVmIHVyaSBdIFsgdGV4dCB2aXNpYmlsaXR5
IF0gXQorCisKK2luZm9Gb290ZXIgOiBIdG1sIG1zZworaW5mb0Zvb3RlciA9CisgICAgZm9vdGVy
CisgICAgICAgIFsgY2xhc3MgImluZm8iIF0KKyAgICAgICAgWyBwIFtdIFsgdGV4dCAiRG91Ymxl
LWNsaWNrIHRvIGVkaXQgYSB0b2RvIiBdCisgICAgICAgICwgcCBbXQorICAgICAgICAgICAgWyB0
ZXh0ICJXcml0dGVuIGJ5ICIKKyAgICAgICAgICAgICwgYSBbIGhyZWYgImh0dHBzOi8vZ2l0aHVi
LmNvbS9ldmFuY3oiIF0gWyB0ZXh0ICJFdmFuIEN6YXBsaWNraSIgXQorICAgICAgICAgICAgXQor
ICAgICAgICAsIHAgW10KKyAgICAgICAgICAgIFsgdGV4dCAiUGFydCBvZiAiCisgICAgICAgICAg
ICAsIGEgWyBocmVmICJodHRwOi8vdG9kb212Yy5jb20iIF0gWyB0ZXh0ICJUb2RvTVZDIiBdCisg
ICAgICAgICAgICBdCisgICAgICAgIF0KKworCisKKy0tIHdpcmUgdGhlIGVudGlyZSBhcHBsaWNh
dGlvbiB0b2dldGhlcgorCisKK21haW4gOiBQcm9ncmFtIEZsYWdzCittYWluID0KKyAgICBOYXZp
Z2F0aW9uLnByb2dyYW1XaXRoRmxhZ3MgdXJsUGFyc2VyCisgICAgICAgIHsgdXJsVXBkYXRlID0g
dXJsVXBkYXRlCisgICAgICAgICwgdmlldyA9IHZpZXcKKyAgICAgICAgLCBpbml0ID0gaW5pdAor
ICAgICAgICAsIHVwZGF0ZSA9IHVwZGF0ZQorICAgICAgICAsIHN1YnNjcmlwdGlvbnMgPSBzdWJz
Y3JpcHRpb25zCisgICAgICAgIH0KKworCisKKy0tIFVSTCBQQVJTRVJTIC0gY2hlY2sgb3V0IGV2
YW5jei91cmwtcGFyc2VyIGZvciBmYW5jaWVyIFVSTCBwYXJzaW5nCisKKwordG9VcmwgOiBTdHJp
bmcgLT4gU3RyaW5nCit0b1VybCB2aXNpYmlsaXR5ID0KKyAgICAiIy8iICsrIFN0cmluZy50b0xv
d2VyIHZpc2liaWxpdHkKKworCitmcm9tVXJsIDogU3RyaW5nIC0+IE1heWJlIFN0cmluZworZnJv
bVVybCBoYXNoID0KKyAgICBsZXQKKyAgICAgICAgY2xlYW5IYXNoID0KKyAgICAgICAgICAgIFN0
cmluZy5kcm9wTGVmdCAyIGhhc2gKKyAgICBpbgorICAgICAgICBpZiAoTGlzdC5tZW1iZXIgY2xl
YW5IYXNoIFsgImFsbCIsICJhY3RpdmUiLCAiY29tcGxldGVkIiBdKSA9PSBUcnVlIHRoZW4KKyAg
ICAgICAgICAgIEp1c3QgY2xlYW5IYXNoCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIE5vdGhp
bmcKKworCit1cmxQYXJzZXIgOiBQYXJzZXIgKE1heWJlIFN0cmluZykKK3VybFBhcnNlciA9Cisg
ICAgTmF2aWdhdGlvbi5tYWtlUGFyc2VyIChmcm9tVXJsIDw8IC5oYXNoKQorCisKK3stfCBUaGUg
VVJMIGlzIHR1cm5lZCBpbnRvIGEgTWF5YmUgdmFsdWUuIElmIHRoZSBVUkwgaXMgdmFsaWQsIHdl
IGp1c3QgdXBkYXRlCitvdXIgbW9kZWwgd2l0aCB0aGUgbmV3IHZpc2liaWxpdHkgc2V0dGluZ3Mu
IElmIGl0IGlzIG5vdCBhIHZhbGlkIFVSTCwKK3dlIHNldCB0aGUgdmlzaWJpbGl0eSBmaWx0ZXIg
dG8gc2hvdyBhbGwgdGFza3MuCistfQordXJsVXBkYXRlIDogTWF5YmUgU3RyaW5nIC0+IE1vZGVs
IC0+ICggTW9kZWwsIENtZCBNc2cgKQordXJsVXBkYXRlIHJlc3VsdCBtb2RlbCA9CisgICAgY2Fz
ZSByZXN1bHQgb2YKKyAgICAgICAgSnVzdCB2aXNpYmlsaXR5IC0+CisgICAgICAgICAgICB1cGRh
dGUgKENoYW5nZVZpc2liaWxpdHkgKFN0cmluZy5FeHRyYS50b1NlbnRlbmNlQ2FzZSB2aXNpYmls
aXR5KSkgbW9kZWwKKworICAgICAgICBOb3RoaW5nIC0+CisgICAgICAgICAgICB1cGRhdGUgKENo
YW5nZVZpc2liaWxpdHkgIkFsbCIpIG1vZGVsCisKKworaW5pdCA6IEZsYWdzIC0+IE1heWJlIFN0
cmluZyAtPiAoIE1vZGVsLCBDbWQgTXNnICkKK2luaXQgZmxhZ3MgdXJsID0KKyAgICB1cmxVcGRh
dGUgdXJsIChNYXliZS53aXRoRGVmYXVsdCBlbXB0eU1vZGVsIGZsYWdzKQorCisKKworLS0gaW50
ZXJhY3Rpb25zIHdpdGggbG9jYWxTdG9yYWdlCisKKworcG9ydCBzYXZlIDogTW9kZWwgLT4gQ21k
IG1zZworCisKK3N1YnNjcmlwdGlvbnMgOiBNb2RlbCAtPiBTdWIgTXNnCitzdWJzY3JpcHRpb25z
IG1vZGVsID0KKyAgICBTdWIubm9uZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9mdW5jdGlvbmFsLXByb2ctZXhhbXBsZXMvZWxtL1Rv
ZG8vVGFzay5lbG0gYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2Z1bmN0aW9uYWwtcHJvZy1leGFtcGxlcy9lbG0vVG9kby9UYXNrLmVsbQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5iMzVmNjE2M2RjY2QxZmMwZTBlODlhOGYzOWI5MGZlOGUxZWI0ODRhCi0tLSAvZGV2L251bGwK
KysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9mdW5j
dGlvbmFsLXByb2ctZXhhbXBsZXMvZWxtL1RvZG8vVGFzay5lbG0KQEAgLTAsMCArMSwxNTIgQEAK
K21vZHVsZSBUb2RvLlRhc2sgZXhwb3NpbmcgKC4uKQorCitpbXBvcnQgSHRtbCBleHBvc2luZyAo
Li4pCitpbXBvcnQgSHRtbC5BdHRyaWJ1dGVzIGV4cG9zaW5nICguLikKK2ltcG9ydCBIdG1sLkV2
ZW50cyBleHBvc2luZyAoLi4pCitpbXBvcnQgSnNvbi5EZWNvZGUKK2ltcG9ydCBTdHJpbmcKKwor
CistLSBNT0RFTAorCisKK3R5cGUgYWxpYXMgTW9kZWwgPQorICAgIHsgZGVzY3JpcHRpb24gOiBT
dHJpbmcKKyAgICAsIGNvbXBsZXRlZCA6IEJvb2wKKyAgICAsIGVkaXRzIDogTWF5YmUgU3RyaW5n
CisgICAgLCBpZCA6IEludAorICAgIH0KKworCitpbml0IDogU3RyaW5nIC0+IEludCAtPiBNb2Rl
bAoraW5pdCBkZXNjIGlkID0KKyAgICB7IGRlc2NyaXB0aW9uID0gZGVzYworICAgICwgY29tcGxl
dGVkID0gRmFsc2UKKyAgICAsIGVkaXRzID0gTm90aGluZworICAgICwgaWQgPSBpZAorICAgIH0K
KworCisKKy0tIFVQREFURQorCisKK3R5cGUgTXNnCisgICAgPSBGb2N1cyBTdHJpbmcKKyAgICB8
IEVkaXQgU3RyaW5nCisgICAgfCBDYW5jZWwKKyAgICB8IENvbW1pdAorICAgIHwgQ29tcGxldGVk
IEJvb2wKKyAgICB8IERlbGV0ZQorCisKK3VwZGF0ZSA6IE1zZyAtPiBNb2RlbCAtPiBNYXliZSBN
b2RlbAordXBkYXRlIG1zZyBtb2RlbCA9CisgICAgY2FzZSBtc2cgb2YKKyAgICAgICAgRm9jdXMg
ZWxlbWVudElkIC0+CisgICAgICAgICAgICBKdXN0IHsgbW9kZWwgfCBlZGl0cyA9IEp1c3QgbW9k
ZWwuZGVzY3JpcHRpb24gfQorCisgICAgICAgIEVkaXQgZGVzY3JpcHRpb24gLT4KKyAgICAgICAg
ICAgIEp1c3QgeyBtb2RlbCB8IGVkaXRzID0gSnVzdCBkZXNjcmlwdGlvbiB9CisKKyAgICAgICAg
Q2FuY2VsIC0+CisgICAgICAgICAgICBKdXN0IHsgbW9kZWwgfCBlZGl0cyA9IE5vdGhpbmcgfQor
CisgICAgICAgIENvbW1pdCAtPgorICAgICAgICAgICAgY2FzZSBtb2RlbC5lZGl0cyBvZgorICAg
ICAgICAgICAgICAgIE5vdGhpbmcgLT4KKyAgICAgICAgICAgICAgICAgICAgSnVzdCBtb2RlbAor
CisgICAgICAgICAgICAgICAgSnVzdCByYXdEZXNjcmlwdGlvbiAtPgorICAgICAgICAgICAgICAg
ICAgICBsZXQKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uID0KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBTdHJpbmcudHJpbSByYXdEZXNjcmlwdGlvbgorICAgICAgICAg
ICAgICAgICAgICBpbgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLmlzRW1wdHkg
ZGVzY3JpcHRpb24gdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdGhpbmcKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBK
dXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbW9kZWwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgZWRpdHMgPSBOb3RoaW5nCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAsIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgIENvbXBsZXRlZCBib29sIC0+
CisgICAgICAgICAgICBKdXN0IHsgbW9kZWwgfCBjb21wbGV0ZWQgPSBib29sIH0KKworICAgICAg
ICBEZWxldGUgLT4KKyAgICAgICAgICAgIE5vdGhpbmcKKworCisKKy0tIFZJRVcKKworCit2aWV3
IDogTW9kZWwgLT4gSHRtbCBNc2cKK3ZpZXcgbW9kZWwgPQorICAgIGxldAorICAgICAgICBjbGFz
c05hbWUgPQorICAgICAgICAgICAgKGlmIG1vZGVsLmNvbXBsZXRlZCB0aGVuCisgICAgICAgICAg
ICAgICAgImNvbXBsZXRlZCAiCisgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICIi
CisgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgKysgY2FzZSBtb2RlbC5lZGl0cyBvZgor
ICAgICAgICAgICAgICAgICAgICBKdXN0IF8gLT4KKyAgICAgICAgICAgICAgICAgICAgICAgICJl
ZGl0aW5nIgorCisgICAgICAgICAgICAgICAgICAgIE5vdGhpbmcgLT4KKyAgICAgICAgICAgICAg
ICAgICAgICAgICIiCisKKyAgICAgICAgZGVzY3JpcHRpb24gPQorICAgICAgICAgICAgTWF5YmUu
d2l0aERlZmF1bHQgbW9kZWwuZGVzY3JpcHRpb24gbW9kZWwuZWRpdHMKKworICAgICAgICBlbGVt
ZW50SWQgPQorICAgICAgICAgICAgInRvZG8tIiArKyB0b1N0cmluZyBtb2RlbC5pZAorICAgIGlu
CisgICAgICAgIGxpCisgICAgICAgICAgICBbIGNsYXNzIGNsYXNzTmFtZSBdCisgICAgICAgICAg
ICBbIGRpdgorICAgICAgICAgICAgICAgIFsgY2xhc3MgInZpZXciIF0KKyAgICAgICAgICAgICAg
ICBbIGlucHV0CisgICAgICAgICAgICAgICAgICAgIFsgY2xhc3MgInRvZ2dsZSIKKyAgICAgICAg
ICAgICAgICAgICAgLCB0eXBlJyAiY2hlY2tib3giCisgICAgICAgICAgICAgICAgICAgICwgY2hl
Y2tlZCBtb2RlbC5jb21wbGV0ZWQKKyAgICAgICAgICAgICAgICAgICAgLCBvbkNsaWNrIChDb21w
bGV0ZWQgKG5vdCBtb2RlbC5jb21wbGV0ZWQpKQorICAgICAgICAgICAgICAgICAgICBdCisgICAg
ICAgICAgICAgICAgICAgIFtdCisgICAgICAgICAgICAgICAgLCBsYWJlbAorICAgICAgICAgICAg
ICAgICAgICBbIG9uRG91YmxlQ2xpY2sgKEZvY3VzIGVsZW1lbnRJZCkgXQorICAgICAgICAgICAg
ICAgICAgICBbIHRleHQgZGVzY3JpcHRpb24gXQorICAgICAgICAgICAgICAgICwgYnV0dG9uCisg
ICAgICAgICAgICAgICAgICAgIFsgY2xhc3MgImRlc3Ryb3kiCisgICAgICAgICAgICAgICAgICAg
ICwgb25DbGljayBEZWxldGUKKyAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAg
ICAgICBbXQorICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICwgaW5wdXQKKyAgICAgICAg
ICAgICAgICBbIGNsYXNzICJlZGl0IgorICAgICAgICAgICAgICAgICwgdmFsdWUgZGVzY3JpcHRp
b24KKyAgICAgICAgICAgICAgICAsIG5hbWUgInRpdGxlIgorICAgICAgICAgICAgICAgICwgaWQg
KGVsZW1lbnRJZCkKKyAgICAgICAgICAgICAgICAsIG9uSW5wdXQgRWRpdAorICAgICAgICAgICAg
ICAgICwgb25CbHVyIENvbW1pdAorICAgICAgICAgICAgICAgICwgb25GaW5pc2ggQ29tbWl0IENh
bmNlbAorICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICBbXQorICAgICAgICAgICAg
XQorCisKK29uRmluaXNoIDogbXNnIC0+IG1zZyAtPiBBdHRyaWJ1dGUgbXNnCitvbkZpbmlzaCBl
bnRlck1lc3NhZ2UgZXNjYXBlTWVzc2FnZSA9CisgICAgbGV0CisgICAgICAgIHNlbGVjdCBrZXkg
PQorICAgICAgICAgICAgY2FzZSBrZXkgb2YKKyAgICAgICAgICAgICAgICAxMyAtPgorICAgICAg
ICAgICAgICAgICAgICBlbnRlck1lc3NhZ2UKKworICAgICAgICAgICAgICAgIF8gLT4KKyAgICAg
ICAgICAgICAgICAgICAgLS0gTm90IGEgJ2ZpbmlzaCcga2V5LCBzdWNoIGFzIEVOVEVSIG9yIEVT
Q0FQRQorICAgICAgICAgICAgICAgICAgICBlc2NhcGVNZXNzYWdlCisgICAgaW4KKyAgICAgICAg
b24gImtleWRvd24iIChKc29uLkRlY29kZS5tYXAgc2VsZWN0IGtleUNvZGUpCmRpZmYgLS1naXQg
YS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Z1bmN0aW9u
YWwtcHJvZy1leGFtcGxlcy9lbG0vZWxtLXBhY2thZ2UuanNvbiBiL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZnVuY3Rpb25hbC1wcm9nLWV4YW1wbGVzL2Vs
bS9lbG0tcGFja2FnZS5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVkNWE3YTIwZDFmNDAwMGYxNWNkNDJlYWQ5
ZjE3ZTE5ODM0N2RkZTAKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Z1bmN0aW9uYWwtcHJvZy1leGFtcGxlcy9lbG0vZWxt
LXBhY2thZ2UuanNvbgpAQCAtMCwwICsxLDE4IEBACit7CisgICAgInZlcnNpb24iOiAiMS4wLjAi
LAorICAgICJzdW1tYXJ5IjogIlRvZG9NVkMgY3JlYXRlZCB3aXRoIEVsbSBhbmQgZWxtLWh0bWwi
LAorICAgICJyZXBvc2l0b3J5IjogImh0dHBzOi8vZ2l0aHViLmNvbS9ldmFuY3ovZWxtLXRvZG9t
dmMuZ2l0IiwKKyAgICAibGljZW5zZSI6ICJCU0QzIiwKKyAgICAic291cmNlLWRpcmVjdG9yaWVz
IjogWworICAgICAgICAiLiIKKyAgICBdLAorICAgICJleHBvc2VkLW1vZHVsZXMiOiBbXSwKKyAg
ICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAiZWxtLWNvbW11bml0eS9zdHJpbmctZXh0cmEi
OiAiMS4wLjIgPD0gdiA8IDIuMC4wIiwKKyAgICAgICAgImVsbS1sYW5nL2NvcmUiOiAiNC4wLjUg
PD0gdiA8IDUuMC4wIiwKKyAgICAgICAgImVsbS1sYW5nL2RvbSI6ICIxLjEuMCA8PSB2IDwgMi4w
LjAiLAorICAgICAgICAiZWxtLWxhbmcvaHRtbCI6ICIxLjEuMCA8PSB2IDwgMi4wLjAiLAorICAg
ICAgICAiZWxtLWxhbmcvbmF2aWdhdGlvbiI6ICIxLjAuMCA8PSB2IDwgMi4wLjAiCisgICAgfSwK
KyAgICAiZWxtLXZlcnNpb24iOiAiMC4xNy4xIDw9IHYgPCAwLjE4LjAiCit9CmRpZmYgLS1naXQg
YS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Z1bmN0aW9u
YWwtcHJvZy1leGFtcGxlcy9lbG0vaW5kZXguaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZnVuY3Rpb25hbC1wcm9nLWV4YW1wbGVzL2VsbS9pbmRl
eC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjk1MTRjNGNkOGEwNjgxZjIxNjMxNThkOGNmYTI5NmFiNTg5ODc3
Y2YKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2Z1bmN0aW9uYWwtcHJvZy1leGFtcGxlcy9lbG0vaW5kZXguaHRtbApAQCAt
MCwwICsxLDMyIEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sIGxhbmc9ImVuIiBkYXRhLWZyYW1l
d29yaz0iZWxtIj4KKzxoZWFkPgorICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKyAgICA8dGl0
bGU+RWxtIOKAoiBUb2RvTVZDPC90aXRsZT4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Im5vZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1vbi9iYXNlLmNzcyI+CisgICAgPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSJub2RlX21vZHVsZXMvdG9kb212Yy1hcHAtY3NzL2luZGV4LmNz
cyI+CisgICAgPHN0eWxlPgorICAgICAgICBib2R5IHsKKyAgICAgICAgICAgIHdpZHRoOiBhdXRv
OworICAgICAgICB9CisgICAgICAgIC50b2RvbXZjLXdyYXBwZXIgeworICAgICAgICAgICAgdmlz
aWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50OworICAgICAgICB9CisgICAgPC9zdHlsZT4KKzwv
aGVhZD4KKworPGJvZHk+Cis8c2NyaXB0IHNyYz0iYnVpbGQvZWxtLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQ+CisgICAgKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgLy8gdmFyIHJlc3VsdCA9IGxvY2Fs
U3RvcmFnZS5nZXRJdGVtKCdlbG0tdG9kby1tb2RlbCcpOworICAgICAgICAvLyB2YXIgc2F2ZWRN
b2RlbCA9IHJlc3VsdCA/IEpTT04ucGFyc2UocmVzdWx0KSA6IG51bGw7CisgICAgICAgIHZhciBz
YXZlZE1vZGVsID0gbnVsbDsKKyAgICAgICAgdmFyIHRvZG9tdmMgPSBFbG0uVG9kby5mdWxsc2Ny
ZWVuKHNhdmVkTW9kZWwpOworICAgICAgICAvLyB0b2RvbXZjLnBvcnRzLnNhdmUuc3Vic2NyaWJl
KGZ1bmN0aW9uIChtb2RlbCkgeworICAgICAgICAvLyAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2Vs
bS10b2RvLW1vZGVsJywgSlNPTi5zdHJpbmdpZnkobW9kZWwpKTsKKyAgICAgICAgLy8gfSk7Cisg
ICAgfSgpKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9mdW5jdGlvbmFsLXByb2ct
ZXhhbXBsZXMvZWxtL25vZGVfbW9kdWxlcy90b2RvbXZjLWFwcC1jc3MvaW5kZXguY3NzIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9mdW5jdGlvbmFsLXBy
b2ctZXhhbXBsZXMvZWxtL25vZGVfbW9kdWxlcy90b2RvbXZjLWFwcC1jc3MvaW5kZXguY3NzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjEwZTNkMmY2Yjc5M2Q0MmNiNGUyMGFlZWE0OGEzYjVjZWI0ODZlZTUKLS0tIC9k
ZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2Z1bmN0aW9uYWwtcHJvZy1leGFtcGxlcy9lbG0vbm9kZV9tb2R1bGVzL3RvZG9tdmMtYXBw
LWNzcy9pbmRleC5jc3MKQEAgLTAsMCArMSwzNzAgQEAKK2h0bWwsCitib2R5IHsKKyAgICBtYXJn
aW46IDA7CisgICAgcGFkZGluZzogMDsKK30KKworYnV0dG9uIHsKKyAgICBtYXJnaW46IDA7Cisg
ICAgcGFkZGluZzogMDsKKyAgICBib3JkZXI6IDA7CisgICAgYmFja2dyb3VuZDogbm9uZTsKKyAg
ICBmb250LXNpemU6IDEwMCU7CisgICAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOworICAgIGZv
bnQtZmFtaWx5OiBpbmhlcml0OworICAgIGZvbnQtd2VpZ2h0OiBpbmhlcml0OworICAgIGNvbG9y
OiBpbmhlcml0OworICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKKyAgICBhcHBlYXJhbmNl
OiBub25lOworICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOworICAgIC1t
b3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7Cit9CisKK2JvZHkgeworICAgIGZvbnQ6
IDE0cHggJ0hlbHZldGljYSBOZXVlJywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsKKyAg
ICBsaW5lLWhlaWdodDogMS40ZW07CisgICAgYmFja2dyb3VuZDogI2Y1ZjVmNTsKKyAgICBjb2xv
cjogIzRkNGQ0ZDsKKyAgICBtaW4td2lkdGg6IDIzMHB4OworICAgIG1heC13aWR0aDogNTUwcHg7
CisgICAgbWFyZ2luOiAwIGF1dG87CisgICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFs
aWFzZWQ7CisgICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTsKKyAgICBmb250
LXdlaWdodDogMzAwOworfQorCis6Zm9jdXMgeworICAgIG91dGxpbmU6IDA7Cit9CisKKy5oaWRk
ZW4geworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKKy50b2RvYXBwIHsKKyAgICBiYWNrZ3JvdW5k
OiAjZmZmOworICAgIG1hcmdpbjogMTMwcHggMCA0MHB4IDA7CisgICAgcG9zaXRpb246IHJlbGF0
aXZlOworICAgIGJveC1zaGFkb3c6IDAgMnB4IDRweCAwIHJnYmEoMCwgMCwgMCwgMC4yKSwKKyAg
ICAgICAgICAgICAgICAwIDI1cHggNTBweCAwIHJnYmEoMCwgMCwgMCwgMC4xKTsKK30KKworLnRv
ZG9hcHAgaW5wdXQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIgeworICAgIGZvbnQtc3R5bGU6
IGl0YWxpYzsKKyAgICBmb250LXdlaWdodDogMzAwOworICAgIGNvbG9yOiAjZTZlNmU2OworfQor
CisudG9kb2FwcCBpbnB1dDo6LW1vei1wbGFjZWhvbGRlciB7CisgICAgZm9udC1zdHlsZTogaXRh
bGljOworICAgIGZvbnQtd2VpZ2h0OiAzMDA7CisgICAgY29sb3I6ICNlNmU2ZTY7Cit9CisKKy50
b2RvYXBwIGlucHV0OjppbnB1dC1wbGFjZWhvbGRlciB7CisgICAgZm9udC1zdHlsZTogaXRhbGlj
OworICAgIGZvbnQtd2VpZ2h0OiAzMDA7CisgICAgY29sb3I6ICNlNmU2ZTY7Cit9CisKKy50b2Rv
YXBwIGgxIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiAtMTU1cHg7CisgICAg
d2lkdGg6IDEwMCU7CisgICAgZm9udC1zaXplOiAxMDBweDsKKyAgICBmb250LXdlaWdodDogMTAw
OworICAgIHRleHQtYWxpZ246IGNlbnRlcjsKKyAgICBjb2xvcjogcmdiYSgxNzUsIDQ3LCA0Nywg
MC4xNSk7CisgICAgLXdlYmtpdC10ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5Owor
ICAgIC1tb3otdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTsKKyAgICB0ZXh0LXJl
bmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5OworfQorCisubmV3LXRvZG8sCisuZWRpdCB7Cisg
ICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgIG1hcmdpbjogMDsKKyAgICB3aWR0aDogMTAwJTsK
KyAgICBmb250LXNpemU6IDI0cHg7CisgICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7CisgICAgZm9u
dC13ZWlnaHQ6IGluaGVyaXQ7CisgICAgbGluZS1oZWlnaHQ6IDEuNGVtOworICAgIGJvcmRlcjog
MDsKKyAgICBjb2xvcjogaW5oZXJpdDsKKyAgICBwYWRkaW5nOiA2cHg7CisgICAgYm9yZGVyOiAx
cHggc29saWQgIzk5OTsKKyAgICBib3gtc2hhZG93OiBpbnNldCAwIC0xcHggNXB4IDAgcmdiYSgw
LCAwLCAwLCAwLjIpOworICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CisgICAgLXdlYmtpdC1m
b250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CisgICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6
IGdyYXlzY2FsZTsKK30KKworLm5ldy10b2RvIHsKKyAgICBwYWRkaW5nOiAxNnB4IDE2cHggMTZw
eCA2MHB4OworICAgIGJvcmRlcjogbm9uZTsKKyAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAs
IDAuMDAzKTsKKyAgICBib3gtc2hhZG93OiBpbnNldCAwIC0ycHggMXB4IHJnYmEoMCwwLDAsMC4w
Myk7Cit9CisKKy5tYWluIHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgei1pbmRleDog
MjsKKyAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2U2ZTZlNjsKK30KKworbGFiZWxbZm9yPSd0
b2dnbGUtYWxsJ10geworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKKy50b2dnbGUtYWxsIHsKKyAg
ICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiAtNTVweDsKKyAgICBsZWZ0OiAtMTJweDsK
KyAgICB3aWR0aDogNjBweDsKKyAgICBoZWlnaHQ6IDM0cHg7CisgICAgdGV4dC1hbGlnbjogY2Vu
dGVyOworICAgIGJvcmRlcjogbm9uZTsgLyogTW9iaWxlIFNhZmFyaSAqLworfQorCisudG9nZ2xl
LWFsbDpiZWZvcmUgeworICAgIGNvbnRlbnQ6ICfina8nOworICAgIGZvbnQtc2l6ZTogMjJweDsK
KyAgICBjb2xvcjogI2U2ZTZlNjsKKyAgICBwYWRkaW5nOiAxMHB4IDI3cHggMTBweCAyN3B4Owor
fQorCisudG9nZ2xlLWFsbDpjaGVja2VkOmJlZm9yZSB7CisgICAgY29sb3I6ICM3MzczNzM7Cit9
CisKKy50b2RvLWxpc3QgeworICAgIG1hcmdpbjogMDsKKyAgICBwYWRkaW5nOiAwOworICAgIGxp
c3Qtc3R5bGU6IG5vbmU7Cit9CisKKy50b2RvLWxpc3QgbGkgeworICAgIHBvc2l0aW9uOiByZWxh
dGl2ZTsKKyAgICBmb250LXNpemU6IDI0cHg7CisgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlk
ICNlZGVkZWQ7Cit9CisKKy50b2RvLWxpc3QgbGk6bGFzdC1jaGlsZCB7CisgICAgYm9yZGVyLWJv
dHRvbTogbm9uZTsKK30KKworLnRvZG8tbGlzdCBsaS5lZGl0aW5nIHsKKyAgICBib3JkZXItYm90
dG9tOiBub25lOworICAgIHBhZGRpbmc6IDA7Cit9CisKKy50b2RvLWxpc3QgbGkuZWRpdGluZyAu
ZWRpdCB7CisgICAgZGlzcGxheTogYmxvY2s7CisgICAgd2lkdGg6IDUwNnB4OworICAgIHBhZGRp
bmc6IDEycHggMTZweDsKKyAgICBtYXJnaW46IDAgMCAwIDQzcHg7Cit9CisKKy50b2RvLWxpc3Qg
bGkuZWRpdGluZyAudmlldyB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKworLnRvZG8tbGlzdCBs
aSAudG9nZ2xlIHsKKyAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CisgICAgd2lkdGg6IDQwcHg7Cisg
ICAgLyogYXV0bywgc2luY2Ugbm9uLVdlYktpdCBicm93c2VycyBkb2Vzbid0IHN1cHBvcnQgaW5w
dXQgc3R5bGluZyAqLworICAgIGhlaWdodDogYXV0bzsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7
CisgICAgdG9wOiAwOworICAgIGJvdHRvbTogMDsKKyAgICBtYXJnaW46IGF1dG8gMDsKKyAgICBi
b3JkZXI6IG5vbmU7IC8qIE1vYmlsZSBTYWZhcmkgKi8KKyAgICAtd2Via2l0LWFwcGVhcmFuY2U6
IG5vbmU7CisgICAgYXBwZWFyYW5jZTogbm9uZTsKK30KKworLnRvZG8tbGlzdCBsaSAudG9nZ2xl
OmFmdGVyIHsKKyAgICBjb250ZW50OiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iNDAiIGhlaWdodD0iNDAi
IHZpZXdCb3g9Ii0xMCAtMTggMTAwIDEzNSI+PGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgcj0iNTAi
IGZpbGw9Im5vbmUiIHN0cm9rZT0iI2VkZWRlZCIgc3Ryb2tlLXdpZHRoPSIzIi8+PC9zdmc+Jyk7
Cit9CisKKy50b2RvLWxpc3QgbGkgLnRvZ2dsZTpjaGVja2VkOmFmdGVyIHsKKyAgICBjb250ZW50
OiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9Ii0xMCAtMTggMTAw
IDEzNSI+PGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgcj0iNTAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
I2JkZGFkNSIgc3Ryb2tlLXdpZHRoPSIzIi8+PHBhdGggZmlsbD0iIzVkYzJhZiIgZD0iTTcyIDI1
TDQyIDcxIDI3IDU2bC00IDQgMjAgMjAgMzQtNTJ6Ii8+PC9zdmc+Jyk7Cit9CisKKy50b2RvLWxp
c3QgbGkgbGFiZWwgeworICAgIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDsKKyAgICBwYWRkaW5nOiAx
NXB4IDYwcHggMTVweCAxNXB4OworICAgIG1hcmdpbi1sZWZ0OiA0NXB4OworICAgIGRpc3BsYXk6
IGJsb2NrOworICAgIGxpbmUtaGVpZ2h0OiAxLjI7CisgICAgdHJhbnNpdGlvbjogY29sb3IgMC40
czsKK30KKworLnRvZG8tbGlzdCBsaS5jb21wbGV0ZWQgbGFiZWwgeworICAgIGNvbG9yOiAjZDlk
OWQ5OworICAgIHRleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdoOworfQorCisudG9kby1saXN0
IGxpIC5kZXN0cm95IHsKKyAgICBkaXNwbGF5OiBub25lOworICAgIHBvc2l0aW9uOiBhYnNvbHV0
ZTsKKyAgICB0b3A6IDA7CisgICAgcmlnaHQ6IDEwcHg7CisgICAgYm90dG9tOiAwOworICAgIHdp
ZHRoOiA0MHB4OworICAgIGhlaWdodDogNDBweDsKKyAgICBtYXJnaW46IGF1dG8gMDsKKyAgICBm
b250LXNpemU6IDMwcHg7CisgICAgY29sb3I6ICNjYzlhOWE7CisgICAgbWFyZ2luLWJvdHRvbTog
MTFweDsKKyAgICB0cmFuc2l0aW9uOiBjb2xvciAwLjJzIGVhc2Utb3V0OworfQorCisudG9kby1s
aXN0IGxpIC5kZXN0cm95OmhvdmVyIHsKKyAgICBjb2xvcjogI2FmNWI1ZTsKK30KKworLnRvZG8t
bGlzdCBsaSAuZGVzdHJveTphZnRlciB7CisgICAgY29udGVudDogJ8OXJzsKK30KKworLnRvZG8t
bGlzdCBsaTpob3ZlciAuZGVzdHJveSB7CisgICAgZGlzcGxheTogYmxvY2s7Cit9CisKKy50b2Rv
LWxpc3QgbGkgLmVkaXQgeworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKKy50b2RvLWxpc3QgbGku
ZWRpdGluZzpsYXN0LWNoaWxkIHsKKyAgICBtYXJnaW4tYm90dG9tOiAtMXB4OworfQorCisuZm9v
dGVyIHsKKyAgICBjb2xvcjogIzc3NzsKKyAgICBwYWRkaW5nOiAxMHB4IDE1cHg7CisgICAgaGVp
Z2h0OiAyMHB4OworICAgIHRleHQtYWxpZ246IGNlbnRlcjsKKyAgICBib3JkZXItdG9wOiAxcHgg
c29saWQgI2U2ZTZlNjsKK30KKworLmZvb3RlcjpiZWZvcmUgeworICAgIGNvbnRlbnQ6ICcnOwor
ICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICByaWdodDogMDsKKyAgICBib3R0b206IDA7Cisg
ICAgbGVmdDogMDsKKyAgICBoZWlnaHQ6IDUwcHg7CisgICAgb3ZlcmZsb3c6IGhpZGRlbjsKKyAg
ICBib3gtc2hhZG93OiAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjIpLAorICAgICAgICAgICAg
ICAgIDAgOHB4IDAgLTNweCAjZjZmNmY2LAorICAgICAgICAgICAgICAgIDAgOXB4IDFweCAtM3B4
IHJnYmEoMCwgMCwgMCwgMC4yKSwKKyAgICAgICAgICAgICAgICAwIDE2cHggMCAtNnB4ICNmNmY2
ZjYsCisgICAgICAgICAgICAgICAgMCAxN3B4IDJweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKTsK
K30KKworLnRvZG8tY291bnQgeworICAgIGZsb2F0OiBsZWZ0OworICAgIHRleHQtYWxpZ246IGxl
ZnQ7Cit9CisKKy50b2RvLWNvdW50IHN0cm9uZyB7CisgICAgZm9udC13ZWlnaHQ6IDMwMDsKK30K
KworLmZpbHRlcnMgeworICAgIG1hcmdpbjogMDsKKyAgICBwYWRkaW5nOiAwOworICAgIGxpc3Qt
c3R5bGU6IG5vbmU7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHJpZ2h0OiAwOworICAg
IGxlZnQ6IDA7Cit9CisKKy5maWx0ZXJzIGxpIHsKKyAgICBkaXNwbGF5OiBpbmxpbmU7Cit9CisK
Ky5maWx0ZXJzIGxpIGEgeworICAgIGNvbG9yOiBpbmhlcml0OworICAgIG1hcmdpbjogM3B4Owor
ICAgIHBhZGRpbmc6IDNweCA3cHg7CisgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOworICAgIGJv
cmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50OworICAgIGJvcmRlci1yYWRpdXM6IDNweDsKK30K
KworLmZpbHRlcnMgbGkgYTpob3ZlciB7CisgICAgYm9yZGVyLWNvbG9yOiByZ2JhKDE3NSwgNDcs
IDQ3LCAwLjEpOworfQorCisuZmlsdGVycyBsaSBhLnNlbGVjdGVkIHsKKyAgICBib3JkZXItY29s
b3I6IHJnYmEoMTc1LCA0NywgNDcsIDAuMik7Cit9CisKKy5jbGVhci1jb21wbGV0ZWQsCitodG1s
IC5jbGVhci1jb21wbGV0ZWQ6YWN0aXZlIHsKKyAgICBmbG9hdDogcmlnaHQ7CisgICAgcG9zaXRp
b246IHJlbGF0aXZlOworICAgIGxpbmUtaGVpZ2h0OiAyMHB4OworICAgIHRleHQtZGVjb3JhdGlv
bjogbm9uZTsKKyAgICBjdXJzb3I6IHBvaW50ZXI7Cit9CisKKy5jbGVhci1jb21wbGV0ZWQ6aG92
ZXIgeworICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOworfQorCisuaW5mbyB7CisgICAg
bWFyZ2luOiA2NXB4IGF1dG8gMDsKKyAgICBjb2xvcjogI2JmYmZiZjsKKyAgICBmb250LXNpemU6
IDEwcHg7CisgICAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUp
OworICAgIHRleHQtYWxpZ246IGNlbnRlcjsKK30KKworLmluZm8gcCB7CisgICAgbGluZS1oZWln
aHQ6IDE7Cit9CisKKy5pbmZvIGEgeworICAgIGNvbG9yOiBpbmhlcml0OworICAgIHRleHQtZGVj
b3JhdGlvbjogbm9uZTsKKyAgICBmb250LXdlaWdodDogNDAwOworfQorCisuaW5mbyBhOmhvdmVy
IHsKKyAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKK30KKworLyoKKyAgICBIYWNrIHRv
IHJlbW92ZSBiYWNrZ3JvdW5kIGZyb20gTW9iaWxlIFNhZmFyaS4KKyAgICBDYW4ndCB1c2UgaXQg
Z2xvYmFsbHkgc2luY2UgaXQgZGVzdHJveXMgY2hlY2tib3hlcyBpbiBGaXJlZm94CisqLworQG1l
ZGlhIHNjcmVlbiBhbmQgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzowKSB7CisgICAg
LnRvZ2dsZS1hbGwsCisgICAgLnRvZG8tbGlzdCBsaSAudG9nZ2xlIHsKKyAgICAgICAgYmFja2dy
b3VuZDogbm9uZTsKKyAgICB9CisKKyAgICAudG9kby1saXN0IGxpIC50b2dnbGUgeworICAgICAg
ICBoZWlnaHQ6IDQwcHg7CisgICAgfQorCisgICAgLnRvZ2dsZS1hbGwgeworICAgICAgICAtd2Vi
a2l0LXRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsKKyAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUo
OTBkZWcpOworICAgICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CisgICAgICAgIGFwcGVh
cmFuY2U6IG5vbmU7CisgICAgfQorfQorCitAbWVkaWEgKG1heC13aWR0aDogNDMwcHgpIHsKKyAg
ICAuZm9vdGVyIHsKKyAgICAgICAgaGVpZ2h0OiA1MHB4OworICAgIH0KKworICAgIC5maWx0ZXJz
IHsKKyAgICAgICAgYm90dG9tOiAxMHB4OworICAgIH0KK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZnVuY3Rpb25hbC1wcm9nLWV4
YW1wbGVzL2VsbS9ub2RlX21vZHVsZXMvdG9kb212Yy1jb21tb24vYmFzZS5jc3MgYi9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Z1bmN0aW9uYWwtcHJvZy1l
eGFtcGxlcy9lbG0vbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jhc2UuY3NzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMjVkM2M4NGFjNmM2YWVmMjZiOTY4M2EyYmMxMGM2MWY5NjBjOGYKLS0tIC9kZXYvbnVs
bAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Z1
bmN0aW9uYWwtcHJvZy1leGFtcGxlcy9lbG0vbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jh
c2UuY3NzCkBAIC0wLDAgKzEsMTQxIEBACitociB7CisgICAgbWFyZ2luOiAyMHB4IDA7CisgICAg
Ym9yZGVyOiAwOworICAgIGJvcmRlci10b3A6IDFweCBkYXNoZWQgI2M1YzVjNTsKKyAgICBib3Jk
ZXItYm90dG9tOiAxcHggZGFzaGVkICNmN2Y3Zjc7Cit9CisKKy5sZWFybiBhIHsKKyAgICBmb250
LXdlaWdodDogbm9ybWFsOworICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKKyAgICBjb2xvcjog
I2I4M2Y0NTsKK30KKworLmxlYXJuIGE6aG92ZXIgeworICAgIHRleHQtZGVjb3JhdGlvbjogdW5k
ZXJsaW5lOworICAgIGNvbG9yOiAjNzg3ZTdlOworfQorCisubGVhcm4gaDMsCisubGVhcm4gaDQs
CisubGVhcm4gaDUgeworICAgIG1hcmdpbjogMTBweCAwOworICAgIGZvbnQtd2VpZ2h0OiA1MDA7
CisgICAgbGluZS1oZWlnaHQ6IDEuMjsKKyAgICBjb2xvcjogIzAwMDsKK30KKworLmxlYXJuIGgz
IHsKKyAgICBmb250LXNpemU6IDI0cHg7Cit9CisKKy5sZWFybiBoNCB7CisgICAgZm9udC1zaXpl
OiAxOHB4OworfQorCisubGVhcm4gaDUgeworICAgIG1hcmdpbi1ib3R0b206IDA7CisgICAgZm9u
dC1zaXplOiAxNHB4OworfQorCisubGVhcm4gdWwgeworICAgIHBhZGRpbmc6IDA7CisgICAgbWFy
Z2luOiAwIDAgMzBweCAyNXB4OworfQorCisubGVhcm4gbGkgeworICAgIGxpbmUtaGVpZ2h0OiAy
MHB4OworfQorCisubGVhcm4gcCB7CisgICAgZm9udC1zaXplOiAxNXB4OworICAgIGZvbnQtd2Vp
Z2h0OiAzMDA7CisgICAgbGluZS1oZWlnaHQ6IDEuMzsKKyAgICBtYXJnaW4tdG9wOiAwOworICAg
IG1hcmdpbi1ib3R0b206IDA7Cit9CisKKyNpc3N1ZS1jb3VudCB7CisgICAgZGlzcGxheTogbm9u
ZTsKK30KKworLnF1b3RlIHsKKyAgICBib3JkZXI6IG5vbmU7CisgICAgbWFyZ2luOiAyMHB4IDAg
NjBweCAwOworfQorCisucXVvdGUgcCB7CisgICAgZm9udC1zdHlsZTogaXRhbGljOworfQorCisu
cXVvdGUgcDpiZWZvcmUgeworICAgIGNvbnRlbnQ6ICfigJwnOworICAgIGZvbnQtc2l6ZTogNTBw
eDsKKyAgICBvcGFjaXR5OiAuMTU7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDog
LTIwcHg7CisgICAgbGVmdDogM3B4OworfQorCisucXVvdGUgcDphZnRlciB7CisgICAgY29udGVu
dDogJ+KAnSc7CisgICAgZm9udC1zaXplOiA1MHB4OworICAgIG9wYWNpdHk6IC4xNTsKKyAgICBw
b3NpdGlvbjogYWJzb2x1dGU7CisgICAgYm90dG9tOiAtNDJweDsKKyAgICByaWdodDogM3B4Owor
fQorCisucXVvdGUgZm9vdGVyIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgYm90dG9t
OiAtNDBweDsKKyAgICByaWdodDogMDsKK30KKworLnF1b3RlIGZvb3RlciBpbWcgeworICAgIGJv
cmRlci1yYWRpdXM6IDNweDsKK30KKworLnF1b3RlIGZvb3RlciBhIHsKKyAgICBtYXJnaW4tbGVm
dDogNXB4OworICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cit9CisKKy5zcGVlY2gtYnViYmxl
IHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgcGFkZGluZzogMTBweDsKKyAgICBiYWNr
Z3JvdW5kOiByZ2JhKDAsIDAsIDAsIC4wNCk7CisgICAgYm9yZGVyLXJhZGl1czogNXB4OworfQor
Cisuc3BlZWNoLWJ1YmJsZTphZnRlciB7CisgICAgY29udGVudDogJyc7CisgICAgcG9zaXRpb246
IGFic29sdXRlOworICAgIHRvcDogMTAwJTsKKyAgICByaWdodDogMzBweDsKKyAgICBib3JkZXI6
IDEzcHggc29saWQgdHJhbnNwYXJlbnQ7CisgICAgYm9yZGVyLXRvcC1jb2xvcjogcmdiYSgwLCAw
LCAwLCAuMDQpOworfQorCisubGVhcm4tYmFyID4gLmxlYXJuIHsKKyAgICBwb3NpdGlvbjogYWJz
b2x1dGU7CisgICAgd2lkdGg6IDI3MnB4OworICAgIHRvcDogOHB4OworICAgIGxlZnQ6IC0zMDBw
eDsKKyAgICBwYWRkaW5nOiAxMHB4OworICAgIGJvcmRlci1yYWRpdXM6IDVweDsKKyAgICBiYWNr
Z3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIC42KTsKKyAgICB0cmFuc2l0aW9uLXBy
b3BlcnR5OiBsZWZ0OworICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDUwMG1zOworfQorCitAbWVk
aWEgKG1pbi13aWR0aDogODk5cHgpIHsKKyAgICAubGVhcm4tYmFyIHsKKyAgICAgICAgd2lkdGg6
IGF1dG87CisgICAgICAgIHBhZGRpbmctbGVmdDogMzAwcHg7CisgICAgfQorCisgICAgLmxlYXJu
LWJhciA+IC5sZWFybiB7CisgICAgICAgIGxlZnQ6IDhweDsKKyAgICB9Cit9CmRpZmYgLS1naXQg
YS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Z1bmN0aW9u
YWwtcHJvZy1leGFtcGxlcy9lbG0vbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jhc2UuanMg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Z1bmN0aW9u
YWwtcHJvZy1leGFtcGxlcy9lbG0vbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jhc2UuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uODFlMDA2YmM1MDJkZGM0Yzc0ZjQ3YmQxM2E4MzkyMjc3ZjgzMGRiOAotLS0g
L2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvZnVuY3Rpb25hbC1wcm9nLWV4YW1wbGVzL2VsbS9ub2RlX21vZHVsZXMvdG9kb212Yy1j
b21tb24vYmFzZS5qcwpAQCAtMCwwICsxLDI0OSBAQAorLyogZ2xvYmFsIF8gKi8KKyhmdW5jdGlv
biAoKSB7CisgICAgJ3VzZSBzdHJpY3QnOworCisgICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAq
LworICAgIC8vIFVuZGVyc2NvcmUncyBUZW1wbGF0ZSBNb2R1bGUKKyAgICAvLyBDb3VydGVzeSBv
ZiB1bmRlcnNjb3JlanMub3JnCisgICAgdmFyIF8gPSAoZnVuY3Rpb24gKF8pIHsKKyAgICAgICAg
Xy5kZWZhdWx0cyA9IGZ1bmN0aW9uIChvYmplY3QpIHsKKyAgICAgICAgICAgIGlmICghb2JqZWN0
KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG9iamVjdDsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGZvciAodmFyIGFyZ3NJbmRleCA9IDEsIGFyZ3NMZW5ndGggPSBhcmd1bWVudHMubGVu
Z3RoOyBhcmdzSW5kZXggPCBhcmdzTGVuZ3RoOyBhcmdzSW5kZXgrKykgeworICAgICAgICAgICAg
ICAgIHZhciBpdGVyYWJsZSA9IGFyZ3VtZW50c1thcmdzSW5kZXhdOworICAgICAgICAgICAgICAg
IGlmIChpdGVyYWJsZSkgeworICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gaXRl
cmFibGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvYmplY3Rba2V5XSA9PSBudWxs
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0W2tleV0gPSBpdGVyYWJsZVtr
ZXldOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG9iamVj
dDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEJ5IGRlZmF1bHQsIFVuZGVyc2NvcmUgdXNlcyBF
UkItc3R5bGUgdGVtcGxhdGUgZGVsaW1pdGVycywgY2hhbmdlIHRoZQorICAgICAgICAvLyBmb2xs
b3dpbmcgdGVtcGxhdGUgc2V0dGluZ3MgdG8gdXNlIGFsdGVybmF0aXZlIGRlbGltaXRlcnMuCisg
ICAgICAgIF8udGVtcGxhdGVTZXR0aW5ncyA9IHsKKyAgICAgICAgICAgIGV2YWx1YXRlICAgIDog
LzwlKFtcc1xTXSs/KSU+L2csCisgICAgICAgICAgICBpbnRlcnBvbGF0ZSA6IC88JT0oW1xzXFNd
Kz8pJT4vZywKKyAgICAgICAgICAgIGVzY2FwZSAgICAgIDogLzwlLShbXHNcU10rPyklPi9nCisg
ICAgICAgIH07CisKKyAgICAgICAgLy8gV2hlbiBjdXN0b21pemluZyBgdGVtcGxhdGVTZXR0aW5n
c2AsIGlmIHlvdSBkb24ndCB3YW50IHRvIGRlZmluZSBhbgorICAgICAgICAvLyBpbnRlcnBvbGF0
aW9uLCBldmFsdWF0aW9uIG9yIGVzY2FwaW5nIHJlZ2V4LCB3ZSBuZWVkIG9uZSB0aGF0IGlzCisg
ICAgICAgIC8vIGd1YXJhbnRlZWQgbm90IHRvIG1hdGNoLgorICAgICAgICB2YXIgbm9NYXRjaCA9
IC8oLileLzsKKworICAgICAgICAvLyBDZXJ0YWluIGNoYXJhY3RlcnMgbmVlZCB0byBiZSBlc2Nh
cGVkIHNvIHRoYXQgdGhleSBjYW4gYmUgcHV0IGludG8gYQorICAgICAgICAvLyBzdHJpbmcgbGl0
ZXJhbC4KKyAgICAgICAgdmFyIGVzY2FwZXMgPSB7CisgICAgICAgICAgICAiJyI6ICAgICAgIici
LAorICAgICAgICAgICAgJ1xcJzogICAgICdcXCcsCisgICAgICAgICAgICAnXHInOiAgICAgJ3In
LAorICAgICAgICAgICAgJ1xuJzogICAgICduJywKKyAgICAgICAgICAgICdcdCc6ICAgICAndCcs
CisgICAgICAgICAgICAnXHUyMDI4JzogJ3UyMDI4JywKKyAgICAgICAgICAgICdcdTIwMjknOiAn
dTIwMjknCisgICAgICAgIH07CisKKyAgICAgICAgdmFyIGVzY2FwZXIgPSAvXFx8J3xccnxcbnxc
dHxcdTIwMjh8XHUyMDI5L2c7CisKKyAgICAgICAgLy8gSmF2YVNjcmlwdCBtaWNyby10ZW1wbGF0
aW5nLCBzaW1pbGFyIHRvIEpvaG4gUmVzaWcncyBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgLy8g
VW5kZXJzY29yZSB0ZW1wbGF0aW5nIGhhbmRsZXMgYXJiaXRyYXJ5IGRlbGltaXRlcnMsIHByZXNl
cnZlcyB3aGl0ZXNwYWNlLAorICAgICAgICAvLyBhbmQgY29ycmVjdGx5IGVzY2FwZXMgcXVvdGVz
IHdpdGhpbiBpbnRlcnBvbGF0ZWQgY29kZS4KKyAgICAgICAgXy50ZW1wbGF0ZSA9IGZ1bmN0aW9u
KHRleHQsIGRhdGEsIHNldHRpbmdzKSB7CisgICAgICAgICAgICB2YXIgcmVuZGVyOworICAgICAg
ICAgICAgc2V0dGluZ3MgPSBfLmRlZmF1bHRzKHt9LCBzZXR0aW5ncywgXy50ZW1wbGF0ZVNldHRp
bmdzKTsKKworICAgICAgICAgICAgLy8gQ29tYmluZSBkZWxpbWl0ZXJzIGludG8gb25lIHJlZ3Vs
YXIgZXhwcmVzc2lvbiB2aWEgYWx0ZXJuYXRpb24uCisgICAgICAgICAgICB2YXIgbWF0Y2hlciA9
IG5ldyBSZWdFeHAoWworICAgICAgICAgICAgICAgIChzZXR0aW5ncy5lc2NhcGUgfHwgbm9NYXRj
aCkuc291cmNlLAorICAgICAgICAgICAgICAgIChzZXR0aW5ncy5pbnRlcnBvbGF0ZSB8fCBub01h
dGNoKS5zb3VyY2UsCisgICAgICAgICAgICAgICAgKHNldHRpbmdzLmV2YWx1YXRlIHx8IG5vTWF0
Y2gpLnNvdXJjZQorICAgICAgICAgICAgXS5qb2luKCd8JykgKyAnfCQnLCAnZycpOworCisgICAg
ICAgICAgICAvLyBDb21waWxlIHRoZSB0ZW1wbGF0ZSBzb3VyY2UsIGVzY2FwaW5nIHN0cmluZyBs
aXRlcmFscyBhcHByb3ByaWF0ZWx5LgorICAgICAgICAgICAgdmFyIGluZGV4ID0gMDsKKyAgICAg
ICAgICAgIHZhciBzb3VyY2UgPSAiX19wKz0nIjsKKyAgICAgICAgICAgIHRleHQucmVwbGFjZSht
YXRjaGVyLCBmdW5jdGlvbihtYXRjaCwgZXNjYXBlLCBpbnRlcnBvbGF0ZSwgZXZhbHVhdGUsIG9m
ZnNldCkgeworICAgICAgICAgICAgICAgIHNvdXJjZSArPSB0ZXh0LnNsaWNlKGluZGV4LCBvZmZz
ZXQpCisgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKGVzY2FwZXIsIGZ1bmN0aW9uKG1hdGNo
KSB7IHJldHVybiAnXFwnICsgZXNjYXBlc1ttYXRjaF07IH0pOworCisgICAgICAgICAgICAgICAg
aWYgKGVzY2FwZSkgeworICAgICAgICAgICAgICAgICAgICBzb3VyY2UgKz0gIicrXG4oKF9fdD0o
IiArIGVzY2FwZSArICIpKT09bnVsbD8nJzpfLmVzY2FwZShfX3QpKStcbiciOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoaW50ZXJwb2xhdGUpIHsKKyAgICAgICAgICAg
ICAgICAgICAgc291cmNlICs9ICInK1xuKChfX3Q9KCIgKyBpbnRlcnBvbGF0ZSArICIpKT09bnVs
bD8nJzpfX3QpK1xuJyI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChl
dmFsdWF0ZSkgeworICAgICAgICAgICAgICAgICAgICBzb3VyY2UgKz0gIic7XG4iICsgZXZhbHVh
dGUgKyAiXG5fX3ArPSciOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpbmRl
eCA9IG9mZnNldCArIG1hdGNoLmxlbmd0aDsKKyAgICAgICAgICAgICAgICByZXR1cm4gbWF0Y2g7
CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHNvdXJjZSArPSAiJztcbiI7CisKKyAgICAg
ICAgICAgIC8vIElmIGEgdmFyaWFibGUgaXMgbm90IHNwZWNpZmllZCwgcGxhY2UgZGF0YSB2YWx1
ZXMgaW4gbG9jYWwgc2NvcGUuCisgICAgICAgICAgICBpZiAoIXNldHRpbmdzLnZhcmlhYmxlKSBz
b3VyY2UgPSAnd2l0aChvYmp8fHt9KXtcbicgKyBzb3VyY2UgKyAnfVxuJzsKKworICAgICAgICAg
ICAgc291cmNlID0gInZhciBfX3QsX19wPScnLF9faj1BcnJheS5wcm90b3R5cGUuam9pbiwiICsK
KyAgICAgICAgICAgICAgICAicHJpbnQ9ZnVuY3Rpb24oKXtfX3ArPV9fai5jYWxsKGFyZ3VtZW50
cywnJyk7fTtcbiIgKworICAgICAgICAgICAgICAgIHNvdXJjZSArICJyZXR1cm4gX19wO1xuIjsK
KworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICByZW5kZXIgPSBuZXcgRnVuY3Rp
b24oc2V0dGluZ3MudmFyaWFibGUgfHwgJ29iaicsICdfJywgc291cmNlKTsKKyAgICAgICAgICAg
IH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgICAgICBlLnNvdXJjZSA9IHNvdXJjZTsKKyAgICAg
ICAgICAgICAgICB0aHJvdyBlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoZGF0
YSkgcmV0dXJuIHJlbmRlcihkYXRhLCBfKTsKKyAgICAgICAgICAgIHZhciB0ZW1wbGF0ZSA9IGZ1
bmN0aW9uKGRhdGEpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVuZGVyLmNhbGwodGhpcywg
ZGF0YSwgXyk7CisgICAgICAgICAgICB9OworCisgICAgICAgICAgICAvLyBQcm92aWRlIHRoZSBj
b21waWxlZCBmdW5jdGlvbiBzb3VyY2UgYXMgYSBjb252ZW5pZW5jZSBmb3IgcHJlY29tcGlsYXRp
b24uCisgICAgICAgICAgICB0ZW1wbGF0ZS5zb3VyY2UgPSAnZnVuY3Rpb24oJyArIChzZXR0aW5n
cy52YXJpYWJsZSB8fCAnb2JqJykgKyAnKXtcbicgKyBzb3VyY2UgKyAnfSc7CisKKyAgICAgICAg
ICAgIHJldHVybiB0ZW1wbGF0ZTsKKyAgICAgICAgfTsKKworICAgICAgICByZXR1cm4gXzsKKyAg
ICB9KSh7fSk7CisKKyAgICBpZiAobG9jYXRpb24uaG9zdG5hbWUgPT09ICd0b2RvbXZjLmNvbScp
IHsKKyAgICAgICAgKGZ1bmN0aW9uKGkscyxvLGcscixhLG0pe2lbJ0dvb2dsZUFuYWx5dGljc09i
amVjdCddPXI7aVtyXT1pW3JdfHxmdW5jdGlvbigpeworICAgICAgICAoaVtyXS5xPWlbcl0ucXx8
W10pLnB1c2goYXJndW1lbnRzKX0saVtyXS5sPTEqbmV3IERhdGUoKTthPXMuY3JlYXRlRWxlbWVu
dChvKSwKKyAgICAgICAgbT1zLmdldEVsZW1lbnRzQnlUYWdOYW1lKG8pWzBdO2EuYXN5bmM9MTth
LnNyYz1nO20ucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSxtKQorICAgICAgICB9KSh3aW5kb3cs
ZG9jdW1lbnQsJ3NjcmlwdCcsJ2h0dHBzOi8vd3d3Lmdvb2dsZS1hbmFseXRpY3MuY29tL2FuYWx5
dGljcy5qcycsJ2dhJyk7CisgICAgICAgIGdhKCdjcmVhdGUnLCAnVUEtMzEwODEwNjItMScsICdh
dXRvJyk7CisgICAgICAgIGdhKCdzZW5kJywgJ3BhZ2V2aWV3Jyk7CisgICAgfQorICAgIC8qIGpz
aGludCBpZ25vcmU6ZW5kICovCisKKyAgICBmdW5jdGlvbiByZWRpcmVjdCgpIHsKKyAgICAgICAg
aWYgKGxvY2F0aW9uLmhvc3RuYW1lID09PSAndGFzdGVqcy5naXRodWIuaW8nKSB7CisgICAgICAg
ICAgICBsb2NhdGlvbi5ocmVmID0gbG9jYXRpb24uaHJlZi5yZXBsYWNlKCd0YXN0ZWpzLmdpdGh1
Yi5pby90b2RvbXZjJywgJ3RvZG9tdmMuY29tJyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBm
dW5jdGlvbiBmaW5kUm9vdCgpIHsKKyAgICAgICAgdmFyIGJhc2UgPSBsb2NhdGlvbi5ocmVmLmlu
ZGV4T2YoJ2V4YW1wbGVzLycpOworICAgICAgICByZXR1cm4gbG9jYXRpb24uaHJlZi5zdWJzdHIo
MCwgYmFzZSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gZ2V0RmlsZShmaWxlLCBjYWxsYmFjaykg
eworICAgICAgICBpZiAoIWxvY2F0aW9uLmhvc3QpIHsKKyAgICAgICAgICAgIHJldHVybiBjb25z
b2xlLmluZm8oJ01pc3MgdGhlIGluZm8gYmFyPyBSdW4gVG9kb01WQyBmcm9tIGEgc2VydmVyIHRv
IGF2b2lkIGEgY3Jvc3Mtb3JpZ2luIGVycm9yLicpOworICAgICAgICB9CisKKyAgICAgICAgdmFy
IHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworCisgICAgICAgIHhoci5vcGVuKCdHRVQnLCBm
aW5kUm9vdCgpICsgZmlsZSwgdHJ1ZSk7CisgICAgICAgIHhoci5zZW5kKCk7CisKKyAgICAgICAg
eGhyLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGlmICh4aHIuc3RhdHVzID09
PSAyMDAgJiYgY2FsbGJhY2spIHsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayh4aHIucmVzcG9u
c2VUZXh0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9CisKKyAgICBmdW5jdGlv
biBMZWFybihsZWFybkpTT04sIGNvbmZpZykgeworICAgICAgICBpZiAoISh0aGlzIGluc3RhbmNl
b2YgTGVhcm4pKSB7CisgICAgICAgICAgICByZXR1cm4gbmV3IExlYXJuKGxlYXJuSlNPTiwgY29u
ZmlnKTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciB0ZW1wbGF0ZSwgZnJhbWV3b3JrOworCisg
ICAgICAgIGlmICh0eXBlb2YgbGVhcm5KU09OICE9PSAnb2JqZWN0JykgeworICAgICAgICAgICAg
dHJ5IHsKKyAgICAgICAgICAgICAgICBsZWFybkpTT04gPSBKU09OLnBhcnNlKGxlYXJuSlNPTik7
CisgICAgICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKGNvbmZpZykgeworICAgICAgICAg
ICAgdGVtcGxhdGUgPSBjb25maWcudGVtcGxhdGU7CisgICAgICAgICAgICBmcmFtZXdvcmsgPSBj
b25maWcuZnJhbWV3b3JrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0ZW1wbGF0ZSAmJiBs
ZWFybkpTT04udGVtcGxhdGVzKSB7CisgICAgICAgICAgICB0ZW1wbGF0ZSA9IGxlYXJuSlNPTi50
ZW1wbGF0ZXMudG9kb212YzsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghZnJhbWV3b3JrICYm
IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLWZyYW1ld29ya10nKSkgeworICAgICAgICAg
ICAgZnJhbWV3b3JrID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW2RhdGEtZnJhbWV3b3JrXScp
LmRhdGFzZXQuZnJhbWV3b3JrOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy50ZW1wbGF0ZSA9
IHRlbXBsYXRlOworCisgICAgICAgIGlmIChsZWFybkpTT04uYmFja2VuZCkgeworICAgICAgICAg
ICAgdGhpcy5mcmFtZXdvcmtKU09OID0gbGVhcm5KU09OLmJhY2tlbmQ7CisgICAgICAgICAgICB0
aGlzLmZyYW1ld29ya0pTT04uaXNzdWVMYWJlbCA9IGZyYW1ld29yazsKKyAgICAgICAgICAgIHRo
aXMuYXBwZW5kKHsKKyAgICAgICAgICAgICAgICBiYWNrZW5kOiB0cnVlCisgICAgICAgICAgICB9
KTsKKyAgICAgICAgfSBlbHNlIGlmIChsZWFybkpTT05bZnJhbWV3b3JrXSkgeworICAgICAgICAg
ICAgdGhpcy5mcmFtZXdvcmtKU09OID0gbGVhcm5KU09OW2ZyYW1ld29ya107CisgICAgICAgICAg
ICB0aGlzLmZyYW1ld29ya0pTT04uaXNzdWVMYWJlbCA9IGZyYW1ld29yazsKKyAgICAgICAgICAg
IHRoaXMuYXBwZW5kKCk7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLmZldGNoSXNzdWVDb3Vu
dCgpOworICAgIH0KKworICAgIExlYXJuLnByb3RvdHlwZS5hcHBlbmQgPSBmdW5jdGlvbiAob3B0
cykgeworICAgICAgICB2YXIgYXNpZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhc2lkZScp
OworICAgICAgICBhc2lkZS5pbm5lckhUTUwgPSBfLnRlbXBsYXRlKHRoaXMudGVtcGxhdGUsIHRo
aXMuZnJhbWV3b3JrSlNPTik7CisgICAgICAgIGFzaWRlLmNsYXNzTmFtZSA9ICdsZWFybic7CisK
KyAgICAgICAgaWYgKG9wdHMgJiYgb3B0cy5iYWNrZW5kKSB7CisgICAgICAgICAgICAvLyBSZW1v
dmUgZGVtbyBsaW5rCisgICAgICAgICAgICB2YXIgc291cmNlTGlua3MgPSBhc2lkZS5xdWVyeVNl
bGVjdG9yKCcuc291cmNlLWxpbmtzJyk7CisgICAgICAgICAgICB2YXIgaGVhZGluZyA9IHNvdXJj
ZUxpbmtzLmZpcnN0RWxlbWVudENoaWxkOworICAgICAgICAgICAgdmFyIHNvdXJjZUxpbmsgPSBz
b3VyY2VMaW5rcy5sYXN0RWxlbWVudENoaWxkOworICAgICAgICAgICAgLy8gQ29ycmVjdCBsaW5r
IHBhdGgKKyAgICAgICAgICAgIHZhciBocmVmID0gc291cmNlTGluay5nZXRBdHRyaWJ1dGUoJ2hy
ZWYnKTsKKyAgICAgICAgICAgIHNvdXJjZUxpbmsuc2V0QXR0cmlidXRlKCdocmVmJywgaHJlZi5z
dWJzdHIoaHJlZi5sYXN0SW5kZXhPZignaHR0cCcpKSk7CisgICAgICAgICAgICBzb3VyY2VMaW5r
cy5pbm5lckhUTUwgPSBoZWFkaW5nLm91dGVySFRNTCArIHNvdXJjZUxpbmsub3V0ZXJIVE1MOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gTG9jYWxpemUgZGVtbyBsaW5rcworICAg
ICAgICAgICAgdmFyIGRlbW9MaW5rcyA9IGFzaWRlLnF1ZXJ5U2VsZWN0b3JBbGwoJy5kZW1vLWxp
bmsnKTsKKyAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoZGVtb0xpbmtz
LCBmdW5jdGlvbiAoZGVtb0xpbmspIHsKKyAgICAgICAgICAgICAgICBpZiAoZGVtb0xpbmsuZ2V0
QXR0cmlidXRlKCdocmVmJykuc3Vic3RyKDAsIDQpICE9PSAnaHR0cCcpIHsKKyAgICAgICAgICAg
ICAgICAgICAgZGVtb0xpbmsuc2V0QXR0cmlidXRlKCdocmVmJywgZmluZFJvb3QoKSArIGRlbW9M
aW5rLmdldEF0dHJpYnV0ZSgnaHJlZicpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NOYW1lID0gKGRv
Y3VtZW50LmJvZHkuY2xhc3NOYW1lICsgJyBsZWFybi1iYXInKS50cmltKCk7CisgICAgICAgIGRv
Y3VtZW50LmJvZHkuaW5zZXJ0QWRqYWNlbnRIVE1MKCdhZnRlckJlZ2luJywgYXNpZGUub3V0ZXJI
VE1MKTsKKyAgICB9OworCisgICAgTGVhcm4ucHJvdG90eXBlLmZldGNoSXNzdWVDb3VudCA9IGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgdmFyIGlzc3VlTGluayA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdpc3N1ZS1jb3VudC1saW5rJyk7CisgICAgICAgIGlmIChpc3N1ZUxpbmspIHsKKyAgICAg
ICAgICAgIHZhciB1cmwgPSBpc3N1ZUxpbmsuaHJlZi5yZXBsYWNlKCdodHRwczovL2dpdGh1Yi5j
b20nLCAnaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcycpOworICAgICAgICAgICAgdmFyIHho
ciA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworICAgICAgICAgICAgeGhyLm9wZW4oJ0dFVCcsIHVy
bCwgdHJ1ZSk7CisgICAgICAgICAgICB4aHIub25sb2FkID0gZnVuY3Rpb24gKGUpIHsKKyAgICAg
ICAgICAgICAgICB2YXIgcGFyc2VkUmVzcG9uc2UgPSBKU09OLnBhcnNlKGUudGFyZ2V0LnJlc3Bv
bnNlVGV4dCk7CisgICAgICAgICAgICAgICAgaWYgKHBhcnNlZFJlc3BvbnNlIGluc3RhbmNlb2Yg
QXJyYXkpIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGNvdW50ID0gcGFyc2VkUmVzcG9uc2Uu
bGVuZ3RoOworICAgICAgICAgICAgICAgICAgICBpZiAoY291bnQgIT09IDApIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlzc3VlTGluay5pbm5lckhUTUwgPSAnVGhpcyBhcHAgaGFzICcgKyBj
b3VudCArICcgb3BlbiBpc3N1ZXMnOworICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2lzc3VlLWNvdW50Jykuc3R5bGUuZGlzcGxheSA9ICdpbmxpbmUnOwor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfTsK
KyAgICAgICAgICAgIHhoci5zZW5kKCk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgcmVkaXJl
Y3QoKTsKKyAgICBnZXRGaWxlKCdsZWFybi5qc29uJywgTGVhcm4pOworfSkoKTsKZGlmZiAtLWdp
dCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZnVuY3Rp
b25hbC1wcm9nLWV4YW1wbGVzL2VsbS9wYWNrYWdlLmpzb24gYi9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Z1bmN0aW9uYWwtcHJvZy1leGFtcGxlcy9lbG0v
cGFja2FnZS5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBmMTdhZWMzZGM3MjE4NzI3NWIzNGU5NmE2OWYwZTg2
Yjk0N2E2NzUKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2Z1bmN0aW9uYWwtcHJvZy1leGFtcGxlcy9lbG0vcGFja2FnZS5q
c29uCkBAIC0wLDAgKzEsNyBAQAoreworICAicHJpdmF0ZSI6IHRydWUsCisgICJkZXBlbmRlbmNp
ZXMiOiB7CisgICAgInRvZG9tdmMtYXBwLWNzcyI6ICJeMi4wLjYiLAorICAgICJ0b2RvbXZjLWNv
bW1vbiI6ICJeMS4wLjIiCisgIH0KK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZnVuY3Rpb25hbC1wcm9nLWV4YW1wbGVzL2VsbS9y
ZWFkbWUubWQgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2Z1bmN0aW9uYWwtcHJvZy1leGFtcGxlcy9lbG0vcmVhZG1lLm1kCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUxNjc5
OTljYTJkM2FhOWI2NzY2ZTlhOGNjMTg0NDY0NmQ1NDI1ZjQKLS0tIC9kZXYvbnVsbAorKysgYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Z1bmN0aW9uYWwt
cHJvZy1leGFtcGxlcy9lbG0vcmVhZG1lLm1kCkBAIC0wLDAgKzEsNTYgQEAKKyMgRWxtIFRvZG9N
VkMgRXhhbXBsZQorCis+IEEgZnVuY3Rpb25hbCBsYW5ndWFnZSBmb3IgaW50ZXJhY3RpdmUgYXBw
bGljYXRpb25zCisKKz4gX1tFbG1dKGh0dHA6Ly9lbG0tbGFuZy5vcmcvKV8KKworCisjIyBMZWFy
bmluZyBFbG0KKworVGhlIFtFbG0gd2Vic2l0ZV0oaHR0cDovL2VsbS1sYW5nLm9yZy8pIGlzIGEg
Z3JlYXQgcmVzb3VyY2UgZm9yIGdldHRpbmcKK3N0YXJ0ZWQuCisKK0hlcmUgYXJlIHNvbWUgbGlu
a3MgeW91IG1heSBmaW5kIGhlbHBmdWw6CisKKyogW1RyeSBFbG1dKGh0dHA6Ly9lbG0tbGFuZy5v
cmcvdHJ5KQorKiBbTGVhcm4gRWxtXShodHRwOi8vZWxtLWxhbmcub3JnL0xlYXJuLmVsbSkKKyog
W0FuIEludHJvZHVjdGlvbiB0byBFbG1dKGh0dHA6Ly9ndWlkZS5lbG0tbGFuZy5vcmcvKQorCitH
ZXQgaGVscCBmcm9tIG90aGVyIEVsbSB1c2VyczoKKworKiBbZWxtLWRpc2N1c3MgbWFpbGluZyBs
aXN0XShodHRwczovL2dyb3Vwcy5nb29nbGUuY29tL2ZvcnVtLz9mcm9tZ3JvdXBzIyFmb3J1bS9l
bG0tZGlzY3VzcykKKyogW0BlbG1sYW5nIG9uIFR3aXR0ZXJdKGh0dHBzOi8vdHdpdHRlci5jb20v
ZWxtbGFuZykKKyogW0BjemFwbGljIG9uIFR3aXR0ZXJdKGh0dHBzOi8vdHdpdHRlci5jb20vY3ph
cGxpYykKKworX0lmIHlvdSBoYXZlIG90aGVyIGhlbHBmdWwgbGlua3MgdG8gc2hhcmUsIG9yIGZp
bmQgYW55IG9mIHRoZSBsaW5rcyBhYm92ZSBubyBsb25nZXIgd29yaywgcGxlYXNlIFtsZXQgdXMg
a25vd10oaHR0cHM6Ly9naXRodWIuY29tL3Rhc3RlanMvdG9kb212Yy9pc3N1ZXMpLl8KKworCisK
KyMjIFByb2plY3QgU3RydWN0dXJlCisKK0FsbCBvZiB0aGUgRWxtIGNvZGUgbGl2ZXMgaW4gYFRv
ZG8uZWxtYCBhbmQgYFRvZG8vVGFzay5lbG1gIGFuZCByZWxpZXMKK29uIHRoZSBbZWxtLWh0bWxd
W10gYW5kIFtlbG0tbmF2aWdhdGlvbl1bXSBwYWNrYWdlcy4KKworW2VsbS1odG1sXTogaHR0cDov
L3BhY2thZ2UuZWxtLWxhbmcub3JnL3BhY2thZ2VzL2VsbS1sYW5nL2h0bWwvbGF0ZXN0LworW2Vs
bS1uYXZpZ2F0aW9uXTogaHR0cDovL3BhY2thZ2UuZWxtLWxhbmcub3JnL3BhY2thZ2VzL2VsbS1s
YW5nL25hdmlnYXRpb24vbGF0ZXN0LworCitUaGVyZSBhbHNvIGlzIGEgcG9ydCBoYW5kbGVyIHNl
dCB1cCBpbiBgaW5kZXguaHRtbGAgdG8gc2V0IHRoZSBmb2N1cyBvbgorcGFydGljdWxhciB0ZXh0
IGZpZWxkcyB3aGVuIG5lY2Vzc2FyeS4KKworIyMgQnVpbGQgSW5zdHJ1Y3Rpb25zCisKK1lvdSBu
ZWVkIHRvIGluc3RhbGwgW2VsbV0oaHR0cDovL2VsbS1sYW5nLm9yZy9pbnN0YWxsKQorb24geW91
ciBtYWNoaW5lIGZpcnN0LgorCitSdW4gdGhlIGZvbGxvd2luZyBjb21tYW5kcyBmcm9tIHRoZSBy
b290IG9mIHRoaXMgcHJvamVjdDoKKworYGBgYmFzaAorZWxtLXBhY2thZ2UgaW5zdGFsbCAteQor
ZWxtLW1ha2UgVG9kby5lbG0gLS1vdXRwdXQgYnVpbGQvZWxtLmpzCitgYGAKKworVGhlbiBvcGVu
IGBpbmRleC5odG1sYCBpbiB5b3VyIGJyb3dzZXIhCisKKyMjIENyZWRpdAorCitUaGlzIFRvZG9N
VkMgYXBwbGljYXRpb24gd2FzIGNyZWF0ZWQgYnkgW0BldmFuY3pdKGh0dHBzOi8vZ2l0aHViLmNv
bS9ldmFuY3opLCBhbmQgaW1wb3J0ZWQgaW50byBUYXN0ZUpTIGJ5IFtAcGFzc3ldKGh0dHBzOi8v
dHdpdHRlci5jb20vcGFzc3kpLiBUaGUgU3BlZWRvbWV0ZXIgdmVyc2lvbiBpcyBieSBBZGR5IE9z
bWFuaS4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvbGFicy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QvYm93ZXIuanNvbiBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvbGFicy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvcmVhY3QvYm93ZXIuanNvbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggY2Q0MTE4ZWVmOGY5NmI3NzhjNTdlMTBiOWM4ZjQxMTU2OWJhZjVlOS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2xhYnMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Jl
YWN0L2Jvd2VyLmpzb24KKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLXsKLSAgIm5hbWUi
OiAidG9kb212Yy1yZWFjdCIsCi0gICJ2ZXJzaW9uIjogIjAuMC4wIiwKLSAgImRlcGVuZGVuY2ll
cyI6IHsKLSAgICAidG9kb212Yy1jb21tb24iOiAifjAuMS43IiwKLSAgICAicmVhY3QiOiAifjAu
NC4wIiwKLSAgICAiZGlyZWN0b3IiOiAifjEuMi4wIgotICB9Ci19CmRpZmYgLS1naXQgYS9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2xhYnMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL3JlYWN0L2Jvd2VyX2NvbXBvbmVudHMvZGlyZWN0b3IvTElDRU5TRSBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvbGFicy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvcmVhY3QvYm93ZXJfY29tcG9uZW50cy9kaXJlY3Rvci9MSUNFTlNFCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZjAxZTJiMzZjNjk3ZDI1MTU5N2JmYjc4MjMw
MjVlOWI4NjNjNjIxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvbGFicy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QvYm93ZXJfY29tcG9uZW50cy9kaXJlY3Rvci9MSUNF
TlNFCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotQ29weXJpZ2h0IChjKSAyMDExIE5v
ZGVqaXRzdSBJbmMuCi0KLVBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hh
cmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKLW9mIHRoaXMgc29mdHdhcmUgYW5k
IGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFs
Ci1pbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQg
bGltaXRhdGlvbiB0aGUgcmlnaHRzCi10byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxp
c2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCi1jb3BpZXMgb2YgdGhlIFNv
ZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKLWZ1
cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0K
LVRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNo
YWxsIGJlIGluY2x1ZGVkIGluCi1hbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9m
IHRoZSBTb2Z0d2FyZS4KLQotVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhP
VVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKLUlNUExJRUQsIElOQ0xVRElORyBC
VVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAotRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFCi1BVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBG
T1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCi1MSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4g
QUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAotT1VU
IE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhF
UiBERUFMSU5HUyBJTgotVEhFIFNPRlRXQVJFLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvbGFicy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QvYm93ZXJfY29tcG9uZW50cy9kaXJl
Y3Rvci9SRUFETUUubWQgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2xhYnMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L2Jvd2VyX2NvbXBvbmVudHMv
ZGlyZWN0b3IvUkVBRE1FLm1kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MjJkMTQ2
YzQ3MmViODMwYzZmNmMxNzg2YzJmMzY3Y2ZiZmIzZTM0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvbGFicy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QvYm93ZXJfY29t
cG9uZW50cy9kaXJlY3Rvci9SRUFETUUubWQKKysrIC9kZXYvbnVsbApAQCAtMSw4MjIgKzAsMCBA
QAotPGltZyBzcmM9Imh0dHBzOi8vZ2l0aHViLmNvbS9mbGF0aXJvbi9kaXJlY3Rvci9yYXcvbWFz
dGVyL2ltZy9kaXJlY3Rvci5wbmciIC8+Ci0KLSMgU3lub3BzaXMKLURpcmVjdG9yIGlzIGEgcm91
dGVyLiBSb3V0aW5nIGlzIHRoZSBwcm9jZXNzIG9mIGRldGVybWluaW5nIHdoYXQgY29kZSB0byBy
dW4gd2hlbiBhIFVSTCBpcyByZXF1ZXN0ZWQuCi0KLSMgTW90aXZhdGlvbgotQSByb3V0aW5nIGxp
YnJhcnkgdGhhdCB3b3JrcyBpbiBib3RoIHRoZSBicm93c2VyIGFuZCBub2RlLmpzIGVudmlyb25t
ZW50cyB3aXRoIGFzIGZldyBkaWZmZXJlbmNlcyBhcyBwb3NzaWJsZS4gU2ltcGxpZmllcyB0aGUg
ZGV2ZWxvcG1lbnQgb2YgU2luZ2xlIFBhZ2UgQXBwcyBhbmQgTm9kZS5qcyBhcHBsaWNhdGlvbnMu
IERlcGVuZGVuY3kgZnJlZSAoZG9lc24ndCByZXF1aXJlIGpRdWVyeSBvciBFeHByZXNzLCBldGMp
LgotCi0jIFN0YXR1cwotWyFbQnVpbGQgU3RhdHVzXShodHRwczovL3NlY3VyZS50cmF2aXMtY2ku
b3JnL2ZsYXRpcm9uL2RpcmVjdG9yLnBuZz9icmFuY2g9bWFzdGVyKV0oaHR0cDovL3RyYXZpcy1j
aS5vcmcvZmxhdGlyb24vZGlyZWN0b3IpCi0KLSMgRmVhdHVyZXMKLSogW0NsaWVudC1TaWRlIFJv
dXRpbmddKCNjbGllbnQtc2lkZSkKLSogW1NlcnZlci1TaWRlIEhUVFAgUm91dGluZ10oI2h0dHAt
cm91dGluZykKLSogW1NlcnZlci1TaWRlIENMSSBSb3V0aW5nXSgjY2xpLXJvdXRpbmcpCi0KLQot
IyBVc2FnZQotKiBbQVBJIERvY3VtZW50YXRpb25dKCNhcGktZG9jdW1lbnRhdGlvbikKLSogW0Zy
ZXF1ZW50bHkgQXNrZWQgUXVlc3Rpb25zXSgjZmFxKQotCi08YSBuYW1lPSJjbGllbnQtc2lkZSI+
PC9hPgotIyMgQ2xpZW50LXNpZGUgUm91dGluZwotSXQgc2ltcGx5IHdhdGNoZXMgdGhlIGhhc2gg
b2YgdGhlIFVSTCB0byBkZXRlcm1pbmUgd2hhdCB0byBkbywgZm9yIGV4YW1wbGU6Ci0KLWBgYAot
aHR0cDovL2Zvby5jb20vIy9iYXIKLWBgYAotCi1DbGllbnQtc2lkZSByb3V0aW5nIChha2EgaGFz
aC1yb3V0aW5nKSBhbGxvd3MgeW91IHRvIHNwZWNpZnkgc29tZSBpbmZvcm1hdGlvbiBhYm91dCB0
aGUgc3RhdGUgb2YgdGhlIGFwcGxpY2F0aW9uIHVzaW5nIHRoZSBVUkwuIFNvIHRoYXQgd2hlbiB0
aGUgdXNlciB2aXNpdHMgYSBzcGVjaWZpYyBVUkwsIHRoZSBhcHBsaWNhdGlvbiBjYW4gYmUgdHJh
bnNmb3JtZWQgYWNjb3JkaW5nbHkuCi0KLTxpbWcgc3JjPSJodHRwczovL2dpdGh1Yi5jb20vZmxh
dGlyb24vZGlyZWN0b3IvcmF3L21hc3Rlci9pbWcvaGFzaFJvdXRlLnBuZyIgLz4KLQotSGVyZSBp
cyBhIHNpbXBsZSBleGFtcGxlOgotCi1gYGBodG1sCi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgot
ICA8aGVhZD4KLSAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci0gICAgPHRpdGxlPkEgR2VudGxl
IEludHJvZHVjdGlvbjwvdGl0bGU+Ci0gICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vcmF3LmdpdGh1
Yi5jb20vZmxhdGlyb24vZGlyZWN0b3IvbWFzdGVyL2J1aWxkL2RpcmVjdG9yLm1pbi5qcyI+PC9z
Y3JpcHQ+Ci0gICAgPHNjcmlwdD4KLQotICAgICAgdmFyIGF1dGhvciA9IGZ1bmN0aW9uICgpIHsg
Y29uc29sZS5sb2coImF1dGhvciIpOyB9LAotICAgICAgICAgIGJvb2tzID0gZnVuY3Rpb24gKCkg
eyBjb25zb2xlLmxvZygiYm9va3MiKTsgfSwKLSAgICAgICAgICB2aWV3Qm9vayA9IGZ1bmN0aW9u
KGJvb2tJZCkgeyBjb25zb2xlLmxvZygidmlld0Jvb2s6IGJvb2tJZCBpcyBwb3B1bGF0ZWQ6ICIg
KyBib29rSWQpOyB9OwotCi0gICAgICB2YXIgcm91dGVzID0gewotICAgICAgICAnL2F1dGhvcic6
IGF1dGhvciwKLSAgICAgICAgJy9ib29rcyc6IFtib29rcywgZnVuY3Rpb24oKSB7IGNvbnNvbGUu
bG9nKCJBbiBpbmxpbmUgcm91dGUgaGFuZGxlci4iKTsgfV0sCi0gICAgICAgICcvYm9va3Mvdmll
dy86Ym9va0lkJzogdmlld0Jvb2sKLSAgICAgIH07Ci0KLSAgICAgIHZhciByb3V0ZXIgPSBSb3V0
ZXIocm91dGVzKTsKLSAgICAgIHJvdXRlci5pbml0KCk7Ci0KLSAgICA8L3NjcmlwdD4KLSAgPC9o
ZWFkPgotICA8Ym9keT4KLSAgICA8dWw+Ci0gICAgICA8bGk+PGEgaHJlZj0iIy9hdXRob3IiPiMv
YXV0aG9yPC9hPjwvbGk+Ci0gICAgICA8bGk+PGEgaHJlZj0iIy9ib29rcyI+Iy9ib29rczwvYT48
L2xpPgotICAgICAgPGxpPjxhIGhyZWY9IiMvYm9va3Mvdmlldy8xIj4jL2Jvb2tzL3ZpZXcvMTwv
YT48L2xpPgotICAgIDwvdWw+Ci0gIDwvYm9keT4KLTwvaHRtbD4KLWBgYAotCi1EaXJlY3RvciB3
b3JrcyBncmVhdCB3aXRoIHlvdXIgZmF2b3JpdGUgRE9NIGxpYnJhcnksIHN1Y2ggYXMgalF1ZXJ5
LgotCi1gYGBodG1sCi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotICA8aGVhZD4KLSAgICA8bWV0
YSBjaGFyc2V0PSJ1dGYtOCI+Ci0gICAgPHRpdGxlPkEgR2VudGxlIEludHJvZHVjdGlvbiAyPC90
aXRsZT4KLSAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9hamF4Lmdvb2dsZWFwaXMuY29tL2FqYXgv
bGlicy9qcXVlcnkvMS43LjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBz
cmM9Imh0dHBzOi8vcmF3LmdpdGh1Yi5jb20vZmxhdGlyb24vZGlyZWN0b3IvbWFzdGVyL2J1aWxk
L2RpcmVjdG9yLm1pbi5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdD4KLSAgICAkKCdkb2N1bWVu
dCcpLnJlYWR5KGZ1bmN0aW9uKCl7Ci0gICAgICAvLwotICAgICAgLy8gY3JlYXRlIHNvbWUgZnVu
Y3Rpb25zIHRvIGJlIGV4ZWN1dGVkIHdoZW4KLSAgICAgIC8vIHRoZSBjb3JyZWN0IHJvdXRlIGlz
IGlzc3VlZCBieSB0aGUgdXNlci4KLSAgICAgIC8vCi0gICAgICB2YXIgc2hvd0F1dGhvckluZm8g
PSBmdW5jdGlvbiAoKSB7IGNvbnNvbGUubG9nKCJzaG93QXV0aG9ySW5mbyIpOyB9LAotICAgICAg
ICAgIGxpc3RCb29rcyA9IGZ1bmN0aW9uICgpIHsgY29uc29sZS5sb2coImxpc3RCb29rcyIpOyB9
LAotICAgICAgICAgIGFsbHJvdXRlcyA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgdmFyIHJv
dXRlID0gd2luZG93LmxvY2F0aW9uLmhhc2guc2xpY2UoMiksCi0gICAgICAgICAgICAgICAgc2Vj
dGlvbnMgPSAkKCdzZWN0aW9uJyksCi0gICAgICAgICAgICAgICAgc2VjdGlvbjsKLSAgICAgICAg
ICAgIGlmICgoc2VjdGlvbiA9IHNlY3Rpb25zLmZpbHRlcignW2RhdGEtcm91dGU9JyArIHJvdXRl
ICsgJ10nKSkubGVuZ3RoKSB7Ci0gICAgICAgICAgICAgIHNlY3Rpb25zLmhpZGUoMjUwKTsKLSAg
ICAgICAgICAgICAgc2VjdGlvbi5zaG93KDI1MCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
fTsKLQotICAgICAgLy8KLSAgICAgIC8vIGRlZmluZSB0aGUgcm91dGluZyB0YWJsZS4KLSAgICAg
IC8vCi0gICAgICB2YXIgcm91dGVzID0gewotICAgICAgICAnL2F1dGhvcic6IHNob3dBdXRob3JJ
bmZvLAotICAgICAgICAnL2Jvb2tzJzogbGlzdEJvb2tzCi0gICAgICB9OwotCi0gICAgICAvLwot
ICAgICAgLy8gaW5zdGFudGlhdGUgdGhlIHJvdXRlci4KLSAgICAgIC8vCi0gICAgICB2YXIgcm91
dGVyID0gUm91dGVyKHJvdXRlcyk7Ci0KLSAgICAgIC8vCi0gICAgICAvLyBhIGdsb2JhbCBjb25m
aWd1cmF0aW9uIHNldHRpbmcuCi0gICAgICAvLwotICAgICAgcm91dGVyLmNvbmZpZ3VyZSh7Ci0g
ICAgICAgIG9uOiBhbGxyb3V0ZXMKLSAgICAgIH0pOwotICAgICAgcm91dGVyLmluaXQoKTsKLSAg
ICB9KTsKLSAgICA8L3NjcmlwdD4KLSAgPC9oZWFkPgotICA8Ym9keT4KLSAgICA8c2VjdGlvbiBk
YXRhLXJvdXRlPSJhdXRob3IiPkF1dGhvciBOYW1lPC9zZWN0aW9uPgotICAgIDxzZWN0aW9uIGRh
dGEtcm91dGU9ImJvb2tzIj5Cb29rMSwgQm9vazIsIEJvb2szPC9zZWN0aW9uPgotICAgIDx1bD4K
LSAgICAgIDxsaT48YSBocmVmPSIjL2F1dGhvciI+Iy9hdXRob3I8L2E+PC9saT4KLSAgICAgIDxs
aT48YSBocmVmPSIjL2Jvb2tzIj4jL2Jvb2tzPC9hPjwvbGk+Ci0gICAgPC91bD4KLSAgPC9ib2R5
PgotPC9odG1sPgotYGBgCi0KLVlvdSBjYW4gZmluZCBhIGJyb3dzZXItc3BlY2lmaWMgYnVpbGQg
b2YgYGRpcmVjdG9yYCBbaGVyZV1bMV0gd2hpY2ggaGFzIGFsbCBvZiB0aGUgc2VydmVyIGNvZGUg
c3RyaXBwZWQgYXdheS4KLQotPGEgbmFtZT0iaHR0cC1yb3V0aW5nIj48L2E+Ci0jIyBTZXJ2ZXIt
U2lkZSBIVFRQIFJvdXRpbmcKLQotRGlyZWN0b3IgaGFuZGxlcyByb3V0aW5nIGZvciBIVFRQIHJl
cXVlc3RzIHNpbWlsYXIgdG8gYGpvdXJuZXlgIG9yIGBleHByZXNzYDoKLQotYGBganMKLSAgLy8K
LSAgLy8gcmVxdWlyZSB0aGUgbmF0aXZlIGh0dHAgbW9kdWxlLCBhcyB3ZWxsIGFzIGRpcmVjdG9y
LgotICAvLwotICB2YXIgaHR0cCA9IHJlcXVpcmUoJ2h0dHAnKSwKLSAgICAgIGRpcmVjdG9yID0g
cmVxdWlyZSgnZGlyZWN0b3InKTsKLQotICAvLwotICAvLyBjcmVhdGUgc29tZSBsb2dpYyB0byBi
ZSByb3V0ZWQgdG8uCi0gIC8vCi0gIGZ1bmN0aW9uIGhlbGxvV29ybGQoKSB7Ci0gICAgdGhpcy5y
ZXMud3JpdGVIZWFkKDIwMCwgeyAnQ29udGVudC1UeXBlJzogJ3RleHQvcGxhaW4nIH0pCi0gICAg
dGhpcy5yZXMuZW5kKCdoZWxsbyB3b3JsZCcpOwotICB9Ci0KLSAgLy8KLSAgLy8gZGVmaW5lIGEg
cm91dGluZyB0YWJsZS4KLSAgLy8KLSAgdmFyIHJvdXRlciA9IG5ldyBkaXJlY3Rvci5odHRwLlJv
dXRlcih7Ci0gICAgJy9oZWxsbyc6IHsKLSAgICAgIGdldDogaGVsbG9Xb3JsZAotICAgIH0KLSAg
fSk7Ci0KLSAgLy8KLSAgLy8gc2V0dXAgYSBzZXJ2ZXIgYW5kIHdoZW4gdGhlcmUgaXMgYSByZXF1
ZXN0LCBkaXNwYXRjaCB0aGUKLSAgLy8gcm91dGUgdGhhdCB3YXMgcmVxdWVzdGVkIGluIHRoZSBy
ZXF1ZXN0IG9iamVjdC4KLSAgLy8KLSAgdmFyIHNlcnZlciA9IGh0dHAuY3JlYXRlU2VydmVyKGZ1
bmN0aW9uIChyZXEsIHJlcykgewotICAgIHJvdXRlci5kaXNwYXRjaChyZXEsIHJlcywgZnVuY3Rp
b24gKGVycikgewotICAgICAgaWYgKGVycikgewotICAgICAgICByZXMud3JpdGVIZWFkKDQwNCk7
Ci0gICAgICAgIHJlcy5lbmQoKTsKLSAgICAgIH0KLSAgICB9KTsKLSAgfSk7Ci0KLSAgLy8KLSAg
Ly8gWW91IGNhbiBhbHNvIGRvIGFkLWhvYyByb3V0aW5nLCBzaW1pbGFyIHRvIGBqb3VybmV5YCBv
ciBgZXhwcmVzc2AuCi0gIC8vIFRoaXMgY2FuIGJlIGRvbmUgd2l0aCBhIHN0cmluZyBvciBhIHJl
Z2V4cC4KLSAgLy8KLSAgcm91dGVyLmdldCgnL2JvbmpvdXInLCBoZWxsb1dvcmxkKTsKLSAgcm91
dGVyLmdldCgvaG9sYS8sIGhlbGxvV29ybGQpOwotCi0gIC8vCi0gIC8vIHNldCB0aGUgc2VydmVy
IHRvIGxpc3RlbiBvbiBwb3J0IGA4MDgwYC4KLSAgLy8KLSAgc2VydmVyLmxpc3Rlbig4MDgwKTsK
LWBgYAotCi0jIyMgU2VlIEFsc286Ci0KLSAtIEF1dG8tZ2VuZXJhdGVkIE5vZGUuanMgQVBJIENs
aWVudHMgZm9yIHJvdXRlcnMgdXNpbmcgW0RpcmVjdG9yLVJlZmxlY3Rvcl0oaHR0cDovL2dpdGh1
Yi5jb20vZmxhdGlyb24vZGlyZWN0b3ItcmVmbGVjdG9yKQotIC0gUkVTVGZ1bCBSZXNvdXJjZSBy
b3V0aW5nIHVzaW5nIFtyZXN0ZnVsXShodHRwOi8vZ2l0aHViLmNvbS9mbGF0aXJvbi9yZXN0ZnVs
KQotIC0gSFRNTCAvIFBsYWluIFRleHQgdmlld3Mgb2Ygcm91dGVycyB1c2luZyBbRGlyZWN0b3It
RXhwbG9yZXJdKGh0dHA6Ly9naXRodWIuY29tL2ZsYXRpcm9uL2RpcmVjdG9yLWV4cGxvcmVyKQot
Ci08YSBuYW1lPSJjbGktcm91dGluZyI+PC9hPgotIyMgQ0xJIFJvdXRpbmcKLQotRGlyZWN0b3Ig
c3VwcG9ydHMgQ29tbWFuZCBMaW5lIEludGVyZmFjZSByb3V0aW5nLiBSb3V0ZXMgZm9yIGNsaSBv
cHRpb25zIGFyZSBiYXNlZCBvbiBjb21tYW5kIGxpbmUgaW5wdXQgKGkuZS4gYHByb2Nlc3MuYXJn
dmApIGluc3RlYWQgb2YgYSBVUkwuCi0KLWBgYCBqcwotICB2YXIgZGlyZWN0b3IgPSByZXF1aXJl
KCdkaXJlY3RvcicpOwotCi0gIHZhciByb3V0ZXIgPSBuZXcgZGlyZWN0b3IuY2xpLlJvdXRlcigp
OwotCi0gIHJvdXRlci5vbignY3JlYXRlJywgZnVuY3Rpb24gKCkgewotICAgIGNvbnNvbGUubG9n
KCdjcmVhdGUgc29tZXRoaW5nJyk7Ci0gIH0pOwotCi0gIHJvdXRlci5vbigvZGVzdHJveS8sIGZ1
bmN0aW9uICgpIHsKLSAgICBjb25zb2xlLmxvZygnZGVzdHJveSBzb21ldGhpbmcnKTsKLSAgfSk7
Ci0KLSAgLy8gWW91IHdpbGwgbmVlZCB0byBkaXNwYXRjaCB0aGUgY2xpIGFyZ3VtZW50cyB5b3Vy
c2VsZgotICByb3V0ZXIuZGlzcGF0Y2goJ29uJywgcHJvY2Vzcy5hcmd2LnNsaWNlKDIpLmpvaW4o
JyAnKSk7Ci1gYGAKLQotVXNpbmcgdGhlIGNsaSByb3V0ZXIsIHlvdSBjYW4gZGlzcGF0Y2ggY29t
bWFuZHMgYnkgcGFzc2luZyB0aGVtIGFzIGEgc3RyaW5nLiBGb3IgZXhhbXBsZSwgaWYgdGhpcyBl
eGFtcGxlIGlzIGluIGEgZmlsZSBjYWxsZWQgYGZvby5qc2A6Ci0KLWBgYCBiYXNoCi0kIG5vZGUg
Zm9vLmpzIGNyZWF0ZQotY3JlYXRlIHNvbWV0aGluZwotJCBub2RlIGZvby5qcyBkZXN0cm95Ci1k
ZXN0cm95IHNvbWV0aGluZwotYGBgCi0KLTxhIG5hbWU9ImFwaS1kb2N1bWVudGF0aW9uIj48L2E+
Ci0jIEFQSSBEb2N1bWVudGF0aW9uCi0KLSogW0NvbnN0cnVjdG9yXSgjY29uc3RydWN0b3IpCi0q
IFtSb3V0aW5nIFRhYmxlXSgjcm91dGluZy10YWJsZSkKLSogW0FkaG9jIFJvdXRpbmddKCNhZGhv
Yy1yb3V0aW5nKQotKiBbU2NvcGVkIFJvdXRpbmddKCNzY29wZWQtcm91dGluZykKLSogW1JvdXRp
bmcgRXZlbnRzXSgjcm91dGluZy1ldmVudHMpCi0qIFtDb25maWd1cmF0aW9uXSgjY29uZmlndXJh
dGlvbikKLSogW1VSTCBNYXRjaGluZ10oI3VybC1tYXRjaGluZykKLSogW1VSTCBQYXJhbXNdKCN1
cmwtcGFyYW1zKQotKiBbUm91dGUgUmVjdXJzaW9uXSgjcm91dGUtcmVjdXJzaW9uKQotKiBbQXN5
bmMgUm91dGluZ10oI2FzeW5jLXJvdXRpbmcpCi0qIFtSZXNvdXJjZXNdKCNyZXNvdXJjZXMpCi0q
IFtIaXN0b3J5IEFQSV0oI2hpc3RvcnktYXBpKQotKiBbSW5zdGFuY2UgTWV0aG9kc10oI2luc3Rh
bmNlLW1ldGhvZHMpCi0qIFtBdHRhY2ggUHJvcGVydGllcyB0byBgdGhpc2BdKCNhdHRhY2gtdG8t
dGhpcykKLSogW0hUVFAgU3RyZWFtaW5nIGFuZCBCb2R5IFBhcnNpbmddKCNodHRwLXN0cmVhbWlu
Zy1ib2R5LXBhcnNpbmcpCi0KLTxhIG5hbWU9ImNvbnN0cnVjdG9yIj48L2E+Ci0jIyBDb25zdHJ1
Y3RvcgotCi1gYGAganMKLSAgdmFyIHJvdXRlciA9IFJvdXRlcihyb3V0ZXMpOwotYGBgCi0KLTxh
IG5hbWU9InJvdXRpbmctdGFibGUiPjwvYT4KLSMjIFJvdXRpbmcgVGFibGUKLQotQW4gb2JqZWN0
IGxpdGVyYWwgdGhhdCBjb250YWlucyBuZXN0ZWQgcm91dGUgZGVmaW5pdGlvbnMuIEEgcG90ZW50
aWFsbHkgbmVzdGVkIHNldCBvZiBrZXkvdmFsdWUgcGFpcnMuIFRoZSBrZXlzIGluIHRoZSBvYmpl
Y3QgbGl0ZXJhbCByZXByZXNlbnQgZWFjaCBwb3RlbnRpYWwgcGFydCBvZiB0aGUgVVJMLiBUaGUg
dmFsdWVzIGluIHRoZSBvYmplY3QgbGl0ZXJhbCBjb250YWluIHJlZmVyZW5jZXMgdG8gdGhlIGZ1
bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBhc3NvY2lhdGVkIHdpdGggdGhlbS4gKmJhcmsqIGFuZCAq
bWVvdyogYXJlIHR3byBmdW5jdGlvbnMgdGhhdCB5b3UgaGF2ZSBkZWZpbmVkIGluIHlvdXIgY29k
ZS4KLQotYGBgIGpzCi0gIC8vCi0gIC8vIEFzc2lnbiByb3V0ZXMgdG8gYW4gb2JqZWN0IGxpdGVy
YWwuCi0gIC8vCi0gIHZhciByb3V0ZXMgPSB7Ci0gICAgLy8KLSAgICAvLyBhIHJvdXRlIHdoaWNo
IGFzc2lnbnMgdGhlIGZ1bmN0aW9uIGBiYXJrYC4KLSAgICAvLwotICAgICcvZG9nJzogYmFyaywK
LSAgICAvLwotICAgIC8vIGEgcm91dGUgd2hpY2ggYXNzaWducyB0aGUgZnVuY3Rpb25zIGBtZW93
YCBhbmQgYHNjcmF0Y2hgLgotICAgIC8vCi0gICAgJy9jYXQnOiBbbWVvdywgc2NyYXRjaF0KLSAg
fTsKLQotICAvLwotICAvLyBJbnN0YW50aWF0ZSB0aGUgcm91dGVyLgotICAvLwotICB2YXIgcm91
dGVyID0gUm91dGVyKHJvdXRlcyk7Ci1gYGAKLQotPGEgbmFtZT0iYWRob2Mtcm91dGluZyI+PC9h
PgotIyMgQWRob2MgUm91dGluZwotCi1XaGVuIGRldmVsb3BpbmcgbGFyZ2UgY2xpZW50LXNpZGUg
b3Igc2VydmVyLXNpZGUgYXBwbGljYXRpb25zIGl0IGlzIG5vdCBhbHdheXMgcG9zc2libGUgdG8g
ZGVmaW5lIHJvdXRlcyBpbiBvbmUgbG9jYXRpb24uIFVzdWFsbHkgaW5kaXZpZHVhbCBkZWNvdXBs
ZWQgY29tcG9uZW50cyByZWdpc3RlciB0aGVpciBvd24gcm91dGVzIHdpdGggdGhlIGFwcGxpY2F0
aW9uIHJvdXRlci4gV2UgcmVmZXIgdG8gdGhpcyBhcyBfQWRob2MgUm91dGluZy5fIExldHMgdGFr
ZSBhIGxvb2sgYXQgdGhlIEFQSSBgZGlyZWN0b3JgIGV4cG9zZXMgZm9yIGFkaG9jIHJvdXRpbmc6
Ci0KLSoqQ2xpZW50LXNpZGUgUm91dGluZyoqCi0KLWBgYCBqcwotICB2YXIgcm91dGVyID0gbmV3
IFJvdXRlcigpLmluaXQoKTsKLQotICByb3V0ZXIub24oJy9zb21lL3Jlc291cmNlJywgZnVuY3Rp
b24gKCkgewotICAgIC8vCi0gICAgLy8gRG8gc29tZXRoaW5nIG9uIGAvIy9zb21lL3Jlc291cmNl
YAotICAgIC8vCi0gIH0pOwotYGBgCi0KLSoqSFRUUCBSb3V0aW5nKioKLQotYGBgIGpzCi0gIHZh
ciByb3V0ZXIgPSBuZXcgZGlyZWN0b3IuaHR0cC5Sb3V0ZXIoKTsKLQotICByb3V0ZXIuZ2V0KC9c
L3NvbWVcL3Jlc291cmNlLywgZnVuY3Rpb24gKCkgewotICAgIC8vCi0gICAgLy8gRG8gc29tZXRo
aW5nIG9uIGFuIEdFVCB0byBgL3NvbWUvcmVzb3VyY2VgCi0gICAgLy8KLSAgfSk7Ci1gYGAKLQot
PGEgbmFtZT0ic2NvcGVkLXJvdXRpbmciPjwvYT4KLSMjIFNjb3BlZCBSb3V0aW5nCi0KLUluIGxh
cmdlIHdlYiBhcHBsaWF0aW9ucywgYm90aCBbQ2xpZW50LXNpZGVdKCNjbGllbnQtc2lkZSkgYW5k
IFtTZXJ2ZXItc2lkZV0oI2h0dHAtcm91dGluZyksIHJvdXRlcyBhcmUgb2Z0ZW4gc2NvcGVkIHdp
dGhpbiBhIGZldyBpbmRpdmlkdWFsIHJlc291cmNlcy4gRGlyZWN0b3IgZXhwb3NlcyBhIHNpbXBs
ZSB3YXkgdG8gZG8gdGhpcyBmb3IgW0FkaG9jIFJvdXRpbmddKCNhZGhvYy1yb3V0aW5nKSBzY2Vu
YXJpb3M6Ci0KLWBgYCBqcwotICB2YXIgcm91dGVyID0gbmV3IGRpcmVjdG9yLmh0dHAuUm91dGVy
KCk7Ci0KLSAgLy8KLSAgLy8gQ3JlYXRlIHJvdXRlcyBpbnNpZGUgdGhlIGAvdXNlcnNgIHNjb3Bl
LgotICAvLwotICByb3V0ZXIucGF0aCgvXC91c2Vyc1wvKFx3KykvLCBmdW5jdGlvbiAoKSB7Ci0g
ICAgLy8KLSAgICAvLyBUaGUgYHRoaXNgIGNvbnRleHQgb2YgdGhlIGZ1bmN0aW9uIHBhc3NlZCB0
byBgLnBhdGgoKWAKLSAgICAvLyBpcyB0aGUgUm91dGVyIGl0c2VsZi4KLSAgICAvLwotCi0gICAg
dGhpcy5wb3N0KGZ1bmN0aW9uIChpZCkgewotICAgICAgLy8KLSAgICAgIC8vIENyZWF0ZSB0aGUg
dXNlciB3aXRoIHRoZSBzcGVjaWZpZWQgYGlkYC4KLSAgICAgIC8vCi0gICAgfSk7Ci0KLSAgICB0
aGlzLmdldChmdW5jdGlvbiAoaWQpIHsKLSAgICAgIC8vCi0gICAgICAvLyBSZXRyZWl2ZSB0aGUg
dXNlciB3aXRoIHRoZSBzcGVjaWZpZWQgYGlkYC4KLSAgICAgIC8vCi0gICAgfSk7Ci0KLSAgICB0
aGlzLmdldCgvXC9mcmllbmRzLywgZnVuY3Rpb24gKGlkKSB7Ci0gICAgICAvLwotICAgICAgLy8g
R2V0IHRoZSBmcmllbmRzIGZvciB0aGUgdXNlciB3aXRoIHRoZSBzcGVjaWZpZWQgYGlkYC4KLSAg
ICAgIC8vCi0gICAgfSk7Ci0gIH0pOwotYGBgCi0KLTxhIG5hbWU9InJvdXRpbmctZXZlbnRzIj48
L2E+Ci0jIyBSb3V0aW5nIEV2ZW50cwotCi1JbiBgZGlyZWN0b3JgLCBhICJyb3V0aW5nIGV2ZW50
IiBpcyBhIG5hbWVkIHByb3BlcnR5IGluIHRoZSBbUm91dGluZyBUYWJsZV0oI3JvdXRpbmctdGFi
bGUpIHdoaWNoIGNhbiBiZSBhc3NpZ25lZCB0byBhIGZ1bmN0aW9uIG9yIGFuIEFycmF5IG9mIGZ1
bmN0aW9ucyB0byBiZSBjYWxsZWQgd2hlbiBhIHJvdXRlIGlzIG1hdGNoZWQgaW4gYSBjYWxsIHRv
IGByb3V0ZXIuZGlzcGF0Y2goKWAuCi0KLSogKipvbjoqKiBBIGZ1bmN0aW9uIG9yIEFycmF5IG9m
IGZ1bmN0aW9ucyB0byBleGVjdXRlIHdoZW4gdGhlIHJvdXRlIGlzIG1hdGNoZWQuCi0qICoqYmVm
b3JlOioqIEEgZnVuY3Rpb24gb3IgQXJyYXkgb2YgZnVuY3Rpb25zIHRvIGV4ZWN1dGUgYmVmb3Jl
IGNhbGxpbmcgdGhlIGBvbmAgbWV0aG9kKHMpLgotCi0qKkNsaWVudC1zaWRlIG9ubHkqKgotCi0q
ICoqYWZ0ZXI6KiogQSBmdW5jdGlvbiBvciBBcnJheSBvZiBmdW5jdGlvbnMgdG8gZXhlY3V0ZSB3
aGVuIGxlYXZpbmcgYSBwYXJ0aWN1bGFyIHJvdXRlLgotKiAqKm9uY2U6KiogQSBmdW5jdGlvbiBv
ciBBcnJheSBvZiBmdW5jdGlvbnMgdG8gZXhlY3V0ZSBvbmx5IG9uY2UgZm9yIGEgcGFydGljdWxh
ciByb3V0ZS4KLQotPGEgbmFtZT0iY29uZmlndXJhdGlvbiI+PC9hPgotIyMgQ29uZmlndXJhdGlv
bgotCi1HaXZlbiB0aGUgZmxleGlibGUgbmF0dXJlIG9mIGBkaXJlY3RvcmAgdGhlcmUgYXJlIHNl
dmVyYWwgb3B0aW9ucyBhdmFpbGFibGUgZm9yIGJvdGggdGhlIFtDbGllbnQtc2lkZV0oI2NsaWVu
dC1zaWRlKSBhbmQgW1NlcnZlci1zaWRlXSgjaHR0cC1yb3V0aW5nKS4gVGhlc2Ugb3B0aW9ucyBj
YW4gYmUgc2V0IHVzaW5nIHRoZSBgLmNvbmZpZ3VyZSgpYCBtZXRob2Q6Ci0KLWBgYCBqcwotICB2
YXIgcm91dGVyID0gbmV3IGRpcmVjdG9yLlJvdXRlcihyb3V0ZXMpLmNvbmZpZ3VyZShvcHRpb25z
KTsKLWBgYAotCi1UaGUgYG9wdGlvbnNgIGFyZToKLQotKiAqKnJlY3Vyc2U6KiogQ29udHJvbHMg
W3JvdXRlIHJlY3Vyc2lvbl0oI3JvdXRlLXJlY3Vyc2lvbikuIFVzZSBgZm9yd2FyZGAsIGBiYWNr
d2FyZGAsIG9yIGBmYWxzZWAuIERlZmF1bHQgaXMgYGZhbHNlYCBDbGllbnQtc2lkZSwgYW5kIGBi
YWNrd2FyZGAgU2VydmVyLXNpZGUuCi0qICoqc3RyaWN0OioqIElmIHNldCB0byBgZmFsc2VgLCB0
aGVuIHRyYWlsaW5nIHNsYXNoZXMgKG9yIG90aGVyIGRlbGltaXRlcnMpIGFyZSBhbGxvd2VkIGlu
IHJvdXRlcy4gRGVmYXVsdCBpcyBgdHJ1ZWAuCi0qICoqYXN5bmM6KiogQ29udHJvbHMgW2FzeW5j
IHJvdXRpbmddKCNhc3luYy1yb3V0aW5nKS4gVXNlIGB0cnVlYCBvciBgZmFsc2VgLiBEZWZhdWx0
IGlzIGBmYWxzZWAuCi0qICoqZGVsaW1pdGVyOioqIENoYXJhY3RlciBzZXBhcmF0b3IgYmV0d2Vl
biByb3V0ZSBmcmFnbWVudHMuIERlZmF1bHQgaXMgYC9gLgotKiAqKm5vdGZvdW5kOioqIEEgZnVu
Y3Rpb24gdG8gY2FsbCBpZiBubyByb3V0ZSBpcyBmb3VuZCBvbiBhIGNhbGwgdG8gYHJvdXRlci5k
aXNwYXRjaCgpYC4KLSogKipvbjoqKiBBIGZ1bmN0aW9uIChvciBsaXN0IG9mIGZ1bmN0aW9ucykg
dG8gY2FsbCBvbiBldmVyeSBjYWxsIHRvIGByb3V0ZXIuZGlzcGF0Y2goKWAgd2hlbiBhIHJvdXRl
IGlzIGZvdW5kLgotKiAqKmJlZm9yZToqKiBBIGZ1bmN0aW9uIChvciBsaXN0IG9mIGZ1bmN0aW9u
cykgdG8gY2FsbCBiZWZvcmUgZXZlcnkgY2FsbCB0byBgcm91dGVyLmRpc3BhdGNoKClgIHdoZW4g
YSByb3V0ZSBpcyBmb3VuZC4KLQotKipDbGllbnQtc2lkZSBvbmx5KioKLQotKiAqKnJlc291cmNl
OioqIEFuIG9iamVjdCB0byB3aGljaCBzdHJpbmctYmFzZWQgcm91dGVzIHdpbGwgYmUgYm91bmQu
IFRoaXMgY2FuIGJlIGVzcGVjaWFsbHkgdXNlZnVsIGZvciBsYXRlLWJpbmRpbmcgdG8gcm91dGUg
ZnVuY3Rpb25zIChzdWNoIGFzIGFzeW5jIGNsaWVudC1zaWRlIHJlcXVpcmVzKS4KLSogKiphZnRl
cjoqKiBBIGZ1bmN0aW9uIChvciBsaXN0IG9mIGZ1bmN0aW9ucykgdG8gY2FsbCB3aGVuIGEgZ2l2
ZW4gcm91dGUgaXMgbm8gbG9uZ2VyIHRoZSBhY3RpdmUgcm91dGUuCi0qICoqaHRtbDVoaXN0b3J5
OioqIElmIHNldCB0byBgdHJ1ZWAgYW5kIGNsaWVudCBzdXBwb3J0cyBgcHVzaFN0YXRlKClgLCB0
aGVuIHVzZXMgSFRNTDUgSGlzdG9yeSBBUEkgaW5zdGVhZCBvZiBoYXNoIGZyYWdtZW50cy4gU2Vl
IFtIaXN0b3J5IEFQSV0oI2hpc3RvcnktYXBpKSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLSogKipy
dW5faGFuZGxlcl9pbl9pbml0OioqIElmIGBodG1sNWhpc3RvcnlgIGlzIGVuYWJsZWQsIHRoZSBy
b3V0ZSBoYW5kbGVyIGJ5IGRlZmF1bHQgaXMgZXhlY3V0ZWQgdXBvbiBgUm91dGVyLmluaXQoKWAg
c2luY2Ugd2l0aCByZWFsIFVSSXMgdGhlIHJvdXRlciBjYW4gbm90IGtub3cgaWYgaXQgc2hvdWxk
IGNhbGwgYSByb3V0ZSBoYW5kbGVyIG9yIG5vdC4gU2V0dGluZyB0aGlzIHRvIGBmYWxzZWAgZGlz
YWJsZXMgdGhlIHJvdXRlIGhhbmRsZXIgaW5pdGlhbCBleGVjdXRpb24uCi0KLTxhIG5hbWU9InVy
bC1tYXRjaGluZyI+PC9hPgotIyMgVVJMIE1hdGNoaW5nCi0KLWBgYCBqcwotICB2YXIgcm91dGVy
ID0gUm91dGVyKHsKLSAgICAvLwotICAgIC8vIGdpdmVuIHRoZSByb3V0ZSAnL2RvZy95ZWxsYScu
Ci0gICAgLy8KLSAgICAnL2RvZyc6IHsKLSAgICAgICcvOmNvbG9yJzogewotICAgICAgICAvLwot
ICAgICAgICAvLyB0aGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIHRoZSB2YWx1ZSAneWVsbGEnLgot
ICAgICAgICAvLwotICAgICAgICBvbjogZnVuY3Rpb24gKGNvbG9yKSB7IGNvbnNvbGUubG9nKGNv
bG9yKSB9Ci0gICAgICB9Ci0gICAgfQotICB9KTsKLWBgYAotCi1Sb3V0ZXMgY2FuIHNvbWV0aW1l
cyBiZWNvbWUgdmVyeSBjb21wbGV4LCBgc2ltcGxlLzp0b2tlbnNgIGRvbid0IGFsd2F5cyBzdWZm
aWNlLiBEaXJlY3RvciBzdXBwb3J0cyByZWd1bGFyIGV4cHJlc3Npb25zIGluc2lkZSB0aGUgcm91
dGUgbmFtZXMuIFRoZSB2YWx1ZXMgY2FwdHVyZWQgZnJvbSB0aGUgcmVndWxhciBleHByZXNzaW9u
cyBhcmUgcGFzc2VkIHRvIHlvdXIgbGlzdGVuZXIgZnVuY3Rpb24uCi0KLWBgYCBqcwotICB2YXIg
cm91dGVyID0gUm91dGVyKHsKLSAgICAvLwotICAgIC8vIGdpdmVuIHRoZSByb3V0ZSAnL2hlbGxv
L3dvcmxkJy4KLSAgICAvLwotICAgICcvaGVsbG8nOiB7Ci0gICAgICAnLyhcXHcrKSc6IHsKLSAg
ICAgICAgLy8KLSAgICAgICAgLy8gdGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiB0aGUgdmFsdWUg
J3dvcmxkJy4KLSAgICAgICAgLy8KLSAgICAgICAgb246IGZ1bmN0aW9uICh3aG8pIHsgY29uc29s
ZS5sb2cod2hvKSB9Ci0gICAgICB9Ci0gICAgfQotICB9KTsKLWBgYAotCi1gYGAganMKLSAgdmFy
IHJvdXRlciA9IFJvdXRlcih7Ci0gICAgLy8KLSAgICAvLyBnaXZlbiB0aGUgcm91dGUgJy9oZWxs
by93b3JsZC9qb2hueS9hcHBsZXNlZWQnLgotICAgIC8vCi0gICAgJy9oZWxsbyc6IHsKLSAgICAg
ICcvd29ybGQvPyhbXlwvXSopXC8oW15cL10qKS8/JzogZnVuY3Rpb24gKGEsIGIpIHsKLSAgICAg
ICAgY29uc29sZS5sb2coYSwgYik7Ci0gICAgICB9Ci0gICAgfQotICB9KTsKLWBgYAotCi08YSBu
YW1lPSJ1cmwtcGFyYW1zIj48L2E+Ci0jIyBVUkwgUGFyYW1ldGVycwotCi1XaGVuIHlvdSBhcmUg
dXNpbmcgdGhlIHNhbWUgcm91dGUgZnJhZ21lbnRzIGl0IGlzIG1vcmUgZGVzY3JpcHRpdmUgdG8g
ZGVmaW5lIHRoZXNlIGZyYWdtZW50cyBieSBuYW1lIGFuZCB0aGVuIHVzZSB0aGVtIGluIHlvdXIg
W1JvdXRpbmcgVGFibGVdKCNyb3V0aW5nLXRhYmxlKSBvciBbQWRob2MgUm91dGVzXSgjYWRob2Mt
cm91dGluZykuIENvbnNpZGVyIGEgc2ltcGxlIGV4YW1wbGUgd2hlcmUgYSBgdXNlcklkYCBpcyB1
c2VkIHJlcGVhdGVkbHkuCi0KLWBgYCBqcwotICAvLwotICAvLyBDcmVhdGUgYSByb3V0ZXIuIFRo
aXMgY291bGQgYWxzbyBiZSBkaXJlY3Rvci5jbGkuUm91dGVyKCkgb3IKLSAgLy8gZGlyZWN0b3Iu
aHR0cC5Sb3V0ZXIoKS4KLSAgLy8KLSAgdmFyIHJvdXRlciA9IG5ldyBkaXJlY3Rvci5Sb3V0ZXIo
KTsKLQotICAvLwotICAvLyBBIHJvdXRlIGNvdWxkIGJlIGRlZmluZWQgdXNpbmcgdGhlIGB1c2Vy
SWRgIGV4cGxpY2l0bHkuCi0gIC8vCi0gIHJvdXRlci5vbigvKFtcdy1fXSspLywgZnVuY3Rpb24g
KHVzZXJJZCkgeyB9KTsKLQotICAvLwotICAvLyBEZWZpbmUgYSBzaG9ydGhhbmQgZm9yIHRoaXMg
ZnJhZ21lbnQgY2FsbGVkIGB1c2VySWRgLgotICAvLwotICByb3V0ZXIucGFyYW0oJ3VzZXJJZCcs
IC8oW1xcd1xcLV0rKS8pOwotCi0gIC8vCi0gIC8vIE5vdyBtdWx0aXBsZSByb3V0ZXMgY2FuIGJl
IGRlZmluZWQgd2l0aCB0aGUgc2FtZQotICAvLyByZWd1bGFyIGV4cHJlc3Npb24uCi0gIC8vCi0g
IHJvdXRlci5vbignL2FueXRoaW5nLzp1c2VySWQnLCBmdW5jdGlvbiAodXNlcklkKSB7IH0pOwot
ICByb3V0ZXIub24oJy9zb21ldGhpbmctZWxzZS86dXNlcklkJywgZnVuY3Rpb24gKHVzZXJJZCkg
eyB9KTsKLWBgYAotCi08YSBuYW1lPSJyb3V0ZS1yZWN1cnNpb24iPjwvYT4KLSMjIFJvdXRlIFJl
Y3Vyc2lvbgotCi1DYW4gYmUgYXNzaWduZWQgdGhlIHZhbHVlIG9mIGBmb3J3YXJkYCBvciBgYmFj
a3dhcmRgLiBUaGUgcmVjdXJzZSBvcHRpb24gd2lsbCBkZXRlcm1pbmUgdGhlIG9yZGVyIGluIHdo
aWNoIHRvIGZpcmUgdGhlIGxpc3RlbmVycyB0aGF0IGFyZSBhc3NvY2lhdGVkIHdpdGggeW91ciBy
b3V0ZXMuIElmIHRoaXMgb3B0aW9uIGlzIE5PVCBzcGVjaWZpZWQgb3Igc2V0IHRvIG51bGwsIHRo
ZW4gb25seSB0aGUgbGlzdGVuZXJzIGFzc29jaWF0ZWQgd2l0aCBhbiBleGFjdCBtYXRjaCB3aWxs
IGJlIGZpcmVkLgotCi0jIyMgTm8gcmVjdXJzaW9uLCB3aXRoIHRoZSBVUkwgL2RvZy9hbmdyeQot
Ci1gYGAganMKLSAgdmFyIHJvdXRlcyA9IHsKLSAgICAnL2RvZyc6IHsKLSAgICAgICcvYW5ncnkn
OiB7Ci0gICAgICAgIC8vCi0gICAgICAgIC8vIE9ubHkgdGhpcyBtZXRob2Qgd2lsbCBiZSBmaXJl
ZC4KLSAgICAgICAgLy8KLSAgICAgICAgb246IGdyb3dsCi0gICAgICB9LAotICAgICAgb246IGJh
cmsKLSAgICB9Ci0gIH07Ci0KLSAgdmFyIHJvdXRlciA9IFJvdXRlcihyb3V0ZXMpOwotYGBgCi0K
LSMjIyBSZWN1cnNpb24gc2V0IHRvIGBiYWNrd2FyZGAsIHdpdGggdGhlIFVSTCAvZG9nL2FuZ3J5
Ci0KLWBgYCBqcwotICB2YXIgcm91dGVzID0gewotICAgICcvZG9nJzogewotICAgICAgJy9hbmdy
eSc6IHsKLSAgICAgICAgLy8KLSAgICAgICAgLy8gVGhpcyBtZXRob2Qgd2lsbCBiZSBmaXJlZCBm
aXJzdC4KLSAgICAgICAgLy8KLSAgICAgICAgb246IGdyb3dsCi0gICAgICB9LAotICAgICAgLy8K
LSAgICAgIC8vIFRoaXMgbWV0aG9kIHdpbGwgYmUgZmlyZWQgc2Vjb25kLgotICAgICAgLy8KLSAg
ICAgIG9uOiBiYXJrCi0gICAgfQotICB9OwotCi0gIHZhciByb3V0ZXIgPSBSb3V0ZXIocm91dGVz
KS5jb25maWd1cmUoeyByZWN1cnNlOiAnYmFja3dhcmQnIH0pOwotYGBgCi0KLSMjIyBSZWN1cnNp
b24gc2V0IHRvIGBmb3J3YXJkYCwgd2l0aCB0aGUgVVJMIC9kb2cvYW5ncnkKLQotYGBgIGpzCi0g
IHZhciByb3V0ZXMgPSB7Ci0gICAgJy9kb2cnOiB7Ci0gICAgICAnL2FuZ3J5JzogewotICAgICAg
ICAvLwotICAgICAgICAvLyBUaGlzIG1ldGhvZCB3aWxsIGJlIGZpcmVkIHNlY29uZC4KLSAgICAg
ICAgLy8KLSAgICAgICAgb246IGdyb3dsCi0gICAgICB9LAotICAgICAgLy8KLSAgICAgIC8vIFRo
aXMgbWV0aG9kIHdpbGwgYmUgZmlyZWQgZmlyc3QuCi0gICAgICAvLwotICAgICAgb246IGJhcmsK
LSAgICB9Ci0gIH07Ci0KLSAgdmFyIHJvdXRlciA9IFJvdXRlcihyb3V0ZXMpLmNvbmZpZ3VyZSh7
IHJlY3Vyc2U6ICdmb3J3YXJkJyB9KTsKLWBgYAotCi0jIyMgQnJlYWtpbmcgb3V0IG9mIHJlY3Vy
c2lvbiwgd2l0aCB0aGUgVVJMIC9kb2cvYW5ncnkKLQotYGBgIGpzCi0gIHZhciByb3V0ZXMgPSB7
Ci0gICAgJy9kb2cnOiB7Ci0gICAgICAnL2FuZ3J5JzogewotICAgICAgICAvLwotICAgICAgICAv
LyBUaGlzIG1ldGhvZCB3aWxsIGJlIGZpcmVkIGZpcnN0LgotICAgICAgICAvLwotICAgICAgICBv
bjogZnVuY3Rpb24oKSB7IHJldHVybiBmYWxzZTsgfQotICAgICAgfSwKLSAgICAgIC8vCi0gICAg
ICAvLyBUaGlzIG1ldGhvZCB3aWxsIG5vdCBiZSBmaXJlZC4KLSAgICAgIC8vCi0gICAgICBvbjog
YmFyawotICAgIH0KLSAgfTsKLQotICAvLwotICAvLyBUaGlzIGZlYXR1cmUgd29ya3MgaW4gcmV2
ZXJzZSB3aXRoIHJlY3Vyc2lvbiBzZXQgdG8gdHJ1ZS4KLSAgLy8KLSAgdmFyIHJvdXRlciA9IFJv
dXRlcihyb3V0ZXMpLmNvbmZpZ3VyZSh7IHJlY3Vyc2U6ICdiYWNrd2FyZCcgfSk7Ci1gYGAKLQot
PGEgbmFtZT0iYXN5bmMtcm91dGluZyI+PC9hPgotIyMgQXN5bmMgUm91dGluZwotCi1CZWZvcmUg
ZGl2aW5nIGludG8gaG93IERpcmVjdG9yIGV4cG9zZXMgYXN5bmMgcm91dGluZywgeW91IHNob3Vs
ZCB1bmRlcnN0YW5kIFtSb3V0ZSBSZWN1cnNpb25dKCNyb3V0ZS1yZWN1cnNpb24pLiBBdCBpdCdz
IGNvcmUgcm91dGUgcmVjdXJzaW9uIGlzIGFib3V0IGV2YWx1YXRpbmcgYSBzZXJpZXMgb2YgZnVu
Y3Rpb25zIGdhdGhlcmVkIHdoZW4gdHJhdmVyc2luZyB0aGUgW1JvdXRpbmcgVGFibGVdKCNyb3V0
aW5nLXRhYmxlKS4KLQotTm9ybWFsbHkgdGhpcyBzZXJpZXMgb2YgZnVuY3Rpb25zIGlzIGV2YWx1
YXRlZCBzeW5jaHJvbm91c2x5LiBJbiBhc3luYyByb3V0aW5nLCB0aGVzZSBmdW5jdGlvbnMgYXJl
IGV2YWx1YXRlZCBhc3luY2hyb25vdXNseS4gQXN5bmMgcm91dGluZyBjYW4gYmUgZXh0cmVtZWx5
IHVzZWZ1bCBib3RoIG9uIHRoZSBjbGllbnQtc2lkZSBhbmQgdGhlIHNlcnZlci1zaWRlOgotCi0q
ICoqQ2xpZW50LXNpZGU6KiogVG8gZW5zdXJlIGFuIGFuaW1hdGlvbiBvciBvdGhlciBhc3luYyBv
cGVyYXRpb25zIChzdWNoIGFzIEhUVFAgcmVxdWVzdHMgZm9yIGF1dGhlbnRpY2F0aW9uKSBoYXZl
IGNvbXBsZXRlZCBiZWZvcmUgY29udGludWluZyBldmFsdWF0aW9uIG9mIGEgcm91dGUuCi0qICoq
U2VydmVyLXNpZGU6KiogVG8gZW5zdXJlIGFyYml0cmFyeSBhc3luYyBvcGVyYXRpb25zIChzdWNo
IGFzIHBlcmZvcm1pbmcgYXV0aGVudGljYXRpb24pIGhhdmUgY29tcGxldGVkIGJlZm9yZSBjb250
aW51aW5nIHRoZSBldmFsdWF0aW9uIG9mIGEgcm91dGUuCi0KLVRoZSBtZXRob2Qgc2lnbmF0dXJl
cyBmb3Igcm91dGUgZnVuY3Rpb25zIGluIHN5bmNocm9ub3VzIGFuZCBhc3luY2hyb25vdXMgZXZh
bHVhdGlvbiBhcmUgZGlmZmVyZW50OiBhc3luYyByb3V0ZSBmdW5jdGlvbnMgdGFrZSBhbiBhZGRp
dGlvbmFsIGBuZXh0KClgIGNhbGxiYWNrLgotCi0jIyMgU3luY2hyb25vdXMgcm91dGUgZnVuY3Rp
b25zCi0KLWBgYCBqcwotICB2YXIgcm91dGVyID0gbmV3IGRpcmVjdG9yLlJvdXRlcigpOwotCi0g
IHJvdXRlci5vbignLzpmb28vOmJhci86YmF6eicsIGZ1bmN0aW9uIChmb28sIGJhciwgYmF6eikg
ewotICAgIC8vCi0gICAgLy8gRG8gc29tZXRoaW5nIGFzeW5jaHJvbm91cyB3aXRoIGBmb29gLCBg
YmFyYCwgYW5kIGBiYXp6YC4KLSAgICAvLwotICB9KTsKLWBgYAotCi0jIyMgQXN5bmNocm9ub3Vz
IHJvdXRlIGZ1bmN0aW9ucwotCi1gYGAganMKLSAgdmFyIHJvdXRlciA9IG5ldyBkaXJlY3Rvci5o
dHRwLlJvdXRlcigpLmNvbmZpZ3VyZSh7IGFzeW5jOiB0cnVlIH0pOwotCi0gIHJvdXRlci5vbign
Lzpmb28vOmJhci86YmF6eicsIGZ1bmN0aW9uIChmb28sIGJhciwgYmF6eiwgbmV4dCkgewotICAg
IC8vCi0gICAgLy8gR28gZG8gc29tZXRoaW5nIGFzeW5jLCBhbmQgZGV0ZXJtaW5lIHRoYXQgcm91
dGluZyBzaG91bGQgc3RvcAotICAgIC8vCi0gICAgbmV4dChmYWxzZSk7Ci0gIH0pOwotYGBgCi0K
LTxhIG5hbWU9InJlc291cmNlcyI+PC9hPgotIyMgUmVzb3VyY2VzCi0KLSoqQXZhaWxhYmxlIG9u
IHRoZSBDbGllbnQtc2lkZSBvbmx5LioqIEFuIG9iamVjdCBsaXRlcmFsIGNvbnRhaW5pbmcgZnVu
Y3Rpb25zLiBJZiBhIGhvc3Qgb2JqZWN0IGlzIHNwZWNpZmllZCwgeW91ciByb3V0ZSBkZWZpbml0
aW9ucyBjYW4gcHJvdmlkZSBzdHJpbmcgbGl0ZXJhbHMgdGhhdCByZXByZXNlbnQgdGhlIGZ1bmN0
aW9uIG5hbWVzIGluc2lkZSB0aGUgaG9zdCBvYmplY3QuIEEgaG9zdCBvYmplY3QgY2FuIHByb3Zp
ZGUgdGhlIG1lYW5zIGZvciBiZXR0ZXIgZW5jYXBzdWxhdGlvbiBhbmQgZGVzaWduLgotCi1gYGAg
anMKLQotICB2YXIgcm91dGVyID0gUm91dGVyKHsKLQotICAgICcvaGVsbG8nOiB7Ci0gICAgICAn
L3VzYSc6ICdhbWVyaWNhcycsCi0gICAgICAnL2NoaW5hJzogJ2FzaWEnCi0gICAgfQotCi0gIH0p
LmNvbmZpZ3VyZSh7IHJlc291cmNlOiBjb250YWluZXIgfSkuaW5pdCgpOwotCi0gIHZhciBjb250
YWluZXIgPSB7Ci0gICAgYW1lcmljYXM6IGZ1bmN0aW9uKCkgeyByZXR1cm4gdHJ1ZTsgfSwKLSAg
ICBjaGluYTogZnVuY3Rpb24oKSB7IHJldHVybiB0cnVlOyB9Ci0gIH07Ci0KLWBgYAotCi08YSBu
YW1lPSJoaXN0b3J5LWFwaSI+PC9hPgotIyMgSGlzdG9yeSBBUEkKLQotKipBdmFpbGFibGUgb24g
dGhlIENsaWVudC1zaWRlIG9ubHkuKiogRGlyZWN0b3Igc3VwcG9ydHMgdXNpbmcgSFRNTDUgSGlz
dG9yeSBBUEkgaW5zdGVhZCBvZiBoYXNoIGZyYWdtZW50cyBmb3IgbmF2aWdhdGlvbi4gVG8gdXNl
IHRoZSBBUEksIHBhc3MgYHtodG1sNWhpc3Rvcnk6IHRydWV9YCB0byBgY29uZmlndXJlKClgLiBV
c2Ugb2YgdGhlIEFQSSBpcyBlbmFibGVkIG9ubHkgaWYgdGhlIGNsaWVudCBzdXBwb3J0cyBgcHVz
aFN0YXRlKClgLgotCi1Vc2luZyB0aGUgQVBJIGdpdmVzIHlvdSBjbGVhbmVyIFVSSXMgYnV0IHRo
ZXkgY29tZSB3aXRoIGEgY29zdC4gVW5saWtlIHdpdGggaGFzaCBmcmFnbWVudHMgeW91ciByb3V0
ZSBVUklzIG11c3QgZXhpc3QuIFdoZW4gdGhlIGNsaWVudCBlbnRlcnMgYSBwYWdlLCBzYXkgaHR0
cDovL2Zvby5jb20vYmFyL2JheiwgdGhlIHdlYiBzZXJ2ZXIgbXVzdCByZXNwb25kIHdpdGggc29t
ZXRoaW5nIG1lYW5pbmdmdWwuIFVzdWFsbHkgdGhpcyBtZWFucyB0aGF0IHlvdXIgd2ViIHNlcnZl
ciBjaGVja3MgdGhlIFVSSSBwb2ludHMgdG8gc29tZXRoaW5nIHRoYXQsIGluIGEgc2Vuc2UsIGV4
aXN0cywgYW5kIHRoZW4gc2VydmVzIHRoZSBjbGllbnQgdGhlIEphdmFTY3JpcHQgYXBwbGljYXRp
b24uCi0KLUlmIHlvdSdyZSBhZnRlciBhIHNpbmdsZS1wYWdlIGFwcGxpY2F0aW9uIHlvdSBjYW4g
bm90IHVzZSBwbGFpbiBvbGQgYDxhIGhyZWY9Ii9iYXIvYmF6Ij5gIHRhZ3MgZm9yIG5hdmlnYXRp
b24gYW55bW9yZS4gV2hlbiBzdWNoIGxpbmsgaXMgY2xpY2tlZCwgd2ViIGJyb3dzZXJzIHRyeSB0
byBhc2sgZm9yIHRoZSByZXNvdXJjZSBmcm9tIHNlcnZlciB3aGljaCBpcyBub3Qgb2YgY291cnNl
IGRlc2lyZWQgZm9yIGEgc2luZ2xlLXBhZ2UgYXBwbGljYXRpb24uIEluc3RlYWQgeW91IG5lZWQg
dG8gdXNlIGUuZy4gY2xpY2sgaGFuZGxlcnMgYW5kIGNhbGwgdGhlIGBzZXRSb3V0ZSgpYCBtZXRo
b2QgeW91cnNlbGYuCi0KLTxhIG5hbWU9ImF0dGFjaC10by10aGlzIj48L2E+Ci0jIyBBdHRhY2gg
UHJvcGVydGllcyBUbyBgdGhpc2AKLQotR2VuZXJhbGx5LCB0aGUgYHRoaXNgIG9iamVjdCBib3Vu
ZCB0byByb3V0ZSBoYW5kbGVycywgd2lsbCBjb250YWluIHRoZSByZXF1ZXN0IGluIGB0aGlzLnJl
cWAgYW5kIHRoZSByZXNwb25zZSBpbiBgdGhpcy5yZXNgLiBPbmUgbWF5IGF0dGFjaCBhZGRpdGlv
bmFsIHByb3BlcnRpZXMgdG8gYHRoaXNgIHdpdGggdGhlIGByb3V0ZXIuYXR0YWNoYCBtZXRob2Q6
Ci0KLWBgYGpzCi0gIHZhciBkaXJlY3RvciA9IHJlcXVpcmUoJ2RpcmVjdG9yJyk7Ci0KLSAgdmFy
IHJvdXRlciA9IG5ldyBkaXJlY3Rvci5odHRwLlJvdXRlcigpLmNvbmZpZ3VyZShvcHRpb25zKTsK
LQotICAvLwotICAvLyBBdHRhY2ggcHJvcGVydGllcyB0byBgdGhpc2AKLSAgLy8KLSAgcm91dGVy
LmF0dGFjaChmdW5jdGlvbiAoKSB7Ci0gICAgdGhpcy5kYXRhID0gWzEsMiwzXTsKLSAgfSk7Ci0K
LSAgLy8KLSAgLy8gQWNjZXNzIHByb3BlcnRpZXMgYXR0YWNoZWQgdG8gYHRoaXNgIGluIHlvdXIg
cm91dGVzIQotICAvLwotICByb3V0ZXIuZ2V0KCcvaGVsbG8nLCBmdW5jdGlvbiAoKSB7Ci0gICAg
dGhpcy5yZXMud3JpdGVIZWFkKDIwMCwgeyAnY29udGVudC10eXBlJzogJ3RleHQvcGxhaW4nIH0p
OwotCi0gICAgLy8KLSAgICAvLyBSZXNwb25zZSB3aWxsIGJlIGBbMSwyLDNdYCEKLSAgICAvLwot
ICAgIHRoaXMucmVzLmVuZCh0aGlzLmRhdGEpOwotICB9KTsKLWBgYAotCi1UaGlzIEFQSSBtYXkg
YmUgdXNlZCB0byBhdHRhY2ggY29udmVuaWVuY2UgbWV0aG9kcyB0byB0aGUgYHRoaXNgIGNvbnRl
eHQgb2Ygcm91dGUgaGFuZGxlcnMuCi0KLTxhIG5hbWU9Imh0dHAtc3RyZWFtaW5nLWJvZHktcGFy
c2luZyI+Ci0jIyBIVFRQIFN0cmVhbWluZyBhbmQgQm9keSBQYXJzaW5nCi0KLVdoZW4geW91IGFy
ZSBwZXJmb3JtaW5nIEhUVFAgcm91dGluZyB0aGVyZSBhcmUgdHdvIGNvbW1vbiBzY2VuYXJpb3M6
Ci0KLSogQnVmZmVyIHRoZSByZXF1ZXN0IGJvZHkgYW5kIHBhcnNlIGl0IGFjY29yZGluZyB0byB0
aGUgYENvbnRlbnQtVHlwZWAgaGVhZGVyICh1c3VhbGx5IGBhcHBsaWNhdGlvbi9qc29uYCBvciBg
YXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkYCkuCi0qIFN0cmVhbSB0aGUgcmVxdWVz
dCBib2R5IGJ5IG1hbnVhbGx5IGNhbGxpbmcgYC5waXBlYCBvciBsaXN0ZW5pbmcgdG8gdGhlIGBk
YXRhYCBhbmQgYGVuZGAgZXZlbnRzLgotCi1CeSBkZWZhdWx0IGBkaXJlY3Rvci5odHRwLlJvdXRl
cigpYCB3aWxsIGF0dGVtcHQgdG8gcGFyc2UgZWl0aGVyIHRoZSBgLmNodW5rc2Agb3IgYC5ib2R5
YCBwcm9wZXJ0aWVzIHNldCBvbiB0aGUgcmVxdWVzdCBwYXJhbWV0ZXIgcGFzc2VkIHRvIGByb3V0
ZXIuZGlzcGF0Y2gocmVxdWVzdCwgcmVzcG9uc2UsIGNhbGxiYWNrKWAuIFRoZSByb3V0ZXIgaW5z
dGFuY2Ugd2lsbCBhbHNvIHdhaXQgZm9yIHRoZSBgZW5kYCBldmVudCBiZWZvcmUgZmlyaW5nIGFu
eSByb3V0ZXMuCi0KLSoqRGVmYXVsdCBCZWhhdmlvcioqCi0KLWBgYCBqcwotICB2YXIgZGlyZWN0
b3IgPSByZXF1aXJlKCdkaXJlY3RvcicpOwotCi0gIHZhciByb3V0ZXIgPSBuZXcgZGlyZWN0b3Iu
aHR0cC5Sb3V0ZXIoKTsKLQotICByb3V0ZXIuZ2V0KCcvJywgZnVuY3Rpb24gKCkgewotICAgIC8v
Ci0gICAgLy8gVGhpcyB3aWxsIG5vdCB3b3JrLCBiZWNhdXNlIGFsbCBvZiB0aGUgZGF0YQotICAg
IC8vIGV2ZW50cyBhbmQgdGhlIGVuZCBldmVudCBoYXZlIGFscmVhZHkgZmlyZWQuCi0gICAgLy8K
LSAgICB0aGlzLnJlcS5vbignZGF0YScsIGZ1bmN0aW9uIChjaHVuaykgewotICAgICAgY29uc29s
ZS5sb2coY2h1bmspCi0gICAgfSk7Ci0gIH0pOwotYGBgCi0KLUluIFtmbGF0aXJvbl1bMl0sIGBk
aXJlY3RvcmAgaXMgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIFt1bmlvbl1bM10gd2hpY2ggdXNl
cyBhIGBCdWZmZXJlZFN0cmVhbWAgcHJveHkgdG8gdGhlIHJhdyBgaHR0cC5SZXF1ZXN0YCBpbnN0
YW5jZS4gW3VuaW9uXVszXSB3aWxsIHNldCB0aGUgYHJlcS5jaHVua3NgIHByb3BlcnR5IGZvciB5
b3UgYW5kIGRpcmVjdG9yIHdpbGwgYXV0b21hdGljYWxseSBwYXJzZSB0aGUgYm9keS4gSWYgeW91
IHdpc2ggdG8gcGVyZm9ybSB0aGlzIGJ1ZmZlcmluZyB5b3Vyc2VsZiBkaXJlY3RseSB3aXRoIGBk
aXJlY3RvcmAgeW91IGNhbiB1c2UgYSBzaW1wbGUgcmVxdWVzdCBoYW5kbGVyIGluIHlvdXIgaHR0
cCBzZXJ2ZXI6Ci0KLWBgYCBqcwotICB2YXIgaHR0cCA9IHJlcXVpcmUoJ2h0dHAnKSwKLSAgICAg
IGRpcmVjdG9yID0gcmVxdWlyZSgnZGlyZWN0b3InKTsKLQotICB2YXIgcm91dGVyID0gbmV3IGRp
cmVjdG9yLmh0dHAuUm91dGVyKCk7Ci0KLSAgdmFyIHNlcnZlciA9IGh0dHAuY3JlYXRlU2VydmVy
KGZ1bmN0aW9uIChyZXEsIHJlcykgewotICAgIHJlcS5jaHVua3MgPSBbXTsKLSAgICByZXEub24o
J2RhdGEnLCBmdW5jdGlvbiAoY2h1bmspIHsKLSAgICAgIHJlcS5jaHVua3MucHVzaChjaHVuay50
b1N0cmluZygpKTsKLSAgICB9KTsKLQotICAgIHJvdXRlci5kaXNwYXRjaChyZXEsIHJlcywgZnVu
Y3Rpb24gKGVycikgewotICAgICAgaWYgKGVycikgewotICAgICAgICByZXMud3JpdGVIZWFkKDQw
NCk7Ci0gICAgICAgIHJlcy5lbmQoKTsKLSAgICAgIH0KLQotICAgICAgY29uc29sZS5sb2coJ1Nl
cnZlZCAnICsgcmVxLnVybCk7Ci0gICAgfSk7Ci0gIH0pOwotCi0gIHJvdXRlci5wb3N0KCcvJywg
ZnVuY3Rpb24gKCkgewotICAgIHRoaXMucmVzLndyaXRlSGVhZCgyMDAsIHsgJ0NvbnRlbnQtVHlw
ZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9KQotICAgIHRoaXMucmVzLmVuZChKU09OLnN0cmluZ2lm
eSh0aGlzLnJlcS5ib2R5KSk7Ci0gIH0pOwotYGBgCi0KLSoqU3RyZWFtaW5nIFN1cHBvcnQqKgot
Ci1JZiB5b3Ugd2lzaCB0byBnZXQgYWNjZXNzIHRvIHRoZSByZXF1ZXN0IHN0cmVhbSBiZWZvcmUg
dGhlIGBlbmRgIGV2ZW50IGlzIGZpcmVkLCB5b3UgY2FuIHBhc3MgdGhlIGB7IHN0cmVhbTogdHJ1
ZSB9YCBvcHRpb25zIHRvIHRoZSByb3V0ZS4KLQotYGBgIGpzCi0gIHZhciBkaXJlY3RvciA9IHJl
cXVpcmUoJ2RpcmVjdG9yJyk7Ci0KLSAgdmFyIHJvdXRlciA9IG5ldyBkaXJlY3Rvci5odHRwLlJv
dXRlcigpOwotCi0gIHJvdXRlci5nZXQoJy8nLCB7IHN0cmVhbTogdHJ1ZSB9LCBmdW5jdGlvbiAo
KSB7Ci0gICAgLy8KLSAgICAvLyBUaGlzIHdpbGwgd29yayBiZWNhdXNlIHRoZSByb3V0ZSBoYW5k
bGVyIGlzIGludm9rZWQKLSAgICAvLyBpbW1lZGlhdGVseSB3aXRob3V0IHdhaXRpbmcgZm9yIHRo
ZSBgZW5kYCBldmVudC4KLSAgICAvLwotICAgIHRoaXMucmVxLm9uKCdkYXRhJywgZnVuY3Rpb24g
KGNodW5rKSB7Ci0gICAgICBjb25zb2xlLmxvZyhjaHVuayk7Ci0gICAgfSk7Ci0gIH0pOwotYGBg
Ci0KLTxhIG5hbWU9Imluc3RhbmNlLW1ldGhvZHMiPjwvYT4KLSMjIEluc3RhbmNlIG1ldGhvZHMK
LQotIyMjIGNvbmZpZ3VyZShvcHRpb25zKQotKiBgb3B0aW9uc2Age09iamVjdH06IE9wdGlvbnMg
dG8gY29uZmlndXJlIHRoaXMgaW5zdGFuY2Ugd2l0aC4KLQotQ29uZmlndXJlcyB0aGUgUm91dGVy
IGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBgb3B0aW9uc2AuIFNlZSBbQ29uZmlndXJhdGlv
bl0oI2NvbmZpZ3VyYXRpb24pIGZvciBtb3JlIGRvY3VtZW50YXRpb24uCi0KLSMjIyBwYXJhbSh0
b2tlbiwgbWF0Y2hlcikKLSogdG9rZW4ge3N0cmluZ306IE5hbWVkIHBhcmFtZXRlciB0b2tlbiB0
byBzZXQgdG8gdGhlIHNwZWNpZmllZCBgbWF0Y2hlcmAKLSogbWF0Y2hlciB7c3RyaW5nfFJlZ2V4
cH06IE1hdGNoZXIgZm9yIHRoZSBzcGVjaWZpZWQgYHRva2VuYC4KLQotQWRkcyBhIHJvdXRlIGZy
YWdtZW50IGZvciB0aGUgZ2l2ZW4gc3RyaW5nIGB0b2tlbmAgdG8gdGhlIHNwZWNpZmllZCByZWdl
eCBgbWF0Y2hlcmAgdG8gdGhpcyBSb3V0ZXIgaW5zdGFuY2UuIFNlZSBbVVJMIFBhcmFtZXRlcnNd
KCN1cmwtcGFyYW1zKSBmb3IgbW9yZSBkb2N1bWVudGF0aW9uLgotCi0jIyMgb24obWV0aG9kLCBw
YXRoLCByb3V0ZSkKLSogYG1ldGhvZGAge3N0cmluZ306IE1ldGhvZCB0byBpbnNlcnQgd2l0aGlu
IHRoZSBSb3V0aW5nIFRhYmxlIChlLmcuIGBvbmAsIGBnZXRgLCBldGMuKS4KLSogYHBhdGhgIHtz
dHJpbmd9OiBQYXRoIHdpdGhpbiB0aGUgUm91dGluZyBUYWJsZSB0byBzZXQgdGhlIGByb3V0ZWAg
dG8uCi0qIGByb3V0ZWAge2Z1bmN0aW9ufEFycmF5fTogUm91dGUgaGFuZGxlciB0byBpbnZva2Ug
Zm9yIHRoZSBgbWV0aG9kYCBhbmQgYHBhdGhgLgotCi1BZGRzIHRoZSBgcm91dGVgIGhhbmRsZXIg
Zm9yIHRoZSBzcGVjaWZpZWQgYG1ldGhvZGAgYW5kIGBwYXRoYCB3aXRoaW4gdGhlIFtSb3V0aW5n
IFRhYmxlXSgjcm91dGluZy10YWJsZSkuCi0KLSMjIyBwYXRoKHBhdGgsIHJvdXRlc0ZuKQotKiBg
cGF0aGAge3N0cmluZ3xSZWdleHB9OiBTY29wZSB3aXRoaW4gdGhlIFJvdXRpbmcgVGFibGUgdG8g
aW52b2tlIHRoZSBgcm91dGVzRm5gIHdpdGhpbi4KLSogYHJvdXRlc0ZuYCB7ZnVuY3Rpb259OiBB
ZGhvYyBSb3V0aW5nIGZ1bmN0aW9uIHdpdGggY2FsbHMgdG8gYHRoaXMub24oKWAsIGB0aGlzLmdl
dCgpYCBldGMuCi0KLUludm9rZXMgdGhlIGByb3V0ZXNGbmAgd2l0aGluIHRoZSBzY29wZSBvZiB0
aGUgc3BlY2lmaWVkIGBwYXRoYCBmb3IgdGhpcyBSb3V0ZXIgaW5zdGFuY2UuCi0KLSMjIyBkaXNw
YXRjaChtZXRob2QsIHBhdGhbLCBjYWxsYmFja10pCi0qIG1ldGhvZCB7c3RyaW5nfTogTWV0aG9k
IHRvIGludm9rZSBoYW5kbGVycyBmb3Igd2l0aGluIHRoZSBSb3V0aW5nIFRhYmxlCi0qIHBhdGgg
e3N0cmluZ306IFBhdGggd2l0aGluIHRoZSBSb3V0aW5nIFRhYmxlIHRvIG1hdGNoCi0qIGNhbGxi
YWNrIHtmdW5jdGlvbn06IEludm9rZWQgb25jZSBhbGwgcm91dGUgaGFuZGxlcnMgaGF2ZSBiZWVu
IGNhbGxlZC4KLQotRGlzcGF0Y2hlcyB0aGUgcm91dGUgaGFuZGxlcnMgbWF0Y2hlZCB3aXRoaW4g
dGhlIFtSb3V0aW5nIFRhYmxlXSgjcm91dGluZy10YWJsZSkgZm9yIHRoaXMgaW5zdGFuY2UgZm9y
IHRoZSBzcGVjaWZpZWQgYG1ldGhvZGAgYW5kIGBwYXRoYC4KLQotIyMjIG1vdW50KHJvdXRlcywg
cGF0aCkKLSogcm91dGVzIHtvYmplY3R9OiBQYXJ0aWFsIHJvdXRpbmcgdGFibGUgdG8gaW5zZXJ0
IGludG8gdGhpcyBpbnN0YW5jZS4KLSogcGF0aCB7c3RyaW5nfFJlZ2V4cH06IFBhdGggd2l0aGlu
IHRoZSBSb3V0aW5nIFRhYmxlIHRvIGluc2VydCB0aGUgYHJvdXRlc2AgaW50by4KLQotSW5zZXJ0
cyB0aGUgcGFydGlhbCBbUm91dGluZyBUYWJsZV0oI3JvdXRpbmctdGFibGUpLCBgcm91dGVzYCwg
aW50byB0aGUgUm91dGluZyBUYWJsZSBmb3IgdGhpcyBSb3V0ZXIgaW5zdGFuY2UgYXQgdGhlIHNw
ZWNpZmllZCBgcGF0aGAuCi0KLSMjIEluc3RhbmNlIG1ldGhvZHMgKENsaWVudC1zaWRlIG9ubHkp
Ci0KLSMjIyBpbml0KFtyZWRpcmVjdF0pCi0qIGByZWRpcmVjdGAge1N0cmluZ306IFRoaXMgdmFs
dWUgd2lsbCBiZSB1c2VkIGlmICcvIy8nIGlzIG5vdCBmb3VuZCBpbiB0aGUgVVJMLiAoZS5nLiwg
aW5pdCgnLycpIHdpbGwgcmVzb2x2ZSB0byAnLyMvJywgaW5pdCgnZm9vJykgd2lsbCByZXNvbHZl
IHRvICcvI2ZvbycpLgotCi1Jbml0aWFsaXplIHRoZSByb3V0ZXIsIHN0YXJ0IGxpc3RlbmluZyBm
b3IgY2hhbmdlcyB0byB0aGUgVVJMLgotCi0jIyMgZ2V0Um91dGUoW2luZGV4XSkKLSogYGluZGV4
YCB7TnVtYmVyfTogVGhlIGhhc2ggdmFsdWUgaXMgZGl2aWRlZCBieSBmb3J3YXJkIHNsYXNoZXMs
IGVhY2ggc2VjdGlvbiB0aGVuIGhhcyBhbiBpbmRleCwgaWYgdGhpcyBpcyBwcm92aWRlZCwgb25s
eSB0aGF0IHNlY3Rpb24gb2YgdGhlIHJvdXRlIHdpbGwgYmUgcmV0dXJuZWQuCi0KLVJldHVybnMg
dGhlIGVudGlyZSByb3V0ZSBvciBqdXN0IGEgc2VjdGlvbiBvZiBpdC4KLQotIyMjIHNldFJvdXRl
KHJvdXRlKQotKiBgcm91dGVgIHtTdHJpbmd9OiBTdXBwbHkgYSByb3V0ZSB2YWx1ZSwgc3VjaCBh
cyBgaG9tZS9zdGF0c2AuCi0KLVNldCB0aGUgY3VycmVudCByb3V0ZS4KLQotIyMjIHNldFJvdXRl
KHN0YXJ0LCBsZW5ndGgpCi0qIGBzdGFydGAge051bWJlcn0gLSBUaGUgcG9zaXRpb24gYXQgd2hp
Y2ggdG8gc3RhcnQgcmVtb3ZpbmcgaXRlbXMuCi0qIGBsZW5ndGhgIHtOdW1iZXJ9IC0gVGhlIG51
bWJlciBvZiBpdGVtcyB0byByZW1vdmUgZnJvbSB0aGUgcm91dGUuCi0KLVJlbW92ZSBhIHNlZ21l
bnQgZnJvbSB0aGUgY3VycmVudCByb3V0ZS4KLQotIyMjIHNldFJvdXRlKGluZGV4LCB2YWx1ZSkK
LSogYGluZGV4YCB7TnVtYmVyfSAtIFRoZSBoYXNoIHZhbHVlIGlzIGRpdmlkZWQgYnkgZm9yd2Fy
ZCBzbGFzaGVzLCBlYWNoIHNlY3Rpb24gdGhlbiBoYXMgYW4gaW5kZXguCi0qIGB2YWx1ZWAge1N0
cmluZ30gLSBUaGUgbmV3IHZhbHVlIHRvIGFzc2lnbiB0aGUgdGhlIHBvc2l0aW9uIGluZGljYXRl
ZCBieSB0aGUgZmlyc3QgcGFyYW1ldGVyLgotCi1TZXQgYSBzZWdtZW50IG9mIHRoZSBjdXJyZW50
IHJvdXRlLgotCi08YSBuYW1lPSJmYXEiPjwvYT4KLSMgRnJlcXVlbnRseSBBc2tlZCBRdWVzdGlv
bnMKLQotIyMgV2hhdCBBYm91dCBTRU8/Ci0KLUlzIHVzaW5nIGEgQ2xpZW50LXNpZGUgcm91dGVy
IGEgcHJvYmxlbSBmb3IgU0VPPyBZZXMuIElmIGFkdmVydGlzaW5nIGlzIGEgcmVxdWlyZW1lbnQs
IHlvdSBhcmUgcHJvYmFibHkgYnVpbGRpbmcgYSAiV2ViIFBhZ2UiIGFuZCBub3QgYSAiV2ViIEFw
cGxpY2F0aW9uIi4gRGlyZWN0b3Igb24gdGhlIGNsaWVudCBpcyBtZWFudCBmb3Igc2NyaXB0LWhl
YXZ5IFdlYiBBcHBsaWNhdGlvbnMuCi0KLSMgTGljZW5jZQotCi0oVGhlIE1JVCBMaWNlbnNlKQot
Ci1Db3B5cmlnaHQgKGMpIDIwMTAgTm9kZWppdHN1IEluYy4gPGh0dHA6Ly93d3cudHdpdHRlci5j
b20vbm9kZWppdHN1PgotCi1QZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNo
YXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5k
IGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICdTb2Z0d2FyZScpLCB0byBkZWFs
IGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBs
aW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNo
LCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3
YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlz
aGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLQotVGhl
IGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwg
YmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUg
U29mdHdhcmUuCi0KLVRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAnQVMgSVMnLCBXSVRIT1VUIFdB
UlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9U
IExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBD
TEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9G
IENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4g
Q09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdT
IElOIFRIRSBTT0ZUV0FSRS4KLQotWzBdOiBodHRwOi8vZ2l0aHViLmNvbS9mbGF0aXJvbi9kaXJl
Y3RvcgotWzFdOiBodHRwczovL2dpdGh1Yi5jb20vZmxhdGlyb24vZGlyZWN0b3IvYmxvYi9tYXN0
ZXIvYnVpbGQvZGlyZWN0b3IubWluLmpzCi1bMl06IGh0dHA6Ly9naXRodWIuY29tL2ZsYXRpcm9u
L2ZsYXRpcm9uCi1bM106IGh0dHA6Ly9naXRodWIuY29tL2ZsYXRpcm9uL3VuaW9uCmRpZmYgLS1n
aXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2xhYnMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L2Jvd2VyX2NvbXBvbmVudHMvZGlyZWN0b3IvYnVp
bGQvZGlyZWN0b3IuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2xhYnMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L2Jvd2VyX2NvbXBvbmVudHMv
ZGlyZWN0b3IvYnVpbGQvZGlyZWN0b3IuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDBiZWZiZTA3NTE4YzZhZGVjZTMxODQ2MGE0ZTAyODhjMDU2YWMwMzQuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9sYWJzL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9i
b3dlcl9jb21wb25lbnRzL2RpcmVjdG9yL2J1aWxkL2RpcmVjdG9yLmpzCisrKyAvZGV2L251bGwK
QEAgLTEsNzEyICswLDAgQEAKLQotCi0vLwotLy8gR2VuZXJhdGVkIG9uIFN1biBEZWMgMTYgMjAx
MiAyMjo0NzowNSBHTVQtMDUwMCAoRVNUKSBieSBOb2Rlaml0c3UsIEluYyAoVXNpbmcgQ29kZXN1
cmdlb24pLgotLy8gVmVyc2lvbiAxLjEuOQotLy8KLQotKGZ1bmN0aW9uIChleHBvcnRzKSB7Ci0K
LQotLyoKLSAqIGJyb3dzZXIuanM6IEJyb3dzZXIgc3BlY2lmaWMgZnVuY3Rpb25hbGl0eSBmb3Ig
ZGlyZWN0b3IuCi0gKgotICogKEMpIDIwMTEsIE5vZGVqaXRzdSBJbmMuCi0gKiBNSVQgTElDRU5T
RQotICoKLSAqLwotCi1pZiAoIUFycmF5LnByb3RvdHlwZS5maWx0ZXIpIHsKLSAgQXJyYXkucHJv
dG90eXBlLmZpbHRlciA9IGZ1bmN0aW9uKGZpbHRlciwgdGhhdCkgewotICAgIHZhciBvdGhlciA9
IFtdLCB2OwotICAgIGZvciAodmFyIGkgPSAwLCBuID0gdGhpcy5sZW5ndGg7IGkgPCBuOyBpKysp
IHsKLSAgICAgIGlmIChpIGluIHRoaXMgJiYgZmlsdGVyLmNhbGwodGhhdCwgdiA9IHRoaXNbaV0s
IGksIHRoaXMpKSB7Ci0gICAgICAgIG90aGVyLnB1c2godik7Ci0gICAgICB9Ci0gICAgfQotICAg
IHJldHVybiBvdGhlcjsKLSAgfTsKLX0KLQotaWYgKCFBcnJheS5pc0FycmF5KXsKLSAgQXJyYXku
aXNBcnJheSA9IGZ1bmN0aW9uKG9iaikgewotICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRv
U3RyaW5nLmNhbGwob2JqKSA9PT0gJ1tvYmplY3QgQXJyYXldJzsKLSAgfTsKLX0KLQotdmFyIGRs
b2MgPSBkb2N1bWVudC5sb2NhdGlvbjsKLQotZnVuY3Rpb24gZGxvY0hhc2hFbXB0eSgpIHsKLSAg
Ly8gTm9uLUlFIGJyb3dzZXJzIHJldHVybiAnJyB3aGVuIHRoZSBhZGRyZXNzIGJhciBzaG93cyAn
Iyc7IERpcmVjdG9yJ3MgbG9naWMKLSAgLy8gYXNzdW1lcyBib3RoIG1lYW4gZW1wdHkuCi0gIHJl
dHVybiBkbG9jLmhhc2ggPT09ICcnIHx8IGRsb2MuaGFzaCA9PT0gJyMnOwotfQotCi12YXIgbGlz
dGVuZXIgPSB7Ci0gIG1vZGU6ICdtb2Rlcm4nLAotICBoYXNoOiBkbG9jLmhhc2gsCi0gIGhpc3Rv
cnk6IGZhbHNlLAotCi0gIGNoZWNrOiBmdW5jdGlvbiAoKSB7Ci0gICAgdmFyIGggPSBkbG9jLmhh
c2g7Ci0gICAgaWYgKGggIT0gdGhpcy5oYXNoKSB7Ci0gICAgICB0aGlzLmhhc2ggPSBoOwotICAg
ICAgdGhpcy5vbkhhc2hDaGFuZ2VkKCk7Ci0gICAgfQotICB9LAotCi0gIGZpcmU6IGZ1bmN0aW9u
ICgpIHsKLSAgICBpZiAodGhpcy5tb2RlID09PSAnbW9kZXJuJykgewotICAgICAgdGhpcy5oaXN0
b3J5ID09PSB0cnVlID8gd2luZG93Lm9ucG9wc3RhdGUoKSA6IHdpbmRvdy5vbmhhc2hjaGFuZ2Uo
KTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICB0aGlzLm9uSGFzaENoYW5nZWQoKTsKLSAgICB9
Ci0gIH0sCi0KLSAgaW5pdDogZnVuY3Rpb24gKGZuLCBoaXN0b3J5KSB7Ci0gICAgdmFyIHNlbGYg
PSB0aGlzOwotICAgIHRoaXMuaGlzdG9yeSA9IGhpc3Rvcnk7Ci0KLSAgICBpZiAoIVJvdXRlci5s
aXN0ZW5lcnMpIHsKLSAgICAgIFJvdXRlci5saXN0ZW5lcnMgPSBbXTsKLSAgICB9Ci0KLSAgICBm
dW5jdGlvbiBvbmNoYW5nZShvbkNoYW5nZUV2ZW50KSB7Ci0gICAgICBmb3IgKHZhciBpID0gMCwg
bCA9IFJvdXRlci5saXN0ZW5lcnMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7Ci0gICAgICAgIFJvdXRl
ci5saXN0ZW5lcnNbaV0ob25DaGFuZ2VFdmVudCk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgLy9u
b3RlIElFOCBpcyBiZWluZyBjb3VudGVkIGFzICdtb2Rlcm4nIGJlY2F1c2UgaXQgaGFzIHRoZSBo
YXNoY2hhbmdlIGV2ZW50Ci0gICAgaWYgKCdvbmhhc2hjaGFuZ2UnIGluIHdpbmRvdyAmJiAoZG9j
dW1lbnQuZG9jdW1lbnRNb2RlID09PSB1bmRlZmluZWQKLSAgICAgIHx8IGRvY3VtZW50LmRvY3Vt
ZW50TW9kZSA+IDcpKSB7Ci0gICAgICAvLyBBdCBsZWFzdCBmb3Igbm93IEhUTUw1IGhpc3Rvcnkg
aXMgYXZhaWxhYmxlIGZvciAnbW9kZXJuJyBicm93c2VycyBvbmx5Ci0gICAgICBpZiAodGhpcy5o
aXN0b3J5ID09PSB0cnVlKSB7Ci0gICAgICAgIC8vIFRoZXJlIGlzIGFuIG9sZCBidWcgaW4gQ2hy
b21lIHRoYXQgY2F1c2VzIG9ucG9wc3RhdGUgdG8gZmlyZSBldmVuCi0gICAgICAgIC8vIHVwb24g
aW5pdGlhbCBwYWdlIGxvYWQuIFNpbmNlIHRoZSBoYW5kbGVyIGlzIHJ1biBtYW51YWxseSBpbiBp
bml0KCksCi0gICAgICAgIC8vIHRoaXMgd291bGQgY2F1c2UgQ2hyb21lIHRvIHJ1biBpdCB0d2lz
ZS4gQ3VycmVudGx5IHRoZSBvbmx5Ci0gICAgICAgIC8vIHdvcmthcm91bmQgc2VlbXMgdG8gYmUg
dG8gc2V0IHRoZSBoYW5kbGVyIGFmdGVyIHRoZSBpbml0aWFsIHBhZ2UgbG9hZAotICAgICAgICAv
LyBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD02MzA0
MAotICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgICAgICAgIHdpbmRvdy5vbnBv
cHN0YXRlID0gb25jaGFuZ2U7Ci0gICAgICAgIH0sIDUwMCk7Ci0gICAgICB9Ci0gICAgICBlbHNl
IHsKLSAgICAgICAgd2luZG93Lm9uaGFzaGNoYW5nZSA9IG9uY2hhbmdlOwotICAgICAgfQotICAg
ICAgdGhpcy5tb2RlID0gJ21vZGVybic7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgLy8KLSAg
ICAgIC8vIElFIHN1cHBvcnQsIGJhc2VkIG9uIGEgY29uY2VwdCBieSBFcmlrIEFydmlkc29uIC4u
LgotICAgICAgLy8KLSAgICAgIHZhciBmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lm
cmFtZScpOwotICAgICAgZnJhbWUuaWQgPSAnc3RhdGUtZnJhbWUnOwotICAgICAgZnJhbWUuc3R5
bGUuZGlzcGxheSA9ICdub25lJzsKLSAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZnJh
bWUpOwotICAgICAgdGhpcy53cml0ZUZyYW1lKCcnKTsKLQotICAgICAgaWYgKCdvbnByb3BlcnR5
Y2hhbmdlJyBpbiBkb2N1bWVudCAmJiAnYXR0YWNoRXZlbnQnIGluIGRvY3VtZW50KSB7Ci0gICAg
ICAgIGRvY3VtZW50LmF0dGFjaEV2ZW50KCdvbnByb3BlcnR5Y2hhbmdlJywgZnVuY3Rpb24gKCkg
ewotICAgICAgICAgIGlmIChldmVudC5wcm9wZXJ0eU5hbWUgPT09ICdsb2NhdGlvbicpIHsKLSAg
ICAgICAgICAgIHNlbGYuY2hlY2soKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0pOwotICAgICAg
fQotCi0gICAgICB3aW5kb3cuc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkgeyBzZWxmLmNoZWNrKCk7
IH0sIDUwKTsKLQotICAgICAgdGhpcy5vbkhhc2hDaGFuZ2VkID0gb25jaGFuZ2U7Ci0gICAgICB0
aGlzLm1vZGUgPSAnbGVnYWN5JzsKLSAgICB9Ci0KLSAgICBSb3V0ZXIubGlzdGVuZXJzLnB1c2go
Zm4pOwotCi0gICAgcmV0dXJuIHRoaXMubW9kZTsKLSAgfSwKLQotICBkZXN0cm95OiBmdW5jdGlv
biAoZm4pIHsKLSAgICBpZiAoIVJvdXRlciB8fCAhUm91dGVyLmxpc3RlbmVycykgewotICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIHZhciBsaXN0ZW5lcnMgPSBSb3V0ZXIubGlzdGVuZXJzOwot
Ci0gICAgZm9yICh2YXIgaSA9IGxpc3RlbmVycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgewot
ICAgICAgaWYgKGxpc3RlbmVyc1tpXSA9PT0gZm4pIHsKLSAgICAgICAgbGlzdGVuZXJzLnNwbGlj
ZShpLCAxKTsKLSAgICAgIH0KLSAgICB9Ci0gIH0sCi0KLSAgc2V0SGFzaDogZnVuY3Rpb24gKHMp
IHsKLSAgICAvLyBNb3ppbGxhIGFsd2F5cyBhZGRzIGFuIGVudHJ5IHRvIHRoZSBoaXN0b3J5Ci0g
ICAgaWYgKHRoaXMubW9kZSA9PT0gJ2xlZ2FjeScpIHsKLSAgICAgIHRoaXMud3JpdGVGcmFtZShz
KTsKLSAgICB9Ci0KLSAgICBpZiAodGhpcy5oaXN0b3J5ID09PSB0cnVlKSB7Ci0gICAgICB3aW5k
b3cuaGlzdG9yeS5wdXNoU3RhdGUoe30sIGRvY3VtZW50LnRpdGxlLCBzKTsKLSAgICAgIC8vIEZp
cmUgYW4gb25wb3BzdGF0ZSBldmVudCBtYW51YWxseSBzaW5jZSBwdXNoaW5nIGRvZXMgbm90IG9i
dmlvdXNseQotICAgICAgLy8gdHJpZ2dlciB0aGUgcG9wIGV2ZW50LgotICAgICAgdGhpcy5maXJl
KCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIGRsb2MuaGFzaCA9IChzWzBdID09PSAnLycpID8gcyA6
ICcvJyArIHM7Ci0gICAgfQotICAgIHJldHVybiB0aGlzOwotICB9LAotCi0gIHdyaXRlRnJhbWU6
IGZ1bmN0aW9uIChzKSB7Ci0gICAgLy8gSUUgc3VwcG9ydC4uLgotICAgIHZhciBmID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3N0YXRlLWZyYW1lJyk7Ci0gICAgdmFyIGQgPSBmLmNvbnRlbnRE
b2N1bWVudCB8fCBmLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ7Ci0gICAgZC5vcGVuKCk7Ci0gICAg
ZC53cml0ZSgiPHNjcmlwdD5faGFzaCA9ICciICsgcyArICInOyBvbmxvYWQgPSBwYXJlbnQubGlz
dGVuZXIuc3luY0hhc2g7PHNjcmlwdD4iKTsKLSAgICBkLmNsb3NlKCk7Ci0gIH0sCi0KLSAgc3lu
Y0hhc2g6IGZ1bmN0aW9uICgpIHsKLSAgICAvLyBJRSBzdXBwb3J0Li4uCi0gICAgdmFyIHMgPSB0
aGlzLl9oYXNoOwotICAgIGlmIChzICE9IGRsb2MuaGFzaCkgewotICAgICAgZGxvYy5oYXNoID0g
czsKLSAgICB9Ci0gICAgcmV0dXJuIHRoaXM7Ci0gIH0sCi0KLSAgb25IYXNoQ2hhbmdlZDogZnVu
Y3Rpb24gKCkge30KLX07Ci0KLXZhciBSb3V0ZXIgPSBleHBvcnRzLlJvdXRlciA9IGZ1bmN0aW9u
IChyb3V0ZXMpIHsKLSAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFJvdXRlcikpIHJldHVybiBuZXcg
Um91dGVyKHJvdXRlcyk7Ci0KLSAgdGhpcy5wYXJhbXMgICA9IHt9OwotICB0aGlzLnJvdXRlcyAg
ID0ge307Ci0gIHRoaXMubWV0aG9kcyAgPSBbJ29uJywgJ29uY2UnLCAnYWZ0ZXInLCAnYmVmb3Jl
J107Ci0gIHRoaXMuc2NvcGUgICAgPSBbXTsKLSAgdGhpcy5fbWV0aG9kcyA9IHt9OwotCi0gIHRo
aXMuX2luc2VydCA9IHRoaXMuaW5zZXJ0OwotICB0aGlzLmluc2VydCA9IHRoaXMuaW5zZXJ0RXg7
Ci0KLSAgdGhpcy5oaXN0b3J5U3VwcG9ydCA9ICh3aW5kb3cuaGlzdG9yeSAhPSBudWxsID8gd2lu
ZG93Lmhpc3RvcnkucHVzaFN0YXRlIDogbnVsbCkgIT0gbnVsbAotCi0gIHRoaXMuY29uZmlndXJl
KCk7Ci0gIHRoaXMubW91bnQocm91dGVzIHx8IHt9KTsKLX07Ci0KLVJvdXRlci5wcm90b3R5cGUu
aW5pdCA9IGZ1bmN0aW9uIChyKSB7Ci0gIHZhciBzZWxmID0gdGhpczsKLSAgdGhpcy5oYW5kbGVy
ID0gZnVuY3Rpb24ob25DaGFuZ2VFdmVudCkgewotICAgIHZhciBuZXdVUkwgPSBvbkNoYW5nZUV2
ZW50ICYmIG9uQ2hhbmdlRXZlbnQubmV3VVJMIHx8IHdpbmRvdy5sb2NhdGlvbi5oYXNoOwotICAg
IHZhciB1cmwgPSBzZWxmLmhpc3RvcnkgPT09IHRydWUgPyBzZWxmLmdldFBhdGgoKSA6IG5ld1VS
TC5yZXBsYWNlKC8uKiMvLCAnJyk7Ci0gICAgc2VsZi5kaXNwYXRjaCgnb24nLCB1cmwpOwotICB9
OwotCi0gIGxpc3RlbmVyLmluaXQodGhpcy5oYW5kbGVyLCB0aGlzLmhpc3RvcnkpOwotCi0gIGlm
ICh0aGlzLmhpc3RvcnkgPT09IGZhbHNlKSB7Ci0gICAgaWYgKGRsb2NIYXNoRW1wdHkoKSAmJiBy
KSB7Ci0gICAgICBkbG9jLmhhc2ggPSByOwotICAgIH0gZWxzZSBpZiAoIWRsb2NIYXNoRW1wdHko
KSkgewotICAgICAgc2VsZi5kaXNwYXRjaCgnb24nLCBkbG9jLmhhc2gucmVwbGFjZSgvXiMvLCAn
JykpOwotICAgIH0KLSAgfQotICBlbHNlIHsKLSAgICB2YXIgcm91dGVUbyA9IGRsb2NIYXNoRW1w
dHkoKSAmJiByID8gciA6ICFkbG9jSGFzaEVtcHR5KCkgPyBkbG9jLmhhc2gucmVwbGFjZSgvXiMv
LCAnJykgOiBudWxsOwotICAgIGlmIChyb3V0ZVRvKSB7Ci0gICAgICB3aW5kb3cuaGlzdG9yeS5y
ZXBsYWNlU3RhdGUoe30sIGRvY3VtZW50LnRpdGxlLCByb3V0ZVRvKTsKLSAgICB9Ci0KLSAgICAv
LyBSb3V0ZXIgaGFzIGJlZW4gaW5pdGlhbGl6ZWQsIGJ1dCBkdWUgdG8gdGhlIGNocm9tZSBidWcg
aXQgd2lsbCBub3QKLSAgICAvLyB5ZXQgYWN0dWFsbHkgcm91dGUgSFRNTDUgaGlzdG9yeSBzdGF0
ZSBjaGFuZ2VzLiBUaHVzLCBkZWNpZGUgaWYgc2hvdWxkIHJvdXRlLgotICAgIGlmIChyb3V0ZVRv
IHx8IHRoaXMucnVuX2luX2luaXQgPT09IHRydWUpIHsKLSAgICAgIHRoaXMuaGFuZGxlcigpOwot
ICAgIH0KLSAgfQotCi0gIHJldHVybiB0aGlzOwotfTsKLQotUm91dGVyLnByb3RvdHlwZS5leHBs
b2RlID0gZnVuY3Rpb24gKCkgewotICB2YXIgdiA9IHRoaXMuaGlzdG9yeSA9PT0gdHJ1ZSA/IHRo
aXMuZ2V0UGF0aCgpIDogZGxvYy5oYXNoOwotICBpZiAodi5jaGFyQXQoMSkgPT09ICcvJykgeyB2
PXYuc2xpY2UoMSkgfQotICByZXR1cm4gdi5zbGljZSgxLCB2Lmxlbmd0aCkuc3BsaXQoIi8iKTsK
LX07Ci0KLVJvdXRlci5wcm90b3R5cGUuc2V0Um91dGUgPSBmdW5jdGlvbiAoaSwgdiwgdmFsKSB7
Ci0gIHZhciB1cmwgPSB0aGlzLmV4cGxvZGUoKTsKLQotICBpZiAodHlwZW9mIGkgPT09ICdudW1i
ZXInICYmIHR5cGVvZiB2ID09PSAnc3RyaW5nJykgewotICAgIHVybFtpXSA9IHY7Ci0gIH0KLSAg
ZWxzZSBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHsKLSAgICB1cmwuc3BsaWNlKGksIHYs
IHMpOwotICB9Ci0gIGVsc2UgewotICAgIHVybCA9IFtpXTsKLSAgfQotCi0gIGxpc3RlbmVyLnNl
dEhhc2godXJsLmpvaW4oJy8nKSk7Ci0gIHJldHVybiB1cmw7Ci19OwotCi0vLwotLy8gIyMjIGZ1
bmN0aW9uIGluc2VydEV4KG1ldGhvZCwgcGF0aCwgcm91dGUsIHBhcmVudCkKLS8vICMjIyMgQG1l
dGhvZCB7c3RyaW5nfSBNZXRob2QgdG8gaW5zZXJ0IHRoZSBzcGVjaWZpYyBgcm91dGVgLgotLy8g
IyMjIyBAcGF0aCB7QXJyYXl9IFBhcnNlZCBwYXRoIHRvIGluc2VydCB0aGUgYHJvdXRlYCBhdC4K
LS8vICMjIyMgQHJvdXRlIHtBcnJheXxmdW5jdGlvbn0gUm91dGUgaGFuZGxlcnMgdG8gaW5zZXJ0
LgotLy8gIyMjIyBAcGFyZW50IHtPYmplY3R9ICoqT3B0aW9uYWwqKiBQYXJlbnQgInJvdXRlcyIg
dG8gaW5zZXJ0IGludG8uCi0vLyBpbnNlcnQgYSBjYWxsYmFjayB0aGF0IHdpbGwgb25seSBvY2N1
ciBvbmNlIHBlciB0aGUgbWF0Y2hlZCByb3V0ZS4KLS8vCi1Sb3V0ZXIucHJvdG90eXBlLmluc2Vy
dEV4ID0gZnVuY3Rpb24obWV0aG9kLCBwYXRoLCByb3V0ZSwgcGFyZW50KSB7Ci0gIGlmIChtZXRo
b2QgPT09ICJvbmNlIikgewotICAgIG1ldGhvZCA9ICJvbiI7Ci0gICAgcm91dGUgPSBmdW5jdGlv
bihyb3V0ZSkgewotICAgICAgdmFyIG9uY2UgPSBmYWxzZTsKLSAgICAgIHJldHVybiBmdW5jdGlv
bigpIHsKLSAgICAgICAgaWYgKG9uY2UpIHJldHVybjsKLSAgICAgICAgb25jZSA9IHRydWU7Ci0g
ICAgICAgIHJldHVybiByb3V0ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwotICAgICAgfTsKLSAg
ICB9KHJvdXRlKTsKLSAgfQotICByZXR1cm4gdGhpcy5faW5zZXJ0KG1ldGhvZCwgcGF0aCwgcm91
dGUsIHBhcmVudCk7Ci19OwotCi1Sb3V0ZXIucHJvdG90eXBlLmdldFJvdXRlID0gZnVuY3Rpb24g
KHYpIHsKLSAgdmFyIHJldCA9IHY7Ci0KLSAgaWYgKHR5cGVvZiB2ID09PSAibnVtYmVyIikgewot
ICAgIHJldCA9IHRoaXMuZXhwbG9kZSgpW3ZdOwotICB9Ci0gIGVsc2UgaWYgKHR5cGVvZiB2ID09
PSAic3RyaW5nIil7Ci0gICAgdmFyIGggPSB0aGlzLmV4cGxvZGUoKTsKLSAgICByZXQgPSBoLmlu
ZGV4T2Yodik7Ci0gIH0KLSAgZWxzZSB7Ci0gICAgcmV0ID0gdGhpcy5leHBsb2RlKCk7Ci0gIH0K
LQotICByZXR1cm4gcmV0OwotfTsKLQotUm91dGVyLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rp
b24gKCkgewotICBsaXN0ZW5lci5kZXN0cm95KHRoaXMuaGFuZGxlcik7Ci0gIHJldHVybiB0aGlz
OwotfTsKLQotUm91dGVyLnByb3RvdHlwZS5nZXRQYXRoID0gZnVuY3Rpb24gKCkgewotICB2YXIg
cGF0aCA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTsKLSAgaWYgKHBhdGguc3Vic3RyKDAsIDEp
ICE9PSAnLycpIHsKLSAgICBwYXRoID0gJy8nICsgcGF0aDsKLSAgfQotICByZXR1cm4gcGF0aDsK
LX07Ci1mdW5jdGlvbiBfZXZlcnkoYXJyLCBpdGVyYXRvcikgewotICBmb3IgKHZhciBpID0gMDsg
aSA8IGFyci5sZW5ndGg7IGkgKz0gMSkgewotICAgIGlmIChpdGVyYXRvcihhcnJbaV0sIGksIGFy
cikgPT09IGZhbHNlKSB7Ci0gICAgICByZXR1cm47Ci0gICAgfQotICB9Ci19Ci0KLWZ1bmN0aW9u
IF9mbGF0dGVuKGFycikgewotICB2YXIgZmxhdCA9IFtdOwotICBmb3IgKHZhciBpID0gMCwgbiA9
IGFyci5sZW5ndGg7IGkgPCBuOyBpKyspIHsKLSAgICBmbGF0ID0gZmxhdC5jb25jYXQoYXJyW2ld
KTsKLSAgfQotICByZXR1cm4gZmxhdDsKLX0KLQotZnVuY3Rpb24gX2FzeW5jRXZlcnlTZXJpZXMo
YXJyLCBpdGVyYXRvciwgY2FsbGJhY2spIHsKLSAgaWYgKCFhcnIubGVuZ3RoKSB7Ci0gICAgcmV0
dXJuIGNhbGxiYWNrKCk7Ci0gIH0KLSAgdmFyIGNvbXBsZXRlZCA9IDA7Ci0gIChmdW5jdGlvbiBp
dGVyYXRlKCkgewotICAgIGl0ZXJhdG9yKGFycltjb21wbGV0ZWRdLCBmdW5jdGlvbihlcnIpIHsK
LSAgICAgIGlmIChlcnIgfHwgZXJyID09PSBmYWxzZSkgewotICAgICAgICBjYWxsYmFjayhlcnIp
OwotICAgICAgICBjYWxsYmFjayA9IGZ1bmN0aW9uKCkge307Ci0gICAgICB9IGVsc2UgewotICAg
ICAgICBjb21wbGV0ZWQgKz0gMTsKLSAgICAgICAgaWYgKGNvbXBsZXRlZCA9PT0gYXJyLmxlbmd0
aCkgewotICAgICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
aXRlcmF0ZSgpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfSk7Ci0gIH0pKCk7Ci19Ci0KLWZ1
bmN0aW9uIHBhcmFtaWZ5U3RyaW5nKHN0ciwgcGFyYW1zLCBtb2QpIHsKLSAgbW9kID0gc3RyOwot
ICBmb3IgKHZhciBwYXJhbSBpbiBwYXJhbXMpIHsKLSAgICBpZiAocGFyYW1zLmhhc093blByb3Bl
cnR5KHBhcmFtKSkgewotICAgICAgbW9kID0gcGFyYW1zW3BhcmFtXShzdHIpOwotICAgICAgaWYg
KG1vZCAhPT0gc3RyKSB7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgIH0KLSAgfQotICBy
ZXR1cm4gbW9kID09PSBzdHIgPyAiKFsuX2EtekEtWjAtOS1dKykiIDogbW9kOwotfQotCi1mdW5j
dGlvbiByZWdpZnlTdHJpbmcoc3RyLCBwYXJhbXMpIHsKLSAgdmFyIG1hdGNoZXMsIGxhc3QgPSAw
LCBvdXQgPSAiIjsKLSAgd2hpbGUgKG1hdGNoZXMgPSBzdHIuc3Vic3RyKGxhc3QpLm1hdGNoKC9b
Xlx3XGRcLSAlQCZdKlwqW15cd1xkXC0gJUAmXSovKSkgewotICAgIGxhc3QgPSBtYXRjaGVzLmlu
ZGV4ICsgbWF0Y2hlc1swXS5sZW5ndGg7Ci0gICAgbWF0Y2hlc1swXSA9IG1hdGNoZXNbMF0ucmVw
bGFjZSgvXlwqLywgIihbXy4oKSFcXCAlQCZhLXpBLVowLTktXSspIik7Ci0gICAgb3V0ICs9IHN0
ci5zdWJzdHIoMCwgbWF0Y2hlcy5pbmRleCkgKyBtYXRjaGVzWzBdOwotICB9Ci0gIHN0ciA9IG91
dCArPSBzdHIuc3Vic3RyKGxhc3QpOwotICB2YXIgY2FwdHVyZXMgPSBzdHIubWF0Y2goLzooW15c
L10rKS9pZyksIGxlbmd0aDsKLSAgaWYgKGNhcHR1cmVzKSB7Ci0gICAgbGVuZ3RoID0gY2FwdHVy
ZXMubGVuZ3RoOwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICAg
IHN0ciA9IHN0ci5yZXBsYWNlKGNhcHR1cmVzW2ldLCBwYXJhbWlmeVN0cmluZyhjYXB0dXJlc1tp
XSwgcGFyYW1zKSk7Ci0gICAgfQotICB9Ci0gIHJldHVybiBzdHI7Ci19Ci0KLWZ1bmN0aW9uIHRl
cm1pbmF0b3Iocm91dGVzLCBkZWxpbWl0ZXIsIHN0YXJ0LCBzdG9wKSB7Ci0gIHZhciBsYXN0ID0g
MCwgbGVmdCA9IDAsIHJpZ2h0ID0gMCwgc3RhcnQgPSAoc3RhcnQgfHwgIigiKS50b1N0cmluZygp
LCBzdG9wID0gKHN0b3AgfHwgIikiKS50b1N0cmluZygpLCBpOwotICBmb3IgKGkgPSAwOyBpIDwg
cm91dGVzLmxlbmd0aDsgaSsrKSB7Ci0gICAgdmFyIGNodW5rID0gcm91dGVzW2ldOwotICAgIGlm
IChjaHVuay5pbmRleE9mKHN0YXJ0LCBsYXN0KSA+IGNodW5rLmluZGV4T2Yoc3RvcCwgbGFzdCkg
fHwgfmNodW5rLmluZGV4T2Yoc3RhcnQsIGxhc3QpICYmICF+Y2h1bmsuaW5kZXhPZihzdG9wLCBs
YXN0KSB8fCAhfmNodW5rLmluZGV4T2Yoc3RhcnQsIGxhc3QpICYmIH5jaHVuay5pbmRleE9mKHN0
b3AsIGxhc3QpKSB7Ci0gICAgICBsZWZ0ID0gY2h1bmsuaW5kZXhPZihzdGFydCwgbGFzdCk7Ci0g
ICAgICByaWdodCA9IGNodW5rLmluZGV4T2Yoc3RvcCwgbGFzdCk7Ci0gICAgICBpZiAofmxlZnQg
JiYgIX5yaWdodCB8fCAhfmxlZnQgJiYgfnJpZ2h0KSB7Ci0gICAgICAgIHZhciB0bXAgPSByb3V0
ZXMuc2xpY2UoMCwgKGkgfHwgMSkgKyAxKS5qb2luKGRlbGltaXRlcik7Ci0gICAgICAgIHJvdXRl
cyA9IFsgdG1wIF0uY29uY2F0KHJvdXRlcy5zbGljZSgoaSB8fCAxKSArIDEpKTsKLSAgICAgIH0K
LSAgICAgIGxhc3QgPSAocmlnaHQgPiBsZWZ0ID8gcmlnaHQgOiBsZWZ0KSArIDE7Ci0gICAgICBp
ID0gMDsKLSAgICB9IGVsc2UgewotICAgICAgbGFzdCA9IDA7Ci0gICAgfQotICB9Ci0gIHJldHVy
biByb3V0ZXM7Ci19Ci0KLVJvdXRlci5wcm90b3R5cGUuY29uZmlndXJlID0gZnVuY3Rpb24ob3B0
aW9ucykgewotICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKLSAgZm9yICh2YXIgaSA9IDA7IGkg
PCB0aGlzLm1ldGhvZHMubGVuZ3RoOyBpKyspIHsKLSAgICB0aGlzLl9tZXRob2RzW3RoaXMubWV0
aG9kc1tpXV0gPSB0cnVlOwotICB9Ci0gIHRoaXMucmVjdXJzZSA9IG9wdGlvbnMucmVjdXJzZSB8
fCB0aGlzLnJlY3Vyc2UgfHwgZmFsc2U7Ci0gIHRoaXMuYXN5bmMgPSBvcHRpb25zLmFzeW5jIHx8
IGZhbHNlOwotICB0aGlzLmRlbGltaXRlciA9IG9wdGlvbnMuZGVsaW1pdGVyIHx8ICIvIjsKLSAg
dGhpcy5zdHJpY3QgPSB0eXBlb2Ygb3B0aW9ucy5zdHJpY3QgPT09ICJ1bmRlZmluZWQiID8gdHJ1
ZSA6IG9wdGlvbnMuc3RyaWN0OwotICB0aGlzLm5vdGZvdW5kID0gb3B0aW9ucy5ub3Rmb3VuZDsK
LSAgdGhpcy5yZXNvdXJjZSA9IG9wdGlvbnMucmVzb3VyY2U7Ci0gIHRoaXMuaGlzdG9yeSA9IG9w
dGlvbnMuaHRtbDVoaXN0b3J5ICYmIHRoaXMuaGlzdG9yeVN1cHBvcnQgfHwgZmFsc2U7Ci0gIHRo
aXMucnVuX2luX2luaXQgPSB0aGlzLmhpc3RvcnkgPT09IHRydWUgJiYgb3B0aW9ucy5ydW5faGFu
ZGxlcl9pbl9pbml0ICE9PSBmYWxzZTsKLSAgdGhpcy5ldmVyeSA9IHsKLSAgICBhZnRlcjogb3B0
aW9ucy5hZnRlciB8fCBudWxsLAotICAgIGJlZm9yZTogb3B0aW9ucy5iZWZvcmUgfHwgbnVsbCwK
LSAgICBvbjogb3B0aW9ucy5vbiB8fCBudWxsCi0gIH07Ci0gIHJldHVybiB0aGlzOwotfTsKLQot
Um91dGVyLnByb3RvdHlwZS5wYXJhbSA9IGZ1bmN0aW9uKHRva2VuLCBtYXRjaGVyKSB7Ci0gIGlm
ICh0b2tlblswXSAhPT0gIjoiKSB7Ci0gICAgdG9rZW4gPSAiOiIgKyB0b2tlbjsKLSAgfQotICB2
YXIgY29tcGlsZWQgPSBuZXcgUmVnRXhwKHRva2VuLCAiZyIpOwotICB0aGlzLnBhcmFtc1t0b2tl
bl0gPSBmdW5jdGlvbihzdHIpIHsKLSAgICByZXR1cm4gc3RyLnJlcGxhY2UoY29tcGlsZWQsIG1h
dGNoZXIuc291cmNlIHx8IG1hdGNoZXIpOwotICB9OwotfTsKLQotUm91dGVyLnByb3RvdHlwZS5v
biA9IFJvdXRlci5wcm90b3R5cGUucm91dGUgPSBmdW5jdGlvbihtZXRob2QsIHBhdGgsIHJvdXRl
KSB7Ci0gIHZhciBzZWxmID0gdGhpczsKLSAgaWYgKCFyb3V0ZSAmJiB0eXBlb2YgcGF0aCA9PSAi
ZnVuY3Rpb24iKSB7Ci0gICAgcm91dGUgPSBwYXRoOwotICAgIHBhdGggPSBtZXRob2Q7Ci0gICAg
bWV0aG9kID0gIm9uIjsKLSAgfQotICBpZiAoQXJyYXkuaXNBcnJheShwYXRoKSkgewotICAgIHJl
dHVybiBwYXRoLmZvckVhY2goZnVuY3Rpb24ocCkgewotICAgICAgc2VsZi5vbihtZXRob2QsIHAs
IHJvdXRlKTsKLSAgICB9KTsKLSAgfQotICBpZiAocGF0aC5zb3VyY2UpIHsKLSAgICBwYXRoID0g
cGF0aC5zb3VyY2UucmVwbGFjZSgvXFxcLy9pZywgIi8iKTsKLSAgfQotICBpZiAoQXJyYXkuaXNB
cnJheShtZXRob2QpKSB7Ci0gICAgcmV0dXJuIG1ldGhvZC5mb3JFYWNoKGZ1bmN0aW9uKG0pIHsK
LSAgICAgIHNlbGYub24obS50b0xvd2VyQ2FzZSgpLCBwYXRoLCByb3V0ZSk7Ci0gICAgfSk7Ci0g
IH0KLSAgcGF0aCA9IHBhdGguc3BsaXQobmV3IFJlZ0V4cCh0aGlzLmRlbGltaXRlcikpOwotICBw
YXRoID0gdGVybWluYXRvcihwYXRoLCB0aGlzLmRlbGltaXRlcik7Ci0gIHRoaXMuaW5zZXJ0KG1l
dGhvZCwgdGhpcy5zY29wZS5jb25jYXQocGF0aCksIHJvdXRlKTsKLX07Ci0KLVJvdXRlci5wcm90
b3R5cGUuZGlzcGF0Y2ggPSBmdW5jdGlvbihtZXRob2QsIHBhdGgsIGNhbGxiYWNrKSB7Ci0gIHZh
ciBzZWxmID0gdGhpcywgZm5zID0gdGhpcy50cmF2ZXJzZShtZXRob2QsIHBhdGgsIHRoaXMucm91
dGVzLCAiIiksIGludm9rZWQgPSB0aGlzLl9pbnZva2VkLCBhZnRlcjsKLSAgdGhpcy5faW52b2tl
ZCA9IHRydWU7Ci0gIGlmICghZm5zIHx8IGZucy5sZW5ndGggPT09IDApIHsKLSAgICB0aGlzLmxh
c3QgPSBbXTsKLSAgICBpZiAodHlwZW9mIHRoaXMubm90Zm91bmQgPT09ICJmdW5jdGlvbiIpIHsK
LSAgICAgIHRoaXMuaW52b2tlKFsgdGhpcy5ub3Rmb3VuZCBdLCB7Ci0gICAgICAgIG1ldGhvZDog
bWV0aG9kLAotICAgICAgICBwYXRoOiBwYXRoCi0gICAgICB9LCBjYWxsYmFjayk7Ci0gICAgfQot
ICAgIHJldHVybiBmYWxzZTsKLSAgfQotICBpZiAodGhpcy5yZWN1cnNlID09PSAiZm9yd2FyZCIp
IHsKLSAgICBmbnMgPSBmbnMucmV2ZXJzZSgpOwotICB9Ci0gIGZ1bmN0aW9uIHVwZGF0ZUFuZElu
dm9rZSgpIHsKLSAgICBzZWxmLmxhc3QgPSBmbnMuYWZ0ZXI7Ci0gICAgc2VsZi5pbnZva2Uoc2Vs
Zi5ydW5saXN0KGZucyksIHNlbGYsIGNhbGxiYWNrKTsKLSAgfQotICBhZnRlciA9IHRoaXMuZXZl
cnkgJiYgdGhpcy5ldmVyeS5hZnRlciA/IFsgdGhpcy5ldmVyeS5hZnRlciBdLmNvbmNhdCh0aGlz
Lmxhc3QpIDogWyB0aGlzLmxhc3QgXTsKLSAgaWYgKGFmdGVyICYmIGFmdGVyLmxlbmd0aCA+IDAg
JiYgaW52b2tlZCkgewotICAgIGlmICh0aGlzLmFzeW5jKSB7Ci0gICAgICB0aGlzLmludm9rZShh
ZnRlciwgdGhpcywgdXBkYXRlQW5kSW52b2tlKTsKLSAgICB9IGVsc2UgewotICAgICAgdGhpcy5p
bnZva2UoYWZ0ZXIsIHRoaXMpOwotICAgICAgdXBkYXRlQW5kSW52b2tlKCk7Ci0gICAgfQotICAg
IHJldHVybiB0cnVlOwotICB9Ci0gIHVwZGF0ZUFuZEludm9rZSgpOwotICByZXR1cm4gdHJ1ZTsK
LX07Ci0KLVJvdXRlci5wcm90b3R5cGUuaW52b2tlID0gZnVuY3Rpb24oZm5zLCB0aGlzQXJnLCBj
YWxsYmFjaykgewotICB2YXIgc2VsZiA9IHRoaXM7Ci0gIGlmICh0aGlzLmFzeW5jKSB7Ci0gICAg
X2FzeW5jRXZlcnlTZXJpZXMoZm5zLCBmdW5jdGlvbiBhcHBseShmbiwgbmV4dCkgewotICAgICAg
aWYgKEFycmF5LmlzQXJyYXkoZm4pKSB7Ci0gICAgICAgIHJldHVybiBfYXN5bmNFdmVyeVNlcmll
cyhmbiwgYXBwbHksIG5leHQpOwotICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZm4gPT0gImZ1bmN0
aW9uIikgewotICAgICAgICBmbi5hcHBseSh0aGlzQXJnLCBmbnMuY2FwdHVyZXMuY29uY2F0KG5l
eHQpKTsKLSAgICAgIH0KLSAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgIGlmIChjYWxsYmFjaykg
ewotICAgICAgICBjYWxsYmFjay5hcHBseSh0aGlzQXJnLCBhcmd1bWVudHMpOwotICAgICAgfQot
ICAgIH0pOwotICB9IGVsc2UgewotICAgIF9ldmVyeShmbnMsIGZ1bmN0aW9uIGFwcGx5KGZuKSB7
Ci0gICAgICBpZiAoQXJyYXkuaXNBcnJheShmbikpIHsKLSAgICAgICAgcmV0dXJuIF9ldmVyeShm
biwgYXBwbHkpOwotICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZm4gPT09ICJmdW5jdGlvbiIpIHsK
LSAgICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXNBcmcsIGZucy5jYXB0dXJlcyB8fCBbXSk7Ci0g
ICAgICB9IGVsc2UgaWYgKHR5cGVvZiBmbiA9PT0gInN0cmluZyIgJiYgc2VsZi5yZXNvdXJjZSkg
ewotICAgICAgICBzZWxmLnJlc291cmNlW2ZuXS5hcHBseSh0aGlzQXJnLCBmbnMuY2FwdHVyZXMg
fHwgW10pOwotICAgICAgfQotICAgIH0pOwotICB9Ci19OwotCi1Sb3V0ZXIucHJvdG90eXBlLnRy
YXZlcnNlID0gZnVuY3Rpb24obWV0aG9kLCBwYXRoLCByb3V0ZXMsIHJlZ2V4cCwgZmlsdGVyKSB7
Ci0gIHZhciBmbnMgPSBbXSwgY3VycmVudCwgZXhhY3QsIG1hdGNoLCBuZXh0LCB0aGF0OwotICBm
dW5jdGlvbiBmaWx0ZXJSb3V0ZXMocm91dGVzKSB7Ci0gICAgaWYgKCFmaWx0ZXIpIHsKLSAgICAg
IHJldHVybiByb3V0ZXM7Ci0gICAgfQotICAgIGZ1bmN0aW9uIGRlZXBDb3B5KHNvdXJjZSkgewot
ICAgICAgdmFyIHJlc3VsdCA9IFtdOwotICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzb3VyY2Uu
bGVuZ3RoOyBpKyspIHsKLSAgICAgICAgcmVzdWx0W2ldID0gQXJyYXkuaXNBcnJheShzb3VyY2Vb
aV0pID8gZGVlcENvcHkoc291cmNlW2ldKSA6IHNvdXJjZVtpXTsKLSAgICAgIH0KLSAgICAgIHJl
dHVybiByZXN1bHQ7Ci0gICAgfQotICAgIGZ1bmN0aW9uIGFwcGx5RmlsdGVyKGZucykgewotICAg
ICAgZm9yICh2YXIgaSA9IGZucy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgewotICAgICAgICBp
ZiAoQXJyYXkuaXNBcnJheShmbnNbaV0pKSB7Ci0gICAgICAgICAgYXBwbHlGaWx0ZXIoZm5zW2ld
KTsKLSAgICAgICAgICBpZiAoZm5zW2ldLmxlbmd0aCA9PT0gMCkgewotICAgICAgICAgICAgZm5z
LnNwbGljZShpLCAxKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
aWYgKCFmaWx0ZXIoZm5zW2ldKSkgewotICAgICAgICAgICAgZm5zLnNwbGljZShpLCAxKTsKLSAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgdmFyIG5ld1JvdXRlcyA9
IGRlZXBDb3B5KHJvdXRlcyk7Ci0gICAgbmV3Um91dGVzLm1hdGNoZWQgPSByb3V0ZXMubWF0Y2hl
ZDsKLSAgICBuZXdSb3V0ZXMuY2FwdHVyZXMgPSByb3V0ZXMuY2FwdHVyZXM7Ci0gICAgbmV3Um91
dGVzLmFmdGVyID0gcm91dGVzLmFmdGVyLmZpbHRlcihmaWx0ZXIpOwotICAgIGFwcGx5RmlsdGVy
KG5ld1JvdXRlcyk7Ci0gICAgcmV0dXJuIG5ld1JvdXRlczsKLSAgfQotICBpZiAocGF0aCA9PT0g
dGhpcy5kZWxpbWl0ZXIgJiYgcm91dGVzW21ldGhvZF0pIHsKLSAgICBuZXh0ID0gWyBbIHJvdXRl
cy5iZWZvcmUsIHJvdXRlc1ttZXRob2RdIF0uZmlsdGVyKEJvb2xlYW4pIF07Ci0gICAgbmV4dC5h
ZnRlciA9IFsgcm91dGVzLmFmdGVyIF0uZmlsdGVyKEJvb2xlYW4pOwotICAgIG5leHQubWF0Y2hl
ZCA9IHRydWU7Ci0gICAgbmV4dC5jYXB0dXJlcyA9IFtdOwotICAgIHJldHVybiBmaWx0ZXJSb3V0
ZXMobmV4dCk7Ci0gIH0KLSAgZm9yICh2YXIgciBpbiByb3V0ZXMpIHsKLSAgICBpZiAocm91dGVz
Lmhhc093blByb3BlcnR5KHIpICYmICghdGhpcy5fbWV0aG9kc1tyXSB8fCB0aGlzLl9tZXRob2Rz
W3JdICYmIHR5cGVvZiByb3V0ZXNbcl0gPT09ICJvYmplY3QiICYmICFBcnJheS5pc0FycmF5KHJv
dXRlc1tyXSkpKSB7Ci0gICAgICBjdXJyZW50ID0gZXhhY3QgPSByZWdleHAgKyB0aGlzLmRlbGlt
aXRlciArIHI7Ci0gICAgICBpZiAoIXRoaXMuc3RyaWN0KSB7Ci0gICAgICAgIGV4YWN0ICs9ICJb
IiArIHRoaXMuZGVsaW1pdGVyICsgIl0/IjsKLSAgICAgIH0KLSAgICAgIG1hdGNoID0gcGF0aC5t
YXRjaChuZXcgUmVnRXhwKCJeIiArIGV4YWN0KSk7Ci0gICAgICBpZiAoIW1hdGNoKSB7Ci0gICAg
ICAgIGNvbnRpbnVlOwotICAgICAgfQotICAgICAgaWYgKG1hdGNoWzBdICYmIG1hdGNoWzBdID09
IHBhdGggJiYgcm91dGVzW3JdW21ldGhvZF0pIHsKLSAgICAgICAgbmV4dCA9IFsgWyByb3V0ZXNb
cl0uYmVmb3JlLCByb3V0ZXNbcl1bbWV0aG9kXSBdLmZpbHRlcihCb29sZWFuKSBdOwotICAgICAg
ICBuZXh0LmFmdGVyID0gWyByb3V0ZXNbcl0uYWZ0ZXIgXS5maWx0ZXIoQm9vbGVhbik7Ci0gICAg
ICAgIG5leHQubWF0Y2hlZCA9IHRydWU7Ci0gICAgICAgIG5leHQuY2FwdHVyZXMgPSBtYXRjaC5z
bGljZSgxKTsKLSAgICAgICAgaWYgKHRoaXMucmVjdXJzZSAmJiByb3V0ZXMgPT09IHRoaXMucm91
dGVzKSB7Ci0gICAgICAgICAgbmV4dC5wdXNoKFsgcm91dGVzLmJlZm9yZSwgcm91dGVzLm9uIF0u
ZmlsdGVyKEJvb2xlYW4pKTsKLSAgICAgICAgICBuZXh0LmFmdGVyID0gbmV4dC5hZnRlci5jb25j
YXQoWyByb3V0ZXMuYWZ0ZXIgXS5maWx0ZXIoQm9vbGVhbikpOwotICAgICAgICB9Ci0gICAgICAg
IHJldHVybiBmaWx0ZXJSb3V0ZXMobmV4dCk7Ci0gICAgICB9Ci0gICAgICBuZXh0ID0gdGhpcy50
cmF2ZXJzZShtZXRob2QsIHBhdGgsIHJvdXRlc1tyXSwgY3VycmVudCk7Ci0gICAgICBpZiAobmV4
dC5tYXRjaGVkKSB7Ci0gICAgICAgIGlmIChuZXh0Lmxlbmd0aCA+IDApIHsKLSAgICAgICAgICBm
bnMgPSBmbnMuY29uY2F0KG5leHQpOwotICAgICAgICB9Ci0gICAgICAgIGlmICh0aGlzLnJlY3Vy
c2UpIHsKLSAgICAgICAgICBmbnMucHVzaChbIHJvdXRlc1tyXS5iZWZvcmUsIHJvdXRlc1tyXS5v
biBdLmZpbHRlcihCb29sZWFuKSk7Ci0gICAgICAgICAgbmV4dC5hZnRlciA9IG5leHQuYWZ0ZXIu
Y29uY2F0KFsgcm91dGVzW3JdLmFmdGVyIF0uZmlsdGVyKEJvb2xlYW4pKTsKLSAgICAgICAgICBp
ZiAocm91dGVzID09PSB0aGlzLnJvdXRlcykgewotICAgICAgICAgICAgZm5zLnB1c2goWyByb3V0
ZXNbImJlZm9yZSJdLCByb3V0ZXNbIm9uIl0gXS5maWx0ZXIoQm9vbGVhbikpOwotICAgICAgICAg
ICAgbmV4dC5hZnRlciA9IG5leHQuYWZ0ZXIuY29uY2F0KFsgcm91dGVzWyJhZnRlciJdIF0uZmls
dGVyKEJvb2xlYW4pKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZm5zLm1hdGNo
ZWQgPSB0cnVlOwotICAgICAgICBmbnMuY2FwdHVyZXMgPSBuZXh0LmNhcHR1cmVzOwotICAgICAg
ICBmbnMuYWZ0ZXIgPSBuZXh0LmFmdGVyOwotICAgICAgICByZXR1cm4gZmlsdGVyUm91dGVzKGZu
cyk7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0gIHJldHVybiBmYWxzZTsKLX07Ci0KLVJvdXRlci5w
cm90b3R5cGUuaW5zZXJ0ID0gZnVuY3Rpb24obWV0aG9kLCBwYXRoLCByb3V0ZSwgcGFyZW50KSB7
Ci0gIHZhciBtZXRob2RUeXBlLCBwYXJlbnRUeXBlLCBpc0FycmF5LCBuZXN0ZWQsIHBhcnQ7Ci0g
IHBhdGggPSBwYXRoLmZpbHRlcihmdW5jdGlvbihwKSB7Ci0gICAgcmV0dXJuIHAgJiYgcC5sZW5n
dGggPiAwOwotICB9KTsKLSAgcGFyZW50ID0gcGFyZW50IHx8IHRoaXMucm91dGVzOwotICBwYXJ0
ID0gcGF0aC5zaGlmdCgpOwotICBpZiAoL1w6fFwqLy50ZXN0KHBhcnQpICYmICEvXFxkfFxcdy8u
dGVzdChwYXJ0KSkgewotICAgIHBhcnQgPSByZWdpZnlTdHJpbmcocGFydCwgdGhpcy5wYXJhbXMp
OwotICB9Ci0gIGlmIChwYXRoLmxlbmd0aCA+IDApIHsKLSAgICBwYXJlbnRbcGFydF0gPSBwYXJl
bnRbcGFydF0gfHwge307Ci0gICAgcmV0dXJuIHRoaXMuaW5zZXJ0KG1ldGhvZCwgcGF0aCwgcm91
dGUsIHBhcmVudFtwYXJ0XSk7Ci0gIH0KLSAgaWYgKCFwYXJ0ICYmICFwYXRoLmxlbmd0aCAmJiBw
YXJlbnQgPT09IHRoaXMucm91dGVzKSB7Ci0gICAgbWV0aG9kVHlwZSA9IHR5cGVvZiBwYXJlbnRb
bWV0aG9kXTsKLSAgICBzd2l0Y2ggKG1ldGhvZFR5cGUpIHsKLSAgICAgY2FzZSAiZnVuY3Rpb24i
OgotICAgICAgcGFyZW50W21ldGhvZF0gPSBbIHBhcmVudFttZXRob2RdLCByb3V0ZSBdOwotICAg
ICAgcmV0dXJuOwotICAgICBjYXNlICJvYmplY3QiOgotICAgICAgcGFyZW50W21ldGhvZF0ucHVz
aChyb3V0ZSk7Ci0gICAgICByZXR1cm47Ci0gICAgIGNhc2UgInVuZGVmaW5lZCI6Ci0gICAgICBw
YXJlbnRbbWV0aG9kXSA9IHJvdXRlOwotICAgICAgcmV0dXJuOwotICAgIH0KLSAgICByZXR1cm47
Ci0gIH0KLSAgcGFyZW50VHlwZSA9IHR5cGVvZiBwYXJlbnRbcGFydF07Ci0gIGlzQXJyYXkgPSBB
cnJheS5pc0FycmF5KHBhcmVudFtwYXJ0XSk7Ci0gIGlmIChwYXJlbnRbcGFydF0gJiYgIWlzQXJy
YXkgJiYgcGFyZW50VHlwZSA9PSAib2JqZWN0IikgewotICAgIG1ldGhvZFR5cGUgPSB0eXBlb2Yg
cGFyZW50W3BhcnRdW21ldGhvZF07Ci0gICAgc3dpdGNoIChtZXRob2RUeXBlKSB7Ci0gICAgIGNh
c2UgImZ1bmN0aW9uIjoKLSAgICAgIHBhcmVudFtwYXJ0XVttZXRob2RdID0gWyBwYXJlbnRbcGFy
dF1bbWV0aG9kXSwgcm91dGUgXTsKLSAgICAgIHJldHVybjsKLSAgICAgY2FzZSAib2JqZWN0IjoK
LSAgICAgIHBhcmVudFtwYXJ0XVttZXRob2RdLnB1c2gocm91dGUpOwotICAgICAgcmV0dXJuOwot
ICAgICBjYXNlICJ1bmRlZmluZWQiOgotICAgICAgcGFyZW50W3BhcnRdW21ldGhvZF0gPSByb3V0
ZTsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0gIH0gZWxzZSBpZiAocGFyZW50VHlwZSA9PSAidW5k
ZWZpbmVkIikgewotICAgIG5lc3RlZCA9IHt9OwotICAgIG5lc3RlZFttZXRob2RdID0gcm91dGU7
Ci0gICAgcGFyZW50W3BhcnRdID0gbmVzdGVkOwotICAgIHJldHVybjsKLSAgfQotICB0aHJvdyBu
ZXcgRXJyb3IoIkludmFsaWQgcm91dGUgY29udGV4dDogIiArIHBhcmVudFR5cGUpOwotfTsKLQot
Ci0KLVJvdXRlci5wcm90b3R5cGUuZXh0ZW5kID0gZnVuY3Rpb24obWV0aG9kcykgewotICB2YXIg
c2VsZiA9IHRoaXMsIGxlbiA9IG1ldGhvZHMubGVuZ3RoLCBpOwotICBmdW5jdGlvbiBleHRlbmQo
bWV0aG9kKSB7Ci0gICAgc2VsZi5fbWV0aG9kc1ttZXRob2RdID0gdHJ1ZTsKLSAgICBzZWxmW21l
dGhvZF0gPSBmdW5jdGlvbigpIHsKLSAgICAgIHZhciBleHRyYSA9IGFyZ3VtZW50cy5sZW5ndGgg
PT09IDEgPyBbIG1ldGhvZCwgIiIgXSA6IFsgbWV0aG9kIF07Ci0gICAgICBzZWxmLm9uLmFwcGx5
KHNlbGYsIGV4dHJhLmNvbmNhdChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMp
KSk7Ci0gICAgfTsKLSAgfQotICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKLSAgICBleHRl
bmQobWV0aG9kc1tpXSk7Ci0gIH0KLX07Ci0KLVJvdXRlci5wcm90b3R5cGUucnVubGlzdCA9IGZ1
bmN0aW9uKGZucykgewotICB2YXIgcnVubGlzdCA9IHRoaXMuZXZlcnkgJiYgdGhpcy5ldmVyeS5i
ZWZvcmUgPyBbIHRoaXMuZXZlcnkuYmVmb3JlIF0uY29uY2F0KF9mbGF0dGVuKGZucykpIDogX2Zs
YXR0ZW4oZm5zKTsKLSAgaWYgKHRoaXMuZXZlcnkgJiYgdGhpcy5ldmVyeS5vbikgewotICAgIHJ1
bmxpc3QucHVzaCh0aGlzLmV2ZXJ5Lm9uKTsKLSAgfQotICBydW5saXN0LmNhcHR1cmVzID0gZm5z
LmNhcHR1cmVzOwotICBydW5saXN0LnNvdXJjZSA9IGZucy5zb3VyY2U7Ci0gIHJldHVybiBydW5s
aXN0OwotfTsKLQotUm91dGVyLnByb3RvdHlwZS5tb3VudCA9IGZ1bmN0aW9uKHJvdXRlcywgcGF0
aCkgewotICBpZiAoIXJvdXRlcyB8fCB0eXBlb2Ygcm91dGVzICE9PSAib2JqZWN0IiB8fCBBcnJh
eS5pc0FycmF5KHJvdXRlcykpIHsKLSAgICByZXR1cm47Ci0gIH0KLSAgdmFyIHNlbGYgPSB0aGlz
OwotICBwYXRoID0gcGF0aCB8fCBbXTsKLSAgaWYgKCFBcnJheS5pc0FycmF5KHBhdGgpKSB7Ci0g
ICAgcGF0aCA9IHBhdGguc3BsaXQoc2VsZi5kZWxpbWl0ZXIpOwotICB9Ci0gIGZ1bmN0aW9uIGlu
c2VydE9yTW91bnQocm91dGUsIGxvY2FsKSB7Ci0gICAgdmFyIHJlbmFtZSA9IHJvdXRlLCBwYXJ0
cyA9IHJvdXRlLnNwbGl0KHNlbGYuZGVsaW1pdGVyKSwgcm91dGVUeXBlID0gdHlwZW9mIHJvdXRl
c1tyb3V0ZV0sIGlzUm91dGUgPSBwYXJ0c1swXSA9PT0gIiIgfHwgIXNlbGYuX21ldGhvZHNbcGFy
dHNbMF1dLCBldmVudCA9IGlzUm91dGUgPyAib24iIDogcmVuYW1lOwotICAgIGlmIChpc1JvdXRl
KSB7Ci0gICAgICByZW5hbWUgPSByZW5hbWUuc2xpY2UoKHJlbmFtZS5tYXRjaChuZXcgUmVnRXhw
KHNlbGYuZGVsaW1pdGVyKSkgfHwgWyAiIiBdKVswXS5sZW5ndGgpOwotICAgICAgcGFydHMuc2hp
ZnQoKTsKLSAgICB9Ci0gICAgaWYgKGlzUm91dGUgJiYgcm91dGVUeXBlID09PSAib2JqZWN0IiAm
JiAhQXJyYXkuaXNBcnJheShyb3V0ZXNbcm91dGVdKSkgewotICAgICAgbG9jYWwgPSBsb2NhbC5j
b25jYXQocGFydHMpOwotICAgICAgc2VsZi5tb3VudChyb3V0ZXNbcm91dGVdLCBsb2NhbCk7Ci0g
ICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChpc1JvdXRlKSB7Ci0gICAgICBsb2NhbCA9IGxv
Y2FsLmNvbmNhdChyZW5hbWUuc3BsaXQoc2VsZi5kZWxpbWl0ZXIpKTsKLSAgICAgIGxvY2FsID0g
dGVybWluYXRvcihsb2NhbCwgc2VsZi5kZWxpbWl0ZXIpOwotICAgIH0KLSAgICBzZWxmLmluc2Vy
dChldmVudCwgbG9jYWwsIHJvdXRlc1tyb3V0ZV0pOwotICB9Ci0gIGZvciAodmFyIHJvdXRlIGlu
IHJvdXRlcykgewotICAgIGlmIChyb3V0ZXMuaGFzT3duUHJvcGVydHkocm91dGUpKSB7Ci0gICAg
ICBpbnNlcnRPck1vdW50KHJvdXRlLCBwYXRoLnNsaWNlKDApKTsKLSAgICB9Ci0gIH0KLX07Ci0K
LQotCi19KHR5cGVvZiBleHBvcnRzID09PSAib2JqZWN0IiA/IGV4cG9ydHMgOiB3aW5kb3cpKTsK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2xhYnMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L3JlYWN0L2Jvd2VyX2NvbXBvbmVudHMvZGlyZWN0b3IvYnVpbGQvZGlyZWN0b3IubWluLmpzIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9sYWJzL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ib3dlcl9jb21wb25lbnRzL2RpcmVjdG9yL2J1aWxkL2Rp
cmVjdG9yLm1pbi5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjNlYzI4OGZjMTE5
YzcyNjhhY2Y4MzZjZWQ3OTI3YTIyNTVlYjRmMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2xhYnMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L2Jvd2VyX2NvbXBvbmVu
dHMvZGlyZWN0b3IvYnVpbGQvZGlyZWN0b3IubWluLmpzCisrKyAvZGV2L251bGwKQEAgLTEsNyAr
MCwwIEBACi0KLQotLy8KLS8vIEdlbmVyYXRlZCBvbiBTdW4gRGVjIDE2IDIwMTIgMjI6NDc6MDUg
R01ULTA1MDAgKEVTVCkgYnkgTm9kZWppdHN1LCBJbmMgKFVzaW5nIENvZGVzdXJnZW9uKS4KLS8v
IFZlcnNpb24gMS4xLjkKLS8vCi0oZnVuY3Rpb24oYSl7ZnVuY3Rpb24gayhhLGIsYyxkKXt2YXIg
ZT0wLGY9MCxnPTAsYz0oY3x8IigiKS50b1N0cmluZygpLGQ9KGR8fCIpIikudG9TdHJpbmcoKSxo
O2ZvcihoPTA7aDxhLmxlbmd0aDtoKyspe3ZhciBpPWFbaF07aWYoaS5pbmRleE9mKGMsZSk+aS5p
bmRleE9mKGQsZSl8fH5pLmluZGV4T2YoYyxlKSYmIX5pLmluZGV4T2YoZCxlKXx8IX5pLmluZGV4
T2YoYyxlKSYmfmkuaW5kZXhPZihkLGUpKXtmPWkuaW5kZXhPZihjLGUpLGc9aS5pbmRleE9mKGQs
ZSk7aWYofmYmJiF+Z3x8IX5mJiZ+Zyl7dmFyIGo9YS5zbGljZSgwLChofHwxKSsxKS5qb2luKGIp
O2E9W2pdLmNvbmNhdChhLnNsaWNlKChofHwxKSsxKSl9ZT0oZz5mP2c6ZikrMSxoPTB9ZWxzZSBl
PTB9cmV0dXJuIGF9ZnVuY3Rpb24gaihhLGIpe3ZhciBjLGQ9MCxlPSIiO3doaWxlKGM9YS5zdWJz
dHIoZCkubWF0Y2goL1teXHdcZFwtICVAJl0qXCpbXlx3XGRcLSAlQCZdKi8pKWQ9Yy5pbmRleCtj
WzBdLmxlbmd0aCxjWzBdPWNbMF0ucmVwbGFjZSgvXlwqLywiKFtfLigpIVxcICVAJmEtekEtWjAt
OS1dKykiKSxlKz1hLnN1YnN0cigwLGMuaW5kZXgpK2NbMF07YT1lKz1hLnN1YnN0cihkKTt2YXIg
Zj1hLm1hdGNoKC86KFteXC9dKykvaWcpLGc7aWYoZil7Zz1mLmxlbmd0aDtmb3IodmFyIGg9MDto
PGc7aCsrKWE9YS5yZXBsYWNlKGZbaF0saShmW2hdLGIpKX1yZXR1cm4gYX1mdW5jdGlvbiBpKGEs
YixjKXtjPWE7Zm9yKHZhciBkIGluIGIpaWYoYi5oYXNPd25Qcm9wZXJ0eShkKSl7Yz1iW2RdKGEp
O2lmKGMhPT1hKWJyZWFrfXJldHVybiBjPT09YT8iKFsuX2EtekEtWjAtOS1dKykiOmN9ZnVuY3Rp
b24gaChhLGIsYyl7aWYoIWEubGVuZ3RoKXJldHVybiBjKCk7dmFyIGQ9MDsoZnVuY3Rpb24gZSgp
e2IoYVtkXSxmdW5jdGlvbihiKXtifHxiPT09ITE/KGMoYiksYz1mdW5jdGlvbigpe30pOihkKz0x
LGQ9PT1hLmxlbmd0aD9jKCk6ZSgpKX0pfSkoKX1mdW5jdGlvbiBnKGEpe3ZhciBiPVtdO2Zvcih2
YXIgYz0wLGQ9YS5sZW5ndGg7YzxkO2MrKyliPWIuY29uY2F0KGFbY10pO3JldHVybiBifWZ1bmN0
aW9uIGYoYSxiKXtmb3IodmFyIGM9MDtjPGEubGVuZ3RoO2MrPTEpaWYoYihhW2NdLGMsYSk9PT0h
MSlyZXR1cm59ZnVuY3Rpb24gYygpe3JldHVybiBiLmhhc2g9PT0iInx8Yi5oYXNoPT09IiMifUFy
cmF5LnByb3RvdHlwZS5maWx0ZXJ8fChBcnJheS5wcm90b3R5cGUuZmlsdGVyPWZ1bmN0aW9uKGEs
Yil7dmFyIGM9W10sZDtmb3IodmFyIGU9MCxmPXRoaXMubGVuZ3RoO2U8ZjtlKyspZSBpbiB0aGlz
JiZhLmNhbGwoYixkPXRoaXNbZV0sZSx0aGlzKSYmYy5wdXNoKGQpO3JldHVybiBjfSksQXJyYXku
aXNBcnJheXx8KEFycmF5LmlzQXJyYXk9ZnVuY3Rpb24oYSl7cmV0dXJuIE9iamVjdC5wcm90b3R5
cGUudG9TdHJpbmcuY2FsbChhKT09PSJbb2JqZWN0IEFycmF5XSJ9KTt2YXIgYj1kb2N1bWVudC5s
b2NhdGlvbixkPXttb2RlOiJtb2Rlcm4iLGhhc2g6Yi5oYXNoLGhpc3Rvcnk6ITEsY2hlY2s6ZnVu
Y3Rpb24oKXt2YXIgYT1iLmhhc2g7YSE9dGhpcy5oYXNoJiYodGhpcy5oYXNoPWEsdGhpcy5vbkhh
c2hDaGFuZ2VkKCkpfSxmaXJlOmZ1bmN0aW9uKCl7dGhpcy5tb2RlPT09Im1vZGVybiI/dGhpcy5o
aXN0b3J5PT09ITA/d2luZG93Lm9ucG9wc3RhdGUoKTp3aW5kb3cub25oYXNoY2hhbmdlKCk6dGhp
cy5vbkhhc2hDaGFuZ2VkKCl9LGluaXQ6ZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBkKGEpe2Zvcih2
YXIgYj0wLGM9ZS5saXN0ZW5lcnMubGVuZ3RoO2I8YztiKyspZS5saXN0ZW5lcnNbYl0oYSl9dmFy
IGM9dGhpczt0aGlzLmhpc3Rvcnk9YixlLmxpc3RlbmVyc3x8KGUubGlzdGVuZXJzPVtdKTtpZigi
b25oYXNoY2hhbmdlImluIHdpbmRvdyYmKGRvY3VtZW50LmRvY3VtZW50TW9kZT09PXVuZGVmaW5l
ZHx8ZG9jdW1lbnQuZG9jdW1lbnRNb2RlPjcpKXRoaXMuaGlzdG9yeT09PSEwP3NldFRpbWVvdXQo
ZnVuY3Rpb24oKXt3aW5kb3cub25wb3BzdGF0ZT1kfSw1MDApOndpbmRvdy5vbmhhc2hjaGFuZ2U9
ZCx0aGlzLm1vZGU9Im1vZGVybiI7ZWxzZXt2YXIgZj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJp
ZnJhbWUiKTtmLmlkPSJzdGF0ZS1mcmFtZSIsZi5zdHlsZS5kaXNwbGF5PSJub25lIixkb2N1bWVu
dC5ib2R5LmFwcGVuZENoaWxkKGYpLHRoaXMud3JpdGVGcmFtZSgiIiksIm9ucHJvcGVydHljaGFu
Z2UiaW4gZG9jdW1lbnQmJiJhdHRhY2hFdmVudCJpbiBkb2N1bWVudCYmZG9jdW1lbnQuYXR0YWNo
RXZlbnQoIm9ucHJvcGVydHljaGFuZ2UiLGZ1bmN0aW9uKCl7ZXZlbnQucHJvcGVydHlOYW1lPT09
ImxvY2F0aW9uIiYmYy5jaGVjaygpfSksd2luZG93LnNldEludGVydmFsKGZ1bmN0aW9uKCl7Yy5j
aGVjaygpfSw1MCksdGhpcy5vbkhhc2hDaGFuZ2VkPWQsdGhpcy5tb2RlPSJsZWdhY3kifWUubGlz
dGVuZXJzLnB1c2goYSk7cmV0dXJuIHRoaXMubW9kZX0sZGVzdHJveTpmdW5jdGlvbihhKXtpZigh
IWUmJiEhZS5saXN0ZW5lcnMpe3ZhciBiPWUubGlzdGVuZXJzO2Zvcih2YXIgYz1iLmxlbmd0aC0x
O2M+PTA7Yy0tKWJbY109PT1hJiZiLnNwbGljZShjLDEpfX0sc2V0SGFzaDpmdW5jdGlvbihhKXt0
aGlzLm1vZGU9PT0ibGVnYWN5IiYmdGhpcy53cml0ZUZyYW1lKGEpLHRoaXMuaGlzdG9yeT09PSEw
Pyh3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUoe30sZG9jdW1lbnQudGl0bGUsYSksdGhpcy5maXJl
KCkpOmIuaGFzaD1hWzBdPT09Ii8iP2E6Ii8iK2E7cmV0dXJuIHRoaXN9LHdyaXRlRnJhbWU6ZnVu
Y3Rpb24oYSl7dmFyIGI9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0YXRlLWZyYW1lIiksYz1i
LmNvbnRlbnREb2N1bWVudHx8Yi5jb250ZW50V2luZG93LmRvY3VtZW50O2Mub3BlbigpLGMud3Jp
dGUoIjxzY3JpcHQ+X2hhc2ggPSAnIithKyInOyBvbmxvYWQgPSBwYXJlbnQubGlzdGVuZXIuc3lu
Y0hhc2g7PHNjcmlwdD4iKSxjLmNsb3NlKCl9LHN5bmNIYXNoOmZ1bmN0aW9uKCl7dmFyIGE9dGhp
cy5faGFzaDthIT1iLmhhc2gmJihiLmhhc2g9YSk7cmV0dXJuIHRoaXN9LG9uSGFzaENoYW5nZWQ6
ZnVuY3Rpb24oKXt9fSxlPWEuUm91dGVyPWZ1bmN0aW9uKGEpe2lmKHRoaXMgaW5zdGFuY2VvZiBl
KXRoaXMucGFyYW1zPXt9LHRoaXMucm91dGVzPXt9LHRoaXMubWV0aG9kcz1bIm9uIiwib25jZSIs
ImFmdGVyIiwiYmVmb3JlIl0sdGhpcy5zY29wZT1bXSx0aGlzLl9tZXRob2RzPXt9LHRoaXMuX2lu
c2VydD10aGlzLmluc2VydCx0aGlzLmluc2VydD10aGlzLmluc2VydEV4LHRoaXMuaGlzdG9yeVN1
cHBvcnQ9KHdpbmRvdy5oaXN0b3J5IT1udWxsP3dpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZTpudWxs
KSE9bnVsbCx0aGlzLmNvbmZpZ3VyZSgpLHRoaXMubW91bnQoYXx8e30pO2Vsc2UgcmV0dXJuIG5l
dyBlKGEpfTtlLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKGEpe3ZhciBlPXRoaXM7dGhpcy5oYW5k
bGVyPWZ1bmN0aW9uKGEpe3ZhciBiPWEmJmEubmV3VVJMfHx3aW5kb3cubG9jYXRpb24uaGFzaCxj
PWUuaGlzdG9yeT09PSEwP2UuZ2V0UGF0aCgpOmIucmVwbGFjZSgvLiojLywiIik7ZS5kaXNwYXRj
aCgib24iLGMpfSxkLmluaXQodGhpcy5oYW5kbGVyLHRoaXMuaGlzdG9yeSk7aWYodGhpcy5oaXN0
b3J5PT09ITEpYygpJiZhP2IuaGFzaD1hOmMoKXx8ZS5kaXNwYXRjaCgib24iLGIuaGFzaC5yZXBs
YWNlKC9eIy8sIiIpKTtlbHNle3ZhciBmPWMoKSYmYT9hOmMoKT9udWxsOmIuaGFzaC5yZXBsYWNl
KC9eIy8sIiIpO2YmJndpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZSh7fSxkb2N1bWVudC50aXRs
ZSxmKSwoZnx8dGhpcy5ydW5faW5faW5pdD09PSEwKSYmdGhpcy5oYW5kbGVyKCl9cmV0dXJuIHRo
aXN9LGUucHJvdG90eXBlLmV4cGxvZGU9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmhpc3Rvcnk9PT0h
MD90aGlzLmdldFBhdGgoKTpiLmhhc2g7YS5jaGFyQXQoMSk9PT0iLyImJihhPWEuc2xpY2UoMSkp
O3JldHVybiBhLnNsaWNlKDEsYS5sZW5ndGgpLnNwbGl0KCIvIil9LGUucHJvdG90eXBlLnNldFJv
dXRlPWZ1bmN0aW9uKGEsYixjKXt2YXIgZT10aGlzLmV4cGxvZGUoKTt0eXBlb2YgYT09Im51bWJl
ciImJnR5cGVvZiBiPT0ic3RyaW5nIj9lW2FdPWI6dHlwZW9mIGM9PSJzdHJpbmciP2Uuc3BsaWNl
KGEsYixzKTplPVthXSxkLnNldEhhc2goZS5qb2luKCIvIikpO3JldHVybiBlfSxlLnByb3RvdHlw
ZS5pbnNlcnRFeD1mdW5jdGlvbihhLGIsYyxkKXthPT09Im9uY2UiJiYoYT0ib24iLGM9ZnVuY3Rp
b24oYSl7dmFyIGI9ITE7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoIWIpe2I9ITA7cmV0dXJuIGEuYXBw
bHkodGhpcyxhcmd1bWVudHMpfX19KGMpKTtyZXR1cm4gdGhpcy5faW5zZXJ0KGEsYixjLGQpfSxl
LnByb3RvdHlwZS5nZXRSb3V0ZT1mdW5jdGlvbihhKXt2YXIgYj1hO2lmKHR5cGVvZiBhPT0ibnVt
YmVyIiliPXRoaXMuZXhwbG9kZSgpW2FdO2Vsc2UgaWYodHlwZW9mIGE9PSJzdHJpbmciKXt2YXIg
Yz10aGlzLmV4cGxvZGUoKTtiPWMuaW5kZXhPZihhKX1lbHNlIGI9dGhpcy5leHBsb2RlKCk7cmV0
dXJuIGJ9LGUucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXtkLmRlc3Ryb3kodGhpcy5oYW5k
bGVyKTtyZXR1cm4gdGhpc30sZS5wcm90b3R5cGUuZ2V0UGF0aD1mdW5jdGlvbigpe3ZhciBhPXdp
bmRvdy5sb2NhdGlvbi5wYXRobmFtZTthLnN1YnN0cigwLDEpIT09Ii8iJiYoYT0iLyIrYSk7cmV0
dXJuIGF9LGUucHJvdG90eXBlLmNvbmZpZ3VyZT1mdW5jdGlvbihhKXthPWF8fHt9O2Zvcih2YXIg
Yj0wO2I8dGhpcy5tZXRob2RzLmxlbmd0aDtiKyspdGhpcy5fbWV0aG9kc1t0aGlzLm1ldGhvZHNb
Yl1dPSEwO3RoaXMucmVjdXJzZT1hLnJlY3Vyc2V8fHRoaXMucmVjdXJzZXx8ITEsdGhpcy5hc3lu
Yz1hLmFzeW5jfHwhMSx0aGlzLmRlbGltaXRlcj1hLmRlbGltaXRlcnx8Ii8iLHRoaXMuc3RyaWN0
PXR5cGVvZiBhLnN0cmljdD09InVuZGVmaW5lZCI/ITA6YS5zdHJpY3QsdGhpcy5ub3Rmb3VuZD1h
Lm5vdGZvdW5kLHRoaXMucmVzb3VyY2U9YS5yZXNvdXJjZSx0aGlzLmhpc3Rvcnk9YS5odG1sNWhp
c3RvcnkmJnRoaXMuaGlzdG9yeVN1cHBvcnR8fCExLHRoaXMucnVuX2luX2luaXQ9dGhpcy5oaXN0
b3J5PT09ITAmJmEucnVuX2hhbmRsZXJfaW5faW5pdCE9PSExLHRoaXMuZXZlcnk9e2FmdGVyOmEu
YWZ0ZXJ8fG51bGwsYmVmb3JlOmEuYmVmb3JlfHxudWxsLG9uOmEub258fG51bGx9O3JldHVybiB0
aGlzfSxlLnByb3RvdHlwZS5wYXJhbT1mdW5jdGlvbihhLGIpe2FbMF0hPT0iOiImJihhPSI6Iith
KTt2YXIgYz1uZXcgUmVnRXhwKGEsImciKTt0aGlzLnBhcmFtc1thXT1mdW5jdGlvbihhKXtyZXR1
cm4gYS5yZXBsYWNlKGMsYi5zb3VyY2V8fGIpfX0sZS5wcm90b3R5cGUub249ZS5wcm90b3R5cGUu
cm91dGU9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXM7IWMmJnR5cGVvZiBiPT0iZnVuY3Rpb24i
JiYoYz1iLGI9YSxhPSJvbiIpO2lmKEFycmF5LmlzQXJyYXkoYikpcmV0dXJuIGIuZm9yRWFjaChm
dW5jdGlvbihiKXtkLm9uKGEsYixjKX0pO2Iuc291cmNlJiYoYj1iLnNvdXJjZS5yZXBsYWNlKC9c
XFwvL2lnLCIvIikpO2lmKEFycmF5LmlzQXJyYXkoYSkpcmV0dXJuIGEuZm9yRWFjaChmdW5jdGlv
bihhKXtkLm9uKGEudG9Mb3dlckNhc2UoKSxiLGMpfSk7Yj1iLnNwbGl0KG5ldyBSZWdFeHAodGhp
cy5kZWxpbWl0ZXIpKSxiPWsoYix0aGlzLmRlbGltaXRlciksdGhpcy5pbnNlcnQoYSx0aGlzLnNj
b3BlLmNvbmNhdChiKSxjKX0sZS5wcm90b3R5cGUuZGlzcGF0Y2g9ZnVuY3Rpb24oYSxiLGMpe2Z1
bmN0aW9uIGgoKXtkLmxhc3Q9ZS5hZnRlcixkLmludm9rZShkLnJ1bmxpc3QoZSksZCxjKX12YXIg
ZD10aGlzLGU9dGhpcy50cmF2ZXJzZShhLGIsdGhpcy5yb3V0ZXMsIiIpLGY9dGhpcy5faW52b2tl
ZCxnO3RoaXMuX2ludm9rZWQ9ITA7aWYoIWV8fGUubGVuZ3RoPT09MCl7dGhpcy5sYXN0PVtdLHR5
cGVvZiB0aGlzLm5vdGZvdW5kPT0iZnVuY3Rpb24iJiZ0aGlzLmludm9rZShbdGhpcy5ub3Rmb3Vu
ZF0se21ldGhvZDphLHBhdGg6Yn0sYyk7cmV0dXJuITF9dGhpcy5yZWN1cnNlPT09ImZvcndhcmQi
JiYoZT1lLnJldmVyc2UoKSksZz10aGlzLmV2ZXJ5JiZ0aGlzLmV2ZXJ5LmFmdGVyP1t0aGlzLmV2
ZXJ5LmFmdGVyXS5jb25jYXQodGhpcy5sYXN0KTpbdGhpcy5sYXN0XTtpZihnJiZnLmxlbmd0aD4w
JiZmKXt0aGlzLmFzeW5jP3RoaXMuaW52b2tlKGcsdGhpcyxoKToodGhpcy5pbnZva2UoZyx0aGlz
KSxoKCkpO3JldHVybiEwfWgoKTtyZXR1cm4hMH0sZS5wcm90b3R5cGUuaW52b2tlPWZ1bmN0aW9u
KGEsYixjKXt2YXIgZD10aGlzO3RoaXMuYXN5bmM/aChhLGZ1bmN0aW9uIGUoYyxkKXtpZihBcnJh
eS5pc0FycmF5KGMpKXJldHVybiBoKGMsZSxkKTt0eXBlb2YgYz09ImZ1bmN0aW9uIiYmYy5hcHBs
eShiLGEuY2FwdHVyZXMuY29uY2F0KGQpKX0sZnVuY3Rpb24oKXtjJiZjLmFwcGx5KGIsYXJndW1l
bnRzKX0pOmYoYSxmdW5jdGlvbiBnKGMpe2lmKEFycmF5LmlzQXJyYXkoYykpcmV0dXJuIGYoYyxn
KTtpZih0eXBlb2YgYz09ImZ1bmN0aW9uIilyZXR1cm4gYy5hcHBseShiLGEuY2FwdHVyZXN8fFtd
KTt0eXBlb2YgYz09InN0cmluZyImJmQucmVzb3VyY2UmJmQucmVzb3VyY2VbY10uYXBwbHkoYixh
LmNhcHR1cmVzfHxbXSl9KX0sZS5wcm90b3R5cGUudHJhdmVyc2U9ZnVuY3Rpb24oYSxiLGMsZCxl
KXtmdW5jdGlvbiBsKGEpe2Z1bmN0aW9uIGMoYSl7Zm9yKHZhciBiPWEubGVuZ3RoLTE7Yj49MDti
LS0pQXJyYXkuaXNBcnJheShhW2JdKT8oYyhhW2JdKSxhW2JdLmxlbmd0aD09PTAmJmEuc3BsaWNl
KGIsMSkpOmUoYVtiXSl8fGEuc3BsaWNlKGIsMSl9ZnVuY3Rpb24gYihhKXt2YXIgYz1bXTtmb3Io
dmFyIGQ9MDtkPGEubGVuZ3RoO2QrKyljW2RdPUFycmF5LmlzQXJyYXkoYVtkXSk/YihhW2RdKTph
W2RdO3JldHVybiBjfWlmKCFlKXJldHVybiBhO3ZhciBkPWIoYSk7ZC5tYXRjaGVkPWEubWF0Y2hl
ZCxkLmNhcHR1cmVzPWEuY2FwdHVyZXMsZC5hZnRlcj1hLmFmdGVyLmZpbHRlcihlKSxjKGQpO3Jl
dHVybiBkfXZhciBmPVtdLGcsaCxpLGosaztpZihiPT09dGhpcy5kZWxpbWl0ZXImJmNbYV0pe2o9
W1tjLmJlZm9yZSxjW2FdXS5maWx0ZXIoQm9vbGVhbildLGouYWZ0ZXI9W2MuYWZ0ZXJdLmZpbHRl
cihCb29sZWFuKSxqLm1hdGNoZWQ9ITAsai5jYXB0dXJlcz1bXTtyZXR1cm4gbChqKX1mb3IodmFy
IG0gaW4gYylpZihjLmhhc093blByb3BlcnR5KG0pJiYoIXRoaXMuX21ldGhvZHNbbV18fHRoaXMu
X21ldGhvZHNbbV0mJnR5cGVvZiBjW21dPT0ib2JqZWN0IiYmIUFycmF5LmlzQXJyYXkoY1ttXSkp
KXtnPWg9ZCt0aGlzLmRlbGltaXRlcittLHRoaXMuc3RyaWN0fHwoaCs9IlsiK3RoaXMuZGVsaW1p
dGVyKyJdPyIpLGk9Yi5tYXRjaChuZXcgUmVnRXhwKCJeIitoKSk7aWYoIWkpY29udGludWU7aWYo
aVswXSYmaVswXT09YiYmY1ttXVthXSl7aj1bW2NbbV0uYmVmb3JlLGNbbV1bYV1dLmZpbHRlcihC
b29sZWFuKV0sai5hZnRlcj1bY1ttXS5hZnRlcl0uZmlsdGVyKEJvb2xlYW4pLGoubWF0Y2hlZD0h
MCxqLmNhcHR1cmVzPWkuc2xpY2UoMSksdGhpcy5yZWN1cnNlJiZjPT09dGhpcy5yb3V0ZXMmJihq
LnB1c2goW2MuYmVmb3JlLGMub25dLmZpbHRlcihCb29sZWFuKSksai5hZnRlcj1qLmFmdGVyLmNv
bmNhdChbYy5hZnRlcl0uZmlsdGVyKEJvb2xlYW4pKSk7cmV0dXJuIGwoail9aj10aGlzLnRyYXZl
cnNlKGEsYixjW21dLGcpO2lmKGoubWF0Y2hlZCl7ai5sZW5ndGg+MCYmKGY9Zi5jb25jYXQoaikp
LHRoaXMucmVjdXJzZSYmKGYucHVzaChbY1ttXS5iZWZvcmUsY1ttXS5vbl0uZmlsdGVyKEJvb2xl
YW4pKSxqLmFmdGVyPWouYWZ0ZXIuY29uY2F0KFtjW21dLmFmdGVyXS5maWx0ZXIoQm9vbGVhbikp
LGM9PT10aGlzLnJvdXRlcyYmKGYucHVzaChbYy5iZWZvcmUsYy5vbl0uZmlsdGVyKEJvb2xlYW4p
KSxqLmFmdGVyPWouYWZ0ZXIuY29uY2F0KFtjLmFmdGVyXS5maWx0ZXIoQm9vbGVhbikpKSksZi5t
YXRjaGVkPSEwLGYuY2FwdHVyZXM9ai5jYXB0dXJlcyxmLmFmdGVyPWouYWZ0ZXI7cmV0dXJuIGwo
Zil9fXJldHVybiExfSxlLnByb3RvdHlwZS5pbnNlcnQ9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGUs
ZixnLGgsaTtiPWIuZmlsdGVyKGZ1bmN0aW9uKGEpe3JldHVybiBhJiZhLmxlbmd0aD4wfSksZD1k
fHx0aGlzLnJvdXRlcyxpPWIuc2hpZnQoKSwvXDp8XCovLnRlc3QoaSkmJiEvXFxkfFxcdy8udGVz
dChpKSYmKGk9aihpLHRoaXMucGFyYW1zKSk7aWYoYi5sZW5ndGg+MCl7ZFtpXT1kW2ldfHx7fTty
ZXR1cm4gdGhpcy5pbnNlcnQoYSxiLGMsZFtpXSl9e2lmKCEhaXx8ISFiLmxlbmd0aHx8ZCE9PXRo
aXMucm91dGVzKXtmPXR5cGVvZiBkW2ldLGc9QXJyYXkuaXNBcnJheShkW2ldKTtpZihkW2ldJiYh
ZyYmZj09Im9iamVjdCIpe2U9dHlwZW9mIGRbaV1bYV07c3dpdGNoKGUpe2Nhc2UiZnVuY3Rpb24i
OmRbaV1bYV09W2RbaV1bYV0sY107cmV0dXJuO2Nhc2Uib2JqZWN0IjpkW2ldW2FdLnB1c2goYyk7
cmV0dXJuO2Nhc2UidW5kZWZpbmVkIjpkW2ldW2FdPWM7cmV0dXJufX1lbHNlIGlmKGY9PSJ1bmRl
ZmluZWQiKXtoPXt9LGhbYV09YyxkW2ldPWg7cmV0dXJufXRocm93IG5ldyBFcnJvcigiSW52YWxp
ZCByb3V0ZSBjb250ZXh0OiAiK2YpfWU9dHlwZW9mIGRbYV07c3dpdGNoKGUpe2Nhc2UiZnVuY3Rp
b24iOmRbYV09W2RbYV0sY107cmV0dXJuO2Nhc2Uib2JqZWN0IjpkW2FdLnB1c2goYyk7cmV0dXJu
O2Nhc2UidW5kZWZpbmVkIjpkW2FdPWM7cmV0dXJufX19LGUucHJvdG90eXBlLmV4dGVuZD1mdW5j
dGlvbihhKXtmdW5jdGlvbiBlKGEpe2IuX21ldGhvZHNbYV09ITAsYlthXT1mdW5jdGlvbigpe3Zh
ciBjPWFyZ3VtZW50cy5sZW5ndGg9PT0xP1thLCIiXTpbYV07Yi5vbi5hcHBseShiLGMuY29uY2F0
KEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cykpKX19dmFyIGI9dGhpcyxjPWEu
bGVuZ3RoLGQ7Zm9yKGQ9MDtkPGM7ZCsrKWUoYVtkXSl9LGUucHJvdG90eXBlLnJ1bmxpc3Q9ZnVu
Y3Rpb24oYSl7dmFyIGI9dGhpcy5ldmVyeSYmdGhpcy5ldmVyeS5iZWZvcmU/W3RoaXMuZXZlcnku
YmVmb3JlXS5jb25jYXQoZyhhKSk6ZyhhKTt0aGlzLmV2ZXJ5JiZ0aGlzLmV2ZXJ5Lm9uJiZiLnB1
c2godGhpcy5ldmVyeS5vbiksYi5jYXB0dXJlcz1hLmNhcHR1cmVzLGIuc291cmNlPWEuc291cmNl
O3JldHVybiBifSxlLnByb3RvdHlwZS5tb3VudD1mdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGQoYixk
KXt2YXIgZT1iLGY9Yi5zcGxpdChjLmRlbGltaXRlciksZz10eXBlb2YgYVtiXSxoPWZbMF09PT0i
Inx8IWMuX21ldGhvZHNbZlswXV0saT1oPyJvbiI6ZTtoJiYoZT1lLnNsaWNlKChlLm1hdGNoKG5l
dyBSZWdFeHAoYy5kZWxpbWl0ZXIpKXx8WyIiXSlbMF0ubGVuZ3RoKSxmLnNoaWZ0KCkpO2gmJmc9
PT0ib2JqZWN0IiYmIUFycmF5LmlzQXJyYXkoYVtiXSk/KGQ9ZC5jb25jYXQoZiksYy5tb3VudChh
W2JdLGQpKTooaCYmKGQ9ZC5jb25jYXQoZS5zcGxpdChjLmRlbGltaXRlcikpLGQ9ayhkLGMuZGVs
aW1pdGVyKSksYy5pbnNlcnQoaSxkLGFbYl0pKX1pZighIWEmJnR5cGVvZiBhPT0ib2JqZWN0IiYm
IUFycmF5LmlzQXJyYXkoYSkpe3ZhciBjPXRoaXM7Yj1ifHxbXSxBcnJheS5pc0FycmF5KGIpfHwo
Yj1iLnNwbGl0KGMuZGVsaW1pdGVyKSk7Zm9yKHZhciBlIGluIGEpYS5oYXNPd25Qcm9wZXJ0eShl
KSYmZChlLGIuc2xpY2UoMCkpfX19KSh0eXBlb2YgZXhwb3J0cz09Im9iamVjdCI/ZXhwb3J0czp3
aW5kb3cpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9sYWJzL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9yZWFjdC9ib3dlcl9jb21wb25lbnRzL2RpcmVjdG9yL2J1aWxkL2VuZGVyLmpzIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9sYWJzL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ib3dlcl9jb21wb25lbnRzL2RpcmVjdG9yL2J1aWxkL2Vu
ZGVyLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZTNlYmM0MWIwYmRlMDY0YmZk
MzM2M2ZkNWRkMGIzNDA2ZWZiOWVmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvbGFicy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QvYm93ZXJfY29tcG9uZW50cy9kaXJl
Y3Rvci9idWlsZC9lbmRlci5qcworKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotJC5lbmRl
cih7Ci0gIHJvdXRlcjogUm91dGVyCi19KTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvbGFicy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
cmVhY3QvYm93ZXJfY29tcG9uZW50cy9yZWFjdC9KU1hUcmFuc2Zvcm1lci5qcyBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvbGFicy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvcmVhY3QvYm93ZXJfY29tcG9uZW50cy9yZWFjdC9KU1hUcmFuc2Zvcm1lci5qcwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmU0ZDdiNTI2NTk2ODNlYTg0YWY1ODE2YmRm
ODg2NzYwZDVkN2ZkYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2xhYnMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L2Jvd2VyX2NvbXBvbmVudHMvcmVhY3QvSlNYVHJh
bnNmb3JtZXIuanMKKysrIC9kZXYvbnVsbApAQCAtMSwxMDE5NiArMCwwIEBACi0vKioKLSAqIEpT
WFRyYW5zZm9ybWVyIHYwLjQuMAotICovCi0oZnVuY3Rpb24oZSl7aWYoImZ1bmN0aW9uIj09dHlw
ZW9mIGJvb3RzdHJhcClib290c3RyYXAoImpzeHRyYW5zZm9ybWVyIixlKTtlbHNlIGlmKCJvYmpl
Y3QiPT10eXBlb2YgZXhwb3J0cyltb2R1bGUuZXhwb3J0cz1lKCk7ZWxzZSBpZigiZnVuY3Rpb24i
PT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kKWRlZmluZShlKTtlbHNlIGlmKCJ1bmRlZmluZWQi
IT10eXBlb2Ygc2VzKXtpZighc2VzLm9rKCkpcmV0dXJuO3Nlcy5tYWtlSlNYVHJhbnNmb3JtZXI9
ZX1lbHNlInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93LkpTWFRyYW5zZm9ybWVyPWUo
KTpnbG9iYWwuSlNYVHJhbnNmb3JtZXI9ZSgpfSkoZnVuY3Rpb24oKXt2YXIgZGVmaW5lLHNlcyxi
b290c3RyYXAsbW9kdWxlLGV4cG9ydHM7Ci1yZXR1cm4gKGZ1bmN0aW9uKGUsdCxuKXtmdW5jdGlv
biBpKG4scyl7aWYoIXRbbl0pe2lmKCFlW25dKXt2YXIgbz10eXBlb2YgcmVxdWlyZT09ImZ1bmN0
aW9uIiYmcmVxdWlyZTtpZighcyYmbylyZXR1cm4gbyhuLCEwKTtpZihyKXJldHVybiByKG4sITAp
O3Rocm93IG5ldyBFcnJvcigiQ2Fubm90IGZpbmQgbW9kdWxlICciK24rIiciKX12YXIgdT10W25d
PXtleHBvcnRzOnt9fTtlW25dWzBdLmNhbGwodS5leHBvcnRzLGZ1bmN0aW9uKHQpe3ZhciByPWVb
bl1bMV1bdF07cmV0dXJuIGkocj9yOnQpfSx1LHUuZXhwb3J0cyl9cmV0dXJuIHRbbl0uZXhwb3J0
c312YXIgcj10eXBlb2YgcmVxdWlyZT09ImZ1bmN0aW9uIiYmcmVxdWlyZTtmb3IodmFyIHM9MDtz
PG4ubGVuZ3RoO3MrKylpKG5bc10pO3JldHVybiBpfSkoezE6W2Z1bmN0aW9uKHJlcXVpcmUsbW9k
dWxlLGV4cG9ydHMpewotdmFyIEJhc2U2MiA9IChmdW5jdGlvbiAobXkpIHsKLSAgbXkuY2hhcnMg
PSBbIjAiLCAiMSIsICIyIiwgIjMiLCAiNCIsICI1IiwgIjYiLCAiNyIsICI4IiwgIjkiLCAiYSIs
ICJiIiwgImMiLCAiZCIsICJlIiwgImYiLCAiZyIsICJoIiwgImkiLCAiaiIsICJrIiwgImwiLCAi
bSIsICJuIiwgIm8iLCAicCIsICJxIiwgInIiLCAicyIsICJ0IiwgInUiLCAidiIsICJ3IiwgIngi
LCAieSIsICJ6IiwgIkEiLCAiQiIsICJDIiwgIkQiLCAiRSIsICJGIiwgIkciLCAiSCIsICJJIiwg
IkoiLCAiSyIsICJMIiwgIk0iLCAiTiIsICJPIiwgIlAiLCAiUSIsICJSIiwgIlMiLCAiVCIsICJV
IiwgIlYiLCAiVyIsICJYIiwgIlkiLCAiWiJdCi0KLSAgbXkuZW5jb2RlID0gZnVuY3Rpb24oaSl7
Ci0gICAgaWYgKGkgPT09IDApIHtyZXR1cm4gJzAnfQotICAgIHZhciBzID0gJycKLSAgICB3aGls
ZSAoaSA+IDApIHsKLSAgICAgIHMgPSB0aGlzLmNoYXJzW2kgJSA2Ml0gKyBzCi0gICAgICBpID0g
TWF0aC5mbG9vcihpLzYyKQotICAgIH0KLSAgICByZXR1cm4gcwotICB9OwotICBteS5kZWNvZGUg
PSBmdW5jdGlvbihhLGIsYyxkKXsKLSAgICBmb3IgKAotICAgICAgYiA9IGMgPSAoCi0gICAgICAg
IGEgPT09ICgvXFd8X3xeJC8udGVzdChhICs9ICIiKSB8fCBhKQotICAgICAgKSAtIDE7Ci0gICAg
ICBkID0gYS5jaGFyQ29kZUF0KGMrKyk7Ci0gICAgKQotICAgIGIgPSBiICogNjIgKyBkIC0gWywg
NDgsIDI5LCA4N11bZCA+PiA1XTsKLSAgICByZXR1cm4gYgotICB9OwotCi0gIHJldHVybiBteTsK
LX0oe30pKTsKLQotbW9kdWxlLmV4cG9ydHMgPSBCYXNlNjIKLX0se31dLDI6W2Z1bmN0aW9uKHJl
cXVpcmUsbW9kdWxlLGV4cG9ydHMpewotKGZ1bmN0aW9uKHByb2Nlc3Mpe2Z1bmN0aW9uIGZpbHRl
ciAoeHMsIGZuKSB7Ci0gICAgdmFyIHJlcyA9IFtdOwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
eHMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgaWYgKGZuKHhzW2ldLCBpLCB4cykpIHJlcy5wdXNo
KHhzW2ldKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlczsKLX0KLQotLy8gcmVzb2x2ZXMgLiBhbmQg
Li4gZWxlbWVudHMgaW4gYSBwYXRoIGFycmF5IHdpdGggZGlyZWN0b3J5IG5hbWVzIHRoZXJlCi0v
LyBtdXN0IGJlIG5vIHNsYXNoZXMsIGVtcHR5IGVsZW1lbnRzLCBvciBkZXZpY2UgbmFtZXMgKGM6
XCkgaW4gdGhlIGFycmF5Ci0vLyAoc28gYWxzbyBubyBsZWFkaW5nIGFuZCB0cmFpbGluZyBzbGFz
aGVzIC0gaXQgZG9lcyBub3QgZGlzdGluZ3Vpc2gKLS8vIHJlbGF0aXZlIGFuZCBhYnNvbHV0ZSBw
YXRocykKLWZ1bmN0aW9uIG5vcm1hbGl6ZUFycmF5KHBhcnRzLCBhbGxvd0Fib3ZlUm9vdCkgewot
ICAvLyBpZiB0aGUgcGF0aCB0cmllcyB0byBnbyBhYm92ZSB0aGUgcm9vdCwgYHVwYCBlbmRzIHVw
ID4gMAotICB2YXIgdXAgPSAwOwotICBmb3IgKHZhciBpID0gcGFydHMubGVuZ3RoOyBpID49IDA7
IGktLSkgewotICAgIHZhciBsYXN0ID0gcGFydHNbaV07Ci0gICAgaWYgKGxhc3QgPT0gJy4nKSB7
Ci0gICAgICBwYXJ0cy5zcGxpY2UoaSwgMSk7Ci0gICAgfSBlbHNlIGlmIChsYXN0ID09PSAnLi4n
KSB7Ci0gICAgICBwYXJ0cy5zcGxpY2UoaSwgMSk7Ci0gICAgICB1cCsrOwotICAgIH0gZWxzZSBp
ZiAodXApIHsKLSAgICAgIHBhcnRzLnNwbGljZShpLCAxKTsKLSAgICAgIHVwLS07Ci0gICAgfQot
ICB9Ci0KLSAgLy8gaWYgdGhlIHBhdGggaXMgYWxsb3dlZCB0byBnbyBhYm92ZSB0aGUgcm9vdCwg
cmVzdG9yZSBsZWFkaW5nIC4ucwotICBpZiAoYWxsb3dBYm92ZVJvb3QpIHsKLSAgICBmb3IgKDsg
dXAtLTsgdXApIHsKLSAgICAgIHBhcnRzLnVuc2hpZnQoJy4uJyk7Ci0gICAgfQotICB9Ci0KLSAg
cmV0dXJuIHBhcnRzOwotfQotCi0vLyBSZWdleCB0byBzcGxpdCBhIGZpbGVuYW1lIGludG8gWyos
IGRpciwgYmFzZW5hbWUsIGV4dF0KLS8vIHBvc2l4IHZlcnNpb24KLXZhciBzcGxpdFBhdGhSZSA9
IC9eKC4rXC8oPyEkKXxcLyk/KCg/Oi4rPyk/KFwuW14uXSopPykkLzsKLQotLy8gcGF0aC5yZXNv
bHZlKFtmcm9tIC4uLl0sIHRvKQotLy8gcG9zaXggdmVyc2lvbgotZXhwb3J0cy5yZXNvbHZlID0g
ZnVuY3Rpb24oKSB7Ci12YXIgcmVzb2x2ZWRQYXRoID0gJycsCi0gICAgcmVzb2x2ZWRBYnNvbHV0
ZSA9IGZhbHNlOwotCi1mb3IgKHZhciBpID0gYXJndW1lbnRzLmxlbmd0aDsgaSA+PSAtMSAmJiAh
cmVzb2x2ZWRBYnNvbHV0ZTsgaS0tKSB7Ci0gIHZhciBwYXRoID0gKGkgPj0gMCkKLSAgICAgID8g
YXJndW1lbnRzW2ldCi0gICAgICA6IHByb2Nlc3MuY3dkKCk7Ci0KLSAgLy8gU2tpcCBlbXB0eSBh
bmQgaW52YWxpZCBlbnRyaWVzCi0gIGlmICh0eXBlb2YgcGF0aCAhPT0gJ3N0cmluZycgfHwgIXBh
dGgpIHsKLSAgICBjb250aW51ZTsKLSAgfQotCi0gIHJlc29sdmVkUGF0aCA9IHBhdGggKyAnLycg
KyByZXNvbHZlZFBhdGg7Ci0gIHJlc29sdmVkQWJzb2x1dGUgPSBwYXRoLmNoYXJBdCgwKSA9PT0g
Jy8nOwotfQotCi0vLyBBdCB0aGlzIHBvaW50IHRoZSBwYXRoIHNob3VsZCBiZSByZXNvbHZlZCB0
byBhIGZ1bGwgYWJzb2x1dGUgcGF0aCwgYnV0Ci0vLyBoYW5kbGUgcmVsYXRpdmUgcGF0aHMgdG8g
YmUgc2FmZSAobWlnaHQgaGFwcGVuIHdoZW4gcHJvY2Vzcy5jd2QoKSBmYWlscykKLQotLy8gTm9y
bWFsaXplIHRoZSBwYXRoCi1yZXNvbHZlZFBhdGggPSBub3JtYWxpemVBcnJheShmaWx0ZXIocmVz
b2x2ZWRQYXRoLnNwbGl0KCcvJyksIGZ1bmN0aW9uKHApIHsKLSAgICByZXR1cm4gISFwOwotICB9
KSwgIXJlc29sdmVkQWJzb2x1dGUpLmpvaW4oJy8nKTsKLQotICByZXR1cm4gKChyZXNvbHZlZEFi
c29sdXRlID8gJy8nIDogJycpICsgcmVzb2x2ZWRQYXRoKSB8fCAnLic7Ci19OwotCi0vLyBwYXRo
Lm5vcm1hbGl6ZShwYXRoKQotLy8gcG9zaXggdmVyc2lvbgotZXhwb3J0cy5ub3JtYWxpemUgPSBm
dW5jdGlvbihwYXRoKSB7Ci12YXIgaXNBYnNvbHV0ZSA9IHBhdGguY2hhckF0KDApID09PSAnLycs
Ci0gICAgdHJhaWxpbmdTbGFzaCA9IHBhdGguc2xpY2UoLTEpID09PSAnLyc7Ci0KLS8vIE5vcm1h
bGl6ZSB0aGUgcGF0aAotcGF0aCA9IG5vcm1hbGl6ZUFycmF5KGZpbHRlcihwYXRoLnNwbGl0KCcv
JyksIGZ1bmN0aW9uKHApIHsKLSAgICByZXR1cm4gISFwOwotICB9KSwgIWlzQWJzb2x1dGUpLmpv
aW4oJy8nKTsKLQotICBpZiAoIXBhdGggJiYgIWlzQWJzb2x1dGUpIHsKLSAgICBwYXRoID0gJy4n
OwotICB9Ci0gIGlmIChwYXRoICYmIHRyYWlsaW5nU2xhc2gpIHsKLSAgICBwYXRoICs9ICcvJzsK
LSAgfQotICAKLSAgcmV0dXJuIChpc0Fic29sdXRlID8gJy8nIDogJycpICsgcGF0aDsKLX07Ci0K
LQotLy8gcG9zaXggdmVyc2lvbgotZXhwb3J0cy5qb2luID0gZnVuY3Rpb24oKSB7Ci0gIHZhciBw
YXRocyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCk7Ci0gIHJldHVy
biBleHBvcnRzLm5vcm1hbGl6ZShmaWx0ZXIocGF0aHMsIGZ1bmN0aW9uKHAsIGluZGV4KSB7Ci0g
ICAgcmV0dXJuIHAgJiYgdHlwZW9mIHAgPT09ICdzdHJpbmcnOwotICB9KS5qb2luKCcvJykpOwot
fTsKLQotCi1leHBvcnRzLmRpcm5hbWUgPSBmdW5jdGlvbihwYXRoKSB7Ci0gIHZhciBkaXIgPSBz
cGxpdFBhdGhSZS5leGVjKHBhdGgpWzFdIHx8ICcnOwotICB2YXIgaXNXaW5kb3dzID0gZmFsc2U7
Ci0gIGlmICghZGlyKSB7Ci0gICAgLy8gTm8gZGlybmFtZQotICAgIHJldHVybiAnLic7Ci0gIH0g
ZWxzZSBpZiAoZGlyLmxlbmd0aCA9PT0gMSB8fAotICAgICAgKGlzV2luZG93cyAmJiBkaXIubGVu
Z3RoIDw9IDMgJiYgZGlyLmNoYXJBdCgxKSA9PT0gJzonKSkgewotICAgIC8vIEl0IGlzIGp1c3Qg
YSBzbGFzaCBvciBhIGRyaXZlIGxldHRlciB3aXRoIGEgc2xhc2gKLSAgICByZXR1cm4gZGlyOwot
ICB9IGVsc2UgewotICAgIC8vIEl0IGlzIGEgZnVsbCBkaXJuYW1lLCBzdHJpcCB0cmFpbGluZyBz
bGFzaAotICAgIHJldHVybiBkaXIuc3Vic3RyaW5nKDAsIGRpci5sZW5ndGggLSAxKTsKLSAgfQot
fTsKLQotCi1leHBvcnRzLmJhc2VuYW1lID0gZnVuY3Rpb24ocGF0aCwgZXh0KSB7Ci0gIHZhciBm
ID0gc3BsaXRQYXRoUmUuZXhlYyhwYXRoKVsyXSB8fCAnJzsKLSAgLy8gVE9ETzogbWFrZSB0aGlz
IGNvbXBhcmlzb24gY2FzZS1pbnNlbnNpdGl2ZSBvbiB3aW5kb3dzPwotICBpZiAoZXh0ICYmIGYu
c3Vic3RyKC0xICogZXh0Lmxlbmd0aCkgPT09IGV4dCkgewotICAgIGYgPSBmLnN1YnN0cigwLCBm
Lmxlbmd0aCAtIGV4dC5sZW5ndGgpOwotICB9Ci0gIHJldHVybiBmOwotfTsKLQotCi1leHBvcnRz
LmV4dG5hbWUgPSBmdW5jdGlvbihwYXRoKSB7Ci0gIHJldHVybiBzcGxpdFBhdGhSZS5leGVjKHBh
dGgpWzNdIHx8ICcnOwotfTsKLQotZXhwb3J0cy5yZWxhdGl2ZSA9IGZ1bmN0aW9uKGZyb20sIHRv
KSB7Ci0gIGZyb20gPSBleHBvcnRzLnJlc29sdmUoZnJvbSkuc3Vic3RyKDEpOwotICB0byA9IGV4
cG9ydHMucmVzb2x2ZSh0bykuc3Vic3RyKDEpOwotCi0gIGZ1bmN0aW9uIHRyaW0oYXJyKSB7Ci0g
ICAgdmFyIHN0YXJ0ID0gMDsKLSAgICBmb3IgKDsgc3RhcnQgPCBhcnIubGVuZ3RoOyBzdGFydCsr
KSB7Ci0gICAgICBpZiAoYXJyW3N0YXJ0XSAhPT0gJycpIGJyZWFrOwotICAgIH0KLQotICAgIHZh
ciBlbmQgPSBhcnIubGVuZ3RoIC0gMTsKLSAgICBmb3IgKDsgZW5kID49IDA7IGVuZC0tKSB7Ci0g
ICAgICBpZiAoYXJyW2VuZF0gIT09ICcnKSBicmVhazsKLSAgICB9Ci0KLSAgICBpZiAoc3RhcnQg
PiBlbmQpIHJldHVybiBbXTsKLSAgICByZXR1cm4gYXJyLnNsaWNlKHN0YXJ0LCBlbmQgLSBzdGFy
dCArIDEpOwotICB9Ci0KLSAgdmFyIGZyb21QYXJ0cyA9IHRyaW0oZnJvbS5zcGxpdCgnLycpKTsK
LSAgdmFyIHRvUGFydHMgPSB0cmltKHRvLnNwbGl0KCcvJykpOwotCi0gIHZhciBsZW5ndGggPSBN
YXRoLm1pbihmcm9tUGFydHMubGVuZ3RoLCB0b1BhcnRzLmxlbmd0aCk7Ci0gIHZhciBzYW1lUGFy
dHNMZW5ndGggPSBsZW5ndGg7Ci0gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsK
LSAgICBpZiAoZnJvbVBhcnRzW2ldICE9PSB0b1BhcnRzW2ldKSB7Ci0gICAgICBzYW1lUGFydHNM
ZW5ndGggPSBpOwotICAgICAgYnJlYWs7Ci0gICAgfQotICB9Ci0KLSAgdmFyIG91dHB1dFBhcnRz
ID0gW107Ci0gIGZvciAodmFyIGkgPSBzYW1lUGFydHNMZW5ndGg7IGkgPCBmcm9tUGFydHMubGVu
Z3RoOyBpKyspIHsKLSAgICBvdXRwdXRQYXJ0cy5wdXNoKCcuLicpOwotICB9Ci0KLSAgb3V0cHV0
UGFydHMgPSBvdXRwdXRQYXJ0cy5jb25jYXQodG9QYXJ0cy5zbGljZShzYW1lUGFydHNMZW5ndGgp
KTsKLQotICByZXR1cm4gb3V0cHV0UGFydHMuam9pbignLycpOwotfTsKLQotfSkocmVxdWlyZSgi
X19icm93c2VyaWZ5X3Byb2Nlc3MiKSkKLX0seyJfX2Jyb3dzZXJpZnlfcHJvY2VzcyI6M31dLDM6
W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewotLy8gc2hpbSBmb3IgdXNpbmcgcHJv
Y2VzcyBpbiBicm93c2VyCi0KLXZhciBwcm9jZXNzID0gbW9kdWxlLmV4cG9ydHMgPSB7fTsKLQot
cHJvY2Vzcy5uZXh0VGljayA9IChmdW5jdGlvbiAoKSB7Ci0gICAgdmFyIGNhblNldEltbWVkaWF0
ZSA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnCi0gICAgJiYgd2luZG93LnNldEltbWVk
aWF0ZTsKLSAgICB2YXIgY2FuUG9zdCA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnCi0g
ICAgJiYgd2luZG93LnBvc3RNZXNzYWdlICYmIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyCi0gICAg
OwotCi0gICAgaWYgKGNhblNldEltbWVkaWF0ZSkgewotICAgICAgICByZXR1cm4gZnVuY3Rpb24g
KGYpIHsgcmV0dXJuIHdpbmRvdy5zZXRJbW1lZGlhdGUoZikgfTsKLSAgICB9Ci0KLSAgICBpZiAo
Y2FuUG9zdCkgewotICAgICAgICB2YXIgcXVldWUgPSBbXTsKLSAgICAgICAgd2luZG93LmFkZEV2
ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBmdW5jdGlvbiAoZXYpIHsKLSAgICAgICAgICAgIGlmIChl
di5zb3VyY2UgPT09IHdpbmRvdyAmJiBldi5kYXRhID09PSAncHJvY2Vzcy10aWNrJykgewotICAg
ICAgICAgICAgICAgIGV2LnN0b3BQcm9wYWdhdGlvbigpOwotICAgICAgICAgICAgICAgIGlmIChx
dWV1ZS5sZW5ndGggPiAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBmbiA9IHF1ZXVlLnNo
aWZ0KCk7Ci0gICAgICAgICAgICAgICAgICAgIGZuKCk7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgfQotICAgICAgICB9LCB0cnVlKTsKLQotICAgICAgICByZXR1cm4gZnVuY3Rpb24g
bmV4dFRpY2soZm4pIHsKLSAgICAgICAgICAgIHF1ZXVlLnB1c2goZm4pOwotICAgICAgICAgICAg
d2luZG93LnBvc3RNZXNzYWdlKCdwcm9jZXNzLXRpY2snLCAnKicpOwotICAgICAgICB9OwotICAg
IH0KLQotICAgIHJldHVybiBmdW5jdGlvbiBuZXh0VGljayhmbikgewotICAgICAgICBzZXRUaW1l
b3V0KGZuLCAwKTsKLSAgICB9OwotfSkoKTsKLQotcHJvY2Vzcy50aXRsZSA9ICdicm93c2VyJzsK
LXByb2Nlc3MuYnJvd3NlciA9IHRydWU7Ci1wcm9jZXNzLmVudiA9IHt9OwotcHJvY2Vzcy5hcmd2
ID0gW107Ci0KLXByb2Nlc3MuYmluZGluZyA9IGZ1bmN0aW9uIChuYW1lKSB7Ci0gICAgdGhyb3cg
bmV3IEVycm9yKCdwcm9jZXNzLmJpbmRpbmcgaXMgbm90IHN1cHBvcnRlZCcpOwotfQotCi0vLyBU
T0RPKHNodHlsbWFuKQotcHJvY2Vzcy5jd2QgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAnLycgfTsK
LXByb2Nlc3MuY2hkaXIgPSBmdW5jdGlvbiAoZGlyKSB7Ci0gICAgdGhyb3cgbmV3IEVycm9yKCdw
cm9jZXNzLmNoZGlyIGlzIG5vdCBzdXBwb3J0ZWQnKTsKLX07Ci0KLX0se31dLDQ6W2Z1bmN0aW9u
KHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewotKGZ1bmN0aW9uKCl7LyoKLSAgQ29weXJpZ2h0IChD
KSAyMDEzIFRoYWRkZWUgVHlsIDx0aGFkZGVlLnR5bEBnbWFpbC5jb20+Ci0gIENvcHlyaWdodCAo
QykgMjAxMiBBcml5YSBIaWRheWF0IDxhcml5YS5oaWRheWF0QGdtYWlsLmNvbT4KLSAgQ29weXJp
Z2h0IChDKSAyMDEyIE1hdGhpYXMgQnluZW5zIDxtYXRoaWFzQHFpd2kuYmU+Ci0gIENvcHlyaWdo
dCAoQykgMjAxMiBKb29zdC1XaW0gQm9la2VzdGVpam4gPGpvb3N0LXdpbUBib2VrZXN0ZWlqbi5u
bD4KLSAgQ29weXJpZ2h0IChDKSAyMDEyIEtyaXMgS293YWwgPGtyaXMua293YWxAY2l4YXIuY29t
PgotICBDb3B5cmlnaHQgKEMpIDIwMTIgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwu
Y29tPgotICBDb3B5cmlnaHQgKEMpIDIwMTIgQXJwYWQgQm9yc29zIDxhcnBhZC5ib3Jzb3NAZ29v
Z2xlbWFpbC5jb20+Ci0gIENvcHlyaWdodCAoQykgMjAxMSBBcml5YSBIaWRheWF0IDxhcml5YS5o
aWRheWF0QGdtYWlsLmNvbT4KLQotICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6Ci0K
LSAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLQotICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKLSAgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQotICBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQotICBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgPENPUFlSSUdIVCBIT0xERVI+IEJFIExJQUJMRSBGT1IgQU5ZCi0gIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCi0gIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0g
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotKi8KLQot
Lypqc2xpbnQgYml0d2lzZTp0cnVlIHBsdXNwbHVzOnRydWUgKi8KLS8qZ2xvYmFsIGVzcHJpbWE6
dHJ1ZSwgZGVmaW5lOnRydWUsIGV4cG9ydHM6dHJ1ZSwgd2luZG93OiB0cnVlLAotdGhyb3dFcnJv
cjogdHJ1ZSwgZ2VuZXJhdGVTdGF0ZW1lbnQ6IHRydWUsIHBlZWs6IHRydWUsCi1wYXJzZUFzc2ln
bm1lbnRFeHByZXNzaW9uOiB0cnVlLCBwYXJzZUJsb2NrOiB0cnVlLAotcGFyc2VDbGFzc0V4cHJl
c3Npb246IHRydWUsIHBhcnNlQ2xhc3NEZWNsYXJhdGlvbjogdHJ1ZSwgcGFyc2VFeHByZXNzaW9u
OiB0cnVlLAotcGFyc2VGb3JTdGF0ZW1lbnQ6IHRydWUsCi1wYXJzZUZ1bmN0aW9uRGVjbGFyYXRp
b246IHRydWUsIHBhcnNlRnVuY3Rpb25FeHByZXNzaW9uOiB0cnVlLAotcGFyc2VGdW5jdGlvblNv
dXJjZUVsZW1lbnRzOiB0cnVlLCBwYXJzZVZhcmlhYmxlSWRlbnRpZmllcjogdHJ1ZSwKLXBhcnNl
SW1wb3J0U3BlY2lmaWVyOiB0cnVlLAotcGFyc2VMZWZ0SGFuZFNpZGVFeHByZXNzaW9uOiB0cnVl
LCBwYXJzZVBhcmFtczogdHJ1ZSwgdmFsaWRhdGVQYXJhbTogdHJ1ZSwKLXBhcnNlU3ByZWFkT3JB
c3NpZ25tZW50RXhwcmVzc2lvbjogdHJ1ZSwKLXBhcnNlU3RhdGVtZW50OiB0cnVlLCBwYXJzZVNv
dXJjZUVsZW1lbnQ6IHRydWUsIHBhcnNlTW9kdWxlQmxvY2s6IHRydWUsIHBhcnNlQ29uY2lzZUJv
ZHk6IHRydWUsCi1hZHZhbmNlWEpTQ2hpbGQ6IHRydWUsIGlzWEpTSWRlbnRpZmllclN0YXJ0OiB0
cnVlLCBpc1hKU0lkZW50aWZpZXJQYXJ0OiB0cnVlLAotc2NhblhKU1N0cmluZ0xpdGVyYWw6IHRy
dWUsIHNjYW5YSlNJZGVudGlmaWVyOiB0cnVlLAotcGFyc2VYSlNBdHRyaWJ1dGVWYWx1ZTogdHJ1
ZSwgcGFyc2VYSlNDaGlsZDogdHJ1ZSwgcGFyc2VYSlNFbGVtZW50OiB0cnVlLCBwYXJzZVhKU0V4
cHJlc3Npb25Db250YWluZXI6IHRydWUsIHBhcnNlWEpTRW1wdHlFeHByZXNzaW9uOiB0cnVlLAot
cGFyc2VZaWVsZEV4cHJlc3Npb246IHRydWUKLSovCi0KLShmdW5jdGlvbiAocm9vdCwgZmFjdG9y
eSkgewotICAgICd1c2Ugc3RyaWN0JzsKLQotICAgIC8vIFVuaXZlcnNhbCBNb2R1bGUgRGVmaW5p
dGlvbiAoVU1EKSB0byBzdXBwb3J0IEFNRCwgQ29tbW9uSlMvTm9kZS5qcywKLSAgICAvLyBSaGlu
bywgYW5kIHBsYWluIGJyb3dzZXIgbG9hZGluZy4KLSAgICBpZiAodHlwZW9mIGRlZmluZSA9PT0g
J2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKSB7Ci0gICAgICAgIGRlZmluZShbJ2V4cG9ydHMnXSwg
ZmFjdG9yeSk7Ci0gICAgfSBlbHNlIGlmICh0eXBlb2YgZXhwb3J0cyAhPT0gJ3VuZGVmaW5lZCcp
IHsKLSAgICAgICAgZmFjdG9yeShleHBvcnRzKTsKLSAgICB9IGVsc2UgewotICAgICAgICBmYWN0
b3J5KChyb290LmVzcHJpbWEgPSB7fSkpOwotICAgIH0KLX0odGhpcywgZnVuY3Rpb24gKGV4cG9y
dHMpIHsKLSAgICAndXNlIHN0cmljdCc7Ci0KLSAgICB2YXIgVG9rZW4sCi0gICAgICAgIFRva2Vu
TmFtZSwKLSAgICAgICAgRm5FeHByVG9rZW5zLAotICAgICAgICBTeW50YXgsCi0gICAgICAgIFBy
b3BlcnR5S2luZCwKLSAgICAgICAgTWVzc2FnZXMsCi0gICAgICAgIFJlZ2V4LAotICAgICAgICBT
eW50YXhUcmVlRGVsZWdhdGUsCi0gICAgICAgIFhIVE1MRW50aXRpZXMsCi0gICAgICAgIENsYXNz
UHJvcGVydHlUeXBlLAotICAgICAgICBzb3VyY2UsCi0gICAgICAgIHN0cmljdCwKLSAgICAgICAg
aW5kZXgsCi0gICAgICAgIGxpbmVOdW1iZXIsCi0gICAgICAgIGxpbmVTdGFydCwKLSAgICAgICAg
bGVuZ3RoLAotICAgICAgICBkZWxlZ2F0ZSwKLSAgICAgICAgbG9va2FoZWFkLAotICAgICAgICBz
dGF0ZSwKLSAgICAgICAgZXh0cmE7Ci0KLSAgICBUb2tlbiA9IHsKLSAgICAgICAgQm9vbGVhbkxp
dGVyYWw6IDEsCi0gICAgICAgIEVPRjogMiwKLSAgICAgICAgSWRlbnRpZmllcjogMywKLSAgICAg
ICAgS2V5d29yZDogNCwKLSAgICAgICAgTnVsbExpdGVyYWw6IDUsCi0gICAgICAgIE51bWVyaWNM
aXRlcmFsOiA2LAotICAgICAgICBQdW5jdHVhdG9yOiA3LAotICAgICAgICBTdHJpbmdMaXRlcmFs
OiA4LAotICAgICAgICBSZWd1bGFyRXhwcmVzc2lvbjogOSwKLSAgICAgICAgVGVtcGxhdGU6IDEw
LAotICAgICAgICBYSlNJZGVudGlmaWVyOiAxMSwKLSAgICAgICAgWEpTVGV4dDogMTIKLSAgICB9
OwotCi0gICAgVG9rZW5OYW1lID0ge307Ci0gICAgVG9rZW5OYW1lW1Rva2VuLkJvb2xlYW5MaXRl
cmFsXSA9ICdCb29sZWFuJzsKLSAgICBUb2tlbk5hbWVbVG9rZW4uRU9GXSA9ICc8ZW5kPic7Ci0g
ICAgVG9rZW5OYW1lW1Rva2VuLklkZW50aWZpZXJdID0gJ0lkZW50aWZpZXInOwotICAgIFRva2Vu
TmFtZVtUb2tlbi5LZXl3b3JkXSA9ICdLZXl3b3JkJzsKLSAgICBUb2tlbk5hbWVbVG9rZW4uTnVs
bExpdGVyYWxdID0gJ051bGwnOwotICAgIFRva2VuTmFtZVtUb2tlbi5OdW1lcmljTGl0ZXJhbF0g
PSAnTnVtZXJpYyc7Ci0gICAgVG9rZW5OYW1lW1Rva2VuLlB1bmN0dWF0b3JdID0gJ1B1bmN0dWF0
b3InOwotICAgIFRva2VuTmFtZVtUb2tlbi5TdHJpbmdMaXRlcmFsXSA9ICdTdHJpbmcnOwotICAg
IFRva2VuTmFtZVtUb2tlbi5YSlNJZGVudGlmaWVyXSA9ICdYSlNJZGVudGlmaWVyJzsKLSAgICBU
b2tlbk5hbWVbVG9rZW4uWEpTVGV4dF0gPSAnWEpTVGV4dCc7Ci0gICAgVG9rZW5OYW1lW1Rva2Vu
LlJlZ3VsYXJFeHByZXNzaW9uXSA9ICdSZWd1bGFyRXhwcmVzc2lvbic7Ci0KLSAgICAvLyBBIGZ1
bmN0aW9uIGZvbGxvd2luZyBvbmUgb2YgdGhvc2UgdG9rZW5zIGlzIGFuIGV4cHJlc3Npb24uCi0g
ICAgRm5FeHByVG9rZW5zID0gWyIoIiwgInsiLCAiWyIsICJpbiIsICJ0eXBlb2YiLCAiaW5zdGFu
Y2VvZiIsICJuZXciLAotICAgICAgICAgICAgICAgICAgICAicmV0dXJuIiwgImNhc2UiLCAiZGVs
ZXRlIiwgInRocm93IiwgInZvaWQiLAotICAgICAgICAgICAgICAgICAgICAvLyBhc3NpZ25tZW50
IG9wZXJhdG9ycwotICAgICAgICAgICAgICAgICAgICAiPSIsICIrPSIsICItPSIsICIqPSIsICIv
PSIsICIlPSIsICI8PD0iLCAiPj49IiwgIj4+Pj0iLAotICAgICAgICAgICAgICAgICAgICAiJj0i
LCAifD0iLCAiXj0iLCAiLCIsCi0gICAgICAgICAgICAgICAgICAgIC8vIGJpbmFyeS91bmFyeSBv
cGVyYXRvcnMKLSAgICAgICAgICAgICAgICAgICAgIisiLCAiLSIsICIqIiwgIi8iLCAiJSIsICIr
KyIsICItLSIsICI8PCIsICI+PiIsICI+Pj4iLCAiJiIsCi0gICAgICAgICAgICAgICAgICAgICJ8
IiwgIl4iLCAiISIsICJ+IiwgIiYmIiwgInx8IiwgIj8iLCAiOiIsICI9PT0iLCAiPT0iLCAiPj0i
LAotICAgICAgICAgICAgICAgICAgICAiPD0iLCAiPCIsICI+IiwgIiE9IiwgIiE9PSJdOwotCi0g
ICAgU3ludGF4ID0gewotICAgICAgICBBcnJheUV4cHJlc3Npb246ICdBcnJheUV4cHJlc3Npb24n
LAotICAgICAgICBBcnJheVBhdHRlcm46ICdBcnJheVBhdHRlcm4nLAotICAgICAgICBBcnJvd0Z1
bmN0aW9uRXhwcmVzc2lvbjogJ0Fycm93RnVuY3Rpb25FeHByZXNzaW9uJywKLSAgICAgICAgQXNz
aWdubWVudEV4cHJlc3Npb246ICdBc3NpZ25tZW50RXhwcmVzc2lvbicsCi0gICAgICAgIEJpbmFy
eUV4cHJlc3Npb246ICdCaW5hcnlFeHByZXNzaW9uJywKLSAgICAgICAgQmxvY2tTdGF0ZW1lbnQ6
ICdCbG9ja1N0YXRlbWVudCcsCi0gICAgICAgIEJyZWFrU3RhdGVtZW50OiAnQnJlYWtTdGF0ZW1l
bnQnLAotICAgICAgICBDYWxsRXhwcmVzc2lvbjogJ0NhbGxFeHByZXNzaW9uJywKLSAgICAgICAg
Q2F0Y2hDbGF1c2U6ICdDYXRjaENsYXVzZScsCi0gICAgICAgIENsYXNzQm9keTogJ0NsYXNzQm9k
eScsCi0gICAgICAgIENsYXNzRGVjbGFyYXRpb246ICdDbGFzc0RlY2xhcmF0aW9uJywKLSAgICAg
ICAgQ2xhc3NFeHByZXNzaW9uOiAnQ2xhc3NFeHByZXNzaW9uJywKLSAgICAgICAgQ2xhc3NIZXJp
dGFnZTogJ0NsYXNzSGVyaXRhZ2UnLAotICAgICAgICBDb21wcmVoZW5zaW9uQmxvY2s6ICdDb21w
cmVoZW5zaW9uQmxvY2snLAotICAgICAgICBDb21wcmVoZW5zaW9uRXhwcmVzc2lvbjogJ0NvbXBy
ZWhlbnNpb25FeHByZXNzaW9uJywKLSAgICAgICAgQ29uZGl0aW9uYWxFeHByZXNzaW9uOiAnQ29u
ZGl0aW9uYWxFeHByZXNzaW9uJywKLSAgICAgICAgQ29udGludWVTdGF0ZW1lbnQ6ICdDb250aW51
ZVN0YXRlbWVudCcsCi0gICAgICAgIERlYnVnZ2VyU3RhdGVtZW50OiAnRGVidWdnZXJTdGF0ZW1l
bnQnLAotICAgICAgICBEb1doaWxlU3RhdGVtZW50OiAnRG9XaGlsZVN0YXRlbWVudCcsCi0gICAg
ICAgIEVtcHR5U3RhdGVtZW50OiAnRW1wdHlTdGF0ZW1lbnQnLAotICAgICAgICBFeHBvcnREZWNs
YXJhdGlvbjogJ0V4cG9ydERlY2xhcmF0aW9uJywKLSAgICAgICAgRXhwb3J0U3BlY2lmaWVyOiAn
RXhwb3J0U3BlY2lmaWVyJywKLSAgICAgICAgRXhwb3J0U3BlY2lmaWVyU2V0OiAnRXhwb3J0U3Bl
Y2lmaWVyU2V0JywKLSAgICAgICAgRXhwcmVzc2lvblN0YXRlbWVudDogJ0V4cHJlc3Npb25TdGF0
ZW1lbnQnLAotICAgICAgICBGb3JJblN0YXRlbWVudDogJ0ZvckluU3RhdGVtZW50JywKLSAgICAg
ICAgRm9yT2ZTdGF0ZW1lbnQ6ICdGb3JPZlN0YXRlbWVudCcsCi0gICAgICAgIEZvclN0YXRlbWVu
dDogJ0ZvclN0YXRlbWVudCcsCi0gICAgICAgIEZ1bmN0aW9uRGVjbGFyYXRpb246ICdGdW5jdGlv
bkRlY2xhcmF0aW9uJywKLSAgICAgICAgRnVuY3Rpb25FeHByZXNzaW9uOiAnRnVuY3Rpb25FeHBy
ZXNzaW9uJywKLSAgICAgICAgR2xvYjogJ0dsb2InLAotICAgICAgICBJZGVudGlmaWVyOiAnSWRl
bnRpZmllcicsCi0gICAgICAgIElmU3RhdGVtZW50OiAnSWZTdGF0ZW1lbnQnLAotICAgICAgICBJ
bXBvcnREZWNsYXJhdGlvbjogJ0ltcG9ydERlY2xhcmF0aW9uJywKLSAgICAgICAgSW1wb3J0U3Bl
Y2lmaWVyOiAnSW1wb3J0U3BlY2lmaWVyJywKLSAgICAgICAgTGFiZWxlZFN0YXRlbWVudDogJ0xh
YmVsZWRTdGF0ZW1lbnQnLAotICAgICAgICBMaXRlcmFsOiAnTGl0ZXJhbCcsCi0gICAgICAgIExv
Z2ljYWxFeHByZXNzaW9uOiAnTG9naWNhbEV4cHJlc3Npb24nLAotICAgICAgICBNZW1iZXJFeHBy
ZXNzaW9uOiAnTWVtYmVyRXhwcmVzc2lvbicsCi0gICAgICAgIE1ldGhvZERlZmluaXRpb246ICdN
ZXRob2REZWZpbml0aW9uJywKLSAgICAgICAgTW9kdWxlRGVjbGFyYXRpb246ICdNb2R1bGVEZWNs
YXJhdGlvbicsCi0gICAgICAgIE5ld0V4cHJlc3Npb246ICdOZXdFeHByZXNzaW9uJywKLSAgICAg
ICAgT2JqZWN0RXhwcmVzc2lvbjogJ09iamVjdEV4cHJlc3Npb24nLAotICAgICAgICBPYmplY3RQ
YXR0ZXJuOiAnT2JqZWN0UGF0dGVybicsCi0gICAgICAgIFBhdGg6ICAnUGF0aCcsCi0gICAgICAg
IFByb2dyYW06ICdQcm9ncmFtJywKLSAgICAgICAgUHJvcGVydHk6ICdQcm9wZXJ0eScsCi0gICAg
ICAgIFJldHVyblN0YXRlbWVudDogJ1JldHVyblN0YXRlbWVudCcsCi0gICAgICAgIFNlcXVlbmNl
RXhwcmVzc2lvbjogJ1NlcXVlbmNlRXhwcmVzc2lvbicsCi0gICAgICAgIFNwcmVhZEVsZW1lbnQ6
ICdTcHJlYWRFbGVtZW50JywKLSAgICAgICAgU3dpdGNoQ2FzZTogJ1N3aXRjaENhc2UnLAotICAg
ICAgICBTd2l0Y2hTdGF0ZW1lbnQ6ICdTd2l0Y2hTdGF0ZW1lbnQnLAotICAgICAgICBUYWdnZWRU
ZW1wbGF0ZUV4cHJlc3Npb246ICdUYWdnZWRUZW1wbGF0ZUV4cHJlc3Npb24nLAotICAgICAgICBU
ZW1wbGF0ZUVsZW1lbnQ6ICdUZW1wbGF0ZUVsZW1lbnQnLAotICAgICAgICBUZW1wbGF0ZUxpdGVy
YWw6ICdUZW1wbGF0ZUxpdGVyYWwnLAotICAgICAgICBUaGlzRXhwcmVzc2lvbjogJ1RoaXNFeHBy
ZXNzaW9uJywKLSAgICAgICAgVGhyb3dTdGF0ZW1lbnQ6ICdUaHJvd1N0YXRlbWVudCcsCi0gICAg
ICAgIFRyeVN0YXRlbWVudDogJ1RyeVN0YXRlbWVudCcsCi0gICAgICAgIFVuYXJ5RXhwcmVzc2lv
bjogJ1VuYXJ5RXhwcmVzc2lvbicsCi0gICAgICAgIFVwZGF0ZUV4cHJlc3Npb246ICdVcGRhdGVF
eHByZXNzaW9uJywKLSAgICAgICAgVmFyaWFibGVEZWNsYXJhdGlvbjogJ1ZhcmlhYmxlRGVjbGFy
YXRpb24nLAotICAgICAgICBWYXJpYWJsZURlY2xhcmF0b3I6ICdWYXJpYWJsZURlY2xhcmF0b3In
LAotICAgICAgICBXaGlsZVN0YXRlbWVudDogJ1doaWxlU3RhdGVtZW50JywKLSAgICAgICAgV2l0
aFN0YXRlbWVudDogJ1dpdGhTdGF0ZW1lbnQnLAotICAgICAgICBYSlNJZGVudGlmaWVyOiAnWEpT
SWRlbnRpZmllcicsCi0gICAgICAgIFhKU0VtcHR5RXhwcmVzc2lvbjogJ1hKU0VtcHR5RXhwcmVz
c2lvbicsCi0gICAgICAgIFhKU0V4cHJlc3Npb25Db250YWluZXI6ICdYSlNFeHByZXNzaW9uQ29u
dGFpbmVyJywKLSAgICAgICAgWEpTRWxlbWVudDogJ1hKU0VsZW1lbnQnLAotICAgICAgICBYSlND
bG9zaW5nRWxlbWVudDogJ1hKU0Nsb3NpbmdFbGVtZW50JywKLSAgICAgICAgWEpTT3BlbmluZ0Vs
ZW1lbnQ6ICdYSlNPcGVuaW5nRWxlbWVudCcsCi0gICAgICAgIFhKU0F0dHJpYnV0ZTogJ1hKU0F0
dHJpYnV0ZScsCi0gICAgICAgIFhKU1RleHQ6ICdYSlNUZXh0JywKLSAgICAgICAgWWllbGRFeHBy
ZXNzaW9uOiAnWWllbGRFeHByZXNzaW9uJwotICAgIH07Ci0KLSAgICBQcm9wZXJ0eUtpbmQgPSB7
Ci0gICAgICAgIERhdGE6IDEsCi0gICAgICAgIEdldDogMiwKLSAgICAgICAgU2V0OiA0Ci0gICAg
fTsKLQotICAgIENsYXNzUHJvcGVydHlUeXBlID0gewotICAgICAgICBzdGF0aWM6ICdzdGF0aWMn
LAotICAgICAgICBwcm90b3R5cGU6ICdwcm90b3R5cGUnCi0gICAgfTsKLQotICAgIC8vIEVycm9y
IG1lc3NhZ2VzIHNob3VsZCBiZSBpZGVudGljYWwgdG8gVjguCi0gICAgTWVzc2FnZXMgPSB7Ci0g
ICAgICAgIFVuZXhwZWN0ZWRUb2tlbjogICdVbmV4cGVjdGVkIHRva2VuICUwJywKLSAgICAgICAg
VW5leHBlY3RlZE51bWJlcjogICdVbmV4cGVjdGVkIG51bWJlcicsCi0gICAgICAgIFVuZXhwZWN0
ZWRTdHJpbmc6ICAnVW5leHBlY3RlZCBzdHJpbmcnLAotICAgICAgICBVbmV4cGVjdGVkSWRlbnRp
ZmllcjogICdVbmV4cGVjdGVkIGlkZW50aWZpZXInLAotICAgICAgICBVbmV4cGVjdGVkUmVzZXJ2
ZWQ6ICAnVW5leHBlY3RlZCByZXNlcnZlZCB3b3JkJywKLSAgICAgICAgVW5leHBlY3RlZFRlbXBs
YXRlOiAgJ1VuZXhwZWN0ZWQgcXVhc2kgJTAnLAotICAgICAgICBVbmV4cGVjdGVkRU9TOiAgJ1Vu
ZXhwZWN0ZWQgZW5kIG9mIGlucHV0JywKLSAgICAgICAgTmV3bGluZUFmdGVyVGhyb3c6ICAnSWxs
ZWdhbCBuZXdsaW5lIGFmdGVyIHRocm93JywKLSAgICAgICAgSW52YWxpZFJlZ0V4cDogJ0ludmFs
aWQgcmVndWxhciBleHByZXNzaW9uJywKLSAgICAgICAgVW50ZXJtaW5hdGVkUmVnRXhwOiAgJ0lu
dmFsaWQgcmVndWxhciBleHByZXNzaW9uOiBtaXNzaW5nIC8nLAotICAgICAgICBJbnZhbGlkTEhT
SW5Bc3NpZ25tZW50OiAgJ0ludmFsaWQgbGVmdC1oYW5kIHNpZGUgaW4gYXNzaWdubWVudCcsCi0g
ICAgICAgIEludmFsaWRMSFNJbkZvcm1hbHNMaXN0OiAgJ0ludmFsaWQgbGVmdC1oYW5kIHNpZGUg
aW4gZm9ybWFscyBsaXN0JywKLSAgICAgICAgSW52YWxpZExIU0luRm9ySW46ICAnSW52YWxpZCBs
ZWZ0LWhhbmQgc2lkZSBpbiBmb3ItaW4nLAotICAgICAgICBNdWx0aXBsZURlZmF1bHRzSW5Td2l0
Y2g6ICdNb3JlIHRoYW4gb25lIGRlZmF1bHQgY2xhdXNlIGluIHN3aXRjaCBzdGF0ZW1lbnQnLAot
ICAgICAgICBOb0NhdGNoT3JGaW5hbGx5OiAgJ01pc3NpbmcgY2F0Y2ggb3IgZmluYWxseSBhZnRl
ciB0cnknLAotICAgICAgICBVbmtub3duTGFiZWw6ICdVbmRlZmluZWQgbGFiZWwgXCclMFwnJywK
LSAgICAgICAgUmVkZWNsYXJhdGlvbjogJyUwIFwnJTFcJyBoYXMgYWxyZWFkeSBiZWVuIGRlY2xh
cmVkJywKLSAgICAgICAgSWxsZWdhbENvbnRpbnVlOiAnSWxsZWdhbCBjb250aW51ZSBzdGF0ZW1l
bnQnLAotICAgICAgICBJbGxlZ2FsQnJlYWs6ICdJbGxlZ2FsIGJyZWFrIHN0YXRlbWVudCcsCi0g
ICAgICAgIElsbGVnYWxEdXBsaWNhdGVDbGFzc1Byb3BlcnR5OiAnSWxsZWdhbCBkdXBsaWNhdGUg
cHJvcGVydHkgaW4gY2xhc3MgZGVmaW5pdGlvbicsCi0gICAgICAgIElsbGVnYWxSZXR1cm46ICdJ
bGxlZ2FsIHJldHVybiBzdGF0ZW1lbnQnLAotICAgICAgICBJbGxlZ2FsWWllbGQ6ICdJbGxlZ2Fs
IHlpZWxkIGV4cHJlc3Npb24nLAotICAgICAgICBJbGxlZ2FsU3ByZWFkOiAnSWxsZWdhbCBzcHJl
YWQgZWxlbWVudCcsCi0gICAgICAgIFN0cmljdE1vZGVXaXRoOiAgJ1N0cmljdCBtb2RlIGNvZGUg
bWF5IG5vdCBpbmNsdWRlIGEgd2l0aCBzdGF0ZW1lbnQnLAotICAgICAgICBTdHJpY3RDYXRjaFZh
cmlhYmxlOiAgJ0NhdGNoIHZhcmlhYmxlIG1heSBub3QgYmUgZXZhbCBvciBhcmd1bWVudHMgaW4g
c3RyaWN0IG1vZGUnLAotICAgICAgICBTdHJpY3RWYXJOYW1lOiAgJ1ZhcmlhYmxlIG5hbWUgbWF5
IG5vdCBiZSBldmFsIG9yIGFyZ3VtZW50cyBpbiBzdHJpY3QgbW9kZScsCi0gICAgICAgIFN0cmlj
dFBhcmFtTmFtZTogICdQYXJhbWV0ZXIgbmFtZSBldmFsIG9yIGFyZ3VtZW50cyBpcyBub3QgYWxs
b3dlZCBpbiBzdHJpY3QgbW9kZScsCi0gICAgICAgIFN0cmljdFBhcmFtRHVwZTogJ1N0cmljdCBt
b2RlIGZ1bmN0aW9uIG1heSBub3QgaGF2ZSBkdXBsaWNhdGUgcGFyYW1ldGVyIG5hbWVzJywKLSAg
ICAgICAgUGFyYW1ldGVyQWZ0ZXJSZXN0UGFyYW1ldGVyOiAnUmVzdCBwYXJhbWV0ZXIgbXVzdCBi
ZSBmaW5hbCBwYXJhbWV0ZXIgb2YgYW4gYXJndW1lbnQgbGlzdCcsCi0gICAgICAgIEVsZW1lbnRB
ZnRlclNwcmVhZEVsZW1lbnQ6ICdTcHJlYWQgbXVzdCBiZSB0aGUgZmluYWwgZWxlbWVudCBvZiBh
biBlbGVtZW50IGxpc3QnLAotICAgICAgICBPYmplY3RQYXR0ZXJuQXNSZXN0UGFyYW1ldGVyOiAn
SW52YWxpZCByZXN0IHBhcmFtZXRlcicsCi0gICAgICAgIE9iamVjdFBhdHRlcm5Bc1NwcmVhZDog
J0ludmFsaWQgc3ByZWFkIGFyZ3VtZW50JywKLSAgICAgICAgU3RyaWN0RnVuY3Rpb25OYW1lOiAg
J0Z1bmN0aW9uIG5hbWUgbWF5IG5vdCBiZSBldmFsIG9yIGFyZ3VtZW50cyBpbiBzdHJpY3QgbW9k
ZScsCi0gICAgICAgIFN0cmljdE9jdGFsTGl0ZXJhbDogICdPY3RhbCBsaXRlcmFscyBhcmUgbm90
IGFsbG93ZWQgaW4gc3RyaWN0IG1vZGUuJywKLSAgICAgICAgU3RyaWN0RGVsZXRlOiAgJ0RlbGV0
ZSBvZiBhbiB1bnF1YWxpZmllZCBpZGVudGlmaWVyIGluIHN0cmljdCBtb2RlLicsCi0gICAgICAg
IFN0cmljdER1cGxpY2F0ZVByb3BlcnR5OiAgJ0R1cGxpY2F0ZSBkYXRhIHByb3BlcnR5IGluIG9i
amVjdCBsaXRlcmFsIG5vdCBhbGxvd2VkIGluIHN0cmljdCBtb2RlJywKLSAgICAgICAgQWNjZXNz
b3JEYXRhUHJvcGVydHk6ICAnT2JqZWN0IGxpdGVyYWwgbWF5IG5vdCBoYXZlIGRhdGEgYW5kIGFj
Y2Vzc29yIHByb3BlcnR5IHdpdGggdGhlIHNhbWUgbmFtZScsCi0gICAgICAgIEFjY2Vzc29yR2V0
U2V0OiAgJ09iamVjdCBsaXRlcmFsIG1heSBub3QgaGF2ZSBtdWx0aXBsZSBnZXQvc2V0IGFjY2Vz
c29ycyB3aXRoIHRoZSBzYW1lIG5hbWUnLAotICAgICAgICBTdHJpY3RMSFNBc3NpZ25tZW50OiAg
J0Fzc2lnbm1lbnQgdG8gZXZhbCBvciBhcmd1bWVudHMgaXMgbm90IGFsbG93ZWQgaW4gc3RyaWN0
IG1vZGUnLAotICAgICAgICBTdHJpY3RMSFNQb3N0Zml4OiAgJ1Bvc3RmaXggaW5jcmVtZW50L2Rl
Y3JlbWVudCBtYXkgbm90IGhhdmUgZXZhbCBvciBhcmd1bWVudHMgb3BlcmFuZCBpbiBzdHJpY3Qg
bW9kZScsCi0gICAgICAgIFN0cmljdExIU1ByZWZpeDogICdQcmVmaXggaW5jcmVtZW50L2RlY3Jl
bWVudCBtYXkgbm90IGhhdmUgZXZhbCBvciBhcmd1bWVudHMgb3BlcmFuZCBpbiBzdHJpY3QgbW9k
ZScsCi0gICAgICAgIFN0cmljdFJlc2VydmVkV29yZDogICdVc2Ugb2YgZnV0dXJlIHJlc2VydmVk
IHdvcmQgaW4gc3RyaWN0IG1vZGUnLAotICAgICAgICBOb0Zyb21BZnRlckltcG9ydDogJ01pc3Np
bmcgZnJvbSBhZnRlciBpbXBvcnQnLAotICAgICAgICBOb1lpZWxkSW5HZW5lcmF0b3I6ICdNaXNz
aW5nIHlpZWxkIGluIGdlbmVyYXRvcicsCi0gICAgICAgIE5vVW5pbnRpYWxpemVkQ29uc3Q6ICdD
b25zdCBtdXN0IGJlIGluaXRpYWxpemVkJywKLSAgICAgICAgQ29tcHJlaGVuc2lvblJlcXVpcmVz
QmxvY2s6ICdDb21wcmVoZW5zaW9uIG11c3QgaGF2ZSBhdCBsZWFzdCBvbmUgYmxvY2snLAotICAg
ICAgICBDb21wcmVoZW5zaW9uRXJyb3I6ICAnQ29tcHJlaGVuc2lvbiBFcnJvcicsCi0gICAgICAg
IEVhY2hOb3RBbGxvd2VkOiAgJ0VhY2ggaXMgbm90IHN1cHBvcnRlZCcsCi0gICAgICAgIEludmFs
aWRYSlNUYWdOYW1lOiAnWEpTIHRhZyBuYW1lIGNhbiBub3QgYmUgZW1wdHknLAotICAgICAgICBJ
bnZhbGlkWEpTQXR0cmlidXRlVmFsdWU6ICdYSlMgdmFsdWUgc2hvdWxkIGJlIGVpdGhlciBhbiBl
eHByZXNzaW9uIG9yIGEgcXVvdGVkIFhKUyB0ZXh0JywKLSAgICAgICAgRXhwZWN0ZWRYSlNDbG9z
aW5nVGFnOiAnRXhwZWN0ZWQgY29ycmVzcG9uZGluZyBYSlMgY2xvc2luZyB0YWcgZm9yICUwJwot
ICAgIH07Ci0KLSAgICAvLyBTZWUgYWxzbyB0b29scy9nZW5lcmF0ZS11bmljb2RlLXJlZ2V4LnB5
LgotICAgIFJlZ2V4ID0gewotICAgICAgICBOb25Bc2NpaUlkZW50aWZpZXJTdGFydDogbmV3IFJl
Z0V4cCgnW1x4YWFceGI1XHhiYVx4YzAtXHhkNlx4ZDgtXHhmNlx4ZjgtXHUwMmMxXHUwMmM2LVx1
MDJkMVx1MDJlMC1cdTAyZTRcdTAyZWNcdTAyZWVcdTAzNzAtXHUwMzc0XHUwMzc2XHUwMzc3XHUw
MzdhLVx1MDM3ZFx1MDM4Nlx1MDM4OC1cdTAzOGFcdTAzOGNcdTAzOGUtXHUwM2ExXHUwM2EzLVx1
MDNmNVx1MDNmNy1cdTA0ODFcdTA0OGEtXHUwNTI3XHUwNTMxLVx1MDU1Nlx1MDU1OVx1MDU2MS1c
dTA1ODdcdTA1ZDAtXHUwNWVhXHUwNWYwLVx1MDVmMlx1MDYyMC1cdTA2NGFcdTA2NmVcdTA2NmZc
dTA2NzEtXHUwNmQzXHUwNmQ1XHUwNmU1XHUwNmU2XHUwNmVlXHUwNmVmXHUwNmZhLVx1MDZmY1x1
MDZmZlx1MDcxMFx1MDcxMi1cdTA3MmZcdTA3NGQtXHUwN2E1XHUwN2IxXHUwN2NhLVx1MDdlYVx1
MDdmNFx1MDdmNVx1MDdmYVx1MDgwMC1cdTA4MTVcdTA4MWFcdTA4MjRcdTA4MjhcdTA4NDAtXHUw
ODU4XHUwOGEwXHUwOGEyLVx1MDhhY1x1MDkwNC1cdTA5MzlcdTA5M2RcdTA5NTBcdTA5NTgtXHUw
OTYxXHUwOTcxLVx1MDk3N1x1MDk3OS1cdTA5N2ZcdTA5ODUtXHUwOThjXHUwOThmXHUwOTkwXHUw
OTkzLVx1MDlhOFx1MDlhYS1cdTA5YjBcdTA5YjJcdTA5YjYtXHUwOWI5XHUwOWJkXHUwOWNlXHUw
OWRjXHUwOWRkXHUwOWRmLVx1MDllMVx1MDlmMFx1MDlmMVx1MGEwNS1cdTBhMGFcdTBhMGZcdTBh
MTBcdTBhMTMtXHUwYTI4XHUwYTJhLVx1MGEzMFx1MGEzMlx1MGEzM1x1MGEzNVx1MGEzNlx1MGEz
OFx1MGEzOVx1MGE1OS1cdTBhNWNcdTBhNWVcdTBhNzItXHUwYTc0XHUwYTg1LVx1MGE4ZFx1MGE4
Zi1cdTBhOTFcdTBhOTMtXHUwYWE4XHUwYWFhLVx1MGFiMFx1MGFiMlx1MGFiM1x1MGFiNS1cdTBh
YjlcdTBhYmRcdTBhZDBcdTBhZTBcdTBhZTFcdTBiMDUtXHUwYjBjXHUwYjBmXHUwYjEwXHUwYjEz
LVx1MGIyOFx1MGIyYS1cdTBiMzBcdTBiMzJcdTBiMzNcdTBiMzUtXHUwYjM5XHUwYjNkXHUwYjVj
XHUwYjVkXHUwYjVmLVx1MGI2MVx1MGI3MVx1MGI4M1x1MGI4NS1cdTBiOGFcdTBiOGUtXHUwYjkw
XHUwYjkyLVx1MGI5NVx1MGI5OVx1MGI5YVx1MGI5Y1x1MGI5ZVx1MGI5Zlx1MGJhM1x1MGJhNFx1
MGJhOC1cdTBiYWFcdTBiYWUtXHUwYmI5XHUwYmQwXHUwYzA1LVx1MGMwY1x1MGMwZS1cdTBjMTBc
dTBjMTItXHUwYzI4XHUwYzJhLVx1MGMzM1x1MGMzNS1cdTBjMzlcdTBjM2RcdTBjNThcdTBjNTlc
dTBjNjBcdTBjNjFcdTBjODUtXHUwYzhjXHUwYzhlLVx1MGM5MFx1MGM5Mi1cdTBjYThcdTBjYWEt
XHUwY2IzXHUwY2I1LVx1MGNiOVx1MGNiZFx1MGNkZVx1MGNlMFx1MGNlMVx1MGNmMVx1MGNmMlx1
MGQwNS1cdTBkMGNcdTBkMGUtXHUwZDEwXHUwZDEyLVx1MGQzYVx1MGQzZFx1MGQ0ZVx1MGQ2MFx1
MGQ2MVx1MGQ3YS1cdTBkN2ZcdTBkODUtXHUwZDk2XHUwZDlhLVx1MGRiMVx1MGRiMy1cdTBkYmJc
dTBkYmRcdTBkYzAtXHUwZGM2XHUwZTAxLVx1MGUzMFx1MGUzMlx1MGUzM1x1MGU0MC1cdTBlNDZc
dTBlODFcdTBlODJcdTBlODRcdTBlODdcdTBlODhcdTBlOGFcdTBlOGRcdTBlOTQtXHUwZTk3XHUw
ZTk5LVx1MGU5Zlx1MGVhMS1cdTBlYTNcdTBlYTVcdTBlYTdcdTBlYWFcdTBlYWJcdTBlYWQtXHUw
ZWIwXHUwZWIyXHUwZWIzXHUwZWJkXHUwZWMwLVx1MGVjNFx1MGVjNlx1MGVkYy1cdTBlZGZcdTBm
MDBcdTBmNDAtXHUwZjQ3XHUwZjQ5LVx1MGY2Y1x1MGY4OC1cdTBmOGNcdTEwMDAtXHUxMDJhXHUx
MDNmXHUxMDUwLVx1MTA1NVx1MTA1YS1cdTEwNWRcdTEwNjFcdTEwNjVcdTEwNjZcdTEwNmUtXHUx
MDcwXHUxMDc1LVx1MTA4MVx1MTA4ZVx1MTBhMC1cdTEwYzVcdTEwYzdcdTEwY2RcdTEwZDAtXHUx
MGZhXHUxMGZjLVx1MTI0OFx1MTI0YS1cdTEyNGRcdTEyNTAtXHUxMjU2XHUxMjU4XHUxMjVhLVx1
MTI1ZFx1MTI2MC1cdTEyODhcdTEyOGEtXHUxMjhkXHUxMjkwLVx1MTJiMFx1MTJiMi1cdTEyYjVc
dTEyYjgtXHUxMmJlXHUxMmMwXHUxMmMyLVx1MTJjNVx1MTJjOC1cdTEyZDZcdTEyZDgtXHUxMzEw
XHUxMzEyLVx1MTMxNVx1MTMxOC1cdTEzNWFcdTEzODAtXHUxMzhmXHUxM2EwLVx1MTNmNFx1MTQw
MS1cdTE2NmNcdTE2NmYtXHUxNjdmXHUxNjgxLVx1MTY5YVx1MTZhMC1cdTE2ZWFcdTE2ZWUtXHUx
NmYwXHUxNzAwLVx1MTcwY1x1MTcwZS1cdTE3MTFcdTE3MjAtXHUxNzMxXHUxNzQwLVx1MTc1MVx1
MTc2MC1cdTE3NmNcdTE3NmUtXHUxNzcwXHUxNzgwLVx1MTdiM1x1MTdkN1x1MTdkY1x1MTgyMC1c
dTE4NzdcdTE4ODAtXHUxOGE4XHUxOGFhXHUxOGIwLVx1MThmNVx1MTkwMC1cdTE5MWNcdTE5NTAt
XHUxOTZkXHUxOTcwLVx1MTk3NFx1MTk4MC1cdTE5YWJcdTE5YzEtXHUxOWM3XHUxYTAwLVx1MWEx
Nlx1MWEyMC1cdTFhNTRcdTFhYTdcdTFiMDUtXHUxYjMzXHUxYjQ1LVx1MWI0Ylx1MWI4My1cdTFi
YTBcdTFiYWVcdTFiYWZcdTFiYmEtXHUxYmU1XHUxYzAwLVx1MWMyM1x1MWM0ZC1cdTFjNGZcdTFj
NWEtXHUxYzdkXHUxY2U5LVx1MWNlY1x1MWNlZS1cdTFjZjFcdTFjZjVcdTFjZjZcdTFkMDAtXHUx
ZGJmXHUxZTAwLVx1MWYxNVx1MWYxOC1cdTFmMWRcdTFmMjAtXHUxZjQ1XHUxZjQ4LVx1MWY0ZFx1
MWY1MC1cdTFmNTdcdTFmNTlcdTFmNWJcdTFmNWRcdTFmNWYtXHUxZjdkXHUxZjgwLVx1MWZiNFx1
MWZiNi1cdTFmYmNcdTFmYmVcdTFmYzItXHUxZmM0XHUxZmM2LVx1MWZjY1x1MWZkMC1cdTFmZDNc
dTFmZDYtXHUxZmRiXHUxZmUwLVx1MWZlY1x1MWZmMi1cdTFmZjRcdTFmZjYtXHUxZmZjXHUyMDcx
XHUyMDdmXHUyMDkwLVx1MjA5Y1x1MjEwMlx1MjEwN1x1MjEwYS1cdTIxMTNcdTIxMTVcdTIxMTkt
XHUyMTFkXHUyMTI0XHUyMTI2XHUyMTI4XHUyMTJhLVx1MjEyZFx1MjEyZi1cdTIxMzlcdTIxM2Mt
XHUyMTNmXHUyMTQ1LVx1MjE0OVx1MjE0ZVx1MjE2MC1cdTIxODhcdTJjMDAtXHUyYzJlXHUyYzMw
LVx1MmM1ZVx1MmM2MC1cdTJjZTRcdTJjZWItXHUyY2VlXHUyY2YyXHUyY2YzXHUyZDAwLVx1MmQy
NVx1MmQyN1x1MmQyZFx1MmQzMC1cdTJkNjdcdTJkNmZcdTJkODAtXHUyZDk2XHUyZGEwLVx1MmRh
Nlx1MmRhOC1cdTJkYWVcdTJkYjAtXHUyZGI2XHUyZGI4LVx1MmRiZVx1MmRjMC1cdTJkYzZcdTJk
YzgtXHUyZGNlXHUyZGQwLVx1MmRkNlx1MmRkOC1cdTJkZGVcdTJlMmZcdTMwMDUtXHUzMDA3XHUz
MDIxLVx1MzAyOVx1MzAzMS1cdTMwMzVcdTMwMzgtXHUzMDNjXHUzMDQxLVx1MzA5Nlx1MzA5ZC1c
dTMwOWZcdTMwYTEtXHUzMGZhXHUzMGZjLVx1MzBmZlx1MzEwNS1cdTMxMmRcdTMxMzEtXHUzMThl
XHUzMWEwLVx1MzFiYVx1MzFmMC1cdTMxZmZcdTM0MDAtXHU0ZGI1XHU0ZTAwLVx1OWZjY1x1YTAw
MC1cdWE0OGNcdWE0ZDAtXHVhNGZkXHVhNTAwLVx1YTYwY1x1YTYxMC1cdWE2MWZcdWE2MmFcdWE2
MmJcdWE2NDAtXHVhNjZlXHVhNjdmLVx1YTY5N1x1YTZhMC1cdWE2ZWZcdWE3MTctXHVhNzFmXHVh
NzIyLVx1YTc4OFx1YTc4Yi1cdWE3OGVcdWE3OTAtXHVhNzkzXHVhN2EwLVx1YTdhYVx1YTdmOC1c
dWE4MDFcdWE4MDMtXHVhODA1XHVhODA3LVx1YTgwYVx1YTgwYy1cdWE4MjJcdWE4NDAtXHVhODcz
XHVhODgyLVx1YThiM1x1YThmMi1cdWE4ZjdcdWE4ZmJcdWE5MGEtXHVhOTI1XHVhOTMwLVx1YTk0
Nlx1YTk2MC1cdWE5N2NcdWE5ODQtXHVhOWIyXHVhOWNmXHVhYTAwLVx1YWEyOFx1YWE0MC1cdWFh
NDJcdWFhNDQtXHVhYTRiXHVhYTYwLVx1YWE3Nlx1YWE3YVx1YWE4MC1cdWFhYWZcdWFhYjFcdWFh
YjVcdWFhYjZcdWFhYjktXHVhYWJkXHVhYWMwXHVhYWMyXHVhYWRiLVx1YWFkZFx1YWFlMC1cdWFh
ZWFcdWFhZjItXHVhYWY0XHVhYjAxLVx1YWIwNlx1YWIwOS1cdWFiMGVcdWFiMTEtXHVhYjE2XHVh
YjIwLVx1YWIyNlx1YWIyOC1cdWFiMmVcdWFiYzAtXHVhYmUyXHVhYzAwLVx1ZDdhM1x1ZDdiMC1c
dWQ3YzZcdWQ3Y2ItXHVkN2ZiXHVmOTAwLVx1ZmE2ZFx1ZmE3MC1cdWZhZDlcdWZiMDAtXHVmYjA2
XHVmYjEzLVx1ZmIxN1x1ZmIxZFx1ZmIxZi1cdWZiMjhcdWZiMmEtXHVmYjM2XHVmYjM4LVx1ZmIz
Y1x1ZmIzZVx1ZmI0MFx1ZmI0MVx1ZmI0M1x1ZmI0NFx1ZmI0Ni1cdWZiYjFcdWZiZDMtXHVmZDNk
XHVmZDUwLVx1ZmQ4Zlx1ZmQ5Mi1cdWZkYzdcdWZkZjAtXHVmZGZiXHVmZTcwLVx1ZmU3NFx1ZmU3
Ni1cdWZlZmNcdWZmMjEtXHVmZjNhXHVmZjQxLVx1ZmY1YVx1ZmY2Ni1cdWZmYmVcdWZmYzItXHVm
ZmM3XHVmZmNhLVx1ZmZjZlx1ZmZkMi1cdWZmZDdcdWZmZGEtXHVmZmRjXScpLAotICAgICAgICBO
b25Bc2NpaUlkZW50aWZpZXJQYXJ0OiBuZXcgUmVnRXhwKCdbXHhhYVx4YjVceGJhXHhjMC1ceGQ2
XHhkOC1ceGY2XHhmOC1cdTAyYzFcdTAyYzYtXHUwMmQxXHUwMmUwLVx1MDJlNFx1MDJlY1x1MDJl
ZVx1MDMwMC1cdTAzNzRcdTAzNzZcdTAzNzdcdTAzN2EtXHUwMzdkXHUwMzg2XHUwMzg4LVx1MDM4
YVx1MDM4Y1x1MDM4ZS1cdTAzYTFcdTAzYTMtXHUwM2Y1XHUwM2Y3LVx1MDQ4MVx1MDQ4My1cdTA0
ODdcdTA0OGEtXHUwNTI3XHUwNTMxLVx1MDU1Nlx1MDU1OVx1MDU2MS1cdTA1ODdcdTA1OTEtXHUw
NWJkXHUwNWJmXHUwNWMxXHUwNWMyXHUwNWM0XHUwNWM1XHUwNWM3XHUwNWQwLVx1MDVlYVx1MDVm
MC1cdTA1ZjJcdTA2MTAtXHUwNjFhXHUwNjIwLVx1MDY2OVx1MDY2ZS1cdTA2ZDNcdTA2ZDUtXHUw
NmRjXHUwNmRmLVx1MDZlOFx1MDZlYS1cdTA2ZmNcdTA2ZmZcdTA3MTAtXHUwNzRhXHUwNzRkLVx1
MDdiMVx1MDdjMC1cdTA3ZjVcdTA3ZmFcdTA4MDAtXHUwODJkXHUwODQwLVx1MDg1Ylx1MDhhMFx1
MDhhMi1cdTA4YWNcdTA4ZTQtXHUwOGZlXHUwOTAwLVx1MDk2M1x1MDk2Ni1cdTA5NmZcdTA5NzEt
XHUwOTc3XHUwOTc5LVx1MDk3Zlx1MDk4MS1cdTA5ODNcdTA5ODUtXHUwOThjXHUwOThmXHUwOTkw
XHUwOTkzLVx1MDlhOFx1MDlhYS1cdTA5YjBcdTA5YjJcdTA5YjYtXHUwOWI5XHUwOWJjLVx1MDlj
NFx1MDljN1x1MDljOFx1MDljYi1cdTA5Y2VcdTA5ZDdcdTA5ZGNcdTA5ZGRcdTA5ZGYtXHUwOWUz
XHUwOWU2LVx1MDlmMVx1MGEwMS1cdTBhMDNcdTBhMDUtXHUwYTBhXHUwYTBmXHUwYTEwXHUwYTEz
LVx1MGEyOFx1MGEyYS1cdTBhMzBcdTBhMzJcdTBhMzNcdTBhMzVcdTBhMzZcdTBhMzhcdTBhMzlc
dTBhM2NcdTBhM2UtXHUwYTQyXHUwYTQ3XHUwYTQ4XHUwYTRiLVx1MGE0ZFx1MGE1MVx1MGE1OS1c
dTBhNWNcdTBhNWVcdTBhNjYtXHUwYTc1XHUwYTgxLVx1MGE4M1x1MGE4NS1cdTBhOGRcdTBhOGYt
XHUwYTkxXHUwYTkzLVx1MGFhOFx1MGFhYS1cdTBhYjBcdTBhYjJcdTBhYjNcdTBhYjUtXHUwYWI5
XHUwYWJjLVx1MGFjNVx1MGFjNy1cdTBhYzlcdTBhY2ItXHUwYWNkXHUwYWQwXHUwYWUwLVx1MGFl
M1x1MGFlNi1cdTBhZWZcdTBiMDEtXHUwYjAzXHUwYjA1LVx1MGIwY1x1MGIwZlx1MGIxMFx1MGIx
My1cdTBiMjhcdTBiMmEtXHUwYjMwXHUwYjMyXHUwYjMzXHUwYjM1LVx1MGIzOVx1MGIzYy1cdTBi
NDRcdTBiNDdcdTBiNDhcdTBiNGItXHUwYjRkXHUwYjU2XHUwYjU3XHUwYjVjXHUwYjVkXHUwYjVm
LVx1MGI2M1x1MGI2Ni1cdTBiNmZcdTBiNzFcdTBiODJcdTBiODNcdTBiODUtXHUwYjhhXHUwYjhl
LVx1MGI5MFx1MGI5Mi1cdTBiOTVcdTBiOTlcdTBiOWFcdTBiOWNcdTBiOWVcdTBiOWZcdTBiYTNc
dTBiYTRcdTBiYTgtXHUwYmFhXHUwYmFlLVx1MGJiOVx1MGJiZS1cdTBiYzJcdTBiYzYtXHUwYmM4
XHUwYmNhLVx1MGJjZFx1MGJkMFx1MGJkN1x1MGJlNi1cdTBiZWZcdTBjMDEtXHUwYzAzXHUwYzA1
LVx1MGMwY1x1MGMwZS1cdTBjMTBcdTBjMTItXHUwYzI4XHUwYzJhLVx1MGMzM1x1MGMzNS1cdTBj
MzlcdTBjM2QtXHUwYzQ0XHUwYzQ2LVx1MGM0OFx1MGM0YS1cdTBjNGRcdTBjNTVcdTBjNTZcdTBj
NThcdTBjNTlcdTBjNjAtXHUwYzYzXHUwYzY2LVx1MGM2Zlx1MGM4Mlx1MGM4M1x1MGM4NS1cdTBj
OGNcdTBjOGUtXHUwYzkwXHUwYzkyLVx1MGNhOFx1MGNhYS1cdTBjYjNcdTBjYjUtXHUwY2I5XHUw
Y2JjLVx1MGNjNFx1MGNjNi1cdTBjYzhcdTBjY2EtXHUwY2NkXHUwY2Q1XHUwY2Q2XHUwY2RlXHUw
Y2UwLVx1MGNlM1x1MGNlNi1cdTBjZWZcdTBjZjFcdTBjZjJcdTBkMDJcdTBkMDNcdTBkMDUtXHUw
ZDBjXHUwZDBlLVx1MGQxMFx1MGQxMi1cdTBkM2FcdTBkM2QtXHUwZDQ0XHUwZDQ2LVx1MGQ0OFx1
MGQ0YS1cdTBkNGVcdTBkNTdcdTBkNjAtXHUwZDYzXHUwZDY2LVx1MGQ2Zlx1MGQ3YS1cdTBkN2Zc
dTBkODJcdTBkODNcdTBkODUtXHUwZDk2XHUwZDlhLVx1MGRiMVx1MGRiMy1cdTBkYmJcdTBkYmRc
dTBkYzAtXHUwZGM2XHUwZGNhXHUwZGNmLVx1MGRkNFx1MGRkNlx1MGRkOC1cdTBkZGZcdTBkZjJc
dTBkZjNcdTBlMDEtXHUwZTNhXHUwZTQwLVx1MGU0ZVx1MGU1MC1cdTBlNTlcdTBlODFcdTBlODJc
dTBlODRcdTBlODdcdTBlODhcdTBlOGFcdTBlOGRcdTBlOTQtXHUwZTk3XHUwZTk5LVx1MGU5Zlx1
MGVhMS1cdTBlYTNcdTBlYTVcdTBlYTdcdTBlYWFcdTBlYWJcdTBlYWQtXHUwZWI5XHUwZWJiLVx1
MGViZFx1MGVjMC1cdTBlYzRcdTBlYzZcdTBlYzgtXHUwZWNkXHUwZWQwLVx1MGVkOVx1MGVkYy1c
dTBlZGZcdTBmMDBcdTBmMThcdTBmMTlcdTBmMjAtXHUwZjI5XHUwZjM1XHUwZjM3XHUwZjM5XHUw
ZjNlLVx1MGY0N1x1MGY0OS1cdTBmNmNcdTBmNzEtXHUwZjg0XHUwZjg2LVx1MGY5N1x1MGY5OS1c
dTBmYmNcdTBmYzZcdTEwMDAtXHUxMDQ5XHUxMDUwLVx1MTA5ZFx1MTBhMC1cdTEwYzVcdTEwYzdc
dTEwY2RcdTEwZDAtXHUxMGZhXHUxMGZjLVx1MTI0OFx1MTI0YS1cdTEyNGRcdTEyNTAtXHUxMjU2
XHUxMjU4XHUxMjVhLVx1MTI1ZFx1MTI2MC1cdTEyODhcdTEyOGEtXHUxMjhkXHUxMjkwLVx1MTJi
MFx1MTJiMi1cdTEyYjVcdTEyYjgtXHUxMmJlXHUxMmMwXHUxMmMyLVx1MTJjNVx1MTJjOC1cdTEy
ZDZcdTEyZDgtXHUxMzEwXHUxMzEyLVx1MTMxNVx1MTMxOC1cdTEzNWFcdTEzNWQtXHUxMzVmXHUx
MzgwLVx1MTM4Zlx1MTNhMC1cdTEzZjRcdTE0MDEtXHUxNjZjXHUxNjZmLVx1MTY3Zlx1MTY4MS1c
dTE2OWFcdTE2YTAtXHUxNmVhXHUxNmVlLVx1MTZmMFx1MTcwMC1cdTE3MGNcdTE3MGUtXHUxNzE0
XHUxNzIwLVx1MTczNFx1MTc0MC1cdTE3NTNcdTE3NjAtXHUxNzZjXHUxNzZlLVx1MTc3MFx1MTc3
Mlx1MTc3M1x1MTc4MC1cdTE3ZDNcdTE3ZDdcdTE3ZGNcdTE3ZGRcdTE3ZTAtXHUxN2U5XHUxODBi
LVx1MTgwZFx1MTgxMC1cdTE4MTlcdTE4MjAtXHUxODc3XHUxODgwLVx1MThhYVx1MThiMC1cdTE4
ZjVcdTE5MDAtXHUxOTFjXHUxOTIwLVx1MTkyYlx1MTkzMC1cdTE5M2JcdTE5NDYtXHUxOTZkXHUx
OTcwLVx1MTk3NFx1MTk4MC1cdTE5YWJcdTE5YjAtXHUxOWM5XHUxOWQwLVx1MTlkOVx1MWEwMC1c
dTFhMWJcdTFhMjAtXHUxYTVlXHUxYTYwLVx1MWE3Y1x1MWE3Zi1cdTFhODlcdTFhOTAtXHUxYTk5
XHUxYWE3XHUxYjAwLVx1MWI0Ylx1MWI1MC1cdTFiNTlcdTFiNmItXHUxYjczXHUxYjgwLVx1MWJm
M1x1MWMwMC1cdTFjMzdcdTFjNDAtXHUxYzQ5XHUxYzRkLVx1MWM3ZFx1MWNkMC1cdTFjZDJcdTFj
ZDQtXHUxY2Y2XHUxZDAwLVx1MWRlNlx1MWRmYy1cdTFmMTVcdTFmMTgtXHUxZjFkXHUxZjIwLVx1
MWY0NVx1MWY0OC1cdTFmNGRcdTFmNTAtXHUxZjU3XHUxZjU5XHUxZjViXHUxZjVkXHUxZjVmLVx1
MWY3ZFx1MWY4MC1cdTFmYjRcdTFmYjYtXHUxZmJjXHUxZmJlXHUxZmMyLVx1MWZjNFx1MWZjNi1c
dTFmY2NcdTFmZDAtXHUxZmQzXHUxZmQ2LVx1MWZkYlx1MWZlMC1cdTFmZWNcdTFmZjItXHUxZmY0
XHUxZmY2LVx1MWZmY1x1MjAwY1x1MjAwZFx1MjAzZlx1MjA0MFx1MjA1NFx1MjA3MVx1MjA3Zlx1
MjA5MC1cdTIwOWNcdTIwZDAtXHUyMGRjXHUyMGUxXHUyMGU1LVx1MjBmMFx1MjEwMlx1MjEwN1x1
MjEwYS1cdTIxMTNcdTIxMTVcdTIxMTktXHUyMTFkXHUyMTI0XHUyMTI2XHUyMTI4XHUyMTJhLVx1
MjEyZFx1MjEyZi1cdTIxMzlcdTIxM2MtXHUyMTNmXHUyMTQ1LVx1MjE0OVx1MjE0ZVx1MjE2MC1c
dTIxODhcdTJjMDAtXHUyYzJlXHUyYzMwLVx1MmM1ZVx1MmM2MC1cdTJjZTRcdTJjZWItXHUyY2Yz
XHUyZDAwLVx1MmQyNVx1MmQyN1x1MmQyZFx1MmQzMC1cdTJkNjdcdTJkNmZcdTJkN2YtXHUyZDk2
XHUyZGEwLVx1MmRhNlx1MmRhOC1cdTJkYWVcdTJkYjAtXHUyZGI2XHUyZGI4LVx1MmRiZVx1MmRj
MC1cdTJkYzZcdTJkYzgtXHUyZGNlXHUyZGQwLVx1MmRkNlx1MmRkOC1cdTJkZGVcdTJkZTAtXHUy
ZGZmXHUyZTJmXHUzMDA1LVx1MzAwN1x1MzAyMS1cdTMwMmZcdTMwMzEtXHUzMDM1XHUzMDM4LVx1
MzAzY1x1MzA0MS1cdTMwOTZcdTMwOTlcdTMwOWFcdTMwOWQtXHUzMDlmXHUzMGExLVx1MzBmYVx1
MzBmYy1cdTMwZmZcdTMxMDUtXHUzMTJkXHUzMTMxLVx1MzE4ZVx1MzFhMC1cdTMxYmFcdTMxZjAt
XHUzMWZmXHUzNDAwLVx1NGRiNVx1NGUwMC1cdTlmY2NcdWEwMDAtXHVhNDhjXHVhNGQwLVx1YTRm
ZFx1YTUwMC1cdWE2MGNcdWE2MTAtXHVhNjJiXHVhNjQwLVx1YTY2Zlx1YTY3NC1cdWE2N2RcdWE2
N2YtXHVhNjk3XHVhNjlmLVx1YTZmMVx1YTcxNy1cdWE3MWZcdWE3MjItXHVhNzg4XHVhNzhiLVx1
YTc4ZVx1YTc5MC1cdWE3OTNcdWE3YTAtXHVhN2FhXHVhN2Y4LVx1YTgyN1x1YTg0MC1cdWE4NzNc
dWE4ODAtXHVhOGM0XHVhOGQwLVx1YThkOVx1YThlMC1cdWE4ZjdcdWE4ZmJcdWE5MDAtXHVhOTJk
XHVhOTMwLVx1YTk1M1x1YTk2MC1cdWE5N2NcdWE5ODAtXHVhOWMwXHVhOWNmLVx1YTlkOVx1YWEw
MC1cdWFhMzZcdWFhNDAtXHVhYTRkXHVhYTUwLVx1YWE1OVx1YWE2MC1cdWFhNzZcdWFhN2FcdWFh
N2JcdWFhODAtXHVhYWMyXHVhYWRiLVx1YWFkZFx1YWFlMC1cdWFhZWZcdWFhZjItXHVhYWY2XHVh
YjAxLVx1YWIwNlx1YWIwOS1cdWFiMGVcdWFiMTEtXHVhYjE2XHVhYjIwLVx1YWIyNlx1YWIyOC1c
dWFiMmVcdWFiYzAtXHVhYmVhXHVhYmVjXHVhYmVkXHVhYmYwLVx1YWJmOVx1YWMwMC1cdWQ3YTNc
dWQ3YjAtXHVkN2M2XHVkN2NiLVx1ZDdmYlx1ZjkwMC1cdWZhNmRcdWZhNzAtXHVmYWQ5XHVmYjAw
LVx1ZmIwNlx1ZmIxMy1cdWZiMTdcdWZiMWQtXHVmYjI4XHVmYjJhLVx1ZmIzNlx1ZmIzOC1cdWZi
M2NcdWZiM2VcdWZiNDBcdWZiNDFcdWZiNDNcdWZiNDRcdWZiNDYtXHVmYmIxXHVmYmQzLVx1ZmQz
ZFx1ZmQ1MC1cdWZkOGZcdWZkOTItXHVmZGM3XHVmZGYwLVx1ZmRmYlx1ZmUwMC1cdWZlMGZcdWZl
MjAtXHVmZTI2XHVmZTMzXHVmZTM0XHVmZTRkLVx1ZmU0Zlx1ZmU3MC1cdWZlNzRcdWZlNzYtXHVm
ZWZjXHVmZjEwLVx1ZmYxOVx1ZmYyMS1cdWZmM2FcdWZmM2ZcdWZmNDEtXHVmZjVhXHVmZjY2LVx1
ZmZiZVx1ZmZjMi1cdWZmYzdcdWZmY2EtXHVmZmNmXHVmZmQyLVx1ZmZkN1x1ZmZkYS1cdWZmZGNd
JykKLSAgICB9OwotCi0gICAgLy8gRW5zdXJlIHRoZSBjb25kaXRpb24gaXMgdHJ1ZSwgb3RoZXJ3
aXNlIHRocm93IGFuIGVycm9yLgotICAgIC8vIFRoaXMgaXMgb25seSB0byBoYXZlIGEgYmV0dGVy
IGNvbnRyYWN0IHNlbWFudGljLCBpLmUuIGFub3RoZXIgc2FmZXR5IG5ldAotICAgIC8vIHRvIGNh
dGNoIGEgbG9naWMgZXJyb3IuIFRoZSBjb25kaXRpb24gc2hhbGwgYmUgZnVsZmlsbGVkIGluIG5v
cm1hbCBjYXNlLgotICAgIC8vIERvIE5PVCB1c2UgdGhpcyB0byBlbmZvcmNlIGEgY2VydGFpbiBj
b25kaXRpb24gb24gYW55IHVzZXIgaW5wdXQuCi0KLSAgICBmdW5jdGlvbiBhc3NlcnQoY29uZGl0
aW9uLCBtZXNzYWdlKSB7Ci0gICAgICAgIGlmICghY29uZGl0aW9uKSB7Ci0gICAgICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoJ0FTU0VSVDogJyArIG1lc3NhZ2UpOwotICAgICAgICB9Ci0gICAgfQot
Ci0gICAgZnVuY3Rpb24gaXNEZWNpbWFsRGlnaXQoY2gpIHsKLSAgICAgICAgcmV0dXJuIChjaCA+
PSA0OCAmJiBjaCA8PSA1Nyk7ICAgLy8gMC4uOQotICAgIH0KLQotICAgIGZ1bmN0aW9uIGlzSGV4
RGlnaXQoY2gpIHsKLSAgICAgICAgcmV0dXJuICcwMTIzNDU2Nzg5YWJjZGVmQUJDREVGJy5pbmRl
eE9mKGNoKSA+PSAwOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGlzT2N0YWxEaWdpdChjaCkgewot
ICAgICAgICByZXR1cm4gJzAxMjM0NTY3Jy5pbmRleE9mKGNoKSA+PSAwOwotICAgIH0KLQotCi0g
ICAgLy8gNy4yIFdoaXRlIFNwYWNlCi0KLSAgICBmdW5jdGlvbiBpc1doaXRlU3BhY2UoY2gpIHsK
LSAgICAgICAgcmV0dXJuIChjaCA9PT0gMzIpIHx8ICAvLyBzcGFjZQotICAgICAgICAgICAgKGNo
ID09PSA5KSB8fCAgICAgIC8vIHRhYgotICAgICAgICAgICAgKGNoID09PSAweEIpIHx8Ci0gICAg
ICAgICAgICAoY2ggPT09IDB4QykgfHwKLSAgICAgICAgICAgIChjaCA9PT0gMHhBMCkgfHwKLSAg
ICAgICAgICAgIChjaCA+PSAweDE2ODAgJiYgJ1x1MTY4MFx1MTgwRVx1MjAwMFx1MjAwMVx1MjAw
Mlx1MjAwM1x1MjAwNFx1MjAwNVx1MjAwNlx1MjAwN1x1MjAwOFx1MjAwOVx1MjAwQVx1MjAyRlx1
MjA1Rlx1MzAwMFx1RkVGRicuaW5kZXhPZihTdHJpbmcuZnJvbUNoYXJDb2RlKGNoKSkgPiAwKTsK
LSAgICB9Ci0KLSAgICAvLyA3LjMgTGluZSBUZXJtaW5hdG9ycwotCi0gICAgZnVuY3Rpb24gaXNM
aW5lVGVybWluYXRvcihjaCkgewotICAgICAgICByZXR1cm4gKGNoID09PSAxMCkgfHwgKGNoID09
PSAxMykgfHwgKGNoID09PSAweDIwMjgpIHx8IChjaCA9PT0gMHgyMDI5KTsKLSAgICB9Ci0KLSAg
ICAvLyA3LjYgSWRlbnRpZmllciBOYW1lcyBhbmQgSWRlbnRpZmllcnMKLQotICAgIGZ1bmN0aW9u
IGlzSWRlbnRpZmllclN0YXJ0KGNoKSB7Ci0gICAgICAgIHJldHVybiAoY2ggPT09IDM2KSB8fCAo
Y2ggPT09IDk1KSB8fCAgLy8gJCAoZG9sbGFyKSBhbmQgXyAodW5kZXJzY29yZSkKLSAgICAgICAg
ICAgIChjaCA+PSA2NSAmJiBjaCA8PSA5MCkgfHwgICAgICAgICAvLyBBLi5aCi0gICAgICAgICAg
ICAoY2ggPj0gOTcgJiYgY2ggPD0gMTIyKSB8fCAgICAgICAgLy8gYS4uegotICAgICAgICAgICAg
KGNoID09PSA5MikgfHwgICAgICAgICAgICAgICAgICAgIC8vIFwgKGJhY2tzbGFzaCkKLSAgICAg
ICAgICAgICgoY2ggPj0gMHg4MCkgJiYgUmVnZXguTm9uQXNjaWlJZGVudGlmaWVyU3RhcnQudGVz
dChTdHJpbmcuZnJvbUNoYXJDb2RlKGNoKSkpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGlzSWRl
bnRpZmllclBhcnQoY2gpIHsKLSAgICAgICAgcmV0dXJuIChjaCA9PT0gMzYpIHx8IChjaCA9PT0g
OTUpIHx8ICAvLyAkIChkb2xsYXIpIGFuZCBfICh1bmRlcnNjb3JlKQotICAgICAgICAgICAgKGNo
ID49IDY1ICYmIGNoIDw9IDkwKSB8fCAgICAgICAgIC8vIEEuLloKLSAgICAgICAgICAgIChjaCA+
PSA5NyAmJiBjaCA8PSAxMjIpIHx8ICAgICAgICAvLyBhLi56Ci0gICAgICAgICAgICAoY2ggPj0g
NDggJiYgY2ggPD0gNTcpIHx8ICAgICAgICAgLy8gMC4uOQotICAgICAgICAgICAgKGNoID09PSA5
MikgfHwgICAgICAgICAgICAgICAgICAgIC8vIFwgKGJhY2tzbGFzaCkKLSAgICAgICAgICAgICgo
Y2ggPj0gMHg4MCkgJiYgUmVnZXguTm9uQXNjaWlJZGVudGlmaWVyUGFydC50ZXN0KFN0cmluZy5m
cm9tQ2hhckNvZGUoY2gpKSk7Ci0gICAgfQotCi0gICAgLy8gNy42LjEuMiBGdXR1cmUgUmVzZXJ2
ZWQgV29yZHMKLQotICAgIGZ1bmN0aW9uIGlzRnV0dXJlUmVzZXJ2ZWRXb3JkKGlkKSB7Ci0gICAg
ICAgIHN3aXRjaCAoaWQpIHsKLSAgICAgICAgY2FzZSAnY2xhc3MnOgotICAgICAgICBjYXNlICdl
bnVtJzoKLSAgICAgICAgY2FzZSAnZXhwb3J0JzoKLSAgICAgICAgY2FzZSAnZXh0ZW5kcyc6Ci0g
ICAgICAgIGNhc2UgJ2ltcG9ydCc6Ci0gICAgICAgIGNhc2UgJ3N1cGVyJzoKLSAgICAgICAgICAg
IHJldHVybiB0cnVlOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gaXNTdHJpY3RNb2RlUmVzZXJ2ZWRX
b3JkKGlkKSB7Ci0gICAgICAgIHN3aXRjaCAoaWQpIHsKLSAgICAgICAgY2FzZSAnaW1wbGVtZW50
cyc6Ci0gICAgICAgIGNhc2UgJ2ludGVyZmFjZSc6Ci0gICAgICAgIGNhc2UgJ3BhY2thZ2UnOgot
ICAgICAgICBjYXNlICdwcml2YXRlJzoKLSAgICAgICAgY2FzZSAncHJvdGVjdGVkJzoKLSAgICAg
ICAgY2FzZSAncHVibGljJzoKLSAgICAgICAgY2FzZSAnc3RhdGljJzoKLSAgICAgICAgY2FzZSAn
eWllbGQnOgotICAgICAgICBjYXNlICdsZXQnOgotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAg
ICB9Ci0KLSAgICBmdW5jdGlvbiBpc1Jlc3RyaWN0ZWRXb3JkKGlkKSB7Ci0gICAgICAgIHJldHVy
biBpZCA9PT0gJ2V2YWwnIHx8IGlkID09PSAnYXJndW1lbnRzJzsKLSAgICB9Ci0KLSAgICAvLyA3
LjYuMS4xIEtleXdvcmRzCi0KLSAgICBmdW5jdGlvbiBpc0tleXdvcmQoaWQpIHsKLSAgICAgICAg
aWYgKHN0cmljdCAmJiBpc1N0cmljdE1vZGVSZXNlcnZlZFdvcmQoaWQpKSB7Ci0gICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vICdjb25zdCcgaXMgc3BlY2lh
bGl6ZWQgYXMgS2V5d29yZCBpbiBWOC4KLSAgICAgICAgLy8gJ3lpZWxkJyBhbmQgJ2xldCcgYXJl
IGZvciBjb21wYXRpYmxpdHkgd2l0aCBTcGlkZXJNb25rZXkgYW5kIEVTLm5leHQuCi0gICAgICAg
IC8vIFNvbWUgb3RoZXJzIGFyZSBmcm9tIGZ1dHVyZSByZXNlcnZlZCB3b3Jkcy4KLQotICAgICAg
ICBzd2l0Y2ggKGlkLmxlbmd0aCkgewotICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAgICByZXR1
cm4gKGlkID09PSAnaWYnKSB8fCAoaWQgPT09ICdpbicpIHx8IChpZCA9PT0gJ2RvJyk7Ci0gICAg
ICAgIGNhc2UgMzoKLSAgICAgICAgICAgIHJldHVybiAoaWQgPT09ICd2YXInKSB8fCAoaWQgPT09
ICdmb3InKSB8fCAoaWQgPT09ICduZXcnKSB8fAotICAgICAgICAgICAgICAgIChpZCA9PT0gJ3Ry
eScpIHx8IChpZCA9PT0gJ2xldCcpOwotICAgICAgICBjYXNlIDQ6Ci0gICAgICAgICAgICByZXR1
cm4gKGlkID09PSAndGhpcycpIHx8IChpZCA9PT0gJ2Vsc2UnKSB8fCAoaWQgPT09ICdjYXNlJykg
fHwKLSAgICAgICAgICAgICAgICAoaWQgPT09ICd2b2lkJykgfHwgKGlkID09PSAnd2l0aCcpIHx8
IChpZCA9PT0gJ2VudW0nKTsKLSAgICAgICAgY2FzZSA1OgotICAgICAgICAgICAgcmV0dXJuIChp
ZCA9PT0gJ3doaWxlJykgfHwgKGlkID09PSAnYnJlYWsnKSB8fCAoaWQgPT09ICdjYXRjaCcpIHx8
Ci0gICAgICAgICAgICAgICAgKGlkID09PSAndGhyb3cnKSB8fCAoaWQgPT09ICdjb25zdCcpIHx8
IChpZCA9PT0gJ3lpZWxkJykgfHwKLSAgICAgICAgICAgICAgICAoaWQgPT09ICdjbGFzcycpIHx8
IChpZCA9PT0gJ3N1cGVyJyk7Ci0gICAgICAgIGNhc2UgNjoKLSAgICAgICAgICAgIHJldHVybiAo
aWQgPT09ICdyZXR1cm4nKSB8fCAoaWQgPT09ICd0eXBlb2YnKSB8fCAoaWQgPT09ICdkZWxldGUn
KSB8fAotICAgICAgICAgICAgICAgIChpZCA9PT0gJ3N3aXRjaCcpIHx8IChpZCA9PT0gJ2V4cG9y
dCcpIHx8IChpZCA9PT0gJ2ltcG9ydCcpOwotICAgICAgICBjYXNlIDc6Ci0gICAgICAgICAgICBy
ZXR1cm4gKGlkID09PSAnZGVmYXVsdCcpIHx8IChpZCA9PT0gJ2ZpbmFsbHknKSB8fCAoaWQgPT09
ICdleHRlbmRzJyk7Ci0gICAgICAgIGNhc2UgODoKLSAgICAgICAgICAgIHJldHVybiAoaWQgPT09
ICdmdW5jdGlvbicpIHx8IChpZCA9PT0gJ2NvbnRpbnVlJykgfHwgKGlkID09PSAnZGVidWdnZXIn
KTsKLSAgICAgICAgY2FzZSAxMDoKLSAgICAgICAgICAgIHJldHVybiAoaWQgPT09ICdpbnN0YW5j
ZW9mJyk7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIH0KLSAgICB9Ci0KLSAgICAvLyA3LjQgQ29tbWVudHMKLQotICAgIGZ1bmN0aW9uIHNraXBD
b21tZW50KCkgewotICAgICAgICB2YXIgY2gsIGJsb2NrQ29tbWVudCwgbGluZUNvbW1lbnQ7Ci0K
LSAgICAgICAgYmxvY2tDb21tZW50ID0gZmFsc2U7Ci0gICAgICAgIGxpbmVDb21tZW50ID0gZmFs
c2U7Ci0KLSAgICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7Ci0gICAgICAgICAgICBjaCA9
IHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4KTsKLQotICAgICAgICAgICAgaWYgKGxpbmVDb21tZW50
KSB7Ci0gICAgICAgICAgICAgICAgKytpbmRleDsKLSAgICAgICAgICAgICAgICBpZiAoaXNMaW5l
VGVybWluYXRvcihjaCkpIHsKLSAgICAgICAgICAgICAgICAgICAgbGluZUNvbW1lbnQgPSBmYWxz
ZTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGNoID09PSAxMyAmJiBzb3VyY2UuY2hhckNvZGVB
dChpbmRleCkgPT09IDEwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICArK2luZGV4OwotICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICsrbGluZU51bWJlcjsKLSAg
ICAgICAgICAgICAgICAgICAgbGluZVN0YXJ0ID0gaW5kZXg7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgfSBlbHNlIGlmIChibG9ja0NvbW1lbnQpIHsKLSAgICAgICAgICAgICAgICBp
ZiAoaXNMaW5lVGVybWluYXRvcihjaCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGNoID09
PSAxMyAmJiBzb3VyY2UuY2hhckNvZGVBdChpbmRleCArIDEpID09PSAxMCkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgKytpbmRleDsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgICAgICArK2xpbmVOdW1iZXI7Ci0gICAgICAgICAgICAgICAgICAgICsraW5kZXg7Ci0g
ICAgICAgICAgICAgICAgICAgIGxpbmVTdGFydCA9IGluZGV4OwotICAgICAgICAgICAgICAgICAg
ICBpZiAoaW5kZXggPj0gbGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aHJvd0Vy
cm9yKHt9LCBNZXNzYWdlcy5VbmV4cGVjdGVkVG9rZW4sICdJTExFR0FMJyk7Ci0gICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAg
ICBjaCA9IHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4KyspOwotICAgICAgICAgICAgICAgICAgICBp
ZiAoaW5kZXggPj0gbGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9y
KHt9LCBNZXNzYWdlcy5VbmV4cGVjdGVkVG9rZW4sICdJTExFR0FMJyk7Ci0gICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgLy8gQmxvY2sgY29tbWVudCBlbmRzIHdpdGgg
JyovJyAoY2hhciAjNDIsIGNoYXIgIzQ3KS4KLSAgICAgICAgICAgICAgICAgICAgaWYgKGNoID09
PSA0MikgewotICAgICAgICAgICAgICAgICAgICAgICAgY2ggPSBzb3VyY2UuY2hhckNvZGVBdChp
bmRleCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2ggPT09IDQ3KSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKytpbmRleDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBibG9ja0NvbW1lbnQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSBp
ZiAoY2ggPT09IDQ3KSB7Ci0gICAgICAgICAgICAgICAgY2ggPSBzb3VyY2UuY2hhckNvZGVBdChp
bmRleCArIDEpOwotICAgICAgICAgICAgICAgIC8vIExpbmUgY29tbWVudCBzdGFydHMgd2l0aCAn
Ly8nIChjaGFyICM0NywgY2hhciAjNDcpLgotICAgICAgICAgICAgICAgIGlmIChjaCA9PT0gNDcp
IHsKLSAgICAgICAgICAgICAgICAgICAgaW5kZXggKz0gMjsKLSAgICAgICAgICAgICAgICAgICAg
bGluZUNvbW1lbnQgPSB0cnVlOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2ggPT09IDQy
KSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIEJsb2NrIGNvbW1lbnQgc3RhcnRzIHdpdGggJy8q
JyAoY2hhciAjNDcsIGNoYXIgIzQyKS4KLSAgICAgICAgICAgICAgICAgICAgaW5kZXggKz0gMjsK
LSAgICAgICAgICAgICAgICAgICAgYmxvY2tDb21tZW50ID0gdHJ1ZTsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKGluZGV4ID49IGxlbmd0aCkgewotICAgICAgICAgICAgICAgICAgICAgICAgdGhy
b3dFcnJvcih7fSwgTWVzc2FnZXMuVW5leHBlY3RlZFRva2VuLCAnSUxMRUdBTCcpOwotICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIGlmIChp
c1doaXRlU3BhY2UoY2gpKSB7Ci0gICAgICAgICAgICAgICAgKytpbmRleDsKLSAgICAgICAgICAg
IH0gZWxzZSBpZiAoaXNMaW5lVGVybWluYXRvcihjaCkpIHsKLSAgICAgICAgICAgICAgICArK2lu
ZGV4OwotICAgICAgICAgICAgICAgIGlmIChjaCA9PT0gMTMgJiYgc291cmNlLmNoYXJDb2RlQXQo
aW5kZXgpID09PSAxMCkgewotICAgICAgICAgICAgICAgICAgICArK2luZGV4OwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICArK2xpbmVOdW1iZXI7Ci0gICAgICAgICAgICAgICAg
bGluZVN0YXJ0ID0gaW5kZXg7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgZnVuY3Rpb24g
c2NhbkhleEVzY2FwZShwcmVmaXgpIHsKLSAgICAgICAgdmFyIGksIGxlbiwgY2gsIGNvZGUgPSAw
OwotCi0gICAgICAgIGxlbiA9IChwcmVmaXggPT09ICd1JykgPyA0IDogMjsKLSAgICAgICAgZm9y
IChpID0gMDsgaSA8IGxlbjsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoaW5kZXggPCBsZW5ndGgg
JiYgaXNIZXhEaWdpdChzb3VyY2VbaW5kZXhdKSkgewotICAgICAgICAgICAgICAgIGNoID0gc291
cmNlW2luZGV4KytdOwotICAgICAgICAgICAgICAgIGNvZGUgPSBjb2RlICogMTYgKyAnMDEyMzQ1
Njc4OWFiY2RlZicuaW5kZXhPZihjaC50b0xvd2VyQ2FzZSgpKTsKLSAgICAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICcnOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGNvZGUpOwotICAgIH0KLQotICAg
IGZ1bmN0aW9uIHNjYW5Vbmljb2RlQ29kZVBvaW50RXNjYXBlKCkgewotICAgICAgICB2YXIgY2gs
IGNvZGUsIGN1MSwgY3UyOwotCi0gICAgICAgIGNoID0gc291cmNlW2luZGV4XTsKLSAgICAgICAg
Y29kZSA9IDA7Ci0KLSAgICAgICAgLy8gQXQgbGVhc3QsIG9uZSBoZXggZGlnaXQgaXMgcmVxdWly
ZWQuCi0gICAgICAgIGlmIChjaCA9PT0gJ30nKSB7Ci0gICAgICAgICAgICB0aHJvd0Vycm9yKHt9
LCBNZXNzYWdlcy5VbmV4cGVjdGVkVG9rZW4sICdJTExFR0FMJyk7Ci0gICAgICAgIH0KLQotICAg
ICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHsKLSAgICAgICAgICAgIGNoID0gc291cmNlW2lu
ZGV4KytdOwotICAgICAgICAgICAgaWYgKCFpc0hleERpZ2l0KGNoKSkgewotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY29kZSA9IGNvZGUgKiAxNiAr
ICcwMTIzNDU2Nzg5YWJjZGVmJy5pbmRleE9mKGNoLnRvTG93ZXJDYXNlKCkpOwotICAgICAgICB9
Ci0KLSAgICAgICAgaWYgKGNvZGUgPiAweDEwRkZGRiB8fCBjaCAhPT0gJ30nKSB7Ci0gICAgICAg
ICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5VbmV4cGVjdGVkVG9rZW4sICdJTExFR0FMJyk7
Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBVVEYtMTYgRW5jb2RpbmcKLSAgICAgICAgaWYgKGNv
ZGUgPD0gMHhGRkZGKSB7Ci0gICAgICAgICAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShj
b2RlKTsKLSAgICAgICAgfQotICAgICAgICBjdTEgPSAoKGNvZGUgLSAweDEwMDAwKSA+PiAxMCkg
KyAweEQ4MDA7Ci0gICAgICAgIGN1MiA9ICgoY29kZSAtIDB4MTAwMDApICYgMTAyMykgKyAweERD
MDA7Ci0gICAgICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGN1MSwgY3UyKTsKLSAgICB9
Ci0KLSAgICBmdW5jdGlvbiBnZXRFc2NhcGVkSWRlbnRpZmllcigpIHsKLSAgICAgICAgdmFyIGNo
LCBpZDsKLQotICAgICAgICBjaCA9IHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4KyspOwotICAgICAg
ICBpZCA9IFN0cmluZy5mcm9tQ2hhckNvZGUoY2gpOwotCi0gICAgICAgIC8vICdcdScgKGNoYXIg
IzkyLCBjaGFyICMxMTcpIGRlbm90ZXMgYW4gZXNjYXBlZCBjaGFyYWN0ZXIuCi0gICAgICAgIGlm
IChjaCA9PT0gOTIpIHsKLSAgICAgICAgICAgIGlmIChzb3VyY2UuY2hhckNvZGVBdChpbmRleCkg
IT09IDExNykgewotICAgICAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLlVuZXhw
ZWN0ZWRUb2tlbiwgJ0lMTEVHQUwnKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgICsraW5k
ZXg7Ci0gICAgICAgICAgICBjaCA9IHNjYW5IZXhFc2NhcGUoJ3UnKTsKLSAgICAgICAgICAgIGlm
ICghY2ggfHwgY2ggPT09ICdcXCcgfHwgIWlzSWRlbnRpZmllclN0YXJ0KGNoLmNoYXJDb2RlQXQo
MCkpKSB7Ci0gICAgICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuVW5leHBlY3Rl
ZFRva2VuLCAnSUxMRUdBTCcpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWQgPSBjaDsK
LSAgICAgICAgfQotCi0gICAgICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkgewotICAgICAgICAg
ICAgY2ggPSBzb3VyY2UuY2hhckNvZGVBdChpbmRleCk7Ci0gICAgICAgICAgICBpZiAoIWlzSWRl
bnRpZmllclBhcnQoY2gpKSB7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICArK2luZGV4OwotICAgICAgICAgICAgaWQgKz0gU3RyaW5nLmZyb21DaGFy
Q29kZShjaCk7Ci0KLSAgICAgICAgICAgIC8vICdcdScgKGNoYXIgIzkyLCBjaGFyICMxMTcpIGRl
bm90ZXMgYW4gZXNjYXBlZCBjaGFyYWN0ZXIuCi0gICAgICAgICAgICBpZiAoY2ggPT09IDkyKSB7
Ci0gICAgICAgICAgICAgICAgaWQgPSBpZC5zdWJzdHIoMCwgaWQubGVuZ3RoIC0gMSk7Ci0gICAg
ICAgICAgICAgICAgaWYgKHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4KSAhPT0gMTE3KSB7Ci0gICAg
ICAgICAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLlVuZXhwZWN0ZWRUb2tlbiwg
J0lMTEVHQUwnKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgKytpbmRleDsK
LSAgICAgICAgICAgICAgICBjaCA9IHNjYW5IZXhFc2NhcGUoJ3UnKTsKLSAgICAgICAgICAgICAg
ICBpZiAoIWNoIHx8IGNoID09PSAnXFwnIHx8ICFpc0lkZW50aWZpZXJQYXJ0KGNoLmNoYXJDb2Rl
QXQoMCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLlVu
ZXhwZWN0ZWRUb2tlbiwgJ0lMTEVHQUwnKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgaWQgKz0gY2g7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1
cm4gaWQ7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gZ2V0SWRlbnRpZmllcigpIHsKLSAgICAgICAg
dmFyIHN0YXJ0LCBjaDsKLQotICAgICAgICBzdGFydCA9IGluZGV4Kys7Ci0gICAgICAgIHdoaWxl
IChpbmRleCA8IGxlbmd0aCkgewotICAgICAgICAgICAgY2ggPSBzb3VyY2UuY2hhckNvZGVBdChp
bmRleCk7Ci0gICAgICAgICAgICBpZiAoY2ggPT09IDkyKSB7Ci0gICAgICAgICAgICAgICAgLy8g
QmxhY2tzbGFzaCAoY2hhciAjOTIpIG1hcmtzIFVuaWNvZGUgZXNjYXBlIHNlcXVlbmNlLgotICAg
ICAgICAgICAgICAgIGluZGV4ID0gc3RhcnQ7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGdldEVz
Y2FwZWRJZGVudGlmaWVyKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoaXNJZGVu
dGlmaWVyUGFydChjaCkpIHsKLSAgICAgICAgICAgICAgICArK2luZGV4OwotICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotCi0gICAgICAgIHJldHVybiBzb3VyY2Uuc2xpY2Uoc3RhcnQsIGluZGV4KTsKLSAgICB9Ci0K
LSAgICBmdW5jdGlvbiBzY2FuSWRlbnRpZmllcigpIHsKLSAgICAgICAgdmFyIHN0YXJ0LCBpZCwg
dHlwZTsKLQotICAgICAgICBzdGFydCA9IGluZGV4OwotCi0gICAgICAgIC8vIEJhY2tzbGFzaCAo
Y2hhciAjOTIpIHN0YXJ0cyBhbiBlc2NhcGVkIGNoYXJhY3Rlci4KLSAgICAgICAgaWQgPSAoc291
cmNlLmNoYXJDb2RlQXQoaW5kZXgpID09PSA5MikgPyBnZXRFc2NhcGVkSWRlbnRpZmllcigpIDog
Z2V0SWRlbnRpZmllcigpOwotCi0gICAgICAgIC8vIFRoZXJlIGlzIG5vIGtleXdvcmQgb3IgbGl0
ZXJhbCB3aXRoIG9ubHkgb25lIGNoYXJhY3Rlci4KLSAgICAgICAgLy8gVGh1cywgaXQgbXVzdCBi
ZSBhbiBpZGVudGlmaWVyLgotICAgICAgICBpZiAoaWQubGVuZ3RoID09PSAxKSB7Ci0gICAgICAg
ICAgICB0eXBlID0gVG9rZW4uSWRlbnRpZmllcjsKLSAgICAgICAgfSBlbHNlIGlmIChpc0tleXdv
cmQoaWQpKSB7Ci0gICAgICAgICAgICB0eXBlID0gVG9rZW4uS2V5d29yZDsKLSAgICAgICAgfSBl
bHNlIGlmIChpZCA9PT0gJ251bGwnKSB7Ci0gICAgICAgICAgICB0eXBlID0gVG9rZW4uTnVsbExp
dGVyYWw7Ci0gICAgICAgIH0gZWxzZSBpZiAoaWQgPT09ICd0cnVlJyB8fCBpZCA9PT0gJ2ZhbHNl
JykgewotICAgICAgICAgICAgdHlwZSA9IFRva2VuLkJvb2xlYW5MaXRlcmFsOwotICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgdHlwZSA9IFRva2VuLklkZW50aWZpZXI7Ci0gICAgICAgIH0K
LQotICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgdHlwZTogdHlwZSwKLSAgICAgICAgICAg
IHZhbHVlOiBpZCwKLSAgICAgICAgICAgIGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsCi0gICAgICAg
ICAgICBsaW5lU3RhcnQ6IGxpbmVTdGFydCwKLSAgICAgICAgICAgIHJhbmdlOiBbc3RhcnQsIGlu
ZGV4XQotICAgICAgICB9OwotICAgIH0KLQotCi0gICAgLy8gNy43IFB1bmN0dWF0b3JzCi0KLSAg
ICBmdW5jdGlvbiBzY2FuUHVuY3R1YXRvcigpIHsKLSAgICAgICAgdmFyIHN0YXJ0ID0gaW5kZXgs
Ci0gICAgICAgICAgICBjb2RlID0gc291cmNlLmNoYXJDb2RlQXQoaW5kZXgpLAotICAgICAgICAg
ICAgY29kZTIsCi0gICAgICAgICAgICBjaDEgPSBzb3VyY2VbaW5kZXhdLAotICAgICAgICAgICAg
Y2gyLAotICAgICAgICAgICAgY2gzLAotICAgICAgICAgICAgY2g0OwotCi0gICAgICAgIHN3aXRj
aCAoY29kZSkgewotICAgICAgICAvLyBDaGVjayBmb3IgbW9zdCBjb21tb24gc2luZ2xlLWNoYXJh
Y3RlciBwdW5jdHVhdG9ycy4KLSAgICAgICAgY2FzZSA0MDogICAvLyAoIG9wZW4gYnJhY2tldAot
ICAgICAgICBjYXNlIDQxOiAgIC8vICkgY2xvc2UgYnJhY2tldAotICAgICAgICBjYXNlIDU5OiAg
IC8vIDsgc2VtaWNvbG9uCi0gICAgICAgIGNhc2UgNDQ6ICAgLy8gLCBjb21tYQotICAgICAgICBj
YXNlIDEyMzogIC8vIHsgb3BlbiBjdXJseSBicmFjZQotICAgICAgICBjYXNlIDEyNTogIC8vIH0g
Y2xvc2UgY3VybHkgYnJhY2UKLSAgICAgICAgY2FzZSA5MTogICAvLyBbCi0gICAgICAgIGNhc2Ug
OTM6ICAgLy8gXQotICAgICAgICBjYXNlIDU4OiAgIC8vIDoKLSAgICAgICAgY2FzZSA2MzogICAv
LyA/Ci0gICAgICAgIGNhc2UgMTI2OiAgLy8gfgotICAgICAgICAgICAgKytpbmRleDsKLSAgICAg
ICAgICAgIGlmIChleHRyYS50b2tlbml6ZSkgewotICAgICAgICAgICAgICAgIGlmIChjb2RlID09
PSA0MCkgewotICAgICAgICAgICAgICAgICAgICBleHRyYS5vcGVuUGFyZW5Ub2tlbiA9IGV4dHJh
LnRva2Vucy5sZW5ndGg7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjb2RlID09PSAxMjMp
IHsKLSAgICAgICAgICAgICAgICAgICAgZXh0cmEub3BlbkN1cmx5VG9rZW4gPSBleHRyYS50b2tl
bnMubGVuZ3RoOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IHJldHVybiB7Ci0gICAgICAgICAgICAgICAgdHlwZTogVG9rZW4uUHVuY3R1YXRvciwKLSAgICAg
ICAgICAgICAgICB2YWx1ZTogU3RyaW5nLmZyb21DaGFyQ29kZShjb2RlKSwKLSAgICAgICAgICAg
ICAgICBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyLAotICAgICAgICAgICAgICAgIGxpbmVTdGFydDog
bGluZVN0YXJ0LAotICAgICAgICAgICAgICAgIHJhbmdlOiBbc3RhcnQsIGluZGV4XQotICAgICAg
ICAgICAgfTsKLQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgY29kZTIgPSBzb3VyY2Uu
Y2hhckNvZGVBdChpbmRleCArIDEpOwotCi0gICAgICAgICAgICAvLyAnPScgKGNoYXIgIzYxKSBt
YXJrcyBhbiBhc3NpZ25tZW50IG9yIGNvbXBhcmlzb24gb3BlcmF0b3IuCi0gICAgICAgICAgICBp
ZiAoY29kZTIgPT09IDYxKSB7Ci0gICAgICAgICAgICAgICAgc3dpdGNoIChjb2RlKSB7Ci0gICAg
ICAgICAgICAgICAgY2FzZSAzNzogIC8vICUKLSAgICAgICAgICAgICAgICBjYXNlIDM4OiAgLy8g
JgotICAgICAgICAgICAgICAgIGNhc2UgNDI6ICAvLyAqOgotICAgICAgICAgICAgICAgIGNhc2Ug
NDM6ICAvLyArCi0gICAgICAgICAgICAgICAgY2FzZSA0NTogIC8vIC0KLSAgICAgICAgICAgICAg
ICBjYXNlIDQ3OiAgLy8gLwotICAgICAgICAgICAgICAgIGNhc2UgNjA6ICAvLyA8Ci0gICAgICAg
ICAgICAgICAgY2FzZSA2MjogIC8vID4KLSAgICAgICAgICAgICAgICBjYXNlIDk0OiAgLy8gXgot
ICAgICAgICAgICAgICAgIGNhc2UgMTI0OiAvLyB8Ci0gICAgICAgICAgICAgICAgICAgIGluZGV4
ICs9IDI7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB0eXBlOiBUb2tlbi5QdW5jdHVhdG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgdmFs
dWU6IFN0cmluZy5mcm9tQ2hhckNvZGUoY29kZSkgKyBTdHJpbmcuZnJvbUNoYXJDb2RlKGNvZGUy
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICBsaW5lU3RhcnQ6IGxpbmVTdGFydCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHJhbmdlOiBbc3RhcnQsIGluZGV4XQotICAgICAgICAgICAgICAgICAgICB9Owot
Ci0gICAgICAgICAgICAgICAgY2FzZSAzMzogLy8gIQotICAgICAgICAgICAgICAgIGNhc2UgNjE6
IC8vID0KLSAgICAgICAgICAgICAgICAgICAgaW5kZXggKz0gMjsKLQotICAgICAgICAgICAgICAg
ICAgICAvLyAhPT0gYW5kID09PQotICAgICAgICAgICAgICAgICAgICBpZiAoc291cmNlLmNoYXJD
b2RlQXQoaW5kZXgpID09PSA2MSkgewotICAgICAgICAgICAgICAgICAgICAgICAgKytpbmRleDsK
LSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gewotICAg
ICAgICAgICAgICAgICAgICAgICAgdHlwZTogVG9rZW4uUHVuY3R1YXRvciwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHZhbHVlOiBzb3VyY2Uuc2xpY2Uoc3RhcnQsIGluZGV4KSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICBsaW5lU3RhcnQ6IGxpbmVTdGFydCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHJh
bmdlOiBbc3RhcnQsIGluZGV4XQotICAgICAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAg
ICAgLy8gUGVlayBtb3JlIGNoYXJhY3RlcnMuCi0KLSAgICAgICAgY2gyID0gc291cmNlW2luZGV4
ICsgMV07Ci0gICAgICAgIGNoMyA9IHNvdXJjZVtpbmRleCArIDJdOwotICAgICAgICBjaDQgPSBz
b3VyY2VbaW5kZXggKyAzXTsKLQotICAgICAgICAvLyA0LWNoYXJhY3RlciBwdW5jdHVhdG9yOiA+
Pj49Ci0KLSAgICAgICAgaWYgKGNoMSA9PT0gJz4nICYmIGNoMiA9PT0gJz4nICYmIGNoMyA9PT0g
Jz4nKSB7Ci0gICAgICAgICAgICBpZiAoY2g0ID09PSAnPScpIHsKLSAgICAgICAgICAgICAgICBp
bmRleCArPSA0OwotICAgICAgICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAgICAgICAg
IHR5cGU6IFRva2VuLlB1bmN0dWF0b3IsCi0gICAgICAgICAgICAgICAgICAgIHZhbHVlOiAnPj4+
PScsCi0gICAgICAgICAgICAgICAgICAgIGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsCi0gICAgICAg
ICAgICAgICAgICAgIGxpbmVTdGFydDogbGluZVN0YXJ0LAotICAgICAgICAgICAgICAgICAgICBy
YW5nZTogW3N0YXJ0LCBpbmRleF0KLSAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0KLSAgICAgICAgLy8gMy1jaGFyYWN0ZXIgcHVuY3R1YXRvcnM6ID09PSAhPT0g
Pj4+IDw8PSA+Pj0KLQotICAgICAgICBpZiAoY2gxID09PSAnPicgJiYgY2gyID09PSAnPicgJiYg
Y2gzID09PSAnPicpIHsKLSAgICAgICAgICAgIGluZGV4ICs9IDM7Ci0gICAgICAgICAgICByZXR1
cm4gewotICAgICAgICAgICAgICAgIHR5cGU6IFRva2VuLlB1bmN0dWF0b3IsCi0gICAgICAgICAg
ICAgICAgdmFsdWU6ICc+Pj4nLAotICAgICAgICAgICAgICAgIGxpbmVOdW1iZXI6IGxpbmVOdW1i
ZXIsCi0gICAgICAgICAgICAgICAgbGluZVN0YXJ0OiBsaW5lU3RhcnQsCi0gICAgICAgICAgICAg
ICAgcmFuZ2U6IFtzdGFydCwgaW5kZXhdCi0gICAgICAgICAgICB9OwotICAgICAgICB9Ci0KLSAg
ICAgICAgaWYgKGNoMSA9PT0gJzwnICYmIGNoMiA9PT0gJzwnICYmIGNoMyA9PT0gJz0nKSB7Ci0g
ICAgICAgICAgICBpbmRleCArPSAzOwotICAgICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAg
ICAgICB0eXBlOiBUb2tlbi5QdW5jdHVhdG9yLAotICAgICAgICAgICAgICAgIHZhbHVlOiAnPDw9
JywKLSAgICAgICAgICAgICAgICBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyLAotICAgICAgICAgICAg
ICAgIGxpbmVTdGFydDogbGluZVN0YXJ0LAotICAgICAgICAgICAgICAgIHJhbmdlOiBbc3RhcnQs
IGluZGV4XQotICAgICAgICAgICAgfTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChjaDEgPT09
ICc+JyAmJiBjaDIgPT09ICc+JyAmJiBjaDMgPT09ICc9JykgewotICAgICAgICAgICAgaW5kZXgg
Kz0gMzsKLSAgICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAgICAgdHlwZTogVG9rZW4u
UHVuY3R1YXRvciwKLSAgICAgICAgICAgICAgICB2YWx1ZTogJz4+PScsCi0gICAgICAgICAgICAg
ICAgbGluZU51bWJlcjogbGluZU51bWJlciwKLSAgICAgICAgICAgICAgICBsaW5lU3RhcnQ6IGxp
bmVTdGFydCwKLSAgICAgICAgICAgICAgICByYW5nZTogW3N0YXJ0LCBpbmRleF0KLSAgICAgICAg
ICAgIH07Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoY2gxID09PSAnLicgJiYgY2gyID09PSAn
LicgJiYgY2gzID09PSAnLicpIHsKLSAgICAgICAgICAgIGluZGV4ICs9IDM7Ci0gICAgICAgICAg
ICByZXR1cm4gewotICAgICAgICAgICAgICAgIHR5cGU6IFRva2VuLlB1bmN0dWF0b3IsCi0gICAg
ICAgICAgICAgICAgdmFsdWU6ICcuLi4nLAotICAgICAgICAgICAgICAgIGxpbmVOdW1iZXI6IGxp
bmVOdW1iZXIsCi0gICAgICAgICAgICAgICAgbGluZVN0YXJ0OiBsaW5lU3RhcnQsCi0gICAgICAg
ICAgICAgICAgcmFuZ2U6IFtzdGFydCwgaW5kZXhdCi0gICAgICAgICAgICB9OwotICAgICAgICB9
Ci0KLSAgICAgICAgLy8gT3RoZXIgMi1jaGFyYWN0ZXIgcHVuY3R1YXRvcnM6ICsrIC0tIDw8ID4+
ICYmIHx8Ci0KLSAgICAgICAgaWYgKGNoMSA9PT0gY2gyICYmICgnKy08PiZ8Jy5pbmRleE9mKGNo
MSkgPj0gMCkpIHsKLSAgICAgICAgICAgIGluZGV4ICs9IDI7Ci0gICAgICAgICAgICByZXR1cm4g
ewotICAgICAgICAgICAgICAgIHR5cGU6IFRva2VuLlB1bmN0dWF0b3IsCi0gICAgICAgICAgICAg
ICAgdmFsdWU6IGNoMSArIGNoMiwKLSAgICAgICAgICAgICAgICBsaW5lTnVtYmVyOiBsaW5lTnVt
YmVyLAotICAgICAgICAgICAgICAgIGxpbmVTdGFydDogbGluZVN0YXJ0LAotICAgICAgICAgICAg
ICAgIHJhbmdlOiBbc3RhcnQsIGluZGV4XQotICAgICAgICAgICAgfTsKLSAgICAgICAgfQotCi0g
ICAgICAgIGlmIChjaDEgPT09ICc9JyAmJiBjaDIgPT09ICc+JykgewotICAgICAgICAgICAgaW5k
ZXggKz0gMjsKLSAgICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAgICAgdHlwZTogVG9r
ZW4uUHVuY3R1YXRvciwKLSAgICAgICAgICAgICAgICB2YWx1ZTogJz0+JywKLSAgICAgICAgICAg
ICAgICBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyLAotICAgICAgICAgICAgICAgIGxpbmVTdGFydDog
bGluZVN0YXJ0LAotICAgICAgICAgICAgICAgIHJhbmdlOiBbc3RhcnQsIGluZGV4XQotICAgICAg
ICAgICAgfTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICgnPD49ISstKiUmfF4vJy5pbmRleE9m
KGNoMSkgPj0gMCkgewotICAgICAgICAgICAgKytpbmRleDsKLSAgICAgICAgICAgIHJldHVybiB7
Ci0gICAgICAgICAgICAgICAgdHlwZTogVG9rZW4uUHVuY3R1YXRvciwKLSAgICAgICAgICAgICAg
ICB2YWx1ZTogY2gxLAotICAgICAgICAgICAgICAgIGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsCi0g
ICAgICAgICAgICAgICAgbGluZVN0YXJ0OiBsaW5lU3RhcnQsCi0gICAgICAgICAgICAgICAgcmFu
Z2U6IFtzdGFydCwgaW5kZXhdCi0gICAgICAgICAgICB9OwotICAgICAgICB9Ci0KLSAgICAgICAg
aWYgKGNoMSA9PT0gJy4nKSB7Ci0gICAgICAgICAgICArK2luZGV4OwotICAgICAgICAgICAgcmV0
dXJuIHsKLSAgICAgICAgICAgICAgICB0eXBlOiBUb2tlbi5QdW5jdHVhdG9yLAotICAgICAgICAg
ICAgICAgIHZhbHVlOiBjaDEsCi0gICAgICAgICAgICAgICAgbGluZU51bWJlcjogbGluZU51bWJl
ciwKLSAgICAgICAgICAgICAgICBsaW5lU3RhcnQ6IGxpbmVTdGFydCwKLSAgICAgICAgICAgICAg
ICByYW5nZTogW3N0YXJ0LCBpbmRleF0KLSAgICAgICAgICAgIH07Ci0gICAgICAgIH0KLQotICAg
ICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5VbmV4cGVjdGVkVG9rZW4sICdJTExFR0FMJyk7
Ci0gICAgfQotCi0gICAgLy8gNy44LjMgTnVtZXJpYyBMaXRlcmFscwotCi0gICAgZnVuY3Rpb24g
c2NhbkhleExpdGVyYWwoc3RhcnQpIHsKLSAgICAgICAgdmFyIG51bWJlciA9ICcnOwotCi0gICAg
ICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkgewotICAgICAgICAgICAgaWYgKCFpc0hleERpZ2l0
KHNvdXJjZVtpbmRleF0pKSB7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBudW1iZXIgKz0gc291cmNlW2luZGV4KytdOwotICAgICAgICB9Ci0KLSAg
ICAgICAgaWYgKG51bWJlci5sZW5ndGggPT09IDApIHsKLSAgICAgICAgICAgIHRocm93RXJyb3Io
e30sIE1lc3NhZ2VzLlVuZXhwZWN0ZWRUb2tlbiwgJ0lMTEVHQUwnKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIGlmIChpc0lkZW50aWZpZXJTdGFydChzb3VyY2UuY2hhckNvZGVBdChpbmRleCkpKSB7
Ci0gICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5VbmV4cGVjdGVkVG9rZW4sICdJ
TExFR0FMJyk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgdHlw
ZTogVG9rZW4uTnVtZXJpY0xpdGVyYWwsCi0gICAgICAgICAgICB2YWx1ZTogcGFyc2VJbnQoJzB4
JyArIG51bWJlciwgMTYpLAotICAgICAgICAgICAgbGluZU51bWJlcjogbGluZU51bWJlciwKLSAg
ICAgICAgICAgIGxpbmVTdGFydDogbGluZVN0YXJ0LAotICAgICAgICAgICAgcmFuZ2U6IFtzdGFy
dCwgaW5kZXhdCi0gICAgICAgIH07Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gc2Nhbk9jdGFsTGl0
ZXJhbChwcmVmaXgsIHN0YXJ0KSB7Ci0gICAgICAgIHZhciBudW1iZXIsIG9jdGFsOwotCi0gICAg
ICAgIGlmIChpc09jdGFsRGlnaXQocHJlZml4KSkgewotICAgICAgICAgICAgb2N0YWwgPSB0cnVl
OwotICAgICAgICAgICAgbnVtYmVyID0gJzAnICsgc291cmNlW2luZGV4KytdOwotICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgb2N0YWwgPSBmYWxzZTsKLSAgICAgICAgICAgICsraW5kZXg7
Ci0gICAgICAgICAgICBudW1iZXIgPSAnJzsKLSAgICAgICAgfQotCi0gICAgICAgIHdoaWxlIChp
bmRleCA8IGxlbmd0aCkgewotICAgICAgICAgICAgaWYgKCFpc09jdGFsRGlnaXQoc291cmNlW2lu
ZGV4XSkpIHsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIG51bWJlciArPSBzb3VyY2VbaW5kZXgrK107Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAo
IW9jdGFsICYmIG51bWJlci5sZW5ndGggPT09IDApIHsKLSAgICAgICAgICAgIC8vIG9ubHkgMG8g
b3IgME8KLSAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLlVuZXhwZWN0ZWRUb2tl
biwgJ0lMTEVHQUwnKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChpc0lkZW50aWZpZXJTdGFy
dChzb3VyY2UuY2hhckNvZGVBdChpbmRleCkpIHx8IGlzRGVjaW1hbERpZ2l0KHNvdXJjZS5jaGFy
Q29kZUF0KGluZGV4KSkpIHsKLSAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLlVu
ZXhwZWN0ZWRUb2tlbiwgJ0lMTEVHQUwnKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiB7
Ci0gICAgICAgICAgICB0eXBlOiBUb2tlbi5OdW1lcmljTGl0ZXJhbCwKLSAgICAgICAgICAgIHZh
bHVlOiBwYXJzZUludChudW1iZXIsIDgpLAotICAgICAgICAgICAgb2N0YWw6IG9jdGFsLAotICAg
ICAgICAgICAgbGluZU51bWJlcjogbGluZU51bWJlciwKLSAgICAgICAgICAgIGxpbmVTdGFydDog
bGluZVN0YXJ0LAotICAgICAgICAgICAgcmFuZ2U6IFtzdGFydCwgaW5kZXhdCi0gICAgICAgIH07
Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gc2Nhbk51bWVyaWNMaXRlcmFsKCkgewotICAgICAgICB2
YXIgbnVtYmVyLCBzdGFydCwgY2gsIG9jdGFsOwotCi0gICAgICAgIGNoID0gc291cmNlW2luZGV4
XTsKLSAgICAgICAgYXNzZXJ0KGlzRGVjaW1hbERpZ2l0KGNoLmNoYXJDb2RlQXQoMCkpIHx8IChj
aCA9PT0gJy4nKSwKLSAgICAgICAgICAgICdOdW1lcmljIGxpdGVyYWwgbXVzdCBzdGFydCB3aXRo
IGEgZGVjaW1hbCBkaWdpdCBvciBhIGRlY2ltYWwgcG9pbnQnKTsKLQotICAgICAgICBzdGFydCA9
IGluZGV4OwotICAgICAgICBudW1iZXIgPSAnJzsKLSAgICAgICAgaWYgKGNoICE9PSAnLicpIHsK
LSAgICAgICAgICAgIG51bWJlciA9IHNvdXJjZVtpbmRleCsrXTsKLSAgICAgICAgICAgIGNoID0g
c291cmNlW2luZGV4XTsKLQotICAgICAgICAgICAgLy8gSGV4IG51bWJlciBzdGFydHMgd2l0aCAn
MHgnLgotICAgICAgICAgICAgLy8gT2N0YWwgbnVtYmVyIHN0YXJ0cyB3aXRoICcwJy4KLSAgICAg
ICAgICAgIC8vIE9jdGFsIG51bWJlciBpbiBFUzYgc3RhcnRzIHdpdGggJzBvJy4KLSAgICAgICAg
ICAgIC8vIEJpbmFyeSBudW1iZXIgaW4gRVM2IHN0YXJ0cyB3aXRoICcwYicuCi0gICAgICAgICAg
ICBpZiAobnVtYmVyID09PSAnMCcpIHsKLSAgICAgICAgICAgICAgICBpZiAoY2ggPT09ICd4JyB8
fCBjaCA9PT0gJ1gnKSB7Ci0gICAgICAgICAgICAgICAgICAgICsraW5kZXg7Ci0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiBzY2FuSGV4TGl0ZXJhbChzdGFydCk7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIGlmIChjaCA9PT0gJ2InIHx8IGNoID09PSAnQicpIHsKLSAgICAg
ICAgICAgICAgICAgICAgKytpbmRleDsKLSAgICAgICAgICAgICAgICAgICAgbnVtYmVyID0gJyc7
Ci0KLSAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBjaCA9IHNvdXJjZVtpbmRleF07Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoY2ggIT09ICcwJyAmJiBjaCAhPT0gJzEnKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBudW1iZXIgKz0gc291cmNlW2luZGV4KytdOwotICAgICAgICAgICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKG51bWJlci5sZW5ndGggPT09IDApIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIG9ubHkgMGIgb3IgMEIKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLlVuZXhwZWN0ZWRUb2tlbiwgJ0lMTEVHQUwn
KTsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIGlmIChpbmRl
eCA8IGxlbmd0aCkgewotICAgICAgICAgICAgICAgICAgICAgICAgY2ggPSBzb3VyY2UuY2hhckNv
ZGVBdChpbmRleCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNJZGVudGlmaWVyU3Rh
cnQoY2gpIHx8IGlzRGVjaW1hbERpZ2l0KGNoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLlVuZXhwZWN0ZWRUb2tlbiwgJ0lMTEVHQUwnKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogVG9r
ZW4uTnVtZXJpY0xpdGVyYWwsCi0gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcGFyc2VJ
bnQobnVtYmVyLCAyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVOdW1iZXI6IGxpbmVO
dW1iZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICBsaW5lU3RhcnQ6IGxpbmVTdGFydCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHJhbmdlOiBbc3RhcnQsIGluZGV4XQotICAgICAgICAgICAg
ICAgICAgICB9OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoY2ggPT09
ICdvJyB8fCBjaCA9PT0gJ08nIHx8IGlzT2N0YWxEaWdpdChjaCkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHNjYW5PY3RhbExpdGVyYWwoY2gsIHN0YXJ0KTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgLy8gZGVjaW1hbCBudW1iZXIgc3RhcnRzIHdpdGggJzAnIHN1
Y2ggYXMgJzA5JyBpcyBpbGxlZ2FsLgotICAgICAgICAgICAgICAgIGlmIChjaCAmJiBpc0RlY2lt
YWxEaWdpdChjaC5jaGFyQ29kZUF0KDApKSkgewotICAgICAgICAgICAgICAgICAgICB0aHJvd0Vy
cm9yKHt9LCBNZXNzYWdlcy5VbmV4cGVjdGVkVG9rZW4sICdJTExFR0FMJyk7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB3aGlsZSAoaXNEZWNpbWFsRGln
aXQoc291cmNlLmNoYXJDb2RlQXQoaW5kZXgpKSkgewotICAgICAgICAgICAgICAgIG51bWJlciAr
PSBzb3VyY2VbaW5kZXgrK107Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjaCA9IHNvdXJj
ZVtpbmRleF07Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoY2ggPT09ICcuJykgewotICAgICAg
ICAgICAgbnVtYmVyICs9IHNvdXJjZVtpbmRleCsrXTsKLSAgICAgICAgICAgIHdoaWxlIChpc0Rl
Y2ltYWxEaWdpdChzb3VyY2UuY2hhckNvZGVBdChpbmRleCkpKSB7Ci0gICAgICAgICAgICAgICAg
bnVtYmVyICs9IHNvdXJjZVtpbmRleCsrXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNo
ID0gc291cmNlW2luZGV4XTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChjaCA9PT0gJ2UnIHx8
IGNoID09PSAnRScpIHsKLSAgICAgICAgICAgIG51bWJlciArPSBzb3VyY2VbaW5kZXgrK107Ci0K
LSAgICAgICAgICAgIGNoID0gc291cmNlW2luZGV4XTsKLSAgICAgICAgICAgIGlmIChjaCA9PT0g
JysnIHx8IGNoID09PSAnLScpIHsKLSAgICAgICAgICAgICAgICBudW1iZXIgKz0gc291cmNlW2lu
ZGV4KytdOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGlzRGVjaW1hbERpZ2l0KHNv
dXJjZS5jaGFyQ29kZUF0KGluZGV4KSkpIHsKLSAgICAgICAgICAgICAgICB3aGlsZSAoaXNEZWNp
bWFsRGlnaXQoc291cmNlLmNoYXJDb2RlQXQoaW5kZXgpKSkgewotICAgICAgICAgICAgICAgICAg
ICBudW1iZXIgKz0gc291cmNlW2luZGV4KytdOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuVW5l
eHBlY3RlZFRva2VuLCAnSUxMRUdBTCcpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAg
ICAgICAgaWYgKGlzSWRlbnRpZmllclN0YXJ0KHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4KSkpIHsK
LSAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLlVuZXhwZWN0ZWRUb2tlbiwgJ0lM
TEVHQUwnKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICB0eXBl
OiBUb2tlbi5OdW1lcmljTGl0ZXJhbCwKLSAgICAgICAgICAgIHZhbHVlOiBwYXJzZUZsb2F0KG51
bWJlciksCi0gICAgICAgICAgICBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyLAotICAgICAgICAgICAg
bGluZVN0YXJ0OiBsaW5lU3RhcnQsCi0gICAgICAgICAgICByYW5nZTogW3N0YXJ0LCBpbmRleF0K
LSAgICAgICAgfTsKLSAgICB9Ci0KLSAgICAvLyA3LjguNCBTdHJpbmcgTGl0ZXJhbHMKLQotICAg
IGZ1bmN0aW9uIHNjYW5TdHJpbmdMaXRlcmFsKCkgewotICAgICAgICB2YXIgc3RyID0gJycsIHF1
b3RlLCBzdGFydCwgY2gsIGNvZGUsIHVuZXNjYXBlZCwgcmVzdG9yZSwgb2N0YWwgPSBmYWxzZTsK
LQotICAgICAgICBxdW90ZSA9IHNvdXJjZVtpbmRleF07Ci0gICAgICAgIGFzc2VydCgocXVvdGUg
PT09ICdcJycgfHwgcXVvdGUgPT09ICciJyksCi0gICAgICAgICAgICAnU3RyaW5nIGxpdGVyYWwg
bXVzdCBzdGFydHMgd2l0aCBhIHF1b3RlJyk7Ci0KLSAgICAgICAgc3RhcnQgPSBpbmRleDsKLSAg
ICAgICAgKytpbmRleDsKLQotICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHsKLSAgICAg
ICAgICAgIGNoID0gc291cmNlW2luZGV4KytdOwotCi0gICAgICAgICAgICBpZiAoY2ggPT09IHF1
b3RlKSB7Ci0gICAgICAgICAgICAgICAgcXVvdGUgPSAnJzsKLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoY2ggPT09ICdcXCcpIHsKLSAgICAgICAgICAgICAg
ICBjaCA9IHNvdXJjZVtpbmRleCsrXTsKLSAgICAgICAgICAgICAgICBpZiAoIWNoIHx8ICFpc0xp
bmVUZXJtaW5hdG9yKGNoLmNoYXJDb2RlQXQoMCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN3
aXRjaCAoY2gpIHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAnbic6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBzdHIgKz0gJ1xuJzsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgICAgICBjYXNlICdyJzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0
ciArPSAnXHInOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgICAgIGNhc2UgJ3QnOgotICAgICAgICAgICAgICAgICAgICAgICAgc3RyICs9ICdcdCc7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAn
dSc6Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3gnOgotICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKHNvdXJjZVtpbmRleF0gPT09ICd7JykgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICsraW5kZXg7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyICs9IHNjYW5Vbmlj
b2RlQ29kZVBvaW50RXNjYXBlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RvcmUgPSBpbmRleDsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bmVzY2FwZWQgPSBzY2FuSGV4RXNjYXBlKGNoKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAodW5lc2NhcGVkKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0ciArPSB1bmVzY2FwZWQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXggPSByZXN0
b3JlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz0gY2g7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2InOgot
ICAgICAgICAgICAgICAgICAgICAgICAgc3RyICs9ICdcYic7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAnZic6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBzdHIgKz0gJ1xmJzsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgICAgICBjYXNlICd2JzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0
ciArPSAnXHgwQic7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAg
ICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzT2N0YWxE
aWdpdChjaCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlID0gJzAxMjM0NTY3
Jy5pbmRleE9mKGNoKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFwwIGlzIG5v
dCBvY3RhbCBlc2NhcGUgc2VxdWVuY2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
Y29kZSAhPT0gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvY3RhbCA9IHRy
dWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGluZGV4IDwgbGVuZ3RoICYmIGlzT2N0YWxEaWdpdChzb3VyY2VbaW5kZXhd
KSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvY3RhbCA9IHRydWU7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUgPSBjb2RlICogOCArICcwMTIzNDU2Nycu
aW5kZXhPZihzb3VyY2VbaW5kZXgrK10pOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIDMgZGlnaXRzIGFyZSBvbmx5IGFsbG93ZWQgd2hlbiBzdHJpbmcgc3RhcnRzCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpdGggMCwgMSwgMiwgMwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoJzAxMjMnLmluZGV4T2YoY2gpID49IDAgJiYKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCA8IGxlbmd0aCAmJgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzT2N0YWxEaWdpdChzb3Vy
Y2VbaW5kZXhdKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZSA9
IGNvZGUgKiA4ICsgJzAxMjM0NTY3Jy5pbmRleE9mKHNvdXJjZVtpbmRleCsrXSk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyICs9IFN0cmluZy5mcm9tQ2hhckNvZGUo
Y29kZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0ciArPSBjaDsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgKytsaW5lTnVtYmVyOwotICAg
ICAgICAgICAgICAgICAgICBpZiAoY2ggPT09ICAnXHInICYmIHNvdXJjZVtpbmRleF0gPT09ICdc
bicpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICsraW5kZXg7Ci0gICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGlzTGluZVRl
cm1pbmF0b3IoY2guY2hhckNvZGVBdCgwKSkpIHsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgc3RyICs9IGNoOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHF1b3RlICE9PSAnJykgewotICAgICAgICAg
ICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuVW5leHBlY3RlZFRva2VuLCAnSUxMRUdBTCcpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgIHR5cGU6IFRva2VuLlN0
cmluZ0xpdGVyYWwsCi0gICAgICAgICAgICB2YWx1ZTogc3RyLAotICAgICAgICAgICAgb2N0YWw6
IG9jdGFsLAotICAgICAgICAgICAgbGluZU51bWJlcjogbGluZU51bWJlciwKLSAgICAgICAgICAg
IGxpbmVTdGFydDogbGluZVN0YXJ0LAotICAgICAgICAgICAgcmFuZ2U6IFtzdGFydCwgaW5kZXhd
Ci0gICAgICAgIH07Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gc2NhblRlbXBsYXRlKCkgewotICAg
ICAgICB2YXIgY29va2VkID0gJycsIGNoLCBzdGFydCwgdGVybWluYXRlZCwgdGFpbCwgcmVzdG9y
ZSwgdW5lc2NhcGVkLCBjb2RlLCBvY3RhbDsKLQotICAgICAgICB0ZXJtaW5hdGVkID0gZmFsc2U7
Ci0gICAgICAgIHRhaWwgPSBmYWxzZTsKLSAgICAgICAgc3RhcnQgPSBpbmRleDsKLQotICAgICAg
ICArK2luZGV4OwotCi0gICAgICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkgewotICAgICAgICAg
ICAgY2ggPSBzb3VyY2VbaW5kZXgrK107Ci0gICAgICAgICAgICBpZiAoY2ggPT09ICdgJykgewot
ICAgICAgICAgICAgICAgIHRhaWwgPSB0cnVlOwotICAgICAgICAgICAgICAgIHRlcm1pbmF0ZWQg
PSB0cnVlOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfSBlbHNlIGlmIChj
aCA9PT0gJyQnKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHNvdXJjZVtpbmRleF0gPT09ICd7Jykg
ewotICAgICAgICAgICAgICAgICAgICArK2luZGV4OwotICAgICAgICAgICAgICAgICAgICB0ZXJt
aW5hdGVkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIGNvb2tlZCArPSBjaDsKLSAgICAgICAgICAgIH0gZWxzZSBp
ZiAoY2ggPT09ICdcXCcpIHsKLSAgICAgICAgICAgICAgICBjaCA9IHNvdXJjZVtpbmRleCsrXTsK
LSAgICAgICAgICAgICAgICBpZiAoIWlzTGluZVRlcm1pbmF0b3IoY2guY2hhckNvZGVBdCgwKSkp
IHsKLSAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChjaCkgewotICAgICAgICAgICAgICAgICAg
ICBjYXNlICduJzoKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvb2tlZCArPSAnXG4nOwotICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3In
OgotICAgICAgICAgICAgICAgICAgICAgICAgY29va2VkICs9ICdccic7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAndCc6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBjb29rZWQgKz0gJ1x0JzsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlICd1JzoKLSAgICAgICAgICAgICAgICAg
ICAgY2FzZSAneCc6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc291cmNlW2luZGV4XSA9
PT0gJ3snKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKytpbmRleDsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb29rZWQgKz0gc2NhblVuaWNvZGVDb2RlUG9pbnRFc2NhcGUo
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzdG9yZSA9IGluZGV4OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
ZXNjYXBlZCA9IHNjYW5IZXhFc2NhcGUoY2gpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmICh1bmVzY2FwZWQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29va2Vk
ICs9IHVuZXNjYXBlZDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCA9IHJlc3RvcmU7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvb2tlZCArPSBjaDsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAnYic6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBjb29rZWQgKz0gJ1xiJzsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgICAgICBjYXNlICdmJzoKLSAgICAgICAgICAgICAgICAgICAgICAg
IGNvb2tlZCArPSAnXGYnOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgICAgIGNhc2UgJ3YnOgotICAgICAgICAgICAgICAgICAgICAgICAgY29va2VkICs9
ICdcdic7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzT2N0YWxEaWdpdChj
aCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlID0gJzAxMjM0NTY3Jy5pbmRl
eE9mKGNoKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFwwIGlzIG5vdCBvY3Rh
bCBlc2NhcGUgc2VxdWVuY2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29kZSAh
PT0gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvY3RhbCA9IHRydWU7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGluZGV4IDwgbGVuZ3RoICYmIGlzT2N0YWxEaWdpdChzb3VyY2VbaW5kZXhdKSkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvY3RhbCA9IHRydWU7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvZGUgPSBjb2RlICogOCArICcwMTIzNDU2NycuaW5kZXhP
Zihzb3VyY2VbaW5kZXgrK10pOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IDMgZGlnaXRzIGFyZSBvbmx5IGFsbG93ZWQgd2hlbiBzdHJpbmcgc3RhcnRzCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIHdpdGggMCwgMSwgMiwgMwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoJzAxMjMnLmluZGV4T2YoY2gpID49IDAgJiYKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCA8IGxlbmd0aCAmJgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzT2N0YWxEaWdpdChzb3VyY2VbaW5k
ZXhdKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZSA9IGNvZGUg
KiA4ICsgJzAxMjM0NTY3Jy5pbmRleE9mKHNvdXJjZVtpbmRleCsrXSk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29va2VkICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoY29k
ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvb2tlZCArPSBjaDsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgKytsaW5lTnVtYmVyOwotICAg
ICAgICAgICAgICAgICAgICBpZiAoY2ggPT09ICAnXHInICYmIHNvdXJjZVtpbmRleF0gPT09ICdc
bicpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICsraW5kZXg7Ci0gICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGlzTGluZVRl
cm1pbmF0b3IoY2guY2hhckNvZGVBdCgwKSkpIHsKLSAgICAgICAgICAgICAgICArK2xpbmVOdW1i
ZXI7Ci0gICAgICAgICAgICAgICAgaWYgKGNoID09PSAgJ1xyJyAmJiBzb3VyY2VbaW5kZXhdID09
PSAnXG4nKSB7Ci0gICAgICAgICAgICAgICAgICAgICsraW5kZXg7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBjb29rZWQgKz0gY2g7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIXRlcm1pbmF0ZWQpIHsKLSAg
ICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLlVuZXhwZWN0ZWRUb2tlbiwgJ0lMTEVH
QUwnKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICB0eXBlOiBU
b2tlbi5UZW1wbGF0ZSwKLSAgICAgICAgICAgIHZhbHVlOiB7Ci0gICAgICAgICAgICAgICAgY29v
a2VkOiBjb29rZWQsCi0gICAgICAgICAgICAgICAgcmF3OiBzb3VyY2Uuc2xpY2Uoc3RhcnQgKyAx
LCBpbmRleCAtICgodGFpbCkgPyAxIDogMikpCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAg
dGFpbDogdGFpbCwKLSAgICAgICAgICAgIG9jdGFsOiBvY3RhbCwKLSAgICAgICAgICAgIGxpbmVO
dW1iZXI6IGxpbmVOdW1iZXIsCi0gICAgICAgICAgICBsaW5lU3RhcnQ6IGxpbmVTdGFydCwKLSAg
ICAgICAgICAgIHJhbmdlOiBbc3RhcnQsIGluZGV4XQotICAgICAgICB9OwotICAgIH0KLQotICAg
IGZ1bmN0aW9uIHNjYW5UZW1wbGF0ZUVsZW1lbnQob3B0aW9uKSB7Ci0gICAgICAgIHZhciBzdGFy
dHNXaXRoLCB0ZW1wbGF0ZTsKLQotICAgICAgICBsb29rYWhlYWQgPSBudWxsOwotICAgICAgICBz
a2lwQ29tbWVudCgpOwotCi0gICAgICAgIHN0YXJ0c1dpdGggPSAob3B0aW9uLmhlYWQpID8gJ2An
IDogJ30nOwotCi0gICAgICAgIGlmIChzb3VyY2VbaW5kZXhdICE9PSBzdGFydHNXaXRoKSB7Ci0g
ICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5VbmV4cGVjdGVkVG9rZW4sICdJTExF
R0FMJyk7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA9IHNjYW5UZW1wbGF0ZSgpOwot
Ci0gICAgICAgIHBlZWsoKTsKLQotICAgICAgICByZXR1cm4gdGVtcGxhdGU7Ci0gICAgfQotCi0g
ICAgZnVuY3Rpb24gc2NhblJlZ0V4cCgpIHsKLSAgICAgICAgdmFyIHN0ciwgY2gsIHN0YXJ0LCBw
YXR0ZXJuLCBmbGFncywgdmFsdWUsIGNsYXNzTWFya2VyID0gZmFsc2UsIHJlc3RvcmUsIHRlcm1p
bmF0ZWQgPSBmYWxzZTsKLQotICAgICAgICBsb29rYWhlYWQgPSBudWxsOwotICAgICAgICBza2lw
Q29tbWVudCgpOwotCi0gICAgICAgIHN0YXJ0ID0gaW5kZXg7Ci0gICAgICAgIGNoID0gc291cmNl
W2luZGV4XTsKLSAgICAgICAgYXNzZXJ0KGNoID09PSAnLycsICdSZWd1bGFyIGV4cHJlc3Npb24g
bGl0ZXJhbCBtdXN0IHN0YXJ0IHdpdGggYSBzbGFzaCcpOwotICAgICAgICBzdHIgPSBzb3VyY2Vb
aW5kZXgrK107Ci0KLSAgICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7Ci0gICAgICAgICAg
ICBjaCA9IHNvdXJjZVtpbmRleCsrXTsKLSAgICAgICAgICAgIHN0ciArPSBjaDsKLSAgICAgICAg
ICAgIGlmIChjbGFzc01hcmtlcikgewotICAgICAgICAgICAgICAgIGlmIChjaCA9PT0gJ10nKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGNsYXNzTWFya2VyID0gZmFsc2U7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAoY2ggPT09ICdc
XCcpIHsKLSAgICAgICAgICAgICAgICAgICAgY2ggPSBzb3VyY2VbaW5kZXgrK107Ci0gICAgICAg
ICAgICAgICAgICAgIC8vIEVDTUEtMjYyIDcuOC41Ci0gICAgICAgICAgICAgICAgICAgIGlmIChp
c0xpbmVUZXJtaW5hdG9yKGNoLmNoYXJDb2RlQXQoMCkpKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5VbnRlcm1pbmF0ZWRSZWdFeHApOwotICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHN0ciArPSBjaDsKLSAgICAgICAg
ICAgICAgICB9IGVsc2UgaWYgKGNoID09PSAnLycpIHsKLSAgICAgICAgICAgICAgICAgICAgdGVy
bWluYXRlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgIH0gZWxzZSBpZiAoY2ggPT09ICdbJykgewotICAgICAgICAgICAgICAgICAgICBjbGFzc01h
cmtlciA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpc0xpbmVUZXJtaW5hdG9y
KGNoLmNoYXJDb2RlQXQoMCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3Ioe30s
IE1lc3NhZ2VzLlVudGVybWluYXRlZFJlZ0V4cCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCF0ZXJtaW5hdGVkKSB7Ci0gICAgICAg
ICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5VbnRlcm1pbmF0ZWRSZWdFeHApOwotICAgICAg
ICB9Ci0KLSAgICAgICAgLy8gRXhjbHVkZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBzbGFzaC4KLSAg
ICAgICAgcGF0dGVybiA9IHN0ci5zdWJzdHIoMSwgc3RyLmxlbmd0aCAtIDIpOwotCi0gICAgICAg
IGZsYWdzID0gJyc7Ci0gICAgICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkgewotICAgICAgICAg
ICAgY2ggPSBzb3VyY2VbaW5kZXhdOwotICAgICAgICAgICAgaWYgKCFpc0lkZW50aWZpZXJQYXJ0
KGNoLmNoYXJDb2RlQXQoMCkpKSB7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgICsraW5kZXg7Ci0gICAgICAgICAgICBpZiAoY2ggPT09ICdcXCcg
JiYgaW5kZXggPCBsZW5ndGgpIHsKLSAgICAgICAgICAgICAgICBjaCA9IHNvdXJjZVtpbmRleF07
Ci0gICAgICAgICAgICAgICAgaWYgKGNoID09PSAndScpIHsKLSAgICAgICAgICAgICAgICAgICAg
KytpbmRleDsKLSAgICAgICAgICAgICAgICAgICAgcmVzdG9yZSA9IGluZGV4OwotICAgICAgICAg
ICAgICAgICAgICBjaCA9IHNjYW5IZXhFc2NhcGUoJ3UnKTsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKGNoKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmbGFncyArPSBjaDsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGZvciAoc3RyICs9ICdcXHUnOyByZXN0b3JlIDwgaW5kZXg7ICsrcmVz
dG9yZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ciArPSBzb3VyY2VbcmVzdG9y
ZV07Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbmRleCA9IHJlc3RvcmU7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBmbGFncyArPSAndSc7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdHIg
Kz0gJ1xcdSc7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgICAgICBzdHIgKz0gJ1xcJzsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGZsYWdzICs9IGNoOwotICAgICAg
ICAgICAgICAgIHN0ciArPSBjaDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAg
IHRyeSB7Ci0gICAgICAgICAgICB2YWx1ZSA9IG5ldyBSZWdFeHAocGF0dGVybiwgZmxhZ3MpOwot
ICAgICAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdl
cy5JbnZhbGlkUmVnRXhwKTsKLSAgICAgICAgfQotCi0gICAgICAgIHBlZWsoKTsKLQotCi0gICAg
ICAgIGlmIChleHRyYS50b2tlbml6ZSkgewotICAgICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAg
ICAgICAgICB0eXBlOiBUb2tlbi5SZWd1bGFyRXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICB2
YWx1ZTogdmFsdWUsCi0gICAgICAgICAgICAgICAgbGluZU51bWJlcjogbGluZU51bWJlciwKLSAg
ICAgICAgICAgICAgICBsaW5lU3RhcnQ6IGxpbmVTdGFydCwKLSAgICAgICAgICAgICAgICByYW5n
ZTogW3N0YXJ0LCBpbmRleF0KLSAgICAgICAgICAgIH07Ci0gICAgICAgIH0KLSAgICAgICAgcmV0
dXJuIHsKLSAgICAgICAgICAgIGxpdGVyYWw6IHN0ciwKLSAgICAgICAgICAgIHZhbHVlOiB2YWx1
ZSwKLSAgICAgICAgICAgIHJhbmdlOiBbc3RhcnQsIGluZGV4XQotICAgICAgICB9OwotICAgIH0K
LQotICAgIGZ1bmN0aW9uIGlzSWRlbnRpZmllck5hbWUodG9rZW4pIHsKLSAgICAgICAgcmV0dXJu
IHRva2VuLnR5cGUgPT09IFRva2VuLklkZW50aWZpZXIgfHwKLSAgICAgICAgICAgIHRva2VuLnR5
cGUgPT09IFRva2VuLktleXdvcmQgfHwKLSAgICAgICAgICAgIHRva2VuLnR5cGUgPT09IFRva2Vu
LkJvb2xlYW5MaXRlcmFsIHx8Ci0gICAgICAgICAgICB0b2tlbi50eXBlID09PSBUb2tlbi5OdWxs
TGl0ZXJhbDsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBhZHZhbmNlU2xhc2goKSB7Ci0gICAgICAg
IHZhciBwcmV2VG9rZW4sCi0gICAgICAgICAgICBjaGVja1Rva2VuOwotICAgICAgICAvLyBVc2lu
ZyB0aGUgZm9sbG93aW5nIGFsZ29yaXRobToKLSAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29t
L21vemlsbGEvc3dlZXQuanMvd2lraS9kZXNpZ24KLSAgICAgICAgcHJldlRva2VuID0gZXh0cmEu
dG9rZW5zW2V4dHJhLnRva2Vucy5sZW5ndGggLSAxXTsKLSAgICAgICAgaWYgKCFwcmV2VG9rZW4p
IHsKLSAgICAgICAgICAgIC8vIE5vdGhpbmcgYmVmb3JlIHRoYXQ6IGl0IGNhbm5vdCBiZSBhIGRp
dmlzaW9uLgotICAgICAgICAgICAgcmV0dXJuIHNjYW5SZWdFeHAoKTsKLSAgICAgICAgfQotICAg
ICAgICBpZiAocHJldlRva2VuLnR5cGUgPT09ICJQdW5jdHVhdG9yIikgewotICAgICAgICAgICAg
aWYgKHByZXZUb2tlbi52YWx1ZSA9PT0gIikiKSB7Ci0gICAgICAgICAgICAgICAgY2hlY2tUb2tl
biA9IGV4dHJhLnRva2Vuc1tleHRyYS5vcGVuUGFyZW5Ub2tlbiAtIDFdOwotICAgICAgICAgICAg
ICAgIGlmIChjaGVja1Rva2VuICYmCi0gICAgICAgICAgICAgICAgICAgICAgICBjaGVja1Rva2Vu
LnR5cGUgPT09ICJLZXl3b3JkIiAmJgotICAgICAgICAgICAgICAgICAgICAgICAgKGNoZWNrVG9r
ZW4udmFsdWUgPT09ICJpZiIgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja1Rva2Vu
LnZhbHVlID09PSAid2hpbGUiIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tUb2tl
bi52YWx1ZSA9PT0gImZvciIgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja1Rva2Vu
LnZhbHVlID09PSAid2l0aCIpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzY2FuUmVn
RXhwKCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiBzY2FuUHVu
Y3R1YXRvcigpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHByZXZUb2tlbi52YWx1
ZSA9PT0gIn0iKSB7Ci0gICAgICAgICAgICAgICAgLy8gRGl2aWRpbmcgYSBmdW5jdGlvbiBieSBh
bnl0aGluZyBtYWtlcyBsaXR0bGUgc2Vuc2UsCi0gICAgICAgICAgICAgICAgLy8gYnV0IHdlIGhh
dmUgdG8gY2hlY2sgZm9yIHRoYXQuCi0gICAgICAgICAgICAgICAgaWYgKGV4dHJhLnRva2Vuc1tl
eHRyYS5vcGVuQ3VybHlUb2tlbiAtIDNdICYmCi0gICAgICAgICAgICAgICAgICAgICAgICBleHRy
YS50b2tlbnNbZXh0cmEub3BlbkN1cmx5VG9rZW4gLSAzXS50eXBlID09PSAiS2V5d29yZCIpIHsK
LSAgICAgICAgICAgICAgICAgICAgLy8gQW5vbnltb3VzIGZ1bmN0aW9uLgotICAgICAgICAgICAg
ICAgICAgICBjaGVja1Rva2VuID0gZXh0cmEudG9rZW5zW2V4dHJhLm9wZW5DdXJseVRva2VuIC0g
NF07Ci0gICAgICAgICAgICAgICAgICAgIGlmICghY2hlY2tUb2tlbikgewotICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHNjYW5QdW5jdHVhdG9yKCk7Ci0gICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGV4dHJhLnRva2Vuc1tleHRyYS5vcGVuQ3Vy
bHlUb2tlbiAtIDRdICYmCi0gICAgICAgICAgICAgICAgICAgICAgICBleHRyYS50b2tlbnNbZXh0
cmEub3BlbkN1cmx5VG9rZW4gLSA0XS50eXBlID09PSAiS2V5d29yZCIpIHsKLSAgICAgICAgICAg
ICAgICAgICAgLy8gTmFtZWQgZnVuY3Rpb24uCi0gICAgICAgICAgICAgICAgICAgIGNoZWNrVG9r
ZW4gPSBleHRyYS50b2tlbnNbZXh0cmEub3BlbkN1cmx5VG9rZW4gLSA1XTsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKCFjaGVja1Rva2VuKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gc2NhblJlZ0V4cCgpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNjYW5QdW5jdHVhdG9yKCk7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIC8vIGNoZWNrVG9rZW4gZGV0ZXJtaW5l
cyB3aGV0aGVyIHRoZSBmdW5jdGlvbiBpcwotICAgICAgICAgICAgICAgIC8vIGEgZGVjbGFyYXRp
b24gb3IgYW4gZXhwcmVzc2lvbi4KLSAgICAgICAgICAgICAgICBpZiAoRm5FeHByVG9rZW5zLmlu
ZGV4T2YoY2hlY2tUb2tlbi52YWx1ZSkgPj0gMCkgewotICAgICAgICAgICAgICAgICAgICAvLyBJ
dCBpcyBhbiBleHByZXNzaW9uLgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2NhblB1bmN0
dWF0b3IoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgLy8gSXQgaXMgYSBk
ZWNsYXJhdGlvbi4KLSAgICAgICAgICAgICAgICByZXR1cm4gc2NhblJlZ0V4cCgpOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHNjYW5SZWdFeHAoKTsKLSAgICAgICAgfQotICAg
ICAgICBpZiAocHJldlRva2VuLnR5cGUgPT09ICJLZXl3b3JkIikgewotICAgICAgICAgICAgcmV0
dXJuIHNjYW5SZWdFeHAoKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gc2NhblB1bmN0dWF0
b3IoKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBhZHZhbmNlKCkgewotICAgICAgICB2YXIgY2g7
Ci0KLSAgICAgICAgaWYgKHN0YXRlLmluWEpTQ2hpbGQpIHsKLSAgICAgICAgICAgIHJldHVybiBh
ZHZhbmNlWEpTQ2hpbGQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHNraXBDb21tZW50KCk7Ci0K
LSAgICAgICAgaWYgKGluZGV4ID49IGxlbmd0aCkgewotICAgICAgICAgICAgcmV0dXJuIHsKLSAg
ICAgICAgICAgICAgICB0eXBlOiBUb2tlbi5FT0YsCi0gICAgICAgICAgICAgICAgbGluZU51bWJl
cjogbGluZU51bWJlciwKLSAgICAgICAgICAgICAgICBsaW5lU3RhcnQ6IGxpbmVTdGFydCwKLSAg
ICAgICAgICAgICAgICByYW5nZTogW2luZGV4LCBpbmRleF0KLSAgICAgICAgICAgIH07Ci0gICAg
ICAgIH0KLQotICAgICAgICBjaCA9IHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4KTsKLQotICAgICAg
ICAvLyBWZXJ5IGNvbW1vbjogKCBhbmQgKSBhbmQgOwotICAgICAgICBpZiAoY2ggPT09IDQwIHx8
IGNoID09PSA0MSB8fCBjaCA9PT0gNTgpIHsKLSAgICAgICAgICAgIHJldHVybiBzY2FuUHVuY3R1
YXRvcigpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gU3RyaW5nIGxpdGVyYWwgc3RhcnRzIHdp
dGggc2luZ2xlIHF1b3RlICgjMzkpIG9yIGRvdWJsZSBxdW90ZSAoIzM0KS4KLSAgICAgICAgaWYg
KGNoID09PSAzOSB8fCBjaCA9PT0gMzQpIHsKLSAgICAgICAgICAgIGlmIChzdGF0ZS5pblhKU1Rh
ZykgewotICAgICAgICAgICAgICAgIHJldHVybiBzY2FuWEpTU3RyaW5nTGl0ZXJhbCgpOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHNjYW5TdHJpbmdMaXRlcmFsKCk7Ci0gICAg
ICAgIH0KLQotICAgICAgICBpZiAoc3RhdGUuaW5YSlNUYWcgJiYgaXNYSlNJZGVudGlmaWVyU3Rh
cnQoY2gpKSB7Ci0gICAgICAgICAgICByZXR1cm4gc2NhblhKU0lkZW50aWZpZXIoKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIGlmIChjaCA9PT0gOTYpIHsKLSAgICAgICAgICAgIHJldHVybiBzY2Fu
VGVtcGxhdGUoKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoaXNJZGVudGlmaWVyU3RhcnQoY2gp
KSB7Ci0gICAgICAgICAgICByZXR1cm4gc2NhbklkZW50aWZpZXIoKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIC8vIERvdCAoLikgY2hhciAjNDYgY2FuIGFsc28gc3RhcnQgYSBmbG9hdGluZy1wb2lu
dCBudW1iZXIsIGhlbmNlIHRoZSBuZWVkCi0gICAgICAgIC8vIHRvIGNoZWNrIHRoZSBuZXh0IGNo
YXJhY3Rlci4KLSAgICAgICAgaWYgKGNoID09PSA0NikgewotICAgICAgICAgICAgaWYgKGlzRGVj
aW1hbERpZ2l0KHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4ICsgMSkpKSB7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIHNjYW5OdW1lcmljTGl0ZXJhbCgpOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgcmV0dXJuIHNjYW5QdW5jdHVhdG9yKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoaXNE
ZWNpbWFsRGlnaXQoY2gpKSB7Ci0gICAgICAgICAgICByZXR1cm4gc2Nhbk51bWVyaWNMaXRlcmFs
KCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBTbGFzaCAoLykgY2hhciAjNDcgY2FuIGFsc28g
c3RhcnQgYSByZWdleC4KLSAgICAgICAgaWYgKGV4dHJhLnRva2VuaXplICYmIGNoID09PSA0Nykg
ewotICAgICAgICAgICAgcmV0dXJuIGFkdmFuY2VTbGFzaCgpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgcmV0dXJuIHNjYW5QdW5jdHVhdG9yKCk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gbGV4KCkg
ewotICAgICAgICB2YXIgdG9rZW47Ci0KLSAgICAgICAgdG9rZW4gPSBsb29rYWhlYWQ7Ci0gICAg
ICAgIGluZGV4ID0gdG9rZW4ucmFuZ2VbMV07Ci0gICAgICAgIGxpbmVOdW1iZXIgPSB0b2tlbi5s
aW5lTnVtYmVyOwotICAgICAgICBsaW5lU3RhcnQgPSB0b2tlbi5saW5lU3RhcnQ7Ci0KLSAgICAg
ICAgbG9va2FoZWFkID0gYWR2YW5jZSgpOwotCi0gICAgICAgIGluZGV4ID0gdG9rZW4ucmFuZ2Vb
MV07Ci0gICAgICAgIGxpbmVOdW1iZXIgPSB0b2tlbi5saW5lTnVtYmVyOwotICAgICAgICBsaW5l
U3RhcnQgPSB0b2tlbi5saW5lU3RhcnQ7Ci0KLSAgICAgICAgcmV0dXJuIHRva2VuOwotICAgIH0K
LQotICAgIGZ1bmN0aW9uIHBlZWsoKSB7Ci0gICAgICAgIHZhciBwb3MsIGxpbmUsIHN0YXJ0Owot
Ci0gICAgICAgIHBvcyA9IGluZGV4OwotICAgICAgICBsaW5lID0gbGluZU51bWJlcjsKLSAgICAg
ICAgc3RhcnQgPSBsaW5lU3RhcnQ7Ci0gICAgICAgIGxvb2thaGVhZCA9IGFkdmFuY2UoKTsKLSAg
ICAgICAgaW5kZXggPSBwb3M7Ci0gICAgICAgIGxpbmVOdW1iZXIgPSBsaW5lOwotICAgICAgICBs
aW5lU3RhcnQgPSBzdGFydDsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBsb29rYWhlYWQyKCkgewot
ICAgICAgICB2YXIgYWR2LCBwb3MsIGxpbmUsIHN0YXJ0LCByZXN1bHQ7Ci0KLSAgICAgICAgLy8g
SWYgd2UgYXJlIGNvbGxlY3RpbmcgdGhlIHRva2VucywgZG9uJ3QgZ3JhYiB0aGUgbmV4dCBvbmUg
eWV0LgotICAgICAgICBhZHYgPSAodHlwZW9mIGV4dHJhLmFkdmFuY2UgPT09ICdmdW5jdGlvbicp
ID8gZXh0cmEuYWR2YW5jZSA6IGFkdmFuY2U7Ci0KLSAgICAgICAgcG9zID0gaW5kZXg7Ci0gICAg
ICAgIGxpbmUgPSBsaW5lTnVtYmVyOwotICAgICAgICBzdGFydCA9IGxpbmVTdGFydDsKLQotICAg
ICAgICAvLyBTY2FuIGZvciB0aGUgbmV4dCBpbW1lZGlhdGUgdG9rZW4uCi0gICAgICAgIGlmIChs
b29rYWhlYWQgPT09IG51bGwpIHsKLSAgICAgICAgICAgIGxvb2thaGVhZCA9IGFkdigpOwotICAg
ICAgICB9Ci0gICAgICAgIGluZGV4ID0gbG9va2FoZWFkLnJhbmdlWzFdOwotICAgICAgICBsaW5l
TnVtYmVyID0gbG9va2FoZWFkLmxpbmVOdW1iZXI7Ci0gICAgICAgIGxpbmVTdGFydCA9IGxvb2th
aGVhZC5saW5lU3RhcnQ7Ci0KLSAgICAgICAgLy8gR3JhYiB0aGUgdG9rZW4gcmlnaHQgYWZ0ZXIu
Ci0gICAgICAgIHJlc3VsdCA9IGFkdigpOwotICAgICAgICBpbmRleCA9IHBvczsKLSAgICAgICAg
bGluZU51bWJlciA9IGxpbmU7Ci0gICAgICAgIGxpbmVTdGFydCA9IHN0YXJ0OwotCi0gICAgICAg
IHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi0gICAgU3ludGF4VHJlZURlbGVnYXRlID0gewotCi0g
ICAgICAgIG5hbWU6ICdTeW50YXhUcmVlJywKLQotICAgICAgICBwb3N0UHJvY2VzczogZnVuY3Rp
b24gKG5vZGUpIHsKLSAgICAgICAgICAgIHJldHVybiBub2RlOwotICAgICAgICB9LAotCi0gICAg
ICAgIGNyZWF0ZUFycmF5RXhwcmVzc2lvbjogZnVuY3Rpb24gKGVsZW1lbnRzKSB7Ci0gICAgICAg
ICAgICByZXR1cm4gewotICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5BcnJheUV4cHJlc3Np
b24sCi0gICAgICAgICAgICAgICAgZWxlbWVudHM6IGVsZW1lbnRzCi0gICAgICAgICAgICB9Owot
ICAgICAgICB9LAotCi0gICAgICAgIGNyZWF0ZUFzc2lnbm1lbnRFeHByZXNzaW9uOiBmdW5jdGlv
biAob3BlcmF0b3IsIGxlZnQsIHJpZ2h0KSB7Ci0gICAgICAgICAgICByZXR1cm4gewotICAgICAg
ICAgICAgICAgIHR5cGU6IFN5bnRheC5Bc3NpZ25tZW50RXhwcmVzc2lvbiwKLSAgICAgICAgICAg
ICAgICBvcGVyYXRvcjogb3BlcmF0b3IsCi0gICAgICAgICAgICAgICAgbGVmdDogbGVmdCwKLSAg
ICAgICAgICAgICAgICByaWdodDogcmlnaHQKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH0sCi0K
LSAgICAgICAgY3JlYXRlQmluYXJ5RXhwcmVzc2lvbjogZnVuY3Rpb24gKG9wZXJhdG9yLCBsZWZ0
LCByaWdodCkgewotICAgICAgICAgICAgdmFyIHR5cGUgPSAob3BlcmF0b3IgPT09ICd8fCcgfHwg
b3BlcmF0b3IgPT09ICcmJicpID8gU3ludGF4LkxvZ2ljYWxFeHByZXNzaW9uIDoKLSAgICAgICAg
ICAgICAgICAgICAgICAgIFN5bnRheC5CaW5hcnlFeHByZXNzaW9uOwotICAgICAgICAgICAgcmV0
dXJuIHsKLSAgICAgICAgICAgICAgICB0eXBlOiB0eXBlLAotICAgICAgICAgICAgICAgIG9wZXJh
dG9yOiBvcGVyYXRvciwKLSAgICAgICAgICAgICAgICBsZWZ0OiBsZWZ0LAotICAgICAgICAgICAg
ICAgIHJpZ2h0OiByaWdodAotICAgICAgICAgICAgfTsKLSAgICAgICAgfSwKLQotICAgICAgICBj
cmVhdGVCbG9ja1N0YXRlbWVudDogZnVuY3Rpb24gKGJvZHkpIHsKLSAgICAgICAgICAgIHJldHVy
biB7Ci0gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LkJsb2NrU3RhdGVtZW50LAotICAgICAg
ICAgICAgICAgIGJvZHk6IGJvZHkKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH0sCi0KLSAgICAg
ICAgY3JlYXRlQnJlYWtTdGF0ZW1lbnQ6IGZ1bmN0aW9uIChsYWJlbCkgewotICAgICAgICAgICAg
cmV0dXJuIHsKLSAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguQnJlYWtTdGF0ZW1lbnQsCi0g
ICAgICAgICAgICAgICAgbGFiZWw6IGxhYmVsCi0gICAgICAgICAgICB9OwotICAgICAgICB9LAot
Ci0gICAgICAgIGNyZWF0ZUNhbGxFeHByZXNzaW9uOiBmdW5jdGlvbiAoY2FsbGVlLCBhcmdzKSB7
Ci0gICAgICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5DYWxs
RXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICBjYWxsZWU6IGNhbGxlZSwKLSAgICAgICAgICAg
ICAgICAnYXJndW1lbnRzJzogYXJncwotICAgICAgICAgICAgfTsKLSAgICAgICAgfSwKLQotICAg
ICAgICBjcmVhdGVDYXRjaENsYXVzZTogZnVuY3Rpb24gKHBhcmFtLCBib2R5KSB7Ci0gICAgICAg
ICAgICByZXR1cm4gewotICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5DYXRjaENsYXVzZSwK
LSAgICAgICAgICAgICAgICBwYXJhbTogcGFyYW0sCi0gICAgICAgICAgICAgICAgYm9keTogYm9k
eQotICAgICAgICAgICAgfTsKLSAgICAgICAgfSwKLQotICAgICAgICBjcmVhdGVDb25kaXRpb25h
bEV4cHJlc3Npb246IGZ1bmN0aW9uICh0ZXN0LCBjb25zZXF1ZW50LCBhbHRlcm5hdGUpIHsKLSAg
ICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LkNvbmRpdGlv
bmFsRXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICB0ZXN0OiB0ZXN0LAotICAgICAgICAgICAg
ICAgIGNvbnNlcXVlbnQ6IGNvbnNlcXVlbnQsCi0gICAgICAgICAgICAgICAgYWx0ZXJuYXRlOiBh
bHRlcm5hdGUKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH0sCi0KLSAgICAgICAgY3JlYXRlQ29u
dGludWVTdGF0ZW1lbnQ6IGZ1bmN0aW9uIChsYWJlbCkgewotICAgICAgICAgICAgcmV0dXJuIHsK
LSAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguQ29udGludWVTdGF0ZW1lbnQsCi0gICAgICAg
ICAgICAgICAgbGFiZWw6IGxhYmVsCi0gICAgICAgICAgICB9OwotICAgICAgICB9LAotCi0gICAg
ICAgIGNyZWF0ZURlYnVnZ2VyU3RhdGVtZW50OiBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICBy
ZXR1cm4gewotICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5EZWJ1Z2dlclN0YXRlbWVudAot
ICAgICAgICAgICAgfTsKLSAgICAgICAgfSwKLQotICAgICAgICBjcmVhdGVEb1doaWxlU3RhdGVt
ZW50OiBmdW5jdGlvbiAoYm9keSwgdGVzdCkgewotICAgICAgICAgICAgcmV0dXJuIHsKLSAgICAg
ICAgICAgICAgICB0eXBlOiBTeW50YXguRG9XaGlsZVN0YXRlbWVudCwKLSAgICAgICAgICAgICAg
ICBib2R5OiBib2R5LAotICAgICAgICAgICAgICAgIHRlc3Q6IHRlc3QKLSAgICAgICAgICAgIH07
Ci0gICAgICAgIH0sCi0KLSAgICAgICAgY3JlYXRlRW1wdHlTdGF0ZW1lbnQ6IGZ1bmN0aW9uICgp
IHsKLSAgICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LkVt
cHR5U3RhdGVtZW50Ci0gICAgICAgICAgICB9OwotICAgICAgICB9LAotCi0gICAgICAgIGNyZWF0
ZUV4cHJlc3Npb25TdGF0ZW1lbnQ6IGZ1bmN0aW9uIChleHByZXNzaW9uKSB7Ci0gICAgICAgICAg
ICByZXR1cm4gewotICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5FeHByZXNzaW9uU3RhdGVt
ZW50LAotICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IGV4cHJlc3Npb24KLSAgICAgICAgICAg
IH07Ci0gICAgICAgIH0sCi0KLSAgICAgICAgY3JlYXRlRm9yU3RhdGVtZW50OiBmdW5jdGlvbiAo
aW5pdCwgdGVzdCwgdXBkYXRlLCBib2R5KSB7Ci0gICAgICAgICAgICByZXR1cm4gewotICAgICAg
ICAgICAgICAgIHR5cGU6IFN5bnRheC5Gb3JTdGF0ZW1lbnQsCi0gICAgICAgICAgICAgICAgaW5p
dDogaW5pdCwKLSAgICAgICAgICAgICAgICB0ZXN0OiB0ZXN0LAotICAgICAgICAgICAgICAgIHVw
ZGF0ZTogdXBkYXRlLAotICAgICAgICAgICAgICAgIGJvZHk6IGJvZHkKLSAgICAgICAgICAgIH07
Ci0gICAgICAgIH0sCi0KLSAgICAgICAgY3JlYXRlRm9ySW5TdGF0ZW1lbnQ6IGZ1bmN0aW9uIChs
ZWZ0LCByaWdodCwgYm9keSkgewotICAgICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgICAg
ICB0eXBlOiBTeW50YXguRm9ySW5TdGF0ZW1lbnQsCi0gICAgICAgICAgICAgICAgbGVmdDogbGVm
dCwKLSAgICAgICAgICAgICAgICByaWdodDogcmlnaHQsCi0gICAgICAgICAgICAgICAgYm9keTog
Ym9keSwKLSAgICAgICAgICAgICAgICBlYWNoOiBmYWxzZQotICAgICAgICAgICAgfTsKLSAgICAg
ICAgfSwKLQotICAgICAgICBjcmVhdGVGb3JPZlN0YXRlbWVudDogZnVuY3Rpb24gKGxlZnQsIHJp
Z2h0LCBib2R5KSB7Ci0gICAgICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgICAgIHR5cGU6
IFN5bnRheC5Gb3JPZlN0YXRlbWVudCwKLSAgICAgICAgICAgICAgICBsZWZ0OiBsZWZ0LAotICAg
ICAgICAgICAgICAgIHJpZ2h0OiByaWdodCwKLSAgICAgICAgICAgICAgICBib2R5OiBib2R5LAot
ICAgICAgICAgICAgfTsKLSAgICAgICAgfSwKLQotICAgICAgICBjcmVhdGVGdW5jdGlvbkRlY2xh
cmF0aW9uOiBmdW5jdGlvbiAoaWQsIHBhcmFtcywgZGVmYXVsdHMsIGJvZHksIHJlc3QsIGdlbmVy
YXRvciwgZXhwcmVzc2lvbikgewotICAgICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgICAg
ICB0eXBlOiBTeW50YXguRnVuY3Rpb25EZWNsYXJhdGlvbiwKLSAgICAgICAgICAgICAgICBpZDog
aWQsCi0gICAgICAgICAgICAgICAgcGFyYW1zOiBwYXJhbXMsCi0gICAgICAgICAgICAgICAgZGVm
YXVsdHM6IGRlZmF1bHRzLAotICAgICAgICAgICAgICAgIGJvZHk6IGJvZHksCi0gICAgICAgICAg
ICAgICAgcmVzdDogcmVzdCwKLSAgICAgICAgICAgICAgICBnZW5lcmF0b3I6IGdlbmVyYXRvciwK
LSAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBleHByZXNzaW9uCi0gICAgICAgICAgICB9Owot
ICAgICAgICB9LAotCi0gICAgICAgIGNyZWF0ZUZ1bmN0aW9uRXhwcmVzc2lvbjogZnVuY3Rpb24g
KGlkLCBwYXJhbXMsIGRlZmF1bHRzLCBib2R5LCByZXN0LCBnZW5lcmF0b3IsIGV4cHJlc3Npb24p
IHsKLSAgICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LkZ1
bmN0aW9uRXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICBpZDogaWQsCi0gICAgICAgICAgICAg
ICAgcGFyYW1zOiBwYXJhbXMsCi0gICAgICAgICAgICAgICAgZGVmYXVsdHM6IGRlZmF1bHRzLAot
ICAgICAgICAgICAgICAgIGJvZHk6IGJvZHksCi0gICAgICAgICAgICAgICAgcmVzdDogcmVzdCwK
LSAgICAgICAgICAgICAgICBnZW5lcmF0b3I6IGdlbmVyYXRvciwKLSAgICAgICAgICAgICAgICBl
eHByZXNzaW9uOiBleHByZXNzaW9uCi0gICAgICAgICAgICB9OwotICAgICAgICB9LAotCi0gICAg
ICAgIGNyZWF0ZUlkZW50aWZpZXI6IGZ1bmN0aW9uIChuYW1lKSB7Ci0gICAgICAgICAgICByZXR1
cm4gewotICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5JZGVudGlmaWVyLAotICAgICAgICAg
ICAgICAgIG5hbWU6IG5hbWUKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH0sCi0KLSAgICAgICAg
Y3JlYXRlWEpTQXR0cmlidXRlOiBmdW5jdGlvbiAobmFtZSwgdmFsdWUpIHsKLSAgICAgICAgICAg
IHJldHVybiB7Ci0gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LlhKU0F0dHJpYnV0ZSwKLSAg
ICAgICAgICAgICAgICBuYW1lOiBuYW1lLAotICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZQot
ICAgICAgICAgICAgfTsKLSAgICAgICAgfSwKLQotICAgICAgICBjcmVhdGVYSlNJZGVudGlmaWVy
OiBmdW5jdGlvbiAobmFtZSwgbmFtZXNwYWNlKSB7Ci0gICAgICAgICAgICByZXR1cm4gewotICAg
ICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5YSlNJZGVudGlmaWVyLAotICAgICAgICAgICAgICAg
IG5hbWU6IG5hbWUsCi0gICAgICAgICAgICAgICAgbmFtZXNwYWNlOiBuYW1lc3BhY2UKLSAgICAg
ICAgICAgIH07Ci0gICAgICAgIH0sCi0KLSAgICAgICAgY3JlYXRlWEpTRWxlbWVudDogZnVuY3Rp
b24gKG9wZW5pbmdFbGVtZW50LCBjbG9zaW5nRWxlbWVudCwgY2hpbGRyZW4pIHsKLSAgICAgICAg
ICAgIHJldHVybiB7Ci0gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LlhKU0VsZW1lbnQsCi0g
ICAgICAgICAgICAgICAgbmFtZTogb3BlbmluZ0VsZW1lbnQubmFtZSwKLSAgICAgICAgICAgICAg
ICBzZWxmQ2xvc2luZzogb3BlbmluZ0VsZW1lbnQuc2VsZkNsb3NpbmcsCi0gICAgICAgICAgICAg
ICAgb3BlbmluZ0VsZW1lbnQ6IG9wZW5pbmdFbGVtZW50LAotICAgICAgICAgICAgICAgIGNsb3Np
bmdFbGVtZW50OiBjbG9zaW5nRWxlbWVudCwKLSAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiBv
cGVuaW5nRWxlbWVudC5hdHRyaWJ1dGVzLAotICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBjaGls
ZHJlbgotICAgICAgICAgICAgfTsKLSAgICAgICAgfSwKLQotICAgICAgICBjcmVhdGVYSlNFbXB0
eUV4cHJlc3Npb246IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIHJldHVybiB7Ci0gICAgICAg
ICAgICAgICAgdHlwZTogU3ludGF4LlhKU0VtcHR5RXhwcmVzc2lvbgotICAgICAgICAgICAgfTsK
LSAgICAgICAgfSwKLQotICAgICAgICBjcmVhdGVYSlNFeHByZXNzaW9uQ29udGFpbmVyOiBmdW5j
dGlvbiAoZXhwcmVzc2lvbikgewotICAgICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgICAg
ICB0eXBlOiBTeW50YXguWEpTRXhwcmVzc2lvbkNvbnRhaW5lciwKLSAgICAgICAgICAgICAgICBl
eHByZXNzaW9uOiBleHByZXNzaW9uCi0gICAgICAgICAgICB9OwotICAgICAgICB9LAotCi0gICAg
ICAgIGNyZWF0ZVhKU09wZW5pbmdFbGVtZW50OiBmdW5jdGlvbiAobmFtZSwgYXR0cmlidXRlcywg
c2VsZkNsb3NpbmcpIHsKLSAgICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAgICAgdHlw
ZTogU3ludGF4LlhKU09wZW5pbmdFbGVtZW50LAotICAgICAgICAgICAgICAgIG5hbWU6IG5hbWUs
Ci0gICAgICAgICAgICAgICAgc2VsZkNsb3Npbmc6IHNlbGZDbG9zaW5nLAotICAgICAgICAgICAg
ICAgIGF0dHJpYnV0ZXM6IGF0dHJpYnV0ZXMKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH0sCi0K
LSAgICAgICAgY3JlYXRlWEpTQ2xvc2luZ0VsZW1lbnQ6IGZ1bmN0aW9uIChuYW1lKSB7Ci0gICAg
ICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5YSlNDbG9zaW5n
RWxlbWVudCwKLSAgICAgICAgICAgICAgICBuYW1lOiBuYW1lCi0gICAgICAgICAgICB9OwotICAg
ICAgICB9LAotCi0gICAgICAgIGNyZWF0ZUlmU3RhdGVtZW50OiBmdW5jdGlvbiAodGVzdCwgY29u
c2VxdWVudCwgYWx0ZXJuYXRlKSB7Ci0gICAgICAgICAgICByZXR1cm4gewotICAgICAgICAgICAg
ICAgIHR5cGU6IFN5bnRheC5JZlN0YXRlbWVudCwKLSAgICAgICAgICAgICAgICB0ZXN0OiB0ZXN0
LAotICAgICAgICAgICAgICAgIGNvbnNlcXVlbnQ6IGNvbnNlcXVlbnQsCi0gICAgICAgICAgICAg
ICAgYWx0ZXJuYXRlOiBhbHRlcm5hdGUKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH0sCi0KLSAg
ICAgICAgY3JlYXRlTGFiZWxlZFN0YXRlbWVudDogZnVuY3Rpb24gKGxhYmVsLCBib2R5KSB7Ci0g
ICAgICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5MYWJlbGVk
U3RhdGVtZW50LAotICAgICAgICAgICAgICAgIGxhYmVsOiBsYWJlbCwKLSAgICAgICAgICAgICAg
ICBib2R5OiBib2R5Ci0gICAgICAgICAgICB9OwotICAgICAgICB9LAotCi0gICAgICAgIGNyZWF0
ZUxpdGVyYWw6IGZ1bmN0aW9uICh0b2tlbikgewotICAgICAgICAgICAgcmV0dXJuIHsKLSAgICAg
ICAgICAgICAgICB0eXBlOiBTeW50YXguTGl0ZXJhbCwKLSAgICAgICAgICAgICAgICB2YWx1ZTog
dG9rZW4udmFsdWUsCi0gICAgICAgICAgICAgICAgcmF3OiBzb3VyY2Uuc2xpY2UodG9rZW4ucmFu
Z2VbMF0sIHRva2VuLnJhbmdlWzFdKQotICAgICAgICAgICAgfTsKLSAgICAgICAgfSwKLQotICAg
ICAgICBjcmVhdGVNZW1iZXJFeHByZXNzaW9uOiBmdW5jdGlvbiAoYWNjZXNzb3IsIG9iamVjdCwg
cHJvcGVydHkpIHsKLSAgICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAgICAgdHlwZTog
U3ludGF4Lk1lbWJlckV4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgY29tcHV0ZWQ6IGFjY2Vz
c29yID09PSAnWycsCi0gICAgICAgICAgICAgICAgb2JqZWN0OiBvYmplY3QsCi0gICAgICAgICAg
ICAgICAgcHJvcGVydHk6IHByb3BlcnR5Ci0gICAgICAgICAgICB9OwotICAgICAgICB9LAotCi0g
ICAgICAgIGNyZWF0ZU5ld0V4cHJlc3Npb246IGZ1bmN0aW9uIChjYWxsZWUsIGFyZ3MpIHsKLSAg
ICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4Lk5ld0V4cHJl
c3Npb24sCi0gICAgICAgICAgICAgICAgY2FsbGVlOiBjYWxsZWUsCi0gICAgICAgICAgICAgICAg
J2FyZ3VtZW50cyc6IGFyZ3MKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH0sCi0KLSAgICAgICAg
Y3JlYXRlT2JqZWN0RXhwcmVzc2lvbjogZnVuY3Rpb24gKHByb3BlcnRpZXMpIHsKLSAgICAgICAg
ICAgIHJldHVybiB7Ci0gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4Lk9iamVjdEV4cHJlc3Np
b24sCi0gICAgICAgICAgICAgICAgcHJvcGVydGllczogcHJvcGVydGllcwotICAgICAgICAgICAg
fTsKLSAgICAgICAgfSwKLQotICAgICAgICBjcmVhdGVQb3N0Zml4RXhwcmVzc2lvbjogZnVuY3Rp
b24gKG9wZXJhdG9yLCBhcmd1bWVudCkgewotICAgICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAg
ICAgICAgICB0eXBlOiBTeW50YXguVXBkYXRlRXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICBv
cGVyYXRvcjogb3BlcmF0b3IsCi0gICAgICAgICAgICAgICAgYXJndW1lbnQ6IGFyZ3VtZW50LAot
ICAgICAgICAgICAgICAgIHByZWZpeDogZmFsc2UKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH0s
Ci0KLSAgICAgICAgY3JlYXRlUHJvZ3JhbTogZnVuY3Rpb24gKGJvZHkpIHsKLSAgICAgICAgICAg
IHJldHVybiB7Ci0gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LlByb2dyYW0sCi0gICAgICAg
ICAgICAgICAgYm9keTogYm9keQotICAgICAgICAgICAgfTsKLSAgICAgICAgfSwKLQotICAgICAg
ICBjcmVhdGVQcm9wZXJ0eTogZnVuY3Rpb24gKGtpbmQsIGtleSwgdmFsdWUsIG1ldGhvZCwgc2hv
cnRoYW5kKSB7Ci0gICAgICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgICAgIHR5cGU6IFN5
bnRheC5Qcm9wZXJ0eSwKLSAgICAgICAgICAgICAgICBrZXk6IGtleSwKLSAgICAgICAgICAgICAg
ICB2YWx1ZTogdmFsdWUsCi0gICAgICAgICAgICAgICAga2luZDoga2luZCwKLSAgICAgICAgICAg
ICAgICBtZXRob2Q6IG1ldGhvZCwKLSAgICAgICAgICAgICAgICBzaG9ydGhhbmQ6IHNob3J0aGFu
ZAotICAgICAgICAgICAgfTsKLSAgICAgICAgfSwKLQotICAgICAgICBjcmVhdGVSZXR1cm5TdGF0
ZW1lbnQ6IGZ1bmN0aW9uIChhcmd1bWVudCkgewotICAgICAgICAgICAgcmV0dXJuIHsKLSAgICAg
ICAgICAgICAgICB0eXBlOiBTeW50YXguUmV0dXJuU3RhdGVtZW50LAotICAgICAgICAgICAgICAg
IGFyZ3VtZW50OiBhcmd1bWVudAotICAgICAgICAgICAgfTsKLSAgICAgICAgfSwKLQotICAgICAg
ICBjcmVhdGVTZXF1ZW5jZUV4cHJlc3Npb246IGZ1bmN0aW9uIChleHByZXNzaW9ucykgewotICAg
ICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguU2VxdWVuY2VF
eHByZXNzaW9uLAotICAgICAgICAgICAgICAgIGV4cHJlc3Npb25zOiBleHByZXNzaW9ucwotICAg
ICAgICAgICAgfTsKLSAgICAgICAgfSwKLQotICAgICAgICBjcmVhdGVTd2l0Y2hDYXNlOiBmdW5j
dGlvbiAodGVzdCwgY29uc2VxdWVudCkgewotICAgICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAg
ICAgICAgICB0eXBlOiBTeW50YXguU3dpdGNoQ2FzZSwKLSAgICAgICAgICAgICAgICB0ZXN0OiB0
ZXN0LAotICAgICAgICAgICAgICAgIGNvbnNlcXVlbnQ6IGNvbnNlcXVlbnQKLSAgICAgICAgICAg
IH07Ci0gICAgICAgIH0sCi0KLSAgICAgICAgY3JlYXRlU3dpdGNoU3RhdGVtZW50OiBmdW5jdGlv
biAoZGlzY3JpbWluYW50LCBjYXNlcykgewotICAgICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAg
ICAgICAgICB0eXBlOiBTeW50YXguU3dpdGNoU3RhdGVtZW50LAotICAgICAgICAgICAgICAgIGRp
c2NyaW1pbmFudDogZGlzY3JpbWluYW50LAotICAgICAgICAgICAgICAgIGNhc2VzOiBjYXNlcwot
ICAgICAgICAgICAgfTsKLSAgICAgICAgfSwKLQotICAgICAgICBjcmVhdGVUaGlzRXhwcmVzc2lv
bjogZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgICAgICB0
eXBlOiBTeW50YXguVGhpc0V4cHJlc3Npb24KLSAgICAgICAgICAgIH07Ci0gICAgICAgIH0sCi0K
LSAgICAgICAgY3JlYXRlVGhyb3dTdGF0ZW1lbnQ6IGZ1bmN0aW9uIChhcmd1bWVudCkgewotICAg
ICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguVGhyb3dTdGF0
ZW1lbnQsCi0gICAgICAgICAgICAgICAgYXJndW1lbnQ6IGFyZ3VtZW50Ci0gICAgICAgICAgICB9
OwotICAgICAgICB9LAotCi0gICAgICAgIGNyZWF0ZVRyeVN0YXRlbWVudDogZnVuY3Rpb24gKGJs
b2NrLCBndWFyZGVkSGFuZGxlcnMsIGhhbmRsZXJzLCBmaW5hbGl6ZXIpIHsKLSAgICAgICAgICAg
IHJldHVybiB7Ci0gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LlRyeVN0YXRlbWVudCwKLSAg
ICAgICAgICAgICAgICBibG9jazogYmxvY2ssCi0gICAgICAgICAgICAgICAgZ3VhcmRlZEhhbmRs
ZXJzOiBndWFyZGVkSGFuZGxlcnMsCi0gICAgICAgICAgICAgICAgaGFuZGxlcnM6IGhhbmRsZXJz
LAotICAgICAgICAgICAgICAgIGZpbmFsaXplcjogZmluYWxpemVyCi0gICAgICAgICAgICB9Owot
ICAgICAgICB9LAotCi0gICAgICAgIGNyZWF0ZVVuYXJ5RXhwcmVzc2lvbjogZnVuY3Rpb24gKG9w
ZXJhdG9yLCBhcmd1bWVudCkgewotICAgICAgICAgICAgaWYgKG9wZXJhdG9yID09PSAnKysnIHx8
IG9wZXJhdG9yID09PSAnLS0nKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAg
ICAgICAgICAgICAgdHlwZTogU3ludGF4LlVwZGF0ZUV4cHJlc3Npb24sCi0gICAgICAgICAgICAg
ICAgICAgIG9wZXJhdG9yOiBvcGVyYXRvciwKLSAgICAgICAgICAgICAgICAgICAgYXJndW1lbnQ6
IGFyZ3VtZW50LAotICAgICAgICAgICAgICAgICAgICBwcmVmaXg6IHRydWUKLSAgICAgICAgICAg
ICAgICB9OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAg
ICAgICB0eXBlOiBTeW50YXguVW5hcnlFeHByZXNzaW9uLAotICAgICAgICAgICAgICAgIG9wZXJh
dG9yOiBvcGVyYXRvciwKLSAgICAgICAgICAgICAgICBhcmd1bWVudDogYXJndW1lbnQKLSAgICAg
ICAgICAgIH07Ci0gICAgICAgIH0sCi0KLSAgICAgICAgY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlv
bjogZnVuY3Rpb24gKGRlY2xhcmF0aW9ucywga2luZCkgewotICAgICAgICAgICAgcmV0dXJuIHsK
LSAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguVmFyaWFibGVEZWNsYXJhdGlvbiwKLSAgICAg
ICAgICAgICAgICBkZWNsYXJhdGlvbnM6IGRlY2xhcmF0aW9ucywKLSAgICAgICAgICAgICAgICBr
aW5kOiBraW5kCi0gICAgICAgICAgICB9OwotICAgICAgICB9LAotCi0gICAgICAgIGNyZWF0ZVZh
cmlhYmxlRGVjbGFyYXRvcjogZnVuY3Rpb24gKGlkLCBpbml0KSB7Ci0gICAgICAgICAgICByZXR1
cm4gewotICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5WYXJpYWJsZURlY2xhcmF0b3IsCi0g
ICAgICAgICAgICAgICAgaWQ6IGlkLAotICAgICAgICAgICAgICAgIGluaXQ6IGluaXQKLSAgICAg
ICAgICAgIH07Ci0gICAgICAgIH0sCi0KLSAgICAgICAgY3JlYXRlV2hpbGVTdGF0ZW1lbnQ6IGZ1
bmN0aW9uICh0ZXN0LCBib2R5KSB7Ci0gICAgICAgICAgICByZXR1cm4gewotICAgICAgICAgICAg
ICAgIHR5cGU6IFN5bnRheC5XaGlsZVN0YXRlbWVudCwKLSAgICAgICAgICAgICAgICB0ZXN0OiB0
ZXN0LAotICAgICAgICAgICAgICAgIGJvZHk6IGJvZHkKLSAgICAgICAgICAgIH07Ci0gICAgICAg
IH0sCi0KLSAgICAgICAgY3JlYXRlV2l0aFN0YXRlbWVudDogZnVuY3Rpb24gKG9iamVjdCwgYm9k
eSkgewotICAgICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXgu
V2l0aFN0YXRlbWVudCwKLSAgICAgICAgICAgICAgICBvYmplY3Q6IG9iamVjdCwKLSAgICAgICAg
ICAgICAgICBib2R5OiBib2R5Ci0gICAgICAgICAgICB9OwotICAgICAgICB9LAotCi0gICAgICAg
IGNyZWF0ZVRlbXBsYXRlRWxlbWVudDogZnVuY3Rpb24gKHZhbHVlLCB0YWlsKSB7Ci0gICAgICAg
ICAgICByZXR1cm4gewotICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5UZW1wbGF0ZUVsZW1l
bnQsCi0gICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlLAotICAgICAgICAgICAgICAgIHRhaWw6
IHRhaWwKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH0sCi0KLSAgICAgICAgY3JlYXRlVGVtcGxh
dGVMaXRlcmFsOiBmdW5jdGlvbiAocXVhc2lzLCBleHByZXNzaW9ucykgewotICAgICAgICAgICAg
cmV0dXJuIHsKLSAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguVGVtcGxhdGVMaXRlcmFsLAot
ICAgICAgICAgICAgICAgIHF1YXNpczogcXVhc2lzLAotICAgICAgICAgICAgICAgIGV4cHJlc3Np
b25zOiBleHByZXNzaW9ucwotICAgICAgICAgICAgfTsKLSAgICAgICAgfSwKLQotICAgICAgICBj
cmVhdGVTcHJlYWRFbGVtZW50OiBmdW5jdGlvbiAoYXJndW1lbnQpIHsKLSAgICAgICAgICAgIHJl
dHVybiB7Ci0gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LlNwcmVhZEVsZW1lbnQsCi0gICAg
ICAgICAgICAgICAgYXJndW1lbnQ6IGFyZ3VtZW50Ci0gICAgICAgICAgICB9OwotICAgICAgICB9
LAotCi0gICAgICAgIGNyZWF0ZVRhZ2dlZFRlbXBsYXRlRXhwcmVzc2lvbjogZnVuY3Rpb24gKHRh
ZywgcXVhc2kpIHsKLSAgICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAgICAgdHlwZTog
U3ludGF4LlRhZ2dlZFRlbXBsYXRlRXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICB0YWc6IHRh
ZywKLSAgICAgICAgICAgICAgICBxdWFzaTogcXVhc2kKLSAgICAgICAgICAgIH07Ci0gICAgICAg
IH0sCi0KLSAgICAgICAgY3JlYXRlQXJyb3dGdW5jdGlvbkV4cHJlc3Npb246IGZ1bmN0aW9uIChw
YXJhbXMsIGRlZmF1bHRzLCBib2R5LCByZXN0LCBleHByZXNzaW9uKSB7Ci0gICAgICAgICAgICBy
ZXR1cm4gewotICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5BcnJvd0Z1bmN0aW9uRXhwcmVz
c2lvbiwKLSAgICAgICAgICAgICAgICBpZDogbnVsbCwKLSAgICAgICAgICAgICAgICBwYXJhbXM6
IHBhcmFtcywKLSAgICAgICAgICAgICAgICBkZWZhdWx0czogZGVmYXVsdHMsCi0gICAgICAgICAg
ICAgICAgYm9keTogYm9keSwKLSAgICAgICAgICAgICAgICByZXN0OiByZXN0LAotICAgICAgICAg
ICAgICAgIGdlbmVyYXRvcjogZmFsc2UsCi0gICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogZXhw
cmVzc2lvbgotICAgICAgICAgICAgfTsKLSAgICAgICAgfSwKLQotICAgICAgICBjcmVhdGVNZXRo
b2REZWZpbml0aW9uOiBmdW5jdGlvbiAocHJvcGVydHlUeXBlLCBraW5kLCBrZXksIHZhbHVlKSB7
Ci0gICAgICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5NZXRo
b2REZWZpbml0aW9uLAotICAgICAgICAgICAgICAgIGtleToga2V5LAotICAgICAgICAgICAgICAg
IHZhbHVlOiB2YWx1ZSwKLSAgICAgICAgICAgICAgICBraW5kOiBraW5kLAotICAgICAgICAgICAg
ICAgICdzdGF0aWMnOiBwcm9wZXJ0eVR5cGUgPT09IENsYXNzUHJvcGVydHlUeXBlLnN0YXRpYwot
ICAgICAgICAgICAgfTsKLSAgICAgICAgfSwKLQotICAgICAgICBjcmVhdGVDbGFzc0JvZHk6IGZ1
bmN0aW9uIChib2R5KSB7Ci0gICAgICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgICAgIHR5
cGU6IFN5bnRheC5DbGFzc0JvZHksCi0gICAgICAgICAgICAgICAgYm9keTogYm9keQotICAgICAg
ICAgICAgfTsKLSAgICAgICAgfSwKLQotICAgICAgICBjcmVhdGVDbGFzc0V4cHJlc3Npb246IGZ1
bmN0aW9uIChpZCwgc3VwZXJDbGFzcywgYm9keSkgewotICAgICAgICAgICAgcmV0dXJuIHsKLSAg
ICAgICAgICAgICAgICB0eXBlOiBTeW50YXguQ2xhc3NFeHByZXNzaW9uLAotICAgICAgICAgICAg
ICAgIGlkOiBpZCwKLSAgICAgICAgICAgICAgICBzdXBlckNsYXNzOiBzdXBlckNsYXNzLAotICAg
ICAgICAgICAgICAgIGJvZHk6IGJvZHkKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH0sCi0KLSAg
ICAgICAgY3JlYXRlQ2xhc3NEZWNsYXJhdGlvbjogZnVuY3Rpb24gKGlkLCBzdXBlckNsYXNzLCBi
b2R5KSB7Ci0gICAgICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRh
eC5DbGFzc0RlY2xhcmF0aW9uLAotICAgICAgICAgICAgICAgIGlkOiBpZCwKLSAgICAgICAgICAg
ICAgICBzdXBlckNsYXNzOiBzdXBlckNsYXNzLAotICAgICAgICAgICAgICAgIGJvZHk6IGJvZHkK
LSAgICAgICAgICAgIH07Ci0gICAgICAgIH0sCi0KLSAgICAgICAgY3JlYXRlUGF0aDogZnVuY3Rp
b24gKGJvZHkpIHsKLSAgICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAgICAgdHlwZTog
U3ludGF4LlBhdGgsCi0gICAgICAgICAgICAgICAgYm9keTogYm9keQotICAgICAgICAgICAgfTsK
LSAgICAgICAgfSwKLQotICAgICAgICBjcmVhdGVHbG9iOiBmdW5jdGlvbiAoKSB7Ci0gICAgICAg
ICAgICByZXR1cm4gewotICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5HbG9iCi0gICAgICAg
ICAgICB9OwotICAgICAgICB9LAotCi0gICAgICAgIGNyZWF0ZUV4cG9ydFNwZWNpZmllcjogZnVu
Y3Rpb24gKGlkLCBmcm9tKSB7Ci0gICAgICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgICAg
IHR5cGU6IFN5bnRheC5FeHBvcnRTcGVjaWZpZXIsCi0gICAgICAgICAgICAgICAgaWQ6IGlkLAot
ICAgICAgICAgICAgICAgIGZyb206IGZyb20KLSAgICAgICAgICAgIH07Ci0gICAgICAgIH0sCi0K
LSAgICAgICAgY3JlYXRlRXhwb3J0U3BlY2lmaWVyU2V0OiBmdW5jdGlvbiAoc3BlY2lmaWVycykg
ewotICAgICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguRXhw
b3J0U3BlY2lmaWVyU2V0LAotICAgICAgICAgICAgICAgIHNwZWNpZmllcnM6IHNwZWNpZmllcnMK
LSAgICAgICAgICAgIH07Ci0gICAgICAgIH0sCi0KLSAgICAgICAgY3JlYXRlRXhwb3J0RGVjbGFy
YXRpb246IGZ1bmN0aW9uIChkZWNsYXJhdGlvbiwgc3BlY2lmaWVycykgewotICAgICAgICAgICAg
cmV0dXJuIHsKLSAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguRXhwb3J0RGVjbGFyYXRpb24s
Ci0gICAgICAgICAgICAgICAgZGVjbGFyYXRpb246IGRlY2xhcmF0aW9uLAotICAgICAgICAgICAg
ICAgIHNwZWNpZmllcnM6IHNwZWNpZmllcnMKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH0sCi0K
LSAgICAgICAgY3JlYXRlSW1wb3J0U3BlY2lmaWVyOiBmdW5jdGlvbiAoaWQsIGZyb20pIHsKLSAg
ICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LkltcG9ydFNw
ZWNpZmllciwKLSAgICAgICAgICAgICAgICBpZDogaWQsCi0gICAgICAgICAgICAgICAgZnJvbTog
ZnJvbQotICAgICAgICAgICAgfTsKLSAgICAgICAgfSwKLQotICAgICAgICBjcmVhdGVJbXBvcnRE
ZWNsYXJhdGlvbjogZnVuY3Rpb24gKHNwZWNpZmllcnMsIGZyb20pIHsKLSAgICAgICAgICAgIHJl
dHVybiB7Ci0gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LkltcG9ydERlY2xhcmF0aW9uLAot
ICAgICAgICAgICAgICAgIHNwZWNpZmllcnM6IHNwZWNpZmllcnMsCi0gICAgICAgICAgICAgICAg
ZnJvbTogZnJvbQotICAgICAgICAgICAgfTsKLSAgICAgICAgfSwKLQotICAgICAgICBjcmVhdGVZ
aWVsZEV4cHJlc3Npb246IGZ1bmN0aW9uIChhcmd1bWVudCwgZGVsZWdhdGUpIHsKLSAgICAgICAg
ICAgIHJldHVybiB7Ci0gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LllpZWxkRXhwcmVzc2lv
biwKLSAgICAgICAgICAgICAgICBhcmd1bWVudDogYXJndW1lbnQsCi0gICAgICAgICAgICAgICAg
ZGVsZWdhdGU6IGRlbGVnYXRlCi0gICAgICAgICAgICB9OwotICAgICAgICB9LAotCi0gICAgICAg
IGNyZWF0ZU1vZHVsZURlY2xhcmF0aW9uOiBmdW5jdGlvbiAoaWQsIGZyb20sIGJvZHkpIHsKLSAg
ICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4Lk1vZHVsZURl
Y2xhcmF0aW9uLAotICAgICAgICAgICAgICAgIGlkOiBpZCwKLSAgICAgICAgICAgICAgICBmcm9t
OiBmcm9tLAotICAgICAgICAgICAgICAgIGJvZHk6IGJvZHkKLSAgICAgICAgICAgIH07Ci0gICAg
ICAgIH0KLQotCi0gICAgfTsKLQotICAgIC8vIFJldHVybiB0cnVlIGlmIHRoZXJlIGlzIGEgbGlu
ZSB0ZXJtaW5hdG9yIGJlZm9yZSB0aGUgbmV4dCB0b2tlbi4KLQotICAgIGZ1bmN0aW9uIHBlZWtM
aW5lVGVybWluYXRvcigpIHsKLSAgICAgICAgdmFyIHBvcywgbGluZSwgc3RhcnQsIGZvdW5kOwot
Ci0gICAgICAgIHBvcyA9IGluZGV4OwotICAgICAgICBsaW5lID0gbGluZU51bWJlcjsKLSAgICAg
ICAgc3RhcnQgPSBsaW5lU3RhcnQ7Ci0gICAgICAgIHNraXBDb21tZW50KCk7Ci0gICAgICAgIGZv
dW5kID0gbGluZU51bWJlciAhPT0gbGluZTsKLSAgICAgICAgaW5kZXggPSBwb3M7Ci0gICAgICAg
IGxpbmVOdW1iZXIgPSBsaW5lOwotICAgICAgICBsaW5lU3RhcnQgPSBzdGFydDsKLQotICAgICAg
ICByZXR1cm4gZm91bmQ7Ci0gICAgfQotCi0gICAgLy8gVGhyb3cgYW4gZXhjZXB0aW9uCi0KLSAg
ICBmdW5jdGlvbiB0aHJvd0Vycm9yKHRva2VuLCBtZXNzYWdlRm9ybWF0KSB7Ci0gICAgICAgIHZh
ciBlcnJvciwKLSAgICAgICAgICAgIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChh
cmd1bWVudHMsIDIpLAotICAgICAgICAgICAgbXNnID0gbWVzc2FnZUZvcm1hdC5yZXBsYWNlKAot
ICAgICAgICAgICAgICAgIC8lKFxkKS9nLAotICAgICAgICAgICAgICAgIGZ1bmN0aW9uICh3aG9s
ZSwgaW5kZXgpIHsKLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KGluZGV4IDwgYXJncy5sZW5n
dGgsICdNZXNzYWdlIHJlZmVyZW5jZSBtdXN0IGJlIGluIHJhbmdlJyk7Ci0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiBhcmdzW2luZGV4XTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICApOwotCi0gICAgICAgIGlmICh0eXBlb2YgdG9rZW4ubGluZU51bWJlciA9PT0gJ251bWJlcicp
IHsKLSAgICAgICAgICAgIGVycm9yID0gbmV3IEVycm9yKCdMaW5lICcgKyB0b2tlbi5saW5lTnVt
YmVyICsgJzogJyArIG1zZyk7Ci0gICAgICAgICAgICBlcnJvci5pbmRleCA9IHRva2VuLnJhbmdl
WzBdOwotICAgICAgICAgICAgZXJyb3IubGluZU51bWJlciA9IHRva2VuLmxpbmVOdW1iZXI7Ci0g
ICAgICAgICAgICBlcnJvci5jb2x1bW4gPSB0b2tlbi5yYW5nZVswXSAtIGxpbmVTdGFydCArIDE7
Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBlcnJvciA9IG5ldyBFcnJvcignTGluZSAn
ICsgbGluZU51bWJlciArICc6ICcgKyBtc2cpOwotICAgICAgICAgICAgZXJyb3IuaW5kZXggPSBp
bmRleDsKLSAgICAgICAgICAgIGVycm9yLmxpbmVOdW1iZXIgPSBsaW5lTnVtYmVyOwotICAgICAg
ICAgICAgZXJyb3IuY29sdW1uID0gaW5kZXggLSBsaW5lU3RhcnQgKyAxOwotICAgICAgICB9Ci0K
LSAgICAgICAgZXJyb3IuZGVzY3JpcHRpb24gPSBtc2c7Ci0gICAgICAgIHRocm93IGVycm9yOwot
ICAgIH0KLQotICAgIGZ1bmN0aW9uIHRocm93RXJyb3JUb2xlcmFudCgpIHsKLSAgICAgICAgdHJ5
IHsKLSAgICAgICAgICAgIHRocm93RXJyb3IuYXBwbHkobnVsbCwgYXJndW1lbnRzKTsKLSAgICAg
ICAgfSBjYXRjaCAoZSkgewotICAgICAgICAgICAgaWYgKGV4dHJhLmVycm9ycykgewotICAgICAg
ICAgICAgICAgIGV4dHJhLmVycm9ycy5wdXNoKGUpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICB0aHJvdyBlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQot
Ci0KLSAgICAvLyBUaHJvdyBhbiBleGNlcHRpb24gYmVjYXVzZSBvZiB0aGUgdG9rZW4uCi0KLSAg
ICBmdW5jdGlvbiB0aHJvd1VuZXhwZWN0ZWQodG9rZW4pIHsKLSAgICAgICAgaWYgKHRva2VuLnR5
cGUgPT09IFRva2VuLkVPRikgewotICAgICAgICAgICAgdGhyb3dFcnJvcih0b2tlbiwgTWVzc2Fn
ZXMuVW5leHBlY3RlZEVPUyk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAodG9rZW4udHlwZSA9
PT0gVG9rZW4uTnVtZXJpY0xpdGVyYWwpIHsKLSAgICAgICAgICAgIHRocm93RXJyb3IodG9rZW4s
IE1lc3NhZ2VzLlVuZXhwZWN0ZWROdW1iZXIpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHRv
a2VuLnR5cGUgPT09IFRva2VuLlN0cmluZ0xpdGVyYWwpIHsKLSAgICAgICAgICAgIHRocm93RXJy
b3IodG9rZW4sIE1lc3NhZ2VzLlVuZXhwZWN0ZWRTdHJpbmcpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgaWYgKHRva2VuLnR5cGUgPT09IFRva2VuLklkZW50aWZpZXIpIHsKLSAgICAgICAgICAgIHRo
cm93RXJyb3IodG9rZW4sIE1lc3NhZ2VzLlVuZXhwZWN0ZWRJZGVudGlmaWVyKTsKLSAgICAgICAg
fQotCi0gICAgICAgIGlmICh0b2tlbi50eXBlID09PSBUb2tlbi5LZXl3b3JkKSB7Ci0gICAgICAg
ICAgICBpZiAoaXNGdXR1cmVSZXNlcnZlZFdvcmQodG9rZW4udmFsdWUpKSB7Ci0gICAgICAgICAg
ICAgICAgdGhyb3dFcnJvcih0b2tlbiwgTWVzc2FnZXMuVW5leHBlY3RlZFJlc2VydmVkKTsKLSAg
ICAgICAgICAgIH0gZWxzZSBpZiAoc3RyaWN0ICYmIGlzU3RyaWN0TW9kZVJlc2VydmVkV29yZCh0
b2tlbi52YWx1ZSkpIHsKLSAgICAgICAgICAgICAgICB0aHJvd0Vycm9yVG9sZXJhbnQodG9rZW4s
IE1lc3NhZ2VzLlN0cmljdFJlc2VydmVkV29yZCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgdGhyb3dFcnJvcih0b2tlbiwgTWVzc2FnZXMuVW5l
eHBlY3RlZFRva2VuLCB0b2tlbi52YWx1ZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAodG9r
ZW4udHlwZSA9PT0gVG9rZW4uVGVtcGxhdGUpIHsKLSAgICAgICAgICAgIHRocm93RXJyb3IodG9r
ZW4sIE1lc3NhZ2VzLlVuZXhwZWN0ZWRUZW1wbGF0ZSwgdG9rZW4udmFsdWUucmF3KTsKLSAgICAg
ICAgfQotCi0gICAgICAgIC8vIEJvb2xlYW5MaXRlcmFsLCBOdWxsTGl0ZXJhbCwgb3IgUHVuY3R1
YXRvci4KLSAgICAgICAgdGhyb3dFcnJvcih0b2tlbiwgTWVzc2FnZXMuVW5leHBlY3RlZFRva2Vu
LCB0b2tlbi52YWx1ZSk7Ci0gICAgfQotCi0gICAgLy8gRXhwZWN0IHRoZSBuZXh0IHRva2VuIHRv
IG1hdGNoIHRoZSBzcGVjaWZpZWQgcHVuY3R1YXRvci4KLSAgICAvLyBJZiBub3QsIGFuIGV4Y2Vw
dGlvbiB3aWxsIGJlIHRocm93bi4KLQotICAgIGZ1bmN0aW9uIGV4cGVjdCh2YWx1ZSkgewotICAg
ICAgICB2YXIgdG9rZW4gPSBsZXgoKTsKLSAgICAgICAgaWYgKHRva2VuLnR5cGUgIT09IFRva2Vu
LlB1bmN0dWF0b3IgfHwgdG9rZW4udmFsdWUgIT09IHZhbHVlKSB7Ci0gICAgICAgICAgICB0aHJv
d1VuZXhwZWN0ZWQodG9rZW4pOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gRXhwZWN0IHRo
ZSBuZXh0IHRva2VuIHRvIG1hdGNoIHRoZSBzcGVjaWZpZWQga2V5d29yZC4KLSAgICAvLyBJZiBu
b3QsIGFuIGV4Y2VwdGlvbiB3aWxsIGJlIHRocm93bi4KLQotICAgIGZ1bmN0aW9uIGV4cGVjdEtl
eXdvcmQoa2V5d29yZCkgewotICAgICAgICB2YXIgdG9rZW4gPSBsZXgoKTsKLSAgICAgICAgaWYg
KHRva2VuLnR5cGUgIT09IFRva2VuLktleXdvcmQgfHwgdG9rZW4udmFsdWUgIT09IGtleXdvcmQp
IHsKLSAgICAgICAgICAgIHRocm93VW5leHBlY3RlZCh0b2tlbik7Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICAvLyBSZXR1cm4gdHJ1ZSBpZiB0aGUgbmV4dCB0b2tlbiBtYXRjaGVzIHRoZSBzcGVj
aWZpZWQgcHVuY3R1YXRvci4KLQotICAgIGZ1bmN0aW9uIG1hdGNoKHZhbHVlKSB7Ci0gICAgICAg
IHJldHVybiBsb29rYWhlYWQudHlwZSA9PT0gVG9rZW4uUHVuY3R1YXRvciAmJiBsb29rYWhlYWQu
dmFsdWUgPT09IHZhbHVlOwotICAgIH0KLQotICAgIC8vIFJldHVybiB0cnVlIGlmIHRoZSBuZXh0
IHRva2VuIG1hdGNoZXMgdGhlIHNwZWNpZmllZCBrZXl3b3JkCi0KLSAgICBmdW5jdGlvbiBtYXRj
aEtleXdvcmQoa2V5d29yZCkgewotICAgICAgICByZXR1cm4gbG9va2FoZWFkLnR5cGUgPT09IFRv
a2VuLktleXdvcmQgJiYgbG9va2FoZWFkLnZhbHVlID09PSBrZXl3b3JkOwotICAgIH0KLQotCi0g
ICAgLy8gUmV0dXJuIHRydWUgaWYgdGhlIG5leHQgdG9rZW4gbWF0Y2hlcyB0aGUgc3BlY2lmaWVk
IGNvbnRleHR1YWwga2V5d29yZAotCi0gICAgZnVuY3Rpb24gbWF0Y2hDb250ZXh0dWFsS2V5d29y
ZChrZXl3b3JkKSB7Ci0gICAgICAgIHJldHVybiBsb29rYWhlYWQudHlwZSA9PT0gVG9rZW4uSWRl
bnRpZmllciAmJiBsb29rYWhlYWQudmFsdWUgPT09IGtleXdvcmQ7Ci0gICAgfQotCi0gICAgLy8g
UmV0dXJuIHRydWUgaWYgdGhlIG5leHQgdG9rZW4gaXMgYW4gYXNzaWdubWVudCBvcGVyYXRvcgot
Ci0gICAgZnVuY3Rpb24gbWF0Y2hBc3NpZ24oKSB7Ci0gICAgICAgIHZhciBvcDsKLQotICAgICAg
ICBpZiAobG9va2FoZWFkLnR5cGUgIT09IFRva2VuLlB1bmN0dWF0b3IpIHsKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBvcCA9IGxvb2thaGVhZC52YWx1ZTsK
LSAgICAgICAgcmV0dXJuIG9wID09PSAnPScgfHwKLSAgICAgICAgICAgIG9wID09PSAnKj0nIHx8
Ci0gICAgICAgICAgICBvcCA9PT0gJy89JyB8fAotICAgICAgICAgICAgb3AgPT09ICclPScgfHwK
LSAgICAgICAgICAgIG9wID09PSAnKz0nIHx8Ci0gICAgICAgICAgICBvcCA9PT0gJy09JyB8fAot
ICAgICAgICAgICAgb3AgPT09ICc8PD0nIHx8Ci0gICAgICAgICAgICBvcCA9PT0gJz4+PScgfHwK
LSAgICAgICAgICAgIG9wID09PSAnPj4+PScgfHwKLSAgICAgICAgICAgIG9wID09PSAnJj0nIHx8
Ci0gICAgICAgICAgICBvcCA9PT0gJ149JyB8fAotICAgICAgICAgICAgb3AgPT09ICd8PSc7Ci0g
ICAgfQotCi0gICAgZnVuY3Rpb24gY29uc3VtZVNlbWljb2xvbigpIHsKLSAgICAgICAgdmFyIGxp
bmU7Ci0KLSAgICAgICAgLy8gQ2F0Y2ggdGhlIHZlcnkgY29tbW9uIGNhc2UgZmlyc3Q6IGltbWVk
aWF0ZWx5IGEgc2VtaWNvbG9uIChjaGFyICM1OSkuCi0gICAgICAgIGlmIChzb3VyY2UuY2hhckNv
ZGVBdChpbmRleCkgPT09IDU5KSB7Ci0gICAgICAgICAgICBsZXgoKTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGxpbmUgPSBsaW5lTnVtYmVyOwotICAgICAgICBz
a2lwQ29tbWVudCgpOwotICAgICAgICBpZiAobGluZU51bWJlciAhPT0gbGluZSkgewotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKG1hdGNoKCc7JykpIHsKLSAg
ICAgICAgICAgIGxleCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAg
ICAgaWYgKGxvb2thaGVhZC50eXBlICE9PSBUb2tlbi5FT0YgJiYgIW1hdGNoKCd9JykpIHsKLSAg
ICAgICAgICAgIHRocm93VW5leHBlY3RlZChsb29rYWhlYWQpOwotICAgICAgICB9Ci0gICAgfQot
Ci0gICAgLy8gUmV0dXJuIHRydWUgaWYgcHJvdmlkZWQgZXhwcmVzc2lvbiBpcyBMZWZ0SGFuZFNp
ZGVFeHByZXNzaW9uCi0KLSAgICBmdW5jdGlvbiBpc0xlZnRIYW5kU2lkZShleHByKSB7Ci0gICAg
ICAgIHJldHVybiBleHByLnR5cGUgPT09IFN5bnRheC5JZGVudGlmaWVyIHx8IGV4cHIudHlwZSA9
PT0gU3ludGF4Lk1lbWJlckV4cHJlc3Npb247Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gaXNBc3Np
Z25hYmxlTGVmdEhhbmRTaWRlKGV4cHIpIHsKLSAgICAgICAgcmV0dXJuIGlzTGVmdEhhbmRTaWRl
KGV4cHIpIHx8IGV4cHIudHlwZSA9PT0gU3ludGF4Lk9iamVjdFBhdHRlcm4gfHwgZXhwci50eXBl
ID09PSBTeW50YXguQXJyYXlQYXR0ZXJuOwotICAgIH0KLQotICAgIC8vIDExLjEuNCBBcnJheSBJ
bml0aWFsaXNlcgotCi0gICAgZnVuY3Rpb24gcGFyc2VBcnJheUluaXRpYWxpc2VyKCkgewotICAg
ICAgICB2YXIgZWxlbWVudHMgPSBbXSwgYmxvY2tzID0gW10sIGZpbHRlciA9IG51bGwsIHRtcCwg
cG9zc2libGVjb21wcmVoZW5zaW9uID0gdHJ1ZSwgYm9keTsKLQotICAgICAgICBleHBlY3QoJ1sn
KTsKLSAgICAgICAgd2hpbGUgKCFtYXRjaCgnXScpKSB7Ci0gICAgICAgICAgICBpZiAobG9va2Fo
ZWFkLnZhbHVlID09PSAnZm9yJyAmJgotICAgICAgICAgICAgICAgICAgICBsb29rYWhlYWQudHlw
ZSA9PT0gVG9rZW4uS2V5d29yZCkgewotICAgICAgICAgICAgICAgIGlmICghcG9zc2libGVjb21w
cmVoZW5zaW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2Vz
LkNvbXByZWhlbnNpb25FcnJvcik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IG1hdGNoS2V5d29yZCgnZm9yJyk7Ci0gICAgICAgICAgICAgICAgdG1wID0gcGFyc2VGb3JTdGF0
ZW1lbnQoe2lnbm9yZV9ib2R5OiB0cnVlfSk7Ci0gICAgICAgICAgICAgICAgdG1wLm9mID0gdG1w
LnR5cGUgPT09IFN5bnRheC5Gb3JPZlN0YXRlbWVudDsKLSAgICAgICAgICAgICAgICB0bXAudHlw
ZSA9IFN5bnRheC5Db21wcmVoZW5zaW9uQmxvY2s7Ci0gICAgICAgICAgICAgICAgaWYgKHRtcC5s
ZWZ0LmtpbmQpIHsgLy8gY2FuJ3QgYmUgbGV0IG9yIGNvbnN0Ci0gICAgICAgICAgICAgICAgICAg
IHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLkNvbXByZWhlbnNpb25FcnJvcik7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIGJsb2Nrcy5wdXNoKHRtcCk7Ci0gICAgICAgICAgICB9
IGVsc2UgaWYgKGxvb2thaGVhZC52YWx1ZSA9PT0gJ2lmJyAmJgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbG9va2FoZWFkLnR5cGUgPT09IFRva2VuLktleXdvcmQpIHsKLSAgICAgICAgICAg
ICAgICBpZiAoIXBvc3NpYmxlY29tcHJlaGVuc2lvbikgewotICAgICAgICAgICAgICAgICAgICB0
aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5Db21wcmVoZW5zaW9uRXJyb3IpOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICBleHBlY3RLZXl3b3JkKCdpZicpOwotICAgICAgICAgICAg
ICAgIGV4cGVjdCgnKCcpOwotICAgICAgICAgICAgICAgIGZpbHRlciA9IHBhcnNlRXhwcmVzc2lv
bigpOwotICAgICAgICAgICAgICAgIGV4cGVjdCgnKScpOwotICAgICAgICAgICAgfSBlbHNlIGlm
IChsb29rYWhlYWQudmFsdWUgPT09ICcsJyAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
bG9va2FoZWFkLnR5cGUgPT09IFRva2VuLlB1bmN0dWF0b3IpIHsKLSAgICAgICAgICAgICAgICBw
b3NzaWJsZWNvbXByZWhlbnNpb24gPSBmYWxzZTsgLy8gbm8gbG9uZ2VyIGFsbG93ZWQuCi0gICAg
ICAgICAgICAgICAgbGV4KCk7Ci0gICAgICAgICAgICAgICAgZWxlbWVudHMucHVzaChudWxsKTsK
LSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgdG1wID0gcGFyc2VTcHJlYWRP
ckFzc2lnbm1lbnRFeHByZXNzaW9uKCk7Ci0gICAgICAgICAgICAgICAgZWxlbWVudHMucHVzaCh0
bXApOwotICAgICAgICAgICAgICAgIGlmICh0bXAgJiYgdG1wLnR5cGUgPT09IFN5bnRheC5TcHJl
YWRFbGVtZW50KSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghbWF0Y2goJ10nKSkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuRWxlbWVudEFmdGVy
U3ByZWFkRWxlbWVudCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9
IGVsc2UgaWYgKCEobWF0Y2goJ10nKSB8fCBtYXRjaEtleXdvcmQoJ2ZvcicpIHx8IG1hdGNoS2V5
d29yZCgnaWYnKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgZXhwZWN0KCcsJyk7IC8vIHRoaXMg
bGV4ZXMuCi0gICAgICAgICAgICAgICAgICAgIHBvc3NpYmxlY29tcHJlaGVuc2lvbiA9IGZhbHNl
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAg
IGV4cGVjdCgnXScpOwotCi0gICAgICAgIGlmIChmaWx0ZXIgJiYgIWJsb2Nrcy5sZW5ndGgpIHsK
LSAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLkNvbXByZWhlbnNpb25SZXF1aXJl
c0Jsb2NrKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChibG9ja3MubGVuZ3RoKSB7Ci0gICAg
ICAgICAgICBpZiAoZWxlbWVudHMubGVuZ3RoICE9PSAxKSB7Ci0gICAgICAgICAgICAgICAgdGhy
b3dFcnJvcih7fSwgTWVzc2FnZXMuQ29tcHJlaGVuc2lvbkVycm9yKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAgICAgdHlwZTogIFN5bnRheC5Db21w
cmVoZW5zaW9uRXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICBmaWx0ZXI6IGZpbHRlciwKLSAg
ICAgICAgICAgICAgICBibG9ja3M6IGJsb2NrcywKLSAgICAgICAgICAgICAgICBib2R5OiBlbGVt
ZW50c1swXQotICAgICAgICAgICAgfTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gZGVsZWdh
dGUuY3JlYXRlQXJyYXlFeHByZXNzaW9uKGVsZW1lbnRzKTsKLSAgICB9Ci0KLSAgICAvLyAxMS4x
LjUgT2JqZWN0IEluaXRpYWxpc2VyCi0KLSAgICBmdW5jdGlvbiBwYXJzZVByb3BlcnR5RnVuY3Rp
b24ob3B0aW9ucykgewotICAgICAgICB2YXIgcHJldmlvdXNTdHJpY3QsIHByZXZpb3VzWWllbGRB
bGxvd2VkLCBwYXJhbXMsIGJvZHk7Ci0KLSAgICAgICAgcHJldmlvdXNTdHJpY3QgPSBzdHJpY3Q7
Ci0gICAgICAgIHByZXZpb3VzWWllbGRBbGxvd2VkID0gc3RhdGUueWllbGRBbGxvd2VkOwotICAg
ICAgICBzdGF0ZS55aWVsZEFsbG93ZWQgPSBvcHRpb25zLmdlbmVyYXRvcjsKLSAgICAgICAgcGFy
YW1zID0gb3B0aW9ucy5wYXJhbXMgfHwgW107Ci0KLSAgICAgICAgYm9keSA9IHBhcnNlQ29uY2lz
ZUJvZHkoKTsKLSAgICAgICAgaWYgKG9wdGlvbnMubmFtZSAmJiBzdHJpY3QgJiYgaXNSZXN0cmlj
dGVkV29yZChwYXJhbXNbMF0ubmFtZSkpIHsKLSAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFu
dChvcHRpb25zLm5hbWUsIE1lc3NhZ2VzLlN0cmljdFBhcmFtTmFtZSk7Ci0gICAgICAgIH0KLSAg
ICAgICAgaWYgKHN0YXRlLnlpZWxkQWxsb3dlZCAmJiAhc3RhdGUueWllbGRGb3VuZCkgewotICAg
ICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuTm9ZaWVsZEluR2VuZXJhdG9yKTsKLSAg
ICAgICAgfQotICAgICAgICBzdHJpY3QgPSBwcmV2aW91c1N0cmljdDsKLSAgICAgICAgc3RhdGUu
eWllbGRBbGxvd2VkID0gcHJldmlvdXNZaWVsZEFsbG93ZWQ7Ci0KLSAgICAgICAgcmV0dXJuIGRl
bGVnYXRlLmNyZWF0ZUZ1bmN0aW9uRXhwcmVzc2lvbihudWxsLCBwYXJhbXMsIFtdLCBib2R5LCBv
cHRpb25zLnJlc3QgfHwgbnVsbCwgb3B0aW9ucy5nZW5lcmF0b3IsIGJvZHkudHlwZSAhPT0gU3lu
dGF4LkJsb2NrU3RhdGVtZW50KTsKLSAgICB9Ci0KLQotICAgIGZ1bmN0aW9uIHBhcnNlUHJvcGVy
dHlNZXRob2RGdW5jdGlvbihvcHRpb25zKSB7Ci0gICAgICAgIHZhciBwcmV2aW91c1N0cmljdCwg
dG1wLCBtZXRob2Q7Ci0KLSAgICAgICAgcHJldmlvdXNTdHJpY3QgPSBzdHJpY3Q7Ci0gICAgICAg
IHN0cmljdCA9IHRydWU7Ci0KLSAgICAgICAgdG1wID0gcGFyc2VQYXJhbXMoKTsKLQotICAgICAg
ICBpZiAodG1wLnN0cmljdGVkKSB7Ci0gICAgICAgICAgICB0aHJvd0Vycm9yVG9sZXJhbnQodG1w
LnN0cmljdGVkLCB0bXAubWVzc2FnZSk7Ci0gICAgICAgIH0KLQotCi0gICAgICAgIG1ldGhvZCA9
IHBhcnNlUHJvcGVydHlGdW5jdGlvbih7Ci0gICAgICAgICAgICBwYXJhbXM6IHRtcC5wYXJhbXMs
Ci0gICAgICAgICAgICByZXN0OiB0bXAucmVzdCwKLSAgICAgICAgICAgIGdlbmVyYXRvcjogb3B0
aW9ucy5nZW5lcmF0b3IKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgc3RyaWN0ID0gcHJldmlvdXNT
dHJpY3Q7Ci0KLSAgICAgICAgcmV0dXJuIG1ldGhvZDsKLSAgICB9Ci0KLQotICAgIGZ1bmN0aW9u
IHBhcnNlT2JqZWN0UHJvcGVydHlLZXkoKSB7Ci0gICAgICAgIHZhciB0b2tlbiA9IGxleCgpOwot
Ci0gICAgICAgIC8vIE5vdGU6IFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIG9ubHkgZnJvbSBwYXJz
ZU9iamVjdFByb3BlcnR5KCksIHdoZXJlCi0gICAgICAgIC8vIEVPRiBhbmQgUHVuY3R1YXRvciB0
b2tlbnMgYXJlIGFscmVhZHkgZmlsdGVyZWQgb3V0LgotCi0gICAgICAgIGlmICh0b2tlbi50eXBl
ID09PSBUb2tlbi5TdHJpbmdMaXRlcmFsIHx8IHRva2VuLnR5cGUgPT09IFRva2VuLk51bWVyaWNM
aXRlcmFsKSB7Ci0gICAgICAgICAgICBpZiAoc3RyaWN0ICYmIHRva2VuLm9jdGFsKSB7Ci0gICAg
ICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50KHRva2VuLCBNZXNzYWdlcy5TdHJpY3RPY3Rh
bExpdGVyYWwpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNy
ZWF0ZUxpdGVyYWwodG9rZW4pOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGRlbGVnYXRl
LmNyZWF0ZUlkZW50aWZpZXIodG9rZW4udmFsdWUpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHBh
cnNlT2JqZWN0UHJvcGVydHkoKSB7Ci0gICAgICAgIHZhciB0b2tlbiwga2V5LCBpZCwgdmFsdWUs
IHBhcmFtOwotCi0gICAgICAgIHRva2VuID0gbG9va2FoZWFkOwotCi0gICAgICAgIGlmICh0b2tl
bi50eXBlID09PSBUb2tlbi5JZGVudGlmaWVyKSB7Ci0KLSAgICAgICAgICAgIGlkID0gcGFyc2VP
YmplY3RQcm9wZXJ0eUtleSgpOwotCi0gICAgICAgICAgICAvLyBQcm9wZXJ0eSBBc3NpZ25tZW50
OiBHZXR0ZXIgYW5kIFNldHRlci4KLQotICAgICAgICAgICAgaWYgKHRva2VuLnZhbHVlID09PSAn
Z2V0JyAmJiAhKG1hdGNoKCc6JykgfHwgbWF0Y2goJygnKSkpIHsKLSAgICAgICAgICAgICAgICBr
ZXkgPSBwYXJzZU9iamVjdFByb3BlcnR5S2V5KCk7Ci0gICAgICAgICAgICAgICAgZXhwZWN0KCco
Jyk7Ci0gICAgICAgICAgICAgICAgZXhwZWN0KCcpJyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IGRlbGVnYXRlLmNyZWF0ZVByb3BlcnR5KCdnZXQnLCBrZXksIHBhcnNlUHJvcGVydHlGdW5jdGlv
bih7IGdlbmVyYXRvcjogZmFsc2UgfSksIGZhbHNlLCBmYWxzZSk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBpZiAodG9rZW4udmFsdWUgPT09ICdzZXQnICYmICEobWF0Y2goJzonKSB8fCBt
YXRjaCgnKCcpKSkgewotICAgICAgICAgICAgICAgIGtleSA9IHBhcnNlT2JqZWN0UHJvcGVydHlL
ZXkoKTsKLSAgICAgICAgICAgICAgICBleHBlY3QoJygnKTsKLSAgICAgICAgICAgICAgICB0b2tl
biA9IGxvb2thaGVhZDsKLSAgICAgICAgICAgICAgICBwYXJhbSA9IFsgcGFyc2VWYXJpYWJsZUlk
ZW50aWZpZXIoKSBdOwotICAgICAgICAgICAgICAgIGV4cGVjdCgnKScpOwotICAgICAgICAgICAg
ICAgIHJldHVybiBkZWxlZ2F0ZS5jcmVhdGVQcm9wZXJ0eSgnc2V0Jywga2V5LCBwYXJzZVByb3Bl
cnR5RnVuY3Rpb24oeyBwYXJhbXM6IHBhcmFtLCBnZW5lcmF0b3I6IGZhbHNlLCBuYW1lOiB0b2tl
biB9KSwgZmFsc2UsIGZhbHNlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChtYXRj
aCgnOicpKSB7Ci0gICAgICAgICAgICAgICAgbGV4KCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IGRlbGVnYXRlLmNyZWF0ZVByb3BlcnR5KCdpbml0JywgaWQsIHBhcnNlQXNzaWdubWVudEV4cHJl
c3Npb24oKSwgZmFsc2UsIGZhbHNlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICht
YXRjaCgnKCcpKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0ZVByb3Bl
cnR5KCdpbml0JywgaWQsIHBhcnNlUHJvcGVydHlNZXRob2RGdW5jdGlvbih7IGdlbmVyYXRvcjog
ZmFsc2UgfSksIHRydWUsIGZhbHNlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVy
biBkZWxlZ2F0ZS5jcmVhdGVQcm9wZXJ0eSgnaW5pdCcsIGlkLCBpZCwgZmFsc2UsIHRydWUpOwot
ICAgICAgICB9Ci0gICAgICAgIGlmICh0b2tlbi50eXBlID09PSBUb2tlbi5FT0YgfHwgdG9rZW4u
dHlwZSA9PT0gVG9rZW4uUHVuY3R1YXRvcikgewotICAgICAgICAgICAgaWYgKCFtYXRjaCgnKicp
KSB7Ci0gICAgICAgICAgICAgICAgdGhyb3dVbmV4cGVjdGVkKHRva2VuKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGxleCgpOwotCi0gICAgICAgICAgICBpZCA9IHBhcnNlT2JqZWN0UHJv
cGVydHlLZXkoKTsKLQotICAgICAgICAgICAgaWYgKCFtYXRjaCgnKCcpKSB7Ci0gICAgICAgICAg
ICAgICAgdGhyb3dVbmV4cGVjdGVkKGxleCgpKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0ZVByb3BlcnR5KCdpbml0JywgaWQsIHBhcnNlUHJvcGVy
dHlNZXRob2RGdW5jdGlvbih7IGdlbmVyYXRvcjogdHJ1ZSB9KSwgdHJ1ZSwgZmFsc2UpOwotICAg
ICAgICB9Ci0gICAgICAgIGtleSA9IHBhcnNlT2JqZWN0UHJvcGVydHlLZXkoKTsKLSAgICAgICAg
aWYgKG1hdGNoKCc6JykpIHsKLSAgICAgICAgICAgIGxleCgpOwotICAgICAgICAgICAgcmV0dXJu
IGRlbGVnYXRlLmNyZWF0ZVByb3BlcnR5KCdpbml0Jywga2V5LCBwYXJzZUFzc2lnbm1lbnRFeHBy
ZXNzaW9uKCksIGZhbHNlLCBmYWxzZSk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG1hdGNoKCco
JykpIHsKLSAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5jcmVhdGVQcm9wZXJ0eSgnaW5pdCcs
IGtleSwgcGFyc2VQcm9wZXJ0eU1ldGhvZEZ1bmN0aW9uKHsgZ2VuZXJhdG9yOiBmYWxzZSB9KSwg
dHJ1ZSwgZmFsc2UpOwotICAgICAgICB9Ci0gICAgICAgIHRocm93VW5leHBlY3RlZChsZXgoKSk7
Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gcGFyc2VPYmplY3RJbml0aWFsaXNlcigpIHsKLSAgICAg
ICAgdmFyIHByb3BlcnRpZXMgPSBbXSwgcHJvcGVydHksIG5hbWUsIGtleSwga2luZCwgbWFwID0g
e30sIHRvU3RyaW5nID0gU3RyaW5nOwotCi0gICAgICAgIGV4cGVjdCgneycpOwotCi0gICAgICAg
IHdoaWxlICghbWF0Y2goJ30nKSkgewotICAgICAgICAgICAgcHJvcGVydHkgPSBwYXJzZU9iamVj
dFByb3BlcnR5KCk7Ci0KLSAgICAgICAgICAgIGlmIChwcm9wZXJ0eS5rZXkudHlwZSA9PT0gU3lu
dGF4LklkZW50aWZpZXIpIHsKLSAgICAgICAgICAgICAgICBuYW1lID0gcHJvcGVydHkua2V5Lm5h
bWU7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIG5hbWUgPSB0b1N0cmlu
Zyhwcm9wZXJ0eS5rZXkudmFsdWUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAga2luZCA9
IChwcm9wZXJ0eS5raW5kID09PSAnaW5pdCcpID8gUHJvcGVydHlLaW5kLkRhdGEgOiAocHJvcGVy
dHkua2luZCA9PT0gJ2dldCcpID8gUHJvcGVydHlLaW5kLkdldCA6IFByb3BlcnR5S2luZC5TZXQ7
Ci0KLSAgICAgICAgICAgIGtleSA9ICckJyArIG5hbWU7Ci0gICAgICAgICAgICBpZiAoT2JqZWN0
LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1hcCwga2V5KSkgewotICAgICAgICAgICAg
ICAgIGlmIChtYXBba2V5XSA9PT0gUHJvcGVydHlLaW5kLkRhdGEpIHsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKHN0cmljdCAmJiBraW5kID09PSBQcm9wZXJ0eUtpbmQuRGF0YSkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50KHt9LCBNZXNzYWdlcy5TdHJpY3RE
dXBsaWNhdGVQcm9wZXJ0eSk7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoa2luZCAh
PT0gUHJvcGVydHlLaW5kLkRhdGEpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRocm93RXJy
b3JUb2xlcmFudCh7fSwgTWVzc2FnZXMuQWNjZXNzb3JEYXRhUHJvcGVydHkpOwotICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKGtpbmQgPT09IFByb3BlcnR5S2luZC5EYXRhKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB0aHJvd0Vycm9yVG9sZXJhbnQoe30sIE1lc3NhZ2VzLkFjY2Vzc29yRGF0YVByb3BlcnR5
KTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtYXBba2V5XSAmIGtpbmQpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudCh7fSwgTWVzc2FnZXMuQWNj
ZXNzb3JHZXRTZXQpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIG1hcFtrZXldIHw9IGtpbmQ7Ci0gICAgICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgICAgIG1hcFtrZXldID0ga2luZDsKLSAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgcHJvcGVydGllcy5wdXNoKHByb3BlcnR5KTsKLQotICAgICAgICAgICAgaWYgKCFtYXRj
aCgnfScpKSB7Ci0gICAgICAgICAgICAgICAgZXhwZWN0KCcsJyk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLQotICAgICAgICBleHBlY3QoJ30nKTsKLQotICAgICAgICByZXR1cm4gZGVsZWdh
dGUuY3JlYXRlT2JqZWN0RXhwcmVzc2lvbihwcm9wZXJ0aWVzKTsKLSAgICB9Ci0KLSAgICBmdW5j
dGlvbiBwYXJzZVRlbXBsYXRlRWxlbWVudChvcHRpb24pIHsKLSAgICAgICAgdmFyIHRva2VuID0g
c2NhblRlbXBsYXRlRWxlbWVudChvcHRpb24pOwotICAgICAgICBpZiAoc3RyaWN0ICYmIHRva2Vu
Lm9jdGFsKSB7Ci0gICAgICAgICAgICB0aHJvd0Vycm9yKHRva2VuLCBNZXNzYWdlcy5TdHJpY3RP
Y3RhbExpdGVyYWwpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5jcmVhdGVU
ZW1wbGF0ZUVsZW1lbnQoeyByYXc6IHRva2VuLnZhbHVlLnJhdywgY29va2VkOiB0b2tlbi52YWx1
ZS5jb29rZWQgfSwgdG9rZW4udGFpbCk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gcGFyc2VUZW1w
bGF0ZUxpdGVyYWwoKSB7Ci0gICAgICAgIHZhciBxdWFzaSwgcXVhc2lzLCBleHByZXNzaW9uczsK
LQotICAgICAgICBxdWFzaSA9IHBhcnNlVGVtcGxhdGVFbGVtZW50KHsgaGVhZDogdHJ1ZSB9KTsK
LSAgICAgICAgcXVhc2lzID0gWyBxdWFzaSBdOwotICAgICAgICBleHByZXNzaW9ucyA9IFtdOwot
Ci0gICAgICAgIHdoaWxlICghcXVhc2kudGFpbCkgewotICAgICAgICAgICAgZXhwcmVzc2lvbnMu
cHVzaChwYXJzZUV4cHJlc3Npb24oKSk7Ci0gICAgICAgICAgICBxdWFzaSA9IHBhcnNlVGVtcGxh
dGVFbGVtZW50KHsgaGVhZDogZmFsc2UgfSk7Ci0gICAgICAgICAgICBxdWFzaXMucHVzaChxdWFz
aSk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlVGVtcGxhdGVM
aXRlcmFsKHF1YXNpcywgZXhwcmVzc2lvbnMpOwotICAgIH0KLQotICAgIC8vIDExLjEuNiBUaGUg
R3JvdXBpbmcgT3BlcmF0b3IKLQotICAgIGZ1bmN0aW9uIHBhcnNlR3JvdXBFeHByZXNzaW9uKCkg
ewotICAgICAgICB2YXIgZXhwcjsKLQotICAgICAgICBleHBlY3QoJygnKTsKLQotICAgICAgICAr
K3N0YXRlLnBhcmVudGhlc2l6ZWRDb3VudDsKLQotICAgICAgICBzdGF0ZS5hbGxvd0Fycm93RnVu
Y3Rpb24gPSAhc3RhdGUuYWxsb3dBcnJvd0Z1bmN0aW9uOwotICAgICAgICBleHByID0gcGFyc2VF
eHByZXNzaW9uKCk7Ci0gICAgICAgIHN0YXRlLmFsbG93QXJyb3dGdW5jdGlvbiA9IGZhbHNlOwot
Ci0gICAgICAgIGlmIChleHByLnR5cGUgIT09IFN5bnRheC5BcnJvd0Z1bmN0aW9uRXhwcmVzc2lv
bikgewotICAgICAgICAgICAgZXhwZWN0KCcpJyk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1
cm4gZXhwcjsKLSAgICB9Ci0KLQotICAgIC8vIDExLjEgUHJpbWFyeSBFeHByZXNzaW9ucwotCi0g
ICAgZnVuY3Rpb24gcGFyc2VQcmltYXJ5RXhwcmVzc2lvbigpIHsKLSAgICAgICAgdmFyIHR5cGUs
IHRva2VuOwotCi0gICAgICAgIHRva2VuID0gbG9va2FoZWFkOwotICAgICAgICB0eXBlID0gbG9v
a2FoZWFkLnR5cGU7Ci0KLSAgICAgICAgaWYgKHR5cGUgPT09IFRva2VuLklkZW50aWZpZXIpIHsK
LSAgICAgICAgICAgIGxleCgpOwotICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0ZUlk
ZW50aWZpZXIodG9rZW4udmFsdWUpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHR5cGUgPT09
IFRva2VuLlN0cmluZ0xpdGVyYWwgfHwgdHlwZSA9PT0gVG9rZW4uTnVtZXJpY0xpdGVyYWwpIHsK
LSAgICAgICAgICAgIGlmIChzdHJpY3QgJiYgbG9va2FoZWFkLm9jdGFsKSB7Ci0gICAgICAgICAg
ICAgICAgdGhyb3dFcnJvclRvbGVyYW50KGxvb2thaGVhZCwgTWVzc2FnZXMuU3RyaWN0T2N0YWxM
aXRlcmFsKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5jcmVh
dGVMaXRlcmFsKGxleCgpKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICh0eXBlID09PSBUb2tl
bi5LZXl3b3JkKSB7Ci0gICAgICAgICAgICBpZiAobWF0Y2hLZXl3b3JkKCd0aGlzJykpIHsKLSAg
ICAgICAgICAgICAgICBsZXgoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3Jl
YXRlVGhpc0V4cHJlc3Npb24oKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKG1h
dGNoS2V5d29yZCgnZnVuY3Rpb24nKSkgewotICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUZ1
bmN0aW9uRXhwcmVzc2lvbigpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAobWF0
Y2hLZXl3b3JkKCdjbGFzcycpKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlQ2xhc3NF
eHByZXNzaW9uKCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChtYXRjaEtleXdv
cmQoJ3N1cGVyJykpIHsKLSAgICAgICAgICAgICAgICBsZXgoKTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gZGVsZWdhdGUuY3JlYXRlSWRlbnRpZmllcignc3VwZXInKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotCi0gICAgICAgIGlmICh0eXBlID09PSBUb2tlbi5Cb29sZWFuTGl0ZXJhbCkg
ewotICAgICAgICAgICAgdG9rZW4gPSBsZXgoKTsKLSAgICAgICAgICAgIHRva2VuLnZhbHVlID0g
KHRva2VuLnZhbHVlID09PSAndHJ1ZScpOwotICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNy
ZWF0ZUxpdGVyYWwodG9rZW4pOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHR5cGUgPT09IFRv
a2VuLk51bGxMaXRlcmFsKSB7Ci0gICAgICAgICAgICB0b2tlbiA9IGxleCgpOwotICAgICAgICAg
ICAgdG9rZW4udmFsdWUgPSBudWxsOwotICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0
ZUxpdGVyYWwodG9rZW4pOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKG1hdGNoKCdbJykpIHsK
LSAgICAgICAgICAgIHJldHVybiBwYXJzZUFycmF5SW5pdGlhbGlzZXIoKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIGlmIChtYXRjaCgneycpKSB7Ci0gICAgICAgICAgICByZXR1cm4gcGFyc2VPYmpl
Y3RJbml0aWFsaXNlcigpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKG1hdGNoKCcoJykpIHsK
LSAgICAgICAgICAgIHJldHVybiBwYXJzZUdyb3VwRXhwcmVzc2lvbigpOwotICAgICAgICB9Ci0K
LSAgICAgICAgaWYgKG1hdGNoKCcvJykgfHwgbWF0Y2goJy89JykpIHsKLSAgICAgICAgICAgIHJl
dHVybiBkZWxlZ2F0ZS5jcmVhdGVMaXRlcmFsKHNjYW5SZWdFeHAoKSk7Ci0gICAgICAgIH0KLQot
ICAgICAgICBpZiAodHlwZSA9PT0gVG9rZW4uVGVtcGxhdGUpIHsKLSAgICAgICAgICAgIHJldHVy
biBwYXJzZVRlbXBsYXRlTGl0ZXJhbCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKG1hdGNo
KCc8JykpIHsKLSAgICAgICAgICAgIHJldHVybiBwYXJzZVhKU0VsZW1lbnQoKTsKLSAgICAgICAg
fQotCi0gICAgICAgIHJldHVybiB0aHJvd1VuZXhwZWN0ZWQobGV4KCkpOwotICAgIH0KLQotICAg
IC8vIDExLjIgTGVmdC1IYW5kLVNpZGUgRXhwcmVzc2lvbnMKLQotICAgIGZ1bmN0aW9uIHBhcnNl
QXJndW1lbnRzKCkgewotICAgICAgICB2YXIgYXJncyA9IFtdLCBhcmc7Ci0KLSAgICAgICAgZXhw
ZWN0KCcoJyk7Ci0KLSAgICAgICAgaWYgKCFtYXRjaCgnKScpKSB7Ci0gICAgICAgICAgICB3aGls
ZSAoaW5kZXggPCBsZW5ndGgpIHsKLSAgICAgICAgICAgICAgICBhcmcgPSBwYXJzZVNwcmVhZE9y
QXNzaWdubWVudEV4cHJlc3Npb24oKTsKLSAgICAgICAgICAgICAgICBhcmdzLnB1c2goYXJnKTsK
LQotICAgICAgICAgICAgICAgIGlmIChtYXRjaCgnKScpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYXJnLnR5cGUgPT09IFN5bnRheC5T
cHJlYWRFbGVtZW50KSB7Ci0gICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3Nh
Z2VzLkVsZW1lbnRBZnRlclNwcmVhZEVsZW1lbnQpOwotICAgICAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgICAgIGV4cGVjdCgnLCcpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAg
ICAgICAgZXhwZWN0KCcpJyk7Ci0KLSAgICAgICAgcmV0dXJuIGFyZ3M7Ci0gICAgfQotCi0gICAg
ZnVuY3Rpb24gcGFyc2VTcHJlYWRPckFzc2lnbm1lbnRFeHByZXNzaW9uKCkgewotICAgICAgICBp
ZiAobWF0Y2goJy4uLicpKSB7Ci0gICAgICAgICAgICBsZXgoKTsKLSAgICAgICAgICAgIHJldHVy
biBkZWxlZ2F0ZS5jcmVhdGVTcHJlYWRFbGVtZW50KHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24o
KSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24o
KTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBwYXJzZU5vbkNvbXB1dGVkUHJvcGVydHkoKSB7Ci0g
ICAgICAgIHZhciB0b2tlbiA9IGxleCgpOwotCi0gICAgICAgIGlmICghaXNJZGVudGlmaWVyTmFt
ZSh0b2tlbikpIHsKLSAgICAgICAgICAgIHRocm93VW5leHBlY3RlZCh0b2tlbik7Ci0gICAgICAg
IH0KLQotICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlSWRlbnRpZmllcih0b2tlbi52YWx1
ZSk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gcGFyc2VOb25Db21wdXRlZE1lbWJlcigpIHsKLSAg
ICAgICAgZXhwZWN0KCcuJyk7Ci0KLSAgICAgICAgcmV0dXJuIHBhcnNlTm9uQ29tcHV0ZWRQcm9w
ZXJ0eSgpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHBhcnNlQ29tcHV0ZWRNZW1iZXIoKSB7Ci0g
ICAgICAgIHZhciBleHByOwotCi0gICAgICAgIGV4cGVjdCgnWycpOwotCi0gICAgICAgIGV4cHIg
PSBwYXJzZUV4cHJlc3Npb24oKTsKLQotICAgICAgICBleHBlY3QoJ10nKTsKLQotICAgICAgICBy
ZXR1cm4gZXhwcjsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBwYXJzZU5ld0V4cHJlc3Npb24oKSB7
Ci0gICAgICAgIHZhciBjYWxsZWUsIGFyZ3M7Ci0KLSAgICAgICAgZXhwZWN0S2V5d29yZCgnbmV3
Jyk7Ci0gICAgICAgIGNhbGxlZSA9IHBhcnNlTGVmdEhhbmRTaWRlRXhwcmVzc2lvbigpOwotICAg
ICAgICBhcmdzID0gbWF0Y2goJygnKSA/IHBhcnNlQXJndW1lbnRzKCkgOiBbXTsKLQotICAgICAg
ICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlTmV3RXhwcmVzc2lvbihjYWxsZWUsIGFyZ3MpOwotICAg
IH0KLQotICAgIGZ1bmN0aW9uIHBhcnNlTGVmdEhhbmRTaWRlRXhwcmVzc2lvbkFsbG93Q2FsbCgp
IHsKLSAgICAgICAgdmFyIGV4cHIsIGFyZ3MsIHByb3BlcnR5OwotCi0gICAgICAgIGV4cHIgPSBt
YXRjaEtleXdvcmQoJ25ldycpID8gcGFyc2VOZXdFeHByZXNzaW9uKCkgOiBwYXJzZVByaW1hcnlF
eHByZXNzaW9uKCk7Ci0KLSAgICAgICAgd2hpbGUgKG1hdGNoKCcuJykgfHwgbWF0Y2goJ1snKSB8
fCBtYXRjaCgnKCcpIHx8IGxvb2thaGVhZC50eXBlID09PSBUb2tlbi5UZW1wbGF0ZSkgewotICAg
ICAgICAgICAgaWYgKG1hdGNoKCcoJykpIHsKLSAgICAgICAgICAgICAgICBhcmdzID0gcGFyc2VB
cmd1bWVudHMoKTsKLSAgICAgICAgICAgICAgICBleHByID0gZGVsZWdhdGUuY3JlYXRlQ2FsbEV4
cHJlc3Npb24oZXhwciwgYXJncyk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKG1hdGNoKCdbJykp
IHsKLSAgICAgICAgICAgICAgICBleHByID0gZGVsZWdhdGUuY3JlYXRlTWVtYmVyRXhwcmVzc2lv
bignWycsIGV4cHIsIHBhcnNlQ29tcHV0ZWRNZW1iZXIoKSk7Ci0gICAgICAgICAgICB9IGVsc2Ug
aWYgKG1hdGNoKCcuJykpIHsKLSAgICAgICAgICAgICAgICBleHByID0gZGVsZWdhdGUuY3JlYXRl
TWVtYmVyRXhwcmVzc2lvbignLicsIGV4cHIsIHBhcnNlTm9uQ29tcHV0ZWRNZW1iZXIoKSk7Ci0g
ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGV4cHIgPSBkZWxlZ2F0ZS5jcmVh
dGVUYWdnZWRUZW1wbGF0ZUV4cHJlc3Npb24oZXhwciwgcGFyc2VUZW1wbGF0ZUxpdGVyYWwoKSk7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gZXhwcjsKLSAgICB9
Ci0KLQotICAgIGZ1bmN0aW9uIHBhcnNlTGVmdEhhbmRTaWRlRXhwcmVzc2lvbigpIHsKLSAgICAg
ICAgdmFyIGV4cHIsIHByb3BlcnR5OwotCi0gICAgICAgIGV4cHIgPSBtYXRjaEtleXdvcmQoJ25l
dycpID8gcGFyc2VOZXdFeHByZXNzaW9uKCkgOiBwYXJzZVByaW1hcnlFeHByZXNzaW9uKCk7Ci0K
LSAgICAgICAgd2hpbGUgKG1hdGNoKCcuJykgfHwgbWF0Y2goJ1snKSB8fCBsb29rYWhlYWQudHlw
ZSA9PT0gVG9rZW4uVGVtcGxhdGUpIHsKLSAgICAgICAgICAgIGlmIChtYXRjaCgnWycpKSB7Ci0g
ICAgICAgICAgICAgICAgZXhwciA9IGRlbGVnYXRlLmNyZWF0ZU1lbWJlckV4cHJlc3Npb24oJ1sn
LCBleHByLCBwYXJzZUNvbXB1dGVkTWVtYmVyKCkpOwotICAgICAgICAgICAgfSBlbHNlIGlmICht
YXRjaCgnLicpKSB7Ci0gICAgICAgICAgICAgICAgZXhwciA9IGRlbGVnYXRlLmNyZWF0ZU1lbWJl
ckV4cHJlc3Npb24oJy4nLCBleHByLCBwYXJzZU5vbkNvbXB1dGVkTWVtYmVyKCkpOwotICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBleHByID0gZGVsZWdhdGUuY3JlYXRlVGFn
Z2VkVGVtcGxhdGVFeHByZXNzaW9uKGV4cHIsIHBhcnNlVGVtcGxhdGVMaXRlcmFsKCkpOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGV4cHI7Ci0gICAgfQotCi0g
ICAgLy8gMTEuMyBQb3N0Zml4IEV4cHJlc3Npb25zCi0KLSAgICBmdW5jdGlvbiBwYXJzZVBvc3Rm
aXhFeHByZXNzaW9uKCkgewotICAgICAgICB2YXIgZXhwciA9IHBhcnNlTGVmdEhhbmRTaWRlRXhw
cmVzc2lvbkFsbG93Q2FsbCgpLAotICAgICAgICAgICAgdG9rZW4gPSBsb29rYWhlYWQ7Ci0KLSAg
ICAgICAgaWYgKGxvb2thaGVhZC50eXBlICE9PSBUb2tlbi5QdW5jdHVhdG9yKSB7Ci0gICAgICAg
ICAgICByZXR1cm4gZXhwcjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICgobWF0Y2goJysrJykg
fHwgbWF0Y2goJy0tJykpICYmICFwZWVrTGluZVRlcm1pbmF0b3IoKSkgewotICAgICAgICAgICAg
Ly8gMTEuMy4xLCAxMS4zLjIKLSAgICAgICAgICAgIGlmIChzdHJpY3QgJiYgZXhwci50eXBlID09
PSBTeW50YXguSWRlbnRpZmllciAmJiBpc1Jlc3RyaWN0ZWRXb3JkKGV4cHIubmFtZSkpIHsKLSAg
ICAgICAgICAgICAgICB0aHJvd0Vycm9yVG9sZXJhbnQoe30sIE1lc3NhZ2VzLlN0cmljdExIU1Bv
c3RmaXgpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoIWlzTGVmdEhhbmRTaWRl
KGV4cHIpKSB7Ci0gICAgICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuSW52YWxp
ZExIU0luQXNzaWdubWVudCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHRva2VuID0g
bGV4KCk7Ci0gICAgICAgICAgICBleHByID0gZGVsZWdhdGUuY3JlYXRlUG9zdGZpeEV4cHJlc3Np
b24odG9rZW4udmFsdWUsIGV4cHIpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGV4cHI7
Ci0gICAgfQotCi0gICAgLy8gMTEuNCBVbmFyeSBPcGVyYXRvcnMKLQotICAgIGZ1bmN0aW9uIHBh
cnNlVW5hcnlFeHByZXNzaW9uKCkgewotICAgICAgICB2YXIgdG9rZW4sIGV4cHI7Ci0KLSAgICAg
ICAgaWYgKGxvb2thaGVhZC50eXBlICE9PSBUb2tlbi5QdW5jdHVhdG9yICYmIGxvb2thaGVhZC50
eXBlICE9PSBUb2tlbi5LZXl3b3JkKSB7Ci0gICAgICAgICAgICByZXR1cm4gcGFyc2VQb3N0Zml4
RXhwcmVzc2lvbigpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKG1hdGNoKCcrKycpIHx8IG1h
dGNoKCctLScpKSB7Ci0gICAgICAgICAgICB0b2tlbiA9IGxleCgpOwotICAgICAgICAgICAgZXhw
ciA9IHBhcnNlVW5hcnlFeHByZXNzaW9uKCk7Ci0gICAgICAgICAgICAvLyAxMS40LjQsIDExLjQu
NQotICAgICAgICAgICAgaWYgKHN0cmljdCAmJiBleHByLnR5cGUgPT09IFN5bnRheC5JZGVudGlm
aWVyICYmIGlzUmVzdHJpY3RlZFdvcmQoZXhwci5uYW1lKSkgewotICAgICAgICAgICAgICAgIHRo
cm93RXJyb3JUb2xlcmFudCh7fSwgTWVzc2FnZXMuU3RyaWN0TEhTUHJlZml4KTsKLSAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgaWYgKCFpc0xlZnRIYW5kU2lkZShleHByKSkgewotICAgICAg
ICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLkludmFsaWRMSFNJbkFzc2lnbm1lbnQp
OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlVW5h
cnlFeHByZXNzaW9uKHRva2VuLnZhbHVlLCBleHByKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlm
IChtYXRjaCgnKycpIHx8IG1hdGNoKCctJykgfHwgbWF0Y2goJ34nKSB8fCBtYXRjaCgnIScpKSB7
Ci0gICAgICAgICAgICB0b2tlbiA9IGxleCgpOwotICAgICAgICAgICAgZXhwciA9IHBhcnNlVW5h
cnlFeHByZXNzaW9uKCk7Ci0gICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlVW5hcnlF
eHByZXNzaW9uKHRva2VuLnZhbHVlLCBleHByKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICht
YXRjaEtleXdvcmQoJ2RlbGV0ZScpIHx8IG1hdGNoS2V5d29yZCgndm9pZCcpIHx8IG1hdGNoS2V5
d29yZCgndHlwZW9mJykpIHsKLSAgICAgICAgICAgIHRva2VuID0gbGV4KCk7Ci0gICAgICAgICAg
ICBleHByID0gcGFyc2VVbmFyeUV4cHJlc3Npb24oKTsKLSAgICAgICAgICAgIGV4cHIgPSBkZWxl
Z2F0ZS5jcmVhdGVVbmFyeUV4cHJlc3Npb24odG9rZW4udmFsdWUsIGV4cHIpOwotICAgICAgICAg
ICAgaWYgKHN0cmljdCAmJiBleHByLm9wZXJhdG9yID09PSAnZGVsZXRlJyAmJiBleHByLmFyZ3Vt
ZW50LnR5cGUgPT09IFN5bnRheC5JZGVudGlmaWVyKSB7Ci0gICAgICAgICAgICAgICAgdGhyb3dF
cnJvclRvbGVyYW50KHt9LCBNZXNzYWdlcy5TdHJpY3REZWxldGUpOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgcmV0dXJuIGV4cHI7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gcGFy
c2VQb3N0Zml4RXhwcmVzc2lvbigpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGJpbmFyeVByZWNl
ZGVuY2UodG9rZW4sIGFsbG93SW4pIHsKLSAgICAgICAgdmFyIHByZWMgPSAwOwotCi0gICAgICAg
IGlmICh0b2tlbi50eXBlICE9PSBUb2tlbi5QdW5jdHVhdG9yICYmIHRva2VuLnR5cGUgIT09IFRv
a2VuLktleXdvcmQpIHsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0KLSAgICAg
ICAgc3dpdGNoICh0b2tlbi52YWx1ZSkgewotICAgICAgICBjYXNlICd8fCc6Ci0gICAgICAgICAg
ICBwcmVjID0gMTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgJyYmJzoKLSAg
ICAgICAgICAgIHByZWMgPSAyOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSAn
fCc6Ci0gICAgICAgICAgICBwcmVjID0gMzsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAg
IGNhc2UgJ14nOgotICAgICAgICAgICAgcHJlYyA9IDQ7Ci0gICAgICAgICAgICBicmVhazsKLQot
ICAgICAgICBjYXNlICcmJzoKLSAgICAgICAgICAgIHByZWMgPSA1OwotICAgICAgICAgICAgYnJl
YWs7Ci0KLSAgICAgICAgY2FzZSAnPT0nOgotICAgICAgICBjYXNlICchPSc6Ci0gICAgICAgIGNh
c2UgJz09PSc6Ci0gICAgICAgIGNhc2UgJyE9PSc6Ci0gICAgICAgICAgICBwcmVjID0gNjsKLSAg
ICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgJzwnOgotICAgICAgICBjYXNlICc+JzoK
LSAgICAgICAgY2FzZSAnPD0nOgotICAgICAgICBjYXNlICc+PSc6Ci0gICAgICAgIGNhc2UgJ2lu
c3RhbmNlb2YnOgotICAgICAgICAgICAgcHJlYyA9IDc7Ci0gICAgICAgICAgICBicmVhazsKLQot
ICAgICAgICBjYXNlICdpbic6Ci0gICAgICAgICAgICBwcmVjID0gYWxsb3dJbiA/IDcgOiAwOwot
ICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSAnPDwnOgotICAgICAgICBjYXNlICc+
Pic6Ci0gICAgICAgIGNhc2UgJz4+Pic6Ci0gICAgICAgICAgICBwcmVjID0gODsKLSAgICAgICAg
ICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgJysnOgotICAgICAgICBjYXNlICctJzoKLSAgICAg
ICAgICAgIHByZWMgPSA5OwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSAnKic6
Ci0gICAgICAgIGNhc2UgJy8nOgotICAgICAgICBjYXNlICclJzoKLSAgICAgICAgICAgIHByZWMg
PSAxMTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBwcmVjOwotICAgIH0KLQotICAg
IC8vIDExLjUgTXVsdGlwbGljYXRpdmUgT3BlcmF0b3JzCi0gICAgLy8gMTEuNiBBZGRpdGl2ZSBP
cGVyYXRvcnMKLSAgICAvLyAxMS43IEJpdHdpc2UgU2hpZnQgT3BlcmF0b3JzCi0gICAgLy8gMTEu
OCBSZWxhdGlvbmFsIE9wZXJhdG9ycwotICAgIC8vIDExLjkgRXF1YWxpdHkgT3BlcmF0b3JzCi0g
ICAgLy8gMTEuMTAgQmluYXJ5IEJpdHdpc2UgT3BlcmF0b3JzCi0gICAgLy8gMTEuMTEgQmluYXJ5
IExvZ2ljYWwgT3BlcmF0b3JzCi0KLSAgICBmdW5jdGlvbiBwYXJzZUJpbmFyeUV4cHJlc3Npb24o
KSB7Ci0gICAgICAgIHZhciBleHByLCB0b2tlbiwgcHJlYywgcHJldmlvdXNBbGxvd0luLCBzdGFj
aywgcmlnaHQsIG9wZXJhdG9yLCBsZWZ0LCBpOwotCi0gICAgICAgIHByZXZpb3VzQWxsb3dJbiA9
IHN0YXRlLmFsbG93SW47Ci0gICAgICAgIHN0YXRlLmFsbG93SW4gPSB0cnVlOwotCi0gICAgICAg
IGV4cHIgPSBwYXJzZVVuYXJ5RXhwcmVzc2lvbigpOwotCi0gICAgICAgIHRva2VuID0gbG9va2Fo
ZWFkOwotICAgICAgICBwcmVjID0gYmluYXJ5UHJlY2VkZW5jZSh0b2tlbiwgcHJldmlvdXNBbGxv
d0luKTsKLSAgICAgICAgaWYgKHByZWMgPT09IDApIHsKLSAgICAgICAgICAgIHJldHVybiBleHBy
OwotICAgICAgICB9Ci0gICAgICAgIHRva2VuLnByZWMgPSBwcmVjOwotICAgICAgICBsZXgoKTsK
LQotICAgICAgICBzdGFjayA9IFtleHByLCB0b2tlbiwgcGFyc2VVbmFyeUV4cHJlc3Npb24oKV07
Ci0KLSAgICAgICAgd2hpbGUgKChwcmVjID0gYmluYXJ5UHJlY2VkZW5jZShsb29rYWhlYWQsIHBy
ZXZpb3VzQWxsb3dJbikpID4gMCkgewotCi0gICAgICAgICAgICAvLyBSZWR1Y2U6IG1ha2UgYSBi
aW5hcnkgZXhwcmVzc2lvbiBmcm9tIHRoZSB0aHJlZSB0b3Btb3N0IGVudHJpZXMuCi0gICAgICAg
ICAgICB3aGlsZSAoKHN0YWNrLmxlbmd0aCA+IDIpICYmIChwcmVjIDw9IHN0YWNrW3N0YWNrLmxl
bmd0aCAtIDJdLnByZWMpKSB7Ci0gICAgICAgICAgICAgICAgcmlnaHQgPSBzdGFjay5wb3AoKTsK
LSAgICAgICAgICAgICAgICBvcGVyYXRvciA9IHN0YWNrLnBvcCgpLnZhbHVlOwotICAgICAgICAg
ICAgICAgIGxlZnQgPSBzdGFjay5wb3AoKTsKLSAgICAgICAgICAgICAgICBzdGFjay5wdXNoKGRl
bGVnYXRlLmNyZWF0ZUJpbmFyeUV4cHJlc3Npb24ob3BlcmF0b3IsIGxlZnQsIHJpZ2h0KSk7Ci0g
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIFNoaWZ0LgotICAgICAgICAgICAgdG9rZW4g
PSBsZXgoKTsKLSAgICAgICAgICAgIHRva2VuLnByZWMgPSBwcmVjOwotICAgICAgICAgICAgc3Rh
Y2sucHVzaCh0b2tlbik7Ci0gICAgICAgICAgICBzdGFjay5wdXNoKHBhcnNlVW5hcnlFeHByZXNz
aW9uKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGUuYWxsb3dJbiA9IHByZXZpb3VzQWxs
b3dJbjsKLQotICAgICAgICAvLyBGaW5hbCByZWR1Y2UgdG8gY2xlYW4tdXAgdGhlIHN0YWNrLgot
ICAgICAgICBpID0gc3RhY2subGVuZ3RoIC0gMTsKLSAgICAgICAgZXhwciA9IHN0YWNrW2ldOwot
ICAgICAgICB3aGlsZSAoaSA+IDEpIHsKLSAgICAgICAgICAgIGV4cHIgPSBkZWxlZ2F0ZS5jcmVh
dGVCaW5hcnlFeHByZXNzaW9uKHN0YWNrW2kgLSAxXS52YWx1ZSwgc3RhY2tbaSAtIDJdLCBleHBy
KTsKLSAgICAgICAgICAgIGkgLT0gMjsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gZXhwcjsK
LSAgICB9Ci0KLQotICAgIC8vIDExLjEyIENvbmRpdGlvbmFsIE9wZXJhdG9yCi0KLSAgICBmdW5j
dGlvbiBwYXJzZUNvbmRpdGlvbmFsRXhwcmVzc2lvbigpIHsKLSAgICAgICAgdmFyIGV4cHIsIHBy
ZXZpb3VzQWxsb3dJbiwgY29uc2VxdWVudCwgYWx0ZXJuYXRlOwotCi0gICAgICAgIGV4cHIgPSBw
YXJzZUJpbmFyeUV4cHJlc3Npb24oKTsKLQotICAgICAgICBpZiAobWF0Y2goJz8nKSkgewotICAg
ICAgICAgICAgbGV4KCk7Ci0gICAgICAgICAgICBwcmV2aW91c0FsbG93SW4gPSBzdGF0ZS5hbGxv
d0luOwotICAgICAgICAgICAgc3RhdGUuYWxsb3dJbiA9IHRydWU7Ci0gICAgICAgICAgICBjb25z
ZXF1ZW50ID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbigpOwotICAgICAgICAgICAgc3RhdGUu
YWxsb3dJbiA9IHByZXZpb3VzQWxsb3dJbjsKLSAgICAgICAgICAgIGV4cGVjdCgnOicpOwotICAg
ICAgICAgICAgYWx0ZXJuYXRlID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbigpOwotCi0gICAg
ICAgICAgICBleHByID0gZGVsZWdhdGUuY3JlYXRlQ29uZGl0aW9uYWxFeHByZXNzaW9uKGV4cHIs
IGNvbnNlcXVlbnQsIGFsdGVybmF0ZSk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gZXhw
cjsKLSAgICB9Ci0KLSAgICAvLyAxMS4xMyBBc3NpZ25tZW50IE9wZXJhdG9ycwotCi0gICAgZnVu
Y3Rpb24gcmVpbnRlcnByZXRBc0Fzc2lnbm1lbnRCaW5kaW5nUGF0dGVybihleHByKSB7Ci0gICAg
ICAgIHZhciBpLCBsZW4sIHByb3BlcnR5LCBlbGVtZW50OwotCi0gICAgICAgIGlmIChleHByLnR5
cGUgPT09IFN5bnRheC5PYmplY3RFeHByZXNzaW9uKSB7Ci0gICAgICAgICAgICBleHByLnR5cGUg
PSBTeW50YXguT2JqZWN0UGF0dGVybjsKLSAgICAgICAgICAgIGZvciAoaSA9IDAsIGxlbiA9IGV4
cHIucHJvcGVydGllcy5sZW5ndGg7IGkgPCBsZW47IGkgKz0gMSkgewotICAgICAgICAgICAgICAg
IHByb3BlcnR5ID0gZXhwci5wcm9wZXJ0aWVzW2ldOwotICAgICAgICAgICAgICAgIGlmIChwcm9w
ZXJ0eS5raW5kICE9PSAnaW5pdCcpIHsKLSAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvcih7
fSwgTWVzc2FnZXMuSW52YWxpZExIU0luQXNzaWdubWVudCk7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0QXNBc3NpZ25tZW50QmluZGluZ1BhdHRlcm4ocHJv
cGVydHkudmFsdWUpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKGV4cHIudHlw
ZSA9PT0gU3ludGF4LkFycmF5RXhwcmVzc2lvbikgewotICAgICAgICAgICAgZXhwci50eXBlID0g
U3ludGF4LkFycmF5UGF0dGVybjsKLSAgICAgICAgICAgIGZvciAoaSA9IDAsIGxlbiA9IGV4cHIu
ZWxlbWVudHMubGVuZ3RoOyBpIDwgbGVuOyBpICs9IDEpIHsKLSAgICAgICAgICAgICAgICBlbGVt
ZW50ID0gZXhwci5lbGVtZW50c1tpXTsKLSAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCkgewot
ICAgICAgICAgICAgICAgICAgICByZWludGVycHJldEFzQXNzaWdubWVudEJpbmRpbmdQYXR0ZXJu
KGVsZW1lbnQpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBl
bHNlIGlmIChleHByLnR5cGUgPT09IFN5bnRheC5JZGVudGlmaWVyKSB7Ci0gICAgICAgICAgICBp
ZiAoaXNSZXN0cmljdGVkV29yZChleHByLm5hbWUpKSB7Ci0gICAgICAgICAgICAgICAgdGhyb3dF
cnJvcih7fSwgTWVzc2FnZXMuSW52YWxpZExIU0luQXNzaWdubWVudCk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0gZWxzZSBpZiAoZXhwci50eXBlID09PSBTeW50YXguU3ByZWFkRWxlbWVudCkg
ewotICAgICAgICAgICAgcmVpbnRlcnByZXRBc0Fzc2lnbm1lbnRCaW5kaW5nUGF0dGVybihleHBy
LmFyZ3VtZW50KTsKLSAgICAgICAgICAgIGlmIChleHByLmFyZ3VtZW50LnR5cGUgPT09IFN5bnRh
eC5PYmplY3RQYXR0ZXJuKSB7Ci0gICAgICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2Fn
ZXMuT2JqZWN0UGF0dGVybkFzU3ByZWFkKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIGlmIChleHByLnR5cGUgIT09IFN5bnRheC5NZW1iZXJFeHByZXNzaW9u
ICYmIGV4cHIudHlwZSAhPT0gU3ludGF4LkNhbGxFeHByZXNzaW9uICYmIGV4cHIudHlwZSAhPT0g
U3ludGF4Lk5ld0V4cHJlc3Npb24pIHsKLSAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBN
ZXNzYWdlcy5JbnZhbGlkTEhTSW5Bc3NpZ25tZW50KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotICAgIH0KLQotCi0gICAgZnVuY3Rpb24gcmVpbnRlcnByZXRBc0Rlc3RydWN0dXJlZFBhcmFt
ZXRlcihvcHRpb25zLCBleHByKSB7Ci0gICAgICAgIHZhciBpLCBsZW4sIHByb3BlcnR5LCBlbGVt
ZW50OwotCi0gICAgICAgIGlmIChleHByLnR5cGUgPT09IFN5bnRheC5PYmplY3RFeHByZXNzaW9u
KSB7Ci0gICAgICAgICAgICBleHByLnR5cGUgPSBTeW50YXguT2JqZWN0UGF0dGVybjsKLSAgICAg
ICAgICAgIGZvciAoaSA9IDAsIGxlbiA9IGV4cHIucHJvcGVydGllcy5sZW5ndGg7IGkgPCBsZW47
IGkgKz0gMSkgewotICAgICAgICAgICAgICAgIHByb3BlcnR5ID0gZXhwci5wcm9wZXJ0aWVzW2ld
OwotICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0eS5raW5kICE9PSAnaW5pdCcpIHsKLSAgICAg
ICAgICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuSW52YWxpZExIU0luRm9ybWFs
c0xpc3QpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZWludGVycHJldEFz
RGVzdHJ1Y3R1cmVkUGFyYW1ldGVyKG9wdGlvbnMsIHByb3BlcnR5LnZhbHVlKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChleHByLnR5cGUgPT09IFN5bnRheC5BcnJheUV4cHJl
c3Npb24pIHsKLSAgICAgICAgICAgIGV4cHIudHlwZSA9IFN5bnRheC5BcnJheVBhdHRlcm47Ci0g
ICAgICAgICAgICBmb3IgKGkgPSAwLCBsZW4gPSBleHByLmVsZW1lbnRzLmxlbmd0aDsgaSA8IGxl
bjsgaSArPSAxKSB7Ci0gICAgICAgICAgICAgICAgZWxlbWVudCA9IGV4cHIuZWxlbWVudHNbaV07
Ci0gICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQpIHsKLSAgICAgICAgICAgICAgICAgICAgcmVp
bnRlcnByZXRBc0Rlc3RydWN0dXJlZFBhcmFtZXRlcihvcHRpb25zLCBlbGVtZW50KTsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAoZXhwci50eXBl
ID09PSBTeW50YXguSWRlbnRpZmllcikgewotICAgICAgICAgICAgdmFsaWRhdGVQYXJhbShvcHRp
b25zLCBleHByLCBleHByLm5hbWUpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYg
KGV4cHIudHlwZSAhPT0gU3ludGF4Lk1lbWJlckV4cHJlc3Npb24pIHsKLSAgICAgICAgICAgICAg
ICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5JbnZhbGlkTEhTSW5Gb3JtYWxzTGlzdCk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBmdW5jdGlvbiByZWludGVycHJldEFz
Q292ZXJGb3JtYWxzTGlzdChleHByZXNzaW9ucykgewotICAgICAgICB2YXIgaSwgbGVuLCBwYXJh
bSwgcGFyYW1zLCBvcHRpb25zLCByZXN0OwotCi0gICAgICAgIHBhcmFtcyA9IFtdOwotICAgICAg
ICByZXN0ID0gbnVsbDsKLSAgICAgICAgb3B0aW9ucyA9IHsKLSAgICAgICAgICAgIHBhcmFtU2V0
OiB7fQotICAgICAgICB9OwotCi0gICAgICAgIGZvciAoaSA9IDAsIGxlbiA9IGV4cHJlc3Npb25z
Lmxlbmd0aDsgaSA8IGxlbjsgaSArPSAxKSB7Ci0gICAgICAgICAgICBwYXJhbSA9IGV4cHJlc3Np
b25zW2ldOwotICAgICAgICAgICAgaWYgKHBhcmFtLnR5cGUgPT09IFN5bnRheC5JZGVudGlmaWVy
KSB7Ci0gICAgICAgICAgICAgICAgcGFyYW1zLnB1c2gocGFyYW0pOwotICAgICAgICAgICAgICAg
IHZhbGlkYXRlUGFyYW0ob3B0aW9ucywgcGFyYW0sIHBhcmFtLm5hbWUpOwotICAgICAgICAgICAg
fSBlbHNlIGlmIChwYXJhbS50eXBlID09PSBTeW50YXguT2JqZWN0RXhwcmVzc2lvbiB8fCBwYXJh
bS50eXBlID09PSBTeW50YXguQXJyYXlFeHByZXNzaW9uKSB7Ci0gICAgICAgICAgICAgICAgcmVp
bnRlcnByZXRBc0Rlc3RydWN0dXJlZFBhcmFtZXRlcihvcHRpb25zLCBwYXJhbSk7Ci0gICAgICAg
ICAgICAgICAgcGFyYW1zLnB1c2gocGFyYW0pOwotICAgICAgICAgICAgfSBlbHNlIGlmIChwYXJh
bS50eXBlID09PSBTeW50YXguU3ByZWFkRWxlbWVudCkgewotICAgICAgICAgICAgICAgIGFzc2Vy
dChpID09PSBsZW4gLSAxLCAiSXQgaXMgZ3VhcmFudGVlZCB0aGF0IFNwcmVhZEVsZW1lbnQgaXMg
bGFzdCBlbGVtZW50IGJ5IHBhcnNlRXhwcmVzc2lvbiIpOwotICAgICAgICAgICAgICAgIHJlaW50
ZXJwcmV0QXNEZXN0cnVjdHVyZWRQYXJhbWV0ZXIob3B0aW9ucywgcGFyYW0uYXJndW1lbnQpOwot
ICAgICAgICAgICAgICAgIHJlc3QgPSBwYXJhbS5hcmd1bWVudDsKLSAgICAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLQotICAgICAgICBpZiAob3B0aW9ucy5maXJzdFJlc3RyaWN0ZWQpIHsKLSAgICAgICAgICAg
IHRocm93RXJyb3Iob3B0aW9ucy5maXJzdFJlc3RyaWN0ZWQsIG9wdGlvbnMubWVzc2FnZSk7Ci0g
ICAgICAgIH0KLSAgICAgICAgaWYgKG9wdGlvbnMuc3RyaWN0ZWQpIHsKLSAgICAgICAgICAgIHRo
cm93RXJyb3JUb2xlcmFudChvcHRpb25zLnN0cmljdGVkLCBvcHRpb25zLm1lc3NhZ2UpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHsgcGFyYW1zOiBwYXJhbXMsIHJlc3Q6IHJlc3QgfTsK
LSAgICB9Ci0KLSAgICBmdW5jdGlvbiBwYXJzZUFycm93RnVuY3Rpb25FeHByZXNzaW9uKG9wdGlv
bnMpIHsKLSAgICAgICAgdmFyIHByZXZpb3VzU3RyaWN0LCBwcmV2aW91c1lpZWxkQWxsb3dlZCwg
Ym9keTsKLQotICAgICAgICBleHBlY3QoJz0+Jyk7Ci0KLSAgICAgICAgcHJldmlvdXNTdHJpY3Qg
PSBzdHJpY3Q7Ci0gICAgICAgIHByZXZpb3VzWWllbGRBbGxvd2VkID0gc3RhdGUueWllbGRBbGxv
d2VkOwotICAgICAgICBzdHJpY3QgPSB0cnVlOwotICAgICAgICBzdGF0ZS55aWVsZEFsbG93ZWQg
PSBmYWxzZTsKLSAgICAgICAgYm9keSA9IHBhcnNlQ29uY2lzZUJvZHkoKTsKLSAgICAgICAgc3Ry
aWN0ID0gcHJldmlvdXNTdHJpY3Q7Ci0gICAgICAgIHN0YXRlLnlpZWxkQWxsb3dlZCA9IHByZXZp
b3VzWWllbGRBbGxvd2VkOwotCi0gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5jcmVhdGVBcnJvd0Z1
bmN0aW9uRXhwcmVzc2lvbihvcHRpb25zLnBhcmFtcywgW10sIGJvZHksIG9wdGlvbnMucmVzdCwg
Ym9keS50eXBlICE9PSBTeW50YXguQmxvY2tTdGF0ZW1lbnQpOwotICAgIH0KLQotICAgIGZ1bmN0
aW9uIHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oKSB7Ci0gICAgICAgIHZhciBleHByLCB0b2tl
biwgcGFyYW1zLCBvbGRQYXJlbnRoZXNpemVkQ291bnQ7Ci0KLSAgICAgICAgaWYgKG1hdGNoS2V5
d29yZCgneWllbGQnKSkgewotICAgICAgICAgICAgcmV0dXJuIHBhcnNlWWllbGRFeHByZXNzaW9u
KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBvbGRQYXJlbnRoZXNpemVkQ291bnQgPSBzdGF0ZS5w
YXJlbnRoZXNpemVkQ291bnQ7Ci0KLSAgICAgICAgaWYgKG1hdGNoKCcoJykpIHsKLSAgICAgICAg
ICAgIHRva2VuID0gbG9va2FoZWFkMigpOwotICAgICAgICAgICAgaWYgKCh0b2tlbi50eXBlID09
PSBUb2tlbi5QdW5jdHVhdG9yICYmIHRva2VuLnZhbHVlID09PSAnKScpIHx8IHRva2VuLnZhbHVl
ID09PSAnLi4uJykgewotICAgICAgICAgICAgICAgIHBhcmFtcyA9IHBhcnNlUGFyYW1zKCk7Ci0g
ICAgICAgICAgICAgICAgaWYgKCFtYXRjaCgnPT4nKSkgewotICAgICAgICAgICAgICAgICAgICB0
aHJvd1VuZXhwZWN0ZWQobGV4KCkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICByZXR1cm4gcGFyc2VBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbihwYXJhbXMpOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgdG9rZW4gPSBsb29rYWhlYWQ7Ci0gICAgICAgIGV4
cHIgPSBwYXJzZUNvbmRpdGlvbmFsRXhwcmVzc2lvbigpOwotCi0gICAgICAgIGlmIChtYXRjaCgn
PT4nKSAmJiBleHByLnR5cGUgPT09IFN5bnRheC5JZGVudGlmaWVyKSB7Ci0gICAgICAgICAgICBp
ZiAoc3RhdGUucGFyZW50aGVzaXplZENvdW50ID09PSBvbGRQYXJlbnRoZXNpemVkQ291bnQgfHwg
c3RhdGUucGFyZW50aGVzaXplZENvdW50ID09PSAob2xkUGFyZW50aGVzaXplZENvdW50ICsgMSkp
IHsKLSAgICAgICAgICAgICAgICBpZiAoaXNSZXN0cmljdGVkV29yZChleHByLm5hbWUpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLlN0cmljdFBhcmFtTmFt
ZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUFycm93
RnVuY3Rpb25FeHByZXNzaW9uKHsgcGFyYW1zOiBbIGV4cHIgXSwgcmVzdDogbnVsbCB9KTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlmIChtYXRjaEFzc2lnbigpKSB7Ci0g
ICAgICAgICAgICAvLyAxMS4xMy4xCi0gICAgICAgICAgICBpZiAoc3RyaWN0ICYmIGV4cHIudHlw
ZSA9PT0gU3ludGF4LklkZW50aWZpZXIgJiYgaXNSZXN0cmljdGVkV29yZChleHByLm5hbWUpKSB7
Ci0gICAgICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50KHRva2VuLCBNZXNzYWdlcy5TdHJp
Y3RMSFNBc3NpZ25tZW50KTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gRVMubmV4
dCBkcmFmIDExLjEzIFJ1bnRpbWUgU2VtYW50aWNzIHN0ZXAgMQotICAgICAgICAgICAgaWYgKG1h
dGNoKCc9JykgJiYgKGV4cHIudHlwZSA9PT0gU3ludGF4Lk9iamVjdEV4cHJlc3Npb24gfHwgZXhw
ci50eXBlID09PSBTeW50YXguQXJyYXlFeHByZXNzaW9uKSkgewotICAgICAgICAgICAgICAgIHJl
aW50ZXJwcmV0QXNBc3NpZ25tZW50QmluZGluZ1BhdHRlcm4oZXhwcik7Ci0gICAgICAgICAgICB9
IGVsc2UgaWYgKCFpc0xlZnRIYW5kU2lkZShleHByKSkgewotICAgICAgICAgICAgICAgIHRocm93
RXJyb3Ioe30sIE1lc3NhZ2VzLkludmFsaWRMSFNJbkFzc2lnbm1lbnQpOwotICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICBleHByID0gZGVsZWdhdGUuY3JlYXRlQXNzaWdubWVudEV4cHJlc3Np
b24obGV4KCkudmFsdWUsIGV4cHIsIHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oKSk7Ci0gICAg
ICAgIH0KLQotICAgICAgICByZXR1cm4gZXhwcjsKLSAgICB9Ci0KLSAgICAvLyAxMS4xNCBDb21t
YSBPcGVyYXRvcgotCi0gICAgZnVuY3Rpb24gcGFyc2VFeHByZXNzaW9uKCkgewotICAgICAgICB2
YXIgZXhwciwgZXhwcmVzc2lvbnMsIHNlcXVlbmNlLCBjb3ZlckZvcm1hbHNMaXN0LCBzcHJlYWRG
b3VuZCwgdG9rZW47Ci0KLSAgICAgICAgZXhwciA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24o
KTsKLSAgICAgICAgZXhwcmVzc2lvbnMgPSBbIGV4cHIgXTsKLQotICAgICAgICBpZiAobWF0Y2go
JywnKSkgewotICAgICAgICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKCFtYXRjaCgnLCcpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGxleCgpOwotICAgICAgICAgICAgICAg
IGV4cHIgPSBwYXJzZVNwcmVhZE9yQXNzaWdubWVudEV4cHJlc3Npb24oKTsKLSAgICAgICAgICAg
ICAgICBleHByZXNzaW9ucy5wdXNoKGV4cHIpOwotCi0gICAgICAgICAgICAgICAgaWYgKGV4cHIu
dHlwZSA9PT0gU3ludGF4LlNwcmVhZEVsZW1lbnQpIHsKLSAgICAgICAgICAgICAgICAgICAgc3By
ZWFkRm91bmQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBpZiAoIW1hdGNoKCcpJykpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLkVsZW1lbnRB
ZnRlclNwcmVhZEVsZW1lbnQpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgc2VxdWVuY2UgPSBkZWxlZ2F0ZS5jcmVhdGVTZXF1ZW5jZUV4cHJlc3Npb24oZXhwcmVz
c2lvbnMpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHN0YXRlLmFsbG93QXJyb3dGdW5jdGlv
biAmJiBtYXRjaCgnKScpKSB7Ci0gICAgICAgICAgICB0b2tlbiA9IGxvb2thaGVhZDIoKTsKLSAg
ICAgICAgICAgIGlmICh0b2tlbi52YWx1ZSA9PT0gJz0+JykgewotICAgICAgICAgICAgICAgIGxl
eCgpOwotCi0gICAgICAgICAgICAgICAgc3RhdGUuYWxsb3dBcnJvd0Z1bmN0aW9uID0gZmFsc2U7
Ci0gICAgICAgICAgICAgICAgZXhwciA9IGV4cHJlc3Npb25zOwotICAgICAgICAgICAgICAgIGNv
dmVyRm9ybWFsc0xpc3QgPSByZWludGVycHJldEFzQ292ZXJGb3JtYWxzTGlzdChleHByKTsKLSAg
ICAgICAgICAgICAgICBpZiAoY292ZXJGb3JtYWxzTGlzdCkgewotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gcGFyc2VBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbihjb3ZlckZvcm1hbHNMaXN0KTsK
LSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICB0aHJvd1VuZXhwZWN0ZWQodG9r
ZW4pOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHNwcmVhZEZvdW5k
KSB7Ci0gICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5JbGxlZ2FsU3ByZWFkKTsK
LSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBzZXF1ZW5jZSB8fCBleHByOwotICAgIH0KLQot
ICAgIC8vIDEyLjEgQmxvY2sKLQotICAgIGZ1bmN0aW9uIHBhcnNlU3RhdGVtZW50TGlzdCgpIHsK
LSAgICAgICAgdmFyIGxpc3QgPSBbXSwKLSAgICAgICAgICAgIHN0YXRlbWVudDsKLQotICAgICAg
ICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHsKLSAgICAgICAgICAgIGlmIChtYXRjaCgnfScpKSB7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzdGF0
ZW1lbnQgPSBwYXJzZVNvdXJjZUVsZW1lbnQoKTsKLSAgICAgICAgICAgIGlmICh0eXBlb2Ygc3Rh
dGVtZW50ID09PSAndW5kZWZpbmVkJykgewotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgbGlzdC5wdXNoKHN0YXRlbWVudCk7Ci0gICAgICAgIH0KLQot
ICAgICAgICByZXR1cm4gbGlzdDsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBwYXJzZUJsb2NrKCkg
ewotICAgICAgICB2YXIgYmxvY2s7Ci0KLSAgICAgICAgZXhwZWN0KCd7Jyk7Ci0KLSAgICAgICAg
YmxvY2sgPSBwYXJzZVN0YXRlbWVudExpc3QoKTsKLQotICAgICAgICBleHBlY3QoJ30nKTsKLQot
ICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlQmxvY2tTdGF0ZW1lbnQoYmxvY2spOwotICAg
IH0KLQotICAgIC8vIDEyLjIgVmFyaWFibGUgU3RhdGVtZW50Ci0KLSAgICBmdW5jdGlvbiBwYXJz
ZVZhcmlhYmxlSWRlbnRpZmllcigpIHsKLSAgICAgICAgdmFyIHRva2VuID0gbGV4KCk7Ci0KLSAg
ICAgICAgaWYgKHRva2VuLnR5cGUgIT09IFRva2VuLklkZW50aWZpZXIpIHsKLSAgICAgICAgICAg
IHRocm93VW5leHBlY3RlZCh0b2tlbik7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gZGVs
ZWdhdGUuY3JlYXRlSWRlbnRpZmllcih0b2tlbi52YWx1ZSk7Ci0gICAgfQotCi0gICAgZnVuY3Rp
b24gcGFyc2VWYXJpYWJsZURlY2xhcmF0aW9uKGtpbmQpIHsKLSAgICAgICAgdmFyIGlkLAotICAg
ICAgICAgICAgaW5pdCA9IG51bGw7Ci0gICAgICAgIGlmIChtYXRjaCgneycpKSB7Ci0gICAgICAg
ICAgICBpZCA9IHBhcnNlT2JqZWN0SW5pdGlhbGlzZXIoKTsKLSAgICAgICAgICAgIHJlaW50ZXJw
cmV0QXNBc3NpZ25tZW50QmluZGluZ1BhdHRlcm4oaWQpOwotICAgICAgICB9IGVsc2UgaWYgKG1h
dGNoKCdbJykpIHsKLSAgICAgICAgICAgIGlkID0gcGFyc2VBcnJheUluaXRpYWxpc2VyKCk7Ci0g
ICAgICAgICAgICByZWludGVycHJldEFzQXNzaWdubWVudEJpbmRpbmdQYXR0ZXJuKGlkKTsKLSAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlkID0gcGFyc2VWYXJpYWJsZUlkZW50aWZpZXIo
KTsKLSAgICAgICAgICAgIC8vIDEyLjIuMQotICAgICAgICAgICAgaWYgKHN0cmljdCAmJiBpc1Jl
c3RyaWN0ZWRXb3JkKGlkLm5hbWUpKSB7Ci0gICAgICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVy
YW50KHt9LCBNZXNzYWdlcy5TdHJpY3RWYXJOYW1lKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotCi0gICAgICAgIGlmIChraW5kID09PSAnY29uc3QnKSB7Ci0gICAgICAgICAgICBpZiAoIW1h
dGNoKCc9JykpIHsKLSAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5Ob1Vu
aW50aWFsaXplZENvbnN0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGV4cGVjdCgnPScp
OwotICAgICAgICAgICAgaW5pdCA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oKTsKLSAgICAg
ICAgfSBlbHNlIGlmIChtYXRjaCgnPScpKSB7Ci0gICAgICAgICAgICBsZXgoKTsKLSAgICAgICAg
ICAgIGluaXQgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKCk7Ci0gICAgICAgIH0KLQotICAg
ICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlVmFyaWFibGVEZWNsYXJhdG9yKGlkLCBpbml0KTsK
LSAgICB9Ci0KLSAgICBmdW5jdGlvbiBwYXJzZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KGtpbmQp
IHsKLSAgICAgICAgdmFyIGxpc3QgPSBbXTsKLQotICAgICAgICBkbyB7Ci0gICAgICAgICAgICBs
aXN0LnB1c2gocGFyc2VWYXJpYWJsZURlY2xhcmF0aW9uKGtpbmQpKTsKLSAgICAgICAgICAgIGlm
ICghbWF0Y2goJywnKSkgewotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgbGV4KCk7Ci0gICAgICAgIH0gd2hpbGUgKGluZGV4IDwgbGVuZ3RoKTsKLQot
ICAgICAgICByZXR1cm4gbGlzdDsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBwYXJzZVZhcmlhYmxl
U3RhdGVtZW50KCkgewotICAgICAgICB2YXIgZGVjbGFyYXRpb25zOwotCi0gICAgICAgIGV4cGVj
dEtleXdvcmQoJ3ZhcicpOwotCi0gICAgICAgIGRlY2xhcmF0aW9ucyA9IHBhcnNlVmFyaWFibGVE
ZWNsYXJhdGlvbkxpc3QoKTsKLQotICAgICAgICBjb25zdW1lU2VtaWNvbG9uKCk7Ci0KLSAgICAg
ICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb24oZGVjbGFyYXRpb25z
LCAndmFyJyk7Ci0gICAgfQotCi0gICAgLy8ga2luZCBtYXkgYmUgYGNvbnN0YCBvciBgbGV0YAot
ICAgIC8vIEJvdGggYXJlIGV4cGVyaW1lbnRhbCBhbmQgbm90IGluIHRoZSBzcGVjaWZpY2F0aW9u
IHlldC4KLSAgICAvLyBzZWUgaHR0cDovL3dpa2kuZWNtYXNjcmlwdC5vcmcvZG9rdS5waHA/aWQ9
aGFybW9ueTpjb25zdAotICAgIC8vIGFuZCBodHRwOi8vd2lraS5lY21hc2NyaXB0Lm9yZy9kb2t1
LnBocD9pZD1oYXJtb255OmxldAotICAgIGZ1bmN0aW9uIHBhcnNlQ29uc3RMZXREZWNsYXJhdGlv
bihraW5kKSB7Ci0gICAgICAgIHZhciBkZWNsYXJhdGlvbnM7Ci0KLSAgICAgICAgZXhwZWN0S2V5
d29yZChraW5kKTsKLQotICAgICAgICBkZWNsYXJhdGlvbnMgPSBwYXJzZVZhcmlhYmxlRGVjbGFy
YXRpb25MaXN0KGtpbmQpOwotCi0gICAgICAgIGNvbnN1bWVTZW1pY29sb24oKTsKLQotICAgICAg
ICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbihkZWNsYXJhdGlvbnMs
IGtpbmQpOwotICAgIH0KLQotICAgIC8vIGh0dHA6Ly93aWtpLmVjbWFzY3JpcHQub3JnL2Rva3Uu
cGhwP2lkPWhhcm1vbnk6bW9kdWxlcwotCi0gICAgZnVuY3Rpb24gcGFyc2VQYXRoKCkgewotICAg
ICAgICB2YXIgYm9keSA9IFtdOwotCi0gICAgICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgICAg
ICBib2R5LnB1c2gocGFyc2VWYXJpYWJsZUlkZW50aWZpZXIoKSk7Ci0gICAgICAgICAgICBpZiAo
IW1hdGNoKCcuJykpIHsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGxleCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNy
ZWF0ZVBhdGgoYm9keSk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gcGFyc2VHbG9iKCkgewotICAg
ICAgICBleHBlY3QoJyonKTsKLSAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0ZUdsb2IoKTsK
LSAgICB9Ci0KLSAgICBmdW5jdGlvbiBwYXJzZU1vZHVsZURlY2xhcmF0aW9uKCkgewotICAgICAg
ICB2YXIgaWQsIHRva2VuLCBmcm9tID0gbnVsbDsKLQotICAgICAgICBsZXgoKTsKLQotICAgICAg
ICBpZCA9IHBhcnNlVmFyaWFibGVJZGVudGlmaWVyKCk7Ci0KLSAgICAgICAgaWYgKG1hdGNoKCd7
JykpIHsKLSAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5jcmVhdGVNb2R1bGVEZWNsYXJhdGlv
bihpZCwgZnJvbSwgcGFyc2VNb2R1bGVCbG9jaygpKTsKLSAgICAgICAgfQotCi0gICAgICAgIGV4
cGVjdCgnPScpOwotCi0gICAgICAgIHRva2VuID0gbG9va2FoZWFkOwotICAgICAgICBpZiAodG9r
ZW4udHlwZSA9PT0gVG9rZW4uU3RyaW5nTGl0ZXJhbCkgewotICAgICAgICAgICAgZnJvbSA9IHBh
cnNlUHJpbWFyeUV4cHJlc3Npb24oKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGZy
b20gPSBwYXJzZVBhdGgoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnN1bWVTZW1pY29sb24o
KTsKLQotICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlTW9kdWxlRGVjbGFyYXRpb24oaWQs
IGZyb20sIG51bGwpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHBhcnNlRXhwb3J0U3BlY2lmaWVy
U2V0UHJvcGVydHkoKSB7Ci0gICAgICAgIHZhciBpZCwgZnJvbSA9IG51bGw7Ci0KLSAgICAgICAg
aWQgPSBwYXJzZVZhcmlhYmxlSWRlbnRpZmllcigpOwotCi0gICAgICAgIGlmIChtYXRjaCgnOicp
KSB7Ci0gICAgICAgICAgICBsZXgoKTsKLSAgICAgICAgICAgIGZyb20gPSBwYXJzZVBhdGgoKTsK
LSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5jcmVhdGVFeHBvcnRTcGVjaWZp
ZXIoaWQsIGZyb20pOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHBhcnNlRXhwb3J0U3BlY2lmaWVy
KCkgewotICAgICAgICB2YXIgc3BlY2lmaWVycywgaWQsIGZyb207Ci0KLSAgICAgICAgaWYgKG1h
dGNoKCd7JykpIHsKLSAgICAgICAgICAgIGxleCgpOwotICAgICAgICAgICAgc3BlY2lmaWVycyA9
IFtdOwotCi0gICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgc3BlY2lmaWVycy5wdXNo
KHBhcnNlRXhwb3J0U3BlY2lmaWVyU2V0UHJvcGVydHkoKSk7Ci0gICAgICAgICAgICB9IHdoaWxl
IChtYXRjaCgnLCcpICYmIGxleCgpKTsKLQotICAgICAgICAgICAgZXhwZWN0KCd9Jyk7Ci0KLSAg
ICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5jcmVhdGVFeHBvcnRTcGVjaWZpZXJTZXQoc3BlY2lm
aWVycyk7Ci0gICAgICAgIH0KLQotICAgICAgICBmcm9tID0gbnVsbDsKLQotICAgICAgICBpZiAo
bWF0Y2goJyonKSkgewotICAgICAgICAgICAgaWQgPSBwYXJzZUdsb2IoKTsKLSAgICAgICAgICAg
IGlmIChtYXRjaENvbnRleHR1YWxLZXl3b3JkKCdmcm9tJykpIHsKLSAgICAgICAgICAgICAgICBs
ZXgoKTsKLSAgICAgICAgICAgICAgICBmcm9tID0gcGFyc2VQYXRoKCk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZCA9IHBhcnNlVmFyaWFibGVJZGVudGlm
aWVyKCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0ZUV4cG9ydFNw
ZWNpZmllcihpZCwgZnJvbSk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gcGFyc2VFeHBvcnREZWNs
YXJhdGlvbigpIHsKLSAgICAgICAgdmFyIHRva2VuLCBzcGVjaWZpZXJzOwotCi0gICAgICAgIGV4
cGVjdEtleXdvcmQoJ2V4cG9ydCcpOwotCi0gICAgICAgIHRva2VuID0gbG9va2FoZWFkOwotCi0g
ICAgICAgIGlmICh0b2tlbi50eXBlID09PSBUb2tlbi5LZXl3b3JkIHx8ICh0b2tlbi50eXBlID09
PSBUb2tlbi5JZGVudGlmaWVyICYmIHRva2VuLnZhbHVlID09PSAnbW9kdWxlJykpIHsKLSAgICAg
ICAgICAgIHN3aXRjaCAodG9rZW4udmFsdWUpIHsKLSAgICAgICAgICAgIGNhc2UgJ2Z1bmN0aW9u
JzoKLSAgICAgICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlRXhwb3J0RGVjbGFyYXRp
b24ocGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uKCksIG51bGwpOwotICAgICAgICAgICAgY2FzZSAn
bW9kdWxlJzoKLSAgICAgICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlRXhwb3J0RGVj
bGFyYXRpb24ocGFyc2VNb2R1bGVEZWNsYXJhdGlvbigpLCBudWxsKTsKLSAgICAgICAgICAgIGNh
c2UgJ2xldCc6Ci0gICAgICAgICAgICBjYXNlICdjb25zdCc6Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIGRlbGVnYXRlLmNyZWF0ZUV4cG9ydERlY2xhcmF0aW9uKHBhcnNlQ29uc3RMZXREZWNsYXJh
dGlvbih0b2tlbi52YWx1ZSksIG51bGwpOwotICAgICAgICAgICAgY2FzZSAndmFyJzoKLSAgICAg
ICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlRXhwb3J0RGVjbGFyYXRpb24ocGFyc2VT
dGF0ZW1lbnQoKSwgbnVsbCk7Ci0gICAgICAgICAgICBjYXNlICdjbGFzcyc6Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0ZUV4cG9ydERlY2xhcmF0aW9uKHBhcnNlQ2xhc3NE
ZWNsYXJhdGlvbigpLCBudWxsKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRocm93VW5l
eHBlY3RlZChsZXgoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBzcGVjaWZpZXJzID0gWyBwYXJz
ZUV4cG9ydFNwZWNpZmllcigpIF07Ci0gICAgICAgIGlmIChtYXRjaCgnLCcpKSB7Ci0gICAgICAg
ICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHsKLSAgICAgICAgICAgICAgICBpZiAoIW1hdGNo
KCcsJykpIHsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIGxleCgpOwotICAgICAgICAgICAgICAgIHNwZWNpZmllcnMucHVzaChw
YXJzZUV4cG9ydFNwZWNpZmllcigpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAg
ICAgIGNvbnN1bWVTZW1pY29sb24oKTsKLQotICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRl
RXhwb3J0RGVjbGFyYXRpb24obnVsbCwgc3BlY2lmaWVycyk7Ci0gICAgfQotCi0gICAgZnVuY3Rp
b24gcGFyc2VJbXBvcnREZWNsYXJhdGlvbigpIHsKLSAgICAgICAgdmFyIHNwZWNpZmllcnMsIGZy
b207Ci0KLSAgICAgICAgZXhwZWN0S2V5d29yZCgnaW1wb3J0Jyk7Ci0KLSAgICAgICAgaWYgKG1h
dGNoKCcqJykpIHsKLSAgICAgICAgICAgIHNwZWNpZmllcnMgPSBbcGFyc2VHbG9iKCldOwotICAg
ICAgICB9IGVsc2UgaWYgKG1hdGNoKCd7JykpIHsKLSAgICAgICAgICAgIGxleCgpOwotICAgICAg
ICAgICAgc3BlY2lmaWVycyA9IFtdOwotCi0gICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAg
ICAgc3BlY2lmaWVycy5wdXNoKHBhcnNlSW1wb3J0U3BlY2lmaWVyKCkpOwotICAgICAgICAgICAg
fSB3aGlsZSAobWF0Y2goJywnKSAmJiBsZXgoKSk7Ci0KLSAgICAgICAgICAgIGV4cGVjdCgnfScp
OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc3BlY2lmaWVycyA9IFtwYXJzZVZhcmlh
YmxlSWRlbnRpZmllcigpXTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICghbWF0Y2hDb250ZXh0
dWFsS2V5d29yZCgnZnJvbScpKSB7Ci0gICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdl
cy5Ob0Zyb21BZnRlckltcG9ydCk7Ci0gICAgICAgIH0KLQotICAgICAgICBsZXgoKTsKLQotICAg
ICAgICBpZiAobG9va2FoZWFkLnR5cGUgPT09IFRva2VuLlN0cmluZ0xpdGVyYWwpIHsKLSAgICAg
ICAgICAgIGZyb20gPSBwYXJzZVByaW1hcnlFeHByZXNzaW9uKCk7Ci0gICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICBmcm9tID0gcGFyc2VQYXRoKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBj
b25zdW1lU2VtaWNvbG9uKCk7Ci0KLSAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0ZUltcG9y
dERlY2xhcmF0aW9uKHNwZWNpZmllcnMsIGZyb20pOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHBh
cnNlSW1wb3J0U3BlY2lmaWVyKCkgewotICAgICAgICB2YXIgaWQsIGZyb207Ci0KLSAgICAgICAg
aWQgPSBwYXJzZVZhcmlhYmxlSWRlbnRpZmllcigpOwotICAgICAgICBmcm9tID0gbnVsbDsKLQot
ICAgICAgICBpZiAobWF0Y2goJzonKSkgewotICAgICAgICAgICAgbGV4KCk7Ci0gICAgICAgICAg
ICBmcm9tID0gcGFyc2VQYXRoKCk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gZGVsZWdh
dGUuY3JlYXRlSW1wb3J0U3BlY2lmaWVyKGlkLCBmcm9tKTsKLSAgICB9Ci0KLSAgICAvLyAxMi4z
IEVtcHR5IFN0YXRlbWVudAotCi0gICAgZnVuY3Rpb24gcGFyc2VFbXB0eVN0YXRlbWVudCgpIHsK
LSAgICAgICAgZXhwZWN0KCc7Jyk7Ci0gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5jcmVhdGVFbXB0
eVN0YXRlbWVudCgpOwotICAgIH0KLQotICAgIC8vIDEyLjQgRXhwcmVzc2lvbiBTdGF0ZW1lbnQK
LQotICAgIGZ1bmN0aW9uIHBhcnNlRXhwcmVzc2lvblN0YXRlbWVudCgpIHsKLSAgICAgICAgdmFy
IGV4cHIgPSBwYXJzZUV4cHJlc3Npb24oKTsKLSAgICAgICAgY29uc3VtZVNlbWljb2xvbigpOwot
ICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlRXhwcmVzc2lvblN0YXRlbWVudChleHByKTsK
LSAgICB9Ci0KLSAgICAvLyAxMi41IElmIHN0YXRlbWVudAotCi0gICAgZnVuY3Rpb24gcGFyc2VJ
ZlN0YXRlbWVudCgpIHsKLSAgICAgICAgdmFyIHRlc3QsIGNvbnNlcXVlbnQsIGFsdGVybmF0ZTsK
LQotICAgICAgICBleHBlY3RLZXl3b3JkKCdpZicpOwotCi0gICAgICAgIGV4cGVjdCgnKCcpOwot
Ci0gICAgICAgIHRlc3QgPSBwYXJzZUV4cHJlc3Npb24oKTsKLQotICAgICAgICBleHBlY3QoJykn
KTsKLQotICAgICAgICBjb25zZXF1ZW50ID0gcGFyc2VTdGF0ZW1lbnQoKTsKLQotICAgICAgICBp
ZiAobWF0Y2hLZXl3b3JkKCdlbHNlJykpIHsKLSAgICAgICAgICAgIGxleCgpOwotICAgICAgICAg
ICAgYWx0ZXJuYXRlID0gcGFyc2VTdGF0ZW1lbnQoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIGFsdGVybmF0ZSA9IG51bGw7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gZGVs
ZWdhdGUuY3JlYXRlSWZTdGF0ZW1lbnQodGVzdCwgY29uc2VxdWVudCwgYWx0ZXJuYXRlKTsKLSAg
ICB9Ci0KLSAgICAvLyAxMi42IEl0ZXJhdGlvbiBTdGF0ZW1lbnRzCi0KLSAgICBmdW5jdGlvbiBw
YXJzZURvV2hpbGVTdGF0ZW1lbnQoKSB7Ci0gICAgICAgIHZhciBib2R5LCB0ZXN0LCBvbGRJbkl0
ZXJhdGlvbjsKLQotICAgICAgICBleHBlY3RLZXl3b3JkKCdkbycpOwotCi0gICAgICAgIG9sZElu
SXRlcmF0aW9uID0gc3RhdGUuaW5JdGVyYXRpb247Ci0gICAgICAgIHN0YXRlLmluSXRlcmF0aW9u
ID0gdHJ1ZTsKLQotICAgICAgICBib2R5ID0gcGFyc2VTdGF0ZW1lbnQoKTsKLQotICAgICAgICBz
dGF0ZS5pbkl0ZXJhdGlvbiA9IG9sZEluSXRlcmF0aW9uOwotCi0gICAgICAgIGV4cGVjdEtleXdv
cmQoJ3doaWxlJyk7Ci0KLSAgICAgICAgZXhwZWN0KCcoJyk7Ci0KLSAgICAgICAgdGVzdCA9IHBh
cnNlRXhwcmVzc2lvbigpOwotCi0gICAgICAgIGV4cGVjdCgnKScpOwotCi0gICAgICAgIGlmICht
YXRjaCgnOycpKSB7Ci0gICAgICAgICAgICBsZXgoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJl
dHVybiBkZWxlZ2F0ZS5jcmVhdGVEb1doaWxlU3RhdGVtZW50KGJvZHksIHRlc3QpOwotICAgIH0K
LQotICAgIGZ1bmN0aW9uIHBhcnNlV2hpbGVTdGF0ZW1lbnQoKSB7Ci0gICAgICAgIHZhciB0ZXN0
LCBib2R5LCBvbGRJbkl0ZXJhdGlvbjsKLQotICAgICAgICBleHBlY3RLZXl3b3JkKCd3aGlsZScp
OwotCi0gICAgICAgIGV4cGVjdCgnKCcpOwotCi0gICAgICAgIHRlc3QgPSBwYXJzZUV4cHJlc3Np
b24oKTsKLQotICAgICAgICBleHBlY3QoJyknKTsKLQotICAgICAgICBvbGRJbkl0ZXJhdGlvbiA9
IHN0YXRlLmluSXRlcmF0aW9uOwotICAgICAgICBzdGF0ZS5pbkl0ZXJhdGlvbiA9IHRydWU7Ci0K
LSAgICAgICAgYm9keSA9IHBhcnNlU3RhdGVtZW50KCk7Ci0KLSAgICAgICAgc3RhdGUuaW5JdGVy
YXRpb24gPSBvbGRJbkl0ZXJhdGlvbjsKLQotICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRl
V2hpbGVTdGF0ZW1lbnQodGVzdCwgYm9keSk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gcGFyc2VG
b3JWYXJpYWJsZURlY2xhcmF0aW9uKCkgewotICAgICAgICB2YXIgdG9rZW4gPSBsZXgoKSwKLSAg
ICAgICAgICAgIGRlY2xhcmF0aW9ucyA9IHBhcnNlVmFyaWFibGVEZWNsYXJhdGlvbkxpc3QoKTsK
LQotICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbihkZWNs
YXJhdGlvbnMsIHRva2VuLnZhbHVlKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBwYXJzZUZvclN0
YXRlbWVudChvcHRzKSB7Ci0gICAgICAgIHZhciBpbml0LCB0ZXN0LCB1cGRhdGUsIGxlZnQsIHJp
Z2h0LCBib2R5LCBvcGVyYXRvciwgb2xkSW5JdGVyYXRpb247Ci0gICAgICAgIGluaXQgPSB0ZXN0
ID0gdXBkYXRlID0gbnVsbDsKLSAgICAgICAgZXhwZWN0S2V5d29yZCgnZm9yJyk7Ci0KLSAgICAg
ICAgLy8gaHR0cDovL3dpa2kuZWNtYXNjcmlwdC5vcmcvZG9rdS5waHA/aWQ9cHJvcG9zYWxzOml0
ZXJhdG9yc19hbmRfZ2VuZXJhdG9ycyZzPWVhY2gKLSAgICAgICAgaWYgKG1hdGNoQ29udGV4dHVh
bEtleXdvcmQoImVhY2giKSkgewotICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMu
RWFjaE5vdEFsbG93ZWQpOwotICAgICAgICB9Ci0KLSAgICAgICAgZXhwZWN0KCcoJyk7Ci0KLSAg
ICAgICAgaWYgKG1hdGNoKCc7JykpIHsKLSAgICAgICAgICAgIGxleCgpOwotICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgaWYgKG1hdGNoS2V5d29yZCgndmFyJykgfHwgbWF0Y2hLZXl3b3Jk
KCdsZXQnKSB8fCBtYXRjaEtleXdvcmQoJ2NvbnN0JykpIHsKLSAgICAgICAgICAgICAgICBzdGF0
ZS5hbGxvd0luID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgaW5pdCA9IHBhcnNlRm9yVmFyaWFi
bGVEZWNsYXJhdGlvbigpOwotICAgICAgICAgICAgICAgIHN0YXRlLmFsbG93SW4gPSB0cnVlOwot
Ci0gICAgICAgICAgICAgICAgaWYgKGluaXQuZGVjbGFyYXRpb25zLmxlbmd0aCA9PT0gMSkgewot
ICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2hLZXl3b3JkKCdpbicpIHx8IG1hdGNoQ29udGV4
dHVhbEtleXdvcmQoJ29mJykpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yID0g
bG9va2FoZWFkOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoKG9wZXJhdG9yLnZhbHVl
ID09PSAnaW4nIHx8IGluaXQua2luZCAhPT0gJ3ZhcicpICYmIGluaXQuZGVjbGFyYXRpb25zWzBd
LmluaXQpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4KCk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbGVmdCA9IGluaXQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmlnaHQgPSBwYXJzZUV4cHJlc3Npb24oKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbml0ID0gbnVsbDsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgc3RhdGUuYWxsb3dJbiA9IGZhbHNlOwotICAgICAgICAgICAgICAgIGluaXQgPSBw
YXJzZUV4cHJlc3Npb24oKTsKLSAgICAgICAgICAgICAgICBzdGF0ZS5hbGxvd0luID0gdHJ1ZTsK
LQotICAgICAgICAgICAgICAgIGlmIChtYXRjaENvbnRleHR1YWxLZXl3b3JkKCdvZicpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yID0gbGV4KCk7Ci0gICAgICAgICAgICAgICAgICAg
IGxlZnQgPSBpbml0OwotICAgICAgICAgICAgICAgICAgICByaWdodCA9IHBhcnNlRXhwcmVzc2lv
bigpOwotICAgICAgICAgICAgICAgICAgICBpbml0ID0gbnVsbDsKLSAgICAgICAgICAgICAgICB9
IGVsc2UgaWYgKG1hdGNoS2V5d29yZCgnaW4nKSkgewotICAgICAgICAgICAgICAgICAgICAvLyBM
ZWZ0SGFuZFNpZGVFeHByZXNzaW9uCi0gICAgICAgICAgICAgICAgICAgIGlmICghaXNBc3NpZ25h
YmxlTGVmdEhhbmRTaWRlKGluaXQpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aHJvd0Vy
cm9yKHt9LCBNZXNzYWdlcy5JbnZhbGlkTEhTSW5Gb3JJbik7Ci0gICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3IgPSBsZXgoKTsKLSAgICAgICAgICAgICAg
ICAgICAgbGVmdCA9IGluaXQ7Ci0gICAgICAgICAgICAgICAgICAgIHJpZ2h0ID0gcGFyc2VFeHBy
ZXNzaW9uKCk7Ci0gICAgICAgICAgICAgICAgICAgIGluaXQgPSBudWxsOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKHR5cGVvZiBsZWZ0ID09PSAn
dW5kZWZpbmVkJykgewotICAgICAgICAgICAgICAgIGV4cGVjdCgnOycpOwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHR5cGVvZiBsZWZ0ID09PSAndW5kZWZpbmVkJykg
ewotCi0gICAgICAgICAgICBpZiAoIW1hdGNoKCc7JykpIHsKLSAgICAgICAgICAgICAgICB0ZXN0
ID0gcGFyc2VFeHByZXNzaW9uKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBleHBlY3Qo
JzsnKTsKLQotICAgICAgICAgICAgaWYgKCFtYXRjaCgnKScpKSB7Ci0gICAgICAgICAgICAgICAg
dXBkYXRlID0gcGFyc2VFeHByZXNzaW9uKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQot
ICAgICAgICBleHBlY3QoJyknKTsKLQotICAgICAgICBvbGRJbkl0ZXJhdGlvbiA9IHN0YXRlLmlu
SXRlcmF0aW9uOwotICAgICAgICBzdGF0ZS5pbkl0ZXJhdGlvbiA9IHRydWU7Ci0KLSAgICAgICAg
aWYgKCEob3B0cyAhPT0gdW5kZWZpbmVkICYmIG9wdHMuaWdub3JlX2JvZHkpKSB7Ci0gICAgICAg
ICAgICBib2R5ID0gcGFyc2VTdGF0ZW1lbnQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRl
LmluSXRlcmF0aW9uID0gb2xkSW5JdGVyYXRpb247Ci0KLSAgICAgICAgaWYgKHR5cGVvZiBsZWZ0
ID09PSAndW5kZWZpbmVkJykgewotICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0ZUZv
clN0YXRlbWVudChpbml0LCB0ZXN0LCB1cGRhdGUsIGJvZHkpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgaWYgKG9wZXJhdG9yLnZhbHVlID09PSAnaW4nKSB7Ci0gICAgICAgICAgICByZXR1cm4gZGVs
ZWdhdGUuY3JlYXRlRm9ySW5TdGF0ZW1lbnQobGVmdCwgcmlnaHQsIGJvZHkpOwotICAgICAgICB9
Ci0gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5jcmVhdGVGb3JPZlN0YXRlbWVudChsZWZ0LCByaWdo
dCwgYm9keSk7Ci0gICAgfQotCi0gICAgLy8gMTIuNyBUaGUgY29udGludWUgc3RhdGVtZW50Ci0K
LSAgICBmdW5jdGlvbiBwYXJzZUNvbnRpbnVlU3RhdGVtZW50KCkgewotICAgICAgICB2YXIgbGFi
ZWwgPSBudWxsLCBrZXk7Ci0KLSAgICAgICAgZXhwZWN0S2V5d29yZCgnY29udGludWUnKTsKLQot
ICAgICAgICAvLyBPcHRpbWl6ZSB0aGUgbW9zdCBjb21tb24gZm9ybTogJ2NvbnRpbnVlOycuCi0g
ICAgICAgIGlmIChzb3VyY2UuY2hhckNvZGVBdChpbmRleCkgPT09IDU5KSB7Ci0gICAgICAgICAg
ICBsZXgoKTsKLQotICAgICAgICAgICAgaWYgKCFzdGF0ZS5pbkl0ZXJhdGlvbikgewotICAgICAg
ICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLklsbGVnYWxDb250aW51ZSk7Ci0gICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5jcmVhdGVDb250aW51ZVN0
YXRlbWVudChudWxsKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChwZWVrTGluZVRlcm1pbmF0
b3IoKSkgewotICAgICAgICAgICAgaWYgKCFzdGF0ZS5pbkl0ZXJhdGlvbikgewotICAgICAgICAg
ICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLklsbGVnYWxDb250aW51ZSk7Ci0gICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5jcmVhdGVDb250aW51ZVN0YXRl
bWVudChudWxsKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChsb29rYWhlYWQudHlwZSA9PT0g
VG9rZW4uSWRlbnRpZmllcikgewotICAgICAgICAgICAgbGFiZWwgPSBwYXJzZVZhcmlhYmxlSWRl
bnRpZmllcigpOwotCi0gICAgICAgICAgICBrZXkgPSAnJCcgKyBsYWJlbC5uYW1lOwotICAgICAg
ICAgICAgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc3RhdGUubGFi
ZWxTZXQsIGtleSkpIHsKLSAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5V
bmtub3duTGFiZWwsIGxhYmVsLm5hbWUpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAg
ICAgICAgY29uc3VtZVNlbWljb2xvbigpOwotCi0gICAgICAgIGlmIChsYWJlbCA9PT0gbnVsbCAm
JiAhc3RhdGUuaW5JdGVyYXRpb24pIHsKLSAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3Nh
Z2VzLklsbGVnYWxDb250aW51ZSk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gZGVsZWdh
dGUuY3JlYXRlQ29udGludWVTdGF0ZW1lbnQobGFiZWwpOwotICAgIH0KLQotICAgIC8vIDEyLjgg
VGhlIGJyZWFrIHN0YXRlbWVudAotCi0gICAgZnVuY3Rpb24gcGFyc2VCcmVha1N0YXRlbWVudCgp
IHsKLSAgICAgICAgdmFyIGxhYmVsID0gbnVsbCwga2V5OwotCi0gICAgICAgIGV4cGVjdEtleXdv
cmQoJ2JyZWFrJyk7Ci0KLSAgICAgICAgLy8gQ2F0Y2ggdGhlIHZlcnkgY29tbW9uIGNhc2UgZmly
c3Q6IGltbWVkaWF0ZWx5IGEgc2VtaWNvbG9uIChjaGFyICM1OSkuCi0gICAgICAgIGlmIChzb3Vy
Y2UuY2hhckNvZGVBdChpbmRleCkgPT09IDU5KSB7Ci0gICAgICAgICAgICBsZXgoKTsKLQotICAg
ICAgICAgICAgaWYgKCEoc3RhdGUuaW5JdGVyYXRpb24gfHwgc3RhdGUuaW5Td2l0Y2gpKSB7Ci0g
ICAgICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuSWxsZWdhbEJyZWFrKTsKLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0ZUJyZWFrU3Rh
dGVtZW50KG51bGwpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHBlZWtMaW5lVGVybWluYXRv
cigpKSB7Ci0gICAgICAgICAgICBpZiAoIShzdGF0ZS5pbkl0ZXJhdGlvbiB8fCBzdGF0ZS5pblN3
aXRjaCkpIHsKLSAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5JbGxlZ2Fs
QnJlYWspOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3Jl
YXRlQnJlYWtTdGF0ZW1lbnQobnVsbCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAobG9va2Fo
ZWFkLnR5cGUgPT09IFRva2VuLklkZW50aWZpZXIpIHsKLSAgICAgICAgICAgIGxhYmVsID0gcGFy
c2VWYXJpYWJsZUlkZW50aWZpZXIoKTsKLQotICAgICAgICAgICAga2V5ID0gJyQnICsgbGFiZWwu
bmFtZTsKLSAgICAgICAgICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5j
YWxsKHN0YXRlLmxhYmVsU2V0LCBrZXkpKSB7Ci0gICAgICAgICAgICAgICAgdGhyb3dFcnJvcih7
fSwgTWVzc2FnZXMuVW5rbm93bkxhYmVsLCBsYWJlbC5uYW1lKTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotCi0gICAgICAgIGNvbnN1bWVTZW1pY29sb24oKTsKLQotICAgICAgICBpZiAobGFi
ZWwgPT09IG51bGwgJiYgIShzdGF0ZS5pbkl0ZXJhdGlvbiB8fCBzdGF0ZS5pblN3aXRjaCkpIHsK
LSAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLklsbGVnYWxCcmVhayk7Ci0gICAg
ICAgIH0KLQotICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlQnJlYWtTdGF0ZW1lbnQobGFi
ZWwpOwotICAgIH0KLQotICAgIC8vIDEyLjkgVGhlIHJldHVybiBzdGF0ZW1lbnQKLQotICAgIGZ1
bmN0aW9uIHBhcnNlUmV0dXJuU3RhdGVtZW50KCkgewotICAgICAgICB2YXIgYXJndW1lbnQgPSBu
dWxsOwotCi0gICAgICAgIGV4cGVjdEtleXdvcmQoJ3JldHVybicpOwotCi0gICAgICAgIGlmICgh
c3RhdGUuaW5GdW5jdGlvbkJvZHkpIHsKLSAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudCh7
fSwgTWVzc2FnZXMuSWxsZWdhbFJldHVybik7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyAncmV0
dXJuJyBmb2xsb3dlZCBieSBhIHNwYWNlIGFuZCBhbiBpZGVudGlmaWVyIGlzIHZlcnkgY29tbW9u
LgotICAgICAgICBpZiAoc291cmNlLmNoYXJDb2RlQXQoaW5kZXgpID09PSAzMikgewotICAgICAg
ICAgICAgaWYgKGlzSWRlbnRpZmllclN0YXJ0KHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4ICsgMSkp
KSB7Ci0gICAgICAgICAgICAgICAgYXJndW1lbnQgPSBwYXJzZUV4cHJlc3Npb24oKTsKLSAgICAg
ICAgICAgICAgICBjb25zdW1lU2VtaWNvbG9uKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGRl
bGVnYXRlLmNyZWF0ZVJldHVyblN0YXRlbWVudChhcmd1bWVudCk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLQotICAgICAgICBpZiAocGVla0xpbmVUZXJtaW5hdG9yKCkpIHsKLSAgICAgICAg
ICAgIHJldHVybiBkZWxlZ2F0ZS5jcmVhdGVSZXR1cm5TdGF0ZW1lbnQobnVsbCk7Ci0gICAgICAg
IH0KLQotICAgICAgICBpZiAoIW1hdGNoKCc7JykpIHsKLSAgICAgICAgICAgIGlmICghbWF0Y2go
J30nKSAmJiBsb29rYWhlYWQudHlwZSAhPT0gVG9rZW4uRU9GKSB7Ci0gICAgICAgICAgICAgICAg
YXJndW1lbnQgPSBwYXJzZUV4cHJlc3Npb24oKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
Ci0gICAgICAgIGNvbnN1bWVTZW1pY29sb24oKTsKLQotICAgICAgICByZXR1cm4gZGVsZWdhdGUu
Y3JlYXRlUmV0dXJuU3RhdGVtZW50KGFyZ3VtZW50KTsKLSAgICB9Ci0KLSAgICAvLyAxMi4xMCBU
aGUgd2l0aCBzdGF0ZW1lbnQKLQotICAgIGZ1bmN0aW9uIHBhcnNlV2l0aFN0YXRlbWVudCgpIHsK
LSAgICAgICAgdmFyIG9iamVjdCwgYm9keTsKLQotICAgICAgICBpZiAoc3RyaWN0KSB7Ci0gICAg
ICAgICAgICB0aHJvd0Vycm9yVG9sZXJhbnQoe30sIE1lc3NhZ2VzLlN0cmljdE1vZGVXaXRoKTsK
LSAgICAgICAgfQotCi0gICAgICAgIGV4cGVjdEtleXdvcmQoJ3dpdGgnKTsKLQotICAgICAgICBl
eHBlY3QoJygnKTsKLQotICAgICAgICBvYmplY3QgPSBwYXJzZUV4cHJlc3Npb24oKTsKLQotICAg
ICAgICBleHBlY3QoJyknKTsKLQotICAgICAgICBib2R5ID0gcGFyc2VTdGF0ZW1lbnQoKTsKLQot
ICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlV2l0aFN0YXRlbWVudChvYmplY3QsIGJvZHkp
OwotICAgIH0KLQotICAgIC8vIDEyLjEwIFRoZSBzd2l0aCBzdGF0ZW1lbnQKLQotICAgIGZ1bmN0
aW9uIHBhcnNlU3dpdGNoQ2FzZSgpIHsKLSAgICAgICAgdmFyIHRlc3QsCi0gICAgICAgICAgICBj
b25zZXF1ZW50ID0gW10sCi0gICAgICAgICAgICBzb3VyY2VFbGVtZW50OwotCi0gICAgICAgIGlm
IChtYXRjaEtleXdvcmQoJ2RlZmF1bHQnKSkgewotICAgICAgICAgICAgbGV4KCk7Ci0gICAgICAg
ICAgICB0ZXN0ID0gbnVsbDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGV4cGVjdEtl
eXdvcmQoJ2Nhc2UnKTsKLSAgICAgICAgICAgIHRlc3QgPSBwYXJzZUV4cHJlc3Npb24oKTsKLSAg
ICAgICAgfQotICAgICAgICBleHBlY3QoJzonKTsKLQotICAgICAgICB3aGlsZSAoaW5kZXggPCBs
ZW5ndGgpIHsKLSAgICAgICAgICAgIGlmIChtYXRjaCgnfScpIHx8IG1hdGNoS2V5d29yZCgnZGVm
YXVsdCcpIHx8IG1hdGNoS2V5d29yZCgnY2FzZScpKSB7Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzb3VyY2VFbGVtZW50ID0gcGFyc2VTb3VyY2VF
bGVtZW50KCk7Ci0gICAgICAgICAgICBpZiAodHlwZW9mIHNvdXJjZUVsZW1lbnQgPT09ICd1bmRl
ZmluZWQnKSB7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBjb25zZXF1ZW50LnB1c2goc291cmNlRWxlbWVudCk7Ci0gICAgICAgIH0KLQotICAgICAg
ICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlU3dpdGNoQ2FzZSh0ZXN0LCBjb25zZXF1ZW50KTsKLSAg
ICB9Ci0KLSAgICBmdW5jdGlvbiBwYXJzZVN3aXRjaFN0YXRlbWVudCgpIHsKLSAgICAgICAgdmFy
IGRpc2NyaW1pbmFudCwgY2FzZXMsIGNsYXVzZSwgb2xkSW5Td2l0Y2gsIGRlZmF1bHRGb3VuZDsK
LQotICAgICAgICBleHBlY3RLZXl3b3JkKCdzd2l0Y2gnKTsKLQotICAgICAgICBleHBlY3QoJygn
KTsKLQotICAgICAgICBkaXNjcmltaW5hbnQgPSBwYXJzZUV4cHJlc3Npb24oKTsKLQotICAgICAg
ICBleHBlY3QoJyknKTsKLQotICAgICAgICBleHBlY3QoJ3snKTsKLQotICAgICAgICBpZiAobWF0
Y2goJ30nKSkgewotICAgICAgICAgICAgbGV4KCk7Ci0gICAgICAgICAgICByZXR1cm4gZGVsZWdh
dGUuY3JlYXRlU3dpdGNoU3RhdGVtZW50KGRpc2NyaW1pbmFudCk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBjYXNlcyA9IFtdOwotCi0gICAgICAgIG9sZEluU3dpdGNoID0gc3RhdGUuaW5Td2l0Y2g7
Ci0gICAgICAgIHN0YXRlLmluU3dpdGNoID0gdHJ1ZTsKLSAgICAgICAgZGVmYXVsdEZvdW5kID0g
ZmFsc2U7Ci0KLSAgICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7Ci0gICAgICAgICAgICBp
ZiAobWF0Y2goJ30nKSkgewotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgY2xhdXNlID0gcGFyc2VTd2l0Y2hDYXNlKCk7Ci0gICAgICAgICAgICBpZiAo
Y2xhdXNlLnRlc3QgPT09IG51bGwpIHsKLSAgICAgICAgICAgICAgICBpZiAoZGVmYXVsdEZvdW5k
KSB7Ci0gICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLk11bHRpcGxl
RGVmYXVsdHNJblN3aXRjaCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGRl
ZmF1bHRGb3VuZCA9IHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYXNlcy5wdXNo
KGNsYXVzZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0ZS5pblN3aXRjaCA9IG9sZEluU3dp
dGNoOwotCi0gICAgICAgIGV4cGVjdCgnfScpOwotCi0gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5j
cmVhdGVTd2l0Y2hTdGF0ZW1lbnQoZGlzY3JpbWluYW50LCBjYXNlcyk7Ci0gICAgfQotCi0gICAg
Ly8gMTIuMTMgVGhlIHRocm93IHN0YXRlbWVudAotCi0gICAgZnVuY3Rpb24gcGFyc2VUaHJvd1N0
YXRlbWVudCgpIHsKLSAgICAgICAgdmFyIGFyZ3VtZW50OwotCi0gICAgICAgIGV4cGVjdEtleXdv
cmQoJ3Rocm93Jyk7Ci0KLSAgICAgICAgaWYgKHBlZWtMaW5lVGVybWluYXRvcigpKSB7Ci0gICAg
ICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5OZXdsaW5lQWZ0ZXJUaHJvdyk7Ci0gICAg
ICAgIH0KLQotICAgICAgICBhcmd1bWVudCA9IHBhcnNlRXhwcmVzc2lvbigpOwotCi0gICAgICAg
IGNvbnN1bWVTZW1pY29sb24oKTsKLQotICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlVGhy
b3dTdGF0ZW1lbnQoYXJndW1lbnQpOwotICAgIH0KLQotICAgIC8vIDEyLjE0IFRoZSB0cnkgc3Rh
dGVtZW50Ci0KLSAgICBmdW5jdGlvbiBwYXJzZUNhdGNoQ2xhdXNlKCkgewotICAgICAgICB2YXIg
cGFyYW0sIGJvZHk7Ci0KLSAgICAgICAgZXhwZWN0S2V5d29yZCgnY2F0Y2gnKTsKLQotICAgICAg
ICBleHBlY3QoJygnKTsKLSAgICAgICAgaWYgKG1hdGNoKCcpJykpIHsKLSAgICAgICAgICAgIHRo
cm93VW5leHBlY3RlZChsb29rYWhlYWQpOwotICAgICAgICB9Ci0KLSAgICAgICAgcGFyYW0gPSBw
YXJzZUV4cHJlc3Npb24oKTsKLSAgICAgICAgLy8gMTIuMTQuMQotICAgICAgICBpZiAoc3RyaWN0
ICYmIHBhcmFtLnR5cGUgPT09IFN5bnRheC5JZGVudGlmaWVyICYmIGlzUmVzdHJpY3RlZFdvcmQo
cGFyYW0ubmFtZSkpIHsKLSAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudCh7fSwgTWVzc2Fn
ZXMuU3RyaWN0Q2F0Y2hWYXJpYWJsZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBleHBlY3QoJykn
KTsKLSAgICAgICAgYm9keSA9IHBhcnNlQmxvY2soKTsKLSAgICAgICAgcmV0dXJuIGRlbGVnYXRl
LmNyZWF0ZUNhdGNoQ2xhdXNlKHBhcmFtLCBib2R5KTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBw
YXJzZVRyeVN0YXRlbWVudCgpIHsKLSAgICAgICAgdmFyIGJsb2NrLCBoYW5kbGVycyA9IFtdLCBm
aW5hbGl6ZXIgPSBudWxsOwotCi0gICAgICAgIGV4cGVjdEtleXdvcmQoJ3RyeScpOwotCi0gICAg
ICAgIGJsb2NrID0gcGFyc2VCbG9jaygpOwotCi0gICAgICAgIGlmIChtYXRjaEtleXdvcmQoJ2Nh
dGNoJykpIHsKLSAgICAgICAgICAgIGhhbmRsZXJzLnB1c2gocGFyc2VDYXRjaENsYXVzZSgpKTsK
LSAgICAgICAgfQotCi0gICAgICAgIGlmIChtYXRjaEtleXdvcmQoJ2ZpbmFsbHknKSkgewotICAg
ICAgICAgICAgbGV4KCk7Ci0gICAgICAgICAgICBmaW5hbGl6ZXIgPSBwYXJzZUJsb2NrKCk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBpZiAoaGFuZGxlcnMubGVuZ3RoID09PSAwICYmICFmaW5hbGl6
ZXIpIHsKLSAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLk5vQ2F0Y2hPckZpbmFs
bHkpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0ZVRyeVN0YXRl
bWVudChibG9jaywgW10sIGhhbmRsZXJzLCBmaW5hbGl6ZXIpOwotICAgIH0KLQotICAgIC8vIDEy
LjE1IFRoZSBkZWJ1Z2dlciBzdGF0ZW1lbnQKLQotICAgIGZ1bmN0aW9uIHBhcnNlRGVidWdnZXJT
dGF0ZW1lbnQoKSB7Ci0gICAgICAgIGV4cGVjdEtleXdvcmQoJ2RlYnVnZ2VyJyk7Ci0KLSAgICAg
ICAgY29uc3VtZVNlbWljb2xvbigpOwotCi0gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5jcmVhdGVE
ZWJ1Z2dlclN0YXRlbWVudCgpOwotICAgIH0KLQotICAgIC8vIDEyIFN0YXRlbWVudHMKLQotICAg
IGZ1bmN0aW9uIHBhcnNlU3RhdGVtZW50KCkgewotICAgICAgICB2YXIgdHlwZSA9IGxvb2thaGVh
ZC50eXBlLAotICAgICAgICAgICAgZXhwciwKLSAgICAgICAgICAgIGxhYmVsZWRCb2R5LAotICAg
ICAgICAgICAga2V5OwotCi0gICAgICAgIGlmICh0eXBlID09PSBUb2tlbi5FT0YpIHsKLSAgICAg
ICAgICAgIHRocm93VW5leHBlY3RlZChsb29rYWhlYWQpOwotICAgICAgICB9Ci0KLSAgICAgICAg
aWYgKHR5cGUgPT09IFRva2VuLlB1bmN0dWF0b3IpIHsKLSAgICAgICAgICAgIHN3aXRjaCAobG9v
a2FoZWFkLnZhbHVlKSB7Ci0gICAgICAgICAgICBjYXNlICc7JzoKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gcGFyc2VFbXB0eVN0YXRlbWVudCgpOwotICAgICAgICAgICAgY2FzZSAneyc6Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIHBhcnNlQmxvY2soKTsKLSAgICAgICAgICAgIGNhc2UgJygnOgot
ICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUV4cHJlc3Npb25TdGF0ZW1lbnQoKTsKLSAgICAg
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLQotICAgICAgICBpZiAodHlwZSA9PT0gVG9rZW4uS2V5d29yZCkgewotICAgICAg
ICAgICAgc3dpdGNoIChsb29rYWhlYWQudmFsdWUpIHsKLSAgICAgICAgICAgIGNhc2UgJ2JyZWFr
JzoKLSAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VCcmVha1N0YXRlbWVudCgpOwotICAgICAg
ICAgICAgY2FzZSAnY29udGludWUnOgotICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUNvbnRp
bnVlU3RhdGVtZW50KCk7Ci0gICAgICAgICAgICBjYXNlICdkZWJ1Z2dlcic6Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIHBhcnNlRGVidWdnZXJTdGF0ZW1lbnQoKTsKLSAgICAgICAgICAgIGNhc2Ug
J2RvJzoKLSAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VEb1doaWxlU3RhdGVtZW50KCk7Ci0g
ICAgICAgICAgICBjYXNlICdmb3InOgotICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUZvclN0
YXRlbWVudCgpOwotICAgICAgICAgICAgY2FzZSAnZnVuY3Rpb24nOgotICAgICAgICAgICAgICAg
IHJldHVybiBwYXJzZUZ1bmN0aW9uRGVjbGFyYXRpb24oKTsKLSAgICAgICAgICAgIGNhc2UgJ2Ns
YXNzJzoKLSAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VDbGFzc0RlY2xhcmF0aW9uKCk7Ci0g
ICAgICAgICAgICBjYXNlICdpZic6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlSWZTdGF0
ZW1lbnQoKTsKLSAgICAgICAgICAgIGNhc2UgJ3JldHVybic6Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIHBhcnNlUmV0dXJuU3RhdGVtZW50KCk7Ci0gICAgICAgICAgICBjYXNlICdzd2l0Y2gnOgot
ICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZVN3aXRjaFN0YXRlbWVudCgpOwotICAgICAgICAg
ICAgY2FzZSAndGhyb3cnOgotICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZVRocm93U3RhdGVt
ZW50KCk7Ci0gICAgICAgICAgICBjYXNlICd0cnknOgotICAgICAgICAgICAgICAgIHJldHVybiBw
YXJzZVRyeVN0YXRlbWVudCgpOwotICAgICAgICAgICAgY2FzZSAndmFyJzoKLSAgICAgICAgICAg
ICAgICByZXR1cm4gcGFyc2VWYXJpYWJsZVN0YXRlbWVudCgpOwotICAgICAgICAgICAgY2FzZSAn
d2hpbGUnOgotICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZVdoaWxlU3RhdGVtZW50KCk7Ci0g
ICAgICAgICAgICBjYXNlICd3aXRoJzoKLSAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VXaXRo
U3RhdGVtZW50KCk7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgZXhwciA9IHBhcnNlRXhwcmVz
c2lvbigpOwotCi0gICAgICAgIC8vIDEyLjEyIExhYmVsbGVkIFN0YXRlbWVudHMKLSAgICAgICAg
aWYgKChleHByLnR5cGUgPT09IFN5bnRheC5JZGVudGlmaWVyKSAmJiBtYXRjaCgnOicpKSB7Ci0g
ICAgICAgICAgICBsZXgoKTsKLQotICAgICAgICAgICAga2V5ID0gJyQnICsgZXhwci5uYW1lOwot
ICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzdGF0
ZS5sYWJlbFNldCwga2V5KSkgewotICAgICAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3Nh
Z2VzLlJlZGVjbGFyYXRpb24sICdMYWJlbCcsIGV4cHIubmFtZSk7Ci0gICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgIHN0YXRlLmxhYmVsU2V0W2tleV0gPSB0cnVlOwotICAgICAgICAgICAgbGFi
ZWxlZEJvZHkgPSBwYXJzZVN0YXRlbWVudCgpOwotICAgICAgICAgICAgZGVsZXRlIHN0YXRlLmxh
YmVsU2V0W2tleV07Ci0gICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlTGFiZWxlZFN0
YXRlbWVudChleHByLCBsYWJlbGVkQm9keSk7Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zdW1l
U2VtaWNvbG9uKCk7Ci0KLSAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0ZUV4cHJlc3Npb25T
dGF0ZW1lbnQoZXhwcik7Ci0gICAgfQotCi0gICAgLy8gMTMgRnVuY3Rpb24gRGVmaW5pdGlvbgot
Ci0gICAgZnVuY3Rpb24gcGFyc2VDb25jaXNlQm9keSgpIHsKLSAgICAgICAgaWYgKG1hdGNoKCd7
JykpIHsKLSAgICAgICAgICAgIHJldHVybiBwYXJzZUZ1bmN0aW9uU291cmNlRWxlbWVudHMoKTsK
LSAgICAgICAgfQotICAgICAgICByZXR1cm4gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbigpOwot
ICAgIH0KLQotICAgIGZ1bmN0aW9uIHBhcnNlRnVuY3Rpb25Tb3VyY2VFbGVtZW50cygpIHsKLSAg
ICAgICAgdmFyIHNvdXJjZUVsZW1lbnQsIHNvdXJjZUVsZW1lbnRzID0gW10sIHRva2VuLCBkaXJl
Y3RpdmUsIGZpcnN0UmVzdHJpY3RlZCwKLSAgICAgICAgICAgIG9sZExhYmVsU2V0LCBvbGRJbkl0
ZXJhdGlvbiwgb2xkSW5Td2l0Y2gsIG9sZEluRnVuY3Rpb25Cb2R5LCBvbGRQYXJlbnRoZXNpemVk
Q291bnQ7Ci0KLSAgICAgICAgZXhwZWN0KCd7Jyk7Ci0KLSAgICAgICAgd2hpbGUgKGluZGV4IDwg
bGVuZ3RoKSB7Ci0gICAgICAgICAgICBpZiAobG9va2FoZWFkLnR5cGUgIT09IFRva2VuLlN0cmlu
Z0xpdGVyYWwpIHsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIHRva2VuID0gbG9va2FoZWFkOwotCi0gICAgICAgICAgICBzb3VyY2VFbGVtZW50ID0g
cGFyc2VTb3VyY2VFbGVtZW50KCk7Ci0gICAgICAgICAgICBzb3VyY2VFbGVtZW50cy5wdXNoKHNv
dXJjZUVsZW1lbnQpOwotICAgICAgICAgICAgaWYgKHNvdXJjZUVsZW1lbnQuZXhwcmVzc2lvbi50
eXBlICE9PSBTeW50YXguTGl0ZXJhbCkgewotICAgICAgICAgICAgICAgIC8vIHRoaXMgaXMgbm90
IGRpcmVjdGl2ZQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgZGlyZWN0aXZlID0gc291cmNlLnNsaWNlKHRva2VuLnJhbmdlWzBdICsgMSwgdG9rZW4u
cmFuZ2VbMV0gLSAxKTsKLSAgICAgICAgICAgIGlmIChkaXJlY3RpdmUgPT09ICd1c2Ugc3RyaWN0
JykgewotICAgICAgICAgICAgICAgIHN0cmljdCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgaWYg
KGZpcnN0UmVzdHJpY3RlZCkgewotICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yVG9sZXJh
bnQoZmlyc3RSZXN0cmljdGVkLCBNZXNzYWdlcy5TdHJpY3RPY3RhbExpdGVyYWwpOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFm
aXJzdFJlc3RyaWN0ZWQgJiYgdG9rZW4ub2N0YWwpIHsKLSAgICAgICAgICAgICAgICAgICAgZmly
c3RSZXN0cmljdGVkID0gdG9rZW47Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0KLSAgICAgICAgb2xkTGFiZWxTZXQgPSBzdGF0ZS5sYWJlbFNldDsKLSAgICAg
ICAgb2xkSW5JdGVyYXRpb24gPSBzdGF0ZS5pbkl0ZXJhdGlvbjsKLSAgICAgICAgb2xkSW5Td2l0
Y2ggPSBzdGF0ZS5pblN3aXRjaDsKLSAgICAgICAgb2xkSW5GdW5jdGlvbkJvZHkgPSBzdGF0ZS5p
bkZ1bmN0aW9uQm9keTsKLSAgICAgICAgb2xkUGFyZW50aGVzaXplZENvdW50ID0gc3RhdGUucGFy
ZW50aGVzaXplZENvdW50OwotCi0gICAgICAgIHN0YXRlLmxhYmVsU2V0ID0ge307Ci0gICAgICAg
IHN0YXRlLmluSXRlcmF0aW9uID0gZmFsc2U7Ci0gICAgICAgIHN0YXRlLmluU3dpdGNoID0gZmFs
c2U7Ci0gICAgICAgIHN0YXRlLmluRnVuY3Rpb25Cb2R5ID0gdHJ1ZTsKLSAgICAgICAgc3RhdGUu
cGFyZW50aGVzaXplZENvdW50ID0gMDsKLQotICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgp
IHsKLSAgICAgICAgICAgIGlmIChtYXRjaCgnfScpKSB7Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzb3VyY2VFbGVtZW50ID0gcGFyc2VTb3VyY2VF
bGVtZW50KCk7Ci0gICAgICAgICAgICBpZiAodHlwZW9mIHNvdXJjZUVsZW1lbnQgPT09ICd1bmRl
ZmluZWQnKSB7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBzb3VyY2VFbGVtZW50cy5wdXNoKHNvdXJjZUVsZW1lbnQpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgZXhwZWN0KCd9Jyk7Ci0KLSAgICAgICAgc3RhdGUubGFiZWxTZXQgPSBvbGRMYWJlbFNl
dDsKLSAgICAgICAgc3RhdGUuaW5JdGVyYXRpb24gPSBvbGRJbkl0ZXJhdGlvbjsKLSAgICAgICAg
c3RhdGUuaW5Td2l0Y2ggPSBvbGRJblN3aXRjaDsKLSAgICAgICAgc3RhdGUuaW5GdW5jdGlvbkJv
ZHkgPSBvbGRJbkZ1bmN0aW9uQm9keTsKLSAgICAgICAgc3RhdGUucGFyZW50aGVzaXplZENvdW50
ID0gb2xkUGFyZW50aGVzaXplZENvdW50OwotCi0gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5jcmVh
dGVCbG9ja1N0YXRlbWVudChzb3VyY2VFbGVtZW50cyk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24g
dmFsaWRhdGVQYXJhbShvcHRpb25zLCBwYXJhbSwgbmFtZSkgewotICAgICAgICB2YXIga2V5ID0g
JyQnICsgbmFtZTsKLSAgICAgICAgaWYgKHN0cmljdCkgewotICAgICAgICAgICAgaWYgKGlzUmVz
dHJpY3RlZFdvcmQobmFtZSkpIHsKLSAgICAgICAgICAgICAgICBvcHRpb25zLnN0cmljdGVkID0g
cGFyYW07Ci0gICAgICAgICAgICAgICAgb3B0aW9ucy5tZXNzYWdlID0gTWVzc2FnZXMuU3RyaWN0
UGFyYW1OYW1lOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5
cGUuaGFzT3duUHJvcGVydHkuY2FsbChvcHRpb25zLnBhcmFtU2V0LCBrZXkpKSB7Ci0gICAgICAg
ICAgICAgICAgb3B0aW9ucy5zdHJpY3RlZCA9IHBhcmFtOwotICAgICAgICAgICAgICAgIG9wdGlv
bnMubWVzc2FnZSA9IE1lc3NhZ2VzLlN0cmljdFBhcmFtRHVwZTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfSBlbHNlIGlmICghb3B0aW9ucy5maXJzdFJlc3RyaWN0ZWQpIHsKLSAgICAgICAgICAg
IGlmIChpc1Jlc3RyaWN0ZWRXb3JkKG5hbWUpKSB7Ci0gICAgICAgICAgICAgICAgb3B0aW9ucy5m
aXJzdFJlc3RyaWN0ZWQgPSBwYXJhbTsKLSAgICAgICAgICAgICAgICBvcHRpb25zLm1lc3NhZ2Ug
PSBNZXNzYWdlcy5TdHJpY3RQYXJhbU5hbWU7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGlzU3Ry
aWN0TW9kZVJlc2VydmVkV29yZChuYW1lKSkgewotICAgICAgICAgICAgICAgIG9wdGlvbnMuZmly
c3RSZXN0cmljdGVkID0gcGFyYW07Ci0gICAgICAgICAgICAgICAgb3B0aW9ucy5tZXNzYWdlID0g
TWVzc2FnZXMuU3RyaWN0UmVzZXJ2ZWRXb3JkOwotICAgICAgICAgICAgfSBlbHNlIGlmIChPYmpl
Y3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob3B0aW9ucy5wYXJhbVNldCwga2V5KSkg
ewotICAgICAgICAgICAgICAgIG9wdGlvbnMuZmlyc3RSZXN0cmljdGVkID0gcGFyYW07Ci0gICAg
ICAgICAgICAgICAgb3B0aW9ucy5tZXNzYWdlID0gTWVzc2FnZXMuU3RyaWN0UGFyYW1EdXBlOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIG9wdGlvbnMucGFyYW1TZXRba2V5XSA9
IHRydWU7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gcGFyc2VQYXJhbShvcHRpb25zKSB7Ci0gICAg
ICAgIHZhciB0b2tlbiwgcmVzdCwgcGFyYW07Ci0KLSAgICAgICAgdG9rZW4gPSBsb29rYWhlYWQ7
Ci0gICAgICAgIGlmICh0b2tlbi52YWx1ZSA9PT0gJy4uLicpIHsKLSAgICAgICAgICAgIHRva2Vu
ID0gbGV4KCk7Ci0gICAgICAgICAgICByZXN0ID0gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAg
IGlmIChtYXRjaCgnWycpKSB7Ci0gICAgICAgICAgICBwYXJhbSA9IHBhcnNlQXJyYXlJbml0aWFs
aXNlcigpOwotICAgICAgICAgICAgcmVpbnRlcnByZXRBc0Rlc3RydWN0dXJlZFBhcmFtZXRlcihv
cHRpb25zLCBwYXJhbSk7Ci0gICAgICAgIH0gZWxzZSBpZiAobWF0Y2goJ3snKSkgewotICAgICAg
ICAgICAgaWYgKHJlc3QpIHsKLSAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdl
cy5PYmplY3RQYXR0ZXJuQXNSZXN0UGFyYW1ldGVyKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIHBhcmFtID0gcGFyc2VPYmplY3RJbml0aWFsaXNlcigpOwotICAgICAgICAgICAgcmVpbnRl
cnByZXRBc0Rlc3RydWN0dXJlZFBhcmFtZXRlcihvcHRpb25zLCBwYXJhbSk7Ci0gICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICBwYXJhbSA9IHBhcnNlVmFyaWFibGVJZGVudGlmaWVyKCk7Ci0g
ICAgICAgICAgICB2YWxpZGF0ZVBhcmFtKG9wdGlvbnMsIHRva2VuLCB0b2tlbi52YWx1ZSk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBpZiAocmVzdCkgewotICAgICAgICAgICAgaWYgKCFtYXRjaCgn
KScpKSB7Ci0gICAgICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuUGFyYW1ldGVy
QWZ0ZXJSZXN0UGFyYW1ldGVyKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG9wdGlvbnMu
cmVzdCA9IHBhcmFtOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAg
ICAgICAgb3B0aW9ucy5wYXJhbXMucHVzaChwYXJhbSk7Ci0gICAgICAgIHJldHVybiAhbWF0Y2go
JyknKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBwYXJzZVBhcmFtcyhmaXJzdFJlc3RyaWN0ZWQp
IHsKLSAgICAgICAgdmFyIG9wdGlvbnM7Ci0KLSAgICAgICAgb3B0aW9ucyA9IHsKLSAgICAgICAg
ICAgIHBhcmFtczogW10sCi0gICAgICAgICAgICByZXN0OiBudWxsLAotICAgICAgICAgICAgZmly
c3RSZXN0cmljdGVkOiBmaXJzdFJlc3RyaWN0ZWQKLSAgICAgICAgfTsKLQotICAgICAgICBleHBl
Y3QoJygnKTsKLQotICAgICAgICBpZiAoIW1hdGNoKCcpJykpIHsKLSAgICAgICAgICAgIG9wdGlv
bnMucGFyYW1TZXQgPSB7fTsKLSAgICAgICAgICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkgewot
ICAgICAgICAgICAgICAgIGlmICghcGFyc2VQYXJhbShvcHRpb25zKSkgewotICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZXhwZWN0
KCcsJyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBleHBlY3QoJyknKTsK
LQotICAgICAgICByZXR1cm4gb3B0aW9uczsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBwYXJzZUZ1
bmN0aW9uRGVjbGFyYXRpb24oKSB7Ci0gICAgICAgIHZhciBpZCwgYm9keSwgdG9rZW4sIHRtcCwg
Zmlyc3RSZXN0cmljdGVkLCBtZXNzYWdlLCBwcmV2aW91c1N0cmljdCwgcHJldmlvdXNZaWVsZEFs
bG93ZWQsIGdlbmVyYXRvciwgZXhwcmVzc2lvbjsKLQotICAgICAgICBleHBlY3RLZXl3b3JkKCdm
dW5jdGlvbicpOwotCi0gICAgICAgIGdlbmVyYXRvciA9IGZhbHNlOwotICAgICAgICBpZiAobWF0
Y2goJyonKSkgewotICAgICAgICAgICAgbGV4KCk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IgPSB0
cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgdG9rZW4gPSBsb29rYWhlYWQ7Ci0KLSAgICAgICAg
aWQgPSBwYXJzZVZhcmlhYmxlSWRlbnRpZmllcigpOwotICAgICAgICBpZiAoc3RyaWN0KSB7Ci0g
ICAgICAgICAgICBpZiAoaXNSZXN0cmljdGVkV29yZCh0b2tlbi52YWx1ZSkpIHsKLSAgICAgICAg
ICAgICAgICB0aHJvd0Vycm9yVG9sZXJhbnQodG9rZW4sIE1lc3NhZ2VzLlN0cmljdEZ1bmN0aW9u
TmFtZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAo
aXNSZXN0cmljdGVkV29yZCh0b2tlbi52YWx1ZSkpIHsKLSAgICAgICAgICAgICAgICBmaXJzdFJl
c3RyaWN0ZWQgPSB0b2tlbjsKLSAgICAgICAgICAgICAgICBtZXNzYWdlID0gTWVzc2FnZXMuU3Ry
aWN0RnVuY3Rpb25OYW1lOwotICAgICAgICAgICAgfSBlbHNlIGlmIChpc1N0cmljdE1vZGVSZXNl
cnZlZFdvcmQodG9rZW4udmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgZmlyc3RSZXN0cmljdGVk
ID0gdG9rZW47Ci0gICAgICAgICAgICAgICAgbWVzc2FnZSA9IE1lc3NhZ2VzLlN0cmljdFJlc2Vy
dmVkV29yZDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHRtcCA9IHBhcnNl
UGFyYW1zKGZpcnN0UmVzdHJpY3RlZCk7Ci0gICAgICAgIGZpcnN0UmVzdHJpY3RlZCA9IHRtcC5m
aXJzdFJlc3RyaWN0ZWQ7Ci0gICAgICAgIGlmICh0bXAubWVzc2FnZSkgewotICAgICAgICAgICAg
bWVzc2FnZSA9IHRtcC5tZXNzYWdlOwotICAgICAgICB9Ci0KLSAgICAgICAgcHJldmlvdXNTdHJp
Y3QgPSBzdHJpY3Q7Ci0gICAgICAgIHByZXZpb3VzWWllbGRBbGxvd2VkID0gc3RhdGUueWllbGRB
bGxvd2VkOwotICAgICAgICBzdGF0ZS55aWVsZEFsbG93ZWQgPSBnZW5lcmF0b3I7Ci0KLSAgICAg
ICAgLy8gaGVyZSB3ZSByZWRvIHNvbWUgd29yayBpbiBvcmRlciB0byBzZXQgJ2V4cHJlc3Npb24n
Ci0gICAgICAgIGV4cHJlc3Npb24gPSAhbWF0Y2goJ3snKTsKLSAgICAgICAgYm9keSA9IHBhcnNl
Q29uY2lzZUJvZHkoKTsKLQotICAgICAgICBpZiAoc3RyaWN0ICYmIGZpcnN0UmVzdHJpY3RlZCkg
ewotICAgICAgICAgICAgdGhyb3dFcnJvcihmaXJzdFJlc3RyaWN0ZWQsIG1lc3NhZ2UpOwotICAg
ICAgICB9Ci0gICAgICAgIGlmIChzdHJpY3QgJiYgdG1wLnN0cmljdGVkKSB7Ci0gICAgICAgICAg
ICB0aHJvd0Vycm9yVG9sZXJhbnQodG1wLnN0cmljdGVkLCBtZXNzYWdlKTsKLSAgICAgICAgfQot
ICAgICAgICBpZiAoc3RhdGUueWllbGRBbGxvd2VkICYmICFzdGF0ZS55aWVsZEZvdW5kKSB7Ci0g
ICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5Ob1lpZWxkSW5HZW5lcmF0b3IpOwot
ICAgICAgICB9Ci0gICAgICAgIHN0cmljdCA9IHByZXZpb3VzU3RyaWN0OwotICAgICAgICBzdGF0
ZS55aWVsZEFsbG93ZWQgPSBwcmV2aW91c1lpZWxkQWxsb3dlZDsKLQotICAgICAgICByZXR1cm4g
ZGVsZWdhdGUuY3JlYXRlRnVuY3Rpb25EZWNsYXJhdGlvbihpZCwgdG1wLnBhcmFtcywgW10sIGJv
ZHksIHRtcC5yZXN0LCBnZW5lcmF0b3IsIGV4cHJlc3Npb24pOwotICAgIH0KLQotICAgIGZ1bmN0
aW9uIHBhcnNlRnVuY3Rpb25FeHByZXNzaW9uKCkgewotICAgICAgICB2YXIgdG9rZW4sIGlkID0g
bnVsbCwgZmlyc3RSZXN0cmljdGVkLCBtZXNzYWdlLCB0bXAsIGJvZHksIHByZXZpb3VzU3RyaWN0
LCBwcmV2aW91c1lpZWxkQWxsb3dlZCwgZ2VuZXJhdG9yLCBleHByZXNzaW9uOwotCi0gICAgICAg
IGV4cGVjdEtleXdvcmQoJ2Z1bmN0aW9uJyk7Ci0KLSAgICAgICAgZ2VuZXJhdG9yID0gZmFsc2U7
Ci0KLSAgICAgICAgaWYgKG1hdGNoKCcqJykpIHsKLSAgICAgICAgICAgIGxleCgpOwotICAgICAg
ICAgICAgZ2VuZXJhdG9yID0gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICghbWF0Y2go
JygnKSkgewotICAgICAgICAgICAgdG9rZW4gPSBsb29rYWhlYWQ7Ci0gICAgICAgICAgICBpZCA9
IHBhcnNlVmFyaWFibGVJZGVudGlmaWVyKCk7Ci0gICAgICAgICAgICBpZiAoc3RyaWN0KSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKGlzUmVzdHJpY3RlZFdvcmQodG9rZW4udmFsdWUpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudCh0b2tlbiwgTWVzc2FnZXMuU3RyaWN0
RnVuY3Rpb25OYW1lKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgICAgIGlmIChpc1Jlc3RyaWN0ZWRXb3JkKHRva2VuLnZhbHVlKSkgewotICAg
ICAgICAgICAgICAgICAgICBmaXJzdFJlc3RyaWN0ZWQgPSB0b2tlbjsKLSAgICAgICAgICAgICAg
ICAgICAgbWVzc2FnZSA9IE1lc3NhZ2VzLlN0cmljdEZ1bmN0aW9uTmFtZTsKLSAgICAgICAgICAg
ICAgICB9IGVsc2UgaWYgKGlzU3RyaWN0TW9kZVJlc2VydmVkV29yZCh0b2tlbi52YWx1ZSkpIHsK
LSAgICAgICAgICAgICAgICAgICAgZmlyc3RSZXN0cmljdGVkID0gdG9rZW47Ci0gICAgICAgICAg
ICAgICAgICAgIG1lc3NhZ2UgPSBNZXNzYWdlcy5TdHJpY3RSZXNlcnZlZFdvcmQ7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgdG1wID0gcGFy
c2VQYXJhbXMoZmlyc3RSZXN0cmljdGVkKTsKLSAgICAgICAgZmlyc3RSZXN0cmljdGVkID0gdG1w
LmZpcnN0UmVzdHJpY3RlZDsKLSAgICAgICAgaWYgKHRtcC5tZXNzYWdlKSB7Ci0gICAgICAgICAg
ICBtZXNzYWdlID0gdG1wLm1lc3NhZ2U7Ci0gICAgICAgIH0KLQotICAgICAgICBwcmV2aW91c1N0
cmljdCA9IHN0cmljdDsKLSAgICAgICAgcHJldmlvdXNZaWVsZEFsbG93ZWQgPSBzdGF0ZS55aWVs
ZEFsbG93ZWQ7Ci0gICAgICAgIHN0YXRlLnlpZWxkQWxsb3dlZCA9IGdlbmVyYXRvcjsKLQotICAg
ICAgICAvLyBoZXJlIHdlIHJlZG8gc29tZSB3b3JrIGluIG9yZGVyIHRvIHNldCAnZXhwcmVzc2lv
bicKLSAgICAgICAgZXhwcmVzc2lvbiA9ICFtYXRjaCgneycpOwotICAgICAgICBib2R5ID0gcGFy
c2VDb25jaXNlQm9keSgpOwotCi0gICAgICAgIGlmIChzdHJpY3QgJiYgZmlyc3RSZXN0cmljdGVk
KSB7Ci0gICAgICAgICAgICB0aHJvd0Vycm9yKGZpcnN0UmVzdHJpY3RlZCwgbWVzc2FnZSk7Ci0g
ICAgICAgIH0KLSAgICAgICAgaWYgKHN0cmljdCAmJiB0bXAuc3RyaWN0ZWQpIHsKLSAgICAgICAg
ICAgIHRocm93RXJyb3JUb2xlcmFudCh0bXAuc3RyaWN0ZWQsIG1lc3NhZ2UpOwotICAgICAgICB9
Ci0gICAgICAgIGlmIChzdGF0ZS55aWVsZEFsbG93ZWQgJiYgIXN0YXRlLnlpZWxkRm91bmQpIHsK
LSAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLk5vWWllbGRJbkdlbmVyYXRvcik7
Ci0gICAgICAgIH0KLSAgICAgICAgc3RyaWN0ID0gcHJldmlvdXNTdHJpY3Q7Ci0gICAgICAgIHN0
YXRlLnlpZWxkQWxsb3dlZCA9IHByZXZpb3VzWWllbGRBbGxvd2VkOwotCi0gICAgICAgIHJldHVy
biBkZWxlZ2F0ZS5jcmVhdGVGdW5jdGlvbkV4cHJlc3Npb24oaWQsIHRtcC5wYXJhbXMsIFtdLCBi
b2R5LCB0bXAucmVzdCwgZ2VuZXJhdG9yLCBleHByZXNzaW9uKTsKLSAgICB9Ci0KLSAgICBmdW5j
dGlvbiBwYXJzZVlpZWxkRXhwcmVzc2lvbigpIHsKLSAgICAgICAgdmFyIGRlbGVnYXRlRmxhZywg
ZXhwciwgcHJldmlvdXNZaWVsZEFsbG93ZWQ7Ci0KLSAgICAgICAgZXhwZWN0S2V5d29yZCgneWll
bGQnKTsKLQotICAgICAgICBpZiAoIXN0YXRlLnlpZWxkQWxsb3dlZCkgewotICAgICAgICAgICAg
dGhyb3dFcnJvclRvbGVyYW50KHt9LCBNZXNzYWdlcy5JbGxlZ2FsWWllbGQpOwotICAgICAgICB9
Ci0KLSAgICAgICAgZGVsZWdhdGVGbGFnID0gZmFsc2U7Ci0gICAgICAgIGlmIChtYXRjaCgnKicp
KSB7Ci0gICAgICAgICAgICBsZXgoKTsKLSAgICAgICAgICAgIGRlbGVnYXRlRmxhZyA9IHRydWU7
Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBJdCBpcyBhIFN5bnRheCBFcnJvciBpZiBhbnkgQXNz
aWdubWVudEV4cHJlc3Npb24gQ29udGFpbnMgWWllbGRFeHByZXNzaW9uLgotICAgICAgICBwcmV2
aW91c1lpZWxkQWxsb3dlZCA9IHN0YXRlLnlpZWxkQWxsb3dlZDsKLSAgICAgICAgc3RhdGUueWll
bGRBbGxvd2VkID0gZmFsc2U7Ci0gICAgICAgIGV4cHIgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNz
aW9uKCk7Ci0gICAgICAgIHN0YXRlLnlpZWxkQWxsb3dlZCA9IHByZXZpb3VzWWllbGRBbGxvd2Vk
OwotICAgICAgICBzdGF0ZS55aWVsZEZvdW5kID0gdHJ1ZTsKLQotICAgICAgICByZXR1cm4gZGVs
ZWdhdGUuY3JlYXRlWWllbGRFeHByZXNzaW9uKGV4cHIsIGRlbGVnYXRlRmxhZyk7Ci0gICAgfQot
Ci0gICAgLy8gMTQgQ2xhc3NlcwotCi0gICAgZnVuY3Rpb24gcGFyc2VNZXRob2REZWZpbml0aW9u
KGV4aXN0aW5nUHJvcE5hbWVzKSB7Ci0gICAgICAgIHZhciB0b2tlbiwga2V5LCBwYXJhbSwgcHJv
cFR5cGUsIGlzVmFsaWREdXBsaWNhdGVQcm9wID0gZmFsc2U7Ci0KLSAgICAgICAgaWYgKGxvb2th
aGVhZC52YWx1ZSA9PT0gJ3N0YXRpYycpIHsKLSAgICAgICAgICAgIHByb3BUeXBlID0gQ2xhc3NQ
cm9wZXJ0eVR5cGUuc3RhdGljOwotICAgICAgICAgICAgbGV4KCk7Ci0gICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICBwcm9wVHlwZSA9IENsYXNzUHJvcGVydHlUeXBlLnByb3RvdHlwZTsKLSAg
ICAgICAgfQotCi0gICAgICAgIGlmIChtYXRjaCgnKicpKSB7Ci0gICAgICAgICAgICBsZXgoKTsK
LSAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5jcmVhdGVNZXRob2REZWZpbml0aW9uKAotICAg
ICAgICAgICAgICAgIHByb3BUeXBlLAotICAgICAgICAgICAgICAgICcnLAotICAgICAgICAgICAg
ICAgIHBhcnNlT2JqZWN0UHJvcGVydHlLZXkoKSwKLSAgICAgICAgICAgICAgICBwYXJzZVByb3Bl
cnR5TWV0aG9kRnVuY3Rpb24oeyBnZW5lcmF0b3I6IHRydWUgfSkKLSAgICAgICAgICAgICk7Ci0g
ICAgICAgIH0KLQotICAgICAgICB0b2tlbiA9IGxvb2thaGVhZDsKLSAgICAgICAga2V5ID0gcGFy
c2VPYmplY3RQcm9wZXJ0eUtleSgpOwotCi0gICAgICAgIGlmICh0b2tlbi52YWx1ZSA9PT0gJ2dl
dCcgJiYgIW1hdGNoKCcoJykpIHsKLSAgICAgICAgICAgIGtleSA9IHBhcnNlT2JqZWN0UHJvcGVy
dHlLZXkoKTsKLQotICAgICAgICAgICAgLy8gSXQgaXMgYSBzeW50YXggZXJyb3IgaWYgYW55IG90
aGVyIHByb3BlcnRpZXMgaGF2ZSBhIG5hbWUKLSAgICAgICAgICAgIC8vIGR1cGxpY2F0aW5nIHRo
aXMgb25lIHVubGVzcyB0aGV5IGFyZSBhIHNldHRlcgotICAgICAgICAgICAgaWYgKGV4aXN0aW5n
UHJvcE5hbWVzW3Byb3BUeXBlXS5oYXNPd25Qcm9wZXJ0eShrZXkubmFtZSkpIHsKLSAgICAgICAg
ICAgICAgICBpc1ZhbGlkRHVwbGljYXRlUHJvcCA9Ci0gICAgICAgICAgICAgICAgICAgIC8vIFRo
ZXJlIGlzbid0IGFscmVhZHkgYSBnZXR0ZXIgZm9yIHRoaXMgcHJvcAotICAgICAgICAgICAgICAg
ICAgICBleGlzdGluZ1Byb3BOYW1lc1twcm9wVHlwZV1ba2V5Lm5hbWVdLmdldCA9PT0gdW5kZWZp
bmVkCi0gICAgICAgICAgICAgICAgICAgIC8vIFRoZXJlIGlzbid0IGFscmVhZHkgYSBkYXRhIHBy
b3AgYnkgdGhpcyBuYW1lCi0gICAgICAgICAgICAgICAgICAgICYmIGV4aXN0aW5nUHJvcE5hbWVz
W3Byb3BUeXBlXVtrZXkubmFtZV0uZGF0YSA9PT0gdW5kZWZpbmVkCi0gICAgICAgICAgICAgICAg
ICAgIC8vIFRoZSBvbmx5IGV4aXN0aW5nIHByb3AgYnkgdGhpcyBuYW1lIGlzIGEgc2V0dGVyCi0g
ICAgICAgICAgICAgICAgICAgICYmIGV4aXN0aW5nUHJvcE5hbWVzW3Byb3BUeXBlXVtrZXkubmFt
ZV0uc2V0ICE9PSB1bmRlZmluZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkRHVwbGlj
YXRlUHJvcCkgewotICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKGtleSwgTWVzc2FnZXMu
SWxsZWdhbER1cGxpY2F0ZUNsYXNzUHJvcGVydHkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZXhpc3RpbmdQcm9wTmFtZXNbcHJvcFR5
cGVdW2tleS5uYW1lXSA9IHt9OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZXhpc3RpbmdQ
cm9wTmFtZXNbcHJvcFR5cGVdW2tleS5uYW1lXS5nZXQgPSB0cnVlOwotCi0gICAgICAgICAgICBl
eHBlY3QoJygnKTsKLSAgICAgICAgICAgIGV4cGVjdCgnKScpOwotICAgICAgICAgICAgcmV0dXJu
IGRlbGVnYXRlLmNyZWF0ZU1ldGhvZERlZmluaXRpb24oCi0gICAgICAgICAgICAgICAgcHJvcFR5
cGUsCi0gICAgICAgICAgICAgICAgJ2dldCcsCi0gICAgICAgICAgICAgICAga2V5LAotICAgICAg
ICAgICAgICAgIHBhcnNlUHJvcGVydHlGdW5jdGlvbih7IGdlbmVyYXRvcjogZmFsc2UgfSkKLSAg
ICAgICAgICAgICk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHRva2VuLnZhbHVlID09PSAnc2V0
JyAmJiAhbWF0Y2goJygnKSkgewotICAgICAgICAgICAga2V5ID0gcGFyc2VPYmplY3RQcm9wZXJ0
eUtleSgpOwotCi0gICAgICAgICAgICAvLyBJdCBpcyBhIHN5bnRheCBlcnJvciBpZiBhbnkgb3Ro
ZXIgcHJvcGVydGllcyBoYXZlIGEgbmFtZQotICAgICAgICAgICAgLy8gZHVwbGljYXRpbmcgdGhp
cyBvbmUgdW5sZXNzIHRoZXkgYXJlIGEgZ2V0dGVyCi0gICAgICAgICAgICBpZiAoZXhpc3RpbmdQ
cm9wTmFtZXNbcHJvcFR5cGVdLmhhc093blByb3BlcnR5KGtleS5uYW1lKSkgewotICAgICAgICAg
ICAgICAgIGlzVmFsaWREdXBsaWNhdGVQcm9wID0KLSAgICAgICAgICAgICAgICAgICAgLy8gVGhl
cmUgaXNuJ3QgYWxyZWFkeSBhIHNldHRlciBmb3IgdGhpcyBwcm9wCi0gICAgICAgICAgICAgICAg
ICAgIGV4aXN0aW5nUHJvcE5hbWVzW3Byb3BUeXBlXVtrZXkubmFtZV0uc2V0ID09PSB1bmRlZmlu
ZWQKLSAgICAgICAgICAgICAgICAgICAgLy8gVGhlcmUgaXNuJ3QgYWxyZWFkeSBhIGRhdGEgcHJv
cCBieSB0aGlzIG5hbWUKLSAgICAgICAgICAgICAgICAgICAgJiYgZXhpc3RpbmdQcm9wTmFtZXNb
cHJvcFR5cGVdW2tleS5uYW1lXS5kYXRhID09PSB1bmRlZmluZWQKLSAgICAgICAgICAgICAgICAg
ICAgLy8gVGhlIG9ubHkgZXhpc3RpbmcgcHJvcCBieSB0aGlzIG5hbWUgaXMgYSBnZXR0ZXIKLSAg
ICAgICAgICAgICAgICAgICAgJiYgZXhpc3RpbmdQcm9wTmFtZXNbcHJvcFR5cGVdW2tleS5uYW1l
XS5nZXQgIT09IHVuZGVmaW5lZDsKLSAgICAgICAgICAgICAgICBpZiAoIWlzVmFsaWREdXBsaWNh
dGVQcm9wKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3Ioa2V5LCBNZXNzYWdlcy5J
bGxlZ2FsRHVwbGljYXRlQ2xhc3NQcm9wZXJ0eSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBleGlzdGluZ1Byb3BOYW1lc1twcm9wVHlw
ZV1ba2V5Lm5hbWVdID0ge307Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBleGlzdGluZ1By
b3BOYW1lc1twcm9wVHlwZV1ba2V5Lm5hbWVdLnNldCA9IHRydWU7Ci0KLSAgICAgICAgICAgIGV4
cGVjdCgnKCcpOwotICAgICAgICAgICAgdG9rZW4gPSBsb29rYWhlYWQ7Ci0gICAgICAgICAgICBw
YXJhbSA9IFsgcGFyc2VWYXJpYWJsZUlkZW50aWZpZXIoKSBdOwotICAgICAgICAgICAgZXhwZWN0
KCcpJyk7Ci0gICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlTWV0aG9kRGVmaW5pdGlv
bigKLSAgICAgICAgICAgICAgICBwcm9wVHlwZSwKLSAgICAgICAgICAgICAgICAnc2V0JywKLSAg
ICAgICAgICAgICAgICBrZXksCi0gICAgICAgICAgICAgICAgcGFyc2VQcm9wZXJ0eUZ1bmN0aW9u
KHsgcGFyYW1zOiBwYXJhbSwgZ2VuZXJhdG9yOiBmYWxzZSwgbmFtZTogdG9rZW4gfSkKLSAgICAg
ICAgICAgICk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBJdCBpcyBhIHN5bnRheCBlcnJvciBp
ZiBhbnkgb3RoZXIgcHJvcGVydGllcyBoYXZlIHRoZSBzYW1lIG5hbWUgYXMgYQotICAgICAgICAv
LyBub24tZ2V0dGVyLCBub24tc2V0dGVyIG1ldGhvZAotICAgICAgICBpZiAoZXhpc3RpbmdQcm9w
TmFtZXNbcHJvcFR5cGVdLmhhc093blByb3BlcnR5KGtleS5uYW1lKSkgewotICAgICAgICAgICAg
dGhyb3dFcnJvcihrZXksIE1lc3NhZ2VzLklsbGVnYWxEdXBsaWNhdGVDbGFzc1Byb3BlcnR5KTsK
LSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGV4aXN0aW5nUHJvcE5hbWVzW3Byb3BUeXBl
XVtrZXkubmFtZV0gPSB7fTsKLSAgICAgICAgfQotICAgICAgICBleGlzdGluZ1Byb3BOYW1lc1tw
cm9wVHlwZV1ba2V5Lm5hbWVdLmRhdGEgPSB0cnVlOwotCi0gICAgICAgIHJldHVybiBkZWxlZ2F0
ZS5jcmVhdGVNZXRob2REZWZpbml0aW9uKAotICAgICAgICAgICAgcHJvcFR5cGUsCi0gICAgICAg
ICAgICAnJywKLSAgICAgICAgICAgIGtleSwKLSAgICAgICAgICAgIHBhcnNlUHJvcGVydHlNZXRo
b2RGdW5jdGlvbih7IGdlbmVyYXRvcjogZmFsc2UgfSkKLSAgICAgICAgKTsKLSAgICB9Ci0KLSAg
ICBmdW5jdGlvbiBwYXJzZUNsYXNzRWxlbWVudChleGlzdGluZ1Byb3BzKSB7Ci0gICAgICAgIGlm
IChtYXRjaCgnOycpKSB7Ci0gICAgICAgICAgICBsZXgoKTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotICAgICAgICByZXR1cm4gcGFyc2VNZXRob2REZWZpbml0aW9uKGV4aXN0aW5n
UHJvcHMpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHBhcnNlQ2xhc3NCb2R5KCkgewotICAgICAg
ICB2YXIgY2xhc3NFbGVtZW50LCBjbGFzc0VsZW1lbnRzID0gW10sIGV4aXN0aW5nUHJvcHMgPSB7
fTsKLQotICAgICAgICBleGlzdGluZ1Byb3BzW0NsYXNzUHJvcGVydHlUeXBlLnN0YXRpY10gPSB7
fTsKLSAgICAgICAgZXhpc3RpbmdQcm9wc1tDbGFzc1Byb3BlcnR5VHlwZS5wcm90b3R5cGVdID0g
e307Ci0KLSAgICAgICAgZXhwZWN0KCd7Jyk7Ci0KLSAgICAgICAgd2hpbGUgKGluZGV4IDwgbGVu
Z3RoKSB7Ci0gICAgICAgICAgICBpZiAobWF0Y2goJ30nKSkgewotICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY2xhc3NFbGVtZW50ID0gcGFyc2VDbGFz
c0VsZW1lbnQoZXhpc3RpbmdQcm9wcyk7Ci0KLSAgICAgICAgICAgIGlmICh0eXBlb2YgY2xhc3NF
bGVtZW50ICE9PSAndW5kZWZpbmVkJykgewotICAgICAgICAgICAgICAgIGNsYXNzRWxlbWVudHMu
cHVzaChjbGFzc0VsZW1lbnQpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAg
ZXhwZWN0KCd9Jyk7Ci0KLSAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0ZUNsYXNzQm9keShj
bGFzc0VsZW1lbnRzKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBwYXJzZUNsYXNzRXhwcmVzc2lv
bigpIHsKLSAgICAgICAgdmFyIGlkLCBwcmV2aW91c1lpZWxkQWxsb3dlZCwgc3VwZXJDbGFzcyA9
IG51bGw7Ci0KLSAgICAgICAgZXhwZWN0S2V5d29yZCgnY2xhc3MnKTsKLQotICAgICAgICBpZiAo
IW1hdGNoS2V5d29yZCgnZXh0ZW5kcycpICYmICFtYXRjaCgneycpKSB7Ci0gICAgICAgICAgICBp
ZCA9IHBhcnNlVmFyaWFibGVJZGVudGlmaWVyKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAo
bWF0Y2hLZXl3b3JkKCdleHRlbmRzJykpIHsKLSAgICAgICAgICAgIGV4cGVjdEtleXdvcmQoJ2V4
dGVuZHMnKTsKLSAgICAgICAgICAgIHByZXZpb3VzWWllbGRBbGxvd2VkID0gc3RhdGUueWllbGRB
bGxvd2VkOwotICAgICAgICAgICAgc3RhdGUueWllbGRBbGxvd2VkID0gZmFsc2U7Ci0gICAgICAg
ICAgICBzdXBlckNsYXNzID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbigpOwotICAgICAgICAg
ICAgc3RhdGUueWllbGRBbGxvd2VkID0gcHJldmlvdXNZaWVsZEFsbG93ZWQ7Ci0gICAgICAgIH0K
LQotICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlQ2xhc3NFeHByZXNzaW9uKGlkLCBzdXBl
ckNsYXNzLCBwYXJzZUNsYXNzQm9keSgpKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBwYXJzZUNs
YXNzRGVjbGFyYXRpb24oKSB7Ci0gICAgICAgIHZhciB0b2tlbiwgaWQsIHByZXZpb3VzWWllbGRB
bGxvd2VkLCBzdXBlckNsYXNzID0gbnVsbDsKLQotICAgICAgICBleHBlY3RLZXl3b3JkKCdjbGFz
cycpOwotCi0gICAgICAgIHRva2VuID0gbG9va2FoZWFkOwotICAgICAgICBpZCA9IHBhcnNlVmFy
aWFibGVJZGVudGlmaWVyKCk7Ci0KLSAgICAgICAgaWYgKG1hdGNoS2V5d29yZCgnZXh0ZW5kcycp
KSB7Ci0gICAgICAgICAgICBleHBlY3RLZXl3b3JkKCdleHRlbmRzJyk7Ci0gICAgICAgICAgICBw
cmV2aW91c1lpZWxkQWxsb3dlZCA9IHN0YXRlLnlpZWxkQWxsb3dlZDsKLSAgICAgICAgICAgIHN0
YXRlLnlpZWxkQWxsb3dlZCA9IGZhbHNlOwotICAgICAgICAgICAgc3VwZXJDbGFzcyA9IHBhcnNl
QXNzaWdubWVudEV4cHJlc3Npb24oKTsKLSAgICAgICAgICAgIHN0YXRlLnlpZWxkQWxsb3dlZCA9
IHByZXZpb3VzWWllbGRBbGxvd2VkOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGRlbGVn
YXRlLmNyZWF0ZUNsYXNzRGVjbGFyYXRpb24oaWQsIHN1cGVyQ2xhc3MsIHBhcnNlQ2xhc3NCb2R5
KCkpOwotICAgIH0KLQotICAgIC8vIDE1IFByb2dyYW0KLQotICAgIGZ1bmN0aW9uIHBhcnNlU291
cmNlRWxlbWVudCgpIHsKLSAgICAgICAgaWYgKGxvb2thaGVhZC50eXBlID09PSBUb2tlbi5LZXl3
b3JkKSB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGxvb2thaGVhZC52YWx1ZSkgewotICAgICAgICAg
ICAgY2FzZSAnY29uc3QnOgotICAgICAgICAgICAgY2FzZSAnbGV0JzoKLSAgICAgICAgICAgICAg
ICByZXR1cm4gcGFyc2VDb25zdExldERlY2xhcmF0aW9uKGxvb2thaGVhZC52YWx1ZSk7Ci0gICAg
ICAgICAgICBjYXNlICdmdW5jdGlvbic6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlRnVu
Y3Rpb25EZWNsYXJhdGlvbigpOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAg
ICByZXR1cm4gcGFyc2VTdGF0ZW1lbnQoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0g
ICAgICAgIGlmIChsb29rYWhlYWQudHlwZSAhPT0gVG9rZW4uRU9GKSB7Ci0gICAgICAgICAgICBy
ZXR1cm4gcGFyc2VTdGF0ZW1lbnQoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGZ1bmN0aW9u
IHBhcnNlUHJvZ3JhbUVsZW1lbnQoKSB7Ci0gICAgICAgIHZhciBsaW5lTnVtYmVyLCB0b2tlbjsK
LQotICAgICAgICBpZiAobG9va2FoZWFkLnR5cGUgPT09IFRva2VuLktleXdvcmQpIHsKLSAgICAg
ICAgICAgIHN3aXRjaCAobG9va2FoZWFkLnZhbHVlKSB7Ci0gICAgICAgICAgICBjYXNlICdleHBv
cnQnOgotICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUV4cG9ydERlY2xhcmF0aW9uKCk7Ci0g
ICAgICAgICAgICBjYXNlICdpbXBvcnQnOgotICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUlt
cG9ydERlY2xhcmF0aW9uKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBp
ZiAobG9va2FoZWFkLnZhbHVlID09PSAnbW9kdWxlJyAmJiBsb29rYWhlYWQudHlwZSA9PT0gVG9r
ZW4uSWRlbnRpZmllcikgewotICAgICAgICAgICAgbGluZU51bWJlciA9IGxvb2thaGVhZC5saW5l
TnVtYmVyOwotICAgICAgICAgICAgdG9rZW4gPSBsb29rYWhlYWQyKCk7Ci0gICAgICAgICAgICBp
ZiAodG9rZW4udHlwZSA9PT0gVG9rZW4uSWRlbnRpZmllciAmJiB0b2tlbi5saW5lTnVtYmVyID09
PSBsaW5lTnVtYmVyKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlTW9kdWxlRGVjbGFy
YXRpb24oKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBwYXJz
ZVNvdXJjZUVsZW1lbnQoKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBwYXJzZVByb2dyYW1FbGVt
ZW50cygpIHsKLSAgICAgICAgdmFyIHNvdXJjZUVsZW1lbnQsIHNvdXJjZUVsZW1lbnRzID0gW10s
IHRva2VuLCBkaXJlY3RpdmUsIGZpcnN0UmVzdHJpY3RlZDsKLQotICAgICAgICB3aGlsZSAoaW5k
ZXggPCBsZW5ndGgpIHsKLSAgICAgICAgICAgIHRva2VuID0gbG9va2FoZWFkOwotICAgICAgICAg
ICAgaWYgKHRva2VuLnR5cGUgIT09IFRva2VuLlN0cmluZ0xpdGVyYWwpIHsKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgc291cmNlRWxlbWVudCA9
IHBhcnNlUHJvZ3JhbUVsZW1lbnQoKTsKLSAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRzLnB1c2go
c291cmNlRWxlbWVudCk7Ci0gICAgICAgICAgICBpZiAoc291cmNlRWxlbWVudC5leHByZXNzaW9u
LnR5cGUgIT09IFN5bnRheC5MaXRlcmFsKSB7Ci0gICAgICAgICAgICAgICAgLy8gdGhpcyBpcyBu
b3QgZGlyZWN0aXZlCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBkaXJlY3RpdmUgPSBzb3VyY2Uuc2xpY2UodG9rZW4ucmFuZ2VbMF0gKyAxLCB0b2tl
bi5yYW5nZVsxXSAtIDEpOwotICAgICAgICAgICAgaWYgKGRpcmVjdGl2ZSA9PT0gJ3VzZSBzdHJp
Y3QnKSB7Ci0gICAgICAgICAgICAgICAgc3RyaWN0ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBp
ZiAoZmlyc3RSZXN0cmljdGVkKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3JUb2xl
cmFudChmaXJzdFJlc3RyaWN0ZWQsIE1lc3NhZ2VzLlN0cmljdE9jdGFsTGl0ZXJhbCk7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAo
IWZpcnN0UmVzdHJpY3RlZCAmJiB0b2tlbi5vY3RhbCkgewotICAgICAgICAgICAgICAgICAgICBm
aXJzdFJlc3RyaWN0ZWQgPSB0b2tlbjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLQotICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHsKLSAgICAgICAg
ICAgIHNvdXJjZUVsZW1lbnQgPSBwYXJzZVByb2dyYW1FbGVtZW50KCk7Ci0gICAgICAgICAgICBp
ZiAodHlwZW9mIHNvdXJjZUVsZW1lbnQgPT09ICd1bmRlZmluZWQnKSB7Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzb3VyY2VFbGVtZW50cy5wdXNo
KHNvdXJjZUVsZW1lbnQpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBzb3VyY2VFbGVtZW50
czsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBwYXJzZU1vZHVsZUVsZW1lbnQoKSB7Ci0gICAgICAg
IHJldHVybiBwYXJzZVByb2dyYW1FbGVtZW50KCk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gcGFy
c2VNb2R1bGVFbGVtZW50cygpIHsKLSAgICAgICAgdmFyIGxpc3QgPSBbXSwKLSAgICAgICAgICAg
IHN0YXRlbWVudDsKLQotICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHsKLSAgICAgICAg
ICAgIGlmIChtYXRjaCgnfScpKSB7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBzdGF0ZW1lbnQgPSBwYXJzZU1vZHVsZUVsZW1lbnQoKTsKLSAgICAg
ICAgICAgIGlmICh0eXBlb2Ygc3RhdGVtZW50ID09PSAndW5kZWZpbmVkJykgewotICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbGlzdC5wdXNoKHN0YXRl
bWVudCk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gbGlzdDsKLSAgICB9Ci0KLSAgICBm
dW5jdGlvbiBwYXJzZU1vZHVsZUJsb2NrKCkgewotICAgICAgICB2YXIgYmxvY2s7Ci0KLSAgICAg
ICAgZXhwZWN0KCd7Jyk7Ci0KLSAgICAgICAgYmxvY2sgPSBwYXJzZU1vZHVsZUVsZW1lbnRzKCk7
Ci0KLSAgICAgICAgZXhwZWN0KCd9Jyk7Ci0KLSAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0
ZUJsb2NrU3RhdGVtZW50KGJsb2NrKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBwYXJzZVByb2dy
YW0oKSB7Ci0gICAgICAgIHZhciBib2R5OwotICAgICAgICBzdHJpY3QgPSBmYWxzZTsKLSAgICAg
ICAgcGVlaygpOwotICAgICAgICBib2R5ID0gcGFyc2VQcm9ncmFtRWxlbWVudHMoKTsKLSAgICAg
ICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0ZVByb2dyYW0oYm9keSk7Ci0gICAgfQotCi0gICAgLy8g
VGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgYXJlIG5lZWRlZCBvbmx5IHdoZW4gdGhlIG9wdGlvbiB0
byBwcmVzZXJ2ZQotICAgIC8vIHRoZSBjb21tZW50cyBpcyBhY3RpdmUuCi0KLSAgICBmdW5jdGlv
biBhZGRDb21tZW50KHR5cGUsIHZhbHVlLCBzdGFydCwgZW5kLCBsb2MpIHsKLSAgICAgICAgYXNz
ZXJ0KHR5cGVvZiBzdGFydCA9PT0gJ251bWJlcicsICdDb21tZW50IG11c3QgaGF2ZSB2YWxpZCBw
b3NpdGlvbicpOwotCi0gICAgICAgIC8vIEJlY2F1c2UgdGhlIHdheSB0aGUgYWN0dWFsIHRva2Vu
IGlzIHNjYW5uZWQsIG9mdGVuIHRoZSBjb21tZW50cwotICAgICAgICAvLyAoaWYgYW55KSBhcmUg
c2tpcHBlZCB0d2ljZSBkdXJpbmcgdGhlIGxleGljYWwgYW5hbHlzaXMuCi0gICAgICAgIC8vIFRo
dXMsIHdlIG5lZWQgdG8gc2tpcCBhZGRpbmcgYSBjb21tZW50IGlmIHRoZSBjb21tZW50IGFycmF5
IGFscmVhZHkKLSAgICAgICAgLy8gaGFuZGxlZCBpdC4KLSAgICAgICAgaWYgKGV4dHJhLmNvbW1l
bnRzLmxlbmd0aCA+IDApIHsKLSAgICAgICAgICAgIGlmIChleHRyYS5jb21tZW50c1tleHRyYS5j
b21tZW50cy5sZW5ndGggLSAxXS5yYW5nZVsxXSA+IHN0YXJ0KSB7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgZXh0cmEuY29tbWVu
dHMucHVzaCh7Ci0gICAgICAgICAgICB0eXBlOiB0eXBlLAotICAgICAgICAgICAgdmFsdWU6IHZh
bHVlLAotICAgICAgICAgICAgcmFuZ2U6IFtzdGFydCwgZW5kXSwKLSAgICAgICAgICAgIGxvYzog
bG9jCi0gICAgICAgIH0pOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHNjYW5Db21tZW50KCkgewot
ICAgICAgICB2YXIgY29tbWVudCwgY2gsIGxvYywgc3RhcnQsIGJsb2NrQ29tbWVudCwgbGluZUNv
bW1lbnQ7Ci0KLSAgICAgICAgY29tbWVudCA9ICcnOwotICAgICAgICBibG9ja0NvbW1lbnQgPSBm
YWxzZTsKLSAgICAgICAgbGluZUNvbW1lbnQgPSBmYWxzZTsKLQotICAgICAgICB3aGlsZSAoaW5k
ZXggPCBsZW5ndGgpIHsKLSAgICAgICAgICAgIGNoID0gc291cmNlW2luZGV4XTsKLQotICAgICAg
ICAgICAgaWYgKGxpbmVDb21tZW50KSB7Ci0gICAgICAgICAgICAgICAgY2ggPSBzb3VyY2VbaW5k
ZXgrK107Ci0gICAgICAgICAgICAgICAgaWYgKGlzTGluZVRlcm1pbmF0b3IoY2guY2hhckNvZGVB
dCgwKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgbG9jLmVuZCA9IHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGxpbmU6IGxpbmVOdW1iZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb2x1
bW46IGluZGV4IC0gbGluZVN0YXJ0IC0gMQotICAgICAgICAgICAgICAgICAgICB9OwotICAgICAg
ICAgICAgICAgICAgICBsaW5lQ29tbWVudCA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICBh
ZGRDb21tZW50KCdMaW5lJywgY29tbWVudCwgc3RhcnQsIGluZGV4IC0gMSwgbG9jKTsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKGNoID09PSAnXHInICYmIHNvdXJjZVtpbmRleF0gPT09ICdcbicp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICsraW5kZXg7Ci0gICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAgICAgKytsaW5lTnVtYmVyOwotICAgICAgICAgICAgICAgICAg
ICBsaW5lU3RhcnQgPSBpbmRleDsKLSAgICAgICAgICAgICAgICAgICAgY29tbWVudCA9ICcnOwot
ICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5kZXggPj0gbGVuZ3RoKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGxpbmVDb21tZW50ID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgIGNvbW1l
bnQgKz0gY2g7Ci0gICAgICAgICAgICAgICAgICAgIGxvYy5lbmQgPSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBsaW5lOiBsaW5lTnVtYmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgY29s
dW1uOiBsZW5ndGggLSBsaW5lU3RhcnQKLSAgICAgICAgICAgICAgICAgICAgfTsKLSAgICAgICAg
ICAgICAgICAgICAgYWRkQ29tbWVudCgnTGluZScsIGNvbW1lbnQsIHN0YXJ0LCBsZW5ndGgsIGxv
Yyk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgY29tbWVu
dCArPSBjaDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGJsb2Nr
Q29tbWVudCkgewotICAgICAgICAgICAgICAgIGlmIChpc0xpbmVUZXJtaW5hdG9yKGNoLmNoYXJD
b2RlQXQoMCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjaCA9PT0gJ1xyJyAmJiBzb3Vy
Y2VbaW5kZXggKyAxXSA9PT0gJ1xuJykgewotICAgICAgICAgICAgICAgICAgICAgICAgKytpbmRl
eDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnQgKz0gJ1xyXG4nOwotICAgICAgICAg
ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgY29tbWVudCArPSBj
aDsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICArK2xpbmVOdW1i
ZXI7Ci0gICAgICAgICAgICAgICAgICAgICsraW5kZXg7Ci0gICAgICAgICAgICAgICAgICAgIGxp
bmVTdGFydCA9IGluZGV4OwotICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPj0gbGVuZ3Ro
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5VbmV4
cGVjdGVkVG9rZW4sICdJTExFR0FMJyk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBjaCA9IHNvdXJjZVtpbmRleCsr
XTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID49IGxlbmd0aCkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuVW5leHBlY3RlZFRva2VuLCAn
SUxMRUdBTCcpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGNv
bW1lbnQgKz0gY2g7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjaCA9PT0gJyonKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBjaCA9IHNvdXJjZVtpbmRleF07Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoY2ggPT09ICcvJykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bW1lbnQgPSBjb21tZW50LnN1YnN0cigwLCBjb21tZW50Lmxlbmd0aCAtIDEpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJsb2NrQ29tbWVudCA9IGZhbHNlOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICsraW5kZXg7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jLmVu
ZCA9IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZTogbGluZU51bWJlciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uOiBpbmRleCAtIGxpbmVTdGFy
dAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYWRkQ29tbWVudCgnQmxvY2snLCBjb21tZW50LCBzdGFydCwgaW5kZXgsIGxvYyk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWVudCA9ICcnOwotICAgICAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgfSBlbHNlIGlmIChjaCA9PT0gJy8nKSB7Ci0gICAgICAgICAgICAgICAgY2ggPSBz
b3VyY2VbaW5kZXggKyAxXTsKLSAgICAgICAgICAgICAgICBpZiAoY2ggPT09ICcvJykgewotICAg
ICAgICAgICAgICAgICAgICBsb2MgPSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGFydDog
ewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmU6IGxpbmVOdW1iZXIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29sdW1uOiBpbmRleCAtIGxpbmVTdGFydAotICAgICAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgICAg
ICAgICBzdGFydCA9IGluZGV4OwotICAgICAgICAgICAgICAgICAgICBpbmRleCArPSAyOwotICAg
ICAgICAgICAgICAgICAgICBsaW5lQ29tbWVudCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAg
IGlmIChpbmRleCA+PSBsZW5ndGgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvYy5lbmQg
PSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZTogbGluZU51bWJlciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW46IGluZGV4IC0gbGluZVN0YXJ0Ci0gICAgICAg
ICAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgICAgICAgICAgICAgbGluZUNvbW1lbnQg
PSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGFkZENvbW1lbnQoJ0xpbmUnLCBjb21t
ZW50LCBzdGFydCwgaW5kZXgsIGxvYyk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICB9IGVsc2UgaWYgKGNoID09PSAnKicpIHsKLSAgICAgICAgICAgICAgICAgICAgc3Rh
cnQgPSBpbmRleDsKLSAgICAgICAgICAgICAgICAgICAgaW5kZXggKz0gMjsKLSAgICAgICAgICAg
ICAgICAgICAgYmxvY2tDb21tZW50ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgbG9jID0g
ewotICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQ6IHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBsaW5lOiBsaW5lTnVtYmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bHVtbjogaW5kZXggLSBsaW5lU3RhcnQgLSAyCi0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCA+PSBs
ZW5ndGgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2Vz
LlVuZXhwZWN0ZWRUb2tlbiwgJ0lMTEVHQUwnKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNXaGl0ZVNwYWNlKGNoLmNoYXJD
b2RlQXQoMCkpKSB7Ci0gICAgICAgICAgICAgICAgKytpbmRleDsKLSAgICAgICAgICAgIH0gZWxz
ZSBpZiAoaXNMaW5lVGVybWluYXRvcihjaC5jaGFyQ29kZUF0KDApKSkgewotICAgICAgICAgICAg
ICAgICsraW5kZXg7Ci0gICAgICAgICAgICAgICAgaWYgKGNoID09PSAgJ1xyJyAmJiBzb3VyY2Vb
aW5kZXhdID09PSAnXG4nKSB7Ci0gICAgICAgICAgICAgICAgICAgICsraW5kZXg7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICsrbGluZU51bWJlcjsKLSAgICAgICAgICAgICAg
ICBsaW5lU3RhcnQgPSBpbmRleDsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBmdW5jdGlv
biBmaWx0ZXJDb21tZW50TG9jYXRpb24oKSB7Ci0gICAgICAgIHZhciBpLCBlbnRyeSwgY29tbWVu
dCwgY29tbWVudHMgPSBbXTsKLQotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZXh0cmEuY29tbWVu
dHMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIGVudHJ5ID0gZXh0cmEuY29tbWVudHNbaV07
Ci0gICAgICAgICAgICBjb21tZW50ID0gewotICAgICAgICAgICAgICAgIHR5cGU6IGVudHJ5LnR5
cGUsCi0gICAgICAgICAgICAgICAgdmFsdWU6IGVudHJ5LnZhbHVlCi0gICAgICAgICAgICB9Owot
ICAgICAgICAgICAgaWYgKGV4dHJhLnJhbmdlKSB7Ci0gICAgICAgICAgICAgICAgY29tbWVudC5y
YW5nZSA9IGVudHJ5LnJhbmdlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGV4dHJh
LmxvYykgewotICAgICAgICAgICAgICAgIGNvbW1lbnQubG9jID0gZW50cnkubG9jOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgY29tbWVudHMucHVzaChjb21tZW50KTsKLSAgICAgICAgfQot
Ci0gICAgICAgIGV4dHJhLmNvbW1lbnRzID0gY29tbWVudHM7Ci0gICAgfQotCi0gICAgLy8gMTYg
WEpTCi0KLSAgICBYSFRNTEVudGl0aWVzID0gewotICAgICAgICBxdW90OiAnXHUwMDIyJywKLSAg
ICAgICAgYW1wOiAnJicsCi0gICAgICAgIGFwb3M6ICJcdTAwMjciLAotICAgICAgICBsdDogIjwi
LAotICAgICAgICBndDogIj4iLAotICAgICAgICBuYnNwOiAiXHUwMEEwIiwKLSAgICAgICAgaWV4
Y2w6ICJcdTAwQTEiLAotICAgICAgICBjZW50OiAiXHUwMEEyIiwKLSAgICAgICAgcG91bmQ6ICJc
dTAwQTMiLAotICAgICAgICBjdXJyZW46ICJcdTAwQTQiLAotICAgICAgICB5ZW46ICJcdTAwQTUi
LAotICAgICAgICBicnZiYXI6ICJcdTAwQTYiLAotICAgICAgICBzZWN0OiAiXHUwMEE3IiwKLSAg
ICAgICAgdW1sOiAiXHUwMEE4IiwKLSAgICAgICAgY29weTogIlx1MDBBOSIsCi0gICAgICAgIG9y
ZGY6ICJcdTAwQUEiLAotICAgICAgICBsYXF1bzogIlx1MDBBQiIsCi0gICAgICAgIG5vdDogIlx1
MDBBQyIsCi0gICAgICAgIHNoeTogIlx1MDBBRCIsCi0gICAgICAgIHJlZzogIlx1MDBBRSIsCi0g
ICAgICAgIG1hY3I6ICJcdTAwQUYiLAotICAgICAgICBkZWc6ICJcdTAwQjAiLAotICAgICAgICBw
bHVzbW46ICJcdTAwQjEiLAotICAgICAgICBzdXAyOiAiXHUwMEIyIiwKLSAgICAgICAgc3VwMzog
Ilx1MDBCMyIsCi0gICAgICAgIGFjdXRlOiAiXHUwMEI0IiwKLSAgICAgICAgbWljcm86ICJcdTAw
QjUiLAotICAgICAgICBwYXJhOiAiXHUwMEI2IiwKLSAgICAgICAgbWlkZG90OiAiXHUwMEI3IiwK
LSAgICAgICAgY2VkaWw6ICJcdTAwQjgiLAotICAgICAgICBzdXAxOiAiXHUwMEI5IiwKLSAgICAg
ICAgb3JkbTogIlx1MDBCQSIsCi0gICAgICAgIHJhcXVvOiAiXHUwMEJCIiwKLSAgICAgICAgZnJh
YzE0OiAiXHUwMEJDIiwKLSAgICAgICAgZnJhYzEyOiAiXHUwMEJEIiwKLSAgICAgICAgZnJhYzM0
OiAiXHUwMEJFIiwKLSAgICAgICAgaXF1ZXN0OiAiXHUwMEJGIiwKLSAgICAgICAgQWdyYXZlOiAi
XHUwMEMwIiwKLSAgICAgICAgQWFjdXRlOiAiXHUwMEMxIiwKLSAgICAgICAgQWNpcmM6ICJcdTAw
QzIiLAotICAgICAgICBBdGlsZGU6ICJcdTAwQzMiLAotICAgICAgICBBdW1sOiAiXHUwMEM0IiwK
LSAgICAgICAgQXJpbmc6ICJcdTAwQzUiLAotICAgICAgICBBRWxpZzogIlx1MDBDNiIsCi0gICAg
ICAgIENjZWRpbDogIlx1MDBDNyIsCi0gICAgICAgIEVncmF2ZTogIlx1MDBDOCIsCi0gICAgICAg
IEVhY3V0ZTogIlx1MDBDOSIsCi0gICAgICAgIEVjaXJjOiAiXHUwMENBIiwKLSAgICAgICAgRXVt
bDogIlx1MDBDQiIsCi0gICAgICAgIElncmF2ZTogIlx1MDBDQyIsCi0gICAgICAgIElhY3V0ZTog
Ilx1MDBDRCIsCi0gICAgICAgIEljaXJjOiAiXHUwMENFIiwKLSAgICAgICAgSXVtbDogIlx1MDBD
RiIsCi0gICAgICAgIEVUSDogIlx1MDBEMCIsCi0gICAgICAgIE50aWxkZTogIlx1MDBEMSIsCi0g
ICAgICAgIE9ncmF2ZTogIlx1MDBEMiIsCi0gICAgICAgIE9hY3V0ZTogIlx1MDBEMyIsCi0gICAg
ICAgIE9jaXJjOiAiXHUwMEQ0IiwKLSAgICAgICAgT3RpbGRlOiAiXHUwMEQ1IiwKLSAgICAgICAg
T3VtbDogIlx1MDBENiIsCi0gICAgICAgIHRpbWVzOiAiXHUwMEQ3IiwKLSAgICAgICAgT3NsYXNo
OiAiXHUwMEQ4IiwKLSAgICAgICAgVWdyYXZlOiAiXHUwMEQ5IiwKLSAgICAgICAgVWFjdXRlOiAi
XHUwMERBIiwKLSAgICAgICAgVWNpcmM6ICJcdTAwREIiLAotICAgICAgICBVdW1sOiAiXHUwMERD
IiwKLSAgICAgICAgWWFjdXRlOiAiXHUwMEREIiwKLSAgICAgICAgVEhPUk46ICJcdTAwREUiLAot
ICAgICAgICBzemxpZzogIlx1MDBERiIsCi0gICAgICAgIGFncmF2ZTogIlx1MDBFMCIsCi0gICAg
ICAgIGFhY3V0ZTogIlx1MDBFMSIsCi0gICAgICAgIGFjaXJjOiAiXHUwMEUyIiwKLSAgICAgICAg
YXRpbGRlOiAiXHUwMEUzIiwKLSAgICAgICAgYXVtbDogIlx1MDBFNCIsCi0gICAgICAgIGFyaW5n
OiAiXHUwMEU1IiwKLSAgICAgICAgYWVsaWc6ICJcdTAwRTYiLAotICAgICAgICBjY2VkaWw6ICJc
dTAwRTciLAotICAgICAgICBlZ3JhdmU6ICJcdTAwRTgiLAotICAgICAgICBlYWN1dGU6ICJcdTAw
RTkiLAotICAgICAgICBlY2lyYzogIlx1MDBFQSIsCi0gICAgICAgIGV1bWw6ICJcdTAwRUIiLAot
ICAgICAgICBpZ3JhdmU6ICJcdTAwRUMiLAotICAgICAgICBpYWN1dGU6ICJcdTAwRUQiLAotICAg
ICAgICBpY2lyYzogIlx1MDBFRSIsCi0gICAgICAgIGl1bWw6ICJcdTAwRUYiLAotICAgICAgICBl
dGg6ICJcdTAwRjAiLAotICAgICAgICBudGlsZGU6ICJcdTAwRjEiLAotICAgICAgICBvZ3JhdmU6
ICJcdTAwRjIiLAotICAgICAgICBvYWN1dGU6ICJcdTAwRjMiLAotICAgICAgICBvY2lyYzogIlx1
MDBGNCIsCi0gICAgICAgIG90aWxkZTogIlx1MDBGNSIsCi0gICAgICAgIG91bWw6ICJcdTAwRjYi
LAotICAgICAgICBkaXZpZGU6ICJcdTAwRjciLAotICAgICAgICBvc2xhc2g6ICJcdTAwRjgiLAot
ICAgICAgICB1Z3JhdmU6ICJcdTAwRjkiLAotICAgICAgICB1YWN1dGU6ICJcdTAwRkEiLAotICAg
ICAgICB1Y2lyYzogIlx1MDBGQiIsCi0gICAgICAgIHV1bWw6ICJcdTAwRkMiLAotICAgICAgICB5
YWN1dGU6ICJcdTAwRkQiLAotICAgICAgICB0aG9ybjogIlx1MDBGRSIsCi0gICAgICAgIHl1bWw6
ICJcdTAwRkYiLAotICAgICAgICBPRWxpZzogIlx1MDE1MiIsCi0gICAgICAgIG9lbGlnOiAiXHUw
MTUzIiwKLSAgICAgICAgU2Nhcm9uOiAiXHUwMTYwIiwKLSAgICAgICAgc2Nhcm9uOiAiXHUwMTYx
IiwKLSAgICAgICAgWXVtbDogIlx1MDE3OCIsCi0gICAgICAgIGZub2Y6ICJcdTAxOTIiLAotICAg
ICAgICBjaXJjOiAiXHUwMkM2IiwKLSAgICAgICAgdGlsZGU6ICJcdTAyREMiLAotICAgICAgICBB
bHBoYTogIlx1MDM5MSIsCi0gICAgICAgIEJldGE6ICJcdTAzOTIiLAotICAgICAgICBHYW1tYTog
Ilx1MDM5MyIsCi0gICAgICAgIERlbHRhOiAiXHUwMzk0IiwKLSAgICAgICAgRXBzaWxvbjogIlx1
MDM5NSIsCi0gICAgICAgIFpldGE6ICJcdTAzOTYiLAotICAgICAgICBFdGE6ICJcdTAzOTciLAot
ICAgICAgICBUaGV0YTogIlx1MDM5OCIsCi0gICAgICAgIElvdGE6ICJcdTAzOTkiLAotICAgICAg
ICBLYXBwYTogIlx1MDM5QSIsCi0gICAgICAgIExhbWJkYTogIlx1MDM5QiIsCi0gICAgICAgIE11
OiAiXHUwMzlDIiwKLSAgICAgICAgTnU6ICJcdTAzOUQiLAotICAgICAgICBYaTogIlx1MDM5RSIs
Ci0gICAgICAgIE9taWNyb246ICJcdTAzOUYiLAotICAgICAgICBQaTogIlx1MDNBMCIsCi0gICAg
ICAgIFJobzogIlx1MDNBMSIsCi0gICAgICAgIFNpZ21hOiAiXHUwM0EzIiwKLSAgICAgICAgVGF1
OiAiXHUwM0E0IiwKLSAgICAgICAgVXBzaWxvbjogIlx1MDNBNSIsCi0gICAgICAgIFBoaTogIlx1
MDNBNiIsCi0gICAgICAgIENoaTogIlx1MDNBNyIsCi0gICAgICAgIFBzaTogIlx1MDNBOCIsCi0g
ICAgICAgIE9tZWdhOiAiXHUwM0E5IiwKLSAgICAgICAgYWxwaGE6ICJcdTAzQjEiLAotICAgICAg
ICBiZXRhOiAiXHUwM0IyIiwKLSAgICAgICAgZ2FtbWE6ICJcdTAzQjMiLAotICAgICAgICBkZWx0
YTogIlx1MDNCNCIsCi0gICAgICAgIGVwc2lsb246ICJcdTAzQjUiLAotICAgICAgICB6ZXRhOiAi
XHUwM0I2IiwKLSAgICAgICAgZXRhOiAiXHUwM0I3IiwKLSAgICAgICAgdGhldGE6ICJcdTAzQjgi
LAotICAgICAgICBpb3RhOiAiXHUwM0I5IiwKLSAgICAgICAga2FwcGE6ICJcdTAzQkEiLAotICAg
ICAgICBsYW1iZGE6ICJcdTAzQkIiLAotICAgICAgICBtdTogIlx1MDNCQyIsCi0gICAgICAgIG51
OiAiXHUwM0JEIiwKLSAgICAgICAgeGk6ICJcdTAzQkUiLAotICAgICAgICBvbWljcm9uOiAiXHUw
M0JGIiwKLSAgICAgICAgcGk6ICJcdTAzQzAiLAotICAgICAgICByaG86ICJcdTAzQzEiLAotICAg
ICAgICBzaWdtYWY6ICJcdTAzQzIiLAotICAgICAgICBzaWdtYTogIlx1MDNDMyIsCi0gICAgICAg
IHRhdTogIlx1MDNDNCIsCi0gICAgICAgIHVwc2lsb246ICJcdTAzQzUiLAotICAgICAgICBwaGk6
ICJcdTAzQzYiLAotICAgICAgICBjaGk6ICJcdTAzQzciLAotICAgICAgICBwc2k6ICJcdTAzQzgi
LAotICAgICAgICBvbWVnYTogIlx1MDNDOSIsCi0gICAgICAgIHRoZXRhc3ltOiAiXHUwM0QxIiwK
LSAgICAgICAgdXBzaWg6ICJcdTAzRDIiLAotICAgICAgICBwaXY6ICJcdTAzRDYiLAotICAgICAg
ICBlbnNwOiAiXHUyMDAyIiwKLSAgICAgICAgZW1zcDogIlx1MjAwMyIsCi0gICAgICAgIHRoaW5z
cDogIlx1MjAwOSIsCi0gICAgICAgIHp3bmo6ICJcdTIwMEMiLAotICAgICAgICB6d2o6ICJcdTIw
MEQiLAotICAgICAgICBscm06ICJcdTIwMEUiLAotICAgICAgICBybG06ICJcdTIwMEYiLAotICAg
ICAgICBuZGFzaDogIlx1MjAxMyIsCi0gICAgICAgIG1kYXNoOiAiXHUyMDE0IiwKLSAgICAgICAg
bHNxdW86ICJcdTIwMTgiLAotICAgICAgICByc3F1bzogIlx1MjAxOSIsCi0gICAgICAgIHNicXVv
OiAiXHUyMDFBIiwKLSAgICAgICAgbGRxdW86ICJcdTIwMUMiLAotICAgICAgICByZHF1bzogIlx1
MjAxRCIsCi0gICAgICAgIGJkcXVvOiAiXHUyMDFFIiwKLSAgICAgICAgZGFnZ2VyOiAiXHUyMDIw
IiwKLSAgICAgICAgRGFnZ2VyOiAiXHUyMDIxIiwKLSAgICAgICAgYnVsbDogIlx1MjAyMiIsCi0g
ICAgICAgIGhlbGxpcDogIlx1MjAyNiIsCi0gICAgICAgIHBlcm1pbDogIlx1MjAzMCIsCi0gICAg
ICAgIHByaW1lOiAiXHUyMDMyIiwKLSAgICAgICAgUHJpbWU6ICJcdTIwMzMiLAotICAgICAgICBs
c2FxdW86ICJcdTIwMzkiLAotICAgICAgICByc2FxdW86ICJcdTIwM0EiLAotICAgICAgICBvbGlu
ZTogIlx1MjAzRSIsCi0gICAgICAgIGZyYXNsOiAiXHUyMDQ0IiwKLSAgICAgICAgZXVybzogIlx1
MjBBQyIsCi0gICAgICAgIGltYWdlOiAiXHUyMTExIiwKLSAgICAgICAgd2VpZXJwOiAiXHUyMTE4
IiwKLSAgICAgICAgcmVhbDogIlx1MjExQyIsCi0gICAgICAgIHRyYWRlOiAiXHUyMTIyIiwKLSAg
ICAgICAgYWxlZnN5bTogIlx1MjEzNSIsCi0gICAgICAgIGxhcnI6ICJcdTIxOTAiLAotICAgICAg
ICB1YXJyOiAiXHUyMTkxIiwKLSAgICAgICAgcmFycjogIlx1MjE5MiIsCi0gICAgICAgIGRhcnI6
ICJcdTIxOTMiLAotICAgICAgICBoYXJyOiAiXHUyMTk0IiwKLSAgICAgICAgY3JhcnI6ICJcdTIx
QjUiLAotICAgICAgICBsQXJyOiAiXHUyMUQwIiwKLSAgICAgICAgdUFycjogIlx1MjFEMSIsCi0g
ICAgICAgIHJBcnI6ICJcdTIxRDIiLAotICAgICAgICBkQXJyOiAiXHUyMUQzIiwKLSAgICAgICAg
aEFycjogIlx1MjFENCIsCi0gICAgICAgIGZvcmFsbDogIlx1MjIwMCIsCi0gICAgICAgIHBhcnQ6
ICJcdTIyMDIiLAotICAgICAgICBleGlzdDogIlx1MjIwMyIsCi0gICAgICAgIGVtcHR5OiAiXHUy
MjA1IiwKLSAgICAgICAgbmFibGE6ICJcdTIyMDciLAotICAgICAgICBpc2luOiAiXHUyMjA4IiwK
LSAgICAgICAgbm90aW46ICJcdTIyMDkiLAotICAgICAgICBuaTogIlx1MjIwQiIsCi0gICAgICAg
IHByb2Q6ICJcdTIyMEYiLAotICAgICAgICBzdW06ICJcdTIyMTEiLAotICAgICAgICBtaW51czog
Ilx1MjIxMiIsCi0gICAgICAgIGxvd2FzdDogIlx1MjIxNyIsCi0gICAgICAgIHJhZGljOiAiXHUy
MjFBIiwKLSAgICAgICAgcHJvcDogIlx1MjIxRCIsCi0gICAgICAgIGluZmluOiAiXHUyMjFFIiwK
LSAgICAgICAgYW5nOiAiXHUyMjIwIiwKLSAgICAgICAgYW5kOiAiXHUyMjI3IiwKLSAgICAgICAg
b3I6ICJcdTIyMjgiLAotICAgICAgICBjYXA6ICJcdTIyMjkiLAotICAgICAgICBjdXA6ICJcdTIy
MkEiLAotICAgICAgICAiaW50IjogIlx1MjIyQiIsCi0gICAgICAgIHRoZXJlNDogIlx1MjIzNCIs
Ci0gICAgICAgIHNpbTogIlx1MjIzQyIsCi0gICAgICAgIGNvbmc6ICJcdTIyNDUiLAotICAgICAg
ICBhc3ltcDogIlx1MjI0OCIsCi0gICAgICAgIG5lOiAiXHUyMjYwIiwKLSAgICAgICAgZXF1aXY6
ICJcdTIyNjEiLAotICAgICAgICBsZTogIlx1MjI2NCIsCi0gICAgICAgIGdlOiAiXHUyMjY1IiwK
LSAgICAgICAgc3ViOiAiXHUyMjgyIiwKLSAgICAgICAgc3VwOiAiXHUyMjgzIiwKLSAgICAgICAg
bnN1YjogIlx1MjI4NCIsCi0gICAgICAgIHN1YmU6ICJcdTIyODYiLAotICAgICAgICBzdXBlOiAi
XHUyMjg3IiwKLSAgICAgICAgb3BsdXM6ICJcdTIyOTUiLAotICAgICAgICBvdGltZXM6ICJcdTIy
OTciLAotICAgICAgICBwZXJwOiAiXHUyMkE1IiwKLSAgICAgICAgc2RvdDogIlx1MjJDNSIsCi0g
ICAgICAgIGxjZWlsOiAiXHUyMzA4IiwKLSAgICAgICAgcmNlaWw6ICJcdTIzMDkiLAotICAgICAg
ICBsZmxvb3I6ICJcdTIzMEEiLAotICAgICAgICByZmxvb3I6ICJcdTIzMEIiLAotICAgICAgICBs
YW5nOiAiXHUyMzI5IiwKLSAgICAgICAgcmFuZzogIlx1MjMyQSIsCi0gICAgICAgIGxvejogIlx1
MjVDQSIsCi0gICAgICAgIHNwYWRlczogIlx1MjY2MCIsCi0gICAgICAgIGNsdWJzOiAiXHUyNjYz
IiwKLSAgICAgICAgaGVhcnRzOiAiXHUyNjY1IiwKLSAgICAgICAgZGlhbXM6ICJcdTI2NjYiCi0g
ICAgfTsKLQotICAgIGZ1bmN0aW9uIGlzWEpTSWRlbnRpZmllclN0YXJ0KGNoKSB7Ci0gICAgICAg
IC8vIGV4Y2x1ZGUgYmFja3NsYXNoIChcKQotICAgICAgICByZXR1cm4gKGNoICE9PSA5MikgJiYg
aXNJZGVudGlmaWVyU3RhcnQoY2gpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGlzWEpTSWRlbnRp
ZmllclBhcnQoY2gpIHsKLSAgICAgICAgLy8gZXhjbHVkZSBiYWNrc2xhc2ggKFwpIGFuZCBhZGQg
aHlwaGVuICgtKQotICAgICAgICByZXR1cm4gKGNoICE9PSA5MikgJiYgKGNoID09PSA0NSB8fCBp
c0lkZW50aWZpZXJQYXJ0KGNoKSk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gc2NhblhKU0lkZW50
aWZpZXIoKSB7Ci0gICAgICAgIHZhciBjaCwgc3RhcnQsIGlkID0gJycsIG5hbWVzcGFjZTsKLQot
ICAgICAgICBzdGFydCA9IGluZGV4OwotICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHsK
LSAgICAgICAgICAgIGNoID0gc291cmNlLmNoYXJDb2RlQXQoaW5kZXgpOwotICAgICAgICAgICAg
aWYgKCFpc1hKU0lkZW50aWZpZXJQYXJ0KGNoKSkgewotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgaWQgKz0gc291cmNlW2luZGV4KytdOwotICAgICAg
ICB9Ci0KLSAgICAgICAgaWYgKGNoID09PSA1OCkgeyAvLyA6Ci0gICAgICAgICAgICArK2luZGV4
OwotICAgICAgICAgICAgbmFtZXNwYWNlID0gaWQ7Ci0gICAgICAgICAgICBpZCA9ICcnOwotCi0g
ICAgICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHsKLSAgICAgICAgICAgICAgICBjaCA9
IHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4KTsKLSAgICAgICAgICAgICAgICBpZiAoIWlzWEpTSWRl
bnRpZmllclBhcnQoY2gpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZCArPSBzb3VyY2VbaW5kZXgrK107Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIWlkKSB7Ci0gICAgICAgICAgICB0aHJv
d0Vycm9yKHt9LCBNZXNzYWdlcy5JbnZhbGlkWEpTVGFnTmFtZSk7Ci0gICAgICAgIH0KLQotICAg
ICAgICByZXR1cm4gewotICAgICAgICAgICAgdHlwZTogVG9rZW4uWEpTSWRlbnRpZmllciwKLSAg
ICAgICAgICAgIHZhbHVlOiBpZCwKLSAgICAgICAgICAgIG5hbWVzcGFjZTogbmFtZXNwYWNlLAot
ICAgICAgICAgICAgbGluZU51bWJlcjogbGluZU51bWJlciwKLSAgICAgICAgICAgIGxpbmVTdGFy
dDogbGluZVN0YXJ0LAotICAgICAgICAgICAgcmFuZ2U6IFtzdGFydCwgaW5kZXhdCi0gICAgICAg
IH07Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gc2NhblhKU0VudGl0eSgpIHsKLSAgICAgICAgdmFy
IGNoLCBzdHIgPSAnJywgY291bnQgPSAwLCBlbnRpdHk7Ci0gICAgICAgIGNoID0gc291cmNlW2lu
ZGV4XTsKLSAgICAgICAgYXNzZXJ0KGNoID09PSAnJicsICdFbnRpdHkgbXVzdCBzdGFydCB3aXRo
IGFuIGFtcGVyc2FuZCcpOwotICAgICAgICBpbmRleCsrOwotICAgICAgICB3aGlsZSAoaW5kZXgg
PCBsZW5ndGggJiYgY291bnQrKyA8IDEwKSB7Ci0gICAgICAgICAgICBjaCA9IHNvdXJjZVtpbmRl
eCsrXTsKLSAgICAgICAgICAgIGlmIChjaCA9PT0gJzsnKSB7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzdHIgKz0gY2g7Ci0gICAgICAgIH0KLQot
ICAgICAgICBpZiAoc3RyWzBdID09PSAnIycgJiYgc3RyWzFdID09PSAneCcpIHsKLSAgICAgICAg
ICAgIGVudGl0eSA9IFN0cmluZy5mcm9tQ2hhckNvZGUocGFyc2VJbnQoc3RyLnN1YnN0cigyKSwg
MTYpKTsKLSAgICAgICAgfSBlbHNlIGlmIChzdHJbMF0gPT09ICcjJykgewotICAgICAgICAgICAg
ZW50aXR5ID0gU3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludChzdHIuc3Vic3RyKDEpLCAxMCkp
OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgZW50aXR5ID0gWEhUTUxFbnRpdGllc1tz
dHJdOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBlbnRpdHk7Ci0gICAgfQotCi0gICAgZnVu
Y3Rpb24gc2NhblhKU1RleHQoc3RvcENoYXJzKSB7Ci0gICAgICAgIHZhciBjaCwgc3RyID0gJycs
IHN0YXJ0OwotICAgICAgICBzdGFydCA9IGluZGV4OwotICAgICAgICB3aGlsZSAoaW5kZXggPCBs
ZW5ndGgpIHsKLSAgICAgICAgICAgIGNoID0gc291cmNlW2luZGV4XTsKLSAgICAgICAgICAgIGlm
IChzdG9wQ2hhcnMuaW5kZXhPZihjaCkgIT09IC0xKSB7Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoY2ggPT09ICcmJykgewotICAgICAgICAg
ICAgICAgIHN0ciArPSBzY2FuWEpTRW50aXR5KCk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgIGNoID0gc291cmNlW2luZGV4KytdOwotICAgICAgICAgICAgICAgIGlmIChp
c0xpbmVUZXJtaW5hdG9yKGNoLmNoYXJDb2RlQXQoMCkpKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICsrbGluZU51bWJlcjsKLSAgICAgICAgICAgICAgICAgICAgbGluZVN0YXJ0ID0gaW5kZXg7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHN0ciArPSBjaDsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgdHlwZTogVG9rZW4u
WEpTVGV4dCwKLSAgICAgICAgICAgIHZhbHVlOiBzdHIsCi0gICAgICAgICAgICBsaW5lTnVtYmVy
OiBsaW5lTnVtYmVyLAotICAgICAgICAgICAgbGluZVN0YXJ0OiBsaW5lU3RhcnQsCi0gICAgICAg
ICAgICByYW5nZTogW3N0YXJ0LCBpbmRleF0KLSAgICAgICAgfTsKLSAgICB9Ci0KLSAgICBmdW5j
dGlvbiBzY2FuWEpTU3RyaW5nTGl0ZXJhbCgpIHsKLSAgICAgICAgdmFyIGlubmVyVG9rZW4sIHF1
b3RlLCBzdGFydDsKLQotICAgICAgICBxdW90ZSA9IHNvdXJjZVtpbmRleF07Ci0gICAgICAgIGFz
c2VydCgocXVvdGUgPT09ICdcJycgfHwgcXVvdGUgPT09ICciJyksCi0gICAgICAgICAgICAnU3Ry
aW5nIGxpdGVyYWwgbXVzdCBzdGFydHMgd2l0aCBhIHF1b3RlJyk7Ci0KLSAgICAgICAgc3RhcnQg
PSBpbmRleDsKLSAgICAgICAgKytpbmRleDsKLQotICAgICAgICBpbm5lclRva2VuID0gc2NhblhK
U1RleHQoW3F1b3RlXSk7Ci0KLSAgICAgICAgaWYgKHF1b3RlICE9PSBzb3VyY2VbaW5kZXhdKSB7
Ci0gICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5VbmV4cGVjdGVkVG9rZW4sICdJ
TExFR0FMJyk7Ci0gICAgICAgIH0KLQotICAgICAgICArK2luZGV4OwotCi0gICAgICAgIGlubmVy
VG9rZW4ucmFuZ2UgPSBbc3RhcnQsIGluZGV4XTsKLQotICAgICAgICByZXR1cm4gaW5uZXJUb2tl
bjsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBCZXR3ZWVuIFhKUyBvcGVuaW5nIGFuZCBjbG9z
aW5nIHRhZ3MgKGUuZy4gPGZvbz5IRVJFPC9mb28+KSwgYW55dGhpbmcgdGhhdAotICAgICAqIGlz
IG5vdCBhbm90aGVyIFhKUyB0YWcgYW5kIGlzIG5vdCBhbiBleHByZXNzaW9uIHdyYXBwZWQgYnkg
e30gaXMgdGV4dC4KLSAgICAgKi8KLSAgICBmdW5jdGlvbiBhZHZhbmNlWEpTQ2hpbGQoKSB7Ci0g
ICAgICAgIHZhciBjaCA9IHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4KTsKLQotICAgICAgICAvLyB7
ICgxMjMpIGFuZCA8ICg2MCkKLSAgICAgICAgaWYgKGNoICE9PSAxMjMgJiYgY2ggIT09IDYwKSB7
Ci0gICAgICAgICAgICByZXR1cm4gc2NhblhKU1RleHQoWyc8JywgJ3snXSk7Ci0gICAgICAgIH0K
LQotICAgICAgICByZXR1cm4gc2NhblB1bmN0dWF0b3IoKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlv
biBwYXJzZVhKU0lkZW50aWZpZXIoKSB7Ci0gICAgICAgIHZhciB0b2tlbjsKLQotICAgICAgICBp
ZiAobG9va2FoZWFkLnR5cGUgIT09IFRva2VuLlhKU0lkZW50aWZpZXIpIHsKLSAgICAgICAgICAg
IHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLkludmFsaWRYSlNUYWdOYW1lKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIHRva2VuID0gbGV4KCk7Ci0gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5jcmVhdGVY
SlNJZGVudGlmaWVyKHRva2VuLnZhbHVlLCB0b2tlbi5uYW1lc3BhY2UpOwotICAgIH0KLQotICAg
IGZ1bmN0aW9uIHBhcnNlWEpTQXR0cmlidXRlVmFsdWUoKSB7Ci0gICAgICAgIHZhciB2YWx1ZTsK
LSAgICAgICAgaWYgKG1hdGNoKCd7JykpIHsKLSAgICAgICAgICAgIHZhbHVlID0gcGFyc2VYSlNF
eHByZXNzaW9uQ29udGFpbmVyKCk7Ci0gICAgICAgICAgICBpZiAodmFsdWUuZXhwcmVzc2lvbi50
eXBlID09PSBTeW50YXguWEpTRW1wdHlFeHByZXNzaW9uKSB7Ci0gICAgICAgICAgICAgICAgdGhy
b3dFcnJvcigKLSAgICAgICAgICAgICAgICAgICAgdmFsdWUsCi0gICAgICAgICAgICAgICAgICAg
ICdYSlMgYXR0cmlidXRlcyBtdXN0IG9ubHkgYmUgYXNzaWduZWQgYSBub24tZW1wdHkgJyArCi0g
ICAgICAgICAgICAgICAgICAgICAgICAnZXhwcmVzc2lvbicKLSAgICAgICAgICAgICAgICApOwot
ICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKGxvb2thaGVhZC50eXBlID09PSBUb2tl
bi5YSlNUZXh0KSB7Ci0gICAgICAgICAgICB2YWx1ZSA9IGRlbGVnYXRlLmNyZWF0ZUxpdGVyYWwo
bGV4KCkpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVz
c2FnZXMuSW52YWxpZFhKU0F0dHJpYnV0ZVZhbHVlKTsKLSAgICAgICAgfQotICAgICAgICByZXR1
cm4gdmFsdWU7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gcGFyc2VYSlNFbXB0eUV4cHJlc3Npb24o
KSB7Ci0gICAgICAgIHdoaWxlIChzb3VyY2UuY2hhckF0KGluZGV4KSAhPT0gJ30nKSB7Ci0gICAg
ICAgICAgICBpbmRleCsrOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5jcmVh
dGVYSlNFbXB0eUV4cHJlc3Npb24oKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBwYXJzZVhKU0V4
cHJlc3Npb25Db250YWluZXIoKSB7Ci0gICAgICAgIHZhciBleHByZXNzaW9uLCBvcmlnSW5YSlND
aGlsZCwgb3JpZ0luWEpTVGFnOwotCi0gICAgICAgIG9yaWdJblhKU0NoaWxkID0gc3RhdGUuaW5Y
SlNDaGlsZDsKLSAgICAgICAgb3JpZ0luWEpTVGFnID0gc3RhdGUuaW5YSlNUYWc7Ci0gICAgICAg
IHN0YXRlLmluWEpTQ2hpbGQgPSBmYWxzZTsKLSAgICAgICAgc3RhdGUuaW5YSlNUYWcgPSBmYWxz
ZTsKLQotICAgICAgICBleHBlY3QoJ3snKTsKLQotICAgICAgICBpZiAobWF0Y2goJ30nKSkgewot
ICAgICAgICAgICAgZXhwcmVzc2lvbiA9IHBhcnNlWEpTRW1wdHlFeHByZXNzaW9uKCk7Ci0gICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBleHByZXNzaW9uID0gcGFyc2VFeHByZXNzaW9uKCk7
Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0ZS5pblhKU0NoaWxkID0gb3JpZ0luWEpTQ2hpbGQ7
Ci0gICAgICAgIHN0YXRlLmluWEpTVGFnID0gb3JpZ0luWEpTVGFnOwotCi0gICAgICAgIGV4cGVj
dCgnfScpOwotCi0gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5jcmVhdGVYSlNFeHByZXNzaW9uQ29u
dGFpbmVyKGV4cHJlc3Npb24pOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHBhcnNlWEpTQXR0cmli
dXRlKCkgewotICAgICAgICB2YXIgdG9rZW4sIG5hbWUsIHZhbHVlOwotCi0gICAgICAgIG5hbWUg
PSBwYXJzZVhKU0lkZW50aWZpZXIoKTsKLQotICAgICAgICAvLyBIVE1MIGVtcHR5IGF0dHJpYnV0
ZQotICAgICAgICBpZiAobWF0Y2goJz0nKSkgewotICAgICAgICAgICAgbGV4KCk7Ci0gICAgICAg
ICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlWEpTQXR0cmlidXRlKG5hbWUsIHBhcnNlWEpTQXR0
cmlidXRlVmFsdWUoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3Jl
YXRlWEpTQXR0cmlidXRlKG5hbWUpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHBhcnNlWEpTQ2hp
bGQoKSB7Ci0gICAgICAgIHZhciB0b2tlbjsKLSAgICAgICAgaWYgKG1hdGNoKCd7JykpIHsKLSAg
ICAgICAgICAgIHRva2VuID0gcGFyc2VYSlNFeHByZXNzaW9uQ29udGFpbmVyKCk7Ci0gICAgICAg
IH0gZWxzZSBpZiAobG9va2FoZWFkLnR5cGUgPT09IFRva2VuLlhKU1RleHQpIHsKLSAgICAgICAg
ICAgIHRva2VuID0gZGVsZWdhdGUuY3JlYXRlTGl0ZXJhbChsZXgoKSk7Ci0gICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICBzdGF0ZS5pblhKU0NoaWxkID0gZmFsc2U7Ci0gICAgICAgICAgICB0
b2tlbiA9IHBhcnNlWEpTRWxlbWVudCgpOwotICAgICAgICAgICAgc3RhdGUuaW5YSlNDaGlsZCA9
IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRva2VuOwotICAgIH0KLQotICAgIGZ1
bmN0aW9uIHBhcnNlWEpTQ2xvc2luZ0VsZW1lbnQoKSB7Ci0gICAgICAgIHZhciBuYW1lLCBvcmln
SW5YSlNUYWc7Ci0gICAgICAgIG9yaWdJblhKU1RhZyA9IHN0YXRlLmluWEpTVGFnOwotICAgICAg
ICBzdGF0ZS5pblhKU1RhZyA9IHRydWU7Ci0gICAgICAgIHN0YXRlLmluWEpTQ2hpbGQgPSBmYWxz
ZTsKLSAgICAgICAgZXhwZWN0KCc8Jyk7Ci0gICAgICAgIGV4cGVjdCgnLycpOwotICAgICAgICBu
YW1lID0gcGFyc2VYSlNJZGVudGlmaWVyKCk7Ci0gICAgICAgIHN0YXRlLmluWEpTVGFnID0gb3Jp
Z0luWEpTVGFnOwotICAgICAgICBleHBlY3QoJz4nKTsKLSAgICAgICAgcmV0dXJuIGRlbGVnYXRl
LmNyZWF0ZVhKU0Nsb3NpbmdFbGVtZW50KG5hbWUpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHBh
cnNlWEpTT3BlbmluZ0VsZW1lbnQoKSB7Ci0gICAgICAgIHZhciBuYW1lLCBhdHRyaWJ1dGUsIGF0
dHJpYnV0ZXMgPSBbXSwgc2VsZkNsb3NpbmcgPSBmYWxzZSwgb3JpZ0luWEpTVGFnOwotCi0gICAg
ICAgIG9yaWdJblhKU1RhZyA9IHN0YXRlLmluWEpTVGFnOwotICAgICAgICBzdGF0ZS5pblhKU1Rh
ZyA9IHRydWU7Ci0KLSAgICAgICAgZXhwZWN0KCc8Jyk7Ci0KLSAgICAgICAgbmFtZSA9IHBhcnNl
WEpTSWRlbnRpZmllcigpOwotCi0gICAgICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCAmJgotICAg
ICAgICAgICAgICAgIGxvb2thaGVhZC52YWx1ZSAhPT0gJy8nICYmCi0gICAgICAgICAgICAgICAg
bG9va2FoZWFkLnZhbHVlICE9PSAnPicpIHsKLSAgICAgICAgICAgIGF0dHJpYnV0ZXMucHVzaChw
YXJzZVhKU0F0dHJpYnV0ZSgpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRlLmluWEpTVGFn
ID0gb3JpZ0luWEpTVGFnOwotCi0gICAgICAgIGlmIChsb29rYWhlYWQudmFsdWUgPT09ICcvJykg
ewotICAgICAgICAgICAgZXhwZWN0KCcvJyk7Ci0gICAgICAgICAgICBleHBlY3QoJz4nKTsKLSAg
ICAgICAgICAgIHNlbGZDbG9zaW5nID0gdHJ1ZTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIHN0YXRlLmluWEpTQ2hpbGQgPSB0cnVlOwotICAgICAgICAgICAgZXhwZWN0KCc+Jyk7Ci0g
ICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0ZVhKU09wZW5pbmdFbGVtZW50
KG5hbWUsIGF0dHJpYnV0ZXMsIHNlbGZDbG9zaW5nKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBw
YXJzZVhKU0VsZW1lbnQoKSB7Ci0gICAgICAgIHZhciBvcGVuaW5nRWxlbWVudCwgY2xvc2luZ0Vs
ZW1lbnQsIGNoaWxkcmVuID0gW10sIG9yaWdJblhKU0NoaWxkOwotCi0gICAgICAgIG9wZW5pbmdF
bGVtZW50ID0gcGFyc2VYSlNPcGVuaW5nRWxlbWVudCgpOwotCi0gICAgICAgIGlmICghb3Blbmlu
Z0VsZW1lbnQuc2VsZkNsb3NpbmcpIHsKLSAgICAgICAgICAgIG9yaWdJblhKU0NoaWxkID0gc3Rh
dGUuaW5YSlNDaGlsZDsKLSAgICAgICAgICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkgewotICAg
ICAgICAgICAgICAgIHN0YXRlLmluWEpTQ2hpbGQgPSBmYWxzZTsgLy8gPC8gc2hvdWxkIG5vdCBi
ZSBjb25zaWRlcmVkIGluIHRoZSBjaGlsZAotICAgICAgICAgICAgICAgIGlmIChsb29rYWhlYWQu
dmFsdWUgPT09ICc8JyAmJiBsb29rYWhlYWQyKCkudmFsdWUgPT09ICcvJykgewotICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgc3Rh
dGUuaW5YSlNDaGlsZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgcGVlaygpOyAvLyByZXNldCBs
b29rYWhlYWQgdG9rZW4KLSAgICAgICAgICAgICAgICBjaGlsZHJlbi5wdXNoKHBhcnNlWEpTQ2hp
bGQoKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzdGF0ZS5pblhKU0NoaWxkID0gb3Jp
Z0luWEpTQ2hpbGQ7Ci0gICAgICAgICAgICBjbG9zaW5nRWxlbWVudCA9IHBhcnNlWEpTQ2xvc2lu
Z0VsZW1lbnQoKTsKLSAgICAgICAgICAgIGlmIChjbG9zaW5nRWxlbWVudC5uYW1lLm5hbWVzcGFj
ZSAhPT0gb3BlbmluZ0VsZW1lbnQubmFtZS5uYW1lc3BhY2UgfHwgY2xvc2luZ0VsZW1lbnQubmFt
ZS5uYW1lICE9PSBvcGVuaW5nRWxlbWVudC5uYW1lLm5hbWUpIHsKLSAgICAgICAgICAgICAgICB0
aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5FeHBlY3RlZFhKU0Nsb3NpbmdUYWcsIG9wZW5pbmdFbGVt
ZW50Lm5hbWUubmFtZXNwYWNlID8gb3BlbmluZ0VsZW1lbnQubmFtZS5uYW1lc3BhY2UgKyAnOicg
KyBvcGVuaW5nRWxlbWVudC5uYW1lLm5hbWUgOiBvcGVuaW5nRWxlbWVudC5uYW1lLm5hbWUpOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0
ZVhKU0VsZW1lbnQob3BlbmluZ0VsZW1lbnQsIGNsb3NpbmdFbGVtZW50LCBjaGlsZHJlbik7Ci0g
ICAgfQotCi0gICAgZnVuY3Rpb24gY29sbGVjdFRva2VuKCkgewotICAgICAgICB2YXIgc3RhcnQs
IGxvYywgdG9rZW4sIHJhbmdlLCB2YWx1ZTsKLQotICAgICAgICBza2lwQ29tbWVudCgpOwotICAg
ICAgICBzdGFydCA9IGluZGV4OwotICAgICAgICBsb2MgPSB7Ci0gICAgICAgICAgICBzdGFydDog
ewotICAgICAgICAgICAgICAgIGxpbmU6IGxpbmVOdW1iZXIsCi0gICAgICAgICAgICAgICAgY29s
dW1uOiBpbmRleCAtIGxpbmVTdGFydAotICAgICAgICAgICAgfQotICAgICAgICB9OwotCi0gICAg
ICAgIHRva2VuID0gZXh0cmEuYWR2YW5jZSgpOwotICAgICAgICBsb2MuZW5kID0gewotICAgICAg
ICAgICAgbGluZTogbGluZU51bWJlciwKLSAgICAgICAgICAgIGNvbHVtbjogaW5kZXggLSBsaW5l
U3RhcnQKLSAgICAgICAgfTsKLQotICAgICAgICBpZiAodG9rZW4udHlwZSAhPT0gVG9rZW4uRU9G
KSB7Ci0gICAgICAgICAgICByYW5nZSA9IFt0b2tlbi5yYW5nZVswXSwgdG9rZW4ucmFuZ2VbMV1d
OwotICAgICAgICAgICAgdmFsdWUgPSBzb3VyY2Uuc2xpY2UodG9rZW4ucmFuZ2VbMF0sIHRva2Vu
LnJhbmdlWzFdKTsKLSAgICAgICAgICAgIGV4dHJhLnRva2Vucy5wdXNoKHsKLSAgICAgICAgICAg
ICAgICB0eXBlOiBUb2tlbk5hbWVbdG9rZW4udHlwZV0sCi0gICAgICAgICAgICAgICAgdmFsdWU6
IHZhbHVlLAotICAgICAgICAgICAgICAgIHJhbmdlOiByYW5nZSwKLSAgICAgICAgICAgICAgICBs
b2M6IGxvYwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gdG9r
ZW47Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gY29sbGVjdFJlZ2V4KCkgewotICAgICAgICB2YXIg
cG9zLCBsb2MsIHJlZ2V4LCB0b2tlbjsKLQotICAgICAgICBza2lwQ29tbWVudCgpOwotCi0gICAg
ICAgIHBvcyA9IGluZGV4OwotICAgICAgICBsb2MgPSB7Ci0gICAgICAgICAgICBzdGFydDogewot
ICAgICAgICAgICAgICAgIGxpbmU6IGxpbmVOdW1iZXIsCi0gICAgICAgICAgICAgICAgY29sdW1u
OiBpbmRleCAtIGxpbmVTdGFydAotICAgICAgICAgICAgfQotICAgICAgICB9OwotCi0gICAgICAg
IHJlZ2V4ID0gZXh0cmEuc2NhblJlZ0V4cCgpOwotICAgICAgICBsb2MuZW5kID0gewotICAgICAg
ICAgICAgbGluZTogbGluZU51bWJlciwKLSAgICAgICAgICAgIGNvbHVtbjogaW5kZXggLSBsaW5l
U3RhcnQKLSAgICAgICAgfTsKLQotICAgICAgICBpZiAoIWV4dHJhLnRva2VuaXplKSB7Ci0gICAg
ICAgICAgICAvLyBQb3AgdGhlIHByZXZpb3VzIHRva2VuLCB3aGljaCBpcyBsaWtlbHkgJy8nIG9y
ICcvPScKLSAgICAgICAgICAgIGlmIChleHRyYS50b2tlbnMubGVuZ3RoID4gMCkgewotICAgICAg
ICAgICAgICAgIHRva2VuID0gZXh0cmEudG9rZW5zW2V4dHJhLnRva2Vucy5sZW5ndGggLSAxXTsK
LSAgICAgICAgICAgICAgICBpZiAodG9rZW4ucmFuZ2VbMF0gPT09IHBvcyAmJiB0b2tlbi50eXBl
ID09PSAnUHVuY3R1YXRvcicpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHRva2VuLnZhbHVl
ID09PSAnLycgfHwgdG9rZW4udmFsdWUgPT09ICcvPScpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGV4dHJhLnRva2Vucy5wb3AoKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZXh0cmEudG9rZW5zLnB1c2go
ewotICAgICAgICAgICAgICAgIHR5cGU6ICdSZWd1bGFyRXhwcmVzc2lvbicsCi0gICAgICAgICAg
ICAgICAgdmFsdWU6IHJlZ2V4LmxpdGVyYWwsCi0gICAgICAgICAgICAgICAgcmFuZ2U6IFtwb3Ms
IGluZGV4XSwKLSAgICAgICAgICAgICAgICBsb2M6IGxvYwotICAgICAgICAgICAgfSk7Ci0gICAg
ICAgIH0KLQotICAgICAgICByZXR1cm4gcmVnZXg7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gZmls
dGVyVG9rZW5Mb2NhdGlvbigpIHsKLSAgICAgICAgdmFyIGksIGVudHJ5LCB0b2tlbiwgdG9rZW5z
ID0gW107Ci0KLSAgICAgICAgZm9yIChpID0gMDsgaSA8IGV4dHJhLnRva2Vucy5sZW5ndGg7ICsr
aSkgewotICAgICAgICAgICAgZW50cnkgPSBleHRyYS50b2tlbnNbaV07Ci0gICAgICAgICAgICB0
b2tlbiA9IHsKLSAgICAgICAgICAgICAgICB0eXBlOiBlbnRyeS50eXBlLAotICAgICAgICAgICAg
ICAgIHZhbHVlOiBlbnRyeS52YWx1ZQotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIGlmIChl
eHRyYS5yYW5nZSkgewotICAgICAgICAgICAgICAgIHRva2VuLnJhbmdlID0gZW50cnkucmFuZ2U7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoZXh0cmEubG9jKSB7Ci0gICAgICAgICAg
ICAgICAgdG9rZW4ubG9jID0gZW50cnkubG9jOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
dG9rZW5zLnB1c2godG9rZW4pOwotICAgICAgICB9Ci0KLSAgICAgICAgZXh0cmEudG9rZW5zID0g
dG9rZW5zOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGNyZWF0ZUxvY2F0aW9uTWFya2VyKCkgewot
ICAgICAgICB2YXIgbWFya2VyID0ge307Ci0KLSAgICAgICAgbWFya2VyLnJhbmdlID0gW2luZGV4
LCBpbmRleF07Ci0gICAgICAgIG1hcmtlci5sb2MgPSB7Ci0gICAgICAgICAgICBzdGFydDogewot
ICAgICAgICAgICAgICAgIGxpbmU6IGxpbmVOdW1iZXIsCi0gICAgICAgICAgICAgICAgY29sdW1u
OiBpbmRleCAtIGxpbmVTdGFydAotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIGVuZDogewot
ICAgICAgICAgICAgICAgIGxpbmU6IGxpbmVOdW1iZXIsCi0gICAgICAgICAgICAgICAgY29sdW1u
OiBpbmRleCAtIGxpbmVTdGFydAotICAgICAgICAgICAgfQotICAgICAgICB9OwotCi0gICAgICAg
IG1hcmtlci5lbmQgPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICB0aGlzLnJhbmdlWzFdID0g
aW5kZXg7Ci0gICAgICAgICAgICB0aGlzLmxvYy5lbmQubGluZSA9IGxpbmVOdW1iZXI7Ci0gICAg
ICAgICAgICB0aGlzLmxvYy5lbmQuY29sdW1uID0gaW5kZXggLSBsaW5lU3RhcnQ7Ci0gICAgICAg
IH07Ci0KLSAgICAgICAgbWFya2VyLmFwcGx5R3JvdXAgPSBmdW5jdGlvbiAobm9kZSkgewotICAg
ICAgICAgICAgaWYgKGV4dHJhLnJhbmdlKSB7Ci0gICAgICAgICAgICAgICAgbm9kZS5ncm91cFJh
bmdlID0gW3RoaXMucmFuZ2VbMF0sIHRoaXMucmFuZ2VbMV1dOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgaWYgKGV4dHJhLmxvYykgewotICAgICAgICAgICAgICAgIG5vZGUuZ3JvdXBMb2Mg
PSB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXJ0OiB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBsaW5lOiB0aGlzLmxvYy5zdGFydC5saW5lLAotICAgICAgICAgICAgICAgICAgICAgICAgY29s
dW1uOiB0aGlzLmxvYy5zdGFydC5jb2x1bW4KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAg
ICAgICAgICAgICAgICAgZW5kOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsaW5lOiB0aGlz
LmxvYy5lbmQubGluZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbjogdGhpcy5sb2Mu
ZW5kLmNvbHVtbgotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfTsKLSAg
ICAgICAgICAgICAgICBub2RlID0gZGVsZWdhdGUucG9zdFByb2Nlc3Mobm9kZSk7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH07Ci0KLSAgICAgICAgbWFya2VyLmFwcGx5ID0gZnVuY3Rpb24gKG5v
ZGUpIHsKLSAgICAgICAgICAgIHZhciBub2RlVHlwZSA9IHR5cGVvZiBub2RlOwotICAgICAgICAg
ICAgYXNzZXJ0KG5vZGVUeXBlID09PSAib2JqZWN0IiwKLSAgICAgICAgICAgICAgICAiQXBwbHlp
bmcgbG9jYXRpb24gbWFya2VyIHRvIGFuIHVuZXhwZWN0ZWQgbm9kZSB0eXBlOiAiICsKLSAgICAg
ICAgICAgICAgICAgICAgbm9kZVR5cGUpOwotCi0gICAgICAgICAgICBpZiAoZXh0cmEucmFuZ2Up
IHsKLSAgICAgICAgICAgICAgICBub2RlLnJhbmdlID0gW3RoaXMucmFuZ2VbMF0sIHRoaXMucmFu
Z2VbMV1dOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGV4dHJhLmxvYykgewotICAg
ICAgICAgICAgICAgIG5vZGUubG9jID0gewotICAgICAgICAgICAgICAgICAgICBzdGFydDogewot
ICAgICAgICAgICAgICAgICAgICAgICAgbGluZTogdGhpcy5sb2Muc3RhcnQubGluZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbHVtbjogdGhpcy5sb2Muc3RhcnQuY29sdW1uCi0gICAgICAg
ICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIGVuZDogewotICAgICAgICAgICAg
ICAgICAgICAgICAgbGluZTogdGhpcy5sb2MuZW5kLmxpbmUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICBjb2x1bW46IHRoaXMubG9jLmVuZC5jb2x1bW4KLSAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICAgICAgbm9kZSA9IGRlbGVnYXRlLnBvc3RQ
cm9jZXNzKG5vZGUpOwotICAgICAgICAgICAgfQotICAgICAgICB9OwotCi0gICAgICAgIHJldHVy
biBtYXJrZXI7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gdHJhY2tHcm91cEV4cHJlc3Npb24oKSB7
Ci0gICAgICAgIHZhciBtYXJrZXIsIGV4cHI7Ci0KLSAgICAgICAgc2tpcENvbW1lbnQoKTsKLSAg
ICAgICAgbWFya2VyID0gY3JlYXRlTG9jYXRpb25NYXJrZXIoKTsKLSAgICAgICAgZXhwZWN0KCco
Jyk7Ci0KLSAgICAgICAgKytzdGF0ZS5wYXJlbnRoZXNpemVkQ291bnQ7Ci0KLSAgICAgICAgc3Rh
dGUuYWxsb3dBcnJvd0Z1bmN0aW9uID0gIXN0YXRlLmFsbG93QXJyb3dGdW5jdGlvbjsKLSAgICAg
ICAgZXhwciA9IHBhcnNlRXhwcmVzc2lvbigpOwotICAgICAgICBzdGF0ZS5hbGxvd0Fycm93RnVu
Y3Rpb24gPSBmYWxzZTsKLQotICAgICAgICBpZiAoZXhwci50eXBlID09PSAnQXJyb3dGdW5jdGlv
bkV4cHJlc3Npb24nKSB7Ci0gICAgICAgICAgICBtYXJrZXIuZW5kKCk7Ci0gICAgICAgICAgICBt
YXJrZXIuYXBwbHkoZXhwcik7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBleHBlY3Qo
JyknKTsKLSAgICAgICAgICAgIG1hcmtlci5lbmQoKTsKLSAgICAgICAgICAgIG1hcmtlci5hcHBs
eUdyb3VwKGV4cHIpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGV4cHI7Ci0gICAgfQot
Ci0gICAgZnVuY3Rpb24gdHJhY2tMZWZ0SGFuZFNpZGVFeHByZXNzaW9uKCkgewotICAgICAgICB2
YXIgbWFya2VyLCBleHByOwotCi0gICAgICAgIHNraXBDb21tZW50KCk7Ci0gICAgICAgIG1hcmtl
ciA9IGNyZWF0ZUxvY2F0aW9uTWFya2VyKCk7Ci0KLSAgICAgICAgZXhwciA9IG1hdGNoS2V5d29y
ZCgnbmV3JykgPyBwYXJzZU5ld0V4cHJlc3Npb24oKSA6IHBhcnNlUHJpbWFyeUV4cHJlc3Npb24o
KTsKLQotICAgICAgICB3aGlsZSAobWF0Y2goJy4nKSB8fCBtYXRjaCgnWycpIHx8IGxvb2thaGVh
ZC50eXBlID09PSBUb2tlbi5UZW1wbGF0ZSkgewotICAgICAgICAgICAgaWYgKG1hdGNoKCdbJykp
IHsKLSAgICAgICAgICAgICAgICBleHByID0gZGVsZWdhdGUuY3JlYXRlTWVtYmVyRXhwcmVzc2lv
bignWycsIGV4cHIsIHBhcnNlQ29tcHV0ZWRNZW1iZXIoKSk7Ci0gICAgICAgICAgICAgICAgbWFy
a2VyLmVuZCgpOwotICAgICAgICAgICAgICAgIG1hcmtlci5hcHBseShleHByKTsKLSAgICAgICAg
ICAgIH0gZWxzZSBpZiAobWF0Y2goJy4nKSkgewotICAgICAgICAgICAgICAgIGV4cHIgPSBkZWxl
Z2F0ZS5jcmVhdGVNZW1iZXJFeHByZXNzaW9uKCcuJywgZXhwciwgcGFyc2VOb25Db21wdXRlZE1l
bWJlcigpKTsKLSAgICAgICAgICAgICAgICBtYXJrZXIuZW5kKCk7Ci0gICAgICAgICAgICAgICAg
bWFya2VyLmFwcGx5KGV4cHIpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg
ICBleHByID0gZGVsZWdhdGUuY3JlYXRlVGFnZ2VkVGVtcGxhdGVFeHByZXNzaW9uKGV4cHIsIHBh
cnNlVGVtcGxhdGVMaXRlcmFsKCkpOwotICAgICAgICAgICAgICAgIG1hcmtlci5lbmQoKTsKLSAg
ICAgICAgICAgICAgICBtYXJrZXIuYXBwbHkoZXhwcik7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLQotICAgICAgICByZXR1cm4gZXhwcjsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiB0cmFja0xl
ZnRIYW5kU2lkZUV4cHJlc3Npb25BbGxvd0NhbGwoKSB7Ci0gICAgICAgIHZhciBtYXJrZXIsIGV4
cHIsIGFyZ3M7Ci0KLSAgICAgICAgc2tpcENvbW1lbnQoKTsKLSAgICAgICAgbWFya2VyID0gY3Jl
YXRlTG9jYXRpb25NYXJrZXIoKTsKLQotICAgICAgICBleHByID0gbWF0Y2hLZXl3b3JkKCduZXcn
KSA/IHBhcnNlTmV3RXhwcmVzc2lvbigpIDogcGFyc2VQcmltYXJ5RXhwcmVzc2lvbigpOwotCi0g
ICAgICAgIHdoaWxlIChtYXRjaCgnLicpIHx8IG1hdGNoKCdbJykgfHwgbWF0Y2goJygnKSB8fCBs
b29rYWhlYWQudHlwZSA9PT0gVG9rZW4uVGVtcGxhdGUpIHsKLSAgICAgICAgICAgIGlmIChtYXRj
aCgnKCcpKSB7Ci0gICAgICAgICAgICAgICAgYXJncyA9IHBhcnNlQXJndW1lbnRzKCk7Ci0gICAg
ICAgICAgICAgICAgZXhwciA9IGRlbGVnYXRlLmNyZWF0ZUNhbGxFeHByZXNzaW9uKGV4cHIsIGFy
Z3MpOwotICAgICAgICAgICAgICAgIG1hcmtlci5lbmQoKTsKLSAgICAgICAgICAgICAgICBtYXJr
ZXIuYXBwbHkoZXhwcik7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKG1hdGNoKCdbJykpIHsKLSAg
ICAgICAgICAgICAgICBleHByID0gZGVsZWdhdGUuY3JlYXRlTWVtYmVyRXhwcmVzc2lvbignWycs
IGV4cHIsIHBhcnNlQ29tcHV0ZWRNZW1iZXIoKSk7Ci0gICAgICAgICAgICAgICAgbWFya2VyLmVu
ZCgpOwotICAgICAgICAgICAgICAgIG1hcmtlci5hcHBseShleHByKTsKLSAgICAgICAgICAgIH0g
ZWxzZSBpZiAobWF0Y2goJy4nKSkgewotICAgICAgICAgICAgICAgIGV4cHIgPSBkZWxlZ2F0ZS5j
cmVhdGVNZW1iZXJFeHByZXNzaW9uKCcuJywgZXhwciwgcGFyc2VOb25Db21wdXRlZE1lbWJlcigp
KTsKLSAgICAgICAgICAgICAgICBtYXJrZXIuZW5kKCk7Ci0gICAgICAgICAgICAgICAgbWFya2Vy
LmFwcGx5KGV4cHIpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBleHBy
ID0gZGVsZWdhdGUuY3JlYXRlVGFnZ2VkVGVtcGxhdGVFeHByZXNzaW9uKGV4cHIsIHBhcnNlVGVt
cGxhdGVMaXRlcmFsKCkpOwotICAgICAgICAgICAgICAgIG1hcmtlci5lbmQoKTsKLSAgICAgICAg
ICAgICAgICBtYXJrZXIuYXBwbHkoZXhwcik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQot
ICAgICAgICByZXR1cm4gZXhwcjsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBmaWx0ZXJHcm91cChu
b2RlKSB7Ci0gICAgICAgIHZhciBuLCBpLCBlbnRyeTsKLQotICAgICAgICBuID0gKE9iamVjdC5w
cm90b3R5cGUudG9TdHJpbmcuYXBwbHkobm9kZSkgPT09ICdbb2JqZWN0IEFycmF5XScpID8gW10g
OiB7fTsKLSAgICAgICAgZm9yIChpIGluIG5vZGUpIHsKLSAgICAgICAgICAgIGlmIChub2RlLmhh
c093blByb3BlcnR5KGkpICYmIGkgIT09ICdncm91cFJhbmdlJyAmJiBpICE9PSAnZ3JvdXBMb2Mn
KSB7Ci0gICAgICAgICAgICAgICAgZW50cnkgPSBub2RlW2ldOwotICAgICAgICAgICAgICAgIGlm
IChlbnRyeSA9PT0gbnVsbCB8fCB0eXBlb2YgZW50cnkgIT09ICdvYmplY3QnIHx8IGVudHJ5IGlu
c3RhbmNlb2YgUmVnRXhwKSB7Ci0gICAgICAgICAgICAgICAgICAgIG5baV0gPSBlbnRyeTsKLSAg
ICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBuW2ldID0gZmlsdGVy
R3JvdXAoZW50cnkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotICAgICAgICByZXR1cm4gbjsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiB3cmFwVHJhY2tpbmdG
dW5jdGlvbihyYW5nZSwgbG9jLCBwcmVzZXJ2ZVdoaXRlc3BhY2UpIHsKLQotICAgICAgICByZXR1
cm4gZnVuY3Rpb24gKHBhcnNlRnVuY3Rpb24pIHsKLQotICAgICAgICAgICAgZnVuY3Rpb24gaXNC
aW5hcnkobm9kZSkgewotICAgICAgICAgICAgICAgIHJldHVybiBub2RlLnR5cGUgPT09IFN5bnRh
eC5Mb2dpY2FsRXhwcmVzc2lvbiB8fAotICAgICAgICAgICAgICAgICAgICBub2RlLnR5cGUgPT09
IFN5bnRheC5CaW5hcnlFeHByZXNzaW9uOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBm
dW5jdGlvbiB2aXNpdChub2RlKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHN0YXJ0LCBlbmQ7Ci0K
LSAgICAgICAgICAgICAgICBpZiAoaXNCaW5hcnkobm9kZS5sZWZ0KSkgewotICAgICAgICAgICAg
ICAgICAgICB2aXNpdChub2RlLmxlZnQpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICBpZiAoaXNCaW5hcnkobm9kZS5yaWdodCkpIHsKLSAgICAgICAgICAgICAgICAgICAgdmlz
aXQobm9kZS5yaWdodCk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYg
KHJhbmdlKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChub2RlLmxlZnQuZ3JvdXBSYW5nZSB8
fCBub2RlLnJpZ2h0Lmdyb3VwUmFuZ2UpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0
ID0gbm9kZS5sZWZ0Lmdyb3VwUmFuZ2UgPyBub2RlLmxlZnQuZ3JvdXBSYW5nZVswXSA6IG5vZGUu
bGVmdC5yYW5nZVswXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGVuZCA9IG5vZGUucmlnaHQu
Z3JvdXBSYW5nZSA/IG5vZGUucmlnaHQuZ3JvdXBSYW5nZVsxXSA6IG5vZGUucmlnaHQucmFuZ2Vb
MV07Ci0gICAgICAgICAgICAgICAgICAgICAgICBub2RlLnJhbmdlID0gW3N0YXJ0LCBlbmRdOwot
ICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBub2RlLnJhbmdlID09PSAndW5k
ZWZpbmVkJykgewotICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQgPSBub2RlLmxlZnQucmFu
Z2VbMF07Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbmQgPSBub2RlLnJpZ2h0LnJhbmdlWzFd
OwotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5yYW5nZSA9IFtzdGFydCwgZW5kXTsKLSAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBp
ZiAobG9jKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChub2RlLmxlZnQuZ3JvdXBMb2MgfHwg
bm9kZS5yaWdodC5ncm91cExvYykgewotICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQgPSBu
b2RlLmxlZnQuZ3JvdXBMb2MgPyBub2RlLmxlZnQuZ3JvdXBMb2Muc3RhcnQgOiBub2RlLmxlZnQu
bG9jLnN0YXJ0OwotICAgICAgICAgICAgICAgICAgICAgICAgZW5kID0gbm9kZS5yaWdodC5ncm91
cExvYyA/IG5vZGUucmlnaHQuZ3JvdXBMb2MuZW5kIDogbm9kZS5yaWdodC5sb2MuZW5kOwotICAg
ICAgICAgICAgICAgICAgICAgICAgbm9kZS5sb2MgPSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RhcnQ6IHN0YXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogZW5k
Ci0gICAgICAgICAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgICAgICAgICAgICAgbm9k
ZSA9IGRlbGVnYXRlLnBvc3RQcm9jZXNzKG5vZGUpOwotICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgaWYgKHR5cGVvZiBub2RlLmxvYyA9PT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIG5vZGUubG9jID0gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0
OiBub2RlLmxlZnQubG9jLnN0YXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDog
bm9kZS5yaWdodC5sb2MuZW5kCi0gICAgICAgICAgICAgICAgICAgICAgICB9OwotICAgICAgICAg
ICAgICAgICAgICAgICAgbm9kZSA9IGRlbGVnYXRlLnBvc3RQcm9jZXNzKG5vZGUpOwotICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgICAgIHZhciBtYXJrZXIs
IG5vZGU7Ci0KLSAgICAgICAgICAgICAgICBpZiAoIXByZXNlcnZlV2hpdGVzcGFjZSkgewotICAg
ICAgICAgICAgICAgICAgICBza2lwQ29tbWVudCgpOwotICAgICAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgICAgIG1hcmtlciA9IGNyZWF0ZUxvY2F0aW9uTWFya2VyKCk7Ci0gICAgICAgICAg
ICAgICAgbm9kZSA9IHBhcnNlRnVuY3Rpb24uYXBwbHkobnVsbCwgYXJndW1lbnRzKTsKLSAgICAg
ICAgICAgICAgICBtYXJrZXIuZW5kKCk7Ci0KLSAgICAgICAgICAgICAgICBpZiAocmFuZ2UgJiYg
dHlwZW9mIG5vZGUucmFuZ2UgPT09ICd1bmRlZmluZWQnKSB7Ci0gICAgICAgICAgICAgICAgICAg
IG1hcmtlci5hcHBseShub2RlKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAg
ICBpZiAobG9jICYmIHR5cGVvZiBub2RlLmxvYyA9PT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAg
ICAgICAgICAgICAgbWFya2VyLmFwcGx5KG5vZGUpOwotICAgICAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgICAgIGlmIChpc0JpbmFyeShub2RlKSkgewotICAgICAgICAgICAgICAgICAgICB2
aXNpdChub2RlKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICByZXR1cm4g
bm9kZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgfQotCi0gICAgZnVuY3Rpb24g
cGF0Y2goKSB7Ci0KLSAgICAgICAgdmFyIHdyYXBUcmFja2luZywgd3JhcFRyYWNraW5nUHJlc2Vy
dmVXaGl0ZXNwYWNlOwotCi0gICAgICAgIGlmIChleHRyYS5jb21tZW50cykgewotICAgICAgICAg
ICAgZXh0cmEuc2tpcENvbW1lbnQgPSBza2lwQ29tbWVudDsKLSAgICAgICAgICAgIHNraXBDb21t
ZW50ID0gc2NhbkNvbW1lbnQ7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoZXh0cmEucmFuZ2Ug
fHwgZXh0cmEubG9jKSB7Ci0KLSAgICAgICAgICAgIGV4dHJhLnBhcnNlR3JvdXBFeHByZXNzaW9u
ID0gcGFyc2VHcm91cEV4cHJlc3Npb247Ci0gICAgICAgICAgICBleHRyYS5wYXJzZUxlZnRIYW5k
U2lkZUV4cHJlc3Npb24gPSBwYXJzZUxlZnRIYW5kU2lkZUV4cHJlc3Npb247Ci0gICAgICAgICAg
ICBleHRyYS5wYXJzZUxlZnRIYW5kU2lkZUV4cHJlc3Npb25BbGxvd0NhbGwgPSBwYXJzZUxlZnRI
YW5kU2lkZUV4cHJlc3Npb25BbGxvd0NhbGw7Ci0gICAgICAgICAgICBwYXJzZUdyb3VwRXhwcmVz
c2lvbiA9IHRyYWNrR3JvdXBFeHByZXNzaW9uOwotICAgICAgICAgICAgcGFyc2VMZWZ0SGFuZFNp
ZGVFeHByZXNzaW9uID0gdHJhY2tMZWZ0SGFuZFNpZGVFeHByZXNzaW9uOwotICAgICAgICAgICAg
cGFyc2VMZWZ0SGFuZFNpZGVFeHByZXNzaW9uQWxsb3dDYWxsID0gdHJhY2tMZWZ0SGFuZFNpZGVF
eHByZXNzaW9uQWxsb3dDYWxsOwotCi0gICAgICAgICAgICB3cmFwVHJhY2tpbmcgPSB3cmFwVHJh
Y2tpbmdGdW5jdGlvbihleHRyYS5yYW5nZSwgZXh0cmEubG9jKTsKLSAgICAgICAgICAgIHdyYXBU
cmFja2luZ1ByZXNlcnZlV2hpdGVzcGFjZSA9Ci0gICAgICAgICAgICAgICAgd3JhcFRyYWNraW5n
RnVuY3Rpb24oZXh0cmEucmFuZ2UsIGV4dHJhLmxvYywgdHJ1ZSk7Ci0KLSAgICAgICAgICAgIGV4
dHJhLnBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24gPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9u
OwotICAgICAgICAgICAgZXh0cmEucGFyc2VCaW5hcnlFeHByZXNzaW9uID0gcGFyc2VCaW5hcnlF
eHByZXNzaW9uOwotICAgICAgICAgICAgZXh0cmEucGFyc2VCbG9jayA9IHBhcnNlQmxvY2s7Ci0g
ICAgICAgICAgICBleHRyYS5wYXJzZUZ1bmN0aW9uU291cmNlRWxlbWVudHMgPSBwYXJzZUZ1bmN0
aW9uU291cmNlRWxlbWVudHM7Ci0gICAgICAgICAgICBleHRyYS5wYXJzZUNhdGNoQ2xhdXNlID0g
cGFyc2VDYXRjaENsYXVzZTsKLSAgICAgICAgICAgIGV4dHJhLnBhcnNlQ29tcHV0ZWRNZW1iZXIg
PSBwYXJzZUNvbXB1dGVkTWVtYmVyOwotICAgICAgICAgICAgZXh0cmEucGFyc2VDb25kaXRpb25h
bEV4cHJlc3Npb24gPSBwYXJzZUNvbmRpdGlvbmFsRXhwcmVzc2lvbjsKLSAgICAgICAgICAgIGV4
dHJhLnBhcnNlQ29uc3RMZXREZWNsYXJhdGlvbiA9IHBhcnNlQ29uc3RMZXREZWNsYXJhdGlvbjsK
LSAgICAgICAgICAgIGV4dHJhLnBhcnNlRXhwb3J0RGVjbGFyYXRpb24gPSBwYXJzZUV4cG9ydERl
Y2xhcmF0aW9uOwotICAgICAgICAgICAgZXh0cmEucGFyc2VFeHBvcnRTcGVjaWZpZXIgPSBwYXJz
ZUV4cG9ydFNwZWNpZmllcjsKLSAgICAgICAgICAgIGV4dHJhLnBhcnNlRXhwb3J0U3BlY2lmaWVy
U2V0UHJvcGVydHkgPSBwYXJzZUV4cG9ydFNwZWNpZmllclNldFByb3BlcnR5OwotICAgICAgICAg
ICAgZXh0cmEucGFyc2VFeHByZXNzaW9uID0gcGFyc2VFeHByZXNzaW9uOwotICAgICAgICAgICAg
ZXh0cmEucGFyc2VGb3JWYXJpYWJsZURlY2xhcmF0aW9uID0gcGFyc2VGb3JWYXJpYWJsZURlY2xh
cmF0aW9uOwotICAgICAgICAgICAgZXh0cmEucGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uID0gcGFy
c2VGdW5jdGlvbkRlY2xhcmF0aW9uOwotICAgICAgICAgICAgZXh0cmEucGFyc2VGdW5jdGlvbkV4
cHJlc3Npb24gPSBwYXJzZUZ1bmN0aW9uRXhwcmVzc2lvbjsKLSAgICAgICAgICAgIGV4dHJhLnBh
cnNlUGFyYW1zID0gcGFyc2VQYXJhbXM7Ci0gICAgICAgICAgICBleHRyYS5wYXJzZUdsb2IgPSBw
YXJzZUdsb2I7Ci0gICAgICAgICAgICBleHRyYS5wYXJzZUltcG9ydERlY2xhcmF0aW9uID0gcGFy
c2VJbXBvcnREZWNsYXJhdGlvbjsKLSAgICAgICAgICAgIGV4dHJhLnBhcnNlSW1wb3J0U3BlY2lm
aWVyID0gcGFyc2VJbXBvcnRTcGVjaWZpZXI7Ci0gICAgICAgICAgICBleHRyYS5wYXJzZU1vZHVs
ZURlY2xhcmF0aW9uID0gcGFyc2VNb2R1bGVEZWNsYXJhdGlvbjsKLSAgICAgICAgICAgIGV4dHJh
LnBhcnNlTW9kdWxlQmxvY2sgPSBwYXJzZU1vZHVsZUJsb2NrOwotICAgICAgICAgICAgZXh0cmEu
cGFyc2VOZXdFeHByZXNzaW9uID0gcGFyc2VOZXdFeHByZXNzaW9uOwotICAgICAgICAgICAgZXh0
cmEucGFyc2VOb25Db21wdXRlZFByb3BlcnR5ID0gcGFyc2VOb25Db21wdXRlZFByb3BlcnR5Owot
ICAgICAgICAgICAgZXh0cmEucGFyc2VPYmplY3RQcm9wZXJ0eSA9IHBhcnNlT2JqZWN0UHJvcGVy
dHk7Ci0gICAgICAgICAgICBleHRyYS5wYXJzZU9iamVjdFByb3BlcnR5S2V5ID0gcGFyc2VPYmpl
Y3RQcm9wZXJ0eUtleTsKLSAgICAgICAgICAgIGV4dHJhLnBhcnNlUGF0aCA9IHBhcnNlUGF0aDsK
LSAgICAgICAgICAgIGV4dHJhLnBhcnNlUG9zdGZpeEV4cHJlc3Npb24gPSBwYXJzZVBvc3RmaXhF
eHByZXNzaW9uOwotICAgICAgICAgICAgZXh0cmEucGFyc2VQcmltYXJ5RXhwcmVzc2lvbiA9IHBh
cnNlUHJpbWFyeUV4cHJlc3Npb247Ci0gICAgICAgICAgICBleHRyYS5wYXJzZVByb2dyYW0gPSBw
YXJzZVByb2dyYW07Ci0gICAgICAgICAgICBleHRyYS5wYXJzZVByb3BlcnR5RnVuY3Rpb24gPSBw
YXJzZVByb3BlcnR5RnVuY3Rpb247Ci0gICAgICAgICAgICBleHRyYS5wYXJzZVNwcmVhZE9yQXNz
aWdubWVudEV4cHJlc3Npb24gPSBwYXJzZVNwcmVhZE9yQXNzaWdubWVudEV4cHJlc3Npb247Ci0g
ICAgICAgICAgICBleHRyYS5wYXJzZVRlbXBsYXRlRWxlbWVudCA9IHBhcnNlVGVtcGxhdGVFbGVt
ZW50OwotICAgICAgICAgICAgZXh0cmEucGFyc2VUZW1wbGF0ZUxpdGVyYWwgPSBwYXJzZVRlbXBs
YXRlTGl0ZXJhbDsKLSAgICAgICAgICAgIGV4dHJhLnBhcnNlU3RhdGVtZW50ID0gcGFyc2VTdGF0
ZW1lbnQ7Ci0gICAgICAgICAgICBleHRyYS5wYXJzZVN3aXRjaENhc2UgPSBwYXJzZVN3aXRjaENh
c2U7Ci0gICAgICAgICAgICBleHRyYS5wYXJzZVVuYXJ5RXhwcmVzc2lvbiA9IHBhcnNlVW5hcnlF
eHByZXNzaW9uOwotICAgICAgICAgICAgZXh0cmEucGFyc2VWYXJpYWJsZURlY2xhcmF0aW9uID0g
cGFyc2VWYXJpYWJsZURlY2xhcmF0aW9uOwotICAgICAgICAgICAgZXh0cmEucGFyc2VWYXJpYWJs
ZUlkZW50aWZpZXIgPSBwYXJzZVZhcmlhYmxlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGV4dHJh
LnBhcnNlTWV0aG9kRGVmaW5pdGlvbiA9IHBhcnNlTWV0aG9kRGVmaW5pdGlvbjsKLSAgICAgICAg
ICAgIGV4dHJhLnBhcnNlQ2xhc3NEZWNsYXJhdGlvbiA9IHBhcnNlQ2xhc3NEZWNsYXJhdGlvbjsK
LSAgICAgICAgICAgIGV4dHJhLnBhcnNlQ2xhc3NFeHByZXNzaW9uID0gcGFyc2VDbGFzc0V4cHJl
c3Npb247Ci0gICAgICAgICAgICBleHRyYS5wYXJzZUNsYXNzQm9keSA9IHBhcnNlQ2xhc3NCb2R5
OwotICAgICAgICAgICAgZXh0cmEucGFyc2VYSlNJZGVudGlmaWVyID0gcGFyc2VYSlNJZGVudGlm
aWVyOwotICAgICAgICAgICAgZXh0cmEucGFyc2VYSlNDaGlsZCA9IHBhcnNlWEpTQ2hpbGQ7Ci0g
ICAgICAgICAgICBleHRyYS5wYXJzZVhKU0F0dHJpYnV0ZSA9IHBhcnNlWEpTQXR0cmlidXRlOwot
ICAgICAgICAgICAgZXh0cmEucGFyc2VYSlNBdHRyaWJ1dGVWYWx1ZSA9IHBhcnNlWEpTQXR0cmli
dXRlVmFsdWU7Ci0gICAgICAgICAgICBleHRyYS5wYXJzZVhKU0V4cHJlc3Npb25Db250YWluZXIg
PSBwYXJzZVhKU0V4cHJlc3Npb25Db250YWluZXI7Ci0gICAgICAgICAgICBleHRyYS5wYXJzZVhK
U0VtcHR5RXhwcmVzc2lvbiA9IHBhcnNlWEpTRW1wdHlFeHByZXNzaW9uOwotICAgICAgICAgICAg
ZXh0cmEucGFyc2VYSlNFbGVtZW50ID0gcGFyc2VYSlNFbGVtZW50OwotICAgICAgICAgICAgZXh0
cmEucGFyc2VYSlNDbG9zaW5nRWxlbWVudCA9IHBhcnNlWEpTQ2xvc2luZ0VsZW1lbnQ7Ci0gICAg
ICAgICAgICBleHRyYS5wYXJzZVhKU09wZW5pbmdFbGVtZW50ID0gcGFyc2VYSlNPcGVuaW5nRWxl
bWVudDsKLQotICAgICAgICAgICAgcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbiA9IHdyYXBUcmFj
a2luZyhleHRyYS5wYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKTsKLSAgICAgICAgICAgIHBhcnNl
QmluYXJ5RXhwcmVzc2lvbiA9IHdyYXBUcmFja2luZyhleHRyYS5wYXJzZUJpbmFyeUV4cHJlc3Np
b24pOwotICAgICAgICAgICAgcGFyc2VCbG9jayA9IHdyYXBUcmFja2luZyhleHRyYS5wYXJzZUJs
b2NrKTsKLSAgICAgICAgICAgIHBhcnNlRnVuY3Rpb25Tb3VyY2VFbGVtZW50cyA9IHdyYXBUcmFj
a2luZyhleHRyYS5wYXJzZUZ1bmN0aW9uU291cmNlRWxlbWVudHMpOwotICAgICAgICAgICAgcGFy
c2VDYXRjaENsYXVzZSA9IHdyYXBUcmFja2luZyhleHRyYS5wYXJzZUNhdGNoQ2xhdXNlKTsKLSAg
ICAgICAgICAgIHBhcnNlQ29tcHV0ZWRNZW1iZXIgPSB3cmFwVHJhY2tpbmcoZXh0cmEucGFyc2VD
b21wdXRlZE1lbWJlcik7Ci0gICAgICAgICAgICBwYXJzZUNvbmRpdGlvbmFsRXhwcmVzc2lvbiA9
IHdyYXBUcmFja2luZyhleHRyYS5wYXJzZUNvbmRpdGlvbmFsRXhwcmVzc2lvbik7Ci0gICAgICAg
ICAgICBwYXJzZUNvbnN0TGV0RGVjbGFyYXRpb24gPSB3cmFwVHJhY2tpbmcoZXh0cmEucGFyc2VD
b25zdExldERlY2xhcmF0aW9uKTsKLSAgICAgICAgICAgIHBhcnNlRXhwb3J0RGVjbGFyYXRpb24g
PSB3cmFwVHJhY2tpbmcocGFyc2VFeHBvcnREZWNsYXJhdGlvbik7Ci0gICAgICAgICAgICBwYXJz
ZUV4cG9ydFNwZWNpZmllciA9IHdyYXBUcmFja2luZyhwYXJzZUV4cG9ydFNwZWNpZmllcik7Ci0g
ICAgICAgICAgICBwYXJzZUV4cG9ydFNwZWNpZmllclNldFByb3BlcnR5ID0gd3JhcFRyYWNraW5n
KHBhcnNlRXhwb3J0U3BlY2lmaWVyU2V0UHJvcGVydHkpOwotICAgICAgICAgICAgcGFyc2VFeHBy
ZXNzaW9uID0gd3JhcFRyYWNraW5nKGV4dHJhLnBhcnNlRXhwcmVzc2lvbik7Ci0gICAgICAgICAg
ICBwYXJzZUZvclZhcmlhYmxlRGVjbGFyYXRpb24gPSB3cmFwVHJhY2tpbmcoZXh0cmEucGFyc2VG
b3JWYXJpYWJsZURlY2xhcmF0aW9uKTsKLSAgICAgICAgICAgIHBhcnNlRnVuY3Rpb25EZWNsYXJh
dGlvbiA9IHdyYXBUcmFja2luZyhleHRyYS5wYXJzZUZ1bmN0aW9uRGVjbGFyYXRpb24pOwotICAg
ICAgICAgICAgcGFyc2VGdW5jdGlvbkV4cHJlc3Npb24gPSB3cmFwVHJhY2tpbmcoZXh0cmEucGFy
c2VGdW5jdGlvbkV4cHJlc3Npb24pOwotICAgICAgICAgICAgcGFyc2VQYXJhbXMgPSB3cmFwVHJh
Y2tpbmcoZXh0cmEucGFyc2VQYXJhbXMpOwotICAgICAgICAgICAgcGFyc2VHbG9iID0gd3JhcFRy
YWNraW5nKGV4dHJhLnBhcnNlR2xvYik7Ci0gICAgICAgICAgICBwYXJzZUltcG9ydERlY2xhcmF0
aW9uID0gd3JhcFRyYWNraW5nKGV4dHJhLnBhcnNlSW1wb3J0RGVjbGFyYXRpb24pOwotICAgICAg
ICAgICAgcGFyc2VJbXBvcnRTcGVjaWZpZXIgPSB3cmFwVHJhY2tpbmcoZXh0cmEucGFyc2VJbXBv
cnRTcGVjaWZpZXIpOwotICAgICAgICAgICAgcGFyc2VNb2R1bGVEZWNsYXJhdGlvbiA9IHdyYXBU
cmFja2luZyhleHRyYS5wYXJzZU1vZHVsZURlY2xhcmF0aW9uKTsKLSAgICAgICAgICAgIHBhcnNl
TW9kdWxlQmxvY2sgPSB3cmFwVHJhY2tpbmcoZXh0cmEucGFyc2VNb2R1bGVCbG9jayk7Ci0gICAg
ICAgICAgICBwYXJzZUxlZnRIYW5kU2lkZUV4cHJlc3Npb24gPSB3cmFwVHJhY2tpbmcocGFyc2VM
ZWZ0SGFuZFNpZGVFeHByZXNzaW9uKTsKLSAgICAgICAgICAgIHBhcnNlTmV3RXhwcmVzc2lvbiA9
IHdyYXBUcmFja2luZyhleHRyYS5wYXJzZU5ld0V4cHJlc3Npb24pOwotICAgICAgICAgICAgcGFy
c2VOb25Db21wdXRlZFByb3BlcnR5ID0gd3JhcFRyYWNraW5nKGV4dHJhLnBhcnNlTm9uQ29tcHV0
ZWRQcm9wZXJ0eSk7Ci0gICAgICAgICAgICBwYXJzZU9iamVjdFByb3BlcnR5ID0gd3JhcFRyYWNr
aW5nKGV4dHJhLnBhcnNlT2JqZWN0UHJvcGVydHkpOwotICAgICAgICAgICAgcGFyc2VPYmplY3RQ
cm9wZXJ0eUtleSA9IHdyYXBUcmFja2luZyhleHRyYS5wYXJzZU9iamVjdFByb3BlcnR5S2V5KTsK
LSAgICAgICAgICAgIHBhcnNlUGF0aCA9IHdyYXBUcmFja2luZyhleHRyYS5wYXJzZVBhdGgpOwot
ICAgICAgICAgICAgcGFyc2VQb3N0Zml4RXhwcmVzc2lvbiA9IHdyYXBUcmFja2luZyhleHRyYS5w
YXJzZVBvc3RmaXhFeHByZXNzaW9uKTsKLSAgICAgICAgICAgIHBhcnNlUHJpbWFyeUV4cHJlc3Np
b24gPSB3cmFwVHJhY2tpbmcoZXh0cmEucGFyc2VQcmltYXJ5RXhwcmVzc2lvbik7Ci0gICAgICAg
ICAgICBwYXJzZVByb2dyYW0gPSB3cmFwVHJhY2tpbmcoZXh0cmEucGFyc2VQcm9ncmFtKTsKLSAg
ICAgICAgICAgIHBhcnNlUHJvcGVydHlGdW5jdGlvbiA9IHdyYXBUcmFja2luZyhleHRyYS5wYXJz
ZVByb3BlcnR5RnVuY3Rpb24pOwotICAgICAgICAgICAgcGFyc2VUZW1wbGF0ZUVsZW1lbnQgPSB3
cmFwVHJhY2tpbmcoZXh0cmEucGFyc2VUZW1wbGF0ZUVsZW1lbnQpOwotICAgICAgICAgICAgcGFy
c2VUZW1wbGF0ZUxpdGVyYWwgPSB3cmFwVHJhY2tpbmcoZXh0cmEucGFyc2VUZW1wbGF0ZUxpdGVy
YWwpOwotICAgICAgICAgICAgcGFyc2VTcHJlYWRPckFzc2lnbm1lbnRFeHByZXNzaW9uID0gd3Jh
cFRyYWNraW5nKGV4dHJhLnBhcnNlU3ByZWFkT3JBc3NpZ25tZW50RXhwcmVzc2lvbik7Ci0gICAg
ICAgICAgICBwYXJzZVN0YXRlbWVudCA9IHdyYXBUcmFja2luZyhleHRyYS5wYXJzZVN0YXRlbWVu
dCk7Ci0gICAgICAgICAgICBwYXJzZVN3aXRjaENhc2UgPSB3cmFwVHJhY2tpbmcoZXh0cmEucGFy
c2VTd2l0Y2hDYXNlKTsKLSAgICAgICAgICAgIHBhcnNlVW5hcnlFeHByZXNzaW9uID0gd3JhcFRy
YWNraW5nKGV4dHJhLnBhcnNlVW5hcnlFeHByZXNzaW9uKTsKLSAgICAgICAgICAgIHBhcnNlVmFy
aWFibGVEZWNsYXJhdGlvbiA9IHdyYXBUcmFja2luZyhleHRyYS5wYXJzZVZhcmlhYmxlRGVjbGFy
YXRpb24pOwotICAgICAgICAgICAgcGFyc2VWYXJpYWJsZUlkZW50aWZpZXIgPSB3cmFwVHJhY2tp
bmcoZXh0cmEucGFyc2VWYXJpYWJsZUlkZW50aWZpZXIpOwotICAgICAgICAgICAgcGFyc2VNZXRo
b2REZWZpbml0aW9uID0gd3JhcFRyYWNraW5nKGV4dHJhLnBhcnNlTWV0aG9kRGVmaW5pdGlvbik7
Ci0gICAgICAgICAgICBwYXJzZUNsYXNzRGVjbGFyYXRpb24gPSB3cmFwVHJhY2tpbmcoZXh0cmEu
cGFyc2VDbGFzc0RlY2xhcmF0aW9uKTsKLSAgICAgICAgICAgIHBhcnNlQ2xhc3NFeHByZXNzaW9u
ID0gd3JhcFRyYWNraW5nKGV4dHJhLnBhcnNlQ2xhc3NFeHByZXNzaW9uKTsKLSAgICAgICAgICAg
IHBhcnNlQ2xhc3NCb2R5ID0gd3JhcFRyYWNraW5nKGV4dHJhLnBhcnNlQ2xhc3NCb2R5KTsKLSAg
ICAgICAgICAgIHBhcnNlWEpTSWRlbnRpZmllciA9IHdyYXBUcmFja2luZyhleHRyYS5wYXJzZVhK
U0lkZW50aWZpZXIpOwotICAgICAgICAgICAgcGFyc2VYSlNDaGlsZCA9IHdyYXBUcmFja2luZ1By
ZXNlcnZlV2hpdGVzcGFjZShleHRyYS5wYXJzZVhKU0NoaWxkKTsKLSAgICAgICAgICAgIHBhcnNl
WEpTQXR0cmlidXRlID0gd3JhcFRyYWNraW5nKGV4dHJhLnBhcnNlWEpTQXR0cmlidXRlKTsKLSAg
ICAgICAgICAgIHBhcnNlWEpTQXR0cmlidXRlVmFsdWUgPSB3cmFwVHJhY2tpbmcoZXh0cmEucGFy
c2VYSlNBdHRyaWJ1dGVWYWx1ZSk7Ci0gICAgICAgICAgICBwYXJzZVhKU0V4cHJlc3Npb25Db250
YWluZXIgPSB3cmFwVHJhY2tpbmcoZXh0cmEucGFyc2VYSlNFeHByZXNzaW9uQ29udGFpbmVyKTsK
LSAgICAgICAgICAgIHBhcnNlWEpTRW1wdHlFeHByZXNzaW9uID0gd3JhcFRyYWNraW5nUHJlc2Vy
dmVXaGl0ZXNwYWNlKGV4dHJhLnBhcnNlWEpTRW1wdHlFeHByZXNzaW9uKTsKLSAgICAgICAgICAg
IHBhcnNlWEpTRWxlbWVudCA9IHdyYXBUcmFja2luZyhleHRyYS5wYXJzZVhKU0VsZW1lbnQpOwot
ICAgICAgICAgICAgcGFyc2VYSlNDbG9zaW5nRWxlbWVudCA9IHdyYXBUcmFja2luZyhleHRyYS5w
YXJzZVhKU0Nsb3NpbmdFbGVtZW50KTsKLSAgICAgICAgICAgIHBhcnNlWEpTT3BlbmluZ0VsZW1l
bnQgPSB3cmFwVHJhY2tpbmcoZXh0cmEucGFyc2VYSlNPcGVuaW5nRWxlbWVudCk7Ci0gICAgICAg
IH0KLQotICAgICAgICBpZiAodHlwZW9mIGV4dHJhLnRva2VucyAhPT0gJ3VuZGVmaW5lZCcpIHsK
LSAgICAgICAgICAgIGV4dHJhLmFkdmFuY2UgPSBhZHZhbmNlOwotICAgICAgICAgICAgZXh0cmEu
c2NhblJlZ0V4cCA9IHNjYW5SZWdFeHA7Ci0KLSAgICAgICAgICAgIGFkdmFuY2UgPSBjb2xsZWN0
VG9rZW47Ci0gICAgICAgICAgICBzY2FuUmVnRXhwID0gY29sbGVjdFJlZ2V4OwotICAgICAgICB9
Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gdW5wYXRjaCgpIHsKLSAgICAgICAgaWYgKHR5cGVvZiBl
eHRyYS5za2lwQ29tbWVudCA9PT0gJ2Z1bmN0aW9uJykgewotICAgICAgICAgICAgc2tpcENvbW1l
bnQgPSBleHRyYS5za2lwQ29tbWVudDsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChleHRyYS5y
YW5nZSB8fCBleHRyYS5sb2MpIHsKLSAgICAgICAgICAgIHBhcnNlQXNzaWdubWVudEV4cHJlc3Np
b24gPSBleHRyYS5wYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uOwotICAgICAgICAgICAgcGFyc2VC
aW5hcnlFeHByZXNzaW9uID0gZXh0cmEucGFyc2VCaW5hcnlFeHByZXNzaW9uOwotICAgICAgICAg
ICAgcGFyc2VCbG9jayA9IGV4dHJhLnBhcnNlQmxvY2s7Ci0gICAgICAgICAgICBwYXJzZUZ1bmN0
aW9uU291cmNlRWxlbWVudHMgPSBleHRyYS5wYXJzZUZ1bmN0aW9uU291cmNlRWxlbWVudHM7Ci0g
ICAgICAgICAgICBwYXJzZUNhdGNoQ2xhdXNlID0gZXh0cmEucGFyc2VDYXRjaENsYXVzZTsKLSAg
ICAgICAgICAgIHBhcnNlQ29tcHV0ZWRNZW1iZXIgPSBleHRyYS5wYXJzZUNvbXB1dGVkTWVtYmVy
OwotICAgICAgICAgICAgcGFyc2VDb25kaXRpb25hbEV4cHJlc3Npb24gPSBleHRyYS5wYXJzZUNv
bmRpdGlvbmFsRXhwcmVzc2lvbjsKLSAgICAgICAgICAgIHBhcnNlQ29uc3RMZXREZWNsYXJhdGlv
biA9IGV4dHJhLnBhcnNlQ29uc3RMZXREZWNsYXJhdGlvbjsKLSAgICAgICAgICAgIHBhcnNlRXhw
b3J0RGVjbGFyYXRpb24gPSBleHRyYS5wYXJzZUV4cG9ydERlY2xhcmF0aW9uOwotICAgICAgICAg
ICAgcGFyc2VFeHBvcnRTcGVjaWZpZXIgPSBleHRyYS5wYXJzZUV4cG9ydFNwZWNpZmllcjsKLSAg
ICAgICAgICAgIHBhcnNlRXhwb3J0U3BlY2lmaWVyU2V0UHJvcGVydHkgPSBleHRyYS5wYXJzZUV4
cG9ydFNwZWNpZmllclNldFByb3BlcnR5OwotICAgICAgICAgICAgcGFyc2VFeHByZXNzaW9uID0g
ZXh0cmEucGFyc2VFeHByZXNzaW9uOwotICAgICAgICAgICAgcGFyc2VGb3JWYXJpYWJsZURlY2xh
cmF0aW9uID0gZXh0cmEucGFyc2VGb3JWYXJpYWJsZURlY2xhcmF0aW9uOwotICAgICAgICAgICAg
cGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uID0gZXh0cmEucGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9u
OwotICAgICAgICAgICAgcGFyc2VGdW5jdGlvbkV4cHJlc3Npb24gPSBleHRyYS5wYXJzZUZ1bmN0
aW9uRXhwcmVzc2lvbjsKLSAgICAgICAgICAgIHBhcnNlR2xvYiA9IGV4dHJhLnBhcnNlR2xvYjsK
LSAgICAgICAgICAgIHBhcnNlSW1wb3J0RGVjbGFyYXRpb24gPSBleHRyYS5wYXJzZUltcG9ydERl
Y2xhcmF0aW9uOwotICAgICAgICAgICAgcGFyc2VJbXBvcnRTcGVjaWZpZXIgPSBleHRyYS5wYXJz
ZUltcG9ydFNwZWNpZmllcjsKLSAgICAgICAgICAgIHBhcnNlR3JvdXBFeHByZXNzaW9uID0gZXh0
cmEucGFyc2VHcm91cEV4cHJlc3Npb247Ci0gICAgICAgICAgICBwYXJzZUxlZnRIYW5kU2lkZUV4
cHJlc3Npb24gPSBleHRyYS5wYXJzZUxlZnRIYW5kU2lkZUV4cHJlc3Npb247Ci0gICAgICAgICAg
ICBwYXJzZUxlZnRIYW5kU2lkZUV4cHJlc3Npb25BbGxvd0NhbGwgPSBleHRyYS5wYXJzZUxlZnRI
YW5kU2lkZUV4cHJlc3Npb25BbGxvd0NhbGw7Ci0gICAgICAgICAgICBwYXJzZU1vZHVsZURlY2xh
cmF0aW9uID0gZXh0cmEucGFyc2VNb2R1bGVEZWNsYXJhdGlvbjsKLSAgICAgICAgICAgIHBhcnNl
TW9kdWxlQmxvY2sgPSBleHRyYS5wYXJzZU1vZHVsZUJsb2NrOwotICAgICAgICAgICAgcGFyc2VO
ZXdFeHByZXNzaW9uID0gZXh0cmEucGFyc2VOZXdFeHByZXNzaW9uOwotICAgICAgICAgICAgcGFy
c2VOb25Db21wdXRlZFByb3BlcnR5ID0gZXh0cmEucGFyc2VOb25Db21wdXRlZFByb3BlcnR5Owot
ICAgICAgICAgICAgcGFyc2VPYmplY3RQcm9wZXJ0eSA9IGV4dHJhLnBhcnNlT2JqZWN0UHJvcGVy
dHk7Ci0gICAgICAgICAgICBwYXJzZU9iamVjdFByb3BlcnR5S2V5ID0gZXh0cmEucGFyc2VPYmpl
Y3RQcm9wZXJ0eUtleTsKLSAgICAgICAgICAgIHBhcnNlUGF0aCA9IGV4dHJhLnBhcnNlUGF0aDsK
LSAgICAgICAgICAgIHBhcnNlUG9zdGZpeEV4cHJlc3Npb24gPSBleHRyYS5wYXJzZVBvc3RmaXhF
eHByZXNzaW9uOwotICAgICAgICAgICAgcGFyc2VQcmltYXJ5RXhwcmVzc2lvbiA9IGV4dHJhLnBh
cnNlUHJpbWFyeUV4cHJlc3Npb247Ci0gICAgICAgICAgICBwYXJzZVByb2dyYW0gPSBleHRyYS5w
YXJzZVByb2dyYW07Ci0gICAgICAgICAgICBwYXJzZVByb3BlcnR5RnVuY3Rpb24gPSBleHRyYS5w
YXJzZVByb3BlcnR5RnVuY3Rpb247Ci0gICAgICAgICAgICBwYXJzZVRlbXBsYXRlRWxlbWVudCA9
IGV4dHJhLnBhcnNlVGVtcGxhdGVFbGVtZW50OwotICAgICAgICAgICAgcGFyc2VUZW1wbGF0ZUxp
dGVyYWwgPSBleHRyYS5wYXJzZVRlbXBsYXRlTGl0ZXJhbDsKLSAgICAgICAgICAgIHBhcnNlU3By
ZWFkT3JBc3NpZ25tZW50RXhwcmVzc2lvbiA9IGV4dHJhLnBhcnNlU3ByZWFkT3JBc3NpZ25tZW50
RXhwcmVzc2lvbjsKLSAgICAgICAgICAgIHBhcnNlU3RhdGVtZW50ID0gZXh0cmEucGFyc2VTdGF0
ZW1lbnQ7Ci0gICAgICAgICAgICBwYXJzZVN3aXRjaENhc2UgPSBleHRyYS5wYXJzZVN3aXRjaENh
c2U7Ci0gICAgICAgICAgICBwYXJzZVVuYXJ5RXhwcmVzc2lvbiA9IGV4dHJhLnBhcnNlVW5hcnlF
eHByZXNzaW9uOwotICAgICAgICAgICAgcGFyc2VWYXJpYWJsZURlY2xhcmF0aW9uID0gZXh0cmEu
cGFyc2VWYXJpYWJsZURlY2xhcmF0aW9uOwotICAgICAgICAgICAgcGFyc2VWYXJpYWJsZUlkZW50
aWZpZXIgPSBleHRyYS5wYXJzZVZhcmlhYmxlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIHBhcnNl
TWV0aG9kRGVmaW5pdGlvbiA9IGV4dHJhLnBhcnNlTWV0aG9kRGVmaW5pdGlvbjsKLSAgICAgICAg
ICAgIHBhcnNlQ2xhc3NEZWNsYXJhdGlvbiA9IGV4dHJhLnBhcnNlQ2xhc3NEZWNsYXJhdGlvbjsK
LSAgICAgICAgICAgIHBhcnNlQ2xhc3NFeHByZXNzaW9uID0gZXh0cmEucGFyc2VDbGFzc0V4cHJl
c3Npb247Ci0gICAgICAgICAgICBwYXJzZUNsYXNzQm9keSA9IGV4dHJhLnBhcnNlQ2xhc3NCb2R5
OwotICAgICAgICAgICAgcGFyc2VYSlNJZGVudGlmaWVyID0gZXh0cmEucGFyc2VYSlNJZGVudGlm
aWVyOwotICAgICAgICAgICAgcGFyc2VYSlNDaGlsZCA9IGV4dHJhLnBhcnNlWEpTQ2hpbGQ7Ci0g
ICAgICAgICAgICBwYXJzZVhKU0F0dHJpYnV0ZSA9IGV4dHJhLnBhcnNlWEpTQXR0cmlidXRlOwot
ICAgICAgICAgICAgcGFyc2VYSlNBdHRyaWJ1dGVWYWx1ZSA9IGV4dHJhLnBhcnNlWEpTQXR0cmli
dXRlVmFsdWU7Ci0gICAgICAgICAgICBwYXJzZVhKU0V4cHJlc3Npb25Db250YWluZXIgPSBleHRy
YS5wYXJzZVhKU0V4cHJlc3Npb25Db250YWluZXI7Ci0gICAgICAgICAgICBwYXJzZVhKU0VtcHR5
RXhwcmVzc2lvbiA9IGV4dHJhLnBhcnNlWEpTRW1wdHlFeHByZXNzaW9uOwotICAgICAgICAgICAg
cGFyc2VYSlNFbGVtZW50ID0gZXh0cmEucGFyc2VYSlNFbGVtZW50OwotICAgICAgICAgICAgcGFy
c2VYSlNDbG9zaW5nRWxlbWVudCA9IGV4dHJhLnBhcnNlWEpTQ2xvc2luZ0VsZW1lbnQ7Ci0gICAg
ICAgICAgICBwYXJzZVhKU09wZW5pbmdFbGVtZW50ID0gZXh0cmEucGFyc2VYSlNPcGVuaW5nRWxl
bWVudDsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICh0eXBlb2YgZXh0cmEuc2NhblJlZ0V4cCA9
PT0gJ2Z1bmN0aW9uJykgewotICAgICAgICAgICAgYWR2YW5jZSA9IGV4dHJhLmFkdmFuY2U7Ci0g
ICAgICAgICAgICBzY2FuUmVnRXhwID0gZXh0cmEuc2NhblJlZ0V4cDsKLSAgICAgICAgfQotICAg
IH0KLQotICAgIC8vIFRoaXMgaXMgdXNlZCB0byBtb2RpZnkgdGhlIGRlbGVnYXRlLgotCi0gICAg
ZnVuY3Rpb24gZXh0ZW5kKG9iamVjdCwgcHJvcGVydGllcykgewotICAgICAgICB2YXIgZW50cnks
IHJlc3VsdCA9IHt9OwotCi0gICAgICAgIGZvciAoZW50cnkgaW4gb2JqZWN0KSB7Ci0gICAgICAg
ICAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KGVudHJ5KSkgewotICAgICAgICAgICAgICAg
IHJlc3VsdFtlbnRyeV0gPSBvYmplY3RbZW50cnldOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0KLSAgICAgICAgZm9yIChlbnRyeSBpbiBwcm9wZXJ0aWVzKSB7Ci0gICAgICAgICAgICBpZiAo
cHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShlbnRyeSkpIHsKLSAgICAgICAgICAgICAgICByZXN1
bHRbZW50cnldID0gcHJvcGVydGllc1tlbnRyeV07Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHRva2VuaXpl
KGNvZGUsIG9wdGlvbnMpIHsKLSAgICAgICAgdmFyIHRvU3RyaW5nLAotICAgICAgICAgICAgdG9r
ZW4sCi0gICAgICAgICAgICB0b2tlbnM7Ci0KLSAgICAgICAgdG9TdHJpbmcgPSBTdHJpbmc7Ci0g
ICAgICAgIGlmICh0eXBlb2YgY29kZSAhPT0gJ3N0cmluZycgJiYgIShjb2RlIGluc3RhbmNlb2Yg
U3RyaW5nKSkgewotICAgICAgICAgICAgY29kZSA9IHRvU3RyaW5nKGNvZGUpOwotICAgICAgICB9
Ci0KLSAgICAgICAgZGVsZWdhdGUgPSBTeW50YXhUcmVlRGVsZWdhdGU7Ci0gICAgICAgIHNvdXJj
ZSA9IGNvZGU7Ci0gICAgICAgIGluZGV4ID0gMDsKLSAgICAgICAgbGluZU51bWJlciA9IChzb3Vy
Y2UubGVuZ3RoID4gMCkgPyAxIDogMDsKLSAgICAgICAgbGluZVN0YXJ0ID0gMDsKLSAgICAgICAg
bGVuZ3RoID0gc291cmNlLmxlbmd0aDsKLSAgICAgICAgbG9va2FoZWFkID0gbnVsbDsKLSAgICAg
ICAgc3RhdGUgPSB7Ci0gICAgICAgICAgICBhbGxvd0luOiB0cnVlLAotICAgICAgICAgICAgbGFi
ZWxTZXQ6IHt9LAotICAgICAgICAgICAgaW5GdW5jdGlvbkJvZHk6IGZhbHNlLAotICAgICAgICAg
ICAgaW5JdGVyYXRpb246IGZhbHNlLAotICAgICAgICAgICAgaW5Td2l0Y2g6IGZhbHNlCi0gICAg
ICAgIH07Ci0KLSAgICAgICAgZXh0cmEgPSB7fTsKLQotICAgICAgICAvLyBPcHRpb25zIG1hdGNo
aW5nLgotICAgICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKLQotICAgICAgICAvLyBPZiBj
b3Vyc2Ugd2UgY29sbGVjdCB0b2tlbnMgaGVyZS4KLSAgICAgICAgb3B0aW9ucy50b2tlbnMgPSB0
cnVlOwotICAgICAgICBleHRyYS50b2tlbnMgPSBbXTsKLSAgICAgICAgZXh0cmEudG9rZW5pemUg
PSB0cnVlOwotICAgICAgICAvLyBUaGUgZm9sbG93aW5nIHR3byBmaWVsZHMgYXJlIG5lY2Vzc2Fy
eSB0byBjb21wdXRlIHRoZSBSZWdleCB0b2tlbnMuCi0gICAgICAgIGV4dHJhLm9wZW5QYXJlblRv
a2VuID0gLTE7Ci0gICAgICAgIGV4dHJhLm9wZW5DdXJseVRva2VuID0gLTE7Ci0KLSAgICAgICAg
ZXh0cmEucmFuZ2UgPSAodHlwZW9mIG9wdGlvbnMucmFuZ2UgPT09ICdib29sZWFuJykgJiYgb3B0
aW9ucy5yYW5nZTsKLSAgICAgICAgZXh0cmEubG9jID0gKHR5cGVvZiBvcHRpb25zLmxvYyA9PT0g
J2Jvb2xlYW4nKSAmJiBvcHRpb25zLmxvYzsKLQotICAgICAgICBpZiAodHlwZW9mIG9wdGlvbnMu
Y29tbWVudCA9PT0gJ2Jvb2xlYW4nICYmIG9wdGlvbnMuY29tbWVudCkgewotICAgICAgICAgICAg
ZXh0cmEuY29tbWVudHMgPSBbXTsKLSAgICAgICAgfQotICAgICAgICBpZiAodHlwZW9mIG9wdGlv
bnMudG9sZXJhbnQgPT09ICdib29sZWFuJyAmJiBvcHRpb25zLnRvbGVyYW50KSB7Ci0gICAgICAg
ICAgICBleHRyYS5lcnJvcnMgPSBbXTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChsZW5ndGgg
PiAwKSB7Ci0gICAgICAgICAgICBpZiAodHlwZW9mIHNvdXJjZVswXSA9PT0gJ3VuZGVmaW5lZCcp
IHsKLSAgICAgICAgICAgICAgICAvLyBUcnkgZmlyc3QgdG8gY29udmVydCB0byBhIHN0cmluZy4g
VGhpcyBpcyBnb29kIGFzIGZhc3QgcGF0aAotICAgICAgICAgICAgICAgIC8vIGZvciBvbGQgSUUg
d2hpY2ggdW5kZXJzdGFuZHMgc3RyaW5nIGluZGV4aW5nIGZvciBzdHJpbmcKLSAgICAgICAgICAg
ICAgICAvLyBsaXRlcmFscyBvbmx5IGFuZCBub3QgZm9yIHN0cmluZyBvYmplY3QuCi0gICAgICAg
ICAgICAgICAgaWYgKGNvZGUgaW5zdGFuY2VvZiBTdHJpbmcpIHsKLSAgICAgICAgICAgICAgICAg
ICAgc291cmNlID0gY29kZS52YWx1ZU9mKCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgcGF0Y2goKTsKLQotICAgICAgICB0cnkgewotICAg
ICAgICAgICAgcGVlaygpOwotICAgICAgICAgICAgaWYgKGxvb2thaGVhZC50eXBlID09PSBUb2tl
bi5FT0YpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZXh0cmEudG9rZW5zOwotICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICB0b2tlbiA9IGxleCgpOwotICAgICAgICAgICAgd2hpbGUgKGxv
b2thaGVhZC50eXBlICE9PSBUb2tlbi5FT0YpIHsKLSAgICAgICAgICAgICAgICB0cnkgewotICAg
ICAgICAgICAgICAgICAgICB0b2tlbiA9IGxleCgpOwotICAgICAgICAgICAgICAgIH0gY2F0Y2gg
KGxleEVycm9yKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRva2VuID0gbG9va2FoZWFkOwotICAg
ICAgICAgICAgICAgICAgICBpZiAoZXh0cmEuZXJyb3JzKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBleHRyYS5lcnJvcnMucHVzaChsZXhFcnJvcik7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAvLyBXZSBoYXZlIHRvIGJyZWFrIG9uIHRoZSBmaXJzdCBlcnJvcgotICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gdG8gYXZvaWQgaW5maW5pdGUgbG9vcHMuCi0gICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHRocm93IGxleEVycm9yOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBmaWx0ZXJUb2tlbkxvY2F0
aW9uKCk7Ci0gICAgICAgICAgICB0b2tlbnMgPSBleHRyYS50b2tlbnM7Ci0gICAgICAgICAgICBp
ZiAodHlwZW9mIGV4dHJhLmNvbW1lbnRzICE9PSAndW5kZWZpbmVkJykgewotICAgICAgICAgICAg
ICAgIGZpbHRlckNvbW1lbnRMb2NhdGlvbigpOwotICAgICAgICAgICAgICAgIHRva2Vucy5jb21t
ZW50cyA9IGV4dHJhLmNvbW1lbnRzOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHR5
cGVvZiBleHRyYS5lcnJvcnMgIT09ICd1bmRlZmluZWQnKSB7Ci0gICAgICAgICAgICAgICAgdG9r
ZW5zLmVycm9ycyA9IGV4dHJhLmVycm9yczsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBjYXRj
aCAoZSkgewotICAgICAgICAgICAgdGhyb3cgZTsKLSAgICAgICAgfSBmaW5hbGx5IHsKLSAgICAg
ICAgICAgIHVucGF0Y2goKTsKLSAgICAgICAgICAgIGV4dHJhID0ge307Ci0gICAgICAgIH0KLSAg
ICAgICAgcmV0dXJuIHRva2VuczsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBwYXJzZShjb2RlLCBv
cHRpb25zKSB7Ci0gICAgICAgIHZhciBwcm9ncmFtLCB0b1N0cmluZzsKLQotICAgICAgICB0b1N0
cmluZyA9IFN0cmluZzsKLSAgICAgICAgaWYgKHR5cGVvZiBjb2RlICE9PSAnc3RyaW5nJyAmJiAh
KGNvZGUgaW5zdGFuY2VvZiBTdHJpbmcpKSB7Ci0gICAgICAgICAgICBjb2RlID0gdG9TdHJpbmco
Y29kZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBkZWxlZ2F0ZSA9IFN5bnRheFRyZWVEZWxlZ2F0
ZTsKLSAgICAgICAgc291cmNlID0gY29kZTsKLSAgICAgICAgaW5kZXggPSAwOwotICAgICAgICBs
aW5lTnVtYmVyID0gKHNvdXJjZS5sZW5ndGggPiAwKSA/IDEgOiAwOwotICAgICAgICBsaW5lU3Rh
cnQgPSAwOwotICAgICAgICBsZW5ndGggPSBzb3VyY2UubGVuZ3RoOwotICAgICAgICBsb29rYWhl
YWQgPSBudWxsOwotICAgICAgICBzdGF0ZSA9IHsKLSAgICAgICAgICAgIGFsbG93SW46IHRydWUs
Ci0gICAgICAgICAgICBsYWJlbFNldDoge30sCi0gICAgICAgICAgICBwYXJlbnRoZXNpemVkQ291
bnQ6IDAsCi0gICAgICAgICAgICBpbkZ1bmN0aW9uQm9keTogZmFsc2UsCi0gICAgICAgICAgICBp
bkl0ZXJhdGlvbjogZmFsc2UsCi0gICAgICAgICAgICBpblN3aXRjaDogZmFsc2UsCi0gICAgICAg
ICAgICB5aWVsZEFsbG93ZWQ6IGZhbHNlLAotICAgICAgICAgICAgeWllbGRGb3VuZDogZmFsc2UK
LSAgICAgICAgfTsKLQotICAgICAgICBleHRyYSA9IHt9OwotICAgICAgICBpZiAodHlwZW9mIG9w
dGlvbnMgIT09ICd1bmRlZmluZWQnKSB7Ci0gICAgICAgICAgICBleHRyYS5yYW5nZSA9ICh0eXBl
b2Ygb3B0aW9ucy5yYW5nZSA9PT0gJ2Jvb2xlYW4nKSAmJiBvcHRpb25zLnJhbmdlOwotICAgICAg
ICAgICAgZXh0cmEubG9jID0gKHR5cGVvZiBvcHRpb25zLmxvYyA9PT0gJ2Jvb2xlYW4nKSAmJiBv
cHRpb25zLmxvYzsKLQotICAgICAgICAgICAgaWYgKGV4dHJhLmxvYyAmJiBvcHRpb25zLnNvdXJj
ZSAhPT0gbnVsbCAmJiBvcHRpb25zLnNvdXJjZSAhPT0gdW5kZWZpbmVkKSB7Ci0gICAgICAgICAg
ICAgICAgZGVsZWdhdGUgPSBleHRlbmQoZGVsZWdhdGUsIHsKLSAgICAgICAgICAgICAgICAgICAg
J3Bvc3RQcm9jZXNzJzogZnVuY3Rpb24gKG5vZGUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IG5vZGUubG9jLnNvdXJjZSA9IHRvU3RyaW5nKG9wdGlvbnMuc291cmNlKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBub2RlOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICh0eXBlb2Ygb3B0
aW9ucy50b2tlbnMgPT09ICdib29sZWFuJyAmJiBvcHRpb25zLnRva2VucykgewotICAgICAgICAg
ICAgICAgIGV4dHJhLnRva2VucyA9IFtdOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYg
KHR5cGVvZiBvcHRpb25zLmNvbW1lbnQgPT09ICdib29sZWFuJyAmJiBvcHRpb25zLmNvbW1lbnQp
IHsKLSAgICAgICAgICAgICAgICBleHRyYS5jb21tZW50cyA9IFtdOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLnRvbGVyYW50ID09PSAnYm9vbGVhbicgJiYg
b3B0aW9ucy50b2xlcmFudCkgewotICAgICAgICAgICAgICAgIGV4dHJhLmVycm9ycyA9IFtdOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGxlbmd0aCA+IDApIHsKLSAg
ICAgICAgICAgIGlmICh0eXBlb2Ygc291cmNlWzBdID09PSAndW5kZWZpbmVkJykgewotICAgICAg
ICAgICAgICAgIC8vIFRyeSBmaXJzdCB0byBjb252ZXJ0IHRvIGEgc3RyaW5nLiBUaGlzIGlzIGdv
b2QgYXMgZmFzdCBwYXRoCi0gICAgICAgICAgICAgICAgLy8gZm9yIG9sZCBJRSB3aGljaCB1bmRl
cnN0YW5kcyBzdHJpbmcgaW5kZXhpbmcgZm9yIHN0cmluZwotICAgICAgICAgICAgICAgIC8vIGxp
dGVyYWxzIG9ubHkgYW5kIG5vdCBmb3Igc3RyaW5nIG9iamVjdC4KLSAgICAgICAgICAgICAgICBp
ZiAoY29kZSBpbnN0YW5jZW9mIFN0cmluZykgewotICAgICAgICAgICAgICAgICAgICBzb3VyY2Ug
PSBjb2RlLnZhbHVlT2YoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLQotICAgICAgICBwYXRjaCgpOwotICAgICAgICB0cnkgewotICAgICAgICAgICAgcHJv
Z3JhbSA9IHBhcnNlUHJvZ3JhbSgpOwotICAgICAgICAgICAgaWYgKHR5cGVvZiBleHRyYS5jb21t
ZW50cyAhPT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAgICAgICAgICBmaWx0ZXJDb21tZW50TG9j
YXRpb24oKTsKLSAgICAgICAgICAgICAgICBwcm9ncmFtLmNvbW1lbnRzID0gZXh0cmEuY29tbWVu
dHM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAodHlwZW9mIGV4dHJhLnRva2VucyAh
PT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAgICAgICAgICBmaWx0ZXJUb2tlbkxvY2F0aW9uKCk7
Ci0gICAgICAgICAgICAgICAgcHJvZ3JhbS50b2tlbnMgPSBleHRyYS50b2tlbnM7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBpZiAodHlwZW9mIGV4dHJhLmVycm9ycyAhPT0gJ3VuZGVmaW5l
ZCcpIHsKLSAgICAgICAgICAgICAgICBwcm9ncmFtLmVycm9ycyA9IGV4dHJhLmVycm9yczsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChleHRyYS5yYW5nZSB8fCBleHRyYS5sb2MpIHsK
LSAgICAgICAgICAgICAgICBwcm9ncmFtLmJvZHkgPSBmaWx0ZXJHcm91cChwcm9ncmFtLmJvZHkp
OwotICAgICAgICAgICAgfQotICAgICAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgICAgICB0aHJv
dyBlOwotICAgICAgICB9IGZpbmFsbHkgewotICAgICAgICAgICAgdW5wYXRjaCgpOwotICAgICAg
ICAgICAgZXh0cmEgPSB7fTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBwcm9ncmFtOwot
ICAgIH0KLQotICAgIC8vIFN5bmMgd2l0aCBwYWNrYWdlLmpzb24gYW5kIGNvbXBvbmVudC5qc29u
LgotICAgIGV4cG9ydHMudmVyc2lvbiA9ICcxLjEuMC1kZXYtaGFybW9ueSc7Ci0KLSAgICBleHBv
cnRzLnRva2VuaXplID0gdG9rZW5pemU7Ci0KLSAgICBleHBvcnRzLnBhcnNlID0gcGFyc2U7Ci0K
LSAgICAvLyBEZWVwIGNvcHkuCi0gICAgZXhwb3J0cy5TeW50YXggPSAoZnVuY3Rpb24gKCkgewot
ICAgICAgICB2YXIgbmFtZSwgdHlwZXMgPSB7fTsKLQotICAgICAgICBpZiAodHlwZW9mIE9iamVj
dC5jcmVhdGUgPT09ICdmdW5jdGlvbicpIHsKLSAgICAgICAgICAgIHR5cGVzID0gT2JqZWN0LmNy
ZWF0ZShudWxsKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZvciAobmFtZSBpbiBTeW50YXgpIHsK
LSAgICAgICAgICAgIGlmIChTeW50YXguaGFzT3duUHJvcGVydHkobmFtZSkpIHsKLSAgICAgICAg
ICAgICAgICB0eXBlc1tuYW1lXSA9IFN5bnRheFtuYW1lXTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotCi0gICAgICAgIGlmICh0eXBlb2YgT2JqZWN0LmZyZWV6ZSA9PT0gJ2Z1bmN0aW9uJykg
ewotICAgICAgICAgICAgT2JqZWN0LmZyZWV6ZSh0eXBlcyk7Ci0gICAgICAgIH0KLQotICAgICAg
ICByZXR1cm4gdHlwZXM7Ci0gICAgfSgpKTsKLQotfSkpOwotLyogdmltOiBzZXQgc3c9NCB0cz00
IGV0IHR3PTgwIDogKi8KLQotfSkoKQotfSx7fV0sNTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUs
ZXhwb3J0cyl7Ci0vKgotICogQ29weXJpZ2h0IDIwMDktMjAxMSBNb3ppbGxhIEZvdW5kYXRpb24g
YW5kIGNvbnRyaWJ1dG9ycwotICogTGljZW5zZWQgdW5kZXIgdGhlIE5ldyBCU0QgbGljZW5zZS4g
U2VlIExJQ0VOU0UudHh0IG9yOgotICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JT
RC0zLUNsYXVzZQotICovCi1leHBvcnRzLlNvdXJjZU1hcEdlbmVyYXRvciA9IHJlcXVpcmUoJy4v
c291cmNlLW1hcC9zb3VyY2UtbWFwLWdlbmVyYXRvcicpLlNvdXJjZU1hcEdlbmVyYXRvcjsKLWV4
cG9ydHMuU291cmNlTWFwQ29uc3VtZXIgPSByZXF1aXJlKCcuL3NvdXJjZS1tYXAvc291cmNlLW1h
cC1jb25zdW1lcicpLlNvdXJjZU1hcENvbnN1bWVyOwotZXhwb3J0cy5Tb3VyY2VOb2RlID0gcmVx
dWlyZSgnLi9zb3VyY2UtbWFwL3NvdXJjZS1ub2RlJykuU291cmNlTm9kZTsKLQotfSx7Ii4vc291
cmNlLW1hcC9zb3VyY2UtbWFwLWNvbnN1bWVyIjoxMCwiLi9zb3VyY2UtbWFwL3NvdXJjZS1tYXAt
Z2VuZXJhdG9yIjoxMSwiLi9zb3VyY2UtbWFwL3NvdXJjZS1ub2RlIjoxMn1dLDY6W2Z1bmN0aW9u
KHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewotLyogLSotIE1vZGU6IGpzOyBqcy1pbmRlbnQtbGV2
ZWw6IDI7IC0qLSAqLwotLyoKLSAqIENvcHlyaWdodCAyMDExIE1vemlsbGEgRm91bmRhdGlvbiBh
bmQgY29udHJpYnV0b3JzCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBT
ZWUgTElDRU5TRSBvcjoKLSAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1D
bGF1c2UKLSAqLwotaWYgKHR5cGVvZiBkZWZpbmUgIT09ICdmdW5jdGlvbicpIHsKLSAgICB2YXIg
ZGVmaW5lID0gcmVxdWlyZSgnYW1kZWZpbmUnKShtb2R1bGUsIHJlcXVpcmUpOwotfQotZGVmaW5l
KGZ1bmN0aW9uIChyZXF1aXJlLCBleHBvcnRzLCBtb2R1bGUpIHsKLQotICB2YXIgdXRpbCA9IHJl
cXVpcmUoJy4vdXRpbCcpOwotCi0gIC8qKgotICAgKiBBIGRhdGEgc3RydWN0dXJlIHdoaWNoIGlz
IGEgY29tYmluYXRpb24gb2YgYW4gYXJyYXkgYW5kIGEgc2V0LiBBZGRpbmcgYSBuZXcKLSAgICog
bWVtYmVyIGlzIE8oMSksIHRlc3RpbmcgZm9yIG1lbWJlcnNoaXAgaXMgTygxKSwgYW5kIGZpbmRp
bmcgdGhlIGluZGV4IG9mIGFuCi0gICAqIGVsZW1lbnQgaXMgTygxKS4gUmVtb3ZpbmcgZWxlbWVu
dHMgZnJvbSB0aGUgc2V0IGlzIG5vdCBzdXBwb3J0ZWQuIE9ubHkKLSAgICogc3RyaW5ncyBhcmUg
c3VwcG9ydGVkIGZvciBtZW1iZXJzaGlwLgotICAgKi8KLSAgZnVuY3Rpb24gQXJyYXlTZXQoKSB7
Ci0gICAgdGhpcy5fYXJyYXkgPSBbXTsKLSAgICB0aGlzLl9zZXQgPSB7fTsKLSAgfQotCi0gIC8q
KgotICAgKiBTdGF0aWMgbWV0aG9kIGZvciBjcmVhdGluZyBBcnJheVNldCBpbnN0YW5jZXMgZnJv
bSBhbiBleGlzdGluZyBhcnJheS4KLSAgICovCi0gIEFycmF5U2V0LmZyb21BcnJheSA9IGZ1bmN0
aW9uIEFycmF5U2V0X2Zyb21BcnJheShhQXJyYXkpIHsKLSAgICB2YXIgc2V0ID0gbmV3IEFycmF5
U2V0KCk7Ci0gICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGFBcnJheS5sZW5ndGg7IGkgPCBsZW47
IGkrKykgewotICAgICAgc2V0LmFkZChhQXJyYXlbaV0pOwotICAgIH0KLSAgICByZXR1cm4gc2V0
OwotICB9OwotCi0gIC8qKgotICAgKiBBZGQgdGhlIGdpdmVuIHN0cmluZyB0byB0aGlzIHNldC4K
LSAgICoKLSAgICogQHBhcmFtIFN0cmluZyBhU3RyCi0gICAqLwotICBBcnJheVNldC5wcm90b3R5
cGUuYWRkID0gZnVuY3Rpb24gQXJyYXlTZXRfYWRkKGFTdHIpIHsKLSAgICBpZiAodGhpcy5oYXMo
YVN0cikpIHsKLSAgICAgIC8vIEFscmVhZHkgYSBtZW1iZXI7IG5vdGhpbmcgdG8gZG8uCi0gICAg
ICByZXR1cm47Ci0gICAgfQotICAgIHZhciBpZHggPSB0aGlzLl9hcnJheS5sZW5ndGg7Ci0gICAg
dGhpcy5fYXJyYXkucHVzaChhU3RyKTsKLSAgICB0aGlzLl9zZXRbdXRpbC50b1NldFN0cmluZyhh
U3RyKV0gPSBpZHg7Ci0gIH07Ci0KLSAgLyoqCi0gICAqIElzIHRoZSBnaXZlbiBzdHJpbmcgYSBt
ZW1iZXIgb2YgdGhpcyBzZXQ/Ci0gICAqCi0gICAqIEBwYXJhbSBTdHJpbmcgYVN0cgotICAgKi8K
LSAgQXJyYXlTZXQucHJvdG90eXBlLmhhcyA9IGZ1bmN0aW9uIEFycmF5U2V0X2hhcyhhU3RyKSB7
Ci0gICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLl9z
ZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGls
LnRvU2V0U3RyaW5nKGFTdHIpKTsKLSAgfTsKLQotICAvKioKLSAgICogV2hhdCBpcyB0aGUgaW5k
ZXggb2YgdGhlIGdpdmVuIHN0cmluZyBpbiB0aGUgYXJyYXk/Ci0gICAqCi0gICAqIEBwYXJhbSBT
dHJpbmcgYVN0cgotICAgKi8KLSAgQXJyYXlTZXQucHJvdG90eXBlLmluZGV4T2YgPSBmdW5jdGlv
biBBcnJheVNldF9pbmRleE9mKGFTdHIpIHsKLSAgICBpZiAodGhpcy5oYXMoYVN0cikpIHsKLSAg
ICAgIHJldHVybiB0aGlzLl9zZXRbdXRpbC50b1NldFN0cmluZyhhU3RyKV07Ci0gICAgfQotICAg
IHRocm93IG5ldyBFcnJvcignIicgKyBhU3RyICsgJyIgaXMgbm90IGluIHRoZSBzZXQuJyk7Ci0g
IH07Ci0KLSAgLyoqCi0gICAqIFdoYXQgaXMgdGhlIGVsZW1lbnQgYXQgdGhlIGdpdmVuIGluZGV4
PwotICAgKgotICAgKiBAcGFyYW0gTnVtYmVyIGFJZHgKLSAgICovCi0gIEFycmF5U2V0LnByb3Rv
dHlwZS5hdCA9IGZ1bmN0aW9uIEFycmF5U2V0X2F0KGFJZHgpIHsKLSAgICBpZiAoYUlkeCA+PSAw
ICYmIGFJZHggPCB0aGlzLl9hcnJheS5sZW5ndGgpIHsKLSAgICAgIHJldHVybiB0aGlzLl9hcnJh
eVthSWR4XTsKLSAgICB9Ci0gICAgdGhyb3cgbmV3IEVycm9yKCdObyBlbGVtZW50IGluZGV4ZWQg
YnkgJyArIGFJZHgpOwotICB9OwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBhcnJheSByZXBy
ZXNlbnRhdGlvbiBvZiB0aGlzIHNldCAod2hpY2ggaGFzIHRoZSBwcm9wZXIgaW5kaWNlcwotICAg
KiBpbmRpY2F0ZWQgYnkgaW5kZXhPZikuIE5vdGUgdGhhdCB0aGlzIGlzIGEgY29weSBvZiB0aGUg
aW50ZXJuYWwgYXJyYXkgdXNlZAotICAgKiBmb3Igc3RvcmluZyB0aGUgbWVtYmVycyBzbyB0aGF0
IG5vIG9uZSBjYW4gbWVzcyB3aXRoIGludGVybmFsIHN0YXRlLgotICAgKi8KLSAgQXJyYXlTZXQu
cHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbiBBcnJheVNldF90b0FycmF5KCkgewotICAgIHJl
dHVybiB0aGlzLl9hcnJheS5zbGljZSgpOwotICB9OwotCi0gIGV4cG9ydHMuQXJyYXlTZXQgPSBB
cnJheVNldDsKLQotfSk7Ci0KLX0seyIuL3V0aWwiOjEzLCJhbWRlZmluZSI6MTR9XSw3OltmdW5j
dGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKLS8qIC0qLSBNb2RlOiBqczsganMtaW5kZW50
LWxldmVsOiAyOyAtKi0gKi8KLS8qCi0gKiBDb3B5cmlnaHQgMjAxMSBNb3ppbGxhIEZvdW5kYXRp
b24gYW5kIGNvbnRyaWJ1dG9ycwotICogTGljZW5zZWQgdW5kZXIgdGhlIE5ldyBCU0QgbGljZW5z
ZS4gU2VlIExJQ0VOU0Ugb3I6Ci0gKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNE
LTMtQ2xhdXNlCi0gKgotICogQmFzZWQgb24gdGhlIEJhc2UgNjQgVkxRIGltcGxlbWVudGF0aW9u
IGluIENsb3N1cmUgQ29tcGlsZXI6Ci0gKiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nsb3N1
cmUtY29tcGlsZXIvc291cmNlL2Jyb3dzZS90cnVuay9zcmMvY29tL2dvb2dsZS9kZWJ1Z2dpbmcv
c291cmNlbWFwL0Jhc2U2NFZMUS5qYXZhCi0gKgotICogQ29weXJpZ2h0IDIwMTEgVGhlIENsb3N1
cmUgQ29tcGlsZXIgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCi0gKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZwotICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCi0gKiAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKiAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi0gKiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0g
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi1pZiAodHlwZW9mIGRlZmlu
ZSAhPT0gJ2Z1bmN0aW9uJykgewotICAgIHZhciBkZWZpbmUgPSByZXF1aXJlKCdhbWRlZmluZScp
KG1vZHVsZSwgcmVxdWlyZSk7Ci19Ci1kZWZpbmUoZnVuY3Rpb24gKHJlcXVpcmUsIGV4cG9ydHMs
IG1vZHVsZSkgewotCi0gIHZhciBiYXNlNjQgPSByZXF1aXJlKCcuL2Jhc2U2NCcpOwotCi0gIC8v
IEEgc2luZ2xlIGJhc2UgNjQgZGlnaXQgY2FuIGNvbnRhaW4gNiBiaXRzIG9mIGRhdGEuIEZvciB0
aGUgYmFzZSA2NCB2YXJpYWJsZQotICAvLyBsZW5ndGggcXVhbnRpdGllcyB3ZSB1c2UgaW4gdGhl
IHNvdXJjZSBtYXAgc3BlYywgdGhlIGZpcnN0IGJpdCBpcyB0aGUgc2lnbiwKLSAgLy8gdGhlIG5l
eHQgZm91ciBiaXRzIGFyZSB0aGUgYWN0dWFsIHZhbHVlLCBhbmQgdGhlIDZ0aCBiaXQgaXMgdGhl
Ci0gIC8vIGNvbnRpbnVhdGlvbiBiaXQuIFRoZSBjb250aW51YXRpb24gYml0IHRlbGxzIHVzIHdo
ZXRoZXIgdGhlcmUgYXJlIG1vcmUKLSAgLy8gZGlnaXRzIGluIHRoaXMgdmFsdWUgZm9sbG93aW5n
IHRoaXMgZGlnaXQuCi0gIC8vCi0gIC8vICAgQ29udGludWF0aW9uCi0gIC8vICAgfCAgICBTaWdu
Ci0gIC8vICAgfCAgICB8Ci0gIC8vICAgViAgICBWCi0gIC8vICAgMTAxMDExCi0KLSAgdmFyIFZM
UV9CQVNFX1NISUZUID0gNTsKLQotICAvLyBiaW5hcnk6IDEwMDAwMAotICB2YXIgVkxRX0JBU0Ug
PSAxIDw8IFZMUV9CQVNFX1NISUZUOwotCi0gIC8vIGJpbmFyeTogMDExMTExCi0gIHZhciBWTFFf
QkFTRV9NQVNLID0gVkxRX0JBU0UgLSAxOwotCi0gIC8vIGJpbmFyeTogMTAwMDAwCi0gIHZhciBW
TFFfQ09OVElOVUFUSU9OX0JJVCA9IFZMUV9CQVNFOwotCi0gIC8qKgotICAgKiBDb252ZXJ0cyBm
cm9tIGEgdHdvLWNvbXBsZW1lbnQgdmFsdWUgdG8gYSB2YWx1ZSB3aGVyZSB0aGUgc2lnbiBiaXQg
aXMKLSAgICogaXMgcGxhY2VkIGluIHRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXQuICBGb3IgZXhh
bXBsZSwgYXMgZGVjaW1hbHM6Ci0gICAqICAgMSBiZWNvbWVzIDIgKDEwIGJpbmFyeSksIC0xIGJl
Y29tZXMgMyAoMTEgYmluYXJ5KQotICAgKiAgIDIgYmVjb21lcyA0ICgxMDAgYmluYXJ5KSwgLTIg
YmVjb21lcyA1ICgxMDEgYmluYXJ5KQotICAgKi8KLSAgZnVuY3Rpb24gdG9WTFFTaWduZWQoYVZh
bHVlKSB7Ci0gICAgcmV0dXJuIGFWYWx1ZSA8IDAKLSAgICAgID8gKCgtYVZhbHVlKSA8PCAxKSAr
IDEKLSAgICAgIDogKGFWYWx1ZSA8PCAxKSArIDA7Ci0gIH0KLQotICAvKioKLSAgICogQ29udmVy
dHMgdG8gYSB0d28tY29tcGxlbWVudCB2YWx1ZSBmcm9tIGEgdmFsdWUgd2hlcmUgdGhlIHNpZ24g
Yml0IGlzCi0gICAqIGlzIHBsYWNlZCBpbiB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0LiAgRm9y
IGV4YW1wbGUsIGFzIGRlY2ltYWxzOgotICAgKiAgIDIgKDEwIGJpbmFyeSkgYmVjb21lcyAxLCAz
ICgxMSBiaW5hcnkpIGJlY29tZXMgLTEKLSAgICogICA0ICgxMDAgYmluYXJ5KSBiZWNvbWVzIDIs
IDUgKDEwMSBiaW5hcnkpIGJlY29tZXMgLTIKLSAgICovCi0gIGZ1bmN0aW9uIGZyb21WTFFTaWdu
ZWQoYVZhbHVlKSB7Ci0gICAgdmFyIGlzTmVnYXRpdmUgPSAoYVZhbHVlICYgMSkgPT09IDE7Ci0g
ICAgdmFyIHNoaWZ0ZWQgPSBhVmFsdWUgPj4gMTsKLSAgICByZXR1cm4gaXNOZWdhdGl2ZQotICAg
ICAgPyAtc2hpZnRlZAotICAgICAgOiBzaGlmdGVkOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVy
bnMgdGhlIGJhc2UgNjQgVkxRIGVuY29kZWQgdmFsdWUuCi0gICAqLwotICBleHBvcnRzLmVuY29k
ZSA9IGZ1bmN0aW9uIGJhc2U2NFZMUV9lbmNvZGUoYVZhbHVlKSB7Ci0gICAgdmFyIGVuY29kZWQg
PSAiIjsKLSAgICB2YXIgZGlnaXQ7Ci0KLSAgICB2YXIgdmxxID0gdG9WTFFTaWduZWQoYVZhbHVl
KTsKLQotICAgIGRvIHsKLSAgICAgIGRpZ2l0ID0gdmxxICYgVkxRX0JBU0VfTUFTSzsKLSAgICAg
IHZscSA+Pj49IFZMUV9CQVNFX1NISUZUOwotICAgICAgaWYgKHZscSA+IDApIHsKLSAgICAgICAg
Ly8gVGhlcmUgYXJlIHN0aWxsIG1vcmUgZGlnaXRzIGluIHRoaXMgdmFsdWUsIHNvIHdlIG11c3Qg
bWFrZSBzdXJlIHRoZQotICAgICAgICAvLyBjb250aW51YXRpb24gYml0IGlzIG1hcmtlZC4KLSAg
ICAgICAgZGlnaXQgfD0gVkxRX0NPTlRJTlVBVElPTl9CSVQ7Ci0gICAgICB9Ci0gICAgICBlbmNv
ZGVkICs9IGJhc2U2NC5lbmNvZGUoZGlnaXQpOwotICAgIH0gd2hpbGUgKHZscSA+IDApOwotCi0g
ICAgcmV0dXJuIGVuY29kZWQ7Ci0gIH07Ci0KLSAgLyoqCi0gICAqIERlY29kZXMgdGhlIG5leHQg
YmFzZSA2NCBWTFEgdmFsdWUgZnJvbSB0aGUgZ2l2ZW4gc3RyaW5nIGFuZCByZXR1cm5zIHRoZQot
ICAgKiB2YWx1ZSBhbmQgdGhlIHJlc3Qgb2YgdGhlIHN0cmluZy4KLSAgICovCi0gIGV4cG9ydHMu
ZGVjb2RlID0gZnVuY3Rpb24gYmFzZTY0VkxRX2RlY29kZShhU3RyKSB7Ci0gICAgdmFyIGkgPSAw
OwotICAgIHZhciBzdHJMZW4gPSBhU3RyLmxlbmd0aDsKLSAgICB2YXIgcmVzdWx0ID0gMDsKLSAg
ICB2YXIgc2hpZnQgPSAwOwotICAgIHZhciBjb250aW51YXRpb24sIGRpZ2l0OwotCi0gICAgZG8g
ewotICAgICAgaWYgKGkgPj0gc3RyTGVuKSB7Ci0gICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhw
ZWN0ZWQgbW9yZSBkaWdpdHMgaW4gYmFzZSA2NCBWTFEgdmFsdWUuIik7Ci0gICAgICB9Ci0gICAg
ICBkaWdpdCA9IGJhc2U2NC5kZWNvZGUoYVN0ci5jaGFyQXQoaSsrKSk7Ci0gICAgICBjb250aW51
YXRpb24gPSAhIShkaWdpdCAmIFZMUV9DT05USU5VQVRJT05fQklUKTsKLSAgICAgIGRpZ2l0ICY9
IFZMUV9CQVNFX01BU0s7Ci0gICAgICByZXN1bHQgPSByZXN1bHQgKyAoZGlnaXQgPDwgc2hpZnQp
OwotICAgICAgc2hpZnQgKz0gVkxRX0JBU0VfU0hJRlQ7Ci0gICAgfSB3aGlsZSAoY29udGludWF0
aW9uKTsKLQotICAgIHJldHVybiB7Ci0gICAgICB2YWx1ZTogZnJvbVZMUVNpZ25lZChyZXN1bHQp
LAotICAgICAgcmVzdDogYVN0ci5zbGljZShpKQotICAgIH07Ci0gIH07Ci0KLX0pOwotCi19LHsi
Li9iYXNlNjQiOjgsImFtZGVmaW5lIjoxNH1dLDg6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4
cG9ydHMpewotLyogLSotIE1vZGU6IGpzOyBqcy1pbmRlbnQtbGV2ZWw6IDI7IC0qLSAqLwotLyoK
LSAqIENvcHlyaWdodCAyMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzCi0g
KiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRSBvcjoKLSAq
IGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKLSAqLwotaWYgKHR5
cGVvZiBkZWZpbmUgIT09ICdmdW5jdGlvbicpIHsKLSAgICB2YXIgZGVmaW5lID0gcmVxdWlyZSgn
YW1kZWZpbmUnKShtb2R1bGUsIHJlcXVpcmUpOwotfQotZGVmaW5lKGZ1bmN0aW9uIChyZXF1aXJl
LCBleHBvcnRzLCBtb2R1bGUpIHsKLQotICB2YXIgY2hhclRvSW50TWFwID0ge307Ci0gIHZhciBp
bnRUb0NoYXJNYXAgPSB7fTsKLQotICAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZn
aGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLycKLSAgICAuc3BsaXQoJycpCi0gICAgLmZv
ckVhY2goZnVuY3Rpb24gKGNoLCBpbmRleCkgewotICAgICAgY2hhclRvSW50TWFwW2NoXSA9IGlu
ZGV4OwotICAgICAgaW50VG9DaGFyTWFwW2luZGV4XSA9IGNoOwotICAgIH0pOwotCi0gIC8qKgot
ICAgKiBFbmNvZGUgYW4gaW50ZWdlciBpbiB0aGUgcmFuZ2Ugb2YgMCB0byA2MyB0byBhIHNpbmds
ZSBiYXNlIDY0IGRpZ2l0LgotICAgKi8KLSAgZXhwb3J0cy5lbmNvZGUgPSBmdW5jdGlvbiBiYXNl
NjRfZW5jb2RlKGFOdW1iZXIpIHsKLSAgICBpZiAoYU51bWJlciBpbiBpbnRUb0NoYXJNYXApIHsK
LSAgICAgIHJldHVybiBpbnRUb0NoYXJNYXBbYU51bWJlcl07Ci0gICAgfQotICAgIHRocm93IG5l
dyBUeXBlRXJyb3IoIk11c3QgYmUgYmV0d2VlbiAwIGFuZCA2MzogIiArIGFOdW1iZXIpOwotICB9
OwotCi0gIC8qKgotICAgKiBEZWNvZGUgYSBzaW5nbGUgYmFzZSA2NCBkaWdpdCB0byBhbiBpbnRl
Z2VyLgotICAgKi8KLSAgZXhwb3J0cy5kZWNvZGUgPSBmdW5jdGlvbiBiYXNlNjRfZGVjb2RlKGFD
aGFyKSB7Ci0gICAgaWYgKGFDaGFyIGluIGNoYXJUb0ludE1hcCkgewotICAgICAgcmV0dXJuIGNo
YXJUb0ludE1hcFthQ2hhcl07Ci0gICAgfQotICAgIHRocm93IG5ldyBUeXBlRXJyb3IoIk5vdCBh
IHZhbGlkIGJhc2UgNjQgZGlnaXQ6ICIgKyBhQ2hhcik7Ci0gIH07Ci0KLX0pOwotCi19LHsiYW1k
ZWZpbmUiOjE0fV0sOTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7Ci0vKiAtKi0g
TW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovCi0vKgotICogQ29weXJpZ2h0IDIw
MTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnMKLSAqIExpY2Vuc2VkIHVuZGVy
IHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOgotICogaHR0cDovL29wZW5zb3Vy
Y2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQotICovCi1pZiAodHlwZW9mIGRlZmluZSAhPT0g
J2Z1bmN0aW9uJykgewotICAgIHZhciBkZWZpbmUgPSByZXF1aXJlKCdhbWRlZmluZScpKG1vZHVs
ZSwgcmVxdWlyZSk7Ci19Ci1kZWZpbmUoZnVuY3Rpb24gKHJlcXVpcmUsIGV4cG9ydHMsIG1vZHVs
ZSkgewotCi0gIC8qKgotICAgKiBSZWN1cnNpdmUgaW1wbGVtZW50YXRpb24gb2YgYmluYXJ5IHNl
YXJjaC4KLSAgICoKLSAgICogQHBhcmFtIGFMb3cgSW5kaWNlcyBoZXJlIGFuZCBsb3dlciBkbyBu
b3QgY29udGFpbiB0aGUgbmVlZGxlLgotICAgKiBAcGFyYW0gYUhpZ2ggSW5kaWNlcyBoZXJlIGFu
ZCBoaWdoZXIgZG8gbm90IGNvbnRhaW4gdGhlIG5lZWRsZS4KLSAgICogQHBhcmFtIGFOZWVkbGUg
VGhlIGVsZW1lbnQgYmVpbmcgc2VhcmNoZWQgZm9yLgotICAgKiBAcGFyYW0gYUhheXN0YWNrIFRo
ZSBub24tZW1wdHkgYXJyYXkgYmVpbmcgc2VhcmNoZWQuCi0gICAqIEBwYXJhbSBhQ29tcGFyZSBG
dW5jdGlvbiB3aGljaCB0YWtlcyB0d28gZWxlbWVudHMgYW5kIHJldHVybnMgLTEsIDAsIG9yIDEu
Ci0gICAqLwotICBmdW5jdGlvbiByZWN1cnNpdmVTZWFyY2goYUxvdywgYUhpZ2gsIGFOZWVkbGUs
IGFIYXlzdGFjaywgYUNvbXBhcmUpIHsKLSAgICAvLyBUaGlzIGZ1bmN0aW9uIHRlcm1pbmF0ZXMg
d2hlbiBvbmUgb2YgdGhlIGZvbGxvd2luZyBpcyB0cnVlOgotICAgIC8vCi0gICAgLy8gICAxLiBX
ZSBmaW5kIHRoZSBleGFjdCBlbGVtZW50IHdlIGFyZSBsb29raW5nIGZvci4KLSAgICAvLwotICAg
IC8vICAgMi4gV2UgZGlkIG5vdCBmaW5kIHRoZSBleGFjdCBlbGVtZW50LCBidXQgd2UgY2FuIHJl
dHVybiB0aGUgbmV4dAotICAgIC8vICAgICAgY2xvc2VzdCBlbGVtZW50IHRoYXQgaXMgbGVzcyB0
aGFuIHRoYXQgZWxlbWVudC4KLSAgICAvLwotICAgIC8vICAgMy4gV2UgZGlkIG5vdCBmaW5kIHRo
ZSBleGFjdCBlbGVtZW50LCBhbmQgdGhlcmUgaXMgbm8gbmV4dC1jbG9zZXN0Ci0gICAgLy8gICAg
ICBlbGVtZW50IHdoaWNoIGlzIGxlc3MgdGhhbiB0aGUgb25lIHdlIGFyZSBzZWFyY2hpbmcgZm9y
LCBzbyB3ZQotICAgIC8vICAgICAgcmV0dXJuIG51bGwuCi0gICAgdmFyIG1pZCA9IE1hdGguZmxv
b3IoKGFIaWdoIC0gYUxvdykgLyAyKSArIGFMb3c7Ci0gICAgdmFyIGNtcCA9IGFDb21wYXJlKGFO
ZWVkbGUsIGFIYXlzdGFja1ttaWRdKTsKLSAgICBpZiAoY21wID09PSAwKSB7Ci0gICAgICAvLyBG
b3VuZCB0aGUgZWxlbWVudCB3ZSBhcmUgbG9va2luZyBmb3IuCi0gICAgICByZXR1cm4gYUhheXN0
YWNrW21pZF07Ci0gICAgfQotICAgIGVsc2UgaWYgKGNtcCA+IDApIHsKLSAgICAgIC8vIGFIYXlz
dGFja1ttaWRdIGlzIGdyZWF0ZXIgdGhhbiBvdXIgbmVlZGxlLgotICAgICAgaWYgKGFIaWdoIC0g
bWlkID4gMSkgewotICAgICAgICAvLyBUaGUgZWxlbWVudCBpcyBpbiB0aGUgdXBwZXIgaGFsZi4K
LSAgICAgICAgcmV0dXJuIHJlY3Vyc2l2ZVNlYXJjaChtaWQsIGFIaWdoLCBhTmVlZGxlLCBhSGF5
c3RhY2ssIGFDb21wYXJlKTsKLSAgICAgIH0KLSAgICAgIC8vIFdlIGRpZCBub3QgZmluZCBhbiBl
eGFjdCBtYXRjaCwgcmV0dXJuIHRoZSBuZXh0IGNsb3Nlc3Qgb25lCi0gICAgICAvLyAodGVybWlu
YXRpb24gY2FzZSAyKS4KLSAgICAgIHJldHVybiBhSGF5c3RhY2tbbWlkXTsKLSAgICB9Ci0gICAg
ZWxzZSB7Ci0gICAgICAvLyBhSGF5c3RhY2tbbWlkXSBpcyBsZXNzIHRoYW4gb3VyIG5lZWRsZS4K
LSAgICAgIGlmIChtaWQgLSBhTG93ID4gMSkgewotICAgICAgICAvLyBUaGUgZWxlbWVudCBpcyBp
biB0aGUgbG93ZXIgaGFsZi4KLSAgICAgICAgcmV0dXJuIHJlY3Vyc2l2ZVNlYXJjaChhTG93LCBt
aWQsIGFOZWVkbGUsIGFIYXlzdGFjaywgYUNvbXBhcmUpOwotICAgICAgfQotICAgICAgLy8gVGhl
IGV4YWN0IG5lZWRsZSBlbGVtZW50IHdhcyBub3QgZm91bmQgaW4gdGhpcyBoYXlzdGFjay4gRGV0
ZXJtaW5lIGlmCi0gICAgICAvLyB3ZSBhcmUgaW4gdGVybWluYXRpb24gY2FzZSAoMikgb3IgKDMp
IGFuZCByZXR1cm4gdGhlIGFwcHJvcHJpYXRlIHRoaW5nLgotICAgICAgcmV0dXJuIGFMb3cgPCAw
Ci0gICAgICAgID8gbnVsbAotICAgICAgICA6IGFIYXlzdGFja1thTG93XTsKLSAgICB9Ci0gIH0K
LQotICAvKioKLSAgICogVGhpcyBpcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiBiaW5hcnkgc2VhcmNo
IHdoaWNoIHdpbGwgYWx3YXlzIHRyeSBhbmQgcmV0dXJuCi0gICAqIHRoZSBuZXh0IGxvd2VzdCB2
YWx1ZSBjaGVja2VkIGlmIHRoZXJlIGlzIG5vIGV4YWN0IGhpdC4gVGhpcyBpcyBiZWNhdXNlCi0g
ICAqIG1hcHBpbmdzIGJldHdlZW4gb3JpZ2luYWwgYW5kIGdlbmVyYXRlZCBsaW5lL2NvbCBwYWly
cyBhcmUgc2luZ2xlIHBvaW50cywKLSAgICogYW5kIHRoZXJlIGlzIGFuIGltcGxpY2l0IHJlZ2lv
biBiZXR3ZWVuIGVhY2ggb2YgdGhlbSwgc28gYSBtaXNzIGp1c3QgbWVhbnMKLSAgICogdGhhdCB5
b3UgYXJlbid0IG9uIHRoZSB2ZXJ5IHN0YXJ0IG9mIGEgcmVnaW9uLgotICAgKgotICAgKiBAcGFy
YW0gYU5lZWRsZSBUaGUgZWxlbWVudCB5b3UgYXJlIGxvb2tpbmcgZm9yLgotICAgKiBAcGFyYW0g
YUhheXN0YWNrIFRoZSBhcnJheSB0aGF0IGlzIGJlaW5nIHNlYXJjaGVkLgotICAgKiBAcGFyYW0g
YUNvbXBhcmUgQSBmdW5jdGlvbiB3aGljaCB0YWtlcyB0aGUgbmVlZGxlIGFuZCBhbiBlbGVtZW50
IGluIHRoZQotICAgKiAgICAgYXJyYXkgYW5kIHJldHVybnMgLTEsIDAsIG9yIDEgZGVwZW5kaW5n
IG9uIHdoZXRoZXIgdGhlIG5lZWRsZSBpcyBsZXNzCi0gICAqICAgICB0aGFuLCBlcXVhbCB0bywg
b3IgZ3JlYXRlciB0aGFuIHRoZSBlbGVtZW50LCByZXNwZWN0aXZlbHkuCi0gICAqLwotICBleHBv
cnRzLnNlYXJjaCA9IGZ1bmN0aW9uIHNlYXJjaChhTmVlZGxlLCBhSGF5c3RhY2ssIGFDb21wYXJl
KSB7Ci0gICAgcmV0dXJuIGFIYXlzdGFjay5sZW5ndGggPiAwCi0gICAgICA/IHJlY3Vyc2l2ZVNl
YXJjaCgtMSwgYUhheXN0YWNrLmxlbmd0aCwgYU5lZWRsZSwgYUhheXN0YWNrLCBhQ29tcGFyZSkK
LSAgICAgIDogbnVsbDsKLSAgfTsKLQotfSk7Ci0KLX0seyJhbWRlZmluZSI6MTR9XSwxMDpbZnVu
Y3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7Ci0vKiAtKi0gTW9kZToganM7IGpzLWluZGVu
dC1sZXZlbDogMjsgLSotICovCi0vKgotICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0
aW9uIGFuZCBjb250cmlidXRvcnMKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vu
c2UuIFNlZSBMSUNFTlNFIG9yOgotICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JT
RC0zLUNsYXVzZQotICovCi1pZiAodHlwZW9mIGRlZmluZSAhPT0gJ2Z1bmN0aW9uJykgewotICAg
IHZhciBkZWZpbmUgPSByZXF1aXJlKCdhbWRlZmluZScpKG1vZHVsZSwgcmVxdWlyZSk7Ci19Ci1k
ZWZpbmUoZnVuY3Rpb24gKHJlcXVpcmUsIGV4cG9ydHMsIG1vZHVsZSkgewotCi0gIHZhciB1dGls
ID0gcmVxdWlyZSgnLi91dGlsJyk7Ci0gIHZhciBiaW5hcnlTZWFyY2ggPSByZXF1aXJlKCcuL2Jp
bmFyeS1zZWFyY2gnKTsKLSAgdmFyIEFycmF5U2V0ID0gcmVxdWlyZSgnLi9hcnJheS1zZXQnKS5B
cnJheVNldDsKLSAgdmFyIGJhc2U2NFZMUSA9IHJlcXVpcmUoJy4vYmFzZTY0LXZscScpOwotCi0g
IC8qKgotICAgKiBBIFNvdXJjZU1hcENvbnN1bWVyIGluc3RhbmNlIHJlcHJlc2VudHMgYSBwYXJz
ZWQgc291cmNlIG1hcCB3aGljaCB3ZSBjYW4KLSAgICogcXVlcnkgZm9yIGluZm9ybWF0aW9uIGFi
b3V0IHRoZSBvcmlnaW5hbCBmaWxlIHBvc2l0aW9ucyBieSBnaXZpbmcgaXQgYSBmaWxlCi0gICAq
IHBvc2l0aW9uIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLgotICAgKgotICAgKiBUaGUgb25seSBw
YXJhbWV0ZXIgaXMgdGhlIHJhdyBzb3VyY2UgbWFwIChlaXRoZXIgYXMgYSBKU09OIHN0cmluZywg
b3IKLSAgICogYWxyZWFkeSBwYXJzZWQgdG8gYW4gb2JqZWN0KS4gQWNjb3JkaW5nIHRvIHRoZSBz
cGVjLCBzb3VyY2UgbWFwcyBoYXZlIHRoZQotICAgKiBmb2xsb3dpbmcgYXR0cmlidXRlczoKLSAg
ICoKLSAgICogICAtIHZlcnNpb246IFdoaWNoIHZlcnNpb24gb2YgdGhlIHNvdXJjZSBtYXAgc3Bl
YyB0aGlzIG1hcCBpcyBmb2xsb3dpbmcuCi0gICAqICAgLSBzb3VyY2VzOiBBbiBhcnJheSBvZiBV
UkxzIHRvIHRoZSBvcmlnaW5hbCBzb3VyY2UgZmlsZXMuCi0gICAqICAgLSBuYW1lczogQW4gYXJy
YXkgb2YgaWRlbnRpZmllcnMgd2hpY2ggY2FuIGJlIHJlZmVycmVuY2VkIGJ5IGluZGl2aWR1YWwg
bWFwcGluZ3MuCi0gICAqICAgLSBzb3VyY2VSb290OiBPcHRpb25hbC4gVGhlIFVSTCByb290IGZy
b20gd2hpY2ggYWxsIHNvdXJjZXMgYXJlIHJlbGF0aXZlLgotICAgKiAgIC0gc291cmNlc0NvbnRl
bnQ6IE9wdGlvbmFsLiBBbiBhcnJheSBvZiBjb250ZW50cyBvZiB0aGUgb3JpZ2luYWwgc291cmNl
IGZpbGVzLgotICAgKiAgIC0gbWFwcGluZ3M6IEEgc3RyaW5nIG9mIGJhc2U2NCBWTFFzIHdoaWNo
IGNvbnRhaW4gdGhlIGFjdHVhbCBtYXBwaW5ncy4KLSAgICogICAtIGZpbGU6IFRoZSBnZW5lcmF0
ZWQgZmlsZSB0aGlzIHNvdXJjZSBtYXAgaXMgYXNzb2NpYXRlZCB3aXRoLgotICAgKgotICAgKiBI
ZXJlIGlzIGFuIGV4YW1wbGUgc291cmNlIG1hcCwgdGFrZW4gZnJvbSB0aGUgc291cmNlIG1hcCBz
cGVjWzBdOgotICAgKgotICAgKiAgICAgewotICAgKiAgICAgICB2ZXJzaW9uIDogMywKLSAgICog
ICAgICAgZmlsZTogIm91dC5qcyIsCi0gICAqICAgICAgIHNvdXJjZVJvb3QgOiAiIiwKLSAgICog
ICAgICAgc291cmNlczogWyJmb28uanMiLCAiYmFyLmpzIl0sCi0gICAqICAgICAgIG5hbWVzOiBb
InNyYyIsICJtYXBzIiwgImFyZSIsICJmdW4iXSwKLSAgICogICAgICAgbWFwcGluZ3M6ICJBQSxB
Qjs7QUJDREU7IgotICAgKiAgICAgfQotICAgKgotICAgKiBbMF06IGh0dHBzOi8vZG9jcy5nb29n
bGUuY29tL2RvY3VtZW50L2QvMVUxUkdBZWhRd1J5cFVUb3ZGMUtSbHBpT0Z6ZTBiLV8yZ2M2ZkFI
MEtZMGsvZWRpdD9wbGk9MSMKLSAgICovCi0gIGZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyKGFT
b3VyY2VNYXApIHsKLSAgICB2YXIgc291cmNlTWFwID0gYVNvdXJjZU1hcDsKLSAgICBpZiAodHlw
ZW9mIGFTb3VyY2VNYXAgPT09ICdzdHJpbmcnKSB7Ci0gICAgICBzb3VyY2VNYXAgPSBKU09OLnBh
cnNlKGFTb3VyY2VNYXAucmVwbGFjZSgvXlwpXF1cfScvLCAnJykpOwotICAgIH0KLQotICAgIHZh
ciB2ZXJzaW9uID0gdXRpbC5nZXRBcmcoc291cmNlTWFwLCAndmVyc2lvbicpOwotICAgIHZhciBz
b3VyY2VzID0gdXRpbC5nZXRBcmcoc291cmNlTWFwLCAnc291cmNlcycpOwotICAgIHZhciBuYW1l
cyA9IHV0aWwuZ2V0QXJnKHNvdXJjZU1hcCwgJ25hbWVzJyk7Ci0gICAgdmFyIHNvdXJjZVJvb3Qg
PSB1dGlsLmdldEFyZyhzb3VyY2VNYXAsICdzb3VyY2VSb290JywgbnVsbCk7Ci0gICAgdmFyIHNv
dXJjZXNDb250ZW50ID0gdXRpbC5nZXRBcmcoc291cmNlTWFwLCAnc291cmNlc0NvbnRlbnQnLCBu
dWxsKTsKLSAgICB2YXIgbWFwcGluZ3MgPSB1dGlsLmdldEFyZyhzb3VyY2VNYXAsICdtYXBwaW5n
cycpOwotICAgIHZhciBmaWxlID0gdXRpbC5nZXRBcmcoc291cmNlTWFwLCAnZmlsZScpOwotCi0g
ICAgaWYgKHZlcnNpb24gIT09IHRoaXMuX3ZlcnNpb24pIHsKLSAgICAgIHRocm93IG5ldyBFcnJv
cignVW5zdXBwb3J0ZWQgdmVyc2lvbjogJyArIHZlcnNpb24pOwotICAgIH0KLQotICAgIHRoaXMu
X25hbWVzID0gQXJyYXlTZXQuZnJvbUFycmF5KG5hbWVzKTsKLSAgICB0aGlzLl9zb3VyY2VzID0g
QXJyYXlTZXQuZnJvbUFycmF5KHNvdXJjZXMpOwotICAgIHRoaXMuc291cmNlUm9vdCA9IHNvdXJj
ZVJvb3Q7Ci0gICAgdGhpcy5zb3VyY2VzQ29udGVudCA9IHNvdXJjZXNDb250ZW50OwotICAgIHRo
aXMuZmlsZSA9IGZpbGU7Ci0KLSAgICAvLyBgdGhpcy5fZ2VuZXJhdGVkTWFwcGluZ3NgIGFuZCBg
dGhpcy5fb3JpZ2luYWxNYXBwaW5nc2AgaG9sZCB0aGUgcGFyc2VkCi0gICAgLy8gbWFwcGluZyBj
b29yZGluYXRlcyBmcm9tIHRoZSBzb3VyY2UgbWFwJ3MgIm1hcHBpbmdzIiBhdHRyaWJ1dGUuIEVh
Y2gKLSAgICAvLyBvYmplY3QgaW4gdGhlIGFycmF5IGlzIG9mIHRoZSBmb3JtCi0gICAgLy8KLSAg
ICAvLyAgICAgewotICAgIC8vICAgICAgIGdlbmVyYXRlZExpbmU6IFRoZSBsaW5lIG51bWJlciBp
biB0aGUgZ2VuZXJhdGVkIGNvZGUsCi0gICAgLy8gICAgICAgZ2VuZXJhdGVkQ29sdW1uOiBUaGUg
Y29sdW1uIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIGNvZGUsCi0gICAgLy8gICAgICAgc291cmNl
OiBUaGUgcGF0aCB0byB0aGUgb3JpZ2luYWwgc291cmNlIGZpbGUgdGhhdCBnZW5lcmF0ZWQgdGhp
cwotICAgIC8vICAgICAgICAgICAgICAgY2h1bmsgb2YgY29kZSwKLSAgICAvLyAgICAgICBvcmln
aW5hbExpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlIHRoYXQKLSAg
ICAvLyAgICAgICAgICAgICAgICAgICAgIGNvcnJlc3BvbmRzIHRvIHRoaXMgY2h1bmsgb2YgZ2Vu
ZXJhdGVkIGNvZGUsCi0gICAgLy8gICAgICAgb3JpZ2luYWxDb2x1bW46IFRoZSBjb2x1bW4gbnVt
YmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UgdGhhdAotICAgIC8vICAgICAgICAgICAgICAgICAg
ICAgICBjb3JyZXNwb25kcyB0byB0aGlzIGNodW5rIG9mIGdlbmVyYXRlZCBjb2RlLAotICAgIC8v
ICAgICAgIG5hbWU6IFRoZSBuYW1lIG9mIHRoZSBvcmlnaW5hbCBzeW1ib2wgd2hpY2ggZ2VuZXJh
dGVkIHRoaXMgY2h1bmsgb2YKLSAgICAvLyAgICAgICAgICAgICBjb2RlLgotICAgIC8vICAgICB9
Ci0gICAgLy8KLSAgICAvLyBBbGwgcHJvcGVydGllcyBleGNlcHQgZm9yIGBnZW5lcmF0ZWRMaW5l
YCBhbmQgYGdlbmVyYXRlZENvbHVtbmAgY2FuIGJlCi0gICAgLy8gYG51bGxgLgotICAgIC8vCi0g
ICAgLy8gYHRoaXMuX2dlbmVyYXRlZE1hcHBpbmdzYCBpcyBvcmRlcmVkIGJ5IHRoZSBnZW5lcmF0
ZWQgcG9zaXRpb25zLgotICAgIC8vCi0gICAgLy8gYHRoaXMuX29yaWdpbmFsTWFwcGluZ3NgIGlz
IG9yZGVyZWQgYnkgdGhlIG9yaWdpbmFsIHBvc2l0aW9ucy4KLSAgICB0aGlzLl9nZW5lcmF0ZWRN
YXBwaW5ncyA9IFtdOwotICAgIHRoaXMuX29yaWdpbmFsTWFwcGluZ3MgPSBbXTsKLSAgICB0aGlz
Ll9wYXJzZU1hcHBpbmdzKG1hcHBpbmdzLCBzb3VyY2VSb290KTsKLSAgfQotCi0gIC8qKgotICAg
KiBUaGUgdmVyc2lvbiBvZiB0aGUgc291cmNlIG1hcHBpbmcgc3BlYyB0aGF0IHdlIGFyZSBjb25z
dW1pbmcuCi0gICAqLwotICBTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX3ZlcnNpb24gPSAz
OwotCi0gIC8qKgotICAgKiBUaGUgbGlzdCBvZiBvcmlnaW5hbCBzb3VyY2VzLgotICAgKi8KLSAg
T2JqZWN0LmRlZmluZVByb3BlcnR5KFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZSwgJ3NvdXJj
ZXMnLCB7Ci0gICAgZ2V0OiBmdW5jdGlvbiAoKSB7Ci0gICAgICByZXR1cm4gdGhpcy5fc291cmNl
cy50b0FycmF5KCkubWFwKGZ1bmN0aW9uIChzKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnNvdXJj
ZVJvb3QgPyB1dGlsLmpvaW4odGhpcy5zb3VyY2VSb290LCBzKSA6IHM7Ci0gICAgICB9LCB0aGlz
KTsKLSAgICB9Ci0gIH0pOwotCi0gIC8qKgotICAgKiBQYXJzZSB0aGUgbWFwcGluZ3MgaW4gYSBz
dHJpbmcgaW4gdG8gYSBkYXRhIHN0cnVjdHVyZSB3aGljaCB3ZSBjYW4gZWFzaWx5Ci0gICAqIHF1
ZXJ5IChhbiBvcmRlcmVkIGxpc3QgaW4gdGhpcy5fZ2VuZXJhdGVkTWFwcGluZ3MpLgotICAgKi8K
LSAgU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLl9wYXJzZU1hcHBpbmdzID0KLSAgICBmdW5j
dGlvbiBTb3VyY2VNYXBDb25zdW1lcl9wYXJzZU1hcHBpbmdzKGFTdHIsIGFTb3VyY2VSb290KSB7
Ci0gICAgICB2YXIgZ2VuZXJhdGVkTGluZSA9IDE7Ci0gICAgICB2YXIgcHJldmlvdXNHZW5lcmF0
ZWRDb2x1bW4gPSAwOwotICAgICAgdmFyIHByZXZpb3VzT3JpZ2luYWxMaW5lID0gMDsKLSAgICAg
IHZhciBwcmV2aW91c09yaWdpbmFsQ29sdW1uID0gMDsKLSAgICAgIHZhciBwcmV2aW91c1NvdXJj
ZSA9IDA7Ci0gICAgICB2YXIgcHJldmlvdXNOYW1lID0gMDsKLSAgICAgIHZhciBtYXBwaW5nU2Vw
YXJhdG9yID0gL15bLDtdLzsKLSAgICAgIHZhciBzdHIgPSBhU3RyOwotICAgICAgdmFyIG1hcHBp
bmc7Ci0gICAgICB2YXIgdGVtcDsKLQotICAgICAgd2hpbGUgKHN0ci5sZW5ndGggPiAwKSB7Ci0g
ICAgICAgIGlmIChzdHIuY2hhckF0KDApID09PSAnOycpIHsKLSAgICAgICAgICBnZW5lcmF0ZWRM
aW5lKys7Ci0gICAgICAgICAgc3RyID0gc3RyLnNsaWNlKDEpOwotICAgICAgICAgIHByZXZpb3Vz
R2VuZXJhdGVkQ29sdW1uID0gMDsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChzdHIuY2hh
ckF0KDApID09PSAnLCcpIHsKLSAgICAgICAgICBzdHIgPSBzdHIuc2xpY2UoMSk7Ci0gICAgICAg
IH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgbWFwcGluZyA9IHt9OwotICAgICAgICAgIG1h
cHBpbmcuZ2VuZXJhdGVkTGluZSA9IGdlbmVyYXRlZExpbmU7Ci0KLSAgICAgICAgICAvLyBHZW5l
cmF0ZWQgY29sdW1uLgotICAgICAgICAgIHRlbXAgPSBiYXNlNjRWTFEuZGVjb2RlKHN0cik7Ci0g
ICAgICAgICAgbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4gPSBwcmV2aW91c0dlbmVyYXRlZENvbHVt
biArIHRlbXAudmFsdWU7Ci0gICAgICAgICAgcHJldmlvdXNHZW5lcmF0ZWRDb2x1bW4gPSBtYXBw
aW5nLmdlbmVyYXRlZENvbHVtbjsKLSAgICAgICAgICBzdHIgPSB0ZW1wLnJlc3Q7Ci0KLSAgICAg
ICAgICBpZiAoc3RyLmxlbmd0aCA+IDAgJiYgIW1hcHBpbmdTZXBhcmF0b3IudGVzdChzdHIuY2hh
ckF0KDApKSkgewotICAgICAgICAgICAgLy8gT3JpZ2luYWwgc291cmNlLgotICAgICAgICAgICAg
dGVtcCA9IGJhc2U2NFZMUS5kZWNvZGUoc3RyKTsKLSAgICAgICAgICAgIG1hcHBpbmcuc291cmNl
ID0gdGhpcy5fc291cmNlcy5hdChwcmV2aW91c1NvdXJjZSArIHRlbXAudmFsdWUpOwotICAgICAg
ICAgICAgcHJldmlvdXNTb3VyY2UgKz0gdGVtcC52YWx1ZTsKLSAgICAgICAgICAgIHN0ciA9IHRl
bXAucmVzdDsKLSAgICAgICAgICAgIGlmIChzdHIubGVuZ3RoID09PSAwIHx8IG1hcHBpbmdTZXBh
cmF0b3IudGVzdChzdHIuY2hhckF0KDApKSkgewotICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoJ0ZvdW5kIGEgc291cmNlLCBidXQgbm8gbGluZSBhbmQgY29sdW1uJyk7Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgIC8vIE9yaWdpbmFsIGxpbmUuCi0gICAgICAgICAgICB0ZW1wID0g
YmFzZTY0VkxRLmRlY29kZShzdHIpOwotICAgICAgICAgICAgbWFwcGluZy5vcmlnaW5hbExpbmUg
PSBwcmV2aW91c09yaWdpbmFsTGluZSArIHRlbXAudmFsdWU7Ci0gICAgICAgICAgICBwcmV2aW91
c09yaWdpbmFsTGluZSA9IG1hcHBpbmcub3JpZ2luYWxMaW5lOwotICAgICAgICAgICAgLy8gTGlu
ZXMgYXJlIHN0b3JlZCAwLWJhc2VkCi0gICAgICAgICAgICBtYXBwaW5nLm9yaWdpbmFsTGluZSAr
PSAxOwotICAgICAgICAgICAgc3RyID0gdGVtcC5yZXN0OwotICAgICAgICAgICAgaWYgKHN0ci5s
ZW5ndGggPT09IDAgfHwgbWFwcGluZ1NlcGFyYXRvci50ZXN0KHN0ci5jaGFyQXQoMCkpKSB7Ci0g
ICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRm91bmQgYSBzb3VyY2UgYW5kIGxpbmUsIGJ1
dCBubyBjb2x1bW4nKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gT3JpZ2luYWwg
Y29sdW1uLgotICAgICAgICAgICAgdGVtcCA9IGJhc2U2NFZMUS5kZWNvZGUoc3RyKTsKLSAgICAg
ICAgICAgIG1hcHBpbmcub3JpZ2luYWxDb2x1bW4gPSBwcmV2aW91c09yaWdpbmFsQ29sdW1uICsg
dGVtcC52YWx1ZTsKLSAgICAgICAgICAgIHByZXZpb3VzT3JpZ2luYWxDb2x1bW4gPSBtYXBwaW5n
Lm9yaWdpbmFsQ29sdW1uOwotICAgICAgICAgICAgc3RyID0gdGVtcC5yZXN0OwotCi0gICAgICAg
ICAgICBpZiAoc3RyLmxlbmd0aCA+IDAgJiYgIW1hcHBpbmdTZXBhcmF0b3IudGVzdChzdHIuY2hh
ckF0KDApKSkgewotICAgICAgICAgICAgICAvLyBPcmlnaW5hbCBuYW1lLgotICAgICAgICAgICAg
ICB0ZW1wID0gYmFzZTY0VkxRLmRlY29kZShzdHIpOwotICAgICAgICAgICAgICBtYXBwaW5nLm5h
bWUgPSB0aGlzLl9uYW1lcy5hdChwcmV2aW91c05hbWUgKyB0ZW1wLnZhbHVlKTsKLSAgICAgICAg
ICAgICAgcHJldmlvdXNOYW1lICs9IHRlbXAudmFsdWU7Ci0gICAgICAgICAgICAgIHN0ciA9IHRl
bXAucmVzdDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0KLSAgICAgICAgICB0aGlzLl9n
ZW5lcmF0ZWRNYXBwaW5ncy5wdXNoKG1hcHBpbmcpOwotICAgICAgICAgIGlmICh0eXBlb2YgbWFw
cGluZy5vcmlnaW5hbExpbmUgPT09ICdudW1iZXInKSB7Ci0gICAgICAgICAgICB0aGlzLl9vcmln
aW5hbE1hcHBpbmdzLnB1c2gobWFwcGluZyk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAg
ICB9Ci0KLSAgICAgIHRoaXMuX29yaWdpbmFsTWFwcGluZ3Muc29ydCh0aGlzLl9jb21wYXJlT3Jp
Z2luYWxQb3NpdGlvbnMpOwotICAgIH07Ci0KLSAgLyoqCi0gICAqIENvbXBhcmF0b3IgYmV0d2Vl
biB0d28gbWFwcGluZ3Mgd2hlcmUgdGhlIG9yaWdpbmFsIHBvc2l0aW9ucyBhcmUgY29tcGFyZWQu
Ci0gICAqLwotICBTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX2NvbXBhcmVPcmlnaW5hbFBv
c2l0aW9ucyA9Ci0gICAgZnVuY3Rpb24gU291cmNlTWFwQ29uc3VtZXJfY29tcGFyZU9yaWdpbmFs
UG9zaXRpb25zKG1hcHBpbmdBLCBtYXBwaW5nQikgewotICAgICAgaWYgKG1hcHBpbmdBLnNvdXJj
ZSA+IG1hcHBpbmdCLnNvdXJjZSkgewotICAgICAgICByZXR1cm4gMTsKLSAgICAgIH0KLSAgICAg
IGVsc2UgaWYgKG1hcHBpbmdBLnNvdXJjZSA8IG1hcHBpbmdCLnNvdXJjZSkgewotICAgICAgICBy
ZXR1cm4gLTE7Ci0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAgICAgICAgdmFyIGNtcCA9IG1hcHBp
bmdBLm9yaWdpbmFsTGluZSAtIG1hcHBpbmdCLm9yaWdpbmFsTGluZTsKLSAgICAgICAgcmV0dXJu
IGNtcCA9PT0gMAotICAgICAgICAgID8gbWFwcGluZ0Eub3JpZ2luYWxDb2x1bW4gLSBtYXBwaW5n
Qi5vcmlnaW5hbENvbHVtbgotICAgICAgICAgIDogY21wOwotICAgICAgfQotICAgIH07Ci0KLSAg
LyoqCi0gICAqIENvbXBhcmF0b3IgYmV0d2VlbiB0d28gbWFwcGluZ3Mgd2hlcmUgdGhlIGdlbmVy
YXRlZCBwb3NpdGlvbnMgYXJlIGNvbXBhcmVkLgotICAgKi8KLSAgU291cmNlTWFwQ29uc3VtZXIu
cHJvdG90eXBlLl9jb21wYXJlR2VuZXJhdGVkUG9zaXRpb25zID0KLSAgICBmdW5jdGlvbiBTb3Vy
Y2VNYXBDb25zdW1lcl9jb21wYXJlR2VuZXJhdGVkUG9zaXRpb25zKG1hcHBpbmdBLCBtYXBwaW5n
QikgewotICAgICAgdmFyIGNtcCA9IG1hcHBpbmdBLmdlbmVyYXRlZExpbmUgLSBtYXBwaW5nQi5n
ZW5lcmF0ZWRMaW5lOwotICAgICAgcmV0dXJuIGNtcCA9PT0gMAotICAgICAgICA/IG1hcHBpbmdB
LmdlbmVyYXRlZENvbHVtbiAtIG1hcHBpbmdCLmdlbmVyYXRlZENvbHVtbgotICAgICAgICA6IGNt
cDsKLSAgICB9OwotCi0gIC8qKgotICAgKiBGaW5kIHRoZSBtYXBwaW5nIHRoYXQgYmVzdCBtYXRj
aGVzIHRoZSBoeXBvdGhldGljYWwgIm5lZWRsZSIgbWFwcGluZyB0aGF0Ci0gICAqIHdlIGFyZSBz
ZWFyY2hpbmcgZm9yIGluIHRoZSBnaXZlbiAiaGF5c3RhY2siIG9mIG1hcHBpbmdzLgotICAgKi8K
LSAgU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLl9maW5kTWFwcGluZyA9Ci0gICAgZnVuY3Rp
b24gU291cmNlTWFwQ29uc3VtZXJfZmluZE1hcHBpbmcoYU5lZWRsZSwgYU1hcHBpbmdzLCBhTGlu
ZU5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYUNvbHVt
bk5hbWUsIGFDb21wYXJhdG9yKSB7Ci0gICAgICAvLyBUbyByZXR1cm4gdGhlIHBvc2l0aW9uIHdl
IGFyZSBzZWFyY2hpbmcgZm9yLCB3ZSBtdXN0IGZpcnN0IGZpbmQgdGhlCi0gICAgICAvLyBtYXBw
aW5nIGZvciB0aGUgZ2l2ZW4gcG9zaXRpb24gYW5kIHRoZW4gcmV0dXJuIHRoZSBvcHBvc2l0ZSBw
b3NpdGlvbiBpdAotICAgICAgLy8gcG9pbnRzIHRvLiBCZWNhdXNlIHRoZSBtYXBwaW5ncyBhcmUg
c29ydGVkLCB3ZSBjYW4gdXNlIGJpbmFyeSBzZWFyY2ggdG8KLSAgICAgIC8vIGZpbmQgdGhlIGJl
c3QgbWFwcGluZy4KLQotICAgICAgaWYgKGFOZWVkbGVbYUxpbmVOYW1lXSA8PSAwKSB7Ci0gICAg
ICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0xpbmUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1
YWwgdG8gMSwgZ290ICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGFOZWVkbGVbYUxp
bmVOYW1lXSk7Ci0gICAgICB9Ci0gICAgICBpZiAoYU5lZWRsZVthQ29sdW1uTmFtZV0gPCAwKSB7
Ci0gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0NvbHVtbiBtdXN0IGJlIGdyZWF0ZXIgdGhh
biBvciBlcXVhbCB0byAwLCBnb3QgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgYU5l
ZWRsZVthQ29sdW1uTmFtZV0pOwotICAgICAgfQotCi0gICAgICByZXR1cm4gYmluYXJ5U2VhcmNo
LnNlYXJjaChhTmVlZGxlLCBhTWFwcGluZ3MsIGFDb21wYXJhdG9yKTsKLSAgICB9OwotCi0gIC8q
KgotICAgKiBSZXR1cm5zIHRoZSBvcmlnaW5hbCBzb3VyY2UsIGxpbmUsIGFuZCBjb2x1bW4gaW5m
b3JtYXRpb24gZm9yIHRoZSBnZW5lcmF0ZWQKLSAgICogc291cmNlJ3MgbGluZSBhbmQgY29sdW1u
IHBvc2l0aW9ucyBwcm92aWRlZC4gVGhlIG9ubHkgYXJndW1lbnQgaXMgYW4gb2JqZWN0Ci0gICAq
IHdpdGggdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOgotICAgKgotICAgKiAgIC0gbGluZTogVGhl
IGxpbmUgbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLgotICAgKiAgIC0gY29sdW1uOiBU
aGUgY29sdW1uIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZS4KLSAgICoKLSAgICogYW5k
IGFuIG9iamVjdCBpcyByZXR1cm5lZCB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczoKLSAg
ICoKLSAgICogICAtIHNvdXJjZTogVGhlIG9yaWdpbmFsIHNvdXJjZSBmaWxlLCBvciBudWxsLgot
ICAgKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UsIG9y
IG51bGwuCi0gICAqICAgLSBjb2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBvcmlnaW5h
bCBzb3VyY2UsIG9yIG51bGwuCi0gICAqICAgLSBuYW1lOiBUaGUgb3JpZ2luYWwgaWRlbnRpZmll
ciwgb3IgbnVsbC4KLSAgICovCi0gIFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5vcmlnaW5h
bFBvc2l0aW9uRm9yID0KLSAgICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9vcmlnaW5hbFBv
c2l0aW9uRm9yKGFBcmdzKSB7Ci0gICAgICB2YXIgbmVlZGxlID0gewotICAgICAgICBnZW5lcmF0
ZWRMaW5lOiB1dGlsLmdldEFyZyhhQXJncywgJ2xpbmUnKSwKLSAgICAgICAgZ2VuZXJhdGVkQ29s
dW1uOiB1dGlsLmdldEFyZyhhQXJncywgJ2NvbHVtbicpCi0gICAgICB9OwotCi0gICAgICB2YXIg
bWFwcGluZyA9IHRoaXMuX2ZpbmRNYXBwaW5nKG5lZWRsZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGhpcy5fZ2VuZXJhdGVkTWFwcGluZ3MsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJnZW5lcmF0ZWRMaW5lIiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgImdlbmVyYXRlZENvbHVtbiIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NvbXBhcmVHZW5lcmF0ZWRQb3NpdGlvbnMp
OwotCi0gICAgICBpZiAobWFwcGluZykgewotICAgICAgICB2YXIgc291cmNlID0gdXRpbC5nZXRB
cmcobWFwcGluZywgJ3NvdXJjZScsIG51bGwpOwotICAgICAgICBpZiAoc291cmNlICYmIHRoaXMu
c291cmNlUm9vdCkgewotICAgICAgICAgIHNvdXJjZSA9IHV0aWwuam9pbih0aGlzLnNvdXJjZVJv
b3QsIHNvdXJjZSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICBzb3Vy
Y2U6IHNvdXJjZSwKLSAgICAgICAgICBsaW5lOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnb3JpZ2lu
YWxMaW5lJywgbnVsbCksCi0gICAgICAgICAgY29sdW1uOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAn
b3JpZ2luYWxDb2x1bW4nLCBudWxsKSwKLSAgICAgICAgICBuYW1lOiB1dGlsLmdldEFyZyhtYXBw
aW5nLCAnbmFtZScsIG51bGwpCi0gICAgICAgIH07Ci0gICAgICB9Ci0KLSAgICAgIHJldHVybiB7
Ci0gICAgICAgIHNvdXJjZTogbnVsbCwKLSAgICAgICAgbGluZTogbnVsbCwKLSAgICAgICAgY29s
dW1uOiBudWxsLAotICAgICAgICBuYW1lOiBudWxsCi0gICAgICB9OwotICAgIH07Ci0KLSAgLyoq
Ci0gICAqIFJldHVybnMgdGhlIG9yaWdpbmFsIHNvdXJjZSBjb250ZW50LiBUaGUgb25seSBhcmd1
bWVudCBpcyB0aGUgdXJsIG9mIHRoZQotICAgKiBvcmlnaW5hbCBzb3VyY2UgZmlsZS4gUmV0dXJu
cyBudWxsIGlmIG5vIG9yaWdpbmFsIHNvdXJjZSBjb250ZW50IGlzCi0gICAqIGF2YWlsaWJsZS4K
LSAgICovCi0gIFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5zb3VyY2VDb250ZW50Rm9yID0K
LSAgICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9zb3VyY2VDb250ZW50Rm9yKGFTb3VyY2Up
IHsKLSAgICAgIGlmICghdGhpcy5zb3VyY2VzQ29udGVudCkgewotICAgICAgICByZXR1cm4gbnVs
bDsKLSAgICAgIH0KLQotICAgICAgaWYgKHRoaXMuc291cmNlUm9vdCkgewotICAgICAgICBhU291
cmNlID0gdXRpbC5yZWxhdGl2ZSh0aGlzLnNvdXJjZVJvb3QsIGFTb3VyY2UpOwotICAgICAgfQot
Ci0gICAgICBpZiAodGhpcy5fc291cmNlcy5oYXMoYVNvdXJjZSkpIHsKLSAgICAgICAgcmV0dXJu
IHRoaXMuc291cmNlc0NvbnRlbnRbdGhpcy5fc291cmNlcy5pbmRleE9mKGFTb3VyY2UpXTsKLSAg
ICAgIH0KLQotICAgICAgdmFyIHVybDsKLSAgICAgIGlmICh0aGlzLnNvdXJjZVJvb3QKLSAgICAg
ICAgICAmJiAodXJsID0gdXRpbC51cmxQYXJzZSh0aGlzLnNvdXJjZVJvb3QpKSkgewotICAgICAg
ICAvLyBYWFg6IGZpbGU6Ly8gVVJJcyBhbmQgYWJzb2x1dGUgcGF0aHMgbGVhZCB0byB1bmV4cGVj
dGVkIGJlaGF2aW9yIGZvcgotICAgICAgICAvLyBtYW55IHVzZXJzLiBXZSBjYW4gaGVscCB0aGVt
IG91dCB3aGVuIHRoZXkgZXhwZWN0IGZpbGU6Ly8gVVJJcyB0bwotICAgICAgICAvLyBiZWhhdmUg
bGlrZSBpdCB3b3VsZCBpZiB0aGV5IHdlcmUgcnVubmluZyBhIGxvY2FsIEhUVFAgc2VydmVyLiBT
ZWUKLSAgICAgICAgLy8gaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODg1NTk3LgotICAgICAgICB2YXIgZmlsZVVyaUFic1BhdGggPSBhU291cmNlLnJlcGxhY2Uo
L15maWxlOlwvXC8vLCAiIik7Ci0gICAgICAgIGlmICh1cmwuc2NoZW1lID09ICJmaWxlIgotICAg
ICAgICAgICAgJiYgdGhpcy5fc291cmNlcy5oYXMoZmlsZVVyaUFic1BhdGgpKSB7Ci0gICAgICAg
ICAgcmV0dXJuIHRoaXMuc291cmNlc0NvbnRlbnRbdGhpcy5fc291cmNlcy5pbmRleE9mKGZpbGVV
cmlBYnNQYXRoKV0KLSAgICAgICAgfQotCi0gICAgICAgIGlmICgoIXVybC5wYXRoIHx8IHVybC5w
YXRoID09ICIvIikKLSAgICAgICAgICAgICYmIHRoaXMuX3NvdXJjZXMuaGFzKCIvIiArIGFTb3Vy
Y2UpKSB7Ci0gICAgICAgICAgcmV0dXJuIHRoaXMuc291cmNlc0NvbnRlbnRbdGhpcy5fc291cmNl
cy5pbmRleE9mKCIvIiArIGFTb3VyY2UpXTsKLSAgICAgICAgfQotICAgICAgfQotCi0gICAgICB0
aHJvdyBuZXcgRXJyb3IoJyInICsgYVNvdXJjZSArICciIGlzIG5vdCBpbiB0aGUgU291cmNlTWFw
LicpOwotICAgIH07Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIGdlbmVyYXRlZCBsaW5lIGFu
ZCBjb2x1bW4gaW5mb3JtYXRpb24gZm9yIHRoZSBvcmlnaW5hbCBzb3VyY2UsCi0gICAqIGxpbmUs
IGFuZCBjb2x1bW4gcG9zaXRpb25zIHByb3ZpZGVkLiBUaGUgb25seSBhcmd1bWVudCBpcyBhbiBv
YmplY3Qgd2l0aAotICAgKiB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6Ci0gICAqCi0gICAqICAg
LSBzb3VyY2U6IFRoZSBmaWxlbmFtZSBvZiB0aGUgb3JpZ2luYWwgc291cmNlLgotICAgKiAgIC0g
bGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UuCi0gICAqICAgLSBj
b2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UuCi0gICAqCi0g
ICAqIGFuZCBhbiBvYmplY3QgaXMgcmV0dXJuZWQgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRp
ZXM6Ci0gICAqCi0gICAqICAgLSBsaW5lOiBUaGUgbGluZSBudW1iZXIgaW4gdGhlIGdlbmVyYXRl
ZCBzb3VyY2UsIG9yIG51bGwuCi0gICAqICAgLSBjb2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGlu
IHRoZSBnZW5lcmF0ZWQgc291cmNlLCBvciBudWxsLgotICAgKi8KLSAgU291cmNlTWFwQ29uc3Vt
ZXIucHJvdG90eXBlLmdlbmVyYXRlZFBvc2l0aW9uRm9yID0KLSAgICBmdW5jdGlvbiBTb3VyY2VN
YXBDb25zdW1lcl9nZW5lcmF0ZWRQb3NpdGlvbkZvcihhQXJncykgewotICAgICAgdmFyIG5lZWRs
ZSA9IHsKLSAgICAgICAgc291cmNlOiB1dGlsLmdldEFyZyhhQXJncywgJ3NvdXJjZScpLAotICAg
ICAgICBvcmlnaW5hbExpbmU6IHV0aWwuZ2V0QXJnKGFBcmdzLCAnbGluZScpLAotICAgICAgICBv
cmlnaW5hbENvbHVtbjogdXRpbC5nZXRBcmcoYUFyZ3MsICdjb2x1bW4nKQotICAgICAgfTsKLQot
ICAgICAgaWYgKHRoaXMuc291cmNlUm9vdCkgewotICAgICAgICBuZWVkbGUuc291cmNlID0gdXRp
bC5yZWxhdGl2ZSh0aGlzLnNvdXJjZVJvb3QsIG5lZWRsZS5zb3VyY2UpOwotICAgICAgfQotCi0g
ICAgICB2YXIgbWFwcGluZyA9IHRoaXMuX2ZpbmRNYXBwaW5nKG5lZWRsZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3JpZ2luYWxNYXBwaW5ncywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yaWdpbmFsTGluZSIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvcmlnaW5hbENvbHVtbiIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NvbXBhcmVPcmlnaW5hbFBvc2l0
aW9ucyk7Ci0KLSAgICAgIGlmIChtYXBwaW5nKSB7Ci0gICAgICAgIHJldHVybiB7Ci0gICAgICAg
ICAgbGluZTogdXRpbC5nZXRBcmcobWFwcGluZywgJ2dlbmVyYXRlZExpbmUnLCBudWxsKSwKLSAg
ICAgICAgICBjb2x1bW46IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdnZW5lcmF0ZWRDb2x1bW4nLCBu
dWxsKQotICAgICAgICB9OwotICAgICAgfQotCi0gICAgICByZXR1cm4gewotICAgICAgICBsaW5l
OiBudWxsLAotICAgICAgICBjb2x1bW46IG51bGwKLSAgICAgIH07Ci0gICAgfTsKLQotICBTb3Vy
Y2VNYXBDb25zdW1lci5HRU5FUkFURURfT1JERVIgPSAxOwotICBTb3VyY2VNYXBDb25zdW1lci5P
UklHSU5BTF9PUkRFUiA9IDI7Ci0KLSAgLyoqCi0gICAqIEl0ZXJhdGUgb3ZlciBlYWNoIG1hcHBp
bmcgYmV0d2VlbiBhbiBvcmlnaW5hbCBzb3VyY2UvbGluZS9jb2x1bW4gYW5kIGEKLSAgICogZ2Vu
ZXJhdGVkIGxpbmUvY29sdW1uIGluIHRoaXMgc291cmNlIG1hcC4KLSAgICoKLSAgICogQHBhcmFt
IEZ1bmN0aW9uIGFDYWxsYmFjawotICAgKiAgICAgICAgVGhlIGZ1bmN0aW9uIHRoYXQgaXMgY2Fs
bGVkIHdpdGggZWFjaCBtYXBwaW5nLgotICAgKiBAcGFyYW0gT2JqZWN0IGFDb250ZXh0Ci0gICAq
ICAgICAgICBPcHRpb25hbC4gSWYgc3BlY2lmaWVkLCB0aGlzIG9iamVjdCB3aWxsIGJlIHRoZSB2
YWx1ZSBvZiBgdGhpc2AgZXZlcnkKLSAgICogICAgICAgIHRpbWUgdGhhdCBgYUNhbGxiYWNrYCBp
cyBjYWxsZWQuCi0gICAqIEBwYXJhbSBhT3JkZXIKLSAgICogICAgICAgIEVpdGhlciBgU291cmNl
TWFwQ29uc3VtZXIuR0VORVJBVEVEX09SREVSYCBvcgotICAgKiAgICAgICAgYFNvdXJjZU1hcENv
bnN1bWVyLk9SSUdJTkFMX09SREVSYC4gU3BlY2lmaWVzIHdoZXRoZXIgeW91IHdhbnQgdG8KLSAg
ICogICAgICAgIGl0ZXJhdGUgb3ZlciB0aGUgbWFwcGluZ3Mgc29ydGVkIGJ5IHRoZSBnZW5lcmF0
ZWQgZmlsZSdzIGxpbmUvY29sdW1uCi0gICAqICAgICAgICBvcmRlciBvciB0aGUgb3JpZ2luYWwn
cyBzb3VyY2UvbGluZS9jb2x1bW4gb3JkZXIsIHJlc3BlY3RpdmVseS4gRGVmYXVsdHMgdG8KLSAg
ICogICAgICAgIGBTb3VyY2VNYXBDb25zdW1lci5HRU5FUkFURURfT1JERVJgLgotICAgKi8KLSAg
U291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmVhY2hNYXBwaW5nID0KLSAgICBmdW5jdGlvbiBT
b3VyY2VNYXBDb25zdW1lcl9lYWNoTWFwcGluZyhhQ2FsbGJhY2ssIGFDb250ZXh0LCBhT3JkZXIp
IHsKLSAgICAgIHZhciBjb250ZXh0ID0gYUNvbnRleHQgfHwgbnVsbDsKLSAgICAgIHZhciBvcmRl
ciA9IGFPcmRlciB8fCBTb3VyY2VNYXBDb25zdW1lci5HRU5FUkFURURfT1JERVI7Ci0KLSAgICAg
IHZhciBtYXBwaW5nczsKLSAgICAgIHN3aXRjaCAob3JkZXIpIHsKLSAgICAgIGNhc2UgU291cmNl
TWFwQ29uc3VtZXIuR0VORVJBVEVEX09SREVSOgotICAgICAgICBtYXBwaW5ncyA9IHRoaXMuX2dl
bmVyYXRlZE1hcHBpbmdzOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgU291cmNlTWFwQ29u
c3VtZXIuT1JJR0lOQUxfT1JERVI6Ci0gICAgICAgIG1hcHBpbmdzID0gdGhpcy5fb3JpZ2luYWxN
YXBwaW5nczsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBkZWZhdWx0OgotICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoIlVua25vd24gb3JkZXIgb2YgaXRlcmF0aW9uLiIpOwotICAgICAgfQotCi0gICAg
ICB2YXIgc291cmNlUm9vdCA9IHRoaXMuc291cmNlUm9vdDsKLSAgICAgIG1hcHBpbmdzLm1hcChm
dW5jdGlvbiAobWFwcGluZykgewotICAgICAgICB2YXIgc291cmNlID0gbWFwcGluZy5zb3VyY2U7
Ci0gICAgICAgIGlmIChzb3VyY2UgJiYgc291cmNlUm9vdCkgewotICAgICAgICAgIHNvdXJjZSA9
IHV0aWwuam9pbihzb3VyY2VSb290LCBzb3VyY2UpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVy
biB7Ci0gICAgICAgICAgc291cmNlOiBzb3VyY2UsCi0gICAgICAgICAgZ2VuZXJhdGVkTGluZTog
bWFwcGluZy5nZW5lcmF0ZWRMaW5lLAotICAgICAgICAgIGdlbmVyYXRlZENvbHVtbjogbWFwcGlu
Zy5nZW5lcmF0ZWRDb2x1bW4sCi0gICAgICAgICAgb3JpZ2luYWxMaW5lOiBtYXBwaW5nLm9yaWdp
bmFsTGluZSwKLSAgICAgICAgICBvcmlnaW5hbENvbHVtbjogbWFwcGluZy5vcmlnaW5hbENvbHVt
biwKLSAgICAgICAgICBuYW1lOiBtYXBwaW5nLm5hbWUKLSAgICAgICAgfTsKLSAgICAgIH0pLmZv
ckVhY2goYUNhbGxiYWNrLCBjb250ZXh0KTsKLSAgICB9OwotCi0gIGV4cG9ydHMuU291cmNlTWFw
Q29uc3VtZXIgPSBTb3VyY2VNYXBDb25zdW1lcjsKLQotfSk7Ci0KLX0seyIuL2FycmF5LXNldCI6
NiwiLi9iYXNlNjQtdmxxIjo3LCIuL2JpbmFyeS1zZWFyY2giOjksIi4vdXRpbCI6MTMsImFtZGVm
aW5lIjoxNH1dLDExOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKLS8qIC0qLSBN
b2RlOiBqczsganMtaW5kZW50LWxldmVsOiAyOyAtKi0gKi8KLS8qCi0gKiBDb3B5cmlnaHQgMjAx
MSBNb3ppbGxhIEZvdW5kYXRpb24gYW5kIGNvbnRyaWJ1dG9ycwotICogTGljZW5zZWQgdW5kZXIg
dGhlIE5ldyBCU0QgbGljZW5zZS4gU2VlIExJQ0VOU0Ugb3I6Ci0gKiBodHRwOi8vb3BlbnNvdXJj
ZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlCi0gKi8KLWlmICh0eXBlb2YgZGVmaW5lICE9PSAn
ZnVuY3Rpb24nKSB7Ci0gICAgdmFyIGRlZmluZSA9IHJlcXVpcmUoJ2FtZGVmaW5lJykobW9kdWxl
LCByZXF1aXJlKTsKLX0KLWRlZmluZShmdW5jdGlvbiAocmVxdWlyZSwgZXhwb3J0cywgbW9kdWxl
KSB7Ci0KLSAgdmFyIGJhc2U2NFZMUSA9IHJlcXVpcmUoJy4vYmFzZTY0LXZscScpOwotICB2YXIg
dXRpbCA9IHJlcXVpcmUoJy4vdXRpbCcpOwotICB2YXIgQXJyYXlTZXQgPSByZXF1aXJlKCcuL2Fy
cmF5LXNldCcpLkFycmF5U2V0OwotCi0gIC8qKgotICAgKiBBbiBpbnN0YW5jZSBvZiB0aGUgU291
cmNlTWFwR2VuZXJhdG9yIHJlcHJlc2VudHMgYSBzb3VyY2UgbWFwIHdoaWNoIGlzCi0gICAqIGJl
aW5nIGJ1aWx0IGluY3JlbWVudGFsbHkuIFRvIGNyZWF0ZSBhIG5ldyBvbmUsIHlvdSBtdXN0IHBh
c3MgYW4gb2JqZWN0Ci0gICAqIHdpdGggdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOgotICAgKgot
ICAgKiAgIC0gZmlsZTogVGhlIGZpbGVuYW1lIG9mIHRoZSBnZW5lcmF0ZWQgc291cmNlLgotICAg
KiAgIC0gc291cmNlUm9vdDogQW4gb3B0aW9uYWwgcm9vdCBmb3IgYWxsIFVSTHMgaW4gdGhpcyBz
b3VyY2UgbWFwLgotICAgKi8KLSAgZnVuY3Rpb24gU291cmNlTWFwR2VuZXJhdG9yKGFBcmdzKSB7
Ci0gICAgdGhpcy5fZmlsZSA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnZmlsZScpOwotICAgIHRoaXMu
X3NvdXJjZVJvb3QgPSB1dGlsLmdldEFyZyhhQXJncywgJ3NvdXJjZVJvb3QnLCBudWxsKTsKLSAg
ICB0aGlzLl9zb3VyY2VzID0gbmV3IEFycmF5U2V0KCk7Ci0gICAgdGhpcy5fbmFtZXMgPSBuZXcg
QXJyYXlTZXQoKTsKLSAgICB0aGlzLl9tYXBwaW5ncyA9IFtdOwotICAgIHRoaXMuX3NvdXJjZXND
b250ZW50cyA9IG51bGw7Ci0gIH0KLQotICBTb3VyY2VNYXBHZW5lcmF0b3IucHJvdG90eXBlLl92
ZXJzaW9uID0gMzsKLQotICAvKioKLSAgICogQ3JlYXRlcyBhIG5ldyBTb3VyY2VNYXBHZW5lcmF0
b3IgYmFzZWQgb24gYSBTb3VyY2VNYXBDb25zdW1lcgotICAgKgotICAgKiBAcGFyYW0gYVNvdXJj
ZU1hcENvbnN1bWVyIFRoZSBTb3VyY2VNYXAuCi0gICAqLwotICBTb3VyY2VNYXBHZW5lcmF0b3Iu
ZnJvbVNvdXJjZU1hcCA9Ci0gICAgZnVuY3Rpb24gU291cmNlTWFwR2VuZXJhdG9yX2Zyb21Tb3Vy
Y2VNYXAoYVNvdXJjZU1hcENvbnN1bWVyKSB7Ci0gICAgICB2YXIgc291cmNlUm9vdCA9IGFTb3Vy
Y2VNYXBDb25zdW1lci5zb3VyY2VSb290OwotICAgICAgdmFyIGdlbmVyYXRvciA9IG5ldyBTb3Vy
Y2VNYXBHZW5lcmF0b3IoewotICAgICAgICBmaWxlOiBhU291cmNlTWFwQ29uc3VtZXIuZmlsZSwK
LSAgICAgICAgc291cmNlUm9vdDogc291cmNlUm9vdAotICAgICAgfSk7Ci0gICAgICBhU291cmNl
TWFwQ29uc3VtZXIuZWFjaE1hcHBpbmcoZnVuY3Rpb24gKG1hcHBpbmcpIHsKLSAgICAgICAgdmFy
IG5ld01hcHBpbmcgPSB7Ci0gICAgICAgICAgZ2VuZXJhdGVkOiB7Ci0gICAgICAgICAgICBsaW5l
OiBtYXBwaW5nLmdlbmVyYXRlZExpbmUsCi0gICAgICAgICAgICBjb2x1bW46IG1hcHBpbmcuZ2Vu
ZXJhdGVkQ29sdW1uCi0gICAgICAgICAgfQotICAgICAgICB9OwotCi0gICAgICAgIGlmIChtYXBw
aW5nLnNvdXJjZSkgewotICAgICAgICAgIG5ld01hcHBpbmcuc291cmNlID0gbWFwcGluZy5zb3Vy
Y2U7Ci0gICAgICAgICAgaWYgKHNvdXJjZVJvb3QpIHsKLSAgICAgICAgICAgIG5ld01hcHBpbmcu
c291cmNlID0gdXRpbC5yZWxhdGl2ZShzb3VyY2VSb290LCBuZXdNYXBwaW5nLnNvdXJjZSk7Ci0g
ICAgICAgICAgfQotCi0gICAgICAgICAgbmV3TWFwcGluZy5vcmlnaW5hbCA9IHsKLSAgICAgICAg
ICAgIGxpbmU6IG1hcHBpbmcub3JpZ2luYWxMaW5lLAotICAgICAgICAgICAgY29sdW1uOiBtYXBw
aW5nLm9yaWdpbmFsQ29sdW1uCi0gICAgICAgICAgfTsKLQotICAgICAgICAgIGlmIChtYXBwaW5n
Lm5hbWUpIHsKLSAgICAgICAgICAgIG5ld01hcHBpbmcubmFtZSA9IG1hcHBpbmcubmFtZTsKLSAg
ICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBnZW5lcmF0b3IuYWRkTWFwcGluZyhuZXdN
YXBwaW5nKTsKLSAgICAgIH0pOwotICAgICAgYVNvdXJjZU1hcENvbnN1bWVyLnNvdXJjZXMuZm9y
RWFjaChmdW5jdGlvbiAoc291cmNlRmlsZSkgewotICAgICAgICB2YXIgY29udGVudCA9IGFTb3Vy
Y2VNYXBDb25zdW1lci5zb3VyY2VDb250ZW50Rm9yKHNvdXJjZUZpbGUpOwotICAgICAgICBpZiAo
Y29udGVudCkgewotICAgICAgICAgIGdlbmVyYXRvci5zZXRTb3VyY2VDb250ZW50KHNvdXJjZUZp
bGUsIGNvbnRlbnQpOwotICAgICAgICB9Ci0gICAgICB9KTsKLSAgICAgIHJldHVybiBnZW5lcmF0
b3I7Ci0gICAgfTsKLQotICAvKioKLSAgICogQWRkIGEgc2luZ2xlIG1hcHBpbmcgZnJvbSBvcmln
aW5hbCBzb3VyY2UgbGluZSBhbmQgY29sdW1uIHRvIHRoZSBnZW5lcmF0ZWQKLSAgICogc291cmNl
J3MgbGluZSBhbmQgY29sdW1uIGZvciB0aGlzIHNvdXJjZSBtYXAgYmVpbmcgY3JlYXRlZC4gVGhl
IG1hcHBpbmcKLSAgICogb2JqZWN0IHNob3VsZCBoYXZlIHRoZSBmb2xsb3dpbmcgcHJvcGVydGll
czoKLSAgICoKLSAgICogICAtIGdlbmVyYXRlZDogQW4gb2JqZWN0IHdpdGggdGhlIGdlbmVyYXRl
ZCBsaW5lIGFuZCBjb2x1bW4gcG9zaXRpb25zLgotICAgKiAgIC0gb3JpZ2luYWw6IEFuIG9iamVj
dCB3aXRoIHRoZSBvcmlnaW5hbCBsaW5lIGFuZCBjb2x1bW4gcG9zaXRpb25zLgotICAgKiAgIC0g
c291cmNlOiBUaGUgb3JpZ2luYWwgc291cmNlIGZpbGUgKHJlbGF0aXZlIHRvIHRoZSBzb3VyY2VS
b290KS4KLSAgICogICAtIG5hbWU6IEFuIG9wdGlvbmFsIG9yaWdpbmFsIHRva2VuIG5hbWUgZm9y
IHRoaXMgbWFwcGluZy4KLSAgICovCi0gIFNvdXJjZU1hcEdlbmVyYXRvci5wcm90b3R5cGUuYWRk
TWFwcGluZyA9Ci0gICAgZnVuY3Rpb24gU291cmNlTWFwR2VuZXJhdG9yX2FkZE1hcHBpbmcoYUFy
Z3MpIHsKLSAgICAgIHZhciBnZW5lcmF0ZWQgPSB1dGlsLmdldEFyZyhhQXJncywgJ2dlbmVyYXRl
ZCcpOwotICAgICAgdmFyIG9yaWdpbmFsID0gdXRpbC5nZXRBcmcoYUFyZ3MsICdvcmlnaW5hbCcs
IG51bGwpOwotICAgICAgdmFyIHNvdXJjZSA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnc291cmNlJywg
bnVsbCk7Ci0gICAgICB2YXIgbmFtZSA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnbmFtZScsIG51bGwp
OwotCi0gICAgICB0aGlzLl92YWxpZGF0ZU1hcHBpbmcoZ2VuZXJhdGVkLCBvcmlnaW5hbCwgc291
cmNlLCBuYW1lKTsKLQotICAgICAgaWYgKHNvdXJjZSAmJiAhdGhpcy5fc291cmNlcy5oYXMoc291
cmNlKSkgewotICAgICAgICB0aGlzLl9zb3VyY2VzLmFkZChzb3VyY2UpOwotICAgICAgfQotCi0g
ICAgICBpZiAobmFtZSAmJiAhdGhpcy5fbmFtZXMuaGFzKG5hbWUpKSB7Ci0gICAgICAgIHRoaXMu
X25hbWVzLmFkZChuYW1lKTsKLSAgICAgIH0KLQotICAgICAgdGhpcy5fbWFwcGluZ3MucHVzaCh7
Ci0gICAgICAgIGdlbmVyYXRlZDogZ2VuZXJhdGVkLAotICAgICAgICBvcmlnaW5hbDogb3JpZ2lu
YWwsCi0gICAgICAgIHNvdXJjZTogc291cmNlLAotICAgICAgICBuYW1lOiBuYW1lCi0gICAgICB9
KTsKLSAgICB9OwotCi0gIC8qKgotICAgKiBTZXQgdGhlIHNvdXJjZSBjb250ZW50IGZvciBhIHNv
dXJjZSBmaWxlLgotICAgKi8KLSAgU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5zZXRTb3Vy
Y2VDb250ZW50ID0KLSAgICBmdW5jdGlvbiBTb3VyY2VNYXBHZW5lcmF0b3Jfc2V0U291cmNlQ29u
dGVudChhU291cmNlRmlsZSwgYVNvdXJjZUNvbnRlbnQpIHsKLSAgICAgIHZhciBzb3VyY2UgPSBh
U291cmNlRmlsZTsKLSAgICAgIGlmICh0aGlzLl9zb3VyY2VSb290KSB7Ci0gICAgICAgIHNvdXJj
ZSA9IHV0aWwucmVsYXRpdmUodGhpcy5fc291cmNlUm9vdCwgc291cmNlKTsKLSAgICAgIH0KLQot
ICAgICAgaWYgKGFTb3VyY2VDb250ZW50ICE9PSBudWxsKSB7Ci0gICAgICAgIC8vIEFkZCB0aGUg
c291cmNlIGNvbnRlbnQgdG8gdGhlIF9zb3VyY2VzQ29udGVudHMgbWFwLgotICAgICAgICAvLyBD
cmVhdGUgYSBuZXcgX3NvdXJjZXNDb250ZW50cyBtYXAgaWYgdGhlIHByb3BlcnR5IGlzIG51bGwu
Ci0gICAgICAgIGlmICghdGhpcy5fc291cmNlc0NvbnRlbnRzKSB7Ci0gICAgICAgICAgdGhpcy5f
c291cmNlc0NvbnRlbnRzID0ge307Ci0gICAgICAgIH0KLSAgICAgICAgdGhpcy5fc291cmNlc0Nv
bnRlbnRzW3V0aWwudG9TZXRTdHJpbmcoc291cmNlKV0gPSBhU291cmNlQ29udGVudDsKLSAgICAg
IH0gZWxzZSB7Ci0gICAgICAgIC8vIFJlbW92ZSB0aGUgc291cmNlIGZpbGUgZnJvbSB0aGUgX3Nv
dXJjZXNDb250ZW50cyBtYXAuCi0gICAgICAgIC8vIElmIHRoZSBfc291cmNlc0NvbnRlbnRzIG1h
cCBpcyBlbXB0eSwgc2V0IHRoZSBwcm9wZXJ0eSB0byBudWxsLgotICAgICAgICBkZWxldGUgdGhp
cy5fc291cmNlc0NvbnRlbnRzW3V0aWwudG9TZXRTdHJpbmcoc291cmNlKV07Ci0gICAgICAgIGlm
IChPYmplY3Qua2V5cyh0aGlzLl9zb3VyY2VzQ29udGVudHMpLmxlbmd0aCA9PT0gMCkgewotICAg
ICAgICAgIHRoaXMuX3NvdXJjZXNDb250ZW50cyA9IG51bGw7Ci0gICAgICAgIH0KLSAgICAgIH0K
LSAgICB9OwotCi0gIC8qKgotICAgKiBBcHBsaWVzIHRoZSBtYXBwaW5ncyBvZiBhIHN1Yi1zb3Vy
Y2UtbWFwIGZvciBhIHNwZWNpZmljIHNvdXJjZSBmaWxlIHRvIHRoZQotICAgKiBzb3VyY2UgbWFw
IGJlaW5nIGdlbmVyYXRlZC4gRWFjaCBtYXBwaW5nIHRvIHRoZSBzdXBwbGllZCBzb3VyY2UgZmls
ZSBpcwotICAgKiByZXdyaXR0ZW4gdXNpbmcgdGhlIHN1cHBsaWVkIHNvdXJjZSBtYXAuIE5vdGU6
IFRoZSByZXNvbHV0aW9uIGZvciB0aGUKLSAgICogcmVzdWx0aW5nIG1hcHBpbmdzIGlzIHRoZSBt
aW5pbWl1bSBvZiB0aGlzIG1hcCBhbmQgdGhlIHN1cHBsaWVkIG1hcC4KLSAgICoKLSAgICogQHBh
cmFtIGFTb3VyY2VNYXBDb25zdW1lciBUaGUgc291cmNlIG1hcCB0byBiZSBhcHBsaWVkLgotICAg
KiBAcGFyYW0gYVNvdXJjZUZpbGUgT3B0aW9uYWwuIFRoZSBmaWxlbmFtZSBvZiB0aGUgc291cmNl
IGZpbGUuCi0gICAqICAgICAgICBJZiBvbWl0dGVkLCBTb3VyY2VNYXBDb25zdW1lcidzIGZpbGUg
cHJvcGVydHkgd2lsbCBiZSB1c2VkLgotICAgKi8KLSAgU291cmNlTWFwR2VuZXJhdG9yLnByb3Rv
dHlwZS5hcHBseVNvdXJjZU1hcCA9Ci0gICAgZnVuY3Rpb24gU291cmNlTWFwR2VuZXJhdG9yX2Fw
cGx5U291cmNlTWFwKGFTb3VyY2VNYXBDb25zdW1lciwgYVNvdXJjZUZpbGUpIHsKLSAgICAgIC8v
IElmIGFTb3VyY2VGaWxlIGlzIG9taXR0ZWQsIHdlIHdpbGwgdXNlIHRoZSBmaWxlIHByb3BlcnR5
IG9mIHRoZSBTb3VyY2VNYXAKLSAgICAgIGlmICghYVNvdXJjZUZpbGUpIHsKLSAgICAgICAgYVNv
dXJjZUZpbGUgPSBhU291cmNlTWFwQ29uc3VtZXIuZmlsZTsKLSAgICAgIH0KLSAgICAgIHZhciBz
b3VyY2VSb290ID0gdGhpcy5fc291cmNlUm9vdDsKLSAgICAgIC8vIE1ha2UgImFTb3VyY2VGaWxl
IiByZWxhdGl2ZSBpZiBhbiBhYnNvbHV0ZSBVcmwgaXMgcGFzc2VkLgotICAgICAgaWYgKHNvdXJj
ZVJvb3QpIHsKLSAgICAgICAgYVNvdXJjZUZpbGUgPSB1dGlsLnJlbGF0aXZlKHNvdXJjZVJvb3Qs
IGFTb3VyY2VGaWxlKTsKLSAgICAgIH0KLSAgICAgIC8vIEFwcGx5aW5nIHRoZSBTb3VyY2VNYXAg
Y2FuIGFkZCBhbmQgcmVtb3ZlIGl0ZW1zIGZyb20gdGhlIHNvdXJjZXMgYW5kCi0gICAgICAvLyB0
aGUgbmFtZXMgYXJyYXkuCi0gICAgICB2YXIgbmV3U291cmNlcyA9IG5ldyBBcnJheVNldCgpOwot
ICAgICAgdmFyIG5ld05hbWVzID0gbmV3IEFycmF5U2V0KCk7Ci0KLSAgICAgIC8vIEZpbmQgbWFw
cGluZ3MgZm9yIHRoZSAiYVNvdXJjZUZpbGUiCi0gICAgICB0aGlzLl9tYXBwaW5ncy5mb3JFYWNo
KGZ1bmN0aW9uIChtYXBwaW5nKSB7Ci0gICAgICAgIGlmIChtYXBwaW5nLnNvdXJjZSA9PT0gYVNv
dXJjZUZpbGUgJiYgbWFwcGluZy5vcmlnaW5hbCkgewotICAgICAgICAgIC8vIENoZWNrIGlmIGl0
IGNhbiBiZSBtYXBwZWQgYnkgdGhlIHNvdXJjZSBtYXAsIHRoZW4gdXBkYXRlIHRoZSBtYXBwaW5n
LgotICAgICAgICAgIHZhciBvcmlnaW5hbCA9IGFTb3VyY2VNYXBDb25zdW1lci5vcmlnaW5hbFBv
c2l0aW9uRm9yKHsKLSAgICAgICAgICAgIGxpbmU6IG1hcHBpbmcub3JpZ2luYWwubGluZSwKLSAg
ICAgICAgICAgIGNvbHVtbjogbWFwcGluZy5vcmlnaW5hbC5jb2x1bW4KLSAgICAgICAgICB9KTsK
LSAgICAgICAgICBpZiAob3JpZ2luYWwuc291cmNlICE9PSBudWxsKSB7Ci0gICAgICAgICAgICAv
LyBDb3B5IG1hcHBpbmcKLSAgICAgICAgICAgIGlmIChzb3VyY2VSb290KSB7Ci0gICAgICAgICAg
ICAgIG1hcHBpbmcuc291cmNlID0gdXRpbC5yZWxhdGl2ZShzb3VyY2VSb290LCBvcmlnaW5hbC5z
b3VyY2UpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgbWFwcGluZy5zb3Vy
Y2UgPSBvcmlnaW5hbC5zb3VyY2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBtYXBwaW5n
Lm9yaWdpbmFsLmxpbmUgPSBvcmlnaW5hbC5saW5lOwotICAgICAgICAgICAgbWFwcGluZy5vcmln
aW5hbC5jb2x1bW4gPSBvcmlnaW5hbC5jb2x1bW47Ci0gICAgICAgICAgICBpZiAob3JpZ2luYWwu
bmFtZSAhPT0gbnVsbCAmJiBtYXBwaW5nLm5hbWUgIT09IG51bGwpIHsKLSAgICAgICAgICAgICAg
Ly8gT25seSB1c2UgdGhlIGlkZW50aWZpZXIgbmFtZSBpZiBpdCdzIGFuIGlkZW50aWZpZXIKLSAg
ICAgICAgICAgICAgLy8gaW4gYm90aCBTb3VyY2VNYXBzCi0gICAgICAgICAgICAgIG1hcHBpbmcu
bmFtZSA9IG9yaWdpbmFsLm5hbWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAg
ICB9Ci0KLSAgICAgICAgdmFyIHNvdXJjZSA9IG1hcHBpbmcuc291cmNlOwotICAgICAgICBpZiAo
c291cmNlICYmICFuZXdTb3VyY2VzLmhhcyhzb3VyY2UpKSB7Ci0gICAgICAgICAgbmV3U291cmNl
cy5hZGQoc291cmNlKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciBuYW1lID0gbWFwcGluZy5u
YW1lOwotICAgICAgICBpZiAobmFtZSAmJiAhbmV3TmFtZXMuaGFzKG5hbWUpKSB7Ci0gICAgICAg
ICAgbmV3TmFtZXMuYWRkKG5hbWUpOwotICAgICAgICB9Ci0KLSAgICAgIH0sIHRoaXMpOwotICAg
ICAgdGhpcy5fc291cmNlcyA9IG5ld1NvdXJjZXM7Ci0gICAgICB0aGlzLl9uYW1lcyA9IG5ld05h
bWVzOwotCi0gICAgICAvLyBDb3B5IHNvdXJjZXNDb250ZW50cyBvZiBhcHBsaWVkIG1hcC4KLSAg
ICAgIGFTb3VyY2VNYXBDb25zdW1lci5zb3VyY2VzLmZvckVhY2goZnVuY3Rpb24gKHNvdXJjZUZp
bGUpIHsKLSAgICAgICAgdmFyIGNvbnRlbnQgPSBhU291cmNlTWFwQ29uc3VtZXIuc291cmNlQ29u
dGVudEZvcihzb3VyY2VGaWxlKTsKLSAgICAgICAgaWYgKGNvbnRlbnQpIHsKLSAgICAgICAgICBp
ZiAoc291cmNlUm9vdCkgewotICAgICAgICAgICAgc291cmNlRmlsZSA9IHV0aWwucmVsYXRpdmUo
c291cmNlUm9vdCwgc291cmNlRmlsZSk7Ci0gICAgICAgICAgfQotICAgICAgICAgIHRoaXMuc2V0
U291cmNlQ29udGVudChzb3VyY2VGaWxlLCBjb250ZW50KTsKLSAgICAgICAgfQotICAgICAgfSwg
dGhpcyk7Ci0gICAgfTsKLQotICAvKioKLSAgICogQSBtYXBwaW5nIGNhbiBoYXZlIG9uZSBvZiB0
aGUgdGhyZWUgbGV2ZWxzIG9mIGRhdGE6Ci0gICAqCi0gICAqICAgMS4gSnVzdCB0aGUgZ2VuZXJh
dGVkIHBvc2l0aW9uLgotICAgKiAgIDIuIFRoZSBHZW5lcmF0ZWQgcG9zaXRpb24sIG9yaWdpbmFs
IHBvc2l0aW9uLCBhbmQgb3JpZ2luYWwgc291cmNlLgotICAgKiAgIDMuIEdlbmVyYXRlZCBhbmQg
b3JpZ2luYWwgcG9zaXRpb24sIG9yaWdpbmFsIHNvdXJjZSwgYXMgd2VsbCBhcyBhIG5hbWUKLSAg
ICogICAgICB0b2tlbi4KLSAgICoKLSAgICogVG8gbWFpbnRhaW4gY29uc2lzdGVuY3ksIHdlIHZh
bGlkYXRlIHRoYXQgYW55IG5ldyBtYXBwaW5nIGJlaW5nIGFkZGVkIGZhbGxzCi0gICAqIGluIHRv
IG9uZSBvZiB0aGVzZSBjYXRlZ29yaWVzLgotICAgKi8KLSAgU291cmNlTWFwR2VuZXJhdG9yLnBy
b3RvdHlwZS5fdmFsaWRhdGVNYXBwaW5nID0KLSAgICBmdW5jdGlvbiBTb3VyY2VNYXBHZW5lcmF0
b3JfdmFsaWRhdGVNYXBwaW5nKGFHZW5lcmF0ZWQsIGFPcmlnaW5hbCwgYVNvdXJjZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFOYW1lKSB7Ci0gICAg
ICBpZiAoYUdlbmVyYXRlZCAmJiAnbGluZScgaW4gYUdlbmVyYXRlZCAmJiAnY29sdW1uJyBpbiBh
R2VuZXJhdGVkCi0gICAgICAgICAgJiYgYUdlbmVyYXRlZC5saW5lID4gMCAmJiBhR2VuZXJhdGVk
LmNvbHVtbiA+PSAwCi0gICAgICAgICAgJiYgIWFPcmlnaW5hbCAmJiAhYVNvdXJjZSAmJiAhYU5h
bWUpIHsKLSAgICAgICAgLy8gQ2FzZSAxLgotICAgICAgICByZXR1cm47Ci0gICAgICB9Ci0gICAg
ICBlbHNlIGlmIChhR2VuZXJhdGVkICYmICdsaW5lJyBpbiBhR2VuZXJhdGVkICYmICdjb2x1bW4n
IGluIGFHZW5lcmF0ZWQKLSAgICAgICAgICAgICAgICYmIGFPcmlnaW5hbCAmJiAnbGluZScgaW4g
YU9yaWdpbmFsICYmICdjb2x1bW4nIGluIGFPcmlnaW5hbAotICAgICAgICAgICAgICAgJiYgYUdl
bmVyYXRlZC5saW5lID4gMCAmJiBhR2VuZXJhdGVkLmNvbHVtbiA+PSAwCi0gICAgICAgICAgICAg
ICAmJiBhT3JpZ2luYWwubGluZSA+IDAgJiYgYU9yaWdpbmFsLmNvbHVtbiA+PSAwCi0gICAgICAg
ICAgICAgICAmJiBhU291cmNlKSB7Ci0gICAgICAgIC8vIENhc2VzIDIgYW5kIDMuCi0gICAgICAg
IHJldHVybjsKLSAgICAgIH0KLSAgICAgIGVsc2UgewotICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
J0ludmFsaWQgbWFwcGluZy4nKTsKLSAgICAgIH0KLSAgICB9OwotCi0gIGZ1bmN0aW9uIGNtcExv
Y2F0aW9uKGxvYzEsIGxvYzIpIHsKLSAgICB2YXIgY21wID0gKGxvYzEgJiYgbG9jMS5saW5lKSAt
IChsb2MyICYmIGxvYzIubGluZSk7Ci0gICAgcmV0dXJuIGNtcCA/IGNtcCA6IChsb2MxICYmIGxv
YzEuY29sdW1uKSAtIChsb2MyICYmIGxvYzIuY29sdW1uKTsKLSAgfQotCi0gIGZ1bmN0aW9uIHN0
cmNtcChzdHIxLCBzdHIyKSB7Ci0gICAgc3RyMSA9IHN0cjEgfHwgJyc7Ci0gICAgc3RyMiA9IHN0
cjIgfHwgJyc7Ci0gICAgcmV0dXJuIChzdHIxID4gc3RyMikgLSAoc3RyMSA8IHN0cjIpOwotICB9
Ci0KLSAgZnVuY3Rpb24gY21wTWFwcGluZyhtYXBwaW5nQSwgbWFwcGluZ0IpIHsKLSAgICByZXR1
cm4gY21wTG9jYXRpb24obWFwcGluZ0EuZ2VuZXJhdGVkLCBtYXBwaW5nQi5nZW5lcmF0ZWQpIHx8
Ci0gICAgICBjbXBMb2NhdGlvbihtYXBwaW5nQS5vcmlnaW5hbCwgbWFwcGluZ0Iub3JpZ2luYWwp
IHx8Ci0gICAgICBzdHJjbXAobWFwcGluZ0Euc291cmNlLCBtYXBwaW5nQi5zb3VyY2UpIHx8Ci0g
ICAgICBzdHJjbXAobWFwcGluZ0EubmFtZSwgbWFwcGluZ0IubmFtZSk7Ci0gIH0KLQotICAvKioK
LSAgICogU2VyaWFsaXplIHRoZSBhY2N1bXVsYXRlZCBtYXBwaW5ncyBpbiB0byB0aGUgc3RyZWFt
IG9mIGJhc2UgNjQgVkxRcwotICAgKiBzcGVjaWZpZWQgYnkgdGhlIHNvdXJjZSBtYXAgZm9ybWF0
LgotICAgKi8KLSAgU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5fc2VyaWFsaXplTWFwcGlu
Z3MgPQotICAgIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl9zZXJpYWxpemVNYXBwaW5ncygp
IHsKLSAgICAgIHZhciBwcmV2aW91c0dlbmVyYXRlZENvbHVtbiA9IDA7Ci0gICAgICB2YXIgcHJl
dmlvdXNHZW5lcmF0ZWRMaW5lID0gMTsKLSAgICAgIHZhciBwcmV2aW91c09yaWdpbmFsQ29sdW1u
ID0gMDsKLSAgICAgIHZhciBwcmV2aW91c09yaWdpbmFsTGluZSA9IDA7Ci0gICAgICB2YXIgcHJl
dmlvdXNOYW1lID0gMDsKLSAgICAgIHZhciBwcmV2aW91c1NvdXJjZSA9IDA7Ci0gICAgICB2YXIg
cmVzdWx0ID0gJyc7Ci0gICAgICB2YXIgbWFwcGluZzsKLQotICAgICAgLy8gVGhlIG1hcHBpbmdz
IG11c3QgYmUgZ3VhcmFudGVlZCB0byBiZSBpbiBzb3J0ZWQgb3JkZXIgYmVmb3JlIHdlIHN0YXJ0
Ci0gICAgICAvLyBzZXJpYWxpemluZyB0aGVtIG9yIGVsc2UgdGhlIGdlbmVyYXRlZCBsaW5lIG51
bWJlcnMgKHdoaWNoIGFyZSBkZWZpbmVkCi0gICAgICAvLyB2aWEgdGhlICc7JyBzZXBhcmF0b3Jz
KSB3aWxsIGJlIGFsbCBtZXNzZWQgdXAuIE5vdGU6IGl0IG1pZ2h0IGJlIG1vcmUKLSAgICAgIC8v
IHBlcmZvcm1hbnQgdG8gbWFpbnRhaW4gdGhlIHNvcnRpbmcgYXMgd2UgaW5zZXJ0IHRoZW0sIHJh
dGhlciB0aGFuIGFzIHdlCi0gICAgICAvLyBzZXJpYWxpemUgdGhlbSwgYnV0IHRoZSBiaWcgTyBp
cyB0aGUgc2FtZSBlaXRoZXIgd2F5LgotICAgICAgdGhpcy5fbWFwcGluZ3Muc29ydChjbXBNYXBw
aW5nKTsKLQotICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IHRoaXMuX21hcHBpbmdzLmxlbmd0
aDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICAgIG1hcHBpbmcgPSB0aGlzLl9tYXBwaW5nc1tpXTsK
LQotICAgICAgICBpZiAobWFwcGluZy5nZW5lcmF0ZWQubGluZSAhPT0gcHJldmlvdXNHZW5lcmF0
ZWRMaW5lKSB7Ci0gICAgICAgICAgcHJldmlvdXNHZW5lcmF0ZWRDb2x1bW4gPSAwOwotICAgICAg
ICAgIHdoaWxlIChtYXBwaW5nLmdlbmVyYXRlZC5saW5lICE9PSBwcmV2aW91c0dlbmVyYXRlZExp
bmUpIHsKLSAgICAgICAgICAgIHJlc3VsdCArPSAnOyc7Ci0gICAgICAgICAgICBwcmV2aW91c0dl
bmVyYXRlZExpbmUrKzsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0g
ICAgICAgICAgaWYgKGkgPiAwKSB7Ci0gICAgICAgICAgICBpZiAoIWNtcE1hcHBpbmcobWFwcGlu
ZywgdGhpcy5fbWFwcGluZ3NbaSAtIDFdKSkgewotICAgICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIHJlc3VsdCArPSAnLCc7Ci0gICAgICAgICAgfQotICAg
ICAgICB9Ci0KLSAgICAgICAgcmVzdWx0ICs9IGJhc2U2NFZMUS5lbmNvZGUobWFwcGluZy5nZW5l
cmF0ZWQuY29sdW1uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gcHJldmlv
dXNHZW5lcmF0ZWRDb2x1bW4pOwotICAgICAgICBwcmV2aW91c0dlbmVyYXRlZENvbHVtbiA9IG1h
cHBpbmcuZ2VuZXJhdGVkLmNvbHVtbjsKLQotICAgICAgICBpZiAobWFwcGluZy5zb3VyY2UgJiYg
bWFwcGluZy5vcmlnaW5hbCkgewotICAgICAgICAgIHJlc3VsdCArPSBiYXNlNjRWTFEuZW5jb2Rl
KHRoaXMuX3NvdXJjZXMuaW5kZXhPZihtYXBwaW5nLnNvdXJjZSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAtIHByZXZpb3VzU291cmNlKTsKLSAgICAgICAgICBwcmV2aW91
c1NvdXJjZSA9IHRoaXMuX3NvdXJjZXMuaW5kZXhPZihtYXBwaW5nLnNvdXJjZSk7Ci0KLSAgICAg
ICAgICAvLyBsaW5lcyBhcmUgc3RvcmVkIDAtYmFzZWQgaW4gU291cmNlTWFwIHNwZWMgdmVyc2lv
biAzCi0gICAgICAgICAgcmVzdWx0ICs9IGJhc2U2NFZMUS5lbmNvZGUobWFwcGluZy5vcmlnaW5h
bC5saW5lIC0gMQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gcHJldmlv
dXNPcmlnaW5hbExpbmUpOwotICAgICAgICAgIHByZXZpb3VzT3JpZ2luYWxMaW5lID0gbWFwcGlu
Zy5vcmlnaW5hbC5saW5lIC0gMTsKLQotICAgICAgICAgIHJlc3VsdCArPSBiYXNlNjRWTFEuZW5j
b2RlKG1hcHBpbmcub3JpZ2luYWwuY29sdW1uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLSBwcmV2aW91c09yaWdpbmFsQ29sdW1uKTsKLSAgICAgICAgICBwcmV2aW91c09y
aWdpbmFsQ29sdW1uID0gbWFwcGluZy5vcmlnaW5hbC5jb2x1bW47Ci0KLSAgICAgICAgICBpZiAo
bWFwcGluZy5uYW1lKSB7Ci0gICAgICAgICAgICByZXN1bHQgKz0gYmFzZTY0VkxRLmVuY29kZSh0
aGlzLl9uYW1lcy5pbmRleE9mKG1hcHBpbmcubmFtZSkKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC0gcHJldmlvdXNOYW1lKTsKLSAgICAgICAgICAgIHByZXZpb3VzTmFt
ZSA9IHRoaXMuX25hbWVzLmluZGV4T2YobWFwcGluZy5uYW1lKTsKLSAgICAgICAgICB9Ci0gICAg
ICAgIH0KLSAgICAgIH0KLQotICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9OwotCi0gIC8qKgot
ICAgKiBFeHRlcm5hbGl6ZSB0aGUgc291cmNlIG1hcC4KLSAgICovCi0gIFNvdXJjZU1hcEdlbmVy
YXRvci5wcm90b3R5cGUudG9KU09OID0KLSAgICBmdW5jdGlvbiBTb3VyY2VNYXBHZW5lcmF0b3Jf
dG9KU09OKCkgewotICAgICAgdmFyIG1hcCA9IHsKLSAgICAgICAgdmVyc2lvbjogdGhpcy5fdmVy
c2lvbiwKLSAgICAgICAgZmlsZTogdGhpcy5fZmlsZSwKLSAgICAgICAgc291cmNlczogdGhpcy5f
c291cmNlcy50b0FycmF5KCksCi0gICAgICAgIG5hbWVzOiB0aGlzLl9uYW1lcy50b0FycmF5KCks
Ci0gICAgICAgIG1hcHBpbmdzOiB0aGlzLl9zZXJpYWxpemVNYXBwaW5ncygpCi0gICAgICB9Owot
ICAgICAgaWYgKHRoaXMuX3NvdXJjZVJvb3QpIHsKLSAgICAgICAgbWFwLnNvdXJjZVJvb3QgPSB0
aGlzLl9zb3VyY2VSb290OwotICAgICAgfQotICAgICAgaWYgKHRoaXMuX3NvdXJjZXNDb250ZW50
cykgewotICAgICAgICBtYXAuc291cmNlc0NvbnRlbnQgPSBtYXAuc291cmNlcy5tYXAoZnVuY3Rp
b24gKHNvdXJjZSkgewotICAgICAgICAgIGlmIChtYXAuc291cmNlUm9vdCkgewotICAgICAgICAg
ICAgc291cmNlID0gdXRpbC5yZWxhdGl2ZShtYXAuc291cmNlUm9vdCwgc291cmNlKTsKLSAgICAg
ICAgICB9Ci0gICAgICAgICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHku
Y2FsbCgKLSAgICAgICAgICAgIHRoaXMuX3NvdXJjZXNDb250ZW50cywgdXRpbC50b1NldFN0cmlu
Zyhzb3VyY2UpKQotICAgICAgICAgICAgPyB0aGlzLl9zb3VyY2VzQ29udGVudHNbdXRpbC50b1Nl
dFN0cmluZyhzb3VyY2UpXQotICAgICAgICAgICAgOiBudWxsOwotICAgICAgICB9LCB0aGlzKTsK
LSAgICAgIH0KLSAgICAgIHJldHVybiBtYXA7Ci0gICAgfTsKLQotICAvKioKLSAgICogUmVuZGVy
IHRoZSBzb3VyY2UgbWFwIGJlaW5nIGdlbmVyYXRlZCB0byBhIHN0cmluZy4KLSAgICovCi0gIFNv
dXJjZU1hcEdlbmVyYXRvci5wcm90b3R5cGUudG9TdHJpbmcgPQotICAgIGZ1bmN0aW9uIFNvdXJj
ZU1hcEdlbmVyYXRvcl90b1N0cmluZygpIHsKLSAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh0
aGlzKTsKLSAgICB9OwotCi0gIGV4cG9ydHMuU291cmNlTWFwR2VuZXJhdG9yID0gU291cmNlTWFw
R2VuZXJhdG9yOwotCi19KTsKLQotfSx7Ii4vYXJyYXktc2V0Ijo2LCIuL2Jhc2U2NC12bHEiOjcs
Ii4vdXRpbCI6MTMsImFtZGVmaW5lIjoxNH1dLDEyOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxl
eHBvcnRzKXsKLS8qIC0qLSBNb2RlOiBqczsganMtaW5kZW50LWxldmVsOiAyOyAtKi0gKi8KLS8q
Ci0gKiBDb3B5cmlnaHQgMjAxMSBNb3ppbGxhIEZvdW5kYXRpb24gYW5kIGNvbnRyaWJ1dG9ycwot
ICogTGljZW5zZWQgdW5kZXIgdGhlIE5ldyBCU0QgbGljZW5zZS4gU2VlIExJQ0VOU0Ugb3I6Ci0g
KiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlCi0gKi8KLWlmICh0
eXBlb2YgZGVmaW5lICE9PSAnZnVuY3Rpb24nKSB7Ci0gICAgdmFyIGRlZmluZSA9IHJlcXVpcmUo
J2FtZGVmaW5lJykobW9kdWxlLCByZXF1aXJlKTsKLX0KLWRlZmluZShmdW5jdGlvbiAocmVxdWly
ZSwgZXhwb3J0cywgbW9kdWxlKSB7Ci0KLSAgdmFyIFNvdXJjZU1hcEdlbmVyYXRvciA9IHJlcXVp
cmUoJy4vc291cmNlLW1hcC1nZW5lcmF0b3InKS5Tb3VyY2VNYXBHZW5lcmF0b3I7Ci0gIHZhciB1
dGlsID0gcmVxdWlyZSgnLi91dGlsJyk7Ci0KLSAgLyoqCi0gICAqIFNvdXJjZU5vZGVzIHByb3Zp
ZGUgYSB3YXkgdG8gYWJzdHJhY3Qgb3ZlciBpbnRlcnBvbGF0aW5nL2NvbmNhdGVuYXRpbmcKLSAg
ICogc25pcHBldHMgb2YgZ2VuZXJhdGVkIEphdmFTY3JpcHQgc291cmNlIGNvZGUgd2hpbGUgbWFp
bnRhaW5pbmcgdGhlIGxpbmUgYW5kCi0gICAqIGNvbHVtbiBpbmZvcm1hdGlvbiBhc3NvY2lhdGVk
IHdpdGggdGhlIG9yaWdpbmFsIHNvdXJjZSBjb2RlLgotICAgKgotICAgKiBAcGFyYW0gYUxpbmUg
VGhlIG9yaWdpbmFsIGxpbmUgbnVtYmVyLgotICAgKiBAcGFyYW0gYUNvbHVtbiBUaGUgb3JpZ2lu
YWwgY29sdW1uIG51bWJlci4KLSAgICogQHBhcmFtIGFTb3VyY2UgVGhlIG9yaWdpbmFsIHNvdXJj
ZSdzIGZpbGVuYW1lLgotICAgKiBAcGFyYW0gYUNodW5rcyBPcHRpb25hbC4gQW4gYXJyYXkgb2Yg
c3RyaW5ncyB3aGljaCBhcmUgc25pcHBldHMgb2YKLSAgICogICAgICAgIGdlbmVyYXRlZCBKUywg
b3Igb3RoZXIgU291cmNlTm9kZXMuCi0gICAqIEBwYXJhbSBhTmFtZSBUaGUgb3JpZ2luYWwgaWRl
bnRpZmllci4KLSAgICovCi0gIGZ1bmN0aW9uIFNvdXJjZU5vZGUoYUxpbmUsIGFDb2x1bW4sIGFT
b3VyY2UsIGFDaHVua3MsIGFOYW1lKSB7Ci0gICAgdGhpcy5jaGlsZHJlbiA9IFtdOwotICAgIHRo
aXMuc291cmNlQ29udGVudHMgPSB7fTsKLSAgICB0aGlzLmxpbmUgPSBhTGluZSA9PT0gdW5kZWZp
bmVkID8gbnVsbCA6IGFMaW5lOwotICAgIHRoaXMuY29sdW1uID0gYUNvbHVtbiA9PT0gdW5kZWZp
bmVkID8gbnVsbCA6IGFDb2x1bW47Ci0gICAgdGhpcy5zb3VyY2UgPSBhU291cmNlID09PSB1bmRl
ZmluZWQgPyBudWxsIDogYVNvdXJjZTsKLSAgICB0aGlzLm5hbWUgPSBhTmFtZSA9PT0gdW5kZWZp
bmVkID8gbnVsbCA6IGFOYW1lOwotICAgIGlmIChhQ2h1bmtzICE9IG51bGwpIHRoaXMuYWRkKGFD
aHVua3MpOwotICB9Ci0KLSAgLyoqCi0gICAqIENyZWF0ZXMgYSBTb3VyY2VOb2RlIGZyb20gZ2Vu
ZXJhdGVkIGNvZGUgYW5kIGEgU291cmNlTWFwQ29uc3VtZXIuCi0gICAqCi0gICAqIEBwYXJhbSBh
R2VuZXJhdGVkQ29kZSBUaGUgZ2VuZXJhdGVkIGNvZGUKLSAgICogQHBhcmFtIGFTb3VyY2VNYXBD
b25zdW1lciBUaGUgU291cmNlTWFwIGZvciB0aGUgZ2VuZXJhdGVkIGNvZGUKLSAgICovCi0gIFNv
dXJjZU5vZGUuZnJvbVN0cmluZ1dpdGhTb3VyY2VNYXAgPQotICAgIGZ1bmN0aW9uIFNvdXJjZU5v
ZGVfZnJvbVN0cmluZ1dpdGhTb3VyY2VNYXAoYUdlbmVyYXRlZENvZGUsIGFTb3VyY2VNYXBDb25z
dW1lcikgewotICAgICAgLy8gVGhlIFNvdXJjZU5vZGUgd2Ugd2FudCB0byBmaWxsIHdpdGggdGhl
IGdlbmVyYXRlZCBjb2RlCi0gICAgICAvLyBhbmQgdGhlIFNvdXJjZU1hcAotICAgICAgdmFyIG5v
ZGUgPSBuZXcgU291cmNlTm9kZSgpOwotCi0gICAgICAvLyBUaGUgZ2VuZXJhdGVkIGNvZGUKLSAg
ICAgIC8vIFByb2Nlc3NlZCBmcmFnbWVudHMgYXJlIHJlbW92ZWQgZnJvbSB0aGlzIGFycmF5Lgot
ICAgICAgdmFyIHJlbWFpbmluZ0xpbmVzID0gYUdlbmVyYXRlZENvZGUuc3BsaXQoJ1xuJyk7Ci0K
LSAgICAgIC8vIFdlIG5lZWQgdG8gcmVtZW1iZXIgdGhlIHBvc2l0aW9uIG9mICJyZW1haW5pbmdM
aW5lcyIKLSAgICAgIHZhciBsYXN0R2VuZXJhdGVkTGluZSA9IDEsIGxhc3RHZW5lcmF0ZWRDb2x1
bW4gPSAwOwotCi0gICAgICAvLyBUaGUgZ2VuZXJhdGUgU291cmNlTm9kZXMgd2UgbmVlZCBhIGNv
ZGUgcmFuZ2UuCi0gICAgICAvLyBUbyBleHRyYWN0IGl0IGN1cnJlbnQgYW5kIGxhc3QgbWFwcGlu
ZyBpcyB1c2VkLgotICAgICAgLy8gSGVyZSB3ZSBzdG9yZSB0aGUgbGFzdCBtYXBwaW5nLgotICAg
ICAgdmFyIGxhc3RNYXBwaW5nID0gbnVsbDsKLQotICAgICAgYVNvdXJjZU1hcENvbnN1bWVyLmVh
Y2hNYXBwaW5nKGZ1bmN0aW9uIChtYXBwaW5nKSB7Ci0gICAgICAgIGlmIChsYXN0TWFwcGluZyA9
PT0gbnVsbCkgewotICAgICAgICAgIC8vIFdlIGFkZCB0aGUgZ2VuZXJhdGVkIGNvZGUgdW50aWwg
dGhlIGZpcnN0IG1hcHBpbmcKLSAgICAgICAgICAvLyB0byB0aGUgU291cmNlTm9kZSB3aXRob3V0
IGFueSBtYXBwaW5nLgotICAgICAgICAgIC8vIEVhY2ggbGluZSBpcyBhZGRlZCBhcyBzZXBhcmF0
ZSBzdHJpbmcuCi0gICAgICAgICAgd2hpbGUgKGxhc3RHZW5lcmF0ZWRMaW5lIDwgbWFwcGluZy5n
ZW5lcmF0ZWRMaW5lKSB7Ci0gICAgICAgICAgICBub2RlLmFkZChyZW1haW5pbmdMaW5lcy5zaGlm
dCgpICsgIlxuIik7Ci0gICAgICAgICAgICBsYXN0R2VuZXJhdGVkTGluZSsrOwotICAgICAgICAg
IH0KLSAgICAgICAgICBpZiAobGFzdEdlbmVyYXRlZENvbHVtbiA8IG1hcHBpbmcuZ2VuZXJhdGVk
Q29sdW1uKSB7Ci0gICAgICAgICAgICB2YXIgbmV4dExpbmUgPSByZW1haW5pbmdMaW5lc1swXTsK
LSAgICAgICAgICAgIG5vZGUuYWRkKG5leHRMaW5lLnN1YnN0cigwLCBtYXBwaW5nLmdlbmVyYXRl
ZENvbHVtbikpOwotICAgICAgICAgICAgcmVtYWluaW5nTGluZXNbMF0gPSBuZXh0TGluZS5zdWJz
dHIobWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4pOwotICAgICAgICAgICAgbGFzdEdlbmVyYXRlZENv
bHVtbiA9IG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uOwotICAgICAgICAgIH0KLSAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAvLyBXZSBhZGQgdGhlIGNvZGUgZnJvbSAibGFzdE1hcHBpbmciIHRv
ICJtYXBwaW5nIjoKLSAgICAgICAgICAvLyBGaXJzdCBjaGVjayBpZiB0aGVyZSBpcyBhIG5ldyBs
aW5lIGluIGJldHdlZW4uCi0gICAgICAgICAgaWYgKGxhc3RHZW5lcmF0ZWRMaW5lIDwgbWFwcGlu
Zy5nZW5lcmF0ZWRMaW5lKSB7Ci0gICAgICAgICAgICB2YXIgY29kZSA9ICIiOwotICAgICAgICAg
ICAgLy8gQXNzb2NpYXRlIGZ1bGwgbGluZXMgd2l0aCAibGFzdE1hcHBpbmciCi0gICAgICAgICAg
ICBkbyB7Ci0gICAgICAgICAgICAgIGNvZGUgKz0gcmVtYWluaW5nTGluZXMuc2hpZnQoKSArICJc
biI7Ci0gICAgICAgICAgICAgIGxhc3RHZW5lcmF0ZWRMaW5lKys7Ci0gICAgICAgICAgICAgIGxh
c3RHZW5lcmF0ZWRDb2x1bW4gPSAwOwotICAgICAgICAgICAgfSB3aGlsZSAobGFzdEdlbmVyYXRl
ZExpbmUgPCBtYXBwaW5nLmdlbmVyYXRlZExpbmUpOwotICAgICAgICAgICAgLy8gV2hlbiB3ZSBy
ZWFjaGVkIHRoZSBjb3JyZWN0IGxpbmUsIHdlIGFkZCBjb2RlIHVudGlsIHdlCi0gICAgICAgICAg
ICAvLyByZWFjaCB0aGUgY29ycmVjdCBjb2x1bW4gdG9vLgotICAgICAgICAgICAgaWYgKGxhc3RH
ZW5lcmF0ZWRDb2x1bW4gPCBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbikgewotICAgICAgICAgICAg
ICB2YXIgbmV4dExpbmUgPSByZW1haW5pbmdMaW5lc1swXTsKLSAgICAgICAgICAgICAgY29kZSAr
PSBuZXh0TGluZS5zdWJzdHIoMCwgbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4pOwotICAgICAgICAg
ICAgICByZW1haW5pbmdMaW5lc1swXSA9IG5leHRMaW5lLnN1YnN0cihtYXBwaW5nLmdlbmVyYXRl
ZENvbHVtbik7Ci0gICAgICAgICAgICAgIGxhc3RHZW5lcmF0ZWRDb2x1bW4gPSBtYXBwaW5nLmdl
bmVyYXRlZENvbHVtbjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8vIENyZWF0ZSB0aGUg
U291cmNlTm9kZS4KLSAgICAgICAgICAgIGFkZE1hcHBpbmdXaXRoQ29kZShsYXN0TWFwcGluZywg
Y29kZSk7Ci0gICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIFRoZXJlIGlzIG5vIG5l
dyBsaW5lIGluIGJldHdlZW4uCi0gICAgICAgICAgICAvLyBBc3NvY2lhdGUgdGhlIGNvZGUgYmV0
d2VlbiAibGFzdEdlbmVyYXRlZENvbHVtbiIgYW5kCi0gICAgICAgICAgICAvLyAibWFwcGluZy5n
ZW5lcmF0ZWRDb2x1bW4iIHdpdGggImxhc3RNYXBwaW5nIgotICAgICAgICAgICAgdmFyIG5leHRM
aW5lID0gcmVtYWluaW5nTGluZXNbMF07Ci0gICAgICAgICAgICB2YXIgY29kZSA9IG5leHRMaW5l
LnN1YnN0cigwLCBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbiAtCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsYXN0R2VuZXJhdGVkQ29sdW1uKTsKLSAgICAgICAgICAg
IHJlbWFpbmluZ0xpbmVzWzBdID0gbmV4dExpbmUuc3Vic3RyKG1hcHBpbmcuZ2VuZXJhdGVkQ29s
dW1uIC0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxh
c3RHZW5lcmF0ZWRDb2x1bW4pOwotICAgICAgICAgICAgbGFzdEdlbmVyYXRlZENvbHVtbiA9IG1h
cHBpbmcuZ2VuZXJhdGVkQ29sdW1uOwotICAgICAgICAgICAgYWRkTWFwcGluZ1dpdGhDb2RlKGxh
c3RNYXBwaW5nLCBjb2RlKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgbGFzdE1h
cHBpbmcgPSBtYXBwaW5nOwotICAgICAgfSwgdGhpcyk7Ci0gICAgICAvLyBXZSBoYXZlIHByb2Nl
c3NlZCBhbGwgbWFwcGluZ3MuCi0gICAgICAvLyBBc3NvY2lhdGUgdGhlIHJlbWFpbmluZyBjb2Rl
IGluIHRoZSBjdXJyZW50IGxpbmUgd2l0aCAibGFzdE1hcHBpbmciCi0gICAgICAvLyBhbmQgYWRk
IHRoZSByZW1haW5pbmcgbGluZXMgd2l0aG91dCBhbnkgbWFwcGluZwotICAgICAgYWRkTWFwcGlu
Z1dpdGhDb2RlKGxhc3RNYXBwaW5nLCByZW1haW5pbmdMaW5lcy5qb2luKCJcbiIpKTsKLQotICAg
ICAgLy8gQ29weSBzb3VyY2VzQ29udGVudCBpbnRvIFNvdXJjZU5vZGUKLSAgICAgIGFTb3VyY2VN
YXBDb25zdW1lci5zb3VyY2VzLmZvckVhY2goZnVuY3Rpb24gKHNvdXJjZUZpbGUpIHsKLSAgICAg
ICAgdmFyIGNvbnRlbnQgPSBhU291cmNlTWFwQ29uc3VtZXIuc291cmNlQ29udGVudEZvcihzb3Vy
Y2VGaWxlKTsKLSAgICAgICAgaWYgKGNvbnRlbnQpIHsKLSAgICAgICAgICBub2RlLnNldFNvdXJj
ZUNvbnRlbnQoc291cmNlRmlsZSwgY29udGVudCk7Ci0gICAgICAgIH0KLSAgICAgIH0pOwotCi0g
ICAgICByZXR1cm4gbm9kZTsKLQotICAgICAgZnVuY3Rpb24gYWRkTWFwcGluZ1dpdGhDb2RlKG1h
cHBpbmcsIGNvZGUpIHsKLSAgICAgICAgaWYgKG1hcHBpbmcgPT09IG51bGwgfHwgbWFwcGluZy5z
b3VyY2UgPT09IHVuZGVmaW5lZCkgewotICAgICAgICAgIG5vZGUuYWRkKGNvZGUpOwotICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgIG5vZGUuYWRkKG5ldyBTb3VyY2VOb2RlKG1hcHBpbmcub3Jp
Z2luYWxMaW5lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcHBpbmcub3Jp
Z2luYWxDb2x1bW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwcGluZy5z
b3VyY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBwaW5nLm5hbWUpKTsKLSAgICAgICAgfQotICAg
ICAgfQotICAgIH07Ci0KLSAgLyoqCi0gICAqIEFkZCBhIGNodW5rIG9mIGdlbmVyYXRlZCBKUyB0
byB0aGlzIHNvdXJjZSBub2RlLgotICAgKgotICAgKiBAcGFyYW0gYUNodW5rIEEgc3RyaW5nIHNu
aXBwZXQgb2YgZ2VuZXJhdGVkIEpTIGNvZGUsIGFub3RoZXIgaW5zdGFuY2Ugb2YKLSAgICogICAg
ICAgIFNvdXJjZU5vZGUsIG9yIGFuIGFycmF5IHdoZXJlIGVhY2ggbWVtYmVyIGlzIG9uZSBvZiB0
aG9zZSB0aGluZ3MuCi0gICAqLwotICBTb3VyY2VOb2RlLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlv
biBTb3VyY2VOb2RlX2FkZChhQ2h1bmspIHsKLSAgICBpZiAoQXJyYXkuaXNBcnJheShhQ2h1bmsp
KSB7Ci0gICAgICBhQ2h1bmsuZm9yRWFjaChmdW5jdGlvbiAoY2h1bmspIHsKLSAgICAgICAgdGhp
cy5hZGQoY2h1bmspOwotICAgICAgfSwgdGhpcyk7Ci0gICAgfQotICAgIGVsc2UgaWYgKGFDaHVu
ayBpbnN0YW5jZW9mIFNvdXJjZU5vZGUgfHwgdHlwZW9mIGFDaHVuayA9PT0gInN0cmluZyIpIHsK
LSAgICAgIGlmIChhQ2h1bmspIHsKLSAgICAgICAgdGhpcy5jaGlsZHJlbi5wdXNoKGFDaHVuayk7
Ci0gICAgICB9Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigK
LSAgICAgICAgIkV4cGVjdGVkIGEgU291cmNlTm9kZSwgc3RyaW5nLCBvciBhbiBhcnJheSBvZiBT
b3VyY2VOb2RlcyBhbmQgc3RyaW5ncy4gR290ICIgKyBhQ2h1bmsKLSAgICAgICk7Ci0gICAgfQot
ICAgIHJldHVybiB0aGlzOwotICB9OwotCi0gIC8qKgotICAgKiBBZGQgYSBjaHVuayBvZiBnZW5l
cmF0ZWQgSlMgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGlzIHNvdXJjZSBub2RlLgotICAgKgotICAg
KiBAcGFyYW0gYUNodW5rIEEgc3RyaW5nIHNuaXBwZXQgb2YgZ2VuZXJhdGVkIEpTIGNvZGUsIGFu
b3RoZXIgaW5zdGFuY2Ugb2YKLSAgICogICAgICAgIFNvdXJjZU5vZGUsIG9yIGFuIGFycmF5IHdo
ZXJlIGVhY2ggbWVtYmVyIGlzIG9uZSBvZiB0aG9zZSB0aGluZ3MuCi0gICAqLwotICBTb3VyY2VO
b2RlLnByb3RvdHlwZS5wcmVwZW5kID0gZnVuY3Rpb24gU291cmNlTm9kZV9wcmVwZW5kKGFDaHVu
aykgewotICAgIGlmIChBcnJheS5pc0FycmF5KGFDaHVuaykpIHsKLSAgICAgIGZvciAodmFyIGkg
PSBhQ2h1bmsubGVuZ3RoLTE7IGkgPj0gMDsgaS0tKSB7Ci0gICAgICAgIHRoaXMucHJlcGVuZChh
Q2h1bmtbaV0pOwotICAgICAgfQotICAgIH0KLSAgICBlbHNlIGlmIChhQ2h1bmsgaW5zdGFuY2Vv
ZiBTb3VyY2VOb2RlIHx8IHR5cGVvZiBhQ2h1bmsgPT09ICJzdHJpbmciKSB7Ci0gICAgICB0aGlz
LmNoaWxkcmVuLnVuc2hpZnQoYUNodW5rKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICB0aHJv
dyBuZXcgVHlwZUVycm9yKAotICAgICAgICAiRXhwZWN0ZWQgYSBTb3VyY2VOb2RlLCBzdHJpbmcs
IG9yIGFuIGFycmF5IG9mIFNvdXJjZU5vZGVzIGFuZCBzdHJpbmdzLiBHb3QgIiArIGFDaHVuawot
ICAgICAgKTsKLSAgICB9Ci0gICAgcmV0dXJuIHRoaXM7Ci0gIH07Ci0KLSAgLyoqCi0gICAqIFdh
bGsgb3ZlciB0aGUgdHJlZSBvZiBKUyBzbmlwcGV0cyBpbiB0aGlzIG5vZGUgYW5kIGl0cyBjaGls
ZHJlbi4gVGhlCi0gICAqIHdhbGtpbmcgZnVuY3Rpb24gaXMgY2FsbGVkIG9uY2UgZm9yIGVhY2gg
c25pcHBldCBvZiBKUyBhbmQgaXMgcGFzc2VkIHRoYXQKLSAgICogc25pcHBldCBhbmQgdGhlIGl0
cyBvcmlnaW5hbCBhc3NvY2lhdGVkIHNvdXJjZSdzIGxpbmUvY29sdW1uIGxvY2F0aW9uLgotICAg
KgotICAgKiBAcGFyYW0gYUZuIFRoZSB0cmF2ZXJzYWwgZnVuY3Rpb24uCi0gICAqLwotICBTb3Vy
Y2VOb2RlLnByb3RvdHlwZS53YWxrID0gZnVuY3Rpb24gU291cmNlTm9kZV93YWxrKGFGbikgewot
ICAgIHRoaXMuY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiAoY2h1bmspIHsKLSAgICAgIGlmIChj
aHVuayBpbnN0YW5jZW9mIFNvdXJjZU5vZGUpIHsKLSAgICAgICAgY2h1bmsud2FsayhhRm4pOwot
ICAgICAgfQotICAgICAgZWxzZSB7Ci0gICAgICAgIGlmIChjaHVuayAhPT0gJycpIHsKLSAgICAg
ICAgICBhRm4oY2h1bmssIHsgc291cmNlOiB0aGlzLnNvdXJjZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgbGluZTogdGhpcy5saW5lLAotICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW46IHRo
aXMuY29sdW1uLAotICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB0aGlzLm5hbWUgfSk7Ci0g
ICAgICAgIH0KLSAgICAgIH0KLSAgICB9LCB0aGlzKTsKLSAgfTsKLQotICAvKioKLSAgICogTGlr
ZSBgU3RyaW5nLnByb3RvdHlwZS5qb2luYCBleGNlcHQgZm9yIFNvdXJjZU5vZGVzLiBJbnNlcnRz
IGBhU3RyYCBiZXR3ZWVuCi0gICAqIGVhY2ggb2YgYHRoaXMuY2hpbGRyZW5gLgotICAgKgotICAg
KiBAcGFyYW0gYVNlcCBUaGUgc2VwYXJhdG9yLgotICAgKi8KLSAgU291cmNlTm9kZS5wcm90b3R5
cGUuam9pbiA9IGZ1bmN0aW9uIFNvdXJjZU5vZGVfam9pbihhU2VwKSB7Ci0gICAgdmFyIG5ld0No
aWxkcmVuOwotICAgIHZhciBpOwotICAgIHZhciBsZW4gPSB0aGlzLmNoaWxkcmVuLmxlbmd0aDsK
LSAgICBpZiAobGVuID4gMCkgewotICAgICAgbmV3Q2hpbGRyZW4gPSBbXTsKLSAgICAgIGZvciAo
aSA9IDA7IGkgPCBsZW4tMTsgaSsrKSB7Ci0gICAgICAgIG5ld0NoaWxkcmVuLnB1c2godGhpcy5j
aGlsZHJlbltpXSk7Ci0gICAgICAgIG5ld0NoaWxkcmVuLnB1c2goYVNlcCk7Ci0gICAgICB9Ci0g
ICAgICBuZXdDaGlsZHJlbi5wdXNoKHRoaXMuY2hpbGRyZW5baV0pOwotICAgICAgdGhpcy5jaGls
ZHJlbiA9IG5ld0NoaWxkcmVuOwotICAgIH0KLSAgICByZXR1cm4gdGhpczsKLSAgfTsKLQotICAv
KioKLSAgICogQ2FsbCBTdHJpbmcucHJvdG90eXBlLnJlcGxhY2Ugb24gdGhlIHZlcnkgcmlnaHQt
bW9zdCBzb3VyY2Ugc25pcHBldC4gVXNlZnVsCi0gICAqIGZvciB0cmltbWluZyB3aGl0ZXNwYWNl
IGZyb20gdGhlIGVuZCBvZiBhIHNvdXJjZSBub2RlLCBldGMuCi0gICAqCi0gICAqIEBwYXJhbSBh
UGF0dGVybiBUaGUgcGF0dGVybiB0byByZXBsYWNlLgotICAgKiBAcGFyYW0gYVJlcGxhY2VtZW50
IFRoZSB0aGluZyB0byByZXBsYWNlIHRoZSBwYXR0ZXJuIHdpdGguCi0gICAqLwotICBTb3VyY2VO
b2RlLnByb3RvdHlwZS5yZXBsYWNlUmlnaHQgPSBmdW5jdGlvbiBTb3VyY2VOb2RlX3JlcGxhY2VS
aWdodChhUGF0dGVybiwgYVJlcGxhY2VtZW50KSB7Ci0gICAgdmFyIGxhc3RDaGlsZCA9IHRoaXMu
Y2hpbGRyZW5bdGhpcy5jaGlsZHJlbi5sZW5ndGggLSAxXTsKLSAgICBpZiAobGFzdENoaWxkIGlu
c3RhbmNlb2YgU291cmNlTm9kZSkgewotICAgICAgbGFzdENoaWxkLnJlcGxhY2VSaWdodChhUGF0
dGVybiwgYVJlcGxhY2VtZW50KTsKLSAgICB9Ci0gICAgZWxzZSBpZiAodHlwZW9mIGxhc3RDaGls
ZCA9PT0gJ3N0cmluZycpIHsKLSAgICAgIHRoaXMuY2hpbGRyZW5bdGhpcy5jaGlsZHJlbi5sZW5n
dGggLSAxXSA9IGxhc3RDaGlsZC5yZXBsYWNlKGFQYXR0ZXJuLCBhUmVwbGFjZW1lbnQpOwotICAg
IH0KLSAgICBlbHNlIHsKLSAgICAgIHRoaXMuY2hpbGRyZW4ucHVzaCgnJy5yZXBsYWNlKGFQYXR0
ZXJuLCBhUmVwbGFjZW1lbnQpKTsKLSAgICB9Ci0gICAgcmV0dXJuIHRoaXM7Ci0gIH07Ci0KLSAg
LyoqCi0gICAqIFNldCB0aGUgc291cmNlIGNvbnRlbnQgZm9yIGEgc291cmNlIGZpbGUuIFRoaXMg
d2lsbCBiZSBhZGRlZCB0byB0aGUgU291cmNlTWFwR2VuZXJhdG9yCi0gICAqIGluIHRoZSBzb3Vy
Y2VzQ29udGVudCBmaWVsZC4KLSAgICoKLSAgICogQHBhcmFtIGFTb3VyY2VGaWxlIFRoZSBmaWxl
bmFtZSBvZiB0aGUgc291cmNlIGZpbGUKLSAgICogQHBhcmFtIGFTb3VyY2VDb250ZW50IFRoZSBj
b250ZW50IG9mIHRoZSBzb3VyY2UgZmlsZQotICAgKi8KLSAgU291cmNlTm9kZS5wcm90b3R5cGUu
c2V0U291cmNlQ29udGVudCA9Ci0gICAgZnVuY3Rpb24gU291cmNlTm9kZV9zZXRTb3VyY2VDb250
ZW50KGFTb3VyY2VGaWxlLCBhU291cmNlQ29udGVudCkgewotICAgICAgdGhpcy5zb3VyY2VDb250
ZW50c1t1dGlsLnRvU2V0U3RyaW5nKGFTb3VyY2VGaWxlKV0gPSBhU291cmNlQ29udGVudDsKLSAg
ICB9OwotCi0gIC8qKgotICAgKiBXYWxrIG92ZXIgdGhlIHRyZWUgb2YgU291cmNlTm9kZXMuIFRo
ZSB3YWxraW5nIGZ1bmN0aW9uIGlzIGNhbGxlZCBmb3IgZWFjaAotICAgKiBzb3VyY2UgZmlsZSBj
b250ZW50IGFuZCBpcyBwYXNzZWQgdGhlIGZpbGVuYW1lIGFuZCBzb3VyY2UgY29udGVudC4KLSAg
ICoKLSAgICogQHBhcmFtIGFGbiBUaGUgdHJhdmVyc2FsIGZ1bmN0aW9uLgotICAgKi8KLSAgU291
cmNlTm9kZS5wcm90b3R5cGUud2Fsa1NvdXJjZUNvbnRlbnRzID0KLSAgICBmdW5jdGlvbiBTb3Vy
Y2VOb2RlX3dhbGtTb3VyY2VDb250ZW50cyhhRm4pIHsKLSAgICAgIHRoaXMuY2hpbGRyZW4uZm9y
RWFjaChmdW5jdGlvbiAoY2h1bmspIHsKLSAgICAgICAgaWYgKGNodW5rIGluc3RhbmNlb2YgU291
cmNlTm9kZSkgewotICAgICAgICAgIGNodW5rLndhbGtTb3VyY2VDb250ZW50cyhhRm4pOwotICAg
ICAgICB9Ci0gICAgICB9LCB0aGlzKTsKLSAgICAgIE9iamVjdC5rZXlzKHRoaXMuc291cmNlQ29u
dGVudHMpLmZvckVhY2goZnVuY3Rpb24gKHNvdXJjZUZpbGVLZXkpIHsKLSAgICAgICAgYUZuKHV0
aWwuZnJvbVNldFN0cmluZyhzb3VyY2VGaWxlS2V5KSwgdGhpcy5zb3VyY2VDb250ZW50c1tzb3Vy
Y2VGaWxlS2V5XSk7Ci0gICAgICB9LCB0aGlzKTsKLSAgICB9OwotCi0gIC8qKgotICAgKiBSZXR1
cm4gdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIHNvdXJjZSBub2RlLiBXYWxrcyBv
dmVyIHRoZSB0cmVlCi0gICAqIGFuZCBjb25jYXRlbmF0ZXMgYWxsIHRoZSB2YXJpb3VzIHNuaXBw
ZXRzIHRvZ2V0aGVyIHRvIG9uZSBzdHJpbmcuCi0gICAqLwotICBTb3VyY2VOb2RlLnByb3RvdHlw
ZS50b1N0cmluZyA9IGZ1bmN0aW9uIFNvdXJjZU5vZGVfdG9TdHJpbmcoKSB7Ci0gICAgdmFyIHN0
ciA9ICIiOwotICAgIHRoaXMud2FsayhmdW5jdGlvbiAoY2h1bmspIHsKLSAgICAgIHN0ciArPSBj
aHVuazsKLSAgICB9KTsKLSAgICByZXR1cm4gc3RyOwotICB9OwotCi0gIC8qKgotICAgKiBSZXR1
cm5zIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBzb3VyY2Ugbm9kZSBhbG9uZyB3
aXRoIGEgc291cmNlCi0gICAqIG1hcC4KLSAgICovCi0gIFNvdXJjZU5vZGUucHJvdG90eXBlLnRv
U3RyaW5nV2l0aFNvdXJjZU1hcCA9IGZ1bmN0aW9uIFNvdXJjZU5vZGVfdG9TdHJpbmdXaXRoU291
cmNlTWFwKGFBcmdzKSB7Ci0gICAgdmFyIGdlbmVyYXRlZCA9IHsKLSAgICAgIGNvZGU6ICIiLAot
ICAgICAgbGluZTogMSwKLSAgICAgIGNvbHVtbjogMAotICAgIH07Ci0gICAgdmFyIG1hcCA9IG5l
dyBTb3VyY2VNYXBHZW5lcmF0b3IoYUFyZ3MpOwotICAgIHZhciBzb3VyY2VNYXBwaW5nQWN0aXZl
ID0gZmFsc2U7Ci0gICAgdGhpcy53YWxrKGZ1bmN0aW9uIChjaHVuaywgb3JpZ2luYWwpIHsKLSAg
ICAgIGdlbmVyYXRlZC5jb2RlICs9IGNodW5rOwotICAgICAgaWYgKG9yaWdpbmFsLnNvdXJjZSAh
PT0gbnVsbAotICAgICAgICAgICYmIG9yaWdpbmFsLmxpbmUgIT09IG51bGwKLSAgICAgICAgICAm
JiBvcmlnaW5hbC5jb2x1bW4gIT09IG51bGwpIHsKLSAgICAgICAgbWFwLmFkZE1hcHBpbmcoewot
ICAgICAgICAgIHNvdXJjZTogb3JpZ2luYWwuc291cmNlLAotICAgICAgICAgIG9yaWdpbmFsOiB7
Ci0gICAgICAgICAgICBsaW5lOiBvcmlnaW5hbC5saW5lLAotICAgICAgICAgICAgY29sdW1uOiBv
cmlnaW5hbC5jb2x1bW4KLSAgICAgICAgICB9LAotICAgICAgICAgIGdlbmVyYXRlZDogewotICAg
ICAgICAgICAgbGluZTogZ2VuZXJhdGVkLmxpbmUsCi0gICAgICAgICAgICBjb2x1bW46IGdlbmVy
YXRlZC5jb2x1bW4KLSAgICAgICAgICB9LAotICAgICAgICAgIG5hbWU6IG9yaWdpbmFsLm5hbWUK
LSAgICAgICAgfSk7Ci0gICAgICAgIHNvdXJjZU1hcHBpbmdBY3RpdmUgPSB0cnVlOwotICAgICAg
fSBlbHNlIGlmIChzb3VyY2VNYXBwaW5nQWN0aXZlKSB7Ci0gICAgICAgIG1hcC5hZGRNYXBwaW5n
KHsKLSAgICAgICAgICBnZW5lcmF0ZWQ6IHsKLSAgICAgICAgICAgIGxpbmU6IGdlbmVyYXRlZC5s
aW5lLAotICAgICAgICAgICAgY29sdW1uOiBnZW5lcmF0ZWQuY29sdW1uCi0gICAgICAgICAgfQot
ICAgICAgICB9KTsKLSAgICAgICAgc291cmNlTWFwcGluZ0FjdGl2ZSA9IGZhbHNlOwotICAgICAg
fQotICAgICAgY2h1bmsuc3BsaXQoJycpLmZvckVhY2goZnVuY3Rpb24gKGNoKSB7Ci0gICAgICAg
IGlmIChjaCA9PT0gJ1xuJykgewotICAgICAgICAgIGdlbmVyYXRlZC5saW5lKys7Ci0gICAgICAg
ICAgZ2VuZXJhdGVkLmNvbHVtbiA9IDA7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgZ2Vu
ZXJhdGVkLmNvbHVtbisrOwotICAgICAgICB9Ci0gICAgICB9KTsKLSAgICB9KTsKLSAgICB0aGlz
LndhbGtTb3VyY2VDb250ZW50cyhmdW5jdGlvbiAoc291cmNlRmlsZSwgc291cmNlQ29udGVudCkg
ewotICAgICAgbWFwLnNldFNvdXJjZUNvbnRlbnQoc291cmNlRmlsZSwgc291cmNlQ29udGVudCk7
Ci0gICAgfSk7Ci0KLSAgICByZXR1cm4geyBjb2RlOiBnZW5lcmF0ZWQuY29kZSwgbWFwOiBtYXAg
fTsKLSAgfTsKLQotICBleHBvcnRzLlNvdXJjZU5vZGUgPSBTb3VyY2VOb2RlOwotCi19KTsKLQot
fSx7Ii4vc291cmNlLW1hcC1nZW5lcmF0b3IiOjExLCIuL3V0aWwiOjEzLCJhbWRlZmluZSI6MTR9
XSwxMzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7Ci0vKiAtKi0gTW9kZToganM7
IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovCi0vKgotICogQ29weXJpZ2h0IDIwMTEgTW96aWxs
YSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnMKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcg
QlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOgotICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xp
Y2Vuc2VzL0JTRC0zLUNsYXVzZQotICovCi1pZiAodHlwZW9mIGRlZmluZSAhPT0gJ2Z1bmN0aW9u
JykgewotICAgIHZhciBkZWZpbmUgPSByZXF1aXJlKCdhbWRlZmluZScpKG1vZHVsZSwgcmVxdWly
ZSk7Ci19Ci1kZWZpbmUoZnVuY3Rpb24gKHJlcXVpcmUsIGV4cG9ydHMsIG1vZHVsZSkgewotCi0g
IC8qKgotICAgKiBUaGlzIGlzIGEgaGVscGVyIGZ1bmN0aW9uIGZvciBnZXR0aW5nIHZhbHVlcyBm
cm9tIHBhcmFtZXRlci9vcHRpb25zCi0gICAqIG9iamVjdHMuCi0gICAqCi0gICAqIEBwYXJhbSBh
cmdzIFRoZSBvYmplY3Qgd2UgYXJlIGV4dHJhY3RpbmcgdmFsdWVzIGZyb20KLSAgICogQHBhcmFt
IG5hbWUgVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IHdlIGFyZSBnZXR0aW5nLgotICAgKiBAcGFy
YW0gZGVmYXVsdFZhbHVlIEFuIG9wdGlvbmFsIHZhbHVlIHRvIHJldHVybiBpZiB0aGUgcHJvcGVy
dHkgaXMgbWlzc2luZwotICAgKiBmcm9tIHRoZSBvYmplY3QuIElmIHRoaXMgaXMgbm90IHNwZWNp
ZmllZCBhbmQgdGhlIHByb3BlcnR5IGlzIG1pc3NpbmcsIGFuCi0gICAqIGVycm9yIHdpbGwgYmUg
dGhyb3duLgotICAgKi8KLSAgZnVuY3Rpb24gZ2V0QXJnKGFBcmdzLCBhTmFtZSwgYURlZmF1bHRW
YWx1ZSkgewotICAgIGlmIChhTmFtZSBpbiBhQXJncykgewotICAgICAgcmV0dXJuIGFBcmdzW2FO
YW1lXTsKLSAgICB9IGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDMpIHsKLSAgICAgIHJl
dHVybiBhRGVmYXVsdFZhbHVlOwotICAgIH0gZWxzZSB7Ci0gICAgICB0aHJvdyBuZXcgRXJyb3Io
JyInICsgYU5hbWUgKyAnIiBpcyBhIHJlcXVpcmVkIGFyZ3VtZW50LicpOwotICAgIH0KLSAgfQot
ICBleHBvcnRzLmdldEFyZyA9IGdldEFyZzsKLQotICB2YXIgdXJsUmVnZXhwID0gLyhbXHcrXC0u
XSspOlwvXC8oKFx3KzpcdyspQCk/KFtcdy5dKyk/KDooXGQrKSk/KFxTKyk/LzsKLQotICBmdW5j
dGlvbiB1cmxQYXJzZShhVXJsKSB7Ci0gICAgdmFyIG1hdGNoID0gYVVybC5tYXRjaCh1cmxSZWdl
eHApOwotICAgIGlmICghbWF0Y2gpIHsKLSAgICAgIHJldHVybiBudWxsOwotICAgIH0KLSAgICBy
ZXR1cm4gewotICAgICAgc2NoZW1lOiBtYXRjaFsxXSwKLSAgICAgIGF1dGg6IG1hdGNoWzNdLAot
ICAgICAgaG9zdDogbWF0Y2hbNF0sCi0gICAgICBwb3J0OiBtYXRjaFs2XSwKLSAgICAgIHBhdGg6
IG1hdGNoWzddCi0gICAgfTsKLSAgfQotICBleHBvcnRzLnVybFBhcnNlID0gdXJsUGFyc2U7Ci0K
LSAgZnVuY3Rpb24gdXJsR2VuZXJhdGUoYVBhcnNlZFVybCkgewotICAgIHZhciB1cmwgPSBhUGFy
c2VkVXJsLnNjaGVtZSArICI6Ly8iOwotICAgIGlmIChhUGFyc2VkVXJsLmF1dGgpIHsKLSAgICAg
IHVybCArPSBhUGFyc2VkVXJsLmF1dGggKyAiQCIKLSAgICB9Ci0gICAgaWYgKGFQYXJzZWRVcmwu
aG9zdCkgewotICAgICAgdXJsICs9IGFQYXJzZWRVcmwuaG9zdDsKLSAgICB9Ci0gICAgaWYgKGFQ
YXJzZWRVcmwucG9ydCkgewotICAgICAgdXJsICs9ICI6IiArIGFQYXJzZWRVcmwucG9ydAotICAg
IH0KLSAgICBpZiAoYVBhcnNlZFVybC5wYXRoKSB7Ci0gICAgICB1cmwgKz0gYVBhcnNlZFVybC5w
YXRoOwotICAgIH0KLSAgICByZXR1cm4gdXJsOwotICB9Ci0gIGV4cG9ydHMudXJsR2VuZXJhdGUg
PSB1cmxHZW5lcmF0ZTsKLQotICBmdW5jdGlvbiBqb2luKGFSb290LCBhUGF0aCkgewotICAgIHZh
ciB1cmw7Ci0KLSAgICBpZiAoYVBhdGgubWF0Y2godXJsUmVnZXhwKSkgewotICAgICAgcmV0dXJu
IGFQYXRoOwotICAgIH0KLQotICAgIGlmIChhUGF0aC5jaGFyQXQoMCkgPT09ICcvJyAmJiAodXJs
ID0gdXJsUGFyc2UoYVJvb3QpKSkgewotICAgICAgdXJsLnBhdGggPSBhUGF0aDsKLSAgICAgIHJl
dHVybiB1cmxHZW5lcmF0ZSh1cmwpOwotICAgIH0KLQotICAgIHJldHVybiBhUm9vdC5yZXBsYWNl
KC9cLyQvLCAnJykgKyAnLycgKyBhUGF0aDsKLSAgfQotICBleHBvcnRzLmpvaW4gPSBqb2luOwot
Ci0gIC8qKgotICAgKiBCZWNhdXNlIGJlaGF2aW9yIGdvZXMgd2Fja3kgd2hlbiB5b3Ugc2V0IGBf
X3Byb3RvX19gIG9uIG9iamVjdHMsIHdlCi0gICAqIGhhdmUgdG8gcHJlZml4IGFsbCB0aGUgc3Ry
aW5ncyBpbiBvdXIgc2V0IHdpdGggYW4gYXJiaXRyYXJ5IGNoYXJhY3Rlci4KLSAgICoKLSAgICog
U2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9tb3ppbGxhL3NvdXJjZS1tYXAvcHVsbC8zMSBhbmQKLSAg
ICogaHR0cHM6Ly9naXRodWIuY29tL21vemlsbGEvc291cmNlLW1hcC9pc3N1ZXMvMzAKLSAgICoK
LSAgICogQHBhcmFtIFN0cmluZyBhU3RyCi0gICAqLwotICBmdW5jdGlvbiB0b1NldFN0cmluZyhh
U3RyKSB7Ci0gICAgcmV0dXJuICckJyArIGFTdHI7Ci0gIH0KLSAgZXhwb3J0cy50b1NldFN0cmlu
ZyA9IHRvU2V0U3RyaW5nOwotCi0gIGZ1bmN0aW9uIGZyb21TZXRTdHJpbmcoYVN0cikgewotICAg
IHJldHVybiBhU3RyLnN1YnN0cigxKTsKLSAgfQotICBleHBvcnRzLmZyb21TZXRTdHJpbmcgPSBm
cm9tU2V0U3RyaW5nOwotCi0gIGZ1bmN0aW9uIHJlbGF0aXZlKGFSb290LCBhUGF0aCkgewotICAg
IGFSb290ID0gYVJvb3QucmVwbGFjZSgvXC8kLywgJycpOwotCi0gICAgdmFyIHVybCA9IHVybFBh
cnNlKGFSb290KTsKLSAgICBpZiAoYVBhdGguY2hhckF0KDApID09ICIvIiAmJiB1cmwgJiYgdXJs
LnBhdGggPT0gIi8iKSB7Ci0gICAgICByZXR1cm4gYVBhdGguc2xpY2UoMSk7Ci0gICAgfQotCi0g
ICAgcmV0dXJuIGFQYXRoLmluZGV4T2YoYVJvb3QgKyAnLycpID09PSAwCi0gICAgICA/IGFQYXRo
LnN1YnN0cihhUm9vdC5sZW5ndGggKyAxKQotICAgICAgOiBhUGF0aDsKLSAgfQotICBleHBvcnRz
LnJlbGF0aXZlID0gcmVsYXRpdmU7Ci0KLX0pOwotCi19LHsiYW1kZWZpbmUiOjE0fV0sMTQ6W2Z1
bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewotKGZ1bmN0aW9uKHByb2Nlc3MsX19maWxl
bmFtZSl7LyoqIHZpbTogZXQ6dHM9NDpzdz00OnN0cz00Ci0gKiBAbGljZW5zZSBhbWRlZmluZSAw
LjAuNSBDb3B5cmlnaHQgKGMpIDIwMTEsIFRoZSBEb2pvIEZvdW5kYXRpb24gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KLSAqIEF2YWlsYWJsZSB2aWEgdGhlIE1JVCBvciBuZXcgQlNEIGxpY2Vuc2UuCi0g
KiBzZWU6IGh0dHA6Ly9naXRodWIuY29tL2pyYnVya2UvYW1kZWZpbmUgZm9yIGRldGFpbHMKLSAq
LwotCi0vKmpzbGludCBub2RlOiB0cnVlICovCi0vKmdsb2JhbCBtb2R1bGUsIHByb2Nlc3MgKi8K
LSd1c2Ugc3RyaWN0JzsKLQotdmFyIHBhdGggPSByZXF1aXJlKCdwYXRoJyk7Ci0KLS8qKgotICog
Q3JlYXRlcyBhIGRlZmluZSBmb3Igbm9kZS4KLSAqIEBwYXJhbSB7T2JqZWN0fSBtb2R1bGUgdGhl
ICJtb2R1bGUiIG9iamVjdCB0aGF0IGlzIGRlZmluZWQgYnkgTm9kZSBmb3IgdGhlCi0gKiBjdXJy
ZW50IG1vZHVsZS4KLSAqIEBwYXJhbSB7RnVuY3Rpb259IFtyZXF1aXJlXS4gTm9kZSdzIHJlcXVp
cmUgZnVuY3Rpb24gZm9yIHRoZSBjdXJyZW50IG1vZHVsZS4KLSAqIEl0IG9ubHkgbmVlZHMgdG8g
YmUgcGFzc2VkIGluIE5vZGUgdmVyc2lvbnMgYmVmb3JlIDAuNSwgd2hlbiBtb2R1bGUucmVxdWly
ZQotICogZGlkIG5vdCBleGlzdC4KLSAqIEByZXR1cm5zIHtGdW5jdGlvbn0gYSBkZWZpbmUgZnVu
Y3Rpb24gdGhhdCBpcyB1c2FibGUgZm9yIHRoZSBjdXJyZW50IG5vZGUKLSAqIG1vZHVsZS4KLSAq
LwotZnVuY3Rpb24gYW1kZWZpbmUobW9kdWxlLCByZXF1aXJlKSB7Ci0gICAgdmFyIGRlZmluZUNh
Y2hlID0ge30sCi0gICAgICAgIGxvYWRlckNhY2hlID0ge30sCi0gICAgICAgIGFscmVhZHlDYWxs
ZWQgPSBmYWxzZSwKLSAgICAgICAgbWFrZVJlcXVpcmUsIHN0cmluZ1JlcXVpcmU7Ci0KLSAgICAv
KioKLSAgICAgKiBUcmltcyB0aGUgLiBhbmQgLi4gZnJvbSBhbiBhcnJheSBvZiBwYXRoIHNlZ21l
bnRzLgotICAgICAqIEl0IHdpbGwga2VlcCBhIGxlYWRpbmcgcGF0aCBzZWdtZW50IGlmIGEgLi4g
d2lsbCBiZWNvbWUKLSAgICAgKiB0aGUgZmlyc3QgcGF0aCBzZWdtZW50LCB0byBoZWxwIHdpdGgg
bW9kdWxlIG5hbWUgbG9va3VwcywKLSAgICAgKiB3aGljaCBhY3QgbGlrZSBwYXRocywgYnV0IGNh
biBiZSByZW1hcHBlZC4gQnV0IHRoZSBlbmQgcmVzdWx0LAotICAgICAqIGFsbCBwYXRocyB0aGF0
IHVzZSB0aGlzIGZ1bmN0aW9uIHNob3VsZCBsb29rIG5vcm1hbGl6ZWQuCi0gICAgICogTk9URTog
dGhpcyBtZXRob2QgTU9ESUZJRVMgdGhlIGlucHV0IGFycmF5LgotICAgICAqIEBwYXJhbSB7QXJy
YXl9IGFyeSB0aGUgYXJyYXkgb2YgcGF0aCBzZWdtZW50cy4KLSAgICAgKi8KLSAgICBmdW5jdGlv
biB0cmltRG90cyhhcnkpIHsKLSAgICAgICAgdmFyIGksIHBhcnQ7Ci0gICAgICAgIGZvciAoaSA9
IDA7IGFyeVtpXTsgaSs9IDEpIHsKLSAgICAgICAgICAgIHBhcnQgPSBhcnlbaV07Ci0gICAgICAg
ICAgICBpZiAocGFydCA9PT0gJy4nKSB7Ci0gICAgICAgICAgICAgICAgYXJ5LnNwbGljZShpLCAx
KTsKLSAgICAgICAgICAgICAgICBpIC09IDE7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKHBhcnQg
PT09ICcuLicpIHsKLSAgICAgICAgICAgICAgICBpZiAoaSA9PT0gMSAmJiAoYXJ5WzJdID09PSAn
Li4nIHx8IGFyeVswXSA9PT0gJy4uJykpIHsKLSAgICAgICAgICAgICAgICAgICAgLy9FbmQgb2Yg
dGhlIGxpbmUuIEtlZXAgYXQgbGVhc3Qgb25lIG5vbi1kb3QKLSAgICAgICAgICAgICAgICAgICAg
Ly9wYXRoIHNlZ21lbnQgYXQgdGhlIGZyb250IHNvIGl0IGNhbiBiZSBtYXBwZWQKLSAgICAgICAg
ICAgICAgICAgICAgLy9jb3JyZWN0bHkgdG8gZGlzay4gT3RoZXJ3aXNlLCB0aGVyZSBpcyBsaWtl
bHkKLSAgICAgICAgICAgICAgICAgICAgLy9ubyBwYXRoIG1hcHBpbmcgZm9yIGEgcGF0aCBzdGFy
dGluZyB3aXRoICcuLicuCi0gICAgICAgICAgICAgICAgICAgIC8vVGhpcyBjYW4gc3RpbGwgZmFp
bCwgYnV0IGNhdGNoZXMgdGhlIG1vc3QgcmVhc29uYWJsZQotICAgICAgICAgICAgICAgICAgICAv
L3VzZXMgb2YgLi4KLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
fSBlbHNlIGlmIChpID4gMCkgewotICAgICAgICAgICAgICAgICAgICBhcnkuc3BsaWNlKGkgLSAx
LCAyKTsKLSAgICAgICAgICAgICAgICAgICAgaSAtPSAyOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZShu
YW1lLCBiYXNlTmFtZSkgewotICAgICAgICB2YXIgYmFzZVBhcnRzOwotCi0gICAgICAgIC8vQWRq
dXN0IGFueSByZWxhdGl2ZSBwYXRocy4KLSAgICAgICAgaWYgKG5hbWUgJiYgbmFtZS5jaGFyQXQo
MCkgPT09ICcuJykgewotICAgICAgICAgICAgLy9JZiBoYXZlIGEgYmFzZSBuYW1lLCB0cnkgdG8g
bm9ybWFsaXplIGFnYWluc3QgaXQsCi0gICAgICAgICAgICAvL290aGVyd2lzZSwgYXNzdW1lIGl0
IGlzIGEgdG9wLWxldmVsIHJlcXVpcmUgdGhhdCB3aWxsCi0gICAgICAgICAgICAvL2JlIHJlbGF0
aXZlIHRvIGJhc2VVcmwgaW4gdGhlIGVuZC4KLSAgICAgICAgICAgIGlmIChiYXNlTmFtZSkgewot
ICAgICAgICAgICAgICAgIGJhc2VQYXJ0cyA9IGJhc2VOYW1lLnNwbGl0KCcvJyk7Ci0gICAgICAg
ICAgICAgICAgYmFzZVBhcnRzID0gYmFzZVBhcnRzLnNsaWNlKDAsIGJhc2VQYXJ0cy5sZW5ndGgg
LSAxKTsKLSAgICAgICAgICAgICAgICBiYXNlUGFydHMgPSBiYXNlUGFydHMuY29uY2F0KG5hbWUu
c3BsaXQoJy8nKSk7Ci0gICAgICAgICAgICAgICAgdHJpbURvdHMoYmFzZVBhcnRzKTsKLSAgICAg
ICAgICAgICAgICBuYW1lID0gYmFzZVBhcnRzLmpvaW4oJy8nKTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotCi0gICAgICAgIHJldHVybiBuYW1lOwotICAgIH0KLQotICAgIC8qKgotICAgICAq
IENyZWF0ZSB0aGUgbm9ybWFsaXplKCkgZnVuY3Rpb24gcGFzc2VkIHRvIGEgbG9hZGVyIHBsdWdp
bidzCi0gICAgICogbm9ybWFsaXplIG1ldGhvZC4KLSAgICAgKi8KLSAgICBmdW5jdGlvbiBtYWtl
Tm9ybWFsaXplKHJlbE5hbWUpIHsKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChuYW1lKSB7Ci0g
ICAgICAgICAgICByZXR1cm4gbm9ybWFsaXplKG5hbWUsIHJlbE5hbWUpOwotICAgICAgICB9Owot
ICAgIH0KLQotICAgIGZ1bmN0aW9uIG1ha2VMb2FkKGlkKSB7Ci0gICAgICAgIGZ1bmN0aW9uIGxv
YWQodmFsdWUpIHsKLSAgICAgICAgICAgIGxvYWRlckNhY2hlW2lkXSA9IHZhbHVlOwotICAgICAg
ICB9Ci0KLSAgICAgICAgbG9hZC5mcm9tVGV4dCA9IGZ1bmN0aW9uIChpZCwgdGV4dCkgewotICAg
ICAgICAgICAgLy9UaGlzIG9uZSBpcyBkaWZmaWN1bHQgYmVjYXVzZSB0aGUgdGV4dCBjYW4vcHJv
YmFibHkgdXNlcwotICAgICAgICAgICAgLy9kZWZpbmUsIGFuZCBhbnkgcmVsYXRpdmUgcGF0aHMg
YW5kIHJlcXVpcmVzIHNob3VsZCBiZSByZWxhdGl2ZQotICAgICAgICAgICAgLy90byB0aGF0IGlk
IHdhcyBpdCB3b3VsZCBiZSBmb3VuZCBvbiBkaXNrLiBCdXQgdGhpcyB3b3VsZCByZXF1aXJlCi0g
ICAgICAgICAgICAvL2Jvb3RzdHJhcHBpbmcgYSBtb2R1bGUvcmVxdWlyZSBmYWlybHkgZGVlcGx5
IGZyb20gbm9kZSBjb3JlLgotICAgICAgICAgICAgLy9Ob3Qgc3VyZSBob3cgYmVzdCB0byBnbyBh
Ym91dCB0aGF0IHlldC4KLSAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignYW1kZWZpbmUgZG9l
cyBub3QgaW1wbGVtZW50IGxvYWQuZnJvbVRleHQnKTsKLSAgICAgICAgfTsKLQotICAgICAgICBy
ZXR1cm4gbG9hZDsKLSAgICB9Ci0KLSAgICBtYWtlUmVxdWlyZSA9IGZ1bmN0aW9uIChzeXN0ZW1S
ZXF1aXJlLCBleHBvcnRzLCBtb2R1bGUsIHJlbElkKSB7Ci0gICAgICAgIGZ1bmN0aW9uIGFtZFJl
cXVpcmUoZGVwcywgY2FsbGJhY2spIHsKLSAgICAgICAgICAgIGlmICh0eXBlb2YgZGVwcyA9PT0g
J3N0cmluZycpIHsKLSAgICAgICAgICAgICAgICAvL1N5bmNocm9ub3VzLCBzaW5nbGUgbW9kdWxl
IHJlcXVpcmUoJycpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0cmluZ1JlcXVpcmUoc3lzdGVt
UmVxdWlyZSwgZXhwb3J0cywgbW9kdWxlLCBkZXBzLCByZWxJZCk7Ci0gICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgIC8vQXJyYXkgb2YgZGVwZW5kZW5jaWVzIHdpdGggYSBjYWxs
YmFjay4KLQotICAgICAgICAgICAgICAgIC8vQ29udmVydCB0aGUgZGVwZW5kZW5jaWVzIHRvIG1v
ZHVsZXMuCi0gICAgICAgICAgICAgICAgZGVwcyA9IGRlcHMubWFwKGZ1bmN0aW9uIChkZXBOYW1l
KSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzdHJpbmdSZXF1aXJlKHN5c3RlbVJlcXVp
cmUsIGV4cG9ydHMsIG1vZHVsZSwgZGVwTmFtZSwgcmVsSWQpOwotICAgICAgICAgICAgICAgIH0p
OwotCi0gICAgICAgICAgICAgICAgLy9XYWl0IGZvciBuZXh0IHRpY2sgdG8gY2FsbCBiYWNrIHRo
ZSByZXF1aXJlIGNhbGwuCi0gICAgICAgICAgICAgICAgcHJvY2Vzcy5uZXh0VGljayhmdW5jdGlv
biAoKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrLmFwcGx5KG51bGwsIGRlcHMpOwot
ICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAg
YW1kUmVxdWlyZS50b1VybCA9IGZ1bmN0aW9uIChmaWxlUGF0aCkgewotICAgICAgICAgICAgaWYg
KGZpbGVQYXRoLmluZGV4T2YoJy4nKSA9PT0gMCkgewotICAgICAgICAgICAgICAgIHJldHVybiBu
b3JtYWxpemUoZmlsZVBhdGgsIHBhdGguZGlybmFtZShtb2R1bGUuZmlsZW5hbWUpKTsKLSAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZpbGVQYXRoOwotICAgICAg
ICAgICAgfQotICAgICAgICB9OwotCi0gICAgICAgIHJldHVybiBhbWRSZXF1aXJlOwotICAgIH07
Ci0KLSAgICAvL0Zhdm9yIGV4cGxpY2l0IHZhbHVlLCBwYXNzZWQgaW4gaWYgdGhlIG1vZHVsZSB3
YW50cyB0byBzdXBwb3J0IE5vZGUgMC40LgotICAgIHJlcXVpcmUgPSByZXF1aXJlIHx8IGZ1bmN0
aW9uIHJlcSgpIHsKLSAgICAgICAgcmV0dXJuIG1vZHVsZS5yZXF1aXJlLmFwcGx5KG1vZHVsZSwg
YXJndW1lbnRzKTsKLSAgICB9OwotCi0gICAgZnVuY3Rpb24gcnVuRmFjdG9yeShpZCwgZGVwcywg
ZmFjdG9yeSkgewotICAgICAgICB2YXIgciwgZSwgbSwgcmVzdWx0OwotCi0gICAgICAgIGlmIChp
ZCkgewotICAgICAgICAgICAgZSA9IGxvYWRlckNhY2hlW2lkXSA9IHt9OwotICAgICAgICAgICAg
bSA9IHsKLSAgICAgICAgICAgICAgICBpZDogaWQsCi0gICAgICAgICAgICAgICAgdXJpOiBfX2Zp
bGVuYW1lLAotICAgICAgICAgICAgICAgIGV4cG9ydHM6IGUKLSAgICAgICAgICAgIH07Ci0gICAg
ICAgICAgICByID0gbWFrZVJlcXVpcmUocmVxdWlyZSwgZSwgbSwgaWQpOwotICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgLy9Pbmx5IHN1cHBvcnQgb25lIGRlZmluZSBjYWxsIHBlciBmaWxl
Ci0gICAgICAgICAgICBpZiAoYWxyZWFkeUNhbGxlZCkgewotICAgICAgICAgICAgICAgIHRocm93
IG5ldyBFcnJvcignYW1kZWZpbmUgd2l0aCBubyBtb2R1bGUgSUQgY2Fubm90IGJlIGNhbGxlZCBt
b3JlIHRoYW4gb25jZSBwZXIgZmlsZS4nKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGFs
cmVhZHlDYWxsZWQgPSB0cnVlOwotCi0gICAgICAgICAgICAvL1VzZSB0aGUgcmVhbCB2YXJpYWJs
ZXMgZnJvbSBub2RlCi0gICAgICAgICAgICAvL1VzZSBtb2R1bGUuZXhwb3J0cyBmb3IgZXhwb3J0
cywgc2luY2UKLSAgICAgICAgICAgIC8vdGhlIGV4cG9ydHMgaW4gaGVyZSBpcyBhbWRlZmluZSBl
eHBvcnRzLgotICAgICAgICAgICAgZSA9IG1vZHVsZS5leHBvcnRzOwotICAgICAgICAgICAgbSA9
IG1vZHVsZTsKLSAgICAgICAgICAgIHIgPSBtYWtlUmVxdWlyZShyZXF1aXJlLCBlLCBtLCBtb2R1
bGUuaWQpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy9JZiB0aGVyZSBhcmUgZGVwZW5kZW5jaWVz
LCB0aGV5IGFyZSBzdHJpbmdzLCBzbyBuZWVkCi0gICAgICAgIC8vdG8gY29udmVydCB0aGVtIHRv
IGRlcGVuZGVuY3kgdmFsdWVzLgotICAgICAgICBpZiAoZGVwcykgewotICAgICAgICAgICAgZGVw
cyA9IGRlcHMubWFwKGZ1bmN0aW9uIChkZXBOYW1lKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IHIoZGVwTmFtZSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vQ2Fs
bCB0aGUgZmFjdG9yeSB3aXRoIHRoZSByaWdodCBkZXBlbmRlbmNpZXMuCi0gICAgICAgIGlmICh0
eXBlb2YgZmFjdG9yeSA9PT0gJ2Z1bmN0aW9uJykgewotICAgICAgICAgICAgcmVzdWx0ID0gZmFj
dG9yeS5hcHBseShtb2R1bGUuZXhwb3J0cywgZGVwcyk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICByZXN1bHQgPSBmYWN0b3J5OwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHJlc3Vs
dCAhPT0gdW5kZWZpbmVkKSB7Ci0gICAgICAgICAgICBtLmV4cG9ydHMgPSByZXN1bHQ7Ci0gICAg
ICAgICAgICBpZiAoaWQpIHsKLSAgICAgICAgICAgICAgICBsb2FkZXJDYWNoZVtpZF0gPSBtLmV4
cG9ydHM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBzdHJpbmdSZXF1
aXJlID0gZnVuY3Rpb24gKHN5c3RlbVJlcXVpcmUsIGV4cG9ydHMsIG1vZHVsZSwgaWQsIHJlbElk
KSB7Ci0gICAgICAgIC8vU3BsaXQgdGhlIElEIGJ5IGEgISBzbyB0aGF0Ci0gICAgICAgIHZhciBp
bmRleCA9IGlkLmluZGV4T2YoJyEnKSwKLSAgICAgICAgICAgIG9yaWdpbmFsSWQgPSBpZCwKLSAg
ICAgICAgICAgIHByZWZpeCwgcGx1Z2luOwotCi0gICAgICAgIGlmIChpbmRleCA9PT0gLTEpIHsK
LSAgICAgICAgICAgIGlkID0gbm9ybWFsaXplKGlkLCByZWxJZCk7Ci0KLSAgICAgICAgICAgIC8v
U3RyYWlnaHQgbW9kdWxlIGxvb2t1cC4gSWYgaXQgaXMgb25lIG9mIHRoZSBzcGVjaWFsIGRlcGVu
ZGVuY2llcywKLSAgICAgICAgICAgIC8vZGVhbCB3aXRoIGl0LCBvdGhlcndpc2UsIGRlbGVnYXRl
IHRvIG5vZGUuCi0gICAgICAgICAgICBpZiAoaWQgPT09ICdyZXF1aXJlJykgewotICAgICAgICAg
ICAgICAgIHJldHVybiBtYWtlUmVxdWlyZShzeXN0ZW1SZXF1aXJlLCBleHBvcnRzLCBtb2R1bGUs
IHJlbElkKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoaWQgPT09ICdleHBvcnRzJykgewotICAg
ICAgICAgICAgICAgIHJldHVybiBleHBvcnRzOwotICAgICAgICAgICAgfSBlbHNlIGlmIChpZCA9
PT0gJ21vZHVsZScpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gbW9kdWxlOwotICAgICAgICAg
ICAgfSBlbHNlIGlmIChsb2FkZXJDYWNoZS5oYXNPd25Qcm9wZXJ0eShpZCkpIHsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gbG9hZGVyQ2FjaGVbaWRdOwotICAgICAgICAgICAgfSBlbHNlIGlmIChk
ZWZpbmVDYWNoZVtpZF0pIHsKLSAgICAgICAgICAgICAgICBydW5GYWN0b3J5LmFwcGx5KG51bGws
IGRlZmluZUNhY2hlW2lkXSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRlckNhY2hlW2lk
XTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYoc3lzdGVtUmVxdWly
ZSkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3lzdGVtUmVxdWlyZShvcmlnaW5hbElk
KTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoJ05vIG1vZHVsZSB3aXRoIElEOiAnICsgaWQpOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vVGhlcmUgaXMg
YSBwbHVnaW4gaW4gcGxheS4KLSAgICAgICAgICAgIHByZWZpeCA9IGlkLnN1YnN0cmluZygwLCBp
bmRleCk7Ci0gICAgICAgICAgICBpZCA9IGlkLnN1YnN0cmluZyhpbmRleCArIDEsIGlkLmxlbmd0
aCk7Ci0KLSAgICAgICAgICAgIHBsdWdpbiA9IHN0cmluZ1JlcXVpcmUoc3lzdGVtUmVxdWlyZSwg
ZXhwb3J0cywgbW9kdWxlLCBwcmVmaXgsIHJlbElkKTsKLQotICAgICAgICAgICAgaWYgKHBsdWdp
bi5ub3JtYWxpemUpIHsKLSAgICAgICAgICAgICAgICBpZCA9IHBsdWdpbi5ub3JtYWxpemUoaWQs
IG1ha2VOb3JtYWxpemUocmVsSWQpKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgLy9Ob3JtYWxpemUgdGhlIElEIG5vcm1hbGx5LgotICAgICAgICAgICAgICAgIGlkID0g
bm9ybWFsaXplKGlkLCByZWxJZCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChs
b2FkZXJDYWNoZVtpZF0pIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gbG9hZGVyQ2FjaGVbaWRd
OwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBwbHVnaW4ubG9hZChpZCwg
bWFrZVJlcXVpcmUoc3lzdGVtUmVxdWlyZSwgZXhwb3J0cywgbW9kdWxlLCByZWxJZCksIG1ha2VM
b2FkKGlkKSwge30pOwotCi0gICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRlckNhY2hlW2lkXTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH07Ci0KLSAgICAvL0NyZWF0ZSBhIGRlZmlu
ZSBmdW5jdGlvbiBzcGVjaWZpYyB0byB0aGUgbW9kdWxlIGFza2luZyBmb3IgYW1kZWZpbmUuCi0g
ICAgZnVuY3Rpb24gZGVmaW5lKGlkLCBkZXBzLCBmYWN0b3J5KSB7Ci0gICAgICAgIGlmIChBcnJh
eS5pc0FycmF5KGlkKSkgewotICAgICAgICAgICAgZmFjdG9yeSA9IGRlcHM7Ci0gICAgICAgICAg
ICBkZXBzID0gaWQ7Ci0gICAgICAgICAgICBpZCA9IHVuZGVmaW5lZDsKLSAgICAgICAgfSBlbHNl
IGlmICh0eXBlb2YgaWQgIT09ICdzdHJpbmcnKSB7Ci0gICAgICAgICAgICBmYWN0b3J5ID0gaWQ7
Ci0gICAgICAgICAgICBpZCA9IGRlcHMgPSB1bmRlZmluZWQ7Ci0gICAgICAgIH0KLQotICAgICAg
ICBpZiAoZGVwcyAmJiAhQXJyYXkuaXNBcnJheShkZXBzKSkgewotICAgICAgICAgICAgZmFjdG9y
eSA9IGRlcHM7Ci0gICAgICAgICAgICBkZXBzID0gdW5kZWZpbmVkOwotICAgICAgICB9Ci0KLSAg
ICAgICAgaWYgKCFkZXBzKSB7Ci0gICAgICAgICAgICBkZXBzID0gWydyZXF1aXJlJywgJ2V4cG9y
dHMnLCAnbW9kdWxlJ107Ci0gICAgICAgIH0KLQotICAgICAgICAvL1NldCB1cCBwcm9wZXJ0aWVz
IGZvciB0aGlzIG1vZHVsZS4gSWYgYW4gSUQsIHRoZW4gdXNlCi0gICAgICAgIC8vaW50ZXJuYWwg
Y2FjaGUuIElmIG5vIElELCB0aGVuIHVzZSB0aGUgZXh0ZXJuYWwgdmFyaWFibGVzCi0gICAgICAg
IC8vZm9yIHRoaXMgbm9kZSBtb2R1bGUuCi0gICAgICAgIGlmIChpZCkgewotICAgICAgICAgICAg
Ly9QdXQgdGhlIG1vZHVsZSBpbiBkZWVwIGZyZWV6ZSB1bnRpbCB0aGVyZSBpcyBhCi0gICAgICAg
ICAgICAvL3JlcXVpcmUgY2FsbCBmb3IgaXQuCi0gICAgICAgICAgICBkZWZpbmVDYWNoZVtpZF0g
PSBbaWQsIGRlcHMsIGZhY3RvcnldOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcnVu
RmFjdG9yeShpZCwgZGVwcywgZmFjdG9yeSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvL2Rl
ZmluZS5yZXF1aXJlLCB3aGljaCBoYXMgYWNjZXNzIHRvIGFsbCB0aGUgdmFsdWVzIGluIHRoZQot
ICAgIC8vY2FjaGUuIFVzZWZ1bCBmb3IgQU1EIG1vZHVsZXMgdGhhdCBhbGwgaGF2ZSBJRHMgaW4g
dGhlIGZpbGUsCi0gICAgLy9idXQgbmVlZCB0byBmaW5hbGx5IGV4cG9ydCBhIHZhbHVlIHRvIG5v
ZGUgYmFzZWQgb24gb25lIG9mIHRob3NlCi0gICAgLy9JRHMuCi0gICAgZGVmaW5lLnJlcXVpcmUg
PSBmdW5jdGlvbiAoaWQpIHsKLSAgICAgICAgaWYgKGxvYWRlckNhY2hlW2lkXSkgewotICAgICAg
ICAgICAgcmV0dXJuIGxvYWRlckNhY2hlW2lkXTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChk
ZWZpbmVDYWNoZVtpZF0pIHsKLSAgICAgICAgICAgIHJ1bkZhY3RvcnkuYXBwbHkobnVsbCwgZGVm
aW5lQ2FjaGVbaWRdKTsKLSAgICAgICAgICAgIHJldHVybiBsb2FkZXJDYWNoZVtpZF07Ci0gICAg
ICAgIH0KLSAgICB9OwotCi0gICAgZGVmaW5lLmFtZCA9IHt9OwotCi0gICAgcmV0dXJuIGRlZmlu
ZTsKLX0KLQotbW9kdWxlLmV4cG9ydHMgPSBhbWRlZmluZTsKLQotfSkocmVxdWlyZSgiX19icm93
c2VyaWZ5X3Byb2Nlc3MiKSwiLy4uL25vZGVfbW9kdWxlcy9zb3VyY2UtbWFwL25vZGVfbW9kdWxl
cy9hbWRlZmluZS9hbWRlZmluZS5qcyIpCi19LHsiX19icm93c2VyaWZ5X3Byb2Nlc3MiOjMsInBh
dGgiOjJ9XSwxNTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7Ci0vKioKLSAqIENv
cHlyaWdodCAyMDEzIEZhY2Vib29rLCBJbmMuCi0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFw
YWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5v
dCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0g
KiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiBodHRwOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWly
ZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0g
KiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMg
SVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJ
TkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRo
ZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0
aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotLyoganNoaW50IGJyb3dzZXI6IHRydWUgKi8K
LS8qIGpzbGludCBldmlsOiB0cnVlICovCi0KLSd1c2Ugc3RyaWN0JzsKLXZhciBydW5TY3JpcHRz
OwotCi12YXIgdHJhbnNmb3JtID0gcmVxdWlyZSgnLi9mYnRyYW5zZm9ybS9saWIvdHJhbnNmb3Jt
JykudHJhbnNmb3JtOwotdmFyIHZpc2l0b3JzID0gcmVxdWlyZSgnLi9mYnRyYW5zZm9ybS92aXNp
dG9ycycpLnRyYW5zZm9ybVZpc2l0b3JzOwotdmFyIHRyYW5zZm9ybSA9IHRyYW5zZm9ybS5iaW5k
KG51bGwsIHZpc2l0b3JzLnJlYWN0KTsKLXZhciBkb2NibG9jayA9IHJlcXVpcmUoJy4vZmJ0cmFu
c2Zvcm0vbGliL2RvY2Jsb2NrJyk7Ci0KLXZhciBoZWFkRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgnaGVhZCcpWzBdOwotCi1leHBvcnRzLnRyYW5zZm9ybSA9IHRyYW5zZm9ybTsK
LQotZXhwb3J0cy5leGVjID0gZnVuY3Rpb24oY29kZSkgewotICByZXR1cm4gZXZhbCh0cmFuc2Zv
cm0oY29kZSkpOwotfTsKLQotdmFyIHJ1biA9IGV4cG9ydHMucnVuID0gZnVuY3Rpb24oY29kZSkg
ewotICB2YXIganN4ID0gZG9jYmxvY2sucGFyc2VBc09iamVjdChkb2NibG9jay5leHRyYWN0KGNv
ZGUpKS5qc3g7Ci0KLSAgdmFyIGZ1bmN0aW9uQm9keSA9IGpzeCA/IHRyYW5zZm9ybShjb2RlKS5j
b2RlIDogY29kZTsKLSAgdmFyIHNjcmlwdEVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2Ny
aXB0Jyk7Ci0KLSAgc2NyaXB0RWwuaW5uZXJIVE1MID0gZnVuY3Rpb25Cb2R5OwotICBoZWFkRWwu
YXBwZW5kQ2hpbGQoc2NyaXB0RWwpOwotfTsKLQotaWYgKHR5cGVvZiB3aW5kb3cgPT09ICJ1bmRl
ZmluZWQiIHx8IHdpbmRvdyA9PT0gbnVsbCkgewotICByZXR1cm47Ci19Ci0KLXZhciBsb2FkID0g
ZXhwb3J0cy5sb2FkID0gZnVuY3Rpb24odXJsLCBjYWxsYmFjaykgewotICB2YXIgeGhyOwotICB4
aHIgPSB3aW5kb3cuQWN0aXZlWE9iamVjdCA/IG5ldyB3aW5kb3cuQWN0aXZlWE9iamVjdCgnTWlj
cm9zb2Z0LlhNTEhUVFAnKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IG5ldyBYTUxI
dHRwUmVxdWVzdCgpOwotICAvLyBEaXNhYmxlIGFzeW5jIHNpbmNlIHdlIG5lZWQgdG8gZXhlY3V0
ZSBzY3JpcHRzIGluIHRoZSBvcmRlciB0aGV5IGFyZSBpbiB0aGUKLSAgLy8gRE9NIHRvIG1pcnJv
ciBub3JtYWwgc2NyaXB0IGxvYWRpbmcuCi0gIHhoci5vcGVuKCdHRVQnLCB1cmwsIGZhbHNlKTsK
LSAgaWYgKCdvdmVycmlkZU1pbWVUeXBlJyBpbiB4aHIpIHsKLSAgICB4aHIub3ZlcnJpZGVNaW1l
VHlwZSgndGV4dC9wbGFpbicpOwotICB9Ci0gIHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5j
dGlvbigpIHsKLSAgICBpZiAoeGhyLnJlYWR5U3RhdGUgPT09IDQpIHsKLSAgICAgIGlmICh4aHIu
c3RhdHVzID09PSAwIHx8IHhoci5zdGF0dXMgPT09IDIwMCkgewotICAgICAgICBydW4oeGhyLnJl
c3BvbnNlVGV4dCk7Ci0gICAgICB9IGVsc2UgewotICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkNv
dWxkIG5vdCBsb2FkICIgKyB1cmwpOwotICAgICAgfQotICAgICAgaWYgKGNhbGxiYWNrKSB7Ci0g
ICAgICAgIHJldHVybiBjYWxsYmFjaygpOwotICAgICAgfQotICAgIH0KLSAgfTsKLSAgcmV0dXJu
IHhoci5zZW5kKG51bGwpOwotfTsKLQotcnVuU2NyaXB0cyA9IGZ1bmN0aW9uKCkgewotICB2YXIg
c2NyaXB0cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKTsKLSAgc2Ny
aXB0cyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHNjcmlwdHMpOwotICB2YXIganN4U2Ny
aXB0cyA9IHNjcmlwdHMuZmlsdGVyKGZ1bmN0aW9uKHNjcmlwdCkgewotICAgIHJldHVybiBzY3Jp
cHQudHlwZSA9PT0gJ3RleHQvanN4JzsKLSAgfSk7Ci0KLSAganN4U2NyaXB0cy5mb3JFYWNoKGZ1
bmN0aW9uKHNjcmlwdCkgewotICAgIGlmIChzY3JpcHQuc3JjKSB7Ci0gICAgICBsb2FkKHNjcmlw
dC5zcmMpOwotICAgIH0gZWxzZSB7Ci0gICAgICBydW4oc2NyaXB0LmlubmVySFRNTCk7Ci0gICAg
fQotICB9KTsKLX07Ci0KLWlmICh3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcikgewotICB3aW5kb3cu
YWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIHJ1blNjcmlwdHMsIGZhbHNlKTsK
LX0gZWxzZSB7Ci0gIHdpbmRvdy5hdHRhY2hFdmVudCgnb25sb2FkJywgcnVuU2NyaXB0cyk7Ci19
Ci0KLX0seyIuL2ZidHJhbnNmb3JtL2xpYi9kb2NibG9jayI6MTYsIi4vZmJ0cmFuc2Zvcm0vbGli
L3RyYW5zZm9ybSI6MTcsIi4vZmJ0cmFuc2Zvcm0vdmlzaXRvcnMiOjIzfV0sMTY6W2Z1bmN0aW9u
KHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewotLyoqCi0gKiBDb3B5cmlnaHQgMjAxMyBGYWNlYm9v
aywgSW5jLgotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lv
biAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNl
cHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBj
b3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3
IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIg
dGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhP
VVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBv
ciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2Ug
Z292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vu
c2UuCi0gKi8KLQotdmFyIGRvY2Jsb2NrUmUgPSAvXlxzKihcL1wqXCooLnxcbikqP1wqXC8pLzsK
LXZhciBsdHJpbVJlID0gL15ccyovOwotLyoqCi0gKiBAcGFyYW0ge1N0cmluZ30gY29udGVudHMK
LSAqIEByZXR1cm4ge1N0cmluZ30KLSAqLwotZnVuY3Rpb24gZXh0cmFjdChjb250ZW50cykgewot
ICB2YXIgbWF0Y2ggPSBjb250ZW50cy5tYXRjaChkb2NibG9ja1JlKTsKLSAgaWYgKG1hdGNoKSB7
Ci0gICAgcmV0dXJuIG1hdGNoWzBdLnJlcGxhY2UobHRyaW1SZSwgJycpIHx8ICcnOwotICB9Ci0g
IHJldHVybiAnJzsKLX0KLQotCi12YXIgY29tbWVudFN0YXJ0UmUgPSAvXlwvXCpcKj8vOwotdmFy
IGNvbW1lbnRFbmRSZSA9IC9cKlwvJC87Ci12YXIgd3NSZSA9IC9bXHQgXSsvZzsKLXZhciBzdHJp
bmdTdGFydFJlID0gLyhcbnxeKSAqXCovZzsKLXZhciBtdWx0aWxpbmVSZSA9IC8oPzpefFxuKSAq
KEBbXlxuXSo/KSAqXG4gKihbXkBcblxzXVteQFxuXSs/KSAqXG4vZzsKLXZhciBwcm9wZXJ0eVJl
ID0gLyg/Ol58XG4pICpAKFxTKykgKihbXlxuXSopL2c7Ci0KLS8qKgotICogQHBhcmFtIHtTdHJp
bmd9IGNvbnRlbnRzCi0gKiBAcmV0dXJuIHtBcnJheX0KLSAqLwotZnVuY3Rpb24gcGFyc2UoZG9j
YmxvY2spIHsKLSAgZG9jYmxvY2sgPSBkb2NibG9jawotICAgIC5yZXBsYWNlKGNvbW1lbnRTdGFy
dFJlLCAnJykKLSAgICAucmVwbGFjZShjb21tZW50RW5kUmUsICcnKQotICAgIC5yZXBsYWNlKHdz
UmUsICcgJykKLSAgICAucmVwbGFjZShzdHJpbmdTdGFydFJlLCAnJDEnKTsKLQotICAvLyBOb3Jt
YWxpemUgbXVsdGktbGluZSBkaXJlY3RpdmVzCi0gIHZhciBwcmV2ID0gJyc7Ci0gIHdoaWxlIChw
cmV2ICE9IGRvY2Jsb2NrKSB7Ci0gICAgcHJldiA9IGRvY2Jsb2NrOwotICAgIGRvY2Jsb2NrID0g
ZG9jYmxvY2sucmVwbGFjZShtdWx0aWxpbmVSZSwgIlxuJDEgJDJcbiIpOwotICB9Ci0gIGRvY2Js
b2NrID0gZG9jYmxvY2sudHJpbSgpOwotCi0gIHZhciByZXN1bHQgPSBbXTsKLSAgdmFyIG1hdGNo
OwotICB3aGlsZSAobWF0Y2ggPSBwcm9wZXJ0eVJlLmV4ZWMoZG9jYmxvY2spKSB7Ci0gICAgcmVz
dWx0LnB1c2goW21hdGNoWzFdLCBtYXRjaFsyXV0pOwotICB9Ci0KLSAgcmV0dXJuIHJlc3VsdDsK
LX0KLQotLyoqCi0gKiBTYW1lIGFzIHBhcnNlIGJ1dCByZXR1cm5zIGFuIG9iamVjdCBvZiBwcm9w
OiB2YWx1ZSBpbnN0ZWFkIG9mIGFycmF5IG9mIHBhcmlzCi0gKiBJZiBhIHByb3BlcnR5IGFwcGVy
cyBtb3JlIHRoYW4gb25jZSB0aGUgbGFzdCBvbmUgd2lsbCBiZSByZXR1cm5lZAotICoKLSAqIEBw
YXJhbSB7U3RyaW5nfSBjb250ZW50cwotICogQHJldHVybiB7T2JqZWN0fQotICovCi1mdW5jdGlv
biBwYXJzZUFzT2JqZWN0KGRvY2Jsb2NrKSB7Ci0gIHZhciBwYWlycyA9IHBhcnNlKGRvY2Jsb2Nr
KTsKLSAgdmFyIHJlc3VsdCA9IHt9OwotICBmb3IgKHZhciBpID0gMDsgaSA8IHBhaXJzLmxlbmd0
aDsgaSsrKSB7Ci0gICAgcmVzdWx0W3BhaXJzW2ldWzBdXSA9IHBhaXJzW2ldWzFdOwotICB9Ci0g
IHJldHVybiByZXN1bHQ7Ci19Ci0KLQotZXhwb3J0cy5leHRyYWN0ID0gZXh0cmFjdDsKLWV4cG9y
dHMucGFyc2UgPSBwYXJzZTsKLWV4cG9ydHMucGFyc2VBc09iamVjdCA9IHBhcnNlQXNPYmplY3Q7
Ci0KLX0se31dLDE3OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKLShmdW5jdGlv
bigpey8qKgotICogQ29weXJpZ2h0IDIwMTMgRmFjZWJvb2ssIEluYy4KLSAqCi0gKiBMaWNlbnNl
ZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsK
LSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0
aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAot
ICoKLSAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAq
IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGlu
Zywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElU
SU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUg
TGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBh
bmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0vKmdsb2JhbCBleHBv
cnRzOnRydWUqLwotLypqc2xpbnQgbm9kZTogdHJ1ZSovCi0idXNlIHN0cmljdCI7Ci0KLS8qKgot
ICogU3ludGF4IHRyYW5zZm9tZXIgZm9yIGphdmFzY3JpcHQuIFRha2VzIHRoZSBzb3VyY2UgaW4s
IHNwaXRzIHRoZSBzb3VyY2UKLSAqIG91dC4gVHJpZXMgdG8gbWFpbnRhaW4gcmVhZGFiaWxpdHkg
YW5kIHByZXNlcnZlIHdoaXRlc3BhY2UgYW5kIGxpbmUgbnVtYmVycwotICogd2hlcmUgcG9zc3Np
YmxlLgotICoKLSAqIFN1cHBvcnQKLSAqIC0gRVM2IGNsYXNzIHRyYW5zZm9ybWF0aW9uICsgcHJp
dmF0ZSBwcm9wZXJ0eSBtdW5naW5nLCBzZWUgLi9jbGFzc2VzLmpzCi0gKiAtIFJlYWN0IFhIUCBz
dHlsZSBzeW50YXggdHJhbnNmb3JtYXRpb25zLCBzZWUgLi9yZWFjdC5qcwotICogLSBCb2x0IFhI
UCBzdHlsZSBzeW50YXggdHJhbnNmb3JtYXRpb25zLCBzZWUgLi9ib2x0LmpzCi0gKgotICogVGhl
IGdlbmVyYWwgZmxvdyBpcyB0aGUgZm9sbG93aW5nOgotICogLSBQYXJzZSB0aGUgc291cmNlIHdp
dGggb3VyIGN1c3RvbWl6ZWQgZXNwcmltYS1wYXJzZXIKLSAqICAgaHR0cHM6Ly9naXRodWIuY29t
L3ZvbG9rby9lc3ByaW1hLiBXZSBoYXZlIHRvIGN1c3RvbWl6ZSB0aGUgcGFyc2VyIHRvCi0gKiAg
IHN1cHBvcnQgbm9uLXN0YW5kYXJkIFhIUC1zdHlsZSBzeW50YXguIFdlIHBhcnNlIHRoZSBzb3Vy
Y2UgcmFuZ2U6IHRydWUKLSAqICAgb3B0aW9uIHRoYXQgZm9yY2VzIGVzcHJpbWEgdG8gcmV0dXJu
IHBvc2l0aW9ucyBpbiB0aGUgc291cmNlIHdpdGhpbgotICogICByZXN1bHRpbmcgcGFyc2UgdHJl
ZS4KLSAqCi0gKiAtIFRyYXZlcnNlIHJlc3VsdGluZyBzeW50YXggdHJlZSwgdHJ5aW5nIHRvIGFw
cGx5IGEgc2V0IG9mIHZpc2l0b3JzIHRvIGVhY2gKLSAqICAgbm9kZS4gRWFjaCB2aXNpdG9yIHNo
b3VsZCBwcm92aWRlIGEgLnRlc3QoKSBmdW5jdGlvbiB0aGF0IHRlc3RzIGlmIHRoZQotICogICB2
aXNpdG9yIGNhbiBwcm9jZXNzIGEgZ2l2ZW4gbm9kZS4KLSAqCi0gKiAtIFZpc2l0b3IgaXMgcmVz
cG9uc2libGUgZm9yIGNvZGUgZ2VuZXJhdGlvbiBmb3IgYSBnaXZlbiBzeW50YXggbm9kZS4KLSAq
ICAgR2VuZXJhdGVkIGNvZGUgaXMgc3RvcmVkIGluIHN0YXRlLmcuYnVmZmVyIHRoYXQgaXMgcGFz
c2VkIHRvIGV2ZXJ5Ci0gKiAgIHZpc2l0b3IuIEl0J3MgdXAgdG8gdGhlIHZpc2l0b3IgdG8gcHJv
Y2VzcyB0aGUgY29kZSB0aGUgd2F5IGl0IHNlZXMgZml0LgotICogICBBbGwgb2YgdGhlIGN1cnJl
bnQgdmlzaXRvcnMgaG93ZXZlciB1c2UgYm90aCB0aGUgbm9kZSBhbmQgdGhlIG9yaWdpbmFsCi0g
KiAgIHNvdXJjZSB0byBnZW5lcmF0ZSB0cmFuc2Zvcm1lZCBjb2RlLiBUaGV5IHVzZSBub2RlcyB0
byBnZW5lcmF0ZSBuZXcKLSAqICAgY29kZSBhbmQgdGhleSBjb3B5IHRoZSBvcmlnaW5hbCBzb3Vy
Y2UsIHByZXNlcnZpbmcgd2hpdGVzcGFjZSBhbmQgY29tbWVudHMsCi0gKiAgIGZvciB0aGUgcGFy
dHMgdGhleSBkb24ndCBjYXJlIGFib3V0LgotICovCi12YXIgZXNwcmltYSA9IHJlcXVpcmUoJ2Vz
cHJpbWEnKTsKLQotdmFyIGNyZWF0ZVN0YXRlID0gcmVxdWlyZSgnLi91dGlscycpLmNyZWF0ZVN0
YXRlOwotdmFyIGNhdGNodXAgPSByZXF1aXJlKCcuL3V0aWxzJykuY2F0Y2h1cDsKLQotLyoqCi0g
KiBAcGFyYW0ge29iamVjdH0gb2JqZWN0Ci0gKiBAcGFyYW0ge2Z1bmN0aW9ufSB2aXNpdG9yCi0g
KiBAcGFyYW0ge2FycmF5fSBwYXRoCi0gKiBAcGFyYW0ge29iamVjdH0gc3RhdGUKLSAqLwotZnVu
Y3Rpb24gdHJhdmVyc2Uob2JqZWN0LCBwYXRoLCBzdGF0ZSkgewotICB2YXIga2V5LCBjaGlsZDsK
LQotICBpZiAod2Fsa2VyKHRyYXZlcnNlLCBvYmplY3QsIHBhdGgsIHN0YXRlKSA9PT0gZmFsc2Up
IHsKLSAgICByZXR1cm47Ci0gIH0KLSAgcGF0aC51bnNoaWZ0KG9iamVjdCk7Ci0gIGZvciAoa2V5
IGluIG9iamVjdCkgewotICAgIC8vIHNraXAgb2J2aW91c2x5IHdyb25nIGF0dHJpYnV0ZXMKLSAg
ICBpZiAoa2V5ID09PSAncmFuZ2UnIHx8IGtleSA9PT0gJ2xvYycpIHsKLSAgICAgIGNvbnRpbnVl
OwotICAgIH0KLSAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KGtleSkpIHsKLSAgICAgIGNo
aWxkID0gb2JqZWN0W2tleV07Ci0gICAgICBpZiAodHlwZW9mIGNoaWxkID09PSAnb2JqZWN0JyAm
JiBjaGlsZCAhPT0gbnVsbCkgewotICAgICAgICBjaGlsZC5yYW5nZSAmJiBjYXRjaHVwKGNoaWxk
LnJhbmdlWzBdLCBzdGF0ZSk7Ci0gICAgICAgIHRyYXZlcnNlKGNoaWxkLCBwYXRoLCBzdGF0ZSk7
Ci0gICAgICAgIGNoaWxkLnJhbmdlICYmIGNhdGNodXAoY2hpbGQucmFuZ2VbMV0sIHN0YXRlKTsK
LSAgICAgIH0KLSAgICB9Ci0gIH0KLSAgcGF0aC5zaGlmdCgpOwotfQotCi1mdW5jdGlvbiB3YWxr
ZXIodHJhdmVyc2UsIG9iamVjdCwgcGF0aCwgc3RhdGUpIHsKLSAgdmFyIHZpc2l0b3JzID0gc3Rh
dGUuZy52aXNpdG9yczsKLSAgZm9yICh2YXIgaSA9IDA7IGkgPCB2aXNpdG9ycy5sZW5ndGg7IGkr
KykgewotICAgIGlmICh2aXNpdG9yc1tpXS50ZXN0KG9iamVjdCwgcGF0aCwgc3RhdGUpKSB7Ci0g
ICAgICByZXR1cm4gdmlzaXRvcnNbaV0odHJhdmVyc2UsIG9iamVjdCwgcGF0aCwgc3RhdGUpOwot
ICAgIH0KLSAgfQotfQotCi1mdW5jdGlvbiBydW5QYXNzKHNvdXJjZSwgdmlzaXRvcnMsIG9wdGlv
bnMpIHsKLSAgdmFyIGFzdDsKLSAgdHJ5IHsKLSAgICBhc3QgPSBlc3ByaW1hLnBhcnNlKHNvdXJj
ZSwgeyBjb21tZW50OiB0cnVlLCBsb2M6IHRydWUsIHJhbmdlOiB0cnVlIH0pOwotICB9IGNhdGNo
IChlKSB7Ci0gICAgZS5tZXNzYWdlID0gJ1BhcnNlIEVycm9yOiAnICsgZS5tZXNzYWdlOwotICAg
IHRocm93IGU7Ci0gIH0KLSAgdmFyIHN0YXRlID0gY3JlYXRlU3RhdGUoc291cmNlLCBvcHRpb25z
KTsKLSAgc3RhdGUuZy5vcmlnaW5hbFByb2dyYW1BU1QgPSBhc3Q7Ci0gIHN0YXRlLmcudmlzaXRv
cnMgPSB2aXNpdG9yczsKLQotICBpZiAob3B0aW9ucy5zb3VyY2VNYXApIHsKLSAgICB2YXIgU291
cmNlTWFwR2VuZXJhdG9yID0gcmVxdWlyZSgnc291cmNlLW1hcCcpLlNvdXJjZU1hcEdlbmVyYXRv
cjsKLSAgICBzdGF0ZS5nLnNvdXJjZU1hcCA9IG5ldyBTb3VyY2VNYXBHZW5lcmF0b3IoeyBmaWxl
OiAndHJhbnNmb3JtZWQuanMnIH0pOwotICB9Ci0gIHRyYXZlcnNlKGFzdCwgW10sIHN0YXRlKTsK
LSAgY2F0Y2h1cChzb3VyY2UubGVuZ3RoLCBzdGF0ZSk7Ci0gIHJldHVybiBzdGF0ZTsKLX0KLQot
LyoqCi0gKiBBcHBsaWVzIGFsbCBhdmFpbGFibGUgdHJhbnNmb3JtYXRpb25zIHRvIHRoZSBzb3Vy
Y2UKLSAqIEBwYXJhbSB7YXJyYXl9IHZpc2l0b3JzCi0gKiBAcGFyYW0ge3N0cmluZ30gc291cmNl
Ci0gKiBAcGFyYW0gez9vYmplY3R9IG9wdGlvbnMKLSAqIEByZXR1cm4ge29iamVjdH0KLSAqLwot
ZnVuY3Rpb24gdHJhbnNmb3JtKHZpc2l0b3JzLCBzb3VyY2UsIG9wdGlvbnMpIHsKLSAgb3B0aW9u
cyA9IG9wdGlvbnMgfHwge307Ci0KLSAgdmFyIHN0YXRlID0gcnVuUGFzcyhzb3VyY2UsIHZpc2l0
b3JzLCBvcHRpb25zKTsKLSAgdmFyIHNvdXJjZU1hcCA9IHN0YXRlLmcuc291cmNlTWFwOwotCi0g
IGlmIChzb3VyY2VNYXApIHsKLSAgICByZXR1cm4gewotICAgICAgc291cmNlTWFwOiBzb3VyY2VN
YXAsCi0gICAgICBzb3VyY2VNYXBGaWxlbmFtZTogb3B0aW9ucy5maWxlbmFtZSB8fCAnc291cmNl
LmpzJywKLSAgICAgIGNvZGU6IHN0YXRlLmcuYnVmZmVyCi0gICAgfTsKLSAgfSBlbHNlIHsKLSAg
ICByZXR1cm4gewotICAgICAgY29kZTogc3RhdGUuZy5idWZmZXIKLSAgICB9OwotICB9Ci19Ci0K
LQotZXhwb3J0cy50cmFuc2Zvcm0gPSB0cmFuc2Zvcm07Ci0KLX0pKCkKLX0seyIuL3V0aWxzIjox
OCwiZXNwcmltYSI6NCwic291cmNlLW1hcCI6NX1dLDE4OltmdW5jdGlvbihyZXF1aXJlLG1vZHVs
ZSxleHBvcnRzKXsKLShmdW5jdGlvbigpey8qKgotICogQ29weXJpZ2h0IDIwMTMgRmFjZWJvb2ss
IEluYy4KLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24g
Mi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBv
ciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRo
ZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VU
IFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3Ig
aW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdv
dmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNl
LgotICovCi0vKmdsb2JhbCBleHBvcnRzOnRydWUqLwotCi0vKioKLSAqIFN0YXRlIHJlcHJlc2Vu
dHMgdGhlIGdpdmVuIHBhcnNlciBzdGF0ZS4gSXQgaGFzIGEgbG9jYWwgYW5kIGdsb2JhbCBwYXJ0
cy4KLSAqIEdsb2JhbCBjb250YWlucyBwYXJzZXIgcG9zaXRpb24sIHNvdXJjZSwgZXRjLiBMb2Nh
bCBjb250YWlucyBzY29wZSBiYXNlZAotICogcHJvcGVydGllcywgbGlrZSBjdXJyZW50IGNsYXNz
IG5hbWUuIFN0YXRlIHNob3VsZCBjb250YWluIGFsbCB0aGUgaW5mbwotICogcmVxdWlyZWQgZm9y
IHRyYW5zZm9ybWF0aW9uLiBJdCdzIHRoZSBvbmx5IG1hbmRhdG9yeSBvYmplY3QgdGhhdCBpcyBi
ZWluZwotICogcGFzc2VkIHRvIGV2ZXJ5IGZ1bmN0aW9uIGluIHRyYW5zZm9ybSBjaGFpbi4KLSAq
Ci0gKiBAcGFyYW0gIHtTdHJpbmd9IHNvdXJjZQotICogQHBhcmFtICB7T2JqZWN0fSB0cmFuc2Zv
cm1PcHRpb25zCi0gKiBAcmV0dXJuIHtPYmplY3R9Ci0gKi8KLWZ1bmN0aW9uIGNyZWF0ZVN0YXRl
KHNvdXJjZSwgdHJhbnNmb3JtT3B0aW9ucykgewotICByZXR1cm4gewotICAgIC8qKgotICAgICAq
IE5hbWUgb2YgdGhlIHN1cGVyIGNsYXNzIHZhcmlhYmxlCi0gICAgICogQHR5cGUge1N0cmluZ30K
LSAgICAgKi8KLSAgICBzdXBlclZhcjogJycsCi0gICAgLyoqCi0gICAgICogTmFtZSBvZiB0aGUg
ZW5jbG9zaW5nIGNsYXNzIHNjb3BlCi0gICAgICogQHR5cGUge1N0cmluZ30KLSAgICAgKi8KLSAg
ICBzY29wZU5hbWU6ICcnLAotICAgIC8qKgotICAgICAqIEdsb2JhbCBzdGF0ZSAobm90IGFmZmVj
dGVkIGJ5IHVwZGF0ZVN0YXRlKQotICAgICAqIEB0eXBlIHtPYmplY3R9Ci0gICAgICovCi0gICAg
ZzogewotICAgICAgLyoqCi0gICAgICAgKiBBIHNldCBvZiBnZW5lcmFsIG9wdGlvbnMgdGhhdCB0
cmFuc2Zvcm1hdGlvbnMgY2FuIGNvbnNpZGVyIHdoaWxlIGRvaW5nCi0gICAgICAgKiBhIHRyYW5z
Zm9ybWF0aW9uOgotICAgICAgICoKLSAgICAgICAqIC0gbWluaWZ5Ci0gICAgICAgKiAgIFNwZWNp
ZmllcyB0aGF0IHRyYW5zZm9ybWF0aW9uIHN0ZXBzIHNob3VsZCBkbyB0aGVpciBiZXN0IHRvIG1p
bmlmeQotICAgICAgICogICB0aGUgb3V0cHV0IHNvdXJjZSB3aGVuIHBvc3NpYmxlLiBUaGlzIGlz
IHVzZWZ1bCBmb3IgcGxhY2VzIHdoZXJlCi0gICAgICAgKiAgIG1pbmlmaWNhdGlvbiBvcHRpbWl6
YXRpb25zIGFyZSBwb3NzaWJsZSB3aXRoIGhpZ2hlci1sZXZlbCBjb250ZXh0Ci0gICAgICAgKiAg
IGluZm8gdGhhbiB3aGF0IGpzeG1pbiBjYW4gcHJvdmlkZS4KLSAgICAgICAqCi0gICAgICAgKiAg
IEZvciBleGFtcGxlLCB0aGUgRVM2IGNsYXNzIHRyYW5zZm9ybSB3aWxsIG1pbmlmeSBtdW5nZWQg
cHJpdmF0ZQotICAgICAgICogICB2YXJpYWJsZXMgaWYgdGhpcyBmbGFnIGlzIHNldC4KLSAgICAg
ICAqLwotICAgICAgb3B0czogdHJhbnNmb3JtT3B0aW9ucywKLSAgICAgIC8qKgotICAgICAgICog
Q3VycmVudCBwb3NpdGlvbiBpbiB0aGUgc291cmNlIGNvZGUKLSAgICAgICAqIEB0eXBlIHtOdW1i
ZXJ9Ci0gICAgICAgKi8KLSAgICAgIHBvc2l0aW9uOiAwLAotICAgICAgLyoqCi0gICAgICAgKiBC
dWZmZXIgY29udGFpbmluZyB0aGUgcmVzdWx0Ci0gICAgICAgKiBAdHlwZSB7U3RyaW5nfQotICAg
ICAgICovCi0gICAgICBidWZmZXI6ICcnLAotICAgICAgLyoqCi0gICAgICAgKiBJbmRlbnRhdGlv
biBvZmZzZXQgKG9ubHkgbmVnYXRpdmUgb2Zmc2V0IGlzIHN1cHBvcnRlZCBub3cpCi0gICAgICAg
KiBAdHlwZSB7TnVtYmVyfQotICAgICAgICovCi0gICAgICBpbmRlbnRCeTogMCwKLSAgICAgIC8q
KgotICAgICAgICogU291cmNlIHRoYXQgaXMgYmVpbmcgdHJhbnNmb3JtZWQKLSAgICAgICAqIEB0
eXBlIHtTdHJpbmd9Ci0gICAgICAgKi8KLSAgICAgIHNvdXJjZTogc291cmNlLAotCi0gICAgICAv
KioKLSAgICAgICAqIENhY2hlZCBwYXJzZWQgZG9jYmxvY2sgKHNlZSBnZXREb2NibG9jaykKLSAg
ICAgICAqIEB0eXBlIHtvYmplY3R9Ci0gICAgICAgKi8KLSAgICAgIGRvY2Jsb2NrOiBudWxsLAot
Ci0gICAgICAvKioKLSAgICAgICAqIFdoZXRoZXIgdGhlIHRoaW5nIHdhcyB1c2VkCi0gICAgICAg
KiBAdHlwZSB7Qm9vbGVhbn0KLSAgICAgICAqLwotICAgICAgdGFnTmFtZXNwYWNlVXNlZDogZmFs
c2UsCi0KLSAgICAgIC8qKgotICAgICAgICogSWYgdXNpbmcgYm9sdCB4anMgdHJhbnNmb3JtYXRp
b24KLSAgICAgICAqIEB0eXBlIHtCb29sZWFufQotICAgICAgICovCi0gICAgICBpc0JvbHQ6IHVu
ZGVmaW5lZCwKLQotICAgICAgLyoqCi0gICAgICAgKiBXaGV0aGVyIHRvIHJlY29yZCBzb3VyY2Ug
bWFwIChleHBlbnNpdmUpIG9yIG5vdAotICAgICAgICogQHR5cGUge1NvdXJjZU1hcEdlbmVyYXRv
cnxudWxsfQotICAgICAgICovCi0gICAgICBzb3VyY2VNYXA6IG51bGwsCi0KLSAgICAgIC8qKgot
ICAgICAgICogRmlsZW5hbWUgb2YgdGhlIGZpbGUgYmVpbmcgcHJvY2Vzc2VkLiBXaWxsIGJlIHJl
dHVybmVkIGFzIGEgc291cmNlCi0gICAgICAgKiBhdHRyaWJ1dGUgaW4gdGhlIHNvdXJjZSBtYXAK
LSAgICAgICAqLwotICAgICAgc291cmNlTWFwRmlsZW5hbWU6ICdzb3VyY2UuanMnLAotCi0gICAg
ICAvKioKLSAgICAgICAqIE9ubHkgd2hlbiBzb3VyY2UgbWFwIGlzIHVzZWQ6IGxhc3QgbGluZSBp
biB0aGUgc291cmNlIGZvciB3aGljaAotICAgICAgICogc291cmNlIG1hcCB3YXMgZ2VuZXJhdGVk
Ci0gICAgICAgKiBAdHlwZSB7TnVtYmVyfQotICAgICAgICovCi0gICAgICBzb3VyY2VMaW5lOiAx
LAotCi0gICAgICAvKioKLSAgICAgICAqIE9ubHkgd2hlbiBzb3VyY2UgbWFwIGlzIHVzZWQ6IGxh
c3QgbGluZSBpbiB0aGUgYnVmZmVyIGZvciB3aGljaAotICAgICAgICogc291cmNlIG1hcCB3YXMg
Z2VuZXJhdGVkCi0gICAgICAgKiBAdHlwZSB7TnVtYmVyfQotICAgICAgICovCi0gICAgICBidWZm
ZXJMaW5lOiAxLAotCi0gICAgICAvKioKLSAgICAgICAqIFRoZSB0b3AtbGV2ZWwgUHJvZ3JhbSBB
U1QgZm9yIHRoZSBvcmlnaW5hbCBmaWxlLgotICAgICAgICovCi0gICAgICBvcmlnaW5hbFByb2dy
YW1BU1Q6IG51bGwsCi0KLSAgICAgIHNvdXJjZUNvbHVtbjogMCwKLSAgICAgIGJ1ZmZlckNvbHVt
bjogMAotICAgIH0KLSAgfTsKLX0KLQotLyoqCi0gKiBVcGRhdGVzIGEgY29weSBvZiBhIGdpdmVu
IHN0YXRlIHdpdGggInVwZGF0ZSIgYW5kIHJldHVybnMgYW4gdXBkYXRlZCBzdGF0ZS4KLSAqCi0g
KiBAcGFyYW0gIHtPYmplY3R9IHN0YXRlCi0gKiBAcGFyYW0gIHtPYmplY3R9IHVwZGF0ZQotICog
QHJldHVybiB7T2JqZWN0fQotICovCi1mdW5jdGlvbiB1cGRhdGVTdGF0ZShzdGF0ZSwgdXBkYXRl
KSB7Ci0gIHJldHVybiB7Ci0gICAgZzogc3RhdGUuZywKLSAgICBzdXBlclZhcjogdXBkYXRlLnN1
cGVyVmFyIHx8IHN0YXRlLnN1cGVyVmFyLAotICAgIHNjb3BlTmFtZTogdXBkYXRlLnNjb3BlTmFt
ZSB8fCBzdGF0ZS5zY29wZU5hbWUKLSAgfTsKLX0KLQotLyoqCi0gKiBHaXZlbiBhIHN0YXRlIGZp
bGwgdGhlIHJlc3VsdGluZyBidWZmZXIgZnJvbSB0aGUgb3JpZ2luYWwgc291cmNlIHVwIHRvCi0g
KiB0aGUgZW5kCi0gKiBAcGFyYW0gIHtOdW1iZXJ9IGVuZAotICogQHBhcmFtICB7T2JqZWN0fSBz
dGF0ZQotICogQHBhcmFtIHtGdW5jdGlvbj99IGNvbnRlbnRUcmFuc2Zvcm1lciBPcHRpb25hbCBj
YWxsYmFjayB0byB0cmFuc2Zvcm0gbmV3bHkKLSAqIGFkZGVkIGNvbnRlbnQuCi0gKi8KLWZ1bmN0
aW9uIGNhdGNodXAoZW5kLCBzdGF0ZSwgY29udGVudFRyYW5zZm9ybWVyKSB7Ci0gIGlmIChlbmQg
PCBzdGF0ZS5nLnBvc2l0aW9uKSB7Ci0gICAgLy8gY2Fubm90IG1vdmUgYmFja3dhcmRzCi0gICAg
cmV0dXJuOwotICB9Ci0gIHZhciBzb3VyY2UgPSBzdGF0ZS5nLnNvdXJjZS5zdWJzdHJpbmcoc3Rh
dGUuZy5wb3NpdGlvbiwgZW5kKTsKLSAgdmFyIHRyYW5zZm9ybWVkID0gdXBkYXRlSW5kZW50KHNv
dXJjZSwgc3RhdGUpOwotICBpZiAoc3RhdGUuZy5zb3VyY2VNYXAgJiYgdHJhbnNmb3JtZWQpIHsK
LSAgICAvLyByZWNvcmQgd2hlcmUgd2UgYXJlCi0gICAgc3RhdGUuZy5zb3VyY2VNYXAuYWRkTWFw
cGluZyh7Ci0gICAgICBnZW5lcmF0ZWQ6IHsgbGluZTogc3RhdGUuZy5idWZmZXJMaW5lLCBjb2x1
bW46IHN0YXRlLmcuYnVmZmVyQ29sdW1uIH0sCi0gICAgICBvcmlnaW5hbDogeyBsaW5lOiBzdGF0
ZS5nLnNvdXJjZUxpbmUsIGNvbHVtbjogc3RhdGUuZy5zb3VyY2VDb2x1bW4gfSwKLSAgICAgIHNv
dXJjZTogc3RhdGUuZy5zb3VyY2VNYXBGaWxlbmFtZQotICAgIH0pOwotCi0gICAgLy8gcmVjb3Jk
IGxpbmUgYnJlYWtzIGluIHRyYW5zZm9ybWVkIHNvdXJjZQotICAgIHZhciBzb3VyY2VMaW5lcyA9
IHNvdXJjZS5zcGxpdCgnXG4nKTsKLSAgICB2YXIgdHJhbnNmb3JtZWRMaW5lcyA9IHRyYW5zZm9y
bWVkLnNwbGl0KCdcbicpOwotICAgIC8vIEFkZCBsaW5lIGJyZWFrIG1hcHBpbmdzIGJldHdlZW4g
bGFzdCBrbm93biBtYXBwaW5nIGFuZCB0aGUgZW5kIG9mIHRoZQotICAgIC8vIGFkZGVkIHBpZWNl
LiBTbyBmb3IgdGhlIGNvZGUgcGllY2UKLSAgICAvLyAgKGZvbywgYmFyKTsKLSAgICAvLyA+IHZh
ciB4ID0gMjsKLSAgICAvLyA+IHZhciBiID0gMzsKLSAgICAvLyAgIHZhciBjID0KLSAgICAvLyBv
bmx5IGFkZCBsaW5lcyBtYXJrZWQgd2l0aCAiPiI6IDIsIDMuCi0gICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBzb3VyY2VMaW5lcy5sZW5ndGggLSAxOyBpKyspIHsKLSAgICAgIHN0YXRlLmcuc291cmNl
TWFwLmFkZE1hcHBpbmcoewotICAgICAgICBnZW5lcmF0ZWQ6IHsgbGluZTogc3RhdGUuZy5idWZm
ZXJMaW5lLCBjb2x1bW46IDAgfSwKLSAgICAgICAgb3JpZ2luYWw6IHsgbGluZTogc3RhdGUuZy5z
b3VyY2VMaW5lLCBjb2x1bW46IDAgfSwKLSAgICAgICAgc291cmNlOiBzdGF0ZS5nLnNvdXJjZU1h
cEZpbGVuYW1lCi0gICAgICB9KTsKLSAgICAgIHN0YXRlLmcuc291cmNlTGluZSsrOwotICAgICAg
c3RhdGUuZy5idWZmZXJMaW5lKys7Ci0gICAgfQotICAgIC8vIG9mZnNldCBmb3IgdGhlIGxhc3Qg
cGllY2UKLSAgICBpZiAoc291cmNlTGluZXMubGVuZ3RoID4gMSkgewotICAgICAgc3RhdGUuZy5z
b3VyY2VMaW5lKys7Ci0gICAgICBzdGF0ZS5nLmJ1ZmZlckxpbmUrKzsKLSAgICAgIHN0YXRlLmcu
c291cmNlQ29sdW1uID0gMDsKLSAgICAgIHN0YXRlLmcuYnVmZmVyQ29sdW1uID0gMDsKLSAgICB9
Ci0gICAgc3RhdGUuZy5zb3VyY2VDb2x1bW4gKz0gc291cmNlTGluZXNbc291cmNlTGluZXMubGVu
Z3RoIC0gMV0ubGVuZ3RoOwotICAgIHN0YXRlLmcuYnVmZmVyQ29sdW1uICs9Ci0gICAgICB0cmFu
c2Zvcm1lZExpbmVzW3RyYW5zZm9ybWVkTGluZXMubGVuZ3RoIC0gMV0ubGVuZ3RoOwotICB9Ci0g
IHN0YXRlLmcuYnVmZmVyICs9Ci0gICAgY29udGVudFRyYW5zZm9ybWVyID8gY29udGVudFRyYW5z
Zm9ybWVyKHRyYW5zZm9ybWVkKSA6IHRyYW5zZm9ybWVkOwotICBzdGF0ZS5nLnBvc2l0aW9uID0g
ZW5kOwotfQotCi0vKioKLSAqIEFwcGxpZXMgYGNhdGNodXBgIGJ1dCBwYXNzaW5nIGluIGEgZnVu
Y3Rpb24gdGhhdCByZW1vdmVzIGFueSBub24td2hpdGVzcGFjZQotICogY2hhcmFjdGVycy4KLSAq
LwotdmFyIHJlID0gLyhcUykvZzsKLWZ1bmN0aW9uIHN0cmlwTm9uV2hpdGUodmFsdWUpIHsKLSAg
cmV0dXJuIHZhbHVlLnJlcGxhY2UocmUsIGZ1bmN0aW9uKCkgewotICAgIHJldHVybiAnJzsKLSAg
fSk7Ci19Ci0vKioKLSAqIENhdGNoZXMgdXAgYXMgYGNhdGNodXBgIGJ1dCB0dXJucyBlYWNoIG5v
bi13aGl0ZSBjaGFyYWN0ZXIgaW50byBhIHNwYWNlLgotICovCi1mdW5jdGlvbiBjYXRjaHVwV2hp
dGVTcGFjZShlbmQsIHN0YXRlKSB7Ci0gIGNhdGNodXAoZW5kLCBzdGF0ZSwgc3RyaXBOb25XaGl0
ZSk7Ci19Ci0KLS8qKgotICogU2FtZSBhcyBjYXRjaHVwIGJ1dCBkb2VzIG5vdCB0b3VjaCB0aGUg
YnVmZmVyCi0gKiBAcGFyYW0gIHtOdW1iZXJ9IGVuZAotICogQHBhcmFtICB7T2JqZWN0fSBzdGF0
ZQotICovCi1mdW5jdGlvbiBtb3ZlKGVuZCwgc3RhdGUpIHsKLSAgLy8gbW92ZSB0aGUgaW50ZXJu
YWwgY3Vyc29ycwotICBpZiAoc3RhdGUuZy5zb3VyY2VNYXApIHsKLSAgICBpZiAoZW5kIDwgc3Rh
dGUuZy5wb3NpdGlvbikgewotICAgICAgc3RhdGUuZy5wb3NpdGlvbiA9IDA7Ci0gICAgICBzdGF0
ZS5nLnNvdXJjZUxpbmUgPSAxOwotICAgICAgc3RhdGUuZy5zb3VyY2VDb2x1bW4gPSAwOwotICAg
IH0KLQotICAgIHZhciBzb3VyY2UgPSBzdGF0ZS5nLnNvdXJjZS5zdWJzdHJpbmcoc3RhdGUuZy5w
b3NpdGlvbiwgZW5kKTsKLSAgICB2YXIgc291cmNlTGluZXMgPSBzb3VyY2Uuc3BsaXQoJ1xuJyk7
Ci0gICAgaWYgKHNvdXJjZUxpbmVzLmxlbmd0aCA+IDEpIHsKLSAgICAgIHN0YXRlLmcuc291cmNl
TGluZSArPSBzb3VyY2VMaW5lcy5sZW5ndGggLSAxOwotICAgICAgc3RhdGUuZy5zb3VyY2VDb2x1
bW4gPSAwOwotICAgIH0KLSAgICBzdGF0ZS5nLnNvdXJjZUNvbHVtbiArPSBzb3VyY2VMaW5lc1tz
b3VyY2VMaW5lcy5sZW5ndGggLSAxXS5sZW5ndGg7Ci0gIH0KLSAgc3RhdGUuZy5wb3NpdGlvbiA9
IGVuZDsKLX0KLQotLyoqCi0gKiBBcHBlbmRzIGEgc3RyaW5nIG9mIHRleHQgdG8gdGhlIGJ1ZmZl
cgotICogQHBhcmFtICB7U3RyaW5nfSBzdHJpbmcKLSAqIEBwYXJhbSAge09iamVjdH0gc3RhdGUK
LSAqLwotZnVuY3Rpb24gYXBwZW5kKHN0cmluZywgc3RhdGUpIHsKLSAgaWYgKHN0YXRlLmcuc291
cmNlTWFwICYmIHN0cmluZykgewotICAgIHN0YXRlLmcuc291cmNlTWFwLmFkZE1hcHBpbmcoewot
ICAgICAgZ2VuZXJhdGVkOiB7IGxpbmU6IHN0YXRlLmcuYnVmZmVyTGluZSwgY29sdW1uOiBzdGF0
ZS5nLmJ1ZmZlckNvbHVtbiB9LAotICAgICAgb3JpZ2luYWw6IHsgbGluZTogc3RhdGUuZy5zb3Vy
Y2VMaW5lLCBjb2x1bW46IHN0YXRlLmcuc291cmNlQ29sdW1uIH0sCi0gICAgICBzb3VyY2U6IHN0
YXRlLmcuc291cmNlTWFwRmlsZW5hbWUKLSAgICB9KTsKLSAgICB2YXIgdHJhbnNmb3JtZWRMaW5l
cyA9IHN0cmluZy5zcGxpdCgnXG4nKTsKLSAgICBpZiAodHJhbnNmb3JtZWRMaW5lcy5sZW5ndGgg
PiAxKSB7Ci0gICAgICBzdGF0ZS5nLmJ1ZmZlckxpbmUgKz0gdHJhbnNmb3JtZWRMaW5lcy5sZW5n
dGggLSAxOwotICAgICAgc3RhdGUuZy5idWZmZXJDb2x1bW4gPSAwOwotICAgIH0KLSAgICBzdGF0
ZS5nLmJ1ZmZlckNvbHVtbiArPQotICAgICAgdHJhbnNmb3JtZWRMaW5lc1t0cmFuc2Zvcm1lZExp
bmVzLmxlbmd0aCAtIDFdLmxlbmd0aDsKLSAgfQotICBzdGF0ZS5nLmJ1ZmZlciArPSBzdHJpbmc7
Ci19Ci0KLS8qKgotICogVXBkYXRlIGluZGVudCB1c2luZyBzdGF0ZS5pbmRlbnRCeSBwcm9wZXJ0
eS4gSW5kZW50IGlzIG1lYXN1cmVkIGluCi0gKiBkb3VibGUgc3BhY2VzLiBVcGRhdGVzIGEgc2lu
Z2xlIGxpbmUgb25seS4KLSAqCi0gKiBAcGFyYW0gIHtTdHJpbmd9IHN0cgotICogQHBhcmFtICB7
T2JqZWN0fSBzdGF0ZQotICogQHJldHVybiB7U3RyaW5nfQotICovCi1mdW5jdGlvbiB1cGRhdGVJ
bmRlbnQoc3RyLCBzdGF0ZSkgewotICBmb3IgKHZhciBpID0gMDsgaSA8IC1zdGF0ZS5nLmluZGVu
dEJ5OyBpKyspIHsKLSAgICBzdHIgPSBzdHIucmVwbGFjZSgvKF58XG4pKCB7Mn18XHQpL2csICck
MScpOwotICB9Ci0gIHJldHVybiBzdHI7Ci19Ci0KLS8qKgotICogQ2FsY3VsYXRlcyBpbmRlbnQg
ZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsaW5lIHVudGlsICJzdGFydCIgb3IgdGhlIGZpcnN0
Ci0gKiBjaGFyYWN0ZXIgYmVmb3JlIHN0YXJ0LgotICogQGV4YW1wbGUKLSAqICAgIiAgZm9vLmJh
cigpIgotICogICAgICAgICBeCi0gKiAgICAgICBzdGFydAotICogICBpbmRlbnQgd2lsbCBiZSAy
Ci0gKgotICogQHBhcmFtICB7TnVtYmVyfSBzdGFydAotICogQHBhcmFtICB7T2JqZWN0fSBzdGF0
ZQotICogQHJldHVybiB7TnVtYmVyfQotICovCi1mdW5jdGlvbiBpbmRlbnRCZWZvcmUoc3RhcnQs
IHN0YXRlKSB7Ci0gIHZhciBlbmQgPSBzdGFydDsKLSAgc3RhcnQgPSBzdGFydCAtIDE7Ci0KLSAg
d2hpbGUgKHN0YXJ0ID4gMCAmJiBzdGF0ZS5nLnNvdXJjZVtzdGFydF0gIT0gJ1xuJykgewotICAg
IGlmICghc3RhdGUuZy5zb3VyY2Vbc3RhcnRdLm1hdGNoKC9bIFx0XS8pKSB7Ci0gICAgICBlbmQg
PSBzdGFydDsKLSAgICB9Ci0gICAgc3RhcnQtLTsKLSAgfQotICByZXR1cm4gc3RhdGUuZy5zb3Vy
Y2Uuc3Vic3RyaW5nKHN0YXJ0ICsgMSwgZW5kKTsKLX0KLQotZnVuY3Rpb24gZ2V0RG9jYmxvY2so
c3RhdGUpIHsKLSAgaWYgKCFzdGF0ZS5nLmRvY2Jsb2NrKSB7Ci0gICAgdmFyIGRvY2Jsb2NrID0g
cmVxdWlyZSgnLi9kb2NibG9jaycpOwotICAgIHN0YXRlLmcuZG9jYmxvY2sgPQotICAgICAgZG9j
YmxvY2sucGFyc2VBc09iamVjdChkb2NibG9jay5leHRyYWN0KHN0YXRlLmcuc291cmNlKSk7Ci0g
IH0KLSAgcmV0dXJuIHN0YXRlLmcuZG9jYmxvY2s7Ci19Ci0KLWV4cG9ydHMuY2F0Y2h1cCA9IGNh
dGNodXA7Ci1leHBvcnRzLmNhdGNodXBXaGl0ZVNwYWNlID0gY2F0Y2h1cFdoaXRlU3BhY2U7Ci1l
eHBvcnRzLmFwcGVuZCA9IGFwcGVuZDsKLWV4cG9ydHMubW92ZSA9IG1vdmU7Ci1leHBvcnRzLnVw
ZGF0ZUluZGVudCA9IHVwZGF0ZUluZGVudDsKLWV4cG9ydHMuaW5kZW50QmVmb3JlID0gaW5kZW50
QmVmb3JlOwotZXhwb3J0cy51cGRhdGVTdGF0ZSA9IHVwZGF0ZVN0YXRlOwotZXhwb3J0cy5jcmVh
dGVTdGF0ZSA9IGNyZWF0ZVN0YXRlOwotZXhwb3J0cy5nZXREb2NibG9jayA9IGdldERvY2Jsb2Nr
OwotCi19KSgpCi19LHsiLi9kb2NibG9jayI6MTZ9XSwxOTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1
bGUsZXhwb3J0cyl7Ci0oZnVuY3Rpb24oKXsvKioKLSAqIENvcHlyaWdodCAyMDEzIEZhY2Vib29r
LCBJbmMuCi0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9u
IDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2Vw
dCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNv
cHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg
b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9V
VCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9y
IGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBn
b3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5z
ZS4KLSAqLwotLypnbG9iYWwgZXhwb3J0czp0cnVlKi8KLSJ1c2Ugc3RyaWN0IjsKLQotLyoqCi0g
KiBEZXN1Z2FyaXplciBmb3IgRVM2IG1pbmltYWwgY2xhc3MgcHJvcG9zYWwuIFNlZQotICogaHR0
cDovL3dpa2kuZWNtYXNjcmlwdC5vcmcvZG9rdS5waHA/aWQ9aGFybW9ueTpwcm9wb3NhbHMKLSAq
Ci0gKiBEb2VzIG5vdCByZXF1aXJlIGFueSBydW50aW1lLiBQcmVzZXJ2ZXMgd2hpdGVzcGFjZSBh
bmQgY29tbWVudHMuCi0gKiBTdXBwb3J0cyBhIGNsYXNzIGRlY2xhcmF0aW9uIHdpdGggbWV0aG9k
cywgc3VwZXIgY2FsbHMgYW5kIGluaGVyaXRhbmNlLgotICogQ3VycmVudGx5IGRvZXMgbm90IHN1
cHBvcnQgZm9yIGdldHRlcnMgYW5kIHNldHRlcnMsIHNpbmNlIHRoZXJlJ3MgYSB2ZXJ5Ci0gKiBs
b3cgcHJvYmFiaWxpdHkgd2UncmUgZ29pbmcgdG8gdXNlIHRoZW0gYW55dGltZSBzb29uLgotICoK
LSAqIEFkZGl0aW9uYWwgZmVhdHVyZXM6Ci0gKiAtIEFueSBtZW1iZXIgd2l0aCBwcml2YXRlIG5h
bWUgKHRoZSBuYW1lIHdpdGggcHJlZml4IF8sIHN1Y2ggX25hbWUpIGluc2lkZQotICogICB0aGUg
Y2xhc3MncyBzY29wZSB3aWxsIGJlIG11bmdlZC4gVGhpcyB3b3VsZCB3aWxsIHRvIGVsaW1pbmF0
ZSB0aGUgY2FzZQotICogICBvZiBzdWItY2xhc3MgYWNjaWRlbnRhbGx5IG92ZXJyaWRpbmcgdGhl
IHN1cGVyLWNsYXNzJ3MgcHJvdmF0ZSBwcm9wZXJ0aWVzCi0gKiAgIGFsc28gZGlzY291YWdlIHBl
b3BsZSBmcm9tIGFjY2Vzc2luZyBwcml2YXRlIG1lbWJlcnMgdGhhdCB0aGV5IHNob3VsZCBub3QK
LSAqICAgYWNjZXNzLiBIb3dldmVyLCBxdW90ZWQgcHJvcGVydHkgbmFtZXMgZG9uJ3QgZ2V0IG11
bmdlZC4KLSAqCi0gKiBjbGFzcyBTa2lubmVkTWVzaCBleHRlbmRzIHJlcXVpcmUoJ1RIUkVFJyku
TWVzaCB7Ci0gKgotICogICB1cGRhdGUoY2FtZXJhKSB7Ci0gKiAgICAgY2FtZXJhLmNvZGUgPSAn
aXBob25lJwotICogICAgIHN1cGVyLnVwZGF0ZShjYW1lcmEpOwotICogICB9Ci0gKgotICogICAv
Ci0gKiAgICAqIEBjb25zdHJ1Y3RvcgotICogICAgLwotICogICBjb25zdHJ1Y3RvcihnZW9tZXRy
eSwgbWF0ZXJpYWxzKSB7Ci0gKiAgICAgc3VwZXIoZ2VvbWV0cnksIG1hdGVyaWFscyk7Ci0gKgot
ICogICAgIHN1cGVyLnVwZGF0ZSgxKTsKLSAqCi0gKiAgICAgdGhpcy5pZGVudGl0eU1hdHJpeCA9
IG5ldyBUSFJFRS5NYXRyaXg0KCk7Ci0gKiAgICAgdGhpcy5ib25lcyA9IFtdOwotICogICAgIHRo
aXMuYm9uZU1hdHJpY2VzID0gW107Ci0gKiAgICAgdGhpcy5fbmFtZSA9ICdmb28nOwotICogICB9
Ci0gKgotICogICAvCi0gKiAgICAqIHNvbWUgb3RoZXIgY29kZQotICogICAgLwotICogICByZWFk
TW9yZSgpIHsKLSAqCi0gKiAgIH0KLSAqCi0gKiAgIF9kb1NvbWV0aGluZygpIHsKLSAqCi0gKiAg
IH0KLSAqIH0KLSAqCi0gKiBzaG91bGQgYmUgY29udmVydGVkIHRvCi0gKgotICogdmFyIFNraW5u
ZWRNZXNoID0gKGZ1bmN0aW9uKCkgewotICogICB2YXIgX19zdXBlciA9IHJlcXVpcmUoJ3BhcmVu
dCcpLk1lc2g7Ci0gKgotICogICAvCi0gKiAgICAqIEBjb25zdHJ1Y3RvcgotICogICAgLwotICog
ICBmdW5jdGlvbiBTa2lubmVkTWVzaChnZW9tZXRyeSwgbWF0ZXJpYWxzKSB7Ci0gKiAgICAgX19z
dXBlci5jYWxsKHRoaXMsIGdlb21ldHJ5LCBtYXRlcmlhbHMpOwotICoKLSAqICAgICBfX3N1cGVy
LnByb3RvdHlwZS51cGRhdGUuY2FsbCh0aGlzLCAxKTsKLSAqCi0gKiAgICAgdGhpcy5pZGVudGl0
eU1hdHJpeCA9IG5ldyBUSFJFRS5NYXRyaXg0KCk7Ci0gKiAgICAgdGhpcy5ib25lcyA9IFtdOwot
ICogICAgIHRoaXMuYm9uZU1hdHJpY2VzID0gW107Ci0gKiAgICAgdGhpcy4kU2tpbm5lZE1lc2hf
bmFtZSA9ICdmb28nOwotICogICB9Ci0gKiAgIFNraW5uZWRNZXNoLnByb3RvdHlwZSA9IE9iamVj
dC5jcmVhdGUoX19zdXBlci5wcm90b3R5cGUpOwotICogICBTa2lubmVkTWVzaC5wcm90b3R5cGUu
Y29uc3RydWN0b3IgPSBTa2lubmVkTWVzaDsKLSAqCi0gKiAgIC8KLSAqICAgICogQHBhcmFtIGNh
bWVyYQotICogICAgLwotICogICBTa2lubmVkTWVzaC5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rp
b24oY2FtZXJhKSB7Ci0gKiAgICAgY2FtZXJhLmNvZGUgPSAnaXBob25lJwotICogICAgIF9fc3Vw
ZXIucHJvdG90eXBlLnVwZGF0ZS5jYWxsKHRoaXMsIGNhbWVyYSk7Ci0gKiAgIH07Ci0gKgotICog
ICBTa2lubmVkTWVzaC5wcm90b3R5cGUucmVhZE1vcmUgPSBmdW5jdGlvbigpIHsKLSAqCi0gKiAg
IH07Ci0gKgotICogICBTa2lubmVkTWVzaC5wcm90b3R5cGUuJFNraW5uZWRNZXNoX2RvU29tZXRo
aW5nID0gZnVuY3Rpb24oKSB7Ci0gKgotICogICB9OwotICoKLSAqICAgcmV0dXJuIFNraW5uZWRN
ZXNoOwotICogfSkoKTsKLSAqCi0gKi8KLXZhciBTeW50YXggPSByZXF1aXJlKCdlc3ByaW1hJyku
U3ludGF4OwotdmFyIGJhc2U2MiA9IHJlcXVpcmUoJ2Jhc2U2MicpOwotCi12YXIgY2F0Y2h1cCA9
IHJlcXVpcmUoJy4uL2xpYi91dGlscycpLmNhdGNodXA7Ci12YXIgYXBwZW5kID0gcmVxdWlyZSgn
Li4vbGliL3V0aWxzJykuYXBwZW5kOwotdmFyIG1vdmUgPSByZXF1aXJlKCcuLi9saWIvdXRpbHMn
KS5tb3ZlOwotdmFyIGluZGVudEJlZm9yZSA9IHJlcXVpcmUoJy4uL2xpYi91dGlscycpLmluZGVu
dEJlZm9yZTsKLXZhciB1cGRhdGVJbmRlbnQgPSByZXF1aXJlKCcuLi9saWIvdXRpbHMnKS51cGRh
dGVJbmRlbnQ7Ci12YXIgdXBkYXRlU3RhdGUgPSByZXF1aXJlKCcuLi9saWIvdXRpbHMnKS51cGRh
dGVTdGF0ZTsKLQotZnVuY3Rpb24gZmluZENvbnN0cnVjdG9ySW5kZXgob2JqZWN0KSB7Ci0gIHZh
ciBjbGFzc0VsZW1lbnRzID0gb2JqZWN0LmJvZHkgJiYgb2JqZWN0LmJvZHkuYm9keSB8fCBbXTsK
LSAgZm9yICh2YXIgaSA9IDA7IGkgPCBjbGFzc0VsZW1lbnRzLmxlbmd0aDsgaSsrKSB7Ci0gICAg
aWYgKGNsYXNzRWxlbWVudHNbaV0udHlwZSA9PT0gU3ludGF4Lk1ldGhvZERlZmluaXRpb24gJiYK
LSAgICAgIGNsYXNzRWxlbWVudHNbaV0ua2V5Lm5hbWUgPT09ICdjb25zdHJ1Y3RvcicpIHsKLSAg
ICAgIHJldHVybiBpOwotICAgIH0KLSAgfQotICByZXR1cm4gLTE7Ci19Ci0KLXZhciBfbXVuZ2Vk
U3ltYm9sTWFwcyA9IHt9OwotZnVuY3Rpb24gZ2V0TXVuZ2VkTmFtZShzY29wZU5hbWUsIG5hbWUs
IG1pbmlmeSkgewotICBpZiAobWluaWZ5KSB7Ci0gICAgaWYgKCFfbXVuZ2VkU3ltYm9sTWFwc1tz
Y29wZU5hbWVdKSB7Ci0gICAgICBfbXVuZ2VkU3ltYm9sTWFwc1tzY29wZU5hbWVdID0gewotICAg
ICAgICBzeW1ib2xNYXA6IHt9LAotICAgICAgICBpZGVudGlmaWVyVVVJRENvdW50ZXI6IDAKLSAg
ICAgIH07Ci0gICAgfQotCi0gICAgdmFyIHN5bWJvbE1hcCA9IF9tdW5nZWRTeW1ib2xNYXBzW3Nj
b3BlTmFtZV0uc3ltYm9sTWFwOwotICAgIGlmICghc3ltYm9sTWFwW25hbWVdKSB7Ci0gICAgICBz
eW1ib2xNYXBbbmFtZV0gPQotICAgICAgICBiYXNlNjIuZW5jb2RlKF9tdW5nZWRTeW1ib2xNYXBz
W3Njb3BlTmFtZV0uaWRlbnRpZmllclVVSURDb3VudGVyKTsKLSAgICAgIF9tdW5nZWRTeW1ib2xN
YXBzW3Njb3BlTmFtZV0uaWRlbnRpZmllclVVSURDb3VudGVyKys7Ci0gICAgfQotICAgIG5hbWUg
PSBzeW1ib2xNYXBbbmFtZV07Ci0gIH0KLSAgcmV0dXJuICckJyArIHNjb3BlTmFtZSArIG5hbWU7
Ci19Ci0KLWZ1bmN0aW9uIHNob3VsZE11bmdlTmFtZShzY29wZU5hbWUsIG5hbWUsIHN0YXRlKSB7
Ci0gIC8vIG9ubHkgcnVuIHdoZW4gQHByZXZlbnRNdW5nZSBpcyBub3QgcHJlc2VudCBpbiB0aGUg
ZG9jYmxvY2sKLSAgaWYgKHN0YXRlLmcucHJldmVudE11bmdlID09PSB1bmRlZmluZWQpIHsKLSAg
ICB2YXIgZG9jYmxvY2sgPSByZXF1aXJlKCcuLi9saWIvZG9jYmxvY2snKTsKLSAgICBzdGF0ZS5n
LnByZXZlbnRNdW5nZSA9IGRvY2Jsb2NrLnBhcnNlQXNPYmplY3QoCi0gICAgICBkb2NibG9jay5l
eHRyYWN0KHN0YXRlLmcuc291cmNlKSkucHJldmVudE11bmdlICE9PSB1bmRlZmluZWQ7Ci0gIH0K
LSAgLy8gU3RhcnRzIHdpdGggb25seSBhIHNpbmdsZSB1bmRlcnNjb3JlIChpLmUuIGRvbid0IGNv
dW50IGRvdWJsZS11bmRlcnNjb3JlcykKLSAgcmV0dXJuICFzdGF0ZS5nLnByZXZlbnRNdW5nZSAm
JiBzY29wZU5hbWUgPyAvXl8oPyFfKS8udGVzdChuYW1lKSA6IGZhbHNlOwotfQotCi0KLWZ1bmN0
aW9uIGdldFByb3RvT2ZQcm90b3R5cGVWYXJpYWJsZU5hbWUoc3VwZXJWYXIpIHsKLSAgcmV0dXJu
IHN1cGVyVmFyICsgJ1Byb3RvT2ZQcm90b3R5cGUnOwotfQotCi1mdW5jdGlvbiBnZXRTdXBlcktl
eU5hbWUoc3VwZXJWYXIpIHsKLSAgcmV0dXJuIHN1cGVyVmFyICsgJ0tleSc7Ci19Ci0KLWZ1bmN0
aW9uIGdldFN1cGVyUHJvdG9PZlByb3RvdHlwZVZhcmlhYmxlKHN1cGVyVmFyaWFibGVOYW1lLCBp
bmRlbnQpIHsKLSAgdmFyIHN0cmluZyA9IChpbmRlbnQgKwotICAgICd2YXIgJHByb3RvID0gJHN1
cGVyTmFtZSAmJiAkc3VwZXJOYW1lLnByb3RvdHlwZSA/ICcgKwotICAgICckc3VwZXJOYW1lLnBy
b3RvdHlwZSA6ICRzdXBlck5hbWU7XG4nCi0gICkucmVwbGFjZSgvXCRwcm90by9nLCBnZXRQcm90
b09mUHJvdG90eXBlVmFyaWFibGVOYW1lKHN1cGVyVmFyaWFibGVOYW1lKSkKLSAgIC5yZXBsYWNl
KC9cJHN1cGVyTmFtZS9nLCBzdXBlclZhcmlhYmxlTmFtZSk7Ci0gICByZXR1cm4gc3RyaW5nOwot
fQotCi0KLWZ1bmN0aW9uIGdldEluaGVyaXRhbmNlU2V0dXAoc3VwZXJDbGFzc1Rva2VuLCBjbGFz
c05hbWUsIGluZGVudCwgc3VwZXJOYW1lKSB7Ci0gIHZhciBzdHJpbmcgPSAnJzsKLSAgaWYgKHN1
cGVyQ2xhc3NUb2tlbikgewotICAgIHN0cmluZyArPSBnZXRTdGF0aWNNZXRob2RzT25Db25zdHJ1
Y3RvclNldHVwKGNsYXNzTmFtZSwgaW5kZW50LCBzdXBlck5hbWUpOwotICAgIHN0cmluZyArPSBn
ZXRQcm90b3R5cGVPbkNvbnN0cnVjdG9yU2V0dXAoY2xhc3NOYW1lLCBpbmRlbnQsIHN1cGVyTmFt
ZSk7Ci0gICAgc3RyaW5nICs9IGdldENvbnN0cnVjdG9yUHJvcGVydHlTZXR1cChjbGFzc05hbWUs
IGluZGVudCk7Ci0gIH0KLSAgcmV0dXJuIHN0cmluZzsKLX0KLQotZnVuY3Rpb24gZ2V0U3RhdGlj
TWV0aG9kc09uQ29uc3RydWN0b3JTZXR1cChjbGFzc05hbWUsIGluZGVudCwgc3VwZXJOYW1lKSB7
Ci0gIHZhciBzdHJpbmcgPSAoIGluZGVudCArCi0gICAgJ2ZvciAodmFyICRrZXlOYW1lIGluICRz
dXBlck5hbWUpIHtcbicgKyBpbmRlbnQgKwotICAgICcgIGlmICgkc3VwZXJOYW1lLmhhc093blBy
b3BlcnR5KCRrZXlOYW1lKSkge1xuJyArIGluZGVudCArCi0gICAgJyAgICAkY2xhc3NOYW1lWyRr
ZXlOYW1lXSA9ICRzdXBlck5hbWVbJGtleU5hbWVdO1xuJyArIGluZGVudCArCi0gICAgJyAgfVxu
JyArIGluZGVudCArCi0gICAgJ31cbicpCi0gICAgLnJlcGxhY2UoL1wkY2xhc3NOYW1lL2csIGNs
YXNzTmFtZSkKLSAgICAucmVwbGFjZSgvXCRrZXlOYW1lL2csIGdldFN1cGVyS2V5TmFtZShzdXBl
ck5hbWUpKQotICAgIC5yZXBsYWNlKC9cJHN1cGVyTmFtZS9nLCBzdXBlck5hbWUpOwotICByZXR1
cm4gc3RyaW5nOwotfQotCi1mdW5jdGlvbiBnZXRQcm90b3R5cGVPbkNvbnN0cnVjdG9yU2V0dXAo
Y2xhc3NOYW1lLCBpbmRlbnQsIHN1cGVyTmFtZSkgewotICB2YXIgc3RyaW5nID0gKCBpbmRlbnQg
KwotICAgICckY2xhc3NOYW1lLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoJHByb3RvUHJvdG90
eXBlKTtcbicpCi0gICAgLnJlcGxhY2UoL1wkcHJvdG9Qcm90b3R5cGUvZywgZ2V0UHJvdG9PZlBy
b3RvdHlwZVZhcmlhYmxlTmFtZShzdXBlck5hbWUpKQotICAgIC5yZXBsYWNlKC9cJGNsYXNzTmFt
ZS9nLCBjbGFzc05hbWUpOwotICByZXR1cm4gc3RyaW5nOwotfQotCi1mdW5jdGlvbiBnZXRDb25z
dHJ1Y3RvclByb3BlcnR5U2V0dXAoY2xhc3NOYW1lLCBpbmRlbnQpIHsKLSAgdmFyIHN0cmluZyA9
ICggaW5kZW50ICsKLSAgICAnJGNsYXNzTmFtZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSAkY2xh
c3NOYW1lO1xuJykKLSAgICAucmVwbGFjZSgvXCRjbGFzc05hbWUvZywgY2xhc3NOYW1lKTsKLQot
ICByZXR1cm4gc3RyaW5nOwotfQotCi1mdW5jdGlvbiBnZXRTdXBlckNvbnN0cnVjdG9yU2V0dXAo
c3VwZXJDbGFzc1Rva2VuLCBpbmRlbnQsIHN1cGVyTmFtZSkgewotICBpZiAoIXN1cGVyQ2xhc3NU
b2tlbikgcmV0dXJuICcnOwotICB2YXIgc3RyaW5nID0gKCAnXG4nICsgaW5kZW50ICsKLSAgICAn
ICBpZiAoJHN1cGVyTmFtZSAmJiAkc3VwZXJOYW1lLnByb3RvdHlwZSkge1xuJyArIGluZGVudCAr
Ci0gICAgJyAgICAkc3VwZXJOYW1lLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4nICsgaW5kZW50
ICsKLSAgICAnICB9XG4nICsgaW5kZW50KQotICAgIC5yZXBsYWNlKC9cJHN1cGVyTmFtZS9nLCBz
dXBlck5hbWUpOwotICByZXR1cm4gc3RyaW5nOwotfQotCi1mdW5jdGlvbiBnZXRNZW1iZXJGdW5j
dGlvbkNhbGwoc3VwZXJWYXIsIHByb3BlcnR5TmFtZSwgc3VwZXJBcmdzKSB7Ci0gIHZhciBzdHJp
bmcgPSAoCi0gICAgJyRzdXBlclByb3RvdHlwZS4kcHJvcGVydHlOYW1lLmNhbGwoJHN1cGVyQXJn
dW1lbnRzKScpCi0gIC5yZXBsYWNlKC9cJHN1cGVyUHJvdG90eXBlL2csIGdldFByb3RvT2ZQcm90
b3R5cGVWYXJpYWJsZU5hbWUoc3VwZXJWYXIpKQotICAucmVwbGFjZSgvXCRwcm9wZXJ0eU5hbWUv
ZywgcHJvcGVydHlOYW1lKQotICAucmVwbGFjZSgvXCRzdXBlckFyZ3VtZW50cy9nLCBzdXBlckFy
Z3MpOwotICByZXR1cm4gc3RyaW5nOwotfQotCi1mdW5jdGlvbiBnZXRDYWxsUGFyYW1zKGNsYXNz
RWxlbWVudCwgc3RhdGUpIHsKLSAgdmFyIHBhcmFtcyA9IGNsYXNzRWxlbWVudC52YWx1ZS5wYXJh
bXM7Ci0gIGlmICghcGFyYW1zLmxlbmd0aCkgewotICAgIHJldHVybiAnJzsKLSAgfQotICByZXR1
cm4gc3RhdGUuZy5zb3VyY2Uuc3Vic3RyaW5nKAotICAgIHBhcmFtc1swXS5yYW5nZVswXSwKLSAg
ICBwYXJhbXNbcGFyYW1zLmxlbmd0aCAtIDFdLnJhbmdlWzFdKTsKLX0KLQotZnVuY3Rpb24gZ2V0
U3VwZXJBcmd1bWVudHMoY2FsbEV4cHJlc3Npb24sIHN0YXRlKSB7Ci0gIHZhciBhcmdzID0gY2Fs
bEV4cHJlc3Npb24uYXJndW1lbnRzOwotICBpZiAoIWFyZ3MubGVuZ3RoKSB7Ci0gICAgcmV0dXJu
ICd0aGlzJzsKLSAgfQotICByZXR1cm4gJ3RoaXMsICcgKyBzdGF0ZS5nLnNvdXJjZS5zdWJzdHJp
bmcoCi0gICAgYXJnc1swXS5yYW5nZVswXSwKLSAgICBhcmdzW2FyZ3MubGVuZ3RoIC0gMV0ucmFu
Z2VbMV0pOwotfQotCi0vLyBUaGUgc2VlZCBpcyB1c2VkIHRvIGdlbmVyYXRlIHRoZSBuYW1lIGZv
ciBhbiBhbm9ueW1vdXMgY2xhc3MsCi0vLyBhbmQgdGhpcyBzZWVkIHNob3VsZCBiZSB1bmlxdWUg
cGVyIGJyb3dzZXIncyBzZXNzaW9uLgotLy8gVGhlIHZhbHVlIG9mIHRoZSBzZWVkIGxvb2tzIGxp
a2UgdGhpczogMTIyOTU4ODUwNS4yOTY5MDEyLgotdmFyIGNsYXNzSURTZWVkID0gRGF0ZS5ub3co
KSAlICg2MCAqIDYwICogMTAwMCkgKyBNYXRoLnJhbmRvbSgpOwotCi0vKioKLSAqIEdlbmVyYXRl
cyBhIG5hbWUgZm9yIGFuIGFub255bW91cyBjbGFzcy4gVGhlIGdlbmVyYXRlZCB2YWx1ZSBsb29r
cyBsaWtlCi0gKiB0aGlzOiAiQ2xhc3NrYzZwY25fbW5pemExeXZpIgotICogQHBhcmFtIHtTdHJp
bmd9IHNjb3BlTmFtZQotICogQHJldHVybiB7c3RyaW5nfSB0aGUgc2NvcGUgbmFtZSBmb3IgQW5v
bnltb3VzIENsYXNzCi0gKi8KLWZ1bmN0aW9uIGdlbmVyYXRlQW5vbnltb3VzQ2xhc3NOYW1lKHNj
b3BlTmFtZSkgewotICBjbGFzc0lEU2VlZCsrOwotICByZXR1cm4gJ0NsYXNzJyArCi0gICAgKGNs
YXNzSURTZWVkKS50b1N0cmluZygzNikucmVwbGFjZSgnLicsICdfJykgKwotICAgIChzY29wZU5h
bWUgfHwgJycpOwotfQotCi1mdW5jdGlvbiByZW5kZXJNZXRob2RzKHRyYXZlcnNlLCBvYmplY3Qs
IG5hbWUsIHBhdGgsIHN0YXRlKSB7Ci0gIHZhciBjbGFzc0VsZW1lbnRzID0gb2JqZWN0LmJvZHkg
JiYgb2JqZWN0LmJvZHkuYm9keSB8fCBbXTsKLQotICBtb3ZlKG9iamVjdC5ib2R5LnJhbmdlWzBd
ICsgMSwgc3RhdGUpOwotICBmb3IgKHZhciBpID0gMDsgaSA8IGNsYXNzRWxlbWVudHMubGVuZ3Ro
OyBpKyspIHsKLSAgICBpZiAoY2xhc3NFbGVtZW50c1tpXS5rZXkubmFtZSAhPT0gJ2NvbnN0cnVj
dG9yJykgewotICAgICAgY2F0Y2h1cChjbGFzc0VsZW1lbnRzW2ldLnJhbmdlWzBdLCBzdGF0ZSk7
Ci0KLSAgICAgIHZhciBtZW1iZXJOYW1lID0gY2xhc3NFbGVtZW50c1tpXS5rZXkubmFtZTsKLSAg
ICAgIGlmIChzaG91bGRNdW5nZU5hbWUoc3RhdGUuc2NvcGVOYW1lLCBtZW1iZXJOYW1lLCBzdGF0
ZSkpIHsKLSAgICAgICAgbWVtYmVyTmFtZSA9IGdldE11bmdlZE5hbWUoCi0gICAgICAgICAgc3Rh
dGUuc2NvcGVOYW1lLAotICAgICAgICAgIG1lbWJlck5hbWUsCi0gICAgICAgICAgc3RhdGUuZy5v
cHRzLm1pbmlmeQotICAgICAgICApOwotICAgICAgfQotCi0gICAgICB2YXIgcHJvdG90eXBlT3JT
dGF0aWM7Ci0gICAgICBpZiAoY2xhc3NFbGVtZW50c1tpXVsnc3RhdGljJ10pIHsKLSAgICAgICAg
cHJvdG90eXBlT3JTdGF0aWMgPSAnJzsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIHByb3RvdHlw
ZU9yU3RhdGljID0gJ3Byb3RvdHlwZS4nOwotICAgICAgfQotCi0gICAgICBhcHBlbmQobmFtZSAr
ICcuJyArIHByb3RvdHlwZU9yU3RhdGljICsgbWVtYmVyTmFtZSArICcgPSAnLCBzdGF0ZSk7Ci0g
ICAgICByZW5kZXJNZXRob2QodHJhdmVyc2UsIGNsYXNzRWxlbWVudHNbaV0sIG51bGwsIHBhdGgs
IHN0YXRlKTsKLSAgICAgIGFwcGVuZCgnOycsIHN0YXRlKTsKLSAgICB9Ci0gICAgbW92ZShjbGFz
c0VsZW1lbnRzW2ldLnJhbmdlWzFdLCBzdGF0ZSk7Ci0gIH0KLSAgaWYgKGNsYXNzRWxlbWVudHMu
bGVuZ3RoKSB7Ci0gICAgYXBwZW5kKCdcbicsIHN0YXRlKTsKLSAgfQotICBtb3ZlKG9iamVjdC5y
YW5nZVsxXSwgc3RhdGUpOwotfQotCi1mdW5jdGlvbiByZW5kZXJNZXRob2QodHJhdmVyc2UsIG1l
dGhvZCwgbmFtZSwgcGF0aCwgc3RhdGUpIHsKLSAgYXBwZW5kKG5hbWUgPyAnZnVuY3Rpb24gJyAr
IG5hbWUgKyAnKCcgOiAnZnVuY3Rpb24oJywgc3RhdGUpOwotICBhcHBlbmQoZ2V0Q2FsbFBhcmFt
cyhtZXRob2QsIHN0YXRlKSArICcpIHsnLCBzdGF0ZSk7Ci0gIG1vdmUobWV0aG9kLnZhbHVlLmJv
ZHkucmFuZ2VbMF0gKyAxLCBzdGF0ZSk7Ci0gIHRyYXZlcnNlKG1ldGhvZC52YWx1ZS5ib2R5LCBw
YXRoLCBzdGF0ZSk7Ci0gIGNhdGNodXAobWV0aG9kLnZhbHVlLmJvZHkucmFuZ2VbMV0gLSAxLCBz
dGF0ZSk7Ci0gIGFwcGVuZCgnfScsIHN0YXRlKTsKLX0KLQotZnVuY3Rpb24gcmVuZGVyU3VwZXJD
bGFzcyh0cmF2ZXJzZSwgc3VwZXJDbGFzcywgcGF0aCwgc3RhdGUpIHsKLSAgYXBwZW5kKCd2YXIg
JyArIHN0YXRlLnN1cGVyVmFyICsgJyA9ICcsIHN0YXRlKTsKLSAgbW92ZShzdXBlckNsYXNzLnJh
bmdlWzBdLCBzdGF0ZSk7Ci0gIHRyYXZlcnNlKHN1cGVyQ2xhc3MsIHBhdGgsIHN0YXRlKTsKLSAg
Y2F0Y2h1cChzdXBlckNsYXNzLnJhbmdlWzFdLCBzdGF0ZSk7Ci0gIGFwcGVuZCgnO1xuJywgc3Rh
dGUpOwotfQotCi1mdW5jdGlvbiByZW5kZXJDb25zdHJ1Y3Rvcih0cmF2ZXJzZSwgb2JqZWN0LCBu
YW1lLCBpbmRlbnQsIHBhdGgsIHN0YXRlKSB7Ci0gIHZhciBjbGFzc0VsZW1lbnRzID0gb2JqZWN0
LmJvZHkgJiYgb2JqZWN0LmJvZHkuYm9keSB8fCBbXTsKLSAgdmFyIGNvbnN0cnVjdG9ySW5kZXgg
PSBmaW5kQ29uc3RydWN0b3JJbmRleChvYmplY3QpOwotICB2YXIgY29uc3RydWN0b3IgPSBjb25z
dHJ1Y3RvckluZGV4ID09PSAtMSA/Ci0gICAgbnVsbCA6Ci0gICAgY2xhc3NFbGVtZW50c1tjb25z
dHJ1Y3RvckluZGV4XTsKLSAgaWYgKGNvbnN0cnVjdG9yKSB7Ci0gICAgbW92ZShjb25zdHJ1Y3Rv
ckluZGV4ID09PSAwID8KLSAgICAgIG9iamVjdC5ib2R5LnJhbmdlWzBdICsgMSA6Ci0gICAgICBj
bGFzc0VsZW1lbnRzW2NvbnN0cnVjdG9ySW5kZXggLSAxXS5yYW5nZVsxXSwgc3RhdGUpOwotICAg
IGNhdGNodXAoY29uc3RydWN0b3IucmFuZ2VbMF0sIHN0YXRlKTsKLSAgICByZW5kZXJNZXRob2Qo
dHJhdmVyc2UsIGNvbnN0cnVjdG9yLCBuYW1lLCBwYXRoLCBzdGF0ZSk7Ci0gICAgYXBwZW5kKCdc
bicsIHN0YXRlKTsKLSAgfSBlbHNlIHsKLSAgICBpZiAob2JqZWN0LnN1cGVyQ2xhc3MpIHsKLSAg
ICAgIGFwcGVuZCgnXG4nICsgaW5kZW50LCBzdGF0ZSk7Ci0gICAgfQotICAgIGFwcGVuZCgnZnVu
Y3Rpb24gJywgc3RhdGUpOwotICAgIGlmIChvYmplY3QuaWQpIHsKLSAgICAgIG1vdmUob2JqZWN0
LmlkLnJhbmdlWzBdLCBzdGF0ZSk7Ci0gICAgfQotICAgIGFwcGVuZChuYW1lLCBzdGF0ZSk7Ci0g
ICAgaWYgKG9iamVjdC5pZCkgewotICAgICAgbW92ZShvYmplY3QuaWQucmFuZ2VbMV0sIHN0YXRl
KTsKLSAgICB9Ci0gICAgYXBwZW5kKCcoKXsgJywgc3RhdGUpOwotICAgIGlmIChvYmplY3QuYm9k
eSkgewotICAgICAgbW92ZShvYmplY3QuYm9keS5yYW5nZVswXSwgc3RhdGUpOwotICAgIH0KLSAg
ICBhcHBlbmQoZ2V0U3VwZXJDb25zdHJ1Y3RvclNldHVwKAotICAgICAgb2JqZWN0LnN1cGVyQ2xh
c3MsCi0gICAgICBpbmRlbnQsCi0gICAgICBzdGF0ZS5zdXBlclZhciksIHN0YXRlKTsKLSAgICBh
cHBlbmQoJ31cbicsIHN0YXRlKTsKLSAgfQotfQotCi12YXIgc3VwZXJJZCA9IDA7Ci1mdW5jdGlv
biByZW5kZXJDbGFzc0JvZHkodHJhdmVyc2UsIG9iamVjdCwgcGF0aCwgc3RhdGUpIHsKLSAgdmFy
IG5hbWUgPSBvYmplY3QuaWQgPyBvYmplY3QuaWQubmFtZSA6ICdjb25zdHJ1Y3Rvcic7Ci0gIHZh
ciBzdXBlckNsYXNzID0gb2JqZWN0LnN1cGVyQ2xhc3M7Ci0gIHZhciBpbmRlbnQgPSB1cGRhdGVJ
bmRlbnQoCi0gICAgaW5kZW50QmVmb3JlKG9iamVjdC5yYW5nZVswXSwgc3RhdGUpICsgJyAgJywK
LSAgICBzdGF0ZSk7Ci0KLSAgc3RhdGUgPSB1cGRhdGVTdGF0ZSgKLSAgICBzdGF0ZSwKLSAgICB7
Ci0gICAgICBzY29wZU5hbWU6IG9iamVjdC5pZCA/IG9iamVjdC5pZC5uYW1lIDoKLSAgICAgICAg
Z2VuZXJhdGVBbm9ueW1vdXNDbGFzc05hbWUoc3RhdGUuc2NvcGVOYW1lKSwKLSAgICAgIHN1cGVy
VmFyOiBzdXBlckNsYXNzID8gJ19fc3VwZXInICsgc3VwZXJJZCsrIDogJycKLSAgICB9KTsKLQot
ICAvLyBzdXBlciBjbGFzcwotICBpZiAoc3VwZXJDbGFzcykgewotICAgIGFwcGVuZChpbmRlbnQs
IHN0YXRlKTsKLSAgICByZW5kZXJTdXBlckNsYXNzKHRyYXZlcnNlLCBzdXBlckNsYXNzLCBwYXRo
LCBzdGF0ZSk7Ci0gICAgYXBwZW5kKGdldFN1cGVyUHJvdG9PZlByb3RvdHlwZVZhcmlhYmxlKHN0
YXRlLnN1cGVyVmFyLCBpbmRlbnQpLCBzdGF0ZSk7Ci0gIH0KLQotICByZW5kZXJDb25zdHJ1Y3Rv
cih0cmF2ZXJzZSwgb2JqZWN0LCBuYW1lLCBpbmRlbnQsIHBhdGgsIHN0YXRlKTsKLSAgYXBwZW5k
KGdldEluaGVyaXRhbmNlU2V0dXAoc3VwZXJDbGFzcywgbmFtZSwgaW5kZW50LCBzdGF0ZS5zdXBl
clZhciksIHN0YXRlKTsKLSAgcmVuZGVyTWV0aG9kcyh0cmF2ZXJzZSwgb2JqZWN0LCBuYW1lLCBw
YXRoLCBzdGF0ZSk7Ci19Ci0KLQotLyoqCi0gKiBAcHVibGljCi0gKi8KLWZ1bmN0aW9uIHZpc2l0
Q2xhc3NFeHByZXNzaW9uKHRyYXZlcnNlLCBvYmplY3QsIHBhdGgsIHN0YXRlKSB7Ci0gIHZhciBp
bmRlbnQgPSB1cGRhdGVJbmRlbnQoCi0gICAgaW5kZW50QmVmb3JlKG9iamVjdC5yYW5nZVswXSwg
c3RhdGUpICsgJyAgJywKLSAgICBzdGF0ZSk7Ci0gIHZhciBuYW1lID0gb2JqZWN0LmlkID8gb2Jq
ZWN0LmlkLm5hbWUgOiAnY29uc3RydWN0b3InOwotCi0gIGFwcGVuZCgnKGZ1bmN0aW9uKCkge1xu
Jywgc3RhdGUpOwotICByZW5kZXJDbGFzc0JvZHkodHJhdmVyc2UsIG9iamVjdCwgcGF0aCwgc3Rh
dGUpOwotICBhcHBlbmQoaW5kZW50ICsgJ3JldHVybiAnICsgbmFtZSArICc7XG4nLCBzdGF0ZSk7
Ci0gIGFwcGVuZChpbmRlbnQuc3Vic3RyaW5nKDAsIGluZGVudC5sZW5ndGggLSAyKSArICd9KSgp
Jywgc3RhdGUpOwotICByZXR1cm4gZmFsc2UKLX0KLQotdmlzaXRDbGFzc0V4cHJlc3Npb24udGVz
dCA9IGZ1bmN0aW9uKG9iamVjdCwgcGF0aCwgc3RhdGUpIHsKLSAgcmV0dXJuIG9iamVjdC50eXBl
ID09PSBTeW50YXguQ2xhc3NFeHByZXNzaW9uOwotfTsKLQotLyoqCi0gKiBAcHVibGljCi0gKi8K
LWZ1bmN0aW9uIHZpc2l0Q2xhc3NEZWNsYXJhdGlvbih0cmF2ZXJzZSwgb2JqZWN0LCBwYXRoLCBz
dGF0ZSkgewotICBzdGF0ZS5nLmluZGVudEJ5LS07Ci0gIHJlbmRlckNsYXNzQm9keSh0cmF2ZXJz
ZSwgb2JqZWN0LCBwYXRoLCBzdGF0ZSk7Ci0gIHN0YXRlLmcuaW5kZW50QnkrKzsKLSAgcmV0dXJu
IGZhbHNlOwotfQotCi12aXNpdENsYXNzRGVjbGFyYXRpb24udGVzdCA9IGZ1bmN0aW9uKG9iamVj
dCwgcGF0aCwgc3RhdGUpIHsKLSAgcmV0dXJuIG9iamVjdC50eXBlID09PSBTeW50YXguQ2xhc3NE
ZWNsYXJhdGlvbjsKLX07Ci0KLQotLyoqCi0gKiBAcHVibGljCi0gKi8KLWZ1bmN0aW9uIHZpc2l0
U3VwZXJDYWxsKHRyYXZlcnNlLCBvYmplY3QsIHBhdGgsIHN0YXRlKSB7Ci0gIGlmIChwYXRoWzBd
LnR5cGUgPT09IFN5bnRheC5DYWxsRXhwcmVzc2lvbikgewotICAgIGFwcGVuZChzdGF0ZS5zdXBl
clZhciArCi0gICAgICAnLmNhbGwoJyArIGdldFN1cGVyQXJndW1lbnRzKHBhdGhbMF0sIHN0YXRl
KSArICcpJywgc3RhdGUpOwotICAgIG1vdmUocGF0aFswXS5yYW5nZVsxXSwgc3RhdGUpOwotICB9
IGVsc2UgaWYgKHBhdGhbMF0udHlwZSA9PT0gU3ludGF4Lk1lbWJlckV4cHJlc3Npb24pIHsKLSAg
ICBhcHBlbmQoZ2V0TWVtYmVyRnVuY3Rpb25DYWxsKAotICAgICAgc3RhdGUuc3VwZXJWYXIsCi0g
ICAgICBwYXRoWzBdLnByb3BlcnR5Lm5hbWUsCi0gICAgICBnZXRTdXBlckFyZ3VtZW50cyhwYXRo
WzFdLCBzdGF0ZSkpLCBzdGF0ZSk7Ci0gICAgbW92ZShwYXRoWzFdLnJhbmdlWzFdLCBzdGF0ZSk7
Ci0gIH0KLSAgcmV0dXJuIGZhbHNlOwotfQotCi12aXNpdFN1cGVyQ2FsbC50ZXN0ID0gZnVuY3Rp
b24ob2JqZWN0LCBwYXRoLCBzdGF0ZSkgewotICByZXR1cm4gc3RhdGUuc3VwZXJWYXIgJiYgb2Jq
ZWN0LnR5cGUgPT09IFN5bnRheC5JZGVudGlmaWVyICYmCi0gICAgb2JqZWN0Lm5hbWUgPT09ICdz
dXBlcic7Ci19OwotCi0vKioKLSAqIEBwdWJsaWMKLSAqLwotZnVuY3Rpb24gdmlzaXRQcml2YXRl
UHJvcGVydHkodHJhdmVyc2UsIG9iamVjdCwgcGF0aCwgc3RhdGUpIHsKLSAgdmFyIHR5cGUgPSBw
YXRoWzBdID8gcGF0aFswXS50eXBlIDogbnVsbDsKLSAgaWYgKHR5cGUgIT09IFN5bnRheC5Qcm9w
ZXJ0eSkgewotICAgIGlmICh0eXBlID09PSBTeW50YXguTWVtYmVyRXhwcmVzc2lvbikgewotICAg
ICAgdHlwZSA9IHBhdGhbMF0ub2JqZWN0ID8gcGF0aFswXS5vYmplY3QudHlwZSA6IG51bGw7Ci0g
ICAgICBpZiAodHlwZSA9PT0gU3ludGF4LklkZW50aWZpZXIgJiYKLSAgICAgICAgcGF0aFswXS5v
YmplY3QucmFuZ2VbMF0gPT09IG9iamVjdC5yYW5nZVswXSkgewotICAgICAgICAvLyBJZGVudGlm
aWVyIGlzIGEgdmFyaWFibGUgdGhhdCBhcHBlYXJzICJwcml2YXRlIi4KLSAgICAgICAgcmV0dXJu
OwotICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAvLyBPdGhlciBzeW50YXggdGhhdCBhcmUg
bmVpdGhlciBQcm9wZXJ0eSBub3IgTWVtYmVyRXhwcmVzc2lvbi4KLSAgICAgIHJldHVybjsKLSAg
ICB9Ci0gIH0KLQotICB2YXIgb2xkTmFtZSA9IG9iamVjdC5uYW1lOwotICB2YXIgbmV3TmFtZSA9
IGdldE11bmdlZE5hbWUoCi0gICAgc3RhdGUuc2NvcGVOYW1lLAotICAgIG9sZE5hbWUsCi0gICAg
c3RhdGUuZy5vcHRzLm1pbmlmeQotICApOwotICBhcHBlbmQobmV3TmFtZSwgc3RhdGUpOwotICBt
b3ZlKG9iamVjdC5yYW5nZVsxXSwgc3RhdGUpOwotfQotCi12aXNpdFByaXZhdGVQcm9wZXJ0eS50
ZXN0ID0gZnVuY3Rpb24ob2JqZWN0LCBwYXRoLCBzdGF0ZSkgewotICByZXR1cm4gb2JqZWN0LnR5
cGUgPT09IFN5bnRheC5JZGVudGlmaWVyICYmCi0gICAgc2hvdWxkTXVuZ2VOYW1lKHN0YXRlLnNj
b3BlTmFtZSwgb2JqZWN0Lm5hbWUsIHN0YXRlKTsKLX07Ci0KLQotZXhwb3J0cy52aXNpdENsYXNz
RGVjbGFyYXRpb24gPSB2aXNpdENsYXNzRGVjbGFyYXRpb247Ci1leHBvcnRzLnZpc2l0Q2xhc3NF
eHByZXNzaW9uID0gdmlzaXRDbGFzc0V4cHJlc3Npb247Ci1leHBvcnRzLnZpc2l0U3VwZXJDYWxs
ID0gdmlzaXRTdXBlckNhbGw7Ci1leHBvcnRzLnZpc2l0UHJpdmF0ZVByb3BlcnR5ID0gdmlzaXRQ
cml2YXRlUHJvcGVydHk7Ci0KLX0pKCkKLX0seyIuLi9saWIvZG9jYmxvY2siOjE2LCIuLi9saWIv
dXRpbHMiOjE4LCJiYXNlNjIiOjEsImVzcHJpbWEiOjR9XSwyMDpbZnVuY3Rpb24ocmVxdWlyZSxt
b2R1bGUsZXhwb3J0cyl7Ci0oZnVuY3Rpb24oKXsvKioKLSAqIENvcHlyaWdodCAyMDEzIEZhY2Vi
b29rLCBJbmMuCi0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJz
aW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lU
SE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNz
IG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFn
ZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGlj
ZW5zZS4KLSAqLwotLypnbG9iYWwgZXhwb3J0czp0cnVlKi8KLSJ1c2Ugc3RyaWN0IjsKLQotdmFy
IFN5bnRheCA9IHJlcXVpcmUoJ2VzcHJpbWEnKS5TeW50YXg7Ci0KLXZhciBjYXRjaHVwID0gcmVx
dWlyZSgnLi4vbGliL3V0aWxzJykuY2F0Y2h1cDsKLXZhciBhcHBlbmQgPSByZXF1aXJlKCcuLi9s
aWIvdXRpbHMnKS5hcHBlbmQ7Ci12YXIgbW92ZSA9IHJlcXVpcmUoJy4uL2xpYi91dGlscycpLm1v
dmU7Ci12YXIgZ2V0RG9jYmxvY2sgPSByZXF1aXJlKCcuLi9saWIvdXRpbHMnKS5nZXREb2NibG9j
azsKLQotdmFyIEZBTExCQUNLX1RBR1MgPSByZXF1aXJlKCcuL3hqcycpLmtub3duVGFnczsKLXZh
ciByZW5kZXJYSlNFeHByZXNzaW9uQ29udGFpbmVyID0KLSAgcmVxdWlyZSgnLi94anMnKS5yZW5k
ZXJYSlNFeHByZXNzaW9uQ29udGFpbmVyOwotdmFyIHJlbmRlclhKU0xpdGVyYWwgPSByZXF1aXJl
KCcuL3hqcycpLnJlbmRlclhKU0xpdGVyYWw7Ci12YXIgcXVvdGVBdHRyTmFtZSA9IHJlcXVpcmUo
Jy4veGpzJykucXVvdGVBdHRyTmFtZTsKLQotLyoqCi0gKiBDdXN0b21pemVkIGRlc3VnYXIgcHJv
Y2Vzc29yLgotICoKLSAqIEN1cnJlbnRseTogKFNvbWV3aGF0IHRhaWxvcmVkIHRvIFJlYWN0KQot
ICogPFg+IDwvWD4gPT4gWChudWxsLCBudWxsKQotICogPFggcHJvcD0iMSIgLz4gPT4gWCh7cHJv
cDogJzEnfSwgbnVsbCkKLSAqIDxYIHByb3A9IjIiPjxZIC8+PC9YPiA9PiBYKHtwcm9wOicyJ30s
IFkobnVsbCwgbnVsbCkpCi0gKiA8WCBwcm9wPSIyIj48WSAvPjxaIC8+PC9YPiA9PiBYKHtwcm9w
OicyJ30sIFtZKG51bGwsIG51bGwpLCBaKG51bGwsIG51bGwpXSkKLSAqCi0gKiBFeGNlcHRpb25z
IHRvIHRoZSBzaW1wbGUgcnVsZXMgYWJvdmU6Ci0gKiBpZiBhIHByb3BlcnR5IGlzIG5hbWVkICJj
bGFzcyIgaXQgd2lsbCBiZSBjaGFuZ2VkIHRvICJjbGFzc05hbWUiIGluIHRoZQotICogamF2YXNj
cmlwdCBzaW5jZSAiY2xhc3MiIGlzIG5vdCBhIHZhbGlkIG9iamVjdCBrZXkgaW4gamF2YXNjcmlw
dC4KLSAqLwotCi12YXIgSlNYX0FUVFJJQlVURV9SRU5BTUVTID0gewotICAnY2xhc3MnOiAnY2xh
c3NOYW1lJywKLSAgY3hOYW1lOiAnY2xhc3NOYW1lJwotfTsKLQotdmFyIEpTWF9BVFRSSUJVVEVf
VFJBTlNGT1JNUyA9IHsKLSAgY3hOYW1lOiBmdW5jdGlvbihhdHRyKSB7Ci0gICAgaWYgKGF0dHIu
dmFsdWUudHlwZSAhPT0gU3ludGF4LkxpdGVyYWwpIHsKLSAgICAgIHRocm93IG5ldyBFcnJvcigi
Y3ggb25seSBhY2NlcHRzIGEgc3RyaW5nIGxpdGVyYWwiKTsKLSAgICB9IGVsc2UgewotICAgICAg
dmFyIGNsYXNzTmFtZXMgPSBhdHRyLnZhbHVlLnZhbHVlLnNwbGl0KC9ccysvZyk7Ci0gICAgICBy
ZXR1cm4gJ2N4KCcgKyBjbGFzc05hbWVzLm1hcChKU09OLnN0cmluZ2lmeSkuam9pbignLCcpICsg
JyknOwotICAgIH0KLSAgfQotfTsKLQotZnVuY3Rpb24gdmlzaXRSZWFjdFRhZyh0cmF2ZXJzZSwg
b2JqZWN0LCBwYXRoLCBzdGF0ZSkgewotICB2YXIganN4T2JqSWRlbnQgPSBnZXREb2NibG9jayhz
dGF0ZSkuanN4OwotCi0gIGNhdGNodXAob2JqZWN0Lm9wZW5pbmdFbGVtZW50LnJhbmdlWzBdLCBz
dGF0ZSk7Ci0KLSAgaWYgKG9iamVjdC5uYW1lLm5hbWVzcGFjZSkgewotICAgIHRocm93IG5ldyBF
cnJvcigKLSAgICAgICAnTmFtZXNwYWNlIHRhZ3MgYXJlIG5vdCBzdXBwb3J0ZWQuIFJlYWN0SlNY
IGlzIG5vdCBYTUwuJyk7Ci0gIH0KLQotICB2YXIgaXNGYWxsYmFja1RhZyA9IEZBTExCQUNLX1RB
R1Nbb2JqZWN0Lm5hbWUubmFtZV07Ci0gIGFwcGVuZCgKLSAgICAoaXNGYWxsYmFja1RhZyA/IGpz
eE9iaklkZW50ICsgJy4nIDogJycpICsgKG9iamVjdC5uYW1lLm5hbWUpICsgJygnLAotICAgIHN0
YXRlCi0gICk7Ci0KLSAgbW92ZShvYmplY3QubmFtZS5yYW5nZVsxXSwgc3RhdGUpOwotCi0gIHZh
ciBjaGlsZHJlblRvUmVuZGVyID0gb2JqZWN0LmNoaWxkcmVuLmZpbHRlcihmdW5jdGlvbihjaGls
ZCkgewotICAgIHJldHVybiAhKGNoaWxkLnR5cGUgPT09IFN5bnRheC5MaXRlcmFsICYmICFjaGls
ZC52YWx1ZS5tYXRjaCgvXFMvKSk7Ci0gIH0pOwotCi0gIC8vIGlmIHdlIGRvbid0IGhhdmUgYW55
IGF0dHJpYnV0ZXMsIHBhc3MgaW4gbnVsbAotICBpZiAob2JqZWN0LmF0dHJpYnV0ZXMubGVuZ3Ro
ID09PSAwKSB7Ci0gICAgYXBwZW5kKCdudWxsJywgc3RhdGUpOwotICB9Ci0KLSAgLy8gd3JpdGUg
YXR0cmlidXRlcwotICBvYmplY3QuYXR0cmlidXRlcy5mb3JFYWNoKGZ1bmN0aW9uKGF0dHIsIGlu
ZGV4KSB7Ci0gICAgY2F0Y2h1cChhdHRyLnJhbmdlWzBdLCBzdGF0ZSk7Ci0gICAgaWYgKGF0dHIu
bmFtZS5uYW1lc3BhY2UpIHsKLSAgICAgIHRocm93IG5ldyBFcnJvcigKLSAgICAgICAgICdOYW1l
c3BhY2UgYXR0cmlidXRlcyBhcmUgbm90IHN1cHBvcnRlZC4gUmVhY3RKU1ggaXMgbm90IFhNTC4n
KTsKLSAgICB9Ci0gICAgdmFyIG5hbWUgPSBKU1hfQVRUUklCVVRFX1JFTkFNRVNbYXR0ci5uYW1l
Lm5hbWVdIHx8IGF0dHIubmFtZS5uYW1lOwotICAgIHZhciBpc0ZpcnN0ID0gaW5kZXggPT09IDA7
Ci0gICAgdmFyIGlzTGFzdCA9IGluZGV4ID09PSBvYmplY3QuYXR0cmlidXRlcy5sZW5ndGggLSAx
OwotCi0gICAgaWYgKGlzRmlyc3QpIHsKLSAgICAgIGFwcGVuZCgneycsIHN0YXRlKTsKLSAgICB9
Ci0KLSAgICBhcHBlbmQocXVvdGVBdHRyTmFtZShuYW1lKSwgc3RhdGUpOwotICAgIGFwcGVuZCgn
OicsIHN0YXRlKTsKLQotICAgIGlmICghYXR0ci52YWx1ZSkgewotICAgICAgc3RhdGUuZy5idWZm
ZXIgKz0gJ3RydWUnOwotICAgICAgc3RhdGUuZy5wb3NpdGlvbiA9IGF0dHIubmFtZS5yYW5nZVsx
XTsKLSAgICAgIGlmICghaXNMYXN0KSB7Ci0gICAgICAgIGFwcGVuZCgnLCcsIHN0YXRlKTsKLSAg
ICAgIH0KLSAgICB9IGVsc2UgaWYgKEpTWF9BVFRSSUJVVEVfVFJBTlNGT1JNU1thdHRyLm5hbWUu
bmFtZV0pIHsKLSAgICAgIG1vdmUoYXR0ci52YWx1ZS5yYW5nZVswXSwgc3RhdGUpOwotICAgICAg
YXBwZW5kKEpTWF9BVFRSSUJVVEVfVFJBTlNGT1JNU1thdHRyLm5hbWUubmFtZV0oYXR0ciksIHN0
YXRlKTsKLSAgICAgIG1vdmUoYXR0ci52YWx1ZS5yYW5nZVsxXSwgc3RhdGUpOwotICAgICAgaWYg
KCFpc0xhc3QpIHsKLSAgICAgICAgYXBwZW5kKCcsJywgc3RhdGUpOwotICAgICAgfQotICAgIH0g
ZWxzZSBpZiAoYXR0ci52YWx1ZS50eXBlID09PSBTeW50YXguTGl0ZXJhbCkgewotICAgICAgbW92
ZShhdHRyLnZhbHVlLnJhbmdlWzBdLCBzdGF0ZSk7Ci0gICAgICByZW5kZXJYSlNMaXRlcmFsKGF0
dHIudmFsdWUsIGlzTGFzdCwgc3RhdGUpOwotICAgIH0gZWxzZSB7Ci0gICAgICBtb3ZlKGF0dHIu
dmFsdWUucmFuZ2VbMF0sIHN0YXRlKTsKLSAgICAgIHJlbmRlclhKU0V4cHJlc3Npb25Db250YWlu
ZXIodHJhdmVyc2UsIGF0dHIudmFsdWUsIGlzTGFzdCwgcGF0aCwgc3RhdGUpOwotICAgIH0KLQot
ICAgIGlmIChpc0xhc3QpIHsKLSAgICAgIGFwcGVuZCgnfScsIHN0YXRlKTsKLSAgICB9Ci0KLSAg
ICBjYXRjaHVwKGF0dHIucmFuZ2VbMV0sIHN0YXRlKTsKLSAgfSk7Ci0KLSAgaWYgKCFvYmplY3Qu
c2VsZkNsb3NpbmcpIHsKLSAgICBjYXRjaHVwKG9iamVjdC5vcGVuaW5nRWxlbWVudC5yYW5nZVsx
XSAtIDEsIHN0YXRlKTsKLSAgICBtb3ZlKG9iamVjdC5vcGVuaW5nRWxlbWVudC5yYW5nZVsxXSwg
c3RhdGUpOwotICB9Ci0KLSAgLy8gZmlsdGVyIG91dCB3aGl0ZXNwYWNlCi0gIGlmIChjaGlsZHJl
blRvUmVuZGVyLmxlbmd0aCA+IDApIHsKLSAgICBhcHBlbmQoJywgJywgc3RhdGUpOwotCi0gICAg
b2JqZWN0LmNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24oY2hpbGQpIHsKLSAgICAgIGlmIChjaGls
ZC50eXBlID09PSBTeW50YXguTGl0ZXJhbCAmJiAhY2hpbGQudmFsdWUubWF0Y2goL1xTLykpIHsK
LSAgICAgICAgcmV0dXJuOwotICAgICAgfQotICAgICAgY2F0Y2h1cChjaGlsZC5yYW5nZVswXSwg
c3RhdGUpOwotCi0gICAgICB2YXIgaXNMYXN0ID0gY2hpbGQgPT09IGNoaWxkcmVuVG9SZW5kZXJb
Y2hpbGRyZW5Ub1JlbmRlci5sZW5ndGggLSAxXTsKLQotICAgICAgaWYgKGNoaWxkLnR5cGUgPT09
IFN5bnRheC5MaXRlcmFsKSB7Ci0gICAgICAgIHJlbmRlclhKU0xpdGVyYWwoY2hpbGQsIGlzTGFz
dCwgc3RhdGUpOwotICAgICAgfSBlbHNlIGlmIChjaGlsZC50eXBlID09PSBTeW50YXguWEpTRXhw
cmVzc2lvbkNvbnRhaW5lcikgewotICAgICAgICByZW5kZXJYSlNFeHByZXNzaW9uQ29udGFpbmVy
KHRyYXZlcnNlLCBjaGlsZCwgaXNMYXN0LCBwYXRoLCBzdGF0ZSk7Ci0gICAgICB9IGVsc2Ugewot
ICAgICAgICB0cmF2ZXJzZShjaGlsZCwgcGF0aCwgc3RhdGUpOwotICAgICAgICBpZiAoIWlzTGFz
dCkgewotICAgICAgICAgIGFwcGVuZCgnLCcsIHN0YXRlKTsKLSAgICAgICAgICBzdGF0ZS5nLmJ1
ZmZlciA9IHN0YXRlLmcuYnVmZmVyLnJlcGxhY2UoLyhccyopLCQvLCAnLCQxJyk7Ci0gICAgICAg
IH0KLSAgICAgIH0KLQotICAgICAgY2F0Y2h1cChjaGlsZC5yYW5nZVsxXSwgc3RhdGUpOwotICAg
IH0pOwotICB9Ci0KLSAgaWYgKG9iamVjdC5zZWxmQ2xvc2luZykgewotICAgIC8vIGV2ZXJ5dGhp
bmcgdXAgdG8gLz4KLSAgICBjYXRjaHVwKG9iamVjdC5vcGVuaW5nRWxlbWVudC5yYW5nZVsxXSAt
IDIsIHN0YXRlKTsKLSAgICBtb3ZlKG9iamVjdC5vcGVuaW5nRWxlbWVudC5yYW5nZVsxXSwgc3Rh
dGUpOwotICB9IGVsc2UgewotICAgIC8vIGV2ZXJ5dGhpbmcgdXAgdG8gPC8gc2RmbGtzamZkPgot
ICAgIGNhdGNodXAob2JqZWN0LmNsb3NpbmdFbGVtZW50LnJhbmdlWzBdLCBzdGF0ZSk7Ci0gICAg
bW92ZShvYmplY3QuY2xvc2luZ0VsZW1lbnQucmFuZ2VbMV0sIHN0YXRlKTsKLSAgfQotCi0gIGFw
cGVuZCgnKScsIHN0YXRlKTsKLSAgcmV0dXJuIGZhbHNlOwotfQotCi12aXNpdFJlYWN0VGFnLnRl
c3QgPSBmdW5jdGlvbihvYmplY3QsIHBhdGgsIHN0YXRlKSB7Ci0gIC8vIG9ubHkgcnVuIHJlYWN0
IHdoZW4gcmVhY3QgQGpzeCBuYW1lc3BhY2UgaXMgc3BlY2lmaWVkIGluIGRvY2Jsb2NrCi0gIHZh
ciBqc3ggPSBnZXREb2NibG9jayhzdGF0ZSkuanN4OwotICByZXR1cm4gb2JqZWN0LnR5cGUgPT09
IFN5bnRheC5YSlNFbGVtZW50ICYmIGpzeCAmJiBqc3gubGVuZ3RoOwotfTsKLQotZXhwb3J0cy52
aXNpdFJlYWN0VGFnID0gdmlzaXRSZWFjdFRhZzsKLQotfSkoKQotfSx7Ii4uL2xpYi91dGlscyI6
MTgsIi4veGpzIjoyMiwiZXNwcmltYSI6NH1dLDIxOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxl
eHBvcnRzKXsKLShmdW5jdGlvbigpey8qKgotICogQ29weXJpZ2h0IDIwMTMgRmFjZWJvb2ssIElu
Yy4KLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4w
ICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBv
ZiB0aGUgTGljZW5zZSBhdAotICoKLSAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBh
Z3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBM
aWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdB
UlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1w
bGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVy
bmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgot
ICovCi0vKmdsb2JhbCBleHBvcnRzOnRydWUqLwotInVzZSBzdHJpY3QiOwotCi12YXIgU3ludGF4
ID0gcmVxdWlyZSgnZXNwcmltYScpLlN5bnRheDsKLXZhciBjYXRjaHVwID0gcmVxdWlyZSgnLi4v
bGliL3V0aWxzJykuY2F0Y2h1cDsKLXZhciBhcHBlbmQgPSByZXF1aXJlKCcuLi9saWIvdXRpbHMn
KS5hcHBlbmQ7Ci12YXIgZ2V0RG9jYmxvY2sgPSByZXF1aXJlKCcuLi9saWIvdXRpbHMnKS5nZXRE
b2NibG9jazsKLQotLyoqCi0gKiBUcmFuc2Zvcm1zIHRoZSBmb2xsb3dpbmc6Ci0gKgotICogdmFy
IE15Q29tcG9uZW50ID0gUmVhY3QuY3JlYXRlQ2xhc3MoewotICogICAgcmVuZGVyOiAuLi4KLSAq
IH0pOwotICoKLSAqIGludG86Ci0gKgotICogdmFyIE15Q29tcG9uZW50ID0gUmVhY3QuY3JlYXRl
Q2xhc3MoewotICogICAgZGlzcGxheU5hbWU6ICdNeUNvbXBvbmVudCcsCi0gKiAgICByZW5kZXI6
IC4uLgotICogfSk7Ci0gKi8KLWZ1bmN0aW9uIHZpc2l0UmVhY3REaXNwbGF5TmFtZSh0cmF2ZXJz
ZSwgb2JqZWN0LCBwYXRoLCBzdGF0ZSkgewotICBpZiAob2JqZWN0LmlkLnR5cGUgPT09IFN5bnRh
eC5JZGVudGlmaWVyICYmCi0gICAgICBvYmplY3QuaW5pdCAmJgotICAgICAgb2JqZWN0LmluaXQu
dHlwZSA9PT0gU3ludGF4LkNhbGxFeHByZXNzaW9uICYmCi0gICAgICBvYmplY3QuaW5pdC5jYWxs
ZWUudHlwZSA9PT0gU3ludGF4Lk1lbWJlckV4cHJlc3Npb24gJiYKLSAgICAgIG9iamVjdC5pbml0
LmNhbGxlZS5vYmplY3QudHlwZSA9PT0gU3ludGF4LklkZW50aWZpZXIgJiYKLSAgICAgIG9iamVj
dC5pbml0LmNhbGxlZS5vYmplY3QubmFtZSA9PT0gJ1JlYWN0JyAmJgotICAgICAgb2JqZWN0Lmlu
aXQuY2FsbGVlLnByb3BlcnR5LnR5cGUgPT09IFN5bnRheC5JZGVudGlmaWVyICYmCi0gICAgICBv
YmplY3QuaW5pdC5jYWxsZWUucHJvcGVydHkubmFtZSA9PT0gJ2NyZWF0ZUNsYXNzJyAmJgotICAg
ICAgb2JqZWN0LmluaXRbJ2FyZ3VtZW50cyddLmxlbmd0aCA9PT0gMSAmJgotICAgICAgb2JqZWN0
LmluaXRbJ2FyZ3VtZW50cyddWzBdLnR5cGUgPT09IFN5bnRheC5PYmplY3RFeHByZXNzaW9uKSB7
Ci0KLSAgICB2YXIgZGlzcGxheU5hbWUgPSBvYmplY3QuaWQubmFtZTsKLSAgICBjYXRjaHVwKG9i
amVjdC5pbml0Wydhcmd1bWVudHMnXVswXS5yYW5nZVswXSArIDEsIHN0YXRlKTsKLSAgICBhcHBl
bmQoImRpc3BsYXlOYW1lOiAnIiArIGRpc3BsYXlOYW1lICsgIicsIiwgc3RhdGUpOwotICB9Ci19
Ci0KLS8qKgotICogV2lsbCBvbmx5IHJ1biBvbiBAanN4IGZpbGVzIGZvciBub3cuCi0gKi8KLXZp
c2l0UmVhY3REaXNwbGF5TmFtZS50ZXN0ID0gZnVuY3Rpb24ob2JqZWN0LCBwYXRoLCBzdGF0ZSkg
ewotICByZXR1cm4gb2JqZWN0LnR5cGUgPT09IFN5bnRheC5WYXJpYWJsZURlY2xhcmF0b3IgJiYg
ISFnZXREb2NibG9jayhzdGF0ZSkuanN4OwotfTsKLQotZXhwb3J0cy52aXNpdFJlYWN0RGlzcGxh
eU5hbWUgPSB2aXNpdFJlYWN0RGlzcGxheU5hbWU7Ci0KLX0pKCkKLX0seyIuLi9saWIvdXRpbHMi
OjE4LCJlc3ByaW1hIjo0fV0sMjI6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewot
KGZ1bmN0aW9uKCl7LyoqCi0gKiBDb3B5cmlnaHQgMjAxMyBGYWNlYm9vaywgSW5jLgotICoKLSAq
IExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGlj
ZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5j
ZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNl
bnNlIGF0Ci0gKgotICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
Ci0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBp
biB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBP
UiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICog
U2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1p
c3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLS8qZ2xv
YmFsIGV4cG9ydHM6dHJ1ZSovCi0idXNlIHN0cmljdCI7Ci12YXIgYXBwZW5kID0gcmVxdWlyZSgn
Li4vbGliL3V0aWxzJykuYXBwZW5kOwotdmFyIGNhdGNodXAgPSByZXF1aXJlKCcuLi9saWIvdXRp
bHMnKS5jYXRjaHVwOwotdmFyIG1vdmUgPSByZXF1aXJlKCcuLi9saWIvdXRpbHMnKS5tb3ZlOwot
dmFyIFN5bnRheCA9IHJlcXVpcmUoJ2VzcHJpbWEnKS5TeW50YXg7Ci0KLXZhciBrbm93blRhZ3Mg
PSB7Ci0gIGE6IHRydWUsCi0gIGFiYnI6IHRydWUsCi0gIGFkZHJlc3M6IHRydWUsCi0gIGFwcGxl
dDogdHJ1ZSwKLSAgYXJlYTogdHJ1ZSwKLSAgYXJ0aWNsZTogdHJ1ZSwKLSAgYXNpZGU6IHRydWUs
Ci0gIGF1ZGlvOiB0cnVlLAotICBiOiB0cnVlLAotICBiYXNlOiB0cnVlLAotICBiZGk6IHRydWUs
Ci0gIGJkbzogdHJ1ZSwKLSAgYmlnOiB0cnVlLAotICBibG9ja3F1b3RlOiB0cnVlLAotICBib2R5
OiB0cnVlLAotICBicjogdHJ1ZSwKLSAgYnV0dG9uOiB0cnVlLAotICBjYW52YXM6IHRydWUsCi0g
IGNhcHRpb246IHRydWUsCi0gIGNpcmNsZTogdHJ1ZSwKLSAgY2l0ZTogdHJ1ZSwKLSAgY29kZTog
dHJ1ZSwKLSAgY29sOiB0cnVlLAotICBjb2xncm91cDogdHJ1ZSwKLSAgY29tbWFuZDogdHJ1ZSwK
LSAgZGF0YTogdHJ1ZSwKLSAgZGF0YWxpc3Q6IHRydWUsCi0gIGRkOiB0cnVlLAotICBkZWw6IHRy
dWUsCi0gIGRldGFpbHM6IHRydWUsCi0gIGRmbjogdHJ1ZSwKLSAgZGlhbG9nOiB0cnVlLAotICBk
aXY6IHRydWUsCi0gIGRsOiB0cnVlLAotICBkdDogdHJ1ZSwKLSAgZWxsaXBzZTogdHJ1ZSwKLSAg
ZW06IHRydWUsCi0gIGVtYmVkOiB0cnVlLAotICBmaWVsZHNldDogdHJ1ZSwKLSAgZmlnY2FwdGlv
bjogdHJ1ZSwKLSAgZmlndXJlOiB0cnVlLAotICBmb290ZXI6IHRydWUsCi0gIGZvcm06IHRydWUs
Ci0gIGc6IHRydWUsCi0gIGgxOiB0cnVlLAotICBoMjogdHJ1ZSwKLSAgaDM6IHRydWUsCi0gIGg0
OiB0cnVlLAotICBoNTogdHJ1ZSwKLSAgaDY6IHRydWUsCi0gIGhlYWQ6IHRydWUsCi0gIGhlYWRl
cjogdHJ1ZSwKLSAgaGdyb3VwOiB0cnVlLAotICBocjogdHJ1ZSwKLSAgaHRtbDogdHJ1ZSwKLSAg
aTogdHJ1ZSwKLSAgaWZyYW1lOiB0cnVlLAotICBpbWc6IHRydWUsCi0gIGlucHV0OiB0cnVlLAot
ICBpbnM6IHRydWUsCi0gIGtiZDogdHJ1ZSwKLSAga2V5Z2VuOiB0cnVlLAotICBsYWJlbDogdHJ1
ZSwKLSAgbGVnZW5kOiB0cnVlLAotICBsaTogdHJ1ZSwKLSAgbGluZTogdHJ1ZSwKLSAgbGluazog
dHJ1ZSwKLSAgbWFpbjogdHJ1ZSwKLSAgbWFwOiB0cnVlLAotICBtYXJrOiB0cnVlLAotICBtYXJx
dWVlOiB0cnVlLAotICBtZW51OiB0cnVlLAotICBtZW51aXRlbTogdHJ1ZSwKLSAgbWV0YTogdHJ1
ZSwKLSAgbWV0ZXI6IHRydWUsCi0gIG5hdjogdHJ1ZSwKLSAgbm9zY3JpcHQ6IHRydWUsCi0gIG9i
amVjdDogdHJ1ZSwKLSAgb2w6IHRydWUsCi0gIG9wdGdyb3VwOiB0cnVlLAotICBvcHRpb246IHRy
dWUsCi0gIG91dHB1dDogdHJ1ZSwKLSAgcDogdHJ1ZSwKLSAgcGFyYW06IHRydWUsCi0gIHBhdGg6
IHRydWUsCi0gIHBvbHlsaW5lOiB0cnVlLAotICBwcmU6IHRydWUsCi0gIHByb2dyZXNzOiB0cnVl
LAotICBxOiB0cnVlLAotICByZWN0OiB0cnVlLAotICBycDogdHJ1ZSwKLSAgcnQ6IHRydWUsCi0g
IHJ1Ynk6IHRydWUsCi0gIHM6IHRydWUsCi0gIHNhbXA6IHRydWUsCi0gIHNjcmlwdDogdHJ1ZSwK
LSAgc2VjdGlvbjogdHJ1ZSwKLSAgc2VsZWN0OiB0cnVlLAotICBzbWFsbDogdHJ1ZSwKLSAgc291
cmNlOiB0cnVlLAotICBzcGFuOiB0cnVlLAotICBzdHJvbmc6IHRydWUsCi0gIHN0eWxlOiB0cnVl
LAotICBzdWI6IHRydWUsCi0gIHN1bW1hcnk6IHRydWUsCi0gIHN1cDogdHJ1ZSwKLSAgc3ZnOiB0
cnVlLAotICB0YWJsZTogdHJ1ZSwKLSAgdGJvZHk6IHRydWUsCi0gIHRkOiB0cnVlLAotICB0ZXh0
OiB0cnVlLAotICB0ZXh0YXJlYTogdHJ1ZSwKLSAgdGZvb3Q6IHRydWUsCi0gIHRoOiB0cnVlLAot
ICB0aGVhZDogdHJ1ZSwKLSAgdGltZTogdHJ1ZSwKLSAgdGl0bGU6IHRydWUsCi0gIHRyOiB0cnVl
LAotICB0cmFjazogdHJ1ZSwKLSAgdTogdHJ1ZSwKLSAgdWw6IHRydWUsCi0gICd2YXInOiB0cnVl
LAotICB2aWRlbzogdHJ1ZSwKLSAgd2JyOiB0cnVlCi19OwotCi1mdW5jdGlvbiBzYWZlVHJpbShz
dHJpbmcpIHsKLSAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9eWyBcdF0rLywgJycpLnJlcGxhY2Uo
L1sgXHRdKyQvLCAnJyk7Ci19Ci0KLS8vIFJlcGxhY2UgYWxsIHRyYWlsaW5nIHdoaXRlc3BhY2Ug
Y2hhcmFjdGVycyB3aXRoIGEgc2luZ2xlIHNwYWNlIGNoYXJhY3RlcgotZnVuY3Rpb24gdHJpbVdp
dGhTaW5nbGVTcGFjZShzdHJpbmcpIHsKLSAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9eWyBcdFx4
QTBdezIsfS8sICcgJykuCi0gICAgcmVwbGFjZSgvWyBcdFx4QTBdezIsfSQvLCAnICcpLnJlcGxh
Y2UoL15ccyskLywgJycpOwotfQotCi0vKioKLSAqIFNwZWNpYWwgaGFuZGxpbmcgZm9yIG11bHRp
bGluZSBzdHJpbmcgbGl0ZXJhbHMKLSAqIHByaW50IGxpbmVzOgotICoKLSAqICAgbGluZQotICog
ICBsaW5lCi0gKgotICogYXM6Ci0gKgotICogICAibGluZSAiKwotICogICAibGluZSIKLSAqLwot
ZnVuY3Rpb24gcmVuZGVyWEpTTGl0ZXJhbChvYmplY3QsIGlzTGFzdCwgc3RhdGUsIHN0YXJ0LCBl
bmQpIHsKLSAgLyoqIEFkZGVkIGJsYW5rIGNoZWNrIGZpbHRlcmluZyBhbmQgdHJpbWluZyovCi0g
IHZhciB0cmltbWVkQ2hpbGRWYWx1ZSA9IHNhZmVUcmltKG9iamVjdC52YWx1ZSk7Ci0KLSAgaWYg
KHRyaW1tZWRDaGlsZFZhbHVlKSB7Ci0gICAgLy8gaGVhZCB3aGl0ZXNwYWNlCi0gICAgYXBwZW5k
KG9iamVjdC52YWx1ZS5tYXRjaCgvXltcdCBdKi8pWzBdLCBzdGF0ZSk7Ci0gICAgaWYgKHN0YXJ0
KSB7Ci0gICAgICBhcHBlbmQoc3RhcnQsIHN0YXRlKTsKLSAgICB9Ci0KLSAgICB2YXIgdHJpbW1l
ZENoaWxkVmFsdWVXaXRoU3BhY2UgPSB0cmltV2l0aFNpbmdsZVNwYWNlKG9iamVjdC52YWx1ZSk7
Ci0KLSAgICAvKioKLSAgICAgKi8KLSAgICB2YXIgaW5pdGlhbExpbmVzID0gdHJpbW1lZENoaWxk
VmFsdWUuc3BsaXQoL1xyXG58XG58XHIvKTsKLQotICAgIHZhciBsaW5lcyA9IGluaXRpYWxMaW5l
cy5maWx0ZXIoZnVuY3Rpb24obGluZSkgewotICAgICAgcmV0dXJuIHNhZmVUcmltKGxpbmUpLmxl
bmd0aCA+IDA7Ci0gICAgfSk7Ci0KLSAgICB2YXIgaGFzSW5pdGlhbE5ld0xpbmUgPSBpbml0aWFs
TGluZXNbMF0gIT09IGxpbmVzWzBdOwotICAgIHZhciBoYXNGaW5hbE5ld0xpbmUgPQotICAgICAg
aW5pdGlhbExpbmVzW2luaXRpYWxMaW5lcy5sZW5ndGggLSAxXSAhPT0gbGluZXNbbGluZXMubGVu
Z3RoIC0gMV07Ci0KLSAgICB2YXIgbnVtTGluZXMgPSBsaW5lcy5sZW5ndGg7Ci0gICAgbGluZXMu
Zm9yRWFjaChmdW5jdGlvbiAobGluZSwgaWkpIHsKLSAgICAgIHZhciBsYXN0TGluZSA9IGlpID09
PSBudW1MaW5lcyAtIDE7Ci0gICAgICB2YXIgdHJpbW1lZExpbmUgPSBzYWZlVHJpbShsaW5lKTsK
LSAgICAgIGlmICh0cmltbWVkTGluZSA9PT0gJycgJiYgIWxhc3RMaW5lKSB7Ci0gICAgICAgIGFw
cGVuZChsaW5lLCBzdGF0ZSk7Ci0gICAgICB9IGVsc2UgewotICAgICAgICB2YXIgcHJlU3RyaW5n
ID0gJyc7Ci0gICAgICAgIHZhciBwb3N0U3RyaW5nID0gJyc7Ci0gICAgICAgIHZhciBsZWFkaW5n
ID0gJyc7Ci0KLSAgICAgICAgaWYgKGlpID09PSAwKSB7Ci0gICAgICAgICAgaWYgKGhhc0luaXRp
YWxOZXdMaW5lKSB7Ci0gICAgICAgICAgICBwcmVTdHJpbmcgPSAnICc7Ci0gICAgICAgICAgICBs
ZWFkaW5nID0gJ1xuJzsKLSAgICAgICAgICB9Ci0gICAgICAgICAgaWYgKHRyaW1tZWRDaGlsZFZh
bHVlV2l0aFNwYWNlLnN1YnN0cmluZygwLCAxKSA9PT0gJyAnKSB7Ci0gICAgICAgICAgICAvLyBJ
ZiB0aGlzIGlzIHRoZSBmaXJzdCBsaW5lLCBhbmQgdGhlIG9yaWdpbmFsIGNvbnRlbnQgc3RhcnRz
IHdpdGgKLSAgICAgICAgICAgIC8vIHdoaXRlc3BhY2UsIHBsYWNlIGEgc2luZ2xlIHNwYWNlIGF0
IHRoZSBiZWdpbm5pbmcuCi0gICAgICAgICAgICBwcmVTdHJpbmcgPSAnICc7Ci0gICAgICAgICAg
fQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIGxlYWRpbmcgPSBsaW5lLm1hdGNoKC9eWyBc
dF0qLylbMF07Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFsYXN0TGluZSB8fCB0cmltbWVkQ2hp
bGRWYWx1ZVdpdGhTcGFjZS5zdWJzdHIoCi0gICAgICAgICAgICAgdHJpbW1lZENoaWxkVmFsdWVX
aXRoU3BhY2UubGVuZ3RoIC0gMSwgMSkgPT09ICcgJyB8fAotICAgICAgICAgICAgIGhhc0ZpbmFs
TmV3TGluZQotICAgICAgICAgICAgICkgewotICAgICAgICAgIC8vIElmIGVpdGhlciBub3Qgb24g
dGhlIGxhc3QgbGluZSwgb3IgdGhlIG9yaWdpbmFsIGNvbnRlbnQgZW5kcyB3aXRoCi0gICAgICAg
ICAgLy8gd2hpdGVzcGFjZSwgcGxhY2UgYSBzaW5nbGUgY2hhcmFjdGVyIGF0IHRoZSBlbmQuCi0g
ICAgICAgICAgcG9zdFN0cmluZyA9ICcgJzsKLSAgICAgICAgfQotCi0gICAgICAgIGFwcGVuZCgK
LSAgICAgICAgICBsZWFkaW5nICsKLSAgICAgICAgICBKU09OLnN0cmluZ2lmeSgKLSAgICAgICAg
ICAgIHByZVN0cmluZyArIHRyaW1tZWRMaW5lICsgcG9zdFN0cmluZwotICAgICAgICAgICkgKwot
ICAgICAgICAgIChsYXN0TGluZSA/ICcnIDogJysnKSArCi0gICAgICAgICAgbGluZS5tYXRjaCgv
WyBcdF0qJC8pWzBdLAotICAgICAgICAgIHN0YXRlKTsKLSAgICAgIH0KLSAgICAgIGlmICghbGFz
dExpbmUpIHsKLSAgICAgICAgYXBwZW5kKCdcbicsIHN0YXRlKTsKLSAgICAgIH0KLSAgICB9KTsK
LSAgfSBlbHNlIHsKLSAgICBpZiAoc3RhcnQpIHsKLSAgICAgIGFwcGVuZChzdGFydCwgc3RhdGUp
OwotICAgIH0KLSAgICBhcHBlbmQoJyIiJywgc3RhdGUpOwotICB9Ci0gIGlmIChlbmQpIHsKLSAg
ICBhcHBlbmQoZW5kLCBzdGF0ZSk7Ci0gIH0KLQotICAvLyBhZGQgY29tbWEgYmVmb3JlIHRyYWls
aW5nIHdoaXRlc3BhY2UKLSAgaWYgKCFpc0xhc3QpIHsKLSAgICBhcHBlbmQoJywnLCBzdGF0ZSk7
Ci0gIH0KLQotICAvLyB0YWlsIHdoaXRlc3BhY2UKLSAgYXBwZW5kKG9iamVjdC52YWx1ZS5tYXRj
aCgvWyBcdF0qJC8pWzBdLCBzdGF0ZSk7Ci0gIG1vdmUob2JqZWN0LnJhbmdlWzFdLCBzdGF0ZSk7
Ci19Ci0KLWZ1bmN0aW9uIHJlbmRlclhKU0V4cHJlc3Npb25Db250YWluZXIodHJhdmVyc2UsIG9i
amVjdCwgaXNMYXN0LCBwYXRoLCBzdGF0ZSkgewotICAvLyBQbHVzIDEgdG8gc2tpcCBge2AuCi0g
IG1vdmUob2JqZWN0LnJhbmdlWzBdICsgMSwgc3RhdGUpOwotICB0cmF2ZXJzZShvYmplY3QuZXhw
cmVzc2lvbiwgcGF0aCwgc3RhdGUpOwotICBpZiAoIWlzTGFzdCAmJiBvYmplY3QuZXhwcmVzc2lv
bi50eXBlICE9PSBTeW50YXguWEpTRW1wdHlFeHByZXNzaW9uKSB7Ci0gICAgLy8gSWYgd2UgbmVl
ZCB0byBhcHBlbmQgYSBjb21tYSwgbWFrZSBzdXJlIHRvIGRvIHNvIGFmdGVyIHRoZSBleHByZXNz
aW9uLgotICAgIGNhdGNodXAob2JqZWN0LmV4cHJlc3Npb24ucmFuZ2VbMV0sIHN0YXRlKTsKLSAg
ICBhcHBlbmQoJywnLCBzdGF0ZSk7Ci0gIH0KLQotICAvLyBNaW51cyAxIHRvIHNraXAgYH1gLgot
ICBjYXRjaHVwKG9iamVjdC5yYW5nZVsxXSAtIDEsIHN0YXRlKTsKLSAgbW92ZShvYmplY3QucmFu
Z2VbMV0sIHN0YXRlKTsKLSAgcmV0dXJuIGZhbHNlOwotfQotCi1mdW5jdGlvbiBxdW90ZUF0dHJO
YW1lKGF0dHIpIHsKLSAgLy8gUXVvdGUgaW52YWxpZCBKUyBpZGVudGlmaWVycy4KLSAgaWYgKCEv
XlthLXpfJF1bYS16XGRfJF0qJC9pLnRlc3QoYXR0cikpIHsKLSAgICByZXR1cm4gIiciICsgYXR0
ciArICInIjsKLSAgfQotICByZXR1cm4gYXR0cjsKLX0KLQotZXhwb3J0cy5rbm93blRhZ3MgPSBr
bm93blRhZ3M7Ci1leHBvcnRzLnJlbmRlclhKU0V4cHJlc3Npb25Db250YWluZXIgPSByZW5kZXJY
SlNFeHByZXNzaW9uQ29udGFpbmVyOwotZXhwb3J0cy5yZW5kZXJYSlNMaXRlcmFsID0gcmVuZGVy
WEpTTGl0ZXJhbDsKLWV4cG9ydHMucXVvdGVBdHRyTmFtZSA9IHF1b3RlQXR0ck5hbWU7Ci0KLX0p
KCkKLX0seyIuLi9saWIvdXRpbHMiOjE4LCJlc3ByaW1hIjo0fV0sMjM6W2Z1bmN0aW9uKHJlcXVp
cmUsbW9kdWxlLGV4cG9ydHMpewotKGZ1bmN0aW9uKCl7LypnbG9iYWwgZXhwb3J0czp0cnVlKi8K
LXZhciBjbGFzc2VzID0gcmVxdWlyZSgnLi90cmFuc2Zvcm1zL2NsYXNzZXMnKTsKLXZhciByZWFj
dCA9IHJlcXVpcmUoJy4vdHJhbnNmb3Jtcy9yZWFjdCcpOwotdmFyIHJlYWN0RGlzcGxheU5hbWUg
PSByZXF1aXJlKCcuL3RyYW5zZm9ybXMvcmVhY3REaXNwbGF5TmFtZScpOwotCi0vKioKLSAqIE1h
cCBmcm9tIHRyYW5zZm9ybU5hbWUgPT4gb3JkZXJlZExpc3RPZlZpc2l0b3JzLgotICovCi12YXIg
dHJhbnNmb3JtVmlzaXRvcnMgPSB7Ci0gICdlczYtY2xhc3Nlcyc6IFsKLSAgICBjbGFzc2VzLnZp
c2l0Q2xhc3NFeHByZXNzaW9uLAotICAgIGNsYXNzZXMudmlzaXRDbGFzc0RlY2xhcmF0aW9uLAot
ICAgIGNsYXNzZXMudmlzaXRTdXBlckNhbGwsCi0gICAgY2xhc3Nlcy52aXNpdFByaXZhdGVQcm9w
ZXJ0eQotICBdCi19OwotCi10cmFuc2Zvcm1WaXNpdG9ycy5yZWFjdCA9IHRyYW5zZm9ybVZpc2l0
b3JzWwotICAiZXM2LWNsYXNzZXMiCi1dLmNvbmNhdChbCi0gIHJlYWN0LnZpc2l0UmVhY3RUYWcs
Ci0gIHJlYWN0RGlzcGxheU5hbWUudmlzaXRSZWFjdERpc3BsYXlOYW1lCi1dKTsKLQotLyoqCi0g
KiBTcGVjaWZpZXMgdGhlIG9yZGVyIGluIHdoaWNoIGVhY2ggdHJhbnNmb3JtIHNob3VsZCBydW4u
Ci0gKi8KLXZhciB0cmFuc2Zvcm1SdW5PcmRlciA9IFsKLSAgJ2VzNi1jbGFzc2VzJywKLSAgJ3Jl
YWN0JwotXTsKLQotLyoqCi0gKiBHaXZlbiBhIGxpc3Qgb2YgdHJhbnNmb3JtIG5hbWVzLCByZXR1
cm4gdGhlIG9yZGVyZWQgbGlzdCBvZiB2aXNpdG9ycyB0byBiZQotICogcGFzc2VkIHRvIHRoZSB0
cmFuc2Zvcm0oKSBmdW5jdGlvbi4KLSAqCi0gKiBAcGFyYW0ge2FycmF5P30gZXhjbHVkZXMKLSAq
IEByZXR1cm4ge2FycmF5fQotICovCi1mdW5jdGlvbiBnZXRWaXNpdG9yc0xpc3QoZXhjbHVkZXMp
IHsKLSAgdmFyIHJldCA9IFtdOwotICBmb3IgKHZhciBpID0gMCwgaWwgPSB0cmFuc2Zvcm1SdW5P
cmRlci5sZW5ndGg7IGkgPCBpbDsgaSsrKSB7Ci0gICAgaWYgKCFleGNsdWRlcyB8fCBleGNsdWRl
cy5pbmRleE9mKHRyYW5zZm9ybVJ1bk9yZGVyW2ldKSA9PT0gLTEpIHsKLSAgICAgIHJldCA9IHJl
dC5jb25jYXQodHJhbnNmb3JtVmlzaXRvcnNbdHJhbnNmb3JtUnVuT3JkZXJbaV1dKTsKLSAgICB9
Ci0gIH0KLSAgcmV0dXJuIHJldDsKLX0KLQotZXhwb3J0cy5nZXRWaXNpdG9yc0xpc3QgPSBnZXRW
aXNpdG9yc0xpc3Q7Ci1leHBvcnRzLnRyYW5zZm9ybVZpc2l0b3JzID0gdHJhbnNmb3JtVmlzaXRv
cnM7Ci0KLX0pKCkKLX0seyIuL3RyYW5zZm9ybXMvY2xhc3NlcyI6MTksIi4vdHJhbnNmb3Jtcy9y
ZWFjdCI6MjAsIi4vdHJhbnNmb3Jtcy9yZWFjdERpc3BsYXlOYW1lIjoyMX1dfSx7fSxbMTVdKSgx
NSkKLX0pOwotOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvbGFicy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvcmVhY3QvYm93ZXJfY29tcG9uZW50cy9yZWFjdC9ib3dlci5qc29uIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9sYWJzL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9yZWFjdC9ib3dlcl9jb21wb25lbnRzL3JlYWN0L2Jvd2VyLmpzb24KZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5NGEzMDAzNDEyMWYxY2NlZWZkNTM0MzgzNjNi
YTY1YWIwOWU2NzQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9sYWJzL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ib3dlcl9jb21wb25lbnRzL3JlYWN0L2Jvd2VyLmpz
b24KKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLXsKLSAgIm5hbWUiOiAicmVhY3QiLAot
ICAidmVyc2lvbiI6ICIwLjQuMCIsCi0gICJtYWluIjogInJlYWN0LmpzIgotfQpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvbGFicy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QvYm93
ZXJfY29tcG9uZW50cy9yZWFjdC9yZWFjdC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvbGFicy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QvYm93
ZXJfY29tcG9uZW50cy9yZWFjdC9yZWFjdC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYzU4ZWMxMzNmMGVhMzgxNmEzMTE2MmQ4MTk3M2M4MmMzMTc3ZjY4NC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2xhYnMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0
L2Jvd2VyX2NvbXBvbmVudHMvcmVhY3QvcmVhY3QuanMKKysrIC9kZXYvbnVsbApAQCAtMSwxMTMy
OCArMCwwIEBACi0vKioKLSAqIFJlYWN0IHYwLjQuMAotICovCi0oZnVuY3Rpb24oZSl7aWYoImZ1
bmN0aW9uIj09dHlwZW9mIGJvb3RzdHJhcClib290c3RyYXAoInJlYWN0IixlKTtlbHNlIGlmKCJv
YmplY3QiPT10eXBlb2YgZXhwb3J0cyltb2R1bGUuZXhwb3J0cz1lKCk7ZWxzZSBpZigiZnVuY3Rp
b24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kKWRlZmluZShlKTtlbHNlIGlmKCJ1bmRlZmlu
ZWQiIT10eXBlb2Ygc2VzKXtpZighc2VzLm9rKCkpcmV0dXJuO3Nlcy5tYWtlUmVhY3Q9ZX1lbHNl
InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93LlJlYWN0PWUoKTpnbG9iYWwuUmVhY3Q9
ZSgpfSkoZnVuY3Rpb24oKXt2YXIgZGVmaW5lLHNlcyxib290c3RyYXAsbW9kdWxlLGV4cG9ydHM7
Ci1yZXR1cm4gKGZ1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiBpKG4scyl7aWYoIXRbbl0pe2lmKCFl
W25dKXt2YXIgbz10eXBlb2YgcmVxdWlyZT09ImZ1bmN0aW9uIiYmcmVxdWlyZTtpZighcyYmbyly
ZXR1cm4gbyhuLCEwKTtpZihyKXJldHVybiByKG4sITApO3Rocm93IG5ldyBFcnJvcigiQ2Fubm90
IGZpbmQgbW9kdWxlICciK24rIiciKX12YXIgdT10W25dPXtleHBvcnRzOnt9fTtlW25dWzBdLmNh
bGwodS5leHBvcnRzLGZ1bmN0aW9uKHQpe3ZhciByPWVbbl1bMV1bdF07cmV0dXJuIGkocj9yOnQp
fSx1LHUuZXhwb3J0cyl9cmV0dXJuIHRbbl0uZXhwb3J0c312YXIgcj10eXBlb2YgcmVxdWlyZT09
ImZ1bmN0aW9uIiYmcmVxdWlyZTtmb3IodmFyIHM9MDtzPG4ubGVuZ3RoO3MrKylpKG5bc10pO3Jl
dHVybiBpfSkoezE6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewotLyoqCi0gKiBD
b3B5cmlnaHQgMjAxMyBGYWNlYm9vaywgSW5jLgotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBB
cGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBu
b3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgot
ICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogaHR0cDov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVp
cmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQot
ICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFT
IElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBL
SU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0
aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRh
dGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKgotICogQHByb3ZpZGVzTW9kdWxlICQKLSAqIEB0
eXBlY2hlY2tzCi0gKi8KLQotdmFyIGdlID0gcmVxdWlyZSgiLi9nZSIpOwotdmFyIGV4ID0gcmVx
dWlyZSgiLi9leCIpOwotCi0vKioKLSAqIEBwYXJhbSB7c3RyaW5nfERPTURvY3VtZW50fERPTUVs
ZW1lbnR8RE9NVGV4dE5vZGV9IGlkCi0gKiBAcmV0dXJuIHtET01Eb2N1bWVudHxET01FbGVtZW50
fERPTVRleHROb2RlfQotICoKLSAqIEZpbmQgYSBub2RlIGJ5IElELgotICoKLSAqIElmIHlvdXIg
YXBwbGljYXRpb24gY29kZSBkZXBlbmRzIG9uIHRoZSBleGlzdGVuY2Ugb2YgdGhlIGVsZW1lbnQs
IHVzZSAkLAotICogd2hpY2ggd2lsbCB0aHJvdyBpZiB0aGUgZWxlbWVudCBkb2Vzbid0IGV4aXN0
LgotICoKLSAqIElmIHlvdSdyZSBub3Qgc3VyZSB3aGV0aGVyIG9yIG5vdCB0aGUgZWxlbWVudCBl
eGlzdHMsIHVzZSBnZSBpbnN0ZWFkLCBhbmQKLSAqIG1hbnVhbGx5IGNoZWNrIGZvciB0aGUgZWxl
bWVudCdzIGV4aXN0ZW5jZSBpbiB5b3VyIGFwcGxpY2F0aW9uIGNvZGUuCi0gKi8KLWZ1bmN0aW9u
ICQoaWQpIHsKLSAgdmFyIGVsZW1lbnQgPSBnZShpZCk7Ci0gIGlmICghZWxlbWVudCkgewotICAg
IHRocm93IG5ldyBFcnJvcihleCgKLSAgICAgICdUcmllZCB0byBnZXQgZWxlbWVudCB3aXRoIGlk
IG9mICIlcyIgYnV0IGl0IGlzIG5vdCBwcmVzZW50IG9uIHRoZSBwYWdlLicsCi0gICAgICBpZAot
ICAgICkpOwotICB9Ci0gIHJldHVybiBlbGVtZW50OwotfQotCi1tb2R1bGUuZXhwb3J0cyA9ICQ7
Ci0KLX0seyIuL2V4Ijo2NiwiLi9nZSI6Njl9XSwyOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxl
eHBvcnRzKXsKLS8qKgotICogQ29weXJpZ2h0IDIwMTMgRmFjZWJvb2ssIEluYy4KLSAqCi0gKiBM
aWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vu
c2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ug
d2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5z
ZSBhdAotICoKLSAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAot
ICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1Ig
Q09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNl
ZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNz
aW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICoKLSAqIEBwcm92
aWRlc01vZHVsZSBDU1NQcm9wZXJ0eQotICovCi0KLSJ1c2Ugc3RyaWN0IjsKLQotLyoqCi0gKiBD
U1MgcHJvcGVydGllcyB3aGljaCBhY2NlcHQgbnVtYmVycyBidXQgYXJlIG5vdCBpbiB1bml0cyBv
ZiAicHgiLgotICovCi12YXIgaXNVbml0bGVzc051bWJlciA9IHsKLSAgZmlsbE9wYWNpdHk6IHRy
dWUsCi0gIGZvbnRXZWlnaHQ6IHRydWUsCi0gIG9wYWNpdHk6IHRydWUsCi0gIG9ycGhhbnM6IHRy
dWUsCi0gIHpJbmRleDogdHJ1ZSwKLSAgem9vbTogdHJ1ZQotfTsKLQotLyoqCi0gKiBNb3N0IHN0
eWxlIHByb3BlcnRpZXMgY2FuIGJlIHVuc2V0IGJ5IGRvaW5nIC5zdHlsZVtwcm9wXSA9ICcnIGJ1
dCBJRTgKLSAqIGRvZXNuJ3QgbGlrZSBkb2luZyB0aGF0IHdpdGggc2hvcnRoYW5kIHByb3BlcnRp
ZXMgc28gZm9yIHRoZSBwcm9wZXJ0aWVzIHRoYXQKLSAqIElFOCBicmVha3Mgb24sIHdoaWNoIGFy
ZSBsaXN0ZWQgaGVyZSwgd2UgaW5zdGVhZCB1bnNldCBlYWNoIG9mIHRoZQotICogaW5kaXZpZHVh
bCBwcm9wZXJ0aWVzLiBTZWUgaHR0cDovL2J1Z3MuanF1ZXJ5LmNvbS90aWNrZXQvMTIzODUuCi0g
KiBUaGUgNC12YWx1ZSAnY2xvY2snIHByb3BlcnRpZXMgbGlrZSBtYXJnaW4sIHBhZGRpbmcsIGJv
cmRlci13aWR0aCBzZWVtIHRvCi0gKiBiZWhhdmUgd2l0aG91dCBhbnkgcHJvYmxlbXMuIEN1cmlv
dXNseSwgbGlzdC1zdHlsZSB3b3JrcyB0b28gd2l0aG91dCBhbnkKLSAqIHNwZWNpYWwgcHJvZGRp
bmcuCi0gKi8KLXZhciBzaG9ydGhhbmRQcm9wZXJ0eUV4cGFuc2lvbnMgPSB7Ci0gIGJhY2tncm91
bmQ6IHsKLSAgICBiYWNrZ3JvdW5kSW1hZ2U6IHRydWUsCi0gICAgYmFja2dyb3VuZFBvc2l0aW9u
OiB0cnVlLAotICAgIGJhY2tncm91bmRSZXBlYXQ6IHRydWUsCi0gICAgYmFja2dyb3VuZENvbG9y
OiB0cnVlCi0gIH0sCi0gIGJvcmRlcjogewotICAgIGJvcmRlcldpZHRoOiB0cnVlLAotICAgIGJv
cmRlclN0eWxlOiB0cnVlLAotICAgIGJvcmRlckNvbG9yOiB0cnVlCi0gIH0sCi0gIGJvcmRlckJv
dHRvbTogewotICAgIGJvcmRlckJvdHRvbVdpZHRoOiB0cnVlLAotICAgIGJvcmRlckJvdHRvbVN0
eWxlOiB0cnVlLAotICAgIGJvcmRlckJvdHRvbUNvbG9yOiB0cnVlCi0gIH0sCi0gIGJvcmRlckxl
ZnQ6IHsKLSAgICBib3JkZXJMZWZ0V2lkdGg6IHRydWUsCi0gICAgYm9yZGVyTGVmdFN0eWxlOiB0
cnVlLAotICAgIGJvcmRlckxlZnRDb2xvcjogdHJ1ZQotICB9LAotICBib3JkZXJSaWdodDogewot
ICAgIGJvcmRlclJpZ2h0V2lkdGg6IHRydWUsCi0gICAgYm9yZGVyUmlnaHRTdHlsZTogdHJ1ZSwK
LSAgICBib3JkZXJSaWdodENvbG9yOiB0cnVlCi0gIH0sCi0gIGJvcmRlclRvcDogewotICAgIGJv
cmRlclRvcFdpZHRoOiB0cnVlLAotICAgIGJvcmRlclRvcFN0eWxlOiB0cnVlLAotICAgIGJvcmRl
clRvcENvbG9yOiB0cnVlCi0gIH0sCi0gIGZvbnQ6IHsKLSAgICBmb250U3R5bGU6IHRydWUsCi0g
ICAgZm9udFZhcmlhbnQ6IHRydWUsCi0gICAgZm9udFdlaWdodDogdHJ1ZSwKLSAgICBmb250U2l6
ZTogdHJ1ZSwKLSAgICBsaW5lSGVpZ2h0OiB0cnVlLAotICAgIGZvbnRGYW1pbHk6IHRydWUKLSAg
fQotfTsKLQotdmFyIENTU1Byb3BlcnR5ID0gewotICBpc1VuaXRsZXNzTnVtYmVyOiBpc1VuaXRs
ZXNzTnVtYmVyLAotICBzaG9ydGhhbmRQcm9wZXJ0eUV4cGFuc2lvbnM6IHNob3J0aGFuZFByb3Bl
cnR5RXhwYW5zaW9ucwotfTsKLQotbW9kdWxlLmV4cG9ydHMgPSBDU1NQcm9wZXJ0eTsKLQotfSx7
fV0sMzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7Ci0vKioKLSAqIENvcHlyaWdo
dCAyMDEzIEZhY2Vib29rLCBJbmMuCi0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBM
aWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2Ug
dGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3Ug
bWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiBodHRwOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkg
YXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0
cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJB
U0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVp
dGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVj
aWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1
bmRlciB0aGUgTGljZW5zZS4KLSAqCi0gKiBAcHJvdmlkZXNNb2R1bGUgQ1NTUHJvcGVydHlPcGVy
YXRpb25zCi0gKiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seQotICovCi0KLSJ1c2Ugc3RyaWN0IjsK
LQotdmFyIENTU1Byb3BlcnR5ID0gcmVxdWlyZSgiLi9DU1NQcm9wZXJ0eSIpOwotCi12YXIgZGFu
Z2Vyb3VzU3R5bGVWYWx1ZSA9IHJlcXVpcmUoIi4vZGFuZ2Vyb3VzU3R5bGVWYWx1ZSIpOwotdmFy
IGVzY2FwZVRleHRGb3JCcm93c2VyID0gcmVxdWlyZSgiLi9lc2NhcGVUZXh0Rm9yQnJvd3NlciIp
OwotdmFyIGh5cGhlbmF0ZSA9IHJlcXVpcmUoIi4vaHlwaGVuYXRlIik7Ci12YXIgbWVtb2l6ZVN0
cmluZ09ubHkgPSByZXF1aXJlKCIuL21lbW9pemVTdHJpbmdPbmx5Iik7Ci0KLXZhciBwcm9jZXNz
U3R5bGVOYW1lID0gbWVtb2l6ZVN0cmluZ09ubHkoZnVuY3Rpb24oc3R5bGVOYW1lKSB7Ci0gIHJl
dHVybiBlc2NhcGVUZXh0Rm9yQnJvd3NlcihoeXBoZW5hdGUoc3R5bGVOYW1lKSk7Ci19KTsKLQot
LyoqCi0gKiBPcGVyYXRpb25zIGZvciBkZWFsaW5nIHdpdGggQ1NTIHByb3BlcnRpZXMuCi0gKi8K
LXZhciBDU1NQcm9wZXJ0eU9wZXJhdGlvbnMgPSB7Ci0KLSAgLyoqCi0gICAqIFNlcmlhbGl6ZXMg
YSBtYXBwaW5nIG9mIHN0eWxlIHByb3BlcnRpZXMgZm9yIHVzZSBhcyBpbmxpbmUgc3R5bGVzOgot
ICAgKgotICAgKiAgID4gY3JlYXRlTWFya3VwRm9yU3R5bGVzKHt3aWR0aDogJzIwMHB4JywgaGVp
Z2h0OiAwfSkKLSAgICogICAid2lkdGg6MjAwcHg7aGVpZ2h0OjA7IgotICAgKgotICAgKiBVbmRl
ZmluZWQgdmFsdWVzIGFyZSBpZ25vcmVkIHNvIHRoYXQgZGVjbGFyYXRpdmUgcHJvZ3JhbW1pbmcg
aXMgZWFzaWVyLgotICAgKgotICAgKiBAcGFyYW0ge29iamVjdH0gc3R5bGVzCi0gICAqIEByZXR1
cm4gez9zdHJpbmd9Ci0gICAqLwotICBjcmVhdGVNYXJrdXBGb3JTdHlsZXM6IGZ1bmN0aW9uKHN0
eWxlcykgewotICAgIHZhciBzZXJpYWxpemVkID0gJyc7Ci0gICAgZm9yICh2YXIgc3R5bGVOYW1l
IGluIHN0eWxlcykgewotICAgICAgaWYgKCFzdHlsZXMuaGFzT3duUHJvcGVydHkoc3R5bGVOYW1l
KSkgewotICAgICAgICBjb250aW51ZTsKLSAgICAgIH0KLSAgICAgIHZhciBzdHlsZVZhbHVlID0g
c3R5bGVzW3N0eWxlTmFtZV07Ci0gICAgICBpZiAoc3R5bGVWYWx1ZSAhPSBudWxsKSB7Ci0gICAg
ICAgIHNlcmlhbGl6ZWQgKz0gcHJvY2Vzc1N0eWxlTmFtZShzdHlsZU5hbWUpICsgJzonOwotICAg
ICAgICBzZXJpYWxpemVkICs9IGRhbmdlcm91c1N0eWxlVmFsdWUoc3R5bGVOYW1lLCBzdHlsZVZh
bHVlKSArICc7JzsKLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHNlcmlhbGl6ZWQgfHwgbnVs
bDsKLSAgfSwKLQotICAvKioKLSAgICogU2V0cyB0aGUgdmFsdWUgZm9yIG11bHRpcGxlIHN0eWxl
cyBvbiBhIG5vZGUuICBJZiBhIHZhbHVlIGlzIHNwZWNpZmllZCBhcwotICAgKiAnJyAoZW1wdHkg
c3RyaW5nKSwgdGhlIGNvcnJlc3BvbmRpbmcgc3R5bGUgcHJvcGVydHkgd2lsbCBiZSB1bnNldC4K
LSAgICoKLSAgICogQHBhcmFtIHtET01FbGVtZW50fSBub2RlCi0gICAqIEBwYXJhbSB7b2JqZWN0
fSBzdHlsZXMKLSAgICovCi0gIHNldFZhbHVlRm9yU3R5bGVzOiBmdW5jdGlvbihub2RlLCBzdHls
ZXMpIHsKLSAgICB2YXIgc3R5bGUgPSBub2RlLnN0eWxlOwotICAgIGZvciAodmFyIHN0eWxlTmFt
ZSBpbiBzdHlsZXMpIHsKLSAgICAgIGlmICghc3R5bGVzLmhhc093blByb3BlcnR5KHN0eWxlTmFt
ZSkpIHsKLSAgICAgICAgY29udGludWU7Ci0gICAgICB9Ci0gICAgICB2YXIgc3R5bGVWYWx1ZSA9
IGRhbmdlcm91c1N0eWxlVmFsdWUoc3R5bGVOYW1lLCBzdHlsZXNbc3R5bGVOYW1lXSk7Ci0gICAg
ICBpZiAoc3R5bGVWYWx1ZSkgewotICAgICAgICBzdHlsZVtzdHlsZU5hbWVdID0gc3R5bGVWYWx1
ZTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIHZhciBleHBhbnNpb24gPSBDU1NQcm9wZXJ0eS5z
aG9ydGhhbmRQcm9wZXJ0eUV4cGFuc2lvbnNbc3R5bGVOYW1lXTsKLSAgICAgICAgaWYgKGV4cGFu
c2lvbikgewotICAgICAgICAgIC8vIFNob3J0aGFuZCBwcm9wZXJ0eSB0aGF0IElFOCB3b24ndCBs
aWtlIHVuc2V0dGluZywgc28gdW5zZXQgZWFjaAotICAgICAgICAgIC8vIGNvbXBvbmVudCB0byBw
bGFjYXRlIGl0Ci0gICAgICAgICAgZm9yICh2YXIgaW5kaXZpZHVhbFN0eWxlTmFtZSBpbiBleHBh
bnNpb24pIHsKLSAgICAgICAgICAgIHN0eWxlW2luZGl2aWR1YWxTdHlsZU5hbWVdID0gJyc7Ci0g
ICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIHN0eWxlW3N0eWxlTmFtZV0g
PSAnJzsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgfQotCi19OwotCi1tb2R1bGUuZXhw
b3J0cyA9IENTU1Byb3BlcnR5T3BlcmF0aW9uczsKLQotfSx7Ii4vQ1NTUHJvcGVydHkiOjIsIi4v
ZGFuZ2Vyb3VzU3R5bGVWYWx1ZSI6NjMsIi4vZXNjYXBlVGV4dEZvckJyb3dzZXIiOjY1LCIuL2h5
cGhlbmF0ZSI6NzMsIi4vbWVtb2l6ZVN0cmluZ09ubHkiOjgwfV0sNDpbZnVuY3Rpb24ocmVxdWly
ZSxtb2R1bGUsZXhwb3J0cyl7Ci0vKioKLSAqIENvcHlyaWdodCAyMDEzIEZhY2Vib29rLCBJbmMu
Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAo
dGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBj
b21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2Yg
dGhlIExpY2Vuc2UgYXQKLSAqCi0gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdy
ZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJS
QU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxp
ZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5p
bmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAq
Ci0gKiBAcHJvdmlkZXNNb2R1bGUgQ2FsbGJhY2tSZWdpc3RyeQotICogQHR5cGVjaGVja3Mgc3Rh
dGljLW9ubHkKLSAqLwotCi0idXNlIHN0cmljdCI7Ci0KLXZhciBsaXN0ZW5lckJhbmsgPSB7fTsK
LQotLyoqCi0gKiBTdG9yZXMgImxpc3RlbmVycyIgYnkgYHJlZ2lzdHJhdGlvbk5hbWVgL2BpZGAu
IFRoZXJlIHNob3VsZCBiZSBhdCBtb3N0IG9uZQotICogImxpc3RlbmVyIiBwZXIgYHJlZ2lzdHJh
dGlvbk5hbWVgL2BpZGAgaW4gdGhlIGBsaXN0ZW5lckJhbmtgLgotICoKLSAqIEFjY2VzcyBsaXN0
ZW5lcnMgdmlhIGBsaXN0ZW5lckJhbmtbcmVnaXN0cmF0aW9uTmFtZV1baWRdYC4KLSAqCi0gKiBA
Y2xhc3MgQ2FsbGJhY2tSZWdpc3RyeQotICogQGludGVybmFsCi0gKi8KLXZhciBDYWxsYmFja1Jl
Z2lzdHJ5ID0gewotCi0gIC8qKgotICAgKiBTdG9yZXMgYGxpc3RlbmVyYCBhdCBgbGlzdGVuZXJC
YW5rW3JlZ2lzdHJhdGlvbk5hbWVdW2lkXWAuIElzIGlkZW1wb3RlbnQuCi0gICAqCi0gICAqIEBw
YXJhbSB7c3RyaW5nfSBpZCBJRCBvZiB0aGUgRE9NIGVsZW1lbnQuCi0gICAqIEBwYXJhbSB7c3Ry
aW5nfSByZWdpc3RyYXRpb25OYW1lIE5hbWUgb2YgbGlzdGVuZXIgKGUuZy4gYG9uQ2xpY2tgKS4K
LSAgICogQHBhcmFtIHs/ZnVuY3Rpb259IGxpc3RlbmVyIFRoZSBjYWxsYmFjayB0byBzdG9yZS4K
LSAgICovCi0gIHB1dExpc3RlbmVyOiBmdW5jdGlvbihpZCwgcmVnaXN0cmF0aW9uTmFtZSwgbGlz
dGVuZXIpIHsKLSAgICB2YXIgYmFua0ZvclJlZ2lzdHJhdGlvbk5hbWUgPQotICAgICAgbGlzdGVu
ZXJCYW5rW3JlZ2lzdHJhdGlvbk5hbWVdIHx8IChsaXN0ZW5lckJhbmtbcmVnaXN0cmF0aW9uTmFt
ZV0gPSB7fSk7Ci0gICAgYmFua0ZvclJlZ2lzdHJhdGlvbk5hbWVbaWRdID0gbGlzdGVuZXI7Ci0g
IH0sCi0KLSAgLyoqCi0gICAqIEBwYXJhbSB7c3RyaW5nfSBpZCBJRCBvZiB0aGUgRE9NIGVsZW1l
bnQuCi0gICAqIEBwYXJhbSB7c3RyaW5nfSByZWdpc3RyYXRpb25OYW1lIE5hbWUgb2YgbGlzdGVu
ZXIgKGUuZy4gYG9uQ2xpY2tgKS4KLSAgICogQHJldHVybiB7P2Z1bmN0aW9ufSBUaGUgc3RvcmVk
IGNhbGxiYWNrLgotICAgKi8KLSAgZ2V0TGlzdGVuZXI6IGZ1bmN0aW9uKGlkLCByZWdpc3RyYXRp
b25OYW1lKSB7Ci0gICAgdmFyIGJhbmtGb3JSZWdpc3RyYXRpb25OYW1lID0gbGlzdGVuZXJCYW5r
W3JlZ2lzdHJhdGlvbk5hbWVdOwotICAgIHJldHVybiBiYW5rRm9yUmVnaXN0cmF0aW9uTmFtZSAm
JiBiYW5rRm9yUmVnaXN0cmF0aW9uTmFtZVtpZF07Ci0gIH0sCi0KLSAgLyoqCi0gICAqIERlbGV0
ZXMgYSBsaXN0ZW5lciBmcm9tIHRoZSByZWdpc3RyYXRpb24gYmFuay4KLSAgICoKLSAgICogQHBh
cmFtIHtzdHJpbmd9IGlkIElEIG9mIHRoZSBET00gZWxlbWVudC4KLSAgICogQHBhcmFtIHtzdHJp
bmd9IHJlZ2lzdHJhdGlvbk5hbWUgTmFtZSBvZiBsaXN0ZW5lciAoZS5nLiBgb25DbGlja2ApLgot
ICAgKi8KLSAgZGVsZXRlTGlzdGVuZXI6IGZ1bmN0aW9uKGlkLCByZWdpc3RyYXRpb25OYW1lKSB7
Ci0gICAgdmFyIGJhbmtGb3JSZWdpc3RyYXRpb25OYW1lID0gbGlzdGVuZXJCYW5rW3JlZ2lzdHJh
dGlvbk5hbWVdOwotICAgIGlmIChiYW5rRm9yUmVnaXN0cmF0aW9uTmFtZSkgewotICAgICAgZGVs
ZXRlIGJhbmtGb3JSZWdpc3RyYXRpb25OYW1lW2lkXTsKLSAgICB9Ci0gIH0sCi0KLSAgLyoqCi0g
ICAqIERlbGV0ZXMgYWxsIGxpc3RlbmVycyBmb3IgdGhlIERPTSBlbGVtZW50IHdpdGggdGhlIHN1
cHBsaWVkIElELgotICAgKgotICAgKiBAcGFyYW0ge3N0cmluZ30gaWQgSUQgb2YgdGhlIERPTSBl
bGVtZW50LgotICAgKi8KLSAgZGVsZXRlQWxsTGlzdGVuZXJzOiBmdW5jdGlvbihpZCkgewotICAg
IGZvciAodmFyIHJlZ2lzdHJhdGlvbk5hbWUgaW4gbGlzdGVuZXJCYW5rKSB7Ci0gICAgICBkZWxl
dGUgbGlzdGVuZXJCYW5rW3JlZ2lzdHJhdGlvbk5hbWVdW2lkXTsKLSAgICB9Ci0gIH0sCi0KLSAg
LyoqCi0gICAqIFRoaXMgaXMgbmVlZGVkIGZvciB0ZXN0cyBvbmx5LiBEbyBub3QgdXNlIQotICAg
Ki8KLSAgX19wdXJnZTogZnVuY3Rpb24oKSB7Ci0gICAgbGlzdGVuZXJCYW5rID0ge307Ci0gIH0K
LQotfTsKLQotbW9kdWxlLmV4cG9ydHMgPSBDYWxsYmFja1JlZ2lzdHJ5OwotCi19LHt9XSw1Oltm
dW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKLShmdW5jdGlvbigpey8qKgotICogQ29w
eXJpZ2h0IDIwMTMgRmFjZWJvb2ssIEluYy4KLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBh
Y2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90
IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAq
IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqIGh0dHA6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJl
ZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAq
IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJ
UyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lO
RCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhl
IHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRp
b25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICoKLSAqIEBwcm92aWRlc01vZHVsZSBDaGFuZ2VFdmVu
dFBsdWdpbgotICovCi0KLSJ1c2Ugc3RyaWN0IjsKLQotdmFyIEV2ZW50Q29uc3RhbnRzID0gcmVx
dWlyZSgiLi9FdmVudENvbnN0YW50cyIpOwotdmFyIEV2ZW50UGx1Z2luSHViID0gcmVxdWlyZSgi
Li9FdmVudFBsdWdpbkh1YiIpOwotdmFyIEV2ZW50UHJvcGFnYXRvcnMgPSByZXF1aXJlKCIuL0V2
ZW50UHJvcGFnYXRvcnMiKTsKLXZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IHJlcXVpcmUoIi4v
RXhlY3V0aW9uRW52aXJvbm1lbnQiKTsKLXZhciBTeW50aGV0aWNFdmVudCA9IHJlcXVpcmUoIi4v
U3ludGhldGljRXZlbnQiKTsKLQotdmFyIGlzRXZlbnRTdXBwb3J0ZWQgPSByZXF1aXJlKCIuL2lz
RXZlbnRTdXBwb3J0ZWQiKTsKLXZhciBrZXlPZiA9IHJlcXVpcmUoIi4va2V5T2YiKTsKLQotdmFy
IHRvcExldmVsVHlwZXMgPSBFdmVudENvbnN0YW50cy50b3BMZXZlbFR5cGVzOwotCi12YXIgZXZl
bnRUeXBlcyA9IHsKLSAgY2hhbmdlOiB7Ci0gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHsK
LSAgICAgIGJ1YmJsZWQ6IGtleU9mKHtvbkNoYW5nZTogbnVsbH0pLAotICAgICAgY2FwdHVyZWQ6
IGtleU9mKHtvbkNoYW5nZUNhcHR1cmU6IG51bGx9KQotICAgIH0KLSAgfQotfTsKLQotLyoqCi0g
KiBGb3IgSUUgc2hpbXMKLSAqLwotdmFyIGFjdGl2ZUVsZW1lbnQgPSBudWxsOwotdmFyIGFjdGl2
ZUVsZW1lbnRJRCA9IG51bGw7Ci12YXIgYWN0aXZlRWxlbWVudFZhbHVlID0gbnVsbDsKLXZhciBh
Y3RpdmVFbGVtZW50VmFsdWVQcm9wID0gbnVsbDsKLQotCi0vKioKLSAqIFNFQ1RJT046IGhhbmRs
ZSBgY2hhbmdlYCBldmVudAotICovCi1mdW5jdGlvbiBzaG91bGRVc2VDaGFuZ2VFdmVudChlbGVt
KSB7Ci0gIHJldHVybiAoCi0gICAgZWxlbS5ub2RlTmFtZSA9PT0gJ1NFTEVDVCcgfHwKLSAgICAo
ZWxlbS5ub2RlTmFtZSA9PT0gJ0lOUFVUJyAmJiBlbGVtLnR5cGUgPT09ICdmaWxlJykKLSAgKTsK
LX0KLQotdmFyIGRvZXNDaGFuZ2VFdmVudEJ1YmJsZSA9IGZhbHNlOwotaWYgKEV4ZWN1dGlvbkVu
dmlyb25tZW50LmNhblVzZURPTSkgewotICAvLyBTZWUgYGhhbmRsZUNoYW5nZWAgY29tbWVudCBi
ZWxvdwotICBkb2VzQ2hhbmdlRXZlbnRCdWJibGUgPSBpc0V2ZW50U3VwcG9ydGVkKCdjaGFuZ2Un
KSAmJiAoCi0gICAgISgnZG9jdW1lbnRNb2RlJyBpbiBkb2N1bWVudCkgfHwgZG9jdW1lbnQuZG9j
dW1lbnRNb2RlID4gOAotICApOwotfQotCi1mdW5jdGlvbiBtYW51YWxEaXNwYXRjaENoYW5nZUV2
ZW50KG5hdGl2ZUV2ZW50KSB7Ci0gIHZhciBldmVudCA9IFN5bnRoZXRpY0V2ZW50LmdldFBvb2xl
ZCgKLSAgICBldmVudFR5cGVzLmNoYW5nZSwKLSAgICBhY3RpdmVFbGVtZW50SUQsCi0gICAgbmF0
aXZlRXZlbnQKLSAgKTsKLSAgRXZlbnRQcm9wYWdhdG9ycy5hY2N1bXVsYXRlVHdvUGhhc2VEaXNw
YXRjaGVzKGV2ZW50KTsKLQotICAvLyBJZiBjaGFuZ2UgYnViYmxlZCwgd2UnZCBqdXN0IGJpbmQg
dG8gaXQgbGlrZSBhbGwgdGhlIG90aGVyIGV2ZW50cwotICAvLyBhbmQgaGF2ZSBpdCBnbyB0aHJv
dWdoIFJlYWN0RXZlbnRUb3BMZXZlbENhbGxiYWNrLiBTaW5jZSBpdCBkb2Vzbid0LCB3ZQotICAv
LyBtYW51YWxseSBsaXN0ZW4gZm9yIHRoZSBjaGFuZ2UgZXZlbnQgYW5kIHNvIHdlIGhhdmUgdG8g
ZW5xdWV1ZSBhbmQKLSAgLy8gcHJvY2VzcyB0aGUgYWJzdHJhY3QgZXZlbnQgbWFudWFsbHkuCi0g
IEV2ZW50UGx1Z2luSHViLmVucXVldWVFdmVudHMoZXZlbnQpOwotICBFdmVudFBsdWdpbkh1Yi5w
cm9jZXNzRXZlbnRRdWV1ZSgpOwotfQotCi1mdW5jdGlvbiBzdGFydFdhdGNoaW5nRm9yQ2hhbmdl
RXZlbnRJRTgodGFyZ2V0LCB0YXJnZXRJRCkgewotICBhY3RpdmVFbGVtZW50ID0gdGFyZ2V0Owot
ICBhY3RpdmVFbGVtZW50SUQgPSB0YXJnZXRJRDsKLSAgYWN0aXZlRWxlbWVudC5hdHRhY2hFdmVu
dCgnb25jaGFuZ2UnLCBtYW51YWxEaXNwYXRjaENoYW5nZUV2ZW50KTsKLX0KLQotZnVuY3Rpb24g
c3RvcFdhdGNoaW5nRm9yQ2hhbmdlRXZlbnRJRTgoKSB7Ci0gIGlmICghYWN0aXZlRWxlbWVudCkg
ewotICAgIHJldHVybjsKLSAgfQotICBhY3RpdmVFbGVtZW50LmRldGFjaEV2ZW50KCdvbmNoYW5n
ZScsIG1hbnVhbERpc3BhdGNoQ2hhbmdlRXZlbnQpOwotICBhY3RpdmVFbGVtZW50ID0gbnVsbDsK
LSAgYWN0aXZlRWxlbWVudElEID0gbnVsbDsKLX0KLQotZnVuY3Rpb24gZ2V0VGFyZ2V0SURGb3JD
aGFuZ2VFdmVudCgKLSAgICB0b3BMZXZlbFR5cGUsCi0gICAgdG9wTGV2ZWxUYXJnZXQsCi0gICAg
dG9wTGV2ZWxUYXJnZXRJRCkgewotICBpZiAodG9wTGV2ZWxUeXBlID09PSB0b3BMZXZlbFR5cGVz
LnRvcENoYW5nZSkgewotICAgIHJldHVybiB0b3BMZXZlbFRhcmdldElEOwotICB9Ci19Ci1mdW5j
dGlvbiBoYW5kbGVFdmVudHNGb3JDaGFuZ2VFdmVudElFOCgKLSAgICB0b3BMZXZlbFR5cGUsCi0g
ICAgdG9wTGV2ZWxUYXJnZXQsCi0gICAgdG9wTGV2ZWxUYXJnZXRJRCkgewotICBpZiAodG9wTGV2
ZWxUeXBlID09PSB0b3BMZXZlbFR5cGVzLnRvcEZvY3VzKSB7Ci0gICAgLy8gc3RvcFdhdGNoaW5n
KCkgc2hvdWxkIGJlIGEgbm9vcCBoZXJlIGJ1dCB3ZSBjYWxsIGl0IGp1c3QgaW4gY2FzZSB3ZQot
ICAgIC8vIG1pc3NlZCBhIGJsdXIgZXZlbnQgc29tZWhvdy4KLSAgICBzdG9wV2F0Y2hpbmdGb3JD
aGFuZ2VFdmVudElFOCgpOwotICAgIHN0YXJ0V2F0Y2hpbmdGb3JDaGFuZ2VFdmVudElFOCh0b3BM
ZXZlbFRhcmdldCwgdG9wTGV2ZWxUYXJnZXRJRCk7Ci0gIH0gZWxzZSBpZiAodG9wTGV2ZWxUeXBl
ID09PSB0b3BMZXZlbFR5cGVzLnRvcEJsdXIpIHsKLSAgICBzdG9wV2F0Y2hpbmdGb3JDaGFuZ2VF
dmVudElFOCgpOwotICB9Ci19Ci0KLQotLyoqCi0gKiBTRUNUSU9OOiBoYW5kbGUgYGlucHV0YCBl
dmVudAotICovCi12YXIgaXNJbnB1dEV2ZW50U3VwcG9ydGVkID0gZmFsc2U7Ci1pZiAoRXhlY3V0
aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NKSB7Ci0gIC8vIElFOSBjbGFpbXMgdG8gc3VwcG9ydCB0
aGUgaW5wdXQgZXZlbnQgYnV0IGZhaWxzIHRvIHRyaWdnZXIgaXQgd2hlbgotICAvLyBkZWxldGlu
ZyB0ZXh0LCBzbyB3ZSBpZ25vcmUgaXRzIGlucHV0IGV2ZW50cwotICBpc0lucHV0RXZlbnRTdXBw
b3J0ZWQgPSBpc0V2ZW50U3VwcG9ydGVkKCdpbnB1dCcpICYmICgKLSAgICAhKCdkb2N1bWVudE1v
ZGUnIGluIGRvY3VtZW50KSB8fCBkb2N1bWVudC5kb2N1bWVudE1vZGUgPiA5Ci0gICk7Ci19Ci0K
LQotLyoqCi0gKiBAc2VlIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJy
ZW50LXdvcmsvbXVsdGlwYWdlL3RoZS1pbnB1dC1lbGVtZW50Lmh0bWwjaW5wdXQtdHlwZS1hdHRy
LXN1bW1hcnkKLSAqLwotdmFyIHN1cHBvcnRlZElucHV0VHlwZXMgPSB7Ci0gICdjb2xvcic6IHRy
dWUsCi0gICdkYXRlJzogdHJ1ZSwKLSAgJ2RhdGV0aW1lJzogdHJ1ZSwKLSAgJ2RhdGV0aW1lLWxv
Y2FsJzogdHJ1ZSwKLSAgJ2VtYWlsJzogdHJ1ZSwKLSAgJ21vbnRoJzogdHJ1ZSwKLSAgJ251bWJl
cic6IHRydWUsCi0gICdwYXNzd29yZCc6IHRydWUsCi0gICdyYW5nZSc6IHRydWUsCi0gICdzZWFy
Y2gnOiB0cnVlLAotICAndGVsJzogdHJ1ZSwKLSAgJ3RleHQnOiB0cnVlLAotICAndGltZSc6IHRy
dWUsCi0gICd1cmwnOiB0cnVlLAotICAnd2Vlayc6IHRydWUKLX07Ci0KLWZ1bmN0aW9uIHNob3Vs
ZFVzZUlucHV0RXZlbnQoZWxlbSkgewotICByZXR1cm4gKAotICAgIChlbGVtLm5vZGVOYW1lID09
PSAnSU5QVVQnICYmIHN1cHBvcnRlZElucHV0VHlwZXNbZWxlbS50eXBlXSkgfHwKLSAgICBlbGVt
Lm5vZGVOYW1lID09PSAnVEVYVEFSRUEnCi0gICk7Ci19Ci0KLS8qKgotICogKEZvciBvbGQgSUUu
KSBSZXBsYWNlbWVudCBnZXR0ZXIvc2V0dGVyIGZvciB0aGUgYHZhbHVlYCBwcm9wZXJ0eSB0aGF0
IGdldHMKLSAqIHNldCBvbiB0aGUgYWN0aXZlIGVsZW1lbnQuCi0gKi8KLXZhciBuZXdWYWx1ZVBy
b3AgPSAgewotICBnZXQ6IGZ1bmN0aW9uKCkgewotICAgIHJldHVybiBhY3RpdmVFbGVtZW50VmFs
dWVQcm9wLmdldC5jYWxsKHRoaXMpOwotICB9LAotICBzZXQ6IGZ1bmN0aW9uKHZhbCkgewotICAg
IC8vIENhc3QgdG8gYSBzdHJpbmcgc28gd2UgY2FuIGRvIGVxdWFsaXR5IGNoZWNrcy4KLSAgICBh
Y3RpdmVFbGVtZW50VmFsdWUgPSAnJyArIHZhbDsKLSAgICBhY3RpdmVFbGVtZW50VmFsdWVQcm9w
LnNldC5jYWxsKHRoaXMsIHZhbCk7Ci0gIH0KLX07Ci0KLS8qKgotICogKEZvciBvbGQgSUUuKSBT
dGFydHMgdHJhY2tpbmcgcHJvcGVydHljaGFuZ2UgZXZlbnRzIG9uIHRoZSBwYXNzZWQtaW4gZWxl
bWVudAotICogYW5kIG92ZXJyaWRlIHRoZSB2YWx1ZSBwcm9wZXJ0eSBzbyB0aGF0IHdlIGNhbiBk
aXN0aW5ndWlzaCB1c2VyIGV2ZW50cyBmcm9tCi0gKiB2YWx1ZSBjaGFuZ2VzIGluIEpTLgotICov
Ci1mdW5jdGlvbiBzdGFydFdhdGNoaW5nRm9yVmFsdWVDaGFuZ2UodGFyZ2V0LCB0YXJnZXRJRCkg
ewotICBhY3RpdmVFbGVtZW50ID0gdGFyZ2V0OwotICBhY3RpdmVFbGVtZW50SUQgPSB0YXJnZXRJ
RDsKLSAgYWN0aXZlRWxlbWVudFZhbHVlID0gdGFyZ2V0LnZhbHVlOwotICBhY3RpdmVFbGVtZW50
VmFsdWVQcm9wID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcigKLSAgICB0YXJnZXQu
Y29uc3RydWN0b3IucHJvdG90eXBlLAotICAgICd2YWx1ZScKLSAgKTsKLQotICBPYmplY3QuZGVm
aW5lUHJvcGVydHkoYWN0aXZlRWxlbWVudCwgJ3ZhbHVlJywgbmV3VmFsdWVQcm9wKTsKLSAgYWN0
aXZlRWxlbWVudC5hdHRhY2hFdmVudCgnb25wcm9wZXJ0eWNoYW5nZScsIGhhbmRsZVByb3BlcnR5
Q2hhbmdlKTsKLX0KLQotLyoqCi0gKiAoRm9yIG9sZCBJRS4pIFJlbW92ZXMgdGhlIGV2ZW50IGxp
c3RlbmVycyBmcm9tIHRoZSBjdXJyZW50bHktdHJhY2tlZCBlbGVtZW50LAotICogaWYgYW55IGV4
aXN0cy4KLSAqLwotZnVuY3Rpb24gc3RvcFdhdGNoaW5nRm9yVmFsdWVDaGFuZ2UoKSB7Ci0gIGlm
ICghYWN0aXZlRWxlbWVudCkgewotICAgIHJldHVybjsKLSAgfQotCi0gIC8vIGRlbGV0ZSByZXN0
b3JlcyB0aGUgb3JpZ2luYWwgcHJvcGVydHkgZGVmaW5pdGlvbgotICBkZWxldGUgYWN0aXZlRWxl
bWVudC52YWx1ZTsKLSAgYWN0aXZlRWxlbWVudC5kZXRhY2hFdmVudCgnb25wcm9wZXJ0eWNoYW5n
ZScsIGhhbmRsZVByb3BlcnR5Q2hhbmdlKTsKLQotICBhY3RpdmVFbGVtZW50ID0gbnVsbDsKLSAg
YWN0aXZlRWxlbWVudElEID0gbnVsbDsKLSAgYWN0aXZlRWxlbWVudFZhbHVlID0gbnVsbDsKLSAg
YWN0aXZlRWxlbWVudFZhbHVlUHJvcCA9IG51bGw7Ci19Ci0KLS8qKgotICogKEZvciBvbGQgSUUu
KSBIYW5kbGVzIGEgcHJvcGVydHljaGFuZ2UgZXZlbnQsIHNlbmRpbmcgYSBgY2hhbmdlYCBldmVu
dCBpZgotICogdGhlIHZhbHVlIG9mIHRoZSBhY3RpdmUgZWxlbWVudCBoYXMgY2hhbmdlZC4KLSAq
LwotZnVuY3Rpb24gaGFuZGxlUHJvcGVydHlDaGFuZ2UobmF0aXZlRXZlbnQpIHsKLSAgaWYgKG5h
dGl2ZUV2ZW50LnByb3BlcnR5TmFtZSAhPT0gJ3ZhbHVlJykgewotICAgIHJldHVybjsKLSAgfQot
ICB2YXIgdmFsdWUgPSBuYXRpdmVFdmVudC5zcmNFbGVtZW50LnZhbHVlOwotICBpZiAodmFsdWUg
PT09IGFjdGl2ZUVsZW1lbnRWYWx1ZSkgewotICAgIHJldHVybjsKLSAgfQotICBhY3RpdmVFbGVt
ZW50VmFsdWUgPSB2YWx1ZTsKLQotICBtYW51YWxEaXNwYXRjaENoYW5nZUV2ZW50KG5hdGl2ZUV2
ZW50KTsKLX0KLQotLyoqCi0gKiBJZiBhIGBjaGFuZ2VgIGV2ZW50IHNob3VsZCBiZSBmaXJlZCwg
cmV0dXJucyB0aGUgdGFyZ2V0J3MgSUQuCi0gKi8KLWZ1bmN0aW9uIGdldFRhcmdldElERm9ySW5w
dXRFdmVudCgKLSAgICB0b3BMZXZlbFR5cGUsCi0gICAgdG9wTGV2ZWxUYXJnZXQsCi0gICAgdG9w
TGV2ZWxUYXJnZXRJRCkgewotICBpZiAodG9wTGV2ZWxUeXBlID09PSB0b3BMZXZlbFR5cGVzLnRv
cElucHV0KSB7Ci0gICAgLy8gSW4gbW9kZXJuIGJyb3dzZXJzIChpLmUuLCBub3QgSUU4IG9yIElF
OSksIHRoZSBpbnB1dCBldmVudCBpcyBleGFjdGx5Ci0gICAgLy8gd2hhdCB3ZSB3YW50IHNvIGZh
bGwgdGhyb3VnaCBoZXJlIGFuZCB0cmlnZ2VyIGFuIGFic3RyYWN0IGV2ZW50Ci0gICAgcmV0dXJu
IHRvcExldmVsVGFyZ2V0SUQ7Ci0gIH0KLX0KLQotLy8gRm9yIElFOCBhbmQgSUU5LgotZnVuY3Rp
b24gaGFuZGxlRXZlbnRzRm9ySW5wdXRFdmVudElFKAotICAgIHRvcExldmVsVHlwZSwKLSAgICB0
b3BMZXZlbFRhcmdldCwKLSAgICB0b3BMZXZlbFRhcmdldElEKSB7Ci0gIGlmICh0b3BMZXZlbFR5
cGUgPT09IHRvcExldmVsVHlwZXMudG9wRm9jdXMpIHsKLSAgICAvLyBJbiBJRTgsIHdlIGNhbiBj
YXB0dXJlIGFsbW9zdCBhbGwgLnZhbHVlIGNoYW5nZXMgYnkgYWRkaW5nIGEKLSAgICAvLyBwcm9w
ZXJ0eWNoYW5nZSBoYW5kbGVyIGFuZCBsb29raW5nIGZvciBldmVudHMgd2l0aCBwcm9wZXJ0eU5h
bWUKLSAgICAvLyBlcXVhbCB0byAndmFsdWUnCi0gICAgLy8gSW4gSUU5LCBwcm9wZXJ0eWNoYW5n
ZSBmaXJlcyBmb3IgbW9zdCBpbnB1dCBldmVudHMgYnV0IGlzIGJ1Z2d5IGFuZAotICAgIC8vIGRv
ZXNuJ3QgZmlyZSB3aGVuIHRleHQgaXMgZGVsZXRlZCwgYnV0IGNvbnZlbmllbnRseSwgc2VsZWN0
aW9uY2hhbmdlCi0gICAgLy8gYXBwZWFycyB0byBmaXJlIGluIGFsbCBvZiB0aGUgcmVtYWluaW5n
IGNhc2VzIHNvIHdlIGNhdGNoIHRob3NlIGFuZAotICAgIC8vIGZvcndhcmQgdGhlIGV2ZW50IGlm
IHRoZSB2YWx1ZSBoYXMgY2hhbmdlZAotICAgIC8vIEluIGVpdGhlciBjYXNlLCB3ZSBkb24ndCB3
YW50IHRvIGNhbGwgdGhlIGV2ZW50IGhhbmRsZXIgaWYgdGhlIHZhbHVlCi0gICAgLy8gaXMgY2hh
bmdlZCBmcm9tIEpTIHNvIHdlIHJlZGVmaW5lIGEgc2V0dGVyIGZvciBgLnZhbHVlYCB0aGF0IHVw
ZGF0ZXMKLSAgICAvLyBvdXIgYWN0aXZlRWxlbWVudFZhbHVlIHZhcmlhYmxlLCBhbGxvd2luZyB1
cyB0byBpZ25vcmUgdGhvc2UgY2hhbmdlcwotICAgIC8vCi0gICAgLy8gc3RvcFdhdGNoaW5nKCkg
c2hvdWxkIGJlIGEgbm9vcCBoZXJlIGJ1dCB3ZSBjYWxsIGl0IGp1c3QgaW4gY2FzZSB3ZQotICAg
IC8vIG1pc3NlZCBhIGJsdXIgZXZlbnQgc29tZWhvdy4KLSAgICBzdG9wV2F0Y2hpbmdGb3JWYWx1
ZUNoYW5nZSgpOwotICAgIHN0YXJ0V2F0Y2hpbmdGb3JWYWx1ZUNoYW5nZSh0b3BMZXZlbFRhcmdl
dCwgdG9wTGV2ZWxUYXJnZXRJRCk7Ci0gIH0gZWxzZSBpZiAodG9wTGV2ZWxUeXBlID09PSB0b3BM
ZXZlbFR5cGVzLnRvcEJsdXIpIHsKLSAgICBzdG9wV2F0Y2hpbmdGb3JWYWx1ZUNoYW5nZSgpOwot
ICB9Ci19Ci0KLS8vIEZvciBJRTggYW5kIElFOS4KLWZ1bmN0aW9uIGdldFRhcmdldElERm9ySW5w
dXRFdmVudElFKAotICAgIHRvcExldmVsVHlwZSwKLSAgICB0b3BMZXZlbFRhcmdldCwKLSAgICB0
b3BMZXZlbFRhcmdldElEKSB7Ci0gIGlmICh0b3BMZXZlbFR5cGUgPT09IHRvcExldmVsVHlwZXMu
dG9wU2VsZWN0aW9uQ2hhbmdlIHx8Ci0gICAgICB0b3BMZXZlbFR5cGUgPT09IHRvcExldmVsVHlw
ZXMudG9wS2V5VXAgfHwKLSAgICAgIHRvcExldmVsVHlwZSA9PT0gdG9wTGV2ZWxUeXBlcy50b3BL
ZXlEb3duKSB7Ci0gICAgLy8gT24gdGhlIHNlbGVjdGlvbmNoYW5nZSBldmVudCwgdGhlIHRhcmdl
dCBpcyBqdXN0IGRvY3VtZW50IHdoaWNoIGlzbid0Ci0gICAgLy8gaGVscGZ1bCBmb3IgdXMgc28g
anVzdCBjaGVjayBhY3RpdmVFbGVtZW50IGluc3RlYWQuCi0gICAgLy8KLSAgICAvLyA5OSUgb2Yg
dGhlIHRpbWUsIGtleWRvd24gYW5kIGtleXVwIGFyZW4ndCBuZWNlc3NhcnkuIElFOCBmYWlscyB0
byBmaXJlCi0gICAgLy8gcHJvcGVydHljaGFuZ2Ugb24gdGhlIGZpcnN0IGlucHV0IGV2ZW50IGFm
dGVyIHNldHRpbmcgYHZhbHVlYCBmcm9tIGEKLSAgICAvLyBzY3JpcHQgYW5kIGZpcmVzIG9ubHkg
a2V5ZG93biwga2V5cHJlc3MsIGtleXVwLiBDYXRjaGluZyBrZXl1cCB1c3VhbGx5Ci0gICAgLy8g
Z2V0cyBpdCBhbmQgY2F0Y2hpbmcga2V5ZG93biBsZXRzIHVzIGZpcmUgYW4gZXZlbnQgZm9yIHRo
ZSBmaXJzdAotICAgIC8vIGtleXN0cm9rZSBpZiB1c2VyIGRvZXMgYSBrZXkgcmVwZWF0IChpdCds
bCBiZSBhIGxpdHRsZSBkZWxheWVkOiByaWdodAotICAgIC8vIGJlZm9yZSB0aGUgc2Vjb25kIGtl
eXN0cm9rZSkuIE90aGVyIGlucHV0IG1ldGhvZHMgKGUuZy4sIHBhc3RlKSBzZWVtIHRvCi0gICAg
Ly8gZmlyZSBzZWxlY3Rpb25jaGFuZ2Ugbm9ybWFsbHkuCi0gICAgaWYgKGFjdGl2ZUVsZW1lbnQg
JiYgYWN0aXZlRWxlbWVudC52YWx1ZSAhPT0gYWN0aXZlRWxlbWVudFZhbHVlKSB7Ci0gICAgICBh
Y3RpdmVFbGVtZW50VmFsdWUgPSBhY3RpdmVFbGVtZW50LnZhbHVlOwotICAgICAgcmV0dXJuIGFj
dGl2ZUVsZW1lbnRJRDsKLSAgICB9Ci0gIH0KLX0KLQotCi0vKioKLSAqIFNFQ1RJT046IGhhbmRs
ZSBgY2xpY2tgIGV2ZW50Ci0gKi8KLWZ1bmN0aW9uIHNob3VsZFVzZUNsaWNrRXZlbnQoZWxlbSkg
ewotICAvLyBVc2UgdGhlIGBjbGlja2AgZXZlbnQgdG8gZGV0ZWN0IGNoYW5nZXMgdG8gY2hlY2ti
b3ggYW5kIHJhZGlvIGlucHV0cy4KLSAgLy8gVGhpcyBhcHByb2FjaCB3b3JrcyBhY3Jvc3MgYWxs
IGJyb3dzZXJzLCB3aGVyZWFzIGBjaGFuZ2VgIGRvZXMgbm90IGZpcmUKLSAgLy8gdW50aWwgYGJs
dXJgIGluIElFOC4KLSAgcmV0dXJuICgKLSAgICBlbGVtLm5vZGVOYW1lID09PSAnSU5QVVQnICYm
Ci0gICAgKGVsZW0udHlwZSA9PT0gJ2NoZWNrYm94JyB8fCBlbGVtLnR5cGUgPT09ICdyYWRpbycp
Ci0gICk7Ci19Ci0KLWZ1bmN0aW9uIGdldFRhcmdldElERm9yQ2xpY2tFdmVudCgKLSAgICB0b3BM
ZXZlbFR5cGUsCi0gICAgdG9wTGV2ZWxUYXJnZXQsCi0gICAgdG9wTGV2ZWxUYXJnZXRJRCkgewot
ICBpZiAodG9wTGV2ZWxUeXBlID09PSB0b3BMZXZlbFR5cGVzLnRvcENsaWNrKSB7Ci0gICAgcmV0
dXJuIHRvcExldmVsVGFyZ2V0SUQ7Ci0gIH0KLX0KLQotLyoqCi0gKiBUaGlzIHBsdWdpbiBjcmVh
dGVzIGFuIGBvbkNoYW5nZWAgZXZlbnQgdGhhdCBub3JtYWxpemVzIGNoYW5nZSBldmVudHMKLSAq
IGFjcm9zcyBmb3JtIGVsZW1lbnRzLiBUaGlzIGV2ZW50IGZpcmVzIGF0IGEgdGltZSB3aGVuIGl0
J3MgcG9zc2libGUgdG8KLSAqIGNoYW5nZSB0aGUgZWxlbWVudCdzIHZhbHVlIHdpdGhvdXQgc2Vl
aW5nIGEgZmxpY2tlci4KLSAqCi0gKiBTdXBwb3J0ZWQgZWxlbWVudHMgYXJlOgotICogLSBpbnB1
dCAoc2VlIGBzdXBwb3J0ZWRJbnB1dFR5cGVzYCkKLSAqIC0gdGV4dGFyZWEKLSAqIC0gc2VsZWN0
Ci0gKi8KLXZhciBDaGFuZ2VFdmVudFBsdWdpbiA9IHsKLQotICBldmVudFR5cGVzOiBldmVudFR5
cGVzLAotCi0gIC8qKgotICAgKiBAcGFyYW0ge3N0cmluZ30gdG9wTGV2ZWxUeXBlIFJlY29yZCBm
cm9tIGBFdmVudENvbnN0YW50c2AuCi0gICAqIEBwYXJhbSB7RE9NRXZlbnRUYXJnZXR9IHRvcExl
dmVsVGFyZ2V0IFRoZSBsaXN0ZW5pbmcgY29tcG9uZW50IHJvb3Qgbm9kZS4KLSAgICogQHBhcmFt
IHtzdHJpbmd9IHRvcExldmVsVGFyZ2V0SUQgSUQgb2YgYHRvcExldmVsVGFyZ2V0YC4KLSAgICog
QHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LgotICAgKiBA
cmV0dXJuIHsqfSBBbiBhY2N1bXVsYXRpb24gb2Ygc3ludGhldGljIGV2ZW50cy4KLSAgICogQHNl
ZSB7RXZlbnRQbHVnaW5IdWIuZXh0cmFjdEV2ZW50c30KLSAgICovCi0gIGV4dHJhY3RFdmVudHM6
IGZ1bmN0aW9uKAotICAgICAgdG9wTGV2ZWxUeXBlLAotICAgICAgdG9wTGV2ZWxUYXJnZXQsCi0g
ICAgICB0b3BMZXZlbFRhcmdldElELAotICAgICAgbmF0aXZlRXZlbnQpIHsKLQotICAgIHZhciBn
ZXRUYXJnZXRJREZ1bmMsIGhhbmRsZUV2ZW50RnVuYzsKLSAgICBpZiAoc2hvdWxkVXNlQ2hhbmdl
RXZlbnQodG9wTGV2ZWxUYXJnZXQpKSB7Ci0gICAgICBpZiAoZG9lc0NoYW5nZUV2ZW50QnViYmxl
KSB7Ci0gICAgICAgIGdldFRhcmdldElERnVuYyA9IGdldFRhcmdldElERm9yQ2hhbmdlRXZlbnQ7
Ci0gICAgICB9IGVsc2UgewotICAgICAgICBoYW5kbGVFdmVudEZ1bmMgPSBoYW5kbGVFdmVudHNG
b3JDaGFuZ2VFdmVudElFODsKLSAgICAgIH0KLSAgICB9IGVsc2UgaWYgKHNob3VsZFVzZUlucHV0
RXZlbnQodG9wTGV2ZWxUYXJnZXQpKSB7Ci0gICAgICBpZiAoaXNJbnB1dEV2ZW50U3VwcG9ydGVk
KSB7Ci0gICAgICAgIGdldFRhcmdldElERnVuYyA9IGdldFRhcmdldElERm9ySW5wdXRFdmVudDsK
LSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIGdldFRhcmdldElERnVuYyA9IGdldFRhcmdldElERm9y
SW5wdXRFdmVudElFOwotICAgICAgICBoYW5kbGVFdmVudEZ1bmMgPSBoYW5kbGVFdmVudHNGb3JJ
bnB1dEV2ZW50SUU7Ci0gICAgICB9Ci0gICAgfSBlbHNlIGlmIChzaG91bGRVc2VDbGlja0V2ZW50
KHRvcExldmVsVGFyZ2V0KSkgewotICAgICAgZ2V0VGFyZ2V0SURGdW5jID0gZ2V0VGFyZ2V0SURG
b3JDbGlja0V2ZW50OwotICAgIH0KLQotICAgIGlmIChnZXRUYXJnZXRJREZ1bmMpIHsKLSAgICAg
IHZhciB0YXJnZXRJRCA9IGdldFRhcmdldElERnVuYygKLSAgICAgICAgdG9wTGV2ZWxUeXBlLAot
ICAgICAgICB0b3BMZXZlbFRhcmdldCwKLSAgICAgICAgdG9wTGV2ZWxUYXJnZXRJRAotICAgICAg
KTsKLSAgICAgIGlmICh0YXJnZXRJRCkgewotICAgICAgICB2YXIgZXZlbnQgPSBTeW50aGV0aWNF
dmVudC5nZXRQb29sZWQoCi0gICAgICAgICAgZXZlbnRUeXBlcy5jaGFuZ2UsCi0gICAgICAgICAg
dGFyZ2V0SUQsCi0gICAgICAgICAgbmF0aXZlRXZlbnQKLSAgICAgICAgKTsKLSAgICAgICAgRXZl
bnRQcm9wYWdhdG9ycy5hY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKGV2ZW50KTsKLSAgICAg
ICAgcmV0dXJuIGV2ZW50OwotICAgICAgfQotICAgIH0KLQotICAgIGlmIChoYW5kbGVFdmVudEZ1
bmMpIHsKLSAgICAgIGhhbmRsZUV2ZW50RnVuYygKLSAgICAgICAgdG9wTGV2ZWxUeXBlLAotICAg
ICAgICB0b3BMZXZlbFRhcmdldCwKLSAgICAgICAgdG9wTGV2ZWxUYXJnZXRJRAotICAgICAgKTsK
LSAgICB9Ci0gIH0KLQotfTsKLQotbW9kdWxlLmV4cG9ydHMgPSBDaGFuZ2VFdmVudFBsdWdpbjsK
LQotfSkoKQotfSx7Ii4vRXZlbnRDb25zdGFudHMiOjEzLCIuL0V2ZW50UGx1Z2luSHViIjoxNSwi
Li9FdmVudFByb3BhZ2F0b3JzIjoxOCwiLi9FeGVjdXRpb25FbnZpcm9ubWVudCI6MTksIi4vU3lu
dGhldGljRXZlbnQiOjUwLCIuL2lzRXZlbnRTdXBwb3J0ZWQiOjc2LCIuL2tleU9mIjo3OX1dLDY6
W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewotKGZ1bmN0aW9uKCl7LyoqCi0gKiBD
b3B5cmlnaHQgMjAxMyBGYWNlYm9vaywgSW5jLgotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBB
cGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBu
b3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgot
ICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogaHR0cDov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVp
cmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQot
ICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFT
IElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBL
SU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0
aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRh
dGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKgotICogQHByb3ZpZGVzTW9kdWxlIERPTUNoaWxk
cmVuT3BlcmF0aW9ucwotICovCi0KLS8vIEVtcHR5IGJsb2NrcyBpbXByb3ZlIHJlYWRhYmlsaXR5
IHNvIGRpc2FibGUgdGhhdCB3YXJuaW5nCi0vLyBqc2hpbnQgLVcwMzUKLQotInVzZSBzdHJpY3Qi
OwotCi12YXIgRGFuZ2VyID0gcmVxdWlyZSgiLi9EYW5nZXIiKTsKLQotdmFyIGluc2VydE5vZGVB
dCA9IHJlcXVpcmUoIi4vaW5zZXJ0Tm9kZUF0Iik7Ci12YXIga2V5T2YgPSByZXF1aXJlKCIuL2tl
eU9mIik7Ci12YXIgdGhyb3dJZiA9IHJlcXVpcmUoIi4vdGhyb3dJZiIpOwotCi12YXIgTk9OX0lO
Q1JFQVNJTkdfT1BFUkFUSU9OUzsKLWlmICh0cnVlKSB7Ci0gIE5PTl9JTkNSRUFTSU5HX09QRVJB
VElPTlMgPQotICAgICdET00gY2hpbGQgbWFuYWdlbWVudCBvcGVyYXRpb25zIG11c3QgYmUgcHJv
dmlkZWQgaW4gb3JkZXIgJyArCi0gICAgJ29mIGluY3JlYXNpbmcgZGVzdGluYXRpb24gaW5kZXgu
IFRoaXMgaXMgbGlrZWx5IGFuIGlzc3VlIHdpdGggJyArCi0gICAgJ3RoZSBjb3JlIGZyYW1ld29y
ay4nOwotfQotCi12YXIgTU9WRV9OT0RFX0FUX09SSUdfSU5ERVggPSBrZXlPZih7bW92ZUZyb206
IG51bGx9KTsKLXZhciBJTlNFUlRfTUFSS1VQID0ga2V5T2Yoe2luc2VydE1hcmt1cDogbnVsbH0p
OwotdmFyIFJFTU9WRV9BVCA9IGtleU9mKHtyZW1vdmVBdDogbnVsbH0pOwotCi0vKioKLSAqIElu
IG9yZGVyIHRvIGNhcnJ5IG91dCBtb3ZlbWVudCBvZiBET00gbm9kZXMgd2l0aG91dCBrbm93aW5n
IHRoZWlyIElEcywgd2UKLSAqIGhhdmUgdG8gZmlyc3Qgc3RvcmUga25vd2xlZGdlIGFib3V0IG5v
ZGVzJyBvcmlnaW5hbCBpbmRpY2VzIGJlZm9yZSBiZWdpbm5pbmcKLSAqIHRvIGNhcnJ5IG91dCB0
aGUgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucy4gT25jZSB3ZSBiZWdpbiB0aGUgc2VxdWVuY2UsIHRo
ZSBET00KLSAqIGluZGljZXMgaW4gZnV0dXJlIGluc3RydWN0aW9ucyBhcmUgbm8gbG9uZ2VyIHZh
bGlkLgotICoKLSAqIEBwYXJhbSB7RWxlbWVudH0gcGFyZW50IFBhcmVudCBET00gbm9kZS4KLSAq
IEBwYXJhbSB7T2JqZWN0fSBjaGlsZE9wZXJhdGlvbnMgRGVzY3JpcHRpb24gb2YgY2hpbGQgb3Bl
cmF0aW9ucy4KLSAqIEByZXR1cm4ge0FycmF5P30gU3BhcnNlIGFycmF5IGNvbnRhaW5pbmcgZWxl
bWVudHMgYnkgdGhlaXIgY3VycmVudCBpbmRleCBpbgotICogdGhlIERPTS4KLSAqLwotdmFyIF9n
ZXROb2Rlc0J5T3JpZ2luYWxJbmRleCA9IGZ1bmN0aW9uKHBhcmVudCwgY2hpbGRPcGVyYXRpb25z
KSB7Ci0gIHZhciBub2Rlc0J5T3JpZ2luYWxJbmRleDsgLy8gU3BhcnNlIGFycmF5LgotICB2YXIg
Y2hpbGRPcGVyYXRpb247Ci0gIHZhciBvcmlnSW5kZXg7Ci0gIGZvciAodmFyIGkgPSAwOyBpIDwg
Y2hpbGRPcGVyYXRpb25zLmxlbmd0aDsgaSsrKSB7Ci0gICAgY2hpbGRPcGVyYXRpb24gPSBjaGls
ZE9wZXJhdGlvbnNbaV07Ci0gICAgaWYgKE1PVkVfTk9ERV9BVF9PUklHX0lOREVYIGluIGNoaWxk
T3BlcmF0aW9uKSB7Ci0gICAgICBub2Rlc0J5T3JpZ2luYWxJbmRleCA9IG5vZGVzQnlPcmlnaW5h
bEluZGV4IHx8IFtdOwotICAgICAgb3JpZ0luZGV4ID0gY2hpbGRPcGVyYXRpb24ubW92ZUZyb207
Ci0gICAgICBub2Rlc0J5T3JpZ2luYWxJbmRleFtvcmlnSW5kZXhdID0gcGFyZW50LmNoaWxkTm9k
ZXNbb3JpZ0luZGV4XTsKLSAgICB9IGVsc2UgaWYgKFJFTU9WRV9BVCBpbiBjaGlsZE9wZXJhdGlv
bikgewotICAgICAgbm9kZXNCeU9yaWdpbmFsSW5kZXggPSBub2Rlc0J5T3JpZ2luYWxJbmRleCB8
fCBbXTsKLSAgICAgIG9yaWdJbmRleCA9IGNoaWxkT3BlcmF0aW9uLnJlbW92ZUF0OwotICAgICAg
bm9kZXNCeU9yaWdpbmFsSW5kZXhbb3JpZ0luZGV4XSA9IHBhcmVudC5jaGlsZE5vZGVzW29yaWdJ
bmRleF07Ci0gICAgfQotICB9Ci0gIHJldHVybiBub2Rlc0J5T3JpZ2luYWxJbmRleDsKLX07Ci0K
LS8qKgotICogUmVtb3ZlcyBET00gZWxlbWVudHMgZnJvbSB0aGVpciBwYXJlbnQsIG9yIG1vdmVk
LgotICogQHBhcmFtIHtFbGVtZW50fSBwYXJlbnQgUGFyZW50IERPTSBub2RlLgotICogQHBhcmFt
IHtBcnJheX0gbm9kZXNCeU9yaWdpbmFsSW5kZXggQ2hpbGQgbm9kZXMgYnkgdGhlaXIgb3JpZ2lu
YWwgaW5kZXgKLSAqIChwb3RlbnRpYWxseSBzcGFyc2UuKQotICovCi12YXIgX3JlbW92ZUNoaWxk
cmVuQnlPcmlnaW5hbEluZGV4ID0gZnVuY3Rpb24ocGFyZW50LCBub2Rlc0J5T3JpZ2luYWxJbmRl
eCkgewotICBmb3IgKHZhciBqID0gMDsgaiA8IG5vZGVzQnlPcmlnaW5hbEluZGV4Lmxlbmd0aDsg
aisrKSB7Ci0gICAgdmFyIG5vZGVUb1JlbW92ZSA9IG5vZGVzQnlPcmlnaW5hbEluZGV4W2pdOwot
ICAgIGlmIChub2RlVG9SZW1vdmUpIHsgICAgIC8vIFdlIHVzZWQgYSBzcGFyc2UgYXJyYXkuCi0g
ICAgICBwYXJlbnQucmVtb3ZlQ2hpbGQobm9kZXNCeU9yaWdpbmFsSW5kZXhbal0pOwotICAgIH0K
LSAgfQotfTsKLQotLyoqCi0gKiBPbmNlIGFsbCBub2RlcyB0aGF0IHdpbGwgYmUgcmVtb3ZlZCBv
ciBtb3ZlZCAtIGFyZSByZW1vdmVkIGZyb20gdGhlIHBhcmVudAotICogbm9kZSwgd2UgY2FuIGJl
Z2luIHRoZSBwcm9jZXNzIG9mIHBsYWNpbmcgbm9kZXMgaW50byB0aGVpciBmaW5hbCBsb2NhdGlv
bnMuCi0gKiBXZSBtdXN0IHBlcmZvcm0gYWxsIG9wZXJhdGlvbnMgaW4gdGhlIG9yZGVyIG9mIHRo
ZSBmaW5hbCBET00gaW5kZXggLQotICogb3RoZXJ3aXNlLCB3ZSBjb3VsZG4ndCBjb3VudCBvbiB0
aGUgZmFjdCB0aGF0IGFuIGluc2VydGlvbiBhdCBpbmRleCBYLCB3aWxsCi0gKiByZW1haW4gYXQg
aW5kZXggWC4gVGhpcyB3aWxsIGl0ZXJhdGUgdGhyb3VnaCB0aGUgY2hpbGQgb3BlcmF0aW9ucywg
YWRkaW5nCi0gKiBjb250ZW50IHdoZXJlIG5lZWRlZCwgc2tpcCBvdmVyIHJlbW92YWxzICh0aGV5
J3ZlIGFscmVhZHkgYmVlbiByZW1vdmVkKSBhbmQKLSAqIGluc2VydCAibW92ZWQiIEVsZW1lbnRz
IHRoYXQgd2VyZSBwcmV2aW91c2x5IHJlbW92ZWQuIFRoZSAibW92ZWQiIGVsZW1lbnRzCi0gKiBh
cmUgb25seSB0ZW1wb3JhcmlseSByZW1vdmVkIGZyb20gdGhlIHBhcmVudCwgc28gdGhhdCBpbmRl
eCBjYWxjdWxhdGlvbnMgY2FuCi0gKiBiZSBtYW5hZ2VhYmxlIGFuZCBwZXJmb3JtIHdlbGwgaW4g
dGhlIGNhc2VzIHRoYXQgbWF0dGVyLgotICovCi12YXIgX3BsYWNlTm9kZXNBdERlc3RpbmF0aW9u
ID0KLSAgZnVuY3Rpb24ocGFyZW50LCBjaGlsZE9wZXJhdGlvbnMsIG5vZGVzQnlPcmlnaW5hbElu
ZGV4KSB7Ci0gICAgdmFyIG9yaWdOb2RlOwotICAgIHZhciBmaW5hbEluZGV4OwotICAgIHZhciBs
YXN0RmluYWxJbmRleCA9IC0xOwotICAgIHZhciBjaGlsZE9wZXJhdGlvbjsKLSAgICBmb3IgKHZh
ciBrID0gMDsgayA8IGNoaWxkT3BlcmF0aW9ucy5sZW5ndGg7IGsrKykgewotICAgICAgY2hpbGRP
cGVyYXRpb24gPSBjaGlsZE9wZXJhdGlvbnNba107Ci0gICAgICBpZiAoTU9WRV9OT0RFX0FUX09S
SUdfSU5ERVggaW4gY2hpbGRPcGVyYXRpb24pIHsKLSAgICAgICAgb3JpZ05vZGUgPSBub2Rlc0J5
T3JpZ2luYWxJbmRleFtjaGlsZE9wZXJhdGlvbi5tb3ZlRnJvbV07Ci0gICAgICAgIGZpbmFsSW5k
ZXggPSBjaGlsZE9wZXJhdGlvbi5maW5hbEluZGV4OwotICAgICAgICBpbnNlcnROb2RlQXQocGFy
ZW50LCBvcmlnTm9kZSwgZmluYWxJbmRleCk7Ci0gICAgICAgIGlmICh0cnVlKSB7Ci0gICAgICAg
ICAgdGhyb3dJZihmaW5hbEluZGV4IDw9IGxhc3RGaW5hbEluZGV4LCBOT05fSU5DUkVBU0lOR19P
UEVSQVRJT05TKTsKLSAgICAgICAgICBsYXN0RmluYWxJbmRleCA9IGZpbmFsSW5kZXg7Ci0gICAg
ICAgIH0KLSAgICAgIH0gZWxzZSBpZiAoUkVNT1ZFX0FUIGluIGNoaWxkT3BlcmF0aW9uKSB7Ci0g
ICAgICB9IGVsc2UgaWYgKElOU0VSVF9NQVJLVVAgaW4gY2hpbGRPcGVyYXRpb24pIHsKLSAgICAg
ICAgZmluYWxJbmRleCA9IGNoaWxkT3BlcmF0aW9uLmZpbmFsSW5kZXg7Ci0gICAgICAgIHZhciBt
YXJrdXAgPSBjaGlsZE9wZXJhdGlvbi5pbnNlcnRNYXJrdXA7Ci0gICAgICAgIERhbmdlci5kYW5n
ZXJvdXNseUluc2VydE1hcmt1cEF0KHBhcmVudCwgbWFya3VwLCBmaW5hbEluZGV4KTsKLSAgICAg
ICAgaWYgKHRydWUpIHsKLSAgICAgICAgICB0aHJvd0lmKGZpbmFsSW5kZXggPD0gbGFzdEZpbmFs
SW5kZXgsIE5PTl9JTkNSRUFTSU5HX09QRVJBVElPTlMpOwotICAgICAgICAgIGxhc3RGaW5hbElu
ZGV4ID0gZmluYWxJbmRleDsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgfTsKLQotdmFy
IG1hbmFnZUNoaWxkcmVuID0gZnVuY3Rpb24ocGFyZW50LCBjaGlsZE9wZXJhdGlvbnMpIHsKLSAg
dmFyIG5vZGVzQnlPcmlnaW5hbEluZGV4ID0gX2dldE5vZGVzQnlPcmlnaW5hbEluZGV4KHBhcmVu
dCwgY2hpbGRPcGVyYXRpb25zKTsKLSAgaWYgKG5vZGVzQnlPcmlnaW5hbEluZGV4KSB7Ci0gICAg
X3JlbW92ZUNoaWxkcmVuQnlPcmlnaW5hbEluZGV4KHBhcmVudCwgbm9kZXNCeU9yaWdpbmFsSW5k
ZXgpOwotICB9Ci0gIF9wbGFjZU5vZGVzQXREZXN0aW5hdGlvbihwYXJlbnQsIGNoaWxkT3BlcmF0
aW9ucywgbm9kZXNCeU9yaWdpbmFsSW5kZXgpOwotfTsKLQotLyoqCi0gKiBBbHNvIHJlZXhwb3J0
IGFsbCBvZiB0aGUgZGFuZ2Vyb3VzIGZ1bmN0aW9ucy4gSXQgaGVscHMgdG8gaGF2ZSBhbGwgZGFu
Z2Vyb3VzCi0gKiBmdW5jdGlvbnMgbG9jYXRlZCBpbiBhIHNpbmdsZSBtb2R1bGUgYERhbmdlcmAu
Ci0gKi8KLXZhciBET01DaGlsZHJlbk9wZXJhdGlvbnMgPSB7Ci0gIGRhbmdlcm91c2x5UmVwbGFj
ZU5vZGVXaXRoTWFya3VwOiBEYW5nZXIuZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXAs
Ci0gIG1hbmFnZUNoaWxkcmVuOiBtYW5hZ2VDaGlsZHJlbgotfTsKLQotbW9kdWxlLmV4cG9ydHMg
PSBET01DaGlsZHJlbk9wZXJhdGlvbnM7Ci0KLX0pKCkKLX0seyIuL0RhbmdlciI6OSwiLi9pbnNl
cnROb2RlQXQiOjc0LCIuL2tleU9mIjo3OSwiLi90aHJvd0lmIjo4Nn1dLDc6W2Z1bmN0aW9uKHJl
cXVpcmUsbW9kdWxlLGV4cG9ydHMpewotLyoqCi0gKiBDb3B5cmlnaHQgMjAxMyBGYWNlYm9vaywg
SW5jLgotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAy
LjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQg
aW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5
IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9y
IGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhl
IExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQg
V0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBp
bXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292
ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2Uu
Ci0gKgotICogQHByb3ZpZGVzTW9kdWxlIERPTVByb3BlcnR5Ci0gKiBAdHlwZWNoZWNrcyBzdGF0
aWMtb25seQotICovCi0KLS8qanNsaW50IGJpdHdpc2U6IHRydWUgKi8KLQotInVzZSBzdHJpY3Qi
OwotCi12YXIgaW52YXJpYW50ID0gcmVxdWlyZSgiLi9pbnZhcmlhbnQiKTsKLQotdmFyIERPTVBy
b3BlcnR5SW5qZWN0aW9uID0gewotICAvKioKLSAgICogTWFwcGluZyBmcm9tIG5vcm1hbGl6ZWQs
IGNhbWVsY2FzZWQgcHJvcGVydHkgbmFtZXMgdG8gYSBjb25maWd1cmF0aW9uIHRoYXQKLSAgICog
c3BlY2lmaWVzIGhvdyB0aGUgYXNzb2NpYXRlZCBET00gcHJvcGVydHkgc2hvdWxkIGJlIGFjY2Vz
c2VkIG9yIHJlbmRlcmVkLgotICAgKi8KLSAgTVVTVF9VU0VfQVRUUklCVVRFOiAweDEsCi0gIE1V
U1RfVVNFX1BST1BFUlRZOiAgMHgyLAotICBIQVNfQk9PTEVBTl9WQUxVRTogIDB4NCwKLSAgSEFT
X1NJREVfRUZGRUNUUzogICAweDgsCi0KLSAgLyoqCi0gICAqIEluamVjdCBzb21lIHNwZWNpYWxp
emVkIGtub3dsZWRnZSBhYm91dCB0aGUgRE9NLiBUaGlzIHRha2VzIGEgY29uZmlnIG9iamVjdAot
ICAgKiB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczoKLSAgICoKLSAgICogaXNDdXN0b21B
dHRyaWJ1dGU6IGZ1bmN0aW9uIHRoYXQgZ2l2ZW4gYW4gYXR0cmlidXRlIG5hbWUgd2lsbCByZXR1
cm4gdHJ1ZQotICAgKiBpZiBpdCBjYW4gYmUgaW5zZXJ0ZWQgaW50byB0aGUgRE9NIHZlcmJhdGlt
LiBVc2VmdWwgZm9yIGRhdGEtKiBvciBhcmlhLSoKLSAgICogYXR0cmlidXRlcyB3aGVyZSBpdCdz
IGltcG9zc2libGUgdG8gZW51bWVyYXRlIGFsbCBvZiB0aGUgcG9zc2libGUKLSAgICogYXR0cmli
dXRlIG5hbWVzLAotICAgKgotICAgKiBQcm9wZXJ0aWVzOiBvYmplY3QgbWFwcGluZyBET00gcHJv
cGVydHkgbmFtZSB0byBvbmUgb2YgdGhlCi0gICAqIERPTVByb3BlcnR5SW5qZWN0aW9uIGNvbnN0
YW50cyBvciBudWxsLiBJZiB5b3VyIGF0dHJpYnV0ZSBpc24ndCBpbiBoZXJlLAotICAgKiBpdCB3
b24ndCBnZXQgd3JpdHRlbiB0byB0aGUgRE9NLgotICAgKgotICAgKiBET01BdHRyaWJ1dGVOYW1l
czogb2JqZWN0IG1hcHBpbmcgUmVhY3QgYXR0cmlidXRlIG5hbWUgdG8gdGhlIERPTQotICAgKiBh
dHRyaWJ1dGUgbmFtZS4gQXR0cmlidXRlIG5hbWVzIG5vdCBzcGVjaWZpZWQgdXNlIHRoZSAqKmxv
d2VyY2FzZSoqCi0gICAqIG5vcm1hbGl6ZWQgbmFtZS4KLSAgICoKLSAgICogRE9NUHJvcGVydHlO
YW1lczogc2ltaWxhciB0byBET01BdHRyaWJ1dGVOYW1lcyBidXQgZm9yIERPTSBwcm9wZXJ0aWVz
LgotICAgKiBQcm9wZXJ0eSBuYW1lcyBub3Qgc3BlY2lmaWVkIHVzZSB0aGUgbm9ybWFsaXplZCBu
YW1lLgotICAgKgotICAgKiBET01NdXRhdGlvbk1ldGhvZHM6IFByb3BlcnRpZXMgdGhhdCByZXF1
aXJlIHNwZWNpYWwgbXV0YXRpb24gbWV0aG9kcy4gSWYKLSAgICogYHZhbHVlYCBpcyB1bmRlZmlu
ZWQsIHRoZSBtdXRhdGlvbiBtZXRob2Qgc2hvdWxkIHVuc2V0IHRoZSBwcm9wZXJ0eS4KLSAgICoK
LSAgICogQHBhcmFtIHtvYmplY3R9IGRvbVByb3BlcnR5Q29uZmlnIHRoZSBjb25maWcgYXMgZGVz
Y3JpYmVkIGFib3ZlLgotICAgKi8KLSAgaW5qZWN0RE9NUHJvcGVydHlDb25maWc6IGZ1bmN0aW9u
KGRvbVByb3BlcnR5Q29uZmlnKSB7Ci0gICAgdmFyIFByb3BlcnRpZXMgPSBkb21Qcm9wZXJ0eUNv
bmZpZy5Qcm9wZXJ0aWVzIHx8IHt9OwotICAgIHZhciBET01BdHRyaWJ1dGVOYW1lcyA9IGRvbVBy
b3BlcnR5Q29uZmlnLkRPTUF0dHJpYnV0ZU5hbWVzIHx8IHt9OwotICAgIHZhciBET01Qcm9wZXJ0
eU5hbWVzID0gZG9tUHJvcGVydHlDb25maWcuRE9NUHJvcGVydHlOYW1lcyB8fCB7fTsKLSAgICB2
YXIgRE9NTXV0YXRpb25NZXRob2RzID0gZG9tUHJvcGVydHlDb25maWcuRE9NTXV0YXRpb25NZXRo
b2RzIHx8IHt9OwotCi0gICAgaWYgKGRvbVByb3BlcnR5Q29uZmlnLmlzQ3VzdG9tQXR0cmlidXRl
KSB7Ci0gICAgICBET01Qcm9wZXJ0eS5faXNDdXN0b21BdHRyaWJ1dGVGdW5jdGlvbnMucHVzaCgK
LSAgICAgICAgZG9tUHJvcGVydHlDb25maWcuaXNDdXN0b21BdHRyaWJ1dGUKLSAgICAgICk7Ci0g
ICAgfQotCi0gICAgZm9yICh2YXIgcHJvcE5hbWUgaW4gUHJvcGVydGllcykgewotICAgICAgaW52
YXJpYW50KAotICAgICAgICAhRE9NUHJvcGVydHkuaXNTdGFuZGFyZE5hbWVbcHJvcE5hbWVdLAot
ICAgICAgICAnaW5qZWN0RE9NUHJvcGVydHlDb25maWcoLi4uKTogWW91XCdyZSB0cnlpbmcgdG8g
aW5qZWN0IERPTSBwcm9wZXJ0eSAnICsKLSAgICAgICAgJ1wnJXNcJyB3aGljaCBoYXMgYWxyZWFk
eSBiZWVuIGluamVjdGVkLiBZb3UgbWF5IGJlIGFjY2lkZW50YWxseSAnICsKLSAgICAgICAgJ2lu
amVjdGluZyB0aGUgc2FtZSBET00gcHJvcGVydHkgY29uZmlnIHR3aWNlLCBvciB5b3UgbWF5IGJl
ICcgKwotICAgICAgICAnaW5qZWN0aW5nIHR3byBjb25maWdzIHRoYXQgaGF2ZSBjb25mbGljdGlu
ZyBwcm9wZXJ0eSBuYW1lcy4nLAotICAgICAgICBwcm9wTmFtZQotICAgICAgKTsKLQotICAgICAg
RE9NUHJvcGVydHkuaXNTdGFuZGFyZE5hbWVbcHJvcE5hbWVdID0gdHJ1ZTsKLQotICAgICAgRE9N
UHJvcGVydHkuZ2V0QXR0cmlidXRlTmFtZVtwcm9wTmFtZV0gPQotICAgICAgICBET01BdHRyaWJ1
dGVOYW1lc1twcm9wTmFtZV0gfHwgcHJvcE5hbWUudG9Mb3dlckNhc2UoKTsKLQotICAgICAgRE9N
UHJvcGVydHkuZ2V0UHJvcGVydHlOYW1lW3Byb3BOYW1lXSA9Ci0gICAgICAgIERPTVByb3BlcnR5
TmFtZXNbcHJvcE5hbWVdIHx8IHByb3BOYW1lOwotCi0gICAgICB2YXIgbXV0YXRpb25NZXRob2Qg
PSBET01NdXRhdGlvbk1ldGhvZHNbcHJvcE5hbWVdOwotICAgICAgaWYgKG11dGF0aW9uTWV0aG9k
KSB7Ci0gICAgICAgIERPTVByb3BlcnR5LmdldE11dGF0aW9uTWV0aG9kW3Byb3BOYW1lXSA9IG11
dGF0aW9uTWV0aG9kOwotICAgICAgfQotCi0gICAgICB2YXIgcHJvcENvbmZpZyA9IFByb3BlcnRp
ZXNbcHJvcE5hbWVdOwotICAgICAgRE9NUHJvcGVydHkubXVzdFVzZUF0dHJpYnV0ZVtwcm9wTmFt
ZV0gPQotICAgICAgICBwcm9wQ29uZmlnICYgRE9NUHJvcGVydHlJbmplY3Rpb24uTVVTVF9VU0Vf
QVRUUklCVVRFOwotICAgICAgRE9NUHJvcGVydHkubXVzdFVzZVByb3BlcnR5W3Byb3BOYW1lXSA9
Ci0gICAgICAgIHByb3BDb25maWcgJiBET01Qcm9wZXJ0eUluamVjdGlvbi5NVVNUX1VTRV9QUk9Q
RVJUWTsKLSAgICAgIERPTVByb3BlcnR5Lmhhc0Jvb2xlYW5WYWx1ZVtwcm9wTmFtZV0gPQotICAg
ICAgICBwcm9wQ29uZmlnICYgRE9NUHJvcGVydHlJbmplY3Rpb24uSEFTX0JPT0xFQU5fVkFMVUU7
Ci0gICAgICBET01Qcm9wZXJ0eS5oYXNTaWRlRWZmZWN0c1twcm9wTmFtZV0gPQotICAgICAgICBw
cm9wQ29uZmlnICYgRE9NUHJvcGVydHlJbmplY3Rpb24uSEFTX1NJREVfRUZGRUNUUzsKLQotICAg
ICAgaW52YXJpYW50KAotICAgICAgICAhRE9NUHJvcGVydHkubXVzdFVzZUF0dHJpYnV0ZVtwcm9w
TmFtZV0gfHwKLSAgICAgICAgICAhRE9NUHJvcGVydHkubXVzdFVzZVByb3BlcnR5W3Byb3BOYW1l
XSwKLSAgICAgICAgJ0RPTVByb3BlcnR5OiBDYW5ub3QgdXNlIHJlcXVpcmUgdXNpbmcgYm90aCBh
dHRyaWJ1dGUgYW5kIHByb3BlcnR5OiAlcycsCi0gICAgICAgIHByb3BOYW1lCi0gICAgICApOwot
ICAgICAgaW52YXJpYW50KAotICAgICAgICBET01Qcm9wZXJ0eS5tdXN0VXNlUHJvcGVydHlbcHJv
cE5hbWVdIHx8Ci0gICAgICAgICAgIURPTVByb3BlcnR5Lmhhc1NpZGVFZmZlY3RzW3Byb3BOYW1l
XSwKLSAgICAgICAgJ0RPTVByb3BlcnR5OiBQcm9wZXJ0aWVzIHRoYXQgaGF2ZSBzaWRlIGVmZmVj
dHMgbXVzdCB1c2UgcHJvcGVydHk6ICVzJywKLSAgICAgICAgcHJvcE5hbWUKLSAgICAgICk7Ci0g
ICAgfQotICB9Ci19OwotdmFyIGRlZmF1bHRWYWx1ZUNhY2hlID0ge307Ci0KLS8qKgotICogRE9N
UHJvcGVydHkgZXhwb3J0cyBsb29rdXAgb2JqZWN0cyB0aGF0IGNhbiBiZSB1c2VkIGxpa2UgZnVu
Y3Rpb25zOgotICoKLSAqICAgPiBET01Qcm9wZXJ0eS5pc1ZhbGlkWydpZCddCi0gKiAgIHRydWUK
LSAqICAgPiBET01Qcm9wZXJ0eS5pc1ZhbGlkWydmb29iYXInXQotICogICB1bmRlZmluZWQKLSAq
Ci0gKiBBbHRob3VnaCB0aGlzIG1heSBiZSBjb25mdXNpbmcsIGl0IHBlcmZvcm1zIGJldHRlciBp
biBnZW5lcmFsLgotICoKLSAqIEBzZWUgaHR0cDovL2pzcGVyZi5jb20va2V5LWV4aXN0cwotICog
QHNlZSBodHRwOi8vanNwZXJmLmNvbS9rZXktbWlzc2luZwotICovCi12YXIgRE9NUHJvcGVydHkg
PSB7Ci0KLSAgLyoqCi0gICAqIENoZWNrcyB3aGV0aGVyIGEgcHJvcGVydHkgbmFtZSBpcyBhIHN0
YW5kYXJkIHByb3BlcnR5LgotICAgKiBAdHlwZSB7T2JqZWN0fQotICAgKi8KLSAgaXNTdGFuZGFy
ZE5hbWU6IHt9LAotCi0gIC8qKgotICAgKiBNYXBwaW5nIGZyb20gbm9ybWFsaXplZCBuYW1lcyB0
byBhdHRyaWJ1dGUgbmFtZXMgdGhhdCBkaWZmZXIuIEF0dHJpYnV0ZQotICAgKiBuYW1lcyBhcmUg
dXNlZCB3aGVuIHJlbmRlcmluZyBtYXJrdXAgb3Igd2l0aCBgKkF0dHJpYnV0ZSgpYC4KLSAgICog
QHR5cGUge09iamVjdH0KLSAgICovCi0gIGdldEF0dHJpYnV0ZU5hbWU6IHt9LAotCi0gIC8qKgot
ICAgKiBNYXBwaW5nIGZyb20gbm9ybWFsaXplZCBuYW1lcyB0byBwcm9wZXJ0aWVzIG9uIERPTSBu
b2RlIGluc3RhbmNlcy4KLSAgICogKFRoaXMgaW5jbHVkZXMgcHJvcGVydGllcyB0aGF0IG11dGF0
ZSBkdWUgdG8gZXh0ZXJuYWwgZmFjdG9ycy4pCi0gICAqIEB0eXBlIHtPYmplY3R9Ci0gICAqLwot
ICBnZXRQcm9wZXJ0eU5hbWU6IHt9LAotCi0gIC8qKgotICAgKiBNYXBwaW5nIGZyb20gbm9ybWFs
aXplZCBuYW1lcyB0byBtdXRhdGlvbiBtZXRob2RzLiBUaGlzIHdpbGwgb25seSBleGlzdCBpZgot
ICAgKiBtdXRhdGlvbiBjYW5ub3QgYmUgc2V0IHNpbXBseSBieSB0aGUgcHJvcGVydHkgb3IgYHNl
dEF0dHJpYnV0ZSgpYC4KLSAgICogQHR5cGUge09iamVjdH0KLSAgICovCi0gIGdldE11dGF0aW9u
TWV0aG9kOiB7fSwKLQotICAvKioKLSAgICogV2hldGhlciB0aGUgcHJvcGVydHkgbXVzdCBiZSBh
Y2Nlc3NlZCBhbmQgbXV0YXRlZCBhcyBhbiBvYmplY3QgcHJvcGVydHkuCi0gICAqIEB0eXBlIHtP
YmplY3R9Ci0gICAqLwotICBtdXN0VXNlQXR0cmlidXRlOiB7fSwKLQotICAvKioKLSAgICogV2hl
dGhlciB0aGUgcHJvcGVydHkgbXVzdCBiZSBhY2Nlc3NlZCBhbmQgbXV0YXRlZCB1c2luZyBgKkF0
dHJpYnV0ZSgpYC4KLSAgICogKFRoaXMgaW5jbHVkZXMgYW55dGhpbmcgdGhhdCBmYWlscyBgPHBy
b3BOYW1lPiBpbiA8ZWxlbWVudD5gLikKLSAgICogQHR5cGUge09iamVjdH0KLSAgICovCi0gIG11
c3RVc2VQcm9wZXJ0eToge30sCi0KLSAgLyoqCi0gICAqIFdoZXRoZXIgdGhlIHByb3BlcnR5IHNo
b3VsZCBiZSByZW1vdmVkIHdoZW4gc2V0IHRvIGEgZmFsc2V5IHZhbHVlLgotICAgKiBAdHlwZSB7
T2JqZWN0fQotICAgKi8KLSAgaGFzQm9vbGVhblZhbHVlOiB7fSwKLQotICAvKioKLSAgICogV2hl
dGhlciBvciBub3Qgc2V0dGluZyBhIHZhbHVlIGNhdXNlcyBzaWRlIGVmZmVjdHMgc3VjaCBhcyB0
cmlnZ2VyaW5nCi0gICAqIHJlc291cmNlcyB0byBiZSBsb2FkZWQgb3IgdGV4dCBzZWxlY3Rpb24g
Y2hhbmdlcy4gV2UgbXVzdCBlbnN1cmUgdGhhdAotICAgKiB0aGUgdmFsdWUgaXMgb25seSBzZXQg
aWYgaXQgaGFzIGNoYW5nZWQuCi0gICAqIEB0eXBlIHtPYmplY3R9Ci0gICAqLwotICBoYXNTaWRl
RWZmZWN0czoge30sCi0KLSAgLyoqCi0gICAqIEFsbCBvZiB0aGUgaXNDdXN0b21BdHRyaWJ1dGUo
KSBmdW5jdGlvbnMgdGhhdCBoYXZlIGJlZW4gaW5qZWN0ZWQuCi0gICAqLwotICBfaXNDdXN0b21B
dHRyaWJ1dGVGdW5jdGlvbnM6IFtdLAotCi0gIC8qKgotICAgKiBDaGVja3Mgd2hldGhlciBhIHBy
b3BlcnR5IG5hbWUgaXMgYSBjdXN0b20gYXR0cmlidXRlLgotICAgKiBAbWV0aG9kCi0gICAqLwot
ICBpc0N1c3RvbUF0dHJpYnV0ZTogZnVuY3Rpb24oYXR0cmlidXRlTmFtZSkgewotICAgIHJldHVy
biBET01Qcm9wZXJ0eS5faXNDdXN0b21BdHRyaWJ1dGVGdW5jdGlvbnMuc29tZSgKLSAgICAgIGZ1
bmN0aW9uKGlzQ3VzdG9tQXR0cmlidXRlRm4pIHsKLSAgICAgICAgcmV0dXJuIGlzQ3VzdG9tQXR0
cmlidXRlRm4uY2FsbChudWxsLCBhdHRyaWJ1dGVOYW1lKTsKLSAgICAgIH0KLSAgICApOwotICB9
LAotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBkZWZhdWx0IHByb3BlcnR5IHZhbHVlIGZvciBh
IERPTSBwcm9wZXJ0eSAoaS5lLiwgbm90IGFuCi0gICAqIGF0dHJpYnV0ZSkuIE1vc3QgZGVmYXVs
dCB2YWx1ZXMgYXJlICcnIG9yIGZhbHNlLCBidXQgbm90IGFsbC4gV29yc2UgeWV0LAotICAgKiBz
b21lIChpbiBwYXJ0aWN1bGFyLCBgdHlwZWApIHZhcnkgZGVwZW5kaW5nIG9uIHRoZSB0eXBlIG9m
IGVsZW1lbnQuCi0gICAqCi0gICAqIFRPRE86IElzIGl0IGJldHRlciB0byBncmFiIGFsbCB0aGUg
cG9zc2libGUgcHJvcGVydGllcyB3aGVuIGNyZWF0aW5nIGFuCi0gICAqIGVsZW1lbnQgdG8gYXZv
aWQgaGF2aW5nIHRvIGNyZWF0ZSB0aGUgc2FtZSBlbGVtZW50IHR3aWNlPwotICAgKi8KLSAgZ2V0
RGVmYXVsdFZhbHVlRm9yUHJvcGVydHk6IGZ1bmN0aW9uKG5vZGVOYW1lLCBwcm9wKSB7Ci0gICAg
dmFyIG5vZGVEZWZhdWx0cyA9IGRlZmF1bHRWYWx1ZUNhY2hlW25vZGVOYW1lXTsKLSAgICB2YXIg
dGVzdEVsZW1lbnQ7Ci0gICAgaWYgKCFub2RlRGVmYXVsdHMpIHsKLSAgICAgIGRlZmF1bHRWYWx1
ZUNhY2hlW25vZGVOYW1lXSA9IG5vZGVEZWZhdWx0cyA9IHt9OwotICAgIH0KLSAgICBpZiAoIShw
cm9wIGluIG5vZGVEZWZhdWx0cykpIHsKLSAgICAgIHRlc3RFbGVtZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudChub2RlTmFtZSk7Ci0gICAgICBub2RlRGVmYXVsdHNbcHJvcF0gPSB0ZXN0RWxl
bWVudFtwcm9wXTsKLSAgICB9Ci0gICAgcmV0dXJuIG5vZGVEZWZhdWx0c1twcm9wXTsKLSAgfSwK
LQotICBpbmplY3Rpb246IERPTVByb3BlcnR5SW5qZWN0aW9uCi19OwotCi1tb2R1bGUuZXhwb3J0
cyA9IERPTVByb3BlcnR5OwotCi19LHsiLi9pbnZhcmlhbnQiOjc1fV0sODpbZnVuY3Rpb24ocmVx
dWlyZSxtb2R1bGUsZXhwb3J0cyl7Ci0vKioKLSAqIENvcHlyaWdodCAyMDEzIEZhY2Vib29rLCBJ
bmMuCi0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIu
MCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBp
biBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkg
b2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUg
TGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBX
QVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGlt
cGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zl
cm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4K
LSAqCi0gKiBAcHJvdmlkZXNNb2R1bGUgRE9NUHJvcGVydHlPcGVyYXRpb25zCi0gKiBAdHlwZWNo
ZWNrcyBzdGF0aWMtb25seQotICovCi0KLSJ1c2Ugc3RyaWN0IjsKLQotdmFyIERPTVByb3BlcnR5
ID0gcmVxdWlyZSgiLi9ET01Qcm9wZXJ0eSIpOwotCi12YXIgZXNjYXBlVGV4dEZvckJyb3dzZXIg
PSByZXF1aXJlKCIuL2VzY2FwZVRleHRGb3JCcm93c2VyIik7Ci12YXIgbWVtb2l6ZVN0cmluZ09u
bHkgPSByZXF1aXJlKCIuL21lbW9pemVTdHJpbmdPbmx5Iik7Ci0KLXZhciBwcm9jZXNzQXR0cmli
dXRlTmFtZUFuZFByZWZpeCA9IG1lbW9pemVTdHJpbmdPbmx5KGZ1bmN0aW9uKG5hbWUpIHsKLSAg
cmV0dXJuIGVzY2FwZVRleHRGb3JCcm93c2VyKG5hbWUpICsgJz0iJzsKLX0pOwotCi0vKioKLSAq
IE9wZXJhdGlvbnMgZm9yIGRlYWxpbmcgd2l0aCBET00gcHJvcGVydGllcy4KLSAqLwotdmFyIERP
TVByb3BlcnR5T3BlcmF0aW9ucyA9IHsKLQotICAvKioKLSAgICogQ3JlYXRlcyBtYXJrdXAgZm9y
IGEgcHJvcGVydHkuCi0gICAqCi0gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCi0gICAqIEBwYXJh
bSB7Kn0gdmFsdWUKLSAgICogQHJldHVybiB7P3N0cmluZ30gTWFya3VwIHN0cmluZywgb3IgbnVs
bCBpZiB0aGUgcHJvcGVydHkgd2FzIGludmFsaWQuCi0gICAqLwotICBjcmVhdGVNYXJrdXBGb3JQ
cm9wZXJ0eTogZnVuY3Rpb24obmFtZSwgdmFsdWUpIHsKLSAgICBpZiAoRE9NUHJvcGVydHkuaXNT
dGFuZGFyZE5hbWVbbmFtZV0pIHsKLSAgICAgIGlmICh2YWx1ZSA9PSBudWxsIHx8IERPTVByb3Bl
cnR5Lmhhc0Jvb2xlYW5WYWx1ZVtuYW1lXSAmJiAhdmFsdWUpIHsKLSAgICAgICAgcmV0dXJuICcn
OwotICAgICAgfQotICAgICAgdmFyIGF0dHJpYnV0ZU5hbWUgPSBET01Qcm9wZXJ0eS5nZXRBdHRy
aWJ1dGVOYW1lW25hbWVdOwotICAgICAgcmV0dXJuIHByb2Nlc3NBdHRyaWJ1dGVOYW1lQW5kUHJl
Zml4KGF0dHJpYnV0ZU5hbWUpICsKLSAgICAgICAgZXNjYXBlVGV4dEZvckJyb3dzZXIodmFsdWUp
ICsgJyInOwotICAgIH0gZWxzZSBpZiAoRE9NUHJvcGVydHkuaXNDdXN0b21BdHRyaWJ1dGUobmFt
ZSkpIHsKLSAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7Ci0gICAgICAgIHJldHVybiAnJzsKLSAg
ICAgIH0KLSAgICAgIHJldHVybiBwcm9jZXNzQXR0cmlidXRlTmFtZUFuZFByZWZpeChuYW1lKSAr
Ci0gICAgICAgIGVzY2FwZVRleHRGb3JCcm93c2VyKHZhbHVlKSArICciJzsKLSAgICB9IGVsc2Ug
ewotICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfQotICB9LAotCi0gIC8qKgotICAgKiBTZXRzIHRo
ZSB2YWx1ZSBmb3IgYSBwcm9wZXJ0eSBvbiBhIG5vZGUuCi0gICAqCi0gICAqIEBwYXJhbSB7RE9N
RWxlbWVudH0gbm9kZQotICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQotICAgKiBAcGFyYW0geyp9
IHZhbHVlCi0gICAqLwotICBzZXRWYWx1ZUZvclByb3BlcnR5OiBmdW5jdGlvbihub2RlLCBuYW1l
LCB2YWx1ZSkgewotICAgIGlmIChET01Qcm9wZXJ0eS5pc1N0YW5kYXJkTmFtZVtuYW1lXSkgewot
ICAgICAgdmFyIG11dGF0aW9uTWV0aG9kID0gRE9NUHJvcGVydHkuZ2V0TXV0YXRpb25NZXRob2Rb
bmFtZV07Ci0gICAgICBpZiAobXV0YXRpb25NZXRob2QpIHsKLSAgICAgICAgbXV0YXRpb25NZXRo
b2Qobm9kZSwgdmFsdWUpOwotICAgICAgfSBlbHNlIGlmIChET01Qcm9wZXJ0eS5tdXN0VXNlQXR0
cmlidXRlW25hbWVdKSB7Ci0gICAgICAgIGlmIChET01Qcm9wZXJ0eS5oYXNCb29sZWFuVmFsdWVb
bmFtZV0gJiYgIXZhbHVlKSB7Ci0gICAgICAgICAgbm9kZS5yZW1vdmVBdHRyaWJ1dGUoRE9NUHJv
cGVydHkuZ2V0QXR0cmlidXRlTmFtZVtuYW1lXSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgbm9kZS5zZXRBdHRyaWJ1dGUoRE9NUHJvcGVydHkuZ2V0QXR0cmlidXRlTmFtZVtuYW1lXSwg
dmFsdWUpOwotICAgICAgICB9Ci0gICAgICB9IGVsc2UgewotICAgICAgICB2YXIgcHJvcE5hbWUg
PSBET01Qcm9wZXJ0eS5nZXRQcm9wZXJ0eU5hbWVbbmFtZV07Ci0gICAgICAgIGlmICghRE9NUHJv
cGVydHkuaGFzU2lkZUVmZmVjdHNbbmFtZV0gfHwgbm9kZVtwcm9wTmFtZV0gIT09IHZhbHVlKSB7
Ci0gICAgICAgICAgbm9kZVtwcm9wTmFtZV0gPSB2YWx1ZTsKLSAgICAgICAgfQotICAgICAgfQot
ICAgIH0gZWxzZSBpZiAoRE9NUHJvcGVydHkuaXNDdXN0b21BdHRyaWJ1dGUobmFtZSkpIHsKLSAg
ICAgIG5vZGUuc2V0QXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKLSAgICB9Ci0gIH0sCi0KLSAgLyoq
Ci0gICAqIERlbGV0ZXMgdGhlIHZhbHVlIGZvciBhIHByb3BlcnR5IG9uIGEgbm9kZS4KLSAgICoK
LSAgICogQHBhcmFtIHtET01FbGVtZW50fSBub2RlCi0gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1l
Ci0gICAqLwotICBkZWxldGVWYWx1ZUZvclByb3BlcnR5OiBmdW5jdGlvbihub2RlLCBuYW1lKSB7
Ci0gICAgaWYgKERPTVByb3BlcnR5LmlzU3RhbmRhcmROYW1lW25hbWVdKSB7Ci0gICAgICB2YXIg
bXV0YXRpb25NZXRob2QgPSBET01Qcm9wZXJ0eS5nZXRNdXRhdGlvbk1ldGhvZFtuYW1lXTsKLSAg
ICAgIGlmIChtdXRhdGlvbk1ldGhvZCkgewotICAgICAgICBtdXRhdGlvbk1ldGhvZChub2RlLCB1
bmRlZmluZWQpOwotICAgICAgfSBlbHNlIGlmIChET01Qcm9wZXJ0eS5tdXN0VXNlQXR0cmlidXRl
W25hbWVdKSB7Ci0gICAgICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlKERPTVByb3BlcnR5LmdldEF0
dHJpYnV0ZU5hbWVbbmFtZV0pOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgdmFyIHByb3BOYW1l
ID0gRE9NUHJvcGVydHkuZ2V0UHJvcGVydHlOYW1lW25hbWVdOwotICAgICAgICBub2RlW3Byb3BO
YW1lXSA9IERPTVByb3BlcnR5LmdldERlZmF1bHRWYWx1ZUZvclByb3BlcnR5KAotICAgICAgICAg
IG5vZGUubm9kZU5hbWUsCi0gICAgICAgICAgbmFtZQotICAgICAgICApOwotICAgICAgfQotICAg
IH0gZWxzZSBpZiAoRE9NUHJvcGVydHkuaXNDdXN0b21BdHRyaWJ1dGUobmFtZSkpIHsKLSAgICAg
IG5vZGUucmVtb3ZlQXR0cmlidXRlKG5hbWUpOwotICAgIH0KLSAgfQotCi19OwotCi1tb2R1bGUu
ZXhwb3J0cyA9IERPTVByb3BlcnR5T3BlcmF0aW9uczsKLQotfSx7Ii4vRE9NUHJvcGVydHkiOjcs
Ii4vZXNjYXBlVGV4dEZvckJyb3dzZXIiOjY1LCIuL21lbW9pemVTdHJpbmdPbmx5Ijo4MH1dLDk6
W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewotLyoqCi0gKiBDb3B5cmlnaHQgMjAx
MyBGYWNlYm9vaywgSW5jLgotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5z
ZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMg
ZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBv
YnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogaHR0cDovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxp
Y2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0
ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywK
LSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIg
ZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMg
bGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIg
dGhlIExpY2Vuc2UuCi0gKgotICogQHByb3ZpZGVzTW9kdWxlIERhbmdlcgotICovCi0KLS8qanNs
aW50IGV2aWw6IHRydWUsIHN1YjogdHJ1ZSAqLwotCi0idXNlIHN0cmljdCI7Ci0KLXZhciBFeGVj
dXRpb25FbnZpcm9ubWVudCA9IHJlcXVpcmUoIi4vRXhlY3V0aW9uRW52aXJvbm1lbnQiKTsKLQot
dmFyIHRocm93SWYgPSByZXF1aXJlKCIuL3Rocm93SWYiKTsKLQotdmFyIERPTV9VTlNVUFBPUlRF
RDsKLXZhciBOT19NQVJLVVBfUEFSRU5UOwotdmFyIE5PX01VTFRJX01BUktVUDsKLWlmICh0cnVl
KSB7Ci0gIERPTV9VTlNVUFBPUlRFRCA9Ci0gICAgJ1lvdSBtYXkgbm90IGluc2VydCBtYXJrdXAg
aW50byB0aGUgZG9jdW1lbnQgd2hpbGUgeW91IGFyZSBpbiBhIHdvcmtlciAnICsKLSAgICAndGhy
ZWFkLiBJdFwncyBub3QgeW91LCBpdFwncyBtZS4gVGhpcyBpcyBsaWtlbHkgdGhlIGZhdWx0IG9m
IHRoZSAnICsKLSAgICAnZnJhbWV3b3JrLiBQbGVhc2UgcmVwb3J0IHRoaXMgaW1tZWRpYXRlbHku
JzsKLSAgTk9fTUFSS1VQX1BBUkVOVCA9Ci0gICAgJ1lvdSBoYXZlIGF0dGVtcHRlZCB0byBpbmpl
Y3QgbWFya3VwIHdpdGhvdXQgYSBzdWl0YWJsZSBwYXJlbnQuIFRoaXMgaXMgJyArCi0gICAgJ2xp
a2VseSB0aGUgZmF1bHQgb2YgdGhlIGZyYW1ld29yayAtIHBsZWFzZSByZXBvcnQgaW1tZWRpYXRl
bHkuJzsKLSAgTk9fTVVMVElfTUFSS1VQID0KLSAgICAnVGhlIGZyYW1ld29yayBoYXMgYXR0ZW1w
dGVkIHRvIGVpdGhlciBpbnNlcnQgemVybyBvciBtdWx0aXBsZSBtYXJrdXAgJyArCi0gICAgJ3Jv
b3RzIGludG8gYSBzaW5nbGUgbG9jYXRpb24gd2hlbiBpdCBzaG91bGQgbm90LiBUaGlzIGlzIGEg
c2VyaW91cyAnICsKLSAgICAnZXJyb3IgLSBhIGZhdWx0IG9mIHRoZSBmcmFtZXdvcmsgLSBwbGVh
c2UgcmVwb3J0IGltbWVkaWF0ZWx5Lic7Ci19Ci0KLXZhciB2YWxpZGF0ZU1hcmt1cFBhcmFtczsK
LWlmICh0cnVlKSB7Ci0gIHZhbGlkYXRlTWFya3VwUGFyYW1zID0gZnVuY3Rpb24ocGFyZW50Tm9k
ZSwgbWFya3VwKSB7Ci0gICAgdGhyb3dJZighRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9N
LCBET01fVU5TVVBQT1JURUQpOwotICAgIHRocm93SWYoIXBhcmVudE5vZGUgfHwgIXBhcmVudE5v
ZGUudGFnTmFtZSwgTk9fTUFSS1VQX1BBUkVOVCk7Ci0gICAgdGhyb3dJZighbWFya3VwLCBOT19N
VUxUSV9NQVJLVVApOwotICB9OwotfQotCi0vKioKLSAqIER1bW15IGNvbnRhaW5lciB1c2VkIHRv
IHJlbmRlciBhbGwgbWFya3VwLgotICovCi12YXIgZHVtbXlOb2RlID0gRXhlY3V0aW9uRW52aXJv
bm1lbnQuY2FuVXNlRE9NID8KLSAgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykgOgotICBu
dWxsOwotCi0vKioKLSAqIFNvbWUgYnJvd3NlcnMgY2Fubm90IHVzZSBgaW5uZXJIVE1MYCB0byBy
ZW5kZXIgY2VydGFpbiBlbGVtZW50cyBzdGFuZGFsb25lLAotICogc28gd2Ugd3JhcCB0aGVtLCBy
ZW5kZXIgdGhlIHdyYXBwZWQgbm9kZXMsIHRoZW4gZXh0cmFjdCB0aGUgZGVzaXJlZCBub2RlLgot
ICovCi12YXIgbWFya3VwV3JhcCA9IHsKLSAgJ29wdGlvbic6IFsxLCAnPHNlbGVjdCBtdWx0aXBs
ZT0idHJ1ZSI+JywgJzwvc2VsZWN0PiddLAotICAnbGVnZW5kJzogWzEsICc8ZmllbGRzZXQ+Jywg
JzwvZmllbGRzZXQ+J10sCi0gICdhcmVhJzogWzEsICc8bWFwPicsICc8L21hcD4nXSwKLSAgJ3Bh
cmFtJzogWzEsICc8b2JqZWN0PicsICc8L29iamVjdD4nXSwKLSAgJ3RoZWFkJzogWzEsICc8dGFi
bGU+JywgJzwvdGFibGU+J10sCi0gICd0cic6IFsyLCAnPHRhYmxlPjx0Ym9keT4nLCAnPC90Ym9k
eT48L3RhYmxlPiddLAotICAnY29sJzogWzIsICc8dGFibGU+PHRib2R5PjwvdGJvZHk+PGNvbGdy
b3VwPicsICc8L2NvbGdyb3VwPjwvdGFibGU+J10sCi0gICd0ZCc6IFszLCAnPHRhYmxlPjx0Ym9k
eT48dHI+JywgJzwvdHI+PC90Ym9keT48L3RhYmxlPiddCi19OwotbWFya3VwV3JhcFsnb3B0Z3Jv
dXAnXSA9IG1hcmt1cFdyYXBbJ29wdGlvbiddOwotbWFya3VwV3JhcFsndGJvZHknXSA9IG1hcmt1
cFdyYXBbJ3RoZWFkJ107Ci1tYXJrdXBXcmFwWyd0Zm9vdCddID0gbWFya3VwV3JhcFsndGhlYWQn
XTsKLW1hcmt1cFdyYXBbJ2NvbGdyb3VwJ10gPSBtYXJrdXBXcmFwWyd0aGVhZCddOwotbWFya3Vw
V3JhcFsnY2FwdGlvbiddID0gbWFya3VwV3JhcFsndGhlYWQnXTsKLW1hcmt1cFdyYXBbJ3RoJ10g
PSBtYXJrdXBXcmFwWyd0ZCddOwotCi0vKioKLSAqIEluIElFOCwgY2VydGFpbiBlbGVtZW50cyBj
YW5ub3QgcmVuZGVyIGFsb25lLCBzbyB3cmFwIGFsbCBlbGVtZW50cy4KLSAqLwotdmFyIGRlZmF1
bHRXcmFwID0gWzEsICc/PGRpdj4nLCAnPC9kaXY+J107Ci0KLS8qKgotICogRmVhdHVyZSBkZXRl
Y3Rpb24sIHJlbW92ZSB3cmFwcyB0aGF0IGFyZSB1bm5lY2Vzc2FyeSBmb3IgdGhlIGN1cnJlbnQg
YnJvd3Nlci4KLSAqLwotaWYgKGR1bW15Tm9kZSkgewotICBmb3IgKHZhciBub2RlTmFtZSBpbiBt
YXJrdXBXcmFwKSB7Ci0gICAgaWYgKCFtYXJrdXBXcmFwLmhhc093blByb3BlcnR5KG5vZGVOYW1l
KSkgewotICAgICAgY29udGludWU7Ci0gICAgfQotICAgIGR1bW15Tm9kZS5pbm5lckhUTUwgPSAn
PCcgKyBub2RlTmFtZSArICc+PC8nICsgbm9kZU5hbWUgKyAnPic7Ci0gICAgaWYgKGR1bW15Tm9k
ZS5maXJzdENoaWxkKSB7Ci0gICAgICBtYXJrdXBXcmFwW25vZGVOYW1lXSA9IG51bGw7Ci0gICAg
fQotICB9Ci0gIGR1bW15Tm9kZS5pbm5lckhUTUwgPSAnPGxpbmsgLz4nOwotICBpZiAoZHVtbXlO
b2RlLmZpcnN0Q2hpbGQpIHsKLSAgICBkZWZhdWx0V3JhcCA9IG51bGw7Ci0gIH0KLX0KLQotLyoq
Ci0gKiBSZW5kZXJzIG1hcmt1cCBpbnRvIG5vZGVzLiBUaGUgcmV0dXJuZWQgSFRNTENvbGxlY3Rp
b24gaXMgbGl2ZSBhbmQgc2hvdWxkIGJlCi0gKiB1c2VkIGltbWVkaWF0ZWx5IChvciBhdCBsZWFz
dCBiZWZvcmUgdGhlIG5leHQgaW52b2NhdGlvbiB0byBgcmVuZGVyTWFya3VwYCkuCi0gKgotICog
Tk9URTogRXh0cmFjdGluZyB0aGUgYG5vZGVOYW1lYCBkb2VzIG5vdCByZXF1aXJlIGEgcmVndWxh
ciBleHByZXNzaW9uIG1hdGNoCi0gKiBiZWNhdXNlIHdlIG1ha2UgYXNzdW1wdGlvbnMgYWJvdXQg
UmVhY3QtZ2VuZXJhdGVkIG1hcmt1cCAoaS5lLiB0aGVyZSBhcmUgbm8KLSAqIHNwYWNlcyBzdXJy
b3VuZGluZyB0aGUgb3BlbmluZyB0YWcgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBhdHRyaWJ1
dGUpLgotICogQHNlZSBodHRwOi8vanNwZXJmLmNvbS9leHRyYWN0LW5vZGVuYW1lCi0gKgotICog
QHBhcmFtIHtzdHJpbmd9IG1hcmt1cAotICogQHJldHVybiB7Kn0gQW4gSFRNTENvbGxlY3Rpb24u
Ci0gKi8KLWZ1bmN0aW9uIHJlbmRlck1hcmt1cChtYXJrdXApIHsKLSAgdmFyIG5vZGUgPSBkdW1t
eU5vZGU7Ci0gIHZhciBub2RlTmFtZSA9IG1hcmt1cC5zdWJzdHJpbmcoMSwgbWFya3VwLmluZGV4
T2YoJyAnKSk7Ci0KLSAgdmFyIHdyYXAgPSBtYXJrdXBXcmFwW25vZGVOYW1lLnRvTG93ZXJDYXNl
KCldIHx8IGRlZmF1bHRXcmFwOwotICBpZiAod3JhcCkgewotICAgIG5vZGUuaW5uZXJIVE1MID0g
d3JhcFsxXSArIG1hcmt1cCArIHdyYXBbMl07Ci0KLSAgICB2YXIgd3JhcERlcHRoID0gd3JhcFsw
XTsKLSAgICB3aGlsZSAod3JhcERlcHRoLS0pIHsKLSAgICAgIG5vZGUgPSBub2RlLmxhc3RDaGls
ZDsKLSAgICB9Ci0gIH0gZWxzZSB7Ci0gICAgbm9kZS5pbm5lckhUTUwgPSBtYXJrdXA7Ci0gIH0K
LSAgcmV0dXJuIG5vZGUuY2hpbGROb2RlczsKLX0KLQotLyoqCi0gKiBJbnNlcnRzIG5vZGUgYWZ0
ZXIgJ2FmdGVyJy4gSWYgJ2FmdGVyJyBpcyBudWxsLCBpbnNlcnRzIGl0IGFmdGVyIG5vdGhpbmcs
Ci0gKiB3aGljaCBpcyBpbnNlcnRpbmcgaXQgYXQgdGhlIGJlZ2lubmluZy4KLSAqCi0gKiBAcGFy
YW0ge0VsZW1lbnR9IGVsZW0gUGFyZW50IGVsZW1lbnQuCi0gKiBAcGFyYW0ge0VsZW1lbnR9IGlu
c2VydCBFbGVtZW50IHRvIGluc2VydC4KLSAqIEBwYXJhbSB7RWxlbWVudH0gYWZ0ZXIgRWxlbWVu
dCB0byBpbnNlcnQgYWZ0ZXIuCi0gKiBAcmV0dXJuIHtFbGVtZW50fSBFbGVtZW50IHRoYXQgd2Fz
IGluc2VydGVkLgotICovCi1mdW5jdGlvbiBpbnNlcnROb2RlQWZ0ZXJOb2RlKGVsZW0sIGluc2Vy
dCwgYWZ0ZXIpIHsKLSAgaWYgKHRydWUpIHsKLSAgICB0aHJvd0lmKCFFeGVjdXRpb25FbnZpcm9u
bWVudC5jYW5Vc2VET00sIERPTV9VTlNVUFBPUlRFRCk7Ci0gIH0KLSAgaWYgKGFmdGVyKSB7Ci0g
ICAgaWYgKGFmdGVyLm5leHRTaWJsaW5nKSB7Ci0gICAgICByZXR1cm4gZWxlbS5pbnNlcnRCZWZv
cmUoaW5zZXJ0LCBhZnRlci5uZXh0U2libGluZyk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIHJldHVy
biBlbGVtLmFwcGVuZENoaWxkKGluc2VydCk7Ci0gICAgfQotICB9IGVsc2UgewotICAgIHJldHVy
biBlbGVtLmluc2VydEJlZm9yZShpbnNlcnQsIGVsZW0uZmlyc3RDaGlsZCk7Ci0gIH0KLX0KLQot
LyoqCi0gKiBTbG93OiBTaG91bGQgb25seSBiZSB1c2VkIHdoZW4gaXQgaXMga25vd24gdGhlcmUg
YXJlIGEgZmV3IChvciBvbmUpIGVsZW1lbnQKLSAqIGluIHRoZSBub2RlIGxpc3QuCi0gKiBAcGFy
YW0ge0VsZW1lbnR9IHBhcmVudFJvb3REb21Ob2RlIFBhcmVudCBlbGVtZW50LgotICogQHBhcmFt
IHtIVE1MQ29sbGVjdGlvbn0gaHRtbENvbGxlY3Rpb24gSFRNTENvbGxlY3Rpb24gdG8gaW5zZXJ0
LgotICogQHBhcmFtIHtFbGVtZW50fSBhZnRlciBFbGVtZW50IHRvIGluc2VydCB0aGUgbm9kZSBs
aXN0IGFmdGVyLgotICovCi1mdW5jdGlvbiBpbmVmZmljaWVudGx5SW5zZXJ0SFRNTENvbGxlY3Rp
b25BZnRlcigKLSAgICBwYXJlbnRSb290RG9tTm9kZSwKLSAgICBodG1sQ29sbGVjdGlvbiwKLSAg
ICBhZnRlcikgewotCi0gIGlmICh0cnVlKSB7Ci0gICAgdGhyb3dJZighRXhlY3V0aW9uRW52aXJv
bm1lbnQuY2FuVXNlRE9NLCBET01fVU5TVVBQT1JURUQpOwotICB9Ci0gIHZhciByZXQ7Ci0gIHZh
ciBvcmlnaW5hbExlbmd0aCA9IGh0bWxDb2xsZWN0aW9uLmxlbmd0aDsKLSAgLy8gQWNjZXNzIGh0
bWxDb2xsZWN0aW9uWzBdIGJlY2F1c2UgaHRtbENvbGxlY3Rpb24gc2hyaW5rcyBhcyB3ZSByZW1v
dmUgaXRlbXMuCi0gIC8vIGBpbnNlcnROb2RlQWZ0ZXJOb2RlYCB3aWxsIHJlbW92ZSBpdGVtcyBm
cm9tIHRoZSBodG1sQ29sbGVjdGlvbi4KLSAgZm9yICh2YXIgaSA9IDA7IGkgPCBvcmlnaW5hbExl
bmd0aDsgaSsrKSB7Ci0gICAgcmV0ID0KLSAgICAgIGluc2VydE5vZGVBZnRlck5vZGUocGFyZW50
Um9vdERvbU5vZGUsIGh0bWxDb2xsZWN0aW9uWzBdLCByZXQgfHwgYWZ0ZXIpOwotICB9Ci19Ci0K
LS8qKgotICogU3VwZXItZGFuZ2Vyb3VzbHkgaW5zZXJ0cyBtYXJrdXAgaW50byBleGlzdGluZyBE
T00gc3RydWN0dXJlLiBTZXJpb3VzbHksIHlvdQotICogZG9uJ3Qgd2FudCB0byB1c2UgdGhpcyBt
b2R1bGUgdW5sZXNzIHlvdSBhcmUgYnVpbGRpbmcgYSBmcmFtZXdvcmsuIFRoaXMKLSAqIHJlcXVp
cmVzIHRoYXQgdGhlIG1hcmt1cCB0aGF0IHlvdSBhcmUgaW5zZXJ0aW5nIHJlcHJlc2VudHMgdGhl
IHJvb3Qgb2YgYQotICogdHJlZS4gV2UgZG8gbm90IHN1cHBvcnQgdGhlIGNhc2Ugd2hlcmUgdGhl
cmUgYG1hcmt1cGAgcmVwcmVzZW50cyBzZXZlcmFsCi0gKiByb290cy4KLSAqCi0gKiBAcGFyYW0g
e0VsZW1lbnR9IHBhcmVudE5vZGUgUGFyZW50IERPTSBlbGVtZW50LgotICogQHBhcmFtIHtzdHJp
bmd9IG1hcmt1cCBNYXJrdXAgdG8gZGFuZ2Vyb3VzbHkgaW5zZXJ0LgotICogQHBhcmFtIHtudW1i
ZXJ9IGluZGV4IFBvc2l0aW9uIHRvIGluc2VydCBtYXJrdXAgYXQuCi0gKi8KLWZ1bmN0aW9uIGRh
bmdlcm91c2x5SW5zZXJ0TWFya3VwQXQocGFyZW50Tm9kZSwgbWFya3VwLCBpbmRleCkgewotICBp
ZiAodHJ1ZSkgewotICAgIHZhbGlkYXRlTWFya3VwUGFyYW1zKHBhcmVudE5vZGUsIG1hcmt1cCk7
Ci0gIH0KLSAgdmFyIGh0bWxDb2xsZWN0aW9uID0gcmVuZGVyTWFya3VwKG1hcmt1cCk7Ci0gIHZh
ciBhZnRlck5vZGUgPSBpbmRleCA/IHBhcmVudE5vZGUuY2hpbGROb2Rlc1tpbmRleCAtIDFdIDog
bnVsbDsKLSAgaW5lZmZpY2llbnRseUluc2VydEhUTUxDb2xsZWN0aW9uQWZ0ZXIocGFyZW50Tm9k
ZSwgaHRtbENvbGxlY3Rpb24sIGFmdGVyTm9kZSk7Ci19Ci0KLS8qKgotICogUmVwbGFjZXMgYSBu
b2RlIHdpdGggYSBzdHJpbmcgb2YgbWFya3VwIGF0IGl0cyBjdXJyZW50IHBvc2l0aW9uIHdpdGhp
biBpdHMKLSAqIHBhcmVudC4gYGNoaWxkTm9kZWAgbXVzdCBiZSBpbiB0aGUgZG9jdW1lbnQgKG9y
IGF0IGxlYXN0IHdpdGhpbiBhIHBhcmVudAotICogbm9kZSkuIFRoZSBzdHJpbmcgb2YgbWFya3Vw
IG11c3QgcmVwcmVzZW50IGEgdHJlZSBvZiBtYXJrdXAgd2l0aCBhIHNpbmdsZQotICogcm9vdC4K
LSAqCi0gKiBAcGFyYW0ge0VsZW1lbnR9IGNoaWxkTm9kZSBDaGlsZCBub2RlIHRvIHJlcGxhY2Uu
Ci0gKiBAcGFyYW0ge3N0cmluZ30gbWFya3VwIE1hcmt1cCB0byBkYW5nZXJvdXNseSByZXBsYWNl
IGNoaWxkIHdpdGguCi0gKi8KLWZ1bmN0aW9uIGRhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFy
a3VwKGNoaWxkTm9kZSwgbWFya3VwKSB7Ci0gIHZhciBwYXJlbnROb2RlID0gY2hpbGROb2RlLnBh
cmVudE5vZGU7Ci0gIGlmICh0cnVlKSB7Ci0gICAgdmFsaWRhdGVNYXJrdXBQYXJhbXMocGFyZW50
Tm9kZSwgbWFya3VwKTsKLSAgfQotICB2YXIgaHRtbENvbGxlY3Rpb24gPSByZW5kZXJNYXJrdXAo
bWFya3VwKTsKLSAgaWYgKHRydWUpIHsKLSAgICB0aHJvd0lmKGh0bWxDb2xsZWN0aW9uLmxlbmd0
aCAhPT0gMSwgTk9fTVVMVElfTUFSS1VQKTsKLSAgfQotICBwYXJlbnROb2RlLnJlcGxhY2VDaGls
ZChodG1sQ29sbGVjdGlvblswXSwgY2hpbGROb2RlKTsKLX0KLQotdmFyIERhbmdlciA9IHsKLSAg
ZGFuZ2Vyb3VzbHlJbnNlcnRNYXJrdXBBdDogZGFuZ2Vyb3VzbHlJbnNlcnRNYXJrdXBBdCwKLSAg
ZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXA6IGRhbmdlcm91c2x5UmVwbGFjZU5vZGVX
aXRoTWFya3VwCi19OwotCi1tb2R1bGUuZXhwb3J0cyA9IERhbmdlcjsKLQotfSx7Ii4vRXhlY3V0
aW9uRW52aXJvbm1lbnQiOjE5LCIuL3Rocm93SWYiOjg2fV0sMTA6W2Z1bmN0aW9uKHJlcXVpcmUs
bW9kdWxlLGV4cG9ydHMpewotLyoqCi0gKiBDb3B5cmlnaHQgMjAxMyBGYWNlYm9vaywgSW5jLgot
ICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRo
ZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29t
cGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRo
ZSBMaWNlbnNlIGF0Ci0gKgotICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFO
VElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVk
LgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5n
IHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKgot
ICogQHByb3ZpZGVzTW9kdWxlIERlZmF1bHRET01Qcm9wZXJ0eUNvbmZpZwotICovCi0KLSJ1c2Ug
c3RyaWN0IjsKLQotdmFyIERPTVByb3BlcnR5ID0gcmVxdWlyZSgiLi9ET01Qcm9wZXJ0eSIpOwot
Ci12YXIgTVVTVF9VU0VfQVRUUklCVVRFID0gRE9NUHJvcGVydHkuaW5qZWN0aW9uLk1VU1RfVVNF
X0FUVFJJQlVURTsKLXZhciBNVVNUX1VTRV9QUk9QRVJUWSA9IERPTVByb3BlcnR5LmluamVjdGlv
bi5NVVNUX1VTRV9QUk9QRVJUWTsKLXZhciBIQVNfQk9PTEVBTl9WQUxVRSA9IERPTVByb3BlcnR5
LmluamVjdGlvbi5IQVNfQk9PTEVBTl9WQUxVRTsKLXZhciBIQVNfU0lERV9FRkZFQ1RTID0gRE9N
UHJvcGVydHkuaW5qZWN0aW9uLkhBU19TSURFX0VGRkVDVFM7Ci0KLXZhciBEZWZhdWx0RE9NUHJv
cGVydHlDb25maWcgPSB7Ci0gIGlzQ3VzdG9tQXR0cmlidXRlOiBSZWdFeHAucHJvdG90eXBlLnRl
c3QuYmluZCgKLSAgICAvXihkYXRhfGFyaWEpLVthLXpfXVthLXpcZF8uXC1dKiQvCi0gICksCi0g
IFByb3BlcnRpZXM6IHsKLSAgICAvKioKLSAgICAgKiBTdGFuZGFyZCBQcm9wZXJ0aWVzCi0gICAg
ICovCi0gICAgYWNjZXNzS2V5OiBudWxsLAotICAgIGFjY2VwdDogbnVsbCwKLSAgICBhY3Rpb246
IG51bGwsCi0gICAgYWpheGlmeTogTVVTVF9VU0VfQVRUUklCVVRFLAotICAgIGFsbG93RnVsbFNj
cmVlbjogTVVTVF9VU0VfQVRUUklCVVRFIHwgSEFTX0JPT0xFQU5fVkFMVUUsCi0gICAgYWx0OiBu
dWxsLAotICAgIGF1dG9Db21wbGV0ZTogbnVsbCwKLSAgICBhdXRvRm9jdXM6IEhBU19CT09MRUFO
X1ZBTFVFLAotICAgIGF1dG9QbGF5OiBIQVNfQk9PTEVBTl9WQUxVRSwKLSAgICBjZWxsUGFkZGlu
ZzogbnVsbCwKLSAgICBjZWxsU3BhY2luZzogbnVsbCwKLSAgICBjaGVja2VkOiBNVVNUX1VTRV9Q
Uk9QRVJUWSB8IEhBU19CT09MRUFOX1ZBTFVFLAotICAgIGNsYXNzTmFtZTogTVVTVF9VU0VfUFJP
UEVSVFksCi0gICAgY29sU3BhbjogbnVsbCwKLSAgICBjb250ZW50RWRpdGFibGU6IG51bGwsCi0g
ICAgY29udGV4dE1lbnU6IE1VU1RfVVNFX0FUVFJJQlVURSwKLSAgICBjb250cm9sczogTVVTVF9V
U0VfUFJPUEVSVFkgfCBIQVNfQk9PTEVBTl9WQUxVRSwKLSAgICBkYXRhOiBudWxsLCAvLyBGb3Ig
YDxvYmplY3QgLz5gIGFjdHMgYXMgYHNyY2AuCi0gICAgZGF0ZVRpbWU6IE1VU1RfVVNFX0FUVFJJ
QlVURSwKLSAgICBkaXI6IG51bGwsCi0gICAgZGlzYWJsZWQ6IE1VU1RfVVNFX1BST1BFUlRZIHwg
SEFTX0JPT0xFQU5fVkFMVUUsCi0gICAgZHJhZ2dhYmxlOiBudWxsLAotICAgIGVuY1R5cGU6IG51
bGwsCi0gICAgaGVpZ2h0OiBNVVNUX1VTRV9BVFRSSUJVVEUsCi0gICAgaGlkZGVuOiBNVVNUX1VT
RV9BVFRSSUJVVEUgfCBIQVNfQk9PTEVBTl9WQUxVRSwKLSAgICBocmVmOiBudWxsLAotICAgIGh0
bWxGb3I6IG51bGwsCi0gICAgaWNvbjogbnVsbCwKLSAgICBpZDogTVVTVF9VU0VfUFJPUEVSVFks
Ci0gICAgbGFiZWw6IG51bGwsCi0gICAgbGFuZzogbnVsbCwKLSAgICBsaXN0OiBudWxsLAotICAg
IG1heDogbnVsbCwKLSAgICBtYXhMZW5ndGg6IE1VU1RfVVNFX0FUVFJJQlVURSwKLSAgICBtZXRo
b2Q6IG51bGwsCi0gICAgbWluOiBudWxsLAotICAgIG11bHRpcGxlOiBNVVNUX1VTRV9QUk9QRVJU
WSB8IEhBU19CT09MRUFOX1ZBTFVFLAotICAgIG5hbWU6IG51bGwsCi0gICAgcGF0dGVybjogbnVs
bCwKLSAgICBwb3N0ZXI6IG51bGwsCi0gICAgcHJlbG9hZDogbnVsbCwKLSAgICBwbGFjZWhvbGRl
cjogbnVsbCwKLSAgICByYWRpb0dyb3VwOiBudWxsLAotICAgIHJlbDogbnVsbCwKLSAgICByZWFk
T25seTogTVVTVF9VU0VfUFJPUEVSVFkgfCBIQVNfQk9PTEVBTl9WQUxVRSwKLSAgICByZXF1aXJl
ZDogSEFTX0JPT0xFQU5fVkFMVUUsCi0gICAgcm9sZTogTVVTVF9VU0VfQVRUUklCVVRFLAotICAg
IHNjcm9sbExlZnQ6IE1VU1RfVVNFX1BST1BFUlRZLAotICAgIHNjcm9sbFRvcDogTVVTVF9VU0Vf
UFJPUEVSVFksCi0gICAgc2VsZWN0ZWQ6IE1VU1RfVVNFX1BST1BFUlRZIHwgSEFTX0JPT0xFQU5f
VkFMVUUsCi0gICAgc2l6ZTogbnVsbCwKLSAgICBzcGVsbENoZWNrOiBudWxsLAotICAgIHNyYzog
bnVsbCwKLSAgICBzdGVwOiBudWxsLAotICAgIHN0eWxlOiBudWxsLAotICAgIHRhYkluZGV4OiBu
dWxsLAotICAgIHRhcmdldDogbnVsbCwKLSAgICB0aXRsZTogbnVsbCwKLSAgICB0eXBlOiBudWxs
LAotICAgIHZhbHVlOiBNVVNUX1VTRV9QUk9QRVJUWSB8IEhBU19TSURFX0VGRkVDVFMsCi0gICAg
d2lkdGg6IE1VU1RfVVNFX0FUVFJJQlVURSwKLSAgICB3bW9kZTogTVVTVF9VU0VfQVRUUklCVVRF
LAotICAgIC8qKgotICAgICAqIFNWRyBQcm9wZXJ0aWVzCi0gICAgICovCi0gICAgY3g6IE1VU1Rf
VVNFX1BST1BFUlRZLAotICAgIGN5OiBNVVNUX1VTRV9QUk9QRVJUWSwKLSAgICBkOiBNVVNUX1VT
RV9QUk9QRVJUWSwKLSAgICBmaWxsOiBNVVNUX1VTRV9QUk9QRVJUWSwKLSAgICBmeDogTVVTVF9V
U0VfUFJPUEVSVFksCi0gICAgZnk6IE1VU1RfVVNFX1BST1BFUlRZLAotICAgIHBvaW50czogTVVT
VF9VU0VfUFJPUEVSVFksCi0gICAgcjogTVVTVF9VU0VfUFJPUEVSVFksCi0gICAgc3Ryb2tlOiBN
VVNUX1VTRV9QUk9QRVJUWSwKLSAgICBzdHJva2VMaW5lY2FwOiBNVVNUX1VTRV9QUk9QRVJUWSwK
LSAgICBzdHJva2VXaWR0aDogTVVTVF9VU0VfUFJPUEVSVFksCi0gICAgdHJhbnNmb3JtOiBNVVNU
X1VTRV9QUk9QRVJUWSwKLSAgICB4OiBNVVNUX1VTRV9QUk9QRVJUWSwKLSAgICB4MTogTVVTVF9V
U0VfUFJPUEVSVFksCi0gICAgeDI6IE1VU1RfVVNFX1BST1BFUlRZLAotICAgIHZlcnNpb246IE1V
U1RfVVNFX1BST1BFUlRZLAotICAgIHZpZXdCb3g6IE1VU1RfVVNFX1BST1BFUlRZLAotICAgIHk6
IE1VU1RfVVNFX1BST1BFUlRZLAotICAgIHkxOiBNVVNUX1VTRV9QUk9QRVJUWSwKLSAgICB5Mjog
TVVTVF9VU0VfUFJPUEVSVFksCi0gICAgc3ByZWFkTWV0aG9kOiBNVVNUX1VTRV9QUk9QRVJUWSwK
LSAgICBvZmZzZXQ6IE1VU1RfVVNFX1BST1BFUlRZLAotICAgIHN0b3BDb2xvcjogTVVTVF9VU0Vf
UFJPUEVSVFksCi0gICAgc3RvcE9wYWNpdHk6IE1VU1RfVVNFX1BST1BFUlRZLAotICAgIGdyYWRp
ZW50VW5pdHM6IE1VU1RfVVNFX1BST1BFUlRZLAotICAgIGdyYWRpZW50VHJhbnNmb3JtOiBNVVNU
X1VTRV9QUk9QRVJUWQotICB9LAotICBET01BdHRyaWJ1dGVOYW1lczogewotICAgIGNsYXNzTmFt
ZTogJ2NsYXNzJywKLSAgICBodG1sRm9yOiAnZm9yJywKLSAgICBzdHJva2VMaW5lY2FwOiAnc3Ry
b2tlLWxpbmVjYXAnLAotICAgIHN0cm9rZVdpZHRoOiAnc3Ryb2tlLXdpZHRoJywKLSAgICBzdG9w
Q29sb3I6ICdzdG9wLWNvbG9yJywKLSAgICBzdG9wT3BhY2l0eTogJ3N0b3Atb3BhY2l0eScKLSAg
fSwKLSAgRE9NUHJvcGVydHlOYW1lczogewotICAgIGF1dG9Db21wbGV0ZTogJ2F1dG9jb21wbGV0
ZScsCi0gICAgYXV0b0ZvY3VzOiAnYXV0b2ZvY3VzJywKLSAgICBhdXRvUGxheTogJ2F1dG9wbGF5
JywKLSAgICBlbmNUeXBlOiAnZW5jdHlwZScsCi0gICAgcmFkaW9Hcm91cDogJ3JhZGlvZ3JvdXAn
LAotICAgIHNwZWxsQ2hlY2s6ICdzcGVsbGNoZWNrJwotICB9LAotICBET01NdXRhdGlvbk1ldGhv
ZHM6IHsKLSAgICAvKioKLSAgICAgKiBTZXR0aW5nIGBjbGFzc05hbWVgIHRvIG51bGwgbWF5IGNh
dXNlIGl0IHRvIGJlIHNldCB0byB0aGUgc3RyaW5nICJudWxsIi4KLSAgICAgKgotICAgICAqIEBw
YXJhbSB7RE9NRWxlbWVudH0gbm9kZQotICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUKLSAgICAgKi8K
LSAgICBjbGFzc05hbWU6IGZ1bmN0aW9uKG5vZGUsIHZhbHVlKSB7Ci0gICAgICBub2RlLmNsYXNz
TmFtZSA9IHZhbHVlIHx8ICcnOwotICAgIH0KLSAgfQotfTsKLQotbW9kdWxlLmV4cG9ydHMgPSBE
ZWZhdWx0RE9NUHJvcGVydHlDb25maWc7Ci0KLX0seyIuL0RPTVByb3BlcnR5Ijo3fV0sMTE6W2Z1
bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewotLyoqCi0gKiBDb3B5cmlnaHQgMjAxMyBG
YWNlYm9vaywgSW5jLgotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwg
VmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmls
ZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRh
aW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogaHR0cDovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2Fi
bGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQg
dW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAq
IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhw
cmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFu
Z3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhl
IExpY2Vuc2UuCi0gKgotICogQHByb3ZpZGVzTW9kdWxlIERlZmF1bHRFdmVudFBsdWdpbk9yZGVy
Ci0gKi8KLQotInVzZSBzdHJpY3QiOwotCi0gdmFyIGtleU9mID0gcmVxdWlyZSgiLi9rZXlPZiIp
OwotCi0vKioKLSAqIE1vZHVsZSB0aGF0IGlzIGluamVjdGFibGUgaW50byBgRXZlbnRQbHVnaW5I
dWJgLCB0aGF0IHNwZWNpZmllcyBhCi0gKiBkZXRlcm1pbmlzdGljIG9yZGVyaW5nIG9mIGBFdmVu
dFBsdWdpbmBzLiBBIGNvbnZlbmllbnQgd2F5IHRvIHJlYXNvbiBhYm91dAotICogcGx1Z2lucywg
d2l0aG91dCBoYXZpbmcgdG8gcGFja2FnZSBldmVyeSBvbmUgb2YgdGhlbS4gVGhpcyBpcyBiZXR0
ZXIgdGhhbgotICogaGF2aW5nIHBsdWdpbnMgYmUgb3JkZXJlZCBpbiB0aGUgc2FtZSBvcmRlciB0
aGF0IHRoZXkgYXJlIGluamVjdGVkIGJlY2F1c2UKLSAqIHRoYXQgb3JkZXJpbmcgd291bGQgYmUg
aW5mbHVlbmNlZCBieSB0aGUgcGFja2FnaW5nIG9yZGVyLgotICogYFJlc3BvbmRlckV2ZW50UGx1
Z2luYCBtdXN0IG9jY3VyIGJlZm9yZSBgU2ltcGxlRXZlbnRQbHVnaW5gIHNvIHRoYXQKLSAqIHBy
ZXZlbnRpbmcgZGVmYXVsdCBvbiBldmVudHMgaXMgY29udmVuaWVudCBpbiBgU2ltcGxlRXZlbnRQ
bHVnaW5gIGhhbmRsZXJzLgotICovCi12YXIgRGVmYXVsdEV2ZW50UGx1Z2luT3JkZXIgPSBbCi0g
IGtleU9mKHtSZXNwb25kZXJFdmVudFBsdWdpbjogbnVsbH0pLAotICBrZXlPZih7U2ltcGxlRXZl
bnRQbHVnaW46IG51bGx9KSwKLSAga2V5T2Yoe1RhcEV2ZW50UGx1Z2luOiBudWxsfSksCi0gIGtl
eU9mKHtFbnRlckxlYXZlRXZlbnRQbHVnaW46IG51bGx9KSwKLSAga2V5T2Yoe0NoYW5nZUV2ZW50
UGx1Z2luOiBudWxsfSksCi0gIGtleU9mKHtBbmFseXRpY3NFdmVudFBsdWdpbjogbnVsbH0pCi1d
OwotCi1tb2R1bGUuZXhwb3J0cyA9IERlZmF1bHRFdmVudFBsdWdpbk9yZGVyOwotCi19LHsiLi9r
ZXlPZiI6Nzl9XSwxMjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7Ci0oZnVuY3Rp
b24oKXsvKioKLSAqIENvcHlyaWdodCAyMDEzIEZhY2Vib29rLCBJbmMuCi0gKgotICogTGljZW5z
ZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7
Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgg
dGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQK
LSAqCi0gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0g
KiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRp
bmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmli
dXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJ
VElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhl
IExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMg
YW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqCi0gKiBAcHJvdmlkZXNN
b2R1bGUgRW50ZXJMZWF2ZUV2ZW50UGx1Z2luCi0gKiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seQot
ICovCi0KLSJ1c2Ugc3RyaWN0IjsKLQotdmFyIEV2ZW50Q29uc3RhbnRzID0gcmVxdWlyZSgiLi9F
dmVudENvbnN0YW50cyIpOwotdmFyIEV2ZW50UHJvcGFnYXRvcnMgPSByZXF1aXJlKCIuL0V2ZW50
UHJvcGFnYXRvcnMiKTsKLXZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IHJlcXVpcmUoIi4vRXhl
Y3V0aW9uRW52aXJvbm1lbnQiKTsKLXZhciBSZWFjdEluc3RhbmNlSGFuZGxlcyA9IHJlcXVpcmUo
Ii4vUmVhY3RJbnN0YW5jZUhhbmRsZXMiKTsKLXZhciBTeW50aGV0aWNNb3VzZUV2ZW50ID0gcmVx
dWlyZSgiLi9TeW50aGV0aWNNb3VzZUV2ZW50Iik7Ci0KLXZhciBSZWFjdElEID0gcmVxdWlyZSgi
Li9SZWFjdElEIik7Ci12YXIga2V5T2YgPSByZXF1aXJlKCIuL2tleU9mIik7Ci0KLXZhciB0b3BM
ZXZlbFR5cGVzID0gRXZlbnRDb25zdGFudHMudG9wTGV2ZWxUeXBlczsKLXZhciBnZXRGaXJzdFJl
YWN0RE9NID0gUmVhY3RJbnN0YW5jZUhhbmRsZXMuZ2V0Rmlyc3RSZWFjdERPTTsKLQotdmFyIGV2
ZW50VHlwZXMgPSB7Ci0gIG1vdXNlRW50ZXI6IHtyZWdpc3RyYXRpb25OYW1lOiBrZXlPZih7b25N
b3VzZUVudGVyOiBudWxsfSl9LAotICBtb3VzZUxlYXZlOiB7cmVnaXN0cmF0aW9uTmFtZToga2V5
T2Yoe29uTW91c2VMZWF2ZTogbnVsbH0pfQotfTsKLQotdmFyIEVudGVyTGVhdmVFdmVudFBsdWdp
biA9IHsKLQotICBldmVudFR5cGVzOiBldmVudFR5cGVzLAotCi0gIC8qKgotICAgKiBGb3IgYWxt
b3N0IGV2ZXJ5IGludGVyYWN0aW9uIHdlIGNhcmUgYWJvdXQsIHRoZXJlIHdpbGwgYmUgYm90aCBh
IHRvcC1sZXZlbAotICAgKiBgbW91c2VvdmVyYCBhbmQgYG1vdXNlb3V0YCBldmVudCB0aGF0IG9j
Y3Vycy4gT25seSB1c2UgYG1vdXNlb3V0YCBzbyB0aGF0Ci0gICAqIHdlIGRvIG5vdCBleHRyYWN0
IGR1cGxpY2F0ZSBldmVudHMuIEhvd2V2ZXIsIG1vdmluZyB0aGUgbW91c2UgaW50byB0aGUKLSAg
ICogYnJvd3NlciBmcm9tIG91dHNpZGUgd2lsbCBub3QgZmlyZSBhIGBtb3VzZW91dGAgZXZlbnQu
IEluIHRoaXMgY2FzZSwgd2UgdXNlCi0gICAqIHRoZSBgbW91c2VvdmVyYCB0b3AtbGV2ZWwgZXZl
bnQuCi0gICAqCi0gICAqIEBwYXJhbSB7c3RyaW5nfSB0b3BMZXZlbFR5cGUgUmVjb3JkIGZyb20g
YEV2ZW50Q29uc3RhbnRzYC4KLSAgICogQHBhcmFtIHtET01FdmVudFRhcmdldH0gdG9wTGV2ZWxU
YXJnZXQgVGhlIGxpc3RlbmluZyBjb21wb25lbnQgcm9vdCBub2RlLgotICAgKiBAcGFyYW0ge3N0
cmluZ30gdG9wTGV2ZWxUYXJnZXRJRCBJRCBvZiBgdG9wTGV2ZWxUYXJnZXRgLgotICAgKiBAcGFy
YW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuCi0gICAqIEByZXR1
cm4geyp9IEFuIGFjY3VtdWxhdGlvbiBvZiBzeW50aGV0aWMgZXZlbnRzLgotICAgKiBAc2VlIHtF
dmVudFBsdWdpbkh1Yi5leHRyYWN0RXZlbnRzfQotICAgKi8KLSAgZXh0cmFjdEV2ZW50czogZnVu
Y3Rpb24oCi0gICAgICB0b3BMZXZlbFR5cGUsCi0gICAgICB0b3BMZXZlbFRhcmdldCwKLSAgICAg
IHRvcExldmVsVGFyZ2V0SUQsCi0gICAgICBuYXRpdmVFdmVudCkgewotICAgIGlmICh0b3BMZXZl
bFR5cGUgPT09IHRvcExldmVsVHlwZXMudG9wTW91c2VPdmVyICYmCi0gICAgICAgIChuYXRpdmVF
dmVudC5yZWxhdGVkVGFyZ2V0IHx8IG5hdGl2ZUV2ZW50LmZyb21FbGVtZW50KSkgewotICAgICAg
cmV0dXJuIG51bGw7Ci0gICAgfQotICAgIGlmICh0b3BMZXZlbFR5cGUgIT09IHRvcExldmVsVHlw
ZXMudG9wTW91c2VPdXQgJiYKLSAgICAgICAgdG9wTGV2ZWxUeXBlICE9PSB0b3BMZXZlbFR5cGVz
LnRvcE1vdXNlT3ZlcikgewotICAgICAgLy8gTXVzdCBub3QgYmUgYSBtb3VzZSBpbiBvciBtb3Vz
ZSBvdXQgLSBpZ25vcmluZy4KLSAgICAgIHJldHVybiBudWxsOwotICAgIH0KLQotICAgIHZhciBm
cm9tLCB0bzsKLSAgICBpZiAodG9wTGV2ZWxUeXBlID09PSB0b3BMZXZlbFR5cGVzLnRvcE1vdXNl
T3V0KSB7Ci0gICAgICBmcm9tID0gdG9wTGV2ZWxUYXJnZXQ7Ci0gICAgICB0byA9Ci0gICAgICAg
IGdldEZpcnN0UmVhY3RET00obmF0aXZlRXZlbnQucmVsYXRlZFRhcmdldCB8fCBuYXRpdmVFdmVu
dC50b0VsZW1lbnQpIHx8Ci0gICAgICAgIEV4ZWN1dGlvbkVudmlyb25tZW50Lmdsb2JhbDsKLSAg
ICB9IGVsc2UgewotICAgICAgZnJvbSA9IEV4ZWN1dGlvbkVudmlyb25tZW50Lmdsb2JhbDsKLSAg
ICAgIHRvID0gdG9wTGV2ZWxUYXJnZXQ7Ci0gICAgfQotCi0gICAgaWYgKGZyb20gPT09IHRvKSB7
Ci0gICAgICAvLyBOb3RoaW5nIHBlcnRhaW5zIHRvIG91ciBtYW5hZ2VkIGNvbXBvbmVudHMuCi0g
ICAgICByZXR1cm4gbnVsbDsKLSAgICB9Ci0KLSAgICB2YXIgZnJvbUlEID0gZnJvbSA/IFJlYWN0
SUQuZ2V0SUQoZnJvbSkgOiAnJzsKLSAgICB2YXIgdG9JRCA9IHRvID8gUmVhY3RJRC5nZXRJRCh0
bykgOiAnJzsKLQotICAgIHZhciBsZWF2ZSA9IFN5bnRoZXRpY01vdXNlRXZlbnQuZ2V0UG9vbGVk
KAotICAgICAgZXZlbnRUeXBlcy5tb3VzZUxlYXZlLAotICAgICAgZnJvbUlELAotICAgICAgbmF0
aXZlRXZlbnQKLSAgICApOwotICAgIHZhciBlbnRlciA9IFN5bnRoZXRpY01vdXNlRXZlbnQuZ2V0
UG9vbGVkKAotICAgICAgZXZlbnRUeXBlcy5tb3VzZUVudGVyLAotICAgICAgdG9JRCwKLSAgICAg
IG5hdGl2ZUV2ZW50Ci0gICAgKTsKLQotICAgIEV2ZW50UHJvcGFnYXRvcnMuYWNjdW11bGF0ZUVu
dGVyTGVhdmVEaXNwYXRjaGVzKGxlYXZlLCBlbnRlciwgZnJvbUlELCB0b0lEKTsKLSAgICByZXR1
cm4gW2xlYXZlLCBlbnRlcl07Ci0gIH0KLQotfTsKLQotbW9kdWxlLmV4cG9ydHMgPSBFbnRlckxl
YXZlRXZlbnRQbHVnaW47Ci0KLX0pKCkKLX0seyIuL0V2ZW50Q29uc3RhbnRzIjoxMywiLi9FdmVu
dFByb3BhZ2F0b3JzIjoxOCwiLi9FeGVjdXRpb25FbnZpcm9ubWVudCI6MTksIi4vUmVhY3RJRCI6
MzUsIi4vUmVhY3RJbnN0YW5jZUhhbmRsZXMiOjM3LCIuL1N5bnRoZXRpY01vdXNlRXZlbnQiOjUz
LCIuL2tleU9mIjo3OX1dLDEzOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKLS8q
KgotICogQ29weXJpZ2h0IDIwMTMgRmFjZWJvb2ssIEluYy4KLSAqCi0gKiBMaWNlbnNlZCB1bmRl
ciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlv
dSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGlj
ZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAq
IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVz
cyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29m
dHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9u
IGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBP
RiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5z
ZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAq
IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICoKLSAqIEBwcm92aWRlc01vZHVsZSBF
dmVudENvbnN0YW50cwotICovCi0KLSJ1c2Ugc3RyaWN0IjsKLQotdmFyIGtleU1pcnJvciA9IHJl
cXVpcmUoIi4va2V5TWlycm9yIik7Ci0KLXZhciBQcm9wYWdhdGlvblBoYXNlcyA9IGtleU1pcnJv
cih7YnViYmxlZDogbnVsbCwgY2FwdHVyZWQ6IG51bGx9KTsKLQotLyoqCi0gKiBUeXBlcyBvZiBy
YXcgc2lnbmFscyBmcm9tIHRoZSBicm93c2VyIGNhdWdodCBhdCB0aGUgdG9wIGxldmVsLgotICov
Ci12YXIgdG9wTGV2ZWxUeXBlcyA9IGtleU1pcnJvcih7Ci0gIHRvcEJsdXI6IG51bGwsCi0gIHRv
cENoYW5nZTogbnVsbCwKLSAgdG9wQ2xpY2s6IG51bGwsCi0gIHRvcERPTUNoYXJhY3RlckRhdGFN
b2RpZmllZDogbnVsbCwKLSAgdG9wRG91YmxlQ2xpY2s6IG51bGwsCi0gIHRvcERyYWc6IG51bGws
Ci0gIHRvcERyYWdFbmQ6IG51bGwsCi0gIHRvcERyYWdFbnRlcjogbnVsbCwKLSAgdG9wRHJhZ0V4
aXQ6IG51bGwsCi0gIHRvcERyYWdMZWF2ZTogbnVsbCwKLSAgdG9wRHJhZ092ZXI6IG51bGwsCi0g
IHRvcERyYWdTdGFydDogbnVsbCwKLSAgdG9wRHJvcDogbnVsbCwKLSAgdG9wRm9jdXM6IG51bGws
Ci0gIHRvcElucHV0OiBudWxsLAotICB0b3BLZXlEb3duOiBudWxsLAotICB0b3BLZXlQcmVzczog
bnVsbCwKLSAgdG9wS2V5VXA6IG51bGwsCi0gIHRvcE1vdXNlRG93bjogbnVsbCwKLSAgdG9wTW91
c2VNb3ZlOiBudWxsLAotICB0b3BNb3VzZU91dDogbnVsbCwKLSAgdG9wTW91c2VPdmVyOiBudWxs
LAotICB0b3BNb3VzZVVwOiBudWxsLAotICB0b3BTY3JvbGw6IG51bGwsCi0gIHRvcFNlbGVjdGlv
bkNoYW5nZTogbnVsbCwKLSAgdG9wU3VibWl0OiBudWxsLAotICB0b3BUb3VjaENhbmNlbDogbnVs
bCwKLSAgdG9wVG91Y2hFbmQ6IG51bGwsCi0gIHRvcFRvdWNoTW92ZTogbnVsbCwKLSAgdG9wVG91
Y2hTdGFydDogbnVsbCwKLSAgdG9wV2hlZWw6IG51bGwKLX0pOwotCi12YXIgRXZlbnRDb25zdGFu
dHMgPSB7Ci0gIHRvcExldmVsVHlwZXM6IHRvcExldmVsVHlwZXMsCi0gIFByb3BhZ2F0aW9uUGhh
c2VzOiBQcm9wYWdhdGlvblBoYXNlcwotfTsKLQotbW9kdWxlLmV4cG9ydHMgPSBFdmVudENvbnN0
YW50czsKLQotfSx7Ii4va2V5TWlycm9yIjo3OH1dLDE0OltmdW5jdGlvbihyZXF1aXJlLG1vZHVs
ZSxleHBvcnRzKXsKLS8qKgotICogQ29weXJpZ2h0IDIwMTMgRmFjZWJvb2ssIEluYy4KLSAqCi0g
KiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxp
Y2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAotICoKLSAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8g
aW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlz
IGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMg
T1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAq
IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJt
aXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICoKLSAqIEBw
cm92aWRlc01vZHVsZSBFdmVudExpc3RlbmVyCi0gKi8KLQotLyoqCi0gKiBVcHN0cmVhbSB2ZXJz
aW9uIG9mIGV2ZW50IGxpc3RlbmVyLiBEb2VzIG5vdCB0YWtlIGludG8gYWNjb3VudCBzcGVjaWZp
YwotICogbmF0dXJlIG9mIHBsYXRmb3JtLgotICovCi12YXIgRXZlbnRMaXN0ZW5lciA9IHsKLSAg
LyoqCi0gICAqIExpc3RlbnMgdG8gYnViYmxlZCBldmVudHMgb24gYSBET00gbm9kZS4KLSAgICoK
LSAgICogQHBhcmFtIHtFbGVtZW50fSBlbCBET00gZWxlbWVudCB0byByZWdpc3RlciBsaXN0ZW5l
ciBvbi4KLSAgICogQHBhcmFtIHtzdHJpbmd9IGhhbmRsZXJCYXNlTmFtZSAnY2xpY2snLydtb3Vz
ZW92ZXInCi0gICAqIEBwYXJhbSB7RnVuY3Rpb24hfSBjYiBDYWxsYmFjayBmdW5jdGlvbgotICAg
Ki8KLSAgbGlzdGVuOiBmdW5jdGlvbihlbCwgaGFuZGxlckJhc2VOYW1lLCBjYikgewotICAgIGlm
IChlbC5hZGRFdmVudExpc3RlbmVyKSB7Ci0gICAgICBlbC5hZGRFdmVudExpc3RlbmVyKGhhbmRs
ZXJCYXNlTmFtZSwgY2IsIGZhbHNlKTsKLSAgICB9IGVsc2UgaWYgKGVsLmF0dGFjaEV2ZW50KSB7
Ci0gICAgICBlbC5hdHRhY2hFdmVudCgnb24nICsgaGFuZGxlckJhc2VOYW1lLCBjYik7Ci0gICAg
fQotICB9LAotCi0gIC8qKgotICAgKiBMaXN0ZW5zIHRvIGNhcHR1cmVkIGV2ZW50cyBvbiBhIERP
TSBub2RlLgotICAgKgotICAgKiBAc2VlIGBFdmVudExpc3RlbmVyLmxpc3RlbmAgZm9yIHBhcmFt
cy4KLSAgICogQHRocm93cyBFeGNlcHRpb24gaWYgYWRkRXZlbnRMaXN0ZW5lciBpcyBub3Qgc3Vw
cG9ydGVkLgotICAgKi8KLSAgY2FwdHVyZTogZnVuY3Rpb24oZWwsIGhhbmRsZXJCYXNlTmFtZSwg
Y2IpIHsKLSAgICBpZiAoIWVsLmFkZEV2ZW50TGlzdGVuZXIpIHsKLSAgICAgIGlmICh0cnVlKSB7
Ci0gICAgICAgIGNvbnNvbGUuZXJyb3IoCi0gICAgICAgICAgJ1lvdSBhcmUgYXR0ZW1wdGluZyB0
byB1c2UgYWRkRXZlbnRsaXN0ZW5lciAnICsKLSAgICAgICAgICAnaW4gYSBicm93c2VyIHRoYXQg
ZG9lcyBub3Qgc3VwcG9ydCBpdCBzdXBwb3J0IGl0LicgKwotICAgICAgICAgICdUaGlzIGxpa2Vs
eSBtZWFucyB0aGF0IHlvdSB3aWxsIG5vdCByZWNlaXZlIGV2ZW50cyB0aGF0ICcgKwotICAgICAg
ICAgICd5b3VyIGFwcGxpY2F0aW9uIHJlbGllcyBvbiAoc3VjaCBhcyBzY3JvbGwpLicpOwotICAg
ICAgfQotICAgICAgcmV0dXJuOwotICAgIH0gZWxzZSB7Ci0gICAgICBlbC5hZGRFdmVudExpc3Rl
bmVyKGhhbmRsZXJCYXNlTmFtZSwgY2IsIHRydWUpOwotICAgIH0KLSAgfQotfTsKLQotbW9kdWxl
LmV4cG9ydHMgPSBFdmVudExpc3RlbmVyOwotCi19LHt9XSwxNTpbZnVuY3Rpb24ocmVxdWlyZSxt
b2R1bGUsZXhwb3J0cyl7Ci0vKioKLSAqIENvcHlyaWdodCAyMDEzIEZhY2Vib29rLCBJbmMuCi0g
KgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhl
ICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21w
bGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhl
IExpY2Vuc2UgYXQKLSAqCi0gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVk
IHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5z
ZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5U
SUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQu
Ci0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcg
cGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqCi0g
KiBAcHJvdmlkZXNNb2R1bGUgRXZlbnRQbHVnaW5IdWIKLSAqLwotCi0idXNlIHN0cmljdCI7Ci0K
LXZhciBDYWxsYmFja1JlZ2lzdHJ5ID0gcmVxdWlyZSgiLi9DYWxsYmFja1JlZ2lzdHJ5Iik7Ci12
YXIgRXZlbnRQbHVnaW5SZWdpc3RyeSA9IHJlcXVpcmUoIi4vRXZlbnRQbHVnaW5SZWdpc3RyeSIp
OwotdmFyIEV2ZW50UGx1Z2luVXRpbHMgPSByZXF1aXJlKCIuL0V2ZW50UGx1Z2luVXRpbHMiKTsK
LXZhciBFdmVudFByb3BhZ2F0b3JzID0gcmVxdWlyZSgiLi9FdmVudFByb3BhZ2F0b3JzIik7Ci12
YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSByZXF1aXJlKCIuL0V4ZWN1dGlvbkVudmlyb25tZW50
Iik7Ci0KLXZhciBhY2N1bXVsYXRlID0gcmVxdWlyZSgiLi9hY2N1bXVsYXRlIik7Ci12YXIgZm9y
RWFjaEFjY3VtdWxhdGVkID0gcmVxdWlyZSgiLi9mb3JFYWNoQWNjdW11bGF0ZWQiKTsKLXZhciBp
bnZhcmlhbnQgPSByZXF1aXJlKCIuL2ludmFyaWFudCIpOwotCi0vKioKLSAqIEludGVybmFsIHF1
ZXVlIG9mIGV2ZW50cyB0aGF0IGhhdmUgYWNjdW11bGF0ZWQgdGhlaXIgZGlzcGF0Y2hlcyBhbmQg
YXJlCi0gKiB3YWl0aW5nIHRvIGhhdmUgdGhlaXIgZGlzcGF0Y2hlcyBleGVjdXRlZC4KLSAqLwot
dmFyIGV2ZW50UXVldWUgPSBudWxsOwotCi0vKioKLSAqIERpc3BhdGNoZXMgYW4gZXZlbnQgYW5k
IHJlbGVhc2VzIGl0IGJhY2sgaW50byB0aGUgcG9vbCwgdW5sZXNzIHBlcnNpc3RlbnQuCi0gKgot
ICogQHBhcmFtIHs/b2JqZWN0fSBldmVudCBTeW50aGV0aWMgZXZlbnQgdG8gYmUgZGlzcGF0Y2hl
ZC4KLSAqIEBwcml2YXRlCi0gKi8KLXZhciBleGVjdXRlRGlzcGF0Y2hlc0FuZFJlbGVhc2UgPSBm
dW5jdGlvbihldmVudCkgewotICBpZiAoZXZlbnQpIHsKLSAgICB2YXIgZXhlY3V0ZURpc3BhdGNo
ID0gRXZlbnRQbHVnaW5VdGlscy5leGVjdXRlRGlzcGF0Y2g7Ci0gICAgLy8gUGx1Z2lucyBjYW4g
cHJvdmlkZSBjdXN0b20gYmVoYXZpb3Igd2hlbiBkaXNwYXRjaGluZyBldmVudHMuCi0gICAgdmFy
IFBsdWdpbk1vZHVsZSA9IEV2ZW50UGx1Z2luUmVnaXN0cnkuZ2V0UGx1Z2luTW9kdWxlRm9yRXZl
bnQoZXZlbnQpOwotICAgIGlmIChQbHVnaW5Nb2R1bGUgJiYgUGx1Z2luTW9kdWxlLmV4ZWN1dGVE
aXNwYXRjaCkgewotICAgICAgZXhlY3V0ZURpc3BhdGNoID0gUGx1Z2luTW9kdWxlLmV4ZWN1dGVE
aXNwYXRjaDsKLSAgICB9Ci0gICAgRXZlbnRQbHVnaW5VdGlscy5leGVjdXRlRGlzcGF0Y2hlc0lu
T3JkZXIoZXZlbnQsIGV4ZWN1dGVEaXNwYXRjaCk7Ci0KLSAgICBpZiAoIWV2ZW50LmlzUGVyc2lz
dGVudCgpKSB7Ci0gICAgICBldmVudC5jb25zdHJ1Y3Rvci5yZWxlYXNlKGV2ZW50KTsKLSAgICB9
Ci0gIH0KLX07Ci0KLS8qKgotICogVGhpcyBpcyBhIHVuaWZpZWQgaW50ZXJmYWNlIGZvciBldmVu
dCBwbHVnaW5zIHRvIGJlIGluc3RhbGxlZCBhbmQgY29uZmlndXJlZC4KLSAqCi0gKiBFdmVudCBw
bHVnaW5zIGNhbiBpbXBsZW1lbnQgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOgotICoKLSAqICAg
YGV4dHJhY3RFdmVudHNgIHtmdW5jdGlvbihzdHJpbmcsIERPTUV2ZW50VGFyZ2V0LCBzdHJpbmcs
IG9iamVjdCk6ICp9Ci0gKiAgICAgUmVxdWlyZWQuIFdoZW4gYSB0b3AtbGV2ZWwgZXZlbnQgaXMg
ZmlyZWQsIHRoaXMgbWV0aG9kIGlzIGV4cGVjdGVkIHRvCi0gKiAgICAgZXh0cmFjdCBzeW50aGV0
aWMgZXZlbnRzIHRoYXQgd2lsbCBpbiB0dXJuIGJlIHF1ZXVlZCBhbmQgZGlzcGF0Y2hlZC4KLSAq
Ci0gKiAgIGBldmVudFR5cGVzYCB7b2JqZWN0fQotICogICAgIE9wdGlvbmFsLCBwbHVnaW5zIHRo
YXQgZmlyZSBldmVudHMgbXVzdCBwdWJsaXNoIGEgbWFwcGluZyBvZiByZWdpc3RyYXRpb24KLSAq
ICAgICBuYW1lcyB0aGF0IGFyZSB1c2VkIHRvIHJlZ2lzdGVyIGxpc3RlbmVycy4gVmFsdWVzIG9m
IHRoaXMgbWFwcGluZyBtdXN0Ci0gKiAgICAgYmUgb2JqZWN0cyB0aGF0IGNvbnRhaW4gYHJlZ2lz
dHJhdGlvbk5hbWVgIG9yIGBwaGFzZWRSZWdpc3RyYXRpb25OYW1lc2AuCi0gKgotICogICBgZXhl
Y3V0ZURpc3BhdGNoYCB7ZnVuY3Rpb24ob2JqZWN0LCBmdW5jdGlvbiwgc3RyaW5nKX0KLSAqICAg
ICBPcHRpb25hbCwgYWxsb3dzIHBsdWdpbnMgdG8gb3ZlcnJpZGUgaG93IGFuIGV2ZW50IGdldHMg
ZGlzcGF0Y2hlZC4gQnkKLSAqICAgICBkZWZhdWx0LCB0aGUgbGlzdGVuZXIgaXMgc2ltcGx5IGlu
dm9rZWQuCi0gKgotICogRWFjaCBwbHVnaW4gdGhhdCBpcyBpbmplY3RlZCBpbnRvIGBFdmVudHNQ
bHVnaW5IdWJgIGlzIGltbWVkaWF0ZWx5IG9wZXJhYmxlLgotICoKLSAqIEBwdWJsaWMKLSAqLwot
dmFyIEV2ZW50UGx1Z2luSHViID0gewotCi0gIC8qKgotICAgKiBNZXRob2RzIGZvciBpbmplY3Rp
bmcgZGVwZW5kZW5jaWVzLgotICAgKi8KLSAgaW5qZWN0aW9uOiB7Ci0KLSAgICAvKioKLSAgICAg
KiBAcGFyYW0ge29iamVjdH0gSW5qZWN0ZWRJbnN0YW5jZUhhbmRsZQotICAgICAqIEBwdWJsaWMK
LSAgICAgKi8KLSAgICBpbmplY3RJbnN0YW5jZUhhbmRsZTogRXZlbnRQcm9wYWdhdG9ycy5pbmpl
Y3Rpb24uaW5qZWN0SW5zdGFuY2VIYW5kbGUsCi0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge2Fy
cmF5fSBJbmplY3RlZEV2ZW50UGx1Z2luT3JkZXIKLSAgICAgKiBAcHVibGljCi0gICAgICovCi0g
ICAgaW5qZWN0RXZlbnRQbHVnaW5PcmRlcjogRXZlbnRQbHVnaW5SZWdpc3RyeS5pbmplY3RFdmVu
dFBsdWdpbk9yZGVyLAotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtvYmplY3R9IGluamVjdGVk
TmFtZXNUb1BsdWdpbnMgTWFwIGZyb20gbmFtZXMgdG8gcGx1Z2luIG1vZHVsZXMuCi0gICAgICov
Ci0gICAgaW5qZWN0RXZlbnRQbHVnaW5zQnlOYW1lOiBFdmVudFBsdWdpblJlZ2lzdHJ5LmluamVj
dEV2ZW50UGx1Z2luc0J5TmFtZQotCi0gIH0sCi0KLSAgcmVnaXN0cmF0aW9uTmFtZXM6IEV2ZW50
UGx1Z2luUmVnaXN0cnkucmVnaXN0cmF0aW9uTmFtZXMsCi0KLSAgcHV0TGlzdGVuZXI6IENhbGxi
YWNrUmVnaXN0cnkucHV0TGlzdGVuZXIsCi0KLSAgZ2V0TGlzdGVuZXI6IENhbGxiYWNrUmVnaXN0
cnkuZ2V0TGlzdGVuZXIsCi0KLSAgZGVsZXRlTGlzdGVuZXI6IENhbGxiYWNrUmVnaXN0cnkuZGVs
ZXRlTGlzdGVuZXIsCi0KLSAgZGVsZXRlQWxsTGlzdGVuZXJzOiBDYWxsYmFja1JlZ2lzdHJ5LmRl
bGV0ZUFsbExpc3RlbmVycywKLQotICAvKioKLSAgICogQWxsb3dzIHJlZ2lzdGVyZWQgcGx1Z2lu
cyBhbiBvcHBvcnR1bml0eSB0byBleHRyYWN0IGV2ZW50cyBmcm9tIHRvcC1sZXZlbAotICAgKiBu
YXRpdmUgYnJvd3NlciBldmVudHMuCi0gICAqCi0gICAqIEBwYXJhbSB7c3RyaW5nfSB0b3BMZXZl
bFR5cGUgUmVjb3JkIGZyb20gYEV2ZW50Q29uc3RhbnRzYC4KLSAgICogQHBhcmFtIHtET01FdmVu
dFRhcmdldH0gdG9wTGV2ZWxUYXJnZXQgVGhlIGxpc3RlbmluZyBjb21wb25lbnQgcm9vdCBub2Rl
LgotICAgKiBAcGFyYW0ge3N0cmluZ30gdG9wTGV2ZWxUYXJnZXRJRCBJRCBvZiBgdG9wTGV2ZWxU
YXJnZXRgLgotICAgKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIg
ZXZlbnQuCi0gICAqIEByZXR1cm4geyp9IEFuIGFjY3VtdWxhdGlvbiBvZiBzeW50aGV0aWMgZXZl
bnRzLgotICAgKiBAaW50ZXJuYWwKLSAgICovCi0gIGV4dHJhY3RFdmVudHM6IGZ1bmN0aW9uKAot
ICAgICAgdG9wTGV2ZWxUeXBlLAotICAgICAgdG9wTGV2ZWxUYXJnZXQsCi0gICAgICB0b3BMZXZl
bFRhcmdldElELAotICAgICAgbmF0aXZlRXZlbnQpIHsKLSAgICB2YXIgZXZlbnRzOwotICAgIHZh
ciBwbHVnaW5zID0gRXZlbnRQbHVnaW5SZWdpc3RyeS5wbHVnaW5zOwotICAgIGZvciAodmFyIGkg
PSAwLCBsID0gcGx1Z2lucy5sZW5ndGg7IGkgPCBsOyBpKyspIHsKLSAgICAgIC8vIE5vdCBldmVy
eSBwbHVnaW4gaW4gdGhlIG9yZGVyaW5nIG1heSBiZSBsb2FkZWQgYXQgcnVudGltZS4KLSAgICAg
IHZhciBwb3NzaWJsZVBsdWdpbiA9IHBsdWdpbnNbaV07Ci0gICAgICBpZiAocG9zc2libGVQbHVn
aW4pIHsKLSAgICAgICAgdmFyIGV4dHJhY3RlZEV2ZW50cyA9IHBvc3NpYmxlUGx1Z2luLmV4dHJh
Y3RFdmVudHMoCi0gICAgICAgICAgdG9wTGV2ZWxUeXBlLAotICAgICAgICAgIHRvcExldmVsVGFy
Z2V0LAotICAgICAgICAgIHRvcExldmVsVGFyZ2V0SUQsCi0gICAgICAgICAgbmF0aXZlRXZlbnQK
LSAgICAgICAgKTsKLSAgICAgICAgaWYgKGV4dHJhY3RlZEV2ZW50cykgewotICAgICAgICAgIGV2
ZW50cyA9IGFjY3VtdWxhdGUoZXZlbnRzLCBleHRyYWN0ZWRFdmVudHMpOwotICAgICAgICB9Ci0g
ICAgICB9Ci0gICAgfQotICAgIHJldHVybiBldmVudHM7Ci0gIH0sCi0KLSAgLyoqCi0gICAqIEVu
cXVldWVzIGEgc3ludGhldGljIGV2ZW50IHRoYXQgc2hvdWxkIGJlIGRpc3BhdGNoZWQgd2hlbgot
ICAgKiBgcHJvY2Vzc0V2ZW50UXVldWVgIGlzIGludm9rZWQuCi0gICAqCi0gICAqIEBwYXJhbSB7
Kn0gZXZlbnRzIEFuIGFjY3VtdWxhdGlvbiBvZiBzeW50aGV0aWMgZXZlbnRzLgotICAgKiBAaW50
ZXJuYWwKLSAgICovCi0gIGVucXVldWVFdmVudHM6IGZ1bmN0aW9uKGV2ZW50cykgewotICAgIGlm
IChldmVudHMpIHsKLSAgICAgIGV2ZW50UXVldWUgPSBhY2N1bXVsYXRlKGV2ZW50UXVldWUsIGV2
ZW50cyk7Ci0gICAgfQotICB9LAotCi0gIC8qKgotICAgKiBEaXNwYXRjaGVzIGFsbCBzeW50aGV0
aWMgZXZlbnRzIG9uIHRoZSBldmVudCBxdWV1ZS4KLSAgICoKLSAgICogQGludGVybmFsCi0gICAq
LwotICBwcm9jZXNzRXZlbnRRdWV1ZTogZnVuY3Rpb24oKSB7Ci0gICAgLy8gU2V0IGBldmVudFF1
ZXVlYCB0byBudWxsIGJlZm9yZSBwcm9jZXNzaW5nIGl0IHNvIHRoYXQgd2UgY2FuIHRlbGwgaWYg
bW9yZQotICAgIC8vIGV2ZW50cyBnZXQgZW5xdWV1ZWQgd2hpbGUgcHJvY2Vzc2luZy4KLSAgICB2
YXIgcHJvY2Vzc2luZ0V2ZW50UXVldWUgPSBldmVudFF1ZXVlOwotICAgIGV2ZW50UXVldWUgPSBu
dWxsOwotICAgIGZvckVhY2hBY2N1bXVsYXRlZChwcm9jZXNzaW5nRXZlbnRRdWV1ZSwgZXhlY3V0
ZURpc3BhdGNoZXNBbmRSZWxlYXNlKTsKLSAgICBpbnZhcmlhbnQoCi0gICAgICAhZXZlbnRRdWV1
ZSwKLSAgICAgICdwcm9jZXNzRXZlbnRRdWV1ZSgpOiBBZGRpdGlvbmFsIGV2ZW50cyB3ZXJlIGVu
cXVldWVkIHdoaWxlIHByb2Nlc3NpbmcgJyArCi0gICAgICAnYW4gZXZlbnQgcXVldWUuIFN1cHBv
cnQgZm9yIHRoaXMgaGFzIG5vdCB5ZXQgYmVlbiBpbXBsZW1lbnRlZC4nCi0gICAgKTsKLSAgfQot
Ci19OwotCi1pZiAoRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NKSB7Ci0gIHdpbmRvdy5F
dmVudFBsdWdpbkh1YiA9IEV2ZW50UGx1Z2luSHViOwotfQotCi1tb2R1bGUuZXhwb3J0cyA9IEV2
ZW50UGx1Z2luSHViOwotCi19LHsiLi9DYWxsYmFja1JlZ2lzdHJ5Ijo0LCIuL0V2ZW50UGx1Z2lu
UmVnaXN0cnkiOjE2LCIuL0V2ZW50UGx1Z2luVXRpbHMiOjE3LCIuL0V2ZW50UHJvcGFnYXRvcnMi
OjE4LCIuL0V4ZWN1dGlvbkVudmlyb25tZW50IjoxOSwiLi9hY2N1bXVsYXRlIjo2MCwiLi9mb3JF
YWNoQWNjdW11bGF0ZWQiOjY4LCIuL2ludmFyaWFudCI6NzV9XSwxNjpbZnVuY3Rpb24ocmVxdWly
ZSxtb2R1bGUsZXhwb3J0cyl7Ci0vKioKLSAqIENvcHlyaWdodCAyMDEzIEZhY2Vib29rLCBJbmMu
Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAo
dGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBj
b21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2Yg
dGhlIExpY2Vuc2UgYXQKLSAqCi0gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdy
ZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJS
QU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxp
ZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5p
bmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAq
Ci0gKiBAcHJvdmlkZXNNb2R1bGUgRXZlbnRQbHVnaW5SZWdpc3RyeQotICogQHR5cGVjaGVja3Mg
c3RhdGljLW9ubHkKLSAqLwotCi0idXNlIHN0cmljdCI7Ci0KLXZhciBpbnZhcmlhbnQgPSByZXF1
aXJlKCIuL2ludmFyaWFudCIpOwotCi0vKioKLSAqIEluamVjdGFibGUgb3JkZXJpbmcgb2YgZXZl
bnQgcGx1Z2lucy4KLSAqLwotdmFyIEV2ZW50UGx1Z2luT3JkZXIgPSBudWxsOwotCi0vKioKLSAq
IEluamVjdGFibGUgbWFwcGluZyBmcm9tIG5hbWVzIHRvIGV2ZW50IHBsdWdpbiBtb2R1bGVzLgot
ICovCi12YXIgbmFtZXNUb1BsdWdpbnMgPSB7fTsKLQotLyoqCi0gKiBSZWNvbXB1dGVzIHRoZSBw
bHVnaW4gbGlzdCB1c2luZyB0aGUgaW5qZWN0ZWQgcGx1Z2lucyBhbmQgcGx1Z2luIG9yZGVyaW5n
LgotICoKLSAqIEBwcml2YXRlCi0gKi8KLWZ1bmN0aW9uIHJlY29tcHV0ZVBsdWdpbk9yZGVyaW5n
KCkgewotICBpZiAoIUV2ZW50UGx1Z2luT3JkZXIpIHsKLSAgICAvLyBXYWl0IHVudGlsIGFuIGBF
dmVudFBsdWdpbk9yZGVyYCBpcyBpbmplY3RlZC4KLSAgICByZXR1cm47Ci0gIH0KLSAgZm9yICh2
YXIgcGx1Z2luTmFtZSBpbiBuYW1lc1RvUGx1Z2lucykgewotICAgIHZhciBQbHVnaW5Nb2R1bGUg
PSBuYW1lc1RvUGx1Z2luc1twbHVnaW5OYW1lXTsKLSAgICB2YXIgcGx1Z2luSW5kZXggPSBFdmVu
dFBsdWdpbk9yZGVyLmluZGV4T2YocGx1Z2luTmFtZSk7Ci0gICAgaW52YXJpYW50KAotICAgICAg
cGx1Z2luSW5kZXggPiAtMSwKLSAgICAgICdFdmVudFBsdWdpblJlZ2lzdHJ5OiBDYW5ub3QgaW5q
ZWN0IGV2ZW50IHBsdWdpbnMgdGhhdCBkbyBub3QgZXhpc3QgaW4gJyArCi0gICAgICAndGhlIHBs
dWdpbiBvcmRlcmluZywgYCVzYC4nLAotICAgICAgcGx1Z2luTmFtZQotICAgICk7Ci0gICAgaWYg
KEV2ZW50UGx1Z2luUmVnaXN0cnkucGx1Z2luc1twbHVnaW5JbmRleF0pIHsKLSAgICAgIGNvbnRp
bnVlOwotICAgIH0KLSAgICBpbnZhcmlhbnQoCi0gICAgICBQbHVnaW5Nb2R1bGUuZXh0cmFjdEV2
ZW50cywKLSAgICAgICdFdmVudFBsdWdpblJlZ2lzdHJ5OiBFdmVudCBwbHVnaW5zIG11c3QgaW1w
bGVtZW50IGFuIGBleHRyYWN0RXZlbnRzYCAnICsKLSAgICAgICdtZXRob2QsIGJ1dCBgJXNgIGRv
ZXMgbm90LicsCi0gICAgICBwbHVnaW5OYW1lCi0gICAgKTsKLSAgICBFdmVudFBsdWdpblJlZ2lz
dHJ5LnBsdWdpbnNbcGx1Z2luSW5kZXhdID0gUGx1Z2luTW9kdWxlOwotICAgIHZhciBwdWJsaXNo
ZWRFdmVudHMgPSBQbHVnaW5Nb2R1bGUuZXZlbnRUeXBlczsKLSAgICBmb3IgKHZhciBldmVudE5h
bWUgaW4gcHVibGlzaGVkRXZlbnRzKSB7Ci0gICAgICBpbnZhcmlhbnQoCi0gICAgICAgIHB1Ymxp
c2hFdmVudEZvclBsdWdpbihwdWJsaXNoZWRFdmVudHNbZXZlbnROYW1lXSwgUGx1Z2luTW9kdWxl
KSwKLSAgICAgICAgJ0V2ZW50UGx1Z2luUmVnaXN0cnk6IEZhaWxlZCB0byBwdWJsaXNoIGV2ZW50
IGAlc2AgZm9yIHBsdWdpbiBgJXNgLicsCi0gICAgICAgIGV2ZW50TmFtZSwKLSAgICAgICAgcGx1
Z2luTmFtZQotICAgICAgKTsKLSAgICB9Ci0gIH0KLX0KLQotLyoqCi0gKiBQdWJsaXNoZXMgYW4g
ZXZlbnQgc28gdGhhdCBpdCBjYW4gYmUgZGlzcGF0Y2hlZCBieSB0aGUgc3VwcGxpZWQgcGx1Z2lu
LgotICoKLSAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBEaXNwYXRjaCBjb25maWd1
cmF0aW9uIGZvciB0aGUgZXZlbnQuCi0gKiBAcGFyYW0ge29iamVjdH0gUGx1Z2luTW9kdWxlIFBs
dWdpbiBwdWJsaXNoaW5nIHRoZSBldmVudC4KLSAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYg
dGhlIGV2ZW50IHdhcyBzdWNjZXNzZnVsbHkgcHVibGlzaGVkLgotICogQHByaXZhdGUKLSAqLwot
ZnVuY3Rpb24gcHVibGlzaEV2ZW50Rm9yUGx1Z2luKGRpc3BhdGNoQ29uZmlnLCBQbHVnaW5Nb2R1
bGUpIHsKLSAgdmFyIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzID0gZGlzcGF0Y2hDb25maWcucGhh
c2VkUmVnaXN0cmF0aW9uTmFtZXM7Ci0gIGlmIChwaGFzZWRSZWdpc3RyYXRpb25OYW1lcykgewot
ICAgIGZvciAodmFyIHBoYXNlTmFtZSBpbiBwaGFzZWRSZWdpc3RyYXRpb25OYW1lcykgewotICAg
ICAgaWYgKHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzLmhhc093blByb3BlcnR5KHBoYXNlTmFtZSkp
IHsKLSAgICAgICAgdmFyIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWUgPSBwaGFzZWRSZWdpc3RyYXRp
b25OYW1lc1twaGFzZU5hbWVdOwotICAgICAgICBwdWJsaXNoUmVnaXN0cmF0aW9uTmFtZShwaGFz
ZWRSZWdpc3RyYXRpb25OYW1lLCBQbHVnaW5Nb2R1bGUpOwotICAgICAgfQotICAgIH0KLSAgICBy
ZXR1cm4gdHJ1ZTsKLSAgfSBlbHNlIGlmIChkaXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1l
KSB7Ci0gICAgcHVibGlzaFJlZ2lzdHJhdGlvbk5hbWUoZGlzcGF0Y2hDb25maWcucmVnaXN0cmF0
aW9uTmFtZSwgUGx1Z2luTW9kdWxlKTsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotICByZXR1cm4g
ZmFsc2U7Ci19Ci0KLS8qKgotICogUHVibGlzaGVzIGEgcmVnaXN0cmF0aW9uIG5hbWUgdGhhdCBp
cyB1c2VkIHRvIGlkZW50aWZ5IGRpc3BhdGNoZWQgZXZlbnRzIGFuZAotICogY2FuIGJlIHVzZWQg
d2l0aCBgRXZlbnRQbHVnaW5IdWIucHV0TGlzdGVuZXJgIHRvIHJlZ2lzdGVyIGxpc3RlbmVycy4K
LSAqCi0gKiBAcGFyYW0ge3N0cmluZ30gcmVnaXN0cmF0aW9uTmFtZSBSZWdpc3RyYXRpb24gbmFt
ZSB0byBhZGQuCi0gKiBAcGFyYW0ge29iamVjdH0gUGx1Z2luTW9kdWxlIFBsdWdpbiBwdWJsaXNo
aW5nIHRoZSBldmVudC4KLSAqIEBwcml2YXRlCi0gKi8KLWZ1bmN0aW9uIHB1Ymxpc2hSZWdpc3Ry
YXRpb25OYW1lKHJlZ2lzdHJhdGlvbk5hbWUsIFBsdWdpbk1vZHVsZSkgewotICBpbnZhcmlhbnQo
Ci0gICAgIUV2ZW50UGx1Z2luUmVnaXN0cnkucmVnaXN0cmF0aW9uTmFtZXNbcmVnaXN0cmF0aW9u
TmFtZV0sCi0gICAgJ0V2ZW50UGx1Z2luSHViOiBNb3JlIHRoYW4gb25lIHBsdWdpbiBhdHRlbXB0
ZWQgdG8gcHVibGlzaCB0aGUgc2FtZSAnICsKLSAgICAncmVnaXN0cmF0aW9uIG5hbWUsIGAlc2Au
JywKLSAgICByZWdpc3RyYXRpb25OYW1lCi0gICk7Ci0gIEV2ZW50UGx1Z2luUmVnaXN0cnkucmVn
aXN0cmF0aW9uTmFtZXNbcmVnaXN0cmF0aW9uTmFtZV0gPSBQbHVnaW5Nb2R1bGU7Ci0gIEV2ZW50
UGx1Z2luUmVnaXN0cnkucmVnaXN0cmF0aW9uTmFtZXNLZXlzLnB1c2gocmVnaXN0cmF0aW9uTmFt
ZSk7Ci19Ci0KLS8qKgotICogUmVnaXN0ZXJzIHBsdWdpbnMgc28gdGhhdCB0aGV5IGNhbiBleHRy
YWN0IGFuZCBkaXNwYXRjaCBldmVudHMuCi0gKgotICogQHNlZSB7RXZlbnRQbHVnaW5IdWJ9Ci0g
Ki8KLXZhciBFdmVudFBsdWdpblJlZ2lzdHJ5ID0gewotCi0gIC8qKgotICAgKiBPcmRlcmVkIGxp
c3Qgb2YgaW5qZWN0ZWQgcGx1Z2lucy4KLSAgICovCi0gIHBsdWdpbnM6IFtdLAotCi0gIC8qKgot
ICAgKiBNYXBwaW5nIGZyb20gcmVnaXN0cmF0aW9uIG5hbWVzIHRvIHBsdWdpbiBtb2R1bGVzLgot
ICAgKi8KLSAgcmVnaXN0cmF0aW9uTmFtZXM6IHt9LAotCi0gIC8qKgotICAgKiBUaGUga2V5cyBv
ZiBgcmVnaXN0cmF0aW9uTmFtZXNgLgotICAgKi8KLSAgcmVnaXN0cmF0aW9uTmFtZXNLZXlzOiBb
XSwKLQotICAvKioKLSAgICogSW5qZWN0cyBhbiBvcmRlcmluZyBvZiBwbHVnaW5zIChieSBwbHVn
aW4gbmFtZSkuIFRoaXMgYWxsb3dzIHRoZSBvcmRlcmluZwotICAgKiB0byBiZSBkZWNvdXBsZWQg
ZnJvbSBpbmplY3Rpb24gb2YgdGhlIGFjdHVhbCBwbHVnaW5zIHNvIHRoYXQgb3JkZXJpbmcgaXMK
LSAgICogYWx3YXlzIGRldGVybWluaXN0aWMgcmVnYXJkbGVzcyBvZiBwYWNrYWdpbmcsIG9uLXRo
ZS1mbHkgaW5qZWN0aW9uLCBldGMuCi0gICAqCi0gICAqIEBwYXJhbSB7YXJyYXl9IEluamVjdGVk
RXZlbnRQbHVnaW5PcmRlcgotICAgKiBAaW50ZXJuYWwKLSAgICogQHNlZSB7RXZlbnRQbHVnaW5I
dWIuaW5qZWN0aW9uLmluamVjdEV2ZW50UGx1Z2luT3JkZXJ9Ci0gICAqLwotICBpbmplY3RFdmVu
dFBsdWdpbk9yZGVyOiBmdW5jdGlvbihJbmplY3RlZEV2ZW50UGx1Z2luT3JkZXIpIHsKLSAgICBp
bnZhcmlhbnQoCi0gICAgICAhRXZlbnRQbHVnaW5PcmRlciwKLSAgICAgICdFdmVudFBsdWdpblJl
Z2lzdHJ5OiBDYW5ub3QgaW5qZWN0IGV2ZW50IHBsdWdpbiBvcmRlcmluZyBtb3JlIHRoYW4gb25j
ZS4nCi0gICAgKTsKLSAgICAvLyBDbG9uZSB0aGUgb3JkZXJpbmcgc28gaXQgY2Fubm90IGJlIGR5
bmFtaWNhbGx5IG11dGF0ZWQuCi0gICAgRXZlbnRQbHVnaW5PcmRlciA9IEFycmF5LnByb3RvdHlw
ZS5zbGljZS5jYWxsKEluamVjdGVkRXZlbnRQbHVnaW5PcmRlcik7Ci0gICAgcmVjb21wdXRlUGx1
Z2luT3JkZXJpbmcoKTsKLSAgfSwKLQotICAvKioKLSAgICogSW5qZWN0cyBwbHVnaW5zIHRvIGJl
IHVzZWQgYnkgYEV2ZW50UGx1Z2luSHViYC4gVGhlIHBsdWdpbiBuYW1lcyBtdXN0IGJlCi0gICAq
IGluIHRoZSBvcmRlcmluZyBpbmplY3RlZCBieSBgaW5qZWN0RXZlbnRQbHVnaW5PcmRlcmAuCi0g
ICAqCi0gICAqIFBsdWdpbnMgY2FuIGJlIGluamVjdGVkIGFzIHBhcnQgb2YgcGFnZSBpbml0aWFs
aXphdGlvbiBvciBvbi10aGUtZmx5LgotICAgKgotICAgKiBAcGFyYW0ge29iamVjdH0gaW5qZWN0
ZWROYW1lc1RvUGx1Z2lucyBNYXAgZnJvbSBuYW1lcyB0byBwbHVnaW4gbW9kdWxlcy4KLSAgICog
QGludGVybmFsCi0gICAqIEBzZWUge0V2ZW50UGx1Z2luSHViLmluamVjdGlvbi5pbmplY3RFdmVu
dFBsdWdpbnNCeU5hbWV9Ci0gICAqLwotICBpbmplY3RFdmVudFBsdWdpbnNCeU5hbWU6IGZ1bmN0
aW9uKGluamVjdGVkTmFtZXNUb1BsdWdpbnMpIHsKLSAgICB2YXIgaXNPcmRlcmluZ0RpcnR5ID0g
ZmFsc2U7Ci0gICAgZm9yICh2YXIgcGx1Z2luTmFtZSBpbiBpbmplY3RlZE5hbWVzVG9QbHVnaW5z
KSB7Ci0gICAgICBpZiAoIWluamVjdGVkTmFtZXNUb1BsdWdpbnMuaGFzT3duUHJvcGVydHkocGx1
Z2luTmFtZSkpIHsKLSAgICAgICAgY29udGludWU7Ci0gICAgICB9Ci0gICAgICB2YXIgUGx1Z2lu
TW9kdWxlID0gaW5qZWN0ZWROYW1lc1RvUGx1Z2luc1twbHVnaW5OYW1lXTsKLSAgICAgIGlmIChu
YW1lc1RvUGx1Z2luc1twbHVnaW5OYW1lXSAhPT0gUGx1Z2luTW9kdWxlKSB7Ci0gICAgICAgIGlu
dmFyaWFudCgKLSAgICAgICAgICAhbmFtZXNUb1BsdWdpbnNbcGx1Z2luTmFtZV0sCi0gICAgICAg
ICAgJ0V2ZW50UGx1Z2luUmVnaXN0cnk6IENhbm5vdCBpbmplY3QgdHdvIGRpZmZlcmVudCBldmVu
dCBwbHVnaW5zICcgKwotICAgICAgICAgICd1c2luZyB0aGUgc2FtZSBuYW1lLCBgJXNgLicsCi0g
ICAgICAgICAgcGx1Z2luTmFtZQotICAgICAgICApOwotICAgICAgICBuYW1lc1RvUGx1Z2luc1tw
bHVnaW5OYW1lXSA9IFBsdWdpbk1vZHVsZTsKLSAgICAgICAgaXNPcmRlcmluZ0RpcnR5ID0gdHJ1
ZTsKLSAgICAgIH0KLSAgICB9Ci0gICAgaWYgKGlzT3JkZXJpbmdEaXJ0eSkgewotICAgICAgcmVj
b21wdXRlUGx1Z2luT3JkZXJpbmcoKTsKLSAgICB9Ci0gIH0sCi0KLSAgLyoqCi0gICAqIExvb2tz
IHVwIHRoZSBwbHVnaW4gZm9yIHRoZSBzdXBwbGllZCBldmVudC4KLSAgICoKLSAgICogQHBhcmFt
IHtvYmplY3R9IGV2ZW50IEEgc3ludGhldGljIGV2ZW50LgotICAgKiBAcmV0dXJuIHs/b2JqZWN0
fSBUaGUgcGx1Z2luIHRoYXQgY3JlYXRlZCB0aGUgc3VwcGxpZWQgZXZlbnQuCi0gICAqIEBpbnRl
cm5hbAotICAgKi8KLSAgZ2V0UGx1Z2luTW9kdWxlRm9yRXZlbnQ6IGZ1bmN0aW9uKGV2ZW50KSB7
Ci0gICAgdmFyIGRpc3BhdGNoQ29uZmlnID0gZXZlbnQuZGlzcGF0Y2hDb25maWc7Ci0gICAgaWYg
KGRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUpIHsKLSAgICAgIHJldHVybiBFdmVudFBs
dWdpblJlZ2lzdHJ5LnJlZ2lzdHJhdGlvbk5hbWVzWwotICAgICAgICBkaXNwYXRjaENvbmZpZy5y
ZWdpc3RyYXRpb25OYW1lCi0gICAgICBdIHx8IG51bGw7Ci0gICAgfQotICAgIGZvciAodmFyIHBo
YXNlIGluIGRpc3BhdGNoQ29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzKSB7Ci0gICAgICBp
ZiAoIWRpc3BhdGNoQ29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzLmhhc093blByb3BlcnR5
KHBoYXNlKSkgewotICAgICAgICBjb250aW51ZTsKLSAgICAgIH0KLSAgICAgIHZhciBQbHVnaW5N
b2R1bGUgPSBFdmVudFBsdWdpblJlZ2lzdHJ5LnJlZ2lzdHJhdGlvbk5hbWVzWwotICAgICAgICBk
aXNwYXRjaENvbmZpZy5waGFzZWRSZWdpc3RyYXRpb25OYW1lc1twaGFzZV0KLSAgICAgIF07Ci0g
ICAgICBpZiAoUGx1Z2luTW9kdWxlKSB7Ci0gICAgICAgIHJldHVybiBQbHVnaW5Nb2R1bGU7Ci0g
ICAgICB9Ci0gICAgfQotICAgIHJldHVybiBudWxsOwotICB9LAotCi0gIC8qKgotICAgKiBFeHBv
c2VkIGZvciB1bml0IHRlc3RpbmcuCi0gICAqIEBwcml2YXRlCi0gICAqLwotICBfcmVzZXRFdmVu
dFBsdWdpbnM6IGZ1bmN0aW9uKCkgewotICAgIEV2ZW50UGx1Z2luT3JkZXIgPSBudWxsOwotICAg
IGZvciAodmFyIHBsdWdpbk5hbWUgaW4gbmFtZXNUb1BsdWdpbnMpIHsKLSAgICAgIGlmIChuYW1l
c1RvUGx1Z2lucy5oYXNPd25Qcm9wZXJ0eShwbHVnaW5OYW1lKSkgewotICAgICAgICBkZWxldGUg
bmFtZXNUb1BsdWdpbnNbcGx1Z2luTmFtZV07Ci0gICAgICB9Ci0gICAgfQotICAgIEV2ZW50UGx1
Z2luUmVnaXN0cnkucGx1Z2lucy5sZW5ndGggPSAwOwotICAgIHZhciByZWdpc3RyYXRpb25OYW1l
cyA9IEV2ZW50UGx1Z2luUmVnaXN0cnkucmVnaXN0cmF0aW9uTmFtZXM7Ci0gICAgZm9yICh2YXIg
cmVnaXN0cmF0aW9uTmFtZSBpbiByZWdpc3RyYXRpb25OYW1lcykgewotICAgICAgaWYgKHJlZ2lz
dHJhdGlvbk5hbWVzLmhhc093blByb3BlcnR5KHJlZ2lzdHJhdGlvbk5hbWUpKSB7Ci0gICAgICAg
IGRlbGV0ZSByZWdpc3RyYXRpb25OYW1lc1tyZWdpc3RyYXRpb25OYW1lXTsKLSAgICAgIH0KLSAg
ICB9Ci0gICAgRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lc0tleXMubGVuZ3Ro
ID0gMDsKLSAgfQotCi19OwotCi1tb2R1bGUuZXhwb3J0cyA9IEV2ZW50UGx1Z2luUmVnaXN0cnk7
Ci0KLX0seyIuL2ludmFyaWFudCI6NzV9XSwxNzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhw
b3J0cyl7Ci0vKioKLSAqIENvcHlyaWdodCAyMDEzIEZhY2Vib29rLCBJbmMuCi0gKgotICogTGlj
ZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNl
Iik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdp
dGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2Ug
YXQKLSAqCi0gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAq
Ci0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdy
aXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0
cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENP
TkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUg
dGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lv
bnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqCi0gKiBAcHJvdmlk
ZXNNb2R1bGUgRXZlbnRQbHVnaW5VdGlscwotICovCi0KLSJ1c2Ugc3RyaWN0IjsKLQotdmFyIEV2
ZW50Q29uc3RhbnRzID0gcmVxdWlyZSgiLi9FdmVudENvbnN0YW50cyIpOwotCi12YXIgaW52YXJp
YW50ID0gcmVxdWlyZSgiLi9pbnZhcmlhbnQiKTsKLQotdmFyIHRvcExldmVsVHlwZXMgPSBFdmVu
dENvbnN0YW50cy50b3BMZXZlbFR5cGVzOwotCi1mdW5jdGlvbiBpc0VuZGlzaCh0b3BMZXZlbFR5
cGUpIHsKLSAgcmV0dXJuIHRvcExldmVsVHlwZSA9PT0gdG9wTGV2ZWxUeXBlcy50b3BNb3VzZVVw
IHx8Ci0gICAgICAgICB0b3BMZXZlbFR5cGUgPT09IHRvcExldmVsVHlwZXMudG9wVG91Y2hFbmQg
fHwKLSAgICAgICAgIHRvcExldmVsVHlwZSA9PT0gdG9wTGV2ZWxUeXBlcy50b3BUb3VjaENhbmNl
bDsKLX0KLQotZnVuY3Rpb24gaXNNb3ZlaXNoKHRvcExldmVsVHlwZSkgewotICByZXR1cm4gdG9w
TGV2ZWxUeXBlID09PSB0b3BMZXZlbFR5cGVzLnRvcE1vdXNlTW92ZSB8fAotICAgICAgICAgdG9w
TGV2ZWxUeXBlID09PSB0b3BMZXZlbFR5cGVzLnRvcFRvdWNoTW92ZTsKLX0KLWZ1bmN0aW9uIGlz
U3RhcnRpc2godG9wTGV2ZWxUeXBlKSB7Ci0gIHJldHVybiB0b3BMZXZlbFR5cGUgPT09IHRvcExl
dmVsVHlwZXMudG9wTW91c2VEb3duIHx8Ci0gICAgICAgICB0b3BMZXZlbFR5cGUgPT09IHRvcExl
dmVsVHlwZXMudG9wVG91Y2hTdGFydDsKLX0KLQotdmFyIHZhbGlkYXRlRXZlbnREaXNwYXRjaGVz
OwotaWYgKHRydWUpIHsKLSAgdmFsaWRhdGVFdmVudERpc3BhdGNoZXMgPSBmdW5jdGlvbihldmVu
dCkgewotICAgIHZhciBkaXNwYXRjaExpc3RlbmVycyA9IGV2ZW50Ll9kaXNwYXRjaExpc3RlbmVy
czsKLSAgICB2YXIgZGlzcGF0Y2hJRHMgPSBldmVudC5fZGlzcGF0Y2hJRHM7Ci0KLSAgICB2YXIg
bGlzdGVuZXJzSXNBcnIgPSBBcnJheS5pc0FycmF5KGRpc3BhdGNoTGlzdGVuZXJzKTsKLSAgICB2
YXIgaWRzSXNBcnIgPSBBcnJheS5pc0FycmF5KGRpc3BhdGNoSURzKTsKLSAgICB2YXIgSURzTGVu
ID0gaWRzSXNBcnIgPyBkaXNwYXRjaElEcy5sZW5ndGggOiBkaXNwYXRjaElEcyA/IDEgOiAwOwot
ICAgIHZhciBsaXN0ZW5lcnNMZW4gPSBsaXN0ZW5lcnNJc0FyciA/Ci0gICAgICBkaXNwYXRjaExp
c3RlbmVycy5sZW5ndGggOgotICAgICAgZGlzcGF0Y2hMaXN0ZW5lcnMgPyAxIDogMDsKLQotICAg
IGludmFyaWFudCgKLSAgICAgIGlkc0lzQXJyID09PSBsaXN0ZW5lcnNJc0FyciAmJiBJRHNMZW4g
PT09IGxpc3RlbmVyc0xlbiwKLSAgICAgICdFdmVudFBsdWdpblV0aWxzOiBJbnZhbGlkIGBldmVu
dGAuJwotICAgICk7Ci0gIH07Ci19Ci0KLS8qKgotICogSW52b2tlcyBgY2IoZXZlbnQsIGxpc3Rl
bmVyLCBpZClgLiBBdm9pZHMgdXNpbmcgY2FsbCBpZiBubyBzY29wZSBpcwotICogcHJvdmlkZWQu
IFRoZSBgKGxpc3RlbmVyLGlkKWAgcGFpciBlZmZlY3RpdmVseSBmb3JtcyB0aGUgImRpc3BhdGNo
IiBidXQgYXJlCi0gKiBrZXB0IHNlcGFyYXRlIHRvIGNvbnNlcnZlIG1lbW9yeS4KLSAqLwotZnVu
Y3Rpb24gZm9yRWFjaEV2ZW50RGlzcGF0Y2goZXZlbnQsIGNiKSB7Ci0gIHZhciBkaXNwYXRjaExp
c3RlbmVycyA9IGV2ZW50Ll9kaXNwYXRjaExpc3RlbmVyczsKLSAgdmFyIGRpc3BhdGNoSURzID0g
ZXZlbnQuX2Rpc3BhdGNoSURzOwotICBpZiAodHJ1ZSkgewotICAgIHZhbGlkYXRlRXZlbnREaXNw
YXRjaGVzKGV2ZW50KTsKLSAgfQotICBpZiAoQXJyYXkuaXNBcnJheShkaXNwYXRjaExpc3RlbmVy
cykpIHsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRpc3BhdGNoTGlzdGVuZXJzLmxlbmd0aDsg
aSsrKSB7Ci0gICAgICBpZiAoZXZlbnQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSkgewotICAgICAg
ICBicmVhazsKLSAgICAgIH0KLSAgICAgIC8vIExpc3RlbmVycyBhbmQgSURzIGFyZSB0d28gcGFy
YWxsZWwgYXJyYXlzIHRoYXQgYXJlIGFsd2F5cyBpbiBzeW5jLgotICAgICAgY2IoZXZlbnQsIGRp
c3BhdGNoTGlzdGVuZXJzW2ldLCBkaXNwYXRjaElEc1tpXSk7Ci0gICAgfQotICB9IGVsc2UgaWYg
KGRpc3BhdGNoTGlzdGVuZXJzKSB7Ci0gICAgY2IoZXZlbnQsIGRpc3BhdGNoTGlzdGVuZXJzLCBk
aXNwYXRjaElEcyk7Ci0gIH0KLX0KLQotLyoqCi0gKiBEZWZhdWx0IGltcGxlbWVudGF0aW9uIG9m
IFBsdWdpbk1vZHVsZS5leGVjdXRlRGlzcGF0Y2goKS4KLSAqIEBwYXJhbSB7U3ludGhldGljRXZl
bnR9IFN5bnRoZXRpY0V2ZW50IHRvIGhhbmRsZQotICogQHBhcmFtIHtmdW5jdGlvbn0gQXBwbGlj
YXRpb24tbGV2ZWwgY2FsbGJhY2sKLSAqIEBwYXJhbSB7c3RyaW5nfSBkb21JRCBET00gaWQgdG8g
cGFzcyB0byB0aGUgY2FsbGJhY2suCi0gKi8KLWZ1bmN0aW9uIGV4ZWN1dGVEaXNwYXRjaChldmVu
dCwgbGlzdGVuZXIsIGRvbUlEKSB7Ci0gIGxpc3RlbmVyKGV2ZW50LCBkb21JRCk7Ci19Ci0KLS8q
KgotICogU3RhbmRhcmQvc2ltcGxlIGl0ZXJhdGlvbiB0aHJvdWdoIGFuIGV2ZW50J3MgY29sbGVj
dGVkIGRpc3BhdGNoZXMuCi0gKi8KLWZ1bmN0aW9uIGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlcihl
dmVudCwgZXhlY3V0ZURpc3BhdGNoKSB7Ci0gIGZvckVhY2hFdmVudERpc3BhdGNoKGV2ZW50LCBl
eGVjdXRlRGlzcGF0Y2gpOwotICBldmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnMgPSBudWxsOwotICBl
dmVudC5fZGlzcGF0Y2hJRHMgPSBudWxsOwotfQotCi0vKioKLSAqIFN0YW5kYXJkL3NpbXBsZSBp
dGVyYXRpb24gdGhyb3VnaCBhbiBldmVudCdzIGNvbGxlY3RlZCBkaXNwYXRjaGVzLCBidXQgc3Rv
cHMKLSAqIGF0IHRoZSBmaXJzdCBkaXNwYXRjaCBleGVjdXRpb24gcmV0dXJuaW5nIHRydWUsIGFu
ZCByZXR1cm5zIHRoYXQgaWQuCi0gKgotICogQHJldHVybiBpZCBvZiB0aGUgZmlyc3QgZGlzcGF0
Y2ggZXhlY3V0aW9uIHdobydzIGxpc3RlbmVyIHJldHVybnMgdHJ1ZSwgb3IKLSAqIG51bGwgaWYg
bm8gbGlzdGVuZXIgcmV0dXJuZWQgdHJ1ZS4KLSAqLwotZnVuY3Rpb24gZXhlY3V0ZURpc3BhdGNo
ZXNJbk9yZGVyU3RvcEF0VHJ1ZShldmVudCkgewotICB2YXIgZGlzcGF0Y2hMaXN0ZW5lcnMgPSBl
dmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnM7Ci0gIHZhciBkaXNwYXRjaElEcyA9IGV2ZW50Ll9kaXNw
YXRjaElEczsKLSAgaWYgKHRydWUpIHsKLSAgICB2YWxpZGF0ZUV2ZW50RGlzcGF0Y2hlcyhldmVu
dCk7Ci0gIH0KLSAgaWYgKEFycmF5LmlzQXJyYXkoZGlzcGF0Y2hMaXN0ZW5lcnMpKSB7Ci0gICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBkaXNwYXRjaExpc3RlbmVycy5sZW5ndGg7IGkrKykgewotICAg
ICAgaWYgKGV2ZW50LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpIHsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgICB9Ci0gICAgICAvLyBMaXN0ZW5lcnMgYW5kIElEcyBhcmUgdHdvIHBhcmFsbGVsIGFycmF5
cyB0aGF0IGFyZSBhbHdheXMgaW4gc3luYy4KLSAgICAgIGlmIChkaXNwYXRjaExpc3RlbmVyc1tp
XShldmVudCwgZGlzcGF0Y2hJRHNbaV0pKSB7Ci0gICAgICAgIHJldHVybiBkaXNwYXRjaElEc1tp
XTsKLSAgICAgIH0KLSAgICB9Ci0gIH0gZWxzZSBpZiAoZGlzcGF0Y2hMaXN0ZW5lcnMpIHsKLSAg
ICBpZiAoZGlzcGF0Y2hMaXN0ZW5lcnMoZXZlbnQsIGRpc3BhdGNoSURzKSkgewotICAgICAgcmV0
dXJuIGRpc3BhdGNoSURzOwotICAgIH0KLSAgfQotICByZXR1cm4gbnVsbDsKLX0KLQotLyoqCi0g
KiBFeGVjdXRpb24gb2YgYSAiZGlyZWN0IiBkaXNwYXRjaCAtIHRoZXJlIG11c3QgYmUgYXQgbW9z
dCBvbmUgZGlzcGF0Y2gKLSAqIGFjY3VtdWxhdGVkIG9uIHRoZSBldmVudCBvciBpdCBpcyBjb25z
aWRlcmVkIGFuIGVycm9yLiBJdCBkb2Vzbid0IHJlYWxseSBtYWtlCi0gKiBzZW5zZSBmb3IgYW4g
ZXZlbnQgd2l0aCBtdWx0aXBsZSBkaXNwYXRjaGVzIChidWJibGVkKSB0byBrZWVwIHRyYWNrIG9m
IHRoZQotICogcmV0dXJuIHZhbHVlcyBhdCBlYWNoIGRpc3BhdGNoIGV4ZWN1dGlvbiwgYnV0IGl0
IGRvZXMgdGVuZCB0byBtYWtlIHNlbnNlIHdoZW4KLSAqIGRlYWxpbmcgd2l0aCAiZGlyZWN0IiBk
aXNwYXRjaGVzLgotICoKLSAqIEByZXR1cm4gVGhlIHJldHVybiB2YWx1ZSBvZiBleGVjdXRpbmcg
dGhlIHNpbmdsZSBkaXNwYXRjaC4KLSAqLwotZnVuY3Rpb24gZXhlY3V0ZURpcmVjdERpc3BhdGNo
KGV2ZW50KSB7Ci0gIGlmICh0cnVlKSB7Ci0gICAgdmFsaWRhdGVFdmVudERpc3BhdGNoZXMoZXZl
bnQpOwotICB9Ci0gIHZhciBkaXNwYXRjaExpc3RlbmVyID0gZXZlbnQuX2Rpc3BhdGNoTGlzdGVu
ZXJzOwotICB2YXIgZGlzcGF0Y2hJRCA9IGV2ZW50Ll9kaXNwYXRjaElEczsKLSAgaW52YXJpYW50
KAotICAgICFBcnJheS5pc0FycmF5KGRpc3BhdGNoTGlzdGVuZXIpLAotICAgICdleGVjdXRlRGly
ZWN0RGlzcGF0Y2goLi4uKTogSW52YWxpZCBgZXZlbnRgLicKLSAgKTsKLSAgdmFyIHJlcyA9IGRp
c3BhdGNoTGlzdGVuZXIgPwotICAgIGRpc3BhdGNoTGlzdGVuZXIoZXZlbnQsIGRpc3BhdGNoSUQp
IDoKLSAgICBudWxsOwotICBldmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnMgPSBudWxsOwotICBldmVu
dC5fZGlzcGF0Y2hJRHMgPSBudWxsOwotICByZXR1cm4gcmVzOwotfQotCi0vKioKLSAqIEBwYXJh
bSB7U3ludGhldGljRXZlbnR9IGV2ZW50Ci0gKiBAcmV0dXJuIHtib29sfSBUcnVlIGlmZiBudW1i
ZXIgb2YgZGlzcGF0Y2hlcyBhY2N1bXVsYXRlZCBpcyBncmVhdGVyIHRoYW4gMC4KLSAqLwotZnVu
Y3Rpb24gaGFzRGlzcGF0Y2hlcyhldmVudCkgewotICByZXR1cm4gISFldmVudC5fZGlzcGF0Y2hM
aXN0ZW5lcnM7Ci19Ci0KLS8qKgotICogR2VuZXJhbCB1dGlsaXRpZXMgdGhhdCBhcmUgdXNlZnVs
IGluIGNyZWF0aW5nIGN1c3RvbSBFdmVudCBQbHVnaW5zLgotICovCi12YXIgRXZlbnRQbHVnaW5V
dGlscyA9IHsKLSAgaXNFbmRpc2g6IGlzRW5kaXNoLAotICBpc01vdmVpc2g6IGlzTW92ZWlzaCwK
LSAgaXNTdGFydGlzaDogaXNTdGFydGlzaCwKLSAgZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyOiBl
eGVjdXRlRGlzcGF0Y2hlc0luT3JkZXIsCi0gIGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlclN0b3BB
dFRydWU6IGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlclN0b3BBdFRydWUsCi0gIGV4ZWN1dGVEaXJl
Y3REaXNwYXRjaDogZXhlY3V0ZURpcmVjdERpc3BhdGNoLAotICBoYXNEaXNwYXRjaGVzOiBoYXNE
aXNwYXRjaGVzLAotICBleGVjdXRlRGlzcGF0Y2g6IGV4ZWN1dGVEaXNwYXRjaAotfTsKLQotbW9k
dWxlLmV4cG9ydHMgPSBFdmVudFBsdWdpblV0aWxzOwotCi19LHsiLi9FdmVudENvbnN0YW50cyI6
MTMsIi4vaW52YXJpYW50Ijo3NX1dLDE4OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRz
KXsKLS8qKgotICogQ29weXJpZ2h0IDIwMTMgRmFjZWJvb2ssIEluYy4KLSAqCi0gKiBMaWNlbnNl
ZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsK
LSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0
aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAot
ICoKLSAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAq
IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGlu
Zywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElU
SU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUg
TGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBh
bmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICoKLSAqIEBwcm92aWRlc01v
ZHVsZSBFdmVudFByb3BhZ2F0b3JzCi0gKi8KLQotInVzZSBzdHJpY3QiOwotCi12YXIgQ2FsbGJh
Y2tSZWdpc3RyeSA9IHJlcXVpcmUoIi4vQ2FsbGJhY2tSZWdpc3RyeSIpOwotdmFyIEV2ZW50Q29u
c3RhbnRzID0gcmVxdWlyZSgiLi9FdmVudENvbnN0YW50cyIpOwotCi12YXIgYWNjdW11bGF0ZSA9
IHJlcXVpcmUoIi4vYWNjdW11bGF0ZSIpOwotdmFyIGZvckVhY2hBY2N1bXVsYXRlZCA9IHJlcXVp
cmUoIi4vZm9yRWFjaEFjY3VtdWxhdGVkIik7Ci12YXIgZ2V0TGlzdGVuZXIgPSBDYWxsYmFja1Jl
Z2lzdHJ5LmdldExpc3RlbmVyOwotdmFyIFByb3BhZ2F0aW9uUGhhc2VzID0gRXZlbnRDb25zdGFu
dHMuUHJvcGFnYXRpb25QaGFzZXM7Ci0KLS8qKgotICogSW5qZWN0ZWQgZGVwZW5kZW5jaWVzOgot
ICovCi0KLS8qKgotICogLSBgSW5zdGFuY2VIYW5kbGVgOiBbcmVxdWlyZWRdIE1vZHVsZSB0aGF0
IHBlcmZvcm1zIGxvZ2ljYWwgdHJhdmVyc2FscyBvZiBET00KLSAqICAgaGllcmFyY2h5IGdpdmVu
IGlkcyBvZiB0aGUgbG9naWNhbCBET00gZWxlbWVudHMgaW52b2x2ZWQuCi0gKi8KLXZhciBpbmpl
Y3Rpb24gPSB7Ci0gIEluc3RhbmNlSGFuZGxlOiBudWxsLAotICBpbmplY3RJbnN0YW5jZUhhbmRs
ZTogZnVuY3Rpb24oSW5qZWN0ZWRJbnN0YW5jZUhhbmRsZSkgewotICAgIGluamVjdGlvbi5JbnN0
YW5jZUhhbmRsZSA9IEluamVjdGVkSW5zdGFuY2VIYW5kbGU7Ci0gICAgaWYgKHRydWUpIHsKLSAg
ICAgIGluamVjdGlvbi52YWxpZGF0ZSgpOwotICAgIH0KLSAgfSwKLSAgdmFsaWRhdGU6IGZ1bmN0
aW9uKCkgewotICAgIHZhciBpbnZhbGlkID0gIWluamVjdGlvbi5JbnN0YW5jZUhhbmRsZXx8Ci0g
ICAgICAhaW5qZWN0aW9uLkluc3RhbmNlSGFuZGxlLnRyYXZlcnNlVHdvUGhhc2UgfHwKLSAgICAg
ICFpbmplY3Rpb24uSW5zdGFuY2VIYW5kbGUudHJhdmVyc2VFbnRlckxlYXZlOwotICAgIGlmIChp
bnZhbGlkKSB7Ci0gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0luc3RhbmNlSGFuZGxlIG5vdCBpbmpl
Y3RlZCBiZWZvcmUgdXNlIScpOwotICAgIH0KLSAgfQotfTsKLQotLyoqCi0gKiBTb21lIGV2ZW50
IHR5cGVzIGhhdmUgYSBub3Rpb24gb2YgZGlmZmVyZW50IHJlZ2lzdHJhdGlvbiBuYW1lcyBmb3Ig
ZGlmZmVyZW50Ci0gKiAicGhhc2VzIiBvZiBwcm9wYWdhdGlvbi4gVGhpcyBmaW5kcyBsaXN0ZW5l
cnMgYnkgYSBnaXZlbiBwaGFzZS4KLSAqLwotZnVuY3Rpb24gbGlzdGVuZXJBdFBoYXNlKGlkLCBl
dmVudCwgcHJvcGFnYXRpb25QaGFzZSkgewotICB2YXIgcmVnaXN0cmF0aW9uTmFtZSA9Ci0gICAg
ZXZlbnQuZGlzcGF0Y2hDb25maWcucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXNbcHJvcGFnYXRpb25Q
aGFzZV07Ci0gIHJldHVybiBnZXRMaXN0ZW5lcihpZCwgcmVnaXN0cmF0aW9uTmFtZSk7Ci19Ci0K
LS8qKgotICogVGFncyBhIGBTeW50aGV0aWNFdmVudGAgd2l0aCBkaXNwYXRjaGVkIGxpc3RlbmVy
cy4gQ3JlYXRpbmcgdGhpcyBmdW5jdGlvbgotICogaGVyZSwgYWxsb3dzIHVzIHRvIG5vdCBoYXZl
IHRvIGJpbmQgb3IgY3JlYXRlIGZ1bmN0aW9ucyBmb3IgZWFjaCBldmVudC4KLSAqIE11dGF0aW5n
IHRoZSBldmVudCdzIG1lbWJlcnMgYWxsb3dzIHVzIHRvIG5vdCBoYXZlIHRvIGNyZWF0ZSBhIHdy
YXBwaW5nCi0gKiAiZGlzcGF0Y2giIG9iamVjdCB0aGF0IHBhaXJzIHRoZSBldmVudCB3aXRoIHRo
ZSBsaXN0ZW5lci4KLSAqLwotZnVuY3Rpb24gYWNjdW11bGF0ZURpcmVjdGlvbmFsRGlzcGF0Y2hl
cyhkb21JRCwgdXB3YXJkcywgZXZlbnQpIHsKLSAgaWYgKHRydWUpIHsKLSAgICBpZiAoIWRvbUlE
KSB7Ci0gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Rpc3BhdGNoaW5nIGlkIG11c3Qgbm90IGJlIG51
bGwnKTsKLSAgICB9Ci0gICAgaW5qZWN0aW9uLnZhbGlkYXRlKCk7Ci0gIH0KLSAgdmFyIHBoYXNl
ID0gdXB3YXJkcyA/IFByb3BhZ2F0aW9uUGhhc2VzLmJ1YmJsZWQgOiBQcm9wYWdhdGlvblBoYXNl
cy5jYXB0dXJlZDsKLSAgdmFyIGxpc3RlbmVyID0gbGlzdGVuZXJBdFBoYXNlKGRvbUlELCBldmVu
dCwgcGhhc2UpOwotICBpZiAobGlzdGVuZXIpIHsKLSAgICBldmVudC5fZGlzcGF0Y2hMaXN0ZW5l
cnMgPSBhY2N1bXVsYXRlKGV2ZW50Ll9kaXNwYXRjaExpc3RlbmVycywgbGlzdGVuZXIpOwotICAg
IGV2ZW50Ll9kaXNwYXRjaElEcyA9IGFjY3VtdWxhdGUoZXZlbnQuX2Rpc3BhdGNoSURzLCBkb21J
RCk7Ci0gIH0KLX0KLQotLyoqCi0gKiBDb2xsZWN0IGRpc3BhdGNoZXMgKG11c3QgYmUgZW50aXJl
bHkgY29sbGVjdGVkIGJlZm9yZSBkaXNwYXRjaGluZyAtIHNlZSB1bml0Ci0gKiB0ZXN0cykuIExh
emlseSBhbGxvY2F0ZSB0aGUgYXJyYXkgdG8gY29uc2VydmUgbWVtb3J5LiAgV2UgbXVzdCBsb29w
IHRocm91Z2gKLSAqIGVhY2ggZXZlbnQgYW5kIHBlcmZvcm0gdGhlIHRyYXZlcnNhbCBmb3IgZWFj
aCBvbmUuIFdlIGNhbiBub3QgcGVyZm9ybSBhCi0gKiBzaW5nbGUgdHJhdmVyc2FsIGZvciB0aGUg
ZW50aXJlIGNvbGxlY3Rpb24gb2YgZXZlbnRzIGJlY2F1c2UgZWFjaCBldmVudCBtYXkKLSAqIGhh
dmUgYSBkaWZmZXJlbnQgdGFyZ2V0LgotICovCi1mdW5jdGlvbiBhY2N1bXVsYXRlVHdvUGhhc2VE
aXNwYXRjaGVzU2luZ2xlKGV2ZW50KSB7Ci0gIGlmIChldmVudCAmJiBldmVudC5kaXNwYXRjaENv
bmZpZy5waGFzZWRSZWdpc3RyYXRpb25OYW1lcykgewotICAgIGluamVjdGlvbi5JbnN0YW5jZUhh
bmRsZS50cmF2ZXJzZVR3b1BoYXNlKAotICAgICAgZXZlbnQuZGlzcGF0Y2hNYXJrZXIsCi0gICAg
ICBhY2N1bXVsYXRlRGlyZWN0aW9uYWxEaXNwYXRjaGVzLAotICAgICAgZXZlbnQKLSAgICApOwot
ICB9Ci19Ci0KLQotLyoqCi0gKiBBY2N1bXVsYXRlcyB3aXRob3V0IHJlZ2FyZCB0byBkaXJlY3Rp
b24sIGRvZXMgbm90IGxvb2sgZm9yIHBoYXNlZAotICogcmVnaXN0cmF0aW9uIG5hbWVzLiBTYW1l
IGFzIGBhY2N1bXVsYXRlRGlyZWN0RGlzcGF0Y2hlc1NpbmdsZWAgYnV0IHdpdGhvdXQKLSAqIHJl
cXVpcmluZyB0aGF0IHRoZSBgZGlzcGF0Y2hNYXJrZXJgIGJlIHRoZSBzYW1lIGFzIHRoZSBkaXNw
YXRjaGVkIElELgotICovCi1mdW5jdGlvbiBhY2N1bXVsYXRlRGlzcGF0Y2hlcyhpZCwgaWdub3Jl
ZERpcmVjdGlvbiwgZXZlbnQpIHsKLSAgaWYgKGV2ZW50ICYmIGV2ZW50LmRpc3BhdGNoQ29uZmln
LnJlZ2lzdHJhdGlvbk5hbWUpIHsKLSAgICB2YXIgcmVnaXN0cmF0aW9uTmFtZSA9IGV2ZW50LmRp
c3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWU7Ci0gICAgdmFyIGxpc3RlbmVyID0gZ2V0TGlz
dGVuZXIoaWQsIHJlZ2lzdHJhdGlvbk5hbWUpOwotICAgIGlmIChsaXN0ZW5lcikgewotICAgICAg
ZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJzID0gYWNjdW11bGF0ZShldmVudC5fZGlzcGF0Y2hMaXN0
ZW5lcnMsIGxpc3RlbmVyKTsKLSAgICAgIGV2ZW50Ll9kaXNwYXRjaElEcyA9IGFjY3VtdWxhdGUo
ZXZlbnQuX2Rpc3BhdGNoSURzLCBpZCk7Ci0gICAgfQotICB9Ci19Ci0KLS8qKgotICogQWNjdW11
bGF0ZXMgZGlzcGF0Y2hlcyBvbiBhbiBgU3ludGhldGljRXZlbnRgLCBidXQgb25seSBmb3IgdGhl
Ci0gKiBgZGlzcGF0Y2hNYXJrZXJgLgotICogQHBhcmFtIHtTeW50aGV0aWNFdmVudH0gZXZlbnQK
LSAqLwotZnVuY3Rpb24gYWNjdW11bGF0ZURpcmVjdERpc3BhdGNoZXNTaW5nbGUoZXZlbnQpIHsK
LSAgaWYgKGV2ZW50ICYmIGV2ZW50LmRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUpIHsK
LSAgICBhY2N1bXVsYXRlRGlzcGF0Y2hlcyhldmVudC5kaXNwYXRjaE1hcmtlciwgbnVsbCwgZXZl
bnQpOwotICB9Ci19Ci0KLWZ1bmN0aW9uIGFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXMoZXZl
bnRzKSB7Ci0gIGlmICh0cnVlKSB7Ci0gICAgaW5qZWN0aW9uLnZhbGlkYXRlKCk7Ci0gIH0KLSAg
Zm9yRWFjaEFjY3VtdWxhdGVkKGV2ZW50cywgYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlc1Np
bmdsZSk7Ci19Ci0KLWZ1bmN0aW9uIGFjY3VtdWxhdGVFbnRlckxlYXZlRGlzcGF0Y2hlcyhsZWF2
ZSwgZW50ZXIsIGZyb21JRCwgdG9JRCkgewotICBpZiAodHJ1ZSkgewotICAgIGluamVjdGlvbi52
YWxpZGF0ZSgpOwotICB9Ci0gIGluamVjdGlvbi5JbnN0YW5jZUhhbmRsZS50cmF2ZXJzZUVudGVy
TGVhdmUoCi0gICAgZnJvbUlELAotICAgIHRvSUQsCi0gICAgYWNjdW11bGF0ZURpc3BhdGNoZXMs
Ci0gICAgbGVhdmUsCi0gICAgZW50ZXIKLSAgKTsKLX0KLQotCi1mdW5jdGlvbiBhY2N1bXVsYXRl
RGlyZWN0RGlzcGF0Y2hlcyhldmVudHMpIHsKLSAgaWYgKHRydWUpIHsKLSAgICBpbmplY3Rpb24u
dmFsaWRhdGUoKTsKLSAgfQotICBmb3JFYWNoQWNjdW11bGF0ZWQoZXZlbnRzLCBhY2N1bXVsYXRl
RGlyZWN0RGlzcGF0Y2hlc1NpbmdsZSk7Ci19Ci0KLQotCi0vKioKLSAqIEEgc21hbGwgc2V0IG9m
IHByb3BhZ2F0aW9uIHBhdHRlcm5zLCBlYWNoIG9mIHdoaWNoIHdpbGwgYWNjZXB0IGEgc21hbGwg
YW1vdW50Ci0gKiBvZiBpbmZvcm1hdGlvbiwgYW5kIGdlbmVyYXRlIGEgc2V0IG9mICJkaXNwYXRj
aCByZWFkeSBldmVudCBvYmplY3RzIiAtIHdoaWNoCi0gKiBhcmUgc2V0cyBvZiBldmVudHMgdGhh
dCBoYXZlIGFscmVhZHkgYmVlbiBhbm5vdGF0ZWQgd2l0aCBhIHNldCBvZiBkaXNwYXRjaGVkCi0g
KiBsaXN0ZW5lciBmdW5jdGlvbnMvaWRzLiBUaGUgQVBJIGlzIGRlc2lnbmVkIHRoaXMgd2F5IHRv
IGRpc2NvdXJhZ2UgdGhlc2UKLSAqIHByb3BhZ2F0aW9uIHN0cmF0ZWdpZXMgZnJvbSBhY3R1YWxs
eSBleGVjdXRpbmcgdGhlIGRpc3BhdGNoZXMsIHNpbmNlIHdlCi0gKiBhbHdheXMgd2FudCB0byBj
b2xsZWN0IHRoZSBlbnRpcmUgc2V0IG9mIGRpc3BhdGNoZXMgYmVmb3JlIGV4ZWN1dGluZyBldmVu
dCBhCi0gKiBzaW5nbGUgb25lLgotICoKLSAqIEBjb25zdHJ1Y3RvciBFdmVudFByb3BhZ2F0b3Jz
Ci0gKi8KLXZhciBFdmVudFByb3BhZ2F0b3JzID0gewotICBhY2N1bXVsYXRlVHdvUGhhc2VEaXNw
YXRjaGVzOiBhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzLAotICBhY2N1bXVsYXRlRGlyZWN0
RGlzcGF0Y2hlczogYWNjdW11bGF0ZURpcmVjdERpc3BhdGNoZXMsCi0gIGFjY3VtdWxhdGVFbnRl
ckxlYXZlRGlzcGF0Y2hlczogYWNjdW11bGF0ZUVudGVyTGVhdmVEaXNwYXRjaGVzLAotICBpbmpl
Y3Rpb246IGluamVjdGlvbgotfTsKLQotbW9kdWxlLmV4cG9ydHMgPSBFdmVudFByb3BhZ2F0b3Jz
OwotCi19LHsiLi9DYWxsYmFja1JlZ2lzdHJ5Ijo0LCIuL0V2ZW50Q29uc3RhbnRzIjoxMywiLi9h
Y2N1bXVsYXRlIjo2MCwiLi9mb3JFYWNoQWNjdW11bGF0ZWQiOjY4fV0sMTk6W2Z1bmN0aW9uKHJl
cXVpcmUsbW9kdWxlLGV4cG9ydHMpewotKGZ1bmN0aW9uKCl7LyoqCi0gKiBDb3B5cmlnaHQgMjAx
MyBGYWNlYm9vaywgSW5jLgotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5z
ZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMg
ZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBv
YnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogaHR0cDovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxp
Y2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0
ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywK
LSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIg
ZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMg
bGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIg
dGhlIExpY2Vuc2UuCi0gKgotICogQHByb3ZpZGVzTW9kdWxlIEV4ZWN1dGlvbkVudmlyb25tZW50
Ci0gKi8KLQotLypqc2xpbnQgZXZpbDogdHJ1ZSAqLwotCi0idXNlIHN0cmljdCI7Ci0KLXZhciBj
YW5Vc2VET00gPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJzsKLQotLyoqCi0gKiBTaW1w
bGUsIGxpZ2h0d2VpZ2h0IG1vZHVsZSBhc3Npc3Rpbmcgd2l0aCB0aGUgZGV0ZWN0aW9uIGFuZCBj
b250ZXh0IG9mCi0gKiBXb3JrZXIuIEhlbHBzIGF2b2lkIGNpcmN1bGFyIGRlcGVuZGVuY2llcyBh
bmQgYWxsb3dzIGNvZGUgdG8gcmVhc29uIGFib3V0Ci0gKiB3aGV0aGVyIG9yIG5vdCB0aGV5IGFy
ZSBpbiBhIFdvcmtlciwgZXZlbiBpZiB0aGV5IG5ldmVyIGluY2x1ZGUgdGhlIG1haW4KLSAqIGBS
ZWFjdFdvcmtlcmAgZGVwZW5kZW5jeS4KLSAqLwotdmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0g
ewotCi0gIGNhblVzZURPTTogY2FuVXNlRE9NLAotCi0gIGNhblVzZVdvcmtlcnM6IHR5cGVvZiBX
b3JrZXIgIT09ICd1bmRlZmluZWQnLAotCi0gIGlzSW5Xb3JrZXI6ICFjYW5Vc2VET00sIC8vIEZv
ciBub3csIHRoaXMgaXMgdHJ1ZSAtIG1pZ2h0IGNoYW5nZSBpbiB0aGUgZnV0dXJlLgotCi0gIGds
b2JhbDogbmV3IEZ1bmN0aW9uKCdyZXR1cm4gdGhpczsnKSgpCi0KLX07Ci0KLW1vZHVsZS5leHBv
cnRzID0gRXhlY3V0aW9uRW52aXJvbm1lbnQ7Ci0KLX0pKCkKLX0se31dLDIwOltmdW5jdGlvbihy
ZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKLS8qKgotICogQ29weXJpZ2h0IDIwMTMgRmFjZWJvb2ss
IEluYy4KLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24g
Mi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBv
ciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRo
ZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VU
IFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3Ig
aW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdv
dmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNl
LgotICoKLSAqIEBwcm92aWRlc01vZHVsZSBQb29sZWRDbGFzcwotICovCi0KLSJ1c2Ugc3RyaWN0
IjsKLQotLyoqCi0gKiBTdGF0aWMgcG9vbGVycy4gU2V2ZXJhbCBjdXN0b20gdmVyc2lvbnMgZm9y
IGVhY2ggcG90ZW50aWFsIG51bWJlciBvZgotICogYXJndW1lbnRzLiBBIGNvbXBsZXRlbHkgZ2Vu
ZXJpYyBwb29sZXIgaXMgZWFzeSB0byBpbXBsZW1lbnQsIGJ1dCB3b3VsZAotICogcmVxdWlyZSBh
Y2Nlc3NpbmcgdGhlIGBhcmd1bWVudHNgIG9iamVjdC4gSW4gZWFjaCBvZiB0aGVzZSwgYHRoaXNg
IHJlZmVycyB0bwotICogdGhlIENsYXNzIGl0c2VsZiwgbm90IGFuIGluc3RhbmNlLiBJZiBhbnkg
b3RoZXJzIGFyZSBuZWVkZWQsIHNpbXBseSBhZGQgdGhlbQotICogaGVyZSwgb3IgaW4gdGhlaXIg
b3duIGZpbGVzLgotICovCi12YXIgb25lQXJndW1lbnRQb29sZXIgPSBmdW5jdGlvbihjb3B5Rmll
bGRzRnJvbSkgewotICB2YXIgS2xhc3MgPSB0aGlzOwotICBpZiAoS2xhc3MuaW5zdGFuY2VQb29s
Lmxlbmd0aCkgewotICAgIHZhciBpbnN0YW5jZSA9IEtsYXNzLmluc3RhbmNlUG9vbC5wb3AoKTsK
LSAgICBLbGFzcy5jYWxsKGluc3RhbmNlLCBjb3B5RmllbGRzRnJvbSk7Ci0gICAgcmV0dXJuIGlu
c3RhbmNlOwotICB9IGVsc2UgewotICAgIHJldHVybiBuZXcgS2xhc3MoY29weUZpZWxkc0Zyb20p
OwotICB9Ci19OwotCi12YXIgdHdvQXJndW1lbnRQb29sZXIgPSBmdW5jdGlvbihhMSwgYTIpIHsK
LSAgdmFyIEtsYXNzID0gdGhpczsKLSAgaWYgKEtsYXNzLmluc3RhbmNlUG9vbC5sZW5ndGgpIHsK
LSAgICB2YXIgaW5zdGFuY2UgPSBLbGFzcy5pbnN0YW5jZVBvb2wucG9wKCk7Ci0gICAgS2xhc3Mu
Y2FsbChpbnN0YW5jZSwgYTEsIGEyKTsKLSAgICByZXR1cm4gaW5zdGFuY2U7Ci0gIH0gZWxzZSB7
Ci0gICAgcmV0dXJuIG5ldyBLbGFzcyhhMSwgYTIpOwotICB9Ci19OwotCi12YXIgdGhyZWVBcmd1
bWVudFBvb2xlciA9IGZ1bmN0aW9uKGExLCBhMiwgYTMpIHsKLSAgdmFyIEtsYXNzID0gdGhpczsK
LSAgaWYgKEtsYXNzLmluc3RhbmNlUG9vbC5sZW5ndGgpIHsKLSAgICB2YXIgaW5zdGFuY2UgPSBL
bGFzcy5pbnN0YW5jZVBvb2wucG9wKCk7Ci0gICAgS2xhc3MuY2FsbChpbnN0YW5jZSwgYTEsIGEy
LCBhMyk7Ci0gICAgcmV0dXJuIGluc3RhbmNlOwotICB9IGVsc2UgewotICAgIHJldHVybiBuZXcg
S2xhc3MoYTEsIGEyLCBhMyk7Ci0gIH0KLX07Ci0KLXZhciBmaXZlQXJndW1lbnRQb29sZXIgPSBm
dW5jdGlvbihhMSwgYTIsIGEzLCBhNCwgYTUpIHsKLSAgdmFyIEtsYXNzID0gdGhpczsKLSAgaWYg
KEtsYXNzLmluc3RhbmNlUG9vbC5sZW5ndGgpIHsKLSAgICB2YXIgaW5zdGFuY2UgPSBLbGFzcy5p
bnN0YW5jZVBvb2wucG9wKCk7Ci0gICAgS2xhc3MuY2FsbChpbnN0YW5jZSwgYTEsIGEyLCBhMywg
YTQsIGE1KTsKLSAgICByZXR1cm4gaW5zdGFuY2U7Ci0gIH0gZWxzZSB7Ci0gICAgcmV0dXJuIG5l
dyBLbGFzcyhhMSwgYTIsIGEzLCBhNCwgYTUpOwotICB9Ci19OwotCi12YXIgc3RhbmRhcmRSZWxl
YXNlciA9IGZ1bmN0aW9uKGluc3RhbmNlKSB7Ci0gIHZhciBLbGFzcyA9IHRoaXM7Ci0gIGlmIChp
bnN0YW5jZS5kZXN0cnVjdG9yKSB7Ci0gICAgaW5zdGFuY2UuZGVzdHJ1Y3RvcigpOwotICB9Ci0g
IGlmIChLbGFzcy5pbnN0YW5jZVBvb2wubGVuZ3RoIDwgS2xhc3MucG9vbFNpemUpIHsKLSAgICBL
bGFzcy5pbnN0YW5jZVBvb2wucHVzaChpbnN0YW5jZSk7Ci0gIH0KLX07Ci0KLXZhciBERUZBVUxU
X1BPT0xfU0laRSA9IDEwOwotdmFyIERFRkFVTFRfUE9PTEVSID0gb25lQXJndW1lbnRQb29sZXI7
Ci0KLS8qKgotICogQXVnbWVudHMgYENvcHlDb25zdHJ1Y3RvcmAgdG8gYmUgYSBwb29sYWJsZSBj
bGFzcywgYXVnbWVudGluZyBvbmx5IHRoZSBjbGFzcwotICogaXRzZWxmIChzdGF0aWNhbGx5KSBu
b3QgYWRkaW5nIGFueSBwcm90b3R5cGljYWwgZmllbGRzLiBBbnkgQ29weUNvbnN0cnVjdG9yCi0g
KiB5b3UgZ2l2ZSB0aGlzIG1heSBoYXZlIGEgYHBvb2xTaXplYCBwcm9wZXJ0eSwgYW5kIHdpbGwg
bG9vayBmb3IgYQotICogcHJvdG90eXBpY2FsIGBkZXN0cnVjdG9yYCBvbiBpbnN0YW5jZXMgKG9w
dGlvbmFsKS4KLSAqCi0gKiBAcGFyYW0ge0Z1bmN0aW9ufSBDb3B5Q29uc3RydWN0b3IgQ29uc3Ry
dWN0b3IgdGhhdCBjYW4gYmUgdXNlZCB0byByZXNldC4KLSAqIEBwYXJhbSB7RnVuY3Rpb259IHBv
b2xlciBDdXN0b21pemFibGUgcG9vbGVyLgotICovCi12YXIgYWRkUG9vbGluZ1RvID0gZnVuY3Rp
b24oQ29weUNvbnN0cnVjdG9yLCBwb29sZXIpIHsKLSAgdmFyIE5ld0tsYXNzID0gQ29weUNvbnN0
cnVjdG9yOwotICBOZXdLbGFzcy5pbnN0YW5jZVBvb2wgPSBbXTsKLSAgTmV3S2xhc3MuZ2V0UG9v
bGVkID0gcG9vbGVyIHx8IERFRkFVTFRfUE9PTEVSOwotICBpZiAoIU5ld0tsYXNzLnBvb2xTaXpl
KSB7Ci0gICAgTmV3S2xhc3MucG9vbFNpemUgPSBERUZBVUxUX1BPT0xfU0laRTsKLSAgfQotICBO
ZXdLbGFzcy5yZWxlYXNlID0gc3RhbmRhcmRSZWxlYXNlcjsKLSAgcmV0dXJuIE5ld0tsYXNzOwot
fTsKLQotdmFyIFBvb2xlZENsYXNzID0gewotICBhZGRQb29saW5nVG86IGFkZFBvb2xpbmdUbywK
LSAgb25lQXJndW1lbnRQb29sZXI6IG9uZUFyZ3VtZW50UG9vbGVyLAotICB0d29Bcmd1bWVudFBv
b2xlcjogdHdvQXJndW1lbnRQb29sZXIsCi0gIHRocmVlQXJndW1lbnRQb29sZXI6IHRocmVlQXJn
dW1lbnRQb29sZXIsCi0gIGZpdmVBcmd1bWVudFBvb2xlcjogZml2ZUFyZ3VtZW50UG9vbGVyCi19
OwotCi1tb2R1bGUuZXhwb3J0cyA9IFBvb2xlZENsYXNzOwotCi19LHt9XSwyMTpbZnVuY3Rpb24o
cmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7Ci0vKioKLSAqIENvcHlyaWdodCAyMDEzIEZhY2Vib29r
LCBJbmMuCi0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9u
IDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2Vw
dCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNv
cHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg
b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9V
VCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9y
IGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBn
b3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5z
ZS4KLSAqCi0gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3QKLSAqLwotCi0idXNlIHN0cmljdCI7Ci0K
LXZhciBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCA9IHJlcXVpcmUoIi4vUmVhY3RDb21wb3NpdGVD
b21wb25lbnQiKTsKLXZhciBSZWFjdENvbXBvbmVudCA9IHJlcXVpcmUoIi4vUmVhY3RDb21wb25l
bnQiKTsKLXZhciBSZWFjdERPTSA9IHJlcXVpcmUoIi4vUmVhY3RET00iKTsKLXZhciBSZWFjdE1v
dW50ID0gcmVxdWlyZSgiLi9SZWFjdE1vdW50Iik7Ci12YXIgUmVhY3RQcm9wVHlwZXMgPSByZXF1
aXJlKCIuL1JlYWN0UHJvcFR5cGVzIik7Ci12YXIgUmVhY3RTZXJ2ZXJSZW5kZXJpbmcgPSByZXF1
aXJlKCIuL1JlYWN0U2VydmVyUmVuZGVyaW5nIik7Ci0KLXZhciBSZWFjdERlZmF1bHRJbmplY3Rp
b24gPSByZXF1aXJlKCIuL1JlYWN0RGVmYXVsdEluamVjdGlvbiIpOwotCi1SZWFjdERlZmF1bHRJ
bmplY3Rpb24uaW5qZWN0KCk7Ci0KLXZhciBSZWFjdCA9IHsKLSAgRE9NOiBSZWFjdERPTSwKLSAg
UHJvcFR5cGVzOiBSZWFjdFByb3BUeXBlcywKLSAgaW5pdGlhbGl6ZVRvdWNoRXZlbnRzOiBmdW5j
dGlvbihzaG91bGRVc2VUb3VjaCkgewotICAgIFJlYWN0TW91bnQudXNlVG91Y2hFdmVudHMgPSBz
aG91bGRVc2VUb3VjaDsKLSAgfSwKLSAgYXV0b0JpbmQ6IFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50
LmF1dG9CaW5kLAotICBjcmVhdGVDbGFzczogUmVhY3RDb21wb3NpdGVDb21wb25lbnQuY3JlYXRl
Q2xhc3MsCi0gIGNvbnN0cnVjdEFuZFJlbmRlckNvbXBvbmVudDogUmVhY3RNb3VudC5jb25zdHJ1
Y3RBbmRSZW5kZXJDb21wb25lbnQsCi0gIGNvbnN0cnVjdEFuZFJlbmRlckNvbXBvbmVudEJ5SUQ6
IFJlYWN0TW91bnQuY29uc3RydWN0QW5kUmVuZGVyQ29tcG9uZW50QnlJRCwKLSAgcmVuZGVyQ29t
cG9uZW50OiBSZWFjdE1vdW50LnJlbmRlckNvbXBvbmVudCwKLSAgcmVuZGVyQ29tcG9uZW50VG9T
dHJpbmc6IFJlYWN0U2VydmVyUmVuZGVyaW5nLnJlbmRlckNvbXBvbmVudFRvU3RyaW5nLAotICB1
bm1vdW50QW5kUmVsZWFzZVJlYWN0Um9vdE5vZGU6IFJlYWN0TW91bnQudW5tb3VudEFuZFJlbGVh
c2VSZWFjdFJvb3ROb2RlLAotICBpc1ZhbGlkQ29tcG9uZW50OiBSZWFjdENvbXBvbmVudC5pc1Zh
bGlkQ29tcG9uZW50Ci19OwotCi1tb2R1bGUuZXhwb3J0cyA9IFJlYWN0OwotCi19LHsiLi9SZWFj
dENvbXBvbmVudCI6MjIsIi4vUmVhY3RDb21wb3NpdGVDb21wb25lbnQiOjIzLCIuL1JlYWN0RE9N
IjoyNSwiLi9SZWFjdERlZmF1bHRJbmplY3Rpb24iOjMyLCIuL1JlYWN0TW91bnQiOjM4LCIuL1Jl
YWN0UHJvcFR5cGVzIjo0NCwiLi9SZWFjdFNlcnZlclJlbmRlcmluZyI6NDZ9XSwyMjpbZnVuY3Rp
b24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7Ci0vKioKLSAqIENvcHlyaWdodCAyMDEzIEZhY2Vi
b29rLCBJbmMuCi0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJz
aW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lU
SE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNz
IG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFn
ZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGlj
ZW5zZS4KLSAqCi0gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3RDb21wb25lbnQKLSAqLwotCi0vKmpz
bGludCBldmlsOiB0cnVlICovCi0KLSJ1c2Ugc3RyaWN0IjsKLQotdmFyIFJlYWN0Q3VycmVudE93
bmVyID0gcmVxdWlyZSgiLi9SZWFjdEN1cnJlbnRPd25lciIpOwotdmFyIFJlYWN0RE9NSURPcGVy
YXRpb25zID0gcmVxdWlyZSgiLi9SZWFjdERPTUlET3BlcmF0aW9ucyIpOwotdmFyIFJlYWN0SUQg
PSByZXF1aXJlKCIuL1JlYWN0SUQiKTsKLXZhciBSZWFjdE1vdW50ID0gcmVxdWlyZSgiLi9SZWFj
dE1vdW50Iik7Ci12YXIgUmVhY3RPd25lciA9IHJlcXVpcmUoIi4vUmVhY3RPd25lciIpOwotdmFy
IFJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24gPSByZXF1aXJlKCIuL1JlYWN0UmVjb25jaWxlVHJh
bnNhY3Rpb24iKTsKLXZhciBSZWFjdFVwZGF0ZXMgPSByZXF1aXJlKCIuL1JlYWN0VXBkYXRlcyIp
OwotCi12YXIgaW52YXJpYW50ID0gcmVxdWlyZSgiLi9pbnZhcmlhbnQiKTsKLXZhciBrZXlNaXJy
b3IgPSByZXF1aXJlKCIuL2tleU1pcnJvciIpOwotdmFyIG1lcmdlID0gcmVxdWlyZSgiLi9tZXJn
ZSIpOwotCi0vKioKLSAqIFByb3Aga2V5IHRoYXQgcmVmZXJlbmNlcyBhIGNvbXBvbmVudCdzIG93
bmVyLgotICogQHByaXZhdGUKLSAqLwotdmFyIE9XTkVSID0gJ3tvd25lcn0nOwotCi0vKioKLSAq
IFByb3BzIGtleSB0aGF0IGRldGVybWluZXMgaWYgYSBjb21wb25lbnQncyBrZXkgd2FzIGFscmVh
ZHkgdmFsaWRhdGVkLgotICogQHByaXZhdGUKLSAqLwotdmFyIElTX0tFWV9WQUxJREFURUQgPSAn
e2lzLmtleS52YWxpZGF0ZWR9JzsKLQotLyoqCi0gKiBFdmVyeSBSZWFjdCBjb21wb25lbnQgaXMg
aW4gb25lIG9mIHRoZXNlIGxpZmUgY3ljbGVzLgotICovCi12YXIgQ29tcG9uZW50TGlmZUN5Y2xl
ID0ga2V5TWlycm9yKHsKLSAgLyoqCi0gICAqIE1vdW50ZWQgY29tcG9uZW50cyBoYXZlIGEgRE9N
IG5vZGUgcmVwcmVzZW50YXRpb24gYW5kIGFyZSBjYXBhYmxlIG9mCi0gICAqIHJlY2VpdmluZyBu
ZXcgcHJvcHMuCi0gICAqLwotICBNT1VOVEVEOiBudWxsLAotICAvKioKLSAgICogVW5tb3VudGVk
IGNvbXBvbmVudHMgYXJlIGluYWN0aXZlIGFuZCBjYW5ub3QgcmVjZWl2ZSBuZXcgcHJvcHMuCi0g
ICAqLwotICBVTk1PVU5URUQ6IG51bGwKLX0pOwotCi0vKioKLSAqIFdhcm4gaWYgdGhlcmUncyBu
byBrZXkgZXhwbGljaXRseSBzZXQgb24gZHluYW1pYyBhcnJheXMgb2YgY2hpbGRyZW4uCi0gKiBU
aGlzIGFsbG93cyB1cyB0byBrZWVwIHRyYWNrIG9mIGNoaWxkcmVuIGJldHdlZW4gdXBkYXRlcy4K
LSAqLwotCi12YXIgb3duZXJIYXNXYXJuZWQgPSB7fTsKLQotLyoqCi0gKiBXYXJuIGlmIHRoZSBj
b21wb25lbnQgZG9lc24ndCBoYXZlIGFuIGV4cGxpY2l0IGtleSBhc3NpZ25lZCB0byBpdC4KLSAq
IFRoaXMgY29tcG9uZW50IGlzIGluIGFuIGFycmF5LiBUaGUgYXJyYXkgY291bGQgZ3JvdyBhbmQg
c2hyaW5rIG9yIGJlCi0gKiByZW9yZGVyZWQuIEFsbCBjaGlsZHJlbiwgdGhhdCBoYXNuJ3QgYWxy
ZWFkeSBiZWVuIHZhbGlkYXRlZCwgYXJlIHJlcXVpcmVkIHRvCi0gKiBoYXZlIGEgImtleSIgcHJv
cGVydHkgYXNzaWduZWQgdG8gaXQuCi0gKgotICogQGludGVybmFsCi0gKiBAcGFyYW0ge1JlYWN0
Q29tcG9uZW50fSBjb21wb25lbnQgQ29tcG9uZW50IHRoYXQgcmVxdWlyZXMgYSBrZXkuCi0gKi8K
LWZ1bmN0aW9uIHZhbGlkYXRlRXhwbGljaXRLZXkoY29tcG9uZW50KSB7Ci0gIGlmIChjb21wb25l
bnRbSVNfS0VZX1ZBTElEQVRFRF0gfHwgY29tcG9uZW50LnByb3BzLmtleSAhPSBudWxsKSB7Ci0g
ICAgcmV0dXJuOwotICB9Ci0gIGNvbXBvbmVudFtJU19LRVlfVkFMSURBVEVEXSA9IHRydWU7Ci0K
LSAgLy8gV2UgY2FuJ3QgcHJvdmlkZSBmcmllbmRseSB3YXJuaW5ncyBmb3IgdG9wIGxldmVsIGNv
bXBvbmVudHMuCi0gIGlmICghUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCkgewotICAgIHJldHVy
bjsKLSAgfQotCi0gIC8vIE5hbWUgb2YgdGhlIGNvbXBvbmVudCB3aG9zZSByZW5kZXIgbWV0aG9k
IHRyaWVkIHRvIHBhc3MgY2hpbGRyZW4uCi0gIHZhciBjdXJyZW50TmFtZSA9IFJlYWN0Q3VycmVu
dE93bmVyLmN1cnJlbnQuY29uc3RydWN0b3IuZGlzcGxheU5hbWU7Ci0gIGlmIChvd25lckhhc1dh
cm5lZC5oYXNPd25Qcm9wZXJ0eShjdXJyZW50TmFtZSkpIHsKLSAgICByZXR1cm47Ci0gIH0KLSAg
b3duZXJIYXNXYXJuZWRbY3VycmVudE5hbWVdID0gdHJ1ZTsKLQotICB2YXIgbWVzc2FnZSA9ICdF
YWNoIGNoaWxkIGluIGFuIGFycmF5IHNob3VsZCBoYXZlIGEgdW5pcXVlICJrZXkiIHByb3AuICcg
KwotICAgICAgICAgICAgICAgICdDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiAnICsgY3VycmVu
dE5hbWUgKyAnLic7Ci0gIGlmICghY29tcG9uZW50LmlzT3duZWRCeShSZWFjdEN1cnJlbnRPd25l
ci5jdXJyZW50KSkgewotICAgIC8vIE5hbWUgb2YgdGhlIGNvbXBvbmVudCB0aGF0IG9yaWdpbmFs
bHkgY3JlYXRlZCB0aGlzIGNoaWxkLgotICAgIHZhciBjaGlsZE93bmVyTmFtZSA9Ci0gICAgICBj
b21wb25lbnQucHJvcHNbT1dORVJdICYmIGNvbXBvbmVudC5wcm9wc1tPV05FUl0uY29uc3RydWN0
b3IuZGlzcGxheU5hbWU7Ci0KLSAgICAvLyBVc3VhbGx5IHRoZSBjdXJyZW50IG93bmVyIGlzIHRo
ZSBvZmZlbmRlciwgYnV0IGlmIGl0IGFjY2VwdHMKLSAgICAvLyBjaGlsZHJlbiBhcyBhIHByb3Bl
cnR5LCBpdCBtYXkgYmUgdGhlIGNyZWF0b3Igb2YgdGhlIGNoaWxkIHRoYXQncwotICAgIC8vIHJl
c3BvbnNpYmxlIGZvciBhc3NpZ25pbmcgaXQgYSBrZXkuCi0gICAgbWVzc2FnZSArPSAnIEl0IHdh
cyBwYXNzZWQgYSBjaGlsZCBmcm9tICcgKyBjaGlsZE93bmVyTmFtZSArICcuJzsKLSAgfQotCi0g
IGNvbnNvbGUud2FybihtZXNzYWdlKTsKLX0KLQotLyoqCi0gKiBFbnN1cmUgdGhhdCBldmVyeSBj
b21wb25lbnQgZWl0aGVyIGlzIHBhc3NlZCBpbiBhIHN0YXRpYyBsb2NhdGlvbiBvciwgaWYKLSAq
IGlmIGl0J3MgcGFzc2VkIGluIGFuIGFycmF5LCBoYXMgYW4gZXhwbGljaXQga2V5IHByb3BlcnR5
IGRlZmluZWQuCi0gKgotICogQGludGVybmFsCi0gKiBAcGFyYW0geyp9IGNvbXBvbmVudCBTdGF0
aWNhbGx5IHBhc3NlZCBjaGlsZCBvZiBhbnkgdHlwZS4KLSAqIEByZXR1cm4ge2Jvb2xlYW59Ci0g
Ki8KLWZ1bmN0aW9uIHZhbGlkYXRlQ2hpbGRLZXlzKGNvbXBvbmVudCkgewotICBpZiAoQXJyYXku
aXNBcnJheShjb21wb25lbnQpKSB7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb21wb25lbnQu
bGVuZ3RoOyBpKyspIHsKLSAgICAgIHZhciBjaGlsZCA9IGNvbXBvbmVudFtpXTsKLSAgICAgIGlm
IChSZWFjdENvbXBvbmVudC5pc1ZhbGlkQ29tcG9uZW50KGNoaWxkKSkgewotICAgICAgICB2YWxp
ZGF0ZUV4cGxpY2l0S2V5KGNoaWxkKTsKLSAgICAgIH0KLSAgICB9Ci0gIH0gZWxzZSBpZiAoUmVh
Y3RDb21wb25lbnQuaXNWYWxpZENvbXBvbmVudChjb21wb25lbnQpKSB7Ci0gICAgLy8gVGhpcyBj
b21wb25lbnQgd2FzIHBhc3NlZCBpbiBhIHZhbGlkIGxvY2F0aW9uLgotICAgIGNvbXBvbmVudFtJ
U19LRVlfVkFMSURBVEVEXSA9IHRydWU7Ci0gIH0KLX0KLQotLyoqCi0gKiBDb21wb25lbnRzIGFy
ZSB0aGUgYmFzaWMgdW5pdHMgb2YgY29tcG9zaXRpb24gaW4gUmVhY3QuCi0gKgotICogRXZlcnkg
Y29tcG9uZW50IGFjY2VwdHMgYSBzZXQgb2Yga2V5ZWQgaW5wdXQgcGFyYW1ldGVycyBrbm93biBh
cyAicHJvcHMiIHRoYXQKLSAqIGFyZSBpbml0aWFsaXplZCBieSB0aGUgY29uc3RydWN0b3IuIE9u
Y2UgYSBjb21wb25lbnQgaXMgbW91bnRlZCwgdGhlIHByb3BzCi0gKiBjYW4gYmUgbXV0YXRlZCB1
c2luZyBgc2V0UHJvcHNgIG9yIGByZXBsYWNlUHJvcHNgLgotICoKLSAqIEV2ZXJ5IGNvbXBvbmVu
dCBpcyBjYXBhYmxlIG9mIHRoZSBmb2xsb3dpbmcgb3BlcmF0aW9uczoKLSAqCi0gKiAgIGBtb3Vu
dENvbXBvbmVudGAKLSAqICAgICBJbml0aWFsaXplcyB0aGUgY29tcG9uZW50LCByZW5kZXJzIG1h
cmt1cCwgYW5kIHJlZ2lzdGVycyBldmVudCBsaXN0ZW5lcnMuCi0gKgotICogICBgcmVjZWl2ZVBy
b3BzYAotICogICAgIFVwZGF0ZXMgdGhlIHJlbmRlcmVkIERPTSBub2RlcyBnaXZlbiBhIG5ldyBz
ZXQgb2YgcHJvcHMuCi0gKgotICogICBgdW5tb3VudENvbXBvbmVudGAKLSAqICAgICBSZWxlYXNl
cyBhbnkgcmVzb3VyY2VzIGFsbG9jYXRlZCBieSB0aGlzIGNvbXBvbmVudC4KLSAqCi0gKiBDb21w
b25lbnRzIGNhbiBhbHNvIGJlICJvd25lZCIgYnkgb3RoZXIgY29tcG9uZW50cy4gQmVpbmcgb3du
ZWQgYnkgYW5vdGhlcgotICogY29tcG9uZW50IG1lYW5zIGJlaW5nIGNvbnN0cnVjdGVkIGJ5IHRo
YXQgY29tcG9uZW50LiBUaGlzIGlzIGRpZmZlcmVudCBmcm9tCi0gKiBiZWluZyB0aGUgY2hpbGQg
b2YgYSBjb21wb25lbnQsIHdoaWNoIG1lYW5zIGhhdmluZyBhIERPTSByZXByZXNlbnRhdGlvbiB0
aGF0Ci0gKiBpcyBhIGNoaWxkIG9mIHRoZSBET00gcmVwcmVzZW50YXRpb24gb2YgdGhhdCBjb21w
b25lbnQuCi0gKgotICogQGNsYXNzIFJlYWN0Q29tcG9uZW50Ci0gKi8KLXZhciBSZWFjdENvbXBv
bmVudCA9IHsKLQotICAvKioKLSAgICogQHBhcmFtIHs/b2JqZWN0fSBvYmplY3QKLSAgICogQHJl
dHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBgb2JqZWN0YCBpcyBhIHZhbGlkIGNvbXBvbmVudC4KLSAg
ICogQGZpbmFsCi0gICAqLwotICBpc1ZhbGlkQ29tcG9uZW50OiBmdW5jdGlvbihvYmplY3QpIHsK
LSAgICByZXR1cm4gISEoCi0gICAgICBvYmplY3QgJiYKLSAgICAgIHR5cGVvZiBvYmplY3QubW91
bnRDb21wb25lbnRJbnRvTm9kZSA9PT0gJ2Z1bmN0aW9uJyAmJgotICAgICAgdHlwZW9mIG9iamVj
dC5yZWNlaXZlUHJvcHMgPT09ICdmdW5jdGlvbicKLSAgICApOwotICB9LAotCi0gIC8qKgotICAg
KiBHZW5lcmF0ZSBhIGtleSBzdHJpbmcgdGhhdCBpZGVudGlmaWVzIGEgY29tcG9uZW50IHdpdGhp
biBhIHNldC4KLSAgICoKLSAgICogQHBhcmFtIHsqfSBjb21wb25lbnQgQSBjb21wb25lbnQgdGhh
dCBjb3VsZCBjb250YWluIGEgbWFudWFsIGtleS4KLSAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4
IEluZGV4IHRoYXQgaXMgdXNlZCBpZiBhIG1hbnVhbCBrZXkgaXMgbm90IHByb3ZpZGVkLgotICAg
KiBAcmV0dXJuIHtzdHJpbmd9Ci0gICAqIEBpbnRlcm5hbAotICAgKi8KLSAgZ2V0S2V5OiBmdW5j
dGlvbihjb21wb25lbnQsIGluZGV4KSB7Ci0gICAgaWYgKGNvbXBvbmVudCAmJiBjb21wb25lbnQu
cHJvcHMgJiYgY29tcG9uZW50LnByb3BzLmtleSAhPSBudWxsKSB7Ci0gICAgICAvLyBFeHBsaWNp
dCBrZXkKLSAgICAgIHJldHVybiAnJyArIGNvbXBvbmVudC5wcm9wcy5rZXk7Ci0gICAgfQotICAg
IC8vIEltcGxpY2l0IGtleSBkZXRlcm1pbmVkIGJ5IHRoZSBpbmRleCBpbiB0aGUgc2V0Ci0gICAg
cmV0dXJuICcnICsgaW5kZXg7Ci0gIH0sCi0KLSAgLyoqCi0gICAqIEBpbnRlcm5hbAotICAgKi8K
LSAgTGlmZUN5Y2xlOiBDb21wb25lbnRMaWZlQ3ljbGUsCi0KLSAgLyoqCi0gICAqIFJlYWN0IHJl
ZmVyZW5jZXMgYFJlYWN0RE9NSURPcGVyYXRpb25zYCB1c2luZyB0aGlzIHByb3BlcnR5IGluIG9y
ZGVyIHRvCi0gICAqIGFsbG93IGRlcGVuZGVuY3kgaW5qZWN0aW9uLgotICAgKgotICAgKiBAaW50
ZXJuYWwKLSAgICovCi0gIERPTUlET3BlcmF0aW9uczogUmVhY3RET01JRE9wZXJhdGlvbnMsCi0K
LSAgLyoqCi0gICAqIFJlYWN0IHJlZmVyZW5jZXMgYFJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb25g
IHVzaW5nIHRoaXMgcHJvcGVydHkgaW4gb3JkZXIKLSAgICogdG8gYWxsb3cgZGVwZW5kZW5jeSBp
bmplY3Rpb24uCi0gICAqCi0gICAqIEBpbnRlcm5hbAotICAgKi8KLSAgUmVhY3RSZWNvbmNpbGVU
cmFuc2FjdGlvbjogUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbiwKLQotICAvKioKLSAgICogQHBh
cmFtIHtvYmplY3R9IERPTUlET3BlcmF0aW9ucwotICAgKiBAZmluYWwKLSAgICovCi0gIHNldERP
TU9wZXJhdGlvbnM6IGZ1bmN0aW9uKERPTUlET3BlcmF0aW9ucykgewotICAgIFJlYWN0Q29tcG9u
ZW50LkRPTUlET3BlcmF0aW9ucyA9IERPTUlET3BlcmF0aW9uczsKLSAgfSwKLQotICAvKioKLSAg
ICogQHBhcmFtIHtUcmFuc2FjdGlvbn0gUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbgotICAgKiBA
ZmluYWwKLSAgICovCi0gIHNldFJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb246IGZ1bmN0aW9uKFJl
YWN0UmVjb25jaWxlVHJhbnNhY3Rpb24pIHsKLSAgICBSZWFjdENvbXBvbmVudC5SZWFjdFJlY29u
Y2lsZVRyYW5zYWN0aW9uID0gUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbjsKLSAgfSwKLQotICAv
KioKLSAgICogQmFzZSBmdW5jdGlvbmFsaXR5IGZvciBldmVyeSBSZWFjdENvbXBvbmVudCBjb25z
dHJ1Y3Rvci4KLSAgICoKLSAgICogQGxlbmRzIHtSZWFjdENvbXBvbmVudC5wcm90b3R5cGV9Ci0g
ICAqLwotICBNaXhpbjogewotCi0gICAgLyoqCi0gICAgICogQ2hlY2tzIHdoZXRoZXIgb3Igbm90
IHRoaXMgY29tcG9uZW50IGlzIG1vdW50ZWQuCi0gICAgICoKLSAgICAgKiBAcmV0dXJuIHtib29s
ZWFufSBUcnVlIGlmIG1vdW50ZWQsIGZhbHNlIG90aGVyd2lzZS4KLSAgICAgKiBAZmluYWwKLSAg
ICAgKiBAcHJvdGVjdGVkCi0gICAgICovCi0gICAgaXNNb3VudGVkOiBmdW5jdGlvbigpIHsKLSAg
ICAgIHJldHVybiB0aGlzLl9saWZlQ3ljbGVTdGF0ZSA9PT0gQ29tcG9uZW50TGlmZUN5Y2xlLk1P
VU5URUQ7Ci0gICAgfSwKLQotICAgIC8qKgotICAgICAqIFJldHVybnMgdGhlIERPTSBub2RlIHJl
bmRlcmVkIGJ5IHRoaXMgY29tcG9uZW50LgotICAgICAqCi0gICAgICogQHJldHVybiB7RE9NRWxl
bWVudH0gVGhlIHJvb3Qgbm9kZSBvZiB0aGlzIGNvbXBvbmVudC4KLSAgICAgKiBAZmluYWwKLSAg
ICAgKiBAcHJvdGVjdGVkCi0gICAgICovCi0gICAgZ2V0RE9NTm9kZTogZnVuY3Rpb24oKSB7Ci0g
ICAgICBpbnZhcmlhbnQoCi0gICAgICAgIHRoaXMuaXNNb3VudGVkKCksCi0gICAgICAgICdnZXRE
T01Ob2RlKCk6IEEgY29tcG9uZW50IG11c3QgYmUgbW91bnRlZCB0byBoYXZlIGEgRE9NIG5vZGUu
JwotICAgICAgKTsKLSAgICAgIHJldHVybiBSZWFjdElELmdldE5vZGUodGhpcy5fcm9vdE5vZGVJ
RCk7Ci0gICAgfSwKLQotICAgIC8qKgotICAgICAqIFNldHMgYSBzdWJzZXQgb2YgdGhlIHByb3Bz
LgotICAgICAqCi0gICAgICogQHBhcmFtIHtvYmplY3R9IHBhcnRpYWxQcm9wcyBTdWJzZXQgb2Yg
dGhlIG5leHQgcHJvcHMuCi0gICAgICogQHBhcmFtIHs/ZnVuY3Rpb259IGNhbGxiYWNrIENhbGxl
ZCBhZnRlciBwcm9wcyBhcmUgdXBkYXRlZC4KLSAgICAgKiBAZmluYWwKLSAgICAgKiBAcHVibGlj
Ci0gICAgICovCi0gICAgc2V0UHJvcHM6IGZ1bmN0aW9uKHBhcnRpYWxQcm9wcywgY2FsbGJhY2sp
IHsKLSAgICAgIC8vIE1lcmdlIHdpdGggYF9wZW5kaW5nUHJvcHNgIGlmIGl0IGV4aXN0cywgb3Ro
ZXJ3aXNlIHdpdGggZXhpc3RpbmcgcHJvcHMuCi0gICAgICB0aGlzLnJlcGxhY2VQcm9wcygKLSAg
ICAgICAgbWVyZ2UodGhpcy5fcGVuZGluZ1Byb3BzIHx8IHRoaXMucHJvcHMsIHBhcnRpYWxQcm9w
cyksCi0gICAgICAgIGNhbGxiYWNrCi0gICAgICApOwotICAgIH0sCi0KLSAgICAvKioKLSAgICAg
KiBSZXBsYWNlcyBhbGwgb2YgdGhlIHByb3BzLgotICAgICAqCi0gICAgICogQHBhcmFtIHtvYmpl
Y3R9IHByb3BzIE5ldyBwcm9wcy4KLSAgICAgKiBAcGFyYW0gez9mdW5jdGlvbn0gY2FsbGJhY2sg
Q2FsbGVkIGFmdGVyIHByb3BzIGFyZSB1cGRhdGVkLgotICAgICAqIEBmaW5hbAotICAgICAqIEBw
dWJsaWMKLSAgICAgKi8KLSAgICByZXBsYWNlUHJvcHM6IGZ1bmN0aW9uKHByb3BzLCBjYWxsYmFj
aykgewotICAgICAgaW52YXJpYW50KAotICAgICAgICAhdGhpcy5wcm9wc1tPV05FUl0sCi0gICAg
ICAgICdyZXBsYWNlUHJvcHMoLi4uKTogWW91IGNhbGxlZCBgc2V0UHJvcHNgIG9yIGByZXBsYWNl
UHJvcHNgIG9uIGEgJyArCi0gICAgICAgICdjb21wb25lbnQgd2l0aCBhbiBvd25lci4gVGhpcyBp
cyBhbiBhbnRpLXBhdHRlcm4gc2luY2UgcHJvcHMgd2lsbCAnICsKLSAgICAgICAgJ2dldCByZWFj
dGl2ZWx5IHVwZGF0ZWQgd2hlbiByZW5kZXJlZC4gSW5zdGVhZCwgY2hhbmdlIHRoZSBvd25lclwn
cyAnICsKLSAgICAgICAgJ2ByZW5kZXJgIG1ldGhvZCB0byBwYXNzIHRoZSBjb3JyZWN0IHZhbHVl
IGFzIHByb3BzIHRvIHRoZSBjb21wb25lbnQgJyArCi0gICAgICAgICd3aGVyZSBpdCBpcyBjcmVh
dGVkLicKLSAgICAgICk7Ci0gICAgICB0aGlzLl9wZW5kaW5nUHJvcHMgPSBwcm9wczsKLSAgICAg
IFJlYWN0VXBkYXRlcy5lbnF1ZXVlVXBkYXRlKHRoaXMsIGNhbGxiYWNrKTsKLSAgICB9LAotCi0g
ICAgLyoqCi0gICAgICogQmFzZSBjb25zdHJ1Y3RvciBmb3IgYWxsIFJlYWN0IGNvbXBvbmVudC4K
LSAgICAgKgotICAgICAqIFN1YmNsYXNzZXMgdGhhdCBvdmVycmlkZSB0aGlzIG1ldGhvZCBzaG91
bGQgbWFrZSBzdXJlIHRvIGludm9rZQotICAgICAqIGBSZWFjdENvbXBvbmVudC5NaXhpbi5jb25z
dHJ1Y3QuY2FsbCh0aGlzLCAuLi4pYC4KLSAgICAgKgotICAgICAqIEBwYXJhbSB7P29iamVjdH0g
aW5pdGlhbFByb3BzCi0gICAgICogQHBhcmFtIHsqfSBjaGlsZHJlbgotICAgICAqIEBpbnRlcm5h
bAotICAgICAqLwotICAgIGNvbnN0cnVjdDogZnVuY3Rpb24oaW5pdGlhbFByb3BzLCBjaGlsZHJl
bikgewotICAgICAgdGhpcy5wcm9wcyA9IGluaXRpYWxQcm9wcyB8fCB7fTsKLSAgICAgIC8vIFJl
Y29yZCB0aGUgY29tcG9uZW50IHJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyB0aGlzIGNvbXBvbmVu
dC4KLSAgICAgIHRoaXMucHJvcHNbT1dORVJdID0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVudDsK
LSAgICAgIC8vIEFsbCBjb21wb25lbnRzIHN0YXJ0IHVubW91bnRlZC4KLSAgICAgIHRoaXMuX2xp
ZmVDeWNsZVN0YXRlID0gQ29tcG9uZW50TGlmZUN5Y2xlLlVOTU9VTlRFRDsKLQotICAgICAgdGhp
cy5fcGVuZGluZ1Byb3BzID0gbnVsbDsKLSAgICAgIHRoaXMuX3BlbmRpbmdDYWxsYmFja3MgPSBu
dWxsOwotCi0gICAgICAvLyBDaGlsZHJlbiBjYW4gYmUgbW9yZSB0aGFuIG9uZSBhcmd1bWVudAot
ICAgICAgdmFyIGNoaWxkcmVuTGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aCAtIDE7Ci0gICAgICBp
ZiAoY2hpbGRyZW5MZW5ndGggPT09IDEpIHsKLSAgICAgICAgaWYgKHRydWUpIHsKLSAgICAgICAg
ICB2YWxpZGF0ZUNoaWxkS2V5cyhjaGlsZHJlbik7Ci0gICAgICAgIH0KLSAgICAgICAgdGhpcy5w
cm9wcy5jaGlsZHJlbiA9IGNoaWxkcmVuOwotICAgICAgfSBlbHNlIGlmIChjaGlsZHJlbkxlbmd0
aCA+IDEpIHsKLSAgICAgICAgdmFyIGNoaWxkQXJyYXkgPSBBcnJheShjaGlsZHJlbkxlbmd0aCk7
Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW5MZW5ndGg7IGkrKykgewotICAg
ICAgICAgIGlmICh0cnVlKSB7Ci0gICAgICAgICAgICB2YWxpZGF0ZUNoaWxkS2V5cyhhcmd1bWVu
dHNbaSArIDFdKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgY2hpbGRBcnJheVtpXSA9IGFyZ3Vt
ZW50c1tpICsgMV07Ci0gICAgICAgIH0KLSAgICAgICAgdGhpcy5wcm9wcy5jaGlsZHJlbiA9IGNo
aWxkQXJyYXk7Ci0gICAgICB9Ci0gICAgfSwKLQotICAgIC8qKgotICAgICAqIEluaXRpYWxpemVz
IHRoZSBjb21wb25lbnQsIHJlbmRlcnMgbWFya3VwLCBhbmQgcmVnaXN0ZXJzIGV2ZW50IGxpc3Rl
bmVycy4KLSAgICAgKgotICAgICAqIE5PVEU6IFRoaXMgZG9lcyBub3QgaW5zZXJ0IGFueSBub2Rl
cyBpbnRvIHRoZSBET00uCi0gICAgICoKLSAgICAgKiBTdWJjbGFzc2VzIHRoYXQgb3ZlcnJpZGUg
dGhpcyBtZXRob2Qgc2hvdWxkIG1ha2Ugc3VyZSB0byBpbnZva2UKLSAgICAgKiBgUmVhY3RDb21w
b25lbnQuTWl4aW4ubW91bnRDb21wb25lbnQuY2FsbCh0aGlzLCAuLi4pYC4KLSAgICAgKgotICAg
ICAqIEBwYXJhbSB7c3RyaW5nfSByb290SUQgRE9NIElEIG9mIHRoZSByb290IG5vZGUuCi0gICAg
ICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvbgotICAgICAq
IEByZXR1cm4gez9zdHJpbmd9IFJlbmRlcmVkIG1hcmt1cCB0byBiZSBpbnNlcnRlZCBpbnRvIHRo
ZSBET00uCi0gICAgICogQGludGVybmFsCi0gICAgICovCi0gICAgbW91bnRDb21wb25lbnQ6IGZ1
bmN0aW9uKHJvb3RJRCwgdHJhbnNhY3Rpb24pIHsKLSAgICAgIGludmFyaWFudCgKLSAgICAgICAg
IXRoaXMuaXNNb3VudGVkKCksCi0gICAgICAgICdtb3VudENvbXBvbmVudCglcywgLi4uKTogQ2Fu
IG9ubHkgbW91bnQgYW4gdW5tb3VudGVkIGNvbXBvbmVudC4nLAotICAgICAgICByb290SUQKLSAg
ICAgICk7Ci0gICAgICB2YXIgcHJvcHMgPSB0aGlzLnByb3BzOwotICAgICAgaWYgKHByb3BzLnJl
ZiAhPSBudWxsKSB7Ci0gICAgICAgIFJlYWN0T3duZXIuYWRkQ29tcG9uZW50QXNSZWZUbyh0aGlz
LCBwcm9wcy5yZWYsIHByb3BzW09XTkVSXSk7Ci0gICAgICB9Ci0gICAgICB0aGlzLl9yb290Tm9k
ZUlEID0gcm9vdElEOwotICAgICAgdGhpcy5fbGlmZUN5Y2xlU3RhdGUgPSBDb21wb25lbnRMaWZl
Q3ljbGUuTU9VTlRFRDsKLSAgICAgIC8vIEVmZmVjdGl2ZWx5OiByZXR1cm4gJyc7Ci0gICAgfSwK
LQotICAgIC8qKgotICAgICAqIFJlbGVhc2VzIGFueSByZXNvdXJjZXMgYWxsb2NhdGVkIGJ5IGBt
b3VudENvbXBvbmVudGAuCi0gICAgICoKLSAgICAgKiBOT1RFOiBUaGlzIGRvZXMgbm90IHJlbW92
ZSBhbnkgbm9kZXMgZnJvbSB0aGUgRE9NLgotICAgICAqCi0gICAgICogU3ViY2xhc3NlcyB0aGF0
IG92ZXJyaWRlIHRoaXMgbWV0aG9kIHNob3VsZCBtYWtlIHN1cmUgdG8gaW52b2tlCi0gICAgICog
YFJlYWN0Q29tcG9uZW50Lk1peGluLnVubW91bnRDb21wb25lbnQuY2FsbCh0aGlzKWAuCi0gICAg
ICoKLSAgICAgKiBAaW50ZXJuYWwKLSAgICAgKi8KLSAgICB1bm1vdW50Q29tcG9uZW50OiBmdW5j
dGlvbigpIHsKLSAgICAgIGludmFyaWFudCgKLSAgICAgICAgdGhpcy5pc01vdW50ZWQoKSwKLSAg
ICAgICAgJ3VubW91bnRDb21wb25lbnQoKTogQ2FuIG9ubHkgdW5tb3VudCBhIG1vdW50ZWQgY29t
cG9uZW50LicKLSAgICAgICk7Ci0gICAgICB2YXIgcHJvcHMgPSB0aGlzLnByb3BzOwotICAgICAg
aWYgKHByb3BzLnJlZiAhPSBudWxsKSB7Ci0gICAgICAgIFJlYWN0T3duZXIucmVtb3ZlQ29tcG9u
ZW50QXNSZWZGcm9tKHRoaXMsIHByb3BzLnJlZiwgcHJvcHNbT1dORVJdKTsKLSAgICAgIH0KLSAg
ICAgIFJlYWN0SUQucHVyZ2VJRCh0aGlzLl9yb290Tm9kZUlEKTsKLSAgICAgIHRoaXMuX3Jvb3RO
b2RlSUQgPSBudWxsOwotICAgICAgdGhpcy5fbGlmZUN5Y2xlU3RhdGUgPSBDb21wb25lbnRMaWZl
Q3ljbGUuVU5NT1VOVEVEOwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBVcGRhdGVzIHRoZSBy
ZW5kZXJlZCBET00gbm9kZXMgZ2l2ZW4gYSBuZXcgc2V0IG9mIHByb3BzLgotICAgICAqCi0gICAg
ICogU3ViY2xhc3NlcyB0aGF0IG92ZXJyaWRlIHRoaXMgbWV0aG9kIHNob3VsZCBtYWtlIHN1cmUg
dG8gaW52b2tlCi0gICAgICogYFJlYWN0Q29tcG9uZW50Lk1peGluLnJlY2VpdmVQcm9wcy5jYWxs
KHRoaXMsIC4uLilgLgotICAgICAqCi0gICAgICogQHBhcmFtIHtvYmplY3R9IG5leHRQcm9wcyBO
ZXh0IHNldCBvZiBwcm9wZXJ0aWVzLgotICAgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFu
c2FjdGlvbn0gdHJhbnNhY3Rpb24KLSAgICAgKiBAaW50ZXJuYWwKLSAgICAgKi8KLSAgICByZWNl
aXZlUHJvcHM6IGZ1bmN0aW9uKG5leHRQcm9wcywgdHJhbnNhY3Rpb24pIHsKLSAgICAgIGludmFy
aWFudCgKLSAgICAgICAgdGhpcy5pc01vdW50ZWQoKSwKLSAgICAgICAgJ3JlY2VpdmVQcm9wcygu
Li4pOiBDYW4gb25seSB1cGRhdGUgYSBtb3VudGVkIGNvbXBvbmVudC4nCi0gICAgICApOwotICAg
ICAgdGhpcy5fcGVuZGluZ1Byb3BzID0gbmV4dFByb3BzOwotICAgICAgdGhpcy5fcGVyZm9ybVVw
ZGF0ZUlmTmVjZXNzYXJ5KHRyYW5zYWN0aW9uKTsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICog
Q2FsbCBgX3BlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeWAgd2l0aGluIGEgbmV3IHRyYW5zYWN0aW9u
LgotICAgICAqCi0gICAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFu
c2FjdGlvbgotICAgICAqIEBpbnRlcm5hbAotICAgICAqLwotICAgIHBlcmZvcm1VcGRhdGVJZk5l
Y2Vzc2FyeTogZnVuY3Rpb24oKSB7Ci0gICAgICB2YXIgdHJhbnNhY3Rpb24gPSBSZWFjdENvbXBv
bmVudC5SZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uLmdldFBvb2xlZCgpOwotICAgICAgdHJhbnNh
Y3Rpb24ucGVyZm9ybSh0aGlzLl9wZXJmb3JtVXBkYXRlSWZOZWNlc3NhcnksIHRoaXMsIHRyYW5z
YWN0aW9uKTsKLSAgICAgIFJlYWN0Q29tcG9uZW50LlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24u
cmVsZWFzZSh0cmFuc2FjdGlvbik7Ci0gICAgfSwKLQotICAgIC8qKgotICAgICAqIElmIGBfcGVu
ZGluZ1Byb3BzYCBpcyBzZXQsIHVwZGF0ZSB0aGUgY29tcG9uZW50LgotICAgICAqCi0gICAgICog
QHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvbgotICAgICAqIEBp
bnRlcm5hbAotICAgICAqLwotICAgIF9wZXJmb3JtVXBkYXRlSWZOZWNlc3Nhcnk6IGZ1bmN0aW9u
KHRyYW5zYWN0aW9uKSB7Ci0gICAgICBpZiAodGhpcy5fcGVuZGluZ1Byb3BzID09IG51bGwpIHsK
LSAgICAgICAgcmV0dXJuOwotICAgICAgfQotICAgICAgdmFyIHByZXZQcm9wcyA9IHRoaXMucHJv
cHM7Ci0gICAgICB0aGlzLnByb3BzID0gdGhpcy5fcGVuZGluZ1Byb3BzOwotICAgICAgdGhpcy5f
cGVuZGluZ1Byb3BzID0gbnVsbDsKLSAgICAgIHRoaXMudXBkYXRlQ29tcG9uZW50KHRyYW5zYWN0
aW9uLCBwcmV2UHJvcHMpOwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBVcGRhdGVzIHRoZSBj
b21wb25lbnQncyBjdXJyZW50bHkgbW91bnRlZCByZXByZXNlbnRhdGlvbi4KLSAgICAgKgotICAg
ICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb24KLSAgICAg
KiBAcGFyYW0ge29iamVjdH0gcHJldlByb3BzCi0gICAgICogQGludGVybmFsCi0gICAgICovCi0g
ICAgdXBkYXRlQ29tcG9uZW50OiBmdW5jdGlvbih0cmFuc2FjdGlvbiwgcHJldlByb3BzKSB7Ci0g
ICAgICB2YXIgcHJvcHMgPSB0aGlzLnByb3BzOwotICAgICAgLy8gSWYgZWl0aGVyIHRoZSBvd25l
ciBvciBhIGByZWZgIGhhcyBjaGFuZ2VkLCBtYWtlIHN1cmUgdGhlIG5ld2VzdCBvd25lcgotICAg
ICAgLy8gaGFzIHN0b3JlZCBhIHJlZmVyZW5jZSB0byBgdGhpc2AsIGFuZCB0aGUgcHJldmlvdXMg
b3duZXIgKGlmIGRpZmZlcmVudCkKLSAgICAgIC8vIGhhcyBmb3Jnb3R0ZW4gdGhlIHJlZmVyZW5j
ZSB0byBgdGhpc2AuCi0gICAgICBpZiAocHJvcHNbT1dORVJdICE9PSBwcmV2UHJvcHNbT1dORVJd
IHx8IHByb3BzLnJlZiAhPT0gcHJldlByb3BzLnJlZikgewotICAgICAgICBpZiAocHJldlByb3Bz
LnJlZiAhPSBudWxsKSB7Ci0gICAgICAgICAgUmVhY3RPd25lci5yZW1vdmVDb21wb25lbnRBc1Jl
ZkZyb20oCi0gICAgICAgICAgICB0aGlzLCBwcmV2UHJvcHMucmVmLCBwcmV2UHJvcHNbT1dORVJd
Ci0gICAgICAgICAgKTsKLSAgICAgICAgfQotICAgICAgICAvLyBDb3JyZWN0LCBldmVuIGlmIHRo
ZSBvd25lciBpcyB0aGUgc2FtZSwgYW5kIG9ubHkgdGhlIHJlZiBoYXMgY2hhbmdlZC4KLSAgICAg
ICAgaWYgKHByb3BzLnJlZiAhPSBudWxsKSB7Ci0gICAgICAgICAgUmVhY3RPd25lci5hZGRDb21w
b25lbnRBc1JlZlRvKHRoaXMsIHByb3BzLnJlZiwgcHJvcHNbT1dORVJdKTsKLSAgICAgICAgfQot
ICAgICAgfQotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBNb3VudHMgdGhpcyBjb21wb25lbnQg
YW5kIGluc2VydHMgaXQgaW50byB0aGUgRE9NLgotICAgICAqCi0gICAgICogQHBhcmFtIHtzdHJp
bmd9IHJvb3RJRCBET00gSUQgb2YgdGhlIHJvb3Qgbm9kZS4KLSAgICAgKiBAcGFyYW0ge0RPTUVs
ZW1lbnR9IGNvbnRhaW5lciBET00gZWxlbWVudCB0byBtb3VudCBpbnRvLgotICAgICAqIEBwYXJh
bSB7Ym9vbGVhbn0gc2hvdWxkUmV1c2VNYXJrdXAgSWYgdHJ1ZSwgZG8gbm90IGluc2VydCBtYXJr
dXAKLSAgICAgKiBAZmluYWwKLSAgICAgKiBAaW50ZXJuYWwKLSAgICAgKiBAc2VlIHtSZWFjdE1v
dW50LnJlbmRlckNvbXBvbmVudH0KLSAgICAgKi8KLSAgICBtb3VudENvbXBvbmVudEludG9Ob2Rl
OiBmdW5jdGlvbihyb290SUQsIGNvbnRhaW5lciwgc2hvdWxkUmV1c2VNYXJrdXApIHsKLSAgICAg
IHZhciB0cmFuc2FjdGlvbiA9IFJlYWN0Q29tcG9uZW50LlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rp
b24uZ2V0UG9vbGVkKCk7Ci0gICAgICB0cmFuc2FjdGlvbi5wZXJmb3JtKAotICAgICAgICB0aGlz
Ll9tb3VudENvbXBvbmVudEludG9Ob2RlLAotICAgICAgICB0aGlzLAotICAgICAgICByb290SUQs
Ci0gICAgICAgIGNvbnRhaW5lciwKLSAgICAgICAgdHJhbnNhY3Rpb24sCi0gICAgICAgIHNob3Vs
ZFJldXNlTWFya3VwCi0gICAgICApOwotICAgICAgUmVhY3RDb21wb25lbnQuUmVhY3RSZWNvbmNp
bGVUcmFuc2FjdGlvbi5yZWxlYXNlKHRyYW5zYWN0aW9uKTsKLSAgICB9LAotCi0gICAgLyoqCi0g
ICAgICogQHBhcmFtIHtzdHJpbmd9IHJvb3RJRCBET00gSUQgb2YgdGhlIHJvb3Qgbm9kZS4KLSAg
ICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGNvbnRhaW5lciBET00gZWxlbWVudCB0byBtb3VudCBp
bnRvLgotICAgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rp
b24KLSAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IHNob3VsZFJldXNlTWFya3VwIElmIHRydWUsIGRv
IG5vdCBpbnNlcnQgbWFya3VwCi0gICAgICogQGZpbmFsCi0gICAgICogQHByaXZhdGUKLSAgICAg
Ki8KLSAgICBfbW91bnRDb21wb25lbnRJbnRvTm9kZTogZnVuY3Rpb24oCi0gICAgICAgIHJvb3RJ
RCwKLSAgICAgICAgY29udGFpbmVyLAotICAgICAgICB0cmFuc2FjdGlvbiwKLSAgICAgICAgc2hv
dWxkUmV1c2VNYXJrdXApIHsKLSAgICAgIGludmFyaWFudCgKLSAgICAgICAgY29udGFpbmVyICYm
IGNvbnRhaW5lci5ub2RlVHlwZSA9PT0gMSwKLSAgICAgICAgJ21vdW50Q29tcG9uZW50SW50b05v
ZGUoLi4uKTogVGFyZ2V0IGNvbnRhaW5lciBpcyBub3QgYSBET00gZWxlbWVudC4nCi0gICAgICAp
OwotICAgICAgdmFyIHJlbmRlclN0YXJ0ID0gRGF0ZS5ub3coKTsKLSAgICAgIHZhciBtYXJrdXAg
PSB0aGlzLm1vdW50Q29tcG9uZW50KHJvb3RJRCwgdHJhbnNhY3Rpb24pOwotICAgICAgUmVhY3RN
b3VudC50b3RhbEluc3RhbnRpYXRpb25UaW1lICs9IChEYXRlLm5vdygpIC0gcmVuZGVyU3RhcnQp
OwotCi0gICAgICBpZiAoc2hvdWxkUmV1c2VNYXJrdXApIHsKLSAgICAgICAgcmV0dXJuOwotICAg
ICAgfQotCi0gICAgICB2YXIgaW5qZWN0aW9uU3RhcnQgPSBEYXRlLm5vdygpOwotICAgICAgLy8g
QXN5bmNocm9ub3VzbHkgaW5qZWN0IG1hcmt1cCBieSBlbnN1cmluZyB0aGF0IHRoZSBjb250YWlu
ZXIgaXMgbm90IGluCi0gICAgICAvLyB0aGUgZG9jdW1lbnQgd2hlbiBzZXR0aW5ncyBpdHMgYGlu
bmVySFRNTGAuCi0gICAgICB2YXIgcGFyZW50ID0gY29udGFpbmVyLnBhcmVudE5vZGU7Ci0gICAg
ICBpZiAocGFyZW50KSB7Ci0gICAgICAgIHZhciBuZXh0ID0gY29udGFpbmVyLm5leHRTaWJsaW5n
OwotICAgICAgICBwYXJlbnQucmVtb3ZlQ2hpbGQoY29udGFpbmVyKTsKLSAgICAgICAgY29udGFp
bmVyLmlubmVySFRNTCA9IG1hcmt1cDsKLSAgICAgICAgaWYgKG5leHQpIHsKLSAgICAgICAgICBw
YXJlbnQuaW5zZXJ0QmVmb3JlKGNvbnRhaW5lciwgbmV4dCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgcGFyZW50LmFwcGVuZENoaWxkKGNvbnRhaW5lcik7Ci0gICAgICAgIH0KLSAgICAg
IH0gZWxzZSB7Ci0gICAgICAgIGNvbnRhaW5lci5pbm5lckhUTUwgPSBtYXJrdXA7Ci0gICAgICB9
Ci0gICAgICBSZWFjdE1vdW50LnRvdGFsSW5qZWN0aW9uVGltZSArPSAoRGF0ZS5ub3coKSAtIGlu
amVjdGlvblN0YXJ0KTsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICogVW5tb3VudHMgdGhpcyBj
b21wb25lbnQgYW5kIHJlbW92ZXMgaXQgZnJvbSB0aGUgRE9NLgotICAgICAqCi0gICAgICogQHBh
cmFtIHtET01FbGVtZW50fSBjb250YWluZXIgRE9NIGVsZW1lbnQgdG8gdW5tb3VudCBmcm9tLgot
ICAgICAqIEBmaW5hbAotICAgICAqIEBpbnRlcm5hbAotICAgICAqIEBzZWUge1JlYWN0TW91bnQu
dW5tb3VudEFuZFJlbGVhc2VSZWFjdFJvb3ROb2RlfQotICAgICAqLwotICAgIHVubW91bnRDb21w
b25lbnRGcm9tTm9kZTogZnVuY3Rpb24oY29udGFpbmVyKSB7Ci0gICAgICB0aGlzLnVubW91bnRD
b21wb25lbnQoKTsKLSAgICAgIC8vIGh0dHA6Ly9qc3BlcmYuY29tL2VtcHR5aW5nLWEtbm9kZQot
ICAgICAgd2hpbGUgKGNvbnRhaW5lci5sYXN0Q2hpbGQpIHsKLSAgICAgICAgY29udGFpbmVyLnJl
bW92ZUNoaWxkKGNvbnRhaW5lci5sYXN0Q2hpbGQpOwotICAgICAgfQotICAgIH0sCi0KLSAgICAv
KioKLSAgICAgKiBDaGVja3MgaWYgdGhpcyBjb21wb25lbnQgaXMgb3duZWQgYnkgdGhlIHN1cHBs
aWVkIGBvd25lcmAgY29tcG9uZW50LgotICAgICAqCi0gICAgICogQHBhcmFtIHtSZWFjdENvbXBv
bmVudH0gb3duZXIgQ29tcG9uZW50IHRvIGNoZWNrLgotICAgICAqIEByZXR1cm4ge2Jvb2xlYW59
IFRydWUgaWYgYG93bmVyc2Agb3ducyB0aGlzIGNvbXBvbmVudC4KLSAgICAgKiBAZmluYWwKLSAg
ICAgKiBAaW50ZXJuYWwKLSAgICAgKi8KLSAgICBpc093bmVkQnk6IGZ1bmN0aW9uKG93bmVyKSB7
Ci0gICAgICByZXR1cm4gdGhpcy5wcm9wc1tPV05FUl0gPT09IG93bmVyOwotICAgIH0sCi0KLSAg
ICAvKioKLSAgICAgKiBHZXRzIGFub3RoZXIgY29tcG9uZW50LCB0aGF0IHNoYXJlcyB0aGUgc2Ft
ZSBvd25lciBhcyB0aGlzIG9uZSwgYnkgcmVmLgotICAgICAqCi0gICAgICogQHBhcmFtIHtzdHJp
bmd9IHJlZiBvZiBhIHNpYmxpbmcgQ29tcG9uZW50LgotICAgICAqIEByZXR1cm4gez9SZWFjdENv
bXBvbmVudH0gdGhlIGFjdHVhbCBzaWJsaW5nIENvbXBvbmVudC4KLSAgICAgKiBAZmluYWwKLSAg
ICAgKiBAaW50ZXJuYWwKLSAgICAgKi8KLSAgICBnZXRTaWJsaW5nQnlSZWY6IGZ1bmN0aW9uKHJl
ZikgewotICAgICAgdmFyIG93bmVyID0gdGhpcy5wcm9wc1tPV05FUl07Ci0gICAgICBpZiAoIW93
bmVyIHx8ICFvd25lci5yZWZzKSB7Ci0gICAgICAgIHJldHVybiBudWxsOwotICAgICAgfQotICAg
ICAgcmV0dXJuIG93bmVyLnJlZnNbcmVmXTsKLSAgICB9Ci0KLSAgfQotCi19OwotCi1tb2R1bGUu
ZXhwb3J0cyA9IFJlYWN0Q29tcG9uZW50OwotCi19LHsiLi9SZWFjdEN1cnJlbnRPd25lciI6MjQs
Ii4vUmVhY3RET01JRE9wZXJhdGlvbnMiOjI3LCIuL1JlYWN0SUQiOjM1LCIuL1JlYWN0TW91bnQi
OjM4LCIuL1JlYWN0T3duZXIiOjQyLCIuL1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24iOjQ1LCIu
L1JlYWN0VXBkYXRlcyI6NDgsIi4vaW52YXJpYW50Ijo3NSwiLi9rZXlNaXJyb3IiOjc4LCIuL21l
cmdlIjo4MX1dLDIzOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKLShmdW5jdGlv
bigpey8qKgotICogQ29weXJpZ2h0IDIwMTMgRmFjZWJvb2ssIEluYy4KLSAqCi0gKiBMaWNlbnNl
ZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsK
LSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0
aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAot
ICoKLSAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAq
IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGlu
Zywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElU
SU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUg
TGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBh
bmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICoKLSAqIEBwcm92aWRlc01v
ZHVsZSBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudAotICovCi0KLSJ1c2Ugc3RyaWN0IjsKLQotdmFy
IFJlYWN0Q29tcG9uZW50ID0gcmVxdWlyZSgiLi9SZWFjdENvbXBvbmVudCIpOwotdmFyIFJlYWN0
Q3VycmVudE93bmVyID0gcmVxdWlyZSgiLi9SZWFjdEN1cnJlbnRPd25lciIpOwotdmFyIFJlYWN0
T3duZXIgPSByZXF1aXJlKCIuL1JlYWN0T3duZXIiKTsKLXZhciBSZWFjdFByb3BUcmFuc2ZlcmVy
ID0gcmVxdWlyZSgiLi9SZWFjdFByb3BUcmFuc2ZlcmVyIik7Ci12YXIgUmVhY3RVcGRhdGVzID0g
cmVxdWlyZSgiLi9SZWFjdFVwZGF0ZXMiKTsKLQotdmFyIGludmFyaWFudCA9IHJlcXVpcmUoIi4v
aW52YXJpYW50Iik7Ci12YXIga2V5TWlycm9yID0gcmVxdWlyZSgiLi9rZXlNaXJyb3IiKTsKLXZh
ciBtZXJnZSA9IHJlcXVpcmUoIi4vbWVyZ2UiKTsKLXZhciBtaXhJbnRvID0gcmVxdWlyZSgiLi9t
aXhJbnRvIik7Ci0KLS8qKgotICogUG9saWNpZXMgdGhhdCBkZXNjcmliZSBtZXRob2RzIGluIGBS
ZWFjdENvbXBvc2l0ZUNvbXBvbmVudEludGVyZmFjZWAuCi0gKi8KLXZhciBTcGVjUG9saWN5ID0g
a2V5TWlycm9yKHsKLSAgLyoqCi0gICAqIFRoZXNlIG1ldGhvZHMgbWF5IGJlIGRlZmluZWQgb25s
eSBvbmNlIGJ5IHRoZSBjbGFzcyBzcGVjaWZpY2F0aW9uIG9yIG1peGluLgotICAgKi8KLSAgREVG
SU5FX09OQ0U6IG51bGwsCi0gIC8qKgotICAgKiBUaGVzZSBtZXRob2RzIG1heSBiZSBkZWZpbmVk
IGJ5IGJvdGggdGhlIGNsYXNzIHNwZWNpZmljYXRpb24gYW5kIG1peGlucy4KLSAgICogU3Vic2Vx
dWVudCBkZWZpbml0aW9ucyB3aWxsIGJlIGNoYWluZWQuIFRoZXNlIG1ldGhvZHMgbXVzdCByZXR1
cm4gdm9pZC4KLSAgICovCi0gIERFRklORV9NQU5ZOiBudWxsLAotICAvKioKLSAgICogVGhlc2Ug
bWV0aG9kcyBhcmUgb3ZlcnJpZGluZyB0aGUgYmFzZSBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCBj
bGFzcy4KLSAgICovCi0gIE9WRVJSSURFX0JBU0U6IG51bGwKLX0pOwotCi0vKioKLSAqIENvbXBv
c2l0ZSBjb21wb25lbnRzIGFyZSBoaWdoZXItbGV2ZWwgY29tcG9uZW50cyB0aGF0IGNvbXBvc2Ug
b3RoZXIgY29tcG9zaXRlCi0gKiBvciBuYXRpdmUgY29tcG9uZW50cy4KLSAqCi0gKiBUbyBjcmVh
dGUgYSBuZXcgdHlwZSBvZiBgUmVhY3RDb21wb3NpdGVDb21wb25lbnRgLCBwYXNzIGEgc3BlY2lm
aWNhdGlvbiBvZgotICogeW91ciBuZXcgY2xhc3MgdG8gYFJlYWN0LmNyZWF0ZUNsYXNzYC4gVGhl
IG9ubHkgcmVxdWlyZW1lbnQgb2YgeW91ciBjbGFzcwotICogc3BlY2lmaWNhdGlvbiBpcyB0aGF0
IHlvdSBpbXBsZW1lbnQgYSBgcmVuZGVyYCBtZXRob2QuCi0gKgotICogICB2YXIgTXlDb21wb25l
bnQgPSBSZWFjdC5jcmVhdGVDbGFzcyh7Ci0gKiAgICAgcmVuZGVyOiBmdW5jdGlvbigpIHsKLSAq
ICAgICAgIHJldHVybiA8ZGl2PkhlbGxvIFdvcmxkPC9kaXY+OwotICogICAgIH0KLSAqICAgfSk7
Ci0gKgotICogVGhlIGNsYXNzIHNwZWNpZmljYXRpb24gc3VwcG9ydHMgYSBzcGVjaWZpYyBwcm90
b2NvbCBvZiBtZXRob2RzIHRoYXQgaGF2ZQotICogc3BlY2lhbCBtZWFuaW5nIChlLmcuIGByZW5k
ZXJgKS4gU2VlIGBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudEludGVyZmFjZWAgZm9yCi0gKiBtb3Jl
IHRoZSBjb21wcmVoZW5zaXZlIHByb3RvY29sLiBBbnkgb3RoZXIgcHJvcGVydGllcyBhbmQgbWV0
aG9kcyBpbiB0aGUKLSAqIGNsYXNzIHNwZWNpZmljYXRpb24gd2lsbCBhdmFpbGFibGUgb24gdGhl
IHByb3RvdHlwZS4KLSAqCi0gKiBAaW50ZXJmYWNlIFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50SW50
ZXJmYWNlCi0gKiBAaW50ZXJuYWwKLSAqLwotdmFyIFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50SW50
ZXJmYWNlID0gewotCi0gIC8qKgotICAgKiBBbiBhcnJheSBvZiBNaXhpbiBvYmplY3RzIHRvIGlu
Y2x1ZGUgd2hlbiBkZWZpbmluZyB5b3VyIGNvbXBvbmVudC4KLSAgICoKLSAgICogQHR5cGUge2Fy
cmF5fQotICAgKiBAb3B0aW9uYWwKLSAgICovCi0gIG1peGluczogU3BlY1BvbGljeS5ERUZJTkVf
TUFOWSwKLQotICAvKioKLSAgICogRGVmaW5pdGlvbiBvZiBwcm9wIHR5cGVzIGZvciB0aGlzIGNv
bXBvbmVudC4KLSAgICoKLSAgICogQHR5cGUge29iamVjdH0KLSAgICogQG9wdGlvbmFsCi0gICAq
LwotICBwcm9wVHlwZXM6IFNwZWNQb2xpY3kuREVGSU5FX09OQ0UsCi0KLQotCi0gIC8vID09PT0g
RGVmaW5pdGlvbiBtZXRob2RzID09PT0KLQotICAvKioKLSAgICogSW52b2tlZCB3aGVuIHRoZSBj
b21wb25lbnQgaXMgbW91bnRlZC4gVmFsdWVzIGluIHRoZSBtYXBwaW5nIHdpbGwgYmUgc2V0IG9u
Ci0gICAqIGB0aGlzLnByb3BzYCBpZiB0aGF0IHByb3AgaXMgbm90IHNwZWNpZmllZCAoaS5lLiB1
c2luZyBhbiBgaW5gIGNoZWNrKS4KLSAgICoKLSAgICogVGhpcyBtZXRob2QgaXMgaW52b2tlZCBi
ZWZvcmUgYGdldEluaXRpYWxTdGF0ZWAgYW5kIHRoZXJlZm9yZSBjYW5ub3QgcmVseQotICAgKiBv
biBgdGhpcy5zdGF0ZWAgb3IgdXNlIGB0aGlzLnNldFN0YXRlYC4KLSAgICoKLSAgICogQHJldHVy
biB7b2JqZWN0fQotICAgKiBAb3B0aW9uYWwKLSAgICovCi0gIGdldERlZmF1bHRQcm9wczogU3Bl
Y1BvbGljeS5ERUZJTkVfT05DRSwKLQotICAvKioKLSAgICogSW52b2tlZCBvbmNlIGJlZm9yZSB0
aGUgY29tcG9uZW50IGlzIG1vdW50ZWQuIFRoZSByZXR1cm4gdmFsdWUgd2lsbCBiZSB1c2VkCi0g
ICAqIGFzIHRoZSBpbml0aWFsIHZhbHVlIG9mIGB0aGlzLnN0YXRlYC4KLSAgICoKLSAgICogICBn
ZXRJbml0aWFsU3RhdGU6IGZ1bmN0aW9uKCkgewotICAgKiAgICAgcmV0dXJuIHsKLSAgICogICAg
ICAgaXNPbjogZmFsc2UsCi0gICAqICAgICAgIGZvb0JhejogbmV3IEJhekZvbygpCi0gICAqICAg
ICB9Ci0gICAqICAgfQotICAgKgotICAgKiBAcmV0dXJuIHtvYmplY3R9Ci0gICAqIEBvcHRpb25h
bAotICAgKi8KLSAgZ2V0SW5pdGlhbFN0YXRlOiBTcGVjUG9saWN5LkRFRklORV9PTkNFLAotCi0g
IC8qKgotICAgKiBVc2VzIHByb3BzIGZyb20gYHRoaXMucHJvcHNgIGFuZCBzdGF0ZSBmcm9tIGB0
aGlzLnN0YXRlYCB0byByZW5kZXIgdGhlCi0gICAqIHN0cnVjdHVyZSBvZiB0aGUgY29tcG9uZW50
LgotICAgKgotICAgKiBObyBndWFyYW50ZWVzIGFyZSBtYWRlIGFib3V0IHdoZW4gb3IgaG93IG9m
dGVuIHRoaXMgbWV0aG9kIGlzIGludm9rZWQsIHNvCi0gICAqIGl0IG11c3Qgbm90IGhhdmUgc2lk
ZSBlZmZlY3RzLgotICAgKgotICAgKiAgIHJlbmRlcjogZnVuY3Rpb24oKSB7Ci0gICAqICAgICB2
YXIgbmFtZSA9IHRoaXMucHJvcHMubmFtZTsKLSAgICogICAgIHJldHVybiA8ZGl2PkhlbGxvLCB7
bmFtZX0hPC9kaXY+OwotICAgKiAgIH0KLSAgICoKLSAgICogQHJldHVybiB7UmVhY3RDb21wb25l
bnR9Ci0gICAqIEBub3NpZGVlZmZlY3RzCi0gICAqIEByZXF1aXJlZAotICAgKi8KLSAgcmVuZGVy
OiBTcGVjUG9saWN5LkRFRklORV9PTkNFLAotCi0KLQotICAvLyA9PT09IERlbGVnYXRlIG1ldGhv
ZHMgPT09PQotCi0gIC8qKgotICAgKiBJbnZva2VkIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBpbml0
aWFsbHkgY3JlYXRlZCBhbmQgYWJvdXQgdG8gYmUgbW91bnRlZC4KLSAgICogVGhpcyBtYXkgaGF2
ZSBzaWRlIGVmZmVjdHMsIGJ1dCBhbnkgZXh0ZXJuYWwgc3Vic2NyaXB0aW9ucyBvciBkYXRhIGNy
ZWF0ZWQKLSAgICogYnkgdGhpcyBtZXRob2QgbXVzdCBiZSBjbGVhbmVkIHVwIGluIGBjb21wb25l
bnRXaWxsVW5tb3VudGAuCi0gICAqCi0gICAqIEBvcHRpb25hbAotICAgKi8KLSAgY29tcG9uZW50
V2lsbE1vdW50OiBTcGVjUG9saWN5LkRFRklORV9NQU5ZLAotCi0gIC8qKgotICAgKiBJbnZva2Vk
IHdoZW4gdGhlIGNvbXBvbmVudCBoYXMgYmVlbiBtb3VudGVkIGFuZCBoYXMgYSBET00gcmVwcmVz
ZW50YXRpb24uCi0gICAqIEhvd2V2ZXIsIHRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IHRoZSBE
T00gbm9kZSBpcyBpbiB0aGUgZG9jdW1lbnQuCi0gICAqCi0gICAqIFVzZSB0aGlzIGFzIGFuIG9w
cG9ydHVuaXR5IHRvIG9wZXJhdGUgb24gdGhlIERPTSB3aGVuIHRoZSBjb21wb25lbnQgaGFzCi0g
ICAqIGJlZW4gbW91bnRlZCAoaW5pdGlhbGl6ZWQgYW5kIHJlbmRlcmVkKSBmb3IgdGhlIGZpcnN0
IHRpbWUuCi0gICAqCi0gICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gcm9vdE5vZGUgRE9NIGVsZW1l
bnQgcmVwcmVzZW50aW5nIHRoZSBjb21wb25lbnQuCi0gICAqIEBvcHRpb25hbAotICAgKi8KLSAg
Y29tcG9uZW50RGlkTW91bnQ6IFNwZWNQb2xpY3kuREVGSU5FX01BTlksCi0KLSAgLyoqCi0gICAq
IEludm9rZWQgYmVmb3JlIHRoZSBjb21wb25lbnQgcmVjZWl2ZXMgbmV3IHByb3BzLgotICAgKgot
ICAgKiBVc2UgdGhpcyBhcyBhbiBvcHBvcnR1bml0eSB0byByZWFjdCB0byBhIHByb3AgdHJhbnNp
dGlvbiBieSB1cGRhdGluZyB0aGUKLSAgICogc3RhdGUgdXNpbmcgYHRoaXMuc2V0U3RhdGVgLiBD
dXJyZW50IHByb3BzIGFyZSBhY2Nlc3NlZCB2aWEgYHRoaXMucHJvcHNgLgotICAgKgotICAgKiAg
IGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHM6IGZ1bmN0aW9uKG5leHRQcm9wcykgewotICAgKiAg
ICAgdGhpcy5zZXRTdGF0ZSh7Ci0gICAqICAgICAgIGxpa2VzSW5jcmVhc2luZzogbmV4dFByb3Bz
Lmxpa2VDb3VudCA+IHRoaXMucHJvcHMubGlrZUNvdW50Ci0gICAqICAgICB9KTsKLSAgICogICB9
Ci0gICAqCi0gICAqIE5PVEU6IFRoZXJlIGlzIG5vIGVxdWl2YWxlbnQgYGNvbXBvbmVudFdpbGxS
ZWNlaXZlU3RhdGVgLiBBbiBpbmNvbWluZyBwcm9wCi0gICAqIHRyYW5zaXRpb24gbWF5IGNhdXNl
IGEgc3RhdGUgY2hhbmdlLCBidXQgdGhlIG9wcG9zaXRlIGlzIG5vdCB0cnVlLiBJZiB5b3UKLSAg
ICogbmVlZCBpdCwgeW91IGFyZSBwcm9iYWJseSBsb29raW5nIGZvciBgY29tcG9uZW50V2lsbFVw
ZGF0ZWAuCi0gICAqCi0gICAqIEBwYXJhbSB7b2JqZWN0fSBuZXh0UHJvcHMKLSAgICogQG9wdGlv
bmFsCi0gICAqLwotICBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzOiBTcGVjUG9saWN5LkRFRklO
RV9NQU5ZLAotCi0gIC8qKgotICAgKiBJbnZva2VkIHdoaWxlIGRlY2lkaW5nIGlmIHRoZSBjb21w
b25lbnQgc2hvdWxkIGJlIHVwZGF0ZWQgYXMgYSByZXN1bHQgb2YKLSAgICogcmVjZWl2aW5nIG5l
dyBwcm9wcyBhbmQgc3RhdGUuCi0gICAqCi0gICAqIFVzZSB0aGlzIGFzIGFuIG9wcG9ydHVuaXR5
IHRvIGByZXR1cm4gZmFsc2VgIHdoZW4geW91J3JlIGNlcnRhaW4gdGhhdCB0aGUKLSAgICogdHJh
bnNpdGlvbiB0byB0aGUgbmV3IHByb3BzIGFuZCBzdGF0ZSB3aWxsIG5vdCByZXF1aXJlIGEgY29t
cG9uZW50IHVwZGF0ZS4KLSAgICoKLSAgICogICBzaG91bGRDb21wb25lbnRVcGRhdGU6IGZ1bmN0
aW9uKG5leHRQcm9wcywgbmV4dFN0YXRlKSB7Ci0gICAqICAgICByZXR1cm4gIWVxdWFsKG5leHRQ
cm9wcywgdGhpcy5wcm9wcykgfHwgIWVxdWFsKG5leHRTdGF0ZSwgdGhpcy5zdGF0ZSk7Ci0gICAq
ICAgfQotICAgKgotICAgKiBAcGFyYW0ge29iamVjdH0gbmV4dFByb3BzCi0gICAqIEBwYXJhbSB7
P29iamVjdH0gbmV4dFN0YXRlCi0gICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdGhlIGNv
bXBvbmVudCBzaG91bGQgdXBkYXRlLgotICAgKiBAb3B0aW9uYWwKLSAgICovCi0gIHNob3VsZENv
bXBvbmVudFVwZGF0ZTogU3BlY1BvbGljeS5ERUZJTkVfT05DRSwKLQotICAvKioKLSAgICogSW52
b2tlZCB3aGVuIHRoZSBjb21wb25lbnQgaXMgYWJvdXQgdG8gdXBkYXRlIGR1ZSB0byBhIHRyYW5z
aXRpb24gZnJvbQotICAgKiBgdGhpcy5wcm9wc2AgYW5kIGB0aGlzLnN0YXRlYCB0byBgbmV4dFBy
b3BzYCBhbmQgYG5leHRTdGF0ZWAuCi0gICAqCi0gICAqIFVzZSB0aGlzIGFzIGFuIG9wcG9ydHVu
aXR5IHRvIHBlcmZvcm0gcHJlcGFyYXRpb24gYmVmb3JlIGFuIHVwZGF0ZSBvY2N1cnMuCi0gICAq
Ci0gICAqIE5PVEU6IFlvdSAqKmNhbm5vdCoqIHVzZSBgdGhpcy5zZXRTdGF0ZSgpYCBpbiB0aGlz
IG1ldGhvZC4KLSAgICoKLSAgICogQHBhcmFtIHtvYmplY3R9IG5leHRQcm9wcwotICAgKiBAcGFy
YW0gez9vYmplY3R9IG5leHRTdGF0ZQotICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNh
Y3Rpb259IHRyYW5zYWN0aW9uCi0gICAqIEBvcHRpb25hbAotICAgKi8KLSAgY29tcG9uZW50V2ls
bFVwZGF0ZTogU3BlY1BvbGljeS5ERUZJTkVfTUFOWSwKLQotICAvKioKLSAgICogSW52b2tlZCB3
aGVuIHRoZSBjb21wb25lbnQncyBET00gcmVwcmVzZW50YXRpb24gaGFzIGJlZW4gdXBkYXRlZC4K
LSAgICoKLSAgICogVXNlIHRoaXMgYXMgYW4gb3Bwb3J0dW5pdHkgdG8gb3BlcmF0ZSBvbiB0aGUg
RE9NIHdoZW4gdGhlIGNvbXBvbmVudCBoYXMKLSAgICogYmVlbiB1cGRhdGVkLgotICAgKgotICAg
KiBAcGFyYW0ge29iamVjdH0gcHJldlByb3BzCi0gICAqIEBwYXJhbSB7P29iamVjdH0gcHJldlN0
YXRlCi0gICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gcm9vdE5vZGUgRE9NIGVsZW1lbnQgcmVwcmVz
ZW50aW5nIHRoZSBjb21wb25lbnQuCi0gICAqIEBvcHRpb25hbAotICAgKi8KLSAgY29tcG9uZW50
RGlkVXBkYXRlOiBTcGVjUG9saWN5LkRFRklORV9NQU5ZLAotCi0gIC8qKgotICAgKiBJbnZva2Vk
IHdoZW4gdGhlIGNvbXBvbmVudCBpcyBhYm91dCB0byBiZSByZW1vdmVkIGZyb20gaXRzIHBhcmVu
dCBhbmQgaGF2ZQotICAgKiBpdHMgRE9NIHJlcHJlc2VudGF0aW9uIGRlc3Ryb3llZC4KLSAgICoK
LSAgICogVXNlIHRoaXMgYXMgYW4gb3Bwb3J0dW5pdHkgdG8gZGVhbGxvY2F0ZSBhbnkgZXh0ZXJu
YWwgcmVzb3VyY2VzLgotICAgKgotICAgKiBOT1RFOiBUaGVyZSBpcyBubyBgY29tcG9uZW50RGlk
VW5tb3VudGAgc2luY2UgeW91ciBjb21wb25lbnQgd2lsbCBoYXZlIGJlZW4KLSAgICogZGVzdHJv
eWVkIGJ5IHRoYXQgcG9pbnQuCi0gICAqCi0gICAqIEBvcHRpb25hbAotICAgKi8KLSAgY29tcG9u
ZW50V2lsbFVubW91bnQ6IFNwZWNQb2xpY3kuREVGSU5FX01BTlksCi0KLQotCi0gIC8vID09PT0g
QWR2YW5jZWQgbWV0aG9kcyA9PT09Ci0KLSAgLyoqCi0gICAqIFVwZGF0ZXMgdGhlIGNvbXBvbmVu
dCdzIGN1cnJlbnRseSBtb3VudGVkIERPTSByZXByZXNlbnRhdGlvbi4KLSAgICoKLSAgICogQnkg
ZGVmYXVsdCwgdGhpcyBpbXBsZW1lbnRzIFJlYWN0J3MgcmVuZGVyaW5nIGFuZCByZWNvbmNpbGlh
dGlvbiBhbGdvcml0aG0uCi0gICAqIFNvcGhpc3RpY2F0ZWQgY2xpZW50cyBtYXkgd2lzaCB0byBv
dmVycmlkZSB0aGlzLgotICAgKgotICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rp
b259IHRyYW5zYWN0aW9uCi0gICAqIEBpbnRlcm5hbAotICAgKiBAb3ZlcnJpZGFibGUKLSAgICov
Ci0gIHVwZGF0ZUNvbXBvbmVudDogU3BlY1BvbGljeS5PVkVSUklERV9CQVNFCi0KLX07Ci0KLS8q
KgotICogTWFwcGluZyBmcm9tIGNsYXNzIHNwZWNpZmljYXRpb24ga2V5cyB0byBzcGVjaWFsIHBy
b2Nlc3NpbmcgZnVuY3Rpb25zLgotICoKLSAqIEFsdGhvdWdoIHRoZXNlIGFyZSBkZWNsYXJlZCBp
biB0aGUgc3BlY2lmaWNhdGlvbiB3aGVuIGRlZmluaW5nIGNsYXNzZXMKLSAqIHVzaW5nIGBSZWFj
dC5jcmVhdGVDbGFzc2AsIHRoZXkgd2lsbCBub3QgYmUgb24gdGhlIGNvbXBvbmVudCdzIHByb3Rv
dHlwZS4KLSAqLwotdmFyIFJFU0VSVkVEX1NQRUNfS0VZUyA9IHsKLSAgZGlzcGxheU5hbWU6IGZ1
bmN0aW9uKENvbnN0cnVjdG9yLCBkaXNwbGF5TmFtZSkgewotICAgIENvbnN0cnVjdG9yLmRpc3Bs
YXlOYW1lID0gZGlzcGxheU5hbWU7Ci0gIH0sCi0gIG1peGluczogZnVuY3Rpb24oQ29uc3RydWN0
b3IsIG1peGlucykgewotICAgIGlmIChtaXhpbnMpIHsKLSAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgbWl4aW5zLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgIG1peFNwZWNJbnRvQ29tcG9uZW50KENv
bnN0cnVjdG9yLCBtaXhpbnNbaV0pOwotICAgICAgfQotICAgIH0KLSAgfSwKLSAgcHJvcFR5cGVz
OiBmdW5jdGlvbihDb25zdHJ1Y3RvciwgcHJvcFR5cGVzKSB7Ci0gICAgQ29uc3RydWN0b3IucHJv
cFR5cGVzID0gcHJvcFR5cGVzOwotICB9Ci19OwotCi1mdW5jdGlvbiB2YWxpZGF0ZU1ldGhvZE92
ZXJyaWRlKHByb3RvLCBuYW1lKSB7Ci0gIHZhciBzcGVjUG9saWN5ID0gUmVhY3RDb21wb3NpdGVD
b21wb25lbnRJbnRlcmZhY2VbbmFtZV07Ci0KLSAgLy8gRGlzYWxsb3cgb3ZlcnJpZGluZyBvZiBi
YXNlIGNsYXNzIG1ldGhvZHMgdW5sZXNzIGV4cGxpY2l0bHkgYWxsb3dlZC4KLSAgaWYgKFJlYWN0
Q29tcG9zaXRlQ29tcG9uZW50TWl4aW4uaGFzT3duUHJvcGVydHkobmFtZSkpIHsKLSAgICBpbnZh
cmlhbnQoCi0gICAgICBzcGVjUG9saWN5ID09PSBTcGVjUG9saWN5Lk9WRVJSSURFX0JBU0UsCi0g
ICAgICAnUmVhY3RDb21wb3NpdGVDb21wb25lbnRJbnRlcmZhY2U6IFlvdSBhcmUgYXR0ZW1wdGlu
ZyB0byBvdmVycmlkZSAnICsKLSAgICAgICdgJXNgIGZyb20geW91ciBjbGFzcyBzcGVjaWZpY2F0
aW9uLiBFbnN1cmUgdGhhdCB5b3VyIG1ldGhvZCBuYW1lcyAnICsKLSAgICAgICdkbyBub3Qgb3Zl
cmxhcCB3aXRoIFJlYWN0IG1ldGhvZHMuJywKLSAgICAgIG5hbWUKLSAgICApOwotICB9Ci0KLSAg
Ly8gRGlzYWxsb3cgZGVmaW5pbmcgbWV0aG9kcyBtb3JlIHRoYW4gb25jZSB1bmxlc3MgZXhwbGlj
aXRseSBhbGxvd2VkLgotICBpZiAocHJvdG8uaGFzT3duUHJvcGVydHkobmFtZSkpIHsKLSAgICBp
bnZhcmlhbnQoCi0gICAgICBzcGVjUG9saWN5ID09PSBTcGVjUG9saWN5LkRFRklORV9NQU5ZLAot
ICAgICAgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50SW50ZXJmYWNlOiBZb3UgYXJlIGF0dGVtcHRp
bmcgdG8gZGVmaW5lICcgKwotICAgICAgJ2Alc2Agb24geW91ciBjb21wb25lbnQgbW9yZSB0aGFu
IG9uY2UuIFRoaXMgY29uZmxpY3QgbWF5IGJlIGR1ZSAnICsKLSAgICAgICd0byBhIG1peGluLics
Ci0gICAgICBuYW1lCi0gICAgKTsKLSAgfQotfQotCi0KLWZ1bmN0aW9uIHZhbGlkYXRlTGlmZUN5
Y2xlT25SZXBsYWNlU3RhdGUoaW5zdGFuY2UpIHsKLSAgdmFyIGNvbXBvc2l0ZUxpZmVDeWNsZVN0
YXRlID0gaW5zdGFuY2UuX2NvbXBvc2l0ZUxpZmVDeWNsZVN0YXRlOwotICBpbnZhcmlhbnQoCi0g
ICAgaW5zdGFuY2UuaXNNb3VudGVkKCkgfHwKLSAgICAgIGNvbXBvc2l0ZUxpZmVDeWNsZVN0YXRl
ID09PSBDb21wb3NpdGVMaWZlQ3ljbGUuTU9VTlRJTkcsCi0gICAgJ3JlcGxhY2VTdGF0ZSguLi4p
OiBDYW4gb25seSB1cGRhdGUgYSBtb3VudGVkIG9yIG1vdW50aW5nIGNvbXBvbmVudC4nCi0gICk7
Ci0gIGludmFyaWFudCgKLSAgICBjb21wb3NpdGVMaWZlQ3ljbGVTdGF0ZSAhPT0gQ29tcG9zaXRl
TGlmZUN5Y2xlLlJFQ0VJVklOR19TVEFURSAmJgotICAgIGNvbXBvc2l0ZUxpZmVDeWNsZVN0YXRl
ICE9PSBDb21wb3NpdGVMaWZlQ3ljbGUuVU5NT1VOVElORywKLSAgICAncmVwbGFjZVN0YXRlKC4u
Lik6IENhbm5vdCB1cGRhdGUgd2hpbGUgdW5tb3VudGluZyBjb21wb25lbnQgb3IgZHVyaW5nICcg
KwotICAgICdhbiBleGlzdGluZyBzdGF0ZSB0cmFuc2l0aW9uIChzdWNoIGFzIHdpdGhpbiBgcmVu
ZGVyYCkuJwotICApOwotfQotCi0vKioKLSAqIEN1c3RvbSB2ZXJzaW9uIG9mIGBtaXhJbnRvYCB3
aGljaCBoYW5kbGVzIHBvbGljeSB2YWxpZGF0aW9uIGFuZCByZXNlcnZlZAotICogc3BlY2lmaWNh
dGlvbiBrZXlzIHdoZW4gYnVpbGRpbmcgYFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50YCBjbGFzc3Nl
cy4KLSAqLwotZnVuY3Rpb24gbWl4U3BlY0ludG9Db21wb25lbnQoQ29uc3RydWN0b3IsIHNwZWMp
IHsKLSAgdmFyIHByb3RvID0gQ29uc3RydWN0b3IucHJvdG90eXBlOwotICBmb3IgKHZhciBuYW1l
IGluIHNwZWMpIHsKLSAgICB2YXIgcHJvcGVydHkgPSBzcGVjW25hbWVdOwotICAgIGlmICghc3Bl
Yy5oYXNPd25Qcm9wZXJ0eShuYW1lKSB8fCAhcHJvcGVydHkpIHsKLSAgICAgIGNvbnRpbnVlOwot
ICAgIH0KLSAgICB2YWxpZGF0ZU1ldGhvZE92ZXJyaWRlKHByb3RvLCBuYW1lKTsKLQotICAgIGlm
IChSRVNFUlZFRF9TUEVDX0tFWVMuaGFzT3duUHJvcGVydHkobmFtZSkpIHsKLSAgICAgIFJFU0VS
VkVEX1NQRUNfS0VZU1tuYW1lXShDb25zdHJ1Y3RvciwgcHJvcGVydHkpOwotICAgIH0gZWxzZSB7
Ci0gICAgICAvLyBTZXR1cCBtZXRob2RzIG9uIHByb3RvdHlwZToKLSAgICAgIC8vIFRoZSBmb2xs
b3dpbmcgbWVtYmVyIG1ldGhvZHMgc2hvdWxkIG5vdCBiZSBhdXRvbWF0aWNhbGx5IGJvdW5kOgot
ICAgICAgLy8gMS4gRXhwZWN0ZWQgUmVhY3RDb21wb3NpdGVDb21wb25lbnQgbWV0aG9kcyAoaW4g
dGhlICJpbnRlcmZhY2UiKS4KLSAgICAgIC8vIDIuIE92ZXJyaWRkZW4gbWV0aG9kcyAodGhhdCB3
ZXJlIG1peGVkIGluKS4KLSAgICAgIHZhciBpc0NvbXBvc2l0ZUNvbXBvbmVudE1ldGhvZCA9IG5h
bWUgaW4gUmVhY3RDb21wb3NpdGVDb21wb25lbnRJbnRlcmZhY2U7Ci0gICAgICB2YXIgaXNJbmhl
cml0ZWQgPSBuYW1lIGluIHByb3RvOwotICAgICAgdmFyIG1hcmtlZERvbnRCaW5kID0gcHJvcGVy
dHkuX19yZWFjdERvbnRCaW5kOwotICAgICAgdmFyIGlzRnVuY3Rpb24gPSB0eXBlb2YgcHJvcGVy
dHkgPT09ICdmdW5jdGlvbic7Ci0gICAgICB2YXIgc2hvdWxkQXV0b0JpbmQgPQotICAgICAgICBp
c0Z1bmN0aW9uICYmCi0gICAgICAgICFpc0NvbXBvc2l0ZUNvbXBvbmVudE1ldGhvZCAmJgotICAg
ICAgICAhaXNJbmhlcml0ZWQgJiYKLSAgICAgICAgIW1hcmtlZERvbnRCaW5kOwotCi0gICAgICBp
ZiAoc2hvdWxkQXV0b0JpbmQpIHsKLSAgICAgICAgaWYgKCFwcm90by5fX3JlYWN0QXV0b0JpbmRN
YXApIHsKLSAgICAgICAgICBwcm90by5fX3JlYWN0QXV0b0JpbmRNYXAgPSB7fTsKLSAgICAgICAg
fQotICAgICAgICBwcm90by5fX3JlYWN0QXV0b0JpbmRNYXBbbmFtZV0gPSBwcm9wZXJ0eTsKLSAg
ICAgICAgcHJvdG9bbmFtZV0gPSBwcm9wZXJ0eTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIGlm
IChpc0luaGVyaXRlZCkgewotICAgICAgICAgIC8vIEZvciBtZXRob2RzIHdoaWNoIGFyZSBkZWZp
bmVkIG1vcmUgdGhhbiBvbmNlLCBjYWxsIHRoZSBleGlzdGluZwotICAgICAgICAgIC8vIG1ldGhv
ZHMgYmVmb3JlIGNhbGxpbmcgdGhlIG5ldyBwcm9wZXJ0eS4KLSAgICAgICAgICBwcm90b1tuYW1l
XSA9IGNyZWF0ZUNoYWluZWRGdW5jdGlvbihwcm90b1tuYW1lXSwgcHJvcGVydHkpOwotICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgIHByb3RvW25hbWVdID0gcHJvcGVydHk7Ci0gICAgICAgIH0K
LSAgICAgIH0KLSAgICB9Ci0gIH0KLX0KLQotLyoqCi0gKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhh
dCBpbnZva2VzIHR3byBmdW5jdGlvbnMgYW5kIGlnbm9yZXMgdGhlaXIgcmV0dXJuIHZhbGVzLgot
ICoKLSAqIEBwYXJhbSB7ZnVuY3Rpb259IG9uZSBGdW5jdGlvbiB0byBpbnZva2UgZmlyc3QuCi0g
KiBAcGFyYW0ge2Z1bmN0aW9ufSB0d28gRnVuY3Rpb24gdG8gaW52b2tlIHNlY29uZC4KLSAqIEBy
ZXR1cm4ge2Z1bmN0aW9ufSBGdW5jdGlvbiB0aGF0IGludm9rZXMgdGhlIHR3byBhcmd1bWVudCBm
dW5jdGlvbnMuCi0gKiBAcHJpdmF0ZQotICovCi1mdW5jdGlvbiBjcmVhdGVDaGFpbmVkRnVuY3Rp
b24ob25lLCB0d28pIHsKLSAgcmV0dXJuIGZ1bmN0aW9uIGNoYWluZWRGdW5jdGlvbigpIHsKLSAg
ICBvbmUuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKLSAgICB0d28uYXBwbHkodGhpcywgYXJndW1l
bnRzKTsKLSAgfTsKLX0KLQotLyoqCi0gKiBgUmVhY3RDb21wb3NpdGVDb21wb25lbnRgIG1haW50
YWlucyBhbiBhdXhpbGlhcnkgbGlmZSBjeWNsZSBzdGF0ZSBpbgotICogYHRoaXMuX2NvbXBvc2l0
ZUxpZmVDeWNsZVN0YXRlYCAod2hpY2ggY2FuIGJlIG51bGwpLgotICoKLSAqIFRoaXMgaXMgZGlm
ZmVyZW50IGZyb20gdGhlIGxpZmUgY3ljbGUgc3RhdGUgbWFpbnRhaW5lZCBieSBgUmVhY3RDb21w
b25lbnRgIGluCi0gKiBgdGhpcy5fbGlmZUN5Y2xlU3RhdGVgLiBUaGUgZm9sbG93aW5nIGRpYWdy
YW0gc2hvd3MgaG93IHRoZSBzdGF0ZXMgb3ZlcmxhcCBpbgotICogdGltZS4gVGhlcmUgYXJlIHRp
bWVzIHdoZW4gdGhlIENvbXBvc2l0ZUxpZmVDeWNsZSBpcyBudWxsIC0gYXQgdGhvc2UgdGltZXMg
aXQKLSAqIGlzIG9ubHkgbWVhbmluZ2Z1bCB0byBsb29rIGF0IENvbXBvbmVudExpZmVDeWNsZSBh
bG9uZS4KLSAqCi0gKiBUb3AgUm93OiBSZWFjdENvbXBvbmVudC5Db21wb25lbnRMaWZlQ3ljbGUK
LSAqIExvdyBSb3c6IFJlYWN0Q29tcG9uZW50LkNvbXBvc2l0ZUxpZmVDeWNsZQotICoKLSAqICst
LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSstLS0tLS0tLSsKLSAqIHwgIFVOICAgfCAgICAgICAgICAgICAgICAgICAgTU9VTlRFRCAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICBVTiAgIHwKLSAqIHxNT1VOVEVEfCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTU9VTlRFRHwK
LSAqICstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSstLS0tLS0tLSsKLSAqIHwgICAgICAgXi0tLS0tLS0tKyAgICstLS0tLS0rICAg
Ky0tLS0tLSsgICArLS0tLS0tKyAgICstLS0tLS0tLV4gICAgICAgIHwKLSAqIHwgICAgICAgfCAg
ICAgICAgfCAgIHwgICAgICB8ICAgfCAgICAgIHwgICB8ICAgICAgfCAgIHwgICAgICAgIHwgICAg
ICAgIHwKLSAqIHwgICAgMC0tfE1PVU5USU5HfC0wLXxSRUNFSVZ8LTAtfFJFQ0VJVnwtMC18UkVD
RUlWfC0wLXwgICBVTiAgIHwtLS0+MCAgIHwKLSAqIHwgICAgICAgfCAgICAgICAgfCAgIHxQUk9Q
UyB8ICAgfCBQUk9QU3wgICB8IFNUQVRFfCAgIHxNT1VOVElOR3wgICAgICAgIHwKLSAqIHwgICAg
ICAgfCAgICAgICAgfCAgIHwgICAgICB8ICAgfCAgICAgIHwgICB8ICAgICAgfCAgIHwgICAgICAg
IHwgICAgICAgIHwKLSAqIHwgICAgICAgfCAgICAgICAgfCAgIHwgICAgICB8ICAgfCAgICAgIHwg
ICB8ICAgICAgfCAgIHwgICAgICAgIHwgICAgICAgIHwKLSAqIHwgICAgICAgKy0tLS0tLS0tKyAg
ICstLS0tLS0rICAgKy0tLS0tLSsgICArLS0tLS0tKyAgICstLS0tLS0tLSsgICAgICAgIHwKLSAq
IHwgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgICAgICAgIHwKLSAqICstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSsKLSAqLwotdmFyIENvbXBvc2l0
ZUxpZmVDeWNsZSA9IGtleU1pcnJvcih7Ci0gIC8qKgotICAgKiBDb21wb25lbnRzIGluIHRoZSBw
cm9jZXNzIG9mIGJlaW5nIG1vdW50ZWQgcmVzcG9uZCB0byBzdGF0ZSBjaGFuZ2VzCi0gICAqIGRp
ZmZlcmVudGx5LgotICAgKi8KLSAgTU9VTlRJTkc6IG51bGwsCi0gIC8qKgotICAgKiBDb21wb25l
bnRzIGluIHRoZSBwcm9jZXNzIG9mIGJlaW5nIHVubW91bnRlZCBhcmUgZ3VhcmRlZCBhZ2FpbnN0
IHN0YXRlCi0gICAqIGNoYW5nZXMuCi0gICAqLwotICBVTk1PVU5USU5HOiBudWxsLAotICAvKioK
LSAgICogQ29tcG9uZW50cyB0aGF0IGFyZSBtb3VudGVkIGFuZCByZWNlaXZpbmcgbmV3IHByb3Bz
IHJlc3BvbmQgdG8gc3RhdGUKLSAgICogY2hhbmdlcyBkaWZmZXJlbnRseS4KLSAgICovCi0gIFJF
Q0VJVklOR19QUk9QUzogbnVsbCwKLSAgLyoqCi0gICAqIENvbXBvbmVudHMgdGhhdCBhcmUgbW91
bnRlZCBhbmQgcmVjZWl2aW5nIG5ldyBzdGF0ZSBhcmUgZ3VhcmRlZCBhZ2FpbnN0Ci0gICAqIGFk
ZGl0aW9uYWwgc3RhdGUgY2hhbmdlcy4KLSAgICovCi0gIFJFQ0VJVklOR19TVEFURTogbnVsbAot
fSk7Ci0KLS8qKgotICogQGxlbmRzIHtSZWFjdENvbXBvc2l0ZUNvbXBvbmVudC5wcm90b3R5cGV9
Ci0gKi8KLXZhciBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudE1peGluID0gewotCi0gIC8qKgotICAg
KiBCYXNlIGNvbnN0cnVjdG9yIGZvciBhbGwgY29tcG9zaXRlIGNvbXBvbmVudC4KLSAgICoKLSAg
ICogQHBhcmFtIHs/b2JqZWN0fSBpbml0aWFsUHJvcHMKLSAgICogQHBhcmFtIHsqfSBjaGlsZHJl
bgotICAgKiBAZmluYWwKLSAgICogQGludGVybmFsCi0gICAqLwotICBjb25zdHJ1Y3Q6IGZ1bmN0
aW9uKGluaXRpYWxQcm9wcywgY2hpbGRyZW4pIHsKLSAgICAvLyBDaGlsZHJlbiBjYW4gYmUgZWl0
aGVyIGFuIGFycmF5IG9yIG1vcmUgdGhhbiBvbmUgYXJndW1lbnQKLSAgICBSZWFjdENvbXBvbmVu
dC5NaXhpbi5jb25zdHJ1Y3QuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKLSAgICB0aGlzLnN0YXRl
ID0gbnVsbDsKLSAgICB0aGlzLl9wZW5kaW5nU3RhdGUgPSBudWxsOwotICAgIHRoaXMuX2NvbXBv
c2l0ZUxpZmVDeWNsZVN0YXRlID0gbnVsbDsKLSAgfSwKLQotICAvKioKLSAgICogQ2hlY2tzIHdo
ZXRoZXIgb3Igbm90IHRoaXMgY29tcG9zaXRlIGNvbXBvbmVudCBpcyBtb3VudGVkLgotICAgKiBA
cmV0dXJuIHtib29sZWFufSBUcnVlIGlmIG1vdW50ZWQsIGZhbHNlIG90aGVyd2lzZS4KLSAgICog
QHByb3RlY3RlZAotICAgKiBAZmluYWwKLSAgICovCi0gIGlzTW91bnRlZDogZnVuY3Rpb24oKSB7
Ci0gICAgcmV0dXJuIFJlYWN0Q29tcG9uZW50Lk1peGluLmlzTW91bnRlZC5jYWxsKHRoaXMpICYm
Ci0gICAgICB0aGlzLl9jb21wb3NpdGVMaWZlQ3ljbGVTdGF0ZSAhPT0gQ29tcG9zaXRlTGlmZUN5
Y2xlLk1PVU5USU5HOwotICB9LAotCi0gIC8qKgotICAgKiBJbml0aWFsaXplcyB0aGUgY29tcG9u
ZW50LCByZW5kZXJzIG1hcmt1cCwgYW5kIHJlZ2lzdGVycyBldmVudCBsaXN0ZW5lcnMuCi0gICAq
Ci0gICAqIEBwYXJhbSB7c3RyaW5nfSByb290SUQgRE9NIElEIG9mIHRoZSByb290IG5vZGUuCi0g
ICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb24KLSAgICog
QHJldHVybiB7P3N0cmluZ30gUmVuZGVyZWQgbWFya3VwIHRvIGJlIGluc2VydGVkIGludG8gdGhl
IERPTS4KLSAgICogQGZpbmFsCi0gICAqIEBpbnRlcm5hbAotICAgKi8KLSAgbW91bnRDb21wb25l
bnQ6IGZ1bmN0aW9uKHJvb3RJRCwgdHJhbnNhY3Rpb24pIHsKLSAgICBSZWFjdENvbXBvbmVudC5N
aXhpbi5tb3VudENvbXBvbmVudC5jYWxsKHRoaXMsIHJvb3RJRCwgdHJhbnNhY3Rpb24pOwotICAg
IHRoaXMuX2NvbXBvc2l0ZUxpZmVDeWNsZVN0YXRlID0gQ29tcG9zaXRlTGlmZUN5Y2xlLk1PVU5U
SU5HOwotCi0gICAgdGhpcy5fZGVmYXVsdFByb3BzID0gdGhpcy5nZXREZWZhdWx0UHJvcHMgPyB0
aGlzLmdldERlZmF1bHRQcm9wcygpIDogbnVsbDsKLSAgICB0aGlzLl9wcm9jZXNzUHJvcHModGhp
cy5wcm9wcyk7Ci0KLSAgICBpZiAodGhpcy5fX3JlYWN0QXV0b0JpbmRNYXApIHsKLSAgICAgIHRo
aXMuX2JpbmRBdXRvQmluZE1ldGhvZHMoKTsKLSAgICB9Ci0KLSAgICB0aGlzLnN0YXRlID0gdGhp
cy5nZXRJbml0aWFsU3RhdGUgPyB0aGlzLmdldEluaXRpYWxTdGF0ZSgpIDogbnVsbDsKLSAgICB0
aGlzLl9wZW5kaW5nU3RhdGUgPSBudWxsOwotICAgIHRoaXMuX3BlbmRpbmdGb3JjZVVwZGF0ZSA9
IGZhbHNlOwotCi0gICAgaWYgKHRoaXMuY29tcG9uZW50V2lsbE1vdW50KSB7Ci0gICAgICB0aGlz
LmNvbXBvbmVudFdpbGxNb3VudCgpOwotICAgICAgLy8gV2hlbiBtb3VudGluZywgY2FsbHMgdG8g
YHNldFN0YXRlYCBieSBgY29tcG9uZW50V2lsbE1vdW50YCB3aWxsIHNldAotICAgICAgLy8gYHRo
aXMuX3BlbmRpbmdTdGF0ZWAgd2l0aG91dCB0cmlnZ2VyaW5nIGEgcmUtcmVuZGVyLgotICAgICAg
aWYgKHRoaXMuX3BlbmRpbmdTdGF0ZSkgewotICAgICAgICB0aGlzLnN0YXRlID0gdGhpcy5fcGVu
ZGluZ1N0YXRlOwotICAgICAgICB0aGlzLl9wZW5kaW5nU3RhdGUgPSBudWxsOwotICAgICAgfQot
ICAgIH0KLQotICAgIHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50ID0gdGhpcy5fcmVuZGVyVmFsaWRh
dGVkQ29tcG9uZW50KCk7Ci0KLSAgICAvLyBEb25lIHdpdGggbW91bnRpbmcsIGBzZXRTdGF0ZWAg
d2lsbCBub3cgdHJpZ2dlciBVSSBjaGFuZ2VzLgotICAgIHRoaXMuX2NvbXBvc2l0ZUxpZmVDeWNs
ZVN0YXRlID0gbnVsbDsKLSAgICB2YXIgbWFya3VwID0gdGhpcy5fcmVuZGVyZWRDb21wb25lbnQu
bW91bnRDb21wb25lbnQocm9vdElELCB0cmFuc2FjdGlvbik7Ci0gICAgaWYgKHRoaXMuY29tcG9u
ZW50RGlkTW91bnQpIHsKLSAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0T25ET01SZWFkeSgpLmVu
cXVldWUodGhpcywgdGhpcy5jb21wb25lbnREaWRNb3VudCk7Ci0gICAgfQotICAgIHJldHVybiBt
YXJrdXA7Ci0gIH0sCi0KLSAgLyoqCi0gICAqIFJlbGVhc2VzIGFueSByZXNvdXJjZXMgYWxsb2Nh
dGVkIGJ5IGBtb3VudENvbXBvbmVudGAuCi0gICAqCi0gICAqIEBmaW5hbAotICAgKiBAaW50ZXJu
YWwKLSAgICovCi0gIHVubW91bnRDb21wb25lbnQ6IGZ1bmN0aW9uKCkgewotICAgIHRoaXMuX2Nv
bXBvc2l0ZUxpZmVDeWNsZVN0YXRlID0gQ29tcG9zaXRlTGlmZUN5Y2xlLlVOTU9VTlRJTkc7Ci0g
ICAgaWYgKHRoaXMuY29tcG9uZW50V2lsbFVubW91bnQpIHsKLSAgICAgIHRoaXMuY29tcG9uZW50
V2lsbFVubW91bnQoKTsKLSAgICB9Ci0gICAgdGhpcy5fY29tcG9zaXRlTGlmZUN5Y2xlU3RhdGUg
PSBudWxsOwotCi0gICAgdGhpcy5fZGVmYXVsdFByb3BzID0gbnVsbDsKLQotICAgIFJlYWN0Q29t
cG9uZW50Lk1peGluLnVubW91bnRDb21wb25lbnQuY2FsbCh0aGlzKTsKLSAgICB0aGlzLl9yZW5k
ZXJlZENvbXBvbmVudC51bm1vdW50Q29tcG9uZW50KCk7Ci0gICAgdGhpcy5fcmVuZGVyZWRDb21w
b25lbnQgPSBudWxsOwotCi0gICAgaWYgKHRoaXMucmVmcykgewotICAgICAgdGhpcy5yZWZzID0g
bnVsbDsKLSAgICB9Ci0KLSAgICAvLyBTb21lIGV4aXN0aW5nIGNvbXBvbmVudHMgcmVseSBvbiB0
aGlzLnByb3BzIGV2ZW4gYWZ0ZXIgdGhleSd2ZSBiZWVuCi0gICAgLy8gZGVzdHJveWVkIChpbiBl
dmVudCBoYW5kbGVycykuCi0gICAgLy8gVE9ETzogdGhpcy5wcm9wcyA9IG51bGw7Ci0gICAgLy8g
VE9ETzogdGhpcy5zdGF0ZSA9IG51bGw7Ci0gIH0sCi0KLSAgLyoqCi0gICAqIFNldHMgYSBzdWJz
ZXQgb2YgdGhlIHN0YXRlLiBBbHdheXMgdXNlIHRoaXMgb3IgYHJlcGxhY2VTdGF0ZWAgdG8gbXV0
YXRlCi0gICAqIHN0YXRlLiBZb3Ugc2hvdWxkIHRyZWF0IGB0aGlzLnN0YXRlYCBhcyBpbW11dGFi
bGUuCi0gICAqCi0gICAqIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IGB0aGlzLnN0YXRlYCB3
aWxsIGJlIGltbWVkaWF0ZWx5IHVwZGF0ZWQsIHNvCi0gICAqIGFjY2Vzc2luZyBgdGhpcy5zdGF0
ZWAgYWZ0ZXIgY2FsbGluZyB0aGlzIG1ldGhvZCBtYXkgcmV0dXJuIHRoZSBvbGQgdmFsdWUuCi0g
ICAqCi0gICAqIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IGNhbGxzIHRvIGBzZXRTdGF0ZWAg
d2lsbCBydW4gc3luY2hyb25vdXNseSwKLSAgICogYXMgdGhleSBtYXkgZXZlbnR1YWxseSBiZSBi
YXRjaGVkIHRvZ2V0aGVyLiAgWW91IGNhbiBwcm92aWRlIGFuIG9wdGlvbmFsCi0gICAqIGNhbGxi
YWNrIHRoYXQgd2lsbCBiZSBleGVjdXRlZCB3aGVuIHRoZSBjYWxsIHRvIHNldFN0YXRlIGlzIGFj
dHVhbGx5Ci0gICAqIGNvbXBsZXRlZC4KLSAgICoKLSAgICogQHBhcmFtIHtvYmplY3R9IHBhcnRp
YWxTdGF0ZSBOZXh0IHBhcnRpYWwgc3RhdGUgdG8gYmUgbWVyZ2VkIHdpdGggc3RhdGUuCi0gICAq
IEBwYXJhbSB7P2Z1bmN0aW9ufSBjYWxsYmFjayBDYWxsZWQgYWZ0ZXIgc3RhdGUgaXMgdXBkYXRl
ZC4KLSAgICogQGZpbmFsCi0gICAqIEBwcm90ZWN0ZWQKLSAgICovCi0gIHNldFN0YXRlOiBmdW5j
dGlvbihwYXJ0aWFsU3RhdGUsIGNhbGxiYWNrKSB7Ci0gICAgLy8gTWVyZ2Ugd2l0aCBgX3BlbmRp
bmdTdGF0ZWAgaWYgaXQgZXhpc3RzLCBvdGhlcndpc2Ugd2l0aCBleGlzdGluZyBzdGF0ZS4KLSAg
ICB0aGlzLnJlcGxhY2VTdGF0ZSgKLSAgICAgIG1lcmdlKHRoaXMuX3BlbmRpbmdTdGF0ZSB8fCB0
aGlzLnN0YXRlLCBwYXJ0aWFsU3RhdGUpLAotICAgICAgY2FsbGJhY2sKLSAgICApOwotICB9LAot
Ci0gIC8qKgotICAgKiBSZXBsYWNlcyBhbGwgb2YgdGhlIHN0YXRlLiBBbHdheXMgdXNlIHRoaXMg
b3IgYHNldFN0YXRlYCB0byBtdXRhdGUgc3RhdGUuCi0gICAqIFlvdSBzaG91bGQgdHJlYXQgYHRo
aXMuc3RhdGVgIGFzIGltbXV0YWJsZS4KLSAgICoKLSAgICogVGhlcmUgaXMgbm8gZ3VhcmFudGVl
IHRoYXQgYHRoaXMuc3RhdGVgIHdpbGwgYmUgaW1tZWRpYXRlbHkgdXBkYXRlZCwgc28KLSAgICog
YWNjZXNzaW5nIGB0aGlzLnN0YXRlYCBhZnRlciBjYWxsaW5nIHRoaXMgbWV0aG9kIG1heSByZXR1
cm4gdGhlIG9sZCB2YWx1ZS4KLSAgICoKLSAgICogQHBhcmFtIHtvYmplY3R9IGNvbXBsZXRlU3Rh
dGUgTmV4dCBzdGF0ZS4KLSAgICogQHBhcmFtIHs/ZnVuY3Rpb259IGNhbGxiYWNrIENhbGxlZCBh
ZnRlciBzdGF0ZSBpcyB1cGRhdGVkLgotICAgKiBAZmluYWwKLSAgICogQHByb3RlY3RlZAotICAg
Ki8KLSAgcmVwbGFjZVN0YXRlOiBmdW5jdGlvbihjb21wbGV0ZVN0YXRlLCBjYWxsYmFjaykgewot
ICAgIHZhbGlkYXRlTGlmZUN5Y2xlT25SZXBsYWNlU3RhdGUodGhpcyk7Ci0gICAgdGhpcy5fcGVu
ZGluZ1N0YXRlID0gY29tcGxldGVTdGF0ZTsKLSAgICBSZWFjdFVwZGF0ZXMuZW5xdWV1ZVVwZGF0
ZSh0aGlzLCBjYWxsYmFjayk7Ci0gIH0sCi0KLSAgLyoqCi0gICAqIFByb2Nlc3NlcyBwcm9wcyBi
eSBzZXR0aW5nIGRlZmF1bHQgdmFsdWVzIGZvciB1bnNwZWNpZmllZCBwcm9wcyBhbmQKLSAgICog
YXNzZXJ0aW5nIHRoYXQgdGhlIHByb3BzIGFyZSB2YWxpZC4KLSAgICoKLSAgICogQHBhcmFtIHtv
YmplY3R9IHByb3BzCi0gICAqIEBwcml2YXRlCi0gICAqLwotICBfcHJvY2Vzc1Byb3BzOiBmdW5j
dGlvbihwcm9wcykgewotICAgIHZhciBwcm9wTmFtZTsKLSAgICB2YXIgZGVmYXVsdFByb3BzID0g
dGhpcy5fZGVmYXVsdFByb3BzOwotICAgIGZvciAocHJvcE5hbWUgaW4gZGVmYXVsdFByb3BzKSB7
Ci0gICAgICBpZiAoIShwcm9wTmFtZSBpbiBwcm9wcykpIHsKLSAgICAgICAgcHJvcHNbcHJvcE5h
bWVdID0gZGVmYXVsdFByb3BzW3Byb3BOYW1lXTsKLSAgICAgIH0KLSAgICB9Ci0gICAgdmFyIHBy
b3BUeXBlcyA9IHRoaXMuY29uc3RydWN0b3IucHJvcFR5cGVzOwotICAgIGlmIChwcm9wVHlwZXMp
IHsKLSAgICAgIHZhciBjb21wb25lbnROYW1lID0gdGhpcy5jb25zdHJ1Y3Rvci5kaXNwbGF5TmFt
ZTsKLSAgICAgIGZvciAocHJvcE5hbWUgaW4gcHJvcFR5cGVzKSB7Ci0gICAgICAgIHZhciBjaGVj
a1Byb3AgPSBwcm9wVHlwZXNbcHJvcE5hbWVdOwotICAgICAgICBpZiAoY2hlY2tQcm9wKSB7Ci0g
ICAgICAgICAgY2hlY2tQcm9wKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSk7Ci0gICAg
ICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gIH0sCi0KLSAgcGVyZm9ybVVwZGF0ZUlmTmVjZXNzYXJ5
OiBmdW5jdGlvbigpIHsKLSAgICB2YXIgY29tcG9zaXRlTGlmZUN5Y2xlU3RhdGUgPSB0aGlzLl9j
b21wb3NpdGVMaWZlQ3ljbGVTdGF0ZTsKLSAgICAvLyBEbyBub3QgdHJpZ2dlciBhIHN0YXRlIHRy
YW5zaXRpb24gaWYgd2UgYXJlIGluIHRoZSBtaWRkbGUgb2YgbW91bnRpbmcgb3IKLSAgICAvLyBy
ZWNlaXZpbmcgcHJvcHMgYmVjYXVzZSBib3RoIG9mIHRob3NlIHdpbGwgYWxyZWFkeSBiZSBkb2lu
ZyB0aGlzLgotICAgIGlmIChjb21wb3NpdGVMaWZlQ3ljbGVTdGF0ZSA9PT0gQ29tcG9zaXRlTGlm
ZUN5Y2xlLk1PVU5USU5HIHx8Ci0gICAgICAgIGNvbXBvc2l0ZUxpZmVDeWNsZVN0YXRlID09PSBD
b21wb3NpdGVMaWZlQ3ljbGUuUkVDRUlWSU5HX1BST1BTKSB7Ci0gICAgICByZXR1cm47Ci0gICAg
fQotICAgIFJlYWN0Q29tcG9uZW50Lk1peGluLnBlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeS5jYWxs
KHRoaXMpOwotICB9LAotCi0gIC8qKgotICAgKiBJZiBhbnkgb2YgYF9wZW5kaW5nUHJvcHNgLCBg
X3BlbmRpbmdTdGF0ZWAsIG9yIGBfcGVuZGluZ0ZvcmNlVXBkYXRlYCBpcwotICAgKiBzZXQsIHVw
ZGF0ZSB0aGUgY29tcG9uZW50LgotICAgKgotICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJh
bnNhY3Rpb259IHRyYW5zYWN0aW9uCi0gICAqIEBpbnRlcm5hbAotICAgKi8KLSAgX3BlcmZvcm1V
cGRhdGVJZk5lY2Vzc2FyeTogZnVuY3Rpb24odHJhbnNhY3Rpb24pIHsKLSAgICBpZiAodGhpcy5f
cGVuZGluZ1Byb3BzID09IG51bGwgJiYKLSAgICAgICAgdGhpcy5fcGVuZGluZ1N0YXRlID09IG51
bGwgJiYKLSAgICAgICAgIXRoaXMuX3BlbmRpbmdGb3JjZVVwZGF0ZSkgewotICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIHZhciBuZXh0UHJvcHMgPSB0aGlzLnByb3BzOwotICAgIGlmICh0aGlz
Ll9wZW5kaW5nUHJvcHMgIT0gbnVsbCkgewotICAgICAgbmV4dFByb3BzID0gdGhpcy5fcGVuZGlu
Z1Byb3BzOwotICAgICAgdGhpcy5fcHJvY2Vzc1Byb3BzKG5leHRQcm9wcyk7Ci0gICAgICB0aGlz
Ll9wZW5kaW5nUHJvcHMgPSBudWxsOwotCi0gICAgICB0aGlzLl9jb21wb3NpdGVMaWZlQ3ljbGVT
dGF0ZSA9IENvbXBvc2l0ZUxpZmVDeWNsZS5SRUNFSVZJTkdfUFJPUFM7Ci0gICAgICBpZiAodGhp
cy5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKSB7Ci0gICAgICAgIHRoaXMuY29tcG9uZW50V2ls
bFJlY2VpdmVQcm9wcyhuZXh0UHJvcHMsIHRyYW5zYWN0aW9uKTsKLSAgICAgIH0KLSAgICB9Ci0K
LSAgICB0aGlzLl9jb21wb3NpdGVMaWZlQ3ljbGVTdGF0ZSA9IENvbXBvc2l0ZUxpZmVDeWNsZS5S
RUNFSVZJTkdfU1RBVEU7Ci0KLSAgICB2YXIgbmV4dFN0YXRlID0gdGhpcy5fcGVuZGluZ1N0YXRl
IHx8IHRoaXMuc3RhdGU7Ci0gICAgdGhpcy5fcGVuZGluZ1N0YXRlID0gbnVsbDsKLQotICAgIGlm
ICh0aGlzLl9wZW5kaW5nRm9yY2VVcGRhdGUgfHwKLSAgICAgICAgIXRoaXMuc2hvdWxkQ29tcG9u
ZW50VXBkYXRlIHx8Ci0gICAgICAgIHRoaXMuc2hvdWxkQ29tcG9uZW50VXBkYXRlKG5leHRQcm9w
cywgbmV4dFN0YXRlKSkgewotICAgICAgdGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRlID0gZmFsc2U7
Ci0gICAgICAvLyBXaWxsIHNldCBgdGhpcy5wcm9wc2AgYW5kIGB0aGlzLnN0YXRlYC4KLSAgICAg
IHRoaXMuX3BlcmZvcm1Db21wb25lbnRVcGRhdGUobmV4dFByb3BzLCBuZXh0U3RhdGUsIHRyYW5z
YWN0aW9uKTsKLSAgICB9IGVsc2UgewotICAgICAgLy8gSWYgaXQncyBkZXRlcm1pbmVkIHRoYXQg
YSBjb21wb25lbnQgc2hvdWxkIG5vdCB1cGRhdGUsIHdlIHN0aWxsIHdhbnQKLSAgICAgIC8vIHRv
IHNldCBwcm9wcyBhbmQgc3RhdGUuCi0gICAgICB0aGlzLnByb3BzID0gbmV4dFByb3BzOwotICAg
ICAgdGhpcy5zdGF0ZSA9IG5leHRTdGF0ZTsKLSAgICB9Ci0KLSAgICB0aGlzLl9jb21wb3NpdGVM
aWZlQ3ljbGVTdGF0ZSA9IG51bGw7Ci0gIH0sCi0KLSAgLyoqCi0gICAqIE1lcmdlcyBuZXcgcHJv
cHMgYW5kIHN0YXRlLCBub3RpZmllcyBkZWxlZ2F0ZSBtZXRob2RzIG9mIHVwZGF0ZSBhbmQKLSAg
ICogcGVyZm9ybXMgdXBkYXRlLgotICAgKgotICAgKiBAcGFyYW0ge29iamVjdH0gbmV4dFByb3Bz
IE5leHQgb2JqZWN0IHRvIHNldCBhcyBwcm9wZXJ0aWVzLgotICAgKiBAcGFyYW0gez9vYmplY3R9
IG5leHRTdGF0ZSBOZXh0IG9iamVjdCB0byBzZXQgYXMgc3RhdGUuCi0gICAqIEBwYXJhbSB7UmVh
Y3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb24KLSAgICogQHByaXZhdGUKLSAgICov
Ci0gIF9wZXJmb3JtQ29tcG9uZW50VXBkYXRlOiBmdW5jdGlvbihuZXh0UHJvcHMsIG5leHRTdGF0
ZSwgdHJhbnNhY3Rpb24pIHsKLSAgICB2YXIgcHJldlByb3BzID0gdGhpcy5wcm9wczsKLSAgICB2
YXIgcHJldlN0YXRlID0gdGhpcy5zdGF0ZTsKLQotICAgIGlmICh0aGlzLmNvbXBvbmVudFdpbGxV
cGRhdGUpIHsKLSAgICAgIHRoaXMuY29tcG9uZW50V2lsbFVwZGF0ZShuZXh0UHJvcHMsIG5leHRT
dGF0ZSwgdHJhbnNhY3Rpb24pOwotICAgIH0KLQotICAgIHRoaXMucHJvcHMgPSBuZXh0UHJvcHM7
Ci0gICAgdGhpcy5zdGF0ZSA9IG5leHRTdGF0ZTsKLQotICAgIHRoaXMudXBkYXRlQ29tcG9uZW50
KHRyYW5zYWN0aW9uLCBwcmV2UHJvcHMsIHByZXZTdGF0ZSk7Ci0KLSAgICBpZiAodGhpcy5jb21w
b25lbnREaWRVcGRhdGUpIHsKLSAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0T25ET01SZWFkeSgp
LmVucXVldWUoCi0gICAgICAgIHRoaXMsCi0gICAgICAgIHRoaXMuY29tcG9uZW50RGlkVXBkYXRl
LmJpbmQodGhpcywgcHJldlByb3BzLCBwcmV2U3RhdGUpCi0gICAgICApOwotICAgIH0KLSAgfSwK
LQotICAvKioKLSAgICogVXBkYXRlcyB0aGUgY29tcG9uZW50J3MgY3VycmVudGx5IG1vdW50ZWQg
RE9NIHJlcHJlc2VudGF0aW9uLgotICAgKgotICAgKiBCeSBkZWZhdWx0LCB0aGlzIGltcGxlbWVu
dHMgUmVhY3QncyByZW5kZXJpbmcgYW5kIHJlY29uY2lsaWF0aW9uIGFsZ29yaXRobS4KLSAgICog
U29waGlzdGljYXRlZCBjbGllbnRzIG1heSB3aXNoIHRvIG92ZXJyaWRlIHRoaXMuCi0gICAqCi0g
ICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb24KLSAgICog
QHBhcmFtIHtvYmplY3R9IHByZXZQcm9wcwotICAgKiBAcGFyYW0gez9vYmplY3R9IHByZXZTdGF0
ZQotICAgKiBAaW50ZXJuYWwKLSAgICogQG92ZXJyaWRhYmxlCi0gICAqLwotICB1cGRhdGVDb21w
b25lbnQ6IGZ1bmN0aW9uKHRyYW5zYWN0aW9uLCBwcmV2UHJvcHMsIHByZXZTdGF0ZSkgewotICAg
IFJlYWN0Q29tcG9uZW50Lk1peGluLnVwZGF0ZUNvbXBvbmVudC5jYWxsKHRoaXMsIHRyYW5zYWN0
aW9uLCBwcmV2UHJvcHMpOwotICAgIHZhciBjdXJyZW50Q29tcG9uZW50ID0gdGhpcy5fcmVuZGVy
ZWRDb21wb25lbnQ7Ci0gICAgdmFyIG5leHRDb21wb25lbnQgPSB0aGlzLl9yZW5kZXJWYWxpZGF0
ZWRDb21wb25lbnQoKTsKLSAgICBpZiAoY3VycmVudENvbXBvbmVudC5jb25zdHJ1Y3RvciA9PT0g
bmV4dENvbXBvbmVudC5jb25zdHJ1Y3RvcikgewotICAgICAgY3VycmVudENvbXBvbmVudC5yZWNl
aXZlUHJvcHMobmV4dENvbXBvbmVudC5wcm9wcywgdHJhbnNhY3Rpb24pOwotICAgIH0gZWxzZSB7
Ci0gICAgICAvLyBUaGVzZSB0d28gSURzIGFyZSBhY3R1YWxseSB0aGUgc2FtZSEgQnV0IG5vdGhp
bmcgc2hvdWxkIHJlbHkgb24gdGhhdC4KLSAgICAgIHZhciB0aGlzSUQgPSB0aGlzLl9yb290Tm9k
ZUlEOwotICAgICAgdmFyIGN1cnJlbnRDb21wb25lbnRJRCA9IGN1cnJlbnRDb21wb25lbnQuX3Jv
b3ROb2RlSUQ7Ci0gICAgICBjdXJyZW50Q29tcG9uZW50LnVubW91bnRDb21wb25lbnQoKTsKLSAg
ICAgIHZhciBuZXh0TWFya3VwID0gbmV4dENvbXBvbmVudC5tb3VudENvbXBvbmVudCh0aGlzSUQs
IHRyYW5zYWN0aW9uKTsKLSAgICAgIFJlYWN0Q29tcG9uZW50LkRPTUlET3BlcmF0aW9ucy5kYW5n
ZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cEJ5SUQoCi0gICAgICAgIGN1cnJlbnRDb21wb25l
bnRJRCwKLSAgICAgICAgbmV4dE1hcmt1cAotICAgICAgKTsKLSAgICAgIHRoaXMuX3JlbmRlcmVk
Q29tcG9uZW50ID0gbmV4dENvbXBvbmVudDsKLSAgICB9Ci0gIH0sCi0KLSAgLyoqCi0gICAqIEZv
cmNlcyBhbiB1cGRhdGUuIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW52b2tlZCB3aGVuIGl0IGlzIGtu
b3duIHdpdGgKLSAgICogY2VydGFpbnR5IHRoYXQgd2UgYXJlICoqbm90KiogaW4gYSBET00gdHJh
bnNhY3Rpb24uCi0gICAqCi0gICAqIFlvdSBtYXkgd2FudCB0byBjYWxsIHRoaXMgd2hlbiB5b3Ug
a25vdyB0aGF0IHNvbWUgZGVlcGVyIGFzcGVjdCBvZiB0aGUKLSAgICogY29tcG9uZW50J3Mgc3Rh
dGUgaGFzIGNoYW5nZWQgYnV0IGBzZXRTdGF0ZWAgd2FzIG5vdCBjYWxsZWQuCi0gICAqCi0gICAq
IFRoaXMgd2lsbCBub3QgaW52b2tlIGBzaG91bGRVcGRhdGVDb21wb25lbnRgLCBidXQgaXQgd2ls
bCBpbnZva2UKLSAgICogYGNvbXBvbmVudFdpbGxVcGRhdGVgIGFuZCBgY29tcG9uZW50RGlkVXBk
YXRlYC4KLSAgICoKLSAgICogQHBhcmFtIHs/ZnVuY3Rpb259IGNhbGxiYWNrIENhbGxlZCBhZnRl
ciB1cGRhdGUgaXMgY29tcGxldGUuCi0gICAqIEBmaW5hbAotICAgKiBAcHJvdGVjdGVkCi0gICAq
LwotICBmb3JjZVVwZGF0ZTogZnVuY3Rpb24oY2FsbGJhY2spIHsKLSAgICB2YXIgY29tcG9zaXRl
TGlmZUN5Y2xlU3RhdGUgPSB0aGlzLl9jb21wb3NpdGVMaWZlQ3ljbGVTdGF0ZTsKLSAgICBpbnZh
cmlhbnQoCi0gICAgICB0aGlzLmlzTW91bnRlZCgpIHx8Ci0gICAgICAgIGNvbXBvc2l0ZUxpZmVD
eWNsZVN0YXRlID09PSBDb21wb3NpdGVMaWZlQ3ljbGUuTU9VTlRJTkcsCi0gICAgICAnZm9yY2VV
cGRhdGUoLi4uKTogQ2FuIG9ubHkgZm9yY2UgYW4gdXBkYXRlIG9uIG1vdW50ZWQgb3IgbW91bnRp
bmcgJyArCi0gICAgICAgICdjb21wb25lbnRzLicKLSAgICApOwotICAgIGludmFyaWFudCgKLSAg
ICAgIGNvbXBvc2l0ZUxpZmVDeWNsZVN0YXRlICE9PSBDb21wb3NpdGVMaWZlQ3ljbGUuUkVDRUlW
SU5HX1NUQVRFICYmCi0gICAgICBjb21wb3NpdGVMaWZlQ3ljbGVTdGF0ZSAhPT0gQ29tcG9zaXRl
TGlmZUN5Y2xlLlVOTU9VTlRJTkcsCi0gICAgICAnZm9yY2VVcGRhdGUoLi4uKTogQ2Fubm90IGZv
cmNlIGFuIHVwZGF0ZSB3aGlsZSB1bm1vdW50aW5nIGNvbXBvbmVudCAnICsKLSAgICAgICdvciBk
dXJpbmcgYW4gZXhpc3Rpbmcgc3RhdGUgdHJhbnNpdGlvbiAoc3VjaCBhcyB3aXRoaW4gYHJlbmRl
cmApLicKLSAgICApOwotICAgIHRoaXMuX3BlbmRpbmdGb3JjZVVwZGF0ZSA9IHRydWU7Ci0gICAg
UmVhY3RVcGRhdGVzLmVucXVldWVVcGRhdGUodGhpcywgY2FsbGJhY2spOwotICB9LAotCi0gIC8q
KgotICAgKiBAcHJpdmF0ZQotICAgKi8KLSAgX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudDogZnVu
Y3Rpb24oKSB7Ci0gICAgdmFyIHJlbmRlcmVkQ29tcG9uZW50OwotICAgIFJlYWN0Q3VycmVudE93
bmVyLmN1cnJlbnQgPSB0aGlzOwotICAgIHRyeSB7Ci0gICAgICByZW5kZXJlZENvbXBvbmVudCA9
IHRoaXMucmVuZGVyKCk7Ci0gICAgfSBjYXRjaCAoZXJyb3IpIHsKLSAgICAgIC8vIElFOCByZXF1
aXJlcyBgY2F0Y2hgIGluIG9yZGVyIHRvIHVzZSBgZmluYWxseWAuCi0gICAgICB0aHJvdyBlcnJv
cjsKLSAgICB9IGZpbmFsbHkgewotICAgICAgUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCA9IG51
bGw7Ci0gICAgfQotICAgIGludmFyaWFudCgKLSAgICAgIFJlYWN0Q29tcG9uZW50LmlzVmFsaWRD
b21wb25lbnQocmVuZGVyZWRDb21wb25lbnQpLAotICAgICAgJyVzLnJlbmRlcigpOiBBIHZhbGlk
IFJlYWN0Q29tcG9uZW50IG11c3QgYmUgcmV0dXJuZWQuJywKLSAgICAgIHRoaXMuY29uc3RydWN0
b3IuZGlzcGxheU5hbWUgfHwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50JwotICAgICk7Ci0gICAg
cmV0dXJuIHJlbmRlcmVkQ29tcG9uZW50OwotICB9LAotCi0gIC8qKgotICAgKiBAcHJpdmF0ZQot
ICAgKi8KLSAgX2JpbmRBdXRvQmluZE1ldGhvZHM6IGZ1bmN0aW9uKCkgewotICAgIGZvciAodmFy
IGF1dG9CaW5kS2V5IGluIHRoaXMuX19yZWFjdEF1dG9CaW5kTWFwKSB7Ci0gICAgICBpZiAoIXRo
aXMuX19yZWFjdEF1dG9CaW5kTWFwLmhhc093blByb3BlcnR5KGF1dG9CaW5kS2V5KSkgewotICAg
ICAgICBjb250aW51ZTsKLSAgICAgIH0KLSAgICAgIHZhciBtZXRob2QgPSB0aGlzLl9fcmVhY3RB
dXRvQmluZE1hcFthdXRvQmluZEtleV07Ci0gICAgICB0aGlzW2F1dG9CaW5kS2V5XSA9IHRoaXMu
X2JpbmRBdXRvQmluZE1ldGhvZChtZXRob2QpOwotICAgIH0KLSAgfSwKLQotICAvKioKLSAgICog
QmluZHMgYSBtZXRob2QgdG8gdGhlIGNvbXBvbmVudC4KLSAgICoKLSAgICogQHBhcmFtIHtmdW5j
dGlvbn0gbWV0aG9kIE1ldGhvZCB0byBiZSBib3VuZC4KLSAgICogQHByaXZhdGUKLSAgICovCi0g
IF9iaW5kQXV0b0JpbmRNZXRob2Q6IGZ1bmN0aW9uKG1ldGhvZCkgewotICAgIHZhciBjb21wb25l
bnQgPSB0aGlzOwotICAgIHZhciBib3VuZE1ldGhvZCA9IGZ1bmN0aW9uKCkgewotICAgICAgcmV0
dXJuIG1ldGhvZC5hcHBseShjb21wb25lbnQsIGFyZ3VtZW50cyk7Ci0gICAgfTsKLSAgICBpZiAo
dHJ1ZSkgewotICAgICAgdmFyIGNvbXBvbmVudE5hbWUgPSBjb21wb25lbnQuY29uc3RydWN0b3Iu
ZGlzcGxheU5hbWU7Ci0gICAgICB2YXIgX2JpbmQgPSBib3VuZE1ldGhvZC5iaW5kOwotICAgICAg
Ym91bmRNZXRob2QuYmluZCA9IGZ1bmN0aW9uKG5ld1RoaXMpIHsKLSAgICAgICAgLy8gVXNlciBp
cyB0cnlpbmcgdG8gYmluZCgpIGFuIGF1dG9ib3VuZCBtZXRob2Q7IHdlIGVmZmVjdGl2ZWx5IHdp
bGwKLSAgICAgICAgLy8gaWdub3JlIHRoZSB2YWx1ZSBvZiAidGhpcyIgdGhhdCB0aGUgdXNlciBp
cyB0cnlpbmcgdG8gdXNlLCBzbwotICAgICAgICAvLyBsZXQncyB3YXJuLgotICAgICAgICBpZiAo
bmV3VGhpcyAhPT0gY29tcG9uZW50KSB7Ci0gICAgICAgICAgY29uc29sZS53YXJuKAotICAgICAg
ICAgICAgJ2JpbmQoKTogUmVhY3QgY29tcG9uZW50IG1ldGhvZHMgbWF5IG9ubHkgYmUgYm91bmQg
dG8gdGhlICcgKwotICAgICAgICAgICAgJ2NvbXBvbmVudCBpbnN0YW5jZS4gU2VlICcgKyBjb21w
b25lbnROYW1lCi0gICAgICAgICAgKTsKLSAgICAgICAgfSBlbHNlIGlmIChhcmd1bWVudHMubGVu
Z3RoID09PSAxKSB7Ci0gICAgICAgICAgY29uc29sZS53YXJuKAotICAgICAgICAgICAgJ2JpbmQo
KTogWW91IGFyZSBiaW5kaW5nIGEgY29tcG9uZW50IG1ldGhvZCB0byB0aGUgY29tcG9uZW50LiAn
ICsKLSAgICAgICAgICAgICdSZWFjdCBkb2VzIHRoaXMgZm9yIHlvdSBhdXRvbWF0aWNhbGx5IGlu
IGEgaGlnaC1wZXJmb3JtYW5jZSAnICsKLSAgICAgICAgICAgICd3YXksIHNvIHlvdSBjYW4gc2Fm
ZWx5IHJlbW92ZSB0aGlzIGNhbGwuIFNlZSAnICsgY29tcG9uZW50TmFtZQotICAgICAgICAgICk7
Ci0gICAgICAgICAgcmV0dXJuIGJvdW5kTWV0aG9kOwotICAgICAgICB9Ci0gICAgICAgIHJldHVy
biBfYmluZC5hcHBseShib3VuZE1ldGhvZCwgYXJndW1lbnRzKTsKLSAgICAgIH07Ci0gICAgfQot
ICAgIHJldHVybiBib3VuZE1ldGhvZDsKLSAgfQotfTsKLQotdmFyIFJlYWN0Q29tcG9zaXRlQ29t
cG9uZW50QmFzZSA9IGZ1bmN0aW9uKCkge307Ci1taXhJbnRvKFJlYWN0Q29tcG9zaXRlQ29tcG9u
ZW50QmFzZSwgUmVhY3RDb21wb25lbnQuTWl4aW4pOwotbWl4SW50byhSZWFjdENvbXBvc2l0ZUNv
bXBvbmVudEJhc2UsIFJlYWN0T3duZXIuTWl4aW4pOwotbWl4SW50byhSZWFjdENvbXBvc2l0ZUNv
bXBvbmVudEJhc2UsIFJlYWN0UHJvcFRyYW5zZmVyZXIuTWl4aW4pOwotbWl4SW50byhSZWFjdENv
bXBvc2l0ZUNvbXBvbmVudEJhc2UsIFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50TWl4aW4pOwotCi0v
KioKLSAqIE1vZHVsZSBmb3IgY3JlYXRpbmcgY29tcG9zaXRlIGNvbXBvbmVudHMuCi0gKgotICog
QGNsYXNzIFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50Ci0gKiBAZXh0ZW5kcyBSZWFjdENvbXBvbmVu
dAotICogQGV4dGVuZHMgUmVhY3RPd25lcgotICogQGV4dGVuZHMgUmVhY3RQcm9wVHJhbnNmZXJl
cgotICovCi12YXIgUmVhY3RDb21wb3NpdGVDb21wb25lbnQgPSB7Ci0KLSAgTGlmZUN5Y2xlOiBD
b21wb3NpdGVMaWZlQ3ljbGUsCi0KLSAgQmFzZTogUmVhY3RDb21wb3NpdGVDb21wb25lbnRCYXNl
LAotCi0gIC8qKgotICAgKiBDcmVhdGVzIGEgY29tcG9zaXRlIGNvbXBvbmVudCBjbGFzcyBnaXZl
biBhIGNsYXNzIHNwZWNpZmljYXRpb24uCi0gICAqCi0gICAqIEBwYXJhbSB7b2JqZWN0fSBzcGVj
IENsYXNzIHNwZWNpZmljYXRpb24gKHdoaWNoIG11c3QgZGVmaW5lIGByZW5kZXJgKS4KLSAgICog
QHJldHVybiB7ZnVuY3Rpb259IENvbXBvbmVudCBjb25zdHJ1Y3RvciBmdW5jdGlvbi4KLSAgICog
QHB1YmxpYwotICAgKi8KLSAgY3JlYXRlQ2xhc3M6IGZ1bmN0aW9uKHNwZWMpIHsKLSAgICB2YXIg
Q29uc3RydWN0b3IgPSBmdW5jdGlvbigpIHt9OwotICAgIENvbnN0cnVjdG9yLnByb3RvdHlwZSA9
IG5ldyBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudEJhc2UoKTsKLSAgICBDb25zdHJ1Y3Rvci5wcm90
b3R5cGUuY29uc3RydWN0b3IgPSBDb25zdHJ1Y3RvcjsKLSAgICBtaXhTcGVjSW50b0NvbXBvbmVu
dChDb25zdHJ1Y3Rvciwgc3BlYyk7Ci0gICAgaW52YXJpYW50KAotICAgICAgQ29uc3RydWN0b3Iu
cHJvdG90eXBlLnJlbmRlciwKLSAgICAgICdjcmVhdGVDbGFzcyguLi4pOiBDbGFzcyBzcGVjaWZp
Y2F0aW9uIG11c3QgaW1wbGVtZW50IGEgYHJlbmRlcmAgbWV0aG9kLicKLSAgICApOwotICAgIC8v
IFJlZHVjZSB0aW1lIHNwZW50IGRvaW5nIGxvb2t1cHMgYnkgc2V0dGluZyB0aGVzZSBvbiB0aGUg
cHJvdG90eXBlLgotICAgIGZvciAodmFyIG1ldGhvZE5hbWUgaW4gUmVhY3RDb21wb3NpdGVDb21w
b25lbnRJbnRlcmZhY2UpIHsKLSAgICAgIGlmICghQ29uc3RydWN0b3IucHJvdG90eXBlW21ldGhv
ZE5hbWVdKSB7Ci0gICAgICAgIENvbnN0cnVjdG9yLnByb3RvdHlwZVttZXRob2ROYW1lXSA9IG51
bGw7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgdmFyIENvbnZlbmllbmNlQ29uc3RydWN0b3IgPSBm
dW5jdGlvbihwcm9wcywgY2hpbGRyZW4pIHsKLSAgICAgIHZhciBpbnN0YW5jZSA9IG5ldyBDb25z
dHJ1Y3RvcigpOwotICAgICAgaW5zdGFuY2UuY29uc3RydWN0LmFwcGx5KGluc3RhbmNlLCBhcmd1
bWVudHMpOwotICAgICAgcmV0dXJuIGluc3RhbmNlOwotICAgIH07Ci0gICAgQ29udmVuaWVuY2VD
b25zdHJ1Y3Rvci5jb21wb25lbnRDb25zdHJ1Y3RvciA9IENvbnN0cnVjdG9yOwotICAgIENvbnZl
bmllbmNlQ29uc3RydWN0b3Iub3JpZ2luYWxTcGVjID0gc3BlYzsKLSAgICByZXR1cm4gQ29udmVu
aWVuY2VDb25zdHJ1Y3RvcjsKLSAgfSwKLQotICAvKioKLSAgICogVE9ETzogRGVsZXRlIHRoaXMg
d2hlbiBhbGwgY2FsbGVycyBoYXZlIGJlZW4gdXBkYXRlZCB0byByZWx5IG9uIHRoaXMKLSAgICog
YmVoYXZpb3IgYmVpbmcgdGhlIGRlZmF1bHQuCi0gICAqCi0gICAqIEJhY2t3YXJkcyBjb21wYXRp
YmxlIHN0dWIgZm9yIHdoYXQgaXMgbm93IHRoZSBkZWZhdWx0IGJlaGF2aW9yLgotICAgKiBAcGFy
YW0ge2Z1bmN0aW9ufSBtZXRob2QgTWV0aG9kIHRvIGJlIGJvdW5kLgotICAgKiBAcHVibGljCi0g
ICAqLwotICBhdXRvQmluZDogZnVuY3Rpb24obWV0aG9kKSB7Ci0gICAgaWYgKHRydWUpIHsKLSAg
ICAgIGNvbnNvbGUud2FybigKLSAgICAgICAgJ1JlYWN0LmF1dG9CaW5kKCkgaXMgbm93IGRlcHJl
Y2F0ZWQuIEFsbCBSZWFjdCBjb21wb25lbnQgbWV0aG9kcyAnICsKLSAgICAgICAgJ2FyZSBhdXRv
IGJvdW5kIGJ5IGRlZmF1bHQsIHNvIFJlYWN0LmF1dG9CaW5kKCkgaXMgYSBuby1vcC4gSXQgJyAr
Ci0gICAgICAgICd3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgdmVyc2lvbiBvZiBSZWFjdCcK
LSAgICAgICk7Ci0gICAgfQotICAgIHJldHVybiBtZXRob2Q7Ci0gIH0KLX07Ci0KLW1vZHVsZS5l
eHBvcnRzID0gUmVhY3RDb21wb3NpdGVDb21wb25lbnQ7Ci0KLX0pKCkKLX0seyIuL1JlYWN0Q29t
cG9uZW50IjoyMiwiLi9SZWFjdEN1cnJlbnRPd25lciI6MjQsIi4vUmVhY3RPd25lciI6NDIsIi4v
UmVhY3RQcm9wVHJhbnNmZXJlciI6NDMsIi4vUmVhY3RVcGRhdGVzIjo0OCwiLi9pbnZhcmlhbnQi
Ojc1LCIuL2tleU1pcnJvciI6NzgsIi4vbWVyZ2UiOjgxLCIuL21peEludG8iOjg0fV0sMjQ6W2Z1
bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewotLyoqCi0gKiBDb3B5cmlnaHQgMjAxMyBG
YWNlYm9vaywgSW5jLgotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwg
VmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmls
ZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRh
aW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogaHR0cDovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2Fi
bGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQg
dW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAq
IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhw
cmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFu
Z3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhl
IExpY2Vuc2UuCi0gKgotICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0Q3VycmVudE93bmVyCi0gKi8K
LQotInVzZSBzdHJpY3QiOwotCi0vKioKLSAqIEtlZXBzIHRyYWNrIG9mIHRoZSBjdXJyZW50IG93
bmVyLgotICoKLSAqIFRoZSBjdXJyZW50IG93bmVyIGlzIHRoZSBjb21wb25lbnQgd2hvIHNob3Vs
ZCBvd24gYW55IGNvbXBvbmVudHMgdGhhdCBhcmUKLSAqIGN1cnJlbnRseSBiZWluZyBjb25zdHJ1
Y3RlZC4KLSAqCi0gKiBUaGUgZGVwdGggaW5kaWNhdGUgaG93IG1hbnkgY29tcG9zaXRlIGNvbXBv
bmVudHMgYXJlIGFib3ZlIHRoaXMgcmVuZGVyIGxldmVsLgotICovCi12YXIgUmVhY3RDdXJyZW50
T3duZXIgPSB7Ci0KLSAgLyoqCi0gICAqIEBpbnRlcm5hbAotICAgKiBAdHlwZSB7UmVhY3RDb21w
b25lbnR9Ci0gICAqLwotICBjdXJyZW50OiBudWxsCi0KLX07Ci0KLW1vZHVsZS5leHBvcnRzID0g
UmVhY3RDdXJyZW50T3duZXI7Ci0KLX0se31dLDI1OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxl
eHBvcnRzKXsKLS8qKgotICogQ29weXJpZ2h0IDIwMTMgRmFjZWJvb2ssIEluYy4KLSAqCi0gKiBM
aWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vu
c2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ug
d2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5z
ZSBhdAotICoKLSAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAot
ICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1Ig
Q09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNl
ZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNz
aW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICoKLSAqIEBwcm92
aWRlc01vZHVsZSBSZWFjdERPTQotICogQHR5cGVjaGVja3Mgc3RhdGljLW9ubHkKLSAqLwotCi0i
dXNlIHN0cmljdCI7Ci0KLXZhciBSZWFjdE5hdGl2ZUNvbXBvbmVudCA9IHJlcXVpcmUoIi4vUmVh
Y3ROYXRpdmVDb21wb25lbnQiKTsKLQotdmFyIG1lcmdlSW50byA9IHJlcXVpcmUoIi4vbWVyZ2VJ
bnRvIik7Ci12YXIgb2JqTWFwS2V5VmFsID0gcmVxdWlyZSgiLi9vYmpNYXBLZXlWYWwiKTsKLQot
LyoqCi0gKiBDcmVhdGVzIGEgbmV3IFJlYWN0IGNsYXNzIHRoYXQgaXMgaWRlbXBvdGVudCBhbmQg
Y2FwYWJsZSBvZiBjb250YWluaW5nIG90aGVyCi0gKiBSZWFjdCBjb21wb25lbnRzLiBJdCBhY2Nl
cHRzIGV2ZW50IGxpc3RlbmVycyBhbmQgRE9NIHByb3BlcnRpZXMgdGhhdCBhcmUKLSAqIHZhbGlk
IGFjY29yZGluZyB0byBgRE9NUHJvcGVydHlgLgotICoKLSAqICAtIEV2ZW50IGxpc3RlbmVyczog
YG9uQ2xpY2tgLCBgb25Nb3VzZURvd25gLCBldGMuCi0gKiAgLSBET00gcHJvcGVydGllczogYGNs
YXNzTmFtZWAsIGBuYW1lYCwgYHRpdGxlYCwgZXRjLgotICoKLSAqIFRoZSBgc3R5bGVgIHByb3Bl
cnR5IGZ1bmN0aW9ucyBkaWZmZXJlbnRseSBmcm9tIHRoZSBET00gQVBJLiBJdCBhY2NlcHRzIGFu
Ci0gKiBvYmplY3QgbWFwcGluZyBvZiBzdHlsZSBwcm9wZXJ0aWVzIHRvIHZhbHVlcy4KLSAqCi0g
KiBAcGFyYW0ge3N0cmluZ30gdGFnIFRhZyBuYW1lIChlLmcuIGBkaXZgKS4KLSAqIEBwYXJhbSB7
Ym9vbGVhbn0gb21pdENsb3NlIFRydWUgaWYgdGhlIGNsb3NlIHRhZyBzaG91bGQgYmUgb21pdHRl
ZC4KLSAqIEBwcml2YXRlCi0gKi8KLWZ1bmN0aW9uIGNyZWF0ZURPTUNvbXBvbmVudENsYXNzKHRh
Zywgb21pdENsb3NlKSB7Ci0gIHZhciBDb25zdHJ1Y3RvciA9IGZ1bmN0aW9uKCkge307Ci0gIENv
bnN0cnVjdG9yLnByb3RvdHlwZSA9IG5ldyBSZWFjdE5hdGl2ZUNvbXBvbmVudCh0YWcsIG9taXRD
bG9zZSk7Ci0gIENvbnN0cnVjdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IENvbnN0cnVjdG9y
OwotCi0gIHZhciBDb252ZW5pZW5jZUNvbnN0cnVjdG9yID0gZnVuY3Rpb24ocHJvcHMsIGNoaWxk
cmVuKSB7Ci0gICAgdmFyIGluc3RhbmNlID0gbmV3IENvbnN0cnVjdG9yKCk7Ci0gICAgaW5zdGFu
Y2UuY29uc3RydWN0LmFwcGx5KGluc3RhbmNlLCBhcmd1bWVudHMpOwotICAgIHJldHVybiBpbnN0
YW5jZTsKLSAgfTsKLSAgQ29udmVuaWVuY2VDb25zdHJ1Y3Rvci5jb21wb25lbnRDb25zdHJ1Y3Rv
ciA9IENvbnN0cnVjdG9yOwotICByZXR1cm4gQ29udmVuaWVuY2VDb25zdHJ1Y3RvcjsKLX0KLQot
LyoqCi0gKiBDcmVhdGVzIGEgbWFwcGluZyBmcm9tIHN1cHBvcnRlZCBIVE1MIHRhZ3MgdG8gYFJl
YWN0TmF0aXZlQ29tcG9uZW50YCBjbGFzc2VzLgotICogVGhpcyBpcyBhbHNvIGFjY2Vzc2libGUg
dmlhIGBSZWFjdC5ET01gLgotICoKLSAqIEBwdWJsaWMKLSAqLwotdmFyIFJlYWN0RE9NID0gb2Jq
TWFwS2V5VmFsKHsKLSAgYTogZmFsc2UsCi0gIGFiYnI6IGZhbHNlLAotICBhZGRyZXNzOiBmYWxz
ZSwKLSAgYXJlYTogZmFsc2UsCi0gIGFydGljbGU6IGZhbHNlLAotICBhc2lkZTogZmFsc2UsCi0g
IGF1ZGlvOiBmYWxzZSwKLSAgYjogZmFsc2UsCi0gIGJhc2U6IGZhbHNlLAotICBiZGk6IGZhbHNl
LAotICBiZG86IGZhbHNlLAotICBiaWc6IGZhbHNlLAotICBibG9ja3F1b3RlOiBmYWxzZSwKLSAg
Ym9keTogZmFsc2UsCi0gIGJyOiB0cnVlLAotICBidXR0b246IGZhbHNlLAotICBjYW52YXM6IGZh
bHNlLAotICBjYXB0aW9uOiBmYWxzZSwKLSAgY2l0ZTogZmFsc2UsCi0gIGNvZGU6IGZhbHNlLAot
ICBjb2w6IHRydWUsCi0gIGNvbGdyb3VwOiBmYWxzZSwKLSAgZGF0YTogZmFsc2UsCi0gIGRhdGFs
aXN0OiBmYWxzZSwKLSAgZGQ6IGZhbHNlLAotICBkZWw6IGZhbHNlLAotICBkZXRhaWxzOiBmYWxz
ZSwKLSAgZGZuOiBmYWxzZSwKLSAgZGl2OiBmYWxzZSwKLSAgZGw6IGZhbHNlLAotICBkdDogZmFs
c2UsCi0gIGVtOiBmYWxzZSwKLSAgZW1iZWQ6IHRydWUsCi0gIGZpZWxkc2V0OiBmYWxzZSwKLSAg
ZmlnY2FwdGlvbjogZmFsc2UsCi0gIGZpZ3VyZTogZmFsc2UsCi0gIGZvb3RlcjogZmFsc2UsCi0g
IGZvcm06IGZhbHNlLCAvLyBOT1RFOiBJbmplY3RlZCwgc2VlIGBSZWFjdERPTUZvcm1gLgotICBo
MTogZmFsc2UsCi0gIGgyOiBmYWxzZSwKLSAgaDM6IGZhbHNlLAotICBoNDogZmFsc2UsCi0gIGg1
OiBmYWxzZSwKLSAgaDY6IGZhbHNlLAotICBoZWFkOiBmYWxzZSwKLSAgaGVhZGVyOiBmYWxzZSwK
LSAgaHI6IHRydWUsCi0gIGh0bWw6IGZhbHNlLAotICBpOiBmYWxzZSwKLSAgaWZyYW1lOiBmYWxz
ZSwKLSAgaW1nOiB0cnVlLAotICBpbnB1dDogdHJ1ZSwKLSAgaW5zOiBmYWxzZSwKLSAga2JkOiBm
YWxzZSwKLSAga2V5Z2VuOiB0cnVlLAotICBsYWJlbDogZmFsc2UsCi0gIGxlZ2VuZDogZmFsc2Us
Ci0gIGxpOiBmYWxzZSwKLSAgbGluazogZmFsc2UsCi0gIG1haW46IGZhbHNlLAotICBtYXA6IGZh
bHNlLAotICBtYXJrOiBmYWxzZSwKLSAgbWVudTogZmFsc2UsCi0gIG1lbnVpdGVtOiBmYWxzZSwg
Ly8gTk9URTogQ2xvc2UgdGFnIHNob3VsZCBiZSBvbWl0dGVkLCBidXQgY2F1c2VzIHByb2JsZW1z
LgotICBtZXRhOiB0cnVlLAotICBtZXRlcjogZmFsc2UsCi0gIG5hdjogZmFsc2UsCi0gIG5vc2Ny
aXB0OiBmYWxzZSwKLSAgb2JqZWN0OiBmYWxzZSwKLSAgb2w6IGZhbHNlLAotICBvcHRncm91cDog
ZmFsc2UsCi0gIG9wdGlvbjogZmFsc2UsCi0gIG91dHB1dDogZmFsc2UsCi0gIHA6IGZhbHNlLAot
ICBwYXJhbTogdHJ1ZSwKLSAgcHJlOiBmYWxzZSwKLSAgcHJvZ3Jlc3M6IGZhbHNlLAotICBxOiBm
YWxzZSwKLSAgcnA6IGZhbHNlLAotICBydDogZmFsc2UsCi0gIHJ1Ynk6IGZhbHNlLAotICBzOiBm
YWxzZSwKLSAgc2FtcDogZmFsc2UsCi0gIHNjcmlwdDogZmFsc2UsCi0gIHNlY3Rpb246IGZhbHNl
LAotICBzZWxlY3Q6IGZhbHNlLAotICBzbWFsbDogZmFsc2UsCi0gIHNvdXJjZTogZmFsc2UsCi0g
IHNwYW46IGZhbHNlLAotICBzdHJvbmc6IGZhbHNlLAotICBzdHlsZTogZmFsc2UsCi0gIHN1Yjog
ZmFsc2UsCi0gIHN1bW1hcnk6IGZhbHNlLAotICBzdXA6IGZhbHNlLAotICB0YWJsZTogZmFsc2Us
Ci0gIHRib2R5OiBmYWxzZSwKLSAgdGQ6IGZhbHNlLAotICB0ZXh0YXJlYTogZmFsc2UsIC8vIE5P
VEU6IEluamVjdGVkLCBzZWUgYFJlYWN0RE9NVGV4dGFyZWFgLgotICB0Zm9vdDogZmFsc2UsCi0g
IHRoOiBmYWxzZSwKLSAgdGhlYWQ6IGZhbHNlLAotICB0aW1lOiBmYWxzZSwKLSAgdGl0bGU6IGZh
bHNlLAotICB0cjogZmFsc2UsCi0gIHRyYWNrOiB0cnVlLAotICB1OiBmYWxzZSwKLSAgdWw6IGZh
bHNlLAotICAndmFyJzogZmFsc2UsCi0gIHZpZGVvOiBmYWxzZSwKLSAgd2JyOiBmYWxzZSwKLQot
ICAvLyBTVkcKLSAgY2lyY2xlOiBmYWxzZSwKLSAgZzogZmFsc2UsCi0gIGxpbmU6IGZhbHNlLAot
ICBwYXRoOiBmYWxzZSwKLSAgcG9seWxpbmU6IGZhbHNlLAotICByZWN0OiBmYWxzZSwKLSAgc3Zn
OiBmYWxzZSwKLSAgdGV4dDogZmFsc2UKLX0sIGNyZWF0ZURPTUNvbXBvbmVudENsYXNzKTsKLQot
dmFyIGluamVjdGlvbiA9IHsKLSAgaW5qZWN0Q29tcG9uZW50Q2xhc3NlczogZnVuY3Rpb24oY29t
cG9uZW50Q2xhc3NlcykgewotICAgIG1lcmdlSW50byhSZWFjdERPTSwgY29tcG9uZW50Q2xhc3Nl
cyk7Ci0gIH0KLX07Ci0KLVJlYWN0RE9NLmluamVjdGlvbiA9IGluamVjdGlvbjsKLQotbW9kdWxl
LmV4cG9ydHMgPSBSZWFjdERPTTsKLQotfSx7Ii4vUmVhY3ROYXRpdmVDb21wb25lbnQiOjQwLCIu
L21lcmdlSW50byI6ODMsIi4vb2JqTWFwS2V5VmFsIjo4NX1dLDI2OltmdW5jdGlvbihyZXF1aXJl
LG1vZHVsZSxleHBvcnRzKXsKLS8qKgotICogQ29weXJpZ2h0IDIwMTMgRmFjZWJvb2ssIEluYy4K
LSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0
aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAotICoKLSAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3Jl
ZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNl
bnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJB
TlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGll
ZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmlu
ZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICoK
LSAqIEBwcm92aWRlc01vZHVsZSBSZWFjdERPTUZvcm0KLSAqLwotCi0idXNlIHN0cmljdCI7Ci0K
LXZhciBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCA9IHJlcXVpcmUoIi4vUmVhY3RDb21wb3NpdGVD
b21wb25lbnQiKTsKLXZhciBSZWFjdERPTSA9IHJlcXVpcmUoIi4vUmVhY3RET00iKTsKLXZhciBS
ZWFjdEV2ZW50RW1pdHRlciA9IHJlcXVpcmUoIi4vUmVhY3RFdmVudEVtaXR0ZXIiKTsKLXZhciBF
dmVudENvbnN0YW50cyA9IHJlcXVpcmUoIi4vRXZlbnRDb25zdGFudHMiKTsKLQotLy8gU3RvcmUg
YSByZWZlcmVuY2UgdG8gdGhlIDxmb3JtPiBgUmVhY3ROYXRpdmVDb21wb25lbnRgLgotdmFyIGZv
cm0gPSBSZWFjdERPTS5mb3JtOwotCi0vKioKLSAqIFNpbmNlIG9uU3VibWl0IGRvZXNuJ3QgYnVi
YmxlIE9SIGNhcHR1cmUgb24gdGhlIHRvcCBsZXZlbCBpbiBJRTgsIHdlIG5lZWQKLSAqIHRvIGNh
cHR1cmUgaXQgb24gdGhlIDxmb3JtPiBlbGVtZW50IGl0c2VsZi4gVGhlcmUgYXJlIGxvdHMgb2Yg
aGFja3Mgd2UgY291bGQKLSAqIGRvIHRvIGFjY29tcGxpc2ggdGhpcywgYnV0IHRoZSBtb3N0IHJl
bGlhYmxlIGlzIHRvIG1ha2UgPGZvcm0+IGEKLSAqIGNvbXBvc2l0ZSBjb21wb25lbnQgYW5kIHVz
ZSBgY29tcG9uZW50RGlkTW91bnRgIHRvIGF0dGFjaCB0aGUgZXZlbnQgaGFuZGxlcnMuCi0gKi8K
LXZhciBSZWFjdERPTUZvcm0gPSBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudC5jcmVhdGVDbGFzcyh7
Ci0gIHJlbmRlcjogZnVuY3Rpb24oKSB7Ci0gICAgLy8gVE9ETzogSW5zdGVhZCBvZiB1c2luZyBg
UmVhY3RET01gIGRpcmVjdGx5LCB3ZSBzaG91bGQgdXNlIEpTWC4gSG93ZXZlciwKLSAgICAvLyBg
anNoaW50YCBmYWlscyB0byBwYXJzZSBKU1ggc28gaW4gb3JkZXIgZm9yIGxpbnRpbmcgdG8gd29y
ayBpbiB0aGUgb3BlbgotICAgIC8vIHNvdXJjZSByZXBvLCB3ZSBuZWVkIHRvIGp1c3QgdXNlIGBS
ZWFjdERPTS5mb3JtYC4KLSAgICByZXR1cm4gdGhpcy50cmFuc2ZlclByb3BzVG8oZm9ybShudWxs
LCB0aGlzLnByb3BzLmNoaWxkcmVuKSk7Ci0gIH0sCi0KLSAgY29tcG9uZW50RGlkTW91bnQ6IGZ1
bmN0aW9uKG5vZGUpIHsKLSAgICBSZWFjdEV2ZW50RW1pdHRlci50cmFwQnViYmxlZEV2ZW50KAot
ICAgICAgRXZlbnRDb25zdGFudHMudG9wTGV2ZWxUeXBlcy50b3BTdWJtaXQsCi0gICAgICAnc3Vi
bWl0JywKLSAgICAgIG5vZGUKLSAgICApOwotICB9Ci19KTsKLQotbW9kdWxlLmV4cG9ydHMgPSBS
ZWFjdERPTUZvcm07Ci0KLX0seyIuL0V2ZW50Q29uc3RhbnRzIjoxMywiLi9SZWFjdENvbXBvc2l0
ZUNvbXBvbmVudCI6MjMsIi4vUmVhY3RET00iOjI1LCIuL1JlYWN0RXZlbnRFbWl0dGVyIjozM31d
LDI3OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKLShmdW5jdGlvbigpey8qKgot
ICogQ29weXJpZ2h0IDIwMTMgRmFjZWJvb2ssIEluYy4KLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0
aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBt
YXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z
ZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqIGh0
dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu
ICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBB
TlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBm
b3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxp
bWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICoKLSAqIEBwcm92aWRlc01vZHVsZSBSZWFj
dERPTUlET3BlcmF0aW9ucwotICogQHR5cGVjaGVja3Mgc3RhdGljLW9ubHkKLSAqLwotCi0vKmpz
bGludCBldmlsOiB0cnVlICovCi0KLSJ1c2Ugc3RyaWN0IjsKLQotdmFyIENTU1Byb3BlcnR5T3Bl
cmF0aW9ucyA9IHJlcXVpcmUoIi4vQ1NTUHJvcGVydHlPcGVyYXRpb25zIik7Ci12YXIgRE9NQ2hp
bGRyZW5PcGVyYXRpb25zID0gcmVxdWlyZSgiLi9ET01DaGlsZHJlbk9wZXJhdGlvbnMiKTsKLXZh
ciBET01Qcm9wZXJ0eU9wZXJhdGlvbnMgPSByZXF1aXJlKCIuL0RPTVByb3BlcnR5T3BlcmF0aW9u
cyIpOwotdmFyIFJlYWN0SUQgPSByZXF1aXJlKCIuL1JlYWN0SUQiKTsKLQotdmFyIGdldFRleHRD
b250ZW50QWNjZXNzb3IgPSByZXF1aXJlKCIuL2dldFRleHRDb250ZW50QWNjZXNzb3IiKTsKLXZh
ciBpbnZhcmlhbnQgPSByZXF1aXJlKCIuL2ludmFyaWFudCIpOwotCi0vKioKLSAqIEVycm9ycyBm
b3IgcHJvcGVydGllcyB0aGF0IHNob3VsZCBub3QgYmUgdXBkYXRlZCB3aXRoIGB1cGRhdGVQcm9w
ZXJ0eUJ5SWQoKWAuCi0gKgotICogQHR5cGUge29iamVjdH0KLSAqIEBwcml2YXRlCi0gKi8KLXZh
ciBJTlZBTElEX1BST1BFUlRZX0VSUk9SUyA9IHsKLSAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6
Ci0gICAgJ2BkYW5nZXJvdXNseVNldElubmVySFRNTGAgbXVzdCBiZSBzZXQgdXNpbmcgYHVwZGF0
ZUlubmVySFRNTEJ5SUQoKWAuJywKLSAgc3R5bGU6ICdgc3R5bGVgIG11c3QgYmUgc2V0IHVzaW5n
IGB1cGRhdGVTdHlsZXNCeUlEKClgLicKLX07Ci0KLS8qKgotICogVGhlIERPTSBwcm9wZXJ0eSB0
byB1c2Ugd2hlbiBzZXR0aW5nIHRleHQgY29udGVudC4KLSAqCi0gKiBAdHlwZSB7c3RyaW5nfQot
ICogQHByaXZhdGUKLSAqLwotdmFyIHRleHRDb250ZW50QWNjZXNzb3IgPSBnZXRUZXh0Q29udGVu
dEFjY2Vzc29yKCkgfHwgJ05BJzsKLQotLyoqCi0gKiBPcGVyYXRpb25zIHVzZWQgdG8gcHJvY2Vz
cyB1cGRhdGVzIHRvIERPTSBub2Rlcy4gVGhpcyBpcyBtYWRlIGluamVjdGFibGUgdmlhCi0gKiBg
UmVhY3RDb21wb25lbnQuRE9NSURPcGVyYXRpb25zYC4KLSAqLwotdmFyIFJlYWN0RE9NSURPcGVy
YXRpb25zID0gewotCi0gIC8qKgotICAgKiBVcGRhdGVzIGEgRE9NIG5vZGUgd2l0aCBuZXcgcHJv
cGVydHkgdmFsdWVzLiBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgdG8KLSAgICogdXBkYXRlIERP
TSBwcm9wZXJ0aWVzIGluIGBET01Qcm9wZXJ0eWAuCi0gICAqCi0gICAqIEBwYXJhbSB7c3RyaW5n
fSBpZCBJRCBvZiB0aGUgbm9kZSB0byB1cGRhdGUuCi0gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1l
IEEgdmFsaWQgcHJvcGVydHkgbmFtZSwgc2VlIGBET01Qcm9wZXJ0eWAuCi0gICAqIEBwYXJhbSB7
Kn0gdmFsdWUgTmV3IHZhbHVlIG9mIHRoZSBwcm9wZXJ0eS4KLSAgICogQGludGVybmFsCi0gICAq
LwotICB1cGRhdGVQcm9wZXJ0eUJ5SUQ6IGZ1bmN0aW9uKGlkLCBuYW1lLCB2YWx1ZSkgewotICAg
IHZhciBub2RlID0gUmVhY3RJRC5nZXROb2RlKGlkKTsKLSAgICBpbnZhcmlhbnQoCi0gICAgICAh
SU5WQUxJRF9QUk9QRVJUWV9FUlJPUlMuaGFzT3duUHJvcGVydHkobmFtZSksCi0gICAgICAndXBk
YXRlUHJvcGVydHlCeUlEKC4uLik6ICVzJywKLSAgICAgIElOVkFMSURfUFJPUEVSVFlfRVJST1JT
W25hbWVdCi0gICAgKTsKLSAgICBET01Qcm9wZXJ0eU9wZXJhdGlvbnMuc2V0VmFsdWVGb3JQcm9w
ZXJ0eShub2RlLCBuYW1lLCB2YWx1ZSk7Ci0gIH0sCi0KLSAgLyoqCi0gICAqIFVwZGF0ZXMgYSBE
T00gbm9kZSB0byByZW1vdmUgYSBwcm9wZXJ0eS4gVGhpcyBzaG91bGQgb25seSBiZSB1c2VkIHRv
IHJlbW92ZQotICAgKiBET00gcHJvcGVydGllcyBpbiBgRE9NUHJvcGVydHlgLgotICAgKgotICAg
KiBAcGFyYW0ge3N0cmluZ30gaWQgSUQgb2YgdGhlIG5vZGUgdG8gdXBkYXRlLgotICAgKiBAcGFy
YW0ge3N0cmluZ30gbmFtZSBBIHByb3BlcnR5IG5hbWUgdG8gcmVtb3ZlLCBzZWUgYERPTVByb3Bl
cnR5YC4KLSAgICogQGludGVybmFsCi0gICAqLwotICBkZWxldGVQcm9wZXJ0eUJ5SUQ6IGZ1bmN0
aW9uKGlkLCBuYW1lLCB2YWx1ZSkgewotICAgIHZhciBub2RlID0gUmVhY3RJRC5nZXROb2RlKGlk
KTsKLSAgICBpbnZhcmlhbnQoCi0gICAgICAhSU5WQUxJRF9QUk9QRVJUWV9FUlJPUlMuaGFzT3du
UHJvcGVydHkobmFtZSksCi0gICAgICAndXBkYXRlUHJvcGVydHlCeUlEKC4uLik6ICVzJywKLSAg
ICAgIElOVkFMSURfUFJPUEVSVFlfRVJST1JTW25hbWVdCi0gICAgKTsKLSAgICBET01Qcm9wZXJ0
eU9wZXJhdGlvbnMuZGVsZXRlVmFsdWVGb3JQcm9wZXJ0eShub2RlLCBuYW1lLCB2YWx1ZSk7Ci0g
IH0sCi0KLSAgLyoqCi0gICAqIFRoaXMgc2hvdWxkIGFsbW9zdCBuZXZlciBiZSB1c2VkIGluc3Rl
YWQgb2YgYHVwZGF0ZVByb3BlcnR5QnlJRCgpYCBkdWUgdG8KLSAgICogdGhlIGV4dHJhIG9iamVj
dCBhbGxvY2F0aW9uIHJlcXVpcmVkIGJ5IHRoZSBBUEkuIFRoYXQgc2FpZCwgdGhpcyBpcyB1c2Vm
dWwKLSAgICogZm9yIGJhdGNoaW5nIHVwIHNldmVyYWwgb3BlcmF0aW9ucyBhY3Jvc3Mgd29ya2Vy
IHRocmVhZCBib3VuZGFyaWVzLgotICAgKgotICAgKiBAcGFyYW0ge3N0cmluZ30gaWQgSUQgb2Yg
dGhlIG5vZGUgdG8gdXBkYXRlLgotICAgKiBAcGFyYW0ge29iamVjdH0gcHJvcGVydGllcyBBIG1h
cHBpbmcgb2YgdmFsaWQgcHJvcGVydHkgbmFtZXMuCi0gICAqIEBpbnRlcm5hbAotICAgKiBAc2Vl
IHtSZWFjdERPTUlET3BlcmF0aW9ucy51cGRhdGVQcm9wZXJ0eUJ5SUR9Ci0gICAqLwotICB1cGRh
dGVQcm9wZXJ0aWVzQnlJRDogZnVuY3Rpb24oaWQsIHByb3BlcnRpZXMpIHsKLSAgICBmb3IgKHZh
ciBuYW1lIGluIHByb3BlcnRpZXMpIHsKLSAgICAgIGlmICghcHJvcGVydGllcy5oYXNPd25Qcm9w
ZXJ0eShuYW1lKSkgewotICAgICAgICBjb250aW51ZTsKLSAgICAgIH0KLSAgICAgIFJlYWN0RE9N
SURPcGVyYXRpb25zLnVwZGF0ZVByb3BlcnRpZXNCeUlEKGlkLCBuYW1lLCBwcm9wZXJ0aWVzW25h
bWVdKTsKLSAgICB9Ci0gIH0sCi0KLSAgLyoqCi0gICAqIFVwZGF0ZXMgYSBET00gbm9kZSB3aXRo
IG5ldyBzdHlsZSB2YWx1ZXMuIElmIGEgdmFsdWUgaXMgc3BlY2lmaWVkIGFzICcnLAotICAgKiB0
aGUgY29ycmVzcG9uZGluZyBzdHlsZSBwcm9wZXJ0eSB3aWxsIGJlIHVuc2V0LgotICAgKgotICAg
KiBAcGFyYW0ge3N0cmluZ30gaWQgSUQgb2YgdGhlIG5vZGUgdG8gdXBkYXRlLgotICAgKiBAcGFy
YW0ge29iamVjdH0gc3R5bGVzIE1hcHBpbmcgZnJvbSBzdHlsZXMgdG8gdmFsdWVzLgotICAgKiBA
aW50ZXJuYWwKLSAgICovCi0gIHVwZGF0ZVN0eWxlc0J5SUQ6IGZ1bmN0aW9uKGlkLCBzdHlsZXMp
IHsKLSAgICB2YXIgbm9kZSA9IFJlYWN0SUQuZ2V0Tm9kZShpZCk7Ci0gICAgQ1NTUHJvcGVydHlP
cGVyYXRpb25zLnNldFZhbHVlRm9yU3R5bGVzKG5vZGUsIHN0eWxlcyk7Ci0gIH0sCi0KLSAgLyoq
Ci0gICAqIFVwZGF0ZXMgYSBET00gbm9kZSdzIGlubmVySFRNTCBzZXQgYnkgYHByb3BzLmRhbmdl
cm91c2x5U2V0SW5uZXJIVE1MYC4KLSAgICoKLSAgICogQHBhcmFtIHtzdHJpbmd9IGlkIElEIG9m
IHRoZSBub2RlIHRvIHVwZGF0ZS4KLSAgICogQHBhcmFtIHtvYmplY3R9IGh0bWwgQW4gSFRNTCBv
YmplY3Qgd2l0aCB0aGUgYF9faHRtbGAgcHJvcGVydHkuCi0gICAqIEBpbnRlcm5hbAotICAgKi8K
LSAgdXBkYXRlSW5uZXJIVE1MQnlJRDogZnVuY3Rpb24oaWQsIGh0bWwpIHsKLSAgICB2YXIgbm9k
ZSA9IFJlYWN0SUQuZ2V0Tm9kZShpZCk7Ci0gICAgLy8gSEFDSzogSUU4LSBub3JtYWxpemUgd2hp
dGVzcGFjZSBpbiBpbm5lckhUTUwsIHJlbW92aW5nIGxlYWRpbmcgc3BhY2VzLgotICAgIC8vIEBz
ZWUgcXVpcmtzbW9kZS5vcmcvYnVncmVwb3J0cy9hcmNoaXZlcy8yMDA0LzExL2lubmVyaHRtbF9h
bmRfdC5odG1sCi0gICAgbm9kZS5pbm5lckhUTUwgPSAoaHRtbCAmJiBodG1sLl9faHRtbCB8fCAn
JykucmVwbGFjZSgvXiAvZywgJyZuYnNwOycpOwotICB9LAotCi0gIC8qKgotICAgKiBVcGRhdGVz
IGEgRE9NIG5vZGUncyB0ZXh0IGNvbnRlbnQgc2V0IGJ5IGBwcm9wcy5jb250ZW50YC4KLSAgICoK
LSAgICogQHBhcmFtIHtzdHJpbmd9IGlkIElEIG9mIHRoZSBub2RlIHRvIHVwZGF0ZS4KLSAgICog
QHBhcmFtIHtzdHJpbmd9IGNvbnRlbnQgVGV4dCBjb250ZW50LgotICAgKiBAaW50ZXJuYWwKLSAg
ICovCi0gIHVwZGF0ZVRleHRDb250ZW50QnlJRDogZnVuY3Rpb24oaWQsIGNvbnRlbnQpIHsKLSAg
ICB2YXIgbm9kZSA9IFJlYWN0SUQuZ2V0Tm9kZShpZCk7Ci0gICAgbm9kZVt0ZXh0Q29udGVudEFj
Y2Vzc29yXSA9IGNvbnRlbnQ7Ci0gIH0sCi0KLSAgLyoqCi0gICAqIFJlcGxhY2VzIGEgRE9NIG5v
ZGUgdGhhdCBleGlzdHMgaW4gdGhlIGRvY3VtZW50IHdpdGggbWFya3VwLgotICAgKgotICAgKiBA
cGFyYW0ge3N0cmluZ30gaWQgSUQgb2YgY2hpbGQgdG8gYmUgcmVwbGFjZWQuCi0gICAqIEBwYXJh
bSB7c3RyaW5nfSBtYXJrdXAgRGFuZ2Vyb3VzIG1hcmt1cCB0byBpbmplY3QgaW4gcGxhY2Ugb2Yg
Y2hpbGQuCi0gICAqIEBpbnRlcm5hbAotICAgKiBAc2VlIHtEYW5nZXIuZGFuZ2Vyb3VzbHlSZXBs
YWNlTm9kZVdpdGhNYXJrdXB9Ci0gICAqLwotICBkYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1h
cmt1cEJ5SUQ6IGZ1bmN0aW9uKGlkLCBtYXJrdXApIHsKLSAgICB2YXIgbm9kZSA9IFJlYWN0SUQu
Z2V0Tm9kZShpZCk7Ci0gICAgRE9NQ2hpbGRyZW5PcGVyYXRpb25zLmRhbmdlcm91c2x5UmVwbGFj
ZU5vZGVXaXRoTWFya3VwKG5vZGUsIG1hcmt1cCk7Ci0gIH0sCi0KLSAgLyoqCi0gICAqIFRPRE86
IFdlIG9ubHkgYWN0dWFsbHkgKm5lZWQqIHRvIHB1cmdlIHRoZSBjYWNoZSB3aGVuIHdlIHJlbW92
ZSBlbGVtZW50cy4KLSAgICogICAgICAgRGV0ZWN0IGlmIGFueSBlbGVtZW50cyB3ZXJlIHJlbW92
ZWQgaW5zdGVhZCBvZiBibGluZGx5IHB1cmdpbmcuCi0gICAqLwotICBtYW5hZ2VDaGlsZHJlbkJ5
UGFyZW50SUQ6IGZ1bmN0aW9uKHBhcmVudElELCBkb21PcGVyYXRpb25zKSB7Ci0gICAgdmFyIHBh
cmVudCA9IFJlYWN0SUQuZ2V0Tm9kZShwYXJlbnRJRCk7Ci0gICAgRE9NQ2hpbGRyZW5PcGVyYXRp
b25zLm1hbmFnZUNoaWxkcmVuKHBhcmVudCwgZG9tT3BlcmF0aW9ucyk7Ci0gIH0KLQotfTsKLQot
bW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTUlET3BlcmF0aW9uczsKLQotfSkoKQotfSx7Ii4vQ1NT
UHJvcGVydHlPcGVyYXRpb25zIjozLCIuL0RPTUNoaWxkcmVuT3BlcmF0aW9ucyI6NiwiLi9ET01Q
cm9wZXJ0eU9wZXJhdGlvbnMiOjgsIi4vUmVhY3RJRCI6MzUsIi4vZ2V0VGV4dENvbnRlbnRBY2Nl
c3NvciI6NzEsIi4vaW52YXJpYW50Ijo3NX1dLDI4OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxl
eHBvcnRzKXsKLS8qKgotICogQ29weXJpZ2h0IDIwMTMgRmFjZWJvb2ssIEluYy4KLSAqCi0gKiBM
aWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vu
c2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ug
d2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5z
ZSBhdAotICoKLSAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAot
ICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1Ig
Q09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNl
ZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNz
aW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICoKLSAqIEBwcm92
aWRlc01vZHVsZSBSZWFjdERPTUlucHV0Ci0gKi8KLQotInVzZSBzdHJpY3QiOwotCi12YXIgRE9N
UHJvcGVydHlPcGVyYXRpb25zID0gcmVxdWlyZSgiLi9ET01Qcm9wZXJ0eU9wZXJhdGlvbnMiKTsK
LXZhciBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCA9IHJlcXVpcmUoIi4vUmVhY3RDb21wb3NpdGVD
b21wb25lbnQiKTsKLXZhciBSZWFjdERPTSA9IHJlcXVpcmUoIi4vUmVhY3RET00iKTsKLQotdmFy
IG1lcmdlID0gcmVxdWlyZSgiLi9tZXJnZSIpOwotCi0vLyBTdG9yZSBhIHJlZmVyZW5jZSB0byB0
aGUgPGlucHV0PiBgUmVhY3ROYXRpdmVDb21wb25lbnRgLgotdmFyIGlucHV0ID0gUmVhY3RET00u
aW5wdXQ7Ci0KLS8qKgotICogSW1wbGVtZW50cyBhbiA8aW5wdXQ+IG5hdGl2ZSBjb21wb25lbnQg
dGhhdCBhbGxvd3Mgc2V0dGluZyB0aGVzZSBvcHRpb25hbAotICogcHJvcHM6IGBjaGVja2VkYCwg
YHZhbHVlYCwgYGRlZmF1bHRDaGVja2VkYCwgYW5kIGBkZWZhdWx0VmFsdWVgLgotICoKLSAqIElm
IGBjaGVja2VkYCBvciBgdmFsdWVgIGFyZSBub3Qgc3VwcGxpZWQgKG9yIG51bGwvdW5kZWZpbmVk
KSwgdXNlciBhY3Rpb25zCi0gKiB0aGF0IGFmZmVjdCB0aGUgY2hlY2tlZCBzdGF0ZSBvciB2YWx1
ZSB3aWxsIHRyaWdnZXIgdXBkYXRlcyB0byB0aGUgZWxlbWVudC4KLSAqCi0gKiBJZiB0aGV5IGFy
ZSBzdXBwbGllZCAoYW5kIG5vdCBudWxsL3VuZGVmaW5lZCksIHRoZSByZW5kZXJlZCBlbGVtZW50
IHdpbGwgbm90Ci0gKiB0cmlnZ2VyIHVwZGF0ZXMgdG8gdGhlIGVsZW1lbnQuIEluc3RlYWQsIHRo
ZSBwcm9wcyBtdXN0IGNoYW5nZSBpbiBvcmRlciBmb3IKLSAqIHRoZSByZW5kZXJlZCBlbGVtZW50
IHRvIGJlIHVwZGF0ZWQuCi0gKgotICogVGhlIHJlbmRlcmVkIGVsZW1lbnQgd2lsbCBiZSBpbml0
aWFsaXplZCBhcyB1bmNoZWNrZWQgKG9yIGBkZWZhdWx0Q2hlY2tlZGApCi0gKiB3aXRoIGFuIGVt
cHR5IHZhbHVlIChvciBgZGVmYXVsdFZhbHVlYCkuCi0gKgotICogQHNlZSBodHRwOi8vd3d3Lncz
Lm9yZy9UUi8yMDEyL1dELWh0bWw1LTIwMTIxMDI1L3RoZS1pbnB1dC1lbGVtZW50Lmh0bWwKLSAq
LwotdmFyIFJlYWN0RE9NSW5wdXQgPSBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudC5jcmVhdGVDbGFz
cyh7Ci0KLSAgZ2V0SW5pdGlhbFN0YXRlOiBmdW5jdGlvbigpIHsKLSAgICByZXR1cm4gewotICAg
ICAgY2hlY2tlZDogdGhpcy5wcm9wcy5kZWZhdWx0Q2hlY2tlZCB8fCBmYWxzZSwKLSAgICAgIHZh
bHVlOiB0aGlzLnByb3BzLmRlZmF1bHRWYWx1ZSB8fCAnJwotICAgIH07Ci0gIH0sCi0KLSAgc2hv
dWxkQ29tcG9uZW50VXBkYXRlOiBmdW5jdGlvbigpIHsKLSAgICAvLyBEZWZlciBhbnkgdXBkYXRl
cyB0byB0aGlzIGNvbXBvbmVudCBkdXJpbmcgdGhlIGBvbkNoYW5nZWAgaGFuZGxlci4KLSAgICBy
ZXR1cm4gIXRoaXMuX2lzQ2hhbmdpbmc7Ci0gIH0sCi0KLSAgZ2V0Q2hlY2tlZDogZnVuY3Rpb24o
KSB7Ci0gICAgcmV0dXJuIHRoaXMucHJvcHMuY2hlY2tlZCAhPSBudWxsID8gdGhpcy5wcm9wcy5j
aGVja2VkIDogdGhpcy5zdGF0ZS5jaGVja2VkOwotICB9LAotCi0gIGdldFZhbHVlOiBmdW5jdGlv
bigpIHsKLSAgICAvLyBDYXN0IGB0aGlzLnByb3BzLnZhbHVlYCB0byBhIHN0cmluZyBzbyBlcXVh
bGl0eSBjaGVja3MgcGFzcy4KLSAgICByZXR1cm4gdGhpcy5wcm9wcy52YWx1ZSAhPSBudWxsID8g
JycgKyB0aGlzLnByb3BzLnZhbHVlIDogdGhpcy5zdGF0ZS52YWx1ZTsKLSAgfSwKLQotICByZW5k
ZXI6IGZ1bmN0aW9uKCkgewotICAgIC8vIENsb25lIGB0aGlzLnByb3BzYCBzbyB3ZSBkb24ndCBt
dXRhdGUgdGhlIGlucHV0LgotICAgIHZhciBwcm9wcyA9IG1lcmdlKHRoaXMucHJvcHMpOwotCi0g
ICAgcHJvcHMuY2hlY2tlZCA9IHRoaXMuZ2V0Q2hlY2tlZCgpOwotICAgIHByb3BzLnZhbHVlID0g
dGhpcy5nZXRWYWx1ZSgpOwotICAgIHByb3BzLm9uQ2hhbmdlID0gdGhpcy5oYW5kbGVDaGFuZ2U7
Ci0KLSAgICByZXR1cm4gaW5wdXQocHJvcHMsIHRoaXMucHJvcHMuY2hpbGRyZW4pOwotICB9LAot
Ci0gIGNvbXBvbmVudERpZFVwZGF0ZTogZnVuY3Rpb24ocHJldlByb3BzLCBwcmV2U3RhdGUsIHJv
b3ROb2RlKSB7Ci0gICAgaWYgKHRoaXMucHJvcHMuY2hlY2tlZCAhPSBudWxsKSB7Ci0gICAgICBE
T01Qcm9wZXJ0eU9wZXJhdGlvbnMuc2V0VmFsdWVGb3JQcm9wZXJ0eSgKLSAgICAgICAgcm9vdE5v
ZGUsCi0gICAgICAgICdjaGVja2VkJywKLSAgICAgICAgdGhpcy5wcm9wcy5jaGVja2VkIHx8IGZh
bHNlCi0gICAgICApOwotICAgIH0KLSAgICBpZiAodGhpcy5wcm9wcy52YWx1ZSAhPSBudWxsKSB7
Ci0gICAgICAvLyBDYXN0IGB0aGlzLnByb3BzLnZhbHVlYCB0byBhIHN0cmluZyBzbyBmYWxzZXkg
dmFsdWVzIHRoYXQgY2FzdCB0bwotICAgICAgLy8gdHJ1dGh5IHN0cmluZ3MgYXJlIG5vdCBpZ25v
cmVkLgotICAgICAgRE9NUHJvcGVydHlPcGVyYXRpb25zLnNldFZhbHVlRm9yUHJvcGVydHkoCi0g
ICAgICAgIHJvb3ROb2RlLAotICAgICAgICAndmFsdWUnLAotICAgICAgICAnJyArIHRoaXMucHJv
cHMudmFsdWUgfHwgJycKLSAgICAgICk7Ci0gICAgfQotICB9LAotCi0gIGhhbmRsZUNoYW5nZTog
ZnVuY3Rpb24oZXZlbnQpIHsKLSAgICB2YXIgcmV0dXJuVmFsdWU7Ci0gICAgaWYgKHRoaXMucHJv
cHMub25DaGFuZ2UpIHsKLSAgICAgIHRoaXMuX2lzQ2hhbmdpbmcgPSB0cnVlOwotICAgICAgcmV0
dXJuVmFsdWUgPSB0aGlzLnByb3BzLm9uQ2hhbmdlKGV2ZW50KTsKLSAgICAgIHRoaXMuX2lzQ2hh
bmdpbmcgPSBmYWxzZTsKLSAgICB9Ci0gICAgdGhpcy5zZXRTdGF0ZSh7Ci0gICAgICBjaGVja2Vk
OiBldmVudC50YXJnZXQuY2hlY2tlZCwKLSAgICAgIHZhbHVlOiBldmVudC50YXJnZXQudmFsdWUK
LSAgICB9KTsKLSAgICByZXR1cm4gcmV0dXJuVmFsdWU7Ci0gIH0KLQotfSk7Ci0KLW1vZHVsZS5l
eHBvcnRzID0gUmVhY3RET01JbnB1dDsKLQotfSx7Ii4vRE9NUHJvcGVydHlPcGVyYXRpb25zIjo4
LCIuL1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50IjoyMywiLi9SZWFjdERPTSI6MjUsIi4vbWVyZ2Ui
OjgxfV0sMjk6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewotLyoqCi0gKiBDb3B5
cmlnaHQgMjAxMyBGYWNlYm9vaywgSW5jLgotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFj
aGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3Qg
dXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICog
WW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogaHR0cDovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVk
IGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICog
ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElT
IiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5E
LCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUg
c3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlv
bnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKgotICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0RE9NT3B0
aW9uCi0gKi8KLQotInVzZSBzdHJpY3QiOwotCi12YXIgUmVhY3RDb21wb3NpdGVDb21wb25lbnQg
PSByZXF1aXJlKCIuL1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50Iik7Ci12YXIgUmVhY3RET00gPSBy
ZXF1aXJlKCIuL1JlYWN0RE9NIik7Ci0KLS8vIFN0b3JlIGEgcmVmZXJlbmNlIHRvIHRoZSA8b3B0
aW9uPiBgUmVhY3ROYXRpdmVDb21wb25lbnRgLgotdmFyIG9wdGlvbiA9IFJlYWN0RE9NLm9wdGlv
bjsKLQotLyoqCi0gKiBJbXBsZW1lbnRzIGFuIDxvcHRpb24+IG5hdGl2ZSBjb21wb25lbnQgdGhh
dCB3YXJucyB3aGVuIGBzZWxlY3RlZGAgaXMgc2V0LgotICovCi12YXIgUmVhY3RET01PcHRpb24g
PSBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudC5jcmVhdGVDbGFzcyh7Ci0KLSAgY29tcG9uZW50V2ls
bE1vdW50OiBmdW5jdGlvbigpIHsKLSAgICAvLyBUT0RPICh5dW5nc3RlcnMpOiBSZW1vdmUgc3Vw
cG9ydCBmb3IgYHNlbGVjdGVkYCBpbiA8b3B0aW9uPi4KLSAgICBpZiAodGhpcy5wcm9wcy5zZWxl
Y3RlZCAhPSBudWxsKSB7Ci0gICAgICBpZiAodHJ1ZSkgewotICAgICAgICBjb25zb2xlLndhcm4o
Ci0gICAgICAgICAgJ1VzZSB0aGUgYGRlZmF1bHRWYWx1ZWAgb3IgYHZhbHVlYCBwcm9wcyBvbiA8
c2VsZWN0PiBpbnN0ZWFkIG9mICcgKwotICAgICAgICAgICdzZXR0aW5nIGBzZWxlY3RlZGAgb24g
PG9wdGlvbj4uJwotICAgICAgICApOwotICAgICAgfQotICAgIH0KLSAgfSwKLQotICByZW5kZXI6
IGZ1bmN0aW9uKCkgewotICAgIHJldHVybiBvcHRpb24odGhpcy5wcm9wcywgdGhpcy5wcm9wcy5j
aGlsZHJlbik7Ci0gIH0KLQotfSk7Ci0KLW1vZHVsZS5leHBvcnRzID0gUmVhY3RET01PcHRpb247
Ci0KLX0seyIuL1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50IjoyMywiLi9SZWFjdERPTSI6MjV9XSwz
MDpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7Ci0vKioKLSAqIENvcHlyaWdodCAy
MDEzIEZhY2Vib29rLCBJbmMuCi0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNl
bnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiBodHRwOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBw
bGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmli
dXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lT
LAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhl
ciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZp
YyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRl
ciB0aGUgTGljZW5zZS4KLSAqCi0gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3RET01TZWxlY3QKLSAq
LwotCi0idXNlIHN0cmljdCI7Ci0KLXZhciBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCA9IHJlcXVp
cmUoIi4vUmVhY3RDb21wb3NpdGVDb21wb25lbnQiKTsKLXZhciBSZWFjdERPTSA9IHJlcXVpcmUo
Ii4vUmVhY3RET00iKTsKLQotdmFyIGludmFyaWFudCA9IHJlcXVpcmUoIi4vaW52YXJpYW50Iik7
Ci12YXIgbWVyZ2UgPSByZXF1aXJlKCIuL21lcmdlIik7Ci0KLS8vIFN0b3JlIGEgcmVmZXJlbmNl
IHRvIHRoZSA8c2VsZWN0PiBgUmVhY3ROYXRpdmVDb21wb25lbnRgLgotdmFyIHNlbGVjdCA9IFJl
YWN0RE9NLnNlbGVjdDsKLQotLyoqCi0gKiBWYWxpZGF0aW9uIGZ1bmN0aW9uIGZvciBgdmFsdWVg
IGFuZCBgZGVmYXVsdFZhbHVlYC4KLSAqIEBwcml2YXRlCi0gKi8KLWZ1bmN0aW9uIHNlbGVjdFZh
bHVlVHlwZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUpIHsKLSAgaWYgKHByb3BzW3By
b3BOYW1lXSA9PSBudWxsKSB7Ci0gICAgcmV0dXJuOwotICB9Ci0gIGlmIChwcm9wcy5tdWx0aXBs
ZSkgewotICAgIGludmFyaWFudCgKLSAgICAgIEFycmF5LmlzQXJyYXkocHJvcHNbcHJvcE5hbWVd
KSwKLSAgICAgICdUaGUgYCVzYCBwcm9wIHN1cHBsaWVkIHRvIDxzZWxlY3Q+IG11c3QgYmUgYW4g
YXJyYXkgaWYgYG11bHRpcGxlYCBpcyAnICsKLSAgICAgICd0cnVlLicsCi0gICAgICBwcm9wTmFt
ZQotICAgICk7Ci0gIH0gZWxzZSB7Ci0gICAgaW52YXJpYW50KAotICAgICAgIUFycmF5LmlzQXJy
YXkocHJvcHNbcHJvcE5hbWVdKSwKLSAgICAgICdUaGUgYCVzYCBwcm9wIHN1cHBsaWVkIHRvIDxz
ZWxlY3Q+IG11c3QgYmUgYSBzY2FsYXIgdmFsdWUgaWYgJyArCi0gICAgICAnYG11bHRpcGxlYCBp
cyBmYWxzZS4nLAotICAgICAgcHJvcE5hbWUKLSAgICApOwotICB9Ci19Ci0KLS8qKgotICogSWYg
YHZhbHVlYCBpcyBzdXBwbGllZCwgdXBkYXRlcyA8b3B0aW9uPiBlbGVtZW50cyBvbiBtb3VudCBh
bmQgdXBkYXRlLgotICogQHByaXZhdGUKLSAqLwotZnVuY3Rpb24gdXBkYXRlT3B0aW9ucygpIHsK
LSAgLypqc2hpbnQgdmFsaWR0aGlzOnRydWUgKi8KLSAgaWYgKHRoaXMucHJvcHMudmFsdWUgPT0g
bnVsbCkgewotICAgIHJldHVybjsKLSAgfQotICB2YXIgb3B0aW9ucyA9IHRoaXMuZ2V0RE9NTm9k
ZSgpLm9wdGlvbnM7Ci0gIHZhciBzZWxlY3RlZFZhbHVlID0gJycgKyB0aGlzLnByb3BzLnZhbHVl
OwotCi0gIGZvciAodmFyIGkgPSAwLCBsID0gb3B0aW9ucy5sZW5ndGg7IGkgPCBsOyBpKyspIHsK
LSAgICB2YXIgc2VsZWN0ZWQgPSB0aGlzLnByb3BzLm11bHRpcGxlID8KLSAgICAgIHNlbGVjdGVk
VmFsdWUuaW5kZXhPZihvcHRpb25zW2ldLnZhbHVlKSA+PSAwIDoKLSAgICAgIHNlbGVjdGVkID0g
b3B0aW9uc1tpXS52YWx1ZSA9PT0gc2VsZWN0ZWRWYWx1ZTsKLQotICAgIGlmIChzZWxlY3RlZCAh
PT0gb3B0aW9uc1tpXS5zZWxlY3RlZCkgewotICAgICAgb3B0aW9uc1tpXS5zZWxlY3RlZCA9IHNl
bGVjdGVkOwotICAgIH0KLSAgfQotfQotCi0vKioKLSAqIEltcGxlbWVudHMgYSA8c2VsZWN0PiBu
YXRpdmUgY29tcG9uZW50IHRoYXQgYWxsb3dzIG9wdGlvbmFsbHkgc2V0dGluZyB0aGUKLSAqIHBy
b3BzIGB2YWx1ZWAgYW5kIGBkZWZhdWx0VmFsdWVgLiBJZiBgbXVsdGlwbGVgIGlzIGZhbHNlLCB0
aGUgcHJvcCBtdXN0IGJlIGEKLSAqIHN0cmluZy4gSWYgYG11bHRpcGxlYCBpcyB0cnVlLCB0aGUg
cHJvcCBtdXN0IGJlIGFuIGFycmF5IG9mIHN0cmluZ3MuCi0gKgotICogSWYgYHZhbHVlYCBpcyBu
b3Qgc3VwcGxpZWQgKG9yIG51bGwvdW5kZWZpbmVkKSwgdXNlciBhY3Rpb25zIHRoYXQgY2hhbmdl
IHRoZQotICogc2VsZWN0ZWQgb3B0aW9uIHdpbGwgdHJpZ2dlciB1cGRhdGVzIHRvIHRoZSByZW5k
ZXJlZCBvcHRpb25zLgotICoKLSAqIElmIGl0IGlzIHN1cHBsaWVkIChhbmQgbm90IG51bGwvdW5k
ZWZpbmVkKSwgdGhlIHJlbmRlcmVkIG9wdGlvbnMgd2lsbCBub3QKLSAqIHVwZGF0ZSBpbiByZXNw
b25zZSB0byB1c2VyIGFjdGlvbnMuIEluc3RlYWQsIHRoZSBgdmFsdWVgIHByb3AgbXVzdCBjaGFu
Z2UgaW4KLSAqIG9yZGVyIGZvciB0aGUgcmVuZGVyZWQgb3B0aW9ucyB0byB1cGRhdGUuCi0gKgot
ICogSWYgYGRlZmF1bHRWYWx1ZWAgaXMgcHJvdmlkZWQsIGFueSBvcHRpb25zIHdpdGggdGhlIHN1
cHBsaWVkIHZhbHVlcyB3aWxsIGJlCi0gKiBzZWxlY3RlZC4KLSAqLwotdmFyIFJlYWN0RE9NU2Vs
ZWN0ID0gUmVhY3RDb21wb3NpdGVDb21wb25lbnQuY3JlYXRlQ2xhc3MoewotCi0gIHByb3BUeXBl
czogewotICAgIGRlZmF1bHRWYWx1ZTogc2VsZWN0VmFsdWVUeXBlLAotICAgIHZhbHVlOiBzZWxl
Y3RWYWx1ZVR5cGUKLSAgfSwKLQotICBnZXRJbml0aWFsU3RhdGU6IGZ1bmN0aW9uKCkgewotICAg
IHJldHVybiB7dmFsdWU6IHRoaXMucHJvcHMuZGVmYXVsdFZhbHVlIHx8ICh0aGlzLnByb3BzLm11
bHRpcGxlID8gW10gOiAnJyl9OwotICB9LAotCi0gIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHM6
IGZ1bmN0aW9uKG5leHRQcm9wcykgewotICAgIGlmICghdGhpcy5wcm9wcy5tdWx0aXBsZSAmJiBu
ZXh0UHJvcHMubXVsdGlwbGUpIHsKLSAgICAgIHRoaXMuc2V0U3RhdGUoe3ZhbHVlOiBbdGhpcy5z
dGF0ZS52YWx1ZV19KTsKLSAgICB9IGVsc2UgaWYgKHRoaXMucHJvcHMubXVsdGlwbGUgJiYgIW5l
eHRQcm9wcy5tdWx0aXBsZSkgewotICAgICAgdGhpcy5zZXRTdGF0ZSh7dmFsdWU6IHRoaXMuc3Rh
dGUudmFsdWVbMF19KTsKLSAgICB9Ci0gIH0sCi0KLSAgc2hvdWxkQ29tcG9uZW50VXBkYXRlOiBm
dW5jdGlvbigpIHsKLSAgICAvLyBEZWZlciBhbnkgdXBkYXRlcyB0byB0aGlzIGNvbXBvbmVudCBk
dXJpbmcgdGhlIGBvbkNoYW5nZWAgaGFuZGxlci4KLSAgICByZXR1cm4gIXRoaXMuX2lzQ2hhbmdp
bmc7Ci0gIH0sCi0KLSAgcmVuZGVyOiBmdW5jdGlvbigpIHsKLSAgICAvLyBDbG9uZSBgdGhpcy5w
cm9wc2Agc28gd2UgZG9uJ3QgbXV0YXRlIHRoZSBpbnB1dC4KLSAgICB2YXIgcHJvcHMgPSBtZXJn
ZSh0aGlzLnByb3BzKTsKLQotICAgIHByb3BzLm9uQ2hhbmdlID0gdGhpcy5oYW5kbGVDaGFuZ2U7
Ci0gICAgcHJvcHMudmFsdWUgPSBudWxsOwotCi0gICAgcmV0dXJuIHNlbGVjdChwcm9wcywgdGhp
cy5wcm9wcy5jaGlsZHJlbik7Ci0gIH0sCi0KLSAgY29tcG9uZW50RGlkTW91bnQ6IHVwZGF0ZU9w
dGlvbnMsCi0KLSAgY29tcG9uZW50RGlkVXBkYXRlOiB1cGRhdGVPcHRpb25zLAotCi0gIGhhbmRs
ZUNoYW5nZTogZnVuY3Rpb24oZXZlbnQpIHsKLSAgICB2YXIgcmV0dXJuVmFsdWU7Ci0gICAgaWYg
KHRoaXMucHJvcHMub25DaGFuZ2UpIHsKLSAgICAgIHRoaXMuX2lzQ2hhbmdpbmcgPSB0cnVlOwot
ICAgICAgcmV0dXJuVmFsdWUgPSB0aGlzLnByb3BzLm9uQ2hhbmdlKGV2ZW50KTsKLSAgICAgIHRo
aXMuX2lzQ2hhbmdpbmcgPSBmYWxzZTsKLSAgICB9Ci0KLSAgICB2YXIgc2VsZWN0ZWRWYWx1ZTsK
LSAgICBpZiAodGhpcy5wcm9wcy5tdWx0aXBsZSkgewotICAgICAgc2VsZWN0ZWRWYWx1ZSA9IFtd
OwotICAgICAgdmFyIG9wdGlvbnMgPSBldmVudC50YXJnZXQub3B0aW9uczsKLSAgICAgIGZvciAo
dmFyIGkgPSAwLCBsID0gb3B0aW9ucy5sZW5ndGg7IGkgPCBsOyBpKyspIHsKLSAgICAgICAgaWYg
KG9wdGlvbnNbaV0uc2VsZWN0ZWQpIHsKLSAgICAgICAgICBzZWxlY3RlZFZhbHVlLnB1c2gob3B0
aW9uc1tpXS52YWx1ZSk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAg
c2VsZWN0ZWRWYWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZTsKLSAgICB9Ci0KLSAgICB0aGlzLnNl
dFN0YXRlKHt2YWx1ZTogc2VsZWN0ZWRWYWx1ZX0pOwotICAgIHJldHVybiByZXR1cm5WYWx1ZTsK
LSAgfQotCi19KTsKLQotbW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTVNlbGVjdDsKLQotfSx7Ii4v
UmVhY3RDb21wb3NpdGVDb21wb25lbnQiOjIzLCIuL1JlYWN0RE9NIjoyNSwiLi9pbnZhcmlhbnQi
Ojc1LCIuL21lcmdlIjo4MX1dLDMxOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsK
LS8qKgotICogQ29weXJpZ2h0IDIwMTMgRmFjZWJvb2ssIEluYy4KLSAqCi0gKiBMaWNlbnNlZCB1
bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAq
IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUg
TGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoK
LSAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVu
bGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywg
c29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVk
IG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9O
UyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGlj
ZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQK
LSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICoKLSAqIEBwcm92aWRlc01vZHVs
ZSBSZWFjdERPTVRleHRhcmVhCi0gKi8KLQotInVzZSBzdHJpY3QiOwotCi12YXIgRE9NUHJvcGVy
dHlPcGVyYXRpb25zID0gcmVxdWlyZSgiLi9ET01Qcm9wZXJ0eU9wZXJhdGlvbnMiKTsKLXZhciBS
ZWFjdENvbXBvc2l0ZUNvbXBvbmVudCA9IHJlcXVpcmUoIi4vUmVhY3RDb21wb3NpdGVDb21wb25l
bnQiKTsKLXZhciBSZWFjdERPTSA9IHJlcXVpcmUoIi4vUmVhY3RET00iKTsKLQotdmFyIGludmFy
aWFudCA9IHJlcXVpcmUoIi4vaW52YXJpYW50Iik7Ci12YXIgbWVyZ2UgPSByZXF1aXJlKCIuL21l
cmdlIik7Ci0KLS8vIFN0b3JlIGEgcmVmZXJlbmNlIHRvIHRoZSA8dGV4dGFyZWE+IGBSZWFjdE5h
dGl2ZUNvbXBvbmVudGAuCi12YXIgdGV4dGFyZWEgPSBSZWFjdERPTS50ZXh0YXJlYTsKLQotLy8g
Rm9yIHF1aWNrbHkgbWF0Y2hpbmcgY2hpbGRyZW4gdHlwZSwgdG8gdGVzdCBpZiBjYW4gYmUgdHJl
YXRlZCBhcyBjb250ZW50LgotdmFyIENPTlRFTlRfVFlQRVMgPSB7J3N0cmluZyc6IHRydWUsICdu
dW1iZXInOiB0cnVlfTsKLQotLyoqCi0gKiBJbXBsZW1lbnRzIGEgPHRleHRhcmVhPiBuYXRpdmUg
Y29tcG9uZW50IHRoYXQgYWxsb3dzIHNldHRpbmcgYHZhbHVlYCwgYW5kCi0gKiBgZGVmYXVsdFZh
bHVlYC4gVGhpcyBkaWZmZXJzIGZyb20gdGhlIHRyYWRpdGlvbmFsIERPTSBBUEkgYmVjYXVzZSB2
YWx1ZSBpcwotICogdXN1YWxseSBzZXQgYXMgUENEQVRBIGNoaWxkcmVuLgotICoKLSAqIElmIGB2
YWx1ZWAgaXMgbm90IHN1cHBsaWVkIChvciBudWxsL3VuZGVmaW5lZCksIHVzZXIgYWN0aW9ucyB0
aGF0IGFmZmVjdCB0aGUKLSAqIHZhbHVlIHdpbGwgdHJpZ2dlciB1cGRhdGVzIHRvIHRoZSBlbGVt
ZW50LgotICoKLSAqIElmIGB2YWx1ZWAgaXMgc3VwcGxpZWQgKGFuZCBub3QgbnVsbC91bmRlZmlu
ZWQpLCB0aGUgcmVuZGVyZWQgZWxlbWVudCB3aWxsCi0gKiBub3QgdHJpZ2dlciB1cGRhdGVzIHRv
IHRoZSBlbGVtZW50LiBJbnN0ZWFkLCB0aGUgYHZhbHVlYCBwcm9wIG11c3QgY2hhbmdlIGluCi0g
KiBvcmRlciBmb3IgdGhlIHJlbmRlcmVkIGVsZW1lbnQgdG8gYmUgdXBkYXRlZC4KLSAqCi0gKiBU
aGUgcmVuZGVyZWQgZWxlbWVudCB3aWxsIGJlIGluaXRpYWxpemVkIHdpdGggYW4gZW1wdHkgdmFs
dWUsIHRoZSBwcm9wCi0gKiBgZGVmYXVsdFZhbHVlYCBpZiBzcGVjaWZpZWQsIG9yIHRoZSBjaGls
ZHJlbiBjb250ZW50IChkZXByZWNhdGVkKS4KLSAqLwotdmFyIFJlYWN0RE9NVGV4dGFyZWEgPSBS
ZWFjdENvbXBvc2l0ZUNvbXBvbmVudC5jcmVhdGVDbGFzcyh7Ci0KLSAgZ2V0SW5pdGlhbFN0YXRl
OiBmdW5jdGlvbigpIHsKLSAgICB2YXIgZGVmYXVsdFZhbHVlID0gdGhpcy5wcm9wcy5kZWZhdWx0
VmFsdWU7Ci0gICAgLy8gVE9ETyAoeXVuZ3N0ZXJzKTogUmVtb3ZlIHN1cHBvcnQgZm9yIGNoaWxk
cmVuIGNvbnRlbnQgaW4gPHRleHRhcmVhPi4KLSAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLnByb3Bz
LmNoaWxkcmVuOwotICAgIGlmIChjaGlsZHJlbiAhPSBudWxsKSB7Ci0gICAgICBpZiAodHJ1ZSkg
ewotICAgICAgICBjb25zb2xlLndhcm4oCi0gICAgICAgICAgJ1VzZSB0aGUgYGRlZmF1bHRWYWx1
ZWAgb3IgYHZhbHVlYCBwcm9wcyBpbnN0ZWFkIG9mIHNldHRpbmcgJyArCi0gICAgICAgICAgJ2No
aWxkcmVuIG9uIDx0ZXh0YXJlYT4uJwotICAgICAgICApOwotICAgICAgfQotICAgICAgaW52YXJp
YW50KAotICAgICAgICBkZWZhdWx0VmFsdWUgPT0gbnVsbCwKLSAgICAgICAgJ0lmIHlvdSBzdXBw
bHkgYGRlZmF1bHRWYWx1ZWAgb24gYSA8dGV4dGFyZWE+LCBkbyBub3QgcGFzcyBjaGlsZHJlbi4n
Ci0gICAgICApOwotICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7Ci0gICAgICAg
IGludmFyaWFudCgKLSAgICAgICAgICBjaGlsZHJlbi5sZW5ndGggPD0gMSwKLSAgICAgICAgICAn
PHRleHRhcmVhPiBjYW4gb25seSBoYXZlIGF0IG1vc3Qgb25lIGNoaWxkLicKLSAgICAgICAgKTsK
LSAgICAgICAgY2hpbGRyZW4gPSBjaGlsZHJlblswXTsKLSAgICAgIH0KLSAgICAgIGludmFyaWFu
dCgKLSAgICAgICAgQ09OVEVOVF9UWVBFU1t0eXBlb2YgY2hpbGRyZW5dLAotICAgICAgICAnSWYg
eW91IHNwZWNpZnkgY2hpbGRyZW4gdG8gPHRleHRhcmVhPiwgaXQgbXVzdCBiZSBhIHNpbmdsZSBz
dHJpbmcgJyArCi0gICAgICAgICdvciBudW1iZXIuLCBub3QgYW4gYXJyYXkgb3Igb2JqZWN0LicK
LSAgICAgICk7Ci0gICAgICBkZWZhdWx0VmFsdWUgPSAnJyArIGNoaWxkcmVuOwotICAgIH0KLSAg
ICBkZWZhdWx0VmFsdWUgPSBkZWZhdWx0VmFsdWUgfHwgJyc7Ci0gICAgcmV0dXJuIHsKLSAgICAg
IC8vIFdlIHNhdmUgdGhlIGluaXRpYWwgdmFsdWUgc28gdGhhdCBgUmVhY3ROYXRpdmVDb21wb25l
bnRgIGRvZXNuJ3QgdXBkYXRlCi0gICAgICAvLyBgdGV4dENvbnRlbnRgICh1bm5lY2Vzc2FyeSBz
aW5jZSB3ZSB1cGRhdGUgdmFsdWUpLgotICAgICAgaW5pdGlhbFZhbHVlOiB0aGlzLnByb3BzLnZh
bHVlICE9IG51bGwgPyB0aGlzLnByb3BzLnZhbHVlIDogZGVmYXVsdFZhbHVlLAotICAgICAgdmFs
dWU6IGRlZmF1bHRWYWx1ZQotICAgIH07Ci0gIH0sCi0KLSAgc2hvdWxkQ29tcG9uZW50VXBkYXRl
OiBmdW5jdGlvbigpIHsKLSAgICAvLyBEZWZlciBhbnkgdXBkYXRlcyB0byB0aGlzIGNvbXBvbmVu
dCBkdXJpbmcgdGhlIGBvbkNoYW5nZWAgaGFuZGxlci4KLSAgICByZXR1cm4gIXRoaXMuX2lzQ2hh
bmdpbmc7Ci0gIH0sCi0KLSAgZ2V0VmFsdWU6IGZ1bmN0aW9uKCkgewotICAgIHJldHVybiB0aGlz
LnByb3BzLnZhbHVlICE9IG51bGwgPyB0aGlzLnByb3BzLnZhbHVlIDogdGhpcy5zdGF0ZS52YWx1
ZTsKLSAgfSwKLQotICByZW5kZXI6IGZ1bmN0aW9uKCkgewotICAgIC8vIENsb25lIGB0aGlzLnBy
b3BzYCBzbyB3ZSBkb24ndCBtdXRhdGUgdGhlIGlucHV0LgotICAgIHZhciBwcm9wcyA9IG1lcmdl
KHRoaXMucHJvcHMpOwotCi0gICAgaW52YXJpYW50KAotICAgICAgcHJvcHMuZGFuZ2Vyb3VzbHlT
ZXRJbm5lckhUTUwgPT0gbnVsbCwKLSAgICAgICdgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxgIGRv
ZXMgbm90IG1ha2Ugc2Vuc2Ugb24gPHRleHRhcmVhPi4nCi0gICAgKTsKLQotICAgIHByb3BzLnZh
bHVlID0gdGhpcy5nZXRWYWx1ZSgpOwotICAgIHByb3BzLm9uQ2hhbmdlID0gdGhpcy5oYW5kbGVD
aGFuZ2U7Ci0KLSAgICAvLyBBbHdheXMgc2V0IGNoaWxkcmVuIHRvIHRoZSBzYW1lIHRoaW5nLiBJ
biBJRTksIHRoZSBzZWxlY3Rpb24gcmFuZ2Ugd2lsbAotICAgIC8vIGdldCByZXNldCBpZiBgdGV4
dENvbnRlbnRgIGlzIG11dGF0ZWQuCi0gICAgcmV0dXJuIHRleHRhcmVhKHByb3BzLCB0aGlzLnN0
YXRlLmluaXRpYWxWYWx1ZSk7Ci0gIH0sCi0KLSAgY29tcG9uZW50RGlkVXBkYXRlOiBmdW5jdGlv
bihwcmV2UHJvcHMsIHByZXZTdGF0ZSwgcm9vdE5vZGUpIHsKLSAgICBpZiAodGhpcy5wcm9wcy52
YWx1ZSAhPSBudWxsKSB7Ci0gICAgICBET01Qcm9wZXJ0eU9wZXJhdGlvbnMuc2V0VmFsdWVGb3JQ
cm9wZXJ0eSgKLSAgICAgICAgcm9vdE5vZGUsCi0gICAgICAgICd2YWx1ZScsCi0gICAgICAgIHRo
aXMucHJvcHMudmFsdWUgfHwgJycKLSAgICAgICk7Ci0gICAgfQotICB9LAotCi0gIGhhbmRsZUNo
YW5nZTogZnVuY3Rpb24oZXZlbnQpIHsKLSAgICB2YXIgcmV0dXJuVmFsdWU7Ci0gICAgaWYgKHRo
aXMucHJvcHMub25DaGFuZ2UpIHsKLSAgICAgIHRoaXMuX2lzQ2hhbmdpbmcgPSB0cnVlOwotICAg
ICAgcmV0dXJuVmFsdWUgPSB0aGlzLnByb3BzLm9uQ2hhbmdlKGV2ZW50KTsKLSAgICAgIHRoaXMu
X2lzQ2hhbmdpbmcgPSBmYWxzZTsKLSAgICB9Ci0gICAgdGhpcy5zZXRTdGF0ZSh7dmFsdWU6IGV2
ZW50LnRhcmdldC52YWx1ZX0pOwotICAgIHJldHVybiByZXR1cm5WYWx1ZTsKLSAgfQotCi19KTsK
LQotbW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTVRleHRhcmVhOwotCi19LHsiLi9ET01Qcm9wZXJ0
eU9wZXJhdGlvbnMiOjgsIi4vUmVhY3RDb21wb3NpdGVDb21wb25lbnQiOjIzLCIuL1JlYWN0RE9N
IjoyNSwiLi9pbnZhcmlhbnQiOjc1LCIuL21lcmdlIjo4MX1dLDMyOltmdW5jdGlvbihyZXF1aXJl
LG1vZHVsZSxleHBvcnRzKXsKLS8qKgotICogQ29weXJpZ2h0IDIwMTMgRmFjZWJvb2ssIEluYy4K
LSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0
aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAotICoKLSAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3Jl
ZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNl
bnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJB
TlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGll
ZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmlu
ZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICoK
LSAqIEBwcm92aWRlc01vZHVsZSBSZWFjdERlZmF1bHRJbmplY3Rpb24KLSAqLwotCi0idXNlIHN0
cmljdCI7Ci0KLXZhciBSZWFjdERPTSA9IHJlcXVpcmUoIi4vUmVhY3RET00iKTsKLXZhciBSZWFj
dERPTUZvcm0gPSByZXF1aXJlKCIuL1JlYWN0RE9NRm9ybSIpOwotdmFyIFJlYWN0RE9NSW5wdXQg
PSByZXF1aXJlKCIuL1JlYWN0RE9NSW5wdXQiKTsKLXZhciBSZWFjdERPTU9wdGlvbiA9IHJlcXVp
cmUoIi4vUmVhY3RET01PcHRpb24iKTsKLXZhciBSZWFjdERPTVNlbGVjdCA9IHJlcXVpcmUoIi4v
UmVhY3RET01TZWxlY3QiKTsKLXZhciBSZWFjdERPTVRleHRhcmVhID0gcmVxdWlyZSgiLi9SZWFj
dERPTVRleHRhcmVhIik7Ci0KLXZhciBEZWZhdWx0RE9NUHJvcGVydHlDb25maWcgPSByZXF1aXJl
KCIuL0RlZmF1bHRET01Qcm9wZXJ0eUNvbmZpZyIpOwotdmFyIERPTVByb3BlcnR5ID0gcmVxdWly
ZSgiLi9ET01Qcm9wZXJ0eSIpOwotCi12YXIgRGVmYXVsdEV2ZW50UGx1Z2luT3JkZXIgPSByZXF1
aXJlKCIuL0RlZmF1bHRFdmVudFBsdWdpbk9yZGVyIik7Ci12YXIgRW50ZXJMZWF2ZUV2ZW50UGx1
Z2luID0gcmVxdWlyZSgiLi9FbnRlckxlYXZlRXZlbnRQbHVnaW4iKTsKLXZhciBDaGFuZ2VFdmVu
dFBsdWdpbiA9IHJlcXVpcmUoIi4vQ2hhbmdlRXZlbnRQbHVnaW4iKTsKLXZhciBFdmVudFBsdWdp
bkh1YiA9IHJlcXVpcmUoIi4vRXZlbnRQbHVnaW5IdWIiKTsKLXZhciBSZWFjdEluc3RhbmNlSGFu
ZGxlcyA9IHJlcXVpcmUoIi4vUmVhY3RJbnN0YW5jZUhhbmRsZXMiKTsKLXZhciBTaW1wbGVFdmVu
dFBsdWdpbiA9IHJlcXVpcmUoIi4vU2ltcGxlRXZlbnRQbHVnaW4iKTsKLQotZnVuY3Rpb24gaW5q
ZWN0KCkgewotICAvKioKLSAgICogSW5qZWN0IG1vZHVsZSBmb3IgcmVzb2x2aW5nIERPTSBoaWVy
YXJjaHkgYW5kIHBsdWdpbiBvcmRlcmluZy4KLSAgICovCi0gIEV2ZW50UGx1Z2luSHViLmluamVj
dGlvbi5pbmplY3RFdmVudFBsdWdpbk9yZGVyKERlZmF1bHRFdmVudFBsdWdpbk9yZGVyKTsKLSAg
RXZlbnRQbHVnaW5IdWIuaW5qZWN0aW9uLmluamVjdEluc3RhbmNlSGFuZGxlKFJlYWN0SW5zdGFu
Y2VIYW5kbGVzKTsKLQotICAvKioKLSAgICogU29tZSBpbXBvcnRhbnQgZXZlbnQgcGx1Z2lucyBp
bmNsdWRlZCBieSBkZWZhdWx0ICh3aXRob3V0IGhhdmluZyB0byByZXF1aXJlCi0gICAqIHRoZW0p
LgotICAgKi8KLSAgRXZlbnRQbHVnaW5IdWIuaW5qZWN0aW9uLmluamVjdEV2ZW50UGx1Z2luc0J5
TmFtZSh7Ci0gICAgJ1NpbXBsZUV2ZW50UGx1Z2luJzogU2ltcGxlRXZlbnRQbHVnaW4sCi0gICAg
J0VudGVyTGVhdmVFdmVudFBsdWdpbic6IEVudGVyTGVhdmVFdmVudFBsdWdpbiwKLSAgICAnQ2hh
bmdlRXZlbnRQbHVnaW4nOiBDaGFuZ2VFdmVudFBsdWdpbgotICB9KTsKLQotICBSZWFjdERPTS5p
bmplY3Rpb24uaW5qZWN0Q29tcG9uZW50Q2xhc3Nlcyh7Ci0gICAgZm9ybTogUmVhY3RET01Gb3Jt
LAotICAgIGlucHV0OiBSZWFjdERPTUlucHV0LAotICAgIG9wdGlvbjogUmVhY3RET01PcHRpb24s
Ci0gICAgc2VsZWN0OiBSZWFjdERPTVNlbGVjdCwKLSAgICB0ZXh0YXJlYTogUmVhY3RET01UZXh0
YXJlYQotICB9KTsKLQotICBET01Qcm9wZXJ0eS5pbmplY3Rpb24uaW5qZWN0RE9NUHJvcGVydHlD
b25maWcoRGVmYXVsdERPTVByb3BlcnR5Q29uZmlnKTsKLX0KLQotbW9kdWxlLmV4cG9ydHMgPSB7
Ci0gIGluamVjdDogaW5qZWN0Ci19OwotCi19LHsiLi9DaGFuZ2VFdmVudFBsdWdpbiI6NSwiLi9E
T01Qcm9wZXJ0eSI6NywiLi9EZWZhdWx0RE9NUHJvcGVydHlDb25maWciOjEwLCIuL0RlZmF1bHRF
dmVudFBsdWdpbk9yZGVyIjoxMSwiLi9FbnRlckxlYXZlRXZlbnRQbHVnaW4iOjEyLCIuL0V2ZW50
UGx1Z2luSHViIjoxNSwiLi9SZWFjdERPTSI6MjUsIi4vUmVhY3RET01Gb3JtIjoyNiwiLi9SZWFj
dERPTUlucHV0IjoyOCwiLi9SZWFjdERPTU9wdGlvbiI6MjksIi4vUmVhY3RET01TZWxlY3QiOjMw
LCIuL1JlYWN0RE9NVGV4dGFyZWEiOjMxLCIuL1JlYWN0SW5zdGFuY2VIYW5kbGVzIjozNywiLi9T
aW1wbGVFdmVudFBsdWdpbiI6NDl9XSwzMzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0
cyl7Ci0oZnVuY3Rpb24oKXsvKioKLSAqIENvcHlyaWdodCAyMDEzIEZhY2Vib29rLCBJbmMuCi0g
KgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhl
ICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21w
bGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhl
IExpY2Vuc2UgYXQKLSAqCi0gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVk
IHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5z
ZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5U
SUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQu
Ci0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcg
cGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqCi0g
KiBAcHJvdmlkZXNNb2R1bGUgUmVhY3RFdmVudEVtaXR0ZXIKLSAqIEB0eXBlY2hlY2tzIHN0YXRp
Yy1vbmx5Ci0gKi8KLQotInVzZSBzdHJpY3QiOwotCi12YXIgRXZlbnRDb25zdGFudHMgPSByZXF1
aXJlKCIuL0V2ZW50Q29uc3RhbnRzIik7Ci12YXIgRXZlbnRMaXN0ZW5lciA9IHJlcXVpcmUoIi4v
RXZlbnRMaXN0ZW5lciIpOwotdmFyIEV2ZW50UGx1Z2luSHViID0gcmVxdWlyZSgiLi9FdmVudFBs
dWdpbkh1YiIpOwotdmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gcmVxdWlyZSgiLi9FeGVjdXRp
b25FbnZpcm9ubWVudCIpOwotdmFyIFJlYWN0VXBkYXRlcyA9IHJlcXVpcmUoIi4vUmVhY3RVcGRh
dGVzIik7Ci12YXIgVmlld3BvcnRNZXRyaWNzID0gcmVxdWlyZSgiLi9WaWV3cG9ydE1ldHJpY3Mi
KTsKLQotdmFyIGludmFyaWFudCA9IHJlcXVpcmUoIi4vaW52YXJpYW50Iik7Ci12YXIgaXNFdmVu
dFN1cHBvcnRlZCA9IHJlcXVpcmUoIi4vaXNFdmVudFN1cHBvcnRlZCIpOwotCi0vKioKLSAqIFN1
bW1hcnkgb2YgYFJlYWN0RXZlbnRFbWl0dGVyYCBldmVudCBoYW5kbGluZzoKLSAqCi0gKiAgLSBU
b3AtbGV2ZWwgZGVsZWdhdGlvbiBpcyB1c2VkIHRvIHRyYXAgbmF0aXZlIGJyb3dzZXIgZXZlbnRz
LiBXZSBub3JtYWxpemUKLSAqICAgIGFuZCBkZS1kdXBsaWNhdGUgZXZlbnRzIHRvIGFjY291bnQg
Zm9yIGJyb3dzZXIgcXVpcmtzLgotICoKLSAqICAtIEZvcndhcmQgdGhlc2UgbmF0aXZlIGV2ZW50
cyAod2l0aCB0aGUgYXNzb2NpYXRlZCB0b3AtbGV2ZWwgdHlwZSB1c2VkIHRvCi0gKiAgICB0cmFw
IGl0KSB0byBgRXZlbnRQbHVnaW5IdWJgLCB3aGljaCBpbiB0dXJuIHdpbGwgYXNrIHBsdWdpbnMg
aWYgdGhleSB3YW50Ci0gKiAgICB0byBleHRyYWN0IGFueSBzeW50aGV0aWMgZXZlbnRzLgotICoK
LSAqICAtIFRoZSBgRXZlbnRQbHVnaW5IdWJgIHdpbGwgdGhlbiBwcm9jZXNzIGVhY2ggZXZlbnQg
YnkgYW5ub3RhdGluZyB0aGVtIHdpdGgKLSAqICAgICJkaXNwYXRjaGVzIiwgYSBzZXF1ZW5jZSBv
ZiBsaXN0ZW5lcnMgYW5kIElEcyB0aGF0IGNhcmUgYWJvdXQgdGhhdCBldmVudC4KLSAqCi0gKiAg
LSBUaGUgYEV2ZW50UGx1Z2luSHViYCB0aGVuIGRpc3BhdGNoZXMgdGhlIGV2ZW50cy4KLSAqCi0g
KiBPdmVydmlldyBvZiBSZWFjdCBhbmQgdGhlIGV2ZW50IHN5c3RlbToKLSAqCi0gKiAgICAgICAg
ICAgICAgICAgICAuCi0gKiArLS0tLS0tLS0tLS0tKyAgICAuCi0gKiB8ICAgIERPTSAgICAgfCAg
ICAuCi0gKiArLS0tLS0tLS0tLS0tKyAgICAuICAgICAgICAgICAgICAgICAgICAgICAgICstLS0t
LS0tLS0tLSsKLSAqICAgICAgICsgICAgICAgICAgIC4gICAgICAgICAgICAgICArLS0tLS0tLS0r
fFNpbXBsZUV2ZW50fAotICogICAgICAgfCAgICAgICAgICAgLiAgICAgICAgICAgICAgIHwgICAg
ICAgICB8UGx1Z2luICAgICB8Ci0gKiArLS0tLS18LS0tLS0tKyAgICAuICAgICAgICAgICAgICAg
diAgICAgICAgICstLS0tLS0tLS0tLSsKLSAqIHwgICAgIHwgICAgICB8ICAgIC4gICAgKy0tLS0t
LS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLSsKLSAqIHwgICAgICst
LS0tLS0tLS0tLS4tLS0+fEV2ZW50UGx1Z2luSHVifCAgICAgICAgICAgICAgICAgICAgfCAgICBF
dmVudCAgIHwKLSAqIHwgICAgICAgICAgICB8ICAgIC4gICAgfCAgICAgICAgICAgICAgfCAgICAg
Ky0tLS0tLS0tLS0tKyAgfCBQcm9wYWdhdG9yc3wKLSAqIHwgUmVhY3RFdmVudCB8ICAgIC4gICAg
fCAgICAgICAgICAgICAgfCAgICAgfFRhcEV2ZW50ICAgfCAgfC0tLS0tLS0tLS0tLXwKLSAqIHwg
IEVtaXR0ZXIgICB8ICAgIC4gICAgfCAgICAgICAgICAgICAgfDwtLS0rfFBsdWdpbiAgICAgfCAg
fG90aGVyIHBsdWdpbnwKLSAqIHwgICAgICAgICAgICB8ICAgIC4gICAgfCAgICAgICAgICAgICAg
fCAgICAgKy0tLS0tLS0tLS0tKyAgfCAgdXRpbGl0aWVzIHwKLSAqIHwgICAgICstLS0tLS0tLS0t
LS4tLS0tLS0tLS0rICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLSsK
LSAqIHwgICAgIHwgICAgICB8ICAgIC4gICAgKy0tLS18LS0tLS0tLS0tKwotICogKy0tLS0tfC0t
LS0tLSsgICAgLiAgICAgICAgIHwgICAgICBeICAgICAgICArLS0tLS0tLS0tLS0rCi0gKiAgICAg
ICB8ICAgICAgICAgICAuICAgICAgICAgfCAgICAgIHwgICAgICAgIHxFbnRlci9MZWF2ZXwKLSAq
ICAgICAgICsgICAgICAgICAgIC4gICAgICAgICB8ICAgICAgKy0tLS0tLS0rfFBsdWdpbiAgICAg
fAotICogKy0tLS0tLS0tLS0tLS0rICAgLiAgICAgICAgIHYgICAgICAgICAgICAgICArLS0tLS0t
LS0tLS0rCi0gKiB8IGFwcGxpY2F0aW9uIHwgICAuICAgICstLS0tLS0tLS0tKwotICogfC0tLS0t
LS0tLS0tLS18ICAgLiAgICB8IGNhbGxiYWNrIHwKLSAqIHwgICAgICAgICAgICAgfCAgIC4gICAg
fCByZWdpc3RyeSB8Ci0gKiB8ICAgICAgICAgICAgIHwgICAuICAgICstLS0tLS0tLS0tKwotICog
Ky0tLS0tLS0tLS0tLS0rICAgLgotICogICAgICAgICAgICAgICAgICAgLgotICogICAgUmVhY3Qg
Q29yZSAgICAgLiAgR2VuZXJhbCBQdXJwb3NlIEV2ZW50IFBsdWdpbiBTeXN0ZW0KLSAqLwotCi0v
KioKLSAqIFdoZXRoZXIgb3Igbm90IGBlbnN1cmVMaXN0ZW5pbmdgIGhhcyBiZWVuIGludm9rZWQu
Ci0gKiBAdHlwZSB7Ym9vbGVhbn0KLSAqIEBwcml2YXRlCi0gKi8KLXZhciBfaXNMaXN0ZW5pbmcg
PSBmYWxzZTsKLQotLyoqCi0gKiBUcmFwcyB0b3AtbGV2ZWwgZXZlbnRzIGJ5IHVzaW5nIGV2ZW50
IGJ1YmJsaW5nLgotICoKLSAqIEBwYXJhbSB7c3RyaW5nfSB0b3BMZXZlbFR5cGUgUmVjb3JkIGZy
b20gYEV2ZW50Q29uc3RhbnRzYC4KLSAqIEBwYXJhbSB7c3RyaW5nfSBoYW5kbGVyQmFzZU5hbWUg
RXZlbnQgbmFtZSAoZS5nLiAiY2xpY2siKS4KLSAqIEBwYXJhbSB7RE9NRXZlbnRUYXJnZXR9IGVs
ZW1lbnQgRWxlbWVudCBvbiB3aGljaCB0byBhdHRhY2ggbGlzdGVuZXIuCi0gKiBAaW50ZXJuYWwK
LSAqLwotZnVuY3Rpb24gdHJhcEJ1YmJsZWRFdmVudCh0b3BMZXZlbFR5cGUsIGhhbmRsZXJCYXNl
TmFtZSwgZWxlbWVudCkgewotICBFdmVudExpc3RlbmVyLmxpc3RlbigKLSAgICBlbGVtZW50LAot
ICAgIGhhbmRsZXJCYXNlTmFtZSwKLSAgICBSZWFjdEV2ZW50RW1pdHRlci5Ub3BMZXZlbENhbGxi
YWNrQ3JlYXRvci5jcmVhdGVUb3BMZXZlbENhbGxiYWNrKAotICAgICAgdG9wTGV2ZWxUeXBlCi0g
ICAgKQotICApOwotfQotCi0vKioKLSAqIFRyYXBzIGEgdG9wLWxldmVsIGV2ZW50IGJ5IHVzaW5n
IGV2ZW50IGNhcHR1cmluZy4KLSAqCi0gKiBAcGFyYW0ge3N0cmluZ30gdG9wTGV2ZWxUeXBlIFJl
Y29yZCBmcm9tIGBFdmVudENvbnN0YW50c2AuCi0gKiBAcGFyYW0ge3N0cmluZ30gaGFuZGxlckJh
c2VOYW1lIEV2ZW50IG5hbWUgKGUuZy4gImNsaWNrIikuCi0gKiBAcGFyYW0ge0RPTUV2ZW50VGFy
Z2V0fSBlbGVtZW50IEVsZW1lbnQgb24gd2hpY2ggdG8gYXR0YWNoIGxpc3RlbmVyLgotICogQGlu
dGVybmFsCi0gKi8KLWZ1bmN0aW9uIHRyYXBDYXB0dXJlZEV2ZW50KHRvcExldmVsVHlwZSwgaGFu
ZGxlckJhc2VOYW1lLCBlbGVtZW50KSB7Ci0gIEV2ZW50TGlzdGVuZXIuY2FwdHVyZSgKLSAgICBl
bGVtZW50LAotICAgIGhhbmRsZXJCYXNlTmFtZSwKLSAgICBSZWFjdEV2ZW50RW1pdHRlci5Ub3BM
ZXZlbENhbGxiYWNrQ3JlYXRvci5jcmVhdGVUb3BMZXZlbENhbGxiYWNrKAotICAgICAgdG9wTGV2
ZWxUeXBlCi0gICAgKQotICApOwotfQotCi0vKioKLSAqIExpc3RlbnMgdG8gd2luZG93IHNjcm9s
bCBhbmQgcmVzaXplIGV2ZW50cy4gV2UgY2FjaGUgc2Nyb2xsIHZhbHVlcyBzbyB0aGF0Ci0gKiBh
cHBsaWNhdGlvbiBjb2RlIGNhbiBhY2Nlc3MgdGhlbSB3aXRob3V0IHRyaWdnZXJpbmcgcmVmbG93
cy4KLSAqCi0gKiBOT1RFOiBTY3JvbGwgZXZlbnRzIGRvIG5vdCBidWJibGUuCi0gKgotICogQHBy
aXZhdGUKLSAqIEBzZWUgaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9kb20vZXZlbnRzL3Njcm9s
bC5odG1sCi0gKi8KLWZ1bmN0aW9uIHJlZ2lzdGVyU2Nyb2xsVmFsdWVNb25pdG9yaW5nKCkgewot
ICB2YXIgcmVmcmVzaCA9IFZpZXdwb3J0TWV0cmljcy5yZWZyZXNoU2Nyb2xsVmFsdWVzOwotICBF
dmVudExpc3RlbmVyLmxpc3Rlbih3aW5kb3csICdzY3JvbGwnLCByZWZyZXNoKTsKLSAgRXZlbnRM
aXN0ZW5lci5saXN0ZW4od2luZG93LCAncmVzaXplJywgcmVmcmVzaCk7Ci19Ci0KLS8qKgotICog
V2UgbGlzdGVuIGZvciBidWJibGVkIHRvdWNoIGV2ZW50cyBvbiB0aGUgZG9jdW1lbnQgb2JqZWN0
LgotICoKLSAqIEZpcmVmb3ggdjguMDEgKGFuZCBwb3NzaWJseSBvdGhlcnMpIGV4aGliaXRlZCBz
dHJhbmdlIGJlaGF2aW9yIHdoZW4gbW91bnRpbmcKLSAqIGBvbm1vdXNlbW92ZWAgZXZlbnRzIGF0
IHNvbWUgbm9kZSB0aGF0IHdhcyBub3QgdGhlIGRvY3VtZW50IGVsZW1lbnQuIFRoZQotICogc3lt
cHRvbXMgd2VyZSB0aGF0IGlmIHlvdXIgbW91c2UgaXMgbm90IG1vdmluZyBvdmVyIHNvbWV0aGlu
ZyBjb250YWluZWQKLSAqIHdpdGhpbiB0aGF0IG1vdW50IHBvaW50IChmb3IgZXhhbXBsZSBvbiB0
aGUgYmFja2dyb3VuZCkgdGhlIHRvcC1sZXZlbAotICogbGlzdGVuZXJzIGZvciBgb25tb3VzZW1v
dmVgIHdvbid0IGJlIGNhbGxlZC4gSG93ZXZlciwgaWYgeW91IHJlZ2lzdGVyIHRoZQotICogYG1v
dXNlbW92ZWAgb24gdGhlIGRvY3VtZW50IG9iamVjdCwgdGhlbiBpdCB3aWxsIG9mIGNvdXJzZSBj
YXRjaCBhbGwKLSAqIGBtb3VzZW1vdmVgcy4gVGhpcyBhbG9uZyB3aXRoIGlPUyBxdWlya3MsIGp1
c3RpZmllcyByZXN0cmljdGluZyB0b3AtbGV2ZWwKLSAqIGxpc3RlbmVycyB0byB0aGUgZG9jdW1l
bnQgb2JqZWN0IG9ubHksIGF0IGxlYXN0IGZvciB0aGVzZSBtb3ZlbWVudCB0eXBlcyBvZgotICog
ZXZlbnRzIGFuZCBwb3NzaWJseSBhbGwgZXZlbnRzLgotICoKLSAqIEBzZWUgaHR0cDovL3d3dy5x
dWlya3Ntb2RlLm9yZy9ibG9nL2FyY2hpdmVzLzIwMTAvMDkvY2xpY2tfZXZlbnRfZGVsLmh0bWwK
LSAqCi0gKiBBbHNvLCBga2V5dXBgL2BrZXlwcmVzc2AvYGtleWRvd25gIGRvIG5vdCBidWJibGUg
dG8gdGhlIHdpbmRvdyBvbiBJRSwgYnV0Ci0gKiB0aGV5IGJ1YmJsZSB0byBkb2N1bWVudC4KLSAq
Ci0gKiBAcGFyYW0ge2Jvb2xlYW59IHRvdWNoTm90TW91c2UgTGlzdGVuIHRvIHRvdWNoIGV2ZW50
cyBpbnN0ZWFkIG9mIG1vdXNlLgotICogQHByaXZhdGUKLSAqIEBzZWUgaHR0cDovL3d3dy5xdWly
a3Ntb2RlLm9yZy9kb20vZXZlbnRzL2tleXMuaHRtbC4KLSAqLwotZnVuY3Rpb24gbGlzdGVuQXRU
b3BMZXZlbCh0b3VjaE5vdE1vdXNlKSB7Ci0gIGludmFyaWFudCgKLSAgICAhX2lzTGlzdGVuaW5n
LAotICAgICdsaXN0ZW5BdFRvcExldmVsKC4uLik6IENhbm5vdCBzZXR1cCB0b3AtbGV2ZWwgbGlz
dGVuZXIgbW9yZSB0aGFuIG9uY2UuJwotICApOwotICB2YXIgdG9wTGV2ZWxUeXBlcyA9IEV2ZW50
Q29uc3RhbnRzLnRvcExldmVsVHlwZXM7Ci0gIHZhciBtb3VudEF0ID0gZG9jdW1lbnQ7Ci0KLSAg
cmVnaXN0ZXJTY3JvbGxWYWx1ZU1vbml0b3JpbmcoKTsKLSAgdHJhcEJ1YmJsZWRFdmVudCh0b3BM
ZXZlbFR5cGVzLnRvcE1vdXNlT3ZlciwgJ21vdXNlb3ZlcicsIG1vdW50QXQpOwotICB0cmFwQnVi
YmxlZEV2ZW50KHRvcExldmVsVHlwZXMudG9wTW91c2VEb3duLCAnbW91c2Vkb3duJywgbW91bnRB
dCk7Ci0gIHRyYXBCdWJibGVkRXZlbnQodG9wTGV2ZWxUeXBlcy50b3BNb3VzZVVwLCAnbW91c2V1
cCcsIG1vdW50QXQpOwotICB0cmFwQnViYmxlZEV2ZW50KHRvcExldmVsVHlwZXMudG9wTW91c2VN
b3ZlLCAnbW91c2Vtb3ZlJywgbW91bnRBdCk7Ci0gIHRyYXBCdWJibGVkRXZlbnQodG9wTGV2ZWxU
eXBlcy50b3BNb3VzZU91dCwgJ21vdXNlb3V0JywgbW91bnRBdCk7Ci0gIHRyYXBCdWJibGVkRXZl
bnQodG9wTGV2ZWxUeXBlcy50b3BDbGljaywgJ2NsaWNrJywgbW91bnRBdCk7Ci0gIHRyYXBCdWJi
bGVkRXZlbnQodG9wTGV2ZWxUeXBlcy50b3BEb3VibGVDbGljaywgJ2RibGNsaWNrJywgbW91bnRB
dCk7Ci0gIGlmICh0b3VjaE5vdE1vdXNlKSB7Ci0gICAgdHJhcEJ1YmJsZWRFdmVudCh0b3BMZXZl
bFR5cGVzLnRvcFRvdWNoU3RhcnQsICd0b3VjaHN0YXJ0JywgbW91bnRBdCk7Ci0gICAgdHJhcEJ1
YmJsZWRFdmVudCh0b3BMZXZlbFR5cGVzLnRvcFRvdWNoRW5kLCAndG91Y2hlbmQnLCBtb3VudEF0
KTsKLSAgICB0cmFwQnViYmxlZEV2ZW50KHRvcExldmVsVHlwZXMudG9wVG91Y2hNb3ZlLCAndG91
Y2htb3ZlJywgbW91bnRBdCk7Ci0gICAgdHJhcEJ1YmJsZWRFdmVudCh0b3BMZXZlbFR5cGVzLnRv
cFRvdWNoQ2FuY2VsLCAndG91Y2hjYW5jZWwnLCBtb3VudEF0KTsKLSAgfQotICB0cmFwQnViYmxl
ZEV2ZW50KHRvcExldmVsVHlwZXMudG9wS2V5VXAsICdrZXl1cCcsIG1vdW50QXQpOwotICB0cmFw
QnViYmxlZEV2ZW50KHRvcExldmVsVHlwZXMudG9wS2V5UHJlc3MsICdrZXlwcmVzcycsIG1vdW50
QXQpOwotICB0cmFwQnViYmxlZEV2ZW50KHRvcExldmVsVHlwZXMudG9wS2V5RG93biwgJ2tleWRv
d24nLCBtb3VudEF0KTsKLSAgdHJhcEJ1YmJsZWRFdmVudCh0b3BMZXZlbFR5cGVzLnRvcElucHV0
LCAnaW5wdXQnLCBtb3VudEF0KTsKLSAgdHJhcEJ1YmJsZWRFdmVudCh0b3BMZXZlbFR5cGVzLnRv
cENoYW5nZSwgJ2NoYW5nZScsIG1vdW50QXQpOwotICB0cmFwQnViYmxlZEV2ZW50KAotICAgIHRv
cExldmVsVHlwZXMudG9wU2VsZWN0aW9uQ2hhbmdlLAotICAgICdzZWxlY3Rpb25jaGFuZ2UnLAot
ICAgIG1vdW50QXQKLSAgKTsKLSAgdHJhcEJ1YmJsZWRFdmVudCgKLSAgICB0b3BMZXZlbFR5cGVz
LnRvcERPTUNoYXJhY3RlckRhdGFNb2RpZmllZCwKLSAgICAnRE9NQ2hhcmFjdGVyRGF0YU1vZGlm
aWVkJywKLSAgICBtb3VudEF0Ci0gICk7Ci0KLSAgaWYgKGlzRXZlbnRTdXBwb3J0ZWQoJ2RyYWcn
KSkgewotICAgIHRyYXBCdWJibGVkRXZlbnQodG9wTGV2ZWxUeXBlcy50b3BEcmFnLCAnZHJhZycs
IG1vdW50QXQpOwotICAgIHRyYXBCdWJibGVkRXZlbnQodG9wTGV2ZWxUeXBlcy50b3BEcmFnRW5k
LCAnZHJhZ2VuZCcsIG1vdW50QXQpOwotICAgIHRyYXBCdWJibGVkRXZlbnQodG9wTGV2ZWxUeXBl
cy50b3BEcmFnRW50ZXIsICdkcmFnZW50ZXInLCBtb3VudEF0KTsKLSAgICB0cmFwQnViYmxlZEV2
ZW50KHRvcExldmVsVHlwZXMudG9wRHJhZ0V4aXQsICdkcmFnZXhpdCcsIG1vdW50QXQpOwotICAg
IHRyYXBCdWJibGVkRXZlbnQodG9wTGV2ZWxUeXBlcy50b3BEcmFnTGVhdmUsICdkcmFnbGVhdmUn
LCBtb3VudEF0KTsKLSAgICB0cmFwQnViYmxlZEV2ZW50KHRvcExldmVsVHlwZXMudG9wRHJhZ092
ZXIsICdkcmFnb3ZlcicsIG1vdW50QXQpOwotICAgIHRyYXBCdWJibGVkRXZlbnQodG9wTGV2ZWxU
eXBlcy50b3BEcmFnU3RhcnQsICdkcmFnc3RhcnQnLCBtb3VudEF0KTsKLSAgICB0cmFwQnViYmxl
ZEV2ZW50KHRvcExldmVsVHlwZXMudG9wRHJvcCwgJ2Ryb3AnLCBtb3VudEF0KTsKLSAgfQotCi0g
IGlmIChpc0V2ZW50U3VwcG9ydGVkKCd3aGVlbCcpKSB7Ci0gICAgdHJhcEJ1YmJsZWRFdmVudCh0
b3BMZXZlbFR5cGVzLnRvcFdoZWVsLCAnd2hlZWwnLCBtb3VudEF0KTsKLSAgfSBlbHNlIGlmIChp
c0V2ZW50U3VwcG9ydGVkKCdtb3VzZXdoZWVsJykpIHsKLSAgICB0cmFwQnViYmxlZEV2ZW50KHRv
cExldmVsVHlwZXMudG9wV2hlZWwsICdtb3VzZXdoZWVsJywgbW91bnRBdCk7Ci0gIH0gZWxzZSB7
Ci0gICAgLy8gRmlyZWZveCBuZWVkcyB0byBjYXB0dXJlIGEgZGlmZmVyZW50IG1vdXNlIHNjcm9s
bCBldmVudC4KLSAgICAvLyBAc2VlIGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvZG9tL2V2ZW50
cy90ZXN0cy9zY3JvbGwuaHRtbAotICAgIHRyYXBCdWJibGVkRXZlbnQodG9wTGV2ZWxUeXBlcy50
b3BXaGVlbCwgJ0RPTU1vdXNlU2Nyb2xsJywgbW91bnRBdCk7Ci0gIH0KLQotICAvLyBJRTw5IGRv
ZXMgbm90IHN1cHBvcnQgY2FwdHVyaW5nIHNvIGp1c3QgdHJhcCB0aGUgYnViYmxlZCBldmVudCB0
aGVyZS4KLSAgaWYgKGlzRXZlbnRTdXBwb3J0ZWQoJ3Njcm9sbCcsIHRydWUpKSB7Ci0gICAgdHJh
cENhcHR1cmVkRXZlbnQodG9wTGV2ZWxUeXBlcy50b3BTY3JvbGwsICdzY3JvbGwnLCBtb3VudEF0
KTsKLSAgfSBlbHNlIHsKLSAgICB0cmFwQnViYmxlZEV2ZW50KHRvcExldmVsVHlwZXMudG9wU2Ny
b2xsLCAnc2Nyb2xsJywgd2luZG93KTsKLSAgfQotCi0gIGlmIChpc0V2ZW50U3VwcG9ydGVkKCdm
b2N1cycsIHRydWUpKSB7Ci0gICAgdHJhcENhcHR1cmVkRXZlbnQodG9wTGV2ZWxUeXBlcy50b3BG
b2N1cywgJ2ZvY3VzJywgbW91bnRBdCk7Ci0gICAgdHJhcENhcHR1cmVkRXZlbnQodG9wTGV2ZWxU
eXBlcy50b3BCbHVyLCAnYmx1cicsIG1vdW50QXQpOwotICB9IGVsc2UgaWYgKGlzRXZlbnRTdXBw
b3J0ZWQoJ2ZvY3VzaW4nKSkgewotICAgIC8vIElFIGhhcyBgZm9jdXNpbmAgYW5kIGBmb2N1c291
dGAgZXZlbnRzIHdoaWNoIGJ1YmJsZS4KLSAgICAvLyBAc2VlIGh0dHA6Ly93d3cucXVpcmtzbW9k
ZS5vcmcvYmxvZy9hcmNoaXZlcy8yMDA4LzA0L2RlbGVnYXRpbmdfdGhlLmh0bWwKLSAgICB0cmFw
QnViYmxlZEV2ZW50KHRvcExldmVsVHlwZXMudG9wRm9jdXMsICdmb2N1c2luJywgbW91bnRBdCk7
Ci0gICAgdHJhcEJ1YmJsZWRFdmVudCh0b3BMZXZlbFR5cGVzLnRvcEJsdXIsICdmb2N1c291dCcs
IG1vdW50QXQpOwotICB9Ci19Ci0KLS8qKgotICogYFJlYWN0RXZlbnRFbWl0dGVyYCBpcyB1c2Vk
IHRvIGF0dGFjaCB0b3AtbGV2ZWwgZXZlbnQgbGlzdGVuZXJzLiBGb3IgZXhhbXBsZToKLSAqCi0g
KiAgIFJlYWN0RXZlbnRFbWl0dGVyLnB1dExpc3RlbmVyKCdteUlEJywgJ29uQ2xpY2snLCBteUZ1
bmN0aW9uKTsKLSAqCi0gKiBUaGlzIHdvdWxkIGFsbG9jYXRlIGEgInJlZ2lzdHJhdGlvbiIgb2Yg
YCgnb25DbGljaycsIG15RnVuY3Rpb24pYCBvbiAnbXlJRCcuCi0gKgotICogQGludGVybmFsCi0g
Ki8KLXZhciBSZWFjdEV2ZW50RW1pdHRlciA9IHsKLQotICAvKioKLSAgICogUmVhY3QgcmVmZXJl
bmNlcyBgUmVhY3RFdmVudFRvcExldmVsQ2FsbGJhY2tgIHVzaW5nIHRoaXMgcHJvcGVydHkgaW4g
b3JkZXIKLSAgICogdG8gYWxsb3cgZGVwZW5kZW5jeSBpbmplY3Rpb24gdmlhIGBlbnN1cmVMaXN0
ZW5pbmdgLgotICAgKi8KLSAgVG9wTGV2ZWxDYWxsYmFja0NyZWF0b3I6IG51bGwsCi0KLSAgLyoq
Ci0gICAqIEVuc3VyZXMgdGhhdCB0b3AtbGV2ZWwgZXZlbnQgZGVsZWdhdGlvbiBsaXN0ZW5lcnMg
YXJlIGluc3RhbGxlZC4KLSAgICoKLSAgICogVGhlcmUgYXJlIGlzc3VlcyB3aXRoIGxpc3Rlbmlu
ZyB0byBib3RoIHRvdWNoIGV2ZW50cyBhbmQgbW91c2UgZXZlbnRzIG9uCi0gICAqIHRoZSB0b3At
bGV2ZWwsIHNvIHdlIG1ha2UgdGhlIGNhbGxlciBjaG9vc2Ugd2hpY2ggb25lIHRvIGxpc3RlbiB0
by4gKElmCi0gICAqIHRoZXJlJ3MgYSB0b3VjaCB0b3AtbGV2ZWwgbGlzdGVuZXJzLCBhbmNob3Jz
IGRvbid0IHJlY2VpdmUgY2xpY2tzIGZvciBzb21lCi0gICAqIHJlYXNvbiwgYW5kIG9ubHkgaW4g
c29tZSBjYXNlcykuCi0gICAqCi0gICAqIEBwYXJhbSB7Ym9vbGVhbn0gdG91Y2hOb3RNb3VzZSBM
aXN0ZW4gdG8gdG91Y2ggZXZlbnRzIGluc3RlYWQgb2YgbW91c2UuCi0gICAqIEBwYXJhbSB7b2Jq
ZWN0fSBUb3BMZXZlbENhbGxiYWNrQ3JlYXRvcgotICAgKi8KLSAgZW5zdXJlTGlzdGVuaW5nOiBm
dW5jdGlvbih0b3VjaE5vdE1vdXNlLCBUb3BMZXZlbENhbGxiYWNrQ3JlYXRvcikgewotICAgIGlu
dmFyaWFudCgKLSAgICAgIEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSwKLSAgICAgICdl
bnN1cmVMaXN0ZW5pbmcoLi4uKTogQ2Fubm90IHRvZ2dsZSBldmVudCBsaXN0ZW5pbmcgaW4gYSBX
b3JrZXIgJyArCi0gICAgICAndGhyZWFkLiBUaGlzIGlzIGxpa2VseSBhIGJ1ZyBpbiB0aGUgZnJh
bWV3b3JrLiBQbGVhc2UgcmVwb3J0ICcgKwotICAgICAgJ2ltbWVkaWF0ZWx5LicKLSAgICApOwot
ICAgIGlmICghX2lzTGlzdGVuaW5nKSB7Ci0gICAgICBSZWFjdEV2ZW50RW1pdHRlci5Ub3BMZXZl
bENhbGxiYWNrQ3JlYXRvciA9IFRvcExldmVsQ2FsbGJhY2tDcmVhdG9yOwotICAgICAgbGlzdGVu
QXRUb3BMZXZlbCh0b3VjaE5vdE1vdXNlKTsKLSAgICAgIF9pc0xpc3RlbmluZyA9IHRydWU7Ci0g
ICAgfQotICB9LAotCi0gIC8qKgotICAgKiBTZXRzIHdoZXRoZXIgb3Igbm90IGFueSBjcmVhdGVk
IGNhbGxiYWNrcyBzaG91bGQgYmUgZW5hYmxlZC4KLSAgICoKLSAgICogQHBhcmFtIHtib29sZWFu
fSBlbmFibGVkIFRydWUgaWYgY2FsbGJhY2tzIHNob3VsZCBiZSBlbmFibGVkLgotICAgKi8KLSAg
c2V0RW5hYmxlZDogZnVuY3Rpb24oZW5hYmxlZCkgewotICAgIGludmFyaWFudCgKLSAgICAgIEV4
ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSwKLSAgICAgICdzZXRFbmFibGVkKC4uLik6IENh
bm5vdCB0b2dnbGUgZXZlbnQgbGlzdGVuaW5nIGluIGEgV29ya2VyIHRocmVhZC4gJyArCi0gICAg
ICAnVGhpcyBpcyBsaWtlbHkgYSBidWcgaW4gdGhlIGZyYW1ld29yay4gUGxlYXNlIHJlcG9ydCBp
bW1lZGlhdGVseS4nCi0gICAgKTsKLSAgICBpZiAoUmVhY3RFdmVudEVtaXR0ZXIuVG9wTGV2ZWxD
YWxsYmFja0NyZWF0b3IpIHsKLSAgICAgIFJlYWN0RXZlbnRFbWl0dGVyLlRvcExldmVsQ2FsbGJh
Y2tDcmVhdG9yLnNldEVuYWJsZWQoZW5hYmxlZCk7Ci0gICAgfQotICB9LAotCi0gIC8qKgotICAg
KiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIGNhbGxiYWNrcyBhcmUgZW5hYmxlZC4KLSAgICov
Ci0gIGlzRW5hYmxlZDogZnVuY3Rpb24oKSB7Ci0gICAgcmV0dXJuICEhKAotICAgICAgUmVhY3RF
dmVudEVtaXR0ZXIuVG9wTGV2ZWxDYWxsYmFja0NyZWF0b3IgJiYKLSAgICAgIFJlYWN0RXZlbnRF
bWl0dGVyLlRvcExldmVsQ2FsbGJhY2tDcmVhdG9yLmlzRW5hYmxlZCgpCi0gICAgKTsKLSAgfSwK
LQotICAvKioKLSAgICogU3RyZWFtcyBhIGZpcmVkIHRvcC1sZXZlbCBldmVudCB0byBgRXZlbnRQ
bHVnaW5IdWJgIHdoZXJlIHBsdWdpbnMgaGF2ZSB0aGUKLSAgICogb3Bwb3J0dW5pdHkgdG8gY3Jl
YXRlIGBSZWFjdEV2ZW50YHMgdG8gYmUgZGlzcGF0Y2hlZC4KLSAgICoKLSAgICogQHBhcmFtIHtz
dHJpbmd9IHRvcExldmVsVHlwZSBSZWNvcmQgZnJvbSBgRXZlbnRDb25zdGFudHNgLgotICAgKiBA
cGFyYW0ge0RPTUV2ZW50VGFyZ2V0fSB0b3BMZXZlbFRhcmdldCBUaGUgbGlzdGVuaW5nIGNvbXBv
bmVudCByb290IG5vZGUuCi0gICAqIEBwYXJhbSB7c3RyaW5nfSB0b3BMZXZlbFRhcmdldElEIElE
IG9mIGB0b3BMZXZlbFRhcmdldGAuCi0gICAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBO
YXRpdmUgYnJvd3NlciBldmVudC4KLSAgICovCi0gIGhhbmRsZVRvcExldmVsOiBmdW5jdGlvbigK
LSAgICAgIHRvcExldmVsVHlwZSwKLSAgICAgIHRvcExldmVsVGFyZ2V0LAotICAgICAgdG9wTGV2
ZWxUYXJnZXRJRCwKLSAgICAgIG5hdGl2ZUV2ZW50KSB7Ci0gICAgdmFyIGV2ZW50cyA9IEV2ZW50
UGx1Z2luSHViLmV4dHJhY3RFdmVudHMoCi0gICAgICB0b3BMZXZlbFR5cGUsCi0gICAgICB0b3BM
ZXZlbFRhcmdldCwKLSAgICAgIHRvcExldmVsVGFyZ2V0SUQsCi0gICAgICBuYXRpdmVFdmVudAot
ICAgICk7Ci0KLSAgICAvLyBFdmVudCBxdWV1ZSBiZWluZyBwcm9jZXNzZWQgaW4gdGhlIHNhbWUg
Y3ljbGUgYWxsb3dzIGBwcmV2ZW50RGVmYXVsdGAuCi0gICAgUmVhY3RVcGRhdGVzLmJhdGNoZWRV
cGRhdGVzKGZ1bmN0aW9uKCkgewotICAgICAgRXZlbnRQbHVnaW5IdWIuZW5xdWV1ZUV2ZW50cyhl
dmVudHMpOwotICAgICAgRXZlbnRQbHVnaW5IdWIucHJvY2Vzc0V2ZW50UXVldWUoKTsKLSAgICB9
KTsKLSAgfSwKLQotICByZWdpc3RyYXRpb25OYW1lczogRXZlbnRQbHVnaW5IdWIucmVnaXN0cmF0
aW9uTmFtZXMsCi0KLSAgcHV0TGlzdGVuZXI6IEV2ZW50UGx1Z2luSHViLnB1dExpc3RlbmVyLAot
Ci0gIGdldExpc3RlbmVyOiBFdmVudFBsdWdpbkh1Yi5nZXRMaXN0ZW5lciwKLQotICBkZWxldGVM
aXN0ZW5lcjogRXZlbnRQbHVnaW5IdWIuZGVsZXRlTGlzdGVuZXIsCi0KLSAgZGVsZXRlQWxsTGlz
dGVuZXJzOiBFdmVudFBsdWdpbkh1Yi5kZWxldGVBbGxMaXN0ZW5lcnMsCi0KLSAgdHJhcEJ1YmJs
ZWRFdmVudDogdHJhcEJ1YmJsZWRFdmVudCwKLQotICB0cmFwQ2FwdHVyZWRFdmVudDogdHJhcENh
cHR1cmVkRXZlbnQKLQotfTsKLQotbW9kdWxlLmV4cG9ydHMgPSBSZWFjdEV2ZW50RW1pdHRlcjsK
LQotfSkoKQotfSx7Ii4vRXZlbnRDb25zdGFudHMiOjEzLCIuL0V2ZW50TGlzdGVuZXIiOjE0LCIu
L0V2ZW50UGx1Z2luSHViIjoxNSwiLi9FeGVjdXRpb25FbnZpcm9ubWVudCI6MTksIi4vUmVhY3RV
cGRhdGVzIjo0OCwiLi9WaWV3cG9ydE1ldHJpY3MiOjU5LCIuL2ludmFyaWFudCI6NzUsIi4vaXNF
dmVudFN1cHBvcnRlZCI6NzZ9XSwzNDpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7
Ci0oZnVuY3Rpb24oKXsvKioKLSAqIENvcHlyaWdodCAyMDEzIEZhY2Vib29rLCBJbmMuCi0gKgot
ICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJM
aWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExp
Y2Vuc2UgYXQKLSAqCi0gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBp
cyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVT
IE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0g
KiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVy
bWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqCi0gKiBA
cHJvdmlkZXNNb2R1bGUgUmVhY3RFdmVudFRvcExldmVsQ2FsbGJhY2sKLSAqIEB0eXBlY2hlY2tz
IHN0YXRpYy1vbmx5Ci0gKi8KLQotInVzZSBzdHJpY3QiOwotCi12YXIgRXhlY3V0aW9uRW52aXJv
bm1lbnQgPSByZXF1aXJlKCIuL0V4ZWN1dGlvbkVudmlyb25tZW50Iik7Ci12YXIgUmVhY3RFdmVu
dEVtaXR0ZXIgPSByZXF1aXJlKCIuL1JlYWN0RXZlbnRFbWl0dGVyIik7Ci12YXIgUmVhY3RJRCA9
IHJlcXVpcmUoIi4vUmVhY3RJRCIpOwotdmFyIFJlYWN0SW5zdGFuY2VIYW5kbGVzID0gcmVxdWly
ZSgiLi9SZWFjdEluc3RhbmNlSGFuZGxlcyIpOwotCi12YXIgZ2V0RXZlbnRUYXJnZXQgPSByZXF1
aXJlKCIuL2dldEV2ZW50VGFyZ2V0Iik7Ci0KLS8qKgotICogQHR5cGUge2Jvb2xlYW59Ci0gKiBA
cHJpdmF0ZQotICovCi12YXIgX3RvcExldmVsTGlzdGVuZXJzRW5hYmxlZCA9IHRydWU7Ci0KLS8q
KgotICogVG9wLWxldmVsIGNhbGxiYWNrIGNyZWF0b3IgdXNlZCB0byBpbXBsZW1lbnQgZXZlbnQg
aGFuZGxpbmcgdXNpbmcgZGVsZWdhdGlvbi4KLSAqIFRoaXMgaXMgdXNlZCB2aWEgZGVwZW5kZW5j
eSBpbmplY3Rpb24gaW4gYFJlYWN0RXZlbnRFbWl0dGVyLmVuc3VyZUxpc3RlbmluZ2AuCi0gKi8K
LXZhciBSZWFjdEV2ZW50VG9wTGV2ZWxDYWxsYmFjayA9IHsKLQotICAvKioKLSAgICogU2V0cyB3
aGV0aGVyIG9yIG5vdCBhbnkgY3JlYXRlZCBjYWxsYmFja3Mgc2hvdWxkIGJlIGVuYWJsZWQuCi0g
ICAqCi0gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZW5hYmxlZCBUcnVlIGlmIGNhbGxiYWNrcyBzaG91
bGQgYmUgZW5hYmxlZC4KLSAgICovCi0gIHNldEVuYWJsZWQ6IGZ1bmN0aW9uKGVuYWJsZWQpIHsK
LSAgICBfdG9wTGV2ZWxMaXN0ZW5lcnNFbmFibGVkID0gISFlbmFibGVkOwotICB9LAotCi0gIC8q
KgotICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIGNhbGxiYWNrcyBhcmUgZW5hYmxlZC4K
LSAgICovCi0gIGlzRW5hYmxlZDogZnVuY3Rpb24oKSB7Ci0gICAgcmV0dXJuIF90b3BMZXZlbExp
c3RlbmVyc0VuYWJsZWQ7Ci0gIH0sCi0KLSAgLyoqCi0gICAqIENyZWF0ZXMgYSBjYWxsYmFjayBm
b3IgdGhlIHN1cHBsaWVkIGB0b3BMZXZlbFR5cGVgIHRoYXQgY291bGQgYmUgYWRkZWQgYXMKLSAg
ICogYSBsaXN0ZW5lciB0byB0aGUgZG9jdW1lbnQuIFRoZSBjYWxsYmFjayBjb21wdXRlcyBhIGB0
b3BMZXZlbFRhcmdldGAgd2hpY2gKLSAgICogc2hvdWxkIGJlIHRoZSByb290IG5vZGUgb2YgYSBt
b3VudGVkIFJlYWN0IGNvbXBvbmVudCB3aGVyZSB0aGUgbGlzdGVuZXIKLSAgICogaXMgYXR0YWNo
ZWQuCi0gICAqCi0gICAqIEBwYXJhbSB7c3RyaW5nfSB0b3BMZXZlbFR5cGUgUmVjb3JkIGZyb20g
YEV2ZW50Q29uc3RhbnRzYC4KLSAgICogQHJldHVybiB7ZnVuY3Rpb259IENhbGxiYWNrIGZvciBo
YW5kbGluZyB0b3AtbGV2ZWwgZXZlbnRzLgotICAgKi8KLSAgY3JlYXRlVG9wTGV2ZWxDYWxsYmFj
azogZnVuY3Rpb24odG9wTGV2ZWxUeXBlKSB7Ci0gICAgcmV0dXJuIGZ1bmN0aW9uKG5hdGl2ZUV2
ZW50KSB7Ci0gICAgICBpZiAoIV90b3BMZXZlbExpc3RlbmVyc0VuYWJsZWQpIHsKLSAgICAgICAg
cmV0dXJuOwotICAgICAgfQotICAgICAgLy8gVE9ETzogUmVtb3ZlIHdoZW4gc3ludGhldGljIGV2
ZW50cyBhcmUgcmVhZHksIHRoaXMgaXMgZm9yIElFPDkuCi0gICAgICBpZiAobmF0aXZlRXZlbnQu
c3JjRWxlbWVudCAmJgotICAgICAgICAgIG5hdGl2ZUV2ZW50LnNyY0VsZW1lbnQgIT09IG5hdGl2
ZUV2ZW50LnRhcmdldCkgewotICAgICAgICBuYXRpdmVFdmVudC50YXJnZXQgPSBuYXRpdmVFdmVu
dC5zcmNFbGVtZW50OwotICAgICAgfQotICAgICAgdmFyIHRvcExldmVsVGFyZ2V0ID0gUmVhY3RJ
bnN0YW5jZUhhbmRsZXMuZ2V0Rmlyc3RSZWFjdERPTSgKLSAgICAgICAgZ2V0RXZlbnRUYXJnZXQo
bmF0aXZlRXZlbnQpCi0gICAgICApIHx8IEV4ZWN1dGlvbkVudmlyb25tZW50Lmdsb2JhbDsKLSAg
ICAgIHZhciB0b3BMZXZlbFRhcmdldElEID0gUmVhY3RJRC5nZXRJRCh0b3BMZXZlbFRhcmdldCkg
fHwgJyc7Ci0gICAgICBSZWFjdEV2ZW50RW1pdHRlci5oYW5kbGVUb3BMZXZlbCgKLSAgICAgICAg
dG9wTGV2ZWxUeXBlLAotICAgICAgICB0b3BMZXZlbFRhcmdldCwKLSAgICAgICAgdG9wTGV2ZWxU
YXJnZXRJRCwKLSAgICAgICAgbmF0aXZlRXZlbnQKLSAgICAgICk7Ci0gICAgfTsKLSAgfQotCi19
OwotCi1tb2R1bGUuZXhwb3J0cyA9IFJlYWN0RXZlbnRUb3BMZXZlbENhbGxiYWNrOwotCi19KSgp
Ci19LHsiLi9FeGVjdXRpb25FbnZpcm9ubWVudCI6MTksIi4vUmVhY3RFdmVudEVtaXR0ZXIiOjMz
LCIuL1JlYWN0SUQiOjM1LCIuL1JlYWN0SW5zdGFuY2VIYW5kbGVzIjozNywiLi9nZXRFdmVudFRh
cmdldCI6NzB9XSwzNTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7Ci0vKioKLSAq
IENvcHlyaWdodCAyMDEzIEZhY2Vib29rLCBJbmMuCi0gKgotICogTGljZW5zZWQgdW5kZXIgdGhl
IEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
Ci0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiBodHRw
Oi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVx
dWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJl
Ci0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAi
QVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5Z
IEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9y
IHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1p
dGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqCi0gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3RJ
RAotICogQHR5cGVjaGVja3Mgc3RhdGljLW9ubHkKLSAqLwotCi0idXNlIHN0cmljdCI7Ci0KLXZh
ciBpbnZhcmlhbnQgPSByZXF1aXJlKCIuL2ludmFyaWFudCIpOwotdmFyIFJlYWN0TW91bnQgPSBy
ZXF1aXJlKCIuL1JlYWN0TW91bnQiKTsKLXZhciBBVFRSX05BTUUgPSAnZGF0YS1yZWFjdGlkJzsK
LXZhciBub2RlQ2FjaGUgPSB7fTsKLQotLyoqCi0gKiBBY2Nlc3Npbmcgbm9kZVtBVFRSX05BTUVd
IG9yIGNhbGxpbmcgZ2V0QXR0cmlidXRlKEFUVFJfTkFNRSkgb24gYSBmb3JtCi0gKiBlbGVtZW50
IGNhbiByZXR1cm4gaXRzIGNvbnRyb2wgd2hvc2UgbmFtZSBvciBJRCBlcXVhbHMgQVRUUl9OQU1F
LiBBbGwKLSAqIERPTSBub2RlcyBzdXBwb3J0IGBnZXRBdHRyaWJ1dGVOb2RlYCBidXQgdGhpcyBj
YW4gYWxzbyBnZXQgY2FsbGVkIG9uCi0gKiBvdGhlciBvYmplY3RzIHNvIGp1c3QgcmV0dXJuICcn
IGlmIHdlJ3JlIGdpdmVuIHNvbWV0aGluZyBvdGhlciB0aGFuIGEKLSAqIERPTSBub2RlIChzdWNo
IGFzIHdpbmRvdykuCi0gKgotICogQHBhcmFtIHs/RE9NRWxlbWVudHxET01XaW5kb3d8RE9NRG9j
dW1lbnR8RE9NVGV4dE5vZGV9IG5vZGUgRE9NIG5vZGUuCi0gKiBAcmV0dXJuIHtzdHJpbmd9IElE
IG9mIHRoZSBzdXBwbGllZCBgZG9tTm9kZWAuCi0gKi8KLWZ1bmN0aW9uIGdldElEKG5vZGUpIHsK
LSAgdmFyIGlkID0gaW50ZXJuYWxHZXRJRChub2RlKTsKLSAgaWYgKGlkKSB7Ci0gICAgaWYgKG5v
ZGVDYWNoZS5oYXNPd25Qcm9wZXJ0eShpZCkpIHsKLSAgICAgIHZhciBjYWNoZWQgPSBub2RlQ2Fj
aGVbaWRdOwotICAgICAgaWYgKGNhY2hlZCAhPT0gbm9kZSkgewotICAgICAgICBpbnZhcmlhbnQo
Ci0gICAgICAgICAgIWlzVmFsaWQoY2FjaGVkLCBpZCksCi0gICAgICAgICAgJ1JlYWN0SUQ6IFR3
byB2YWxpZCBidXQgdW5lcXVhbCBub2RlcyB3aXRoIHRoZSBzYW1lIGAlc2A6ICVzJywKLSAgICAg
ICAgICBBVFRSX05BTUUsIGlkCi0gICAgICAgICk7Ci0KLSAgICAgICAgbm9kZUNhY2hlW2lkXSA9
IG5vZGU7Ci0gICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgIG5vZGVDYWNoZVtpZF0gPSBub2Rl
OwotICAgIH0KLSAgfQotCi0gIHJldHVybiBpZDsKLX0KLQotZnVuY3Rpb24gaW50ZXJuYWxHZXRJ
RChub2RlKSB7Ci0gIGlmIChub2RlICYmIG5vZGUuZ2V0QXR0cmlidXRlTm9kZSkgewotICAgIHZh
ciBhdHRyaWJ1dGVOb2RlID0gbm9kZS5nZXRBdHRyaWJ1dGVOb2RlKEFUVFJfTkFNRSk7Ci0gICAg
aWYgKGF0dHJpYnV0ZU5vZGUpIHsKLSAgICAgIHJldHVybiBhdHRyaWJ1dGVOb2RlLnZhbHVlIHx8
ICcnOwotICAgIH0KLSAgfQotICByZXR1cm4gJyc7Ci19Ci0KLS8qKgotICogU2V0cyB0aGUgUmVh
Y3Qtc3BlY2lmaWMgSUQgb2YgdGhlIGdpdmVuIG5vZGUuCi0gKgotICogQHBhcmFtIHtET01FbGVt
ZW50fSBub2RlIFRoZSBET00gbm9kZSB3aG9zZSBJRCB3aWxsIGJlIHNldC4KLSAqIEBwYXJhbSB7
c3RyaW5nfSBpZCBUaGUgdmFsdWUgb2YgdGhlIElEIGF0dHJpYnV0ZS4KLSAqLwotZnVuY3Rpb24g
c2V0SUQobm9kZSwgaWQpIHsKLSAgdmFyIG9sZElEID0gaW50ZXJuYWxHZXRJRChub2RlKTsKLSAg
aWYgKG9sZElEICE9PSBpZCkgewotICAgIGRlbGV0ZSBub2RlQ2FjaGVbb2xkSURdOwotICB9Ci0g
IG5vZGUuc2V0QXR0cmlidXRlKEFUVFJfTkFNRSwgaWQpOwotICBub2RlQ2FjaGVbaWRdID0gbm9k
ZTsKLX0KLQotLyoqCi0gKiBGaW5kcyB0aGUgbm9kZSB3aXRoIHRoZSBzdXBwbGllZCBSZWFjdC1n
ZW5lcmF0ZWQgRE9NIElELgotICoKLSAqIEBwYXJhbSB7c3RyaW5nfSBpZCBBIFJlYWN0LWdlbmVy
YXRlZCBET00gSUQuCi0gKiBAcmV0dXJuIHtET01FbGVtZW50fSBET00gbm9kZSB3aXRoIHRoZSBz
dXBwbGVkIGBpZGAuCi0gKiBAaW50ZXJuYWwKLSAqLwotZnVuY3Rpb24gZ2V0Tm9kZShpZCkgewot
ICBpZiAoIW5vZGVDYWNoZS5oYXNPd25Qcm9wZXJ0eShpZCkgfHwgIWlzVmFsaWQobm9kZUNhY2hl
W2lkXSwgaWQpKSB7Ci0gICAgbm9kZUNhY2hlW2lkXSA9IFJlYWN0TW91bnQuZmluZFJlYWN0Tm9k
ZUJ5SUQoaWQpOwotICB9Ci0gIHJldHVybiBub2RlQ2FjaGVbaWRdOwotfQotCi0vKioKLSAqIEEg
bm9kZSBpcyAidmFsaWQiIGlmIGl0IGlzIGNvbnRhaW5lZCBieSBhIGN1cnJlbnRseSBtb3VudGVk
IGNvbnRhaW5lci4KLSAqCi0gKiBUaGlzIG1lYW5zIHRoYXQgdGhlIG5vZGUgZG9lcyBub3QgaGF2
ZSB0byBiZSBjb250YWluZWQgYnkgYSBkb2N1bWVudCBpbgotICogb3JkZXIgdG8gYmUgY29uc2lk
ZXJlZCB2YWxpZC4KLSAqCi0gKiBAcGFyYW0gez9ET01FbGVtZW50fSBub2RlIFRoZSBjYW5kaWRh
dGUgRE9NIG5vZGUuCi0gKiBAcGFyYW0ge3N0cmluZ30gaWQgVGhlIGV4cGVjdGVkIElEIG9mIHRo
ZSBub2RlLgotICogQHJldHVybiB7Ym9vbGVhbn0gV2hldGhlciB0aGUgbm9kZSBpcyBjb250YWlu
ZWQgYnkgYSBtb3VudGVkIGNvbnRhaW5lci4KLSAqLwotZnVuY3Rpb24gaXNWYWxpZChub2RlLCBp
ZCkgewotICBpZiAobm9kZSkgewotICAgIGludmFyaWFudCgKLSAgICAgIGludGVybmFsR2V0SUQo
bm9kZSkgPT09IGlkLAotICAgICAgJ1JlYWN0SUQ6IFVuZXhwZWN0ZWQgbW9kaWZpY2F0aW9uIG9m
IGAlc2AnLAotICAgICAgQVRUUl9OQU1FCi0gICAgKTsKLQotICAgIHZhciBjb250YWluZXIgPSBS
ZWFjdE1vdW50LmZpbmRSZWFjdENvbnRhaW5lckZvcklEKGlkKTsKLSAgICBpZiAoY29udGFpbmVy
ICYmIGNvbnRhaW5zKGNvbnRhaW5lciwgbm9kZSkpIHsKLSAgICAgIHJldHVybiB0cnVlOwotICAg
IH0KLSAgfQotCi0gIHJldHVybiBmYWxzZTsKLX0KLQotZnVuY3Rpb24gY29udGFpbnMoYW5jZXN0
b3IsIGRlc2NlbmRhbnQpIHsKLSAgaWYgKGFuY2VzdG9yLmNvbnRhaW5zKSB7Ci0gICAgLy8gU3Vw
cG9ydGVkIG5hdGl2ZWx5IGluIHZpcnR1YWxseSBhbGwgYnJvd3NlcnMsIGJ1dCBub3QgaW4ganNk
b20uCi0gICAgcmV0dXJuIGFuY2VzdG9yLmNvbnRhaW5zKGRlc2NlbmRhbnQpOwotICB9Ci0KLSAg
aWYgKGRlc2NlbmRhbnQgPT09IGFuY2VzdG9yKSB7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLQot
ICBpZiAoZGVzY2VuZGFudC5ub2RlVHlwZSA9PT0gMykgewotICAgIC8vIElmIGRlc2NlbmRhbnQg
aXMgYSB0ZXh0IG5vZGUsIHN0YXJ0IGZyb20gZGVzY2VuZGFudC5wYXJlbnROb2RlCi0gICAgLy8g
aW5zdGVhZCwgc28gdGhhdCB3ZSBjYW4gYXNzdW1lIGFsbCBhbmNlc3RvcnMgd29ydGggY29uc2lk
ZXJpbmcgYXJlCi0gICAgLy8gZWxlbWVudCBub2RlcyB3aXRoIG5vZGVUeXBlID09PSAxLgotICAg
IGRlc2NlbmRhbnQgPSBkZXNjZW5kYW50LnBhcmVudE5vZGU7Ci0gIH0KLQotICB3aGlsZSAoZGVz
Y2VuZGFudCAmJiBkZXNjZW5kYW50Lm5vZGVUeXBlID09PSAxKSB7Ci0gICAgaWYgKGRlc2NlbmRh
bnQgPT09IGFuY2VzdG9yKSB7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgZGVzY2Vu
ZGFudCA9IGRlc2NlbmRhbnQucGFyZW50Tm9kZTsKLSAgfQotCi0gIHJldHVybiBmYWxzZTsKLX0K
LQotLyoqCi0gKiBDYXVzZXMgdGhlIGNhY2hlIHRvIGZvcmdldCBhYm91dCBvbmUgUmVhY3Qtc3Bl
Y2lmaWMgSUQuCi0gKgotICogQHBhcmFtIHtzdHJpbmd9IGlkIFRoZSBJRCB0byBmb3JnZXQuCi0g
Ki8KLWZ1bmN0aW9uIHB1cmdlSUQoaWQpIHsKLSAgZGVsZXRlIG5vZGVDYWNoZVtpZF07Ci19Ci0K
LWV4cG9ydHMuQVRUUl9OQU1FID0gQVRUUl9OQU1FOwotZXhwb3J0cy5nZXRJRCA9IGdldElEOwot
ZXhwb3J0cy5yYXdHZXRJRCA9IGludGVybmFsR2V0SUQ7Ci1leHBvcnRzLnNldElEID0gc2V0SUQ7
Ci1leHBvcnRzLmdldE5vZGUgPSBnZXROb2RlOwotZXhwb3J0cy5wdXJnZUlEID0gcHVyZ2VJRDsK
LQotfSx7Ii4vUmVhY3RNb3VudCI6MzgsIi4vaW52YXJpYW50Ijo3NX1dLDM2OltmdW5jdGlvbihy
ZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKLS8qKgotICogQ29weXJpZ2h0IDIwMTMgRmFjZWJvb2ss
IEluYy4KLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24g
Mi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBv
ciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRo
ZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VU
IFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3Ig
aW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdv
dmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNl
LgotICoKLSAqIEBwcm92aWRlc01vZHVsZSBSZWFjdElucHV0U2VsZWN0aW9uCi0gKi8KLQotInVz
ZSBzdHJpY3QiOwotCi0vLyBJdCBpcyBub3Qgc2FmZSB0byByZWFkIHRoZSBkb2N1bWVudC5hY3Rp
dmVFbGVtZW50IHByb3BlcnR5IGluIElFIGlmIHRoZXJlJ3MKLS8vIG5vdGhpbmcgZm9jdXNlZC4K
LWZ1bmN0aW9uIGdldEFjdGl2ZUVsZW1lbnQoKSB7Ci0gIHRyeSB7Ci0gICAgcmV0dXJuIGRvY3Vt
ZW50LmFjdGl2ZUVsZW1lbnQ7Ci0gIH0gY2F0Y2ggKGUpIHsKLSAgfQotfQotCi1mdW5jdGlvbiBp
c0luRG9jdW1lbnQobm9kZSkgewotICByZXR1cm4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNv
bnRhaW5zKG5vZGUpOwotfQotCi0vKioKLSAqIEBSZWFjdElucHV0U2VsZWN0aW9uOiBSZWFjdCBp
bnB1dCBzZWxlY3Rpb24gbW9kdWxlLiBCYXNlZCBvbiBTZWxlY3Rpb24uanMsCi0gKiBidXQgbW9k
aWZpZWQgdG8gYmUgc3VpdGFibGUgZm9yIHJlYWN0IGFuZCBoYXMgYSBjb3VwbGUgb2YgYnVnIGZp
eGVzIChkb2Vzbid0Ci0gKiBhc3N1bWUgYnV0dG9ucyBoYXZlIHJhbmdlIHNlbGVjdGlvbnMgYWxs
b3dlZCkuCi0gKiBJbnB1dCBzZWxlY3Rpb24gbW9kdWxlIGZvciBSZWFjdC4KLSAqLwotdmFyIFJl
YWN0SW5wdXRTZWxlY3Rpb24gPSB7Ci0KLSAgaGFzU2VsZWN0aW9uQ2FwYWJpbGl0aWVzOiBmdW5j
dGlvbihlbGVtKSB7Ci0gICAgcmV0dXJuIGVsZW0gJiYgKAotICAgICAgKGVsZW0ubm9kZU5hbWUg
PT09ICdJTlBVVCcgJiYgZWxlbS50eXBlID09PSAndGV4dCcpIHx8Ci0gICAgICBlbGVtLm5vZGVO
YW1lID09PSAnVEVYVEFSRUEnIHx8Ci0gICAgICBlbGVtLmNvbnRlbnRFZGl0YWJsZSA9PT0gJ3Ry
dWUnCi0gICAgKTsKLSAgfSwKLQotICBnZXRTZWxlY3Rpb25JbmZvcm1hdGlvbjogZnVuY3Rpb24o
KSB7Ci0gICAgdmFyIGZvY3VzZWRFbGVtID0gZ2V0QWN0aXZlRWxlbWVudCgpOwotICAgIHJldHVy
biB7Ci0gICAgICBmb2N1c2VkRWxlbTogZm9jdXNlZEVsZW0sCi0gICAgICBzZWxlY3Rpb25SYW5n
ZToKLSAgICAgICAgICBSZWFjdElucHV0U2VsZWN0aW9uLmhhc1NlbGVjdGlvbkNhcGFiaWxpdGll
cyhmb2N1c2VkRWxlbSkgPwotICAgICAgICAgIFJlYWN0SW5wdXRTZWxlY3Rpb24uZ2V0U2VsZWN0
aW9uKGZvY3VzZWRFbGVtKSA6Ci0gICAgICAgICAgbnVsbAotICAgIH07Ci0gIH0sCi0KLSAgLyoq
Ci0gICAqIEByZXN0b3JlU2VsZWN0aW9uOiBJZiBhbnkgc2VsZWN0aW9uIGluZm9ybWF0aW9uIHdh
cyBwb3RlbnRpYWxseSBsb3N0LAotICAgKiByZXN0b3JlIGl0LiBUaGlzIGlzIHVzZWZ1bCB3aGVu
IHBlcmZvcm1pbmcgb3BlcmF0aW9ucyB0aGF0IGNvdWxkIHJlbW92ZSBkb20KLSAgICogbm9kZXMg
YW5kIHBsYWNlIHRoZW0gYmFjayBpbiwgcmVzdWx0aW5nIGluIGZvY3VzIGJlaW5nIGxvc3QuCi0g
ICAqLwotICByZXN0b3JlU2VsZWN0aW9uOiBmdW5jdGlvbihwcmlvclNlbGVjdGlvbkluZm9ybWF0
aW9uKSB7Ci0gICAgdmFyIGN1ckZvY3VzZWRFbGVtID0gZ2V0QWN0aXZlRWxlbWVudCgpOwotICAg
IHZhciBwcmlvckZvY3VzZWRFbGVtID0gcHJpb3JTZWxlY3Rpb25JbmZvcm1hdGlvbi5mb2N1c2Vk
RWxlbTsKLSAgICB2YXIgcHJpb3JTZWxlY3Rpb25SYW5nZSA9IHByaW9yU2VsZWN0aW9uSW5mb3Jt
YXRpb24uc2VsZWN0aW9uUmFuZ2U7Ci0gICAgaWYgKGN1ckZvY3VzZWRFbGVtICE9PSBwcmlvckZv
Y3VzZWRFbGVtICYmCi0gICAgICAgIGlzSW5Eb2N1bWVudChwcmlvckZvY3VzZWRFbGVtKSkgewot
ICAgICAgaWYgKFJlYWN0SW5wdXRTZWxlY3Rpb24uaGFzU2VsZWN0aW9uQ2FwYWJpbGl0aWVzKHBy
aW9yRm9jdXNlZEVsZW0pKSB7Ci0gICAgICAgIFJlYWN0SW5wdXRTZWxlY3Rpb24uc2V0U2VsZWN0
aW9uKAotICAgICAgICAgIHByaW9yRm9jdXNlZEVsZW0sCi0gICAgICAgICAgcHJpb3JTZWxlY3Rp
b25SYW5nZQotICAgICAgICApOwotICAgICAgfQotICAgICAgcHJpb3JGb2N1c2VkRWxlbS5mb2N1
cygpOwotICAgIH0KLSAgfSwKLQotICAvKioKLSAgICogQGdldFNlbGVjdGlvbjogR2V0cyB0aGUg
c2VsZWN0aW9uIGJvdW5kcyBvZiBhIHRleHRhcmVhIG9yIGlucHV0LgotICAgKiAtQGlucHV0OiBM
b29rIHVwIHNlbGVjdGlvbiBib3VuZHMgb2YgdGhpcyBpbnB1dCBvciB0ZXh0YXJlYQotICAgKiAt
QHJldHVybiB7c3RhcnQ6IHNlbGVjdGlvblN0YXJ0LCBlbmQ6IHNlbGVjdGlvbkVuZH0KLSAgICov
Ci0gIGdldFNlbGVjdGlvbjogZnVuY3Rpb24oaW5wdXQpIHsKLSAgICB2YXIgcmFuZ2U7Ci0gICAg
aWYgKGlucHV0LmNvbnRlbnRFZGl0YWJsZSA9PT0gJ3RydWUnICYmIHdpbmRvdy5nZXRTZWxlY3Rp
b24pIHsKLSAgICAgIHJhbmdlID0gd2luZG93LmdldFNlbGVjdGlvbigpLmdldFJhbmdlQXQoMCk7
Ci0gICAgICB2YXIgY29tbW9uQW5jZXN0b3IgPSByYW5nZS5jb21tb25BbmNlc3RvckNvbnRhaW5l
cjsKLSAgICAgIGlmIChjb21tb25BbmNlc3RvciAmJiBjb21tb25BbmNlc3Rvci5ub2RlVHlwZSA9
PT0gMykgewotICAgICAgICBjb21tb25BbmNlc3RvciA9IGNvbW1vbkFuY2VzdG9yLnBhcmVudE5v
ZGU7Ci0gICAgICB9Ci0gICAgICBpZiAoY29tbW9uQW5jZXN0b3IgIT09IGlucHV0KSB7Ci0gICAg
ICAgIHJldHVybiB7c3RhcnQ6IDAsIGVuZDogMH07Ci0gICAgICB9IGVsc2UgewotICAgICAgICBy
ZXR1cm4ge3N0YXJ0OiByYW5nZS5zdGFydE9mZnNldCwgZW5kOiByYW5nZS5lbmRPZmZzZXR9Owot
ICAgICAgfQotICAgIH0KLQotICAgIGlmICghZG9jdW1lbnQuc2VsZWN0aW9uKSB7Ci0gICAgICAv
LyBNb3ppbGxhLCBTYWZhcmksIGV0Yy4KLSAgICAgIHJldHVybiB7c3RhcnQ6IGlucHV0LnNlbGVj
dGlvblN0YXJ0LCBlbmQ6IGlucHV0LnNlbGVjdGlvbkVuZH07Ci0gICAgfQotCi0gICAgcmFuZ2Ug
PSBkb2N1bWVudC5zZWxlY3Rpb24uY3JlYXRlUmFuZ2UoKTsKLSAgICBpZiAocmFuZ2UucGFyZW50
RWxlbWVudCgpICE9PSBpbnB1dCkgewotICAgICAgLy8gVGhlcmUgY2FuIG9ubHkgYmUgb25lIHNl
bGVjdGlvbiBwZXIgZG9jdW1lbnQgaW4gSUUsIHNvIGlmIHRoZQotICAgICAgLy8gY29udGFpbmlu
ZyBlbGVtZW50IG9mIHRoZSBkb2N1bWVudCdzIHNlbGVjdGlvbiBpc24ndCBvdXIgdGV4dCBmaWVs
ZCwKLSAgICAgIC8vIG91ciB0ZXh0IGZpZWxkIG11c3QgaGF2ZSBubyBzZWxlY3Rpb24uCi0gICAg
ICByZXR1cm4ge3N0YXJ0OiAwLCBlbmQ6IDB9OwotICAgIH0KLQotICAgIHZhciBsZW5ndGggPSBp
bnB1dC52YWx1ZS5sZW5ndGg7Ci0KLSAgICBpZiAoaW5wdXQubm9kZU5hbWUgPT09ICdJTlBVVCcp
IHsKLSAgICAgIHJldHVybiB7Ci0gICAgICAgIHN0YXJ0OiAtcmFuZ2UubW92ZVN0YXJ0KCdjaGFy
YWN0ZXInLCAtbGVuZ3RoKSwKLSAgICAgICAgZW5kOiAtcmFuZ2UubW92ZUVuZCgnY2hhcmFjdGVy
JywgLWxlbmd0aCkKLSAgICAgIH07Ci0gICAgfSBlbHNlIHsKLSAgICAgIHZhciByYW5nZTIgPSBy
YW5nZS5kdXBsaWNhdGUoKTsKLSAgICAgIHJhbmdlMi5tb3ZlVG9FbGVtZW50VGV4dChpbnB1dCk7
Ci0gICAgICByYW5nZTIuc2V0RW5kUG9pbnQoJ1N0YXJ0VG9FbmQnLCByYW5nZSk7Ci0gICAgICB2
YXIgZW5kID0gbGVuZ3RoIC0gcmFuZ2UyLnRleHQubGVuZ3RoOwotICAgICAgcmFuZ2UyLnNldEVu
ZFBvaW50KCdTdGFydFRvU3RhcnQnLCByYW5nZSk7Ci0gICAgICByZXR1cm4gewotICAgICAgICBz
dGFydDogbGVuZ3RoIC0gcmFuZ2UyLnRleHQubGVuZ3RoLAotICAgICAgICBlbmQ6ICAgZW5kCi0g
ICAgICB9OwotICAgIH0KLSAgfSwKLQotICAvKioKLSAgICogQHNldFNlbGVjdGlvbjogU2V0cyB0
aGUgc2VsZWN0aW9uIGJvdW5kcyBvZiBhIHRleHRhcmVhIG9yIGlucHV0IGFuZCBmb2N1c2VzCi0g
ICAqIHRoZSBpbnB1dC4KLSAgICogLUBpbnB1dCAgICAgU2V0IHNlbGVjdGlvbiBib3VuZHMgb2Yg
dGhpcyBpbnB1dCBvciB0ZXh0YXJlYQotICAgKiAtQHJhbmdlT2JqIE9iamVjdCBvZiBzYW1lIGZv
cm0gdGhhdCBpcyByZXR1cm5lZCBmcm9tIGdldCoKLSAgICovCi0gIHNldFNlbGVjdGlvbjogZnVu
Y3Rpb24oaW5wdXQsIHJhbmdlT2JqKSB7Ci0gICAgdmFyIHJhbmdlOwotICAgIHZhciBzdGFydCA9
IHJhbmdlT2JqLnN0YXJ0OwotICAgIHZhciBlbmQgPSByYW5nZU9iai5lbmQ7Ci0gICAgaWYgKHR5
cGVvZiBlbmQgPT09ICd1bmRlZmluZWQnKSB7Ci0gICAgICBlbmQgPSBzdGFydDsKLSAgICB9Ci0g
ICAgaWYgKGRvY3VtZW50LnNlbGVjdGlvbikgewotICAgICAgLy8gSUUgaXMgaW5jb25zaXN0ZW50
IGFib3V0IGNoYXJhY3RlciBvZmZzZXRzIHdoZW4gaXQgY29tZXMgdG8gY2FycmlhZ2UKLSAgICAg
IC8vIHJldHVybnMsIHNvIHdlIG5lZWQgdG8gbWFudWFsbHkgdGFrZSB0aGVtIGludG8gYWNjb3Vu
dAotICAgICAgaWYgKGlucHV0LnRhZ05hbWUgPT09ICdURVhUQVJFQScpIHsKLSAgICAgICAgdmFy
IGNyX2JlZm9yZSA9Ci0gICAgICAgICAgKGlucHV0LnZhbHVlLnNsaWNlKDAsIHN0YXJ0KS5tYXRj
aCgvXHIvZykgfHwgW10pLmxlbmd0aDsKLSAgICAgICAgdmFyIGNyX2luc2lkZSA9Ci0gICAgICAg
ICAgKGlucHV0LnZhbHVlLnNsaWNlKHN0YXJ0LCBlbmQpLm1hdGNoKC9cci9nKSB8fCBbXSkubGVu
Z3RoOwotICAgICAgICBzdGFydCAtPSBjcl9iZWZvcmU7Ci0gICAgICAgIGVuZCAtPSBjcl9iZWZv
cmUgKyBjcl9pbnNpZGU7Ci0gICAgICB9Ci0gICAgICByYW5nZSA9IGlucHV0LmNyZWF0ZVRleHRS
YW5nZSgpOwotICAgICAgcmFuZ2UuY29sbGFwc2UodHJ1ZSk7Ci0gICAgICByYW5nZS5tb3ZlU3Rh
cnQoJ2NoYXJhY3RlcicsIHN0YXJ0KTsKLSAgICAgIHJhbmdlLm1vdmVFbmQoJ2NoYXJhY3Rlcics
IGVuZCAtIHN0YXJ0KTsKLSAgICAgIHJhbmdlLnNlbGVjdCgpOwotICAgIH0gZWxzZSB7Ci0gICAg
ICBpZiAoaW5wdXQuY29udGVudEVkaXRhYmxlID09PSAndHJ1ZScpIHsKLSAgICAgICAgaWYgKGlu
cHV0LmNoaWxkTm9kZXMubGVuZ3RoID09PSAxKSB7Ci0gICAgICAgICAgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOwotICAgICAgICAgIHJhbmdlLnNldFN0YXJ0KGlucHV0LmNoaWxkTm9k
ZXNbMF0sIHN0YXJ0KTsKLSAgICAgICAgICByYW5nZS5zZXRFbmQoaW5wdXQuY2hpbGROb2Rlc1sw
XSwgZW5kKTsKLSAgICAgICAgICB2YXIgc2VsID0gd2luZG93LmdldFNlbGVjdGlvbigpOwotICAg
ICAgICAgIHNlbC5yZW1vdmVBbGxSYW5nZXMoKTsKLSAgICAgICAgICBzZWwuYWRkUmFuZ2UocmFu
Z2UpOwotICAgICAgICB9Ci0gICAgICB9IGVsc2UgewotICAgICAgICBpbnB1dC5zZWxlY3Rpb25T
dGFydCA9IHN0YXJ0OwotICAgICAgICBpbnB1dC5zZWxlY3Rpb25FbmQgPSBNYXRoLm1pbihlbmQs
IGlucHV0LnZhbHVlLmxlbmd0aCk7Ci0gICAgICAgIGlucHV0LmZvY3VzKCk7Ci0gICAgICB9Ci0g
ICAgfQotICB9Ci0KLX07Ci0KLW1vZHVsZS5leHBvcnRzID0gUmVhY3RJbnB1dFNlbGVjdGlvbjsK
LQotfSx7fV0sMzc6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewotLyoqCi0gKiBD
b3B5cmlnaHQgMjAxMyBGYWNlYm9vaywgSW5jLgotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBB
cGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBu
b3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgot
ICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogaHR0cDov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVp
cmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQot
ICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFT
IElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBL
SU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0
aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRh
dGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKgotICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0SW5z
dGFuY2VIYW5kbGVzCi0gKiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seQotICovCi0KLSJ1c2Ugc3Ry
aWN0IjsKLQotdmFyIFJlYWN0SUQgPSByZXF1aXJlKCIuL1JlYWN0SUQiKTsKLQotdmFyIGludmFy
aWFudCA9IHJlcXVpcmUoIi4vaW52YXJpYW50Iik7Ci0KLXZhciBTRVBBUkFUT1IgPSAnLic7Ci12
YXIgU0VQQVJBVE9SX0xFTkdUSCA9IFNFUEFSQVRPUi5sZW5ndGg7Ci0KLS8qKgotICogTWF4aW11
bSBkZXB0aCBvZiB0cmF2ZXJzYWxzIGJlZm9yZSB3ZSBjb25zaWRlciB0aGUgcG9zc2liaWxpdHkg
b2YgYSBiYWQgSUQuCi0gKi8KLXZhciBNQVhfVFJFRV9ERVBUSCA9IDEwMDsKLQotLyoqCi0gKiBT
aXplIG9mIHRoZSByZWFjdFJvb3QgSUQgc3BhY2UuIFdlIGdlbmVyYXRlIHJhbmRvbSBudW1iZXJz
IGZvciBSZWFjdCByb290Ci0gKiBJRHMgYW5kIGlmIHRoZXJlJ3MgYSBjb2xsaXNpb24gdGhlIGV2
ZW50cyBhbmQgRE9NIHVwZGF0ZSBzeXN0ZW0gd2lsbAotICogZ2V0IGNvbmZ1c2VkLiBJZiB3ZSBh
c3N1bWUgMTAwIFJlYWN0IGNvbXBvbmVudHMgcGVyIHBhZ2UsIGFuZCBhIHVzZXIKLSAqIGxvYWRz
IDEgcGFnZSBwZXIgbWludXRlIDI0LzcgZm9yIDUwIHllYXJzLCB3aXRoIGEgbW91bnQgcG9pbnQg
c3BhY2Ugb2YKLSAqIDksOTk5LDk5OSB0aGUgbGlrZWxpaG9vZCBvZiBuZXZlciBoYXZpbmcgYSBj
b2xsaXNpb24gaXMgOTkuOTk3JS4KLSAqLwotdmFyIEdMT0JBTF9NT1VOVF9QT0lOVF9NQVggPSA5
OTk5OTk5OwotCi0vKioKLSAqIENyZWF0ZXMgYSBET00gSUQgcHJlZml4IHRvIHVzZSB3aGVuIG1v
dW50aW5nIFJlYWN0IGNvbXBvbmVudHMuCi0gKgotICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IEEg
dW5pcXVlIGludGVnZXIKLSAqIEByZXR1cm4ge3N0cmluZ30gUmVhY3Qgcm9vdCBJRC4KLSAqIEBp
bnRlcm5hbAotICovCi1mdW5jdGlvbiBnZXRSZWFjdFJvb3RJRFN0cmluZyhpbmRleCkgewotICBy
ZXR1cm4gU0VQQVJBVE9SICsgJ3JbJyArIGluZGV4LnRvU3RyaW5nKDM2KSArICddJzsKLX0KLQot
LyoqCi0gKiBDaGVja3MgaWYgYSBjaGFyYWN0ZXIgaW4gdGhlIHN1cHBsaWVkIElEIGlzIGEgc2Vw
YXJhdG9yIG9yIHRoZSBlbmQuCi0gKgotICogQHBhcmFtIHtzdHJpbmd9IGlkIEEgUmVhY3QgRE9N
IElELgotICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IEluZGV4IG9mIHRoZSBjaGFyYWN0ZXIgdG8g
Y2hlY2suCi0gKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHRoZSBjaGFyYWN0ZXIgaXMgYSBz
ZXBhcmF0b3Igb3IgZW5kIG9mIHRoZSBJRC4KLSAqIEBwcml2YXRlCi0gKi8KLWZ1bmN0aW9uIGlz
Qm91bmRhcnkoaWQsIGluZGV4KSB7Ci0gIHJldHVybiBpZC5jaGFyQXQoaW5kZXgpID09PSBTRVBB
UkFUT1IgfHwgaW5kZXggPT09IGlkLmxlbmd0aDsKLX0KLQotLyoqCi0gKiBDaGVja3MgaWYgdGhl
IHN1cHBsaWVkIHN0cmluZyBpcyBhIHZhbGlkIFJlYWN0IERPTSBJRC4KLSAqCi0gKiBAcGFyYW0g
e3N0cmluZ30gaWQgQSBSZWFjdCBET00gSUQsIG1heWJlLgotICogQHJldHVybiB7Ym9vbGVhbn0g
VHJ1ZSBpZiB0aGUgc3RyaW5nIGlzIGEgdmFsaWQgUmVhY3QgRE9NIElELgotICogQHByaXZhdGUK
LSAqLwotZnVuY3Rpb24gaXNWYWxpZElEKGlkKSB7Ci0gIHJldHVybiBpZCA9PT0gJycgfHwgKAot
ICAgIGlkLmNoYXJBdCgwKSA9PT0gU0VQQVJBVE9SICYmIGlkLmNoYXJBdChpZC5sZW5ndGggLSAx
KSAhPT0gU0VQQVJBVE9SCi0gICk7Ci19Ci0KLS8qKgotICogQ2hlY2tzIGlmIHRoZSBmaXJzdCBJ
RCBpcyBhbiBhbmNlc3RvciBvZiBvciBlcXVhbCB0byB0aGUgc2Vjb25kIElELgotICoKLSAqIEBw
YXJhbSB7c3RyaW5nfSBhbmNlc3RvcklECi0gKiBAcGFyYW0ge3N0cmluZ30gZGVzY2VuZGFudElE
Ci0gKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIGBhbmNlc3RvcklEYCBpcyBhbiBhbmNlc3Rv
ciBvZiBgZGVzY2VuZGFudElEYC4KLSAqIEBpbnRlcm5hbAotICovCi1mdW5jdGlvbiBpc0FuY2Vz
dG9ySURPZihhbmNlc3RvcklELCBkZXNjZW5kYW50SUQpIHsKLSAgcmV0dXJuICgKLSAgICBkZXNj
ZW5kYW50SUQuaW5kZXhPZihhbmNlc3RvcklEKSA9PT0gMCAmJgotICAgIGlzQm91bmRhcnkoZGVz
Y2VuZGFudElELCBhbmNlc3RvcklELmxlbmd0aCkKLSAgKTsKLX0KLQotLyoqCi0gKiBHZXRzIHRo
ZSBwYXJlbnQgSUQgb2YgdGhlIHN1cHBsaWVkIFJlYWN0IERPTSBJRCwgYGlkYC4KLSAqCi0gKiBA
cGFyYW0ge3N0cmluZ30gaWQgSUQgb2YgYSBjb21wb25lbnQuCi0gKiBAcmV0dXJuIHtzdHJpbmd9
IElEIG9mIHRoZSBwYXJlbnQsIG9yIGFuIGVtcHR5IHN0cmluZy4KLSAqIEBwcml2YXRlCi0gKi8K
LWZ1bmN0aW9uIGdldFBhcmVudElEKGlkKSB7Ci0gIHJldHVybiBpZCA/IGlkLnN1YnN0cigwLCBp
ZC5sYXN0SW5kZXhPZihTRVBBUkFUT1IpKSA6ICcnOwotfQotCi0vKioKLSAqIEdldHMgdGhlIG5l
eHQgRE9NIElEIG9uIHRoZSB0cmVlIHBhdGggZnJvbSB0aGUgc3VwcGxpZWQgYGFuY2VzdG9ySURg
IHRvIHRoZQotICogc3VwcGxpZWQgYGRlc3RpbmF0aW9uSURgLiBJZiB0aGV5IGFyZSBlcXVhbCwg
dGhlIElEIGlzIHJldHVybmVkLgotICoKLSAqIEBwYXJhbSB7c3RyaW5nfSBhbmNlc3RvcklEIElE
IG9mIGFuIGFuY2VzdG9yIG5vZGUgb2YgYGRlc3RpbmF0aW9uSURgLgotICogQHBhcmFtIHtzdHJp
bmd9IGRlc3RpbmF0aW9uSUQgSUQgb2YgdGhlIGRlc3RpbmF0aW9uIG5vZGUuCi0gKiBAcmV0dXJu
IHtzdHJpbmd9IE5leHQgSUQgb24gdGhlIHBhdGggZnJvbSBgYW5jZXN0b3JJRGAgdG8gYGRlc3Rp
bmF0aW9uSURgLgotICogQHByaXZhdGUKLSAqLwotZnVuY3Rpb24gZ2V0TmV4dERlc2NlbmRhbnRJ
RChhbmNlc3RvcklELCBkZXN0aW5hdGlvbklEKSB7Ci0gIGludmFyaWFudCgKLSAgICBpc1ZhbGlk
SUQoYW5jZXN0b3JJRCkgJiYgaXNWYWxpZElEKGRlc3RpbmF0aW9uSUQpLAotICAgICdnZXROZXh0
RGVzY2VuZGFudElEKCVzLCAlcyk6IFJlY2VpdmVkIGFuIGludmFsaWQgUmVhY3QgRE9NIElELics
Ci0gICAgYW5jZXN0b3JJRCwKLSAgICBkZXN0aW5hdGlvbklECi0gICk7Ci0gIGludmFyaWFudCgK
LSAgICBpc0FuY2VzdG9ySURPZihhbmNlc3RvcklELCBkZXN0aW5hdGlvbklEKSwKLSAgICAnZ2V0
TmV4dERlc2NlbmRhbnRJRCguLi4pOiBSZWFjdCBoYXMgbWFkZSBhbiBpbnZhbGlkIGFzc3VtcHRp
b24gYWJvdXQgJyArCi0gICAgJ3RoZSBET00gaGllcmFyY2h5LiBFeHBlY3RlZCBgJXNgIHRvIGJl
IGFuIGFuY2VzdG9yIG9mIGAlc2AuJywKLSAgICBhbmNlc3RvcklELAotICAgIGRlc3RpbmF0aW9u
SUQKLSAgKTsKLSAgaWYgKGFuY2VzdG9ySUQgPT09IGRlc3RpbmF0aW9uSUQpIHsKLSAgICByZXR1
cm4gYW5jZXN0b3JJRDsKLSAgfQotICAvLyBTa2lwIG92ZXIgdGhlIGFuY2VzdG9yIGFuZCB0aGUg
aW1tZWRpYXRlIHNlcGFyYXRvci4gVHJhdmVyc2UgdW50aWwgd2UgaGl0Ci0gIC8vIGFub3RoZXIg
c2VwYXJhdG9yIG9yIHdlIHJlYWNoIHRoZSBlbmQgb2YgYGRlc3RpbmF0aW9uSURgLgotICB2YXIg
c3RhcnQgPSBhbmNlc3RvcklELmxlbmd0aCArIFNFUEFSQVRPUl9MRU5HVEg7Ci0gIGZvciAodmFy
IGkgPSBzdGFydDsgaSA8IGRlc3RpbmF0aW9uSUQubGVuZ3RoOyBpKyspIHsKLSAgICBpZiAoaXNC
b3VuZGFyeShkZXN0aW5hdGlvbklELCBpKSkgewotICAgICAgYnJlYWs7Ci0gICAgfQotICB9Ci0g
IHJldHVybiBkZXN0aW5hdGlvbklELnN1YnN0cigwLCBpKTsKLX0KLQotLyoqCi0gKiBHZXRzIHRo
ZSBuZWFyZXN0IGNvbW1vbiBhbmNlc3RvciBJRCBvZiB0d28gSURzLgotICoKLSAqIFVzaW5nIHRo
aXMgSUQgc2NoZW1lLCB0aGUgbmVhcmVzdCBjb21tb24gYW5jZXN0b3IgSUQgaXMgdGhlIGxvbmdl
c3QgY29tbW9uCi0gKiBwcmVmaXggb2YgdGhlIHR3byBJRHMgdGhhdCBpbW1lZGlhdGVseSBwcmVj
ZWRlZCBhICJtYXJrZXIiIGluIGJvdGggc3RyaW5ncy4KLSAqCi0gKiBAcGFyYW0ge3N0cmluZ30g
b25lSUQKLSAqIEBwYXJhbSB7c3RyaW5nfSB0d29JRAotICogQHJldHVybiB7c3RyaW5nfSBOZWFy
ZXN0IGNvbW1vbiBhbmNlc3RvciBJRCwgb3IgdGhlIGVtcHR5IHN0cmluZyBpZiBub25lLgotICog
QHByaXZhdGUKLSAqLwotZnVuY3Rpb24gZ2V0Rmlyc3RDb21tb25BbmNlc3RvcklEKG9uZUlELCB0
d29JRCkgewotICB2YXIgbWluTGVuZ3RoID0gTWF0aC5taW4ob25lSUQubGVuZ3RoLCB0d29JRC5s
ZW5ndGgpOwotICBpZiAobWluTGVuZ3RoID09PSAwKSB7Ci0gICAgcmV0dXJuICcnOwotICB9Ci0g
IHZhciBsYXN0Q29tbW9uTWFya2VySW5kZXggPSAwOwotICAvLyBVc2UgYDw9YCB0byB0cmF2ZXJz
ZSB1bnRpbCB0aGUgIkVPTCIgb2YgdGhlIHNob3J0ZXIgc3RyaW5nLgotICBmb3IgKHZhciBpID0g
MDsgaSA8PSBtaW5MZW5ndGg7IGkrKykgewotICAgIGlmIChpc0JvdW5kYXJ5KG9uZUlELCBpKSAm
JiBpc0JvdW5kYXJ5KHR3b0lELCBpKSkgewotICAgICAgbGFzdENvbW1vbk1hcmtlckluZGV4ID0g
aTsKLSAgICB9IGVsc2UgaWYgKG9uZUlELmNoYXJBdChpKSAhPT0gdHdvSUQuY2hhckF0KGkpKSB7
Ci0gICAgICBicmVhazsKLSAgICB9Ci0gIH0KLSAgdmFyIGxvbmdlc3RDb21tb25JRCA9IG9uZUlE
LnN1YnN0cigwLCBsYXN0Q29tbW9uTWFya2VySW5kZXgpOwotICBpbnZhcmlhbnQoCi0gICAgaXNW
YWxpZElEKGxvbmdlc3RDb21tb25JRCksCi0gICAgJ2dldEZpcnN0Q29tbW9uQW5jZXN0b3JJRCgl
cywgJXMpOiBFeHBlY3RlZCBhIHZhbGlkIFJlYWN0IERPTSBJRDogJXMnLAotICAgIG9uZUlELAot
ICAgIHR3b0lELAotICAgIGxvbmdlc3RDb21tb25JRAotICApOwotICByZXR1cm4gbG9uZ2VzdENv
bW1vbklEOwotfQotCi0vKioKLSAqIFRyYXZlcnNlcyB0aGUgcGFyZW50IHBhdGggYmV0d2VlbiB0
d28gSURzIChlaXRoZXIgdXAgb3IgZG93bikuIFRoZSBJRHMgbXVzdAotICogbm90IGJlIHRoZSBz
YW1lLCBhbmQgdGhlcmUgbXVzdCBleGlzdCBhIHBhcmVudCBwYXRoIGJldHdlZW4gdGhlbS4KLSAq
Ci0gKiBAcGFyYW0gez9zdHJpbmd9IHN0YXJ0IElEIGF0IHdoaWNoIHRvIHN0YXJ0IHRyYXZlcnNh
bC4KLSAqIEBwYXJhbSB7P3N0cmluZ30gc3RvcCBJRCBhdCB3aGljaCB0byBlbmQgdHJhdmVyc2Fs
LgotICogQHBhcmFtIHtmdW5jdGlvbn0gY2IgQ2FsbGJhY2sgdG8gaW52b2tlIGVhY2ggSUQgd2l0
aC4KLSAqIEBwYXJhbSB7P2Jvb2xlYW59IHNraXBGaXJzdCBXaGV0aGVyIG9yIG5vdCB0byBza2lw
IHRoZSBmaXJzdCBub2RlLgotICogQHBhcmFtIHs/Ym9vbGVhbn0gc2tpcExhc3QgV2hldGhlciBv
ciBub3QgdG8gc2tpcCB0aGUgbGFzdCBub2RlLgotICogQHByaXZhdGUKLSAqLwotZnVuY3Rpb24g
dHJhdmVyc2VQYXJlbnRQYXRoKHN0YXJ0LCBzdG9wLCBjYiwgYXJnLCBza2lwRmlyc3QsIHNraXBM
YXN0KSB7Ci0gIHN0YXJ0ID0gc3RhcnQgfHwgJyc7Ci0gIHN0b3AgPSBzdG9wIHx8ICcnOwotICBp
bnZhcmlhbnQoCi0gICAgc3RhcnQgIT09IHN0b3AsCi0gICAgJ3RyYXZlcnNlUGFyZW50UGF0aCgu
Li4pOiBDYW5ub3QgdHJhdmVyc2UgZnJvbSBhbmQgdG8gdGhlIHNhbWUgSUQsIGAlc2AuJywKLSAg
ICBzdGFydAotICApOwotICB2YXIgdHJhdmVyc2VVcCA9IGlzQW5jZXN0b3JJRE9mKHN0b3AsIHN0
YXJ0KTsKLSAgaW52YXJpYW50KAotICAgIHRyYXZlcnNlVXAgfHwgaXNBbmNlc3RvcklET2Yoc3Rh
cnQsIHN0b3ApLAotICAgICd0cmF2ZXJzZVBhcmVudFBhdGgoJXMsICVzLCAuLi4pOiBDYW5ub3Qg
dHJhdmVyc2UgZnJvbSB0d28gSURzIHRoYXQgZG8gJyArCi0gICAgJ25vdCBoYXZlIGEgcGFyZW50
IHBhdGguJywKLSAgICBzdGFydCwKLSAgICBzdG9wCi0gICk7Ci0gIC8vIFRyYXZlcnNlIGZyb20g
YHN0YXJ0YCB0byBgc3RvcGAgb25lIGRlcHRoIGF0IGEgdGltZS4KLSAgdmFyIGRlcHRoID0gMDsK
LSAgdmFyIHRyYXZlcnNlID0gdHJhdmVyc2VVcCA/IGdldFBhcmVudElEIDogZ2V0TmV4dERlc2Nl
bmRhbnRJRDsKLSAgZm9yICh2YXIgaWQgPSBzdGFydDsgLyogdW50aWwgYnJlYWsgKi87IGlkID0g
dHJhdmVyc2UoaWQsIHN0b3ApKSB7Ci0gICAgaWYgKCghc2tpcEZpcnN0IHx8IGlkICE9PSBzdGFy
dCkgJiYgKCFza2lwTGFzdCB8fCBpZCAhPT0gc3RvcCkpIHsKLSAgICAgIGNiKGlkLCB0cmF2ZXJz
ZVVwLCBhcmcpOwotICAgIH0KLSAgICBpZiAoaWQgPT09IHN0b3ApIHsKLSAgICAgIC8vIE9ubHkg
YnJlYWsgLy9hZnRlci8vIHZpc2l0aW5nIGBzdG9wYC4KLSAgICAgIGJyZWFrOwotICAgIH0KLSAg
ICBpbnZhcmlhbnQoCi0gICAgICBkZXB0aCsrIDwgTUFYX1RSRUVfREVQVEgsCi0gICAgICAndHJh
dmVyc2VQYXJlbnRQYXRoKCVzLCAlcywgLi4uKTogRGV0ZWN0ZWQgYW4gaW5maW5pdGUgbG9vcCB3
aGlsZSAnICsKLSAgICAgICd0cmF2ZXJzaW5nIHRoZSBSZWFjdCBET00gSUQgdHJlZS4gVGhpcyBt
YXkgYmUgZHVlIHRvIG1hbGZvcm1lZCBJRHM6ICVzJywKLSAgICAgIHN0YXJ0LCBzdG9wCi0gICAg
KTsKLSAgfQotfQotCi0vKioKLSAqIE1hbmFnZXMgdGhlIElEcyBhc3NpZ25lZCB0byBET00gcmVw
cmVzZW50YXRpb25zIG9mIFJlYWN0IGNvbXBvbmVudHMuIFRoaXMKLSAqIHVzZXMgYSBzcGVjaWZp
YyBzY2hlbWUgaW4gb3JkZXIgdG8gdHJhdmVyc2UgdGhlIERPTSBlZmZpY2llbnRseSAoZS5nLiBp
bgotICogb3JkZXIgdG8gc2ltdWxhdGUgZXZlbnRzKS4KLSAqCi0gKiBAaW50ZXJuYWwKLSAqLwot
dmFyIFJlYWN0SW5zdGFuY2VIYW5kbGVzID0gewotCi0gIHNlcGFyYXRvcjogU0VQQVJBVE9SLAot
Ci0gIGNyZWF0ZVJlYWN0Um9vdElEOiBmdW5jdGlvbigpIHsKLSAgICByZXR1cm4gZ2V0UmVhY3RS
b290SURTdHJpbmcoCi0gICAgICBNYXRoLmNlaWwoTWF0aC5yYW5kb20oKSAqIEdMT0JBTF9NT1VO
VF9QT0lOVF9NQVgpCi0gICAgKTsKLSAgfSwKLQotICAvKioKLSAgICogVHJ1ZSBpZiB0aGUgc3Vw
cGxpZWQgYG5vZGVgIGlzIHJlbmRlcmVkIGJ5IFJlYWN0LgotICAgKgotICAgKiBAcGFyYW0geyp9
IG5vZGUgRE9NIEVsZW1lbnQgdG8gY2hlY2suCi0gICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUg
aWYgdGhlIERPTSBFbGVtZW50IGFwcGVhcnMgdG8gYmUgcmVuZGVyZWQgYnkgUmVhY3QuCi0gICAq
IEBpbnRlcm5hbAotICAgKi8KLSAgaXNSZW5kZXJlZEJ5UmVhY3Q6IGZ1bmN0aW9uKG5vZGUpIHsK
LSAgICBpZiAobm9kZS5ub2RlVHlwZSAhPT0gMSkgewotICAgICAgLy8gTm90IGEgRE9NRWxlbWVu
dCwgdGhlcmVmb3JlIG5vdCBhIFJlYWN0IGNvbXBvbmVudAotICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KLSAgICB2YXIgaWQgPSBSZWFjdElELmdldElEKG5vZGUpOwotICAgIHJldHVybiBpZCA/
IGlkLmNoYXJBdCgwKSA9PT0gU0VQQVJBVE9SIDogZmFsc2U7Ci0gIH0sCi0KLSAgLyoqCi0gICAq
IFRyYXZlcnNlcyB1cCB0aGUgYW5jZXN0b3JzIG9mIHRoZSBzdXBwbGllZCBub2RlIHRvIGZpbmQg
YSBub2RlIHRoYXQgaXMgYQotICAgKiBET00gcmVwcmVzZW50YXRpb24gb2YgYSBSZWFjdCBjb21w
b25lbnQuCi0gICAqCi0gICAqIEBwYXJhbSB7Kn0gbm9kZQotICAgKiBAcmV0dXJuIHs/RE9NRXZl
bnRUYXJnZXR9Ci0gICAqIEBpbnRlcm5hbAotICAgKi8KLSAgZ2V0Rmlyc3RSZWFjdERPTTogZnVu
Y3Rpb24obm9kZSkgewotICAgIHZhciBjdXJyZW50ID0gbm9kZTsKLSAgICB3aGlsZSAoY3VycmVu
dCAmJiBjdXJyZW50LnBhcmVudE5vZGUgIT09IGN1cnJlbnQpIHsKLSAgICAgIGlmIChSZWFjdElu
c3RhbmNlSGFuZGxlcy5pc1JlbmRlcmVkQnlSZWFjdChjdXJyZW50KSkgewotICAgICAgICByZXR1
cm4gY3VycmVudDsKLSAgICAgIH0KLSAgICAgIGN1cnJlbnQgPSBjdXJyZW50LnBhcmVudE5vZGU7
Ci0gICAgfQotICAgIHJldHVybiBudWxsOwotICB9LAotCi0gIC8qKgotICAgKiBGaW5kcyBhIG5v
ZGUgd2l0aCB0aGUgc3VwcGxpZWQgYGlkYCBpbnNpZGUgb2YgdGhlIHN1cHBsaWVkIGBhbmNlc3Rv
ck5vZGVgLgotICAgKiBFeHBsb2l0cyB0aGUgSUQgbmFtaW5nIHNjaGVtZSB0byBwZXJmb3JtIHRo
ZSBzZWFyY2ggcXVpY2tseS4KLSAgICoKLSAgICogQHBhcmFtIHtET01FdmVudFRhcmdldH0gYW5j
ZXN0b3JOb2RlIFNlYXJjaCBmcm9tIHRoaXMgcm9vdC4KLSAgICogQHBhcmFybSB7c3RyaW5nfSBp
ZCBJRCBvZiB0aGUgRE9NIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjb21wb25lbnQuCi0gICAqIEBy
ZXR1cm4ge0RPTUV2ZW50VGFyZ2V0fSBET00gbm9kZSB3aXRoIHRoZSBzdXBwbGllZCBgaWRgLgot
ICAgKiBAaW50ZXJuYWwKLSAgICovCi0gIGZpbmRDb21wb25lbnRSb290OiBmdW5jdGlvbihhbmNl
c3Rvck5vZGUsIGlkKSB7Ci0gICAgdmFyIGZpcnN0Q2hpbGRyZW4gPSBbYW5jZXN0b3JOb2RlLmZp
cnN0Q2hpbGRdOwotICAgIHZhciBjaGlsZEluZGV4ID0gMDsKLQotICAgIHdoaWxlIChjaGlsZElu
ZGV4IDwgZmlyc3RDaGlsZHJlbi5sZW5ndGgpIHsKLSAgICAgIHZhciBjaGlsZCA9IGZpcnN0Q2hp
bGRyZW5bY2hpbGRJbmRleCsrXTsKLSAgICAgIHdoaWxlIChjaGlsZCkgewotICAgICAgICB2YXIg
Y2hpbGRJRCA9IFJlYWN0SUQuZ2V0SUQoY2hpbGQpOwotICAgICAgICBpZiAoY2hpbGRJRCkgewot
ICAgICAgICAgIGlmIChpZCA9PT0gY2hpbGRJRCkgewotICAgICAgICAgICAgcmV0dXJuIGNoaWxk
OwotICAgICAgICAgIH0gZWxzZSBpZiAoaXNBbmNlc3RvcklET2YoY2hpbGRJRCwgaWQpKSB7Ci0g
ICAgICAgICAgICAvLyBJZiB3ZSBmaW5kIGEgY2hpbGQgd2hvc2UgSUQgaXMgYW4gYW5jZXN0b3Ig
b2YgdGhlIGdpdmVuIElELAotICAgICAgICAgICAgLy8gdGhlbiB3ZSBjYW4gYmUgc3VyZSB0aGF0
IHdlIG9ubHkgd2FudCB0byBzZWFyY2ggdGhlIHN1YnRyZWUKLSAgICAgICAgICAgIC8vIHJvb3Rl
ZCBhdCB0aGlzIGNoaWxkLCBzbyB3ZSBjYW4gdGhyb3cgb3V0IHRoZSByZXN0IG9mIHRoZQotICAg
ICAgICAgICAgLy8gc2VhcmNoIHN0YXRlLgotICAgICAgICAgICAgZmlyc3RDaGlsZHJlbi5sZW5n
dGggPSBjaGlsZEluZGV4ID0gMDsKLSAgICAgICAgICAgIGZpcnN0Q2hpbGRyZW4ucHVzaChjaGls
ZC5maXJzdENoaWxkKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAvLyBUT0RPIFRoaXMgc2hvdWxkIG5vdCBiZSBuZWNlc3NhcnkgaWYgdGhlIElE
IGhpZXJhcmNoeSBpcwotICAgICAgICAgICAgLy8gY29ycmVjdCwgYnV0IGlzIG9jY2FzaW9uYWxs
eSBuZWNlc3NhcnkgaWYgdGhlIERPTSBoYXMgYmVlbgotICAgICAgICAgICAgLy8gbW9kaWZpZWQg
aW4gdW5leHBlY3RlZCB3YXlzLgotICAgICAgICAgICAgZmlyc3RDaGlsZHJlbi5wdXNoKGNoaWxk
LmZpcnN0Q2hpbGQpOwotICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAv
LyBJZiB0aGlzIGNoaWxkIGhhZCBubyBJRCwgdGhlbiB0aGVyZSdzIGEgY2hhbmNlIHRoYXQgaXQg
d2FzCi0gICAgICAgICAgLy8gaW5qZWN0ZWQgYXV0b21hdGljYWxseSBieSB0aGUgYnJvd3Nlciwg
YXMgd2hlbiBhIGA8dGFibGU+YAotICAgICAgICAgIC8vIGVsZW1lbnQgc3Byb3V0cyBhbiBleHRy
YSBgPHRib2R5PmAgY2hpbGQgYXMgYSBzaWRlIGVmZmVjdCBvZgotICAgICAgICAgIC8vIGAuaW5u
ZXJIVE1MYCBwYXJzaW5nLiBPcHRpbWlzdGljYWxseSBjb250aW51ZSBkb3duIHRoaXMKLSAgICAg
ICAgICAvLyBicmFuY2gsIGJ1dCBub3QgYmVmb3JlIGV4YW1pbmluZyB0aGUgb3RoZXIgc2libGlu
Z3MuCi0gICAgICAgICAgZmlyc3RDaGlsZHJlbi5wdXNoKGNoaWxkLmZpcnN0Q2hpbGQpOwotICAg
ICAgICB9Ci0gICAgICAgIGNoaWxkID0gY2hpbGQubmV4dFNpYmxpbmc7Ci0gICAgICB9Ci0gICAg
fQotCi0gICAgaWYgKHRydWUpIHsKLSAgICAgIGNvbnNvbGUuZXJyb3IoCi0gICAgICAgICdFcnJv
ciB3aGlsZSBpbnZva2luZyBgZmluZENvbXBvbmVudFJvb3RgIHdpdGggdGhlIGZvbGxvd2luZyAn
ICsKLSAgICAgICAgJ2FuY2VzdG9yIG5vZGU6JywKLSAgICAgICAgYW5jZXN0b3JOb2RlCi0gICAg
ICApOwotICAgIH0KLSAgICBpbnZhcmlhbnQoCi0gICAgICBmYWxzZSwKLSAgICAgICdmaW5kQ29t
cG9uZW50Um9vdCguLi4sICVzKTogVW5hYmxlIHRvIGZpbmQgZWxlbWVudC4gVGhpcyBwcm9iYWJs
eSAnICsKLSAgICAgICdtZWFucyB0aGUgRE9NIHdhcyB1bmV4cGVjdGVkbHkgbXV0YXRlZCAoZS5n
LiBieSB0aGUgYnJvd3NlcikuJywKLSAgICAgIGlkLAotICAgICAgUmVhY3RJRC5nZXRJRChhbmNl
c3Rvck5vZGUpCi0gICAgKTsKLSAgfSwKLQotICAvKioKLSAgICogR2V0cyB0aGUgRE9NIElEIG9m
IHRoZSBSZWFjdCBjb21wb25lbnQgdGhhdCBpcyB0aGUgcm9vdCBvZiB0aGUgdHJlZSB0aGF0Ci0g
ICAqIGNvbnRhaW5zIHRoZSBSZWFjdCBjb21wb25lbnQgd2l0aCB0aGUgc3VwcGxpZWQgRE9NIElE
LgotICAgKgotICAgKiBAcGFyYW0ge3N0cmluZ30gaWQgRE9NIElEIG9mIGEgUmVhY3QgY29tcG9u
ZW50LgotICAgKiBAcmV0dXJuIHs/c3RyaW5nfSBET00gSUQgb2YgdGhlIFJlYWN0IGNvbXBvbmVu
dCB0aGF0IGlzIHRoZSByb290LgotICAgKiBAaW50ZXJuYWwKLSAgICovCi0gIGdldFJlYWN0Um9v
dElERnJvbU5vZGVJRDogZnVuY3Rpb24oaWQpIHsKLSAgICB2YXIgcmVnZXhSZXN1bHQgPSAvXC5y
XFtbXlxdXStcXS8uZXhlYyhpZCk7Ci0gICAgcmV0dXJuIHJlZ2V4UmVzdWx0ICYmIHJlZ2V4UmVz
dWx0WzBdOwotICB9LAotCi0gIC8qKgotICAgKiBUcmF2ZXJzZXMgdGhlIElEIGhpZXJhcmNoeSBh
bmQgaW52b2tlcyB0aGUgc3VwcGxpZWQgYGNiYCBvbiBhbnkgSURzIHRoYXQKLSAgICogc2hvdWxk
IHdvdWxkIHJlY2VpdmUgYSBgbW91c2VFbnRlcmAgb3IgYG1vdXNlTGVhdmVgIGV2ZW50LgotICAg
KgotICAgKiBOT1RFOiBEb2VzIG5vdCBpbnZva2UgdGhlIGNhbGxiYWNrIG9uIHRoZSBuZWFyZXN0
IGNvbW1vbiBhbmNlc3RvciBiZWNhdXNlCi0gICAqIG5vdGhpbmcgImVudGVyZWQiIG9yICJsZWZ0
IiB0aGF0IGVsZW1lbnQuCi0gICAqCi0gICAqIEBwYXJhbSB7c3RyaW5nfSBsZWF2ZUlEIElEIGJl
aW5nIGxlZnQuCi0gICAqIEBwYXJhbSB7c3RyaW5nfSBlbnRlcklEIElEIGJlaW5nIGVudGVyZWQu
Ci0gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNiIENhbGxiYWNrIHRvIGludm9rZSBvbiBlYWNoIGVu
dGVyZWQvbGVmdCBJRC4KLSAgICogQHBhcmFtIHsqfSB1cEFyZyBBcmd1bWVudCB0byBpbnZva2Ug
dGhlIGNhbGxiYWNrIHdpdGggb24gbGVmdCBJRHMuCi0gICAqIEBwYXJhbSB7Kn0gZG93bkFyZyBB
cmd1bWVudCB0byBpbnZva2UgdGhlIGNhbGxiYWNrIHdpdGggb24gZW50ZXJlZCBJRHMuCi0gICAq
IEBpbnRlcm5hbAotICAgKi8KLSAgdHJhdmVyc2VFbnRlckxlYXZlOiBmdW5jdGlvbihsZWF2ZUlE
LCBlbnRlcklELCBjYiwgdXBBcmcsIGRvd25BcmcpIHsKLSAgICB2YXIgYW5jZXN0b3JJRCA9IGdl
dEZpcnN0Q29tbW9uQW5jZXN0b3JJRChsZWF2ZUlELCBlbnRlcklEKTsKLSAgICBpZiAoYW5jZXN0
b3JJRCAhPT0gbGVhdmVJRCkgewotICAgICAgdHJhdmVyc2VQYXJlbnRQYXRoKGxlYXZlSUQsIGFu
Y2VzdG9ySUQsIGNiLCB1cEFyZywgZmFsc2UsIHRydWUpOwotICAgIH0KLSAgICBpZiAoYW5jZXN0
b3JJRCAhPT0gZW50ZXJJRCkgewotICAgICAgdHJhdmVyc2VQYXJlbnRQYXRoKGFuY2VzdG9ySUQs
IGVudGVySUQsIGNiLCBkb3duQXJnLCB0cnVlLCBmYWxzZSk7Ci0gICAgfQotICB9LAotCi0gIC8q
KgotICAgKiBTaW11bGF0ZXMgdGhlIHRyYXZlcnNhbCBvZiBhIHR3by1waGFzZSwgY2FwdHVyZS9i
dWJibGUgZXZlbnQgZGlzcGF0Y2guCi0gICAqCi0gICAqIE5PVEU6IFRoaXMgdHJhdmVyc2FsIGhh
cHBlbnMgb24gSURzIHdpdGhvdXQgdG91Y2hpbmcgdGhlIERPTS4KLSAgICoKLSAgICogQHBhcmFt
IHtzdHJpbmd9IHRhcmdldElEIElEIG9mIHRoZSB0YXJnZXQgbm9kZS4KLSAgICogQHBhcmFtIHtm
dW5jdGlvbn0gY2IgQ2FsbGJhY2sgdG8gaW52b2tlLgotICAgKiBAcGFyYW0geyp9IGFyZyBBcmd1
bWVudCB0byBpbnZva2UgdGhlIGNhbGxiYWNrIHdpdGguCi0gICAqIEBpbnRlcm5hbAotICAgKi8K
LSAgdHJhdmVyc2VUd29QaGFzZTogZnVuY3Rpb24odGFyZ2V0SUQsIGNiLCBhcmcpIHsKLSAgICBp
ZiAodGFyZ2V0SUQpIHsKLSAgICAgIHRyYXZlcnNlUGFyZW50UGF0aCgnJywgdGFyZ2V0SUQsIGNi
LCBhcmcsIHRydWUsIGZhbHNlKTsKLSAgICAgIHRyYXZlcnNlUGFyZW50UGF0aCh0YXJnZXRJRCwg
JycsIGNiLCBhcmcsIGZhbHNlLCB0cnVlKTsKLSAgICB9Ci0gIH0sCi0KLSAgLyoqCi0gICAqIEV4
cG9zZWQgZm9yIHVuaXQgdGVzdGluZy4KLSAgICogQHByaXZhdGUKLSAgICovCi0gIF9nZXRGaXJz
dENvbW1vbkFuY2VzdG9ySUQ6IGdldEZpcnN0Q29tbW9uQW5jZXN0b3JJRCwKLQotICAvKioKLSAg
ICogRXhwb3NlZCBmb3IgdW5pdCB0ZXN0aW5nLgotICAgKiBAcHJpdmF0ZQotICAgKi8KLSAgX2dl
dE5leHREZXNjZW5kYW50SUQ6IGdldE5leHREZXNjZW5kYW50SUQKLQotfTsKLQotbW9kdWxlLmV4
cG9ydHMgPSBSZWFjdEluc3RhbmNlSGFuZGxlczsKLQotfSx7Ii4vUmVhY3RJRCI6MzUsIi4vaW52
YXJpYW50Ijo3NX1dLDM4OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKLShmdW5j
dGlvbigpey8qKgotICogQ29weXJpZ2h0IDIwMTMgRmFjZWJvb2ssIEluYy4KLSAqCi0gKiBMaWNl
bnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2Ui
KTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0
aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBh
dAotICoKLSAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoK
LSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3Jp
dGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3Ry
aWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09O
RElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0
aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9u
cyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICoKLSAqIEBwcm92aWRl
c01vZHVsZSBSZWFjdE1vdW50Ci0gKi8KLQotInVzZSBzdHJpY3QiOwotCi12YXIgaW52YXJpYW50
ID0gcmVxdWlyZSgiLi9pbnZhcmlhbnQiKTsKLXZhciBSZWFjdEV2ZW50RW1pdHRlciA9IHJlcXVp
cmUoIi4vUmVhY3RFdmVudEVtaXR0ZXIiKTsKLXZhciBSZWFjdEluc3RhbmNlSGFuZGxlcyA9IHJl
cXVpcmUoIi4vUmVhY3RJbnN0YW5jZUhhbmRsZXMiKTsKLXZhciBSZWFjdEV2ZW50VG9wTGV2ZWxD
YWxsYmFjayA9IHJlcXVpcmUoIi4vUmVhY3RFdmVudFRvcExldmVsQ2FsbGJhY2siKTsKLXZhciBS
ZWFjdElEID0gcmVxdWlyZSgiLi9SZWFjdElEIik7Ci0KLXZhciAkID0gcmVxdWlyZSgiLi8kIik7
Ci0KLS8qKiBNYXBwaW5nIGZyb20gcmVhY3RSb290SUQgdG8gUmVhY3QgY29tcG9uZW50IGluc3Rh
bmNlLiAqLwotdmFyIGluc3RhbmNlQnlSZWFjdFJvb3RJRCA9IHt9OwotCi0vKiogTWFwcGluZyBm
cm9tIHJlYWN0Um9vdElEIHRvIGBjb250YWluZXJgIG5vZGVzLiAqLwotdmFyIGNvbnRhaW5lcnNC
eVJlYWN0Um9vdElEID0ge307Ci0KLWlmICh0cnVlKSB7Ci0gIC8qKiBfX0RFVl9fLW9ubHkgbWFw
cGluZyBmcm9tIHJlYWN0Um9vdElEIHRvIHJvb3QgZWxlbWVudHMuICovCi0gIHZhciByb290RWxl
bWVudHNCeVJlYWN0Um9vdElEID0ge307Ci19Ci0KLS8qKgotICogQHBhcmFtIHtET01FbGVtZW50
fSBjb250YWluZXIgRE9NIGVsZW1lbnQgdGhhdCBtYXkgY29udGFpbiBhIFJlYWN0IGNvbXBvbmVu
dAotICogQHJldHVybiB7Pyp9IERPTSBlbGVtZW50IHRoYXQgbWF5IGhhdmUgdGhlIHJlYWN0Um9v
dCBJRCwgb3IgbnVsbC4KLSAqLwotZnVuY3Rpb24gZ2V0UmVhY3RSb290RWxlbWVudEluQ29udGFp
bmVyKGNvbnRhaW5lcikgewotICByZXR1cm4gY29udGFpbmVyICYmIGNvbnRhaW5lci5maXJzdENo
aWxkOwotfQotCi0vKioKLSAqIEBwYXJhbSB7RE9NRWxlbWVudH0gY29udGFpbmVyIERPTSBlbGVt
ZW50IHRoYXQgbWF5IGNvbnRhaW4gYSBSZWFjdCBjb21wb25lbnQuCi0gKiBAcmV0dXJuIHs/c3Ry
aW5nfSBBICJyZWFjdFJvb3QiIElELCBpZiBhIFJlYWN0IGNvbXBvbmVudCBpcyByZW5kZXJlZC4K
LSAqLwotZnVuY3Rpb24gZ2V0UmVhY3RSb290SUQoY29udGFpbmVyKSB7Ci0gIHZhciByb290RWxl
bWVudCA9IGdldFJlYWN0Um9vdEVsZW1lbnRJbkNvbnRhaW5lcihjb250YWluZXIpOwotICByZXR1
cm4gcm9vdEVsZW1lbnQgJiYgUmVhY3RJRC5nZXRJRChyb290RWxlbWVudCk7Ci19Ci0KLS8qKgot
ICogTW91bnRpbmcgaXMgdGhlIHByb2Nlc3Mgb2YgaW5pdGlhbGl6aW5nIGEgUmVhY3QgY29tcG9u
ZW50IGJ5IGNyZWF0aW5ncyBpdHMKLSAqIHJlcHJlc2VudGF0aXZlIERPTSBlbGVtZW50cyBhbmQg
aW5zZXJ0aW5nIHRoZW0gaW50byBhIHN1cHBsaWVkIGBjb250YWluZXJgLgotICogQW55IHByaW9y
IGNvbnRlbnQgaW5zaWRlIGBjb250YWluZXJgIGlzIGRlc3Ryb3llZCBpbiB0aGUgcHJvY2Vzcy4K
LSAqCi0gKiAgIFJlYWN0TW91bnQucmVuZGVyQ29tcG9uZW50KGNvbXBvbmVudCwgJCgnY29udGFp
bmVyJykpOwotICoKLSAqICAgPGRpdiBpZD0iY29udGFpbmVyIj4gICAgICAgICAgICAgICAgICAg
PC0tIFN1cHBsaWVkIGBjb250YWluZXJgLgotICogICAgIDxkaXYgZGF0YS1yZWFjdGlkPSIuclsz
XSI+ICAgICAgICAgICA8LS0gUmVuZGVyZWQgcmVhY3RSb290IG9mIFJlYWN0Ci0gKiAgICAgICAv
LyAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQuCi0gKiAgICAg
PC9kaXY+Ci0gKiAgIDwvZGl2PgotICoKLSAqIEluc2lkZSBvZiBgY29udGFpbmVyYCwgdGhlIGZp
cnN0IGVsZW1lbnQgcmVuZGVyZWQgaXMgdGhlICJyZWFjdFJvb3QiLgotICovCi12YXIgUmVhY3RN
b3VudCA9IHsKLQotICAvKiogVGltZSBzcGVudCBnZW5lcmF0aW5nIG1hcmt1cC4gKi8KLSAgdG90
YWxJbnN0YW50aWF0aW9uVGltZTogMCwKLQotICAvKiogVGltZSBzcGVudCBpbnNlcnRpbmcgbWFy
a3VwIGludG8gdGhlIERPTS4gKi8KLSAgdG90YWxJbmplY3Rpb25UaW1lOiAwLAotCi0gIC8qKiBX
aGV0aGVyIHN1cHBvcnQgZm9yIHRvdWNoIGV2ZW50cyBzaG91bGQgYmUgaW5pdGlhbGl6ZWQuICov
Ci0gIHVzZVRvdWNoRXZlbnRzOiBmYWxzZSwKLQotICAvKioKLSAgICogVGhpcyBpcyBhIGhvb2sg
cHJvdmlkZWQgdG8gc3VwcG9ydCByZW5kZXJpbmcgUmVhY3QgY29tcG9uZW50cyB3aGlsZQotICAg
KiBlbnN1cmluZyB0aGF0IHRoZSBhcHBhcmVudCBzY3JvbGwgcG9zaXRpb24gb2YgaXRzIGBjb250
YWluZXJgIGRvZXMgbm90Ci0gICAqIGNoYW5nZS4KLSAgICoKLSAgICogQHBhcmFtIHtET01FbGVt
ZW50fSBjb250YWluZXIgVGhlIGBjb250YWluZXJgIGJlaW5nIHJlbmRlcmVkIGludG8uCi0gICAq
IEBwYXJhbSB7ZnVuY3Rpb259IHJlbmRlckNhbGxiYWNrIFRoaXMgbXVzdCBiZSBjYWxsZWQgb25j
ZSB0byBkbyB0aGUgcmVuZGVyLgotICAgKi8KLSAgc2Nyb2xsTW9uaXRvcjogZnVuY3Rpb24oY29u
dGFpbmVyLCByZW5kZXJDYWxsYmFjaykgewotICAgIHJlbmRlckNhbGxiYWNrKCk7Ci0gIH0sCi0K
LSAgLyoqCi0gICAqIEVuc3VyZXMgdGhhdCB0aGUgdG9wLWxldmVsIGV2ZW50IGRlbGVnYXRpb24g
bGlzdGVuZXIgaXMgc2V0IHVwLiBUaGlzIHdpbGwKLSAgICogYmUgaW52b2tlZCBzb21lIHRpbWUg
YmVmb3JlIHRoZSBmaXJzdCB0aW1lIGFueSBSZWFjdCBjb21wb25lbnQgaXMgcmVuZGVyZWQuCi0g
ICAqCi0gICAqIEBwYXJhbSB7b2JqZWN0fSBUb3BMZXZlbENhbGxiYWNrQ3JlYXRvcgotICAgKiBA
cHJpdmF0ZQotICAgKi8KLSAgcHJlcGFyZVRvcExldmVsRXZlbnRzOiBmdW5jdGlvbihUb3BMZXZl
bENhbGxiYWNrQ3JlYXRvcikgewotICAgIFJlYWN0RXZlbnRFbWl0dGVyLmVuc3VyZUxpc3Rlbmlu
ZygKLSAgICAgIFJlYWN0TW91bnQudXNlVG91Y2hFdmVudHMsCi0gICAgICBUb3BMZXZlbENhbGxi
YWNrQ3JlYXRvcgotICAgICk7Ci0gIH0sCi0KLSAgLyoqCi0gICAqIFRha2UgYSBjb21wb25lbnQg
dGhhdCdzIGFscmVhZHkgbW91bnRlZCBpbnRvIHRoZSBET00gYW5kIHJlcGxhY2UgaXRzIHByb3Bz
Ci0gICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IHByZXZDb21wb25lbnQgY29tcG9uZW50IGlu
c3RhbmNlIGFscmVhZHkgaW4gdGhlIERPTQotICAgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBu
ZXh0Q29tcG9uZW50IGNvbXBvbmVudCBpbnN0YW5jZSB0byByZW5kZXIKLSAgICogQHBhcmFtIHtE
T01FbGVtZW50fSBjb250YWluZXIgY29udGFpbmVyIHRvIHJlbmRlciBpbnRvCi0gICAqIEBwYXJh
bSB7P2Z1bmN0aW9ufSBjYWxsYmFjayBmdW5jdGlvbiB0cmlnZ2VyZWQgb24gY29tcGxldGlvbgot
ICAgKi8KLSAgX3VwZGF0ZVJvb3RDb21wb25lbnQ6IGZ1bmN0aW9uKAotICAgICAgcHJldkNvbXBv
bmVudCwKLSAgICAgIG5leHRDb21wb25lbnQsCi0gICAgICBjb250YWluZXIsCi0gICAgICBjYWxs
YmFjaykgewotICAgIHZhciBuZXh0UHJvcHMgPSBuZXh0Q29tcG9uZW50LnByb3BzOwotICAgIFJl
YWN0TW91bnQuc2Nyb2xsTW9uaXRvcihjb250YWluZXIsIGZ1bmN0aW9uKCkgewotICAgICAgcHJl
dkNvbXBvbmVudC5yZXBsYWNlUHJvcHMobmV4dFByb3BzLCBjYWxsYmFjayk7Ci0gICAgfSk7Ci0K
LSAgICBpZiAodHJ1ZSkgewotICAgICAgLy8gUmVjb3JkIHRoZSByb290IGVsZW1lbnQgaW4gY2Fz
ZSBpdCBsYXRlciBnZXRzIHRyYW5zcGxhbnRlZC4KLSAgICAgIHJvb3RFbGVtZW50c0J5UmVhY3RS
b290SURbZ2V0UmVhY3RSb290SUQoY29udGFpbmVyKV0gPQotICAgICAgICBnZXRSZWFjdFJvb3RF
bGVtZW50SW5Db250YWluZXIoY29udGFpbmVyKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gcHJldkNv
bXBvbmVudDsKLSAgfSwKLQotICAvKioKLSAgICogUmVnaXN0ZXIgYSBjb21wb25lbnQgaW50byB0
aGUgaW5zdGFuY2UgbWFwIGFuZCBzdGFydCB0aGUgZXZlbnRzIHN5c3RlbS4KLSAgICogQHBhcmFt
IHtSZWFjdENvbXBvbmVudH0gbmV4dENvbXBvbmVudCBjb21wb25lbnQgaW5zdGFuY2UgdG8gcmVu
ZGVyCi0gICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gY29udGFpbmVyIGNvbnRhaW5lciB0byByZW5k
ZXIgaW50bwotICAgKiBAcmV0dXJuIHtzdHJpbmd9IHJlYWN0Um9vdCBJRCBwcmVmaXgKLSAgICov
Ci0gIF9yZWdpc3RlckNvbXBvbmVudDogZnVuY3Rpb24obmV4dENvbXBvbmVudCwgY29udGFpbmVy
KSB7Ci0gICAgUmVhY3RNb3VudC5wcmVwYXJlVG9wTGV2ZWxFdmVudHMoUmVhY3RFdmVudFRvcExl
dmVsQ2FsbGJhY2spOwotCi0gICAgdmFyIHJlYWN0Um9vdElEID0gUmVhY3RNb3VudC5yZWdpc3Rl
ckNvbnRhaW5lcihjb250YWluZXIpOwotICAgIGluc3RhbmNlQnlSZWFjdFJvb3RJRFtyZWFjdFJv
b3RJRF0gPSBuZXh0Q29tcG9uZW50OwotICAgIHJldHVybiByZWFjdFJvb3RJRDsKLSAgfSwKLQot
ICAvKioKLSAgICogUmVuZGVyIGEgbmV3IGNvbXBvbmVudCBpbnRvIHRoZSBET00uCi0gICAqIEBw
YXJhbSB7UmVhY3RDb21wb25lbnR9IG5leHRDb21wb25lbnQgY29tcG9uZW50IGluc3RhbmNlIHRv
IHJlbmRlcgotICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGNvbnRhaW5lciBjb250YWluZXIgdG8g
cmVuZGVyIGludG8KLSAgICogQHBhcmFtIHtib29sZWFufSBzaG91bGRSZXVzZU1hcmt1cCBpZiB3
ZSBzaG91bGQgc2tpcCB0aGUgbWFya3VwIGluc2VydGlvbgotICAgKiBAcmV0dXJuIHtSZWFjdENv
bXBvbmVudH0gbmV4dENvbXBvbmVudAotICAgKi8KLSAgX3JlbmRlck5ld1Jvb3RDb21wb25lbnQ6
IGZ1bmN0aW9uKAotICAgICAgbmV4dENvbXBvbmVudCwKLSAgICAgIGNvbnRhaW5lciwKLSAgICAg
IHNob3VsZFJldXNlTWFya3VwKSB7Ci0gICAgdmFyIHJlYWN0Um9vdElEID0gUmVhY3RNb3VudC5f
cmVnaXN0ZXJDb21wb25lbnQobmV4dENvbXBvbmVudCwgY29udGFpbmVyKTsKLSAgICBuZXh0Q29t
cG9uZW50Lm1vdW50Q29tcG9uZW50SW50b05vZGUoCi0gICAgICByZWFjdFJvb3RJRCwKLSAgICAg
IGNvbnRhaW5lciwKLSAgICAgIHNob3VsZFJldXNlTWFya3VwCi0gICAgKTsKLQotICAgIGlmICh0
cnVlKSB7Ci0gICAgICAvLyBSZWNvcmQgdGhlIHJvb3QgZWxlbWVudCBpbiBjYXNlIGl0IGxhdGVy
IGdldHMgdHJhbnNwbGFudGVkLgotICAgICAgcm9vdEVsZW1lbnRzQnlSZWFjdFJvb3RJRFtyZWFj
dFJvb3RJRF0gPQotICAgICAgICBnZXRSZWFjdFJvb3RFbGVtZW50SW5Db250YWluZXIoY29udGFp
bmVyKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gbmV4dENvbXBvbmVudDsKLSAgfSwKLQotICAvKioK
LSAgICogUmVuZGVycyBhIFJlYWN0IGNvbXBvbmVudCBpbnRvIHRoZSBET00gaW4gdGhlIHN1cHBs
aWVkIGBjb250YWluZXJgLgotICAgKgotICAgKiBJZiB0aGUgUmVhY3QgY29tcG9uZW50IHdhcyBw
cmV2aW91c2x5IHJlbmRlcmVkIGludG8gYGNvbnRhaW5lcmAsIHRoaXMgd2lsbAotICAgKiBwZXJm
b3JtIGFuIHVwZGF0ZSBvbiBpdCBhbmQgb25seSBtdXRhdGUgdGhlIERPTSBhcyBuZWNlc3Nhcnkg
dG8gcmVmbGVjdCB0aGUKLSAgICogbGF0ZXN0IFJlYWN0IGNvbXBvbmVudC4KLSAgICoKLSAgICog
QHBhcmFtIHtSZWFjdENvbXBvbmVudH0gbmV4dENvbXBvbmVudCBDb21wb25lbnQgaW5zdGFuY2Ug
dG8gcmVuZGVyLgotICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGNvbnRhaW5lciBET00gZWxlbWVu
dCB0byByZW5kZXIgaW50by4KLSAgICogQHBhcmFtIHs/ZnVuY3Rpb259IGNhbGxiYWNrIGZ1bmN0
aW9uIHRyaWdnZXJlZCBvbiBjb21wbGV0aW9uCi0gICAqIEByZXR1cm4ge1JlYWN0Q29tcG9uZW50
fSBDb21wb25lbnQgaW5zdGFuY2UgcmVuZGVyZWQgaW4gYGNvbnRhaW5lcmAuCi0gICAqLwotICBy
ZW5kZXJDb21wb25lbnQ6IGZ1bmN0aW9uKG5leHRDb21wb25lbnQsIGNvbnRhaW5lciwgY2FsbGJh
Y2spIHsKLSAgICB2YXIgcmVnaXN0ZXJlZENvbXBvbmVudCA9IGluc3RhbmNlQnlSZWFjdFJvb3RJ
RFtnZXRSZWFjdFJvb3RJRChjb250YWluZXIpXTsKLQotICAgIGlmIChyZWdpc3RlcmVkQ29tcG9u
ZW50KSB7Ci0gICAgICBpZiAocmVnaXN0ZXJlZENvbXBvbmVudC5jb25zdHJ1Y3RvciA9PT0gbmV4
dENvbXBvbmVudC5jb25zdHJ1Y3RvcikgewotICAgICAgICByZXR1cm4gUmVhY3RNb3VudC5fdXBk
YXRlUm9vdENvbXBvbmVudCgKLSAgICAgICAgICByZWdpc3RlcmVkQ29tcG9uZW50LAotICAgICAg
ICAgIG5leHRDb21wb25lbnQsCi0gICAgICAgICAgY29udGFpbmVyLAotICAgICAgICAgIGNhbGxi
YWNrCi0gICAgICAgICk7Ci0gICAgICB9IGVsc2UgewotICAgICAgICBSZWFjdE1vdW50LnVubW91
bnRBbmRSZWxlYXNlUmVhY3RSb290Tm9kZShjb250YWluZXIpOwotICAgICAgfQotICAgIH0KLQot
ICAgIHZhciByZWFjdFJvb3RFbGVtZW50ID0gZ2V0UmVhY3RSb290RWxlbWVudEluQ29udGFpbmVy
KGNvbnRhaW5lcik7Ci0gICAgdmFyIGNvbnRhaW5lckhhc1JlYWN0TWFya3VwID0KLSAgICAgIHJl
YWN0Um9vdEVsZW1lbnQgJiYKLSAgICAgICAgUmVhY3RJbnN0YW5jZUhhbmRsZXMuaXNSZW5kZXJl
ZEJ5UmVhY3QocmVhY3RSb290RWxlbWVudCk7Ci0KLSAgICB2YXIgc2hvdWxkUmV1c2VNYXJrdXAg
PSBjb250YWluZXJIYXNSZWFjdE1hcmt1cCAmJiAhcmVnaXN0ZXJlZENvbXBvbmVudDsKLQotICAg
IHZhciBjb21wb25lbnQgPSBSZWFjdE1vdW50Ll9yZW5kZXJOZXdSb290Q29tcG9uZW50KAotICAg
ICAgbmV4dENvbXBvbmVudCwKLSAgICAgIGNvbnRhaW5lciwKLSAgICAgIHNob3VsZFJldXNlTWFy
a3VwCi0gICAgKTsKLSAgICBjYWxsYmFjayAmJiBjYWxsYmFjaygpOwotICAgIHJldHVybiBjb21w
b25lbnQ7Ci0gIH0sCi0KLSAgLyoqCi0gICAqIENvbnN0cnVjdHMgYSBjb21wb25lbnQgaW5zdGFu
Y2Ugb2YgYGNvbnN0cnVjdG9yYCB3aXRoIGBpbml0aWFsUHJvcHNgIGFuZAotICAgKiByZW5kZXJz
IGl0IGludG8gdGhlIHN1cHBsaWVkIGBjb250YWluZXJgLgotICAgKgotICAgKiBAcGFyYW0ge2Z1
bmN0aW9ufSBjb25zdHJ1Y3RvciBSZWFjdCBjb21wb25lbnQgY29uc3RydWN0b3IuCi0gICAqIEBw
YXJhbSB7P29iamVjdH0gcHJvcHMgSW5pdGlhbCBwcm9wcyBvZiB0aGUgY29tcG9uZW50IGluc3Rh
bmNlLgotICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGNvbnRhaW5lciBET00gZWxlbWVudCB0byBy
ZW5kZXIgaW50by4KLSAgICogQHJldHVybiB7UmVhY3RDb21wb25lbnR9IENvbXBvbmVudCBpbnN0
YW5jZSByZW5kZXJlZCBpbiBgY29udGFpbmVyYC4KLSAgICovCi0gIGNvbnN0cnVjdEFuZFJlbmRl
ckNvbXBvbmVudDogZnVuY3Rpb24oY29uc3RydWN0b3IsIHByb3BzLCBjb250YWluZXIpIHsKLSAg
ICByZXR1cm4gUmVhY3RNb3VudC5yZW5kZXJDb21wb25lbnQoY29uc3RydWN0b3IocHJvcHMpLCBj
b250YWluZXIpOwotICB9LAotCi0gIC8qKgotICAgKiBDb25zdHJ1Y3RzIGEgY29tcG9uZW50IGlu
c3RhbmNlIG9mIGBjb25zdHJ1Y3RvcmAgd2l0aCBgaW5pdGlhbFByb3BzYCBhbmQKLSAgICogcmVu
ZGVycyBpdCBpbnRvIGEgY29udGFpbmVyIG5vZGUgaWRlbnRpZmllZCBieSBzdXBwbGllZCBgaWRg
LgotICAgKgotICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBjb21wb25lbnRDb25zdHJ1Y3RvciBSZWFj
dCBjb21wb25lbnQgY29uc3RydWN0b3IKLSAgICogQHBhcmFtIHs/b2JqZWN0fSBwcm9wcyBJbml0
aWFsIHByb3BzIG9mIHRoZSBjb21wb25lbnQgaW5zdGFuY2UuCi0gICAqIEBwYXJhbSB7c3RyaW5n
fSBpZCBJRCBvZiB0aGUgRE9NIGVsZW1lbnQgdG8gcmVuZGVyIGludG8uCi0gICAqIEByZXR1cm4g
e1JlYWN0Q29tcG9uZW50fSBDb21wb25lbnQgaW5zdGFuY2UgcmVuZGVyZWQgaW4gdGhlIGNvbnRh
aW5lciBub2RlLgotICAgKi8KLSAgY29uc3RydWN0QW5kUmVuZGVyQ29tcG9uZW50QnlJRDogZnVu
Y3Rpb24oY29uc3RydWN0b3IsIHByb3BzLCBpZCkgewotICAgIHJldHVybiBSZWFjdE1vdW50LmNv
bnN0cnVjdEFuZFJlbmRlckNvbXBvbmVudChjb25zdHJ1Y3RvciwgcHJvcHMsICQoaWQpKTsKLSAg
fSwKLQotICAvKioKLSAgICogUmVnaXN0ZXJzIGEgY29udGFpbmVyIG5vZGUgaW50byB3aGljaCBS
ZWFjdCBjb21wb25lbnRzIHdpbGwgYmUgcmVuZGVyZWQuCi0gICAqIFRoaXMgYWxzbyBjcmVhdGVz
IHRoZSAicmVhdFJvb3QiIElEIHRoYXQgd2lsbCBiZSBhc3NpZ25lZCB0byB0aGUgZWxlbWVudAot
ICAgKiByZW5kZXJlZCB3aXRoaW4uCi0gICAqCi0gICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gY29u
dGFpbmVyIERPTSBlbGVtZW50IHRvIHJlZ2lzdGVyIGFzIGEgY29udGFpbmVyLgotICAgKiBAcmV0
dXJuIHtzdHJpbmd9IFRoZSAicmVhY3RSb290IiBJRCBvZiBlbGVtZW50cyByZW5kZXJlZCB3aXRo
aW4uCi0gICAqLwotICByZWdpc3RlckNvbnRhaW5lcjogZnVuY3Rpb24oY29udGFpbmVyKSB7Ci0g
ICAgdmFyIHJlYWN0Um9vdElEID0gZ2V0UmVhY3RSb290SUQoY29udGFpbmVyKTsKLSAgICBpZiAo
cmVhY3RSb290SUQpIHsKLSAgICAgIC8vIElmIG9uZSBleGlzdHMsIG1ha2Ugc3VyZSBpdCBpcyBh
IHZhbGlkICJyZWFjdFJvb3QiIElELgotICAgICAgcmVhY3RSb290SUQgPSBSZWFjdEluc3RhbmNl
SGFuZGxlcy5nZXRSZWFjdFJvb3RJREZyb21Ob2RlSUQocmVhY3RSb290SUQpOwotICAgIH0KLSAg
ICBpZiAoIXJlYWN0Um9vdElEKSB7Ci0gICAgICAvLyBObyB2YWxpZCAicmVhY3RSb290IiBJRCBm
b3VuZCwgY3JlYXRlIG9uZS4KLSAgICAgIHJlYWN0Um9vdElEID0gUmVhY3RJbnN0YW5jZUhhbmRs
ZXMuY3JlYXRlUmVhY3RSb290SUQoKTsKLSAgICB9Ci0gICAgY29udGFpbmVyc0J5UmVhY3RSb290
SURbcmVhY3RSb290SURdID0gY29udGFpbmVyOwotICAgIHJldHVybiByZWFjdFJvb3RJRDsKLSAg
fSwKLQotICAvKioKLSAgICogVW5tb3VudHMgYW5kIGRlc3Ryb3lzIHRoZSBSZWFjdCBjb21wb25l
bnQgcmVuZGVyZWQgaW4gdGhlIGBjb250YWluZXJgLgotICAgKgotICAgKiBAcGFyYW0ge0RPTUVs
ZW1lbnR9IGNvbnRhaW5lciBET00gZWxlbWVudCBjb250YWluaW5nIGEgUmVhY3QgY29tcG9uZW50
LgotICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIGEgY29tcG9uZW50IHdhcyBmb3VuZCBp
biBhbmQgdW5tb3VudGVkIGZyb20KLSAgICogICAgICAgICAgICAgICAgICAgYGNvbnRhaW5lcmAK
LSAgICovCi0gIHVubW91bnRBbmRSZWxlYXNlUmVhY3RSb290Tm9kZTogZnVuY3Rpb24oY29udGFp
bmVyKSB7Ci0gICAgdmFyIHJlYWN0Um9vdElEID0gZ2V0UmVhY3RSb290SUQoY29udGFpbmVyKTsK
LSAgICB2YXIgY29tcG9uZW50ID0gaW5zdGFuY2VCeVJlYWN0Um9vdElEW3JlYWN0Um9vdElEXTsK
LSAgICBpZiAoIWNvbXBvbmVudCkgewotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBj
b21wb25lbnQudW5tb3VudENvbXBvbmVudEZyb21Ob2RlKGNvbnRhaW5lcik7Ci0gICAgZGVsZXRl
IGluc3RhbmNlQnlSZWFjdFJvb3RJRFtyZWFjdFJvb3RJRF07Ci0gICAgZGVsZXRlIGNvbnRhaW5l
cnNCeVJlYWN0Um9vdElEW3JlYWN0Um9vdElEXTsKLSAgICBpZiAodHJ1ZSkgewotICAgICAgZGVs
ZXRlIHJvb3RFbGVtZW50c0J5UmVhY3RSb290SURbcmVhY3RSb290SURdOwotICAgIH0KLSAgICBy
ZXR1cm4gdHJ1ZTsKLSAgfSwKLQotICAvKioKLSAgICogRmluZHMgdGhlIGNvbnRhaW5lciBET00g
ZWxlbWVudCB0aGF0IGNvbnRhaW5zIFJlYWN0IGNvbXBvbmVudCB0byB3aGljaCB0aGUKLSAgICog
c3VwcGxpZWQgRE9NIGBpZGAgYmVsb25ncy4KLSAgICoKLSAgICogQHBhcmFtIHtzdHJpbmd9IGlk
IFRoZSBJRCBvZiBhbiBlbGVtZW50IHJlbmRlcmVkIGJ5IGEgUmVhY3QgY29tcG9uZW50LgotICAg
KiBAcmV0dXJuIHs/RE9NRWxlbWVudH0gRE9NIGVsZW1lbnQgdGhhdCBjb250YWlucyB0aGUgYGlk
YC4KLSAgICovCi0gIGZpbmRSZWFjdENvbnRhaW5lckZvcklEOiBmdW5jdGlvbihpZCkgewotICAg
IHZhciByZWFjdFJvb3RJRCA9IFJlYWN0SW5zdGFuY2VIYW5kbGVzLmdldFJlYWN0Um9vdElERnJv
bU5vZGVJRChpZCk7Ci0gICAgdmFyIGNvbnRhaW5lciA9IGNvbnRhaW5lcnNCeVJlYWN0Um9vdElE
W3JlYWN0Um9vdElEXTsKLQotICAgIGlmICh0cnVlKSB7Ci0gICAgICB2YXIgcm9vdEVsZW1lbnQg
PSByb290RWxlbWVudHNCeVJlYWN0Um9vdElEW3JlYWN0Um9vdElEXTsKLSAgICAgIGlmIChyb290
RWxlbWVudCAmJiByb290RWxlbWVudC5wYXJlbnROb2RlICE9PSBjb250YWluZXIpIHsKLSAgICAg
ICAgaW52YXJpYW50KAotICAgICAgICAgIC8vIENhbGwgcmF3R2V0SUQgaGVyZSBiZWNhdXNlIGdl
dElEIGNhbGxzIGlzVmFsaWQgd2hpY2ggY2FsbHMKLSAgICAgICAgICAvLyBmaW5kUmVhY3RDb250
YWluZXJGb3JJRCAodGhpcyBmdW5jdGlvbikuCi0gICAgICAgICAgUmVhY3RJRC5yYXdHZXRJRChy
b290RWxlbWVudCkgPT09IHJlYWN0Um9vdElELAotICAgICAgICAgICdSZWFjdE1vdW50OiBSb290
IGVsZW1lbnQgSUQgZGlmZmVyZWQgZnJvbSByZWFjdFJvb3RJRC4nCi0gICAgICAgICk7Ci0KLSAg
ICAgICAgdmFyIGNvbnRhaW5lckNoaWxkID0gY29udGFpbmVyLmZpcnN0Q2hpbGQ7Ci0gICAgICAg
IGlmIChjb250YWluZXJDaGlsZCAmJgotICAgICAgICAgICAgcmVhY3RSb290SUQgPT09IFJlYWN0
SUQucmF3R2V0SUQoY29udGFpbmVyQ2hpbGQpKSB7Ci0gICAgICAgICAgLy8gSWYgdGhlIGNvbnRh
aW5lciBoYXMgYSBuZXcgY2hpbGQgd2l0aCB0aGUgc2FtZSBJRCBhcyB0aGUgb2xkCi0gICAgICAg
ICAgLy8gcm9vdCBlbGVtZW50LCB0aGVuIHJvb3RFbGVtZW50c0J5UmVhY3RSb290SURbcmVhY3RS
b290SURdIGlzCi0gICAgICAgICAgLy8ganVzdCBzdGFsZSBhbmQgbmVlZHMgdG8gYmUgdXBkYXRl
ZC4gVGhlIGNhc2UgdGhhdCBkZXNlcnZlcyBhCi0gICAgICAgICAgLy8gd2FybmluZyBpcyB3aGVu
IHRoZSBjb250YWluZXIgaXMgZW1wdHkuCi0gICAgICAgICAgcm9vdEVsZW1lbnRzQnlSZWFjdFJv
b3RJRFtyZWFjdFJvb3RJRF0gPSBjb250YWluZXJDaGlsZDsKLSAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICBjb25zb2xlLndhcm4oCi0gICAgICAgICAgICAnUmVhY3RNb3VudDogUm9vdCBlbGVt
ZW50IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBpdHMgb3JpZ2luYWwgJyArCi0gICAgICAgICAgICAn
Y29udGFpbmVyLiBOZXcgY29udGFpbmVyOicsIHJvb3RFbGVtZW50LnBhcmVudE5vZGUKLSAgICAg
ICAgICApOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIGNvbnRhaW5l
cjsKLSAgfSwKLQotICAvKioKLSAgICogRmluZHMgYW4gZWxlbWVudCByZW5kZXJlZCBieSBSZWFj
dCB3aXRoIHRoZSBzdXBwbGllZCBJRC4KLSAgICoKLSAgICogQHBhcmFtIHtzdHJpbmd9IGlkIElE
IG9mIGEgRE9NIG5vZGUgaW4gdGhlIFJlYWN0IGNvbXBvbmVudC4KLSAgICogQHJldHVybiB7RE9N
RWxlbWVudH0gUm9vdCBET00gbm9kZSBvZiB0aGUgUmVhY3QgY29tcG9uZW50LgotICAgKi8KLSAg
ZmluZFJlYWN0Tm9kZUJ5SUQ6IGZ1bmN0aW9uKGlkKSB7Ci0gICAgdmFyIHJlYWN0Um9vdCA9IFJl
YWN0TW91bnQuZmluZFJlYWN0Q29udGFpbmVyRm9ySUQoaWQpOwotICAgIHJldHVybiBSZWFjdElu
c3RhbmNlSGFuZGxlcy5maW5kQ29tcG9uZW50Um9vdChyZWFjdFJvb3QsIGlkKTsKLSAgfQotCi19
OwotCi1tb2R1bGUuZXhwb3J0cyA9IFJlYWN0TW91bnQ7Ci0KLX0pKCkKLX0seyIuLyQiOjEsIi4v
UmVhY3RFdmVudEVtaXR0ZXIiOjMzLCIuL1JlYWN0RXZlbnRUb3BMZXZlbENhbGxiYWNrIjozNCwi
Li9SZWFjdElEIjozNSwiLi9SZWFjdEluc3RhbmNlSGFuZGxlcyI6MzcsIi4vaW52YXJpYW50Ijo3
NX1dLDM5OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKLShmdW5jdGlvbigpey8q
KgotICogQ29weXJpZ2h0IDIwMTMgRmFjZWJvb2ssIEluYy4KLSAqCi0gKiBMaWNlbnNlZCB1bmRl
ciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlv
dSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGlj
ZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAq
IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVz
cyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29m
dHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9u
IGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBP
RiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5z
ZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAq
IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICoKLSAqIEBwcm92aWRlc01vZHVsZSBS
ZWFjdE11bHRpQ2hpbGQKLSAqLwotCi0idXNlIHN0cmljdCI7Ci0KLXZhciBSZWFjdENvbXBvbmVu
dCA9IHJlcXVpcmUoIi4vUmVhY3RDb21wb25lbnQiKTsKLQotLyoqCi0gKiBHaXZlbiBhIGBjdXJD
aGlsZGAgYW5kIGBuZXdDaGlsZGAsIGRldGVybWluZXMgaWYgYGN1ckNoaWxkYCBzaG91bGQgYmUg
bWFuYWdlZAotICogYXMgaXQgZXhpc3RzLCBhcyBvcHBvc2VkIHRvIGJlaW5nIGRlc3Ryb3llZCBh
bmQvb3IgcmVwbGFjZWQuCi0gKiBAcGFyYW0gez9SZWFjdENvbXBvbmVudH0gY3VyQ2hpbGQKLSAq
IEBwYXJhbSB7P1JlYWN0Q29tcG9uZW50fSBuZXdDaGlsZAotICogQHJldHVybiB7IWJvb2xlYW59
IFdoZXRoZXIgb3Igbm90IGBjdXJDaGlsZGAgc2hvdWxkIGJlIHVwZGF0ZWQgd2l0aAotICogYG5l
d0NoaWxkYCdzIHByb3BzCi0gKi8KLWZ1bmN0aW9uIHNob3VsZE1hbmFnZUV4aXN0aW5nKGN1ckNo
aWxkLCBuZXdDaGlsZCkgewotICByZXR1cm4gY3VyQ2hpbGQgJiYgbmV3Q2hpbGQgJiYgY3VyQ2hp
bGQuY29uc3RydWN0b3IgPT09IG5ld0NoaWxkLmNvbnN0cnVjdG9yOwotfQotCi0vKioKLSAqIGBS
ZWFjdE11bHRpQ2hpbGRgIHByb3ZpZGVzIGNvbW1vbiBmdW5jdGlvbmFsaXR5IGZvciBjb21wb25l
bnRzIHRoYXQgaGF2ZQotICogbXVsdGlwbGUgY2hpbGRyZW4uIFN0YW5kYXJkIGBSZWFjdENvbXBv
c2l0ZUNvbXBvbmVudGBzIGRvIG5vdCBjdXJyZW50bHkgaGF2ZQotICogbXVsdGlwbGUgY2hpbGRy
ZW4uIGBSZWFjdE5hdGl2ZUNvbXBvbmVudGBzIGRvLCBob3dldmVyLiBPdGhlciBzcGVjaWFsbHkK
LSAqIHJlY29uY2lsZWQgY29tcG9uZW50cyB3aWxsIGFsc28gaGF2ZSBtdWx0aXBsZSBjaGlsZHJl
bi4gQ29udGFpbnMgdGhyZWUKLSAqIGludGVybmFsbHkgdXNlZCBwcm9wZXJ0aWVzIHRoYXQgYXJl
IHVzZWQgdG8ga2VlcCB0cmFjayBvZiBzdGF0ZSB0aHJvdWdob3V0Ci0gKiB0aGUgYHVwZGF0ZU11
bHRpQ2hpbGRgIHByb2Nlc3MuCi0gKgotICogQGNsYXNzIFJlYWN0TXVsdGlDaGlsZAotICovCi0K
LS8qKgotICogQGxlbmRzIGBSZWFjdE11bHRpQ2hpbGRNaXhpbmAuCi0gKi8KLXZhciBSZWFjdE11
bHRpQ2hpbGRNaXhpbiA9IHsKLQotICBlbnF1ZXVlTWFya3VwQXQ6IGZ1bmN0aW9uKG1hcmt1cCwg
aW5zZXJ0QXQpIHsKLSAgICB0aGlzLmRvbU9wZXJhdGlvbnMgPSB0aGlzLmRvbU9wZXJhdGlvbnMg
fHwgW107Ci0gICAgdGhpcy5kb21PcGVyYXRpb25zLnB1c2goe2luc2VydE1hcmt1cDogbWFya3Vw
LCBmaW5hbEluZGV4OiBpbnNlcnRBdH0pOwotICB9LAotCi0gIGVucXVldWVNb3ZlOiBmdW5jdGlv
bihvcmlnaW5hbEluZGV4LCBmaW5hbEluZGV4KSB7Ci0gICAgdGhpcy5kb21PcGVyYXRpb25zID0g
dGhpcy5kb21PcGVyYXRpb25zIHx8IFtdOwotICAgIHRoaXMuZG9tT3BlcmF0aW9ucy5wdXNoKHtt
b3ZlRnJvbTogb3JpZ2luYWxJbmRleCwgZmluYWxJbmRleDogZmluYWxJbmRleH0pOwotICB9LAot
Ci0gIGVucXVldWVVbm1vdW50Q2hpbGRCeU5hbWU6IGZ1bmN0aW9uKG5hbWUsIHJlbW92ZUNoaWxk
KSB7Ci0gICAgaWYgKFJlYWN0Q29tcG9uZW50LmlzVmFsaWRDb21wb25lbnQocmVtb3ZlQ2hpbGQp
KSB7Ci0gICAgICB0aGlzLmRvbU9wZXJhdGlvbnMgPSB0aGlzLmRvbU9wZXJhdGlvbnMgfHwgW107
Ci0gICAgICB0aGlzLmRvbU9wZXJhdGlvbnMucHVzaCh7cmVtb3ZlQXQ6IHJlbW92ZUNoaWxkLl9k
b21JbmRleH0pOwotICAgICAgcmVtb3ZlQ2hpbGQudW5tb3VudENvbXBvbmVudCAmJiByZW1vdmVD
aGlsZC51bm1vdW50Q29tcG9uZW50KCk7Ci0gICAgICBkZWxldGUgdGhpcy5fcmVuZGVyZWRDaGls
ZHJlbltuYW1lXTsKLSAgICB9Ci0gIH0sCi0KLSAgLyoqCi0gICAqIFByb2Nlc3MgYW55IHBlbmRp
bmcgRE9NIG9wZXJhdGlvbnMgdGhhdCBoYXZlIGJlZW4gYWNjdW11bGF0ZWQgd2hlbiB1cGRhdGlu
ZwotICAgKiB0aGUgVUkuIEJ5IGRlZmF1bHQsIHdlIGV4ZWN1dGUgdGhlIGluamVjdGVkIGBET01J
RE9wZXJhdGlvbnNgIG1vZHVsZSdzCi0gICAqIGBtYW5hZ2VDaGlsZHJlbkJ5UGFyZW50SURgIHdo
aWNoIGRvZXMgZXhlY3V0ZXMgdGhlIERPTSBvcGVyYXRpb25zIHdpdGhvdXQKLSAgICogYW55IGFu
aW1hdGlvbi4gSXQgY2FuIGJlIHVzZWQgYXMgYSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gZm9y
IHNwZWNpYWwKLSAgICogYW5pbWF0aW9uIGJhc2VkIGltcGxlbWVudGF0aW9ucy4KLSAgICoKLSAg
ICogQGFic3RyYWN0Ci0gICAqLwotICBwcm9jZXNzQ2hpbGRET01PcGVyYXRpb25zUXVldWU6IGZ1
bmN0aW9uKCkgewotICAgIGlmICh0aGlzLmRvbU9wZXJhdGlvbnMpIHsKLSAgICAgIFJlYWN0Q29t
cG9uZW50LkRPTUlET3BlcmF0aW9ucwotICAgICAgICAubWFuYWdlQ2hpbGRyZW5CeVBhcmVudElE
KHRoaXMuX3Jvb3ROb2RlSUQsIHRoaXMuZG9tT3BlcmF0aW9ucyk7Ci0gICAgICB0aGlzLmRvbU9w
ZXJhdGlvbnMgPSBudWxsOwotICAgIH0KLSAgfSwKLQotICB1bm1vdW50TXVsdGlDaGlsZDogZnVu
Y3Rpb24oKSB7Ci0gICAgdmFyIHJlbmRlcmVkQ2hpbGRyZW4gPSB0aGlzLl9yZW5kZXJlZENoaWxk
cmVuOwotICAgIGZvciAodmFyIG5hbWUgaW4gcmVuZGVyZWRDaGlsZHJlbikgewotICAgICAgaWYg
KHJlbmRlcmVkQ2hpbGRyZW4uaGFzT3duUHJvcGVydHkobmFtZSkgJiYgcmVuZGVyZWRDaGlsZHJl
bltuYW1lXSkgewotICAgICAgICB2YXIgcmVuZGVyZWRDaGlsZCA9IHJlbmRlcmVkQ2hpbGRyZW5b
bmFtZV07Ci0gICAgICAgIHJlbmRlcmVkQ2hpbGQudW5tb3VudENvbXBvbmVudCAmJiByZW5kZXJl
ZENoaWxkLnVubW91bnRDb21wb25lbnQoKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgdGhpcy5fcmVu
ZGVyZWRDaGlsZHJlbiA9IG51bGw7Ci0gIH0sCi0KLSAgLyoqCi0gICAqIEdlbmVyYXRlcyBtYXJr
dXAgZm9yIGEgY29tcG9uZW50IHRoYXQgaG9sZHMgbXVsdGlwbGUgY2hpbGRyZW4uICN0b2RvOiBB
bGxvdwotICAgKiBhbGwgYFJlYWN0TXVsdGlDaGlsZE1peGluYHMgdG8gc3VwcG9ydCBoYXZpbmcg
YXJyYXlzIG9mIGNoaWxkcmVuIHdpdGhvdXQgYQotICAgKiBjb250YWluZXIgbm9kZS4gVGhpcyBj
dXJyZW50IGltcGxlbWVudGF0aW9uIG1heSBhc3N1bWUgdGhhdCBjaGlsZHJlbiBleGlzdAotICAg
KiBhdCBkb21JbmRpY2VzIFswLCBwYXJlbnROb2RlLmxlbmd0aF0uCi0gICAqCi0gICAqIEhhcyBz
aWRlIGVmZmVjdHMgb2YgKGxpa2VseSkgY2F1c2luZyBldmVudHMgdG8gYmUgcmVnaXN0ZXJlZC4g
QWxzbywgZXZlcnkKLSAgICogY29tcG9uZW50IGluc3RhbmNlIG1heSBvbmx5IGJlIHJlbmRlcmVk
IG9uY2UuCi0gICAqCi0gICAqIEBwYXJhbSB7P09iamVjdH0gY2hpbGRyZW4gRmxhdHRlbmVkIGNo
aWxkcmVuIG9iamVjdC4KLSAgICogQHJldHVybiB7IVN0cmluZ30gVGhlIHJlbmRlcmVkIG1hcmt1
cC4KLSAgICovCi0gIG1vdW50TXVsdGlDaGlsZDogZnVuY3Rpb24oY2hpbGRyZW4sIHRyYW5zYWN0
aW9uKSB7Ci0gICAgdmFyIGFjY3VtID0gJyc7Ci0gICAgdmFyIGluZGV4ID0gMDsKLSAgICBmb3Ig
KHZhciBuYW1lIGluIGNoaWxkcmVuKSB7Ci0gICAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltuYW1l
XTsKLSAgICAgIGlmIChjaGlsZHJlbi5oYXNPd25Qcm9wZXJ0eShuYW1lKSAmJiBjaGlsZCkgewot
ICAgICAgICBhY2N1bSArPSBjaGlsZC5tb3VudENvbXBvbmVudCgKLSAgICAgICAgICB0aGlzLl9y
b290Tm9kZUlEICsgJy4nICsgbmFtZSwKLSAgICAgICAgICB0cmFuc2FjdGlvbgotICAgICAgICAp
OwotICAgICAgICBjaGlsZC5fZG9tSW5kZXggPSBpbmRleDsKLSAgICAgICAgaW5kZXgrKzsKLSAg
ICAgIH0KLSAgICB9Ci0gICAgdGhpcy5fcmVuZGVyZWRDaGlsZHJlbiA9IGNoaWxkcmVuOyAvLyBj
aGlsZHJlbiBhcmUgaW4ganVzdCB0aGUgcmlnaHQgZm9ybSEKLSAgICB0aGlzLmRvbU9wZXJhdGlv
bnMgPSBudWxsOwotICAgIHJldHVybiBhY2N1bTsKLSAgfSwKLQotICAvKioKLSAgICogUmVjb25j
aWxlcyBuZXcgY2hpbGRyZW4gd2l0aCBvbGQgY2hpbGRyZW4gaW4gdGhyZWUgcGhhc2VzLgotICAg
KgotICAgKiAtIEFkZHMgbmV3IGNvbnRlbnQgd2hpbGUgdXBkYXRpbmcgZXhpc3RpbmcgY2hpbGRy
ZW4gdGhhdCBzaG91bGQgcmVtYWluLgotICAgKiAtIFJlbW92ZSBjaGlsZHJlbiB0aGF0IGFyZSBu
byBsb25nZXIgcHJlc2VudCBpbiB0aGUgbmV4dCBjaGlsZHJlbi4KLSAgICogLSBBcyBhIHZlcnkg
bGFzdCBzdGVwLCBtb3ZlcyBleGlzdGluZyBkb20gc3RydWN0dXJlcyBhcm91bmQuCi0gICAqIC0g
KENvbW1lbnQgMSkgYGN1ckNoaWxkcmVuRE9NSW5kZXhgIGlzIHRoZSBsYXJnZXN0IGluZGV4IG9m
IHRoZSBjdXJyZW50Ci0gICAqICAgcmVuZGVyZWQgY2hpbGRyZW4gdGhhdCBhcHBlYXJzIGluIHRo
ZSBuZXh0IGNoaWxkcmVuIGFuZCBkaWQgbm90IG5lZWQgdG8KLSAgICogICBiZSAibW92ZWQiLgot
ICAgKiAtIChDb21tZW50IDIpIFRoaXMgaXMgdGhlIGtleSBpbnNpZ2h0LiBJZiBhbnkgbm9uLXJl
bW92ZWQgY2hpbGQncyBwcmV2aW91cwotICAgKiAgIGluZGV4IGlzIGxlc3MgdGhhbiBgY3VyQ2hp
bGRyZW5ET01JbmRleGAgaXQgbXVzdCBiZSBtb3ZlZC4KLSAgICoKLSAgICogQHBhcmFtIHs/T2Jq
ZWN0fSBjaGlsZHJlbiBGbGF0dGVuZWQgY2hpbGRyZW4gb2JqZWN0LgotICAgKi8KLSAgdXBkYXRl
TXVsdGlDaGlsZDogZnVuY3Rpb24obmV4dENoaWxkcmVuLCB0cmFuc2FjdGlvbikgewotICAgIGlm
ICghbmV4dENoaWxkcmVuICYmICF0aGlzLl9yZW5kZXJlZENoaWxkcmVuKSB7Ci0gICAgICByZXR1
cm47Ci0gICAgfSBlbHNlIGlmIChuZXh0Q2hpbGRyZW4gJiYgIXRoaXMuX3JlbmRlcmVkQ2hpbGRy
ZW4pIHsKLSAgICAgIHRoaXMuX3JlbmRlcmVkQ2hpbGRyZW4gPSB7fTsgLy8gbGF6aWx5IGFsbG9j
YXRlIGJhY2tpbmcgc3RvcmUgd2l0aCBub3RoaW5nCi0gICAgfSBlbHNlIGlmICghbmV4dENoaWxk
cmVuICYmIHRoaXMuX3JlbmRlcmVkQ2hpbGRyZW4pIHsKLSAgICAgIG5leHRDaGlsZHJlbiA9IHt9
OwotICAgIH0KLSAgICB2YXIgcm9vdERvbUlkRG90ID0gdGhpcy5fcm9vdE5vZGVJRCArICcuJzsK
LSAgICB2YXIgbWFya3VwQnVmZmVyID0gbnVsbDsgIC8vIEFjY3VtdWxhdGUgYWRqYWNlbnQgbmV3
IGNoaWxkcmVuIG1hcmt1cC4KLSAgICB2YXIgbnVtUGVuZGluZ0luc2VydCA9IDA7IC8vIEhvdyBt
YW55IHJvb3Qgbm9kZXMgYXJlIHdhaXRpbmcgaW4gbWFya3VwQnVmZmVyCi0gICAgdmFyIGxvb3BE
b21JbmRleCA9IDA7ICAgICAvLyBJbmRleCBvZiBsb29wIHRocm91Z2ggbmV3IGNoaWxkcmVuLgot
ICAgIHZhciBjdXJDaGlsZHJlbkRPTUluZGV4ID0gMDsgIC8vIFNlZSAoQ29tbWVudCAxKQotICAg
IGZvciAodmFyIG5hbWUgaW4gbmV4dENoaWxkcmVuKSB7Ci0gICAgICBpZiAoIW5leHRDaGlsZHJl
bi5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge2NvbnRpbnVlO30KLSAgICAgIHZhciBjdXJDaGlsZCA9
IHRoaXMuX3JlbmRlcmVkQ2hpbGRyZW5bbmFtZV07Ci0gICAgICB2YXIgbmV4dENoaWxkID0gbmV4
dENoaWxkcmVuW25hbWVdOwotICAgICAgaWYgKHNob3VsZE1hbmFnZUV4aXN0aW5nKGN1ckNoaWxk
LCBuZXh0Q2hpbGQpKSB7Ci0gICAgICAgIGlmIChtYXJrdXBCdWZmZXIpIHsKLSAgICAgICAgICB0
aGlzLmVucXVldWVNYXJrdXBBdChtYXJrdXBCdWZmZXIsIGxvb3BEb21JbmRleCAtIG51bVBlbmRp
bmdJbnNlcnQpOwotICAgICAgICAgIG1hcmt1cEJ1ZmZlciA9IG51bGw7Ci0gICAgICAgIH0KLSAg
ICAgICAgbnVtUGVuZGluZ0luc2VydCA9IDA7Ci0gICAgICAgIGlmIChjdXJDaGlsZC5fZG9tSW5k
ZXggPCBjdXJDaGlsZHJlbkRPTUluZGV4KSB7IC8vIChDb21tZW50IDIpCi0gICAgICAgICAgdGhp
cy5lbnF1ZXVlTW92ZShjdXJDaGlsZC5fZG9tSW5kZXgsIGxvb3BEb21JbmRleCk7Ci0gICAgICAg
IH0KLSAgICAgICAgY3VyQ2hpbGRyZW5ET01JbmRleCA9IE1hdGgubWF4KGN1ckNoaWxkLl9kb21J
bmRleCwgY3VyQ2hpbGRyZW5ET01JbmRleCk7Ci0gICAgICAgIGN1ckNoaWxkLnJlY2VpdmVQcm9w
cyhuZXh0Q2hpbGQucHJvcHMsIHRyYW5zYWN0aW9uKTsKLSAgICAgICAgY3VyQ2hpbGQuX2RvbUlu
ZGV4ID0gbG9vcERvbUluZGV4OwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKGN1ckNoaWxk
KSB7ICAgICAgICAgICAgICAgLy8gIXNob3VsZFVwZGF0ZSAmJiBjdXJDaGlsZCA9PiBkZWxldGUK
LSAgICAgICAgICB0aGlzLmVucXVldWVVbm1vdW50Q2hpbGRCeU5hbWUobmFtZSwgY3VyQ2hpbGQp
OwotICAgICAgICAgIGN1ckNoaWxkcmVuRE9NSW5kZXggPQotICAgICAgICAgICAgTWF0aC5tYXgo
Y3VyQ2hpbGQuX2RvbUluZGV4LCBjdXJDaGlsZHJlbkRPTUluZGV4KTsKLSAgICAgICAgfQotICAg
ICAgICBpZiAobmV4dENoaWxkKSB7ICAgICAgICAgICAgICAvLyAhc2hvdWxkVXBkYXRlICYmIG5l
eHRDaGlsZCA9PiBpbnNlcnQKLSAgICAgICAgICB0aGlzLl9yZW5kZXJlZENoaWxkcmVuW25hbWVd
ID0gbmV4dENoaWxkOwotICAgICAgICAgIHZhciBuZXh0TWFya3VwID0KLSAgICAgICAgICAgIG5l
eHRDaGlsZC5tb3VudENvbXBvbmVudChyb290RG9tSWREb3QgKyBuYW1lLCB0cmFuc2FjdGlvbik7
Ci0gICAgICAgICAgbWFya3VwQnVmZmVyID0gbWFya3VwQnVmZmVyID8gbWFya3VwQnVmZmVyICsg
bmV4dE1hcmt1cCA6IG5leHRNYXJrdXA7Ci0gICAgICAgICAgbnVtUGVuZGluZ0luc2VydCsrOwot
ICAgICAgICAgIG5leHRDaGlsZC5fZG9tSW5kZXggPSBsb29wRG9tSW5kZXg7Ci0gICAgICAgIH0K
LSAgICAgIH0KLSAgICAgIGxvb3BEb21JbmRleCA9IG5leHRDaGlsZCA/IGxvb3BEb21JbmRleCAr
IDEgOiBsb29wRG9tSW5kZXg7Ci0gICAgfQotICAgIGlmIChtYXJrdXBCdWZmZXIpIHsKLSAgICAg
IHRoaXMuZW5xdWV1ZU1hcmt1cEF0KG1hcmt1cEJ1ZmZlciwgbG9vcERvbUluZGV4IC0gbnVtUGVu
ZGluZ0luc2VydCk7Ci0gICAgfQotICAgIGZvciAodmFyIGNoaWxkTmFtZSBpbiB0aGlzLl9yZW5k
ZXJlZENoaWxkcmVuKSB7IC8vIGZyb20gb3RoZXIgZGlyZWN0aW9uCi0gICAgICBpZiAoIXRoaXMu
X3JlbmRlcmVkQ2hpbGRyZW4uaGFzT3duUHJvcGVydHkoY2hpbGROYW1lKSkgeyBjb250aW51ZTsg
fQotICAgICAgdmFyIGNoaWxkID0gdGhpcy5fcmVuZGVyZWRDaGlsZHJlbltjaGlsZE5hbWVdOwot
ICAgICAgaWYgKGNoaWxkICYmICFuZXh0Q2hpbGRyZW5bY2hpbGROYW1lXSkgewotICAgICAgICB0
aGlzLmVucXVldWVVbm1vdW50Q2hpbGRCeU5hbWUoY2hpbGROYW1lLCBjaGlsZCk7Ci0gICAgICB9
Ci0gICAgfQotICAgIHRoaXMucHJvY2Vzc0NoaWxkRE9NT3BlcmF0aW9uc1F1ZXVlKCk7Ci0gIH0K
LX07Ci0KLXZhciBSZWFjdE11bHRpQ2hpbGQgPSB7Ci0gIE1peGluOiBSZWFjdE11bHRpQ2hpbGRN
aXhpbgotfTsKLQotbW9kdWxlLmV4cG9ydHMgPSBSZWFjdE11bHRpQ2hpbGQ7Ci0KLX0pKCkKLX0s
eyIuL1JlYWN0Q29tcG9uZW50IjoyMn1dLDQwOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBv
cnRzKXsKLS8qKgotICogQ29weXJpZ2h0IDIwMTMgRmFjZWJvb2ssIEluYy4KLSAqCi0gKiBMaWNl
bnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2Ui
KTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0
aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBh
dAotICoKLSAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoK
LSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3Jp
dGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3Ry
aWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09O
RElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0
aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9u
cyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICoKLSAqIEBwcm92aWRl
c01vZHVsZSBSZWFjdE5hdGl2ZUNvbXBvbmVudAotICogQHR5cGVjaGVja3Mgc3RhdGljLW9ubHkK
LSAqLwotCi0idXNlIHN0cmljdCI7Ci0KLXZhciBDU1NQcm9wZXJ0eU9wZXJhdGlvbnMgPSByZXF1
aXJlKCIuL0NTU1Byb3BlcnR5T3BlcmF0aW9ucyIpOwotdmFyIERPTVByb3BlcnR5ID0gcmVxdWly
ZSgiLi9ET01Qcm9wZXJ0eSIpOwotdmFyIERPTVByb3BlcnR5T3BlcmF0aW9ucyA9IHJlcXVpcmUo
Ii4vRE9NUHJvcGVydHlPcGVyYXRpb25zIik7Ci12YXIgUmVhY3RDb21wb25lbnQgPSByZXF1aXJl
KCIuL1JlYWN0Q29tcG9uZW50Iik7Ci12YXIgUmVhY3RFdmVudEVtaXR0ZXIgPSByZXF1aXJlKCIu
L1JlYWN0RXZlbnRFbWl0dGVyIik7Ci12YXIgUmVhY3RNdWx0aUNoaWxkID0gcmVxdWlyZSgiLi9S
ZWFjdE11bHRpQ2hpbGQiKTsKLXZhciBSZWFjdElEID0gcmVxdWlyZSgiLi9SZWFjdElEIik7Ci0K
LXZhciBlc2NhcGVUZXh0Rm9yQnJvd3NlciA9IHJlcXVpcmUoIi4vZXNjYXBlVGV4dEZvckJyb3dz
ZXIiKTsKLXZhciBmbGF0dGVuQ2hpbGRyZW4gPSByZXF1aXJlKCIuL2ZsYXR0ZW5DaGlsZHJlbiIp
OwotdmFyIGludmFyaWFudCA9IHJlcXVpcmUoIi4vaW52YXJpYW50Iik7Ci12YXIga2V5T2YgPSBy
ZXF1aXJlKCIuL2tleU9mIik7Ci12YXIgbWVyZ2UgPSByZXF1aXJlKCIuL21lcmdlIik7Ci12YXIg
bWl4SW50byA9IHJlcXVpcmUoIi4vbWl4SW50byIpOwotCi12YXIgcHV0TGlzdGVuZXIgPSBSZWFj
dEV2ZW50RW1pdHRlci5wdXRMaXN0ZW5lcjsKLXZhciBkZWxldGVMaXN0ZW5lciA9IFJlYWN0RXZl
bnRFbWl0dGVyLmRlbGV0ZUxpc3RlbmVyOwotdmFyIHJlZ2lzdHJhdGlvbk5hbWVzID0gUmVhY3RF
dmVudEVtaXR0ZXIucmVnaXN0cmF0aW9uTmFtZXM7Ci0KLS8vIEZvciBxdWlja2x5IG1hdGNoaW5n
IGNoaWxkcmVuIHR5cGUsIHRvIHRlc3QgaWYgY2FuIGJlIHRyZWF0ZWQgYXMgY29udGVudC4KLXZh
ciBDT05URU5UX1RZUEVTID0geydzdHJpbmcnOiB0cnVlLCAnbnVtYmVyJzogdHJ1ZX07Ci0KLXZh
ciBEQU5HRVJPVVNMWV9TRVRfSU5ORVJfSFRNTCA9IGtleU9mKHtkYW5nZXJvdXNseVNldElubmVy
SFRNTDogbnVsbH0pOwotdmFyIFNUWUxFID0ga2V5T2Yoe3N0eWxlOiBudWxsfSk7Ci0KLS8qKgot
ICogQHBhcmFtIHs/b2JqZWN0fSBwcm9wcwotICovCi1mdW5jdGlvbiBhc3NlcnRWYWxpZFByb3Bz
KHByb3BzKSB7Ci0gIGlmICghcHJvcHMpIHsKLSAgICByZXR1cm47Ci0gIH0KLSAgLy8gTm90ZSB0
aGUgdXNlIG9mIGA9PWAgd2hpY2ggY2hlY2tzIGZvciBudWxsIG9yIHVuZGVmaW5lZC4KLSAgaW52
YXJpYW50KAotICAgIHByb3BzLmNoaWxkcmVuID09IG51bGwgfHwgcHJvcHMuZGFuZ2Vyb3VzbHlT
ZXRJbm5lckhUTUwgPT0gbnVsbCwKLSAgICAnQ2FuIG9ubHkgc2V0IG9uZSBvZiBgY2hpbGRyZW5g
IG9yIGBwcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTGAuJwotICApOwotICBpbnZhcmlhbnQo
Ci0gICAgcHJvcHMuc3R5bGUgPT0gbnVsbCB8fCB0eXBlb2YgcHJvcHMuc3R5bGUgPT09ICdvYmpl
Y3QnLAotICAgICdUaGUgYHN0eWxlYCBwcm9wIGV4cGVjdHMgYSBtYXBwaW5nIGZyb20gc3R5bGUg
cHJvcGVydGllcyB0byB2YWx1ZXMsICcgKwotICAgICdub3QgYSBzdHJpbmcuJwotICApOwotfQot
Ci0vKioKLSAqIEBjb25zdHJ1Y3RvciBSZWFjdE5hdGl2ZUNvbXBvbmVudAotICogQGV4dGVuZHMg
UmVhY3RDb21wb25lbnQKLSAqIEBleHRlbmRzIFJlYWN0TXVsdGlDaGlsZAotICovCi1mdW5jdGlv
biBSZWFjdE5hdGl2ZUNvbXBvbmVudCh0YWcsIG9taXRDbG9zZSkgewotICB0aGlzLl90YWdPcGVu
ID0gJzwnICsgdGFnOwotICB0aGlzLl90YWdDbG9zZSA9IG9taXRDbG9zZSA/ICcnIDogJzwvJyAr
IHRhZyArICc+JzsKLSAgdGhpcy50YWdOYW1lID0gdGFnLnRvVXBwZXJDYXNlKCk7Ci19Ci0KLVJl
YWN0TmF0aXZlQ29tcG9uZW50Lk1peGluID0gewotCi0gIC8qKgotICAgKiBHZW5lcmF0ZXMgcm9v
dCB0YWcgbWFya3VwIHRoZW4gcmVjdXJzZXMuIFRoaXMgbWV0aG9kIGhhcyBzaWRlIGVmZmVjdHMg
YW5kCi0gICAqIGlzIG5vdCBpZGVtcG90ZW50LgotICAgKgotICAgKiBAaW50ZXJuYWwKLSAgICog
QHBhcmFtIHtzdHJpbmd9IHJvb3RJRCBUaGUgcm9vdCBET00gSUQgZm9yIHRoaXMgbm9kZS4KLSAg
ICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvbgotICAgKiBA
cmV0dXJuIHtzdHJpbmd9IFRoZSBjb21wdXRlZCBtYXJrdXAuCi0gICAqLwotICBtb3VudENvbXBv
bmVudDogZnVuY3Rpb24ocm9vdElELCB0cmFuc2FjdGlvbikgewotICAgIFJlYWN0Q29tcG9uZW50
Lk1peGluLm1vdW50Q29tcG9uZW50LmNhbGwodGhpcywgcm9vdElELCB0cmFuc2FjdGlvbik7Ci0g
ICAgYXNzZXJ0VmFsaWRQcm9wcyh0aGlzLnByb3BzKTsKLSAgICByZXR1cm4gKAotICAgICAgdGhp
cy5fY3JlYXRlT3BlblRhZ01hcmt1cCgpICsKLSAgICAgIHRoaXMuX2NyZWF0ZUNvbnRlbnRNYXJr
dXAodHJhbnNhY3Rpb24pICsKLSAgICAgIHRoaXMuX3RhZ0Nsb3NlCi0gICAgKTsKLSAgfSwKLQot
ICAvKioKLSAgICogQ3JlYXRlcyBtYXJrdXAgZm9yIHRoZSBvcGVuIHRhZyBhbmQgYWxsIGF0dHJp
YnV0ZXMuCi0gICAqCi0gICAqIFRoaXMgbWV0aG9kIGhhcyBzaWRlIGVmZmVjdHMgYmVjYXVzZSBl
dmVudHMgZ2V0IHJlZ2lzdGVyZWQuCi0gICAqCi0gICAqIEl0ZXJhdGluZyBvdmVyIG9iamVjdCBw
cm9wZXJ0aWVzIGlzIGZhc3RlciB0aGFuIGl0ZXJhdGluZyBvdmVyIGFycmF5cy4KLSAgICogQHNl
ZSBodHRwOi8vanNwZXJmLmNvbS9vYmotdnMtYXJyLWl0ZXJhdGlvbgotICAgKgotICAgKiBAcHJp
dmF0ZQotICAgKiBAcmV0dXJuIHtzdHJpbmd9IE1hcmt1cCBvZiBvcGVuaW5nIHRhZy4KLSAgICov
Ci0gIF9jcmVhdGVPcGVuVGFnTWFya3VwOiBmdW5jdGlvbigpIHsKLSAgICB2YXIgcHJvcHMgPSB0
aGlzLnByb3BzOwotICAgIHZhciByZXQgPSB0aGlzLl90YWdPcGVuOwotCi0gICAgZm9yICh2YXIg
cHJvcEtleSBpbiBwcm9wcykgewotICAgICAgaWYgKCFwcm9wcy5oYXNPd25Qcm9wZXJ0eShwcm9w
S2V5KSkgewotICAgICAgICBjb250aW51ZTsKLSAgICAgIH0KLSAgICAgIHZhciBwcm9wVmFsdWUg
PSBwcm9wc1twcm9wS2V5XTsKLSAgICAgIGlmIChwcm9wVmFsdWUgPT0gbnVsbCkgewotICAgICAg
ICBjb250aW51ZTsKLSAgICAgIH0KLSAgICAgIGlmIChyZWdpc3RyYXRpb25OYW1lc1twcm9wS2V5
XSkgewotICAgICAgICBwdXRMaXN0ZW5lcih0aGlzLl9yb290Tm9kZUlELCBwcm9wS2V5LCBwcm9w
VmFsdWUpOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKHByb3BLZXkgPT09IFNUWUxFKSB7
Ci0gICAgICAgICAgaWYgKHByb3BWYWx1ZSkgewotICAgICAgICAgICAgcHJvcFZhbHVlID0gcHJv
cHMuc3R5bGUgPSBtZXJnZShwcm9wcy5zdHlsZSk7Ci0gICAgICAgICAgfQotICAgICAgICAgIHBy
b3BWYWx1ZSA9IENTU1Byb3BlcnR5T3BlcmF0aW9ucy5jcmVhdGVNYXJrdXBGb3JTdHlsZXMocHJv
cFZhbHVlKTsKLSAgICAgICAgfQotICAgICAgICB2YXIgbWFya3VwID0KLSAgICAgICAgICBET01Q
cm9wZXJ0eU9wZXJhdGlvbnMuY3JlYXRlTWFya3VwRm9yUHJvcGVydHkocHJvcEtleSwgcHJvcFZh
bHVlKTsKLSAgICAgICAgaWYgKG1hcmt1cCkgewotICAgICAgICAgIHJldCArPSAnICcgKyBtYXJr
dXA7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0KLSAgICB2YXIgZXNjYXBlZElEID0gZXNj
YXBlVGV4dEZvckJyb3dzZXIodGhpcy5fcm9vdE5vZGVJRCk7Ci0gICAgcmV0dXJuIHJldCArICcg
JyArIFJlYWN0SUQuQVRUUl9OQU1FICsgJz0iJyArIGVzY2FwZWRJRCArICciPic7Ci0gIH0sCi0K
LSAgLyoqCi0gICAqIENyZWF0ZXMgbWFya3VwIGZvciB0aGUgY29udGVudCBiZXR3ZWVuIHRoZSB0
YWdzLgotICAgKgotICAgKiBAcHJpdmF0ZQotICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJh
bnNhY3Rpb259IHRyYW5zYWN0aW9uCi0gICAqIEByZXR1cm4ge3N0cmluZ30gQ29udGVudCBtYXJr
dXAuCi0gICAqLwotICBfY3JlYXRlQ29udGVudE1hcmt1cDogZnVuY3Rpb24odHJhbnNhY3Rpb24p
IHsKLSAgICAvLyBJbnRlbnRpb25hbCB1c2Ugb2YgIT0gdG8gYXZvaWQgY2F0Y2hpbmcgemVyby9m
YWxzZS4KLSAgICB2YXIgaW5uZXJIVE1MID0gdGhpcy5wcm9wcy5kYW5nZXJvdXNseVNldElubmVy
SFRNTDsKLSAgICBpZiAoaW5uZXJIVE1MICE9IG51bGwpIHsKLSAgICAgIGlmIChpbm5lckhUTUwu
X19odG1sICE9IG51bGwpIHsKLSAgICAgICAgcmV0dXJuIGlubmVySFRNTC5fX2h0bWw7Ci0gICAg
ICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgIHZhciBjb250ZW50VG9Vc2UgPQotICAgICAgICBDT05U
RU5UX1RZUEVTW3R5cGVvZiB0aGlzLnByb3BzLmNoaWxkcmVuXSA/IHRoaXMucHJvcHMuY2hpbGRy
ZW4gOiBudWxsOwotICAgICAgdmFyIGNoaWxkcmVuVG9Vc2UgPSBjb250ZW50VG9Vc2UgIT0gbnVs
bCA/IG51bGwgOiB0aGlzLnByb3BzLmNoaWxkcmVuOwotICAgICAgaWYgKGNvbnRlbnRUb1VzZSAh
PSBudWxsKSB7Ci0gICAgICAgIHJldHVybiBlc2NhcGVUZXh0Rm9yQnJvd3Nlcihjb250ZW50VG9V
c2UpOwotICAgICAgfSBlbHNlIGlmIChjaGlsZHJlblRvVXNlICE9IG51bGwpIHsKLSAgICAgICAg
cmV0dXJuIHRoaXMubW91bnRNdWx0aUNoaWxkKAotICAgICAgICAgIGZsYXR0ZW5DaGlsZHJlbihj
aGlsZHJlblRvVXNlKSwKLSAgICAgICAgICB0cmFuc2FjdGlvbgotICAgICAgICApOwotICAgICAg
fQotICAgIH0KLSAgICByZXR1cm4gJyc7Ci0gIH0sCi0KLSAgcmVjZWl2ZVByb3BzOiBmdW5jdGlv
bihuZXh0UHJvcHMsIHRyYW5zYWN0aW9uKSB7Ci0gICAgYXNzZXJ0VmFsaWRQcm9wcyhuZXh0UHJv
cHMpOwotICAgIFJlYWN0Q29tcG9uZW50Lk1peGluLnJlY2VpdmVQcm9wcy5jYWxsKHRoaXMsIG5l
eHRQcm9wcywgdHJhbnNhY3Rpb24pOwotICB9LAotCi0gIC8qKgotICAgKiBVcGRhdGVzIGEgbmF0
aXZlIERPTSBjb21wb25lbnQgYWZ0ZXIgaXQgaGFzIGFscmVhZHkgYmVlbiBhbGxvY2F0ZWQgYW5k
Ci0gICAqIGF0dGFjaGVkIHRvIHRoZSBET00uIFJlY29uY2lsZXMgdGhlIHJvb3QgRE9NIG5vZGUs
IHRoZW4gcmVjdXJzZXMuCi0gICAqCi0gICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2Fj
dGlvbn0gdHJhbnNhY3Rpb24KLSAgICogQHBhcmFtIHtvYmplY3R9IHByZXZQcm9wcwotICAgKiBA
aW50ZXJuYWwKLSAgICogQG92ZXJyaWRhYmxlCi0gICAqLwotICB1cGRhdGVDb21wb25lbnQ6IGZ1
bmN0aW9uKHRyYW5zYWN0aW9uLCBwcmV2UHJvcHMpIHsKLSAgICBSZWFjdENvbXBvbmVudC5NaXhp
bi51cGRhdGVDb21wb25lbnQuY2FsbCh0aGlzLCB0cmFuc2FjdGlvbiwgcHJldlByb3BzKTsKLSAg
ICB0aGlzLl91cGRhdGVET01Qcm9wZXJ0aWVzKHByZXZQcm9wcyk7Ci0gICAgdGhpcy5fdXBkYXRl
RE9NQ2hpbGRyZW4ocHJldlByb3BzLCB0cmFuc2FjdGlvbik7Ci0gIH0sCi0KLSAgLyoqCi0gICAq
IFJlY29uY2lsZXMgdGhlIHByb3BlcnRpZXMgYnkgZGV0ZWN0aW5nIGRpZmZlcmVuY2VzIGluIHBy
b3BlcnR5IHZhbHVlcyBhbmQKLSAgICogdXBkYXRpbmcgdGhlIERPTSBhcyBuZWNlc3NhcnkuIFRo
aXMgZnVuY3Rpb24gaXMgcHJvYmFibHkgdGhlIHNpbmdsZSBtb3N0Ci0gICAqIGNyaXRpY2FsIHBh
dGggZm9yIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbi4KLSAgICoKLSAgICogVE9ETzogQmVuY2ht
YXJrIHdoZXRoZXIgY2hlY2tpbmcgZm9yIGNoYW5nZWQgdmFsdWVzIGluIG1lbW9yeSBhY3R1YWxs
eQotICAgKiAgICAgICBpbXByb3ZlcyBwZXJmb3JtYW5jZSAoZXNwZWNpYWxseSBzdGF0aWNhbGx5
IHBvc2l0aW9uZWQgZWxlbWVudHMpLgotICAgKiBUT0RPOiBCZW5jaG1hcmsgdGhlIGVmZmVjdHMg
b2YgcHV0dGluZyB0aGlzIGF0IHRoZSB0b3Agc2luY2UgOTklIG9mIHByb3BzCi0gICAqICAgICAg
IGRvIG5vdCBjaGFuZ2UgZm9yIGEgZ2l2ZW4gcmVjb25jaWxpYXRpb24uCi0gICAqIFRPRE86IEJl
bmNobWFyayBhcmVhcyB0aGF0IGNhbiBiZSBpbXByb3ZlZCB3aXRoIGNhY2hpbmcuCi0gICAqCi0g
ICAqIEBwcml2YXRlCi0gICAqIEBwYXJhbSB7b2JqZWN0fSBsYXN0UHJvcHMKLSAgICovCi0gIF91
cGRhdGVET01Qcm9wZXJ0aWVzOiBmdW5jdGlvbihsYXN0UHJvcHMpIHsKLSAgICB2YXIgbmV4dFBy
b3BzID0gdGhpcy5wcm9wczsKLSAgICB2YXIgcHJvcEtleTsKLSAgICB2YXIgc3R5bGVOYW1lOwot
ICAgIHZhciBzdHlsZVVwZGF0ZXM7Ci0gICAgZm9yIChwcm9wS2V5IGluIGxhc3RQcm9wcykgewot
ICAgICAgaWYgKG5leHRQcm9wcy5oYXNPd25Qcm9wZXJ0eShwcm9wS2V5KSB8fAotICAgICAgICAg
IWxhc3RQcm9wcy5oYXNPd25Qcm9wZXJ0eShwcm9wS2V5KSkgewotICAgICAgICBjb250aW51ZTsK
LSAgICAgIH0KLSAgICAgIGlmIChwcm9wS2V5ID09PSBTVFlMRSkgewotICAgICAgICB2YXIgbGFz
dFN0eWxlID0gbGFzdFByb3BzW3Byb3BLZXldOwotICAgICAgICBmb3IgKHN0eWxlTmFtZSBpbiBs
YXN0U3R5bGUpIHsKLSAgICAgICAgICBpZiAobGFzdFN0eWxlLmhhc093blByb3BlcnR5KHN0eWxl
TmFtZSkpIHsKLSAgICAgICAgICAgIHN0eWxlVXBkYXRlcyA9IHN0eWxlVXBkYXRlcyB8fCB7fTsK
LSAgICAgICAgICAgIHN0eWxlVXBkYXRlc1tzdHlsZU5hbWVdID0gJyc7Ci0gICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgICB9IGVsc2UgaWYgKHByb3BLZXkgPT09IERBTkdFUk9VU0xZX1NFVF9J
Tk5FUl9IVE1MKSB7Ci0gICAgICAgIC8vIGh0dHA6Ly9qc3BlcmYuY29tL2VtcHR5aW5nLXNwZWVk
Ci0gICAgICAgIFJlYWN0Q29tcG9uZW50LkRPTUlET3BlcmF0aW9ucy51cGRhdGVUZXh0Q29udGVu
dEJ5SUQoCi0gICAgICAgICAgdGhpcy5fcm9vdE5vZGVJRCwKLSAgICAgICAgICAnJwotICAgICAg
ICApOwotICAgICAgfSBlbHNlIGlmIChyZWdpc3RyYXRpb25OYW1lc1twcm9wS2V5XSkgewotICAg
ICAgICBkZWxldGVMaXN0ZW5lcih0aGlzLl9yb290Tm9kZUlELCBwcm9wS2V5KTsKLSAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgIFJlYWN0Q29tcG9uZW50LkRPTUlET3BlcmF0aW9ucy5kZWxldGVQcm9w
ZXJ0eUJ5SUQoCi0gICAgICAgICAgdGhpcy5fcm9vdE5vZGVJRCwKLSAgICAgICAgICBwcm9wS2V5
Ci0gICAgICAgICk7Ci0gICAgICB9Ci0gICAgfQotICAgIGZvciAocHJvcEtleSBpbiBuZXh0UHJv
cHMpIHsKLSAgICAgIHZhciBuZXh0UHJvcCA9IG5leHRQcm9wc1twcm9wS2V5XTsKLSAgICAgIHZh
ciBsYXN0UHJvcCA9IGxhc3RQcm9wc1twcm9wS2V5XTsKLSAgICAgIGlmICghbmV4dFByb3BzLmhh
c093blByb3BlcnR5KHByb3BLZXkpIHx8IG5leHRQcm9wID09PSBsYXN0UHJvcCkgewotICAgICAg
ICBjb250aW51ZTsKLSAgICAgIH0KLSAgICAgIGlmIChwcm9wS2V5ID09PSBTVFlMRSkgewotICAg
ICAgICBpZiAobmV4dFByb3ApIHsKLSAgICAgICAgICBuZXh0UHJvcCA9IG5leHRQcm9wcy5zdHls
ZSA9IG1lcmdlKG5leHRQcm9wKTsKLSAgICAgICAgfQotICAgICAgICBpZiAobGFzdFByb3ApIHsK
LSAgICAgICAgICAvLyBVbnNldCBzdHlsZXMgb24gYGxhc3RQcm9wYCBidXQgbm90IG9uIGBuZXh0
UHJvcGAuCi0gICAgICAgICAgZm9yIChzdHlsZU5hbWUgaW4gbGFzdFByb3ApIHsKLSAgICAgICAg
ICAgIGlmIChsYXN0UHJvcC5oYXNPd25Qcm9wZXJ0eShzdHlsZU5hbWUpICYmCi0gICAgICAgICAg
ICAgICAgIW5leHRQcm9wLmhhc093blByb3BlcnR5KHN0eWxlTmFtZSkpIHsKLSAgICAgICAgICAg
ICAgc3R5bGVVcGRhdGVzID0gc3R5bGVVcGRhdGVzIHx8IHt9OwotICAgICAgICAgICAgICBzdHls
ZVVwZGF0ZXNbc3R5bGVOYW1lXSA9ICcnOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAg
ICAgICAgICAvLyBVcGRhdGUgc3R5bGVzIHRoYXQgY2hhbmdlZCBzaW5jZSBgbGFzdFByb3BgLgot
ICAgICAgICAgIGZvciAoc3R5bGVOYW1lIGluIG5leHRQcm9wKSB7Ci0gICAgICAgICAgICBpZiAo
bmV4dFByb3AuaGFzT3duUHJvcGVydHkoc3R5bGVOYW1lKSAmJgotICAgICAgICAgICAgICAgIGxh
c3RQcm9wW3N0eWxlTmFtZV0gIT09IG5leHRQcm9wW3N0eWxlTmFtZV0pIHsKLSAgICAgICAgICAg
ICAgc3R5bGVVcGRhdGVzID0gc3R5bGVVcGRhdGVzIHx8IHt9OwotICAgICAgICAgICAgICBzdHls
ZVVwZGF0ZXNbc3R5bGVOYW1lXSA9IG5leHRQcm9wW3N0eWxlTmFtZV07Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIC8vIFJlbGllcyBvbiBg
dXBkYXRlU3R5bGVzQnlJRGAgbm90IG11dGF0aW5nIGBzdHlsZVVwZGF0ZXNgLgotICAgICAgICAg
IHN0eWxlVXBkYXRlcyA9IG5leHRQcm9wOwotICAgICAgICB9Ci0gICAgICB9IGVsc2UgaWYgKHBy
b3BLZXkgPT09IERBTkdFUk9VU0xZX1NFVF9JTk5FUl9IVE1MKSB7Ci0gICAgICAgIHZhciBsYXN0
SHRtbCA9IGxhc3RQcm9wICYmIGxhc3RQcm9wLl9faHRtbDsKLSAgICAgICAgdmFyIG5leHRIdG1s
ID0gbmV4dFByb3AgJiYgbmV4dFByb3AuX19odG1sOwotICAgICAgICBpZiAobGFzdEh0bWwgIT09
IG5leHRIdG1sKSB7Ci0gICAgICAgICAgUmVhY3RDb21wb25lbnQuRE9NSURPcGVyYXRpb25zLnVw
ZGF0ZUlubmVySFRNTEJ5SUQoCi0gICAgICAgICAgICB0aGlzLl9yb290Tm9kZUlELAotICAgICAg
ICAgICAgbmV4dFByb3AKLSAgICAgICAgICApOwotICAgICAgICB9Ci0gICAgICB9IGVsc2UgaWYg
KHJlZ2lzdHJhdGlvbk5hbWVzW3Byb3BLZXldKSB7Ci0gICAgICAgIHB1dExpc3RlbmVyKHRoaXMu
X3Jvb3ROb2RlSUQsIHByb3BLZXksIG5leHRQcm9wKTsKLSAgICAgIH0gZWxzZSBpZiAoCi0gICAg
ICAgICAgRE9NUHJvcGVydHkuaXNTdGFuZGFyZE5hbWVbcHJvcEtleV0gfHwKLSAgICAgICAgICBE
T01Qcm9wZXJ0eS5pc0N1c3RvbUF0dHJpYnV0ZShwcm9wS2V5KSkgewotICAgICAgICBSZWFjdENv
bXBvbmVudC5ET01JRE9wZXJhdGlvbnMudXBkYXRlUHJvcGVydHlCeUlEKAotICAgICAgICAgIHRo
aXMuX3Jvb3ROb2RlSUQsCi0gICAgICAgICAgcHJvcEtleSwKLSAgICAgICAgICBuZXh0UHJvcAot
ICAgICAgICApOwotICAgICAgfQotICAgIH0KLSAgICBpZiAoc3R5bGVVcGRhdGVzKSB7Ci0gICAg
ICBSZWFjdENvbXBvbmVudC5ET01JRE9wZXJhdGlvbnMudXBkYXRlU3R5bGVzQnlJRCgKLSAgICAg
ICAgdGhpcy5fcm9vdE5vZGVJRCwKLSAgICAgICAgc3R5bGVVcGRhdGVzCi0gICAgICApOwotICAg
IH0KLSAgfSwKLQotICAvKioKLSAgICogUmVjb25jaWxlcyB0aGUgY2hpbGRyZW4gd2l0aCB0aGUg
dmFyaW91cyBwcm9wZXJ0aWVzIHRoYXQgYWZmZWN0IHRoZQotICAgKiBjaGlsZHJlbiBjb250ZW50
LgotICAgKgotICAgKiBAcGFyYW0ge29iamVjdH0gbGFzdFByb3BzCi0gICAqIEBwYXJhbSB7UmVh
Y3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb24KLSAgICovCi0gIF91cGRhdGVET01D
aGlsZHJlbjogZnVuY3Rpb24obGFzdFByb3BzLCB0cmFuc2FjdGlvbikgewotICAgIHZhciBuZXh0
UHJvcHMgPSB0aGlzLnByb3BzOwotCi0gICAgdmFyIGxhc3RVc2VkQ29udGVudCA9Ci0gICAgICBD
T05URU5UX1RZUEVTW3R5cGVvZiBsYXN0UHJvcHMuY2hpbGRyZW5dID8gbGFzdFByb3BzLmNoaWxk
cmVuIDogbnVsbDsKLSAgICB2YXIgY29udGVudFRvVXNlID0KLSAgICAgIENPTlRFTlRfVFlQRVNb
dHlwZW9mIG5leHRQcm9wcy5jaGlsZHJlbl0gPyBuZXh0UHJvcHMuY2hpbGRyZW4gOiBudWxsOwot
Ci0gICAgLy8gTm90ZSB0aGUgdXNlIG9mIGAhPWAgd2hpY2ggY2hlY2tzIGZvciBudWxsIG9yIHVu
ZGVmaW5lZC4KLQotICAgIHZhciBsYXN0VXNlZENoaWxkcmVuID0KLSAgICAgIGxhc3RVc2VkQ29u
dGVudCAhPSBudWxsID8gbnVsbCA6IGxhc3RQcm9wcy5jaGlsZHJlbjsKLSAgICB2YXIgY2hpbGRy
ZW5Ub1VzZSA9IGNvbnRlbnRUb1VzZSAhPSBudWxsID8gbnVsbCA6IG5leHRQcm9wcy5jaGlsZHJl
bjsKLQotICAgIGlmIChjb250ZW50VG9Vc2UgIT0gbnVsbCkgewotICAgICAgdmFyIGNoaWxkcmVu
UmVtb3ZlZCA9IGxhc3RVc2VkQ2hpbGRyZW4gIT0gbnVsbCAmJiBjaGlsZHJlblRvVXNlID09IG51
bGw7Ci0gICAgICBpZiAoY2hpbGRyZW5SZW1vdmVkKSB7Ci0gICAgICAgIHRoaXMudXBkYXRlTXVs
dGlDaGlsZChudWxsLCB0cmFuc2FjdGlvbik7Ci0gICAgICB9Ci0gICAgICBpZiAobGFzdFVzZWRD
b250ZW50ICE9PSBjb250ZW50VG9Vc2UpIHsKLSAgICAgICAgUmVhY3RDb21wb25lbnQuRE9NSURP
cGVyYXRpb25zLnVwZGF0ZVRleHRDb250ZW50QnlJRCgKLSAgICAgICAgICB0aGlzLl9yb290Tm9k
ZUlELAotICAgICAgICAgICcnICsgY29udGVudFRvVXNlCi0gICAgICAgICk7Ci0gICAgICB9Ci0g
ICAgfSBlbHNlIHsKLSAgICAgIHZhciBjb250ZW50UmVtb3ZlZCA9IGxhc3RVc2VkQ29udGVudCAh
PSBudWxsICYmIGNvbnRlbnRUb1VzZSA9PSBudWxsOwotICAgICAgaWYgKGNvbnRlbnRSZW1vdmVk
KSB7Ci0gICAgICAgIFJlYWN0Q29tcG9uZW50LkRPTUlET3BlcmF0aW9ucy51cGRhdGVUZXh0Q29u
dGVudEJ5SUQoCi0gICAgICAgICAgdGhpcy5fcm9vdE5vZGVJRCwKLSAgICAgICAgICAnJwotICAg
ICAgICApOwotICAgICAgfQotICAgICAgdGhpcy51cGRhdGVNdWx0aUNoaWxkKGZsYXR0ZW5DaGls
ZHJlbihuZXh0UHJvcHMuY2hpbGRyZW4pLCB0cmFuc2FjdGlvbik7Ci0gICAgfQotICB9LAotCi0g
IC8qKgotICAgKiBEZXN0cm95cyBhbGwgZXZlbnQgcmVnaXN0cmF0aW9ucyBmb3IgdGhpcyBpbnN0
YW5jZS4gRG9lcyBub3QgcmVtb3ZlIGZyb20KLSAgICogdGhlIERPTS4gVGhhdCBtdXN0IGJlIGRv
bmUgYnkgdGhlIHBhcmVudC4KLSAgICoKLSAgICogQGludGVybmFsCi0gICAqLwotICB1bm1vdW50
Q29tcG9uZW50OiBmdW5jdGlvbigpIHsKLSAgICBSZWFjdEV2ZW50RW1pdHRlci5kZWxldGVBbGxM
aXN0ZW5lcnModGhpcy5fcm9vdE5vZGVJRCk7Ci0gICAgUmVhY3RDb21wb25lbnQuTWl4aW4udW5t
b3VudENvbXBvbmVudC5jYWxsKHRoaXMpOwotICAgIHRoaXMudW5tb3VudE11bHRpQ2hpbGQoKTsK
LSAgfQotCi19OwotCi1taXhJbnRvKFJlYWN0TmF0aXZlQ29tcG9uZW50LCBSZWFjdENvbXBvbmVu
dC5NaXhpbik7Ci1taXhJbnRvKFJlYWN0TmF0aXZlQ29tcG9uZW50LCBSZWFjdE5hdGl2ZUNvbXBv
bmVudC5NaXhpbik7Ci1taXhJbnRvKFJlYWN0TmF0aXZlQ29tcG9uZW50LCBSZWFjdE11bHRpQ2hp
bGQuTWl4aW4pOwotCi1tb2R1bGUuZXhwb3J0cyA9IFJlYWN0TmF0aXZlQ29tcG9uZW50OwotCi19
LHsiLi9DU1NQcm9wZXJ0eU9wZXJhdGlvbnMiOjMsIi4vRE9NUHJvcGVydHkiOjcsIi4vRE9NUHJv
cGVydHlPcGVyYXRpb25zIjo4LCIuL1JlYWN0Q29tcG9uZW50IjoyMiwiLi9SZWFjdEV2ZW50RW1p
dHRlciI6MzMsIi4vUmVhY3RJRCI6MzUsIi4vUmVhY3RNdWx0aUNoaWxkIjozOSwiLi9lc2NhcGVU
ZXh0Rm9yQnJvd3NlciI6NjUsIi4vZmxhdHRlbkNoaWxkcmVuIjo2NywiLi9pbnZhcmlhbnQiOjc1
LCIuL2tleU9mIjo3OSwiLi9tZXJnZSI6ODEsIi4vbWl4SW50byI6ODR9XSw0MTpbZnVuY3Rpb24o
cmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7Ci0vKioKLSAqIENvcHlyaWdodCAyMDEzIEZhY2Vib29r
LCBJbmMuCi0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9u
IDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2Vw
dCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNv
cHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg
b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9V
VCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9y
IGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBn
b3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5z
ZS4KLSAqCi0gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3RPbkRPTVJlYWR5Ci0gKi8KLQotInVzZSBz
dHJpY3QiOwotCi12YXIgUG9vbGVkQ2xhc3MgPSByZXF1aXJlKCIuL1Bvb2xlZENsYXNzIik7Ci0K
LXZhciBtaXhJbnRvID0gcmVxdWlyZSgiLi9taXhJbnRvIik7Ci0KLS8qKgotICogQSBzcGVjaWFs
aXplZCBwc2V1ZG8tZXZlbnQgbW9kdWxlIHRvIGhlbHAga2VlcCB0cmFjayBvZiBjb21wb25lbnRz
IHdhaXRpbmcgdG8KLSAqIGJlIG5vdGlmaWVkIHdoZW4gdGhlaXIgRE9NIHJlcHJlc2VudGF0aW9u
cyBhcmUgYXZhaWxhYmxlIGZvciB1c2UuCi0gKgotICogVGhpcyBpbXBsZW1lbnRzIGBQb29sZWRD
bGFzc2AsIHNvIHlvdSBzaG91bGQgbmV2ZXIgbmVlZCB0byBpbnN0YW50aWF0ZSB0aGlzLgotICog
SW5zdGVhZCwgdXNlIGBSZWFjdE9uRE9NUmVhZHkuZ2V0UG9vbGVkKClgLgotICoKLSAqIEBwYXJh
bSB7P2FycmF5PGZ1bmN0aW9uPn0gaW5pdGlhbENvbGxlY3Rpb24KLSAqIEBjbGFzcyBSZWFjdE9u
RE9NUmVhZHkKLSAqIEBpbXBsZW1lbnRzIFBvb2xlZENsYXNzCi0gKiBAaW50ZXJuYWwKLSAqLwot
ZnVuY3Rpb24gUmVhY3RPbkRPTVJlYWR5KGluaXRpYWxDb2xsZWN0aW9uKSB7Ci0gIHRoaXMuX3F1
ZXVlID0gaW5pdGlhbENvbGxlY3Rpb24gfHwgbnVsbDsKLX0KLQotbWl4SW50byhSZWFjdE9uRE9N
UmVhZHksIHsKLQotICAvKioKLSAgICogRW5xdWV1ZXMgYSBjYWxsYmFjayB0byBiZSBpbnZva2Vk
IHdoZW4gYG5vdGlmeUFsbGAgaXMgaW52b2tlZC4gVGhpcyBpcyB1c2VkCi0gICAqIHRvIGVucXVl
dWUgY2FsbHMgdG8gYGNvbXBvbmVudERpZE1vdW50YCBhbmQgYGNvbXBvbmVudERpZFVwZGF0ZWAu
Ci0gICAqCi0gICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGNvbXBvbmVudCBDb21wb25lbnQg
YmVpbmcgcmVuZGVyZWQuCi0gICAqIEBwYXJhbSB7ZnVuY3Rpb24oRE9NRWxlbWVudCl9IGNhbGxi
YWNrIEludm9rZWQgd2hlbiBgbm90aWZ5QWxsYCBpcyBpbnZva2VkLgotICAgKiBAaW50ZXJuYWwK
LSAgICovCi0gIGVucXVldWU6IGZ1bmN0aW9uKGNvbXBvbmVudCwgY2FsbGJhY2spIHsKLSAgICB0
aGlzLl9xdWV1ZSA9IHRoaXMuX3F1ZXVlIHx8IFtdOwotICAgIHRoaXMuX3F1ZXVlLnB1c2goe2Nv
bXBvbmVudDogY29tcG9uZW50LCBjYWxsYmFjazogY2FsbGJhY2t9KTsKLSAgfSwKLQotICAvKioK
LSAgICogSW52b2tlcyBhbGwgZW5xdWV1ZWQgY2FsbGJhY2tzIGFuZCBjbGVhcnMgdGhlIHF1ZXVl
LiBUaGlzIGlzIGludm9rZWQgYWZ0ZXIKLSAgICogdGhlIERPTSByZXByZXNlbnRhdGlvbiBvZiBh
IGNvbXBvbmVudCBoYXMgYmVlbiBjcmVhdGVkIG9yIHVwZGF0ZWQuCi0gICAqCi0gICAqIEBpbnRl
cm5hbAotICAgKi8KLSAgbm90aWZ5QWxsOiBmdW5jdGlvbigpIHsKLSAgICB2YXIgcXVldWUgPSB0
aGlzLl9xdWV1ZTsKLSAgICBpZiAocXVldWUpIHsKLSAgICAgIHRoaXMuX3F1ZXVlID0gbnVsbDsK
LSAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gcXVldWUubGVuZ3RoOyBpIDwgbDsgaSsrKSB7Ci0g
ICAgICAgIHZhciBjb21wb25lbnQgPSBxdWV1ZVtpXS5jb21wb25lbnQ7Ci0gICAgICAgIHZhciBj
YWxsYmFjayA9IHF1ZXVlW2ldLmNhbGxiYWNrOwotICAgICAgICBjYWxsYmFjay5jYWxsKGNvbXBv
bmVudCwgY29tcG9uZW50LmdldERPTU5vZGUoKSk7Ci0gICAgICB9Ci0gICAgICBxdWV1ZS5sZW5n
dGggPSAwOwotICAgIH0KLSAgfSwKLQotICAvKioKLSAgICogUmVzZXRzIHRoZSBpbnRlcm5hbCBx
dWV1ZS4KLSAgICoKLSAgICogQGludGVybmFsCi0gICAqLwotICByZXNldDogZnVuY3Rpb24oKSB7
Ci0gICAgdGhpcy5fcXVldWUgPSBudWxsOwotICB9LAotCi0gIC8qKgotICAgKiBgUG9vbGVkQ2xh
c3NgIGxvb2tzIGZvciB0aGlzLgotICAgKi8KLSAgZGVzdHJ1Y3RvcjogZnVuY3Rpb24oKSB7Ci0g
ICAgdGhpcy5yZXNldCgpOwotICB9Ci0KLX0pOwotCi1Qb29sZWRDbGFzcy5hZGRQb29saW5nVG8o
UmVhY3RPbkRPTVJlYWR5KTsKLQotbW9kdWxlLmV4cG9ydHMgPSBSZWFjdE9uRE9NUmVhZHk7Ci0K
LX0seyIuL1Bvb2xlZENsYXNzIjoyMCwiLi9taXhJbnRvIjo4NH1dLDQyOltmdW5jdGlvbihyZXF1
aXJlLG1vZHVsZSxleHBvcnRzKXsKLS8qKgotICogQ29weXJpZ2h0IDIwMTMgRmFjZWJvb2ssIElu
Yy4KLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4w
ICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBv
ZiB0aGUgTGljZW5zZSBhdAotICoKLSAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBh
Z3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBM
aWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdB
UlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1w
bGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVy
bmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgot
ICoKLSAqIEBwcm92aWRlc01vZHVsZSBSZWFjdE93bmVyCi0gKi8KLQotInVzZSBzdHJpY3QiOwot
Ci12YXIgaW52YXJpYW50ID0gcmVxdWlyZSgiLi9pbnZhcmlhbnQiKTsKLQotLyoqCi0gKiBSZWFj
dE93bmVycyBhcmUgY2FwYWJsZSBvZiBzdG9yaW5nIHJlZmVyZW5jZXMgdG8gb3duZWQgY29tcG9u
ZW50cy4KLSAqCi0gKiBBbGwgY29tcG9uZW50cyBhcmUgY2FwYWJsZSBvZiAvL2JlaW5nLy8gcmVm
ZXJlbmNlZCBieSBvd25lciBjb21wb25lbnRzLCBidXQKLSAqIG9ubHkgUmVhY3RPd25lciBjb21w
b25lbnRzIGFyZSBjYXBhYmxlIG9mIC8vcmVmZXJlbmNpbmcvLyBvd25lZCBjb21wb25lbnRzLgot
ICogVGhlIG5hbWVkIHJlZmVyZW5jZSBpcyBrbm93biBhcyBhICJyZWYiLgotICoKLSAqIFJlZnMg
YXJlIGF2YWlsYWJsZSB3aGVuIG1vdW50ZWQgYW5kIHVwZGF0ZWQgZHVyaW5nIHJlY29uY2lsaWF0
aW9uLgotICoKLSAqICAgdmFyIE15Q29tcG9uZW50ID0gUmVhY3QuY3JlYXRlQ2xhc3MoewotICog
ICAgIHJlbmRlcjogZnVuY3Rpb24oKSB7Ci0gKiAgICAgICByZXR1cm4gKAotICogICAgICAgICA8
ZGl2IG9uQ2xpY2s9e3RoaXMuaGFuZGxlQ2xpY2t9PgotICogICAgICAgICAgIDxDdXN0b21Db21w
b25lbnQgcmVmPSJjdXN0b20iIC8+Ci0gKiAgICAgICAgIDwvZGl2PgotICogICAgICAgKTsKLSAq
ICAgICB9LAotICogICAgIGhhbmRsZUNsaWNrOiBmdW5jdGlvbigpIHsKLSAqICAgICAgIHRoaXMu
cmVmcy5jdXN0b20uaGFuZGxlQ2xpY2soKTsKLSAqICAgICB9LAotICogICAgIGNvbXBvbmVudERp
ZE1vdW50OiBmdW5jdGlvbigpIHsKLSAqICAgICAgIHRoaXMucmVmcy5jdXN0b20uaW5pdGlhbGl6
ZSgpOwotICogICAgIH0KLSAqICAgfSk7Ci0gKgotICogUmVmcyBzaG91bGQgcmFyZWx5IGJlIHVz
ZWQuIFdoZW4gcmVmcyBhcmUgdXNlZCwgdGhleSBzaG91bGQgb25seSBiZSBkb25lIHRvCi0gKiBj
b250cm9sIGRhdGEgdGhhdCBpcyBub3QgaGFuZGxlZCBieSBSZWFjdCdzIGRhdGEgZmxvdy4KLSAq
Ci0gKiBAY2xhc3MgUmVhY3RPd25lcgotICovCi12YXIgUmVhY3RPd25lciA9IHsKLQotICAvKioK
LSAgICogQHBhcmFtIHs/b2JqZWN0fSBvYmplY3QKLSAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1
ZSBpZiBgb2JqZWN0YCBpcyBhIHZhbGlkIG93bmVyLgotICAgKiBAZmluYWwKLSAgICovCi0gIGlz
VmFsaWRPd25lcjogZnVuY3Rpb24ob2JqZWN0KSB7Ci0gICAgcmV0dXJuICEhKAotICAgICAgb2Jq
ZWN0ICYmCi0gICAgICB0eXBlb2Ygb2JqZWN0LmF0dGFjaFJlZiA9PT0gJ2Z1bmN0aW9uJyAmJgot
ICAgICAgdHlwZW9mIG9iamVjdC5kZXRhY2hSZWYgPT09ICdmdW5jdGlvbicKLSAgICApOwotICB9
LAotCi0gIC8qKgotICAgKiBBZGRzIGEgY29tcG9uZW50IGJ5IHJlZiB0byBhbiBvd25lciBjb21w
b25lbnQuCi0gICAqCi0gICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGNvbXBvbmVudCBDb21w
b25lbnQgdG8gcmVmZXJlbmNlLgotICAgKiBAcGFyYW0ge3N0cmluZ30gcmVmIE5hbWUgYnkgd2hp
Y2ggdG8gcmVmZXIgdG8gdGhlIGNvbXBvbmVudC4KLSAgICogQHBhcmFtIHtSZWFjdE93bmVyfSBv
d25lciBDb21wb25lbnQgb24gd2hpY2ggdG8gcmVjb3JkIHRoZSByZWYuCi0gICAqIEBmaW5hbAot
ICAgKiBAaW50ZXJuYWwKLSAgICovCi0gIGFkZENvbXBvbmVudEFzUmVmVG86IGZ1bmN0aW9uKGNv
bXBvbmVudCwgcmVmLCBvd25lcikgewotICAgIGludmFyaWFudCgKLSAgICAgIFJlYWN0T3duZXIu
aXNWYWxpZE93bmVyKG93bmVyKSwKLSAgICAgICdhZGRDb21wb25lbnRBc1JlZlRvKC4uLik6IE9u
bHkgYSBSZWFjdE93bmVyIGNhbiBoYXZlIHJlZnMuJwotICAgICk7Ci0gICAgb3duZXIuYXR0YWNo
UmVmKHJlZiwgY29tcG9uZW50KTsKLSAgfSwKLQotICAvKioKLSAgICogUmVtb3ZlcyBhIGNvbXBv
bmVudCBieSByZWYgZnJvbSBhbiBvd25lciBjb21wb25lbnQuCi0gICAqCi0gICAqIEBwYXJhbSB7
UmVhY3RDb21wb25lbnR9IGNvbXBvbmVudCBDb21wb25lbnQgdG8gZGVyZWZlcmVuY2UuCi0gICAq
IEBwYXJhbSB7c3RyaW5nfSByZWYgTmFtZSBvZiB0aGUgcmVmIHRvIHJlbW92ZS4KLSAgICogQHBh
cmFtIHtSZWFjdE93bmVyfSBvd25lciBDb21wb25lbnQgb24gd2hpY2ggdGhlIHJlZiBpcyByZWNv
cmRlZC4KLSAgICogQGZpbmFsCi0gICAqIEBpbnRlcm5hbAotICAgKi8KLSAgcmVtb3ZlQ29tcG9u
ZW50QXNSZWZGcm9tOiBmdW5jdGlvbihjb21wb25lbnQsIHJlZiwgb3duZXIpIHsKLSAgICBpbnZh
cmlhbnQoCi0gICAgICBSZWFjdE93bmVyLmlzVmFsaWRPd25lcihvd25lciksCi0gICAgICAncmVt
b3ZlQ29tcG9uZW50QXNSZWZGcm9tKC4uLik6IE9ubHkgYSBSZWFjdE93bmVyIGNhbiBoYXZlIHJl
ZnMuJwotICAgICk7Ci0gICAgLy8gQ2hlY2sgdGhhdCBgY29tcG9uZW50YCBpcyBzdGlsbCB0aGUg
Y3VycmVudCByZWYgYmVjYXVzZSB3ZSBkbyBub3Qgd2FudCB0bwotICAgIC8vIGRldGFjaCB0aGUg
cmVmIGlmIGFub3RoZXIgY29tcG9uZW50IHN0b2xlIGl0LgotICAgIGlmIChvd25lci5yZWZzW3Jl
Zl0gPT09IGNvbXBvbmVudCkgewotICAgICAgb3duZXIuZGV0YWNoUmVmKHJlZik7Ci0gICAgfQot
ICB9LAotCi0gIC8qKgotICAgKiBBIFJlYWN0Q29tcG9uZW50IG11c3QgbWl4IHRoaXMgaW4gdG8g
aGF2ZSByZWZzLgotICAgKgotICAgKiBAbGVuZHMge1JlYWN0T3duZXIucHJvdG90eXBlfQotICAg
Ki8KLSAgTWl4aW46IHsKLQotICAgIC8qKgotICAgICAqIExhemlseSBhbGxvY2F0ZXMgdGhlIHJl
ZnMgb2JqZWN0IGFuZCBzdG9yZXMgYGNvbXBvbmVudGAgYXMgYHJlZmAuCi0gICAgICoKLSAgICAg
KiBAcGFyYW0ge3N0cmluZ30gcmVmIFJlZmVyZW5jZSBuYW1lLgotICAgICAqIEBwYXJhbSB7Y29t
cG9uZW50fSBjb21wb25lbnQgQ29tcG9uZW50IHRvIHN0b3JlIGFzIGByZWZgLgotICAgICAqIEBm
aW5hbAotICAgICAqIEBwcml2YXRlCi0gICAgICovCi0gICAgYXR0YWNoUmVmOiBmdW5jdGlvbihy
ZWYsIGNvbXBvbmVudCkgewotICAgICAgaW52YXJpYW50KAotICAgICAgICBjb21wb25lbnQuaXNP
d25lZEJ5KHRoaXMpLAotICAgICAgICAnYXR0YWNoUmVmKCVzLCAuLi4pOiBPbmx5IGEgY29tcG9u
ZW50XCdzIG93bmVyIGNhbiBzdG9yZSBhIHJlZiB0byBpdC4nLAotICAgICAgICByZWYKLSAgICAg
ICk7Ci0gICAgICB2YXIgcmVmcyA9IHRoaXMucmVmcyB8fCAodGhpcy5yZWZzID0ge30pOwotICAg
ICAgcmVmc1tyZWZdID0gY29tcG9uZW50OwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBEZXRh
Y2hlcyBhIHJlZmVyZW5jZSBuYW1lLgotICAgICAqCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IHJl
ZiBOYW1lIHRvIGRlcmVmZXJlbmNlLgotICAgICAqIEBmaW5hbAotICAgICAqIEBwcml2YXRlCi0g
ICAgICovCi0gICAgZGV0YWNoUmVmOiBmdW5jdGlvbihyZWYpIHsKLSAgICAgIGRlbGV0ZSB0aGlz
LnJlZnNbcmVmXTsKLSAgICB9Ci0KLSAgfQotCi19OwotCi1tb2R1bGUuZXhwb3J0cyA9IFJlYWN0
T3duZXI7Ci0KLX0seyIuL2ludmFyaWFudCI6NzV9XSw0MzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1
bGUsZXhwb3J0cyl7Ci0vKioKLSAqIENvcHlyaWdodCAyMDEzIEZhY2Vib29rLCBJbmMuCi0gKgot
ICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJM
aWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExp
Y2Vuc2UgYXQKLSAqCi0gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBp
cyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVT
IE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0g
KiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVy
bWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqCi0gKiBA
cHJvdmlkZXNNb2R1bGUgUmVhY3RQcm9wVHJhbnNmZXJlcgotICovCi0KLSJ1c2Ugc3RyaWN0IjsK
LQotdmFyIGVtcHR5RnVuY3Rpb24gPSByZXF1aXJlKCIuL2VtcHR5RnVuY3Rpb24iKTsKLXZhciBq
b2luQ2xhc3NlcyA9IHJlcXVpcmUoIi4vam9pbkNsYXNzZXMiKTsKLXZhciBtZXJnZSA9IHJlcXVp
cmUoIi4vbWVyZ2UiKTsKLQotLyoqCi0gKiBDcmVhdGVzIGEgdHJhbnNmZXIgc3RyYXRlZ3kgdGhh
dCB3aWxsIG1lcmdlIHByb3AgdmFsdWVzIHVzaW5nIHRoZSBzdXBwbGllZAotICogYG1lcmdlU3Ry
YXRlZ3lgLiBJZiBhIHByb3Agd2FzIHByZXZpb3VzbHkgdW5zZXQsIHRoaXMganVzdCBzZXRzIGl0
LgotICoKLSAqIEBwYXJhbSB7ZnVuY3Rpb259IG1lcmdlU3RyYXRlZ3kKLSAqIEByZXR1cm4ge2Z1
bmN0aW9ufQotICovCi1mdW5jdGlvbiBjcmVhdGVUcmFuc2ZlclN0cmF0ZWd5KG1lcmdlU3RyYXRl
Z3kpIHsKLSAgcmV0dXJuIGZ1bmN0aW9uKHByb3BzLCBrZXksIHZhbHVlKSB7Ci0gICAgaWYgKCFw
cm9wcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7Ci0gICAgICBwcm9wc1trZXldID0gdmFsdWU7Ci0g
ICAgfSBlbHNlIHsKLSAgICAgIHByb3BzW2tleV0gPSBtZXJnZVN0cmF0ZWd5KHByb3BzW2tleV0s
IHZhbHVlKTsKLSAgICB9Ci0gIH07Ci19Ci0KLS8qKgotICogVHJhbnNmZXIgc3RyYXRlZ2llcyBk
aWN0YXRlIGhvdyBwcm9wcyBhcmUgdHJhbnNmZXJyZWQgYnkgYHRyYW5zZmVyUHJvcHNUb2AuCi0g
Ki8KLXZhciBUcmFuc2ZlclN0cmF0ZWdpZXMgPSB7Ci0gIC8qKgotICAgKiBOZXZlciB0cmFuc2Zl
ciBgY2hpbGRyZW5gLgotICAgKi8KLSAgY2hpbGRyZW46IGVtcHR5RnVuY3Rpb24sCi0gIC8qKgot
ICAgKiBUcmFuc2ZlciB0aGUgYGNsYXNzTmFtZWAgcHJvcCBieSBtZXJnaW5nIHRoZW0uCi0gICAq
LwotICBjbGFzc05hbWU6IGNyZWF0ZVRyYW5zZmVyU3RyYXRlZ3koam9pbkNsYXNzZXMpLAotICAv
KioKLSAgICogTmV2ZXIgdHJhbnNmZXIgdGhlIGByZWZgIHByb3AuCi0gICAqLwotICByZWY6IGVt
cHR5RnVuY3Rpb24sCi0gIC8qKgotICAgKiBUcmFuc2ZlciB0aGUgYHN0eWxlYCBwcm9wICh3aGlj
aCBpcyBhbiBvYmplY3QpIGJ5IG1lcmdpbmcgdGhlbS4KLSAgICovCi0gIHN0eWxlOiBjcmVhdGVU
cmFuc2ZlclN0cmF0ZWd5KG1lcmdlKQotfTsKLQotLyoqCi0gKiBSZWFjdFByb3BUcmFuc2ZlcmVy
IGFyZSBjYXBhYmxlIG9mIHRyYW5zZmVycmluZyBwcm9wcyB0byBhbm90aGVyIGNvbXBvbmVudAot
ICogdXNpbmcgYSBgdHJhbnNmZXJQcm9wc1RvYCBtZXRob2QuCi0gKgotICogQGNsYXNzIFJlYWN0
UHJvcFRyYW5zZmVyZXIKLSAqLwotdmFyIFJlYWN0UHJvcFRyYW5zZmVyZXIgPSB7Ci0KLSAgVHJh
bnNmZXJTdHJhdGVnaWVzOiBUcmFuc2ZlclN0cmF0ZWdpZXMsCi0KLSAgLyoqCi0gICAqIEBsZW5k
cyB7UmVhY3RQcm9wVHJhbnNmZXJlci5wcm90b3R5cGV9Ci0gICAqLwotICBNaXhpbjogewotCi0g
ICAgLyoqCi0gICAgICogVHJhbnNmZXIgcHJvcHMgZnJvbSB0aGlzIGNvbXBvbmVudCB0byBhIHRh
cmdldCBjb21wb25lbnQuCi0gICAgICoKLSAgICAgKiBQcm9wcyB0aGF0IGRvIG5vdCBoYXZlIGFu
IGV4cGxpY2l0IHRyYW5zZmVyIHN0cmF0ZWd5IHdpbGwgYmUgdHJhbnNmZXJyZWQKLSAgICAgKiBv
bmx5IGlmIHRoZSB0YXJnZXQgY29tcG9uZW50IGRvZXMgbm90IGFscmVhZHkgaGF2ZSB0aGUgcHJv
cCBzZXQuCi0gICAgICoKLSAgICAgKiBUaGlzIGlzIHVzdWFsbHkgdXNlZCB0byBwYXNzIGRvd24g
cHJvcHMgdG8gYSByZXR1cm5lZCByb290IGNvbXBvbmVudC4KLSAgICAgKgotICAgICAqIEBwYXJh
bSB7UmVhY3RDb21wb25lbnR9IGNvbXBvbmVudCBDb21wb25lbnQgcmVjZWl2aW5nIHRoZSBwcm9w
ZXJ0aWVzLgotICAgICAqIEByZXR1cm4ge1JlYWN0Q29tcG9uZW50fSBUaGUgc3VwcGxpZWQgYGNv
bXBvbmVudGAuCi0gICAgICogQGZpbmFsCi0gICAgICogQHByb3RlY3RlZAotICAgICAqLwotICAg
IHRyYW5zZmVyUHJvcHNUbzogZnVuY3Rpb24oY29tcG9uZW50KSB7Ci0gICAgICB2YXIgcHJvcHMg
PSB7fTsKLSAgICAgIGZvciAodmFyIHRoYXRLZXkgaW4gY29tcG9uZW50LnByb3BzKSB7Ci0gICAg
ICAgIGlmIChjb21wb25lbnQucHJvcHMuaGFzT3duUHJvcGVydHkodGhhdEtleSkpIHsKLSAgICAg
ICAgICBwcm9wc1t0aGF0S2V5XSA9IGNvbXBvbmVudC5wcm9wc1t0aGF0S2V5XTsKLSAgICAgICAg
fQotICAgICAgfQotICAgICAgZm9yICh2YXIgdGhpc0tleSBpbiB0aGlzLnByb3BzKSB7Ci0gICAg
ICAgIGlmICghdGhpcy5wcm9wcy5oYXNPd25Qcm9wZXJ0eSh0aGlzS2V5KSkgewotICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIHZhciB0cmFuc2ZlclN0cmF0ZWd5ID0gVHJh
bnNmZXJTdHJhdGVnaWVzW3RoaXNLZXldOwotICAgICAgICBpZiAodHJhbnNmZXJTdHJhdGVneSkg
ewotICAgICAgICAgIHRyYW5zZmVyU3RyYXRlZ3kocHJvcHMsIHRoaXNLZXksIHRoaXMucHJvcHNb
dGhpc0tleV0pOwotICAgICAgICB9IGVsc2UgaWYgKCFwcm9wcy5oYXNPd25Qcm9wZXJ0eSh0aGlz
S2V5KSkgewotICAgICAgICAgIHByb3BzW3RoaXNLZXldID0gdGhpcy5wcm9wc1t0aGlzS2V5XTsK
LSAgICAgICAgfQotICAgICAgfQotICAgICAgY29tcG9uZW50LnByb3BzID0gcHJvcHM7Ci0gICAg
ICByZXR1cm4gY29tcG9uZW50OwotICAgIH0KLQotICB9Ci0KLX07Ci0KLW1vZHVsZS5leHBvcnRz
ID0gUmVhY3RQcm9wVHJhbnNmZXJlcjsKLQotfSx7Ii4vZW1wdHlGdW5jdGlvbiI6NjQsIi4vam9p
bkNsYXNzZXMiOjc3LCIuL21lcmdlIjo4MX1dLDQ0OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxl
eHBvcnRzKXsKLS8qKgotICogQ29weXJpZ2h0IDIwMTMgRmFjZWJvb2ssIEluYy4KLSAqCi0gKiBM
aWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vu
c2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ug
d2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5z
ZSBhdAotICoKLSAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAot
ICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1Ig
Q09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNl
ZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNz
aW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICoKLSAqIEBwcm92
aWRlc01vZHVsZSBSZWFjdFByb3BUeXBlcwotICovCi0KLSJ1c2Ugc3RyaWN0IjsKLQotdmFyIGNy
ZWF0ZU9iamVjdEZyb20gPSByZXF1aXJlKCIuL2NyZWF0ZU9iamVjdEZyb20iKTsKLXZhciBpbnZh
cmlhbnQgPSByZXF1aXJlKCIuL2ludmFyaWFudCIpOwotCi0vKioKLSAqIENvbGxlY3Rpb24gb2Yg
bWV0aG9kcyB0aGF0IGFsbG93IGRlY2xhcmF0aW9uIGFuZCB2YWxpZGF0aW9uIG9mIHByb3BzIHRo
YXQgYXJlCi0gKiBzdXBwbGllZCB0byBSZWFjdCBjb21wb25lbnRzLiBFeGFtcGxlIHVzYWdlOgot
ICoKLSAqICAgdmFyIFByb3BzID0gcmVxdWlyZSgnUmVhY3RQcm9wVHlwZXMnKTsKLSAqICAgdmFy
IE15QXJ0aWNsZSA9IFJlYWN0LmNyZWF0ZUNsYXNzKHsKLSAqICAgICBwcm9wVHlwZXM6IHsKLSAq
ICAgICAgIC8vIEFuIG9wdGlvbmFsIHN0cmluZyBwcm9wIG5hbWVkICJkZXNjcmlwdGlvbiIuCi0g
KiAgICAgICBkZXNjcmlwdGlvbjogUHJvcHMuc3RyaW5nLAotICoKLSAqICAgICAgIC8vIEEgcmVx
dWlyZWQgZW51bSBwcm9wIG5hbWVkICJjYXRlZ29yeSIuCi0gKiAgICAgICBjYXRlZ29yeTogUHJv
cHMub25lT2YoWydOZXdzJywnUGhvdG9zJ10pLmlzUmVxdWlyZWQsCi0gKgotICogICAgICAgLy8g
QSBwcm9wIG5hbWVkICJkaWFsb2ciIHRoYXQgcmVxdWlyZXMgYW4gaW5zdGFuY2Ugb2YgRGlhbG9n
LgotICogICAgICAgZGlhbG9nOiBQcm9wcy5pbnN0YW5jZU9mKERpYWxvZykuaXNSZXF1aXJlZAot
ICogICAgIH0sCi0gKiAgICAgcmVuZGVyOiBmdW5jdGlvbigpIHsgLi4uIH0KLSAqICAgfSk7Ci0g
KgotICogQSBtb3JlIGZvcm1hbCBzcGVjaWZpY2F0aW9uIG9mIGhvdyB0aGVzZSBtZXRob2RzIGFy
ZSB1c2VkOgotICoKLSAqICAgdHlwZSA6PSBhcnJheXxib29sfG9iamVjdHxudW1iZXJ8c3RyaW5n
fG9uZU9mKFsuLi5dKXxpbnN0YW5jZU9mKC4uLikKLSAqICAgZGVjbCA6PSBSZWFjdFByb3BUeXBl
cy57dHlwZX0oLmlzUmVxdWlyZWQpPwotICoKLSAqIEVhY2ggYW5kIGV2ZXJ5IGRlY2xhcmF0aW9u
IHByb2R1Y2VzIGEgZnVuY3Rpb24gd2l0aCB0aGUgc2FtZSBzaWduYXR1cmUuIFRoaXMKLSAqIGFs
bG93cyB0aGUgY3JlYXRpb24gb2YgY3VzdG9tIHZhbGlkYXRpb24gZnVuY3Rpb25zLiBGb3IgZXhh
bXBsZToKLSAqCi0gKiAgIHZhciBQcm9wcyA9IHJlcXVpcmUoJ1JlYWN0UHJvcFR5cGVzJyk7Ci0g
KiAgIHZhciBNeUxpbmsgPSBSZWFjdC5jcmVhdGVDbGFzcyh7Ci0gKiAgICAgcHJvcFR5cGVzOiB7
Ci0gKiAgICAgICAvLyBBbiBvcHRpb25hbCBzdHJpbmcgb3IgVVJJIHByb3AgbmFtZWQgImhyZWYi
LgotICogICAgICAgaHJlZjogZnVuY3Rpb24ocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1l
KSB7Ci0gKiAgICAgICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1twcm9wTmFtZV07Ci0gKiAgICAg
ICAgIGludmFyaWFudCgKLSAqICAgICAgICAgICBwcm9wVmFsdWUgPT0gbnVsbCB8fAotICogICAg
ICAgICAgIHR5cGVvZiBwcm9wVmFsdWUgPT09IHN0cmluZyB8fAotICogICAgICAgICAgIHByb3BW
YWx1ZSBpbnN0YW5jZW9mIFVSSSwKLSAqICAgICAgICAgICAnSW52YWxpZCBgJXNgIHN1cHBsaWVk
IHRvIGAlc2AsIGV4cGVjdGVkIHN0cmluZyBvciBVUkkuJywKLSAqICAgICAgICAgICBwcm9wTmFt
ZSwKLSAqICAgICAgICAgICBjb21wb25lbnROYW1lCi0gKiAgICAgICAgICk7Ci0gKiAgICAgICB9
Ci0gKiAgICAgfSwKLSAqICAgICByZW5kZXI6IGZ1bmN0aW9uKCkgeyAuLi4gfQotICogICB9KTsK
LSAqCi0gKiBAaW50ZXJuYWwKLSAqLwotdmFyIFByb3BzID0gewotCi0gIGFycmF5OiBjcmVhdGVQ
cmltaXRpdmVUeXBlQ2hlY2tlcignYXJyYXknKSwKLSAgYm9vbDogY3JlYXRlUHJpbWl0aXZlVHlw
ZUNoZWNrZXIoJ2Jvb2xlYW4nKSwKLSAgZnVuYzogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIo
J2Z1bmN0aW9uJyksCi0gIG51bWJlcjogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ251bWJl
cicpLAotICBvYmplY3Q6IGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKCdvYmplY3QnKSwKLSAg
c3RyaW5nOiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcignc3RyaW5nJyksCi0KLSAgb25lT2Y6
IGNyZWF0ZUVudW1UeXBlQ2hlY2tlciwKLQotICBpbnN0YW5jZU9mOiBjcmVhdGVJbnN0YW5jZVR5
cGVDaGVja2VyCi0KLX07Ci0KLXZhciBBTk9OWU1PVVMgPSAnPDxhbm9ueW1vdXM+Pic7Ci0KLWZ1
bmN0aW9uIGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKGV4cGVjdGVkVHlwZSkgewotICBmdW5j
dGlvbiB2YWxpZGF0ZVByaW1pdGl2ZVR5cGUocHJvcFZhbHVlLCBwcm9wTmFtZSwgY29tcG9uZW50
TmFtZSkgewotICAgIHZhciBwcm9wVHlwZSA9IHR5cGVvZiBwcm9wVmFsdWU7Ci0gICAgaWYgKHBy
b3BUeXBlID09PSAnb2JqZWN0JyAmJiBBcnJheS5pc0FycmF5KHByb3BWYWx1ZSkpIHsKLSAgICAg
IHByb3BUeXBlID0gJ2FycmF5JzsKLSAgICB9Ci0gICAgaW52YXJpYW50KAotICAgICAgcHJvcFR5
cGUgPT09IGV4cGVjdGVkVHlwZSwKLSAgICAgICdJbnZhbGlkIHByb3AgYCVzYCBvZiB0eXBlIGAl
c2Agc3VwcGxpZWQgdG8gYCVzYCwgZXhwZWN0ZWQgYCVzYC4nLAotICAgICAgcHJvcE5hbWUsCi0g
ICAgICBwcm9wVHlwZSwKLSAgICAgIGNvbXBvbmVudE5hbWUsCi0gICAgICBleHBlY3RlZFR5cGUK
LSAgICApOwotICB9Ci0gIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0
ZVByaW1pdGl2ZVR5cGUpOwotfQotCi1mdW5jdGlvbiBjcmVhdGVFbnVtVHlwZUNoZWNrZXIoZXhw
ZWN0ZWRWYWx1ZXMpIHsKLSAgdmFyIGV4cGVjdGVkRW51bSA9IGNyZWF0ZU9iamVjdEZyb20oZXhw
ZWN0ZWRWYWx1ZXMpOwotICBmdW5jdGlvbiB2YWxpZGF0ZUVudW1UeXBlKHByb3BWYWx1ZSwgcHJv
cE5hbWUsIGNvbXBvbmVudE5hbWUpIHsKLSAgICBpbnZhcmlhbnQoCi0gICAgICBleHBlY3RlZEVu
dW1bcHJvcFZhbHVlXSwKLSAgICAgICdJbnZhbGlkIHByb3AgYCVzYCBzdXBwbGllZCB0byBgJXNg
LCBleHBlY3RlZCBvbmUgb2YgJXMuJywKLSAgICAgIHByb3BOYW1lLAotICAgICAgY29tcG9uZW50
TmFtZSwKLSAgICAgIEpTT04uc3RyaW5naWZ5KE9iamVjdC5rZXlzKGV4cGVjdGVkRW51bSkpCi0g
ICAgKTsKLSAgfQotICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGVF
bnVtVHlwZSk7Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZUluc3RhbmNlVHlwZUNoZWNrZXIoZXhwZWN0
ZWRDbGFzcykgewotICBmdW5jdGlvbiB2YWxpZGF0ZUluc3RhbmNlVHlwZShwcm9wVmFsdWUsIHBy
b3BOYW1lLCBjb21wb25lbnROYW1lKSB7Ci0gICAgaW52YXJpYW50KAotICAgICAgcHJvcFZhbHVl
IGluc3RhbmNlb2YgZXhwZWN0ZWRDbGFzcywKLSAgICAgICdJbnZhbGlkIHByb3AgYCVzYCBzdXBw
bGllZCB0byBgJXNgLCBleHBlY3RlZCBpbnN0YW5jZSBvZiBgJXNgLicsCi0gICAgICBwcm9wTmFt
ZSwKLSAgICAgIGNvbXBvbmVudE5hbWUsCi0gICAgICBleHBlY3RlZENsYXNzLm5hbWUgfHwgQU5P
TllNT1VTCi0gICAgKTsKLSAgfQotICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIo
dmFsaWRhdGVJbnN0YW5jZVR5cGUpOwotfQotCi1mdW5jdGlvbiBjcmVhdGVDaGFpbmFibGVUeXBl
Q2hlY2tlcih2YWxpZGF0ZSkgewotICBmdW5jdGlvbiBjcmVhdGVUeXBlQ2hlY2tlcihpc1JlcXVp
cmVkKSB7Ci0gICAgZnVuY3Rpb24gY2hlY2tUeXBlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50
TmFtZSkgewotICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTsKLSAgICAgIGlm
IChwcm9wVmFsdWUgIT0gbnVsbCkgewotICAgICAgICAvLyBPbmx5IHZhbGlkYXRlIGlmIHRoZXJl
IGlzIGEgdmFsdWUgdG8gY2hlY2suCi0gICAgICAgIHZhbGlkYXRlKHByb3BWYWx1ZSwgcHJvcE5h
bWUsIGNvbXBvbmVudE5hbWUgfHwgQU5PTllNT1VTKTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAg
IGludmFyaWFudCgKLSAgICAgICAgICAhaXNSZXF1aXJlZCwKLSAgICAgICAgICAnUmVxdWlyZWQg
cHJvcCBgJXNgIHdhcyBub3Qgc3BlY2lmaWVkIGluIGAlc2AuJywKLSAgICAgICAgICBwcm9wTmFt
ZSwKLSAgICAgICAgICBjb21wb25lbnROYW1lIHx8IEFOT05ZTU9VUwotICAgICAgICApOwotICAg
ICAgfQotICAgIH0KLSAgICBpZiAoIWlzUmVxdWlyZWQpIHsKLSAgICAgIGNoZWNrVHlwZS5pc1Jl
cXVpcmVkID0gY3JlYXRlVHlwZUNoZWNrZXIodHJ1ZSk7Ci0gICAgfQotICAgIHJldHVybiBjaGVj
a1R5cGU7Ci0gIH0KLSAgcmV0dXJuIGNyZWF0ZVR5cGVDaGVja2VyKGZhbHNlKTsKLX0KLQotbW9k
dWxlLmV4cG9ydHMgPSBQcm9wczsKLQotfSx7Ii4vY3JlYXRlT2JqZWN0RnJvbSI6NjIsIi4vaW52
YXJpYW50Ijo3NX1dLDQ1OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKLS8qKgot
ICogQ29weXJpZ2h0IDIwMTMgRmFjZWJvb2ssIEluYy4KLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0
aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBt
YXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z
ZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqIGh0
dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu
ICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBB
TlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBm
b3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxp
bWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICoKLSAqIEBwcm92aWRlc01vZHVsZSBSZWFj
dFJlY29uY2lsZVRyYW5zYWN0aW9uCi0gKiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seQotICovCi0K
LSJ1c2Ugc3RyaWN0IjsKLQotdmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gcmVxdWlyZSgiLi9F
eGVjdXRpb25FbnZpcm9ubWVudCIpOwotdmFyIFBvb2xlZENsYXNzID0gcmVxdWlyZSgiLi9Qb29s
ZWRDbGFzcyIpOwotdmFyIFJlYWN0RXZlbnRFbWl0dGVyID0gcmVxdWlyZSgiLi9SZWFjdEV2ZW50
RW1pdHRlciIpOwotdmFyIFJlYWN0SW5wdXRTZWxlY3Rpb24gPSByZXF1aXJlKCIuL1JlYWN0SW5w
dXRTZWxlY3Rpb24iKTsKLXZhciBSZWFjdE9uRE9NUmVhZHkgPSByZXF1aXJlKCIuL1JlYWN0T25E
T01SZWFkeSIpOwotdmFyIFRyYW5zYWN0aW9uID0gcmVxdWlyZSgiLi9UcmFuc2FjdGlvbiIpOwot
Ci12YXIgbWl4SW50byA9IHJlcXVpcmUoIi4vbWl4SW50byIpOwotCi0vKioKLSAqIEVuc3VyZXMg
dGhhdCwgd2hlbiBwb3NzaWJsZSwgdGhlIHNlbGVjdGlvbiByYW5nZSAoY3VycmVudGx5IHNlbGVj
dGVkIHRleHQKLSAqIGlucHV0KSBpcyBub3QgZGlzdHVyYmVkIGJ5IHBlcmZvcm1pbmcgdGhlIHRy
YW5zYWN0aW9uLgotICovCi12YXIgU0VMRUNUSU9OX1JFU1RPUkFUSU9OID0gewotICAvKioKLSAg
ICogQHJldHVybiB7U2VsZWN0aW9ufSBTZWxlY3Rpb24gaW5mb3JtYXRpb24uCi0gICAqLwotICBp
bml0aWFsaXplOiBSZWFjdElucHV0U2VsZWN0aW9uLmdldFNlbGVjdGlvbkluZm9ybWF0aW9uLAot
ICAvKioKLSAgICogQHBhcmFtIHtTZWxlY3Rpb259IHNlbCBTZWxlY3Rpb24gaW5mb3JtYXRpb24g
cmV0dXJuZWQgZnJvbSBgaW5pdGlhbGl6ZWAuCi0gICAqLwotICBjbG9zZTogUmVhY3RJbnB1dFNl
bGVjdGlvbi5yZXN0b3JlU2VsZWN0aW9uCi19OwotCi0vKioKLSAqIFN1cHByZXNzZXMgZXZlbnRz
IChibHVyL2ZvY3VzKSB0aGF0IGNvdWxkIGJlIGluYWR2ZXJ0ZW50bHkgZGlzcGF0Y2hlZCBkdWUg
dG8KLSAqIGhpZ2ggbGV2ZWwgRE9NIG1hbmlwdWxhdGlvbnMgKGxpa2UgdGVtcG9yYXJpbHkgcmVt
b3ZpbmcgYSB0ZXh0IGlucHV0IGZyb20gdGhlCi0gKiBET00pLgotICovCi12YXIgRVZFTlRfU1VQ
UFJFU1NJT04gPSB7Ci0gIC8qKgotICAgKiBAcmV0dXJuIHtib29sZWFufSBUaGUgZW5hYmxlZCBz
dGF0dXMgb2YgYFJlYWN0RXZlbnRFbWl0dGVyYCBiZWZvcmUgdGhlCi0gICAqIHJlY29uY2lsaWF0
aW9uLgotICAgKi8KLSAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGN1cnJlbnRs
eUVuYWJsZWQgPSBSZWFjdEV2ZW50RW1pdHRlci5pc0VuYWJsZWQoKTsKLSAgICBSZWFjdEV2ZW50
RW1pdHRlci5zZXRFbmFibGVkKGZhbHNlKTsKLSAgICByZXR1cm4gY3VycmVudGx5RW5hYmxlZDsK
LSAgfSwKLQotICAvKioKLSAgICogQHBhcmFtIHtib29sZWFufSBwcmV2aW91c2x5RW5hYmxlZCBF
bmFibGVkIHN0YXR1cyBvZiBgUmVhY3RFdmVudEVtaXR0ZXJgCi0gICAqICAgYmVmb3JlIHRoZSBy
ZWNvbmNpbGlhdGlvbiBvY2N1cmVkLiBgY2xvc2VgIHJlc3RvcmVzIHRoZSBwcmV2aW91cyB2YWx1
ZS4KLSAgICovCi0gIGNsb3NlOiBmdW5jdGlvbihwcmV2aW91c2x5RW5hYmxlZCkgewotICAgIFJl
YWN0RXZlbnRFbWl0dGVyLnNldEVuYWJsZWQocHJldmlvdXNseUVuYWJsZWQpOwotICB9Ci19Owot
Ci0vKioKLSAqIFByb3ZpZGVzIGEgYFJlYWN0T25ET01SZWFkeWAgcXVldWUgZm9yIGNvbGxlY3Rp
bmcgYG9uRE9NUmVhZHlgIGNhbGxiYWNrcwotICogZHVyaW5nIHRoZSBwZXJmb3JtaW5nIG9mIHRo
ZSB0cmFuc2FjdGlvbi4KLSAqLwotdmFyIE9OX0RPTV9SRUFEWV9RVUVVRUlORyA9IHsKLSAgLyoq
Ci0gICAqIEluaXRpYWxpemVzIHRoZSBpbnRlcm5hbCBgb25ET01SZWFkeWAgcXVldWUuCi0gICAq
LwotICBpbml0aWFsaXplOiBmdW5jdGlvbigpIHsKLSAgICB0aGlzLnJlYWN0T25ET01SZWFkeS5y
ZXNldCgpOwotICB9LAotCi0gIC8qKgotICAgKiBBZnRlciBET00gaXMgZmx1c2hlZCwgaW52b2tl
IGFsbCByZWdpc3RlcmVkIGBvbkRPTVJlYWR5YCBjYWxsYmFja3MuCi0gICAqLwotICBjbG9zZTog
ZnVuY3Rpb24oKSB7Ci0gICAgdGhpcy5yZWFjdE9uRE9NUmVhZHkubm90aWZ5QWxsKCk7Ci0gIH0K
LX07Ci0KLS8qKgotICogRXhlY3V0ZWQgd2l0aGluIHRoZSBzY29wZSBvZiB0aGUgYFRyYW5zYWN0
aW9uYCBpbnN0YW5jZS4gQ29uc2lkZXIgdGhlc2UgYXMKLSAqIGJlaW5nIG1lbWJlciBtZXRob2Rz
LCBidXQgd2l0aCBhbiBpbXBsaWVkIG9yZGVyaW5nIHdoaWxlIGJlaW5nIGlzb2xhdGVkIGZyb20K
LSAqIGVhY2ggb3RoZXIuCi0gKi8KLXZhciBUUkFOU0FDVElPTl9XUkFQUEVSUyA9IFsKLSAgU0VM
RUNUSU9OX1JFU1RPUkFUSU9OLAotICBFVkVOVF9TVVBQUkVTU0lPTiwKLSAgT05fRE9NX1JFQURZ
X1FVRVVFSU5HCi1dOwotCi0vKioKLSAqIEN1cnJlbnRseToKLSAqIC0gVGhlIG9yZGVyIHRoYXQg
dGhlc2UgYXJlIGxpc3RlZCBpbiB0aGUgdHJhbnNhY3Rpb24gaXMgY3JpdGljYWw6Ci0gKiAtIFN1
cHByZXNzZXMgZXZlbnRzLgotICogLSBSZXN0b3JlcyBzZWxlY3Rpb24gcmFuZ2UuCi0gKgotICog
RnV0dXJlOgotICogLSBSZXN0b3JlIGRvY3VtZW50L292ZXJmbG93IHNjcm9sbCBwb3NpdGlvbnMg
dGhhdCB3ZXJlIHVuaW50ZW50aW9uYWxseQotICogICBtb2RpZmllZCB2aWEgRE9NIGluc2VydGlv
bnMgYWJvdmUgdGhlIHRvcCB2aWV3cG9ydCBib3VuZGFyeS4KLSAqIC0gSW1wbGVtZW50L2ludGVn
cmF0ZSB3aXRoIGN1c3RvbWl6ZWQgY29uc3RyYWludCBiYXNlZCBsYXlvdXQgc3lzdGVtIGFuZCBr
ZWVwCi0gKiAgIHRyYWNrIG9mIHdoaWNoIGRpbWVuc2lvbnMgbXVzdCBiZSByZW1lYXN1cmVkLgot
ICoKLSAqIEBjbGFzcyBSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uCi0gKi8KLWZ1bmN0aW9uIFJl
YWN0UmVjb25jaWxlVHJhbnNhY3Rpb24oKSB7Ci0gIHRoaXMucmVpbml0aWFsaXplVHJhbnNhY3Rp
b24oKTsKLSAgdGhpcy5yZWFjdE9uRE9NUmVhZHkgPSBSZWFjdE9uRE9NUmVhZHkuZ2V0UG9vbGVk
KG51bGwpOwotfQotCi12YXIgTWl4aW4gPSB7Ci0gIC8qKgotICAgKiBAc2VlIFRyYW5zYWN0aW9u
Ci0gICAqIEBhYnN0cmFjdAotICAgKiBAZmluYWwKLSAgICogQHJldHVybiB7YXJyYXk8b2JqZWN0
Pn0gTGlzdCBvZiBvcGVyYXRpb24gd3JhcCBwcm9jZWVkdXJlcy4KLSAgICogICBUT0RPOiBjb252
ZXJ0IHRvIGFycmF5PFRyYW5zYWN0aW9uV3JhcHBlcj4KLSAgICovCi0gIGdldFRyYW5zYWN0aW9u
V3JhcHBlcnM6IGZ1bmN0aW9uKCkgewotICAgIGlmIChFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5V
c2VET00pIHsKLSAgICAgIHJldHVybiBUUkFOU0FDVElPTl9XUkFQUEVSUzsKLSAgICB9IGVsc2Ug
ewotICAgICAgcmV0dXJuIFtdOwotICAgIH0KLSAgfSwKLQotICAvKioKLSAgICogQHJldHVybiB7
b2JqZWN0fSBUaGUgcXVldWUgdG8gY29sbGVjdCBgb25ET01SZWFkeWAgY2FsbGJhY2tzIHdpdGgu
Ci0gICAqICAgVE9ETzogY29udmVydCB0byBSZWFjdE9uRE9NUmVhZHkKLSAgICovCi0gIGdldFJl
YWN0T25ET01SZWFkeTogZnVuY3Rpb24oKSB7Ci0gICAgcmV0dXJuIHRoaXMucmVhY3RPbkRPTVJl
YWR5OwotICB9LAotCi0gIC8qKgotICAgKiBgUG9vbGVkQ2xhc3NgIGxvb2tzIGZvciB0aGlzLCBh
bmQgd2lsbCBpbnZva2UgdGhpcyBiZWZvcmUgYWxsb3dpbmcgdGhpcwotICAgKiBpbnN0YW5jZSB0
byBiZSByZXN1c2VkLgotICAgKi8KLSAgZGVzdHJ1Y3RvcjogZnVuY3Rpb24oKSB7Ci0gICAgUmVh
Y3RPbkRPTVJlYWR5LnJlbGVhc2UodGhpcy5yZWFjdE9uRE9NUmVhZHkpOwotICAgIHRoaXMucmVh
Y3RPbkRPTVJlYWR5ID0gbnVsbDsKLSAgfQotfTsKLQotCi1taXhJbnRvKFJlYWN0UmVjb25jaWxl
VHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uLk1peGluKTsKLW1peEludG8oUmVhY3RSZWNvbmNpbGVU
cmFuc2FjdGlvbiwgTWl4aW4pOwotCi1Qb29sZWRDbGFzcy5hZGRQb29saW5nVG8oUmVhY3RSZWNv
bmNpbGVUcmFuc2FjdGlvbik7Ci0KLW1vZHVsZS5leHBvcnRzID0gUmVhY3RSZWNvbmNpbGVUcmFu
c2FjdGlvbjsKLQotfSx7Ii4vRXhlY3V0aW9uRW52aXJvbm1lbnQiOjE5LCIuL1Bvb2xlZENsYXNz
IjoyMCwiLi9SZWFjdEV2ZW50RW1pdHRlciI6MzMsIi4vUmVhY3RJbnB1dFNlbGVjdGlvbiI6MzYs
Ii4vUmVhY3RPbkRPTVJlYWR5Ijo0MSwiLi9UcmFuc2FjdGlvbiI6NTgsIi4vbWl4SW50byI6ODR9
XSw0NjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7Ci0vKioKLSAqIENvcHlyaWdo
dCAyMDEzIEZhY2Vib29rLCBJbmMuCi0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBM
aWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2Ug
dGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3Ug
bWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiBodHRwOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkg
YXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0
cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJB
U0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVp
dGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVj
aWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1
bmRlciB0aGUgTGljZW5zZS4KLSAqCi0gKiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seQotICogQHBy
b3ZpZGVzTW9kdWxlIFJlYWN0U2VydmVyUmVuZGVyaW5nCi0gKi8KLSJ1c2Ugc3RyaWN0IjsKLQot
dmFyIFJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24gPSByZXF1aXJlKCIuL1JlYWN0UmVjb25jaWxl
VHJhbnNhY3Rpb24iKTsKLXZhciBSZWFjdEluc3RhbmNlSGFuZGxlcyA9IHJlcXVpcmUoIi4vUmVh
Y3RJbnN0YW5jZUhhbmRsZXMiKTsKLQotLyoqCi0gKiBAcGFyYW0ge29iamVjdH0gY29tcG9uZW50
Ci0gKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjawotICovCi1mdW5jdGlvbiByZW5kZXJDb21w
b25lbnRUb1N0cmluZyhjb21wb25lbnQsIGNhbGxiYWNrKSB7Ci0gIC8vIFdlIHVzZSBhIGNhbGxi
YWNrIEFQSSB0byBrZWVwIHRoZSBBUEkgYXN5bmMgaW4gY2FzZSBpbiB0aGUgZnV0dXJlIHdlIGV2
ZXIKLSAgLy8gbmVlZCBpdCwgYnV0IGluIHJlYWxpdHkgdGhpcyBpcyBhIHN5bmNocm9ub3VzIG9w
ZXJhdGlvbi4KLSAgdmFyIGlkID0gUmVhY3RJbnN0YW5jZUhhbmRsZXMuY3JlYXRlUmVhY3RSb290
SUQoKTsKLSAgdmFyIHRyYW5zYWN0aW9uID0gUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbi5nZXRQ
b29sZWQoKTsKLSAgdHJhbnNhY3Rpb24ucmVpbml0aWFsaXplVHJhbnNhY3Rpb24oKTsKLSAgdHJ5
IHsKLSAgICB0cmFuc2FjdGlvbi5wZXJmb3JtKGZ1bmN0aW9uKCkgewotICAgICAgY2FsbGJhY2so
Y29tcG9uZW50Lm1vdW50Q29tcG9uZW50KGlkLCB0cmFuc2FjdGlvbikpOwotICAgIH0sIG51bGwp
OwotICB9IGZpbmFsbHkgewotICAgIFJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24ucmVsZWFzZSh0
cmFuc2FjdGlvbik7Ci0gIH0KLX0KLQotbW9kdWxlLmV4cG9ydHMgPSB7Ci0gIHJlbmRlckNvbXBv
bmVudFRvU3RyaW5nOiByZW5kZXJDb21wb25lbnRUb1N0cmluZwotfTsKLQotfSx7Ii4vUmVhY3RJ
bnN0YW5jZUhhbmRsZXMiOjM3LCIuL1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24iOjQ1fV0sNDc6
W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewotLyoqCi0gKiBDb3B5cmlnaHQgMjAx
MyBGYWNlYm9vaywgSW5jLgotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5z
ZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMg
ZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBv
YnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogaHR0cDovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxp
Y2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0
ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywK
LSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIg
ZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMg
bGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIg
dGhlIExpY2Vuc2UuCi0gKgotICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0VGV4dENvbXBvbmVudAot
ICogQHR5cGVjaGVja3Mgc3RhdGljLW9ubHkKLSAqLwotCi0idXNlIHN0cmljdCI7Ci0KLXZhciBS
ZWFjdENvbXBvbmVudCA9IHJlcXVpcmUoIi4vUmVhY3RDb21wb25lbnQiKTsKLXZhciBSZWFjdElE
ID0gcmVxdWlyZSgiLi9SZWFjdElEIik7Ci0KLXZhciBlc2NhcGVUZXh0Rm9yQnJvd3NlciA9IHJl
cXVpcmUoIi4vZXNjYXBlVGV4dEZvckJyb3dzZXIiKTsKLXZhciBtaXhJbnRvID0gcmVxdWlyZSgi
Li9taXhJbnRvIik7Ci0KLS8qKgotICogVGV4dCBub2RlcyB2aW9sYXRlIGEgY291cGxlIGFzc3Vt
cHRpb25zIHRoYXQgUmVhY3QgbWFrZXMgYWJvdXQgY29tcG9uZW50czoKLSAqCi0gKiAgLSBXaGVu
IG1vdW50aW5nIHRleHQgaW50byB0aGUgRE9NLCBhZGphY2VudCB0ZXh0IG5vZGVzIGFyZSBtZXJn
ZWQuCi0gKiAgLSBUZXh0IG5vZGVzIGNhbm5vdCBiZSBhc3NpZ25lZCBhIFJlYWN0IHJvb3QgSUQu
Ci0gKgotICogVGhpcyBjb21wb25lbnQgaXMgdXNlZCB0byB3cmFwIHN0cmluZ3MgaW4gZWxlbWVu
dHMgc28gdGhhdCB0aGV5IGNhbiB1bmRlcmdvCi0gKiB0aGUgc2FtZSByZWNvbmNpbGlhdGlvbiB0
aGF0IGlzIGFwcGxpZWQgdG8gZWxlbWVudHMuCi0gKgotICogVE9ETzogSW52ZXN0aWdhdGUgcmVw
cmVzZW50aW5nIFJlYWN0IGNvbXBvbmVudHMgaW4gdGhlIERPTSB3aXRoIHRleHQgbm9kZXMuCi0g
KgotICogQGNsYXNzIFJlYWN0VGV4dENvbXBvbmVudAotICogQGV4dGVuZHMgUmVhY3RDb21wb25l
bnQKLSAqIEBpbnRlcm5hbAotICovCi12YXIgUmVhY3RUZXh0Q29tcG9uZW50ID0gZnVuY3Rpb24o
aW5pdGlhbFRleHQpIHsKLSAgdGhpcy5jb25zdHJ1Y3Qoe3RleHQ6IGluaXRpYWxUZXh0fSk7Ci19
OwotCi1taXhJbnRvKFJlYWN0VGV4dENvbXBvbmVudCwgUmVhY3RDb21wb25lbnQuTWl4aW4pOwot
bWl4SW50byhSZWFjdFRleHRDb21wb25lbnQsIHsKLQotICAvKioKLSAgICogQ3JlYXRlcyB0aGUg
bWFya3VwIGZvciB0aGlzIHRleHQgbm9kZS4gVGhpcyBub2RlIGlzIG5vdCBpbnRlbmRlZCB0byBo
YXZlCi0gICAqIGFueSBmZWF0dXJlcyBiZXNpZGVzIGNvbnRhaW5pbmcgdGV4dCBjb250ZW50Lgot
ICAgKgotICAgKiBAcGFyYW0ge3N0cmluZ30gcm9vdElEIERPTSBJRCBvZiB0aGUgcm9vdCBub2Rl
LgotICAgKiBAcmV0dXJuIHtzdHJpbmd9IE1hcmt1cCBmb3IgdGhpcyB0ZXh0IG5vZGUuCi0gICAq
IEBpbnRlcm5hbAotICAgKi8KLSAgbW91bnRDb21wb25lbnQ6IGZ1bmN0aW9uKHJvb3RJRCkgewot
ICAgIFJlYWN0Q29tcG9uZW50Lk1peGluLm1vdW50Q29tcG9uZW50LmNhbGwodGhpcywgcm9vdElE
KTsKLSAgICByZXR1cm4gKAotICAgICAgJzxzcGFuICcgKyBSZWFjdElELkFUVFJfTkFNRSArICc9
IicgKyByb290SUQgKyAnIj4nICsKLSAgICAgICAgZXNjYXBlVGV4dEZvckJyb3dzZXIodGhpcy5w
cm9wcy50ZXh0KSArCi0gICAgICAnPC9zcGFuPicKLSAgICApOwotICB9LAotCi0gIC8qKgotICAg
KiBVcGRhdGVzIHRoaXMgY29tcG9uZW50IGJ5IHVwZGF0aW5nIHRoZSB0ZXh0IGNvbnRlbnQuCi0g
ICAqCi0gICAqIEBwYXJhbSB7b2JqZWN0fSBuZXh0UHJvcHMgQ29udGFpbnMgdGhlIG5leHQgdGV4
dCBjb250ZW50LgotICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5z
YWN0aW9uCi0gICAqIEBpbnRlcm5hbAotICAgKi8KLSAgcmVjZWl2ZVByb3BzOiBmdW5jdGlvbihu
ZXh0UHJvcHMsIHRyYW5zYWN0aW9uKSB7Ci0gICAgaWYgKG5leHRQcm9wcy50ZXh0ICE9PSB0aGlz
LnByb3BzLnRleHQpIHsKLSAgICAgIHRoaXMucHJvcHMudGV4dCA9IG5leHRQcm9wcy50ZXh0Owot
ICAgICAgUmVhY3RDb21wb25lbnQuRE9NSURPcGVyYXRpb25zLnVwZGF0ZVRleHRDb250ZW50QnlJ
RCgKLSAgICAgICAgdGhpcy5fcm9vdE5vZGVJRCwKLSAgICAgICAgbmV4dFByb3BzLnRleHQKLSAg
ICAgICk7Ci0gICAgfQotICB9Ci0KLX0pOwotCi1tb2R1bGUuZXhwb3J0cyA9IFJlYWN0VGV4dENv
bXBvbmVudDsKLQotfSx7Ii4vUmVhY3RDb21wb25lbnQiOjIyLCIuL1JlYWN0SUQiOjM1LCIuL2Vz
Y2FwZVRleHRGb3JCcm93c2VyIjo2NSwiLi9taXhJbnRvIjo4NH1dLDQ4OltmdW5jdGlvbihyZXF1
aXJlLG1vZHVsZSxleHBvcnRzKXsKLS8qKgotICogQ29weXJpZ2h0IDIwMTMgRmFjZWJvb2ssIElu
Yy4KLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4w
ICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBv
ZiB0aGUgTGljZW5zZSBhdAotICoKLSAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBh
Z3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBM
aWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdB
UlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1w
bGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVy
bmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgot
ICoKLSAqIEBwcm92aWRlc01vZHVsZSBSZWFjdFVwZGF0ZXMKLSAqLwotCi0idXNlIHN0cmljdCI7
Ci0KLXZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCIuL2ludmFyaWFudCIpOwotCi12YXIgaXNCYXRj
aGluZ1VwZGF0ZXMgPSBmYWxzZTsKLQotdmFyIGRpcnR5Q29tcG9uZW50cyA9IFtdOwotCi0vKioK
LSAqIENhbGwgdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIGluIGEgY29udGV4dCB3aXRoaW4gd2hpY2gg
Y2FsbHMgdG8gYHNldFN0YXRlYCBhbmQKLSAqIGZyaWVuZHMgYXJlIGJhdGNoZWQgc3VjaCB0aGF0
IGNvbXBvbmVudHMgYXJlbid0IHVwZGF0ZWQgdW5uZWNlc3NhcmlseS4KLSAqLwotZnVuY3Rpb24g
YmF0Y2hlZFVwZGF0ZXMoY2FsbGJhY2spIHsKLSAgaWYgKGlzQmF0Y2hpbmdVcGRhdGVzKSB7Ci0g
ICAgLy8gV2UncmUgYWxyZWFkeSBleGVjdXRpbmcgaW4gYW4gZW52aXJvbm1lbnQgd2hlcmUgdXBk
YXRlcyB3aWxsIGJlIGJhdGNoZWQsCi0gICAgLy8gc28gdGhpcyBpcyBhIG5vLW9wLgotICAgIGNh
bGxiYWNrKCk7Ci0gICAgcmV0dXJuOwotICB9Ci0KLSAgaXNCYXRjaGluZ1VwZGF0ZXMgPSB0cnVl
OwotCi0gIHRyeSB7Ci0gICAgY2FsbGJhY2soKTsKLSAgICAvLyBUT0RPOiBTb3J0IGNvbXBvbmVu
dHMgYnkgZGVwdGggc3VjaCB0aGF0IHBhcmVudCBjb21wb25lbnRzIHVwZGF0ZSBmaXJzdAotICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgZGlydHlDb21wb25lbnRzLmxlbmd0aDsgaSsrKSB7Ci0gICAg
ICAvLyBJZiBhIGNvbXBvbmVudCBpcyB1bm1vdW50ZWQgYmVmb3JlIHBlbmRpbmcgY2hhbmdlcyBh
cHBseSwgaWdub3JlIHRoZW0KLSAgICAgIC8vIFRPRE86IFF1ZXVlIHVubW91bnRzIGluIHRoZSBz
YW1lIGxpc3QgdG8gYXZvaWQgdGhpcyBoYXBwZW5pbmcgYXQgYWxsCi0gICAgICB2YXIgY29tcG9u
ZW50ID0gZGlydHlDb21wb25lbnRzW2ldOwotICAgICAgaWYgKGNvbXBvbmVudC5pc01vdW50ZWQo
KSkgewotICAgICAgICAvLyBJZiBwZXJmb3JtVXBkYXRlSWZOZWNlc3NhcnkgaGFwcGVucyB0byBl
bnF1ZXVlIGFueSBuZXcgdXBkYXRlcywgd2UKLSAgICAgICAgLy8gc2hvdWxkbid0IGV4ZWN1dGUg
dGhlIGNhbGxiYWNrcyB1bnRpbCB0aGUgbmV4dCByZW5kZXIgaGFwcGVucywgc28KLSAgICAgICAg
Ly8gc3Rhc2ggdGhlIGNhbGxiYWNrcyBmaXJzdAotICAgICAgICB2YXIgY2FsbGJhY2tzID0gY29t
cG9uZW50Ll9wZW5kaW5nQ2FsbGJhY2tzOwotICAgICAgICBjb21wb25lbnQuX3BlbmRpbmdDYWxs
YmFja3MgPSBudWxsOwotICAgICAgICBjb21wb25lbnQucGVyZm9ybVVwZGF0ZUlmTmVjZXNzYXJ5
KCk7Ci0gICAgICAgIGlmIChjYWxsYmFja3MpIHsKLSAgICAgICAgICBmb3IgKHZhciBqID0gMDsg
aiA8IGNhbGxiYWNrcy5sZW5ndGg7IGorKykgewotICAgICAgICAgICAgY2FsbGJhY2tzW2pdKCk7
Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICB9IGNhdGNoIChlcnJv
cikgewotICAgIC8vIElFOCByZXF1aXJlcyBgY2F0Y2hgIGluIG9yZGVyIHRvIHVzZSBgZmluYWxs
eWAuCi0gICAgdGhyb3cgZXJyb3I7Ci0gIH0gZmluYWxseSB7Ci0gICAgZGlydHlDb21wb25lbnRz
Lmxlbmd0aCA9IDA7Ci0gICAgaXNCYXRjaGluZ1VwZGF0ZXMgPSBmYWxzZTsKLSAgfQotfQotCi0v
KioKLSAqIE1hcmsgYSBjb21wb25lbnQgYXMgbmVlZGluZyBhIHJlcmVuZGVyLCBhZGRpbmcgYW4g
b3B0aW9uYWwgY2FsbGJhY2sgdG8gYQotICogbGlzdCBvZiBmdW5jdGlvbnMgd2hpY2ggd2lsbCBi
ZSBleGVjdXRlZCBvbmNlIHRoZSByZXJlbmRlciBvY2N1cnMuCi0gKi8KLWZ1bmN0aW9uIGVucXVl
dWVVcGRhdGUoY29tcG9uZW50LCBjYWxsYmFjaykgewotICBpbnZhcmlhbnQoCi0gICAgIWNhbGxi
YWNrIHx8IHR5cGVvZiBjYWxsYmFjayA9PT0gImZ1bmN0aW9uIiwKLSAgICAnZW5xdWV1ZVVwZGF0
ZSguLi4pOiBZb3UgY2FsbGVkIGBzZXRQcm9wc2AsIGByZXBsYWNlUHJvcHNgLCAnICsKLSAgICAn
YHNldFN0YXRlYCwgYHJlcGxhY2VTdGF0ZWAsIG9yIGBmb3JjZVVwZGF0ZWAgd2l0aCBhIGNhbGxi
YWNrIHRoYXQgJyArCi0gICAgJ2lzblwndCBjYWxsYWJsZS4nCi0gICk7Ci0KLSAgaWYgKCFpc0Jh
dGNoaW5nVXBkYXRlcykgewotICAgIGNvbXBvbmVudC5wZXJmb3JtVXBkYXRlSWZOZWNlc3Nhcnko
KTsKLSAgICBjYWxsYmFjayAmJiBjYWxsYmFjaygpOwotICAgIHJldHVybjsKLSAgfQotCi0gIGRp
cnR5Q29tcG9uZW50cy5wdXNoKGNvbXBvbmVudCk7Ci0KLSAgaWYgKGNhbGxiYWNrKSB7Ci0gICAg
aWYgKGNvbXBvbmVudC5fcGVuZGluZ0NhbGxiYWNrcykgewotICAgICAgY29tcG9uZW50Ll9wZW5k
aW5nQ2FsbGJhY2tzLnB1c2goY2FsbGJhY2spOwotICAgIH0gZWxzZSB7Ci0gICAgICBjb21wb25l
bnQuX3BlbmRpbmdDYWxsYmFja3MgPSBbY2FsbGJhY2tdOwotICAgIH0KLSAgfQotfQotCi12YXIg
UmVhY3RVcGRhdGVzID0gewotICBiYXRjaGVkVXBkYXRlczogYmF0Y2hlZFVwZGF0ZXMsCi0gIGVu
cXVldWVVcGRhdGU6IGVucXVldWVVcGRhdGUKLX07Ci0KLW1vZHVsZS5leHBvcnRzID0gUmVhY3RV
cGRhdGVzOwotCi19LHsiLi9pbnZhcmlhbnQiOjc1fV0sNDk6W2Z1bmN0aW9uKHJlcXVpcmUsbW9k
dWxlLGV4cG9ydHMpewotLyoqCi0gKiBDb3B5cmlnaHQgMjAxMyBGYWNlYm9vaywgSW5jLgotICoK
LSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAi
TGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxp
YW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBM
aWNlbnNlIGF0Ci0gKgotICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug
aXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElF
UyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgot
ICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBl
cm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKgotICog
QHByb3ZpZGVzTW9kdWxlIFNpbXBsZUV2ZW50UGx1Z2luCi0gKi8KLQotInVzZSBzdHJpY3QiOwot
Ci12YXIgRXZlbnRDb25zdGFudHMgPSByZXF1aXJlKCIuL0V2ZW50Q29uc3RhbnRzIik7Ci12YXIg
RXZlbnRQcm9wYWdhdG9ycyA9IHJlcXVpcmUoIi4vRXZlbnRQcm9wYWdhdG9ycyIpOwotdmFyIFN5
bnRoZXRpY0V2ZW50ID0gcmVxdWlyZSgiLi9TeW50aGV0aWNFdmVudCIpOwotdmFyIFN5bnRoZXRp
Y0ZvY3VzRXZlbnQgPSByZXF1aXJlKCIuL1N5bnRoZXRpY0ZvY3VzRXZlbnQiKTsKLXZhciBTeW50
aGV0aWNLZXlib2FyZEV2ZW50ID0gcmVxdWlyZSgiLi9TeW50aGV0aWNLZXlib2FyZEV2ZW50Iik7
Ci12YXIgU3ludGhldGljTW91c2VFdmVudCA9IHJlcXVpcmUoIi4vU3ludGhldGljTW91c2VFdmVu
dCIpOwotdmFyIFN5bnRoZXRpY011dGF0aW9uRXZlbnQgPSByZXF1aXJlKCIuL1N5bnRoZXRpY011
dGF0aW9uRXZlbnQiKTsKLXZhciBTeW50aGV0aWNUb3VjaEV2ZW50ID0gcmVxdWlyZSgiLi9TeW50
aGV0aWNUb3VjaEV2ZW50Iik7Ci12YXIgU3ludGhldGljVUlFdmVudCA9IHJlcXVpcmUoIi4vU3lu
dGhldGljVUlFdmVudCIpOwotdmFyIFN5bnRoZXRpY1doZWVsRXZlbnQgPSByZXF1aXJlKCIuL1N5
bnRoZXRpY1doZWVsRXZlbnQiKTsKLQotdmFyIGludmFyaWFudCA9IHJlcXVpcmUoIi4vaW52YXJp
YW50Iik7Ci12YXIga2V5T2YgPSByZXF1aXJlKCIuL2tleU9mIik7Ci0KLXZhciB0b3BMZXZlbFR5
cGVzID0gRXZlbnRDb25zdGFudHMudG9wTGV2ZWxUeXBlczsKLQotdmFyIGV2ZW50VHlwZXMgPSB7
Ci0gIGJsdXI6IHsKLSAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczogewotICAgICAgYnViYmxl
ZDoga2V5T2Yoe29uQmx1cjogdHJ1ZX0pLAotICAgICAgY2FwdHVyZWQ6IGtleU9mKHtvbkJsdXJD
YXB0dXJlOiB0cnVlfSkKLSAgICB9Ci0gIH0sCi0gIGNsaWNrOiB7Ci0gICAgcGhhc2VkUmVnaXN0
cmF0aW9uTmFtZXM6IHsKLSAgICAgIGJ1YmJsZWQ6IGtleU9mKHtvbkNsaWNrOiB0cnVlfSksCi0g
ICAgICBjYXB0dXJlZDoga2V5T2Yoe29uQ2xpY2tDYXB0dXJlOiB0cnVlfSkKLSAgICB9Ci0gIH0s
Ci0gIGRvdWJsZUNsaWNrOiB7Ci0gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHsKLSAgICAg
IGJ1YmJsZWQ6IGtleU9mKHtvbkRvdWJsZUNsaWNrOiB0cnVlfSksCi0gICAgICBjYXB0dXJlZDog
a2V5T2Yoe29uRG91YmxlQ2xpY2tDYXB0dXJlOiB0cnVlfSkKLSAgICB9Ci0gIH0sCi0gIGRyYWc6
IHsKLSAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczogewotICAgICAgYnViYmxlZDoga2V5T2Yo
e29uRHJhZzogdHJ1ZX0pLAotICAgICAgY2FwdHVyZWQ6IGtleU9mKHtvbkRyYWdDYXB0dXJlOiB0
cnVlfSkKLSAgICB9Ci0gIH0sCi0gIGRyYWdFbmQ6IHsKLSAgICBwaGFzZWRSZWdpc3RyYXRpb25O
YW1lczogewotICAgICAgYnViYmxlZDoga2V5T2Yoe29uRHJhZ0VuZDogdHJ1ZX0pLAotICAgICAg
Y2FwdHVyZWQ6IGtleU9mKHtvbkRyYWdFbmRDYXB0dXJlOiB0cnVlfSkKLSAgICB9Ci0gIH0sCi0g
IGRyYWdFbnRlcjogewotICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7Ci0gICAgICBidWJi
bGVkOiBrZXlPZih7b25EcmFnRW50ZXI6IHRydWV9KSwKLSAgICAgIGNhcHR1cmVkOiBrZXlPZih7
b25EcmFnRW50ZXJDYXB0dXJlOiB0cnVlfSkKLSAgICB9Ci0gIH0sCi0gIGRyYWdFeGl0OiB7Ci0g
ICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHsKLSAgICAgIGJ1YmJsZWQ6IGtleU9mKHtvbkRy
YWdFeGl0OiB0cnVlfSksCi0gICAgICBjYXB0dXJlZDoga2V5T2Yoe29uRHJhZ0V4aXRDYXB0dXJl
OiB0cnVlfSkKLSAgICB9Ci0gIH0sCi0gIGRyYWdMZWF2ZTogewotICAgIHBoYXNlZFJlZ2lzdHJh
dGlvbk5hbWVzOiB7Ci0gICAgICBidWJibGVkOiBrZXlPZih7b25EcmFnTGVhdmU6IHRydWV9KSwK
LSAgICAgIGNhcHR1cmVkOiBrZXlPZih7b25EcmFnTGVhdmVDYXB0dXJlOiB0cnVlfSkKLSAgICB9
Ci0gIH0sCi0gIGRyYWdPdmVyOiB7Ci0gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHsKLSAg
ICAgIGJ1YmJsZWQ6IGtleU9mKHtvbkRyYWdPdmVyOiB0cnVlfSksCi0gICAgICBjYXB0dXJlZDog
a2V5T2Yoe29uRHJhZ092ZXJDYXB0dXJlOiB0cnVlfSkKLSAgICB9Ci0gIH0sCi0gIGRyYWdTdGFy
dDogewotICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7Ci0gICAgICBidWJibGVkOiBrZXlP
Zih7b25EcmFnU3RhcnQ6IHRydWV9KSwKLSAgICAgIGNhcHR1cmVkOiBrZXlPZih7b25EcmFnU3Rh
cnRDYXB0dXJlOiB0cnVlfSkKLSAgICB9Ci0gIH0sCi0gIGRyb3A6IHsKLSAgICBwaGFzZWRSZWdp
c3RyYXRpb25OYW1lczogewotICAgICAgYnViYmxlZDoga2V5T2Yoe29uRHJvcDogdHJ1ZX0pLAot
ICAgICAgY2FwdHVyZWQ6IGtleU9mKHtvbkRyb3BDYXB0dXJlOiB0cnVlfSkKLSAgICB9Ci0gIH0s
Ci0gIERPTUNoYXJhY3RlckRhdGFNb2RpZmllZDogewotICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5h
bWVzOiB7Ci0gICAgICBidWJibGVkOiBrZXlPZih7b25ET01DaGFyYWN0ZXJEYXRhTW9kaWZpZWQ6
IHRydWV9KSwKLSAgICAgIGNhcHR1cmVkOiBrZXlPZih7b25ET01DaGFyYWN0ZXJEYXRhTW9kaWZp
ZWRDYXB0dXJlOiB0cnVlfSkKLSAgICB9Ci0gIH0sCi0gIGZvY3VzOiB7Ci0gICAgcGhhc2VkUmVn
aXN0cmF0aW9uTmFtZXM6IHsKLSAgICAgIGJ1YmJsZWQ6IGtleU9mKHtvbkZvY3VzOiB0cnVlfSks
Ci0gICAgICBjYXB0dXJlZDoga2V5T2Yoe29uRm9jdXNDYXB0dXJlOiB0cnVlfSkKLSAgICB9Ci0g
IH0sCi0gIGlucHV0OiB7Ci0gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHsKLSAgICAgIGJ1
YmJsZWQ6IGtleU9mKHtvbklucHV0OiB0cnVlfSksCi0gICAgICBjYXB0dXJlZDoga2V5T2Yoe29u
SW5wdXRDYXB0dXJlOiB0cnVlfSkKLSAgICB9Ci0gIH0sCi0gIGtleURvd246IHsKLSAgICBwaGFz
ZWRSZWdpc3RyYXRpb25OYW1lczogewotICAgICAgYnViYmxlZDoga2V5T2Yoe29uS2V5RG93bjog
dHJ1ZX0pLAotICAgICAgY2FwdHVyZWQ6IGtleU9mKHtvbktleURvd25DYXB0dXJlOiB0cnVlfSkK
LSAgICB9Ci0gIH0sCi0gIGtleVByZXNzOiB7Ci0gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6
IHsKLSAgICAgIGJ1YmJsZWQ6IGtleU9mKHtvbktleVByZXNzOiB0cnVlfSksCi0gICAgICBjYXB0
dXJlZDoga2V5T2Yoe29uS2V5UHJlc3NDYXB0dXJlOiB0cnVlfSkKLSAgICB9Ci0gIH0sCi0gIGtl
eVVwOiB7Ci0gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHsKLSAgICAgIGJ1YmJsZWQ6IGtl
eU9mKHtvbktleVVwOiB0cnVlfSksCi0gICAgICBjYXB0dXJlZDoga2V5T2Yoe29uS2V5VXBDYXB0
dXJlOiB0cnVlfSkKLSAgICB9Ci0gIH0sCi0gIC8vIE5vdGU6IFdlIGRvIG5vdCBhbGxvdyBsaXN0
ZW5pbmcgdG8gbW91c2VPdmVyIGV2ZW50cy4gSW5zdGVhZCwgdXNlIHRoZQotICAvLyBvbk1vdXNl
RW50ZXIvb25Nb3VzZUxlYXZlIGNyZWF0ZWQgYnkgYEVudGVyTGVhdmVFdmVudFBsdWdpbmAuCi0g
IG1vdXNlRG93bjogewotICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7Ci0gICAgICBidWJi
bGVkOiBrZXlPZih7b25Nb3VzZURvd246IHRydWV9KSwKLSAgICAgIGNhcHR1cmVkOiBrZXlPZih7
b25Nb3VzZURvd25DYXB0dXJlOiB0cnVlfSkKLSAgICB9Ci0gIH0sCi0gIG1vdXNlTW92ZTogewot
ICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7Ci0gICAgICBidWJibGVkOiBrZXlPZih7b25N
b3VzZU1vdmU6IHRydWV9KSwKLSAgICAgIGNhcHR1cmVkOiBrZXlPZih7b25Nb3VzZU1vdmVDYXB0
dXJlOiB0cnVlfSkKLSAgICB9Ci0gIH0sCi0gIG1vdXNlVXA6IHsKLSAgICBwaGFzZWRSZWdpc3Ry
YXRpb25OYW1lczogewotICAgICAgYnViYmxlZDoga2V5T2Yoe29uTW91c2VVcDogdHJ1ZX0pLAot
ICAgICAgY2FwdHVyZWQ6IGtleU9mKHtvbk1vdXNlVXBDYXB0dXJlOiB0cnVlfSkKLSAgICB9Ci0g
IH0sCi0gIHNjcm9sbDogewotICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7Ci0gICAgICBi
dWJibGVkOiBrZXlPZih7b25TY3JvbGw6IHRydWV9KSwKLSAgICAgIGNhcHR1cmVkOiBrZXlPZih7
b25TY3JvbGxDYXB0dXJlOiB0cnVlfSkKLSAgICB9Ci0gIH0sCi0gIHN1Ym1pdDogewotICAgIHBo
YXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7Ci0gICAgICBidWJibGVkOiBrZXlPZih7b25TdWJtaXQ6
IHRydWV9KSwKLSAgICAgIGNhcHR1cmVkOiBrZXlPZih7b25TdWJtaXRDYXB0dXJlOiB0cnVlfSkK
LSAgICB9Ci0gIH0sCi0gIHRvdWNoQ2FuY2VsOiB7Ci0gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFt
ZXM6IHsKLSAgICAgIGJ1YmJsZWQ6IGtleU9mKHtvblRvdWNoQ2FuY2VsOiB0cnVlfSksCi0gICAg
ICBjYXB0dXJlZDoga2V5T2Yoe29uVG91Y2hDYW5jZWxDYXB0dXJlOiB0cnVlfSkKLSAgICB9Ci0g
IH0sCi0gIHRvdWNoRW5kOiB7Ci0gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHsKLSAgICAg
IGJ1YmJsZWQ6IGtleU9mKHtvblRvdWNoRW5kOiB0cnVlfSksCi0gICAgICBjYXB0dXJlZDoga2V5
T2Yoe29uVG91Y2hFbmRDYXB0dXJlOiB0cnVlfSkKLSAgICB9Ci0gIH0sCi0gIHRvdWNoTW92ZTog
ewotICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7Ci0gICAgICBidWJibGVkOiBrZXlPZih7
b25Ub3VjaE1vdmU6IHRydWV9KSwKLSAgICAgIGNhcHR1cmVkOiBrZXlPZih7b25Ub3VjaE1vdmVD
YXB0dXJlOiB0cnVlfSkKLSAgICB9Ci0gIH0sCi0gIHRvdWNoU3RhcnQ6IHsKLSAgICBwaGFzZWRS
ZWdpc3RyYXRpb25OYW1lczogewotICAgICAgYnViYmxlZDoga2V5T2Yoe29uVG91Y2hTdGFydDog
dHJ1ZX0pLAotICAgICAgY2FwdHVyZWQ6IGtleU9mKHtvblRvdWNoU3RhcnRDYXB0dXJlOiB0cnVl
fSkKLSAgICB9Ci0gIH0sCi0gIHdoZWVsOiB7Ci0gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6
IHsKLSAgICAgIGJ1YmJsZWQ6IGtleU9mKHtvbldoZWVsOiB0cnVlfSksCi0gICAgICBjYXB0dXJl
ZDoga2V5T2Yoe29uV2hlZWxDYXB0dXJlOiB0cnVlfSkKLSAgICB9Ci0gIH0KLX07Ci0KLXZhciB0
b3BMZXZlbEV2ZW50c1RvRGlzcGF0Y2hDb25maWcgPSB7Ci0gIHRvcEJsdXI6ICAgICAgICBldmVu
dFR5cGVzLmJsdXIsCi0gIHRvcENsaWNrOiAgICAgICBldmVudFR5cGVzLmNsaWNrLAotICB0b3BE
b3VibGVDbGljazogZXZlbnRUeXBlcy5kb3VibGVDbGljaywKLSAgdG9wRE9NQ2hhcmFjdGVyRGF0
YU1vZGlmaWVkOiBldmVudFR5cGVzLkRPTUNoYXJhY3RlckRhdGFNb2RpZmllZCwKLSAgdG9wRHJh
ZzogICAgICAgIGV2ZW50VHlwZXMuZHJhZywKLSAgdG9wRHJhZ0VuZDogICAgIGV2ZW50VHlwZXMu
ZHJhZ0VuZCwKLSAgdG9wRHJhZ0VudGVyOiAgIGV2ZW50VHlwZXMuZHJhZ0VudGVyLAotICB0b3BE
cmFnRXhpdDogICAgZXZlbnRUeXBlcy5kcmFnRXhpdCwKLSAgdG9wRHJhZ0xlYXZlOiAgIGV2ZW50
VHlwZXMuZHJhZ0xlYXZlLAotICB0b3BEcmFnT3ZlcjogICAgZXZlbnRUeXBlcy5kcmFnT3ZlciwK
LSAgdG9wRHJhZ1N0YXJ0OiAgIGV2ZW50VHlwZXMuZHJhZ1N0YXJ0LAotICB0b3BEcm9wOiAgICAg
ICAgZXZlbnRUeXBlcy5kcm9wLAotICB0b3BGb2N1czogICAgICAgZXZlbnRUeXBlcy5mb2N1cywK
LSAgdG9wSW5wdXQ6ICAgICAgIGV2ZW50VHlwZXMuaW5wdXQsCi0gIHRvcEtleURvd246ICAgICBl
dmVudFR5cGVzLmtleURvd24sCi0gIHRvcEtleVByZXNzOiAgICBldmVudFR5cGVzLmtleVByZXNz
LAotICB0b3BLZXlVcDogICAgICAgZXZlbnRUeXBlcy5rZXlVcCwKLSAgdG9wTW91c2VEb3duOiAg
IGV2ZW50VHlwZXMubW91c2VEb3duLAotICB0b3BNb3VzZU1vdmU6ICAgZXZlbnRUeXBlcy5tb3Vz
ZU1vdmUsCi0gIHRvcE1vdXNlVXA6ICAgICBldmVudFR5cGVzLm1vdXNlVXAsCi0gIHRvcFNjcm9s
bDogICAgICBldmVudFR5cGVzLnNjcm9sbCwKLSAgdG9wU3VibWl0OiAgICAgIGV2ZW50VHlwZXMu
c3VibWl0LAotICB0b3BUb3VjaENhbmNlbDogZXZlbnRUeXBlcy50b3VjaENhbmNlbCwKLSAgdG9w
VG91Y2hFbmQ6ICAgIGV2ZW50VHlwZXMudG91Y2hFbmQsCi0gIHRvcFRvdWNoTW92ZTogICBldmVu
dFR5cGVzLnRvdWNoTW92ZSwKLSAgdG9wVG91Y2hTdGFydDogIGV2ZW50VHlwZXMudG91Y2hTdGFy
dCwKLSAgdG9wV2hlZWw6ICAgICAgIGV2ZW50VHlwZXMud2hlZWwKLX07Ci0KLXZhciBTaW1wbGVF
dmVudFBsdWdpbiA9IHsKLQotICBldmVudFR5cGVzOiBldmVudFR5cGVzLAotCi0gIC8qKgotICAg
KiBTYW1lIGFzIHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uLCBleGNlcHQgY2FuY2VscyB0aGUg
ZXZlbnQgd2hlbiByZXR1cm4KLSAgICogdmFsdWUgaXMgZmFsc2UuCi0gICAqCi0gICAqIEBwYXJh
bSB7b2JqZWN0fSBFdmVudCB0byBiZSBkaXNwYXRjaGVkLgotICAgKiBAcGFyYW0ge2Z1bmN0aW9u
fSBBcHBsaWNhdGlvbi1sZXZlbCBjYWxsYmFjay4KLSAgICogQHBhcmFtIHtzdHJpbmd9IGRvbUlE
IERPTSBJRCB0byBwYXNzIHRvIHRoZSBjYWxsYmFjay4KLSAgICovCi0gIGV4ZWN1dGVEaXNwYXRj
aDogZnVuY3Rpb24oZXZlbnQsIGxpc3RlbmVyLCBkb21JRCkgewotICAgIHZhciByZXR1cm5WYWx1
ZSA9IGxpc3RlbmVyKGV2ZW50LCBkb21JRCk7Ci0gICAgaWYgKHJldHVyblZhbHVlID09PSBmYWxz
ZSkgewotICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7Ci0gICAgICBldmVudC5wcmV2ZW50
RGVmYXVsdCgpOwotICAgIH0KLSAgfSwKLQotICAvKioKLSAgICogQHBhcmFtIHtzdHJpbmd9IHRv
cExldmVsVHlwZSBSZWNvcmQgZnJvbSBgRXZlbnRDb25zdGFudHNgLgotICAgKiBAcGFyYW0ge0RP
TUV2ZW50VGFyZ2V0fSB0b3BMZXZlbFRhcmdldCBUaGUgbGlzdGVuaW5nIGNvbXBvbmVudCByb290
IG5vZGUuCi0gICAqIEBwYXJhbSB7c3RyaW5nfSB0b3BMZXZlbFRhcmdldElEIElEIG9mIGB0b3BM
ZXZlbFRhcmdldGAuCi0gICAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJv
d3NlciBldmVudC4KLSAgICogQHJldHVybiB7Kn0gQW4gYWNjdW11bGF0aW9uIG9mIHN5bnRoZXRp
YyBldmVudHMuCi0gICAqIEBzZWUge0V2ZW50UGx1Z2luSHViLmV4dHJhY3RFdmVudHN9Ci0gICAq
LwotICBleHRyYWN0RXZlbnRzOiBmdW5jdGlvbigKLSAgICAgIHRvcExldmVsVHlwZSwKLSAgICAg
IHRvcExldmVsVGFyZ2V0LAotICAgICAgdG9wTGV2ZWxUYXJnZXRJRCwKLSAgICAgIG5hdGl2ZUV2
ZW50KSB7Ci0gICAgdmFyIGRpc3BhdGNoQ29uZmlnID0gdG9wTGV2ZWxFdmVudHNUb0Rpc3BhdGNo
Q29uZmlnW3RvcExldmVsVHlwZV07Ci0gICAgaWYgKCFkaXNwYXRjaENvbmZpZykgewotICAgICAg
cmV0dXJuIG51bGw7Ci0gICAgfQotICAgIHZhciBFdmVudENvbnN0cnVjdG9yOwotICAgIHN3aXRj
aCh0b3BMZXZlbFR5cGUpIHsKLSAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BJbnB1dDoKLSAg
ICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BTdWJtaXQ6Ci0gICAgICAgIC8vIEhUTUwgRXZlbnRz
Ci0gICAgICAgIC8vIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDUvaW5kZXguaHRtbCNl
dmVudHMtMAotICAgICAgICBFdmVudENvbnN0cnVjdG9yID0gU3ludGhldGljRXZlbnQ7Ci0gICAg
ICAgIGJyZWFrOwotICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcEtleURvd246Ci0gICAgICBj
YXNlIHRvcExldmVsVHlwZXMudG9wS2V5UHJlc3M6Ci0gICAgICBjYXNlIHRvcExldmVsVHlwZXMu
dG9wS2V5VXA6Ci0gICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0aWNLZXlib2FyZEV2
ZW50OwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BCbHVyOgot
ICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcEZvY3VzOgotICAgICAgICBFdmVudENvbnN0cnVj
dG9yID0gU3ludGhldGljRm9jdXNFdmVudDsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIHRv
cExldmVsVHlwZXMudG9wQ2xpY2s6Ci0gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wRG91Ymxl
Q2xpY2s6Ci0gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wRHJhZzoKLSAgICAgIGNhc2UgdG9w
TGV2ZWxUeXBlcy50b3BEcmFnRW5kOgotICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcERyYWdF
bnRlcjoKLSAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BEcmFnRXhpdDoKLSAgICAgIGNhc2Ug
dG9wTGV2ZWxUeXBlcy50b3BEcmFnTGVhdmU6Ci0gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9w
RHJhZ092ZXI6Ci0gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wRHJhZ1N0YXJ0OgotICAgICAg
Y2FzZSB0b3BMZXZlbFR5cGVzLnRvcERyb3A6Ci0gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9w
TW91c2VEb3duOgotICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcE1vdXNlTW92ZToKLSAgICAg
IGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BNb3VzZVVwOgotICAgICAgICBFdmVudENvbnN0cnVjdG9y
ID0gU3ludGhldGljTW91c2VFdmVudDsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIHRvcExl
dmVsVHlwZXMudG9wRE9NQ2hhcmFjdGVyRGF0YU1vZGlmaWVkOgotICAgICAgICBFdmVudENvbnN0
cnVjdG9yID0gU3ludGhldGljTXV0YXRpb25FdmVudDsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBj
YXNlIHRvcExldmVsVHlwZXMudG9wVG91Y2hDYW5jZWw6Ci0gICAgICBjYXNlIHRvcExldmVsVHlw
ZXMudG9wVG91Y2hFbmQ6Ci0gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wVG91Y2hNb3ZlOgot
ICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcFRvdWNoU3RhcnQ6Ci0gICAgICAgIEV2ZW50Q29u
c3RydWN0b3IgPSBTeW50aGV0aWNUb3VjaEV2ZW50OwotICAgICAgICBicmVhazsKLSAgICAgIGNh
c2UgdG9wTGV2ZWxUeXBlcy50b3BTY3JvbGw6Ci0gICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBT
eW50aGV0aWNVSUV2ZW50OwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgdG9wTGV2ZWxUeXBl
cy50b3BXaGVlbDoKLSAgICAgICAgRXZlbnRDb25zdHJ1Y3RvciA9IFN5bnRoZXRpY1doZWVsRXZl
bnQ7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBpbnZhcmlhbnQoCi0gICAgICBFdmVudENv
bnN0cnVjdG9yLAotICAgICAgJ1NpbXBsZUV2ZW50UGx1Z2luOiBVbmhhbmRsZWQgZXZlbnQgdHlw
ZSwgYCVzYC4nLAotICAgICAgdG9wTGV2ZWxUeXBlCi0gICAgKTsKLSAgICB2YXIgZXZlbnQgPSBF
dmVudENvbnN0cnVjdG9yLmdldFBvb2xlZCgKLSAgICAgIGRpc3BhdGNoQ29uZmlnLAotICAgICAg
dG9wTGV2ZWxUYXJnZXRJRCwKLSAgICAgIG5hdGl2ZUV2ZW50Ci0gICAgKTsKLSAgICBFdmVudFBy
b3BhZ2F0b3JzLmFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXMoZXZlbnQpOwotICAgIHJldHVy
biBldmVudDsKLSAgfQotCi19OwotCi1tb2R1bGUuZXhwb3J0cyA9IFNpbXBsZUV2ZW50UGx1Z2lu
OwotCi19LHsiLi9FdmVudENvbnN0YW50cyI6MTMsIi4vRXZlbnRQcm9wYWdhdG9ycyI6MTgsIi4v
U3ludGhldGljRXZlbnQiOjUwLCIuL1N5bnRoZXRpY0ZvY3VzRXZlbnQiOjUxLCIuL1N5bnRoZXRp
Y0tleWJvYXJkRXZlbnQiOjUyLCIuL1N5bnRoZXRpY01vdXNlRXZlbnQiOjUzLCIuL1N5bnRoZXRp
Y011dGF0aW9uRXZlbnQiOjU0LCIuL1N5bnRoZXRpY1RvdWNoRXZlbnQiOjU1LCIuL1N5bnRoZXRp
Y1VJRXZlbnQiOjU2LCIuL1N5bnRoZXRpY1doZWVsRXZlbnQiOjU3LCIuL2ludmFyaWFudCI6NzUs
Ii4va2V5T2YiOjc5fV0sNTA6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewotLyoq
Ci0gKiBDb3B5cmlnaHQgMjAxMyBGYWNlYm9vaywgSW5jLgotICoKLSAqIExpY2Vuc2VkIHVuZGVy
IHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91
IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNl
bnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICog
aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNz
IHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0
d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24g
YW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9G
IEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNl
IGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICog
bGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKgotICogQHByb3ZpZGVzTW9kdWxlIFN5
bnRoZXRpY0V2ZW50Ci0gKiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seQotICovCi0KLSJ1c2Ugc3Ry
aWN0IjsKLQotdmFyIFBvb2xlZENsYXNzID0gcmVxdWlyZSgiLi9Qb29sZWRDbGFzcyIpOwotCi12
YXIgZW1wdHlGdW5jdGlvbiA9IHJlcXVpcmUoIi4vZW1wdHlGdW5jdGlvbiIpOwotdmFyIGdldEV2
ZW50VGFyZ2V0ID0gcmVxdWlyZSgiLi9nZXRFdmVudFRhcmdldCIpOwotdmFyIG1lcmdlID0gcmVx
dWlyZSgiLi9tZXJnZSIpOwotdmFyIG1lcmdlSW50byA9IHJlcXVpcmUoIi4vbWVyZ2VJbnRvIik7
Ci0KLS8qKgotICogQGludGVyZmFjZSBFdmVudAotICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9U
Ui9ET00tTGV2ZWwtMy1FdmVudHMvCi0gKi8KLXZhciBFdmVudEludGVyZmFjZSA9IHsKLSAgdHlw
ZTogbnVsbCwKLSAgdGFyZ2V0OiBnZXRFdmVudFRhcmdldCwKLSAgY3VycmVudFRhcmdldDogbnVs
bCwKLSAgZXZlbnRQaGFzZTogbnVsbCwKLSAgYnViYmxlczogbnVsbCwKLSAgY2FuY2VsYWJsZTog
bnVsbCwKLSAgdGltZVN0YW1wOiBmdW5jdGlvbihldmVudCkgewotICAgIHJldHVybiBldmVudC50
aW1lU3RhbXAgfHwgRGF0ZS5ub3coKTsKLSAgfSwKLSAgZGVmYXVsdFByZXZlbnRlZDogbnVsbCwK
LSAgaXNUcnVzdGVkOiBudWxsCi19OwotCi0vKioKLSAqIFN5bnRoZXRpYyBldmVudHMgYXJlIGRp
c3BhdGNoZWQgYnkgZXZlbnQgcGx1Z2lucywgdHlwaWNhbGx5IGluIHJlc3BvbnNlIHRvIGEKLSAq
IHRvcC1sZXZlbCBldmVudCBkZWxlZ2F0aW9uIGhhbmRsZXIuCi0gKgotICogVGhlc2Ugc3lzdGVt
cyBzaG91bGQgZ2VuZXJhbGx5IHVzZSBwb29saW5nIHRvIHJlZHVjZSB0aGUgZnJlcXVlbmN5IG9m
IGdhcmJhZ2UKLSAqIGNvbGxlY3Rpb24uIFRoZSBzeXN0ZW0gc2hvdWxkIGNoZWNrIGBpc1BlcnNp
c3RlbnRgIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZQotICogZXZlbnQgc2hvdWxkIGJlIHJlbGVh
c2VkIGludG8gdGhlIHBvb2wgYWZ0ZXIgYmVpbmcgZGlzcGF0Y2hlZC4gVXNlcnMgdGhhdAotICog
bmVlZCBhIHBlcnNpc3RlZCBldmVudCBzaG91bGQgaW52b2tlIGBwZXJzaXN0YC4KLSAqCi0gKiBT
eW50aGV0aWMgZXZlbnRzIChhbmQgc3ViY2xhc3NlcykgaW1wbGVtZW50IHRoZSBET00gTGV2ZWwg
MyBFdmVudHMgQVBJIGJ5Ci0gKiBub3JtYWxpemluZyBicm93c2VyIHF1aXJrcy4gU3ViY2xhc3Nl
cyBkbyBub3QgbmVjZXNzYXJpbHkgaGF2ZSB0byBpbXBsZW1lbnQgYQotICogRE9NIGludGVyZmFj
ZTsgY3VzdG9tIGFwcGxpY2F0aW9uLXNwZWNpZmljIGV2ZW50cyBjYW4gYWxzbyBzdWJjbGFzcyB0
aGlzLgotICoKLSAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBDb25maWd1cmF0aW9u
IHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVudC4KLSAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwYXRj
aE1hcmtlciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC4KLSAqIEBwYXJhbSB7
b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC4KLSAqLwotZnVuY3Rpb24g
U3ludGhldGljRXZlbnQoZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVu
dCkgewotICB0aGlzLmRpc3BhdGNoQ29uZmlnID0gZGlzcGF0Y2hDb25maWc7Ci0gIHRoaXMuZGlz
cGF0Y2hNYXJrZXIgPSBkaXNwYXRjaE1hcmtlcjsKLSAgdGhpcy5uYXRpdmVFdmVudCA9IG5hdGl2
ZUV2ZW50OwotCi0gIHZhciBJbnRlcmZhY2UgPSB0aGlzLmNvbnN0cnVjdG9yLkludGVyZmFjZTsK
LSAgZm9yICh2YXIgcHJvcE5hbWUgaW4gSW50ZXJmYWNlKSB7Ci0gICAgdmFyIG5vcm1hbGl6ZSA9
IEludGVyZmFjZVtwcm9wTmFtZV07Ci0gICAgaWYgKG5vcm1hbGl6ZSkgewotICAgICAgdGhpc1tw
cm9wTmFtZV0gPSBub3JtYWxpemUobmF0aXZlRXZlbnQpOwotICAgIH0gZWxzZSB7Ci0gICAgICB0
aGlzW3Byb3BOYW1lXSA9IG5hdGl2ZUV2ZW50W3Byb3BOYW1lXTsKLSAgICB9Ci0gIH0KLQotICBp
ZiAobmF0aXZlRXZlbnQuZGVmYXVsdFByZXZlbnRlZCB8fCBuYXRpdmVFdmVudC5yZXR1cm5WYWx1
ZSA9PT0gZmFsc2UpIHsKLSAgICB0aGlzLmlzRGVmYXVsdFByZXZlbnRlZCA9IGVtcHR5RnVuY3Rp
b24udGhhdFJldHVybnNUcnVlOwotICB9IGVsc2UgewotICAgIHRoaXMuaXNEZWZhdWx0UHJldmVu
dGVkID0gZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc0ZhbHNlOwotICB9Ci0gIHRoaXMuaXNQcm9w
YWdhdGlvblN0b3BwZWQgPSBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zRmFsc2U7Ci19Ci0KLW1l
cmdlSW50byhTeW50aGV0aWNFdmVudC5wcm90b3R5cGUsIHsKLQotICBwcmV2ZW50RGVmYXVsdDog
ZnVuY3Rpb24oKSB7Ci0gICAgdGhpcy5kZWZhdWx0UHJldmVudGVkID0gdHJ1ZTsKLSAgICB2YXIg
ZXZlbnQgPSB0aGlzLm5hdGl2ZUV2ZW50OwotICAgIGV2ZW50LnByZXZlbnREZWZhdWx0ID8gZXZl
bnQucHJldmVudERlZmF1bHQoKSA6IGV2ZW50LnJldHVyblZhbHVlID0gZmFsc2U7Ci0gICAgdGhp
cy5pc0RlZmF1bHRQcmV2ZW50ZWQgPSBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zVHJ1ZTsKLSAg
fSwKLQotICBzdG9wUHJvcGFnYXRpb246IGZ1bmN0aW9uKCkgewotICAgIHZhciBldmVudCA9IHRo
aXMubmF0aXZlRXZlbnQ7Ci0gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uID8gZXZlbnQuc3RvcFBy
b3BhZ2F0aW9uKCkgOiBldmVudC5jYW5jZWxCdWJibGUgPSB0cnVlOwotICAgIHRoaXMuaXNQcm9w
YWdhdGlvblN0b3BwZWQgPSBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zVHJ1ZTsKLSAgfSwKLQot
ICAvKioKLSAgICogV2UgcmVsZWFzZSBhbGwgZGlzcGF0Y2hlZCBgU3ludGhldGljRXZlbnRgcyBh
ZnRlciBlYWNoIGV2ZW50IGxvb3AsIGFkZGluZwotICAgKiB0aGVtIGJhY2sgaW50byB0aGUgcG9v
bC4gVGhpcyBhbGxvd3MgYSB3YXkgdG8gaG9sZCBvbnRvIGEgcmVmZXJlbmNlIHRoYXQKLSAgICog
d29uJ3QgYmUgYWRkZWQgYmFjayBpbnRvIHRoZSBwb29sLgotICAgKi8KLSAgcGVyc2lzdDogZnVu
Y3Rpb24oKSB7Ci0gICAgdGhpcy5pc1BlcnNpc3RlbnQgPSBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1
cm5zVHJ1ZTsKLSAgfSwKLQotICAvKioKLSAgICogQ2hlY2tzIGlmIHRoaXMgZXZlbnQgc2hvdWxk
IGJlIHJlbGVhc2VkIGJhY2sgaW50byB0aGUgcG9vbC4KLSAgICoKLSAgICogQHJldHVybiB7Ym9v
bGVhbn0gVHJ1ZSBpZiB0aGlzIHNob3VsZCBub3QgYmUgcmVsZWFzZWQsIGZhbHNlIG90aGVyd2lz
ZS4KLSAgICovCi0gIGlzUGVyc2lzdGVudDogZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc0ZhbHNl
LAotCi0gIC8qKgotICAgKiBgUG9vbGVkQ2xhc3NgIGxvb2tzIGZvciBgZGVzdHJ1Y3RvcmAgb24g
ZWFjaCBpbnN0YW5jZSBpdCByZWxlYXNlcy4KLSAgICovCi0gIGRlc3RydWN0b3I6IGZ1bmN0aW9u
KCkgewotICAgIHZhciBJbnRlcmZhY2UgPSB0aGlzLmNvbnN0cnVjdG9yLkludGVyZmFjZTsKLSAg
ICBmb3IgKHZhciBwcm9wTmFtZSBpbiBJbnRlcmZhY2UpIHsKLSAgICAgIHRoaXNbcHJvcE5hbWVd
ID0gbnVsbDsKLSAgICB9Ci0gICAgdGhpcy5kaXNwYXRjaENvbmZpZyA9IG51bGw7Ci0gICAgdGhp
cy5kaXNwYXRjaE1hcmtlciA9IG51bGw7Ci0gICAgdGhpcy5uYXRpdmVFdmVudCA9IG51bGw7Ci0g
IH0KLQotfSk7Ci0KLVN5bnRoZXRpY0V2ZW50LkludGVyZmFjZSA9IEV2ZW50SW50ZXJmYWNlOwot
Ci0vKioKLSAqIEhlbHBlciB0byByZWR1Y2UgYm9pbGVycGxhdGUgd2hlbiBjcmVhdGluZyBzdWJj
bGFzc2VzLgotICoKLSAqIEBwYXJhbSB7ZnVuY3Rpb259IENsYXNzCi0gKiBAcGFyYW0gez9vYmpl
Y3R9IEludGVyZmFjZQotICovCi1TeW50aGV0aWNFdmVudC5hdWdtZW50Q2xhc3MgPSBmdW5jdGlv
bihDbGFzcywgSW50ZXJmYWNlKSB7Ci0gIHZhciBTdXBlciA9IHRoaXM7Ci0KLSAgdmFyIHByb3Rv
dHlwZSA9IE9iamVjdC5jcmVhdGUoU3VwZXIucHJvdG90eXBlKTsKLSAgbWVyZ2VJbnRvKHByb3Rv
dHlwZSwgQ2xhc3MucHJvdG90eXBlKTsKLSAgQ2xhc3MucHJvdG90eXBlID0gcHJvdG90eXBlOwot
ICBDbGFzcy5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBDbGFzczsKLQotICBDbGFzcy5JbnRlcmZh
Y2UgPSBtZXJnZShTdXBlci5JbnRlcmZhY2UsIEludGVyZmFjZSk7Ci0gIENsYXNzLmF1Z21lbnRD
bGFzcyA9IFN1cGVyLmF1Z21lbnRDbGFzczsKLQotICBQb29sZWRDbGFzcy5hZGRQb29saW5nVG8o
Q2xhc3MsIFBvb2xlZENsYXNzLnRocmVlQXJndW1lbnRQb29sZXIpOwotfTsKLQotUG9vbGVkQ2xh
c3MuYWRkUG9vbGluZ1RvKFN5bnRoZXRpY0V2ZW50LCBQb29sZWRDbGFzcy50aHJlZUFyZ3VtZW50
UG9vbGVyKTsKLQotbW9kdWxlLmV4cG9ydHMgPSBTeW50aGV0aWNFdmVudDsKLQotfSx7Ii4vUG9v
bGVkQ2xhc3MiOjIwLCIuL2VtcHR5RnVuY3Rpb24iOjY0LCIuL2dldEV2ZW50VGFyZ2V0Ijo3MCwi
Li9tZXJnZSI6ODEsIi4vbWVyZ2VJbnRvIjo4M31dLDUxOltmdW5jdGlvbihyZXF1aXJlLG1vZHVs
ZSxleHBvcnRzKXsKLS8qKgotICogQ29weXJpZ2h0IDIwMTMgRmFjZWJvb2ssIEluYy4KLSAqCi0g
KiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxp
Y2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAotICoKLSAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8g
aW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlz
IGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMg
T1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAq
IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJt
aXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICoKLSAqIEBw
cm92aWRlc01vZHVsZSBTeW50aGV0aWNGb2N1c0V2ZW50Ci0gKiBAdHlwZWNoZWNrcyBzdGF0aWMt
b25seQotICovCi0KLSJ1c2Ugc3RyaWN0IjsKLQotdmFyIFN5bnRoZXRpY1VJRXZlbnQgPSByZXF1
aXJlKCIuL1N5bnRoZXRpY1VJRXZlbnQiKTsKLQotLyoqCi0gKiBAaW50ZXJmYWNlIEZvY3VzRXZl
bnQKLSAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvRE9NLUxldmVsLTMtRXZlbnRzLwotICov
Ci12YXIgRm9jdXNFdmVudEludGVyZmFjZSA9IHsKLSAgcmVsYXRlZFRhcmdldDogbnVsbAotfTsK
LQotLyoqCi0gKiBAcGFyYW0ge29iamVjdH0gZGlzcGF0Y2hDb25maWcgQ29uZmlndXJhdGlvbiB1
c2VkIHRvIGRpc3BhdGNoIHRoaXMgZXZlbnQuCi0gKiBAcGFyYW0ge3N0cmluZ30gZGlzcGF0Y2hN
YXJrZXIgTWFya2VyIGlkZW50aWZ5aW5nIHRoZSBldmVudCB0YXJnZXQuCi0gKiBAcGFyYW0ge29i
amVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuCi0gKiBAZXh0ZW5kcyB7U3lu
dGhldGljVUlFdmVudH0KLSAqLwotZnVuY3Rpb24gU3ludGhldGljRm9jdXNFdmVudChkaXNwYXRj
aENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50KSB7Ci0gIFN5bnRoZXRpY1VJRXZl
bnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50
KTsKLX0KLQotU3ludGhldGljVUlFdmVudC5hdWdtZW50Q2xhc3MoU3ludGhldGljRm9jdXNFdmVu
dCwgRm9jdXNFdmVudEludGVyZmFjZSk7Ci0KLW1vZHVsZS5leHBvcnRzID0gU3ludGhldGljRm9j
dXNFdmVudDsKLQotfSx7Ii4vU3ludGhldGljVUlFdmVudCI6NTZ9XSw1MjpbZnVuY3Rpb24ocmVx
dWlyZSxtb2R1bGUsZXhwb3J0cyl7Ci0vKioKLSAqIENvcHlyaWdodCAyMDEzIEZhY2Vib29rLCBJ
bmMuCi0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIu
MCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBp
biBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkg
b2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUg
TGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBX
QVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGlt
cGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zl
cm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4K
LSAqCi0gKiBAcHJvdmlkZXNNb2R1bGUgU3ludGhldGljS2V5Ym9hcmRFdmVudAotICogQHR5cGVj
aGVja3Mgc3RhdGljLW9ubHkKLSAqLwotCi0idXNlIHN0cmljdCI7Ci0KLXZhciBTeW50aGV0aWNV
SUV2ZW50ID0gcmVxdWlyZSgiLi9TeW50aGV0aWNVSUV2ZW50Iik7Ci0KLS8qKgotICogQGludGVy
ZmFjZSBLZXlib2FyZEV2ZW50Ci0gKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZl
bC0zLUV2ZW50cy8KLSAqLwotdmFyIEtleWJvYXJkRXZlbnRJbnRlcmZhY2UgPSB7Ci0gICdjaGFy
JzogbnVsbCwKLSAga2V5OiBudWxsLAotICBsb2NhdGlvbjogbnVsbCwKLSAgY3RybEtleTogbnVs
bCwKLSAgc2hpZnRLZXk6IG51bGwsCi0gIGFsdEtleTogbnVsbCwKLSAgbWV0YUtleTogbnVsbCwK
LSAgcmVwZWF0OiBudWxsLAotICBsb2NhbGU6IG51bGwsCi0gIC8vIExlZ2FjeSBJbnRlcmZhY2UK
LSAgY2hhckNvZGU6IG51bGwsCi0gIGtleUNvZGU6IG51bGwsCi0gIHdoaWNoOiBudWxsCi19Owot
Ci0vKioKLSAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBDb25maWd1cmF0aW9uIHVz
ZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVudC4KLSAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwYXRjaE1h
cmtlciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC4KLSAqIEBwYXJhbSB7b2Jq
ZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC4KLSAqIEBleHRlbmRzIHtTeW50
aGV0aWNVSUV2ZW50fQotICovCi1mdW5jdGlvbiBTeW50aGV0aWNLZXlib2FyZEV2ZW50KGRpc3Bh
dGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQpIHsKLSAgU3ludGhldGljVUlF
dmVudC5jYWxsKHRoaXMsIGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZl
bnQpOwotfQotCi1TeW50aGV0aWNVSUV2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNLZXlib2Fy
ZEV2ZW50LCBLZXlib2FyZEV2ZW50SW50ZXJmYWNlKTsKLQotbW9kdWxlLmV4cG9ydHMgPSBTeW50
aGV0aWNLZXlib2FyZEV2ZW50OwotCi19LHsiLi9TeW50aGV0aWNVSUV2ZW50Ijo1Nn1dLDUzOltm
dW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKLS8qKgotICogQ29weXJpZ2h0IDIwMTMg
RmFjZWJvb2ssIEluYy4KLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2Us
IFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZp
bGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0
YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqIGh0dHA6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0g
KiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4
cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxh
bmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRo
ZSBMaWNlbnNlLgotICoKLSAqIEBwcm92aWRlc01vZHVsZSBTeW50aGV0aWNNb3VzZUV2ZW50Ci0g
KiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seQotICovCi0KLSJ1c2Ugc3RyaWN0IjsKLQotdmFyIFN5
bnRoZXRpY1VJRXZlbnQgPSByZXF1aXJlKCIuL1N5bnRoZXRpY1VJRXZlbnQiKTsKLXZhciBWaWV3
cG9ydE1ldHJpY3MgPSByZXF1aXJlKCIuL1ZpZXdwb3J0TWV0cmljcyIpOwotCi0vKioKLSAqIEBp
bnRlcmZhY2UgTW91c2VFdmVudAotICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2
ZWwtMy1FdmVudHMvCi0gKi8KLXZhciBNb3VzZUV2ZW50SW50ZXJmYWNlID0gewotICBzY3JlZW5Y
OiBudWxsLAotICBzY3JlZW5ZOiBudWxsLAotICBjbGllbnRYOiBudWxsLAotICBjbGllbnRZOiBu
dWxsLAotICBjdHJsS2V5OiBudWxsLAotICBzaGlmdEtleTogbnVsbCwKLSAgYWx0S2V5OiBudWxs
LAotICBtZXRhS2V5OiBudWxsLAotICBidXR0b246IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgLy8g
V2Via2l0LCBGaXJlZm94LCBJRTkrCi0gICAgLy8gd2hpY2g6ICAxIDIgMwotICAgIC8vIGJ1dHRv
bjogMCAxIDIgKHN0YW5kYXJkKQotICAgIHZhciBidXR0b24gPSBldmVudC5idXR0b247Ci0gICAg
aWYgKCd3aGljaCcgaW4gZXZlbnQpIHsKLSAgICAgIHJldHVybiBidXR0b247Ci0gICAgfQotICAg
IC8vIElFPDkKLSAgICAvLyB3aGljaDogIHVuZGVmaW5lZAotICAgIC8vIGJ1dHRvbjogMCAwIDAK
LSAgICAvLyBidXR0b246IDEgNCAyIChvbm1vdXNldXApCi0gICAgcmV0dXJuIGJ1dHRvbiA9PT0g
MiA/IDIgOiBidXR0b24gPT09IDQgPyAxIDogMDsKLSAgfSwKLSAgYnV0dG9uczogbnVsbCwKLSAg
cmVsYXRlZFRhcmdldDogZnVuY3Rpb24oZXZlbnQpIHsKLSAgICByZXR1cm4gZXZlbnQucmVsYXRl
ZFRhcmdldCB8fCAoCi0gICAgICBldmVudC5mcm9tRWxlbWVudCA9PT0gZXZlbnQuc3JjRWxlbWVu
dCA/Ci0gICAgICAgIGV2ZW50LnRvRWxlbWVudCA6Ci0gICAgICAgIGV2ZW50LmZyb21FbGVtZW50
Ci0gICAgKTsKLSAgfSwKLSAgLy8gIlByb3ByaWV0YXJ5IiBJbnRlcmZhY2UuCi0gIHBhZ2VYOiBm
dW5jdGlvbihldmVudCkgewotICAgIHJldHVybiAncGFnZVgnIGluIGV2ZW50ID8KLSAgICAgIGV2
ZW50LnBhZ2VYIDoKLSAgICAgIGV2ZW50LmNsaWVudFggKyBWaWV3cG9ydE1ldHJpY3MuY3VycmVu
dFNjcm9sbExlZnQ7Ci0gIH0sCi0gIHBhZ2VZOiBmdW5jdGlvbihldmVudCkgewotICAgIHJldHVy
biAncGFnZVknIGluIGV2ZW50ID8KLSAgICAgIGV2ZW50LnBhZ2VZIDoKLSAgICAgIGV2ZW50LmNs
aWVudFkgKyBWaWV3cG9ydE1ldHJpY3MuY3VycmVudFNjcm9sbFRvcDsKLSAgfQotfTsKLQotLyoq
Ci0gKiBAcGFyYW0ge29iamVjdH0gZGlzcGF0Y2hDb25maWcgQ29uZmlndXJhdGlvbiB1c2VkIHRv
IGRpc3BhdGNoIHRoaXMgZXZlbnQuCi0gKiBAcGFyYW0ge3N0cmluZ30gZGlzcGF0Y2hNYXJrZXIg
TWFya2VyIGlkZW50aWZ5aW5nIHRoZSBldmVudCB0YXJnZXQuCi0gKiBAcGFyYW0ge29iamVjdH0g
bmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuCi0gKiBAZXh0ZW5kcyB7U3ludGhldGlj
VUlFdmVudH0KLSAqLwotZnVuY3Rpb24gU3ludGhldGljTW91c2VFdmVudChkaXNwYXRjaENvbmZp
ZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50KSB7Ci0gIFN5bnRoZXRpY1VJRXZlbnQuY2Fs
bCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50KTsKLX0K
LQotU3ludGhldGljVUlFdmVudC5hdWdtZW50Q2xhc3MoU3ludGhldGljTW91c2VFdmVudCwgTW91
c2VFdmVudEludGVyZmFjZSk7Ci0KLW1vZHVsZS5leHBvcnRzID0gU3ludGhldGljTW91c2VFdmVu
dDsKLQotfSx7Ii4vU3ludGhldGljVUlFdmVudCI6NTYsIi4vVmlld3BvcnRNZXRyaWNzIjo1OX1d
LDU0OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKLS8qKgotICogQ29weXJpZ2h0
IDIwMTMgRmFjZWJvb2ssIEluYy4KLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExp
Y2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0
aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBt
YXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqIGh0dHA6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBh
cHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3Ry
aWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT
SVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0
aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNp
ZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVu
ZGVyIHRoZSBMaWNlbnNlLgotICoKLSAqIEBwcm92aWRlc01vZHVsZSBTeW50aGV0aWNNdXRhdGlv
bkV2ZW50Ci0gKiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seQotICovCi0KLSJ1c2Ugc3RyaWN0IjsK
LQotdmFyIFN5bnRoZXRpY0V2ZW50ID0gcmVxdWlyZSgiLi9TeW50aGV0aWNFdmVudCIpOwotCi0v
KioKLSAqIEBpbnRlcmZhY2UgTXV0YXRpb25FdmVudAotICogQHNlZSBodHRwOi8vd3d3LnczLm9y
Zy9UUi9ET00tTGV2ZWwtMy1FdmVudHMvCi0gKi8KLXZhciBNdXRhdGlvbkV2ZW50SW50ZXJmYWNl
ID0gewotICByZWxhdGVkTm9kZTogbnVsbCwKLSAgcHJldlZhbHVlOiBudWxsLAotICBuZXdWYWx1
ZTogbnVsbCwKLSAgYXR0ck5hbWU6IG51bGwsCi0gIGF0dHJDaGFuZ2U6IG51bGwKLX07Ci0KLS8q
KgotICogQHBhcmFtIHtvYmplY3R9IGRpc3BhdGNoQ29uZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0
byBkaXNwYXRjaCB0aGlzIGV2ZW50LgotICogQHBhcmFtIHtzdHJpbmd9IGRpc3BhdGNoTWFya2Vy
IE1hcmtlciBpZGVudGlmeWluZyB0aGUgZXZlbnQgdGFyZ2V0LgotICogQHBhcmFtIHtvYmplY3R9
IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LgotICogQGV4dGVuZHMge1N5bnRoZXRp
Y0V2ZW50fQotICovCi1mdW5jdGlvbiBTeW50aGV0aWNNdXRhdGlvbkV2ZW50KGRpc3BhdGNoQ29u
ZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQpIHsKLSAgU3ludGhldGljRXZlbnQuY2Fs
bCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50KTsKLX0K
LQotU3ludGhldGljRXZlbnQuYXVnbWVudENsYXNzKFN5bnRoZXRpY011dGF0aW9uRXZlbnQsIE11
dGF0aW9uRXZlbnRJbnRlcmZhY2UpOwotCi1tb2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRpY011dGF0
aW9uRXZlbnQ7Ci0KLX0seyIuL1N5bnRoZXRpY0V2ZW50Ijo1MH1dLDU1OltmdW5jdGlvbihyZXF1
aXJlLG1vZHVsZSxleHBvcnRzKXsKLS8qKgotICogQ29weXJpZ2h0IDIwMTMgRmFjZWJvb2ssIElu
Yy4KLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4w
ICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBv
ZiB0aGUgTGljZW5zZSBhdAotICoKLSAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBh
Z3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBM
aWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdB
UlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1w
bGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVy
bmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgot
ICoKLSAqIEBwcm92aWRlc01vZHVsZSBTeW50aGV0aWNUb3VjaEV2ZW50Ci0gKiBAdHlwZWNoZWNr
cyBzdGF0aWMtb25seQotICovCi0KLSJ1c2Ugc3RyaWN0IjsKLQotdmFyIFN5bnRoZXRpY1VJRXZl
bnQgPSByZXF1aXJlKCIuL1N5bnRoZXRpY1VJRXZlbnQiKTsKLQotLyoqCi0gKiBAaW50ZXJmYWNl
IFRvdWNoRXZlbnQKLSAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvRE9NLUxldmVsLTMtRXZl
bnRzLwotICovCi12YXIgVG91Y2hFdmVudEludGVyZmFjZSA9IHsKLSAgdG91Y2hlczogbnVsbCwK
LSAgdGFyZ2V0VG91Y2hlczogbnVsbCwKLSAgY2hhbmdlZFRvdWNoZXM6IG51bGwsCi0gIGFsdEtl
eTogbnVsbCwKLSAgbWV0YUtleTogbnVsbCwKLSAgY3RybEtleTogbnVsbCwKLSAgc2hpZnRLZXk6
IG51bGwKLX07Ci0KLS8qKgotICogQHBhcmFtIHtvYmplY3R9IGRpc3BhdGNoQ29uZmlnIENvbmZp
Z3VyYXRpb24gdXNlZCB0byBkaXNwYXRjaCB0aGlzIGV2ZW50LgotICogQHBhcmFtIHtzdHJpbmd9
IGRpc3BhdGNoTWFya2VyIE1hcmtlciBpZGVudGlmeWluZyB0aGUgZXZlbnQgdGFyZ2V0LgotICog
QHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LgotICogQGV4
dGVuZHMge1N5bnRoZXRpY1VJRXZlbnR9Ci0gKi8KLWZ1bmN0aW9uIFN5bnRoZXRpY1RvdWNoRXZl
bnQoZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCkgewotICBTeW50
aGV0aWNVSUV2ZW50LmNhbGwodGhpcywgZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBu
YXRpdmVFdmVudCk7Ci19Ci0KLVN5bnRoZXRpY1VJRXZlbnQuYXVnbWVudENsYXNzKFN5bnRoZXRp
Y1RvdWNoRXZlbnQsIFRvdWNoRXZlbnRJbnRlcmZhY2UpOwotCi1tb2R1bGUuZXhwb3J0cyA9IFN5
bnRoZXRpY1RvdWNoRXZlbnQ7Ci0KLX0seyIuL1N5bnRoZXRpY1VJRXZlbnQiOjU2fV0sNTY6W2Z1
bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewotLyoqCi0gKiBDb3B5cmlnaHQgMjAxMyBG
YWNlYm9vaywgSW5jLgotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwg
VmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmls
ZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRh
aW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogaHR0cDovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2Fi
bGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQg
dW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAq
IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhw
cmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFu
Z3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhl
IExpY2Vuc2UuCi0gKgotICogQHByb3ZpZGVzTW9kdWxlIFN5bnRoZXRpY1VJRXZlbnQKLSAqIEB0
eXBlY2hlY2tzIHN0YXRpYy1vbmx5Ci0gKi8KLQotInVzZSBzdHJpY3QiOwotCi12YXIgU3ludGhl
dGljRXZlbnQgPSByZXF1aXJlKCIuL1N5bnRoZXRpY0V2ZW50Iik7Ci0KLS8qKgotICogQGludGVy
ZmFjZSBVSUV2ZW50Ci0gKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2
ZW50cy8KLSAqLwotdmFyIFVJRXZlbnRJbnRlcmZhY2UgPSB7Ci0gIHZpZXc6IG51bGwsCi0gIGRl
dGFpbDogbnVsbAotfTsKLQotLyoqCi0gKiBAcGFyYW0ge29iamVjdH0gZGlzcGF0Y2hDb25maWcg
Q29uZmlndXJhdGlvbiB1c2VkIHRvIGRpc3BhdGNoIHRoaXMgZXZlbnQuCi0gKiBAcGFyYW0ge3N0
cmluZ30gZGlzcGF0Y2hNYXJrZXIgTWFya2VyIGlkZW50aWZ5aW5nIHRoZSBldmVudCB0YXJnZXQu
Ci0gKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuCi0g
KiBAZXh0ZW5kcyB7U3ludGhldGljRXZlbnR9Ci0gKi8KLWZ1bmN0aW9uIFN5bnRoZXRpY1VJRXZl
bnQoZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCkgewotICBTeW50
aGV0aWNFdmVudC5jYWxsKHRoaXMsIGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0
aXZlRXZlbnQpOwotfQotCi1TeW50aGV0aWNFdmVudC5hdWdtZW50Q2xhc3MoU3ludGhldGljVUlF
dmVudCwgVUlFdmVudEludGVyZmFjZSk7Ci0KLW1vZHVsZS5leHBvcnRzID0gU3ludGhldGljVUlF
dmVudDsKLQotfSx7Ii4vU3ludGhldGljRXZlbnQiOjUwfV0sNTc6W2Z1bmN0aW9uKHJlcXVpcmUs
bW9kdWxlLGV4cG9ydHMpewotLyoqCi0gKiBDb3B5cmlnaHQgMjAxMyBGYWNlYm9vaywgSW5jLgot
ICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRo
ZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29t
cGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRo
ZSBMaWNlbnNlIGF0Ci0gKgotICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFO
VElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVk
LgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5n
IHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKgot
ICogQHByb3ZpZGVzTW9kdWxlIFN5bnRoZXRpY1doZWVsRXZlbnQKLSAqIEB0eXBlY2hlY2tzIHN0
YXRpYy1vbmx5Ci0gKi8KLQotInVzZSBzdHJpY3QiOwotCi12YXIgU3ludGhldGljTW91c2VFdmVu
dCA9IHJlcXVpcmUoIi4vU3ludGhldGljTW91c2VFdmVudCIpOwotCi0vKioKLSAqIEBpbnRlcmZh
Y2UgV2hlZWxFdmVudAotICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2ZWwtMy1F
dmVudHMvCi0gKi8KLXZhciBXaGVlbEV2ZW50SW50ZXJmYWNlID0gewotICBkZWx0YVg6IGZ1bmN0
aW9uKGV2ZW50KSB7Ci0gICAgLy8gTk9URTogSUU8OSBkb2VzIG5vdCBzdXBwb3J0IHgtYXhpcyBk
ZWx0YS4KLSAgICByZXR1cm4gKAotICAgICAgJ2RlbHRhWCcgaW4gZXZlbnQgPyBldmVudC5kZWx0
YVggOgotICAgICAgLy8gRmFsbGJhY2sgdG8gYHdoZWVsRGVsdGFYYCBmb3IgV2Via2l0IGFuZCBu
b3JtYWxpemUgKHJpZ2h0IGlzIHBvc2l0aXZlKS4KLSAgICAgICd3aGVlbERlbHRhWCcgaW4gZXZl
bnQgPyAtZXZlbnQud2hlZWxEZWx0YVggOiAwCi0gICAgKTsKLSAgfSwKLSAgZGVsdGFZOiBmdW5j
dGlvbihldmVudCkgewotICAgIHJldHVybiAoCi0gICAgICAvLyBOb3JtYWxpemUgKHVwIGlzIHBv
c2l0aXZlKS4KLSAgICAgICdkZWx0YVknIGluIGV2ZW50ID8gLWV2ZW50LmRlbHRhWSA6Ci0gICAg
ICAvLyBGYWxsYmFjayB0byBgd2hlZWxEZWx0YVlgIGZvciBXZWJraXQuCi0gICAgICAnd2hlZWxE
ZWx0YVknIGluIGV2ZW50ID8gZXZlbnQud2hlZWxEZWx0YVkgOgotICAgICAgLy8gRmFsbGJhY2sg
dG8gYHdoZWVsRGVsdGFgIGZvciBJRTw5LgotICAgICAgJ3doZWVsRGVsdGEnIGluIGV2ZW50ID8g
ZXZlbnQud2hlZWxEYXRhIDogMAotICAgICk7Ci0gIH0sCi0gIGRlbHRhWjogbnVsbCwKLSAgZGVs
dGFNb2RlOiBudWxsCi19OwotCi0vKioKLSAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZp
ZyBDb25maWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVudC4KLSAqIEBwYXJhbSB7
c3RyaW5nfSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdl
dC4KLSAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC4K
LSAqIEBleHRlbmRzIHtTeW50aGV0aWNNb3VzZUV2ZW50fQotICovCi1mdW5jdGlvbiBTeW50aGV0
aWNXaGVlbEV2ZW50KGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQp
IHsKLSAgU3ludGhldGljTW91c2VFdmVudC5jYWxsKHRoaXMsIGRpc3BhdGNoQ29uZmlnLCBkaXNw
YXRjaE1hcmtlciwgbmF0aXZlRXZlbnQpOwotfQotCi1TeW50aGV0aWNNb3VzZUV2ZW50LmF1Z21l
bnRDbGFzcyhTeW50aGV0aWNXaGVlbEV2ZW50LCBXaGVlbEV2ZW50SW50ZXJmYWNlKTsKLQotbW9k
dWxlLmV4cG9ydHMgPSBTeW50aGV0aWNXaGVlbEV2ZW50OwotCi19LHsiLi9TeW50aGV0aWNNb3Vz
ZUV2ZW50Ijo1M31dLDU4OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKLShmdW5j
dGlvbigpey8qKgotICogQ29weXJpZ2h0IDIwMTMgRmFjZWJvb2ssIEluYy4KLSAqCi0gKiBMaWNl
bnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2Ui
KTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0
aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBh
dAotICoKLSAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoK
LSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3Jp
dGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3Ry
aWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09O
RElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0
aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9u
cyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICoKLSAqIEBwcm92aWRl
c01vZHVsZSBUcmFuc2FjdGlvbgotICovCi0KLSJ1c2Ugc3RyaWN0IjsKLQotdmFyIHRocm93SWYg
PSByZXF1aXJlKCIuL3Rocm93SWYiKTsKLQotdmFyIERVQUxfVFJBTlNBQ1RJT04gPSAnRFVBTF9U
UkFOU0FDVElPTic7Ci12YXIgTUlTU0lOR19UUkFOU0FDVElPTiA9ICdNSVNTSU5HX1RSQU5TQUNU
SU9OJzsKLWlmICh0cnVlKSB7Ci0gIERVQUxfVFJBTlNBQ1RJT04gPQotICAgICdDYW5ub3QgaW5p
dGlhbGl6ZSB0cmFuc2FjdGlvbiB3aGVuIHRoZXJlIGlzIGFscmVhZHkgYW4gb3V0c3RhbmRpbmcg
JyArCi0gICAgJ3RyYW5zYWN0aW9uLiBDb21tb24gY2F1c2VzIG9mIHRoaXMgYXJlIHRyeWluZyB0
byByZW5kZXIgYSBjb21wb25lbnQgJyArCi0gICAgJ3doZW4geW91IGFyZSBhbHJlYWR5IHJlbmRl
cmluZyBhIGNvbXBvbmVudCBvciBhdHRlbXB0aW5nIGEgc3RhdGUgJyArCi0gICAgJ3RyYW5zaXRp
b24gd2hpbGUgaW4gYSByZW5kZXIgZnVuY3Rpb24uIEFub3RoZXIgcG9zc2liaWxpdHkgaXMgdGhh
dCAnICsKLSAgICAneW91IGFyZSByZW5kZXJpbmcgbmV3IGNvbnRlbnQgKG9yIHN0YXRlIHRyYW5z
aXRpb25pbmcpIGluIGEgJyArCi0gICAgJ2NvbXBvbmVudERpZFJlbmRlciBjYWxsYmFjay4gSWYg
dGhpcyBpcyBub3QgdGhlIGNhc2UsIHBsZWFzZSByZXBvcnQgdGhlICcgKwotICAgICdpc3N1ZSBp
bW1lZGlhdGVseS4nOwotCi0gIE1JU1NJTkdfVFJBTlNBQ1RJT04gPQotICAgICdDYW5ub3QgY2xv
c2UgdHJhbnNhY3Rpb24gd2hlbiB0aGVyZSBpcyBub25lIG9wZW4uJzsKLX0KLQotLyoqCi0gKiBg
VHJhbnNhY3Rpb25gIGNyZWF0ZXMgYSBibGFjayBib3ggdGhhdCBpcyBhYmxlIHRvIHdyYXAgYW55
IG1ldGhvZCBzdWNoIHRoYXQKLSAqIGNlcnRhaW4gaW52YXJpYW50cyBhcmUgbWFpbnRhaW5lZCBi
ZWZvcmUgYW5kIGFmdGVyIHRoZSBtZXRob2QgaXMgaW52b2tlZAotICogKEV2ZW4gaWYgYW4gZXhj
ZXB0aW9uIGlzIHRocm93biB3aGlsZSBpbnZva2luZyB0aGUgd3JhcHBlZCBtZXRob2QpLiBXaG9l
dmVyCi0gKiBpbnN0YW50aWF0ZXMgYSB0cmFuc2FjdGlvbiBjYW4gcHJvdmlkZSBlbmZvcmNlcnMg
b2YgdGhlIGludmFyaWFudHMgYXQKLSAqIGNyZWF0aW9uIHRpbWUuIFRoZSBgVHJhbnNhY3Rpb25g
IGNsYXNzIGl0c2VsZiB3aWxsIHN1cHBseSBvbmUgYWRkaXRpb25hbAotICogYXV0b21hdGljIGlu
dmFyaWFudCBmb3IgeW91IC0gdGhlIGludmFyaWFudCB0aGF0IGFueSB0cmFuc2FjdGlvbiBpbnN0
YW5jZQotICogc2hvdWxkIG5vdCBiZSByYW4gd2hpbGUgaXQgaXMgYWxyZWFkeSBiZWluZyByYW4u
IFlvdSB3b3VsZCB0eXBpY2FsbHkgY3JlYXRlIGEKLSAqIHNpbmdsZSBpbnN0YW5jZSBvZiBhIGBU
cmFuc2FjdGlvbmAgZm9yIHJldXNlIG11bHRpcGxlIHRpbWVzLCB0aGF0IHBvdGVudGlhbGx5Ci0g
KiBpcyB1c2VkIHRvIHdyYXAgc2V2ZXJhbCBkaWZmZXJlbnQgbWV0aG9kcy4gV3JhcHBlcnMgYXJl
IGV4dHJlbWVseSBzaW1wbGUgLQotICogdGhleSBvbmx5IHJlcXVpcmUgaW1wbGVtZW50aW5nIHR3
byBtZXRob2RzLgotICoKLSAqIDxwcmU+Ci0gKiAgICAgICAgICAgICAgICAgICAgICAgd3JhcHBl
cnMgKGluamVjdGVkIGF0IGNyZWF0aW9uIHRpbWUpCi0gKiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKyAgICAgICAgKwotICogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgICAgICAgIHwKLSAqICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0t
LS0tLS18LS0tLS0tLS18LS0tLS0tLS0tLS0tLS0rCi0gKiAgICAgICAgICAgICAgICAgICAgfCAg
ICAgICAgICAgICAgICAgdiAgICAgICAgfCAgICAgICAgICAgICAgfAotICogICAgICAgICAgICAg
ICAgICAgIHwgICAgICArLS0tLS0tLS0tLS0tLS0tKyAgIHwgICAgICAgICAgICAgIHwKLSAqICAg
ICAgICAgICAgICAgICAgICB8ICAgKy0tfCAgICB3cmFwcGVyMSAgIHwtLS18LS0tLSsgICAgICAg
ICB8Ci0gKiAgICAgICAgICAgICAgICAgICAgfCAgIHwgICstLS0tLS0tLS0tLS0tLS0rICAgdiAg
ICB8ICAgICAgICAgfAotICogICAgICAgICAgICAgICAgICAgIHwgICB8ICAgICAgICAgICstLS0t
LS0tLS0tLS0tKyAgfCAgICAgICAgIHwKLSAqICAgICAgICAgICAgICAgICAgICB8ICAgfCAgICAg
Ky0tLS18ICAgd3JhcHBlcjIgIHwtLS0tLS0tLSsgICB8Ci0gKiAgICAgICAgICAgICAgICAgICAg
fCAgIHwgICAgIHwgICAgKy0tLS0tLS0tLS0tLS0rICB8ICAgICB8ICAgfAotICogICAgICAgICAg
ICAgICAgICAgIHwgICB8ICAgICB8ICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCAgIHwKLSAq
ICAgICAgICAgICAgICAgICAgICB8ICAgdiAgICAgdiAgICAgICAgICAgICAgICAgICAgIHYgICAg
IHYgICB8IHdyYXBwZXIKLSAqICAgICAgICAgICAgICAgICAgICB8ICstLS0rICstLS0rICAgKy0t
LS0tLS0tLSsgICArLS0tKyArLS0tKyB8IGludmFyaWFudHMKLSAqIHBlcmZvcm0oYW55TWV0aG9k
KSB8IHwgICB8IHwgICB8ICAgfCAgICAgICAgIHwgICB8ICAgfCB8ICAgfCB8IG1haW50YWluZWQK
LSAqICstLS0tLS0tLS0tLS0tLS0tLT58LXwtLS18LXwtLS18LS0+fGFueU1ldGhvZHwtLS18LS0t
fC18LS0tfC18LS0tLS0tLS0+Ci0gKiAgICAgICAgICAgICAgICAgICAgfCB8ICAgfCB8ICAgfCAg
IHwgICAgICAgICB8ICAgfCAgIHwgfCAgIHwgfAotICogICAgICAgICAgICAgICAgICAgIHwgfCAg
IHwgfCAgIHwgICB8ICAgICAgICAgfCAgIHwgICB8IHwgICB8IHwKLSAqICAgICAgICAgICAgICAg
ICAgICB8IHwgICB8IHwgICB8ICAgfCAgICAgICAgIHwgICB8ICAgfCB8ICAgfCB8Ci0gKiAgICAg
ICAgICAgICAgICAgICAgfCArLS0tKyArLS0tKyAgICstLS0tLS0tLS0rICAgKy0tLSsgKy0tLSsg
fAotICogICAgICAgICAgICAgICAgICAgIHwgIGluaXRpYWxpemUgICAgICAgICAgICAgICAgICAg
IGNsb3NlICAgIHwKLSAqICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gKiA8L3ByZT4KLSAqCi0gKiBCb251czoKLSAqIC0gUmVw
b3J0cyB0aW1pbmcgbWV0cmljcyBieSBtZXRob2QgbmFtZSBhbmQgd3JhcHBlciBpbmRleC4KLSAq
Ci0gKiBVc2UgY2FzZXM6Ci0gKiAtIFByZXNlcnZpbmcgdGhlIGlucHV0IHNlbGVjdGlvbiByYW5n
ZXMgYmVmb3JlL2FmdGVyIHJlY29uY2lsaWF0aW9uLgotICogICBSZXN0b3Jpbmcgc2VsZWN0aW9u
IGV2ZW4gaW4gdGhlIGV2ZW50IG9mIGFuIHVuZXhwZWN0ZWQgZXJyb3IuCi0gKiAtIERlYWN0aXZh
dGluZyBldmVudHMgd2hpbGUgcmVhcnJhbmdpbmcgdGhlIERPTSwgcHJldmVudGluZyBibHVycy9m
b2N1c2VzLAotICogICB3aGlsZSBndWFyYW50ZWVpbmcgdGhhdCBhZnRlcndhcmRzLCB0aGUgZXZl
bnQgc3lzdGVtIGlzIHJlYWN0aXZhdGVkLgotICogLSBGbHVzaGluZyBhIHF1ZXVlIG9mIGNvbGxl
Y3RlZCBET00gbXV0YXRpb25zIHRvIHRoZSBtYWluIFVJIHRocmVhZCBhZnRlciBhCi0gKiAgIHJl
Y29uY2lsaWF0aW9uIHRha2VzIHBsYWNlIGluIGEgd29ya2VyIHRocmVhZC4KLSAqIC0gSW52b2tp
bmcgYW55IGNvbGxlY3RlZCBgY29tcG9uZW50RGlkUmVuZGVyYCBjYWxsYmFja3MgYWZ0ZXIgcmVu
ZGVyaW5nIG5ldwotICogICBjb250ZW50LgotICogLSAoRnV0dXJlIHVzZSBjYXNlKTogV3JhcHBp
bmcgcGFydGljdWxhciBmbHVzaGVzIG9mIHRoZSBgUmVhY3RXb3JrZXJgIHF1ZXVlCi0gKiAgIHRv
IHByZXNlcnZlIHRoZSBgc2Nyb2xsVG9wYCAoYW4gYXV0b21hdGljIHNjcm9sbCBhd2FyZSBET00p
LgotICogLSAoRnV0dXJlIHVzZSBjYXNlKTogTGF5b3V0IGNhbGN1bGF0aW9ucyBiZWZvcmUgYW5k
IGFmdGVyIERPTSB1cGF0ZXMuCi0gKgotICogVHJhbnNhY3Rpb25hbCBwbHVnaW4gQVBJOgotICog
LSBBIG1vZHVsZSB0aGF0IGhhcyBhbiBgaW5pdGlhbGl6ZWAgbWV0aG9kIHRoYXQgcmV0dXJucyBh
bnkgcHJlY29tcHV0YXRpb24uCi0gKiAtIGFuZCBhIGBjbG9zZWAgbWV0aG9kIHRoYXQgYWNjZXB0
cyB0aGUgcHJlY29tcHV0YXRpb24uIGBjbG9zZWAgaXMgaW52b2tlZAotICogICB3aGVuIHRoZSB3
cmFwcGVkIHByb2Nlc3MgaXMgY29tcGxldGVkLCBvciBoYXMgZmFpbGVkLgotICoKLSAqIEBwYXJh
bSB7QXJyYXk8VHJhbnNhY3Rpb25hbFdyYXBwZXI+fSB0cmFuc2FjdGlvbldyYXBwZXIgV3JhcHBl
ciBtb2R1bGVzCi0gKiB0aGF0IGltcGxlbWVudCBgaW5pdGlhbGl6ZWAgYW5kIGBjbG9zZWAuCi0g
KiBAcmV0dXJuIHtUcmFuc2FjdGlvbn0gU2luZ2xlIHRyYW5zYWN0aW9uIGZvciByZXVzZSBpbiB0
aHJlYWQuCi0gKgotICogQGNsYXNzIFRyYW5zYWN0aW9uCi0gKi8KLXZhciBNaXhpbiA9IHsKLSAg
LyoqCi0gICAqIFNldHMgdXAgdGhpcyBpbnN0YW5jZSBzbyB0aGF0IGl0IGlzIHByZXBhcmVkIGZv
ciBjb2xsZWN0aW5nIG1ldHJpY3MuIERvZXMKLSAgICogc28gc3VjaCB0aGF0IHRoaXMgc2V0dXAg
bWV0aG9kIG1heSBiZSB1c2VkIG9uIGFuIGluc3RhbmNlIHRoYXQgaXMgYWxyZWFkeQotICAgKiBp
bml0aWFsaXplZCwgaW4gYSB3YXkgdGhhdCBkb2VzIG5vdCBjb25zdW1lIGFkZGl0aW9uYWwgbWVt
b3J5IHVwb24gcmV1c2UuCi0gICAqIFRoYXQgY2FuIGJlIHVzZWZ1bCBpZiB5b3UgZGVjaWRlIHRv
IG1ha2UgeW91ciBzdWJjbGFzcyBvZiB0aGlzIG1peGluIGEKLSAgICogIlBvb2xlZENsYXNzIi4K
LSAgICovCi0gIHJlaW5pdGlhbGl6ZVRyYW5zYWN0aW9uOiBmdW5jdGlvbigpIHsKLSAgICB0aGlz
LnRyYW5zYWN0aW9uV3JhcHBlcnMgPSB0aGlzLmdldFRyYW5zYWN0aW9uV3JhcHBlcnMoKTsKLSAg
ICBpZiAoIXRoaXMud3JhcHBlckluaXREYXRhKSB7Ci0gICAgICB0aGlzLndyYXBwZXJJbml0RGF0
YSA9IFtdOwotICAgIH0gZWxzZSB7Ci0gICAgICB0aGlzLndyYXBwZXJJbml0RGF0YS5sZW5ndGgg
PSAwOwotICAgIH0KLSAgICBpZiAoIXRoaXMudGltaW5nTWV0cmljcykgewotICAgICAgdGhpcy50
aW1pbmdNZXRyaWNzID0ge307Ci0gICAgfQotICAgIHRoaXMudGltaW5nTWV0cmljcy5tZXRob2RJ
bnZvY2F0aW9uVGltZSA9IDA7Ci0gICAgaWYgKCF0aGlzLnRpbWluZ01ldHJpY3Mud3JhcHBlcklu
aXRUaW1lcykgewotICAgICAgdGhpcy50aW1pbmdNZXRyaWNzLndyYXBwZXJJbml0VGltZXMgPSBb
XTsKLSAgICB9IGVsc2UgewotICAgICAgdGhpcy50aW1pbmdNZXRyaWNzLndyYXBwZXJJbml0VGlt
ZXMubGVuZ3RoID0gMDsKLSAgICB9Ci0gICAgaWYgKCF0aGlzLnRpbWluZ01ldHJpY3Mud3JhcHBl
ckNsb3NlVGltZXMpIHsKLSAgICAgIHRoaXMudGltaW5nTWV0cmljcy53cmFwcGVyQ2xvc2VUaW1l
cyA9IFtdOwotICAgIH0gZWxzZSB7Ci0gICAgICB0aGlzLnRpbWluZ01ldHJpY3Mud3JhcHBlckNs
b3NlVGltZXMubGVuZ3RoID0gMDsKLSAgICB9Ci0gICAgdGhpcy5faXNJblRyYW5zYWN0aW9uID0g
ZmFsc2U7Ci0gIH0sCi0KLSAgX2lzSW5UcmFuc2FjdGlvbjogZmFsc2UsCi0KLSAgLyoqCi0gICAq
IEBhYnN0cmFjdAotICAgKiBAcmV0dXJuIHtBcnJheTxUcmFuc2FjdGlvbldyYXBwZXI+fSBBcnJh
eSBvZiB0cmFuc2FjdGlvbiB3cmFwcGVycy4KLSAgICovCi0gIGdldFRyYW5zYWN0aW9uV3JhcHBl
cnM6IG51bGwsCi0KLSAgaXNJblRyYW5zYWN0aW9uOiBmdW5jdGlvbigpIHsKLSAgICByZXR1cm4g
ISF0aGlzLl9pc0luVHJhbnNhY3Rpb247Ci0gIH0sCi0KLSAgLyoqCi0gICAqIEV4ZWN1dGVzIHRo
ZSBmdW5jdGlvbiB3aXRoaW4gYSBzYWZldHkgd2luZG93LiBVc2UgdGhpcyBmb3IgdGhlIHRvcCBs
ZXZlbAotICAgKiBtZXRob2RzIHRoYXQgcmVzdWx0IGluIGxhcmdlIGFtb3VudHMgb2YgY29tcHV0
YXRpb24vbXV0YXRpb25zIHRoYXQgd291bGQKLSAgICogbmVlZCB0byBiZSBzYWZldHkgY2hlY2tl
ZC4KLSAgICoKLSAgICogQHBhcmFtIHtmdW5jdGlvbn0gbWV0aG9kIE1lbWJlciBvZiBzY29wZSB0
byBjYWxsLgotICAgKiBAcGFyYW0ge09iamVjdH0gc2NvcGUgU2NvcGUgdG8gaW52b2tlIGZyb20u
Ci0gICAqIEBwYXJhbSB7T2JqZWN0Pz19IGFyZ3MuLi4gQXJndW1lbnRzIHRvIHBhc3MgdG8gdGhl
IG1ldGhvZCAob3B0aW9uYWwpLgotICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIEhlbHBz
IHByZXZlbnQgbmVlZCB0byBiaW5kIGluIG1hbnkgY2FzZXMuCi0gICAqIEByZXR1cm4gUmV0dXJu
IHZhbHVlIGZyb20gYG1ldGhvZGAuCi0gICAqLwotICBwZXJmb3JtOiBmdW5jdGlvbihtZXRob2Qs
IHNjb3BlLCBhLCBiLCBjLCBkLCBlLCBmKSB7Ci0gICAgdGhyb3dJZih0aGlzLmlzSW5UcmFuc2Fj
dGlvbigpLCBEVUFMX1RSQU5TQUNUSU9OKTsKLSAgICB2YXIgbWVtYmVyU3RhcnQgPSBEYXRlLm5v
dygpOwotICAgIHZhciBlcnIgPSBudWxsOwotICAgIHZhciByZXQ7Ci0gICAgdHJ5IHsKLSAgICAg
IHRoaXMuaW5pdGlhbGl6ZUFsbCgpOwotICAgICAgcmV0ID0gbWV0aG9kLmNhbGwoc2NvcGUsIGEs
IGIsIGMsIGQsIGUsIGYpOwotICAgIH0gY2F0Y2ggKGllX3JlcXVpcmVzX2NhdGNoKSB7Ci0gICAg
ICBlcnIgPSBpZV9yZXF1aXJlc19jYXRjaDsKLSAgICB9IGZpbmFsbHkgewotICAgICAgdmFyIG1l
bWJlckVuZCA9IERhdGUubm93KCk7Ci0gICAgICB0aGlzLm1ldGhvZEludm9jYXRpb25UaW1lICs9
IChtZW1iZXJFbmQgLSBtZW1iZXJTdGFydCk7Ci0gICAgICB0cnkgewotICAgICAgICB0aGlzLmNs
b3NlQWxsKCk7Ci0gICAgICB9IGNhdGNoIChjbG9zZUFsbEVycikgewotICAgICAgICBlcnIgPSBl
cnIgfHwgY2xvc2VBbGxFcnI7Ci0gICAgICB9Ci0gICAgfQotICAgIGlmIChlcnIpIHsKLSAgICAg
IHRocm93IGVycjsKLSAgICB9Ci0gICAgcmV0dXJuIHJldDsKLSAgfSwKLQotICBpbml0aWFsaXpl
QWxsOiBmdW5jdGlvbigpIHsKLSAgICB0aGlzLl9pc0luVHJhbnNhY3Rpb24gPSB0cnVlOwotICAg
IHZhciB0cmFuc2FjdGlvbldyYXBwZXJzID0gdGhpcy50cmFuc2FjdGlvbldyYXBwZXJzOwotICAg
IHZhciB3cmFwcGVySW5pdFRpbWVzID0gdGhpcy50aW1pbmdNZXRyaWNzLndyYXBwZXJJbml0VGlt
ZXM7Ci0gICAgdmFyIGVyciA9IG51bGw7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0cmFuc2Fj
dGlvbldyYXBwZXJzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICB2YXIgaW5pdFN0YXJ0ID0gRGF0ZS5u
b3coKTsKLSAgICAgIHZhciB3cmFwcGVyID0gdHJhbnNhY3Rpb25XcmFwcGVyc1tpXTsKLSAgICAg
IHRyeSB7Ci0gICAgICAgIHRoaXMud3JhcHBlckluaXREYXRhW2ldID0KLSAgICAgICAgICB3cmFw
cGVyLmluaXRpYWxpemUgPyB3cmFwcGVyLmluaXRpYWxpemUuY2FsbCh0aGlzKSA6IG51bGw7Ci0g
ICAgICB9IGNhdGNoIChpbml0RXJyKSB7Ci0gICAgICAgIGVyciA9IGVyciB8fCBpbml0RXJyOyAg
Ly8gUmVtZW1iZXIgdGhlIGZpcnN0IGVycm9yLgotICAgICAgICB0aGlzLndyYXBwZXJJbml0RGF0
YVtpXSA9IFRyYW5zYWN0aW9uLk9CU0VSVkVEX0VSUk9SOwotICAgICAgfSBmaW5hbGx5IHsKLSAg
ICAgICAgdmFyIGN1ckluaXRUaW1lID0gd3JhcHBlckluaXRUaW1lc1tpXTsKLSAgICAgICAgdmFy
IGluaXRFbmQgPSBEYXRlLm5vdygpOwotICAgICAgICB3cmFwcGVySW5pdFRpbWVzW2ldID0gKGN1
ckluaXRUaW1lIHx8IDApICsgKGluaXRFbmQgLSBpbml0U3RhcnQpOwotICAgICAgfQotICAgIH0K
LSAgICBpZiAoZXJyKSB7Ci0gICAgICB0aHJvdyBlcnI7Ci0gICAgfQotICB9LAotCi0gIC8qKgot
ICAgKiBJbnZva2VzIGVhY2ggb2YgYHRoaXMudHJhbnNhY3Rpb25XcmFwcGVycy5jbG9zZVtpXWAg
ZnVuY3Rpb25zLCBwYXNzaW5nIGludG8KLSAgICogdGhlbSB0aGUgcmVzcGVjdGl2ZSByZXR1cm4g
dmFsdWVzIG9mIGB0aGlzLnRyYW5zYWN0aW9uV3JhcHBlcnMuaW5pdFtpXWAKLSAgICogKGBjbG9z
ZWBycyB0aGF0IGNvcnJlc3BvbmQgdG8gaW5pdGlhbGl6ZXJzIHRoYXQgZmFpbGVkIHdpbGwgbm90
IGJlCi0gICAqIGludm9rZWQpLgotICAgKi8KLSAgY2xvc2VBbGw6IGZ1bmN0aW9uKCkgewotICAg
IHRocm93SWYoIXRoaXMuaXNJblRyYW5zYWN0aW9uKCksIE1JU1NJTkdfVFJBTlNBQ1RJT04pOwot
ICAgIHZhciB0cmFuc2FjdGlvbldyYXBwZXJzID0gdGhpcy50cmFuc2FjdGlvbldyYXBwZXJzOwot
ICAgIHZhciB3cmFwcGVyQ2xvc2VUaW1lcyA9IHRoaXMudGltaW5nTWV0cmljcy53cmFwcGVyQ2xv
c2VUaW1lczsKLSAgICB2YXIgZXJyID0gbnVsbDsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRy
YW5zYWN0aW9uV3JhcHBlcnMubGVuZ3RoOyBpKyspIHsKLSAgICAgIHZhciB3cmFwcGVyID0gdHJh
bnNhY3Rpb25XcmFwcGVyc1tpXTsKLSAgICAgIHZhciBjbG9zZVN0YXJ0ID0gRGF0ZS5ub3coKTsK
LSAgICAgIHZhciBpbml0RGF0YSA9IHRoaXMud3JhcHBlckluaXREYXRhW2ldOwotICAgICAgdHJ5
IHsKLSAgICAgICAgaWYgKGluaXREYXRhICE9PSBUcmFuc2FjdGlvbi5PQlNFUlZFRF9FUlJPUikg
ewotICAgICAgICAgIHdyYXBwZXIuY2xvc2UgJiYgd3JhcHBlci5jbG9zZS5jYWxsKHRoaXMsIGlu
aXREYXRhKTsKLSAgICAgICAgfQotICAgICAgfSBjYXRjaCAoY2xvc2VFcnIpIHsKLSAgICAgICAg
ZXJyID0gZXJyIHx8IGNsb3NlRXJyOyAgLy8gUmVtZW1iZXIgdGhlIGZpcnN0IGVycm9yLgotICAg
ICAgfSBmaW5hbGx5IHsKLSAgICAgICAgdmFyIGNsb3NlRW5kID0gRGF0ZS5ub3coKTsKLSAgICAg
ICAgdmFyIGN1ckNsb3NlVGltZSA9IHdyYXBwZXJDbG9zZVRpbWVzW2ldOwotICAgICAgICB3cmFw
cGVyQ2xvc2VUaW1lc1tpXSA9IChjdXJDbG9zZVRpbWUgfHwgMCkgKyAoY2xvc2VFbmQgLSBjbG9z
ZVN0YXJ0KTsKLSAgICAgIH0KLSAgICB9Ci0gICAgdGhpcy53cmFwcGVySW5pdERhdGEubGVuZ3Ro
ID0gMDsKLSAgICB0aGlzLl9pc0luVHJhbnNhY3Rpb24gPSBmYWxzZTsKLSAgICBpZiAoZXJyKSB7
Ci0gICAgICB0aHJvdyBlcnI7Ci0gICAgfQotICB9Ci19OwotCi12YXIgVHJhbnNhY3Rpb24gPSB7
Ci0gIE1peGluOiBNaXhpbiwKLSAgLyoqCi0gICAqIFRva2VuIHRvIGxvb2sgZm9yIHRvIGRldGVy
bWluZSBpZiBhbiBlcnJvciBvY2N1cmVkLgotICAgKi8KLSAgT0JTRVJWRURfRVJST1I6IHt9Ci0K
LX07Ci0KLW1vZHVsZS5leHBvcnRzID0gVHJhbnNhY3Rpb247Ci0KLX0pKCkKLX0seyIuL3Rocm93
SWYiOjg2fV0sNTk6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewotLyoqCi0gKiBD
b3B5cmlnaHQgMjAxMyBGYWNlYm9vaywgSW5jLgotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBB
cGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBu
b3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgot
ICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogaHR0cDov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVp
cmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQot
ICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFT
IElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBL
SU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0
aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRh
dGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKgotICogQHByb3ZpZGVzTW9kdWxlIFZpZXdwb3J0
TWV0cmljcwotICovCi0KLSJ1c2Ugc3RyaWN0IjsKLQotdmFyIFZpZXdwb3J0TWV0cmljcyA9IHsK
LQotICBjdXJyZW50U2Nyb2xsTGVmdDogMCwKLQotICBjdXJyZW50U2Nyb2xsVG9wOiAwLAotCi0g
IHJlZnJlc2hTY3JvbGxWYWx1ZXM6IGZ1bmN0aW9uKCkgewotICAgIFZpZXdwb3J0TWV0cmljcy5j
dXJyZW50U2Nyb2xsTGVmdCA9Ci0gICAgICBkb2N1bWVudC5ib2R5LnNjcm9sbExlZnQgKyBkb2N1
bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdDsKLSAgICBWaWV3cG9ydE1ldHJpY3MuY3Vy
cmVudFNjcm9sbFRvcCA9Ci0gICAgICBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCArIGRvY3VtZW50
LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3A7Ci0gIH0KLQotfTsKLQotbW9kdWxlLmV4cG9ydHMg
PSBWaWV3cG9ydE1ldHJpY3M7Ci0KLX0se31dLDYwOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxl
eHBvcnRzKXsKLS8qKgotICogQ29weXJpZ2h0IDIwMTMgRmFjZWJvb2ssIEluYy4KLSAqCi0gKiBM
aWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vu
c2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ug
d2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5z
ZSBhdAotICoKLSAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAot
ICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1Ig
Q09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNl
ZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNz
aW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICoKLSAqIEBwcm92
aWRlc01vZHVsZSBhY2N1bXVsYXRlCi0gKi8KLQotInVzZSBzdHJpY3QiOwotCi12YXIgdGhyb3dJ
ZiA9IHJlcXVpcmUoIi4vdGhyb3dJZiIpOwotCi12YXIgSU5WQUxJRF9BUkdTID0gJ0lOVkFMSURf
QUNDVU1fQVJHUyc7Ci0KLWlmICh0cnVlKSB7Ci0gIElOVkFMSURfQVJHUyA9Ci0gICAgJ2FjY3Vt
dWxhdGUgcmVxdWlyZXMgbm9uIGVtcHR5IChub24tbnVsbCwgZGVmaW5lZCkgbmV4dCAnICsKLSAg
ICAndmFsdWVzLiBBbGwgYXJyYXlzIGFjY3VtdWxhdGVkIG11c3Qgbm90IGNvbnRhaW4gYW55IGVt
cHR5IGl0ZW1zLic7Ci19Ci0KLS8qKgotICogQWNjdW11bGF0ZXMgaXRlbXMgdGhhdCBtdXN0IG5l
dmVyIGJlIGVtcHR5LCBpbnRvIGEgcmVzdWx0IGluIGEgbWFubmVyIHRoYXQKLSAqIGNvbnNlcnZl
cyBtZW1vcnkgLSBhdm9pZGluZyBhbGxvY2F0aW9uIG9mIGFycmF5cyB1bnRpbCB0aGV5IGFyZSBu
ZWVkZWQuIFRoZQotICogYWNjdW11bGF0aW9uIG1heSBzdGFydCBhbmQvb3IgZW5kIHVwIGJlaW5n
IGEgc2luZ2xlIGVsZW1lbnQgb3IgYW4gYXJyYXkKLSAqIGRlcGVuZGluZyBvbiB0aGUgdG90YWwg
Y291bnQgKGlmIGdyZWF0ZXIgdGhhbiBvbmUsIGFuIGFycmF5IGlzIGFsbG9jYXRlZCkuCi0gKiBI
YW5kbGVzIG1vc3QgY29tbW9uIGNhc2UgZmlyc3QgKHN0YXJ0aW5nIHdpdGggYW4gZW1wdHkgY3Vy
cmVudCB2YWx1ZSBhbmQKLSAqIGFjcXVpcmluZyBvbmUpLgotICogQHJldHVybiB7QWNjdW11bGF0
aW9ufSBBbiBhY2N1bXVsYXRpb24gd2hpY2ggaXMgZWl0aGVyIGEgc2luZ2xlIGl0ZW0gb3IgYW4K
LSAqIEFycmF5IG9mIGl0ZW1zLgotICovCi1mdW5jdGlvbiBhY2N1bXVsYXRlKGN1ciwgbmV4dCkg
ewotICB2YXIgY3VyVmFsSXNFbXB0eSA9IGN1ciA9PSBudWxsOyAgIC8vIFdpbGwgdGVzdCBmb3Ig
ZW1wdGluZXNzIChudWxsL3VuZGVmKQotICB2YXIgbmV4dFZhbElzRW1wdHkgPSBuZXh0ID09PSBu
dWxsOwotICBpZiAodHJ1ZSkgewotICAgIHRocm93SWYobmV4dFZhbElzRW1wdHksIElOVkFMSURf
QVJHUyk7Ci0gIH0KLSAgaWYgKG5leHRWYWxJc0VtcHR5KSB7Ci0gICAgcmV0dXJuIGN1cjsKLSAg
fSBlbHNlIHsKLSAgICBpZiAoY3VyVmFsSXNFbXB0eSkgewotICAgICAgcmV0dXJuIG5leHQ7Ci0g
ICAgfSBlbHNlIHsKLSAgICAgIC8vIEJvdGggYXJlIG5vdCBlbXB0eS4gV2FybmluZzogTmV2ZXIg
Y2FsbCB4LmNvbmNhdCh5KSB3aGVuIHlvdSBhcmUgbm90Ci0gICAgICAvLyBjZXJ0YWluIHRoYXQg
eCBpcyBhbiBBcnJheSAoeCBjb3VsZCBiZSBhIHN0cmluZyB3aXRoIGNvbmNhdCBtZXRob2QpLgot
ICAgICAgdmFyIGN1cklzQXJyYXkgPSBBcnJheS5pc0FycmF5KGN1cik7Ci0gICAgICB2YXIgbmV4
dElzQXJyYXkgPSBBcnJheS5pc0FycmF5KG5leHQpOwotICAgICAgaWYgKGN1cklzQXJyYXkpIHsK
LSAgICAgICAgcmV0dXJuIGN1ci5jb25jYXQobmV4dCk7Ci0gICAgICB9IGVsc2UgewotICAgICAg
ICBpZiAobmV4dElzQXJyYXkpIHsKLSAgICAgICAgICByZXR1cm4gW2N1cl0uY29uY2F0KG5leHQp
OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIHJldHVybiBbY3VyLCBuZXh0XTsKLSAgICAg
ICAgfQotICAgICAgfQotICAgIH0KLSAgfQotfQotCi1tb2R1bGUuZXhwb3J0cyA9IGFjY3VtdWxh
dGU7Ci0KLX0seyIuL3Rocm93SWYiOjg2fV0sNjE6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4
cG9ydHMpewotLyoqCi0gKiBDb3B5cmlnaHQgMjAxMyBGYWNlYm9vaywgSW5jLgotICoKLSAqIExp
Y2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5z
ZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3
aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNl
IGF0Ci0gKgotICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0g
KgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3
cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlz
dHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBD
T05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2Vl
IHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Np
b25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKgotICogQHByb3Zp
ZGVzTW9kdWxlIGNvcHlQcm9wZXJ0aWVzCi0gKi8KLQotLyoqCi0gKiBDb3B5IHByb3BlcnRpZXMg
ZnJvbSBvbmUgb3IgbW9yZSBvYmplY3RzICh1cCB0byA1KSBpbnRvIHRoZSBmaXJzdCBvYmplY3Qu
Ci0gKiBUaGlzIGlzIGEgc2hhbGxvdyBjb3B5LiBJdCBtdXRhdGVzIHRoZSBmaXJzdCBvYmplY3Qg
YW5kIGFsc28gcmV0dXJucyBpdC4KLSAqCi0gKiBOT1RFOiBgYXJndW1lbnRzYCBoYXMgYSB2ZXJ5
IHNpZ25pZmljYW50IHBlcmZvcm1hbmNlIHBlbmFsdHksIHdoaWNoIGlzIHdoeQotICogd2UgZG9u
J3Qgc3VwcG9ydCB1bmxpbWl0ZWQgYXJndW1lbnRzLgotICovCi1mdW5jdGlvbiBjb3B5UHJvcGVy
dGllcyhvYmosIGEsIGIsIGMsIGQsIGUsIGYpIHsKLSAgb2JqID0gb2JqIHx8IHt9OwotCi0gIGlm
ICh0cnVlKSB7Ci0gICAgaWYgKGYpIHsKLSAgICAgIHRocm93IG5ldyBFcnJvcignVG9vIG1hbnkg
YXJndW1lbnRzIHBhc3NlZCB0byBjb3B5UHJvcGVydGllcycpOwotICAgIH0KLSAgfQotCi0gIHZh
ciBhcmdzID0gW2EsIGIsIGMsIGQsIGVdOwotICB2YXIgaWkgPSAwLCB2OwotICB3aGlsZSAoYXJn
c1tpaV0pIHsKLSAgICB2ID0gYXJnc1tpaSsrXTsKLSAgICBmb3IgKHZhciBrIGluIHYpIHsKLSAg
ICAgIG9ialtrXSA9IHZba107Ci0gICAgfQotCi0gICAgLy8gSUUgaWdub3JlcyB0b1N0cmluZyBp
biBvYmplY3QgaXRlcmF0aW9uLi4gU2VlOgotICAgIC8vIHdlYnJlZmxlY3Rpb24uYmxvZ3Nwb3Qu
Y29tLzIwMDcvMDcvcXVpY2stZml4LWludGVybmV0LWV4cGxvcmVyLWFuZC5odG1sCi0gICAgaWYg
KHYuaGFzT3duUHJvcGVydHkgJiYgdi5oYXNPd25Qcm9wZXJ0eSgndG9TdHJpbmcnKSAmJgotICAg
ICAgICAodHlwZW9mIHYudG9TdHJpbmcgIT0gJ3VuZGVmaW5lZCcpICYmIChvYmoudG9TdHJpbmcg
IT09IHYudG9TdHJpbmcpKSB7Ci0gICAgICBvYmoudG9TdHJpbmcgPSB2LnRvU3RyaW5nOwotICAg
IH0KLSAgfQotCi0gIHJldHVybiBvYmo7Ci19Ci0KLW1vZHVsZS5leHBvcnRzID0gY29weVByb3Bl
cnRpZXM7Ci0KLX0se31dLDYyOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKLS8q
KgotICogQ29weXJpZ2h0IDIwMTMgRmFjZWJvb2ssIEluYy4KLSAqCi0gKiBMaWNlbnNlZCB1bmRl
ciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlv
dSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGlj
ZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAq
IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVz
cyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29m
dHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9u
IGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBP
RiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5z
ZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAq
IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICoKLSAqIEBwcm92aWRlc01vZHVsZSBj
cmVhdGVPYmplY3RGcm9tCi0gKi8KLQotdmFyIGhhc0FycmF5TmF0dXJlID0gcmVxdWlyZSgiLi9o
YXNBcnJheU5hdHVyZSIpOwotCi0vKioKLSAqIENvbnN0cnVjdCBhbiBvYmplY3QgZnJvbSBhbiBh
cnJheSBvZiBrZXlzCi0gKiBhbmQgb3B0aW9uYWxseSBzcGVjaWZpZWQgdmFsdWUgb3IgbGlzdCBv
ZiB2YWx1ZXMuCi0gKgotICogID4+PiBjcmVhdGVPYmplY3RGcm9tKFsnYScsJ2InLCdjJ10pOwot
ICogIHthOiB0cnVlLCBiOiB0cnVlLCBjOiB0cnVlfQotICoKLSAqICA+Pj4gY3JlYXRlT2JqZWN0
RnJvbShbJ2EnLCdiJywnYyddLCBmYWxzZSk7Ci0gKiAge2E6IGZhbHNlLCBiOiBmYWxzZSwgYzog
ZmFsc2V9Ci0gKgotICogID4+PiBjcmVhdGVPYmplY3RGcm9tKFsnYScsJ2InLCdjJ10sICdtb25r
ZXknKTsKLSAqICB7YzonbW9ua2V5JywgYjonbW9ua2V5JyBjOidtb25rZXknfQotICoKLSAqICA+
Pj4gY3JlYXRlT2JqZWN0RnJvbShbJ2EnLCdiJywnYyddLCBbMSwyLDNdKTsKLSAqICB7YTogMSwg
YjogMiwgYzogM30KLSAqCi0gKiAgPj4+IGNyZWF0ZU9iamVjdEZyb20oWyd3b21lbicsICdtZW4n
XSwgW3RydWUsIGZhbHNlXSk7Ci0gKiAge3dvbWVuOiB0cnVlLCBtZW46IGZhbHNlfQotICoKLSAq
IEBwYXJhbSAgIEFycmF5ICAgbGlzdCBvZiBrZXlzCi0gKiBAcGFyYW0gICBtaXhlZCAgIG9wdGlv
bmFsIHZhbHVlIG9yIHZhbHVlIGFycmF5LiAgZGVmYXVsdHMgdHJ1ZS4KLSAqIEByZXR1cm5zIG9i
amVjdAotICovCi1mdW5jdGlvbiBjcmVhdGVPYmplY3RGcm9tKGtleXMsIHZhbHVlcyAvKiA9IHRy
dWUgKi8pIHsKLSAgaWYgKHRydWUpIHsKLSAgICBpZiAoIWhhc0FycmF5TmF0dXJlKGtleXMpKSB7
Ci0gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdNdXN0IHBhc3MgYW4gYXJyYXkgb2Yga2V5cy4n
KTsKLSAgICB9Ci0gIH0KLQotICB2YXIgb2JqZWN0ID0ge307Ci0gIHZhciBpc19hcnJheSA9IGhh
c0FycmF5TmF0dXJlKHZhbHVlcyk7Ci0gIGlmICh0eXBlb2YgdmFsdWVzID09ICd1bmRlZmluZWQn
KSB7Ci0gICAgdmFsdWVzID0gdHJ1ZTsKLSAgfQotCi0gIGZvciAodmFyIGlpID0ga2V5cy5sZW5n
dGg7IGlpLS07KSB7Ci0gICAgb2JqZWN0W2tleXNbaWldXSA9IGlzX2FycmF5ID8gdmFsdWVzW2lp
XSA6IHZhbHVlczsKLSAgfQotICByZXR1cm4gb2JqZWN0OwotfQotCi1tb2R1bGUuZXhwb3J0cyA9
IGNyZWF0ZU9iamVjdEZyb207Ci0KLX0seyIuL2hhc0FycmF5TmF0dXJlIjo3Mn1dLDYzOltmdW5j
dGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKLS8qKgotICogQ29weXJpZ2h0IDIwMTMgRmFj
ZWJvb2ssIEluYy4KLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZl
cnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUg
ZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxl
IGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBX
SVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJl
c3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1
YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBM
aWNlbnNlLgotICoKLSAqIEBwcm92aWRlc01vZHVsZSBkYW5nZXJvdXNTdHlsZVZhbHVlCi0gKiBA
dHlwZWNoZWNrcyBzdGF0aWMtb25seQotICovCi0KLSJ1c2Ugc3RyaWN0IjsKLQotdmFyIENTU1By
b3BlcnR5ID0gcmVxdWlyZSgiLi9DU1NQcm9wZXJ0eSIpOwotCi0vKioKLSAqIENvbnZlcnQgYSB2
YWx1ZSBpbnRvIHRoZSBwcm9wZXIgY3NzIHdyaXRhYmxlIHZhbHVlLiBUaGUgYHN0eWxlTmFtZWAg
bmFtZQotICogbmFtZSBzaG91bGQgYmUgbG9naWNhbCAobm8gaHlwaGVucyksIGFzIHNwZWNpZmll
ZAotICogaW4gYENTU1Byb3BlcnR5LmlzVW5pdGxlc3NOdW1iZXJgLgotICoKLSAqIEBwYXJhbSB7
c3RyaW5nfSBzdHlsZU5hbWUgQ1NTIHByb3BlcnR5IG5hbWUgc3VjaCBhcyBgdG9wTWFyZ2luYC4K
LSAqIEBwYXJhbSB7Kn0gdmFsdWUgQ1NTIHByb3BlcnR5IHZhbHVlIHN1Y2ggYXMgYDEwcHhgLgot
ICogQHJldHVybiB7c3RyaW5nfSBOb3JtYWxpemVkIHN0eWxlIHZhbHVlIHdpdGggZGltZW5zaW9u
cyBhcHBsaWVkLgotICovCi1mdW5jdGlvbiBkYW5nZXJvdXNTdHlsZVZhbHVlKHN0eWxlTmFtZSwg
dmFsdWUpIHsKLSAgLy8gTm90ZSB0aGF0IHdlJ3ZlIHJlbW92ZWQgZXNjYXBlVGV4dEZvckJyb3dz
ZXIoKSBjYWxscyBoZXJlIHNpbmNlIHRoZQotICAvLyB3aG9sZSBzdHJpbmcgd2lsbCBiZSBlc2Nh
cGVkIHdoZW4gdGhlIGF0dHJpYnV0ZSBpcyBpbmplY3RlZCBpbnRvCi0gIC8vIHRoZSBtYXJrdXAu
IElmIHlvdSBwcm92aWRlIHVuc2FmZSB1c2VyIGRhdGEgaGVyZSB0aGV5IGNhbiBpbmplY3QKLSAg
Ly8gYXJiaXRyYXJ5IENTUyB3aGljaCBtYXkgYmUgcHJvYmxlbWF0aWMgKEkgY291bGRuJ3QgcmVw
cm8gdGhpcyk6Ci0gIC8vIGh0dHBzOi8vd3d3Lm93YXNwLm9yZy9pbmRleC5waHAvWFNTX0ZpbHRl
cl9FdmFzaW9uX0NoZWF0X1NoZWV0Ci0gIC8vIGh0dHA6Ly93d3cudGhlc3Bhbm5lci5jby51ay8y
MDA3LzExLzI2L3VsdGltYXRlLXhzcy1jc3MtaW5qZWN0aW9uLwotICAvLyBUaGlzIGlzIG5vdCBh
biBYU1MgaG9sZSBidXQgaW5zdGVhZCBhIHBvdGVudGlhbCBDU1MgaW5qZWN0aW9uIGlzc3VlCi0g
IC8vIHdoaWNoIGhhcyBsZWFkIHRvIGEgZ3JlYXRlciBkaXNjdXNzaW9uIGFib3V0IGhvdyB3ZSdy
ZSBnb2luZyB0bwotICAvLyB0cnVzdCBVUkxzIG1vdmluZyBmb3J3YXJkLiBTZWUgIzIxMTU5MDEK
LQotICB2YXIgaXNFbXB0eSA9IHZhbHVlID09IG51bGwgfHwgdHlwZW9mIHZhbHVlID09PSAnYm9v
bGVhbicgfHwgdmFsdWUgPT09ICcnOwotICBpZiAoaXNFbXB0eSkgewotICAgIHJldHVybiAnJzsK
LSAgfQotCi0gIHZhciBpc05vbk51bWVyaWMgPSBpc05hTih2YWx1ZSk7Ci0gIGlmIChpc05vbk51
bWVyaWMgfHwgdmFsdWUgPT09IDAgfHwgQ1NTUHJvcGVydHkuaXNVbml0bGVzc051bWJlcltzdHls
ZU5hbWVdKSB7Ci0gICAgcmV0dXJuICcnICsgdmFsdWU7IC8vIGNhc3QgdG8gc3RyaW5nCi0gIH0K
LQotICByZXR1cm4gdmFsdWUgKyAncHgnOwotfQotCi1tb2R1bGUuZXhwb3J0cyA9IGRhbmdlcm91
c1N0eWxlVmFsdWU7Ci0KLX0seyIuL0NTU1Byb3BlcnR5IjoyfV0sNjQ6W2Z1bmN0aW9uKHJlcXVp
cmUsbW9kdWxlLGV4cG9ydHMpewotLyoqCi0gKiBDb3B5cmlnaHQgMjAxMyBGYWNlYm9vaywgSW5j
LgotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAg
KHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4g
Y29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9m
IHRoZSBMaWNlbnNlIGF0Ci0gKgotICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFn
cmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExp
Y2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FS
UkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBs
aWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJu
aW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0g
KgotICogQHByb3ZpZGVzTW9kdWxlIGVtcHR5RnVuY3Rpb24KLSAqLwotCi12YXIgY29weVByb3Bl
cnRpZXMgPSByZXF1aXJlKCIuL2NvcHlQcm9wZXJ0aWVzIik7Ci0KLWZ1bmN0aW9uIG1ha2VFbXB0
eUZ1bmN0aW9uKGFyZykgewotICByZXR1cm4gZnVuY3Rpb24oKSB7Ci0gICAgcmV0dXJuIGFyZzsK
LSAgfTsKLX0KLQotLyoqCi0gKiBUaGlzIGZ1bmN0aW9uIGFjY2VwdHMgYW5kIGRpc2NhcmRzIGlu
cHV0czsgaXQgaGFzIG5vIHNpZGUgZWZmZWN0cy4gVGhpcyBpcwotICogcHJpbWFyaWx5IHVzZWZ1
bCBpZGlvbWF0aWNhbGx5IGZvciBvdmVycmlkYWJsZSBmdW5jdGlvbiBlbmRwb2ludHMgd2hpY2gK
LSAqIGFsd2F5cyBuZWVkIHRvIGJlIGNhbGxhYmxlLCBzaW5jZSBKUyBsYWNrcyBhIG51bGwtY2Fs
bCBpZGlvbSBhbGEgQ29jb2EuCi0gKi8KLWZ1bmN0aW9uIGVtcHR5RnVuY3Rpb24oKSB7fQotCi1j
b3B5UHJvcGVydGllcyhlbXB0eUZ1bmN0aW9uLCB7Ci0gIHRoYXRSZXR1cm5zOiBtYWtlRW1wdHlG
dW5jdGlvbiwKLSAgdGhhdFJldHVybnNGYWxzZTogbWFrZUVtcHR5RnVuY3Rpb24oZmFsc2UpLAot
ICB0aGF0UmV0dXJuc1RydWU6IG1ha2VFbXB0eUZ1bmN0aW9uKHRydWUpLAotICB0aGF0UmV0dXJu
c051bGw6IG1ha2VFbXB0eUZ1bmN0aW9uKG51bGwpLAotICB0aGF0UmV0dXJuc1RoaXM6IGZ1bmN0
aW9uKCkgeyByZXR1cm4gdGhpczsgfSwKLSAgdGhhdFJldHVybnNBcmd1bWVudDogZnVuY3Rpb24o
YXJnKSB7IHJldHVybiBhcmc7IH0KLX0pOwotCi1tb2R1bGUuZXhwb3J0cyA9IGVtcHR5RnVuY3Rp
b247Ci0KLX0seyIuL2NvcHlQcm9wZXJ0aWVzIjo2MX1dLDY1OltmdW5jdGlvbihyZXF1aXJlLG1v
ZHVsZSxleHBvcnRzKXsKLS8qKgotICogQ29weXJpZ2h0IDIwMTMgRmFjZWJvb2ssIEluYy4KLSAq
Ci0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUg
IkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs
aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUg
TGljZW5zZSBhdAotICoKLSAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQg
dG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl
IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJ
RVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4K
LSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBw
ZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICoKLSAq
IEBwcm92aWRlc01vZHVsZSBlc2NhcGVUZXh0Rm9yQnJvd3NlcgotICovCi0KLSJ1c2Ugc3RyaWN0
IjsKLQotdmFyIHRocm93SWYgPSByZXF1aXJlKCIuL3Rocm93SWYiKTsKLQotdmFyIEVTQ0FQRV9U
WVBFX0VSUjsKLQotaWYgKHRydWUpIHsKLSAgRVNDQVBFX1RZUEVfRVJSID0KLSAgICAnVGhlIFJl
YWN0IGNvcmUgaGFzIGF0dGVtcHRlZCB0byBlc2NhcGUgY29udGVudCB0aGF0IGlzIG9mIGEgJyAr
Ci0gICAgJ215c3RlcmlvdXMgdHlwZSAob2JqZWN0IGV0YykgRXNjYXBpbmcgb25seSB3b3JrcyBv
biBudW1iZXJzIGFuZCBzdHJpbmdzJzsKLX0KLQotdmFyIEVTQ0FQRV9MT09LVVAgPSB7Ci0gICIm
IjogIiZhbXA7IiwKLSAgIj4iOiAiJmd0OyIsCi0gICI8IjogIiZsdDsiLAotICAiXCIiOiAiJnF1
b3Q7IiwKLSAgIiciOiAiJiN4Mjc7IiwKLSAgIi8iOiAiJiN4MmY7IgotfTsKLQotZnVuY3Rpb24g
ZXNjYXBlcihtYXRjaCkgewotICByZXR1cm4gRVNDQVBFX0xPT0tVUFttYXRjaF07Ci19Ci0KLXZh
ciBlc2NhcGVUZXh0Rm9yQnJvd3NlciA9IGZ1bmN0aW9uICh0ZXh0KSB7Ci0gIHZhciB0eXBlID0g
dHlwZW9mIHRleHQ7Ci0gIHZhciBpbnZhbGlkID0gdHlwZSA9PT0gJ29iamVjdCc7Ci0gIGlmICh0
cnVlKSB7Ci0gICAgdGhyb3dJZihpbnZhbGlkLCBFU0NBUEVfVFlQRV9FUlIpOwotICB9Ci0gIGlm
ICh0ZXh0ID09PSAnJyB8fCBpbnZhbGlkKSB7Ci0gICAgcmV0dXJuICcnOwotICB9IGVsc2Ugewot
ICAgIGlmICh0eXBlID09PSAnc3RyaW5nJykgewotICAgICAgcmV0dXJuIHRleHQucmVwbGFjZSgv
WyY+PCInXC9dL2csIGVzY2FwZXIpOwotICAgIH0gZWxzZSB7Ci0gICAgICByZXR1cm4gKCcnK3Rl
eHQpLnJlcGxhY2UoL1smPjwiJ1wvXS9nLCBlc2NhcGVyKTsKLSAgICB9Ci0gIH0KLX07Ci0KLW1v
ZHVsZS5leHBvcnRzID0gZXNjYXBlVGV4dEZvckJyb3dzZXI7Ci0KLX0seyIuL3Rocm93SWYiOjg2
fV0sNjY6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewotLyoqCi0gKiBDb3B5cmln
aHQgMjAxMyBGYWNlYm9vaywgSW5jLgotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUg
TGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNl
IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91
IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogaHR0cDovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5
IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlz
dHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBC
QVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBl
aXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3Bl
Y2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMg
dW5kZXIgdGhlIExpY2Vuc2UuCi0gKgotICogQHByb3ZpZGVzTW9kdWxlIGV4Ci0gKiBAdHlwZWNo
ZWNrcwotICogQG5vc3RhY2t0cmFjZQotICovCi0KLS8qKgotICogVGhpcyBmdW5jdGlvbiB0cmFu
c2Zvcm1zIGVycm9yIG1lc3NhZ2Ugd2l0aCBhcmd1bWVudHMgaW50byBwbGFpbiB0ZXh0IGVycm9y
Ci0gKiBtZXNzYWdlLCBzbyB0aGF0IGl0IGNhbiBiZSBwYXNzZWQgdG8gd2luZG93Lm9uZXJyb3Ig
d2l0aG91dCBsb3NpbmcgYW55dGhpbmcuCi0gKiBJdCBjYW4gdGhlbiBiZSB0cmFuc2Zvcm1lZCBi
YWNrIGJ5IGBlcngoKWAgZnVuY3Rpb24uCi0gKgotICogVXNhZ2U6Ci0gKiAgIHRocm93IG5ldyBF
cnJvcihleCgnRXJyb3IgJXMgZnJvbSAlcycsIGVycm9yQ29kZSwgdXNlcklEKSk7Ci0gKgotICog
QHBhcmFtIHtzdHJpbmd9IGVycm9yTWVzc2FnZQotICovCi0KLXZhciBleCA9IGZ1bmN0aW9uKGVy
cm9yTWVzc2FnZS8qLCBhcmcxLCBhcmcyLCAuLi4qLykgewotICB2YXIgYXJncyA9IEFycmF5LnBy
b3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cykubWFwKGZ1bmN0aW9uKGFyZykgewotICAgIHJl
dHVybiBTdHJpbmcoYXJnKTsKLSAgfSk7Ci0gIHZhciBleHBlY3RlZExlbmd0aCA9IGVycm9yTWVz
c2FnZS5zcGxpdCgnJXMnKS5sZW5ndGggLSAxOwotCi0gIGlmIChleHBlY3RlZExlbmd0aCAhPT0g
YXJncy5sZW5ndGggLSAxKSB7Ci0gICAgLy8gc29tZXRoaW5nIHdyb25nIHdpdGggdGhlIGZvcm1h
dHRpbmcgc3RyaW5nCi0gICAgcmV0dXJuIGV4KCdleCBhcmdzIG51bWJlciBtaXNtYXRjaDogJXMn
LCBKU09OLnN0cmluZ2lmeShhcmdzKSk7Ci0gIH0KLQotICByZXR1cm4gZXguX3ByZWZpeCArIEpT
T04uc3RyaW5naWZ5KGFyZ3MpICsgZXguX3N1ZmZpeDsKLX07Ci0KLWV4Ll9wcmVmaXggPSAnPCFb
RVhbJzsKLWV4Ll9zdWZmaXggPSAnXV0+JzsKLQotbW9kdWxlLmV4cG9ydHMgPSBleDsKLQotfSx7
fV0sNjc6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewotLyoqCi0gKiBDb3B5cmln
aHQgMjAxMyBGYWNlYm9vaywgSW5jLgotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUg
TGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNl
IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91
IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogaHR0cDovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5
IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlz
dHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBC
QVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBl
aXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3Bl
Y2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMg
dW5kZXIgdGhlIExpY2Vuc2UuCi0gKgotICogQHByb3ZpZGVzTW9kdWxlIGZsYXR0ZW5DaGlsZHJl
bgotICovCi0KLSJ1c2Ugc3RyaWN0IjsKLQotdmFyIHRocm93SWYgPSByZXF1aXJlKCIuL3Rocm93
SWYiKTsKLXZhciB0cmF2ZXJzZUFsbENoaWxkcmVuID0gcmVxdWlyZSgiLi90cmF2ZXJzZUFsbENo
aWxkcmVuIik7Ci0KLS8qKgotICogQHBhcmFtIHtmdW5jdGlvbn0gdHJhdmVyc2VDb250ZXh0IENv
bnRleHQgcGFzc2VkIHRocm91Z2ggdHJhdmVyc2FsLgotICogQHBhcmFtIHs/UmVhY3RDb21wb25l
bnR9IGNoaWxkIFJlYWN0IGNoaWxkIGNvbXBvbmVudC4KLSAqIEBwYXJhbSB7IXN0cmluZ30gbmFt
ZSBTdHJpbmcgbmFtZSBvZiBrZXkgcGF0aCB0byBjaGlsZC4KLSAqLwotZnVuY3Rpb24gZmxhdHRl
blNpbmdsZUNoaWxkSW50b0NvbnRleHQodHJhdmVyc2VDb250ZXh0LCBjaGlsZCwgbmFtZSkgewot
ICAvLyBXZSBmb3VuZCBhIGNvbXBvbmVudCBpbnN0YW5jZQotICB2YXIgcmVzdWx0ID0gdHJhdmVy
c2VDb250ZXh0OwotICBpZiAodHJ1ZSkgewotICAgIHRocm93SWYoCi0gICAgICByZXN1bHQuaGFz
T3duUHJvcGVydHkobmFtZSksCi0gICAgICB0cmF2ZXJzZUFsbENoaWxkcmVuLkRVUExJQ0FURV9L
RVlfRVJST1IKLSAgICApOwotICB9Ci0gIHJlc3VsdFtuYW1lXSA9IGNoaWxkOwotfQotCi0vKioK
LSAqIEZsYXR0ZW5zIGNoaWxkcmVuIHRoYXQgYXJlIHR5cGljYWxseSBzcGVjaWZpZWQgYXMgYHBy
b3BzLmNoaWxkcmVuYC4KLSAqIEByZXR1cm4geyFvYmplY3R9IGZsYXR0ZW5lZCBjaGlsZHJlbiBr
ZXllZCBieSBuYW1lLgotICovCi1mdW5jdGlvbiBmbGF0dGVuQ2hpbGRyZW4oY2hpbGRyZW4pIHsK
LSAgaWYgKGNoaWxkcmVuID09PSBudWxsIHx8IGNoaWxkcmVuID09PSB1bmRlZmluZWQpIHsKLSAg
ICByZXR1cm4gY2hpbGRyZW47Ci0gIH0KLSAgdmFyIHJlc3VsdCA9IHt9OwotICB0cmF2ZXJzZUFs
bENoaWxkcmVuKGNoaWxkcmVuLCBmbGF0dGVuU2luZ2xlQ2hpbGRJbnRvQ29udGV4dCwgcmVzdWx0
KTsKLSAgcmV0dXJuIHJlc3VsdDsKLX0KLQotbW9kdWxlLmV4cG9ydHMgPSBmbGF0dGVuQ2hpbGRy
ZW47Ci0KLX0seyIuL3Rocm93SWYiOjg2LCIuL3RyYXZlcnNlQWxsQ2hpbGRyZW4iOjg3fV0sNjg6
W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewotLyoqCi0gKiBDb3B5cmlnaHQgMjAx
MyBGYWNlYm9vaywgSW5jLgotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5z
ZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMg
ZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBv
YnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogaHR0cDovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxp
Y2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0
ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywK
LSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIg
ZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMg
bGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIg
dGhlIExpY2Vuc2UuCi0gKgotICogQHByb3ZpZGVzTW9kdWxlIGZvckVhY2hBY2N1bXVsYXRlZAot
ICovCi0KLSJ1c2Ugc3RyaWN0IjsKLQotLyoqCi0gKiBAcGFyYW0ge2FycmF5fSBhbiAiYWNjdW11
bGF0aW9uIiBvZiBpdGVtcyB3aGljaCBpcyBlaXRoZXIgYW4gQXJyYXkgb3IKLSAqIGEgc2luZ2xl
IGl0ZW0uIFVzZWZ1bCB3aGVuIHBhaXJlZCB3aXRoIHRoZSBgYWNjdW11bGF0ZWAgbW9kdWxlLiBU
aGlzIGlzIGEKLSAqIHNpbXBsZSB1dGlsaXR5IHRoYXQgYWxsb3dzIHVzIHRvIHJlYXNvbiBhYm91
dCBhIGNvbGxlY3Rpb24gb2YgaXRlbXMsIGJ1dAotICogaGFuZGxpbmcgdGhlIGNhc2Ugd2hlbiB0
aGVyZSBpcyBleGFjdGx5IG9uZSBpdGVtIChhbmQgd2UgZG8gbm90IG5lZWQgdG8KLSAqIGFsbG9j
YXRlIGFuIGFycmF5KS4KLSAqLwotdmFyIGZvckVhY2hBY2N1bXVsYXRlZCA9IGZ1bmN0aW9uKGFy
ciwgY2IsIHNjb3BlKSB7Ci0gIGlmIChBcnJheS5pc0FycmF5KGFycikpIHsKLSAgICBhcnIuZm9y
RWFjaChjYiwgc2NvcGUpOwotICB9IGVsc2UgaWYgKGFycikgewotICAgIGNiLmNhbGwoc2NvcGUs
IGFycik7Ci0gIH0KLX07Ci0KLW1vZHVsZS5leHBvcnRzID0gZm9yRWFjaEFjY3VtdWxhdGVkOwot
Ci19LHt9XSw2OTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7Ci0vKioKLSAqIENv
cHlyaWdodCAyMDEzIEZhY2Vib29rLCBJbmMuCi0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFw
YWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5v
dCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0g
KiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiBodHRwOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWly
ZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0g
KiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMg
SVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJ
TkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRo
ZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0
aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqCi0gKiBAcHJvdmlkZXNNb2R1bGUgZ2UKLSAqLwot
Ci0vKioKLSAqIEZpbmQgYSBub2RlIGJ5IElELiAgT3B0aW9uYWxseSBzZWFyY2ggYSBzdWItdHJl
ZSBvdXRzaWRlIG9mIHRoZSBkb2N1bWVudAotICoKLSAqIFVzZSBnZSBpZiB5b3UncmUgbm90IHN1
cmUgd2hldGhlciBvciBub3QgdGhlIGVsZW1lbnQgZXhpc3RzLiBZb3UgY2FuIHRlc3QKLSAqIGZv
ciBleGlzdGVuY2UgeW91cnNlbGYgaW4geW91ciBhcHBsaWNhdGlvbiBjb2RlLgotICoKLSAqIElm
IHlvdXIgYXBwbGljYXRpb24gY29kZSBkZXBlbmRzIG9uIHRoZSBleGlzdGVuY2Ugb2YgdGhlIGVs
ZW1lbnQsIHVzZSAkCi0gKiBpbnN0ZWFkLCB3aGljaCB3aWxsIHRocm93IGluIERFViBpZiB0aGUg
ZWxlbWVudCBkb2Vzbid0IGV4aXN0LgotICovCi1mdW5jdGlvbiBnZShhcmcsIHJvb3QsIHRhZykg
ewotICByZXR1cm4gdHlwZW9mIGFyZyAhPSAnc3RyaW5nJyA/IGFyZyA6Ci0gICAgIXJvb3QgPyBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZChhcmcpIDoKLSAgICBfZ2VGcm9tU3VidHJlZShhcmcsIHJv
b3QsIHRhZyk7Ci19Ci0KLWZ1bmN0aW9uIF9nZUZyb21TdWJ0cmVlKGlkLCByb290LCB0YWcpIHsK
LSAgdmFyIGVsZW0sIGNoaWxkcmVuLCBpaTsKLQotICBpZiAoX2dldE5vZGVJRChyb290KSA9PSBp
ZCkgewotICAgIHJldHVybiByb290OwotICB9IGVsc2UgaWYgKHJvb3QuZ2V0RWxlbWVudHNCeVRh
Z05hbWUpIHsKLSAgICAvLyBBbGwgRWxlbWVudHMgaW1wbGVtZW50IHRoaXMsIHdoaWNoIGRvZXMg
YW4gaXRlcmF0aXZlIERGUywgd2hpY2ggaXMKLSAgICAvLyBmYXN0ZXIgdGhhbiByZWN1cnNpb24g
YW5kIGRvZXNuJ3QgcnVuIGludG8gc3RhY2sgZGVwdGggaXNzdWVzLgotICAgIGNoaWxkcmVuID0g
cm9vdC5nZXRFbGVtZW50c0J5VGFnTmFtZSh0YWcgfHwgJyonKTsKLSAgICBmb3IgKGlpID0gMDsg
aWkgPCBjaGlsZHJlbi5sZW5ndGg7IGlpKyspIHsKLSAgICAgIGlmIChfZ2V0Tm9kZUlEKGNoaWxk
cmVuW2lpXSkgPT0gaWQpIHsKLSAgICAgICAgcmV0dXJuIGNoaWxkcmVuW2lpXTsKLSAgICAgIH0K
LSAgICB9Ci0gIH0gZWxzZSB7Ci0gICAgLy8gRG9jdW1lbnRGcmFnbWVudCBkb2VzIG5vdCBpbXBs
ZW1lbnQgZ2V0RWxlbWVudHNCeVRhZ05hbWUsIHNvCi0gICAgLy8gcmVjdXJzZSBvdmVyIGl0cyBj
aGlsZHJlbi4gSXRzIGNoaWxkcmVuIG11c3QgYmUgRWxlbWVudHMsIHNvCi0gICAgLy8gZWFjaCBj
aGlsZCB3aWxsIHVzZSB0aGUgZ2V0RWxlbWVudHNCeVRhZ05hbWUgY2FzZSBpbnN0ZWFkLgotICAg
IGNoaWxkcmVuID0gcm9vdC5jaGlsZE5vZGVzOwotICAgIGZvciAoaWkgPSAwOyBpaSA8IGNoaWxk
cmVuLmxlbmd0aDsgaWkrKykgewotICAgICAgZWxlbSA9IF9nZUZyb21TdWJ0cmVlKGlkLCBjaGls
ZHJlbltpaV0pOwotICAgICAgaWYgKGVsZW0pIHsKLSAgICAgICAgcmV0dXJuIGVsZW07Ci0gICAg
ICB9Ci0gICAgfQotICB9Ci0KLSAgcmV0dXJuIG51bGw7Ci19Ci0KLS8qKgotICogUmV0dXJuIHRo
ZSBJRCB2YWx1ZSBmb3IgYSBnaXZlbiBub2RlLiBUaGlzIGFsbG93cyB1cyB0byBhdm9pZCBpc3N1
ZXMKLSAqIHdpdGggZm9ybXMgdGhhdCBjb250YWluIGlucHV0cyB3aXRoIG5hbWU9ImlkIi4KLSAq
Ci0gKiBAcmV0dXJuIHN0cmluZyAobnVsbCBpZiBhdHRyaWJ1dGUgbm90IHNldCkKLSAqLwotZnVu
Y3Rpb24gX2dldE5vZGVJRChub2RlKSB7Ci0gIC8vICNkb2N1bWVudCBhbmQgI2RvY3VtZW50LWZy
YWdtZW50IGRvIG5vdCBoYXZlIGdldEF0dHJpYnV0ZU5vZGUuCi0gIHZhciBpZCA9IG5vZGUuZ2V0
QXR0cmlidXRlTm9kZSAmJiBub2RlLmdldEF0dHJpYnV0ZU5vZGUoJ2lkJyk7Ci0gIHJldHVybiBp
ZCA/IGlkLnZhbHVlIDogbnVsbDsKLX0KLQotbW9kdWxlLmV4cG9ydHMgPSBnZTsKLQotfSx7fV0s
NzA6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewotKGZ1bmN0aW9uKCl7LyoqCi0g
KiBDb3B5cmlnaHQgMjAxMyBGYWNlYm9vaywgSW5jLgotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRo
ZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1h
eSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNl
LgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogaHR0
cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJl
cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2Fy
ZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFO
WSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZv
ciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGlt
aXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKgotICogQHByb3ZpZGVzTW9kdWxlIGdldEV2
ZW50VGFyZ2V0Ci0gKiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seQotICovCi0KLSJ1c2Ugc3RyaWN0
IjsKLQotdmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gcmVxdWlyZSgiLi9FeGVjdXRpb25FbnZp
cm9ubWVudCIpOwotCi0vKioKLSAqIEdldHMgdGhlIHRhcmdldCBub2RlIGZyb20gYSBuYXRpdmUg
YnJvd3NlciBldmVudCBieSBhY2NvdW50aW5nIGZvcgotICogaW5jb25zaXN0ZW5jaWVzIGluIGJy
b3dzZXIgRE9NIEFQSXMuCi0gKgotICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2
ZSBicm93c2VyIGV2ZW50LgotICogQHJldHVybiB7RE9NRXZlbnRUYXJnZXR9IFRhcmdldCBub2Rl
LgotICovCi1mdW5jdGlvbiBnZXRFdmVudFRhcmdldChuYXRpdmVFdmVudCkgewotICB2YXIgdGFy
Z2V0ID0KLSAgICBuYXRpdmVFdmVudC50YXJnZXQgfHwKLSAgICBuYXRpdmVFdmVudC5zcmNFbGVt
ZW50IHx8Ci0gICAgRXhlY3V0aW9uRW52aXJvbm1lbnQuZ2xvYmFsOwotICAvLyBTYWZhcmkgbWF5
IGZpcmUgZXZlbnRzIG9uIHRleHQgbm9kZXMgKE5vZGUuVEVYVF9OT0RFIGlzIDMpLgotICAvLyBA
c2VlIGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvanMvZXZlbnRzX3Byb3BlcnRpZXMuaHRtbAot
ICByZXR1cm4gdGFyZ2V0Lm5vZGVUeXBlID09PSAzID8gdGFyZ2V0LnBhcmVudE5vZGUgOiB0YXJn
ZXQ7Ci19Ci0KLW1vZHVsZS5leHBvcnRzID0gZ2V0RXZlbnRUYXJnZXQ7Ci0KLX0pKCkKLX0seyIu
L0V4ZWN1dGlvbkVudmlyb25tZW50IjoxOX1dLDcxOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxl
eHBvcnRzKXsKLS8qKgotICogQ29weXJpZ2h0IDIwMTMgRmFjZWJvb2ssIEluYy4KLSAqCi0gKiBM
aWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vu
c2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ug
d2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5z
ZSBhdAotICoKLSAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAot
ICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1Ig
Q09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNl
ZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNz
aW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICoKLSAqIEBwcm92
aWRlc01vZHVsZSBnZXRUZXh0Q29udGVudEFjY2Vzc29yCi0gKi8KLQotInVzZSBzdHJpY3QiOwot
Ci12YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSByZXF1aXJlKCIuL0V4ZWN1dGlvbkVudmlyb25t
ZW50Iik7Ci0KLXZhciBjb250ZW50S2V5ID0gbnVsbDsKLQotLyoqCi0gKiBHZXRzIHRoZSBrZXkg
dXNlZCB0byBhY2Nlc3MgdGV4dCBjb250ZW50IG9uIGEgRE9NIG5vZGUuCi0gKgotICogQHJldHVy
biB7P3N0cmluZ30gS2V5IHVzZWQgdG8gYWNjZXNzIHRleHQgY29udGVudC4KLSAqIEBpbnRlcm5h
bAotICovCi1mdW5jdGlvbiBnZXRUZXh0Q29udGVudEFjY2Vzc29yKCkgewotICBpZiAoIWNvbnRl
bnRLZXkgJiYgRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NKSB7Ci0gICAgY29udGVudEtl
eSA9ICdpbm5lclRleHQnIGluIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpID8KLSAgICAg
ICdpbm5lclRleHQnIDoKLSAgICAgICd0ZXh0Q29udGVudCc7Ci0gIH0KLSAgcmV0dXJuIGNvbnRl
bnRLZXk7Ci19Ci0KLW1vZHVsZS5leHBvcnRzID0gZ2V0VGV4dENvbnRlbnRBY2Nlc3NvcjsKLQot
fSx7Ii4vRXhlY3V0aW9uRW52aXJvbm1lbnQiOjE5fV0sNzI6W2Z1bmN0aW9uKHJlcXVpcmUsbW9k
dWxlLGV4cG9ydHMpewotLyoqCi0gKiBDb3B5cmlnaHQgMjAxMyBGYWNlYm9vaywgSW5jLgotICoK
LSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAi
TGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxp
YW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBM
aWNlbnNlIGF0Ci0gKgotICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug
aXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElF
UyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgot
ICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBl
cm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKgotICog
QHByb3ZpZGVzTW9kdWxlIGhhc0FycmF5TmF0dXJlCi0gKi8KLQotLyoqCi0gKiAgUGVyZm9ybSBh
IGhldXJpc3RpYyB0ZXN0IHRvIGRldGVybWluZSBpZiBhbiBvYmplY3QgaXMgImFycmF5LWxpa2Ui
LgotICoKLSAqICAgIEEgbW9uayBhc2tlZCBKb3NodSwgYSBaZW4gbWFzdGVyLCAiSGFzIGEgZG9n
IEJ1ZGRoYSBuYXR1cmU/IgotICogICAgSm9zaHUgcmVwbGllZDogIk11LiIKLSAqCi0gKiAgVGhp
cyBmdW5jdGlvbiBkZXRlcm1pbmVzIGlmIGl0cyBhcmd1bWVudCBoYXMgImFycmF5IG5hdHVyZSI6
IGl0IHJldHVybnMKLSAqICB0cnVlIGlmIHRoZSBhcmd1bWVudCBpcyBhbiBhY3R1YWwgYXJyYXks
IGFuIGBhcmd1bWVudHMnIG9iamVjdCwgb3IgYW4KLSAqICBIVE1MQ29sbGVjdGlvbiAoZS5nLiBu
b2RlLmNoaWxkTm9kZXMgb3Igbm9kZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgpKS4KLSAqCi0gKiAg
QHBhcmFtICBvYmogICBBbiBvYmplY3QgdG8gdGVzdC4KLSAqICBAcmV0dXJuIGJvb2wgIFRydWUg
aWYgdGhlIG9iamVjdCBpcyBhcnJheS1saWtlLgotICovCi1mdW5jdGlvbiBoYXNBcnJheU5hdHVy
ZShvYmopIHsKLSAgcmV0dXJuICgKLSAgICAvLyBub3QgbnVsbC9mYWxzZQotICAgICEhb2JqICYm
Ci0gICAgLy8gYXJyYXlzIGFyZSBvYmplY3RzLCBOb2RlTGlzdHMgYXJlIGZ1bmN0aW9ucyBpbiBT
YWZhcmkKLSAgICAodHlwZW9mIG9iaiA9PSAnb2JqZWN0JyB8fCB0eXBlb2Ygb2JqID09ICdmdW5j
dGlvbicpICYmCi0gICAgLy8gcXVhY2tzIGxpa2UgYW4gYXJyYXkKLSAgICAoJ2xlbmd0aCcgaW4g
b2JqKSAmJgotICAgIC8vIG5vdCB3aW5kb3cKLSAgICAhKCdzZXRJbnRlcnZhbCcgaW4gb2JqKSAm
JgotICAgIC8vIG5vIERPTSBub2RlIHNob3VsZCBiZSBjb25zaWRlcmVkIGFuIGFycmF5LWxpa2UK
LSAgICAvLyBhICdzZWxlY3QnIGVsZW1lbnQgaGFzICdsZW5ndGgnIGFuZCAnaXRlbScgcHJvcGVy
dGllcwotICAgICh0eXBlb2Ygb2JqLm5vZGVUeXBlICE9ICdudW1iZXInKSAmJgotICAgICgKLSAg
ICAgIC8vIGEgcmVhbCBhcnJheQotICAgICAgKEFycmF5LmlzQXJyYXkob2JqKSB8fAotICAgICAg
Ly8gYXJndW1lbnRzCi0gICAgICAoJ2NhbGxlZScgaW4gb2JqKSB8fCAvLyBIVE1MQ29sbGVjdGlv
bi9Ob2RlTGlzdAotICAgICAgJ2l0ZW0nIGluIG9iaikKLSAgICApCi0gICk7Ci19Ci0KLW1vZHVs
ZS5leHBvcnRzID0gaGFzQXJyYXlOYXR1cmU7Ci0KLX0se31dLDczOltmdW5jdGlvbihyZXF1aXJl
LG1vZHVsZSxleHBvcnRzKXsKLS8qKgotICogQ29weXJpZ2h0IDIwMTMgRmFjZWJvb2ssIEluYy4K
LSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0
aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAotICoKLSAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3Jl
ZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNl
bnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJB
TlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGll
ZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmlu
ZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICoK
LSAqIEBwcm92aWRlc01vZHVsZSBoeXBoZW5hdGUKLSAqIEB0eXBlY2hlY2tzCi0gKi8KLQotdmFy
IF91cHBlcmNhc2VQYXR0ZXJuID0gLyhbQS1aXSkvZzsKLQotLyoqCi0gKiBIeXBoZW5hdGVzIGEg
Y2FtZWxjYXNlZCBzdHJpbmcsIGZvciBleGFtcGxlOgotICoKLSAqICAgPiBoeXBoZW5hdGUoJ2Jh
Y2tncm91bmRDb2xvcicpCi0gKiAgIDwgImJhY2tncm91bmQtY29sb3IiCi0gKgotICogQHBhcmFt
IHtzdHJpbmd9IHN0cmluZwotICogQHJldHVybiB7c3RyaW5nfQotICovCi1mdW5jdGlvbiBoeXBo
ZW5hdGUoc3RyaW5nKSB7Ci0gIHJldHVybiBzdHJpbmcucmVwbGFjZShfdXBwZXJjYXNlUGF0dGVy
biwgJy0kMScpLnRvTG93ZXJDYXNlKCk7Ci19Ci0KLW1vZHVsZS5leHBvcnRzID0gaHlwaGVuYXRl
OwotCi19LHt9XSw3NDpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7Ci0vKioKLSAq
IENvcHlyaWdodCAyMDEzIEZhY2Vib29rLCBJbmMuCi0gKgotICogTGljZW5zZWQgdW5kZXIgdGhl
IEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
Ci0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiBodHRw
Oi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVx
dWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJl
Ci0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAi
QVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5Z
IEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9y
IHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1p
dGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqCi0gKiBAcHJvdmlkZXNNb2R1bGUgaW5zZXJ0
Tm9kZUF0Ci0gKi8KLQotInVzZSBzdHJpY3QiOwotCi0vKioKLSAqIEluc2VydHMgYG5vZGVgIGF0
IGEgcGFydGljdWxhciBjaGlsZCBpbmRleC4gT3RoZXIgbm9kZXMgbW92ZSB0byBtYWtlIHJvb20u
Ci0gKiBAcGFyYW0geyFFbGVtZW50fSByb290IFRoZSBwYXJlbnQgcm9vdCBub2RlIHRvIGluc2Vy
dCBpbnRvLgotICogQHBhcmFtIHshbm9kZX0gbm9kZSBUaGUgbm9kZSB0byBpbnNlcnQuCi0gKiBA
cGFyYW0geyFudW1iZXJ9IGF0SW5kZXggVGhlIGluZGV4IGluIGByb290YCB0aGF0IGBub2RlYCBz
aG91bGQgZXhpc3QgYXQuCi0gKi8KLWZ1bmN0aW9uIGluc2VydE5vZGVBdChyb290LCBub2RlLCBh
dEluZGV4KSB7Ci0gIHZhciBjaGlsZE5vZGVzID0gcm9vdC5jaGlsZE5vZGVzOwotICAvLyBSZW1v
dmUgZnJvbSBwYXJlbnQgc28gdGhhdCBpZiBub2RlIGlzIGFscmVhZHkgY2hpbGQgb2Ygcm9vdCwK
LSAgLy8gYGNoaWxkTm9kZXNbYXRJbmRleF1gIGFscmVhZHkgdGFrZXMgaW50byBhY2NvdW50IHRo
ZSByZW1vdmFsLgotICB2YXIgY3VyQXRJbmRleCA9IHJvb3QuY2hpbGROb2Rlc1thdEluZGV4XTsK
LSAgaWYgKGN1ckF0SW5kZXggPT09IG5vZGUpIHsKLSAgICByZXR1cm4gbm9kZTsKLSAgfQotICBp
ZiAobm9kZS5wYXJlbnROb2RlKSB7Ci0gICAgbm9kZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG5v
ZGUpOwotICB9Ci0gIGlmIChhdEluZGV4ID49IGNoaWxkTm9kZXMubGVuZ3RoKSB7Ci0gICAgcm9v
dC5hcHBlbmRDaGlsZChub2RlKTsKLSAgfSBlbHNlIHsKLSAgICByb290Lmluc2VydEJlZm9yZShu
b2RlLCBjaGlsZE5vZGVzW2F0SW5kZXhdKTsKLSAgfQotICByZXR1cm4gbm9kZTsKLX0KLQotbW9k
dWxlLmV4cG9ydHMgPSBpbnNlcnROb2RlQXQ7Ci0KLX0se31dLDc1OltmdW5jdGlvbihyZXF1aXJl
LG1vZHVsZSxleHBvcnRzKXsKLS8qKgotICogQ29weXJpZ2h0IDIwMTMgRmFjZWJvb2ssIEluYy4K
LSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0
aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAotICoKLSAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3Jl
ZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNl
bnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJB
TlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGll
ZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmlu
ZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICoK
LSAqIEBwcm92aWRlc01vZHVsZSBpbnZhcmlhbnQKLSAqLwotCi0vKioKLSAqIFVzZSBpbnZhcmlh
bnQoKSB0byBhc3NlcnQgc3RhdGUgd2hpY2ggeW91ciBwcm9ncmFtIGFzc3VtZXMgdG8gYmUgdHJ1
ZS4KLSAqCi0gKiBQcm92aWRlIHNwcmludGYgc3R5bGUgZm9ybWF0IGFuZCBhcmd1bWVudHMgdG8g
cHJvdmlkZSBpbmZvcm1hdGlvbiBhYm91dAotICogd2hhdCBicm9rZSBhbmQgd2hhdCB5b3Ugd2Vy
ZSBleHBlY3RpbmcuCi0gKgotICogVGhlIGludmFyaWFudCBtZXNzYWdlIHdpbGwgYmUgc3RyaXBw
ZWQgaW4gcHJvZHVjdGlvbiwgYnV0IHRoZSBpbnZhcmlhbnQKLSAqIHdpbGwgcmVtYWluIHRvIGVu
c3VyZSBsb2dpYyBkb2VzIG5vdCBkaWZmZXIgaW4gcHJvZHVjdGlvbi4KLSAqLwotCi1mdW5jdGlv
biBpbnZhcmlhbnQoY29uZGl0aW9uKSB7Ci0gIGlmICghY29uZGl0aW9uKSB7Ci0gICAgdGhyb3cg
bmV3IEVycm9yKCdJbnZhcmlhbnQgVmlvbGF0aW9uJyk7Ci0gIH0KLX0KLQotbW9kdWxlLmV4cG9y
dHMgPSBpbnZhcmlhbnQ7Ci0KLWlmICh0cnVlKSB7Ci0gIHZhciBpbnZhcmlhbnREZXYgPSBmdW5j
dGlvbihjb25kaXRpb24sIGZvcm1hdCwgYSwgYiwgYywgZCwgZSwgZikgewotICAgIGlmIChmb3Jt
YXQgPT09IHVuZGVmaW5lZCkgewotICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhcmlhbnQgcmVx
dWlyZXMgYW4gZXJyb3IgbWVzc2FnZSBhcmd1bWVudCcpOwotICAgIH0KLQotICAgIGlmICghY29u
ZGl0aW9uKSB7Ci0gICAgICB2YXIgYXJncyA9IFthLCBiLCBjLCBkLCBlLCBmXTsKLSAgICAgIHZh
ciBhcmdJbmRleCA9IDA7Ci0gICAgICB0aHJvdyBuZXcgRXJyb3IoCi0gICAgICAgICdJbnZhcmlh
bnQgVmlvbGF0aW9uOiAnICsKLSAgICAgICAgZm9ybWF0LnJlcGxhY2UoLyVzL2csIGZ1bmN0aW9u
KCkgeyByZXR1cm4gYXJnc1thcmdJbmRleCsrXTsgfSkKLSAgICAgICk7Ci0gICAgfQotICB9Owot
Ci0gIG1vZHVsZS5leHBvcnRzID0gaW52YXJpYW50RGV2OwotfQotCi19LHt9XSw3NjpbZnVuY3Rp
b24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7Ci0vKioKLSAqIENvcHlyaWdodCAyMDEzIEZhY2Vi
b29rLCBJbmMuCi0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJz
aW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lU
SE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNz
IG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFn
ZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGlj
ZW5zZS4KLSAqCi0gKiBAcHJvdmlkZXNNb2R1bGUgaXNFdmVudFN1cHBvcnRlZAotICovCi0KLSJ1
c2Ugc3RyaWN0IjsKLQotdmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gcmVxdWlyZSgiLi9FeGVj
dXRpb25FbnZpcm9ubWVudCIpOwotCi12YXIgdGVzdE5vZGUsIHVzZUhhc0ZlYXR1cmU7Ci1pZiAo
RXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NKSB7Ci0gIHRlc3ROb2RlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnZGl2Jyk7Ci0gIHVzZUhhc0ZlYXR1cmUgPQotICAgIGRvY3VtZW50Lmlt
cGxlbWVudGF0aW9uICYmCi0gICAgZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uaGFzRmVhdHVyZSAm
JgotICAgIC8vIGBoYXNGZWF0dXJlYCBhbHdheXMgcmV0dXJucyB0cnVlIGluIEZpcmVmb3ggMTkr
LgotICAgIGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmhhc0ZlYXR1cmUoJycsICcnKSAhPT0gdHJ1
ZTsKLX0KLQotLyoqCi0gKiBDaGVja3MgaWYgYW4gZXZlbnQgaXMgc3VwcG9ydGVkIGluIHRoZSBj
dXJyZW50IGV4ZWN1dGlvbiBlbnZpcm9ubWVudC4KLSAqCi0gKiBOT1RFOiBUaGlzIHdpbGwgbm90
IHdvcmsgY29ycmVjdGx5IGZvciBub24tZ2VuZXJpYyBldmVudHMgc3VjaCBhcyBgY2hhbmdlYCwK
LSAqIGByZXNldGAsIGBsb2FkYCwgYGVycm9yYCwgYW5kIGBzZWxlY3RgLgotICoKLSAqIEJvcnJv
d3MgZnJvbSBNb2Rlcm5penIuCi0gKgotICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50TmFtZVN1ZmZp
eCBFdmVudCBuYW1lLCBlLmcuICJjbGljayIuCi0gKiBAcGFyYW0gez9ib29sZWFufSBjYXB0dXJl
IENoZWNrIGlmIHRoZSBjYXB0dXJlIHBoYXNlIGlzIHN1cHBvcnRlZC4KLSAqIEByZXR1cm4ge2Jv
b2xlYW59IFRydWUgaWYgdGhlIGV2ZW50IGlzIHN1cHBvcnRlZC4KLSAqIEBpbnRlcm5hbAotICog
QGxpY2Vuc2UgTW9kZXJuaXpyIDMuMC4wcHJlIChDdXN0b20gQnVpbGQpIHwgTUlUCi0gKi8KLWZ1
bmN0aW9uIGlzRXZlbnRTdXBwb3J0ZWQoZXZlbnROYW1lU3VmZml4LCBjYXB0dXJlKSB7Ci0gIGlm
ICghdGVzdE5vZGUgfHwgKGNhcHR1cmUgJiYgIXRlc3ROb2RlLmFkZEV2ZW50TGlzdGVuZXIpKSB7
Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0gIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnZGl2Jyk7Ci0KLSAgdmFyIGV2ZW50TmFtZSA9ICdvbicgKyBldmVudE5hbWVTdWZm
aXg7Ci0gIHZhciBpc1N1cHBvcnRlZCA9IGV2ZW50TmFtZSBpbiBlbGVtZW50OwotCi0gIGlmICgh
aXNTdXBwb3J0ZWQpIHsKLSAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShldmVudE5hbWUsICcnKTsK
LSAgICBpc1N1cHBvcnRlZCA9IHR5cGVvZiBlbGVtZW50W2V2ZW50TmFtZV0gPT09ICdmdW5jdGlv
bic7Ci0gICAgaWYgKHR5cGVvZiBlbGVtZW50W2V2ZW50TmFtZV0gIT09ICd1bmRlZmluZWQnKSB7
Ci0gICAgICBlbGVtZW50W2V2ZW50TmFtZV0gPSB1bmRlZmluZWQ7Ci0gICAgfQotICAgIGVsZW1l
bnQucmVtb3ZlQXR0cmlidXRlKGV2ZW50TmFtZSk7Ci0gIH0KLQotICBpZiAoIWlzU3VwcG9ydGVk
ICYmIHVzZUhhc0ZlYXR1cmUgJiYgZXZlbnROYW1lU3VmZml4ID09PSAnd2hlZWwnKSB7Ci0gICAg
Ly8gVGhpcyBpcyB0aGUgb25seSB3YXkgdG8gdGVzdCBzdXBwb3J0IGZvciB0aGUgYHdoZWVsYCBl
dmVudCBpbiBJRTkrLgotICAgIGlzU3VwcG9ydGVkID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24u
aGFzRmVhdHVyZSgnRXZlbnRzLndoZWVsJywgJzMuMCcpOwotICB9Ci0KLSAgZWxlbWVudCA9IG51
bGw7Ci0gIHJldHVybiBpc1N1cHBvcnRlZDsKLX0KLQotbW9kdWxlLmV4cG9ydHMgPSBpc0V2ZW50
U3VwcG9ydGVkOwotCi19LHsiLi9FeGVjdXRpb25FbnZpcm9ubWVudCI6MTl9XSw3NzpbZnVuY3Rp
b24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7Ci0vKioKLSAqIENvcHlyaWdodCAyMDEzIEZhY2Vi
b29rLCBJbmMuCi0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJz
aW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lU
SE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNz
IG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFn
ZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGlj
ZW5zZS4KLSAqCi0gKiBAcHJvdmlkZXNNb2R1bGUgam9pbkNsYXNzZXMKLSAqIEB0eXBlY2hlY2tz
IHN0YXRpYy1vbmx5Ci0gKi8KLQotInVzZSBzdHJpY3QiOwotCi0vKioKLSAqIENvbWJpbmVzIG11
bHRpcGxlIGNsYXNzTmFtZSBzdHJpbmdzIGludG8gb25lLgotICogaHR0cDovL2pzcGVyZi5jb20v
am9pbmNsYXNzZXMtYXJncy12cy1hcnJheQotICoKLSAqIEBwYXJhbSB7Li4uP3N0cmluZ30gY2xh
c3NlcwotICogQHJldHVybiB7c3RyaW5nfQotICovCi1mdW5jdGlvbiBqb2luQ2xhc3NlcyhjbGFz
c05hbWUvKiwgLi4uICovKSB7Ci0gIGlmICghY2xhc3NOYW1lKSB7Ci0gICAgY2xhc3NOYW1lID0g
Jyc7Ci0gIH0KLSAgdmFyIG5leHRDbGFzczsKLSAgdmFyIGFyZ0xlbmd0aCA9IGFyZ3VtZW50cy5s
ZW5ndGg7Ci0gIGlmIChhcmdMZW5ndGggPiAxKSB7Ci0gICAgZm9yICh2YXIgaWkgPSAxOyBpaSA8
IGFyZ0xlbmd0aDsgaWkrKykgewotICAgICAgbmV4dENsYXNzID0gYXJndW1lbnRzW2lpXTsKLSAg
ICAgIG5leHRDbGFzcyAmJiAoY2xhc3NOYW1lICs9ICcgJyArIG5leHRDbGFzcyk7Ci0gICAgfQot
ICB9Ci0gIHJldHVybiBjbGFzc05hbWU7Ci19Ci0KLW1vZHVsZS5leHBvcnRzID0gam9pbkNsYXNz
ZXM7Ci0KLX0se31dLDc4OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKLS8qKgot
ICogQ29weXJpZ2h0IDIwMTMgRmFjZWJvb2ssIEluYy4KLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0
aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBt
YXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z
ZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqIGh0
dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu
ICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBB
TlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBm
b3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxp
bWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICoKLSAqIEBwcm92aWRlc01vZHVsZSBrZXlN
aXJyb3IKLSAqLwotCi0idXNlIHN0cmljdCI7Ci0KLXZhciB0aHJvd0lmID0gcmVxdWlyZSgiLi90
aHJvd0lmIik7Ci0KLXZhciBOT1RfT0JKRUNUX0VSUk9SID0gJ05PVF9PQkpFQ1RfRVJST1InOwot
aWYgKHRydWUpIHsKLSAgTk9UX09CSkVDVF9FUlJPUiA9ICdrZXlNaXJyb3Igb25seSB3b3JrcyBv
biBvYmplY3RzJzsKLX0KLQotLyoqCi0gKiBVdGlsaXR5IGZvciBjb25zdHJ1Y3RpbmcgZW51bXMg
d2l0aCBrZXlzIGJlaW5nIGVxdWFsIHRvIHRoZSBhc3NvY2lhdGVkCi0gKiB2YWx1ZXMsIGV2ZW4g
d2hlbiB1c2luZyBhZHZhbmNlZCBrZXkgY3J1c2hpbmcuIFRoaXMgaXMgdXNlZnVsIGZvciBkZWJ1
Z2dpbmcsCi0gKiBidXQgYWxzbyBmb3IgdXNpbmcgdGhlIHZhbHVlcyB0aGVtc2VsdmVzIGFzIGxv
b2t1cHMgaW50byB0aGUgZW51bS4KLSAqIEV4YW1wbGU6Ci0gKiB2YXIgQ09MT1JTID0ga2V5TWly
cm9yKHtibHVlOiBudWxsLCByZWQ6IG51bGx9KTsKLSAqIHZhciBteUNvbG9yID0gQ09MT1JTLmJs
dWU7Ci0gKiB2YXIgaXNDb2xvclZhbGlkID0gISFDT0xPUlNbbXlDb2xvcl0KLSAqIFRoZSBsYXN0
IGxpbmUgY291bGQgbm90IGJlIHBlcmZvcm1lZCBpZiB0aGUgdmFsdWVzIG9mIHRoZSBnZW5lcmF0
ZWQgZW51bSB3ZXJlCi0gKiBub3QgZXF1YWwgdG8gdGhlaXIga2V5cy4KLSAqIElucHV0OiAge2tl
eTE6IHZhbDEsIGtleTI6IHZhbDJ9Ci0gKiBPdXRwdXQ6IHtrZXkxOiBrZXkxLCBrZXkyOiBrZXky
fQotICovCi12YXIga2V5TWlycm9yID0gZnVuY3Rpb24ob2JqKSB7Ci0gIHZhciByZXQgPSB7fTsK
LSAgdmFyIGtleTsKLQotICB0aHJvd0lmKCEob2JqIGluc3RhbmNlb2YgT2JqZWN0KSB8fCBBcnJh
eS5pc0FycmF5KG9iaiksIE5PVF9PQkpFQ1RfRVJST1IpOwotCi0gIGZvciAoa2V5IGluIG9iaikg
ewotICAgIGlmICghb2JqLmhhc093blByb3BlcnR5KGtleSkpIHsKLSAgICAgIGNvbnRpbnVlOwot
ICAgIH0KLSAgICByZXRba2V5XSA9IGtleTsKLSAgfQotICByZXR1cm4gcmV0OwotfTsKLQotbW9k
dWxlLmV4cG9ydHMgPSBrZXlNaXJyb3I7Ci0KLX0seyIuL3Rocm93SWYiOjg2fV0sNzk6W2Z1bmN0
aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewotLyoqCi0gKiBDb3B5cmlnaHQgMjAxMyBGYWNl
Ym9vaywgSW5jLgotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVy
c2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJ
VEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVz
cyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3Vh
Z2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExp
Y2Vuc2UuCi0gKgotICogQHByb3ZpZGVzTW9kdWxlIGtleU9mCi0gKi8KLQotLyoqCi0gKiBBbGxv
d3MgZXh0cmFjdGlvbiBvZiBhIG1pbmlmaWVkIGtleS4gTGV0J3MgdGhlIGJ1aWxkIHN5c3RlbSBt
aW5pZnkga2V5cwotICogd2l0aG91dCBsb29zaW5nIHRoZSBhYmlsaXR5IHRvIGR5bmFtaWNhbGx5
IHVzZSBrZXkgc3RyaW5ncyBhcyB2YWx1ZXMKLSAqIHRoZW1zZWx2ZXMuIFBhc3MgaW4gYW4gb2Jq
ZWN0IHdpdGggYSBzaW5nbGUga2V5L3ZhbCBwYWlyIGFuZCBpdCB3aWxsIHJldHVybgotICogeW91
IHRoZSBzdHJpbmcga2V5IG9mIHRoYXQgc2luZ2xlIHJlY29yZC4gU3VwcG9zZSB5b3Ugd2FudCB0
byBncmFiIHRoZQotICogdmFsdWUgZm9yIGEga2V5ICdjbGFzc05hbWUnIGluc2lkZSBvZiBhbiBv
YmplY3QuIEtleS92YWwgbWluaWZpY2F0aW9uIG1heQotICogaGF2ZSBhbGlhc2VkIHRoYXQga2V5
IHRvIGJlICd4YTEyJy4ga2V5T2Yoe2NsYXNzTmFtZTogbnVsbH0pIHdpbGwgcmV0dXJuCi0gKiAn
eGExMicgaW4gdGhhdCBjYXNlLiBSZXNvbHZlIGtleXMgeW91IHdhbnQgdG8gdXNlIG9uY2UgYXQg
c3RhcnR1cCB0aW1lLCB0aGVuCi0gKiByZXVzZSB0aG9zZSByZXNvbHV0aW9ucy4KLSAqLwotdmFy
IGtleU9mID0gZnVuY3Rpb24ob25lS2V5T2JqKSB7Ci0gIHZhciBrZXk7Ci0gIGZvciAoa2V5IGlu
IG9uZUtleU9iaikgewotICAgIGlmICghb25lS2V5T2JqLmhhc093blByb3BlcnR5KGtleSkpIHsK
LSAgICAgIGNvbnRpbnVlOwotICAgIH0KLSAgICByZXR1cm4ga2V5OwotICB9Ci0gIHJldHVybiBu
dWxsOwotfTsKLQotCi1tb2R1bGUuZXhwb3J0cyA9IGtleU9mOwotCi19LHt9XSw4MDpbZnVuY3Rp
b24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7Ci0vKioKLSAqIENvcHlyaWdodCAyMDEzIEZhY2Vi
b29rLCBJbmMuCi0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJz
aW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lU
SE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNz
IG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFn
ZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGlj
ZW5zZS4KLSAqCi0gKiBAcHJvdmlkZXNNb2R1bGUgbWVtb2l6ZVN0cmluZ09ubHkKLSAqIEB0eXBl
Y2hlY2tzIHN0YXRpYy1vbmx5Ci0gKi8KLQotInVzZSBzdHJpY3QiOwotCi0vKioKLSAqIE1lbW9p
emVzIHRoZSByZXR1cm4gdmFsdWUgb2YgYSBmdW5jdGlvbiB0aGF0IGFjY2VwdHMgb25lIHN0cmlu
ZyBhcmd1bWVudC4KLSAqCi0gKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjawotICogQHJldHVy
biB7ZnVuY3Rpb259Ci0gKi8KLWZ1bmN0aW9uIG1lbW9pemVTdHJpbmdPbmx5KGNhbGxiYWNrKSB7
Ci0gIHZhciBjYWNoZSA9IHt9OwotICByZXR1cm4gZnVuY3Rpb24oc3RyaW5nKSB7Ci0gICAgaWYg
KGNhY2hlLmhhc093blByb3BlcnR5KHN0cmluZykpIHsKLSAgICAgIHJldHVybiBjYWNoZVtzdHJp
bmddOwotICAgIH0gZWxzZSB7Ci0gICAgICByZXR1cm4gY2FjaGVbc3RyaW5nXSA9IGNhbGxiYWNr
LmNhbGwodGhpcywgc3RyaW5nKTsKLSAgICB9Ci0gIH07Ci19Ci0KLW1vZHVsZS5leHBvcnRzID0g
bWVtb2l6ZVN0cmluZ09ubHk7Ci0KLX0se31dLDgxOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxl
eHBvcnRzKXsKLS8qKgotICogQ29weXJpZ2h0IDIwMTMgRmFjZWJvb2ssIEluYy4KLSAqCi0gKiBM
aWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vu
c2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ug
d2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5z
ZSBhdAotICoKLSAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAot
ICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1Ig
Q09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNl
ZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNz
aW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICoKLSAqIEBwcm92
aWRlc01vZHVsZSBtZXJnZQotICovCi0KLSJ1c2Ugc3RyaWN0IjsKLQotdmFyIG1lcmdlSW50byA9
IHJlcXVpcmUoIi4vbWVyZ2VJbnRvIik7Ci0KLS8qKgotICogU2hhbGxvdyBtZXJnZXMgdHdvIHN0
cnVjdHVyZXMgaW50byBhIHJldHVybiB2YWx1ZSwgd2l0aG91dCBtdXRhdGluZyBlaXRoZXIuCi0g
KgotICogQHBhcmFtIHs/b2JqZWN0fSBvbmUgT3B0aW9uYWwgb2JqZWN0IHdpdGggcHJvcGVydGll
cyB0byBtZXJnZSBmcm9tLgotICogQHBhcmFtIHs/b2JqZWN0fSB0d28gT3B0aW9uYWwgb2JqZWN0
IHdpdGggcHJvcGVydGllcyB0byBtZXJnZSBmcm9tLgotICogQHJldHVybiB7b2JqZWN0fSBUaGUg
c2hhbGxvdyBleHRlbnNpb24gb2Ygb25lIGJ5IHR3by4KLSAqLwotdmFyIG1lcmdlID0gZnVuY3Rp
b24ob25lLCB0d28pIHsKLSAgdmFyIHJlc3VsdCA9IHt9OwotICBtZXJnZUludG8ocmVzdWx0LCBv
bmUpOwotICBtZXJnZUludG8ocmVzdWx0LCB0d28pOwotICByZXR1cm4gcmVzdWx0OwotfTsKLQot
bW9kdWxlLmV4cG9ydHMgPSBtZXJnZTsKLQotfSx7Ii4vbWVyZ2VJbnRvIjo4M31dLDgyOltmdW5j
dGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKLS8qKgotICogQ29weXJpZ2h0IDIwMTMgRmFj
ZWJvb2ssIEluYy4KLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZl
cnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUg
ZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxl
IGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBX
SVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJl
c3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1
YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBM
aWNlbnNlLgotICoKLSAqIEBwcm92aWRlc01vZHVsZSBtZXJnZUhlbHBlcnMKLSAqCi0gKiByZXF1
aXJlc1BvbHlmaWxsczogQXJyYXkuaXNBcnJheQotICovCi0KLSJ1c2Ugc3RyaWN0IjsKLQotdmFy
IGtleU1pcnJvciA9IHJlcXVpcmUoIi4va2V5TWlycm9yIik7Ci12YXIgdGhyb3dJZiA9IHJlcXVp
cmUoIi4vdGhyb3dJZiIpOwotCi0vKioKLSAqIE1heGltdW0gbnVtYmVyIG9mIGxldmVscyB0byB0
cmF2ZXJzZS4gV2lsbCBjYXRjaCBjaXJjdWxhciBzdHJ1Y3R1cmVzLgotICogQGNvbnN0Ci0gKi8K
LXZhciBNQVhfTUVSR0VfREVQVEggPSAzNjsKLQotdmFyIEVSUk9SUyA9IGtleU1pcnJvcih7Ci0g
IE1FUkdFX0FSUkFZX0ZBSUw6IG51bGwsCi0gIE1FUkdFX0NPUkVfRkFJTFVSRTogbnVsbCwKLSAg
TUVSR0VfVFlQRV9VU0FHRV9GQUlMVVJFOiBudWxsLAotICBNRVJHRV9ERUVQX01BWF9MRVZFTFM6
IG51bGwsCi0gIE1FUkdFX0RFRVBfTk9fQVJSX1NUUkFURUdZOiBudWxsCi19KTsKLQotaWYgKHRy
dWUpIHsKLSAgRVJST1JTID0gewotICAgIE1FUkdFX0FSUkFZX0ZBSUw6Ci0gICAgICAnVW5zdXBw
b3J0ZWQgdHlwZSBwYXNzZWQgdG8gYSBtZXJnZSBmdW5jdGlvbi4gWW91IG1heSBoYXZlIHBhc3Nl
ZCBhICcgKwotICAgICAgJ3N0cnVjdHVyZSB0aGF0IGNvbnRhaW5zIGFuIGFycmF5IGFuZCB0aGUg
bWVyZ2UgZnVuY3Rpb24gZG9lcyBub3Qga25vdyAnICsKLSAgICAgICdob3cgdG8gbWVyZ2UgYXJy
YXlzLiAnLAotCi0gICAgTUVSR0VfQ09SRV9GQUlMVVJFOgotICAgICAgJ0NyaXRpY2FsIGFzc3Vt
cHRpb25zIGFib3V0IHRoZSBtZXJnZSBmdW5jdGlvbnMgaGF2ZSBiZWVuIHZpb2xhdGVkLiAnICsK
LSAgICAgICdUaGlzIGlzIHRoZSBmYXVsdCBvZiB0aGUgbWVyZ2UgZnVuY3Rpb25zIHRoZW1zZWx2
ZXMsIG5vdCBuZWNlc3NhcmlseSAnICsKLSAgICAgICd0aGUgY2FsbGVycy4nLAotCi0gICAgTUVS
R0VfVFlQRV9VU0FHRV9GQUlMVVJFOgotICAgICAgJ0NhbGxpbmcgbWVyZ2UgZnVuY3Rpb24gd2l0
aCBpbnZhbGlkIHR5cGVzLiBZb3UgbWF5IGNhbGwgbWVyZ2UgJyArCi0gICAgICAnZnVuY3Rpb25z
IChub24tYXJyYXkgbm9uLXRlcm1pbmFsKSBPUiAobnVsbC91bmRlZmluZWQpIGFyZ3VtZW50cy4g
JyArCi0gICAgICAnbWVyZ2VJbnRvIGZ1bmN0aW9ucyBoYXZlIHRoZSBzYW1lIHJlcXVpcmVtZW50
cyBidXQgd2l0aCBhbiBhZGRlZCAnICsKLSAgICAgICdyZXN0cmljdGlvbiB0aGF0IHRoZSBmaXJz
dCBwYXJhbWV0ZXIgbXVzdCBub3QgYmUgbnVsbC91bmRlZmluZWQuJywKLQotICAgIE1FUkdFX0RF
RVBfTUFYX0xFVkVMUzoKLSAgICAgICdNYXhpbXVtIGRlZXAgbWVyZ2UgZGVwdGggZXhjZWVkZWQu
IFlvdSBtYXkgYXR0ZW1wdGluZyB0byBtZXJnZSAnICsKLSAgICAgICdjaXJjdWxhciBzdHJ1Y3R1
cmVzIGluIGFuIHVuc3VwcG9ydGVkIHdheS4nLAotICAgIE1FUkdFX0RFRVBfTk9fQVJSX1NUUkFU
RUdZOgotICAgICAgJ1lvdSBtdXN0IHByb3ZpZGUgYW4gYXJyYXkgc3RyYXRlZ3kgdG8gZGVlcCBt
ZXJnZSBmdW5jdGlvbnMgdG8gJyArCi0gICAgICAnaW5zdHJ1Y3QgdGhlIGRlZXAgbWVyZ2UgaG93
IHRvIHJlc29sdmUgbWVyZ2luZyB0d28gYXJyYXlzLicKLSAgfTsKLX0KLQotLyoqCi0gKiBXZSB3
b24ndCB3b3JyeSBhYm91dCBlZGdlIGNhc2VzIGxpa2UgbmV3IFN0cmluZygneCcpIG9yIG5ldyBC
b29sZWFuKHRydWUpLgotICogRnVuY3Rpb25zIGFyZSBjb25zaWRlcmVkIHRlcm1pbmFscywgYW5k
IGFycmF5cyBhcmUgbm90LgotICogQHBhcmFtIHsqfSBvIFRoZSBpdGVtL29iamVjdC92YWx1ZSB0
byB0ZXN0LgotICogQHJldHVybiB7Ym9vbGVhbn0gdHJ1ZSBpZmYgdGhlIGFyZ3VtZW50IGlzIGEg
dGVybWluYWwuCi0gKi8KLXZhciBpc1Rlcm1pbmFsID0gZnVuY3Rpb24obykgewotICByZXR1cm4g
dHlwZW9mIG8gIT09ICdvYmplY3QnIHx8IG8gPT09IG51bGw7Ci19OwotCi12YXIgbWVyZ2VIZWxw
ZXJzID0gewotCi0gIE1BWF9NRVJHRV9ERVBUSDogTUFYX01FUkdFX0RFUFRILAotCi0gIGlzVGVy
bWluYWw6IGlzVGVybWluYWwsCi0KLSAgLyoqCi0gICAqIENvbnZlcnRzIG51bGwvdW5kZWZpbmVk
IHZhbHVlcyBpbnRvIGVtcHR5IG9iamVjdC4KLSAgICoKLSAgICogQHBhcmFtIHs/T2JqZWN0PX0g
YXJnIEFyZ3VtZW50IHRvIGJlIG5vcm1hbGl6ZWQgKG51bGxhYmxlIG9wdGlvbmFsKQotICAgKiBA
cmV0dXJuIHshT2JqZWN0fQotICAgKi8KLSAgbm9ybWFsaXplTWVyZ2VBcmc6IGZ1bmN0aW9uKGFy
ZykgewotICAgIHJldHVybiBhcmcgPT09IHVuZGVmaW5lZCB8fCBhcmcgPT09IG51bGwgPyB7fSA6
IGFyZzsKLSAgfSwKLQotICAvKioKLSAgICogSWYgbWVyZ2luZyBBcnJheXMsIGEgbWVyZ2Ugc3Ry
YXRlZ3kgKm11c3QqIGJlIHN1cHBsaWVkLiBJZiBub3QsIGl0IGlzCi0gICAqIGxpa2VseSB0aGUg
Y2FsbGVyJ3MgZmF1bHQuIElmIHRoaXMgZnVuY3Rpb24gaXMgZXZlciBjYWxsZWQgd2l0aCBhbnl0
aGluZwotICAgKiBidXQgYG9uZWAgYW5kIGB0d29gIGJlaW5nIGBBcnJheWBzLCBpdCBpcyB0aGUg
ZmF1bHQgb2YgdGhlIG1lcmdlIHV0aWxpdGllcy4KLSAgICoKLSAgICogQHBhcmFtIHsqfSBvbmUg
QXJyYXkgdG8gbWVyZ2UgaW50by4KLSAgICogQHBhcmFtIHsqfSB0d28gQXJyYXkgdG8gbWVyZ2Ug
ZnJvbS4KLSAgICovCi0gIGNoZWNrTWVyZ2VBcnJheUFyZ3M6IGZ1bmN0aW9uKG9uZSwgdHdvKSB7
Ci0gICAgdGhyb3dJZigKLSAgICAgICFBcnJheS5pc0FycmF5KG9uZSkgfHwgIUFycmF5LmlzQXJy
YXkodHdvKSwKLSAgICAgIEVSUk9SUy5NRVJHRV9DT1JFX0ZBSUxVUkUKLSAgICApOwotICB9LAot
Ci0gIC8qKgotICAgKiBAcGFyYW0geyp9IG9uZSBPYmplY3QgdG8gbWVyZ2UgaW50by4KLSAgICog
QHBhcmFtIHsqfSB0d28gT2JqZWN0IHRvIG1lcmdlIGZyb20uCi0gICAqLwotICBjaGVja01lcmdl
T2JqZWN0QXJnczogZnVuY3Rpb24ob25lLCB0d28pIHsKLSAgICBtZXJnZUhlbHBlcnMuY2hlY2tN
ZXJnZU9iamVjdEFyZyhvbmUpOwotICAgIG1lcmdlSGVscGVycy5jaGVja01lcmdlT2JqZWN0QXJn
KHR3byk7Ci0gIH0sCi0KLSAgLyoqCi0gICAqIEBwYXJhbSB7Kn0gYXJnCi0gICAqLwotICBjaGVj
a01lcmdlT2JqZWN0QXJnOiBmdW5jdGlvbihhcmcpIHsKLSAgICB0aHJvd0lmKGlzVGVybWluYWwo
YXJnKSB8fCBBcnJheS5pc0FycmF5KGFyZyksIEVSUk9SUy5NRVJHRV9DT1JFX0ZBSUxVUkUpOwot
ICB9LAotCi0gIC8qKgotICAgKiBDaGVja3MgdGhhdCBhIG1lcmdlIHdhcyBub3QgZ2l2ZW4gYSBj
aXJjdWxhciBvYmplY3Qgb3IgYW4gb2JqZWN0IHRoYXQgaGFkCi0gICAqIHRvbyBncmVhdCBvZiBk
ZXB0aC4KLSAgICoKLSAgICogQHBhcmFtIHtudW1iZXJ9IExldmVsIG9mIHJlY3Vyc2lvbiB0byB2
YWxpZGF0ZSBhZ2FpbnN0IG1heGltdW0uCi0gICAqLwotICBjaGVja01lcmdlTGV2ZWw6IGZ1bmN0
aW9uKGxldmVsKSB7Ci0gICAgdGhyb3dJZihsZXZlbCA+PSBNQVhfTUVSR0VfREVQVEgsIEVSUk9S
Uy5NRVJHRV9ERUVQX01BWF9MRVZFTFMpOwotICB9LAotCi0gIC8qKgotICAgKiBDaGVja3MgdGhh
dCBhIG1lcmdlIHdhcyBub3QgZ2l2ZW4gYSBjaXJjdWxhciBvYmplY3Qgb3IgYW4gb2JqZWN0IHRo
YXQgaGFkCi0gICAqIHRvbyBncmVhdCBvZiBkZXB0aC4KLSAgICoKLSAgICogQHBhcmFtIHtudW1i
ZXJ9IExldmVsIG9mIHJlY3Vyc2lvbiB0byB2YWxpZGF0ZSBhZ2FpbnN0IG1heGltdW0uCi0gICAq
LwotICBjaGVja0FycmF5U3RyYXRlZ3k6IGZ1bmN0aW9uKHN0cmF0ZWd5KSB7Ci0gICAgdGhyb3dJ
ZigKLSAgICAgIHN0cmF0ZWd5ICE9PSB1bmRlZmluZWQgJiYgIShzdHJhdGVneSBpbiBtZXJnZUhl
bHBlcnMuQXJyYXlTdHJhdGVnaWVzKSwKLSAgICAgIEVSUk9SUy5NRVJHRV9ERUVQX05PX0FSUl9T
VFJBVEVHWQotICAgICk7Ci0gIH0sCi0KLSAgLyoqCi0gICAqIFNldCBvZiBwb3NzaWJsZSBiZWhh
dmlvcnMgb2YgbWVyZ2UgYWxnb3JpdGhtcyB3aGVuIGVuY291bnRlcmluZyB0d28gQXJyYXlzCi0g
ICAqIHRoYXQgbXVzdCBiZSBtZXJnZWQgdG9nZXRoZXIuCi0gICAqIC0gYGNsb2JiZXJgOiBUaGUg
bGVmdCBgQXJyYXlgIGlzIGlnbm9yZWQuCi0gICAqIC0gYGluZGV4QnlJbmRleGA6IFRoZSByZXN1
bHQgaXMgYWNoaWV2ZWQgYnkgcmVjdXJzaXZlbHkgZGVlcCBtZXJnaW5nIGF0Ci0gICAqICAgZWFj
aCBpbmRleC4gKG5vdCB5ZXQgc3VwcG9ydGVkLikKLSAgICovCi0gIEFycmF5U3RyYXRlZ2llczog
a2V5TWlycm9yKHsKLSAgICBDbG9iYmVyOiB0cnVlLAotICAgIEluZGV4QnlJbmRleDogdHJ1ZQot
ICB9KSwKLQotICBFUlJPUlM6IEVSUk9SUwotfTsKLQotbW9kdWxlLmV4cG9ydHMgPSBtZXJnZUhl
bHBlcnM7Ci0KLX0seyIuL2tleU1pcnJvciI6NzgsIi4vdGhyb3dJZiI6ODZ9XSw4MzpbZnVuY3Rp
b24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7Ci0vKioKLSAqIENvcHlyaWdodCAyMDEzIEZhY2Vi
b29rLCBJbmMuCi0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJz
aW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lU
SE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNz
IG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFn
ZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGlj
ZW5zZS4KLSAqCi0gKiBAcHJvdmlkZXNNb2R1bGUgbWVyZ2VJbnRvCi0gKiBAdHlwZWNoZWNrcyBz
dGF0aWMtb25seQotICovCi0KLSJ1c2Ugc3RyaWN0IjsKLQotdmFyIG1lcmdlSGVscGVycyA9IHJl
cXVpcmUoIi4vbWVyZ2VIZWxwZXJzIik7Ci0KLXZhciBjaGVja01lcmdlT2JqZWN0QXJnID0gbWVy
Z2VIZWxwZXJzLmNoZWNrTWVyZ2VPYmplY3RBcmc7Ci0KLS8qKgotICogU2hhbGxvdyBtZXJnZXMg
dHdvIHN0cnVjdHVyZXMgYnkgbXV0YXRpbmcgdGhlIGZpcnN0IHBhcmFtZXRlci4KLSAqCi0gKiBA
cGFyYW0ge29iamVjdH0gb25lIE9iamVjdCB0byBiZSBtZXJnZWQgaW50by4KLSAqIEBwYXJhbSB7
P29iamVjdH0gdHdvIE9wdGlvbmFsIG9iamVjdCB3aXRoIHByb3BlcnRpZXMgdG8gbWVyZ2UgZnJv
bS4KLSAqLwotZnVuY3Rpb24gbWVyZ2VJbnRvKG9uZSwgdHdvKSB7Ci0gIGNoZWNrTWVyZ2VPYmpl
Y3RBcmcob25lKTsKLSAgaWYgKHR3byAhPSBudWxsKSB7Ci0gICAgY2hlY2tNZXJnZU9iamVjdEFy
Zyh0d28pOwotICAgIGZvciAodmFyIGtleSBpbiB0d28pIHsKLSAgICAgIGlmICghdHdvLmhhc093
blByb3BlcnR5KGtleSkpIHsKLSAgICAgICAgY29udGludWU7Ci0gICAgICB9Ci0gICAgICBvbmVb
a2V5XSA9IHR3b1trZXldOwotICAgIH0KLSAgfQotfQotCi1tb2R1bGUuZXhwb3J0cyA9IG1lcmdl
SW50bzsKLQotfSx7Ii4vbWVyZ2VIZWxwZXJzIjo4Mn1dLDg0OltmdW5jdGlvbihyZXF1aXJlLG1v
ZHVsZSxleHBvcnRzKXsKLS8qKgotICogQ29weXJpZ2h0IDIwMTMgRmFjZWJvb2ssIEluYy4KLSAq
Ci0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUg
IkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs
aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUg
TGljZW5zZSBhdAotICoKLSAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQg
dG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl
IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJ
RVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4K
LSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBw
ZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICoKLSAq
IEBwcm92aWRlc01vZHVsZSBtaXhJbnRvCi0gKi8KLQotInVzZSBzdHJpY3QiOwotCi0vKioKLSAq
IFNpbXBseSBjb3BpZXMgcHJvcGVydGllcyB0byB0aGUgcHJvdG90eXBlLgotICovCi12YXIgbWl4
SW50byA9IGZ1bmN0aW9uKGNvbnN0cnVjdG9yLCBtZXRob2RCYWcpIHsKLSAgdmFyIG1ldGhvZE5h
bWU7Ci0gIGZvciAobWV0aG9kTmFtZSBpbiBtZXRob2RCYWcpIHsKLSAgICBpZiAoIW1ldGhvZEJh
Zy5oYXNPd25Qcm9wZXJ0eShtZXRob2ROYW1lKSkgewotICAgICAgY29udGludWU7Ci0gICAgfQot
ICAgIGNvbnN0cnVjdG9yLnByb3RvdHlwZVttZXRob2ROYW1lXSA9IG1ldGhvZEJhZ1ttZXRob2RO
YW1lXTsKLSAgfQotfTsKLQotbW9kdWxlLmV4cG9ydHMgPSBtaXhJbnRvOwotCi19LHt9XSw4NTpb
ZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7Ci0vKioKLSAqIENvcHlyaWdodCAyMDEz
IEZhY2Vib29rLCBJbmMuCi0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNl
LCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBm
aWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9i
dGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiBodHRwOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGlj
YWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRl
ZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAot
ICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBl
eHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBs
YW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0
aGUgTGljZW5zZS4KLSAqCi0gKiBAcHJvdmlkZXNNb2R1bGUgb2JqTWFwS2V5VmFsCi0gKi8KLQot
InVzZSBzdHJpY3QiOwotCi0vKioKLSAqIEJlaGF2ZXMgdGhlIHNhbWUgYXMgYG9iak1hcGAgYnV0
IGludm9rZXMgZnVuYyB3aXRoIHRoZSBrZXkgZmlyc3QsIGFuZCB2YWx1ZQotICogc2Vjb25kLiBV
c2UgYG9iak1hcGAgdW5sZXNzIHlvdSBuZWVkIHRoaXMgc3BlY2lhbCBjYXNlLgotICogSW52b2tl
cyBmdW5jIGFzOgotICoKLSAqICAgZnVuYyhrZXksIHZhbHVlLCBpdGVyYXRpb24pCi0gKgotICog
QHBhcmFtIHs/b2JqZWN0fSBvYmogT2JqZWN0IHRvIG1hcCBrZXlzIG92ZXIKLSAqIEBwYXJhbSB7
IWZ1bmN0aW9ufSBmdW5jIEludm9rZWQgZm9yIGVhY2gga2V5L3ZhbCBwYWlyLgotICogQHBhcmFt
IHs/Kn0gY29udGV4dAotICogQHJldHVybiB7P29iamVjdH0gUmVzdWx0IG9mIG1hcHBpbmcgb3Ig
bnVsbCBpZiBvYmogaXMgZmFsc2V5Ci0gKi8KLWZ1bmN0aW9uIG9iak1hcEtleVZhbChvYmosIGZ1
bmMsIGNvbnRleHQpIHsKLSAgaWYgKCFvYmopIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotICB2
YXIgaSA9IDA7Ci0gIHZhciByZXQgPSB7fTsKLSAgZm9yICh2YXIga2V5IGluIG9iaikgewotICAg
IGlmIChvYmouaGFzT3duUHJvcGVydHkoa2V5KSkgewotICAgICAgcmV0W2tleV0gPSBmdW5jLmNh
bGwoY29udGV4dCwga2V5LCBvYmpba2V5XSwgaSsrKTsKLSAgICB9Ci0gIH0KLSAgcmV0dXJuIHJl
dDsKLX0KLQotbW9kdWxlLmV4cG9ydHMgPSBvYmpNYXBLZXlWYWw7Ci0KLX0se31dLDg2OltmdW5j
dGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKLS8qKgotICogQ29weXJpZ2h0IDIwMTMgRmFj
ZWJvb2ssIEluYy4KLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZl
cnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUg
ZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxl
IGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBX
SVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJl
c3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1
YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBM
aWNlbnNlLgotICoKLSAqIEBwcm92aWRlc01vZHVsZSB0aHJvd0lmCi0gKi8KLQotInVzZSBzdHJp
Y3QiOwotCi12YXIgdGhyb3dJZiA9IGZ1bmN0aW9uKGNvbmRpdGlvbiwgZXJyKSB7Ci0gIGlmIChj
b25kaXRpb24pIHsKLSAgICB0aHJvdyBuZXcgRXJyb3IoZXJyKTsKLSAgfQotfTsKLQotbW9kdWxl
LmV4cG9ydHMgPSB0aHJvd0lmOwotCi19LHt9XSw4NzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUs
ZXhwb3J0cyl7Ci0oZnVuY3Rpb24oKXsvKioKLSAqIENvcHlyaWdodCAyMDEzIEZhY2Vib29rLCBJ
bmMuCi0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIu
MCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBp
biBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkg
b2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUg
TGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBX
QVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGlt
cGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zl
cm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4K
LSAqCi0gKiBAcHJvdmlkZXNNb2R1bGUgdHJhdmVyc2VBbGxDaGlsZHJlbgotICovCi0KLSJ1c2Ug
c3RyaWN0IjsKLQotdmFyIFJlYWN0Q29tcG9uZW50ID0gcmVxdWlyZSgiLi9SZWFjdENvbXBvbmVu
dCIpOwotdmFyIFJlYWN0VGV4dENvbXBvbmVudCA9IHJlcXVpcmUoIi4vUmVhY3RUZXh0Q29tcG9u
ZW50Iik7Ci0KLXZhciB0aHJvd0lmID0gcmVxdWlyZSgiLi90aHJvd0lmIik7Ci0KLS8qKgotICog
QHBvbHlGaWxsIEFycmF5LmlzQXJyYXkKLSAqLwotdmFyIERVUExJQ0FURV9LRVlfRVJST1IgPSAn
RFVQTElDQVRFX0tFWV9FUlJPUic7Ci12YXIgSU5WQUxJRF9DSElMRCA9ICdJTlZBTElEX0NISUxE
JzsKLWlmICh0cnVlKSB7Ci0gIElOVkFMSURfQ0hJTEQgPQotICAgICdZb3UgbWF5IG5vdCBwYXNz
IGEgY2hpbGQgb2YgdGhhdCB0eXBlIHRvIGEgUmVhY3QgY29tcG9uZW50LiBJdCAnICsKLSAgICAn
aXMgYSBjb21tb24gbWlzdGFrZSB0byB0cnkgdG8gcGFzcyBhIHN0YW5kYXJkIGJyb3dzZXIgRE9N
IGVsZW1lbnQgJyArCi0gICAgJ2FzIGEgY2hpbGQgb2YgYSBSZWFjdCBjb21wb25lbnQuJzsKLSAg
RFVQTElDQVRFX0tFWV9FUlJPUiA9Ci0gICAgJ1lvdSBoYXZlIHR3byBjaGlsZHJlbiB3aXRoIGlk
ZW50aWNhbCBrZXlzLiBNYWtlIHN1cmUgdGhhdCB5b3Ugc2V0IHRoZSAnICsKLSAgICAnImtleSIg
cHJvcGVydHkgdG8gYSB1bmlxdWUgdmFsdWUgc3VjaCBhcyBhIHJvdyBJRC4nOwotfQotCi0vKioK
LSAqIFRPRE86IFRlc3QgdGhhdDoKLSAqIDEuIGBtYXBDaGlsZHJlbmAgdHJhbnNmb3JtcyBzdHJp
bmdzIGFuZCBudW1iZXJzIGludG8gYFJlYWN0VGV4dENvbXBvbmVudGAuCi0gKiAyLiBpdCgnc2hv
dWxkIGZhaWwgd2hlbiBzdXBwbGllZCBkdXBsaWNhdGUga2V5JywgZnVuY3Rpb24oKSB7Ci0gKiAz
LiBUaGF0IGEgc2luZ2xlIGNoaWxkIGFuZCBhbiBhcnJheSB3aXRoIG9uZSBpdGVtIGhhdmUgdGhl
IHNhbWUga2V5IHBhdHRlcm4uCi0gKiB9KTsKLSAqLwotCi0vKioKLSAqIEBwYXJhbSB7Pyp9IGNo
aWxkcmVuIENoaWxkcmVuIHRyZWUgY29udGFpbmVyLgotICogQHBhcmFtIHshc3RyaW5nfSBuYW1l
U29GYXIgTmFtZSBvZiB0aGUga2V5IHBhdGggc28gZmFyLgotICogQHBhcmFtIHshbnVtYmVyfSBp
bmRleFNvRmFyIE51bWJlciBvZiBjaGlsZHJlbiBlbmNvdW50ZXJlZCB1bnRpbCB0aGlzIHBvaW50
LgotICogQHBhcmFtIHshZnVuY3Rpb259IGNhbGxiYWNrIENhbGxiYWNrIHRvIGludm9rZSB3aXRo
IGVhY2ggY2hpbGQgZm91bmQuCi0gKiBAcGFyYW0gez8qfSB0cmF2ZXJzZUNvbnRleHQgVXNlZCB0
byBwYXNzIGluZm9ybWF0aW9uIHRocm91Z2hvdXQgdGhlIHRyYXZlcnNhbAotICogcHJvY2Vzcy4K
LSAqIEByZXR1cm4geyFudW1iZXJ9IFRoZSBudW1iZXIgb2YgY2hpbGRyZW4gaW4gdGhpcyBzdWJ0
cmVlLgotICovCi12YXIgdHJhdmVyc2VBbGxDaGlsZHJlbkltcGwgPQotICBmdW5jdGlvbihjaGls
ZHJlbiwgbmFtZVNvRmFyLCBpbmRleFNvRmFyLCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KSB7
Ci0gICAgdmFyIHN1YnRyZWVDb3VudCA9IDA7ICAvLyBDb3VudCBvZiBjaGlsZHJlbiBmb3VuZCBp
biB0aGUgY3VycmVudCBzdWJ0cmVlLgotICAgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkg
ewotICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykgewotICAg
ICAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltpXTsKLSAgICAgICAgdmFyIG5leHROYW1lID0gbmFt
ZVNvRmFyICsgJ1snICsgUmVhY3RDb21wb25lbnQuZ2V0S2V5KGNoaWxkLCBpKSArICddJzsKLSAg
ICAgICAgdmFyIG5leHRJbmRleCA9IGluZGV4U29GYXIgKyBzdWJ0cmVlQ291bnQ7Ci0gICAgICAg
IHN1YnRyZWVDb3VudCArPSB0cmF2ZXJzZUFsbENoaWxkcmVuSW1wbCgKLSAgICAgICAgICBjaGls
ZCwKLSAgICAgICAgICBuZXh0TmFtZSwKLSAgICAgICAgICBuZXh0SW5kZXgsCi0gICAgICAgICAg
Y2FsbGJhY2ssCi0gICAgICAgICAgdHJhdmVyc2VDb250ZXh0Ci0gICAgICAgICk7Ci0gICAgICB9
Ci0gICAgfSBlbHNlIHsKLSAgICAgIHZhciB0eXBlID0gdHlwZW9mIGNoaWxkcmVuOwotICAgICAg
dmFyIGlzT25seUNoaWxkID0gbmFtZVNvRmFyID09PSAnJzsKLSAgICAgIC8vIElmIGl0J3MgdGhl
IG9ubHkgY2hpbGQsIHRyZWF0IHRoZSBuYW1lIGFzIGlmIGl0IHdhcyB3cmFwcGVkIGluIGFuIGFy
cmF5Ci0gICAgICAvLyBzbyB0aGF0IGl0J3MgY29uc2lzdGVudCBpZiB0aGUgbnVtYmVyIG9mIGNo
aWxkcmVuIGdyb3dzCi0gICAgICB2YXIgc3RvcmFnZU5hbWUgPSBpc09ubHlDaGlsZCA/Ci0gICAg
ICAgICdbJyArIFJlYWN0Q29tcG9uZW50LmdldEtleShjaGlsZHJlbiwgMCkgKyAnXScgOgotICAg
ICAgICBuYW1lU29GYXI7Ci0gICAgICBpZiAoY2hpbGRyZW4gPT09IG51bGwgfHwgY2hpbGRyZW4g
PT09IHVuZGVmaW5lZCB8fCB0eXBlID09PSAnYm9vbGVhbicpIHsKLSAgICAgICAgLy8gQWxsIG9m
IHRoZSBhYm92ZSBhcmUgcGVyY2VpdmVkIGFzIG51bGwuCi0gICAgICAgIGNhbGxiYWNrKHRyYXZl
cnNlQ29udGV4dCwgbnVsbCwgc3RvcmFnZU5hbWUsIGluZGV4U29GYXIpOwotICAgICAgICBzdWJ0
cmVlQ291bnQgPSAxOwotICAgICAgfSBlbHNlIGlmIChjaGlsZHJlbi5tb3VudENvbXBvbmVudElu
dG9Ob2RlKSB7Ci0gICAgICAgIGNhbGxiYWNrKHRyYXZlcnNlQ29udGV4dCwgY2hpbGRyZW4sIHN0
b3JhZ2VOYW1lLCBpbmRleFNvRmFyKTsKLSAgICAgICAgc3VidHJlZUNvdW50ID0gMTsKLSAgICAg
IH0gZWxzZSB7Ci0gICAgICAgIGlmICh0eXBlID09PSAnb2JqZWN0JykgewotICAgICAgICAgIHRo
cm93SWYoY2hpbGRyZW4gJiYgY2hpbGRyZW4ubm9kZVR5cGUgPT09IDEsIElOVkFMSURfQ0hJTEQp
OwotICAgICAgICAgIGZvciAodmFyIGtleSBpbiBjaGlsZHJlbikgewotICAgICAgICAgICAgaWYg
KGNoaWxkcmVuLmhhc093blByb3BlcnR5KGtleSkpIHsKLSAgICAgICAgICAgICAgc3VidHJlZUNv
dW50ICs9IHRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBsKAotICAgICAgICAgICAgICAgIGNoaWxkcmVu
W2tleV0sCi0gICAgICAgICAgICAgICAgbmFtZVNvRmFyICsgJ3snICsga2V5ICsgJ30nLAotICAg
ICAgICAgICAgICAgIGluZGV4U29GYXIgKyBzdWJ0cmVlQ291bnQsCi0gICAgICAgICAgICAgICAg
Y2FsbGJhY2ssCi0gICAgICAgICAgICAgICAgdHJhdmVyc2VDb250ZXh0Ci0gICAgICAgICAgICAg
ICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKHR5cGUg
PT09ICdzdHJpbmcnKSB7Ci0gICAgICAgICAgdmFyIG5vcm1hbGl6ZWRUZXh0ID0gbmV3IFJlYWN0
VGV4dENvbXBvbmVudChjaGlsZHJlbik7Ci0gICAgICAgICAgY2FsbGJhY2sodHJhdmVyc2VDb250
ZXh0LCBub3JtYWxpemVkVGV4dCwgc3RvcmFnZU5hbWUsIGluZGV4U29GYXIpOwotICAgICAgICAg
IHN1YnRyZWVDb3VudCArPSAxOwotICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdudW1iZXIn
KSB7Ci0gICAgICAgICAgdmFyIG5vcm1hbGl6ZWROdW1iZXIgPSBuZXcgUmVhY3RUZXh0Q29tcG9u
ZW50KCcnICsgY2hpbGRyZW4pOwotICAgICAgICAgIGNhbGxiYWNrKHRyYXZlcnNlQ29udGV4dCwg
bm9ybWFsaXplZE51bWJlciwgc3RvcmFnZU5hbWUsIGluZGV4U29GYXIpOwotICAgICAgICAgIHN1
YnRyZWVDb3VudCArPSAxOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBz
dWJ0cmVlQ291bnQ7Ci0gIH07Ci0KLS8qKgotICogVHJhdmVyc2VzIGNoaWxkcmVuIHRoYXQgYXJl
IHR5cGljYWxseSBzcGVjaWZpZWQgYXMgYHByb3BzLmNoaWxkcmVuYCwgYnV0Ci0gKiBtaWdodCBh
bHNvIGJlIHNwZWNpZmllZCB0aHJvdWdoIGF0dHJpYnV0ZXM6Ci0gKgotICogLSBgdHJhdmVyc2VB
bGxDaGlsZHJlbih0aGlzLnByb3BzLmNoaWxkcmVuLCAuLi4pYAotICogLSBgdHJhdmVyc2VBbGxD
aGlsZHJlbih0aGlzLnByb3BzLmxlZnRQYW5lbENoaWxkcmVuLCAuLi4pYAotICoKLSAqIFRoZSBg
dHJhdmVyc2VDb250ZXh0YCBpcyBhbiBvcHRpb25hbCBhcmd1bWVudCB0aGF0IGlzIHBhc3NlZCB0
aHJvdWdoIHRoZQotICogZW50aXJlIHRyYXZlcnNhbC4gSXQgY2FuIGJlIHVzZWQgdG8gc3RvcmUg
YWNjdW11bGF0aW9ucyBvciBhbnl0aGluZyBlbHNlIHRoYXQKLSAqIHRoZSBjYWxsYmFjayBtaWdo
dCBmaW5kIHJlbGV2YW50LgotICoKLSAqIEBwYXJhbSB7Pyp9IGNoaWxkcmVuIENoaWxkcmVuIHRy
ZWUgb2JqZWN0LgotICogQHBhcmFtIHshZnVuY3Rpb259IGNhbGxiYWNrIFRvIGludm9rZSB1cG9u
IHRyYXZlcnNpbmcgZWFjaCBjaGlsZC4KLSAqIEBwYXJhbSB7Pyp9IHRyYXZlcnNlQ29udGV4dCBD
b250ZXh0IGZvciB0cmF2ZXJzYWwuCi0gKi8KLWZ1bmN0aW9uIHRyYXZlcnNlQWxsQ2hpbGRyZW4o
Y2hpbGRyZW4sIGNhbGxiYWNrLCB0cmF2ZXJzZUNvbnRleHQpIHsKLSAgaWYgKGNoaWxkcmVuICE9
PSBudWxsICYmIGNoaWxkcmVuICE9PSB1bmRlZmluZWQpIHsKLSAgICB0cmF2ZXJzZUFsbENoaWxk
cmVuSW1wbChjaGlsZHJlbiwgJycsIDAsIGNhbGxiYWNrLCB0cmF2ZXJzZUNvbnRleHQpOwotICB9
Ci19Ci0KLS8qKgotICogRXhwb3J0IHRoZSBlcnJvciBjb2RlIGZvciB1c2UgaW4gb3RoZXIgd2Fs
a2luZy9tYXBwaW5nIGNvZGUuCi0gKi8KLXRyYXZlcnNlQWxsQ2hpbGRyZW4uRFVQTElDQVRFX0tF
WV9FUlJPUiA9IERVUExJQ0FURV9LRVlfRVJST1I7Ci0KLQotbW9kdWxlLmV4cG9ydHMgPSB0cmF2
ZXJzZUFsbENoaWxkcmVuOwotCi19KSgpCi19LHsiLi9SZWFjdENvbXBvbmVudCI6MjIsIi4vUmVh
Y3RUZXh0Q29tcG9uZW50Ijo0NywiLi90aHJvd0lmIjo4Nn1dfSx7fSxbMjFdKSgyMSkKLX0pOwot
OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvbGFicy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvcmVhY3QvYm93ZXJfY29tcG9uZW50cy9yZWFjdC9yZWFjdC5taW4uanMgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2xhYnMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL3JlYWN0L2Jvd2VyX2NvbXBvbmVudHMvcmVhY3QvcmVhY3QubWluLmpzCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNjMxYzViZDkxNDM4YzYxNWI0ZDhiZThkMzdkZTdmMjE0
NjBjNDY3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvbGFicy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvcmVhY3QvYm93ZXJfY29tcG9uZW50cy9yZWFjdC9yZWFjdC5taW4uanMK
KysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi0vKioKLSAqIFJlYWN0IHYwLjQuMAotICoK
LSAqIENvcHlyaWdodCAyMDEzIEZhY2Vib29rLCBJbmMuCi0gKgotICogTGljZW5zZWQgdW5kZXIg
dGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3Ug
bWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vu
c2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiBo
dHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3Mg
cmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3
YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBh
biAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0Yg
QU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2Ug
Zm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBs
aW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotIWZ1bmN0aW9uKGUpe2lmKCJmdW5j
dGlvbiI9PXR5cGVvZiBib290c3RyYXApYm9vdHN0cmFwKCJyZWFjdCIsZSk7ZWxzZSBpZigib2Jq
ZWN0Ij09dHlwZW9mIGV4cG9ydHMpbW9kdWxlLmV4cG9ydHM9ZSgpO2Vsc2UgaWYoImZ1bmN0aW9u
Ij09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZClkZWZpbmUoZSk7ZWxzZSBpZigidW5kZWZpbmVk
IiE9dHlwZW9mIHNlcyl7aWYoIXNlcy5vaygpKXJldHVybjtzZXMubWFrZVJlYWN0PWV9ZWxzZSJ1
bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdy5SZWFjdD1lKCk6Z2xvYmFsLlJlYWN0PWUo
KX0oZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHIobixpKXtpZigh
dFtuXSl7aWYoIWVbbl0pe3ZhciBhPSJmdW5jdGlvbiI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJl
O2lmKCFpJiZhKXJldHVybiBhKG4sITApO2lmKG8pcmV0dXJuIG8obiwhMCk7dGhyb3cgbmV3IEVy
cm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIrbisiJyIpfXZhciBzPXRbbl09e2V4cG9ydHM6e319
O2Vbbl1bMF0uY2FsbChzLmV4cG9ydHMsZnVuY3Rpb24odCl7dmFyIG89ZVtuXVsxXVt0XTtyZXR1
cm4gcihvP286dCl9LHMscy5leHBvcnRzKX1yZXR1cm4gdFtuXS5leHBvcnRzfWZvcih2YXIgbz0i
ZnVuY3Rpb24iPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZSxpPTA7aTxuLmxlbmd0aDtpKyspcihu
W2ldKTtyZXR1cm4gcn0oezE6W2Z1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gbihlKXt2YXIgdD1yKGUp
O2lmKCF0KXRocm93IG5ldyBFcnJvcihvKCdUcmllZCB0byBnZXQgZWxlbWVudCB3aXRoIGlkIG9m
ICIlcyIgYnV0IGl0IGlzIG5vdCBwcmVzZW50IG9uIHRoZSBwYWdlLicsZSkpO3JldHVybiB0fXZh
ciByPWUoIi4vZ2UiKSxvPWUoIi4vZXgiKTt0LmV4cG9ydHM9bn0seyIuL2V4Ijo2NiwiLi9nZSI6
Njl9XSwyOltmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj17ZmlsbE9wYWNpdHk6ITAs
Zm9udFdlaWdodDohMCxvcGFjaXR5OiEwLG9ycGhhbnM6ITAsekluZGV4OiEwLHpvb206ITB9LHI9
e2JhY2tncm91bmQ6e2JhY2tncm91bmRJbWFnZTohMCxiYWNrZ3JvdW5kUG9zaXRpb246ITAsYmFj
a2dyb3VuZFJlcGVhdDohMCxiYWNrZ3JvdW5kQ29sb3I6ITB9LGJvcmRlcjp7Ym9yZGVyV2lkdGg6
ITAsYm9yZGVyU3R5bGU6ITAsYm9yZGVyQ29sb3I6ITB9LGJvcmRlckJvdHRvbTp7Ym9yZGVyQm90
dG9tV2lkdGg6ITAsYm9yZGVyQm90dG9tU3R5bGU6ITAsYm9yZGVyQm90dG9tQ29sb3I6ITB9LGJv
cmRlckxlZnQ6e2JvcmRlckxlZnRXaWR0aDohMCxib3JkZXJMZWZ0U3R5bGU6ITAsYm9yZGVyTGVm
dENvbG9yOiEwfSxib3JkZXJSaWdodDp7Ym9yZGVyUmlnaHRXaWR0aDohMCxib3JkZXJSaWdodFN0
eWxlOiEwLGJvcmRlclJpZ2h0Q29sb3I6ITB9LGJvcmRlclRvcDp7Ym9yZGVyVG9wV2lkdGg6ITAs
Ym9yZGVyVG9wU3R5bGU6ITAsYm9yZGVyVG9wQ29sb3I6ITB9LGZvbnQ6e2ZvbnRTdHlsZTohMCxm
b250VmFyaWFudDohMCxmb250V2VpZ2h0OiEwLGZvbnRTaXplOiEwLGxpbmVIZWlnaHQ6ITAsZm9u
dEZhbWlseTohMH19LG89e2lzVW5pdGxlc3NOdW1iZXI6bixzaG9ydGhhbmRQcm9wZXJ0eUV4cGFu
c2lvbnM6cn07dC5leHBvcnRzPW99LHt9XSwzOltmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt2
YXIgbj1lKCIuL0NTU1Byb3BlcnR5Iikscj1lKCIuL2Rhbmdlcm91c1N0eWxlVmFsdWUiKSxvPWUo
Ii4vZXNjYXBlVGV4dEZvckJyb3dzZXIiKSxpPWUoIi4vaHlwaGVuYXRlIiksYT1lKCIuL21lbW9p
emVTdHJpbmdPbmx5Iikscz1hKGZ1bmN0aW9uKGUpe3JldHVybiBvKGkoZSkpfSksdT17Y3JlYXRl
TWFya3VwRm9yU3R5bGVzOmZ1bmN0aW9uKGUpe3ZhciB0PSIiO2Zvcih2YXIgbiBpbiBlKWlmKGUu
aGFzT3duUHJvcGVydHkobikpe3ZhciBvPWVbbl07bnVsbCE9byYmKHQrPXMobikrIjoiLHQrPXIo
bixvKSsiOyIpfXJldHVybiB0fHxudWxsfSxzZXRWYWx1ZUZvclN0eWxlczpmdW5jdGlvbihlLHQp
e3ZhciBvPWUuc3R5bGU7Zm9yKHZhciBpIGluIHQpaWYodC5oYXNPd25Qcm9wZXJ0eShpKSl7dmFy
IGE9cihpLHRbaV0pO2lmKGEpb1tpXT1hO2Vsc2V7dmFyIHM9bi5zaG9ydGhhbmRQcm9wZXJ0eUV4
cGFuc2lvbnNbaV07aWYocylmb3IodmFyIHUgaW4gcylvW3VdPSIiO2Vsc2Ugb1tpXT0iIn19fX07
dC5leHBvcnRzPXV9LHsiLi9DU1NQcm9wZXJ0eSI6MiwiLi9kYW5nZXJvdXNTdHlsZVZhbHVlIjo2
MywiLi9lc2NhcGVUZXh0Rm9yQnJvd3NlciI6NjUsIi4vaHlwaGVuYXRlIjo3MywiLi9tZW1vaXpl
U3RyaW5nT25seSI6ODB9XSw0OltmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj17fSxy
PXtwdXRMaXN0ZW5lcjpmdW5jdGlvbihlLHQscil7dmFyIG89blt0XXx8KG5bdF09e30pO29bZV09
cn0sZ2V0TGlzdGVuZXI6ZnVuY3Rpb24oZSx0KXt2YXIgcj1uW3RdO3JldHVybiByJiZyW2VdfSxk
ZWxldGVMaXN0ZW5lcjpmdW5jdGlvbihlLHQpe3ZhciByPW5bdF07ciYmZGVsZXRlIHJbZV19LGRl
bGV0ZUFsbExpc3RlbmVyczpmdW5jdGlvbihlKXtmb3IodmFyIHQgaW4gbilkZWxldGUgblt0XVtl
XX0sX19wdXJnZTpmdW5jdGlvbigpe249e319fTt0LmV4cG9ydHM9cn0se31dLDU6W2Z1bmN0aW9u
KGUsdCl7IWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7cmV0dXJuIlNFTEVD
VCI9PT1lLm5vZGVOYW1lfHwiSU5QVVQiPT09ZS5ub2RlTmFtZSYmImZpbGUiPT09ZS50eXBlfWZ1
bmN0aW9uIHIoZSl7dmFyIHQ9RC5nZXRQb29sZWQoTy5jaGFuZ2UsXyxlKTtDLmFjY3VtdWxhdGVU
d29QaGFzZURpc3BhdGNoZXModCkseS5lbnF1ZXVlRXZlbnRzKHQpLHkucHJvY2Vzc0V2ZW50UXVl
dWUoKX1mdW5jdGlvbiBvKGUsdCl7ST1lLF89dCxJLmF0dGFjaEV2ZW50KCJvbmNoYW5nZSIscil9
ZnVuY3Rpb24gaSgpe0kmJihJLmRldGFjaEV2ZW50KCJvbmNoYW5nZSIsciksST1udWxsLF89bnVs
bCl9ZnVuY3Rpb24gYShlLHQsbil7cmV0dXJuIGU9PT1iLnRvcENoYW5nZT9uOnZvaWQgMH1mdW5j
dGlvbiBzKGUsdCxuKXtlPT09Yi50b3BGb2N1cz8oaSgpLG8odCxuKSk6ZT09PWIudG9wQmx1ciYm
aSgpfWZ1bmN0aW9uIHUoZSl7cmV0dXJuIklOUFVUIj09PWUubm9kZU5hbWUmJnhbZS50eXBlXXx8
IlRFWFRBUkVBIj09PWUubm9kZU5hbWV9ZnVuY3Rpb24gbChlLHQpe0k9ZSxfPXQsTj1lLnZhbHVl
LFA9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLmNvbnN0cnVjdG9yLnByb3RvdHlw
ZSwidmFsdWUiKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoSSwidmFsdWUiLEEpLEkuYXR0YWNoRXZl
bnQoIm9ucHJvcGVydHljaGFuZ2UiLHApfWZ1bmN0aW9uIGMoKXtJJiYoZGVsZXRlIEkudmFsdWUs
SS5kZXRhY2hFdmVudCgib25wcm9wZXJ0eWNoYW5nZSIscCksST1udWxsLF89bnVsbCxOPW51bGws
UD1udWxsKX1mdW5jdGlvbiBwKGUpe2lmKCJ2YWx1ZSI9PT1lLnByb3BlcnR5TmFtZSl7dmFyIHQ9
ZS5zcmNFbGVtZW50LnZhbHVlO3QhPT1OJiYoTj10LHIoZSkpfX1mdW5jdGlvbiBkKGUsdCxuKXty
ZXR1cm4gZT09PWIudG9wSW5wdXQ/bjp2b2lkIDB9ZnVuY3Rpb24gaChlLHQsbil7ZT09PWIudG9w
Rm9jdXM/KGMoKSxsKHQsbikpOmU9PT1iLnRvcEJsdXImJmMoKX1mdW5jdGlvbiBmKGUpe3JldHVy
biBlIT09Yi50b3BTZWxlY3Rpb25DaGFuZ2UmJmUhPT1iLnRvcEtleVVwJiZlIT09Yi50b3BLZXlE
b3dufHwhSXx8SS52YWx1ZT09PU4/dm9pZCAwOihOPUkudmFsdWUsXyl9ZnVuY3Rpb24gdihlKXty
ZXR1cm4iSU5QVVQiPT09ZS5ub2RlTmFtZSYmKCJjaGVja2JveCI9PT1lLnR5cGV8fCJyYWRpbyI9
PT1lLnR5cGUpfWZ1bmN0aW9uIG0oZSx0LG4pe3JldHVybiBlPT09Yi50b3BDbGljaz9uOnZvaWQg
MH12YXIgZz1lKCIuL0V2ZW50Q29uc3RhbnRzIikseT1lKCIuL0V2ZW50UGx1Z2luSHViIiksQz1l
KCIuL0V2ZW50UHJvcGFnYXRvcnMiKSxFPWUoIi4vRXhlY3V0aW9uRW52aXJvbm1lbnQiKSxEPWUo
Ii4vU3ludGhldGljRXZlbnQiKSxNPWUoIi4vaXNFdmVudFN1cHBvcnRlZCIpLFI9ZSgiLi9rZXlP
ZiIpLGI9Zy50b3BMZXZlbFR5cGVzLE89e2NoYW5nZTp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6
e2J1YmJsZWQ6Uih7b25DaGFuZ2U6bnVsbH0pLGNhcHR1cmVkOlIoe29uQ2hhbmdlQ2FwdHVyZTpu
dWxsfSl9fX0sST1udWxsLF89bnVsbCxOPW51bGwsUD1udWxsLFQ9ITE7RS5jYW5Vc2VET00mJihU
PU0oImNoYW5nZSIpJiYoISgiZG9jdW1lbnRNb2RlImluIGRvY3VtZW50KXx8ZG9jdW1lbnQuZG9j
dW1lbnRNb2RlPjgpKTt2YXIgUz0hMTtFLmNhblVzZURPTSYmKFM9TSgiaW5wdXQiKSYmKCEoImRv
Y3VtZW50TW9kZSJpbiBkb2N1bWVudCl8fGRvY3VtZW50LmRvY3VtZW50TW9kZT45KSk7dmFyIHg9
e2NvbG9yOiEwLGRhdGU6ITAsZGF0ZXRpbWU6ITAsImRhdGV0aW1lLWxvY2FsIjohMCxlbWFpbDoh
MCxtb250aDohMCxudW1iZXI6ITAscGFzc3dvcmQ6ITAscmFuZ2U6ITAsc2VhcmNoOiEwLHRlbDoh
MCx0ZXh0OiEwLHRpbWU6ITAsdXJsOiEwLHdlZWs6ITB9LEE9e2dldDpmdW5jdGlvbigpe3JldHVy
biBQLmdldC5jYWxsKHRoaXMpfSxzZXQ6ZnVuY3Rpb24oZSl7Tj0iIitlLFAuc2V0LmNhbGwodGhp
cyxlKX19LHc9e2V2ZW50VHlwZXM6TyxleHRyYWN0RXZlbnRzOmZ1bmN0aW9uKGUsdCxyLG8pe3Zh
ciBpLGw7aWYobih0KT9UP2k9YTpsPXM6dSh0KT9TP2k9ZDooaT1mLGw9aCk6dih0KSYmKGk9bSks
aSl7dmFyIGM9aShlLHQscik7aWYoYyl7dmFyIHA9RC5nZXRQb29sZWQoTy5jaGFuZ2UsYyxvKTty
ZXR1cm4gQy5hY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKHApLHB9fWwmJmwoZSx0LHIpfX07
dC5leHBvcnRzPXd9KCl9LHsiLi9FdmVudENvbnN0YW50cyI6MTMsIi4vRXZlbnRQbHVnaW5IdWIi
OjE1LCIuL0V2ZW50UHJvcGFnYXRvcnMiOjE4LCIuL0V4ZWN1dGlvbkVudmlyb25tZW50IjoxOSwi
Li9TeW50aGV0aWNFdmVudCI6NTAsIi4vaXNFdmVudFN1cHBvcnRlZCI6NzYsIi4va2V5T2YiOjc5
fV0sNjpbZnVuY3Rpb24oZSx0KXshZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIG49ZSgiLi9E
YW5nZXIiKSxyPWUoIi4vaW5zZXJ0Tm9kZUF0Iiksbz1lKCIuL2tleU9mIik7ZSgiLi90aHJvd0lm
Iik7dmFyIGk9byh7bW92ZUZyb206bnVsbH0pLGE9byh7aW5zZXJ0TWFya3VwOm51bGx9KSxzPW8o
e3JlbW92ZUF0Om51bGx9KSx1PWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuLHIsbyxhPTA7YTx0Lmxl
bmd0aDthKyspcj10W2FdLGkgaW4gcj8obj1ufHxbXSxvPXIubW92ZUZyb20sbltvXT1lLmNoaWxk
Tm9kZXNbb10pOnMgaW4gciYmKG49bnx8W10sbz1yLnJlbW92ZUF0LG5bb109ZS5jaGlsZE5vZGVz
W29dKTtyZXR1cm4gbn0sbD1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisr
KXt2YXIgcj10W25dO3ImJmUucmVtb3ZlQ2hpbGQodFtuXSl9fSxjPWZ1bmN0aW9uKGUsdCxvKXtm
b3IodmFyIHUsbCxjLHA9MDtwPHQubGVuZ3RoO3ArKylpZihjPXRbcF0saSBpbiBjKXU9b1tjLm1v
dmVGcm9tXSxsPWMuZmluYWxJbmRleCxyKGUsdSxsKTtlbHNlIGlmKHMgaW4gYyk7ZWxzZSBpZihh
IGluIGMpe2w9Yy5maW5hbEluZGV4O3ZhciBkPWMuaW5zZXJ0TWFya3VwO24uZGFuZ2Vyb3VzbHlJ
bnNlcnRNYXJrdXBBdChlLGQsbCl9fSxwPWZ1bmN0aW9uKGUsdCl7dmFyIG49dShlLHQpO24mJmwo
ZSxuKSxjKGUsdCxuKX0sZD17ZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXA6bi5kYW5n
ZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cCxtYW5hZ2VDaGlsZHJlbjpwfTt0LmV4cG9ydHM9
ZH0oKX0seyIuL0RhbmdlciI6OSwiLi9pbnNlcnROb2RlQXQiOjc0LCIuL2tleU9mIjo3OSwiLi90
aHJvd0lmIjo4Nn1dLDc6W2Z1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO3ZhciBuPWUoIi4vaW52
YXJpYW50Iikscj17TVVTVF9VU0VfQVRUUklCVVRFOjEsTVVTVF9VU0VfUFJPUEVSVFk6MixIQVNf
Qk9PTEVBTl9WQUxVRTo0LEhBU19TSURFX0VGRkVDVFM6OCxpbmplY3RET01Qcm9wZXJ0eUNvbmZp
ZzpmdW5jdGlvbihlKXt2YXIgdD1lLlByb3BlcnRpZXN8fHt9LG89ZS5ET01BdHRyaWJ1dGVOYW1l
c3x8e30sYT1lLkRPTVByb3BlcnR5TmFtZXN8fHt9LHM9ZS5ET01NdXRhdGlvbk1ldGhvZHN8fHt9
O2UuaXNDdXN0b21BdHRyaWJ1dGUmJmkuX2lzQ3VzdG9tQXR0cmlidXRlRnVuY3Rpb25zLnB1c2go
ZS5pc0N1c3RvbUF0dHJpYnV0ZSk7Zm9yKHZhciB1IGluIHQpe24oIWkuaXNTdGFuZGFyZE5hbWVb
dV0pLGkuaXNTdGFuZGFyZE5hbWVbdV09ITAsaS5nZXRBdHRyaWJ1dGVOYW1lW3VdPW9bdV18fHUu
dG9Mb3dlckNhc2UoKSxpLmdldFByb3BlcnR5TmFtZVt1XT1hW3VdfHx1O3ZhciBsPXNbdV07bCYm
KGkuZ2V0TXV0YXRpb25NZXRob2RbdV09bCk7dmFyIGM9dFt1XTtpLm11c3RVc2VBdHRyaWJ1dGVb
dV09YyZyLk1VU1RfVVNFX0FUVFJJQlVURSxpLm11c3RVc2VQcm9wZXJ0eVt1XT1jJnIuTVVTVF9V
U0VfUFJPUEVSVFksaS5oYXNCb29sZWFuVmFsdWVbdV09YyZyLkhBU19CT09MRUFOX1ZBTFVFLGku
aGFzU2lkZUVmZmVjdHNbdV09YyZyLkhBU19TSURFX0VGRkVDVFMsbighaS5tdXN0VXNlQXR0cmli
dXRlW3VdfHwhaS5tdXN0VXNlUHJvcGVydHlbdV0pLG4oaS5tdXN0VXNlUHJvcGVydHlbdV18fCFp
Lmhhc1NpZGVFZmZlY3RzW3VdKX19fSxvPXt9LGk9e2lzU3RhbmRhcmROYW1lOnt9LGdldEF0dHJp
YnV0ZU5hbWU6e30sZ2V0UHJvcGVydHlOYW1lOnt9LGdldE11dGF0aW9uTWV0aG9kOnt9LG11c3RV
c2VBdHRyaWJ1dGU6e30sbXVzdFVzZVByb3BlcnR5Ont9LGhhc0Jvb2xlYW5WYWx1ZTp7fSxoYXNT
aWRlRWZmZWN0czp7fSxfaXNDdXN0b21BdHRyaWJ1dGVGdW5jdGlvbnM6W10saXNDdXN0b21BdHRy
aWJ1dGU6ZnVuY3Rpb24oZSl7cmV0dXJuIGkuX2lzQ3VzdG9tQXR0cmlidXRlRnVuY3Rpb25zLnNv
bWUoZnVuY3Rpb24odCl7cmV0dXJuIHQuY2FsbChudWxsLGUpfSl9LGdldERlZmF1bHRWYWx1ZUZv
clByb3BlcnR5OmZ1bmN0aW9uKGUsdCl7dmFyIG4scj1vW2VdO3JldHVybiByfHwob1tlXT1yPXt9
KSx0IGluIHJ8fChuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoZSksclt0XT1uW3RdKSxyW3RdfSxp
bmplY3Rpb246cn07dC5leHBvcnRzPWl9LHsiLi9pbnZhcmlhbnQiOjc1fV0sODpbZnVuY3Rpb24o
ZSx0KXsidXNlIHN0cmljdCI7dmFyIG49ZSgiLi9ET01Qcm9wZXJ0eSIpLHI9ZSgiLi9lc2NhcGVU
ZXh0Rm9yQnJvd3NlciIpLG89ZSgiLi9tZW1vaXplU3RyaW5nT25seSIpLGk9byhmdW5jdGlvbihl
KXtyZXR1cm4gcihlKSsnPSInfSksYT17Y3JlYXRlTWFya3VwRm9yUHJvcGVydHk6ZnVuY3Rpb24o
ZSx0KXtpZihuLmlzU3RhbmRhcmROYW1lW2VdKXtpZihudWxsPT10fHxuLmhhc0Jvb2xlYW5WYWx1
ZVtlXSYmIXQpcmV0dXJuIiI7dmFyIG89bi5nZXRBdHRyaWJ1dGVOYW1lW2VdO3JldHVybiBpKG8p
K3IodCkrJyInfXJldHVybiBuLmlzQ3VzdG9tQXR0cmlidXRlKGUpP251bGw9PXQ/IiI6aShlKSty
KHQpKyciJzpudWxsfSxzZXRWYWx1ZUZvclByb3BlcnR5OmZ1bmN0aW9uKGUsdCxyKXtpZihuLmlz
U3RhbmRhcmROYW1lW3RdKXt2YXIgbz1uLmdldE11dGF0aW9uTWV0aG9kW3RdO2lmKG8pbyhlLHIp
O2Vsc2UgaWYobi5tdXN0VXNlQXR0cmlidXRlW3RdKW4uaGFzQm9vbGVhblZhbHVlW3RdJiYhcj9l
LnJlbW92ZUF0dHJpYnV0ZShuLmdldEF0dHJpYnV0ZU5hbWVbdF0pOmUuc2V0QXR0cmlidXRlKG4u
Z2V0QXR0cmlidXRlTmFtZVt0XSxyKTtlbHNle3ZhciBpPW4uZ2V0UHJvcGVydHlOYW1lW3RdO24u
aGFzU2lkZUVmZmVjdHNbdF0mJmVbaV09PT1yfHwoZVtpXT1yKX19ZWxzZSBuLmlzQ3VzdG9tQXR0
cmlidXRlKHQpJiZlLnNldEF0dHJpYnV0ZSh0LHIpfSxkZWxldGVWYWx1ZUZvclByb3BlcnR5OmZ1
bmN0aW9uKGUsdCl7aWYobi5pc1N0YW5kYXJkTmFtZVt0XSl7dmFyIHI9bi5nZXRNdXRhdGlvbk1l
dGhvZFt0XTtpZihyKXIoZSx2b2lkIDApO2Vsc2UgaWYobi5tdXN0VXNlQXR0cmlidXRlW3RdKWUu
cmVtb3ZlQXR0cmlidXRlKG4uZ2V0QXR0cmlidXRlTmFtZVt0XSk7ZWxzZXt2YXIgbz1uLmdldFBy
b3BlcnR5TmFtZVt0XTtlW29dPW4uZ2V0RGVmYXVsdFZhbHVlRm9yUHJvcGVydHkoZS5ub2RlTmFt
ZSx0KX19ZWxzZSBuLmlzQ3VzdG9tQXR0cmlidXRlKHQpJiZlLnJlbW92ZUF0dHJpYnV0ZSh0KX19
O3QuZXhwb3J0cz1hfSx7Ii4vRE9NUHJvcGVydHkiOjcsIi4vZXNjYXBlVGV4dEZvckJyb3dzZXIi
OjY1LCIuL21lbW9pemVTdHJpbmdPbmx5Ijo4MH1dLDk6W2Z1bmN0aW9uKGUsdCl7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIG4oZSl7dmFyIHQ9dSxuPWUuc3Vic3RyaW5nKDEsZS5pbmRleE9mKCIgIikp
LHI9bFtuLnRvTG93ZXJDYXNlKCldfHxjO2lmKHIpe3QuaW5uZXJIVE1MPXJbMV0rZStyWzJdO2Zv
cih2YXIgbz1yWzBdO28tLTspdD10Lmxhc3RDaGlsZH1lbHNlIHQuaW5uZXJIVE1MPWU7cmV0dXJu
IHQuY2hpbGROb2Rlc31mdW5jdGlvbiByKGUsdCxuKXtyZXR1cm4gbj9uLm5leHRTaWJsaW5nP2Uu
aW5zZXJ0QmVmb3JlKHQsbi5uZXh0U2libGluZyk6ZS5hcHBlbmRDaGlsZCh0KTplLmluc2VydEJl
Zm9yZSh0LGUuZmlyc3RDaGlsZCl9ZnVuY3Rpb24gbyhlLHQsbil7Zm9yKHZhciBvLGk9dC5sZW5n
dGgsYT0wO2k+YTthKyspbz1yKGUsdFswXSxvfHxuKX1mdW5jdGlvbiBpKGUsdCxyKXt2YXIgaT1u
KHQpLGE9cj9lLmNoaWxkTm9kZXNbci0xXTpudWxsO28oZSxpLGEpfWZ1bmN0aW9uIGEoZSx0KXt2
YXIgcj1lLnBhcmVudE5vZGUsbz1uKHQpO3IucmVwbGFjZUNoaWxkKG9bMF0sZSl9dmFyIHM9ZSgi
Li9FeGVjdXRpb25FbnZpcm9ubWVudCIpO2UoIi4vdGhyb3dJZiIpO3ZhciB1PXMuY2FuVXNlRE9N
P2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOm51bGwsbD17b3B0aW9uOlsxLCc8c2VsZWN0
IG11bHRpcGxlPSJ0cnVlIj4nLCI8L3NlbGVjdD4iXSxsZWdlbmQ6WzEsIjxmaWVsZHNldD4iLCI8
L2ZpZWxkc2V0PiJdLGFyZWE6WzEsIjxtYXA+IiwiPC9tYXA+Il0scGFyYW06WzEsIjxvYmplY3Q+
IiwiPC9vYmplY3Q+Il0sdGhlYWQ6WzEsIjx0YWJsZT4iLCI8L3RhYmxlPiJdLHRyOlsyLCI8dGFi
bGU+PHRib2R5PiIsIjwvdGJvZHk+PC90YWJsZT4iXSxjb2w6WzIsIjx0YWJsZT48dGJvZHk+PC90
Ym9keT48Y29sZ3JvdXA+IiwiPC9jb2xncm91cD48L3RhYmxlPiJdLHRkOlszLCI8dGFibGU+PHRi
b2R5Pjx0cj4iLCI8L3RyPjwvdGJvZHk+PC90YWJsZT4iXX07bC5vcHRncm91cD1sLm9wdGlvbixs
LnRib2R5PWwudGhlYWQsbC50Zm9vdD1sLnRoZWFkLGwuY29sZ3JvdXA9bC50aGVhZCxsLmNhcHRp
b249bC50aGVhZCxsLnRoPWwudGQ7dmFyIGM9WzEsIj88ZGl2PiIsIjwvZGl2PiJdO2lmKHUpe2Zv
cih2YXIgcCBpbiBsKWwuaGFzT3duUHJvcGVydHkocCkmJih1LmlubmVySFRNTD0iPCIrcCsiPjwv
IitwKyI+Iix1LmZpcnN0Q2hpbGQmJihsW3BdPW51bGwpKTt1LmlubmVySFRNTD0iPGxpbmsgLz4i
LHUuZmlyc3RDaGlsZCYmKGM9bnVsbCl9dmFyIGQ9e2Rhbmdlcm91c2x5SW5zZXJ0TWFya3VwQXQ6
aSxkYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cDphfTt0LmV4cG9ydHM9ZH0seyIuL0V4
ZWN1dGlvbkVudmlyb25tZW50IjoxOSwiLi90aHJvd0lmIjo4Nn1dLDEwOltmdW5jdGlvbihlLHQp
eyJ1c2Ugc3RyaWN0Ijt2YXIgbj1lKCIuL0RPTVByb3BlcnR5Iikscj1uLmluamVjdGlvbi5NVVNU
X1VTRV9BVFRSSUJVVEUsbz1uLmluamVjdGlvbi5NVVNUX1VTRV9QUk9QRVJUWSxpPW4uaW5qZWN0
aW9uLkhBU19CT09MRUFOX1ZBTFVFLGE9bi5pbmplY3Rpb24uSEFTX1NJREVfRUZGRUNUUyxzPXtp
c0N1c3RvbUF0dHJpYnV0ZTpSZWdFeHAucHJvdG90eXBlLnRlc3QuYmluZCgvXihkYXRhfGFyaWEp
LVthLXpfXVthLXpcZF8uXC1dKiQvKSxQcm9wZXJ0aWVzOnthY2Nlc3NLZXk6bnVsbCxhY2NlcHQ6
bnVsbCxhY3Rpb246bnVsbCxhamF4aWZ5OnIsYWxsb3dGdWxsU2NyZWVuOnJ8aSxhbHQ6bnVsbCxh
dXRvQ29tcGxldGU6bnVsbCxhdXRvRm9jdXM6aSxhdXRvUGxheTppLGNlbGxQYWRkaW5nOm51bGws
Y2VsbFNwYWNpbmc6bnVsbCxjaGVja2VkOm98aSxjbGFzc05hbWU6byxjb2xTcGFuOm51bGwsY29u
dGVudEVkaXRhYmxlOm51bGwsY29udGV4dE1lbnU6cixjb250cm9sczpvfGksZGF0YTpudWxsLGRh
dGVUaW1lOnIsZGlyOm51bGwsZGlzYWJsZWQ6b3xpLGRyYWdnYWJsZTpudWxsLGVuY1R5cGU6bnVs
bCxoZWlnaHQ6cixoaWRkZW46cnxpLGhyZWY6bnVsbCxodG1sRm9yOm51bGwsaWNvbjpudWxsLGlk
Om8sbGFiZWw6bnVsbCxsYW5nOm51bGwsbGlzdDpudWxsLG1heDpudWxsLG1heExlbmd0aDpyLG1l
dGhvZDpudWxsLG1pbjpudWxsLG11bHRpcGxlOm98aSxuYW1lOm51bGwscGF0dGVybjpudWxsLHBv
c3RlcjpudWxsLHByZWxvYWQ6bnVsbCxwbGFjZWhvbGRlcjpudWxsLHJhZGlvR3JvdXA6bnVsbCxy
ZWw6bnVsbCxyZWFkT25seTpvfGkscmVxdWlyZWQ6aSxyb2xlOnIsc2Nyb2xsTGVmdDpvLHNjcm9s
bFRvcDpvLHNlbGVjdGVkOm98aSxzaXplOm51bGwsc3BlbGxDaGVjazpudWxsLHNyYzpudWxsLHN0
ZXA6bnVsbCxzdHlsZTpudWxsLHRhYkluZGV4Om51bGwsdGFyZ2V0Om51bGwsdGl0bGU6bnVsbCx0
eXBlOm51bGwsdmFsdWU6b3xhLHdpZHRoOnIsd21vZGU6cixjeDpvLGN5Om8sZDpvLGZpbGw6byxm
eDpvLGZ5Om8scG9pbnRzOm8scjpvLHN0cm9rZTpvLHN0cm9rZUxpbmVjYXA6byxzdHJva2VXaWR0
aDpvLHRyYW5zZm9ybTpvLHg6byx4MTpvLHgyOm8sdmVyc2lvbjpvLHZpZXdCb3g6byx5Om8seTE6
byx5MjpvLHNwcmVhZE1ldGhvZDpvLG9mZnNldDpvLHN0b3BDb2xvcjpvLHN0b3BPcGFjaXR5Om8s
Z3JhZGllbnRVbml0czpvLGdyYWRpZW50VHJhbnNmb3JtOm99LERPTUF0dHJpYnV0ZU5hbWVzOntj
bGFzc05hbWU6ImNsYXNzIixodG1sRm9yOiJmb3IiLHN0cm9rZUxpbmVjYXA6InN0cm9rZS1saW5l
Y2FwIixzdHJva2VXaWR0aDoic3Ryb2tlLXdpZHRoIixzdG9wQ29sb3I6InN0b3AtY29sb3IiLHN0
b3BPcGFjaXR5OiJzdG9wLW9wYWNpdHkifSxET01Qcm9wZXJ0eU5hbWVzOnthdXRvQ29tcGxldGU6
ImF1dG9jb21wbGV0ZSIsYXV0b0ZvY3VzOiJhdXRvZm9jdXMiLGF1dG9QbGF5OiJhdXRvcGxheSIs
ZW5jVHlwZToiZW5jdHlwZSIscmFkaW9Hcm91cDoicmFkaW9ncm91cCIsc3BlbGxDaGVjazoic3Bl
bGxjaGVjayJ9LERPTU11dGF0aW9uTWV0aG9kczp7Y2xhc3NOYW1lOmZ1bmN0aW9uKGUsdCl7ZS5j
bGFzc05hbWU9dHx8IiJ9fX07dC5leHBvcnRzPXN9LHsiLi9ET01Qcm9wZXJ0eSI6N31dLDExOltm
dW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1lKCIuL2tleU9mIikscj1bbih7UmVzcG9u
ZGVyRXZlbnRQbHVnaW46bnVsbH0pLG4oe1NpbXBsZUV2ZW50UGx1Z2luOm51bGx9KSxuKHtUYXBF
dmVudFBsdWdpbjpudWxsfSksbih7RW50ZXJMZWF2ZUV2ZW50UGx1Z2luOm51bGx9KSxuKHtDaGFu
Z2VFdmVudFBsdWdpbjpudWxsfSksbih7QW5hbHl0aWNzRXZlbnRQbHVnaW46bnVsbH0pXTt0LmV4
cG9ydHM9cn0seyIuL2tleU9mIjo3OX1dLDEyOltmdW5jdGlvbihlLHQpeyFmdW5jdGlvbigpeyJ1
c2Ugc3RyaWN0Ijt2YXIgbj1lKCIuL0V2ZW50Q29uc3RhbnRzIikscj1lKCIuL0V2ZW50UHJvcGFn
YXRvcnMiKSxvPWUoIi4vRXhlY3V0aW9uRW52aXJvbm1lbnQiKSxpPWUoIi4vUmVhY3RJbnN0YW5j
ZUhhbmRsZXMiKSxhPWUoIi4vU3ludGhldGljTW91c2VFdmVudCIpLHM9ZSgiLi9SZWFjdElEIiks
dT1lKCIuL2tleU9mIiksbD1uLnRvcExldmVsVHlwZXMsYz1pLmdldEZpcnN0UmVhY3RET00scD17
bW91c2VFbnRlcjp7cmVnaXN0cmF0aW9uTmFtZTp1KHtvbk1vdXNlRW50ZXI6bnVsbH0pfSxtb3Vz
ZUxlYXZlOntyZWdpc3RyYXRpb25OYW1lOnUoe29uTW91c2VMZWF2ZTpudWxsfSl9fSxkPXtldmVu
dFR5cGVzOnAsZXh0cmFjdEV2ZW50czpmdW5jdGlvbihlLHQsbixpKXtpZihlPT09bC50b3BNb3Vz
ZU92ZXImJihpLnJlbGF0ZWRUYXJnZXR8fGkuZnJvbUVsZW1lbnQpKXJldHVybiBudWxsO2lmKGUh
PT1sLnRvcE1vdXNlT3V0JiZlIT09bC50b3BNb3VzZU92ZXIpcmV0dXJuIG51bGw7dmFyIHUsZDtp
ZihlPT09bC50b3BNb3VzZU91dD8odT10LGQ9YyhpLnJlbGF0ZWRUYXJnZXR8fGkudG9FbGVtZW50
KXx8by5nbG9iYWwpOih1PW8uZ2xvYmFsLGQ9dCksdT09PWQpcmV0dXJuIG51bGw7dmFyIGg9dT9z
LmdldElEKHUpOiIiLGY9ZD9zLmdldElEKGQpOiIiLHY9YS5nZXRQb29sZWQocC5tb3VzZUxlYXZl
LGgsaSksbT1hLmdldFBvb2xlZChwLm1vdXNlRW50ZXIsZixpKTtyZXR1cm4gci5hY2N1bXVsYXRl
RW50ZXJMZWF2ZURpc3BhdGNoZXModixtLGgsZiksW3YsbV19fTt0LmV4cG9ydHM9ZH0oKX0seyIu
L0V2ZW50Q29uc3RhbnRzIjoxMywiLi9FdmVudFByb3BhZ2F0b3JzIjoxOCwiLi9FeGVjdXRpb25F
bnZpcm9ubWVudCI6MTksIi4vUmVhY3RJRCI6MzUsIi4vUmVhY3RJbnN0YW5jZUhhbmRsZXMiOjM3
LCIuL1N5bnRoZXRpY01vdXNlRXZlbnQiOjUzLCIuL2tleU9mIjo3OX1dLDEzOltmdW5jdGlvbihl
LHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1lKCIuL2tleU1pcnJvciIpLHI9bih7YnViYmxlZDpudWxs
LGNhcHR1cmVkOm51bGx9KSxvPW4oe3RvcEJsdXI6bnVsbCx0b3BDaGFuZ2U6bnVsbCx0b3BDbGlj
azpudWxsLHRvcERPTUNoYXJhY3RlckRhdGFNb2RpZmllZDpudWxsLHRvcERvdWJsZUNsaWNrOm51
bGwsdG9wRHJhZzpudWxsLHRvcERyYWdFbmQ6bnVsbCx0b3BEcmFnRW50ZXI6bnVsbCx0b3BEcmFn
RXhpdDpudWxsLHRvcERyYWdMZWF2ZTpudWxsLHRvcERyYWdPdmVyOm51bGwsdG9wRHJhZ1N0YXJ0
Om51bGwsdG9wRHJvcDpudWxsLHRvcEZvY3VzOm51bGwsdG9wSW5wdXQ6bnVsbCx0b3BLZXlEb3du
Om51bGwsdG9wS2V5UHJlc3M6bnVsbCx0b3BLZXlVcDpudWxsLHRvcE1vdXNlRG93bjpudWxsLHRv
cE1vdXNlTW92ZTpudWxsLHRvcE1vdXNlT3V0Om51bGwsdG9wTW91c2VPdmVyOm51bGwsdG9wTW91
c2VVcDpudWxsLHRvcFNjcm9sbDpudWxsLHRvcFNlbGVjdGlvbkNoYW5nZTpudWxsLHRvcFN1Ym1p
dDpudWxsLHRvcFRvdWNoQ2FuY2VsOm51bGwsdG9wVG91Y2hFbmQ6bnVsbCx0b3BUb3VjaE1vdmU6
bnVsbCx0b3BUb3VjaFN0YXJ0Om51bGwsdG9wV2hlZWw6bnVsbH0pLGk9e3RvcExldmVsVHlwZXM6
byxQcm9wYWdhdGlvblBoYXNlczpyfTt0LmV4cG9ydHM9aX0seyIuL2tleU1pcnJvciI6Nzh9XSwx
NDpbZnVuY3Rpb24oZSx0KXt2YXIgbj17bGlzdGVuOmZ1bmN0aW9uKGUsdCxuKXtlLmFkZEV2ZW50
TGlzdGVuZXI/ZS5hZGRFdmVudExpc3RlbmVyKHQsbiwhMSk6ZS5hdHRhY2hFdmVudCYmZS5hdHRh
Y2hFdmVudCgib24iK3Qsbil9LGNhcHR1cmU6ZnVuY3Rpb24oZSx0LG4pe2UuYWRkRXZlbnRMaXN0
ZW5lciYmZS5hZGRFdmVudExpc3RlbmVyKHQsbiwhMCl9fTt0LmV4cG9ydHM9bn0se31dLDE1Oltm
dW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1lKCIuL0NhbGxiYWNrUmVnaXN0cnkiKSxy
PWUoIi4vRXZlbnRQbHVnaW5SZWdpc3RyeSIpLG89ZSgiLi9FdmVudFBsdWdpblV0aWxzIiksaT1l
KCIuL0V2ZW50UHJvcGFnYXRvcnMiKSxhPWUoIi4vRXhlY3V0aW9uRW52aXJvbm1lbnQiKSxzPWUo
Ii4vYWNjdW11bGF0ZSIpLHU9ZSgiLi9mb3JFYWNoQWNjdW11bGF0ZWQiKSxsPWUoIi4vaW52YXJp
YW50IiksYz1udWxsLHA9ZnVuY3Rpb24oZSl7aWYoZSl7dmFyIHQ9by5leGVjdXRlRGlzcGF0Y2gs
bj1yLmdldFBsdWdpbk1vZHVsZUZvckV2ZW50KGUpO24mJm4uZXhlY3V0ZURpc3BhdGNoJiYodD1u
LmV4ZWN1dGVEaXNwYXRjaCksby5leGVjdXRlRGlzcGF0Y2hlc0luT3JkZXIoZSx0KSxlLmlzUGVy
c2lzdGVudCgpfHxlLmNvbnN0cnVjdG9yLnJlbGVhc2UoZSl9fSxkPXtpbmplY3Rpb246e2luamVj
dEluc3RhbmNlSGFuZGxlOmkuaW5qZWN0aW9uLmluamVjdEluc3RhbmNlSGFuZGxlLGluamVjdEV2
ZW50UGx1Z2luT3JkZXI6ci5pbmplY3RFdmVudFBsdWdpbk9yZGVyLGluamVjdEV2ZW50UGx1Z2lu
c0J5TmFtZTpyLmluamVjdEV2ZW50UGx1Z2luc0J5TmFtZX0scmVnaXN0cmF0aW9uTmFtZXM6ci5y
ZWdpc3RyYXRpb25OYW1lcyxwdXRMaXN0ZW5lcjpuLnB1dExpc3RlbmVyLGdldExpc3RlbmVyOm4u
Z2V0TGlzdGVuZXIsZGVsZXRlTGlzdGVuZXI6bi5kZWxldGVMaXN0ZW5lcixkZWxldGVBbGxMaXN0
ZW5lcnM6bi5kZWxldGVBbGxMaXN0ZW5lcnMsZXh0cmFjdEV2ZW50czpmdW5jdGlvbihlLHQsbixv
KXtmb3IodmFyIGksYT1yLnBsdWdpbnMsdT0wLGw9YS5sZW5ndGg7bD51O3UrKyl7dmFyIGM9YVt1
XTtpZihjKXt2YXIgcD1jLmV4dHJhY3RFdmVudHMoZSx0LG4sbyk7cCYmKGk9cyhpLHApKX19cmV0
dXJuIGl9LGVucXVldWVFdmVudHM6ZnVuY3Rpb24oZSl7ZSYmKGM9cyhjLGUpKX0scHJvY2Vzc0V2
ZW50UXVldWU6ZnVuY3Rpb24oKXt2YXIgZT1jO2M9bnVsbCx1KGUscCksbCghYyl9fTthLmNhblVz
ZURPTSYmKHdpbmRvdy5FdmVudFBsdWdpbkh1Yj1kKSx0LmV4cG9ydHM9ZH0seyIuL0NhbGxiYWNr
UmVnaXN0cnkiOjQsIi4vRXZlbnRQbHVnaW5SZWdpc3RyeSI6MTYsIi4vRXZlbnRQbHVnaW5VdGls
cyI6MTcsIi4vRXZlbnRQcm9wYWdhdG9ycyI6MTgsIi4vRXhlY3V0aW9uRW52aXJvbm1lbnQiOjE5
LCIuL2FjY3VtdWxhdGUiOjYwLCIuL2ZvckVhY2hBY2N1bXVsYXRlZCI6NjgsIi4vaW52YXJpYW50
Ijo3NX1dLDE2OltmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKCl7aWYoYSlm
b3IodmFyIGUgaW4gcyl7dmFyIHQ9c1tlXSxuPWEuaW5kZXhPZihlKTtpZihpKG4+LTEpLCF1LnBs
dWdpbnNbbl0pe2kodC5leHRyYWN0RXZlbnRzKSx1LnBsdWdpbnNbbl09dDt2YXIgbz10LmV2ZW50
VHlwZXM7Zm9yKHZhciBsIGluIG8paShyKG9bbF0sdCkpfX19ZnVuY3Rpb24gcihlLHQpe3ZhciBu
PWUucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM7aWYobil7Zm9yKHZhciByIGluIG4paWYobi5oYXNP
d25Qcm9wZXJ0eShyKSl7dmFyIGk9bltyXTtvKGksdCl9cmV0dXJuITB9cmV0dXJuIGUucmVnaXN0
cmF0aW9uTmFtZT8obyhlLnJlZ2lzdHJhdGlvbk5hbWUsdCksITApOiExfWZ1bmN0aW9uIG8oZSx0
KXtpKCF1LnJlZ2lzdHJhdGlvbk5hbWVzW2VdKSx1LnJlZ2lzdHJhdGlvbk5hbWVzW2VdPXQsdS5y
ZWdpc3RyYXRpb25OYW1lc0tleXMucHVzaChlKX12YXIgaT1lKCIuL2ludmFyaWFudCIpLGE9bnVs
bCxzPXt9LHU9e3BsdWdpbnM6W10scmVnaXN0cmF0aW9uTmFtZXM6e30scmVnaXN0cmF0aW9uTmFt
ZXNLZXlzOltdLGluamVjdEV2ZW50UGx1Z2luT3JkZXI6ZnVuY3Rpb24oZSl7aSghYSksYT1BcnJh
eS5wcm90b3R5cGUuc2xpY2UuY2FsbChlKSxuKCl9LGluamVjdEV2ZW50UGx1Z2luc0J5TmFtZTpm
dW5jdGlvbihlKXt2YXIgdD0hMTtmb3IodmFyIHIgaW4gZSlpZihlLmhhc093blByb3BlcnR5KHIp
KXt2YXIgbz1lW3JdO3Nbcl0hPT1vJiYoaSghc1tyXSksc1tyXT1vLHQ9ITApfXQmJm4oKX0sZ2V0
UGx1Z2luTW9kdWxlRm9yRXZlbnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5kaXNwYXRjaENvbmZpZztp
Zih0LnJlZ2lzdHJhdGlvbk5hbWUpcmV0dXJuIHUucmVnaXN0cmF0aW9uTmFtZXNbdC5yZWdpc3Ry
YXRpb25OYW1lXXx8bnVsbDtmb3IodmFyIG4gaW4gdC5waGFzZWRSZWdpc3RyYXRpb25OYW1lcylp
Zih0LnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzLmhhc093blByb3BlcnR5KG4pKXt2YXIgcj11LnJl
Z2lzdHJhdGlvbk5hbWVzW3QucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXNbbl1dO2lmKHIpcmV0dXJu
IHJ9cmV0dXJuIG51bGx9LF9yZXNldEV2ZW50UGx1Z2luczpmdW5jdGlvbigpe2E9bnVsbDtmb3Io
dmFyIGUgaW4gcylzLmhhc093blByb3BlcnR5KGUpJiZkZWxldGUgc1tlXTt1LnBsdWdpbnMubGVu
Z3RoPTA7dmFyIHQ9dS5yZWdpc3RyYXRpb25OYW1lcztmb3IodmFyIG4gaW4gdCl0Lmhhc093blBy
b3BlcnR5KG4pJiZkZWxldGUgdFtuXTt1LnJlZ2lzdHJhdGlvbk5hbWVzS2V5cy5sZW5ndGg9MH19
O3QuZXhwb3J0cz11fSx7Ii4vaW52YXJpYW50Ijo3NX1dLDE3OltmdW5jdGlvbihlLHQpeyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiBuKGUpe3JldHVybiBlPT09aC50b3BNb3VzZVVwfHxlPT09aC50b3BU
b3VjaEVuZHx8ZT09PWgudG9wVG91Y2hDYW5jZWx9ZnVuY3Rpb24gcihlKXtyZXR1cm4gZT09PWgu
dG9wTW91c2VNb3ZlfHxlPT09aC50b3BUb3VjaE1vdmV9ZnVuY3Rpb24gbyhlKXtyZXR1cm4gZT09
PWgudG9wTW91c2VEb3dufHxlPT09aC50b3BUb3VjaFN0YXJ0fWZ1bmN0aW9uIGkoZSx0KXt2YXIg
bj1lLl9kaXNwYXRjaExpc3RlbmVycyxyPWUuX2Rpc3BhdGNoSURzO2lmKEFycmF5LmlzQXJyYXko
bikpZm9yKHZhciBvPTA7bzxuLmxlbmd0aCYmIWUuaXNQcm9wYWdhdGlvblN0b3BwZWQoKTtvKysp
dChlLG5bb10scltvXSk7ZWxzZSBuJiZ0KGUsbixyKX1mdW5jdGlvbiBhKGUsdCxuKXt0KGUsbil9
ZnVuY3Rpb24gcyhlLHQpe2koZSx0KSxlLl9kaXNwYXRjaExpc3RlbmVycz1udWxsLGUuX2Rpc3Bh
dGNoSURzPW51bGx9ZnVuY3Rpb24gdShlKXt2YXIgdD1lLl9kaXNwYXRjaExpc3RlbmVycyxuPWUu
X2Rpc3BhdGNoSURzO2lmKEFycmF5LmlzQXJyYXkodCkpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGgm
JiFlLmlzUHJvcGFnYXRpb25TdG9wcGVkKCk7cisrKWlmKHRbcl0oZSxuW3JdKSlyZXR1cm4gblty
XX1lbHNlIGlmKHQmJnQoZSxuKSlyZXR1cm4gbjtyZXR1cm4gbnVsbH1mdW5jdGlvbiBsKGUpe3Zh
ciB0PWUuX2Rpc3BhdGNoTGlzdGVuZXJzLG49ZS5fZGlzcGF0Y2hJRHM7ZCghQXJyYXkuaXNBcnJh
eSh0KSk7dmFyIHI9dD90KGUsbik6bnVsbDtyZXR1cm4gZS5fZGlzcGF0Y2hMaXN0ZW5lcnM9bnVs
bCxlLl9kaXNwYXRjaElEcz1udWxsLHJ9ZnVuY3Rpb24gYyhlKXtyZXR1cm4hIWUuX2Rpc3BhdGNo
TGlzdGVuZXJzfXZhciBwPWUoIi4vRXZlbnRDb25zdGFudHMiKSxkPWUoIi4vaW52YXJpYW50Iiks
aD1wLnRvcExldmVsVHlwZXMsZj17aXNFbmRpc2g6bixpc01vdmVpc2g6cixpc1N0YXJ0aXNoOm8s
ZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyOnMsZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyU3RvcEF0
VHJ1ZTp1LGV4ZWN1dGVEaXJlY3REaXNwYXRjaDpsLGhhc0Rpc3BhdGNoZXM6YyxleGVjdXRlRGlz
cGF0Y2g6YX07dC5leHBvcnRzPWZ9LHsiLi9FdmVudENvbnN0YW50cyI6MTMsIi4vaW52YXJpYW50
Ijo3NX1dLDE4OltmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUsdCxuKXt2
YXIgcj10LmRpc3BhdGNoQ29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzW25dO3JldHVybiBm
KGUscil9ZnVuY3Rpb24gcihlLHQscil7dmFyIG89dD92LmJ1YmJsZWQ6di5jYXB0dXJlZCxpPW4o
ZSxyLG8pO2kmJihyLl9kaXNwYXRjaExpc3RlbmVycz1kKHIuX2Rpc3BhdGNoTGlzdGVuZXJzLGkp
LHIuX2Rpc3BhdGNoSURzPWQoci5fZGlzcGF0Y2hJRHMsZSkpfWZ1bmN0aW9uIG8oZSl7ZSYmZS5k
aXNwYXRjaENvbmZpZy5waGFzZWRSZWdpc3RyYXRpb25OYW1lcyYmbS5JbnN0YW5jZUhhbmRsZS50
cmF2ZXJzZVR3b1BoYXNlKGUuZGlzcGF0Y2hNYXJrZXIscixlKX1mdW5jdGlvbiBpKGUsdCxuKXtp
ZihuJiZuLmRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUpe3ZhciByPW4uZGlzcGF0Y2hD
b25maWcucmVnaXN0cmF0aW9uTmFtZSxvPWYoZSxyKTtvJiYobi5fZGlzcGF0Y2hMaXN0ZW5lcnM9
ZChuLl9kaXNwYXRjaExpc3RlbmVycyxvKSxuLl9kaXNwYXRjaElEcz1kKG4uX2Rpc3BhdGNoSURz
LGUpKX19ZnVuY3Rpb24gYShlKXtlJiZlLmRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUm
JmkoZS5kaXNwYXRjaE1hcmtlcixudWxsLGUpfWZ1bmN0aW9uIHMoZSl7aChlLG8pfWZ1bmN0aW9u
IHUoZSx0LG4scil7bS5JbnN0YW5jZUhhbmRsZS50cmF2ZXJzZUVudGVyTGVhdmUobixyLGksZSx0
KX1mdW5jdGlvbiBsKGUpe2goZSxhKX12YXIgYz1lKCIuL0NhbGxiYWNrUmVnaXN0cnkiKSxwPWUo
Ii4vRXZlbnRDb25zdGFudHMiKSxkPWUoIi4vYWNjdW11bGF0ZSIpLGg9ZSgiLi9mb3JFYWNoQWNj
dW11bGF0ZWQiKSxmPWMuZ2V0TGlzdGVuZXIsdj1wLlByb3BhZ2F0aW9uUGhhc2VzLG09e0luc3Rh
bmNlSGFuZGxlOm51bGwsaW5qZWN0SW5zdGFuY2VIYW5kbGU6ZnVuY3Rpb24oZSl7bS5JbnN0YW5j
ZUhhbmRsZT1lfSx2YWxpZGF0ZTpmdW5jdGlvbigpe3ZhciBlPSFtLkluc3RhbmNlSGFuZGxlfHwh
bS5JbnN0YW5jZUhhbmRsZS50cmF2ZXJzZVR3b1BoYXNlfHwhbS5JbnN0YW5jZUhhbmRsZS50cmF2
ZXJzZUVudGVyTGVhdmU7aWYoZSl0aHJvdyBuZXcgRXJyb3IoIkluc3RhbmNlSGFuZGxlIG5vdCBp
bmplY3RlZCBiZWZvcmUgdXNlISIpfX0sZz17YWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlczpz
LGFjY3VtdWxhdGVEaXJlY3REaXNwYXRjaGVzOmwsYWNjdW11bGF0ZUVudGVyTGVhdmVEaXNwYXRj
aGVzOnUsaW5qZWN0aW9uOm19O3QuZXhwb3J0cz1nfSx7Ii4vQ2FsbGJhY2tSZWdpc3RyeSI6NCwi
Li9FdmVudENvbnN0YW50cyI6MTMsIi4vYWNjdW11bGF0ZSI6NjAsIi4vZm9yRWFjaEFjY3VtdWxh
dGVkIjo2OH1dLDE5OltmdW5jdGlvbihlLHQpeyFmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0Ijt2YXIg
ZT0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyxuPXtjYW5Vc2VET006ZSxjYW5Vc2VXb3JrZXJz
OiJ1bmRlZmluZWQiIT10eXBlb2YgV29ya2VyLGlzSW5Xb3JrZXI6IWUsZ2xvYmFsOm5ldyBGdW5j
dGlvbigicmV0dXJuIHRoaXM7IikoKX07dC5leHBvcnRzPW59KCl9LHt9XSwyMDpbZnVuY3Rpb24o
ZSx0KXsidXNlIHN0cmljdCI7dmFyIG49ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztpZih0Lmluc3Rh
bmNlUG9vbC5sZW5ndGgpe3ZhciBuPXQuaW5zdGFuY2VQb29sLnBvcCgpO3JldHVybiB0LmNhbGwo
bixlKSxufXJldHVybiBuZXcgdChlKX0scj1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXM7aWYobi5p
bnN0YW5jZVBvb2wubGVuZ3RoKXt2YXIgcj1uLmluc3RhbmNlUG9vbC5wb3AoKTtyZXR1cm4gbi5j
YWxsKHIsZSx0KSxyfXJldHVybiBuZXcgbihlLHQpfSxvPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10
aGlzO2lmKHIuaW5zdGFuY2VQb29sLmxlbmd0aCl7dmFyIG89ci5pbnN0YW5jZVBvb2wucG9wKCk7
cmV0dXJuIHIuY2FsbChvLGUsdCxuKSxvfXJldHVybiBuZXcgcihlLHQsbil9LGk9ZnVuY3Rpb24o
ZSx0LG4scixvKXt2YXIgaT10aGlzO2lmKGkuaW5zdGFuY2VQb29sLmxlbmd0aCl7dmFyIGE9aS5p
bnN0YW5jZVBvb2wucG9wKCk7cmV0dXJuIGkuY2FsbChhLGUsdCxuLHIsbyksYX1yZXR1cm4gbmV3
IGkoZSx0LG4scixvKX0sYT1mdW5jdGlvbihlKXt2YXIgdD10aGlzO2UuZGVzdHJ1Y3RvciYmZS5k
ZXN0cnVjdG9yKCksdC5pbnN0YW5jZVBvb2wubGVuZ3RoPHQucG9vbFNpemUmJnQuaW5zdGFuY2VQ
b29sLnB1c2goZSl9LHM9MTAsdT1uLGw9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lO3JldHVybiBuLmlu
c3RhbmNlUG9vbD1bXSxuLmdldFBvb2xlZD10fHx1LG4ucG9vbFNpemV8fChuLnBvb2xTaXplPXMp
LG4ucmVsZWFzZT1hLG59LGM9e2FkZFBvb2xpbmdUbzpsLG9uZUFyZ3VtZW50UG9vbGVyOm4sdHdv
QXJndW1lbnRQb29sZXI6cix0aHJlZUFyZ3VtZW50UG9vbGVyOm8sZml2ZUFyZ3VtZW50UG9vbGVy
Oml9O3QuZXhwb3J0cz1jfSx7fV0sMjE6W2Z1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO3ZhciBu
PWUoIi4vUmVhY3RDb21wb3NpdGVDb21wb25lbnQiKSxyPWUoIi4vUmVhY3RDb21wb25lbnQiKSxv
PWUoIi4vUmVhY3RET00iKSxpPWUoIi4vUmVhY3RNb3VudCIpLGE9ZSgiLi9SZWFjdFByb3BUeXBl
cyIpLHM9ZSgiLi9SZWFjdFNlcnZlclJlbmRlcmluZyIpLHU9ZSgiLi9SZWFjdERlZmF1bHRJbmpl
Y3Rpb24iKTt1LmluamVjdCgpO3ZhciBsPXtET006byxQcm9wVHlwZXM6YSxpbml0aWFsaXplVG91
Y2hFdmVudHM6ZnVuY3Rpb24oZSl7aS51c2VUb3VjaEV2ZW50cz1lfSxhdXRvQmluZDpuLmF1dG9C
aW5kLGNyZWF0ZUNsYXNzOm4uY3JlYXRlQ2xhc3MsY29uc3RydWN0QW5kUmVuZGVyQ29tcG9uZW50
OmkuY29uc3RydWN0QW5kUmVuZGVyQ29tcG9uZW50LGNvbnN0cnVjdEFuZFJlbmRlckNvbXBvbmVu
dEJ5SUQ6aS5jb25zdHJ1Y3RBbmRSZW5kZXJDb21wb25lbnRCeUlELHJlbmRlckNvbXBvbmVudDpp
LnJlbmRlckNvbXBvbmVudCxyZW5kZXJDb21wb25lbnRUb1N0cmluZzpzLnJlbmRlckNvbXBvbmVu
dFRvU3RyaW5nLHVubW91bnRBbmRSZWxlYXNlUmVhY3RSb290Tm9kZTppLnVubW91bnRBbmRSZWxl
YXNlUmVhY3RSb290Tm9kZSxpc1ZhbGlkQ29tcG9uZW50OnIuaXNWYWxpZENvbXBvbmVudH07dC5l
eHBvcnRzPWx9LHsiLi9SZWFjdENvbXBvbmVudCI6MjIsIi4vUmVhY3RDb21wb3NpdGVDb21wb25l
bnQiOjIzLCIuL1JlYWN0RE9NIjoyNSwiLi9SZWFjdERlZmF1bHRJbmplY3Rpb24iOjMyLCIuL1Jl
YWN0TW91bnQiOjM4LCIuL1JlYWN0UHJvcFR5cGVzIjo0NCwiLi9SZWFjdFNlcnZlclJlbmRlcmlu
ZyI6NDZ9XSwyMjpbZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7dmFyIG49ZSgiLi9SZWFjdEN1
cnJlbnRPd25lciIpLHI9ZSgiLi9SZWFjdERPTUlET3BlcmF0aW9ucyIpLG89ZSgiLi9SZWFjdElE
IiksaT1lKCIuL1JlYWN0TW91bnQiKSxhPWUoIi4vUmVhY3RPd25lciIpLHM9ZSgiLi9SZWFjdFJl
Y29uY2lsZVRyYW5zYWN0aW9uIiksdT1lKCIuL1JlYWN0VXBkYXRlcyIpLGw9ZSgiLi9pbnZhcmlh
bnQiKSxjPWUoIi4va2V5TWlycm9yIikscD1lKCIuL21lcmdlIiksZD0ie293bmVyfSIsaD1jKHtN
T1VOVEVEOm51bGwsVU5NT1VOVEVEOm51bGx9KSxmPXtpc1ZhbGlkQ29tcG9uZW50OmZ1bmN0aW9u
KGUpe3JldHVybiEoIWV8fCJmdW5jdGlvbiIhPXR5cGVvZiBlLm1vdW50Q29tcG9uZW50SW50b05v
ZGV8fCJmdW5jdGlvbiIhPXR5cGVvZiBlLnJlY2VpdmVQcm9wcyl9LGdldEtleTpmdW5jdGlvbihl
LHQpe3JldHVybiBlJiZlLnByb3BzJiZudWxsIT1lLnByb3BzLmtleT8iIitlLnByb3BzLmtleToi
Iit0fSxMaWZlQ3ljbGU6aCxET01JRE9wZXJhdGlvbnM6cixSZWFjdFJlY29uY2lsZVRyYW5zYWN0
aW9uOnMsc2V0RE9NT3BlcmF0aW9uczpmdW5jdGlvbihlKXtmLkRPTUlET3BlcmF0aW9ucz1lfSxz
ZXRSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uOmZ1bmN0aW9uKGUpe2YuUmVhY3RSZWNvbmNpbGVU
cmFuc2FjdGlvbj1lfSxNaXhpbjp7aXNNb3VudGVkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2xp
ZmVDeWNsZVN0YXRlPT09aC5NT1VOVEVEfSxnZXRET01Ob2RlOmZ1bmN0aW9uKCl7cmV0dXJuIGwo
dGhpcy5pc01vdW50ZWQoKSksby5nZXROb2RlKHRoaXMuX3Jvb3ROb2RlSUQpfSxzZXRQcm9wczpm
dW5jdGlvbihlLHQpe3RoaXMucmVwbGFjZVByb3BzKHAodGhpcy5fcGVuZGluZ1Byb3BzfHx0aGlz
LnByb3BzLGUpLHQpfSxyZXBsYWNlUHJvcHM6ZnVuY3Rpb24oZSx0KXtsKCF0aGlzLnByb3BzW2Rd
KSx0aGlzLl9wZW5kaW5nUHJvcHM9ZSx1LmVucXVldWVVcGRhdGUodGhpcyx0KX0sY29uc3RydWN0
OmZ1bmN0aW9uKGUsdCl7dGhpcy5wcm9wcz1lfHx7fSx0aGlzLnByb3BzW2RdPW4uY3VycmVudCx0
aGlzLl9saWZlQ3ljbGVTdGF0ZT1oLlVOTU9VTlRFRCx0aGlzLl9wZW5kaW5nUHJvcHM9bnVsbCx0
aGlzLl9wZW5kaW5nQ2FsbGJhY2tzPW51bGw7dmFyIHI9YXJndW1lbnRzLmxlbmd0aC0xO2lmKDE9
PT1yKXRoaXMucHJvcHMuY2hpbGRyZW49dDtlbHNlIGlmKHI+MSl7Zm9yKHZhciBvPUFycmF5KHIp
LGk9MDtyPmk7aSsrKW9baV09YXJndW1lbnRzW2krMV07dGhpcy5wcm9wcy5jaGlsZHJlbj1vfX0s
bW91bnRDb21wb25lbnQ6ZnVuY3Rpb24oZSl7bCghdGhpcy5pc01vdW50ZWQoKSk7dmFyIHQ9dGhp
cy5wcm9wcztudWxsIT10LnJlZiYmYS5hZGRDb21wb25lbnRBc1JlZlRvKHRoaXMsdC5yZWYsdFtk
XSksdGhpcy5fcm9vdE5vZGVJRD1lLHRoaXMuX2xpZmVDeWNsZVN0YXRlPWguTU9VTlRFRH0sdW5t
b3VudENvbXBvbmVudDpmdW5jdGlvbigpe2wodGhpcy5pc01vdW50ZWQoKSk7dmFyIGU9dGhpcy5w
cm9wcztudWxsIT1lLnJlZiYmYS5yZW1vdmVDb21wb25lbnRBc1JlZkZyb20odGhpcyxlLnJlZixl
W2RdKSxvLnB1cmdlSUQodGhpcy5fcm9vdE5vZGVJRCksdGhpcy5fcm9vdE5vZGVJRD1udWxsLHRo
aXMuX2xpZmVDeWNsZVN0YXRlPWguVU5NT1VOVEVEfSxyZWNlaXZlUHJvcHM6ZnVuY3Rpb24oZSx0
KXtsKHRoaXMuaXNNb3VudGVkKCkpLHRoaXMuX3BlbmRpbmdQcm9wcz1lLHRoaXMuX3BlcmZvcm1V
cGRhdGVJZk5lY2Vzc2FyeSh0KX0scGVyZm9ybVVwZGF0ZUlmTmVjZXNzYXJ5OmZ1bmN0aW9uKCl7
dmFyIGU9Zi5SZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uLmdldFBvb2xlZCgpO2UucGVyZm9ybSh0
aGlzLl9wZXJmb3JtVXBkYXRlSWZOZWNlc3NhcnksdGhpcyxlKSxmLlJlYWN0UmVjb25jaWxlVHJh
bnNhY3Rpb24ucmVsZWFzZShlKX0sX3BlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeTpmdW5jdGlvbihl
KXtpZihudWxsIT10aGlzLl9wZW5kaW5nUHJvcHMpe3ZhciB0PXRoaXMucHJvcHM7dGhpcy5wcm9w
cz10aGlzLl9wZW5kaW5nUHJvcHMsdGhpcy5fcGVuZGluZ1Byb3BzPW51bGwsdGhpcy51cGRhdGVD
b21wb25lbnQoZSx0KX19LHVwZGF0ZUNvbXBvbmVudDpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMu
cHJvcHM7KG5bZF0hPT10W2RdfHxuLnJlZiE9PXQucmVmKSYmKG51bGwhPXQucmVmJiZhLnJlbW92
ZUNvbXBvbmVudEFzUmVmRnJvbSh0aGlzLHQucmVmLHRbZF0pLG51bGwhPW4ucmVmJiZhLmFkZENv
bXBvbmVudEFzUmVmVG8odGhpcyxuLnJlZixuW2RdKSl9LG1vdW50Q29tcG9uZW50SW50b05vZGU6
ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWYuUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbi5nZXRQb29s
ZWQoKTtyLnBlcmZvcm0odGhpcy5fbW91bnRDb21wb25lbnRJbnRvTm9kZSx0aGlzLGUsdCxyLG4p
LGYuUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbi5yZWxlYXNlKHIpfSxfbW91bnRDb21wb25lbnRJ
bnRvTm9kZTpmdW5jdGlvbihlLHQsbixyKXtsKHQmJjE9PT10Lm5vZGVUeXBlKTt2YXIgbz1EYXRl
Lm5vdygpLGE9dGhpcy5tb3VudENvbXBvbmVudChlLG4pO2lmKGkudG90YWxJbnN0YW50aWF0aW9u
VGltZSs9RGF0ZS5ub3coKS1vLCFyKXt2YXIgcz1EYXRlLm5vdygpLHU9dC5wYXJlbnROb2RlO2lm
KHUpe3ZhciBjPXQubmV4dFNpYmxpbmc7dS5yZW1vdmVDaGlsZCh0KSx0LmlubmVySFRNTD1hLGM/
dS5pbnNlcnRCZWZvcmUodCxjKTp1LmFwcGVuZENoaWxkKHQpfWVsc2UgdC5pbm5lckhUTUw9YTtp
LnRvdGFsSW5qZWN0aW9uVGltZSs9RGF0ZS5ub3coKS1zfX0sdW5tb3VudENvbXBvbmVudEZyb21O
b2RlOmZ1bmN0aW9uKGUpe2Zvcih0aGlzLnVubW91bnRDb21wb25lbnQoKTtlLmxhc3RDaGlsZDsp
ZS5yZW1vdmVDaGlsZChlLmxhc3RDaGlsZCl9LGlzT3duZWRCeTpmdW5jdGlvbihlKXtyZXR1cm4g
dGhpcy5wcm9wc1tkXT09PWV9LGdldFNpYmxpbmdCeVJlZjpmdW5jdGlvbihlKXt2YXIgdD10aGlz
LnByb3BzW2RdO3JldHVybiB0JiZ0LnJlZnM/dC5yZWZzW2VdOm51bGx9fX07dC5leHBvcnRzPWZ9
LHsiLi9SZWFjdEN1cnJlbnRPd25lciI6MjQsIi4vUmVhY3RET01JRE9wZXJhdGlvbnMiOjI3LCIu
L1JlYWN0SUQiOjM1LCIuL1JlYWN0TW91bnQiOjM4LCIuL1JlYWN0T3duZXIiOjQyLCIuL1JlYWN0
UmVjb25jaWxlVHJhbnNhY3Rpb24iOjQ1LCIuL1JlYWN0VXBkYXRlcyI6NDgsIi4vaW52YXJpYW50
Ijo3NSwiLi9rZXlNaXJyb3IiOjc4LCIuL21lcmdlIjo4MX1dLDIzOltmdW5jdGlvbihlLHQpeyFm
dW5jdGlvbigpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUsdCl7dmFyIG49bVt0XTtDLmhhc093
blByb3BlcnR5KHQpJiZwKG49PT12Lk9WRVJSSURFX0JBU0UpLGUuaGFzT3duUHJvcGVydHkodCkm
JnAobj09PXYuREVGSU5FX01BTlkpfWZ1bmN0aW9uIHIoZSl7dmFyIHQ9ZS5fY29tcG9zaXRlTGlm
ZUN5Y2xlU3RhdGU7cChlLmlzTW91bnRlZCgpfHx0PT09eS5NT1VOVElORykscCh0IT09eS5SRUNF
SVZJTkdfU1RBVEUmJnQhPT15LlVOTU9VTlRJTkcpfWZ1bmN0aW9uIG8oZSx0KXt2YXIgcj1lLnBy
b3RvdHlwZTtmb3IodmFyIG8gaW4gdCl7dmFyIGE9dFtvXTtpZih0Lmhhc093blByb3BlcnR5KG8p
JiZhKWlmKG4ocixvKSxnLmhhc093blByb3BlcnR5KG8pKWdbb10oZSxhKTtlbHNle3ZhciBzPW8g
aW4gbSx1PW8gaW4gcixsPWEuX19yZWFjdERvbnRCaW5kLGM9ImZ1bmN0aW9uIj09dHlwZW9mIGEs
cD1jJiYhcyYmIXUmJiFsO3A/KHIuX19yZWFjdEF1dG9CaW5kTWFwfHwoci5fX3JlYWN0QXV0b0Jp
bmRNYXA9e30pLHIuX19yZWFjdEF1dG9CaW5kTWFwW29dPWEscltvXT1hKTpyW29dPXU/aShyW29d
LGEpOmF9fX1mdW5jdGlvbiBpKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKCl7ZS5hcHBseSh0aGlzLGFy
Z3VtZW50cyksdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fXZhciBhPWUoIi4vUmVhY3RDb21wb25l
bnQiKSxzPWUoIi4vUmVhY3RDdXJyZW50T3duZXIiKSx1PWUoIi4vUmVhY3RPd25lciIpLGw9ZSgi
Li9SZWFjdFByb3BUcmFuc2ZlcmVyIiksYz1lKCIuL1JlYWN0VXBkYXRlcyIpLHA9ZSgiLi9pbnZh
cmlhbnQiKSxkPWUoIi4va2V5TWlycm9yIiksaD1lKCIuL21lcmdlIiksZj1lKCIuL21peEludG8i
KSx2PWQoe0RFRklORV9PTkNFOm51bGwsREVGSU5FX01BTlk6bnVsbCxPVkVSUklERV9CQVNFOm51
bGx9KSxtPXttaXhpbnM6di5ERUZJTkVfTUFOWSxwcm9wVHlwZXM6di5ERUZJTkVfT05DRSxnZXRE
ZWZhdWx0UHJvcHM6di5ERUZJTkVfT05DRSxnZXRJbml0aWFsU3RhdGU6di5ERUZJTkVfT05DRSxy
ZW5kZXI6di5ERUZJTkVfT05DRSxjb21wb25lbnRXaWxsTW91bnQ6di5ERUZJTkVfTUFOWSxjb21w
b25lbnREaWRNb3VudDp2LkRFRklORV9NQU5ZLGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHM6di5E
RUZJTkVfTUFOWSxzaG91bGRDb21wb25lbnRVcGRhdGU6di5ERUZJTkVfT05DRSxjb21wb25lbnRX
aWxsVXBkYXRlOnYuREVGSU5FX01BTlksY29tcG9uZW50RGlkVXBkYXRlOnYuREVGSU5FX01BTlks
Y29tcG9uZW50V2lsbFVubW91bnQ6di5ERUZJTkVfTUFOWSx1cGRhdGVDb21wb25lbnQ6di5PVkVS
UklERV9CQVNFfSxnPXtkaXNwbGF5TmFtZTpmdW5jdGlvbihlLHQpe2UuZGlzcGxheU5hbWU9dH0s
bWl4aW5zOmZ1bmN0aW9uKGUsdCl7aWYodClmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKylvKGUs
dFtuXSl9LHByb3BUeXBlczpmdW5jdGlvbihlLHQpe2UucHJvcFR5cGVzPXR9fSx5PWQoe01PVU5U
SU5HOm51bGwsVU5NT1VOVElORzpudWxsLFJFQ0VJVklOR19QUk9QUzpudWxsLFJFQ0VJVklOR19T
VEFURTpudWxsfSksQz17Y29uc3RydWN0OmZ1bmN0aW9uKCl7YS5NaXhpbi5jb25zdHJ1Y3QuYXBw
bHkodGhpcyxhcmd1bWVudHMpLHRoaXMuc3RhdGU9bnVsbCx0aGlzLl9wZW5kaW5nU3RhdGU9bnVs
bCx0aGlzLl9jb21wb3NpdGVMaWZlQ3ljbGVTdGF0ZT1udWxsfSxpc01vdW50ZWQ6ZnVuY3Rpb24o
KXtyZXR1cm4gYS5NaXhpbi5pc01vdW50ZWQuY2FsbCh0aGlzKSYmdGhpcy5fY29tcG9zaXRlTGlm
ZUN5Y2xlU3RhdGUhPT15Lk1PVU5USU5HfSxtb3VudENvbXBvbmVudDpmdW5jdGlvbihlLHQpe2Eu
TWl4aW4ubW91bnRDb21wb25lbnQuY2FsbCh0aGlzLGUsdCksdGhpcy5fY29tcG9zaXRlTGlmZUN5
Y2xlU3RhdGU9eS5NT1VOVElORyx0aGlzLl9kZWZhdWx0UHJvcHM9dGhpcy5nZXREZWZhdWx0UHJv
cHM/dGhpcy5nZXREZWZhdWx0UHJvcHMoKTpudWxsLHRoaXMuX3Byb2Nlc3NQcm9wcyh0aGlzLnBy
b3BzKSx0aGlzLl9fcmVhY3RBdXRvQmluZE1hcCYmdGhpcy5fYmluZEF1dG9CaW5kTWV0aG9kcygp
LHRoaXMuc3RhdGU9dGhpcy5nZXRJbml0aWFsU3RhdGU/dGhpcy5nZXRJbml0aWFsU3RhdGUoKTpu
dWxsLHRoaXMuX3BlbmRpbmdTdGF0ZT1udWxsLHRoaXMuX3BlbmRpbmdGb3JjZVVwZGF0ZT0hMSx0
aGlzLmNvbXBvbmVudFdpbGxNb3VudCYmKHRoaXMuY29tcG9uZW50V2lsbE1vdW50KCksdGhpcy5f
cGVuZGluZ1N0YXRlJiYodGhpcy5zdGF0ZT10aGlzLl9wZW5kaW5nU3RhdGUsdGhpcy5fcGVuZGlu
Z1N0YXRlPW51bGwpKSx0aGlzLl9yZW5kZXJlZENvbXBvbmVudD10aGlzLl9yZW5kZXJWYWxpZGF0
ZWRDb21wb25lbnQoKSx0aGlzLl9jb21wb3NpdGVMaWZlQ3ljbGVTdGF0ZT1udWxsO3ZhciBuPXRo
aXMuX3JlbmRlcmVkQ29tcG9uZW50Lm1vdW50Q29tcG9uZW50KGUsdCk7cmV0dXJuIHRoaXMuY29t
cG9uZW50RGlkTW91bnQmJnQuZ2V0UmVhY3RPbkRPTVJlYWR5KCkuZW5xdWV1ZSh0aGlzLHRoaXMu
Y29tcG9uZW50RGlkTW91bnQpLG59LHVubW91bnRDb21wb25lbnQ6ZnVuY3Rpb24oKXt0aGlzLl9j
b21wb3NpdGVMaWZlQ3ljbGVTdGF0ZT15LlVOTU9VTlRJTkcsdGhpcy5jb21wb25lbnRXaWxsVW5t
b3VudCYmdGhpcy5jb21wb25lbnRXaWxsVW5tb3VudCgpLHRoaXMuX2NvbXBvc2l0ZUxpZmVDeWNs
ZVN0YXRlPW51bGwsdGhpcy5fZGVmYXVsdFByb3BzPW51bGwsYS5NaXhpbi51bm1vdW50Q29tcG9u
ZW50LmNhbGwodGhpcyksdGhpcy5fcmVuZGVyZWRDb21wb25lbnQudW5tb3VudENvbXBvbmVudCgp
LHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50PW51bGwsdGhpcy5yZWZzJiYodGhpcy5yZWZzPW51bGwp
fSxzZXRTdGF0ZTpmdW5jdGlvbihlLHQpe3RoaXMucmVwbGFjZVN0YXRlKGgodGhpcy5fcGVuZGlu
Z1N0YXRlfHx0aGlzLnN0YXRlLGUpLHQpfSxyZXBsYWNlU3RhdGU6ZnVuY3Rpb24oZSx0KXtyKHRo
aXMpLHRoaXMuX3BlbmRpbmdTdGF0ZT1lLGMuZW5xdWV1ZVVwZGF0ZSh0aGlzLHQpfSxfcHJvY2Vz
c1Byb3BzOmZ1bmN0aW9uKGUpe3ZhciB0LG49dGhpcy5fZGVmYXVsdFByb3BzO2Zvcih0IGluIG4p
dCBpbiBlfHwoZVt0XT1uW3RdKTt2YXIgcj10aGlzLmNvbnN0cnVjdG9yLnByb3BUeXBlcztpZihy
KXt2YXIgbz10aGlzLmNvbnN0cnVjdG9yLmRpc3BsYXlOYW1lO2Zvcih0IGluIHIpe3ZhciBpPXJb
dF07aSYmaShlLHQsbyl9fX0scGVyZm9ybVVwZGF0ZUlmTmVjZXNzYXJ5OmZ1bmN0aW9uKCl7dmFy
IGU9dGhpcy5fY29tcG9zaXRlTGlmZUN5Y2xlU3RhdGU7ZSE9PXkuTU9VTlRJTkcmJmUhPT15LlJF
Q0VJVklOR19QUk9QUyYmYS5NaXhpbi5wZXJmb3JtVXBkYXRlSWZOZWNlc3NhcnkuY2FsbCh0aGlz
KX0sX3BlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeTpmdW5jdGlvbihlKXtpZihudWxsIT10aGlzLl9w
ZW5kaW5nUHJvcHN8fG51bGwhPXRoaXMuX3BlbmRpbmdTdGF0ZXx8dGhpcy5fcGVuZGluZ0ZvcmNl
VXBkYXRlKXt2YXIgdD10aGlzLnByb3BzO251bGwhPXRoaXMuX3BlbmRpbmdQcm9wcyYmKHQ9dGhp
cy5fcGVuZGluZ1Byb3BzLHRoaXMuX3Byb2Nlc3NQcm9wcyh0KSx0aGlzLl9wZW5kaW5nUHJvcHM9
bnVsbCx0aGlzLl9jb21wb3NpdGVMaWZlQ3ljbGVTdGF0ZT15LlJFQ0VJVklOR19QUk9QUyx0aGlz
LmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMmJnRoaXMuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9w
cyh0LGUpKSx0aGlzLl9jb21wb3NpdGVMaWZlQ3ljbGVTdGF0ZT15LlJFQ0VJVklOR19TVEFURTt2
YXIgbj10aGlzLl9wZW5kaW5nU3RhdGV8fHRoaXMuc3RhdGU7dGhpcy5fcGVuZGluZ1N0YXRlPW51
bGwsdGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRlfHwhdGhpcy5zaG91bGRDb21wb25lbnRVcGRhdGV8
fHRoaXMuc2hvdWxkQ29tcG9uZW50VXBkYXRlKHQsbik/KHRoaXMuX3BlbmRpbmdGb3JjZVVwZGF0
ZT0hMSx0aGlzLl9wZXJmb3JtQ29tcG9uZW50VXBkYXRlKHQsbixlKSk6KHRoaXMucHJvcHM9dCx0
aGlzLnN0YXRlPW4pLHRoaXMuX2NvbXBvc2l0ZUxpZmVDeWNsZVN0YXRlPW51bGx9fSxfcGVyZm9y
bUNvbXBvbmVudFVwZGF0ZTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy5wcm9wcyxvPXRoaXMu
c3RhdGU7dGhpcy5jb21wb25lbnRXaWxsVXBkYXRlJiZ0aGlzLmNvbXBvbmVudFdpbGxVcGRhdGUo
ZSx0LG4pLHRoaXMucHJvcHM9ZSx0aGlzLnN0YXRlPXQsdGhpcy51cGRhdGVDb21wb25lbnQobixy
LG8pLHRoaXMuY29tcG9uZW50RGlkVXBkYXRlJiZuLmdldFJlYWN0T25ET01SZWFkeSgpLmVucXVl
dWUodGhpcyx0aGlzLmNvbXBvbmVudERpZFVwZGF0ZS5iaW5kKHRoaXMscixvKSl9LHVwZGF0ZUNv
bXBvbmVudDpmdW5jdGlvbihlLHQpe2EuTWl4aW4udXBkYXRlQ29tcG9uZW50LmNhbGwodGhpcyxl
LHQpO3ZhciBuPXRoaXMuX3JlbmRlcmVkQ29tcG9uZW50LHI9dGhpcy5fcmVuZGVyVmFsaWRhdGVk
Q29tcG9uZW50KCk7aWYobi5jb25zdHJ1Y3Rvcj09PXIuY29uc3RydWN0b3Ipbi5yZWNlaXZlUHJv
cHMoci5wcm9wcyxlKTtlbHNle3ZhciBvPXRoaXMuX3Jvb3ROb2RlSUQsaT1uLl9yb290Tm9kZUlE
O24udW5tb3VudENvbXBvbmVudCgpO3ZhciBzPXIubW91bnRDb21wb25lbnQobyxlKTthLkRPTUlE
T3BlcmF0aW9ucy5kYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cEJ5SUQoaSxzKSx0aGlz
Ll9yZW5kZXJlZENvbXBvbmVudD1yfX0sZm9yY2VVcGRhdGU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhp
cy5fY29tcG9zaXRlTGlmZUN5Y2xlU3RhdGU7cCh0aGlzLmlzTW91bnRlZCgpfHx0PT09eS5NT1VO
VElORykscCh0IT09eS5SRUNFSVZJTkdfU1RBVEUmJnQhPT15LlVOTU9VTlRJTkcpLHRoaXMuX3Bl
bmRpbmdGb3JjZVVwZGF0ZT0hMCxjLmVucXVldWVVcGRhdGUodGhpcyxlKX0sX3JlbmRlclZhbGlk
YXRlZENvbXBvbmVudDpmdW5jdGlvbigpe3ZhciBlO3MuY3VycmVudD10aGlzO3RyeXtlPXRoaXMu
cmVuZGVyKCl9Y2F0Y2godCl7dGhyb3cgdH1maW5hbGx5e3MuY3VycmVudD1udWxsfXJldHVybiBw
KGEuaXNWYWxpZENvbXBvbmVudChlKSksZX0sX2JpbmRBdXRvQmluZE1ldGhvZHM6ZnVuY3Rpb24o
KXtmb3IodmFyIGUgaW4gdGhpcy5fX3JlYWN0QXV0b0JpbmRNYXApaWYodGhpcy5fX3JlYWN0QXV0
b0JpbmRNYXAuaGFzT3duUHJvcGVydHkoZSkpe3ZhciB0PXRoaXMuX19yZWFjdEF1dG9CaW5kTWFw
W2VdO3RoaXNbZV09dGhpcy5fYmluZEF1dG9CaW5kTWV0aG9kKHQpfX0sX2JpbmRBdXRvQmluZE1l
dGhvZDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLG49ZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0
LGFyZ3VtZW50cyl9O3JldHVybiBufX0sRT1mdW5jdGlvbigpe307ZihFLGEuTWl4aW4pLGYoRSx1
Lk1peGluKSxmKEUsbC5NaXhpbiksZihFLEMpO3ZhciBEPXtMaWZlQ3ljbGU6eSxCYXNlOkUsY3Jl
YXRlQ2xhc3M6ZnVuY3Rpb24oZSl7dmFyIHQ9ZnVuY3Rpb24oKXt9O3QucHJvdG90eXBlPW5ldyBF
LHQucHJvdG90eXBlLmNvbnN0cnVjdG9yPXQsbyh0LGUpLHAodC5wcm90b3R5cGUucmVuZGVyKTtm
b3IodmFyIG4gaW4gbSl0LnByb3RvdHlwZVtuXXx8KHQucHJvdG90eXBlW25dPW51bGwpO3ZhciBy
PWZ1bmN0aW9uKCl7dmFyIGU9bmV3IHQ7cmV0dXJuIGUuY29uc3RydWN0LmFwcGx5KGUsYXJndW1l
bnRzKSxlfTtyZXR1cm4gci5jb21wb25lbnRDb25zdHJ1Y3Rvcj10LHIub3JpZ2luYWxTcGVjPWUs
cn0sYXV0b0JpbmQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGV9fTt0LmV4cG9ydHM9RH0oKX0seyIuL1Jl
YWN0Q29tcG9uZW50IjoyMiwiLi9SZWFjdEN1cnJlbnRPd25lciI6MjQsIi4vUmVhY3RPd25lciI6
NDIsIi4vUmVhY3RQcm9wVHJhbnNmZXJlciI6NDMsIi4vUmVhY3RVcGRhdGVzIjo0OCwiLi9pbnZh
cmlhbnQiOjc1LCIuL2tleU1pcnJvciI6NzgsIi4vbWVyZ2UiOjgxLCIuL21peEludG8iOjg0fV0s
MjQ6W2Z1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO3ZhciBuPXtjdXJyZW50Om51bGx9O3QuZXhw
b3J0cz1ufSx7fV0sMjU6W2Z1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSx0
KXt2YXIgbj1mdW5jdGlvbigpe307bi5wcm90b3R5cGU9bmV3IHIoZSx0KSxuLnByb3RvdHlwZS5j
b25zdHJ1Y3Rvcj1uO3ZhciBvPWZ1bmN0aW9uKCl7dmFyIGU9bmV3IG47cmV0dXJuIGUuY29uc3Ry
dWN0LmFwcGx5KGUsYXJndW1lbnRzKSxlfTtyZXR1cm4gby5jb21wb25lbnRDb25zdHJ1Y3Rvcj1u
LG99dmFyIHI9ZSgiLi9SZWFjdE5hdGl2ZUNvbXBvbmVudCIpLG89ZSgiLi9tZXJnZUludG8iKSxp
PWUoIi4vb2JqTWFwS2V5VmFsIiksYT1pKHthOiExLGFiYnI6ITEsYWRkcmVzczohMSxhcmVhOiEx
LGFydGljbGU6ITEsYXNpZGU6ITEsYXVkaW86ITEsYjohMSxiYXNlOiExLGJkaTohMSxiZG86ITEs
YmlnOiExLGJsb2NrcXVvdGU6ITEsYm9keTohMSxicjohMCxidXR0b246ITEsY2FudmFzOiExLGNh
cHRpb246ITEsY2l0ZTohMSxjb2RlOiExLGNvbDohMCxjb2xncm91cDohMSxkYXRhOiExLGRhdGFs
aXN0OiExLGRkOiExLGRlbDohMSxkZXRhaWxzOiExLGRmbjohMSxkaXY6ITEsZGw6ITEsZHQ6ITEs
ZW06ITEsZW1iZWQ6ITAsZmllbGRzZXQ6ITEsZmlnY2FwdGlvbjohMSxmaWd1cmU6ITEsZm9vdGVy
OiExLGZvcm06ITEsaDE6ITEsaDI6ITEsaDM6ITEsaDQ6ITEsaDU6ITEsaDY6ITEsaGVhZDohMSxo
ZWFkZXI6ITEsaHI6ITAsaHRtbDohMSxpOiExLGlmcmFtZTohMSxpbWc6ITAsaW5wdXQ6ITAsaW5z
OiExLGtiZDohMSxrZXlnZW46ITAsbGFiZWw6ITEsbGVnZW5kOiExLGxpOiExLGxpbms6ITEsbWFp
bjohMSxtYXA6ITEsbWFyazohMSxtZW51OiExLG1lbnVpdGVtOiExLG1ldGE6ITAsbWV0ZXI6ITEs
bmF2OiExLG5vc2NyaXB0OiExLG9iamVjdDohMSxvbDohMSxvcHRncm91cDohMSxvcHRpb246ITEs
b3V0cHV0OiExLHA6ITEscGFyYW06ITAscHJlOiExLHByb2dyZXNzOiExLHE6ITEscnA6ITEscnQ6
ITEscnVieTohMSxzOiExLHNhbXA6ITEsc2NyaXB0OiExLHNlY3Rpb246ITEsc2VsZWN0OiExLHNt
YWxsOiExLHNvdXJjZTohMSxzcGFuOiExLHN0cm9uZzohMSxzdHlsZTohMSxzdWI6ITEsc3VtbWFy
eTohMSxzdXA6ITEsdGFibGU6ITEsdGJvZHk6ITEsdGQ6ITEsdGV4dGFyZWE6ITEsdGZvb3Q6ITEs
dGg6ITEsdGhlYWQ6ITEsdGltZTohMSx0aXRsZTohMSx0cjohMSx0cmFjazohMCx1OiExLHVsOiEx
LCJ2YXIiOiExLHZpZGVvOiExLHdicjohMSxjaXJjbGU6ITEsZzohMSxsaW5lOiExLHBhdGg6ITEs
cG9seWxpbmU6ITEscmVjdDohMSxzdmc6ITEsdGV4dDohMX0sbikscz17aW5qZWN0Q29tcG9uZW50
Q2xhc3NlczpmdW5jdGlvbihlKXtvKGEsZSl9fTthLmluamVjdGlvbj1zLHQuZXhwb3J0cz1hfSx7
Ii4vUmVhY3ROYXRpdmVDb21wb25lbnQiOjQwLCIuL21lcmdlSW50byI6ODMsIi4vb2JqTWFwS2V5
VmFsIjo4NX1dLDI2OltmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1lKCIuL1JlYWN0
Q29tcG9zaXRlQ29tcG9uZW50Iikscj1lKCIuL1JlYWN0RE9NIiksbz1lKCIuL1JlYWN0RXZlbnRF
bWl0dGVyIiksaT1lKCIuL0V2ZW50Q29uc3RhbnRzIiksYT1yLmZvcm0scz1uLmNyZWF0ZUNsYXNz
KHtyZW5kZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmFuc2ZlclByb3BzVG8oYShudWxsLHRo
aXMucHJvcHMuY2hpbGRyZW4pKX0sY29tcG9uZW50RGlkTW91bnQ6ZnVuY3Rpb24oZSl7by50cmFw
QnViYmxlZEV2ZW50KGkudG9wTGV2ZWxUeXBlcy50b3BTdWJtaXQsInN1Ym1pdCIsZSl9fSk7dC5l
eHBvcnRzPXN9LHsiLi9FdmVudENvbnN0YW50cyI6MTMsIi4vUmVhY3RDb21wb3NpdGVDb21wb25l
bnQiOjIzLCIuL1JlYWN0RE9NIjoyNSwiLi9SZWFjdEV2ZW50RW1pdHRlciI6MzN9XSwyNzpbZnVu
Y3Rpb24oZSx0KXshZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIG49ZSgiLi9DU1NQcm9wZXJ0
eU9wZXJhdGlvbnMiKSxyPWUoIi4vRE9NQ2hpbGRyZW5PcGVyYXRpb25zIiksbz1lKCIuL0RPTVBy
b3BlcnR5T3BlcmF0aW9ucyIpLGk9ZSgiLi9SZWFjdElEIiksYT1lKCIuL2dldFRleHRDb250ZW50
QWNjZXNzb3IiKSxzPWUoIi4vaW52YXJpYW50IiksdT17ZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6
ImBkYW5nZXJvdXNseVNldElubmVySFRNTGAgbXVzdCBiZSBzZXQgdXNpbmcgYHVwZGF0ZUlubmVy
SFRNTEJ5SUQoKWAuIixzdHlsZToiYHN0eWxlYCBtdXN0IGJlIHNldCB1c2luZyBgdXBkYXRlU3R5
bGVzQnlJRCgpYC4ifSxsPWEoKXx8Ik5BIixjPXt1cGRhdGVQcm9wZXJ0eUJ5SUQ6ZnVuY3Rpb24o
ZSx0LG4pe3ZhciByPWkuZ2V0Tm9kZShlKTsKLXMoIXUuaGFzT3duUHJvcGVydHkodCkpLG8uc2V0
VmFsdWVGb3JQcm9wZXJ0eShyLHQsbil9LGRlbGV0ZVByb3BlcnR5QnlJRDpmdW5jdGlvbihlLHQs
bil7dmFyIHI9aS5nZXROb2RlKGUpO3MoIXUuaGFzT3duUHJvcGVydHkodCkpLG8uZGVsZXRlVmFs
dWVGb3JQcm9wZXJ0eShyLHQsbil9LHVwZGF0ZVByb3BlcnRpZXNCeUlEOmZ1bmN0aW9uKGUsdCl7
Zm9yKHZhciBuIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShuKSYmYy51cGRhdGVQcm9wZXJ0aWVzQnlJ
RChlLG4sdFtuXSl9LHVwZGF0ZVN0eWxlc0J5SUQ6ZnVuY3Rpb24oZSx0KXt2YXIgcj1pLmdldE5v
ZGUoZSk7bi5zZXRWYWx1ZUZvclN0eWxlcyhyLHQpfSx1cGRhdGVJbm5lckhUTUxCeUlEOmZ1bmN0
aW9uKGUsdCl7dmFyIG49aS5nZXROb2RlKGUpO24uaW5uZXJIVE1MPSh0JiZ0Ll9faHRtbHx8IiIp
LnJlcGxhY2UoL14gL2csIiZuYnNwOyIpfSx1cGRhdGVUZXh0Q29udGVudEJ5SUQ6ZnVuY3Rpb24o
ZSx0KXt2YXIgbj1pLmdldE5vZGUoZSk7bltsXT10fSxkYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0
aE1hcmt1cEJ5SUQ6ZnVuY3Rpb24oZSx0KXt2YXIgbj1pLmdldE5vZGUoZSk7ci5kYW5nZXJvdXNs
eVJlcGxhY2VOb2RlV2l0aE1hcmt1cChuLHQpfSxtYW5hZ2VDaGlsZHJlbkJ5UGFyZW50SUQ6ZnVu
Y3Rpb24oZSx0KXt2YXIgbj1pLmdldE5vZGUoZSk7ci5tYW5hZ2VDaGlsZHJlbihuLHQpfX07dC5l
eHBvcnRzPWN9KCl9LHsiLi9DU1NQcm9wZXJ0eU9wZXJhdGlvbnMiOjMsIi4vRE9NQ2hpbGRyZW5P
cGVyYXRpb25zIjo2LCIuL0RPTVByb3BlcnR5T3BlcmF0aW9ucyI6OCwiLi9SZWFjdElEIjozNSwi
Li9nZXRUZXh0Q29udGVudEFjY2Vzc29yIjo3MSwiLi9pbnZhcmlhbnQiOjc1fV0sMjg6W2Z1bmN0
aW9uKGUsdCl7InVzZSBzdHJpY3QiO3ZhciBuPWUoIi4vRE9NUHJvcGVydHlPcGVyYXRpb25zIiks
cj1lKCIuL1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50Iiksbz1lKCIuL1JlYWN0RE9NIiksaT1lKCIu
L21lcmdlIiksYT1vLmlucHV0LHM9ci5jcmVhdGVDbGFzcyh7Z2V0SW5pdGlhbFN0YXRlOmZ1bmN0
aW9uKCl7cmV0dXJue2NoZWNrZWQ6dGhpcy5wcm9wcy5kZWZhdWx0Q2hlY2tlZHx8ITEsdmFsdWU6
dGhpcy5wcm9wcy5kZWZhdWx0VmFsdWV8fCIifX0sc2hvdWxkQ29tcG9uZW50VXBkYXRlOmZ1bmN0
aW9uKCl7cmV0dXJuIXRoaXMuX2lzQ2hhbmdpbmd9LGdldENoZWNrZWQ6ZnVuY3Rpb24oKXtyZXR1
cm4gbnVsbCE9dGhpcy5wcm9wcy5jaGVja2VkP3RoaXMucHJvcHMuY2hlY2tlZDp0aGlzLnN0YXRl
LmNoZWNrZWR9LGdldFZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGwhPXRoaXMucHJvcHMudmFs
dWU/IiIrdGhpcy5wcm9wcy52YWx1ZTp0aGlzLnN0YXRlLnZhbHVlfSxyZW5kZXI6ZnVuY3Rpb24o
KXt2YXIgZT1pKHRoaXMucHJvcHMpO3JldHVybiBlLmNoZWNrZWQ9dGhpcy5nZXRDaGVja2VkKCks
ZS52YWx1ZT10aGlzLmdldFZhbHVlKCksZS5vbkNoYW5nZT10aGlzLmhhbmRsZUNoYW5nZSxhKGUs
dGhpcy5wcm9wcy5jaGlsZHJlbil9LGNvbXBvbmVudERpZFVwZGF0ZTpmdW5jdGlvbihlLHQscil7
bnVsbCE9dGhpcy5wcm9wcy5jaGVja2VkJiZuLnNldFZhbHVlRm9yUHJvcGVydHkociwiY2hlY2tl
ZCIsdGhpcy5wcm9wcy5jaGVja2VkfHwhMSksbnVsbCE9dGhpcy5wcm9wcy52YWx1ZSYmbi5zZXRW
YWx1ZUZvclByb3BlcnR5KHIsInZhbHVlIiwiIit0aGlzLnByb3BzLnZhbHVlfHwiIil9LGhhbmRs
ZUNoYW5nZTpmdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4gdGhpcy5wcm9wcy5vbkNoYW5nZSYmKHRo
aXMuX2lzQ2hhbmdpbmc9ITAsdD10aGlzLnByb3BzLm9uQ2hhbmdlKGUpLHRoaXMuX2lzQ2hhbmdp
bmc9ITEpLHRoaXMuc2V0U3RhdGUoe2NoZWNrZWQ6ZS50YXJnZXQuY2hlY2tlZCx2YWx1ZTplLnRh
cmdldC52YWx1ZX0pLHR9fSk7dC5leHBvcnRzPXN9LHsiLi9ET01Qcm9wZXJ0eU9wZXJhdGlvbnMi
OjgsIi4vUmVhY3RDb21wb3NpdGVDb21wb25lbnQiOjIzLCIuL1JlYWN0RE9NIjoyNSwiLi9tZXJn
ZSI6ODF9XSwyOTpbZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7dmFyIG49ZSgiLi9SZWFjdENv
bXBvc2l0ZUNvbXBvbmVudCIpLHI9ZSgiLi9SZWFjdERPTSIpLG89ci5vcHRpb24saT1uLmNyZWF0
ZUNsYXNzKHtjb21wb25lbnRXaWxsTW91bnQ6ZnVuY3Rpb24oKXtudWxsIT10aGlzLnByb3BzLnNl
bGVjdGVkfSxyZW5kZXI6ZnVuY3Rpb24oKXtyZXR1cm4gbyh0aGlzLnByb3BzLHRoaXMucHJvcHMu
Y2hpbGRyZW4pfX0pO3QuZXhwb3J0cz1pfSx7Ii4vUmVhY3RDb21wb3NpdGVDb21wb25lbnQiOjIz
LCIuL1JlYWN0RE9NIjoyNX1dLDMwOltmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biBuKGUsdCl7bnVsbCE9ZVt0XSYmKGUubXVsdGlwbGU/YShBcnJheS5pc0FycmF5KGVbdF0pKTph
KCFBcnJheS5pc0FycmF5KGVbdF0pKSl9ZnVuY3Rpb24gcigpe2lmKG51bGwhPXRoaXMucHJvcHMu
dmFsdWUpZm9yKHZhciBlPXRoaXMuZ2V0RE9NTm9kZSgpLm9wdGlvbnMsdD0iIit0aGlzLnByb3Bz
LnZhbHVlLG49MCxyPWUubGVuZ3RoO3I+bjtuKyspe3ZhciBvPXRoaXMucHJvcHMubXVsdGlwbGU/
dC5pbmRleE9mKGVbbl0udmFsdWUpPj0wOm89ZVtuXS52YWx1ZT09PXQ7byE9PWVbbl0uc2VsZWN0
ZWQmJihlW25dLnNlbGVjdGVkPW8pfX12YXIgbz1lKCIuL1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50
IiksaT1lKCIuL1JlYWN0RE9NIiksYT1lKCIuL2ludmFyaWFudCIpLHM9ZSgiLi9tZXJnZSIpLHU9
aS5zZWxlY3QsbD1vLmNyZWF0ZUNsYXNzKHtwcm9wVHlwZXM6e2RlZmF1bHRWYWx1ZTpuLHZhbHVl
Om59LGdldEluaXRpYWxTdGF0ZTpmdW5jdGlvbigpe3JldHVybnt2YWx1ZTp0aGlzLnByb3BzLmRl
ZmF1bHRWYWx1ZXx8KHRoaXMucHJvcHMubXVsdGlwbGU/W106IiIpfX0sY29tcG9uZW50V2lsbFJl
Y2VpdmVQcm9wczpmdW5jdGlvbihlKXshdGhpcy5wcm9wcy5tdWx0aXBsZSYmZS5tdWx0aXBsZT90
aGlzLnNldFN0YXRlKHt2YWx1ZTpbdGhpcy5zdGF0ZS52YWx1ZV19KTp0aGlzLnByb3BzLm11bHRp
cGxlJiYhZS5tdWx0aXBsZSYmdGhpcy5zZXRTdGF0ZSh7dmFsdWU6dGhpcy5zdGF0ZS52YWx1ZVsw
XX0pfSxzaG91bGRDb21wb25lbnRVcGRhdGU6ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5faXNDaGFu
Z2luZ30scmVuZGVyOmZ1bmN0aW9uKCl7dmFyIGU9cyh0aGlzLnByb3BzKTtyZXR1cm4gZS5vbkNo
YW5nZT10aGlzLmhhbmRsZUNoYW5nZSxlLnZhbHVlPW51bGwsdShlLHRoaXMucHJvcHMuY2hpbGRy
ZW4pfSxjb21wb25lbnREaWRNb3VudDpyLGNvbXBvbmVudERpZFVwZGF0ZTpyLGhhbmRsZUNoYW5n
ZTpmdW5jdGlvbihlKXt2YXIgdDt0aGlzLnByb3BzLm9uQ2hhbmdlJiYodGhpcy5faXNDaGFuZ2lu
Zz0hMCx0PXRoaXMucHJvcHMub25DaGFuZ2UoZSksdGhpcy5faXNDaGFuZ2luZz0hMSk7dmFyIG47
aWYodGhpcy5wcm9wcy5tdWx0aXBsZSl7bj1bXTtmb3IodmFyIHI9ZS50YXJnZXQub3B0aW9ucyxv
PTAsaT1yLmxlbmd0aDtpPm87bysrKXJbb10uc2VsZWN0ZWQmJm4ucHVzaChyW29dLnZhbHVlKX1l
bHNlIG49ZS50YXJnZXQudmFsdWU7cmV0dXJuIHRoaXMuc2V0U3RhdGUoe3ZhbHVlOm59KSx0fX0p
O3QuZXhwb3J0cz1sfSx7Ii4vUmVhY3RDb21wb3NpdGVDb21wb25lbnQiOjIzLCIuL1JlYWN0RE9N
IjoyNSwiLi9pbnZhcmlhbnQiOjc1LCIuL21lcmdlIjo4MX1dLDMxOltmdW5jdGlvbihlLHQpeyJ1
c2Ugc3RyaWN0Ijt2YXIgbj1lKCIuL0RPTVByb3BlcnR5T3BlcmF0aW9ucyIpLHI9ZSgiLi9SZWFj
dENvbXBvc2l0ZUNvbXBvbmVudCIpLG89ZSgiLi9SZWFjdERPTSIpLGk9ZSgiLi9pbnZhcmlhbnQi
KSxhPWUoIi4vbWVyZ2UiKSxzPW8udGV4dGFyZWEsdT17c3RyaW5nOiEwLG51bWJlcjohMH0sbD1y
LmNyZWF0ZUNsYXNzKHtnZXRJbml0aWFsU3RhdGU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3Bz
LmRlZmF1bHRWYWx1ZSx0PXRoaXMucHJvcHMuY2hpbGRyZW47cmV0dXJuIG51bGwhPXQmJihpKG51
bGw9PWUpLEFycmF5LmlzQXJyYXkodCkmJihpKHQubGVuZ3RoPD0xKSx0PXRbMF0pLGkodVt0eXBl
b2YgdF0pLGU9IiIrdCksZT1lfHwiIix7aW5pdGlhbFZhbHVlOm51bGwhPXRoaXMucHJvcHMudmFs
dWU/dGhpcy5wcm9wcy52YWx1ZTplLHZhbHVlOmV9fSxzaG91bGRDb21wb25lbnRVcGRhdGU6ZnVu
Y3Rpb24oKXtyZXR1cm4hdGhpcy5faXNDaGFuZ2luZ30sZ2V0VmFsdWU6ZnVuY3Rpb24oKXtyZXR1
cm4gbnVsbCE9dGhpcy5wcm9wcy52YWx1ZT90aGlzLnByb3BzLnZhbHVlOnRoaXMuc3RhdGUudmFs
dWV9LHJlbmRlcjpmdW5jdGlvbigpe3ZhciBlPWEodGhpcy5wcm9wcyk7cmV0dXJuIGkobnVsbD09
ZS5kYW5nZXJvdXNseVNldElubmVySFRNTCksZS52YWx1ZT10aGlzLmdldFZhbHVlKCksZS5vbkNo
YW5nZT10aGlzLmhhbmRsZUNoYW5nZSxzKGUsdGhpcy5zdGF0ZS5pbml0aWFsVmFsdWUpfSxjb21w
b25lbnREaWRVcGRhdGU6ZnVuY3Rpb24oZSx0LHIpe251bGwhPXRoaXMucHJvcHMudmFsdWUmJm4u
c2V0VmFsdWVGb3JQcm9wZXJ0eShyLCJ2YWx1ZSIsdGhpcy5wcm9wcy52YWx1ZXx8IiIpfSxoYW5k
bGVDaGFuZ2U6ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIHRoaXMucHJvcHMub25DaGFuZ2UmJih0
aGlzLl9pc0NoYW5naW5nPSEwLHQ9dGhpcy5wcm9wcy5vbkNoYW5nZShlKSx0aGlzLl9pc0NoYW5n
aW5nPSExKSx0aGlzLnNldFN0YXRlKHt2YWx1ZTplLnRhcmdldC52YWx1ZX0pLHR9fSk7dC5leHBv
cnRzPWx9LHsiLi9ET01Qcm9wZXJ0eU9wZXJhdGlvbnMiOjgsIi4vUmVhY3RDb21wb3NpdGVDb21w
b25lbnQiOjIzLCIuL1JlYWN0RE9NIjoyNSwiLi9pbnZhcmlhbnQiOjc1LCIuL21lcmdlIjo4MX1d
LDMyOltmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKCl7Zi5pbmplY3Rpb24u
aW5qZWN0RXZlbnRQbHVnaW5PcmRlcihwKSxmLmluamVjdGlvbi5pbmplY3RJbnN0YW5jZUhhbmRs
ZSh2KSxmLmluamVjdGlvbi5pbmplY3RFdmVudFBsdWdpbnNCeU5hbWUoe1NpbXBsZUV2ZW50UGx1
Z2luOm0sRW50ZXJMZWF2ZUV2ZW50UGx1Z2luOmQsQ2hhbmdlRXZlbnRQbHVnaW46aH0pLHIuaW5q
ZWN0aW9uLmluamVjdENvbXBvbmVudENsYXNzZXMoe2Zvcm06byxpbnB1dDppLG9wdGlvbjphLHNl
bGVjdDpzLHRleHRhcmVhOnV9KSxjLmluamVjdGlvbi5pbmplY3RET01Qcm9wZXJ0eUNvbmZpZyhs
KX12YXIgcj1lKCIuL1JlYWN0RE9NIiksbz1lKCIuL1JlYWN0RE9NRm9ybSIpLGk9ZSgiLi9SZWFj
dERPTUlucHV0IiksYT1lKCIuL1JlYWN0RE9NT3B0aW9uIikscz1lKCIuL1JlYWN0RE9NU2VsZWN0
IiksdT1lKCIuL1JlYWN0RE9NVGV4dGFyZWEiKSxsPWUoIi4vRGVmYXVsdERPTVByb3BlcnR5Q29u
ZmlnIiksYz1lKCIuL0RPTVByb3BlcnR5IikscD1lKCIuL0RlZmF1bHRFdmVudFBsdWdpbk9yZGVy
IiksZD1lKCIuL0VudGVyTGVhdmVFdmVudFBsdWdpbiIpLGg9ZSgiLi9DaGFuZ2VFdmVudFBsdWdp
biIpLGY9ZSgiLi9FdmVudFBsdWdpbkh1YiIpLHY9ZSgiLi9SZWFjdEluc3RhbmNlSGFuZGxlcyIp
LG09ZSgiLi9TaW1wbGVFdmVudFBsdWdpbiIpO3QuZXhwb3J0cz17aW5qZWN0Om59fSx7Ii4vQ2hh
bmdlRXZlbnRQbHVnaW4iOjUsIi4vRE9NUHJvcGVydHkiOjcsIi4vRGVmYXVsdERPTVByb3BlcnR5
Q29uZmlnIjoxMCwiLi9EZWZhdWx0RXZlbnRQbHVnaW5PcmRlciI6MTEsIi4vRW50ZXJMZWF2ZUV2
ZW50UGx1Z2luIjoxMiwiLi9FdmVudFBsdWdpbkh1YiI6MTUsIi4vUmVhY3RET00iOjI1LCIuL1Jl
YWN0RE9NRm9ybSI6MjYsIi4vUmVhY3RET01JbnB1dCI6MjgsIi4vUmVhY3RET01PcHRpb24iOjI5
LCIuL1JlYWN0RE9NU2VsZWN0IjozMCwiLi9SZWFjdERPTVRleHRhcmVhIjozMSwiLi9SZWFjdElu
c3RhbmNlSGFuZGxlcyI6MzcsIi4vU2ltcGxlRXZlbnRQbHVnaW4iOjQ5fV0sMzM6W2Z1bmN0aW9u
KGUsdCl7IWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSx0LG4pe3MubGlzdGVu
KG4sdCx2LlRvcExldmVsQ2FsbGJhY2tDcmVhdG9yLmNyZWF0ZVRvcExldmVsQ2FsbGJhY2soZSkp
fWZ1bmN0aW9uIHIoZSx0LG4pe3MuY2FwdHVyZShuLHQsdi5Ub3BMZXZlbENhbGxiYWNrQ3JlYXRv
ci5jcmVhdGVUb3BMZXZlbENhbGxiYWNrKGUpKX1mdW5jdGlvbiBvKCl7dmFyIGU9cC5yZWZyZXNo
U2Nyb2xsVmFsdWVzO3MubGlzdGVuKHdpbmRvdywic2Nyb2xsIixlKSxzLmxpc3Rlbih3aW5kb3cs
InJlc2l6ZSIsZSl9ZnVuY3Rpb24gaShlKXtkKCFmKTt2YXIgdD1hLnRvcExldmVsVHlwZXMsaT1k
b2N1bWVudDtvKCksbih0LnRvcE1vdXNlT3ZlciwibW91c2VvdmVyIixpKSxuKHQudG9wTW91c2VE
b3duLCJtb3VzZWRvd24iLGkpLG4odC50b3BNb3VzZVVwLCJtb3VzZXVwIixpKSxuKHQudG9wTW91
c2VNb3ZlLCJtb3VzZW1vdmUiLGkpLG4odC50b3BNb3VzZU91dCwibW91c2VvdXQiLGkpLG4odC50
b3BDbGljaywiY2xpY2siLGkpLG4odC50b3BEb3VibGVDbGljaywiZGJsY2xpY2siLGkpLGUmJihu
KHQudG9wVG91Y2hTdGFydCwidG91Y2hzdGFydCIsaSksbih0LnRvcFRvdWNoRW5kLCJ0b3VjaGVu
ZCIsaSksbih0LnRvcFRvdWNoTW92ZSwidG91Y2htb3ZlIixpKSxuKHQudG9wVG91Y2hDYW5jZWws
InRvdWNoY2FuY2VsIixpKSksbih0LnRvcEtleVVwLCJrZXl1cCIsaSksbih0LnRvcEtleVByZXNz
LCJrZXlwcmVzcyIsaSksbih0LnRvcEtleURvd24sImtleWRvd24iLGkpLG4odC50b3BJbnB1dCwi
aW5wdXQiLGkpLG4odC50b3BDaGFuZ2UsImNoYW5nZSIsaSksbih0LnRvcFNlbGVjdGlvbkNoYW5n
ZSwic2VsZWN0aW9uY2hhbmdlIixpKSxuKHQudG9wRE9NQ2hhcmFjdGVyRGF0YU1vZGlmaWVkLCJE
T01DaGFyYWN0ZXJEYXRhTW9kaWZpZWQiLGkpLGgoImRyYWciKSYmKG4odC50b3BEcmFnLCJkcmFn
IixpKSxuKHQudG9wRHJhZ0VuZCwiZHJhZ2VuZCIsaSksbih0LnRvcERyYWdFbnRlciwiZHJhZ2Vu
dGVyIixpKSxuKHQudG9wRHJhZ0V4aXQsImRyYWdleGl0IixpKSxuKHQudG9wRHJhZ0xlYXZlLCJk
cmFnbGVhdmUiLGkpLG4odC50b3BEcmFnT3ZlciwiZHJhZ292ZXIiLGkpLG4odC50b3BEcmFnU3Rh
cnQsImRyYWdzdGFydCIsaSksbih0LnRvcERyb3AsImRyb3AiLGkpKSxoKCJ3aGVlbCIpP24odC50
b3BXaGVlbCwid2hlZWwiLGkpOmgoIm1vdXNld2hlZWwiKT9uKHQudG9wV2hlZWwsIm1vdXNld2hl
ZWwiLGkpOm4odC50b3BXaGVlbCwiRE9NTW91c2VTY3JvbGwiLGkpLGgoInNjcm9sbCIsITApP3Io
dC50b3BTY3JvbGwsInNjcm9sbCIsaSk6bih0LnRvcFNjcm9sbCwic2Nyb2xsIix3aW5kb3cpLGgo
ImZvY3VzIiwhMCk/KHIodC50b3BGb2N1cywiZm9jdXMiLGkpLHIodC50b3BCbHVyLCJibHVyIixp
KSk6aCgiZm9jdXNpbiIpJiYobih0LnRvcEZvY3VzLCJmb2N1c2luIixpKSxuKHQudG9wQmx1ciwi
Zm9jdXNvdXQiLGkpKX12YXIgYT1lKCIuL0V2ZW50Q29uc3RhbnRzIikscz1lKCIuL0V2ZW50TGlz
dGVuZXIiKSx1PWUoIi4vRXZlbnRQbHVnaW5IdWIiKSxsPWUoIi4vRXhlY3V0aW9uRW52aXJvbm1l
bnQiKSxjPWUoIi4vUmVhY3RVcGRhdGVzIikscD1lKCIuL1ZpZXdwb3J0TWV0cmljcyIpLGQ9ZSgi
Li9pbnZhcmlhbnQiKSxoPWUoIi4vaXNFdmVudFN1cHBvcnRlZCIpLGY9ITEsdj17VG9wTGV2ZWxD
YWxsYmFja0NyZWF0b3I6bnVsbCxlbnN1cmVMaXN0ZW5pbmc6ZnVuY3Rpb24oZSx0KXtkKGwuY2Fu
VXNlRE9NKSxmfHwodi5Ub3BMZXZlbENhbGxiYWNrQ3JlYXRvcj10LGkoZSksZj0hMCl9LHNldEVu
YWJsZWQ6ZnVuY3Rpb24oZSl7ZChsLmNhblVzZURPTSksdi5Ub3BMZXZlbENhbGxiYWNrQ3JlYXRv
ciYmdi5Ub3BMZXZlbENhbGxiYWNrQ3JlYXRvci5zZXRFbmFibGVkKGUpfSxpc0VuYWJsZWQ6ZnVu
Y3Rpb24oKXtyZXR1cm4hKCF2LlRvcExldmVsQ2FsbGJhY2tDcmVhdG9yfHwhdi5Ub3BMZXZlbENh
bGxiYWNrQ3JlYXRvci5pc0VuYWJsZWQoKSl9LGhhbmRsZVRvcExldmVsOmZ1bmN0aW9uKGUsdCxu
LHIpe3ZhciBvPXUuZXh0cmFjdEV2ZW50cyhlLHQsbixyKTtjLmJhdGNoZWRVcGRhdGVzKGZ1bmN0
aW9uKCl7dS5lbnF1ZXVlRXZlbnRzKG8pLHUucHJvY2Vzc0V2ZW50UXVldWUoKX0pfSxyZWdpc3Ry
YXRpb25OYW1lczp1LnJlZ2lzdHJhdGlvbk5hbWVzLHB1dExpc3RlbmVyOnUucHV0TGlzdGVuZXIs
Z2V0TGlzdGVuZXI6dS5nZXRMaXN0ZW5lcixkZWxldGVMaXN0ZW5lcjp1LmRlbGV0ZUxpc3RlbmVy
LGRlbGV0ZUFsbExpc3RlbmVyczp1LmRlbGV0ZUFsbExpc3RlbmVycyx0cmFwQnViYmxlZEV2ZW50
Om4sdHJhcENhcHR1cmVkRXZlbnQ6cn07dC5leHBvcnRzPXZ9KCl9LHsiLi9FdmVudENvbnN0YW50
cyI6MTMsIi4vRXZlbnRMaXN0ZW5lciI6MTQsIi4vRXZlbnRQbHVnaW5IdWIiOjE1LCIuL0V4ZWN1
dGlvbkVudmlyb25tZW50IjoxOSwiLi9SZWFjdFVwZGF0ZXMiOjQ4LCIuL1ZpZXdwb3J0TWV0cmlj
cyI6NTksIi4vaW52YXJpYW50Ijo3NSwiLi9pc0V2ZW50U3VwcG9ydGVkIjo3Nn1dLDM0OltmdW5j
dGlvbihlLHQpeyFmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1lKCIuL0V4ZWN1dGlvbkVu
dmlyb25tZW50Iikscj1lKCIuL1JlYWN0RXZlbnRFbWl0dGVyIiksbz1lKCIuL1JlYWN0SUQiKSxp
PWUoIi4vUmVhY3RJbnN0YW5jZUhhbmRsZXMiKSxhPWUoIi4vZ2V0RXZlbnRUYXJnZXQiKSxzPSEw
LHU9e3NldEVuYWJsZWQ6ZnVuY3Rpb24oZSl7cz0hIWV9LGlzRW5hYmxlZDpmdW5jdGlvbigpe3Jl
dHVybiBzfSxjcmVhdGVUb3BMZXZlbENhbGxiYWNrOmZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlv
bih0KXtpZihzKXt0LnNyY0VsZW1lbnQmJnQuc3JjRWxlbWVudCE9PXQudGFyZ2V0JiYodC50YXJn
ZXQ9dC5zcmNFbGVtZW50KTt2YXIgdT1pLmdldEZpcnN0UmVhY3RET00oYSh0KSl8fG4uZ2xvYmFs
LGw9by5nZXRJRCh1KXx8IiI7ci5oYW5kbGVUb3BMZXZlbChlLHUsbCx0KX19fX07dC5leHBvcnRz
PXV9KCl9LHsiLi9FeGVjdXRpb25FbnZpcm9ubWVudCI6MTksIi4vUmVhY3RFdmVudEVtaXR0ZXIi
OjMzLCIuL1JlYWN0SUQiOjM1LCIuL1JlYWN0SW5zdGFuY2VIYW5kbGVzIjozNywiLi9nZXRFdmVu
dFRhcmdldCI6NzB9XSwzNTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBy
KGUpe3ZhciB0PW8oZSk7aWYodClpZihoLmhhc093blByb3BlcnR5KHQpKXt2YXIgbj1oW3RdO24h
PT1lJiYoYyghcyhuLHQpKSxoW3RdPWUpfWVsc2UgaFt0XT1lO3JldHVybiB0fWZ1bmN0aW9uIG8o
ZSl7aWYoZSYmZS5nZXRBdHRyaWJ1dGVOb2RlKXt2YXIgdD1lLmdldEF0dHJpYnV0ZU5vZGUoZCk7
aWYodClyZXR1cm4gdC52YWx1ZXx8IiJ9cmV0dXJuIiJ9ZnVuY3Rpb24gaShlLHQpe3ZhciBuPW8o
ZSk7biE9PXQmJmRlbGV0ZSBoW25dLGUuc2V0QXR0cmlidXRlKGQsdCksaFt0XT1lfWZ1bmN0aW9u
IGEoZSl7cmV0dXJuIGguaGFzT3duUHJvcGVydHkoZSkmJnMoaFtlXSxlKXx8KGhbZV09cC5maW5k
UmVhY3ROb2RlQnlJRChlKSksaFtlXX1mdW5jdGlvbiBzKGUsdCl7aWYoZSl7YyhvKGUpPT09dCk7
dmFyIG49cC5maW5kUmVhY3RDb250YWluZXJGb3JJRCh0KTtpZihuJiZ1KG4sZSkpcmV0dXJuITB9
cmV0dXJuITF9ZnVuY3Rpb24gdShlLHQpe2lmKGUuY29udGFpbnMpcmV0dXJuIGUuY29udGFpbnMo
dCk7aWYodD09PWUpcmV0dXJuITA7Zm9yKDM9PT10Lm5vZGVUeXBlJiYodD10LnBhcmVudE5vZGUp
O3QmJjE9PT10Lm5vZGVUeXBlOyl7aWYodD09PWUpcmV0dXJuITA7dD10LnBhcmVudE5vZGV9cmV0
dXJuITF9ZnVuY3Rpb24gbChlKXtkZWxldGUgaFtlXX12YXIgYz1lKCIuL2ludmFyaWFudCIpLHA9
ZSgiLi9SZWFjdE1vdW50IiksZD0iZGF0YS1yZWFjdGlkIixoPXt9O24uQVRUUl9OQU1FPWQsbi5n
ZXRJRD1yLG4ucmF3R2V0SUQ9byxuLnNldElEPWksbi5nZXROb2RlPWEsbi5wdXJnZUlEPWx9LHsi
Li9SZWFjdE1vdW50IjozOCwiLi9pbnZhcmlhbnQiOjc1fV0sMzY6W2Z1bmN0aW9uKGUsdCl7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIG4oKXt0cnl7cmV0dXJuIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnR9
Y2F0Y2goZSl7fX1mdW5jdGlvbiByKGUpe3JldHVybiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQu
Y29udGFpbnMoZSl9dmFyIG89e2hhc1NlbGVjdGlvbkNhcGFiaWxpdGllczpmdW5jdGlvbihlKXty
ZXR1cm4gZSYmKCJJTlBVVCI9PT1lLm5vZGVOYW1lJiYidGV4dCI9PT1lLnR5cGV8fCJURVhUQVJF
QSI9PT1lLm5vZGVOYW1lfHwidHJ1ZSI9PT1lLmNvbnRlbnRFZGl0YWJsZSl9LGdldFNlbGVjdGlv
bkluZm9ybWF0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9bigpO3JldHVybntmb2N1c2VkRWxlbTplLHNl
bGVjdGlvblJhbmdlOm8uaGFzU2VsZWN0aW9uQ2FwYWJpbGl0aWVzKGUpP28uZ2V0U2VsZWN0aW9u
KGUpOm51bGx9fSxyZXN0b3JlU2VsZWN0aW9uOmZ1bmN0aW9uKGUpe3ZhciB0PW4oKSxpPWUuZm9j
dXNlZEVsZW0sYT1lLnNlbGVjdGlvblJhbmdlO3QhPT1pJiZyKGkpJiYoby5oYXNTZWxlY3Rpb25D
YXBhYmlsaXRpZXMoaSkmJm8uc2V0U2VsZWN0aW9uKGksYSksaS5mb2N1cygpKX0sZ2V0U2VsZWN0
aW9uOmZ1bmN0aW9uKGUpe3ZhciB0O2lmKCJ0cnVlIj09PWUuY29udGVudEVkaXRhYmxlJiZ3aW5k
b3cuZ2V0U2VsZWN0aW9uKXt0PXdpbmRvdy5nZXRTZWxlY3Rpb24oKS5nZXRSYW5nZUF0KDApO3Zh
ciBuPXQuY29tbW9uQW5jZXN0b3JDb250YWluZXI7cmV0dXJuIG4mJjM9PT1uLm5vZGVUeXBlJiYo
bj1uLnBhcmVudE5vZGUpLG4hPT1lP3tzdGFydDowLGVuZDowfTp7c3RhcnQ6dC5zdGFydE9mZnNl
dCxlbmQ6dC5lbmRPZmZzZXR9fWlmKCFkb2N1bWVudC5zZWxlY3Rpb24pcmV0dXJue3N0YXJ0OmUu
c2VsZWN0aW9uU3RhcnQsZW5kOmUuc2VsZWN0aW9uRW5kfTtpZih0PWRvY3VtZW50LnNlbGVjdGlv
bi5jcmVhdGVSYW5nZSgpLHQucGFyZW50RWxlbWVudCgpIT09ZSlyZXR1cm57c3RhcnQ6MCxlbmQ6
MH07dmFyIHI9ZS52YWx1ZS5sZW5ndGg7aWYoIklOUFVUIj09PWUubm9kZU5hbWUpcmV0dXJue3N0
YXJ0Oi10Lm1vdmVTdGFydCgiY2hhcmFjdGVyIiwtciksZW5kOi10Lm1vdmVFbmQoImNoYXJhY3Rl
ciIsLXIpfTt2YXIgbz10LmR1cGxpY2F0ZSgpO28ubW92ZVRvRWxlbWVudFRleHQoZSksby5zZXRF
bmRQb2ludCgiU3RhcnRUb0VuZCIsdCk7dmFyIGk9ci1vLnRleHQubGVuZ3RoO3JldHVybiBvLnNl
dEVuZFBvaW50KCJTdGFydFRvU3RhcnQiLHQpLHtzdGFydDpyLW8udGV4dC5sZW5ndGgsZW5kOml9
fSxzZXRTZWxlY3Rpb246ZnVuY3Rpb24oZSx0KXt2YXIgbixyPXQuc3RhcnQsbz10LmVuZDtpZigi
dW5kZWZpbmVkIj09dHlwZW9mIG8mJihvPXIpLGRvY3VtZW50LnNlbGVjdGlvbil7aWYoIlRFWFRB
UkVBIj09PWUudGFnTmFtZSl7dmFyIGk9KGUudmFsdWUuc2xpY2UoMCxyKS5tYXRjaCgvXHIvZyl8
fFtdKS5sZW5ndGgsYT0oZS52YWx1ZS5zbGljZShyLG8pLm1hdGNoKC9cci9nKXx8W10pLmxlbmd0
aDtyLT1pLG8tPWkrYX1uPWUuY3JlYXRlVGV4dFJhbmdlKCksbi5jb2xsYXBzZSghMCksbi5tb3Zl
U3RhcnQoImNoYXJhY3RlciIsciksbi5tb3ZlRW5kKCJjaGFyYWN0ZXIiLG8tciksbi5zZWxlY3Qo
KX1lbHNlIGlmKCJ0cnVlIj09PWUuY29udGVudEVkaXRhYmxlKXtpZigxPT09ZS5jaGlsZE5vZGVz
Lmxlbmd0aCl7bj1kb2N1bWVudC5jcmVhdGVSYW5nZSgpLG4uc2V0U3RhcnQoZS5jaGlsZE5vZGVz
WzBdLHIpLG4uc2V0RW5kKGUuY2hpbGROb2Rlc1swXSxvKTt2YXIgcz13aW5kb3cuZ2V0U2VsZWN0
aW9uKCk7cy5yZW1vdmVBbGxSYW5nZXMoKSxzLmFkZFJhbmdlKG4pfX1lbHNlIGUuc2VsZWN0aW9u
U3RhcnQ9cixlLnNlbGVjdGlvbkVuZD1NYXRoLm1pbihvLGUudmFsdWUubGVuZ3RoKSxlLmZvY3Vz
KCl9fTt0LmV4cG9ydHM9b30se31dLDM3OltmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiBuKGUpe3JldHVybiBkKyJyWyIrZS50b1N0cmluZygzNikrIl0ifWZ1bmN0aW9uIHIoZSx0
KXtyZXR1cm4gZS5jaGFyQXQodCk9PT1kfHx0PT09ZS5sZW5ndGh9ZnVuY3Rpb24gbyhlKXtyZXR1
cm4iIj09PWV8fGUuY2hhckF0KDApPT09ZCYmZS5jaGFyQXQoZS5sZW5ndGgtMSkhPT1kfWZ1bmN0
aW9uIGkoZSx0KXtyZXR1cm4gMD09PXQuaW5kZXhPZihlKSYmcih0LGUubGVuZ3RoKX1mdW5jdGlv
biBhKGUpe3JldHVybiBlP2Uuc3Vic3RyKDAsZS5sYXN0SW5kZXhPZihkKSk6IiJ9ZnVuY3Rpb24g
cyhlLHQpe2lmKHAobyhlKSYmbyh0KSkscChpKGUsdCkpLGU9PT10KXJldHVybiBlO2Zvcih2YXIg
bj1lLmxlbmd0aCtoLGE9bjthPHQubGVuZ3RoJiYhcih0LGEpO2ErKyk7cmV0dXJuIHQuc3Vic3Ry
KDAsYSl9ZnVuY3Rpb24gdShlLHQpe3ZhciBuPU1hdGgubWluKGUubGVuZ3RoLHQubGVuZ3RoKTtp
ZigwPT09bilyZXR1cm4iIjtmb3IodmFyIGk9MCxhPTA7bj49YTthKyspaWYocihlLGEpJiZyKHQs
YSkpaT1hO2Vsc2UgaWYoZS5jaGFyQXQoYSkhPT10LmNoYXJBdChhKSlicmVhazt2YXIgcz1lLnN1
YnN0cigwLGkpO3JldHVybiBwKG8ocykpLHN9ZnVuY3Rpb24gbChlLHQsbixyLG8sdSl7ZT1lfHwi
Iix0PXR8fCIiLHAoZSE9PXQpO3ZhciBsPWkodCxlKTtwKGx8fGkoZSx0KSk7Zm9yKHZhciBjPTAs
ZD1sP2E6cyxoPWU7byYmaD09PWV8fHUmJmg9PT10fHxuKGgsbCxyKSxoIT09dDtoPWQoaCx0KSlw
KGMrKzxmKX12YXIgYz1lKCIuL1JlYWN0SUQiKSxwPWUoIi4vaW52YXJpYW50IiksZD0iLiIsaD1k
Lmxlbmd0aCxmPTEwMCx2PTk5OTk5OTksbT17c2VwYXJhdG9yOmQsY3JlYXRlUmVhY3RSb290SUQ6
ZnVuY3Rpb24oKXtyZXR1cm4gbihNYXRoLmNlaWwoTWF0aC5yYW5kb20oKSp2KSl9LGlzUmVuZGVy
ZWRCeVJlYWN0OmZ1bmN0aW9uKGUpe2lmKDEhPT1lLm5vZGVUeXBlKXJldHVybiExO3ZhciB0PWMu
Z2V0SUQoZSk7cmV0dXJuIHQ/dC5jaGFyQXQoMCk9PT1kOiExfSxnZXRGaXJzdFJlYWN0RE9NOmZ1
bmN0aW9uKGUpe2Zvcih2YXIgdD1lO3QmJnQucGFyZW50Tm9kZSE9PXQ7KXtpZihtLmlzUmVuZGVy
ZWRCeVJlYWN0KHQpKXJldHVybiB0O3Q9dC5wYXJlbnROb2RlfXJldHVybiBudWxsfSxmaW5kQ29t
cG9uZW50Um9vdDpmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj1bZS5maXJzdENoaWxkXSxyPTA7cjxu
Lmxlbmd0aDspZm9yKHZhciBvPW5bcisrXTtvOyl7dmFyIGE9Yy5nZXRJRChvKTtpZihhKXtpZih0
PT09YSlyZXR1cm4gbztpZihpKGEsdCkpe24ubGVuZ3RoPXI9MCxuLnB1c2goby5maXJzdENoaWxk
KTticmVha31uLnB1c2goby5maXJzdENoaWxkKX1lbHNlIG4ucHVzaChvLmZpcnN0Q2hpbGQpO289
by5uZXh0U2libGluZ31wKCExKX0sZ2V0UmVhY3RSb290SURGcm9tTm9kZUlEOmZ1bmN0aW9uKGUp
e3ZhciB0PS9cLnJcW1teXF1dK1xdLy5leGVjKGUpO3JldHVybiB0JiZ0WzBdfSx0cmF2ZXJzZUVu
dGVyTGVhdmU6ZnVuY3Rpb24oZSx0LG4scixvKXt2YXIgaT11KGUsdCk7aSE9PWUmJmwoZSxpLG4s
ciwhMSwhMCksaSE9PXQmJmwoaSx0LG4sbywhMCwhMSl9LHRyYXZlcnNlVHdvUGhhc2U6ZnVuY3Rp
b24oZSx0LG4pe2UmJihsKCIiLGUsdCxuLCEwLCExKSxsKGUsIiIsdCxuLCExLCEwKSl9LF9nZXRG
aXJzdENvbW1vbkFuY2VzdG9ySUQ6dSxfZ2V0TmV4dERlc2NlbmRhbnRJRDpzfTt0LmV4cG9ydHM9
bX0seyIuL1JlYWN0SUQiOjM1LCIuL2ludmFyaWFudCI6NzV9XSwzODpbZnVuY3Rpb24oZSx0KXsh
ZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlKXtyZXR1cm4gZSYmZS5maXJzdENo
aWxkfWZ1bmN0aW9uIHIoZSl7dmFyIHQ9bihlKTtyZXR1cm4gdCYmcy5nZXRJRCh0KX1lKCIuL2lu
dmFyaWFudCIpO3ZhciBvPWUoIi4vUmVhY3RFdmVudEVtaXR0ZXIiKSxpPWUoIi4vUmVhY3RJbnN0
YW5jZUhhbmRsZXMiKSxhPWUoIi4vUmVhY3RFdmVudFRvcExldmVsQ2FsbGJhY2siKSxzPWUoIi4v
UmVhY3RJRCIpLHU9ZSgiLi8kIiksbD17fSxjPXt9LHA9e3RvdGFsSW5zdGFudGlhdGlvblRpbWU6
MCx0b3RhbEluamVjdGlvblRpbWU6MCx1c2VUb3VjaEV2ZW50czohMSxzY3JvbGxNb25pdG9yOmZ1
bmN0aW9uKGUsdCl7dCgpfSxwcmVwYXJlVG9wTGV2ZWxFdmVudHM6ZnVuY3Rpb24oZSl7by5lbnN1
cmVMaXN0ZW5pbmcocC51c2VUb3VjaEV2ZW50cyxlKX0sX3VwZGF0ZVJvb3RDb21wb25lbnQ6ZnVu
Y3Rpb24oZSx0LG4scil7dmFyIG89dC5wcm9wcztyZXR1cm4gcC5zY3JvbGxNb25pdG9yKG4sZnVu
Y3Rpb24oKXtlLnJlcGxhY2VQcm9wcyhvLHIpfSksZX0sX3JlZ2lzdGVyQ29tcG9uZW50OmZ1bmN0
aW9uKGUsdCl7cC5wcmVwYXJlVG9wTGV2ZWxFdmVudHMoYSk7dmFyIG49cC5yZWdpc3RlckNvbnRh
aW5lcih0KTtyZXR1cm4gbFtuXT1lLG59LF9yZW5kZXJOZXdSb290Q29tcG9uZW50OmZ1bmN0aW9u
KGUsdCxuKXt2YXIgcj1wLl9yZWdpc3RlckNvbXBvbmVudChlLHQpO3JldHVybiBlLm1vdW50Q29t
cG9uZW50SW50b05vZGUocix0LG4pLGV9LHJlbmRlckNvbXBvbmVudDpmdW5jdGlvbihlLHQsbyl7
dmFyIGE9bFtyKHQpXTtpZihhKXtpZihhLmNvbnN0cnVjdG9yPT09ZS5jb25zdHJ1Y3RvcilyZXR1
cm4gcC5fdXBkYXRlUm9vdENvbXBvbmVudChhLGUsdCxvKTtwLnVubW91bnRBbmRSZWxlYXNlUmVh
Y3RSb290Tm9kZSh0KX12YXIgcz1uKHQpLHU9cyYmaS5pc1JlbmRlcmVkQnlSZWFjdChzKSxjPXUm
JiFhLGQ9cC5fcmVuZGVyTmV3Um9vdENvbXBvbmVudChlLHQsYyk7cmV0dXJuIG8mJm8oKSxkfSxj
b25zdHJ1Y3RBbmRSZW5kZXJDb21wb25lbnQ6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBwLnJlbmRl
ckNvbXBvbmVudChlKHQpLG4pfSxjb25zdHJ1Y3RBbmRSZW5kZXJDb21wb25lbnRCeUlEOmZ1bmN0
aW9uKGUsdCxuKXtyZXR1cm4gcC5jb25zdHJ1Y3RBbmRSZW5kZXJDb21wb25lbnQoZSx0LHUobikp
fSxyZWdpc3RlckNvbnRhaW5lcjpmdW5jdGlvbihlKXt2YXIgdD1yKGUpO3JldHVybiB0JiYodD1p
LmdldFJlYWN0Um9vdElERnJvbU5vZGVJRCh0KSksdHx8KHQ9aS5jcmVhdGVSZWFjdFJvb3RJRCgp
KSxjW3RdPWUsdH0sdW5tb3VudEFuZFJlbGVhc2VSZWFjdFJvb3ROb2RlOmZ1bmN0aW9uKGUpe3Zh
ciB0PXIoZSksbj1sW3RdO3JldHVybiBuPyhuLnVubW91bnRDb21wb25lbnRGcm9tTm9kZShlKSxk
ZWxldGUgbFt0XSxkZWxldGUgY1t0XSwhMCk6ITF9LGZpbmRSZWFjdENvbnRhaW5lckZvcklEOmZ1
bmN0aW9uKGUpe3ZhciB0PWkuZ2V0UmVhY3RSb290SURGcm9tTm9kZUlEKGUpLG49Y1t0XTtyZXR1
cm4gbn0sZmluZFJlYWN0Tm9kZUJ5SUQ6ZnVuY3Rpb24oZSl7dmFyIHQ9cC5maW5kUmVhY3RDb250
YWluZXJGb3JJRChlKTtyZXR1cm4gaS5maW5kQ29tcG9uZW50Um9vdCh0LGUpfX07dC5leHBvcnRz
PXB9KCl9LHsiLi8kIjoxLCIuL1JlYWN0RXZlbnRFbWl0dGVyIjozMywiLi9SZWFjdEV2ZW50VG9w
TGV2ZWxDYWxsYmFjayI6MzQsIi4vUmVhY3RJRCI6MzUsIi4vUmVhY3RJbnN0YW5jZUhhbmRsZXMi
OjM3LCIuL2ludmFyaWFudCI6NzV9XSwzOTpbZnVuY3Rpb24oZSx0KXshZnVuY3Rpb24oKXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gbihlLHQpe3JldHVybiBlJiZ0JiZlLmNvbnN0cnVjdG9yPT09dC5j
b25zdHJ1Y3Rvcn12YXIgcj1lKCIuL1JlYWN0Q29tcG9uZW50Iiksbz17ZW5xdWV1ZU1hcmt1cEF0
OmZ1bmN0aW9uKGUsdCl7dGhpcy5kb21PcGVyYXRpb25zPXRoaXMuZG9tT3BlcmF0aW9uc3x8W10s
dGhpcy5kb21PcGVyYXRpb25zLnB1c2goe2luc2VydE1hcmt1cDplLGZpbmFsSW5kZXg6dH0pfSxl
bnF1ZXVlTW92ZTpmdW5jdGlvbihlLHQpe3RoaXMuZG9tT3BlcmF0aW9ucz10aGlzLmRvbU9wZXJh
dGlvbnN8fFtdLHRoaXMuZG9tT3BlcmF0aW9ucy5wdXNoKHttb3ZlRnJvbTplLGZpbmFsSW5kZXg6
dH0pfSxlbnF1ZXVlVW5tb3VudENoaWxkQnlOYW1lOmZ1bmN0aW9uKGUsdCl7ci5pc1ZhbGlkQ29t
cG9uZW50KHQpJiYodGhpcy5kb21PcGVyYXRpb25zPXRoaXMuZG9tT3BlcmF0aW9uc3x8W10sdGhp
cy5kb21PcGVyYXRpb25zLnB1c2goe3JlbW92ZUF0OnQuX2RvbUluZGV4fSksdC51bm1vdW50Q29t
cG9uZW50JiZ0LnVubW91bnRDb21wb25lbnQoKSxkZWxldGUgdGhpcy5fcmVuZGVyZWRDaGlsZHJl
bltlXSl9LHByb2Nlc3NDaGlsZERPTU9wZXJhdGlvbnNRdWV1ZTpmdW5jdGlvbigpe3RoaXMuZG9t
T3BlcmF0aW9ucyYmKHIuRE9NSURPcGVyYXRpb25zLm1hbmFnZUNoaWxkcmVuQnlQYXJlbnRJRCh0
aGlzLl9yb290Tm9kZUlELHRoaXMuZG9tT3BlcmF0aW9ucyksdGhpcy5kb21PcGVyYXRpb25zPW51
bGwpfSx1bm1vdW50TXVsdGlDaGlsZDpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX3JlbmRlcmVkQ2hp
bGRyZW47Zm9yKHZhciB0IGluIGUpaWYoZS5oYXNPd25Qcm9wZXJ0eSh0KSYmZVt0XSl7dmFyIG49
ZVt0XTtuLnVubW91bnRDb21wb25lbnQmJm4udW5tb3VudENvbXBvbmVudCgpfXRoaXMuX3JlbmRl
cmVkQ2hpbGRyZW49bnVsbH0sbW91bnRNdWx0aUNoaWxkOmZ1bmN0aW9uKGUsdCl7dmFyIG49IiIs
cj0wO2Zvcih2YXIgbyBpbiBlKXt2YXIgaT1lW29dO2UuaGFzT3duUHJvcGVydHkobykmJmkmJihu
Kz1pLm1vdW50Q29tcG9uZW50KHRoaXMuX3Jvb3ROb2RlSUQrIi4iK28sdCksaS5fZG9tSW5kZXg9
cixyKyspfXJldHVybiB0aGlzLl9yZW5kZXJlZENoaWxkcmVuPWUsdGhpcy5kb21PcGVyYXRpb25z
PW51bGwsbn0sdXBkYXRlTXVsdGlDaGlsZDpmdW5jdGlvbihlLHQpe2lmKGV8fHRoaXMuX3JlbmRl
cmVkQ2hpbGRyZW4pe2UmJiF0aGlzLl9yZW5kZXJlZENoaWxkcmVuP3RoaXMuX3JlbmRlcmVkQ2hp
bGRyZW49e306IWUmJnRoaXMuX3JlbmRlcmVkQ2hpbGRyZW4mJihlPXt9KTt2YXIgcj10aGlzLl9y
b290Tm9kZUlEKyIuIixvPW51bGwsaT0wLGE9MCxzPTA7Zm9yKHZhciB1IGluIGUpaWYoZS5oYXNP
d25Qcm9wZXJ0eSh1KSl7dmFyIGw9dGhpcy5fcmVuZGVyZWRDaGlsZHJlblt1XSxjPWVbdV07aWYo
bihsLGMpKW8mJih0aGlzLmVucXVldWVNYXJrdXBBdChvLGEtaSksbz1udWxsKSxpPTAsbC5fZG9t
SW5kZXg8cyYmdGhpcy5lbnF1ZXVlTW92ZShsLl9kb21JbmRleCxhKSxzPU1hdGgubWF4KGwuX2Rv
bUluZGV4LHMpLGwucmVjZWl2ZVByb3BzKGMucHJvcHMsdCksbC5fZG9tSW5kZXg9YTtlbHNlIGlm
KGwmJih0aGlzLmVucXVldWVVbm1vdW50Q2hpbGRCeU5hbWUodSxsKSxzPU1hdGgubWF4KGwuX2Rv
bUluZGV4LHMpKSxjKXt0aGlzLl9yZW5kZXJlZENoaWxkcmVuW3VdPWM7dmFyIHA9Yy5tb3VudENv
bXBvbmVudChyK3UsdCk7bz1vP28rcDpwLGkrKyxjLl9kb21JbmRleD1hfWE9Yz9hKzE6YX1vJiZ0
aGlzLmVucXVldWVNYXJrdXBBdChvLGEtaSk7Zm9yKHZhciBkIGluIHRoaXMuX3JlbmRlcmVkQ2hp
bGRyZW4paWYodGhpcy5fcmVuZGVyZWRDaGlsZHJlbi5oYXNPd25Qcm9wZXJ0eShkKSl7dmFyIGg9
dGhpcy5fcmVuZGVyZWRDaGlsZHJlbltkXTtoJiYhZVtkXSYmdGhpcy5lbnF1ZXVlVW5tb3VudENo
aWxkQnlOYW1lKGQsaCl9dGhpcy5wcm9jZXNzQ2hpbGRET01PcGVyYXRpb25zUXVldWUoKX19fSxp
PXtNaXhpbjpvfTt0LmV4cG9ydHM9aX0oKX0seyIuL1JlYWN0Q29tcG9uZW50IjoyMn1dLDQwOltm
dW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe2UmJihoKG51bGw9PWUuY2hp
bGRyZW58fG51bGw9PWUuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwpLGgobnVsbD09ZS5zdHlsZXx8
Im9iamVjdCI9PXR5cGVvZiBlLnN0eWxlKSl9ZnVuY3Rpb24gcihlLHQpe3RoaXMuX3RhZ09wZW49
IjwiK2UsdGhpcy5fdGFnQ2xvc2U9dD8iIjoiPC8iK2UrIj4iLHRoaXMudGFnTmFtZT1lLnRvVXBw
ZXJDYXNlKCl9dmFyIG89ZSgiLi9DU1NQcm9wZXJ0eU9wZXJhdGlvbnMiKSxpPWUoIi4vRE9NUHJv
cGVydHkiKSxhPWUoIi4vRE9NUHJvcGVydHlPcGVyYXRpb25zIikscz1lKCIuL1JlYWN0Q29tcG9u
ZW50IiksdT1lKCIuL1JlYWN0RXZlbnRFbWl0dGVyIiksbD1lKCIuL1JlYWN0TXVsdGlDaGlsZCIp
LGM9ZSgiLi9SZWFjdElEIikscD1lKCIuL2VzY2FwZVRleHRGb3JCcm93c2VyIiksZD1lKCIuL2Zs
YXR0ZW5DaGlsZHJlbiIpLGg9ZSgiLi9pbnZhcmlhbnQiKSxmPWUoIi4va2V5T2YiKSx2PWUoIi4v
bWVyZ2UiKSxtPWUoIi4vbWl4SW50byIpLGc9dS5wdXRMaXN0ZW5lcix5PXUuZGVsZXRlTGlzdGVu
ZXIsQz11LnJlZ2lzdHJhdGlvbk5hbWVzLEU9e3N0cmluZzohMCxudW1iZXI6ITB9LEQ9Zih7ZGFu
Z2Vyb3VzbHlTZXRJbm5lckhUTUw6bnVsbH0pLE09Zih7c3R5bGU6bnVsbH0pO3IuTWl4aW49e21v
dW50Q29tcG9uZW50OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHMuTWl4aW4ubW91bnRDb21wb25lbnQu
Y2FsbCh0aGlzLGUsdCksbih0aGlzLnByb3BzKSx0aGlzLl9jcmVhdGVPcGVuVGFnTWFya3VwKCkr
dGhpcy5fY3JlYXRlQ29udGVudE1hcmt1cCh0KSt0aGlzLl90YWdDbG9zZX0sX2NyZWF0ZU9wZW5U
YWdNYXJrdXA6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLHQ9dGhpcy5fdGFnT3Blbjtmb3Io
dmFyIG4gaW4gZSlpZihlLmhhc093blByb3BlcnR5KG4pKXt2YXIgcj1lW25dO2lmKG51bGwhPXIp
aWYoQ1tuXSlnKHRoaXMuX3Jvb3ROb2RlSUQsbixyKTtlbHNle249PT1NJiYociYmKHI9ZS5zdHls
ZT12KGUuc3R5bGUpKSxyPW8uY3JlYXRlTWFya3VwRm9yU3R5bGVzKHIpKTt2YXIgaT1hLmNyZWF0
ZU1hcmt1cEZvclByb3BlcnR5KG4scik7aSYmKHQrPSIgIitpKX19dmFyIHM9cCh0aGlzLl9yb290
Tm9kZUlEKTtyZXR1cm4gdCsiICIrYy5BVFRSX05BTUUrJz0iJytzKyciPid9LF9jcmVhdGVDb250
ZW50TWFya3VwOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMucHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5l
ckhUTUw7aWYobnVsbCE9dCl7aWYobnVsbCE9dC5fX2h0bWwpcmV0dXJuIHQuX19odG1sfWVsc2V7
dmFyIG49RVt0eXBlb2YgdGhpcy5wcm9wcy5jaGlsZHJlbl0/dGhpcy5wcm9wcy5jaGlsZHJlbjpu
dWxsLHI9bnVsbCE9bj9udWxsOnRoaXMucHJvcHMuY2hpbGRyZW47aWYobnVsbCE9bilyZXR1cm4g
cChuKTtpZihudWxsIT1yKXJldHVybiB0aGlzLm1vdW50TXVsdGlDaGlsZChkKHIpLGUpfXJldHVy
biIifSxyZWNlaXZlUHJvcHM6ZnVuY3Rpb24oZSx0KXtuKGUpLHMuTWl4aW4ucmVjZWl2ZVByb3Bz
LmNhbGwodGhpcyxlLHQpfSx1cGRhdGVDb21wb25lbnQ6ZnVuY3Rpb24oZSx0KXtzLk1peGluLnVw
ZGF0ZUNvbXBvbmVudC5jYWxsKHRoaXMsZSx0KSx0aGlzLl91cGRhdGVET01Qcm9wZXJ0aWVzKHQp
LHRoaXMuX3VwZGF0ZURPTUNoaWxkcmVuKHQsZSl9LF91cGRhdGVET01Qcm9wZXJ0aWVzOmZ1bmN0
aW9uKGUpe3ZhciB0LG4scixvPXRoaXMucHJvcHM7Zm9yKHQgaW4gZSlpZighby5oYXNPd25Qcm9w
ZXJ0eSh0KSYmZS5oYXNPd25Qcm9wZXJ0eSh0KSlpZih0PT09TSl7dmFyIGE9ZVt0XTtmb3IobiBp
biBhKWEuaGFzT3duUHJvcGVydHkobikmJihyPXJ8fHt9LHJbbl09IiIpfWVsc2UgdD09PUQ/cy5E
T01JRE9wZXJhdGlvbnMudXBkYXRlVGV4dENvbnRlbnRCeUlEKHRoaXMuX3Jvb3ROb2RlSUQsIiIp
OkNbdF0/eSh0aGlzLl9yb290Tm9kZUlELHQpOnMuRE9NSURPcGVyYXRpb25zLmRlbGV0ZVByb3Bl
cnR5QnlJRCh0aGlzLl9yb290Tm9kZUlELHQpO2Zvcih0IGluIG8pe3ZhciB1PW9bdF0sbD1lW3Rd
O2lmKG8uaGFzT3duUHJvcGVydHkodCkmJnUhPT1sKWlmKHQ9PT1NKWlmKHUmJih1PW8uc3R5bGU9
dih1KSksbCl7Zm9yKG4gaW4gbClsLmhhc093blByb3BlcnR5KG4pJiYhdS5oYXNPd25Qcm9wZXJ0
eShuKSYmKHI9cnx8e30scltuXT0iIik7Zm9yKG4gaW4gdSl1Lmhhc093blByb3BlcnR5KG4pJiZs
W25dIT09dVtuXSYmKHI9cnx8e30scltuXT11W25dKX1lbHNlIHI9dTtlbHNlIGlmKHQ9PT1EKXt2
YXIgYz1sJiZsLl9faHRtbCxwPXUmJnUuX19odG1sO2MhPT1wJiZzLkRPTUlET3BlcmF0aW9ucy51
cGRhdGVJbm5lckhUTUxCeUlEKHRoaXMuX3Jvb3ROb2RlSUQsdSl9ZWxzZSBDW3RdP2codGhpcy5f
cm9vdE5vZGVJRCx0LHUpOihpLmlzU3RhbmRhcmROYW1lW3RdfHxpLmlzQ3VzdG9tQXR0cmlidXRl
KHQpKSYmcy5ET01JRE9wZXJhdGlvbnMudXBkYXRlUHJvcGVydHlCeUlEKHRoaXMuX3Jvb3ROb2Rl
SUQsdCx1KX1yJiZzLkRPTUlET3BlcmF0aW9ucy51cGRhdGVTdHlsZXNCeUlEKHRoaXMuX3Jvb3RO
b2RlSUQscil9LF91cGRhdGVET01DaGlsZHJlbjpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMucHJv
cHMscj1FW3R5cGVvZiBlLmNoaWxkcmVuXT9lLmNoaWxkcmVuOm51bGwsbz1FW3R5cGVvZiBuLmNo
aWxkcmVuXT9uLmNoaWxkcmVuOm51bGwsaT1udWxsIT1yP251bGw6ZS5jaGlsZHJlbixhPW51bGwh
PW8/bnVsbDpuLmNoaWxkcmVuO2lmKG51bGwhPW8pe3ZhciB1PW51bGwhPWkmJm51bGw9PWE7dSYm
dGhpcy51cGRhdGVNdWx0aUNoaWxkKG51bGwsdCksciE9PW8mJnMuRE9NSURPcGVyYXRpb25zLnVw
ZGF0ZVRleHRDb250ZW50QnlJRCh0aGlzLl9yb290Tm9kZUlELCIiK28pfWVsc2V7dmFyIGw9bnVs
bCE9ciYmbnVsbD09bztsJiZzLkRPTUlET3BlcmF0aW9ucy51cGRhdGVUZXh0Q29udGVudEJ5SUQo
dGhpcy5fcm9vdE5vZGVJRCwiIiksdGhpcy51cGRhdGVNdWx0aUNoaWxkKGQobi5jaGlsZHJlbiks
dCl9fSx1bm1vdW50Q29tcG9uZW50OmZ1bmN0aW9uKCl7dS5kZWxldGVBbGxMaXN0ZW5lcnModGhp
cy5fcm9vdE5vZGVJRCkscy5NaXhpbi51bm1vdW50Q29tcG9uZW50LmNhbGwodGhpcyksdGhpcy51
bm1vdW50TXVsdGlDaGlsZCgpfX0sbShyLHMuTWl4aW4pLG0ocixyLk1peGluKSxtKHIsbC5NaXhp
biksdC5leHBvcnRzPXJ9LHsiLi9DU1NQcm9wZXJ0eU9wZXJhdGlvbnMiOjMsIi4vRE9NUHJvcGVy
dHkiOjcsIi4vRE9NUHJvcGVydHlPcGVyYXRpb25zIjo4LCIuL1JlYWN0Q29tcG9uZW50IjoyMiwi
Li9SZWFjdEV2ZW50RW1pdHRlciI6MzMsIi4vUmVhY3RJRCI6MzUsIi4vUmVhY3RNdWx0aUNoaWxk
IjozOSwiLi9lc2NhcGVUZXh0Rm9yQnJvd3NlciI6NjUsIi4vZmxhdHRlbkNoaWxkcmVuIjo2Nywi
Li9pbnZhcmlhbnQiOjc1LCIuL2tleU9mIjo3OSwiLi9tZXJnZSI6ODEsIi4vbWl4SW50byI6ODR9
XSw0MTpbZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlKXt0aGlzLl9xdWV1
ZT1lfHxudWxsfXZhciByPWUoIi4vUG9vbGVkQ2xhc3MiKSxvPWUoIi4vbWl4SW50byIpO28obix7
ZW5xdWV1ZTpmdW5jdGlvbihlLHQpe3RoaXMuX3F1ZXVlPXRoaXMuX3F1ZXVlfHxbXSx0aGlzLl9x
dWV1ZS5wdXNoKHtjb21wb25lbnQ6ZSxjYWxsYmFjazp0fSl9LG5vdGlmeUFsbDpmdW5jdGlvbigp
e3ZhciBlPXRoaXMuX3F1ZXVlO2lmKGUpe3RoaXMuX3F1ZXVlPW51bGw7Zm9yKHZhciB0PTAsbj1l
Lmxlbmd0aDtuPnQ7dCsrKXt2YXIgcj1lW3RdLmNvbXBvbmVudCxvPWVbdF0uY2FsbGJhY2s7by5j
YWxsKHIsci5nZXRET01Ob2RlKCkpfWUubGVuZ3RoPTB9fSxyZXNldDpmdW5jdGlvbigpe3RoaXMu
X3F1ZXVlPW51bGx9LGRlc3RydWN0b3I6ZnVuY3Rpb24oKXt0aGlzLnJlc2V0KCl9fSksci5hZGRQ
b29saW5nVG8obiksdC5leHBvcnRzPW59LHsiLi9Qb29sZWRDbGFzcyI6MjAsIi4vbWl4SW50byI6
ODR9XSw0MjpbZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7dmFyIG49ZSgiLi9pbnZhcmlhbnQi
KSxyPXtpc1ZhbGlkT3duZXI6ZnVuY3Rpb24oZSl7cmV0dXJuISghZXx8ImZ1bmN0aW9uIiE9dHlw
ZW9mIGUuYXR0YWNoUmVmfHwiZnVuY3Rpb24iIT10eXBlb2YgZS5kZXRhY2hSZWYpfSxhZGRDb21w
b25lbnRBc1JlZlRvOmZ1bmN0aW9uKGUsdCxvKXtuKHIuaXNWYWxpZE93bmVyKG8pKSxvLmF0dGFj
aFJlZih0LGUpfSxyZW1vdmVDb21wb25lbnRBc1JlZkZyb206ZnVuY3Rpb24oZSx0LG8pe24oci5p
c1ZhbGlkT3duZXIobykpLG8ucmVmc1t0XT09PWUmJm8uZGV0YWNoUmVmKHQpfSxNaXhpbjp7YXR0
YWNoUmVmOmZ1bmN0aW9uKGUsdCl7bih0LmlzT3duZWRCeSh0aGlzKSk7dmFyIHI9dGhpcy5yZWZz
fHwodGhpcy5yZWZzPXt9KTtyW2VdPXR9LGRldGFjaFJlZjpmdW5jdGlvbihlKXtkZWxldGUgdGhp
cy5yZWZzW2VdfX19O3QuZXhwb3J0cz1yfSx7Ii4vaW52YXJpYW50Ijo3NX1dLDQzOltmdW5jdGlv
bihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe3JldHVybiBmdW5jdGlvbih0LG4scil7
dFtuXT10Lmhhc093blByb3BlcnR5KG4pP2UodFtuXSxyKTpyfX12YXIgcj1lKCIuL2VtcHR5RnVu
Y3Rpb24iKSxvPWUoIi4vam9pbkNsYXNzZXMiKSxpPWUoIi4vbWVyZ2UiKSxhPXtjaGlsZHJlbjpy
LGNsYXNzTmFtZTpuKG8pLHJlZjpyLHN0eWxlOm4oaSl9LHM9e1RyYW5zZmVyU3RyYXRlZ2llczph
LE1peGluOnt0cmFuc2ZlclByb3BzVG86ZnVuY3Rpb24oZSl7dmFyIHQ9e307Zm9yKHZhciBuIGlu
IGUucHJvcHMpZS5wcm9wcy5oYXNPd25Qcm9wZXJ0eShuKSYmKHRbbl09ZS5wcm9wc1tuXSk7Zm9y
KHZhciByIGluIHRoaXMucHJvcHMpaWYodGhpcy5wcm9wcy5oYXNPd25Qcm9wZXJ0eShyKSl7dmFy
IG89YVtyXTtvP28odCxyLHRoaXMucHJvcHNbcl0pOnQuaGFzT3duUHJvcGVydHkocil8fCh0W3Jd
PXRoaXMucHJvcHNbcl0pfXJldHVybiBlLnByb3BzPXQsZX19fTt0LmV4cG9ydHM9c30seyIuL2Vt
cHR5RnVuY3Rpb24iOjY0LCIuL2pvaW5DbGFzc2VzIjo3NywiLi9tZXJnZSI6ODF9XSw0NDpbZnVu
Y3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlKXtmdW5jdGlvbiB0KHQpe3ZhciBu
PXR5cGVvZiB0OyJvYmplY3QiPT09biYmQXJyYXkuaXNBcnJheSh0KSYmKG49ImFycmF5Iikscyhu
PT09ZSl9cmV0dXJuIGkodCl9ZnVuY3Rpb24gcihlKXtmdW5jdGlvbiB0KGUpe3MobltlXSl9dmFy
IG49YShlKTtyZXR1cm4gaSh0KX1mdW5jdGlvbiBvKGUpe2Z1bmN0aW9uIHQodCl7cyh0IGluc3Rh
bmNlb2YgZSl9cmV0dXJuIGkodCl9ZnVuY3Rpb24gaShlKXtmdW5jdGlvbiB0KG4pe2Z1bmN0aW9u
IHIodCxyLG8pe3ZhciBpPXRbcl07bnVsbCE9aT9lKGkscixvfHxsKTpzKCFuKX1yZXR1cm4gbnx8
KHIuaXNSZXF1aXJlZD10KCEwKSkscn1yZXR1cm4gdCghMSl9dmFyIGE9ZSgiLi9jcmVhdGVPYmpl
Y3RGcm9tIikscz1lKCIuL2ludmFyaWFudCIpLHU9e2FycmF5Om4oImFycmF5IiksYm9vbDpuKCJi
b29sZWFuIiksZnVuYzpuKCJmdW5jdGlvbiIpLG51bWJlcjpuKCJudW1iZXIiKSxvYmplY3Q6bigi
b2JqZWN0Iiksc3RyaW5nOm4oInN0cmluZyIpLG9uZU9mOnIsaW5zdGFuY2VPZjpvfSxsPSI8PGFu
b255bW91cz4+Ijt0LmV4cG9ydHM9dX0seyIuL2NyZWF0ZU9iamVjdEZyb20iOjYyLCIuL2ludmFy
aWFudCI6NzV9XSw0NTpbZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbigpe3Ro
aXMucmVpbml0aWFsaXplVHJhbnNhY3Rpb24oKSx0aGlzLnJlYWN0T25ET01SZWFkeT1zLmdldFBv
b2xlZChudWxsKX12YXIgcj1lKCIuL0V4ZWN1dGlvbkVudmlyb25tZW50Iiksbz1lKCIuL1Bvb2xl
ZENsYXNzIiksaT1lKCIuL1JlYWN0RXZlbnRFbWl0dGVyIiksYT1lKCIuL1JlYWN0SW5wdXRTZWxl
Y3Rpb24iKSxzPWUoIi4vUmVhY3RPbkRPTVJlYWR5IiksdT1lKCIuL1RyYW5zYWN0aW9uIiksbD1l
KCIuL21peEludG8iKSxjPXtpbml0aWFsaXplOmEuZ2V0U2VsZWN0aW9uSW5mb3JtYXRpb24sY2xv
c2U6YS5yZXN0b3JlU2VsZWN0aW9ufSxwPXtpbml0aWFsaXplOmZ1bmN0aW9uKCl7dmFyIGU9aS5p
c0VuYWJsZWQoKTtyZXR1cm4gaS5zZXRFbmFibGVkKCExKSxlfSxjbG9zZTpmdW5jdGlvbihlKXtp
LnNldEVuYWJsZWQoZSl9fSxkPXtpbml0aWFsaXplOmZ1bmN0aW9uKCl7dGhpcy5yZWFjdE9uRE9N
UmVhZHkucmVzZXQoKX0sY2xvc2U6ZnVuY3Rpb24oKXt0aGlzLnJlYWN0T25ET01SZWFkeS5ub3Rp
ZnlBbGwoKX19LGg9W2MscCxkXSxmPXtnZXRUcmFuc2FjdGlvbldyYXBwZXJzOmZ1bmN0aW9uKCl7
cmV0dXJuIHIuY2FuVXNlRE9NP2g6W119LGdldFJlYWN0T25ET01SZWFkeTpmdW5jdGlvbigpe3Jl
dHVybiB0aGlzLnJlYWN0T25ET01SZWFkeX0sZGVzdHJ1Y3RvcjpmdW5jdGlvbigpe3MucmVsZWFz
ZSh0aGlzLnJlYWN0T25ET01SZWFkeSksdGhpcy5yZWFjdE9uRE9NUmVhZHk9bnVsbH19O2wobix1
Lk1peGluKSxsKG4sZiksby5hZGRQb29saW5nVG8obiksdC5leHBvcnRzPW59LHsiLi9FeGVjdXRp
b25FbnZpcm9ubWVudCI6MTksIi4vUG9vbGVkQ2xhc3MiOjIwLCIuL1JlYWN0RXZlbnRFbWl0dGVy
IjozMywiLi9SZWFjdElucHV0U2VsZWN0aW9uIjozNiwiLi9SZWFjdE9uRE9NUmVhZHkiOjQxLCIu
L1RyYW5zYWN0aW9uIjo1OCwiLi9taXhJbnRvIjo4NH1dLDQ2OltmdW5jdGlvbihlLHQpeyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiBuKGUsdCl7dmFyIG49by5jcmVhdGVSZWFjdFJvb3RJRCgpLGk9ci5n
ZXRQb29sZWQoKTtpLnJlaW5pdGlhbGl6ZVRyYW5zYWN0aW9uKCk7dHJ5e2kucGVyZm9ybShmdW5j
dGlvbigpe3QoZS5tb3VudENvbXBvbmVudChuLGkpKX0sbnVsbCl9ZmluYWxseXtyLnJlbGVhc2Uo
aSl9fXZhciByPWUoIi4vUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbiIpLG89ZSgiLi9SZWFjdElu
c3RhbmNlSGFuZGxlcyIpO3QuZXhwb3J0cz17cmVuZGVyQ29tcG9uZW50VG9TdHJpbmc6bn19LHsi
Li9SZWFjdEluc3RhbmNlSGFuZGxlcyI6MzcsIi4vUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbiI6
NDV9XSw0NzpbZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7dmFyIG49ZSgiLi9SZWFjdENvbXBv
bmVudCIpLHI9ZSgiLi9SZWFjdElEIiksbz1lKCIuL2VzY2FwZVRleHRGb3JCcm93c2VyIiksaT1l
KCIuL21peEludG8iKSxhPWZ1bmN0aW9uKGUpe3RoaXMuY29uc3RydWN0KHt0ZXh0OmV9KX07aShh
LG4uTWl4aW4pLGkoYSx7bW91bnRDb21wb25lbnQ6ZnVuY3Rpb24oZSl7cmV0dXJuIG4uTWl4aW4u
bW91bnRDb21wb25lbnQuY2FsbCh0aGlzLGUpLCI8c3BhbiAiK3IuQVRUUl9OQU1FKyc9IicrZSsn
Ij4nK28odGhpcy5wcm9wcy50ZXh0KSsiPC9zcGFuPiJ9LHJlY2VpdmVQcm9wczpmdW5jdGlvbihl
KXtlLnRleHQhPT10aGlzLnByb3BzLnRleHQmJih0aGlzLnByb3BzLnRleHQ9ZS50ZXh0LG4uRE9N
SURPcGVyYXRpb25zLnVwZGF0ZVRleHRDb250ZW50QnlJRCh0aGlzLl9yb290Tm9kZUlELGUudGV4
dCkpfX0pLHQuZXhwb3J0cz1hfSx7Ii4vUmVhY3RDb21wb25lbnQiOjIyLCIuL1JlYWN0SUQiOjM1
LCIuL2VzY2FwZVRleHRGb3JCcm93c2VyIjo2NSwiLi9taXhJbnRvIjo4NH1dLDQ4OltmdW5jdGlv
bihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe2lmKGkpcmV0dXJuIGUoKSx2b2lkIDA7
aT0hMDt0cnl7ZSgpO2Zvcih2YXIgdD0wO3Q8YS5sZW5ndGg7dCsrKXt2YXIgbj1hW3RdO2lmKG4u
aXNNb3VudGVkKCkpe3ZhciByPW4uX3BlbmRpbmdDYWxsYmFja3M7aWYobi5fcGVuZGluZ0NhbGxi
YWNrcz1udWxsLG4ucGVyZm9ybVVwZGF0ZUlmTmVjZXNzYXJ5KCkscilmb3IodmFyIG89MDtvPHIu
bGVuZ3RoO28rKylyW29dKCl9fX1jYXRjaChzKXt0aHJvdyBzfWZpbmFsbHl7YS5sZW5ndGg9MCxp
PSExfX1mdW5jdGlvbiByKGUsdCl7cmV0dXJuIG8oIXR8fCJmdW5jdGlvbiI9PXR5cGVvZiB0KSxp
PyhhLnB1c2goZSksdCYmKGUuX3BlbmRpbmdDYWxsYmFja3M/ZS5fcGVuZGluZ0NhbGxiYWNrcy5w
dXNoKHQpOmUuX3BlbmRpbmdDYWxsYmFja3M9W3RdKSx2b2lkIDApOihlLnBlcmZvcm1VcGRhdGVJ
Zk5lY2Vzc2FyeSgpLHQmJnQoKSx2b2lkIDApfXZhciBvPWUoIi4vaW52YXJpYW50IiksaT0hMSxh
PVtdLHM9e2JhdGNoZWRVcGRhdGVzOm4sZW5xdWV1ZVVwZGF0ZTpyfTt0LmV4cG9ydHM9c30seyIu
L2ludmFyaWFudCI6NzV9XSw0OTpbZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7dmFyIG49ZSgi
Li9FdmVudENvbnN0YW50cyIpLHI9ZSgiLi9FdmVudFByb3BhZ2F0b3JzIiksbz1lKCIuL1N5bnRo
ZXRpY0V2ZW50IiksaT1lKCIuL1N5bnRoZXRpY0ZvY3VzRXZlbnQiKSxhPWUoIi4vU3ludGhldGlj
S2V5Ym9hcmRFdmVudCIpLHM9ZSgiLi9TeW50aGV0aWNNb3VzZUV2ZW50IiksdT1lKCIuL1N5bnRo
ZXRpY011dGF0aW9uRXZlbnQiKSxsPWUoIi4vU3ludGhldGljVG91Y2hFdmVudCIpLGM9ZSgiLi9T
eW50aGV0aWNVSUV2ZW50IikscD1lKCIuL1N5bnRoZXRpY1doZWVsRXZlbnQiKSxkPWUoIi4vaW52
YXJpYW50IiksaD1lKCIuL2tleU9mIiksZj1uLnRvcExldmVsVHlwZXMsdj17Ymx1cjp7cGhhc2Vk
UmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6aCh7b25CbHVyOiEwfSksY2FwdHVyZWQ6aCh7b25C
bHVyQ2FwdHVyZTohMH0pfX0sY2xpY2s6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVk
Omgoe29uQ2xpY2s6ITB9KSxjYXB0dXJlZDpoKHtvbkNsaWNrQ2FwdHVyZTohMH0pfX0sZG91Ymxl
Q2xpY2s6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOmgoe29uRG91YmxlQ2xpY2s6
ITB9KSxjYXB0dXJlZDpoKHtvbkRvdWJsZUNsaWNrQ2FwdHVyZTohMH0pfX0sZHJhZzp7cGhhc2Vk
UmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6aCh7b25EcmFnOiEwfSksY2FwdHVyZWQ6aCh7b25E
cmFnQ2FwdHVyZTohMH0pfX0sZHJhZ0VuZDp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJs
ZWQ6aCh7b25EcmFnRW5kOiEwfSksY2FwdHVyZWQ6aCh7b25EcmFnRW5kQ2FwdHVyZTohMH0pfX0s
ZHJhZ0VudGVyOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpoKHtvbkRyYWdFbnRl
cjohMH0pLGNhcHR1cmVkOmgoe29uRHJhZ0VudGVyQ2FwdHVyZTohMH0pfX0sZHJhZ0V4aXQ6e3Bo
YXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOmgoe29uRHJhZ0V4aXQ6ITB9KSxjYXB0dXJl
ZDpoKHtvbkRyYWdFeGl0Q2FwdHVyZTohMH0pfX0sZHJhZ0xlYXZlOntwaGFzZWRSZWdpc3RyYXRp
b25OYW1lczp7YnViYmxlZDpoKHtvbkRyYWdMZWF2ZTohMH0pLGNhcHR1cmVkOmgoe29uRHJhZ0xl
YXZlQ2FwdHVyZTohMH0pfX0sZHJhZ092ZXI6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJi
bGVkOmgoe29uRHJhZ092ZXI6ITB9KSxjYXB0dXJlZDpoKHtvbkRyYWdPdmVyQ2FwdHVyZTohMH0p
fX0sZHJhZ1N0YXJ0OntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpoKHtvbkRyYWdT
dGFydDohMH0pLGNhcHR1cmVkOmgoe29uRHJhZ1N0YXJ0Q2FwdHVyZTohMH0pfX0sZHJvcDp7cGhh
c2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6aCh7b25Ecm9wOiEwfSksY2FwdHVyZWQ6aCh7
b25Ecm9wQ2FwdHVyZTohMH0pfX0sRE9NQ2hhcmFjdGVyRGF0YU1vZGlmaWVkOntwaGFzZWRSZWdp
c3RyYXRpb25OYW1lczp7YnViYmxlZDpoKHtvbkRPTUNoYXJhY3RlckRhdGFNb2RpZmllZDohMH0p
LGNhcHR1cmVkOmgoe29uRE9NQ2hhcmFjdGVyRGF0YU1vZGlmaWVkQ2FwdHVyZTohMH0pfX0sZm9j
dXM6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOmgoe29uRm9jdXM6ITB9KSxjYXB0
dXJlZDpoKHtvbkZvY3VzQ2FwdHVyZTohMH0pfX0saW5wdXQ6e3BoYXNlZFJlZ2lzdHJhdGlvbk5h
bWVzOntidWJibGVkOmgoe29uSW5wdXQ6ITB9KSxjYXB0dXJlZDpoKHtvbklucHV0Q2FwdHVyZToh
MH0pfX0sa2V5RG93bjp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6aCh7b25LZXlE
b3duOiEwfSksY2FwdHVyZWQ6aCh7b25LZXlEb3duQ2FwdHVyZTohMH0pfX0sa2V5UHJlc3M6e3Bo
YXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOmgoe29uS2V5UHJlc3M6ITB9KSxjYXB0dXJl
ZDpoKHtvbktleVByZXNzQ2FwdHVyZTohMH0pfX0sa2V5VXA6e3BoYXNlZFJlZ2lzdHJhdGlvbk5h
bWVzOntidWJibGVkOmgoe29uS2V5VXA6ITB9KSxjYXB0dXJlZDpoKHtvbktleVVwQ2FwdHVyZToh
MH0pfX0sbW91c2VEb3duOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpoKHtvbk1v
dXNlRG93bjohMH0pLGNhcHR1cmVkOmgoe29uTW91c2VEb3duQ2FwdHVyZTohMH0pfX0sbW91c2VN
b3ZlOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpoKHtvbk1vdXNlTW92ZTohMH0p
LGNhcHR1cmVkOmgoe29uTW91c2VNb3ZlQ2FwdHVyZTohMH0pfX0sbW91c2VVcDp7cGhhc2VkUmVn
aXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6aCh7b25Nb3VzZVVwOiEwfSksY2FwdHVyZWQ6aCh7b25N
b3VzZVVwQ2FwdHVyZTohMH0pfX0sc2Nyb2xsOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnVi
YmxlZDpoKHtvblNjcm9sbDohMH0pLGNhcHR1cmVkOmgoe29uU2Nyb2xsQ2FwdHVyZTohMH0pfX0s
c3VibWl0OntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpoKHtvblN1Ym1pdDohMH0p
LGNhcHR1cmVkOmgoe29uU3VibWl0Q2FwdHVyZTohMH0pfX0sdG91Y2hDYW5jZWw6e3BoYXNlZFJl
Z2lzdHJhdGlvbk5hbWVzOntidWJibGVkOmgoe29uVG91Y2hDYW5jZWw6ITB9KSxjYXB0dXJlZDpo
KHtvblRvdWNoQ2FuY2VsQ2FwdHVyZTohMH0pfX0sdG91Y2hFbmQ6e3BoYXNlZFJlZ2lzdHJhdGlv
bk5hbWVzOntidWJibGVkOmgoe29uVG91Y2hFbmQ6ITB9KSxjYXB0dXJlZDpoKHtvblRvdWNoRW5k
Q2FwdHVyZTohMH0pfX0sdG91Y2hNb3ZlOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxl
ZDpoKHtvblRvdWNoTW92ZTohMH0pLGNhcHR1cmVkOmgoe29uVG91Y2hNb3ZlQ2FwdHVyZTohMH0p
fX0sdG91Y2hTdGFydDp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6aCh7b25Ub3Vj
aFN0YXJ0OiEwfSksY2FwdHVyZWQ6aCh7b25Ub3VjaFN0YXJ0Q2FwdHVyZTohMH0pfX0sd2hlZWw6
e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOmgoe29uV2hlZWw6ITB9KSxjYXB0dXJl
ZDpoKHtvbldoZWVsQ2FwdHVyZTohMH0pfX19LG09e3RvcEJsdXI6di5ibHVyLHRvcENsaWNrOnYu
Y2xpY2ssdG9wRG91YmxlQ2xpY2s6di5kb3VibGVDbGljayx0b3BET01DaGFyYWN0ZXJEYXRhTW9k
aWZpZWQ6di5ET01DaGFyYWN0ZXJEYXRhTW9kaWZpZWQsdG9wRHJhZzp2LmRyYWcsdG9wRHJhZ0Vu
ZDp2LmRyYWdFbmQsdG9wRHJhZ0VudGVyOnYuZHJhZ0VudGVyLHRvcERyYWdFeGl0OnYuZHJhZ0V4
aXQsdG9wRHJhZ0xlYXZlOnYuZHJhZ0xlYXZlLHRvcERyYWdPdmVyOnYuZHJhZ092ZXIsdG9wRHJh
Z1N0YXJ0OnYuZHJhZ1N0YXJ0LHRvcERyb3A6di5kcm9wLHRvcEZvY3VzOnYuZm9jdXMsdG9wSW5w
dXQ6di5pbnB1dCx0b3BLZXlEb3duOnYua2V5RG93bix0b3BLZXlQcmVzczp2LmtleVByZXNzLHRv
cEtleVVwOnYua2V5VXAsdG9wTW91c2VEb3duOnYubW91c2VEb3duLHRvcE1vdXNlTW92ZTp2Lm1v
dXNlTW92ZSx0b3BNb3VzZVVwOnYubW91c2VVcCx0b3BTY3JvbGw6di5zY3JvbGwsdG9wU3VibWl0
OnYuc3VibWl0LHRvcFRvdWNoQ2FuY2VsOnYudG91Y2hDYW5jZWwsdG9wVG91Y2hFbmQ6di50b3Vj
aEVuZCx0b3BUb3VjaE1vdmU6di50b3VjaE1vdmUsdG9wVG91Y2hTdGFydDp2LnRvdWNoU3RhcnQs
dG9wV2hlZWw6di53aGVlbH0sZz17ZXZlbnRUeXBlczp2LGV4ZWN1dGVEaXNwYXRjaDpmdW5jdGlv
bihlLHQsbil7dmFyIHI9dChlLG4pO3I9PT0hMSYmKGUuc3RvcFByb3BhZ2F0aW9uKCksZS5wcmV2
ZW50RGVmYXVsdCgpKX0sZXh0cmFjdEV2ZW50czpmdW5jdGlvbihlLHQsbixoKXt2YXIgdj1tW2Vd
O2lmKCF2KXJldHVybiBudWxsO3ZhciBnO3N3aXRjaChlKXtjYXNlIGYudG9wSW5wdXQ6Y2FzZSBm
LnRvcFN1Ym1pdDpnPW87YnJlYWs7Y2FzZSBmLnRvcEtleURvd246Y2FzZSBmLnRvcEtleVByZXNz
OmNhc2UgZi50b3BLZXlVcDpnPWE7YnJlYWs7Y2FzZSBmLnRvcEJsdXI6Y2FzZSBmLnRvcEZvY3Vz
Omc9aTticmVhaztjYXNlIGYudG9wQ2xpY2s6Y2FzZSBmLnRvcERvdWJsZUNsaWNrOmNhc2UgZi50
b3BEcmFnOmNhc2UgZi50b3BEcmFnRW5kOmNhc2UgZi50b3BEcmFnRW50ZXI6Y2FzZSBmLnRvcERy
YWdFeGl0OmNhc2UgZi50b3BEcmFnTGVhdmU6Y2FzZSBmLnRvcERyYWdPdmVyOmNhc2UgZi50b3BE
cmFnU3RhcnQ6Y2FzZSBmLnRvcERyb3A6Y2FzZSBmLnRvcE1vdXNlRG93bjpjYXNlIGYudG9wTW91
c2VNb3ZlOmNhc2UgZi50b3BNb3VzZVVwOmc9czticmVhaztjYXNlIGYudG9wRE9NQ2hhcmFjdGVy
RGF0YU1vZGlmaWVkOmc9dTticmVhaztjYXNlIGYudG9wVG91Y2hDYW5jZWw6Y2FzZSBmLnRvcFRv
dWNoRW5kOmNhc2UgZi50b3BUb3VjaE1vdmU6Y2FzZSBmLnRvcFRvdWNoU3RhcnQ6Zz1sO2JyZWFr
O2Nhc2UgZi50b3BTY3JvbGw6Zz1jO2JyZWFrO2Nhc2UgZi50b3BXaGVlbDpnPXB9ZChnKTt2YXIg
eT1nLmdldFBvb2xlZCh2LG4saCk7cmV0dXJuIHIuYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hl
cyh5KSx5fX07dC5leHBvcnRzPWd9LHsiLi9FdmVudENvbnN0YW50cyI6MTMsIi4vRXZlbnRQcm9w
YWdhdG9ycyI6MTgsIi4vU3ludGhldGljRXZlbnQiOjUwLCIuL1N5bnRoZXRpY0ZvY3VzRXZlbnQi
OjUxLCIuL1N5bnRoZXRpY0tleWJvYXJkRXZlbnQiOjUyLCIuL1N5bnRoZXRpY01vdXNlRXZlbnQi
OjUzLCIuL1N5bnRoZXRpY011dGF0aW9uRXZlbnQiOjU0LCIuL1N5bnRoZXRpY1RvdWNoRXZlbnQi
OjU1LCIuL1N5bnRoZXRpY1VJRXZlbnQiOjU2LCIuL1N5bnRoZXRpY1doZWVsRXZlbnQiOjU3LCIu
L2ludmFyaWFudCI6NzUsIi4va2V5T2YiOjc5fV0sNTA6W2Z1bmN0aW9uKGUsdCl7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIG4oZSx0LG4pe3RoaXMuZGlzcGF0Y2hDb25maWc9ZSx0aGlzLmRpc3BhdGNo
TWFya2VyPXQsdGhpcy5uYXRpdmVFdmVudD1uO3ZhciByPXRoaXMuY29uc3RydWN0b3IuSW50ZXJm
YWNlO2Zvcih2YXIgaSBpbiByKXt2YXIgYT1yW2ldO3RoaXNbaV09YT9hKG4pOm5baV19dGhpcy5p
c0RlZmF1bHRQcmV2ZW50ZWQ9bi5kZWZhdWx0UHJldmVudGVkfHxuLnJldHVyblZhbHVlPT09ITE/
by50aGF0UmV0dXJuc1RydWU6by50aGF0UmV0dXJuc0ZhbHNlLHRoaXMuaXNQcm9wYWdhdGlvblN0
b3BwZWQ9by50aGF0UmV0dXJuc0ZhbHNlfXZhciByPWUoIi4vUG9vbGVkQ2xhc3MiKSxvPWUoIi4v
ZW1wdHlGdW5jdGlvbiIpLGk9ZSgiLi9nZXRFdmVudFRhcmdldCIpLGE9ZSgiLi9tZXJnZSIpLHM9
ZSgiLi9tZXJnZUludG8iKSx1PXt0eXBlOm51bGwsdGFyZ2V0OmksY3VycmVudFRhcmdldDpudWxs
LGV2ZW50UGhhc2U6bnVsbCxidWJibGVzOm51bGwsY2FuY2VsYWJsZTpudWxsLHRpbWVTdGFtcDpm
dW5jdGlvbihlKXtyZXR1cm4gZS50aW1lU3RhbXB8fERhdGUubm93KCl9LGRlZmF1bHRQcmV2ZW50
ZWQ6bnVsbCxpc1RydXN0ZWQ6bnVsbH07cyhuLnByb3RvdHlwZSx7cHJldmVudERlZmF1bHQ6ZnVu
Y3Rpb24oKXt0aGlzLmRlZmF1bHRQcmV2ZW50ZWQ9ITA7dmFyIGU9dGhpcy5uYXRpdmVFdmVudDtl
LnByZXZlbnREZWZhdWx0P2UucHJldmVudERlZmF1bHQoKTplLnJldHVyblZhbHVlPSExLHRoaXMu
aXNEZWZhdWx0UHJldmVudGVkPW8udGhhdFJldHVybnNUcnVlfSxzdG9wUHJvcGFnYXRpb246ZnVu
Y3Rpb24oKXt2YXIgZT10aGlzLm5hdGl2ZUV2ZW50O2Uuc3RvcFByb3BhZ2F0aW9uP2Uuc3RvcFBy
b3BhZ2F0aW9uKCk6ZS5jYW5jZWxCdWJibGU9ITAsdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1v
LnRoYXRSZXR1cm5zVHJ1ZX0scGVyc2lzdDpmdW5jdGlvbigpe3RoaXMuaXNQZXJzaXN0ZW50PW8u
dGhhdFJldHVybnNUcnVlfSxpc1BlcnNpc3RlbnQ6by50aGF0UmV0dXJuc0ZhbHNlLGRlc3RydWN0
b3I6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmNvbnN0cnVjdG9yLkludGVyZmFjZTtmb3IodmFyIHQg
aW4gZSl0aGlzW3RdPW51bGw7dGhpcy5kaXNwYXRjaENvbmZpZz1udWxsLHRoaXMuZGlzcGF0Y2hN
YXJrZXI9bnVsbCx0aGlzLm5hdGl2ZUV2ZW50PW51bGx9fSksbi5JbnRlcmZhY2U9dSxuLmF1Z21l
bnRDbGFzcz1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMsbz1PYmplY3QuY3JlYXRlKG4ucHJvdG90
eXBlKTtzKG8sZS5wcm90b3R5cGUpLGUucHJvdG90eXBlPW8sZS5wcm90b3R5cGUuY29uc3RydWN0
b3I9ZSxlLkludGVyZmFjZT1hKG4uSW50ZXJmYWNlLHQpLGUuYXVnbWVudENsYXNzPW4uYXVnbWVu
dENsYXNzLHIuYWRkUG9vbGluZ1RvKGUsci50aHJlZUFyZ3VtZW50UG9vbGVyKQotfSxyLmFkZFBv
b2xpbmdUbyhuLHIudGhyZWVBcmd1bWVudFBvb2xlciksdC5leHBvcnRzPW59LHsiLi9Qb29sZWRD
bGFzcyI6MjAsIi4vZW1wdHlGdW5jdGlvbiI6NjQsIi4vZ2V0RXZlbnRUYXJnZXQiOjcwLCIuL21l
cmdlIjo4MSwiLi9tZXJnZUludG8iOjgzfV0sNTE6W2Z1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIG4oZSx0LG4pe3IuY2FsbCh0aGlzLGUsdCxuKX12YXIgcj1lKCIuL1N5bnRoZXRp
Y1VJRXZlbnQiKSxvPXtyZWxhdGVkVGFyZ2V0Om51bGx9O3IuYXVnbWVudENsYXNzKG4sbyksdC5l
eHBvcnRzPW59LHsiLi9TeW50aGV0aWNVSUV2ZW50Ijo1Nn1dLDUyOltmdW5jdGlvbihlLHQpeyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUsdCxuKXtyLmNhbGwodGhpcyxlLHQsbil9dmFyIHI9ZSgi
Li9TeW50aGV0aWNVSUV2ZW50Iiksbz17ImNoYXIiOm51bGwsa2V5Om51bGwsbG9jYXRpb246bnVs
bCxjdHJsS2V5Om51bGwsc2hpZnRLZXk6bnVsbCxhbHRLZXk6bnVsbCxtZXRhS2V5Om51bGwscmVw
ZWF0Om51bGwsbG9jYWxlOm51bGwsY2hhckNvZGU6bnVsbCxrZXlDb2RlOm51bGwsd2hpY2g6bnVs
bH07ci5hdWdtZW50Q2xhc3MobixvKSx0LmV4cG9ydHM9bn0seyIuL1N5bnRoZXRpY1VJRXZlbnQi
OjU2fV0sNTM6W2Z1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSx0LG4pe3Iu
Y2FsbCh0aGlzLGUsdCxuKX12YXIgcj1lKCIuL1N5bnRoZXRpY1VJRXZlbnQiKSxvPWUoIi4vVmll
d3BvcnRNZXRyaWNzIiksaT17c2NyZWVuWDpudWxsLHNjcmVlblk6bnVsbCxjbGllbnRYOm51bGws
Y2xpZW50WTpudWxsLGN0cmxLZXk6bnVsbCxzaGlmdEtleTpudWxsLGFsdEtleTpudWxsLG1ldGFL
ZXk6bnVsbCxidXR0b246ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5idXR0b247cmV0dXJuIndoaWNoImlu
IGU/dDoyPT09dD8yOjQ9PT10PzE6MH0sYnV0dG9uczpudWxsLHJlbGF0ZWRUYXJnZXQ6ZnVuY3Rp
b24oZSl7cmV0dXJuIGUucmVsYXRlZFRhcmdldHx8KGUuZnJvbUVsZW1lbnQ9PT1lLnNyY0VsZW1l
bnQ/ZS50b0VsZW1lbnQ6ZS5mcm9tRWxlbWVudCl9LHBhZ2VYOmZ1bmN0aW9uKGUpe3JldHVybiJw
YWdlWCJpbiBlP2UucGFnZVg6ZS5jbGllbnRYK28uY3VycmVudFNjcm9sbExlZnR9LHBhZ2VZOmZ1
bmN0aW9uKGUpe3JldHVybiJwYWdlWSJpbiBlP2UucGFnZVk6ZS5jbGllbnRZK28uY3VycmVudFNj
cm9sbFRvcH19O3IuYXVnbWVudENsYXNzKG4saSksdC5leHBvcnRzPW59LHsiLi9TeW50aGV0aWNV
SUV2ZW50Ijo1NiwiLi9WaWV3cG9ydE1ldHJpY3MiOjU5fV0sNTQ6W2Z1bmN0aW9uKGUsdCl7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSx0LG4pe3IuY2FsbCh0aGlzLGUsdCxuKX12YXIgcj1lKCIu
L1N5bnRoZXRpY0V2ZW50Iiksbz17cmVsYXRlZE5vZGU6bnVsbCxwcmV2VmFsdWU6bnVsbCxuZXdW
YWx1ZTpudWxsLGF0dHJOYW1lOm51bGwsYXR0ckNoYW5nZTpudWxsfTtyLmF1Z21lbnRDbGFzcyhu
LG8pLHQuZXhwb3J0cz1ufSx7Ii4vU3ludGhldGljRXZlbnQiOjUwfV0sNTU6W2Z1bmN0aW9uKGUs
dCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSx0LG4pe3IuY2FsbCh0aGlzLGUsdCxuKX12YXIg
cj1lKCIuL1N5bnRoZXRpY1VJRXZlbnQiKSxvPXt0b3VjaGVzOm51bGwsdGFyZ2V0VG91Y2hlczpu
dWxsLGNoYW5nZWRUb3VjaGVzOm51bGwsYWx0S2V5Om51bGwsbWV0YUtleTpudWxsLGN0cmxLZXk6
bnVsbCxzaGlmdEtleTpudWxsfTtyLmF1Z21lbnRDbGFzcyhuLG8pLHQuZXhwb3J0cz1ufSx7Ii4v
U3ludGhldGljVUlFdmVudCI6NTZ9XSw1NjpbZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gbihlLHQsbil7ci5jYWxsKHRoaXMsZSx0LG4pfXZhciByPWUoIi4vU3ludGhldGljRXZl
bnQiKSxvPXt2aWV3Om51bGwsZGV0YWlsOm51bGx9O3IuYXVnbWVudENsYXNzKG4sbyksdC5leHBv
cnRzPW59LHsiLi9TeW50aGV0aWNFdmVudCI6NTB9XSw1NzpbZnVuY3Rpb24oZSx0KXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gbihlLHQsbil7ci5jYWxsKHRoaXMsZSx0LG4pfXZhciByPWUoIi4vU3lu
dGhldGljTW91c2VFdmVudCIpLG89e2RlbHRhWDpmdW5jdGlvbihlKXtyZXR1cm4iZGVsdGFYImlu
IGU/ZS5kZWx0YVg6IndoZWVsRGVsdGFYImluIGU/LWUud2hlZWxEZWx0YVg6MH0sZGVsdGFZOmZ1
bmN0aW9uKGUpe3JldHVybiJkZWx0YVkiaW4gZT8tZS5kZWx0YVk6IndoZWVsRGVsdGFZImluIGU/
ZS53aGVlbERlbHRhWToid2hlZWxEZWx0YSJpbiBlP2Uud2hlZWxEYXRhOjB9LGRlbHRhWjpudWxs
LGRlbHRhTW9kZTpudWxsfTtyLmF1Z21lbnRDbGFzcyhuLG8pLHQuZXhwb3J0cz1ufSx7Ii4vU3lu
dGhldGljTW91c2VFdmVudCI6NTN9XSw1ODpbZnVuY3Rpb24oZSx0KXshZnVuY3Rpb24oKXsidXNl
IHN0cmljdCI7dmFyIG49ZSgiLi90aHJvd0lmIikscj0iRFVBTF9UUkFOU0FDVElPTiIsbz0iTUlT
U0lOR19UUkFOU0FDVElPTiIsaT17cmVpbml0aWFsaXplVHJhbnNhY3Rpb246ZnVuY3Rpb24oKXt0
aGlzLnRyYW5zYWN0aW9uV3JhcHBlcnM9dGhpcy5nZXRUcmFuc2FjdGlvbldyYXBwZXJzKCksdGhp
cy53cmFwcGVySW5pdERhdGE/dGhpcy53cmFwcGVySW5pdERhdGEubGVuZ3RoPTA6dGhpcy53cmFw
cGVySW5pdERhdGE9W10sdGhpcy50aW1pbmdNZXRyaWNzfHwodGhpcy50aW1pbmdNZXRyaWNzPXt9
KSx0aGlzLnRpbWluZ01ldHJpY3MubWV0aG9kSW52b2NhdGlvblRpbWU9MCx0aGlzLnRpbWluZ01l
dHJpY3Mud3JhcHBlckluaXRUaW1lcz90aGlzLnRpbWluZ01ldHJpY3Mud3JhcHBlckluaXRUaW1l
cy5sZW5ndGg9MDp0aGlzLnRpbWluZ01ldHJpY3Mud3JhcHBlckluaXRUaW1lcz1bXSx0aGlzLnRp
bWluZ01ldHJpY3Mud3JhcHBlckNsb3NlVGltZXM/dGhpcy50aW1pbmdNZXRyaWNzLndyYXBwZXJD
bG9zZVRpbWVzLmxlbmd0aD0wOnRoaXMudGltaW5nTWV0cmljcy53cmFwcGVyQ2xvc2VUaW1lcz1b
XSx0aGlzLl9pc0luVHJhbnNhY3Rpb249ITF9LF9pc0luVHJhbnNhY3Rpb246ITEsZ2V0VHJhbnNh
Y3Rpb25XcmFwcGVyczpudWxsLGlzSW5UcmFuc2FjdGlvbjpmdW5jdGlvbigpe3JldHVybiEhdGhp
cy5faXNJblRyYW5zYWN0aW9ufSxwZXJmb3JtOmZ1bmN0aW9uKGUsdCxvLGksYSxzLHUsbCl7bih0
aGlzLmlzSW5UcmFuc2FjdGlvbigpLHIpO3ZhciBjLHA9RGF0ZS5ub3coKSxkPW51bGw7dHJ5e3Ro
aXMuaW5pdGlhbGl6ZUFsbCgpLGM9ZS5jYWxsKHQsbyxpLGEscyx1LGwpfWNhdGNoKGgpe2Q9aH1m
aW5hbGx5e3ZhciBmPURhdGUubm93KCk7dGhpcy5tZXRob2RJbnZvY2F0aW9uVGltZSs9Zi1wO3Ry
eXt0aGlzLmNsb3NlQWxsKCl9Y2F0Y2godil7ZD1kfHx2fX1pZihkKXRocm93IGQ7cmV0dXJuIGN9
LGluaXRpYWxpemVBbGw6ZnVuY3Rpb24oKXt0aGlzLl9pc0luVHJhbnNhY3Rpb249ITA7Zm9yKHZh
ciBlPXRoaXMudHJhbnNhY3Rpb25XcmFwcGVycyx0PXRoaXMudGltaW5nTWV0cmljcy53cmFwcGVy
SW5pdFRpbWVzLG49bnVsbCxyPTA7cjxlLmxlbmd0aDtyKyspe3ZhciBvPURhdGUubm93KCksaT1l
W3JdO3RyeXt0aGlzLndyYXBwZXJJbml0RGF0YVtyXT1pLmluaXRpYWxpemU/aS5pbml0aWFsaXpl
LmNhbGwodGhpcyk6bnVsbH1jYXRjaChzKXtuPW58fHMsdGhpcy53cmFwcGVySW5pdERhdGFbcl09
YS5PQlNFUlZFRF9FUlJPUn1maW5hbGx5e3ZhciB1PXRbcl0sbD1EYXRlLm5vdygpO3Rbcl09KHV8
fDApKyhsLW8pfX1pZihuKXRocm93IG59LGNsb3NlQWxsOmZ1bmN0aW9uKCl7bighdGhpcy5pc0lu
VHJhbnNhY3Rpb24oKSxvKTtmb3IodmFyIGU9dGhpcy50cmFuc2FjdGlvbldyYXBwZXJzLHQ9dGhp
cy50aW1pbmdNZXRyaWNzLndyYXBwZXJDbG9zZVRpbWVzLHI9bnVsbCxpPTA7aTxlLmxlbmd0aDtp
Kyspe3ZhciBzPWVbaV0sdT1EYXRlLm5vdygpLGw9dGhpcy53cmFwcGVySW5pdERhdGFbaV07dHJ5
e2whPT1hLk9CU0VSVkVEX0VSUk9SJiZzLmNsb3NlJiZzLmNsb3NlLmNhbGwodGhpcyxsKX1jYXRj
aChjKXtyPXJ8fGN9ZmluYWxseXt2YXIgcD1EYXRlLm5vdygpLGQ9dFtpXTt0W2ldPShkfHwwKSso
cC11KX19aWYodGhpcy53cmFwcGVySW5pdERhdGEubGVuZ3RoPTAsdGhpcy5faXNJblRyYW5zYWN0
aW9uPSExLHIpdGhyb3cgcn19LGE9e01peGluOmksT0JTRVJWRURfRVJST1I6e319O3QuZXhwb3J0
cz1hfSgpfSx7Ii4vdGhyb3dJZiI6ODZ9XSw1OTpbZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7
dmFyIG49e2N1cnJlbnRTY3JvbGxMZWZ0OjAsY3VycmVudFNjcm9sbFRvcDowLHJlZnJlc2hTY3Jv
bGxWYWx1ZXM6ZnVuY3Rpb24oKXtuLmN1cnJlbnRTY3JvbGxMZWZ0PWRvY3VtZW50LmJvZHkuc2Ny
b2xsTGVmdCtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdCxuLmN1cnJlbnRTY3Jv
bGxUb3A9ZG9jdW1lbnQuYm9keS5zY3JvbGxUb3ArZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNj
cm9sbFRvcH19O3QuZXhwb3J0cz1ufSx7fV0sNjA6W2Z1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIG4oZSx0KXt2YXIgbj1udWxsPT1lLHI9bnVsbD09PXQ7aWYocilyZXR1cm4gZTtp
ZihuKXJldHVybiB0O3ZhciBvPUFycmF5LmlzQXJyYXkoZSksaT1BcnJheS5pc0FycmF5KHQpO3Jl
dHVybiBvP2UuY29uY2F0KHQpOmk/W2VdLmNvbmNhdCh0KTpbZSx0XX1lKCIuL3Rocm93SWYiKSx0
LmV4cG9ydHM9bn0seyIuL3Rocm93SWYiOjg2fV0sNjE6W2Z1bmN0aW9uKGUsdCl7ZnVuY3Rpb24g
bihlLHQsbixyLG8saSl7ZT1lfHx7fTtmb3IodmFyIGEscz1bdCxuLHIsbyxpXSx1PTA7c1t1XTsp
e2E9c1t1KytdO2Zvcih2YXIgbCBpbiBhKWVbbF09YVtsXTthLmhhc093blByb3BlcnR5JiZhLmhh
c093blByb3BlcnR5KCJ0b1N0cmluZyIpJiYidW5kZWZpbmVkIiE9dHlwZW9mIGEudG9TdHJpbmcm
JmUudG9TdHJpbmchPT1hLnRvU3RyaW5nJiYoZS50b1N0cmluZz1hLnRvU3RyaW5nKX1yZXR1cm4g
ZX10LmV4cG9ydHM9bn0se31dLDYyOltmdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG4oZSx0KXt2YXIg
bj17fSxvPXIodCk7InVuZGVmaW5lZCI9PXR5cGVvZiB0JiYodD0hMCk7Zm9yKHZhciBpPWUubGVu
Z3RoO2ktLTspbltlW2ldXT1vP3RbaV06dDtyZXR1cm4gbn12YXIgcj1lKCIuL2hhc0FycmF5TmF0
dXJlIik7dC5leHBvcnRzPW59LHsiLi9oYXNBcnJheU5hdHVyZSI6NzJ9XSw2MzpbZnVuY3Rpb24o
ZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlLHQpe3ZhciBuPW51bGw9PXR8fCJib29sZWFu
Ij09dHlwZW9mIHR8fCIiPT09dDtpZihuKXJldHVybiIiO3ZhciBvPWlzTmFOKHQpO3JldHVybiBv
fHwwPT09dHx8ci5pc1VuaXRsZXNzTnVtYmVyW2VdPyIiK3Q6dCsicHgifXZhciByPWUoIi4vQ1NT
UHJvcGVydHkiKTt0LmV4cG9ydHM9bn0seyIuL0NTU1Byb3BlcnR5IjoyfV0sNjQ6W2Z1bmN0aW9u
KGUsdCl7ZnVuY3Rpb24gbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZX19ZnVuY3Rpb24g
cigpe312YXIgbz1lKCIuL2NvcHlQcm9wZXJ0aWVzIik7byhyLHt0aGF0UmV0dXJuczpuLHRoYXRS
ZXR1cm5zRmFsc2U6bighMSksdGhhdFJldHVybnNUcnVlOm4oITApLHRoYXRSZXR1cm5zTnVsbDpu
KG51bGwpLHRoYXRSZXR1cm5zVGhpczpmdW5jdGlvbigpe3JldHVybiB0aGlzfSx0aGF0UmV0dXJu
c0FyZ3VtZW50OmZ1bmN0aW9uKGUpe3JldHVybiBlfX0pLHQuZXhwb3J0cz1yfSx7Ii4vY29weVBy
b3BlcnRpZXMiOjYxfV0sNjU6W2Z1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4o
ZSl7cmV0dXJuIHJbZV19ZSgiLi90aHJvd0lmIik7dmFyIHI9eyImIjoiJmFtcDsiLCI+IjoiJmd0
OyIsIjwiOiImbHQ7IiwnIic6IiZxdW90OyIsIiciOiImI3gyNzsiLCIvIjoiJiN4MmY7In0sbz1m
dW5jdGlvbihlKXt2YXIgdD10eXBlb2YgZSxyPSJvYmplY3QiPT09dDtyZXR1cm4iIj09PWV8fHI/
IiI6InN0cmluZyI9PT10P2UucmVwbGFjZSgvWyY+PCInXC9dL2csbik6KCIiK2UpLnJlcGxhY2Uo
L1smPjwiJ1wvXS9nLG4pfTt0LmV4cG9ydHM9b30seyIuL3Rocm93SWYiOjg2fV0sNjY6W2Z1bmN0
aW9uKGUsdCl7dmFyIG49ZnVuY3Rpb24oZSl7dmFyIHQ9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNh
bGwoYXJndW1lbnRzKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIFN0cmluZyhlKX0pLHI9ZS5zcGxp
dCgiJXMiKS5sZW5ndGgtMTtyZXR1cm4gciE9PXQubGVuZ3RoLTE/bigiZXggYXJncyBudW1iZXIg
bWlzbWF0Y2g6ICVzIixKU09OLnN0cmluZ2lmeSh0KSk6bi5fcHJlZml4K0pTT04uc3RyaW5naWZ5
KHQpK24uX3N1ZmZpeH07bi5fcHJlZml4PSI8IVtFWFsiLG4uX3N1ZmZpeD0iXV0+Iix0LmV4cG9y
dHM9bn0se31dLDY3OltmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUsdCxu
KXt2YXIgcj1lO3Jbbl09dH1mdW5jdGlvbiByKGUpe2lmKG51bGw9PT1lfHx2b2lkIDA9PT1lKXJl
dHVybiBlO3ZhciB0PXt9O3JldHVybiBvKGUsbix0KSx0fWUoIi4vdGhyb3dJZiIpO3ZhciBvPWUo
Ii4vdHJhdmVyc2VBbGxDaGlsZHJlbiIpO3QuZXhwb3J0cz1yfSx7Ii4vdGhyb3dJZiI6ODYsIi4v
dHJhdmVyc2VBbGxDaGlsZHJlbiI6ODd9XSw2ODpbZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7
dmFyIG49ZnVuY3Rpb24oZSx0LG4pe0FycmF5LmlzQXJyYXkoZSk/ZS5mb3JFYWNoKHQsbik6ZSYm
dC5jYWxsKG4sZSl9O3QuZXhwb3J0cz1ufSx7fV0sNjk6W2Z1bmN0aW9uKGUsdCl7ZnVuY3Rpb24g
bihlLHQsbil7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBlP2U6dD9yKGUsdCxuKTpkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZChlKX1mdW5jdGlvbiByKGUsdCxuKXt2YXIgaSxhLHM7aWYobyh0KT09ZSly
ZXR1cm4gdDtpZih0LmdldEVsZW1lbnRzQnlUYWdOYW1lKXtmb3IoYT10LmdldEVsZW1lbnRzQnlU
YWdOYW1lKG58fCIqIikscz0wO3M8YS5sZW5ndGg7cysrKWlmKG8oYVtzXSk9PWUpcmV0dXJuIGFb
c119ZWxzZSBmb3IoYT10LmNoaWxkTm9kZXMscz0wO3M8YS5sZW5ndGg7cysrKWlmKGk9cihlLGFb
c10pKXJldHVybiBpO3JldHVybiBudWxsfWZ1bmN0aW9uIG8oZSl7dmFyIHQ9ZS5nZXRBdHRyaWJ1
dGVOb2RlJiZlLmdldEF0dHJpYnV0ZU5vZGUoImlkIik7cmV0dXJuIHQ/dC52YWx1ZTpudWxsfXQu
ZXhwb3J0cz1ufSx7fV0sNzA6W2Z1bmN0aW9uKGUsdCl7IWZ1bmN0aW9uKCl7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIG4oZSl7dmFyIHQ9ZS50YXJnZXR8fGUuc3JjRWxlbWVudHx8ci5nbG9iYWw7cmV0
dXJuIDM9PT10Lm5vZGVUeXBlP3QucGFyZW50Tm9kZTp0fXZhciByPWUoIi4vRXhlY3V0aW9uRW52
aXJvbm1lbnQiKTt0LmV4cG9ydHM9bn0oKX0seyIuL0V4ZWN1dGlvbkVudmlyb25tZW50IjoxOX1d
LDcxOltmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKCl7cmV0dXJuIW8mJnIu
Y2FuVXNlRE9NJiYobz0iaW5uZXJUZXh0ImluIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
PyJpbm5lclRleHQiOiJ0ZXh0Q29udGVudCIpLG99dmFyIHI9ZSgiLi9FeGVjdXRpb25FbnZpcm9u
bWVudCIpLG89bnVsbDt0LmV4cG9ydHM9bn0seyIuL0V4ZWN1dGlvbkVudmlyb25tZW50IjoxOX1d
LDcyOltmdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG4oZSl7cmV0dXJuISFlJiYoIm9iamVjdCI9PXR5
cGVvZiBlfHwiZnVuY3Rpb24iPT10eXBlb2YgZSkmJiJsZW5ndGgiaW4gZSYmISgic2V0SW50ZXJ2
YWwiaW4gZSkmJiJudW1iZXIiIT10eXBlb2YgZS5ub2RlVHlwZSYmKEFycmF5LmlzQXJyYXkoZSl8
fCJjYWxsZWUiaW4gZXx8Iml0ZW0iaW4gZSl9dC5leHBvcnRzPW59LHt9XSw3MzpbZnVuY3Rpb24o
ZSx0KXtmdW5jdGlvbiBuKGUpe3JldHVybiBlLnJlcGxhY2UociwiLSQxIikudG9Mb3dlckNhc2Uo
KX12YXIgcj0vKFtBLVpdKS9nO3QuZXhwb3J0cz1ufSx7fV0sNzQ6W2Z1bmN0aW9uKGUsdCl7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSx0LG4pe3ZhciByPWUuY2hpbGROb2RlcyxvPWUuY2hpbGRO
b2Rlc1tuXTtyZXR1cm4gbz09PXQ/dDoodC5wYXJlbnROb2RlJiZ0LnBhcmVudE5vZGUucmVtb3Zl
Q2hpbGQodCksbj49ci5sZW5ndGg/ZS5hcHBlbmRDaGlsZCh0KTplLmluc2VydEJlZm9yZSh0LHJb
bl0pLHQpfXQuZXhwb3J0cz1ufSx7fV0sNzU6W2Z1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gbihlKXtp
ZighZSl0aHJvdyBuZXcgRXJyb3IoIkludmFyaWFudCBWaW9sYXRpb24iKX10LmV4cG9ydHM9bn0s
e31dLDc2OltmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUsdCl7aWYoIXJ8
fHQmJiFyLmFkZEV2ZW50TGlzdGVuZXIpcmV0dXJuITE7dmFyIG49ZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2IiksaT0ib24iK2UsYT1pIGluIG47cmV0dXJuIGF8fChuLnNldEF0dHJpYnV0ZShp
LCIiKSxhPSJmdW5jdGlvbiI9PXR5cGVvZiBuW2ldLCJ1bmRlZmluZWQiIT10eXBlb2YgbltpXSYm
KG5baV09dm9pZCAwKSxuLnJlbW92ZUF0dHJpYnV0ZShpKSksIWEmJm8mJiJ3aGVlbCI9PT1lJiYo
YT1kb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5oYXNGZWF0dXJlKCJFdmVudHMud2hlZWwiLCIzLjAi
KSksbj1udWxsLGF9dmFyIHIsbyxpPWUoIi4vRXhlY3V0aW9uRW52aXJvbm1lbnQiKTtpLmNhblVz
ZURPTSYmKHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iiksbz1kb2N1bWVudC5pbXBsZW1l
bnRhdGlvbiYmZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uaGFzRmVhdHVyZSYmZG9jdW1lbnQuaW1w
bGVtZW50YXRpb24uaGFzRmVhdHVyZSgiIiwiIikhPT0hMCksdC5leHBvcnRzPW59LHsiLi9FeGVj
dXRpb25FbnZpcm9ubWVudCI6MTl9XSw3NzpbZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gbihlKXtlfHwoZT0iIik7dmFyIHQsbj1hcmd1bWVudHMubGVuZ3RoO2lmKG4+MSlmb3Io
dmFyIHI9MTtuPnI7cisrKXQ9YXJndW1lbnRzW3JdLHQmJihlKz0iICIrdCk7cmV0dXJuIGV9dC5l
eHBvcnRzPW59LHt9XSw3ODpbZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7dmFyIG49ZSgiLi90
aHJvd0lmIikscj0iTk9UX09CSkVDVF9FUlJPUiIsbz1mdW5jdGlvbihlKXt2YXIgdCxvPXt9O24o
IShlIGluc3RhbmNlb2YgT2JqZWN0KXx8QXJyYXkuaXNBcnJheShlKSxyKTtmb3IodCBpbiBlKWUu
aGFzT3duUHJvcGVydHkodCkmJihvW3RdPXQpO3JldHVybiBvfTt0LmV4cG9ydHM9b30seyIuL3Ro
cm93SWYiOjg2fV0sNzk6W2Z1bmN0aW9uKGUsdCl7dmFyIG49ZnVuY3Rpb24oZSl7dmFyIHQ7Zm9y
KHQgaW4gZSlpZihlLmhhc093blByb3BlcnR5KHQpKXJldHVybiB0O3JldHVybiBudWxsfTt0LmV4
cG9ydHM9bn0se31dLDgwOltmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUp
e3ZhciB0PXt9O3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdC5oYXNPd25Qcm9wZXJ0eShuKT90
W25dOnRbbl09ZS5jYWxsKHRoaXMsbil9fXQuZXhwb3J0cz1ufSx7fV0sODE6W2Z1bmN0aW9uKGUs
dCl7InVzZSBzdHJpY3QiO3ZhciBuPWUoIi4vbWVyZ2VJbnRvIikscj1mdW5jdGlvbihlLHQpe3Zh
ciByPXt9O3JldHVybiBuKHIsZSksbihyLHQpLHJ9O3QuZXhwb3J0cz1yfSx7Ii4vbWVyZ2VJbnRv
Ijo4M31dLDgyOltmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1lKCIuL2tleU1pcnJv
ciIpLHI9ZSgiLi90aHJvd0lmIiksbz0zNixpPW4oe01FUkdFX0FSUkFZX0ZBSUw6bnVsbCxNRVJH
RV9DT1JFX0ZBSUxVUkU6bnVsbCxNRVJHRV9UWVBFX1VTQUdFX0ZBSUxVUkU6bnVsbCxNRVJHRV9E
RUVQX01BWF9MRVZFTFM6bnVsbCxNRVJHRV9ERUVQX05PX0FSUl9TVFJBVEVHWTpudWxsfSksYT1m
dW5jdGlvbihlKXtyZXR1cm4ib2JqZWN0IiE9dHlwZW9mIGV8fG51bGw9PT1lfSxzPXtNQVhfTUVS
R0VfREVQVEg6byxpc1Rlcm1pbmFsOmEsbm9ybWFsaXplTWVyZ2VBcmc6ZnVuY3Rpb24oZSl7cmV0
dXJuIHZvaWQgMD09PWV8fG51bGw9PT1lP3t9OmV9LGNoZWNrTWVyZ2VBcnJheUFyZ3M6ZnVuY3Rp
b24oZSx0KXtyKCFBcnJheS5pc0FycmF5KGUpfHwhQXJyYXkuaXNBcnJheSh0KSxpLk1FUkdFX0NP
UkVfRkFJTFVSRSl9LGNoZWNrTWVyZ2VPYmplY3RBcmdzOmZ1bmN0aW9uKGUsdCl7cy5jaGVja01l
cmdlT2JqZWN0QXJnKGUpLHMuY2hlY2tNZXJnZU9iamVjdEFyZyh0KX0sY2hlY2tNZXJnZU9iamVj
dEFyZzpmdW5jdGlvbihlKXtyKGEoZSl8fEFycmF5LmlzQXJyYXkoZSksaS5NRVJHRV9DT1JFX0ZB
SUxVUkUpfSxjaGVja01lcmdlTGV2ZWw6ZnVuY3Rpb24oZSl7cihlPj1vLGkuTUVSR0VfREVFUF9N
QVhfTEVWRUxTKX0sY2hlY2tBcnJheVN0cmF0ZWd5OmZ1bmN0aW9uKGUpe3Iodm9pZCAwIT09ZSYm
IShlIGluIHMuQXJyYXlTdHJhdGVnaWVzKSxpLk1FUkdFX0RFRVBfTk9fQVJSX1NUUkFURUdZKX0s
QXJyYXlTdHJhdGVnaWVzOm4oe0Nsb2JiZXI6ITAsSW5kZXhCeUluZGV4OiEwfSksRVJST1JTOml9
O3QuZXhwb3J0cz1zfSx7Ii4va2V5TWlycm9yIjo3OCwiLi90aHJvd0lmIjo4Nn1dLDgzOltmdW5j
dGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUsdCl7aWYobyhlKSxudWxsIT10KXtv
KHQpO2Zvcih2YXIgbiBpbiB0KXQuaGFzT3duUHJvcGVydHkobikmJihlW25dPXRbbl0pfX12YXIg
cj1lKCIuL21lcmdlSGVscGVycyIpLG89ci5jaGVja01lcmdlT2JqZWN0QXJnO3QuZXhwb3J0cz1u
fSx7Ii4vbWVyZ2VIZWxwZXJzIjo4Mn1dLDg0OltmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt2
YXIgbj1mdW5jdGlvbihlLHQpe3ZhciBuO2ZvcihuIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShuKSYm
KGUucHJvdG90eXBlW25dPXRbbl0pfTt0LmV4cG9ydHM9bn0se31dLDg1OltmdW5jdGlvbihlLHQp
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUsdCxuKXtpZighZSlyZXR1cm4gbnVsbDt2YXIgcj0w
LG89e307Zm9yKHZhciBpIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShpKSYmKG9baV09dC5jYWxsKG4s
aSxlW2ldLHIrKykpO3JldHVybiBvfXQuZXhwb3J0cz1ufSx7fV0sODY6W2Z1bmN0aW9uKGUsdCl7
InVzZSBzdHJpY3QiO3ZhciBuPWZ1bmN0aW9uKGUsdCl7aWYoZSl0aHJvdyBuZXcgRXJyb3IodCl9
O3QuZXhwb3J0cz1ufSx7fV0sODc6W2Z1bmN0aW9uKGUsdCl7IWZ1bmN0aW9uKCl7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIG4oZSx0LG4pe251bGwhPT1lJiZ2b2lkIDAhPT1lJiZ1KGUsIiIsMCx0LG4p
fXZhciByPWUoIi4vUmVhY3RDb21wb25lbnQiKSxvPWUoIi4vUmVhY3RUZXh0Q29tcG9uZW50Iiks
aT1lKCIuL3Rocm93SWYiKSxhPSJEVVBMSUNBVEVfS0VZX0VSUk9SIixzPSJJTlZBTElEX0NISUxE
Iix1PWZ1bmN0aW9uKGUsdCxuLGEsbCl7dmFyIGM9MDtpZihBcnJheS5pc0FycmF5KGUpKWZvcih2
YXIgcD0wO3A8ZS5sZW5ndGg7cCsrKXt2YXIgZD1lW3BdLGg9dCsiWyIrci5nZXRLZXkoZCxwKSsi
XSIsZj1uK2M7Yys9dShkLGgsZixhLGwpfWVsc2V7dmFyIHY9dHlwZW9mIGUsbT0iIj09PXQsZz1t
PyJbIityLmdldEtleShlLDApKyJdIjp0O2lmKG51bGw9PT1lfHx2b2lkIDA9PT1lfHwiYm9vbGVh
biI9PT12KWEobCxudWxsLGcsbiksYz0xO2Vsc2UgaWYoZS5tb3VudENvbXBvbmVudEludG9Ob2Rl
KWEobCxlLGcsbiksYz0xO2Vsc2UgaWYoIm9iamVjdCI9PT12KXtpKGUmJjE9PT1lLm5vZGVUeXBl
LHMpO2Zvcih2YXIgeSBpbiBlKWUuaGFzT3duUHJvcGVydHkoeSkmJihjKz11KGVbeV0sdCsieyIr
eSsifSIsbitjLGEsbCkpfWVsc2UgaWYoInN0cmluZyI9PT12KXt2YXIgQz1uZXcgbyhlKTthKGws
QyxnLG4pLGMrPTF9ZWxzZSBpZigibnVtYmVyIj09PXYpe3ZhciBFPW5ldyBvKCIiK2UpO2EobCxF
LGcsbiksYys9MX19cmV0dXJuIGN9O24uRFVQTElDQVRFX0tFWV9FUlJPUj1hLHQuZXhwb3J0cz1u
fSgpfSx7Ii4vUmVhY3RDb21wb25lbnQiOjIyLCIuL1JlYWN0VGV4dENvbXBvbmVudCI6NDcsIi4v
dGhyb3dJZiI6ODZ9XX0se30sWzIxXSkoMjEpfSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9sYWJzL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ib3dlcl9jb21wb25lbnRzL3Rv
ZG9tdmMtY29tbW9uL2Jhc2UuY3NzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9sYWJzL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ib3dlcl9jb21w
b25lbnRzL3RvZG9tdmMtY29tbW9uL2Jhc2UuY3NzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA2YTM0NThmZDA2MDJiMWZmOGE2ZTIxNzExYzRjZDgzZmRhYTg0ZGVkLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvbGFicy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVh
Y3QvYm93ZXJfY29tcG9uZW50cy90b2RvbXZjLWNvbW1vbi9iYXNlLmNzcworKysgL2Rldi9udWxs
CkBAIC0xLDU1NCArMCwwIEBACi1odG1sLAotYm9keSB7Ci0gICAgbWFyZ2luOiAwOwotICAgIHBh
ZGRpbmc6IDA7Ci19Ci0KLWJ1dHRvbiB7Ci0gICAgbWFyZ2luOiAwOwotICAgIHBhZGRpbmc6IDA7
Ci0gICAgYm9yZGVyOiAwOwotICAgIGJhY2tncm91bmQ6IG5vbmU7Ci0gICAgZm9udC1zaXplOiAx
MDAlOwotICAgIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsKLSAgICBmb250LWZhbWlseTogaW5o
ZXJpdDsKLSAgICBjb2xvcjogaW5oZXJpdDsKLSAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7
Ci0gICAgLyotbW96LWFwcGVhcmFuY2U6IG5vbmU7Ki8KLSAgICAtbXMtYXBwZWFyYW5jZTogbm9u
ZTsKLSAgICAtby1hcHBlYXJhbmNlOiBub25lOwotICAgIGFwcGVhcmFuY2U6IG5vbmU7Ci19Ci0K
LWJvZHkgewotICAgIGZvbnQ6IDE0cHggJ0hlbHZldGljYSBOZXVlJywgSGVsdmV0aWNhLCBBcmlh
bCwgc2Fucy1zZXJpZjsKLSAgICBsaW5lLWhlaWdodDogMS40ZW07Ci0gICAgYmFja2dyb3VuZDog
I2VhZWFlYSB1cmwoJ2JnLnBuZycpOwotICAgIGNvbG9yOiAjNGQ0ZDRkOwotICAgIHdpZHRoOiA1
NTBweDsKLSAgICBtYXJnaW46IDAgYXV0bzsKLSAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBh
bnRpYWxpYXNlZDsKLSAgICAtbW96LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKLSAgICAt
bXMtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwotICAgIC1vLWZvbnQtc21vb3RoaW5nOiBh
bnRpYWxpYXNlZDsKLSAgICBmb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7Ci19Ci0KLSN0b2Rv
YXBwIHsKLSAgICBiYWNrZ3JvdW5kOiAjZmZmOwotICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAy
NTUsIDI1NSwgMC45KTsKLSAgICBtYXJnaW46IDEzMHB4IDAgNDBweCAwOwotICAgIGJvcmRlcjog
MXB4IHNvbGlkICNjY2M7Ci0gICAgcG9zaXRpb246IHJlbGF0aXZlOwotICAgIGJvcmRlci10b3At
bGVmdC1yYWRpdXM6IDJweDsKLSAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMnB4OwotICAg
IGJveC1zaGFkb3c6IDAgMnB4IDZweCAwIHJnYmEoMCwgMCwgMCwgMC4yKSwKLSAgICAgICAgICAg
ICAgICAwIDI1cHggNTBweCAwIHJnYmEoMCwgMCwgMCwgMC4xNSk7Ci19Ci0KLSN0b2RvYXBwOmJl
Zm9yZSB7Ci0gICAgY29udGVudDogJyc7Ci0gICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjZjVk
NmQ2OwotICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNmNWQ2ZDY7Ci0gICAgd2lkdGg6IDJw
eDsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgdG9wOiAwOwotICAgIGxlZnQ6IDQwcHg7
Ci0gICAgaGVpZ2h0OiAxMDAlOwotfQotCi0jdG9kb2FwcCBpbnB1dDo6LXdlYmtpdC1pbnB1dC1w
bGFjZWhvbGRlciB7Ci0gICAgZm9udC1zdHlsZTogaXRhbGljOwotfQotCi0jdG9kb2FwcCBpbnB1
dDo6LW1vei1wbGFjZWhvbGRlciB7Ci0gICAgZm9udC1zdHlsZTogaXRhbGljOwotICAgIGNvbG9y
OiAjYTlhOWE5OwotfQotCi0jdG9kb2FwcCBoMSB7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwot
ICAgIHRvcDogLTEyMHB4OwotICAgIHdpZHRoOiAxMDAlOwotICAgIGZvbnQtc2l6ZTogNzBweDsK
LSAgICBmb250LXdlaWdodDogYm9sZDsKLSAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci0gICAgY29s
b3I6ICNiM2IzYjM7Ci0gICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zKTsKLSAgICB0
ZXh0LXNoYWRvdzogLTFweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKTsKLSAgICAtd2Via2l0LXRl
eHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7Ci0gICAgLW1vei10ZXh0LXJlbmRlcmlu
Zzogb3B0aW1pemVMZWdpYmlsaXR5OwotICAgIC1tcy10ZXh0LXJlbmRlcmluZzogb3B0aW1pemVM
ZWdpYmlsaXR5OwotICAgIC1vLXRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7Ci0g
ICAgdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTsKLX0KLQotI2hlYWRlciB7Ci0g
ICAgcGFkZGluZy10b3A6IDE1cHg7Ci0gICAgYm9yZGVyLXJhZGl1czogaW5oZXJpdDsKLX0KLQot
I2hlYWRlcjpiZWZvcmUgewotICAgIGNvbnRlbnQ6ICcnOwotICAgIHBvc2l0aW9uOiBhYnNvbHV0
ZTsKLSAgICB0b3A6IDA7Ci0gICAgcmlnaHQ6IDA7Ci0gICAgbGVmdDogMDsKLSAgICBoZWlnaHQ6
IDE1cHg7Ci0gICAgei1pbmRleDogMjsKLSAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzZj
NjE1YzsKLSAgICBiYWNrZ3JvdW5kOiAjOGQ3ZDc3OwotICAgIGJhY2tncm91bmQ6IC13ZWJraXQt
Z3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwgbGVmdCBib3R0b20sIGZyb20ocmdiYSgxMzIsIDEx
MCwgMTAwLCAwLjgpKSx0byhyZ2JhKDEwMSwgODQsIDc2LCAwLjgpKSk7Ci0gICAgYmFja2dyb3Vu
ZDogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCByZ2JhKDEzMiwgMTEwLCAxMDAsIDAuOCks
IHJnYmEoMTAxLCA4NCwgNzYsIDAuOCkpOwotICAgIGJhY2tncm91bmQ6IC1tb3otbGluZWFyLWdy
YWRpZW50KHRvcCwgcmdiYSgxMzIsIDExMCwgMTAwLCAwLjgpLCByZ2JhKDEwMSwgODQsIDc2LCAw
LjgpKTsKLSAgICBiYWNrZ3JvdW5kOiAtby1saW5lYXItZ3JhZGllbnQodG9wLCByZ2JhKDEzMiwg
MTEwLCAxMDAsIDAuOCksIHJnYmEoMTAxLCA4NCwgNzYsIDAuOCkpOwotICAgIGJhY2tncm91bmQ6
IC1tcy1saW5lYXItZ3JhZGllbnQodG9wLCByZ2JhKDEzMiwgMTEwLCAxMDAsIDAuOCksIHJnYmEo
MTAxLCA4NCwgNzYsIDAuOCkpOwotICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0b3As
IHJnYmEoMTMyLCAxMTAsIDEwMCwgMC44KSwgcmdiYSgxMDEsIDg0LCA3NiwgMC44KSk7Ci0gICAg
Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMXB4OwotICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVz
OiAxcHg7Ci19Ci0KLSNuZXctdG9kbywKLS5lZGl0IHsKLSAgICBwb3NpdGlvbjogcmVsYXRpdmU7
Ci0gICAgbWFyZ2luOiAwOwotICAgIHdpZHRoOiAxMDAlOwotICAgIGZvbnQtc2l6ZTogMjRweDsK
LSAgICBmb250LWZhbWlseTogaW5oZXJpdDsKLSAgICBsaW5lLWhlaWdodDogMS40ZW07Ci0gICAg
Ym9yZGVyOiAwOwotICAgIG91dGxpbmU6IG5vbmU7Ci0gICAgY29sb3I6IGluaGVyaXQ7Ci0gICAg
cGFkZGluZzogNnB4OwotICAgIGJvcmRlcjogMXB4IHNvbGlkICM5OTk7Ci0gICAgYm94LXNoYWRv
dzogaW5zZXQgMCAtMXB4IDVweCAwIHJnYmEoMCwgMCwgMCwgMC4yKTsKLSAgICAtd2Via2l0LWJv
eC1zaXppbmc6IGJvcmRlci1ib3g7Ci0gICAgLW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94Owot
ICAgIC1tcy1ib3gtc2l6aW5nOiBib3JkZXItYm94OwotICAgIC1vLWJveC1zaXppbmc6IGJvcmRl
ci1ib3g7Ci0gICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKLSAgICAtd2Via2l0LWZvbnQtc21v
b3RoaW5nOiBhbnRpYWxpYXNlZDsKLSAgICAtbW96LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNl
ZDsKLSAgICAtbXMtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwotICAgIC1vLWZvbnQtc21v
b3RoaW5nOiBhbnRpYWxpYXNlZDsKLSAgICBmb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7Ci19
Ci0KLSNuZXctdG9kbyB7Ci0gICAgcGFkZGluZzogMTZweCAxNnB4IDE2cHggNjBweDsKLSAgICBi
b3JkZXI6IG5vbmU7Ci0gICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjAyKTsKLSAgICB6
LWluZGV4OiAyOwotICAgIGJveC1zaGFkb3c6IG5vbmU7Ci19Ci0KLSNtYWluIHsKLSAgICBwb3Np
dGlvbjogcmVsYXRpdmU7Ci0gICAgei1pbmRleDogMjsKLSAgICBib3JkZXItdG9wOiAxcHggZG90
dGVkICNhZGFkYWQ7Ci19Ci0KLWxhYmVsW2Zvcj0ndG9nZ2xlLWFsbCddIHsKLSAgICBkaXNwbGF5
OiBub25lOwotfQotCi0jdG9nZ2xlLWFsbCB7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAg
IHRvcDogLTQycHg7Ci0gICAgbGVmdDogLTRweDsKLSAgICB3aWR0aDogNDBweDsKLSAgICB0ZXh0
LWFsaWduOiBjZW50ZXI7Ci0gICAgYm9yZGVyOiBub25lOyAvKiBNb2JpbGUgU2FmYXJpICovCi19
Ci0KLSN0b2dnbGUtYWxsOmJlZm9yZSB7Ci0gICAgY29udGVudDogJ8K7JzsKLSAgICBmb250LXNp
emU6IDI4cHg7Ci0gICAgY29sb3I6ICNkOWQ5ZDk7Ci0gICAgcGFkZGluZzogMCAyNXB4IDdweDsK
LX0KLQotI3RvZ2dsZS1hbGw6Y2hlY2tlZDpiZWZvcmUgewotICAgIGNvbG9yOiAjNzM3MzczOwot
fQotCi0jdG9kby1saXN0IHsKLSAgICBtYXJnaW46IDA7Ci0gICAgcGFkZGluZzogMDsKLSAgICBs
aXN0LXN0eWxlOiBub25lOwotfQotCi0jdG9kby1saXN0IGxpIHsKLSAgICBwb3NpdGlvbjogcmVs
YXRpdmU7Ci0gICAgZm9udC1zaXplOiAyNHB4OwotICAgIGJvcmRlci1ib3R0b206IDFweCBkb3R0
ZWQgI2NjYzsKLX0KLQotI3RvZG8tbGlzdCBsaTpsYXN0LWNoaWxkIHsKLSAgICBib3JkZXItYm90
dG9tOiBub25lOwotfQotCi0jdG9kby1saXN0IGxpLmVkaXRpbmcgewotICAgIGJvcmRlci1ib3R0
b206IG5vbmU7Ci0gICAgcGFkZGluZzogMDsKLX0KLQotI3RvZG8tbGlzdCBsaS5lZGl0aW5nIC5l
ZGl0IHsKLSAgICBkaXNwbGF5OiBibG9jazsKLSAgICB3aWR0aDogNTA2cHg7Ci0gICAgcGFkZGlu
ZzogMTNweCAxN3B4IDEycHggMTdweDsKLSAgICBtYXJnaW46IDAgMCAwIDQzcHg7Ci19Ci0KLSN0
b2RvLWxpc3QgbGkuZWRpdGluZyAudmlldyB7Ci0gICAgZGlzcGxheTogbm9uZTsKLX0KLQotI3Rv
ZG8tbGlzdCBsaSAudG9nZ2xlIHsKLSAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci0gICAgd2lkdGg6
IDQwcHg7Ci0gICAgLyogYXV0bywgc2luY2Ugbm9uLVdlYktpdCBicm93c2VycyBkb2Vzbid0IHN1
cHBvcnQgaW5wdXQgc3R5bGluZyAqLwotICAgIGhlaWdodDogYXV0bzsKLSAgICBwb3NpdGlvbjog
YWJzb2x1dGU7Ci0gICAgdG9wOiAwOwotICAgIGJvdHRvbTogMDsKLSAgICBtYXJnaW46IGF1dG8g
MDsKLSAgICBib3JkZXI6IG5vbmU7IC8qIE1vYmlsZSBTYWZhcmkgKi8KLSAgICAtd2Via2l0LWFw
cGVhcmFuY2U6IG5vbmU7Ci0gICAgLyotbW96LWFwcGVhcmFuY2U6IG5vbmU7Ki8KLSAgICAtbXMt
YXBwZWFyYW5jZTogbm9uZTsKLSAgICAtby1hcHBlYXJhbmNlOiBub25lOwotICAgIGFwcGVhcmFu
Y2U6IG5vbmU7Ci19Ci0KLSN0b2RvLWxpc3QgbGkgLnRvZ2dsZTphZnRlciB7Ci0gICAgY29udGVu
dDogJ+KclCc7Ci0gICAgbGluZS1oZWlnaHQ6IDQzcHg7IC8qIDQwICsgYSBjb3VwbGUgb2YgcGl4
ZWxzIHZpc3VhbCBhZGp1c3RtZW50ICovCi0gICAgZm9udC1zaXplOiAyMHB4OwotICAgIGNvbG9y
OiAjZDlkOWQ5OwotICAgIHRleHQtc2hhZG93OiAwIC0xcHggMCAjYmZiZmJmOwotfQotCi0jdG9k
by1saXN0IGxpIC50b2dnbGU6Y2hlY2tlZDphZnRlciB7Ci0gICAgY29sb3I6ICM4NWFkYTc7Ci0g
ICAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgIzY2OTk5MTsKLSAgICBib3R0b206IDFweDsKLSAgICBw
b3NpdGlvbjogcmVsYXRpdmU7Ci19Ci0KLSN0b2RvLWxpc3QgbGkgbGFiZWwgewotICAgIHdvcmQt
YnJlYWs6IGJyZWFrLXdvcmQ7Ci0gICAgcGFkZGluZzogMTVweDsKLSAgICBtYXJnaW4tbGVmdDog
NDVweDsKLSAgICBkaXNwbGF5OiBibG9jazsKLSAgICBsaW5lLWhlaWdodDogMS4yOwotICAgIC13
ZWJraXQtdHJhbnNpdGlvbjogY29sb3IgMC40czsKLSAgICAtbW96LXRyYW5zaXRpb246IGNvbG9y
IDAuNHM7Ci0gICAgLW1zLXRyYW5zaXRpb246IGNvbG9yIDAuNHM7Ci0gICAgLW8tdHJhbnNpdGlv
bjogY29sb3IgMC40czsKLSAgICB0cmFuc2l0aW9uOiBjb2xvciAwLjRzOwotfQotCi0jdG9kby1s
aXN0IGxpLmNvbXBsZXRlZCBsYWJlbCB7Ci0gICAgY29sb3I6ICNhOWE5YTk7Ci0gICAgdGV4dC1k
ZWNvcmF0aW9uOiBsaW5lLXRocm91Z2g7Ci19Ci0KLSN0b2RvLWxpc3QgbGkgLmRlc3Ryb3kgewot
ICAgIGRpc3BsYXk6IG5vbmU7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHRvcDogMDsK
LSAgICByaWdodDogMTBweDsKLSAgICBib3R0b206IDA7Ci0gICAgd2lkdGg6IDQwcHg7Ci0gICAg
aGVpZ2h0OiA0MHB4OwotICAgIG1hcmdpbjogYXV0byAwOwotICAgIGZvbnQtc2l6ZTogMjJweDsK
LSAgICBjb2xvcjogI2E4OGE4YTsKLSAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjJzOwot
ICAgIC1tb3otdHJhbnNpdGlvbjogYWxsIDAuMnM7Ci0gICAgLW1zLXRyYW5zaXRpb246IGFsbCAw
LjJzOwotICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjJzOwotICAgIHRyYW5zaXRpb246IGFsbCAw
LjJzOwotfQotCi0jdG9kby1saXN0IGxpIC5kZXN0cm95OmhvdmVyIHsKLSAgICB0ZXh0LXNoYWRv
dzogMCAwIDFweCAjMDAwLAotICAgICAgICAgICAgICAgICAwIDAgMTBweCByZ2JhKDE5OSwgMTA3
LCAxMDcsIDAuOCk7Ci0gICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEuMyk7Ci0gICAgLW1v
ei10cmFuc2Zvcm06IHNjYWxlKDEuMyk7Ci0gICAgLW1zLXRyYW5zZm9ybTogc2NhbGUoMS4zKTsK
LSAgICAtby10cmFuc2Zvcm06IHNjYWxlKDEuMyk7Ci0gICAgdHJhbnNmb3JtOiBzY2FsZSgxLjMp
OwotfQotCi0jdG9kby1saXN0IGxpIC5kZXN0cm95OmFmdGVyIHsKLSAgICBjb250ZW50OiAn4pyW
JzsKLX0KLQotI3RvZG8tbGlzdCBsaTpob3ZlciAuZGVzdHJveSB7Ci0gICAgZGlzcGxheTogYmxv
Y2s7Ci19Ci0KLSN0b2RvLWxpc3QgbGkgLmVkaXQgewotICAgIGRpc3BsYXk6IG5vbmU7Ci19Ci0K
LSN0b2RvLWxpc3QgbGkuZWRpdGluZzpsYXN0LWNoaWxkIHsKLSAgICBtYXJnaW4tYm90dG9tOiAt
MXB4OwotfQotCi0jZm9vdGVyIHsKLSAgICBjb2xvcjogIzc3NzsKLSAgICBwYWRkaW5nOiAwIDE1
cHg7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHJpZ2h0OiAwOwotICAgIGJvdHRvbTog
LTMxcHg7Ci0gICAgbGVmdDogMDsKLSAgICBoZWlnaHQ6IDIwcHg7Ci0gICAgei1pbmRleDogMTsK
LSAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci19Ci0KLSNmb290ZXI6YmVmb3JlIHsKLSAgICBjb250
ZW50OiAnJzsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgcmlnaHQ6IDA7Ci0gICAgYm90
dG9tOiAzMXB4OwotICAgIGxlZnQ6IDA7Ci0gICAgaGVpZ2h0OiA1MHB4OwotICAgIHotaW5kZXg6
IC0xOwotICAgIGJveC1zaGFkb3c6IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMyksCi0gICAg
ICAgICAgICAgICAgMCA2cHggMCAtM3B4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KSwKLSAgICAg
ICAgICAgICAgICAwIDdweCAxcHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMyksCi0gICAgICAgICAg
ICAgICAgMCA0M3B4IDAgLTZweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCksCi0gICAgICAgICAg
ICAgICAgMCA0NHB4IDJweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKTsKLX0KLQotI3RvZG8tY291
bnQgewotICAgIGZsb2F0OiBsZWZ0OwotICAgIHRleHQtYWxpZ246IGxlZnQ7Ci19Ci0KLSNmaWx0
ZXJzIHsKLSAgICBtYXJnaW46IDA7Ci0gICAgcGFkZGluZzogMDsKLSAgICBsaXN0LXN0eWxlOiBu
b25lOwotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICByaWdodDogMDsKLSAgICBsZWZ0OiAw
OwotfQotCi0jZmlsdGVycyBsaSB7Ci0gICAgZGlzcGxheTogaW5saW5lOwotfQotCi0jZmlsdGVy
cyBsaSBhIHsKLSAgICBjb2xvcjogIzgzNzU2ZjsKLSAgICBtYXJnaW46IDJweDsKLSAgICB0ZXh0
LWRlY29yYXRpb246IG5vbmU7Ci19Ci0KLSNmaWx0ZXJzIGxpIGEuc2VsZWN0ZWQgewotICAgIGZv
bnQtd2VpZ2h0OiBib2xkOwotfQotCi0jY2xlYXItY29tcGxldGVkIHsKLSAgICBmbG9hdDogcmln
aHQ7Ci0gICAgcG9zaXRpb246IHJlbGF0aXZlOwotICAgIGxpbmUtaGVpZ2h0OiAyMHB4OwotICAg
IHRleHQtZGVjb3JhdGlvbjogbm9uZTsKLSAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAu
MSk7Ci0gICAgZm9udC1zaXplOiAxMXB4OwotICAgIHBhZGRpbmc6IDAgMTBweDsKLSAgICBib3Jk
ZXItcmFkaXVzOiAzcHg7Ci0gICAgYm94LXNoYWRvdzogMCAtMXB4IDAgMCByZ2JhKDAsIDAsIDAs
IDAuMik7Ci19Ci0KLSNjbGVhci1jb21wbGV0ZWQ6aG92ZXIgewotICAgIGJhY2tncm91bmQ6IHJn
YmEoMCwgMCwgMCwgMC4xNSk7Ci0gICAgYm94LXNoYWRvdzogMCAtMXB4IDAgMCByZ2JhKDAsIDAs
IDAsIDAuMyk7Ci19Ci0KLSNpbmZvIHsKLSAgICBtYXJnaW46IDY1cHggYXV0byAwOwotICAgIGNv
bG9yOiAjYTZhNmE2OwotICAgIGZvbnQtc2l6ZTogMTJweDsKLSAgICB0ZXh0LXNoYWRvdzogMCAx
cHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7Ci0gICAgdGV4dC1hbGlnbjogY2VudGVyOwot
fQotCi0jaW5mbyBhIHsKLSAgICBjb2xvcjogaW5oZXJpdDsKLX0KLQotLyoKLSAgICBIYWNrIHRv
IHJlbW92ZSBiYWNrZ3JvdW5kIGZyb20gTW9iaWxlIFNhZmFyaS4KLSAgICBDYW4ndCB1c2UgaXQg
Z2xvYmFsbHkgc2luY2UgaXQgZGVzdHJveXMgY2hlY2tib3hlcyBpbiBGaXJlZm94IGFuZCBPcGVy
YQotKi8KLUBtZWRpYSBzY3JlZW4gYW5kICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86
MCkgewotICAgICN0b2dnbGUtYWxsLAotICAgICN0b2RvLWxpc3QgbGkgLnRvZ2dsZSB7Ci0gICAg
ICAgIGJhY2tncm91bmQ6IG5vbmU7Ci0gICAgfQotCi0gICAgI3RvZG8tbGlzdCBsaSAudG9nZ2xl
IHsKLSAgICAgICAgaGVpZ2h0OiA0MHB4OwotICAgIH0KLQotICAgICN0b2dnbGUtYWxsIHsKLSAg
ICAgICAgdG9wOiAtNTZweDsKLSAgICAgICAgbGVmdDogLTE1cHg7Ci0gICAgICAgIHdpZHRoOiA2
NXB4OwotICAgICAgICBoZWlnaHQ6IDQxcHg7Ci0gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBy
b3RhdGUoOTBkZWcpOwotICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7Ci0gICAgICAg
IC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKLSAgICAgICAgYXBwZWFyYW5jZTogbm9uZTsKLSAg
ICB9Ci19Ci0KLS5oaWRkZW57Ci0gICAgZGlzcGxheTpub25lOwotfQotCi1ociB7Ci0gICAgbWFy
Z2luOiAyMHB4IDA7Ci0gICAgYm9yZGVyOiAwOwotICAgIGJvcmRlci10b3A6IDFweCBkYXNoZWQg
I0M1QzVDNTsKLSAgICBib3JkZXItYm90dG9tOiAxcHggZGFzaGVkICNGN0Y3Rjc7Ci19Ci0KLS5s
ZWFybiBhIHsKLSAgICBmb250LXdlaWdodDogbm9ybWFsOwotICAgIHRleHQtZGVjb3JhdGlvbjog
bm9uZTsKLSAgICBjb2xvcjogI2I4M2Y0NTsKLX0KLQotLmxlYXJuIGE6aG92ZXIgewotICAgIHRl
eHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwotICAgIGNvbG9yOiAjNzg3ZTdlOwotfQotCi0ubGVh
cm4gaDMsCi0ubGVhcm4gaDQsCi0ubGVhcm4gaDUgewotICAgIG1hcmdpbjogMTBweCAwOwotICAg
IGZvbnQtd2VpZ2h0OiA1MDA7Ci0gICAgbGluZS1oZWlnaHQ6IDEuMjsKLSAgICBjb2xvcjogIzAw
MDsKLX0KLQotLmxlYXJuIGgzIHsKLSAgICBmb250LXNpemU6IDI0cHg7Ci19Ci0KLS5sZWFybiBo
NCB7Ci0gICAgZm9udC1zaXplOiAxOHB4OwotfQotCi0ubGVhcm4gaDUgewotICAgIG1hcmdpbi1i
b3R0b206IDA7Ci0gICAgZm9udC1zaXplOiAxNHB4OwotfQotCi0ubGVhcm4gdWwgewotICAgIHBh
ZGRpbmc6IDA7Ci0gICAgbWFyZ2luOiAwIDAgMzBweCAyNXB4OwotfQotCi0ubGVhcm4gbGkgewot
ICAgIGxpbmUtaGVpZ2h0OiAyMHB4OwotfQotCi0ubGVhcm4gcCB7Ci0gICAgZm9udC1zaXplOiAx
NXB4OwotICAgIGZvbnQtd2VpZ2h0OiAzMDA7Ci0gICAgbGluZS1oZWlnaHQ6IDEuMzsKLSAgICBt
YXJnaW4tdG9wOiAwOwotICAgIG1hcmdpbi1ib3R0b206IDA7Ci19Ci0KLS5xdW90ZSB7Ci0gICAg
Ym9yZGVyOiBub25lOwotICAgIG1hcmdpbjogMjBweCAwIDYwcHggMDsKLX0KLQotLnF1b3RlIHAg
ewotICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKLX0KLQotLnF1b3RlIHA6YmVmb3JlIHsKLSAgICBj
b250ZW50OiAn4oCcJzsKLSAgICBmb250LXNpemU6IDUwcHg7Ci0gICAgb3BhY2l0eTogLjE1Owot
ICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICB0b3A6IC0yMHB4OwotICAgIGxlZnQ6IDNweDsK
LX0KLQotLnF1b3RlIHA6YWZ0ZXIgewotICAgIGNvbnRlbnQ6ICfigJ0nOwotICAgIGZvbnQtc2l6
ZTogNTBweDsKLSAgICBvcGFjaXR5OiAuMTU7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAg
IGJvdHRvbTogLTQycHg7Ci0gICAgcmlnaHQ6IDNweDsKLX0KLQotLnF1b3RlIGZvb3RlciB7Ci0g
ICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIGJvdHRvbTogLTQwcHg7Ci0gICAgcmlnaHQ6IDA7
Ci19Ci0KLS5xdW90ZSBmb290ZXIgaW1nIHsKLSAgICBib3JkZXItcmFkaXVzOiAzcHg7Ci19Ci0K
LS5xdW90ZSBmb290ZXIgYSB7Ci0gICAgbWFyZ2luLWxlZnQ6IDVweDsKLSAgICB2ZXJ0aWNhbC1h
bGlnbjogbWlkZGxlOwotfQotCi0uc3BlZWNoLWJ1YmJsZSB7Ci0gICAgcG9zaXRpb246IHJlbGF0
aXZlOwotICAgIHBhZGRpbmc6IDEwcHg7Ci0gICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAu
MDQpOwotICAgIGJvcmRlci1yYWRpdXM6IDVweDsKLX0KLQotLnNwZWVjaC1idWJibGU6YWZ0ZXIg
ewotICAgIGNvbnRlbnQ6ICcnOwotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICB0b3A6IDEw
MCU7Ci0gICAgcmlnaHQ6IDMwcHg7Ci0gICAgYm9yZGVyOiAxM3B4IHNvbGlkIHRyYW5zcGFyZW50
OwotICAgIGJvcmRlci10b3AtY29sb3I6IHJnYmEoMCwgMCwgMCwgLjA0KTsKLX0KLQotLyoqYm9k
eSovLmxlYXJuLWJhciA+IC5sZWFybiB7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHdp
ZHRoOiAyNzJweDsKLSAgICB0b3A6IDhweDsKLSAgICBsZWZ0OiAtMzAwcHg7Ci0gICAgcGFkZGlu
ZzogMTBweDsKLSAgICBib3JkZXItcmFkaXVzOiA1cHg7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjog
cmdiYSgyNTUsIDI1NSwgMjU1LCAuNik7Ci0gICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogbGVmdDsK
LSAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiA1MDBtczsKLX0KLQotQG1lZGlhIChtaW4td2lkdGg6
IDg5OXB4KSB7Ci0gICAgLyoqYm9keSovLmxlYXJuLWJhciB7Ci0gICAgICAgIHdpZHRoOiBhdXRv
OwotICAgICAgICBtYXJnaW46IDAgMCAwIDMwMHB4OwotICAgIH0KLSAgICAvKipib2R5Ki8ubGVh
cm4tYmFyID4gLmxlYXJuIHsKLSAgICAgICAgbGVmdDogOHB4OwotICAgIH0KLSAgICAvKipib2R5
Ki8ubGVhcm4tYmFyICN0b2RvYXBwIHsKLSAgICAgICAgd2lkdGg6IDU1MHB4OwotICAgICAgICBt
YXJnaW46IDEzMHB4IGF1dG8gNDBweCBhdXRvOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvbGFicy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvcmVhY3QvYm93ZXJfY29tcG9uZW50cy90b2RvbXZjLWNvbW1vbi9iYXNlLmpz
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9sYWJzL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ib3dlcl9jb21wb25lbnRzL3RvZG9tdmMtY29tbW9u
L2Jhc2UuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM2OGU1ZWEwM2E2MWFkMzY2
NzljMTVlYTBhZjY0ODkxMzcxZGI5ZWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9sYWJzL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ib3dlcl9jb21wb25lbnRzL3Rv
ZG9tdmMtY29tbW9uL2Jhc2UuanMKKysrIC9kZXYvbnVsbApAQCAtMSwyMDkgKzAsMCBAQAotKGZ1
bmN0aW9uICgpIHsKLSAgICAndXNlIHN0cmljdCc7Ci0KLSAgICAvLyBVbmRlcnNjb3JlJ3MgVGVt
cGxhdGUgTW9kdWxlCi0gICAgLy8gQ291cnRlc3kgb2YgdW5kZXJzY29yZWpzLm9yZwotICAgIHZh
ciBfID0gKGZ1bmN0aW9uIChfKSB7Ci0gICAgICAgIF8uZGVmYXVsdHMgPSBmdW5jdGlvbiAob2Jq
ZWN0KSB7Ci0gICAgICAgICAgICBpZiAoIW9iamVjdCkgewotICAgICAgICAgICAgICAgIHJldHVy
biBvYmplY3Q7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBmb3IgKHZhciBhcmdzSW5kZXgg
PSAxLCBhcmdzTGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDsgYXJnc0luZGV4IDwgYXJnc0xlbmd0
aDsgYXJnc0luZGV4KyspIHsKLSAgICAgICAgICAgICAgICB2YXIgaXRlcmFibGUgPSBhcmd1bWVu
dHNbYXJnc0luZGV4XTsKLSAgICAgICAgICAgICAgICBpZiAoaXRlcmFibGUpIHsKLSAgICAgICAg
ICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIGl0ZXJhYmxlKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBpZiAob2JqZWN0W2tleV0gPT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG9iamVjdFtrZXldID0gaXRlcmFibGVba2V5XTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIHJldHVybiBvYmplY3Q7Ci0gICAgICAgIH0KLQotICAgICAgICAv
LyBCeSBkZWZhdWx0LCBVbmRlcnNjb3JlIHVzZXMgRVJCLXN0eWxlIHRlbXBsYXRlIGRlbGltaXRl
cnMsIGNoYW5nZSB0aGUKLSAgICAgICAgLy8gZm9sbG93aW5nIHRlbXBsYXRlIHNldHRpbmdzIHRv
IHVzZSBhbHRlcm5hdGl2ZSBkZWxpbWl0ZXJzLgotICAgICAgICBfLnRlbXBsYXRlU2V0dGluZ3Mg
PSB7Ci0gICAgICAgICAgICBldmFsdWF0ZSAgICA6IC88JShbXHNcU10rPyklPi9nLAotICAgICAg
ICAgICAgaW50ZXJwb2xhdGUgOiAvPCU9KFtcc1xTXSs/KSU+L2csCi0gICAgICAgICAgICBlc2Nh
cGUgICAgICA6IC88JS0oW1xzXFNdKz8pJT4vZwotICAgICAgICB9OwotCi0gICAgICAgIC8vIFdo
ZW4gY3VzdG9taXppbmcgYHRlbXBsYXRlU2V0dGluZ3NgLCBpZiB5b3UgZG9uJ3Qgd2FudCB0byBk
ZWZpbmUgYW4KLSAgICAgICAgLy8gaW50ZXJwb2xhdGlvbiwgZXZhbHVhdGlvbiBvciBlc2NhcGlu
ZyByZWdleCwgd2UgbmVlZCBvbmUgdGhhdCBpcwotICAgICAgICAvLyBndWFyYW50ZWVkIG5vdCB0
byBtYXRjaC4KLSAgICAgICAgdmFyIG5vTWF0Y2ggPSAvKC4pXi87Ci0KLSAgICAgICAgLy8gQ2Vy
dGFpbiBjaGFyYWN0ZXJzIG5lZWQgdG8gYmUgZXNjYXBlZCBzbyB0aGF0IHRoZXkgY2FuIGJlIHB1
dCBpbnRvIGEKLSAgICAgICAgLy8gc3RyaW5nIGxpdGVyYWwuCi0gICAgICAgIHZhciBlc2NhcGVz
ID0gewotICAgICAgICAgICAgIiciOiAgICAgICInIiwKLSAgICAgICAgICAgICdcXCc6ICAgICAn
XFwnLAotICAgICAgICAgICAgJ1xyJzogICAgICdyJywKLSAgICAgICAgICAgICdcbic6ICAgICAn
bicsCi0gICAgICAgICAgICAnXHQnOiAgICAgJ3QnLAotICAgICAgICAgICAgJ1x1MjAyOCc6ICd1
MjAyOCcsCi0gICAgICAgICAgICAnXHUyMDI5JzogJ3UyMDI5JwotICAgICAgICB9OwotCi0gICAg
ICAgIHZhciBlc2NhcGVyID0gL1xcfCd8XHJ8XG58XHR8XHUyMDI4fFx1MjAyOS9nOwotCi0gICAg
ICAgIC8vIEphdmFTY3JpcHQgbWljcm8tdGVtcGxhdGluZywgc2ltaWxhciB0byBKb2huIFJlc2ln
J3MgaW1wbGVtZW50YXRpb24uCi0gICAgICAgIC8vIFVuZGVyc2NvcmUgdGVtcGxhdGluZyBoYW5k
bGVzIGFyYml0cmFyeSBkZWxpbWl0ZXJzLCBwcmVzZXJ2ZXMgd2hpdGVzcGFjZSwKLSAgICAgICAg
Ly8gYW5kIGNvcnJlY3RseSBlc2NhcGVzIHF1b3RlcyB3aXRoaW4gaW50ZXJwb2xhdGVkIGNvZGUu
Ci0gICAgICAgIF8udGVtcGxhdGUgPSBmdW5jdGlvbih0ZXh0LCBkYXRhLCBzZXR0aW5ncykgewot
ICAgICAgICAgICAgdmFyIHJlbmRlcjsKLSAgICAgICAgICAgIHNldHRpbmdzID0gXy5kZWZhdWx0
cyh7fSwgc2V0dGluZ3MsIF8udGVtcGxhdGVTZXR0aW5ncyk7Ci0KLSAgICAgICAgICAgIC8vIENv
bWJpbmUgZGVsaW1pdGVycyBpbnRvIG9uZSByZWd1bGFyIGV4cHJlc3Npb24gdmlhIGFsdGVybmF0
aW9uLgotICAgICAgICAgICAgdmFyIG1hdGNoZXIgPSBuZXcgUmVnRXhwKFsKLSAgICAgICAgICAg
ICAgICAoc2V0dGluZ3MuZXNjYXBlIHx8IG5vTWF0Y2gpLnNvdXJjZSwKLSAgICAgICAgICAgICAg
ICAoc2V0dGluZ3MuaW50ZXJwb2xhdGUgfHwgbm9NYXRjaCkuc291cmNlLAotICAgICAgICAgICAg
ICAgIChzZXR0aW5ncy5ldmFsdWF0ZSB8fCBub01hdGNoKS5zb3VyY2UKLSAgICAgICAgICAgIF0u
am9pbignfCcpICsgJ3wkJywgJ2cnKTsKLQotICAgICAgICAgICAgLy8gQ29tcGlsZSB0aGUgdGVt
cGxhdGUgc291cmNlLCBlc2NhcGluZyBzdHJpbmcgbGl0ZXJhbHMgYXBwcm9wcmlhdGVseS4KLSAg
ICAgICAgICAgIHZhciBpbmRleCA9IDA7Ci0gICAgICAgICAgICB2YXIgc291cmNlID0gIl9fcCs9
JyI7Ci0gICAgICAgICAgICB0ZXh0LnJlcGxhY2UobWF0Y2hlciwgZnVuY3Rpb24obWF0Y2gsIGVz
Y2FwZSwgaW50ZXJwb2xhdGUsIGV2YWx1YXRlLCBvZmZzZXQpIHsKLSAgICAgICAgICAgICAgICBz
b3VyY2UgKz0gdGV4dC5zbGljZShpbmRleCwgb2Zmc2V0KQotICAgICAgICAgICAgICAgICAgICAu
cmVwbGFjZShlc2NhcGVyLCBmdW5jdGlvbihtYXRjaCkgeyByZXR1cm4gJ1xcJyArIGVzY2FwZXNb
bWF0Y2hdOyB9KTsKLQotICAgICAgICAgICAgICAgIGlmIChlc2NhcGUpIHsKLSAgICAgICAgICAg
ICAgICAgICAgc291cmNlICs9ICInK1xuKChfX3Q9KCIgKyBlc2NhcGUgKyAiKSk9PW51bGw/Jyc6
Xy5lc2NhcGUoX190KSkrXG4nIjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
aWYgKGludGVycG9sYXRlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNvdXJjZSArPSAiJytcbigo
X190PSgiICsgaW50ZXJwb2xhdGUgKyAiKSk9PW51bGw/Jyc6X190KStcbiciOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoZXZhbHVhdGUpIHsKLSAgICAgICAgICAgICAg
ICAgICAgc291cmNlICs9ICInO1xuIiArIGV2YWx1YXRlICsgIlxuX19wKz0nIjsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaW5kZXggPSBvZmZzZXQgKyBtYXRjaC5sZW5ndGg7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoOwotICAgICAgICAgICAgfSk7Ci0gICAgICAg
ICAgICBzb3VyY2UgKz0gIic7XG4iOwotCi0gICAgICAgICAgICAvLyBJZiBhIHZhcmlhYmxlIGlz
IG5vdCBzcGVjaWZpZWQsIHBsYWNlIGRhdGEgdmFsdWVzIGluIGxvY2FsIHNjb3BlLgotICAgICAg
ICAgICAgaWYgKCFzZXR0aW5ncy52YXJpYWJsZSkgc291cmNlID0gJ3dpdGgob2JqfHx7fSl7XG4n
ICsgc291cmNlICsgJ31cbic7Ci0KLSAgICAgICAgICAgIHNvdXJjZSA9ICJ2YXIgX190LF9fcD0n
JyxfX2o9QXJyYXkucHJvdG90eXBlLmpvaW4sIiArCi0gICAgICAgICAgICAgICAgInByaW50PWZ1
bmN0aW9uKCl7X19wKz1fX2ouY2FsbChhcmd1bWVudHMsJycpO307XG4iICsKLSAgICAgICAgICAg
ICAgICBzb3VyY2UgKyAicmV0dXJuIF9fcDtcbiI7Ci0KLSAgICAgICAgICAgIHRyeSB7Ci0gICAg
ICAgICAgICAgICAgcmVuZGVyID0gbmV3IEZ1bmN0aW9uKHNldHRpbmdzLnZhcmlhYmxlIHx8ICdv
YmonLCAnXycsIHNvdXJjZSk7Ci0gICAgICAgICAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgICAg
ICAgICAgZS5zb3VyY2UgPSBzb3VyY2U7Ci0gICAgICAgICAgICAgICAgdGhyb3cgZTsKLSAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKGRhdGEpIHJldHVybiByZW5kZXIoZGF0YSwgXyk7
Ci0gICAgICAgICAgICB2YXIgdGVtcGxhdGUgPSBmdW5jdGlvbihkYXRhKSB7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIHJlbmRlci5jYWxsKHRoaXMsIGRhdGEsIF8pOwotICAgICAgICAgICAgfTsK
LQotICAgICAgICAgICAgLy8gUHJvdmlkZSB0aGUgY29tcGlsZWQgZnVuY3Rpb24gc291cmNlIGFz
IGEgY29udmVuaWVuY2UgZm9yIHByZWNvbXBpbGF0aW9uLgotICAgICAgICAgICAgdGVtcGxhdGUu
c291cmNlID0gJ2Z1bmN0aW9uKCcgKyAoc2V0dGluZ3MudmFyaWFibGUgfHwgJ29iaicpICsgJyl7
XG4nICsgc291cmNlICsgJ30nOwotCi0gICAgICAgICAgICByZXR1cm4gdGVtcGxhdGU7Ci0gICAg
ICAgIH07Ci0KLSAgICAgICAgcmV0dXJuIF87Ci0gICAgfSkoe30pOwotCi0gICAgaWYgKGxvY2F0
aW9uLmhvc3RuYW1lID09PSAndG9kb212Yy5jb20nKSB7Ci0gICAgICAgIHdpbmRvdy5fZ2FxID0g
W1snX3NldEFjY291bnQnLCdVQS0zMTA4MTA2Mi0xJ10sWydfdHJhY2tQYWdldmlldyddXTsoZnVu
Y3Rpb24oZCx0KXt2YXIgZz1kLmNyZWF0ZUVsZW1lbnQodCkscz1kLmdldEVsZW1lbnRzQnlUYWdO
YW1lKHQpWzBdO2cuc3JjPScvL3d3dy5nb29nbGUtYW5hbHl0aWNzLmNvbS9nYS5qcyc7cy5wYXJl
bnROb2RlLmluc2VydEJlZm9yZShnLHMpfShkb2N1bWVudCwnc2NyaXB0JykpOwotICAgIH0KLQot
ICAgIGZ1bmN0aW9uIHJlZGlyZWN0KCkgewotICAgICAgICBpZiAobG9jYXRpb24uaG9zdG5hbWUg
PT09ICd0YXN0ZWpzLmdpdGh1Yi5pbycpIHsKLSAgICAgICAgICAgIGxvY2F0aW9uLmhyZWYgPSBs
b2NhdGlvbi5ocmVmLnJlcGxhY2UoJ3Rhc3RlanMuZ2l0aHViLmlvL3RvZG9tdmMnLCAndG9kb212
Yy5jb20nKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGZ1bmN0aW9uIGZpbmRSb290KCkgewot
ICAgICAgICB2YXIgYmFzZTsKLQotICAgICAgICBbL2xhYnMvLCAvXHcqLWV4YW1wbGVzL10uZm9y
RWFjaChmdW5jdGlvbiAoaHJlZikgewotICAgICAgICAgICAgdmFyIG1hdGNoID0gbG9jYXRpb24u
aHJlZi5tYXRjaChocmVmKTsKLQotICAgICAgICAgICAgaWYgKCFiYXNlICYmIG1hdGNoKSB7Ci0g
ICAgICAgICAgICAgICAgYmFzZSA9IGxvY2F0aW9uLmhyZWYuaW5kZXhPZihtYXRjaCk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0pOwotCi0gICAgICAgIHJldHVybiBsb2NhdGlvbi5ocmVmLnN1
YnN0cigwLCBiYXNlKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBnZXRGaWxlKGZpbGUsIGNhbGxi
YWNrKSB7Ci0gICAgICAgIGlmICghbG9jYXRpb24uaG9zdCkgewotICAgICAgICAgICAgcmV0dXJu
IGNvbnNvbGUuaW5mbygnTWlzcyB0aGUgaW5mbyBiYXI/IFJ1biBUb2RvTVZDIGZyb20gYSBzZXJ2
ZXIgdG8gYXZvaWQgYSBjcm9zcy1vcmlnaW4gZXJyb3IuJyk7Ci0gICAgICAgIH0KLQotICAgICAg
ICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7Ci0KLSAgICAgICAgeGhyLm9wZW4oJ0dF
VCcsIGZpbmRSb290KCkgKyBmaWxlLCB0cnVlKTsKLSAgICAgICAgeGhyLnNlbmQoKTsKLQotICAg
ICAgICB4aHIub25sb2FkID0gZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgaWYgKHhoci5zdGF0
dXMgPT09IDIwMCAmJiBjYWxsYmFjaykgewotICAgICAgICAgICAgICAgIGNhbGxiYWNrKHhoci5y
ZXNwb25zZVRleHQpOwotICAgICAgICAgICAgfQotICAgICAgICB9OwotICAgIH0KLQotICAgIGZ1
bmN0aW9uIExlYXJuKGxlYXJuSlNPTiwgY29uZmlnKSB7Ci0gICAgICAgIGlmICghKHRoaXMgaW5z
dGFuY2VvZiBMZWFybikpIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgTGVhcm4obGVhcm5KU09O
LCBjb25maWcpOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIHRlbXBsYXRlLCBmcmFtZXdvcms7
Ci0KLSAgICAgICAgaWYgKHR5cGVvZiBsZWFybkpTT04gIT09ICdvYmplY3QnKSB7Ci0gICAgICAg
ICAgICB0cnkgewotICAgICAgICAgICAgICAgIGxlYXJuSlNPTiA9IEpTT04ucGFyc2UobGVhcm5K
U09OKTsKLSAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoY29uZmlnKSB7Ci0gICAg
ICAgICAgICB0ZW1wbGF0ZSA9IGNvbmZpZy50ZW1wbGF0ZTsKLSAgICAgICAgICAgIGZyYW1ld29y
ayA9IGNvbmZpZy5mcmFtZXdvcms7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIXRlbXBsYXRl
ICYmIGxlYXJuSlNPTi50ZW1wbGF0ZXMpIHsKLSAgICAgICAgICAgIHRlbXBsYXRlID0gbGVhcm5K
U09OLnRlbXBsYXRlcy50b2RvbXZjOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFmcmFtZXdv
cmsgJiYgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW2RhdGEtZnJhbWV3b3JrXScpKSB7Ci0gICAg
ICAgICAgICBmcmFtZXdvcmsgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbZGF0YS1mcmFtZXdv
cmtdJykuZ2V0QXR0cmlidXRlKCdkYXRhLWZyYW1ld29yaycpOwotICAgICAgICB9Ci0KLQotICAg
ICAgICBpZiAodGVtcGxhdGUgJiYgbGVhcm5KU09OW2ZyYW1ld29ya10pIHsKLSAgICAgICAgICAg
IHRoaXMuZnJhbWV3b3JrSlNPTiA9IGxlYXJuSlNPTltmcmFtZXdvcmtdOwotICAgICAgICAgICAg
dGhpcy50ZW1wbGF0ZSA9IHRlbXBsYXRlOwotCi0gICAgICAgICAgICB0aGlzLmFwcGVuZCgpOwot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgTGVhcm4ucHJvdG90eXBlLmFwcGVuZCA9IGZ1bmN0aW9u
ICgpIHsKLSAgICAgICAgdmFyIGFzaWRlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYXNpZGUn
KTsKLSAgICAgICAgYXNpZGUuaW5uZXJIVE1MID0gXy50ZW1wbGF0ZSh0aGlzLnRlbXBsYXRlLCB0
aGlzLmZyYW1ld29ya0pTT04pOwotICAgICAgICBhc2lkZS5jbGFzc05hbWUgPSAnbGVhcm4nOwot
Ci0gICAgICAgIC8vIExvY2FsaXplIGRlbW8gbGlua3MKLSAgICAgICAgdmFyIGRlbW9MaW5rcyA9
IGFzaWRlLnF1ZXJ5U2VsZWN0b3JBbGwoJy5kZW1vLWxpbmsnKTsKLSAgICAgICAgQXJyYXkucHJv
dG90eXBlLmZvckVhY2guY2FsbChkZW1vTGlua3MsIGZ1bmN0aW9uIChkZW1vTGluaykgewotICAg
ICAgICAgICAgZGVtb0xpbmsuc2V0QXR0cmlidXRlKCdocmVmJywgZmluZFJvb3QoKSArIGRlbW9M
aW5rLmdldEF0dHJpYnV0ZSgnaHJlZicpKTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgZG9jdW1l
bnQuYm9keS5jbGFzc05hbWUgPSAoZG9jdW1lbnQuYm9keS5jbGFzc05hbWUgKyAnIGxlYXJuLWJh
cicpLnRyaW0oKTsKLSAgICAgICAgZG9jdW1lbnQuYm9keS5pbnNlcnRBZGphY2VudEhUTUwoJ2Fm
dGVyQmVnaW4nLCBhc2lkZS5vdXRlckhUTUwpOwotICAgIH07Ci0KLSAgICByZWRpcmVjdCgpOwot
ICAgIGdldEZpbGUoJ2xlYXJuLmpzb24nLCBMZWFybik7Ci19KSgpOwpkaWZmIC0tZ2l0IGEvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9sYWJzL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9yZWFjdC9ib3dlcl9jb21wb25lbnRzL3RvZG9tdmMtY29tbW9uL2JnLnBu
ZyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvbGFicy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QvYm93ZXJfY29tcG9uZW50cy90b2RvbXZjLWNvbW1v
bi9iZy5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIyYTc2MDA4MjVlZTExZjIx
ODQ5ZWQ0NzU0OTljN2QxZWNiY2M4NzAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmxpdGVyYWwg
MjEyNgp6Y21WLVUyKGtCeFApPGg7M0t8TGswMDBlMU5KTFRxMDAza0YwMDNrSDB7e1IzNFVCIXEw
MDAwQ1ApdC1zPyhYakUKej4rOXlgPUhLN250PX4zdDAwME81TmtsPFpjd1RqdShRNHZ+N0tXRVcj
WW0/bEtfdjtUbXwhRmMpQE53RW5tdHNoCnp4IU9+ejgxSlQzcEZzbT5tPTA0aFZhX2xYbF9ibT0r
TTs9ZUk8JSRyTzJ0YWBzdWgqU3IjUE93Kj9hZHEhTyFDVgp6KjAmYilya0NDRVYpMW5JdWlMQm50
VUgtTUpJOyZxWWd6fGRATmhubl9hYmkyZ2BwdTROQU1WaWQzaFMlP3F1en4KempsSmYoeDhjajxQ
R2NqbipKK2F7Jkg1cCpuNSQ1ZTM/PEtDYz9vMDZtQXNOU2JnUFdPP1B6I0N6bjwhPXs+e1ZTCnpV
VkVQMW1zZzlgXk9GVWhTTzVydFhIaFJseVUyaT42JEJUPWdsR2B7SmxjdEdIcndSSW0pNkJ1dTY1
akxRbl5IOAp6dmw5bFpxVUJBKyVxdk01WEMreVlAbWZBKFlCflhQPWV8Njx7JSReZVU4bnJLP3Yy
Y2NiQEpvbTVDRz5yS0FMN0oKenBsSEVJYXZWcHwwcDEmbSFHYFRpPzw3aVo7fUBHNyNaKX1LbSUy
IUZIblEwKiY/UExSKUchSEFhSGdVI2N8JGR6CnpwaiMwSG1lYWRJZT5gIyk9SmprYntCPUZLblUz
cGMtJllAal9qNihoNFl+K1VxPFBVMzZDOzViPU1eRmA9cDFkSQp6azxDUU9QTmE3PiFeSj1MSHVu
eDF4aTRRWEstWXsmTW9UOGt5NlZiOWN8V2huT3dGfmM9M3pPeThhZ2t0bGlTNiMKemAjOEZgOUgp
RD1ibWs5QjVNblcmX3IjKWYkYys7JExTci1AXkFuOGRoY35JcXV1dj5qT0s3cHc3TEo7JlgwaTFD
CnpHTXNIZFAxT3NAbnkkJGohPlhBaWklN2JwNWs+YHB5TkEhfmVwYikoKXA5elI0WWw2ej1VfXtD
SWRoMXooRnBBbwp6UUlXITswenBDeUM0KjdZTGtaQ09AY3VsMFJfJnpnaHNBOEVrKXolPCFwLWJ2
c3NwbFlZMn1QOyF2NENZajlrbUYKemIwYk5fbTRWKmZeWVpNb2IyKGozcEtqfjd2I1p0a3M9SW8r
e3N1JVdpdWtkSkgkYj9mWmtpQT1QWV8zT2hEQmtvCnooTFRRSFkmRl5eMmhHLVlgKlo5M3ZifmM/
KihKY2hEalRmQ3M/elJtKmAqTipWLSQ9P1FxdGhuU3IqP09TM3NqSwp6bzxfVV5me35hZzYwdWw+
ak5wS2E5MntATkgrU3N0WCVAfXhCKkprIWx9UFoxY0NsSW5zfn01XiFSbmNVaypybUEKeiVTSVZn
dDU4RVF4TEorT2lGcTx5dTRlT0R8OUx0M2ROc2VmeE91cSlEJiRfJWowRGdxQ3kxZ3pjfHRURDMq
bWVlCnp7PSV8PGBgfV9IeXBoT3V7Oyl4a1JnK1FuSENDM1RmK2tzcHFWNip8UUstUmNxRH00Pktr
QnV3cXV5WkxVcHxncgp6UFViVWJGYkJyUGQxeE9gXkMqci1pM3A5KkYjKE9CaCE0V3lAYUMmKiF8
T3xHWGNqREEmWWhGeztjRDcqbyhHU14KekBwUVNFNyl4XzgxPVF5amU2KkxRI1RYdS03KG87Uzh1
M3RwREE8U2djS2NLT3BtQTs9SEJaU0BPRlRAX1hPdnhxCnoqTnwzS0x5dGd6SDZHVSYmVW9jNFp6
azRsdW0zUHs5P2ZwSTQrUUdQSit2NmAxbGZScTNMY1MqKE0qV0srfGIlTwp6ZSR6PjBfZGRqJWht
Q3NwZVhkaFlSfS1pOUE9Q2BFb0NoVVl1SH5eeCE5K3wmKFBnYio+Q2s8PTlqfCkqQHh5ZlQKenBQ
IytLdDx9MzlifDNXbDRmeFQoK0c/YUg+Z0deZEBNRWFVT0pSZnk1NVR0Rkk3XlkpVnVNVT03UHAw
eTU1alN+CnorVEopaWdNeXJxa1g7d1U4ajY4aUlEdHFKWWhTX0QzX09lbS1AZzZtZV9SZmlRfXVU
X0stQS05cUclfWdrM0U5Ywp6IThgS2dzTU5YbSliZWxvUGZNcWwqfCYkTT4xcWBpIWNZKVJGWW5q
Tll1KmdTdkA4WGViVjclfXhZTD42KUdKUEoKekpwQTdLMzFsY0p1SUZLU3cte3g0RlgwSzJBeil+
WGc8YHNPdSQ0fF48TUM3QCt4Ynd4c0dnVHZKSUFMalB7NjhMCno4QVl1U0dTMEdVZ2s2V2B2NFc7
UnkqdW9FVG51bFBpfDU3MyVsdipaeHcjdjZ5VVFeTU9mY3BUI1Y4UklEViMjTgp6RDFgK0FlbXNP
aCl3YldERXhWY2ZwS3opanlWPTx+JlpYUGc2Y3xaREU3VTRiazxEXj4tKF5YSlg0WXpvaU5SdkwK
enl1WTd+MjZ3LVBeWnclNkZ9c2hCd1YyJDAyYzhSc1NVeTZkTTkyZGlDQXhpWDNJVXFzcTVpZzY+
VV8hVnkqcTUkCnpqbX0xNnRKcitRWiZUP0hra3BlSXdWWC1yMUVJPUAlWmx0OzY8dHdIODZJRD5n
Km1qJkUhQSkpJWdYSj14NnUjbAp6Y0tFUD5ieDRycVYqa2BCQnJaJE1xanR7VHNIY3hVSD47KWlB
S31CKEtpbGEmVkQlYj82bSZeMFdLNF4mRVpOQUkKejhBTVlzXyUkRCV8TStAK2NRcUwtaGk0eUc+
aCpqd2RpaSFXMXt9cD5aaHdGWXRfNFN1MWtqWTk8YkFaanp+OWVrCnpfRGlhcitBZkpGUF85QHlt
VW8kS1c+PC01YCEkVk5PSTF5KEVEU0g0V3BDaWpFXz5hbCFOdD1eZVZFUiN1SjE9Ygp6O0JXRjJJ
Z3lGNUxleFYreWVjJEtpbjtBaUBteW87Rz56SiZqcmRXI2VjWGhJWnBoNU9ZcXdfUEVmY0Y1NjxP
MTkKekwpOHIhS00oKWlmMGBAP1c0KEpkYyk3V29QR14mPSQ8elVzTStIQ1dha0NeM3RaeGsrUGpR
R31CPlo1PFo2Vnh3CnpCQEhyViQmbH5AVGFqNzBwY2V7aVN1UkxzVWN6RFlfNVRuRHE4UHlfUTN3
aGBEOCE0aks7dkZkUlArUTA9ekp5Kgp6enVXZCUhYWlARHt8Kko8STtPRCZpJWx7SnAtOCpQdTNW
R0xXaXlrNnYjWG1RcXdgLSslZSR8Q0p3KkBgNXpiMzwKekV9eiM7a1JoTCZxNVBERzZAbW0qJD5a
dV9aWkUjcTNNYytOJjFPXjdob2g5UVI3YCtMJGNCUDVwcUc9ZnFBMHVoCnpVQnVrYXhURm1IKTx8
WGJ2cDJjPUhTYk5rcFh3NzNhNWx2N1YkamI5MiN5WjE0MUAkWD9GfUp0OGdJVTdXbTZtOQp6P2Vf
Ozt6c25tNmBMWmVQPlQ9JClLcj5aP2tyKlVtRnFSN3p4MEM2XmJtY3NjQDFBR3R3X3JOSD4tWG0k
ZCp8UTwKem4mMUxuMHU3PWwmSUxzPiVDa0pwYERpRzlGMTh4NE5lK2xnPCNpP2U3akwleDs0Wm5S
a05eTXgwNypxb002TjwkCkVmKD4wTiEya2ROCgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9sYWJzL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9yZWFjdC9pbmRleC5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9sYWJzL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9pbmRleC5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNDBhMmZlYzFmOTA5NTQwZDZkMzZlNjc2OGE3
YmUwNGViZmRmODgwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvbGFicy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QvaW5kZXguaHRtbAorKysgL2Rldi9udWxsCkBAIC0x
LDI0ICswLDAgQEAKLTwhZG9jdHlwZSBodG1sPgotPGh0bWwgbGFuZz0iZW4iIGRhdGEtZnJhbWV3
b3JrPSJyZWFjdCI+Ci0gICAgPGhlYWQ+Ci0gICAgICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
LSAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj0iWC1VQS1Db21wYXRpYmxlIiBjb250ZW50PSJJRT1l
ZGdlIj4KLSAgICAgICAgPHRpdGxlPlJlYWN0IOKAoiBUb2RvTVZDPC90aXRsZT4KLSAgICAgICAg
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJib3dlcl9jb21wb25lbnRzL3RvZG9tdmMtY29t
bW9uL2Jhc2UuY3NzIj4KLSAgICA8L2hlYWQ+Ci0gICAgPGJvZHk+Ci0gICAgICAgIDxzZWN0aW9u
IGlkPSJ0b2RvYXBwIj48L3NlY3Rpb24+Ci0gICAgICAgIDxmb290ZXIgaWQ9ImluZm8iPjwvZm9v
dGVyPgotICAgICAgICA8ZGl2IGlkPSJiZW5jaG1hcmsiPjwvZGl2PgotCi0gICAgICAgIDxzY3Jp
cHQgc3JjPSJib3dlcl9jb21wb25lbnRzL3RvZG9tdmMtY29tbW9uL2Jhc2UuanMiPjwvc2NyaXB0
PgotICAgICAgICA8c2NyaXB0IHNyYz0iYm93ZXJfY29tcG9uZW50cy9yZWFjdC9yZWFjdC5qcyI+
PC9zY3JpcHQ+Ci0gICAgICAgIDxzY3JpcHQgc3JjPSJib3dlcl9jb21wb25lbnRzL3JlYWN0L0pT
WFRyYW5zZm9ybWVyLmpzIj48L3NjcmlwdD4KLSAgICAgICAgPHNjcmlwdCBzcmM9ImJvd2VyX2Nv
bXBvbmVudHMvZGlyZWN0b3IvYnVpbGQvZGlyZWN0b3IubWluLmpzIj48L3NjcmlwdD4KLQotICAg
ICAgICA8c2NyaXB0IHR5cGU9InRleHQvanN4IiBzcmM9ImpzL3V0aWxzLmpzeCI+PC9zY3JpcHQ+
Ci0gICAgICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qc3giIHNyYz0ianMvdG9kb0l0ZW0uanN4Ij48
L3NjcmlwdD4KLSAgICAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2pzeCIgc3JjPSJqcy9mb290ZXIu
anN4Ij48L3NjcmlwdD4KLSAgICAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2pzeCIgc3JjPSJqcy9h
cHAuanN4Ij48L3NjcmlwdD4KLSAgICA8L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2xhYnMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL3JlYWN0L2pzL2FwcC5qc3ggYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2xhYnMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L2pz
L2FwcC5qc3gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlMWUyYTNlMTI3ZWRjYjRi
NzFlMzYwMjA4NzYzNmRmM2VlMTk5OTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9sYWJzL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9qcy9hcHAuanN4CisrKyAvZGV2
L251bGwKQEAgLTEsMjA3ICswLDAgQEAKLS8qKgotICogQGpzeCBSZWFjdC5ET00KLSAqLwotLypq
c2hpbnQgcXVvdG1hcms6ZmFsc2UgKi8KLS8qanNoaW50IHdoaXRlOmZhbHNlICovCi0vKmpzaGlu
dCB0cmFpbGluZzpmYWxzZSAqLwotLypqc2hpbnQgbmV3Y2FwOmZhbHNlICovCi0vKmdsb2JhbCBV
dGlscywgQUxMX1RPRE9TLCBBQ1RJVkVfVE9ET1MsIENPTVBMRVRFRF9UT0RPUywKLSAgICBUb2Rv
SXRlbSwgVG9kb0Zvb3RlciwgUmVhY3QsIFJvdXRlciovCi0KLShmdW5jdGlvbiAod2luZG93LCBS
ZWFjdCkgewotICAgICd1c2Ugc3RyaWN0JzsKLQotICAgIHdpbmRvdy5BTExfVE9ET1MgPSAnYWxs
JzsKLSAgICB3aW5kb3cuQUNUSVZFX1RPRE9TID0gJ2FjdGl2ZSc7Ci0gICAgd2luZG93LkNPTVBM
RVRFRF9UT0RPUyA9ICdjb21wbGV0ZWQnOwotCi0gICAgdmFyIEVOVEVSX0tFWSA9IDEzOwotCi0g
ICAgdmFyIFRvZG9BcHAgPSBSZWFjdC5jcmVhdGVDbGFzcyh7Ci0gICAgICAgIGdldEluaXRpYWxT
dGF0ZTogZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgdmFyIHRvZG9zID0gVXRpbHMuc3RvcmUo
J3JlYWN0LXRvZG9zJyk7Ci0gICAgICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgICAgIHRv
ZG9zOiB0b2RvcywKLSAgICAgICAgICAgICAgICBub3dTaG93aW5nOiBBTExfVE9ET1MsCi0gICAg
ICAgICAgICAgICAgZWRpdGluZzogbnVsbAotICAgICAgICAgICAgfTsKLSAgICAgICAgfSwKLQot
ICAgICAgICBjb21wb25lbnREaWRNb3VudDogZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgdmFy
IHJvdXRlciA9IFJvdXRlcih7Ci0gICAgICAgICAgICAgICAgJy8nOiB0aGlzLnNldFN0YXRlLmJp
bmQodGhpcywge25vd1Nob3dpbmc6IEFMTF9UT0RPU30pLAotICAgICAgICAgICAgICAgICcvYWN0
aXZlJzogdGhpcy5zZXRTdGF0ZS5iaW5kKHRoaXMsIHtub3dTaG93aW5nOiBBQ1RJVkVfVE9ET1N9
KSwKLSAgICAgICAgICAgICAgICAnL2NvbXBsZXRlZCc6IHRoaXMuc2V0U3RhdGUuYmluZCh0aGlz
LCB7bm93U2hvd2luZzogQ09NUExFVEVEX1RPRE9TfSkKLSAgICAgICAgICAgIH0pOwotICAgICAg
ICAgICAgcm91dGVyLmluaXQoKTsKLSAgICAgICAgICAgIHRoaXMucmVmcy5uZXdGaWVsZC5nZXRE
T01Ob2RlKCkuZm9jdXMoKTsKLSAgICAgICAgfSwKLQotICAgICAgICBoYW5kbGVOZXdUb2RvS2V5
RG93bjogZnVuY3Rpb24gKGV2ZW50KSB7Ci0gICAgICAgICAgICBpZiAoZXZlbnQud2hpY2ggIT09
IEVOVEVSX0tFWSkgewotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgdmFyIHZhbCA9IHRoaXMucmVmcy5uZXdGaWVsZC5nZXRET01Ob2RlKCkudmFs
dWUudHJpbSgpOwotICAgICAgICAgICAgdmFyIHRvZG9zOwotICAgICAgICAgICAgdmFyIG5ld1Rv
ZG87Ci0KLSAgICAgICAgICAgIGlmICh2YWwpIHsKLSAgICAgICAgICAgICAgICB0b2RvcyA9IHRo
aXMuc3RhdGUudG9kb3M7Ci0gICAgICAgICAgICAgICAgbmV3VG9kbyA9IHsKLSAgICAgICAgICAg
ICAgICAgICAgaWQ6IFV0aWxzLnV1aWQoKSwKLSAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHZh
bCwKLSAgICAgICAgICAgICAgICAgICAgY29tcGxldGVkOiBmYWxzZQotICAgICAgICAgICAgICAg
IH07Ci0gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7dG9kb3M6IHRvZG9zLmNvbmNhdChb
bmV3VG9kb10pfSk7Ci0gICAgICAgICAgICAgICAgdGhpcy5yZWZzLm5ld0ZpZWxkLmdldERPTU5v
ZGUoKS52YWx1ZSA9ICcnOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgdG9nZ2xlQWxsOiBmdW5jdGlvbiAoZXZlbnQpIHsK
LSAgICAgICAgICAgIHZhciBjaGVja2VkID0gZXZlbnQudGFyZ2V0LmNoZWNrZWQ7Ci0KLSAgICAg
ICAgICAgIHRoaXMuc3RhdGUudG9kb3MuZm9yRWFjaChmdW5jdGlvbiAodG9kbykgewotICAgICAg
ICAgICAgICAgIHRvZG8uY29tcGxldGVkID0gY2hlY2tlZDsKLSAgICAgICAgICAgIH0pOwotCi0g
ICAgICAgICAgICB0aGlzLnNldFN0YXRlKHt0b2RvczogdGhpcy5zdGF0ZS50b2Rvc30pOwotICAg
ICAgICB9LAotCi0gICAgICAgIHRvZ2dsZTogZnVuY3Rpb24gKHRvZG8pIHsKLSAgICAgICAgICAg
IHRvZG8uY29tcGxldGVkID0gIXRvZG8uY29tcGxldGVkOwotICAgICAgICAgICAgdGhpcy5zZXRT
dGF0ZSh7dG9kb3M6IHRoaXMuc3RhdGUudG9kb3N9KTsKLSAgICAgICAgfSwKLQotICAgICAgICBk
ZXN0cm95OiBmdW5jdGlvbiAodG9kbykgewotICAgICAgICAgICAgdmFyIG5ld1RvZG9zID0gdGhp
cy5zdGF0ZS50b2Rvcy5maWx0ZXIoZnVuY3Rpb24gKGNhbmRpZGF0ZSkgewotICAgICAgICAgICAg
ICAgIHJldHVybiBjYW5kaWRhdGUuaWQgIT09IHRvZG8uaWQ7Ci0gICAgICAgICAgICB9KTsKLQot
ICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7dG9kb3M6IG5ld1RvZG9zfSk7Ci0gICAgICAgIH0s
Ci0KLSAgICAgICAgZWRpdDogZnVuY3Rpb24gKHRvZG8sIGNhbGxiYWNrKSB7Ci0gICAgICAgICAg
ICAvLyByZWZlciB0byB0b2RvSXRlbS5qcyBgaGFuZGxlRWRpdGAgZm9yIHRoZSByZWFzb25pbmcg
YmVoaW5kIHRoZQotICAgICAgICAgICAgLy8gY2FsbGJhY2sKLSAgICAgICAgICAgIHRoaXMuc2V0
U3RhdGUoe2VkaXRpbmc6IHRvZG8uaWR9LCBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICAgICAg
Y2FsbGJhY2soKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9LAotCi0gICAgICAgIHNhdmU6
IGZ1bmN0aW9uICh0b2RvLCB0ZXh0KSB7Ci0gICAgICAgICAgICB0b2RvLnRpdGxlID0gdGV4dDsK
LSAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe3RvZG9zOiB0aGlzLnN0YXRlLnRvZG9zLCBlZGl0
aW5nOiBudWxsfSk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgY2FuY2VsOiBmdW5jdGlvbiAoKSB7
Ci0gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtlZGl0aW5nOiBudWxsfSk7Ci0gICAgICAgIH0s
Ci0KLSAgICAgICAgY2xlYXJDb21wbGV0ZWQ6IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIHZh
ciBuZXdUb2RvcyA9IHRoaXMuc3RhdGUudG9kb3MuZmlsdGVyKGZ1bmN0aW9uICh0b2RvKSB7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuICF0b2RvLmNvbXBsZXRlZDsKLSAgICAgICAgICAgIH0pOwot
Ci0gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHt0b2RvczogbmV3VG9kb3N9KTsKLSAgICAgICAg
fSwKLQotICAgICAgICBjb21wb25lbnREaWRVcGRhdGU6IGZ1bmN0aW9uICgpIHsKLSAgICAgICAg
ICAgIFV0aWxzLnN0b3JlKCdyZWFjdC10b2RvcycsIHRoaXMuc3RhdGUudG9kb3MpOwotICAgICAg
ICB9LAotCi0gICAgICAgIHJlbmRlcjogZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgdmFyIGZv
b3RlciA9IG51bGw7Ci0gICAgICAgICAgICB2YXIgbWFpbiA9IG51bGw7Ci0gICAgICAgICAgICB2
YXIgdG9kb0l0ZW1zID0ge307Ci0gICAgICAgICAgICB2YXIgYWN0aXZlVG9kb0NvdW50OwotICAg
ICAgICAgICAgdmFyIGNvbXBsZXRlZENvdW50OwotCi0gICAgICAgICAgICB2YXIgc2hvd25Ub2Rv
cyA9IHRoaXMuc3RhdGUudG9kb3MuZmlsdGVyKGZ1bmN0aW9uICh0b2RvKSB7Ci0gICAgICAgICAg
ICAgICAgc3dpdGNoICh0aGlzLnN0YXRlLm5vd1Nob3dpbmcpIHsKLSAgICAgICAgICAgICAgICBj
YXNlIEFDVElWRV9UT0RPUzoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuICF0b2RvLmNvbXBs
ZXRlZDsKLSAgICAgICAgICAgICAgICBjYXNlIENPTVBMRVRFRF9UT0RPUzoKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRvZG8uY29tcGxldGVkOwotICAgICAgICAgICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIH0uYmluZCh0aGlzKSk7Ci0KLSAgICAgICAgICAgIHNob3duVG9kb3MuZm9yRWFj
aChmdW5jdGlvbiAodG9kbykgewotICAgICAgICAgICAgICAgIHRvZG9JdGVtc1t0b2RvLmlkXSA9
ICgKLSAgICAgICAgICAgICAgICAgICAgPFRvZG9JdGVtCi0gICAgICAgICAgICAgICAgICAgICAg
ICB0b2RvPXt0b2RvfQotICAgICAgICAgICAgICAgICAgICAgICAgb25Ub2dnbGU9e3RoaXMudG9n
Z2xlLmJpbmQodGhpcywgdG9kbyl9Ci0gICAgICAgICAgICAgICAgICAgICAgICBvbkRlc3Ryb3k9
e3RoaXMuZGVzdHJveS5iaW5kKHRoaXMsIHRvZG8pfQotICAgICAgICAgICAgICAgICAgICAgICAg
b25FZGl0PXt0aGlzLmVkaXQuYmluZCh0aGlzLCB0b2RvKX0KLSAgICAgICAgICAgICAgICAgICAg
ICAgIGVkaXRpbmc9e3RoaXMuc3RhdGUuZWRpdGluZyA9PT0gdG9kby5pZH0KLSAgICAgICAgICAg
ICAgICAgICAgICAgIG9uU2F2ZT17dGhpcy5zYXZlLmJpbmQodGhpcywgdG9kbyl9Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBvbkNhbmNlbD17dGhpcy5jYW5jZWx9Ci0gICAgICAgICAgICAgICAg
ICAgIC8+Ci0gICAgICAgICAgICAgICAgKTsKLSAgICAgICAgICAgIH0uYmluZCh0aGlzKSk7Ci0K
LSAgICAgICAgICAgIGFjdGl2ZVRvZG9Db3VudCA9IHRoaXMuc3RhdGUudG9kb3MuZmlsdGVyKGZ1
bmN0aW9uICh0b2RvKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICF0b2RvLmNvbXBsZXRlZDsK
LSAgICAgICAgICAgIH0pLmxlbmd0aDsKLQotICAgICAgICAgICAgY29tcGxldGVkQ291bnQgPSB0
aGlzLnN0YXRlLnRvZG9zLmxlbmd0aCAtIGFjdGl2ZVRvZG9Db3VudDsKLQotICAgICAgICAgICAg
aWYgKGFjdGl2ZVRvZG9Db3VudCB8fCBjb21wbGV0ZWRDb3VudCkgewotICAgICAgICAgICAgICAg
IGZvb3RlciA9Ci0gICAgICAgICAgICAgICAgICAgIDxUb2RvRm9vdGVyCi0gICAgICAgICAgICAg
ICAgICAgICAgICBjb3VudD17YWN0aXZlVG9kb0NvdW50fQotICAgICAgICAgICAgICAgICAgICAg
ICAgY29tcGxldGVkQ291bnQ9e2NvbXBsZXRlZENvdW50fQotICAgICAgICAgICAgICAgICAgICAg
ICAgbm93U2hvd2luZz17dGhpcy5zdGF0ZS5ub3dTaG93aW5nfQotICAgICAgICAgICAgICAgICAg
ICAgICAgb25DbGVhckNvbXBsZXRlZD17dGhpcy5jbGVhckNvbXBsZXRlZH0KLSAgICAgICAgICAg
ICAgICAgICAgLz47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICh0aGlzLnN0YXRl
LnRvZG9zLmxlbmd0aCkgewotICAgICAgICAgICAgICAgIG1haW4gPSAoCi0gICAgICAgICAgICAg
ICAgICAgIDxzZWN0aW9uIGlkPSJtYWluIj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1
dAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPSJ0b2dnbGUtYWxsIgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHR5cGU9ImNoZWNrYm94IgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG9uQ2hhbmdlPXt0aGlzLnRvZ2dsZUFsbH0KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjaGVja2VkPXthY3RpdmVUb2RvQ291bnQgPT09IDB9Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAvPgotICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGlkPSJ0b2RvLWxpc3QiPgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHt0b2RvSXRlbXN9Ci0gICAgICAgICAgICAgICAgICAg
ICAgICA8L3VsPgotICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+Ci0gICAgICAgICAgICAg
ICAgKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcmV0dXJuICgKLSAgICAgICAgICAg
ICAgICA8ZGl2PgotICAgICAgICAgICAgICAgICAgICA8aGVhZGVyIGlkPSJoZWFkZXIiPgotICAg
ICAgICAgICAgICAgICAgICAgICAgPGgxPnRvZG9zPC9oMT4KLSAgICAgICAgICAgICAgICAgICAg
ICAgIDxpbnB1dAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZj0ibmV3RmllbGQiCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9Im5ldy10b2RvIgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBsYWNlaG9sZGVyPSJXaGF0IG5lZWRzIHRvIGJlIGRvbmU/IgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17dGhpcy5oYW5kbGVOZXdUb2RvS2V5RG93
bn0KLSAgICAgICAgICAgICAgICAgICAgICAgIC8+Ci0gICAgICAgICAgICAgICAgICAgIDwvaGVh
ZGVyPgotICAgICAgICAgICAgICAgICAgICB7bWFpbn0KLSAgICAgICAgICAgICAgICAgICAge2Zv
b3Rlcn0KLSAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICk7Ci0gICAgICAgIH0K
LSAgICB9KTsKLQotICAgIFJlYWN0LnJlbmRlckNvbXBvbmVudCg8VG9kb0FwcCAvPiwgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3RvZG9hcHAnKSk7Ci0gICAgUmVhY3QucmVuZGVyQ29tcG9uZW50
KAotICAgICAgICA8ZGl2PgotICAgICAgICAgICAgPHA+RG91YmxlLWNsaWNrIHRvIGVkaXQgYSB0
b2RvPC9wPgotICAgICAgICAgICAgPHA+Q3JlYXRlZCBieXsnICd9Ci0gICAgICAgICAgICAgICAg
PGEgaHJlZj0iaHR0cDovL2dpdGh1Yi5jb20vcGV0ZWh1bnQvIj5wZXRlaHVudDwvYT4KLSAgICAg
ICAgICAgIDwvcD4KLSAgICAgICAgICAgIDxwPlBhcnQgb2Z7JyAnfTxhIGhyZWY9Imh0dHA6Ly90
b2RvbXZjLmNvbSI+VG9kb01WQzwvYT48L3A+Ci0gICAgICAgIDwvZGl2PiwKLSAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2luZm8nKSk7Ci19KSh3aW5kb3csIFJlYWN0KTsKZGlmZiAt
LWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvbGFi
cy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QvanMvZm9vdGVyLmpzeCBiL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvbGFicy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvcmVhY3QvanMvZm9vdGVyLmpzeApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NWE4OTY1NTNkYTBiOWFiNDFjOTgyMDc3NDJiOWYzYzM1OGM1YTNjZC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2xhYnMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L2pz
L2Zvb3Rlci5qc3gKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi0vKioKLSAqIEBqc3gg
UmVhY3QuRE9NCi0gKi8KLS8qanNoaW50IHF1b3RtYXJrOmZhbHNlICovCi0vKmpzaGludCB3aGl0
ZTpmYWxzZSAqLwotLypqc2hpbnQgdHJhaWxpbmc6ZmFsc2UgKi8KLS8qanNoaW50IG5ld2NhcDpm
YWxzZSAqLwotLypnbG9iYWwgUmVhY3QsIEFMTF9UT0RPUywgQUNUSVZFX1RPRE9TLCBVdGlscywg
Q09NUExFVEVEX1RPRE9TICovCi0oZnVuY3Rpb24gKHdpbmRvdykgewotICAgICd1c2Ugc3RyaWN0
JzsKLQotICAgIHdpbmRvdy5Ub2RvRm9vdGVyID0gUmVhY3QuY3JlYXRlQ2xhc3MoewotICAgICAg
ICByZW5kZXI6IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIHZhciBhY3RpdmVUb2RvV29yZCA9
IFV0aWxzLnBsdXJhbGl6ZSh0aGlzLnByb3BzLmNvdW50LCAnaXRlbScpOwotICAgICAgICAgICAg
dmFyIGNsZWFyQnV0dG9uID0gbnVsbDsKLQotICAgICAgICAgICAgaWYgKHRoaXMucHJvcHMuY29t
cGxldGVkQ291bnQgPiAwKSB7Ci0gICAgICAgICAgICAgICAgY2xlYXJCdXR0b24gPSAoCi0gICAg
ICAgICAgICAgICAgICAgIDxidXR0b24KLSAgICAgICAgICAgICAgICAgICAgICAgIGlkPSJjbGVh
ci1jb21wbGV0ZWQiCi0gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXt0aGlzLnByb3Bz
Lm9uQ2xlYXJDb21wbGV0ZWR9PgotICAgICAgICAgICAgICAgICAgICAgICAgeycnfUNsZWFyIGNv
bXBsZXRlZCAoe3RoaXMucHJvcHMuY29tcGxldGVkQ291bnR9KXsnJ30KLSAgICAgICAgICAgICAg
ICAgICAgPC9idXR0b24+Ci0gICAgICAgICAgICAgICAgKTsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgdmFyIHNob3cgPSB7Ci0gICAgICAgICAgICAgICAgQUxMX1RPRE9TOiAnJywKLSAg
ICAgICAgICAgICAgICBBQ1RJVkVfVE9ET1M6ICcnLAotICAgICAgICAgICAgICAgIENPTVBMRVRF
RF9UT0RPUzogJycKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBzaG93W3RoaXMucHJvcHMu
bm93U2hvd2luZ10gPSAnc2VsZWN0ZWQnOwotCi0gICAgICAgICAgICByZXR1cm4gKAotICAgICAg
ICAgICAgICAgIDxmb290ZXIgaWQ9ImZvb3RlciI+Ci0gICAgICAgICAgICAgICAgICAgIDxzcGFu
IGlkPSJ0b2RvLWNvdW50Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3RoaXMu
cHJvcHMuY291bnR9PC9zdHJvbmc+Ci0gICAgICAgICAgICAgICAgICAgICAgICB7JyAnfXthY3Rp
dmVUb2RvV29yZH17JyAnfWxlZnR7Jyd9Ci0gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KLSAg
ICAgICAgICAgICAgICAgICAgPHVsIGlkPSJmaWx0ZXJzIj4KLSAgICAgICAgICAgICAgICAgICAg
ICAgIDxsaT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjLyIgY2xhc3M9
e3Nob3dbQUxMX1RPRE9TXX0+QWxsPC9hPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4K
LSAgICAgICAgICAgICAgICAgICAgICAgIHsnICd9Ci0gICAgICAgICAgICAgICAgICAgICAgICA8
bGk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIy9hY3RpdmUiIGNsYXNz
PXtzaG93W0FDVElWRV9UT0RPU119PkFjdGl2ZTwvYT4KLSAgICAgICAgICAgICAgICAgICAgICAg
IDwvbGk+Ci0gICAgICAgICAgICAgICAgICAgICAgICB7JyAnfQotICAgICAgICAgICAgICAgICAg
ICAgICAgPGxpPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMvY29tcGxl
dGVkIiBjbGFzcz17c2hvd1tDT01QTEVURURfVE9ET1NdfT5Db21wbGV0ZWQ8L2E+Ci0gICAgICAg
ICAgICAgICAgICAgICAgICA8L2xpPgotICAgICAgICAgICAgICAgICAgICA8L3VsPgotICAgICAg
ICAgICAgICAgICAgICB7Y2xlYXJCdXR0b259Ci0gICAgICAgICAgICAgICAgPC9mb290ZXI+Ci0g
ICAgICAgICAgICApOwotICAgICAgICB9Ci0gICAgfSk7Ci19KSh3aW5kb3cpOwpkaWZmIC0tZ2l0
IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9sYWJzL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9qcy90b2RvSXRlbS5qc3ggYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2xhYnMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL3JlYWN0L2pzL3RvZG9JdGVtLmpzeApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ODdmNmMxYzZiM2NlNzU3OTU1NmYyMGE0YjJmMjI1YTk5YzYzYzMyNy4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2xhYnMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L2pz
L3RvZG9JdGVtLmpzeAorKysgL2Rldi9udWxsCkBAIC0xLDkzICswLDAgQEAKLS8qKgotICogQGpz
eCBSZWFjdC5ET00KLSAqLwotLypqc2hpbnQgcXVvdG1hcms6IGZhbHNlICovCi0vKmpzaGludCB3
aGl0ZTogZmFsc2UgKi8KLS8qanNoaW50IHRyYWlsaW5nOiBmYWxzZSAqLwotLypqc2hpbnQgbmV3
Y2FwOiBmYWxzZSAqLwotLypnbG9iYWwgUmVhY3QsIFV0aWxzICovCi0oZnVuY3Rpb24gKHdpbmRv
dykgewotICAgICd1c2Ugc3RyaWN0JzsKLQotICAgIHZhciBFU0NBUEVfS0VZID0gMjc7Ci0gICAg
dmFyIEVOVEVSX0tFWSA9IDEzOwotCi0gICAgd2luZG93LlRvZG9JdGVtID0gUmVhY3QuY3JlYXRl
Q2xhc3MoewotICAgICAgICBoYW5kbGVTdWJtaXQ6IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAg
IHZhciB2YWwgPSB0aGlzLnN0YXRlLmVkaXRUZXh0LnRyaW0oKTsKLSAgICAgICAgICAgIGlmICh2
YWwpIHsKLSAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uU2F2ZSh2YWwpOwotICAgICAgICAg
ICAgICAgIHRoaXMuc2V0U3RhdGUoe2VkaXRUZXh0OiB2YWx9KTsKLSAgICAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkRlc3Ryb3koKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfSwKLSAgICAgICAgaGFuZGxl
RWRpdDogZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgLy8gcmVhY3Qgb3B0aW1pemVzIHJlbmRl
cnMgYnkgYmF0Y2hpbmcgdGhlbS4gVGhpcyBtZWFucyB5b3UgY2FuJ3QgY2FsbAotICAgICAgICAg
ICAgLy8gcGFyZW50J3MgYG9uRWRpdGAgKHdoaWNoIGluIHRoaXMgY2FzZSB0cmlnZ2VyZXMgYSBy
ZS1yZW5kZXIpLCBhbmQKLSAgICAgICAgICAgIC8vIGltbWVkaWF0ZWx5IG1hbmlwdWxhdGUgdGhl
IERPTSBhcyBpZiB0aGUgcmVuZGVyaW5nJ3Mgb3Zlci4gUHV0IGl0IGFzIGEKLSAgICAgICAgICAg
IC8vIGNhbGxiYWNrLiBSZWZlciB0byBhcHAuanMnIGBlZGl0YCBtZXRob2QKLSAgICAgICAgICAg
IHRoaXMucHJvcHMub25FZGl0KGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgICAgICB2YXIgbm9k
ZSA9IHRoaXMucmVmcy5lZGl0RmllbGQuZ2V0RE9NTm9kZSgpOwotICAgICAgICAgICAgICAgIG5v
ZGUuZm9jdXMoKTsKLSAgICAgICAgICAgICAgICBub2RlLnNldFNlbGVjdGlvblJhbmdlKG5vZGUu
dmFsdWUubGVuZ3RoLCBub2RlLnZhbHVlLmxlbmd0aCk7Ci0gICAgICAgICAgICB9LmJpbmQodGhp
cykpOwotICAgICAgICB9LAotCi0gICAgICAgIGhhbmRsZUtleURvd246IGZ1bmN0aW9uIChldmVu
dCkgewotICAgICAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IEVTQ0FQRV9LRVkpIHsKLSAg
ICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtlZGl0VGV4dDogdGhpcy5wcm9wcy50b2RvLnRp
dGxlfSk7Ci0gICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNhbmNlbCgpOwotICAgICAgICAg
ICAgfSBlbHNlIGlmIChldmVudC5rZXlDb2RlID09PSBFTlRFUl9LRVkpIHsKLSAgICAgICAgICAg
ICAgICB0aGlzLmhhbmRsZVN1Ym1pdCgpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICB0aGlzLnNldFN0YXRlKHtlZGl0VGV4dDogZXZlbnQudGFyZ2V0LnZhbHVlfSk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0sCi0KLSAgICAgICAgaGFuZGxlQ2hhbmdlOiBmdW5jdGlv
biAoZXZlbnQpIHsKLSAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe2VkaXRUZXh0OiBldmVudC50
YXJnZXQudmFsdWV9KTsKLSAgICAgICAgfSwKLQotICAgICAgICBnZXRJbml0aWFsU3RhdGU6IGZ1
bmN0aW9uICgpIHsKLSAgICAgICAgICAgIHJldHVybiB7ZWRpdFRleHQ6IHRoaXMucHJvcHMudG9k
by50aXRsZX07Ci0gICAgICAgIH0sCi0KLSAgICAgICAgY29tcG9uZW50V2lsbFJlY2VpdmVQcm9w
czogZnVuY3Rpb24gKG5leHRQcm9wcykgewotICAgICAgICAgICAgaWYgKG5leHRQcm9wcy50b2Rv
LnRpdGxlICE9PSB0aGlzLnByb3BzLnRvZG8udGl0bGUpIHsKLSAgICAgICAgICAgICAgICB0aGlz
LnNldFN0YXRlKHRoaXMuZ2V0SW5pdGlhbFN0YXRlKCkpOwotICAgICAgICAgICAgfQotICAgICAg
ICB9LAotCi0gICAgICAgIHJlbmRlcjogZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgcmV0dXJu
ICgKLSAgICAgICAgICAgICAgICA8bGkgY2xhc3M9e1V0aWxzLnN0cmluZ2lmeU9iaktleXMoewot
ICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZWQ6IHRoaXMucHJvcHMudG9kby5jb21wbGV0ZWQs
Ci0gICAgICAgICAgICAgICAgICAgIGVkaXRpbmc6IHRoaXMucHJvcHMuZWRpdGluZwotICAgICAg
ICAgICAgICAgIH0pfT4KLSAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idmlldyI+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjbGFzcz0idG9nZ2xlIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9ImNoZWNr
Ym94IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3RoaXMucHJvcHMudG9k
by5jb21wbGV0ZWQgPyAnY2hlY2tlZCcgOiBudWxsfQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG9uQ2hhbmdlPXt0aGlzLnByb3BzLm9uVG9nZ2xlfQotICAgICAgICAgICAgICAgICAgICAg
ICAgLz4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBvbkRvdWJsZUNsaWNrPXt0aGlz
LmhhbmRsZUVkaXR9PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt0aGlzLnByb3BzLnRv
ZG8udGl0bGV9Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPgotICAgICAgICAgICAg
ICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0nZGVzdHJveScgb25DbGljaz17dGhpcy5wcm9wcy5v
bkRlc3Ryb3l9IC8+Ci0gICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAg
ICAgICA8aW5wdXQKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlZj0iZWRpdEZpZWxkIgotICAg
ICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImVkaXQiCi0gICAgICAgICAgICAgICAgICAgICAg
ICB2YWx1ZT17dGhpcy5zdGF0ZS5lZGl0VGV4dH0KLSAgICAgICAgICAgICAgICAgICAgICAgIG9u
Qmx1cj17dGhpcy5oYW5kbGVTdWJtaXR9Ci0gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5n
ZT17dGhpcy5oYW5kbGVDaGFuZ2V9Ci0gICAgICAgICAgICAgICAgICAgICAgICBvbktleURvd249
e3RoaXMuaGFuZGxlS2V5RG93bn0KLSAgICAgICAgICAgICAgICAgICAgLz4KLSAgICAgICAgICAg
ICAgICA8L2xpPgotICAgICAgICAgICAgKTsKLSAgICAgICAgfQotICAgIH0pOwotfSkod2luZG93
KTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvbGFicy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QvanMvdXRpbHMuanN4IGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9sYWJzL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9yZWFjdC9qcy91dGlscy5qc3gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDNjZTY5ODU2M2EyZjEwZmFmYjQxM2E5YTU1NzcyMDgzNzA4MWYyZDQuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9sYWJzL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9y
ZWFjdC9qcy91dGlscy5qc3gKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0oZnVuY3Rp
b24gKHdpbmRvdykgewotICAgICd1c2Ugc3RyaWN0JzsKLQotICAgIHdpbmRvdy5VdGlscyA9IHsK
LSAgICAgICAgdXVpZDogZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgLypqc2hpbnQgYml0d2lz
ZTpmYWxzZSAqLwotICAgICAgICAgICAgdmFyIGksIHJhbmRvbTsKLSAgICAgICAgICAgIHZhciB1
dWlkID0gJyc7Ci0KLSAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCAzMjsgaSsrKSB7Ci0gICAg
ICAgICAgICAgICAgcmFuZG9tID0gTWF0aC5yYW5kb20oKSAqIDE2IHwgMDsKLSAgICAgICAgICAg
ICAgICBpZiAoaSA9PT0gOCB8fCBpID09PSAxMiB8fCBpID09PSAxNiB8fCBpID09PSAyMCkgewot
ICAgICAgICAgICAgICAgICAgICB1dWlkICs9ICctJzsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgdXVpZCArPSAoaSA9PT0gMTIgPyA0IDogKGkgPT09IDE2ID8gKHJhbmRvbSAm
IDMgfCA4KSA6IHJhbmRvbSkpCi0gICAgICAgICAgICAgICAgICAgIC50b1N0cmluZygxNik7Ci0g
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHJldHVybiB1dWlkOwotICAgICAgICB9LAotCi0g
ICAgICAgIHBsdXJhbGl6ZTogZnVuY3Rpb24gKGNvdW50LCB3b3JkKSB7Ci0gICAgICAgICAgICBy
ZXR1cm4gY291bnQgPT09IDEgPyB3b3JkIDogd29yZCArICdzJzsKLSAgICAgICAgfSwKLQotICAg
ICAgICBzdG9yZTogZnVuY3Rpb24gKG5hbWVzcGFjZSwgZGF0YSkgewotICAgICAgICAgICAgaWYg
KGRhdGEpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLnNldEl0ZW0obmFt
ZXNwYWNlLCBKU09OLnN0cmluZ2lmeShkYXRhKSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgIHZhciBzdG9yZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKG5hbWVzcGFjZSk7Ci0gICAgICAg
ICAgICByZXR1cm4gKHN0b3JlICYmIEpTT04ucGFyc2Uoc3RvcmUpKSB8fCBbXTsKLSAgICAgICAg
fSwKLQotICAgICAgICBzdHJpbmdpZnlPYmpLZXlzOiBmdW5jdGlvbiAob2JqKSB7Ci0gICAgICAg
ICAgICB2YXIgcyA9ICcnOwotICAgICAgICAgICAgdmFyIGtleTsKLQotICAgICAgICAgICAgZm9y
IChrZXkgaW4gb2JqKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShr
ZXkpICYmIG9ialtrZXldKSB7Ci0gICAgICAgICAgICAgICAgICAgIHMgKz0ga2V5ICsgJyAnOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcmV0dXJuIHMu
dHJpbSgpOwotICAgICAgICB9Ci0gICAgfTsKLQotfSkod2luZG93KTsKZGlmZiAtLWdpdCBhL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvbGFicy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvcmVhY3QvcmVhZG1lLm1kIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9sYWJzL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9y
ZWFkbWUubWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyMGM0ZjM5NWFmOTFlNTMx
NGQwMmQwNDI0YjhiYjM4MThmY2QwNjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9sYWJzL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9yZWFkbWUubWQKKysrIC9kZXYv
bnVsbApAQCAtMSwzOCArMCwwIEBACi0jIFJlYWN0IFRvZG9NVkMgRXhhbXBsZQotCi0+IFJlYWN0
IGlzIGEgSmF2YVNjcmlwdCBsaWJyYXJ5IGZvciBjcmVhdGluZyB1c2VyIGludGVyZmFjZXMuIEl0
cyBjb3JlIHByaW5jaXBsZXMgYXJlIGRlY2xhcmF0aXZlIGNvZGUsIGVmZmljaWVuY3ksIGFuZCBm
bGV4aWJpbGl0eS4gU2ltcGx5IHNwZWNpZnkgd2hhdCB5b3VyIGNvbXBvbmVudCBsb29rcyBsaWtl
IGFuZCBSZWFjdCB3aWxsIGtlZXAgaXQgdXAtdG8tZGF0ZSB3aGVuIHRoZSB1bmRlcmx5aW5nIGRh
dGEgY2hhbmdlcy4KLQotPiBfW1JlYWN0IC0gZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0XShodHRw
Oi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0KV8KLQotCi0jIyBMZWFybmluZyBSZWFjdAotCi1U
aGUgW1JlYWN0IGdldHRpbmcgc3RhcnRlZCBkb2N1bWVudGF0aW9uXShodHRwOi8vZmFjZWJvb2su
Z2l0aHViLmlvL3JlYWN0L2RvY3MvZ2V0dGluZy1zdGFydGVkLmh0bWwpIGlzIGEgZ3JlYXQgd2F5
IHRvIGdldCBzdGFydGVkLgotCi1IZXJlIGFyZSBzb21lIGxpbmtzIHlvdSBtYXkgZmluZCBoZWxw
ZnVsOgotCi0qIFtEb2N1bWVudGF0aW9uXShodHRwOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0
L2RvY3MvZ2V0dGluZy1zdGFydGVkLmh0bWwpCi0qIFtBUEkgUmVmZXJlbmNlXShodHRwOi8vZmFj
ZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvcmVmZXJlbmNlLmh0bWwpCi0qIFtCbG9nXShodHRw
Oi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2Jsb2cvKQotKiBbUmVhY3Qgb24gR2l0SHViXSho
dHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QpCi0qIFtTdXBwb3J0XShodHRwOi8vZmFj
ZWJvb2suZ2l0aHViLmlvL3JlYWN0L3N1cHBvcnQuaHRtbCkKLQotQXJ0aWNsZXMgYW5kIGd1aWRl
cyBmcm9tIHRoZSBjb21tdW5pdHk6Ci0KLSogW1BoaWxvc29waHldKGh0dHA6Ly93d3cucXVvcmEu
Y29tL1BldGUtSHVudC9Qb3N0cy9SZWFjdC1VbmRlci10aGUtSG9vZCkKLSogW0hvdyBpcyBGYWNl
Ym9vaydzIFJlYWN0IEphdmFTY3JpcHQgbGlicmFyeV0oaHR0cDovL3d3dy5xdW9yYS5jb20vUmVh
Y3QtSlMtTGlicmFyeS9Ib3ctaXMtRmFjZWJvb2tzLVJlYWN0LUphdmFTY3JpcHQtbGlicmFyeSkK
LSogW1JlYWN0OiBVbmRlciB0aGUgaG9vZF0oaHR0cDovL3d3dy5xdW9yYS5jb20vUGV0ZS1IdW50
L1Bvc3RzL1JlYWN0LVVuZGVyLXRoZS1Ib29kKQotCi1HZXQgaGVscCBmcm9tIG90aGVyIFJlYWN0
IHVzZXJzOgotCi0qIFtSZWFjdCBvbiBTdGFja092ZXJmbG93XShodHRwOi8vc3RhY2tvdmVyZmxv
dy5jb20vcXVlc3Rpb25zL3RhZ2dlZC9yZWFjdGpzKQotKiBbTWFpbGluZyBsaXN0IG9uIEdvb2ds
ZSBHcm91cHNdKGh0dHBzOi8vZ3JvdXBzLmdvb2dsZS5jb20vZm9ydW0vIyFmb3J1bS9yZWFjdGpz
KQotKiAKLV9JZiB5b3UgaGF2ZSBvdGhlciBoZWxwZnVsIGxpbmtzIHRvIHNoYXJlLCBvciBmaW5k
IGFueSBvZiB0aGUgbGlua3MgYWJvdmUgbm8gbG9uZ2VyIHdvcmssIHBsZWFzZSBbbGV0IHVzIGtu
b3ddKGh0dHBzOi8vZ2l0aHViLmNvbS90YXN0ZWpzL3RvZG9tdmMvaXNzdWVzKS5fCi0KLQotIyMg
UnVubmluZwotCi1UaGUgYXBwIGlzIGJ1aWx0IHdpdGggW0pTWF0oaHR0cDovL2ZhY2Vib29rLmdp
dGh1Yi5pby9yZWFjdC9kb2NzL2pzeC1pbi1kZXB0aC5odG1sKSBhbmQgY29tcGlsZWQgYXQgcnVu
dGltZSBmb3IgYSBsaWdodGVyIGFuZCBtb3JlIGZ1biBjb2RlIHJlYWRpbmcgZXhwZXJpZW5jZS4g
QXMgc3RhdGVkIGluIHRoZSBsaW5rLCBKU1ggaXMgbm90IG1hbmRhdG9yeS4KLQotVG8gcnVuIHRo
ZSBhcHAsIHNwaW4gdXAgYW4gSFRUUCBzZXJ2ZXIgKGUuZy4gYHB5dGhvbiAtbSBTaW1wbGVIVFRQ
U2VydmVyYCkgYW5kIHZpc2l0IGh0dHA6Ly9sb2NhbGhvc3QvLi4uL215ZXhhbXBsZS8uCmRpZmYg
LS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3Zh
bmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svLmJhYmVscmMgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMy
MDE1LWJhYmVsLXdlYnBhY2svLmJhYmVscmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDBhMjMwM2ZiNTljY2E0ZGM1
MGZhMDA4MGEzNDg3YjFiNGUxNjFhYQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUt
YmFiZWwtd2VicGFjay8uYmFiZWxyYwpAQCAtMCwwICsxLDE1IEBACit7CisgICJwcmVzZXRzIjog
WworICAgIFsiZXMyMDE1IiwgeyJtb2R1bGVzIjogZmFsc2V9XSwKKyAgICAiZXMyMDE2IiwKKyAg
ICAic3RhZ2UtMiIsCisgICAgInJlYWN0IgorICBdLAorICAiZW52IjogeworICAgICJ0ZXN0Ijog
eworICAgICAgInBsdWdpbnMiOiBbCisgICAgICAgIFsiX19jb3ZlcmFnZV9fIiwgeyJpZ25vcmUi
OiAiKi4rKHRlc3R8c3R1YikuKiJ9XQorICAgICAgXQorICAgIH0KKyAgfQorfQpkaWZmIC0tZ2l0
IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxh
LWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrLy5lc2xpbnRpZ25vcmUgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMy
MDE1LWJhYmVsLXdlYnBhY2svLmVzbGludGlnbm9yZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZjliZmZhNTJlMTcw
YTUyYmQ3YjcxZTVmY2RiODZjNDMzZTk0N2U2Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2Vz
MjAxNS1iYWJlbC13ZWJwYWNrLy5lc2xpbnRpZ25vcmUKQEAgLTAsMCArMSwzIEBACitjb3ZlcmFn
ZS8KK25vZGVfbW9kdWxlcy8KK2Rpc3QKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwt
d2VicGFjay8uZXNsaW50cmMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svLmVzbGludHJj
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjMzMzM5MmI3MTNlNTI0NWZlYmRiOWQwZGQyMzdlOWFjM2RiMDkzNzcKLS0t
IC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svLmVzbGludHJjCkBA
IC0wLDAgKzEsNDEgQEAKK3sKKyAgImV4dGVuZHMiOiBbCisgICAgImtlbnRjZG9kZHMvYmVzdC1w
cmFjdGljZXMiLAorICAgICJrZW50Y2RvZGRzL3Bvc3NpYmxlLWVycm9ycyIsCisgICAgImtlbnRj
ZG9kZHMvZXM2L2Jlc3QtcHJhY3RpY2VzIiwKKyAgICAia2VudGNkb2Rkcy9lczYvcG9zc2libGUt
ZXJyb3JzIiwKKyAgICAia2VudGNkb2Rkcy9pbXBvcnQvYmVzdC1wcmFjdGljZXMiLAorICAgICJr
ZW50Y2RvZGRzL2ltcG9ydC9wb3NzaWJsZS1lcnJvcnMiLAorICAgICJrZW50Y2RvZGRzL21vY2hh
IiwKKyAgICAia2VudGNkb2Rkcy93ZWJwYWNrIiwKKyAgICAia2VudGNkb2Rkcy9yZWFjdCIsCisg
IF0sCisgICJydWxlcyI6IHsKKyAgICAvLyB0aGVzZSBhcmUgb25seSBoZXJlIGJlY2F1c2UgSSBk
aWQgbm90CisgICAgLy8gd2FudCB0byB1cGRhdGUgdGhlIGVudGlyZSBjb2RlYmFzZSDCr1xfKOOD
hClfL8KvCisgICAgImZ1bmMtbmFtZXMiOiAwLAorICAgICJuby12YXIiOiAwLAorICAgICJmdW5j
LXN0eWxlIjogMCwKKyAgICAiY29tbWEtZGFuZ2xlIjogMCwKKyAgICAidmFsaWQtanNkb2MiOiAw
LAorICAgICJ2YXJzLW9uLXRvcCI6IDAsCisgICAgImNvbXBsZXhpdHkiOiBbMiwgOF0sCisgICAg
Im1heC1kZXB0aCI6IFsyLCA2XSwKKyAgICAiY29uc2lzdGVudC1yZXR1cm4iOiAwLAorICAgICJp
ZC1tYXRjaCI6IDAsCisgICAgImltcG9ydC9uZXdsaW5lLWFmdGVyLWltcG9ydCI6IDAsCisgICAg
Ly8gZXM2IHN0dWZmIHdlIHRlY2huaWNhbGx5IGNhbiBub3QgZG8geWV0CisgICAgInN0cmljdCI6
IDAsCisgICAgIm9iamVjdC1zaG9ydGhhbmQiOiAwLAorICAgICJwcmVmZXItYXJyb3ctY2FsbGJh
Y2siOiAwLAorICAgICJwcmVmZXItdGVtcGxhdGUiOiAwLAorICAgICJiYWJlbC9vYmplY3Qtc2hv
cnRoYW5kIjogMCwKKyAgfSwKKyAgImdsb2JhbHMiOiB7CisgICAgImRlc2NyaWJlIjogZmFsc2Us
CisgICAgIml0IjogZmFsc2UsCisgICAgImV4cGVjdCI6IGZhbHNlLAorICAgICIkb24iOiBmYWxz
ZSwKKyAgICAiYmVmb3JlRWFjaCI6IGZhbHNlLAorICB9Cit9CmRpZmYgLS1naXQgYS9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMv
ZXMyMDE1LWJhYmVsLXdlYnBhY2svTElDRU5TRSBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFj
ay9MSUNFTlNFCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4NWMzMDg2MDNmOGIyMzFlODNhNDNkZTVhZDg1YzEwYWZm
N2IxYjIKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svTElD
RU5TRQpAQCAtMCwwICsxLDggQEAKK1RoZSBNSVQgTGljZW5zZSAoTUlUKQorQ29weXJpZ2h0IChj
KSAyMDE2IEtlbnQgQy4gRG9kZHMsIEFkZHkgT3NtYW5pCisKK1Blcm1pc3Npb24gaXMgaGVyZWJ5
IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkg
b2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUg
IlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24s
IGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1v
ZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxs
IGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRo
ZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zOgorCitUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJt
aXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50
aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKworVEhFIFNPRlRXQVJFIElTIFBST1ZJREVE
ICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IgSU1QTElF
RCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5H
RU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJT
IEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5H
IEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBV
U0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVz
L2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3QvYnVuZGxlLmFwcC40MjFlYjZiYWNhMDIyMThlOTg1
ZS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFu
aWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0L2J1bmRsZS5hcHAuNDIxZWI2
YmFjYTAyMjE4ZTk4NWUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGUxNzlmMzZkY2M1NjM2NjljYjM2YmE0ZjFj
ZDliMDg2MDQxOTUwNwotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2Vi
cGFjay9kaXN0L2J1bmRsZS5hcHAuNDIxZWI2YmFjYTAyMjE4ZTk4NWUuanMKQEAgLTAsMCArMSwy
IEBACit3ZWJwYWNrSnNvbnAoWzAsMl0sW2Z1bmN0aW9uKHQsZSxpKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gbyh0LGUpe3JldHVybihlfHxkb2N1bWVudCkucXVlcnlTZWxlY3Rvcih0KX1mdW5jdGlv
biBuKHQsZSl7cmV0dXJuKGV8fGRvY3VtZW50KS5xdWVyeVNlbGVjdG9yQWxsKHQpfWZ1bmN0aW9u
IHIodCxlLGksbyl7dC5hZGRFdmVudExpc3RlbmVyKGUsaSwhIW8pfWZ1bmN0aW9uIGwodCxlLGks
byl7ZnVuY3Rpb24gbChpKXt2YXIgcj1pLnRhcmdldCxsPW4oZSx0KSxhPUFycmF5LnByb3RvdHlw
ZS5pbmRleE9mLmNhbGwobCxyKT49MDthJiZvLmNhbGwocixpKX12YXIgYT0iYmx1ciI9PT1pfHwi
Zm9jdXMiPT09aTtyKHQsaSxsLGEpfWZ1bmN0aW9uIGEodCxlKXtpZih0LnBhcmVudE5vZGUpcmV0
dXJuIHQucGFyZW50Tm9kZS50YWdOYW1lLnRvTG93ZXJDYXNlKCk9PT1lLnRvTG93ZXJDYXNlKCk/
dC5wYXJlbnROb2RlOmEodC5wYXJlbnROb2RlLGUpfWZ1bmN0aW9uIGModCxlKXt2YXIgaT10Lmlu
ZGV4T2YoZSk7cmV0dXJuIGk9PT0tMT90OnZvaWQgdC5zcGxpY2UoaSwxKX1pLmQoZSwiYSIsZnVu
Y3Rpb24oKXtyZXR1cm4gb30pLGkuZChlLCJiIixmdW5jdGlvbigpe3JldHVybiBufSksaS5kKGUs
ImQiLGZ1bmN0aW9uKCl7cmV0dXJuIHJ9KSxpLmQoZSwiYyIsZnVuY3Rpb24oKXtyZXR1cm4gbH0p
LGkuZChlLCJlIixmdW5jdGlvbigpe3JldHVybiBhfSksaS5kKGUsImYiLGZ1bmN0aW9uKCl7cmV0
dXJuIGN9KSxOb2RlTGlzdC5wcm90b3R5cGUuZm9yRWFjaD1BcnJheS5wcm90b3R5cGUuZm9yRWFj
aH0sLGZ1bmN0aW9uKHQsZSxpKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbygpe2kuaShsLmEpKCl9
dmFyIG49aSgxKSxyPShpLm4obiksaSg5KSksbD0oaS5uKHIpLGkoMCksaSg3KSk7ZS5hPW99LGZ1
bmN0aW9uKHQsZSxpKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbyh0LGUpe3ZhciBpPXRoaXM7aS5t
b2RlbD10LGkudmlldz1lLGkudmlldy5iaW5kKCJuZXdUb2RvIixmdW5jdGlvbih0KXtpLmFkZEl0
ZW0odCl9KSxpLnZpZXcuYmluZCgiaXRlbUVkaXQiLGZ1bmN0aW9uKHQpe2kuZWRpdEl0ZW0odC5p
ZCl9KSxpLnZpZXcuYmluZCgiaXRlbUVkaXREb25lIixmdW5jdGlvbih0KXtpLmVkaXRJdGVtU2F2
ZSh0LmlkLHQudGl0bGUpfSksaS52aWV3LmJpbmQoIml0ZW1FZGl0Q2FuY2VsIixmdW5jdGlvbih0
KXtpLmVkaXRJdGVtQ2FuY2VsKHQuaWQpfSksaS52aWV3LmJpbmQoIml0ZW1SZW1vdmUiLGZ1bmN0
aW9uKHQpe2kucmVtb3ZlSXRlbSh0LmlkKX0pLGkudmlldy5iaW5kKCJpdGVtVG9nZ2xlIixmdW5j
dGlvbih0KXtpLnRvZ2dsZUNvbXBsZXRlKHQuaWQsdC5jb21wbGV0ZWQpfSksaS52aWV3LmJpbmQo
InJlbW92ZUNvbXBsZXRlZCIsZnVuY3Rpb24oKXtpLnJlbW92ZUNvbXBsZXRlZEl0ZW1zKCl9KSxp
LnZpZXcuYmluZCgidG9nZ2xlQWxsIixmdW5jdGlvbih0KXtpLnRvZ2dsZUFsbCh0LmNvbXBsZXRl
ZCl9KX1lLmE9byxvLnByb3RvdHlwZS5zZXRWaWV3PWZ1bmN0aW9uKHQpe3ZhciBlPXQuc3BsaXQo
Ii8iKVsxXSxpPWV8fCIiO3RoaXMuX3VwZGF0ZUZpbHRlclN0YXRlKGkpfSxvLnByb3RvdHlwZS5z
aG93QWxsPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0Lm1vZGVsLnJlYWQoZnVuY3Rpb24oZSl7dC52
aWV3LnJlbmRlcigic2hvd0VudHJpZXMiLGUpfSl9LG8ucHJvdG90eXBlLnNob3dBY3RpdmU9ZnVu
Y3Rpb24oKXt2YXIgdD10aGlzO3QubW9kZWwucmVhZCh7Y29tcGxldGVkOiExfSxmdW5jdGlvbihl
KXt0LnZpZXcucmVuZGVyKCJzaG93RW50cmllcyIsZSl9KX0sby5wcm90b3R5cGUuc2hvd0NvbXBs
ZXRlZD1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dC5tb2RlbC5yZWFkKHtjb21wbGV0ZWQ6ITB9LGZ1
bmN0aW9uKGUpe3Qudmlldy5yZW5kZXIoInNob3dFbnRyaWVzIixlKX0pfSxvLnByb3RvdHlwZS5h
ZGRJdGVtPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7IiIhPT10LnRyaW0oKSYmZS5tb2RlbC5jcmVh
dGUodCxmdW5jdGlvbigpe2Uudmlldy5yZW5kZXIoImNsZWFyTmV3VG9kbyIpLGUuX2ZpbHRlcigh
MCl9KX0sby5wcm90b3R5cGUuZWRpdEl0ZW09ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztlLm1vZGVs
LnJlYWQodCxmdW5jdGlvbihpKXtlLnZpZXcucmVuZGVyKCJlZGl0SXRlbSIse2lkOnQsdGl0bGU6
aVswXS50aXRsZX0pfSl9LG8ucHJvdG90eXBlLmVkaXRJdGVtU2F2ZT1mdW5jdGlvbih0LGUpe3Zh
ciBpPXRoaXM7ZS50cmltKCk/aS5tb2RlbC51cGRhdGUodCx7dGl0bGU6ZX0sZnVuY3Rpb24oKXtp
LnZpZXcucmVuZGVyKCJlZGl0SXRlbURvbmUiLHtpZDp0LHRpdGxlOmV9KX0pOmkucmVtb3ZlSXRl
bSh0KX0sby5wcm90b3R5cGUuZWRpdEl0ZW1DYW5jZWw9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztl
Lm1vZGVsLnJlYWQodCxmdW5jdGlvbihpKXtlLnZpZXcucmVuZGVyKCJlZGl0SXRlbURvbmUiLHtp
ZDp0LHRpdGxlOmlbMF0udGl0bGV9KX0pfSxvLnByb3RvdHlwZS5yZW1vdmVJdGVtPWZ1bmN0aW9u
KHQpe3ZhciBlPXRoaXM7ZS5tb2RlbC5yZW1vdmUodCxmdW5jdGlvbigpe2Uudmlldy5yZW5kZXIo
InJlbW92ZUl0ZW0iLHQpfSksZS5fZmlsdGVyKCl9LG8ucHJvdG90eXBlLnJlbW92ZUNvbXBsZXRl
ZEl0ZW1zPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0Lm1vZGVsLnJlYWQoe2NvbXBsZXRlZDohMH0s
ZnVuY3Rpb24oZSl7ZS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3QucmVtb3ZlSXRlbShlLmlkKX0pfSks
dC5fZmlsdGVyKCl9LG8ucHJvdG90eXBlLnRvZ2dsZUNvbXBsZXRlPWZ1bmN0aW9uKHQsZSxpKXt2
YXIgbz10aGlzO28ubW9kZWwudXBkYXRlKHQse2NvbXBsZXRlZDplfSxmdW5jdGlvbigpe28udmll
dy5yZW5kZXIoImVsZW1lbnRDb21wbGV0ZSIse2lkOnQsY29tcGxldGVkOmV9KX0pLGl8fG8uX2Zp
bHRlcigpfSxvLnByb3RvdHlwZS50b2dnbGVBbGw9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztlLm1v
ZGVsLnJlYWQoe2NvbXBsZXRlZDohdH0sZnVuY3Rpb24oaSl7aS5mb3JFYWNoKGZ1bmN0aW9uKGkp
e2UudG9nZ2xlQ29tcGxldGUoaS5pZCx0LCEwKX0pfSksZS5fZmlsdGVyKCl9LG8ucHJvdG90eXBl
Ll91cGRhdGVDb3VudD1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dC5tb2RlbC5nZXRDb3VudChmdW5j
dGlvbihlKXt0LnZpZXcucmVuZGVyKCJ1cGRhdGVFbGVtZW50Q291bnQiLGUuYWN0aXZlKSx0LnZp
ZXcucmVuZGVyKCJjbGVhckNvbXBsZXRlZEJ1dHRvbiIse2NvbXBsZXRlZDplLmNvbXBsZXRlZCx2
aXNpYmxlOmUuY29tcGxldGVkPjB9KSx0LnZpZXcucmVuZGVyKCJ0b2dnbGVBbGwiLHtjaGVja2Vk
OmUuY29tcGxldGVkPT09ZS50b3RhbH0pLHQudmlldy5yZW5kZXIoImNvbnRlbnRCbG9ja1Zpc2li
aWxpdHkiLHt2aXNpYmxlOmUudG90YWw+MH0pfSl9LG8ucHJvdG90eXBlLl9maWx0ZXI9ZnVuY3Rp
b24odCl7dmFyIGU9dGhpcy5fYWN0aXZlUm91dGUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrdGhp
cy5fYWN0aXZlUm91dGUuc3Vic3RyKDEpO3RoaXMuX3VwZGF0ZUNvdW50KCksKHR8fCJBbGwiIT09
dGhpcy5fbGFzdEFjdGl2ZVJvdXRlfHx0aGlzLl9sYXN0QWN0aXZlUm91dGUhPT1lKSYmdGhpc1si
c2hvdyIrZV0oKSx0aGlzLl9sYXN0QWN0aXZlUm91dGU9ZX0sby5wcm90b3R5cGUuX3VwZGF0ZUZp
bHRlclN0YXRlPWZ1bmN0aW9uKHQpe3Q9dC5zcGxpdCgiPyIpWzBdLHRoaXMuX2FjdGl2ZVJvdXRl
PXQsIiI9PT10JiYodGhpcy5fYWN0aXZlUm91dGU9IkFsbCIpLHRoaXMuX2ZpbHRlcigpLHRoaXMu
dmlldy5yZW5kZXIoInNldEZpbHRlciIsdCl9fSxmdW5jdGlvbih0LGUsaSl7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIG8odCl7dGhpcy5zdG9yYWdlPXR9dmFyIG49ImZ1bmN0aW9uIj09dHlwZW9mIFN5
bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJu
IHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJv
bCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6
dHlwZW9mIHR9O2UuYT1vLG8ucHJvdG90eXBlLmNyZWF0ZT1mdW5jdGlvbih0LGUpe3Q9dHx8IiIs
ZT1lfHxmdW5jdGlvbigpe307dmFyIGk9e3RpdGxlOnQudHJpbSgpLGNvbXBsZXRlZDohMX07dGhp
cy5zdG9yYWdlLnNhdmUoaSxlKX0sby5wcm90b3R5cGUucmVhZD1mdW5jdGlvbih0LGUpe3ZhciBp
PSJ1bmRlZmluZWQiPT10eXBlb2YgdD8idW5kZWZpbmVkIjpuKHQpO3JldHVybiBlPWV8fGZ1bmN0
aW9uKCl7fSwiZnVuY3Rpb24iPT09aT8oZT10LHRoaXMuc3RvcmFnZS5maW5kQWxsKGUpKTp2b2lk
KCJzdHJpbmciPT09aXx8Im51bWJlciI9PT1pPyh0PXBhcnNlSW50KHQsMTApLHRoaXMuc3RvcmFn
ZS5maW5kKHtpZDp0fSxlKSk6dGhpcy5zdG9yYWdlLmZpbmQodCxlKSl9LG8ucHJvdG90eXBlLnVw
ZGF0ZT1mdW5jdGlvbih0LGUsaSl7dGhpcy5zdG9yYWdlLnNhdmUoZSxpLHQpfSxvLnByb3RvdHlw
ZS5yZW1vdmU9ZnVuY3Rpb24odCxlKXt0aGlzLnN0b3JhZ2UucmVtb3ZlKHQsZSl9LG8ucHJvdG90
eXBlLnJlbW92ZUFsbD1mdW5jdGlvbih0KXt0aGlzLnN0b3JhZ2UuZHJvcCh0KX0sby5wcm90b3R5
cGUuZ2V0Q291bnQ9ZnVuY3Rpb24odCl7dmFyIGU9e2FjdGl2ZTowLGNvbXBsZXRlZDowLHRvdGFs
OjB9O3RoaXMuc3RvcmFnZS5maW5kQWxsKGZ1bmN0aW9uKGkpe2kuZm9yRWFjaChmdW5jdGlvbih0
KXt0LmNvbXBsZXRlZD9lLmNvbXBsZXRlZCsrOmUuYWN0aXZlKyssZS50b3RhbCsrfSksdChlKX0p
fX0sZnVuY3Rpb24odCxlLGkpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBvKHQsZSl7aWYoZT1lfHxm
dW5jdGlvbigpe30sdGhpcy5fZGJOYW1lPXQsIWxvY2FsU3RvcmFnZVt0XSl7dmFyIGk9e3RvZG9z
OltdfTtsb2NhbFN0b3JhZ2VbdF09SlNPTi5zdHJpbmdpZnkoaSl9ZS5jYWxsKHRoaXMsSlNPTi5w
YXJzZShsb2NhbFN0b3JhZ2VbdF0pKSx0aGlzLnN1YnNjcmliZXJzPVtdfXZhciBuPWkoMCk7ZS5h
PW8sby5wcm90b3R5cGUuc3Vic2NyaWJlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7cmV0dXJuIHRo
aXMuc3Vic2NyaWJlcnMucHVzaCh0KSxmdW5jdGlvbigpe3JldHVybiBpLmkobi5mKShlLnN1YnNj
cmliZXJzLHQpfX0sby5wcm90b3R5cGUuX25vdGlmeT1mdW5jdGlvbigpe3RoaXMuc3Vic2NyaWJl
cnMuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4gdCgpfSl9LG8ucHJvdG90eXBlLmZpbmQ9ZnVu
Y3Rpb24odCxlKXtpZihlKXt2YXIgaT1KU09OLnBhcnNlKGxvY2FsU3RvcmFnZVt0aGlzLl9kYk5h
bWVdKS50b2RvcztlLmNhbGwodGhpcyxpLmZpbHRlcihmdW5jdGlvbihlKXtmb3IodmFyIGkgaW4g
dClpZih0W2ldIT09ZVtpXSlyZXR1cm4hMTtyZXR1cm4hMH0pKX19LG8ucHJvdG90eXBlLmZpbmRB
bGw9ZnVuY3Rpb24odCl7dD10fHxmdW5jdGlvbigpe30sdC5jYWxsKHRoaXMsSlNPTi5wYXJzZShs
b2NhbFN0b3JhZ2VbdGhpcy5fZGJOYW1lXSkudG9kb3MpfSxvLnByb3RvdHlwZS5zYXZlPWZ1bmN0
aW9uKHQsZSxpKXt2YXIgbz1KU09OLnBhcnNlKGxvY2FsU3RvcmFnZVt0aGlzLl9kYk5hbWVdKSxu
PW8udG9kb3M7aWYoZT1lfHxmdW5jdGlvbigpe30saSl7Zm9yKHZhciByPTA7cjxuLmxlbmd0aDty
KyspaWYobltyXS5pZD09PWkpe2Zvcih2YXIgbCBpbiB0KW5bcl1bbF09dFtsXTticmVha31sb2Nh
bFN0b3JhZ2VbdGhpcy5fZGJOYW1lXT1KU09OLnN0cmluZ2lmeShvKSxlLmNhbGwodGhpcyxKU09O
LnBhcnNlKGxvY2FsU3RvcmFnZVt0aGlzLl9kYk5hbWVdKS50b2Rvcyl9ZWxzZSB0LmlkPShuZXcg
RGF0ZSkuZ2V0VGltZSgpLG4ucHVzaCh0KSxsb2NhbFN0b3JhZ2VbdGhpcy5fZGJOYW1lXT1KU09O
LnN0cmluZ2lmeShvKSxlLmNhbGwodGhpcyxbdF0pO3RoaXMuX25vdGlmeSgpfSxvLnByb3RvdHlw
ZS5yZW1vdmU9ZnVuY3Rpb24odCxlKXtmb3IodmFyIGk9SlNPTi5wYXJzZShsb2NhbFN0b3JhZ2Vb
dGhpcy5fZGJOYW1lXSksbz1pLnRvZG9zLG49MDtuPG8ubGVuZ3RoO24rKylpZihvW25dLmlkPT09
dCl7by5zcGxpY2UobiwxKTticmVha31sb2NhbFN0b3JhZ2VbdGhpcy5fZGJOYW1lXT1KU09OLnN0
cmluZ2lmeShpKSxlLmNhbGwodGhpcyxKU09OLnBhcnNlKGxvY2FsU3RvcmFnZVt0aGlzLl9kYk5h
bWVdKS50b2RvcyksdGhpcy5fbm90aWZ5KCl9LG8ucHJvdG90eXBlLmRyb3A9ZnVuY3Rpb24odCl7
bG9jYWxTdG9yYWdlW3RoaXMuX2RiTmFtZV09SlNPTi5zdHJpbmdpZnkoe3RvZG9zOltdfSksdC5j
YWxsKHRoaXMsSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2VbdGhpcy5fZGJOYW1lXSkudG9kb3MpLHRo
aXMuX25vdGlmeSgpfX0sZnVuY3Rpb24odCxlLGkpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBvKCl7
dGhpcy5kZWZhdWx0VGVtcGxhdGU9J1xuICAgIDxsaSBkYXRhLWlkPSJ7e2lkfX0iIGNsYXNzPSJ7
e2NvbXBsZXRlZH19Ij5cbiAgICAgIDxkaXYgY2xhc3M9InZpZXciPlxuICAgICAgICA8aW5wdXQg
Y2xhc3M9InRvZ2dsZSIgdHlwZT0iY2hlY2tib3giIHt7Y2hlY2tlZH19IC8+XG4gICAgICAgIDxs
YWJlbD57e3RpdGxlfX08L2xhYmVsPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPSJkZXN0cm95Ij48
L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbGk+XG4gICd9ZS5hPW87dmFyIG49eyImIjoi
JmFtcDsiLCI8IjoiJmx0OyIsIj4iOiImZ3Q7IiwnIic6IiZxdW90OyIsIiciOiImI3gyNzsiLCJg
IjoiJiN4NjA7In0scj1mdW5jdGlvbih0KXtyZXR1cm4gblt0XX0sbD0vWyY8PiInYF0vZyxhPW5l
dyBSZWdFeHAobC5zb3VyY2UpLGM9ZnVuY3Rpb24odCl7cmV0dXJuIHQmJmEudGVzdCh0KT90LnJl
cGxhY2UobCxyKTp0fTtvLnByb3RvdHlwZS5zaG93PWZ1bmN0aW9uKHQpe3ZhciBlLGksbz0iIjtm
b3IoZT0wLGk9dC5sZW5ndGg7ZTxpO2UrKyl7dmFyIG49dGhpcy5kZWZhdWx0VGVtcGxhdGUscj0i
IixsPSIiO3RbZV0uY29tcGxldGVkJiYocj0iY29tcGxldGVkIixsPSJjaGVja2VkIiksbj1uLnJl
cGxhY2UoInt7aWR9fSIsdFtlXS5pZCksbj1uLnJlcGxhY2UoInt7dGl0bGV9fSIsYyh0W2VdLnRp
dGxlKSksbj1uLnJlcGxhY2UoInt7Y29tcGxldGVkfX0iLHIpLG49bi5yZXBsYWNlKCJ7e2NoZWNr
ZWR9fSIsbCksbys9bn1yZXR1cm4gb30sby5wcm90b3R5cGUuaXRlbUNvdW50ZXI9ZnVuY3Rpb24o
dCl7dmFyIGU9MT09PXQ/IiI6InMiO3JldHVybiI8c3Ryb25nPiIrdCsiPC9zdHJvbmc+IGl0ZW0i
K2UrIiBsZWZ0In0sby5wcm90b3R5cGUuY2xlYXJDb21wbGV0ZWRCdXR0b249ZnVuY3Rpb24odCl7
cmV0dXJuIHQ+MD8iQ2xlYXIgY29tcGxldGVkIjoiIn19LGZ1bmN0aW9uKHQsZSxpKXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gbyh0KXt0aGlzLnN0b3JhZ2U9bmV3IGMuYSh0KSx0aGlzLm1vZGVsPW5l
dyBhLmEodGhpcy5zdG9yYWdlKSx0aGlzLnRlbXBsYXRlPW5ldyBkLmEsdGhpcy52aWV3PW5ldyBy
LmEodGhpcy50ZW1wbGF0ZSksdGhpcy5jb250cm9sbGVyPW5ldyBsLmEodGhpcy5tb2RlbCx0aGlz
LnZpZXcpfWZ1bmN0aW9uIG4oKXtzPW5ldyBvKCJ0b2Rvcy12YW5pbGxhanMiKSxzLmNvbnRyb2xs
ZXIuc2V0Vmlldyhkb2N1bWVudC5sb2NhdGlvbi5oYXNoKSx1LmZvckVhY2goZnVuY3Rpb24odCl7
cmV0dXJuIHQoKX0pfXZhciByPWkoOCksbD1pKDMpLGE9aSg0KSxjPWkoNSksZD1pKDYpO2koMCk7
aS5kKGUsImEiLGZ1bmN0aW9uKCl7cmV0dXJuIG59KTt2YXIgcz12b2lkIDAsdT1bXX0sZnVuY3Rp
b24odCxlLGkpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBvKHQsZSl7aWYoISh0IGluc3RhbmNlb2Yg
ZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9u
Iil9ZnVuY3Rpb24gbih0KXtpLmkoYy5hKSgiLmZpbHRlcnMgLnNlbGVjdGVkIikuY2xhc3NOYW1l
PSIiLGkuaShjLmEpKCcuZmlsdGVycyBbaHJlZj0iIy8nK3QrJyJdJykuY2xhc3NOYW1lPSJzZWxl
Y3RlZCJ9ZnVuY3Rpb24gcih0LGUpe3ZhciBvPWkuaShjLmEpKCdbZGF0YS1pZD0iJyt0KyciXScp
O28mJihvLmNsYXNzTmFtZT1lPyJjb21wbGV0ZWQiOiIiLGkuaShjLmEpKCJpbnB1dCIsbykuY2hl
Y2tlZD1lKX1mdW5jdGlvbiBsKHQsZSl7dmFyIG89aS5pKGMuYSkoJ1tkYXRhLWlkPSInK3QrJyJd
Jyk7aWYobyl7by5jbGFzc05hbWU9by5jbGFzc05hbWUrIiBlZGl0aW5nIjt2YXIgbj1kb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO24uY2xhc3NOYW1lPSJlZGl0IixvLmFwcGVuZENoaWxk
KG4pLG4uZm9jdXMoKSxuLnZhbHVlPWV9fWZ1bmN0aW9uIGEodCl7dmFyIGU9aS5pKGMuZSkodCwi
bGkiKTtyZXR1cm4gcGFyc2VJbnQoZS5kYXRhc2V0LmlkLDEwKX12YXIgYz1pKDApLGQ9ZnVuY3Rp
b24oKXtmdW5jdGlvbiB0KHQsZSl7Zm9yKHZhciBpPTA7aTxlLmxlbmd0aDtpKyspe3ZhciBvPWVb
aV07by5lbnVtZXJhYmxlPW8uZW51bWVyYWJsZXx8ITEsby5jb25maWd1cmFibGU9ITAsInZhbHVl
ImluIG8mJihvLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxvLmtleSxvKX19
cmV0dXJuIGZ1bmN0aW9uKGUsaSxvKXtyZXR1cm4gaSYmdChlLnByb3RvdHlwZSxpKSxvJiZ0KGUs
byksZX19KCkscz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7byh0aGlzLHQpLHRoaXMudGVtcGxh
dGU9ZSx0aGlzLkVOVEVSX0tFWT0xMyx0aGlzLkVTQ0FQRV9LRVk9MjcsdGhpcy4kdG9kb0xpc3Q9
aS5pKGMuYSkoIi50b2RvLWxpc3QiKSx0aGlzLiR0b2RvSXRlbUNvdW50ZXI9aS5pKGMuYSkoIi50
b2RvLWNvdW50IiksdGhpcy4kY2xlYXJDb21wbGV0ZWQ9aS5pKGMuYSkoIi5jbGVhci1jb21wbGV0
ZWQiKSx0aGlzLiRtYWluPWkuaShjLmEpKCIubWFpbiIpLHRoaXMuJGZvb3Rlcj1pLmkoYy5hKSgi
LmZvb3RlciIpLHRoaXMuJHRvZ2dsZUFsbD1pLmkoYy5hKSgiLnRvZ2dsZS1hbGwiKSx0aGlzLiRu
ZXdUb2RvPWkuaShjLmEpKCIubmV3LXRvZG8iKX1yZXR1cm4gZCh0LFt7a2V5OiJfcmVtb3ZlSXRl
bSIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9aS5pKGMuYSkoJ1tkYXRhLWlkPSInK3QrJyJdJyk7
ZSYmdGhpcy4kdG9kb0xpc3QucmVtb3ZlQ2hpbGQoZSl9fSx7a2V5OiJfY2xlYXJDb21wbGV0ZWRC
dXR0b24iLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dGhpcy4kY2xlYXJDb21wbGV0ZWQuaW5uZXJIVE1M
PXRoaXMudGVtcGxhdGUuY2xlYXJDb21wbGV0ZWRCdXR0b24odCksdGhpcy4kY2xlYXJDb21wbGV0
ZWQuc3R5bGUuZGlzcGxheT1lPyJibG9jayI6Im5vbmUifX0se2tleToiX2VkaXRJdGVtRG9uZSIs
dmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgbz1pLmkoYy5hKSgnW2RhdGEtaWQ9IicrdCsnIl0nKTtp
ZihvKXt2YXIgbj1pLmkoYy5hKSgiaW5wdXQuZWRpdCIsbyk7by5yZW1vdmVDaGlsZChuKSxvLmNs
YXNzTmFtZT1vLmNsYXNzTmFtZS5yZXBsYWNlKCJlZGl0aW5nIiwiIiksaS5pKGMuYikoImxhYmVs
IixvKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3QudGV4dENvbnRlbnQ9ZX0pfX19LHtrZXk6InJlbmRl
ciIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLG89e3Nob3dFbnRyaWVzOmZ1bmN0aW9u
KCl7aS4kdG9kb0xpc3QuaW5uZXJIVE1MPWkudGVtcGxhdGUuc2hvdyhlKX0scmVtb3ZlSXRlbTpm
dW5jdGlvbigpe2kuX3JlbW92ZUl0ZW0oZSl9LHVwZGF0ZUVsZW1lbnRDb3VudDpmdW5jdGlvbigp
e2kuJHRvZG9JdGVtQ291bnRlci5pbm5lckhUTUw9aS50ZW1wbGF0ZS5pdGVtQ291bnRlcihlKX0s
Y2xlYXJDb21wbGV0ZWRCdXR0b246ZnVuY3Rpb24oKXtpLl9jbGVhckNvbXBsZXRlZEJ1dHRvbihl
LmNvbXBsZXRlZCxlLnZpc2libGUpfSxjb250ZW50QmxvY2tWaXNpYmlsaXR5OmZ1bmN0aW9uKCl7
aS4kbWFpbi5zdHlsZS5kaXNwbGF5PWkuJGZvb3Rlci5zdHlsZS5kaXNwbGF5PWUudmlzaWJsZT8i
YmxvY2siOiJub25lIn0sdG9nZ2xlQWxsOmZ1bmN0aW9uKCl7aS4kdG9nZ2xlQWxsLmNoZWNrZWQ9
ZS5jaGVja2VkfSxzZXRGaWx0ZXI6ZnVuY3Rpb24oKXtuKGUpfSxjbGVhck5ld1RvZG86ZnVuY3Rp
b24oKXtpLiRuZXdUb2RvLnZhbHVlPSIifSxlbGVtZW50Q29tcGxldGU6ZnVuY3Rpb24oKXtyKGUu
aWQsZS5jb21wbGV0ZWQpfSxlZGl0SXRlbTpmdW5jdGlvbigpe2woZS5pZCxlLnRpdGxlKX0sZWRp
dEl0ZW1Eb25lOmZ1bmN0aW9uKCl7aS5fZWRpdEl0ZW1Eb25lKGUuaWQsZS50aXRsZSl9fTtvW3Rd
KCl9fSx7a2V5OiJfYmluZEl0ZW1FZGl0RG9uZSIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhp
cztpLmkoYy5jKShlLiR0b2RvTGlzdCwibGkgLmVkaXQiLCJibHVyIixmdW5jdGlvbigpe3RoaXMu
ZGF0YXNldC5pc2NhbmNlbGVkfHx0KHtpZDphKHRoaXMpLHRpdGxlOnRoaXMudmFsdWV9KX0pLGku
aShjLmMpKGUuJHRvZG9MaXN0LCJsaSAuZWRpdCIsImtleXByZXNzIixmdW5jdGlvbih0KXt0Lmtl
eUNvZGU9PT1lLkVOVEVSX0tFWSYmdGhpcy5ibHVyKCl9KX19LHtrZXk6Il9iaW5kSXRlbUVkaXRD
YW5jZWwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7aS5pKGMuYykoZS4kdG9kb0xpc3Qs
ImxpIC5lZGl0Iiwia2V5dXAiLGZ1bmN0aW9uKGkpe2kua2V5Q29kZT09PWUuRVNDQVBFX0tFWSYm
KHRoaXMuZGF0YXNldC5pc2NhbmNlbGVkPSEwLHRoaXMuYmx1cigpLHQoe2lkOmEodGhpcyl9KSl9
KX19LHtrZXk6ImJpbmQiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIG89dGhpczsibmV3VG9kbyI9
PT10P2kuaShjLmQpKG8uJG5ld1RvZG8sImNoYW5nZSIsZnVuY3Rpb24oKXtlKG8uJG5ld1RvZG8u
dmFsdWUpfSk6InJlbW92ZUNvbXBsZXRlZCI9PT10P2kuaShjLmQpKG8uJGNsZWFyQ29tcGxldGVk
LCJjbGljayIsZnVuY3Rpb24oKXtlKCl9KToidG9nZ2xlQWxsIj09PXQ/aS5pKGMuZCkoby4kdG9n
Z2xlQWxsLCJjbGljayIsZnVuY3Rpb24oKXtlKHtjb21wbGV0ZWQ6dGhpcy5jaGVja2VkfSl9KToi
aXRlbUVkaXQiPT09dD9pLmkoYy5jKShvLiR0b2RvTGlzdCwibGkgbGFiZWwiLCJkYmxjbGljayIs
ZnVuY3Rpb24oKXtlKHtpZDphKHRoaXMpfSl9KToiaXRlbVJlbW92ZSI9PT10P2kuaShjLmMpKG8u
JHRvZG9MaXN0LCIuZGVzdHJveSIsImNsaWNrIixmdW5jdGlvbigpe2Uoe2lkOmEodGhpcyl9KX0p
OiJpdGVtVG9nZ2xlIj09PXQ/aS5pKGMuYykoby4kdG9kb0xpc3QsIi50b2dnbGUiLCJjbGljayIs
ZnVuY3Rpb24oKXtlKHtpZDphKHRoaXMpLGNvbXBsZXRlZDp0aGlzLmNoZWNrZWR9KX0pOiJpdGVt
RWRpdERvbmUiPT09dD9vLl9iaW5kSXRlbUVkaXREb25lKGUpOiJpdGVtRWRpdENhbmNlbCI9PT10
JiZvLl9iaW5kSXRlbUVkaXRDYW5jZWwoZSl9fV0pLHR9KCk7ZS5hPXN9LGZ1bmN0aW9uKHQsZSl7
fSxmdW5jdGlvbih0LGUsaSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG8oKXtpLmkoci5kKSh3aW5k
b3csImxvYWQiLG4uYSksaS5pKHIuZCkod2luZG93LCJoYXNoY2hhbmdlIixuLmEpfXZhciBuPWko
Mikscj1pKDApOyJjb21wbGV0ZSI9PT1kb2N1bWVudC5yZWFkeVN0YXRlO28oKX1dLFsxMF0pOwor
Ly8jIHNvdXJjZU1hcHBpbmdVUkw9YnVuZGxlLmFwcC40MjFlYjZiYWNhMDIyMThlOTg1ZS5qcy5t
YXAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1
LWJhYmVsLXdlYnBhY2svZGlzdC9idW5kbGUuYXBwLjQyMWViNmJhY2EwMjIxOGU5ODVlLmpzLm1h
cCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxs
YS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0L2J1bmRsZS5hcHAuNDIxZWI2YmFj
YTAyMjE4ZTk4NWUuanMubWFwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmViMWZiZTA1ZDJjZWJkMTk3M2U5M2FiZGZk
MWY1Nzc4MjFlMDQ2ODYKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdl
YnBhY2svZGlzdC9idW5kbGUuYXBwLjQyMWViNmJhY2EwMjIxOGU5ODVlLmpzLm1hcApAQCAtMCww
ICsxIEBACit7InZlcnNpb24iOjMsInNvdXJjZXMiOlsid2VicGFjazovLy9idW5kbGUuYXBwLjQy
MWViNmJhY2EwMjIxOGU5ODVlLmpzIiwid2VicGFjazovLy8uL2hlbHBlcnMuanMiLCJ3ZWJwYWNr
Oi8vLy4vYXBwLmpzIiwid2VicGFjazovLy8uL2NvbnRyb2xsZXIuanMiLCJ3ZWJwYWNrOi8vLy4v
bW9kZWwuanMiLCJ3ZWJwYWNrOi8vLy4vc3RvcmUuanMiLCJ3ZWJwYWNrOi8vLy4vdGVtcGxhdGUu
anMiLCJ3ZWJwYWNrOi8vLy4vdG9kby5qcyIsIndlYnBhY2s6Ly8vLi92aWV3LmpzIiwid2VicGFj
azovLy8uL2Jvb3RzdHJhcC5qcyJdLCJuYW1lcyI6WyJ3ZWJwYWNrSnNvbnAiLCJtb2R1bGUiLCJl
eHBvcnRzIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsInFzIiwic2VsZWN0b3IiLCJzY29wZSIsImRv
Y3VtZW50IiwicXVlcnlTZWxlY3RvciIsInFzYSIsInF1ZXJ5U2VsZWN0b3JBbGwiLCIkb24iLCJ0
YXJnZXQiLCJ0eXBlIiwiY2FsbGJhY2siLCJ1c2VDYXB0dXJlIiwiYWRkRXZlbnRMaXN0ZW5lciIs
IiRkZWxlZ2F0ZSIsImhhbmRsZXIiLCJkaXNwYXRjaEV2ZW50IiwiZXZlbnQiLCJ0YXJnZXRFbGVt
ZW50IiwicG90ZW50aWFsRWxlbWVudHMiLCJoYXNNYXRjaCIsIkFycmF5IiwicHJvdG90eXBlIiwi
aW5kZXhPZiIsImNhbGwiLCIkcGFyZW50IiwiZWxlbWVudCIsInRhZ05hbWUiLCJwYXJlbnROb2Rl
IiwidG9Mb3dlckNhc2UiLCJyZW1vdmUiLCJhcnJheSIsInRoaW5nIiwiaW5kZXgiLCJzcGxpY2Ui
LCJkIiwiTm9kZUxpc3QiLCJmb3JFYWNoIiwib25Mb2FkIiwiaSIsIl9fV0VCUEFDS19JTVBPUlRF
RF9NT0RVTEVfM19fdG9kb19fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3RvZG9tdmNf
YXBwX2Nzc19pbmRleF9jc3NfXyIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fYXBwX2Nz
c19fIiwibiIsIkNvbnRyb2xsZXIiLCJtb2RlbCIsInZpZXciLCJ0aGF0IiwidGhpcyIsImJpbmQi
LCJ0aXRsZSIsImFkZEl0ZW0iLCJpdGVtIiwiZWRpdEl0ZW0iLCJpZCIsImVkaXRJdGVtU2F2ZSIs
ImVkaXRJdGVtQ2FuY2VsIiwicmVtb3ZlSXRlbSIsInRvZ2dsZUNvbXBsZXRlIiwiY29tcGxldGVk
IiwicmVtb3ZlQ29tcGxldGVkSXRlbXMiLCJzdGF0dXMiLCJ0b2dnbGVBbGwiLCJzZXRWaWV3Iiwi
bG9jYXRpb25IYXNoIiwicm91dGUiLCJzcGxpdCIsInBhZ2UiLCJfdXBkYXRlRmlsdGVyU3RhdGUi
LCJzaG93QWxsIiwicmVhZCIsImRhdGEiLCJyZW5kZXIiLCJzaG93QWN0aXZlIiwic2hvd0NvbXBs
ZXRlZCIsInRyaW0iLCJjcmVhdGUiLCJfZmlsdGVyIiwidXBkYXRlIiwic2lsZW50IiwiX3VwZGF0
ZUNvdW50IiwiZ2V0Q291bnQiLCJ0b2RvcyIsImFjdGl2ZSIsInZpc2libGUiLCJjaGVja2VkIiwi
dG90YWwiLCJmb3JjZSIsImFjdGl2ZVJvdXRlIiwiX2FjdGl2ZVJvdXRlIiwiY2hhckF0IiwidG9V
cHBlckNhc2UiLCJzdWJzdHIiLCJfbGFzdEFjdGl2ZVJvdXRlIiwiY3VycmVudFBhZ2UiLCJNb2Rl
bCIsInN0b3JhZ2UiLCJfdHlwZW9mIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJvYmoiLCJjb25zdHJ1
Y3RvciIsIm5ld0l0ZW0iLCJzYXZlIiwicXVlcnkiLCJxdWVyeVR5cGUiLCJmaW5kQWxsIiwicGFy
c2VJbnQiLCJmaW5kIiwicmVtb3ZlQWxsIiwiZHJvcCIsInRvZG8iLCJTdG9yZSIsIm5hbWUiLCJf
ZGJOYW1lIiwibG9jYWxTdG9yYWdlIiwiSlNPTiIsInN0cmluZ2lmeSIsInBhcnNlIiwic3Vic2Ny
aWJlcnMiLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNfXyIsInN1YnNjcmli
ZSIsInN1YnNjcmliZXIiLCJfdGhpcyIsInB1c2giLCJfbm90aWZ5IiwicyIsImZpbHRlciIsInEi
LCJ1cGRhdGVEYXRhIiwibGVuZ3RoIiwia2V5IiwiRGF0ZSIsImdldFRpbWUiLCJUZW1wbGF0ZSIs
ImRlZmF1bHRUZW1wbGF0ZSIsImh0bWxFc2NhcGVzIiwiJiIsIjwiLCI+IiwiXCIiLCInIiwiYCIs
ImVzY2FwZUh0bWxDaGFyIiwiY2hyIiwicmVVbmVzY2FwZWRIdG1sIiwicmVIYXNVbmVzY2FwZWRI
dG1sIiwiUmVnRXhwIiwic291cmNlIiwiZXNjYXBlIiwic3RyaW5nIiwidGVzdCIsInJlcGxhY2Ui
LCJzaG93IiwibCIsInRlbXBsYXRlIiwiaXRlbUNvdW50ZXIiLCJhY3RpdmVUb2RvcyIsInBsdXJh
bCIsImNsZWFyQ29tcGxldGVkQnV0dG9uIiwiY29tcGxldGVkVG9kb3MiLCJUb2RvIiwiX19XRUJQ
QUNLX0lNUE9SVEVEX01PRFVMRV8zX19zdG9yZV9fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVM
RV8yX19tb2RlbF9fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X190ZW1wbGF0ZV9fIiwi
X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX192aWV3X18iLCJjb250cm9sbGVyIiwiX19XRUJQ
QUNLX0lNUE9SVEVEX01PRFVMRV8xX19jb250cm9sbGVyX18iLCJ1cGRhdGVUb2RvIiwibG9jYXRp
b24iLCJoYXNoIiwiX2NsYXNzQ2FsbENoZWNrIiwiaW5zdGFuY2UiLCJDb25zdHJ1Y3RvciIsIlR5
cGVFcnJvciIsIl9zZXRGaWx0ZXIiLCJjbGFzc05hbWUiLCJfZWxlbWVudENvbXBsZXRlIiwibGlz
dEl0ZW0iLCJfZWRpdEl0ZW0iLCJpbnB1dCIsImNyZWF0ZUVsZW1lbnQiLCJhcHBlbmRDaGlsZCIs
ImZvY3VzIiwidmFsdWUiLCJfaXRlbUlkIiwibGkiLCJkYXRhc2V0IiwiX2NyZWF0ZUNsYXNzIiwi
ZGVmaW5lUHJvcGVydGllcyIsInByb3BzIiwiZGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJjb25m
aWd1cmFibGUiLCJ3cml0YWJsZSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwicHJvdG9Qcm9w
cyIsInN0YXRpY1Byb3BzIiwiVmlldyIsIkVOVEVSX0tFWSIsIkVTQ0FQRV9LRVkiLCIkdG9kb0xp
c3QiLCIkdG9kb0l0ZW1Db3VudGVyIiwiJGNsZWFyQ29tcGxldGVkIiwiJG1haW4iLCIkZm9vdGVy
IiwiJHRvZ2dsZUFsbCIsIiRuZXdUb2RvIiwiZWxlbSIsInJlbW92ZUNoaWxkIiwiY29tcGxldGVk
Q291bnQiLCJpbm5lckhUTUwiLCJzdHlsZSIsImRpc3BsYXkiLCJsYWJlbCIsInRleHRDb250ZW50
Iiwidmlld0NtZCIsInBhcmFtZXRlciIsInZpZXdDb21tYW5kcyIsInNob3dFbnRyaWVzIiwiX3Jl
bW92ZUl0ZW0iLCJ1cGRhdGVFbGVtZW50Q291bnQiLCJfY2xlYXJDb21wbGV0ZWRCdXR0b24iLCJj
b250ZW50QmxvY2tWaXNpYmlsaXR5Iiwic2V0RmlsdGVyIiwiY2xlYXJOZXdUb2RvIiwiZWxlbWVu
dENvbXBsZXRlIiwiZWRpdEl0ZW1Eb25lIiwiX2VkaXRJdGVtRG9uZSIsImlzY2FuY2VsZWQiLCJr
ZXlDb2RlIiwiYmx1ciIsIl9iaW5kSXRlbUVkaXREb25lIiwiX2JpbmRJdGVtRWRpdENhbmNlbCIs
ImJvb3RzdHJhcCIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9faGVscGVyc19fIiwid2lu
ZG93IiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19hcHBfXyIsInJlYWR5U3RhdGUiXSwi
bWFwcGluZ3MiOiJBQUFBQSxjQUFjLEVBQUUsSUFFVixTQUFTQyxFQUFRQyxFQUFTQyxHQUVoQyxZ
Q0RBLFNBQVNDLEdBQUdDLEVBQVVDLEdBQ3BCLE9BQVFBLEdBQVNDLFVBQVVDLGNBQWNILEdBRzND
LFFBQVNJLEdBQUlKLEVBQVVDLEdBQ3JCLE9BQVFBLEdBQVNDLFVBQVVHLGlCQUFpQkwsR0FJOUMs
UUFBU00sR0FBSUMsRUFBUUMsRUFBTUMsRUFBVUMsR0FDbkNILEVBQU9JLGlCQUFpQkgsRUFBTUMs
SUFBWUMsR0FLNUMsUUFBU0UsR0FBVUwsRUFBUVAsRUFBVVEsRUFBTUssR0FLekMsUUFBU0MsR0FB
Y0MsR0FDckIsR0FBSUMsR0FBZ0JELEVBQU1SLE9BQ3RCVSxFQUFvQmIsRUFBSUosRUFBVU8sR0FD
bENXLEVBQVdDLE1BQU1DLFVBQVVDLFFBQVFDLEtBQUtMLEVBQW1CRCxJQUFrQixDQUU3RUUsSUFD
RkwsRUFBUVMsS0FBS04sRUFBZUQsR0FUaEMsR0FBSUwsR0FBc0IsU0FBVEYsR0FBNEIsVUFBVEEs
Q0FDcENGLEdBQUlDLEVBQVFDLEVBQU1NLEVBQWVKLEdBZW5DLFFBQVNhLEdBQVFDLEVBQVNDLEdB
Q3hCLEdBQUtELEVBQVFFLFdBR2IsTUFBSUYsR0FBUUUsV0FBV0QsUUFBUUUsZ0JBQWtCRixFQUFR
RSxjQUNoREgsRUFBUUUsV0FFVkgsRUFBUUMsRUFBUUUsV0FBWUQsR0FPckMsUUFBU0csR0FBT0Ms
RUFBT0MsR0FDckIsR0FBTUMsR0FBUUYsRUFBTVIsUUFBUVMsRUFDNUIsT0FBSUMsUUFDS0YsTUFF
VEEsR0FBTUcsT0FBT0QsRUFBTyxHRGpERGpDLEVBQW9CbUMsRUFBRXBDLEVBQVMsSUFBSyxXQUFh
LE1BQU9FLEtBQ3hERCxFQUFvQm1DLEVBQUVwQyxFQUFTLElBQUssV0FBYSxNQUFPTyxLQUN4RE4s
RUFBb0JtQyxFQUFFcEMsRUFBUyxJQUFLLFdBQWEsTUFBT1MsS0FDeERSLEVBQW9CbUMsRUFBRXBD
LEVBQVMsSUFBSyxXQUFhLE1BQU9lLEtBQ3hEZCxFQUFvQm1DLEVBQUVwQyxFQUFTLElBQUssV0FB
YSxNQUFPMEIsS0FDeER6QixFQUFvQm1DLEVBQUVwQyxFQUFTLElBQUssV0FBYSxNQUFPK0IsS0Np
RDdFTSxTQUFTZCxVQUFVZSxRQUFVaEIsTUFBTUMsVUFBVWUsU0RjdEMsQ0FFRCxTQUFTdkMsRUFB
UUMsRUFBU0MsR0FFaEMsWUV4RU8sU0FBU3NDLEtBQ2R0QyxFQUFBdUMsRUFBQUMsRUFBQSxLRndF
bUIsR0FBSUMsR0FBMER6QyxFQUFvQixHQUU5RTBDLEdBRGtFMUMsRUFBb0IyQyxFQUFFRixHQUMv
Q3pDLEVBQW9CLElBRzdEd0MsR0FGaUR4QyxFQUFvQjJDLEVBQUVELEdBQzlCMUMsRUFBb0IsR0FD
dkJBLEVBQW9CLEdBQzlERCxHQUFXLEVBQUl1QyxHQWE5QixTQUFTeEMsRUFBUUMsRUFBU0MsR0FF
aEMsWUczRkEsU0FBUzRDLEdBQVdDLEVBQU9DLEdBQ3pCLEdBQUlDLEdBQU9DLElBQ1hELEdBQUtG
LE1BQVFBLEVBQ2JFLEVBQUtELEtBQU9BLEVBRVpDLEVBQUtELEtBQUtHLEtBQUssVUFBVyxTQUFT
QyxHQUNqQ0gsRUFBS0ksUUFBUUQsS0FHZkgsRUFBS0QsS0FBS0csS0FBSyxXQUFZLFNBQVNHLEdB
Q2xDTCxFQUFLTSxTQUFTRCxFQUFLRSxNQUdyQlAsRUFBS0QsS0FBS0csS0FBSyxlQUFnQixTQUFT
RyxHQUN0Q0wsRUFBS1EsYUFBYUgsRUFBS0UsR0FBSUYsRUFBS0YsU0FHbENILEVBQUtELEtBQUtH
LEtBQUssaUJBQWtCLFNBQVNHLEdBQ3hDTCxFQUFLUyxlQUFlSixFQUFLRSxNQUczQlAsRUFBS0Qs
S0FBS0csS0FBSyxhQUFjLFNBQVNHLEdBQ3BDTCxFQUFLVSxXQUFXTCxFQUFLRSxNQUd2QlAsRUFB
S0QsS0FBS0csS0FBSyxhQUFjLFNBQVNHLEdBQ3BDTCxFQUFLVyxlQUFlTixFQUFLRSxHQUFJRixF
QUFLTyxhQUdwQ1osRUFBS0QsS0FBS0csS0FBSyxrQkFBbUIsV0FDaENGLEVBQUthLHlCQUdQYixF
QUFLRCxLQUFLRyxLQUFLLFlBQWEsU0FBU1ksR0FDbkNkLEVBQUtlLFVBQVVELEVBQU9GLGFBM0Mx
QjVELEVBQUEsRUFBZTZDLEVBb0RmQSxFQUFXdEIsVUFBVXlDLFFBQVUsU0FBU0MsR0FDdEMsR0FB
SUMsR0FBUUQsRUFBYUUsTUFBTSxLQUFLLEdBQ2hDQyxFQUFPRixHQUFTLEVBQ3BCakIsTUFBS29C
LG1CQUFtQkQsSUFPMUJ2QixFQUFXdEIsVUFBVStDLFFBQVUsV0FDN0IsR0FBSXRCLEdBQU9DLElB
Q1hELEdBQUtGLE1BQU15QixLQUFLLFNBQVNDLEdBQ3ZCeEIsRUFBS0QsS0FBSzBCLE9BQU8sY0FB
ZUQsTUFPcEMzQixFQUFXdEIsVUFBVW1ELFdBQWEsV0FDaEMsR0FBSTFCLEdBQU9DLElBQ1hELEdB
QUtGLE1BQU15QixNQUFNWCxXQUFXLEdBQVEsU0FBU1ksR0FDM0N4QixFQUFLRCxLQUFLMEIsT0FB
TyxjQUFlRCxNQU9wQzNCLEVBQVd0QixVQUFVb0QsY0FBZ0IsV0FDbkMsR0FBSTNCLEdBQU9DLElB
Q1hELEdBQUtGLE1BQU15QixNQUFNWCxXQUFXLEdBQU8sU0FBU1ksR0FDMUN4QixFQUFLRCxLQUFL
MEIsT0FBTyxjQUFlRCxNQVFwQzNCLEVBQVd0QixVQUFVNkIsUUFBVSxTQUFTRCxHQUN0QyxHQUFJ
SCxHQUFPQyxJQUVVLE1BQWpCRSxFQUFNeUIsUUFJVjVCLEVBQUtGLE1BQU0rQixPQUFPMUIsRUFB
TyxXQUN2QkgsRUFBS0QsS0FBSzBCLE9BQU8sZ0JBQ2pCekIsRUFBSzhCLFNBQVEsTUFPakJqQyxF
QUFXdEIsVUFBVStCLFNBQVcsU0FBU0MsR0FDdkMsR0FBSVAsR0FBT0MsSUFDWEQsR0FBS0YsTUFB
TXlCLEtBQUtoQixFQUFJLFNBQVNpQixHQUMzQnhCLEVBQUtELEtBQUswQixPQUFPLFlBQWFsQixL
QUFJSixNQUFPcUIsRUFBSyxHQUFHckIsV0FPckROLEVBQVd0QixVQUFVaUMsYUFBZSxTQUFTRCxF
QUFJSixHQUMvQyxHQUFJSCxHQUFPQyxJQUNQRSxHQUFNeUIsT0FDUjVCLEVBQUtGLE1BQU1pQyxP
QUFPeEIsR0FBS0osU0FBUSxXQUM3QkgsRUFBS0QsS0FBSzBCLE9BQU8sZ0JBQWlCbEIsS0FBSUos
WUFHeENILEVBQUtVLFdBQVdILElBT3BCVixFQUFXdEIsVUFBVWtDLGVBQWlCLFNBQVNGLEdBQzdD
LEdBQUlQLEdBQU9DLElBQ1hELEdBQUtGLE1BQU15QixLQUFLaEIsRUFBSSxTQUFTaUIsR0FDM0J4
QixFQUFLRCxLQUFLMEIsT0FBTyxnQkFBaUJsQixLQUFJSixNQUFPcUIsRUFBSyxHQUFHckIsV0FX
ekROLEVBQVd0QixVQUFVbUMsV0FBYSxTQUFTSCxHQUN6QyxHQUFJUCxHQUFPQyxJQUNYRCxHQUFL
RixNQUFNZixPQUFPd0IsRUFBSSxXQUNwQlAsRUFBS0QsS0FBSzBCLE9BQU8sYUFBY2xCLEtBR2pD
UCxFQUFLOEIsV0FNUGpDLEVBQVd0QixVQUFVc0MscUJBQXVCLFdBQzFDLEdBQUliLEdBQU9DLElB
Q1hELEdBQUtGLE1BQU15QixNQUFNWCxXQUFXLEdBQU8sU0FBU1ksR0FDMUNBLEVBQUtsQyxRQUFR
LFNBQVNlLEdBQ3BCTCxFQUFLVSxXQUFXTCxFQUFLRSxRQUl6QlAsRUFBSzhCLFdBWVBqQyxFQUFX
dEIsVUFBVW9DLGVBQWlCLFNBQVNKLEVBQUlLLEVBQVdvQixHQUM1RCxHQUFJaEMsR0FBT0MsSUFD
WEQsR0FBS0YsTUFBTWlDLE9BQU94QixHQUFLSyxhQUFZLFdBQ2pDWixFQUFLRCxLQUFLMEIsT0FB
TyxtQkFDZmxCLEtBQ0FLLGdCQUlDb0IsR0FDSGhDLEVBQUs4QixXQVFUakMsRUFBV3RCLFVBQVV3
QyxVQUFZLFNBQVNILEdBQ3hDLEdBQUlaLEdBQU9DLElBQ1hELEdBQUtGLE1BQU15QixNQUFNWCxX
QUFZQSxHQUFZLFNBQVNZLEdBQ2hEQSxFQUFLbEMsUUFBUSxTQUFTZSxHQUNwQkwsRUFBS1csZUFB
ZU4sRUFBS0UsR0FBSUssR0FBVyxPQUk1Q1osRUFBSzhCLFdBT1BqQyxFQUFXdEIsVUFBVTBELGFB
QWUsV0FDbEMsR0FBSWpDLEdBQU9DLElBQ1hELEdBQUtGLE1BQU1vQyxTQUFTLFNBQVNDLEdBQzNC
bkMsRUFBS0QsS0FBSzBCLE9BQU8scUJBQXNCVSxFQUFNQyxRQUM3Q3BDLEVBQUtELEtBQUswQixP
QUFPLHdCQUNmYixVQUFXdUIsRUFBTXZCLFVBQ2pCeUIsUUFBU0YsRUFBTXZCLFVBQVksSUFHN0Ja
LEVBQUtELEtBQUswQixPQUFPLGFBQWNhLFFBQVNILEVBQU12QixZQUFjdUIsRUFBTUksUUFDbEV2
QyxFQUFLRCxLQUFLMEIsT0FBTywwQkFBMkJZLFFBQVNGLEVBQU1JLE1BQVEsT0FRdkUxQyxFQUFX
dEIsVUFBVXVELFFBQVUsU0FBU1UsR0FDdEMsR0FBSUMsR0FBY3hDLEtBQUt5QyxhQUFhQyxPQUFP
LEdBQUdDLGNBQWdCM0MsS0FBS3lDLGFBQWFHLE9BQU8sRUFHdkY1QyxNQUFLZ0MsZ0JBS0RPLEdB
QW1DLFFBQTFCdkMsS0FBSzZDLGtCQUE4QjdDLEtBQUs2QyxtQkFBcUJMLElBQ3hFeEMsS0FBSyxP
QUFTd0MsS0FHaEJ4QyxLQUFLNkMsaUJBQW1CTCxHQU0xQjVDLEVBQVd0QixVQUFVOEMsbUJBQXFC
LFNBQVMwQixHQUdqREEsRUFBY0EsRUFBWTVCLE1BQU0sS0FBSyxHQUNyQ2xCLEtBQUt5QyxhQUFl
SyxFQUVBLEtBQWhCQSxJQUNGOUMsS0FBS3lDLGFBQWUsT0FHdEJ6QyxLQUFLNkIsVUFFTDdCLEtB
QUtGLEtBQUswQixPQUFPLFlBQWFzQixLSDBHMUIsU0FBU2hHLEVBQVFDLEVBQVNDLEdBRWhDLFlJ
eldBLFNBQVMrRixHQUFNQyxHQUNiaEQsS0FBS2dELFFBQVVBLEVKeVdqQixHQUFJQyxHQUE0Qixr
QkFBWEMsU0FBb0QsZ0JBQXBCQSxRQUFPQyxTQUF3QixTQUFVQyxHQUFPLGFBQWNBLElBQVMsU0FB
VUEsR0FBTyxNQUFPQSxJQUF5QixrQkFBWEYsU0FBeUJFLEVBQUlDLGNBQWdCSCxRQUFVRSxJQUFR
RixPQUFPNUUsVUFBWSxlQUFrQjhFLEdJbFh0UXJHLEdBQUEsRUFBZWdHLEVBa0JmQSxFQUFNekUs
VUFBVXNELE9BQVMsU0FBUzFCLEVBQU92QyxHQUN2Q3VDLEVBQVFBLEdBQVMsR0FDakJ2QyxFQUFX
QSxHQUFZLFlBR3ZCLElBQUkyRixJQUNGcEQsTUFBT0EsRUFBTXlCLE9BQ2JoQixXQUFXLEVBR2JY
LE1BQUtnRCxRQUFRTyxLQUFLRCxFQUFTM0YsSUFpQjdCb0YsRUFBTXpFLFVBQVVnRCxLQUFPLFNB
QVNrQyxFQUFPN0YsR0FDckMsR0FBSThGLEdBQUEsbUJBQW1CRCxHQUFuQixZQUFBUCxFQUFtQk8s
RUFJdkIsT0FIQTdGLEdBQVdBLEdBQVksYUFHTCxhQUFkOEYsR0FDRjlGLEVBQVc2RixFQUNKeEQs
S0FBS2dELFFBQVFVLFFBQVEvRixTQUNMLFdBQWQ4RixHQUF3QyxXQUFkQSxHQUNuQ0QsRUFBUUcs
U0FBU0gsRUFBTyxJQUN4QnhELEtBQUtnRCxRQUFRWSxNQUFNdEQsR0FBSWtELEdBQVE3RixJQUUv
QnFDLEtBQUtnRCxRQUFRWSxLQUFLSixFQUFPN0YsS0FhN0JvRixFQUFNekUsVUFBVXdELE9BQVMs
U0FBU3hCLEVBQUlpQixFQUFNNUQsR0FDMUNxQyxLQUFLZ0QsUUFBUU8sS0FBS2hDLEVBQU01RCxF
QUFVMkMsSUFTcEN5QyxFQUFNekUsVUFBVVEsT0FBUyxTQUFTd0IsRUFBSTNDLEdBQ3BDcUMsS0FB
S2dELFFBQVFsRSxPQUFPd0IsRUFBSTNDLElBUTFCb0YsRUFBTXpFLFVBQVV1RixVQUFZLFNBQVNs
RyxHQUNuQ3FDLEtBQUtnRCxRQUFRYyxLQUFLbkcsSUFNcEJvRixFQUFNekUsVUFBVTJELFNBQVcs
U0FBU3RFLEdBQ2xDLEdBQUl1RSxJQUNGQyxPQUFRLEVBQ1J4QixVQUFXLEVBQ1gyQixNQUFPLEVB
R1R0QyxNQUFLZ0QsUUFBUVUsUUFBUSxTQUFTbkMsR0FDNUJBLEVBQUtsQyxRQUFRLFNBQVMwRSxH
QUNoQkEsRUFBS3BELFVBQ1B1QixFQUFNdkIsWUFFTnVCLEVBQU1DLFNBR1JELEVBQU1JLFVBRVIz
RSxFQUFTdUUsT0p3WFAsU0FBU3BGLEVBQVFDLEVBQVNDLEdBRWhDLFlLaGVBLFNBQVNnSCxHQUFN
QyxFQUFNdEcsR0FNbkIsR0FMQUEsRUFBV0EsR0FBWSxhQUd2QnFDLEtBQUtrRSxRQUFVRCxHQUVW
RSxhQUFhRixHQUFPLENBQ3ZCLEdBQUkxQyxJQUNGVyxTQUdGaUMsY0FBYUYsR0FBUUcsS0FBS0Ms
VUFBVTlDLEdBR3RDNUQsRUFBU2EsS0FBS3dCLEtBQU1vRSxLQUFLRSxNQUFNSCxhQUFhRixLQUM1
Q2pFLEtBQUt1RSxlTGtkYyxHQUFJQyxHQUF5Q3hILEVBQW9CLEVLM2V0RkQsR0FBQSxFQUFlaUgs
RUE0QmZBLEVBQU0xRixVQUFVbUcsVUFBWSxTQUFTQyxHQUFZLEdBQUFDLEdBQUEzRSxJQUUvQyxP
QURBQSxNQUFLdUUsWUFBWUssS0FBS0YsR0FDZixpQkFBTTFILEdBQUF1QyxFQUFBaUYsRUFBQSxH
QUFPRyxFQUFLSixZQUFhRyxLQUd4Q1YsRUFBTTFGLFVBQVV1RyxRQUFVLFdBQ3hCN0UsS0FBS3VF
LFlBQVlsRixRQUFRLFNBQUF5RixHQUFBLE1BQUtBLFFBZ0JoQ2QsRUFBTTFGLFVBQVVzRixLQUFP
LFNBQVNKLEVBQU83RixHQUNyQyxHQUFLQSxFQUFMLENBSUEsR0FBSXVFLEdBQVFrQyxLQUFLRSxN
QUFNSCxhQUFhbkUsS0FBS2tFLFVBQVVoQyxLQUVuRHZFLEdBQVNhLEtBQUt3QixLQUFNa0MsRUFB
TTZDLE9BQU8sU0FBU2hCLEdBQ3hDLElBQUssR0FBSWlCLEtBQUt4QixHQUNaLEdBQUlBLEVBQU13
QixLQUFPakIsRUFBS2lCLEdBQ3BCLE9BQU8sQ0FHWCxRQUFPLE9BU1hoQixFQUFNMUYsVUFBVW9G
LFFBQVUsU0FBUy9GLEdBQ2pDQSxFQUFXQSxHQUFZLGFBRXZCQSxFQUFTYSxLQUFLd0IsS0FBTW9F
LEtBQUtFLE1BQU1ILGFBQWFuRSxLQUFLa0UsVUFBVWhDLFFBVzdEOEIsRUFBTTFGLFVBQVVpRixL
QUFPLFNBQVMwQixFQUFZdEgsRUFBVTJDLEdBQ3BELEdBQUlpQixHQUFPNkMsS0FBS0UsTUFBTUgs
YUFBYW5FLEtBQUtrRSxVQUNwQ2hDLEVBQVFYLEVBQUtXLEtBTWpCLElBSkF2RSxFQUFXQSxHQUFZ
LGFBSW5CMkMsRUFBSSxDQUNOLElBQUssR0FBSWYsR0FBSSxFQUFHQSxFQUFJMkMsRUFBTWdELE9B
QVEzRixJQUNoQyxHQUFJMkMsRUFBTTNDLEdBQUdlLEtBQU9BLEVBQUksQ0FDdEIsSUFBSyxHQUFJ
NkUsS0FBT0YsR0FDZC9DLEVBQU0zQyxHQUFHNEYsR0FBT0YsRUFBV0UsRUFFN0IsT0FJSmhCLGFB
QWFuRSxLQUFLa0UsU0FBV0UsS0FBS0MsVUFBVTlDLEdBQzVDNUQsRUFBU2EsS0FBS3dCLEtBQU1v
RSxLQUFLRSxNQUFNSCxhQUFhbkUsS0FBS2tFLFVBQVVoQyxXQUczRCtDLEdBQVczRSxJQUFLLEdB
QUk4RSxPQUFPQyxVQUUzQm5ELEVBQU0wQyxLQUFLSyxHQUNYZCxhQUFhbkUsS0FBS2tFLFNBQVdF
LEtBQUtDLFVBQVU5QyxHQUM1QzVELEVBQVNhLEtBQUt3QixNQUFPaUYsR0FFdkJqRixNQUFLNkUs
V0FTUGIsRUFBTTFGLFVBQVVRLE9BQVMsU0FBU3dCLEVBQUkzQyxHQUlwQyxJQUFLLEdBSEQ0RCxH
QUFPNkMsS0FBS0UsTUFBTUgsYUFBYW5FLEtBQUtrRSxVQUNwQ2hDLEVBQVFYLEVBQUtXLE1BRVIz
QyxFQUFJLEVBQUdBLEVBQUkyQyxFQUFNZ0QsT0FBUTNGLElBQ2hDLEdBQUkyQyxFQUFNM0MsR0FB
R2UsS0FBT0EsRUFBSSxDQUN0QjRCLEVBQU1oRCxPQUFPSyxFQUFHLEVBQ2hCLE9BSUo0RSxhQUFh
bkUsS0FBS2tFLFNBQVdFLEtBQUtDLFVBQVU5QyxHQUM1QzVELEVBQVNhLEtBQUt3QixLQUFNb0Us
S0FBS0UsTUFBTUgsYUFBYW5FLEtBQUtrRSxVQUFVaEMsT0FDM0RsQyxLQUFLNkUsV0FRUGIsRUFB
TTFGLFVBQVV3RixLQUFPLFNBQVNuRyxHQUM5QndHLGFBQWFuRSxLQUFLa0UsU0FBV0UsS0FBS0Ms
V0FBV25DLFdBQzdDdkUsRUFBU2EsS0FBS3dCLEtBQU1vRSxLQUFLRSxNQUFNSCxhQUFhbkUsS0FB
S2tFLFVBQVVoQyxPQUMzRGxDLEtBQUs2RSxZTHNmRCxTQUFTL0gsRUFBUUMsRUFBU0MsR0FFaEMs
WU03bUJBLFNBQVNzSSxLQUNQdEYsS0FBS3VGLGdCQUFMLHNQQWhDRnhJLEVBQUEsRUFBZXVJLENB
RWYsSUFBSUUsSUFDRkMsSUFBSyxRQUNMQyxJQUFLLE9BQ0xDLElBQUssT0FDTEMsSUFBSyxTQUNM
QyxJQUFNLFNBQ05DLElBQUssVUFHSEMsRUFBaUIsU0FBU0MsR0FDNUIsTUFBT1IsR0FBWVEsSUFH
akJDLEVBQWtCLFlBQ2xCQyxFQUFxQixHQUFJQyxRQUFPRixFQUFnQkcsUUFFaERDLEVBQVMsU0FB
U0MsR0FDcEIsTUFBSUEsSUFBVUosRUFBbUJLLEtBQUtELEdBQzdCQSxFQUFPRSxRQUFRUCxFQUFp
QkYsR0FFaENPLEVBc0NYaEIsR0FBU2hILFVBQVVtSSxLQUFPLFNBQVNsRixHQUNqQyxHQUFJaEMs
R0FBR21ILEVBQ0g1RyxFQUFPLEVBRVgsS0FBS1AsRUFBSSxFQUFHbUgsRUFBSW5GLEVBQUsyRCxP
QUFRM0YsRUFBSW1ILEVBQUduSCxJQUFLLENBQ3ZDLEdBQUlvSCxHQUFXM0csS0FBS3VGLGdCQUNo
QjVFLEVBQVksR0FDWjBCLEVBQVUsRUFFVmQsR0FBS2hDLEdBQUdvQixZQUNWQSxFQUFZLFlBQ1ow
QixFQUFVLFdBR1pzRSxFQUFXQSxFQUFTSCxRQUFRLFNBQVVqRixFQUFLaEMsR0FBR2UsSUFDOUNx
RyxFQUFXQSxFQUFTSCxRQUFRLFlBQWFILEVBQU85RSxFQUFLaEMsR0FBR1csUUFDeER5RyxFQUFX
QSxFQUFTSCxRQUFRLGdCQUFpQjdGLEdBQzdDZ0csRUFBV0EsRUFBU0gsUUFBUSxjQUFlbkUsR0FF
M0N2QyxHQUFjNkcsRUFHaEIsTUFBTzdHLElBU1R3RixFQUFTaEgsVUFBVXNJLFlBQWMsU0FBU0Ms
R0FDeEMsR0FBSUMsR0FBeUIsSUFBaEJELEVBQW9CLEdBQUssR0FFdEMsT0FBTyxXQUFhQSxFQUFj
LGlCQUFtQkMsRUFBUyxTQVNoRXhCLEVBQVNoSCxVQUFVeUkscUJBQXVCLFNBQVNDLEdBQ2pELE1B
QUlBLEdBQWlCLEVBQ1osa0JBRUEsS04yb0JMLFNBQVNsSyxFQUFRQyxFQUFTQyxHQUVoQyxZT3Z1
QkEsU0FBU2lLLEdBQUtoRCxHQUNaakUsS0FBS2dELFFBQVUsR0FBSWtFLEdBQUEsRUFBTWpELEdB
Q3pCakUsS0FBS0gsTUFBUSxHQUFJc0gsR0FBQSxFQUFNbkgsS0FBS2dELFNBQzVCaEQsS0FBSzJH
LFNBQVcsR0FBSVMsR0FBQSxFQUNwQnBILEtBQUtGLEtBQU8sR0FBSXVILEdBQUEsRUFBS3JILEtB
QUsyRyxVQUMxQjNHLEtBQUtzSCxXQUFhLEdBQUlDLEdBQUEsRUFBV3ZILEtBQUtILE1BQU9HLEtB
QUtGLE1BR3BELFFBQVMwSCxLQUNQekQsRUFBTyxHQUFJa0QsR0FBSyxtQkFDaEJsRCxFQUFLdUQs
V0FBV3ZHLFFBQVEzRCxTQUFTcUssU0FBU0MsTUFDMUNuRCxFQUFZbEYsUUFBUSxTQUFBeUYsR0FB
QSxNQUFLQSxPUDZ0Qk4sR0FBSXVDLEdBQXNDckssRUFBb0IsR0FDMUR1SyxFQUE0Q3ZLLEVBQW9C
LEdBQ2hFbUssRUFBdUNuSyxFQUFvQixHQUMzRGtLLEVBQXVDbEssRUFBb0IsR0FDM0RvSyxFQUEw
Q3BLLEVBQW9CLEVBQ3JCQSxHQUFvQixFQUVqRUEsR0FBb0JtQyxFQUFFcEMsRUFBUyxJQUFLLFdB
QWEsTUFBT3lLLElPdnZCN0UsSUFBSXpELFVBQ0VRLE1Qb3lCQSxTQUFTekgsRUFBUUMsRUFBU0Ms
R0FFaEMsWUFJQSxTQUFTMkssR0FBZ0JDLEVBQVVDLEdBQWUsS0FBTUQsWUFBb0JDLElBQWdCLEtB
QU0sSUFBSUMsV0FBVSxxQ1Fyb0JoSCxRQUFTQyxHQUFXakYsR0FDbEI5RixFQUFBdUMsRUFBQWlG
LEVBQUEsR0FBRyxzQkFBc0J3RCxVQUFZLEdBQ3JDaEwsRUFBQXVDLEVBQUFpRixFQUFBLEdBQUcs
cUJBQXVCMUIsRUFBYyxNQUFNa0YsVUFBWSxXQUc1RCxRQUFTQyxHQUFpQjNILEVBQUlLLEdBQzVC
LEdBQUl1SCxHQUFXbEwsRUFBQXVDLEVBQUFpRixFQUFBLEdBQUcsYUFBZWxFLEVBQUssS0FFakM0
SCxLQUlMQSxFQUFTRixVQUFZckgsRUFBWSxZQUFjLEdBRy9DM0QsRUFBQXVDLEVBQUFpRixFQUFB
LEdBQUcsUUFBUzBELEdBQVU3RixRQUFVMUIsR0FHbEMsUUFBU3dILEdBQVU3SCxFQUFJSixHQUNy
QixHQUFJZ0ksR0FBV2xMLEVBQUF1QyxFQUFBaUYsRUFBQSxHQUFHLGFBQWVsRSxFQUFLLEtBRXRD
LElBQUs0SCxFQUFMLENBSUFBLEVBQVNGLFVBQVlFLEVBQVNGLFVBQVksVUFFMUMsSUFBSUksR0FB
UWhMLFNBQVNpTCxjQUFjLFFBQ25DRCxHQUFNSixVQUFZLE9BRWxCRSxFQUFTSSxZQUFZRixHQUNy
QkEsRUFBTUcsUUFDTkgsRUFBTUksTUFBUXRJLEdBR2hCLFFBQVN1SSxHQUFRL0osR0FDZixHQUFJ
Z0ssR0FBSzFMLEVBQUF1QyxFQUFBaUYsRUFBQSxHQUFROUYsRUFBUyxLQUMxQixPQUFPaUYsVUFB
UytFLEVBQUdDLFFBQVFySSxHQUFJLElSNmxCWixHQUFJa0UsR0FBeUN4SCxFQUFvQixHQUNsRjRM
LEVBQWUsV0FBYyxRQUFTQyxHQUFpQnBMLEVBQVFxTCxHQUFTLElBQUssR0FBSXZKLEdBQUksRUFB
R0EsRUFBSXVKLEVBQU01RCxPQUFRM0YsSUFBSyxDQUFFLEdBQUl3SixHQUFhRCxFQUFNdkosRUFB
SXdKLEdBQVdDLFdBQWFELEVBQVdDLGFBQWMsRUFBT0QsRUFBV0UsY0FBZSxFQUFVLFNBQVdGLEtB
QVlBLEVBQVdHLFVBQVcsR0FBTUMsT0FBT0MsZUFBZTNMLEVBQVFzTCxFQUFXNUQsSUFBSzRELElB
QWlCLE1BQU8sVUFBVWxCLEVBQWF3QixFQUFZQyxHQUFpSixNQUE5SEQsSUFBWVIsRUFBaUJoQixF
QUFZdkosVUFBVytLLEdBQWlCQyxHQUFhVCxFQUFpQmhCLEVBQWF5QixHQUFxQnpCLE1RdHlCM2dC
MEIsRVJ1ekJWLFdRdHpCVCxRQUFBQSxHQUFZNUMsR0FBVWdCLEVBQUEzSCxLQUFBdUosR0FDcEJ2
SixLQUFLMkcsU0FBV0EsRUFFaEIzRyxLQUFLd0osVUFBWSxHQUNqQnhKLEtBQUt5SixXQUFhLEdB
RWxCekosS0FBSzBKLFVBQVkxTSxFQUFBdUMsRUFBQWlGLEVBQUEsR0FBRyxjQUNwQnhFLEtBQUsy
SixpQkFBbUIzTSxFQUFBdUMsRUFBQWlGLEVBQUEsR0FBRyxlQUMzQnhFLEtBQUs0SixnQkFBa0I1
TSxFQUFBdUMsRUFBQWlGLEVBQUEsR0FBRyxvQkFDMUJ4RSxLQUFLNkosTUFBUTdNLEVBQUF1QyxF
QUFBaUYsRUFBQSxHQUFHLFNBQ2hCeEUsS0FBSzhKLFFBQVU5TSxFQUFBdUMsRUFBQWlGLEVBQUEs
R0FBRyxXQUNsQnhFLEtBQUsrSixXQUFhL00sRUFBQXVDLEVBQUFpRixFQUFBLEdBQUcsZUFDckJ4
RSxLQUFLZ0ssU0FBV2hOLEVBQUF1QyxFQUFBaUYsRUFBQSxHQUFHLGFSZzlCckIsTUFwSkFvRSxH
QUFhVyxJQUNYcEUsSUFBSyxjQUNMcUQsTUFBTyxTUTN6QkdsSSxHQUNWLEdBQUkySixHQUFPak4s
RUFBQXVDLEVBQUFpRixFQUFBLEdBQUcsYUFBZWxFLEVBQUssS0FFOUIySixJQUNGakssS0FBSzBK
LFVBQVVRLFlBQVlELE1SK3pCN0I5RSxJQUFLLHdCQUNMcUQsTUFBTyxTUTV6QmEyQixFQUFnQi9I
LEdBQ3BDcEMsS0FBSzRKLGdCQUFnQlEsVUFBWXBLLEtBQUsyRyxTQUFTSSxxQkFBcUJvRCxHQUNw
RW5LLEtBQUs0SixnQkFBZ0JTLE1BQU1DLFFBQVVsSSxFQUFVLFFBQVUsVVIrekJ6RCtDLElBQUss
Z0JBQ0xxRCxNQUFPLFNRN3pCS2xJLEVBQUlKLEdBQ2hCLEdBQUlnSSxHQUFXbEwsRUFBQXVDLEVB
QUFpRixFQUFBLEdBQUcsYUFBZWxFLEVBQUssS0FFdEMsSUFBSzRILEVBQUwsQ0FJQSxHQUFJRSxH
QUFRcEwsRUFBQXVDLEVBQUFpRixFQUFBLEdBQUcsYUFBYzBELEVBQzdCQSxHQUFTZ0MsWUFBWTlC
LEdBRXJCRixFQUFTRixVQUFZRSxFQUFTRixVQUFVeEIsUUFBUSxVQUFXLElBRTNEeEosRUFBQXVD
LEVBQUFpRixFQUFBLEdBQUksUUFBUzBELEdBQVU3SSxRQUFRLFNBQVNrTCxHQUN0Q0EsRUFBTUMs
WUFBY3RLLFFSaTBCdEJpRixJQUFLLFNBQ0xxRCxNQUFPLFNROXpCRmlDLEVBQVNDLEdBQ2QsR0FB
STNLLEdBQU9DLEtBQ1AySyxHQUNGQyxZQUFhLFdBQ1g3SyxFQUFLMkosVUFBVVUsVUFBWXJLLEVB
QUs0RyxTQUFTRixLQUFLaUUsSUFFaERqSyxXQUFZLFdBQ1ZWLEVBQUs4SyxZQUFZSCxJQUVuQkks
bUJBQW9CLFdBQ2xCL0ssRUFBSzRKLGlCQUFpQlMsVUFBWXJLLEVBQUs0RyxTQUFTQyxZQUFZOEQs
SUFFOUQzRCxxQkFBc0IsV0FDcEJoSCxFQUFLZ0wsc0JBQXNCTCxFQUFVL0osVUFBVytKLEVBQVV0
SSxVQUU1RDRJLHVCQUF3QixXQUN0QmpMLEVBQUs4SixNQUFNUSxNQUFNQyxRQUFVdkssRUFBSytK
LFFBQVFPLE1BQU1DLFFBQVVJLEVBQVV0SSxRQUFVLFFBQVUsUUFFeEZ0QixVQUFXLFdBQ1RmLEVB
QUtnSyxXQUFXMUgsUUFBVXFJLEVBQVVySSxTQUV0QzRJLFVBQVcsV0FDVGxELEVBQVcyQyxJQUVi
USxhQUFjLFdBQ1puTCxFQUFLaUssU0FBU3hCLE1BQVEsSUFFeEIyQyxnQkFBaUIsV0FDZmxELEVB
QWlCeUMsRUFBVXBLLEdBQUlvSyxFQUFVL0osWUFFM0NOLFNBQVUsV0FDUjhILEVBQVV1QyxFQUFV
cEssR0FBSW9LLEVBQVV4SyxRQUVwQ2tMLGFBQWMsV0FDWnJMLEVBQUtzTCxjQUFjWCxFQUFVcEss
R0FBSW9LLEVBQVV4SyxRQUkvQ3lLLEdBQWFGLFFSaTBCYnRGLElBQUssb0JBQ0xxRCxNQUFPLFNR
L3pCU3pLLEdBQ2hCLEdBQUlnQyxHQUFPQyxJQUNYaEQsR0FBQXVDLEVBQUFpRixFQUFBLEdBQVV6
RSxFQUFLMkosVUFBVyxXQUFZLE9BQVEsV0FDdkMxSixLQUFLMkksUUFBUTJDLFlBQ2hCdk4sR0FD
RXVDLEdBQUltSSxFQUFRekksTUFDWkUsTUFBT0YsS0FBS3dJLFVBS2xCeEwsRUFBQXVDLEVBQUFp
RixFQUFBLEdBQVV6RSxFQUFLMkosVUFBVyxXQUFZLFdBQVksU0FBU3pMLEdBQ3JEQSxFQUFNc04s
VUFBWXhMLEVBQUt5SixXQUd6QnhKLEtBQUt3TCxZUm8wQlRyRyxJQUFLLHNCQUNMcUQsTUFBTyxT
UWgwQld6SyxHQUNsQixHQUFJZ0MsR0FBT0MsSUFDWGhELEdBQUF1QyxFQUFBaUYsRUFBQSxHQUFV
ekUsRUFBSzJKLFVBQVcsV0FBWSxRQUFTLFNBQVN6TCxHQUNsREEsRUFBTXNOLFVBQVl4TCxFQUFL
MEosYUFDekJ6SixLQUFLMkksUUFBUTJDLFlBQWEsRUFDMUJ0TCxLQUFLd0wsT0FFTHpOLEdBQVN1
QyxHQUFJbUksRUFBUXpJLGNScTBCekJtRixJQUFLLE9BQ0xxRCxNQUFPLFNRajBCSnZLLEVBQU9G
LEdBQ1YsR0FBSWdDLEdBQU9DLElBQ0csYUFBVi9CLEVBQ0ZqQixFQUFBdUMsRUFBQWlGLEVBQUEs
R0FBSXpFLEVBQUtpSyxTQUFVLFNBQVUsV0FDM0JqTSxFQUFRZ0MsRUFBS2lLLFNBQVN4QixTQUdM
LG9CQUFWdkssRUFDVGpCLEVBQUF1QyxFQUFBaUYsRUFBQSxHQUFJekUsRUFBSzZKLGdCQUFpQixR
QUFTLFdBQ2pDN0wsTUFHaUIsY0FBVkUsRUFDVGpCLEVBQUF1QyxFQUFBaUYsRUFBQSxHQUFJekUs
RUFBS2dLLFdBQVksUUFBUyxXQUM1QmhNLEdBQVM0QyxVQUFXWCxLQUFLcUMsWUFHUixhQUFWcEUs
RUFDVGpCLEVBQUF1QyxFQUFBaUYsRUFBQSxHQUFVekUsRUFBSzJKLFVBQVcsV0FBWSxXQUFZLFdB
Q2hEM0wsR0FBU3VDLEdBQUltSSxFQUFRekksVUFHSixlQUFWL0IsRUFDVGpCLEVBQUF1QyxFQUFB
aUYsRUFBQSxHQUFVekUsRUFBSzJKLFVBQVcsV0FBWSxRQUFTLFdBQzdDM0wsR0FBU3VDLEdBQUlt
SSxFQUFRekksVUFHSixlQUFWL0IsRUFDVGpCLEVBQUF1QyxFQUFBaUYsRUFBQSxHQUFVekUsRUFB
SzJKLFVBQVcsVUFBVyxRQUFTLFdBQzVDM0wsR0FDRXVDLEdBQUltSSxFQUFRekksTUFDWlcsVUFB
V1gsS0FBS3FDLFlBSUQsaUJBQVZwRSxFQUNUOEIsRUFBSzBMLGtCQUFrQjFOLEdBRUosbUJBQVZF
LEdBQ1Q4QixFQUFLMkwsb0JBQW9CM04sT1IrekJ0QndMLElBR29CeE0sR0FBVyxFUWgrQm5Cd00s
R1I2Z0NmLFNBQVN6TSxFQUFRQyxLQU1qQixTQUFTRCxFQUFRQyxFQUFTQyxHQUVoQyxZUzlnQ0Es
U0FBUzJPLEtBQ1AzTyxFQUFBdUMsRUFBQXFNLEVBQUEsR0FBSUMsT0FBUSxPQUFRQyxFQUFBLEdB
Q3BCOU8sRUFBQXVDLEVBQUFxTSxFQUFBLEdBQUlDLE9BQVEsYUFBY0MsRUFBQSxHVDZnQ1AsR0FB
SUEsR0FBcUM5TyxFQUFvQixHU2xpQ2xGNE8sRUFBQTVPLEVBQUEsRUFNMEMsY0FBeEJJLFNBQVMy
TyxVQVV6QkosUVQ0aUNDIiwiZmlsZSI6ImJ1bmRsZS5hcHAuNDIxZWI2YmFjYTAyMjE4ZTk4NWUu
anMiLCJzb3VyY2VzQ29udGVudCI6WyJ3ZWJwYWNrSnNvbnAoWzAsMl0sW1xuLyogMCAqL1xuLyoq
Ki8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwi
dXNlIHN0cmljdFwiO1xuXG4vKiBoYXJtb255IGV4cG9ydCAqLyBfX3dlYnBhY2tfcmVxdWlyZV9f
LmQoZXhwb3J0cywgXCJhXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gcXM7IH0pO1xuLyogaGFybW9u
eSBleHBvcnQgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKGV4cG9ydHMsIFwiYlwiLCBmdW5jdGlv
bigpIHsgcmV0dXJuIHFzYTsgfSk7XG4vKiBoYXJtb255IGV4cG9ydCAqLyBfX3dlYnBhY2tfcmVx
dWlyZV9fLmQoZXhwb3J0cywgXCJkXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gJG9uOyB9KTtcbi8q
IGhhcm1vbnkgZXhwb3J0ICovIF9fd2VicGFja19yZXF1aXJlX18uZChleHBvcnRzLCBcImNcIiwg
ZnVuY3Rpb24oKSB7IHJldHVybiAkZGVsZWdhdGU7IH0pO1xuLyogaGFybW9ueSBleHBvcnQgKi8g
X193ZWJwYWNrX3JlcXVpcmVfXy5kKGV4cG9ydHMsIFwiZVwiLCBmdW5jdGlvbigpIHsgcmV0dXJu
ICRwYXJlbnQ7IH0pO1xuLyogaGFybW9ueSBleHBvcnQgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5k
KGV4cG9ydHMsIFwiZlwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIHJlbW92ZTsgfSk7XG5cbi8vIEdl
dCBlbGVtZW50KHMpIGJ5IENTUyBzZWxlY3RvcjpcbmZ1bmN0aW9uIHFzKHNlbGVjdG9yLCBzY29w
ZSkge1xuICByZXR1cm4gKHNjb3BlIHx8IGRvY3VtZW50KS5xdWVyeVNlbGVjdG9yKHNlbGVjdG9y
KTtcbn1cblxuZnVuY3Rpb24gcXNhKHNlbGVjdG9yLCBzY29wZSkge1xuICByZXR1cm4gKHNjb3Bl
IHx8IGRvY3VtZW50KS5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKTtcbn1cblxuLy8gYWRkRXZl
bnRMaXN0ZW5lciB3cmFwcGVyOlxuZnVuY3Rpb24gJG9uKHRhcmdldCwgdHlwZSwgY2FsbGJhY2ss
IHVzZUNhcHR1cmUpIHtcbiAgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIodHlwZSwgY2FsbGJhY2ss
ICEhdXNlQ2FwdHVyZSk7XG59XG5cbi8vIEF0dGFjaCBhIGhhbmRsZXIgdG8gZXZlbnQgZm9yIGFs
bCBlbGVtZW50cyB0aGF0IG1hdGNoIHRoZSBzZWxlY3Rvcixcbi8vIG5vdyBvciBpbiB0aGUgZnV0
dXJlLCBiYXNlZCBvbiBhIHJvb3QgZWxlbWVudFxuZnVuY3Rpb24gJGRlbGVnYXRlKHRhcmdldCwg
c2VsZWN0b3IsIHR5cGUsIGhhbmRsZXIpIHtcbiAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxs
YS5vcmcvZW4tVVMvZG9jcy9XZWIvRXZlbnRzL2JsdXJcbiAgdmFyIHVzZUNhcHR1cmUgPSB0eXBl
ID09PSAnYmx1cicgfHwgdHlwZSA9PT0gJ2ZvY3VzJztcbiAgJG9uKHRhcmdldCwgdHlwZSwgZGlz
cGF0Y2hFdmVudCwgdXNlQ2FwdHVyZSk7XG5cbiAgZnVuY3Rpb24gZGlzcGF0Y2hFdmVudChldmVu
dCkge1xuICAgIHZhciB0YXJnZXRFbGVtZW50ID0gZXZlbnQudGFyZ2V0O1xuICAgIHZhciBwb3Rl
bnRpYWxFbGVtZW50cyA9IHFzYShzZWxlY3RvciwgdGFyZ2V0KTtcbiAgICB2YXIgaGFzTWF0Y2gg
PSBBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKHBvdGVudGlhbEVsZW1lbnRzLCB0YXJnZXRF
bGVtZW50KSA+PSAwO1xuXG4gICAgaWYgKGhhc01hdGNoKSB7XG4gICAgICBoYW5kbGVyLmNhbGwo
dGFyZ2V0RWxlbWVudCwgZXZlbnQpO1xuICAgIH1cbiAgfVxufVxuXG4vLyBGaW5kIHRoZSBlbGVt
ZW50J3MgcGFyZW50IHdpdGggdGhlIGdpdmVuIHRhZyBuYW1lOlxuLy8gJHBhcmVudChxcygnYScp
LCAnZGl2Jyk7XG5mdW5jdGlvbiAkcGFyZW50KGVsZW1lbnQsIHRhZ05hbWUpIHtcbiAgaWYgKCFl
bGVtZW50LnBhcmVudE5vZGUpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGlmIChl
bGVtZW50LnBhcmVudE5vZGUudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSB0YWdOYW1lLnRvTG93
ZXJDYXNlKCkpIHtcbiAgICByZXR1cm4gZWxlbWVudC5wYXJlbnROb2RlO1xuICB9XG4gIHJldHVy
biAkcGFyZW50KGVsZW1lbnQucGFyZW50Tm9kZSwgdGFnTmFtZSk7XG59XG5cbi8vIHJlbW92ZXMg
YW4gZWxlbWVudCBmcm9tIGFuIGFycmF5XG4vLyBjb25zdCB4ID0gWzEsMiwzXVxuLy8gcmVtb3Zl
KHgsIDIpXG4vLyB4IH49PSBbMSwzXVxuZnVuY3Rpb24gcmVtb3ZlKGFycmF5LCB0aGluZykge1xu
ICB2YXIgaW5kZXggPSBhcnJheS5pbmRleE9mKHRoaW5nKTtcbiAgaWYgKGluZGV4ID09PSAtMSkg
e1xuICAgIHJldHVybiBhcnJheTtcbiAgfVxuICBhcnJheS5zcGxpY2UoaW5kZXgsIDEpO1xufVxu
XG4vLyBBbGxvdyBmb3IgbG9vcGluZyBvbiBub2RlcyBieSBjaGFpbmluZzpcbi8vIHFzYSgnLmZv
bycpLmZvckVhY2goZnVuY3Rpb24gKCkge30pXG5Ob2RlTGlzdC5wcm90b3R5cGUuZm9yRWFjaCA9
IEFycmF5LnByb3RvdHlwZS5mb3JFYWNoO1xuXG4vKioqLyB9LFxuLyogMSAqLyxcbi8qIDIgKi9c
bi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xu
XG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1Q
T1JURURfTU9EVUxFXzBfdG9kb212Y19hcHBfY3NzX2luZGV4X2Nzc19fID0gX193ZWJwYWNrX3Jl
cXVpcmVfXygxKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURf
TU9EVUxFXzBfdG9kb212Y19hcHBfY3NzX2luZGV4X2Nzc19fX2RlZmF1bHQgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fLm4oX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3RvZG9tdmNfYXBwX2Nzc19p
bmRleF9jc3NfXyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVE
X01PRFVMRV8xX19hcHBfY3NzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkpO1xuLyogaGFybW9u
eSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fYXBwX2Nzc19fX2Rl
ZmF1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLm4oX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8x
X19hcHBfY3NzX18pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRF
RF9NT0RVTEVfMl9faGVscGVyc19fID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcbi8qIGhhcm1v
bnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX3RvZG9fXyA9IF9f
d2VicGFja19yZXF1aXJlX18oNyk7XG4vKiBoYXJtb255IGV4cG9ydCAqLyBleHBvcnRzW1wiYVwi
XSA9IG9uTG9hZDtcblxuXG5cblxuXG5mdW5jdGlvbiBvbkxvYWQoKSB7XG4gIC8vIGVzbGludC1k
aXNhYmxlLWxpbmUgaW1wb3J0L3ByZWZlci1kZWZhdWx0LWV4cG9ydFxuICBfX3dlYnBhY2tfcmVx
dWlyZV9fLmkoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX190b2RvX19bXCJhXCIgLyogdXBk
YXRlVG9kbyAqL10pKCk7XG59XG5cbi8qKiovIH0sXG4vKiAzICovXG4vKioqLyBmdW5jdGlvbiht
b2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7
XG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIGV4cG9ydHNbXCJhXCJdID0gQ29udHJvbGxl
cjtcblxuLyoqXG4qIFRha2VzIGEgbW9kZWwgYW5kIHZpZXcgYW5kIGFjdHMgYXMgdGhlIGNvbnRy
b2xsZXIgYmV0d2VlbiB0aGVtXG4qXG4qIEBjb25zdHJ1Y3RvclxuKiBAcGFyYW0ge29iamVjdH0g
bW9kZWwgVGhlIG1vZGVsIGluc3RhbmNlXG4qIEBwYXJhbSB7b2JqZWN0fSB2aWV3IFRoZSB2aWV3
IGluc3RhbmNlXG4qL1xuZnVuY3Rpb24gQ29udHJvbGxlcihtb2RlbCwgdmlldykge1xuICB2YXIg
dGhhdCA9IHRoaXM7XG4gIHRoYXQubW9kZWwgPSBtb2RlbDtcbiAgdGhhdC52aWV3ID0gdmlldztc
blxuICB0aGF0LnZpZXcuYmluZCgnbmV3VG9kbycsIGZ1bmN0aW9uICh0aXRsZSkge1xuICAgIHRo
YXQuYWRkSXRlbSh0aXRsZSk7XG4gIH0pO1xuXG4gIHRoYXQudmlldy5iaW5kKCdpdGVtRWRpdCcs
IGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgdGhhdC5lZGl0SXRlbShpdGVtLmlkKTtcbiAgfSk7XG5c
biAgdGhhdC52aWV3LmJpbmQoJ2l0ZW1FZGl0RG9uZScsIGZ1bmN0aW9uIChpdGVtKSB7XG4gICAg
dGhhdC5lZGl0SXRlbVNhdmUoaXRlbS5pZCwgaXRlbS50aXRsZSk7XG4gIH0pO1xuXG4gIHRoYXQu
dmlldy5iaW5kKCdpdGVtRWRpdENhbmNlbCcsIGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgdGhhdC5l
ZGl0SXRlbUNhbmNlbChpdGVtLmlkKTtcbiAgfSk7XG5cbiAgdGhhdC52aWV3LmJpbmQoJ2l0ZW1S
ZW1vdmUnLCBmdW5jdGlvbiAoaXRlbSkge1xuICAgIHRoYXQucmVtb3ZlSXRlbShpdGVtLmlkKTtc
biAgfSk7XG5cbiAgdGhhdC52aWV3LmJpbmQoJ2l0ZW1Ub2dnbGUnLCBmdW5jdGlvbiAoaXRlbSkg
e1xuICAgIHRoYXQudG9nZ2xlQ29tcGxldGUoaXRlbS5pZCwgaXRlbS5jb21wbGV0ZWQpO1xuICB9
KTtcblxuICB0aGF0LnZpZXcuYmluZCgncmVtb3ZlQ29tcGxldGVkJywgZnVuY3Rpb24gKCkge1xu
ICAgIHRoYXQucmVtb3ZlQ29tcGxldGVkSXRlbXMoKTtcbiAgfSk7XG5cbiAgdGhhdC52aWV3LmJp
bmQoJ3RvZ2dsZUFsbCcsIGZ1bmN0aW9uIChzdGF0dXMpIHtcbiAgICB0aGF0LnRvZ2dsZUFsbChz
dGF0dXMuY29tcGxldGVkKTtcbiAgfSk7XG59XG5cbi8qKlxuKiBMb2FkcyBhbmQgaW5pdGlhbGlz
ZXMgdGhlIHZpZXdcbipcbiogQHBhcmFtIHtzdHJpbmd9ICcnIHwgJ2FjdGl2ZScgfCAnY29tcGxl
dGVkJ1xuKi9cbkNvbnRyb2xsZXIucHJvdG90eXBlLnNldFZpZXcgPSBmdW5jdGlvbiAobG9jYXRp
b25IYXNoKSB7XG4gIHZhciByb3V0ZSA9IGxvY2F0aW9uSGFzaC5zcGxpdCgnLycpWzFdO1xuICB2
YXIgcGFnZSA9IHJvdXRlIHx8ICcnO1xuICB0aGlzLl91cGRhdGVGaWx0ZXJTdGF0ZShwYWdlKTtc
bn07XG5cbi8qKlxuKiBBbiBldmVudCB0byBmaXJlIG9uIGxvYWQuIFdpbGwgZ2V0IGFsbCBpdGVt
cyBhbmQgZGlzcGxheSB0aGVtIGluIHRoZVxuKiB0b2RvLWxpc3RcbiovXG5Db250cm9sbGVyLnBy
b3RvdHlwZS5zaG93QWxsID0gZnVuY3Rpb24gKCkge1xuICB2YXIgdGhhdCA9IHRoaXM7XG4gIHRo
YXQubW9kZWwucmVhZChmdW5jdGlvbiAoZGF0YSkge1xuICAgIHRoYXQudmlldy5yZW5kZXIoJ3No
b3dFbnRyaWVzJywgZGF0YSk7XG4gIH0pO1xufTtcblxuLyoqXG4qIFJlbmRlcnMgYWxsIGFjdGl2
ZSB0YXNrc1xuKi9cbkNvbnRyb2xsZXIucHJvdG90eXBlLnNob3dBY3RpdmUgPSBmdW5jdGlvbiAo
KSB7XG4gIHZhciB0aGF0ID0gdGhpcztcbiAgdGhhdC5tb2RlbC5yZWFkKHsgY29tcGxldGVkOiBm
YWxzZSB9LCBmdW5jdGlvbiAoZGF0YSkge1xuICAgIHRoYXQudmlldy5yZW5kZXIoJ3Nob3dFbnRy
aWVzJywgZGF0YSk7XG4gIH0pO1xufTtcblxuLyoqXG4qIFJlbmRlcnMgYWxsIGNvbXBsZXRlZCB0
YXNrc1xuKi9cbkNvbnRyb2xsZXIucHJvdG90eXBlLnNob3dDb21wbGV0ZWQgPSBmdW5jdGlvbiAo
KSB7XG4gIHZhciB0aGF0ID0gdGhpcztcbiAgdGhhdC5tb2RlbC5yZWFkKHsgY29tcGxldGVkOiB0
cnVlIH0sIGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgdGhhdC52aWV3LnJlbmRlcignc2hvd0VudHJp
ZXMnLCBkYXRhKTtcbiAgfSk7XG59O1xuXG4vKipcbiogQW4gZXZlbnQgdG8gZmlyZSB3aGVuZXZl
ciB5b3Ugd2FudCB0byBhZGQgYW4gaXRlbS4gU2ltcGx5IHBhc3MgaW4gdGhlIGV2ZW50XG4qIG9i
amVjdCBhbmQgaXQnbGwgaGFuZGxlIHRoZSBET00gaW5zZXJ0aW9uIGFuZCBzYXZpbmcgb2YgdGhl
IG5ldyBpdGVtLlxuKi9cbkNvbnRyb2xsZXIucHJvdG90eXBlLmFkZEl0ZW0gPSBmdW5jdGlvbiAo
dGl0bGUpIHtcbiAgdmFyIHRoYXQgPSB0aGlzO1xuXG4gIGlmICh0aXRsZS50cmltKCkgPT09ICcn
KSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdGhhdC5tb2RlbC5jcmVhdGUodGl0bGUsIGZ1bmN0
aW9uICgpIHtcbiAgICB0aGF0LnZpZXcucmVuZGVyKCdjbGVhck5ld1RvZG8nKTtcbiAgICB0aGF0
Ll9maWx0ZXIodHJ1ZSk7XG4gIH0pO1xufTtcblxuLypcbiogVHJpZ2dlcnMgdGhlIGl0ZW0gZWRp
dGluZyBtb2RlLlxuKi9cbkNvbnRyb2xsZXIucHJvdG90eXBlLmVkaXRJdGVtID0gZnVuY3Rpb24g
KGlkKSB7XG4gIHZhciB0aGF0ID0gdGhpcztcbiAgdGhhdC5tb2RlbC5yZWFkKGlkLCBmdW5jdGlv
biAoZGF0YSkge1xuICAgIHRoYXQudmlldy5yZW5kZXIoJ2VkaXRJdGVtJywgeyBpZDogaWQsIHRp
dGxlOiBkYXRhWzBdLnRpdGxlIH0pO1xuICB9KTtcbn07XG5cbi8qXG4qIEZpbmlzaGVzIHRoZSBp
dGVtIGVkaXRpbmcgbW9kZSBzdWNjZXNzZnVsbHkuXG4qL1xuQ29udHJvbGxlci5wcm90b3R5cGUu
ZWRpdEl0ZW1TYXZlID0gZnVuY3Rpb24gKGlkLCB0aXRsZSkge1xuICB2YXIgdGhhdCA9IHRoaXM7
XG4gIGlmICh0aXRsZS50cmltKCkpIHtcbiAgICB0aGF0Lm1vZGVsLnVwZGF0ZShpZCwgeyB0aXRs
ZTogdGl0bGUgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgdGhhdC52aWV3LnJlbmRlcignZWRpdEl0
ZW1Eb25lJywgeyBpZDogaWQsIHRpdGxlOiB0aXRsZSB9KTtcbiAgICB9KTtcbiAgfSBlbHNlIHtc
biAgICB0aGF0LnJlbW92ZUl0ZW0oaWQpO1xuICB9XG59O1xuXG4vKlxuKiBDYW5jZWxzIHRoZSBp
dGVtIGVkaXRpbmcgbW9kZS5cbiovXG5Db250cm9sbGVyLnByb3RvdHlwZS5lZGl0SXRlbUNhbmNl
bCA9IGZ1bmN0aW9uIChpZCkge1xuICB2YXIgdGhhdCA9IHRoaXM7XG4gIHRoYXQubW9kZWwucmVh
ZChpZCwgZnVuY3Rpb24gKGRhdGEpIHtcbiAgICB0aGF0LnZpZXcucmVuZGVyKCdlZGl0SXRlbURv
bmUnLCB7IGlkOiBpZCwgdGl0bGU6IGRhdGFbMF0udGl0bGUgfSk7XG4gIH0pO1xufTtcblxuLyoq
XG4qIEJ5IGdpdmluZyBpdCBhbiBJRCBpdCdsbCBmaW5kIHRoZSBET00gZWxlbWVudCBtYXRjaGlu
ZyB0aGF0IElELFxuKiByZW1vdmUgaXQgZnJvbSB0aGUgRE9NIGFuZCBhbHNvIHJlbW92ZSBpdCBm
cm9tIHN0b3JhZ2UuXG4qXG4qIEBwYXJhbSB7bnVtYmVyfSBpZCBUaGUgSUQgb2YgdGhlIGl0ZW0g
dG8gcmVtb3ZlIGZyb20gdGhlIERPTSBhbmRcbiogc3RvcmFnZVxuKi9cbkNvbnRyb2xsZXIucHJv
dG90eXBlLnJlbW92ZUl0ZW0gPSBmdW5jdGlvbiAoaWQpIHtcbiAgdmFyIHRoYXQgPSB0aGlzO1xu
ICB0aGF0Lm1vZGVsLnJlbW92ZShpZCwgZnVuY3Rpb24gKCkge1xuICAgIHRoYXQudmlldy5yZW5k
ZXIoJ3JlbW92ZUl0ZW0nLCBpZCk7XG4gIH0pO1xuXG4gIHRoYXQuX2ZpbHRlcigpO1xufTtcblxu
LyoqXG4qIFdpbGwgcmVtb3ZlIGFsbCBjb21wbGV0ZWQgaXRlbXMgZnJvbSB0aGUgRE9NIGFuZCBz
dG9yYWdlLlxuKi9cbkNvbnRyb2xsZXIucHJvdG90eXBlLnJlbW92ZUNvbXBsZXRlZEl0ZW1zID0g
ZnVuY3Rpb24gKCkge1xuICB2YXIgdGhhdCA9IHRoaXM7XG4gIHRoYXQubW9kZWwucmVhZCh7IGNv
bXBsZXRlZDogdHJ1ZSB9LCBmdW5jdGlvbiAoZGF0YSkge1xuICAgIGRhdGEuZm9yRWFjaChmdW5j
dGlvbiAoaXRlbSkge1xuICAgICAgdGhhdC5yZW1vdmVJdGVtKGl0ZW0uaWQpO1xuICAgIH0pO1xu
ICB9KTtcblxuICB0aGF0Ll9maWx0ZXIoKTtcbn07XG5cbi8qKlxuKiBHaXZlIGl0IGFuIElEIG9m
IGEgbW9kZWwgYW5kIGEgY2hlY2tib3ggYW5kIGl0IHdpbGwgdXBkYXRlIHRoZSBpdGVtXG4qIGlu
IHN0b3JhZ2UgYmFzZWQgb24gdGhlIGNoZWNrYm94J3Mgc3RhdGUuXG4qXG4qIEBwYXJhbSB7bnVt
YmVyfSBpZCBUaGUgSUQgb2YgdGhlIGVsZW1lbnQgdG8gY29tcGxldGUgb3IgdW5jb21wbGV0ZVxu
KiBAcGFyYW0ge29iamVjdH0gY2hlY2tib3ggVGhlIGNoZWNrYm94IHRvIGNoZWNrIHRoZSBzdGF0
ZSBvZiBjb21wbGV0ZVxuKiAgICAgICAgICAgICAgICAgICAgICAgICAgb3Igbm90XG4qIEBwYXJh
bSB7Ym9vbGVhbnx1bmRlZmluZWR9IHNpbGVudCBQcmV2ZW50IHJlLWZpbHRlcmluZyB0aGUgdG9k
byBpdGVtc1xuKi9cbkNvbnRyb2xsZXIucHJvdG90eXBlLnRvZ2dsZUNvbXBsZXRlID0gZnVuY3Rp
b24gKGlkLCBjb21wbGV0ZWQsIHNpbGVudCkge1xuICB2YXIgdGhhdCA9IHRoaXM7XG4gIHRoYXQu
bW9kZWwudXBkYXRlKGlkLCB7IGNvbXBsZXRlZDogY29tcGxldGVkIH0sIGZ1bmN0aW9uICgpIHtc
biAgICB0aGF0LnZpZXcucmVuZGVyKCdlbGVtZW50Q29tcGxldGUnLCB7XG4gICAgICBpZDogaWQs
XG4gICAgICBjb21wbGV0ZWQ6IGNvbXBsZXRlZFxuICAgIH0pO1xuICB9KTtcblxuICBpZiAoIXNp
bGVudCkge1xuICAgIHRoYXQuX2ZpbHRlcigpO1xuICB9XG59O1xuXG4vKipcbiogV2lsbCB0b2dn
bGUgQUxMIGNoZWNrYm94ZXMnIG9uL29mZiBzdGF0ZSBhbmQgY29tcGxldGVuZXNzIG9mIG1vZGVs
cy5cbiogSnVzdCBwYXNzIGluIHRoZSBldmVudCBvYmplY3QuXG4qL1xuQ29udHJvbGxlci5wcm90
b3R5cGUudG9nZ2xlQWxsID0gZnVuY3Rpb24gKGNvbXBsZXRlZCkge1xuICB2YXIgdGhhdCA9IHRo
aXM7XG4gIHRoYXQubW9kZWwucmVhZCh7IGNvbXBsZXRlZDogIWNvbXBsZXRlZCB9LCBmdW5jdGlv
biAoZGF0YSkge1xuICAgIGRhdGEuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgdGhh
dC50b2dnbGVDb21wbGV0ZShpdGVtLmlkLCBjb21wbGV0ZWQsIHRydWUpO1xuICAgIH0pO1xuICB9
KTtcblxuICB0aGF0Ll9maWx0ZXIoKTtcbn07XG5cbi8qKlxuKiBVcGRhdGVzIHRoZSBwaWVjZXMg
b2YgdGhlIHBhZ2Ugd2hpY2ggY2hhbmdlIGRlcGVuZGluZyBvbiB0aGUgcmVtYWluaW5nXG4qIG51
bWJlciBvZiB0b2Rvcy5cbiovXG5Db250cm9sbGVyLnByb3RvdHlwZS5fdXBkYXRlQ291bnQgPSBm
dW5jdGlvbiAoKSB7XG4gIHZhciB0aGF0ID0gdGhpcztcbiAgdGhhdC5tb2RlbC5nZXRDb3VudChm
dW5jdGlvbiAodG9kb3MpIHtcbiAgICB0aGF0LnZpZXcucmVuZGVyKCd1cGRhdGVFbGVtZW50Q291
bnQnLCB0b2Rvcy5hY3RpdmUpO1xuICAgIHRoYXQudmlldy5yZW5kZXIoJ2NsZWFyQ29tcGxldGVk
QnV0dG9uJywge1xuICAgICAgY29tcGxldGVkOiB0b2Rvcy5jb21wbGV0ZWQsXG4gICAgICB2aXNp
YmxlOiB0b2Rvcy5jb21wbGV0ZWQgPiAwXG4gICAgfSk7XG5cbiAgICB0aGF0LnZpZXcucmVuZGVy
KCd0b2dnbGVBbGwnLCB7IGNoZWNrZWQ6IHRvZG9zLmNvbXBsZXRlZCA9PT0gdG9kb3MudG90YWwg
fSk7XG4gICAgdGhhdC52aWV3LnJlbmRlcignY29udGVudEJsb2NrVmlzaWJpbGl0eScsIHsgdmlz
aWJsZTogdG9kb3MudG90YWwgPiAwIH0pO1xuICB9KTtcbn07XG5cbi8qKlxuKiBSZS1maWx0ZXJz
IHRoZSB0b2RvIGl0ZW1zLCBiYXNlZCBvbiB0aGUgYWN0aXZlIHJvdXRlLlxuKiBAcGFyYW0ge2Jv
b2xlYW58dW5kZWZpbmVkfSBmb3JjZSAgZm9yY2VzIGEgcmUtcGFpbnRpbmcgb2YgdG9kbyBpdGVt
cy5cbiovXG5Db250cm9sbGVyLnByb3RvdHlwZS5fZmlsdGVyID0gZnVuY3Rpb24gKGZvcmNlKSB7
XG4gIHZhciBhY3RpdmVSb3V0ZSA9IHRoaXMuX2FjdGl2ZVJvdXRlLmNoYXJBdCgwKS50b1VwcGVy
Q2FzZSgpICsgdGhpcy5fYWN0aXZlUm91dGUuc3Vic3RyKDEpO1xuXG4gIC8vIFVwZGF0ZSB0aGUg
ZWxlbWVudHMgb24gdGhlIHBhZ2UsIHdoaWNoIGNoYW5nZSB3aXRoIGVhY2ggY29tcGxldGVkIHRv
ZG9cbiAgdGhpcy5fdXBkYXRlQ291bnQoKTtcblxuICAvLyBJZiB0aGUgbGFzdCBhY3RpdmUgcm91
dGUgaXNuJ3QgXCJBbGxcIiwgb3Igd2UncmUgc3dpdGNoaW5nIHJvdXRlcywgd2VcbiAgLy8gcmUt
Y3JlYXRlIHRoZSB0b2RvIGl0ZW0gZWxlbWVudHMsIGNhbGxpbmc6XG4gIC8vICAgdGhpcy5zaG93
W0FsbHxBY3RpdmV8Q29tcGxldGVkXSgpO1xuICBpZiAoZm9yY2UgfHwgdGhpcy5fbGFzdEFjdGl2
ZVJvdXRlICE9PSAnQWxsJyB8fCB0aGlzLl9sYXN0QWN0aXZlUm91dGUgIT09IGFjdGl2ZVJvdXRl
KSB7XG4gICAgdGhpc1snc2hvdycgKyBhY3RpdmVSb3V0ZV0oKTtcbiAgfVxuXG4gIHRoaXMuX2xh
c3RBY3RpdmVSb3V0ZSA9IGFjdGl2ZVJvdXRlO1xufTtcblxuLyoqXG4qIFNpbXBseSB1cGRhdGVz
IHRoZSBmaWx0ZXIgbmF2J3Mgc2VsZWN0ZWQgc3RhdGVzXG4qL1xuQ29udHJvbGxlci5wcm90b3R5
cGUuX3VwZGF0ZUZpbHRlclN0YXRlID0gZnVuY3Rpb24gKGN1cnJlbnRQYWdlKSB7XG4gIC8vIFN0
b3JlIGEgcmVmZXJlbmNlIHRvIHRoZSBhY3RpdmUgcm91dGUsIGFsbG93aW5nIHVzIHRvIHJlLWZp
bHRlciB0b2RvXG4gIC8vIGl0ZW1zIGFzIHRoZXkgYXJlIG1hcmtlZCBjb21wbGV0ZSBvciBpbmNv
bXBsZXRlLlxuICBjdXJyZW50UGFnZSA9IGN1cnJlbnRQYWdlLnNwbGl0KCc/JylbMF07XG4gIHRo
aXMuX2FjdGl2ZVJvdXRlID0gY3VycmVudFBhZ2U7XG5cbiAgaWYgKGN1cnJlbnRQYWdlID09PSAn
Jykge1xuICAgIHRoaXMuX2FjdGl2ZVJvdXRlID0gJ0FsbCc7XG4gIH1cblxuICB0aGlzLl9maWx0
ZXIoKTtcblxuICB0aGlzLnZpZXcucmVuZGVyKCdzZXRGaWx0ZXInLCBjdXJyZW50UGFnZSk7XG59
O1xuXG4vKioqLyB9LFxuLyogNCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBf
X3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xudmFyIF90eXBlb2YgPSB0
eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9
PT0gXCJzeW1ib2xcIiA/IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH0gOiBm
dW5jdGlvbiAob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlv
blwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3Rv
dHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9O1xuXG4vKiBoYXJtb255IGRlZmF1bHQg
ZXhwb3J0ICovIGV4cG9ydHNbXCJhXCJdID0gTW9kZWw7XG5cbi8qKlxuKiBDcmVhdGVzIGEgbmV3
IE1vZGVsIGluc3RhbmNlIGFuZCBob29rcyB1cCB0aGUgc3RvcmFnZS5cbipcbiogQGNvbnN0cnVj
dG9yXG4qIEBwYXJhbSB7b2JqZWN0fSBzdG9yYWdlIEEgcmVmZXJlbmNlIHRvIHRoZSBjbGllbnQg
c2lkZSBzdG9yYWdlIGNsYXNzXG4qL1xuZnVuY3Rpb24gTW9kZWwoc3RvcmFnZSkge1xuICB0aGlz
LnN0b3JhZ2UgPSBzdG9yYWdlO1xufVxuXG4vKipcbiogQ3JlYXRlcyBhIG5ldyB0b2RvIG1vZGVs
XG4qXG4qIEBwYXJhbSB7c3RyaW5nfSBbdGl0bGVdIFRoZSB0aXRsZSBvZiB0aGUgdGFza1xuKiBA
cGFyYW0ge2Z1bmN0aW9ufSBbY2FsbGJhY2tdIFRoZSBjYWxsYmFjayB0byBmaXJlIGFmdGVyIHRo
ZSBtb2RlbCBpcyBjcmVhdGVkXG4qL1xuTW9kZWwucHJvdG90eXBlLmNyZWF0ZSA9IGZ1bmN0aW9u
ICh0aXRsZSwgY2FsbGJhY2spIHtcbiAgdGl0bGUgPSB0aXRsZSB8fCAnJztcbiAgY2FsbGJhY2sg
PSBjYWxsYmFjayB8fCBmdW5jdGlvbiAoKSB7fTtcblxuICB2YXIgbmV3SXRlbSA9IHtcbiAgICB0
aXRsZTogdGl0bGUudHJpbSgpLFxuICAgIGNvbXBsZXRlZDogZmFsc2VcbiAgfTtcblxuICB0aGlz
LnN0b3JhZ2Uuc2F2ZShuZXdJdGVtLCBjYWxsYmFjayk7XG59O1xuXG4vKipcbiAqIEZpbmRzIGFu
ZCByZXR1cm5zIGEgbW9kZWwgaW4gc3RvcmFnZS4gSWYgbm8gcXVlcnkgaXMgZ2l2ZW4gaXQnbGwg
c2ltcGx5XG4gKiByZXR1cm4gZXZlcnl0aGluZy4gSWYgeW91IHBhc3MgaW4gYSBzdHJpbmcgb3Ig
bnVtYmVyIGl0J2xsIGxvb2sgdGhhdCB1cCBhc1xuICogdGhlIElEIG9mIHRoZSBtb2RlbCB0byBm
aW5kLiBMYXN0bHksIHlvdSBjYW4gcGFzcyBpdCBhbiBvYmplY3QgdG8gbWF0Y2ggYWdhaW5zdC5c
biAqXG4gKiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ8b2JqZWN0fSBbcXVlcnldIEEgcXVlcnkgdG8g
bWF0Y2ggbW9kZWxzIGFnYWluc3RcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IFtjYWxsYmFja10gVGhl
IGNhbGxiYWNrIHRvIGZpcmUgYWZ0ZXIgdGhlIG1vZGVsIGlzIGZvdW5kXG4gKlxuICogQGV4YW1w
bGVcbiAqIG1vZGVsLnJlYWQoMSwgZnVuYyk7IC8vIFdpbGwgZmluZCB0aGUgbW9kZWwgd2l0aCBh
biBJRCBvZiAxXG4gKiBtb2RlbC5yZWFkKCcxJyk7IC8vIFNhbWUgYXMgYWJvdmVcbiAqIC8vQmVs
b3cgd2lsbCBmaW5kIGEgbW9kZWwgd2l0aCBmb28gZXF1YWxsaW5nIGJhciBhbmQgaGVsbG8gZXF1
YWxsaW5nIHdvcmxkLlxuICogbW9kZWwucmVhZCh7IGZvbzogJ2JhcicsIGhlbGxvOiAnd29ybGQn
IH0pO1xuICovXG5Nb2RlbC5wcm90b3R5cGUucmVhZCA9IGZ1bmN0aW9uIChxdWVyeSwgY2FsbGJh
Y2spIHtcbiAgdmFyIHF1ZXJ5VHlwZSA9IHR5cGVvZiBxdWVyeSA9PT0gJ3VuZGVmaW5lZCcgPyAn
dW5kZWZpbmVkJyA6IF90eXBlb2YocXVlcnkpO1xuICBjYWxsYmFjayA9IGNhbGxiYWNrIHx8IGZ1
bmN0aW9uICgpIHt9O1xuXG4gIGlmIChxdWVyeVR5cGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICBj
YWxsYmFjayA9IHF1ZXJ5O1xuICAgIHJldHVybiB0aGlzLnN0b3JhZ2UuZmluZEFsbChjYWxsYmFj
ayk7XG4gIH0gZWxzZSBpZiAocXVlcnlUeXBlID09PSAnc3RyaW5nJyB8fCBxdWVyeVR5cGUgPT09
ICdudW1iZXInKSB7XG4gICAgcXVlcnkgPSBwYXJzZUludChxdWVyeSwgMTApO1xuICAgIHRoaXMu
c3RvcmFnZS5maW5kKHsgaWQ6IHF1ZXJ5IH0sIGNhbGxiYWNrKTtcbiAgfSBlbHNlIHtcbiAgICB0
aGlzLnN0b3JhZ2UuZmluZChxdWVyeSwgY2FsbGJhY2spO1xuICB9XG4gIHJldHVybiB1bmRlZmlu
ZWQ7XG59O1xuXG4vKipcbiogVXBkYXRlcyBhIG1vZGVsIGJ5IGdpdmluZyBpdCBhbiBJRCwgZGF0
YSB0byB1cGRhdGUsIGFuZCBhIGNhbGxiYWNrIHRvIGZpcmUgd2hlblxuKiB0aGUgdXBkYXRlIGlz
IGNvbXBsZXRlLlxuKlxuKiBAcGFyYW0ge251bWJlcn0gaWQgVGhlIGlkIG9mIHRoZSBtb2RlbCB0
byB1cGRhdGVcbiogQHBhcmFtIHtvYmplY3R9IGRhdGEgVGhlIHByb3BlcnRpZXMgdG8gdXBkYXRl
IGFuZCB0aGVpciBuZXcgdmFsdWVcbiogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGNh
bGxiYWNrIHRvIGZpcmUgd2hlbiB0aGUgdXBkYXRlIGlzIGNvbXBsZXRlLlxuKi9cbk1vZGVsLnBy
b3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAoaWQsIGRhdGEsIGNhbGxiYWNrKSB7XG4gIHRoaXMu
c3RvcmFnZS5zYXZlKGRhdGEsIGNhbGxiYWNrLCBpZCk7XG59O1xuXG4vKipcbiogUmVtb3ZlcyBh
IG1vZGVsIGZyb20gc3RvcmFnZVxuKlxuKiBAcGFyYW0ge251bWJlcn0gaWQgVGhlIElEIG9mIHRo
ZSBtb2RlbCB0byByZW1vdmVcbiogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGNhbGxi
YWNrIHRvIGZpcmUgd2hlbiB0aGUgcmVtb3ZhbCBpcyBjb21wbGV0ZS5cbiovXG5Nb2RlbC5wcm90
b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24gKGlkLCBjYWxsYmFjaykge1xuICB0aGlzLnN0b3JhZ2Uu
cmVtb3ZlKGlkLCBjYWxsYmFjayk7XG59O1xuXG4vKipcbiogV0FSTklORzogV2lsbCByZW1vdmUg
QUxMIGRhdGEgZnJvbSBzdG9yYWdlLlxuKlxuKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayBU
aGUgY2FsbGJhY2sgdG8gZmlyZSB3aGVuIHRoZSBzdG9yYWdlIGlzIHdpcGVkLlxuKi9cbk1vZGVs
LnByb3RvdHlwZS5yZW1vdmVBbGwgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtcbiAgdGhpcy5zdG9y
YWdlLmRyb3AoY2FsbGJhY2spO1xufTtcblxuLyoqXG4qIFJldHVybnMgYSBjb3VudCBvZiBhbGwg
dG9kb3NcbiovXG5Nb2RlbC5wcm90b3R5cGUuZ2V0Q291bnQgPSBmdW5jdGlvbiAoY2FsbGJhY2sp
IHtcbiAgdmFyIHRvZG9zID0ge1xuICAgIGFjdGl2ZTogMCxcbiAgICBjb21wbGV0ZWQ6IDAsXG4g
ICAgdG90YWw6IDBcbiAgfTtcblxuICB0aGlzLnN0b3JhZ2UuZmluZEFsbChmdW5jdGlvbiAoZGF0
YSkge1xuICAgIGRhdGEuZm9yRWFjaChmdW5jdGlvbiAodG9kbykge1xuICAgICAgaWYgKHRvZG8u
Y29tcGxldGVkKSB7XG4gICAgICAgIHRvZG9zLmNvbXBsZXRlZCsrO1xuICAgICAgfSBlbHNlIHtc
biAgICAgICAgdG9kb3MuYWN0aXZlKys7XG4gICAgICB9XG5cbiAgICAgIHRvZG9zLnRvdGFsKys7
XG4gICAgfSk7XG4gICAgY2FsbGJhY2sodG9kb3MpO1xuICB9KTtcbn07XG5cbi8qKiovIH0sXG4v
KiA1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJl
X18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQ
QUNLX0lNUE9SVEVEX01PRFVMRV8wX19oZWxwZXJzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDAp
O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIGV4cG9ydHNbXCJhXCJdID0gU3RvcmU7
XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBjbGllbnQgc2lkZSBzdG9yYWdlIG9iamVjdCBhbmQg
d2lsbCBjcmVhdGUgYW4gZW1wdHlcbiAqIGNvbGxlY3Rpb24gaWYgbm8gY29sbGVjdGlvbiBhbHJl
YWR5IGV4aXN0cy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbmFtZSBvZiBvdXIg
REIgd2Ugd2FudCB0byB1c2VcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIE91ciBmYWtl
IERCIHVzZXMgY2FsbGJhY2tzIGJlY2F1c2UgaW5cbiAqIHJlYWwgbGlmZSB5b3UgcHJvYmFibHkg
d291bGQgYmUgbWFraW5nIEFKQVggY2FsbHNcbiAqL1xuZnVuY3Rpb24gU3RvcmUobmFtZSwgY2Fs
bGJhY2spIHtcbiAgY2FsbGJhY2sgPSBjYWxsYmFjayB8fCBmdW5jdGlvbiAoKSB7fTtcblxuICB0
aGlzLl9kYk5hbWUgPSBuYW1lO1xuXG4gIGlmICghbG9jYWxTdG9yYWdlW25hbWVdKSB7XG4gICAg
dmFyIGRhdGEgPSB7XG4gICAgICB0b2RvczogW11cbiAgICB9O1xuXG4gICAgbG9jYWxTdG9yYWdl
W25hbWVdID0gSlNPTi5zdHJpbmdpZnkoZGF0YSk7XG4gIH1cblxuICBjYWxsYmFjay5jYWxsKHRo
aXMsIEpTT04ucGFyc2UobG9jYWxTdG9yYWdlW25hbWVdKSk7XG4gIHRoaXMuc3Vic2NyaWJlcnMg
PSBbXTtcbn1cblxuU3RvcmUucHJvdG90eXBlLnN1YnNjcmliZSA9IGZ1bmN0aW9uIChzdWJzY3Jp
YmVyKSB7XG4gIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgdGhpcy5zdWJzY3JpYmVycy5wdXNoKHN1
YnNjcmliZXIpO1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBfX3dlYnBhY2tf
cmVxdWlyZV9fLmkoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19oZWxwZXJzX19bXCJmXCIg
LyogcmVtb3ZlICovXSkoX3RoaXMuc3Vic2NyaWJlcnMsIHN1YnNjcmliZXIpO1xuICB9O1xufTtc
blxuU3RvcmUucHJvdG90eXBlLl9ub3RpZnkgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc3Vic2Ny
aWJlcnMuZm9yRWFjaChmdW5jdGlvbiAocykge1xuICAgIHJldHVybiBzKCk7XG4gIH0pO1xufTtc
blxuLyoqXG4qIEZpbmRzIGl0ZW1zIGJhc2VkIG9uIGEgcXVlcnkgZ2l2ZW4gYXMgYSBKUyBvYmpl
Y3RcbipcbiogQHBhcmFtIHtvYmplY3R9IHF1ZXJ5IFRoZSBxdWVyeSB0byBtYXRjaCBhZ2FpbnN0
IChpLmUuIHtmb286ICdiYXInfSlcbiogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgICBUaGUg
Y2FsbGJhY2sgdG8gZmlyZSB3aGVuIHRoZSBxdWVyeSBoYXNcbiogY29tcGxldGVkIHJ1bm5pbmdc
bipcbiogQGV4YW1wbGVcbiogZGIuZmluZCh7Zm9vOiAnYmFyJywgaGVsbG86ICd3b3JsZCd9LCBm
dW5jdGlvbiAoZGF0YSkge1xuKiAgIC8vIGRhdGEgd2lsbCByZXR1cm4gYW55IGl0ZW1zIHRoYXQg
aGF2ZSBmb286IGJhciBhbmRcbiogICAvLyBoZWxsbzogd29ybGQgaW4gdGhlaXIgcHJvcGVydGll
c1xuKiB9KTtcbiovXG5TdG9yZS5wcm90b3R5cGUuZmluZCA9IGZ1bmN0aW9uIChxdWVyeSwgY2Fs
bGJhY2spIHtcbiAgaWYgKCFjYWxsYmFjaykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHZhciB0
b2RvcyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlW3RoaXMuX2RiTmFtZV0pLnRvZG9zO1xuXG4g
IGNhbGxiYWNrLmNhbGwodGhpcywgdG9kb3MuZmlsdGVyKGZ1bmN0aW9uICh0b2RvKSB7XG4gICAg
Zm9yICh2YXIgcSBpbiBxdWVyeSkge1xuICAgICAgaWYgKHF1ZXJ5W3FdICE9PSB0b2RvW3FdKSB7
XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7
XG4gIH0pKTtcbn07XG5cbi8qKlxuKiBXaWxsIHJldHJpZXZlIGFsbCBkYXRhIGZyb20gdGhlIGNv
bGxlY3Rpb25cbipcbiogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGNhbGxiYWNrIHRv
IGZpcmUgdXBvbiByZXRyaWV2aW5nIGRhdGFcbiovXG5TdG9yZS5wcm90b3R5cGUuZmluZEFsbCA9
IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICBjYWxsYmFjayA9IGNhbGxiYWNrIHx8IGZ1bmN0aW9u
ICgpIHt9O1xuICBjYWxsYmFjay5jYWxsKHRoaXMsIEpTT04ucGFyc2UobG9jYWxTdG9yYWdlW3Ro
aXMuX2RiTmFtZV0pLnRvZG9zKTtcbn07XG5cbi8qKlxuKiBXaWxsIHNhdmUgdGhlIGdpdmVuIGRh
dGEgdG8gdGhlIERCLiBJZiBubyBpdGVtIGV4aXN0cyBpdCB3aWxsIGNyZWF0ZSBhIG5ld1xuKiBp
dGVtLCBvdGhlcndpc2UgaXQnbGwgc2ltcGx5IHVwZGF0ZSBhbiBleGlzdGluZyBpdGVtJ3MgcHJv
cGVydGllc1xuKlxuKiBAcGFyYW0ge29iamVjdH0gdXBkYXRlRGF0YSBUaGUgZGF0YSB0byBzYXZl
IGJhY2sgaW50byB0aGUgREJcbiogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGNhbGxi
YWNrIHRvIGZpcmUgYWZ0ZXIgc2F2aW5nXG4qIEBwYXJhbSB7bnVtYmVyfSBpZCBBbiBvcHRpb25h
bCBwYXJhbSB0byBlbnRlciBhbiBJRCBvZiBhbiBpdGVtIHRvIHVwZGF0ZVxuKi9cblN0b3JlLnBy
b3RvdHlwZS5zYXZlID0gZnVuY3Rpb24gKHVwZGF0ZURhdGEsIGNhbGxiYWNrLCBpZCkge1xuICB2
YXIgZGF0YSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlW3RoaXMuX2RiTmFtZV0pO1xuICB2YXIg
dG9kb3MgPSBkYXRhLnRvZG9zO1xuXG4gIGNhbGxiYWNrID0gY2FsbGJhY2sgfHwgZnVuY3Rpb24g
KCkge307XG5cbiAgLy8gSWYgYW4gSUQgd2FzIGFjdHVhbGx5IGdpdmVuLCBmaW5kIHRoZSBpdGVt
IGFuZCB1cGRhdGUgZWFjaCBwcm9wZXJ0eVxuICBpZiAoaWQpIHtcbiAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHRvZG9zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAodG9kb3NbaV0uaWQgPT09IGlk
KSB7XG4gICAgICAgIGZvciAodmFyIGtleSBpbiB1cGRhdGVEYXRhKSB7XG4gICAgICAgICAgLy8g
ZXNsaW50LWRpc2FibGUtbGluZSBndWFyZC1mb3ItaW5cbiAgICAgICAgICB0b2Rvc1tpXVtrZXld
ID0gdXBkYXRlRGF0YVtrZXldO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxu
ICAgIH1cblxuICAgIGxvY2FsU3RvcmFnZVt0aGlzLl9kYk5hbWVdID0gSlNPTi5zdHJpbmdpZnko
ZGF0YSk7XG4gICAgY2FsbGJhY2suY2FsbCh0aGlzLCBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZVt0
aGlzLl9kYk5hbWVdKS50b2Rvcyk7XG4gIH0gZWxzZSB7XG4gICAgLy8gR2VuZXJhdGUgYW4gSURc
biAgICB1cGRhdGVEYXRhLmlkID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG5cbiAgICB0b2Rvcy5w
dXNoKHVwZGF0ZURhdGEpO1xuICAgIGxvY2FsU3RvcmFnZVt0aGlzLl9kYk5hbWVdID0gSlNPTi5z
dHJpbmdpZnkoZGF0YSk7XG4gICAgY2FsbGJhY2suY2FsbCh0aGlzLCBbdXBkYXRlRGF0YV0pO1xu
ICB9XG4gIHRoaXMuX25vdGlmeSgpO1xufTtcblxuLyoqXG4qIFdpbGwgcmVtb3ZlIGFuIGl0ZW0g
ZnJvbSB0aGUgU3RvcmUgYmFzZWQgb24gaXRzIElEXG4qXG4qIEBwYXJhbSB7bnVtYmVyfSBpZCBU
aGUgSUQgb2YgdGhlIGl0ZW0geW91IHdhbnQgdG8gcmVtb3ZlXG4qIEBwYXJhbSB7ZnVuY3Rpb259
IGNhbGxiYWNrIFRoZSBjYWxsYmFjayB0byBmaXJlIGFmdGVyIHNhdmluZ1xuKi9cblN0b3JlLnBy
b3RvdHlwZS5yZW1vdmUgPSBmdW5jdGlvbiAoaWQsIGNhbGxiYWNrKSB7XG4gIHZhciBkYXRhID0g
SlNPTi5wYXJzZShsb2NhbFN0b3JhZ2VbdGhpcy5fZGJOYW1lXSk7XG4gIHZhciB0b2RvcyA9IGRh
dGEudG9kb3M7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b2Rvcy5sZW5ndGg7IGkrKykge1xu
ICAgIGlmICh0b2Rvc1tpXS5pZCA9PT0gaWQpIHtcbiAgICAgIHRvZG9zLnNwbGljZShpLCAxKTtc
biAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGxvY2FsU3RvcmFnZVt0aGlzLl9kYk5hbWVd
ID0gSlNPTi5zdHJpbmdpZnkoZGF0YSk7XG4gIGNhbGxiYWNrLmNhbGwodGhpcywgSlNPTi5wYXJz
ZShsb2NhbFN0b3JhZ2VbdGhpcy5fZGJOYW1lXSkudG9kb3MpO1xuICB0aGlzLl9ub3RpZnkoKTtc
bn07XG5cbi8qKlxuKiBXaWxsIGRyb3AgYWxsIHN0b3JhZ2UgYW5kIHN0YXJ0IGZyZXNoXG4qXG4q
IEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIFRoZSBjYWxsYmFjayB0byBmaXJlIGFmdGVyIGRy
b3BwaW5nIHRoZSBkYXRhXG4qL1xuU3RvcmUucHJvdG90eXBlLmRyb3AgPSBmdW5jdGlvbiAoY2Fs
bGJhY2spIHtcbiAgbG9jYWxTdG9yYWdlW3RoaXMuX2RiTmFtZV0gPSBKU09OLnN0cmluZ2lmeSh7
IHRvZG9zOiBbXSB9KTtcbiAgY2FsbGJhY2suY2FsbCh0aGlzLCBKU09OLnBhcnNlKGxvY2FsU3Rv
cmFnZVt0aGlzLl9kYk5hbWVdKS50b2Rvcyk7XG4gIHRoaXMuX25vdGlmeSgpO1xufTtcblxuLyoq
Ki8gfSxcbi8qIDYgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNr
X3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBv
cnQgKi8gZXhwb3J0c1tcImFcIl0gPSBUZW1wbGF0ZTtcblxudmFyIGh0bWxFc2NhcGVzID0ge1xu
ICAnJic6ICcmYW1wOycsXG4gICc8JzogJyZsdDsnLFxuICAnPic6ICcmZ3Q7JyxcbiAgJ1wiJzog
JyZxdW90OycsXG4gICdcXCcnOiAnJiN4Mjc7JyxcbiAgJ2AnOiAnJiN4NjA7J1xufTtcblxudmFy
IGVzY2FwZUh0bWxDaGFyID0gZnVuY3Rpb24gZXNjYXBlSHRtbENoYXIoY2hyKSB7XG4gIHJldHVy
biBodG1sRXNjYXBlc1tjaHJdO1xufTtcblxudmFyIHJlVW5lc2NhcGVkSHRtbCA9IC9bJjw+XCIn
YF0vZztcbnZhciByZUhhc1VuZXNjYXBlZEh0bWwgPSBuZXcgUmVnRXhwKHJlVW5lc2NhcGVkSHRt
bC5zb3VyY2UpO1xuXG52YXIgZXNjYXBlID0gZnVuY3Rpb24gZXNjYXBlKHN0cmluZykge1xuICBp
ZiAoc3RyaW5nICYmIHJlSGFzVW5lc2NhcGVkSHRtbC50ZXN0KHN0cmluZykpIHtcbiAgICByZXR1
cm4gc3RyaW5nLnJlcGxhY2UocmVVbmVzY2FwZWRIdG1sLCBlc2NhcGVIdG1sQ2hhcik7XG4gIH0g
ZWxzZSB7XG4gICAgcmV0dXJuIHN0cmluZztcbiAgfVxufTtcblxuLyoqXG4qIFNldHMgdXAgZGVm
YXVsdHMgZm9yIGFsbCB0aGUgVGVtcGxhdGUgbWV0aG9kcyBzdWNoIGFzIGEgZGVmYXVsdCB0ZW1w
bGF0ZVxuKlxuKiBAY29uc3RydWN0b3JcbiovXG5mdW5jdGlvbiBUZW1wbGF0ZSgpIHtcbiAgdGhp
cy5kZWZhdWx0VGVtcGxhdGUgPSAnXFxuICAgIDxsaSBkYXRhLWlkPVwie3tpZH19XCIgY2xhc3M9
XCJ7e2NvbXBsZXRlZH19XCI+XFxuICAgICAgPGRpdiBjbGFzcz1cInZpZXdcIj5cXG4gICAgICAg
IDxpbnB1dCBjbGFzcz1cInRvZ2dsZVwiIHR5cGU9XCJjaGVja2JveFwiIHt7Y2hlY2tlZH19IC8+
XFxuICAgICAgICA8bGFiZWw+e3t0aXRsZX19PC9sYWJlbD5cXG4gICAgICAgIDxidXR0b24gY2xh
c3M9XCJkZXN0cm95XCI+PC9idXR0b24+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvbGk+XFxuICAn
O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYW4gPGxpPiBIVE1MIHN0cmluZyBhbmQgcmV0dXJucyBp
dCBmb3IgcGxhY2VtZW50IGluIHlvdXIgYXBwLlxuICpcbiAqIE5PVEU6IEluIHJlYWwgbGlmZSB5
b3Ugc2hvdWxkIGJlIHVzaW5nIGEgdGVtcGxhdGluZyBlbmdpbmUgc3VjaCBhcyBNdXN0YWNoZVxu
ICogb3IgSGFuZGxlYmFycywgaG93ZXZlciwgdGhpcyBpcyBhIHZhbmlsbGEgSlMgZXhhbXBsZS5c
biAqXG4gKiBAcGFyYW0ge29iamVjdH0gZGF0YSBUaGUgb2JqZWN0IGNvbnRhaW5pbmcga2V5cyB5
b3Ugd2FudCB0byBmaW5kIGluIHRoZVxuICogICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGUg
dG8gcmVwbGFjZS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IEhUTUwgU3RyaW5nIG9mIGFuIDxsaT4g
ZWxlbWVudFxuICpcbiAqIEBleGFtcGxlXG4gKiB2aWV3LnNob3coe1xuICogIGlkOiAxLFxuICog
IHRpdGxlOiBcIkhlbGxvIFdvcmxkXCIsXG4gKiAgY29tcGxldGVkOiAwLFxuICogfSk7XG4gKi9c
blRlbXBsYXRlLnByb3RvdHlwZS5zaG93ID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgdmFyIGksIGw7
XG4gIHZhciB2aWV3ID0gJyc7XG5cbiAgZm9yIChpID0gMCwgbCA9IGRhdGEubGVuZ3RoOyBpIDwg
bDsgaSsrKSB7XG4gICAgdmFyIHRlbXBsYXRlID0gdGhpcy5kZWZhdWx0VGVtcGxhdGU7XG4gICAg
dmFyIGNvbXBsZXRlZCA9ICcnO1xuICAgIHZhciBjaGVja2VkID0gJyc7XG5cbiAgICBpZiAoZGF0
YVtpXS5jb21wbGV0ZWQpIHtcbiAgICAgIGNvbXBsZXRlZCA9ICdjb21wbGV0ZWQnO1xuICAgICAg
Y2hlY2tlZCA9ICdjaGVja2VkJztcbiAgICB9XG5cbiAgICB0ZW1wbGF0ZSA9IHRlbXBsYXRlLnJl
cGxhY2UoJ3t7aWR9fScsIGRhdGFbaV0uaWQpO1xuICAgIHRlbXBsYXRlID0gdGVtcGxhdGUucmVw
bGFjZSgne3t0aXRsZX19JywgZXNjYXBlKGRhdGFbaV0udGl0bGUpKTtcbiAgICB0ZW1wbGF0ZSA9
IHRlbXBsYXRlLnJlcGxhY2UoJ3t7Y29tcGxldGVkfX0nLCBjb21wbGV0ZWQpO1xuICAgIHRlbXBs
YXRlID0gdGVtcGxhdGUucmVwbGFjZSgne3tjaGVja2VkfX0nLCBjaGVja2VkKTtcblxuICAgIHZp
ZXcgPSB2aWV3ICsgdGVtcGxhdGU7XG4gIH1cblxuICByZXR1cm4gdmlldztcbn07XG5cbi8qKlxu
ICogRGlzcGxheXMgYSBjb3VudGVyIG9mIGhvdyBtYW55IHRvIGRvcyBhcmUgbGVmdCB0byBjb21w
bGV0ZVxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSBhY3RpdmVUb2RvcyBUaGUgbnVtYmVyIG9mIGFj
dGl2ZSB0b2Rvcy5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFN0cmluZyBjb250YWluaW5nIHRoZSBj
b3VudFxuICovXG5UZW1wbGF0ZS5wcm90b3R5cGUuaXRlbUNvdW50ZXIgPSBmdW5jdGlvbiAoYWN0
aXZlVG9kb3MpIHtcbiAgdmFyIHBsdXJhbCA9IGFjdGl2ZVRvZG9zID09PSAxID8gJycgOiAncyc7
XG5cbiAgcmV0dXJuICc8c3Ryb25nPicgKyBhY3RpdmVUb2RvcyArICc8L3N0cm9uZz4gaXRlbScg
KyBwbHVyYWwgKyAnIGxlZnQnO1xufTtcblxuLyoqXG4gKiBVcGRhdGVzIHRoZSB0ZXh0IHdpdGhp
biB0aGUgXCJDbGVhciBjb21wbGV0ZWRcIiBidXR0b25cbiAqXG4gKiBAcGFyYW0gIHtbdHlwZV19
IGNvbXBsZXRlZFRvZG9zIFRoZSBudW1iZXIgb2YgY29tcGxldGVkIHRvZG9zLlxuICogQHJldHVy
bnMge3N0cmluZ30gU3RyaW5nIGNvbnRhaW5pbmcgdGhlIGNvdW50XG4gKi9cblRlbXBsYXRlLnBy
b3RvdHlwZS5jbGVhckNvbXBsZXRlZEJ1dHRvbiA9IGZ1bmN0aW9uIChjb21wbGV0ZWRUb2Rvcykg
e1xuICBpZiAoY29tcGxldGVkVG9kb3MgPiAwKSB7XG4gICAgcmV0dXJuICdDbGVhciBjb21wbGV0
ZWQnO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAnJztcbiAgfVxufTtcblxuLyoqKi8gfSxcbi8q
IDcgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVf
Xykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBB
Q0tfSU1QT1JURURfTU9EVUxFXzBfX3ZpZXdfXyA9IF9fd2VicGFja19yZXF1aXJlX18oOCk7XG4v
KiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19jb250
cm9sbGVyX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8g
dmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fbW9kZWxfXyA9IF9fd2VicGFja19yZXF1
aXJlX18oNCk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01P
RFVMRV8zX19zdG9yZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTtcbi8qIGhhcm1vbnkgaW1w
b3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX3RlbXBsYXRlX18gPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDYpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19J
TVBPUlRFRF9NT0RVTEVfNV9faGVscGVyc19fID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcblxu
LyogaGFybW9ueSBleHBvcnQgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKGV4cG9ydHMsIFwiYVwi
LCBmdW5jdGlvbigpIHsgcmV0dXJuIHVwZGF0ZVRvZG87IH0pOy8qIHVudXNlZCBoYXJtb255IGV4
cG9ydCBnZXRUb2RvICovLyogdW51c2VkIGhhcm1vbnkgZXhwb3J0IHN1YnNjcmliZSAqL1xuXG5c
blxuXG5cblxuXG5cbnZhciB0b2RvID0gdm9pZCAwO1xudmFyIHN1YnNjcmliZXJzID0gW107XG5c
bi8qKlxuICogU2V0cyB1cCBhIGJyYW5kIG5ldyBUb2RvIGxpc3QuXG4gKlxuICogQHBhcmFtIHtz
dHJpbmd9IG5hbWUgVGhlIG5hbWUgb2YgeW91ciBuZXcgdG8gZG8gbGlzdC5cbiAqL1xuZnVuY3Rp
b24gVG9kbyhuYW1lKSB7XG4gIHRoaXMuc3RvcmFnZSA9IG5ldyBfX1dFQlBBQ0tfSU1QT1JURURf
TU9EVUxFXzNfX3N0b3JlX19bXCJhXCIgLyogZGVmYXVsdCAqL10obmFtZSk7XG4gIHRoaXMubW9k
ZWwgPSBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19tb2RlbF9fW1wiYVwiIC8qIGRl
ZmF1bHQgKi9dKHRoaXMuc3RvcmFnZSk7XG4gIHRoaXMudGVtcGxhdGUgPSBuZXcgX19XRUJQQUNL
X0lNUE9SVEVEX01PRFVMRV80X190ZW1wbGF0ZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKCk7XG4g
IHRoaXMudmlldyA9IG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX3ZpZXdfX1tcImFc
IiAvKiBkZWZhdWx0ICovXSh0aGlzLnRlbXBsYXRlKTtcbiAgdGhpcy5jb250cm9sbGVyID0gbmV3
IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fY29udHJvbGxlcl9fW1wiYVwiIC8qIGRlZmF1
bHQgKi9dKHRoaXMubW9kZWwsIHRoaXMudmlldyk7XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZVRvZG8o
KSB7XG4gIHRvZG8gPSBuZXcgVG9kbygndG9kb3MtdmFuaWxsYWpzJyk7XG4gIHRvZG8uY29udHJv
bGxlci5zZXRWaWV3KGRvY3VtZW50LmxvY2F0aW9uLmhhc2gpO1xuICBzdWJzY3JpYmVycy5mb3JF
YWNoKGZ1bmN0aW9uIChzKSB7XG4gICAgcmV0dXJuIHMoKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9u
IGdldFRvZG8oKSB7XG4gIHJldHVybiB0b2RvO1xufVxuXG5mdW5jdGlvbiBzdWJzY3JpYmUoY2Ip
IHtcbiAgc3Vic2NyaWJlcnMucHVzaChjYik7XG4gIHJldHVybiBmdW5jdGlvbiB1bnN1YnNjcmli
ZSgpIHtcbiAgICBfX3dlYnBhY2tfcmVxdWlyZV9fLmkoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVM
RV81X19oZWxwZXJzX19bXCJmXCIgLyogcmVtb3ZlICovXSkoc3Vic2NyaWJlcnMsIGNiKTtcbiAg
fTtcbn1cblxuLyoqKi8gfSxcbi8qIDggKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0
cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkg
aW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNfXyA9IF9f
d2VicGFja19yZXF1aXJlX18oMCk7XG52YXIgX2NyZWF0ZUNsYXNzID0gZnVuY3Rpb24gKCkgeyBm
dW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7
IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNj
cmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2Ny
aXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBk
ZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwg
ZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH0gcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1
Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIGRlZmluZVBy
b3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1By
b3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBD
b25zdHJ1Y3RvcjsgfTsgfSgpO1xuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2Us
IENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7
IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25c
Iik7IH0gfVxuXG4vKiBlc2xpbnQgbm8taW52YWxpZC10aGlzOiAwLCBjb21wbGV4aXR5OlsyLCA5
XSAqL1xuXG5cbi8qKlxuICogVmlldyB0aGF0IGFic3RyYWN0cyBhd2F5IHRoZSBicm93c2VyJ3Mg
RE9NIGNvbXBsZXRlbHkuXG4gKiBJdCBoYXMgdHdvIHNpbXBsZSBlbnRyeSBwb2ludHM6XG4gKlxu
ICogICAtIGJpbmQoZXZlbnROYW1lLCBoYW5kbGVyKVxuICogICAgIFRha2VzIGEgdG9kbyBhcHBs
aWNhdGlvbiBldmVudCBhbmQgcmVnaXN0ZXJzIHRoZSBoYW5kbGVyXG4gKiAgIC0gcmVuZGVyKGNv
bW1hbmQsIHBhcmFtZXRlck9iamVjdClcbiAqICAgICBSZW5kZXJzIHRoZSBnaXZlbiBjb21tYW5k
IHdpdGggdGhlIG9wdGlvbnNcbiAqL1xuXG52YXIgVmlldyA9IGZ1bmN0aW9uICgpIHtcbiAgZnVu
Y3Rpb24gVmlldyh0ZW1wbGF0ZSkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBWaWV3KTtc
blxuICAgIHRoaXMudGVtcGxhdGUgPSB0ZW1wbGF0ZTtcblxuICAgIHRoaXMuRU5URVJfS0VZID0g
MTM7XG4gICAgdGhpcy5FU0NBUEVfS0VZID0gMjc7XG5cbiAgICB0aGlzLiR0b2RvTGlzdCA9IF9f
d2VicGFja19yZXF1aXJlX18uaShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNf
X1tcImFcIiAvKiBxcyAqL10pKCcudG9kby1saXN0Jyk7XG4gICAgdGhpcy4kdG9kb0l0ZW1Db3Vu
dGVyID0gX193ZWJwYWNrX3JlcXVpcmVfXy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9f
aGVscGVyc19fW1wiYVwiIC8qIHFzICovXSkoJy50b2RvLWNvdW50Jyk7XG4gICAgdGhpcy4kY2xl
YXJDb21wbGV0ZWQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmkoX19XRUJQQUNLX0lNUE9SVEVEX01P
RFVMRV8wX19oZWxwZXJzX19bXCJhXCIgLyogcXMgKi9dKSgnLmNsZWFyLWNvbXBsZXRlZCcpO1xu
ICAgIHRoaXMuJG1haW4gPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmkoX19XRUJQQUNLX0lNUE9SVEVE
X01PRFVMRV8wX19oZWxwZXJzX19bXCJhXCIgLyogcXMgKi9dKSgnLm1haW4nKTtcbiAgICB0aGlz
LiRmb290ZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmkoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVM
RV8wX19oZWxwZXJzX19bXCJhXCIgLyogcXMgKi9dKSgnLmZvb3RlcicpO1xuICAgIHRoaXMuJHRv
Z2dsZUFsbCA9IF9fd2VicGFja19yZXF1aXJlX18uaShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxF
XzBfX2hlbHBlcnNfX1tcImFcIiAvKiBxcyAqL10pKCcudG9nZ2xlLWFsbCcpO1xuICAgIHRoaXMu
JG5ld1RvZG8gPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmkoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVM
RV8wX19oZWxwZXJzX19bXCJhXCIgLyogcXMgKi9dKSgnLm5ldy10b2RvJyk7XG4gIH1cblxuICBf
Y3JlYXRlQ2xhc3MoVmlldywgW3tcbiAgICBrZXk6ICdfcmVtb3ZlSXRlbScsXG4gICAgdmFsdWU6
IGZ1bmN0aW9uIF9yZW1vdmVJdGVtKGlkKSB7XG4gICAgICB2YXIgZWxlbSA9IF9fd2VicGFja19y
ZXF1aXJlX18uaShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNfX1tcImFcIiAv
KiBxcyAqL10pKCdbZGF0YS1pZD1cIicgKyBpZCArICdcIl0nKTtcblxuICAgICAgaWYgKGVsZW0p
IHtcbiAgICAgICAgdGhpcy4kdG9kb0xpc3QucmVtb3ZlQ2hpbGQoZWxlbSk7XG4gICAgICB9XG4g
ICAgfVxuICB9LCB7XG4gICAga2V5OiAnX2NsZWFyQ29tcGxldGVkQnV0dG9uJyxcbiAgICB2YWx1
ZTogZnVuY3Rpb24gX2NsZWFyQ29tcGxldGVkQnV0dG9uKGNvbXBsZXRlZENvdW50LCB2aXNpYmxl
KSB7XG4gICAgICB0aGlzLiRjbGVhckNvbXBsZXRlZC5pbm5lckhUTUwgPSB0aGlzLnRlbXBsYXRl
LmNsZWFyQ29tcGxldGVkQnV0dG9uKGNvbXBsZXRlZENvdW50KTtcbiAgICAgIHRoaXMuJGNsZWFy
Q29tcGxldGVkLnN0eWxlLmRpc3BsYXkgPSB2aXNpYmxlID8gJ2Jsb2NrJyA6ICdub25lJztcbiAg
ICB9XG4gIH0sIHtcbiAgICBrZXk6ICdfZWRpdEl0ZW1Eb25lJyxcbiAgICB2YWx1ZTogZnVuY3Rp
b24gX2VkaXRJdGVtRG9uZShpZCwgdGl0bGUpIHtcbiAgICAgIHZhciBsaXN0SXRlbSA9IF9fd2Vi
cGFja19yZXF1aXJlX18uaShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNfX1tc
ImFcIiAvKiBxcyAqL10pKCdbZGF0YS1pZD1cIicgKyBpZCArICdcIl0nKTtcblxuICAgICAgaWYg
KCFsaXN0SXRlbSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBpbnB1
dCA9IF9fd2VicGFja19yZXF1aXJlX18uaShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2hl
bHBlcnNfX1tcImFcIiAvKiBxcyAqL10pKCdpbnB1dC5lZGl0JywgbGlzdEl0ZW0pO1xuICAgICAg
bGlzdEl0ZW0ucmVtb3ZlQ2hpbGQoaW5wdXQpO1xuXG4gICAgICBsaXN0SXRlbS5jbGFzc05hbWUg
PSBsaXN0SXRlbS5jbGFzc05hbWUucmVwbGFjZSgnZWRpdGluZycsICcnKTtcblxuICAgICAgX193
ZWJwYWNrX3JlcXVpcmVfXy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faGVscGVyc19f
W1wiYlwiIC8qIHFzYSAqL10pKCdsYWJlbCcsIGxpc3RJdGVtKS5mb3JFYWNoKGZ1bmN0aW9uIChs
YWJlbCkge1xuICAgICAgICBsYWJlbC50ZXh0Q29udGVudCA9IHRpdGxlO1xuICAgICAgfSk7XG4g
ICAgfVxuICB9LCB7XG4gICAga2V5OiAncmVuZGVyJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVu
ZGVyKHZpZXdDbWQsIHBhcmFtZXRlcikge1xuICAgICAgdmFyIHRoYXQgPSB0aGlzO1xuICAgICAg
dmFyIHZpZXdDb21tYW5kcyA9IHtcbiAgICAgICAgc2hvd0VudHJpZXM6IGZ1bmN0aW9uIHNob3dF
bnRyaWVzKCkge1xuICAgICAgICAgIHRoYXQuJHRvZG9MaXN0LmlubmVySFRNTCA9IHRoYXQudGVt
cGxhdGUuc2hvdyhwYXJhbWV0ZXIpO1xuICAgICAgICB9LFxuICAgICAgICByZW1vdmVJdGVtOiBm
dW5jdGlvbiByZW1vdmVJdGVtKCkge1xuICAgICAgICAgIHRoYXQuX3JlbW92ZUl0ZW0ocGFyYW1l
dGVyKTtcbiAgICAgICAgfSxcbiAgICAgICAgdXBkYXRlRWxlbWVudENvdW50OiBmdW5jdGlvbiB1
cGRhdGVFbGVtZW50Q291bnQoKSB7XG4gICAgICAgICAgdGhhdC4kdG9kb0l0ZW1Db3VudGVyLmlu
bmVySFRNTCA9IHRoYXQudGVtcGxhdGUuaXRlbUNvdW50ZXIocGFyYW1ldGVyKTtcbiAgICAgICAg
fSxcbiAgICAgICAgY2xlYXJDb21wbGV0ZWRCdXR0b246IGZ1bmN0aW9uIGNsZWFyQ29tcGxldGVk
QnV0dG9uKCkge1xuICAgICAgICAgIHRoYXQuX2NsZWFyQ29tcGxldGVkQnV0dG9uKHBhcmFtZXRl
ci5jb21wbGV0ZWQsIHBhcmFtZXRlci52aXNpYmxlKTtcbiAgICAgICAgfSxcbiAgICAgICAgY29u
dGVudEJsb2NrVmlzaWJpbGl0eTogZnVuY3Rpb24gY29udGVudEJsb2NrVmlzaWJpbGl0eSgpIHtc
biAgICAgICAgICB0aGF0LiRtYWluLnN0eWxlLmRpc3BsYXkgPSB0aGF0LiRmb290ZXIuc3R5bGUu
ZGlzcGxheSA9IHBhcmFtZXRlci52aXNpYmxlID8gJ2Jsb2NrJyA6ICdub25lJztcbiAgICAgICAg
fSxcbiAgICAgICAgdG9nZ2xlQWxsOiBmdW5jdGlvbiB0b2dnbGVBbGwoKSB7XG4gICAgICAgICAg
dGhhdC4kdG9nZ2xlQWxsLmNoZWNrZWQgPSBwYXJhbWV0ZXIuY2hlY2tlZDtcbiAgICAgICAgfSxc
biAgICAgICAgc2V0RmlsdGVyOiBmdW5jdGlvbiBzZXRGaWx0ZXIoKSB7XG4gICAgICAgICAgX3Nl
dEZpbHRlcihwYXJhbWV0ZXIpO1xuICAgICAgICB9LFxuICAgICAgICBjbGVhck5ld1RvZG86IGZ1
bmN0aW9uIGNsZWFyTmV3VG9kbygpIHtcbiAgICAgICAgICB0aGF0LiRuZXdUb2RvLnZhbHVlID0g
Jyc7XG4gICAgICAgIH0sXG4gICAgICAgIGVsZW1lbnRDb21wbGV0ZTogZnVuY3Rpb24gZWxlbWVu
dENvbXBsZXRlKCkge1xuICAgICAgICAgIF9lbGVtZW50Q29tcGxldGUocGFyYW1ldGVyLmlkLCBw
YXJhbWV0ZXIuY29tcGxldGVkKTtcbiAgICAgICAgfSxcbiAgICAgICAgZWRpdEl0ZW06IGZ1bmN0
aW9uIGVkaXRJdGVtKCkge1xuICAgICAgICAgIF9lZGl0SXRlbShwYXJhbWV0ZXIuaWQsIHBhcmFt
ZXRlci50aXRsZSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVkaXRJdGVtRG9uZTogZnVuY3Rpb24g
ZWRpdEl0ZW1Eb25lKCkge1xuICAgICAgICAgIHRoYXQuX2VkaXRJdGVtRG9uZShwYXJhbWV0ZXIu
aWQsIHBhcmFtZXRlci50aXRsZSk7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIHZpZXdD
b21tYW5kc1t2aWV3Q21kXSgpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ19iaW5kSXRlbUVk
aXREb25lJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gX2JpbmRJdGVtRWRpdERvbmUoaGFuZGxlcikg
e1xuICAgICAgdmFyIHRoYXQgPSB0aGlzO1xuICAgICAgX193ZWJwYWNrX3JlcXVpcmVfXy5pKF9f
V0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faGVscGVyc19fW1wiY1wiIC8qICRkZWxlZ2F0ZSAq
L10pKHRoYXQuJHRvZG9MaXN0LCAnbGkgLmVkaXQnLCAnYmx1cicsIGZ1bmN0aW9uICgpIHtcbiAg
ICAgICAgaWYgKCF0aGlzLmRhdGFzZXQuaXNjYW5jZWxlZCkge1xuICAgICAgICAgIGhhbmRsZXIo
e1xuICAgICAgICAgICAgaWQ6IF9pdGVtSWQodGhpcyksXG4gICAgICAgICAgICB0aXRsZTogdGhp
cy52YWx1ZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgX193
ZWJwYWNrX3JlcXVpcmVfXy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faGVscGVyc19f
W1wiY1wiIC8qICRkZWxlZ2F0ZSAqL10pKHRoYXQuJHRvZG9MaXN0LCAnbGkgLmVkaXQnLCAna2V5
cHJlc3MnLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09
IHRoYXQuRU5URVJfS0VZKSB7XG4gICAgICAgICAgLy8gUmVtb3ZlIHRoZSBjdXJzb3IgZnJvbSB0
aGUgaW5wdXQgd2hlbiB5b3UgaGl0IGVudGVyIGp1c3QgbGlrZSBpZiBpdFxuICAgICAgICAgIC8v
IHdlcmUgYSByZWFsIGZvcm1cbiAgICAgICAgICB0aGlzLmJsdXIoKTtcbiAgICAgICAgfVxuICAg
ICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnX2JpbmRJdGVtRWRpdENhbmNlbCcsXG4g
ICAgdmFsdWU6IGZ1bmN0aW9uIF9iaW5kSXRlbUVkaXRDYW5jZWwoaGFuZGxlcikge1xuICAgICAg
dmFyIHRoYXQgPSB0aGlzO1xuICAgICAgX193ZWJwYWNrX3JlcXVpcmVfXy5pKF9fV0VCUEFDS19J
TVBPUlRFRF9NT0RVTEVfMF9faGVscGVyc19fW1wiY1wiIC8qICRkZWxlZ2F0ZSAqL10pKHRoYXQu
JHRvZG9MaXN0LCAnbGkgLmVkaXQnLCAna2V5dXAnLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAg
ICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IHRoYXQuRVNDQVBFX0tFWSkge1xuICAgICAgICAgIHRo
aXMuZGF0YXNldC5pc2NhbmNlbGVkID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmJsdXIoKTtcblxu
ICAgICAgICAgIGhhbmRsZXIoeyBpZDogX2l0ZW1JZCh0aGlzKSB9KTtcbiAgICAgICAgfVxuICAg
ICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnYmluZCcsXG4gICAgdmFsdWU6IGZ1bmN0
aW9uIGJpbmQoZXZlbnQsIGhhbmRsZXIpIHtcbiAgICAgIHZhciB0aGF0ID0gdGhpcztcbiAgICAg
IGlmIChldmVudCA9PT0gJ25ld1RvZG8nKSB7XG4gICAgICAgIF9fd2VicGFja19yZXF1aXJlX18u
aShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNfX1tcImRcIiAvKiAkb24gKi9d
KSh0aGF0LiRuZXdUb2RvLCAnY2hhbmdlJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGhhbmRs
ZXIodGhhdC4kbmV3VG9kby52YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChl
dmVudCA9PT0gJ3JlbW92ZUNvbXBsZXRlZCcpIHtcbiAgICAgICAgX193ZWJwYWNrX3JlcXVpcmVf
Xy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faGVscGVyc19fW1wiZFwiIC8qICRvbiAq
L10pKHRoYXQuJGNsZWFyQ29tcGxldGVkLCAnY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gICAgICAg
ICAgaGFuZGxlcigpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQgPT09ICd0
b2dnbGVBbGwnKSB7XG4gICAgICAgIF9fd2VicGFja19yZXF1aXJlX18uaShfX1dFQlBBQ0tfSU1Q
T1JURURfTU9EVUxFXzBfX2hlbHBlcnNfX1tcImRcIiAvKiAkb24gKi9dKSh0aGF0LiR0b2dnbGVB
bGwsICdjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBoYW5kbGVyKHsgY29tcGxldGVk
OiB0aGlzLmNoZWNrZWQgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChldmVudCA9
PT0gJ2l0ZW1FZGl0Jykge1xuICAgICAgICBfX3dlYnBhY2tfcmVxdWlyZV9fLmkoX19XRUJQQUNL
X0lNUE9SVEVEX01PRFVMRV8wX19oZWxwZXJzX19bXCJjXCIgLyogJGRlbGVnYXRlICovXSkodGhh
dC4kdG9kb0xpc3QsICdsaSBsYWJlbCcsICdkYmxjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgICAg
ICAgICBoYW5kbGVyKHsgaWQ6IF9pdGVtSWQodGhpcykgfSk7XG4gICAgICAgIH0pO1xuICAgICAg
fSBlbHNlIGlmIChldmVudCA9PT0gJ2l0ZW1SZW1vdmUnKSB7XG4gICAgICAgIF9fd2VicGFja19y
ZXF1aXJlX18uaShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNfX1tcImNcIiAv
KiAkZGVsZWdhdGUgKi9dKSh0aGF0LiR0b2RvTGlzdCwgJy5kZXN0cm95JywgJ2NsaWNrJywgZnVu
Y3Rpb24gKCkge1xuICAgICAgICAgIGhhbmRsZXIoeyBpZDogX2l0ZW1JZCh0aGlzKSB9KTtcbiAg
ICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKGV2ZW50ID09PSAnaXRlbVRvZ2dsZScpIHtcbiAg
ICAgICAgX193ZWJwYWNrX3JlcXVpcmVfXy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9f
aGVscGVyc19fW1wiY1wiIC8qICRkZWxlZ2F0ZSAqL10pKHRoYXQuJHRvZG9MaXN0LCAnLnRvZ2ds
ZScsICdjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBoYW5kbGVyKHtcbiAgICAgICAg
ICAgIGlkOiBfaXRlbUlkKHRoaXMpLFxuICAgICAgICAgICAgY29tcGxldGVkOiB0aGlzLmNoZWNr
ZWRcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKGV2ZW50ID09
PSAnaXRlbUVkaXREb25lJykge1xuICAgICAgICB0aGF0Ll9iaW5kSXRlbUVkaXREb25lKGhhbmRs
ZXIpO1xuICAgICAgfSBlbHNlIGlmIChldmVudCA9PT0gJ2l0ZW1FZGl0Q2FuY2VsJykge1xuICAg
ICAgICB0aGF0Ll9iaW5kSXRlbUVkaXRDYW5jZWwoaGFuZGxlcik7XG4gICAgICB9XG4gICAgfVxu
ICB9XSk7XG5cbiAgcmV0dXJuIFZpZXc7XG59KCk7XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBv
cnQgKi8gZXhwb3J0c1tcImFcIl0gPSBWaWV3O1xuXG5cbmZ1bmN0aW9uIF9zZXRGaWx0ZXIoY3Vy
cmVudFBhZ2UpIHtcbiAgX193ZWJwYWNrX3JlcXVpcmVfXy5pKF9fV0VCUEFDS19JTVBPUlRFRF9N
T0RVTEVfMF9faGVscGVyc19fW1wiYVwiIC8qIHFzICovXSkoJy5maWx0ZXJzIC5zZWxlY3RlZCcp
LmNsYXNzTmFtZSA9ICcnO1xuICBfX3dlYnBhY2tfcmVxdWlyZV9fLmkoX19XRUJQQUNLX0lNUE9S
VEVEX01PRFVMRV8wX19oZWxwZXJzX19bXCJhXCIgLyogcXMgKi9dKSgnLmZpbHRlcnMgW2hyZWY9
XCIjLycgKyBjdXJyZW50UGFnZSArICdcIl0nKS5jbGFzc05hbWUgPSAnc2VsZWN0ZWQnO1xufVxu
XG5mdW5jdGlvbiBfZWxlbWVudENvbXBsZXRlKGlkLCBjb21wbGV0ZWQpIHtcbiAgdmFyIGxpc3RJ
dGVtID0gX193ZWJwYWNrX3JlcXVpcmVfXy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9f
aGVscGVyc19fW1wiYVwiIC8qIHFzICovXSkoJ1tkYXRhLWlkPVwiJyArIGlkICsgJ1wiXScpO1xu
XG4gIGlmICghbGlzdEl0ZW0pIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBsaXN0SXRlbS5jbGFz
c05hbWUgPSBjb21wbGV0ZWQgPyAnY29tcGxldGVkJyA6ICcnO1xuXG4gIC8vIEluIGNhc2UgaXQg
d2FzIHRvZ2dsZWQgZnJvbSBhbiBldmVudCBhbmQgbm90IGJ5IGNsaWNraW5nIHRoZSBjaGVja2Jv
eFxuICBfX3dlYnBhY2tfcmVxdWlyZV9fLmkoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19o
ZWxwZXJzX19bXCJhXCIgLyogcXMgKi9dKSgnaW5wdXQnLCBsaXN0SXRlbSkuY2hlY2tlZCA9IGNv
bXBsZXRlZDtcbn1cblxuZnVuY3Rpb24gX2VkaXRJdGVtKGlkLCB0aXRsZSkge1xuICB2YXIgbGlz
dEl0ZW0gPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmkoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8w
X19oZWxwZXJzX19bXCJhXCIgLyogcXMgKi9dKSgnW2RhdGEtaWQ9XCInICsgaWQgKyAnXCJdJyk7
XG5cbiAgaWYgKCFsaXN0SXRlbSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGxpc3RJdGVtLmNs
YXNzTmFtZSA9IGxpc3RJdGVtLmNsYXNzTmFtZSArICcgZWRpdGluZyc7XG5cbiAgdmFyIGlucHV0
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtcbiAgaW5wdXQuY2xhc3NOYW1lID0g
J2VkaXQnO1xuXG4gIGxpc3RJdGVtLmFwcGVuZENoaWxkKGlucHV0KTtcbiAgaW5wdXQuZm9jdXMo
KTtcbiAgaW5wdXQudmFsdWUgPSB0aXRsZTtcbn1cblxuZnVuY3Rpb24gX2l0ZW1JZChlbGVtZW50
KSB7XG4gIHZhciBsaSA9IF9fd2VicGFja19yZXF1aXJlX18uaShfX1dFQlBBQ0tfSU1QT1JURURf
TU9EVUxFXzBfX2hlbHBlcnNfX1tcImVcIiAvKiAkcGFyZW50ICovXSkoZWxlbWVudCwgJ2xpJyk7
XG4gIHJldHVybiBwYXJzZUludChsaS5kYXRhc2V0LmlkLCAxMCk7XG59XG5cbi8qKiovIH0sXG4v
KiA5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuLy8gcmVtb3ZlZCBi
eSBleHRyYWN0LXRleHQtd2VicGFjay1wbHVnaW5cblxuLyoqKi8gfSxcbi8qIDEwICovXG4vKioq
LyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1
c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVE
X01PRFVMRV8wX19hcHBfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG4vKiBoYXJtb255IGlt
cG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19oZWxwZXJzX18gPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDApO1xuLyogZXNsaW50IG5vLWNvbnNvbGU6MCAqL1xuXG5cblxuLy8g
dGhpcyBpcyBvbmx5IHJlbGV2YW50IHdoZW4gdXNpbmcgYGhvdGAgbW9kZSB3aXRoIHdlYnBhY2tc
bi8vIHNwZWNpYWwgdGhhbmtzIHRvIEVyaWMgQ2xlbW1vbnM6IGh0dHBzOi8vZ2l0aHViLmNvbS9l
cmljY2xlbW1vbnMvd2VicGFjay1ob3Qtc2VydmVyLWV4YW1wbGVcbnZhciByZWxvYWRpbmcgPSBk
b2N1bWVudC5yZWFkeVN0YXRlID09PSAnY29tcGxldGUnO1xuaWYgKGZhbHNlKSB7XG4gIG1vZHVs
ZS5ob3QuYWNjZXB0KGZ1bmN0aW9uIChlcnIpIHt9KTtcbiAgaWYgKHJlbG9hZGluZykge1xuICAg
IG9uTG9hZCgpO1xuICB9IGVsc2Uge1xuICAgIGJvb3RzdHJhcCgpO1xuICB9XG59IGVsc2Uge1xu
ICBib290c3RyYXAoKTtcbn1cblxuZnVuY3Rpb24gYm9vdHN0cmFwKCkge1xuICBfX3dlYnBhY2tf
cmVxdWlyZV9fLmkoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19oZWxwZXJzX19bXCJkXCIg
LyogJG9uICovXSkod2luZG93LCAnbG9hZCcsIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9f
YXBwX19bXCJhXCIgLyogb25Mb2FkICovXSk7XG4gIF9fd2VicGFja19yZXF1aXJlX18uaShfX1dF
QlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2hlbHBlcnNfX1tcImRcIiAvKiAkb24gKi9dKSh3aW5k
b3csICdoYXNoY2hhbmdlJywgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19hcHBfX1tcImFc
IiAvKiBvbkxvYWQgKi9dKTtcbn1cblxuLyoqKi8gfVxuXSxbMTBdKTtcblxuXG4vLyBXRUJQQUNL
IEZPT1RFUiAvL1xuLy8gYnVuZGxlLmFwcC40MjFlYjZiYWNhMDIyMThlOTg1ZS5qcyIsImV4cG9y
dCB7cXMsIHFzYSwgJG9uLCAkZGVsZWdhdGUsICRwYXJlbnQsIHJlbW92ZX1cblxuLy8gR2V0IGVs
ZW1lbnQocykgYnkgQ1NTIHNlbGVjdG9yOlxuZnVuY3Rpb24gcXMoc2VsZWN0b3IsIHNjb3BlKSB7
XG4gIHJldHVybiAoc2NvcGUgfHwgZG9jdW1lbnQpLnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpXG59
XG5cbmZ1bmN0aW9uIHFzYShzZWxlY3Rvciwgc2NvcGUpIHtcbiAgcmV0dXJuIChzY29wZSB8fCBk
b2N1bWVudCkucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcilcbn1cblxuLy8gYWRkRXZlbnRMaXN0
ZW5lciB3cmFwcGVyOlxuZnVuY3Rpb24gJG9uKHRhcmdldCwgdHlwZSwgY2FsbGJhY2ssIHVzZUNh
cHR1cmUpIHtcbiAgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIodHlwZSwgY2FsbGJhY2ssICEhdXNl
Q2FwdHVyZSlcbn1cblxuLy8gQXR0YWNoIGEgaGFuZGxlciB0byBldmVudCBmb3IgYWxsIGVsZW1l
bnRzIHRoYXQgbWF0Y2ggdGhlIHNlbGVjdG9yLFxuLy8gbm93IG9yIGluIHRoZSBmdXR1cmUsIGJh
c2VkIG9uIGEgcm9vdCBlbGVtZW50XG5mdW5jdGlvbiAkZGVsZWdhdGUodGFyZ2V0LCBzZWxlY3Rv
ciwgdHlwZSwgaGFuZGxlcikge1xuICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9l
bi1VUy9kb2NzL1dlYi9FdmVudHMvYmx1clxuICB2YXIgdXNlQ2FwdHVyZSA9IHR5cGUgPT09ICdi
bHVyJyB8fCB0eXBlID09PSAnZm9jdXMnXG4gICRvbih0YXJnZXQsIHR5cGUsIGRpc3BhdGNoRXZl
bnQsIHVzZUNhcHR1cmUpXG5cbiAgZnVuY3Rpb24gZGlzcGF0Y2hFdmVudChldmVudCkge1xuICAg
IHZhciB0YXJnZXRFbGVtZW50ID0gZXZlbnQudGFyZ2V0XG4gICAgdmFyIHBvdGVudGlhbEVsZW1l
bnRzID0gcXNhKHNlbGVjdG9yLCB0YXJnZXQpXG4gICAgdmFyIGhhc01hdGNoID0gQXJyYXkucHJv
dG90eXBlLmluZGV4T2YuY2FsbChwb3RlbnRpYWxFbGVtZW50cywgdGFyZ2V0RWxlbWVudCkgPj0g
MFxuXG4gICAgaWYgKGhhc01hdGNoKSB7XG4gICAgICBoYW5kbGVyLmNhbGwodGFyZ2V0RWxlbWVu
dCwgZXZlbnQpXG4gICAgfVxuICB9XG59XG5cbi8vIEZpbmQgdGhlIGVsZW1lbnQncyBwYXJlbnQg
d2l0aCB0aGUgZ2l2ZW4gdGFnIG5hbWU6XG4vLyAkcGFyZW50KHFzKCdhJyksICdkaXYnKTtcbmZ1
bmN0aW9uICRwYXJlbnQoZWxlbWVudCwgdGFnTmFtZSkge1xuICBpZiAoIWVsZW1lbnQucGFyZW50
Tm9kZSkge1xuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuICBpZiAoZWxlbWVudC5wYXJlbnRO
b2RlLnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gdGFnTmFtZS50b0xvd2VyQ2FzZSgpKSB7XG4g
ICAgcmV0dXJuIGVsZW1lbnQucGFyZW50Tm9kZVxuICB9XG4gIHJldHVybiAkcGFyZW50KGVsZW1l
bnQucGFyZW50Tm9kZSwgdGFnTmFtZSlcbn1cblxuLy8gcmVtb3ZlcyBhbiBlbGVtZW50IGZyb20g
YW4gYXJyYXlcbi8vIGNvbnN0IHggPSBbMSwyLDNdXG4vLyByZW1vdmUoeCwgMilcbi8vIHggfj09
IFsxLDNdXG5mdW5jdGlvbiByZW1vdmUoYXJyYXksIHRoaW5nKSB7XG4gIGNvbnN0IGluZGV4ID0g
YXJyYXkuaW5kZXhPZih0aGluZylcbiAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgIHJldHVybiBh
cnJheVxuICB9XG4gIGFycmF5LnNwbGljZShpbmRleCwgMSlcbn1cblxuLy8gQWxsb3cgZm9yIGxv
b3Bpbmcgb24gbm9kZXMgYnkgY2hhaW5pbmc6XG4vLyBxc2EoJy5mb28nKS5mb3JFYWNoKGZ1bmN0
aW9uICgpIHt9KVxuTm9kZUxpc3QucHJvdG90eXBlLmZvckVhY2ggPSBBcnJheS5wcm90b3R5cGUu
Zm9yRWFjaFxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vaGVscGVycy5qcyIsImlt
cG9ydCAndG9kb212Yy1hcHAtY3NzL2luZGV4LmNzcydcbmltcG9ydCAnLi9hcHAuY3NzJ1xuXG5p
bXBvcnQgeyRvbn0gZnJvbSAnLi9oZWxwZXJzJ1xuaW1wb3J0IHt1cGRhdGVUb2RvfSBmcm9tICcu
L3RvZG8nXG5cbmV4cG9ydCBmdW5jdGlvbiBvbkxvYWQoKSB7IC8vIGVzbGludC1kaXNhYmxlLWxp
bmUgaW1wb3J0L3ByZWZlci1kZWZhdWx0LWV4cG9ydFxuICB1cGRhdGVUb2RvKClcbn1cblxuXG5c
bi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL2FwcC5qcyIsImV4cG9ydCBkZWZhdWx0IENvbnRy
b2xsZXJcblxuLyoqXG4qIFRha2VzIGEgbW9kZWwgYW5kIHZpZXcgYW5kIGFjdHMgYXMgdGhlIGNv
bnRyb2xsZXIgYmV0d2VlbiB0aGVtXG4qXG4qIEBjb25zdHJ1Y3RvclxuKiBAcGFyYW0ge29iamVj
dH0gbW9kZWwgVGhlIG1vZGVsIGluc3RhbmNlXG4qIEBwYXJhbSB7b2JqZWN0fSB2aWV3IFRoZSB2
aWV3IGluc3RhbmNlXG4qL1xuZnVuY3Rpb24gQ29udHJvbGxlcihtb2RlbCwgdmlldykge1xuICB2
YXIgdGhhdCA9IHRoaXNcbiAgdGhhdC5tb2RlbCA9IG1vZGVsXG4gIHRoYXQudmlldyA9IHZpZXdc
blxuICB0aGF0LnZpZXcuYmluZCgnbmV3VG9kbycsIGZ1bmN0aW9uKHRpdGxlKSB7XG4gICAgdGhh
dC5hZGRJdGVtKHRpdGxlKVxuICB9KVxuXG4gIHRoYXQudmlldy5iaW5kKCdpdGVtRWRpdCcsIGZ1
bmN0aW9uKGl0ZW0pIHtcbiAgICB0aGF0LmVkaXRJdGVtKGl0ZW0uaWQpXG4gIH0pXG5cbiAgdGhh
dC52aWV3LmJpbmQoJ2l0ZW1FZGl0RG9uZScsIGZ1bmN0aW9uKGl0ZW0pIHtcbiAgICB0aGF0LmVk
aXRJdGVtU2F2ZShpdGVtLmlkLCBpdGVtLnRpdGxlKVxuICB9KVxuXG4gIHRoYXQudmlldy5iaW5k
KCdpdGVtRWRpdENhbmNlbCcsIGZ1bmN0aW9uKGl0ZW0pIHtcbiAgICB0aGF0LmVkaXRJdGVtQ2Fu
Y2VsKGl0ZW0uaWQpXG4gIH0pXG5cbiAgdGhhdC52aWV3LmJpbmQoJ2l0ZW1SZW1vdmUnLCBmdW5j
dGlvbihpdGVtKSB7XG4gICAgdGhhdC5yZW1vdmVJdGVtKGl0ZW0uaWQpXG4gIH0pXG5cbiAgdGhh
dC52aWV3LmJpbmQoJ2l0ZW1Ub2dnbGUnLCBmdW5jdGlvbihpdGVtKSB7XG4gICAgdGhhdC50b2dn
bGVDb21wbGV0ZShpdGVtLmlkLCBpdGVtLmNvbXBsZXRlZClcbiAgfSlcblxuICB0aGF0LnZpZXcu
YmluZCgncmVtb3ZlQ29tcGxldGVkJywgZnVuY3Rpb24oKSB7XG4gICAgdGhhdC5yZW1vdmVDb21w
bGV0ZWRJdGVtcygpXG4gIH0pXG5cbiAgdGhhdC52aWV3LmJpbmQoJ3RvZ2dsZUFsbCcsIGZ1bmN0
aW9uKHN0YXR1cykge1xuICAgIHRoYXQudG9nZ2xlQWxsKHN0YXR1cy5jb21wbGV0ZWQpXG4gIH0p
XG59XG5cbi8qKlxuKiBMb2FkcyBhbmQgaW5pdGlhbGlzZXMgdGhlIHZpZXdcbipcbiogQHBhcmFt
IHtzdHJpbmd9ICcnIHwgJ2FjdGl2ZScgfCAnY29tcGxldGVkJ1xuKi9cbkNvbnRyb2xsZXIucHJv
dG90eXBlLnNldFZpZXcgPSBmdW5jdGlvbihsb2NhdGlvbkhhc2gpIHtcbiAgdmFyIHJvdXRlID0g
bG9jYXRpb25IYXNoLnNwbGl0KCcvJylbMV1cbiAgdmFyIHBhZ2UgPSByb3V0ZSB8fCAnJ1xuICB0
aGlzLl91cGRhdGVGaWx0ZXJTdGF0ZShwYWdlKVxufVxuXG4vKipcbiogQW4gZXZlbnQgdG8gZmly
ZSBvbiBsb2FkLiBXaWxsIGdldCBhbGwgaXRlbXMgYW5kIGRpc3BsYXkgdGhlbSBpbiB0aGVcbiog
dG9kby1saXN0XG4qL1xuQ29udHJvbGxlci5wcm90b3R5cGUuc2hvd0FsbCA9IGZ1bmN0aW9uKCkg
e1xuICB2YXIgdGhhdCA9IHRoaXNcbiAgdGhhdC5tb2RlbC5yZWFkKGZ1bmN0aW9uKGRhdGEpIHtc
biAgICB0aGF0LnZpZXcucmVuZGVyKCdzaG93RW50cmllcycsIGRhdGEpXG4gIH0pXG59XG5cbi8q
KlxuKiBSZW5kZXJzIGFsbCBhY3RpdmUgdGFza3NcbiovXG5Db250cm9sbGVyLnByb3RvdHlwZS5z
aG93QWN0aXZlID0gZnVuY3Rpb24oKSB7XG4gIHZhciB0aGF0ID0gdGhpc1xuICB0aGF0Lm1vZGVs
LnJlYWQoe2NvbXBsZXRlZDogZmFsc2V9LCBmdW5jdGlvbihkYXRhKSB7XG4gICAgdGhhdC52aWV3
LnJlbmRlcignc2hvd0VudHJpZXMnLCBkYXRhKVxuICB9KVxufVxuXG4vKipcbiogUmVuZGVycyBh
bGwgY29tcGxldGVkIHRhc2tzXG4qL1xuQ29udHJvbGxlci5wcm90b3R5cGUuc2hvd0NvbXBsZXRl
ZCA9IGZ1bmN0aW9uKCkge1xuICB2YXIgdGhhdCA9IHRoaXNcbiAgdGhhdC5tb2RlbC5yZWFkKHtj
b21wbGV0ZWQ6IHRydWV9LCBmdW5jdGlvbihkYXRhKSB7XG4gICAgdGhhdC52aWV3LnJlbmRlcign
c2hvd0VudHJpZXMnLCBkYXRhKVxuICB9KVxufVxuXG4vKipcbiogQW4gZXZlbnQgdG8gZmlyZSB3
aGVuZXZlciB5b3Ugd2FudCB0byBhZGQgYW4gaXRlbS4gU2ltcGx5IHBhc3MgaW4gdGhlIGV2ZW50
XG4qIG9iamVjdCBhbmQgaXQnbGwgaGFuZGxlIHRoZSBET00gaW5zZXJ0aW9uIGFuZCBzYXZpbmcg
b2YgdGhlIG5ldyBpdGVtLlxuKi9cbkNvbnRyb2xsZXIucHJvdG90eXBlLmFkZEl0ZW0gPSBmdW5j
dGlvbih0aXRsZSkge1xuICB2YXIgdGhhdCA9IHRoaXNcblxuICBpZiAodGl0bGUudHJpbSgpID09
PSAnJykge1xuICAgIHJldHVyblxuICB9XG5cbiAgdGhhdC5tb2RlbC5jcmVhdGUodGl0bGUsIGZ1
bmN0aW9uKCkge1xuICAgIHRoYXQudmlldy5yZW5kZXIoJ2NsZWFyTmV3VG9kbycpXG4gICAgdGhh
dC5fZmlsdGVyKHRydWUpXG4gIH0pXG59XG5cbi8qXG4qIFRyaWdnZXJzIHRoZSBpdGVtIGVkaXRp
bmcgbW9kZS5cbiovXG5Db250cm9sbGVyLnByb3RvdHlwZS5lZGl0SXRlbSA9IGZ1bmN0aW9uKGlk
KSB7XG4gIHZhciB0aGF0ID0gdGhpc1xuICB0aGF0Lm1vZGVsLnJlYWQoaWQsIGZ1bmN0aW9uKGRh
dGEpIHtcbiAgICB0aGF0LnZpZXcucmVuZGVyKCdlZGl0SXRlbScsIHtpZCwgdGl0bGU6IGRhdGFb
MF0udGl0bGV9KVxuICB9KVxufVxuXG4vKlxuKiBGaW5pc2hlcyB0aGUgaXRlbSBlZGl0aW5nIG1v
ZGUgc3VjY2Vzc2Z1bGx5LlxuKi9cbkNvbnRyb2xsZXIucHJvdG90eXBlLmVkaXRJdGVtU2F2ZSA9
IGZ1bmN0aW9uKGlkLCB0aXRsZSkge1xuICB2YXIgdGhhdCA9IHRoaXNcbiAgaWYgKHRpdGxlLnRy
aW0oKSkge1xuICAgIHRoYXQubW9kZWwudXBkYXRlKGlkLCB7dGl0bGV9LCBmdW5jdGlvbigpIHtc
biAgICAgIHRoYXQudmlldy5yZW5kZXIoJ2VkaXRJdGVtRG9uZScsIHtpZCwgdGl0bGV9KVxuICAg
IH0pXG4gIH0gZWxzZSB7XG4gICAgdGhhdC5yZW1vdmVJdGVtKGlkKVxuICB9XG59XG5cbi8qXG4q
IENhbmNlbHMgdGhlIGl0ZW0gZWRpdGluZyBtb2RlLlxuKi9cbkNvbnRyb2xsZXIucHJvdG90eXBl
LmVkaXRJdGVtQ2FuY2VsID0gZnVuY3Rpb24oaWQpIHtcbiAgdmFyIHRoYXQgPSB0aGlzXG4gIHRo
YXQubW9kZWwucmVhZChpZCwgZnVuY3Rpb24oZGF0YSkge1xuICAgIHRoYXQudmlldy5yZW5kZXIo
J2VkaXRJdGVtRG9uZScsIHtpZCwgdGl0bGU6IGRhdGFbMF0udGl0bGV9KVxuICB9KVxufVxuXG4v
KipcbiogQnkgZ2l2aW5nIGl0IGFuIElEIGl0J2xsIGZpbmQgdGhlIERPTSBlbGVtZW50IG1hdGNo
aW5nIHRoYXQgSUQsXG4qIHJlbW92ZSBpdCBmcm9tIHRoZSBET00gYW5kIGFsc28gcmVtb3ZlIGl0
IGZyb20gc3RvcmFnZS5cbipcbiogQHBhcmFtIHtudW1iZXJ9IGlkIFRoZSBJRCBvZiB0aGUgaXRl
bSB0byByZW1vdmUgZnJvbSB0aGUgRE9NIGFuZFxuKiBzdG9yYWdlXG4qL1xuQ29udHJvbGxlci5w
cm90b3R5cGUucmVtb3ZlSXRlbSA9IGZ1bmN0aW9uKGlkKSB7XG4gIHZhciB0aGF0ID0gdGhpc1xu
ICB0aGF0Lm1vZGVsLnJlbW92ZShpZCwgZnVuY3Rpb24oKSB7XG4gICAgdGhhdC52aWV3LnJlbmRl
cigncmVtb3ZlSXRlbScsIGlkKVxuICB9KVxuXG4gIHRoYXQuX2ZpbHRlcigpXG59XG5cbi8qKlxu
KiBXaWxsIHJlbW92ZSBhbGwgY29tcGxldGVkIGl0ZW1zIGZyb20gdGhlIERPTSBhbmQgc3RvcmFn
ZS5cbiovXG5Db250cm9sbGVyLnByb3RvdHlwZS5yZW1vdmVDb21wbGV0ZWRJdGVtcyA9IGZ1bmN0
aW9uKCkge1xuICB2YXIgdGhhdCA9IHRoaXNcbiAgdGhhdC5tb2RlbC5yZWFkKHtjb21wbGV0ZWQ6
IHRydWV9LCBmdW5jdGlvbihkYXRhKSB7XG4gICAgZGF0YS5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0p
IHtcbiAgICAgIHRoYXQucmVtb3ZlSXRlbShpdGVtLmlkKVxuICAgIH0pXG4gIH0pXG5cbiAgdGhh
dC5fZmlsdGVyKClcbn1cblxuLyoqXG4qIEdpdmUgaXQgYW4gSUQgb2YgYSBtb2RlbCBhbmQgYSBj
aGVja2JveCBhbmQgaXQgd2lsbCB1cGRhdGUgdGhlIGl0ZW1cbiogaW4gc3RvcmFnZSBiYXNlZCBv
biB0aGUgY2hlY2tib3gncyBzdGF0ZS5cbipcbiogQHBhcmFtIHtudW1iZXJ9IGlkIFRoZSBJRCBv
ZiB0aGUgZWxlbWVudCB0byBjb21wbGV0ZSBvciB1bmNvbXBsZXRlXG4qIEBwYXJhbSB7b2JqZWN0
fSBjaGVja2JveCBUaGUgY2hlY2tib3ggdG8gY2hlY2sgdGhlIHN0YXRlIG9mIGNvbXBsZXRlXG4q
ICAgICAgICAgICAgICAgICAgICAgICAgICBvciBub3RcbiogQHBhcmFtIHtib29sZWFufHVuZGVm
aW5lZH0gc2lsZW50IFByZXZlbnQgcmUtZmlsdGVyaW5nIHRoZSB0b2RvIGl0ZW1zXG4qL1xuQ29u
dHJvbGxlci5wcm90b3R5cGUudG9nZ2xlQ29tcGxldGUgPSBmdW5jdGlvbihpZCwgY29tcGxldGVk
LCBzaWxlbnQpIHtcbiAgdmFyIHRoYXQgPSB0aGlzXG4gIHRoYXQubW9kZWwudXBkYXRlKGlkLCB7
Y29tcGxldGVkfSwgZnVuY3Rpb24oKSB7XG4gICAgdGhhdC52aWV3LnJlbmRlcignZWxlbWVudENv
bXBsZXRlJywge1xuICAgICAgaWQsXG4gICAgICBjb21wbGV0ZWQsXG4gICAgfSlcbiAgfSlcblxu
ICBpZiAoIXNpbGVudCkge1xuICAgIHRoYXQuX2ZpbHRlcigpXG4gIH1cbn1cblxuLyoqXG4qIFdp
bGwgdG9nZ2xlIEFMTCBjaGVja2JveGVzJyBvbi9vZmYgc3RhdGUgYW5kIGNvbXBsZXRlbmVzcyBv
ZiBtb2RlbHMuXG4qIEp1c3QgcGFzcyBpbiB0aGUgZXZlbnQgb2JqZWN0LlxuKi9cbkNvbnRyb2xs
ZXIucHJvdG90eXBlLnRvZ2dsZUFsbCA9IGZ1bmN0aW9uKGNvbXBsZXRlZCkge1xuICB2YXIgdGhh
dCA9IHRoaXNcbiAgdGhhdC5tb2RlbC5yZWFkKHtjb21wbGV0ZWQ6ICFjb21wbGV0ZWR9LCBmdW5j
dGlvbihkYXRhKSB7XG4gICAgZGF0YS5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0pIHtcbiAgICAgIHRo
YXQudG9nZ2xlQ29tcGxldGUoaXRlbS5pZCwgY29tcGxldGVkLCB0cnVlKVxuICAgIH0pXG4gIH0p
XG5cbiAgdGhhdC5fZmlsdGVyKClcbn1cblxuLyoqXG4qIFVwZGF0ZXMgdGhlIHBpZWNlcyBvZiB0
aGUgcGFnZSB3aGljaCBjaGFuZ2UgZGVwZW5kaW5nIG9uIHRoZSByZW1haW5pbmdcbiogbnVtYmVy
IG9mIHRvZG9zLlxuKi9cbkNvbnRyb2xsZXIucHJvdG90eXBlLl91cGRhdGVDb3VudCA9IGZ1bmN0
aW9uKCkge1xuICB2YXIgdGhhdCA9IHRoaXNcbiAgdGhhdC5tb2RlbC5nZXRDb3VudChmdW5jdGlv
bih0b2Rvcykge1xuICAgIHRoYXQudmlldy5yZW5kZXIoJ3VwZGF0ZUVsZW1lbnRDb3VudCcsIHRv
ZG9zLmFjdGl2ZSlcbiAgICB0aGF0LnZpZXcucmVuZGVyKCdjbGVhckNvbXBsZXRlZEJ1dHRvbics
IHtcbiAgICAgIGNvbXBsZXRlZDogdG9kb3MuY29tcGxldGVkLFxuICAgICAgdmlzaWJsZTogdG9k
b3MuY29tcGxldGVkID4gMFxuICAgIH0pXG5cbiAgICB0aGF0LnZpZXcucmVuZGVyKCd0b2dnbGVB
bGwnLCB7Y2hlY2tlZDogdG9kb3MuY29tcGxldGVkID09PSB0b2Rvcy50b3RhbH0pXG4gICAgdGhh
dC52aWV3LnJlbmRlcignY29udGVudEJsb2NrVmlzaWJpbGl0eScsIHt2aXNpYmxlOiB0b2Rvcy50
b3RhbCA+IDB9KVxuICB9KVxufVxuXG4vKipcbiogUmUtZmlsdGVycyB0aGUgdG9kbyBpdGVtcywg
YmFzZWQgb24gdGhlIGFjdGl2ZSByb3V0ZS5cbiogQHBhcmFtIHtib29sZWFufHVuZGVmaW5lZH0g
Zm9yY2UgIGZvcmNlcyBhIHJlLXBhaW50aW5nIG9mIHRvZG8gaXRlbXMuXG4qL1xuQ29udHJvbGxl
ci5wcm90b3R5cGUuX2ZpbHRlciA9IGZ1bmN0aW9uKGZvcmNlKSB7XG4gIHZhciBhY3RpdmVSb3V0
ZSA9IHRoaXMuX2FjdGl2ZVJvdXRlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgdGhpcy5fYWN0
aXZlUm91dGUuc3Vic3RyKDEpXG5cbiAgLy8gVXBkYXRlIHRoZSBlbGVtZW50cyBvbiB0aGUgcGFn
ZSwgd2hpY2ggY2hhbmdlIHdpdGggZWFjaCBjb21wbGV0ZWQgdG9kb1xuICB0aGlzLl91cGRhdGVD
b3VudCgpXG5cbiAgLy8gSWYgdGhlIGxhc3QgYWN0aXZlIHJvdXRlIGlzbid0IFwiQWxsXCIsIG9y
IHdlJ3JlIHN3aXRjaGluZyByb3V0ZXMsIHdlXG4gIC8vIHJlLWNyZWF0ZSB0aGUgdG9kbyBpdGVt
IGVsZW1lbnRzLCBjYWxsaW5nOlxuICAvLyAgIHRoaXMuc2hvd1tBbGx8QWN0aXZlfENvbXBsZXRl
ZF0oKTtcbiAgaWYgKGZvcmNlIHx8IHRoaXMuX2xhc3RBY3RpdmVSb3V0ZSAhPT0gJ0FsbCcgfHwg
dGhpcy5fbGFzdEFjdGl2ZVJvdXRlICE9PSBhY3RpdmVSb3V0ZSkge1xuICAgIHRoaXNbJ3Nob3cn
ICsgYWN0aXZlUm91dGVdKClcbiAgfVxuXG4gIHRoaXMuX2xhc3RBY3RpdmVSb3V0ZSA9IGFjdGl2
ZVJvdXRlXG59XG5cbi8qKlxuKiBTaW1wbHkgdXBkYXRlcyB0aGUgZmlsdGVyIG5hdidzIHNlbGVj
dGVkIHN0YXRlc1xuKi9cbkNvbnRyb2xsZXIucHJvdG90eXBlLl91cGRhdGVGaWx0ZXJTdGF0ZSA9
IGZ1bmN0aW9uKGN1cnJlbnRQYWdlKSB7XG4gIC8vIFN0b3JlIGEgcmVmZXJlbmNlIHRvIHRoZSBh
Y3RpdmUgcm91dGUsIGFsbG93aW5nIHVzIHRvIHJlLWZpbHRlciB0b2RvXG4gIC8vIGl0ZW1zIGFz
IHRoZXkgYXJlIG1hcmtlZCBjb21wbGV0ZSBvciBpbmNvbXBsZXRlLlxuICBjdXJyZW50UGFnZSA9
IGN1cnJlbnRQYWdlLnNwbGl0KCc/JylbMF1cbiAgdGhpcy5fYWN0aXZlUm91dGUgPSBjdXJyZW50
UGFnZVxuXG4gIGlmIChjdXJyZW50UGFnZSA9PT0gJycpIHtcbiAgICB0aGlzLl9hY3RpdmVSb3V0
ZSA9ICdBbGwnXG4gIH1cblxuICB0aGlzLl9maWx0ZXIoKVxuXG4gIHRoaXMudmlldy5yZW5kZXIo
J3NldEZpbHRlcicsIGN1cnJlbnRQYWdlKVxufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9c
bi8vIC4vY29udHJvbGxlci5qcyIsImV4cG9ydCBkZWZhdWx0IE1vZGVsXG5cbi8qKlxuKiBDcmVh
dGVzIGEgbmV3IE1vZGVsIGluc3RhbmNlIGFuZCBob29rcyB1cCB0aGUgc3RvcmFnZS5cbipcbiog
QGNvbnN0cnVjdG9yXG4qIEBwYXJhbSB7b2JqZWN0fSBzdG9yYWdlIEEgcmVmZXJlbmNlIHRvIHRo
ZSBjbGllbnQgc2lkZSBzdG9yYWdlIGNsYXNzXG4qL1xuZnVuY3Rpb24gTW9kZWwoc3RvcmFnZSkg
e1xuICB0aGlzLnN0b3JhZ2UgPSBzdG9yYWdlXG59XG5cbi8qKlxuKiBDcmVhdGVzIGEgbmV3IHRv
ZG8gbW9kZWxcbipcbiogQHBhcmFtIHtzdHJpbmd9IFt0aXRsZV0gVGhlIHRpdGxlIG9mIHRoZSB0
YXNrXG4qIEBwYXJhbSB7ZnVuY3Rpb259IFtjYWxsYmFja10gVGhlIGNhbGxiYWNrIHRvIGZpcmUg
YWZ0ZXIgdGhlIG1vZGVsIGlzIGNyZWF0ZWRcbiovXG5Nb2RlbC5wcm90b3R5cGUuY3JlYXRlID0g
ZnVuY3Rpb24odGl0bGUsIGNhbGxiYWNrKSB7XG4gIHRpdGxlID0gdGl0bGUgfHwgJydcbiAgY2Fs
bGJhY2sgPSBjYWxsYmFjayB8fCBmdW5jdGlvbigpIHtcbiAgfVxuXG4gIHZhciBuZXdJdGVtID0g
e1xuICAgIHRpdGxlOiB0aXRsZS50cmltKCksXG4gICAgY29tcGxldGVkOiBmYWxzZVxuICB9XG5c
biAgdGhpcy5zdG9yYWdlLnNhdmUobmV3SXRlbSwgY2FsbGJhY2spXG59XG5cbi8qKlxuICogRmlu
ZHMgYW5kIHJldHVybnMgYSBtb2RlbCBpbiBzdG9yYWdlLiBJZiBubyBxdWVyeSBpcyBnaXZlbiBp
dCdsbCBzaW1wbHlcbiAqIHJldHVybiBldmVyeXRoaW5nLiBJZiB5b3UgcGFzcyBpbiBhIHN0cmlu
ZyBvciBudW1iZXIgaXQnbGwgbG9vayB0aGF0IHVwIGFzXG4gKiB0aGUgSUQgb2YgdGhlIG1vZGVs
IHRvIGZpbmQuIExhc3RseSwgeW91IGNhbiBwYXNzIGl0IGFuIG9iamVjdCB0byBtYXRjaCBhZ2Fp
bnN0LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfG51bWJlcnxvYmplY3R9IFtxdWVyeV0gQSBxdWVy
eSB0byBtYXRjaCBtb2RlbHMgYWdhaW5zdFxuICogQHBhcmFtIHtmdW5jdGlvbn0gW2NhbGxiYWNr
XSBUaGUgY2FsbGJhY2sgdG8gZmlyZSBhZnRlciB0aGUgbW9kZWwgaXMgZm91bmRcbiAqXG4gKiBA
ZXhhbXBsZVxuICogbW9kZWwucmVhZCgxLCBmdW5jKTsgLy8gV2lsbCBmaW5kIHRoZSBtb2RlbCB3
aXRoIGFuIElEIG9mIDFcbiAqIG1vZGVsLnJlYWQoJzEnKTsgLy8gU2FtZSBhcyBhYm92ZVxuICog
Ly9CZWxvdyB3aWxsIGZpbmQgYSBtb2RlbCB3aXRoIGZvbyBlcXVhbGxpbmcgYmFyIGFuZCBoZWxs
byBlcXVhbGxpbmcgd29ybGQuXG4gKiBtb2RlbC5yZWFkKHsgZm9vOiAnYmFyJywgaGVsbG86ICd3
b3JsZCcgfSk7XG4gKi9cbk1vZGVsLnByb3RvdHlwZS5yZWFkID0gZnVuY3Rpb24ocXVlcnksIGNh
bGxiYWNrKSB7XG4gIHZhciBxdWVyeVR5cGUgPSB0eXBlb2YgcXVlcnlcbiAgY2FsbGJhY2sgPSBj
YWxsYmFjayB8fCBmdW5jdGlvbigpIHtcbiAgfVxuXG4gIGlmIChxdWVyeVR5cGUgPT09ICdmdW5j
dGlvbicpIHtcbiAgICBjYWxsYmFjayA9IHF1ZXJ5XG4gICAgcmV0dXJuIHRoaXMuc3RvcmFnZS5m
aW5kQWxsKGNhbGxiYWNrKVxuICB9IGVsc2UgaWYgKHF1ZXJ5VHlwZSA9PT0gJ3N0cmluZycgfHwg
cXVlcnlUeXBlID09PSAnbnVtYmVyJykge1xuICAgIHF1ZXJ5ID0gcGFyc2VJbnQocXVlcnksIDEw
KVxuICAgIHRoaXMuc3RvcmFnZS5maW5kKHtpZDogcXVlcnl9LCBjYWxsYmFjaylcbiAgfSBlbHNl
IHtcbiAgICB0aGlzLnN0b3JhZ2UuZmluZChxdWVyeSwgY2FsbGJhY2spXG4gIH1cbiAgcmV0dXJu
IHVuZGVmaW5lZFxufVxuXG4vKipcbiogVXBkYXRlcyBhIG1vZGVsIGJ5IGdpdmluZyBpdCBhbiBJ
RCwgZGF0YSB0byB1cGRhdGUsIGFuZCBhIGNhbGxiYWNrIHRvIGZpcmUgd2hlblxuKiB0aGUgdXBk
YXRlIGlzIGNvbXBsZXRlLlxuKlxuKiBAcGFyYW0ge251bWJlcn0gaWQgVGhlIGlkIG9mIHRoZSBt
b2RlbCB0byB1cGRhdGVcbiogQHBhcmFtIHtvYmplY3R9IGRhdGEgVGhlIHByb3BlcnRpZXMgdG8g
dXBkYXRlIGFuZCB0aGVpciBuZXcgdmFsdWVcbiogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sg
VGhlIGNhbGxiYWNrIHRvIGZpcmUgd2hlbiB0aGUgdXBkYXRlIGlzIGNvbXBsZXRlLlxuKi9cbk1v
ZGVsLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbihpZCwgZGF0YSwgY2FsbGJhY2spIHtcbiAg
dGhpcy5zdG9yYWdlLnNhdmUoZGF0YSwgY2FsbGJhY2ssIGlkKVxufVxuXG4vKipcbiogUmVtb3Zl
cyBhIG1vZGVsIGZyb20gc3RvcmFnZVxuKlxuKiBAcGFyYW0ge251bWJlcn0gaWQgVGhlIElEIG9m
IHRoZSBtb2RlbCB0byByZW1vdmVcbiogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGNh
bGxiYWNrIHRvIGZpcmUgd2hlbiB0aGUgcmVtb3ZhbCBpcyBjb21wbGV0ZS5cbiovXG5Nb2RlbC5w
cm90b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24oaWQsIGNhbGxiYWNrKSB7XG4gIHRoaXMuc3RvcmFn
ZS5yZW1vdmUoaWQsIGNhbGxiYWNrKVxufVxuXG4vKipcbiogV0FSTklORzogV2lsbCByZW1vdmUg
QUxMIGRhdGEgZnJvbSBzdG9yYWdlLlxuKlxuKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayBU
aGUgY2FsbGJhY2sgdG8gZmlyZSB3aGVuIHRoZSBzdG9yYWdlIGlzIHdpcGVkLlxuKi9cbk1vZGVs
LnByb3RvdHlwZS5yZW1vdmVBbGwgPSBmdW5jdGlvbihjYWxsYmFjaykge1xuICB0aGlzLnN0b3Jh
Z2UuZHJvcChjYWxsYmFjaylcbn1cblxuLyoqXG4qIFJldHVybnMgYSBjb3VudCBvZiBhbGwgdG9k
b3NcbiovXG5Nb2RlbC5wcm90b3R5cGUuZ2V0Q291bnQgPSBmdW5jdGlvbihjYWxsYmFjaykge1xu
ICB2YXIgdG9kb3MgPSB7XG4gICAgYWN0aXZlOiAwLFxuICAgIGNvbXBsZXRlZDogMCxcbiAgICB0
b3RhbDogMFxuICB9XG5cbiAgdGhpcy5zdG9yYWdlLmZpbmRBbGwoZnVuY3Rpb24oZGF0YSkge1xu
ICAgIGRhdGEuZm9yRWFjaChmdW5jdGlvbih0b2RvKSB7XG4gICAgICBpZiAodG9kby5jb21wbGV0
ZWQpIHtcbiAgICAgICAgdG9kb3MuY29tcGxldGVkKytcbiAgICAgIH0gZWxzZSB7XG4gICAgICAg
IHRvZG9zLmFjdGl2ZSsrXG4gICAgICB9XG5cbiAgICAgIHRvZG9zLnRvdGFsKytcbiAgICB9KVxu
ICAgIGNhbGxiYWNrKHRvZG9zKVxuICB9KVxufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9c
bi8vIC4vbW9kZWwuanMiLCJpbXBvcnQge3JlbW92ZX0gZnJvbSAnLi9oZWxwZXJzJ1xuZXhwb3J0
IGRlZmF1bHQgU3RvcmVcblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IGNsaWVudCBzaWRlIHN0b3Jh
Z2Ugb2JqZWN0IGFuZCB3aWxsIGNyZWF0ZSBhbiBlbXB0eVxuICogY29sbGVjdGlvbiBpZiBubyBj
b2xsZWN0aW9uIGFscmVhZHkgZXhpc3RzLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRo
ZSBuYW1lIG9mIG91ciBEQiB3ZSB3YW50IHRvIHVzZVxuICogQHBhcmFtIHtmdW5jdGlvbn0gY2Fs
bGJhY2sgT3VyIGZha2UgREIgdXNlcyBjYWxsYmFja3MgYmVjYXVzZSBpblxuICogcmVhbCBsaWZl
IHlvdSBwcm9iYWJseSB3b3VsZCBiZSBtYWtpbmcgQUpBWCBjYWxsc1xuICovXG5mdW5jdGlvbiBT
dG9yZShuYW1lLCBjYWxsYmFjaykge1xuICBjYWxsYmFjayA9IGNhbGxiYWNrIHx8IGZ1bmN0aW9u
KCkge1xuICB9XG5cbiAgdGhpcy5fZGJOYW1lID0gbmFtZVxuXG4gIGlmICghbG9jYWxTdG9yYWdl
W25hbWVdKSB7XG4gICAgdmFyIGRhdGEgPSB7XG4gICAgICB0b2RvczogW11cbiAgICB9XG5cbiAg
ICBsb2NhbFN0b3JhZ2VbbmFtZV0gPSBKU09OLnN0cmluZ2lmeShkYXRhKVxuICB9XG5cbiAgY2Fs
bGJhY2suY2FsbCh0aGlzLCBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZVtuYW1lXSkpXG4gIHRoaXMu
c3Vic2NyaWJlcnMgPSBbXVxufVxuXG5TdG9yZS5wcm90b3R5cGUuc3Vic2NyaWJlID0gZnVuY3Rp
b24oc3Vic2NyaWJlcikge1xuICB0aGlzLnN1YnNjcmliZXJzLnB1c2goc3Vic2NyaWJlcilcbiAg
cmV0dXJuICgpID0+IHJlbW92ZSh0aGlzLnN1YnNjcmliZXJzLCBzdWJzY3JpYmVyKVxufVxuXG5T
dG9yZS5wcm90b3R5cGUuX25vdGlmeSA9IGZ1bmN0aW9uKCkge1xuICB0aGlzLnN1YnNjcmliZXJz
LmZvckVhY2gocyA9PiBzKCkpXG59XG5cbi8qKlxuKiBGaW5kcyBpdGVtcyBiYXNlZCBvbiBhIHF1
ZXJ5IGdpdmVuIGFzIGEgSlMgb2JqZWN0XG4qXG4qIEBwYXJhbSB7b2JqZWN0fSBxdWVyeSBUaGUg
cXVlcnkgdG8gbWF0Y2ggYWdhaW5zdCAoaS5lLiB7Zm9vOiAnYmFyJ30pXG4qIEBwYXJhbSB7ZnVu
Y3Rpb259IGNhbGxiYWNrICAgVGhlIGNhbGxiYWNrIHRvIGZpcmUgd2hlbiB0aGUgcXVlcnkgaGFz
XG4qIGNvbXBsZXRlZCBydW5uaW5nXG4qXG4qIEBleGFtcGxlXG4qIGRiLmZpbmQoe2ZvbzogJ2Jh
cicsIGhlbGxvOiAnd29ybGQnfSwgZnVuY3Rpb24gKGRhdGEpIHtcbiogICAvLyBkYXRhIHdpbGwg
cmV0dXJuIGFueSBpdGVtcyB0aGF0IGhhdmUgZm9vOiBiYXIgYW5kXG4qICAgLy8gaGVsbG86IHdv
cmxkIGluIHRoZWlyIHByb3BlcnRpZXNcbiogfSk7XG4qL1xuU3RvcmUucHJvdG90eXBlLmZpbmQg
PSBmdW5jdGlvbihxdWVyeSwgY2FsbGJhY2spIHtcbiAgaWYgKCFjYWxsYmFjaykge1xuICAgIHJl
dHVyblxuICB9XG5cbiAgdmFyIHRvZG9zID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2VbdGhpcy5f
ZGJOYW1lXSkudG9kb3NcblxuICBjYWxsYmFjay5jYWxsKHRoaXMsIHRvZG9zLmZpbHRlcihmdW5j
dGlvbih0b2RvKSB7XG4gICAgZm9yICh2YXIgcSBpbiBxdWVyeSkge1xuICAgICAgaWYgKHF1ZXJ5
W3FdICE9PSB0b2RvW3FdKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgIH1c
biAgICByZXR1cm4gdHJ1ZVxuICB9KSlcbn1cblxuLyoqXG4qIFdpbGwgcmV0cmlldmUgYWxsIGRh
dGEgZnJvbSB0aGUgY29sbGVjdGlvblxuKlxuKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayBU
aGUgY2FsbGJhY2sgdG8gZmlyZSB1cG9uIHJldHJpZXZpbmcgZGF0YVxuKi9cblN0b3JlLnByb3Rv
dHlwZS5maW5kQWxsID0gZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgY2FsbGJhY2sgPSBjYWxsYmFj
ayB8fCBmdW5jdGlvbigpIHtcbiAgfVxuICBjYWxsYmFjay5jYWxsKHRoaXMsIEpTT04ucGFyc2Uo
bG9jYWxTdG9yYWdlW3RoaXMuX2RiTmFtZV0pLnRvZG9zKVxufVxuXG4vKipcbiogV2lsbCBzYXZl
IHRoZSBnaXZlbiBkYXRhIHRvIHRoZSBEQi4gSWYgbm8gaXRlbSBleGlzdHMgaXQgd2lsbCBjcmVh
dGUgYSBuZXdcbiogaXRlbSwgb3RoZXJ3aXNlIGl0J2xsIHNpbXBseSB1cGRhdGUgYW4gZXhpc3Rp
bmcgaXRlbSdzIHByb3BlcnRpZXNcbipcbiogQHBhcmFtIHtvYmplY3R9IHVwZGF0ZURhdGEgVGhl
IGRhdGEgdG8gc2F2ZSBiYWNrIGludG8gdGhlIERCXG4qIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxi
YWNrIFRoZSBjYWxsYmFjayB0byBmaXJlIGFmdGVyIHNhdmluZ1xuKiBAcGFyYW0ge251bWJlcn0g
aWQgQW4gb3B0aW9uYWwgcGFyYW0gdG8gZW50ZXIgYW4gSUQgb2YgYW4gaXRlbSB0byB1cGRhdGVc
biovXG5TdG9yZS5wcm90b3R5cGUuc2F2ZSA9IGZ1bmN0aW9uKHVwZGF0ZURhdGEsIGNhbGxiYWNr
LCBpZCkge1xuICB2YXIgZGF0YSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlW3RoaXMuX2RiTmFt
ZV0pXG4gIHZhciB0b2RvcyA9IGRhdGEudG9kb3NcblxuICBjYWxsYmFjayA9IGNhbGxiYWNrIHx8
IGZ1bmN0aW9uKCkge1xuICB9XG5cbiAgLy8gSWYgYW4gSUQgd2FzIGFjdHVhbGx5IGdpdmVuLCBm
aW5kIHRoZSBpdGVtIGFuZCB1cGRhdGUgZWFjaCBwcm9wZXJ0eVxuICBpZiAoaWQpIHtcbiAgICBm
b3IgKHZhciBpID0gMDsgaSA8IHRvZG9zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAodG9kb3Nb
aV0uaWQgPT09IGlkKSB7XG4gICAgICAgIGZvciAodmFyIGtleSBpbiB1cGRhdGVEYXRhKSB7IC8v
IGVzbGludC1kaXNhYmxlLWxpbmUgZ3VhcmQtZm9yLWluXG4gICAgICAgICAgdG9kb3NbaV1ba2V5
XSA9IHVwZGF0ZURhdGFba2V5XVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4g
ICAgfVxuXG4gICAgbG9jYWxTdG9yYWdlW3RoaXMuX2RiTmFtZV0gPSBKU09OLnN0cmluZ2lmeShk
YXRhKVxuICAgIGNhbGxiYWNrLmNhbGwodGhpcywgSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2VbdGhp
cy5fZGJOYW1lXSkudG9kb3MpXG4gIH0gZWxzZSB7XG4gICAgLy8gR2VuZXJhdGUgYW4gSURcbiAg
ICB1cGRhdGVEYXRhLmlkID0gbmV3IERhdGUoKS5nZXRUaW1lKClcblxuICAgIHRvZG9zLnB1c2go
dXBkYXRlRGF0YSlcbiAgICBsb2NhbFN0b3JhZ2VbdGhpcy5fZGJOYW1lXSA9IEpTT04uc3RyaW5n
aWZ5KGRhdGEpXG4gICAgY2FsbGJhY2suY2FsbCh0aGlzLCBbdXBkYXRlRGF0YV0pXG4gIH1cbiAg
dGhpcy5fbm90aWZ5KClcbn1cblxuLyoqXG4qIFdpbGwgcmVtb3ZlIGFuIGl0ZW0gZnJvbSB0aGUg
U3RvcmUgYmFzZWQgb24gaXRzIElEXG4qXG4qIEBwYXJhbSB7bnVtYmVyfSBpZCBUaGUgSUQgb2Yg
dGhlIGl0ZW0geW91IHdhbnQgdG8gcmVtb3ZlXG4qIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNr
IFRoZSBjYWxsYmFjayB0byBmaXJlIGFmdGVyIHNhdmluZ1xuKi9cblN0b3JlLnByb3RvdHlwZS5y
ZW1vdmUgPSBmdW5jdGlvbihpZCwgY2FsbGJhY2spIHtcbiAgdmFyIGRhdGEgPSBKU09OLnBhcnNl
KGxvY2FsU3RvcmFnZVt0aGlzLl9kYk5hbWVdKVxuICB2YXIgdG9kb3MgPSBkYXRhLnRvZG9zXG5c
biAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b2Rvcy5sZW5ndGg7IGkrKykge1xuICAgIGlmICh0b2Rv
c1tpXS5pZCA9PT0gaWQpIHtcbiAgICAgIHRvZG9zLnNwbGljZShpLCAxKVxuICAgICAgYnJlYWtc
biAgICB9XG4gIH1cblxuICBsb2NhbFN0b3JhZ2VbdGhpcy5fZGJOYW1lXSA9IEpTT04uc3RyaW5n
aWZ5KGRhdGEpXG4gIGNhbGxiYWNrLmNhbGwodGhpcywgSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2Vb
dGhpcy5fZGJOYW1lXSkudG9kb3MpXG4gIHRoaXMuX25vdGlmeSgpXG59XG5cbi8qKlxuKiBXaWxs
IGRyb3AgYWxsIHN0b3JhZ2UgYW5kIHN0YXJ0IGZyZXNoXG4qXG4qIEBwYXJhbSB7ZnVuY3Rpb259
IGNhbGxiYWNrIFRoZSBjYWxsYmFjayB0byBmaXJlIGFmdGVyIGRyb3BwaW5nIHRoZSBkYXRhXG4q
L1xuU3RvcmUucHJvdG90eXBlLmRyb3AgPSBmdW5jdGlvbihjYWxsYmFjaykge1xuICBsb2NhbFN0
b3JhZ2VbdGhpcy5fZGJOYW1lXSA9IEpTT04uc3RyaW5naWZ5KHt0b2RvczogW119KVxuICBjYWxs
YmFjay5jYWxsKHRoaXMsIEpTT04ucGFyc2UobG9jYWxTdG9yYWdlW3RoaXMuX2RiTmFtZV0pLnRv
ZG9zKVxuICB0aGlzLl9ub3RpZnkoKVxufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8v
IC4vc3RvcmUuanMiLCJleHBvcnQgZGVmYXVsdCBUZW1wbGF0ZVxuXG52YXIgaHRtbEVzY2FwZXMg
PSB7XG4gICcmJzogJyZhbXA7JyxcbiAgJzwnOiAnJmx0OycsXG4gICc+JzogJyZndDsnLFxuICAn
XCInOiAnJnF1b3Q7JyxcbiAgJ1xcJyc6ICcmI3gyNzsnLFxuICAnYCc6ICcmI3g2MDsnXG59XG5c
bnZhciBlc2NhcGVIdG1sQ2hhciA9IGZ1bmN0aW9uKGNocikge1xuICByZXR1cm4gaHRtbEVzY2Fw
ZXNbY2hyXVxufVxuXG52YXIgcmVVbmVzY2FwZWRIdG1sID0gL1smPD5cIidgXS9nXG52YXIgcmVI
YXNVbmVzY2FwZWRIdG1sID0gbmV3IFJlZ0V4cChyZVVuZXNjYXBlZEh0bWwuc291cmNlKVxuXG52
YXIgZXNjYXBlID0gZnVuY3Rpb24oc3RyaW5nKSB7XG4gIGlmIChzdHJpbmcgJiYgcmVIYXNVbmVz
Y2FwZWRIdG1sLnRlc3Qoc3RyaW5nKSkge1xuICAgIHJldHVybiBzdHJpbmcucmVwbGFjZShyZVVu
ZXNjYXBlZEh0bWwsIGVzY2FwZUh0bWxDaGFyKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBzdHJp
bmdcbiAgfVxufVxuXG4vKipcbiogU2V0cyB1cCBkZWZhdWx0cyBmb3IgYWxsIHRoZSBUZW1wbGF0
ZSBtZXRob2RzIHN1Y2ggYXMgYSBkZWZhdWx0IHRlbXBsYXRlXG4qXG4qIEBjb25zdHJ1Y3Rvclxu
Ki9cbmZ1bmN0aW9uIFRlbXBsYXRlKCkge1xuICB0aGlzLmRlZmF1bHRUZW1wbGF0ZSA9IGBcbiAg
ICA8bGkgZGF0YS1pZD1cInt7aWR9fVwiIGNsYXNzPVwie3tjb21wbGV0ZWR9fVwiPlxuICAgICAg
PGRpdiBjbGFzcz1cInZpZXdcIj5cbiAgICAgICAgPGlucHV0IGNsYXNzPVwidG9nZ2xlXCIgdHlw
ZT1cImNoZWNrYm94XCIge3tjaGVja2VkfX0gLz5cbiAgICAgICAgPGxhYmVsPnt7dGl0bGV9fTwv
bGFiZWw+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJkZXN0cm95XCI+PC9idXR0b24+XG4gICAg
ICA8L2Rpdj5cbiAgICA8L2xpPlxuICBgXG59XG5cbi8qKlxuICogQ3JlYXRlcyBhbiA8bGk+IEhU
TUwgc3RyaW5nIGFuZCByZXR1cm5zIGl0IGZvciBwbGFjZW1lbnQgaW4geW91ciBhcHAuXG4gKlxu
ICogTk9URTogSW4gcmVhbCBsaWZlIHlvdSBzaG91bGQgYmUgdXNpbmcgYSB0ZW1wbGF0aW5nIGVu
Z2luZSBzdWNoIGFzIE11c3RhY2hlXG4gKiBvciBIYW5kbGViYXJzLCBob3dldmVyLCB0aGlzIGlz
IGEgdmFuaWxsYSBKUyBleGFtcGxlLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBkYXRhIFRoZSBv
YmplY3QgY29udGFpbmluZyBrZXlzIHlvdSB3YW50IHRvIGZpbmQgaW4gdGhlXG4gKiAgICAgICAg
ICAgICAgICAgICAgICB0ZW1wbGF0ZSB0byByZXBsYWNlLlxuICogQHJldHVybnMge3N0cmluZ30g
SFRNTCBTdHJpbmcgb2YgYW4gPGxpPiBlbGVtZW50XG4gKlxuICogQGV4YW1wbGVcbiAqIHZpZXcu
c2hvdyh7XG4gKiAgaWQ6IDEsXG4gKiAgdGl0bGU6IFwiSGVsbG8gV29ybGRcIixcbiAqICBjb21w
bGV0ZWQ6IDAsXG4gKiB9KTtcbiAqL1xuVGVtcGxhdGUucHJvdG90eXBlLnNob3cgPSBmdW5jdGlv
bihkYXRhKSB7XG4gIHZhciBpLCBsXG4gIHZhciB2aWV3ID0gJydcblxuICBmb3IgKGkgPSAwLCBs
ID0gZGF0YS5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICB2YXIgdGVtcGxhdGUgPSB0aGlzLmRl
ZmF1bHRUZW1wbGF0ZVxuICAgIHZhciBjb21wbGV0ZWQgPSAnJ1xuICAgIHZhciBjaGVja2VkID0g
JydcblxuICAgIGlmIChkYXRhW2ldLmNvbXBsZXRlZCkge1xuICAgICAgY29tcGxldGVkID0gJ2Nv
bXBsZXRlZCdcbiAgICAgIGNoZWNrZWQgPSAnY2hlY2tlZCdcbiAgICB9XG5cbiAgICB0ZW1wbGF0
ZSA9IHRlbXBsYXRlLnJlcGxhY2UoJ3t7aWR9fScsIGRhdGFbaV0uaWQpXG4gICAgdGVtcGxhdGUg
PSB0ZW1wbGF0ZS5yZXBsYWNlKCd7e3RpdGxlfX0nLCBlc2NhcGUoZGF0YVtpXS50aXRsZSkpXG4g
ICAgdGVtcGxhdGUgPSB0ZW1wbGF0ZS5yZXBsYWNlKCd7e2NvbXBsZXRlZH19JywgY29tcGxldGVk
KVxuICAgIHRlbXBsYXRlID0gdGVtcGxhdGUucmVwbGFjZSgne3tjaGVja2VkfX0nLCBjaGVja2Vk
KVxuXG4gICAgdmlldyA9IHZpZXcgKyB0ZW1wbGF0ZVxuICB9XG5cbiAgcmV0dXJuIHZpZXdcbn1c
blxuLyoqXG4gKiBEaXNwbGF5cyBhIGNvdW50ZXIgb2YgaG93IG1hbnkgdG8gZG9zIGFyZSBsZWZ0
IHRvIGNvbXBsZXRlXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IGFjdGl2ZVRvZG9zIFRoZSBudW1i
ZXIgb2YgYWN0aXZlIHRvZG9zLlxuICogQHJldHVybnMge3N0cmluZ30gU3RyaW5nIGNvbnRhaW5p
bmcgdGhlIGNvdW50XG4gKi9cblRlbXBsYXRlLnByb3RvdHlwZS5pdGVtQ291bnRlciA9IGZ1bmN0
aW9uKGFjdGl2ZVRvZG9zKSB7XG4gIHZhciBwbHVyYWwgPSBhY3RpdmVUb2RvcyA9PT0gMSA/ICcn
IDogJ3MnXG5cbiAgcmV0dXJuICc8c3Ryb25nPicgKyBhY3RpdmVUb2RvcyArICc8L3N0cm9uZz4g
aXRlbScgKyBwbHVyYWwgKyAnIGxlZnQnXG59XG5cbi8qKlxuICogVXBkYXRlcyB0aGUgdGV4dCB3
aXRoaW4gdGhlIFwiQ2xlYXIgY29tcGxldGVkXCIgYnV0dG9uXG4gKlxuICogQHBhcmFtICB7W3R5
cGVdfSBjb21wbGV0ZWRUb2RvcyBUaGUgbnVtYmVyIG9mIGNvbXBsZXRlZCB0b2Rvcy5cbiAqIEBy
ZXR1cm5zIHtzdHJpbmd9IFN0cmluZyBjb250YWluaW5nIHRoZSBjb3VudFxuICovXG5UZW1wbGF0
ZS5wcm90b3R5cGUuY2xlYXJDb21wbGV0ZWRCdXR0b24gPSBmdW5jdGlvbihjb21wbGV0ZWRUb2Rv
cykge1xuICBpZiAoY29tcGxldGVkVG9kb3MgPiAwKSB7XG4gICAgcmV0dXJuICdDbGVhciBjb21w
bGV0ZWQnXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuICcnXG4gIH1cbn1cblxuXG5cbi8vIFdFQlBB
Q0sgRk9PVEVSIC8vXG4vLyAuL3RlbXBsYXRlLmpzIiwiaW1wb3J0IFZpZXcgZnJvbSAnLi92aWV3
J1xuaW1wb3J0IENvbnRyb2xsZXIgZnJvbSAnLi9jb250cm9sbGVyJ1xuaW1wb3J0IE1vZGVsIGZy
b20gJy4vbW9kZWwnXG5pbXBvcnQgU3RvcmUgZnJvbSAnLi9zdG9yZSdcbmltcG9ydCBUZW1wbGF0
ZSBmcm9tICcuL3RlbXBsYXRlJ1xuaW1wb3J0IHtyZW1vdmV9IGZyb20gJy4vaGVscGVycydcblxu
ZXhwb3J0IHt1cGRhdGVUb2RvLCBnZXRUb2RvLCBzdWJzY3JpYmV9XG5cbmxldCB0b2RvXG5jb25z
dCBzdWJzY3JpYmVycyA9IFtdXG5cbi8qKlxuICogU2V0cyB1cCBhIGJyYW5kIG5ldyBUb2RvIGxp
c3QuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG5hbWUgb2YgeW91ciBuZXcgdG8g
ZG8gbGlzdC5cbiAqL1xuZnVuY3Rpb24gVG9kbyhuYW1lKSB7XG4gIHRoaXMuc3RvcmFnZSA9IG5l
dyBTdG9yZShuYW1lKVxuICB0aGlzLm1vZGVsID0gbmV3IE1vZGVsKHRoaXMuc3RvcmFnZSlcbiAg
dGhpcy50ZW1wbGF0ZSA9IG5ldyBUZW1wbGF0ZSgpXG4gIHRoaXMudmlldyA9IG5ldyBWaWV3KHRo
aXMudGVtcGxhdGUpXG4gIHRoaXMuY29udHJvbGxlciA9IG5ldyBDb250cm9sbGVyKHRoaXMubW9k
ZWwsIHRoaXMudmlldylcbn1cblxuZnVuY3Rpb24gdXBkYXRlVG9kbygpIHtcbiAgdG9kbyA9IG5l
dyBUb2RvKCd0b2Rvcy12YW5pbGxhanMnKVxuICB0b2RvLmNvbnRyb2xsZXIuc2V0Vmlldyhkb2N1
bWVudC5sb2NhdGlvbi5oYXNoKVxuICBzdWJzY3JpYmVycy5mb3JFYWNoKHMgPT4gcygpKVxufVxu
XG5mdW5jdGlvbiBnZXRUb2RvKCkge1xuICByZXR1cm4gdG9kb1xufVxuXG5mdW5jdGlvbiBzdWJz
Y3JpYmUoY2IpIHtcbiAgc3Vic2NyaWJlcnMucHVzaChjYilcbiAgcmV0dXJuIGZ1bmN0aW9uIHVu
c3Vic2NyaWJlKCkge1xuICAgIHJlbW92ZShzdWJzY3JpYmVycywgY2IpXG4gIH1cbn1cblxuXG5c
bi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3RvZG8uanMiLCIvKiBlc2xpbnQgbm8taW52YWxp
ZC10aGlzOiAwLCBjb21wbGV4aXR5OlsyLCA5XSAqL1xuaW1wb3J0IHtxcywgcXNhLCAkb24sICRw
YXJlbnQsICRkZWxlZ2F0ZX0gZnJvbSAnLi9oZWxwZXJzJ1xuXG4vKipcbiAqIFZpZXcgdGhhdCBh
YnN0cmFjdHMgYXdheSB0aGUgYnJvd3NlcidzIERPTSBjb21wbGV0ZWx5LlxuICogSXQgaGFzIHR3
byBzaW1wbGUgZW50cnkgcG9pbnRzOlxuICpcbiAqICAgLSBiaW5kKGV2ZW50TmFtZSwgaGFuZGxl
cilcbiAqICAgICBUYWtlcyBhIHRvZG8gYXBwbGljYXRpb24gZXZlbnQgYW5kIHJlZ2lzdGVycyB0
aGUgaGFuZGxlclxuICogICAtIHJlbmRlcihjb21tYW5kLCBwYXJhbWV0ZXJPYmplY3QpXG4gKiAg
ICAgUmVuZGVycyB0aGUgZ2l2ZW4gY29tbWFuZCB3aXRoIHRoZSBvcHRpb25zXG4gKi9cbmV4cG9y
dCBkZWZhdWx0IGNsYXNzIFZpZXcge1xuICBjb25zdHJ1Y3Rvcih0ZW1wbGF0ZSkge1xuICAgIHRo
aXMudGVtcGxhdGUgPSB0ZW1wbGF0ZVxuXG4gICAgdGhpcy5FTlRFUl9LRVkgPSAxM1xuICAgIHRo
aXMuRVNDQVBFX0tFWSA9IDI3XG5cbiAgICB0aGlzLiR0b2RvTGlzdCA9IHFzKCcudG9kby1saXN0
JylcbiAgICB0aGlzLiR0b2RvSXRlbUNvdW50ZXIgPSBxcygnLnRvZG8tY291bnQnKVxuICAgIHRo
aXMuJGNsZWFyQ29tcGxldGVkID0gcXMoJy5jbGVhci1jb21wbGV0ZWQnKVxuICAgIHRoaXMuJG1h
aW4gPSBxcygnLm1haW4nKVxuICAgIHRoaXMuJGZvb3RlciA9IHFzKCcuZm9vdGVyJylcbiAgICB0
aGlzLiR0b2dnbGVBbGwgPSBxcygnLnRvZ2dsZS1hbGwnKVxuICAgIHRoaXMuJG5ld1RvZG8gPSBx
cygnLm5ldy10b2RvJylcbiAgfVxuXG4gIF9yZW1vdmVJdGVtKGlkKSB7XG4gICAgdmFyIGVsZW0g
PSBxcygnW2RhdGEtaWQ9XCInICsgaWQgKyAnXCJdJylcblxuICAgIGlmIChlbGVtKSB7XG4gICAg
ICB0aGlzLiR0b2RvTGlzdC5yZW1vdmVDaGlsZChlbGVtKVxuICAgIH1cbiAgfVxuXG4gIF9jbGVh
ckNvbXBsZXRlZEJ1dHRvbihjb21wbGV0ZWRDb3VudCwgdmlzaWJsZSkge1xuICAgIHRoaXMuJGNs
ZWFyQ29tcGxldGVkLmlubmVySFRNTCA9IHRoaXMudGVtcGxhdGUuY2xlYXJDb21wbGV0ZWRCdXR0
b24oY29tcGxldGVkQ291bnQpXG4gICAgdGhpcy4kY2xlYXJDb21wbGV0ZWQuc3R5bGUuZGlzcGxh
eSA9IHZpc2libGUgPyAnYmxvY2snIDogJ25vbmUnXG4gIH1cblxuICBfZWRpdEl0ZW1Eb25lKGlk
LCB0aXRsZSkge1xuICAgIHZhciBsaXN0SXRlbSA9IHFzKCdbZGF0YS1pZD1cIicgKyBpZCArICdc
Il0nKVxuXG4gICAgaWYgKCFsaXN0SXRlbSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAg
dmFyIGlucHV0ID0gcXMoJ2lucHV0LmVkaXQnLCBsaXN0SXRlbSlcbiAgICBsaXN0SXRlbS5yZW1v
dmVDaGlsZChpbnB1dClcblxuICAgIGxpc3RJdGVtLmNsYXNzTmFtZSA9IGxpc3RJdGVtLmNsYXNz
TmFtZS5yZXBsYWNlKCdlZGl0aW5nJywgJycpXG5cbiAgICBxc2EoJ2xhYmVsJywgbGlzdEl0ZW0p
LmZvckVhY2goZnVuY3Rpb24obGFiZWwpIHtcbiAgICAgIGxhYmVsLnRleHRDb250ZW50ID0gdGl0
bGVcbiAgICB9KVxuICB9XG5cbiAgcmVuZGVyKHZpZXdDbWQsIHBhcmFtZXRlcikge1xuICAgIHZh
ciB0aGF0ID0gdGhpc1xuICAgIHZhciB2aWV3Q29tbWFuZHMgPSB7XG4gICAgICBzaG93RW50cmll
czogZnVuY3Rpb24oKSB7XG4gICAgICAgIHRoYXQuJHRvZG9MaXN0LmlubmVySFRNTCA9IHRoYXQu
dGVtcGxhdGUuc2hvdyhwYXJhbWV0ZXIpXG4gICAgICB9LFxuICAgICAgcmVtb3ZlSXRlbTogZnVu
Y3Rpb24oKSB7XG4gICAgICAgIHRoYXQuX3JlbW92ZUl0ZW0ocGFyYW1ldGVyKVxuICAgICAgfSxc
biAgICAgIHVwZGF0ZUVsZW1lbnRDb3VudDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHRoYXQuJHRv
ZG9JdGVtQ291bnRlci5pbm5lckhUTUwgPSB0aGF0LnRlbXBsYXRlLml0ZW1Db3VudGVyKHBhcmFt
ZXRlcilcbiAgICAgIH0sXG4gICAgICBjbGVhckNvbXBsZXRlZEJ1dHRvbjogZnVuY3Rpb24oKSB7
XG4gICAgICAgIHRoYXQuX2NsZWFyQ29tcGxldGVkQnV0dG9uKHBhcmFtZXRlci5jb21wbGV0ZWQs
IHBhcmFtZXRlci52aXNpYmxlKVxuICAgICAgfSxcbiAgICAgIGNvbnRlbnRCbG9ja1Zpc2liaWxp
dHk6IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aGF0LiRtYWluLnN0eWxlLmRpc3BsYXkgPSB0aGF0
LiRmb290ZXIuc3R5bGUuZGlzcGxheSA9IHBhcmFtZXRlci52aXNpYmxlID8gJ2Jsb2NrJyA6ICdu
b25lJ1xuICAgICAgfSxcbiAgICAgIHRvZ2dsZUFsbDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHRo
YXQuJHRvZ2dsZUFsbC5jaGVja2VkID0gcGFyYW1ldGVyLmNoZWNrZWRcbiAgICAgIH0sXG4gICAg
ICBzZXRGaWx0ZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICBfc2V0RmlsdGVyKHBhcmFtZXRlcilc
biAgICAgIH0sXG4gICAgICBjbGVhck5ld1RvZG86IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aGF0
LiRuZXdUb2RvLnZhbHVlID0gJydcbiAgICAgIH0sXG4gICAgICBlbGVtZW50Q29tcGxldGU6IGZ1
bmN0aW9uKCkge1xuICAgICAgICBfZWxlbWVudENvbXBsZXRlKHBhcmFtZXRlci5pZCwgcGFyYW1l
dGVyLmNvbXBsZXRlZClcbiAgICAgIH0sXG4gICAgICBlZGl0SXRlbTogZnVuY3Rpb24oKSB7XG4g
ICAgICAgIF9lZGl0SXRlbShwYXJhbWV0ZXIuaWQsIHBhcmFtZXRlci50aXRsZSlcbiAgICAgIH0s
XG4gICAgICBlZGl0SXRlbURvbmU6IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aGF0Ll9lZGl0SXRl
bURvbmUocGFyYW1ldGVyLmlkLCBwYXJhbWV0ZXIudGl0bGUpXG4gICAgICB9XG4gICAgfVxuXG4g
ICAgdmlld0NvbW1hbmRzW3ZpZXdDbWRdKClcbiAgfVxuXG4gIF9iaW5kSXRlbUVkaXREb25lKGhh
bmRsZXIpIHtcbiAgICB2YXIgdGhhdCA9IHRoaXNcbiAgICAkZGVsZWdhdGUodGhhdC4kdG9kb0xp
c3QsICdsaSAuZWRpdCcsICdibHVyJywgZnVuY3Rpb24oKSB7XG4gICAgICBpZiAoIXRoaXMuZGF0
YXNldC5pc2NhbmNlbGVkKSB7XG4gICAgICAgIGhhbmRsZXIoe1xuICAgICAgICAgIGlkOiBfaXRl
bUlkKHRoaXMpLFxuICAgICAgICAgIHRpdGxlOiB0aGlzLnZhbHVlXG4gICAgICAgIH0pXG4gICAg
ICB9XG4gICAgfSlcblxuICAgICRkZWxlZ2F0ZSh0aGF0LiR0b2RvTGlzdCwgJ2xpIC5lZGl0Jywg
J2tleXByZXNzJywgZnVuY3Rpb24oZXZlbnQpIHtcbiAgICAgIGlmIChldmVudC5rZXlDb2RlID09
PSB0aGF0LkVOVEVSX0tFWSkge1xuICAgICAgICAvLyBSZW1vdmUgdGhlIGN1cnNvciBmcm9tIHRo
ZSBpbnB1dCB3aGVuIHlvdSBoaXQgZW50ZXIganVzdCBsaWtlIGlmIGl0XG4gICAgICAgIC8vIHdl
cmUgYSByZWFsIGZvcm1cbiAgICAgICAgdGhpcy5ibHVyKClcbiAgICAgIH1cbiAgICB9KVxuICB9
XG5cbiAgX2JpbmRJdGVtRWRpdENhbmNlbChoYW5kbGVyKSB7XG4gICAgdmFyIHRoYXQgPSB0aGlz
XG4gICAgJGRlbGVnYXRlKHRoYXQuJHRvZG9MaXN0LCAnbGkgLmVkaXQnLCAna2V5dXAnLCBmdW5j
dGlvbihldmVudCkge1xuICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IHRoYXQuRVNDQVBFX0tF
WSkge1xuICAgICAgICB0aGlzLmRhdGFzZXQuaXNjYW5jZWxlZCA9IHRydWVcbiAgICAgICAgdGhp
cy5ibHVyKClcblxuICAgICAgICBoYW5kbGVyKHtpZDogX2l0ZW1JZCh0aGlzKX0pXG4gICAgICB9
XG4gICAgfSlcbiAgfVxuXG4gIGJpbmQoZXZlbnQsIGhhbmRsZXIpIHtcbiAgICB2YXIgdGhhdCA9
IHRoaXNcbiAgICBpZiAoZXZlbnQgPT09ICduZXdUb2RvJykge1xuICAgICAgJG9uKHRoYXQuJG5l
d1RvZG8sICdjaGFuZ2UnLCBmdW5jdGlvbigpIHtcbiAgICAgICAgaGFuZGxlcih0aGF0LiRuZXdU
b2RvLnZhbHVlKVxuICAgICAgfSlcblxuICAgIH0gZWxzZSBpZiAoZXZlbnQgPT09ICdyZW1vdmVD
b21wbGV0ZWQnKSB7XG4gICAgICAkb24odGhhdC4kY2xlYXJDb21wbGV0ZWQsICdjbGljaycsIGZ1
bmN0aW9uKCkge1xuICAgICAgICBoYW5kbGVyKClcbiAgICAgIH0pXG5cbiAgICB9IGVsc2UgaWYg
KGV2ZW50ID09PSAndG9nZ2xlQWxsJykge1xuICAgICAgJG9uKHRoYXQuJHRvZ2dsZUFsbCwgJ2Ns
aWNrJywgZnVuY3Rpb24oKSB7XG4gICAgICAgIGhhbmRsZXIoe2NvbXBsZXRlZDogdGhpcy5jaGVj
a2VkfSlcbiAgICAgIH0pXG5cbiAgICB9IGVsc2UgaWYgKGV2ZW50ID09PSAnaXRlbUVkaXQnKSB7
XG4gICAgICAkZGVsZWdhdGUodGhhdC4kdG9kb0xpc3QsICdsaSBsYWJlbCcsICdkYmxjbGljaycs
IGZ1bmN0aW9uKCkge1xuICAgICAgICBoYW5kbGVyKHtpZDogX2l0ZW1JZCh0aGlzKX0pXG4gICAg
ICB9KVxuXG4gICAgfSBlbHNlIGlmIChldmVudCA9PT0gJ2l0ZW1SZW1vdmUnKSB7XG4gICAgICAk
ZGVsZWdhdGUodGhhdC4kdG9kb0xpc3QsICcuZGVzdHJveScsICdjbGljaycsIGZ1bmN0aW9uKCkg
e1xuICAgICAgICBoYW5kbGVyKHtpZDogX2l0ZW1JZCh0aGlzKX0pXG4gICAgICB9KVxuXG4gICAg
fSBlbHNlIGlmIChldmVudCA9PT0gJ2l0ZW1Ub2dnbGUnKSB7XG4gICAgICAkZGVsZWdhdGUodGhh
dC4kdG9kb0xpc3QsICcudG9nZ2xlJywgJ2NsaWNrJywgZnVuY3Rpb24oKSB7XG4gICAgICAgIGhh
bmRsZXIoe1xuICAgICAgICAgIGlkOiBfaXRlbUlkKHRoaXMpLFxuICAgICAgICAgIGNvbXBsZXRl
ZDogdGhpcy5jaGVja2VkXG4gICAgICAgIH0pXG4gICAgICB9KVxuXG4gICAgfSBlbHNlIGlmIChl
dmVudCA9PT0gJ2l0ZW1FZGl0RG9uZScpIHtcbiAgICAgIHRoYXQuX2JpbmRJdGVtRWRpdERvbmUo
aGFuZGxlcilcblxuICAgIH0gZWxzZSBpZiAoZXZlbnQgPT09ICdpdGVtRWRpdENhbmNlbCcpIHtc
biAgICAgIHRoYXQuX2JpbmRJdGVtRWRpdENhbmNlbChoYW5kbGVyKVxuICAgIH1cbiAgfVxufVxu
XG5mdW5jdGlvbiBfc2V0RmlsdGVyKGN1cnJlbnRQYWdlKSB7XG4gIHFzKCcuZmlsdGVycyAuc2Vs
ZWN0ZWQnKS5jbGFzc05hbWUgPSAnJ1xuICBxcygnLmZpbHRlcnMgW2hyZWY9XCIjLycgKyBjdXJy
ZW50UGFnZSArICdcIl0nKS5jbGFzc05hbWUgPSAnc2VsZWN0ZWQnXG59XG5cbmZ1bmN0aW9uIF9l
bGVtZW50Q29tcGxldGUoaWQsIGNvbXBsZXRlZCkge1xuICB2YXIgbGlzdEl0ZW0gPSBxcygnW2Rh
dGEtaWQ9XCInICsgaWQgKyAnXCJdJylcblxuICBpZiAoIWxpc3RJdGVtKSB7XG4gICAgcmV0dXJu
XG4gIH1cblxuICBsaXN0SXRlbS5jbGFzc05hbWUgPSBjb21wbGV0ZWQgPyAnY29tcGxldGVkJyA6
ICcnXG5cbiAgLy8gSW4gY2FzZSBpdCB3YXMgdG9nZ2xlZCBmcm9tIGFuIGV2ZW50IGFuZCBub3Qg
YnkgY2xpY2tpbmcgdGhlIGNoZWNrYm94XG4gIHFzKCdpbnB1dCcsIGxpc3RJdGVtKS5jaGVja2Vk
ID0gY29tcGxldGVkXG59XG5cbmZ1bmN0aW9uIF9lZGl0SXRlbShpZCwgdGl0bGUpIHtcbiAgdmFy
IGxpc3RJdGVtID0gcXMoJ1tkYXRhLWlkPVwiJyArIGlkICsgJ1wiXScpXG5cbiAgaWYgKCFsaXN0
SXRlbSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgbGlzdEl0ZW0uY2xhc3NOYW1lID0gbGlzdEl0
ZW0uY2xhc3NOYW1lICsgJyBlZGl0aW5nJ1xuXG4gIHZhciBpbnB1dCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2lucHV0JylcbiAgaW5wdXQuY2xhc3NOYW1lID0gJ2VkaXQnXG5cbiAgbGlzdEl0
ZW0uYXBwZW5kQ2hpbGQoaW5wdXQpXG4gIGlucHV0LmZvY3VzKClcbiAgaW5wdXQudmFsdWUgPSB0
aXRsZVxufVxuXG5mdW5jdGlvbiBfaXRlbUlkKGVsZW1lbnQpIHtcbiAgdmFyIGxpID0gJHBhcmVu
dChlbGVtZW50LCAnbGknKVxuICByZXR1cm4gcGFyc2VJbnQobGkuZGF0YXNldC5pZCwgMTApXG59
XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi92aWV3LmpzIiwiLyogZXNsaW50IG5v
LWNvbnNvbGU6MCAqL1xuaW1wb3J0IHtvbkxvYWR9IGZyb20gJy4vYXBwJ1xuaW1wb3J0IHskb259
IGZyb20gJy4vaGVscGVycydcblxuLy8gdGhpcyBpcyBvbmx5IHJlbGV2YW50IHdoZW4gdXNpbmcg
YGhvdGAgbW9kZSB3aXRoIHdlYnBhY2tcbi8vIHNwZWNpYWwgdGhhbmtzIHRvIEVyaWMgQ2xlbW1v
bnM6IGh0dHBzOi8vZ2l0aHViLmNvbS9lcmljY2xlbW1vbnMvd2VicGFjay1ob3Qtc2VydmVyLWV4
YW1wbGVcbmNvbnN0IHJlbG9hZGluZyA9IGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICdjb21wbGV0
ZSdcbmlmIChtb2R1bGUuaG90KSB7XG4gIG1vZHVsZS5ob3QuYWNjZXB0KGZ1bmN0aW9uKGVycikg
e1xuICB9KVxuICBpZiAocmVsb2FkaW5nKSB7XG4gICAgb25Mb2FkKClcbiAgfSBlbHNlIHtcbiAg
ICBib290c3RyYXAoKVxuICB9XG59IGVsc2Uge1xuICBib290c3RyYXAoKVxufVxuXG5mdW5jdGlv
biBib290c3RyYXAoKSB7XG4gICRvbih3aW5kb3csICdsb2FkJywgb25Mb2FkKVxuICAkb24od2lu
ZG93LCAnaGFzaGNoYW5nZScsIG9uTG9hZClcbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8v
XG4vLyAuL2Jvb3RzdHJhcC5qcyJdLCJzb3VyY2VSb290IjoiIn0KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svZGlzdC9i
dW5kbGUubWFuaWZlc3QuYmMwNDAzY2I3MDc2OGIxNGFkZGQuanMgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJh
YmVsLXdlYnBhY2svZGlzdC9idW5kbGUubWFuaWZlc3QuYmMwNDAzY2I3MDc2OGIxNGFkZGQuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYjY2NzdlNTRhM2Y5MDk3ZTExYTcxZmIxZTI5OTRiY2FmOGViMWQ4MgotLS0g
L2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0L2J1bmRsZS5t
YW5pZmVzdC5iYzA0MDNjYjcwNzY4YjE0YWRkZC5qcwpAQCAtMCwwICsxLDIgQEAKKyFmdW5jdGlv
bihlKXtmdW5jdGlvbiByKG4pe2lmKHRbbl0pcmV0dXJuIHRbbl0uZXhwb3J0czt2YXIgbz10W25d
PXtpOm4sbDohMSxleHBvcnRzOnt9fTtyZXR1cm4gZVtuXS5jYWxsKG8uZXhwb3J0cyxvLG8uZXhw
b3J0cyxyKSxvLmw9ITAsby5leHBvcnRzfXZhciBuPXdpbmRvdy53ZWJwYWNrSnNvbnA7d2luZG93
LndlYnBhY2tKc29ucD1mdW5jdGlvbih0LGEsdSl7Zm9yKHZhciBjLGksZixsPTAscz1bXTtsPHQu
bGVuZ3RoO2wrKylpPXRbbF0sb1tpXSYmcy5wdXNoKG9baV1bMF0pLG9baV09MDtmb3IoYyBpbiBh
KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLGMpJiYoZVtjXT1hW2NdKTtm
b3IobiYmbih0LGEsdSk7cy5sZW5ndGg7KXMuc2hpZnQoKSgpO2lmKHUpZm9yKGw9MDtsPHUubGVu
Z3RoO2wrKylmPXIoci5zPXVbbF0pO3JldHVybiBmfTt2YXIgdD17fSxvPXsyOjB9O3IuZT1mdW5j
dGlvbihlKXtmdW5jdGlvbiBuKCl7YS5vbmVycm9yPWEub25sb2FkPW51bGwsY2xlYXJUaW1lb3V0
KHUpO3ZhciByPW9bZV07MCE9PXImJihyJiZyWzFdKG5ldyBFcnJvcigiTG9hZGluZyBjaHVuayAi
K2UrIiBmYWlsZWQuIikpLG9bZV09dm9pZCAwKX1pZigwPT09b1tlXSlyZXR1cm4gUHJvbWlzZS5y
ZXNvbHZlKCk7aWYob1tlXSlyZXR1cm4gb1tlXVsyXTt2YXIgdD1kb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgiaGVhZCIpWzBdLGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7
YS50eXBlPSJ0ZXh0L2phdmFzY3JpcHQiLGEuY2hhcnNldD0idXRmLTgiLGEuYXN5bmM9ITAsYS50
aW1lb3V0PTEyZTQsYS5zcmM9ci5wKyJidW5kbGUuIitlKyIuIit7MDoiNDIxZWI2YmFjYTAyMjE4
ZTk4NWUiLDE6ImRhMWEyZDY0MTA2ZWM1NGQ0ZjU3In1bZV0rIi5qcyI7dmFyIHU9c2V0VGltZW91
dChuLDEyZTQpO2Eub25lcnJvcj1hLm9ubG9hZD1uLHQuYXBwZW5kQ2hpbGQoYSk7dmFyIGM9bmV3
IFByb21pc2UoZnVuY3Rpb24ocixuKXtvW2VdPVtyLG5dfSk7cmV0dXJuIG9bZV1bMl09Y30sci5t
PWUsci5jPXQsci5pPWZ1bmN0aW9uKGUpe3JldHVybiBlfSxyLmQ9ZnVuY3Rpb24oZSxyLG4pe09i
amVjdC5kZWZpbmVQcm9wZXJ0eShlLHIse2NvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiEwLGdl
dDpufSl9LHIubj1mdW5jdGlvbihlKXt2YXIgbj1lJiZlLl9fZXNNb2R1bGU/ZnVuY3Rpb24oKXty
ZXR1cm4gZVsiZGVmYXVsdCJdfTpmdW5jdGlvbigpe3JldHVybiBlfTtyZXR1cm4gci5kKG4sImEi
LG4pLG59LHIubz1mdW5jdGlvbihlLHIpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blBy
b3BlcnR5LmNhbGwoZSxyKX0sci5wPSIiLHIub2U9ZnVuY3Rpb24oZSl7dGhyb3cgY29uc29sZS5l
cnJvcihlKSxlfX0oW10pOworLy8jIHNvdXJjZU1hcHBpbmdVUkw9YnVuZGxlLm1hbmlmZXN0LmJj
MDQwM2NiNzA3NjhiMTRhZGRkLmpzLm1hcApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
dmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0L2J1bmRsZS5tYW5pZmVz
dC5iYzA0MDNjYjcwNzY4YjE0YWRkZC5qcy5tYXAgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBh
Y2svZGlzdC9idW5kbGUubWFuaWZlc3QuYmMwNDAzY2I3MDc2OGIxNGFkZGQuanMubWFwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjE3MzU2NGFhMzQwNDI1ZjU1MGM5YTZmYTE5NzlmNWEwNjZmOTdiYWMKLS0tIC9kZXYv
bnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svZGlzdC9idW5kbGUubWFuaWZl
c3QuYmMwNDAzY2I3MDc2OGIxNGFkZGQuanMubWFwCkBAIC0wLDAgKzEgQEAKK3sidmVyc2lvbiI6
Mywic291cmNlcyI6WyJ3ZWJwYWNrOi8vL2J1bmRsZS5tYW5pZmVzdC5iYzA0MDNjYjcwNzY4YjE0
YWRkZC5qcyIsIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAgNzExZDY4YmRhYmIxMGZhNTcw
ZjgiXSwibmFtZXMiOlsibW9kdWxlcyIsIl9fd2VicGFja19yZXF1aXJlX18iLCJtb2R1bGVJZCIs
Imluc3RhbGxlZE1vZHVsZXMiLCJleHBvcnRzIiwibW9kdWxlIiwiaSIsImwiLCJjYWxsIiwicGFy
ZW50SnNvbnBGdW5jdGlvbiIsIndpbmRvdyIsImNodW5rSWRzIiwibW9yZU1vZHVsZXMiLCJleGVj
dXRlTW9kdWxlcyIsImNodW5rSWQiLCJyZXN1bHQiLCJyZXNvbHZlcyIsImxlbmd0aCIsImluc3Rh
bGxlZENodW5rcyIsInB1c2giLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIs
InNoaWZ0IiwicyIsIjIiLCJlIiwib25TY3JpcHRDb21wbGV0ZSIsInNjcmlwdCIsIm9uZXJyb3Ii
LCJvbmxvYWQiLCJjbGVhclRpbWVvdXQiLCJ0aW1lb3V0IiwiY2h1bmsiLCJFcnJvciIsInVuZGVm
aW5lZCIsIlByb21pc2UiLCJyZXNvbHZlIiwiaGVhZCIsImRvY3VtZW50IiwiZ2V0RWxlbWVudHNC
eVRhZ05hbWUiLCJjcmVhdGVFbGVtZW50IiwidHlwZSIsImNoYXJzZXQiLCJhc3luYyIsInNyYyIs
InAiLCIwIiwiMSIsInNldFRpbWVvdXQiLCJhcHBlbmRDaGlsZCIsInByb21pc2UiLCJyZWplY3Qi
LCJtIiwiYyIsInZhbHVlIiwiZCIsIm5hbWUiLCJnZXR0ZXIiLCJkZWZpbmVQcm9wZXJ0eSIsImNv
bmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJnZXQiLCJuIiwiX19lc01vZHVsZSIsIm8iLCJvYmpl
Y3QiLCJwcm9wZXJ0eSIsIm9lIiwiZXJyIiwiY29uc29sZSIsImVycm9yIl0sIm1hcHBpbmdzIjoi
Q0FBUyxTQUFVQSxHQ3FDbkIsUUFBQUMsR0FBQUMsR0FHQSxHQUFBQyxFQUFBRCxHQUNBLE1BQUFD
LEdBQUFELEdBQUFFLE9BR0EsSUFBQUMsR0FBQUYsRUFBQUQsSUFDQUksRUFBQUosRUFDQUssR0FB
QSxFQUNBSCxXQVVBLE9BTkFKLEdBQUFFLEdBQUFNLEtBQUFILEVBQUFELFFBQUFDLElBQUFELFFB
QUFILEdBR0FJLEVBQUFFLEdBQUEsRUFHQUYsRUFBQUQsUUF4REEsR0FBQUssR0FBQUMsT0FBQSxZ
QUNBQSxRQUFBLHNCQUFBQyxFQUFBQyxFQUFBQyxHQUlBLElBREEsR0FBQVgsR0FBQVksRUFBQUMs
RUFBQVQsRUFBQSxFQUFBVSxLQUNRVixFQUFBSyxFQUFBTSxPQUFvQlgsSUFDNUJRLEVBQUFILEVB
QUFMLEdBQ0FZLEVBQUFKLElBQ0FFLEVBQUFHLEtBQUFELEVBQUFKLEdBQUEsSUFDQUksRUFBQUos
R0FBQSxDQUVBLEtBQUFaLElBQUFVLEdBQ0FRLE9BQUFDLFVBQUFDLGVBQUFkLEtBQUFJLEVBQUFW
LEtBQ0FGLEVBQUFFLEdBQUFVLEVBQUFWLEdBSUEsS0FEQU8sS0FBQUUsRUFBQUMsRUFBQUMsR0FD
QUcsRUFBQUMsUUFDQUQsRUFBQU8sU0FDQSxJQUFBVixFQUNBLElBQUFQLEVBQUEsRUFBWUEsRUFB
QU8sRUFBQUksT0FBMkJYLElBQ3ZDUyxFQUFBZCxJQUFBdUIsRUFBQVgsRUFBQVAsR0FHQSxPQUFB
UyxHQUlBLElBQUFaLE1BR0FlLEdBQ0FPLEVBQUEsRUE2QkF4QixHQUFBeUIsRUFBQSxTQUFBWixH
QW1CQSxRQUFBYSxLQUVBQyxFQUFBQyxRQUFBRCxFQUFBRSxPQUFBLEtBQ0FDLGFBQUFDLEVBQ0Es
SUFBQUMsR0FBQWYsRUFBQUosRUFDQSxLQUFBbUIsSUFDQUEsS0FBQSxNQUFBQyxPQUFBLGlCQUFB
cEIsRUFBQSxhQUNBSSxFQUFBSixHQUFBcUIsUUF6QkEsT0FBQWpCLEVBQUFKLEdBQ0EsTUFBQXNC
LFNBQUFDLFNBR0EsSUFBQW5CLEVBQUFKLEdBQ0EsTUFBQUksR0FBQUosR0FBQSxFQUdBLElBQUF3
QixHQUFBQyxTQUFBQyxxQkFBQSxXQUNBWixFQUFBVyxTQUFBRSxjQUFBLFNBQ0FiLEdBQUFjLEtB
QUEsa0JBQ0FkLEVBQUFlLFFBQUEsUUFDQWYsRUFBQWdCLE9BQUEsRUFDQWhCLEVBQUFJLFFBQUEs
S0FFQUosRUFBQWlCLElBQUE1QyxFQUFBNkMsRUFBQSxVQUFBaEMsRUFBQSxLQUFxRWlDLEVBQUEs
dUJBQUFDLEVBQUEsd0JBQXNEbEMsR0FBQSxLQUMzSCxJQUFBa0IsR0FBQWlCLFdBQUF0QixFQUFB
LEtBQ0FDLEdBQUFDLFFBQUFELEVBQUFFLE9BQUFILEVBV0FXLEVBQUFZLFlBQUF0QixFQUVBLElB
QUF1QixHQUFBLEdBQUFmLFNBQUEsU0FBQUMsRUFBQWUsR0FDQWxDLEVBQUFKLElBQUF1QixFQUFB
ZSxJQUVBLE9BQUFsQyxHQUFBSixHQUFBLEdBQUFxQyxHQUlBbEQsRUFBQW9ELEVBQUFyRCxFQUdB
QyxFQUFBcUQsRUFBQW5ELEVBR0FGLEVBQUFLLEVBQUEsU0FBQWlELEdBQTJDLE1BQUFBLElBRzND
dEQsRUFBQXVELEVBQUEsU0FBQXBELEVBQUFxRCxFQUFBQyxHQUNBdEMsT0FBQXVDLGVBQUF2RCxF
QUFBcUQsR0FDQUcsY0FBQSxFQUNBQyxZQUFBLEVBQ0FDLElBQUFKLEtBS0F6RCxFQUFBOEQsRUFB
QSxTQUFBMUQsR0FDQSxHQUFBcUQsR0FBQXJELEtBQUEyRCxXQUNBLFdBQTJCLE1BQUEzRCxHQUFB
LFlBQzNCLFdBQWlDLE1BQUFBLEdBRWpDLE9BREFKLEdBQUF1RCxFQUFBRSxFQUFBLElBQUFBLEdB
Q0FBLEdBSUF6RCxFQUFBZ0UsRUFBQSxTQUFBQyxFQUFBQyxHQUFzRCxNQUFBL0MsUUFBQUMsVUFB
QUMsZUFBQWQsS0FBQTBELEVBQUFDLElBR3REbEUsRUFBQTZDLEVBQUEsR0FHQTdDLEVBQUFtRSxH
QUFBLFNBQUFDLEdBQThELEtBQXBCQyxTQUFBQyxNQUFBRixHQUFvQkEiLCJmaWxlIjoiYnVuZGxl
Lm1hbmlmZXN0LmJjMDQwM2NiNzA3NjhiMTRhZGRkLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoq
KioqKi8gKGZ1bmN0aW9uKG1vZHVsZXMpIHsgLy8gd2VicGFja0Jvb3RzdHJhcFxuLyoqKioqKi8g
XHQvLyBpbnN0YWxsIGEgSlNPTlAgY2FsbGJhY2sgZm9yIGNodW5rIGxvYWRpbmdcbi8qKioqKiov
IFx0dmFyIHBhcmVudEpzb25wRnVuY3Rpb24gPSB3aW5kb3dbXCJ3ZWJwYWNrSnNvbnBcIl07XG4v
KioqKioqLyBcdHdpbmRvd1tcIndlYnBhY2tKc29ucFwiXSA9IGZ1bmN0aW9uIHdlYnBhY2tKc29u
cENhbGxiYWNrKGNodW5rSWRzLCBtb3JlTW9kdWxlcywgZXhlY3V0ZU1vZHVsZXMpIHtcbi8qKioq
KiovIFx0XHQvLyBhZGQgXCJtb3JlTW9kdWxlc1wiIHRvIHRoZSBtb2R1bGVzIG9iamVjdCxcbi8q
KioqKiovIFx0XHQvLyB0aGVuIGZsYWcgYWxsIFwiY2h1bmtJZHNcIiBhcyBsb2FkZWQgYW5kIGZp
cmUgY2FsbGJhY2tcbi8qKioqKiovIFx0XHR2YXIgbW9kdWxlSWQsIGNodW5rSWQsIGkgPSAwLCBy
ZXNvbHZlcyA9IFtdLCByZXN1bHQ7XG4vKioqKioqLyBcdFx0Zm9yKDtpIDwgY2h1bmtJZHMubGVu
Z3RoOyBpKyspIHtcbi8qKioqKiovIFx0XHRcdGNodW5rSWQgPSBjaHVua0lkc1tpXTtcbi8qKioq
KiovIFx0XHRcdGlmKGluc3RhbGxlZENodW5rc1tjaHVua0lkXSlcbi8qKioqKiovIFx0XHRcdFx0
cmVzb2x2ZXMucHVzaChpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF1bMF0pO1xuLyoqKioqKi8gXHRc
dFx0aW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdID0gMDtcbi8qKioqKiovIFx0XHR9XG4vKioqKioq
LyBcdFx0Zm9yKG1vZHVsZUlkIGluIG1vcmVNb2R1bGVzKSB7XG4vKioqKioqLyBcdFx0XHRpZihP
YmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobW9yZU1vZHVsZXMsIG1vZHVsZUlk
KSkge1xuLyoqKioqKi8gXHRcdFx0XHRtb2R1bGVzW21vZHVsZUlkXSA9IG1vcmVNb2R1bGVzW21v
ZHVsZUlkXTtcbi8qKioqKiovIFx0XHRcdH1cbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdFx0
aWYocGFyZW50SnNvbnBGdW5jdGlvbikgcGFyZW50SnNvbnBGdW5jdGlvbihjaHVua0lkcywgbW9y
ZU1vZHVsZXMsIGV4ZWN1dGVNb2R1bGVzKTtcbi8qKioqKiovIFx0XHR3aGlsZShyZXNvbHZlcy5s
ZW5ndGgpXG4vKioqKioqLyBcdFx0XHRyZXNvbHZlcy5zaGlmdCgpKCk7XG4vKioqKioqLyBcdFx0
aWYoZXhlY3V0ZU1vZHVsZXMpIHtcbi8qKioqKiovIFx0XHRcdGZvcihpPTA7IGkgPCBleGVjdXRl
TW9kdWxlcy5sZW5ndGg7IGkrKykge1xuLyoqKioqKi8gXHRcdFx0XHRyZXN1bHQgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IGV4ZWN1dGVNb2R1bGVzW2ldKTtc
bi8qKioqKiovIFx0XHRcdH1cbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdFx0cmV0dXJuIHJl
c3VsdDtcbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIFRoZSBtb2R1bGUg
Y2FjaGVcbi8qKioqKiovIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcbi8qKioqKiovXG4v
KioqKioqLyBcdC8vIG9iamVjdHMgdG8gc3RvcmUgbG9hZGVkIGFuZCBsb2FkaW5nIGNodW5rc1xu
LyoqKioqKi8gXHR2YXIgaW5zdGFsbGVkQ2h1bmtzID0ge1xuLyoqKioqKi8gXHRcdDI6IDBcbi8q
KioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9u
XG4vKioqKioqLyBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcbi8q
KioqKiovXG4vKioqKioqLyBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4vKioq
KioqLyBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pXG4vKioqKioqLyBcdFx0XHRy
ZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbi8qKioqKiovXG4vKioq
KioqLyBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNo
ZSlcbi8qKioqKiovIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0g
PSB7XG4vKioqKioqLyBcdFx0XHRpOiBtb2R1bGVJZCxcbi8qKioqKiovIFx0XHRcdGw6IGZhbHNl
LFxuLyoqKioqKi8gXHRcdFx0ZXhwb3J0czoge31cbi8qKioqKiovIFx0XHR9O1xuLyoqKioqKi9c
bi8qKioqKiovIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbi8qKioqKiovIFx0
XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5l
eHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8g
RmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuLyoqKioqKi8gXHRcdG1vZHVsZS5sID0gdHJ1ZTtc
bi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1
bGVcbi8qKioqKiovIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4vKioqKioqLyBcdH1cbi8q
KioqKiovXG4vKioqKioqLyBcdC8vIFRoaXMgZmlsZSBjb250YWlucyBvbmx5IHRoZSBlbnRyeSBj
aHVuay5cbi8qKioqKiovIFx0Ly8gVGhlIGNodW5rIGxvYWRpbmcgZnVuY3Rpb24gZm9yIGFkZGl0
aW9uYWwgY2h1bmtzXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uZSA9IGZ1bmN0aW9u
IHJlcXVpcmVFbnN1cmUoY2h1bmtJZCkge1xuLyoqKioqKi8gXHRcdGlmKGluc3RhbGxlZENodW5r
c1tjaHVua0lkXSA9PT0gMClcbi8qKioqKiovIFx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUo
KTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gYW4gUHJvbWlzZSBtZWFucyBcImN1cnJlbnRs
eSBsb2FkaW5nXCIuXG4vKioqKioqLyBcdFx0aWYoaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdKSB7
XG4vKioqKioqLyBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdWzJdO1xuLyoq
KioqKi8gXHRcdH1cbi8qKioqKiovIFx0XHQvLyBzdGFydCBjaHVuayBsb2FkaW5nXG4vKioqKioq
LyBcdFx0dmFyIGhlYWQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBd
O1xuLyoqKioqKi8gXHRcdHZhciBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3Jp
cHQnKTtcbi8qKioqKiovIFx0XHRzY3JpcHQudHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnO1xuLyoq
KioqKi8gXHRcdHNjcmlwdC5jaGFyc2V0ID0gJ3V0Zi04Jztcbi8qKioqKiovIFx0XHRzY3JpcHQu
YXN5bmMgPSB0cnVlO1xuLyoqKioqKi8gXHRcdHNjcmlwdC50aW1lb3V0ID0gMTIwMDAwO1xuLyoq
KioqKi9cbi8qKioqKiovIFx0XHRzY3JpcHQuc3JjID0gX193ZWJwYWNrX3JlcXVpcmVfXy5wICsg
XCJidW5kbGUuXCIgKyBjaHVua0lkICsgXCIuXCIgKyB7XCIwXCI6XCI0MjFlYjZiYWNhMDIyMThl
OTg1ZVwiLFwiMVwiOlwiZGExYTJkNjQxMDZlYzU0ZDRmNTdcIn1bY2h1bmtJZF0gKyBcIi5qc1wi
O1xuLyoqKioqKi8gXHRcdHZhciB0aW1lb3V0ID0gc2V0VGltZW91dChvblNjcmlwdENvbXBsZXRl
LCAxMjAwMDApO1xuLyoqKioqKi8gXHRcdHNjcmlwdC5vbmVycm9yID0gc2NyaXB0Lm9ubG9hZCA9
IG9uU2NyaXB0Q29tcGxldGU7XG4vKioqKioqLyBcdFx0ZnVuY3Rpb24gb25TY3JpcHRDb21wbGV0
ZSgpIHtcbi8qKioqKiovIFx0XHRcdC8vIGF2b2lkIG1lbSBsZWFrcyBpbiBJRS5cbi8qKioqKiov
IFx0XHRcdHNjcmlwdC5vbmVycm9yID0gc2NyaXB0Lm9ubG9hZCA9IG51bGw7XG4vKioqKioqLyBc
dFx0XHRjbGVhclRpbWVvdXQodGltZW91dCk7XG4vKioqKioqLyBcdFx0XHR2YXIgY2h1bmsgPSBp
bnN0YWxsZWRDaHVua3NbY2h1bmtJZF07XG4vKioqKioqLyBcdFx0XHRpZihjaHVuayAhPT0gMCkg
e1xuLyoqKioqKi8gXHRcdFx0XHRpZihjaHVuaykgY2h1bmtbMV0obmV3IEVycm9yKCdMb2FkaW5n
IGNodW5rICcgKyBjaHVua0lkICsgJyBmYWlsZWQuJykpO1xuLyoqKioqKi8gXHRcdFx0XHRpbnN0
YWxsZWRDaHVua3NbY2h1bmtJZF0gPSB1bmRlZmluZWQ7XG4vKioqKioqLyBcdFx0XHR9XG4vKioq
KioqLyBcdFx0fTtcbi8qKioqKiovIFx0XHRoZWFkLmFwcGVuZENoaWxkKHNjcmlwdCk7XG4vKioq
KioqL1xuLyoqKioqKi8gXHRcdHZhciBwcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVz
b2x2ZSwgcmVqZWN0KSB7XG4vKioqKioqLyBcdFx0XHRpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF0g
PSBbcmVzb2x2ZSwgcmVqZWN0XTtcbi8qKioqKiovIFx0XHR9KTtcbi8qKioqKiovIFx0XHRyZXR1
cm4gaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdWzJdID0gcHJvbWlzZTtcbi8qKioqKiovIFx0fTtc
bi8qKioqKiovXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2Vi
cGFja19tb2R1bGVzX18pXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVs
ZXM7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuLyoq
KioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuLyoqKioq
Ki9cbi8qKioqKiovIFx0Ly8gaWRlbnRpdHkgZnVuY3Rpb24gZm9yIGNhbGxpbmcgaGFybW9yeSBp
bXBvcnRzIHdpdGggdGhlIGNvcnJlY3QgY29udGV4dFxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVx
dWlyZV9fLmkgPSBmdW5jdGlvbih2YWx1ZSkgeyByZXR1cm4gdmFsdWU7IH07XG4vKioqKioqL1xu
LyoqKioqKi8gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb3J5IGV4cG9ydHNc
bi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFt
ZSwgZ2V0dGVyKSB7XG4vKioqKioqLyBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMs
IG5hbWUsIHtcbi8qKioqKiovIFx0XHRcdGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4vKioqKioqLyBc
dFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxuLyoqKioqKi8gXHRcdFx0Z2V0OiBnZXR0ZXJcbi8qKioq
KiovIFx0XHR9KTtcbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGdldERl
ZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBt
b2R1bGVzXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVs
ZSkge1xuLyoqKioqKi8gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1
bGUgP1xuLyoqKioqKi8gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVs
ZVsnZGVmYXVsdCddOyB9IDpcbi8qKioqKiovIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9y
dHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVf
Xy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuLyoqKioqKi8gXHRcdHJldHVybiBnZXR0ZXI7XG4v
KioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBPYmplY3QucHJvdG90eXBlLmhh
c093blByb3BlcnR5LmNhbGxcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVu
Y3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Q
cm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0
Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVf
Xy5wID0gXCJcIjtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIG9uIGVycm9yIGZ1bmN0aW9uIGZv
ciBhc3luYyBsb2FkaW5nXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ub2UgPSBmdW5j
dGlvbihlcnIpIHsgY29uc29sZS5lcnJvcihlcnIpOyB0aHJvdyBlcnI7IH07XG4vKioqKioqLyB9
KVxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKi9cbi8qKioqKiovIChbXSk7XG5cblxuLy8gV0VCUEFDSyBGT09U
RVIgLy9cbi8vIGJ1bmRsZS5tYW5pZmVzdC5iYzA0MDNjYjcwNzY4YjE0YWRkZC5qcyIsIiBcdC8v
IGluc3RhbGwgYSBKU09OUCBjYWxsYmFjayBmb3IgY2h1bmsgbG9hZGluZ1xuIFx0dmFyIHBhcmVu
dEpzb25wRnVuY3Rpb24gPSB3aW5kb3dbXCJ3ZWJwYWNrSnNvbnBcIl07XG4gXHR3aW5kb3dbXCJ3
ZWJwYWNrSnNvbnBcIl0gPSBmdW5jdGlvbiB3ZWJwYWNrSnNvbnBDYWxsYmFjayhjaHVua0lkcywg
bW9yZU1vZHVsZXMsIGV4ZWN1dGVNb2R1bGVzKSB7XG4gXHRcdC8vIGFkZCBcIm1vcmVNb2R1bGVz
XCIgdG8gdGhlIG1vZHVsZXMgb2JqZWN0LFxuIFx0XHQvLyB0aGVuIGZsYWcgYWxsIFwiY2h1bmtJ
ZHNcIiBhcyBsb2FkZWQgYW5kIGZpcmUgY2FsbGJhY2tcbiBcdFx0dmFyIG1vZHVsZUlkLCBjaHVu
a0lkLCBpID0gMCwgcmVzb2x2ZXMgPSBbXSwgcmVzdWx0O1xuIFx0XHRmb3IoO2kgPCBjaHVua0lk
cy5sZW5ndGg7IGkrKykge1xuIFx0XHRcdGNodW5rSWQgPSBjaHVua0lkc1tpXTtcbiBcdFx0XHRp
ZihpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF0pXG4gXHRcdFx0XHRyZXNvbHZlcy5wdXNoKGluc3Rh
bGxlZENodW5rc1tjaHVua0lkXVswXSk7XG4gXHRcdFx0aW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRd
ID0gMDtcbiBcdFx0fVxuIFx0XHRmb3IobW9kdWxlSWQgaW4gbW9yZU1vZHVsZXMpIHtcbiBcdFx0
XHRpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobW9yZU1vZHVsZXMsIG1v
ZHVsZUlkKSkge1xuIFx0XHRcdFx0bW9kdWxlc1ttb2R1bGVJZF0gPSBtb3JlTW9kdWxlc1ttb2R1
bGVJZF07XG4gXHRcdFx0fVxuIFx0XHR9XG4gXHRcdGlmKHBhcmVudEpzb25wRnVuY3Rpb24pIHBh
cmVudEpzb25wRnVuY3Rpb24oY2h1bmtJZHMsIG1vcmVNb2R1bGVzLCBleGVjdXRlTW9kdWxlcyk7
XG4gXHRcdHdoaWxlKHJlc29sdmVzLmxlbmd0aClcbiBcdFx0XHRyZXNvbHZlcy5zaGlmdCgpKCk7
XG4gXHRcdGlmKGV4ZWN1dGVNb2R1bGVzKSB7XG4gXHRcdFx0Zm9yKGk9MDsgaSA8IGV4ZWN1dGVN
b2R1bGVzLmxlbmd0aDsgaSsrKSB7XG4gXHRcdFx0XHRyZXN1bHQgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IGV4ZWN1dGVNb2R1bGVzW2ldKTtcbiBcdFx0XHR9
XG4gXHRcdH1cbiBcdFx0cmV0dXJuIHJlc3VsdDtcbiBcdH07XG5cbiBcdC8vIFRoZSBtb2R1bGUg
Y2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIG9iamVjdHMgdG8g
c3RvcmUgbG9hZGVkIGFuZCBsb2FkaW5nIGNodW5rc1xuIFx0dmFyIGluc3RhbGxlZENodW5rcyA9
IHtcbiBcdFx0MjogMFxuIFx0fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1
bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBp
ZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0p
XG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG5cbiBc
dFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBc
dFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGk6
IG1vZHVsZUlkLFxuIFx0XHRcdGw6IGZhbHNlLFxuIFx0XHRcdGV4cG9ydHM6IHt9XG4gXHRcdH07
XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9k
dWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2Vi
cGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBc
dFx0bW9kdWxlLmwgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUg
bW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuIFx0Ly8gVGhpcyBm
aWxlIGNvbnRhaW5zIG9ubHkgdGhlIGVudHJ5IGNodW5rLlxuIFx0Ly8gVGhlIGNodW5rIGxvYWRp
bmcgZnVuY3Rpb24gZm9yIGFkZGl0aW9uYWwgY2h1bmtzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9f
LmUgPSBmdW5jdGlvbiByZXF1aXJlRW5zdXJlKGNodW5rSWQpIHtcbiBcdFx0aWYoaW5zdGFsbGVk
Q2h1bmtzW2NodW5rSWRdID09PSAwKVxuIFx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtc
blxuIFx0XHQvLyBhbiBQcm9taXNlIG1lYW5zIFwiY3VycmVudGx5IGxvYWRpbmdcIi5cbiBcdFx0
aWYoaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdKSB7XG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZENo
dW5rc1tjaHVua0lkXVsyXTtcbiBcdFx0fVxuIFx0XHQvLyBzdGFydCBjaHVuayBsb2FkaW5nXG4g
XHRcdHZhciBoZWFkID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXTtc
biBcdFx0dmFyIHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuIFx0
XHRzY3JpcHQudHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnO1xuIFx0XHRzY3JpcHQuY2hhcnNldCA9
ICd1dGYtOCc7XG4gXHRcdHNjcmlwdC5hc3luYyA9IHRydWU7XG4gXHRcdHNjcmlwdC50aW1lb3V0
ID0gMTIwMDAwO1xuXG4gXHRcdHNjcmlwdC5zcmMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLnAgKyBc
ImJ1bmRsZS5cIiArIGNodW5rSWQgKyBcIi5cIiArIHtcIjBcIjpcIjQyMWViNmJhY2EwMjIxOGU5
ODVlXCIsXCIxXCI6XCJkYTFhMmQ2NDEwNmVjNTRkNGY1N1wifVtjaHVua0lkXSArIFwiLmpzXCI7
XG4gXHRcdHZhciB0aW1lb3V0ID0gc2V0VGltZW91dChvblNjcmlwdENvbXBsZXRlLCAxMjAwMDAp
O1xuIFx0XHRzY3JpcHQub25lcnJvciA9IHNjcmlwdC5vbmxvYWQgPSBvblNjcmlwdENvbXBsZXRl
O1xuIFx0XHRmdW5jdGlvbiBvblNjcmlwdENvbXBsZXRlKCkge1xuIFx0XHRcdC8vIGF2b2lkIG1l
bSBsZWFrcyBpbiBJRS5cbiBcdFx0XHRzY3JpcHQub25lcnJvciA9IHNjcmlwdC5vbmxvYWQgPSBu
dWxsO1xuIFx0XHRcdGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiBcdFx0XHR2YXIgY2h1bmsgPSBp
bnN0YWxsZWRDaHVua3NbY2h1bmtJZF07XG4gXHRcdFx0aWYoY2h1bmsgIT09IDApIHtcbiBcdFx0
XHRcdGlmKGNodW5rKSBjaHVua1sxXShuZXcgRXJyb3IoJ0xvYWRpbmcgY2h1bmsgJyArIGNodW5r
SWQgKyAnIGZhaWxlZC4nKSk7XG4gXHRcdFx0XHRpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF0gPSB1
bmRlZmluZWQ7XG4gXHRcdFx0fVxuIFx0XHR9O1xuIFx0XHRoZWFkLmFwcGVuZENoaWxkKHNjcmlw
dCk7XG5cbiBcdFx0dmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCBy
ZWplY3QpIHtcbiBcdFx0XHRpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF0gPSBbcmVzb2x2ZSwgcmVq
ZWN0XTtcbiBcdFx0fSk7XG4gXHRcdHJldHVybiBpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF1bMl0g
PSBwcm9taXNlO1xuIFx0fTtcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193
ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5c
biBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMg
PSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBpZGVudGl0eSBmdW5jdGlvbiBmb3IgY2FsbGlu
ZyBoYXJtb3J5IGltcG9ydHMgd2l0aCB0aGUgY29ycmVjdCBjb250ZXh0XG4gXHRfX3dlYnBhY2tf
cmVxdWlyZV9fLmkgPSBmdW5jdGlvbih2YWx1ZSkgeyByZXR1cm4gdmFsdWU7IH07XG5cbiBcdC8v
IGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vcnkgZXhwb3J0c1xuIFx0X193ZWJwYWNr
X3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4gXHRcdE9i
amVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7XG4gXHRcdFx0Y29uZmlndXJhYmxl
OiBmYWxzZSxcbiBcdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxuIFx0XHRcdGdldDogZ2V0dGVyXG4g
XHRcdH0pO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29t
cGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJl
X18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1v
ZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4g
bW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMo
KSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIs
ICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVj
dC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5v
ID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5o
YXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBh
Y2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuIFx0
Ly8gb24gZXJyb3IgZnVuY3Rpb24gZm9yIGFzeW5jIGxvYWRpbmdcbiBcdF9fd2VicGFja19yZXF1
aXJlX18ub2UgPSBmdW5jdGlvbihlcnIpIHsgY29uc29sZS5lcnJvcihlcnIpOyB0aHJvdyBlcnI7
IH07XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gd2VicGFjay9ib290c3RyYXAgNzEx
ZDY4YmRhYmIxMGZhNTcwZjgiXSwic291cmNlUm9vdCI6IiJ9ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3QvYnVu
ZGxlLnZlbmRvci5kYTFhMmQ2NDEwNmVjNTRkNGY1Ny5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwt
d2VicGFjay9kaXN0L2J1bmRsZS52ZW5kb3IuZGExYTJkNjQxMDZlYzU0ZDRmNTcuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOTZiY2UyZmQyODVjNjUwM2YwNDIxZGJlZDJiNDdhYTQ5NzI5ZTFjYQotLS0gL2Rldi9u
dWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
dmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0L2J1bmRsZS52ZW5kb3Iu
ZGExYTJkNjQxMDZlYzU0ZDRmNTcuanMKQEAgLTAsMCArMSwyIEBACit3ZWJwYWNrSnNvbnAoWzEs
Ml0sezE6ZnVuY3Rpb24obix0KXt9LDExOmZ1bmN0aW9uKG4sdCxyKXtuLmV4cG9ydHM9cigxKX0s
MTI6ZnVuY3Rpb24obix0KXtuLmV4cG9ydHM9ZnVuY3Rpb24oKXt2YXIgbj1bXTtyZXR1cm4gbi50
b1N0cmluZz1mdW5jdGlvbigpe2Zvcih2YXIgbj1bXSx0PTA7dDx0aGlzLmxlbmd0aDt0Kyspe3Zh
ciByPXRoaXNbdF07clsyXT9uLnB1c2goIkBtZWRpYSAiK3JbMl0rInsiK3JbMV0rIn0iKTpuLnB1
c2goclsxXSl9cmV0dXJuIG4uam9pbigiIil9LG4uaT1mdW5jdGlvbih0LHIpeyJzdHJpbmciPT10
eXBlb2YgdCYmKHQ9W1tudWxsLHQsIiJdXSk7Zm9yKHZhciBvPXt9LGk9MDtpPHRoaXMubGVuZ3Ro
O2krKyl7dmFyIGU9dGhpc1tpXVswXTsibnVtYmVyIj09dHlwZW9mIGUmJihvW2VdPSEwKX1mb3Io
aT0wO2k8dC5sZW5ndGg7aSsrKXt2YXIgdT10W2ldOyJudW1iZXIiPT10eXBlb2YgdVswXSYmb1t1
WzBdXXx8KHImJiF1WzJdP3VbMl09cjpyJiYodVsyXT0iKCIrdVsyXSsiKSBhbmQgKCIrcisiKSIp
LG4ucHVzaCh1KSl9fSxufX19LFsxMV0pOworLy8jIHNvdXJjZU1hcHBpbmdVUkw9YnVuZGxlLnZl
bmRvci5kYTFhMmQ2NDEwNmVjNTRkNGY1Ny5qcy5tYXAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svZGlzdC9idW5kbGUu
dmVuZG9yLmRhMWEyZDY0MTA2ZWM1NGQ0ZjU3LmpzLm1hcCBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwt
d2VicGFjay9kaXN0L2J1bmRsZS52ZW5kb3IuZGExYTJkNjQxMDZlYzU0ZDRmNTcuanMubWFwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjAwOTYyZGU4NmEyMGEyNjhmYjQyN2NjMzdlYmE3N2I3NTRjNDU3NGEKLS0tIC9k
ZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svZGlzdC9idW5kbGUudmVu
ZG9yLmRhMWEyZDY0MTA2ZWM1NGQ0ZjU3LmpzLm1hcApAQCAtMCwwICsxIEBACit7InZlcnNpb24i
OjMsInNvdXJjZXMiOlsid2VicGFjazovLy9idW5kbGUudmVuZG9yLmRhMWEyZDY0MTA2ZWM1NGQ0
ZjU3LmpzIiwid2VicGFjazovLy8uLi9+L2Nzcy1sb2FkZXIvbGliL2Nzcy1iYXNlLmpzIl0sIm5h
bWVzIjpbIndlYnBhY2tKc29ucCIsIjEiLCJtb2R1bGUiLCJleHBvcnRzIiwiMTEiLCJfX3dlYnBh
Y2tfcmVxdWlyZV9fIiwiMTIiLCJsaXN0IiwidG9TdHJpbmciLCJyZXN1bHQiLCJpIiwidGhpcyIs
Imxlbmd0aCIsIml0ZW0iLCJwdXNoIiwiam9pbiIsIm1vZHVsZXMiLCJtZWRpYVF1ZXJ5IiwiYWxy
ZWFkeUltcG9ydGVkTW9kdWxlcyIsImlkIl0sIm1hcHBpbmdzIjoiQUFBQUEsY0FBYyxFQUFFLElB
RVZDLEVBQ0EsU0FBU0MsRUFBUUMsS0FNakJDLEdBQ0EsU0FBU0YsRUFBUUMsRUFBU0UsR0FFaENI
LEVBQU9DLFFBQVVFLEVBQW9CLElBSy9CQyxHQUNBLFNBQVNKLEVBQVFDLEdDYnZCRCxFQUFBQyxR
QUFBLFdBQ0EsR0FBQUksS0EwQ0EsT0F2Q0FBLEdBQUFDLFNBQUEsV0FFQSxPQURBQyxNQUNBQyxF
QUFBLEVBQWdCQSxFQUFBQyxLQUFBQyxPQUFpQkYsSUFBQSxDQUNqQyxHQUFBRyxHQUFBRixLQUFB
RCxFQUNBRyxHQUFBLEdBQ0FKLEVBQUFLLEtBQUEsVUFBQUQsRUFBQSxPQUF3Q0EsRUFBQSxRQUV4
Q0osRUFBQUssS0FBQUQsRUFBQSxJQUdBLE1BQUFKLEdBQUFNLEtBQUEsS0FJQVIsRUFBQUcsRUFB
QSxTQUFBTSxFQUFBQyxHQUNBLGdCQUFBRCxLQUNBQSxJQUFBLEtBQUFBLEVBQUEsS0FFQSxRQURB
RSxNQUNBUixFQUFBLEVBQWdCQSxFQUFBQyxLQUFBQyxPQUFpQkYsSUFBQSxDQUNqQyxHQUFBUyxH
QUFBUixLQUFBRCxHQUFBLEVBQ0EsaUJBQUFTLEtBQ0FELEVBQUFDLElBQUEsR0FFQSxJQUFBVCxF
QUFBLEVBQVlBLEVBQUFNLEVBQUFKLE9BQW9CRixJQUFBLENBQ2hDLEdBQUFHLEdBQUFHLEVBQUFO
LEVBS0EsaUJBQUFHLEdBQUEsSUFBQUssRUFBQUwsRUFBQSxNQUNBSSxJQUFBSixFQUFBLEdBQ0FB
LEVBQUEsR0FBQUksRUFDS0EsSUFDTEosRUFBQSxPQUFBQSxFQUFBLGFBQUFJLEVBQUEsS0FFQVYs
RUFBQU8sS0FBQUQsTUFJQU4sTUQwQkciLCJmaWxlIjoiYnVuZGxlLnZlbmRvci5kYTFhMmQ2NDEw
NmVjNTRkNGY1Ny5qcyIsInNvdXJjZXNDb250ZW50IjpbIndlYnBhY2tKc29ucChbMSwyXSx7XG5c
bi8qKiovIDE6XG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuLy8gcmVtb3Zl
ZCBieSBleHRyYWN0LXRleHQtd2VicGFjay1wbHVnaW5cblxuLyoqKi8gfSxcblxuLyoqKi8gMTE6
XG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtc
blxubW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuXG5cbi8qKiovIH0s
XG5cbi8qKiovIDEyOlxuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbi8qXHJc
blx0TUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGlj
ZW5zZS5waHBcclxuXHRBdXRob3IgVG9iaWFzIEtvcHBlcnMgQHNva3JhXHJcbiovXHJcbi8vIGNz
cyBiYXNlIGNvZGUsIGluamVjdGVkIGJ5IHRoZSBjc3MtbG9hZGVyXHJcbm1vZHVsZS5leHBvcnRz
ID0gZnVuY3Rpb24oKSB7XHJcblx0dmFyIGxpc3QgPSBbXTtcclxuXHJcblx0Ly8gcmV0dXJuIHRo
ZSBsaXN0IG9mIG1vZHVsZXMgYXMgY3NzIHN0cmluZ1xyXG5cdGxpc3QudG9TdHJpbmcgPSBmdW5j
dGlvbiB0b1N0cmluZygpIHtcclxuXHRcdHZhciByZXN1bHQgPSBbXTtcclxuXHRcdGZvcih2YXIg
aSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdHZhciBpdGVtID0gdGhpc1tp
XTtcclxuXHRcdFx0aWYoaXRlbVsyXSkge1xyXG5cdFx0XHRcdHJlc3VsdC5wdXNoKFwiQG1lZGlh
IFwiICsgaXRlbVsyXSArIFwie1wiICsgaXRlbVsxXSArIFwifVwiKTtcclxuXHRcdFx0fSBlbHNl
IHtcclxuXHRcdFx0XHRyZXN1bHQucHVzaChpdGVtWzFdKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxy
XG5cdFx0cmV0dXJuIHJlc3VsdC5qb2luKFwiXCIpO1xyXG5cdH07XHJcblxyXG5cdC8vIGltcG9y
dCBhIGxpc3Qgb2YgbW9kdWxlcyBpbnRvIHRoZSBsaXN0XHJcblx0bGlzdC5pID0gZnVuY3Rpb24o
bW9kdWxlcywgbWVkaWFRdWVyeSkge1xyXG5cdFx0aWYodHlwZW9mIG1vZHVsZXMgPT09IFwic3Ry
aW5nXCIpXHJcblx0XHRcdG1vZHVsZXMgPSBbW251bGwsIG1vZHVsZXMsIFwiXCJdXTtcclxuXHRc
dHZhciBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzID0ge307XHJcblx0XHRmb3IodmFyIGkgPSAwOyBp
IDwgdGhpcy5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHR2YXIgaWQgPSB0aGlzW2ldWzBdO1xyXG5c
dFx0XHRpZih0eXBlb2YgaWQgPT09IFwibnVtYmVyXCIpXHJcblx0XHRcdFx0YWxyZWFkeUltcG9y
dGVkTW9kdWxlc1tpZF0gPSB0cnVlO1xyXG5cdFx0fVxyXG5cdFx0Zm9yKGkgPSAwOyBpIDwgbW9k
dWxlcy5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHR2YXIgaXRlbSA9IG1vZHVsZXNbaV07XHJcblx0
XHRcdC8vIHNraXAgYWxyZWFkeSBpbXBvcnRlZCBtb2R1bGVcclxuXHRcdFx0Ly8gdGhpcyBpbXBs
ZW1lbnRhdGlvbiBpcyBub3QgMTAwJSBwZXJmZWN0IGZvciB3ZWlyZCBtZWRpYSBxdWVyeSBjb21i
aW5hdGlvbnNcclxuXHRcdFx0Ly8gIHdoZW4gYSBtb2R1bGUgaXMgaW1wb3J0ZWQgbXVsdGlwbGUg
dGltZXMgd2l0aCBkaWZmZXJlbnQgbWVkaWEgcXVlcmllcy5cclxuXHRcdFx0Ly8gIEkgaG9wZSB0
aGlzIHdpbGwgbmV2ZXIgb2NjdXIgKEhleSB0aGlzIHdheSB3ZSBoYXZlIHNtYWxsZXIgYnVuZGxl
cylcclxuXHRcdFx0aWYodHlwZW9mIGl0ZW1bMF0gIT09IFwibnVtYmVyXCIgfHwgIWFscmVhZHlJ
bXBvcnRlZE1vZHVsZXNbaXRlbVswXV0pIHtcclxuXHRcdFx0XHRpZihtZWRpYVF1ZXJ5ICYmICFp
dGVtWzJdKSB7XHJcblx0XHRcdFx0XHRpdGVtWzJdID0gbWVkaWFRdWVyeTtcclxuXHRcdFx0XHR9
IGVsc2UgaWYobWVkaWFRdWVyeSkge1xyXG5cdFx0XHRcdFx0aXRlbVsyXSA9IFwiKFwiICsgaXRl
bVsyXSArIFwiKSBhbmQgKFwiICsgbWVkaWFRdWVyeSArIFwiKVwiO1xyXG5cdFx0XHRcdH1cclxu
XHRcdFx0XHRsaXN0LnB1c2goaXRlbSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9O1xyXG5c
dHJldHVybiBsaXN0O1xyXG59O1xyXG5cblxuLyoqKi8gfVxuXG59LFsxMV0pO1xuXG5cbi8vIFdF
QlBBQ0sgRk9PVEVSIC8vXG4vLyBidW5kbGUudmVuZG9yLmRhMWEyZDY0MTA2ZWM1NGQ0ZjU3Lmpz
IiwiLypcclxuXHRNSVQgTGljZW5zZSBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2Vz
L21pdC1saWNlbnNlLnBocFxyXG5cdEF1dGhvciBUb2JpYXMgS29wcGVycyBAc29rcmFcclxuKi9c
clxuLy8gY3NzIGJhc2UgY29kZSwgaW5qZWN0ZWQgYnkgdGhlIGNzcy1sb2FkZXJcclxubW9kdWxl
LmV4cG9ydHMgPSBmdW5jdGlvbigpIHtcclxuXHR2YXIgbGlzdCA9IFtdO1xyXG5cclxuXHQvLyBy
ZXR1cm4gdGhlIGxpc3Qgb2YgbW9kdWxlcyBhcyBjc3Mgc3RyaW5nXHJcblx0bGlzdC50b1N0cmlu
ZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xyXG5cdFx0dmFyIHJlc3VsdCA9IFtdO1xyXG5cdFx0
Zm9yKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0dmFyIGl0ZW0g
PSB0aGlzW2ldO1xyXG5cdFx0XHRpZihpdGVtWzJdKSB7XHJcblx0XHRcdFx0cmVzdWx0LnB1c2go
XCJAbWVkaWEgXCIgKyBpdGVtWzJdICsgXCJ7XCIgKyBpdGVtWzFdICsgXCJ9XCIpO1xyXG5cdFx0
XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHJlc3VsdC5wdXNoKGl0ZW1bMV0pO1xyXG5cdFx0XHR9XHJc
blx0XHR9XHJcblx0XHRyZXR1cm4gcmVzdWx0LmpvaW4oXCJcIik7XHJcblx0fTtcclxuXHJcblx0
Ly8gaW1wb3J0IGEgbGlzdCBvZiBtb2R1bGVzIGludG8gdGhlIGxpc3RcclxuXHRsaXN0LmkgPSBm
dW5jdGlvbihtb2R1bGVzLCBtZWRpYVF1ZXJ5KSB7XHJcblx0XHRpZih0eXBlb2YgbW9kdWxlcyA9
PT0gXCJzdHJpbmdcIilcclxuXHRcdFx0bW9kdWxlcyA9IFtbbnVsbCwgbW9kdWxlcywgXCJcIl1d
O1xyXG5cdFx0dmFyIGFscmVhZHlJbXBvcnRlZE1vZHVsZXMgPSB7fTtcclxuXHRcdGZvcih2YXIg
aSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdHZhciBpZCA9IHRoaXNbaV1b
MF07XHJcblx0XHRcdGlmKHR5cGVvZiBpZCA9PT0gXCJudW1iZXJcIilcclxuXHRcdFx0XHRhbHJl
YWR5SW1wb3J0ZWRNb2R1bGVzW2lkXSA9IHRydWU7XHJcblx0XHR9XHJcblx0XHRmb3IoaSA9IDA7
IGkgPCBtb2R1bGVzLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdHZhciBpdGVtID0gbW9kdWxlc1tp
XTtcclxuXHRcdFx0Ly8gc2tpcCBhbHJlYWR5IGltcG9ydGVkIG1vZHVsZVxyXG5cdFx0XHQvLyB0
aGlzIGltcGxlbWVudGF0aW9uIGlzIG5vdCAxMDAlIHBlcmZlY3QgZm9yIHdlaXJkIG1lZGlhIHF1
ZXJ5IGNvbWJpbmF0aW9uc1xyXG5cdFx0XHQvLyAgd2hlbiBhIG1vZHVsZSBpcyBpbXBvcnRlZCBt
dWx0aXBsZSB0aW1lcyB3aXRoIGRpZmZlcmVudCBtZWRpYSBxdWVyaWVzLlxyXG5cdFx0XHQvLyAg
SSBob3BlIHRoaXMgd2lsbCBuZXZlciBvY2N1ciAoSGV5IHRoaXMgd2F5IHdlIGhhdmUgc21hbGxl
ciBidW5kbGVzKVxyXG5cdFx0XHRpZih0eXBlb2YgaXRlbVswXSAhPT0gXCJudW1iZXJcIiB8fCAh
YWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpdGVtWzBdXSkge1xyXG5cdFx0XHRcdGlmKG1lZGlhUXVl
cnkgJiYgIWl0ZW1bMl0pIHtcclxuXHRcdFx0XHRcdGl0ZW1bMl0gPSBtZWRpYVF1ZXJ5O1xyXG5c
dFx0XHRcdH0gZWxzZSBpZihtZWRpYVF1ZXJ5KSB7XHJcblx0XHRcdFx0XHRpdGVtWzJdID0gXCIo
XCIgKyBpdGVtWzJdICsgXCIpIGFuZCAoXCIgKyBtZWRpYVF1ZXJ5ICsgXCIpXCI7XHJcblx0XHRc
dFx0fVxyXG5cdFx0XHRcdGxpc3QucHVzaChpdGVtKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5c
dH07XHJcblx0cmV0dXJuIGxpc3Q7XHJcbn07XHJcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xu
Ly8gV0VCUEFDSyBGT09URVJcbi8vIC4uL34vY3NzLWxvYWRlci9saWIvY3NzLWJhc2UuanNcbi8v
IG1vZHVsZSBpZCA9IDEyXG4vLyBtb2R1bGUgY2h1bmtzID0gMSJdLCJzb3VyY2VSb290IjoiIn0K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJh
YmVsLXdlYnBhY2svZGlzdC9mYXZpY29uLmljbyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFj
ay9kaXN0L2Zhdmljb24uaWNvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk2ZDNlYjY3MjBlZjIyZDJhNGU2NzQ4MzE5
MmRiZmUxMzMwYjc4NWEKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDExNTAKemNtY2hYdX1UOSQ1
UWF4MFgpRnVgTVg8NWRSSlAjK1pGfmJPcFRKcldndFM2WHUoQz8pMTR4UjFIZ1pacHUoR25VCnoo
S2s0LTVgXj5ubGJ2SGQhZkdLVmUze3ZReytaaWI/cVc4X3g3OUwhKlgmXjRZfXc0IzBTUlRRNktz
Y0NkdHIqIQp6ZkF6Xy0+Pk41IUxaUGBLRlFlU2BUV2I2OXdPUE4lPnJ7Pys3djU0SCkka21gLWNQ
PlpvJFNyTV5je2lqPHByOXEKemRxa2BJdDJIKDZSbG4kYXBUfk5DcSN1VktfMSVVMWdWPUc7dFZy
RkBfTH0/JncmV3VZSyhuNDwoUjwwT3tSV0ArCnpTRHY2WkBqaWZOakd6KHdlT0Baa3Zqbj1uV31N
Q1BxSlBeQC05dm9eZTgjV09Hb0N9Z19BdihTTHZocFY8TzkhQgp6NW5sdVBwYyN7QVRtR093Njgj
KkREM2BhPWdUSVM1UEY/SDJZOSk3WmEkJVA5MjdaIz9ednM2NkI3ZmFCeUllSzkKVjt7VCVMc21N
OT97MnFBb1BCK2wtaVo3TkJpayQhZQoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0
IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxh
LWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3QvaW5kZXguaHRtbCBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9l
czIwMTUtYmFiZWwtd2VicGFjay9kaXN0L2luZGV4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmRiNTE4NzFi
MTJiODg4YzU3MjlmOTA5MDJiODdmZTcwMmFjZjk2MAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxl
cy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0L2luZGV4Lmh0bWwKQEAgLTAsMCArMSw0NSBAQAor
PCFkb2N0eXBlIGh0bWw+Cis8aHRtbCBsYW5nPSJlbiIgZGF0YS1mcmFtZXdvcms9ImphdmFzY3Jp
cHQiPgorICA8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CisgICAgPHRpdGxlPlZh
bmlsbGFKUyDigKIgVG9kb01WQzwvdGl0bGU+CisgICAgPHNjcmlwdD4hZnVuY3Rpb24oZSl7ZnVu
Y3Rpb24gcihuKXtpZih0W25dKXJldHVybiB0W25dLmV4cG9ydHM7dmFyIG89dFtuXT17aTpuLGw6
ITEsZXhwb3J0czp7fX07cmV0dXJuIGVbbl0uY2FsbChvLmV4cG9ydHMsbyxvLmV4cG9ydHMsciks
by5sPSEwLG8uZXhwb3J0c312YXIgbj13aW5kb3cud2VicGFja0pzb25wO3dpbmRvdy53ZWJwYWNr
SnNvbnA9ZnVuY3Rpb24odCxhLHUpe2Zvcih2YXIgYyxpLGYsbD0wLHM9W107bDx0Lmxlbmd0aDts
KyspaT10W2xdLG9baV0mJnMucHVzaChvW2ldWzBdKSxvW2ldPTA7Zm9yKGMgaW4gYSlPYmplY3Qu
cHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYSxjKSYmKGVbY109YVtjXSk7Zm9yKG4mJm4o
dCxhLHUpO3MubGVuZ3RoOylzLnNoaWZ0KCkoKTtpZih1KWZvcihsPTA7bDx1Lmxlbmd0aDtsKysp
Zj1yKHIucz11W2xdKTtyZXR1cm4gZn07dmFyIHQ9e30sbz17MjowfTtyLmU9ZnVuY3Rpb24oZSl7
ZnVuY3Rpb24gbigpe2Eub25lcnJvcj1hLm9ubG9hZD1udWxsLGNsZWFyVGltZW91dCh1KTt2YXIg
cj1vW2VdOzAhPT1yJiYociYmclsxXShuZXcgRXJyb3IoIkxvYWRpbmcgY2h1bmsgIitlKyIgZmFp
bGVkLiIpKSxvW2VdPXZvaWQgMCl9aWYoMD09PW9bZV0pcmV0dXJuIFByb21pc2UucmVzb2x2ZSgp
O2lmKG9bZV0pcmV0dXJuIG9bZV1bMl07dmFyIHQ9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoImhlYWQiKVswXSxhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO2EudHlwZT0i
dGV4dC9qYXZhc2NyaXB0IixhLmNoYXJzZXQ9InV0Zi04IixhLmFzeW5jPSEwLGEudGltZW91dD0x
MmU0LGEuc3JjPXIucCsiYnVuZGxlLiIrZSsiLiIrezA6IjQyMWViNmJhY2EwMjIxOGU5ODVlIiwx
OiJkYTFhMmQ2NDEwNmVjNTRkNGY1NyJ9W2VdKyIuanMiO3ZhciB1PXNldFRpbWVvdXQobiwxMmU0
KTthLm9uZXJyb3I9YS5vbmxvYWQ9bix0LmFwcGVuZENoaWxkKGEpO3ZhciBjPW5ldyBQcm9taXNl
KGZ1bmN0aW9uKHIsbil7b1tlXT1bcixuXX0pO3JldHVybiBvW2VdWzJdPWN9LHIubT1lLHIuYz10
LHIuaT1mdW5jdGlvbihlKXtyZXR1cm4gZX0sci5kPWZ1bmN0aW9uKGUscixuKXtPYmplY3QuZGVm
aW5lUHJvcGVydHkoZSxyLHtjb25maWd1cmFibGU6ITEsZW51bWVyYWJsZTohMCxnZXQ6bn0pfSxy
Lm49ZnVuY3Rpb24oZSl7dmFyIG49ZSYmZS5fX2VzTW9kdWxlP2Z1bmN0aW9uKCl7cmV0dXJuIGVb
ImRlZmF1bHQiXX06ZnVuY3Rpb24oKXtyZXR1cm4gZX07cmV0dXJuIHIuZChuLCJhIixuKSxufSxy
Lm89ZnVuY3Rpb24oZSxyKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5j
YWxsKGUscil9LHIucD0iIixyLm9lPWZ1bmN0aW9uKGUpe3Rocm93IGNvbnNvbGUuZXJyb3IoZSks
ZX19KFtdKTsKKzwvc2NyaXB0PgorICA8bGluayBocmVmPSJzdHlsZXMudmVuZG9yLmRhMWEyZDY0
MTA2ZWM1NGQ0ZjU3LmNzcyIgcmVsPSJzdHlsZXNoZWV0Ij48bGluayBocmVmPSJzdHlsZXMuYXBw
LjQyMWViNmJhY2EwMjIxOGU5ODVlLmNzcyIgcmVsPSJzdHlsZXNoZWV0Ij48c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCIgc3JjPSJidW5kbGUudmVuZG9yLmRhMWEyZDY0MTA2ZWM1NGQ0ZjU3
LmpzIj48L3NjcmlwdD48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJidW5kbGUu
YXBwLjQyMWViNmJhY2EwMjIxOGU5ODVlLmpzIj48L3NjcmlwdD48L2hlYWQ+CisgIDxib2R5Pgor
ICAgIDxzZWN0aW9uIGNsYXNzPSJ0b2RvYXBwIj4KKyAgICAgIDxoZWFkZXIgY2xhc3M9ImhlYWRl
ciI+CisgICAgICAgIDxoMT50b2RvczwvaDE+CisgICAgICAgIDxpbnB1dCBjbGFzcz0ibmV3LXRv
ZG8iIHBsYWNlaG9sZGVyPSJXaGF0IG5lZWRzIHRvIGJlIGRvbmU/IiBhdXRvZm9jdXM+CisgICAg
ICA8L2hlYWRlcj4KKyAgICAgIDxzZWN0aW9uIGNsYXNzPSJtYWluIj4KKyAgICAgICAgPGlucHV0
IGNsYXNzPSJ0b2dnbGUtYWxsIiB0eXBlPSJjaGVja2JveCI+CisgICAgICAgIDxsYWJlbCBmb3I9
InRvZ2dsZS1hbGwiPk1hcmsgYWxsIGFzIGNvbXBsZXRlPC9sYWJlbD4KKyAgICAgICAgPHVsIGNs
YXNzPSJ0b2RvLWxpc3QiPjwvdWw+CisgICAgICA8L3NlY3Rpb24+CisgICAgICA8Zm9vdGVyIGNs
YXNzPSJmb290ZXIiPgorICAgICAgICA8c3BhbiBjbGFzcz0idG9kby1jb3VudCI+PC9zcGFuPgor
ICAgICAgICA8dWwgY2xhc3M9ImZpbHRlcnMiPgorICAgICAgICAgIDxsaT4KKyAgICAgICAgICAg
IDxhIGhyZWY9IiMvIiBjbGFzcz0ic2VsZWN0ZWQiPkFsbDwvYT4KKyAgICAgICAgICA8L2xpPgor
ICAgICAgICAgIDxsaT4KKyAgICAgICAgICAgIDxhIGhyZWY9IiMvYWN0aXZlIj5BY3RpdmU8L2E+
CisgICAgICAgICAgPC9saT4KKyAgICAgICAgICA8bGk+CisgICAgICAgICAgICA8YSBocmVmPSIj
L2NvbXBsZXRlZCI+Q29tcGxldGVkPC9hPgorICAgICAgICAgIDwvbGk+CisgICAgICAgIDwvdWw+
CisgICAgICAgIDxidXR0b24gY2xhc3M9ImNsZWFyLWNvbXBsZXRlZCI+Q2xlYXIgY29tcGxldGVk
PC9idXR0b24+CisgICAgICA8L2Zvb3Rlcj4KKyAgICA8L3NlY3Rpb24+CisgICAgPGZvb3RlciBj
bGFzcz0iaW5mbyI+CisgICAgICA8cD5Eb3VibGUtY2xpY2sgdG8gZWRpdCBhIHRvZG88L3A+Cisg
ICAgICA8cD5TcGVlZG9tZXRlciB2ZXJzaW9uIGJ5IDxhIGhyZWY9Imh0dHA6Ly90d2l0dGVyLmNv
bS9hZGR5b3NtYW5pIj5BZGR5IE9zbWFuaTwvYT48L3A+CisgICAgICA8cD5DcmVhdGVkIGJ5IDxh
IGhyZWY9Imh0dHA6Ly90d2l0dGVyLmNvbS9vc2NhcmdvZHNvbiI+T3NjYXIgR29kc29uPC9hPjwv
cD4KKyAgICAgIDxwPlJlZmFjdG9yZWQgYnkgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2Ni
dXJnbWVyIj5DaHJpc3RvcGggQnVyZ21lcjwvYT48L3A+CisgICAgICA8cD5Qb3J0ZWQgdG8gRVM2
IGJ5IDxhIGhyZWY9Imh0dHBzOi8vdHdpdHRlci5jb20va2VudGNkb2RkcyI+S2VudCBDLiBEb2Rk
czwvYT48L3A+CisgICAgICA8cD5QYXJ0IG9mIDxhIGhyZWY9Imh0dHA6Ly90b2RvbXZjLmNvbSI+
VG9kb01WQzwvYT48L3A+CisgICAgPC9mb290ZXI+CisgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFu
aWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0L3N0eWxlcy5hcHAuNDIxZWI2
YmFjYTAyMjE4ZTk4NWUuY3NzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3Qvc3R5
bGVzLmFwcC40MjFlYjZiYWNhMDIyMThlOTg1ZS5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGE2ZjA0MzY0YmJi
NzAyZWQ5MzJmMzJhNWYyZGQ3MGEyZGI4MWZlNQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9l
czIwMTUtYmFiZWwtd2VicGFjay9kaXN0L3N0eWxlcy5hcHAuNDIxZWI2YmFjYTAyMjE4ZTk4NWUu
Y3NzCkBAIC0wLDAgKzEsMiBAQAorLnRvZ2dsZS1ncmFwaHtmbG9hdDpsZWZ0O21hcmdpbi1sZWZ0
OjE2cHg7Y3Vyc29yOnBvaW50ZXI7cG9zaXRpb246cmVsYXRpdmU7ei1pbmRleDoxfS50b2dnbGUt
Z3JhcGggc3Zne2hlaWdodDoyMHB4O3dpZHRoOjIwcHh9LnRvZ2dsZS1ncmFwaCBzdmcgcGF0aHtm
aWxsOiM3Nzd9LnRvZ2dsZS1ncmFwaC5hY3RpdmUgc3ZnIHBhdGgsLnRvZ2dsZS1ncmFwaDpmb2N1
cyBzdmcgcGF0aCwudG9nZ2xlLWdyYXBoOmhvdmVyIHN2ZyBwYXRoe2ZpbGw6IzAwMH0KKy8qIyBz
b3VyY2VNYXBwaW5nVVJMPXN0eWxlcy5hcHAuNDIxZWI2YmFjYTAyMjE4ZTk4NWUuY3NzLm1hcCov
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1i
YWJlbC13ZWJwYWNrL2Rpc3Qvc3R5bGVzLmFwcC40MjFlYjZiYWNhMDIyMThlOTg1ZS5jc3MubWFw
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxh
LWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3Qvc3R5bGVzLmFwcC40MjFlYjZiYWNh
MDIyMThlOTg1ZS5jc3MubWFwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzOTI4YjVlNTU2YjE3ZTMzZjU1ZWNiNjQw
NzU0NjBmOTc1ZjNjZjEKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdl
YnBhY2svZGlzdC9zdHlsZXMuYXBwLjQyMWViNmJhY2EwMjIxOGU5ODVlLmNzcy5tYXAKQEAgLTAs
MCArMSBAQAoreyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6
IiIsImZpbGUiOiJzdHlsZXMuYXBwLjQyMWViNmJhY2EwMjIxOGU5ODVlLmNzcyIsInNvdXJjZVJv
b3QiOiIifQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9l
czIwMTUtYmFiZWwtd2VicGFjay9kaXN0L3N0eWxlcy52ZW5kb3IuZGExYTJkNjQxMDZlYzU0ZDRm
NTcuY3NzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92
YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3Qvc3R5bGVzLnZlbmRvci5k
YTFhMmQ2NDEwNmVjNTRkNGY1Ny5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDg3YjE0YWQxNDU0NTNlNmQ0OGYx
ZjNkMDk1MjRhM2Y5ODQ4NmQ1MAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFi
ZWwtd2VicGFjay9kaXN0L3N0eWxlcy52ZW5kb3IuZGExYTJkNjQxMDZlYzU0ZDRmNTcuY3NzCkBA
IC0wLDAgKzEsMiBAQAorYm9keSxidXR0b24saHRtbHttYXJnaW46MDtwYWRkaW5nOjB9YnV0dG9u
e2JvcmRlcjowO2JhY2tncm91bmQ6bm9uZTtmb250LXNpemU6MTAwJTt2ZXJ0aWNhbC1hbGlnbjpi
YXNlbGluZTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtd2VpZ2h0OmluaGVyaXQ7Y29sb3I6aW5o
ZXJpdDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTthcHBlYXJhbmNlOm5vbmU7LXdlYmtpdC1mb250
LXNtb290aGluZzphbnRpYWxpYXNlZH1ib2R5LGJ1dHRvbnstbW96LW9zeC1mb250LXNtb290aGlu
ZzpncmF5c2NhbGV9Ym9keXtmb250OjE0cHggSGVsdmV0aWNhIE5ldWUsSGVsdmV0aWNhLEFyaWFs
LHNhbnMtc2VyaWY7bGluZS1oZWlnaHQ6MS40ZW07YmFja2dyb3VuZDojZjVmNWY1O2NvbG9yOiM0
ZDRkNGQ7bWluLXdpZHRoOjIzMHB4O21heC13aWR0aDo1NTBweDttYXJnaW46MCBhdXRvOy13ZWJr
aXQtZm9udC1zbW9vdGhpbmc6YW50aWFsaWFzZWQ7Zm9udC13ZWlnaHQ6MzAwfTpmb2N1c3tvdXRs
aW5lOjB9LmhpZGRlbntkaXNwbGF5Om5vbmV9LnRvZG9hcHB7YmFja2dyb3VuZDojZmZmO21hcmdp
bjoxMzBweCAwIDQwcHg7cG9zaXRpb246cmVsYXRpdmU7Ym94LXNoYWRvdzowIDJweCA0cHggMCBy
Z2JhKDAsMCwwLC4yKSwwIDI1cHggNTBweCAwIHJnYmEoMCwwLDAsLjEpfS50b2RvYXBwIGlucHV0
Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVye2ZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtd2VpZ2h0
OjMwMDtjb2xvcjojZTZlNmU2fS50b2RvYXBwIGlucHV0OjotbW96LXBsYWNlaG9sZGVye2ZvbnQt
c3R5bGU6aXRhbGljO2ZvbnQtd2VpZ2h0OjMwMDtjb2xvcjojZTZlNmU2fS50b2RvYXBwIGlucHV0
OjppbnB1dC1wbGFjZWhvbGRlcntmb250LXN0eWxlOml0YWxpYztmb250LXdlaWdodDozMDA7Y29s
b3I6I2U2ZTZlNn0udG9kb2FwcCBoMXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6LTE1NXB4O3dpZHRo
OjEwMCU7Zm9udC1zaXplOjEwMHB4O2ZvbnQtd2VpZ2h0OjEwMDt0ZXh0LWFsaWduOmNlbnRlcjtj
b2xvcjpyZ2JhKDE3NSw0Nyw0NywuMTUpOy13ZWJraXQtdGV4dC1yZW5kZXJpbmc6b3B0aW1pemVM
ZWdpYmlsaXR5Oy1tb3otdGV4dC1yZW5kZXJpbmc6b3B0aW1pemVMZWdpYmlsaXR5O3RleHQtcmVu
ZGVyaW5nOm9wdGltaXplTGVnaWJpbGl0eX0uZWRpdCwubmV3LXRvZG97cG9zaXRpb246cmVsYXRp
dmU7bWFyZ2luOjA7d2lkdGg6MTAwJTtmb250LXNpemU6MjRweDtmb250LWZhbWlseTppbmhlcml0
O2ZvbnQtd2VpZ2h0OmluaGVyaXQ7bGluZS1oZWlnaHQ6MS40ZW07Ym9yZGVyOjA7Y29sb3I6aW5o
ZXJpdDtwYWRkaW5nOjZweDtib3JkZXI6MXB4IHNvbGlkICM5OTk7Ym94LXNoYWRvdzppbnNldCAw
IC0xcHggNXB4IDAgcmdiYSgwLDAsMCwuMik7Ym94LXNpemluZzpib3JkZXItYm94Oy13ZWJraXQt
Zm9udC1zbW9vdGhpbmc6YW50aWFsaWFzZWQ7LW1vei1vc3gtZm9udC1zbW9vdGhpbmc6Z3JheXNj
YWxlfS5uZXctdG9kb3twYWRkaW5nOjE2cHggMTZweCAxNnB4IDYwcHg7Ym9yZGVyOm5vbmU7YmFj
a2dyb3VuZDpyZ2JhKDAsMCwwLC4wMDMpO2JveC1zaGFkb3c6aW5zZXQgMCAtMnB4IDFweCByZ2Jh
KDAsMCwwLC4wMyl9Lm1haW57cG9zaXRpb246cmVsYXRpdmU7ei1pbmRleDoyO2JvcmRlci10b3A6
MXB4IHNvbGlkICNlNmU2ZTZ9bGFiZWxbZm9yPXRvZ2dsZS1hbGxde2Rpc3BsYXk6bm9uZX0udG9n
Z2xlLWFsbHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6LTU1cHg7bGVmdDotMTJweDt3aWR0aDo2MHB4
O2hlaWdodDozNHB4O3RleHQtYWxpZ246Y2VudGVyO2JvcmRlcjpub25lfS50b2dnbGUtYWxsOmJl
Zm9yZXtjb250ZW50OidcMjc2Ric7Zm9udC1zaXplOjIycHg7Y29sb3I6I2U2ZTZlNjtwYWRkaW5n
OjEwcHggMjdweH0udG9nZ2xlLWFsbDpjaGVja2VkOmJlZm9yZXtjb2xvcjojNzM3MzczfS50b2Rv
LWxpc3R7bWFyZ2luOjA7cGFkZGluZzowO2xpc3Qtc3R5bGU6bm9uZX0udG9kby1saXN0IGxpe3Bv
c2l0aW9uOnJlbGF0aXZlO2ZvbnQtc2l6ZToyNHB4O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNl
ZGVkZWR9LnRvZG8tbGlzdCBsaTpsYXN0LWNoaWxke2JvcmRlci1ib3R0b206bm9uZX0udG9kby1s
aXN0IGxpLmVkaXRpbmd7Ym9yZGVyLWJvdHRvbTpub25lO3BhZGRpbmc6MH0udG9kby1saXN0IGxp
LmVkaXRpbmcgLmVkaXR7ZGlzcGxheTpibG9jazt3aWR0aDo1MDZweDtwYWRkaW5nOjEycHggMTZw
eDttYXJnaW46MCAwIDAgNDNweH0udG9kby1saXN0IGxpLmVkaXRpbmcgLnZpZXd7ZGlzcGxheTpu
b25lfS50b2RvLWxpc3QgbGkgLnRvZ2dsZXt0ZXh0LWFsaWduOmNlbnRlcjt3aWR0aDo0MHB4O2hl
aWdodDphdXRvO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO21hcmdpbjphdXRvIDA7
Ym9yZGVyOm5vbmU7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7YXBwZWFyYW5jZTpub25lfS50b2Rv
LWxpc3QgbGkgLnRvZ2dsZTphZnRlcntjb250ZW50OnVybCgnZGF0YTppbWFnZS9zdmcreG1sO3V0
ZjgsPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0MCIgaGVp
Z2h0PSI0MCIgdmlld0JveD0iLTEwIC0xOCAxMDAgMTM1Ij48Y2lyY2xlIGN4PSI1MCIgY3k9IjUw
IiByPSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZWRlZGVkIiBzdHJva2Utd2lkdGg9IjMiLz48
L3N2Zz4nKX0udG9kby1saXN0IGxpIC50b2dnbGU6Y2hlY2tlZDphZnRlcntjb250ZW50OnVybCgn
ZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgdmlld0JveD0iLTEwIC0xOCAxMDAgMTM1Ij48
Y2lyY2xlIGN4PSI1MCIgY3k9IjUwIiByPSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYmRkYWQ1
IiBzdHJva2Utd2lkdGg9IjMiLz48cGF0aCBmaWxsPSIjNWRjMmFmIiBkPSJNNzIgMjVMNDIgNzEg
MjcgNTZsLTQgNCAyMCAyMCAzNC01MnoiLz48L3N2Zz4nKX0udG9kby1saXN0IGxpIGxhYmVse3dv
cmQtYnJlYWs6YnJlYWstYWxsO3BhZGRpbmc6MTVweCA2MHB4IDE1cHggMTVweDttYXJnaW4tbGVm
dDo0NXB4O2Rpc3BsYXk6YmxvY2s7bGluZS1oZWlnaHQ6MS4yO3RyYW5zaXRpb246Y29sb3IgLjRz
fS50b2RvLWxpc3QgbGkuY29tcGxldGVkIGxhYmVse2NvbG9yOiNkOWQ5ZDk7dGV4dC1kZWNvcmF0
aW9uOmxpbmUtdGhyb3VnaH0udG9kby1saXN0IGxpIC5kZXN0cm95e2Rpc3BsYXk6bm9uZTtwb3Np
dGlvbjphYnNvbHV0ZTt0b3A6MDtyaWdodDoxMHB4O2JvdHRvbTowO3dpZHRoOjQwcHg7aGVpZ2h0
OjQwcHg7bWFyZ2luOmF1dG8gMDtmb250LXNpemU6MzBweDtjb2xvcjojY2M5YTlhO21hcmdpbi1i
b3R0b206MTFweDt0cmFuc2l0aW9uOmNvbG9yIC4ycyBlYXNlLW91dH0udG9kby1saXN0IGxpIC5k
ZXN0cm95OmhvdmVye2NvbG9yOiNhZjViNWV9LnRvZG8tbGlzdCBsaSAuZGVzdHJveTphZnRlcntj
b250ZW50OidcRDcnfS50b2RvLWxpc3QgbGk6aG92ZXIgLmRlc3Ryb3l7ZGlzcGxheTpibG9ja30u
dG9kby1saXN0IGxpIC5lZGl0e2Rpc3BsYXk6bm9uZX0udG9kby1saXN0IGxpLmVkaXRpbmc6bGFz
dC1jaGlsZHttYXJnaW4tYm90dG9tOi0xcHh9LmZvb3Rlcntjb2xvcjojNzc3O3BhZGRpbmc6MTBw
eCAxNXB4O2hlaWdodDoyMHB4O3RleHQtYWxpZ246Y2VudGVyO2JvcmRlci10b3A6MXB4IHNvbGlk
ICNlNmU2ZTZ9LmZvb3RlcjpiZWZvcmV7Y29udGVudDonJztwb3NpdGlvbjphYnNvbHV0ZTtyaWdo
dDowO2JvdHRvbTowO2xlZnQ6MDtoZWlnaHQ6NTBweDtvdmVyZmxvdzpoaWRkZW47Ym94LXNoYWRv
dzowIDFweCAxcHggcmdiYSgwLDAsMCwuMiksMCA4cHggMCAtM3B4ICNmNmY2ZjYsMCA5cHggMXB4
IC0zcHggcmdiYSgwLDAsMCwuMiksMCAxNnB4IDAgLTZweCAjZjZmNmY2LDAgMTdweCAycHggLTZw
eCByZ2JhKDAsMCwwLC4yKX0udG9kby1jb3VudHtmbG9hdDpsZWZ0O3RleHQtYWxpZ246bGVmdH0u
dG9kby1jb3VudCBzdHJvbmd7Zm9udC13ZWlnaHQ6MzAwfS5maWx0ZXJze21hcmdpbjowO3BhZGRp
bmc6MDtsaXN0LXN0eWxlOm5vbmU7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MDtsZWZ0OjB9LmZp
bHRlcnMgbGl7ZGlzcGxheTppbmxpbmV9LmZpbHRlcnMgbGkgYXtjb2xvcjppbmhlcml0O21hcmdp
bjozcHg7cGFkZGluZzozcHggN3B4O3RleHQtZGVjb3JhdGlvbjpub25lO2JvcmRlcjoxcHggc29s
aWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJhZGl1czozcHh9LmZpbHRlcnMgbGkgYTpob3Zlcntib3Jk
ZXItY29sb3I6cmdiYSgxNzUsNDcsNDcsLjEpfS5maWx0ZXJzIGxpIGEuc2VsZWN0ZWR7Ym9yZGVy
LWNvbG9yOnJnYmEoMTc1LDQ3LDQ3LC4yKX0uY2xlYXItY29tcGxldGVkLGh0bWwgLmNsZWFyLWNv
bXBsZXRlZDphY3RpdmV7ZmxvYXQ6cmlnaHQ7cG9zaXRpb246cmVsYXRpdmU7bGluZS1oZWlnaHQ6
MjBweDt0ZXh0LWRlY29yYXRpb246bm9uZTtjdXJzb3I6cG9pbnRlcn0uY2xlYXItY29tcGxldGVk
OmhvdmVye3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9LmluZm97bWFyZ2luOjY1cHggYXV0byAw
O2NvbG9yOiNiZmJmYmY7Zm9udC1zaXplOjEwcHg7dGV4dC1zaGFkb3c6MCAxcHggMCBoc2xhKDAs
MCUsMTAwJSwuNSk7dGV4dC1hbGlnbjpjZW50ZXJ9LmluZm8gcHtsaW5lLWhlaWdodDoxfS5pbmZv
IGF7Y29sb3I6aW5oZXJpdDt0ZXh0LWRlY29yYXRpb246bm9uZTtmb250LXdlaWdodDo0MDB9Lmlu
Zm8gYTpob3Zlcnt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfUBtZWRpYSBzY3JlZW4gYW5kICgt
d2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86MCl7LnRvZG8tbGlzdCBsaSAudG9nZ2xlLC50
b2dnbGUtYWxse2JhY2tncm91bmQ6bm9uZX0udG9kby1saXN0IGxpIC50b2dnbGV7aGVpZ2h0OjQw
cHh9LnRvZ2dsZS1hbGx7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDkwZGVnKTt0cmFuc2Zvcm06
cm90YXRlKDkwZGVnKTstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTthcHBlYXJhbmNlOm5vbmV9fUBt
ZWRpYSAobWF4LXdpZHRoOjQzMHB4KXsuZm9vdGVye2hlaWdodDo1MHB4fS5maWx0ZXJze2JvdHRv
bToxMHB4fX0KKy8qIyBzb3VyY2VNYXBwaW5nVVJMPXN0eWxlcy52ZW5kb3IuZGExYTJkNjQxMDZl
YzU0ZDRmNTcuY3NzLm1hcCovClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxh
LWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3Qvc3R5bGVzLnZlbmRvci5kYTFhMmQ2
NDEwNmVjNTRkNGY1Ny5jc3MubWFwIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3Qv
c3R5bGVzLnZlbmRvci5kYTFhMmQ2NDEwNmVjNTRkNGY1Ny5jc3MubWFwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE1
Nzg2YWIzZjIyZGY5ZWE1ZTk0ODI5ZTlmMjUyYzJmZDZkM2Q4NTkKLS0tIC9kZXYvbnVsbAorKysg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEt
ZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svZGlzdC9zdHlsZXMudmVuZG9yLmRhMWEyZDY0
MTA2ZWM1NGQ0ZjU3LmNzcy5tYXAKQEAgLTAsMCArMSBAQAoreyJ2ZXJzaW9uIjozLCJzb3VyY2Vz
IjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzdHlsZXMudmVuZG9yLmRhMWEy
ZDY0MTA2ZWM1NGQ0ZjU3LmNzcyIsInNvdXJjZVJvb3QiOiIifQpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9mYXZpY29u
LmljbyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFu
aWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9mYXZpY29uLmljbwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45NmQzZWI2NzIwZWYyMmQyYTRlNjc0ODMxOTJkYmZlMTMzMGI3ODVhCkdJVCBiaW5hcnkgcGF0
Y2gKbGl0ZXJhbCAxMTUwCnpjbWNoWHV9VDkkNVFheDBYKUZ1YE1YPDVkUkpQIytaRn5iT3BUSnJX
Z3RTNlh1KEM/KTE0eFIxSGdaWnB1KEduVQp6KEtrNC01YF4+bmxidkhkIWZHS1ZlM3t2UXsrWmli
P3FXOF94NzlMISpYJl40WX13NCMwU1JUUTZLc2NDZHRyKiEKemZBel8tPj5ONSFMWlBgS0ZRZVNg
VFdiNjl3T1BOJT5yez8rN3Y1NEgpJGttYC1jUD5abyRTck1eY3tpajxwcjlxCnpkcWtgSXQySCg2
UmxuJGFwVH5OQ3EjdVZLXzElVTFnVj1HO3RWckZAX0x9PyZ3Jld1WUsobjQ8KFI8ME97UldAKwp6
U0R2NlpAamlmTmpHeih3ZU9AWmt2am49bld9TUNQcUpQXkAtOXZvXmU4I1dPR29DfWdfQXYoU0x2
aHBWPE85IUIKejVubHVQcGMje0FUbUdPdzY4IypERDNgYT1nVElTNVBGP0gyWTkpN1phJCVQOTI3
WiM/XnZzNjZCN2ZhQnlJZUs5ClY7e1QlTHNtTTk/ezJxQW9QQitsLWlaN05CaWskIWUKCmxpdGVy
YWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFj
ay9rYXJtYS5jb25mLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2thcm1hLmNvbmYu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZjk2MjM0MDE0NTFlMWYyZTU2NGRkNDE3NmFhM2Y2YTY0NzUwZDdhYwot
LS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9rYXJtYS5jb25m
LmpzCkBAIC0wLDAgKzEsNDQgQEAKK3Byb2Nlc3MuZW52LkJBQkVMX0VOViA9ICd0ZXN0JworY29u
c3Qgd2VicGFja0VudiA9IHt0ZXN0OiB0cnVlfQorY29uc3Qgd2VicGFja0NvbmZpZyA9IHJlcXVp
cmUoJy4vd2VicGFjay5jb25maWcuYmFiZWwnKSh3ZWJwYWNrRW52KQorCitjb25zdCB0ZXN0R2xv
YiA9ICdzcmMvKiovKi50ZXN0LmpzJworY29uc3Qgc3JjR2xvYiA9ICdzcmMvKiovISgqLnRlc3R8
Ki5zdHViKS5qcycKKworbW9kdWxlLmV4cG9ydHMgPSBjb25maWcgPT4geworICBjb25maWcuc2V0
KHsKKyAgICBiYXNlUGF0aDogJycsCisgICAgZnJhbWV3b3JrczogWydtb2NoYScsICdjaGFpJ10s
CisgICAgZmlsZXM6IFt0ZXN0R2xvYiwgc3JjR2xvYl0sCisgICAgZXhjbHVkZTogWydzcmMvYm9v
dHN0cmFwLmpzJ10sCisgICAgcHJlcHJvY2Vzc29yczogeworICAgICAgW3Rlc3RHbG9iXTogWyd3
ZWJwYWNrJ10sCisgICAgICBbc3JjR2xvYl06IFsnd2VicGFjayddLAorICAgIH0sCisgICAgd2Vi
cGFjazogd2VicGFja0NvbmZpZywKKyAgICB3ZWJwYWNrTWlkZGxld2FyZToge25vSW5mbzogdHJ1
ZX0sCisgICAgcmVwb3J0ZXJzOiBbJ3Byb2dyZXNzJywgJ2NvdmVyYWdlJ10sCisgICAgY292ZXJh
Z2VSZXBvcnRlcjogeworICAgICAgY2hlY2s6IHsKKyAgICAgICAgZ2xvYmFsOiB7CisgICAgICAg
ICAgc3RhdGVtZW50czogMTEsCisgICAgICAgICAgYnJhbmNoZXM6IDAsCisgICAgICAgICAgZnVu
Y3Rpb25zOiAwLAorICAgICAgICAgIGxpbmVzOiAxMSwKKyAgICAgICAgfSwKKyAgICAgIH0sCisg
ICAgICByZXBvcnRlcnM6IFsKKyAgICAgICAge3R5cGU6ICdsY292JywgZGlyOiAnY292ZXJhZ2Uv
Jywgc3ViZGlyOiAnLid9LAorICAgICAgICB7dHlwZTogJ2pzb24nLCBkaXI6ICdjb3ZlcmFnZS8n
LCBzdWJkaXI6ICcuJ30sCisgICAgICAgIHt0eXBlOiAndGV4dC1zdW1tYXJ5J30sCisgICAgICBd
LAorICAgIH0sCisgICAgcG9ydDogOTg3NiwKKyAgICBjb2xvcnM6IHRydWUsCisgICAgbG9nTGV2
ZWw6IGNvbmZpZy5MT0dfSU5GTywKKyAgICBhdXRvV2F0Y2g6IGZhbHNlLAorICAgIGJyb3dzZXJz
OiBbJ0Nocm9tZSddLAorICAgIHNpbmdsZVJ1bjogdHJ1ZSwKKyAgICBjb25jdXJyZW5jeTogSW5m
aW5pdHksCisgIH0pCit9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2sv
cGFja2FnZS5qc29uIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL3BhY2thZ2UuanNvbgpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44NmY3YmJiOTc1ZTU4MGNhMWYyMzU1ZDQwMzE4MzdlZWIzZmIyNmExCi0tLSAv
ZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL3BhY2thZ2UuanNvbgpA
QCAtMCwwICsxLDc1IEBACit7CisgICJwcml2YXRlIjogdHJ1ZSwKKyAgImRlcGVuZGVuY2llcyI6
IHsKKyAgICAiZDMiOiAiMy41LjE3IiwKKyAgICAibG9kYXNoIjogIjQuMTQuMSIsCisgICAgInJk
MyI6ICIwLjcuMCIsCisgICAgInJlYWN0IjogIjE1LjMuMCIsCisgICAgInJlYWN0LWRvbSI6ICIx
NS4zLjAiLAorICAgICJ0b2RvbXZjLWFwcC1jc3MiOiAiMi4wLjYiCisgIH0sCisgICJkZXZEZXBl
bmRlbmNpZXMiOiB7CisgICAgImJhYmVsLWNvcmUiOiAiNi4xMy4yIiwKKyAgICAiYmFiZWwtbG9h
ZGVyIjogIjYuMi40IiwKKyAgICAiYmFiZWwtcGx1Z2luLV9fY292ZXJhZ2VfXyI6ICIxMS4wLjAi
LAorICAgICJiYWJlbC1wcmVzZXQtZXMyMDE1IjogIjYuMTMuMiIsCisgICAgImJhYmVsLXByZXNl
dC1lczIwMTYiOiAiNi4xMS4zIiwKKyAgICAiYmFiZWwtcHJlc2V0LXJlYWN0IjogIjYuMTEuMSIs
CisgICAgImJhYmVsLXByZXNldC1zdGFnZS0yIjogIjYuMTMuMCIsCisgICAgImNoYWkiOiAiMy41
LjAiLAorICAgICJjcHktY2xpIjogIjEuMC4xIiwKKyAgICAiY3NzLWxvYWRlciI6ICIwLjIzLjEi
LAorICAgICJlc2xpbnQiOiAiMy4yLjIiLAorICAgICJlc2xpbnQtY29uZmlnLWtlbnRjZG9kZHMi
OiAiXjkuMC4wIiwKKyAgICAiZXh0cmFjdC10ZXh0LXdlYnBhY2stcGx1Z2luIjogIjIuMC4wLWJl
dGEuMyIsCisgICAgImdob29rcyI6ICIxLjMuMiIsCisgICAgImh0bWwtd2VicGFjay1wbHVnaW4i
OiAiMi4yMi4wIiwKKyAgICAiaHR0cC1zZXJ2ZXIiOiAiMC45LjAiLAorICAgICJpbmxpbmUtbWFu
aWZlc3Qtd2VicGFjay1wbHVnaW4iOiAiMy4wLjEiLAorICAgICJrYXJtYSI6ICIxLjEuMiIsCisg
ICAgImthcm1hLWNoYWkiOiAiMC4xLjAiLAorICAgICJrYXJtYS1jaHJvbWUtbGF1bmNoZXIiOiAi
MS4wLjEiLAorICAgICJrYXJtYS1jb3ZlcmFnZSI6ICIxLjEuMSIsCisgICAgImthcm1hLW1vY2hh
IjogIjEuMS4xIiwKKyAgICAia2FybWEtd2VicGFjayI6ICIxLjcuMCIsCisgICAgIm1vY2hhIjog
IjMuMC4xIiwKKyAgICAibnBtLXJ1bi1hbGwiOiAiMi4zLjAiLAorICAgICJvcHQtY2xpIjogIjEu
NS4xIiwKKyAgICAicHJvZ3Jlc3MtYmFyLXdlYnBhY2stcGx1Z2luIjogIjEuOS4wIiwKKyAgICAi
cmltcmFmIjogIjIuNS40IiwKKyAgICAic3R5bGUtbG9hZGVyIjogIjAuMTMuMSIsCisgICAgInN1
cmdlIjogIjAuMTguMCIsCisgICAgIndlYnBhY2siOiAiMi4xLjAtYmV0YS4yMCIsCisgICAgIndl
YnBhY2stY29uZmlnLXV0aWxzIjogIjIuMC4wIiwKKyAgICAid2VicGFjay1kZXYtc2VydmVyIjog
IjIuMS4wLWJldGEuMCIsCisgICAgIndlYnBhY2stdmFsaWRhdG9yIjogIjIuMi43IgorICB9LAor
ICAiY29uZmlnIjogeworICAgICJnaG9va3MiOiB7CisgICAgICAicHJlLWNvbW1pdCI6ICJvcHQg
LS1pbiBwcmUtY29tbWl0IC0tZXhlYyBcIm5wbSBydW4gdmFsaWRhdGVcIiIKKyAgICB9CisgIH0s
CisgICJzY3JpcHRzIjogeworICAgICJwcmVkZXBsb3kiOiAibnBtIHJ1biBidWlsZCIsCisgICAg
ImRlcGxveSI6ICIuL3NjcmlwdHMvZGVwbG95IiwKKyAgICAicHJlYnVpbGQiOiAicmltcmFmIGRp
c3QiLAorICAgICJidWlsZCI6ICJ3ZWJwYWNrIC0tZW52LnByb2QgLXAiLAorICAgICJwb3N0YnVp
bGQiOiAiY3B5IGZhdmljb24uaWNvIGRpc3QiLAorICAgICJwcmVidWlsZDpkZXYiOiAicmltcmFm
IGRpc3QiLAorICAgICJidWlsZDpkZXYiOiAid2VicGFjayAtLWVudi5kZXYiLAorICAgICJwb3N0
YnVpbGQ6ZGV2IjogImNweSBmYXZpY29uLmljbyBkaXN0IiwKKyAgICAic3RhcnQiOiAiaHR0cC1z
ZXJ2ZXIgZGlzdCIsCisgICAgImRldiI6ICJ3ZWJwYWNrLWRldi1zZXJ2ZXIgLS1lbnYuZGV2IC0t
aG90IiwKKyAgICAiZGVidWciOiAibm9kZS1uaWdodGx5IC0taW5zcGVjdCAtLWRlYnVnLWJyayBu
b2RlX21vZHVsZXMvLmJpbi93ZWJwYWNrIC0tZW52LmRlYnVnIiwKKyAgICAiZGVidWc6ZGV2Ijog
Im5wbSBydW4gZGVidWcgLS0gLS1lbnYuZGV2IiwKKyAgICAiZGVidWc6cHJvZCI6ICJucG0gcnVu
IGRlYnVnIC0tIC0tZW52LnByb2QiLAorICAgICJ0ZXN0IjogImthcm1hIHN0YXJ0IiwKKyAgICAi
d2F0Y2g6dGVzdCI6ICJucG0gdGVzdCAtLSAtLWF1dG8td2F0Y2ggLS1uby1zaW5nbGUtcnVuIiwK
KyAgICAidmFsaWRhdGUiOiAibnBtLXJ1bi1hbGwgLS1wYXJhbGxlbCBsaW50IGJ1aWxkIHRlc3Qi
LAorICAgICJsaW50IjogImVzbGludCAuIiwKKyAgICAic2V0dXAiOiAibnBtIGluc3RhbGwgJiYg
bnBtIHJ1biB2YWxpZGF0ZSIsCisgICAgInNldHVwOmZlbSI6ICJnaXQgY2hlY2tvdXQgRkVNLzA3
LjEtZGVwbG95LXN1cmdlICYmIG5wbSBpbnN0YWxsICYmIG5wbSBydW4gdmFsaWRhdGUgJiYgcmlt
cmFmIGRpc3QgY292ZXJhZ2UgJiYgZ2l0IGNoZWNrb3V0IEZFTS8wMC1vcmlnaW5hbC1wcm9qZWN0
IiwKKyAgICAic2V0dXA6d29ya3Nob3AiOiAiZ2l0IGNoZWNrb3V0IHdvcmtzaG9wLzA3LWNvdmVy
YWdlICYmIG5wbSBpbnN0YWxsICYmIG5wbSBydW4gdmFsaWRhdGUgJiYgcmltcmFmIGRpc3QgY292
ZXJhZ2UgJiYgZ2l0IGNoZWNrb3V0IHdvcmtzaG9wLzAwLW9yaWdpbmFsLXByb2plY3QiLAorICAg
ICJzZXR1cDplZ2doZWFkIjogImdpdCBjaGVja291dCBwcmVsZXNzb24vcG9seWZpbGwtcHJvbWlz
ZXMgJiYgbnBtIGluc3RhbGwgJiYgbWtkaXIgZGlzdCAmJiBucG0gcnVuIHZhbGlkYXRlIgorICB9
Cit9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svc3JjL2FwcC5jc3Mg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEt
ZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svc3JjL2FwcC5jc3MKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTI3
YTU4ZjcxZjM5ZmYwMWYwYTUyNjk3MjkyM2YxZDFlMGZjZDExYgotLS0gL2Rldi9udWxsCisrKyBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1l
eGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9zcmMvYXBwLmNzcwpAQCAtMCwwICsxLDIwIEBA
CisudG9nZ2xlLWdyYXBoIHsKKyAgZmxvYXQ6IGxlZnQ7CisgIG1hcmdpbi1sZWZ0OiAxNnB4Owor
ICBjdXJzb3I6IHBvaW50ZXI7CisgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgei1pbmRleDogMTsK
K30KKy50b2dnbGUtZ3JhcGggc3ZnIHsKKyAgaGVpZ2h0OiAyMHB4OworICB3aWR0aDogMjBweDsK
K30KKy50b2dnbGUtZ3JhcGggc3ZnIHBhdGggeworICBmaWxsOiAjNzc3OworfQorCisudG9nZ2xl
LWdyYXBoLmFjdGl2ZSBzdmcgcGF0aCwKKy50b2dnbGUtZ3JhcGg6aG92ZXIgc3ZnIHBhdGgsCisu
dG9nZ2xlLWdyYXBoOmZvY3VzIHN2ZyBwYXRoIHsKKyAgZmlsbDogYmxhY2s7Cit9CmRpZmYgLS1n
aXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3Zhbmls
bGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svc3JjL2FwcC5qcyBiL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIw
MTUtYmFiZWwtd2VicGFjay9zcmMvYXBwLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI3ZTAyZmRlOTAyMzU1NmMw
NTNhOWI5NjA4MjBjOWUzY2ZkZTYwZjcKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1
LWJhYmVsLXdlYnBhY2svc3JjL2FwcC5qcwpAQCAtMCwwICsxLDkgQEAKK2ltcG9ydCAndG9kb212
Yy1hcHAtY3NzL2luZGV4LmNzcycKK2ltcG9ydCAnLi9hcHAuY3NzJworCitpbXBvcnQgeyRvbn0g
ZnJvbSAnLi9oZWxwZXJzJworaW1wb3J0IHt1cGRhdGVUb2RvfSBmcm9tICcuL3RvZG8nCisKK2V4
cG9ydCBmdW5jdGlvbiBvbkxvYWQoKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgaW1wb3J0L3By
ZWZlci1kZWZhdWx0LWV4cG9ydAorICB1cGRhdGVUb2RvKCkKK30KZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxl
cy9lczIwMTUtYmFiZWwtd2VicGFjay9zcmMvYm9vdHN0cmFwLmpzIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1i
YWJlbC13ZWJwYWNrL3NyYy9ib290c3RyYXAuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjZkNWU4MjFiYTdlYTZl
OTg2NWY5OGM0Y2M1YTUwYjVmZDZlMzA5MQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIw
MTUtYmFiZWwtd2VicGFjay9zcmMvYm9vdHN0cmFwLmpzCkBAIC0wLDAgKzEsMjMgQEAKKy8qIGVz
bGludCBuby1jb25zb2xlOjAgKi8KK2ltcG9ydCB7b25Mb2FkfSBmcm9tICcuL2FwcCcKK2ltcG9y
dCB7JG9ufSBmcm9tICcuL2hlbHBlcnMnCisKKy8vIHRoaXMgaXMgb25seSByZWxldmFudCB3aGVu
IHVzaW5nIGBob3RgIG1vZGUgd2l0aCB3ZWJwYWNrCisvLyBzcGVjaWFsIHRoYW5rcyB0byBFcmlj
IENsZW1tb25zOiBodHRwczovL2dpdGh1Yi5jb20vZXJpY2NsZW1tb25zL3dlYnBhY2staG90LXNl
cnZlci1leGFtcGxlCitjb25zdCByZWxvYWRpbmcgPSBkb2N1bWVudC5yZWFkeVN0YXRlID09PSAn
Y29tcGxldGUnCitpZiAobW9kdWxlLmhvdCkgeworICBtb2R1bGUuaG90LmFjY2VwdChmdW5jdGlv
bihlcnIpIHsKKyAgfSkKKyAgaWYgKHJlbG9hZGluZykgeworICAgIG9uTG9hZCgpCisgIH0gZWxz
ZSB7CisgICAgYm9vdHN0cmFwKCkKKyAgfQorfSBlbHNlIHsKKyAgYm9vdHN0cmFwKCkKK30KKwor
ZnVuY3Rpb24gYm9vdHN0cmFwKCkgeworICAkb24od2luZG93LCAnbG9hZCcsIG9uTG9hZCkKKyAg
JG9uKHdpbmRvdywgJ2hhc2hjaGFuZ2UnLCBvbkxvYWQpCit9CmRpZmYgLS1naXQgYS9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMv
ZXMyMDE1LWJhYmVsLXdlYnBhY2svc3JjL2NvbnRyb2xsZXIuanMgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJh
YmVsLXdlYnBhY2svc3JjL2NvbnRyb2xsZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGE0OGM5MDZiYzM2Y2U0
YmM4YjcyM2YzZjJmZjAzMzk0NDBjNWY0MwotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIw
MTUtYmFiZWwtd2VicGFjay9zcmMvY29udHJvbGxlci5qcwpAQCAtMCwwICsxLDI2MyBAQAorZXhw
b3J0IGRlZmF1bHQgQ29udHJvbGxlcgorCisvKioKKyogVGFrZXMgYSBtb2RlbCBhbmQgdmlldyBh
bmQgYWN0cyBhcyB0aGUgY29udHJvbGxlciBiZXR3ZWVuIHRoZW0KKyoKKyogQGNvbnN0cnVjdG9y
CisqIEBwYXJhbSB7b2JqZWN0fSBtb2RlbCBUaGUgbW9kZWwgaW5zdGFuY2UKKyogQHBhcmFtIHtv
YmplY3R9IHZpZXcgVGhlIHZpZXcgaW5zdGFuY2UKKyovCitmdW5jdGlvbiBDb250cm9sbGVyKG1v
ZGVsLCB2aWV3KSB7CisgIHZhciB0aGF0ID0gdGhpcworICB0aGF0Lm1vZGVsID0gbW9kZWwKKyAg
dGhhdC52aWV3ID0gdmlldworCisgIHRoYXQudmlldy5iaW5kKCduZXdUb2RvJywgZnVuY3Rpb24o
dGl0bGUpIHsKKyAgICB0aGF0LmFkZEl0ZW0odGl0bGUpCisgIH0pCisKKyAgdGhhdC52aWV3LmJp
bmQoJ2l0ZW1FZGl0JywgZnVuY3Rpb24oaXRlbSkgeworICAgIHRoYXQuZWRpdEl0ZW0oaXRlbS5p
ZCkKKyAgfSkKKworICB0aGF0LnZpZXcuYmluZCgnaXRlbUVkaXREb25lJywgZnVuY3Rpb24oaXRl
bSkgeworICAgIHRoYXQuZWRpdEl0ZW1TYXZlKGl0ZW0uaWQsIGl0ZW0udGl0bGUpCisgIH0pCisK
KyAgdGhhdC52aWV3LmJpbmQoJ2l0ZW1FZGl0Q2FuY2VsJywgZnVuY3Rpb24oaXRlbSkgeworICAg
IHRoYXQuZWRpdEl0ZW1DYW5jZWwoaXRlbS5pZCkKKyAgfSkKKworICB0aGF0LnZpZXcuYmluZCgn
aXRlbVJlbW92ZScsIGZ1bmN0aW9uKGl0ZW0pIHsKKyAgICB0aGF0LnJlbW92ZUl0ZW0oaXRlbS5p
ZCkKKyAgfSkKKworICB0aGF0LnZpZXcuYmluZCgnaXRlbVRvZ2dsZScsIGZ1bmN0aW9uKGl0ZW0p
IHsKKyAgICB0aGF0LnRvZ2dsZUNvbXBsZXRlKGl0ZW0uaWQsIGl0ZW0uY29tcGxldGVkKQorICB9
KQorCisgIHRoYXQudmlldy5iaW5kKCdyZW1vdmVDb21wbGV0ZWQnLCBmdW5jdGlvbigpIHsKKyAg
ICB0aGF0LnJlbW92ZUNvbXBsZXRlZEl0ZW1zKCkKKyAgfSkKKworICB0aGF0LnZpZXcuYmluZCgn
dG9nZ2xlQWxsJywgZnVuY3Rpb24oc3RhdHVzKSB7CisgICAgdGhhdC50b2dnbGVBbGwoc3RhdHVz
LmNvbXBsZXRlZCkKKyAgfSkKK30KKworLyoqCisqIExvYWRzIGFuZCBpbml0aWFsaXNlcyB0aGUg
dmlldworKgorKiBAcGFyYW0ge3N0cmluZ30gJycgfCAnYWN0aXZlJyB8ICdjb21wbGV0ZWQnCisq
LworQ29udHJvbGxlci5wcm90b3R5cGUuc2V0VmlldyA9IGZ1bmN0aW9uKGxvY2F0aW9uSGFzaCkg
eworICB2YXIgcm91dGUgPSBsb2NhdGlvbkhhc2guc3BsaXQoJy8nKVsxXQorICB2YXIgcGFnZSA9
IHJvdXRlIHx8ICcnCisgIHRoaXMuX3VwZGF0ZUZpbHRlclN0YXRlKHBhZ2UpCit9CisKKy8qKgor
KiBBbiBldmVudCB0byBmaXJlIG9uIGxvYWQuIFdpbGwgZ2V0IGFsbCBpdGVtcyBhbmQgZGlzcGxh
eSB0aGVtIGluIHRoZQorKiB0b2RvLWxpc3QKKyovCitDb250cm9sbGVyLnByb3RvdHlwZS5zaG93
QWxsID0gZnVuY3Rpb24oKSB7CisgIHZhciB0aGF0ID0gdGhpcworICB0aGF0Lm1vZGVsLnJlYWQo
ZnVuY3Rpb24oZGF0YSkgeworICAgIHRoYXQudmlldy5yZW5kZXIoJ3Nob3dFbnRyaWVzJywgZGF0
YSkKKyAgfSkKK30KKworLyoqCisqIFJlbmRlcnMgYWxsIGFjdGl2ZSB0YXNrcworKi8KK0NvbnRy
b2xsZXIucHJvdG90eXBlLnNob3dBY3RpdmUgPSBmdW5jdGlvbigpIHsKKyAgdmFyIHRoYXQgPSB0
aGlzCisgIHRoYXQubW9kZWwucmVhZCh7Y29tcGxldGVkOiBmYWxzZX0sIGZ1bmN0aW9uKGRhdGEp
IHsKKyAgICB0aGF0LnZpZXcucmVuZGVyKCdzaG93RW50cmllcycsIGRhdGEpCisgIH0pCit9CisK
Ky8qKgorKiBSZW5kZXJzIGFsbCBjb21wbGV0ZWQgdGFza3MKKyovCitDb250cm9sbGVyLnByb3Rv
dHlwZS5zaG93Q29tcGxldGVkID0gZnVuY3Rpb24oKSB7CisgIHZhciB0aGF0ID0gdGhpcworICB0
aGF0Lm1vZGVsLnJlYWQoe2NvbXBsZXRlZDogdHJ1ZX0sIGZ1bmN0aW9uKGRhdGEpIHsKKyAgICB0
aGF0LnZpZXcucmVuZGVyKCdzaG93RW50cmllcycsIGRhdGEpCisgIH0pCit9CisKKy8qKgorKiBB
biBldmVudCB0byBmaXJlIHdoZW5ldmVyIHlvdSB3YW50IHRvIGFkZCBhbiBpdGVtLiBTaW1wbHkg
cGFzcyBpbiB0aGUgZXZlbnQKKyogb2JqZWN0IGFuZCBpdCdsbCBoYW5kbGUgdGhlIERPTSBpbnNl
cnRpb24gYW5kIHNhdmluZyBvZiB0aGUgbmV3IGl0ZW0uCisqLworQ29udHJvbGxlci5wcm90b3R5
cGUuYWRkSXRlbSA9IGZ1bmN0aW9uKHRpdGxlKSB7CisgIHZhciB0aGF0ID0gdGhpcworCisgIGlm
ICh0aXRsZS50cmltKCkgPT09ICcnKSB7CisgICAgcmV0dXJuCisgIH0KKworICB0aGF0Lm1vZGVs
LmNyZWF0ZSh0aXRsZSwgZnVuY3Rpb24oKSB7CisgICAgdGhhdC52aWV3LnJlbmRlcignY2xlYXJO
ZXdUb2RvJykKKyAgICB0aGF0Ll9maWx0ZXIodHJ1ZSkKKyAgfSkKK30KKworLyoKKyogVHJpZ2dl
cnMgdGhlIGl0ZW0gZWRpdGluZyBtb2RlLgorKi8KK0NvbnRyb2xsZXIucHJvdG90eXBlLmVkaXRJ
dGVtID0gZnVuY3Rpb24oaWQpIHsKKyAgdmFyIHRoYXQgPSB0aGlzCisgIHRoYXQubW9kZWwucmVh
ZChpZCwgZnVuY3Rpb24oZGF0YSkgeworICAgIHRoYXQudmlldy5yZW5kZXIoJ2VkaXRJdGVtJywg
e2lkLCB0aXRsZTogZGF0YVswXS50aXRsZX0pCisgIH0pCit9CisKKy8qCisqIEZpbmlzaGVzIHRo
ZSBpdGVtIGVkaXRpbmcgbW9kZSBzdWNjZXNzZnVsbHkuCisqLworQ29udHJvbGxlci5wcm90b3R5
cGUuZWRpdEl0ZW1TYXZlID0gZnVuY3Rpb24oaWQsIHRpdGxlKSB7CisgIHZhciB0aGF0ID0gdGhp
cworICBpZiAodGl0bGUudHJpbSgpKSB7CisgICAgdGhhdC5tb2RlbC51cGRhdGUoaWQsIHt0aXRs
ZX0sIGZ1bmN0aW9uKCkgeworICAgICAgdGhhdC52aWV3LnJlbmRlcignZWRpdEl0ZW1Eb25lJywg
e2lkLCB0aXRsZX0pCisgICAgfSkKKyAgfSBlbHNlIHsKKyAgICB0aGF0LnJlbW92ZUl0ZW0oaWQp
CisgIH0KK30KKworLyoKKyogQ2FuY2VscyB0aGUgaXRlbSBlZGl0aW5nIG1vZGUuCisqLworQ29u
dHJvbGxlci5wcm90b3R5cGUuZWRpdEl0ZW1DYW5jZWwgPSBmdW5jdGlvbihpZCkgeworICB2YXIg
dGhhdCA9IHRoaXMKKyAgdGhhdC5tb2RlbC5yZWFkKGlkLCBmdW5jdGlvbihkYXRhKSB7CisgICAg
dGhhdC52aWV3LnJlbmRlcignZWRpdEl0ZW1Eb25lJywge2lkLCB0aXRsZTogZGF0YVswXS50aXRs
ZX0pCisgIH0pCit9CisKKy8qKgorKiBCeSBnaXZpbmcgaXQgYW4gSUQgaXQnbGwgZmluZCB0aGUg
RE9NIGVsZW1lbnQgbWF0Y2hpbmcgdGhhdCBJRCwKKyogcmVtb3ZlIGl0IGZyb20gdGhlIERPTSBh
bmQgYWxzbyByZW1vdmUgaXQgZnJvbSBzdG9yYWdlLgorKgorKiBAcGFyYW0ge251bWJlcn0gaWQg
VGhlIElEIG9mIHRoZSBpdGVtIHRvIHJlbW92ZSBmcm9tIHRoZSBET00gYW5kCisqIHN0b3JhZ2UK
KyovCitDb250cm9sbGVyLnByb3RvdHlwZS5yZW1vdmVJdGVtID0gZnVuY3Rpb24oaWQpIHsKKyAg
dmFyIHRoYXQgPSB0aGlzCisgIHRoYXQubW9kZWwucmVtb3ZlKGlkLCBmdW5jdGlvbigpIHsKKyAg
ICB0aGF0LnZpZXcucmVuZGVyKCdyZW1vdmVJdGVtJywgaWQpCisgIH0pCisKKyAgdGhhdC5fZmls
dGVyKCkKK30KKworLyoqCisqIFdpbGwgcmVtb3ZlIGFsbCBjb21wbGV0ZWQgaXRlbXMgZnJvbSB0
aGUgRE9NIGFuZCBzdG9yYWdlLgorKi8KK0NvbnRyb2xsZXIucHJvdG90eXBlLnJlbW92ZUNvbXBs
ZXRlZEl0ZW1zID0gZnVuY3Rpb24oKSB7CisgIHZhciB0aGF0ID0gdGhpcworICB0aGF0Lm1vZGVs
LnJlYWQoe2NvbXBsZXRlZDogdHJ1ZX0sIGZ1bmN0aW9uKGRhdGEpIHsKKyAgICBkYXRhLmZvckVh
Y2goZnVuY3Rpb24oaXRlbSkgeworICAgICAgdGhhdC5yZW1vdmVJdGVtKGl0ZW0uaWQpCisgICAg
fSkKKyAgfSkKKworICB0aGF0Ll9maWx0ZXIoKQorfQorCisvKioKKyogR2l2ZSBpdCBhbiBJRCBv
ZiBhIG1vZGVsIGFuZCBhIGNoZWNrYm94IGFuZCBpdCB3aWxsIHVwZGF0ZSB0aGUgaXRlbQorKiBp
biBzdG9yYWdlIGJhc2VkIG9uIHRoZSBjaGVja2JveCdzIHN0YXRlLgorKgorKiBAcGFyYW0ge251
bWJlcn0gaWQgVGhlIElEIG9mIHRoZSBlbGVtZW50IHRvIGNvbXBsZXRlIG9yIHVuY29tcGxldGUK
KyogQHBhcmFtIHtvYmplY3R9IGNoZWNrYm94IFRoZSBjaGVja2JveCB0byBjaGVjayB0aGUgc3Rh
dGUgb2YgY29tcGxldGUKKyogICAgICAgICAgICAgICAgICAgICAgICAgIG9yIG5vdAorKiBAcGFy
YW0ge2Jvb2xlYW58dW5kZWZpbmVkfSBzaWxlbnQgUHJldmVudCByZS1maWx0ZXJpbmcgdGhlIHRv
ZG8gaXRlbXMKKyovCitDb250cm9sbGVyLnByb3RvdHlwZS50b2dnbGVDb21wbGV0ZSA9IGZ1bmN0
aW9uKGlkLCBjb21wbGV0ZWQsIHNpbGVudCkgeworICB2YXIgdGhhdCA9IHRoaXMKKyAgdGhhdC5t
b2RlbC51cGRhdGUoaWQsIHtjb21wbGV0ZWR9LCBmdW5jdGlvbigpIHsKKyAgICB0aGF0LnZpZXcu
cmVuZGVyKCdlbGVtZW50Q29tcGxldGUnLCB7CisgICAgICBpZCwKKyAgICAgIGNvbXBsZXRlZCwK
KyAgICB9KQorICB9KQorCisgIGlmICghc2lsZW50KSB7CisgICAgdGhhdC5fZmlsdGVyKCkKKyAg
fQorfQorCisvKioKKyogV2lsbCB0b2dnbGUgQUxMIGNoZWNrYm94ZXMnIG9uL29mZiBzdGF0ZSBh
bmQgY29tcGxldGVuZXNzIG9mIG1vZGVscy4KKyogSnVzdCBwYXNzIGluIHRoZSBldmVudCBvYmpl
Y3QuCisqLworQ29udHJvbGxlci5wcm90b3R5cGUudG9nZ2xlQWxsID0gZnVuY3Rpb24oY29tcGxl
dGVkKSB7CisgIHZhciB0aGF0ID0gdGhpcworICB0aGF0Lm1vZGVsLnJlYWQoe2NvbXBsZXRlZDog
IWNvbXBsZXRlZH0sIGZ1bmN0aW9uKGRhdGEpIHsKKyAgICBkYXRhLmZvckVhY2goZnVuY3Rpb24o
aXRlbSkgeworICAgICAgdGhhdC50b2dnbGVDb21wbGV0ZShpdGVtLmlkLCBjb21wbGV0ZWQsIHRy
dWUpCisgICAgfSkKKyAgfSkKKworICB0aGF0Ll9maWx0ZXIoKQorfQorCisvKioKKyogVXBkYXRl
cyB0aGUgcGllY2VzIG9mIHRoZSBwYWdlIHdoaWNoIGNoYW5nZSBkZXBlbmRpbmcgb24gdGhlIHJl
bWFpbmluZworKiBudW1iZXIgb2YgdG9kb3MuCisqLworQ29udHJvbGxlci5wcm90b3R5cGUuX3Vw
ZGF0ZUNvdW50ID0gZnVuY3Rpb24oKSB7CisgIHZhciB0aGF0ID0gdGhpcworICB0aGF0Lm1vZGVs
LmdldENvdW50KGZ1bmN0aW9uKHRvZG9zKSB7CisgICAgdGhhdC52aWV3LnJlbmRlcigndXBkYXRl
RWxlbWVudENvdW50JywgdG9kb3MuYWN0aXZlKQorICAgIHRoYXQudmlldy5yZW5kZXIoJ2NsZWFy
Q29tcGxldGVkQnV0dG9uJywgeworICAgICAgY29tcGxldGVkOiB0b2Rvcy5jb21wbGV0ZWQsCisg
ICAgICB2aXNpYmxlOiB0b2Rvcy5jb21wbGV0ZWQgPiAwCisgICAgfSkKKworICAgIHRoYXQudmll
dy5yZW5kZXIoJ3RvZ2dsZUFsbCcsIHtjaGVja2VkOiB0b2Rvcy5jb21wbGV0ZWQgPT09IHRvZG9z
LnRvdGFsfSkKKyAgICB0aGF0LnZpZXcucmVuZGVyKCdjb250ZW50QmxvY2tWaXNpYmlsaXR5Jywg
e3Zpc2libGU6IHRvZG9zLnRvdGFsID4gMH0pCisgIH0pCit9CisKKy8qKgorKiBSZS1maWx0ZXJz
IHRoZSB0b2RvIGl0ZW1zLCBiYXNlZCBvbiB0aGUgYWN0aXZlIHJvdXRlLgorKiBAcGFyYW0ge2Jv
b2xlYW58dW5kZWZpbmVkfSBmb3JjZSAgZm9yY2VzIGEgcmUtcGFpbnRpbmcgb2YgdG9kbyBpdGVt
cy4KKyovCitDb250cm9sbGVyLnByb3RvdHlwZS5fZmlsdGVyID0gZnVuY3Rpb24oZm9yY2UpIHsK
KyAgdmFyIGFjdGl2ZVJvdXRlID0gdGhpcy5fYWN0aXZlUm91dGUuY2hhckF0KDApLnRvVXBwZXJD
YXNlKCkgKyB0aGlzLl9hY3RpdmVSb3V0ZS5zdWJzdHIoMSkKKworICAvLyBVcGRhdGUgdGhlIGVs
ZW1lbnRzIG9uIHRoZSBwYWdlLCB3aGljaCBjaGFuZ2Ugd2l0aCBlYWNoIGNvbXBsZXRlZCB0b2Rv
CisgIHRoaXMuX3VwZGF0ZUNvdW50KCkKKworICAvLyBJZiB0aGUgbGFzdCBhY3RpdmUgcm91dGUg
aXNuJ3QgIkFsbCIsIG9yIHdlJ3JlIHN3aXRjaGluZyByb3V0ZXMsIHdlCisgIC8vIHJlLWNyZWF0
ZSB0aGUgdG9kbyBpdGVtIGVsZW1lbnRzLCBjYWxsaW5nOgorICAvLyAgIHRoaXMuc2hvd1tBbGx8
QWN0aXZlfENvbXBsZXRlZF0oKTsKKyAgaWYgKGZvcmNlIHx8IHRoaXMuX2xhc3RBY3RpdmVSb3V0
ZSAhPT0gJ0FsbCcgfHwgdGhpcy5fbGFzdEFjdGl2ZVJvdXRlICE9PSBhY3RpdmVSb3V0ZSkgewor
ICAgIHRoaXNbJ3Nob3cnICsgYWN0aXZlUm91dGVdKCkKKyAgfQorCisgIHRoaXMuX2xhc3RBY3Rp
dmVSb3V0ZSA9IGFjdGl2ZVJvdXRlCit9CisKKy8qKgorKiBTaW1wbHkgdXBkYXRlcyB0aGUgZmls
dGVyIG5hdidzIHNlbGVjdGVkIHN0YXRlcworKi8KK0NvbnRyb2xsZXIucHJvdG90eXBlLl91cGRh
dGVGaWx0ZXJTdGF0ZSA9IGZ1bmN0aW9uKGN1cnJlbnRQYWdlKSB7CisgIC8vIFN0b3JlIGEgcmVm
ZXJlbmNlIHRvIHRoZSBhY3RpdmUgcm91dGUsIGFsbG93aW5nIHVzIHRvIHJlLWZpbHRlciB0b2Rv
CisgIC8vIGl0ZW1zIGFzIHRoZXkgYXJlIG1hcmtlZCBjb21wbGV0ZSBvciBpbmNvbXBsZXRlLgor
ICBjdXJyZW50UGFnZSA9IGN1cnJlbnRQYWdlLnNwbGl0KCc/JylbMF0KKyAgdGhpcy5fYWN0aXZl
Um91dGUgPSBjdXJyZW50UGFnZQorCisgIGlmIChjdXJyZW50UGFnZSA9PT0gJycpIHsKKyAgICB0
aGlzLl9hY3RpdmVSb3V0ZSA9ICdBbGwnCisgIH0KKworICB0aGlzLl9maWx0ZXIoKQorCisgIHRo
aXMudmlldy5yZW5kZXIoJ3NldEZpbHRlcicsIGN1cnJlbnRQYWdlKQorfQpkaWZmIC0tZ2l0IGEv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4
YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL3NyYy9jb250cm9sbGVyLnRlc3QuanMgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBs
ZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svc3JjL2NvbnRyb2xsZXIudGVzdC5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5iMzQ5NTU5YjljODM3YTdkNThlYTFhMzA1Y2I3Nzc4N2FiY2QwZjIyCi0tLSAvZGV2L251bGwK
KysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5p
bGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL3NyYy9jb250cm9sbGVyLnRlc3QuanMK
QEAgLTAsMCArMSw3IEBACitpbXBvcnQgQ29udHJvbGxlciBmcm9tICcuL2NvbnRyb2xsZXInCisK
K2Rlc2NyaWJlKCdjb250cm9sbGVyJywgKCkgPT4geworICBpdCgnZXhpc3RzJywgKCkgPT4gewor
ICAgIGV4cGVjdChDb250cm9sbGVyKS50by5leGlzdAorICB9KQorfSkKZGlmZiAtLWdpdCBhL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFt
cGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9zcmMvaGVscGVycy5qcyBiL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUt
YmFiZWwtd2VicGFjay9zcmMvaGVscGVycy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lODhlY2I4ZDk0NDZlNTE0
MDdiNjZiYzBiYTFhNzlkNDE0YmM4YzY1Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAx
NS1iYWJlbC13ZWJwYWNrL3NyYy9oZWxwZXJzLmpzCkBAIC0wLDAgKzEsNjEgQEAKK2V4cG9ydCB7
cXMsIHFzYSwgJG9uLCAkZGVsZWdhdGUsICRwYXJlbnQsIHJlbW92ZX0KKworLy8gR2V0IGVsZW1l
bnQocykgYnkgQ1NTIHNlbGVjdG9yOgorZnVuY3Rpb24gcXMoc2VsZWN0b3IsIHNjb3BlKSB7Cisg
IHJldHVybiAoc2NvcGUgfHwgZG9jdW1lbnQpLnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpCit9CisK
K2Z1bmN0aW9uIHFzYShzZWxlY3Rvciwgc2NvcGUpIHsKKyAgcmV0dXJuIChzY29wZSB8fCBkb2N1
bWVudCkucXVlcnlTZWxlY3RvckFsbChzZWxlY3RvcikKK30KKworLy8gYWRkRXZlbnRMaXN0ZW5l
ciB3cmFwcGVyOgorZnVuY3Rpb24gJG9uKHRhcmdldCwgdHlwZSwgY2FsbGJhY2ssIHVzZUNhcHR1
cmUpIHsKKyAgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIodHlwZSwgY2FsbGJhY2ssICEhdXNlQ2Fw
dHVyZSkKK30KKworLy8gQXR0YWNoIGEgaGFuZGxlciB0byBldmVudCBmb3IgYWxsIGVsZW1lbnRz
IHRoYXQgbWF0Y2ggdGhlIHNlbGVjdG9yLAorLy8gbm93IG9yIGluIHRoZSBmdXR1cmUsIGJhc2Vk
IG9uIGEgcm9vdCBlbGVtZW50CitmdW5jdGlvbiAkZGVsZWdhdGUodGFyZ2V0LCBzZWxlY3Rvciwg
dHlwZSwgaGFuZGxlcikgeworICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1V
Uy9kb2NzL1dlYi9FdmVudHMvYmx1cgorICB2YXIgdXNlQ2FwdHVyZSA9IHR5cGUgPT09ICdibHVy
JyB8fCB0eXBlID09PSAnZm9jdXMnCisgICRvbih0YXJnZXQsIHR5cGUsIGRpc3BhdGNoRXZlbnQs
IHVzZUNhcHR1cmUpCisKKyAgZnVuY3Rpb24gZGlzcGF0Y2hFdmVudChldmVudCkgeworICAgIHZh
ciB0YXJnZXRFbGVtZW50ID0gZXZlbnQudGFyZ2V0CisgICAgdmFyIHBvdGVudGlhbEVsZW1lbnRz
ID0gcXNhKHNlbGVjdG9yLCB0YXJnZXQpCisgICAgdmFyIGhhc01hdGNoID0gQXJyYXkucHJvdG90
eXBlLmluZGV4T2YuY2FsbChwb3RlbnRpYWxFbGVtZW50cywgdGFyZ2V0RWxlbWVudCkgPj0gMAor
CisgICAgaWYgKGhhc01hdGNoKSB7CisgICAgICBoYW5kbGVyLmNhbGwodGFyZ2V0RWxlbWVudCwg
ZXZlbnQpCisgICAgfQorICB9Cit9CisKKy8vIEZpbmQgdGhlIGVsZW1lbnQncyBwYXJlbnQgd2l0
aCB0aGUgZ2l2ZW4gdGFnIG5hbWU6CisvLyAkcGFyZW50KHFzKCdhJyksICdkaXYnKTsKK2Z1bmN0
aW9uICRwYXJlbnQoZWxlbWVudCwgdGFnTmFtZSkgeworICBpZiAoIWVsZW1lbnQucGFyZW50Tm9k
ZSkgeworICAgIHJldHVybiB1bmRlZmluZWQKKyAgfQorICBpZiAoZWxlbWVudC5wYXJlbnROb2Rl
LnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gdGFnTmFtZS50b0xvd2VyQ2FzZSgpKSB7CisgICAg
cmV0dXJuIGVsZW1lbnQucGFyZW50Tm9kZQorICB9CisgIHJldHVybiAkcGFyZW50KGVsZW1lbnQu
cGFyZW50Tm9kZSwgdGFnTmFtZSkKK30KKworLy8gcmVtb3ZlcyBhbiBlbGVtZW50IGZyb20gYW4g
YXJyYXkKKy8vIGNvbnN0IHggPSBbMSwyLDNdCisvLyByZW1vdmUoeCwgMikKKy8vIHggfj09IFsx
LDNdCitmdW5jdGlvbiByZW1vdmUoYXJyYXksIHRoaW5nKSB7CisgIGNvbnN0IGluZGV4ID0gYXJy
YXkuaW5kZXhPZih0aGluZykKKyAgaWYgKGluZGV4ID09PSAtMSkgeworICAgIHJldHVybiBhcnJh
eQorICB9CisgIGFycmF5LnNwbGljZShpbmRleCwgMSkKK30KKworLy8gQWxsb3cgZm9yIGxvb3Bp
bmcgb24gbm9kZXMgYnkgY2hhaW5pbmc6CisvLyBxc2EoJy5mb28nKS5mb3JFYWNoKGZ1bmN0aW9u
ICgpIHt9KQorTm9kZUxpc3QucHJvdG90eXBlLmZvckVhY2ggPSBBcnJheS5wcm90b3R5cGUuZm9y
RWFjaApkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL3NyYy9pbmRleC5o
dG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5p
bGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL3NyYy9pbmRleC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjcyMTJjYzI0NjU2YmEyMWQzMDRhZmZlOGRhYmU5ZGIyMGJmM2Y4MDIKLS0tIC9kZXYvbnVs
bAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3Zh
bmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svc3JjL2luZGV4Lmh0bWwKQEAgLTAs
MCArMSw0NCBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbCBsYW5nPSJlbiIgZGF0YS1mcmFtZXdv
cms9ImphdmFzY3JpcHQiPgorICA8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cisg
ICAgPHRpdGxlPlZhbmlsbGFKUyDigKIgVG9kb01WQzwvdGl0bGU+CisgICAgPCU9aHRtbFdlYnBh
Y2tQbHVnaW4uZmlsZXMud2VicGFja01hbmlmZXN0JT4KKyAgPC9oZWFkPgorICA8Ym9keT4KKyAg
ICA8c2VjdGlvbiBjbGFzcz0idG9kb2FwcCI+CisgICAgICA8aGVhZGVyIGNsYXNzPSJoZWFkZXIi
PgorICAgICAgICA8aDE+dG9kb3M8L2gxPgorICAgICAgICA8aW5wdXQgY2xhc3M9Im5ldy10b2Rv
IiBwbGFjZWhvbGRlcj0iV2hhdCBuZWVkcyB0byBiZSBkb25lPyIgYXV0b2ZvY3VzPgorICAgICAg
PC9oZWFkZXI+CisgICAgICA8c2VjdGlvbiBjbGFzcz0ibWFpbiI+CisgICAgICAgIDxpbnB1dCBj
bGFzcz0idG9nZ2xlLWFsbCIgdHlwZT0iY2hlY2tib3giPgorICAgICAgICA8bGFiZWwgZm9yPSJ0
b2dnbGUtYWxsIj5NYXJrIGFsbCBhcyBjb21wbGV0ZTwvbGFiZWw+CisgICAgICAgIDx1bCBjbGFz
cz0idG9kby1saXN0Ij48L3VsPgorICAgICAgPC9zZWN0aW9uPgorICAgICAgPGZvb3RlciBjbGFz
cz0iZm9vdGVyIj4KKyAgICAgICAgPHNwYW4gY2xhc3M9InRvZG8tY291bnQiPjwvc3Bhbj4KKyAg
ICAgICAgPHVsIGNsYXNzPSJmaWx0ZXJzIj4KKyAgICAgICAgICA8bGk+CisgICAgICAgICAgICA8
YSBocmVmPSIjLyIgY2xhc3M9InNlbGVjdGVkIj5BbGw8L2E+CisgICAgICAgICAgPC9saT4KKyAg
ICAgICAgICA8bGk+CisgICAgICAgICAgICA8YSBocmVmPSIjL2FjdGl2ZSI+QWN0aXZlPC9hPgor
ICAgICAgICAgIDwvbGk+CisgICAgICAgICAgPGxpPgorICAgICAgICAgICAgPGEgaHJlZj0iIy9j
b21wbGV0ZWQiPkNvbXBsZXRlZDwvYT4KKyAgICAgICAgICA8L2xpPgorICAgICAgICA8L3VsPgor
ICAgICAgICA8YnV0dG9uIGNsYXNzPSJjbGVhci1jb21wbGV0ZWQiPkNsZWFyIGNvbXBsZXRlZDwv
YnV0dG9uPgorICAgICAgPC9mb290ZXI+CisgICAgPC9zZWN0aW9uPgorICAgIDxmb290ZXIgY2xh
c3M9ImluZm8iPgorICAgICAgPHA+RG91YmxlLWNsaWNrIHRvIGVkaXQgYSB0b2RvPC9wPgorICAg
ICAgPHA+U3BlZWRvbWV0ZXIgdmVyc2lvbiBieSA8YSBocmVmPSJodHRwOi8vdHdpdHRlci5jb20v
YWRkeW9zbWFuaSI+QWRkeSBPc21hbmk8L2E+PC9wPgorICAgICAgPHA+Q3JlYXRlZCBieSA8YSBo
cmVmPSJodHRwOi8vdHdpdHRlci5jb20vb3NjYXJnb2Rzb24iPk9zY2FyIEdvZHNvbjwvYT48L3A+
CisgICAgICA8cD5SZWZhY3RvcmVkIGJ5IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jYnVy
Z21lciI+Q2hyaXN0b3BoIEJ1cmdtZXI8L2E+PC9wPgorICAgICAgPHA+UG9ydGVkIHRvIEVTNiBi
eSA8YSBocmVmPSJodHRwczovL3R3aXR0ZXIuY29tL2tlbnRjZG9kZHMiPktlbnQgQy4gRG9kZHM8
L2E+PC9wPgorICAgICAgPHA+UGFydCBvZiA8YSBocmVmPSJodHRwOi8vdG9kb212Yy5jb20iPlRv
ZG9NVkM8L2E+PC9wPgorICAgIDwvZm9vdGVyPgorICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3Zhbmls
bGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svc3JjL21vZGVsLmpzIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2Vz
MjAxNS1iYWJlbC13ZWJwYWNrL3NyYy9tb2RlbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNmZhNThhNmJlZDcz
MjNmNjJjZjM1NzI1MWI5NzU0MzgyNzA1ZjdjCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2Vz
MjAxNS1iYWJlbC13ZWJwYWNrL3NyYy9tb2RlbC5qcwpAQCAtMCwwICsxLDExNiBAQAorZXhwb3J0
IGRlZmF1bHQgTW9kZWwKKworLyoqCisqIENyZWF0ZXMgYSBuZXcgTW9kZWwgaW5zdGFuY2UgYW5k
IGhvb2tzIHVwIHRoZSBzdG9yYWdlLgorKgorKiBAY29uc3RydWN0b3IKKyogQHBhcmFtIHtvYmpl
Y3R9IHN0b3JhZ2UgQSByZWZlcmVuY2UgdG8gdGhlIGNsaWVudCBzaWRlIHN0b3JhZ2UgY2xhc3MK
KyovCitmdW5jdGlvbiBNb2RlbChzdG9yYWdlKSB7CisgIHRoaXMuc3RvcmFnZSA9IHN0b3JhZ2UK
K30KKworLyoqCisqIENyZWF0ZXMgYSBuZXcgdG9kbyBtb2RlbAorKgorKiBAcGFyYW0ge3N0cmlu
Z30gW3RpdGxlXSBUaGUgdGl0bGUgb2YgdGhlIHRhc2sKKyogQHBhcmFtIHtmdW5jdGlvbn0gW2Nh
bGxiYWNrXSBUaGUgY2FsbGJhY2sgdG8gZmlyZSBhZnRlciB0aGUgbW9kZWwgaXMgY3JlYXRlZAor
Ki8KK01vZGVsLnByb3RvdHlwZS5jcmVhdGUgPSBmdW5jdGlvbih0aXRsZSwgY2FsbGJhY2spIHsK
KyAgdGl0bGUgPSB0aXRsZSB8fCAnJworICBjYWxsYmFjayA9IGNhbGxiYWNrIHx8IGZ1bmN0aW9u
KCkgeworICB9CisKKyAgdmFyIG5ld0l0ZW0gPSB7CisgICAgdGl0bGU6IHRpdGxlLnRyaW0oKSwK
KyAgICBjb21wbGV0ZWQ6IGZhbHNlCisgIH0KKworICB0aGlzLnN0b3JhZ2Uuc2F2ZShuZXdJdGVt
LCBjYWxsYmFjaykKK30KKworLyoqCisgKiBGaW5kcyBhbmQgcmV0dXJucyBhIG1vZGVsIGluIHN0
b3JhZ2UuIElmIG5vIHF1ZXJ5IGlzIGdpdmVuIGl0J2xsIHNpbXBseQorICogcmV0dXJuIGV2ZXJ5
dGhpbmcuIElmIHlvdSBwYXNzIGluIGEgc3RyaW5nIG9yIG51bWJlciBpdCdsbCBsb29rIHRoYXQg
dXAgYXMKKyAqIHRoZSBJRCBvZiB0aGUgbW9kZWwgdG8gZmluZC4gTGFzdGx5LCB5b3UgY2FuIHBh
c3MgaXQgYW4gb2JqZWN0IHRvIG1hdGNoIGFnYWluc3QuCisgKgorICogQHBhcmFtIHtzdHJpbmd8
bnVtYmVyfG9iamVjdH0gW3F1ZXJ5XSBBIHF1ZXJ5IHRvIG1hdGNoIG1vZGVscyBhZ2FpbnN0Cisg
KiBAcGFyYW0ge2Z1bmN0aW9ufSBbY2FsbGJhY2tdIFRoZSBjYWxsYmFjayB0byBmaXJlIGFmdGVy
IHRoZSBtb2RlbCBpcyBmb3VuZAorICoKKyAqIEBleGFtcGxlCisgKiBtb2RlbC5yZWFkKDEsIGZ1
bmMpOyAvLyBXaWxsIGZpbmQgdGhlIG1vZGVsIHdpdGggYW4gSUQgb2YgMQorICogbW9kZWwucmVh
ZCgnMScpOyAvLyBTYW1lIGFzIGFib3ZlCisgKiAvL0JlbG93IHdpbGwgZmluZCBhIG1vZGVsIHdp
dGggZm9vIGVxdWFsbGluZyBiYXIgYW5kIGhlbGxvIGVxdWFsbGluZyB3b3JsZC4KKyAqIG1vZGVs
LnJlYWQoeyBmb286ICdiYXInLCBoZWxsbzogJ3dvcmxkJyB9KTsKKyAqLworTW9kZWwucHJvdG90
eXBlLnJlYWQgPSBmdW5jdGlvbihxdWVyeSwgY2FsbGJhY2spIHsKKyAgdmFyIHF1ZXJ5VHlwZSA9
IHR5cGVvZiBxdWVyeQorICBjYWxsYmFjayA9IGNhbGxiYWNrIHx8IGZ1bmN0aW9uKCkgeworICB9
CisKKyAgaWYgKHF1ZXJ5VHlwZSA9PT0gJ2Z1bmN0aW9uJykgeworICAgIGNhbGxiYWNrID0gcXVl
cnkKKyAgICByZXR1cm4gdGhpcy5zdG9yYWdlLmZpbmRBbGwoY2FsbGJhY2spCisgIH0gZWxzZSBp
ZiAocXVlcnlUeXBlID09PSAnc3RyaW5nJyB8fCBxdWVyeVR5cGUgPT09ICdudW1iZXInKSB7Cisg
ICAgcXVlcnkgPSBwYXJzZUludChxdWVyeSwgMTApCisgICAgdGhpcy5zdG9yYWdlLmZpbmQoe2lk
OiBxdWVyeX0sIGNhbGxiYWNrKQorICB9IGVsc2UgeworICAgIHRoaXMuc3RvcmFnZS5maW5kKHF1
ZXJ5LCBjYWxsYmFjaykKKyAgfQorICByZXR1cm4gdW5kZWZpbmVkCit9CisKKy8qKgorKiBVcGRh
dGVzIGEgbW9kZWwgYnkgZ2l2aW5nIGl0IGFuIElELCBkYXRhIHRvIHVwZGF0ZSwgYW5kIGEgY2Fs
bGJhY2sgdG8gZmlyZSB3aGVuCisqIHRoZSB1cGRhdGUgaXMgY29tcGxldGUuCisqCisqIEBwYXJh
bSB7bnVtYmVyfSBpZCBUaGUgaWQgb2YgdGhlIG1vZGVsIHRvIHVwZGF0ZQorKiBAcGFyYW0ge29i
amVjdH0gZGF0YSBUaGUgcHJvcGVydGllcyB0byB1cGRhdGUgYW5kIHRoZWlyIG5ldyB2YWx1ZQor
KiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgdG8gZmlyZSB3aGVuIHRo
ZSB1cGRhdGUgaXMgY29tcGxldGUuCisqLworTW9kZWwucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0
aW9uKGlkLCBkYXRhLCBjYWxsYmFjaykgeworICB0aGlzLnN0b3JhZ2Uuc2F2ZShkYXRhLCBjYWxs
YmFjaywgaWQpCit9CisKKy8qKgorKiBSZW1vdmVzIGEgbW9kZWwgZnJvbSBzdG9yYWdlCisqCisq
IEBwYXJhbSB7bnVtYmVyfSBpZCBUaGUgSUQgb2YgdGhlIG1vZGVsIHRvIHJlbW92ZQorKiBAcGFy
YW0ge2Z1bmN0aW9ufSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgdG8gZmlyZSB3aGVuIHRoZSByZW1v
dmFsIGlzIGNvbXBsZXRlLgorKi8KK01vZGVsLnByb3RvdHlwZS5yZW1vdmUgPSBmdW5jdGlvbihp
ZCwgY2FsbGJhY2spIHsKKyAgdGhpcy5zdG9yYWdlLnJlbW92ZShpZCwgY2FsbGJhY2spCit9CisK
Ky8qKgorKiBXQVJOSU5HOiBXaWxsIHJlbW92ZSBBTEwgZGF0YSBmcm9tIHN0b3JhZ2UuCisqCisq
IEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIFRoZSBjYWxsYmFjayB0byBmaXJlIHdoZW4gdGhl
IHN0b3JhZ2UgaXMgd2lwZWQuCisqLworTW9kZWwucHJvdG90eXBlLnJlbW92ZUFsbCA9IGZ1bmN0
aW9uKGNhbGxiYWNrKSB7CisgIHRoaXMuc3RvcmFnZS5kcm9wKGNhbGxiYWNrKQorfQorCisvKioK
KyogUmV0dXJucyBhIGNvdW50IG9mIGFsbCB0b2RvcworKi8KK01vZGVsLnByb3RvdHlwZS5nZXRD
b3VudCA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7CisgIHZhciB0b2RvcyA9IHsKKyAgICBhY3RpdmU6
IDAsCisgICAgY29tcGxldGVkOiAwLAorICAgIHRvdGFsOiAwCisgIH0KKworICB0aGlzLnN0b3Jh
Z2UuZmluZEFsbChmdW5jdGlvbihkYXRhKSB7CisgICAgZGF0YS5mb3JFYWNoKGZ1bmN0aW9uKHRv
ZG8pIHsKKyAgICAgIGlmICh0b2RvLmNvbXBsZXRlZCkgeworICAgICAgICB0b2Rvcy5jb21wbGV0
ZWQrKworICAgICAgfSBlbHNlIHsKKyAgICAgICAgdG9kb3MuYWN0aXZlKysKKyAgICAgIH0KKwor
ICAgICAgdG9kb3MudG90YWwrKworICAgIH0pCisgICAgY2FsbGJhY2sodG9kb3MpCisgIH0pCit9
CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svc3JjL3N0b3JlLmpzIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4
YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL3NyYy9zdG9yZS5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jM2I5
N2MyMDdmOTlmZDQzZTA2ZGUzYTA2MmM1M2MyYTRiNTg5YjM0Ci0tLSAvZGV2L251bGwKKysrIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4
YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL3NyYy9zdG9yZS5qcwpAQCAtMCwwICsxLDE1MCBA
QAoraW1wb3J0IHtyZW1vdmV9IGZyb20gJy4vaGVscGVycycKK2V4cG9ydCBkZWZhdWx0IFN0b3Jl
CisKKy8qKgorICogQ3JlYXRlcyBhIG5ldyBjbGllbnQgc2lkZSBzdG9yYWdlIG9iamVjdCBhbmQg
d2lsbCBjcmVhdGUgYW4gZW1wdHkKKyAqIGNvbGxlY3Rpb24gaWYgbm8gY29sbGVjdGlvbiBhbHJl
YWR5IGV4aXN0cy4KKyAqCisgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbmFtZSBvZiBvdXIg
REIgd2Ugd2FudCB0byB1c2UKKyAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIE91ciBmYWtl
IERCIHVzZXMgY2FsbGJhY2tzIGJlY2F1c2UgaW4KKyAqIHJlYWwgbGlmZSB5b3UgcHJvYmFibHkg
d291bGQgYmUgbWFraW5nIEFKQVggY2FsbHMKKyAqLworZnVuY3Rpb24gU3RvcmUobmFtZSwgY2Fs
bGJhY2spIHsKKyAgY2FsbGJhY2sgPSBjYWxsYmFjayB8fCBmdW5jdGlvbigpIHsKKyAgfQorCisg
IHRoaXMuX2RiTmFtZSA9IG5hbWUKKworICBpZiAoIWxvY2FsU3RvcmFnZVtuYW1lXSkgeworICAg
IHZhciBkYXRhID0geworICAgICAgdG9kb3M6IFtdCisgICAgfQorCisgICAgbG9jYWxTdG9yYWdl
W25hbWVdID0gSlNPTi5zdHJpbmdpZnkoZGF0YSkKKyAgfQorCisgIGNhbGxiYWNrLmNhbGwodGhp
cywgSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2VbbmFtZV0pKQorICB0aGlzLnN1YnNjcmliZXJzID0g
W10KK30KKworU3RvcmUucHJvdG90eXBlLnN1YnNjcmliZSA9IGZ1bmN0aW9uKHN1YnNjcmliZXIp
IHsKKyAgdGhpcy5zdWJzY3JpYmVycy5wdXNoKHN1YnNjcmliZXIpCisgIHJldHVybiAoKSA9PiBy
ZW1vdmUodGhpcy5zdWJzY3JpYmVycywgc3Vic2NyaWJlcikKK30KKworU3RvcmUucHJvdG90eXBl
Ll9ub3RpZnkgPSBmdW5jdGlvbigpIHsKKyAgdGhpcy5zdWJzY3JpYmVycy5mb3JFYWNoKHMgPT4g
cygpKQorfQorCisvKioKKyogRmluZHMgaXRlbXMgYmFzZWQgb24gYSBxdWVyeSBnaXZlbiBhcyBh
IEpTIG9iamVjdAorKgorKiBAcGFyYW0ge29iamVjdH0gcXVlcnkgVGhlIHF1ZXJ5IHRvIG1hdGNo
IGFnYWluc3QgKGkuZS4ge2ZvbzogJ2Jhcid9KQorKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFj
ayAgIFRoZSBjYWxsYmFjayB0byBmaXJlIHdoZW4gdGhlIHF1ZXJ5IGhhcworKiBjb21wbGV0ZWQg
cnVubmluZworKgorKiBAZXhhbXBsZQorKiBkYi5maW5kKHtmb286ICdiYXInLCBoZWxsbzogJ3dv
cmxkJ30sIGZ1bmN0aW9uIChkYXRhKSB7CisqICAgLy8gZGF0YSB3aWxsIHJldHVybiBhbnkgaXRl
bXMgdGhhdCBoYXZlIGZvbzogYmFyIGFuZAorKiAgIC8vIGhlbGxvOiB3b3JsZCBpbiB0aGVpciBw
cm9wZXJ0aWVzCisqIH0pOworKi8KK1N0b3JlLnByb3RvdHlwZS5maW5kID0gZnVuY3Rpb24ocXVl
cnksIGNhbGxiYWNrKSB7CisgIGlmICghY2FsbGJhY2spIHsKKyAgICByZXR1cm4KKyAgfQorCisg
IHZhciB0b2RvcyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlW3RoaXMuX2RiTmFtZV0pLnRvZG9z
CisKKyAgY2FsbGJhY2suY2FsbCh0aGlzLCB0b2Rvcy5maWx0ZXIoZnVuY3Rpb24odG9kbykgewor
ICAgIGZvciAodmFyIHEgaW4gcXVlcnkpIHsKKyAgICAgIGlmIChxdWVyeVtxXSAhPT0gdG9kb1tx
XSkgeworICAgICAgICByZXR1cm4gZmFsc2UKKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHRy
dWUKKyAgfSkpCit9CisKKy8qKgorKiBXaWxsIHJldHJpZXZlIGFsbCBkYXRhIGZyb20gdGhlIGNv
bGxlY3Rpb24KKyoKKyogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGNhbGxiYWNrIHRv
IGZpcmUgdXBvbiByZXRyaWV2aW5nIGRhdGEKKyovCitTdG9yZS5wcm90b3R5cGUuZmluZEFsbCA9
IGZ1bmN0aW9uKGNhbGxiYWNrKSB7CisgIGNhbGxiYWNrID0gY2FsbGJhY2sgfHwgZnVuY3Rpb24o
KSB7CisgIH0KKyAgY2FsbGJhY2suY2FsbCh0aGlzLCBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZVt0
aGlzLl9kYk5hbWVdKS50b2RvcykKK30KKworLyoqCisqIFdpbGwgc2F2ZSB0aGUgZ2l2ZW4gZGF0
YSB0byB0aGUgREIuIElmIG5vIGl0ZW0gZXhpc3RzIGl0IHdpbGwgY3JlYXRlIGEgbmV3CisqIGl0
ZW0sIG90aGVyd2lzZSBpdCdsbCBzaW1wbHkgdXBkYXRlIGFuIGV4aXN0aW5nIGl0ZW0ncyBwcm9w
ZXJ0aWVzCisqCisqIEBwYXJhbSB7b2JqZWN0fSB1cGRhdGVEYXRhIFRoZSBkYXRhIHRvIHNhdmUg
YmFjayBpbnRvIHRoZSBEQgorKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayBUaGUgY2FsbGJh
Y2sgdG8gZmlyZSBhZnRlciBzYXZpbmcKKyogQHBhcmFtIHtudW1iZXJ9IGlkIEFuIG9wdGlvbmFs
IHBhcmFtIHRvIGVudGVyIGFuIElEIG9mIGFuIGl0ZW0gdG8gdXBkYXRlCisqLworU3RvcmUucHJv
dG90eXBlLnNhdmUgPSBmdW5jdGlvbih1cGRhdGVEYXRhLCBjYWxsYmFjaywgaWQpIHsKKyAgdmFy
IGRhdGEgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZVt0aGlzLl9kYk5hbWVdKQorICB2YXIgdG9k
b3MgPSBkYXRhLnRvZG9zCisKKyAgY2FsbGJhY2sgPSBjYWxsYmFjayB8fCBmdW5jdGlvbigpIHsK
KyAgfQorCisgIC8vIElmIGFuIElEIHdhcyBhY3R1YWxseSBnaXZlbiwgZmluZCB0aGUgaXRlbSBh
bmQgdXBkYXRlIGVhY2ggcHJvcGVydHkKKyAgaWYgKGlkKSB7CisgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCB0b2Rvcy5sZW5ndGg7IGkrKykgeworICAgICAgaWYgKHRvZG9zW2ldLmlkID09PSBpZCkg
eworICAgICAgICBmb3IgKHZhciBrZXkgaW4gdXBkYXRlRGF0YSkgeyAvLyBlc2xpbnQtZGlzYWJs
ZS1saW5lIGd1YXJkLWZvci1pbgorICAgICAgICAgIHRvZG9zW2ldW2tleV0gPSB1cGRhdGVEYXRh
W2tleV0KKyAgICAgICAgfQorICAgICAgICBicmVhaworICAgICAgfQorICAgIH0KKworICAgIGxv
Y2FsU3RvcmFnZVt0aGlzLl9kYk5hbWVdID0gSlNPTi5zdHJpbmdpZnkoZGF0YSkKKyAgICBjYWxs
YmFjay5jYWxsKHRoaXMsIEpTT04ucGFyc2UobG9jYWxTdG9yYWdlW3RoaXMuX2RiTmFtZV0pLnRv
ZG9zKQorICB9IGVsc2UgeworICAgIC8vIEdlbmVyYXRlIGFuIElECisgICAgdXBkYXRlRGF0YS5p
ZCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpCisKKyAgICB0b2Rvcy5wdXNoKHVwZGF0ZURhdGEpCisg
ICAgbG9jYWxTdG9yYWdlW3RoaXMuX2RiTmFtZV0gPSBKU09OLnN0cmluZ2lmeShkYXRhKQorICAg
IGNhbGxiYWNrLmNhbGwodGhpcywgW3VwZGF0ZURhdGFdKQorICB9CisgIHRoaXMuX25vdGlmeSgp
Cit9CisKKy8qKgorKiBXaWxsIHJlbW92ZSBhbiBpdGVtIGZyb20gdGhlIFN0b3JlIGJhc2VkIG9u
IGl0cyBJRAorKgorKiBAcGFyYW0ge251bWJlcn0gaWQgVGhlIElEIG9mIHRoZSBpdGVtIHlvdSB3
YW50IHRvIHJlbW92ZQorKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayBUaGUgY2FsbGJhY2sg
dG8gZmlyZSBhZnRlciBzYXZpbmcKKyovCitTdG9yZS5wcm90b3R5cGUucmVtb3ZlID0gZnVuY3Rp
b24oaWQsIGNhbGxiYWNrKSB7CisgIHZhciBkYXRhID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2Vb
dGhpcy5fZGJOYW1lXSkKKyAgdmFyIHRvZG9zID0gZGF0YS50b2RvcworCisgIGZvciAodmFyIGkg
PSAwOyBpIDwgdG9kb3MubGVuZ3RoOyBpKyspIHsKKyAgICBpZiAodG9kb3NbaV0uaWQgPT09IGlk
KSB7CisgICAgICB0b2Rvcy5zcGxpY2UoaSwgMSkKKyAgICAgIGJyZWFrCisgICAgfQorICB9CisK
KyAgbG9jYWxTdG9yYWdlW3RoaXMuX2RiTmFtZV0gPSBKU09OLnN0cmluZ2lmeShkYXRhKQorICBj
YWxsYmFjay5jYWxsKHRoaXMsIEpTT04ucGFyc2UobG9jYWxTdG9yYWdlW3RoaXMuX2RiTmFtZV0p
LnRvZG9zKQorICB0aGlzLl9ub3RpZnkoKQorfQorCisvKioKKyogV2lsbCBkcm9wIGFsbCBzdG9y
YWdlIGFuZCBzdGFydCBmcmVzaAorKgorKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayBUaGUg
Y2FsbGJhY2sgdG8gZmlyZSBhZnRlciBkcm9wcGluZyB0aGUgZGF0YQorKi8KK1N0b3JlLnByb3Rv
dHlwZS5kcm9wID0gZnVuY3Rpb24oY2FsbGJhY2spIHsKKyAgbG9jYWxTdG9yYWdlW3RoaXMuX2Ri
TmFtZV0gPSBKU09OLnN0cmluZ2lmeSh7dG9kb3M6IFtdfSkKKyAgY2FsbGJhY2suY2FsbCh0aGlz
LCBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZVt0aGlzLl9kYk5hbWVdKS50b2RvcykKKyAgdGhpcy5f
bm90aWZ5KCkKK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9zcmMv
dGVtcGxhdGUuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svc3JjL3RlbXBsYXRlLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjYwYzRmNmZjODQ3MDhmN2NjMzhjNmNjYTRkZmJmYjNkZWU5ZDRhZWYKLS0t
IC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svc3JjL3RlbXBsYXRl
LmpzCkBAIC0wLDAgKzEsMTEwIEBACitleHBvcnQgZGVmYXVsdCBUZW1wbGF0ZQorCit2YXIgaHRt
bEVzY2FwZXMgPSB7CisgICcmJzogJyZhbXA7JywKKyAgJzwnOiAnJmx0OycsCisgICc+JzogJyZn
dDsnLAorICAnIic6ICcmcXVvdDsnLAorICAnXCcnOiAnJiN4Mjc7JywKKyAgJ2AnOiAnJiN4NjA7
JworfQorCit2YXIgZXNjYXBlSHRtbENoYXIgPSBmdW5jdGlvbihjaHIpIHsKKyAgcmV0dXJuIGh0
bWxFc2NhcGVzW2Nocl0KK30KKwordmFyIHJlVW5lc2NhcGVkSHRtbCA9IC9bJjw+IidgXS9nCit2
YXIgcmVIYXNVbmVzY2FwZWRIdG1sID0gbmV3IFJlZ0V4cChyZVVuZXNjYXBlZEh0bWwuc291cmNl
KQorCit2YXIgZXNjYXBlID0gZnVuY3Rpb24oc3RyaW5nKSB7CisgIGlmIChzdHJpbmcgJiYgcmVI
YXNVbmVzY2FwZWRIdG1sLnRlc3Qoc3RyaW5nKSkgeworICAgIHJldHVybiBzdHJpbmcucmVwbGFj
ZShyZVVuZXNjYXBlZEh0bWwsIGVzY2FwZUh0bWxDaGFyKQorICB9IGVsc2UgeworICAgIHJldHVy
biBzdHJpbmcKKyAgfQorfQorCisvKioKKyogU2V0cyB1cCBkZWZhdWx0cyBmb3IgYWxsIHRoZSBU
ZW1wbGF0ZSBtZXRob2RzIHN1Y2ggYXMgYSBkZWZhdWx0IHRlbXBsYXRlCisqCisqIEBjb25zdHJ1
Y3RvcgorKi8KK2Z1bmN0aW9uIFRlbXBsYXRlKCkgeworICB0aGlzLmRlZmF1bHRUZW1wbGF0ZSA9
IGAKKyAgICA8bGkgZGF0YS1pZD0ie3tpZH19IiBjbGFzcz0ie3tjb21wbGV0ZWR9fSI+CisgICAg
ICA8ZGl2IGNsYXNzPSJ2aWV3Ij4KKyAgICAgICAgPGlucHV0IGNsYXNzPSJ0b2dnbGUiIHR5cGU9
ImNoZWNrYm94IiB7e2NoZWNrZWR9fSAvPgorICAgICAgICA8bGFiZWw+e3t0aXRsZX19PC9sYWJl
bD4KKyAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZGVzdHJveSI+PC9idXR0b24+CisgICAgICA8L2Rp
dj4KKyAgICA8L2xpPgorICBgCit9CisKKy8qKgorICogQ3JlYXRlcyBhbiA8bGk+IEhUTUwgc3Ry
aW5nIGFuZCByZXR1cm5zIGl0IGZvciBwbGFjZW1lbnQgaW4geW91ciBhcHAuCisgKgorICogTk9U
RTogSW4gcmVhbCBsaWZlIHlvdSBzaG91bGQgYmUgdXNpbmcgYSB0ZW1wbGF0aW5nIGVuZ2luZSBz
dWNoIGFzIE11c3RhY2hlCisgKiBvciBIYW5kbGViYXJzLCBob3dldmVyLCB0aGlzIGlzIGEgdmFu
aWxsYSBKUyBleGFtcGxlLgorICoKKyAqIEBwYXJhbSB7b2JqZWN0fSBkYXRhIFRoZSBvYmplY3Qg
Y29udGFpbmluZyBrZXlzIHlvdSB3YW50IHRvIGZpbmQgaW4gdGhlCisgKiAgICAgICAgICAgICAg
ICAgICAgICB0ZW1wbGF0ZSB0byByZXBsYWNlLgorICogQHJldHVybnMge3N0cmluZ30gSFRNTCBT
dHJpbmcgb2YgYW4gPGxpPiBlbGVtZW50CisgKgorICogQGV4YW1wbGUKKyAqIHZpZXcuc2hvdyh7
CisgKiAgaWQ6IDEsCisgKiAgdGl0bGU6ICJIZWxsbyBXb3JsZCIsCisgKiAgY29tcGxldGVkOiAw
LAorICogfSk7CisgKi8KK1RlbXBsYXRlLnByb3RvdHlwZS5zaG93ID0gZnVuY3Rpb24oZGF0YSkg
eworICB2YXIgaSwgbAorICB2YXIgdmlldyA9ICcnCisKKyAgZm9yIChpID0gMCwgbCA9IGRhdGEu
bGVuZ3RoOyBpIDwgbDsgaSsrKSB7CisgICAgdmFyIHRlbXBsYXRlID0gdGhpcy5kZWZhdWx0VGVt
cGxhdGUKKyAgICB2YXIgY29tcGxldGVkID0gJycKKyAgICB2YXIgY2hlY2tlZCA9ICcnCisKKyAg
ICBpZiAoZGF0YVtpXS5jb21wbGV0ZWQpIHsKKyAgICAgIGNvbXBsZXRlZCA9ICdjb21wbGV0ZWQn
CisgICAgICBjaGVja2VkID0gJ2NoZWNrZWQnCisgICAgfQorCisgICAgdGVtcGxhdGUgPSB0ZW1w
bGF0ZS5yZXBsYWNlKCd7e2lkfX0nLCBkYXRhW2ldLmlkKQorICAgIHRlbXBsYXRlID0gdGVtcGxh
dGUucmVwbGFjZSgne3t0aXRsZX19JywgZXNjYXBlKGRhdGFbaV0udGl0bGUpKQorICAgIHRlbXBs
YXRlID0gdGVtcGxhdGUucmVwbGFjZSgne3tjb21wbGV0ZWR9fScsIGNvbXBsZXRlZCkKKyAgICB0
ZW1wbGF0ZSA9IHRlbXBsYXRlLnJlcGxhY2UoJ3t7Y2hlY2tlZH19JywgY2hlY2tlZCkKKworICAg
IHZpZXcgPSB2aWV3ICsgdGVtcGxhdGUKKyAgfQorCisgIHJldHVybiB2aWV3Cit9CisKKy8qKgor
ICogRGlzcGxheXMgYSBjb3VudGVyIG9mIGhvdyBtYW55IHRvIGRvcyBhcmUgbGVmdCB0byBjb21w
bGV0ZQorICoKKyAqIEBwYXJhbSB7bnVtYmVyfSBhY3RpdmVUb2RvcyBUaGUgbnVtYmVyIG9mIGFj
dGl2ZSB0b2Rvcy4KKyAqIEByZXR1cm5zIHtzdHJpbmd9IFN0cmluZyBjb250YWluaW5nIHRoZSBj
b3VudAorICovCitUZW1wbGF0ZS5wcm90b3R5cGUuaXRlbUNvdW50ZXIgPSBmdW5jdGlvbihhY3Rp
dmVUb2RvcykgeworICB2YXIgcGx1cmFsID0gYWN0aXZlVG9kb3MgPT09IDEgPyAnJyA6ICdzJwor
CisgIHJldHVybiAnPHN0cm9uZz4nICsgYWN0aXZlVG9kb3MgKyAnPC9zdHJvbmc+IGl0ZW0nICsg
cGx1cmFsICsgJyBsZWZ0JworfQorCisvKioKKyAqIFVwZGF0ZXMgdGhlIHRleHQgd2l0aGluIHRo
ZSAiQ2xlYXIgY29tcGxldGVkIiBidXR0b24KKyAqCisgKiBAcGFyYW0gIHtbdHlwZV19IGNvbXBs
ZXRlZFRvZG9zIFRoZSBudW1iZXIgb2YgY29tcGxldGVkIHRvZG9zLgorICogQHJldHVybnMge3N0
cmluZ30gU3RyaW5nIGNvbnRhaW5pbmcgdGhlIGNvdW50CisgKi8KK1RlbXBsYXRlLnByb3RvdHlw
ZS5jbGVhckNvbXBsZXRlZEJ1dHRvbiA9IGZ1bmN0aW9uKGNvbXBsZXRlZFRvZG9zKSB7CisgIGlm
IChjb21wbGV0ZWRUb2RvcyA+IDApIHsKKyAgICByZXR1cm4gJ0NsZWFyIGNvbXBsZXRlZCcKKyAg
fSBlbHNlIHsKKyAgICByZXR1cm4gJycKKyAgfQorfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAx
NS1iYWJlbC13ZWJwYWNrL3NyYy90b2RvLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNr
L3NyYy90b2RvLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1MWNmMzYxYWEzNWUyMzRkMmIyNjdlODY2N2ViMGE4
Nzg2NGJmNjYKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2sv
c3JjL3RvZG8uanMKQEAgLTAsMCArMSw0MSBAQAoraW1wb3J0IFZpZXcgZnJvbSAnLi92aWV3Jwor
aW1wb3J0IENvbnRyb2xsZXIgZnJvbSAnLi9jb250cm9sbGVyJworaW1wb3J0IE1vZGVsIGZyb20g
Jy4vbW9kZWwnCitpbXBvcnQgU3RvcmUgZnJvbSAnLi9zdG9yZScKK2ltcG9ydCBUZW1wbGF0ZSBm
cm9tICcuL3RlbXBsYXRlJworaW1wb3J0IHtyZW1vdmV9IGZyb20gJy4vaGVscGVycycKKworZXhw
b3J0IHt1cGRhdGVUb2RvLCBnZXRUb2RvLCBzdWJzY3JpYmV9CisKK2xldCB0b2RvCitjb25zdCBz
dWJzY3JpYmVycyA9IFtdCisKKy8qKgorICogU2V0cyB1cCBhIGJyYW5kIG5ldyBUb2RvIGxpc3Qu
CisgKgorICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG5hbWUgb2YgeW91ciBuZXcgdG8gZG8g
bGlzdC4KKyAqLworZnVuY3Rpb24gVG9kbyhuYW1lKSB7CisgIHRoaXMuc3RvcmFnZSA9IG5ldyBT
dG9yZShuYW1lKQorICB0aGlzLm1vZGVsID0gbmV3IE1vZGVsKHRoaXMuc3RvcmFnZSkKKyAgdGhp
cy50ZW1wbGF0ZSA9IG5ldyBUZW1wbGF0ZSgpCisgIHRoaXMudmlldyA9IG5ldyBWaWV3KHRoaXMu
dGVtcGxhdGUpCisgIHRoaXMuY29udHJvbGxlciA9IG5ldyBDb250cm9sbGVyKHRoaXMubW9kZWws
IHRoaXMudmlldykKK30KKworZnVuY3Rpb24gdXBkYXRlVG9kbygpIHsKKyAgdG9kbyA9IG5ldyBU
b2RvKCd0b2Rvcy12YW5pbGxhanMnKQorICB0b2RvLmNvbnRyb2xsZXIuc2V0Vmlldyhkb2N1bWVu
dC5sb2NhdGlvbi5oYXNoKQorICBzdWJzY3JpYmVycy5mb3JFYWNoKHMgPT4gcygpKQorfQorCitm
dW5jdGlvbiBnZXRUb2RvKCkgeworICByZXR1cm4gdG9kbworfQorCitmdW5jdGlvbiBzdWJzY3Jp
YmUoY2IpIHsKKyAgc3Vic2NyaWJlcnMucHVzaChjYikKKyAgcmV0dXJuIGZ1bmN0aW9uIHVuc3Vi
c2NyaWJlKCkgeworICAgIHJlbW92ZShzdWJzY3JpYmVycywgY2IpCisgIH0KK30KZGlmZiAtLWdp
dCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxs
YS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9zcmMvdmlldy5qcyBiL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIw
MTUtYmFiZWwtd2VicGFjay9zcmMvdmlldy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMTVlZDVjNWQyNWU2YjBh
YTA2ZjcyN2YxYTc4YTdkMGJhMTBmZTIxCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAx
NS1iYWJlbC13ZWJwYWNrL3NyYy92aWV3LmpzCkBAIC0wLDAgKzEsMjE0IEBACisvKiBlc2xpbnQg
bm8taW52YWxpZC10aGlzOiAwLCBjb21wbGV4aXR5OlsyLCA5XSAqLworaW1wb3J0IHtxcywgcXNh
LCAkb24sICRwYXJlbnQsICRkZWxlZ2F0ZX0gZnJvbSAnLi9oZWxwZXJzJworCisvKioKKyAqIFZp
ZXcgdGhhdCBhYnN0cmFjdHMgYXdheSB0aGUgYnJvd3NlcidzIERPTSBjb21wbGV0ZWx5LgorICog
SXQgaGFzIHR3byBzaW1wbGUgZW50cnkgcG9pbnRzOgorICoKKyAqICAgLSBiaW5kKGV2ZW50TmFt
ZSwgaGFuZGxlcikKKyAqICAgICBUYWtlcyBhIHRvZG8gYXBwbGljYXRpb24gZXZlbnQgYW5kIHJl
Z2lzdGVycyB0aGUgaGFuZGxlcgorICogICAtIHJlbmRlcihjb21tYW5kLCBwYXJhbWV0ZXJPYmpl
Y3QpCisgKiAgICAgUmVuZGVycyB0aGUgZ2l2ZW4gY29tbWFuZCB3aXRoIHRoZSBvcHRpb25zCisg
Ki8KK2V4cG9ydCBkZWZhdWx0IGNsYXNzIFZpZXcgeworICBjb25zdHJ1Y3Rvcih0ZW1wbGF0ZSkg
eworICAgIHRoaXMudGVtcGxhdGUgPSB0ZW1wbGF0ZQorCisgICAgdGhpcy5FTlRFUl9LRVkgPSAx
MworICAgIHRoaXMuRVNDQVBFX0tFWSA9IDI3CisKKyAgICB0aGlzLiR0b2RvTGlzdCA9IHFzKCcu
dG9kby1saXN0JykKKyAgICB0aGlzLiR0b2RvSXRlbUNvdW50ZXIgPSBxcygnLnRvZG8tY291bnQn
KQorICAgIHRoaXMuJGNsZWFyQ29tcGxldGVkID0gcXMoJy5jbGVhci1jb21wbGV0ZWQnKQorICAg
IHRoaXMuJG1haW4gPSBxcygnLm1haW4nKQorICAgIHRoaXMuJGZvb3RlciA9IHFzKCcuZm9vdGVy
JykKKyAgICB0aGlzLiR0b2dnbGVBbGwgPSBxcygnLnRvZ2dsZS1hbGwnKQorICAgIHRoaXMuJG5l
d1RvZG8gPSBxcygnLm5ldy10b2RvJykKKyAgfQorCisgIF9yZW1vdmVJdGVtKGlkKSB7CisgICAg
dmFyIGVsZW0gPSBxcygnW2RhdGEtaWQ9IicgKyBpZCArICciXScpCisKKyAgICBpZiAoZWxlbSkg
eworICAgICAgdGhpcy4kdG9kb0xpc3QucmVtb3ZlQ2hpbGQoZWxlbSkKKyAgICB9CisgIH0KKwor
ICBfY2xlYXJDb21wbGV0ZWRCdXR0b24oY29tcGxldGVkQ291bnQsIHZpc2libGUpIHsKKyAgICB0
aGlzLiRjbGVhckNvbXBsZXRlZC5pbm5lckhUTUwgPSB0aGlzLnRlbXBsYXRlLmNsZWFyQ29tcGxl
dGVkQnV0dG9uKGNvbXBsZXRlZENvdW50KQorICAgIHRoaXMuJGNsZWFyQ29tcGxldGVkLnN0eWxl
LmRpc3BsYXkgPSB2aXNpYmxlID8gJ2Jsb2NrJyA6ICdub25lJworICB9CisKKyAgX2VkaXRJdGVt
RG9uZShpZCwgdGl0bGUpIHsKKyAgICB2YXIgbGlzdEl0ZW0gPSBxcygnW2RhdGEtaWQ9IicgKyBp
ZCArICciXScpCisKKyAgICBpZiAoIWxpc3RJdGVtKSB7CisgICAgICByZXR1cm4KKyAgICB9CisK
KyAgICB2YXIgaW5wdXQgPSBxcygnaW5wdXQuZWRpdCcsIGxpc3RJdGVtKQorICAgIGxpc3RJdGVt
LnJlbW92ZUNoaWxkKGlucHV0KQorCisgICAgbGlzdEl0ZW0uY2xhc3NOYW1lID0gbGlzdEl0ZW0u
Y2xhc3NOYW1lLnJlcGxhY2UoJ2VkaXRpbmcnLCAnJykKKworICAgIHFzYSgnbGFiZWwnLCBsaXN0
SXRlbSkuZm9yRWFjaChmdW5jdGlvbihsYWJlbCkgeworICAgICAgbGFiZWwudGV4dENvbnRlbnQg
PSB0aXRsZQorICAgIH0pCisgIH0KKworICByZW5kZXIodmlld0NtZCwgcGFyYW1ldGVyKSB7Cisg
ICAgdmFyIHRoYXQgPSB0aGlzCisgICAgdmFyIHZpZXdDb21tYW5kcyA9IHsKKyAgICAgIHNob3dF
bnRyaWVzOiBmdW5jdGlvbigpIHsKKyAgICAgICAgdGhhdC4kdG9kb0xpc3QuaW5uZXJIVE1MID0g
dGhhdC50ZW1wbGF0ZS5zaG93KHBhcmFtZXRlcikKKyAgICAgIH0sCisgICAgICByZW1vdmVJdGVt
OiBmdW5jdGlvbigpIHsKKyAgICAgICAgdGhhdC5fcmVtb3ZlSXRlbShwYXJhbWV0ZXIpCisgICAg
ICB9LAorICAgICAgdXBkYXRlRWxlbWVudENvdW50OiBmdW5jdGlvbigpIHsKKyAgICAgICAgdGhh
dC4kdG9kb0l0ZW1Db3VudGVyLmlubmVySFRNTCA9IHRoYXQudGVtcGxhdGUuaXRlbUNvdW50ZXIo
cGFyYW1ldGVyKQorICAgICAgfSwKKyAgICAgIGNsZWFyQ29tcGxldGVkQnV0dG9uOiBmdW5jdGlv
bigpIHsKKyAgICAgICAgdGhhdC5fY2xlYXJDb21wbGV0ZWRCdXR0b24ocGFyYW1ldGVyLmNvbXBs
ZXRlZCwgcGFyYW1ldGVyLnZpc2libGUpCisgICAgICB9LAorICAgICAgY29udGVudEJsb2NrVmlz
aWJpbGl0eTogZnVuY3Rpb24oKSB7CisgICAgICAgIHRoYXQuJG1haW4uc3R5bGUuZGlzcGxheSA9
IHRoYXQuJGZvb3Rlci5zdHlsZS5kaXNwbGF5ID0gcGFyYW1ldGVyLnZpc2libGUgPyAnYmxvY2sn
IDogJ25vbmUnCisgICAgICB9LAorICAgICAgdG9nZ2xlQWxsOiBmdW5jdGlvbigpIHsKKyAgICAg
ICAgdGhhdC4kdG9nZ2xlQWxsLmNoZWNrZWQgPSBwYXJhbWV0ZXIuY2hlY2tlZAorICAgICAgfSwK
KyAgICAgIHNldEZpbHRlcjogZnVuY3Rpb24oKSB7CisgICAgICAgIF9zZXRGaWx0ZXIocGFyYW1l
dGVyKQorICAgICAgfSwKKyAgICAgIGNsZWFyTmV3VG9kbzogZnVuY3Rpb24oKSB7CisgICAgICAg
IHRoYXQuJG5ld1RvZG8udmFsdWUgPSAnJworICAgICAgfSwKKyAgICAgIGVsZW1lbnRDb21wbGV0
ZTogZnVuY3Rpb24oKSB7CisgICAgICAgIF9lbGVtZW50Q29tcGxldGUocGFyYW1ldGVyLmlkLCBw
YXJhbWV0ZXIuY29tcGxldGVkKQorICAgICAgfSwKKyAgICAgIGVkaXRJdGVtOiBmdW5jdGlvbigp
IHsKKyAgICAgICAgX2VkaXRJdGVtKHBhcmFtZXRlci5pZCwgcGFyYW1ldGVyLnRpdGxlKQorICAg
ICAgfSwKKyAgICAgIGVkaXRJdGVtRG9uZTogZnVuY3Rpb24oKSB7CisgICAgICAgIHRoYXQuX2Vk
aXRJdGVtRG9uZShwYXJhbWV0ZXIuaWQsIHBhcmFtZXRlci50aXRsZSkKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2aWV3Q29tbWFuZHNbdmlld0NtZF0oKQorICB9CisKKyAgX2JpbmRJdGVtRWRpdERv
bmUoaGFuZGxlcikgeworICAgIHZhciB0aGF0ID0gdGhpcworICAgICRkZWxlZ2F0ZSh0aGF0LiR0
b2RvTGlzdCwgJ2xpIC5lZGl0JywgJ2JsdXInLCBmdW5jdGlvbigpIHsKKyAgICAgIGlmICghdGhp
cy5kYXRhc2V0LmlzY2FuY2VsZWQpIHsKKyAgICAgICAgaGFuZGxlcih7CisgICAgICAgICAgaWQ6
IF9pdGVtSWQodGhpcyksCisgICAgICAgICAgdGl0bGU6IHRoaXMudmFsdWUKKyAgICAgICAgfSkK
KyAgICAgIH0KKyAgICB9KQorCisgICAgJGRlbGVnYXRlKHRoYXQuJHRvZG9MaXN0LCAnbGkgLmVk
aXQnLCAna2V5cHJlc3MnLCBmdW5jdGlvbihldmVudCkgeworICAgICAgaWYgKGV2ZW50LmtleUNv
ZGUgPT09IHRoYXQuRU5URVJfS0VZKSB7CisgICAgICAgIC8vIFJlbW92ZSB0aGUgY3Vyc29yIGZy
b20gdGhlIGlucHV0IHdoZW4geW91IGhpdCBlbnRlciBqdXN0IGxpa2UgaWYgaXQKKyAgICAgICAg
Ly8gd2VyZSBhIHJlYWwgZm9ybQorICAgICAgICB0aGlzLmJsdXIoKQorICAgICAgfQorICAgIH0p
CisgIH0KKworICBfYmluZEl0ZW1FZGl0Q2FuY2VsKGhhbmRsZXIpIHsKKyAgICB2YXIgdGhhdCA9
IHRoaXMKKyAgICAkZGVsZWdhdGUodGhhdC4kdG9kb0xpc3QsICdsaSAuZWRpdCcsICdrZXl1cCcs
IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0gdGhhdC5FU0NB
UEVfS0VZKSB7CisgICAgICAgIHRoaXMuZGF0YXNldC5pc2NhbmNlbGVkID0gdHJ1ZQorICAgICAg
ICB0aGlzLmJsdXIoKQorCisgICAgICAgIGhhbmRsZXIoe2lkOiBfaXRlbUlkKHRoaXMpfSkKKyAg
ICAgIH0KKyAgICB9KQorICB9CisKKyAgYmluZChldmVudCwgaGFuZGxlcikgeworICAgIHZhciB0
aGF0ID0gdGhpcworICAgIGlmIChldmVudCA9PT0gJ25ld1RvZG8nKSB7CisgICAgICAkb24odGhh
dC4kbmV3VG9kbywgJ2NoYW5nZScsIGZ1bmN0aW9uKCkgeworICAgICAgICBoYW5kbGVyKHRoYXQu
JG5ld1RvZG8udmFsdWUpCisgICAgICB9KQorCisgICAgfSBlbHNlIGlmIChldmVudCA9PT0gJ3Jl
bW92ZUNvbXBsZXRlZCcpIHsKKyAgICAgICRvbih0aGF0LiRjbGVhckNvbXBsZXRlZCwgJ2NsaWNr
JywgZnVuY3Rpb24oKSB7CisgICAgICAgIGhhbmRsZXIoKQorICAgICAgfSkKKworICAgIH0gZWxz
ZSBpZiAoZXZlbnQgPT09ICd0b2dnbGVBbGwnKSB7CisgICAgICAkb24odGhhdC4kdG9nZ2xlQWxs
LCAnY2xpY2snLCBmdW5jdGlvbigpIHsKKyAgICAgICAgaGFuZGxlcih7Y29tcGxldGVkOiB0aGlz
LmNoZWNrZWR9KQorICAgICAgfSkKKworICAgIH0gZWxzZSBpZiAoZXZlbnQgPT09ICdpdGVtRWRp
dCcpIHsKKyAgICAgICRkZWxlZ2F0ZSh0aGF0LiR0b2RvTGlzdCwgJ2xpIGxhYmVsJywgJ2RibGNs
aWNrJywgZnVuY3Rpb24oKSB7CisgICAgICAgIGhhbmRsZXIoe2lkOiBfaXRlbUlkKHRoaXMpfSkK
KyAgICAgIH0pCisKKyAgICB9IGVsc2UgaWYgKGV2ZW50ID09PSAnaXRlbVJlbW92ZScpIHsKKyAg
ICAgICRkZWxlZ2F0ZSh0aGF0LiR0b2RvTGlzdCwgJy5kZXN0cm95JywgJ2NsaWNrJywgZnVuY3Rp
b24oKSB7CisgICAgICAgIGhhbmRsZXIoe2lkOiBfaXRlbUlkKHRoaXMpfSkKKyAgICAgIH0pCisK
KyAgICB9IGVsc2UgaWYgKGV2ZW50ID09PSAnaXRlbVRvZ2dsZScpIHsKKyAgICAgICRkZWxlZ2F0
ZSh0aGF0LiR0b2RvTGlzdCwgJy50b2dnbGUnLCAnY2xpY2snLCBmdW5jdGlvbigpIHsKKyAgICAg
ICAgaGFuZGxlcih7CisgICAgICAgICAgaWQ6IF9pdGVtSWQodGhpcyksCisgICAgICAgICAgY29t
cGxldGVkOiB0aGlzLmNoZWNrZWQKKyAgICAgICAgfSkKKyAgICAgIH0pCisKKyAgICB9IGVsc2Ug
aWYgKGV2ZW50ID09PSAnaXRlbUVkaXREb25lJykgeworICAgICAgdGhhdC5fYmluZEl0ZW1FZGl0
RG9uZShoYW5kbGVyKQorCisgICAgfSBlbHNlIGlmIChldmVudCA9PT0gJ2l0ZW1FZGl0Q2FuY2Vs
JykgeworICAgICAgdGhhdC5fYmluZEl0ZW1FZGl0Q2FuY2VsKGhhbmRsZXIpCisgICAgfQorICB9
Cit9CisKK2Z1bmN0aW9uIF9zZXRGaWx0ZXIoY3VycmVudFBhZ2UpIHsKKyAgcXMoJy5maWx0ZXJz
IC5zZWxlY3RlZCcpLmNsYXNzTmFtZSA9ICcnCisgIHFzKCcuZmlsdGVycyBbaHJlZj0iIy8nICsg
Y3VycmVudFBhZ2UgKyAnIl0nKS5jbGFzc05hbWUgPSAnc2VsZWN0ZWQnCit9CisKK2Z1bmN0aW9u
IF9lbGVtZW50Q29tcGxldGUoaWQsIGNvbXBsZXRlZCkgeworICB2YXIgbGlzdEl0ZW0gPSBxcygn
W2RhdGEtaWQ9IicgKyBpZCArICciXScpCisKKyAgaWYgKCFsaXN0SXRlbSkgeworICAgIHJldHVy
bgorICB9CisKKyAgbGlzdEl0ZW0uY2xhc3NOYW1lID0gY29tcGxldGVkID8gJ2NvbXBsZXRlZCcg
OiAnJworCisgIC8vIEluIGNhc2UgaXQgd2FzIHRvZ2dsZWQgZnJvbSBhbiBldmVudCBhbmQgbm90
IGJ5IGNsaWNraW5nIHRoZSBjaGVja2JveAorICBxcygnaW5wdXQnLCBsaXN0SXRlbSkuY2hlY2tl
ZCA9IGNvbXBsZXRlZAorfQorCitmdW5jdGlvbiBfZWRpdEl0ZW0oaWQsIHRpdGxlKSB7CisgIHZh
ciBsaXN0SXRlbSA9IHFzKCdbZGF0YS1pZD0iJyArIGlkICsgJyJdJykKKworICBpZiAoIWxpc3RJ
dGVtKSB7CisgICAgcmV0dXJuCisgIH0KKworICBsaXN0SXRlbS5jbGFzc05hbWUgPSBsaXN0SXRl
bS5jbGFzc05hbWUgKyAnIGVkaXRpbmcnCisKKyAgdmFyIGlucHV0ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnaW5wdXQnKQorICBpbnB1dC5jbGFzc05hbWUgPSAnZWRpdCcKKworICBsaXN0SXRl
bS5hcHBlbmRDaGlsZChpbnB1dCkKKyAgaW5wdXQuZm9jdXMoKQorICBpbnB1dC52YWx1ZSA9IHRp
dGxlCit9CisKK2Z1bmN0aW9uIF9pdGVtSWQoZWxlbWVudCkgeworICB2YXIgbGkgPSAkcGFyZW50
KGVsZW1lbnQsICdsaScpCisgIHJldHVybiBwYXJzZUludChsaS5kYXRhc2V0LmlkLCAxMCkKK30K
ZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay93ZWJwYWNrLmNvbmZpZy5i
YWJlbC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
dmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay93ZWJwYWNrLmNvbmZpZy5iYWJl
bC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZWMzNzFiZTRlNTViNDQ4N2RjNmU0Zjk3Y2I5OTljZmEwYTYzNDAz
Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL3dlYnBhY2su
Y29uZmlnLmJhYmVsLmpzCkBAIC0wLDAgKzEsNjAgQEAKKy8qIGVzbGludCBuby1jb25zb2xlOiJv
ZmYiICovCitjb25zdCB7cmVzb2x2ZX0gPSByZXF1aXJlKCdwYXRoJykKK2NvbnN0IHdlYnBhY2sg
PSByZXF1aXJlKCd3ZWJwYWNrJykKK2NvbnN0IFByb2dyZXNzQmFyUGx1Z2luID0gcmVxdWlyZSgn
cHJvZ3Jlc3MtYmFyLXdlYnBhY2stcGx1Z2luJykKK2NvbnN0IEh0bWxXZWJwYWNrUGx1Z2luID0g
cmVxdWlyZSgnaHRtbC13ZWJwYWNrLXBsdWdpbicpCitjb25zdCBJbmxpbmVNYW5pZmVzdFdlYnBh
Y2tQbHVnaW4gPSByZXF1aXJlKCdpbmxpbmUtbWFuaWZlc3Qtd2VicGFjay1wbHVnaW4nKQorY29u
c3QgRXh0cmFjdFRleHRQbHVnaW4gPSByZXF1aXJlKCdleHRyYWN0LXRleHQtd2VicGFjay1wbHVn
aW4nKQorY29uc3Qgd2VicGFja1ZhbGlkYXRvciA9IHJlcXVpcmUoJ3dlYnBhY2stdmFsaWRhdG9y
JykKK2NvbnN0IHtnZXRJZlV0aWxzLCByZW1vdmVFbXB0eX0gPSByZXF1aXJlKCd3ZWJwYWNrLWNv
bmZpZy11dGlscycpCisKK21vZHVsZS5leHBvcnRzID0gZW52ID0+IHsKKyAgY29uc3Qge2lmUHJv
ZCwgaWZOb3RQcm9kfSA9IGdldElmVXRpbHMoZW52KQorICBjb25zdCBjb25maWcgPSB3ZWJwYWNr
VmFsaWRhdG9yKHsKKyAgICBjb250ZXh0OiByZXNvbHZlKCdzcmMnKSwKKyAgICBlbnRyeTogewor
ICAgICAgYXBwOiAnLi9ib290c3RyYXAuanMnLAorICAgICAgdmVuZG9yOiBbJ3RvZG9tdmMtYXBw
LWNzcy9pbmRleC5jc3MnXSwKKyAgICB9LAorICAgIG91dHB1dDogeworICAgICAgZmlsZW5hbWU6
IGlmUHJvZCgnYnVuZGxlLltuYW1lXS5bY2h1bmtoYXNoXS5qcycsICdidW5kbGUuW25hbWVdLmpz
JyksCisgICAgICBwYXRoOiByZXNvbHZlKCdkaXN0JyksCisgICAgICBwYXRoaW5mbzogaWZOb3RQ
cm9kKCksCisgICAgfSwKKyAgICBkZXZ0b29sOiBpZlByb2QoJ3NvdXJjZS1tYXAnLCAnZXZhbCcp
LAorICAgIG1vZHVsZTogeworICAgICAgbG9hZGVyczogWworICAgICAgICB7dGVzdDogL1wuanMk
LywgbG9hZGVyczogWydiYWJlbCddLCBleGNsdWRlOiAvbm9kZV9tb2R1bGVzL30sCisgICAgICAg
IHsKKyAgICAgICAgICB0ZXN0OiAvXC5jc3MkLywKKyAgICAgICAgICBsb2FkZXI6IEV4dHJhY3RU
ZXh0UGx1Z2luLmV4dHJhY3QoeworICAgICAgICAgICAgZmFsbGJhY2tMb2FkZXI6ICdzdHlsZScs
CisgICAgICAgICAgICBsb2FkZXI6ICdjc3MnLAorICAgICAgICAgIH0pCisgICAgICAgIH0sCisg
ICAgICBdLAorICAgIH0sCisgICAgcGx1Z2luczogcmVtb3ZlRW1wdHkoWworICAgICAgbmV3IFBy
b2dyZXNzQmFyUGx1Z2luKCksCisgICAgICBuZXcgRXh0cmFjdFRleHRQbHVnaW4oaWZQcm9kKCdz
dHlsZXMuW25hbWVdLltjaHVua2hhc2hdLmNzcycsICdzdHlsZXMuW25hbWVdLmNzcycpKSwKKyAg
ICAgIGlmUHJvZChuZXcgSW5saW5lTWFuaWZlc3RXZWJwYWNrUGx1Z2luKCkpLAorICAgICAgaWZQ
cm9kKG5ldyB3ZWJwYWNrLm9wdGltaXplLkNvbW1vbnNDaHVua1BsdWdpbih7CisgICAgICAgIG5h
bWVzOiBbJ3ZlbmRvcicsICdtYW5pZmVzdCddLAorICAgICAgfSkpLAorICAgICAgbmV3IEh0bWxX
ZWJwYWNrUGx1Z2luKHsKKyAgICAgICAgdGVtcGxhdGU6ICcuL2luZGV4Lmh0bWwnLAorICAgICAg
ICBpbmplY3Q6ICdoZWFkJywKKyAgICAgIH0pLAorICAgICAgbmV3IHdlYnBhY2suRGVmaW5lUGx1
Z2luKHsKKyAgICAgICAgJ3Byb2Nlc3MuZW52JzogeworICAgICAgICAgIE5PREVfRU5WOiBpZlBy
b2QoJyJwcm9kdWN0aW9uIicsICciZGV2ZWxvcG1lbnQiJykKKyAgICAgICAgfQorICAgICAgfSks
CisgICAgXSksCisgIH0pCisgIGlmIChlbnYuZGVidWcpIHsKKyAgICBjb25zb2xlLmxvZyhjb25m
aWcpCisgICAgZGVidWdnZXIgLy8gZXNsaW50LWRpc2FibGUtbGluZQorICB9CisgIHJldHVybiBj
b25maWcKK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUvaW5kZXguaHRtbCBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9l
czIwMTUvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYjU5M2FjYTFhNzQ3MDBkOTZiZjBhN2ExMDY0
ZGFjMWY4YmZkZWU5Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS9pbmRleC5odG1s
CkBAIC0wLDAgKzEsNDYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgIDxoZWFkPgorICAg
IDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKyAgICA8dGl0bGU+RVM2IOKAoiBUb2RvTVZDPC90aXRs
ZT4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Im5vZGVfbW9kdWxlcy90b2RvbXZj
LWNvbW1vbi9iYXNlLmNzcyI+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJub2Rl
X21vZHVsZXMvdG9kb212Yy1hcHAtY3NzL2luZGV4LmNzcyI+CisgIDwvaGVhZD4KKyAgPGJvZHk+
CisgICAgPHNlY3Rpb24gY2xhc3M9InRvZG9hcHAiPgorICAgICAgICA8aGVhZGVyIGNsYXNzPSJo
ZWFkZXIiPgorICAgICAgICAgICAgPGgxPnRvZG9zPC9oMT4KKyAgICAgICAgICAgIDxpbnB1dCBj
bGFzcz0ibmV3LXRvZG8iIHBsYWNlaG9sZGVyPSJXaGF0IG5lZWRzIHRvIGJlIGRvbmU/IiBhdXRv
Zm9jdXM+CisgICAgICAgIDwvaGVhZGVyPgorCisgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJtYWlu
Ij4KKyAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0idG9nZ2xlLWFsbCIgdHlwZT0iY2hlY2tib3gi
PgorICAgICAgICAgICAgPGxhYmVsIGZvcj0idG9nZ2xlLWFsbCI+TWFyayBhbGwgYXMgY29tcGxl
dGU8L2xhYmVsPgorICAgICAgICAgICAgPHVsIGNsYXNzPSJ0b2RvLWxpc3QiPjwvdWw+CisgICAg
ICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8Zm9vdGVyIGNsYXNzPSJmb290ZXIiPgorICAgICAg
ICAgICAgPHNwYW4gY2xhc3M9InRvZG8tY291bnQiPjwvc3Bhbj4KKyAgICAgICAgICAgIDx1bCBj
bGFzcz0iZmlsdGVycyI+CisgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiMvIiBjbGFzcz0i
c2VsZWN0ZWQiPkFsbDwvYT48L2xpPgorICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIjL2Fj
dGl2ZSI+QWN0aXZlPC9hPjwvbGk+CisgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiMvY29t
cGxldGVkIj5Db21wbGV0ZWQ8L2E+PC9saT4KKyAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAg
ICA8YnV0dG9uIGNsYXNzPSJjbGVhci1jb21wbGV0ZWQiPkNsZWFyIGNvbXBsZXRlZDwvYnV0dG9u
PgorICAgICAgICA8L2Zvb3Rlcj4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8Zm9vdGVyIGNsYXNz
PSJpbmZvIj4KKyAgICAgICAgPHA+RG91YmxlLWNsaWNrIHRvIGVkaXQgYSB0b2RvPC9wPgorICAg
ICAgICA8YnI+CisgICAgICAgIDxwPlBhcnQgb2YgPGEgaHJlZj0iaHR0cDovL3RvZG9tdmMuY29t
Ij5Ub2RvTVZDPC9hPjwvcD4KKyAgICA8L2Zvb3Rlcj4KKyAgICA8c2NyaXB0IHNyYz0ic3JjL2Nv
bnRyb2xsZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJzcmMvaGVscGVycy5qcyI+
PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InNyYy90ZW1wbGF0ZS5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdCBzcmM9InNyYy9zdG9yZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9
InNyYy9tb2RlbC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InNyYy92aWV3LmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0ic3JjL2FwcC5qcyI+PC9zY3JpcHQ+CisgIDwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUvbm9kZV9tb2R1bGVzL3RvZG9t
dmMtYXBwLWNzcy9pbmRleC5jc3MgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1L25vZGVfbW9kdWxlcy90b2RvbXZj
LWFwcC1jc3MvaW5kZXguY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4MTliNDc5YmU0MTU5MTRmMGRiM2VhMTNk
YzAzNjBhMDY2OGVkZjAKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1L25vZGVfbW9k
dWxlcy90b2RvbXZjLWFwcC1jc3MvaW5kZXguY3NzCkBAIC0wLDAgKzEsMzc3IEBACitodG1sLAor
Ym9keSB7CisgICAgbWFyZ2luOiAwOworICAgIHBhZGRpbmc6IDA7Cit9CisKK2J1dHRvbiB7Cisg
ICAgbWFyZ2luOiAwOworICAgIHBhZGRpbmc6IDA7CisgICAgYm9yZGVyOiAwOworICAgIGJhY2tn
cm91bmQ6IG5vbmU7CisgICAgZm9udC1zaXplOiAxMDAlOworICAgIHZlcnRpY2FsLWFsaWduOiBi
YXNlbGluZTsKKyAgICBmb250LWZhbWlseTogaW5oZXJpdDsKKyAgICBmb250LXdlaWdodDogaW5o
ZXJpdDsKKyAgICBjb2xvcjogaW5oZXJpdDsKKyAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7
CisgICAgYXBwZWFyYW5jZTogbm9uZTsKKyAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRp
YWxpYXNlZDsKKyAgICAtbW96LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKKyAgICBmb250
LXNtb290aGluZzogYW50aWFsaWFzZWQ7Cit9CisKK2JvZHkgeworICAgIGZvbnQ6IDE0cHggJ0hl
bHZldGljYSBOZXVlJywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsKKyAgICBsaW5lLWhl
aWdodDogMS40ZW07CisgICAgYmFja2dyb3VuZDogI2Y1ZjVmNTsKKyAgICBjb2xvcjogIzRkNGQ0
ZDsKKyAgICBtaW4td2lkdGg6IDIzMHB4OworICAgIG1heC13aWR0aDogNTUwcHg7CisgICAgbWFy
Z2luOiAwIGF1dG87CisgICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7Cisg
ICAgLW1vei1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CisgICAgZm9udC1zbW9vdGhpbmc6
IGFudGlhbGlhc2VkOworICAgIGZvbnQtd2VpZ2h0OiAzMDA7Cit9CisKK2J1dHRvbiwKK2lucHV0
W3R5cGU9ImNoZWNrYm94Il0geworICAgIG91dGxpbmU6IG5vbmU7Cit9CisKKy5oaWRkZW4gewor
ICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKKy50b2RvYXBwIHsKKyAgICBiYWNrZ3JvdW5kOiAjZmZm
OworICAgIG1hcmdpbjogMTMwcHggMCA0MHB4IDA7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOwor
ICAgIGJveC1zaGFkb3c6IDAgMnB4IDRweCAwIHJnYmEoMCwgMCwgMCwgMC4yKSwKKyAgICAgICAg
ICAgICAgICAwIDI1cHggNTBweCAwIHJnYmEoMCwgMCwgMCwgMC4xKTsKK30KKworLnRvZG9hcHAg
aW5wdXQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIgeworICAgIGZvbnQtc3R5bGU6IGl0YWxp
YzsKKyAgICBmb250LXdlaWdodDogMzAwOworICAgIGNvbG9yOiAjZTZlNmU2OworfQorCisudG9k
b2FwcCBpbnB1dDo6LW1vei1wbGFjZWhvbGRlciB7CisgICAgZm9udC1zdHlsZTogaXRhbGljOwor
ICAgIGZvbnQtd2VpZ2h0OiAzMDA7CisgICAgY29sb3I6ICNlNmU2ZTY7Cit9CisKKy50b2RvYXBw
IGlucHV0OjppbnB1dC1wbGFjZWhvbGRlciB7CisgICAgZm9udC1zdHlsZTogaXRhbGljOworICAg
IGZvbnQtd2VpZ2h0OiAzMDA7CisgICAgY29sb3I6ICNlNmU2ZTY7Cit9CisKKy50b2RvYXBwIGgx
IHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiAtMTU1cHg7CisgICAgd2lkdGg6
IDEwMCU7CisgICAgZm9udC1zaXplOiAxMDBweDsKKyAgICBmb250LXdlaWdodDogMTAwOworICAg
IHRleHQtYWxpZ246IGNlbnRlcjsKKyAgICBjb2xvcjogcmdiYSgxNzUsIDQ3LCA0NywgMC4xNSk7
CisgICAgLXdlYmtpdC10ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5OworICAgIC1t
b3otdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTsKKyAgICB0ZXh0LXJlbmRlcmlu
Zzogb3B0aW1pemVMZWdpYmlsaXR5OworfQorCisubmV3LXRvZG8sCisuZWRpdCB7CisgICAgcG9z
aXRpb246IHJlbGF0aXZlOworICAgIG1hcmdpbjogMDsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBm
b250LXNpemU6IDI0cHg7CisgICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7CisgICAgZm9udC13ZWln
aHQ6IGluaGVyaXQ7CisgICAgbGluZS1oZWlnaHQ6IDEuNGVtOworICAgIGJvcmRlcjogMDsKKyAg
ICBvdXRsaW5lOiBub25lOworICAgIGNvbG9yOiBpbmhlcml0OworICAgIHBhZGRpbmc6IDZweDsK
KyAgICBib3JkZXI6IDFweCBzb2xpZCAjOTk5OworICAgIGJveC1zaGFkb3c6IGluc2V0IDAgLTFw
eCA1cHggMCByZ2JhKDAsIDAsIDAsIDAuMik7CisgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsK
KyAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKKyAgICAtbW96LWZvbnQt
c21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKKyAgICBmb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7
Cit9CisKKy5uZXctdG9kbyB7CisgICAgcGFkZGluZzogMTZweCAxNnB4IDE2cHggNjBweDsKKyAg
ICBib3JkZXI6IG5vbmU7CisgICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjAwMyk7Cisg
ICAgYm94LXNoYWRvdzogaW5zZXQgMCAtMnB4IDFweCByZ2JhKDAsMCwwLDAuMDMpOworfQorCisu
bWFpbiB7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgIHotaW5kZXg6IDI7CisgICAgYm9y
ZGVyLXRvcDogMXB4IHNvbGlkICNlNmU2ZTY7Cit9CisKK2xhYmVsW2Zvcj0ndG9nZ2xlLWFsbCdd
IHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCisudG9nZ2xlLWFsbCB7CisgICAgcG9zaXRpb246
IGFic29sdXRlOworICAgIHRvcDogLTU1cHg7CisgICAgbGVmdDogLTEycHg7CisgICAgd2lkdGg6
IDYwcHg7CisgICAgaGVpZ2h0OiAzNHB4OworICAgIHRleHQtYWxpZ246IGNlbnRlcjsKKyAgICBi
b3JkZXI6IG5vbmU7IC8qIE1vYmlsZSBTYWZhcmkgKi8KK30KKworLnRvZ2dsZS1hbGw6YmVmb3Jl
IHsKKyAgICBjb250ZW50OiAn4p2vJzsKKyAgICBmb250LXNpemU6IDIycHg7CisgICAgY29sb3I6
ICNlNmU2ZTY7CisgICAgcGFkZGluZzogMTBweCAyN3B4IDEwcHggMjdweDsKK30KKworLnRvZ2ds
ZS1hbGw6Y2hlY2tlZDpiZWZvcmUgeworICAgIGNvbG9yOiAjNzM3MzczOworfQorCisudG9kby1s
aXN0IHsKKyAgICBtYXJnaW46IDA7CisgICAgcGFkZGluZzogMDsKKyAgICBsaXN0LXN0eWxlOiBu
b25lOworfQorCisudG9kby1saXN0IGxpIHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAg
Zm9udC1zaXplOiAyNHB4OworICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWRlZGVkOwor
fQorCisudG9kby1saXN0IGxpOmxhc3QtY2hpbGQgeworICAgIGJvcmRlci1ib3R0b206IG5vbmU7
Cit9CisKKy50b2RvLWxpc3QgbGkuZWRpdGluZyB7CisgICAgYm9yZGVyLWJvdHRvbTogbm9uZTsK
KyAgICBwYWRkaW5nOiAwOworfQorCisudG9kby1saXN0IGxpLmVkaXRpbmcgLmVkaXQgeworICAg
IGRpc3BsYXk6IGJsb2NrOworICAgIHdpZHRoOiA1MDZweDsKKyAgICBwYWRkaW5nOiAxM3B4IDE3
cHggMTJweCAxN3B4OworICAgIG1hcmdpbjogMCAwIDAgNDNweDsKK30KKworLnRvZG8tbGlzdCBs
aS5lZGl0aW5nIC52aWV3IHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCisudG9kby1saXN0IGxp
IC50b2dnbGUgeworICAgIHRleHQtYWxpZ246IGNlbnRlcjsKKyAgICB3aWR0aDogNDBweDsKKyAg
ICAvKiBhdXRvLCBzaW5jZSBub24tV2ViS2l0IGJyb3dzZXJzIGRvZXNuJ3Qgc3VwcG9ydCBpbnB1
dCBzdHlsaW5nICovCisgICAgaGVpZ2h0OiBhdXRvOworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsK
KyAgICB0b3A6IDA7CisgICAgYm90dG9tOiAwOworICAgIG1hcmdpbjogYXV0byAwOworICAgIGJv
cmRlcjogbm9uZTsgLyogTW9iaWxlIFNhZmFyaSAqLworICAgIC13ZWJraXQtYXBwZWFyYW5jZTog
bm9uZTsKKyAgICBhcHBlYXJhbmNlOiBub25lOworfQorCisudG9kby1saXN0IGxpIC50b2dnbGU6
YWZ0ZXIgeworICAgIGNvbnRlbnQ6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIg
dmlld0JveD0iLTEwIC0xOCAxMDAgMTM1Ij48Y2lyY2xlIGN4PSI1MCIgY3k9IjUwIiByPSI1MCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZWRlZGVkIiBzdHJva2Utd2lkdGg9IjMiLz48L3N2Zz4nKTsK
K30KKworLnRvZG8tbGlzdCBsaSAudG9nZ2xlOmNoZWNrZWQ6YWZ0ZXIgeworICAgIGNvbnRlbnQ6
IHVybCgnZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgdmlld0JveD0iLTEwIC0xOCAxMDAg
MTM1Ij48Y2lyY2xlIGN4PSI1MCIgY3k9IjUwIiByPSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIj
YmRkYWQ1IiBzdHJva2Utd2lkdGg9IjMiLz48cGF0aCBmaWxsPSIjNWRjMmFmIiBkPSJNNzIgMjVM
NDIgNzEgMjcgNTZsLTQgNCAyMCAyMCAzNC01MnoiLz48L3N2Zz4nKTsKK30KKworLnRvZG8tbGlz
dCBsaSBsYWJlbCB7CisgICAgd2hpdGUtc3BhY2U6IHByZTsKKyAgICB3b3JkLWJyZWFrOiBicmVh
ay13b3JkOworICAgIHBhZGRpbmc6IDE1cHggNjBweCAxNXB4IDE1cHg7CisgICAgbWFyZ2luLWxl
ZnQ6IDQ1cHg7CisgICAgZGlzcGxheTogYmxvY2s7CisgICAgbGluZS1oZWlnaHQ6IDEuMjsKKyAg
ICB0cmFuc2l0aW9uOiBjb2xvciAwLjRzOworfQorCisudG9kby1saXN0IGxpLmNvbXBsZXRlZCBs
YWJlbCB7CisgICAgY29sb3I6ICNkOWQ5ZDk7CisgICAgdGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRo
cm91Z2g7Cit9CisKKy50b2RvLWxpc3QgbGkgLmRlc3Ryb3kgeworICAgIGRpc3BsYXk6IG5vbmU7
CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDogMDsKKyAgICByaWdodDogMTBweDsK
KyAgICBib3R0b206IDA7CisgICAgd2lkdGg6IDQwcHg7CisgICAgaGVpZ2h0OiA0MHB4OworICAg
IG1hcmdpbjogYXV0byAwOworICAgIGZvbnQtc2l6ZTogMzBweDsKKyAgICBjb2xvcjogI2NjOWE5
YTsKKyAgICBtYXJnaW4tYm90dG9tOiAxMXB4OworICAgIHRyYW5zaXRpb246IGNvbG9yIDAuMnMg
ZWFzZS1vdXQ7Cit9CisKKy50b2RvLWxpc3QgbGkgLmRlc3Ryb3k6aG92ZXIgeworICAgIGNvbG9y
OiAjYWY1YjVlOworfQorCisudG9kby1saXN0IGxpIC5kZXN0cm95OmFmdGVyIHsKKyAgICBjb250
ZW50OiAnw5cnOworfQorCisudG9kby1saXN0IGxpOmhvdmVyIC5kZXN0cm95IHsKKyAgICBkaXNw
bGF5OiBibG9jazsKK30KKworLnRvZG8tbGlzdCBsaSAuZWRpdCB7CisgICAgZGlzcGxheTogbm9u
ZTsKK30KKworLnRvZG8tbGlzdCBsaS5lZGl0aW5nOmxhc3QtY2hpbGQgeworICAgIG1hcmdpbi1i
b3R0b206IC0xcHg7Cit9CisKKy5mb290ZXIgeworICAgIGNvbG9yOiAjNzc3OworICAgIHBhZGRp
bmc6IDEwcHggMTVweDsKKyAgICBoZWlnaHQ6IDIwcHg7CisgICAgdGV4dC1hbGlnbjogY2VudGVy
OworICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZTZlNmU2OworfQorCisuZm9vdGVyOmJlZm9y
ZSB7CisgICAgY29udGVudDogJyc7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHJpZ2h0
OiAwOworICAgIGJvdHRvbTogMDsKKyAgICBsZWZ0OiAwOworICAgIGhlaWdodDogNTBweDsKKyAg
ICBvdmVyZmxvdzogaGlkZGVuOworICAgIGJveC1zaGFkb3c6IDAgMXB4IDFweCByZ2JhKDAsIDAs
IDAsIDAuMiksCisgICAgICAgICAgICAgICAgMCA4cHggMCAtM3B4ICNmNmY2ZjYsCisgICAgICAg
ICAgICAgICAgMCA5cHggMXB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLAorICAgICAgICAgICAg
ICAgIDAgMTZweCAwIC02cHggI2Y2ZjZmNiwKKyAgICAgICAgICAgICAgICAwIDE3cHggMnB4IC02
cHggcmdiYSgwLCAwLCAwLCAwLjIpOworfQorCisudG9kby1jb3VudCB7CisgICAgZmxvYXQ6IGxl
ZnQ7CisgICAgdGV4dC1hbGlnbjogbGVmdDsKK30KKworLnRvZG8tY291bnQgc3Ryb25nIHsKKyAg
ICBmb250LXdlaWdodDogMzAwOworfQorCisuZmlsdGVycyB7CisgICAgbWFyZ2luOiAwOworICAg
IHBhZGRpbmc6IDA7CisgICAgbGlzdC1zdHlsZTogbm9uZTsKKyAgICBwb3NpdGlvbjogYWJzb2x1
dGU7CisgICAgcmlnaHQ6IDA7CisgICAgbGVmdDogMDsKK30KKworLmZpbHRlcnMgbGkgeworICAg
IGRpc3BsYXk6IGlubGluZTsKK30KKworLmZpbHRlcnMgbGkgYSB7CisgICAgY29sb3I6IGluaGVy
aXQ7CisgICAgbWFyZ2luOiAzcHg7CisgICAgcGFkZGluZzogM3B4IDdweDsKKyAgICB0ZXh0LWRl
Y29yYXRpb246IG5vbmU7CisgICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CisgICAg
Ym9yZGVyLXJhZGl1czogM3B4OworfQorCisuZmlsdGVycyBsaSBhLnNlbGVjdGVkLAorLmZpbHRl
cnMgbGkgYTpob3ZlciB7CisgICAgYm9yZGVyLWNvbG9yOiByZ2JhKDE3NSwgNDcsIDQ3LCAwLjEp
OworfQorCisuZmlsdGVycyBsaSBhLnNlbGVjdGVkIHsKKyAgICBib3JkZXItY29sb3I6IHJnYmEo
MTc1LCA0NywgNDcsIDAuMik7Cit9CisKKy5jbGVhci1jb21wbGV0ZWQsCitodG1sIC5jbGVhci1j
b21wbGV0ZWQ6YWN0aXZlIHsKKyAgICBmbG9hdDogcmlnaHQ7CisgICAgcG9zaXRpb246IHJlbGF0
aXZlOworICAgIGxpbmUtaGVpZ2h0OiAyMHB4OworICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsK
KyAgICBjdXJzb3I6IHBvaW50ZXI7Cit9CisKKy5jbGVhci1jb21wbGV0ZWQ6aG92ZXIgeworICAg
IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOworfQorCisuaW5mbyB7CisgICAgbWFyZ2luOiA2
NXB4IGF1dG8gMDsKKyAgICBjb2xvcjogI2JmYmZiZjsKKyAgICBmb250LXNpemU6IDEwcHg7Cisg
ICAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpOworICAgIHRl
eHQtYWxpZ246IGNlbnRlcjsKK30KKworLmluZm8gcCB7CisgICAgbGluZS1oZWlnaHQ6IDE7Cit9
CisKKy5pbmZvIGEgeworICAgIGNvbG9yOiBpbmhlcml0OworICAgIHRleHQtZGVjb3JhdGlvbjog
bm9uZTsKKyAgICBmb250LXdlaWdodDogNDAwOworfQorCisuaW5mbyBhOmhvdmVyIHsKKyAgICB0
ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKK30KKworLyoKKyAgICBIYWNrIHRvIHJlbW92ZSBi
YWNrZ3JvdW5kIGZyb20gTW9iaWxlIFNhZmFyaS4KKyAgICBDYW4ndCB1c2UgaXQgZ2xvYmFsbHkg
c2luY2UgaXQgZGVzdHJveXMgY2hlY2tib3hlcyBpbiBGaXJlZm94CisqLworQG1lZGlhIHNjcmVl
biBhbmQgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzowKSB7CisgICAgLnRvZ2dsZS1h
bGwsCisgICAgLnRvZG8tbGlzdCBsaSAudG9nZ2xlIHsKKyAgICAgICAgYmFja2dyb3VuZDogbm9u
ZTsKKyAgICB9CisKKyAgICAudG9kby1saXN0IGxpIC50b2dnbGUgeworICAgICAgICBoZWlnaHQ6
IDQwcHg7CisgICAgfQorCisgICAgLnRvZ2dsZS1hbGwgeworICAgICAgICAtd2Via2l0LXRyYW5z
Zm9ybTogcm90YXRlKDkwZGVnKTsKKyAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpOwor
ICAgICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CisgICAgICAgIGFwcGVhcmFuY2U6IG5v
bmU7CisgICAgfQorfQorCitAbWVkaWEgKG1heC13aWR0aDogNDMwcHgpIHsKKyAgICAuZm9vdGVy
IHsKKyAgICAgICAgaGVpZ2h0OiA1MHB4OworICAgIH0KKworICAgIC5maWx0ZXJzIHsKKyAgICAg
ICAgYm90dG9tOiAxMHB4OworICAgIH0KK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUvbm9k
ZV9tb2R1bGVzL3RvZG9tdmMtYXBwLWNzcy9wYWNrYWdlLmpzb24gYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1L25v
ZGVfbW9kdWxlcy90b2RvbXZjLWFwcC1jc3MvcGFja2FnZS5qc29uCm5ldyBmaWxlIG1vZGUgMTAw
NzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY1MjRl
YmMyZDljMDU1MjE0YmRmMTI1MWM4NjgxMjQwOWY5YmM5ODAKLS0tIC9kZXYvbnVsbAorKysgYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhh
bXBsZXMvZXMyMDE1L25vZGVfbW9kdWxlcy90b2RvbXZjLWFwcC1jc3MvcGFja2FnZS5qc29uCkBA
IC0wLDAgKzEsNjkgQEAKK3sKKyAgIm5hbWUiOiAidG9kb212Yy1hcHAtY3NzIiwKKyAgInN0eWxl
IjogImluZGV4LmNzcyIsCisgICJ2ZXJzaW9uIjogIjIuMC4yIiwKKyAgImRlc2NyaXB0aW9uIjog
IkNTUyBmb3IgVG9kb01WQyBhcHBzIiwKKyAgImxpY2Vuc2UiOiAiQ0MtQlktNC4wIiwKKyAgInJl
cG9zaXRvcnkiOiB7CisgICAgInR5cGUiOiAiZ2l0IiwKKyAgICAidXJsIjogImdpdCtodHRwczov
L2dpdGh1Yi5jb20vdGFzdGVqcy90b2RvbXZjLWFwcC1jc3MuZ2l0IgorICB9LAorICAiYXV0aG9y
IjogeworICAgICJuYW1lIjogIlNpbmRyZSBTb3JodXMiLAorICAgICJlbWFpbCI6ICJzaW5kcmVz
b3JodXNAZ21haWwuY29tIiwKKyAgICAidXJsIjogInNpbmRyZXNvcmh1cy5jb20iCisgIH0sCisg
ICJmaWxlcyI6IFsKKyAgICAiaW5kZXguY3NzIgorICBdLAorICAia2V5d29yZHMiOiBbCisgICAg
InRvZG9tdmMiLAorICAgICJ0YXN0ZWpzIiwKKyAgICAiYXBwIiwKKyAgICAidG9kbyIsCisgICAg
InRlbXBsYXRlIiwKKyAgICAiY3NzIiwKKyAgICAic3R5bGUiLAorICAgICJzdHlsZXNoZWV0Igor
ICBdLAorICAiZ2l0SGVhZCI6ICJmZDFlODNmOGY1M2EwYjg1NTM3NDE1MzY1ZjJhNjMwMWJiYjQx
OTlmIiwKKyAgImJ1Z3MiOiB7CisgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vdGFzdGVq
cy90b2RvbXZjLWFwcC1jc3MvaXNzdWVzIgorICB9LAorICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9n
aXRodWIuY29tL3Rhc3RlanMvdG9kb212Yy1hcHAtY3NzIiwKKyAgIl9pZCI6ICJ0b2RvbXZjLWFw
cC1jc3NAMi4wLjIiLAorICAic2NyaXB0cyI6IHt9LAorICAiX3NoYXN1bSI6ICIzMWZmNjc5ZGMz
YTQwOWIyNjBiYzdlMGE2ZWFjYTVmODc1N2E4OWExIiwKKyAgIl9mcm9tIjogInRvZG9tdmMtYXBw
LWNzc0A+PTIuMC4xIDwzLjAuMCIsCisgICJfbnBtVmVyc2lvbiI6ICIyLjE0LjciLAorICAiX25v
ZGVWZXJzaW9uIjogIjQuMi4xIiwKKyAgIl9ucG1Vc2VyIjogeworICAgICJuYW1lIjogInNpbmRy
ZXNvcmh1cyIsCisgICAgImVtYWlsIjogInNpbmRyZXNvcmh1c0BnbWFpbC5jb20iCisgIH0sCisg
ICJkaXN0IjogeworICAgICJzaGFzdW0iOiAiMzFmZjY3OWRjM2E0MDliMjYwYmM3ZTBhNmVhY2E1
Zjg3NTdhODlhMSIsCisgICAgInRhcmJhbGwiOiAiaHR0cDovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy90
b2RvbXZjLWFwcC1jc3MvLS90b2RvbXZjLWFwcC1jc3MtMi4wLjIudGd6IgorICB9LAorICAibWFp
bnRhaW5lcnMiOiBbCisgICAgeworICAgICAgIm5hbWUiOiAic2luZHJlc29yaHVzIiwKKyAgICAg
ICJlbWFpbCI6ICJzaW5kcmVzb3JodXNAZ21haWwuY29tIgorICAgIH0sCisgICAgeworICAgICAg
Im5hbWUiOiAiYWRkeW9zbWFuaSIsCisgICAgICAiZW1haWwiOiAiYWRkeW9zbWFuaUBnbWFpbC5j
b20iCisgICAgfSwKKyAgICB7CisgICAgICAibmFtZSI6ICJwYXNzeSIsCisgICAgICAiZW1haWwi
OiAicGhhcnRpZ0ByZHJlaS5uZXQiCisgICAgfSwKKyAgICB7CisgICAgICAibmFtZSI6ICJzdGVw
aGVucGx1c3BsdXMiLAorICAgICAgImVtYWlsIjogInNhd2NodWtAZ21haWwuY29tIgorICAgIH0K
KyAgXSwKKyAgImRpcmVjdG9yaWVzIjoge30sCisgICJfcmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdp
c3RyeS5ucG1qcy5vcmcvdG9kb212Yy1hcHAtY3NzLy0vdG9kb212Yy1hcHAtY3NzLTIuMC4yLnRn
eiIsCisgICJyZWFkbWUiOiAiRVJST1I6IE5vIFJFQURNRSBkYXRhIGZvdW5kISIKK30KZGlmZiAt
LWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFu
aWxsYS1leGFtcGxlcy9lczIwMTUvbm9kZV9tb2R1bGVzL3RvZG9tdmMtYXBwLWNzcy9yZWFkbWUu
bWQgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3Zhbmls
bGEtZXhhbXBsZXMvZXMyMDE1L25vZGVfbW9kdWxlcy90b2RvbXZjLWFwcC1jc3MvcmVhZG1lLm1k
Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZkZGJlYmYwMjRjMDRhZWI2MDIwY2FmMTMxYTJlZDAzMTg5MDgwYTUKLS0t
IC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1L25vZGVfbW9kdWxlcy90b2RvbXZjLWFwcC1j
c3MvcmVhZG1lLm1kCkBAIC0wLDAgKzEsMjggQEAKKyMgdG9kb212Yy1hcHAtY3NzCisKKz4gQ1NT
IGZvciBUb2RvTVZDIGFwcHMKKworIVtdKHNjcmVlbnNob3QucG5nKQorCisKKyMjIEluc3RhbGwK
KworCitgYGAKKyQgbnBtIGluc3RhbGwgLS1zYXZlIHRvZG9tdmMtYXBwLWNzcworYGBgCisKKwor
IyMgR2V0dGluZyBzdGFydGVkCisKK2BgYGh0bWwKKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0ibm9kZV9tb2R1bGVzL3RvZG9tdmMtYXBwLWNzcy9pbmRleC5jc3MiPgorYGBgCisKK1NlZSB0
aGUgW1RvZG9NVkMgYXBwIHRlbXBsYXRlXShodHRwczovL2dpdGh1Yi5jb20vdGFzdGVqcy90b2Rv
bXZjLWFwcC10ZW1wbGF0ZSkuCisKKworCisjIyBMaWNlbnNlCisKKzxhIHJlbD0ibGljZW5zZSIg
aHJlZj0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnkvNC4wL2RlZWQuZW5f
VVMiPjxpbWcgYWx0PSJDcmVhdGl2ZSBDb21tb25zIExpY2Vuc2UiIHN0eWxlPSJib3JkZXItd2lk
dGg6MCIgc3JjPSJodHRwOi8vaS5jcmVhdGl2ZWNvbW1vbnMub3JnL2wvYnkvNC4wLzgweDE1LnBu
ZyIgLz48L2E+PGJyIC8+VGhpcyA8c3BhbiB4bWxuczpkY3Q9Imh0dHA6Ly9wdXJsLm9yZy9kYy90
ZXJtcy8iIGhyZWY9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9JbnRlcmFjdGl2ZVJlc291
cmNlIiByZWw9ImRjdDp0eXBlIj53b3JrPC9zcGFuPiBieSA8YSB4bWxuczpjYz0iaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvbnMjIiBocmVmPSJodHRwOi8vc2luZHJlc29yaHVzLmNvbSIgcHJv
cGVydHk9ImNjOmF0dHJpYnV0aW9uTmFtZSIgcmVsPSJjYzphdHRyaWJ1dGlvblVSTCI+U2luZHJl
IFNvcmh1czwvYT4gaXMgbGljZW5zZWQgdW5kZXIgYSA8YSByZWw9ImxpY2Vuc2UiIGhyZWY9Imh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LzQuMC9kZWVkLmVuX1VTIj5DcmVh
dGl2ZSBDb21tb25zIEF0dHJpYnV0aW9uIDQuMCBJbnRlcm5hdGlvbmFsIExpY2Vuc2U8L2E+Lgpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS9ub2RlX21vZHVsZXMvdG9kb212Yy1jb21tb24vYmFz
ZS5jc3MgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3Zh
bmlsbGEtZXhhbXBsZXMvZXMyMDE1L25vZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1vbi9iYXNlLmNz
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDI1ZDNjODRhYzZjNmFlZjI2Yjk2ODNhMmJjMTBjNjFmOTYwYzhmCi0t
LSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS9ub2RlX21vZHVsZXMvdG9kb212Yy1jb21t
b24vYmFzZS5jc3MKQEAgLTAsMCArMSwxNDEgQEAKK2hyIHsKKyAgICBtYXJnaW46IDIwcHggMDsK
KyAgICBib3JkZXI6IDA7CisgICAgYm9yZGVyLXRvcDogMXB4IGRhc2hlZCAjYzVjNWM1OworICAg
IGJvcmRlci1ib3R0b206IDFweCBkYXNoZWQgI2Y3ZjdmNzsKK30KKworLmxlYXJuIGEgeworICAg
IGZvbnQtd2VpZ2h0OiBub3JtYWw7CisgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOworICAgIGNv
bG9yOiAjYjgzZjQ1OworfQorCisubGVhcm4gYTpob3ZlciB7CisgICAgdGV4dC1kZWNvcmF0aW9u
OiB1bmRlcmxpbmU7CisgICAgY29sb3I6ICM3ODdlN2U7Cit9CisKKy5sZWFybiBoMywKKy5sZWFy
biBoNCwKKy5sZWFybiBoNSB7CisgICAgbWFyZ2luOiAxMHB4IDA7CisgICAgZm9udC13ZWlnaHQ6
IDUwMDsKKyAgICBsaW5lLWhlaWdodDogMS4yOworICAgIGNvbG9yOiAjMDAwOworfQorCisubGVh
cm4gaDMgeworICAgIGZvbnQtc2l6ZTogMjRweDsKK30KKworLmxlYXJuIGg0IHsKKyAgICBmb250
LXNpemU6IDE4cHg7Cit9CisKKy5sZWFybiBoNSB7CisgICAgbWFyZ2luLWJvdHRvbTogMDsKKyAg
ICBmb250LXNpemU6IDE0cHg7Cit9CisKKy5sZWFybiB1bCB7CisgICAgcGFkZGluZzogMDsKKyAg
ICBtYXJnaW46IDAgMCAzMHB4IDI1cHg7Cit9CisKKy5sZWFybiBsaSB7CisgICAgbGluZS1oZWln
aHQ6IDIwcHg7Cit9CisKKy5sZWFybiBwIHsKKyAgICBmb250LXNpemU6IDE1cHg7CisgICAgZm9u
dC13ZWlnaHQ6IDMwMDsKKyAgICBsaW5lLWhlaWdodDogMS4zOworICAgIG1hcmdpbi10b3A6IDA7
CisgICAgbWFyZ2luLWJvdHRvbTogMDsKK30KKworI2lzc3VlLWNvdW50IHsKKyAgICBkaXNwbGF5
OiBub25lOworfQorCisucXVvdGUgeworICAgIGJvcmRlcjogbm9uZTsKKyAgICBtYXJnaW46IDIw
cHggMCA2MHB4IDA7Cit9CisKKy5xdW90ZSBwIHsKKyAgICBmb250LXN0eWxlOiBpdGFsaWM7Cit9
CisKKy5xdW90ZSBwOmJlZm9yZSB7CisgICAgY29udGVudDogJ+KAnCc7CisgICAgZm9udC1zaXpl
OiA1MHB4OworICAgIG9wYWNpdHk6IC4xNTsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAg
dG9wOiAtMjBweDsKKyAgICBsZWZ0OiAzcHg7Cit9CisKKy5xdW90ZSBwOmFmdGVyIHsKKyAgICBj
b250ZW50OiAn4oCdJzsKKyAgICBmb250LXNpemU6IDUwcHg7CisgICAgb3BhY2l0eTogLjE1Owor
ICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBib3R0b206IC00MnB4OworICAgIHJpZ2h0OiAz
cHg7Cit9CisKKy5xdW90ZSBmb290ZXIgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBi
b3R0b206IC00MHB4OworICAgIHJpZ2h0OiAwOworfQorCisucXVvdGUgZm9vdGVyIGltZyB7Cisg
ICAgYm9yZGVyLXJhZGl1czogM3B4OworfQorCisucXVvdGUgZm9vdGVyIGEgeworICAgIG1hcmdp
bi1sZWZ0OiA1cHg7CisgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKK30KKworLnNwZWVjaC1i
dWJibGUgeworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICBwYWRkaW5nOiAxMHB4OworICAg
IGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgLjA0KTsKKyAgICBib3JkZXItcmFkaXVzOiA1cHg7
Cit9CisKKy5zcGVlY2gtYnViYmxlOmFmdGVyIHsKKyAgICBjb250ZW50OiAnJzsKKyAgICBwb3Np
dGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiAxMDAlOworICAgIHJpZ2h0OiAzMHB4OworICAgIGJv
cmRlcjogMTNweCBzb2xpZCB0cmFuc3BhcmVudDsKKyAgICBib3JkZXItdG9wLWNvbG9yOiByZ2Jh
KDAsIDAsIDAsIC4wNCk7Cit9CisKKy5sZWFybi1iYXIgPiAubGVhcm4geworICAgIHBvc2l0aW9u
OiBhYnNvbHV0ZTsKKyAgICB3aWR0aDogMjcycHg7CisgICAgdG9wOiA4cHg7CisgICAgbGVmdDog
LTMwMHB4OworICAgIHBhZGRpbmc6IDEwcHg7CisgICAgYm9yZGVyLXJhZGl1czogNXB4OworICAg
IGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgLjYpOworICAgIHRyYW5zaXRp
b24tcHJvcGVydHk6IGxlZnQ7CisgICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogNTAwbXM7Cit9CisK
K0BtZWRpYSAobWluLXdpZHRoOiA4OTlweCkgeworICAgIC5sZWFybi1iYXIgeworICAgICAgICB3
aWR0aDogYXV0bzsKKyAgICAgICAgcGFkZGluZy1sZWZ0OiAzMDBweDsKKyAgICB9CisKKyAgICAu
bGVhcm4tYmFyID4gLmxlYXJuIHsKKyAgICAgICAgbGVmdDogOHB4OworICAgIH0KK30KZGlmZiAt
LWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFu
aWxsYS1leGFtcGxlcy9lczIwMTUvbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jhc2UuanMg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEt
ZXhhbXBsZXMvZXMyMDE1L25vZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1vbi9iYXNlLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjgxZTAwNmJjNTAyZGRjNGM3NGY0N2JkMTNhODM5MjI3N2Y4MzBkYjgKLS0tIC9kZXYv
bnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1L25vZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1vbi9iYXNl
LmpzCkBAIC0wLDAgKzEsMjQ5IEBACisvKiBnbG9iYWwgXyAqLworKGZ1bmN0aW9uICgpIHsKKyAg
ICAndXNlIHN0cmljdCc7CisKKyAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovCisgICAgLy8g
VW5kZXJzY29yZSdzIFRlbXBsYXRlIE1vZHVsZQorICAgIC8vIENvdXJ0ZXN5IG9mIHVuZGVyc2Nv
cmVqcy5vcmcKKyAgICB2YXIgXyA9IChmdW5jdGlvbiAoXykgeworICAgICAgICBfLmRlZmF1bHRz
ID0gZnVuY3Rpb24gKG9iamVjdCkgeworICAgICAgICAgICAgaWYgKCFvYmplY3QpIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gb2JqZWN0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZm9y
ICh2YXIgYXJnc0luZGV4ID0gMSwgYXJnc0xlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7IGFyZ3NJ
bmRleCA8IGFyZ3NMZW5ndGg7IGFyZ3NJbmRleCsrKSB7CisgICAgICAgICAgICAgICAgdmFyIGl0
ZXJhYmxlID0gYXJndW1lbnRzW2FyZ3NJbmRleF07CisgICAgICAgICAgICAgICAgaWYgKGl0ZXJh
YmxlKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBpdGVyYWJsZSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9iamVjdFtrZXldID09IG51bGwpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBvYmplY3Rba2V5XSA9IGl0ZXJhYmxlW2tleV07CisgICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gb2JqZWN0OworICAgICAg
ICB9CisKKyAgICAgICAgLy8gQnkgZGVmYXVsdCwgVW5kZXJzY29yZSB1c2VzIEVSQi1zdHlsZSB0
ZW1wbGF0ZSBkZWxpbWl0ZXJzLCBjaGFuZ2UgdGhlCisgICAgICAgIC8vIGZvbGxvd2luZyB0ZW1w
bGF0ZSBzZXR0aW5ncyB0byB1c2UgYWx0ZXJuYXRpdmUgZGVsaW1pdGVycy4KKyAgICAgICAgXy50
ZW1wbGF0ZVNldHRpbmdzID0geworICAgICAgICAgICAgZXZhbHVhdGUgICAgOiAvPCUoW1xzXFNd
Kz8pJT4vZywKKyAgICAgICAgICAgIGludGVycG9sYXRlIDogLzwlPShbXHNcU10rPyklPi9nLAor
ICAgICAgICAgICAgZXNjYXBlICAgICAgOiAvPCUtKFtcc1xTXSs/KSU+L2cKKyAgICAgICAgfTsK
KworICAgICAgICAvLyBXaGVuIGN1c3RvbWl6aW5nIGB0ZW1wbGF0ZVNldHRpbmdzYCwgaWYgeW91
IGRvbid0IHdhbnQgdG8gZGVmaW5lIGFuCisgICAgICAgIC8vIGludGVycG9sYXRpb24sIGV2YWx1
YXRpb24gb3IgZXNjYXBpbmcgcmVnZXgsIHdlIG5lZWQgb25lIHRoYXQgaXMKKyAgICAgICAgLy8g
Z3VhcmFudGVlZCBub3QgdG8gbWF0Y2guCisgICAgICAgIHZhciBub01hdGNoID0gLyguKV4vOwor
CisgICAgICAgIC8vIENlcnRhaW4gY2hhcmFjdGVycyBuZWVkIHRvIGJlIGVzY2FwZWQgc28gdGhh
dCB0aGV5IGNhbiBiZSBwdXQgaW50byBhCisgICAgICAgIC8vIHN0cmluZyBsaXRlcmFsLgorICAg
ICAgICB2YXIgZXNjYXBlcyA9IHsKKyAgICAgICAgICAgICInIjogICAgICAiJyIsCisgICAgICAg
ICAgICAnXFwnOiAgICAgJ1xcJywKKyAgICAgICAgICAgICdccic6ICAgICAncicsCisgICAgICAg
ICAgICAnXG4nOiAgICAgJ24nLAorICAgICAgICAgICAgJ1x0JzogICAgICd0JywKKyAgICAgICAg
ICAgICdcdTIwMjgnOiAndTIwMjgnLAorICAgICAgICAgICAgJ1x1MjAyOSc6ICd1MjAyOScKKyAg
ICAgICAgfTsKKworICAgICAgICB2YXIgZXNjYXBlciA9IC9cXHwnfFxyfFxufFx0fFx1MjAyOHxc
dTIwMjkvZzsKKworICAgICAgICAvLyBKYXZhU2NyaXB0IG1pY3JvLXRlbXBsYXRpbmcsIHNpbWls
YXIgdG8gSm9obiBSZXNpZydzIGltcGxlbWVudGF0aW9uLgorICAgICAgICAvLyBVbmRlcnNjb3Jl
IHRlbXBsYXRpbmcgaGFuZGxlcyBhcmJpdHJhcnkgZGVsaW1pdGVycywgcHJlc2VydmVzIHdoaXRl
c3BhY2UsCisgICAgICAgIC8vIGFuZCBjb3JyZWN0bHkgZXNjYXBlcyBxdW90ZXMgd2l0aGluIGlu
dGVycG9sYXRlZCBjb2RlLgorICAgICAgICBfLnRlbXBsYXRlID0gZnVuY3Rpb24odGV4dCwgZGF0
YSwgc2V0dGluZ3MpIHsKKyAgICAgICAgICAgIHZhciByZW5kZXI7CisgICAgICAgICAgICBzZXR0
aW5ncyA9IF8uZGVmYXVsdHMoe30sIHNldHRpbmdzLCBfLnRlbXBsYXRlU2V0dGluZ3MpOworCisg
ICAgICAgICAgICAvLyBDb21iaW5lIGRlbGltaXRlcnMgaW50byBvbmUgcmVndWxhciBleHByZXNz
aW9uIHZpYSBhbHRlcm5hdGlvbi4KKyAgICAgICAgICAgIHZhciBtYXRjaGVyID0gbmV3IFJlZ0V4
cChbCisgICAgICAgICAgICAgICAgKHNldHRpbmdzLmVzY2FwZSB8fCBub01hdGNoKS5zb3VyY2Us
CisgICAgICAgICAgICAgICAgKHNldHRpbmdzLmludGVycG9sYXRlIHx8IG5vTWF0Y2gpLnNvdXJj
ZSwKKyAgICAgICAgICAgICAgICAoc2V0dGluZ3MuZXZhbHVhdGUgfHwgbm9NYXRjaCkuc291cmNl
CisgICAgICAgICAgICBdLmpvaW4oJ3wnKSArICd8JCcsICdnJyk7CisKKyAgICAgICAgICAgIC8v
IENvbXBpbGUgdGhlIHRlbXBsYXRlIHNvdXJjZSwgZXNjYXBpbmcgc3RyaW5nIGxpdGVyYWxzIGFw
cHJvcHJpYXRlbHkuCisgICAgICAgICAgICB2YXIgaW5kZXggPSAwOworICAgICAgICAgICAgdmFy
IHNvdXJjZSA9ICJfX3ArPSciOworICAgICAgICAgICAgdGV4dC5yZXBsYWNlKG1hdGNoZXIsIGZ1
bmN0aW9uKG1hdGNoLCBlc2NhcGUsIGludGVycG9sYXRlLCBldmFsdWF0ZSwgb2Zmc2V0KSB7Cisg
ICAgICAgICAgICAgICAgc291cmNlICs9IHRleHQuc2xpY2UoaW5kZXgsIG9mZnNldCkKKyAgICAg
ICAgICAgICAgICAgICAgLnJlcGxhY2UoZXNjYXBlciwgZnVuY3Rpb24obWF0Y2gpIHsgcmV0dXJu
ICdcXCcgKyBlc2NhcGVzW21hdGNoXTsgfSk7CisKKyAgICAgICAgICAgICAgICBpZiAoZXNjYXBl
KSB7CisgICAgICAgICAgICAgICAgICAgIHNvdXJjZSArPSAiJytcbigoX190PSgiICsgZXNjYXBl
ICsgIikpPT1udWxsPycnOl8uZXNjYXBlKF9fdCkpK1xuJyI7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGlmIChpbnRlcnBvbGF0ZSkgeworICAgICAgICAgICAgICAgICAgICBz
b3VyY2UgKz0gIicrXG4oKF9fdD0oIiArIGludGVycG9sYXRlICsgIikpPT1udWxsPycnOl9fdCkr
XG4nIjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGV2YWx1YXRlKSB7
CisgICAgICAgICAgICAgICAgICAgIHNvdXJjZSArPSAiJztcbiIgKyBldmFsdWF0ZSArICJcbl9f
cCs9JyI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGluZGV4ID0gb2Zmc2V0
ICsgbWF0Y2gubGVuZ3RoOworICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaDsKKyAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgc291cmNlICs9ICInO1xuIjsKKworICAgICAgICAgICAgLy8g
SWYgYSB2YXJpYWJsZSBpcyBub3Qgc3BlY2lmaWVkLCBwbGFjZSBkYXRhIHZhbHVlcyBpbiBsb2Nh
bCBzY29wZS4KKyAgICAgICAgICAgIGlmICghc2V0dGluZ3MudmFyaWFibGUpIHNvdXJjZSA9ICd3
aXRoKG9ianx8e30pe1xuJyArIHNvdXJjZSArICd9XG4nOworCisgICAgICAgICAgICBzb3VyY2Ug
PSAidmFyIF9fdCxfX3A9JycsX19qPUFycmF5LnByb3RvdHlwZS5qb2luLCIgKworICAgICAgICAg
ICAgICAgICJwcmludD1mdW5jdGlvbigpe19fcCs9X19qLmNhbGwoYXJndW1lbnRzLCcnKTt9O1xu
IiArCisgICAgICAgICAgICAgICAgc291cmNlICsgInJldHVybiBfX3A7XG4iOworCisgICAgICAg
ICAgICB0cnkgeworICAgICAgICAgICAgICAgIHJlbmRlciA9IG5ldyBGdW5jdGlvbihzZXR0aW5n
cy52YXJpYWJsZSB8fCAnb2JqJywgJ18nLCBzb3VyY2UpOworICAgICAgICAgICAgfSBjYXRjaCAo
ZSkgeworICAgICAgICAgICAgICAgIGUuc291cmNlID0gc291cmNlOworICAgICAgICAgICAgICAg
IHRocm93IGU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChkYXRhKSByZXR1cm4g
cmVuZGVyKGRhdGEsIF8pOworICAgICAgICAgICAgdmFyIHRlbXBsYXRlID0gZnVuY3Rpb24oZGF0
YSkgeworICAgICAgICAgICAgICAgIHJldHVybiByZW5kZXIuY2FsbCh0aGlzLCBkYXRhLCBfKTsK
KyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIC8vIFByb3ZpZGUgdGhlIGNvbXBpbGVkIGZ1
bmN0aW9uIHNvdXJjZSBhcyBhIGNvbnZlbmllbmNlIGZvciBwcmVjb21waWxhdGlvbi4KKyAgICAg
ICAgICAgIHRlbXBsYXRlLnNvdXJjZSA9ICdmdW5jdGlvbignICsgKHNldHRpbmdzLnZhcmlhYmxl
IHx8ICdvYmonKSArICcpe1xuJyArIHNvdXJjZSArICd9JzsKKworICAgICAgICAgICAgcmV0dXJu
IHRlbXBsYXRlOworICAgICAgICB9OworCisgICAgICAgIHJldHVybiBfOworICAgIH0pKHt9KTsK
KworICAgIGlmIChsb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ3RvZG9tdmMuY29tJykgeworICAgICAg
ICAoZnVuY3Rpb24oaSxzLG8sZyxyLGEsbSl7aVsnR29vZ2xlQW5hbHl0aWNzT2JqZWN0J109cjtp
W3JdPWlbcl18fGZ1bmN0aW9uKCl7CisgICAgICAgIChpW3JdLnE9aVtyXS5xfHxbXSkucHVzaChh
cmd1bWVudHMpfSxpW3JdLmw9MSpuZXcgRGF0ZSgpO2E9cy5jcmVhdGVFbGVtZW50KG8pLAorICAg
ICAgICBtPXMuZ2V0RWxlbWVudHNCeVRhZ05hbWUobylbMF07YS5hc3luYz0xO2Euc3JjPWc7bS5w
YXJlbnROb2RlLmluc2VydEJlZm9yZShhLG0pCisgICAgICAgIH0pKHdpbmRvdyxkb2N1bWVudCwn
c2NyaXB0JywnaHR0cHM6Ly93d3cuZ29vZ2xlLWFuYWx5dGljcy5jb20vYW5hbHl0aWNzLmpzJywn
Z2EnKTsKKyAgICAgICAgZ2EoJ2NyZWF0ZScsICdVQS0zMTA4MTA2Mi0xJywgJ2F1dG8nKTsKKyAg
ICAgICAgZ2EoJ3NlbmQnLCAncGFnZXZpZXcnKTsKKyAgICB9CisgICAgLyoganNoaW50IGlnbm9y
ZTplbmQgKi8KKworICAgIGZ1bmN0aW9uIHJlZGlyZWN0KCkgeworICAgICAgICBpZiAobG9jYXRp
b24uaG9zdG5hbWUgPT09ICd0YXN0ZWpzLmdpdGh1Yi5pbycpIHsKKyAgICAgICAgICAgIGxvY2F0
aW9uLmhyZWYgPSBsb2NhdGlvbi5ocmVmLnJlcGxhY2UoJ3Rhc3RlanMuZ2l0aHViLmlvL3RvZG9t
dmMnLCAndG9kb212Yy5jb20nKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIGZp
bmRSb290KCkgeworICAgICAgICB2YXIgYmFzZSA9IGxvY2F0aW9uLmhyZWYuaW5kZXhPZignZXhh
bXBsZXMvJyk7CisgICAgICAgIHJldHVybiBsb2NhdGlvbi5ocmVmLnN1YnN0cigwLCBiYXNlKTsK
KyAgICB9CisKKyAgICBmdW5jdGlvbiBnZXRGaWxlKGZpbGUsIGNhbGxiYWNrKSB7CisgICAgICAg
IGlmICghbG9jYXRpb24uaG9zdCkgeworICAgICAgICAgICAgcmV0dXJuIGNvbnNvbGUuaW5mbygn
TWlzcyB0aGUgaW5mbyBiYXI/IFJ1biBUb2RvTVZDIGZyb20gYSBzZXJ2ZXIgdG8gYXZvaWQgYSBj
cm9zcy1vcmlnaW4gZXJyb3IuJyk7CisgICAgICAgIH0KKworICAgICAgICB2YXIgeGhyID0gbmV3
IFhNTEh0dHBSZXF1ZXN0KCk7CisKKyAgICAgICAgeGhyLm9wZW4oJ0dFVCcsIGZpbmRSb290KCkg
KyBmaWxlLCB0cnVlKTsKKyAgICAgICAgeGhyLnNlbmQoKTsKKworICAgICAgICB4aHIub25sb2Fk
ID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgaWYgKHhoci5zdGF0dXMgPT09IDIwMCAmJiBj
YWxsYmFjaykgeworICAgICAgICAgICAgICAgIGNhbGxiYWNrKHhoci5yZXNwb25zZVRleHQpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0KKworICAgIGZ1bmN0aW9uIExlYXJuKGxl
YXJuSlNPTiwgY29uZmlnKSB7CisgICAgICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBMZWFybikp
IHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgTGVhcm4obGVhcm5KU09OLCBjb25maWcpOworICAg
ICAgICB9CisKKyAgICAgICAgdmFyIHRlbXBsYXRlLCBmcmFtZXdvcms7CisKKyAgICAgICAgaWYg
KHR5cGVvZiBsZWFybkpTT04gIT09ICdvYmplY3QnKSB7CisgICAgICAgICAgICB0cnkgeworICAg
ICAgICAgICAgICAgIGxlYXJuSlNPTiA9IEpTT04ucGFyc2UobGVhcm5KU09OKTsKKyAgICAgICAg
ICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKworICAgICAgICBpZiAoY29uZmlnKSB7CisgICAgICAgICAgICB0ZW1wbGF0
ZSA9IGNvbmZpZy50ZW1wbGF0ZTsKKyAgICAgICAgICAgIGZyYW1ld29yayA9IGNvbmZpZy5mcmFt
ZXdvcms7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXRlbXBsYXRlICYmIGxlYXJuSlNPTi50
ZW1wbGF0ZXMpIHsKKyAgICAgICAgICAgIHRlbXBsYXRlID0gbGVhcm5KU09OLnRlbXBsYXRlcy50
b2RvbXZjOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFmcmFtZXdvcmsgJiYgZG9jdW1lbnQu
cXVlcnlTZWxlY3RvcignW2RhdGEtZnJhbWV3b3JrXScpKSB7CisgICAgICAgICAgICBmcmFtZXdv
cmsgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbZGF0YS1mcmFtZXdvcmtdJykuZGF0YXNldC5m
cmFtZXdvcms7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLnRlbXBsYXRlID0gdGVtcGxhdGU7
CisKKyAgICAgICAgaWYgKGxlYXJuSlNPTi5iYWNrZW5kKSB7CisgICAgICAgICAgICB0aGlzLmZy
YW1ld29ya0pTT04gPSBsZWFybkpTT04uYmFja2VuZDsKKyAgICAgICAgICAgIHRoaXMuZnJhbWV3
b3JrSlNPTi5pc3N1ZUxhYmVsID0gZnJhbWV3b3JrOworICAgICAgICAgICAgdGhpcy5hcHBlbmQo
eworICAgICAgICAgICAgICAgIGJhY2tlbmQ6IHRydWUKKyAgICAgICAgICAgIH0pOworICAgICAg
ICB9IGVsc2UgaWYgKGxlYXJuSlNPTltmcmFtZXdvcmtdKSB7CisgICAgICAgICAgICB0aGlzLmZy
YW1ld29ya0pTT04gPSBsZWFybkpTT05bZnJhbWV3b3JrXTsKKyAgICAgICAgICAgIHRoaXMuZnJh
bWV3b3JrSlNPTi5pc3N1ZUxhYmVsID0gZnJhbWV3b3JrOworICAgICAgICAgICAgdGhpcy5hcHBl
bmQoKTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuZmV0Y2hJc3N1ZUNvdW50KCk7CisgICAg
fQorCisgICAgTGVhcm4ucHJvdG90eXBlLmFwcGVuZCA9IGZ1bmN0aW9uIChvcHRzKSB7CisgICAg
ICAgIHZhciBhc2lkZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2FzaWRlJyk7CisgICAgICAg
IGFzaWRlLmlubmVySFRNTCA9IF8udGVtcGxhdGUodGhpcy50ZW1wbGF0ZSwgdGhpcy5mcmFtZXdv
cmtKU09OKTsKKyAgICAgICAgYXNpZGUuY2xhc3NOYW1lID0gJ2xlYXJuJzsKKworICAgICAgICBp
ZiAob3B0cyAmJiBvcHRzLmJhY2tlbmQpIHsKKyAgICAgICAgICAgIC8vIFJlbW92ZSBkZW1vIGxp
bmsKKyAgICAgICAgICAgIHZhciBzb3VyY2VMaW5rcyA9IGFzaWRlLnF1ZXJ5U2VsZWN0b3IoJy5z
b3VyY2UtbGlua3MnKTsKKyAgICAgICAgICAgIHZhciBoZWFkaW5nID0gc291cmNlTGlua3MuZmly
c3RFbGVtZW50Q2hpbGQ7CisgICAgICAgICAgICB2YXIgc291cmNlTGluayA9IHNvdXJjZUxpbmtz
Lmxhc3RFbGVtZW50Q2hpbGQ7CisgICAgICAgICAgICAvLyBDb3JyZWN0IGxpbmsgcGF0aAorICAg
ICAgICAgICAgdmFyIGhyZWYgPSBzb3VyY2VMaW5rLmdldEF0dHJpYnV0ZSgnaHJlZicpOworICAg
ICAgICAgICAgc291cmNlTGluay5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBocmVmLnN1YnN0cihocmVm
Lmxhc3RJbmRleE9mKCdodHRwJykpKTsKKyAgICAgICAgICAgIHNvdXJjZUxpbmtzLmlubmVySFRN
TCA9IGhlYWRpbmcub3V0ZXJIVE1MICsgc291cmNlTGluay5vdXRlckhUTUw7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAvLyBMb2NhbGl6ZSBkZW1vIGxpbmtzCisgICAgICAgICAgICB2
YXIgZGVtb0xpbmtzID0gYXNpZGUucXVlcnlTZWxlY3RvckFsbCgnLmRlbW8tbGluaycpOworICAg
ICAgICAgICAgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChkZW1vTGlua3MsIGZ1bmN0aW9u
IChkZW1vTGluaykgeworICAgICAgICAgICAgICAgIGlmIChkZW1vTGluay5nZXRBdHRyaWJ1dGUo
J2hyZWYnKS5zdWJzdHIoMCwgNCkgIT09ICdodHRwJykgeworICAgICAgICAgICAgICAgICAgICBk
ZW1vTGluay5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBmaW5kUm9vdCgpICsgZGVtb0xpbmsuZ2V0QXR0
cmlidXRlKCdocmVmJykpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0pOworICAg
ICAgICB9CisKKyAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc05hbWUgPSAoZG9jdW1lbnQuYm9k
eS5jbGFzc05hbWUgKyAnIGxlYXJuLWJhcicpLnRyaW0oKTsKKyAgICAgICAgZG9jdW1lbnQuYm9k
eS5pbnNlcnRBZGphY2VudEhUTUwoJ2FmdGVyQmVnaW4nLCBhc2lkZS5vdXRlckhUTUwpOworICAg
IH07CisKKyAgICBMZWFybi5wcm90b3R5cGUuZmV0Y2hJc3N1ZUNvdW50ID0gZnVuY3Rpb24gKCkg
eworICAgICAgICB2YXIgaXNzdWVMaW5rID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lzc3Vl
LWNvdW50LWxpbmsnKTsKKyAgICAgICAgaWYgKGlzc3VlTGluaykgeworICAgICAgICAgICAgdmFy
IHVybCA9IGlzc3VlTGluay5ocmVmLnJlcGxhY2UoJ2h0dHBzOi8vZ2l0aHViLmNvbScsICdodHRw
czovL2FwaS5naXRodWIuY29tL3JlcG9zJyk7CisgICAgICAgICAgICB2YXIgeGhyID0gbmV3IFhN
TEh0dHBSZXF1ZXN0KCk7CisgICAgICAgICAgICB4aHIub3BlbignR0VUJywgdXJsLCB0cnVlKTsK
KyAgICAgICAgICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbiAoZSkgeworICAgICAgICAgICAgICAg
IHZhciBwYXJzZWRSZXNwb25zZSA9IEpTT04ucGFyc2UoZS50YXJnZXQucmVzcG9uc2VUZXh0KTsK
KyAgICAgICAgICAgICAgICBpZiAocGFyc2VkUmVzcG9uc2UgaW5zdGFuY2VvZiBBcnJheSkgewor
ICAgICAgICAgICAgICAgICAgICB2YXIgY291bnQgPSBwYXJzZWRSZXNwb25zZS5sZW5ndGg7Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChjb3VudCAhPT0gMCkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgaXNzdWVMaW5rLmlubmVySFRNTCA9ICdUaGlzIGFwcCBoYXMgJyArIGNvdW50ICsgJyBv
cGVuIGlzc3Vlcyc7CisgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnaXNzdWUtY291bnQnKS5zdHlsZS5kaXNwbGF5ID0gJ2lubGluZSc7CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9OworICAgICAgICAg
ICAgeGhyLnNlbmQoKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICByZWRpcmVjdCgpOworICAg
IGdldEZpbGUoJ2xlYXJuLmpzb24nLCBMZWFybik7Cit9KSgpOwpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVz
L2VzMjAxNS9ub2RlX21vZHVsZXMvdG9kb212Yy1jb21tb24vcGFja2FnZS5qc29uIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVz
L2VzMjAxNS9ub2RlX21vZHVsZXMvdG9kb212Yy1jb21tb24vcGFja2FnZS5qc29uCm5ldyBmaWxl
IG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjgwNTZjNGJmMDc4NzgwOTI5M2MxZDMxZTViMmYzZmQ4NDNjMTEyZmEKLS0tIC9kZXYvbnVs
bAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3Zh
bmlsbGEtZXhhbXBsZXMvZXMyMDE1L25vZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1vbi9wYWNrYWdl
Lmpzb24KQEAgLTAsMCArMSw2NCBAQAoreworICAibmFtZSI6ICJ0b2RvbXZjLWNvbW1vbiIsCisg
ICJ2ZXJzaW9uIjogIjEuMC4yIiwKKyAgImRlc2NyaXB0aW9uIjogIkNvbW1vbiBUb2RvTVZDIHV0
aWxpdGllcyB1c2VkIGJ5IG91ciBhcHBzIiwKKyAgImxpY2Vuc2UiOiAiTUlUIiwKKyAgInJlcG9z
aXRvcnkiOiB7CisgICAgInR5cGUiOiAiZ2l0IiwKKyAgICAidXJsIjogImdpdCtodHRwczovL2dp
dGh1Yi5jb20vdGFzdGVqcy90b2RvbXZjLWNvbW1vbi5naXQiCisgIH0sCisgICJhdXRob3IiOiB7
CisgICAgIm5hbWUiOiAiVGFzdGVKUyIKKyAgfSwKKyAgIm1haW4iOiAiYmFzZS5qcyIsCisgICJm
aWxlcyI6IFsKKyAgICAiYmFzZS5qcyIsCisgICAgImJhc2UuY3NzIgorICBdLAorICAia2V5d29y
ZHMiOiBbCisgICAgInRvZG9tdmMiLAorICAgICJ0YXN0ZWpzIiwKKyAgICAidXRpbCIsCisgICAg
InV0aWxpdGllcyIKKyAgXSwKKyAgImdpdEhlYWQiOiAiZTgyZDBjNzllMDE2ODdjZTc0MDdkZjc4
NmNjNzg0YWQ4MjE2NmNiMyIsCisgICJidWdzIjogeworICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRo
dWIuY29tL3Rhc3RlanMvdG9kb212Yy1jb21tb24vaXNzdWVzIgorICB9LAorICAiaG9tZXBhZ2Ui
OiAiaHR0cHM6Ly9naXRodWIuY29tL3Rhc3RlanMvdG9kb212Yy1jb21tb24iLAorICAiX2lkIjog
InRvZG9tdmMtY29tbW9uQDEuMC4yIiwKKyAgInNjcmlwdHMiOiB7fSwKKyAgIl9zaGFzdW0iOiAi
ZWIzYWI2MTI4MWFjNzQ4MDlmNTg2OWM5MTdjN2IwOGJjODQyMzRlMCIsCisgICJfZnJvbSI6ICJ0
b2RvbXZjLWNvbW1vbkA+PTEuMC4yIDwyLjAuMCIsCisgICJfbnBtVmVyc2lvbiI6ICIyLjcuNCIs
CisgICJfbm9kZVZlcnNpb24iOiAiMC4xMi4yIiwKKyAgIl9ucG1Vc2VyIjogeworICAgICJuYW1l
IjogInNpbmRyZXNvcmh1cyIsCisgICAgImVtYWlsIjogInNpbmRyZXNvcmh1c0BnbWFpbC5jb20i
CisgIH0sCisgICJkaXN0IjogeworICAgICJzaGFzdW0iOiAiZWIzYWI2MTI4MWFjNzQ4MDlmNTg2
OWM5MTdjN2IwOGJjODQyMzRlMCIsCisgICAgInRhcmJhbGwiOiAiaHR0cDovL3JlZ2lzdHJ5Lm5w
bWpzLm9yZy90b2RvbXZjLWNvbW1vbi8tL3RvZG9tdmMtY29tbW9uLTEuMC4yLnRneiIKKyAgfSwK
KyAgIm1haW50YWluZXJzIjogWworICAgIHsKKyAgICAgICJuYW1lIjogInNpbmRyZXNvcmh1cyIs
CisgICAgICAiZW1haWwiOiAic2luZHJlc29yaHVzQGdtYWlsLmNvbSIKKyAgICB9LAorICAgIHsK
KyAgICAgICJuYW1lIjogImFkZHlvc21hbmkiLAorICAgICAgImVtYWlsIjogImFkZHlvc21hbmlA
Z21haWwuY29tIgorICAgIH0sCisgICAgeworICAgICAgIm5hbWUiOiAicGFzc3kiLAorICAgICAg
ImVtYWlsIjogInBoYXJ0aWdAcmRyZWkubmV0IgorICAgIH0sCisgICAgeworICAgICAgIm5hbWUi
OiAic3RlcGhlbnBsdXNwbHVzIiwKKyAgICAgICJlbWFpbCI6ICJzYXdjaHVrQGdtYWlsLmNvbSIK
KyAgICB9CisgIF0sCisgICJkaXJlY3RvcmllcyI6IHt9LAorICAiX3Jlc29sdmVkIjogImh0dHBz
Oi8vcmVnaXN0cnkubnBtanMub3JnL3RvZG9tdmMtY29tbW9uLy0vdG9kb212Yy1jb21tb24tMS4w
LjIudGd6IiwKKyAgInJlYWRtZSI6ICJFUlJPUjogTm8gUkVBRE1FIGRhdGEgZm91bmQhIgorfQpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS9ub2RlX21vZHVsZXMvdG9kb212Yy1jb21tb24vcmVh
ZG1lLm1kIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92
YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS9ub2RlX21vZHVsZXMvdG9kb212Yy1jb21tb24vcmVhZG1l
Lm1kCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjdhNWRlNTExOGYzZmM3NzU4ZThkZGMwYTY4Njg3NDljZWU5Y2FmOTUK
LS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1L25vZGVfbW9kdWxlcy90b2RvbXZjLWNv
bW1vbi9yZWFkbWUubWQKQEAgLTAsMCArMSwxNSBAQAorIyB0b2RvbXZjLWNvbW1vbgorCis+IENv
bW1vbiBUb2RvTVZDIHV0aWxpdGllcyB1c2VkIGJ5IG91ciBhcHBzCisKKworIyMgSW5zdGFsbAor
CitgYGAKKyQgbnBtIGluc3RhbGwgLS1zYXZlIHRvZG9tdmMtY29tbW9uCitgYGAKKworCisjIyBM
aWNlbnNlCisKK01JVCDCqSBbVGFzdGVKU10oaHR0cDovL3Rhc3RlanMuY29tKQpkaWZmIC0tZ2l0
IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxh
LWV4YW1wbGVzL2VzMjAxNS9wYWNrYWdlLmpzb24gYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1L3BhY2thZ2UuanNv
bgpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hMjZiYzkyZmNhNzE2NWVhYTg3YTA3NGVjZTUzZmJmYWEyZDhkZjlmCi0t
LSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS9wYWNrYWdlLmpzb24KQEAgLTAsMCArMSw3
IEBACit7CisgICJwcml2YXRlIjogdHJ1ZSwKKyAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAidG9k
b212Yy1hcHAtY3NzIjogIl4yLjAuMSIsCisgICAgInRvZG9tdmMtY29tbW9uIjogIl4xLjAuMiIK
KyAgfQorfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS9zcmMvLmpzaGludHJjIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVz
L2VzMjAxNS9zcmMvLmpzaGludHJjCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZmZDQ4ZWIyOTFhM2ZjNGRkNWMyOWE3
MmVlZGY4Yzc1ZTM5ODdkOTYKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1L3NyYy8u
anNoaW50cmMKQEAgLTAsMCArMSwzIEBACit7CisJImVzbmV4dCI6IHRydWUKK30KZGlmZiAtLWdp
dCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxs
YS1leGFtcGxlcy9lczIwMTUvc3JjL2FwcC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUvc3JjL2FwcC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lNjVkOWM1NmQxYjM4YTk5YjdlZjE3YjgwMjRjYmEyMDc5ODNlODg5Ci0tLSAv
ZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS9zcmMvYXBwLmpzCkBAIC0wLDAgKzEsMjcgQEAK
Kyd1c2Ugc3RyaWN0JzsKKworbGV0IHRvZG87Citjb25zdCBzZXRWaWV3ID0gKCkgPT4gdG9kby5j
b250cm9sbGVyLnNldFZpZXcoZG9jdW1lbnQubG9jYXRpb24uaGFzaCk7CisKK2NsYXNzIFRvZG8g
eworICAgIC8qKgorICAgICAqIEluaXQgbmV3IFRvZG8gTGlzdAorICAgICAqIEBwYXJhbSAge3N0
cmluZ30gVGhlIG5hbWUgb2YgeW91ciBsaXN0CisgICAgICovCisgICAgY29uc3RydWN0b3IobmFt
ZSkgeworICAgICAgICB0aGlzLnN0b3JhZ2UgPSBuZXcgU3RvcmUobmFtZSk7CisgICAgICAgIHRo
aXMubW9kZWwgPSBuZXcgTW9kZWwodGhpcy5zdG9yYWdlKTsKKworICAgICAgICB0aGlzLnRlbXBs
YXRlID0gbmV3IFRlbXBsYXRlKCk7CisgICAgICAgIHRoaXMudmlldyA9IG5ldyBWaWV3KHRoaXMu
dGVtcGxhdGUpOworCisgICAgICAgIHRoaXMuY29udHJvbGxlciA9IG5ldyBDb250cm9sbGVyKHRo
aXMubW9kZWwsIHRoaXMudmlldyk7CisgICAgfQorfQorCiskb24od2luZG93LCAnbG9hZCcsICgp
ID0+IHsKKyAgICB0b2RvID0gbmV3IFRvZG8oJ3RvZG9zLXZhbmlsbGFqcycpOworICAgIHNldFZp
ZXcoKTsKK30pOworCiskb24od2luZG93LCAnaGFzaGNoYW5nZScsIHNldFZpZXcpOwpkaWZmIC0t
Z2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5p
bGxhLWV4YW1wbGVzL2VzMjAxNS9zcmMvY29udHJvbGxlci5qcyBiL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUvc3Jj
L2NvbnRyb2xsZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDI2OTNlYzIwZWUxMjViZjgxZWZmZTdhNzJiODM3
NGUxNjI4ZDlhMwotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUvc3JjL2NvbnRyb2xs
ZXIuanMKQEAgLTAsMCArMSwyMTQgQEAKKyd1c2Ugc3RyaWN0JzsKKworY2xhc3MgQ29udHJvbGxl
ciB7CisgICAgLyoqCisgICAgICogVGFrZSBhIG1vZGVsICYgdmlldywgdGhlbiBhY3QgYXMgY29u
dHJvbGxlciBiZXR3ZWVuIHRoZW0KKyAgICAgKiBAcGFyYW0gIHtvYmplY3R9IG1vZGVsIFRoZSBt
b2RlbCBpbnN0YW5jZQorICAgICAqIEBwYXJhbSAge29iamVjdH0gdmlldyAgVGhlIHZpZXcgaW5z
dGFuY2UKKyAgICAgKi8KKyAgICBjb25zdHJ1Y3Rvcihtb2RlbCwgdmlldykgeworICAgICAgICB0
aGlzLm1vZGVsID0gbW9kZWw7CisgICAgICAgIHRoaXMudmlldyA9IHZpZXc7CisKKyAgICAgICAg
dGhpcy52aWV3LmJpbmQoJ25ld1RvZG8nLCB0aXRsZSA9PiB0aGlzLmFkZEl0ZW0odGl0bGUpKTsK
KyAgICAgICAgdGhpcy52aWV3LmJpbmQoJ2l0ZW1FZGl0JywgaXRlbSA9PiB0aGlzLmVkaXRJdGVt
KGl0ZW0uaWQpKTsKKyAgICAgICAgdGhpcy52aWV3LmJpbmQoJ2l0ZW1FZGl0RG9uZScsIGl0ZW0g
PT4gdGhpcy5lZGl0SXRlbVNhdmUoaXRlbS5pZCwgaXRlbS50aXRsZSkpOworICAgICAgICB0aGlz
LnZpZXcuYmluZCgnaXRlbUVkaXRDYW5jZWwnLCBpdGVtID0+IHRoaXMuZWRpdEl0ZW1DYW5jZWwo
aXRlbS5pZCkpOworICAgICAgICB0aGlzLnZpZXcuYmluZCgnaXRlbVJlbW92ZScsIGl0ZW0gPT4g
dGhpcy5yZW1vdmVJdGVtKGl0ZW0uaWQpKTsKKyAgICAgICAgdGhpcy52aWV3LmJpbmQoJ2l0ZW1U
b2dnbGUnLCBpdGVtID0+IHRoaXMudG9nZ2xlQ29tcGxldGUoaXRlbS5pZCwgaXRlbS5jb21wbGV0
ZWQpKTsKKyAgICAgICAgdGhpcy52aWV3LmJpbmQoJ3JlbW92ZUNvbXBsZXRlZCcsICgpID0+IHRo
aXMucmVtb3ZlQ29tcGxldGVkSXRlbXMoKSk7CisgICAgICAgIHRoaXMudmlldy5iaW5kKCd0b2dn
bGVBbGwnLCBzdGF0dXMgPT4gdGhpcy50b2dnbGVBbGwoc3RhdHVzLmNvbXBsZXRlZCkpOworICAg
IH0KKworICAgIC8qKgorICAgICAqIExvYWQgJiBJbml0aWFsaXplIHRoZSB2aWV3CisgICAgICog
QHBhcmFtIHtzdHJpbmd9ICAnJyB8ICdhY3RpdmUnIHwgJ2NvbXBsZXRlZCcKKyAgICAgKi8KKyAg
ICBzZXRWaWV3KGhhc2gpeworICAgICAgICBsZXQgcm91dGUgPSBoYXNoLnNwbGl0KCcvJylbMV07
CisgICAgICAgIGxldCBwYWdlID0gcm91dGUgfHwgJyc7CisgICAgICAgIHRoaXMuX3VwZGF0ZUZp
bHRlcihwYWdlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBFdmVudCBmaXJlcyBvbiBsb2Fk
LiBHZXRzIGFsbCBpdGVtcyAmIGRpc3BsYXlzIHRoZW0KKyAgICAgKi8KKyAgICBzaG93QWxsKCl7
CisgICAgICAgIHRoaXMubW9kZWwucmVhZChkYXRhID0+IHRoaXMudmlldy5yZW5kZXIoJ3Nob3dF
bnRyaWVzJywgZGF0YSkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJlbmRlcnMgYWxsIGFj
dGl2ZSB0YXNrcworICAgICAqLworICAgIHNob3dBY3RpdmUoKXsKKyAgICAgICAgdGhpcy5tb2Rl
bC5yZWFkKHtjb21wbGV0ZWQ6IGZhbHNlfSwgZGF0YSA9PiB0aGlzLnZpZXcucmVuZGVyKCdzaG93
RW50cmllcycsIGRhdGEpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZW5kZXJzIGFsbCBj
b21wbGV0ZWQgdGFza3MKKyAgICAgKi8KKyAgICBzaG93Q29tcGxldGVkKCl7CisgICAgICAgIHRo
aXMubW9kZWwucmVhZCh7Y29tcGxldGVkOiB0cnVlfSwgZGF0YSA9PiB0aGlzLnZpZXcucmVuZGVy
KCdzaG93RW50cmllcycsIGRhdGEpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBbiBldmVu
dCB0byBmaXJlIHdoZW5ldmVyIHlvdSB3YW50IHRvIGFkZCBhbiBpdGVtLiBTaW1wbHkgcGFzcyBp
biB0aGUgZXZlbnQKKyAgICAgKiBvYmplY3QgYW5kIGl0J2xsIGhhbmRsZSB0aGUgRE9NIGluc2Vy
dGlvbiBhbmQgc2F2aW5nIG9mIHRoZSBuZXcgaXRlbS4KKyAgICAgKi8KKyAgICBhZGRJdGVtKHRp
dGxlKXsKKyAgICAgICAgaWYgKHRpdGxlLnRyaW0oKSA9PT0gJycpIHsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMubW9kZWwuY3JlYXRlKHRpdGxlLCAoKSA9
PiB7CisgICAgICAgICAgICB0aGlzLnZpZXcucmVuZGVyKCdjbGVhck5ld1RvZG8nKTsKKyAgICAg
ICAgICAgIHRoaXMuX2ZpbHRlcih0cnVlKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgLyoK
KyAgICAgKiBUcmlnZ2VycyB0aGUgaXRlbSBlZGl0aW5nIG1vZGUuCisgICAgICovCisgICAgZWRp
dEl0ZW0oaWQpeworICAgICAgICB0aGlzLm1vZGVsLnJlYWQoaWQsIGRhdGEgPT4geworICAgICAg
ICAgICAgbGV0IHRpdGxlID0gZGF0YVswXS50aXRsZTsKKyAgICAgICAgICAgIHRoaXMudmlldy5y
ZW5kZXIoJ2VkaXRJdGVtJywge2lkLCB0aXRsZX0pOworICAgICAgICB9KTsKKyAgICB9CisKKyAg
ICAvKgorICAgICAqIEZpbmlzaGVzIHRoZSBpdGVtIGVkaXRpbmcgbW9kZSBzdWNjZXNzZnVsbHku
CisgICAgICovCisgICAgZWRpdEl0ZW1TYXZlKGlkLCB0aXRsZSl7CisgICAgICAgIHRpdGxlID0g
dGl0bGUudHJpbSgpOworCisgICAgICAgIGlmICh0aXRsZS5sZW5ndGggIT09IDApIHsKKyAgICAg
ICAgICAgIHRoaXMubW9kZWwudXBkYXRlKGlkLCB7dGl0bGV9LCAoKSA9PiB7CisgICAgICAgICAg
ICAgICAgdGhpcy52aWV3LnJlbmRlcignZWRpdEl0ZW1Eb25lJywge2lkLCB0aXRsZX0pOworICAg
ICAgICAgICAgfSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0aGlzLnJlbW92ZUl0
ZW0oaWQpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoKKyAgICAgKiBDYW5jZWxzIHRoZSBp
dGVtIGVkaXRpbmcgbW9kZS4KKyAgICAgKi8KKyAgICBlZGl0SXRlbUNhbmNlbChpZCl7CisgICAg
ICAgIHRoaXMubW9kZWwucmVhZChpZCwgZGF0YSA9PiB7CisgICAgICAgICAgICBsZXQgdGl0bGUg
PSBkYXRhWzBdLnRpdGxlOworICAgICAgICAgICAgdGhpcy52aWV3LnJlbmRlcignZWRpdEl0ZW1E
b25lJywge2lkLCB0aXRsZX0pOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAg
KiBGaW5kIHRoZSBET00gZWxlbWVudCB3aXRoIGdpdmVuIElELAorICAgICAqIFRoZW4gcmVtb3Zl
IGl0IGZyb20gRE9NICYgU3RvcmFnZQorICAgICAqLworICAgIHJlbW92ZUl0ZW0oaWQpeworICAg
ICAgICB0aGlzLm1vZGVsLnJlbW92ZShpZCwgKCkgPT4gdGhpcy52aWV3LnJlbmRlcigncmVtb3Zl
SXRlbScsIGlkKSk7CisgICAgICAgIHRoaXMuX2ZpbHRlcigpOworICAgIH0KKworICAgIC8qKgor
ICAgICAqIFdpbGwgcmVtb3ZlIGFsbCBjb21wbGV0ZWQgaXRlbXMgZnJvbSB0aGUgRE9NIGFuZCBz
dG9yYWdlLgorICAgICAqLworICAgIHJlbW92ZUNvbXBsZXRlZEl0ZW1zKCl7CisgICAgICAgIHRo
aXMubW9kZWwucmVhZCh7Y29tcGxldGVkOiB0cnVlfSwgZGF0YSA9PiB7CisgICAgICAgICAgICBm
b3IgKGxldCBpdGVtIG9mIGRhdGEpIHsKKyAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZUl0ZW0o
aXRlbS5pZCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworCisgICAgICAgIHRoaXMuX2Zp
bHRlcigpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdpdmUgaXQgYW4gSUQgb2YgYSBtb2Rl
bCBhbmQgYSBjaGVja2JveCBhbmQgaXQgd2lsbCB1cGRhdGUgdGhlIGl0ZW0KKyAgICAgKiBpbiBz
dG9yYWdlIGJhc2VkIG9uIHRoZSBjaGVja2JveCdzIHN0YXRlLgorICAgICAqCisgICAgICogQHBh
cmFtIHtudW1iZXJ9IGlkIFRoZSBJRCBvZiB0aGUgZWxlbWVudCB0byBjb21wbGV0ZSBvciB1bmNv
bXBsZXRlCisgICAgICogQHBhcmFtIHtvYmplY3R9IGNoZWNrYm94IFRoZSBjaGVja2JveCB0byBj
aGVjayB0aGUgc3RhdGUgb2YgY29tcGxldGUKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAg
ICAgb3Igbm90CisgICAgICogQHBhcmFtIHtib29sZWFufHVuZGVmaW5lZH0gc2lsZW50IFByZXZl
bnQgcmUtZmlsdGVyaW5nIHRoZSB0b2RvIGl0ZW1zCisgICAgICovCisgICAgdG9nZ2xlQ29tcGxl
dGUoaWQsIGNvbXBsZXRlZCwgc2lsZW50KXsKKyAgICAgICAgdGhpcy5tb2RlbC51cGRhdGUoaWQs
IHtjb21wbGV0ZWR9LCAoKSA9PiB7CisgICAgICAgICAgICB0aGlzLnZpZXcucmVuZGVyKCdlbGVt
ZW50Q29tcGxldGUnLCB7aWQsIGNvbXBsZXRlZH0pOworICAgICAgICB9KTsKKworICAgICAgICBp
ZiAoIXNpbGVudCkgeworICAgICAgICAgICAgdGhpcy5fZmlsdGVyKCk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICAvKioKKyAgICAgKiBXaWxsIHRvZ2dsZSBBTEwgY2hlY2tib3hlcycgb24vb2Zm
IHN0YXRlIGFuZCBjb21wbGV0ZW5lc3Mgb2YgbW9kZWxzLgorICAgICAqIEp1c3QgcGFzcyBpbiB0
aGUgZXZlbnQgb2JqZWN0LgorICAgICAqLworICAgIHRvZ2dsZUFsbChjb21wbGV0ZWQpeworICAg
ICAgICB0aGlzLm1vZGVsLnJlYWQoe2NvbXBsZXRlZDogIWNvbXBsZXRlZH0sIGRhdGEgPT4gewor
ICAgICAgICAgICAgZm9yIChsZXQgaXRlbSBvZiBkYXRhKSB7CisgICAgICAgICAgICAgICAgdGhp
cy50b2dnbGVDb21wbGV0ZShpdGVtLmlkLCBjb21wbGV0ZWQsIHRydWUpOworICAgICAgICAgICAg
fQorICAgICAgICB9KTsKKworICAgICAgICB0aGlzLl9maWx0ZXIoKTsKKyAgICB9CisKKyAgICAv
KioKKyAgICAgKiBVcGRhdGVzIHRoZSBwaWVjZXMgb2YgdGhlIHBhZ2Ugd2hpY2ggY2hhbmdlIGRl
cGVuZGluZyBvbiB0aGUgcmVtYWluaW5nCisgICAgICogbnVtYmVyIG9mIHRvZG9zLgorICAgICAq
LworICAgIF91cGRhdGVDb3VudCgpeworICAgICAgICB0aGlzLm1vZGVsLmdldENvdW50KHRvZG9z
ID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGNvbXBsZXRlZCA9IHRvZG9zLmNvbXBsZXRlZDsKKyAg
ICAgICAgICAgIGNvbnN0IHZpc2libGUgPSBjb21wbGV0ZWQgPiAwOworICAgICAgICAgICAgY29u
c3QgY2hlY2tlZCA9IGNvbXBsZXRlZCA9PT0gdG9kb3MudG90YWw7CisKKyAgICAgICAgICAgIHRo
aXMudmlldy5yZW5kZXIoJ3VwZGF0ZUVsZW1lbnRDb3VudCcsIHRvZG9zLmFjdGl2ZSk7CisgICAg
ICAgICAgICB0aGlzLnZpZXcucmVuZGVyKCdjbGVhckNvbXBsZXRlZEJ1dHRvbicsIHtjb21wbGV0
ZWQsIHZpc2libGV9KTsKKworICAgICAgICAgICAgdGhpcy52aWV3LnJlbmRlcigndG9nZ2xlQWxs
Jywge2NoZWNrZWR9KTsKKyAgICAgICAgICAgIHRoaXMudmlldy5yZW5kZXIoJ2NvbnRlbnRCbG9j
a1Zpc2liaWxpdHknLCB7dmlzaWJsZTogdG9kb3MudG90YWwgPiAwfSk7CisgICAgICAgIH0pOwor
ICAgIH0KKworICAgIC8qKgorICAgICAqIFJlLWZpbHRlcnMgdGhlIHRvZG8gaXRlbXMsIGJhc2Vk
IG9uIHRoZSBhY3RpdmUgcm91dGUuCisgICAgICogQHBhcmFtIHtib29sZWFufHVuZGVmaW5lZH0g
Zm9yY2UgIGZvcmNlcyBhIHJlLXBhaW50aW5nIG9mIHRvZG8gaXRlbXMuCisgICAgICovCisgICAg
X2ZpbHRlcihmb3JjZSl7CisgICAgICAgIGxldCBhY3RpdmUgPSB0aGlzLl9hY3RpdmVSb3V0ZTsK
KyAgICAgICAgY29uc3QgYWN0aXZlUm91dGUgPSBhY3RpdmUuY2hhckF0KDApLnRvVXBwZXJDYXNl
KCkgKyBhY3RpdmUuc3Vic3RyKDEpOworCisgICAgICAgIC8vIFVwZGF0ZSB0aGUgZWxlbWVudHMg
b24gdGhlIHBhZ2UsIHdoaWNoIGNoYW5nZSB3aXRoIGVhY2ggY29tcGxldGVkIHRvZG8KKyAgICAg
ICAgdGhpcy5fdXBkYXRlQ291bnQoKTsKKworICAgICAgICAvLyBJZiB0aGUgbGFzdCBhY3RpdmUg
cm91dGUgaXNuJ3QgIkFsbCIsIG9yIHdlJ3JlIHN3aXRjaGluZyByb3V0ZXMsIHdlCisgICAgICAg
IC8vIHJlLWNyZWF0ZSB0aGUgdG9kbyBpdGVtIGVsZW1lbnRzLCBjYWxsaW5nOgorICAgICAgICAv
LyAgIHRoaXMuc2hvd1tBbGx8QWN0aXZlfENvbXBsZXRlZF0oKQorICAgICAgICBpZiAoZm9yY2Ug
fHwgdGhpcy5fbGFzdEFjdGl2ZVJvdXRlICE9PSAnQWxsJyB8fCB0aGlzLl9sYXN0QWN0aXZlUm91
dGUgIT09IGFjdGl2ZVJvdXRlKSB7CisgICAgICAgICAgICB0aGlzWydzaG93JyArIGFjdGl2ZVJv
dXRlXSgpOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fbGFzdEFjdGl2ZVJvdXRlID0gYWN0
aXZlUm91dGU7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2ltcGx5IHVwZGF0ZXMgdGhlIGZp
bHRlciBuYXYncyBzZWxlY3RlZCBzdGF0ZXMKKyAgICAgKi8KKyAgICBfdXBkYXRlRmlsdGVyKGN1
cnJlbnRQYWdlKXsKKyAgICAgICAgLy8gU3RvcmUgYSByZWZlcmVuY2UgdG8gdGhlIGFjdGl2ZSBy
b3V0ZSwgYWxsb3dpbmcgdXMgdG8gcmUtZmlsdGVyIHRvZG8KKyAgICAgICAgLy8gaXRlbXMgYXMg
dGhleSBhcmUgbWFya2VkIGNvbXBsZXRlIG9yIGluY29tcGxldGUuCisgICAgICAgIHRoaXMuX2Fj
dGl2ZVJvdXRlID0gY3VycmVudFBhZ2U7CisKKyAgICAgICAgaWYgKGN1cnJlbnRQYWdlID09PSAn
JykgeworICAgICAgICAgICAgdGhpcy5fYWN0aXZlUm91dGUgPSAnQWxsJzsKKyAgICAgICAgfQor
CisgICAgICAgIHRoaXMuX2ZpbHRlcigpOworCisgICAgICAgIHRoaXMudmlldy5yZW5kZXIoJ3Nl
dEZpbHRlcicsIGN1cnJlbnRQYWdlKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMy
MDE1L3NyYy9oZWxwZXJzLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS9zcmMvaGVscGVycy5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xNTRmYzQ4MzUxNWY4MTljNTQ0MzM5OGI0MjlmZTRjMjVkYjU3ZWM4Ci0tLSAvZGV2L251
bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92
YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS9zcmMvaGVscGVycy5qcwpAQCAtMCwwICsxLDUzIEBACisn
dXNlIHN0cmljdCc7CisKKworLy8gQWxsb3cgZm9yIGxvb3Bpbmcgb24gbm9kZXMgYnkgY2hhaW5p
bmc6CisvLyBxc2EoJy5mb28nKS5mb3JFYWNoKGZ1bmN0aW9uICgpIHt9KQorTm9kZUxpc3QucHJv
dG90eXBlLmZvckVhY2ggPSBBcnJheS5wcm90b3R5cGUuZm9yRWFjaDsKKworLy8gR2V0IGVsZW1l
bnQocykgYnkgQ1NTIHNlbGVjdG9yOgorZnVuY3Rpb24gcXMoc2VsZWN0b3IsIHNjb3BlKSB7Cisg
ICAgcmV0dXJuIChzY29wZSB8fCBkb2N1bWVudCkucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7Cit9
CisKK2Z1bmN0aW9uIHFzYShzZWxlY3Rvciwgc2NvcGUpIHsKKyAgICByZXR1cm4gKHNjb3BlIHx8
IGRvY3VtZW50KS5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKTsKK30KKworLy8gYWRkRXZlbnRM
aXN0ZW5lciB3cmFwcGVyOgorZnVuY3Rpb24gJG9uKHRhcmdldCwgdHlwZSwgY2FsbGJhY2ssIHVz
ZUNhcHR1cmUpIHsKKyAgICB0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcih0eXBlLCBjYWxsYmFjaywg
ISF1c2VDYXB0dXJlKTsKK30KKworLy8gQXR0YWNoIGEgaGFuZGxlciB0byBldmVudCBmb3IgYWxs
IGVsZW1lbnRzIHRoYXQgbWF0Y2ggdGhlIHNlbGVjdG9yLAorLy8gbm93IG9yIGluIHRoZSBmdXR1
cmUsIGJhc2VkIG9uIGEgcm9vdCBlbGVtZW50CitmdW5jdGlvbiAkZGVsZWdhdGUodGFyZ2V0LCBz
ZWxlY3RvciwgdHlwZSwgaGFuZGxlcikgeworICAgIGxldCBkaXNwYXRjaEV2ZW50ID0gZXZlbnQg
PT4geworICAgICAgICBjb25zdCB0YXJnZXRFbGVtZW50ID0gZXZlbnQudGFyZ2V0OworICAgICAg
ICBjb25zdCBwb3RlbnRpYWxFbGVtZW50cyA9IHFzYShzZWxlY3RvciwgdGFyZ2V0KTsKKyAgICAg
ICAgY29uc3QgaGFzTWF0Y2ggPSBBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKHBvdGVudGlh
bEVsZW1lbnRzLCB0YXJnZXRFbGVtZW50KSA+PSAwOworCisgICAgICAgIGlmIChoYXNNYXRjaCkg
eworICAgICAgICAgICAgaGFuZGxlci5jYWxsKHRhcmdldEVsZW1lbnQsIGV2ZW50KTsKKyAgICAg
ICAgfQorICAgIH07CisKKyAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1V
Uy9kb2NzL1dlYi9FdmVudHMvYmx1cgorICAgIGNvbnN0IHVzZUNhcHR1cmUgPSB0eXBlID09PSAn
Ymx1cicgfHwgdHlwZSA9PT0gJ2ZvY3VzJzsKKworICAgICRvbih0YXJnZXQsIHR5cGUsIGRpc3Bh
dGNoRXZlbnQsIHVzZUNhcHR1cmUpOworfQorCisvLyBGaW5kIHRoZSBlbGVtZW50J3MgcGFyZW50
IHdpdGggdGhlIGdpdmVuIHRhZyBuYW1lOgorLy8gJHBhcmVudChxcygnYScpLCAnZGl2JykKK2Z1
bmN0aW9uICRwYXJlbnQoZWxlbWVudCwgdGFnTmFtZSkgeworICAgIGlmICghZWxlbWVudC5wYXJl
bnROb2RlKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoZWxlbWVudC5wYXJl
bnROb2RlLnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gdGFnTmFtZS50b0xvd2VyQ2FzZSgpKSB7
CisgICAgICAgIHJldHVybiBlbGVtZW50LnBhcmVudE5vZGU7CisgICAgfQorCisgICAgcmV0dXJu
ICRwYXJlbnQoZWxlbWVudC5wYXJlbnROb2RlLCB0YWdOYW1lKTsKK30KZGlmZiAtLWdpdCBhL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFt
cGxlcy9lczIwMTUvc3JjL21vZGVsLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS9zcmMvbW9kZWwuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uY2Y4ZDU4MTgxYmI1MjEzM2YwY2Y2N2NkYmU2Mzc2Y2Y2YTdlYTc4NwotLS0gL2Rl
di9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUvc3JjL21vZGVsLmpzCkBAIC0wLDAgKzEsMTE3IEBA
CisndXNlIHN0cmljdCc7CisKKworLyoqCisgKiBDcmVhdGVzIGEgbmV3IE1vZGVsIGluc3RhbmNl
IGFuZCBob29rcyB1cCB0aGUgc3RvcmFnZS4KKyAqIEBjb25zdHJ1Y3RvcgorICogQHBhcmFtIHtv
YmplY3R9IHN0b3JhZ2UgQSByZWZlcmVuY2UgdG8gdGhlIGNsaWVudCBzaWRlIHN0b3JhZ2UgY2xh
c3MKKyAqLworY2xhc3MgTW9kZWwgeworICAgIGNvbnN0cnVjdG9yKHN0b3JhZ2UpIHsKKyAgICAg
ICAgdGhpcy5zdG9yYWdlID0gc3RvcmFnZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDcmVh
dGVzIGEgbmV3IHRvZG8gbW9kZWwKKyAgICAgKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbdGl0
bGVdIFRoZSB0aXRsZSBvZiB0aGUgdGFzaworICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IFtjYWxs
YmFja10gVGhlIGNhbGxiYWNrIHRvIGZpcmUgYWZ0ZXIgdGhlIG1vZGVsIGlzIGNyZWF0ZWQKKyAg
ICAgKi8KKyAgICBjcmVhdGUodGl0bGUsIGNhbGxiYWNrKXsKKyAgICAgICAgdGl0bGUgPSB0aXRs
ZSB8fCAnJzsKKworICAgICAgICBsZXQgbmV3SXRlbSA9IHsKKyAgICAgICAgICAgIHRpdGxlOiB0
aXRsZS50cmltKCksCisgICAgICAgICAgICBjb21wbGV0ZWQ6IGZhbHNlCisgICAgICAgIH07CisK
KyAgICAgICAgdGhpcy5zdG9yYWdlLnNhdmUobmV3SXRlbSwgY2FsbGJhY2spOworICAgIH0KKwor
ICAgIC8qKgorICAgICAqIEZpbmRzIGFuZCByZXR1cm5zIGEgbW9kZWwgaW4gc3RvcmFnZS4gSWYg
bm8gcXVlcnkgaXMgZ2l2ZW4gaXQnbGwgc2ltcGx5CisgICAgICogcmV0dXJuIGV2ZXJ5dGhpbmcu
IElmIHlvdSBwYXNzIGluIGEgc3RyaW5nIG9yIG51bWJlciBpdCdsbCBsb29rIHRoYXQgdXAgYXMK
KyAgICAgKiB0aGUgSUQgb2YgdGhlIG1vZGVsIHRvIGZpbmQuIExhc3RseSwgeW91IGNhbiBwYXNz
IGl0IGFuIG9iamVjdCB0byBtYXRjaAorICAgICAqIGFnYWluc3QuCisgICAgICoKKyAgICAgKiBA
cGFyYW0ge3N0cmluZ3xudW1iZXJ8b2JqZWN0fSBbcXVlcnldIEEgcXVlcnkgdG8gbWF0Y2ggbW9k
ZWxzIGFnYWluc3QKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBbY2FsbGJhY2tdIFRoZSBjYWxs
YmFjayB0byBmaXJlIGFmdGVyIHRoZSBtb2RlbCBpcyBmb3VuZAorICAgICAqCisgICAgICogQGV4
YW1wbGUKKyAgICAgKiBtb2RlbC5yZWFkKDEsIGZ1bmMpIC8vIFdpbGwgZmluZCB0aGUgbW9kZWwg
d2l0aCBhbiBJRCBvZiAxCisgICAgICogbW9kZWwucmVhZCgnMScpIC8vIFNhbWUgYXMgYWJvdmUK
KyAgICAgKiAvL0JlbG93IHdpbGwgZmluZCBhIG1vZGVsIHdpdGggZm9vIGVxdWFsbGluZyBiYXIg
YW5kIGhlbGxvIGVxdWFsbGluZyB3b3JsZC4KKyAgICAgKiBtb2RlbC5yZWFkKHsgZm9vOiAnYmFy
JywgaGVsbG86ICd3b3JsZCcgfSkKKyAgICAgKi8KKyAgICByZWFkKHF1ZXJ5LCBjYWxsYmFjayl7
CisgICAgICAgIGNvbnN0IHF1ZXJ5VHlwZSA9IHR5cGVvZiBxdWVyeTsKKworICAgICAgICBpZiAo
cXVlcnlUeXBlID09PSAnZnVuY3Rpb24nKSB7CisgICAgICAgICAgICBjYWxsYmFjayA9IHF1ZXJ5
OworICAgICAgICAgICAgdGhpcy5zdG9yYWdlLmZpbmRBbGwoY2FsbGJhY2spOworICAgICAgICB9
IGVsc2UgaWYgKHF1ZXJ5VHlwZSA9PT0gJ3N0cmluZycgfHwgcXVlcnlUeXBlID09PSAnbnVtYmVy
JykgeworICAgICAgICAgICAgcXVlcnkgPSBwYXJzZUludChxdWVyeSwgMTApOworICAgICAgICAg
ICAgdGhpcy5zdG9yYWdlLmZpbmQoe2lkOiBxdWVyeX0sIGNhbGxiYWNrKTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIHRoaXMuc3RvcmFnZS5maW5kKHF1ZXJ5LCBjYWxsYmFjayk7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBVcGRhdGVzIGEgbW9kZWwgYnkgZ2l2
aW5nIGl0IGFuIElELCBkYXRhIHRvIHVwZGF0ZSwgYW5kIGEgY2FsbGJhY2sgdG8gZmlyZSB3aGVu
CisgICAgICogdGhlIHVwZGF0ZSBpcyBjb21wbGV0ZS4KKyAgICAgKgorICAgICAqIEBwYXJhbSB7
bnVtYmVyfSBpZCBUaGUgaWQgb2YgdGhlIG1vZGVsIHRvIHVwZGF0ZQorICAgICAqIEBwYXJhbSB7
b2JqZWN0fSBkYXRhIFRoZSBwcm9wZXJ0aWVzIHRvIHVwZGF0ZSBhbmQgdGhlaXIgbmV3IHZhbHVl
CisgICAgICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGNhbGxiYWNrIHRvIGZpcmUg
d2hlbiB0aGUgdXBkYXRlIGlzIGNvbXBsZXRlLgorICAgICAqLworICAgIHVwZGF0ZShpZCwgZGF0
YSwgY2FsbGJhY2speworICAgICAgICB0aGlzLnN0b3JhZ2Uuc2F2ZShkYXRhLCBjYWxsYmFjaywg
aWQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJlbW92ZXMgYSBtb2RlbCBmcm9tIHN0b3Jh
Z2UKKyAgICAgKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBpZCBUaGUgSUQgb2YgdGhlIG1vZGVs
IHRvIHJlbW92ZQorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIFRoZSBjYWxsYmFj
ayB0byBmaXJlIHdoZW4gdGhlIHJlbW92YWwgaXMgY29tcGxldGUuCisgICAgICovCisgICAgcmVt
b3ZlKGlkLCBjYWxsYmFjayl7CisgICAgICAgIHRoaXMuc3RvcmFnZS5yZW1vdmUoaWQsIGNhbGxi
YWNrKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBXQVJOSU5HOiBXaWxsIHJlbW92ZSBBTEwg
ZGF0YSBmcm9tIHN0b3JhZ2UuCisgICAgICoKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxs
YmFjayBUaGUgY2FsbGJhY2sgdG8gZmlyZSB3aGVuIHRoZSBzdG9yYWdlIGlzIHdpcGVkLgorICAg
ICAqLworICAgIHJlbW92ZUFsbChjYWxsYmFjayl7CisgICAgICAgIHRoaXMuc3RvcmFnZS5kcm9w
KGNhbGxiYWNrKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGEgY291bnQgb2Yg
YWxsIHRvZG9zCisgICAgICovCisgICAgZ2V0Q291bnQoY2FsbGJhY2speworICAgICAgICBsZXQg
dG9kb3MgPSB7CisgICAgICAgICAgICBhY3RpdmU6IDAsCisgICAgICAgICAgICBjb21wbGV0ZWQ6
IDAsCisgICAgICAgICAgICB0b3RhbDogMAorICAgICAgICB9OworCisgICAgICAgIHRoaXMuc3Rv
cmFnZS5maW5kQWxsKGRhdGEgPT4geworICAgICAgICAgICAgZm9yIChsZXQgdG9kbyBvZiBkYXRh
KSB7CisgICAgICAgICAgICAgICAgaWYgKHRvZG8uY29tcGxldGVkKSB7CisgICAgICAgICAgICAg
ICAgICAgIHRvZG9zLmNvbXBsZXRlZCsrOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgICAgIHRvZG9zLmFjdGl2ZSsrOworICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgIHRvZG9zLnRvdGFsKys7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGlmIChjYWxsYmFjaykgeworICAgICAgICAgICAgICAgIGNhbGxiYWNrKHRvZG9zKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAx
NS9zcmMvc3RvcmUuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1L3NyYy9zdG9yZS5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
YmE5N2JkZGIzZmVhOGIxNmNjNTg5NTliNWJkNzAyNDA2YjkxYmY3Ci0tLSAvZGV2L251bGwKKysr
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxh
LWV4YW1wbGVzL2VzMjAxNS9zcmMvc3RvcmUuanMKQEAgLTAsMCArMSwxNTAgQEAKKy8qanNoaW50
IGVxZXFlcTpmYWxzZSAqLworJ3VzZSBzdHJpY3QnOworCisvKioKKyAqIENyZWF0ZXMgYSBuZXcg
Y2xpZW50IHNpZGUgc3RvcmFnZSBvYmplY3QgYW5kIHdpbGwgY3JlYXRlIGFuIGVtcHR5CisgKiBj
b2xsZWN0aW9uIGlmIG5vIGNvbGxlY3Rpb24gYWxyZWFkeSBleGlzdHMuCisgKgorICogQHBhcmFt
IHtzdHJpbmd9IG5hbWUgVGhlIG5hbWUgb2Ygb3VyIERCIHdlIHdhbnQgdG8gdXNlCisgKiBAcGFy
YW0ge2Z1bmN0aW9ufSBjYWxsYmFjayBPdXIgZmFrZSBEQiB1c2VzIGNhbGxiYWNrcyBiZWNhdXNl
IGluCisgKiByZWFsIGxpZmUgeW91IHByb2JhYmx5IHdvdWxkIGJlIG1ha2luZyBBSkFYIGNhbGxz
CisgKi8KK2NsYXNzIFN0b3JlIHsKKyAgICBjb25zdHJ1Y3RvcihuYW1lLCBjYWxsYmFjaykgewor
ICAgICAgICB0aGlzLl9kYk5hbWUgPSBuYW1lOworICAgICAgICB0aGlzLm1lbW9yeVN0b3JhZ2Ug
PSB0aGlzLm1lbW9yeVN0b3JhZ2UgfHwge307CisKKyAgICAgICAgaWYgKCF0aGlzLm1lbW9yeVN0
b3JhZ2VbbmFtZV0pIHsKKyAgICAgICAgICAgIGxldCBkYXRhID0geworICAgICAgICAgICAgICAg
IHRvZG9zOiBbXQorICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgdGhpcy5tZW1vcnlTdG9y
YWdlW25hbWVdID0gSlNPTi5zdHJpbmdpZnkoZGF0YSk7CisgICAgICAgIH0KKworICAgICAgICBp
ZiAoY2FsbGJhY2spIHsKKyAgICAgICAgICAgIGNhbGxiYWNrLmNhbGwodGhpcywgSlNPTi5wYXJz
ZSh0aGlzLm1lbW9yeVN0b3JhZ2VbbmFtZV0pKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8q
KgorICAgICAqIEZpbmRzIGl0ZW1zIGJhc2VkIG9uIGEgcXVlcnkgZ2l2ZW4gYXMgYSBKUyBvYmpl
Y3QKKyAgICAgKgorICAgICAqIEBwYXJhbSB7b2JqZWN0fSBxdWVyeSBUaGUgcXVlcnkgdG8gbWF0
Y2ggYWdhaW5zdCAoaS5lLiB7Zm9vOiAnYmFyJ30pCisgICAgICogQHBhcmFtIHtmdW5jdGlvbn0g
Y2FsbGJhY2sgICBUaGUgY2FsbGJhY2sgdG8gZmlyZSB3aGVuIHRoZSBxdWVyeSBoYXMKKyAgICAg
KiBjb21wbGV0ZWQgcnVubmluZworICAgICAqCisgICAgICogQGV4YW1wbGUKKyAgICAgKiBkYi5m
aW5kKHtmb286ICdiYXInLCBoZWxsbzogJ3dvcmxkJ30sIGZ1bmN0aW9uIChkYXRhKSB7CisgICAg
ICAgICAqICAgLy8gZGF0YSB3aWxsIHJldHVybiBhbnkgaXRlbXMgdGhhdCBoYXZlIGZvbzogYmFy
IGFuZAorICAgICAgICAgKiAgIC8vIGhlbGxvOiB3b3JsZCBpbiB0aGVpciBwcm9wZXJ0aWVzCisg
ICAgICAgICAqIH0pCisgICAgICovCisgICAgZmluZChxdWVyeSwgY2FsbGJhY2speworICAgICAg
ICBpZiAoIWNhbGxiYWNrKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICBsZXQgdG9kb3MgPSBKU09OLnBhcnNlKHRoaXMubWVtb3J5U3RvcmFnZVt0aGlzLl9kYk5h
bWVdKS50b2RvczsKKworICAgICAgICBjYWxsYmFjay5jYWxsKHRoaXMsIHRvZG9zLmZpbHRlcih0
b2RvID0+IHsKKyAgICAgICAgICAgIGZvciAobGV0IHEgaW4gcXVlcnkpIHsKKyAgICAgICAgICAg
ICAgICBpZiAocXVlcnlbcV0gIT09IHRvZG9bcV0pIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICB9KSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogV2ls
bCByZXRyaWV2ZSBhbGwgZGF0YSBmcm9tIHRoZSBjb2xsZWN0aW9uCisgICAgICoKKyAgICAgKiBA
cGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgdG8gZmlyZSB1cG9uIHJldHJp
ZXZpbmcgZGF0YQorICAgICAqLworICAgIGZpbmRBbGwoY2FsbGJhY2speworICAgICAgICBpZiAo
Y2FsbGJhY2spIHsKKyAgICAgICAgICAgIGNhbGxiYWNrLmNhbGwodGhpcywgSlNPTi5wYXJzZSh0
aGlzLm1lbW9yeVN0b3JhZ2VbdGhpcy5fZGJOYW1lXSkudG9kb3MpOworICAgICAgICB9CisgICAg
fQorCisgICAgLyoqCisgICAgICogV2lsbCBzYXZlIHRoZSBnaXZlbiBkYXRhIHRvIHRoZSBEQi4g
SWYgbm8gaXRlbSBleGlzdHMgaXQgd2lsbCBjcmVhdGUgYSBuZXcKKyAgICAgKiBpdGVtLCBvdGhl
cndpc2UgaXQnbGwgc2ltcGx5IHVwZGF0ZSBhbiBleGlzdGluZyBpdGVtJ3MgcHJvcGVydGllcwor
ICAgICAqCisgICAgICogQHBhcmFtIHtvYmplY3R9IHVwZGF0ZURhdGEgVGhlIGRhdGEgdG8gc2F2
ZSBiYWNrIGludG8gdGhlIERCCisgICAgICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgVGhl
IGNhbGxiYWNrIHRvIGZpcmUgYWZ0ZXIgc2F2aW5nCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGlk
IEFuIG9wdGlvbmFsIHBhcmFtIHRvIGVudGVyIGFuIElEIG9mIGFuIGl0ZW0gdG8gdXBkYXRlCisg
ICAgICovCisgICAgc2F2ZSh1cGRhdGVEYXRhLCBjYWxsYmFjaywgaWQpeworICAgICAgICBjb25z
dCBkYXRhID0gSlNPTi5wYXJzZSh0aGlzLm1lbW9yeVN0b3JhZ2VbdGhpcy5fZGJOYW1lXSk7Cisg
ICAgICAgIGxldCB0b2RvcyA9IGRhdGEudG9kb3M7CisgICAgICAgIGNvbnN0IGxlbiA9IHRvZG9z
Lmxlbmd0aDsKKworICAgICAgICAvLyBJZiBhbiBJRCB3YXMgYWN0dWFsbHkgZ2l2ZW4sIGZpbmQg
dGhlIGl0ZW0gYW5kIHVwZGF0ZSBlYWNoIHByb3BlcnR5CisgICAgICAgIGlmIChpZCkgeworICAg
ICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICAgICAgICAg
IGlmICh0b2Rvc1tpXS5pZCA9PT0gaWQpIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQg
a2V5IGluIHVwZGF0ZURhdGEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvZG9zW2ldW2tl
eV0gPSB1cGRhdGVEYXRhW2tleV07CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICB0aGlzLm1lbW9yeVN0b3JhZ2VbdGhpcy5fZGJOYW1lXSA9IEpTT04uc3RyaW5naWZ5
KGRhdGEpOworCisgICAgICAgICAgICBpZiAoY2FsbGJhY2spIHsKKyAgICAgICAgICAgICAgICBj
YWxsYmFjay5jYWxsKHRoaXMsIEpTT04ucGFyc2UodGhpcy5tZW1vcnlTdG9yYWdlW3RoaXMuX2Ri
TmFtZV0pLnRvZG9zKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIC8vIEdlbmVyYXRlIGFuIElECisgICAgICAgICAgICB1cGRhdGVEYXRhLmlkID0gbmV3IERh
dGUoKS5nZXRUaW1lKCk7CisKKyAgICAgICAgICAgIHRvZG9zLnB1c2godXBkYXRlRGF0YSk7Cisg
ICAgICAgICAgICB0aGlzLm1lbW9yeVN0b3JhZ2VbdGhpcy5fZGJOYW1lXSA9IEpTT04uc3RyaW5n
aWZ5KGRhdGEpOworCisgICAgICAgICAgICBpZiAoY2FsbGJhY2spIHsKKyAgICAgICAgICAgICAg
ICBjYWxsYmFjay5jYWxsKHRoaXMsIFt1cGRhdGVEYXRhXSk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBXaWxsIHJlbW92ZSBhbiBpdGVtIGZyb20g
dGhlIFN0b3JlIGJhc2VkIG9uIGl0cyBJRAorICAgICAqCisgICAgICogQHBhcmFtIHtudW1iZXJ9
IGlkIFRoZSBJRCBvZiB0aGUgaXRlbSB5b3Ugd2FudCB0byByZW1vdmUKKyAgICAgKiBAcGFyYW0g
e2Z1bmN0aW9ufSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgdG8gZmlyZSBhZnRlciBzYXZpbmcKKyAg
ICAgKi8KKyAgICByZW1vdmUoaWQsIGNhbGxiYWNrKXsKKyAgICAgICAgY29uc3QgZGF0YSA9IEpT
T04ucGFyc2UodGhpcy5tZW1vcnlTdG9yYWdlW3RoaXMuX2RiTmFtZV0pOworICAgICAgICBsZXQg
dG9kb3MgPSBkYXRhLnRvZG9zOworICAgICAgICBjb25zdCBsZW4gPSB0b2Rvcy5sZW5ndGg7CisK
KyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0b2Rvcy5sZW5ndGg7IGkrKykgeworICAgICAg
ICAgICAgaWYgKHRvZG9zW2ldLmlkID09IGlkKSB7CisgICAgICAgICAgICAgICAgdG9kb3Muc3Bs
aWNlKGksIDEpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisKKyAgICAgICAgdGhpcy5tZW1vcnlTdG9yYWdlW3RoaXMuX2RiTmFtZV0gPSBKU09OLnN0
cmluZ2lmeShkYXRhKTsKKworICAgICAgICBpZiAoY2FsbGJhY2spIHsKKyAgICAgICAgICAgIGNh
bGxiYWNrLmNhbGwodGhpcywgSlNPTi5wYXJzZSh0aGlzLm1lbW9yeVN0b3JhZ2VbdGhpcy5fZGJO
YW1lXSkudG9kb3MpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogV2lsbCBk
cm9wIGFsbCBzdG9yYWdlIGFuZCBzdGFydCBmcmVzaAorICAgICAqCisgICAgICogQHBhcmFtIHtm
dW5jdGlvbn0gY2FsbGJhY2sgVGhlIGNhbGxiYWNrIHRvIGZpcmUgYWZ0ZXIgZHJvcHBpbmcgdGhl
IGRhdGEKKyAgICAgKi8KKyAgICBkcm9wKGNhbGxiYWNrKXsKKyAgICAgICAgdGhpcy5tZW1vcnlT
dG9yYWdlW3RoaXMuX2RiTmFtZV0gPSBKU09OLnN0cmluZ2lmeSh7dG9kb3M6IFtdfSk7CisKKyAg
ICAgICAgaWYgKGNhbGxiYWNrKSB7CisgICAgICAgICAgICBjYWxsYmFjay5jYWxsKHRoaXMsIEpT
T04ucGFyc2UodGhpcy5tZW1vcnlTdG9yYWdlW3RoaXMuX2RiTmFtZV0pLnRvZG9zKTsKKyAgICAg
ICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUvc3JjL3RlbXBsYXRlLmpz
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxh
LWV4YW1wbGVzL2VzMjAxNS9zcmMvdGVtcGxhdGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzdkNGRkNGM2MGJl
MjY1Mzg4MWEyODBlOGRhN2RmOGQzZDYzMTMwNgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9l
czIwMTUvc3JjL3RlbXBsYXRlLmpzCkBAIC0wLDAgKzEsOTUgQEAKKyd1c2Ugc3RyaWN0JzsKKwor
Citjb25zdCBodG1sRXNjYXBlcyA9IHsKKyAgICAnJic6ICcmYW1wJywKKyAgICAnPCc6ICcmbHQn
LAorICAgICc+JzogJyZndCcsCisgICAgJyInOiAnJnF1b3QnLAorICAgICdcJyc6ICcmI3gyNycs
CisgICAgJ2AnOiAnJiN4NjAnCit9OworCitjb25zdCByZVVuZXNjYXBlZEh0bWwgPSAvWyY8PiIn
YF0vZzsKK2NvbnN0IHJlSGFzVW5lc2NhcGVkSHRtbCA9IG5ldyBSZWdFeHAocmVVbmVzY2FwZWRI
dG1sLnNvdXJjZSk7CisKK2xldCBlc2NhcGUgPSBzdHIgPT4gKHN0ciAmJiByZUhhc1VuZXNjYXBl
ZEh0bWwudGVzdChzdHIpKSA/IHN0ci5yZXBsYWNlKHJlVW5lc2NhcGVkSHRtbCwgZXNjYXBlSHRt
bENoYXIpIDogc3RyOworbGV0IGVzY2FwZUh0bWxDaGFyID0gY2hyID0+IGh0bWxFc2NhcGVzW2No
cl07CisKK2NsYXNzIFRlbXBsYXRlIHsKKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgdGhp
cy5kZWZhdWx0VGVtcGxhdGUgPSBgCisgICAgICAgICAgICA8bGkgZGF0YS1pZD0ie3tpZH19IiBj
bGFzcz0ie3tjb21wbGV0ZWR9fSI+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idmlldyI+
CisgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0idG9nZ2xlIiB0eXBlPSJjaGVja2Jv
eCIge3tjaGVja2VkfX0+CisgICAgICAgICAgICAgICAgICAgIDxsYWJlbD57e3RpdGxlfX08L2xh
YmVsPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJkZXN0cm95Ij48L2J1dHRv
bj4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvbGk+CisgICAgICAgIGA7
CisgICAgfQorCisgICAgLyoqCisgICAgICogQ3JlYXRlcyBhbiA8bGk+IEhUTUwgc3RyaW5nIGFu
ZCByZXR1cm5zIGl0IGZvciBwbGFjZW1lbnQgaW4geW91ciBhcHAuCisgICAgICoKKyAgICAgKiBO
T1RFOiBJbiByZWFsIGxpZmUgeW91IHNob3VsZCBiZSB1c2luZyBhIHRlbXBsYXRpbmcgZW5naW5l
IHN1Y2ggYXMgTXVzdGFjaGUKKyAgICAgKiBvciBIYW5kbGViYXJzLCBob3dldmVyLCB0aGlzIGlz
IGEgdmFuaWxsYSBKUyBleGFtcGxlLgorICAgICAqCisgICAgICogQHBhcmFtIHtvYmplY3R9IGRh
dGEgVGhlIG9iamVjdCBjb250YWluaW5nIGtleXMgeW91IHdhbnQgdG8gZmluZCBpbiB0aGUKKyAg
ICAgKiAgICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZSB0byByZXBsYWNlLgorICAgICAqIEBy
ZXR1cm5zIHtzdHJpbmd9IEhUTUwgU3RyaW5nIG9mIGFuIDxsaT4gZWxlbWVudAorICAgICAqCisg
ICAgICogQGV4YW1wbGUKKyAgICAgKiB2aWV3LnNob3coeworICAgICAgICAgKiAgaWQ6IDEsCisg
ICAgICAgICAqICB0aXRsZTogIkhlbGxvIFdvcmxkIiwKKyAgICAgICAgICogIGNvbXBsZXRlZDog
MCwKKyAgICAgICAgICogfSkKKyAgICAgKi8KKyAgICBzaG93KGRhdGEpeworICAgICAgICBsZXQg
aSA9IDA7CisgICAgICAgIGxldCB2aWV3ID0gJyc7CisgICAgICAgIGNvbnN0IGxlbiA9IGRhdGEu
bGVuZ3RoOworCisgICAgICAgIGZvciAoaTsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgICAgICBs
ZXQgY29tcGxldGVkID0gJyc7CisgICAgICAgICAgICBsZXQgY2hlY2tlZCA9ICcnOworICAgICAg
ICAgICAgbGV0IHRlbXBsYXRlID0gdGhpcy5kZWZhdWx0VGVtcGxhdGU7CisKKyAgICAgICAgICAg
IGlmIChkYXRhW2ldLmNvbXBsZXRlZCkgeworICAgICAgICAgICAgICAgIGNvbXBsZXRlZCA9ICdj
b21wbGV0ZWQnOworICAgICAgICAgICAgICAgIGNoZWNrZWQgPSAnY2hlY2tlZCc7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHRlbXBsYXRlID0gdGVtcGxhdGUucmVwbGFjZSgne3tpZH19
JywgZGF0YVtpXS5pZCk7CisgICAgICAgICAgICB0ZW1wbGF0ZSA9IHRlbXBsYXRlLnJlcGxhY2Uo
J3t7dGl0bGV9fScsIGVzY2FwZShkYXRhW2ldLnRpdGxlKSk7CisgICAgICAgICAgICB0ZW1wbGF0
ZSA9IHRlbXBsYXRlLnJlcGxhY2UoJ3t7Y29tcGxldGVkfX0nLCBjb21wbGV0ZWQpOworICAgICAg
ICAgICAgdGVtcGxhdGUgPSB0ZW1wbGF0ZS5yZXBsYWNlKCd7e2NoZWNrZWR9fScsIGNoZWNrZWQp
OworCisgICAgICAgICAgICB2aWV3ICs9IHRlbXBsYXRlOworICAgICAgICB9CisKKyAgICAgICAg
cmV0dXJuIHZpZXc7CisgICAgfQorCisgICAgLyoqCisgICAgICogRGlzcGxheXMgYSBjb3VudGVy
IG9mIGhvdyBtYW55IHRvIGRvcyBhcmUgbGVmdCB0byBjb21wbGV0ZQorICAgICAqCisgICAgICog
QHBhcmFtIHtudW1iZXJ9IGFjdGl2ZVRvZG9zIFRoZSBudW1iZXIgb2YgYWN0aXZlIHRvZG9zLgor
ICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFN0cmluZyBjb250YWluaW5nIHRoZSBjb3VudAorICAg
ICAqLworICAgIGl0ZW1Db3VudGVyKGFjdGl2ZVRvZG9zKXsKKyAgICAgICAgbGV0IHBsdXJhbCA9
IGFjdGl2ZVRvZG9zID09PSAxID8gJycgOiAncyc7CisgICAgICAgIHJldHVybiBgPHN0cm9uZz4k
e2FjdGl2ZVRvZG9zfTwvc3Ryb25nPiBpdGVtJHtwbHVyYWx9IGxlZnRgOworICAgIH0KKworICAg
IC8qKgorICAgICAqIFVwZGF0ZXMgdGhlIHRleHQgd2l0aGluIHRoZSAiQ2xlYXIgY29tcGxldGVk
IiBidXR0b24KKyAgICAgKgorICAgICAqIEBwYXJhbSAge1t0eXBlXX0gY29tcGxldGVkVG9kb3Mg
VGhlIG51bWJlciBvZiBjb21wbGV0ZWQgdG9kb3MuCisgICAgICogQHJldHVybnMge3N0cmluZ30g
U3RyaW5nIGNvbnRhaW5pbmcgdGhlIGNvdW50CisgICAgICovCisgICAgY2xlYXJDb21wbGV0ZWRC
dXR0b24oY29tcGxldGVkVG9kb3MpeworICAgICAgICByZXR1cm4gKGNvbXBsZXRlZFRvZG9zID4g
MCkgPyAnQ2xlYXIgY29tcGxldGVkJyA6ICcnOworICAgIH0KK30KZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxl
cy9lczIwMTUvc3JjL3ZpZXcuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1L3NyYy92aWV3LmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRiYTM1ZDIxOWMyYTUyMGJiMTZlZWQ5ODIwOWIxODc1YjdmZjc5ZTYKLS0tIC9kZXYvbnVs
bAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3Zh
bmlsbGEtZXhhbXBsZXMvZXMyMDE1L3NyYy92aWV3LmpzCkBAIC0wLDAgKzEsMTc4IEBACisndXNl
IHN0cmljdCc7CisKKworLy8gaW1wb3J0IHtxcywgcXNhLCAkb24sICRwYXJlbnQsICRkZWxlZ2F0
ZX0gZnJvbSAnLi9oZWxwZXJzJzsKKworbGV0IF9pdGVtSWQgPSBlbGVtZW50ID0+IHBhcnNlSW50
KCRwYXJlbnQoZWxlbWVudCwgJ2xpJykuZGF0YXNldC5pZCwgMTApOworCitsZXQgX3NldEZpbHRl
ciA9IGN1cnJlbnRQYWdlID0+IHsKKyAgICBxcygnLmZpbHRlcnMgLnNlbGVjdGVkJykuY2xhc3NO
YW1lID0gJyc7CisgICAgcXMoYC5maWx0ZXJzIFtocmVmPSIjLyR7Y3VycmVudFBhZ2V9Il1gKS5j
bGFzc05hbWUgPSAnc2VsZWN0ZWQnOworfTsKKworbGV0IF9lbGVtZW50Q29tcGxldGUgPSAoaWQs
IGNvbXBsZXRlZCkgPT4geworICAgIGxldCBsaXN0SXRlbSA9IHFzKGBbZGF0YS1pZD0iJHtpZH0i
XWApOworCisgICAgaWYgKCFsaXN0SXRlbSkgeworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgbGlzdEl0ZW0uY2xhc3NOYW1lID0gY29tcGxldGVkID8gJ2NvbXBsZXRlZCcgOiAnJzsKKwor
ICAgIC8vIEluIGNhc2UgaXQgd2FzIHRvZ2dsZWQgZnJvbSBhbiBldmVudCBhbmQgbm90IGJ5IGNs
aWNraW5nIHRoZSBjaGVja2JveAorICAgIHFzKCdpbnB1dCcsIGxpc3RJdGVtKS5jaGVja2VkID0g
Y29tcGxldGVkOworfTsKKworbGV0IF9lZGl0SXRlbSA9IChpZCwgdGl0bGUpID0+IHsKKyAgICBs
ZXQgbGlzdEl0ZW0gPSBxcyhgW2RhdGEtaWQ9IiR7aWR9Il1gKTsKKworICAgIGlmICghbGlzdEl0
ZW0pIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGxpc3RJdGVtLmNsYXNzTmFtZSAr
PSAnIGVkaXRpbmcnOworCisgICAgbGV0IGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
aW5wdXQnKTsKKyAgICBpbnB1dC5jbGFzc05hbWUgPSAnZWRpdCc7CisKKyAgICBsaXN0SXRlbS5h
cHBlbmRDaGlsZChpbnB1dCk7CisgICAgaW5wdXQuZm9jdXMoKTsKKyAgICBpbnB1dC52YWx1ZSA9
IHRpdGxlOworfTsKKworLyoqCisgKiBWaWV3IHRoYXQgYWJzdHJhY3RzIGF3YXkgdGhlIGJyb3dz
ZXIncyBET00gY29tcGxldGVseS4KKyAqIEl0IGhhcyB0d28gc2ltcGxlIGVudHJ5IHBvaW50czoK
KyAqCisgKiAgIC0gYmluZChldmVudE5hbWUsIGhhbmRsZXIpCisgKiAgICAgVGFrZXMgYSB0b2Rv
IGFwcGxpY2F0aW9uIGV2ZW50IGFuZCByZWdpc3RlcnMgdGhlIGhhbmRsZXIKKyAqICAgLSByZW5k
ZXIoY29tbWFuZCwgcGFyYW1ldGVyT2JqZWN0KQorICogICAgIFJlbmRlcnMgdGhlIGdpdmVuIGNv
bW1hbmQgd2l0aCB0aGUgb3B0aW9ucworICovCitjbGFzcyBWaWV3IHsKKyAgICBjb25zdHJ1Y3Rv
cih0ZW1wbGF0ZSkgeworICAgICAgICB0aGlzLnRlbXBsYXRlID0gdGVtcGxhdGU7CisKKyAgICAg
ICAgdGhpcy5FTlRFUl9LRVkgPSAxMzsKKyAgICAgICAgdGhpcy5FU0NBUEVfS0VZID0gMjc7CisK
KyAgICAgICAgdGhpcy4kdG9kb0xpc3QgPSBxcygnLnRvZG8tbGlzdCcpOworICAgICAgICB0aGlz
LiR0b2RvSXRlbUNvdW50ZXIgPSBxcygnLnRvZG8tY291bnQnKTsKKyAgICAgICAgdGhpcy4kY2xl
YXJDb21wbGV0ZWQgPSBxcygnLmNsZWFyLWNvbXBsZXRlZCcpOworICAgICAgICB0aGlzLiRtYWlu
ID0gcXMoJy5tYWluJyk7CisgICAgICAgIHRoaXMuJGZvb3RlciA9IHFzKCcuZm9vdGVyJyk7Cisg
ICAgICAgIHRoaXMuJHRvZ2dsZUFsbCA9IHFzKCcudG9nZ2xlLWFsbCcpOworICAgICAgICB0aGlz
LiRuZXdUb2RvID0gcXMoJy5uZXctdG9kbycpOworCisgICAgICAgIHRoaXMudmlld0NvbW1hbmRz
ID0geworICAgICAgICAgICAgc2hvd0VudHJpZXM6IHBhcmFtZXRlciA9PiB0aGlzLiR0b2RvTGlz
dC5pbm5lckhUTUwgPSB0aGlzLnRlbXBsYXRlLnNob3cocGFyYW1ldGVyKSwKKyAgICAgICAgICAg
IHJlbW92ZUl0ZW06IHBhcmFtZXRlciA9PiB0aGlzLl9yZW1vdmVJdGVtKHBhcmFtZXRlciksCisg
ICAgICAgICAgICB1cGRhdGVFbGVtZW50Q291bnQ6IHBhcmFtZXRlciA9PiB0aGlzLiR0b2RvSXRl
bUNvdW50ZXIuaW5uZXJIVE1MID0gdGhpcy50ZW1wbGF0ZS5pdGVtQ291bnRlcihwYXJhbWV0ZXIp
LAorICAgICAgICAgICAgY2xlYXJDb21wbGV0ZWRCdXR0b246IHBhcmFtZXRlciA9PiB0aGlzLl9j
bGVhckNvbXBsZXRlZEJ1dHRvbihwYXJhbWV0ZXIuY29tcGxldGVkLCBwYXJhbWV0ZXIudmlzaWJs
ZSksCisgICAgICAgICAgICBjb250ZW50QmxvY2tWaXNpYmlsaXR5OiBwYXJhbWV0ZXIgPT4gdGhp
cy4kbWFpbi5zdHlsZS5kaXNwbGF5ID0gdGhpcy4kZm9vdGVyLnN0eWxlLmRpc3BsYXkgPSBwYXJh
bWV0ZXIudmlzaWJsZSA/ICdibG9jaycgOiAnbm9uZScsCisgICAgICAgICAgICB0b2dnbGVBbGw6
IHBhcmFtZXRlciA9PiB0aGlzLiR0b2dnbGVBbGwuY2hlY2tlZCA9IHBhcmFtZXRlci5jaGVja2Vk
LAorICAgICAgICAgICAgc2V0RmlsdGVyOiBwYXJhbWV0ZXIgPT4gX3NldEZpbHRlcihwYXJhbWV0
ZXIpLAorICAgICAgICAgICAgY2xlYXJOZXdUb2RvOiBwYXJhbWV0ZXIgPT4gdGhpcy4kbmV3VG9k
by52YWx1ZSA9ICcnLAorICAgICAgICAgICAgZWxlbWVudENvbXBsZXRlOiBwYXJhbWV0ZXIgPT4g
X2VsZW1lbnRDb21wbGV0ZShwYXJhbWV0ZXIuaWQsIHBhcmFtZXRlci5jb21wbGV0ZWQpLAorICAg
ICAgICAgICAgZWRpdEl0ZW06IHBhcmFtZXRlciA9PiBfZWRpdEl0ZW0ocGFyYW1ldGVyLmlkLCBw
YXJhbWV0ZXIudGl0bGUpLAorICAgICAgICAgICAgZWRpdEl0ZW1Eb25lOiBwYXJhbWV0ZXIgPT4g
dGhpcy5fZWRpdEl0ZW1Eb25lKHBhcmFtZXRlci5pZCwgcGFyYW1ldGVyLnRpdGxlKSwKKyAgICAg
ICAgfTsKKyAgICB9CisKKyAgICBfcmVtb3ZlSXRlbShpZCkgeworICAgICAgICBsZXQgZWxlbSA9
IHFzKGBbZGF0YS1pZD0iJHtpZH0iXWApOworCisgICAgICAgIGlmIChlbGVtKSB7CisgICAgICAg
ICAgICB0aGlzLiR0b2RvTGlzdC5yZW1vdmVDaGlsZChlbGVtKTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIF9jbGVhckNvbXBsZXRlZEJ1dHRvbihjb21wbGV0ZWRDb3VudCwgdmlzaWJsZSkgewor
ICAgICAgICB0aGlzLiRjbGVhckNvbXBsZXRlZC5pbm5lckhUTUwgPSB0aGlzLnRlbXBsYXRlLmNs
ZWFyQ29tcGxldGVkQnV0dG9uKGNvbXBsZXRlZENvdW50KTsKKyAgICAgICAgdGhpcy4kY2xlYXJD
b21wbGV0ZWQuc3R5bGUuZGlzcGxheSA9IHZpc2libGUgPyAnYmxvY2snIDogJ25vbmUnOworICAg
IH0KKworICAgIF9lZGl0SXRlbURvbmUoaWQsIHRpdGxlKSB7CisgICAgICAgIGxldCBsaXN0SXRl
bSA9IHFzKGBbZGF0YS1pZD0iJHtpZH0iXWApOworCisgICAgICAgIGlmICghbGlzdEl0ZW0pIHsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGxldCBpbnB1dCA9IHFz
KCdpbnB1dC5lZGl0JywgbGlzdEl0ZW0pOworICAgICAgICBsaXN0SXRlbS5yZW1vdmVDaGlsZChp
bnB1dCk7CisKKyAgICAgICAgbGlzdEl0ZW0uY2xhc3NOYW1lID0gbGlzdEl0ZW0uY2xhc3NOYW1l
LnJlcGxhY2UoJyBlZGl0aW5nJywgJycpOworCisgICAgICAgIHFzYSgnbGFiZWwnLCBsaXN0SXRl
bSkuZm9yRWFjaChsYWJlbCA9PiBsYWJlbC50ZXh0Q29udGVudCA9IHRpdGxlKTsKKyAgICB9CisK
KyAgICByZW5kZXIodmlld0NtZCwgcGFyYW1ldGVyKSB7CisgICAgICAgIHRoaXMudmlld0NvbW1h
bmRzW3ZpZXdDbWRdKHBhcmFtZXRlcik7CisgICAgfQorCisgICAgX2JpbmRJdGVtRWRpdERvbmUo
aGFuZGxlcikgeworICAgICAgICBsZXQgc2VsZiA9IHRoaXM7CisKKyAgICAgICAgJGRlbGVnYXRl
KHNlbGYuJHRvZG9MaXN0LCAnbGkgLmVkaXQnLCAnYmx1cicsIGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgIGlmICghdGhpcy5kYXRhc2V0LmlzY2FuY2VsZWQpIHsKKyAgICAgICAgICAgICAgICBo
YW5kbGVyKHsKKyAgICAgICAgICAgICAgICAgICAgaWQ6IF9pdGVtSWQodGhpcyksCisgICAgICAg
ICAgICAgICAgICAgIHRpdGxlOiB0aGlzLnZhbHVlCisgICAgICAgICAgICAgICAgfSk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0pOworCisgICAgICAgIC8vIFJlbW92ZSB0aGUgY3Vyc29yIGZy
b20gdGhlIGlucHV0IHdoZW4geW91IGhpdCBlbnRlciBqdXN0IGxpa2UgaWYgaXQgd2VyZSBhIHJl
YWwgZm9ybQorICAgICAgICAkZGVsZWdhdGUoc2VsZi4kdG9kb0xpc3QsICdsaSAuZWRpdCcsICdr
ZXlwcmVzcycsIGZ1bmN0aW9uIChldmVudCkgeworICAgICAgICAgICAgaWYgKGV2ZW50LmtleUNv
ZGUgPT09IHNlbGYuRU5URVJfS0VZKSB7CisgICAgICAgICAgICAgICAgdGhpcy5ibHVyKCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0KKworICAgIF9iaW5kSXRlbUVkaXRDYW5j
ZWwoaGFuZGxlcikgeworICAgICAgICBsZXQgc2VsZiA9IHRoaXM7CisKKyAgICAgICAgJGRlbGVn
YXRlKHNlbGYuJHRvZG9MaXN0LCAnbGkgLmVkaXQnLCAna2V5dXAnLCBmdW5jdGlvbiAoZXZlbnQp
IHsKKyAgICAgICAgICAgIGlmIChldmVudC5rZXlDb2RlID09PSBzZWxmLkVTQ0FQRV9LRVkpIHsK
KyAgICAgICAgICAgICAgICBsZXQgaWQgPSBfaXRlbUlkKHRoaXMpOworICAgICAgICAgICAgICAg
IHRoaXMuZGF0YXNldC5pc2NhbmNlbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB0aGlzLmJs
dXIoKTsKKworICAgICAgICAgICAgICAgIGhhbmRsZXIoeyBpZCB9KTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfSk7CisgICAgfQorCisgICAgYmluZChldmVudCwgaGFuZGxlcikgeworICAgICAg
ICBpZiAoZXZlbnQgPT09ICduZXdUb2RvJykgeworICAgICAgICAgICAgJG9uKHRoaXMuJG5ld1Rv
ZG8sICdjaGFuZ2UnLCAoKSA9PiBoYW5kbGVyKHRoaXMuJG5ld1RvZG8udmFsdWUpKTsKKyAgICAg
ICAgfSBlbHNlIGlmIChldmVudCA9PT0gJ3JlbW92ZUNvbXBsZXRlZCcpIHsKKyAgICAgICAgICAg
ICRvbih0aGlzLiRjbGVhckNvbXBsZXRlZCwgJ2NsaWNrJywgaGFuZGxlcik7CisgICAgICAgIH0g
ZWxzZSBpZiAoZXZlbnQgPT09ICd0b2dnbGVBbGwnKSB7CisgICAgICAgICAgICAkb24odGhpcy4k
dG9nZ2xlQWxsLCAnY2xpY2snLCBmdW5jdGlvbigpeworICAgICAgICAgICAgICAgIGhhbmRsZXIo
e2NvbXBsZXRlZDogdGhpcy5jaGVja2VkfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSBl
bHNlIGlmIChldmVudCA9PT0gJ2l0ZW1FZGl0JykgeworICAgICAgICAgICAgJGRlbGVnYXRlKHRo
aXMuJHRvZG9MaXN0LCAnbGkgbGFiZWwnLCAnZGJsY2xpY2snLCBmdW5jdGlvbigpeworICAgICAg
ICAgICAgICAgIGhhbmRsZXIoe2lkOiBfaXRlbUlkKHRoaXMpfSk7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgfSBlbHNlIGlmIChldmVudCA9PT0gJ2l0ZW1SZW1vdmUnKSB7CisgICAgICAgICAg
ICAkZGVsZWdhdGUodGhpcy4kdG9kb0xpc3QsICcuZGVzdHJveScsICdjbGljaycsIGZ1bmN0aW9u
KCl7CisgICAgICAgICAgICAgICAgaGFuZGxlcih7aWQ6IF9pdGVtSWQodGhpcyl9KTsKKyAgICAg
ICAgICAgIH0pOworICAgICAgICB9IGVsc2UgaWYgKGV2ZW50ID09PSAnaXRlbVRvZ2dsZScpIHsK
KyAgICAgICAgICAgICRkZWxlZ2F0ZSh0aGlzLiR0b2RvTGlzdCwgJy50b2dnbGUnLCAnY2xpY2sn
LCBmdW5jdGlvbigpeworICAgICAgICAgICAgICAgIGhhbmRsZXIoeworICAgICAgICAgICAgICAg
ICAgICBpZDogX2l0ZW1JZCh0aGlzKSwKKyAgICAgICAgICAgICAgICAgICAgY29tcGxldGVkOiB0
aGlzLmNoZWNrZWQKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAg
ICB9IGVsc2UgaWYgKGV2ZW50ID09PSAnaXRlbUVkaXREb25lJykgeworICAgICAgICAgICAgdGhp
cy5fYmluZEl0ZW1FZGl0RG9uZShoYW5kbGVyKTsKKyAgICAgICAgfSBlbHNlIGlmIChldmVudCA9
PT0gJ2l0ZW1FZGl0Q2FuY2VsJykgeworICAgICAgICAgICAgdGhpcy5fYmluZEl0ZW1FZGl0Q2Fu
Y2VsKGhhbmRsZXIpOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3Zh
bmlsbGFqcy9ib3dlci5qc29uIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9ib3dlci5qc29uCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOGUzYmNlZTBjNmVlMDZjZmVlZmZkNDlmZGUzYzgwNzcy
YTk3MTc5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFt
cGxlcy92YW5pbGxhanMvYm93ZXIuanNvbgorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAot
ewotICAgICJuYW1lIjogInRvZG9tdmMtdmFuaWxsYWpzIiwKLSAgICAidmVyc2lvbiI6ICIwLjAu
MCIsCi0gICAgImRlcGVuZGVuY2llcyI6IHsKLSAgICAidG9kb212Yy1jb21tb24iOiAifjAuMS40
IgotICAgIH0KLX0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvYm93ZXJfY29tcG9uZW50
cy90b2RvbXZjLWNvbW1vbi9iYXNlLmNzcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvYm93ZXJfY29tcG9u
ZW50cy90b2RvbXZjLWNvbW1vbi9iYXNlLmNzcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNzM3Y2Q5Y2M4YzdlMDdlNDY5MWQ0ZWUxYmFhNzAyZTQ5OTNjYTIxYS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL2Jvd2Vy
X2NvbXBvbmVudHMvdG9kb212Yy1jb21tb24vYmFzZS5jc3MKKysrIC9kZXYvbnVsbApAQCAtMSw1
NTQgKzAsMCBAQAotaHRtbCwKLWJvZHkgewotICAgIG1hcmdpbjogMDsKLSAgICBwYWRkaW5nOiAw
OwotfQotCi1idXR0b24gewotICAgIG1hcmdpbjogMDsKLSAgICBwYWRkaW5nOiAwOwotICAgIGJv
cmRlcjogMDsKLSAgICBiYWNrZ3JvdW5kOiBub25lOwotICAgIGZvbnQtc2l6ZTogMTAwJTsKLSAg
ICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7Ci0gICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7Ci0g
ICAgY29sb3I6IGluaGVyaXQ7Ci0gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwotICAgIC8q
LW1vei1hcHBlYXJhbmNlOiBub25lOyovCi0gICAgLW1zLWFwcGVhcmFuY2U6IG5vbmU7Ci0gICAg
LW8tYXBwZWFyYW5jZTogbm9uZTsKLSAgICBhcHBlYXJhbmNlOiBub25lOwotfQotCi1ib2R5IHsK
LSAgICBmb250OiAxNHB4ICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMt
c2VyaWY7Ci0gICAgbGluZS1oZWlnaHQ6IDEuNGVtOwotICAgIGJhY2tncm91bmQ6ICNlYWVhZWEg
dXJsKCdiZy5wbmcnKTsKLSAgICBjb2xvcjogIzRkNGQ0ZDsKLSAgICB3aWR0aDogNTUwcHg7Ci0g
ICAgbWFyZ2luOiAwIGF1dG87Ci0gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFz
ZWQ7Ci0gICAgLW1vei1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7Ci0gICAgLW1zLWZvbnQt
c21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKLSAgICAtby1mb250LXNtb290aGluZzogYW50aWFsaWFz
ZWQ7Ci0gICAgZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwotfQotCi0jdG9kb2FwcCB7Ci0g
ICAgYmFja2dyb3VuZDogI2ZmZjsKLSAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUs
IDAuOSk7Ci0gICAgbWFyZ2luOiAxMzBweCAwIDQwcHggMDsKLSAgICBib3JkZXI6IDFweCBzb2xp
ZCAjY2NjOwotICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKLSAgICBib3JkZXItdG9wLWxlZnQtcmFk
aXVzOiAycHg7Ci0gICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDJweDsKLSAgICBib3gtc2hh
ZG93OiAwIDJweCA2cHggMCByZ2JhKDAsIDAsIDAsIDAuMiksCi0gICAgMCAyNXB4IDUwcHggMCBy
Z2JhKDAsIDAsIDAsIDAuMTUpOwotfQotCi0jdG9kb2FwcDpiZWZvcmUgewotICAgIGNvbnRlbnQ6
ICcnOwotICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2Y1ZDZkNjsKLSAgICBib3JkZXItcmln
aHQ6IDFweCBzb2xpZCAjZjVkNmQ2OwotICAgIHdpZHRoOiAycHg7Ci0gICAgcG9zaXRpb246IGFi
c29sdXRlOwotICAgIHRvcDogMDsKLSAgICBsZWZ0OiA0MHB4OwotICAgIGhlaWdodDogMTAwJTsK
LX0KLQotI3RvZG9hcHAgaW5wdXQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIgewotICAgIGZv
bnQtc3R5bGU6IGl0YWxpYzsKLX0KLQotI3RvZG9hcHAgaW5wdXQ6Oi1tb3otcGxhY2Vob2xkZXIg
ewotICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKLSAgICBjb2xvcjogI2E5YTlhOTsKLX0KLQotI3Rv
ZG9hcHAgaDEgewotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICB0b3A6IC0xMjBweDsKLSAg
ICB3aWR0aDogMTAwJTsKLSAgICBmb250LXNpemU6IDcwcHg7Ci0gICAgZm9udC13ZWlnaHQ6IGJv
bGQ7Ci0gICAgdGV4dC1hbGlnbjogY2VudGVyOwotICAgIGNvbG9yOiAjYjNiM2IzOwotICAgIGNv
bG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7Ci0gICAgdGV4dC1zaGFkb3c6IC0xcHggLTFw
eCByZ2JhKDAsIDAsIDAsIDAuMik7Ci0gICAgLXdlYmtpdC10ZXh0LXJlbmRlcmluZzogb3B0aW1p
emVMZWdpYmlsaXR5OwotICAgIC1tb3otdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0
eTsKLSAgICAtbXMtdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTsKLSAgICAtby10
ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5OwotICAgIHRleHQtcmVuZGVyaW5nOiBv
cHRpbWl6ZUxlZ2liaWxpdHk7Ci19Ci0KLSNoZWFkZXIgewotICAgIHBhZGRpbmctdG9wOiAxNXB4
OwotICAgIGJvcmRlci1yYWRpdXM6IGluaGVyaXQ7Ci19Ci0KLSNoZWFkZXI6YmVmb3JlIHsKLSAg
ICBjb250ZW50OiAnJzsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgdG9wOiAwOwotICAg
IHJpZ2h0OiAwOwotICAgIGxlZnQ6IDA7Ci0gICAgaGVpZ2h0OiAxNXB4OwotICAgIHotaW5kZXg6
IDI7Ci0gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICM2YzYxNWM7Ci0gICAgYmFja2dyb3Vu
ZDogIzhkN2Q3NzsKLSAgICBiYWNrZ3JvdW5kOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVm
dCB0b3AsIGxlZnQgYm90dG9tLCBmcm9tKHJnYmEoMTMyLCAxMTAsIDEwMCwgMC44KSksdG8ocmdi
YSgxMDEsIDg0LCA3NiwgMC44KSkpOwotICAgIGJhY2tncm91bmQ6IC13ZWJraXQtbGluZWFyLWdy
YWRpZW50KHRvcCwgcmdiYSgxMzIsIDExMCwgMTAwLCAwLjgpLCByZ2JhKDEwMSwgODQsIDc2LCAw
LjgpKTsKLSAgICBiYWNrZ3JvdW5kOiAtbW96LWxpbmVhci1ncmFkaWVudCh0b3AsIHJnYmEoMTMy
LCAxMTAsIDEwMCwgMC44KSwgcmdiYSgxMDEsIDg0LCA3NiwgMC44KSk7Ci0gICAgYmFja2dyb3Vu
ZDogLW8tbGluZWFyLWdyYWRpZW50KHRvcCwgcmdiYSgxMzIsIDExMCwgMTAwLCAwLjgpLCByZ2Jh
KDEwMSwgODQsIDc2LCAwLjgpKTsKLSAgICBiYWNrZ3JvdW5kOiAtbXMtbGluZWFyLWdyYWRpZW50
KHRvcCwgcmdiYSgxMzIsIDExMCwgMTAwLCAwLjgpLCByZ2JhKDEwMSwgODQsIDc2LCAwLjgpKTsK
LSAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG9wLCByZ2JhKDEzMiwgMTEwLCAxMDAs
IDAuOCksIHJnYmEoMTAxLCA4NCwgNzYsIDAuOCkpOwotICAgIGJvcmRlci10b3AtbGVmdC1yYWRp
dXM6IDFweDsKLSAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMXB4OwotfQotCi0jbmV3LXRv
ZG8sCi0uZWRpdCB7Ci0gICAgcG9zaXRpb246IHJlbGF0aXZlOwotICAgIG1hcmdpbjogMDsKLSAg
ICB3aWR0aDogMTAwJTsKLSAgICBmb250LXNpemU6IDI0cHg7Ci0gICAgZm9udC1mYW1pbHk6IGlu
aGVyaXQ7Ci0gICAgbGluZS1oZWlnaHQ6IDEuNGVtOwotICAgIGJvcmRlcjogMDsKLSAgICBvdXRs
aW5lOiBub25lOwotICAgIGNvbG9yOiBpbmhlcml0OwotICAgIHBhZGRpbmc6IDZweDsKLSAgICBi
b3JkZXI6IDFweCBzb2xpZCAjOTk5OwotICAgIGJveC1zaGFkb3c6IGluc2V0IDAgLTFweCA1cHgg
MCByZ2JhKDAsIDAsIDAsIDAuMik7Ci0gICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94
OwotICAgIC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDsKLSAgICAtbXMtYm94LXNpemluZzog
Ym9yZGVyLWJveDsKLSAgICAtby1ib3gtc2l6aW5nOiBib3JkZXItYm94OwotICAgIGJveC1zaXpp
bmc6IGJvcmRlci1ib3g7Ci0gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7
Ci0gICAgLW1vei1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7Ci0gICAgLW1zLWZvbnQtc21v
b3RoaW5nOiBhbnRpYWxpYXNlZDsKLSAgICAtby1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7
Ci0gICAgZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwotfQotCi0jbmV3LXRvZG8gewotICAg
IHBhZGRpbmc6IDE2cHggMTZweCAxNnB4IDYwcHg7Ci0gICAgYm9yZGVyOiBub25lOwotICAgIGJh
Y2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4wMik7Ci0gICAgei1pbmRleDogMjsKLSAgICBib3gt
c2hhZG93OiBub25lOwotfQotCi0jbWFpbiB7Ci0gICAgcG9zaXRpb246IHJlbGF0aXZlOwotICAg
IHotaW5kZXg6IDI7Ci0gICAgYm9yZGVyLXRvcDogMXB4IGRvdHRlZCAjYWRhZGFkOwotfQotCi1s
YWJlbFtmb3I9J3RvZ2dsZS1hbGwnXSB7Ci0gICAgZGlzcGxheTogbm9uZTsKLX0KLQotI3RvZ2ds
ZS1hbGwgewotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICB0b3A6IC00MnB4OwotICAgIGxl
ZnQ6IC00cHg7Ci0gICAgd2lkdGg6IDQwcHg7Ci0gICAgdGV4dC1hbGlnbjogY2VudGVyOwotICAg
IGJvcmRlcjogbm9uZTsgLyogTW9iaWxlIFNhZmFyaSAqLwotfQotCi0jdG9nZ2xlLWFsbDpiZWZv
cmUgewotICAgIGNvbnRlbnQ6ICfCuyc7Ci0gICAgZm9udC1zaXplOiAyOHB4OwotICAgIGNvbG9y
OiAjZDlkOWQ5OwotICAgIHBhZGRpbmc6IDAgMjVweCA3cHg7Ci19Ci0KLSN0b2dnbGUtYWxsOmNo
ZWNrZWQ6YmVmb3JlIHsKLSAgICBjb2xvcjogIzczNzM3MzsKLX0KLQotI3RvZG8tbGlzdCB7Ci0g
ICAgbWFyZ2luOiAwOwotICAgIHBhZGRpbmc6IDA7Ci0gICAgbGlzdC1zdHlsZTogbm9uZTsKLX0K
LQotI3RvZG8tbGlzdCBsaSB7Ci0gICAgcG9zaXRpb246IHJlbGF0aXZlOwotICAgIGZvbnQtc2l6
ZTogMjRweDsKLSAgICBib3JkZXItYm90dG9tOiAxcHggZG90dGVkICNjY2M7Ci19Ci0KLSN0b2Rv
LWxpc3QgbGk6bGFzdC1jaGlsZCB7Ci0gICAgYm9yZGVyLWJvdHRvbTogbm9uZTsKLX0KLQotI3Rv
ZG8tbGlzdCBsaS5lZGl0aW5nIHsKLSAgICBib3JkZXItYm90dG9tOiBub25lOwotICAgIHBhZGRp
bmc6IDA7Ci19Ci0KLSN0b2RvLWxpc3QgbGkuZWRpdGluZyAuZWRpdCB7Ci0gICAgZGlzcGxheTog
YmxvY2s7Ci0gICAgd2lkdGg6IDUwNnB4OwotICAgIHBhZGRpbmc6IDEzcHggMTdweCAxMnB4IDE3
cHg7Ci0gICAgbWFyZ2luOiAwIDAgMCA0M3B4OwotfQotCi0jdG9kby1saXN0IGxpLmVkaXRpbmcg
LnZpZXcgewotICAgIGRpc3BsYXk6IG5vbmU7Ci19Ci0KLSN0b2RvLWxpc3QgbGkgLnRvZ2dsZSB7
Ci0gICAgdGV4dC1hbGlnbjogY2VudGVyOwotICAgIHdpZHRoOiA0MHB4OwotICAgIC8qIGF1dG8s
IHNpbmNlIG5vbi1XZWJLaXQgYnJvd3NlcnMgZG9lc24ndCBzdXBwb3J0IGlucHV0IHN0eWxpbmcg
Ki8KLSAgICBoZWlnaHQ6IGF1dG87Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHRvcDog
MDsKLSAgICBib3R0b206IDA7Ci0gICAgbWFyZ2luOiBhdXRvIDA7Ci0gICAgYm9yZGVyOiBub25l
OyAvKiBNb2JpbGUgU2FmYXJpICovCi0gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwotICAg
IC8qLW1vei1hcHBlYXJhbmNlOiBub25lOyovCi0gICAgLW1zLWFwcGVhcmFuY2U6IG5vbmU7Ci0g
ICAgLW8tYXBwZWFyYW5jZTogbm9uZTsKLSAgICBhcHBlYXJhbmNlOiBub25lOwotfQotCi0jdG9k
by1saXN0IGxpIC50b2dnbGU6YWZ0ZXIgewotICAgIGNvbnRlbnQ6ICfinJQnOwotICAgIGxpbmUt
aGVpZ2h0OiA0M3B4OyAvKiA0MCArIGEgY291cGxlIG9mIHBpeGVscyB2aXN1YWwgYWRqdXN0bWVu
dCAqLwotICAgIGZvbnQtc2l6ZTogMjBweDsKLSAgICBjb2xvcjogI2Q5ZDlkOTsKLSAgICB0ZXh0
LXNoYWRvdzogMCAtMXB4IDAgI2JmYmZiZjsKLX0KLQotI3RvZG8tbGlzdCBsaSAudG9nZ2xlOmNo
ZWNrZWQ6YWZ0ZXIgewotICAgIGNvbG9yOiAjODVhZGE3OwotICAgIHRleHQtc2hhZG93OiAwIDFw
eCAwICM2Njk5OTE7Ci0gICAgYm90dG9tOiAxcHg7Ci0gICAgcG9zaXRpb246IHJlbGF0aXZlOwot
fQotCi0jdG9kby1saXN0IGxpIGxhYmVsIHsKLSAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkOwot
ICAgIHBhZGRpbmc6IDE1cHg7Ci0gICAgbWFyZ2luLWxlZnQ6IDQ1cHg7Ci0gICAgZGlzcGxheTog
YmxvY2s7Ci0gICAgbGluZS1oZWlnaHQ6IDEuMjsKLSAgICAtd2Via2l0LXRyYW5zaXRpb246IGNv
bG9yIDAuNHM7Ci0gICAgLW1vei10cmFuc2l0aW9uOiBjb2xvciAwLjRzOwotICAgIC1tcy10cmFu
c2l0aW9uOiBjb2xvciAwLjRzOwotICAgIC1vLXRyYW5zaXRpb246IGNvbG9yIDAuNHM7Ci0gICAg
dHJhbnNpdGlvbjogY29sb3IgMC40czsKLX0KLQotI3RvZG8tbGlzdCBsaS5jb21wbGV0ZWQgbGFi
ZWwgewotICAgIGNvbG9yOiAjYTlhOWE5OwotICAgIHRleHQtZGVjb3JhdGlvbjogbGluZS10aHJv
dWdoOwotfQotCi0jdG9kby1saXN0IGxpIC5kZXN0cm95IHsKLSAgICBkaXNwbGF5OiBub25lOwot
ICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICB0b3A6IDA7Ci0gICAgcmlnaHQ6IDEwcHg7Ci0g
ICAgYm90dG9tOiAwOwotICAgIHdpZHRoOiA0MHB4OwotICAgIGhlaWdodDogNDBweDsKLSAgICBt
YXJnaW46IGF1dG8gMDsKLSAgICBmb250LXNpemU6IDIycHg7Ci0gICAgY29sb3I6ICNhODhhOGE7
Ci0gICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4yczsKLSAgICAtbW96LXRyYW5zaXRpb246
IGFsbCAwLjJzOwotICAgIC1tcy10cmFuc2l0aW9uOiBhbGwgMC4yczsKLSAgICAtby10cmFuc2l0
aW9uOiBhbGwgMC4yczsKLSAgICB0cmFuc2l0aW9uOiBhbGwgMC4yczsKLX0KLQotI3RvZG8tbGlz
dCBsaSAuZGVzdHJveTpob3ZlciB7Ci0gICAgdGV4dC1zaGFkb3c6IDAgMCAxcHggIzAwMCwKLSAg
ICAgMCAwIDEwcHggcmdiYSgxOTksIDEwNywgMTA3LCAwLjgpOwotICAgIC13ZWJraXQtdHJhbnNm
b3JtOiBzY2FsZSgxLjMpOwotICAgIC1tb3otdHJhbnNmb3JtOiBzY2FsZSgxLjMpOwotICAgIC1t
cy10cmFuc2Zvcm06IHNjYWxlKDEuMyk7Ci0gICAgLW8tdHJhbnNmb3JtOiBzY2FsZSgxLjMpOwot
ICAgIHRyYW5zZm9ybTogc2NhbGUoMS4zKTsKLX0KLQotI3RvZG8tbGlzdCBsaSAuZGVzdHJveTph
ZnRlciB7Ci0gICAgY29udGVudDogJ+Kclic7Ci19Ci0KLSN0b2RvLWxpc3QgbGk6aG92ZXIgLmRl
c3Ryb3kgewotICAgIGRpc3BsYXk6IGJsb2NrOwotfQotCi0jdG9kby1saXN0IGxpIC5lZGl0IHsK
LSAgICBkaXNwbGF5OiBub25lOwotfQotCi0jdG9kby1saXN0IGxpLmVkaXRpbmc6bGFzdC1jaGls
ZCB7Ci0gICAgbWFyZ2luLWJvdHRvbTogLTFweDsKLX0KLQotI2Zvb3RlciB7Ci0gICAgY29sb3I6
ICM3Nzc7Ci0gICAgcGFkZGluZzogMCAxNXB4OwotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAg
ICByaWdodDogMDsKLSAgICBib3R0b206IC0zMXB4OwotICAgIGxlZnQ6IDA7Ci0gICAgaGVpZ2h0
OiAyMHB4OwotICAgIHotaW5kZXg6IDE7Ci0gICAgdGV4dC1hbGlnbjogY2VudGVyOwotfQotCi0j
Zm9vdGVyOmJlZm9yZSB7Ci0gICAgY29udGVudDogJyc7Ci0gICAgcG9zaXRpb246IGFic29sdXRl
OwotICAgIHJpZ2h0OiAwOwotICAgIGJvdHRvbTogMzFweDsKLSAgICBsZWZ0OiAwOwotICAgIGhl
aWdodDogNTBweDsKLSAgICB6LWluZGV4OiAtMTsKLSAgICBib3gtc2hhZG93OiAwIDFweCAxcHgg
cmdiYSgwLCAwLCAwLCAwLjMpLAotICAgIDAgNnB4IDAgLTNweCByZ2JhKDI1NSwgMjU1LCAyNTUs
IDAuOCksCi0gICAgMCA3cHggMXB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjMpLAotICAgIDAgNDNw
eCAwIC02cHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpLAotICAgIDAgNDRweCAycHggLTZweCBy
Z2JhKDAsIDAsIDAsIDAuMik7Ci19Ci0KLSN0b2RvLWNvdW50IHsKLSAgICBmbG9hdDogbGVmdDsK
LSAgICB0ZXh0LWFsaWduOiBsZWZ0OwotfQotCi0jZmlsdGVycyB7Ci0gICAgbWFyZ2luOiAwOwot
ICAgIHBhZGRpbmc6IDA7Ci0gICAgbGlzdC1zdHlsZTogbm9uZTsKLSAgICBwb3NpdGlvbjogYWJz
b2x1dGU7Ci0gICAgcmlnaHQ6IDA7Ci0gICAgbGVmdDogMDsKLX0KLQotI2ZpbHRlcnMgbGkgewot
ICAgIGRpc3BsYXk6IGlubGluZTsKLX0KLQotI2ZpbHRlcnMgbGkgYSB7Ci0gICAgY29sb3I6ICM4
Mzc1NmY7Ci0gICAgbWFyZ2luOiAycHg7Ci0gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwotfQot
Ci0jZmlsdGVycyBsaSBhLnNlbGVjdGVkIHsKLSAgICBmb250LXdlaWdodDogYm9sZDsKLX0KLQot
I2NsZWFyLWNvbXBsZXRlZCB7Ci0gICAgZmxvYXQ6IHJpZ2h0OwotICAgIHBvc2l0aW9uOiByZWxh
dGl2ZTsKLSAgICBsaW5lLWhlaWdodDogMjBweDsKLSAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7
Ci0gICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjEpOwotICAgIGZvbnQtc2l6ZTogMTFw
eDsKLSAgICBwYWRkaW5nOiAwIDEwcHg7Ci0gICAgYm9yZGVyLXJhZGl1czogM3B4OwotICAgIGJv
eC1zaGFkb3c6IDAgLTFweCAwIDAgcmdiYSgwLCAwLCAwLCAwLjIpOwotfQotCi0jY2xlYXItY29t
cGxldGVkOmhvdmVyIHsKLSAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMTUpOwotICAg
IGJveC1zaGFkb3c6IDAgLTFweCAwIDAgcmdiYSgwLCAwLCAwLCAwLjMpOwotfQotCi0jaW5mbyB7
Ci0gICAgbWFyZ2luOiA2NXB4IGF1dG8gMDsKLSAgICBjb2xvcjogI2E2YTZhNjsKLSAgICBmb250
LXNpemU6IDEycHg7Ci0gICAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1
LCAwLjcpOwotICAgIHRleHQtYWxpZ246IGNlbnRlcjsKLX0KLQotI2luZm8gYSB7Ci0gICAgY29s
b3I6IGluaGVyaXQ7Ci19Ci0KLS8qCi0gICAgSGFjayB0byByZW1vdmUgYmFja2dyb3VuZCBmcm9t
IE1vYmlsZSBTYWZhcmkuCi0gICAgQ2FuJ3QgdXNlIGl0IGdsb2JhbGx5IHNpbmNlIGl0IGRlc3Ry
b3lzIGNoZWNrYm94ZXMgaW4gRmlyZWZveCBhbmQgT3BlcmEKLSovCi1AbWVkaWEgc2NyZWVuIGFu
ZCAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOjApIHsKLSAgICAjdG9nZ2xlLWFsbCwK
LSAgICAjdG9kby1saXN0IGxpIC50b2dnbGUgewotICAgIGJhY2tncm91bmQ6IG5vbmU7Ci0gICAg
fQotCi0gICAgI3RvZG8tbGlzdCBsaSAudG9nZ2xlIHsKLSAgICBoZWlnaHQ6IDQwcHg7Ci0gICAg
fQotCi0gICAgI3RvZ2dsZS1hbGwgewotICAgIHRvcDogLTU2cHg7Ci0gICAgbGVmdDogLTE1cHg7
Ci0gICAgd2lkdGg6IDY1cHg7Ci0gICAgaGVpZ2h0OiA0MXB4OwotICAgIC13ZWJraXQtdHJhbnNm
b3JtOiByb3RhdGUoOTBkZWcpOwotICAgIHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsKLSAgICAt
d2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7Ci0gICAgYXBwZWFyYW5jZTogbm9uZTsKLSAgICB9Ci19
Ci0KLS5oaWRkZW57Ci0gICAgZGlzcGxheTpub25lOwotfQotCi1ociB7Ci0gICAgbWFyZ2luOiAy
MHB4IDA7Ci0gICAgYm9yZGVyOiAwOwotICAgIGJvcmRlci10b3A6IDFweCBkYXNoZWQgI0M1QzVD
NTsKLSAgICBib3JkZXItYm90dG9tOiAxcHggZGFzaGVkICNGN0Y3Rjc7Ci19Ci0KLS5sZWFybiBh
IHsKLSAgICBmb250LXdlaWdodDogbm9ybWFsOwotICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsK
LSAgICBjb2xvcjogI2I4M2Y0NTsKLX0KLQotLmxlYXJuIGE6aG92ZXIgewotICAgIHRleHQtZGVj
b3JhdGlvbjogdW5kZXJsaW5lOwotICAgIGNvbG9yOiAjNzg3ZTdlOwotfQotCi0ubGVhcm4gaDMs
Ci0ubGVhcm4gaDQsCi0ubGVhcm4gaDUgewotICAgIG1hcmdpbjogMTBweCAwOwotICAgIGZvbnQt
d2VpZ2h0OiA1MDA7Ci0gICAgbGluZS1oZWlnaHQ6IDEuMjsKLSAgICBjb2xvcjogIzAwMDsKLX0K
LQotLmxlYXJuIGgzIHsKLSAgICBmb250LXNpemU6IDI0cHg7Ci19Ci0KLS5sZWFybiBoNCB7Ci0g
ICAgZm9udC1zaXplOiAxOHB4OwotfQotCi0ubGVhcm4gaDUgewotICAgIG1hcmdpbi1ib3R0b206
IDA7Ci0gICAgZm9udC1zaXplOiAxNHB4OwotfQotCi0ubGVhcm4gdWwgewotICAgIHBhZGRpbmc6
IDA7Ci0gICAgbWFyZ2luOiAwIDAgMzBweCAyNXB4OwotfQotCi0ubGVhcm4gbGkgewotICAgIGxp
bmUtaGVpZ2h0OiAyMHB4OwotfQotCi0ubGVhcm4gcCB7Ci0gICAgZm9udC1zaXplOiAxNXB4Owot
ICAgIGZvbnQtd2VpZ2h0OiAzMDA7Ci0gICAgbGluZS1oZWlnaHQ6IDEuMzsKLSAgICBtYXJnaW4t
dG9wOiAwOwotICAgIG1hcmdpbi1ib3R0b206IDA7Ci19Ci0KLS5xdW90ZSB7Ci0gICAgYm9yZGVy
OiBub25lOwotICAgIG1hcmdpbjogMjBweCAwIDYwcHggMDsKLX0KLQotLnF1b3RlIHAgewotICAg
IGZvbnQtc3R5bGU6IGl0YWxpYzsKLX0KLQotLnF1b3RlIHA6YmVmb3JlIHsKLSAgICBjb250ZW50
OiAn4oCcJzsKLSAgICBmb250LXNpemU6IDUwcHg7Ci0gICAgb3BhY2l0eTogLjE1OwotICAgIHBv
c2l0aW9uOiBhYnNvbHV0ZTsKLSAgICB0b3A6IC0yMHB4OwotICAgIGxlZnQ6IDNweDsKLX0KLQot
LnF1b3RlIHA6YWZ0ZXIgewotICAgIGNvbnRlbnQ6ICfigJ0nOwotICAgIGZvbnQtc2l6ZTogNTBw
eDsKLSAgICBvcGFjaXR5OiAuMTU7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIGJvdHRv
bTogLTQycHg7Ci0gICAgcmlnaHQ6IDNweDsKLX0KLQotLnF1b3RlIGZvb3RlciB7Ci0gICAgcG9z
aXRpb246IGFic29sdXRlOwotICAgIGJvdHRvbTogLTQwcHg7Ci0gICAgcmlnaHQ6IDA7Ci19Ci0K
LS5xdW90ZSBmb290ZXIgaW1nIHsKLSAgICBib3JkZXItcmFkaXVzOiAzcHg7Ci19Ci0KLS5xdW90
ZSBmb290ZXIgYSB7Ci0gICAgbWFyZ2luLWxlZnQ6IDVweDsKLSAgICB2ZXJ0aWNhbC1hbGlnbjog
bWlkZGxlOwotfQotCi0uc3BlZWNoLWJ1YmJsZSB7Ci0gICAgcG9zaXRpb246IHJlbGF0aXZlOwot
ICAgIHBhZGRpbmc6IDEwcHg7Ci0gICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAuMDQpOwot
ICAgIGJvcmRlci1yYWRpdXM6IDVweDsKLX0KLQotLnNwZWVjaC1idWJibGU6YWZ0ZXIgewotICAg
IGNvbnRlbnQ6ICcnOwotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICB0b3A6IDEwMCU7Ci0g
ICAgcmlnaHQ6IDMwcHg7Ci0gICAgYm9yZGVyOiAxM3B4IHNvbGlkIHRyYW5zcGFyZW50OwotICAg
IGJvcmRlci10b3AtY29sb3I6IHJnYmEoMCwgMCwgMCwgLjA0KTsKLX0KLQotLyoqYm9keSovLmxl
YXJuLWJhciA+IC5sZWFybiB7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHdpZHRoOiAy
NzJweDsKLSAgICB0b3A6IDhweDsKLSAgICBsZWZ0OiAtMzAwcHg7Ci0gICAgcGFkZGluZzogMTBw
eDsKLSAgICBib3JkZXItcmFkaXVzOiA1cHg7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgy
NTUsIDI1NSwgMjU1LCAuNik7Ci0gICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogbGVmdDsKLSAgICB0
cmFuc2l0aW9uLWR1cmF0aW9uOiA1MDBtczsKLX0KLQotQG1lZGlhIChtaW4td2lkdGg6IDg5OXB4
KSB7Ci0gICAgLyoqYm9keSovLmxlYXJuLWJhciB7Ci0gICAgd2lkdGg6IGF1dG87Ci0gICAgbWFy
Z2luOiAwIDAgMCAzMDBweDsKLSAgICB9Ci0gICAgLyoqYm9keSovLmxlYXJuLWJhciA+IC5sZWFy
biB7Ci0gICAgbGVmdDogOHB4OwotICAgIH0KLSAgICAvKipib2R5Ki8ubGVhcm4tYmFyICN0b2Rv
YXBwIHsKLSAgICB3aWR0aDogNTUwcHg7Ci0gICAgbWFyZ2luOiAxMzBweCBhdXRvIDQwcHggYXV0
bzsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL2Jvd2VyX2NvbXBvbmVu
dHMvdG9kb212Yy1jb21tb24vYmFzZS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvYm93ZXJfY29tcG9u
ZW50cy90b2RvbXZjLWNvbW1vbi9iYXNlLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBmOWJmNDI0MGZhZDlhOWMxMTk0YzgxNTg2ZGMyOTE2YmVjMWNjYTc4Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvYm93ZXJf
Y29tcG9uZW50cy90b2RvbXZjLWNvbW1vbi9iYXNlLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMjA5
ICswLDAgQEAKLShmdW5jdGlvbiAoKSB7Ci0gICAgJ3VzZSBzdHJpY3QnOwotCi0gICAgLy8gVW5k
ZXJzY29yZSdzIFRlbXBsYXRlIE1vZHVsZQotICAgIC8vIENvdXJ0ZXN5IG9mIHVuZGVyc2NvcmVq
cy5vcmcKLSAgICB2YXIgXyA9IChmdW5jdGlvbiAoXykgewotICAgIF8uZGVmYXVsdHMgPSBmdW5j
dGlvbiAob2JqZWN0KSB7Ci0gICAgaWYgKCFvYmplY3QpIHsKLSAgICByZXR1cm4gb2JqZWN0Owot
ICAgIH0KLSAgICBmb3IgKHZhciBhcmdzSW5kZXggPSAxLCBhcmdzTGVuZ3RoID0gYXJndW1lbnRz
Lmxlbmd0aDsgYXJnc0luZGV4IDwgYXJnc0xlbmd0aDsgYXJnc0luZGV4KyspIHsKLSAgICB2YXIg
aXRlcmFibGUgPSBhcmd1bWVudHNbYXJnc0luZGV4XTsKLSAgICBpZiAoaXRlcmFibGUpIHsKLSAg
ICBmb3IgKHZhciBrZXkgaW4gaXRlcmFibGUpIHsKLSAgICBpZiAob2JqZWN0W2tleV0gPT0gbnVs
bCkgewotICAgIG9iamVjdFtrZXldID0gaXRlcmFibGVba2V5XTsKLSAgICB9Ci0gICAgfQotICAg
IH0KLSAgICB9Ci0gICAgcmV0dXJuIG9iamVjdDsKLSAgICB9Ci0KLSAgICAvLyBCeSBkZWZhdWx0
LCBVbmRlcnNjb3JlIHVzZXMgRVJCLXN0eWxlIHRlbXBsYXRlIGRlbGltaXRlcnMsIGNoYW5nZSB0
aGUKLSAgICAvLyBmb2xsb3dpbmcgdGVtcGxhdGUgc2V0dGluZ3MgdG8gdXNlIGFsdGVybmF0aXZl
IGRlbGltaXRlcnMuCi0gICAgXy50ZW1wbGF0ZVNldHRpbmdzID0gewotICAgIGV2YWx1YXRlICAg
IDogLzwlKFtcc1xTXSs/KSU+L2csCi0gICAgaW50ZXJwb2xhdGUgOiAvPCU9KFtcc1xTXSs/KSU+
L2csCi0gICAgZXNjYXBlICAgICAgOiAvPCUtKFtcc1xTXSs/KSU+L2cKLSAgICB9OwotCi0gICAg
Ly8gV2hlbiBjdXN0b21pemluZyBgdGVtcGxhdGVTZXR0aW5nc2AsIGlmIHlvdSBkb24ndCB3YW50
IHRvIGRlZmluZSBhbgotICAgIC8vIGludGVycG9sYXRpb24sIGV2YWx1YXRpb24gb3IgZXNjYXBp
bmcgcmVnZXgsIHdlIG5lZWQgb25lIHRoYXQgaXMKLSAgICAvLyBndWFyYW50ZWVkIG5vdCB0byBt
YXRjaC4KLSAgICB2YXIgbm9NYXRjaCA9IC8oLileLzsKLQotICAgIC8vIENlcnRhaW4gY2hhcmFj
dGVycyBuZWVkIHRvIGJlIGVzY2FwZWQgc28gdGhhdCB0aGV5IGNhbiBiZSBwdXQgaW50byBhCi0g
ICAgLy8gc3RyaW5nIGxpdGVyYWwuCi0gICAgdmFyIGVzY2FwZXMgPSB7Ci0gICAgIiciOiAgICAg
ICInIiwKLSAgICAnXFwnOiAgICAgJ1xcJywKLSAgICAnXHInOiAgICAgJ3InLAotICAgICdcbic6
ICAgICAnbicsCi0gICAgJ1x0JzogICAgICd0JywKLSAgICAnXHUyMDI4JzogJ3UyMDI4JywKLSAg
ICAnXHUyMDI5JzogJ3UyMDI5JwotICAgIH07Ci0KLSAgICB2YXIgZXNjYXBlciA9IC9cXHwnfFxy
fFxufFx0fFx1MjAyOHxcdTIwMjkvZzsKLQotICAgIC8vIEphdmFTY3JpcHQgbWljcm8tdGVtcGxh
dGluZywgc2ltaWxhciB0byBKb2huIFJlc2lnJ3MgaW1wbGVtZW50YXRpb24uCi0gICAgLy8gVW5k
ZXJzY29yZSB0ZW1wbGF0aW5nIGhhbmRsZXMgYXJiaXRyYXJ5IGRlbGltaXRlcnMsIHByZXNlcnZl
cyB3aGl0ZXNwYWNlLAotICAgIC8vIGFuZCBjb3JyZWN0bHkgZXNjYXBlcyBxdW90ZXMgd2l0aGlu
IGludGVycG9sYXRlZCBjb2RlLgotICAgIF8udGVtcGxhdGUgPSBmdW5jdGlvbih0ZXh0LCBkYXRh
LCBzZXR0aW5ncykgewotICAgIHZhciByZW5kZXI7Ci0gICAgc2V0dGluZ3MgPSBfLmRlZmF1bHRz
KHt9LCBzZXR0aW5ncywgXy50ZW1wbGF0ZVNldHRpbmdzKTsKLQotICAgIC8vIENvbWJpbmUgZGVs
aW1pdGVycyBpbnRvIG9uZSByZWd1bGFyIGV4cHJlc3Npb24gdmlhIGFsdGVybmF0aW9uLgotICAg
IHZhciBtYXRjaGVyID0gbmV3IFJlZ0V4cChbCi0gICAgKHNldHRpbmdzLmVzY2FwZSB8fCBub01h
dGNoKS5zb3VyY2UsCi0gICAgKHNldHRpbmdzLmludGVycG9sYXRlIHx8IG5vTWF0Y2gpLnNvdXJj
ZSwKLSAgICAoc2V0dGluZ3MuZXZhbHVhdGUgfHwgbm9NYXRjaCkuc291cmNlCi0gICAgXS5qb2lu
KCd8JykgKyAnfCQnLCAnZycpOwotCi0gICAgLy8gQ29tcGlsZSB0aGUgdGVtcGxhdGUgc291cmNl
LCBlc2NhcGluZyBzdHJpbmcgbGl0ZXJhbHMgYXBwcm9wcmlhdGVseS4KLSAgICB2YXIgaW5kZXgg
PSAwOwotICAgIHZhciBzb3VyY2UgPSAiX19wKz0nIjsKLSAgICB0ZXh0LnJlcGxhY2UobWF0Y2hl
ciwgZnVuY3Rpb24obWF0Y2gsIGVzY2FwZSwgaW50ZXJwb2xhdGUsIGV2YWx1YXRlLCBvZmZzZXQp
IHsKLSAgICBzb3VyY2UgKz0gdGV4dC5zbGljZShpbmRleCwgb2Zmc2V0KQotICAgIC5yZXBsYWNl
KGVzY2FwZXIsIGZ1bmN0aW9uKG1hdGNoKSB7IHJldHVybiAnXFwnICsgZXNjYXBlc1ttYXRjaF07
IH0pOwotCi0gICAgaWYgKGVzY2FwZSkgewotICAgIHNvdXJjZSArPSAiJytcbigoX190PSgiICsg
ZXNjYXBlICsgIikpPT1udWxsPycnOl8uZXNjYXBlKF9fdCkpK1xuJyI7Ci0gICAgfQotICAgIGlm
IChpbnRlcnBvbGF0ZSkgewotICAgIHNvdXJjZSArPSAiJytcbigoX190PSgiICsgaW50ZXJwb2xh
dGUgKyAiKSk9PW51bGw/Jyc6X190KStcbiciOwotICAgIH0KLSAgICBpZiAoZXZhbHVhdGUpIHsK
LSAgICBzb3VyY2UgKz0gIic7XG4iICsgZXZhbHVhdGUgKyAiXG5fX3ArPSciOwotICAgIH0KLSAg
ICBpbmRleCA9IG9mZnNldCArIG1hdGNoLmxlbmd0aDsKLSAgICByZXR1cm4gbWF0Y2g7Ci0gICAg
fSk7Ci0gICAgc291cmNlICs9ICInO1xuIjsKLQotICAgIC8vIElmIGEgdmFyaWFibGUgaXMgbm90
IHNwZWNpZmllZCwgcGxhY2UgZGF0YSB2YWx1ZXMgaW4gbG9jYWwgc2NvcGUuCi0gICAgaWYgKCFz
ZXR0aW5ncy52YXJpYWJsZSkgc291cmNlID0gJ3dpdGgob2JqfHx7fSl7XG4nICsgc291cmNlICsg
J31cbic7Ci0KLSAgICBzb3VyY2UgPSAidmFyIF9fdCxfX3A9JycsX19qPUFycmF5LnByb3RvdHlw
ZS5qb2luLCIgKwotICAgICJwcmludD1mdW5jdGlvbigpe19fcCs9X19qLmNhbGwoYXJndW1lbnRz
LCcnKTt9O1xuIiArCi0gICAgc291cmNlICsgInJldHVybiBfX3A7XG4iOwotCi0gICAgdHJ5IHsK
LSAgICByZW5kZXIgPSBuZXcgRnVuY3Rpb24oc2V0dGluZ3MudmFyaWFibGUgfHwgJ29iaicsICdf
Jywgc291cmNlKTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAgZS5zb3VyY2UgPSBzb3VyY2U7Ci0g
ICAgdGhyb3cgZTsKLSAgICB9Ci0KLSAgICBpZiAoZGF0YSkgcmV0dXJuIHJlbmRlcihkYXRhLCBf
KTsKLSAgICB2YXIgdGVtcGxhdGUgPSBmdW5jdGlvbihkYXRhKSB7Ci0gICAgcmV0dXJuIHJlbmRl
ci5jYWxsKHRoaXMsIGRhdGEsIF8pOwotICAgIH07Ci0KLSAgICAvLyBQcm92aWRlIHRoZSBjb21w
aWxlZCBmdW5jdGlvbiBzb3VyY2UgYXMgYSBjb252ZW5pZW5jZSBmb3IgcHJlY29tcGlsYXRpb24u
Ci0gICAgdGVtcGxhdGUuc291cmNlID0gJ2Z1bmN0aW9uKCcgKyAoc2V0dGluZ3MudmFyaWFibGUg
fHwgJ29iaicpICsgJyl7XG4nICsgc291cmNlICsgJ30nOwotCi0gICAgcmV0dXJuIHRlbXBsYXRl
OwotICAgIH07Ci0KLSAgICByZXR1cm4gXzsKLSAgICB9KSh7fSk7Ci0KLSAgICBpZiAobG9jYXRp
b24uaG9zdG5hbWUgPT09ICd0b2RvbXZjLmNvbScpIHsKLSAgICB3aW5kb3cuX2dhcSA9IFtbJ19z
ZXRBY2NvdW50JywnVUEtMzEwODEwNjItMSddLFsnX3RyYWNrUGFnZXZpZXcnXV07KGZ1bmN0aW9u
KGQsdCl7dmFyIGc9ZC5jcmVhdGVFbGVtZW50KHQpLHM9ZC5nZXRFbGVtZW50c0J5VGFnTmFtZSh0
KVswXTtnLnNyYz0nLy93d3cuZ29vZ2xlLWFuYWx5dGljcy5jb20vZ2EuanMnO3MucGFyZW50Tm9k
ZS5pbnNlcnRCZWZvcmUoZyxzKX0oZG9jdW1lbnQsJ3NjcmlwdCcpKTsKLSAgICB9Ci0KLSAgICBm
dW5jdGlvbiByZWRpcmVjdCgpIHsKLSAgICBpZiAobG9jYXRpb24uaG9zdG5hbWUgPT09ICd0YXN0
ZWpzLmdpdGh1Yi5pbycpIHsKLSAgICBsb2NhdGlvbi5ocmVmID0gbG9jYXRpb24uaHJlZi5yZXBs
YWNlKCd0YXN0ZWpzLmdpdGh1Yi5pby90b2RvbXZjJywgJ3RvZG9tdmMuY29tJyk7Ci0gICAgfQot
ICAgIH0KLQotICAgIGZ1bmN0aW9uIGZpbmRSb290KCkgewotICAgIHZhciBiYXNlOwotCi0gICAg
Wy9sYWJzLywgL1x3Ki1leGFtcGxlcy9dLmZvckVhY2goZnVuY3Rpb24gKGhyZWYpIHsKLSAgICB2
YXIgbWF0Y2ggPSBsb2NhdGlvbi5ocmVmLm1hdGNoKGhyZWYpOwotCi0gICAgaWYgKCFiYXNlICYm
IG1hdGNoKSB7Ci0gICAgYmFzZSA9IGxvY2F0aW9uLmhyZWYuaW5kZXhPZihtYXRjaCk7Ci0gICAg
fQotICAgIH0pOwotCi0gICAgcmV0dXJuIGxvY2F0aW9uLmhyZWYuc3Vic3RyKDAsIGJhc2UpOwot
ICAgIH0KLQotICAgIGZ1bmN0aW9uIGdldEZpbGUoZmlsZSwgY2FsbGJhY2spIHsKLSAgICBpZiAo
IWxvY2F0aW9uLmhvc3QpIHsKLSAgICByZXR1cm4gY29uc29sZS5pbmZvKCdNaXNzIHRoZSBpbmZv
IGJhcj8gUnVuIFRvZG9NVkMgZnJvbSBhIHNlcnZlciB0byBhdm9pZCBhIGNyb3NzLW9yaWdpbiBl
cnJvci4nKTsKLSAgICB9Ci0KLSAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7Ci0K
LSAgICB4aHIub3BlbignR0VUJywgZmluZFJvb3QoKSArIGZpbGUsIHRydWUpOwotICAgIHhoci5z
ZW5kKCk7Ci0KLSAgICB4aHIub25sb2FkID0gZnVuY3Rpb24gKCkgewotICAgIGlmICh4aHIuc3Rh
dHVzID09PSAyMDAgJiYgY2FsbGJhY2spIHsKLSAgICBjYWxsYmFjayh4aHIucmVzcG9uc2VUZXh0
KTsKLSAgICB9Ci0gICAgfTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBMZWFybihsZWFybkpTT04s
IGNvbmZpZykgewotICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBMZWFybikpIHsKLSAgICByZXR1
cm4gbmV3IExlYXJuKGxlYXJuSlNPTiwgY29uZmlnKTsKLSAgICB9Ci0KLSAgICB2YXIgdGVtcGxh
dGUsIGZyYW1ld29yazsKLQotICAgIGlmICh0eXBlb2YgbGVhcm5KU09OICE9PSAnb2JqZWN0Jykg
ewotICAgIHRyeSB7Ci0gICAgbGVhcm5KU09OID0gSlNPTi5wYXJzZShsZWFybkpTT04pOwotICAg
IH0gY2F0Y2ggKGUpIHsKLSAgICByZXR1cm47Ci0gICAgfQotICAgIH0KLQotICAgIGlmIChjb25m
aWcpIHsKLSAgICB0ZW1wbGF0ZSA9IGNvbmZpZy50ZW1wbGF0ZTsKLSAgICBmcmFtZXdvcmsgPSBj
b25maWcuZnJhbWV3b3JrOwotICAgIH0KLQotICAgIGlmICghdGVtcGxhdGUgJiYgbGVhcm5KU09O
LnRlbXBsYXRlcykgewotICAgIHRlbXBsYXRlID0gbGVhcm5KU09OLnRlbXBsYXRlcy50b2RvbXZj
OwotICAgIH0KLQotICAgIGlmICghZnJhbWV3b3JrICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Io
J1tkYXRhLWZyYW1ld29ya10nKSkgewotICAgIGZyYW1ld29yayA9IGRvY3VtZW50LnF1ZXJ5U2Vs
ZWN0b3IoJ1tkYXRhLWZyYW1ld29ya10nKS5nZXRBdHRyaWJ1dGUoJ2RhdGEtZnJhbWV3b3JrJyk7
Ci0gICAgfQotCi0KLSAgICBpZiAodGVtcGxhdGUgJiYgbGVhcm5KU09OW2ZyYW1ld29ya10pIHsK
LSAgICB0aGlzLmZyYW1ld29ya0pTT04gPSBsZWFybkpTT05bZnJhbWV3b3JrXTsKLSAgICB0aGlz
LnRlbXBsYXRlID0gdGVtcGxhdGU7Ci0KLSAgICB0aGlzLmFwcGVuZCgpOwotICAgIH0KLSAgICB9
Ci0KLSAgICBMZWFybi5wcm90b3R5cGUuYXBwZW5kID0gZnVuY3Rpb24gKCkgewotICAgIHZhciBh
c2lkZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2FzaWRlJyk7Ci0gICAgYXNpZGUuaW5uZXJI
VE1MID0gXy50ZW1wbGF0ZSh0aGlzLnRlbXBsYXRlLCB0aGlzLmZyYW1ld29ya0pTT04pOwotICAg
IGFzaWRlLmNsYXNzTmFtZSA9ICdsZWFybic7Ci0KLSAgICAvLyBMb2NhbGl6ZSBkZW1vIGxpbmtz
Ci0gICAgdmFyIGRlbW9MaW5rcyA9IGFzaWRlLnF1ZXJ5U2VsZWN0b3JBbGwoJy5kZW1vLWxpbmsn
KTsKLSAgICBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGRlbW9MaW5rcywgZnVuY3Rpb24g
KGRlbW9MaW5rKSB7Ci0gICAgZGVtb0xpbmsuc2V0QXR0cmlidXRlKCdocmVmJywgZmluZFJvb3Qo
KSArIGRlbW9MaW5rLmdldEF0dHJpYnV0ZSgnaHJlZicpKTsKLSAgICB9KTsKLQotICAgIGRvY3Vt
ZW50LmJvZHkuY2xhc3NOYW1lID0gKGRvY3VtZW50LmJvZHkuY2xhc3NOYW1lICsgJyBsZWFybi1i
YXInKS50cmltKCk7Ci0gICAgZG9jdW1lbnQuYm9keS5pbnNlcnRBZGphY2VudEhUTUwoJ2FmdGVy
QmVnaW4nLCBhc2lkZS5vdXRlckhUTUwpOwotICAgIH07Ci0KLSAgICByZWRpcmVjdCgpOwotICAg
IGdldEZpbGUoJ2xlYXJuLmpzb24nLCBMZWFybik7Ci19KSgpOwpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVz
L3ZhbmlsbGFqcy9ib3dlcl9jb21wb25lbnRzL3RvZG9tdmMtY29tbW9uL2JnLnBuZyBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxl
cy92YW5pbGxhanMvYm93ZXJfY29tcG9uZW50cy90b2RvbXZjLWNvbW1vbi9iZy5wbmcKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIyYTc2MDA4MjVlZTExZjIxODQ5ZWQ0NzU0OTljN2Qx
ZWNiY2M4NzAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKR0lUIGJp
bmFyeSBwYXRjaApsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmxpdGVyYWwgMjEyNgp6Y21WLVUyKGtC
eFApPGg7M0t8TGswMDBlMU5KTFRxMDAza0YwMDNrSDB7e1IzNFVCIXEwMDAwQ1ApdC1zPyhYakUK
ej4rOXlgPUhLN250PX4zdDAwME81TmtsPFpjd1RqdShRNHZ+N0tXRVcjWW0/bEtfdjtUbXwhRmMp
QE53RW5tdHNoCnp4IU9+ejgxSlQzcEZzbT5tPTA0aFZhX2xYbF9ibT0rTTs9ZUk8JSRyTzJ0YWBz
dWgqU3IjUE93Kj9hZHEhTyFDVgp6KjAmYilya0NDRVYpMW5JdWlMQm50VUgtTUpJOyZxWWd6fGRA
Tmhubl9hYmkyZ2BwdTROQU1WaWQzaFMlP3F1en4KempsSmYoeDhjajxQR2NqbipKK2F7Jkg1cCpu
NSQ1ZTM/PEtDYz9vMDZtQXNOU2JnUFdPP1B6I0N6bjwhPXs+e1ZTCnpVVkVQMW1zZzlgXk9GVWhT
TzVydFhIaFJseVUyaT42JEJUPWdsR2B7SmxjdEdIcndSSW0pNkJ1dTY1akxRbl5IOAp6dmw5bFpx
VUJBKyVxdk01WEMreVlAbWZBKFlCflhQPWV8Njx7JSReZVU4bnJLP3YyY2NiQEpvbTVDRz5yS0FM
N0oKenBsSEVJYXZWcHwwcDEmbSFHYFRpPzw3aVo7fUBHNyNaKX1LbSUyIUZIblEwKiY/UExSKUch
SEFhSGdVI2N8JGR6CnpwaiMwSG1lYWRJZT5gIyk9SmprYntCPUZLblUzcGMtJllAal9qNihoNFl+
K1VxPFBVMzZDOzViPU1eRmA9cDFkSQp6azxDUU9QTmE3PiFeSj1MSHVueDF4aTRRWEstWXsmTW9U
OGt5NlZiOWN8V2huT3dGfmM9M3pPeThhZ2t0bGlTNiMKemAjOEZgOUgpRD1ibWs5QjVNblcmX3Ij
KWYkYys7JExTci1AXkFuOGRoY35JcXV1dj5qT0s3cHc3TEo7JlgwaTFDCnpHTXNIZFAxT3NAbnkk
JGohPlhBaWklN2JwNWs+YHB5TkEhfmVwYikoKXA5elI0WWw2ej1VfXtDSWRoMXooRnBBbwp6UUlX
ITswenBDeUM0KjdZTGtaQ09AY3VsMFJfJnpnaHNBOEVrKXolPCFwLWJ2c3NwbFlZMn1QOyF2NENZ
ajlrbUYKemIwYk5fbTRWKmZeWVpNb2IyKGozcEtqfjd2I1p0a3M9SW8re3N1JVdpdWtkSkgkYj9m
WmtpQT1QWV8zT2hEQmtvCnooTFRRSFkmRl5eMmhHLVlgKlo5M3ZifmM/KihKY2hEalRmQ3M/elJt
KmAqTipWLSQ9P1FxdGhuU3IqP09TM3NqSwp6bzxfVV5me35hZzYwdWw+ak5wS2E5MntATkgrU3N0
WCVAfXhCKkprIWx9UFoxY0NsSW5zfn01XiFSbmNVaypybUEKeiVTSVZndDU4RVF4TEorT2lGcTx5
dTRlT0R8OUx0M2ROc2VmeE91cSlEJiRfJWowRGdxQ3kxZ3pjfHRURDMqbWVlCnp7PSV8PGBgfV9I
eXBoT3V7Oyl4a1JnK1FuSENDM1RmK2tzcHFWNip8UUstUmNxRH00PktrQnV3cXV5WkxVcHxncgp6
UFViVWJGYkJyUGQxeE9gXkMqci1pM3A5KkYjKE9CaCE0V3lAYUMmKiF8T3xHWGNqREEmWWhGeztj
RDcqbyhHU14KekBwUVNFNyl4XzgxPVF5amU2KkxRI1RYdS03KG87Uzh1M3RwREE8U2djS2NLT3Bt
QTs9SEJaU0BPRlRAX1hPdnhxCnoqTnwzS0x5dGd6SDZHVSYmVW9jNFp6azRsdW0zUHs5P2ZwSTQr
UUdQSit2NmAxbGZScTNMY1MqKE0qV0srfGIlTwp6ZSR6PjBfZGRqJWhtQ3NwZVhkaFlSfS1pOUE9
Q2BFb0NoVVl1SH5eeCE5K3wmKFBnYio+Q2s8PTlqfCkqQHh5ZlQKenBQIytLdDx9MzlifDNXbDRm
eFQoK0c/YUg+Z0deZEBNRWFVT0pSZnk1NVR0Rkk3XlkpVnVNVT03UHAweTU1alN+CnorVEopaWdN
eXJxa1g7d1U4ajY4aUlEdHFKWWhTX0QzX09lbS1AZzZtZV9SZmlRfXVUX0stQS05cUclfWdrM0U5
Ywp6IThgS2dzTU5YbSliZWxvUGZNcWwqfCYkTT4xcWBpIWNZKVJGWW5qTll1KmdTdkA4WGViVjcl
fXhZTD42KUdKUEoKekpwQTdLMzFsY0p1SUZLU3cte3g0RlgwSzJBeil+WGc8YHNPdSQ0fF48TUM3
QCt4Ynd4c0dnVHZKSUFMalB7NjhMCno4QVl1U0dTMEdVZ2s2V2B2NFc7UnkqdW9FVG51bFBpfDU3
MyVsdipaeHcjdjZ5VVFeTU9mY3BUI1Y4UklEViMjTgp6RDFgK0FlbXNPaCl3YldERXhWY2ZwS3op
anlWPTx+JlpYUGc2Y3xaREU3VTRiazxEXj4tKF5YSlg0WXpvaU5SdkwKenl1WTd+MjZ3LVBeWncl
NkZ9c2hCd1YyJDAyYzhSc1NVeTZkTTkyZGlDQXhpWDNJVXFzcTVpZzY+VV8hVnkqcTUkCnpqbX0x
NnRKcitRWiZUP0hra3BlSXdWWC1yMUVJPUAlWmx0OzY8dHdIODZJRD5nKm1qJkUhQSkpJWdYSj14
NnUjbAp6Y0tFUD5ieDRycVYqa2BCQnJaJE1xanR7VHNIY3hVSD47KWlBS31CKEtpbGEmVkQlYj82
bSZeMFdLNF4mRVpOQUkKejhBTVlzXyUkRCV8TStAK2NRcUwtaGk0eUc+aCpqd2RpaSFXMXt9cD5a
aHdGWXRfNFN1MWtqWTk8YkFaanp+OWVrCnpfRGlhcitBZkpGUF85QHltVW8kS1c+PC01YCEkVk5P
STF5KEVEU0g0V3BDaWpFXz5hbCFOdD1eZVZFUiN1SjE9Ygp6O0JXRjJJZ3lGNUxleFYreWVjJEtp
bjtBaUBteW87Rz56SiZqcmRXI2VjWGhJWnBoNU9ZcXdfUEVmY0Y1NjxPMTkKekwpOHIhS00oKWlm
MGBAP1c0KEpkYyk3V29QR14mPSQ8elVzTStIQ1dha0NeM3RaeGsrUGpRR31CPlo1PFo2Vnh3CnpC
QEhyViQmbH5AVGFqNzBwY2V7aVN1UkxzVWN6RFlfNVRuRHE4UHlfUTN3aGBEOCE0aks7dkZkUlAr
UTA9ekp5Kgp6enVXZCUhYWlARHt8Kko8STtPRCZpJWx7SnAtOCpQdTNWR0xXaXlrNnYjWG1RcXdg
LSslZSR8Q0p3KkBgNXpiMzwKekV9eiM7a1JoTCZxNVBERzZAbW0qJD5adV9aWkUjcTNNYytOJjFP
Xjdob2g5UVI3YCtMJGNCUDVwcUc9ZnFBMHVoCnpVQnVrYXhURm1IKTx8WGJ2cDJjPUhTYk5rcFh3
NzNhNWx2N1YkamI5MiN5WjE0MUAkWD9GfUp0OGdJVTdXbTZtOQp6P2VfOzt6c25tNmBMWmVQPlQ9
JClLcj5aP2tyKlVtRnFSN3p4MEM2XmJtY3NjQDFBR3R3X3JOSD4tWG0kZCp8UTwKem4mMUxuMHU3
PWwmSUxzPiVDa0pwYERpRzlGMTh4NE5lK2xnPCNpP2U3akwleDs0Wm5Sa05eTXgwNypxb002Tjwk
CkVmKD4wTiEya2ROCgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9pbmRleC5odG1sIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4
YW1wbGVzL3ZhbmlsbGFqcy9pbmRleC5odG1sCmluZGV4IDQ3N2I5YmY1ODBkOTJkNjlhMDY0NzM2
Y2Q2NTIyMWU5Njc1Y2I4Y2UuLjZkOTQ0YzRmODg2ZmFkMzQ4MGZkZGYzZjJhMGFkZjZjZWIyZDE5
MjMgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvaW5kZXguaHRtbAorKysgYi9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMv
dmFuaWxsYWpzL2luZGV4Lmh0bWwKQEAgLTEsNTMgKzEsNTEgQEAKIDwhZG9jdHlwZSBodG1sPgog
PGh0bWwgbGFuZz0iZW4iIGRhdGEtZnJhbWV3b3JrPSJqYXZhc2NyaXB0Ij4KICAgICA8aGVhZD4K
LSAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci0gICAgPG1ldGEgaHR0cC1lcXVpdj0iWC1VQS1D
b21wYXRpYmxlIiBjb250ZW50PSJJRT1lZGdlIj4KLSAgICA8dGl0bGU+VmFuaWxsYUpTIOKAoiBU
b2RvTVZDPC90aXRsZT4KLSAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9ImJvd2VyX2Nv
bXBvbmVudHMvdG9kb212Yy1jb21tb24vYmFzZS5jc3MiPgorICAgICAgICA8bWV0YSBjaGFyc2V0
PSJ1dGYtOCI+CisgICAgICAgIDx0aXRsZT5WYW5pbGxhSlMg4oCiIFRvZG9NVkM8L3RpdGxlPgor
ICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Im5vZGVfbW9kdWxlcy90b2RvbXZj
LWNvbW1vbi9iYXNlLmNzcyI+CisgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
bm9kZV9tb2R1bGVzL3RvZG9tdmMtYXBwLWNzcy9pbmRleC5jc3MiPgogICAgIDwvaGVhZD4KICAg
ICA8Ym9keT4KLSAgICA8c2VjdGlvbiBpZD0idG9kb2FwcCI+Ci0gICAgPGhlYWRlciBpZD0iaGVh
ZGVyIj4KLSAgICA8aDE+dG9kb3M8L2gxPgotICAgIDxpbnB1dCBpZD0ibmV3LXRvZG8iIHBsYWNl
aG9sZGVyPSJXaGF0IG5lZWRzIHRvIGJlIGRvbmU/IiBhdXRvZm9jdXM+Ci0gICAgPC9oZWFkZXI+
Ci0gICAgPHNlY3Rpb24gaWQ9Im1haW4iPgotICAgIDxpbnB1dCBpZD0idG9nZ2xlLWFsbCIgdHlw
ZT0iY2hlY2tib3giPgotICAgIDxsYWJlbCBmb3I9InRvZ2dsZS1hbGwiPk1hcmsgYWxsIGFzIGNv
bXBsZXRlPC9sYWJlbD4KLSAgICA8dWwgaWQ9InRvZG8tbGlzdCI+PC91bD4KLSAgICA8L3NlY3Rp
b24+Ci0gICAgPGZvb3RlciBpZD0iZm9vdGVyIj4KLSAgICA8c3BhbiBpZD0idG9kby1jb3VudCI+
PC9zcGFuPgotICAgIDx1bCBpZD0iZmlsdGVycyI+Ci0gICAgPGxpPgotICAgIDxhIGhyZWY9IiMv
Ij5BbGw8L2E+Ci0gICAgPC9saT4KLSAgICA8bGk+Ci0gICAgPGEgaHJlZj0iIy9hY3RpdmUiPkFj
dGl2ZTwvYT4KLSAgICA8L2xpPgotICAgIDxsaT4KLSAgICA8YSBocmVmPSIjL2NvbXBsZXRlZCI+
Q29tcGxldGVkPC9hPgotICAgIDwvbGk+Ci0gICAgPC91bD4KLSAgICA8YnV0dG9uIGlkPSJjbGVh
ci1jb21wbGV0ZWQiPkNsZWFyIGNvbXBsZXRlZDwvYnV0dG9uPgotICAgIDwvZm9vdGVyPgotICAg
IDwvc2VjdGlvbj4KLSAgICA8Zm9vdGVyIGlkPSJpbmZvIj4KLSAgICA8cD5Eb3VibGUtY2xpY2sg
dG8gZWRpdCBhIHRvZG88L3A+Ci0gICAgPHA+Q3JlYXRlZCBieSA8YSBocmVmPSJodHRwOi8vdHdp
dHRlci5jb20vb3NjYXJnb2Rzb24iPk9zY2FyIEdvZHNvbjwvYT48L3A+Ci0gICAgPHA+UGFydCBv
ZiA8YSBocmVmPSJodHRwOi8vdG9kb212Yy5jb20iPlRvZG9NVkM8L2E+PC9wPgotICAgIDwvZm9v
dGVyPgotICAgIDxzY3JpcHQgc3JjPSJib3dlcl9jb21wb25lbnRzL3RvZG9tdmMtY29tbW9uL2Jh
c2UuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQ+Ci0gICAgLy8gQm9vdHN0cmFwIGFwcCBkYXRh
Ci0gICAgd2luZG93LmFwcCA9IHt9OwotICAgIDwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJq
cy9oZWxwZXJzLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0ianMvc3RvcmUuanMiPjwv
c2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJqcy9tb2RlbC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNj
cmlwdCBzcmM9ImpzL3ZpZXcuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJqcy9jb250
cm9sbGVyLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0ianMvYXBwLmpzIj48L3Njcmlw
dD4KKyAgICAgICAgPHNlY3Rpb24gY2xhc3M9InRvZG9hcHAiPgorICAgICAgICAgICAgPGhlYWRl
ciBjbGFzcz0iaGVhZGVyIj4KKyAgICAgICAgICAgICAgICA8aDE+dG9kb3M8L2gxPgorICAgICAg
ICAgICAgICAgIDxpbnB1dCBjbGFzcz0ibmV3LXRvZG8iIHBsYWNlaG9sZGVyPSJXaGF0IG5lZWRz
IHRvIGJlIGRvbmU/IiBhdXRvZm9jdXM+CisgICAgICAgICAgICA8L2hlYWRlcj4KKyAgICAgICAg
ICAgIDxzZWN0aW9uIGNsYXNzPSJtYWluIj4KKyAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9
InRvZ2dsZS1hbGwiIHR5cGU9ImNoZWNrYm94Ij4KKyAgICAgICAgICAgICAgICA8bGFiZWwgZm9y
PSJ0b2dnbGUtYWxsIj5NYXJrIGFsbCBhcyBjb21wbGV0ZTwvbGFiZWw+CisgICAgICAgICAgICAg
ICAgPHVsIGNsYXNzPSJ0b2RvLWxpc3QiPjwvdWw+CisgICAgICAgICAgICA8L3NlY3Rpb24+Cisg
ICAgICAgICAgICA8Zm9vdGVyIGNsYXNzPSJmb290ZXIiPgorICAgICAgICAgICAgICAgIDxzcGFu
IGNsYXNzPSJ0b2RvLWNvdW50Ij48L3NwYW4+CisgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJm
aWx0ZXJzIj4KKyAgICAgICAgICAgICAgICAgICAgPGxpPgorICAgICAgICAgICAgICAgICAgICAg
ICAgPGEgaHJlZj0iIy8iIGNsYXNzPSJzZWxlY3RlZCI+QWxsPC9hPgorICAgICAgICAgICAgICAg
ICAgICA8L2xpPgorICAgICAgICAgICAgICAgICAgICA8bGk+CisgICAgICAgICAgICAgICAgICAg
ICAgICA8YSBocmVmPSIjL2FjdGl2ZSI+QWN0aXZlPC9hPgorICAgICAgICAgICAgICAgICAgICA8
L2xpPgorICAgICAgICAgICAgICAgICAgICA8bGk+CisgICAgICAgICAgICAgICAgICAgICAgICA8
YSBocmVmPSIjL2NvbXBsZXRlZCI+Q29tcGxldGVkPC9hPgorICAgICAgICAgICAgICAgICAgICA8
L2xpPgorICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFz
cz0iY2xlYXItY29tcGxldGVkIj5DbGVhciBjb21wbGV0ZWQ8L2J1dHRvbj4KKyAgICAgICAgICAg
IDwvZm9vdGVyPgorICAgICAgICA8L3NlY3Rpb24+CisgICAgICAgIDxmb290ZXIgY2xhc3M9Imlu
Zm8iPgorICAgICAgICAgICAgPHA+RG91YmxlLWNsaWNrIHRvIGVkaXQgYSB0b2RvPC9wPgorICAg
ICAgICAgICAgPHA+U3BlZWRvbWV0ZXIgdmVyc2lvbiBieSA8YSBocmVmPSJodHRwOi8vdHdpdHRl
ci5jb20vYWRkeW9zbWFuaSI+QWRkeSBPc21hbmk8L3A+CisgICAgICAgICAgICA8cD5QYXJ0cyBi
eSA8YSBocmVmPSJodHRwOi8vdHdpdHRlci5jb20vb3NjYXJnb2Rzb24iPk9zY2FyIEdvZHNvbjwv
YT48L3A+CisgICAgICAgICAgICA8cD5SZWZhY3RvcmVkIGJ5IDxhIGhyZWY9Imh0dHBzOi8vZ2l0
aHViLmNvbS9jYnVyZ21lciI+Q2hyaXN0b3BoIEJ1cmdtZXI8L2E+PC9wPgorICAgICAgICAgICAg
PHA+UGFydCBvZiA8YSBocmVmPSJodHRwOi8vdG9kb212Yy5jb20iPlRvZG9NVkM8L2E+PC9wPgor
ICAgICAgICA8L2Zvb3Rlcj4KKyAgICAgICAgPHNjcmlwdCBzcmM9ImpzL2hlbHBlcnMuanMiPjwv
c2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0ianMvc3RvcmUuanMiPjwvc2NyaXB0PgorICAg
ICAgICA8c2NyaXB0IHNyYz0ianMvbW9kZWwuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0
IHNyYz0ianMvdGVtcGxhdGUuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0ianMv
dmlldy5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSJqcy9jb250cm9sbGVyLmpz
Ij48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9ImpzL2FwcC5qcyI+PC9zY3JpcHQ+CiAg
ICAgPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9qcy9hcHAu
anMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3Zhbmls
bGEtZXhhbXBsZXMvdmFuaWxsYWpzL2pzL2FwcC5qcwppbmRleCAyODhlNTliZDhlMDdkZmVlOWM5
MDRlNDA1NzVmOTdiZDI5ZjA3ZmI1Li4zMDFjZjlmZWFlNDg1NTJlNjdkODA3OGFlOWZhMzcxNzRk
NGMzOGQ0IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL2pzL2FwcC5qcworKysgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBs
ZXMvdmFuaWxsYWpzL2pzL2FwcC5qcwpAQCAtMSw0ICsxLDQgQEAKLS8qZ2xvYmFsIFN0b3JlLCBN
b2RlbCwgVmlldywgQ29udHJvbGxlciwgJCQgKi8KKy8qZ2xvYmFsIGFwcCwgJG9uICovCiAoZnVu
Y3Rpb24gKCkgewogICAgICd1c2Ugc3RyaWN0JzsKIApAQCAtOCw2NyArOCwxOCBAQAogICAgICAq
IEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBuYW1lIG9mIHlvdXIgbmV3IHRvIGRvIGxpc3QuCiAg
ICAgICovCiAgICAgZnVuY3Rpb24gVG9kbyhuYW1lKSB7Ci0gICAgdGhpcy5zdG9yYWdlID0gbmV3
IGFwcC5TdG9yZShuYW1lKTsKLSAgICB0aGlzLm1vZGVsID0gbmV3IGFwcC5Nb2RlbCh0aGlzLnN0
b3JhZ2UpOwotICAgIHRoaXMudmlldyA9IG5ldyBhcHAuVmlldygpOwotICAgIHRoaXMuY29udHJv
bGxlciA9IG5ldyBhcHAuQ29udHJvbGxlcih0aGlzLm1vZGVsLCB0aGlzLnZpZXcpOworICAgICAg
ICB0aGlzLnN0b3JhZ2UgPSBuZXcgYXBwLlN0b3JlKG5hbWUpOworICAgICAgICB0aGlzLm1vZGVs
ID0gbmV3IGFwcC5Nb2RlbCh0aGlzLnN0b3JhZ2UpOworICAgICAgICB0aGlzLnRlbXBsYXRlID0g
bmV3IGFwcC5UZW1wbGF0ZSgpOworICAgICAgICB0aGlzLnZpZXcgPSBuZXcgYXBwLlZpZXcodGhp
cy50ZW1wbGF0ZSk7CisgICAgICAgIHRoaXMuY29udHJvbGxlciA9IG5ldyBhcHAuQ29udHJvbGxl
cih0aGlzLm1vZGVsLCB0aGlzLnZpZXcpOwogICAgIH0KIAogICAgIHZhciB0b2RvID0gbmV3IFRv
ZG8oJ3RvZG9zLXZhbmlsbGFqcycpOwogCi0gICAgd2luZG93LnRvZG8gPSB0b2RvOyAvLyBCZW5j
aG1hcmsgbW9kaWZpY2F0aW9uOyBFeHBvc2UgdG9kbyBzbyB0aGF0IHdlIGNhbiBjYWxsIG1ldGhv
ZHMgb24gaXQuCi0KLSAgICAvKioKLSAgICAgKiBGaW5kcyB0aGUgbW9kZWwgSUQgb2YgdGhlIGNs
aWNrZWQgRE9NIGVsZW1lbnQKLSAgICAgKgotICAgICAqIEBwYXJhbSB7b2JqZWN0fSB0YXJnZXQg
VGhlIHN0YXJ0aW5nIHBvaW50IGluIHRoZSBET00gZm9yIGl0IHRvIHRyeSB0byBmaW5kCi0gICAg
ICogdGhlIElEIG9mIHRoZSBtb2RlbC4KLSAgICAgKi8KLSAgICBmdW5jdGlvbiBsb29rdXBJZCh0
YXJnZXQpIHsKLSAgICB2YXIgbG9va3VwID0gdGFyZ2V0OwotCi0gICAgd2hpbGUgKGxvb2t1cC5u
b2RlTmFtZSAhPT0gJ0xJJykgewotICAgIGxvb2t1cCA9IGxvb2t1cC5wYXJlbnROb2RlOworICAg
IGZ1bmN0aW9uIHNldFZpZXcoKSB7CisgICAgICAgIHRvZG8uY29udHJvbGxlci5zZXRWaWV3KGRv
Y3VtZW50LmxvY2F0aW9uLmhhc2gpOwogICAgIH0KLQotICAgIHJldHVybiBsb29rdXAuZGF0YXNl
dC5pZDsKLSAgICB9Ci0KLSAgICAvLyBXaGVuIHRoZSBlbnRlciBrZXkgaXMgcHJlc3NlZCBmaXJl
IHRoZSBhZGRJdGVtIG1ldGhvZC4KLSAgICAkJCgnI25ldy10b2RvJykuYWRkRXZlbnRMaXN0ZW5l
cigna2V5cHJlc3MnLCBmdW5jdGlvbiAoZSkgewotICAgIHRvZG8uY29udHJvbGxlci5hZGRJdGVt
KGUpOwotICAgIH0pOwotCi0gICAgLy8gQSBkZWxlZ2F0aW9uIGV2ZW50LiBXaWxsIGNoZWNrIHdo
YXQgaXRlbSB3YXMgY2xpY2tlZCB3aGVuZXZlciB5b3UgY2xpY2sgb24gYW55Ci0gICAgLy8gcGFy
dCBvZiBhIGxpc3QgaXRlbS4KLSAgICAkJCgnI3RvZG8tbGlzdCcpLmFkZEV2ZW50TGlzdGVuZXIo
J2NsaWNrJywgZnVuY3Rpb24gKGUpIHsKLSAgICB2YXIgdGFyZ2V0ID0gZS50YXJnZXQ7Ci0KLSAg
ICAvLyBJZiB5b3UgY2xpY2sgYSBkZXN0cm95IGJ1dHRvbgotICAgIGlmICh0YXJnZXQuY2xhc3NO
YW1lLmluZGV4T2YoJ2Rlc3Ryb3knKSA+IC0xKSB7Ci0gICAgdG9kby5jb250cm9sbGVyLnJlbW92
ZUl0ZW0obG9va3VwSWQodGFyZ2V0KSk7Ci0gICAgfQotCi0gICAgLy8gSWYgeW91IGNsaWNrIHRo
ZSBjaGVja21hcmsKLSAgICBpZiAodGFyZ2V0LmNsYXNzTmFtZS5pbmRleE9mKCd0b2dnbGUnKSA+
IC0xKSB7Ci0gICAgdG9kby5jb250cm9sbGVyLnRvZ2dsZUNvbXBsZXRlKGxvb2t1cElkKHRhcmdl
dCksIHRhcmdldCk7Ci0gICAgfQotCi0gICAgfSk7Ci0KLSAgICAkJCgnI3RvZG8tbGlzdCcpLmFk
ZEV2ZW50TGlzdGVuZXIoJ2RibGNsaWNrJywgZnVuY3Rpb24gKGUpIHsKLSAgICB2YXIgdGFyZ2V0
ID0gZS50YXJnZXQ7Ci0KLSAgICBpZiAodGFyZ2V0Lm5vZGVOYW1lID09PSAnTEFCRUwnKSB7Ci0g
ICAgdG9kby5jb250cm9sbGVyLmVkaXRJdGVtKGxvb2t1cElkKHRhcmdldCksIHRhcmdldCk7Ci0g
ICAgfQotICAgIH0pOwotCi0gICAgJCQoJyN0b2dnbGUtYWxsJykuYWRkRXZlbnRMaXN0ZW5lcign
Y2xpY2snLCBmdW5jdGlvbiAoZSkgewotICAgIHRvZG8uY29udHJvbGxlci50b2dnbGVBbGwoZSk7
Ci0gICAgfSk7Ci0KLSAgICAkJCgnI2NsZWFyLWNvbXBsZXRlZCcpLmFkZEV2ZW50TGlzdGVuZXIo
J2NsaWNrJywgZnVuY3Rpb24gKCkgewotICAgIHRvZG8uY29udHJvbGxlci5yZW1vdmVDb21wbGV0
ZWRJdGVtcygpOwotICAgIH0pOworICAgICRvbih3aW5kb3csICdsb2FkJywgc2V0Vmlldyk7Cisg
ICAgJG9uKHdpbmRvdywgJ2hhc2hjaGFuZ2UnLCBzZXRWaWV3KTsKIH0pKCk7CmRpZmYgLS1naXQg
YS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEt
ZXhhbXBsZXMvdmFuaWxsYWpzL2pzL2NvbnRyb2xsZXIuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL2pz
L2NvbnRyb2xsZXIuanMKaW5kZXggZTNhMGQ2YzgxZTAyMDI3ZGVhZjU3YjQ3Njc0ZGZmZTljMjAz
ZDBjOC4uMGZiYzYyYTg5ZTY1ZWI3YjgxNDA3YmNiZDE3Y2ZiMDI3YjRjZTY4NyAxMDA2NDQKLS0t
IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxh
LWV4YW1wbGVzL3ZhbmlsbGFqcy9qcy9jb250cm9sbGVyLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxh
anMvanMvY29udHJvbGxlci5qcwpAQCAtMSw0ICsxLDMgQEAKLS8qZ2xvYmFsICQkLCAkICovCiAo
ZnVuY3Rpb24gKHdpbmRvdykgewogICAgICd1c2Ugc3RyaWN0JzsKIApAQCAtNiwxNTIgKzUsMTQw
IEBACiAgICAgICogVGFrZXMgYSBtb2RlbCBhbmQgdmlldyBhbmQgYWN0cyBhcyB0aGUgY29udHJv
bGxlciBiZXR3ZWVuIHRoZW0KICAgICAgKgogICAgICAqIEBjb25zdHJ1Y3RvcgotICAgICAqIEBw
YXJhbSB7b2JqZWN0fSBtb2RlbCBUaGUgbW9kZWwgY29uc3RydWN0b3IKLSAgICAgKiBAcGFyYW0g
e29iamVjdH0gdmlldyBUaGUgdmlldyBjb25zdHJ1Y3RvcgorICAgICAqIEBwYXJhbSB7b2JqZWN0
fSBtb2RlbCBUaGUgbW9kZWwgaW5zdGFuY2UKKyAgICAgKiBAcGFyYW0ge29iamVjdH0gdmlldyBU
aGUgdmlldyBpbnN0YW5jZQogICAgICAqLwogICAgIGZ1bmN0aW9uIENvbnRyb2xsZXIobW9kZWws
IHZpZXcpIHsKLSAgICB0aGlzLm1vZGVsID0gbW9kZWw7Ci0gICAgdGhpcy52aWV3ID0gdmlldzsK
LQotICAgIHRoaXMuRU5URVJfS0VZID0gMTM7Ci0gICAgdGhpcy5FU0NBUEVfS0VZID0gMjc7Ci0K
LSAgICB0aGlzLiRtYWluID0gJCQoJyNtYWluJyk7Ci0gICAgdGhpcy4kdG9nZ2xlQWxsID0gJCQo
JyN0b2dnbGUtYWxsJyk7Ci0gICAgdGhpcy4kdG9kb0xpc3QgPSAkJCgnI3RvZG8tbGlzdCcpOwot
ICAgIHRoaXMuJHRvZG9JdGVtQ291bnRlciA9ICQkKCcjdG9kby1jb3VudCcpOwotICAgIHRoaXMu
JGNsZWFyQ29tcGxldGVkID0gJCQoJyNjbGVhci1jb21wbGV0ZWQnKTsKLSAgICB0aGlzLiRmb290
ZXIgPSAkJCgnI2Zvb3RlcicpOwotCi0gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQn
LCBmdW5jdGlvbiAoKSB7Ci0gICAgdGhpcy5fdXBkYXRlRmlsdGVyU3RhdGUoKTsKLSAgICB9LmJp
bmQodGhpcykpOwotCi0gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2hhc2hjaGFuZ2UnLCBm
dW5jdGlvbiAoKSB7Ci0gICAgdGhpcy5fdXBkYXRlRmlsdGVyU3RhdGUoKTsKLSAgICB9LmJpbmQo
dGhpcykpOworICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CisgICAgICAgIHNlbGYubW9kZWwgPSBt
b2RlbDsKKyAgICAgICAgc2VsZi52aWV3ID0gdmlldzsKKworICAgICAgICBzZWxmLnZpZXcuYmlu
ZCgnbmV3VG9kbycsIGZ1bmN0aW9uICh0aXRsZSkgeworICAgICAgICAgICAgc2VsZi5hZGRJdGVt
KHRpdGxlKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgc2VsZi52aWV3LmJpbmQoJ2l0ZW1FZGl0
JywgZnVuY3Rpb24gKGl0ZW0pIHsKKyAgICAgICAgICAgIHNlbGYuZWRpdEl0ZW0oaXRlbS5pZCk7
CisgICAgICAgIH0pOworCisgICAgICAgIHNlbGYudmlldy5iaW5kKCdpdGVtRWRpdERvbmUnLCBm
dW5jdGlvbiAoaXRlbSkgeworICAgICAgICAgICAgc2VsZi5lZGl0SXRlbVNhdmUoaXRlbS5pZCwg
aXRlbS50aXRsZSk7CisgICAgICAgIH0pOworCisgICAgICAgIHNlbGYudmlldy5iaW5kKCdpdGVt
RWRpdENhbmNlbCcsIGZ1bmN0aW9uIChpdGVtKSB7CisgICAgICAgICAgICBzZWxmLmVkaXRJdGVt
Q2FuY2VsKGl0ZW0uaWQpOworICAgICAgICB9KTsKKworICAgICAgICBzZWxmLnZpZXcuYmluZCgn
aXRlbVJlbW92ZScsIGZ1bmN0aW9uIChpdGVtKSB7CisgICAgICAgICAgICBzZWxmLnJlbW92ZUl0
ZW0oaXRlbS5pZCk7CisgICAgICAgIH0pOworCisgICAgICAgIHNlbGYudmlldy5iaW5kKCdpdGVt
VG9nZ2xlJywgZnVuY3Rpb24gKGl0ZW0pIHsKKyAgICAgICAgICAgIHNlbGYudG9nZ2xlQ29tcGxl
dGUoaXRlbS5pZCwgaXRlbS5jb21wbGV0ZWQpOworICAgICAgICB9KTsKKworICAgICAgICBzZWxm
LnZpZXcuYmluZCgncmVtb3ZlQ29tcGxldGVkJywgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg
c2VsZi5yZW1vdmVDb21wbGV0ZWRJdGVtcygpOworICAgICAgICB9KTsKKworICAgICAgICBzZWxm
LnZpZXcuYmluZCgndG9nZ2xlQWxsJywgZnVuY3Rpb24gKHN0YXR1cykgeworICAgICAgICAgICAg
c2VsZi50b2dnbGVBbGwoc3RhdHVzLmNvbXBsZXRlZCk7CisgICAgICAgIH0pOwogICAgIH0KIAog
ICAgIC8qKgorICAgICAqIExvYWRzIGFuZCBpbml0aWFsaXNlcyB0aGUgdmlldworICAgICAqCisg
ICAgICogQHBhcmFtIHtzdHJpbmd9ICcnIHwgJ2FjdGl2ZScgfCAnY29tcGxldGVkJworICAgICAq
LworICAgIENvbnRyb2xsZXIucHJvdG90eXBlLnNldFZpZXcgPSBmdW5jdGlvbiAobG9jYXRpb25I
YXNoKSB7CisgICAgICAgIHZhciByb3V0ZSA9IGxvY2F0aW9uSGFzaC5zcGxpdCgnLycpWzFdOwor
ICAgICAgICB2YXIgcGFnZSA9IHJvdXRlIHx8ICcnOworICAgICAgICB0aGlzLl91cGRhdGVGaWx0
ZXJTdGF0ZShwYWdlKTsKKyAgICB9OworCisgICAgLyoqCiAgICAgICogQW4gZXZlbnQgdG8gZmly
ZSBvbiBsb2FkLiBXaWxsIGdldCBhbGwgaXRlbXMgYW5kIGRpc3BsYXkgdGhlbSBpbiB0aGUKICAg
ICAgKiB0b2RvLWxpc3QKICAgICAgKi8KICAgICBDb250cm9sbGVyLnByb3RvdHlwZS5zaG93QWxs
ID0gZnVuY3Rpb24gKCkgewotICAgIHRoaXMubW9kZWwucmVhZChmdW5jdGlvbiAoZGF0YSkgewot
ICAgIHRoaXMuJHRvZG9MaXN0LmlubmVySFRNTCA9IHRoaXMudmlldy5zaG93KGRhdGEpOwotICAg
IH0uYmluZCh0aGlzKSk7CisgICAgICAgIHZhciBzZWxmID0gdGhpczsKKyAgICAgICAgc2VsZi5t
b2RlbC5yZWFkKGZ1bmN0aW9uIChkYXRhKSB7CisgICAgICAgICAgICBzZWxmLnZpZXcucmVuZGVy
KCdzaG93RW50cmllcycsIGRhdGEpOworICAgICAgICB9KTsKICAgICB9OwogCiAgICAgLyoqCiAg
ICAgICogUmVuZGVycyBhbGwgYWN0aXZlIHRhc2tzCiAgICAgICovCiAgICAgQ29udHJvbGxlci5w
cm90b3R5cGUuc2hvd0FjdGl2ZSA9IGZ1bmN0aW9uICgpIHsKLSAgICB0aGlzLm1vZGVsLnJlYWQo
eyBjb21wbGV0ZWQ6IDAgfSwgZnVuY3Rpb24gKGRhdGEpIHsKLSAgICB0aGlzLiR0b2RvTGlzdC5p
bm5lckhUTUwgPSB0aGlzLnZpZXcuc2hvdyhkYXRhKTsKLSAgICB9LmJpbmQodGhpcykpOworICAg
ICAgICB2YXIgc2VsZiA9IHRoaXM7CisgICAgICAgIHNlbGYubW9kZWwucmVhZCh7IGNvbXBsZXRl
ZDogZmFsc2UgfSwgZnVuY3Rpb24gKGRhdGEpIHsKKyAgICAgICAgICAgIHNlbGYudmlldy5yZW5k
ZXIoJ3Nob3dFbnRyaWVzJywgZGF0YSk7CisgICAgICAgIH0pOwogICAgIH07CiAKICAgICAvKioK
ICAgICAgKiBSZW5kZXJzIGFsbCBjb21wbGV0ZWQgdGFza3MKICAgICAgKi8KICAgICBDb250cm9s
bGVyLnByb3RvdHlwZS5zaG93Q29tcGxldGVkID0gZnVuY3Rpb24gKCkgewotICAgIHRoaXMubW9k
ZWwucmVhZCh7IGNvbXBsZXRlZDogMSB9LCBmdW5jdGlvbiAoZGF0YSkgewotICAgIHRoaXMuJHRv
ZG9MaXN0LmlubmVySFRNTCA9IHRoaXMudmlldy5zaG93KGRhdGEpOwotICAgIH0uYmluZCh0aGlz
KSk7CisgICAgICAgIHZhciBzZWxmID0gdGhpczsKKyAgICAgICAgc2VsZi5tb2RlbC5yZWFkKHsg
Y29tcGxldGVkOiB0cnVlIH0sIGZ1bmN0aW9uIChkYXRhKSB7CisgICAgICAgICAgICBzZWxmLnZp
ZXcucmVuZGVyKCdzaG93RW50cmllcycsIGRhdGEpOworICAgICAgICB9KTsKICAgICB9OwogCiAg
ICAgLyoqCiAgICAgICogQW4gZXZlbnQgdG8gZmlyZSB3aGVuZXZlciB5b3Ugd2FudCB0byBhZGQg
YW4gaXRlbS4gU2ltcGx5IHBhc3MgaW4gdGhlIGV2ZW50CiAgICAgICogb2JqZWN0IGFuZCBpdCds
bCBoYW5kbGUgdGhlIERPTSBpbnNlcnRpb24gYW5kIHNhdmluZyBvZiB0aGUgbmV3IGl0ZW0uCi0g
ICAgICoKLSAgICAgKiBAcGFyYW0ge29iamVjdH0gZSBUaGUgZXZlbnQgb2JqZWN0CiAgICAgICov
Ci0gICAgQ29udHJvbGxlci5wcm90b3R5cGUuYWRkSXRlbSA9IGZ1bmN0aW9uIChlKSB7Ci0gICAg
dmFyIGlucHV0ID0gJCQoJyNuZXctdG9kbycpOwotICAgIHZhciB0aXRsZSA9IHRpdGxlIHx8ICcn
OworICAgIENvbnRyb2xsZXIucHJvdG90eXBlLmFkZEl0ZW0gPSBmdW5jdGlvbiAodGl0bGUpIHsK
KyAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwogCi0gICAgaWYgKGUua2V5Q29kZSA9PT0gdGhpcy5F
TlRFUl9LRVkpIHsKLSAgICBpZiAoZS50YXJnZXQudmFsdWUudHJpbSgpID09PSAnJykgewotICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICB0aGlzLm1vZGVsLmNyZWF0ZShlLnRhcmdldC52YWx1ZSwg
ZnVuY3Rpb24gKGRhdGEpIHsKLSAgICBpbnB1dC52YWx1ZSA9ICcnOwotICAgIHRoaXMuX2ZpbHRl
cih0cnVlKTsKLSAgICB9LmJpbmQodGhpcykpOwotICAgIH0KKyAgICAgICAgaWYgKHRpdGxlLnRy
aW0oKSA9PT0gJycpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCisgICAgICAg
IHNlbGYubW9kZWwuY3JlYXRlKHRpdGxlLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBzZWxm
LnZpZXcucmVuZGVyKCdjbGVhck5ld1RvZG8nKTsKKyAgICAgICAgICAgIHNlbGYuX2ZpbHRlcih0
cnVlKTsKKyAgICAgICAgfSk7CiAgICAgfTsKIAotICAgIC8qKgotICAgICAqIEhpZGVzIHRoZSBs
YWJlbCB0ZXh0IGFuZCBjcmVhdGVzIGFuIGlucHV0IHRvIGVkaXQgdGhlIHRpdGxlIG9mIHRoZSBp
dGVtLgotICAgICAqIFdoZW4geW91IGhpdCBlbnRlciBvciBibHVyIG91dCBvZiB0aGUgaW5wdXQg
aXQgc2F2ZXMgaXQgYW5kwqB1cGRhdGVzIHRoZSBVSQotICAgICAqIHdpdGggdGhlIG5ldyBuYW1l
LgotICAgICAqCi0gICAgICogQHBhcmFtIHtudW1iZXJ9IGlkIFRoZSBpZCBvZiB0aGUgaXRlbSB0
byBlZGl0Ci0gICAgICogQHBhcmFtIHtvYmplY3R9IGxhYmVsIFRoZSBsYWJlbCB5b3Ugd2FudCB0
byBlZGl0IHRoZSB0ZXh0IG9mCisgICAgLyoKKyAgICAgKiBUcmlnZ2VycyB0aGUgaXRlbSBlZGl0
aW5nIG1vZGUuCiAgICAgICovCi0gICAgQ29udHJvbGxlci5wcm90b3R5cGUuZWRpdEl0ZW0gPSBm
dW5jdGlvbiAoaWQsIGxhYmVsKSB7Ci0gICAgdmFyIGxpID0gIGxhYmVsOwotCi0gICAgLy8gVGhp
cyBmaW5kcyB0aGUgPGxhYmVsPidzIHBhcmVudCA8bGk+Ci0gICAgd2hpbGUgKGxpLm5vZGVOYW1l
ICE9PSAnTEknKSB7Ci0gICAgbGkgPSBsaS5wYXJlbnROb2RlOwotICAgIH0KLQotICAgIHZhciBv
blNhdmVIYW5kbGVyID0gZnVuY3Rpb24gKCkgewotICAgIHZhciB2YWx1ZSA9IGlucHV0LnZhbHVl
LnRyaW0oKTsKLSAgICB2YXIgZGlzY2FyZGluZyA9IGlucHV0LmRhdGFzZXQuZGlzY2FyZDsKLQot
ICAgIGlmICh2YWx1ZS5sZW5ndGggJiYgIWRpc2NhcmRpbmcpIHsKLSAgICB0aGlzLm1vZGVsLnVw
ZGF0ZShpZCwgeyB0aXRsZTogaW5wdXQudmFsdWUgfSk7Ci0KLSAgICAvLyBJbnN0ZWFkIG9mIHJl
LXJlbmRlcmluZyB0aGUgd2hvbGUgdmlldyBqdXN0IHVwZGF0ZQotICAgIC8vIHRoaXMgcGllY2Ug
b2YgaXQKLSAgICBsYWJlbC5pbm5lckhUTUwgPSB2YWx1ZTsKLSAgICB9IGVsc2UgaWYgKHZhbHVl
Lmxlbmd0aCA9PT0gMCkgewotICAgIC8vIE5vIHZhbHVlIHdhcyBlbnRlcmVkIGluIHRoZSBpbnB1
dC4gV2UnbGwgcmVtb3ZlIHRoZSB0b2RvIGl0ZW0uCi0gICAgdGhpcy5yZW1vdmVJdGVtKGlkKTsK
LSAgICB9Ci0KLSAgICAvLyBSZW1vdmUgdGhlIGlucHV0IHNpbmNlIHdlIG5vIGxvbmdlciBuZWVk
IGl0Ci0gICAgLy8gTGVzcyBET00gbWVhbnMgZmFzdGVyIHJlbmRlcmluZwotICAgIGxpLnJlbW92
ZUNoaWxkKGlucHV0KTsKLQotICAgIC8vIFJlbW92ZSB0aGUgZWRpdGluZyBjbGFzcwotICAgIGxp
LmNsYXNzTmFtZSA9IGxpLmNsYXNzTmFtZS5yZXBsYWNlKCdlZGl0aW5nJywgJycpOwotICAgIH0u
YmluZCh0aGlzKTsKLQotICAgIC8vIEFwcGVuZCB0aGUgZWRpdGluZyBjbGFzcwotICAgIGxpLmNs
YXNzTmFtZSA9IGxpLmNsYXNzTmFtZSArICcgZWRpdGluZyc7Ci0KLSAgICB2YXIgaW5wdXQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpOwotICAgIGlucHV0LmNsYXNzTmFtZSA9ICdl
ZGl0JzsKLQotICAgIC8vIEdldCB0aGUgaW5uZXJIVE1MIG9mIHRoZSBsYWJlbCBpbnN0ZWFkIG9m
IHJlcXVlc3RpbmcgdGhlIGRhdGEgZnJvbSB0aGUKLSAgICAvLyBPUk0uIElmIHRoaXMgd2VyZSBh
IHJlYWwgREIgdGhpcyB3b3VsZCBzYXZlIGEgbG90IG9mIHRpbWUgYW5kIHdvdWxkIGF2b2lkCi0g
ICAgLy8gYSBzcGlubmVyIGdpZi4KLSAgICBpbnB1dC52YWx1ZSA9IGxhYmVsLmlubmVySFRNTDsK
LQotICAgIGxpLmFwcGVuZENoaWxkKGlucHV0KTsKLQotICAgIGlucHV0LmFkZEV2ZW50TGlzdGVu
ZXIoJ2JsdXInLCBvblNhdmVIYW5kbGVyKTsKLQotICAgIGlucHV0LmFkZEV2ZW50TGlzdGVuZXIo
J2tleXByZXNzJywgZnVuY3Rpb24gKGUpIHsKLSAgICBpZiAoZS5rZXlDb2RlID09PSB0aGlzLkVO
VEVSX0tFWSkgewotICAgIC8vIFJlbW92ZSB0aGUgY3Vyc29yIGZyb20gdGhlIGlucHV0IHdoZW4g
eW91IGhpdCBlbnRlciBqdXN0IGxpa2UgaWYgaXQKLSAgICAvLyB3ZXJlIGEgcmVhbCBmb3JtCi0g
ICAgaW5wdXQuYmx1cigpOwotICAgIH0KKyAgICBDb250cm9sbGVyLnByb3RvdHlwZS5lZGl0SXRl
bSA9IGZ1bmN0aW9uIChpZCkgeworICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CisgICAgICAgIHNl
bGYubW9kZWwucmVhZChpZCwgZnVuY3Rpb24gKGRhdGEpIHsKKyAgICAgICAgICAgIHNlbGYudmll
dy5yZW5kZXIoJ2VkaXRJdGVtJywge2lkOiBpZCwgdGl0bGU6IGRhdGFbMF0udGl0bGV9KTsKKyAg
ICAgICAgfSk7CisgICAgfTsKIAotICAgIGlmIChlLmtleUNvZGUgPT09IHRoaXMuRVNDQVBFX0tF
WSkgewotICAgIC8vIERpc2NhcmQgdGhlIGNoYW5nZXMKLSAgICBpbnB1dC5kYXRhc2V0LmRpc2Nh
cmQgPSB0cnVlOwotICAgIGlucHV0LmJsdXIoKTsKLSAgICB9Ci0gICAgfS5iaW5kKHRoaXMpKTsK
KyAgICAvKgorICAgICAqIEZpbmlzaGVzIHRoZSBpdGVtIGVkaXRpbmcgbW9kZSBzdWNjZXNzZnVs
bHkuCisgICAgICovCisgICAgQ29udHJvbGxlci5wcm90b3R5cGUuZWRpdEl0ZW1TYXZlID0gZnVu
Y3Rpb24gKGlkLCB0aXRsZSkgeworICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CisgICAgICAgIHRp
dGxlID0gdGl0bGUudHJpbSgpOworCisgICAgICAgIGlmICh0aXRsZS5sZW5ndGggIT09IDApIHsK
KyAgICAgICAgICAgIHNlbGYubW9kZWwudXBkYXRlKGlkLCB7dGl0bGU6IHRpdGxlfSwgZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgICAgIHNlbGYudmlldy5yZW5kZXIoJ2VkaXRJdGVtRG9uZScs
IHtpZDogaWQsIHRpdGxlOiB0aXRsZX0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBzZWxmLnJlbW92ZUl0ZW0oaWQpOworICAgICAgICB9CisgICAgfTsK
IAotICAgIGlucHV0LmZvY3VzKCk7CisgICAgLyoKKyAgICAgKiBDYW5jZWxzIHRoZSBpdGVtIGVk
aXRpbmcgbW9kZS4KKyAgICAgKi8KKyAgICBDb250cm9sbGVyLnByb3RvdHlwZS5lZGl0SXRlbUNh
bmNlbCA9IGZ1bmN0aW9uIChpZCkgeworICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CisgICAgICAg
IHNlbGYubW9kZWwucmVhZChpZCwgZnVuY3Rpb24gKGRhdGEpIHsKKyAgICAgICAgICAgIHNlbGYu
dmlldy5yZW5kZXIoJ2VkaXRJdGVtRG9uZScsIHtpZDogaWQsIHRpdGxlOiBkYXRhWzBdLnRpdGxl
fSk7CisgICAgICAgIH0pOwogICAgIH07CiAKICAgICAvKioKQEAgLTE2MiwyNCArMTQ5LDI2IEBA
CiAgICAgICogc3RvcmFnZQogICAgICAqLwogICAgIENvbnRyb2xsZXIucHJvdG90eXBlLnJlbW92
ZUl0ZW0gPSBmdW5jdGlvbiAoaWQpIHsKLSAgICB0aGlzLm1vZGVsLnJlbW92ZShpZCwgZnVuY3Rp
b24gKCkgewotICAgIHRoaXMuJHRvZG9MaXN0LnJlbW92ZUNoaWxkKCQkKCdbZGF0YS1pZD0iJyAr
IGlkICsgJyJdJykpOwotICAgIH0uYmluZCh0aGlzKSk7CisgICAgICAgIHZhciBzZWxmID0gdGhp
czsKKyAgICAgICAgc2VsZi5tb2RlbC5yZW1vdmUoaWQsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgIHNlbGYudmlldy5yZW5kZXIoJ3JlbW92ZUl0ZW0nLCBpZCk7CisgICAgICAgIH0pOwogCi0g
ICAgdGhpcy5fZmlsdGVyKCk7CisgICAgICAgIHNlbGYuX2ZpbHRlcigpOwogICAgIH07CiAKICAg
ICAvKioKICAgICAgKiBXaWxsIHJlbW92ZSBhbGwgY29tcGxldGVkIGl0ZW1zIGZyb20gdGhlIERP
TSBhbmQgc3RvcmFnZS4KICAgICAgKi8KICAgICBDb250cm9sbGVyLnByb3RvdHlwZS5yZW1vdmVD
b21wbGV0ZWRJdGVtcyA9IGZ1bmN0aW9uICgpIHsKLSAgICB0aGlzLm1vZGVsLnJlYWQoeyBjb21w
bGV0ZWQ6IDEgfSwgZnVuY3Rpb24gKGRhdGEpIHsKLSAgICBkYXRhLmZvckVhY2goZnVuY3Rpb24g
KGl0ZW0pIHsKLSAgICB0aGlzLnJlbW92ZUl0ZW0oaXRlbS5pZCk7Ci0gICAgfS5iaW5kKHRoaXMp
KTsKLSAgICB9LmJpbmQodGhpcykpOwotCi0gICAgdGhpcy5fZmlsdGVyKCk7CisgICAgICAgIHZh
ciBzZWxmID0gdGhpczsKKyAgICAgICAgc2VsZi5tb2RlbC5yZWFkKHsgY29tcGxldGVkOiB0cnVl
IH0sIGZ1bmN0aW9uIChkYXRhKSB7CisgICAgICAgICAgICBkYXRhLmZvckVhY2goZnVuY3Rpb24g
KGl0ZW0pIHsKKyAgICAgICAgICAgICAgICBzZWxmLnJlbW92ZUl0ZW0oaXRlbS5pZCk7CisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgc2VsZi5fZmlsdGVyKCk7CiAgICAg
fTsKIAogICAgIC8qKgpAQCAtMTkxLDQ4ICsxODAsMzMgQEAKICAgICAgKiAgICAgICAgICAgICAg
ICAgICAgICAgICAgb3Igbm90CiAgICAgICogQHBhcmFtIHtib29sZWFufHVuZGVmaW5lZH0gc2ls
ZW50IFByZXZlbnQgcmUtZmlsdGVyaW5nIHRoZSB0b2RvIGl0ZW1zCiAgICAgICovCi0gICAgQ29u
dHJvbGxlci5wcm90b3R5cGUudG9nZ2xlQ29tcGxldGUgPSBmdW5jdGlvbiAoaWQsIGNoZWNrYm94
LCBzaWxlbnQpIHsKLSAgICB2YXIgY29tcGxldGVkID0gY2hlY2tib3guY2hlY2tlZCA/IDEgOiAw
OwotCi0gICAgdGhpcy5tb2RlbC51cGRhdGUoaWQsIHsgY29tcGxldGVkOiBjb21wbGV0ZWQgfSwg
ZnVuY3Rpb24gKCkgewotICAgIHZhciBsaXN0SXRlbSA9ICQkKCdbZGF0YS1pZD0iJyArIGlkICsg
JyJdJyk7Ci0KLSAgICBpZiAoIWxpc3RJdGVtKSB7Ci0gICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGxpc3RJdGVtLmNsYXNzTmFtZSA9IGNvbXBsZXRlZCA/ICdjb21wbGV0ZWQnIDogJyc7Ci0KLSAg
ICAvLyBJbiBjYXNlIGl0IHdhcyB0b2dnbGVkIGZyb20gYW4gZXZlbnQgYW5kIG5vdCBieSBjbGlj
a2luZyB0aGUgY2hlY2tib3gKLSAgICBsaXN0SXRlbS5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpLmNo
ZWNrZWQgPSBjb21wbGV0ZWQ7Ci0gICAgfSk7Ci0KLSAgICBpZiAoIXNpbGVudCkgewotICAgIHRo
aXMuX2ZpbHRlcigpOwotICAgIH0KKyAgICBDb250cm9sbGVyLnByb3RvdHlwZS50b2dnbGVDb21w
bGV0ZSA9IGZ1bmN0aW9uIChpZCwgY29tcGxldGVkLCBzaWxlbnQpIHsKKyAgICAgICAgdmFyIHNl
bGYgPSB0aGlzOworICAgICAgICBzZWxmLm1vZGVsLnVwZGF0ZShpZCwgeyBjb21wbGV0ZWQ6IGNv
bXBsZXRlZCB9LCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBzZWxmLnZpZXcucmVuZGVyKCdl
bGVtZW50Q29tcGxldGUnLCB7CisgICAgICAgICAgICAgICAgaWQ6IGlkLAorICAgICAgICAgICAg
ICAgIGNvbXBsZXRlZDogY29tcGxldGVkCisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisK
KyAgICAgICAgaWYgKCFzaWxlbnQpIHsKKyAgICAgICAgICAgIHNlbGYuX2ZpbHRlcigpOworICAg
ICAgICB9CiAgICAgfTsKIAogICAgIC8qKgotICAgICAqIFdpbGwgdG9nZ2xlIEFMTCBjaGVja2Jv
eGUncyBvbi9vZmYgc3RhdGUgYW5kIGNvbXBsZXRlbmVzcyBvZiBtb2RlbHMuCisgICAgICogV2ls
bCB0b2dnbGUgQUxMIGNoZWNrYm94ZXMnIG9uL29mZiBzdGF0ZSBhbmQgY29tcGxldGVuZXNzIG9m
IG1vZGVscy4KICAgICAgKiBKdXN0IHBhc3MgaW4gdGhlIGV2ZW50IG9iamVjdC4KLSAgICAgKgot
ICAgICAqIEBwYXJhbSB7b2JqZWN0fSBlIFRoZSBldmVudCBvYmplY3QKICAgICAgKi8KLSAgICBD
b250cm9sbGVyLnByb3RvdHlwZS50b2dnbGVBbGwgPSBmdW5jdGlvbiAoZSkgewotICAgIHZhciBj
b21wbGV0ZWQgPSBlLnRhcmdldC5jaGVja2VkID8gMSA6IDA7Ci0gICAgdmFyIHF1ZXJ5ID0gMDsK
LQotICAgIGlmIChjb21wbGV0ZWQgPT09IDApIHsKLSAgICBxdWVyeSA9IDE7Ci0gICAgfQotCi0g
ICAgdGhpcy5tb2RlbC5yZWFkKHsgY29tcGxldGVkOiBxdWVyeSB9LCBmdW5jdGlvbiAoZGF0YSkg
ewotICAgIGRhdGEuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkgewotICAgIHRoaXMudG9nZ2xlQ29t
cGxldGUoaXRlbS5pZCwgZS50YXJnZXQsIHRydWUpOwotICAgIH0uYmluZCh0aGlzKSk7Ci0gICAg
fS5iaW5kKHRoaXMpKTsKLQotICAgIHRoaXMuX2ZpbHRlcigpOworICAgIENvbnRyb2xsZXIucHJv
dG90eXBlLnRvZ2dsZUFsbCA9IGZ1bmN0aW9uIChjb21wbGV0ZWQpIHsKKyAgICAgICAgdmFyIHNl
bGYgPSB0aGlzOworICAgICAgICBzZWxmLm1vZGVsLnJlYWQoeyBjb21wbGV0ZWQ6ICFjb21wbGV0
ZWQgfSwgZnVuY3Rpb24gKGRhdGEpIHsKKyAgICAgICAgICAgIGRhdGEuZm9yRWFjaChmdW5jdGlv
biAoaXRlbSkgeworICAgICAgICAgICAgICAgIHNlbGYudG9nZ2xlQ29tcGxldGUoaXRlbS5pZCwg
Y29tcGxldGVkLCB0cnVlKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKworICAgICAg
ICBzZWxmLl9maWx0ZXIoKTsKICAgICB9OwogCiAgICAgLyoqCkBAIC0yNDAsMzcgKzIxNCwxNyBA
QAogICAgICAqIG51bWJlciBvZiB0b2Rvcy4KICAgICAgKi8KICAgICBDb250cm9sbGVyLnByb3Rv
dHlwZS5fdXBkYXRlQ291bnQgPSBmdW5jdGlvbiAoKSB7Ci0gICAgdmFyIHRvZG9zID0gdGhpcy5t
b2RlbC5nZXRDb3VudCgpOwotCi0gICAgdGhpcy4kdG9kb0l0ZW1Db3VudGVyLmlubmVySFRNTCA9
IHRoaXMudmlldy5pdGVtQ291bnRlcih0b2Rvcy5hY3RpdmUpOwotCi0gICAgdGhpcy4kY2xlYXJD
b21wbGV0ZWQuaW5uZXJIVE1MID0gdGhpcy52aWV3LmNsZWFyQ29tcGxldGVkQnV0dG9uKHRvZG9z
LmNvbXBsZXRlZCk7Ci0gICAgdGhpcy4kY2xlYXJDb21wbGV0ZWQuc3R5bGUuZGlzcGxheSA9IHRv
ZG9zLmNvbXBsZXRlZCA+IDAgPyAnYmxvY2snIDogJ25vbmUnOwotCi0gICAgdGhpcy4kdG9nZ2xl
QWxsLmNoZWNrZWQgPSB0b2Rvcy5jb21wbGV0ZWQgPT09IHRvZG9zLnRvdGFsOwotCi0gICAgdGhp
cy5fdG9nZ2xlRnJhbWUodG9kb3MpOwotICAgIH07Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbWFp
biBib2R5IGFuZCBmb290ZXIgZWxlbWVudHMgc2hvdWxkIG5vdCBiZSB2aXNpYmxlIHdoZW4gdGhl
cmUgYXJlIG5vCi0gICAgICogdG9kb3MgbGVmdC4KLSAgICAgKgotICAgICAqIEBwYXJhbSB7b2Jq
ZWN0fSB0b2RvcyBDb250YWlucyBhIGNvdW50IG9mIGFsbCB0b2RvcywgYW5kIHRoZWlyIHN0YXR1
c2VzLgotICAgICAqLwotICAgIENvbnRyb2xsZXIucHJvdG90eXBlLl90b2dnbGVGcmFtZSA9IGZ1
bmN0aW9uICh0b2RvcykgewotICAgIHZhciBmcmFtZURpc3BsYXkgPSB0aGlzLiRtYWluLnN0eWxl
LmRpc3BsYXk7Ci0gICAgdmFyIGZyYW1lVmlzaWJsZSA9IGZyYW1lRGlzcGxheSA9PT0gJ2Jsb2Nr
JyB8fCBmcmFtZURpc3BsYXkgPT09ICcnOwotCi0gICAgaWYgKHRvZG9zLnRvdGFsID09PSAwICYm
IGZyYW1lVmlzaWJsZSkgewotICAgIHRoaXMuJG1haW4uc3R5bGUuZGlzcGxheSA9ICdub25lJzsK
LSAgICB0aGlzLiRmb290ZXIuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKLSAgICB9Ci0KLSAgICBp
ZiAodG9kb3MudG90YWwgPiAwICYmICFmcmFtZVZpc2libGUpIHsKLSAgICB0aGlzLiRtYWluLnN0
eWxlLmRpc3BsYXkgPSAnYmxvY2snOwotICAgIHRoaXMuJGZvb3Rlci5zdHlsZS5kaXNwbGF5ID0g
J2Jsb2NrJzsKLSAgICB9CisgICAgICAgIHZhciBzZWxmID0gdGhpczsKKyAgICAgICAgc2VsZi5t
b2RlbC5nZXRDb3VudChmdW5jdGlvbiAodG9kb3MpIHsKKyAgICAgICAgICAgIHNlbGYudmlldy5y
ZW5kZXIoJ3VwZGF0ZUVsZW1lbnRDb3VudCcsIHRvZG9zLmFjdGl2ZSk7CisgICAgICAgICAgICBz
ZWxmLnZpZXcucmVuZGVyKCdjbGVhckNvbXBsZXRlZEJ1dHRvbicsIHsKKyAgICAgICAgICAgICAg
ICBjb21wbGV0ZWQ6IHRvZG9zLmNvbXBsZXRlZCwKKyAgICAgICAgICAgICAgICB2aXNpYmxlOiB0
b2Rvcy5jb21wbGV0ZWQgPiAwCisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgc2VsZi52
aWV3LnJlbmRlcigndG9nZ2xlQWxsJywge2NoZWNrZWQ6IHRvZG9zLmNvbXBsZXRlZCA9PT0gdG9k
b3MudG90YWx9KTsKKyAgICAgICAgICAgIHNlbGYudmlldy5yZW5kZXIoJ2NvbnRlbnRCbG9ja1Zp
c2liaWxpdHknLCB7dmlzaWJsZTogdG9kb3MudG90YWwgPiAwfSk7CisgICAgICAgIH0pOwogICAg
IH07CiAKICAgICAvKioKQEAgLTI3OCw1MyArMjMyLDM5IEBACiAgICAgICogQHBhcmFtIHtib29s
ZWFufHVuZGVmaW5lZH0gZm9yY2UgIGZvcmNlcyBhIHJlLXBhaW50aW5nIG9mIHRvZG8gaXRlbXMu
CiAgICAgICovCiAgICAgQ29udHJvbGxlci5wcm90b3R5cGUuX2ZpbHRlciA9IGZ1bmN0aW9uIChm
b3JjZSkgewotICAgIHZhciBhY3RpdmVSb3V0ZSA9IHRoaXMuX2FjdGl2ZVJvdXRlLmNoYXJBdCgw
KS50b1VwcGVyQ2FzZSgpICsgdGhpcy5fYWN0aXZlUm91dGUuc3Vic3RyKDEpOworICAgICAgICB2
YXIgYWN0aXZlUm91dGUgPSB0aGlzLl9hY3RpdmVSb3V0ZS5jaGFyQXQoMCkudG9VcHBlckNhc2Uo
KSArIHRoaXMuX2FjdGl2ZVJvdXRlLnN1YnN0cigxKTsKIAotICAgIC8vIFVwZGF0ZSB0aGUgZWxl
bWVudHMgb24gdGhlIHBhZ2UsIHdoaWNoIGNoYW5nZSB3aXRoIGVhY2ggY29tcGxldGVkIHRvZG8K
LSAgICB0aGlzLl91cGRhdGVDb3VudCgpOworICAgICAgICAvLyBVcGRhdGUgdGhlIGVsZW1lbnRz
IG9uIHRoZSBwYWdlLCB3aGljaCBjaGFuZ2Ugd2l0aCBlYWNoIGNvbXBsZXRlZCB0b2RvCisgICAg
ICAgIHRoaXMuX3VwZGF0ZUNvdW50KCk7CiAKLSAgICAvLyBJZiB0aGUgbGFzdCBhY3RpdmUgcm91
dGUgaXNuJ3QgIkFsbCIsIG9yIHdlJ3JlIHN3aXRjaGluZyByb3V0ZXMsIHdlCi0gICAgLy8gcmUt
Y3JlYXRlIHRoZSB0b2RvIGl0ZW0gZWxlbWVudHMsIGNhbGxpbmc6Ci0gICAgLy8gICB0aGlzLnNo
b3dbQWxsfEFjdGl2ZXxDb21wbGV0ZWRdKCk7Ci0gICAgaWYgKGZvcmNlIHx8IHRoaXMuX2xhc3RB
Y3RpdmVSb3V0ZSAhPT0gJ0FsbCcgfHwgdGhpcy5fbGFzdEFjdGl2ZVJvdXRlICE9PSBhY3RpdmVS
b3V0ZSkgewotICAgIHRoaXNbJ3Nob3cnICsgYWN0aXZlUm91dGVdKCk7Ci0gICAgfQorICAgICAg
ICAvLyBJZiB0aGUgbGFzdCBhY3RpdmUgcm91dGUgaXNuJ3QgIkFsbCIsIG9yIHdlJ3JlIHN3aXRj
aGluZyByb3V0ZXMsIHdlCisgICAgICAgIC8vIHJlLWNyZWF0ZSB0aGUgdG9kbyBpdGVtIGVsZW1l
bnRzLCBjYWxsaW5nOgorICAgICAgICAvLyAgIHRoaXMuc2hvd1tBbGx8QWN0aXZlfENvbXBsZXRl
ZF0oKTsKKyAgICAgICAgaWYgKGZvcmNlIHx8IHRoaXMuX2xhc3RBY3RpdmVSb3V0ZSAhPT0gJ0Fs
bCcgfHwgdGhpcy5fbGFzdEFjdGl2ZVJvdXRlICE9PSBhY3RpdmVSb3V0ZSkgeworICAgICAgICAg
ICAgdGhpc1snc2hvdycgKyBhY3RpdmVSb3V0ZV0oKTsKKyAgICAgICAgfQogCi0gICAgdGhpcy5f
bGFzdEFjdGl2ZVJvdXRlID0gYWN0aXZlUm91dGU7CisgICAgICAgIHRoaXMuX2xhc3RBY3RpdmVS
b3V0ZSA9IGFjdGl2ZVJvdXRlOwogICAgIH07CiAKICAgICAvKioKICAgICAgKiBTaW1wbHkgdXBk
YXRlcyB0aGUgZmlsdGVyIG5hdidzIHNlbGVjdGVkIHN0YXRlcwogICAgICAqLwotICAgIENvbnRy
b2xsZXIucHJvdG90eXBlLl91cGRhdGVGaWx0ZXJTdGF0ZSA9IGZ1bmN0aW9uICgpIHsKLSAgICB2
YXIgY3VycmVudFBhZ2UgPSB0aGlzLl9nZXRDdXJyZW50UGFnZSgpIHx8ICcnOwotCi0gICAgLy8g
U3RvcmUgYSByZWZlcmVuY2UgdG8gdGhlIGFjdGl2ZSByb3V0ZSwgYWxsb3dpbmcgdXMgdG8gcmUt
ZmlsdGVyIHRvZG8KLSAgICAvLyBpdGVtcyBhcyB0aGV5IGFyZSBtYXJrZWQgY29tcGxldGUgb3Ig
aW5jb21wbGV0ZS4KLSAgICB0aGlzLl9hY3RpdmVSb3V0ZSA9IGN1cnJlbnRQYWdlOwotCi0gICAg
aWYgKGN1cnJlbnRQYWdlID09PSAnJykgewotICAgIHRoaXMuX2FjdGl2ZVJvdXRlID0gJ0FsbCc7
Ci0gICAgfQorICAgIENvbnRyb2xsZXIucHJvdG90eXBlLl91cGRhdGVGaWx0ZXJTdGF0ZSA9IGZ1
bmN0aW9uIChjdXJyZW50UGFnZSkgeworICAgICAgICAvLyBTdG9yZSBhIHJlZmVyZW5jZSB0byB0
aGUgYWN0aXZlIHJvdXRlLCBhbGxvd2luZyB1cyB0byByZS1maWx0ZXIgdG9kbworICAgICAgICAv
LyBpdGVtcyBhcyB0aGV5IGFyZSBtYXJrZWQgY29tcGxldGUgb3IgaW5jb21wbGV0ZS4KKyAgICAg
ICAgdGhpcy5fYWN0aXZlUm91dGUgPSBjdXJyZW50UGFnZTsKIAotICAgIHRoaXMuX2ZpbHRlcigp
OworICAgICAgICBpZiAoY3VycmVudFBhZ2UgPT09ICcnKSB7CisgICAgICAgICAgICB0aGlzLl9h
Y3RpdmVSb3V0ZSA9ICdBbGwnOworICAgICAgICB9CiAKLSAgICAvLyBSZW1vdmUgYWxsIG90aGVy
IHNlbGVjdGVkIHN0YXRlcy4gV2UgbG9vcCB0aHJvdWdoIGFsbCBvZiB0aGVtIGluIGNhc2UgdGhl
Ci0gICAgLy8gVUkgZ2V0cyBpbiBhIGZ1bmt5IHN0YXRlIHdpdGggdHdvIHNlbGVjdGVkLgotICAg
ICQoJyNmaWx0ZXJzIC5zZWxlY3RlZCcpLmVhY2goZnVuY3Rpb24gKGl0ZW0pIHsKLSAgICBpdGVt
LmNsYXNzTmFtZSA9ICcnOwotICAgIH0pOworICAgICAgICB0aGlzLl9maWx0ZXIoKTsKIAotICAg
ICQkKCcjZmlsdGVycyBbaHJlZj0iIy8nICsgY3VycmVudFBhZ2UgKyAnIl0nKS5jbGFzc05hbWUg
PSAnc2VsZWN0ZWQnOwotICAgIH07Ci0KLSAgICAvKioKLSAgICAgKiBBIGdldHRlciBmb3IgZ2V0
dGluZyB0aGUgY3VycmVudCBwYWdlCi0gICAgICovCi0gICAgQ29udHJvbGxlci5wcm90b3R5cGUu
X2dldEN1cnJlbnRQYWdlID0gZnVuY3Rpb24gKCkgewotICAgIHJldHVybiBkb2N1bWVudC5sb2Nh
dGlvbi5oYXNoLnNwbGl0KCcvJylbMV07CisgICAgICAgIHRoaXMudmlldy5yZW5kZXIoJ3NldEZp
bHRlcicsIGN1cnJlbnRQYWdlKTsKICAgICB9OwogCiAgICAgLy8gRXhwb3J0IHRvIHdpbmRvdwor
ICAgIHdpbmRvdy5hcHAgPSB3aW5kb3cuYXBwIHx8IHt9OwogICAgIHdpbmRvdy5hcHAuQ29udHJv
bGxlciA9IENvbnRyb2xsZXI7CiB9KSh3aW5kb3cpOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3Zhbmls
bGFqcy9qcy9oZWxwZXJzLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9qcy9oZWxwZXJzLmpzCmluZGV4
IDU4YTBlOWZlMzI1NzhhOTY4NTdmZTliOTRkYWUzYWRmM2Y2ZjVlOTYuLjJhZjk1NmYwNjRkODgx
OGRmYzVmMTU5MWRjNjY3YzFiYTg2ZmQxMGMgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMv
anMvaGVscGVycy5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL2pzL2hlbHBlcnMuanMKQEAgLTEs
MTcgKzEsNTIgQEAKKy8qZ2xvYmFsIE5vZGVMaXN0ICovCiAoZnVuY3Rpb24gKHdpbmRvdykgewog
ICAgICd1c2Ugc3RyaWN0JzsKIAotICAgIC8vIENhY2hlIHRoZSBxdWVyeVNlbGVjdG9yL0FsbCBm
b3IgZWFzaWVyIGFuZCBmYXN0ZXIgcmV1c2UKLSAgICB3aW5kb3cuJCA9IGRvY3VtZW50LnF1ZXJ5
U2VsZWN0b3JBbGwuYmluZChkb2N1bWVudCk7Ci0gICAgd2luZG93LiQkID0gZG9jdW1lbnQucXVl
cnlTZWxlY3Rvci5iaW5kKGRvY3VtZW50KTsKLQotICAgIC8vIEFsbG93IGZvciBsb29waW5nIG9u
IE9iamVjdHMgYnkgY2hhaW5pbmc6Ci0gICAgLy8gJCgnLmZvbycpLmVhY2goZnVuY3Rpb24gKCkg
e30pCi0gICAgT2JqZWN0LnByb3RvdHlwZS5lYWNoID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7Ci0g
ICAgZm9yICh2YXIgeCBpbiB0aGlzKSB7Ci0gICAgaWYgKHRoaXMuaGFzT3duUHJvcGVydHkoeCkp
IHsKLSAgICBjYWxsYmFjay5jYWxsKHRoaXMsIHRoaXNbeF0pOwotICAgIH0KLSAgICB9CisgICAg
Ly8gR2V0IGVsZW1lbnQocykgYnkgQ1NTIHNlbGVjdG9yOgorICAgIHdpbmRvdy5xcyA9IGZ1bmN0
aW9uIChzZWxlY3Rvciwgc2NvcGUpIHsKKyAgICAgICAgcmV0dXJuIChzY29wZSB8fCBkb2N1bWVu
dCkucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7CiAgICAgfTsKKyAgICB3aW5kb3cucXNhID0gZnVu
Y3Rpb24gKHNlbGVjdG9yLCBzY29wZSkgeworICAgICAgICByZXR1cm4gKHNjb3BlIHx8IGRvY3Vt
ZW50KS5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKTsKKyAgICB9OworCisgICAgLy8gYWRkRXZl
bnRMaXN0ZW5lciB3cmFwcGVyOgorICAgIHdpbmRvdy4kb24gPSBmdW5jdGlvbiAodGFyZ2V0LCB0
eXBlLCBjYWxsYmFjaywgdXNlQ2FwdHVyZSkgeworICAgICAgICB0YXJnZXQuYWRkRXZlbnRMaXN0
ZW5lcih0eXBlLCBjYWxsYmFjaywgISF1c2VDYXB0dXJlKTsKKyAgICB9OworCisgICAgLy8gQXR0
YWNoIGEgaGFuZGxlciB0byBldmVudCBmb3IgYWxsIGVsZW1lbnRzIHRoYXQgbWF0Y2ggdGhlIHNl
bGVjdG9yLAorICAgIC8vIG5vdyBvciBpbiB0aGUgZnV0dXJlLCBiYXNlZCBvbiBhIHJvb3QgZWxl
bWVudAorICAgIHdpbmRvdy4kZGVsZWdhdGUgPSBmdW5jdGlvbiAodGFyZ2V0LCBzZWxlY3Rvciwg
dHlwZSwgaGFuZGxlcikgeworICAgICAgICBmdW5jdGlvbiBkaXNwYXRjaEV2ZW50KGV2ZW50KSB7
CisgICAgICAgICAgICB2YXIgdGFyZ2V0RWxlbWVudCA9IGV2ZW50LnRhcmdldDsKKyAgICAgICAg
ICAgIHZhciBwb3RlbnRpYWxFbGVtZW50cyA9IHdpbmRvdy5xc2Eoc2VsZWN0b3IsIHRhcmdldCk7
CisgICAgICAgICAgICB2YXIgaGFzTWF0Y2ggPSBBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxs
KHBvdGVudGlhbEVsZW1lbnRzLCB0YXJnZXRFbGVtZW50KSA+PSAwOworCisgICAgICAgICAgICBp
ZiAoaGFzTWF0Y2gpIHsKKyAgICAgICAgICAgICAgICBoYW5kbGVyLmNhbGwodGFyZ2V0RWxlbWVu
dCwgZXZlbnQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gaHR0cHM6
Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvRXZlbnRzL2JsdXIKKyAgICAg
ICAgdmFyIHVzZUNhcHR1cmUgPSB0eXBlID09PSAnYmx1cicgfHwgdHlwZSA9PT0gJ2ZvY3VzJzsK
KworICAgICAgICB3aW5kb3cuJG9uKHRhcmdldCwgdHlwZSwgZGlzcGF0Y2hFdmVudCwgdXNlQ2Fw
dHVyZSk7CisgICAgfTsKKworICAgIC8vIEZpbmQgdGhlIGVsZW1lbnQncyBwYXJlbnQgd2l0aCB0
aGUgZ2l2ZW4gdGFnIG5hbWU6CisgICAgLy8gJHBhcmVudChxcygnYScpLCAnZGl2Jyk7CisgICAg
d2luZG93LiRwYXJlbnQgPSBmdW5jdGlvbiAoZWxlbWVudCwgdGFnTmFtZSkgeworICAgICAgICBp
ZiAoIWVsZW1lbnQucGFyZW50Tm9kZSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgICAgIGlmIChlbGVtZW50LnBhcmVudE5vZGUudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09
PSB0YWdOYW1lLnRvTG93ZXJDYXNlKCkpIHsKKyAgICAgICAgICAgIHJldHVybiBlbGVtZW50LnBh
cmVudE5vZGU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHdpbmRvdy4kcGFyZW50KGVsZW1l
bnQucGFyZW50Tm9kZSwgdGFnTmFtZSk7CisgICAgfTsKKworICAgIC8vIEFsbG93IGZvciBsb29w
aW5nIG9uIG5vZGVzIGJ5IGNoYWluaW5nOgorICAgIC8vIHFzYSgnLmZvbycpLmZvckVhY2goZnVu
Y3Rpb24gKCkge30pCisgICAgTm9kZUxpc3QucHJvdG90eXBlLmZvckVhY2ggPSBBcnJheS5wcm90
b3R5cGUuZm9yRWFjaDsKIH0pKHdpbmRvdyk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpz
L2pzL21vZGVsLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9qcy9tb2RlbC5qcwppbmRleCBlMDE0Njc0
NjVlMTY5OWJiMzU0YzkzZTFmMjA4NjBlMDg1NTE1NjFiLi5kOGE3MzE5MWQyYzJkZjViMjM3MjNh
YWE0MTMzOWRiOGRiYTc5YjRmIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL2pzL21vZGVs
LmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
dmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvanMvbW9kZWwuanMKQEAgLTgsNyArOCw3IEBACiAg
ICAgICogQHBhcmFtIHtvYmplY3R9IHN0b3JhZ2UgQSByZWZlcmVuY2UgdG8gdGhlIGNsaWVudCBz
aWRlIHN0b3JhZ2UgY2xhc3MKICAgICAgKi8KICAgICBmdW5jdGlvbiBNb2RlbChzdG9yYWdlKSB7
Ci0gICAgdGhpcy5zdG9yYWdlID0gc3RvcmFnZTsKKyAgICAgICAgdGhpcy5zdG9yYWdlID0gc3Rv
cmFnZTsKICAgICB9CiAKICAgICAvKioKQEAgLTE4LDE1ICsxOCwxNSBAQAogICAgICAqIEBwYXJh
bSB7ZnVuY3Rpb259IFtjYWxsYmFja10gVGhlIGNhbGxiYWNrIHRvIGZpcmUgYWZ0ZXIgdGhlIG1v
ZGVsIGlzIGNyZWF0ZWQKICAgICAgKi8KICAgICBNb2RlbC5wcm90b3R5cGUuY3JlYXRlID0gZnVu
Y3Rpb24gKHRpdGxlLCBjYWxsYmFjaykgewotICAgIHRpdGxlID0gdGl0bGUgfHwgJyc7Ci0gICAg
Y2FsbGJhY2sgPSBjYWxsYmFjayB8fCBmdW5jdGlvbiAoKSB7fTsKKyAgICAgICAgdGl0bGUgPSB0
aXRsZSB8fCAnJzsKKyAgICAgICAgY2FsbGJhY2sgPSBjYWxsYmFjayB8fCBmdW5jdGlvbiAoKSB7
fTsKIAotICAgIHZhciBuZXdJdGVtID0gewotICAgIHRpdGxlOiB0aXRsZS50cmltKCksCi0gICAg
Y29tcGxldGVkOiAwCi0gICAgfTsKKyAgICAgICAgdmFyIG5ld0l0ZW0gPSB7CisgICAgICAgICAg
ICB0aXRsZTogdGl0bGUudHJpbSgpLAorICAgICAgICAgICAgY29tcGxldGVkOiBmYWxzZQorICAg
ICAgICB9OwogCi0gICAgdGhpcy5zdG9yYWdlLnNhdmUobmV3SXRlbSwgY2FsbGJhY2spOworICAg
ICAgICB0aGlzLnN0b3JhZ2Uuc2F2ZShuZXdJdGVtLCBjYWxsYmFjayk7CiAgICAgfTsKIAogICAg
IC8qKgpAQCAtNDUsMTcgKzQ1LDE4IEBACiAgICAgICogbW9kZWwucmVhZCh7IGZvbzogJ2Jhcics
IGhlbGxvOiAnd29ybGQnIH0pOwogICAgICAqLwogICAgIE1vZGVsLnByb3RvdHlwZS5yZWFkID0g
ZnVuY3Rpb24gKHF1ZXJ5LCBjYWxsYmFjaykgewotICAgIHZhciBxdWVyeVR5cGUgPSB0eXBlb2Yg
cXVlcnk7Ci0gICAgY2FsbGJhY2sgPSBjYWxsYmFjayB8fCBmdW5jdGlvbiAoKSB7fTsKKyAgICAg
ICAgdmFyIHF1ZXJ5VHlwZSA9IHR5cGVvZiBxdWVyeTsKKyAgICAgICAgY2FsbGJhY2sgPSBjYWxs
YmFjayB8fCBmdW5jdGlvbiAoKSB7fTsKIAotICAgIGlmIChxdWVyeVR5cGUgPT09ICdmdW5jdGlv
bicpIHsKLSAgICBjYWxsYmFjayA9IHF1ZXJ5OwotICAgIHJldHVybiB0aGlzLnN0b3JhZ2UuZmlu
ZEFsbChjYWxsYmFjayk7Ci0gICAgfSBlbHNlIGlmIChxdWVyeVR5cGUgPT09ICdzdHJpbmcnIHx8
IHF1ZXJ5VHlwZSA9PT0gJ251bWJlcicpIHsKLSAgICB0aGlzLnN0b3JhZ2UuZmluZCh7IGlkOiBx
dWVyeSB9LCBjYWxsYmFjayk7Ci0gICAgfSBlbHNlIHsKLSAgICB0aGlzLnN0b3JhZ2UuZmluZChx
dWVyeSwgY2FsbGJhY2spOwotICAgIH0KKyAgICAgICAgaWYgKHF1ZXJ5VHlwZSA9PT0gJ2Z1bmN0
aW9uJykgeworICAgICAgICAgICAgY2FsbGJhY2sgPSBxdWVyeTsKKyAgICAgICAgICAgIHJldHVy
biB0aGlzLnN0b3JhZ2UuZmluZEFsbChjYWxsYmFjayk7CisgICAgICAgIH0gZWxzZSBpZiAocXVl
cnlUeXBlID09PSAnc3RyaW5nJyB8fCBxdWVyeVR5cGUgPT09ICdudW1iZXInKSB7CisgICAgICAg
ICAgICBxdWVyeSA9IHBhcnNlSW50KHF1ZXJ5LCAxMCk7CisgICAgICAgICAgICB0aGlzLnN0b3Jh
Z2UuZmluZCh7IGlkOiBxdWVyeSB9LCBjYWxsYmFjayk7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICB0aGlzLnN0b3JhZ2UuZmluZChxdWVyeSwgY2FsbGJhY2spOworICAgICAgICB9CiAg
ICAgfTsKIAogICAgIC8qKgpAQCAtNjcsNyArNjgsNyBAQAogICAgICAqIEBwYXJhbSB7ZnVuY3Rp
b259IGNhbGxiYWNrIFRoZSBjYWxsYmFjayB0byBmaXJlIHdoZW4gdGhlIHVwZGF0ZSBpcyBjb21w
bGV0ZS4KICAgICAgKi8KICAgICBNb2RlbC5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gKGlk
LCBkYXRhLCBjYWxsYmFjaykgewotICAgIHRoaXMuc3RvcmFnZS5zYXZlKGlkLCBkYXRhLCBjYWxs
YmFjayk7CisgICAgICAgIHRoaXMuc3RvcmFnZS5zYXZlKGRhdGEsIGNhbGxiYWNrLCBpZCk7CiAg
ICAgfTsKIAogICAgIC8qKgpAQCAtNzcsNyArNzgsNyBAQAogICAgICAqIEBwYXJhbSB7ZnVuY3Rp
b259IGNhbGxiYWNrIFRoZSBjYWxsYmFjayB0byBmaXJlIHdoZW4gdGhlIHJlbW92YWwgaXMgY29t
cGxldGUuCiAgICAgICovCiAgICAgTW9kZWwucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uIChp
ZCwgY2FsbGJhY2spIHsKLSAgICB0aGlzLnN0b3JhZ2UucmVtb3ZlKGlkLCBjYWxsYmFjayk7Cisg
ICAgICAgIHRoaXMuc3RvcmFnZS5yZW1vdmUoaWQsIGNhbGxiYWNrKTsKICAgICB9OwogCiAgICAg
LyoqCkBAIC04NiwzNCArODcsMzQgQEAKICAgICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFj
ayBUaGUgY2FsbGJhY2sgdG8gZmlyZSB3aGVuIHRoZSBzdG9yYWdlIGlzIHdpcGVkLgogICAgICAq
LwogICAgIE1vZGVsLnByb3RvdHlwZS5yZW1vdmVBbGwgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHsK
LSAgICB0aGlzLnN0b3JhZ2UuZHJvcChjYWxsYmFjayk7CisgICAgICAgIHRoaXMuc3RvcmFnZS5k
cm9wKGNhbGxiYWNrKTsKICAgICB9OwogCiAgICAgLyoqCiAgICAgICogUmV0dXJucyBhIGNvdW50
IG9mIGFsbCB0b2RvcwogICAgICAqLwotICAgIE1vZGVsLnByb3RvdHlwZS5nZXRDb3VudCA9IGZ1
bmN0aW9uICgpIHsKLSAgICB2YXIgdG9kb3MgPSB7Ci0gICAgYWN0aXZlOiAwLAotICAgIGNvbXBs
ZXRlZDogMCwKLSAgICB0b3RhbDogMAotICAgIH07Ci0KLSAgICB0aGlzLnN0b3JhZ2UuZmluZEFs
bChmdW5jdGlvbiAoZGF0YSkgewotICAgIGRhdGEuZWFjaChmdW5jdGlvbiAodG9kbykgewotICAg
IGlmICh0b2RvLmNvbXBsZXRlZCA9PT0gMSkgewotICAgIHRvZG9zLmNvbXBsZXRlZCsrOwotICAg
IH0gZWxzZSB7Ci0gICAgdG9kb3MuYWN0aXZlKys7Ci0gICAgfQorICAgIE1vZGVsLnByb3RvdHlw
ZS5nZXRDb3VudCA9IGZ1bmN0aW9uIChjYWxsYmFjaykgeworICAgICAgICB2YXIgdG9kb3MgPSB7
CisgICAgICAgICAgICBhY3RpdmU6IDAsCisgICAgICAgICAgICBjb21wbGV0ZWQ6IDAsCisgICAg
ICAgICAgICB0b3RhbDogMAorICAgICAgICB9OwogCi0gICAgdG9kb3MudG90YWwrKzsKLSAgICB9
KTsKLSAgICB9KTsKKyAgICAgICAgdGhpcy5zdG9yYWdlLmZpbmRBbGwoZnVuY3Rpb24gKGRhdGEp
IHsKKyAgICAgICAgICAgIGRhdGEuZm9yRWFjaChmdW5jdGlvbiAodG9kbykgeworICAgICAgICAg
ICAgICAgIGlmICh0b2RvLmNvbXBsZXRlZCkgeworICAgICAgICAgICAgICAgICAgICB0b2Rvcy5j
b21wbGV0ZWQrKzsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAg
ICB0b2Rvcy5hY3RpdmUrKzsKKyAgICAgICAgICAgICAgICB9CiAKLSAgICByZXR1cm4gdG9kb3M7
CisgICAgICAgICAgICAgICAgdG9kb3MudG90YWwrKzsKKyAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgY2FsbGJhY2sodG9kb3MpOworICAgICAgICB9KTsKICAgICB9OwogCiAgICAgLy8gRXhw
b3J0IHRvIHdpbmRvdworICAgIHdpbmRvdy5hcHAgPSB3aW5kb3cuYXBwIHx8IHt9OwogICAgIHdp
bmRvdy5hcHAuTW9kZWwgPSBNb2RlbDsKIH0pKHdpbmRvdyk7CmRpZmYgLS1naXQgYS9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMv
dmFuaWxsYWpzL2pzL3N0b3JlLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9qcy9zdG9yZS5qcwppbmRl
eCA5YTdkYTBkOWJiNzdhYTQxYTNkOGU5ZmU4YmM3NjM2ZDY3MGFiMWE3Li5mZTY4MmM4OGY4YTRl
NzU0ZDA4Njc3M2M1MWRkNTljMzJiYjNmMzc4IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpz
L2pzL3N0b3JlLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvanMvc3RvcmUuanMKQEAgLTIsOCAr
Miw3IEBACiAoZnVuY3Rpb24gKHdpbmRvdykgewogICAgICd1c2Ugc3RyaWN0JzsKIAotICAgIHZh
ciBsb2NhbFN0b3JhZ2UgPSB7fTsgLy8gQmVuY2htYXJrIG1vZGlmaWNhdGlvbjogQXZvaWQgZGlz
ayBhY2Nlc3MuCi0KKyAgICB2YXIgTWVtb3J5U3RvcmFnZSA9IHt9OwogICAgIC8qKgogICAgICAq
IENyZWF0ZXMgYSBuZXcgY2xpZW50IHNpZGUgc3RvcmFnZSBvYmplY3QgYW5kIHdpbGwgY3JlYXRl
IGFuIGVtcHR5CiAgICAgICogY29sbGVjdGlvbiBpZiBubyBjb2xsZWN0aW9uIGFscmVhZHkgZXhp
c3RzLgpAQCAtMTMsMjIgKzEyLDE5IEBACiAgICAgICogcmVhbCBsaWZlIHlvdSBwcm9iYWJseSB3
b3VsZCBiZSBtYWtpbmcgQUpBWCBjYWxscwogICAgICAqLwogICAgIGZ1bmN0aW9uIFN0b3JlKG5h
bWUsIGNhbGxiYWNrKSB7Ci0gICAgdmFyIGRhdGE7Ci0gICAgdmFyIGRiTmFtZTsKLQotICAgIGNh
bGxiYWNrID0gY2FsbGJhY2sgfHwgZnVuY3Rpb24gKCkge307CisgICAgICAgIGNhbGxiYWNrID0g
Y2FsbGJhY2sgfHwgZnVuY3Rpb24gKCkge307CiAKLSAgICBkYk5hbWUgPSB0aGlzLl9kYk5hbWUg
PSBuYW1lOworICAgICAgICB0aGlzLl9kYk5hbWUgPSBuYW1lOwogCi0gICAgaWYgKCFsb2NhbFN0
b3JhZ2VbZGJOYW1lXSkgewotICAgIGRhdGEgPSB7Ci0gICAgdG9kb3M6IFtdCi0gICAgfTsKKyAg
ICAgICAgaWYgKCFNZW1vcnlTdG9yYWdlW25hbWVdKSB7CisgICAgICAgICAgICB2YXIgZGF0YSA9
IHsKKyAgICAgICAgICAgICAgICB0b2RvczogW10KKyAgICAgICAgICAgIH07CiAKLSAgICBsb2Nh
bFN0b3JhZ2VbZGJOYW1lXSA9IEpTT04uc3RyaW5naWZ5KGRhdGEpOwotICAgIH0KKyAgICAgICAg
ICAgIE1lbW9yeVN0b3JhZ2VbbmFtZV0gPSBKU09OLnN0cmluZ2lmeShkYXRhKTsKKyAgICAgICAg
fQogCi0gICAgY2FsbGJhY2suY2FsbCh0aGlzLCBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZVtkYk5h
bWVdKSk7CisgICAgICAgIGNhbGxiYWNrLmNhbGwodGhpcywgSlNPTi5wYXJzZShNZW1vcnlTdG9y
YWdlW25hbWVdKSk7CiAgICAgfQogCiAgICAgLyoqCkBAIC00NSwxNyArNDEsMjAgQEAKICAgICAg
KiB9KTsKICAgICAgKi8KICAgICBTdG9yZS5wcm90b3R5cGUuZmluZCA9IGZ1bmN0aW9uIChxdWVy
eSwgY2FsbGJhY2spIHsKLSAgICBpZiAoIWNhbGxiYWNrKSB7Ci0gICAgcmV0dXJuOwotICAgIH0K
LQotICAgIHZhciB0b2RvcyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlW3RoaXMuX2RiTmFtZV0p
LnRvZG9zOwotCi0gICAgY2FsbGJhY2suY2FsbCh0aGlzLCB0b2Rvcy5maWx0ZXIoZnVuY3Rpb24g
KHRvZG8pIHsKLSAgICBmb3IgKHZhciBxIGluIHF1ZXJ5KSB7Ci0gICAgcmV0dXJuIHF1ZXJ5W3Fd
ID09PSB0b2RvW3FdOwotICAgIH0KLSAgICB9KSk7CisgICAgICAgIGlmICghY2FsbGJhY2spIHsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHZhciB0b2RvcyA9IEpT
T04ucGFyc2UoTWVtb3J5U3RvcmFnZVt0aGlzLl9kYk5hbWVdKS50b2RvczsKKworICAgICAgICBj
YWxsYmFjay5jYWxsKHRoaXMsIHRvZG9zLmZpbHRlcihmdW5jdGlvbiAodG9kbykgeworICAgICAg
ICAgICAgZm9yICh2YXIgcSBpbiBxdWVyeSkgeworICAgICAgICAgICAgICAgIGlmIChxdWVyeVtx
XSAhPT0gdG9kb1txXSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIH0pKTsKICAgICB9OwogCiAgICAgLyoqCkBAIC02NCw0OCArNjMsNDUgQEAKICAgICAg
KiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgdG8gZmlyZSB1cG9uIHJl
dHJpZXZpbmcgZGF0YQogICAgICAqLwogICAgIFN0b3JlLnByb3RvdHlwZS5maW5kQWxsID0gZnVu
Y3Rpb24gKGNhbGxiYWNrKSB7Ci0gICAgY2FsbGJhY2sgPSBjYWxsYmFjayB8fCBmdW5jdGlvbiAo
KSB7fTsKLSAgICBjYWxsYmFjay5jYWxsKHRoaXMsIEpTT04ucGFyc2UobG9jYWxTdG9yYWdlW3Ro
aXMuX2RiTmFtZV0pLnRvZG9zKTsKKyAgICAgICAgY2FsbGJhY2sgPSBjYWxsYmFjayB8fCBmdW5j
dGlvbiAoKSB7fTsKKyAgICAgICAgY2FsbGJhY2suY2FsbCh0aGlzLCBKU09OLnBhcnNlKE1lbW9y
eVN0b3JhZ2VbdGhpcy5fZGJOYW1lXSkudG9kb3MpOwogICAgIH07CiAKICAgICAvKioKICAgICAg
KiBXaWxsIHNhdmUgdGhlIGdpdmVuIGRhdGEgdG8gdGhlIERCLiBJZiBubyBpdGVtIGV4aXN0cyBp
dCB3aWxsIGNyZWF0ZSBhIG5ldwogICAgICAqIGl0ZW0sIG90aGVyd2lzZSBpdCdsbCBzaW1wbHkg
dXBkYXRlIGFuIGV4aXN0aW5nIGl0ZW0ncyBwcm9wZXJ0aWVzCiAgICAgICoKLSAgICAgKiBAcGFy
YW0ge251bWJlcn0gaWQgQW4gb3B0aW9uYWwgcGFyYW0gdG8gZW50ZXIgYW4gSUQgb2YgYW4gaXRl
bSB0byB1cGRhdGUKLSAgICAgKiBAcGFyYW0ge29iamVjdH0gZGF0YSBUaGUgZGF0YSB0byBzYXZl
IGJhY2sgaW50byB0aGUgREIKKyAgICAgKiBAcGFyYW0ge29iamVjdH0gdXBkYXRlRGF0YSBUaGUg
ZGF0YSB0byBzYXZlIGJhY2sgaW50byB0aGUgREIKICAgICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBj
YWxsYmFjayBUaGUgY2FsbGJhY2sgdG8gZmlyZSBhZnRlciBzYXZpbmcKKyAgICAgKiBAcGFyYW0g
e251bWJlcn0gaWQgQW4gb3B0aW9uYWwgcGFyYW0gdG8gZW50ZXIgYW4gSUQgb2YgYW4gaXRlbSB0
byB1cGRhdGUKICAgICAgKi8KLSAgICBTdG9yZS5wcm90b3R5cGUuc2F2ZSA9IGZ1bmN0aW9uIChp
ZCwgdXBkYXRlRGF0YSwgY2FsbGJhY2spIHsKLSAgICB2YXIgZGF0YSA9IEpTT04ucGFyc2UobG9j
YWxTdG9yYWdlW3RoaXMuX2RiTmFtZV0pOwotICAgIHZhciB0b2RvcyA9IGRhdGEudG9kb3M7Ci0K
LSAgICBjYWxsYmFjayA9IGNhbGxiYWNrIHx8IGZ1bmN0aW9uICgpIHt9OwotCi0gICAgLy8gSWYg
YW4gSUQgd2FzIGFjdHVhbGx5IGdpdmVuLCBmaW5kIHRoZSBpdGVtIGFuZCB1cGRhdGUgZWFjaCBw
cm9wZXJ0eQotICAgIGlmICh0eXBlb2YgaWQgIT09ICdvYmplY3QnKSB7Ci0gICAgZm9yICh2YXIg
aSA9IDA7IGkgPCB0b2Rvcy5sZW5ndGg7IGkrKykgewotICAgIGlmICh0b2Rvc1tpXS5pZCA9PSBp
ZCkgewotICAgIGZvciAodmFyIHggaW4gdXBkYXRlRGF0YSkgewotICAgIHRvZG9zW2ldW3hdID0g
dXBkYXRlRGF0YVt4XTsKLSAgICB9Ci0gICAgfQotICAgIH0KLQotICAgIGxvY2FsU3RvcmFnZVt0
aGlzLl9kYk5hbWVdID0gSlNPTi5zdHJpbmdpZnkoZGF0YSk7Ci0gICAgY2FsbGJhY2suY2FsbCh0
aGlzLCBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZVt0aGlzLl9kYk5hbWVdKS50b2Rvcyk7Ci0gICAg
fSBlbHNlIHsKLSAgICBjYWxsYmFjayA9IHVwZGF0ZURhdGE7Ci0KLSAgICB1cGRhdGVEYXRhID0g
aWQ7Ci0KLSAgICAvLyBHZW5lcmF0ZSBhbiBJRAotICAgIHVwZGF0ZURhdGEuaWQgPSBuZXcgRGF0
ZSgpLmdldFRpbWUoKTsKLQotICAgIHRvZG9zLnB1c2godXBkYXRlRGF0YSk7Ci0gICAgbG9jYWxT
dG9yYWdlW3RoaXMuX2RiTmFtZV0gPSBKU09OLnN0cmluZ2lmeShkYXRhKTsKLSAgICBjYWxsYmFj
ay5jYWxsKHRoaXMsIFt1cGRhdGVEYXRhXSk7Ci0gICAgfQorICAgIFN0b3JlLnByb3RvdHlwZS5z
YXZlID0gZnVuY3Rpb24gKHVwZGF0ZURhdGEsIGNhbGxiYWNrLCBpZCkgeworICAgICAgICB2YXIg
ZGF0YSA9IEpTT04ucGFyc2UoTWVtb3J5U3RvcmFnZVt0aGlzLl9kYk5hbWVdKTsKKyAgICAgICAg
dmFyIHRvZG9zID0gZGF0YS50b2RvczsKKworICAgICAgICBjYWxsYmFjayA9IGNhbGxiYWNrIHx8
IGZ1bmN0aW9uICgpIHt9OworCisgICAgICAgIC8vIElmIGFuIElEIHdhcyBhY3R1YWxseSBnaXZl
biwgZmluZCB0aGUgaXRlbSBhbmQgdXBkYXRlIGVhY2ggcHJvcGVydHkKKyAgICAgICAgaWYgKGlk
KSB7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRvZG9zLmxlbmd0aDsgaSsrKSB7
CisgICAgICAgICAgICAgICAgaWYgKHRvZG9zW2ldLmlkID09PSBpZCkgeworICAgICAgICAgICAg
ICAgICAgICBmb3IgKHZhciBrZXkgaW4gdXBkYXRlRGF0YSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgdG9kb3NbaV1ba2V5XSA9IHVwZGF0ZURhdGFba2V5XTsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIE1lbW9yeVN0b3JhZ2VbdGhpcy5fZGJOYW1lXSA9IEpT
T04uc3RyaW5naWZ5KGRhdGEpOworICAgICAgICAgICAgY2FsbGJhY2suY2FsbCh0aGlzLCB0b2Rv
cyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBHZW5lcmF0ZSBhbiBJRAorICAg
ICAgICAgICAgdXBkYXRlRGF0YS5pZCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpOworCisgICAgICAg
ICAgICB0b2Rvcy5wdXNoKHVwZGF0ZURhdGEpOworICAgICAgICAgICAgTWVtb3J5U3RvcmFnZVt0
aGlzLl9kYk5hbWVdID0gSlNPTi5zdHJpbmdpZnkoZGF0YSk7CisgICAgICAgICAgICBjYWxsYmFj
ay5jYWxsKHRoaXMsIFt1cGRhdGVEYXRhXSk7CisgICAgICAgIH0KICAgICB9OwogCiAgICAgLyoq
CkBAIC0xMTUsMTggKzExMSwxOCBAQAogICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNr
IFRoZSBjYWxsYmFjayB0byBmaXJlIGFmdGVyIHNhdmluZwogICAgICAqLwogICAgIFN0b3JlLnBy
b3RvdHlwZS5yZW1vdmUgPSBmdW5jdGlvbiAoaWQsIGNhbGxiYWNrKSB7Ci0gICAgdmFyIGRhdGEg
PSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZVt0aGlzLl9kYk5hbWVdKTsKLSAgICB2YXIgdG9kb3Mg
PSBkYXRhLnRvZG9zOwotCi0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b2Rvcy5sZW5ndGg7IGkr
KykgewotICAgIGlmICh0b2Rvc1tpXS5pZCA9PSBpZCkgewotICAgIHRvZG9zLnNwbGljZShpLCAx
KTsKLSAgICBicmVhazsKLSAgICB9Ci0gICAgfQotCi0gICAgbG9jYWxTdG9yYWdlW3RoaXMuX2Ri
TmFtZV0gPSBKU09OLnN0cmluZ2lmeShkYXRhKTsKLSAgICBjYWxsYmFjay5jYWxsKHRoaXMsIEpT
T04ucGFyc2UobG9jYWxTdG9yYWdlW3RoaXMuX2RiTmFtZV0pLnRvZG9zKTsKKyAgICAgICAgdmFy
IGRhdGEgPSBKU09OLnBhcnNlKE1lbW9yeVN0b3JhZ2VbdGhpcy5fZGJOYW1lXSk7CisgICAgICAg
IHZhciB0b2RvcyA9IGRhdGEudG9kb3M7CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0
b2Rvcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgaWYgKHRvZG9zW2ldLmlkID09IGlkKSB7
CisgICAgICAgICAgICAgICAgdG9kb3Muc3BsaWNlKGksIDEpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgTWVtb3J5U3RvcmFnZVt0
aGlzLl9kYk5hbWVdID0gSlNPTi5zdHJpbmdpZnkoZGF0YSk7CisgICAgICAgIGNhbGxiYWNrLmNh
bGwodGhpcywgdG9kb3MpOwogICAgIH07CiAKICAgICAvKioKQEAgLTEzNSwxMCArMTMxLDEyIEBA
CiAgICAgICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGNhbGxiYWNrIHRvIGZpcmUg
YWZ0ZXIgZHJvcHBpbmcgdGhlIGRhdGEKICAgICAgKi8KICAgICBTdG9yZS5wcm90b3R5cGUuZHJv
cCA9IGZ1bmN0aW9uIChjYWxsYmFjaykgewotICAgIGxvY2FsU3RvcmFnZVt0aGlzLl9kYk5hbWVd
ID0gSlNPTi5zdHJpbmdpZnkoe3RvZG9zOiBbXX0pOwotICAgIGNhbGxiYWNrLmNhbGwodGhpcywg
SlNPTi5wYXJzZShsb2NhbFN0b3JhZ2VbdGhpcy5fZGJOYW1lXSkudG9kb3MpOworICAgICAgICB2
YXIgZGF0YSA9IHt0b2RvczogW119OworICAgICAgICBNZW1vcnlTdG9yYWdlW3RoaXMuX2RiTmFt
ZV0gPSBKU09OLnN0cmluZ2lmeShkYXRhKTsKKyAgICAgICAgY2FsbGJhY2suY2FsbCh0aGlzLCBk
YXRhLnRvZG9zKTsKICAgICB9OwogCiAgICAgLy8gRXhwb3J0IHRvIHdpbmRvdworICAgIHdpbmRv
dy5hcHAgPSB3aW5kb3cuYXBwIHx8IHt9OwogICAgIHdpbmRvdy5hcHAuU3RvcmUgPSBTdG9yZTsK
IH0pKHdpbmRvdyk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL2pzL3RlbXBsYXRlLmpz
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxh
LWV4YW1wbGVzL3ZhbmlsbGFqcy9qcy90ZW1wbGF0ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MzcyNGM2NTI5
NTJiNTU3YmI2MjFjYTBiYTBkYmEwNWZkNWY5ODAwCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVz
L3ZhbmlsbGFqcy9qcy90ZW1wbGF0ZS5qcwpAQCAtMCwwICsxLDExNCBAQAorLypqc2hpbnQgbGF4
YnJlYWs6dHJ1ZSAqLworKGZ1bmN0aW9uICh3aW5kb3cpIHsKKyAgICAndXNlIHN0cmljdCc7CisK
KyAgICB2YXIgaHRtbEVzY2FwZXMgPSB7CisgICAgICAgICcmJzogJyZhbXA7JywKKyAgICAgICAg
JzwnOiAnJmx0OycsCisgICAgICAgICc+JzogJyZndDsnLAorICAgICAgICAnIic6ICcmcXVvdDsn
LAorICAgICAgICAnXCcnOiAnJiN4Mjc7JywKKyAgICAgICAgJ2AnOiAnJiN4NjA7JworICAgIH07
CisKKyAgICB2YXIgZXNjYXBlSHRtbENoYXIgPSBmdW5jdGlvbiAoY2hyKSB7CisgICAgICAgIHJl
dHVybiBodG1sRXNjYXBlc1tjaHJdOworICAgIH07CisKKyAgICB2YXIgcmVVbmVzY2FwZWRIdG1s
ID0gL1smPD4iJ2BdL2c7CisgICAgdmFyIHJlSGFzVW5lc2NhcGVkSHRtbCA9IG5ldyBSZWdFeHAo
cmVVbmVzY2FwZWRIdG1sLnNvdXJjZSk7CisKKyAgICB2YXIgZXNjYXBlID0gZnVuY3Rpb24gKHN0
cmluZykgeworICAgICAgICByZXR1cm4gKHN0cmluZyAmJiByZUhhc1VuZXNjYXBlZEh0bWwudGVz
dChzdHJpbmcpKQorICAgICAgICAgICAgPyBzdHJpbmcucmVwbGFjZShyZVVuZXNjYXBlZEh0bWws
IGVzY2FwZUh0bWxDaGFyKQorICAgICAgICAgICAgOiBzdHJpbmc7CisgICAgfTsKKworICAgIC8q
KgorICAgICAqIFNldHMgdXAgZGVmYXVsdHMgZm9yIGFsbCB0aGUgVGVtcGxhdGUgbWV0aG9kcyBz
dWNoIGFzIGEgZGVmYXVsdCB0ZW1wbGF0ZQorICAgICAqCisgICAgICogQGNvbnN0cnVjdG9yCisg
ICAgICovCisgICAgZnVuY3Rpb24gVGVtcGxhdGUoKSB7CisgICAgICAgIHRoaXMuZGVmYXVsdFRl
bXBsYXRlCisgICAgICAgID0gICAgJzxsaSBkYXRhLWlkPSJ7e2lkfX0iIGNsYXNzPSJ7e2NvbXBs
ZXRlZH19Ij4nCisgICAgICAgICsgICAgICAgICc8ZGl2IGNsYXNzPSJ2aWV3Ij4nCisgICAgICAg
ICsgICAgICAgICAgICAnPGlucHV0IGNsYXNzPSJ0b2dnbGUiIHR5cGU9ImNoZWNrYm94IiB7e2No
ZWNrZWR9fT4nCisgICAgICAgICsgICAgICAgICAgICAnPGxhYmVsPnt7dGl0bGV9fTwvbGFiZWw+
JworICAgICAgICArICAgICAgICAgICAgJzxidXR0b24gY2xhc3M9ImRlc3Ryb3kiPjwvYnV0dG9u
PicKKyAgICAgICAgKyAgICAgICAgJzwvZGl2PicKKyAgICAgICAgKyAgICAnPC9saT4nOworICAg
IH0KKworICAgIC8qKgorICAgICAqIENyZWF0ZXMgYW4gPGxpPiBIVE1MIHN0cmluZyBhbmQgcmV0
dXJucyBpdCBmb3IgcGxhY2VtZW50IGluIHlvdXIgYXBwLgorICAgICAqCisgICAgICogTk9URTog
SW4gcmVhbCBsaWZlIHlvdSBzaG91bGQgYmUgdXNpbmcgYSB0ZW1wbGF0aW5nIGVuZ2luZSBzdWNo
IGFzIE11c3RhY2hlCisgICAgICogb3IgSGFuZGxlYmFycywgaG93ZXZlciwgdGhpcyBpcyBhIHZh
bmlsbGEgSlMgZXhhbXBsZS4KKyAgICAgKgorICAgICAqIEBwYXJhbSB7b2JqZWN0fSBkYXRhIFRo
ZSBvYmplY3QgY29udGFpbmluZyBrZXlzIHlvdSB3YW50IHRvIGZpbmQgaW4gdGhlCisgICAgICog
ICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGUgdG8gcmVwbGFjZS4KKyAgICAgKiBAcmV0dXJu
cyB7c3RyaW5nfSBIVE1MIFN0cmluZyBvZiBhbiA8bGk+IGVsZW1lbnQKKyAgICAgKgorICAgICAq
IEBleGFtcGxlCisgICAgICogdmlldy5zaG93KHsKKyAgICAgKiAgICBpZDogMSwKKyAgICAgKiAg
ICB0aXRsZTogIkhlbGxvIFdvcmxkIiwKKyAgICAgKiAgICBjb21wbGV0ZWQ6IDAsCisgICAgICog
fSk7CisgICAgICovCisgICAgVGVtcGxhdGUucHJvdG90eXBlLnNob3cgPSBmdW5jdGlvbiAoZGF0
YSkgeworICAgICAgICB2YXIgaSwgbDsKKyAgICAgICAgdmFyIHZpZXcgPSAnJzsKKworICAgICAg
ICBmb3IgKGkgPSAwLCBsID0gZGF0YS5sZW5ndGg7IGkgPCBsOyBpKyspIHsKKyAgICAgICAgICAg
IHZhciB0ZW1wbGF0ZSA9IHRoaXMuZGVmYXVsdFRlbXBsYXRlOworICAgICAgICAgICAgdmFyIGNv
bXBsZXRlZCA9ICcnOworICAgICAgICAgICAgdmFyIGNoZWNrZWQgPSAnJzsKKworICAgICAgICAg
ICAgaWYgKGRhdGFbaV0uY29tcGxldGVkKSB7CisgICAgICAgICAgICAgICAgY29tcGxldGVkID0g
J2NvbXBsZXRlZCc7CisgICAgICAgICAgICAgICAgY2hlY2tlZCA9ICdjaGVja2VkJzsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgdGVtcGxhdGUgPSB0ZW1wbGF0ZS5yZXBsYWNlKCd7e2lk
fX0nLCBkYXRhW2ldLmlkKTsKKyAgICAgICAgICAgIHRlbXBsYXRlID0gdGVtcGxhdGUucmVwbGFj
ZSgne3t0aXRsZX19JywgZXNjYXBlKGRhdGFbaV0udGl0bGUpKTsKKyAgICAgICAgICAgIHRlbXBs
YXRlID0gdGVtcGxhdGUucmVwbGFjZSgne3tjb21wbGV0ZWR9fScsIGNvbXBsZXRlZCk7CisgICAg
ICAgICAgICB0ZW1wbGF0ZSA9IHRlbXBsYXRlLnJlcGxhY2UoJ3t7Y2hlY2tlZH19JywgY2hlY2tl
ZCk7CisKKyAgICAgICAgICAgIHZpZXcgPSB2aWV3ICsgdGVtcGxhdGU7CisgICAgICAgIH0KKwor
ICAgICAgICByZXR1cm4gdmlldzsKKyAgICB9OworCisgICAgLyoqCisgICAgICogRGlzcGxheXMg
YSBjb3VudGVyIG9mIGhvdyBtYW55IHRvIGRvcyBhcmUgbGVmdCB0byBjb21wbGV0ZQorICAgICAq
CisgICAgICogQHBhcmFtIHtudW1iZXJ9IGFjdGl2ZVRvZG9zIFRoZSBudW1iZXIgb2YgYWN0aXZl
IHRvZG9zLgorICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFN0cmluZyBjb250YWluaW5nIHRoZSBj
b3VudAorICAgICAqLworICAgIFRlbXBsYXRlLnByb3RvdHlwZS5pdGVtQ291bnRlciA9IGZ1bmN0
aW9uIChhY3RpdmVUb2RvcykgeworICAgICAgICB2YXIgcGx1cmFsID0gYWN0aXZlVG9kb3MgPT09
IDEgPyAnJyA6ICdzJzsKKworICAgICAgICByZXR1cm4gJzxzdHJvbmc+JyArIGFjdGl2ZVRvZG9z
ICsgJzwvc3Ryb25nPiBpdGVtJyArIHBsdXJhbCArICcgbGVmdCc7CisgICAgfTsKKworICAgIC8q
KgorICAgICAqIFVwZGF0ZXMgdGhlIHRleHQgd2l0aGluIHRoZSAiQ2xlYXIgY29tcGxldGVkIiBi
dXR0b24KKyAgICAgKgorICAgICAqIEBwYXJhbSAge1t0eXBlXX0gY29tcGxldGVkVG9kb3MgVGhl
IG51bWJlciBvZiBjb21wbGV0ZWQgdG9kb3MuCisgICAgICogQHJldHVybnMge3N0cmluZ30gU3Ry
aW5nIGNvbnRhaW5pbmcgdGhlIGNvdW50CisgICAgICovCisgICAgVGVtcGxhdGUucHJvdG90eXBl
LmNsZWFyQ29tcGxldGVkQnV0dG9uID0gZnVuY3Rpb24gKGNvbXBsZXRlZFRvZG9zKSB7CisgICAg
ICAgIGlmIChjb21wbGV0ZWRUb2RvcyA+IDApIHsKKyAgICAgICAgICAgIHJldHVybiAnQ2xlYXIg
Y29tcGxldGVkJzsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiAnJzsKKyAg
ICAgICAgfQorICAgIH07CisKKyAgICAvLyBFeHBvcnQgdG8gd2luZG93CisgICAgd2luZG93LmFw
cCA9IHdpbmRvdy5hcHAgfHwge307CisgICAgd2luZG93LmFwcC5UZW1wbGF0ZSA9IFRlbXBsYXRl
OworfSkod2luZG93KTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvanMvdmlldy5qcyBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1l
eGFtcGxlcy92YW5pbGxhanMvanMvdmlldy5qcwppbmRleCBkODJiMDk4MjdmZjQ0M2EwNjQ2OGU1
MzViMmE0YzNjYmIzMzQzMWEyLi42OGRlODMwNTEzNmQxOGM5MGJkNjBhNjdkYmI1ZjU0MzVhNzEx
MmRiIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL2pzL3ZpZXcuanMKKysrIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVz
L3ZhbmlsbGFqcy9qcy92aWV3LmpzCkBAIC0xLDkxICsxLDIxOSBAQAotLypqc2hpbnQgbGF4YnJl
YWs6dHJ1ZSAqLworLypnbG9iYWwgcXMsIHFzYSwgJG9uLCAkcGFyZW50LCAkZGVsZWdhdGUgKi8K
KwogKGZ1bmN0aW9uICh3aW5kb3cpIHsKICAgICAndXNlIHN0cmljdCc7CiAKICAgICAvKioKLSAg
ICAgKiBTZXRzIHVwIGRlZmF1bHRzIGZvciBhbGwgdGhlIFZpZXcgbWV0aG9kcyBzdWNoIGFzIGEg
ZGVmYXVsdCB0ZW1wbGF0ZQotICAgICAqCi0gICAgICogQGNvbnN0cnVjdG9yCi0gICAgICovCi0g
ICAgZnVuY3Rpb24gVmlldygpIHsKLSAgICB0aGlzLmRlZmF1bHRUZW1wbGF0ZQotICAgID0gICAg
JzxsaSBkYXRhLWlkPSJ7e2lkfX0iIGNsYXNzPSJ7e2NvbXBsZXRlZH19Ij4nCi0gICAgKyAgICAg
ICAgJzxkaXYgY2xhc3M9InZpZXciPicKLSAgICArICAgICAgICAgICAgJzxpbnB1dCBjbGFzcz0i
dG9nZ2xlIiB0eXBlPSJjaGVja2JveCIge3tjaGVja2VkfX0+JwotICAgICsgICAgICAgICAgICAn
PGxhYmVsPnt7dGl0bGV9fTwvbGFiZWw+JwotICAgICsgICAgICAgICAgICAnPGJ1dHRvbiBjbGFz
cz0iZGVzdHJveSI+PC9idXR0b24+JwotICAgICsgICAgICAgICc8L2Rpdj4nCi0gICAgKyAgICAn
PC9saT4nOwotICAgIH0KKyAgICAgICAgICogVmlldyB0aGF0IGFic3RyYWN0cyBhd2F5IHRoZSBi
cm93c2VyJ3MgRE9NIGNvbXBsZXRlbHkuCisgICAgICAgICAqIEl0IGhhcyB0d28gc2ltcGxlIGVu
dHJ5IHBvaW50czoKKyAgICAgICAgICoKKyAgICAgICAgICogICAtIGJpbmQoZXZlbnROYW1lLCBo
YW5kbGVyKQorICAgICAgICAgKiAgICAgVGFrZXMgYSB0b2RvIGFwcGxpY2F0aW9uIGV2ZW50IGFu
ZCByZWdpc3RlcnMgdGhlIGhhbmRsZXIKKyAgICAgICAgICogICAtIHJlbmRlcihjb21tYW5kLCBw
YXJhbWV0ZXJPYmplY3QpCisgICAgICAgICAqICAgICBSZW5kZXJzIHRoZSBnaXZlbiBjb21tYW5k
IHdpdGggdGhlIG9wdGlvbnMKKyAgICAgICAgICovCisgICAgZnVuY3Rpb24gVmlldyh0ZW1wbGF0
ZSkgeworICAgICAgICB0aGlzLnRlbXBsYXRlID0gdGVtcGxhdGU7CiAKLSAgICAvKioKLSAgICAg
KiBDcmVhdGVzIGFuIDxsaT4gSFRNTCBzdHJpbmcgYW5kIHJldHVybnMgaXQgZm9yIHBsYWNlbWVu
dCBpbiB5b3VyIGFwcC4KLSAgICAgKgotICAgICAqIE5PVEU6IEluIHJlYWwgbGlmZSB5b3Ugc2hv
dWxkIGJlIHVzaW5nIGEgdGVtcGxhdGluZyBlbmdpbmUgc3VjaCBhcyBNdXN0YWNoZQotICAgICAq
IG9yIEhhbmRsZWJhcnMsIGhvd2V2ZXIsIHRoaXMgaXMgYSB2YW5pbGxhIEpTIGV4YW1wbGUuCi0g
ICAgICoKLSAgICAgKiBAcGFyYW0ge29iamVjdH0gZGF0YSBUaGUgb2JqZWN0IGNvbnRhaW5pbmcg
a2V5cyB5b3Ugd2FudCB0byBmaW5kIGluIHRoZQotICAgICAqICAgICAgICAgICAgICAgICAgICAg
IHRlbXBsYXRlIHRvIHJlcGxhY2UuCi0gICAgICogQHJldHVybnMge3N0cmluZ30gSFRNTCBTdHJp
bmcgb2YgYW4gPGxpPiBlbGVtZW50Ci0gICAgICoKLSAgICAgKiBAZXhhbXBsZQotICAgICAqIHZp
ZXcuc2hvdyh7Ci0gICAgICogICAgaWQ6IDEsCi0gICAgICogICAgdGl0bGU6ICJIZWxsbyBXb3Js
ZCIsCi0gICAgICogICAgY29tcGxldGVkOiAwLAotICAgICAqIH0pOwotICAgICAqLwotICAgIFZp
ZXcucHJvdG90eXBlLnNob3cgPSBmdW5jdGlvbiAoZGF0YSkgewotICAgIHZhciBpLCBsOwotICAg
IHZhciB2aWV3ID0gJyc7Ci0KLSAgICBmb3IgKGkgPSAwLCBsID0gZGF0YS5sZW5ndGg7IGkgPCBs
OyBpKyspIHsKLSAgICB2YXIgdGVtcGxhdGUgPSB0aGlzLmRlZmF1bHRUZW1wbGF0ZTsKLSAgICB2
YXIgY29tcGxldGVkID0gJyc7Ci0gICAgdmFyIGNoZWNrZWQgPSAnJzsKLQotICAgIGlmIChkYXRh
W2ldLmNvbXBsZXRlZCA9PT0gMSkgewotICAgIGNvbXBsZXRlZCA9ICdjb21wbGV0ZWQnOwotICAg
IGNoZWNrZWQgPSAnY2hlY2tlZCc7CisgICAgICAgIHRoaXMuRU5URVJfS0VZID0gMTM7CisgICAg
ICAgIHRoaXMuRVNDQVBFX0tFWSA9IDI3OworCisgICAgICAgIHRoaXMuJHRvZG9MaXN0ID0gcXMo
Jy50b2RvLWxpc3QnKTsKKyAgICAgICAgdGhpcy4kdG9kb0l0ZW1Db3VudGVyID0gcXMoJy50b2Rv
LWNvdW50Jyk7CisgICAgICAgIHRoaXMuJGNsZWFyQ29tcGxldGVkID0gcXMoJy5jbGVhci1jb21w
bGV0ZWQnKTsKKyAgICAgICAgdGhpcy4kbWFpbiA9IHFzKCcubWFpbicpOworICAgICAgICB0aGlz
LiRmb290ZXIgPSBxcygnLmZvb3RlcicpOworICAgICAgICB0aGlzLiR0b2dnbGVBbGwgPSBxcygn
LnRvZ2dsZS1hbGwnKTsKKyAgICAgICAgdGhpcy4kbmV3VG9kbyA9IHFzKCcubmV3LXRvZG8nKTsK
ICAgICB9CiAKLSAgICB0ZW1wbGF0ZSA9IHRlbXBsYXRlLnJlcGxhY2UoJ3t7aWR9fScsIGRhdGFb
aV0uaWQpOwotICAgIHRlbXBsYXRlID0gdGVtcGxhdGUucmVwbGFjZSgne3t0aXRsZX19JywgZGF0
YVtpXS50aXRsZSk7Ci0gICAgdGVtcGxhdGUgPSB0ZW1wbGF0ZS5yZXBsYWNlKCd7e2NvbXBsZXRl
ZH19JywgY29tcGxldGVkKTsKLSAgICB0ZW1wbGF0ZSA9IHRlbXBsYXRlLnJlcGxhY2UoJ3t7Y2hl
Y2tlZH19JywgY2hlY2tlZCk7CisgICAgVmlldy5wcm90b3R5cGUuX3JlbW92ZUl0ZW0gPSBmdW5j
dGlvbiAoaWQpIHsKKyAgICAgICAgdmFyIGVsZW0gPSBxcygnW2RhdGEtaWQ9IicgKyBpZCArICci
XScpOwogCi0gICAgdmlldyA9IHZpZXcgKyB0ZW1wbGF0ZTsKLSAgICB9CisgICAgICAgIGlmIChl
bGVtKSB7CisgICAgICAgICAgICB0aGlzLiR0b2RvTGlzdC5yZW1vdmVDaGlsZChlbGVtKTsKKyAg
ICAgICAgfQorICAgIH07CiAKLSAgICByZXR1cm4gdmlldzsKKyAgICBWaWV3LnByb3RvdHlwZS5f
Y2xlYXJDb21wbGV0ZWRCdXR0b24gPSBmdW5jdGlvbiAoY29tcGxldGVkQ291bnQsIHZpc2libGUp
IHsKKyAgICAgICAgdGhpcy4kY2xlYXJDb21wbGV0ZWQuaW5uZXJIVE1MID0gdGhpcy50ZW1wbGF0
ZS5jbGVhckNvbXBsZXRlZEJ1dHRvbihjb21wbGV0ZWRDb3VudCk7CisgICAgICAgIHRoaXMuJGNs
ZWFyQ29tcGxldGVkLnN0eWxlLmRpc3BsYXkgPSB2aXNpYmxlID8gJ2Jsb2NrJyA6ICdub25lJzsK
ICAgICB9OwogCi0gICAgLyoqCi0gICAgICogRGlzcGxheXMgYSBjb3VudGVyIG9mIGhvdyBtYW55
IHRvIGRvcyBhcmUgbGVmdCB0byBjb21wbGV0ZQotICAgICAqCi0gICAgICogQHBhcmFtIHtudW1i
ZXJ9IGFjdGl2ZVRvZG9zIFRoZSBudW1iZXIgb2YgYWN0aXZlIHRvZG9zLgotICAgICAqIEByZXR1
cm5zIHtzdHJpbmd9IFN0cmluZyBjb250YWluaW5nIHRoZSBjb3VudAotICAgICAqLwotICAgIFZp
ZXcucHJvdG90eXBlLml0ZW1Db3VudGVyID0gZnVuY3Rpb24gKGFjdGl2ZVRvZG9zKSB7Ci0gICAg
dmFyIHBsdXJhbCA9IGFjdGl2ZVRvZG9zID09PSAxID8gJycgOiAncyc7Ci0KLSAgICByZXR1cm4g
JzxzdHJvbmc+JyArIGFjdGl2ZVRvZG9zICsgJzwvc3Ryb25nPiBpdGVtJyArIHBsdXJhbCArICcg
bGVmdCc7CisgICAgVmlldy5wcm90b3R5cGUuX3NldEZpbHRlciA9IGZ1bmN0aW9uIChjdXJyZW50
UGFnZSkgeworICAgICAgICBxcygnLmZpbHRlcnMgLnNlbGVjdGVkJykuY2xhc3NOYW1lID0gJyc7
CisgICAgICAgIHFzKCcuZmlsdGVycyBbaHJlZj0iIy8nICsgY3VycmVudFBhZ2UgKyAnIl0nKS5j
bGFzc05hbWUgPSAnc2VsZWN0ZWQnOwogICAgIH07CiAKLSAgICAvKioKLSAgICAgKiBVcGRhdGVz
IHRoZSB0ZXh0IHdpdGhpbiB0aGUgIkNsZWFyIGNvbXBsZXRlZCIgYnV0dG9uCi0gICAgICoKLSAg
ICAgKiBAcGFyYW0gIHtbdHlwZV19IGNvbXBsZXRlZFRvZG9zIFRoZSBudW1iZXIgb2YgY29tcGxl
dGVkIHRvZG9zLgotICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFN0cmluZyBjb250YWluaW5nIHRo
ZSBjb3VudAotICAgICAqLwotICAgIFZpZXcucHJvdG90eXBlLmNsZWFyQ29tcGxldGVkQnV0dG9u
ID0gZnVuY3Rpb24gKGNvbXBsZXRlZFRvZG9zKSB7Ci0gICAgaWYgKGNvbXBsZXRlZFRvZG9zID4g
MCkgewotICAgIHJldHVybiAnQ2xlYXIgY29tcGxldGVkICgnICsgY29tcGxldGVkVG9kb3MgKyAn
KSc7Ci0gICAgfSBlbHNlIHsKLSAgICByZXR1cm4gJyc7Ci0gICAgfQorICAgIFZpZXcucHJvdG90
eXBlLl9lbGVtZW50Q29tcGxldGUgPSBmdW5jdGlvbiAoaWQsIGNvbXBsZXRlZCkgeworICAgICAg
ICB2YXIgbGlzdEl0ZW0gPSBxcygnW2RhdGEtaWQ9IicgKyBpZCArICciXScpOworCisgICAgICAg
IGlmICghbGlzdEl0ZW0pIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIGxpc3RJdGVtLmNsYXNzTmFtZSA9IGNvbXBsZXRlZCA/ICdjb21wbGV0ZWQnIDogJyc7CisK
KyAgICAgICAgLy8gSW4gY2FzZSBpdCB3YXMgdG9nZ2xlZCBmcm9tIGFuIGV2ZW50IGFuZCBub3Qg
YnkgY2xpY2tpbmcgdGhlIGNoZWNrYm94CisgICAgICAgIHFzKCdpbnB1dCcsIGxpc3RJdGVtKS5j
aGVja2VkID0gY29tcGxldGVkOworICAgIH07CisKKyAgICBWaWV3LnByb3RvdHlwZS5fZWRpdEl0
ZW0gPSBmdW5jdGlvbiAoaWQsIHRpdGxlKSB7CisgICAgICAgIHZhciBsaXN0SXRlbSA9IHFzKCdb
ZGF0YS1pZD0iJyArIGlkICsgJyJdJyk7CisKKyAgICAgICAgaWYgKCFsaXN0SXRlbSkgeworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgbGlzdEl0ZW0uY2xhc3NOYW1l
ID0gbGlzdEl0ZW0uY2xhc3NOYW1lICsgJyBlZGl0aW5nJzsKKworICAgICAgICB2YXIgaW5wdXQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpOworICAgICAgICBpbnB1dC5jbGFzc05h
bWUgPSAnZWRpdCc7CisKKyAgICAgICAgbGlzdEl0ZW0uYXBwZW5kQ2hpbGQoaW5wdXQpOworICAg
ICAgICBpbnB1dC5mb2N1cygpOworICAgICAgICBpbnB1dC52YWx1ZSA9IHRpdGxlOworICAgIH07
CisKKyAgICBWaWV3LnByb3RvdHlwZS5fZWRpdEl0ZW1Eb25lID0gZnVuY3Rpb24gKGlkLCB0aXRs
ZSkgeworICAgICAgICB2YXIgbGlzdEl0ZW0gPSBxcygnW2RhdGEtaWQ9IicgKyBpZCArICciXScp
OworCisgICAgICAgIGlmICghbGlzdEl0ZW0pIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIHZhciBpbnB1dCA9IHFzKCdpbnB1dC5lZGl0JywgbGlzdEl0ZW0pOwor
ICAgICAgICBsaXN0SXRlbS5yZW1vdmVDaGlsZChpbnB1dCk7CisKKyAgICAgICAgbGlzdEl0ZW0u
Y2xhc3NOYW1lID0gbGlzdEl0ZW0uY2xhc3NOYW1lLnJlcGxhY2UoJ2VkaXRpbmcnLCAnJyk7CisK
KyAgICAgICAgcXNhKCdsYWJlbCcsIGxpc3RJdGVtKS5mb3JFYWNoKGZ1bmN0aW9uIChsYWJlbCkg
eworICAgICAgICAgICAgbGFiZWwudGV4dENvbnRlbnQgPSB0aXRsZTsKKyAgICAgICAgfSk7Cisg
ICAgfTsKKworICAgIFZpZXcucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICh2aWV3Q21kLCBw
YXJhbWV0ZXIpIHsKKyAgICAgICAgdmFyIHNlbGYgPSB0aGlzOworICAgICAgICB2YXIgdmlld0Nv
bW1hbmRzID0geworICAgICAgICAgICAgc2hvd0VudHJpZXM6IGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgICAgICBzZWxmLiR0b2RvTGlzdC5pbm5lckhUTUwgPSBzZWxmLnRlbXBsYXRlLnNob3co
cGFyYW1ldGVyKTsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICByZW1vdmVJdGVtOiBmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICAgICAgc2VsZi5fcmVtb3ZlSXRlbShwYXJhbWV0ZXIpOwor
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHVwZGF0ZUVsZW1lbnRDb3VudDogZnVuY3Rpb24g
KCkgeworICAgICAgICAgICAgICAgIHNlbGYuJHRvZG9JdGVtQ291bnRlci5pbm5lckhUTUwgPSBz
ZWxmLnRlbXBsYXRlLml0ZW1Db3VudGVyKHBhcmFtZXRlcik7CisgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgY2xlYXJDb21wbGV0ZWRCdXR0b246IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
ICAgICBzZWxmLl9jbGVhckNvbXBsZXRlZEJ1dHRvbihwYXJhbWV0ZXIuY29tcGxldGVkLCBwYXJh
bWV0ZXIudmlzaWJsZSk7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgY29udGVudEJsb2Nr
VmlzaWJpbGl0eTogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHNlbGYuJG1haW4uc3R5
bGUuZGlzcGxheSA9IHNlbGYuJGZvb3Rlci5zdHlsZS5kaXNwbGF5ID0gcGFyYW1ldGVyLnZpc2li
bGUgPyAnYmxvY2snIDogJ25vbmUnOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHRvZ2ds
ZUFsbDogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHNlbGYuJHRvZ2dsZUFsbC5jaGVj
a2VkID0gcGFyYW1ldGVyLmNoZWNrZWQ7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgc2V0
RmlsdGVyOiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgc2VsZi5fc2V0RmlsdGVyKHBh
cmFtZXRlcik7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgY2xlYXJOZXdUb2RvOiBmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICAgICAgc2VsZi4kbmV3VG9kby52YWx1ZSA9ICcnOworICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgIGVsZW1lbnRDb21wbGV0ZTogZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgICAgIHNlbGYuX2VsZW1lbnRDb21wbGV0ZShwYXJhbWV0ZXIuaWQsIHBhcmFt
ZXRlci5jb21wbGV0ZWQpOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGVkaXRJdGVtOiBm
dW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgc2VsZi5fZWRpdEl0ZW0ocGFyYW1ldGVyLmlk
LCBwYXJhbWV0ZXIudGl0bGUpOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGVkaXRJdGVt
RG9uZTogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHNlbGYuX2VkaXRJdGVtRG9uZShw
YXJhbWV0ZXIuaWQsIHBhcmFtZXRlci50aXRsZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH07
CisKKyAgICAgICAgdmlld0NvbW1hbmRzW3ZpZXdDbWRdKCk7CisgICAgfTsKKworICAgIFZpZXcu
cHJvdG90eXBlLl9pdGVtSWQgPSBmdW5jdGlvbiAoZWxlbWVudCkgeworICAgICAgICB2YXIgbGkg
PSAkcGFyZW50KGVsZW1lbnQsICdsaScpOworICAgICAgICByZXR1cm4gcGFyc2VJbnQobGkuZGF0
YXNldC5pZCwgMTApOworICAgIH07CisKKyAgICBWaWV3LnByb3RvdHlwZS5fYmluZEl0ZW1FZGl0
RG9uZSA9IGZ1bmN0aW9uIChoYW5kbGVyKSB7CisgICAgICAgIHZhciBzZWxmID0gdGhpczsKKyAg
ICAgICAgJGRlbGVnYXRlKHNlbGYuJHRvZG9MaXN0LCAnbGkgLmVkaXQnLCAnYmx1cicsIGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgIGlmICghdGhpcy5kYXRhc2V0LmlzY2FuY2VsZWQpIHsKKyAg
ICAgICAgICAgICAgICBoYW5kbGVyKHsKKyAgICAgICAgICAgICAgICAgICAgaWQ6IHNlbGYuX2l0
ZW1JZCh0aGlzKSwKKyAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRoaXMudmFsdWUKKyAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisKKyAgICAgICAgJGRl
bGVnYXRlKHNlbGYuJHRvZG9MaXN0LCAnbGkgLmVkaXQnLCAna2V5cHJlc3MnLCBmdW5jdGlvbiAo
ZXZlbnQpIHsKKyAgICAgICAgICAgIGlmIChldmVudC5rZXlDb2RlID09PSBzZWxmLkVOVEVSX0tF
WSkgeworICAgICAgICAgICAgICAgIC8vIFJlbW92ZSB0aGUgY3Vyc29yIGZyb20gdGhlIGlucHV0
IHdoZW4geW91IGhpdCBlbnRlciBqdXN0IGxpa2UgaWYgaXQKKyAgICAgICAgICAgICAgICAvLyB3
ZXJlIGEgcmVhbCBmb3JtCisgICAgICAgICAgICAgICAgdGhpcy5ibHVyKCk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0pOworICAgIH07CisKKyAgICBWaWV3LnByb3RvdHlwZS5fYmluZEl0ZW1F
ZGl0Q2FuY2VsID0gZnVuY3Rpb24gKGhhbmRsZXIpIHsKKyAgICAgICAgdmFyIHNlbGYgPSB0aGlz
OworICAgICAgICAkZGVsZWdhdGUoc2VsZi4kdG9kb0xpc3QsICdsaSAuZWRpdCcsICdrZXl1cCcs
IGZ1bmN0aW9uIChldmVudCkgeworICAgICAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IHNl
bGYuRVNDQVBFX0tFWSkgeworICAgICAgICAgICAgICAgIHRoaXMuZGF0YXNldC5pc2NhbmNlbGVk
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB0aGlzLmJsdXIoKTsKKworICAgICAgICAgICAgICAg
IGhhbmRsZXIoe2lkOiBzZWxmLl9pdGVtSWQodGhpcyl9KTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfSk7CisgICAgfTsKKworICAgIFZpZXcucHJvdG90eXBlLmJpbmQgPSBmdW5jdGlvbiAoZXZl
bnQsIGhhbmRsZXIpIHsKKyAgICAgICAgdmFyIHNlbGYgPSB0aGlzOworICAgICAgICBpZiAoZXZl
bnQgPT09ICduZXdUb2RvJykgeworICAgICAgICAgICAgJG9uKHNlbGYuJG5ld1RvZG8sICdjaGFu
Z2UnLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgaGFuZGxlcihzZWxmLiRuZXdUb2Rv
LnZhbHVlKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQgPT09
ICdyZW1vdmVDb21wbGV0ZWQnKSB7CisgICAgICAgICAgICAkb24oc2VsZi4kY2xlYXJDb21wbGV0
ZWQsICdjbGljaycsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBoYW5kbGVyKCk7Cisg
ICAgICAgICAgICB9KTsKKworICAgICAgICB9IGVsc2UgaWYgKGV2ZW50ID09PSAndG9nZ2xlQWxs
JykgeworICAgICAgICAgICAgJG9uKHNlbGYuJHRvZ2dsZUFsbCwgJ2NsaWNrJywgZnVuY3Rpb24g
KCkgeworICAgICAgICAgICAgICAgIGhhbmRsZXIoe2NvbXBsZXRlZDogdGhpcy5jaGVja2VkfSk7
CisgICAgICAgICAgICB9KTsKKworICAgICAgICB9IGVsc2UgaWYgKGV2ZW50ID09PSAnaXRlbUVk
aXQnKSB7CisgICAgICAgICAgICAkZGVsZWdhdGUoc2VsZi4kdG9kb0xpc3QsICdsaSBsYWJlbCcs
ICdkYmxjbGljaycsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBoYW5kbGVyKHtpZDog
c2VsZi5faXRlbUlkKHRoaXMpfSk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICB9IGVsc2Ug
aWYgKGV2ZW50ID09PSAnaXRlbVJlbW92ZScpIHsKKyAgICAgICAgICAgICRkZWxlZ2F0ZShzZWxm
LiR0b2RvTGlzdCwgJy5kZXN0cm95JywgJ2NsaWNrJywgZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgICAgIGhhbmRsZXIoe2lkOiBzZWxmLl9pdGVtSWQodGhpcyl9KTsKKyAgICAgICAgICAgIH0p
OworCisgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQgPT09ICdpdGVtVG9nZ2xlJykgeworICAgICAg
ICAgICAgJGRlbGVnYXRlKHNlbGYuJHRvZG9MaXN0LCAnLnRvZ2dsZScsICdjbGljaycsIGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgICAgICBoYW5kbGVyKHsKKyAgICAgICAgICAgICAgICAgICAg
aWQ6IHNlbGYuX2l0ZW1JZCh0aGlzKSwKKyAgICAgICAgICAgICAgICAgICAgY29tcGxldGVkOiB0
aGlzLmNoZWNrZWQKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworCisgICAg
ICAgIH0gZWxzZSBpZiAoZXZlbnQgPT09ICdpdGVtRWRpdERvbmUnKSB7CisgICAgICAgICAgICBz
ZWxmLl9iaW5kSXRlbUVkaXREb25lKGhhbmRsZXIpOworCisgICAgICAgIH0gZWxzZSBpZiAoZXZl
bnQgPT09ICdpdGVtRWRpdENhbmNlbCcpIHsKKyAgICAgICAgICAgIHNlbGYuX2JpbmRJdGVtRWRp
dENhbmNlbChoYW5kbGVyKTsKKyAgICAgICAgfQogICAgIH07CiAKICAgICAvLyBFeHBvcnQgdG8g
d2luZG93CisgICAgd2luZG93LmFwcCA9IHdpbmRvdy5hcHAgfHwge307CiAgICAgd2luZG93LmFw
cC5WaWV3ID0gVmlldzsKLX0pKHdpbmRvdyk7Cit9KHdpbmRvdykpOwpkaWZmIC0tZ2l0IGEvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1w
bGVzL3ZhbmlsbGFqcy9ub2RlX21vZHVsZXMvdG9kb212Yy1hcHAtY3NzL2luZGV4LmNzcyBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFt
cGxlcy92YW5pbGxhanMvbm9kZV9tb2R1bGVzL3RvZG9tdmMtYXBwLWNzcy9pbmRleC5jc3MKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMjJhYjllMmNhZDc2OTY2ZGViOGJlNDJlOTc3YzQzMDI0MWM0MzQ3NwotLS0gL2Rl
di9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvbm9kZV9tb2R1bGVzL3RvZG9tdmMtYXBwLWNz
cy9pbmRleC5jc3MKQEAgLTAsMCArMSwzNzggQEAKK2h0bWwsCitib2R5IHsKKyAgICBtYXJnaW46
IDA7CisgICAgcGFkZGluZzogMDsKK30KKworYnV0dG9uIHsKKyAgICBtYXJnaW46IDA7CisgICAg
cGFkZGluZzogMDsKKyAgICBib3JkZXI6IDA7CisgICAgYmFja2dyb3VuZDogbm9uZTsKKyAgICBm
b250LXNpemU6IDEwMCU7CisgICAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOworICAgIGZvbnQt
ZmFtaWx5OiBpbmhlcml0OworICAgIGZvbnQtd2VpZ2h0OiBpbmhlcml0OworICAgIGNvbG9yOiBp
bmhlcml0OworICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKKyAgICBhcHBlYXJhbmNlOiBu
b25lOworICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOworICAgIC1tb3ot
Zm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOworICAgIGZvbnQtc21vb3RoaW5nOiBhbnRpYWxp
YXNlZDsKK30KKworYm9keSB7CisgICAgZm9udDogMTRweCAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2
ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOworICAgIGxpbmUtaGVpZ2h0OiAxLjRlbTsKKyAgICBi
YWNrZ3JvdW5kOiAjZjVmNWY1OworICAgIGNvbG9yOiAjNGQ0ZDRkOworICAgIG1pbi13aWR0aDog
MjMwcHg7CisgICAgbWF4LXdpZHRoOiA1NTBweDsKKyAgICBtYXJnaW46IDAgYXV0bzsKKyAgICAt
d2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKKyAgICAtbW96LWZvbnQtc21vb3Ro
aW5nOiBhbnRpYWxpYXNlZDsKKyAgICBmb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CisgICAg
Zm9udC13ZWlnaHQ6IDMwMDsKK30KKworYnV0dG9uLAoraW5wdXRbdHlwZT0iY2hlY2tib3giXSB7
CisgICAgb3V0bGluZTogbm9uZTsKK30KKworLmhpZGRlbiB7CisgICAgZGlzcGxheTogbm9uZTsK
K30KKworLnRvZG9hcHAgeworICAgIGJhY2tncm91bmQ6ICNmZmY7CisgICAgbWFyZ2luOiAxMzBw
eCAwIDQwcHggMDsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgYm94LXNoYWRvdzogMCAy
cHggNHB4IDAgcmdiYSgwLCAwLCAwLCAwLjIpLAorICAgICAgICAgICAgICAgIDAgMjVweCA1MHB4
IDAgcmdiYSgwLCAwLCAwLCAwLjEpOworfQorCisudG9kb2FwcCBpbnB1dDo6LXdlYmtpdC1pbnB1
dC1wbGFjZWhvbGRlciB7CisgICAgZm9udC1zdHlsZTogaXRhbGljOworICAgIGZvbnQtd2VpZ2h0
OiAzMDA7CisgICAgY29sb3I6ICNlNmU2ZTY7Cit9CisKKy50b2RvYXBwIGlucHV0OjotbW96LXBs
YWNlaG9sZGVyIHsKKyAgICBmb250LXN0eWxlOiBpdGFsaWM7CisgICAgZm9udC13ZWlnaHQ6IDMw
MDsKKyAgICBjb2xvcjogI2U2ZTZlNjsKK30KKworLnRvZG9hcHAgaW5wdXQ6OmlucHV0LXBsYWNl
aG9sZGVyIHsKKyAgICBmb250LXN0eWxlOiBpdGFsaWM7CisgICAgZm9udC13ZWlnaHQ6IDMwMDsK
KyAgICBjb2xvcjogI2U2ZTZlNjsKK30KKworLnRvZG9hcHAgaDEgeworICAgIHBvc2l0aW9uOiBh
YnNvbHV0ZTsKKyAgICB0b3A6IC0xNTVweDsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBmb250LXNp
emU6IDEwMHB4OworICAgIGZvbnQtd2VpZ2h0OiAxMDA7CisgICAgdGV4dC1hbGlnbjogY2VudGVy
OworICAgIGNvbG9yOiByZ2JhKDE3NSwgNDcsIDQ3LCAwLjE1KTsKKyAgICAtd2Via2l0LXRleHQt
cmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7CisgICAgLW1vei10ZXh0LXJlbmRlcmluZzog
b3B0aW1pemVMZWdpYmlsaXR5OworICAgIHRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxp
dHk7Cit9CisKKy5uZXctdG9kbywKKy5lZGl0IHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cisg
ICAgbWFyZ2luOiAwOworICAgIHdpZHRoOiAxMDAlOworICAgIGZvbnQtc2l6ZTogMjRweDsKKyAg
ICBmb250LWZhbWlseTogaW5oZXJpdDsKKyAgICBmb250LXdlaWdodDogaW5oZXJpdDsKKyAgICBs
aW5lLWhlaWdodDogMS40ZW07CisgICAgYm9yZGVyOiAwOworICAgIG91dGxpbmU6IG5vbmU7Cisg
ICAgY29sb3I6IGluaGVyaXQ7CisgICAgcGFkZGluZzogNnB4OworICAgIGJvcmRlcjogMXB4IHNv
bGlkICM5OTk7CisgICAgYm94LXNoYWRvdzogaW5zZXQgMCAtMXB4IDVweCAwIHJnYmEoMCwgMCwg
MCwgMC4yKTsKKyAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OworICAgIC13ZWJraXQtZm9udC1z
bW9vdGhpbmc6IGFudGlhbGlhc2VkOworICAgIC1tb3otZm9udC1zbW9vdGhpbmc6IGFudGlhbGlh
c2VkOworICAgIGZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKK30KKworLm5ldy10b2RvIHsK
KyAgICBwYWRkaW5nOiAxNnB4IDE2cHggMTZweCA2MHB4OworICAgIGJvcmRlcjogbm9uZTsKKyAg
ICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMDAzKTsKKyAgICBib3gtc2hhZG93OiBpbnNl
dCAwIC0ycHggMXB4IHJnYmEoMCwwLDAsMC4wMyk7Cit9CisKKy5tYWluIHsKKyAgICBwb3NpdGlv
bjogcmVsYXRpdmU7CisgICAgei1pbmRleDogMjsKKyAgICBib3JkZXItdG9wOiAxcHggc29saWQg
I2U2ZTZlNjsKK30KKworbGFiZWxbZm9yPSd0b2dnbGUtYWxsJ10geworICAgIGRpc3BsYXk6IG5v
bmU7Cit9CisKKy50b2dnbGUtYWxsIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9w
OiAtNTVweDsKKyAgICBsZWZ0OiAtMTJweDsKKyAgICB3aWR0aDogNjBweDsKKyAgICBoZWlnaHQ6
IDM0cHg7CisgICAgdGV4dC1hbGlnbjogY2VudGVyOworICAgIGJvcmRlcjogbm9uZTsgLyogTW9i
aWxlIFNhZmFyaSAqLworfQorCisudG9nZ2xlLWFsbDpiZWZvcmUgeworICAgIGNvbnRlbnQ6ICfi
na8nOworICAgIGZvbnQtc2l6ZTogMjJweDsKKyAgICBjb2xvcjogI2U2ZTZlNjsKKyAgICBwYWRk
aW5nOiAxMHB4IDI3cHggMTBweCAyN3B4OworfQorCisudG9nZ2xlLWFsbDpjaGVja2VkOmJlZm9y
ZSB7CisgICAgY29sb3I6ICM3MzczNzM7Cit9CisKKy50b2RvLWxpc3QgeworICAgIG1hcmdpbjog
MDsKKyAgICBwYWRkaW5nOiAwOworICAgIGxpc3Qtc3R5bGU6IG5vbmU7Cit9CisKKy50b2RvLWxp
c3QgbGkgeworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICBmb250LXNpemU6IDI0cHg7Cisg
ICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlZGVkZWQ7Cit9CisKKy50b2RvLWxpc3QgbGk6
bGFzdC1jaGlsZCB7CisgICAgYm9yZGVyLWJvdHRvbTogbm9uZTsKK30KKworLnRvZG8tbGlzdCBs
aS5lZGl0aW5nIHsKKyAgICBib3JkZXItYm90dG9tOiBub25lOworICAgIHBhZGRpbmc6IDA7Cit9
CisKKy50b2RvLWxpc3QgbGkuZWRpdGluZyAuZWRpdCB7CisgICAgZGlzcGxheTogYmxvY2s7Cisg
ICAgd2lkdGg6IDUwNnB4OworICAgIHBhZGRpbmc6IDEzcHggMTdweCAxMnB4IDE3cHg7CisgICAg
bWFyZ2luOiAwIDAgMCA0M3B4OworfQorCisudG9kby1saXN0IGxpLmVkaXRpbmcgLnZpZXcgewor
ICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKKy50b2RvLWxpc3QgbGkgLnRvZ2dsZSB7CisgICAgdGV4
dC1hbGlnbjogY2VudGVyOworICAgIHdpZHRoOiA0MHB4OworICAgIC8qIGF1dG8sIHNpbmNlIG5v
bi1XZWJLaXQgYnJvd3NlcnMgZG9lc24ndCBzdXBwb3J0IGlucHV0IHN0eWxpbmcgKi8KKyAgICBo
ZWlnaHQ6IGF1dG87CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDogMDsKKyAgICBi
b3R0b206IDA7CisgICAgbWFyZ2luOiBhdXRvIDA7CisgICAgYm9yZGVyOiBub25lOyAvKiBNb2Jp
bGUgU2FmYXJpICovCisgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOworICAgIGFwcGVhcmFu
Y2U6IG5vbmU7Cit9CisKKy50b2RvLWxpc3QgbGkgLnRvZ2dsZTphZnRlciB7CisgICAgY29udGVu
dDogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjQwIiBoZWlnaHQ9IjQwIiB2aWV3Qm94PSItMTAgLTE4IDEw
MCAxMzUiPjxjaXJjbGUgY3g9IjUwIiBjeT0iNTAiIHI9IjUwIiBmaWxsPSJub25lIiBzdHJva2U9
IiNlZGVkZWQiIHN0cm9rZS13aWR0aD0iMyIvPjwvc3ZnPicpOworfQorCisudG9kby1saXN0IGxp
IC50b2dnbGU6Y2hlY2tlZDphZnRlciB7CisgICAgY29udGVudDogdXJsKCdkYXRhOmltYWdlL3N2
Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9
IjQwIiBoZWlnaHQ9IjQwIiB2aWV3Qm94PSItMTAgLTE4IDEwMCAxMzUiPjxjaXJjbGUgY3g9IjUw
IiBjeT0iNTAiIHI9IjUwIiBmaWxsPSJub25lIiBzdHJva2U9IiNiZGRhZDUiIHN0cm9rZS13aWR0
aD0iMyIvPjxwYXRoIGZpbGw9IiM1ZGMyYWYiIGQ9Ik03MiAyNUw0MiA3MSAyNyA1NmwtNCA0IDIw
IDIwIDM0LTUyeiIvPjwvc3ZnPicpOworfQorCisudG9kby1saXN0IGxpIGxhYmVsIHsKKyAgICB3
aGl0ZS1zcGFjZTogcHJlLWxpbmU7CisgICAgd29yZC1icmVhazogYnJlYWstYWxsOworICAgIHBh
ZGRpbmc6IDE1cHggNjBweCAxNXB4IDE1cHg7CisgICAgbWFyZ2luLWxlZnQ6IDQ1cHg7CisgICAg
ZGlzcGxheTogYmxvY2s7CisgICAgbGluZS1oZWlnaHQ6IDEuMjsKKyAgICB0cmFuc2l0aW9uOiBj
b2xvciAwLjRzOworfQorCisudG9kby1saXN0IGxpLmNvbXBsZXRlZCBsYWJlbCB7CisgICAgY29s
b3I6ICNkOWQ5ZDk7CisgICAgdGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2g7Cit9CisKKy50
b2RvLWxpc3QgbGkgLmRlc3Ryb3kgeworICAgIGRpc3BsYXk6IG5vbmU7CisgICAgcG9zaXRpb246
IGFic29sdXRlOworICAgIHRvcDogMDsKKyAgICByaWdodDogMTBweDsKKyAgICBib3R0b206IDA7
CisgICAgd2lkdGg6IDQwcHg7CisgICAgaGVpZ2h0OiA0MHB4OworICAgIG1hcmdpbjogYXV0byAw
OworICAgIGZvbnQtc2l6ZTogMzBweDsKKyAgICBjb2xvcjogI2NjOWE5YTsKKyAgICBtYXJnaW4t
Ym90dG9tOiAxMXB4OworICAgIHRyYW5zaXRpb246IGNvbG9yIDAuMnMgZWFzZS1vdXQ7Cit9CisK
Ky50b2RvLWxpc3QgbGkgLmRlc3Ryb3k6aG92ZXIgeworICAgIGNvbG9yOiAjYWY1YjVlOworfQor
CisudG9kby1saXN0IGxpIC5kZXN0cm95OmFmdGVyIHsKKyAgICBjb250ZW50OiAnw5cnOworfQor
CisudG9kby1saXN0IGxpOmhvdmVyIC5kZXN0cm95IHsKKyAgICBkaXNwbGF5OiBibG9jazsKK30K
KworLnRvZG8tbGlzdCBsaSAuZWRpdCB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKworLnRvZG8t
bGlzdCBsaS5lZGl0aW5nOmxhc3QtY2hpbGQgeworICAgIG1hcmdpbi1ib3R0b206IC0xcHg7Cit9
CisKKy5mb290ZXIgeworICAgIGNvbG9yOiAjNzc3OworICAgIHBhZGRpbmc6IDEwcHggMTVweDsK
KyAgICBoZWlnaHQ6IDIwcHg7CisgICAgdGV4dC1hbGlnbjogY2VudGVyOworICAgIGJvcmRlci10
b3A6IDFweCBzb2xpZCAjZTZlNmU2OworfQorCisuZm9vdGVyOmJlZm9yZSB7CisgICAgY29udGVu
dDogJyc7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHJpZ2h0OiAwOworICAgIGJvdHRv
bTogMDsKKyAgICBsZWZ0OiAwOworICAgIGhlaWdodDogNTBweDsKKyAgICBvdmVyZmxvdzogaGlk
ZGVuOworICAgIGJveC1zaGFkb3c6IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMiksCisgICAg
ICAgICAgICAgICAgMCA4cHggMCAtM3B4ICNmNmY2ZjYsCisgICAgICAgICAgICAgICAgMCA5cHgg
MXB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLAorICAgICAgICAgICAgICAgIDAgMTZweCAwIC02
cHggI2Y2ZjZmNiwKKyAgICAgICAgICAgICAgICAwIDE3cHggMnB4IC02cHggcmdiYSgwLCAwLCAw
LCAwLjIpOworfQorCisudG9kby1jb3VudCB7CisgICAgZmxvYXQ6IGxlZnQ7CisgICAgdGV4dC1h
bGlnbjogbGVmdDsKK30KKworLnRvZG8tY291bnQgc3Ryb25nIHsKKyAgICBmb250LXdlaWdodDog
MzAwOworfQorCisuZmlsdGVycyB7CisgICAgbWFyZ2luOiAwOworICAgIHBhZGRpbmc6IDA7Cisg
ICAgbGlzdC1zdHlsZTogbm9uZTsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgcmlnaHQ6
IDA7CisgICAgbGVmdDogMDsKK30KKworLmZpbHRlcnMgbGkgeworICAgIGRpc3BsYXk6IGlubGlu
ZTsKK30KKworLmZpbHRlcnMgbGkgYSB7CisgICAgY29sb3I6IGluaGVyaXQ7CisgICAgbWFyZ2lu
OiAzcHg7CisgICAgcGFkZGluZzogM3B4IDdweDsKKyAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7
CisgICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CisgICAgYm9yZGVyLXJhZGl1czog
M3B4OworfQorCisuZmlsdGVycyBsaSBhLnNlbGVjdGVkLAorLmZpbHRlcnMgbGkgYTpob3ZlciB7
CisgICAgYm9yZGVyLWNvbG9yOiByZ2JhKDE3NSwgNDcsIDQ3LCAwLjEpOworfQorCisuZmlsdGVy
cyBsaSBhLnNlbGVjdGVkIHsKKyAgICBib3JkZXItY29sb3I6IHJnYmEoMTc1LCA0NywgNDcsIDAu
Mik7Cit9CisKKy5jbGVhci1jb21wbGV0ZWQsCitodG1sIC5jbGVhci1jb21wbGV0ZWQ6YWN0aXZl
IHsKKyAgICBmbG9hdDogcmlnaHQ7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgIGxpbmUt
aGVpZ2h0OiAyMHB4OworICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKKyAgICBjdXJzb3I6IHBv
aW50ZXI7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworfQorCisuY2xlYXItY29tcGxldGVkOmhv
dmVyIHsKKyAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKK30KKworLmluZm8geworICAg
IG1hcmdpbjogNjVweCBhdXRvIDA7CisgICAgY29sb3I6ICNiZmJmYmY7CisgICAgZm9udC1zaXpl
OiAxMHB4OworICAgIHRleHQtc2hhZG93OiAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41
KTsKKyAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cit9CisKKy5pbmZvIHAgeworICAgIGxpbmUtaGVp
Z2h0OiAxOworfQorCisuaW5mbyBhIHsKKyAgICBjb2xvcjogaW5oZXJpdDsKKyAgICB0ZXh0LWRl
Y29yYXRpb246IG5vbmU7CisgICAgZm9udC13ZWlnaHQ6IDQwMDsKK30KKworLmluZm8gYTpob3Zl
ciB7CisgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Cit9CisKKy8qCisgICAgSGFjayB0
byByZW1vdmUgYmFja2dyb3VuZCBmcm9tIE1vYmlsZSBTYWZhcmkuCisgICAgQ2FuJ3QgdXNlIGl0
IGdsb2JhbGx5IHNpbmNlIGl0IGRlc3Ryb3lzIGNoZWNrYm94ZXMgaW4gRmlyZWZveAorKi8KK0Bt
ZWRpYSBzY3JlZW4gYW5kICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86MCkgeworICAg
IC50b2dnbGUtYWxsLAorICAgIC50b2RvLWxpc3QgbGkgLnRvZ2dsZSB7CisgICAgICAgIGJhY2tn
cm91bmQ6IG5vbmU7CisgICAgfQorCisgICAgLnRvZG8tbGlzdCBsaSAudG9nZ2xlIHsKKyAgICAg
ICAgaGVpZ2h0OiA0MHB4OworICAgIH0KKworICAgIC50b2dnbGUtYWxsIHsKKyAgICAgICAgLXdl
YmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7CisgICAgICAgIHRyYW5zZm9ybTogcm90YXRl
KDkwZGVnKTsKKyAgICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOworICAgICAgICBhcHBl
YXJhbmNlOiBub25lOworICAgIH0KK30KKworQG1lZGlhIChtYXgtd2lkdGg6IDQzMHB4KSB7Cisg
ICAgLmZvb3RlciB7CisgICAgICAgIGhlaWdodDogNTBweDsKKyAgICB9CisKKyAgICAuZmlsdGVy
cyB7CisgICAgICAgIGJvdHRvbTogMTBweDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMv
dmFuaWxsYWpzL25vZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1vbi9iYXNlLmNzcyBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92
YW5pbGxhanMvbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jhc2UuY3NzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkMjVkM2M4NGFjNmM2YWVmMjZiOTY4M2EyYmMxMGM2MWY5NjBjOGYKLS0tIC9kZXYvbnVsbAor
KysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3Zhbmls
bGEtZXhhbXBsZXMvdmFuaWxsYWpzL25vZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1vbi9iYXNlLmNz
cwpAQCAtMCwwICsxLDE0MSBAQAoraHIgeworICAgIG1hcmdpbjogMjBweCAwOworICAgIGJvcmRl
cjogMDsKKyAgICBib3JkZXItdG9wOiAxcHggZGFzaGVkICNjNWM1YzU7CisgICAgYm9yZGVyLWJv
dHRvbTogMXB4IGRhc2hlZCAjZjdmN2Y3OworfQorCisubGVhcm4gYSB7CisgICAgZm9udC13ZWln
aHQ6IG5vcm1hbDsKKyAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CisgICAgY29sb3I6ICNiODNm
NDU7Cit9CisKKy5sZWFybiBhOmhvdmVyIHsKKyAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGlu
ZTsKKyAgICBjb2xvcjogIzc4N2U3ZTsKK30KKworLmxlYXJuIGgzLAorLmxlYXJuIGg0LAorLmxl
YXJuIGg1IHsKKyAgICBtYXJnaW46IDEwcHggMDsKKyAgICBmb250LXdlaWdodDogNTAwOworICAg
IGxpbmUtaGVpZ2h0OiAxLjI7CisgICAgY29sb3I6ICMwMDA7Cit9CisKKy5sZWFybiBoMyB7Cisg
ICAgZm9udC1zaXplOiAyNHB4OworfQorCisubGVhcm4gaDQgeworICAgIGZvbnQtc2l6ZTogMThw
eDsKK30KKworLmxlYXJuIGg1IHsKKyAgICBtYXJnaW4tYm90dG9tOiAwOworICAgIGZvbnQtc2l6
ZTogMTRweDsKK30KKworLmxlYXJuIHVsIHsKKyAgICBwYWRkaW5nOiAwOworICAgIG1hcmdpbjog
MCAwIDMwcHggMjVweDsKK30KKworLmxlYXJuIGxpIHsKKyAgICBsaW5lLWhlaWdodDogMjBweDsK
K30KKworLmxlYXJuIHAgeworICAgIGZvbnQtc2l6ZTogMTVweDsKKyAgICBmb250LXdlaWdodDog
MzAwOworICAgIGxpbmUtaGVpZ2h0OiAxLjM7CisgICAgbWFyZ2luLXRvcDogMDsKKyAgICBtYXJn
aW4tYm90dG9tOiAwOworfQorCisjaXNzdWUtY291bnQgeworICAgIGRpc3BsYXk6IG5vbmU7Cit9
CisKKy5xdW90ZSB7CisgICAgYm9yZGVyOiBub25lOworICAgIG1hcmdpbjogMjBweCAwIDYwcHgg
MDsKK30KKworLnF1b3RlIHAgeworICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKK30KKworLnF1b3Rl
IHA6YmVmb3JlIHsKKyAgICBjb250ZW50OiAn4oCcJzsKKyAgICBmb250LXNpemU6IDUwcHg7Cisg
ICAgb3BhY2l0eTogLjE1OworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IC0yMHB4
OworICAgIGxlZnQ6IDNweDsKK30KKworLnF1b3RlIHA6YWZ0ZXIgeworICAgIGNvbnRlbnQ6ICfi
gJ0nOworICAgIGZvbnQtc2l6ZTogNTBweDsKKyAgICBvcGFjaXR5OiAuMTU7CisgICAgcG9zaXRp
b246IGFic29sdXRlOworICAgIGJvdHRvbTogLTQycHg7CisgICAgcmlnaHQ6IDNweDsKK30KKwor
LnF1b3RlIGZvb3RlciB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIGJvdHRvbTogLTQw
cHg7CisgICAgcmlnaHQ6IDA7Cit9CisKKy5xdW90ZSBmb290ZXIgaW1nIHsKKyAgICBib3JkZXIt
cmFkaXVzOiAzcHg7Cit9CisKKy5xdW90ZSBmb290ZXIgYSB7CisgICAgbWFyZ2luLWxlZnQ6IDVw
eDsKKyAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOworfQorCisuc3BlZWNoLWJ1YmJsZSB7Cisg
ICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgIHBhZGRpbmc6IDEwcHg7CisgICAgYmFja2dyb3Vu
ZDogcmdiYSgwLCAwLCAwLCAuMDQpOworICAgIGJvcmRlci1yYWRpdXM6IDVweDsKK30KKworLnNw
ZWVjaC1idWJibGU6YWZ0ZXIgeworICAgIGNvbnRlbnQ6ICcnOworICAgIHBvc2l0aW9uOiBhYnNv
bHV0ZTsKKyAgICB0b3A6IDEwMCU7CisgICAgcmlnaHQ6IDMwcHg7CisgICAgYm9yZGVyOiAxM3B4
IHNvbGlkIHRyYW5zcGFyZW50OworICAgIGJvcmRlci10b3AtY29sb3I6IHJnYmEoMCwgMCwgMCwg
LjA0KTsKK30KKworLmxlYXJuLWJhciA+IC5sZWFybiB7CisgICAgcG9zaXRpb246IGFic29sdXRl
OworICAgIHdpZHRoOiAyNzJweDsKKyAgICB0b3A6IDhweDsKKyAgICBsZWZ0OiAtMzAwcHg7Cisg
ICAgcGFkZGluZzogMTBweDsKKyAgICBib3JkZXItcmFkaXVzOiA1cHg7CisgICAgYmFja2dyb3Vu
ZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAuNik7CisgICAgdHJhbnNpdGlvbi1wcm9wZXJ0
eTogbGVmdDsKKyAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiA1MDBtczsKK30KKworQG1lZGlhICht
aW4td2lkdGg6IDg5OXB4KSB7CisgICAgLmxlYXJuLWJhciB7CisgICAgICAgIHdpZHRoOiBhdXRv
OworICAgICAgICBwYWRkaW5nLWxlZnQ6IDMwMHB4OworICAgIH0KKworICAgIC5sZWFybi1iYXIg
PiAubGVhcm4geworICAgICAgICBsZWZ0OiA4cHg7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1w
bGVzL3ZhbmlsbGFqcy9ub2RlX21vZHVsZXMvdG9kb212Yy1jb21tb24vYmFzZS5qcyBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxl
cy92YW5pbGxhanMvbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jhc2UuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uODFlMDA2YmM1MDJkZGM0Yzc0ZjQ3YmQxM2E4MzkyMjc3ZjgzMGRiOAotLS0gL2Rldi9udWxs
CisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFu
aWxsYS1leGFtcGxlcy92YW5pbGxhanMvbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jhc2Uu
anMKQEAgLTAsMCArMSwyNDkgQEAKKy8qIGdsb2JhbCBfICovCisoZnVuY3Rpb24gKCkgeworICAg
ICd1c2Ugc3RyaWN0JzsKKworICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi8KKyAgICAvLyBV
bmRlcnNjb3JlJ3MgVGVtcGxhdGUgTW9kdWxlCisgICAgLy8gQ291cnRlc3kgb2YgdW5kZXJzY29y
ZWpzLm9yZworICAgIHZhciBfID0gKGZ1bmN0aW9uIChfKSB7CisgICAgICAgIF8uZGVmYXVsdHMg
PSBmdW5jdGlvbiAob2JqZWN0KSB7CisgICAgICAgICAgICBpZiAoIW9iamVjdCkgeworICAgICAg
ICAgICAgICAgIHJldHVybiBvYmplY3Q7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmb3Ig
KHZhciBhcmdzSW5kZXggPSAxLCBhcmdzTGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDsgYXJnc0lu
ZGV4IDwgYXJnc0xlbmd0aDsgYXJnc0luZGV4KyspIHsKKyAgICAgICAgICAgICAgICB2YXIgaXRl
cmFibGUgPSBhcmd1bWVudHNbYXJnc0luZGV4XTsKKyAgICAgICAgICAgICAgICBpZiAoaXRlcmFi
bGUpIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIGl0ZXJhYmxlKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAob2JqZWN0W2tleV0gPT0gbnVsbCkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG9iamVjdFtrZXldID0gaXRlcmFibGVba2V5XTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBvYmplY3Q7CisgICAgICAg
IH0KKworICAgICAgICAvLyBCeSBkZWZhdWx0LCBVbmRlcnNjb3JlIHVzZXMgRVJCLXN0eWxlIHRl
bXBsYXRlIGRlbGltaXRlcnMsIGNoYW5nZSB0aGUKKyAgICAgICAgLy8gZm9sbG93aW5nIHRlbXBs
YXRlIHNldHRpbmdzIHRvIHVzZSBhbHRlcm5hdGl2ZSBkZWxpbWl0ZXJzLgorICAgICAgICBfLnRl
bXBsYXRlU2V0dGluZ3MgPSB7CisgICAgICAgICAgICBldmFsdWF0ZSAgICA6IC88JShbXHNcU10r
PyklPi9nLAorICAgICAgICAgICAgaW50ZXJwb2xhdGUgOiAvPCU9KFtcc1xTXSs/KSU+L2csCisg
ICAgICAgICAgICBlc2NhcGUgICAgICA6IC88JS0oW1xzXFNdKz8pJT4vZworICAgICAgICB9Owor
CisgICAgICAgIC8vIFdoZW4gY3VzdG9taXppbmcgYHRlbXBsYXRlU2V0dGluZ3NgLCBpZiB5b3Ug
ZG9uJ3Qgd2FudCB0byBkZWZpbmUgYW4KKyAgICAgICAgLy8gaW50ZXJwb2xhdGlvbiwgZXZhbHVh
dGlvbiBvciBlc2NhcGluZyByZWdleCwgd2UgbmVlZCBvbmUgdGhhdCBpcworICAgICAgICAvLyBn
dWFyYW50ZWVkIG5vdCB0byBtYXRjaC4KKyAgICAgICAgdmFyIG5vTWF0Y2ggPSAvKC4pXi87CisK
KyAgICAgICAgLy8gQ2VydGFpbiBjaGFyYWN0ZXJzIG5lZWQgdG8gYmUgZXNjYXBlZCBzbyB0aGF0
IHRoZXkgY2FuIGJlIHB1dCBpbnRvIGEKKyAgICAgICAgLy8gc3RyaW5nIGxpdGVyYWwuCisgICAg
ICAgIHZhciBlc2NhcGVzID0geworICAgICAgICAgICAgIiciOiAgICAgICInIiwKKyAgICAgICAg
ICAgICdcXCc6ICAgICAnXFwnLAorICAgICAgICAgICAgJ1xyJzogICAgICdyJywKKyAgICAgICAg
ICAgICdcbic6ICAgICAnbicsCisgICAgICAgICAgICAnXHQnOiAgICAgJ3QnLAorICAgICAgICAg
ICAgJ1x1MjAyOCc6ICd1MjAyOCcsCisgICAgICAgICAgICAnXHUyMDI5JzogJ3UyMDI5JworICAg
ICAgICB9OworCisgICAgICAgIHZhciBlc2NhcGVyID0gL1xcfCd8XHJ8XG58XHR8XHUyMDI4fFx1
MjAyOS9nOworCisgICAgICAgIC8vIEphdmFTY3JpcHQgbWljcm8tdGVtcGxhdGluZywgc2ltaWxh
ciB0byBKb2huIFJlc2lnJ3MgaW1wbGVtZW50YXRpb24uCisgICAgICAgIC8vIFVuZGVyc2NvcmUg
dGVtcGxhdGluZyBoYW5kbGVzIGFyYml0cmFyeSBkZWxpbWl0ZXJzLCBwcmVzZXJ2ZXMgd2hpdGVz
cGFjZSwKKyAgICAgICAgLy8gYW5kIGNvcnJlY3RseSBlc2NhcGVzIHF1b3RlcyB3aXRoaW4gaW50
ZXJwb2xhdGVkIGNvZGUuCisgICAgICAgIF8udGVtcGxhdGUgPSBmdW5jdGlvbih0ZXh0LCBkYXRh
LCBzZXR0aW5ncykgeworICAgICAgICAgICAgdmFyIHJlbmRlcjsKKyAgICAgICAgICAgIHNldHRp
bmdzID0gXy5kZWZhdWx0cyh7fSwgc2V0dGluZ3MsIF8udGVtcGxhdGVTZXR0aW5ncyk7CisKKyAg
ICAgICAgICAgIC8vIENvbWJpbmUgZGVsaW1pdGVycyBpbnRvIG9uZSByZWd1bGFyIGV4cHJlc3Np
b24gdmlhIGFsdGVybmF0aW9uLgorICAgICAgICAgICAgdmFyIG1hdGNoZXIgPSBuZXcgUmVnRXhw
KFsKKyAgICAgICAgICAgICAgICAoc2V0dGluZ3MuZXNjYXBlIHx8IG5vTWF0Y2gpLnNvdXJjZSwK
KyAgICAgICAgICAgICAgICAoc2V0dGluZ3MuaW50ZXJwb2xhdGUgfHwgbm9NYXRjaCkuc291cmNl
LAorICAgICAgICAgICAgICAgIChzZXR0aW5ncy5ldmFsdWF0ZSB8fCBub01hdGNoKS5zb3VyY2UK
KyAgICAgICAgICAgIF0uam9pbignfCcpICsgJ3wkJywgJ2cnKTsKKworICAgICAgICAgICAgLy8g
Q29tcGlsZSB0aGUgdGVtcGxhdGUgc291cmNlLCBlc2NhcGluZyBzdHJpbmcgbGl0ZXJhbHMgYXBw
cm9wcmlhdGVseS4KKyAgICAgICAgICAgIHZhciBpbmRleCA9IDA7CisgICAgICAgICAgICB2YXIg
c291cmNlID0gIl9fcCs9JyI7CisgICAgICAgICAgICB0ZXh0LnJlcGxhY2UobWF0Y2hlciwgZnVu
Y3Rpb24obWF0Y2gsIGVzY2FwZSwgaW50ZXJwb2xhdGUsIGV2YWx1YXRlLCBvZmZzZXQpIHsKKyAg
ICAgICAgICAgICAgICBzb3VyY2UgKz0gdGV4dC5zbGljZShpbmRleCwgb2Zmc2V0KQorICAgICAg
ICAgICAgICAgICAgICAucmVwbGFjZShlc2NhcGVyLCBmdW5jdGlvbihtYXRjaCkgeyByZXR1cm4g
J1xcJyArIGVzY2FwZXNbbWF0Y2hdOyB9KTsKKworICAgICAgICAgICAgICAgIGlmIChlc2NhcGUp
IHsKKyAgICAgICAgICAgICAgICAgICAgc291cmNlICs9ICInK1xuKChfX3Q9KCIgKyBlc2NhcGUg
KyAiKSk9PW51bGw/Jyc6Xy5lc2NhcGUoX190KSkrXG4nIjsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgaWYgKGludGVycG9sYXRlKSB7CisgICAgICAgICAgICAgICAgICAgIHNv
dXJjZSArPSAiJytcbigoX190PSgiICsgaW50ZXJwb2xhdGUgKyAiKSk9PW51bGw/Jyc6X190KStc
biciOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoZXZhbHVhdGUpIHsK
KyAgICAgICAgICAgICAgICAgICAgc291cmNlICs9ICInO1xuIiArIGV2YWx1YXRlICsgIlxuX19w
Kz0nIjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaW5kZXggPSBvZmZzZXQg
KyBtYXRjaC5sZW5ndGg7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoOworICAgICAgICAg
ICAgfSk7CisgICAgICAgICAgICBzb3VyY2UgKz0gIic7XG4iOworCisgICAgICAgICAgICAvLyBJ
ZiBhIHZhcmlhYmxlIGlzIG5vdCBzcGVjaWZpZWQsIHBsYWNlIGRhdGEgdmFsdWVzIGluIGxvY2Fs
IHNjb3BlLgorICAgICAgICAgICAgaWYgKCFzZXR0aW5ncy52YXJpYWJsZSkgc291cmNlID0gJ3dp
dGgob2JqfHx7fSl7XG4nICsgc291cmNlICsgJ31cbic7CisKKyAgICAgICAgICAgIHNvdXJjZSA9
ICJ2YXIgX190LF9fcD0nJyxfX2o9QXJyYXkucHJvdG90eXBlLmpvaW4sIiArCisgICAgICAgICAg
ICAgICAgInByaW50PWZ1bmN0aW9uKCl7X19wKz1fX2ouY2FsbChhcmd1bWVudHMsJycpO307XG4i
ICsKKyAgICAgICAgICAgICAgICBzb3VyY2UgKyAicmV0dXJuIF9fcDtcbiI7CisKKyAgICAgICAg
ICAgIHRyeSB7CisgICAgICAgICAgICAgICAgcmVuZGVyID0gbmV3IEZ1bmN0aW9uKHNldHRpbmdz
LnZhcmlhYmxlIHx8ICdvYmonLCAnXycsIHNvdXJjZSk7CisgICAgICAgICAgICB9IGNhdGNoIChl
KSB7CisgICAgICAgICAgICAgICAgZS5zb3VyY2UgPSBzb3VyY2U7CisgICAgICAgICAgICAgICAg
dGhyb3cgZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGRhdGEpIHJldHVybiBy
ZW5kZXIoZGF0YSwgXyk7CisgICAgICAgICAgICB2YXIgdGVtcGxhdGUgPSBmdW5jdGlvbihkYXRh
KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlbmRlci5jYWxsKHRoaXMsIGRhdGEsIF8pOwor
ICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgLy8gUHJvdmlkZSB0aGUgY29tcGlsZWQgZnVu
Y3Rpb24gc291cmNlIGFzIGEgY29udmVuaWVuY2UgZm9yIHByZWNvbXBpbGF0aW9uLgorICAgICAg
ICAgICAgdGVtcGxhdGUuc291cmNlID0gJ2Z1bmN0aW9uKCcgKyAoc2V0dGluZ3MudmFyaWFibGUg
fHwgJ29iaicpICsgJyl7XG4nICsgc291cmNlICsgJ30nOworCisgICAgICAgICAgICByZXR1cm4g
dGVtcGxhdGU7CisgICAgICAgIH07CisKKyAgICAgICAgcmV0dXJuIF87CisgICAgfSkoe30pOwor
CisgICAgaWYgKGxvY2F0aW9uLmhvc3RuYW1lID09PSAndG9kb212Yy5jb20nKSB7CisgICAgICAg
IChmdW5jdGlvbihpLHMsbyxnLHIsYSxtKXtpWydHb29nbGVBbmFseXRpY3NPYmplY3QnXT1yO2lb
cl09aVtyXXx8ZnVuY3Rpb24oKXsKKyAgICAgICAgKGlbcl0ucT1pW3JdLnF8fFtdKS5wdXNoKGFy
Z3VtZW50cyl9LGlbcl0ubD0xKm5ldyBEYXRlKCk7YT1zLmNyZWF0ZUVsZW1lbnQobyksCisgICAg
ICAgIG09cy5nZXRFbGVtZW50c0J5VGFnTmFtZShvKVswXTthLmFzeW5jPTE7YS5zcmM9ZzttLnBh
cmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsbSkKKyAgICAgICAgfSkod2luZG93LGRvY3VtZW50LCdz
Y3JpcHQnLCdodHRwczovL3d3dy5nb29nbGUtYW5hbHl0aWNzLmNvbS9hbmFseXRpY3MuanMnLCdn
YScpOworICAgICAgICBnYSgnY3JlYXRlJywgJ1VBLTMxMDgxMDYyLTEnLCAnYXV0bycpOworICAg
ICAgICBnYSgnc2VuZCcsICdwYWdldmlldycpOworICAgIH0KKyAgICAvKiBqc2hpbnQgaWdub3Jl
OmVuZCAqLworCisgICAgZnVuY3Rpb24gcmVkaXJlY3QoKSB7CisgICAgICAgIGlmIChsb2NhdGlv
bi5ob3N0bmFtZSA9PT0gJ3Rhc3RlanMuZ2l0aHViLmlvJykgeworICAgICAgICAgICAgbG9jYXRp
b24uaHJlZiA9IGxvY2F0aW9uLmhyZWYucmVwbGFjZSgndGFzdGVqcy5naXRodWIuaW8vdG9kb212
YycsICd0b2RvbXZjLmNvbScpOworICAgICAgICB9CisgICAgfQorCisgICAgZnVuY3Rpb24gZmlu
ZFJvb3QoKSB7CisgICAgICAgIHZhciBiYXNlID0gbG9jYXRpb24uaHJlZi5pbmRleE9mKCdleGFt
cGxlcy8nKTsKKyAgICAgICAgcmV0dXJuIGxvY2F0aW9uLmhyZWYuc3Vic3RyKDAsIGJhc2UpOwor
ICAgIH0KKworICAgIGZ1bmN0aW9uIGdldEZpbGUoZmlsZSwgY2FsbGJhY2spIHsKKyAgICAgICAg
aWYgKCFsb2NhdGlvbi5ob3N0KSB7CisgICAgICAgICAgICByZXR1cm4gY29uc29sZS5pbmZvKCdN
aXNzIHRoZSBpbmZvIGJhcj8gUnVuIFRvZG9NVkMgZnJvbSBhIHNlcnZlciB0byBhdm9pZCBhIGNy
b3NzLW9yaWdpbiBlcnJvci4nKTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciB4aHIgPSBuZXcg
WE1MSHR0cFJlcXVlc3QoKTsKKworICAgICAgICB4aHIub3BlbignR0VUJywgZmluZFJvb3QoKSAr
IGZpbGUsIHRydWUpOworICAgICAgICB4aHIuc2VuZCgpOworCisgICAgICAgIHhoci5vbmxvYWQg
PSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBpZiAoeGhyLnN0YXR1cyA9PT0gMjAwICYmIGNh
bGxiYWNrKSB7CisgICAgICAgICAgICAgICAgY2FsbGJhY2soeGhyLnJlc3BvbnNlVGV4dCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorCisgICAgZnVuY3Rpb24gTGVhcm4obGVh
cm5KU09OLCBjb25maWcpIHsKKyAgICAgICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIExlYXJuKSkg
eworICAgICAgICAgICAgcmV0dXJuIG5ldyBMZWFybihsZWFybkpTT04sIGNvbmZpZyk7CisgICAg
ICAgIH0KKworICAgICAgICB2YXIgdGVtcGxhdGUsIGZyYW1ld29yazsKKworICAgICAgICBpZiAo
dHlwZW9mIGxlYXJuSlNPTiAhPT0gJ29iamVjdCcpIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAg
ICAgICAgICAgICAgbGVhcm5KU09OID0gSlNPTi5wYXJzZShsZWFybkpTT04pOworICAgICAgICAg
ICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorCisgICAgICAgIGlmIChjb25maWcpIHsKKyAgICAgICAgICAgIHRlbXBsYXRl
ID0gY29uZmlnLnRlbXBsYXRlOworICAgICAgICAgICAgZnJhbWV3b3JrID0gY29uZmlnLmZyYW1l
d29yazsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdGVtcGxhdGUgJiYgbGVhcm5KU09OLnRl
bXBsYXRlcykgeworICAgICAgICAgICAgdGVtcGxhdGUgPSBsZWFybkpTT04udGVtcGxhdGVzLnRv
ZG9tdmM7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWZyYW1ld29yayAmJiBkb2N1bWVudC5x
dWVyeVNlbGVjdG9yKCdbZGF0YS1mcmFtZXdvcmtdJykpIHsKKyAgICAgICAgICAgIGZyYW1ld29y
ayA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLWZyYW1ld29ya10nKS5kYXRhc2V0LmZy
YW1ld29yazsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMudGVtcGxhdGUgPSB0ZW1wbGF0ZTsK
KworICAgICAgICBpZiAobGVhcm5KU09OLmJhY2tlbmQpIHsKKyAgICAgICAgICAgIHRoaXMuZnJh
bWV3b3JrSlNPTiA9IGxlYXJuSlNPTi5iYWNrZW5kOworICAgICAgICAgICAgdGhpcy5mcmFtZXdv
cmtKU09OLmlzc3VlTGFiZWwgPSBmcmFtZXdvcms7CisgICAgICAgICAgICB0aGlzLmFwcGVuZCh7
CisgICAgICAgICAgICAgICAgYmFja2VuZDogdHJ1ZQorICAgICAgICAgICAgfSk7CisgICAgICAg
IH0gZWxzZSBpZiAobGVhcm5KU09OW2ZyYW1ld29ya10pIHsKKyAgICAgICAgICAgIHRoaXMuZnJh
bWV3b3JrSlNPTiA9IGxlYXJuSlNPTltmcmFtZXdvcmtdOworICAgICAgICAgICAgdGhpcy5mcmFt
ZXdvcmtKU09OLmlzc3VlTGFiZWwgPSBmcmFtZXdvcms7CisgICAgICAgICAgICB0aGlzLmFwcGVu
ZCgpOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5mZXRjaElzc3VlQ291bnQoKTsKKyAgICB9
CisKKyAgICBMZWFybi5wcm90b3R5cGUuYXBwZW5kID0gZnVuY3Rpb24gKG9wdHMpIHsKKyAgICAg
ICAgdmFyIGFzaWRlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYXNpZGUnKTsKKyAgICAgICAg
YXNpZGUuaW5uZXJIVE1MID0gXy50ZW1wbGF0ZSh0aGlzLnRlbXBsYXRlLCB0aGlzLmZyYW1ld29y
a0pTT04pOworICAgICAgICBhc2lkZS5jbGFzc05hbWUgPSAnbGVhcm4nOworCisgICAgICAgIGlm
IChvcHRzICYmIG9wdHMuYmFja2VuZCkgeworICAgICAgICAgICAgLy8gUmVtb3ZlIGRlbW8gbGlu
aworICAgICAgICAgICAgdmFyIHNvdXJjZUxpbmtzID0gYXNpZGUucXVlcnlTZWxlY3RvcignLnNv
dXJjZS1saW5rcycpOworICAgICAgICAgICAgdmFyIGhlYWRpbmcgPSBzb3VyY2VMaW5rcy5maXJz
dEVsZW1lbnRDaGlsZDsKKyAgICAgICAgICAgIHZhciBzb3VyY2VMaW5rID0gc291cmNlTGlua3Mu
bGFzdEVsZW1lbnRDaGlsZDsKKyAgICAgICAgICAgIC8vIENvcnJlY3QgbGluayBwYXRoCisgICAg
ICAgICAgICB2YXIgaHJlZiA9IHNvdXJjZUxpbmsuZ2V0QXR0cmlidXRlKCdocmVmJyk7CisgICAg
ICAgICAgICBzb3VyY2VMaW5rLnNldEF0dHJpYnV0ZSgnaHJlZicsIGhyZWYuc3Vic3RyKGhyZWYu
bGFzdEluZGV4T2YoJ2h0dHAnKSkpOworICAgICAgICAgICAgc291cmNlTGlua3MuaW5uZXJIVE1M
ID0gaGVhZGluZy5vdXRlckhUTUwgKyBzb3VyY2VMaW5rLm91dGVySFRNTDsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIC8vIExvY2FsaXplIGRlbW8gbGlua3MKKyAgICAgICAgICAgIHZh
ciBkZW1vTGlua3MgPSBhc2lkZS5xdWVyeVNlbGVjdG9yQWxsKCcuZGVtby1saW5rJyk7CisgICAg
ICAgICAgICBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGRlbW9MaW5rcywgZnVuY3Rpb24g
KGRlbW9MaW5rKSB7CisgICAgICAgICAgICAgICAgaWYgKGRlbW9MaW5rLmdldEF0dHJpYnV0ZSgn
aHJlZicpLnN1YnN0cigwLCA0KSAhPT0gJ2h0dHAnKSB7CisgICAgICAgICAgICAgICAgICAgIGRl
bW9MaW5rLnNldEF0dHJpYnV0ZSgnaHJlZicsIGZpbmRSb290KCkgKyBkZW1vTGluay5nZXRBdHRy
aWJ1dGUoJ2hyZWYnKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSk7CisgICAg
ICAgIH0KKworICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSA9IChkb2N1bWVudC5ib2R5
LmNsYXNzTmFtZSArICcgbGVhcm4tYmFyJykudHJpbSgpOworICAgICAgICBkb2N1bWVudC5ib2R5
Lmluc2VydEFkamFjZW50SFRNTCgnYWZ0ZXJCZWdpbicsIGFzaWRlLm91dGVySFRNTCk7CisgICAg
fTsKKworICAgIExlYXJuLnByb3RvdHlwZS5mZXRjaElzc3VlQ291bnQgPSBmdW5jdGlvbiAoKSB7
CisgICAgICAgIHZhciBpc3N1ZUxpbmsgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaXNzdWUt
Y291bnQtbGluaycpOworICAgICAgICBpZiAoaXNzdWVMaW5rKSB7CisgICAgICAgICAgICB2YXIg
dXJsID0gaXNzdWVMaW5rLmhyZWYucmVwbGFjZSgnaHR0cHM6Ly9naXRodWIuY29tJywgJ2h0dHBz
Oi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MnKTsKKyAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1M
SHR0cFJlcXVlc3QoKTsKKyAgICAgICAgICAgIHhoci5vcGVuKCdHRVQnLCB1cmwsIHRydWUpOwor
ICAgICAgICAgICAgeGhyLm9ubG9hZCA9IGZ1bmN0aW9uIChlKSB7CisgICAgICAgICAgICAgICAg
dmFyIHBhcnNlZFJlc3BvbnNlID0gSlNPTi5wYXJzZShlLnRhcmdldC5yZXNwb25zZVRleHQpOwor
ICAgICAgICAgICAgICAgIGlmIChwYXJzZWRSZXNwb25zZSBpbnN0YW5jZW9mIEFycmF5KSB7Cisg
ICAgICAgICAgICAgICAgICAgIHZhciBjb3VudCA9IHBhcnNlZFJlc3BvbnNlLmxlbmd0aDsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGNvdW50ICE9PSAwKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBpc3N1ZUxpbmsuaW5uZXJIVE1MID0gJ1RoaXMgYXBwIGhhcyAnICsgY291bnQgKyAnIG9w
ZW4gaXNzdWVzJzsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdpc3N1ZS1jb3VudCcpLnN0eWxlLmRpc3BsYXkgPSAnaW5saW5lJzsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH07CisgICAgICAgICAg
ICB4aHIuc2VuZCgpOworICAgICAgICB9CisgICAgfTsKKworICAgIHJlZGlyZWN0KCk7CisgICAg
Z2V0RmlsZSgnbGVhcm4uanNvbicsIExlYXJuKTsKK30pKCk7CmRpZmYgLS1naXQgYS9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMv
dmFuaWxsYWpzL3BhY2thZ2UuanNvbiBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvcGFja2FnZS5qc29uCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjU4YzVhODA2M2Q5ZGEwOWVlNWI1Y2IyZTI3MzMxZGU2YjczMzBhMmQKLS0tIC9k
ZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL3BhY2thZ2UuanNvbgpAQCAtMCwwICsxLDEw
IEBACit7CisgICJwcml2YXRlIjogdHJ1ZSwKKyAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAidG9k
b212Yy1jb21tb24iOiAiXjEuMC4xIiwKKyAgICAidG9kb212Yy1hcHAtY3NzIjogIl4yLjAuMSIK
KyAgfSwKKyAgImRldkRlcGVuZGVuY2llcyI6IHsKKyAgICAiamFzbWluZS1jb3JlIjogIl4yLjAu
MCIKKyAgfQorfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307989</attachid>
            <date>2017-04-24 10:45:14 -0700</date>
            <delta_ts>2017-04-24 18:25:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170513-20170424104513.patch</filename>
            <type>text/plain</type>
            <size>101057</size>
            <attacher name="Addy Osmani">addyo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1NjgzCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGVjNDZiZjNlOGFh
MmIyMTYyMjE3ZWMxNDJiMGMzOWQwYTk5ZGFlZmMuLmMyOGExMjM0YmFlZmQzYTdiOTdmZTE5YzYw
MWQ4NTg2MTU2NjlmYmYgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTg4IEBACisyMDE3LTA0
LTI0ICBBZGR5IE9zbWFuaSAgPGFkZHlvc21hbmlAZ21haWwuY29tPgorCisgICAgICAgIFVwZGF0
ZSB0byBTcGVlZG9tZXRlciAyLjAgdy91cGRhdGVkIGZyYW1ld29ya3MgKyBuZXcgd29ya2xvYWRz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzA1MTMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KK1VwZGF0ZSB0aGUgU3BlZWRv
bWV0ZXIgPiBWYW5pbGxhIGFwcGxpY2F0aW9uIGltcGxlbWVudGF0aW9uIHRvIGxhdGVzdCBUb2Rv
TVZDLiBUaGlzIGNoYW5nZSBhbHNvIHN3aXRjaGVzIHRvIG5wbSBmb3IgcGFja2FnaW5nLgorCisg
ICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92
YW5pbGxhanMvYm93ZXIuanNvbjogUmVtb3ZlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9ib3dlcl9jb21wb25lbnRz
L3RvZG9tdmMtY29tbW9uL2Jhc2UuY3NzOiBSZW1vdmVkLgorICAgICAgICAqIFNwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL2Jvd2VyX2NvbXBv
bmVudHMvdG9kb212Yy1jb21tb24vYmFzZS5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBTcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9ib3dlcl9j
b21wb25lbnRzL3RvZG9tdmMtY29tbW9uL2JnLnBuZzogUmVtb3ZlZC4KKyAgICAgICAgKiBTcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9pbmRl
eC5odG1sOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEt
ZXhhbXBsZXMvdmFuaWxsYWpzL2pzL2FwcC5qczoKKyAgICAgICAgKFRvZG8pOgorICAgICAgICAo
c2V0Vmlldyk6CisgICAgICAgIChsb29rdXBJZCk6IERlbGV0ZWQuCisgICAgICAgICh0YXJnZXQu
Y2xhc3NOYW1lLmluZGV4T2YpOiBEZWxldGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL2pzL2NvbnRyb2xsZXIuanM6
CisgICAgICAgIChDb250cm9sbGVyKToKKyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLnNl
dFZpZXcpOgorICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUuc2hvd0FsbCk6CisgICAgICAg
IChDb250cm9sbGVyLnByb3RvdHlwZS5zaG93QWN0aXZlKToKKyAgICAgICAgKENvbnRyb2xsZXIu
cHJvdG90eXBlLnNob3dDb21wbGV0ZWQpOgorICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUu
YWRkSXRlbSk6CisgICAgICAgIChDb250cm9sbGVyLnByb3RvdHlwZS5lZGl0SXRlbSk6CisgICAg
ICAgIChDb250cm9sbGVyLnByb3RvdHlwZS5lZGl0SXRlbVNhdmUpOgorICAgICAgICAoQ29udHJv
bGxlci5wcm90b3R5cGUuZWRpdEl0ZW1DYW5jZWwpOgorICAgICAgICAoQ29udHJvbGxlci5wcm90
b3R5cGUucmVtb3ZlSXRlbSk6CisgICAgICAgIChDb250cm9sbGVyLnByb3RvdHlwZS5yZW1vdmVD
b21wbGV0ZWRJdGVtcyk6CisgICAgICAgIChDb250cm9sbGVyLnByb3RvdHlwZS50b2dnbGVDb21w
bGV0ZSk6CisgICAgICAgIChDb250cm9sbGVyLnByb3RvdHlwZS50b2dnbGVBbGwpOgorICAgICAg
ICAoQ29udHJvbGxlci5wcm90b3R5cGUuX3VwZGF0ZUNvdW50KToKKyAgICAgICAgKENvbnRyb2xs
ZXIucHJvdG90eXBlLl9maWx0ZXIpOgorICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUuX3Vw
ZGF0ZUZpbHRlclN0YXRlKToKKyAgICAgICAgKG9uU2F2ZUhhbmRsZXIpOiBEZWxldGVkLgorICAg
ICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUuX3RvZ2dsZUZyYW1lKTogRGVsZXRlZC4KKyAgICAg
ICAgKENvbnRyb2xsZXIucHJvdG90eXBlLl9nZXRDdXJyZW50UGFnZSk6IERlbGV0ZWQuCisgICAg
ICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5p
bGxhanMvanMvaGVscGVycy5qczoKKyAgICAgICAgKHdpbmRvdy5xcyk6CisgICAgICAgICh3aW5k
b3cucXNhKToKKyAgICAgICAgKHdpbmRvdy5vbik6CisgICAgICAgICh3aW5kb3cuZGVsZWdhdGUp
OgorICAgICAgICAod2luZG93LnBhcmVudCk6CisgICAgICAgIChPYmplY3QucHJvdG90eXBlLmVh
Y2gpOiBEZWxldGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3Zh
bmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL2pzL21vZGVsLmpzOgorICAgICAgICAoTW9kZWwpOgor
ICAgICAgICAoTW9kZWwucHJvdG90eXBlLmNyZWF0ZSk6CisgICAgICAgIChNb2RlbC5wcm90b3R5
cGUucmVhZCk6CisgICAgICAgIChNb2RlbC5wcm90b3R5cGUudXBkYXRlKToKKyAgICAgICAgKE1v
ZGVsLnByb3RvdHlwZS5yZW1vdmUpOgorICAgICAgICAoTW9kZWwucHJvdG90eXBlLnJlbW92ZUFs
bCk6CisgICAgICAgIChNb2RlbC5wcm90b3R5cGUuZ2V0Q291bnQpOgorICAgICAgICAqIFNwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL2pzL3N0
b3JlLmpzOgorICAgICAgICAoU3RvcmUucHJvdG90eXBlLmZpbmQpOgorICAgICAgICAoU3RvcmUu
cHJvdG90eXBlLmZpbmRBbGwpOgorICAgICAgICAoU3RvcmUucHJvdG90eXBlLnNhdmUpOgorICAg
ICAgICAoU3RvcmUucHJvdG90eXBlLnJlbW92ZSk6CisgICAgICAgIChTdG9yZS5wcm90b3R5cGUu
ZHJvcCk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1l
eGFtcGxlcy92YW5pbGxhanMvanMvdGVtcGxhdGUuanM6IEFkZGVkLgorICAgICAgICAoZXNjYXBl
SHRtbENoYXIpOgorICAgICAgICAoZXNjYXBlKToKKyAgICAgICAgKFRlbXBsYXRlKToKKyAgICAg
ICAgKFRlbXBsYXRlLnByb3RvdHlwZS5zaG93KToKKyAgICAgICAgKFRlbXBsYXRlLnByb3RvdHlw
ZS5pdGVtQ291bnRlcik6CisgICAgICAgIChUZW1wbGF0ZS5wcm90b3R5cGUuY2xlYXJDb21wbGV0
ZWRCdXR0b24pOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3Zhbmls
bGEtZXhhbXBsZXMvdmFuaWxsYWpzL2pzL3ZpZXcuanM6CisgICAgICAgIChWaWV3KToKKyAgICAg
ICAgKFZpZXcucHJvdG90eXBlLl9yZW1vdmVJdGVtKToKKyAgICAgICAgKFZpZXcucHJvdG90eXBl
Ll9jbGVhckNvbXBsZXRlZEJ1dHRvbik6CisgICAgICAgIChWaWV3LnByb3RvdHlwZS5fc2V0Rmls
dGVyKToKKyAgICAgICAgKFZpZXcucHJvdG90eXBlLl9lbGVtZW50Q29tcGxldGUpOgorICAgICAg
ICAoVmlldy5wcm90b3R5cGUuX2VkaXRJdGVtKToKKyAgICAgICAgKFZpZXcucHJvdG90eXBlLl9l
ZGl0SXRlbURvbmUpOgorICAgICAgICAodmlld0NvbW1hbmRzLnNob3dFbnRyaWVzKToKKyAgICAg
ICAgKHZpZXdDb21tYW5kcy5yZW1vdmVJdGVtKToKKyAgICAgICAgKHZpZXdDb21tYW5kcy51cGRh
dGVFbGVtZW50Q291bnQpOgorICAgICAgICAodmlld0NvbW1hbmRzLmNsZWFyQ29tcGxldGVkQnV0
dG9uKToKKyAgICAgICAgKHZpZXdDb21tYW5kcy5jb250ZW50QmxvY2tWaXNpYmlsaXR5KToKKyAg
ICAgICAgKHZpZXdDb21tYW5kcy50b2dnbGVBbGwpOgorICAgICAgICAodmlld0NvbW1hbmRzLnNl
dEZpbHRlcik6CisgICAgICAgICh2aWV3Q29tbWFuZHMuY2xlYXJOZXdUb2RvKToKKyAgICAgICAg
KHZpZXdDb21tYW5kcy5lbGVtZW50Q29tcGxldGUpOgorICAgICAgICAodmlld0NvbW1hbmRzLmVk
aXRJdGVtKToKKyAgICAgICAgKHZpZXdDb21tYW5kcy5lZGl0SXRlbURvbmUpOgorICAgICAgICAo
Vmlldy5wcm90b3R5cGUucmVuZGVyKToKKyAgICAgICAgKFZpZXcucHJvdG90eXBlLl9pdGVtSWQp
OgorICAgICAgICAoVmlldy5wcm90b3R5cGUuX2JpbmRJdGVtRWRpdERvbmUpOgorICAgICAgICAo
Vmlldy5wcm90b3R5cGUuX2JpbmRJdGVtRWRpdENhbmNlbCk6CisgICAgICAgIChWaWV3LnByb3Rv
dHlwZS5iaW5kKToKKyAgICAgICAgKFZpZXcucHJvdG90eXBlLnNob3cpOiBEZWxldGVkLgorICAg
ICAgICAoVmlldy5wcm90b3R5cGUuaXRlbUNvdW50ZXIpOiBEZWxldGVkLgorICAgICAgICAoVmll
dy5wcm90b3R5cGUuY2xlYXJDb21wbGV0ZWRCdXR0b24pOiBEZWxldGVkLgorICAgICAgICAqIFNw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL25v
ZGVfbW9kdWxlcy90b2RvbXZjLWFwcC1jc3MvaW5kZXguY3NzOiBBZGRlZC4KKyAgICAgICAgKGh0
bWwsKToKKyAgICAgICAgKGJ1dHRvbik6CisgICAgICAgIChib2R5KToKKyAgICAgICAgKGJ1dHRv
biwpOgorICAgICAgICAoLmhpZGRlbik6CisgICAgICAgICgudG9kb2FwcCk6CisgICAgICAgICgu
dG9kb2FwcCBpbnB1dDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlcik6CisgICAgICAgICgudG9k
b2FwcCBpbnB1dDo6LW1vei1wbGFjZWhvbGRlcik6CisgICAgICAgICgudG9kb2FwcCBpbnB1dDo6
aW5wdXQtcGxhY2Vob2xkZXIpOgorICAgICAgICAoLnRvZG9hcHAgaDEpOgorICAgICAgICAoLm5l
dy10b2RvLCk6CisgICAgICAgICgubmV3LXRvZG8pOgorICAgICAgICAoLm1haW4pOgorICAgICAg
ICAobGFiZWxbZm9yPSd0b2dnbGUtYWxsJ10pOgorICAgICAgICAoLnRvZ2dsZS1hbGwpOgorICAg
ICAgICAoLnRvZ2dsZS1hbGw6YmVmb3JlKToKKyAgICAgICAgKC50b2dnbGUtYWxsOmNoZWNrZWQ6
YmVmb3JlKToKKyAgICAgICAgKC50b2RvLWxpc3QpOgorICAgICAgICAoLnRvZG8tbGlzdCBsaSk6
CisgICAgICAgICgudG9kby1saXN0IGxpOmxhc3QtY2hpbGQpOgorICAgICAgICAoLnRvZG8tbGlz
dCBsaS5lZGl0aW5nKToKKyAgICAgICAgKC50b2RvLWxpc3QgbGkuZWRpdGluZyAuZWRpdCk6Cisg
ICAgICAgICgudG9kby1saXN0IGxpLmVkaXRpbmcgLnZpZXcpOgorICAgICAgICAoLnRvZG8tbGlz
dCBsaSAudG9nZ2xlKToKKyAgICAgICAgKC50b2RvLWxpc3QgbGkgLnRvZ2dsZTphZnRlcik6Cisg
ICAgICAgICgudG9kby1saXN0IGxpIC50b2dnbGU6Y2hlY2tlZDphZnRlcik6CisgICAgICAgICgu
dG9kby1saXN0IGxpIGxhYmVsKToKKyAgICAgICAgKC50b2RvLWxpc3QgbGkuY29tcGxldGVkIGxh
YmVsKToKKyAgICAgICAgKC50b2RvLWxpc3QgbGkgLmRlc3Ryb3kpOgorICAgICAgICAoLnRvZG8t
bGlzdCBsaSAuZGVzdHJveTpob3Zlcik6CisgICAgICAgICgudG9kby1saXN0IGxpIC5kZXN0cm95
OmFmdGVyKToKKyAgICAgICAgKC50b2RvLWxpc3QgbGk6aG92ZXIgLmRlc3Ryb3kpOgorICAgICAg
ICAoLnRvZG8tbGlzdCBsaSAuZWRpdCk6CisgICAgICAgICgudG9kby1saXN0IGxpLmVkaXRpbmc6
bGFzdC1jaGlsZCk6CisgICAgICAgICguZm9vdGVyKToKKyAgICAgICAgKC5mb290ZXI6YmVmb3Jl
KToKKyAgICAgICAgKC50b2RvLWNvdW50KToKKyAgICAgICAgKC50b2RvLWNvdW50IHN0cm9uZyk6
CisgICAgICAgICguZmlsdGVycyk6CisgICAgICAgICguZmlsdGVycyBsaSk6CisgICAgICAgICgu
ZmlsdGVycyBsaSBhKToKKyAgICAgICAgKC5maWx0ZXJzIGxpIGEuc2VsZWN0ZWQsKToKKyAgICAg
ICAgKC5maWx0ZXJzIGxpIGEuc2VsZWN0ZWQpOgorICAgICAgICAoLmNsZWFyLWNvbXBsZXRlZCwp
OgorICAgICAgICAoLmNsZWFyLWNvbXBsZXRlZDpob3Zlcik6CisgICAgICAgICguaW5mbyk6Cisg
ICAgICAgICguaW5mbyBwKToKKyAgICAgICAgKC5pbmZvIGEpOgorICAgICAgICAoLmluZm8gYTpo
b3Zlcik6CisgICAgICAgIChAbWVkaWEgc2NyZWVuIGFuZCAoLXdlYmtpdC1taW4tZGV2aWNlLXBp
eGVsLXJhdGlvOjApKToKKyAgICAgICAgKC50b2dnbGUtYWxsLCk6CisgICAgICAgIChAbWVkaWEg
KG1heC13aWR0aDogNDMwcHgpKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9ub2RlX21vZHVsZXMvdG9kb212Yy1jb21t
b24vYmFzZS5jc3M6IEFkZGVkLgorICAgICAgICAoaHIpOgorICAgICAgICAoLmxlYXJuIGEpOgor
ICAgICAgICAoLmxlYXJuIGE6aG92ZXIpOgorICAgICAgICAoLmxlYXJuIGgzLCk6CisgICAgICAg
ICgubGVhcm4gaDMpOgorICAgICAgICAoLmxlYXJuIGg0KToKKyAgICAgICAgKC5sZWFybiBoNSk6
CisgICAgICAgICgubGVhcm4gdWwpOgorICAgICAgICAoLmxlYXJuIGxpKToKKyAgICAgICAgKC5s
ZWFybiBwKToKKyAgICAgICAgKCNpc3N1ZS1jb3VudCk6CisgICAgICAgICgucXVvdGUpOgorICAg
ICAgICAoLnF1b3RlIHApOgorICAgICAgICAoLnF1b3RlIHA6YmVmb3JlKToKKyAgICAgICAgKC5x
dW90ZSBwOmFmdGVyKToKKyAgICAgICAgKC5xdW90ZSBmb290ZXIpOgorICAgICAgICAoLnF1b3Rl
IGZvb3RlciBpbWcpOgorICAgICAgICAoLnF1b3RlIGZvb3RlciBhKToKKyAgICAgICAgKC5zcGVl
Y2gtYnViYmxlKToKKyAgICAgICAgKC5zcGVlY2gtYnViYmxlOmFmdGVyKToKKyAgICAgICAgKC5s
ZWFybi1iYXIgPiAubGVhcm4pOgorICAgICAgICAoQG1lZGlhIChtaW4td2lkdGg6IDg5OXB4KSk6
CisgICAgICAgICgubGVhcm4tYmFyKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9ub2RlX21vZHVsZXMvdG9kb212Yy1j
b21tb24vYmFzZS5qczogQWRkZWQuCisgICAgICAgIChfLmRlZmF1bHRzKToKKyAgICAgICAgKHRl
bXBsYXRlKToKKyAgICAgICAgKGVzY2FwZXIuXy50ZW1wbGF0ZSk6CisgICAgICAgIChfKToKKyAg
ICAgICAgKGxvY2F0aW9uLmhvc3RuYW1lLnN0cmluZ19hcHBlYXJlZF9oZXJlLmkuci5pLnIpOgor
ICAgICAgICAocmVkaXJlY3QpOgorICAgICAgICAoZmluZFJvb3QpOgorICAgICAgICAoeGhyLm9u
bG9hZCk6CisgICAgICAgIChnZXRGaWxlKToKKyAgICAgICAgKExlYXJuKToKKyAgICAgICAgKExl
YXJuLnByb3RvdHlwZS5hcHBlbmQpOgorICAgICAgICAoTGVhcm4ucHJvdG90eXBlLmZldGNoSXNz
dWVDb3VudCk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxs
YS1leGFtcGxlcy92YW5pbGxhanMvcGFja2FnZS5qc29uOiBBZGRlZC4KKwogMjAxNy0wNC0yMSAg
WmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFNpbXBsZSBsaW5lIGxh
eW91dDogQWRkIHBlcmZvcm1hbmNlIHRlc3QgdG8gbWVhc3VyZSBtaWQtd29yZCBsaW5lIGJyZWFr
aW5nIHdpdGggbG9uZyB0ZXh0LgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9ib3dlci5q
c29uIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5p
bGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9ib3dlci5qc29uCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwOGUzYmNlZTBjNmVlMDZjZmVlZmZkNDlmZGUzYzgwNzcyYTk3MTc5Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMv
Ym93ZXIuanNvbgorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotewotICAgICJuYW1lIjog
InRvZG9tdmMtdmFuaWxsYWpzIiwKLSAgICAidmVyc2lvbiI6ICIwLjAuMCIsCi0gICAgImRlcGVu
ZGVuY2llcyI6IHsKLSAgICAidG9kb212Yy1jb21tb24iOiAifjAuMS40IgotICAgIH0KLX0KZGlm
ZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
dmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvYm93ZXJfY29tcG9uZW50cy90b2RvbXZjLWNvbW1v
bi9iYXNlLmNzcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvYm93ZXJfY29tcG9uZW50cy90b2RvbXZjLWNv
bW1vbi9iYXNlLmNzcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzM3Y2Q5Y2M4Yzdl
MDdlNDY5MWQ0ZWUxYmFhNzAyZTQ5OTNjYTIxYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL2Jvd2VyX2NvbXBvbmVudHMvdG9k
b212Yy1jb21tb24vYmFzZS5jc3MKKysrIC9kZXYvbnVsbApAQCAtMSw1NTQgKzAsMCBAQAotaHRt
bCwKLWJvZHkgewotICAgIG1hcmdpbjogMDsKLSAgICBwYWRkaW5nOiAwOwotfQotCi1idXR0b24g
ewotICAgIG1hcmdpbjogMDsKLSAgICBwYWRkaW5nOiAwOwotICAgIGJvcmRlcjogMDsKLSAgICBi
YWNrZ3JvdW5kOiBub25lOwotICAgIGZvbnQtc2l6ZTogMTAwJTsKLSAgICB2ZXJ0aWNhbC1hbGln
bjogYmFzZWxpbmU7Ci0gICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7Ci0gICAgY29sb3I6IGluaGVy
aXQ7Ci0gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwotICAgIC8qLW1vei1hcHBlYXJhbmNl
OiBub25lOyovCi0gICAgLW1zLWFwcGVhcmFuY2U6IG5vbmU7Ci0gICAgLW8tYXBwZWFyYW5jZTog
bm9uZTsKLSAgICBhcHBlYXJhbmNlOiBub25lOwotfQotCi1ib2R5IHsKLSAgICBmb250OiAxNHB4
ICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7Ci0gICAgbGlu
ZS1oZWlnaHQ6IDEuNGVtOwotICAgIGJhY2tncm91bmQ6ICNlYWVhZWEgdXJsKCdiZy5wbmcnKTsK
LSAgICBjb2xvcjogIzRkNGQ0ZDsKLSAgICB3aWR0aDogNTUwcHg7Ci0gICAgbWFyZ2luOiAwIGF1
dG87Ci0gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7Ci0gICAgLW1vei1m
b250LXNtb290aGluZzogYW50aWFsaWFzZWQ7Ci0gICAgLW1zLWZvbnQtc21vb3RoaW5nOiBhbnRp
YWxpYXNlZDsKLSAgICAtby1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7Ci0gICAgZm9udC1z
bW9vdGhpbmc6IGFudGlhbGlhc2VkOwotfQotCi0jdG9kb2FwcCB7Ci0gICAgYmFja2dyb3VuZDog
I2ZmZjsKLSAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSk7Ci0gICAgbWFy
Z2luOiAxMzBweCAwIDQwcHggMDsKLSAgICBib3JkZXI6IDFweCBzb2xpZCAjY2NjOwotICAgIHBv
c2l0aW9uOiByZWxhdGl2ZTsKLSAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAycHg7Ci0gICAg
Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDJweDsKLSAgICBib3gtc2hhZG93OiAwIDJweCA2cHgg
MCByZ2JhKDAsIDAsIDAsIDAuMiksCi0gICAgMCAyNXB4IDUwcHggMCByZ2JhKDAsIDAsIDAsIDAu
MTUpOwotfQotCi0jdG9kb2FwcDpiZWZvcmUgewotICAgIGNvbnRlbnQ6ICcnOwotICAgIGJvcmRl
ci1sZWZ0OiAxcHggc29saWQgI2Y1ZDZkNjsKLSAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAj
ZjVkNmQ2OwotICAgIHdpZHRoOiAycHg7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHRv
cDogMDsKLSAgICBsZWZ0OiA0MHB4OwotICAgIGhlaWdodDogMTAwJTsKLX0KLQotI3RvZG9hcHAg
aW5wdXQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIgewotICAgIGZvbnQtc3R5bGU6IGl0YWxp
YzsKLX0KLQotI3RvZG9hcHAgaW5wdXQ6Oi1tb3otcGxhY2Vob2xkZXIgewotICAgIGZvbnQtc3R5
bGU6IGl0YWxpYzsKLSAgICBjb2xvcjogI2E5YTlhOTsKLX0KLQotI3RvZG9hcHAgaDEgewotICAg
IHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICB0b3A6IC0xMjBweDsKLSAgICB3aWR0aDogMTAwJTsK
LSAgICBmb250LXNpemU6IDcwcHg7Ci0gICAgZm9udC13ZWlnaHQ6IGJvbGQ7Ci0gICAgdGV4dC1h
bGlnbjogY2VudGVyOwotICAgIGNvbG9yOiAjYjNiM2IzOwotICAgIGNvbG9yOiByZ2JhKDI1NSwg
MjU1LCAyNTUsIDAuMyk7Ci0gICAgdGV4dC1zaGFkb3c6IC0xcHggLTFweCByZ2JhKDAsIDAsIDAs
IDAuMik7Ci0gICAgLXdlYmtpdC10ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5Owot
ICAgIC1tb3otdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTsKLSAgICAtbXMtdGV4
dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTsKLSAgICAtby10ZXh0LXJlbmRlcmluZzog
b3B0aW1pemVMZWdpYmlsaXR5OwotICAgIHRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxp
dHk7Ci19Ci0KLSNoZWFkZXIgewotICAgIHBhZGRpbmctdG9wOiAxNXB4OwotICAgIGJvcmRlci1y
YWRpdXM6IGluaGVyaXQ7Ci19Ci0KLSNoZWFkZXI6YmVmb3JlIHsKLSAgICBjb250ZW50OiAnJzsK
LSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgdG9wOiAwOwotICAgIHJpZ2h0OiAwOwotICAg
IGxlZnQ6IDA7Ci0gICAgaGVpZ2h0OiAxNXB4OwotICAgIHotaW5kZXg6IDI7Ci0gICAgYm9yZGVy
LWJvdHRvbTogMXB4IHNvbGlkICM2YzYxNWM7Ci0gICAgYmFja2dyb3VuZDogIzhkN2Q3NzsKLSAg
ICBiYWNrZ3JvdW5kOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90
dG9tLCBmcm9tKHJnYmEoMTMyLCAxMTAsIDEwMCwgMC44KSksdG8ocmdiYSgxMDEsIDg0LCA3Niwg
MC44KSkpOwotICAgIGJhY2tncm91bmQ6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgcmdi
YSgxMzIsIDExMCwgMTAwLCAwLjgpLCByZ2JhKDEwMSwgODQsIDc2LCAwLjgpKTsKLSAgICBiYWNr
Z3JvdW5kOiAtbW96LWxpbmVhci1ncmFkaWVudCh0b3AsIHJnYmEoMTMyLCAxMTAsIDEwMCwgMC44
KSwgcmdiYSgxMDEsIDg0LCA3NiwgMC44KSk7Ci0gICAgYmFja2dyb3VuZDogLW8tbGluZWFyLWdy
YWRpZW50KHRvcCwgcmdiYSgxMzIsIDExMCwgMTAwLCAwLjgpLCByZ2JhKDEwMSwgODQsIDc2LCAw
LjgpKTsKLSAgICBiYWNrZ3JvdW5kOiAtbXMtbGluZWFyLWdyYWRpZW50KHRvcCwgcmdiYSgxMzIs
IDExMCwgMTAwLCAwLjgpLCByZ2JhKDEwMSwgODQsIDc2LCAwLjgpKTsKLSAgICBiYWNrZ3JvdW5k
OiBsaW5lYXItZ3JhZGllbnQodG9wLCByZ2JhKDEzMiwgMTEwLCAxMDAsIDAuOCksIHJnYmEoMTAx
LCA4NCwgNzYsIDAuOCkpOwotICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDFweDsKLSAgICBi
b3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMXB4OwotfQotCi0jbmV3LXRvZG8sCi0uZWRpdCB7Ci0g
ICAgcG9zaXRpb246IHJlbGF0aXZlOwotICAgIG1hcmdpbjogMDsKLSAgICB3aWR0aDogMTAwJTsK
LSAgICBmb250LXNpemU6IDI0cHg7Ci0gICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7Ci0gICAgbGlu
ZS1oZWlnaHQ6IDEuNGVtOwotICAgIGJvcmRlcjogMDsKLSAgICBvdXRsaW5lOiBub25lOwotICAg
IGNvbG9yOiBpbmhlcml0OwotICAgIHBhZGRpbmc6IDZweDsKLSAgICBib3JkZXI6IDFweCBzb2xp
ZCAjOTk5OwotICAgIGJveC1zaGFkb3c6IGluc2V0IDAgLTFweCA1cHggMCByZ2JhKDAsIDAsIDAs
IDAuMik7Ci0gICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94OwotICAgIC1tb3otYm94
LXNpemluZzogYm9yZGVyLWJveDsKLSAgICAtbXMtYm94LXNpemluZzogYm9yZGVyLWJveDsKLSAg
ICAtby1ib3gtc2l6aW5nOiBib3JkZXItYm94OwotICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7
Ci0gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7Ci0gICAgLW1vei1mb250
LXNtb290aGluZzogYW50aWFsaWFzZWQ7Ci0gICAgLW1zLWZvbnQtc21vb3RoaW5nOiBhbnRpYWxp
YXNlZDsKLSAgICAtby1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7Ci0gICAgZm9udC1zbW9v
dGhpbmc6IGFudGlhbGlhc2VkOwotfQotCi0jbmV3LXRvZG8gewotICAgIHBhZGRpbmc6IDE2cHgg
MTZweCAxNnB4IDYwcHg7Ci0gICAgYm9yZGVyOiBub25lOwotICAgIGJhY2tncm91bmQ6IHJnYmEo
MCwgMCwgMCwgMC4wMik7Ci0gICAgei1pbmRleDogMjsKLSAgICBib3gtc2hhZG93OiBub25lOwot
fQotCi0jbWFpbiB7Ci0gICAgcG9zaXRpb246IHJlbGF0aXZlOwotICAgIHotaW5kZXg6IDI7Ci0g
ICAgYm9yZGVyLXRvcDogMXB4IGRvdHRlZCAjYWRhZGFkOwotfQotCi1sYWJlbFtmb3I9J3RvZ2ds
ZS1hbGwnXSB7Ci0gICAgZGlzcGxheTogbm9uZTsKLX0KLQotI3RvZ2dsZS1hbGwgewotICAgIHBv
c2l0aW9uOiBhYnNvbHV0ZTsKLSAgICB0b3A6IC00MnB4OwotICAgIGxlZnQ6IC00cHg7Ci0gICAg
d2lkdGg6IDQwcHg7Ci0gICAgdGV4dC1hbGlnbjogY2VudGVyOwotICAgIGJvcmRlcjogbm9uZTsg
LyogTW9iaWxlIFNhZmFyaSAqLwotfQotCi0jdG9nZ2xlLWFsbDpiZWZvcmUgewotICAgIGNvbnRl
bnQ6ICfCuyc7Ci0gICAgZm9udC1zaXplOiAyOHB4OwotICAgIGNvbG9yOiAjZDlkOWQ5OwotICAg
IHBhZGRpbmc6IDAgMjVweCA3cHg7Ci19Ci0KLSN0b2dnbGUtYWxsOmNoZWNrZWQ6YmVmb3JlIHsK
LSAgICBjb2xvcjogIzczNzM3MzsKLX0KLQotI3RvZG8tbGlzdCB7Ci0gICAgbWFyZ2luOiAwOwot
ICAgIHBhZGRpbmc6IDA7Ci0gICAgbGlzdC1zdHlsZTogbm9uZTsKLX0KLQotI3RvZG8tbGlzdCBs
aSB7Ci0gICAgcG9zaXRpb246IHJlbGF0aXZlOwotICAgIGZvbnQtc2l6ZTogMjRweDsKLSAgICBi
b3JkZXItYm90dG9tOiAxcHggZG90dGVkICNjY2M7Ci19Ci0KLSN0b2RvLWxpc3QgbGk6bGFzdC1j
aGlsZCB7Ci0gICAgYm9yZGVyLWJvdHRvbTogbm9uZTsKLX0KLQotI3RvZG8tbGlzdCBsaS5lZGl0
aW5nIHsKLSAgICBib3JkZXItYm90dG9tOiBub25lOwotICAgIHBhZGRpbmc6IDA7Ci19Ci0KLSN0
b2RvLWxpc3QgbGkuZWRpdGluZyAuZWRpdCB7Ci0gICAgZGlzcGxheTogYmxvY2s7Ci0gICAgd2lk
dGg6IDUwNnB4OwotICAgIHBhZGRpbmc6IDEzcHggMTdweCAxMnB4IDE3cHg7Ci0gICAgbWFyZ2lu
OiAwIDAgMCA0M3B4OwotfQotCi0jdG9kby1saXN0IGxpLmVkaXRpbmcgLnZpZXcgewotICAgIGRp
c3BsYXk6IG5vbmU7Ci19Ci0KLSN0b2RvLWxpc3QgbGkgLnRvZ2dsZSB7Ci0gICAgdGV4dC1hbGln
bjogY2VudGVyOwotICAgIHdpZHRoOiA0MHB4OwotICAgIC8qIGF1dG8sIHNpbmNlIG5vbi1XZWJL
aXQgYnJvd3NlcnMgZG9lc24ndCBzdXBwb3J0IGlucHV0IHN0eWxpbmcgKi8KLSAgICBoZWlnaHQ6
IGF1dG87Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHRvcDogMDsKLSAgICBib3R0b206
IDA7Ci0gICAgbWFyZ2luOiBhdXRvIDA7Ci0gICAgYm9yZGVyOiBub25lOyAvKiBNb2JpbGUgU2Fm
YXJpICovCi0gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwotICAgIC8qLW1vei1hcHBlYXJh
bmNlOiBub25lOyovCi0gICAgLW1zLWFwcGVhcmFuY2U6IG5vbmU7Ci0gICAgLW8tYXBwZWFyYW5j
ZTogbm9uZTsKLSAgICBhcHBlYXJhbmNlOiBub25lOwotfQotCi0jdG9kby1saXN0IGxpIC50b2dn
bGU6YWZ0ZXIgewotICAgIGNvbnRlbnQ6ICfinJQnOwotICAgIGxpbmUtaGVpZ2h0OiA0M3B4OyAv
KiA0MCArIGEgY291cGxlIG9mIHBpeGVscyB2aXN1YWwgYWRqdXN0bWVudCAqLwotICAgIGZvbnQt
c2l6ZTogMjBweDsKLSAgICBjb2xvcjogI2Q5ZDlkOTsKLSAgICB0ZXh0LXNoYWRvdzogMCAtMXB4
IDAgI2JmYmZiZjsKLX0KLQotI3RvZG8tbGlzdCBsaSAudG9nZ2xlOmNoZWNrZWQ6YWZ0ZXIgewot
ICAgIGNvbG9yOiAjODVhZGE3OwotICAgIHRleHQtc2hhZG93OiAwIDFweCAwICM2Njk5OTE7Ci0g
ICAgYm90dG9tOiAxcHg7Ci0gICAgcG9zaXRpb246IHJlbGF0aXZlOwotfQotCi0jdG9kby1saXN0
IGxpIGxhYmVsIHsKLSAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkOwotICAgIHBhZGRpbmc6IDE1
cHg7Ci0gICAgbWFyZ2luLWxlZnQ6IDQ1cHg7Ci0gICAgZGlzcGxheTogYmxvY2s7Ci0gICAgbGlu
ZS1oZWlnaHQ6IDEuMjsKLSAgICAtd2Via2l0LXRyYW5zaXRpb246IGNvbG9yIDAuNHM7Ci0gICAg
LW1vei10cmFuc2l0aW9uOiBjb2xvciAwLjRzOwotICAgIC1tcy10cmFuc2l0aW9uOiBjb2xvciAw
LjRzOwotICAgIC1vLXRyYW5zaXRpb246IGNvbG9yIDAuNHM7Ci0gICAgdHJhbnNpdGlvbjogY29s
b3IgMC40czsKLX0KLQotI3RvZG8tbGlzdCBsaS5jb21wbGV0ZWQgbGFiZWwgewotICAgIGNvbG9y
OiAjYTlhOWE5OwotICAgIHRleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdoOwotfQotCi0jdG9k
by1saXN0IGxpIC5kZXN0cm95IHsKLSAgICBkaXNwbGF5OiBub25lOwotICAgIHBvc2l0aW9uOiBh
YnNvbHV0ZTsKLSAgICB0b3A6IDA7Ci0gICAgcmlnaHQ6IDEwcHg7Ci0gICAgYm90dG9tOiAwOwot
ICAgIHdpZHRoOiA0MHB4OwotICAgIGhlaWdodDogNDBweDsKLSAgICBtYXJnaW46IGF1dG8gMDsK
LSAgICBmb250LXNpemU6IDIycHg7Ci0gICAgY29sb3I6ICNhODhhOGE7Ci0gICAgLXdlYmtpdC10
cmFuc2l0aW9uOiBhbGwgMC4yczsKLSAgICAtbW96LXRyYW5zaXRpb246IGFsbCAwLjJzOwotICAg
IC1tcy10cmFuc2l0aW9uOiBhbGwgMC4yczsKLSAgICAtby10cmFuc2l0aW9uOiBhbGwgMC4yczsK
LSAgICB0cmFuc2l0aW9uOiBhbGwgMC4yczsKLX0KLQotI3RvZG8tbGlzdCBsaSAuZGVzdHJveTpo
b3ZlciB7Ci0gICAgdGV4dC1zaGFkb3c6IDAgMCAxcHggIzAwMCwKLSAgICAgMCAwIDEwcHggcmdi
YSgxOTksIDEwNywgMTA3LCAwLjgpOwotICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxLjMp
OwotICAgIC1tb3otdHJhbnNmb3JtOiBzY2FsZSgxLjMpOwotICAgIC1tcy10cmFuc2Zvcm06IHNj
YWxlKDEuMyk7Ci0gICAgLW8tdHJhbnNmb3JtOiBzY2FsZSgxLjMpOwotICAgIHRyYW5zZm9ybTog
c2NhbGUoMS4zKTsKLX0KLQotI3RvZG8tbGlzdCBsaSAuZGVzdHJveTphZnRlciB7Ci0gICAgY29u
dGVudDogJ+Kclic7Ci19Ci0KLSN0b2RvLWxpc3QgbGk6aG92ZXIgLmRlc3Ryb3kgewotICAgIGRp
c3BsYXk6IGJsb2NrOwotfQotCi0jdG9kby1saXN0IGxpIC5lZGl0IHsKLSAgICBkaXNwbGF5OiBu
b25lOwotfQotCi0jdG9kby1saXN0IGxpLmVkaXRpbmc6bGFzdC1jaGlsZCB7Ci0gICAgbWFyZ2lu
LWJvdHRvbTogLTFweDsKLX0KLQotI2Zvb3RlciB7Ci0gICAgY29sb3I6ICM3Nzc7Ci0gICAgcGFk
ZGluZzogMCAxNXB4OwotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICByaWdodDogMDsKLSAg
ICBib3R0b206IC0zMXB4OwotICAgIGxlZnQ6IDA7Ci0gICAgaGVpZ2h0OiAyMHB4OwotICAgIHot
aW5kZXg6IDE7Ci0gICAgdGV4dC1hbGlnbjogY2VudGVyOwotfQotCi0jZm9vdGVyOmJlZm9yZSB7
Ci0gICAgY29udGVudDogJyc7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHJpZ2h0OiAw
OwotICAgIGJvdHRvbTogMzFweDsKLSAgICBsZWZ0OiAwOwotICAgIGhlaWdodDogNTBweDsKLSAg
ICB6LWluZGV4OiAtMTsKLSAgICBib3gtc2hhZG93OiAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAw
LjMpLAotICAgIDAgNnB4IDAgLTNweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCksCi0gICAgMCA3
cHggMXB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjMpLAotICAgIDAgNDNweCAwIC02cHggcmdiYSgy
NTUsIDI1NSwgMjU1LCAwLjgpLAotICAgIDAgNDRweCAycHggLTZweCByZ2JhKDAsIDAsIDAsIDAu
Mik7Ci19Ci0KLSN0b2RvLWNvdW50IHsKLSAgICBmbG9hdDogbGVmdDsKLSAgICB0ZXh0LWFsaWdu
OiBsZWZ0OwotfQotCi0jZmlsdGVycyB7Ci0gICAgbWFyZ2luOiAwOwotICAgIHBhZGRpbmc6IDA7
Ci0gICAgbGlzdC1zdHlsZTogbm9uZTsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgcmln
aHQ6IDA7Ci0gICAgbGVmdDogMDsKLX0KLQotI2ZpbHRlcnMgbGkgewotICAgIGRpc3BsYXk6IGlu
bGluZTsKLX0KLQotI2ZpbHRlcnMgbGkgYSB7Ci0gICAgY29sb3I6ICM4Mzc1NmY7Ci0gICAgbWFy
Z2luOiAycHg7Ci0gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwotfQotCi0jZmlsdGVycyBsaSBh
LnNlbGVjdGVkIHsKLSAgICBmb250LXdlaWdodDogYm9sZDsKLX0KLQotI2NsZWFyLWNvbXBsZXRl
ZCB7Ci0gICAgZmxvYXQ6IHJpZ2h0OwotICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKLSAgICBsaW5l
LWhlaWdodDogMjBweDsKLSAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Ci0gICAgYmFja2dyb3Vu
ZDogcmdiYSgwLCAwLCAwLCAwLjEpOwotICAgIGZvbnQtc2l6ZTogMTFweDsKLSAgICBwYWRkaW5n
OiAwIDEwcHg7Ci0gICAgYm9yZGVyLXJhZGl1czogM3B4OwotICAgIGJveC1zaGFkb3c6IDAgLTFw
eCAwIDAgcmdiYSgwLCAwLCAwLCAwLjIpOwotfQotCi0jY2xlYXItY29tcGxldGVkOmhvdmVyIHsK
LSAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMTUpOwotICAgIGJveC1zaGFkb3c6IDAg
LTFweCAwIDAgcmdiYSgwLCAwLCAwLCAwLjMpOwotfQotCi0jaW5mbyB7Ci0gICAgbWFyZ2luOiA2
NXB4IGF1dG8gMDsKLSAgICBjb2xvcjogI2E2YTZhNjsKLSAgICBmb250LXNpemU6IDEycHg7Ci0g
ICAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpOwotICAgIHRl
eHQtYWxpZ246IGNlbnRlcjsKLX0KLQotI2luZm8gYSB7Ci0gICAgY29sb3I6IGluaGVyaXQ7Ci19
Ci0KLS8qCi0gICAgSGFjayB0byByZW1vdmUgYmFja2dyb3VuZCBmcm9tIE1vYmlsZSBTYWZhcmku
Ci0gICAgQ2FuJ3QgdXNlIGl0IGdsb2JhbGx5IHNpbmNlIGl0IGRlc3Ryb3lzIGNoZWNrYm94ZXMg
aW4gRmlyZWZveCBhbmQgT3BlcmEKLSovCi1AbWVkaWEgc2NyZWVuIGFuZCAoLXdlYmtpdC1taW4t
ZGV2aWNlLXBpeGVsLXJhdGlvOjApIHsKLSAgICAjdG9nZ2xlLWFsbCwKLSAgICAjdG9kby1saXN0
IGxpIC50b2dnbGUgewotICAgIGJhY2tncm91bmQ6IG5vbmU7Ci0gICAgfQotCi0gICAgI3RvZG8t
bGlzdCBsaSAudG9nZ2xlIHsKLSAgICBoZWlnaHQ6IDQwcHg7Ci0gICAgfQotCi0gICAgI3RvZ2ds
ZS1hbGwgewotICAgIHRvcDogLTU2cHg7Ci0gICAgbGVmdDogLTE1cHg7Ci0gICAgd2lkdGg6IDY1
cHg7Ci0gICAgaGVpZ2h0OiA0MXB4OwotICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoOTBk
ZWcpOwotICAgIHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsKLSAgICAtd2Via2l0LWFwcGVhcmFu
Y2U6IG5vbmU7Ci0gICAgYXBwZWFyYW5jZTogbm9uZTsKLSAgICB9Ci19Ci0KLS5oaWRkZW57Ci0g
ICAgZGlzcGxheTpub25lOwotfQotCi1ociB7Ci0gICAgbWFyZ2luOiAyMHB4IDA7Ci0gICAgYm9y
ZGVyOiAwOwotICAgIGJvcmRlci10b3A6IDFweCBkYXNoZWQgI0M1QzVDNTsKLSAgICBib3JkZXIt
Ym90dG9tOiAxcHggZGFzaGVkICNGN0Y3Rjc7Ci19Ci0KLS5sZWFybiBhIHsKLSAgICBmb250LXdl
aWdodDogbm9ybWFsOwotICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKLSAgICBjb2xvcjogI2I4
M2Y0NTsKLX0KLQotLmxlYXJuIGE6aG92ZXIgewotICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJs
aW5lOwotICAgIGNvbG9yOiAjNzg3ZTdlOwotfQotCi0ubGVhcm4gaDMsCi0ubGVhcm4gaDQsCi0u
bGVhcm4gaDUgewotICAgIG1hcmdpbjogMTBweCAwOwotICAgIGZvbnQtd2VpZ2h0OiA1MDA7Ci0g
ICAgbGluZS1oZWlnaHQ6IDEuMjsKLSAgICBjb2xvcjogIzAwMDsKLX0KLQotLmxlYXJuIGgzIHsK
LSAgICBmb250LXNpemU6IDI0cHg7Ci19Ci0KLS5sZWFybiBoNCB7Ci0gICAgZm9udC1zaXplOiAx
OHB4OwotfQotCi0ubGVhcm4gaDUgewotICAgIG1hcmdpbi1ib3R0b206IDA7Ci0gICAgZm9udC1z
aXplOiAxNHB4OwotfQotCi0ubGVhcm4gdWwgewotICAgIHBhZGRpbmc6IDA7Ci0gICAgbWFyZ2lu
OiAwIDAgMzBweCAyNXB4OwotfQotCi0ubGVhcm4gbGkgewotICAgIGxpbmUtaGVpZ2h0OiAyMHB4
OwotfQotCi0ubGVhcm4gcCB7Ci0gICAgZm9udC1zaXplOiAxNXB4OwotICAgIGZvbnQtd2VpZ2h0
OiAzMDA7Ci0gICAgbGluZS1oZWlnaHQ6IDEuMzsKLSAgICBtYXJnaW4tdG9wOiAwOwotICAgIG1h
cmdpbi1ib3R0b206IDA7Ci19Ci0KLS5xdW90ZSB7Ci0gICAgYm9yZGVyOiBub25lOwotICAgIG1h
cmdpbjogMjBweCAwIDYwcHggMDsKLX0KLQotLnF1b3RlIHAgewotICAgIGZvbnQtc3R5bGU6IGl0
YWxpYzsKLX0KLQotLnF1b3RlIHA6YmVmb3JlIHsKLSAgICBjb250ZW50OiAn4oCcJzsKLSAgICBm
b250LXNpemU6IDUwcHg7Ci0gICAgb3BhY2l0eTogLjE1OwotICAgIHBvc2l0aW9uOiBhYnNvbHV0
ZTsKLSAgICB0b3A6IC0yMHB4OwotICAgIGxlZnQ6IDNweDsKLX0KLQotLnF1b3RlIHA6YWZ0ZXIg
ewotICAgIGNvbnRlbnQ6ICfigJ0nOwotICAgIGZvbnQtc2l6ZTogNTBweDsKLSAgICBvcGFjaXR5
OiAuMTU7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIGJvdHRvbTogLTQycHg7Ci0gICAg
cmlnaHQ6IDNweDsKLX0KLQotLnF1b3RlIGZvb3RlciB7Ci0gICAgcG9zaXRpb246IGFic29sdXRl
OwotICAgIGJvdHRvbTogLTQwcHg7Ci0gICAgcmlnaHQ6IDA7Ci19Ci0KLS5xdW90ZSBmb290ZXIg
aW1nIHsKLSAgICBib3JkZXItcmFkaXVzOiAzcHg7Ci19Ci0KLS5xdW90ZSBmb290ZXIgYSB7Ci0g
ICAgbWFyZ2luLWxlZnQ6IDVweDsKLSAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwotfQotCi0u
c3BlZWNoLWJ1YmJsZSB7Ci0gICAgcG9zaXRpb246IHJlbGF0aXZlOwotICAgIHBhZGRpbmc6IDEw
cHg7Ci0gICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAuMDQpOwotICAgIGJvcmRlci1yYWRp
dXM6IDVweDsKLX0KLQotLnNwZWVjaC1idWJibGU6YWZ0ZXIgewotICAgIGNvbnRlbnQ6ICcnOwot
ICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICB0b3A6IDEwMCU7Ci0gICAgcmlnaHQ6IDMwcHg7
Ci0gICAgYm9yZGVyOiAxM3B4IHNvbGlkIHRyYW5zcGFyZW50OwotICAgIGJvcmRlci10b3AtY29s
b3I6IHJnYmEoMCwgMCwgMCwgLjA0KTsKLX0KLQotLyoqYm9keSovLmxlYXJuLWJhciA+IC5sZWFy
biB7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHdpZHRoOiAyNzJweDsKLSAgICB0b3A6
IDhweDsKLSAgICBsZWZ0OiAtMzAwcHg7Ci0gICAgcGFkZGluZzogMTBweDsKLSAgICBib3JkZXIt
cmFkaXVzOiA1cHg7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAu
Nik7Ci0gICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogbGVmdDsKLSAgICB0cmFuc2l0aW9uLWR1cmF0
aW9uOiA1MDBtczsKLX0KLQotQG1lZGlhIChtaW4td2lkdGg6IDg5OXB4KSB7Ci0gICAgLyoqYm9k
eSovLmxlYXJuLWJhciB7Ci0gICAgd2lkdGg6IGF1dG87Ci0gICAgbWFyZ2luOiAwIDAgMCAzMDBw
eDsKLSAgICB9Ci0gICAgLyoqYm9keSovLmxlYXJuLWJhciA+IC5sZWFybiB7Ci0gICAgbGVmdDog
OHB4OwotICAgIH0KLSAgICAvKipib2R5Ki8ubGVhcm4tYmFyICN0b2RvYXBwIHsKLSAgICB3aWR0
aDogNTUwcHg7Ci0gICAgbWFyZ2luOiAxMzBweCBhdXRvIDQwcHggYXV0bzsKLSAgICB9Ci19CmRp
ZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL2Jvd2VyX2NvbXBvbmVudHMvdG9kb212Yy1jb21t
b24vYmFzZS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvYm93ZXJfY29tcG9uZW50cy90b2RvbXZjLWNv
bW1vbi9iYXNlLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOWJmNDI0MGZhZDlh
OWMxMTk0YzgxNTg2ZGMyOTE2YmVjMWNjYTc4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvYm93ZXJfY29tcG9uZW50cy90b2Rv
bXZjLWNvbW1vbi9iYXNlLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMjA5ICswLDAgQEAKLShmdW5j
dGlvbiAoKSB7Ci0gICAgJ3VzZSBzdHJpY3QnOwotCi0gICAgLy8gVW5kZXJzY29yZSdzIFRlbXBs
YXRlIE1vZHVsZQotICAgIC8vIENvdXJ0ZXN5IG9mIHVuZGVyc2NvcmVqcy5vcmcKLSAgICB2YXIg
XyA9IChmdW5jdGlvbiAoXykgewotICAgIF8uZGVmYXVsdHMgPSBmdW5jdGlvbiAob2JqZWN0KSB7
Ci0gICAgaWYgKCFvYmplY3QpIHsKLSAgICByZXR1cm4gb2JqZWN0OwotICAgIH0KLSAgICBmb3Ig
KHZhciBhcmdzSW5kZXggPSAxLCBhcmdzTGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDsgYXJnc0lu
ZGV4IDwgYXJnc0xlbmd0aDsgYXJnc0luZGV4KyspIHsKLSAgICB2YXIgaXRlcmFibGUgPSBhcmd1
bWVudHNbYXJnc0luZGV4XTsKLSAgICBpZiAoaXRlcmFibGUpIHsKLSAgICBmb3IgKHZhciBrZXkg
aW4gaXRlcmFibGUpIHsKLSAgICBpZiAob2JqZWN0W2tleV0gPT0gbnVsbCkgewotICAgIG9iamVj
dFtrZXldID0gaXRlcmFibGVba2V5XTsKLSAgICB9Ci0gICAgfQotICAgIH0KLSAgICB9Ci0gICAg
cmV0dXJuIG9iamVjdDsKLSAgICB9Ci0KLSAgICAvLyBCeSBkZWZhdWx0LCBVbmRlcnNjb3JlIHVz
ZXMgRVJCLXN0eWxlIHRlbXBsYXRlIGRlbGltaXRlcnMsIGNoYW5nZSB0aGUKLSAgICAvLyBmb2xs
b3dpbmcgdGVtcGxhdGUgc2V0dGluZ3MgdG8gdXNlIGFsdGVybmF0aXZlIGRlbGltaXRlcnMuCi0g
ICAgXy50ZW1wbGF0ZVNldHRpbmdzID0gewotICAgIGV2YWx1YXRlICAgIDogLzwlKFtcc1xTXSs/
KSU+L2csCi0gICAgaW50ZXJwb2xhdGUgOiAvPCU9KFtcc1xTXSs/KSU+L2csCi0gICAgZXNjYXBl
ICAgICAgOiAvPCUtKFtcc1xTXSs/KSU+L2cKLSAgICB9OwotCi0gICAgLy8gV2hlbiBjdXN0b21p
emluZyBgdGVtcGxhdGVTZXR0aW5nc2AsIGlmIHlvdSBkb24ndCB3YW50IHRvIGRlZmluZSBhbgot
ICAgIC8vIGludGVycG9sYXRpb24sIGV2YWx1YXRpb24gb3IgZXNjYXBpbmcgcmVnZXgsIHdlIG5l
ZWQgb25lIHRoYXQgaXMKLSAgICAvLyBndWFyYW50ZWVkIG5vdCB0byBtYXRjaC4KLSAgICB2YXIg
bm9NYXRjaCA9IC8oLileLzsKLQotICAgIC8vIENlcnRhaW4gY2hhcmFjdGVycyBuZWVkIHRvIGJl
IGVzY2FwZWQgc28gdGhhdCB0aGV5IGNhbiBiZSBwdXQgaW50byBhCi0gICAgLy8gc3RyaW5nIGxp
dGVyYWwuCi0gICAgdmFyIGVzY2FwZXMgPSB7Ci0gICAgIiciOiAgICAgICInIiwKLSAgICAnXFwn
OiAgICAgJ1xcJywKLSAgICAnXHInOiAgICAgJ3InLAotICAgICdcbic6ICAgICAnbicsCi0gICAg
J1x0JzogICAgICd0JywKLSAgICAnXHUyMDI4JzogJ3UyMDI4JywKLSAgICAnXHUyMDI5JzogJ3Uy
MDI5JwotICAgIH07Ci0KLSAgICB2YXIgZXNjYXBlciA9IC9cXHwnfFxyfFxufFx0fFx1MjAyOHxc
dTIwMjkvZzsKLQotICAgIC8vIEphdmFTY3JpcHQgbWljcm8tdGVtcGxhdGluZywgc2ltaWxhciB0
byBKb2huIFJlc2lnJ3MgaW1wbGVtZW50YXRpb24uCi0gICAgLy8gVW5kZXJzY29yZSB0ZW1wbGF0
aW5nIGhhbmRsZXMgYXJiaXRyYXJ5IGRlbGltaXRlcnMsIHByZXNlcnZlcyB3aGl0ZXNwYWNlLAot
ICAgIC8vIGFuZCBjb3JyZWN0bHkgZXNjYXBlcyBxdW90ZXMgd2l0aGluIGludGVycG9sYXRlZCBj
b2RlLgotICAgIF8udGVtcGxhdGUgPSBmdW5jdGlvbih0ZXh0LCBkYXRhLCBzZXR0aW5ncykgewot
ICAgIHZhciByZW5kZXI7Ci0gICAgc2V0dGluZ3MgPSBfLmRlZmF1bHRzKHt9LCBzZXR0aW5ncywg
Xy50ZW1wbGF0ZVNldHRpbmdzKTsKLQotICAgIC8vIENvbWJpbmUgZGVsaW1pdGVycyBpbnRvIG9u
ZSByZWd1bGFyIGV4cHJlc3Npb24gdmlhIGFsdGVybmF0aW9uLgotICAgIHZhciBtYXRjaGVyID0g
bmV3IFJlZ0V4cChbCi0gICAgKHNldHRpbmdzLmVzY2FwZSB8fCBub01hdGNoKS5zb3VyY2UsCi0g
ICAgKHNldHRpbmdzLmludGVycG9sYXRlIHx8IG5vTWF0Y2gpLnNvdXJjZSwKLSAgICAoc2V0dGlu
Z3MuZXZhbHVhdGUgfHwgbm9NYXRjaCkuc291cmNlCi0gICAgXS5qb2luKCd8JykgKyAnfCQnLCAn
ZycpOwotCi0gICAgLy8gQ29tcGlsZSB0aGUgdGVtcGxhdGUgc291cmNlLCBlc2NhcGluZyBzdHJp
bmcgbGl0ZXJhbHMgYXBwcm9wcmlhdGVseS4KLSAgICB2YXIgaW5kZXggPSAwOwotICAgIHZhciBz
b3VyY2UgPSAiX19wKz0nIjsKLSAgICB0ZXh0LnJlcGxhY2UobWF0Y2hlciwgZnVuY3Rpb24obWF0
Y2gsIGVzY2FwZSwgaW50ZXJwb2xhdGUsIGV2YWx1YXRlLCBvZmZzZXQpIHsKLSAgICBzb3VyY2Ug
Kz0gdGV4dC5zbGljZShpbmRleCwgb2Zmc2V0KQotICAgIC5yZXBsYWNlKGVzY2FwZXIsIGZ1bmN0
aW9uKG1hdGNoKSB7IHJldHVybiAnXFwnICsgZXNjYXBlc1ttYXRjaF07IH0pOwotCi0gICAgaWYg
KGVzY2FwZSkgewotICAgIHNvdXJjZSArPSAiJytcbigoX190PSgiICsgZXNjYXBlICsgIikpPT1u
dWxsPycnOl8uZXNjYXBlKF9fdCkpK1xuJyI7Ci0gICAgfQotICAgIGlmIChpbnRlcnBvbGF0ZSkg
ewotICAgIHNvdXJjZSArPSAiJytcbigoX190PSgiICsgaW50ZXJwb2xhdGUgKyAiKSk9PW51bGw/
Jyc6X190KStcbiciOwotICAgIH0KLSAgICBpZiAoZXZhbHVhdGUpIHsKLSAgICBzb3VyY2UgKz0g
Iic7XG4iICsgZXZhbHVhdGUgKyAiXG5fX3ArPSciOwotICAgIH0KLSAgICBpbmRleCA9IG9mZnNl
dCArIG1hdGNoLmxlbmd0aDsKLSAgICByZXR1cm4gbWF0Y2g7Ci0gICAgfSk7Ci0gICAgc291cmNl
ICs9ICInO1xuIjsKLQotICAgIC8vIElmIGEgdmFyaWFibGUgaXMgbm90IHNwZWNpZmllZCwgcGxh
Y2UgZGF0YSB2YWx1ZXMgaW4gbG9jYWwgc2NvcGUuCi0gICAgaWYgKCFzZXR0aW5ncy52YXJpYWJs
ZSkgc291cmNlID0gJ3dpdGgob2JqfHx7fSl7XG4nICsgc291cmNlICsgJ31cbic7Ci0KLSAgICBz
b3VyY2UgPSAidmFyIF9fdCxfX3A9JycsX19qPUFycmF5LnByb3RvdHlwZS5qb2luLCIgKwotICAg
ICJwcmludD1mdW5jdGlvbigpe19fcCs9X19qLmNhbGwoYXJndW1lbnRzLCcnKTt9O1xuIiArCi0g
ICAgc291cmNlICsgInJldHVybiBfX3A7XG4iOwotCi0gICAgdHJ5IHsKLSAgICByZW5kZXIgPSBu
ZXcgRnVuY3Rpb24oc2V0dGluZ3MudmFyaWFibGUgfHwgJ29iaicsICdfJywgc291cmNlKTsKLSAg
ICB9IGNhdGNoIChlKSB7Ci0gICAgZS5zb3VyY2UgPSBzb3VyY2U7Ci0gICAgdGhyb3cgZTsKLSAg
ICB9Ci0KLSAgICBpZiAoZGF0YSkgcmV0dXJuIHJlbmRlcihkYXRhLCBfKTsKLSAgICB2YXIgdGVt
cGxhdGUgPSBmdW5jdGlvbihkYXRhKSB7Ci0gICAgcmV0dXJuIHJlbmRlci5jYWxsKHRoaXMsIGRh
dGEsIF8pOwotICAgIH07Ci0KLSAgICAvLyBQcm92aWRlIHRoZSBjb21waWxlZCBmdW5jdGlvbiBz
b3VyY2UgYXMgYSBjb252ZW5pZW5jZSBmb3IgcHJlY29tcGlsYXRpb24uCi0gICAgdGVtcGxhdGUu
c291cmNlID0gJ2Z1bmN0aW9uKCcgKyAoc2V0dGluZ3MudmFyaWFibGUgfHwgJ29iaicpICsgJyl7
XG4nICsgc291cmNlICsgJ30nOwotCi0gICAgcmV0dXJuIHRlbXBsYXRlOwotICAgIH07Ci0KLSAg
ICByZXR1cm4gXzsKLSAgICB9KSh7fSk7Ci0KLSAgICBpZiAobG9jYXRpb24uaG9zdG5hbWUgPT09
ICd0b2RvbXZjLmNvbScpIHsKLSAgICB3aW5kb3cuX2dhcSA9IFtbJ19zZXRBY2NvdW50JywnVUEt
MzEwODEwNjItMSddLFsnX3RyYWNrUGFnZXZpZXcnXV07KGZ1bmN0aW9uKGQsdCl7dmFyIGc9ZC5j
cmVhdGVFbGVtZW50KHQpLHM9ZC5nZXRFbGVtZW50c0J5VGFnTmFtZSh0KVswXTtnLnNyYz0nLy93
d3cuZ29vZ2xlLWFuYWx5dGljcy5jb20vZ2EuanMnO3MucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUo
ZyxzKX0oZG9jdW1lbnQsJ3NjcmlwdCcpKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiByZWRpcmVj
dCgpIHsKLSAgICBpZiAobG9jYXRpb24uaG9zdG5hbWUgPT09ICd0YXN0ZWpzLmdpdGh1Yi5pbycp
IHsKLSAgICBsb2NhdGlvbi5ocmVmID0gbG9jYXRpb24uaHJlZi5yZXBsYWNlKCd0YXN0ZWpzLmdp
dGh1Yi5pby90b2RvbXZjJywgJ3RvZG9tdmMuY29tJyk7Ci0gICAgfQotICAgIH0KLQotICAgIGZ1
bmN0aW9uIGZpbmRSb290KCkgewotICAgIHZhciBiYXNlOwotCi0gICAgWy9sYWJzLywgL1x3Ki1l
eGFtcGxlcy9dLmZvckVhY2goZnVuY3Rpb24gKGhyZWYpIHsKLSAgICB2YXIgbWF0Y2ggPSBsb2Nh
dGlvbi5ocmVmLm1hdGNoKGhyZWYpOwotCi0gICAgaWYgKCFiYXNlICYmIG1hdGNoKSB7Ci0gICAg
YmFzZSA9IGxvY2F0aW9uLmhyZWYuaW5kZXhPZihtYXRjaCk7Ci0gICAgfQotICAgIH0pOwotCi0g
ICAgcmV0dXJuIGxvY2F0aW9uLmhyZWYuc3Vic3RyKDAsIGJhc2UpOwotICAgIH0KLQotICAgIGZ1
bmN0aW9uIGdldEZpbGUoZmlsZSwgY2FsbGJhY2spIHsKLSAgICBpZiAoIWxvY2F0aW9uLmhvc3Qp
IHsKLSAgICByZXR1cm4gY29uc29sZS5pbmZvKCdNaXNzIHRoZSBpbmZvIGJhcj8gUnVuIFRvZG9N
VkMgZnJvbSBhIHNlcnZlciB0byBhdm9pZCBhIGNyb3NzLW9yaWdpbiBlcnJvci4nKTsKLSAgICB9
Ci0KLSAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7Ci0KLSAgICB4aHIub3Blbign
R0VUJywgZmluZFJvb3QoKSArIGZpbGUsIHRydWUpOwotICAgIHhoci5zZW5kKCk7Ci0KLSAgICB4
aHIub25sb2FkID0gZnVuY3Rpb24gKCkgewotICAgIGlmICh4aHIuc3RhdHVzID09PSAyMDAgJiYg
Y2FsbGJhY2spIHsKLSAgICBjYWxsYmFjayh4aHIucmVzcG9uc2VUZXh0KTsKLSAgICB9Ci0gICAg
fTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBMZWFybihsZWFybkpTT04sIGNvbmZpZykgewotICAg
IGlmICghKHRoaXMgaW5zdGFuY2VvZiBMZWFybikpIHsKLSAgICByZXR1cm4gbmV3IExlYXJuKGxl
YXJuSlNPTiwgY29uZmlnKTsKLSAgICB9Ci0KLSAgICB2YXIgdGVtcGxhdGUsIGZyYW1ld29yazsK
LQotICAgIGlmICh0eXBlb2YgbGVhcm5KU09OICE9PSAnb2JqZWN0JykgewotICAgIHRyeSB7Ci0g
ICAgbGVhcm5KU09OID0gSlNPTi5wYXJzZShsZWFybkpTT04pOwotICAgIH0gY2F0Y2ggKGUpIHsK
LSAgICByZXR1cm47Ci0gICAgfQotICAgIH0KLQotICAgIGlmIChjb25maWcpIHsKLSAgICB0ZW1w
bGF0ZSA9IGNvbmZpZy50ZW1wbGF0ZTsKLSAgICBmcmFtZXdvcmsgPSBjb25maWcuZnJhbWV3b3Jr
OwotICAgIH0KLQotICAgIGlmICghdGVtcGxhdGUgJiYgbGVhcm5KU09OLnRlbXBsYXRlcykgewot
ICAgIHRlbXBsYXRlID0gbGVhcm5KU09OLnRlbXBsYXRlcy50b2RvbXZjOwotICAgIH0KLQotICAg
IGlmICghZnJhbWV3b3JrICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLWZyYW1ld29y
a10nKSkgewotICAgIGZyYW1ld29yayA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLWZy
YW1ld29ya10nKS5nZXRBdHRyaWJ1dGUoJ2RhdGEtZnJhbWV3b3JrJyk7Ci0gICAgfQotCi0KLSAg
ICBpZiAodGVtcGxhdGUgJiYgbGVhcm5KU09OW2ZyYW1ld29ya10pIHsKLSAgICB0aGlzLmZyYW1l
d29ya0pTT04gPSBsZWFybkpTT05bZnJhbWV3b3JrXTsKLSAgICB0aGlzLnRlbXBsYXRlID0gdGVt
cGxhdGU7Ci0KLSAgICB0aGlzLmFwcGVuZCgpOwotICAgIH0KLSAgICB9Ci0KLSAgICBMZWFybi5w
cm90b3R5cGUuYXBwZW5kID0gZnVuY3Rpb24gKCkgewotICAgIHZhciBhc2lkZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2FzaWRlJyk7Ci0gICAgYXNpZGUuaW5uZXJIVE1MID0gXy50ZW1wbGF0
ZSh0aGlzLnRlbXBsYXRlLCB0aGlzLmZyYW1ld29ya0pTT04pOwotICAgIGFzaWRlLmNsYXNzTmFt
ZSA9ICdsZWFybic7Ci0KLSAgICAvLyBMb2NhbGl6ZSBkZW1vIGxpbmtzCi0gICAgdmFyIGRlbW9M
aW5rcyA9IGFzaWRlLnF1ZXJ5U2VsZWN0b3JBbGwoJy5kZW1vLWxpbmsnKTsKLSAgICBBcnJheS5w
cm90b3R5cGUuZm9yRWFjaC5jYWxsKGRlbW9MaW5rcywgZnVuY3Rpb24gKGRlbW9MaW5rKSB7Ci0g
ICAgZGVtb0xpbmsuc2V0QXR0cmlidXRlKCdocmVmJywgZmluZFJvb3QoKSArIGRlbW9MaW5rLmdl
dEF0dHJpYnV0ZSgnaHJlZicpKTsKLSAgICB9KTsKLQotICAgIGRvY3VtZW50LmJvZHkuY2xhc3NO
YW1lID0gKGRvY3VtZW50LmJvZHkuY2xhc3NOYW1lICsgJyBsZWFybi1iYXInKS50cmltKCk7Ci0g
ICAgZG9jdW1lbnQuYm9keS5pbnNlcnRBZGphY2VudEhUTUwoJ2FmdGVyQmVnaW4nLCBhc2lkZS5v
dXRlckhUTUwpOwotICAgIH07Ci0KLSAgICByZWRpcmVjdCgpOwotICAgIGdldEZpbGUoJ2xlYXJu
Lmpzb24nLCBMZWFybik7Ci19KSgpOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9ib3dl
cl9jb21wb25lbnRzL3RvZG9tdmMtY29tbW9uL2JnLnBuZyBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvYm93
ZXJfY29tcG9uZW50cy90b2RvbXZjLWNvbW1vbi9iZy5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGIyYTc2MDA4MjVlZTExZjIxODQ5ZWQ0NzU0OTljN2QxZWNiY2M4NzAuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKR0lUIGJpbmFyeSBwYXRjaApsaXRl
cmFsIDAKSGNtVj9kMDAwMDEKCmxpdGVyYWwgMjEyNgp6Y21WLVUyKGtCeFApPGg7M0t8TGswMDBl
MU5KTFRxMDAza0YwMDNrSDB7e1IzNFVCIXEwMDAwQ1ApdC1zPyhYakUKej4rOXlgPUhLN250PX4z
dDAwME81TmtsPFpjd1RqdShRNHZ+N0tXRVcjWW0/bEtfdjtUbXwhRmMpQE53RW5tdHNoCnp4IU9+
ejgxSlQzcEZzbT5tPTA0aFZhX2xYbF9ibT0rTTs9ZUk8JSRyTzJ0YWBzdWgqU3IjUE93Kj9hZHEh
TyFDVgp6KjAmYilya0NDRVYpMW5JdWlMQm50VUgtTUpJOyZxWWd6fGRATmhubl9hYmkyZ2BwdTRO
QU1WaWQzaFMlP3F1en4KempsSmYoeDhjajxQR2NqbipKK2F7Jkg1cCpuNSQ1ZTM/PEtDYz9vMDZt
QXNOU2JnUFdPP1B6I0N6bjwhPXs+e1ZTCnpVVkVQMW1zZzlgXk9GVWhTTzVydFhIaFJseVUyaT42
JEJUPWdsR2B7SmxjdEdIcndSSW0pNkJ1dTY1akxRbl5IOAp6dmw5bFpxVUJBKyVxdk01WEMreVlA
bWZBKFlCflhQPWV8Njx7JSReZVU4bnJLP3YyY2NiQEpvbTVDRz5yS0FMN0oKenBsSEVJYXZWcHww
cDEmbSFHYFRpPzw3aVo7fUBHNyNaKX1LbSUyIUZIblEwKiY/UExSKUchSEFhSGdVI2N8JGR6Cnpw
aiMwSG1lYWRJZT5gIyk9SmprYntCPUZLblUzcGMtJllAal9qNihoNFl+K1VxPFBVMzZDOzViPU1e
RmA9cDFkSQp6azxDUU9QTmE3PiFeSj1MSHVueDF4aTRRWEstWXsmTW9UOGt5NlZiOWN8V2huT3dG
fmM9M3pPeThhZ2t0bGlTNiMKemAjOEZgOUgpRD1ibWs5QjVNblcmX3IjKWYkYys7JExTci1AXkFu
OGRoY35JcXV1dj5qT0s3cHc3TEo7JlgwaTFDCnpHTXNIZFAxT3NAbnkkJGohPlhBaWklN2JwNWs+
YHB5TkEhfmVwYikoKXA5elI0WWw2ej1VfXtDSWRoMXooRnBBbwp6UUlXITswenBDeUM0KjdZTGta
Q09AY3VsMFJfJnpnaHNBOEVrKXolPCFwLWJ2c3NwbFlZMn1QOyF2NENZajlrbUYKemIwYk5fbTRW
KmZeWVpNb2IyKGozcEtqfjd2I1p0a3M9SW8re3N1JVdpdWtkSkgkYj9mWmtpQT1QWV8zT2hEQmtv
CnooTFRRSFkmRl5eMmhHLVlgKlo5M3ZifmM/KihKY2hEalRmQ3M/elJtKmAqTipWLSQ9P1FxdGhu
U3IqP09TM3NqSwp6bzxfVV5me35hZzYwdWw+ak5wS2E5MntATkgrU3N0WCVAfXhCKkprIWx9UFox
Y0NsSW5zfn01XiFSbmNVaypybUEKeiVTSVZndDU4RVF4TEorT2lGcTx5dTRlT0R8OUx0M2ROc2Vm
eE91cSlEJiRfJWowRGdxQ3kxZ3pjfHRURDMqbWVlCnp7PSV8PGBgfV9IeXBoT3V7Oyl4a1JnK1Fu
SENDM1RmK2tzcHFWNip8UUstUmNxRH00PktrQnV3cXV5WkxVcHxncgp6UFViVWJGYkJyUGQxeE9g
XkMqci1pM3A5KkYjKE9CaCE0V3lAYUMmKiF8T3xHWGNqREEmWWhGeztjRDcqbyhHU14KekBwUVNF
Nyl4XzgxPVF5amU2KkxRI1RYdS03KG87Uzh1M3RwREE8U2djS2NLT3BtQTs9SEJaU0BPRlRAX1hP
dnhxCnoqTnwzS0x5dGd6SDZHVSYmVW9jNFp6azRsdW0zUHs5P2ZwSTQrUUdQSit2NmAxbGZScTNM
Y1MqKE0qV0srfGIlTwp6ZSR6PjBfZGRqJWhtQ3NwZVhkaFlSfS1pOUE9Q2BFb0NoVVl1SH5eeCE5
K3wmKFBnYio+Q2s8PTlqfCkqQHh5ZlQKenBQIytLdDx9MzlifDNXbDRmeFQoK0c/YUg+Z0deZEBN
RWFVT0pSZnk1NVR0Rkk3XlkpVnVNVT03UHAweTU1alN+CnorVEopaWdNeXJxa1g7d1U4ajY4aUlE
dHFKWWhTX0QzX09lbS1AZzZtZV9SZmlRfXVUX0stQS05cUclfWdrM0U5Ywp6IThgS2dzTU5YbSli
ZWxvUGZNcWwqfCYkTT4xcWBpIWNZKVJGWW5qTll1KmdTdkA4WGViVjclfXhZTD42KUdKUEoKekpw
QTdLMzFsY0p1SUZLU3cte3g0RlgwSzJBeil+WGc8YHNPdSQ0fF48TUM3QCt4Ynd4c0dnVHZKSUFM
alB7NjhMCno4QVl1U0dTMEdVZ2s2V2B2NFc7UnkqdW9FVG51bFBpfDU3MyVsdipaeHcjdjZ5VVFe
TU9mY3BUI1Y4UklEViMjTgp6RDFgK0FlbXNPaCl3YldERXhWY2ZwS3opanlWPTx+JlpYUGc2Y3xa
REU3VTRiazxEXj4tKF5YSlg0WXpvaU5SdkwKenl1WTd+MjZ3LVBeWnclNkZ9c2hCd1YyJDAyYzhS
c1NVeTZkTTkyZGlDQXhpWDNJVXFzcTVpZzY+VV8hVnkqcTUkCnpqbX0xNnRKcitRWiZUP0hra3Bl
SXdWWC1yMUVJPUAlWmx0OzY8dHdIODZJRD5nKm1qJkUhQSkpJWdYSj14NnUjbAp6Y0tFUD5ieDRy
cVYqa2BCQnJaJE1xanR7VHNIY3hVSD47KWlBS31CKEtpbGEmVkQlYj82bSZeMFdLNF4mRVpOQUkK
ejhBTVlzXyUkRCV8TStAK2NRcUwtaGk0eUc+aCpqd2RpaSFXMXt9cD5aaHdGWXRfNFN1MWtqWTk8
YkFaanp+OWVrCnpfRGlhcitBZkpGUF85QHltVW8kS1c+PC01YCEkVk5PSTF5KEVEU0g0V3BDaWpF
Xz5hbCFOdD1eZVZFUiN1SjE9Ygp6O0JXRjJJZ3lGNUxleFYreWVjJEtpbjtBaUBteW87Rz56SiZq
cmRXI2VjWGhJWnBoNU9ZcXdfUEVmY0Y1NjxPMTkKekwpOHIhS00oKWlmMGBAP1c0KEpkYyk3V29Q
R14mPSQ8elVzTStIQ1dha0NeM3RaeGsrUGpRR31CPlo1PFo2Vnh3CnpCQEhyViQmbH5AVGFqNzBw
Y2V7aVN1UkxzVWN6RFlfNVRuRHE4UHlfUTN3aGBEOCE0aks7dkZkUlArUTA9ekp5Kgp6enVXZCUh
YWlARHt8Kko8STtPRCZpJWx7SnAtOCpQdTNWR0xXaXlrNnYjWG1RcXdgLSslZSR8Q0p3KkBgNXpi
MzwKekV9eiM7a1JoTCZxNVBERzZAbW0qJD5adV9aWkUjcTNNYytOJjFPXjdob2g5UVI3YCtMJGNC
UDVwcUc9ZnFBMHVoCnpVQnVrYXhURm1IKTx8WGJ2cDJjPUhTYk5rcFh3NzNhNWx2N1YkamI5MiN5
WjE0MUAkWD9GfUp0OGdJVTdXbTZtOQp6P2VfOzt6c25tNmBMWmVQPlQ9JClLcj5aP2tyKlVtRnFS
N3p4MEM2XmJtY3NjQDFBR3R3X3JOSD4tWG0kZCp8UTwKem4mMUxuMHU3PWwmSUxzPiVDa0pwYERp
RzlGMTh4NE5lK2xnPCNpP2U3akwleDs0Wm5Sa05eTXgwNypxb002TjwkCkVmKD4wTiEya2ROCgpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9pbmRleC5odG1sIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFq
cy9pbmRleC5odG1sCmluZGV4IDQ3N2I5YmY1ODBkOTJkNjlhMDY0NzM2Y2Q2NTIyMWU5Njc1Y2I4
Y2UuLjZkOTQ0YzRmODg2ZmFkMzQ4MGZkZGYzZjJhMGFkZjZjZWIyZDE5MjMgMTAwNjQ0Ci0tLSBh
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1l
eGFtcGxlcy92YW5pbGxhanMvaW5kZXguaHRtbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL2luZGV4
Lmh0bWwKQEAgLTEsNTMgKzEsNTEgQEAKIDwhZG9jdHlwZSBodG1sPgogPGh0bWwgbGFuZz0iZW4i
IGRhdGEtZnJhbWV3b3JrPSJqYXZhc2NyaXB0Ij4KICAgICA8aGVhZD4KLSAgICA8bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+Ci0gICAgPG1ldGEgaHR0cC1lcXVpdj0iWC1VQS1Db21wYXRpYmxlIiBjb250
ZW50PSJJRT1lZGdlIj4KLSAgICA8dGl0bGU+VmFuaWxsYUpTIOKAoiBUb2RvTVZDPC90aXRsZT4K
LSAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9ImJvd2VyX2NvbXBvbmVudHMvdG9kb212
Yy1jb21tb24vYmFzZS5jc3MiPgorICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CisgICAg
ICAgIDx0aXRsZT5WYW5pbGxhSlMg4oCiIFRvZG9NVkM8L3RpdGxlPgorICAgICAgICA8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Im5vZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1vbi9iYXNlLmNz
cyI+CisgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ibm9kZV9tb2R1bGVzL3Rv
ZG9tdmMtYXBwLWNzcy9pbmRleC5jc3MiPgogICAgIDwvaGVhZD4KICAgICA8Ym9keT4KLSAgICA8
c2VjdGlvbiBpZD0idG9kb2FwcCI+Ci0gICAgPGhlYWRlciBpZD0iaGVhZGVyIj4KLSAgICA8aDE+
dG9kb3M8L2gxPgotICAgIDxpbnB1dCBpZD0ibmV3LXRvZG8iIHBsYWNlaG9sZGVyPSJXaGF0IG5l
ZWRzIHRvIGJlIGRvbmU/IiBhdXRvZm9jdXM+Ci0gICAgPC9oZWFkZXI+Ci0gICAgPHNlY3Rpb24g
aWQ9Im1haW4iPgotICAgIDxpbnB1dCBpZD0idG9nZ2xlLWFsbCIgdHlwZT0iY2hlY2tib3giPgot
ICAgIDxsYWJlbCBmb3I9InRvZ2dsZS1hbGwiPk1hcmsgYWxsIGFzIGNvbXBsZXRlPC9sYWJlbD4K
LSAgICA8dWwgaWQ9InRvZG8tbGlzdCI+PC91bD4KLSAgICA8L3NlY3Rpb24+Ci0gICAgPGZvb3Rl
ciBpZD0iZm9vdGVyIj4KLSAgICA8c3BhbiBpZD0idG9kby1jb3VudCI+PC9zcGFuPgotICAgIDx1
bCBpZD0iZmlsdGVycyI+Ci0gICAgPGxpPgotICAgIDxhIGhyZWY9IiMvIj5BbGw8L2E+Ci0gICAg
PC9saT4KLSAgICA8bGk+Ci0gICAgPGEgaHJlZj0iIy9hY3RpdmUiPkFjdGl2ZTwvYT4KLSAgICA8
L2xpPgotICAgIDxsaT4KLSAgICA8YSBocmVmPSIjL2NvbXBsZXRlZCI+Q29tcGxldGVkPC9hPgot
ICAgIDwvbGk+Ci0gICAgPC91bD4KLSAgICA8YnV0dG9uIGlkPSJjbGVhci1jb21wbGV0ZWQiPkNs
ZWFyIGNvbXBsZXRlZDwvYnV0dG9uPgotICAgIDwvZm9vdGVyPgotICAgIDwvc2VjdGlvbj4KLSAg
ICA8Zm9vdGVyIGlkPSJpbmZvIj4KLSAgICA8cD5Eb3VibGUtY2xpY2sgdG8gZWRpdCBhIHRvZG88
L3A+Ci0gICAgPHA+Q3JlYXRlZCBieSA8YSBocmVmPSJodHRwOi8vdHdpdHRlci5jb20vb3NjYXJn
b2Rzb24iPk9zY2FyIEdvZHNvbjwvYT48L3A+Ci0gICAgPHA+UGFydCBvZiA8YSBocmVmPSJodHRw
Oi8vdG9kb212Yy5jb20iPlRvZG9NVkM8L2E+PC9wPgotICAgIDwvZm9vdGVyPgotICAgIDxzY3Jp
cHQgc3JjPSJib3dlcl9jb21wb25lbnRzL3RvZG9tdmMtY29tbW9uL2Jhc2UuanMiPjwvc2NyaXB0
PgotICAgIDxzY3JpcHQ+Ci0gICAgLy8gQm9vdHN0cmFwIGFwcCBkYXRhCi0gICAgd2luZG93LmFw
cCA9IHt9OwotICAgIDwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJqcy9oZWxwZXJzLmpzIj48
L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0ianMvc3RvcmUuanMiPjwvc2NyaXB0PgotICAgIDxz
Y3JpcHQgc3JjPSJqcy9tb2RlbC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9ImpzL3Zp
ZXcuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJqcy9jb250cm9sbGVyLmpzIj48L3Nj
cmlwdD4KLSAgICA8c2NyaXB0IHNyYz0ianMvYXBwLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNl
Y3Rpb24gY2xhc3M9InRvZG9hcHAiPgorICAgICAgICAgICAgPGhlYWRlciBjbGFzcz0iaGVhZGVy
Ij4KKyAgICAgICAgICAgICAgICA8aDE+dG9kb3M8L2gxPgorICAgICAgICAgICAgICAgIDxpbnB1
dCBjbGFzcz0ibmV3LXRvZG8iIHBsYWNlaG9sZGVyPSJXaGF0IG5lZWRzIHRvIGJlIGRvbmU/IiBh
dXRvZm9jdXM+CisgICAgICAgICAgICA8L2hlYWRlcj4KKyAgICAgICAgICAgIDxzZWN0aW9uIGNs
YXNzPSJtYWluIj4KKyAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9InRvZ2dsZS1hbGwiIHR5
cGU9ImNoZWNrYm94Ij4KKyAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJ0b2dnbGUtYWxsIj5N
YXJrIGFsbCBhcyBjb21wbGV0ZTwvbGFiZWw+CisgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJ0
b2RvLWxpc3QiPjwvdWw+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisgICAgICAgICAgICA8Zm9v
dGVyIGNsYXNzPSJmb290ZXIiPgorICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0b2RvLWNv
dW50Ij48L3NwYW4+CisgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJmaWx0ZXJzIj4KKyAgICAg
ICAgICAgICAgICAgICAgPGxpPgorICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIy8i
IGNsYXNzPSJzZWxlY3RlZCI+QWxsPC9hPgorICAgICAgICAgICAgICAgICAgICA8L2xpPgorICAg
ICAgICAgICAgICAgICAgICA8bGk+CisgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIj
L2FjdGl2ZSI+QWN0aXZlPC9hPgorICAgICAgICAgICAgICAgICAgICA8L2xpPgorICAgICAgICAg
ICAgICAgICAgICA8bGk+CisgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjL2NvbXBs
ZXRlZCI+Q29tcGxldGVkPC9hPgorICAgICAgICAgICAgICAgICAgICA8L2xpPgorICAgICAgICAg
ICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iY2xlYXItY29tcGxl
dGVkIj5DbGVhciBjb21wbGV0ZWQ8L2J1dHRvbj4KKyAgICAgICAgICAgIDwvZm9vdGVyPgorICAg
ICAgICA8L3NlY3Rpb24+CisgICAgICAgIDxmb290ZXIgY2xhc3M9ImluZm8iPgorICAgICAgICAg
ICAgPHA+RG91YmxlLWNsaWNrIHRvIGVkaXQgYSB0b2RvPC9wPgorICAgICAgICAgICAgPHA+U3Bl
ZWRvbWV0ZXIgdmVyc2lvbiBieSA8YSBocmVmPSJodHRwOi8vdHdpdHRlci5jb20vYWRkeW9zbWFu
aSI+QWRkeSBPc21hbmk8L3A+CisgICAgICAgICAgICA8cD5QYXJ0cyBieSA8YSBocmVmPSJodHRw
Oi8vdHdpdHRlci5jb20vb3NjYXJnb2Rzb24iPk9zY2FyIEdvZHNvbjwvYT48L3A+CisgICAgICAg
ICAgICA8cD5SZWZhY3RvcmVkIGJ5IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jYnVyZ21l
ciI+Q2hyaXN0b3BoIEJ1cmdtZXI8L2E+PC9wPgorICAgICAgICAgICAgPHA+UGFydCBvZiA8YSBo
cmVmPSJodHRwOi8vdG9kb212Yy5jb20iPlRvZG9NVkM8L2E+PC9wPgorICAgICAgICA8L2Zvb3Rl
cj4KKyAgICAgICAgPHNjcmlwdCBzcmM9ImpzL2hlbHBlcnMuanMiPjwvc2NyaXB0PgorICAgICAg
ICA8c2NyaXB0IHNyYz0ianMvc3RvcmUuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNy
Yz0ianMvbW9kZWwuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0ianMvdGVtcGxh
dGUuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0ianMvdmlldy5qcyI+PC9zY3Jp
cHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSJqcy9jb250cm9sbGVyLmpzIj48L3NjcmlwdD4KKyAg
ICAgICAgPHNjcmlwdCBzcmM9ImpzL2FwcC5qcyI+PC9zY3JpcHQ+CiAgICAgPC9ib2R5PgogPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9qcy9hcHAuanMgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFu
aWxsYWpzL2pzL2FwcC5qcwppbmRleCAyODhlNTliZDhlMDdkZmVlOWM5MDRlNDA1NzVmOTdiZDI5
ZjA3ZmI1Li4zMDFjZjlmZWFlNDg1NTJlNjdkODA3OGFlOWZhMzcxNzRkNGMzOGQ0IDEwMDY0NAot
LS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3Zhbmls
bGEtZXhhbXBsZXMvdmFuaWxsYWpzL2pzL2FwcC5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL2pz
L2FwcC5qcwpAQCAtMSw0ICsxLDQgQEAKLS8qZ2xvYmFsIFN0b3JlLCBNb2RlbCwgVmlldywgQ29u
dHJvbGxlciwgJCQgKi8KKy8qZ2xvYmFsIGFwcCwgJG9uICovCiAoZnVuY3Rpb24gKCkgewogICAg
ICd1c2Ugc3RyaWN0JzsKIApAQCAtOCw2NyArOCwxOCBAQAogICAgICAqIEBwYXJhbSB7c3RyaW5n
fSBuYW1lIFRoZSBuYW1lIG9mIHlvdXIgbmV3IHRvIGRvIGxpc3QuCiAgICAgICovCiAgICAgZnVu
Y3Rpb24gVG9kbyhuYW1lKSB7Ci0gICAgdGhpcy5zdG9yYWdlID0gbmV3IGFwcC5TdG9yZShuYW1l
KTsKLSAgICB0aGlzLm1vZGVsID0gbmV3IGFwcC5Nb2RlbCh0aGlzLnN0b3JhZ2UpOwotICAgIHRo
aXMudmlldyA9IG5ldyBhcHAuVmlldygpOwotICAgIHRoaXMuY29udHJvbGxlciA9IG5ldyBhcHAu
Q29udHJvbGxlcih0aGlzLm1vZGVsLCB0aGlzLnZpZXcpOworICAgICAgICB0aGlzLnN0b3JhZ2Ug
PSBuZXcgYXBwLlN0b3JlKG5hbWUpOworICAgICAgICB0aGlzLm1vZGVsID0gbmV3IGFwcC5Nb2Rl
bCh0aGlzLnN0b3JhZ2UpOworICAgICAgICB0aGlzLnRlbXBsYXRlID0gbmV3IGFwcC5UZW1wbGF0
ZSgpOworICAgICAgICB0aGlzLnZpZXcgPSBuZXcgYXBwLlZpZXcodGhpcy50ZW1wbGF0ZSk7Cisg
ICAgICAgIHRoaXMuY29udHJvbGxlciA9IG5ldyBhcHAuQ29udHJvbGxlcih0aGlzLm1vZGVsLCB0
aGlzLnZpZXcpOwogICAgIH0KIAogICAgIHZhciB0b2RvID0gbmV3IFRvZG8oJ3RvZG9zLXZhbmls
bGFqcycpOwogCi0gICAgd2luZG93LnRvZG8gPSB0b2RvOyAvLyBCZW5jaG1hcmsgbW9kaWZpY2F0
aW9uOyBFeHBvc2UgdG9kbyBzbyB0aGF0IHdlIGNhbiBjYWxsIG1ldGhvZHMgb24gaXQuCi0KLSAg
ICAvKioKLSAgICAgKiBGaW5kcyB0aGUgbW9kZWwgSUQgb2YgdGhlIGNsaWNrZWQgRE9NIGVsZW1l
bnQKLSAgICAgKgotICAgICAqIEBwYXJhbSB7b2JqZWN0fSB0YXJnZXQgVGhlIHN0YXJ0aW5nIHBv
aW50IGluIHRoZSBET00gZm9yIGl0IHRvIHRyeSB0byBmaW5kCi0gICAgICogdGhlIElEIG9mIHRo
ZSBtb2RlbC4KLSAgICAgKi8KLSAgICBmdW5jdGlvbiBsb29rdXBJZCh0YXJnZXQpIHsKLSAgICB2
YXIgbG9va3VwID0gdGFyZ2V0OwotCi0gICAgd2hpbGUgKGxvb2t1cC5ub2RlTmFtZSAhPT0gJ0xJ
JykgewotICAgIGxvb2t1cCA9IGxvb2t1cC5wYXJlbnROb2RlOworICAgIGZ1bmN0aW9uIHNldFZp
ZXcoKSB7CisgICAgICAgIHRvZG8uY29udHJvbGxlci5zZXRWaWV3KGRvY3VtZW50LmxvY2F0aW9u
Lmhhc2gpOwogICAgIH0KLQotICAgIHJldHVybiBsb29rdXAuZGF0YXNldC5pZDsKLSAgICB9Ci0K
LSAgICAvLyBXaGVuIHRoZSBlbnRlciBrZXkgaXMgcHJlc3NlZCBmaXJlIHRoZSBhZGRJdGVtIG1l
dGhvZC4KLSAgICAkJCgnI25ldy10b2RvJykuYWRkRXZlbnRMaXN0ZW5lcigna2V5cHJlc3MnLCBm
dW5jdGlvbiAoZSkgewotICAgIHRvZG8uY29udHJvbGxlci5hZGRJdGVtKGUpOwotICAgIH0pOwot
Ci0gICAgLy8gQSBkZWxlZ2F0aW9uIGV2ZW50LiBXaWxsIGNoZWNrIHdoYXQgaXRlbSB3YXMgY2xp
Y2tlZCB3aGVuZXZlciB5b3UgY2xpY2sgb24gYW55Ci0gICAgLy8gcGFydCBvZiBhIGxpc3QgaXRl
bS4KLSAgICAkJCgnI3RvZG8tbGlzdCcpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rp
b24gKGUpIHsKLSAgICB2YXIgdGFyZ2V0ID0gZS50YXJnZXQ7Ci0KLSAgICAvLyBJZiB5b3UgY2xp
Y2sgYSBkZXN0cm95IGJ1dHRvbgotICAgIGlmICh0YXJnZXQuY2xhc3NOYW1lLmluZGV4T2YoJ2Rl
c3Ryb3knKSA+IC0xKSB7Ci0gICAgdG9kby5jb250cm9sbGVyLnJlbW92ZUl0ZW0obG9va3VwSWQo
dGFyZ2V0KSk7Ci0gICAgfQotCi0gICAgLy8gSWYgeW91IGNsaWNrIHRoZSBjaGVja21hcmsKLSAg
ICBpZiAodGFyZ2V0LmNsYXNzTmFtZS5pbmRleE9mKCd0b2dnbGUnKSA+IC0xKSB7Ci0gICAgdG9k
by5jb250cm9sbGVyLnRvZ2dsZUNvbXBsZXRlKGxvb2t1cElkKHRhcmdldCksIHRhcmdldCk7Ci0g
ICAgfQotCi0gICAgfSk7Ci0KLSAgICAkJCgnI3RvZG8tbGlzdCcpLmFkZEV2ZW50TGlzdGVuZXIo
J2RibGNsaWNrJywgZnVuY3Rpb24gKGUpIHsKLSAgICB2YXIgdGFyZ2V0ID0gZS50YXJnZXQ7Ci0K
LSAgICBpZiAodGFyZ2V0Lm5vZGVOYW1lID09PSAnTEFCRUwnKSB7Ci0gICAgdG9kby5jb250cm9s
bGVyLmVkaXRJdGVtKGxvb2t1cElkKHRhcmdldCksIHRhcmdldCk7Ci0gICAgfQotICAgIH0pOwot
Ci0gICAgJCQoJyN0b2dnbGUtYWxsJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlv
biAoZSkgewotICAgIHRvZG8uY29udHJvbGxlci50b2dnbGVBbGwoZSk7Ci0gICAgfSk7Ci0KLSAg
ICAkJCgnI2NsZWFyLWNvbXBsZXRlZCcpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rp
b24gKCkgewotICAgIHRvZG8uY29udHJvbGxlci5yZW1vdmVDb21wbGV0ZWRJdGVtcygpOwotICAg
IH0pOworICAgICRvbih3aW5kb3csICdsb2FkJywgc2V0Vmlldyk7CisgICAgJG9uKHdpbmRvdywg
J2hhc2hjaGFuZ2UnLCBzZXRWaWV3KTsKIH0pKCk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxs
YWpzL2pzL2NvbnRyb2xsZXIuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL2pzL2NvbnRyb2xsZXIuanMK
aW5kZXggZTNhMGQ2YzgxZTAyMDI3ZGVhZjU3YjQ3Njc0ZGZmZTljMjAzZDBjOC4uMGZiYzYyYTg5
ZTY1ZWI3YjgxNDA3YmNiZDE3Y2ZiMDI3YjRjZTY4NyAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3Zhbmls
bGFqcy9qcy9jb250cm9sbGVyLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvanMvY29udHJvbGxl
ci5qcwpAQCAtMSw0ICsxLDMgQEAKLS8qZ2xvYmFsICQkLCAkICovCiAoZnVuY3Rpb24gKHdpbmRv
dykgewogICAgICd1c2Ugc3RyaWN0JzsKIApAQCAtNiwxNTIgKzUsMTQwIEBACiAgICAgICogVGFr
ZXMgYSBtb2RlbCBhbmQgdmlldyBhbmQgYWN0cyBhcyB0aGUgY29udHJvbGxlciBiZXR3ZWVuIHRo
ZW0KICAgICAgKgogICAgICAqIEBjb25zdHJ1Y3RvcgotICAgICAqIEBwYXJhbSB7b2JqZWN0fSBt
b2RlbCBUaGUgbW9kZWwgY29uc3RydWN0b3IKLSAgICAgKiBAcGFyYW0ge29iamVjdH0gdmlldyBU
aGUgdmlldyBjb25zdHJ1Y3RvcgorICAgICAqIEBwYXJhbSB7b2JqZWN0fSBtb2RlbCBUaGUgbW9k
ZWwgaW5zdGFuY2UKKyAgICAgKiBAcGFyYW0ge29iamVjdH0gdmlldyBUaGUgdmlldyBpbnN0YW5j
ZQogICAgICAqLwogICAgIGZ1bmN0aW9uIENvbnRyb2xsZXIobW9kZWwsIHZpZXcpIHsKLSAgICB0
aGlzLm1vZGVsID0gbW9kZWw7Ci0gICAgdGhpcy52aWV3ID0gdmlldzsKLQotICAgIHRoaXMuRU5U
RVJfS0VZID0gMTM7Ci0gICAgdGhpcy5FU0NBUEVfS0VZID0gMjc7Ci0KLSAgICB0aGlzLiRtYWlu
ID0gJCQoJyNtYWluJyk7Ci0gICAgdGhpcy4kdG9nZ2xlQWxsID0gJCQoJyN0b2dnbGUtYWxsJyk7
Ci0gICAgdGhpcy4kdG9kb0xpc3QgPSAkJCgnI3RvZG8tbGlzdCcpOwotICAgIHRoaXMuJHRvZG9J
dGVtQ291bnRlciA9ICQkKCcjdG9kby1jb3VudCcpOwotICAgIHRoaXMuJGNsZWFyQ29tcGxldGVk
ID0gJCQoJyNjbGVhci1jb21wbGV0ZWQnKTsKLSAgICB0aGlzLiRmb290ZXIgPSAkJCgnI2Zvb3Rl
cicpOwotCi0gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBmdW5jdGlvbiAoKSB7
Ci0gICAgdGhpcy5fdXBkYXRlRmlsdGVyU3RhdGUoKTsKLSAgICB9LmJpbmQodGhpcykpOwotCi0g
ICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2hhc2hjaGFuZ2UnLCBmdW5jdGlvbiAoKSB7Ci0g
ICAgdGhpcy5fdXBkYXRlRmlsdGVyU3RhdGUoKTsKLSAgICB9LmJpbmQodGhpcykpOworICAgICAg
ICB2YXIgc2VsZiA9IHRoaXM7CisgICAgICAgIHNlbGYubW9kZWwgPSBtb2RlbDsKKyAgICAgICAg
c2VsZi52aWV3ID0gdmlldzsKKworICAgICAgICBzZWxmLnZpZXcuYmluZCgnbmV3VG9kbycsIGZ1
bmN0aW9uICh0aXRsZSkgeworICAgICAgICAgICAgc2VsZi5hZGRJdGVtKHRpdGxlKTsKKyAgICAg
ICAgfSk7CisKKyAgICAgICAgc2VsZi52aWV3LmJpbmQoJ2l0ZW1FZGl0JywgZnVuY3Rpb24gKGl0
ZW0pIHsKKyAgICAgICAgICAgIHNlbGYuZWRpdEl0ZW0oaXRlbS5pZCk7CisgICAgICAgIH0pOwor
CisgICAgICAgIHNlbGYudmlldy5iaW5kKCdpdGVtRWRpdERvbmUnLCBmdW5jdGlvbiAoaXRlbSkg
eworICAgICAgICAgICAgc2VsZi5lZGl0SXRlbVNhdmUoaXRlbS5pZCwgaXRlbS50aXRsZSk7Cisg
ICAgICAgIH0pOworCisgICAgICAgIHNlbGYudmlldy5iaW5kKCdpdGVtRWRpdENhbmNlbCcsIGZ1
bmN0aW9uIChpdGVtKSB7CisgICAgICAgICAgICBzZWxmLmVkaXRJdGVtQ2FuY2VsKGl0ZW0uaWQp
OworICAgICAgICB9KTsKKworICAgICAgICBzZWxmLnZpZXcuYmluZCgnaXRlbVJlbW92ZScsIGZ1
bmN0aW9uIChpdGVtKSB7CisgICAgICAgICAgICBzZWxmLnJlbW92ZUl0ZW0oaXRlbS5pZCk7Cisg
ICAgICAgIH0pOworCisgICAgICAgIHNlbGYudmlldy5iaW5kKCdpdGVtVG9nZ2xlJywgZnVuY3Rp
b24gKGl0ZW0pIHsKKyAgICAgICAgICAgIHNlbGYudG9nZ2xlQ29tcGxldGUoaXRlbS5pZCwgaXRl
bS5jb21wbGV0ZWQpOworICAgICAgICB9KTsKKworICAgICAgICBzZWxmLnZpZXcuYmluZCgncmVt
b3ZlQ29tcGxldGVkJywgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgc2VsZi5yZW1vdmVDb21w
bGV0ZWRJdGVtcygpOworICAgICAgICB9KTsKKworICAgICAgICBzZWxmLnZpZXcuYmluZCgndG9n
Z2xlQWxsJywgZnVuY3Rpb24gKHN0YXR1cykgeworICAgICAgICAgICAgc2VsZi50b2dnbGVBbGwo
c3RhdHVzLmNvbXBsZXRlZCk7CisgICAgICAgIH0pOwogICAgIH0KIAogICAgIC8qKgorICAgICAq
IExvYWRzIGFuZCBpbml0aWFsaXNlcyB0aGUgdmlldworICAgICAqCisgICAgICogQHBhcmFtIHtz
dHJpbmd9ICcnIHwgJ2FjdGl2ZScgfCAnY29tcGxldGVkJworICAgICAqLworICAgIENvbnRyb2xs
ZXIucHJvdG90eXBlLnNldFZpZXcgPSBmdW5jdGlvbiAobG9jYXRpb25IYXNoKSB7CisgICAgICAg
IHZhciByb3V0ZSA9IGxvY2F0aW9uSGFzaC5zcGxpdCgnLycpWzFdOworICAgICAgICB2YXIgcGFn
ZSA9IHJvdXRlIHx8ICcnOworICAgICAgICB0aGlzLl91cGRhdGVGaWx0ZXJTdGF0ZShwYWdlKTsK
KyAgICB9OworCisgICAgLyoqCiAgICAgICogQW4gZXZlbnQgdG8gZmlyZSBvbiBsb2FkLiBXaWxs
IGdldCBhbGwgaXRlbXMgYW5kIGRpc3BsYXkgdGhlbSBpbiB0aGUKICAgICAgKiB0b2RvLWxpc3QK
ICAgICAgKi8KICAgICBDb250cm9sbGVyLnByb3RvdHlwZS5zaG93QWxsID0gZnVuY3Rpb24gKCkg
ewotICAgIHRoaXMubW9kZWwucmVhZChmdW5jdGlvbiAoZGF0YSkgewotICAgIHRoaXMuJHRvZG9M
aXN0LmlubmVySFRNTCA9IHRoaXMudmlldy5zaG93KGRhdGEpOwotICAgIH0uYmluZCh0aGlzKSk7
CisgICAgICAgIHZhciBzZWxmID0gdGhpczsKKyAgICAgICAgc2VsZi5tb2RlbC5yZWFkKGZ1bmN0
aW9uIChkYXRhKSB7CisgICAgICAgICAgICBzZWxmLnZpZXcucmVuZGVyKCdzaG93RW50cmllcycs
IGRhdGEpOworICAgICAgICB9KTsKICAgICB9OwogCiAgICAgLyoqCiAgICAgICogUmVuZGVycyBh
bGwgYWN0aXZlIHRhc2tzCiAgICAgICovCiAgICAgQ29udHJvbGxlci5wcm90b3R5cGUuc2hvd0Fj
dGl2ZSA9IGZ1bmN0aW9uICgpIHsKLSAgICB0aGlzLm1vZGVsLnJlYWQoeyBjb21wbGV0ZWQ6IDAg
fSwgZnVuY3Rpb24gKGRhdGEpIHsKLSAgICB0aGlzLiR0b2RvTGlzdC5pbm5lckhUTUwgPSB0aGlz
LnZpZXcuc2hvdyhkYXRhKTsKLSAgICB9LmJpbmQodGhpcykpOworICAgICAgICB2YXIgc2VsZiA9
IHRoaXM7CisgICAgICAgIHNlbGYubW9kZWwucmVhZCh7IGNvbXBsZXRlZDogZmFsc2UgfSwgZnVu
Y3Rpb24gKGRhdGEpIHsKKyAgICAgICAgICAgIHNlbGYudmlldy5yZW5kZXIoJ3Nob3dFbnRyaWVz
JywgZGF0YSk7CisgICAgICAgIH0pOwogICAgIH07CiAKICAgICAvKioKICAgICAgKiBSZW5kZXJz
IGFsbCBjb21wbGV0ZWQgdGFza3MKICAgICAgKi8KICAgICBDb250cm9sbGVyLnByb3RvdHlwZS5z
aG93Q29tcGxldGVkID0gZnVuY3Rpb24gKCkgewotICAgIHRoaXMubW9kZWwucmVhZCh7IGNvbXBs
ZXRlZDogMSB9LCBmdW5jdGlvbiAoZGF0YSkgewotICAgIHRoaXMuJHRvZG9MaXN0LmlubmVySFRN
TCA9IHRoaXMudmlldy5zaG93KGRhdGEpOwotICAgIH0uYmluZCh0aGlzKSk7CisgICAgICAgIHZh
ciBzZWxmID0gdGhpczsKKyAgICAgICAgc2VsZi5tb2RlbC5yZWFkKHsgY29tcGxldGVkOiB0cnVl
IH0sIGZ1bmN0aW9uIChkYXRhKSB7CisgICAgICAgICAgICBzZWxmLnZpZXcucmVuZGVyKCdzaG93
RW50cmllcycsIGRhdGEpOworICAgICAgICB9KTsKICAgICB9OwogCiAgICAgLyoqCiAgICAgICog
QW4gZXZlbnQgdG8gZmlyZSB3aGVuZXZlciB5b3Ugd2FudCB0byBhZGQgYW4gaXRlbS4gU2ltcGx5
IHBhc3MgaW4gdGhlIGV2ZW50CiAgICAgICogb2JqZWN0IGFuZCBpdCdsbCBoYW5kbGUgdGhlIERP
TSBpbnNlcnRpb24gYW5kIHNhdmluZyBvZiB0aGUgbmV3IGl0ZW0uCi0gICAgICoKLSAgICAgKiBA
cGFyYW0ge29iamVjdH0gZSBUaGUgZXZlbnQgb2JqZWN0CiAgICAgICovCi0gICAgQ29udHJvbGxl
ci5wcm90b3R5cGUuYWRkSXRlbSA9IGZ1bmN0aW9uIChlKSB7Ci0gICAgdmFyIGlucHV0ID0gJCQo
JyNuZXctdG9kbycpOwotICAgIHZhciB0aXRsZSA9IHRpdGxlIHx8ICcnOworICAgIENvbnRyb2xs
ZXIucHJvdG90eXBlLmFkZEl0ZW0gPSBmdW5jdGlvbiAodGl0bGUpIHsKKyAgICAgICAgdmFyIHNl
bGYgPSB0aGlzOwogCi0gICAgaWYgKGUua2V5Q29kZSA9PT0gdGhpcy5FTlRFUl9LRVkpIHsKLSAg
ICBpZiAoZS50YXJnZXQudmFsdWUudHJpbSgpID09PSAnJykgewotICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICB0aGlzLm1vZGVsLmNyZWF0ZShlLnRhcmdldC52YWx1ZSwgZnVuY3Rpb24gKGRhdGEp
IHsKLSAgICBpbnB1dC52YWx1ZSA9ICcnOwotICAgIHRoaXMuX2ZpbHRlcih0cnVlKTsKLSAgICB9
LmJpbmQodGhpcykpOwotICAgIH0KKyAgICAgICAgaWYgKHRpdGxlLnRyaW0oKSA9PT0gJycpIHsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCisgICAgICAgIHNlbGYubW9kZWwuY3Jl
YXRlKHRpdGxlLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBzZWxmLnZpZXcucmVuZGVyKCdj
bGVhck5ld1RvZG8nKTsKKyAgICAgICAgICAgIHNlbGYuX2ZpbHRlcih0cnVlKTsKKyAgICAgICAg
fSk7CiAgICAgfTsKIAotICAgIC8qKgotICAgICAqIEhpZGVzIHRoZSBsYWJlbCB0ZXh0IGFuZCBj
cmVhdGVzIGFuIGlucHV0IHRvIGVkaXQgdGhlIHRpdGxlIG9mIHRoZSBpdGVtLgotICAgICAqIFdo
ZW4geW91IGhpdCBlbnRlciBvciBibHVyIG91dCBvZiB0aGUgaW5wdXQgaXQgc2F2ZXMgaXQgYW5k
wqB1cGRhdGVzIHRoZSBVSQotICAgICAqIHdpdGggdGhlIG5ldyBuYW1lLgotICAgICAqCi0gICAg
ICogQHBhcmFtIHtudW1iZXJ9IGlkIFRoZSBpZCBvZiB0aGUgaXRlbSB0byBlZGl0Ci0gICAgICog
QHBhcmFtIHtvYmplY3R9IGxhYmVsIFRoZSBsYWJlbCB5b3Ugd2FudCB0byBlZGl0IHRoZSB0ZXh0
IG9mCisgICAgLyoKKyAgICAgKiBUcmlnZ2VycyB0aGUgaXRlbSBlZGl0aW5nIG1vZGUuCiAgICAg
ICovCi0gICAgQ29udHJvbGxlci5wcm90b3R5cGUuZWRpdEl0ZW0gPSBmdW5jdGlvbiAoaWQsIGxh
YmVsKSB7Ci0gICAgdmFyIGxpID0gIGxhYmVsOwotCi0gICAgLy8gVGhpcyBmaW5kcyB0aGUgPGxh
YmVsPidzIHBhcmVudCA8bGk+Ci0gICAgd2hpbGUgKGxpLm5vZGVOYW1lICE9PSAnTEknKSB7Ci0g
ICAgbGkgPSBsaS5wYXJlbnROb2RlOwotICAgIH0KLQotICAgIHZhciBvblNhdmVIYW5kbGVyID0g
ZnVuY3Rpb24gKCkgewotICAgIHZhciB2YWx1ZSA9IGlucHV0LnZhbHVlLnRyaW0oKTsKLSAgICB2
YXIgZGlzY2FyZGluZyA9IGlucHV0LmRhdGFzZXQuZGlzY2FyZDsKLQotICAgIGlmICh2YWx1ZS5s
ZW5ndGggJiYgIWRpc2NhcmRpbmcpIHsKLSAgICB0aGlzLm1vZGVsLnVwZGF0ZShpZCwgeyB0aXRs
ZTogaW5wdXQudmFsdWUgfSk7Ci0KLSAgICAvLyBJbnN0ZWFkIG9mIHJlLXJlbmRlcmluZyB0aGUg
d2hvbGUgdmlldyBqdXN0IHVwZGF0ZQotICAgIC8vIHRoaXMgcGllY2Ugb2YgaXQKLSAgICBsYWJl
bC5pbm5lckhUTUwgPSB2YWx1ZTsKLSAgICB9IGVsc2UgaWYgKHZhbHVlLmxlbmd0aCA9PT0gMCkg
ewotICAgIC8vIE5vIHZhbHVlIHdhcyBlbnRlcmVkIGluIHRoZSBpbnB1dC4gV2UnbGwgcmVtb3Zl
IHRoZSB0b2RvIGl0ZW0uCi0gICAgdGhpcy5yZW1vdmVJdGVtKGlkKTsKLSAgICB9Ci0KLSAgICAv
LyBSZW1vdmUgdGhlIGlucHV0IHNpbmNlIHdlIG5vIGxvbmdlciBuZWVkIGl0Ci0gICAgLy8gTGVz
cyBET00gbWVhbnMgZmFzdGVyIHJlbmRlcmluZwotICAgIGxpLnJlbW92ZUNoaWxkKGlucHV0KTsK
LQotICAgIC8vIFJlbW92ZSB0aGUgZWRpdGluZyBjbGFzcwotICAgIGxpLmNsYXNzTmFtZSA9IGxp
LmNsYXNzTmFtZS5yZXBsYWNlKCdlZGl0aW5nJywgJycpOwotICAgIH0uYmluZCh0aGlzKTsKLQot
ICAgIC8vIEFwcGVuZCB0aGUgZWRpdGluZyBjbGFzcwotICAgIGxpLmNsYXNzTmFtZSA9IGxpLmNs
YXNzTmFtZSArICcgZWRpdGluZyc7Ci0KLSAgICB2YXIgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdpbnB1dCcpOwotICAgIGlucHV0LmNsYXNzTmFtZSA9ICdlZGl0JzsKLQotICAgIC8v
IEdldCB0aGUgaW5uZXJIVE1MIG9mIHRoZSBsYWJlbCBpbnN0ZWFkIG9mIHJlcXVlc3RpbmcgdGhl
IGRhdGEgZnJvbSB0aGUKLSAgICAvLyBPUk0uIElmIHRoaXMgd2VyZSBhIHJlYWwgREIgdGhpcyB3
b3VsZCBzYXZlIGEgbG90IG9mIHRpbWUgYW5kIHdvdWxkIGF2b2lkCi0gICAgLy8gYSBzcGlubmVy
IGdpZi4KLSAgICBpbnB1dC52YWx1ZSA9IGxhYmVsLmlubmVySFRNTDsKLQotICAgIGxpLmFwcGVu
ZENoaWxkKGlucHV0KTsKLQotICAgIGlucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCBvblNh
dmVIYW5kbGVyKTsKLQotICAgIGlucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2tleXByZXNzJywgZnVu
Y3Rpb24gKGUpIHsKLSAgICBpZiAoZS5rZXlDb2RlID09PSB0aGlzLkVOVEVSX0tFWSkgewotICAg
IC8vIFJlbW92ZSB0aGUgY3Vyc29yIGZyb20gdGhlIGlucHV0IHdoZW4geW91IGhpdCBlbnRlciBq
dXN0IGxpa2UgaWYgaXQKLSAgICAvLyB3ZXJlIGEgcmVhbCBmb3JtCi0gICAgaW5wdXQuYmx1cigp
OwotICAgIH0KKyAgICBDb250cm9sbGVyLnByb3RvdHlwZS5lZGl0SXRlbSA9IGZ1bmN0aW9uIChp
ZCkgeworICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CisgICAgICAgIHNlbGYubW9kZWwucmVhZChp
ZCwgZnVuY3Rpb24gKGRhdGEpIHsKKyAgICAgICAgICAgIHNlbGYudmlldy5yZW5kZXIoJ2VkaXRJ
dGVtJywge2lkOiBpZCwgdGl0bGU6IGRhdGFbMF0udGl0bGV9KTsKKyAgICAgICAgfSk7CisgICAg
fTsKIAotICAgIGlmIChlLmtleUNvZGUgPT09IHRoaXMuRVNDQVBFX0tFWSkgewotICAgIC8vIERp
c2NhcmQgdGhlIGNoYW5nZXMKLSAgICBpbnB1dC5kYXRhc2V0LmRpc2NhcmQgPSB0cnVlOwotICAg
IGlucHV0LmJsdXIoKTsKLSAgICB9Ci0gICAgfS5iaW5kKHRoaXMpKTsKKyAgICAvKgorICAgICAq
IEZpbmlzaGVzIHRoZSBpdGVtIGVkaXRpbmcgbW9kZSBzdWNjZXNzZnVsbHkuCisgICAgICovCisg
ICAgQ29udHJvbGxlci5wcm90b3R5cGUuZWRpdEl0ZW1TYXZlID0gZnVuY3Rpb24gKGlkLCB0aXRs
ZSkgeworICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CisgICAgICAgIHRpdGxlID0gdGl0bGUudHJp
bSgpOworCisgICAgICAgIGlmICh0aXRsZS5sZW5ndGggIT09IDApIHsKKyAgICAgICAgICAgIHNl
bGYubW9kZWwudXBkYXRlKGlkLCB7dGl0bGU6IHRpdGxlfSwgZnVuY3Rpb24gKCkgeworICAgICAg
ICAgICAgICAgIHNlbGYudmlldy5yZW5kZXIoJ2VkaXRJdGVtRG9uZScsIHtpZDogaWQsIHRpdGxl
OiB0aXRsZX0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBzZWxmLnJlbW92ZUl0ZW0oaWQpOworICAgICAgICB9CisgICAgfTsKIAotICAgIGlucHV0LmZv
Y3VzKCk7CisgICAgLyoKKyAgICAgKiBDYW5jZWxzIHRoZSBpdGVtIGVkaXRpbmcgbW9kZS4KKyAg
ICAgKi8KKyAgICBDb250cm9sbGVyLnByb3RvdHlwZS5lZGl0SXRlbUNhbmNlbCA9IGZ1bmN0aW9u
IChpZCkgeworICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CisgICAgICAgIHNlbGYubW9kZWwucmVh
ZChpZCwgZnVuY3Rpb24gKGRhdGEpIHsKKyAgICAgICAgICAgIHNlbGYudmlldy5yZW5kZXIoJ2Vk
aXRJdGVtRG9uZScsIHtpZDogaWQsIHRpdGxlOiBkYXRhWzBdLnRpdGxlfSk7CisgICAgICAgIH0p
OwogICAgIH07CiAKICAgICAvKioKQEAgLTE2MiwyNCArMTQ5LDI2IEBACiAgICAgICogc3RvcmFn
ZQogICAgICAqLwogICAgIENvbnRyb2xsZXIucHJvdG90eXBlLnJlbW92ZUl0ZW0gPSBmdW5jdGlv
biAoaWQpIHsKLSAgICB0aGlzLm1vZGVsLnJlbW92ZShpZCwgZnVuY3Rpb24gKCkgewotICAgIHRo
aXMuJHRvZG9MaXN0LnJlbW92ZUNoaWxkKCQkKCdbZGF0YS1pZD0iJyArIGlkICsgJyJdJykpOwot
ICAgIH0uYmluZCh0aGlzKSk7CisgICAgICAgIHZhciBzZWxmID0gdGhpczsKKyAgICAgICAgc2Vs
Zi5tb2RlbC5yZW1vdmUoaWQsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHNlbGYudmlldy5y
ZW5kZXIoJ3JlbW92ZUl0ZW0nLCBpZCk7CisgICAgICAgIH0pOwogCi0gICAgdGhpcy5fZmlsdGVy
KCk7CisgICAgICAgIHNlbGYuX2ZpbHRlcigpOwogICAgIH07CiAKICAgICAvKioKICAgICAgKiBX
aWxsIHJlbW92ZSBhbGwgY29tcGxldGVkIGl0ZW1zIGZyb20gdGhlIERPTSBhbmQgc3RvcmFnZS4K
ICAgICAgKi8KICAgICBDb250cm9sbGVyLnByb3RvdHlwZS5yZW1vdmVDb21wbGV0ZWRJdGVtcyA9
IGZ1bmN0aW9uICgpIHsKLSAgICB0aGlzLm1vZGVsLnJlYWQoeyBjb21wbGV0ZWQ6IDEgfSwgZnVu
Y3Rpb24gKGRhdGEpIHsKLSAgICBkYXRhLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHsKLSAgICB0
aGlzLnJlbW92ZUl0ZW0oaXRlbS5pZCk7Ci0gICAgfS5iaW5kKHRoaXMpKTsKLSAgICB9LmJpbmQo
dGhpcykpOwotCi0gICAgdGhpcy5fZmlsdGVyKCk7CisgICAgICAgIHZhciBzZWxmID0gdGhpczsK
KyAgICAgICAgc2VsZi5tb2RlbC5yZWFkKHsgY29tcGxldGVkOiB0cnVlIH0sIGZ1bmN0aW9uIChk
YXRhKSB7CisgICAgICAgICAgICBkYXRhLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHsKKyAgICAg
ICAgICAgICAgICBzZWxmLnJlbW92ZUl0ZW0oaXRlbS5pZCk7CisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgfSk7CisKKyAgICAgICAgc2VsZi5fZmlsdGVyKCk7CiAgICAgfTsKIAogICAgIC8qKgpA
QCAtMTkxLDQ4ICsxODAsMzMgQEAKICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgb3Ig
bm90CiAgICAgICogQHBhcmFtIHtib29sZWFufHVuZGVmaW5lZH0gc2lsZW50IFByZXZlbnQgcmUt
ZmlsdGVyaW5nIHRoZSB0b2RvIGl0ZW1zCiAgICAgICovCi0gICAgQ29udHJvbGxlci5wcm90b3R5
cGUudG9nZ2xlQ29tcGxldGUgPSBmdW5jdGlvbiAoaWQsIGNoZWNrYm94LCBzaWxlbnQpIHsKLSAg
ICB2YXIgY29tcGxldGVkID0gY2hlY2tib3guY2hlY2tlZCA/IDEgOiAwOwotCi0gICAgdGhpcy5t
b2RlbC51cGRhdGUoaWQsIHsgY29tcGxldGVkOiBjb21wbGV0ZWQgfSwgZnVuY3Rpb24gKCkgewot
ICAgIHZhciBsaXN0SXRlbSA9ICQkKCdbZGF0YS1pZD0iJyArIGlkICsgJyJdJyk7Ci0KLSAgICBp
ZiAoIWxpc3RJdGVtKSB7Ci0gICAgcmV0dXJuOwotICAgIH0KLQotICAgIGxpc3RJdGVtLmNsYXNz
TmFtZSA9IGNvbXBsZXRlZCA/ICdjb21wbGV0ZWQnIDogJyc7Ci0KLSAgICAvLyBJbiBjYXNlIGl0
IHdhcyB0b2dnbGVkIGZyb20gYW4gZXZlbnQgYW5kIG5vdCBieSBjbGlja2luZyB0aGUgY2hlY2ti
b3gKLSAgICBsaXN0SXRlbS5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpLmNoZWNrZWQgPSBjb21wbGV0
ZWQ7Ci0gICAgfSk7Ci0KLSAgICBpZiAoIXNpbGVudCkgewotICAgIHRoaXMuX2ZpbHRlcigpOwot
ICAgIH0KKyAgICBDb250cm9sbGVyLnByb3RvdHlwZS50b2dnbGVDb21wbGV0ZSA9IGZ1bmN0aW9u
IChpZCwgY29tcGxldGVkLCBzaWxlbnQpIHsKKyAgICAgICAgdmFyIHNlbGYgPSB0aGlzOworICAg
ICAgICBzZWxmLm1vZGVsLnVwZGF0ZShpZCwgeyBjb21wbGV0ZWQ6IGNvbXBsZXRlZCB9LCBmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICBzZWxmLnZpZXcucmVuZGVyKCdlbGVtZW50Q29tcGxldGUn
LCB7CisgICAgICAgICAgICAgICAgaWQ6IGlkLAorICAgICAgICAgICAgICAgIGNvbXBsZXRlZDog
Y29tcGxldGVkCisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaWYgKCFz
aWxlbnQpIHsKKyAgICAgICAgICAgIHNlbGYuX2ZpbHRlcigpOworICAgICAgICB9CiAgICAgfTsK
IAogICAgIC8qKgotICAgICAqIFdpbGwgdG9nZ2xlIEFMTCBjaGVja2JveGUncyBvbi9vZmYgc3Rh
dGUgYW5kIGNvbXBsZXRlbmVzcyBvZiBtb2RlbHMuCisgICAgICogV2lsbCB0b2dnbGUgQUxMIGNo
ZWNrYm94ZXMnIG9uL29mZiBzdGF0ZSBhbmQgY29tcGxldGVuZXNzIG9mIG1vZGVscy4KICAgICAg
KiBKdXN0IHBhc3MgaW4gdGhlIGV2ZW50IG9iamVjdC4KLSAgICAgKgotICAgICAqIEBwYXJhbSB7
b2JqZWN0fSBlIFRoZSBldmVudCBvYmplY3QKICAgICAgKi8KLSAgICBDb250cm9sbGVyLnByb3Rv
dHlwZS50b2dnbGVBbGwgPSBmdW5jdGlvbiAoZSkgewotICAgIHZhciBjb21wbGV0ZWQgPSBlLnRh
cmdldC5jaGVja2VkID8gMSA6IDA7Ci0gICAgdmFyIHF1ZXJ5ID0gMDsKLQotICAgIGlmIChjb21w
bGV0ZWQgPT09IDApIHsKLSAgICBxdWVyeSA9IDE7Ci0gICAgfQotCi0gICAgdGhpcy5tb2RlbC5y
ZWFkKHsgY29tcGxldGVkOiBxdWVyeSB9LCBmdW5jdGlvbiAoZGF0YSkgewotICAgIGRhdGEuZm9y
RWFjaChmdW5jdGlvbiAoaXRlbSkgewotICAgIHRoaXMudG9nZ2xlQ29tcGxldGUoaXRlbS5pZCwg
ZS50YXJnZXQsIHRydWUpOwotICAgIH0uYmluZCh0aGlzKSk7Ci0gICAgfS5iaW5kKHRoaXMpKTsK
LQotICAgIHRoaXMuX2ZpbHRlcigpOworICAgIENvbnRyb2xsZXIucHJvdG90eXBlLnRvZ2dsZUFs
bCA9IGZ1bmN0aW9uIChjb21wbGV0ZWQpIHsKKyAgICAgICAgdmFyIHNlbGYgPSB0aGlzOworICAg
ICAgICBzZWxmLm1vZGVsLnJlYWQoeyBjb21wbGV0ZWQ6ICFjb21wbGV0ZWQgfSwgZnVuY3Rpb24g
KGRhdGEpIHsKKyAgICAgICAgICAgIGRhdGEuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkgeworICAg
ICAgICAgICAgICAgIHNlbGYudG9nZ2xlQ29tcGxldGUoaXRlbS5pZCwgY29tcGxldGVkLCB0cnVl
KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKworICAgICAgICBzZWxmLl9maWx0ZXIo
KTsKICAgICB9OwogCiAgICAgLyoqCkBAIC0yNDAsMzcgKzIxNCwxNyBAQAogICAgICAqIG51bWJl
ciBvZiB0b2Rvcy4KICAgICAgKi8KICAgICBDb250cm9sbGVyLnByb3RvdHlwZS5fdXBkYXRlQ291
bnQgPSBmdW5jdGlvbiAoKSB7Ci0gICAgdmFyIHRvZG9zID0gdGhpcy5tb2RlbC5nZXRDb3VudCgp
OwotCi0gICAgdGhpcy4kdG9kb0l0ZW1Db3VudGVyLmlubmVySFRNTCA9IHRoaXMudmlldy5pdGVt
Q291bnRlcih0b2Rvcy5hY3RpdmUpOwotCi0gICAgdGhpcy4kY2xlYXJDb21wbGV0ZWQuaW5uZXJI
VE1MID0gdGhpcy52aWV3LmNsZWFyQ29tcGxldGVkQnV0dG9uKHRvZG9zLmNvbXBsZXRlZCk7Ci0g
ICAgdGhpcy4kY2xlYXJDb21wbGV0ZWQuc3R5bGUuZGlzcGxheSA9IHRvZG9zLmNvbXBsZXRlZCA+
IDAgPyAnYmxvY2snIDogJ25vbmUnOwotCi0gICAgdGhpcy4kdG9nZ2xlQWxsLmNoZWNrZWQgPSB0
b2Rvcy5jb21wbGV0ZWQgPT09IHRvZG9zLnRvdGFsOwotCi0gICAgdGhpcy5fdG9nZ2xlRnJhbWUo
dG9kb3MpOwotICAgIH07Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbWFpbiBib2R5IGFuZCBmb290
ZXIgZWxlbWVudHMgc2hvdWxkIG5vdCBiZSB2aXNpYmxlIHdoZW4gdGhlcmUgYXJlIG5vCi0gICAg
ICogdG9kb3MgbGVmdC4KLSAgICAgKgotICAgICAqIEBwYXJhbSB7b2JqZWN0fSB0b2RvcyBDb250
YWlucyBhIGNvdW50IG9mIGFsbCB0b2RvcywgYW5kIHRoZWlyIHN0YXR1c2VzLgotICAgICAqLwot
ICAgIENvbnRyb2xsZXIucHJvdG90eXBlLl90b2dnbGVGcmFtZSA9IGZ1bmN0aW9uICh0b2Rvcykg
ewotICAgIHZhciBmcmFtZURpc3BsYXkgPSB0aGlzLiRtYWluLnN0eWxlLmRpc3BsYXk7Ci0gICAg
dmFyIGZyYW1lVmlzaWJsZSA9IGZyYW1lRGlzcGxheSA9PT0gJ2Jsb2NrJyB8fCBmcmFtZURpc3Bs
YXkgPT09ICcnOwotCi0gICAgaWYgKHRvZG9zLnRvdGFsID09PSAwICYmIGZyYW1lVmlzaWJsZSkg
ewotICAgIHRoaXMuJG1haW4uc3R5bGUuZGlzcGxheSA9ICdub25lJzsKLSAgICB0aGlzLiRmb290
ZXIuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKLSAgICB9Ci0KLSAgICBpZiAodG9kb3MudG90YWwg
PiAwICYmICFmcmFtZVZpc2libGUpIHsKLSAgICB0aGlzLiRtYWluLnN0eWxlLmRpc3BsYXkgPSAn
YmxvY2snOwotICAgIHRoaXMuJGZvb3Rlci5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKLSAgICB9
CisgICAgICAgIHZhciBzZWxmID0gdGhpczsKKyAgICAgICAgc2VsZi5tb2RlbC5nZXRDb3VudChm
dW5jdGlvbiAodG9kb3MpIHsKKyAgICAgICAgICAgIHNlbGYudmlldy5yZW5kZXIoJ3VwZGF0ZUVs
ZW1lbnRDb3VudCcsIHRvZG9zLmFjdGl2ZSk7CisgICAgICAgICAgICBzZWxmLnZpZXcucmVuZGVy
KCdjbGVhckNvbXBsZXRlZEJ1dHRvbicsIHsKKyAgICAgICAgICAgICAgICBjb21wbGV0ZWQ6IHRv
ZG9zLmNvbXBsZXRlZCwKKyAgICAgICAgICAgICAgICB2aXNpYmxlOiB0b2Rvcy5jb21wbGV0ZWQg
PiAwCisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgc2VsZi52aWV3LnJlbmRlcigndG9n
Z2xlQWxsJywge2NoZWNrZWQ6IHRvZG9zLmNvbXBsZXRlZCA9PT0gdG9kb3MudG90YWx9KTsKKyAg
ICAgICAgICAgIHNlbGYudmlldy5yZW5kZXIoJ2NvbnRlbnRCbG9ja1Zpc2liaWxpdHknLCB7dmlz
aWJsZTogdG9kb3MudG90YWwgPiAwfSk7CisgICAgICAgIH0pOwogICAgIH07CiAKICAgICAvKioK
QEAgLTI3OCw1MyArMjMyLDM5IEBACiAgICAgICogQHBhcmFtIHtib29sZWFufHVuZGVmaW5lZH0g
Zm9yY2UgIGZvcmNlcyBhIHJlLXBhaW50aW5nIG9mIHRvZG8gaXRlbXMuCiAgICAgICovCiAgICAg
Q29udHJvbGxlci5wcm90b3R5cGUuX2ZpbHRlciA9IGZ1bmN0aW9uIChmb3JjZSkgewotICAgIHZh
ciBhY3RpdmVSb3V0ZSA9IHRoaXMuX2FjdGl2ZVJvdXRlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgp
ICsgdGhpcy5fYWN0aXZlUm91dGUuc3Vic3RyKDEpOworICAgICAgICB2YXIgYWN0aXZlUm91dGUg
PSB0aGlzLl9hY3RpdmVSb3V0ZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHRoaXMuX2FjdGl2
ZVJvdXRlLnN1YnN0cigxKTsKIAotICAgIC8vIFVwZGF0ZSB0aGUgZWxlbWVudHMgb24gdGhlIHBh
Z2UsIHdoaWNoIGNoYW5nZSB3aXRoIGVhY2ggY29tcGxldGVkIHRvZG8KLSAgICB0aGlzLl91cGRh
dGVDb3VudCgpOworICAgICAgICAvLyBVcGRhdGUgdGhlIGVsZW1lbnRzIG9uIHRoZSBwYWdlLCB3
aGljaCBjaGFuZ2Ugd2l0aCBlYWNoIGNvbXBsZXRlZCB0b2RvCisgICAgICAgIHRoaXMuX3VwZGF0
ZUNvdW50KCk7CiAKLSAgICAvLyBJZiB0aGUgbGFzdCBhY3RpdmUgcm91dGUgaXNuJ3QgIkFsbCIs
IG9yIHdlJ3JlIHN3aXRjaGluZyByb3V0ZXMsIHdlCi0gICAgLy8gcmUtY3JlYXRlIHRoZSB0b2Rv
IGl0ZW0gZWxlbWVudHMsIGNhbGxpbmc6Ci0gICAgLy8gICB0aGlzLnNob3dbQWxsfEFjdGl2ZXxD
b21wbGV0ZWRdKCk7Ci0gICAgaWYgKGZvcmNlIHx8IHRoaXMuX2xhc3RBY3RpdmVSb3V0ZSAhPT0g
J0FsbCcgfHwgdGhpcy5fbGFzdEFjdGl2ZVJvdXRlICE9PSBhY3RpdmVSb3V0ZSkgewotICAgIHRo
aXNbJ3Nob3cnICsgYWN0aXZlUm91dGVdKCk7Ci0gICAgfQorICAgICAgICAvLyBJZiB0aGUgbGFz
dCBhY3RpdmUgcm91dGUgaXNuJ3QgIkFsbCIsIG9yIHdlJ3JlIHN3aXRjaGluZyByb3V0ZXMsIHdl
CisgICAgICAgIC8vIHJlLWNyZWF0ZSB0aGUgdG9kbyBpdGVtIGVsZW1lbnRzLCBjYWxsaW5nOgor
ICAgICAgICAvLyAgIHRoaXMuc2hvd1tBbGx8QWN0aXZlfENvbXBsZXRlZF0oKTsKKyAgICAgICAg
aWYgKGZvcmNlIHx8IHRoaXMuX2xhc3RBY3RpdmVSb3V0ZSAhPT0gJ0FsbCcgfHwgdGhpcy5fbGFz
dEFjdGl2ZVJvdXRlICE9PSBhY3RpdmVSb3V0ZSkgeworICAgICAgICAgICAgdGhpc1snc2hvdycg
KyBhY3RpdmVSb3V0ZV0oKTsKKyAgICAgICAgfQogCi0gICAgdGhpcy5fbGFzdEFjdGl2ZVJvdXRl
ID0gYWN0aXZlUm91dGU7CisgICAgICAgIHRoaXMuX2xhc3RBY3RpdmVSb3V0ZSA9IGFjdGl2ZVJv
dXRlOwogICAgIH07CiAKICAgICAvKioKICAgICAgKiBTaW1wbHkgdXBkYXRlcyB0aGUgZmlsdGVy
IG5hdidzIHNlbGVjdGVkIHN0YXRlcwogICAgICAqLwotICAgIENvbnRyb2xsZXIucHJvdG90eXBl
Ll91cGRhdGVGaWx0ZXJTdGF0ZSA9IGZ1bmN0aW9uICgpIHsKLSAgICB2YXIgY3VycmVudFBhZ2Ug
PSB0aGlzLl9nZXRDdXJyZW50UGFnZSgpIHx8ICcnOwotCi0gICAgLy8gU3RvcmUgYSByZWZlcmVu
Y2UgdG8gdGhlIGFjdGl2ZSByb3V0ZSwgYWxsb3dpbmcgdXMgdG8gcmUtZmlsdGVyIHRvZG8KLSAg
ICAvLyBpdGVtcyBhcyB0aGV5IGFyZSBtYXJrZWQgY29tcGxldGUgb3IgaW5jb21wbGV0ZS4KLSAg
ICB0aGlzLl9hY3RpdmVSb3V0ZSA9IGN1cnJlbnRQYWdlOwotCi0gICAgaWYgKGN1cnJlbnRQYWdl
ID09PSAnJykgewotICAgIHRoaXMuX2FjdGl2ZVJvdXRlID0gJ0FsbCc7Ci0gICAgfQorICAgIENv
bnRyb2xsZXIucHJvdG90eXBlLl91cGRhdGVGaWx0ZXJTdGF0ZSA9IGZ1bmN0aW9uIChjdXJyZW50
UGFnZSkgeworICAgICAgICAvLyBTdG9yZSBhIHJlZmVyZW5jZSB0byB0aGUgYWN0aXZlIHJvdXRl
LCBhbGxvd2luZyB1cyB0byByZS1maWx0ZXIgdG9kbworICAgICAgICAvLyBpdGVtcyBhcyB0aGV5
IGFyZSBtYXJrZWQgY29tcGxldGUgb3IgaW5jb21wbGV0ZS4KKyAgICAgICAgdGhpcy5fYWN0aXZl
Um91dGUgPSBjdXJyZW50UGFnZTsKIAotICAgIHRoaXMuX2ZpbHRlcigpOworICAgICAgICBpZiAo
Y3VycmVudFBhZ2UgPT09ICcnKSB7CisgICAgICAgICAgICB0aGlzLl9hY3RpdmVSb3V0ZSA9ICdB
bGwnOworICAgICAgICB9CiAKLSAgICAvLyBSZW1vdmUgYWxsIG90aGVyIHNlbGVjdGVkIHN0YXRl
cy4gV2UgbG9vcCB0aHJvdWdoIGFsbCBvZiB0aGVtIGluIGNhc2UgdGhlCi0gICAgLy8gVUkgZ2V0
cyBpbiBhIGZ1bmt5IHN0YXRlIHdpdGggdHdvIHNlbGVjdGVkLgotICAgICQoJyNmaWx0ZXJzIC5z
ZWxlY3RlZCcpLmVhY2goZnVuY3Rpb24gKGl0ZW0pIHsKLSAgICBpdGVtLmNsYXNzTmFtZSA9ICcn
OwotICAgIH0pOworICAgICAgICB0aGlzLl9maWx0ZXIoKTsKIAotICAgICQkKCcjZmlsdGVycyBb
aHJlZj0iIy8nICsgY3VycmVudFBhZ2UgKyAnIl0nKS5jbGFzc05hbWUgPSAnc2VsZWN0ZWQnOwot
ICAgIH07Ci0KLSAgICAvKioKLSAgICAgKiBBIGdldHRlciBmb3IgZ2V0dGluZyB0aGUgY3VycmVu
dCBwYWdlCi0gICAgICovCi0gICAgQ29udHJvbGxlci5wcm90b3R5cGUuX2dldEN1cnJlbnRQYWdl
ID0gZnVuY3Rpb24gKCkgewotICAgIHJldHVybiBkb2N1bWVudC5sb2NhdGlvbi5oYXNoLnNwbGl0
KCcvJylbMV07CisgICAgICAgIHRoaXMudmlldy5yZW5kZXIoJ3NldEZpbHRlcicsIGN1cnJlbnRQ
YWdlKTsKICAgICB9OwogCiAgICAgLy8gRXhwb3J0IHRvIHdpbmRvdworICAgIHdpbmRvdy5hcHAg
PSB3aW5kb3cuYXBwIHx8IHt9OwogICAgIHdpbmRvdy5hcHAuQ29udHJvbGxlciA9IENvbnRyb2xs
ZXI7CiB9KSh3aW5kb3cpOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9qcy9oZWxwZXJz
LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5p
bGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9qcy9oZWxwZXJzLmpzCmluZGV4IDU4YTBlOWZlMzI1Nzhh
OTY4NTdmZTliOTRkYWUzYWRmM2Y2ZjVlOTYuLjJhZjk1NmYwNjRkODgxOGRmYzVmMTU5MWRjNjY3
YzFiYTg2ZmQxMGMgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvanMvaGVscGVycy5qcwor
KysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3Zhbmls
bGEtZXhhbXBsZXMvdmFuaWxsYWpzL2pzL2hlbHBlcnMuanMKQEAgLTEsMTcgKzEsNTIgQEAKKy8q
Z2xvYmFsIE5vZGVMaXN0ICovCiAoZnVuY3Rpb24gKHdpbmRvdykgewogICAgICd1c2Ugc3RyaWN0
JzsKIAotICAgIC8vIENhY2hlIHRoZSBxdWVyeVNlbGVjdG9yL0FsbCBmb3IgZWFzaWVyIGFuZCBm
YXN0ZXIgcmV1c2UKLSAgICB3aW5kb3cuJCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwuYmlu
ZChkb2N1bWVudCk7Ci0gICAgd2luZG93LiQkID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvci5iaW5k
KGRvY3VtZW50KTsKLQotICAgIC8vIEFsbG93IGZvciBsb29waW5nIG9uIE9iamVjdHMgYnkgY2hh
aW5pbmc6Ci0gICAgLy8gJCgnLmZvbycpLmVhY2goZnVuY3Rpb24gKCkge30pCi0gICAgT2JqZWN0
LnByb3RvdHlwZS5lYWNoID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7Ci0gICAgZm9yICh2YXIgeCBp
biB0aGlzKSB7Ci0gICAgaWYgKHRoaXMuaGFzT3duUHJvcGVydHkoeCkpIHsKLSAgICBjYWxsYmFj
ay5jYWxsKHRoaXMsIHRoaXNbeF0pOwotICAgIH0KLSAgICB9CisgICAgLy8gR2V0IGVsZW1lbnQo
cykgYnkgQ1NTIHNlbGVjdG9yOgorICAgIHdpbmRvdy5xcyA9IGZ1bmN0aW9uIChzZWxlY3Rvciwg
c2NvcGUpIHsKKyAgICAgICAgcmV0dXJuIChzY29wZSB8fCBkb2N1bWVudCkucXVlcnlTZWxlY3Rv
cihzZWxlY3Rvcik7CiAgICAgfTsKKyAgICB3aW5kb3cucXNhID0gZnVuY3Rpb24gKHNlbGVjdG9y
LCBzY29wZSkgeworICAgICAgICByZXR1cm4gKHNjb3BlIHx8IGRvY3VtZW50KS5xdWVyeVNlbGVj
dG9yQWxsKHNlbGVjdG9yKTsKKyAgICB9OworCisgICAgLy8gYWRkRXZlbnRMaXN0ZW5lciB3cmFw
cGVyOgorICAgIHdpbmRvdy4kb24gPSBmdW5jdGlvbiAodGFyZ2V0LCB0eXBlLCBjYWxsYmFjaywg
dXNlQ2FwdHVyZSkgeworICAgICAgICB0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcih0eXBlLCBjYWxs
YmFjaywgISF1c2VDYXB0dXJlKTsKKyAgICB9OworCisgICAgLy8gQXR0YWNoIGEgaGFuZGxlciB0
byBldmVudCBmb3IgYWxsIGVsZW1lbnRzIHRoYXQgbWF0Y2ggdGhlIHNlbGVjdG9yLAorICAgIC8v
IG5vdyBvciBpbiB0aGUgZnV0dXJlLCBiYXNlZCBvbiBhIHJvb3QgZWxlbWVudAorICAgIHdpbmRv
dy4kZGVsZWdhdGUgPSBmdW5jdGlvbiAodGFyZ2V0LCBzZWxlY3RvciwgdHlwZSwgaGFuZGxlcikg
eworICAgICAgICBmdW5jdGlvbiBkaXNwYXRjaEV2ZW50KGV2ZW50KSB7CisgICAgICAgICAgICB2
YXIgdGFyZ2V0RWxlbWVudCA9IGV2ZW50LnRhcmdldDsKKyAgICAgICAgICAgIHZhciBwb3RlbnRp
YWxFbGVtZW50cyA9IHdpbmRvdy5xc2Eoc2VsZWN0b3IsIHRhcmdldCk7CisgICAgICAgICAgICB2
YXIgaGFzTWF0Y2ggPSBBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKHBvdGVudGlhbEVsZW1l
bnRzLCB0YXJnZXRFbGVtZW50KSA+PSAwOworCisgICAgICAgICAgICBpZiAoaGFzTWF0Y2gpIHsK
KyAgICAgICAgICAgICAgICBoYW5kbGVyLmNhbGwodGFyZ2V0RWxlbWVudCwgZXZlbnQpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96
aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvRXZlbnRzL2JsdXIKKyAgICAgICAgdmFyIHVzZUNhcHR1
cmUgPSB0eXBlID09PSAnYmx1cicgfHwgdHlwZSA9PT0gJ2ZvY3VzJzsKKworICAgICAgICB3aW5k
b3cuJG9uKHRhcmdldCwgdHlwZSwgZGlzcGF0Y2hFdmVudCwgdXNlQ2FwdHVyZSk7CisgICAgfTsK
KworICAgIC8vIEZpbmQgdGhlIGVsZW1lbnQncyBwYXJlbnQgd2l0aCB0aGUgZ2l2ZW4gdGFnIG5h
bWU6CisgICAgLy8gJHBhcmVudChxcygnYScpLCAnZGl2Jyk7CisgICAgd2luZG93LiRwYXJlbnQg
PSBmdW5jdGlvbiAoZWxlbWVudCwgdGFnTmFtZSkgeworICAgICAgICBpZiAoIWVsZW1lbnQucGFy
ZW50Tm9kZSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChl
bGVtZW50LnBhcmVudE5vZGUudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSB0YWdOYW1lLnRvTG93
ZXJDYXNlKCkpIHsKKyAgICAgICAgICAgIHJldHVybiBlbGVtZW50LnBhcmVudE5vZGU7CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIHdpbmRvdy4kcGFyZW50KGVsZW1lbnQucGFyZW50Tm9kZSwg
dGFnTmFtZSk7CisgICAgfTsKKworICAgIC8vIEFsbG93IGZvciBsb29waW5nIG9uIG5vZGVzIGJ5
IGNoYWluaW5nOgorICAgIC8vIHFzYSgnLmZvbycpLmZvckVhY2goZnVuY3Rpb24gKCkge30pCisg
ICAgTm9kZUxpc3QucHJvdG90eXBlLmZvckVhY2ggPSBBcnJheS5wcm90b3R5cGUuZm9yRWFjaDsK
IH0pKHdpbmRvdyk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL2pzL21vZGVsLmpzIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4
YW1wbGVzL3ZhbmlsbGFqcy9qcy9tb2RlbC5qcwppbmRleCBlMDE0Njc0NjVlMTY5OWJiMzU0Yzkz
ZTFmMjA4NjBlMDg1NTE1NjFiLi5kOGE3MzE5MWQyYzJkZjViMjM3MjNhYWE0MTMzOWRiOGRiYTc5
YjRmIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL2pzL21vZGVsLmpzCisrKyBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxl
cy92YW5pbGxhanMvanMvbW9kZWwuanMKQEAgLTgsNyArOCw3IEBACiAgICAgICogQHBhcmFtIHtv
YmplY3R9IHN0b3JhZ2UgQSByZWZlcmVuY2UgdG8gdGhlIGNsaWVudCBzaWRlIHN0b3JhZ2UgY2xh
c3MKICAgICAgKi8KICAgICBmdW5jdGlvbiBNb2RlbChzdG9yYWdlKSB7Ci0gICAgdGhpcy5zdG9y
YWdlID0gc3RvcmFnZTsKKyAgICAgICAgdGhpcy5zdG9yYWdlID0gc3RvcmFnZTsKICAgICB9CiAK
ICAgICAvKioKQEAgLTE4LDE1ICsxOCwxNSBAQAogICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IFtj
YWxsYmFja10gVGhlIGNhbGxiYWNrIHRvIGZpcmUgYWZ0ZXIgdGhlIG1vZGVsIGlzIGNyZWF0ZWQK
ICAgICAgKi8KICAgICBNb2RlbC5wcm90b3R5cGUuY3JlYXRlID0gZnVuY3Rpb24gKHRpdGxlLCBj
YWxsYmFjaykgewotICAgIHRpdGxlID0gdGl0bGUgfHwgJyc7Ci0gICAgY2FsbGJhY2sgPSBjYWxs
YmFjayB8fCBmdW5jdGlvbiAoKSB7fTsKKyAgICAgICAgdGl0bGUgPSB0aXRsZSB8fCAnJzsKKyAg
ICAgICAgY2FsbGJhY2sgPSBjYWxsYmFjayB8fCBmdW5jdGlvbiAoKSB7fTsKIAotICAgIHZhciBu
ZXdJdGVtID0gewotICAgIHRpdGxlOiB0aXRsZS50cmltKCksCi0gICAgY29tcGxldGVkOiAwCi0g
ICAgfTsKKyAgICAgICAgdmFyIG5ld0l0ZW0gPSB7CisgICAgICAgICAgICB0aXRsZTogdGl0bGUu
dHJpbSgpLAorICAgICAgICAgICAgY29tcGxldGVkOiBmYWxzZQorICAgICAgICB9OwogCi0gICAg
dGhpcy5zdG9yYWdlLnNhdmUobmV3SXRlbSwgY2FsbGJhY2spOworICAgICAgICB0aGlzLnN0b3Jh
Z2Uuc2F2ZShuZXdJdGVtLCBjYWxsYmFjayk7CiAgICAgfTsKIAogICAgIC8qKgpAQCAtNDUsMTcg
KzQ1LDE4IEBACiAgICAgICogbW9kZWwucmVhZCh7IGZvbzogJ2JhcicsIGhlbGxvOiAnd29ybGQn
IH0pOwogICAgICAqLwogICAgIE1vZGVsLnByb3RvdHlwZS5yZWFkID0gZnVuY3Rpb24gKHF1ZXJ5
LCBjYWxsYmFjaykgewotICAgIHZhciBxdWVyeVR5cGUgPSB0eXBlb2YgcXVlcnk7Ci0gICAgY2Fs
bGJhY2sgPSBjYWxsYmFjayB8fCBmdW5jdGlvbiAoKSB7fTsKKyAgICAgICAgdmFyIHF1ZXJ5VHlw
ZSA9IHR5cGVvZiBxdWVyeTsKKyAgICAgICAgY2FsbGJhY2sgPSBjYWxsYmFjayB8fCBmdW5jdGlv
biAoKSB7fTsKIAotICAgIGlmIChxdWVyeVR5cGUgPT09ICdmdW5jdGlvbicpIHsKLSAgICBjYWxs
YmFjayA9IHF1ZXJ5OwotICAgIHJldHVybiB0aGlzLnN0b3JhZ2UuZmluZEFsbChjYWxsYmFjayk7
Ci0gICAgfSBlbHNlIGlmIChxdWVyeVR5cGUgPT09ICdzdHJpbmcnIHx8IHF1ZXJ5VHlwZSA9PT0g
J251bWJlcicpIHsKLSAgICB0aGlzLnN0b3JhZ2UuZmluZCh7IGlkOiBxdWVyeSB9LCBjYWxsYmFj
ayk7Ci0gICAgfSBlbHNlIHsKLSAgICB0aGlzLnN0b3JhZ2UuZmluZChxdWVyeSwgY2FsbGJhY2sp
OwotICAgIH0KKyAgICAgICAgaWYgKHF1ZXJ5VHlwZSA9PT0gJ2Z1bmN0aW9uJykgeworICAgICAg
ICAgICAgY2FsbGJhY2sgPSBxdWVyeTsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLnN0b3JhZ2Uu
ZmluZEFsbChjYWxsYmFjayk7CisgICAgICAgIH0gZWxzZSBpZiAocXVlcnlUeXBlID09PSAnc3Ry
aW5nJyB8fCBxdWVyeVR5cGUgPT09ICdudW1iZXInKSB7CisgICAgICAgICAgICBxdWVyeSA9IHBh
cnNlSW50KHF1ZXJ5LCAxMCk7CisgICAgICAgICAgICB0aGlzLnN0b3JhZ2UuZmluZCh7IGlkOiBx
dWVyeSB9LCBjYWxsYmFjayk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0aGlzLnN0
b3JhZ2UuZmluZChxdWVyeSwgY2FsbGJhY2spOworICAgICAgICB9CiAgICAgfTsKIAogICAgIC8q
KgpAQCAtNjcsNyArNjgsNyBAQAogICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIFRo
ZSBjYWxsYmFjayB0byBmaXJlIHdoZW4gdGhlIHVwZGF0ZSBpcyBjb21wbGV0ZS4KICAgICAgKi8K
ICAgICBNb2RlbC5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gKGlkLCBkYXRhLCBjYWxsYmFj
aykgewotICAgIHRoaXMuc3RvcmFnZS5zYXZlKGlkLCBkYXRhLCBjYWxsYmFjayk7CisgICAgICAg
IHRoaXMuc3RvcmFnZS5zYXZlKGRhdGEsIGNhbGxiYWNrLCBpZCk7CiAgICAgfTsKIAogICAgIC8q
KgpAQCAtNzcsNyArNzgsNyBAQAogICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIFRo
ZSBjYWxsYmFjayB0byBmaXJlIHdoZW4gdGhlIHJlbW92YWwgaXMgY29tcGxldGUuCiAgICAgICov
CiAgICAgTW9kZWwucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uIChpZCwgY2FsbGJhY2spIHsK
LSAgICB0aGlzLnN0b3JhZ2UucmVtb3ZlKGlkLCBjYWxsYmFjayk7CisgICAgICAgIHRoaXMuc3Rv
cmFnZS5yZW1vdmUoaWQsIGNhbGxiYWNrKTsKICAgICB9OwogCiAgICAgLyoqCkBAIC04NiwzNCAr
ODcsMzQgQEAKICAgICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayBUaGUgY2FsbGJhY2sg
dG8gZmlyZSB3aGVuIHRoZSBzdG9yYWdlIGlzIHdpcGVkLgogICAgICAqLwogICAgIE1vZGVsLnBy
b3RvdHlwZS5yZW1vdmVBbGwgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHsKLSAgICB0aGlzLnN0b3Jh
Z2UuZHJvcChjYWxsYmFjayk7CisgICAgICAgIHRoaXMuc3RvcmFnZS5kcm9wKGNhbGxiYWNrKTsK
ICAgICB9OwogCiAgICAgLyoqCiAgICAgICogUmV0dXJucyBhIGNvdW50IG9mIGFsbCB0b2Rvcwog
ICAgICAqLwotICAgIE1vZGVsLnByb3RvdHlwZS5nZXRDb3VudCA9IGZ1bmN0aW9uICgpIHsKLSAg
ICB2YXIgdG9kb3MgPSB7Ci0gICAgYWN0aXZlOiAwLAotICAgIGNvbXBsZXRlZDogMCwKLSAgICB0
b3RhbDogMAotICAgIH07Ci0KLSAgICB0aGlzLnN0b3JhZ2UuZmluZEFsbChmdW5jdGlvbiAoZGF0
YSkgewotICAgIGRhdGEuZWFjaChmdW5jdGlvbiAodG9kbykgewotICAgIGlmICh0b2RvLmNvbXBs
ZXRlZCA9PT0gMSkgewotICAgIHRvZG9zLmNvbXBsZXRlZCsrOwotICAgIH0gZWxzZSB7Ci0gICAg
dG9kb3MuYWN0aXZlKys7Ci0gICAgfQorICAgIE1vZGVsLnByb3RvdHlwZS5nZXRDb3VudCA9IGZ1
bmN0aW9uIChjYWxsYmFjaykgeworICAgICAgICB2YXIgdG9kb3MgPSB7CisgICAgICAgICAgICBh
Y3RpdmU6IDAsCisgICAgICAgICAgICBjb21wbGV0ZWQ6IDAsCisgICAgICAgICAgICB0b3RhbDog
MAorICAgICAgICB9OwogCi0gICAgdG9kb3MudG90YWwrKzsKLSAgICB9KTsKLSAgICB9KTsKKyAg
ICAgICAgdGhpcy5zdG9yYWdlLmZpbmRBbGwoZnVuY3Rpb24gKGRhdGEpIHsKKyAgICAgICAgICAg
IGRhdGEuZm9yRWFjaChmdW5jdGlvbiAodG9kbykgeworICAgICAgICAgICAgICAgIGlmICh0b2Rv
LmNvbXBsZXRlZCkgeworICAgICAgICAgICAgICAgICAgICB0b2Rvcy5jb21wbGV0ZWQrKzsKKyAg
ICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICB0b2Rvcy5hY3RpdmUr
KzsKKyAgICAgICAgICAgICAgICB9CiAKLSAgICByZXR1cm4gdG9kb3M7CisgICAgICAgICAgICAg
ICAgdG9kb3MudG90YWwrKzsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgY2FsbGJhY2so
dG9kb3MpOworICAgICAgICB9KTsKICAgICB9OwogCiAgICAgLy8gRXhwb3J0IHRvIHdpbmRvdwor
ICAgIHdpbmRvdy5hcHAgPSB3aW5kb3cuYXBwIHx8IHt9OwogICAgIHdpbmRvdy5hcHAuTW9kZWwg
PSBNb2RlbDsKIH0pKHdpbmRvdyk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL2pzL3N0
b3JlLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92
YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9qcy9zdG9yZS5qcwppbmRleCA5YTdkYTBkOWJiNzdh
YTQxYTNkOGU5ZmU4YmM3NjM2ZDY3MGFiMWE3Li5mZTY4MmM4OGY4YTRlNzU0ZDA4Njc3M2M1MWRk
NTljMzJiYjNmMzc4IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL2pzL3N0b3JlLmpzCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxs
YS1leGFtcGxlcy92YW5pbGxhanMvanMvc3RvcmUuanMKQEAgLTIsOCArMiw3IEBACiAoZnVuY3Rp
b24gKHdpbmRvdykgewogICAgICd1c2Ugc3RyaWN0JzsKIAotICAgIHZhciBsb2NhbFN0b3JhZ2Ug
PSB7fTsgLy8gQmVuY2htYXJrIG1vZGlmaWNhdGlvbjogQXZvaWQgZGlzayBhY2Nlc3MuCi0KKyAg
ICB2YXIgTWVtb3J5U3RvcmFnZSA9IHt9OwogICAgIC8qKgogICAgICAqIENyZWF0ZXMgYSBuZXcg
Y2xpZW50IHNpZGUgc3RvcmFnZSBvYmplY3QgYW5kIHdpbGwgY3JlYXRlIGFuIGVtcHR5CiAgICAg
ICogY29sbGVjdGlvbiBpZiBubyBjb2xsZWN0aW9uIGFscmVhZHkgZXhpc3RzLgpAQCAtMTMsMjIg
KzEyLDE5IEBACiAgICAgICogcmVhbCBsaWZlIHlvdSBwcm9iYWJseSB3b3VsZCBiZSBtYWtpbmcg
QUpBWCBjYWxscwogICAgICAqLwogICAgIGZ1bmN0aW9uIFN0b3JlKG5hbWUsIGNhbGxiYWNrKSB7
Ci0gICAgdmFyIGRhdGE7Ci0gICAgdmFyIGRiTmFtZTsKLQotICAgIGNhbGxiYWNrID0gY2FsbGJh
Y2sgfHwgZnVuY3Rpb24gKCkge307CisgICAgICAgIGNhbGxiYWNrID0gY2FsbGJhY2sgfHwgZnVu
Y3Rpb24gKCkge307CiAKLSAgICBkYk5hbWUgPSB0aGlzLl9kYk5hbWUgPSBuYW1lOworICAgICAg
ICB0aGlzLl9kYk5hbWUgPSBuYW1lOwogCi0gICAgaWYgKCFsb2NhbFN0b3JhZ2VbZGJOYW1lXSkg
ewotICAgIGRhdGEgPSB7Ci0gICAgdG9kb3M6IFtdCi0gICAgfTsKKyAgICAgICAgaWYgKCFNZW1v
cnlTdG9yYWdlW25hbWVdKSB7CisgICAgICAgICAgICB2YXIgZGF0YSA9IHsKKyAgICAgICAgICAg
ICAgICB0b2RvczogW10KKyAgICAgICAgICAgIH07CiAKLSAgICBsb2NhbFN0b3JhZ2VbZGJOYW1l
XSA9IEpTT04uc3RyaW5naWZ5KGRhdGEpOwotICAgIH0KKyAgICAgICAgICAgIE1lbW9yeVN0b3Jh
Z2VbbmFtZV0gPSBKU09OLnN0cmluZ2lmeShkYXRhKTsKKyAgICAgICAgfQogCi0gICAgY2FsbGJh
Y2suY2FsbCh0aGlzLCBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZVtkYk5hbWVdKSk7CisgICAgICAg
IGNhbGxiYWNrLmNhbGwodGhpcywgSlNPTi5wYXJzZShNZW1vcnlTdG9yYWdlW25hbWVdKSk7CiAg
ICAgfQogCiAgICAgLyoqCkBAIC00NSwxNyArNDEsMjAgQEAKICAgICAgKiB9KTsKICAgICAgKi8K
ICAgICBTdG9yZS5wcm90b3R5cGUuZmluZCA9IGZ1bmN0aW9uIChxdWVyeSwgY2FsbGJhY2spIHsK
LSAgICBpZiAoIWNhbGxiYWNrKSB7Ci0gICAgcmV0dXJuOwotICAgIH0KLQotICAgIHZhciB0b2Rv
cyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlW3RoaXMuX2RiTmFtZV0pLnRvZG9zOwotCi0gICAg
Y2FsbGJhY2suY2FsbCh0aGlzLCB0b2Rvcy5maWx0ZXIoZnVuY3Rpb24gKHRvZG8pIHsKLSAgICBm
b3IgKHZhciBxIGluIHF1ZXJ5KSB7Ci0gICAgcmV0dXJuIHF1ZXJ5W3FdID09PSB0b2RvW3FdOwot
ICAgIH0KLSAgICB9KSk7CisgICAgICAgIGlmICghY2FsbGJhY2spIHsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHZhciB0b2RvcyA9IEpTT04ucGFyc2UoTWVtb3J5
U3RvcmFnZVt0aGlzLl9kYk5hbWVdKS50b2RvczsKKworICAgICAgICBjYWxsYmFjay5jYWxsKHRo
aXMsIHRvZG9zLmZpbHRlcihmdW5jdGlvbiAodG9kbykgeworICAgICAgICAgICAgZm9yICh2YXIg
cSBpbiBxdWVyeSkgeworICAgICAgICAgICAgICAgIGlmIChxdWVyeVtxXSAhPT0gdG9kb1txXSkg
eworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0pKTsKICAg
ICB9OwogCiAgICAgLyoqCkBAIC02NCw0OCArNjMsNDUgQEAKICAgICAgKiBAcGFyYW0ge2Z1bmN0
aW9ufSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgdG8gZmlyZSB1cG9uIHJldHJpZXZpbmcgZGF0YQog
ICAgICAqLwogICAgIFN0b3JlLnByb3RvdHlwZS5maW5kQWxsID0gZnVuY3Rpb24gKGNhbGxiYWNr
KSB7Ci0gICAgY2FsbGJhY2sgPSBjYWxsYmFjayB8fCBmdW5jdGlvbiAoKSB7fTsKLSAgICBjYWxs
YmFjay5jYWxsKHRoaXMsIEpTT04ucGFyc2UobG9jYWxTdG9yYWdlW3RoaXMuX2RiTmFtZV0pLnRv
ZG9zKTsKKyAgICAgICAgY2FsbGJhY2sgPSBjYWxsYmFjayB8fCBmdW5jdGlvbiAoKSB7fTsKKyAg
ICAgICAgY2FsbGJhY2suY2FsbCh0aGlzLCBKU09OLnBhcnNlKE1lbW9yeVN0b3JhZ2VbdGhpcy5f
ZGJOYW1lXSkudG9kb3MpOwogICAgIH07CiAKICAgICAvKioKICAgICAgKiBXaWxsIHNhdmUgdGhl
IGdpdmVuIGRhdGEgdG8gdGhlIERCLiBJZiBubyBpdGVtIGV4aXN0cyBpdCB3aWxsIGNyZWF0ZSBh
IG5ldwogICAgICAqIGl0ZW0sIG90aGVyd2lzZSBpdCdsbCBzaW1wbHkgdXBkYXRlIGFuIGV4aXN0
aW5nIGl0ZW0ncyBwcm9wZXJ0aWVzCiAgICAgICoKLSAgICAgKiBAcGFyYW0ge251bWJlcn0gaWQg
QW4gb3B0aW9uYWwgcGFyYW0gdG8gZW50ZXIgYW4gSUQgb2YgYW4gaXRlbSB0byB1cGRhdGUKLSAg
ICAgKiBAcGFyYW0ge29iamVjdH0gZGF0YSBUaGUgZGF0YSB0byBzYXZlIGJhY2sgaW50byB0aGUg
REIKKyAgICAgKiBAcGFyYW0ge29iamVjdH0gdXBkYXRlRGF0YSBUaGUgZGF0YSB0byBzYXZlIGJh
Y2sgaW50byB0aGUgREIKICAgICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayBUaGUgY2Fs
bGJhY2sgdG8gZmlyZSBhZnRlciBzYXZpbmcKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gaWQgQW4g
b3B0aW9uYWwgcGFyYW0gdG8gZW50ZXIgYW4gSUQgb2YgYW4gaXRlbSB0byB1cGRhdGUKICAgICAg
Ki8KLSAgICBTdG9yZS5wcm90b3R5cGUuc2F2ZSA9IGZ1bmN0aW9uIChpZCwgdXBkYXRlRGF0YSwg
Y2FsbGJhY2spIHsKLSAgICB2YXIgZGF0YSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlW3RoaXMu
X2RiTmFtZV0pOwotICAgIHZhciB0b2RvcyA9IGRhdGEudG9kb3M7Ci0KLSAgICBjYWxsYmFjayA9
IGNhbGxiYWNrIHx8IGZ1bmN0aW9uICgpIHt9OwotCi0gICAgLy8gSWYgYW4gSUQgd2FzIGFjdHVh
bGx5IGdpdmVuLCBmaW5kIHRoZSBpdGVtIGFuZCB1cGRhdGUgZWFjaCBwcm9wZXJ0eQotICAgIGlm
ICh0eXBlb2YgaWQgIT09ICdvYmplY3QnKSB7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b2Rv
cy5sZW5ndGg7IGkrKykgewotICAgIGlmICh0b2Rvc1tpXS5pZCA9PSBpZCkgewotICAgIGZvciAo
dmFyIHggaW4gdXBkYXRlRGF0YSkgewotICAgIHRvZG9zW2ldW3hdID0gdXBkYXRlRGF0YVt4XTsK
LSAgICB9Ci0gICAgfQotICAgIH0KLQotICAgIGxvY2FsU3RvcmFnZVt0aGlzLl9kYk5hbWVdID0g
SlNPTi5zdHJpbmdpZnkoZGF0YSk7Ci0gICAgY2FsbGJhY2suY2FsbCh0aGlzLCBKU09OLnBhcnNl
KGxvY2FsU3RvcmFnZVt0aGlzLl9kYk5hbWVdKS50b2Rvcyk7Ci0gICAgfSBlbHNlIHsKLSAgICBj
YWxsYmFjayA9IHVwZGF0ZURhdGE7Ci0KLSAgICB1cGRhdGVEYXRhID0gaWQ7Ci0KLSAgICAvLyBH
ZW5lcmF0ZSBhbiBJRAotICAgIHVwZGF0ZURhdGEuaWQgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTsK
LQotICAgIHRvZG9zLnB1c2godXBkYXRlRGF0YSk7Ci0gICAgbG9jYWxTdG9yYWdlW3RoaXMuX2Ri
TmFtZV0gPSBKU09OLnN0cmluZ2lmeShkYXRhKTsKLSAgICBjYWxsYmFjay5jYWxsKHRoaXMsIFt1
cGRhdGVEYXRhXSk7Ci0gICAgfQorICAgIFN0b3JlLnByb3RvdHlwZS5zYXZlID0gZnVuY3Rpb24g
KHVwZGF0ZURhdGEsIGNhbGxiYWNrLCBpZCkgeworICAgICAgICB2YXIgZGF0YSA9IEpTT04ucGFy
c2UoTWVtb3J5U3RvcmFnZVt0aGlzLl9kYk5hbWVdKTsKKyAgICAgICAgdmFyIHRvZG9zID0gZGF0
YS50b2RvczsKKworICAgICAgICBjYWxsYmFjayA9IGNhbGxiYWNrIHx8IGZ1bmN0aW9uICgpIHt9
OworCisgICAgICAgIC8vIElmIGFuIElEIHdhcyBhY3R1YWxseSBnaXZlbiwgZmluZCB0aGUgaXRl
bSBhbmQgdXBkYXRlIGVhY2ggcHJvcGVydHkKKyAgICAgICAgaWYgKGlkKSB7CisgICAgICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IHRvZG9zLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAg
ICAgaWYgKHRvZG9zW2ldLmlkID09PSBpZCkgeworICAgICAgICAgICAgICAgICAgICBmb3IgKHZh
ciBrZXkgaW4gdXBkYXRlRGF0YSkgeworICAgICAgICAgICAgICAgICAgICAgICAgdG9kb3NbaV1b
a2V5XSA9IHVwZGF0ZURhdGFba2V5XTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIE1lbW9yeVN0b3JhZ2VbdGhpcy5fZGJOYW1lXSA9IEpTT04uc3RyaW5naWZ5KGRh
dGEpOworICAgICAgICAgICAgY2FsbGJhY2suY2FsbCh0aGlzLCB0b2Rvcyk7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAvLyBHZW5lcmF0ZSBhbiBJRAorICAgICAgICAgICAgdXBkYXRl
RGF0YS5pZCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpOworCisgICAgICAgICAgICB0b2Rvcy5wdXNo
KHVwZGF0ZURhdGEpOworICAgICAgICAgICAgTWVtb3J5U3RvcmFnZVt0aGlzLl9kYk5hbWVdID0g
SlNPTi5zdHJpbmdpZnkoZGF0YSk7CisgICAgICAgICAgICBjYWxsYmFjay5jYWxsKHRoaXMsIFt1
cGRhdGVEYXRhXSk7CisgICAgICAgIH0KICAgICB9OwogCiAgICAgLyoqCkBAIC0xMTUsMTggKzEx
MSwxOCBAQAogICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIFRoZSBjYWxsYmFjayB0
byBmaXJlIGFmdGVyIHNhdmluZwogICAgICAqLwogICAgIFN0b3JlLnByb3RvdHlwZS5yZW1vdmUg
PSBmdW5jdGlvbiAoaWQsIGNhbGxiYWNrKSB7Ci0gICAgdmFyIGRhdGEgPSBKU09OLnBhcnNlKGxv
Y2FsU3RvcmFnZVt0aGlzLl9kYk5hbWVdKTsKLSAgICB2YXIgdG9kb3MgPSBkYXRhLnRvZG9zOwot
Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b2Rvcy5sZW5ndGg7IGkrKykgewotICAgIGlmICh0
b2Rvc1tpXS5pZCA9PSBpZCkgewotICAgIHRvZG9zLnNwbGljZShpLCAxKTsKLSAgICBicmVhazsK
LSAgICB9Ci0gICAgfQotCi0gICAgbG9jYWxTdG9yYWdlW3RoaXMuX2RiTmFtZV0gPSBKU09OLnN0
cmluZ2lmeShkYXRhKTsKLSAgICBjYWxsYmFjay5jYWxsKHRoaXMsIEpTT04ucGFyc2UobG9jYWxT
dG9yYWdlW3RoaXMuX2RiTmFtZV0pLnRvZG9zKTsKKyAgICAgICAgdmFyIGRhdGEgPSBKU09OLnBh
cnNlKE1lbW9yeVN0b3JhZ2VbdGhpcy5fZGJOYW1lXSk7CisgICAgICAgIHZhciB0b2RvcyA9IGRh
dGEudG9kb3M7CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b2Rvcy5sZW5ndGg7IGkr
KykgeworICAgICAgICAgICAgaWYgKHRvZG9zW2ldLmlkID09IGlkKSB7CisgICAgICAgICAgICAg
ICAgdG9kb3Muc3BsaWNlKGksIDEpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisKKyAgICAgICAgTWVtb3J5U3RvcmFnZVt0aGlzLl9kYk5hbWVdID0g
SlNPTi5zdHJpbmdpZnkoZGF0YSk7CisgICAgICAgIGNhbGxiYWNrLmNhbGwodGhpcywgdG9kb3Mp
OwogICAgIH07CiAKICAgICAvKioKQEAgLTEzNSwxMCArMTMxLDEyIEBACiAgICAgICogQHBhcmFt
IHtmdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGNhbGxiYWNrIHRvIGZpcmUgYWZ0ZXIgZHJvcHBpbmcg
dGhlIGRhdGEKICAgICAgKi8KICAgICBTdG9yZS5wcm90b3R5cGUuZHJvcCA9IGZ1bmN0aW9uIChj
YWxsYmFjaykgewotICAgIGxvY2FsU3RvcmFnZVt0aGlzLl9kYk5hbWVdID0gSlNPTi5zdHJpbmdp
Znkoe3RvZG9zOiBbXX0pOwotICAgIGNhbGxiYWNrLmNhbGwodGhpcywgSlNPTi5wYXJzZShsb2Nh
bFN0b3JhZ2VbdGhpcy5fZGJOYW1lXSkudG9kb3MpOworICAgICAgICB2YXIgZGF0YSA9IHt0b2Rv
czogW119OworICAgICAgICBNZW1vcnlTdG9yYWdlW3RoaXMuX2RiTmFtZV0gPSBKU09OLnN0cmlu
Z2lmeShkYXRhKTsKKyAgICAgICAgY2FsbGJhY2suY2FsbCh0aGlzLCBkYXRhLnRvZG9zKTsKICAg
ICB9OwogCiAgICAgLy8gRXhwb3J0IHRvIHdpbmRvdworICAgIHdpbmRvdy5hcHAgPSB3aW5kb3cu
YXBwIHx8IHt9OwogICAgIHdpbmRvdy5hcHAuU3RvcmUgPSBTdG9yZTsKIH0pKHdpbmRvdyk7CmRp
ZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL2pzL3RlbXBsYXRlLmpzIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3Zhbmls
bGFqcy9qcy90ZW1wbGF0ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MzcyNGM2NTI5NTJiNTU3YmI2MjFjYTBi
YTBkYmEwNWZkNWY5ODAwCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9qcy90
ZW1wbGF0ZS5qcwpAQCAtMCwwICsxLDExNCBAQAorLypqc2hpbnQgbGF4YnJlYWs6dHJ1ZSAqLwor
KGZ1bmN0aW9uICh3aW5kb3cpIHsKKyAgICAndXNlIHN0cmljdCc7CisKKyAgICB2YXIgaHRtbEVz
Y2FwZXMgPSB7CisgICAgICAgICcmJzogJyZhbXA7JywKKyAgICAgICAgJzwnOiAnJmx0OycsCisg
ICAgICAgICc+JzogJyZndDsnLAorICAgICAgICAnIic6ICcmcXVvdDsnLAorICAgICAgICAnXCcn
OiAnJiN4Mjc7JywKKyAgICAgICAgJ2AnOiAnJiN4NjA7JworICAgIH07CisKKyAgICB2YXIgZXNj
YXBlSHRtbENoYXIgPSBmdW5jdGlvbiAoY2hyKSB7CisgICAgICAgIHJldHVybiBodG1sRXNjYXBl
c1tjaHJdOworICAgIH07CisKKyAgICB2YXIgcmVVbmVzY2FwZWRIdG1sID0gL1smPD4iJ2BdL2c7
CisgICAgdmFyIHJlSGFzVW5lc2NhcGVkSHRtbCA9IG5ldyBSZWdFeHAocmVVbmVzY2FwZWRIdG1s
LnNvdXJjZSk7CisKKyAgICB2YXIgZXNjYXBlID0gZnVuY3Rpb24gKHN0cmluZykgeworICAgICAg
ICByZXR1cm4gKHN0cmluZyAmJiByZUhhc1VuZXNjYXBlZEh0bWwudGVzdChzdHJpbmcpKQorICAg
ICAgICAgICAgPyBzdHJpbmcucmVwbGFjZShyZVVuZXNjYXBlZEh0bWwsIGVzY2FwZUh0bWxDaGFy
KQorICAgICAgICAgICAgOiBzdHJpbmc7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIFNldHMg
dXAgZGVmYXVsdHMgZm9yIGFsbCB0aGUgVGVtcGxhdGUgbWV0aG9kcyBzdWNoIGFzIGEgZGVmYXVs
dCB0ZW1wbGF0ZQorICAgICAqCisgICAgICogQGNvbnN0cnVjdG9yCisgICAgICovCisgICAgZnVu
Y3Rpb24gVGVtcGxhdGUoKSB7CisgICAgICAgIHRoaXMuZGVmYXVsdFRlbXBsYXRlCisgICAgICAg
ID0gICAgJzxsaSBkYXRhLWlkPSJ7e2lkfX0iIGNsYXNzPSJ7e2NvbXBsZXRlZH19Ij4nCisgICAg
ICAgICsgICAgICAgICc8ZGl2IGNsYXNzPSJ2aWV3Ij4nCisgICAgICAgICsgICAgICAgICAgICAn
PGlucHV0IGNsYXNzPSJ0b2dnbGUiIHR5cGU9ImNoZWNrYm94IiB7e2NoZWNrZWR9fT4nCisgICAg
ICAgICsgICAgICAgICAgICAnPGxhYmVsPnt7dGl0bGV9fTwvbGFiZWw+JworICAgICAgICArICAg
ICAgICAgICAgJzxidXR0b24gY2xhc3M9ImRlc3Ryb3kiPjwvYnV0dG9uPicKKyAgICAgICAgKyAg
ICAgICAgJzwvZGl2PicKKyAgICAgICAgKyAgICAnPC9saT4nOworICAgIH0KKworICAgIC8qKgor
ICAgICAqIENyZWF0ZXMgYW4gPGxpPiBIVE1MIHN0cmluZyBhbmQgcmV0dXJucyBpdCBmb3IgcGxh
Y2VtZW50IGluIHlvdXIgYXBwLgorICAgICAqCisgICAgICogTk9URTogSW4gcmVhbCBsaWZlIHlv
dSBzaG91bGQgYmUgdXNpbmcgYSB0ZW1wbGF0aW5nIGVuZ2luZSBzdWNoIGFzIE11c3RhY2hlCisg
ICAgICogb3IgSGFuZGxlYmFycywgaG93ZXZlciwgdGhpcyBpcyBhIHZhbmlsbGEgSlMgZXhhbXBs
ZS4KKyAgICAgKgorICAgICAqIEBwYXJhbSB7b2JqZWN0fSBkYXRhIFRoZSBvYmplY3QgY29udGFp
bmluZyBrZXlzIHlvdSB3YW50IHRvIGZpbmQgaW4gdGhlCisgICAgICogICAgICAgICAgICAgICAg
ICAgICAgdGVtcGxhdGUgdG8gcmVwbGFjZS4KKyAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBIVE1M
IFN0cmluZyBvZiBhbiA8bGk+IGVsZW1lbnQKKyAgICAgKgorICAgICAqIEBleGFtcGxlCisgICAg
ICogdmlldy5zaG93KHsKKyAgICAgKiAgICBpZDogMSwKKyAgICAgKiAgICB0aXRsZTogIkhlbGxv
IFdvcmxkIiwKKyAgICAgKiAgICBjb21wbGV0ZWQ6IDAsCisgICAgICogfSk7CisgICAgICovCisg
ICAgVGVtcGxhdGUucHJvdG90eXBlLnNob3cgPSBmdW5jdGlvbiAoZGF0YSkgeworICAgICAgICB2
YXIgaSwgbDsKKyAgICAgICAgdmFyIHZpZXcgPSAnJzsKKworICAgICAgICBmb3IgKGkgPSAwLCBs
ID0gZGF0YS5sZW5ndGg7IGkgPCBsOyBpKyspIHsKKyAgICAgICAgICAgIHZhciB0ZW1wbGF0ZSA9
IHRoaXMuZGVmYXVsdFRlbXBsYXRlOworICAgICAgICAgICAgdmFyIGNvbXBsZXRlZCA9ICcnOwor
ICAgICAgICAgICAgdmFyIGNoZWNrZWQgPSAnJzsKKworICAgICAgICAgICAgaWYgKGRhdGFbaV0u
Y29tcGxldGVkKSB7CisgICAgICAgICAgICAgICAgY29tcGxldGVkID0gJ2NvbXBsZXRlZCc7Cisg
ICAgICAgICAgICAgICAgY2hlY2tlZCA9ICdjaGVja2VkJzsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgdGVtcGxhdGUgPSB0ZW1wbGF0ZS5yZXBsYWNlKCd7e2lkfX0nLCBkYXRhW2ldLmlk
KTsKKyAgICAgICAgICAgIHRlbXBsYXRlID0gdGVtcGxhdGUucmVwbGFjZSgne3t0aXRsZX19Jywg
ZXNjYXBlKGRhdGFbaV0udGl0bGUpKTsKKyAgICAgICAgICAgIHRlbXBsYXRlID0gdGVtcGxhdGUu
cmVwbGFjZSgne3tjb21wbGV0ZWR9fScsIGNvbXBsZXRlZCk7CisgICAgICAgICAgICB0ZW1wbGF0
ZSA9IHRlbXBsYXRlLnJlcGxhY2UoJ3t7Y2hlY2tlZH19JywgY2hlY2tlZCk7CisKKyAgICAgICAg
ICAgIHZpZXcgPSB2aWV3ICsgdGVtcGxhdGU7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4g
dmlldzsKKyAgICB9OworCisgICAgLyoqCisgICAgICogRGlzcGxheXMgYSBjb3VudGVyIG9mIGhv
dyBtYW55IHRvIGRvcyBhcmUgbGVmdCB0byBjb21wbGV0ZQorICAgICAqCisgICAgICogQHBhcmFt
IHtudW1iZXJ9IGFjdGl2ZVRvZG9zIFRoZSBudW1iZXIgb2YgYWN0aXZlIHRvZG9zLgorICAgICAq
IEByZXR1cm5zIHtzdHJpbmd9IFN0cmluZyBjb250YWluaW5nIHRoZSBjb3VudAorICAgICAqLwor
ICAgIFRlbXBsYXRlLnByb3RvdHlwZS5pdGVtQ291bnRlciA9IGZ1bmN0aW9uIChhY3RpdmVUb2Rv
cykgeworICAgICAgICB2YXIgcGx1cmFsID0gYWN0aXZlVG9kb3MgPT09IDEgPyAnJyA6ICdzJzsK
KworICAgICAgICByZXR1cm4gJzxzdHJvbmc+JyArIGFjdGl2ZVRvZG9zICsgJzwvc3Ryb25nPiBp
dGVtJyArIHBsdXJhbCArICcgbGVmdCc7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIFVwZGF0
ZXMgdGhlIHRleHQgd2l0aGluIHRoZSAiQ2xlYXIgY29tcGxldGVkIiBidXR0b24KKyAgICAgKgor
ICAgICAqIEBwYXJhbSAge1t0eXBlXX0gY29tcGxldGVkVG9kb3MgVGhlIG51bWJlciBvZiBjb21w
bGV0ZWQgdG9kb3MuCisgICAgICogQHJldHVybnMge3N0cmluZ30gU3RyaW5nIGNvbnRhaW5pbmcg
dGhlIGNvdW50CisgICAgICovCisgICAgVGVtcGxhdGUucHJvdG90eXBlLmNsZWFyQ29tcGxldGVk
QnV0dG9uID0gZnVuY3Rpb24gKGNvbXBsZXRlZFRvZG9zKSB7CisgICAgICAgIGlmIChjb21wbGV0
ZWRUb2RvcyA+IDApIHsKKyAgICAgICAgICAgIHJldHVybiAnQ2xlYXIgY29tcGxldGVkJzsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiAnJzsKKyAgICAgICAgfQorICAgIH07
CisKKyAgICAvLyBFeHBvcnQgdG8gd2luZG93CisgICAgd2luZG93LmFwcCA9IHdpbmRvdy5hcHAg
fHwge307CisgICAgd2luZG93LmFwcC5UZW1wbGF0ZSA9IFRlbXBsYXRlOworfSkod2luZG93KTsK
ZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvanMvdmlldy5qcyBiL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxh
anMvanMvdmlldy5qcwppbmRleCBkODJiMDk4MjdmZjQ0M2EwNjQ2OGU1MzViMmE0YzNjYmIzMzQz
MWEyLi42OGRlODMwNTEzNmQxOGM5MGJkNjBhNjdkYmI1ZjU0MzVhNzExMmRiIDEwMDY0NAotLS0g
YS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEt
ZXhhbXBsZXMvdmFuaWxsYWpzL2pzL3ZpZXcuanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9qcy92
aWV3LmpzCkBAIC0xLDkxICsxLDIxOSBAQAotLypqc2hpbnQgbGF4YnJlYWs6dHJ1ZSAqLworLypn
bG9iYWwgcXMsIHFzYSwgJG9uLCAkcGFyZW50LCAkZGVsZWdhdGUgKi8KKwogKGZ1bmN0aW9uICh3
aW5kb3cpIHsKICAgICAndXNlIHN0cmljdCc7CiAKICAgICAvKioKLSAgICAgKiBTZXRzIHVwIGRl
ZmF1bHRzIGZvciBhbGwgdGhlIFZpZXcgbWV0aG9kcyBzdWNoIGFzIGEgZGVmYXVsdCB0ZW1wbGF0
ZQotICAgICAqCi0gICAgICogQGNvbnN0cnVjdG9yCi0gICAgICovCi0gICAgZnVuY3Rpb24gVmll
dygpIHsKLSAgICB0aGlzLmRlZmF1bHRUZW1wbGF0ZQotICAgID0gICAgJzxsaSBkYXRhLWlkPSJ7
e2lkfX0iIGNsYXNzPSJ7e2NvbXBsZXRlZH19Ij4nCi0gICAgKyAgICAgICAgJzxkaXYgY2xhc3M9
InZpZXciPicKLSAgICArICAgICAgICAgICAgJzxpbnB1dCBjbGFzcz0idG9nZ2xlIiB0eXBlPSJj
aGVja2JveCIge3tjaGVja2VkfX0+JwotICAgICsgICAgICAgICAgICAnPGxhYmVsPnt7dGl0bGV9
fTwvbGFiZWw+JwotICAgICsgICAgICAgICAgICAnPGJ1dHRvbiBjbGFzcz0iZGVzdHJveSI+PC9i
dXR0b24+JwotICAgICsgICAgICAgICc8L2Rpdj4nCi0gICAgKyAgICAnPC9saT4nOwotICAgIH0K
KyAgICAgICAgICogVmlldyB0aGF0IGFic3RyYWN0cyBhd2F5IHRoZSBicm93c2VyJ3MgRE9NIGNv
bXBsZXRlbHkuCisgICAgICAgICAqIEl0IGhhcyB0d28gc2ltcGxlIGVudHJ5IHBvaW50czoKKyAg
ICAgICAgICoKKyAgICAgICAgICogICAtIGJpbmQoZXZlbnROYW1lLCBoYW5kbGVyKQorICAgICAg
ICAgKiAgICAgVGFrZXMgYSB0b2RvIGFwcGxpY2F0aW9uIGV2ZW50IGFuZCByZWdpc3RlcnMgdGhl
IGhhbmRsZXIKKyAgICAgICAgICogICAtIHJlbmRlcihjb21tYW5kLCBwYXJhbWV0ZXJPYmplY3Qp
CisgICAgICAgICAqICAgICBSZW5kZXJzIHRoZSBnaXZlbiBjb21tYW5kIHdpdGggdGhlIG9wdGlv
bnMKKyAgICAgICAgICovCisgICAgZnVuY3Rpb24gVmlldyh0ZW1wbGF0ZSkgeworICAgICAgICB0
aGlzLnRlbXBsYXRlID0gdGVtcGxhdGU7CiAKLSAgICAvKioKLSAgICAgKiBDcmVhdGVzIGFuIDxs
aT4gSFRNTCBzdHJpbmcgYW5kIHJldHVybnMgaXQgZm9yIHBsYWNlbWVudCBpbiB5b3VyIGFwcC4K
LSAgICAgKgotICAgICAqIE5PVEU6IEluIHJlYWwgbGlmZSB5b3Ugc2hvdWxkIGJlIHVzaW5nIGEg
dGVtcGxhdGluZyBlbmdpbmUgc3VjaCBhcyBNdXN0YWNoZQotICAgICAqIG9yIEhhbmRsZWJhcnMs
IGhvd2V2ZXIsIHRoaXMgaXMgYSB2YW5pbGxhIEpTIGV4YW1wbGUuCi0gICAgICoKLSAgICAgKiBA
cGFyYW0ge29iamVjdH0gZGF0YSBUaGUgb2JqZWN0IGNvbnRhaW5pbmcga2V5cyB5b3Ugd2FudCB0
byBmaW5kIGluIHRoZQotICAgICAqICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlIHRvIHJl
cGxhY2UuCi0gICAgICogQHJldHVybnMge3N0cmluZ30gSFRNTCBTdHJpbmcgb2YgYW4gPGxpPiBl
bGVtZW50Ci0gICAgICoKLSAgICAgKiBAZXhhbXBsZQotICAgICAqIHZpZXcuc2hvdyh7Ci0gICAg
ICogICAgaWQ6IDEsCi0gICAgICogICAgdGl0bGU6ICJIZWxsbyBXb3JsZCIsCi0gICAgICogICAg
Y29tcGxldGVkOiAwLAotICAgICAqIH0pOwotICAgICAqLwotICAgIFZpZXcucHJvdG90eXBlLnNo
b3cgPSBmdW5jdGlvbiAoZGF0YSkgewotICAgIHZhciBpLCBsOwotICAgIHZhciB2aWV3ID0gJyc7
Ci0KLSAgICBmb3IgKGkgPSAwLCBsID0gZGF0YS5sZW5ndGg7IGkgPCBsOyBpKyspIHsKLSAgICB2
YXIgdGVtcGxhdGUgPSB0aGlzLmRlZmF1bHRUZW1wbGF0ZTsKLSAgICB2YXIgY29tcGxldGVkID0g
Jyc7Ci0gICAgdmFyIGNoZWNrZWQgPSAnJzsKLQotICAgIGlmIChkYXRhW2ldLmNvbXBsZXRlZCA9
PT0gMSkgewotICAgIGNvbXBsZXRlZCA9ICdjb21wbGV0ZWQnOwotICAgIGNoZWNrZWQgPSAnY2hl
Y2tlZCc7CisgICAgICAgIHRoaXMuRU5URVJfS0VZID0gMTM7CisgICAgICAgIHRoaXMuRVNDQVBF
X0tFWSA9IDI3OworCisgICAgICAgIHRoaXMuJHRvZG9MaXN0ID0gcXMoJy50b2RvLWxpc3QnKTsK
KyAgICAgICAgdGhpcy4kdG9kb0l0ZW1Db3VudGVyID0gcXMoJy50b2RvLWNvdW50Jyk7CisgICAg
ICAgIHRoaXMuJGNsZWFyQ29tcGxldGVkID0gcXMoJy5jbGVhci1jb21wbGV0ZWQnKTsKKyAgICAg
ICAgdGhpcy4kbWFpbiA9IHFzKCcubWFpbicpOworICAgICAgICB0aGlzLiRmb290ZXIgPSBxcygn
LmZvb3RlcicpOworICAgICAgICB0aGlzLiR0b2dnbGVBbGwgPSBxcygnLnRvZ2dsZS1hbGwnKTsK
KyAgICAgICAgdGhpcy4kbmV3VG9kbyA9IHFzKCcubmV3LXRvZG8nKTsKICAgICB9CiAKLSAgICB0
ZW1wbGF0ZSA9IHRlbXBsYXRlLnJlcGxhY2UoJ3t7aWR9fScsIGRhdGFbaV0uaWQpOwotICAgIHRl
bXBsYXRlID0gdGVtcGxhdGUucmVwbGFjZSgne3t0aXRsZX19JywgZGF0YVtpXS50aXRsZSk7Ci0g
ICAgdGVtcGxhdGUgPSB0ZW1wbGF0ZS5yZXBsYWNlKCd7e2NvbXBsZXRlZH19JywgY29tcGxldGVk
KTsKLSAgICB0ZW1wbGF0ZSA9IHRlbXBsYXRlLnJlcGxhY2UoJ3t7Y2hlY2tlZH19JywgY2hlY2tl
ZCk7CisgICAgVmlldy5wcm90b3R5cGUuX3JlbW92ZUl0ZW0gPSBmdW5jdGlvbiAoaWQpIHsKKyAg
ICAgICAgdmFyIGVsZW0gPSBxcygnW2RhdGEtaWQ9IicgKyBpZCArICciXScpOwogCi0gICAgdmll
dyA9IHZpZXcgKyB0ZW1wbGF0ZTsKLSAgICB9CisgICAgICAgIGlmIChlbGVtKSB7CisgICAgICAg
ICAgICB0aGlzLiR0b2RvTGlzdC5yZW1vdmVDaGlsZChlbGVtKTsKKyAgICAgICAgfQorICAgIH07
CiAKLSAgICByZXR1cm4gdmlldzsKKyAgICBWaWV3LnByb3RvdHlwZS5fY2xlYXJDb21wbGV0ZWRC
dXR0b24gPSBmdW5jdGlvbiAoY29tcGxldGVkQ291bnQsIHZpc2libGUpIHsKKyAgICAgICAgdGhp
cy4kY2xlYXJDb21wbGV0ZWQuaW5uZXJIVE1MID0gdGhpcy50ZW1wbGF0ZS5jbGVhckNvbXBsZXRl
ZEJ1dHRvbihjb21wbGV0ZWRDb3VudCk7CisgICAgICAgIHRoaXMuJGNsZWFyQ29tcGxldGVkLnN0
eWxlLmRpc3BsYXkgPSB2aXNpYmxlID8gJ2Jsb2NrJyA6ICdub25lJzsKICAgICB9OwogCi0gICAg
LyoqCi0gICAgICogRGlzcGxheXMgYSBjb3VudGVyIG9mIGhvdyBtYW55IHRvIGRvcyBhcmUgbGVm
dCB0byBjb21wbGV0ZQotICAgICAqCi0gICAgICogQHBhcmFtIHtudW1iZXJ9IGFjdGl2ZVRvZG9z
IFRoZSBudW1iZXIgb2YgYWN0aXZlIHRvZG9zLgotICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFN0
cmluZyBjb250YWluaW5nIHRoZSBjb3VudAotICAgICAqLwotICAgIFZpZXcucHJvdG90eXBlLml0
ZW1Db3VudGVyID0gZnVuY3Rpb24gKGFjdGl2ZVRvZG9zKSB7Ci0gICAgdmFyIHBsdXJhbCA9IGFj
dGl2ZVRvZG9zID09PSAxID8gJycgOiAncyc7Ci0KLSAgICByZXR1cm4gJzxzdHJvbmc+JyArIGFj
dGl2ZVRvZG9zICsgJzwvc3Ryb25nPiBpdGVtJyArIHBsdXJhbCArICcgbGVmdCc7CisgICAgVmll
dy5wcm90b3R5cGUuX3NldEZpbHRlciA9IGZ1bmN0aW9uIChjdXJyZW50UGFnZSkgeworICAgICAg
ICBxcygnLmZpbHRlcnMgLnNlbGVjdGVkJykuY2xhc3NOYW1lID0gJyc7CisgICAgICAgIHFzKCcu
ZmlsdGVycyBbaHJlZj0iIy8nICsgY3VycmVudFBhZ2UgKyAnIl0nKS5jbGFzc05hbWUgPSAnc2Vs
ZWN0ZWQnOwogICAgIH07CiAKLSAgICAvKioKLSAgICAgKiBVcGRhdGVzIHRoZSB0ZXh0IHdpdGhp
biB0aGUgIkNsZWFyIGNvbXBsZXRlZCIgYnV0dG9uCi0gICAgICoKLSAgICAgKiBAcGFyYW0gIHtb
dHlwZV19IGNvbXBsZXRlZFRvZG9zIFRoZSBudW1iZXIgb2YgY29tcGxldGVkIHRvZG9zLgotICAg
ICAqIEByZXR1cm5zIHtzdHJpbmd9IFN0cmluZyBjb250YWluaW5nIHRoZSBjb3VudAotICAgICAq
LwotICAgIFZpZXcucHJvdG90eXBlLmNsZWFyQ29tcGxldGVkQnV0dG9uID0gZnVuY3Rpb24gKGNv
bXBsZXRlZFRvZG9zKSB7Ci0gICAgaWYgKGNvbXBsZXRlZFRvZG9zID4gMCkgewotICAgIHJldHVy
biAnQ2xlYXIgY29tcGxldGVkICgnICsgY29tcGxldGVkVG9kb3MgKyAnKSc7Ci0gICAgfSBlbHNl
IHsKLSAgICByZXR1cm4gJyc7Ci0gICAgfQorICAgIFZpZXcucHJvdG90eXBlLl9lbGVtZW50Q29t
cGxldGUgPSBmdW5jdGlvbiAoaWQsIGNvbXBsZXRlZCkgeworICAgICAgICB2YXIgbGlzdEl0ZW0g
PSBxcygnW2RhdGEtaWQ9IicgKyBpZCArICciXScpOworCisgICAgICAgIGlmICghbGlzdEl0ZW0p
IHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGxpc3RJdGVtLmNs
YXNzTmFtZSA9IGNvbXBsZXRlZCA/ICdjb21wbGV0ZWQnIDogJyc7CisKKyAgICAgICAgLy8gSW4g
Y2FzZSBpdCB3YXMgdG9nZ2xlZCBmcm9tIGFuIGV2ZW50IGFuZCBub3QgYnkgY2xpY2tpbmcgdGhl
IGNoZWNrYm94CisgICAgICAgIHFzKCdpbnB1dCcsIGxpc3RJdGVtKS5jaGVja2VkID0gY29tcGxl
dGVkOworICAgIH07CisKKyAgICBWaWV3LnByb3RvdHlwZS5fZWRpdEl0ZW0gPSBmdW5jdGlvbiAo
aWQsIHRpdGxlKSB7CisgICAgICAgIHZhciBsaXN0SXRlbSA9IHFzKCdbZGF0YS1pZD0iJyArIGlk
ICsgJyJdJyk7CisKKyAgICAgICAgaWYgKCFsaXN0SXRlbSkgeworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgbGlzdEl0ZW0uY2xhc3NOYW1lID0gbGlzdEl0ZW0uY2xh
c3NOYW1lICsgJyBlZGl0aW5nJzsKKworICAgICAgICB2YXIgaW5wdXQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdpbnB1dCcpOworICAgICAgICBpbnB1dC5jbGFzc05hbWUgPSAnZWRpdCc7CisK
KyAgICAgICAgbGlzdEl0ZW0uYXBwZW5kQ2hpbGQoaW5wdXQpOworICAgICAgICBpbnB1dC5mb2N1
cygpOworICAgICAgICBpbnB1dC52YWx1ZSA9IHRpdGxlOworICAgIH07CisKKyAgICBWaWV3LnBy
b3RvdHlwZS5fZWRpdEl0ZW1Eb25lID0gZnVuY3Rpb24gKGlkLCB0aXRsZSkgeworICAgICAgICB2
YXIgbGlzdEl0ZW0gPSBxcygnW2RhdGEtaWQ9IicgKyBpZCArICciXScpOworCisgICAgICAgIGlm
ICghbGlzdEl0ZW0pIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IHZhciBpbnB1dCA9IHFzKCdpbnB1dC5lZGl0JywgbGlzdEl0ZW0pOworICAgICAgICBsaXN0SXRl
bS5yZW1vdmVDaGlsZChpbnB1dCk7CisKKyAgICAgICAgbGlzdEl0ZW0uY2xhc3NOYW1lID0gbGlz
dEl0ZW0uY2xhc3NOYW1lLnJlcGxhY2UoJ2VkaXRpbmcnLCAnJyk7CisKKyAgICAgICAgcXNhKCds
YWJlbCcsIGxpc3RJdGVtKS5mb3JFYWNoKGZ1bmN0aW9uIChsYWJlbCkgeworICAgICAgICAgICAg
bGFiZWwudGV4dENvbnRlbnQgPSB0aXRsZTsKKyAgICAgICAgfSk7CisgICAgfTsKKworICAgIFZp
ZXcucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICh2aWV3Q21kLCBwYXJhbWV0ZXIpIHsKKyAg
ICAgICAgdmFyIHNlbGYgPSB0aGlzOworICAgICAgICB2YXIgdmlld0NvbW1hbmRzID0geworICAg
ICAgICAgICAgc2hvd0VudHJpZXM6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBzZWxm
LiR0b2RvTGlzdC5pbm5lckhUTUwgPSBzZWxmLnRlbXBsYXRlLnNob3cocGFyYW1ldGVyKTsKKyAg
ICAgICAgICAgIH0sCisgICAgICAgICAgICByZW1vdmVJdGVtOiBmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICAgICAgc2VsZi5fcmVtb3ZlSXRlbShwYXJhbWV0ZXIpOworICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgIHVwZGF0ZUVsZW1lbnRDb3VudDogZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgICAgIHNlbGYuJHRvZG9JdGVtQ291bnRlci5pbm5lckhUTUwgPSBzZWxmLnRlbXBsYXRlLml0
ZW1Db3VudGVyKHBhcmFtZXRlcik7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgY2xlYXJD
b21wbGV0ZWRCdXR0b246IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBzZWxmLl9jbGVh
ckNvbXBsZXRlZEJ1dHRvbihwYXJhbWV0ZXIuY29tcGxldGVkLCBwYXJhbWV0ZXIudmlzaWJsZSk7
CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgY29udGVudEJsb2NrVmlzaWJpbGl0eTogZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHNlbGYuJG1haW4uc3R5bGUuZGlzcGxheSA9IHNl
bGYuJGZvb3Rlci5zdHlsZS5kaXNwbGF5ID0gcGFyYW1ldGVyLnZpc2libGUgPyAnYmxvY2snIDog
J25vbmUnOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHRvZ2dsZUFsbDogZnVuY3Rpb24g
KCkgeworICAgICAgICAgICAgICAgIHNlbGYuJHRvZ2dsZUFsbC5jaGVja2VkID0gcGFyYW1ldGVy
LmNoZWNrZWQ7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgc2V0RmlsdGVyOiBmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICAgICAgc2VsZi5fc2V0RmlsdGVyKHBhcmFtZXRlcik7CisgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgY2xlYXJOZXdUb2RvOiBmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICAgICAgc2VsZi4kbmV3VG9kby52YWx1ZSA9ICcnOworICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgIGVsZW1lbnRDb21wbGV0ZTogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAg
IHNlbGYuX2VsZW1lbnRDb21wbGV0ZShwYXJhbWV0ZXIuaWQsIHBhcmFtZXRlci5jb21wbGV0ZWQp
OworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGVkaXRJdGVtOiBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICAgICAgc2VsZi5fZWRpdEl0ZW0ocGFyYW1ldGVyLmlkLCBwYXJhbWV0ZXIudGl0
bGUpOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGVkaXRJdGVtRG9uZTogZnVuY3Rpb24g
KCkgeworICAgICAgICAgICAgICAgIHNlbGYuX2VkaXRJdGVtRG9uZShwYXJhbWV0ZXIuaWQsIHBh
cmFtZXRlci50aXRsZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgdmll
d0NvbW1hbmRzW3ZpZXdDbWRdKCk7CisgICAgfTsKKworICAgIFZpZXcucHJvdG90eXBlLl9pdGVt
SWQgPSBmdW5jdGlvbiAoZWxlbWVudCkgeworICAgICAgICB2YXIgbGkgPSAkcGFyZW50KGVsZW1l
bnQsICdsaScpOworICAgICAgICByZXR1cm4gcGFyc2VJbnQobGkuZGF0YXNldC5pZCwgMTApOwor
ICAgIH07CisKKyAgICBWaWV3LnByb3RvdHlwZS5fYmluZEl0ZW1FZGl0RG9uZSA9IGZ1bmN0aW9u
IChoYW5kbGVyKSB7CisgICAgICAgIHZhciBzZWxmID0gdGhpczsKKyAgICAgICAgJGRlbGVnYXRl
KHNlbGYuJHRvZG9MaXN0LCAnbGkgLmVkaXQnLCAnYmx1cicsIGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgIGlmICghdGhpcy5kYXRhc2V0LmlzY2FuY2VsZWQpIHsKKyAgICAgICAgICAgICAgICBo
YW5kbGVyKHsKKyAgICAgICAgICAgICAgICAgICAgaWQ6IHNlbGYuX2l0ZW1JZCh0aGlzKSwKKyAg
ICAgICAgICAgICAgICAgICAgdGl0bGU6IHRoaXMudmFsdWUKKyAgICAgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisKKyAgICAgICAgJGRlbGVnYXRlKHNlbGYuJHRv
ZG9MaXN0LCAnbGkgLmVkaXQnLCAna2V5cHJlc3MnLCBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAg
ICAgICAgIGlmIChldmVudC5rZXlDb2RlID09PSBzZWxmLkVOVEVSX0tFWSkgeworICAgICAgICAg
ICAgICAgIC8vIFJlbW92ZSB0aGUgY3Vyc29yIGZyb20gdGhlIGlucHV0IHdoZW4geW91IGhpdCBl
bnRlciBqdXN0IGxpa2UgaWYgaXQKKyAgICAgICAgICAgICAgICAvLyB3ZXJlIGEgcmVhbCBmb3Jt
CisgICAgICAgICAgICAgICAgdGhpcy5ibHVyKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0p
OworICAgIH07CisKKyAgICBWaWV3LnByb3RvdHlwZS5fYmluZEl0ZW1FZGl0Q2FuY2VsID0gZnVu
Y3Rpb24gKGhhbmRsZXIpIHsKKyAgICAgICAgdmFyIHNlbGYgPSB0aGlzOworICAgICAgICAkZGVs
ZWdhdGUoc2VsZi4kdG9kb0xpc3QsICdsaSAuZWRpdCcsICdrZXl1cCcsIGZ1bmN0aW9uIChldmVu
dCkgeworICAgICAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IHNlbGYuRVNDQVBFX0tFWSkg
eworICAgICAgICAgICAgICAgIHRoaXMuZGF0YXNldC5pc2NhbmNlbGVkID0gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICB0aGlzLmJsdXIoKTsKKworICAgICAgICAgICAgICAgIGhhbmRsZXIoe2lkOiBz
ZWxmLl9pdGVtSWQodGhpcyl9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfTsK
KworICAgIFZpZXcucHJvdG90eXBlLmJpbmQgPSBmdW5jdGlvbiAoZXZlbnQsIGhhbmRsZXIpIHsK
KyAgICAgICAgdmFyIHNlbGYgPSB0aGlzOworICAgICAgICBpZiAoZXZlbnQgPT09ICduZXdUb2Rv
JykgeworICAgICAgICAgICAgJG9uKHNlbGYuJG5ld1RvZG8sICdjaGFuZ2UnLCBmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICAgICAgaGFuZGxlcihzZWxmLiRuZXdUb2RvLnZhbHVlKTsKKyAgICAg
ICAgICAgIH0pOworCisgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQgPT09ICdyZW1vdmVDb21wbGV0
ZWQnKSB7CisgICAgICAgICAgICAkb24oc2VsZi4kY2xlYXJDb21wbGV0ZWQsICdjbGljaycsIGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBoYW5kbGVyKCk7CisgICAgICAgICAgICB9KTsK
KworICAgICAgICB9IGVsc2UgaWYgKGV2ZW50ID09PSAndG9nZ2xlQWxsJykgeworICAgICAgICAg
ICAgJG9uKHNlbGYuJHRvZ2dsZUFsbCwgJ2NsaWNrJywgZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgICAgIGhhbmRsZXIoe2NvbXBsZXRlZDogdGhpcy5jaGVja2VkfSk7CisgICAgICAgICAgICB9
KTsKKworICAgICAgICB9IGVsc2UgaWYgKGV2ZW50ID09PSAnaXRlbUVkaXQnKSB7CisgICAgICAg
ICAgICAkZGVsZWdhdGUoc2VsZi4kdG9kb0xpc3QsICdsaSBsYWJlbCcsICdkYmxjbGljaycsIGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBoYW5kbGVyKHtpZDogc2VsZi5faXRlbUlkKHRo
aXMpfSk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICB9IGVsc2UgaWYgKGV2ZW50ID09PSAn
aXRlbVJlbW92ZScpIHsKKyAgICAgICAgICAgICRkZWxlZ2F0ZShzZWxmLiR0b2RvTGlzdCwgJy5k
ZXN0cm95JywgJ2NsaWNrJywgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGhhbmRsZXIo
e2lkOiBzZWxmLl9pdGVtSWQodGhpcyl9KTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgIH0g
ZWxzZSBpZiAoZXZlbnQgPT09ICdpdGVtVG9nZ2xlJykgeworICAgICAgICAgICAgJGRlbGVnYXRl
KHNlbGYuJHRvZG9MaXN0LCAnLnRvZ2dsZScsICdjbGljaycsIGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgICAgICBoYW5kbGVyKHsKKyAgICAgICAgICAgICAgICAgICAgaWQ6IHNlbGYuX2l0ZW1J
ZCh0aGlzKSwKKyAgICAgICAgICAgICAgICAgICAgY29tcGxldGVkOiB0aGlzLmNoZWNrZWQKKyAg
ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgIH0gZWxzZSBpZiAo
ZXZlbnQgPT09ICdpdGVtRWRpdERvbmUnKSB7CisgICAgICAgICAgICBzZWxmLl9iaW5kSXRlbUVk
aXREb25lKGhhbmRsZXIpOworCisgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQgPT09ICdpdGVtRWRp
dENhbmNlbCcpIHsKKyAgICAgICAgICAgIHNlbGYuX2JpbmRJdGVtRWRpdENhbmNlbChoYW5kbGVy
KTsKKyAgICAgICAgfQogICAgIH07CiAKICAgICAvLyBFeHBvcnQgdG8gd2luZG93CisgICAgd2lu
ZG93LmFwcCA9IHdpbmRvdy5hcHAgfHwge307CiAgICAgd2luZG93LmFwcC5WaWV3ID0gVmlldzsK
LX0pKHdpbmRvdyk7Cit9KHdpbmRvdykpOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9u
b2RlX21vZHVsZXMvdG9kb212Yy1hcHAtY3NzL2luZGV4LmNzcyBiL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMv
bm9kZV9tb2R1bGVzL3RvZG9tdmMtYXBwLWNzcy9pbmRleC5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjJhYjll
MmNhZDc2OTY2ZGViOGJlNDJlOTc3YzQzMDI0MWM0MzQ3NwotLS0gL2Rldi9udWxsCisrKyBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFt
cGxlcy92YW5pbGxhanMvbm9kZV9tb2R1bGVzL3RvZG9tdmMtYXBwLWNzcy9pbmRleC5jc3MKQEAg
LTAsMCArMSwzNzggQEAKK2h0bWwsCitib2R5IHsKKyAgICBtYXJnaW46IDA7CisgICAgcGFkZGlu
ZzogMDsKK30KKworYnV0dG9uIHsKKyAgICBtYXJnaW46IDA7CisgICAgcGFkZGluZzogMDsKKyAg
ICBib3JkZXI6IDA7CisgICAgYmFja2dyb3VuZDogbm9uZTsKKyAgICBmb250LXNpemU6IDEwMCU7
CisgICAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOworICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0
OworICAgIGZvbnQtd2VpZ2h0OiBpbmhlcml0OworICAgIGNvbG9yOiBpbmhlcml0OworICAgIC13
ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKKyAgICBhcHBlYXJhbmNlOiBub25lOworICAgIC13ZWJr
aXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOworICAgIC1tb3otZm9udC1zbW9vdGhpbmc6
IGFudGlhbGlhc2VkOworICAgIGZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKK30KKworYm9k
eSB7CisgICAgZm9udDogMTRweCAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIEFyaWFsLCBz
YW5zLXNlcmlmOworICAgIGxpbmUtaGVpZ2h0OiAxLjRlbTsKKyAgICBiYWNrZ3JvdW5kOiAjZjVm
NWY1OworICAgIGNvbG9yOiAjNGQ0ZDRkOworICAgIG1pbi13aWR0aDogMjMwcHg7CisgICAgbWF4
LXdpZHRoOiA1NTBweDsKKyAgICBtYXJnaW46IDAgYXV0bzsKKyAgICAtd2Via2l0LWZvbnQtc21v
b3RoaW5nOiBhbnRpYWxpYXNlZDsKKyAgICAtbW96LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNl
ZDsKKyAgICBmb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CisgICAgZm9udC13ZWlnaHQ6IDMw
MDsKK30KKworYnV0dG9uLAoraW5wdXRbdHlwZT0iY2hlY2tib3giXSB7CisgICAgb3V0bGluZTog
bm9uZTsKK30KKworLmhpZGRlbiB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKworLnRvZG9hcHAg
eworICAgIGJhY2tncm91bmQ6ICNmZmY7CisgICAgbWFyZ2luOiAxMzBweCAwIDQwcHggMDsKKyAg
ICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgYm94LXNoYWRvdzogMCAycHggNHB4IDAgcmdiYSgw
LCAwLCAwLCAwLjIpLAorICAgICAgICAgICAgICAgIDAgMjVweCA1MHB4IDAgcmdiYSgwLCAwLCAw
LCAwLjEpOworfQorCisudG9kb2FwcCBpbnB1dDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7
CisgICAgZm9udC1zdHlsZTogaXRhbGljOworICAgIGZvbnQtd2VpZ2h0OiAzMDA7CisgICAgY29s
b3I6ICNlNmU2ZTY7Cit9CisKKy50b2RvYXBwIGlucHV0OjotbW96LXBsYWNlaG9sZGVyIHsKKyAg
ICBmb250LXN0eWxlOiBpdGFsaWM7CisgICAgZm9udC13ZWlnaHQ6IDMwMDsKKyAgICBjb2xvcjog
I2U2ZTZlNjsKK30KKworLnRvZG9hcHAgaW5wdXQ6OmlucHV0LXBsYWNlaG9sZGVyIHsKKyAgICBm
b250LXN0eWxlOiBpdGFsaWM7CisgICAgZm9udC13ZWlnaHQ6IDMwMDsKKyAgICBjb2xvcjogI2U2
ZTZlNjsKK30KKworLnRvZG9hcHAgaDEgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0
b3A6IC0xNTVweDsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBmb250LXNpemU6IDEwMHB4OworICAg
IGZvbnQtd2VpZ2h0OiAxMDA7CisgICAgdGV4dC1hbGlnbjogY2VudGVyOworICAgIGNvbG9yOiBy
Z2JhKDE3NSwgNDcsIDQ3LCAwLjE1KTsKKyAgICAtd2Via2l0LXRleHQtcmVuZGVyaW5nOiBvcHRp
bWl6ZUxlZ2liaWxpdHk7CisgICAgLW1vei10ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmls
aXR5OworICAgIHRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7Cit9CisKKy5uZXct
dG9kbywKKy5lZGl0IHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgbWFyZ2luOiAwOwor
ICAgIHdpZHRoOiAxMDAlOworICAgIGZvbnQtc2l6ZTogMjRweDsKKyAgICBmb250LWZhbWlseTog
aW5oZXJpdDsKKyAgICBmb250LXdlaWdodDogaW5oZXJpdDsKKyAgICBsaW5lLWhlaWdodDogMS40
ZW07CisgICAgYm9yZGVyOiAwOworICAgIG91dGxpbmU6IG5vbmU7CisgICAgY29sb3I6IGluaGVy
aXQ7CisgICAgcGFkZGluZzogNnB4OworICAgIGJvcmRlcjogMXB4IHNvbGlkICM5OTk7CisgICAg
Ym94LXNoYWRvdzogaW5zZXQgMCAtMXB4IDVweCAwIHJnYmEoMCwgMCwgMCwgMC4yKTsKKyAgICBi
b3gtc2l6aW5nOiBib3JkZXItYm94OworICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlh
bGlhc2VkOworICAgIC1tb3otZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOworICAgIGZvbnQt
c21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKK30KKworLm5ldy10b2RvIHsKKyAgICBwYWRkaW5nOiAx
NnB4IDE2cHggMTZweCA2MHB4OworICAgIGJvcmRlcjogbm9uZTsKKyAgICBiYWNrZ3JvdW5kOiBy
Z2JhKDAsIDAsIDAsIDAuMDAzKTsKKyAgICBib3gtc2hhZG93OiBpbnNldCAwIC0ycHggMXB4IHJn
YmEoMCwwLDAsMC4wMyk7Cit9CisKKy5tYWluIHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cisg
ICAgei1pbmRleDogMjsKKyAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2U2ZTZlNjsKK30KKwor
bGFiZWxbZm9yPSd0b2dnbGUtYWxsJ10geworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKKy50b2dn
bGUtYWxsIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiAtNTVweDsKKyAgICBs
ZWZ0OiAtMTJweDsKKyAgICB3aWR0aDogNjBweDsKKyAgICBoZWlnaHQ6IDM0cHg7CisgICAgdGV4
dC1hbGlnbjogY2VudGVyOworICAgIGJvcmRlcjogbm9uZTsgLyogTW9iaWxlIFNhZmFyaSAqLwor
fQorCisudG9nZ2xlLWFsbDpiZWZvcmUgeworICAgIGNvbnRlbnQ6ICfina8nOworICAgIGZvbnQt
c2l6ZTogMjJweDsKKyAgICBjb2xvcjogI2U2ZTZlNjsKKyAgICBwYWRkaW5nOiAxMHB4IDI3cHgg
MTBweCAyN3B4OworfQorCisudG9nZ2xlLWFsbDpjaGVja2VkOmJlZm9yZSB7CisgICAgY29sb3I6
ICM3MzczNzM7Cit9CisKKy50b2RvLWxpc3QgeworICAgIG1hcmdpbjogMDsKKyAgICBwYWRkaW5n
OiAwOworICAgIGxpc3Qtc3R5bGU6IG5vbmU7Cit9CisKKy50b2RvLWxpc3QgbGkgeworICAgIHBv
c2l0aW9uOiByZWxhdGl2ZTsKKyAgICBmb250LXNpemU6IDI0cHg7CisgICAgYm9yZGVyLWJvdHRv
bTogMXB4IHNvbGlkICNlZGVkZWQ7Cit9CisKKy50b2RvLWxpc3QgbGk6bGFzdC1jaGlsZCB7Cisg
ICAgYm9yZGVyLWJvdHRvbTogbm9uZTsKK30KKworLnRvZG8tbGlzdCBsaS5lZGl0aW5nIHsKKyAg
ICBib3JkZXItYm90dG9tOiBub25lOworICAgIHBhZGRpbmc6IDA7Cit9CisKKy50b2RvLWxpc3Qg
bGkuZWRpdGluZyAuZWRpdCB7CisgICAgZGlzcGxheTogYmxvY2s7CisgICAgd2lkdGg6IDUwNnB4
OworICAgIHBhZGRpbmc6IDEzcHggMTdweCAxMnB4IDE3cHg7CisgICAgbWFyZ2luOiAwIDAgMCA0
M3B4OworfQorCisudG9kby1saXN0IGxpLmVkaXRpbmcgLnZpZXcgeworICAgIGRpc3BsYXk6IG5v
bmU7Cit9CisKKy50b2RvLWxpc3QgbGkgLnRvZ2dsZSB7CisgICAgdGV4dC1hbGlnbjogY2VudGVy
OworICAgIHdpZHRoOiA0MHB4OworICAgIC8qIGF1dG8sIHNpbmNlIG5vbi1XZWJLaXQgYnJvd3Nl
cnMgZG9lc24ndCBzdXBwb3J0IGlucHV0IHN0eWxpbmcgKi8KKyAgICBoZWlnaHQ6IGF1dG87Cisg
ICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDogMDsKKyAgICBib3R0b206IDA7CisgICAg
bWFyZ2luOiBhdXRvIDA7CisgICAgYm9yZGVyOiBub25lOyAvKiBNb2JpbGUgU2FmYXJpICovCisg
ICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOworICAgIGFwcGVhcmFuY2U6IG5vbmU7Cit9CisK
Ky50b2RvLWxpc3QgbGkgLnRvZ2dsZTphZnRlciB7CisgICAgY29udGVudDogdXJsKCdkYXRhOmlt
YWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
d2lkdGg9IjQwIiBoZWlnaHQ9IjQwIiB2aWV3Qm94PSItMTAgLTE4IDEwMCAxMzUiPjxjaXJjbGUg
Y3g9IjUwIiBjeT0iNTAiIHI9IjUwIiBmaWxsPSJub25lIiBzdHJva2U9IiNlZGVkZWQiIHN0cm9r
ZS13aWR0aD0iMyIvPjwvc3ZnPicpOworfQorCisudG9kby1saXN0IGxpIC50b2dnbGU6Y2hlY2tl
ZDphZnRlciB7CisgICAgY29udGVudDogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjQwIiBoZWlnaHQ9IjQw
IiB2aWV3Qm94PSItMTAgLTE4IDEwMCAxMzUiPjxjaXJjbGUgY3g9IjUwIiBjeT0iNTAiIHI9IjUw
IiBmaWxsPSJub25lIiBzdHJva2U9IiNiZGRhZDUiIHN0cm9rZS13aWR0aD0iMyIvPjxwYXRoIGZp
bGw9IiM1ZGMyYWYiIGQ9Ik03MiAyNUw0MiA3MSAyNyA1NmwtNCA0IDIwIDIwIDM0LTUyeiIvPjwv
c3ZnPicpOworfQorCisudG9kby1saXN0IGxpIGxhYmVsIHsKKyAgICB3aGl0ZS1zcGFjZTogcHJl
LWxpbmU7CisgICAgd29yZC1icmVhazogYnJlYWstYWxsOworICAgIHBhZGRpbmc6IDE1cHggNjBw
eCAxNXB4IDE1cHg7CisgICAgbWFyZ2luLWxlZnQ6IDQ1cHg7CisgICAgZGlzcGxheTogYmxvY2s7
CisgICAgbGluZS1oZWlnaHQ6IDEuMjsKKyAgICB0cmFuc2l0aW9uOiBjb2xvciAwLjRzOworfQor
CisudG9kby1saXN0IGxpLmNvbXBsZXRlZCBsYWJlbCB7CisgICAgY29sb3I6ICNkOWQ5ZDk7Cisg
ICAgdGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2g7Cit9CisKKy50b2RvLWxpc3QgbGkgLmRl
c3Ryb3kgeworICAgIGRpc3BsYXk6IG5vbmU7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAg
IHRvcDogMDsKKyAgICByaWdodDogMTBweDsKKyAgICBib3R0b206IDA7CisgICAgd2lkdGg6IDQw
cHg7CisgICAgaGVpZ2h0OiA0MHB4OworICAgIG1hcmdpbjogYXV0byAwOworICAgIGZvbnQtc2l6
ZTogMzBweDsKKyAgICBjb2xvcjogI2NjOWE5YTsKKyAgICBtYXJnaW4tYm90dG9tOiAxMXB4Owor
ICAgIHRyYW5zaXRpb246IGNvbG9yIDAuMnMgZWFzZS1vdXQ7Cit9CisKKy50b2RvLWxpc3QgbGkg
LmRlc3Ryb3k6aG92ZXIgeworICAgIGNvbG9yOiAjYWY1YjVlOworfQorCisudG9kby1saXN0IGxp
IC5kZXN0cm95OmFmdGVyIHsKKyAgICBjb250ZW50OiAnw5cnOworfQorCisudG9kby1saXN0IGxp
OmhvdmVyIC5kZXN0cm95IHsKKyAgICBkaXNwbGF5OiBibG9jazsKK30KKworLnRvZG8tbGlzdCBs
aSAuZWRpdCB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKworLnRvZG8tbGlzdCBsaS5lZGl0aW5n
Omxhc3QtY2hpbGQgeworICAgIG1hcmdpbi1ib3R0b206IC0xcHg7Cit9CisKKy5mb290ZXIgewor
ICAgIGNvbG9yOiAjNzc3OworICAgIHBhZGRpbmc6IDEwcHggMTVweDsKKyAgICBoZWlnaHQ6IDIw
cHg7CisgICAgdGV4dC1hbGlnbjogY2VudGVyOworICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAj
ZTZlNmU2OworfQorCisuZm9vdGVyOmJlZm9yZSB7CisgICAgY29udGVudDogJyc7CisgICAgcG9z
aXRpb246IGFic29sdXRlOworICAgIHJpZ2h0OiAwOworICAgIGJvdHRvbTogMDsKKyAgICBsZWZ0
OiAwOworICAgIGhlaWdodDogNTBweDsKKyAgICBvdmVyZmxvdzogaGlkZGVuOworICAgIGJveC1z
aGFkb3c6IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMiksCisgICAgICAgICAgICAgICAgMCA4
cHggMCAtM3B4ICNmNmY2ZjYsCisgICAgICAgICAgICAgICAgMCA5cHggMXB4IC0zcHggcmdiYSgw
LCAwLCAwLCAwLjIpLAorICAgICAgICAgICAgICAgIDAgMTZweCAwIC02cHggI2Y2ZjZmNiwKKyAg
ICAgICAgICAgICAgICAwIDE3cHggMnB4IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpOworfQorCisu
dG9kby1jb3VudCB7CisgICAgZmxvYXQ6IGxlZnQ7CisgICAgdGV4dC1hbGlnbjogbGVmdDsKK30K
KworLnRvZG8tY291bnQgc3Ryb25nIHsKKyAgICBmb250LXdlaWdodDogMzAwOworfQorCisuZmls
dGVycyB7CisgICAgbWFyZ2luOiAwOworICAgIHBhZGRpbmc6IDA7CisgICAgbGlzdC1zdHlsZTog
bm9uZTsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgcmlnaHQ6IDA7CisgICAgbGVmdDog
MDsKK30KKworLmZpbHRlcnMgbGkgeworICAgIGRpc3BsYXk6IGlubGluZTsKK30KKworLmZpbHRl
cnMgbGkgYSB7CisgICAgY29sb3I6IGluaGVyaXQ7CisgICAgbWFyZ2luOiAzcHg7CisgICAgcGFk
ZGluZzogM3B4IDdweDsKKyAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CisgICAgYm9yZGVyOiAx
cHggc29saWQgdHJhbnNwYXJlbnQ7CisgICAgYm9yZGVyLXJhZGl1czogM3B4OworfQorCisuZmls
dGVycyBsaSBhLnNlbGVjdGVkLAorLmZpbHRlcnMgbGkgYTpob3ZlciB7CisgICAgYm9yZGVyLWNv
bG9yOiByZ2JhKDE3NSwgNDcsIDQ3LCAwLjEpOworfQorCisuZmlsdGVycyBsaSBhLnNlbGVjdGVk
IHsKKyAgICBib3JkZXItY29sb3I6IHJnYmEoMTc1LCA0NywgNDcsIDAuMik7Cit9CisKKy5jbGVh
ci1jb21wbGV0ZWQsCitodG1sIC5jbGVhci1jb21wbGV0ZWQ6YWN0aXZlIHsKKyAgICBmbG9hdDog
cmlnaHQ7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgIGxpbmUtaGVpZ2h0OiAyMHB4Owor
ICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKKyAgICBjdXJzb3I6IHBvaW50ZXI7CisgICAgcG9z
aXRpb246IHJlbGF0aXZlOworfQorCisuY2xlYXItY29tcGxldGVkOmhvdmVyIHsKKyAgICB0ZXh0
LWRlY29yYXRpb246IHVuZGVybGluZTsKK30KKworLmluZm8geworICAgIG1hcmdpbjogNjVweCBh
dXRvIDA7CisgICAgY29sb3I6ICNiZmJmYmY7CisgICAgZm9udC1zaXplOiAxMHB4OworICAgIHRl
eHQtc2hhZG93OiAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTsKKyAgICB0ZXh0LWFs
aWduOiBjZW50ZXI7Cit9CisKKy5pbmZvIHAgeworICAgIGxpbmUtaGVpZ2h0OiAxOworfQorCisu
aW5mbyBhIHsKKyAgICBjb2xvcjogaW5oZXJpdDsKKyAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7
CisgICAgZm9udC13ZWlnaHQ6IDQwMDsKK30KKworLmluZm8gYTpob3ZlciB7CisgICAgdGV4dC1k
ZWNvcmF0aW9uOiB1bmRlcmxpbmU7Cit9CisKKy8qCisgICAgSGFjayB0byByZW1vdmUgYmFja2dy
b3VuZCBmcm9tIE1vYmlsZSBTYWZhcmkuCisgICAgQ2FuJ3QgdXNlIGl0IGdsb2JhbGx5IHNpbmNl
IGl0IGRlc3Ryb3lzIGNoZWNrYm94ZXMgaW4gRmlyZWZveAorKi8KK0BtZWRpYSBzY3JlZW4gYW5k
ICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86MCkgeworICAgIC50b2dnbGUtYWxsLAor
ICAgIC50b2RvLWxpc3QgbGkgLnRvZ2dsZSB7CisgICAgICAgIGJhY2tncm91bmQ6IG5vbmU7Cisg
ICAgfQorCisgICAgLnRvZG8tbGlzdCBsaSAudG9nZ2xlIHsKKyAgICAgICAgaGVpZ2h0OiA0MHB4
OworICAgIH0KKworICAgIC50b2dnbGUtYWxsIHsKKyAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06
IHJvdGF0ZSg5MGRlZyk7CisgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsKKyAgICAg
ICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOworICAgICAgICBhcHBlYXJhbmNlOiBub25lOwor
ICAgIH0KK30KKworQG1lZGlhIChtYXgtd2lkdGg6IDQzMHB4KSB7CisgICAgLmZvb3RlciB7Cisg
ICAgICAgIGhlaWdodDogNTBweDsKKyAgICB9CisKKyAgICAuZmlsdGVycyB7CisgICAgICAgIGJv
dHRvbTogMTBweDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL25vZGVf
bW9kdWxlcy90b2RvbXZjLWNvbW1vbi9iYXNlLmNzcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvbm9kZV9t
b2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jhc2UuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMjVkM2M4NGFjNmM2
YWVmMjZiOTY4M2EyYmMxMGM2MWY5NjBjOGYKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFu
aWxsYWpzL25vZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1vbi9iYXNlLmNzcwpAQCAtMCwwICsxLDE0
MSBAQAoraHIgeworICAgIG1hcmdpbjogMjBweCAwOworICAgIGJvcmRlcjogMDsKKyAgICBib3Jk
ZXItdG9wOiAxcHggZGFzaGVkICNjNWM1YzU7CisgICAgYm9yZGVyLWJvdHRvbTogMXB4IGRhc2hl
ZCAjZjdmN2Y3OworfQorCisubGVhcm4gYSB7CisgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKKyAg
ICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CisgICAgY29sb3I6ICNiODNmNDU7Cit9CisKKy5sZWFy
biBhOmhvdmVyIHsKKyAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKKyAgICBjb2xvcjog
Izc4N2U3ZTsKK30KKworLmxlYXJuIGgzLAorLmxlYXJuIGg0LAorLmxlYXJuIGg1IHsKKyAgICBt
YXJnaW46IDEwcHggMDsKKyAgICBmb250LXdlaWdodDogNTAwOworICAgIGxpbmUtaGVpZ2h0OiAx
LjI7CisgICAgY29sb3I6ICMwMDA7Cit9CisKKy5sZWFybiBoMyB7CisgICAgZm9udC1zaXplOiAy
NHB4OworfQorCisubGVhcm4gaDQgeworICAgIGZvbnQtc2l6ZTogMThweDsKK30KKworLmxlYXJu
IGg1IHsKKyAgICBtYXJnaW4tYm90dG9tOiAwOworICAgIGZvbnQtc2l6ZTogMTRweDsKK30KKwor
LmxlYXJuIHVsIHsKKyAgICBwYWRkaW5nOiAwOworICAgIG1hcmdpbjogMCAwIDMwcHggMjVweDsK
K30KKworLmxlYXJuIGxpIHsKKyAgICBsaW5lLWhlaWdodDogMjBweDsKK30KKworLmxlYXJuIHAg
eworICAgIGZvbnQtc2l6ZTogMTVweDsKKyAgICBmb250LXdlaWdodDogMzAwOworICAgIGxpbmUt
aGVpZ2h0OiAxLjM7CisgICAgbWFyZ2luLXRvcDogMDsKKyAgICBtYXJnaW4tYm90dG9tOiAwOwor
fQorCisjaXNzdWUtY291bnQgeworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKKy5xdW90ZSB7Cisg
ICAgYm9yZGVyOiBub25lOworICAgIG1hcmdpbjogMjBweCAwIDYwcHggMDsKK30KKworLnF1b3Rl
IHAgeworICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKK30KKworLnF1b3RlIHA6YmVmb3JlIHsKKyAg
ICBjb250ZW50OiAn4oCcJzsKKyAgICBmb250LXNpemU6IDUwcHg7CisgICAgb3BhY2l0eTogLjE1
OworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IC0yMHB4OworICAgIGxlZnQ6IDNw
eDsKK30KKworLnF1b3RlIHA6YWZ0ZXIgeworICAgIGNvbnRlbnQ6ICfigJ0nOworICAgIGZvbnQt
c2l6ZTogNTBweDsKKyAgICBvcGFjaXR5OiAuMTU7CisgICAgcG9zaXRpb246IGFic29sdXRlOwor
ICAgIGJvdHRvbTogLTQycHg7CisgICAgcmlnaHQ6IDNweDsKK30KKworLnF1b3RlIGZvb3RlciB7
CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIGJvdHRvbTogLTQwcHg7CisgICAgcmlnaHQ6
IDA7Cit9CisKKy5xdW90ZSBmb290ZXIgaW1nIHsKKyAgICBib3JkZXItcmFkaXVzOiAzcHg7Cit9
CisKKy5xdW90ZSBmb290ZXIgYSB7CisgICAgbWFyZ2luLWxlZnQ6IDVweDsKKyAgICB2ZXJ0aWNh
bC1hbGlnbjogbWlkZGxlOworfQorCisuc3BlZWNoLWJ1YmJsZSB7CisgICAgcG9zaXRpb246IHJl
bGF0aXZlOworICAgIHBhZGRpbmc6IDEwcHg7CisgICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAw
LCAuMDQpOworICAgIGJvcmRlci1yYWRpdXM6IDVweDsKK30KKworLnNwZWVjaC1idWJibGU6YWZ0
ZXIgeworICAgIGNvbnRlbnQ6ICcnOworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6
IDEwMCU7CisgICAgcmlnaHQ6IDMwcHg7CisgICAgYm9yZGVyOiAxM3B4IHNvbGlkIHRyYW5zcGFy
ZW50OworICAgIGJvcmRlci10b3AtY29sb3I6IHJnYmEoMCwgMCwgMCwgLjA0KTsKK30KKworLmxl
YXJuLWJhciA+IC5sZWFybiB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHdpZHRoOiAy
NzJweDsKKyAgICB0b3A6IDhweDsKKyAgICBsZWZ0OiAtMzAwcHg7CisgICAgcGFkZGluZzogMTBw
eDsKKyAgICBib3JkZXItcmFkaXVzOiA1cHg7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgy
NTUsIDI1NSwgMjU1LCAuNik7CisgICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogbGVmdDsKKyAgICB0
cmFuc2l0aW9uLWR1cmF0aW9uOiA1MDBtczsKK30KKworQG1lZGlhIChtaW4td2lkdGg6IDg5OXB4
KSB7CisgICAgLmxlYXJuLWJhciB7CisgICAgICAgIHdpZHRoOiBhdXRvOworICAgICAgICBwYWRk
aW5nLWxlZnQ6IDMwMHB4OworICAgIH0KKworICAgIC5sZWFybi1iYXIgPiAubGVhcm4geworICAg
ICAgICBsZWZ0OiA4cHg7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9u
b2RlX21vZHVsZXMvdG9kb212Yy1jb21tb24vYmFzZS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvbm9k
ZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jhc2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODFlMDA2YmM1MDJk
ZGM0Yzc0ZjQ3YmQxM2E4MzkyMjc3ZjgzMGRiOAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92
YW5pbGxhanMvbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jhc2UuanMKQEAgLTAsMCArMSwy
NDkgQEAKKy8qIGdsb2JhbCBfICovCisoZnVuY3Rpb24gKCkgeworICAgICd1c2Ugc3RyaWN0JzsK
KworICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi8KKyAgICAvLyBVbmRlcnNjb3JlJ3MgVGVt
cGxhdGUgTW9kdWxlCisgICAgLy8gQ291cnRlc3kgb2YgdW5kZXJzY29yZWpzLm9yZworICAgIHZh
ciBfID0gKGZ1bmN0aW9uIChfKSB7CisgICAgICAgIF8uZGVmYXVsdHMgPSBmdW5jdGlvbiAob2Jq
ZWN0KSB7CisgICAgICAgICAgICBpZiAoIW9iamVjdCkgeworICAgICAgICAgICAgICAgIHJldHVy
biBvYmplY3Q7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmb3IgKHZhciBhcmdzSW5kZXgg
PSAxLCBhcmdzTGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDsgYXJnc0luZGV4IDwgYXJnc0xlbmd0
aDsgYXJnc0luZGV4KyspIHsKKyAgICAgICAgICAgICAgICB2YXIgaXRlcmFibGUgPSBhcmd1bWVu
dHNbYXJnc0luZGV4XTsKKyAgICAgICAgICAgICAgICBpZiAoaXRlcmFibGUpIHsKKyAgICAgICAg
ICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIGl0ZXJhYmxlKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAob2JqZWN0W2tleV0gPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG9iamVjdFtrZXldID0gaXRlcmFibGVba2V5XTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIHJldHVybiBvYmplY3Q7CisgICAgICAgIH0KKworICAgICAgICAv
LyBCeSBkZWZhdWx0LCBVbmRlcnNjb3JlIHVzZXMgRVJCLXN0eWxlIHRlbXBsYXRlIGRlbGltaXRl
cnMsIGNoYW5nZSB0aGUKKyAgICAgICAgLy8gZm9sbG93aW5nIHRlbXBsYXRlIHNldHRpbmdzIHRv
IHVzZSBhbHRlcm5hdGl2ZSBkZWxpbWl0ZXJzLgorICAgICAgICBfLnRlbXBsYXRlU2V0dGluZ3Mg
PSB7CisgICAgICAgICAgICBldmFsdWF0ZSAgICA6IC88JShbXHNcU10rPyklPi9nLAorICAgICAg
ICAgICAgaW50ZXJwb2xhdGUgOiAvPCU9KFtcc1xTXSs/KSU+L2csCisgICAgICAgICAgICBlc2Nh
cGUgICAgICA6IC88JS0oW1xzXFNdKz8pJT4vZworICAgICAgICB9OworCisgICAgICAgIC8vIFdo
ZW4gY3VzdG9taXppbmcgYHRlbXBsYXRlU2V0dGluZ3NgLCBpZiB5b3UgZG9uJ3Qgd2FudCB0byBk
ZWZpbmUgYW4KKyAgICAgICAgLy8gaW50ZXJwb2xhdGlvbiwgZXZhbHVhdGlvbiBvciBlc2NhcGlu
ZyByZWdleCwgd2UgbmVlZCBvbmUgdGhhdCBpcworICAgICAgICAvLyBndWFyYW50ZWVkIG5vdCB0
byBtYXRjaC4KKyAgICAgICAgdmFyIG5vTWF0Y2ggPSAvKC4pXi87CisKKyAgICAgICAgLy8gQ2Vy
dGFpbiBjaGFyYWN0ZXJzIG5lZWQgdG8gYmUgZXNjYXBlZCBzbyB0aGF0IHRoZXkgY2FuIGJlIHB1
dCBpbnRvIGEKKyAgICAgICAgLy8gc3RyaW5nIGxpdGVyYWwuCisgICAgICAgIHZhciBlc2NhcGVz
ID0geworICAgICAgICAgICAgIiciOiAgICAgICInIiwKKyAgICAgICAgICAgICdcXCc6ICAgICAn
XFwnLAorICAgICAgICAgICAgJ1xyJzogICAgICdyJywKKyAgICAgICAgICAgICdcbic6ICAgICAn
bicsCisgICAgICAgICAgICAnXHQnOiAgICAgJ3QnLAorICAgICAgICAgICAgJ1x1MjAyOCc6ICd1
MjAyOCcsCisgICAgICAgICAgICAnXHUyMDI5JzogJ3UyMDI5JworICAgICAgICB9OworCisgICAg
ICAgIHZhciBlc2NhcGVyID0gL1xcfCd8XHJ8XG58XHR8XHUyMDI4fFx1MjAyOS9nOworCisgICAg
ICAgIC8vIEphdmFTY3JpcHQgbWljcm8tdGVtcGxhdGluZywgc2ltaWxhciB0byBKb2huIFJlc2ln
J3MgaW1wbGVtZW50YXRpb24uCisgICAgICAgIC8vIFVuZGVyc2NvcmUgdGVtcGxhdGluZyBoYW5k
bGVzIGFyYml0cmFyeSBkZWxpbWl0ZXJzLCBwcmVzZXJ2ZXMgd2hpdGVzcGFjZSwKKyAgICAgICAg
Ly8gYW5kIGNvcnJlY3RseSBlc2NhcGVzIHF1b3RlcyB3aXRoaW4gaW50ZXJwb2xhdGVkIGNvZGUu
CisgICAgICAgIF8udGVtcGxhdGUgPSBmdW5jdGlvbih0ZXh0LCBkYXRhLCBzZXR0aW5ncykgewor
ICAgICAgICAgICAgdmFyIHJlbmRlcjsKKyAgICAgICAgICAgIHNldHRpbmdzID0gXy5kZWZhdWx0
cyh7fSwgc2V0dGluZ3MsIF8udGVtcGxhdGVTZXR0aW5ncyk7CisKKyAgICAgICAgICAgIC8vIENv
bWJpbmUgZGVsaW1pdGVycyBpbnRvIG9uZSByZWd1bGFyIGV4cHJlc3Npb24gdmlhIGFsdGVybmF0
aW9uLgorICAgICAgICAgICAgdmFyIG1hdGNoZXIgPSBuZXcgUmVnRXhwKFsKKyAgICAgICAgICAg
ICAgICAoc2V0dGluZ3MuZXNjYXBlIHx8IG5vTWF0Y2gpLnNvdXJjZSwKKyAgICAgICAgICAgICAg
ICAoc2V0dGluZ3MuaW50ZXJwb2xhdGUgfHwgbm9NYXRjaCkuc291cmNlLAorICAgICAgICAgICAg
ICAgIChzZXR0aW5ncy5ldmFsdWF0ZSB8fCBub01hdGNoKS5zb3VyY2UKKyAgICAgICAgICAgIF0u
am9pbignfCcpICsgJ3wkJywgJ2cnKTsKKworICAgICAgICAgICAgLy8gQ29tcGlsZSB0aGUgdGVt
cGxhdGUgc291cmNlLCBlc2NhcGluZyBzdHJpbmcgbGl0ZXJhbHMgYXBwcm9wcmlhdGVseS4KKyAg
ICAgICAgICAgIHZhciBpbmRleCA9IDA7CisgICAgICAgICAgICB2YXIgc291cmNlID0gIl9fcCs9
JyI7CisgICAgICAgICAgICB0ZXh0LnJlcGxhY2UobWF0Y2hlciwgZnVuY3Rpb24obWF0Y2gsIGVz
Y2FwZSwgaW50ZXJwb2xhdGUsIGV2YWx1YXRlLCBvZmZzZXQpIHsKKyAgICAgICAgICAgICAgICBz
b3VyY2UgKz0gdGV4dC5zbGljZShpbmRleCwgb2Zmc2V0KQorICAgICAgICAgICAgICAgICAgICAu
cmVwbGFjZShlc2NhcGVyLCBmdW5jdGlvbihtYXRjaCkgeyByZXR1cm4gJ1xcJyArIGVzY2FwZXNb
bWF0Y2hdOyB9KTsKKworICAgICAgICAgICAgICAgIGlmIChlc2NhcGUpIHsKKyAgICAgICAgICAg
ICAgICAgICAgc291cmNlICs9ICInK1xuKChfX3Q9KCIgKyBlc2NhcGUgKyAiKSk9PW51bGw/Jyc6
Xy5lc2NhcGUoX190KSkrXG4nIjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
aWYgKGludGVycG9sYXRlKSB7CisgICAgICAgICAgICAgICAgICAgIHNvdXJjZSArPSAiJytcbigo
X190PSgiICsgaW50ZXJwb2xhdGUgKyAiKSk9PW51bGw/Jyc6X190KStcbiciOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoZXZhbHVhdGUpIHsKKyAgICAgICAgICAgICAg
ICAgICAgc291cmNlICs9ICInO1xuIiArIGV2YWx1YXRlICsgIlxuX19wKz0nIjsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgaW5kZXggPSBvZmZzZXQgKyBtYXRjaC5sZW5ndGg7
CisgICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoOworICAgICAgICAgICAgfSk7CisgICAgICAg
ICAgICBzb3VyY2UgKz0gIic7XG4iOworCisgICAgICAgICAgICAvLyBJZiBhIHZhcmlhYmxlIGlz
IG5vdCBzcGVjaWZpZWQsIHBsYWNlIGRhdGEgdmFsdWVzIGluIGxvY2FsIHNjb3BlLgorICAgICAg
ICAgICAgaWYgKCFzZXR0aW5ncy52YXJpYWJsZSkgc291cmNlID0gJ3dpdGgob2JqfHx7fSl7XG4n
ICsgc291cmNlICsgJ31cbic7CisKKyAgICAgICAgICAgIHNvdXJjZSA9ICJ2YXIgX190LF9fcD0n
JyxfX2o9QXJyYXkucHJvdG90eXBlLmpvaW4sIiArCisgICAgICAgICAgICAgICAgInByaW50PWZ1
bmN0aW9uKCl7X19wKz1fX2ouY2FsbChhcmd1bWVudHMsJycpO307XG4iICsKKyAgICAgICAgICAg
ICAgICBzb3VyY2UgKyAicmV0dXJuIF9fcDtcbiI7CisKKyAgICAgICAgICAgIHRyeSB7CisgICAg
ICAgICAgICAgICAgcmVuZGVyID0gbmV3IEZ1bmN0aW9uKHNldHRpbmdzLnZhcmlhYmxlIHx8ICdv
YmonLCAnXycsIHNvdXJjZSk7CisgICAgICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAg
ICAgICAgZS5zb3VyY2UgPSBzb3VyY2U7CisgICAgICAgICAgICAgICAgdGhyb3cgZTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGRhdGEpIHJldHVybiByZW5kZXIoZGF0YSwgXyk7
CisgICAgICAgICAgICB2YXIgdGVtcGxhdGUgPSBmdW5jdGlvbihkYXRhKSB7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHJlbmRlci5jYWxsKHRoaXMsIGRhdGEsIF8pOworICAgICAgICAgICAgfTsK
KworICAgICAgICAgICAgLy8gUHJvdmlkZSB0aGUgY29tcGlsZWQgZnVuY3Rpb24gc291cmNlIGFz
IGEgY29udmVuaWVuY2UgZm9yIHByZWNvbXBpbGF0aW9uLgorICAgICAgICAgICAgdGVtcGxhdGUu
c291cmNlID0gJ2Z1bmN0aW9uKCcgKyAoc2V0dGluZ3MudmFyaWFibGUgfHwgJ29iaicpICsgJyl7
XG4nICsgc291cmNlICsgJ30nOworCisgICAgICAgICAgICByZXR1cm4gdGVtcGxhdGU7CisgICAg
ICAgIH07CisKKyAgICAgICAgcmV0dXJuIF87CisgICAgfSkoe30pOworCisgICAgaWYgKGxvY2F0
aW9uLmhvc3RuYW1lID09PSAndG9kb212Yy5jb20nKSB7CisgICAgICAgIChmdW5jdGlvbihpLHMs
byxnLHIsYSxtKXtpWydHb29nbGVBbmFseXRpY3NPYmplY3QnXT1yO2lbcl09aVtyXXx8ZnVuY3Rp
b24oKXsKKyAgICAgICAgKGlbcl0ucT1pW3JdLnF8fFtdKS5wdXNoKGFyZ3VtZW50cyl9LGlbcl0u
bD0xKm5ldyBEYXRlKCk7YT1zLmNyZWF0ZUVsZW1lbnQobyksCisgICAgICAgIG09cy5nZXRFbGVt
ZW50c0J5VGFnTmFtZShvKVswXTthLmFzeW5jPTE7YS5zcmM9ZzttLnBhcmVudE5vZGUuaW5zZXJ0
QmVmb3JlKGEsbSkKKyAgICAgICAgfSkod2luZG93LGRvY3VtZW50LCdzY3JpcHQnLCdodHRwczov
L3d3dy5nb29nbGUtYW5hbHl0aWNzLmNvbS9hbmFseXRpY3MuanMnLCdnYScpOworICAgICAgICBn
YSgnY3JlYXRlJywgJ1VBLTMxMDgxMDYyLTEnLCAnYXV0bycpOworICAgICAgICBnYSgnc2VuZCcs
ICdwYWdldmlldycpOworICAgIH0KKyAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqLworCisgICAg
ZnVuY3Rpb24gcmVkaXJlY3QoKSB7CisgICAgICAgIGlmIChsb2NhdGlvbi5ob3N0bmFtZSA9PT0g
J3Rhc3RlanMuZ2l0aHViLmlvJykgeworICAgICAgICAgICAgbG9jYXRpb24uaHJlZiA9IGxvY2F0
aW9uLmhyZWYucmVwbGFjZSgndGFzdGVqcy5naXRodWIuaW8vdG9kb212YycsICd0b2RvbXZjLmNv
bScpOworICAgICAgICB9CisgICAgfQorCisgICAgZnVuY3Rpb24gZmluZFJvb3QoKSB7CisgICAg
ICAgIHZhciBiYXNlID0gbG9jYXRpb24uaHJlZi5pbmRleE9mKCdleGFtcGxlcy8nKTsKKyAgICAg
ICAgcmV0dXJuIGxvY2F0aW9uLmhyZWYuc3Vic3RyKDAsIGJhc2UpOworICAgIH0KKworICAgIGZ1
bmN0aW9uIGdldEZpbGUoZmlsZSwgY2FsbGJhY2spIHsKKyAgICAgICAgaWYgKCFsb2NhdGlvbi5o
b3N0KSB7CisgICAgICAgICAgICByZXR1cm4gY29uc29sZS5pbmZvKCdNaXNzIHRoZSBpbmZvIGJh
cj8gUnVuIFRvZG9NVkMgZnJvbSBhIHNlcnZlciB0byBhdm9pZCBhIGNyb3NzLW9yaWdpbiBlcnJv
ci4nKTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3Qo
KTsKKworICAgICAgICB4aHIub3BlbignR0VUJywgZmluZFJvb3QoKSArIGZpbGUsIHRydWUpOwor
ICAgICAgICB4aHIuc2VuZCgpOworCisgICAgICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICBpZiAoeGhyLnN0YXR1cyA9PT0gMjAwICYmIGNhbGxiYWNrKSB7CisgICAg
ICAgICAgICAgICAgY2FsbGJhY2soeGhyLnJlc3BvbnNlVGV4dCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH07CisgICAgfQorCisgICAgZnVuY3Rpb24gTGVhcm4obGVhcm5KU09OLCBjb25maWcp
IHsKKyAgICAgICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIExlYXJuKSkgeworICAgICAgICAgICAg
cmV0dXJuIG5ldyBMZWFybihsZWFybkpTT04sIGNvbmZpZyk7CisgICAgICAgIH0KKworICAgICAg
ICB2YXIgdGVtcGxhdGUsIGZyYW1ld29yazsKKworICAgICAgICBpZiAodHlwZW9mIGxlYXJuSlNP
TiAhPT0gJ29iamVjdCcpIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgbGVh
cm5KU09OID0gSlNPTi5wYXJzZShsZWFybkpTT04pOworICAgICAgICAgICAgfSBjYXRjaCAoZSkg
eworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisg
ICAgICAgIGlmIChjb25maWcpIHsKKyAgICAgICAgICAgIHRlbXBsYXRlID0gY29uZmlnLnRlbXBs
YXRlOworICAgICAgICAgICAgZnJhbWV3b3JrID0gY29uZmlnLmZyYW1ld29yazsKKyAgICAgICAg
fQorCisgICAgICAgIGlmICghdGVtcGxhdGUgJiYgbGVhcm5KU09OLnRlbXBsYXRlcykgeworICAg
ICAgICAgICAgdGVtcGxhdGUgPSBsZWFybkpTT04udGVtcGxhdGVzLnRvZG9tdmM7CisgICAgICAg
IH0KKworICAgICAgICBpZiAoIWZyYW1ld29yayAmJiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdb
ZGF0YS1mcmFtZXdvcmtdJykpIHsKKyAgICAgICAgICAgIGZyYW1ld29yayA9IGRvY3VtZW50LnF1
ZXJ5U2VsZWN0b3IoJ1tkYXRhLWZyYW1ld29ya10nKS5kYXRhc2V0LmZyYW1ld29yazsKKyAgICAg
ICAgfQorCisgICAgICAgIHRoaXMudGVtcGxhdGUgPSB0ZW1wbGF0ZTsKKworICAgICAgICBpZiAo
bGVhcm5KU09OLmJhY2tlbmQpIHsKKyAgICAgICAgICAgIHRoaXMuZnJhbWV3b3JrSlNPTiA9IGxl
YXJuSlNPTi5iYWNrZW5kOworICAgICAgICAgICAgdGhpcy5mcmFtZXdvcmtKU09OLmlzc3VlTGFi
ZWwgPSBmcmFtZXdvcms7CisgICAgICAgICAgICB0aGlzLmFwcGVuZCh7CisgICAgICAgICAgICAg
ICAgYmFja2VuZDogdHJ1ZQorICAgICAgICAgICAgfSk7CisgICAgICAgIH0gZWxzZSBpZiAobGVh
cm5KU09OW2ZyYW1ld29ya10pIHsKKyAgICAgICAgICAgIHRoaXMuZnJhbWV3b3JrSlNPTiA9IGxl
YXJuSlNPTltmcmFtZXdvcmtdOworICAgICAgICAgICAgdGhpcy5mcmFtZXdvcmtKU09OLmlzc3Vl
TGFiZWwgPSBmcmFtZXdvcms7CisgICAgICAgICAgICB0aGlzLmFwcGVuZCgpOworICAgICAgICB9
CisKKyAgICAgICAgdGhpcy5mZXRjaElzc3VlQ291bnQoKTsKKyAgICB9CisKKyAgICBMZWFybi5w
cm90b3R5cGUuYXBwZW5kID0gZnVuY3Rpb24gKG9wdHMpIHsKKyAgICAgICAgdmFyIGFzaWRlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYXNpZGUnKTsKKyAgICAgICAgYXNpZGUuaW5uZXJIVE1M
ID0gXy50ZW1wbGF0ZSh0aGlzLnRlbXBsYXRlLCB0aGlzLmZyYW1ld29ya0pTT04pOworICAgICAg
ICBhc2lkZS5jbGFzc05hbWUgPSAnbGVhcm4nOworCisgICAgICAgIGlmIChvcHRzICYmIG9wdHMu
YmFja2VuZCkgeworICAgICAgICAgICAgLy8gUmVtb3ZlIGRlbW8gbGluaworICAgICAgICAgICAg
dmFyIHNvdXJjZUxpbmtzID0gYXNpZGUucXVlcnlTZWxlY3RvcignLnNvdXJjZS1saW5rcycpOwor
ICAgICAgICAgICAgdmFyIGhlYWRpbmcgPSBzb3VyY2VMaW5rcy5maXJzdEVsZW1lbnRDaGlsZDsK
KyAgICAgICAgICAgIHZhciBzb3VyY2VMaW5rID0gc291cmNlTGlua3MubGFzdEVsZW1lbnRDaGls
ZDsKKyAgICAgICAgICAgIC8vIENvcnJlY3QgbGluayBwYXRoCisgICAgICAgICAgICB2YXIgaHJl
ZiA9IHNvdXJjZUxpbmsuZ2V0QXR0cmlidXRlKCdocmVmJyk7CisgICAgICAgICAgICBzb3VyY2VM
aW5rLnNldEF0dHJpYnV0ZSgnaHJlZicsIGhyZWYuc3Vic3RyKGhyZWYubGFzdEluZGV4T2YoJ2h0
dHAnKSkpOworICAgICAgICAgICAgc291cmNlTGlua3MuaW5uZXJIVE1MID0gaGVhZGluZy5vdXRl
ckhUTUwgKyBzb3VyY2VMaW5rLm91dGVySFRNTDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIC8vIExvY2FsaXplIGRlbW8gbGlua3MKKyAgICAgICAgICAgIHZhciBkZW1vTGlua3MgPSBh
c2lkZS5xdWVyeVNlbGVjdG9yQWxsKCcuZGVtby1saW5rJyk7CisgICAgICAgICAgICBBcnJheS5w
cm90b3R5cGUuZm9yRWFjaC5jYWxsKGRlbW9MaW5rcywgZnVuY3Rpb24gKGRlbW9MaW5rKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKGRlbW9MaW5rLmdldEF0dHJpYnV0ZSgnaHJlZicpLnN1YnN0cigw
LCA0KSAhPT0gJ2h0dHAnKSB7CisgICAgICAgICAgICAgICAgICAgIGRlbW9MaW5rLnNldEF0dHJp
YnV0ZSgnaHJlZicsIGZpbmRSb290KCkgKyBkZW1vTGluay5nZXRBdHRyaWJ1dGUoJ2hyZWYnKSk7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKworICAgICAg
ICBkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSA9IChkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSArICcg
bGVhcm4tYmFyJykudHJpbSgpOworICAgICAgICBkb2N1bWVudC5ib2R5Lmluc2VydEFkamFjZW50
SFRNTCgnYWZ0ZXJCZWdpbicsIGFzaWRlLm91dGVySFRNTCk7CisgICAgfTsKKworICAgIExlYXJu
LnByb3RvdHlwZS5mZXRjaElzc3VlQ291bnQgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgIHZhciBp
c3N1ZUxpbmsgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaXNzdWUtY291bnQtbGluaycpOwor
ICAgICAgICBpZiAoaXNzdWVMaW5rKSB7CisgICAgICAgICAgICB2YXIgdXJsID0gaXNzdWVMaW5r
LmhyZWYucmVwbGFjZSgnaHR0cHM6Ly9naXRodWIuY29tJywgJ2h0dHBzOi8vYXBpLmdpdGh1Yi5j
b20vcmVwb3MnKTsKKyAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsK
KyAgICAgICAgICAgIHhoci5vcGVuKCdHRVQnLCB1cmwsIHRydWUpOworICAgICAgICAgICAgeGhy
Lm9ubG9hZCA9IGZ1bmN0aW9uIChlKSB7CisgICAgICAgICAgICAgICAgdmFyIHBhcnNlZFJlc3Bv
bnNlID0gSlNPTi5wYXJzZShlLnRhcmdldC5yZXNwb25zZVRleHQpOworICAgICAgICAgICAgICAg
IGlmIChwYXJzZWRSZXNwb25zZSBpbnN0YW5jZW9mIEFycmF5KSB7CisgICAgICAgICAgICAgICAg
ICAgIHZhciBjb3VudCA9IHBhcnNlZFJlc3BvbnNlLmxlbmd0aDsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKGNvdW50ICE9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpc3N1ZUxpbmsu
aW5uZXJIVE1MID0gJ1RoaXMgYXBwIGhhcyAnICsgY291bnQgKyAnIG9wZW4gaXNzdWVzJzsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpc3N1ZS1jb3Vu
dCcpLnN0eWxlLmRpc3BsYXkgPSAnaW5saW5lJzsKKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH07CisgICAgICAgICAgICB4aHIuc2VuZCgpOwor
ICAgICAgICB9CisgICAgfTsKKworICAgIHJlZGlyZWN0KCk7CisgICAgZ2V0RmlsZSgnbGVhcm4u
anNvbicsIExlYXJuKTsKK30pKCk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL3BhY2th
Z2UuanNvbiBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
dmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvcGFja2FnZS5qc29uCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU4YzVh
ODA2M2Q5ZGEwOWVlNWI1Y2IyZTI3MzMxZGU2YjczMzBhMmQKLS0tIC9kZXYvbnVsbAorKysgYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhh
bXBsZXMvdmFuaWxsYWpzL3BhY2thZ2UuanNvbgpAQCAtMCwwICsxLDEwIEBACit7CisgICJwcml2
YXRlIjogdHJ1ZSwKKyAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAidG9kb212Yy1jb21tb24iOiAi
XjEuMC4xIiwKKyAgICAidG9kb212Yy1hcHAtY3NzIjogIl4yLjAuMSIKKyAgfSwKKyAgImRldkRl
cGVuZGVuY2llcyI6IHsKKyAgICAiamFzbWluZS1jb3JlIjogIl4yLjAuMCIKKyAgfQorfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>308035</attachid>
            <date>2017-04-24 18:25:37 -0700</date>
            <delta_ts>2017-04-28 18:09:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170513-20170424182536.patch</filename>
            <type>text/plain</type>
            <size>101065</size>
            <attacher name="Addy Osmani">addyo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1NjgzCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGVjNDZiZjNlOGFh
MmIyMTYyMjE3ZWMxNDJiMGMzOWQwYTk5ZGFlZmMuLjk4MzBhZDUwYmRlODdkYjlhNGIwZGJmOTJm
NWQzNGY5MTdmN2Q2NGQgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTg4IEBACisyMDE3LTA0
LTI0ICBBZGR5IE9zbWFuaSAgPGFkZHlvc21hbmlAZ21haWwuY29tPgorCisgICAgICAgIFVwZGF0
ZSB0byBTcGVlZG9tZXRlciAyLjAgdy91cGRhdGVkIGZyYW1ld29ya3MgKyBuZXcgd29ya2xvYWRz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzA1MTMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgVXBkYXRlIHRo
ZSBTcGVlZG9tZXRlciA+IFZhbmlsbGEgYXBwbGljYXRpb24gaW1wbGVtZW50YXRpb24gdG8gbGF0
ZXN0IFRvZG9NVkMuIFRoaXMgY2hhbmdlIGFsc28gc3dpdGNoZXMgdG8gbnBtIGZvciBwYWNrYWdp
bmcuCisKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4
YW1wbGVzL3ZhbmlsbGFqcy9ib3dlci5qc29uOiBSZW1vdmVkLgorICAgICAgICAqIFNwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL2Jvd2VyX2Nv
bXBvbmVudHMvdG9kb212Yy1jb21tb24vYmFzZS5jc3M6IFJlbW92ZWQuCisgICAgICAgICogU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvYm93
ZXJfY29tcG9uZW50cy90b2RvbXZjLWNvbW1vbi9iYXNlLmpzOiBSZW1vdmVkLgorICAgICAgICAq
IFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpz
L2Jvd2VyX2NvbXBvbmVudHMvdG9kb212Yy1jb21tb24vYmcucG5nOiBSZW1vdmVkLgorICAgICAg
ICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxs
YWpzL2luZGV4Lmh0bWw6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
dmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvanMvYXBwLmpzOgorICAgICAgICAoVG9kbyk6Cisg
ICAgICAgIChzZXRWaWV3KToKKyAgICAgICAgKGxvb2t1cElkKTogRGVsZXRlZC4KKyAgICAgICAg
KHRhcmdldC5jbGFzc05hbWUuaW5kZXhPZik6IERlbGV0ZWQuCisgICAgICAgICogU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvanMvY29udHJv
bGxlci5qczoKKyAgICAgICAgKENvbnRyb2xsZXIpOgorICAgICAgICAoQ29udHJvbGxlci5wcm90
b3R5cGUuc2V0Vmlldyk6CisgICAgICAgIChDb250cm9sbGVyLnByb3RvdHlwZS5zaG93QWxsKToK
KyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLnNob3dBY3RpdmUpOgorICAgICAgICAoQ29u
dHJvbGxlci5wcm90b3R5cGUuc2hvd0NvbXBsZXRlZCk6CisgICAgICAgIChDb250cm9sbGVyLnBy
b3RvdHlwZS5hZGRJdGVtKToKKyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLmVkaXRJdGVt
KToKKyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLmVkaXRJdGVtU2F2ZSk6CisgICAgICAg
IChDb250cm9sbGVyLnByb3RvdHlwZS5lZGl0SXRlbUNhbmNlbCk6CisgICAgICAgIChDb250cm9s
bGVyLnByb3RvdHlwZS5yZW1vdmVJdGVtKToKKyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBl
LnJlbW92ZUNvbXBsZXRlZEl0ZW1zKToKKyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLnRv
Z2dsZUNvbXBsZXRlKToKKyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLnRvZ2dsZUFsbCk6
CisgICAgICAgIChDb250cm9sbGVyLnByb3RvdHlwZS5fdXBkYXRlQ291bnQpOgorICAgICAgICAo
Q29udHJvbGxlci5wcm90b3R5cGUuX2ZpbHRlcik6CisgICAgICAgIChDb250cm9sbGVyLnByb3Rv
dHlwZS5fdXBkYXRlRmlsdGVyU3RhdGUpOgorICAgICAgICAob25TYXZlSGFuZGxlcik6IERlbGV0
ZWQuCisgICAgICAgIChDb250cm9sbGVyLnByb3RvdHlwZS5fdG9nZ2xlRnJhbWUpOiBEZWxldGVk
LgorICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUuX2dldEN1cnJlbnRQYWdlKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1w
bGVzL3ZhbmlsbGFqcy9qcy9oZWxwZXJzLmpzOgorICAgICAgICAod2luZG93LnFzKToKKyAgICAg
ICAgKHdpbmRvdy5xc2EpOgorICAgICAgICAod2luZG93Lm9uKToKKyAgICAgICAgKHdpbmRvdy5k
ZWxlZ2F0ZSk6CisgICAgICAgICh3aW5kb3cucGFyZW50KToKKyAgICAgICAgKE9iamVjdC5wcm90
b3R5cGUuZWFjaCk6IERlbGV0ZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvanMvbW9kZWwuanM6CisgICAgICAgIChN
b2RlbCk6CisgICAgICAgIChNb2RlbC5wcm90b3R5cGUuY3JlYXRlKToKKyAgICAgICAgKE1vZGVs
LnByb3RvdHlwZS5yZWFkKToKKyAgICAgICAgKE1vZGVsLnByb3RvdHlwZS51cGRhdGUpOgorICAg
ICAgICAoTW9kZWwucHJvdG90eXBlLnJlbW92ZSk6CisgICAgICAgIChNb2RlbC5wcm90b3R5cGUu
cmVtb3ZlQWxsKToKKyAgICAgICAgKE1vZGVsLnByb3RvdHlwZS5nZXRDb3VudCk6CisgICAgICAg
ICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxh
anMvanMvc3RvcmUuanM6CisgICAgICAgIChTdG9yZS5wcm90b3R5cGUuZmluZCk6CisgICAgICAg
IChTdG9yZS5wcm90b3R5cGUuZmluZEFsbCk6CisgICAgICAgIChTdG9yZS5wcm90b3R5cGUuc2F2
ZSk6CisgICAgICAgIChTdG9yZS5wcm90b3R5cGUucmVtb3ZlKToKKyAgICAgICAgKFN0b3JlLnBy
b3RvdHlwZS5kcm9wKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92
YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9qcy90ZW1wbGF0ZS5qczogQWRkZWQuCisgICAgICAg
IChlc2NhcGVIdG1sQ2hhcik6CisgICAgICAgIChlc2NhcGUpOgorICAgICAgICAoVGVtcGxhdGUp
OgorICAgICAgICAoVGVtcGxhdGUucHJvdG90eXBlLnNob3cpOgorICAgICAgICAoVGVtcGxhdGUu
cHJvdG90eXBlLml0ZW1Db3VudGVyKToKKyAgICAgICAgKFRlbXBsYXRlLnByb3RvdHlwZS5jbGVh
ckNvbXBsZXRlZEJ1dHRvbik6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvanMvdmlldy5qczoKKyAgICAgICAgKFZpZXcp
OgorICAgICAgICAoVmlldy5wcm90b3R5cGUuX3JlbW92ZUl0ZW0pOgorICAgICAgICAoVmlldy5w
cm90b3R5cGUuX2NsZWFyQ29tcGxldGVkQnV0dG9uKToKKyAgICAgICAgKFZpZXcucHJvdG90eXBl
Ll9zZXRGaWx0ZXIpOgorICAgICAgICAoVmlldy5wcm90b3R5cGUuX2VsZW1lbnRDb21wbGV0ZSk6
CisgICAgICAgIChWaWV3LnByb3RvdHlwZS5fZWRpdEl0ZW0pOgorICAgICAgICAoVmlldy5wcm90
b3R5cGUuX2VkaXRJdGVtRG9uZSk6CisgICAgICAgICh2aWV3Q29tbWFuZHMuc2hvd0VudHJpZXMp
OgorICAgICAgICAodmlld0NvbW1hbmRzLnJlbW92ZUl0ZW0pOgorICAgICAgICAodmlld0NvbW1h
bmRzLnVwZGF0ZUVsZW1lbnRDb3VudCk6CisgICAgICAgICh2aWV3Q29tbWFuZHMuY2xlYXJDb21w
bGV0ZWRCdXR0b24pOgorICAgICAgICAodmlld0NvbW1hbmRzLmNvbnRlbnRCbG9ja1Zpc2liaWxp
dHkpOgorICAgICAgICAodmlld0NvbW1hbmRzLnRvZ2dsZUFsbCk6CisgICAgICAgICh2aWV3Q29t
bWFuZHMuc2V0RmlsdGVyKToKKyAgICAgICAgKHZpZXdDb21tYW5kcy5jbGVhck5ld1RvZG8pOgor
ICAgICAgICAodmlld0NvbW1hbmRzLmVsZW1lbnRDb21wbGV0ZSk6CisgICAgICAgICh2aWV3Q29t
bWFuZHMuZWRpdEl0ZW0pOgorICAgICAgICAodmlld0NvbW1hbmRzLmVkaXRJdGVtRG9uZSk6Cisg
ICAgICAgIChWaWV3LnByb3RvdHlwZS5yZW5kZXIpOgorICAgICAgICAoVmlldy5wcm90b3R5cGUu
X2l0ZW1JZCk6CisgICAgICAgIChWaWV3LnByb3RvdHlwZS5fYmluZEl0ZW1FZGl0RG9uZSk6Cisg
ICAgICAgIChWaWV3LnByb3RvdHlwZS5fYmluZEl0ZW1FZGl0Q2FuY2VsKToKKyAgICAgICAgKFZp
ZXcucHJvdG90eXBlLmJpbmQpOgorICAgICAgICAoVmlldy5wcm90b3R5cGUuc2hvdyk6IERlbGV0
ZWQuCisgICAgICAgIChWaWV3LnByb3RvdHlwZS5pdGVtQ291bnRlcik6IERlbGV0ZWQuCisgICAg
ICAgIChWaWV3LnByb3RvdHlwZS5jbGVhckNvbXBsZXRlZEJ1dHRvbik6IERlbGV0ZWQuCisgICAg
ICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5p
bGxhanMvbm9kZV9tb2R1bGVzL3RvZG9tdmMtYXBwLWNzcy9pbmRleC5jc3M6IEFkZGVkLgorICAg
ICAgICAoaHRtbCwpOgorICAgICAgICAoYnV0dG9uKToKKyAgICAgICAgKGJvZHkpOgorICAgICAg
ICAoYnV0dG9uLCk6CisgICAgICAgICguaGlkZGVuKToKKyAgICAgICAgKC50b2RvYXBwKToKKyAg
ICAgICAgKC50b2RvYXBwIGlucHV0Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyKToKKyAgICAg
ICAgKC50b2RvYXBwIGlucHV0OjotbW96LXBsYWNlaG9sZGVyKToKKyAgICAgICAgKC50b2RvYXBw
IGlucHV0OjppbnB1dC1wbGFjZWhvbGRlcik6CisgICAgICAgICgudG9kb2FwcCBoMSk6CisgICAg
ICAgICgubmV3LXRvZG8sKToKKyAgICAgICAgKC5uZXctdG9kbyk6CisgICAgICAgICgubWFpbik6
CisgICAgICAgIChsYWJlbFtmb3I9J3RvZ2dsZS1hbGwnXSk6CisgICAgICAgICgudG9nZ2xlLWFs
bCk6CisgICAgICAgICgudG9nZ2xlLWFsbDpiZWZvcmUpOgorICAgICAgICAoLnRvZ2dsZS1hbGw6
Y2hlY2tlZDpiZWZvcmUpOgorICAgICAgICAoLnRvZG8tbGlzdCk6CisgICAgICAgICgudG9kby1s
aXN0IGxpKToKKyAgICAgICAgKC50b2RvLWxpc3QgbGk6bGFzdC1jaGlsZCk6CisgICAgICAgICgu
dG9kby1saXN0IGxpLmVkaXRpbmcpOgorICAgICAgICAoLnRvZG8tbGlzdCBsaS5lZGl0aW5nIC5l
ZGl0KToKKyAgICAgICAgKC50b2RvLWxpc3QgbGkuZWRpdGluZyAudmlldyk6CisgICAgICAgICgu
dG9kby1saXN0IGxpIC50b2dnbGUpOgorICAgICAgICAoLnRvZG8tbGlzdCBsaSAudG9nZ2xlOmFm
dGVyKToKKyAgICAgICAgKC50b2RvLWxpc3QgbGkgLnRvZ2dsZTpjaGVja2VkOmFmdGVyKToKKyAg
ICAgICAgKC50b2RvLWxpc3QgbGkgbGFiZWwpOgorICAgICAgICAoLnRvZG8tbGlzdCBsaS5jb21w
bGV0ZWQgbGFiZWwpOgorICAgICAgICAoLnRvZG8tbGlzdCBsaSAuZGVzdHJveSk6CisgICAgICAg
ICgudG9kby1saXN0IGxpIC5kZXN0cm95OmhvdmVyKToKKyAgICAgICAgKC50b2RvLWxpc3QgbGkg
LmRlc3Ryb3k6YWZ0ZXIpOgorICAgICAgICAoLnRvZG8tbGlzdCBsaTpob3ZlciAuZGVzdHJveSk6
CisgICAgICAgICgudG9kby1saXN0IGxpIC5lZGl0KToKKyAgICAgICAgKC50b2RvLWxpc3QgbGku
ZWRpdGluZzpsYXN0LWNoaWxkKToKKyAgICAgICAgKC5mb290ZXIpOgorICAgICAgICAoLmZvb3Rl
cjpiZWZvcmUpOgorICAgICAgICAoLnRvZG8tY291bnQpOgorICAgICAgICAoLnRvZG8tY291bnQg
c3Ryb25nKToKKyAgICAgICAgKC5maWx0ZXJzKToKKyAgICAgICAgKC5maWx0ZXJzIGxpKToKKyAg
ICAgICAgKC5maWx0ZXJzIGxpIGEpOgorICAgICAgICAoLmZpbHRlcnMgbGkgYS5zZWxlY3RlZCwp
OgorICAgICAgICAoLmZpbHRlcnMgbGkgYS5zZWxlY3RlZCk6CisgICAgICAgICguY2xlYXItY29t
cGxldGVkLCk6CisgICAgICAgICguY2xlYXItY29tcGxldGVkOmhvdmVyKToKKyAgICAgICAgKC5p
bmZvKToKKyAgICAgICAgKC5pbmZvIHApOgorICAgICAgICAoLmluZm8gYSk6CisgICAgICAgICgu
aW5mbyBhOmhvdmVyKToKKyAgICAgICAgKEBtZWRpYSBzY3JlZW4gYW5kICgtd2Via2l0LW1pbi1k
ZXZpY2UtcGl4ZWwtcmF0aW86MCkpOgorICAgICAgICAoLnRvZ2dsZS1hbGwsKToKKyAgICAgICAg
KEBtZWRpYSAobWF4LXdpZHRoOiA0MzBweCkpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL25vZGVfbW9kdWxlcy90b2Rv
bXZjLWNvbW1vbi9iYXNlLmNzczogQWRkZWQuCisgICAgICAgIChocik6CisgICAgICAgICgubGVh
cm4gYSk6CisgICAgICAgICgubGVhcm4gYTpob3Zlcik6CisgICAgICAgICgubGVhcm4gaDMsKToK
KyAgICAgICAgKC5sZWFybiBoMyk6CisgICAgICAgICgubGVhcm4gaDQpOgorICAgICAgICAoLmxl
YXJuIGg1KToKKyAgICAgICAgKC5sZWFybiB1bCk6CisgICAgICAgICgubGVhcm4gbGkpOgorICAg
ICAgICAoLmxlYXJuIHApOgorICAgICAgICAoI2lzc3VlLWNvdW50KToKKyAgICAgICAgKC5xdW90
ZSk6CisgICAgICAgICgucXVvdGUgcCk6CisgICAgICAgICgucXVvdGUgcDpiZWZvcmUpOgorICAg
ICAgICAoLnF1b3RlIHA6YWZ0ZXIpOgorICAgICAgICAoLnF1b3RlIGZvb3Rlcik6CisgICAgICAg
ICgucXVvdGUgZm9vdGVyIGltZyk6CisgICAgICAgICgucXVvdGUgZm9vdGVyIGEpOgorICAgICAg
ICAoLnNwZWVjaC1idWJibGUpOgorICAgICAgICAoLnNwZWVjaC1idWJibGU6YWZ0ZXIpOgorICAg
ICAgICAoLmxlYXJuLWJhciA+IC5sZWFybik6CisgICAgICAgIChAbWVkaWEgKG1pbi13aWR0aDog
ODk5cHgpKToKKyAgICAgICAgKC5sZWFybi1iYXIpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL25vZGVfbW9kdWxlcy90
b2RvbXZjLWNvbW1vbi9iYXNlLmpzOiBBZGRlZC4KKyAgICAgICAgKF8uZGVmYXVsdHMpOgorICAg
ICAgICAodGVtcGxhdGUpOgorICAgICAgICAoZXNjYXBlci5fLnRlbXBsYXRlKToKKyAgICAgICAg
KF8pOgorICAgICAgICAobG9jYXRpb24uaG9zdG5hbWUuc3RyaW5nX2FwcGVhcmVkX2hlcmUuaS5y
Lmkucik6CisgICAgICAgIChyZWRpcmVjdCk6CisgICAgICAgIChmaW5kUm9vdCk6CisgICAgICAg
ICh4aHIub25sb2FkKToKKyAgICAgICAgKGdldEZpbGUpOgorICAgICAgICAoTGVhcm4pOgorICAg
ICAgICAoTGVhcm4ucHJvdG90eXBlLmFwcGVuZCk6CisgICAgICAgIChMZWFybi5wcm90b3R5cGUu
ZmV0Y2hJc3N1ZUNvdW50KToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9wYWNrYWdlLmpzb246IEFkZGVkLgorCiAyMDE3
LTA0LTIxICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgU2ltcGxl
IGxpbmUgbGF5b3V0OiBBZGQgcGVyZm9ybWFuY2UgdGVzdCB0byBtZWFzdXJlIG1pZC13b3JkIGxp
bmUgYnJlYWtpbmcgd2l0aCBsb25nIHRleHQuCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpz
L2Jvd2VyLmpzb24gYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL2Jvd2VyLmpzb24KZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDA4ZTNiY2VlMGM2ZWUwNmNmZWVmZmQ0OWZkZTNjODA3NzJhOTcxNzku
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3Zh
bmlsbGFqcy9ib3dlci5qc29uCisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi17Ci0gICAg
Im5hbWUiOiAidG9kb212Yy12YW5pbGxhanMiLAotICAgICJ2ZXJzaW9uIjogIjAuMC4wIiwKLSAg
ICAiZGVwZW5kZW5jaWVzIjogewotICAgICJ0b2RvbXZjLWNvbW1vbiI6ICJ+MC4xLjQiCi0gICAg
fQotfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9ib3dlcl9jb21wb25lbnRzL3RvZG9t
dmMtY29tbW9uL2Jhc2UuY3NzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9ib3dlcl9jb21wb25lbnRzL3Rv
ZG9tdmMtY29tbW9uL2Jhc2UuY3NzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3Mzdj
ZDljYzhjN2UwN2U0NjkxZDRlZTFiYWE3MDJlNDk5M2NhMjFhLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvYm93ZXJfY29tcG9u
ZW50cy90b2RvbXZjLWNvbW1vbi9iYXNlLmNzcworKysgL2Rldi9udWxsCkBAIC0xLDU1NCArMCww
IEBACi1odG1sLAotYm9keSB7Ci0gICAgbWFyZ2luOiAwOwotICAgIHBhZGRpbmc6IDA7Ci19Ci0K
LWJ1dHRvbiB7Ci0gICAgbWFyZ2luOiAwOwotICAgIHBhZGRpbmc6IDA7Ci0gICAgYm9yZGVyOiAw
OwotICAgIGJhY2tncm91bmQ6IG5vbmU7Ci0gICAgZm9udC1zaXplOiAxMDAlOwotICAgIHZlcnRp
Y2FsLWFsaWduOiBiYXNlbGluZTsKLSAgICBmb250LWZhbWlseTogaW5oZXJpdDsKLSAgICBjb2xv
cjogaW5oZXJpdDsKLSAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7Ci0gICAgLyotbW96LWFw
cGVhcmFuY2U6IG5vbmU7Ki8KLSAgICAtbXMtYXBwZWFyYW5jZTogbm9uZTsKLSAgICAtby1hcHBl
YXJhbmNlOiBub25lOwotICAgIGFwcGVhcmFuY2U6IG5vbmU7Ci19Ci0KLWJvZHkgewotICAgIGZv
bnQ6IDE0cHggJ0hlbHZldGljYSBOZXVlJywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsK
LSAgICBsaW5lLWhlaWdodDogMS40ZW07Ci0gICAgYmFja2dyb3VuZDogI2VhZWFlYSB1cmwoJ2Jn
LnBuZycpOwotICAgIGNvbG9yOiAjNGQ0ZDRkOwotICAgIHdpZHRoOiA1NTBweDsKLSAgICBtYXJn
aW46IDAgYXV0bzsKLSAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKLSAg
ICAtbW96LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKLSAgICAtbXMtZm9udC1zbW9vdGhp
bmc6IGFudGlhbGlhc2VkOwotICAgIC1vLWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKLSAg
ICBmb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7Ci19Ci0KLSN0b2RvYXBwIHsKLSAgICBiYWNr
Z3JvdW5kOiAjZmZmOwotICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTsK
LSAgICBtYXJnaW46IDEzMHB4IDAgNDBweCAwOwotICAgIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7
Ci0gICAgcG9zaXRpb246IHJlbGF0aXZlOwotICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDJw
eDsKLSAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMnB4OwotICAgIGJveC1zaGFkb3c6IDAg
MnB4IDZweCAwIHJnYmEoMCwgMCwgMCwgMC4yKSwKLSAgICAwIDI1cHggNTBweCAwIHJnYmEoMCwg
MCwgMCwgMC4xNSk7Ci19Ci0KLSN0b2RvYXBwOmJlZm9yZSB7Ci0gICAgY29udGVudDogJyc7Ci0g
ICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjZjVkNmQ2OwotICAgIGJvcmRlci1yaWdodDogMXB4
IHNvbGlkICNmNWQ2ZDY7Ci0gICAgd2lkdGg6IDJweDsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7
Ci0gICAgdG9wOiAwOwotICAgIGxlZnQ6IDQwcHg7Ci0gICAgaGVpZ2h0OiAxMDAlOwotfQotCi0j
dG9kb2FwcCBpbnB1dDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7Ci0gICAgZm9udC1zdHls
ZTogaXRhbGljOwotfQotCi0jdG9kb2FwcCBpbnB1dDo6LW1vei1wbGFjZWhvbGRlciB7Ci0gICAg
Zm9udC1zdHlsZTogaXRhbGljOwotICAgIGNvbG9yOiAjYTlhOWE5OwotfQotCi0jdG9kb2FwcCBo
MSB7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHRvcDogLTEyMHB4OwotICAgIHdpZHRo
OiAxMDAlOwotICAgIGZvbnQtc2l6ZTogNzBweDsKLSAgICBmb250LXdlaWdodDogYm9sZDsKLSAg
ICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci0gICAgY29sb3I6ICNiM2IzYjM7Ci0gICAgY29sb3I6IHJn
YmEoMjU1LCAyNTUsIDI1NSwgMC4zKTsKLSAgICB0ZXh0LXNoYWRvdzogLTFweCAtMXB4IHJnYmEo
MCwgMCwgMCwgMC4yKTsKLSAgICAtd2Via2l0LXRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2li
aWxpdHk7Ci0gICAgLW1vei10ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5OwotICAg
IC1tcy10ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5OwotICAgIC1vLXRleHQtcmVu
ZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7Ci0gICAgdGV4dC1yZW5kZXJpbmc6IG9wdGltaXpl
TGVnaWJpbGl0eTsKLX0KLQotI2hlYWRlciB7Ci0gICAgcGFkZGluZy10b3A6IDE1cHg7Ci0gICAg
Ym9yZGVyLXJhZGl1czogaW5oZXJpdDsKLX0KLQotI2hlYWRlcjpiZWZvcmUgewotICAgIGNvbnRl
bnQ6ICcnOwotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICB0b3A6IDA7Ci0gICAgcmlnaHQ6
IDA7Ci0gICAgbGVmdDogMDsKLSAgICBoZWlnaHQ6IDE1cHg7Ci0gICAgei1pbmRleDogMjsKLSAg
ICBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzZjNjE1YzsKLSAgICBiYWNrZ3JvdW5kOiAjOGQ3
ZDc3OwotICAgIGJhY2tncm91bmQ6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwg
bGVmdCBib3R0b20sIGZyb20ocmdiYSgxMzIsIDExMCwgMTAwLCAwLjgpKSx0byhyZ2JhKDEwMSwg
ODQsIDc2LCAwLjgpKSk7Ci0gICAgYmFja2dyb3VuZDogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQo
dG9wLCByZ2JhKDEzMiwgMTEwLCAxMDAsIDAuOCksIHJnYmEoMTAxLCA4NCwgNzYsIDAuOCkpOwot
ICAgIGJhY2tncm91bmQ6IC1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwgcmdiYSgxMzIsIDExMCwg
MTAwLCAwLjgpLCByZ2JhKDEwMSwgODQsIDc2LCAwLjgpKTsKLSAgICBiYWNrZ3JvdW5kOiAtby1s
aW5lYXItZ3JhZGllbnQodG9wLCByZ2JhKDEzMiwgMTEwLCAxMDAsIDAuOCksIHJnYmEoMTAxLCA4
NCwgNzYsIDAuOCkpOwotICAgIGJhY2tncm91bmQ6IC1tcy1saW5lYXItZ3JhZGllbnQodG9wLCBy
Z2JhKDEzMiwgMTEwLCAxMDAsIDAuOCksIHJnYmEoMTAxLCA4NCwgNzYsIDAuOCkpOwotICAgIGJh
Y2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0b3AsIHJnYmEoMTMyLCAxMTAsIDEwMCwgMC44KSwg
cmdiYSgxMDEsIDg0LCA3NiwgMC44KSk7Ci0gICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMXB4
OwotICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAxcHg7Ci19Ci0KLSNuZXctdG9kbywKLS5l
ZGl0IHsKLSAgICBwb3NpdGlvbjogcmVsYXRpdmU7Ci0gICAgbWFyZ2luOiAwOwotICAgIHdpZHRo
OiAxMDAlOwotICAgIGZvbnQtc2l6ZTogMjRweDsKLSAgICBmb250LWZhbWlseTogaW5oZXJpdDsK
LSAgICBsaW5lLWhlaWdodDogMS40ZW07Ci0gICAgYm9yZGVyOiAwOwotICAgIG91dGxpbmU6IG5v
bmU7Ci0gICAgY29sb3I6IGluaGVyaXQ7Ci0gICAgcGFkZGluZzogNnB4OwotICAgIGJvcmRlcjog
MXB4IHNvbGlkICM5OTk7Ci0gICAgYm94LXNoYWRvdzogaW5zZXQgMCAtMXB4IDVweCAwIHJnYmEo
MCwgMCwgMCwgMC4yKTsKLSAgICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7Ci0gICAg
LW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94OwotICAgIC1tcy1ib3gtc2l6aW5nOiBib3JkZXIt
Ym94OwotICAgIC1vLWJveC1zaXppbmc6IGJvcmRlci1ib3g7Ci0gICAgYm94LXNpemluZzogYm9y
ZGVyLWJveDsKLSAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKLSAgICAt
bW96LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKLSAgICAtbXMtZm9udC1zbW9vdGhpbmc6
IGFudGlhbGlhc2VkOwotICAgIC1vLWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKLSAgICBm
b250LXNtb290aGluZzogYW50aWFsaWFzZWQ7Ci19Ci0KLSNuZXctdG9kbyB7Ci0gICAgcGFkZGlu
ZzogMTZweCAxNnB4IDE2cHggNjBweDsKLSAgICBib3JkZXI6IG5vbmU7Ci0gICAgYmFja2dyb3Vu
ZDogcmdiYSgwLCAwLCAwLCAwLjAyKTsKLSAgICB6LWluZGV4OiAyOwotICAgIGJveC1zaGFkb3c6
IG5vbmU7Ci19Ci0KLSNtYWluIHsKLSAgICBwb3NpdGlvbjogcmVsYXRpdmU7Ci0gICAgei1pbmRl
eDogMjsKLSAgICBib3JkZXItdG9wOiAxcHggZG90dGVkICNhZGFkYWQ7Ci19Ci0KLWxhYmVsW2Zv
cj0ndG9nZ2xlLWFsbCddIHsKLSAgICBkaXNwbGF5OiBub25lOwotfQotCi0jdG9nZ2xlLWFsbCB7
Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHRvcDogLTQycHg7Ci0gICAgbGVmdDogLTRw
eDsKLSAgICB3aWR0aDogNDBweDsKLSAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci0gICAgYm9yZGVy
OiBub25lOyAvKiBNb2JpbGUgU2FmYXJpICovCi19Ci0KLSN0b2dnbGUtYWxsOmJlZm9yZSB7Ci0g
ICAgY29udGVudDogJ8K7JzsKLSAgICBmb250LXNpemU6IDI4cHg7Ci0gICAgY29sb3I6ICNkOWQ5
ZDk7Ci0gICAgcGFkZGluZzogMCAyNXB4IDdweDsKLX0KLQotI3RvZ2dsZS1hbGw6Y2hlY2tlZDpi
ZWZvcmUgewotICAgIGNvbG9yOiAjNzM3MzczOwotfQotCi0jdG9kby1saXN0IHsKLSAgICBtYXJn
aW46IDA7Ci0gICAgcGFkZGluZzogMDsKLSAgICBsaXN0LXN0eWxlOiBub25lOwotfQotCi0jdG9k
by1saXN0IGxpIHsKLSAgICBwb3NpdGlvbjogcmVsYXRpdmU7Ci0gICAgZm9udC1zaXplOiAyNHB4
OwotICAgIGJvcmRlci1ib3R0b206IDFweCBkb3R0ZWQgI2NjYzsKLX0KLQotI3RvZG8tbGlzdCBs
aTpsYXN0LWNoaWxkIHsKLSAgICBib3JkZXItYm90dG9tOiBub25lOwotfQotCi0jdG9kby1saXN0
IGxpLmVkaXRpbmcgewotICAgIGJvcmRlci1ib3R0b206IG5vbmU7Ci0gICAgcGFkZGluZzogMDsK
LX0KLQotI3RvZG8tbGlzdCBsaS5lZGl0aW5nIC5lZGl0IHsKLSAgICBkaXNwbGF5OiBibG9jazsK
LSAgICB3aWR0aDogNTA2cHg7Ci0gICAgcGFkZGluZzogMTNweCAxN3B4IDEycHggMTdweDsKLSAg
ICBtYXJnaW46IDAgMCAwIDQzcHg7Ci19Ci0KLSN0b2RvLWxpc3QgbGkuZWRpdGluZyAudmlldyB7
Ci0gICAgZGlzcGxheTogbm9uZTsKLX0KLQotI3RvZG8tbGlzdCBsaSAudG9nZ2xlIHsKLSAgICB0
ZXh0LWFsaWduOiBjZW50ZXI7Ci0gICAgd2lkdGg6IDQwcHg7Ci0gICAgLyogYXV0bywgc2luY2Ug
bm9uLVdlYktpdCBicm93c2VycyBkb2Vzbid0IHN1cHBvcnQgaW5wdXQgc3R5bGluZyAqLwotICAg
IGhlaWdodDogYXV0bzsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgdG9wOiAwOwotICAg
IGJvdHRvbTogMDsKLSAgICBtYXJnaW46IGF1dG8gMDsKLSAgICBib3JkZXI6IG5vbmU7IC8qIE1v
YmlsZSBTYWZhcmkgKi8KLSAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7Ci0gICAgLyotbW96
LWFwcGVhcmFuY2U6IG5vbmU7Ki8KLSAgICAtbXMtYXBwZWFyYW5jZTogbm9uZTsKLSAgICAtby1h
cHBlYXJhbmNlOiBub25lOwotICAgIGFwcGVhcmFuY2U6IG5vbmU7Ci19Ci0KLSN0b2RvLWxpc3Qg
bGkgLnRvZ2dsZTphZnRlciB7Ci0gICAgY29udGVudDogJ+KclCc7Ci0gICAgbGluZS1oZWlnaHQ6
IDQzcHg7IC8qIDQwICsgYSBjb3VwbGUgb2YgcGl4ZWxzIHZpc3VhbCBhZGp1c3RtZW50ICovCi0g
ICAgZm9udC1zaXplOiAyMHB4OwotICAgIGNvbG9yOiAjZDlkOWQ5OwotICAgIHRleHQtc2hhZG93
OiAwIC0xcHggMCAjYmZiZmJmOwotfQotCi0jdG9kby1saXN0IGxpIC50b2dnbGU6Y2hlY2tlZDph
ZnRlciB7Ci0gICAgY29sb3I6ICM4NWFkYTc7Ci0gICAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgIzY2
OTk5MTsKLSAgICBib3R0b206IDFweDsKLSAgICBwb3NpdGlvbjogcmVsYXRpdmU7Ci19Ci0KLSN0
b2RvLWxpc3QgbGkgbGFiZWwgewotICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7Ci0gICAgcGFk
ZGluZzogMTVweDsKLSAgICBtYXJnaW4tbGVmdDogNDVweDsKLSAgICBkaXNwbGF5OiBibG9jazsK
LSAgICBsaW5lLWhlaWdodDogMS4yOwotICAgIC13ZWJraXQtdHJhbnNpdGlvbjogY29sb3IgMC40
czsKLSAgICAtbW96LXRyYW5zaXRpb246IGNvbG9yIDAuNHM7Ci0gICAgLW1zLXRyYW5zaXRpb246
IGNvbG9yIDAuNHM7Ci0gICAgLW8tdHJhbnNpdGlvbjogY29sb3IgMC40czsKLSAgICB0cmFuc2l0
aW9uOiBjb2xvciAwLjRzOwotfQotCi0jdG9kby1saXN0IGxpLmNvbXBsZXRlZCBsYWJlbCB7Ci0g
ICAgY29sb3I6ICNhOWE5YTk7Ci0gICAgdGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2g7Ci19
Ci0KLSN0b2RvLWxpc3QgbGkgLmRlc3Ryb3kgewotICAgIGRpc3BsYXk6IG5vbmU7Ci0gICAgcG9z
aXRpb246IGFic29sdXRlOwotICAgIHRvcDogMDsKLSAgICByaWdodDogMTBweDsKLSAgICBib3R0
b206IDA7Ci0gICAgd2lkdGg6IDQwcHg7Ci0gICAgaGVpZ2h0OiA0MHB4OwotICAgIG1hcmdpbjog
YXV0byAwOwotICAgIGZvbnQtc2l6ZTogMjJweDsKLSAgICBjb2xvcjogI2E4OGE4YTsKLSAgICAt
d2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjJzOwotICAgIC1tb3otdHJhbnNpdGlvbjogYWxsIDAu
MnM7Ci0gICAgLW1zLXRyYW5zaXRpb246IGFsbCAwLjJzOwotICAgIC1vLXRyYW5zaXRpb246IGFs
bCAwLjJzOwotICAgIHRyYW5zaXRpb246IGFsbCAwLjJzOwotfQotCi0jdG9kby1saXN0IGxpIC5k
ZXN0cm95OmhvdmVyIHsKLSAgICB0ZXh0LXNoYWRvdzogMCAwIDFweCAjMDAwLAotICAgICAwIDAg
MTBweCByZ2JhKDE5OSwgMTA3LCAxMDcsIDAuOCk7Ci0gICAgLXdlYmtpdC10cmFuc2Zvcm06IHNj
YWxlKDEuMyk7Ci0gICAgLW1vei10cmFuc2Zvcm06IHNjYWxlKDEuMyk7Ci0gICAgLW1zLXRyYW5z
Zm9ybTogc2NhbGUoMS4zKTsKLSAgICAtby10cmFuc2Zvcm06IHNjYWxlKDEuMyk7Ci0gICAgdHJh
bnNmb3JtOiBzY2FsZSgxLjMpOwotfQotCi0jdG9kby1saXN0IGxpIC5kZXN0cm95OmFmdGVyIHsK
LSAgICBjb250ZW50OiAn4pyWJzsKLX0KLQotI3RvZG8tbGlzdCBsaTpob3ZlciAuZGVzdHJveSB7
Ci0gICAgZGlzcGxheTogYmxvY2s7Ci19Ci0KLSN0b2RvLWxpc3QgbGkgLmVkaXQgewotICAgIGRp
c3BsYXk6IG5vbmU7Ci19Ci0KLSN0b2RvLWxpc3QgbGkuZWRpdGluZzpsYXN0LWNoaWxkIHsKLSAg
ICBtYXJnaW4tYm90dG9tOiAtMXB4OwotfQotCi0jZm9vdGVyIHsKLSAgICBjb2xvcjogIzc3NzsK
LSAgICBwYWRkaW5nOiAwIDE1cHg7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHJpZ2h0
OiAwOwotICAgIGJvdHRvbTogLTMxcHg7Ci0gICAgbGVmdDogMDsKLSAgICBoZWlnaHQ6IDIwcHg7
Ci0gICAgei1pbmRleDogMTsKLSAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci19Ci0KLSNmb290ZXI6
YmVmb3JlIHsKLSAgICBjb250ZW50OiAnJzsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAg
cmlnaHQ6IDA7Ci0gICAgYm90dG9tOiAzMXB4OwotICAgIGxlZnQ6IDA7Ci0gICAgaGVpZ2h0OiA1
MHB4OwotICAgIHotaW5kZXg6IC0xOwotICAgIGJveC1zaGFkb3c6IDAgMXB4IDFweCByZ2JhKDAs
IDAsIDAsIDAuMyksCi0gICAgMCA2cHggMCAtM3B4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KSwK
LSAgICAwIDdweCAxcHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMyksCi0gICAgMCA0M3B4IDAgLTZw
eCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCksCi0gICAgMCA0NHB4IDJweCAtNnB4IHJnYmEoMCwg
MCwgMCwgMC4yKTsKLX0KLQotI3RvZG8tY291bnQgewotICAgIGZsb2F0OiBsZWZ0OwotICAgIHRl
eHQtYWxpZ246IGxlZnQ7Ci19Ci0KLSNmaWx0ZXJzIHsKLSAgICBtYXJnaW46IDA7Ci0gICAgcGFk
ZGluZzogMDsKLSAgICBsaXN0LXN0eWxlOiBub25lOwotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsK
LSAgICByaWdodDogMDsKLSAgICBsZWZ0OiAwOwotfQotCi0jZmlsdGVycyBsaSB7Ci0gICAgZGlz
cGxheTogaW5saW5lOwotfQotCi0jZmlsdGVycyBsaSBhIHsKLSAgICBjb2xvcjogIzgzNzU2ZjsK
LSAgICBtYXJnaW46IDJweDsKLSAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Ci19Ci0KLSNmaWx0
ZXJzIGxpIGEuc2VsZWN0ZWQgewotICAgIGZvbnQtd2VpZ2h0OiBib2xkOwotfQotCi0jY2xlYXIt
Y29tcGxldGVkIHsKLSAgICBmbG9hdDogcmlnaHQ7Ci0gICAgcG9zaXRpb246IHJlbGF0aXZlOwot
ICAgIGxpbmUtaGVpZ2h0OiAyMHB4OwotICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKLSAgICBi
YWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMSk7Ci0gICAgZm9udC1zaXplOiAxMXB4OwotICAg
IHBhZGRpbmc6IDAgMTBweDsKLSAgICBib3JkZXItcmFkaXVzOiAzcHg7Ci0gICAgYm94LXNoYWRv
dzogMCAtMXB4IDAgMCByZ2JhKDAsIDAsIDAsIDAuMik7Ci19Ci0KLSNjbGVhci1jb21wbGV0ZWQ6
aG92ZXIgewotICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4xNSk7Ci0gICAgYm94LXNo
YWRvdzogMCAtMXB4IDAgMCByZ2JhKDAsIDAsIDAsIDAuMyk7Ci19Ci0KLSNpbmZvIHsKLSAgICBt
YXJnaW46IDY1cHggYXV0byAwOwotICAgIGNvbG9yOiAjYTZhNmE2OwotICAgIGZvbnQtc2l6ZTog
MTJweDsKLSAgICB0ZXh0LXNoYWRvdzogMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7
Ci0gICAgdGV4dC1hbGlnbjogY2VudGVyOwotfQotCi0jaW5mbyBhIHsKLSAgICBjb2xvcjogaW5o
ZXJpdDsKLX0KLQotLyoKLSAgICBIYWNrIHRvIHJlbW92ZSBiYWNrZ3JvdW5kIGZyb20gTW9iaWxl
IFNhZmFyaS4KLSAgICBDYW4ndCB1c2UgaXQgZ2xvYmFsbHkgc2luY2UgaXQgZGVzdHJveXMgY2hl
Y2tib3hlcyBpbiBGaXJlZm94IGFuZCBPcGVyYQotKi8KLUBtZWRpYSBzY3JlZW4gYW5kICgtd2Vi
a2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86MCkgewotICAgICN0b2dnbGUtYWxsLAotICAgICN0
b2RvLWxpc3QgbGkgLnRvZ2dsZSB7Ci0gICAgYmFja2dyb3VuZDogbm9uZTsKLSAgICB9Ci0KLSAg
ICAjdG9kby1saXN0IGxpIC50b2dnbGUgewotICAgIGhlaWdodDogNDBweDsKLSAgICB9Ci0KLSAg
ICAjdG9nZ2xlLWFsbCB7Ci0gICAgdG9wOiAtNTZweDsKLSAgICBsZWZ0OiAtMTVweDsKLSAgICB3
aWR0aDogNjVweDsKLSAgICBoZWlnaHQ6IDQxcHg7Ci0gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJv
dGF0ZSg5MGRlZyk7Ci0gICAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpOwotICAgIC13ZWJraXQt
YXBwZWFyYW5jZTogbm9uZTsKLSAgICBhcHBlYXJhbmNlOiBub25lOwotICAgIH0KLX0KLQotLmhp
ZGRlbnsKLSAgICBkaXNwbGF5Om5vbmU7Ci19Ci0KLWhyIHsKLSAgICBtYXJnaW46IDIwcHggMDsK
LSAgICBib3JkZXI6IDA7Ci0gICAgYm9yZGVyLXRvcDogMXB4IGRhc2hlZCAjQzVDNUM1OwotICAg
IGJvcmRlci1ib3R0b206IDFweCBkYXNoZWQgI0Y3RjdGNzsKLX0KLQotLmxlYXJuIGEgewotICAg
IGZvbnQtd2VpZ2h0OiBub3JtYWw7Ci0gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwotICAgIGNv
bG9yOiAjYjgzZjQ1OwotfQotCi0ubGVhcm4gYTpob3ZlciB7Ci0gICAgdGV4dC1kZWNvcmF0aW9u
OiB1bmRlcmxpbmU7Ci0gICAgY29sb3I6ICM3ODdlN2U7Ci19Ci0KLS5sZWFybiBoMywKLS5sZWFy
biBoNCwKLS5sZWFybiBoNSB7Ci0gICAgbWFyZ2luOiAxMHB4IDA7Ci0gICAgZm9udC13ZWlnaHQ6
IDUwMDsKLSAgICBsaW5lLWhlaWdodDogMS4yOwotICAgIGNvbG9yOiAjMDAwOwotfQotCi0ubGVh
cm4gaDMgewotICAgIGZvbnQtc2l6ZTogMjRweDsKLX0KLQotLmxlYXJuIGg0IHsKLSAgICBmb250
LXNpemU6IDE4cHg7Ci19Ci0KLS5sZWFybiBoNSB7Ci0gICAgbWFyZ2luLWJvdHRvbTogMDsKLSAg
ICBmb250LXNpemU6IDE0cHg7Ci19Ci0KLS5sZWFybiB1bCB7Ci0gICAgcGFkZGluZzogMDsKLSAg
ICBtYXJnaW46IDAgMCAzMHB4IDI1cHg7Ci19Ci0KLS5sZWFybiBsaSB7Ci0gICAgbGluZS1oZWln
aHQ6IDIwcHg7Ci19Ci0KLS5sZWFybiBwIHsKLSAgICBmb250LXNpemU6IDE1cHg7Ci0gICAgZm9u
dC13ZWlnaHQ6IDMwMDsKLSAgICBsaW5lLWhlaWdodDogMS4zOwotICAgIG1hcmdpbi10b3A6IDA7
Ci0gICAgbWFyZ2luLWJvdHRvbTogMDsKLX0KLQotLnF1b3RlIHsKLSAgICBib3JkZXI6IG5vbmU7
Ci0gICAgbWFyZ2luOiAyMHB4IDAgNjBweCAwOwotfQotCi0ucXVvdGUgcCB7Ci0gICAgZm9udC1z
dHlsZTogaXRhbGljOwotfQotCi0ucXVvdGUgcDpiZWZvcmUgewotICAgIGNvbnRlbnQ6ICfigJwn
OwotICAgIGZvbnQtc2l6ZTogNTBweDsKLSAgICBvcGFjaXR5OiAuMTU7Ci0gICAgcG9zaXRpb246
IGFic29sdXRlOwotICAgIHRvcDogLTIwcHg7Ci0gICAgbGVmdDogM3B4OwotfQotCi0ucXVvdGUg
cDphZnRlciB7Ci0gICAgY29udGVudDogJ+KAnSc7Ci0gICAgZm9udC1zaXplOiA1MHB4OwotICAg
IG9wYWNpdHk6IC4xNTsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgYm90dG9tOiAtNDJw
eDsKLSAgICByaWdodDogM3B4OwotfQotCi0ucXVvdGUgZm9vdGVyIHsKLSAgICBwb3NpdGlvbjog
YWJzb2x1dGU7Ci0gICAgYm90dG9tOiAtNDBweDsKLSAgICByaWdodDogMDsKLX0KLQotLnF1b3Rl
IGZvb3RlciBpbWcgewotICAgIGJvcmRlci1yYWRpdXM6IDNweDsKLX0KLQotLnF1b3RlIGZvb3Rl
ciBhIHsKLSAgICBtYXJnaW4tbGVmdDogNXB4OwotICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7
Ci19Ci0KLS5zcGVlY2gtYnViYmxlIHsKLSAgICBwb3NpdGlvbjogcmVsYXRpdmU7Ci0gICAgcGFk
ZGluZzogMTBweDsKLSAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIC4wNCk7Ci0gICAgYm9y
ZGVyLXJhZGl1czogNXB4OwotfQotCi0uc3BlZWNoLWJ1YmJsZTphZnRlciB7Ci0gICAgY29udGVu
dDogJyc7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHRvcDogMTAwJTsKLSAgICByaWdo
dDogMzBweDsKLSAgICBib3JkZXI6IDEzcHggc29saWQgdHJhbnNwYXJlbnQ7Ci0gICAgYm9yZGVy
LXRvcC1jb2xvcjogcmdiYSgwLCAwLCAwLCAuMDQpOwotfQotCi0vKipib2R5Ki8ubGVhcm4tYmFy
ID4gLmxlYXJuIHsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgd2lkdGg6IDI3MnB4Owot
ICAgIHRvcDogOHB4OwotICAgIGxlZnQ6IC0zMDBweDsKLSAgICBwYWRkaW5nOiAxMHB4OwotICAg
IGJvcmRlci1yYWRpdXM6IDVweDsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1
LCAyNTUsIC42KTsKLSAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiBsZWZ0OwotICAgIHRyYW5zaXRp
b24tZHVyYXRpb246IDUwMG1zOwotfQotCi1AbWVkaWEgKG1pbi13aWR0aDogODk5cHgpIHsKLSAg
ICAvKipib2R5Ki8ubGVhcm4tYmFyIHsKLSAgICB3aWR0aDogYXV0bzsKLSAgICBtYXJnaW46IDAg
MCAwIDMwMHB4OwotICAgIH0KLSAgICAvKipib2R5Ki8ubGVhcm4tYmFyID4gLmxlYXJuIHsKLSAg
ICBsZWZ0OiA4cHg7Ci0gICAgfQotICAgIC8qKmJvZHkqLy5sZWFybi1iYXIgI3RvZG9hcHAgewot
ICAgIHdpZHRoOiA1NTBweDsKLSAgICBtYXJnaW46IDEzMHB4IGF1dG8gNDBweCBhdXRvOwotICAg
IH0KLX0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvYm93ZXJfY29tcG9uZW50cy90b2Rv
bXZjLWNvbW1vbi9iYXNlLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9ib3dlcl9jb21wb25lbnRzL3Rv
ZG9tdmMtY29tbW9uL2Jhc2UuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5YmY0
MjQwZmFkOWE5YzExOTRjODE1ODZkYzI5MTZiZWMxY2NhNzguLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9ib3dlcl9jb21wb25l
bnRzL3RvZG9tdmMtY29tbW9uL2Jhc2UuanMKKysrIC9kZXYvbnVsbApAQCAtMSwyMDkgKzAsMCBA
QAotKGZ1bmN0aW9uICgpIHsKLSAgICAndXNlIHN0cmljdCc7Ci0KLSAgICAvLyBVbmRlcnNjb3Jl
J3MgVGVtcGxhdGUgTW9kdWxlCi0gICAgLy8gQ291cnRlc3kgb2YgdW5kZXJzY29yZWpzLm9yZwot
ICAgIHZhciBfID0gKGZ1bmN0aW9uIChfKSB7Ci0gICAgXy5kZWZhdWx0cyA9IGZ1bmN0aW9uIChv
YmplY3QpIHsKLSAgICBpZiAoIW9iamVjdCkgewotICAgIHJldHVybiBvYmplY3Q7Ci0gICAgfQot
ICAgIGZvciAodmFyIGFyZ3NJbmRleCA9IDEsIGFyZ3NMZW5ndGggPSBhcmd1bWVudHMubGVuZ3Ro
OyBhcmdzSW5kZXggPCBhcmdzTGVuZ3RoOyBhcmdzSW5kZXgrKykgewotICAgIHZhciBpdGVyYWJs
ZSA9IGFyZ3VtZW50c1thcmdzSW5kZXhdOwotICAgIGlmIChpdGVyYWJsZSkgewotICAgIGZvciAo
dmFyIGtleSBpbiBpdGVyYWJsZSkgewotICAgIGlmIChvYmplY3Rba2V5XSA9PSBudWxsKSB7Ci0g
ICAgb2JqZWN0W2tleV0gPSBpdGVyYWJsZVtrZXldOwotICAgIH0KLSAgICB9Ci0gICAgfQotICAg
IH0KLSAgICByZXR1cm4gb2JqZWN0OwotICAgIH0KLQotICAgIC8vIEJ5IGRlZmF1bHQsIFVuZGVy
c2NvcmUgdXNlcyBFUkItc3R5bGUgdGVtcGxhdGUgZGVsaW1pdGVycywgY2hhbmdlIHRoZQotICAg
IC8vIGZvbGxvd2luZyB0ZW1wbGF0ZSBzZXR0aW5ncyB0byB1c2UgYWx0ZXJuYXRpdmUgZGVsaW1p
dGVycy4KLSAgICBfLnRlbXBsYXRlU2V0dGluZ3MgPSB7Ci0gICAgZXZhbHVhdGUgICAgOiAvPCUo
W1xzXFNdKz8pJT4vZywKLSAgICBpbnRlcnBvbGF0ZSA6IC88JT0oW1xzXFNdKz8pJT4vZywKLSAg
ICBlc2NhcGUgICAgICA6IC88JS0oW1xzXFNdKz8pJT4vZwotICAgIH07Ci0KLSAgICAvLyBXaGVu
IGN1c3RvbWl6aW5nIGB0ZW1wbGF0ZVNldHRpbmdzYCwgaWYgeW91IGRvbid0IHdhbnQgdG8gZGVm
aW5lIGFuCi0gICAgLy8gaW50ZXJwb2xhdGlvbiwgZXZhbHVhdGlvbiBvciBlc2NhcGluZyByZWdl
eCwgd2UgbmVlZCBvbmUgdGhhdCBpcwotICAgIC8vIGd1YXJhbnRlZWQgbm90IHRvIG1hdGNoLgot
ICAgIHZhciBub01hdGNoID0gLyguKV4vOwotCi0gICAgLy8gQ2VydGFpbiBjaGFyYWN0ZXJzIG5l
ZWQgdG8gYmUgZXNjYXBlZCBzbyB0aGF0IHRoZXkgY2FuIGJlIHB1dCBpbnRvIGEKLSAgICAvLyBz
dHJpbmcgbGl0ZXJhbC4KLSAgICB2YXIgZXNjYXBlcyA9IHsKLSAgICAiJyI6ICAgICAgIiciLAot
ICAgICdcXCc6ICAgICAnXFwnLAotICAgICdccic6ICAgICAncicsCi0gICAgJ1xuJzogICAgICdu
JywKLSAgICAnXHQnOiAgICAgJ3QnLAotICAgICdcdTIwMjgnOiAndTIwMjgnLAotICAgICdcdTIw
MjknOiAndTIwMjknCi0gICAgfTsKLQotICAgIHZhciBlc2NhcGVyID0gL1xcfCd8XHJ8XG58XHR8
XHUyMDI4fFx1MjAyOS9nOwotCi0gICAgLy8gSmF2YVNjcmlwdCBtaWNyby10ZW1wbGF0aW5nLCBz
aW1pbGFyIHRvIEpvaG4gUmVzaWcncyBpbXBsZW1lbnRhdGlvbi4KLSAgICAvLyBVbmRlcnNjb3Jl
IHRlbXBsYXRpbmcgaGFuZGxlcyBhcmJpdHJhcnkgZGVsaW1pdGVycywgcHJlc2VydmVzIHdoaXRl
c3BhY2UsCi0gICAgLy8gYW5kIGNvcnJlY3RseSBlc2NhcGVzIHF1b3RlcyB3aXRoaW4gaW50ZXJw
b2xhdGVkIGNvZGUuCi0gICAgXy50ZW1wbGF0ZSA9IGZ1bmN0aW9uKHRleHQsIGRhdGEsIHNldHRp
bmdzKSB7Ci0gICAgdmFyIHJlbmRlcjsKLSAgICBzZXR0aW5ncyA9IF8uZGVmYXVsdHMoe30sIHNl
dHRpbmdzLCBfLnRlbXBsYXRlU2V0dGluZ3MpOwotCi0gICAgLy8gQ29tYmluZSBkZWxpbWl0ZXJz
IGludG8gb25lIHJlZ3VsYXIgZXhwcmVzc2lvbiB2aWEgYWx0ZXJuYXRpb24uCi0gICAgdmFyIG1h
dGNoZXIgPSBuZXcgUmVnRXhwKFsKLSAgICAoc2V0dGluZ3MuZXNjYXBlIHx8IG5vTWF0Y2gpLnNv
dXJjZSwKLSAgICAoc2V0dGluZ3MuaW50ZXJwb2xhdGUgfHwgbm9NYXRjaCkuc291cmNlLAotICAg
IChzZXR0aW5ncy5ldmFsdWF0ZSB8fCBub01hdGNoKS5zb3VyY2UKLSAgICBdLmpvaW4oJ3wnKSAr
ICd8JCcsICdnJyk7Ci0KLSAgICAvLyBDb21waWxlIHRoZSB0ZW1wbGF0ZSBzb3VyY2UsIGVzY2Fw
aW5nIHN0cmluZyBsaXRlcmFscyBhcHByb3ByaWF0ZWx5LgotICAgIHZhciBpbmRleCA9IDA7Ci0g
ICAgdmFyIHNvdXJjZSA9ICJfX3ArPSciOwotICAgIHRleHQucmVwbGFjZShtYXRjaGVyLCBmdW5j
dGlvbihtYXRjaCwgZXNjYXBlLCBpbnRlcnBvbGF0ZSwgZXZhbHVhdGUsIG9mZnNldCkgewotICAg
IHNvdXJjZSArPSB0ZXh0LnNsaWNlKGluZGV4LCBvZmZzZXQpCi0gICAgLnJlcGxhY2UoZXNjYXBl
ciwgZnVuY3Rpb24obWF0Y2gpIHsgcmV0dXJuICdcXCcgKyBlc2NhcGVzW21hdGNoXTsgfSk7Ci0K
LSAgICBpZiAoZXNjYXBlKSB7Ci0gICAgc291cmNlICs9ICInK1xuKChfX3Q9KCIgKyBlc2NhcGUg
KyAiKSk9PW51bGw/Jyc6Xy5lc2NhcGUoX190KSkrXG4nIjsKLSAgICB9Ci0gICAgaWYgKGludGVy
cG9sYXRlKSB7Ci0gICAgc291cmNlICs9ICInK1xuKChfX3Q9KCIgKyBpbnRlcnBvbGF0ZSArICIp
KT09bnVsbD8nJzpfX3QpK1xuJyI7Ci0gICAgfQotICAgIGlmIChldmFsdWF0ZSkgewotICAgIHNv
dXJjZSArPSAiJztcbiIgKyBldmFsdWF0ZSArICJcbl9fcCs9JyI7Ci0gICAgfQotICAgIGluZGV4
ID0gb2Zmc2V0ICsgbWF0Y2gubGVuZ3RoOwotICAgIHJldHVybiBtYXRjaDsKLSAgICB9KTsKLSAg
ICBzb3VyY2UgKz0gIic7XG4iOwotCi0gICAgLy8gSWYgYSB2YXJpYWJsZSBpcyBub3Qgc3BlY2lm
aWVkLCBwbGFjZSBkYXRhIHZhbHVlcyBpbiBsb2NhbCBzY29wZS4KLSAgICBpZiAoIXNldHRpbmdz
LnZhcmlhYmxlKSBzb3VyY2UgPSAnd2l0aChvYmp8fHt9KXtcbicgKyBzb3VyY2UgKyAnfVxuJzsK
LQotICAgIHNvdXJjZSA9ICJ2YXIgX190LF9fcD0nJyxfX2o9QXJyYXkucHJvdG90eXBlLmpvaW4s
IiArCi0gICAgInByaW50PWZ1bmN0aW9uKCl7X19wKz1fX2ouY2FsbChhcmd1bWVudHMsJycpO307
XG4iICsKLSAgICBzb3VyY2UgKyAicmV0dXJuIF9fcDtcbiI7Ci0KLSAgICB0cnkgewotICAgIHJl
bmRlciA9IG5ldyBGdW5jdGlvbihzZXR0aW5ncy52YXJpYWJsZSB8fCAnb2JqJywgJ18nLCBzb3Vy
Y2UpOwotICAgIH0gY2F0Y2ggKGUpIHsKLSAgICBlLnNvdXJjZSA9IHNvdXJjZTsKLSAgICB0aHJv
dyBlOwotICAgIH0KLQotICAgIGlmIChkYXRhKSByZXR1cm4gcmVuZGVyKGRhdGEsIF8pOwotICAg
IHZhciB0ZW1wbGF0ZSA9IGZ1bmN0aW9uKGRhdGEpIHsKLSAgICByZXR1cm4gcmVuZGVyLmNhbGwo
dGhpcywgZGF0YSwgXyk7Ci0gICAgfTsKLQotICAgIC8vIFByb3ZpZGUgdGhlIGNvbXBpbGVkIGZ1
bmN0aW9uIHNvdXJjZSBhcyBhIGNvbnZlbmllbmNlIGZvciBwcmVjb21waWxhdGlvbi4KLSAgICB0
ZW1wbGF0ZS5zb3VyY2UgPSAnZnVuY3Rpb24oJyArIChzZXR0aW5ncy52YXJpYWJsZSB8fCAnb2Jq
JykgKyAnKXtcbicgKyBzb3VyY2UgKyAnfSc7Ci0KLSAgICByZXR1cm4gdGVtcGxhdGU7Ci0gICAg
fTsKLQotICAgIHJldHVybiBfOwotICAgIH0pKHt9KTsKLQotICAgIGlmIChsb2NhdGlvbi5ob3N0
bmFtZSA9PT0gJ3RvZG9tdmMuY29tJykgewotICAgIHdpbmRvdy5fZ2FxID0gW1snX3NldEFjY291
bnQnLCdVQS0zMTA4MTA2Mi0xJ10sWydfdHJhY2tQYWdldmlldyddXTsoZnVuY3Rpb24oZCx0KXt2
YXIgZz1kLmNyZWF0ZUVsZW1lbnQodCkscz1kLmdldEVsZW1lbnRzQnlUYWdOYW1lKHQpWzBdO2cu
c3JjPScvL3d3dy5nb29nbGUtYW5hbHl0aWNzLmNvbS9nYS5qcyc7cy5wYXJlbnROb2RlLmluc2Vy
dEJlZm9yZShnLHMpfShkb2N1bWVudCwnc2NyaXB0JykpOwotICAgIH0KLQotICAgIGZ1bmN0aW9u
IHJlZGlyZWN0KCkgewotICAgIGlmIChsb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ3Rhc3RlanMuZ2l0
aHViLmlvJykgewotICAgIGxvY2F0aW9uLmhyZWYgPSBsb2NhdGlvbi5ocmVmLnJlcGxhY2UoJ3Rh
c3RlanMuZ2l0aHViLmlvL3RvZG9tdmMnLCAndG9kb212Yy5jb20nKTsKLSAgICB9Ci0gICAgfQot
Ci0gICAgZnVuY3Rpb24gZmluZFJvb3QoKSB7Ci0gICAgdmFyIGJhc2U7Ci0KLSAgICBbL2xhYnMv
LCAvXHcqLWV4YW1wbGVzL10uZm9yRWFjaChmdW5jdGlvbiAoaHJlZikgewotICAgIHZhciBtYXRj
aCA9IGxvY2F0aW9uLmhyZWYubWF0Y2goaHJlZik7Ci0KLSAgICBpZiAoIWJhc2UgJiYgbWF0Y2gp
IHsKLSAgICBiYXNlID0gbG9jYXRpb24uaHJlZi5pbmRleE9mKG1hdGNoKTsKLSAgICB9Ci0gICAg
fSk7Ci0KLSAgICByZXR1cm4gbG9jYXRpb24uaHJlZi5zdWJzdHIoMCwgYmFzZSk7Ci0gICAgfQot
Ci0gICAgZnVuY3Rpb24gZ2V0RmlsZShmaWxlLCBjYWxsYmFjaykgewotICAgIGlmICghbG9jYXRp
b24uaG9zdCkgewotICAgIHJldHVybiBjb25zb2xlLmluZm8oJ01pc3MgdGhlIGluZm8gYmFyPyBS
dW4gVG9kb01WQyBmcm9tIGEgc2VydmVyIHRvIGF2b2lkIGEgY3Jvc3Mtb3JpZ2luIGVycm9yLicp
OwotICAgIH0KLQotICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKLQotICAgIHho
ci5vcGVuKCdHRVQnLCBmaW5kUm9vdCgpICsgZmlsZSwgdHJ1ZSk7Ci0gICAgeGhyLnNlbmQoKTsK
LQotICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7Ci0gICAgaWYgKHhoci5zdGF0dXMgPT09
IDIwMCAmJiBjYWxsYmFjaykgewotICAgIGNhbGxiYWNrKHhoci5yZXNwb25zZVRleHQpOwotICAg
IH0KLSAgICB9OwotICAgIH0KLQotICAgIGZ1bmN0aW9uIExlYXJuKGxlYXJuSlNPTiwgY29uZmln
KSB7Ci0gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIExlYXJuKSkgewotICAgIHJldHVybiBuZXcg
TGVhcm4obGVhcm5KU09OLCBjb25maWcpOwotICAgIH0KLQotICAgIHZhciB0ZW1wbGF0ZSwgZnJh
bWV3b3JrOwotCi0gICAgaWYgKHR5cGVvZiBsZWFybkpTT04gIT09ICdvYmplY3QnKSB7Ci0gICAg
dHJ5IHsKLSAgICBsZWFybkpTT04gPSBKU09OLnBhcnNlKGxlYXJuSlNPTik7Ci0gICAgfSBjYXRj
aCAoZSkgewotICAgIHJldHVybjsKLSAgICB9Ci0gICAgfQotCi0gICAgaWYgKGNvbmZpZykgewot
ICAgIHRlbXBsYXRlID0gY29uZmlnLnRlbXBsYXRlOwotICAgIGZyYW1ld29yayA9IGNvbmZpZy5m
cmFtZXdvcms7Ci0gICAgfQotCi0gICAgaWYgKCF0ZW1wbGF0ZSAmJiBsZWFybkpTT04udGVtcGxh
dGVzKSB7Ci0gICAgdGVtcGxhdGUgPSBsZWFybkpTT04udGVtcGxhdGVzLnRvZG9tdmM7Ci0gICAg
fQotCi0gICAgaWYgKCFmcmFtZXdvcmsgJiYgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW2RhdGEt
ZnJhbWV3b3JrXScpKSB7Ci0gICAgZnJhbWV3b3JrID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcign
W2RhdGEtZnJhbWV3b3JrXScpLmdldEF0dHJpYnV0ZSgnZGF0YS1mcmFtZXdvcmsnKTsKLSAgICB9
Ci0KLQotICAgIGlmICh0ZW1wbGF0ZSAmJiBsZWFybkpTT05bZnJhbWV3b3JrXSkgewotICAgIHRo
aXMuZnJhbWV3b3JrSlNPTiA9IGxlYXJuSlNPTltmcmFtZXdvcmtdOwotICAgIHRoaXMudGVtcGxh
dGUgPSB0ZW1wbGF0ZTsKLQotICAgIHRoaXMuYXBwZW5kKCk7Ci0gICAgfQotICAgIH0KLQotICAg
IExlYXJuLnByb3RvdHlwZS5hcHBlbmQgPSBmdW5jdGlvbiAoKSB7Ci0gICAgdmFyIGFzaWRlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYXNpZGUnKTsKLSAgICBhc2lkZS5pbm5lckhUTUwgPSBf
LnRlbXBsYXRlKHRoaXMudGVtcGxhdGUsIHRoaXMuZnJhbWV3b3JrSlNPTik7Ci0gICAgYXNpZGUu
Y2xhc3NOYW1lID0gJ2xlYXJuJzsKLQotICAgIC8vIExvY2FsaXplIGRlbW8gbGlua3MKLSAgICB2
YXIgZGVtb0xpbmtzID0gYXNpZGUucXVlcnlTZWxlY3RvckFsbCgnLmRlbW8tbGluaycpOwotICAg
IEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoZGVtb0xpbmtzLCBmdW5jdGlvbiAoZGVtb0xp
bmspIHsKLSAgICBkZW1vTGluay5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBmaW5kUm9vdCgpICsgZGVt
b0xpbmsuZ2V0QXR0cmlidXRlKCdocmVmJykpOwotICAgIH0pOwotCi0gICAgZG9jdW1lbnQuYm9k
eS5jbGFzc05hbWUgPSAoZG9jdW1lbnQuYm9keS5jbGFzc05hbWUgKyAnIGxlYXJuLWJhcicpLnRy
aW0oKTsKLSAgICBkb2N1bWVudC5ib2R5Lmluc2VydEFkamFjZW50SFRNTCgnYWZ0ZXJCZWdpbics
IGFzaWRlLm91dGVySFRNTCk7Ci0gICAgfTsKLQotICAgIHJlZGlyZWN0KCk7Ci0gICAgZ2V0Rmls
ZSgnbGVhcm4uanNvbicsIExlYXJuKTsKLX0pKCk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxs
YWpzL2Jvd2VyX2NvbXBvbmVudHMvdG9kb212Yy1jb21tb24vYmcucG5nIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3Zhbmls
bGFqcy9ib3dlcl9jb21wb25lbnRzL3RvZG9tdmMtY29tbW9uL2JnLnBuZwpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggYjJhNzYwMDgyNWVlMTFmMjE4NDllZDQ3NTQ5OWM3ZDFlY2JjYzg3
MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMApHSVQgYmluYXJ5IHBh
dGNoCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKbGl0ZXJhbCAyMTI2CnpjbVYtVTIoa0J4UCk8aDsz
S3xMazAwMGUxTkpMVHEwMDNrRjAwM2tIMHt7UjM0VUIhcTAwMDBDUCl0LXM/KFhqRQp6Pis5eWA9
SEs3bnQ9fjN0MDAwTzVOa2w8WmN3VGp1KFE0dn43S1dFVyNZbT9sS192O1RtfCFGYylATndFbm10
c2gKenghT356ODFKVDNwRnNtPm09MDRoVmFfbFhsX2JtPStNOz1lSTwlJHJPMnRhYHN1aCpTciNQ
T3cqP2FkcSFPIUNWCnoqMCZiKXJrQ0NFVikxbkl1aUxCbnRVSC1NSkk7JnFZZ3p8ZEBOaG5uX2Fi
aTJnYHB1NE5BTVZpZDNoUyU/cXV6fgp6amxKZih4OGNqPFBHY2puKkorYXsmSDVwKm41JDVlMz88
S0NjP28wNm1Bc05TYmdQV08/UHojQ3puPCE9ez57VlMKelVWRVAxbXNnOWBeT0ZVaFNPNXJ0WEho
Umx5VTJpPjYkQlQ9Z2xHYHtKbGN0R0hyd1JJbSk2QnV1NjVqTFFuXkg4Cnp2bDlsWnFVQkErJXF2
TTVYQyt5WUBtZkEoWUJ+WFA9ZXw2PHslJF5lVThucks/djJjY2JASm9tNUNHPnJLQUw3Sgp6cGxI
RUlhdlZwfDBwMSZtIUdgVGk/PDdpWjt9QEc3I1opfUttJTIhRkhuUTAqJj9QTFIpRyFIQWFIZ1Uj
Y3wkZHoKenBqIzBIbWVhZEllPmAjKT1Kamtie0I9RktuVTNwYy0mWUBqX2o2KGg0WX4rVXE8UFUz
NkM7NWI9TV5GYD1wMWRJCnprPENRT1BOYTc+IV5KPUxIdW54MXhpNFFYSy1ZeyZNb1Q4a3k2VmI5
Y3xXaG5Pd0Z+Yz0zek95OGFna3RsaVM2Iwp6YCM4RmA5SClEPWJtazlCNU1uVyZfciMpZiRjKzsk
TFNyLUBeQW44ZGhjfklxdXV2PmpPSzdwdzdMSjsmWDBpMUMKekdNc0hkUDFPc0BueSQkaiE+WEFp
aSU3YnA1az5gcHlOQSF+ZXBiKSgpcDl6UjRZbDZ6PVV9e0NJZGgxeihGcEFvCnpRSVchOzB6cEN5
QzQqN1lMa1pDT0BjdWwwUl8memdoc0E4RWspeiU8IXAtYnZzc3BsWVkyfVA7IXY0Q1lqOWttRgp6
YjBiTl9tNFYqZl5ZWk1vYjIoajNwS2p+N3YjWnRrcz1Jbyt7c3UlV2l1a2RKSCRiP2Zaa2lBPVBZ
XzNPaERCa28KeihMVFFIWSZGXl4yaEctWWAqWjkzdmJ+Yz8qKEpjaERqVGZDcz96Um0qYCpOKlYt
JD0/UXF0aG5Tcio/T1Mzc2pLCnpvPF9VXmZ7fmFnNjB1bD5qTnBLYTkye0BOSCtTc3RYJUB9eEIq
SmshbH1QWjFjQ2xJbnN+fTVeIVJuY1VrKnJtQQp6JVNJVmd0NThFUXhMSitPaUZxPHl1NGVPRHw5
THQzZE5zZWZ4T3VxKUQmJF8lajBEZ3FDeTFnemN8dFREMyptZWUKens9JXw8YGB9X0h5cGhPdXs7
KXhrUmcrUW5IQ0MzVGYra3NwcVY2KnxRSy1SY3FEfTQ+S2tCdXdxdXlaTFVwfGdyCnpQVWJVYkZi
QnJQZDF4T2BeQypyLWkzcDkqRiMoT0JoITRXeUBhQyYqIXxPfEdYY2pEQSZZaEZ7O2NENypvKEdT
Xgp6QHBRU0U3KXhfODE9UXlqZTYqTFEjVFh1LTcobztTOHUzdHBEQTxTZ2NLY0tPcG1BOz1IQlpT
QE9GVEBfWE92eHEKeipOfDNLTHl0Z3pINkdVJiZVb2M0WnprNGx1bTNQezk/ZnBJNCtRR1BKK3Y2
YDFsZlJxM0xjUyooTSpXSyt8YiVPCnplJHo+MF9kZGolaG1Dc3BlWGRoWVJ9LWk5QT1DYEVvQ2hV
WXVIfl54ITkrfCYoUGdiKj5Dazw9OWp8KSpAeHlmVAp6cFAjK0t0PH0zOWJ8M1dsNGZ4VCgrRz9h
SD5nR15kQE1FYVVPSlJmeTU1VHRGSTdeWSlWdU1VPTdQcDB5NTVqU34KeitUSilpZ015cnFrWDt3
VThqNjhpSUR0cUpZaFNfRDNfT2VtLUBnNm1lX1JmaVF9dVRfSy1BLTlxRyV9Z2szRTljCnohOGBL
Z3NNTlhtKWJlbG9QZk1xbCp8JiRNPjFxYGkhY1kpUkZZbmpOWXUqZ1N2QDhYZWJWNyV9eFlMPjYp
R0pQSgp6SnBBN0szMWxjSnVJRktTdy17eDRGWDBLMkF6KX5YZzxgc091JDR8XjxNQzdAK3hid3hz
R2dUdkpJQUxqUHs2OEwKejhBWXVTR1MwR1VnazZXYHY0VztSeSp1b0VUbnVsUGl8NTczJWx2Klp4
dyN2NnlVUV5NT2ZjcFQjVjhSSURWIyNOCnpEMWArQWVtc09oKXdiV0RFeFZjZnBLeilqeVY9PH4m
WlhQZzZjfFpERTdVNGJrPERePi0oXlhKWDRZem9pTlJ2TAp6eXVZN34yNnctUF5adyU2Rn1zaEJ3
VjIkMDJjOFJzU1V5NmRNOTJkaUNBeGlYM0lVcXNxNWlnNj5VXyFWeSpxNSQKemptfTE2dEpyK1Fa
JlQ/SGtrcGVJd1ZYLXIxRUk9QCVabHQ7Njx0d0g4NklEPmcqbWomRSFBKSklZ1hKPXg2dSNsCnpj
S0VQPmJ4NHJxViprYEJCclokTXFqdHtUc0hjeFVIPjspaUFLfUIoS2lsYSZWRCViPzZtJl4wV0s0
XiZFWk5BSQp6OEFNWXNfJSREJXxNK0ArY1FxTC1oaTR5Rz5oKmp3ZGlpIVcxe31wPlpod0ZZdF80
U3Uxa2pZOTxiQVpqen45ZWsKel9EaWFyK0FmSkZQXzlAeW1VbyRLVz48LTVgISRWTk9JMXkoRURT
SDRXcENpakVfPmFsIU50PV5lVkVSI3VKMT1iCno7QldGMklneUY1TGV4Vit5ZWMkS2luO0FpQG15
bztHPnpKJmpyZFcjZWNYaElacGg1T1lxd19QRWZjRjU2PE8xOQp6TCk4ciFLTSgpaWYwYEA/VzQo
SmRjKTdXb1BHXiY9JDx6VXNNK0hDV2FrQ14zdFp4aytQalFHfUI+WjU8WjZWeHcKekJASHJWJCZs
fkBUYWo3MHBjZXtpU3VSTHNVY3pEWV81VG5EcThQeV9RM3doYEQ4ITRqSzt2RmRSUCtRMD16Snkq
Cnp6dVdkJSFhaUBEe3wqSjxJO09EJmklbHtKcC04KlB1M1ZHTFdpeWs2diNYbVFxd2AtKyVlJHxD
SncqQGA1emIzPAp6RX16IztrUmhMJnE1UERHNkBtbSokPlp1X1paRSNxM01jK04mMU9eN2hvaDlR
UjdgK0wkY0JQNXBxRz1mcUEwdWgKelVCdWtheFRGbUgpPHxYYnZwMmM9SFNiTmtwWHc3M2E1bHY3
ViRqYjkyI3laMTQxQCRYP0Z9SnQ4Z0lVN1dtNm05Cno/ZV87O3pzbm02YExaZVA+VD0kKUtyPlo/
a3IqVW1GcVI3engwQzZeYm1jc2NAMUFHdHdfck5IPi1YbSRkKnxRPAp6biYxTG4wdTc9bCZJTHM+
JUNrSnBgRGlHOUYxOHg0TmUrbGc8I2k/ZTdqTCV4OzRablJrTl5NeDA3KnFvTTZOPCQKRWYoPjBO
ITJrZE4KCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL2luZGV4Lmh0bWwgYi9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMv
dmFuaWxsYWpzL2luZGV4Lmh0bWwKaW5kZXggNDc3YjliZjU4MGQ5MmQ2OWEwNjQ3MzZjZDY1MjIx
ZTk2NzVjYjhjZS4uNmQ5NDRjNGY4ODZmYWQzNDgwZmRkZjNmMmEwYWRmNmNlYjJkMTkyMyAxMDA2
NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92
YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9pbmRleC5odG1sCisrKyBiL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxh
anMvaW5kZXguaHRtbApAQCAtMSw1MyArMSw1MSBAQAogPCFkb2N0eXBlIGh0bWw+CiA8aHRtbCBs
YW5nPSJlbiIgZGF0YS1mcmFtZXdvcms9ImphdmFzY3JpcHQiPgogICAgIDxoZWFkPgotICAgIDxt
ZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLSAgICA8bWV0YSBodHRwLWVxdWl2PSJYLVVBLUNvbXBhdGli
bGUiIGNvbnRlbnQ9IklFPWVkZ2UiPgotICAgIDx0aXRsZT5WYW5pbGxhSlMg4oCiIFRvZG9NVkM8
L3RpdGxlPgotICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iYm93ZXJfY29tcG9uZW50
cy90b2RvbXZjLWNvbW1vbi9iYXNlLmNzcyI+CisgICAgICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKyAgICAgICAgPHRpdGxlPlZhbmlsbGFKUyDigKIgVG9kb01WQzwvdGl0bGU+CisgICAgICAg
IDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ibm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9u
L2Jhc2UuY3NzIj4KKyAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJub2RlX21v
ZHVsZXMvdG9kb212Yy1hcHAtY3NzL2luZGV4LmNzcyI+CiAgICAgPC9oZWFkPgogICAgIDxib2R5
PgotICAgIDxzZWN0aW9uIGlkPSJ0b2RvYXBwIj4KLSAgICA8aGVhZGVyIGlkPSJoZWFkZXIiPgot
ICAgIDxoMT50b2RvczwvaDE+Ci0gICAgPGlucHV0IGlkPSJuZXctdG9kbyIgcGxhY2Vob2xkZXI9
IldoYXQgbmVlZHMgdG8gYmUgZG9uZT8iIGF1dG9mb2N1cz4KLSAgICA8L2hlYWRlcj4KLSAgICA8
c2VjdGlvbiBpZD0ibWFpbiI+Ci0gICAgPGlucHV0IGlkPSJ0b2dnbGUtYWxsIiB0eXBlPSJjaGVj
a2JveCI+Ci0gICAgPGxhYmVsIGZvcj0idG9nZ2xlLWFsbCI+TWFyayBhbGwgYXMgY29tcGxldGU8
L2xhYmVsPgotICAgIDx1bCBpZD0idG9kby1saXN0Ij48L3VsPgotICAgIDwvc2VjdGlvbj4KLSAg
ICA8Zm9vdGVyIGlkPSJmb290ZXIiPgotICAgIDxzcGFuIGlkPSJ0b2RvLWNvdW50Ij48L3NwYW4+
Ci0gICAgPHVsIGlkPSJmaWx0ZXJzIj4KLSAgICA8bGk+Ci0gICAgPGEgaHJlZj0iIy8iPkFsbDwv
YT4KLSAgICA8L2xpPgotICAgIDxsaT4KLSAgICA8YSBocmVmPSIjL2FjdGl2ZSI+QWN0aXZlPC9h
PgotICAgIDwvbGk+Ci0gICAgPGxpPgotICAgIDxhIGhyZWY9IiMvY29tcGxldGVkIj5Db21wbGV0
ZWQ8L2E+Ci0gICAgPC9saT4KLSAgICA8L3VsPgotICAgIDxidXR0b24gaWQ9ImNsZWFyLWNvbXBs
ZXRlZCI+Q2xlYXIgY29tcGxldGVkPC9idXR0b24+Ci0gICAgPC9mb290ZXI+Ci0gICAgPC9zZWN0
aW9uPgotICAgIDxmb290ZXIgaWQ9ImluZm8iPgotICAgIDxwPkRvdWJsZS1jbGljayB0byBlZGl0
IGEgdG9kbzwvcD4KLSAgICA8cD5DcmVhdGVkIGJ5IDxhIGhyZWY9Imh0dHA6Ly90d2l0dGVyLmNv
bS9vc2NhcmdvZHNvbiI+T3NjYXIgR29kc29uPC9hPjwvcD4KLSAgICA8cD5QYXJ0IG9mIDxhIGhy
ZWY9Imh0dHA6Ly90b2RvbXZjLmNvbSI+VG9kb01WQzwvYT48L3A+Ci0gICAgPC9mb290ZXI+Ci0g
ICAgPHNjcmlwdCBzcmM9ImJvd2VyX2NvbXBvbmVudHMvdG9kb212Yy1jb21tb24vYmFzZS5qcyI+
PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdD4KLSAgICAvLyBCb290c3RyYXAgYXBwIGRhdGEKLSAgICB3
aW5kb3cuYXBwID0ge307Ci0gICAgPC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9ImpzL2hlbHBl
cnMuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJqcy9zdG9yZS5qcyI+PC9zY3JpcHQ+
Ci0gICAgPHNjcmlwdCBzcmM9ImpzL21vZGVsLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNy
Yz0ianMvdmlldy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9ImpzL2NvbnRyb2xsZXIu
anMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJqcy9hcHAuanMiPjwvc2NyaXB0PgorICAg
ICAgICA8c2VjdGlvbiBjbGFzcz0idG9kb2FwcCI+CisgICAgICAgICAgICA8aGVhZGVyIGNsYXNz
PSJoZWFkZXIiPgorICAgICAgICAgICAgICAgIDxoMT50b2RvczwvaDE+CisgICAgICAgICAgICAg
ICAgPGlucHV0IGNsYXNzPSJuZXctdG9kbyIgcGxhY2Vob2xkZXI9IldoYXQgbmVlZHMgdG8gYmUg
ZG9uZT8iIGF1dG9mb2N1cz4KKyAgICAgICAgICAgIDwvaGVhZGVyPgorICAgICAgICAgICAgPHNl
Y3Rpb24gY2xhc3M9Im1haW4iPgorICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0idG9nZ2xl
LWFsbCIgdHlwZT0iY2hlY2tib3giPgorICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9InRvZ2ds
ZS1hbGwiPk1hcmsgYWxsIGFzIGNvbXBsZXRlPC9sYWJlbD4KKyAgICAgICAgICAgICAgICA8dWwg
Y2xhc3M9InRvZG8tbGlzdCI+PC91bD4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKyAgICAgICAg
ICAgIDxmb290ZXIgY2xhc3M9ImZvb3RlciI+CisgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9
InRvZG8tY291bnQiPjwvc3Bhbj4KKyAgICAgICAgICAgICAgICA8dWwgY2xhc3M9ImZpbHRlcnMi
PgorICAgICAgICAgICAgICAgICAgICA8bGk+CisgICAgICAgICAgICAgICAgICAgICAgICA8YSBo
cmVmPSIjLyIgY2xhc3M9InNlbGVjdGVkIj5BbGw8L2E+CisgICAgICAgICAgICAgICAgICAgIDwv
bGk+CisgICAgICAgICAgICAgICAgICAgIDxsaT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxh
IGhyZWY9IiMvYWN0aXZlIj5BY3RpdmU8L2E+CisgICAgICAgICAgICAgICAgICAgIDwvbGk+Cisg
ICAgICAgICAgICAgICAgICAgIDxsaT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9
IiMvY29tcGxldGVkIj5Db21wbGV0ZWQ8L2E+CisgICAgICAgICAgICAgICAgICAgIDwvbGk+Cisg
ICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJjbGVh
ci1jb21wbGV0ZWQiPkNsZWFyIGNvbXBsZXRlZDwvYnV0dG9uPgorICAgICAgICAgICAgPC9mb290
ZXI+CisgICAgICAgIDwvc2VjdGlvbj4KKyAgICAgICAgPGZvb3RlciBjbGFzcz0iaW5mbyI+Cisg
ICAgICAgICAgICA8cD5Eb3VibGUtY2xpY2sgdG8gZWRpdCBhIHRvZG88L3A+CisgICAgICAgICAg
ICA8cD5TcGVlZG9tZXRlciB2ZXJzaW9uIGJ5IDxhIGhyZWY9Imh0dHA6Ly90d2l0dGVyLmNvbS9h
ZGR5b3NtYW5pIj5BZGR5IE9zbWFuaTwvcD4KKyAgICAgICAgICAgIDxwPlBhcnRzIGJ5IDxhIGhy
ZWY9Imh0dHA6Ly90d2l0dGVyLmNvbS9vc2NhcmdvZHNvbiI+T3NjYXIgR29kc29uPC9hPjwvcD4K
KyAgICAgICAgICAgIDxwPlJlZmFjdG9yZWQgYnkgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29t
L2NidXJnbWVyIj5DaHJpc3RvcGggQnVyZ21lcjwvYT48L3A+CisgICAgICAgICAgICA8cD5QYXJ0
IG9mIDxhIGhyZWY9Imh0dHA6Ly90b2RvbXZjLmNvbSI+VG9kb01WQzwvYT48L3A+CisgICAgICAg
IDwvZm9vdGVyPgorICAgICAgICA8c2NyaXB0IHNyYz0ianMvaGVscGVycy5qcyI+PC9zY3JpcHQ+
CisgICAgICAgIDxzY3JpcHQgc3JjPSJqcy9zdG9yZS5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxz
Y3JpcHQgc3JjPSJqcy9tb2RlbC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSJq
cy90ZW1wbGF0ZS5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSJqcy92aWV3Lmpz
Ij48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9ImpzL2NvbnRyb2xsZXIuanMiPjwvc2Ny
aXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0ianMvYXBwLmpzIj48L3NjcmlwdD4KICAgICA8L2Jv
ZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL2pzL2FwcC5qcyBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFt
cGxlcy92YW5pbGxhanMvanMvYXBwLmpzCmluZGV4IDI4OGU1OWJkOGUwN2RmZWU5YzkwNGU0MDU3
NWY5N2JkMjlmMDdmYjUuLjMwMWNmOWZlYWU0ODU1MmU2N2Q4MDc4YWU5ZmEzNzE3NGQ0YzM4ZDQg
MTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvanMvYXBwLmpzCisrKyBiL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5p
bGxhanMvanMvYXBwLmpzCkBAIC0xLDQgKzEsNCBAQAotLypnbG9iYWwgU3RvcmUsIE1vZGVsLCBW
aWV3LCBDb250cm9sbGVyLCAkJCAqLworLypnbG9iYWwgYXBwLCAkb24gKi8KIChmdW5jdGlvbiAo
KSB7CiAgICAgJ3VzZSBzdHJpY3QnOwogCkBAIC04LDY3ICs4LDE4IEBACiAgICAgICogQHBhcmFt
IHtzdHJpbmd9IG5hbWUgVGhlIG5hbWUgb2YgeW91ciBuZXcgdG8gZG8gbGlzdC4KICAgICAgKi8K
ICAgICBmdW5jdGlvbiBUb2RvKG5hbWUpIHsKLSAgICB0aGlzLnN0b3JhZ2UgPSBuZXcgYXBwLlN0
b3JlKG5hbWUpOwotICAgIHRoaXMubW9kZWwgPSBuZXcgYXBwLk1vZGVsKHRoaXMuc3RvcmFnZSk7
Ci0gICAgdGhpcy52aWV3ID0gbmV3IGFwcC5WaWV3KCk7Ci0gICAgdGhpcy5jb250cm9sbGVyID0g
bmV3IGFwcC5Db250cm9sbGVyKHRoaXMubW9kZWwsIHRoaXMudmlldyk7CisgICAgICAgIHRoaXMu
c3RvcmFnZSA9IG5ldyBhcHAuU3RvcmUobmFtZSk7CisgICAgICAgIHRoaXMubW9kZWwgPSBuZXcg
YXBwLk1vZGVsKHRoaXMuc3RvcmFnZSk7CisgICAgICAgIHRoaXMudGVtcGxhdGUgPSBuZXcgYXBw
LlRlbXBsYXRlKCk7CisgICAgICAgIHRoaXMudmlldyA9IG5ldyBhcHAuVmlldyh0aGlzLnRlbXBs
YXRlKTsKKyAgICAgICAgdGhpcy5jb250cm9sbGVyID0gbmV3IGFwcC5Db250cm9sbGVyKHRoaXMu
bW9kZWwsIHRoaXMudmlldyk7CiAgICAgfQogCiAgICAgdmFyIHRvZG8gPSBuZXcgVG9kbygndG9k
b3MtdmFuaWxsYWpzJyk7CiAKLSAgICB3aW5kb3cudG9kbyA9IHRvZG87IC8vIEJlbmNobWFyayBt
b2RpZmljYXRpb247IEV4cG9zZSB0b2RvIHNvIHRoYXQgd2UgY2FuIGNhbGwgbWV0aG9kcyBvbiBp
dC4KLQotICAgIC8qKgotICAgICAqIEZpbmRzIHRoZSBtb2RlbCBJRCBvZiB0aGUgY2xpY2tlZCBE
T00gZWxlbWVudAotICAgICAqCi0gICAgICogQHBhcmFtIHtvYmplY3R9IHRhcmdldCBUaGUgc3Rh
cnRpbmcgcG9pbnQgaW4gdGhlIERPTSBmb3IgaXQgdG8gdHJ5IHRvIGZpbmQKLSAgICAgKiB0aGUg
SUQgb2YgdGhlIG1vZGVsLgotICAgICAqLwotICAgIGZ1bmN0aW9uIGxvb2t1cElkKHRhcmdldCkg
ewotICAgIHZhciBsb29rdXAgPSB0YXJnZXQ7Ci0KLSAgICB3aGlsZSAobG9va3VwLm5vZGVOYW1l
ICE9PSAnTEknKSB7Ci0gICAgbG9va3VwID0gbG9va3VwLnBhcmVudE5vZGU7CisgICAgZnVuY3Rp
b24gc2V0VmlldygpIHsKKyAgICAgICAgdG9kby5jb250cm9sbGVyLnNldFZpZXcoZG9jdW1lbnQu
bG9jYXRpb24uaGFzaCk7CiAgICAgfQotCi0gICAgcmV0dXJuIGxvb2t1cC5kYXRhc2V0LmlkOwot
ICAgIH0KLQotICAgIC8vIFdoZW4gdGhlIGVudGVyIGtleSBpcyBwcmVzc2VkIGZpcmUgdGhlIGFk
ZEl0ZW0gbWV0aG9kLgotICAgICQkKCcjbmV3LXRvZG8nKS5hZGRFdmVudExpc3RlbmVyKCdrZXlw
cmVzcycsIGZ1bmN0aW9uIChlKSB7Ci0gICAgdG9kby5jb250cm9sbGVyLmFkZEl0ZW0oZSk7Ci0g
ICAgfSk7Ci0KLSAgICAvLyBBIGRlbGVnYXRpb24gZXZlbnQuIFdpbGwgY2hlY2sgd2hhdCBpdGVt
IHdhcyBjbGlja2VkIHdoZW5ldmVyIHlvdSBjbGljayBvbiBhbnkKLSAgICAvLyBwYXJ0IG9mIGEg
bGlzdCBpdGVtLgotICAgICQkKCcjdG9kby1saXN0JykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2sn
LCBmdW5jdGlvbiAoZSkgewotICAgIHZhciB0YXJnZXQgPSBlLnRhcmdldDsKLQotICAgIC8vIElm
IHlvdSBjbGljayBhIGRlc3Ryb3kgYnV0dG9uCi0gICAgaWYgKHRhcmdldC5jbGFzc05hbWUuaW5k
ZXhPZignZGVzdHJveScpID4gLTEpIHsKLSAgICB0b2RvLmNvbnRyb2xsZXIucmVtb3ZlSXRlbShs
b29rdXBJZCh0YXJnZXQpKTsKLSAgICB9Ci0KLSAgICAvLyBJZiB5b3UgY2xpY2sgdGhlIGNoZWNr
bWFyawotICAgIGlmICh0YXJnZXQuY2xhc3NOYW1lLmluZGV4T2YoJ3RvZ2dsZScpID4gLTEpIHsK
LSAgICB0b2RvLmNvbnRyb2xsZXIudG9nZ2xlQ29tcGxldGUobG9va3VwSWQodGFyZ2V0KSwgdGFy
Z2V0KTsKLSAgICB9Ci0KLSAgICB9KTsKLQotICAgICQkKCcjdG9kby1saXN0JykuYWRkRXZlbnRM
aXN0ZW5lcignZGJsY2xpY2snLCBmdW5jdGlvbiAoZSkgewotICAgIHZhciB0YXJnZXQgPSBlLnRh
cmdldDsKLQotICAgIGlmICh0YXJnZXQubm9kZU5hbWUgPT09ICdMQUJFTCcpIHsKLSAgICB0b2Rv
LmNvbnRyb2xsZXIuZWRpdEl0ZW0obG9va3VwSWQodGFyZ2V0KSwgdGFyZ2V0KTsKLSAgICB9Ci0g
ICAgfSk7Ci0KLSAgICAkJCgnI3RvZ2dsZS1hbGwnKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycs
IGZ1bmN0aW9uIChlKSB7Ci0gICAgdG9kby5jb250cm9sbGVyLnRvZ2dsZUFsbChlKTsKLSAgICB9
KTsKLQotICAgICQkKCcjY2xlYXItY29tcGxldGVkJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2sn
LCBmdW5jdGlvbiAoKSB7Ci0gICAgdG9kby5jb250cm9sbGVyLnJlbW92ZUNvbXBsZXRlZEl0ZW1z
KCk7Ci0gICAgfSk7CisgICAgJG9uKHdpbmRvdywgJ2xvYWQnLCBzZXRWaWV3KTsKKyAgICAkb24o
d2luZG93LCAnaGFzaGNoYW5nZScsIHNldFZpZXcpOwogfSkoKTsKZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxl
cy92YW5pbGxhanMvanMvY29udHJvbGxlci5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvanMvY29udHJv
bGxlci5qcwppbmRleCBlM2EwZDZjODFlMDIwMjdkZWFmNTdiNDc2NzRkZmZlOWMyMDNkMGM4Li4w
ZmJjNjJhODllNjVlYjdiODE0MDdiY2JkMTdjZmIwMjdiNGNlNjg3IDEwMDY0NAotLS0gYS9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBs
ZXMvdmFuaWxsYWpzL2pzL2NvbnRyb2xsZXIuanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9qcy9j
b250cm9sbGVyLmpzCkBAIC0xLDQgKzEsMyBAQAotLypnbG9iYWwgJCQsICQgKi8KIChmdW5jdGlv
biAod2luZG93KSB7CiAgICAgJ3VzZSBzdHJpY3QnOwogCkBAIC02LDE1MiArNSwxNDAgQEAKICAg
ICAgKiBUYWtlcyBhIG1vZGVsIGFuZCB2aWV3IGFuZCBhY3RzIGFzIHRoZSBjb250cm9sbGVyIGJl
dHdlZW4gdGhlbQogICAgICAqCiAgICAgICogQGNvbnN0cnVjdG9yCi0gICAgICogQHBhcmFtIHtv
YmplY3R9IG1vZGVsIFRoZSBtb2RlbCBjb25zdHJ1Y3RvcgotICAgICAqIEBwYXJhbSB7b2JqZWN0
fSB2aWV3IFRoZSB2aWV3IGNvbnN0cnVjdG9yCisgICAgICogQHBhcmFtIHtvYmplY3R9IG1vZGVs
IFRoZSBtb2RlbCBpbnN0YW5jZQorICAgICAqIEBwYXJhbSB7b2JqZWN0fSB2aWV3IFRoZSB2aWV3
IGluc3RhbmNlCiAgICAgICovCiAgICAgZnVuY3Rpb24gQ29udHJvbGxlcihtb2RlbCwgdmlldykg
ewotICAgIHRoaXMubW9kZWwgPSBtb2RlbDsKLSAgICB0aGlzLnZpZXcgPSB2aWV3OwotCi0gICAg
dGhpcy5FTlRFUl9LRVkgPSAxMzsKLSAgICB0aGlzLkVTQ0FQRV9LRVkgPSAyNzsKLQotICAgIHRo
aXMuJG1haW4gPSAkJCgnI21haW4nKTsKLSAgICB0aGlzLiR0b2dnbGVBbGwgPSAkJCgnI3RvZ2ds
ZS1hbGwnKTsKLSAgICB0aGlzLiR0b2RvTGlzdCA9ICQkKCcjdG9kby1saXN0Jyk7Ci0gICAgdGhp
cy4kdG9kb0l0ZW1Db3VudGVyID0gJCQoJyN0b2RvLWNvdW50Jyk7Ci0gICAgdGhpcy4kY2xlYXJD
b21wbGV0ZWQgPSAkJCgnI2NsZWFyLWNvbXBsZXRlZCcpOwotICAgIHRoaXMuJGZvb3RlciA9ICQk
KCcjZm9vdGVyJyk7Ci0KLSAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGZ1bmN0
aW9uICgpIHsKLSAgICB0aGlzLl91cGRhdGVGaWx0ZXJTdGF0ZSgpOwotICAgIH0uYmluZCh0aGlz
KSk7Ci0KLSAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignaGFzaGNoYW5nZScsIGZ1bmN0aW9u
ICgpIHsKLSAgICB0aGlzLl91cGRhdGVGaWx0ZXJTdGF0ZSgpOwotICAgIH0uYmluZCh0aGlzKSk7
CisgICAgICAgIHZhciBzZWxmID0gdGhpczsKKyAgICAgICAgc2VsZi5tb2RlbCA9IG1vZGVsOwor
ICAgICAgICBzZWxmLnZpZXcgPSB2aWV3OworCisgICAgICAgIHNlbGYudmlldy5iaW5kKCduZXdU
b2RvJywgZnVuY3Rpb24gKHRpdGxlKSB7CisgICAgICAgICAgICBzZWxmLmFkZEl0ZW0odGl0bGUp
OworICAgICAgICB9KTsKKworICAgICAgICBzZWxmLnZpZXcuYmluZCgnaXRlbUVkaXQnLCBmdW5j
dGlvbiAoaXRlbSkgeworICAgICAgICAgICAgc2VsZi5lZGl0SXRlbShpdGVtLmlkKTsKKyAgICAg
ICAgfSk7CisKKyAgICAgICAgc2VsZi52aWV3LmJpbmQoJ2l0ZW1FZGl0RG9uZScsIGZ1bmN0aW9u
IChpdGVtKSB7CisgICAgICAgICAgICBzZWxmLmVkaXRJdGVtU2F2ZShpdGVtLmlkLCBpdGVtLnRp
dGxlKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgc2VsZi52aWV3LmJpbmQoJ2l0ZW1FZGl0Q2Fu
Y2VsJywgZnVuY3Rpb24gKGl0ZW0pIHsKKyAgICAgICAgICAgIHNlbGYuZWRpdEl0ZW1DYW5jZWwo
aXRlbS5pZCk7CisgICAgICAgIH0pOworCisgICAgICAgIHNlbGYudmlldy5iaW5kKCdpdGVtUmVt
b3ZlJywgZnVuY3Rpb24gKGl0ZW0pIHsKKyAgICAgICAgICAgIHNlbGYucmVtb3ZlSXRlbShpdGVt
LmlkKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgc2VsZi52aWV3LmJpbmQoJ2l0ZW1Ub2dnbGUn
LCBmdW5jdGlvbiAoaXRlbSkgeworICAgICAgICAgICAgc2VsZi50b2dnbGVDb21wbGV0ZShpdGVt
LmlkLCBpdGVtLmNvbXBsZXRlZCk7CisgICAgICAgIH0pOworCisgICAgICAgIHNlbGYudmlldy5i
aW5kKCdyZW1vdmVDb21wbGV0ZWQnLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBzZWxmLnJl
bW92ZUNvbXBsZXRlZEl0ZW1zKCk7CisgICAgICAgIH0pOworCisgICAgICAgIHNlbGYudmlldy5i
aW5kKCd0b2dnbGVBbGwnLCBmdW5jdGlvbiAoc3RhdHVzKSB7CisgICAgICAgICAgICBzZWxmLnRv
Z2dsZUFsbChzdGF0dXMuY29tcGxldGVkKTsKKyAgICAgICAgfSk7CiAgICAgfQogCiAgICAgLyoq
CisgICAgICogTG9hZHMgYW5kIGluaXRpYWxpc2VzIHRoZSB2aWV3CisgICAgICoKKyAgICAgKiBA
cGFyYW0ge3N0cmluZ30gJycgfCAnYWN0aXZlJyB8ICdjb21wbGV0ZWQnCisgICAgICovCisgICAg
Q29udHJvbGxlci5wcm90b3R5cGUuc2V0VmlldyA9IGZ1bmN0aW9uIChsb2NhdGlvbkhhc2gpIHsK
KyAgICAgICAgdmFyIHJvdXRlID0gbG9jYXRpb25IYXNoLnNwbGl0KCcvJylbMV07CisgICAgICAg
IHZhciBwYWdlID0gcm91dGUgfHwgJyc7CisgICAgICAgIHRoaXMuX3VwZGF0ZUZpbHRlclN0YXRl
KHBhZ2UpOworICAgIH07CisKKyAgICAvKioKICAgICAgKiBBbiBldmVudCB0byBmaXJlIG9uIGxv
YWQuIFdpbGwgZ2V0IGFsbCBpdGVtcyBhbmQgZGlzcGxheSB0aGVtIGluIHRoZQogICAgICAqIHRv
ZG8tbGlzdAogICAgICAqLwogICAgIENvbnRyb2xsZXIucHJvdG90eXBlLnNob3dBbGwgPSBmdW5j
dGlvbiAoKSB7Ci0gICAgdGhpcy5tb2RlbC5yZWFkKGZ1bmN0aW9uIChkYXRhKSB7Ci0gICAgdGhp
cy4kdG9kb0xpc3QuaW5uZXJIVE1MID0gdGhpcy52aWV3LnNob3coZGF0YSk7Ci0gICAgfS5iaW5k
KHRoaXMpKTsKKyAgICAgICAgdmFyIHNlbGYgPSB0aGlzOworICAgICAgICBzZWxmLm1vZGVsLnJl
YWQoZnVuY3Rpb24gKGRhdGEpIHsKKyAgICAgICAgICAgIHNlbGYudmlldy5yZW5kZXIoJ3Nob3dF
bnRyaWVzJywgZGF0YSk7CisgICAgICAgIH0pOwogICAgIH07CiAKICAgICAvKioKICAgICAgKiBS
ZW5kZXJzIGFsbCBhY3RpdmUgdGFza3MKICAgICAgKi8KICAgICBDb250cm9sbGVyLnByb3RvdHlw
ZS5zaG93QWN0aXZlID0gZnVuY3Rpb24gKCkgewotICAgIHRoaXMubW9kZWwucmVhZCh7IGNvbXBs
ZXRlZDogMCB9LCBmdW5jdGlvbiAoZGF0YSkgewotICAgIHRoaXMuJHRvZG9MaXN0LmlubmVySFRN
TCA9IHRoaXMudmlldy5zaG93KGRhdGEpOwotICAgIH0uYmluZCh0aGlzKSk7CisgICAgICAgIHZh
ciBzZWxmID0gdGhpczsKKyAgICAgICAgc2VsZi5tb2RlbC5yZWFkKHsgY29tcGxldGVkOiBmYWxz
ZSB9LCBmdW5jdGlvbiAoZGF0YSkgeworICAgICAgICAgICAgc2VsZi52aWV3LnJlbmRlcignc2hv
d0VudHJpZXMnLCBkYXRhKTsKKyAgICAgICAgfSk7CiAgICAgfTsKIAogICAgIC8qKgogICAgICAq
IFJlbmRlcnMgYWxsIGNvbXBsZXRlZCB0YXNrcwogICAgICAqLwogICAgIENvbnRyb2xsZXIucHJv
dG90eXBlLnNob3dDb21wbGV0ZWQgPSBmdW5jdGlvbiAoKSB7Ci0gICAgdGhpcy5tb2RlbC5yZWFk
KHsgY29tcGxldGVkOiAxIH0sIGZ1bmN0aW9uIChkYXRhKSB7Ci0gICAgdGhpcy4kdG9kb0xpc3Qu
aW5uZXJIVE1MID0gdGhpcy52aWV3LnNob3coZGF0YSk7Ci0gICAgfS5iaW5kKHRoaXMpKTsKKyAg
ICAgICAgdmFyIHNlbGYgPSB0aGlzOworICAgICAgICBzZWxmLm1vZGVsLnJlYWQoeyBjb21wbGV0
ZWQ6IHRydWUgfSwgZnVuY3Rpb24gKGRhdGEpIHsKKyAgICAgICAgICAgIHNlbGYudmlldy5yZW5k
ZXIoJ3Nob3dFbnRyaWVzJywgZGF0YSk7CisgICAgICAgIH0pOwogICAgIH07CiAKICAgICAvKioK
ICAgICAgKiBBbiBldmVudCB0byBmaXJlIHdoZW5ldmVyIHlvdSB3YW50IHRvIGFkZCBhbiBpdGVt
LiBTaW1wbHkgcGFzcyBpbiB0aGUgZXZlbnQKICAgICAgKiBvYmplY3QgYW5kIGl0J2xsIGhhbmRs
ZSB0aGUgRE9NIGluc2VydGlvbiBhbmQgc2F2aW5nIG9mIHRoZSBuZXcgaXRlbS4KLSAgICAgKgot
ICAgICAqIEBwYXJhbSB7b2JqZWN0fSBlIFRoZSBldmVudCBvYmplY3QKICAgICAgKi8KLSAgICBD
b250cm9sbGVyLnByb3RvdHlwZS5hZGRJdGVtID0gZnVuY3Rpb24gKGUpIHsKLSAgICB2YXIgaW5w
dXQgPSAkJCgnI25ldy10b2RvJyk7Ci0gICAgdmFyIHRpdGxlID0gdGl0bGUgfHwgJyc7CisgICAg
Q29udHJvbGxlci5wcm90b3R5cGUuYWRkSXRlbSA9IGZ1bmN0aW9uICh0aXRsZSkgeworICAgICAg
ICB2YXIgc2VsZiA9IHRoaXM7CiAKLSAgICBpZiAoZS5rZXlDb2RlID09PSB0aGlzLkVOVEVSX0tF
WSkgewotICAgIGlmIChlLnRhcmdldC52YWx1ZS50cmltKCkgPT09ICcnKSB7Ci0gICAgcmV0dXJu
OwotICAgIH0KLQotICAgIHRoaXMubW9kZWwuY3JlYXRlKGUudGFyZ2V0LnZhbHVlLCBmdW5jdGlv
biAoZGF0YSkgewotICAgIGlucHV0LnZhbHVlID0gJyc7Ci0gICAgdGhpcy5fZmlsdGVyKHRydWUp
OwotICAgIH0uYmluZCh0aGlzKSk7Ci0gICAgfQorICAgICAgICBpZiAodGl0bGUudHJpbSgpID09
PSAnJykgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKKyAgICAgICAgc2VsZi5t
b2RlbC5jcmVhdGUodGl0bGUsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHNlbGYudmlldy5y
ZW5kZXIoJ2NsZWFyTmV3VG9kbycpOworICAgICAgICAgICAgc2VsZi5fZmlsdGVyKHRydWUpOwor
ICAgICAgICB9KTsKICAgICB9OwogCi0gICAgLyoqCi0gICAgICogSGlkZXMgdGhlIGxhYmVsIHRl
eHQgYW5kIGNyZWF0ZXMgYW4gaW5wdXQgdG8gZWRpdCB0aGUgdGl0bGUgb2YgdGhlIGl0ZW0uCi0g
ICAgICogV2hlbiB5b3UgaGl0IGVudGVyIG9yIGJsdXIgb3V0IG9mIHRoZSBpbnB1dCBpdCBzYXZl
cyBpdCBhbmTCoHVwZGF0ZXMgdGhlIFVJCi0gICAgICogd2l0aCB0aGUgbmV3IG5hbWUuCi0gICAg
ICoKLSAgICAgKiBAcGFyYW0ge251bWJlcn0gaWQgVGhlIGlkIG9mIHRoZSBpdGVtIHRvIGVkaXQK
LSAgICAgKiBAcGFyYW0ge29iamVjdH0gbGFiZWwgVGhlIGxhYmVsIHlvdSB3YW50IHRvIGVkaXQg
dGhlIHRleHQgb2YKKyAgICAvKgorICAgICAqIFRyaWdnZXJzIHRoZSBpdGVtIGVkaXRpbmcgbW9k
ZS4KICAgICAgKi8KLSAgICBDb250cm9sbGVyLnByb3RvdHlwZS5lZGl0SXRlbSA9IGZ1bmN0aW9u
IChpZCwgbGFiZWwpIHsKLSAgICB2YXIgbGkgPSAgbGFiZWw7Ci0KLSAgICAvLyBUaGlzIGZpbmRz
IHRoZSA8bGFiZWw+J3MgcGFyZW50IDxsaT4KLSAgICB3aGlsZSAobGkubm9kZU5hbWUgIT09ICdM
SScpIHsKLSAgICBsaSA9IGxpLnBhcmVudE5vZGU7Ci0gICAgfQotCi0gICAgdmFyIG9uU2F2ZUhh
bmRsZXIgPSBmdW5jdGlvbiAoKSB7Ci0gICAgdmFyIHZhbHVlID0gaW5wdXQudmFsdWUudHJpbSgp
OwotICAgIHZhciBkaXNjYXJkaW5nID0gaW5wdXQuZGF0YXNldC5kaXNjYXJkOwotCi0gICAgaWYg
KHZhbHVlLmxlbmd0aCAmJiAhZGlzY2FyZGluZykgewotICAgIHRoaXMubW9kZWwudXBkYXRlKGlk
LCB7IHRpdGxlOiBpbnB1dC52YWx1ZSB9KTsKLQotICAgIC8vIEluc3RlYWQgb2YgcmUtcmVuZGVy
aW5nIHRoZSB3aG9sZSB2aWV3IGp1c3QgdXBkYXRlCi0gICAgLy8gdGhpcyBwaWVjZSBvZiBpdAot
ICAgIGxhYmVsLmlubmVySFRNTCA9IHZhbHVlOwotICAgIH0gZWxzZSBpZiAodmFsdWUubGVuZ3Ro
ID09PSAwKSB7Ci0gICAgLy8gTm8gdmFsdWUgd2FzIGVudGVyZWQgaW4gdGhlIGlucHV0LiBXZSds
bCByZW1vdmUgdGhlIHRvZG8gaXRlbS4KLSAgICB0aGlzLnJlbW92ZUl0ZW0oaWQpOwotICAgIH0K
LQotICAgIC8vIFJlbW92ZSB0aGUgaW5wdXQgc2luY2Ugd2Ugbm8gbG9uZ2VyIG5lZWQgaXQKLSAg
ICAvLyBMZXNzIERPTSBtZWFucyBmYXN0ZXIgcmVuZGVyaW5nCi0gICAgbGkucmVtb3ZlQ2hpbGQo
aW5wdXQpOwotCi0gICAgLy8gUmVtb3ZlIHRoZSBlZGl0aW5nIGNsYXNzCi0gICAgbGkuY2xhc3NO
YW1lID0gbGkuY2xhc3NOYW1lLnJlcGxhY2UoJ2VkaXRpbmcnLCAnJyk7Ci0gICAgfS5iaW5kKHRo
aXMpOwotCi0gICAgLy8gQXBwZW5kIHRoZSBlZGl0aW5nIGNsYXNzCi0gICAgbGkuY2xhc3NOYW1l
ID0gbGkuY2xhc3NOYW1lICsgJyBlZGl0aW5nJzsKLQotICAgIHZhciBpbnB1dCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7Ci0gICAgaW5wdXQuY2xhc3NOYW1lID0gJ2VkaXQnOwot
Ci0gICAgLy8gR2V0IHRoZSBpbm5lckhUTUwgb2YgdGhlIGxhYmVsIGluc3RlYWQgb2YgcmVxdWVz
dGluZyB0aGUgZGF0YSBmcm9tIHRoZQotICAgIC8vIE9STS4gSWYgdGhpcyB3ZXJlIGEgcmVhbCBE
QiB0aGlzIHdvdWxkIHNhdmUgYSBsb3Qgb2YgdGltZSBhbmQgd291bGQgYXZvaWQKLSAgICAvLyBh
IHNwaW5uZXIgZ2lmLgotICAgIGlucHV0LnZhbHVlID0gbGFiZWwuaW5uZXJIVE1MOwotCi0gICAg
bGkuYXBwZW5kQ2hpbGQoaW5wdXQpOwotCi0gICAgaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignYmx1
cicsIG9uU2F2ZUhhbmRsZXIpOwotCi0gICAgaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigna2V5cHJl
c3MnLCBmdW5jdGlvbiAoZSkgewotICAgIGlmIChlLmtleUNvZGUgPT09IHRoaXMuRU5URVJfS0VZ
KSB7Ci0gICAgLy8gUmVtb3ZlIHRoZSBjdXJzb3IgZnJvbSB0aGUgaW5wdXQgd2hlbiB5b3UgaGl0
IGVudGVyIGp1c3QgbGlrZSBpZiBpdAotICAgIC8vIHdlcmUgYSByZWFsIGZvcm0KLSAgICBpbnB1
dC5ibHVyKCk7Ci0gICAgfQorICAgIENvbnRyb2xsZXIucHJvdG90eXBlLmVkaXRJdGVtID0gZnVu
Y3Rpb24gKGlkKSB7CisgICAgICAgIHZhciBzZWxmID0gdGhpczsKKyAgICAgICAgc2VsZi5tb2Rl
bC5yZWFkKGlkLCBmdW5jdGlvbiAoZGF0YSkgeworICAgICAgICAgICAgc2VsZi52aWV3LnJlbmRl
cignZWRpdEl0ZW0nLCB7aWQ6IGlkLCB0aXRsZTogZGF0YVswXS50aXRsZX0pOworICAgICAgICB9
KTsKKyAgICB9OwogCi0gICAgaWYgKGUua2V5Q29kZSA9PT0gdGhpcy5FU0NBUEVfS0VZKSB7Ci0g
ICAgLy8gRGlzY2FyZCB0aGUgY2hhbmdlcwotICAgIGlucHV0LmRhdGFzZXQuZGlzY2FyZCA9IHRy
dWU7Ci0gICAgaW5wdXQuYmx1cigpOwotICAgIH0KLSAgICB9LmJpbmQodGhpcykpOworICAgIC8q
CisgICAgICogRmluaXNoZXMgdGhlIGl0ZW0gZWRpdGluZyBtb2RlIHN1Y2Nlc3NmdWxseS4KKyAg
ICAgKi8KKyAgICBDb250cm9sbGVyLnByb3RvdHlwZS5lZGl0SXRlbVNhdmUgPSBmdW5jdGlvbiAo
aWQsIHRpdGxlKSB7CisgICAgICAgIHZhciBzZWxmID0gdGhpczsKKyAgICAgICAgdGl0bGUgPSB0
aXRsZS50cmltKCk7CisKKyAgICAgICAgaWYgKHRpdGxlLmxlbmd0aCAhPT0gMCkgeworICAgICAg
ICAgICAgc2VsZi5tb2RlbC51cGRhdGUoaWQsIHt0aXRsZTogdGl0bGV9LCBmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICAgICAgc2VsZi52aWV3LnJlbmRlcignZWRpdEl0ZW1Eb25lJywge2lkOiBp
ZCwgdGl0bGU6IHRpdGxlfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIHNlbGYucmVtb3ZlSXRlbShpZCk7CisgICAgICAgIH0KKyAgICB9OwogCi0gICAg
aW5wdXQuZm9jdXMoKTsKKyAgICAvKgorICAgICAqIENhbmNlbHMgdGhlIGl0ZW0gZWRpdGluZyBt
b2RlLgorICAgICAqLworICAgIENvbnRyb2xsZXIucHJvdG90eXBlLmVkaXRJdGVtQ2FuY2VsID0g
ZnVuY3Rpb24gKGlkKSB7CisgICAgICAgIHZhciBzZWxmID0gdGhpczsKKyAgICAgICAgc2VsZi5t
b2RlbC5yZWFkKGlkLCBmdW5jdGlvbiAoZGF0YSkgeworICAgICAgICAgICAgc2VsZi52aWV3LnJl
bmRlcignZWRpdEl0ZW1Eb25lJywge2lkOiBpZCwgdGl0bGU6IGRhdGFbMF0udGl0bGV9KTsKKyAg
ICAgICAgfSk7CiAgICAgfTsKIAogICAgIC8qKgpAQCAtMTYyLDI0ICsxNDksMjYgQEAKICAgICAg
KiBzdG9yYWdlCiAgICAgICovCiAgICAgQ29udHJvbGxlci5wcm90b3R5cGUucmVtb3ZlSXRlbSA9
IGZ1bmN0aW9uIChpZCkgewotICAgIHRoaXMubW9kZWwucmVtb3ZlKGlkLCBmdW5jdGlvbiAoKSB7
Ci0gICAgdGhpcy4kdG9kb0xpc3QucmVtb3ZlQ2hpbGQoJCQoJ1tkYXRhLWlkPSInICsgaWQgKyAn
Il0nKSk7Ci0gICAgfS5iaW5kKHRoaXMpKTsKKyAgICAgICAgdmFyIHNlbGYgPSB0aGlzOworICAg
ICAgICBzZWxmLm1vZGVsLnJlbW92ZShpZCwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgc2Vs
Zi52aWV3LnJlbmRlcigncmVtb3ZlSXRlbScsIGlkKTsKKyAgICAgICAgfSk7CiAKLSAgICB0aGlz
Ll9maWx0ZXIoKTsKKyAgICAgICAgc2VsZi5fZmlsdGVyKCk7CiAgICAgfTsKIAogICAgIC8qKgog
ICAgICAqIFdpbGwgcmVtb3ZlIGFsbCBjb21wbGV0ZWQgaXRlbXMgZnJvbSB0aGUgRE9NIGFuZCBz
dG9yYWdlLgogICAgICAqLwogICAgIENvbnRyb2xsZXIucHJvdG90eXBlLnJlbW92ZUNvbXBsZXRl
ZEl0ZW1zID0gZnVuY3Rpb24gKCkgewotICAgIHRoaXMubW9kZWwucmVhZCh7IGNvbXBsZXRlZDog
MSB9LCBmdW5jdGlvbiAoZGF0YSkgewotICAgIGRhdGEuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkg
ewotICAgIHRoaXMucmVtb3ZlSXRlbShpdGVtLmlkKTsKLSAgICB9LmJpbmQodGhpcykpOwotICAg
IH0uYmluZCh0aGlzKSk7Ci0KLSAgICB0aGlzLl9maWx0ZXIoKTsKKyAgICAgICAgdmFyIHNlbGYg
PSB0aGlzOworICAgICAgICBzZWxmLm1vZGVsLnJlYWQoeyBjb21wbGV0ZWQ6IHRydWUgfSwgZnVu
Y3Rpb24gKGRhdGEpIHsKKyAgICAgICAgICAgIGRhdGEuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkg
eworICAgICAgICAgICAgICAgIHNlbGYucmVtb3ZlSXRlbShpdGVtLmlkKTsKKyAgICAgICAgICAg
IH0pOworICAgICAgICB9KTsKKworICAgICAgICBzZWxmLl9maWx0ZXIoKTsKICAgICB9OwogCiAg
ICAgLyoqCkBAIC0xOTEsNDggKzE4MCwzMyBAQAogICAgICAqICAgICAgICAgICAgICAgICAgICAg
ICAgICBvciBub3QKICAgICAgKiBAcGFyYW0ge2Jvb2xlYW58dW5kZWZpbmVkfSBzaWxlbnQgUHJl
dmVudCByZS1maWx0ZXJpbmcgdGhlIHRvZG8gaXRlbXMKICAgICAgKi8KLSAgICBDb250cm9sbGVy
LnByb3RvdHlwZS50b2dnbGVDb21wbGV0ZSA9IGZ1bmN0aW9uIChpZCwgY2hlY2tib3gsIHNpbGVu
dCkgewotICAgIHZhciBjb21wbGV0ZWQgPSBjaGVja2JveC5jaGVja2VkID8gMSA6IDA7Ci0KLSAg
ICB0aGlzLm1vZGVsLnVwZGF0ZShpZCwgeyBjb21wbGV0ZWQ6IGNvbXBsZXRlZCB9LCBmdW5jdGlv
biAoKSB7Ci0gICAgdmFyIGxpc3RJdGVtID0gJCQoJ1tkYXRhLWlkPSInICsgaWQgKyAnIl0nKTsK
LQotICAgIGlmICghbGlzdEl0ZW0pIHsKLSAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbGlzdEl0
ZW0uY2xhc3NOYW1lID0gY29tcGxldGVkID8gJ2NvbXBsZXRlZCcgOiAnJzsKLQotICAgIC8vIElu
IGNhc2UgaXQgd2FzIHRvZ2dsZWQgZnJvbSBhbiBldmVudCBhbmQgbm90IGJ5IGNsaWNraW5nIHRo
ZSBjaGVja2JveAotICAgIGxpc3RJdGVtLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0JykuY2hlY2tlZCA9
IGNvbXBsZXRlZDsKLSAgICB9KTsKLQotICAgIGlmICghc2lsZW50KSB7Ci0gICAgdGhpcy5fZmls
dGVyKCk7Ci0gICAgfQorICAgIENvbnRyb2xsZXIucHJvdG90eXBlLnRvZ2dsZUNvbXBsZXRlID0g
ZnVuY3Rpb24gKGlkLCBjb21wbGV0ZWQsIHNpbGVudCkgeworICAgICAgICB2YXIgc2VsZiA9IHRo
aXM7CisgICAgICAgIHNlbGYubW9kZWwudXBkYXRlKGlkLCB7IGNvbXBsZXRlZDogY29tcGxldGVk
IH0sIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHNlbGYudmlldy5yZW5kZXIoJ2VsZW1lbnRD
b21wbGV0ZScsIHsKKyAgICAgICAgICAgICAgICBpZDogaWQsCisgICAgICAgICAgICAgICAgY29t
cGxldGVkOiBjb21wbGV0ZWQKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKworICAgICAg
ICBpZiAoIXNpbGVudCkgeworICAgICAgICAgICAgc2VsZi5fZmlsdGVyKCk7CisgICAgICAgIH0K
ICAgICB9OwogCiAgICAgLyoqCi0gICAgICogV2lsbCB0b2dnbGUgQUxMIGNoZWNrYm94ZSdzIG9u
L29mZiBzdGF0ZSBhbmQgY29tcGxldGVuZXNzIG9mIG1vZGVscy4KKyAgICAgKiBXaWxsIHRvZ2ds
ZSBBTEwgY2hlY2tib3hlcycgb24vb2ZmIHN0YXRlIGFuZCBjb21wbGV0ZW5lc3Mgb2YgbW9kZWxz
LgogICAgICAqIEp1c3QgcGFzcyBpbiB0aGUgZXZlbnQgb2JqZWN0LgotICAgICAqCi0gICAgICog
QHBhcmFtIHtvYmplY3R9IGUgVGhlIGV2ZW50IG9iamVjdAogICAgICAqLwotICAgIENvbnRyb2xs
ZXIucHJvdG90eXBlLnRvZ2dsZUFsbCA9IGZ1bmN0aW9uIChlKSB7Ci0gICAgdmFyIGNvbXBsZXRl
ZCA9IGUudGFyZ2V0LmNoZWNrZWQgPyAxIDogMDsKLSAgICB2YXIgcXVlcnkgPSAwOwotCi0gICAg
aWYgKGNvbXBsZXRlZCA9PT0gMCkgewotICAgIHF1ZXJ5ID0gMTsKLSAgICB9Ci0KLSAgICB0aGlz
Lm1vZGVsLnJlYWQoeyBjb21wbGV0ZWQ6IHF1ZXJ5IH0sIGZ1bmN0aW9uIChkYXRhKSB7Ci0gICAg
ZGF0YS5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7Ci0gICAgdGhpcy50b2dnbGVDb21wbGV0ZShp
dGVtLmlkLCBlLnRhcmdldCwgdHJ1ZSk7Ci0gICAgfS5iaW5kKHRoaXMpKTsKLSAgICB9LmJpbmQo
dGhpcykpOwotCi0gICAgdGhpcy5fZmlsdGVyKCk7CisgICAgQ29udHJvbGxlci5wcm90b3R5cGUu
dG9nZ2xlQWxsID0gZnVuY3Rpb24gKGNvbXBsZXRlZCkgeworICAgICAgICB2YXIgc2VsZiA9IHRo
aXM7CisgICAgICAgIHNlbGYubW9kZWwucmVhZCh7IGNvbXBsZXRlZDogIWNvbXBsZXRlZCB9LCBm
dW5jdGlvbiAoZGF0YSkgeworICAgICAgICAgICAgZGF0YS5mb3JFYWNoKGZ1bmN0aW9uIChpdGVt
KSB7CisgICAgICAgICAgICAgICAgc2VsZi50b2dnbGVDb21wbGV0ZShpdGVtLmlkLCBjb21wbGV0
ZWQsIHRydWUpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIHNlbGYu
X2ZpbHRlcigpOwogICAgIH07CiAKICAgICAvKioKQEAgLTI0MCwzNyArMjE0LDE3IEBACiAgICAg
ICogbnVtYmVyIG9mIHRvZG9zLgogICAgICAqLwogICAgIENvbnRyb2xsZXIucHJvdG90eXBlLl91
cGRhdGVDb3VudCA9IGZ1bmN0aW9uICgpIHsKLSAgICB2YXIgdG9kb3MgPSB0aGlzLm1vZGVsLmdl
dENvdW50KCk7Ci0KLSAgICB0aGlzLiR0b2RvSXRlbUNvdW50ZXIuaW5uZXJIVE1MID0gdGhpcy52
aWV3Lml0ZW1Db3VudGVyKHRvZG9zLmFjdGl2ZSk7Ci0KLSAgICB0aGlzLiRjbGVhckNvbXBsZXRl
ZC5pbm5lckhUTUwgPSB0aGlzLnZpZXcuY2xlYXJDb21wbGV0ZWRCdXR0b24odG9kb3MuY29tcGxl
dGVkKTsKLSAgICB0aGlzLiRjbGVhckNvbXBsZXRlZC5zdHlsZS5kaXNwbGF5ID0gdG9kb3MuY29t
cGxldGVkID4gMCA/ICdibG9jaycgOiAnbm9uZSc7Ci0KLSAgICB0aGlzLiR0b2dnbGVBbGwuY2hl
Y2tlZCA9IHRvZG9zLmNvbXBsZXRlZCA9PT0gdG9kb3MudG90YWw7Ci0KLSAgICB0aGlzLl90b2dn
bGVGcmFtZSh0b2Rvcyk7Ci0gICAgfTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtYWluIGJvZHkg
YW5kIGZvb3RlciBlbGVtZW50cyBzaG91bGQgbm90IGJlIHZpc2libGUgd2hlbiB0aGVyZSBhcmUg
bm8KLSAgICAgKiB0b2RvcyBsZWZ0LgotICAgICAqCi0gICAgICogQHBhcmFtIHtvYmplY3R9IHRv
ZG9zIENvbnRhaW5zIGEgY291bnQgb2YgYWxsIHRvZG9zLCBhbmQgdGhlaXIgc3RhdHVzZXMuCi0g
ICAgICovCi0gICAgQ29udHJvbGxlci5wcm90b3R5cGUuX3RvZ2dsZUZyYW1lID0gZnVuY3Rpb24g
KHRvZG9zKSB7Ci0gICAgdmFyIGZyYW1lRGlzcGxheSA9IHRoaXMuJG1haW4uc3R5bGUuZGlzcGxh
eTsKLSAgICB2YXIgZnJhbWVWaXNpYmxlID0gZnJhbWVEaXNwbGF5ID09PSAnYmxvY2snIHx8IGZy
YW1lRGlzcGxheSA9PT0gJyc7Ci0KLSAgICBpZiAodG9kb3MudG90YWwgPT09IDAgJiYgZnJhbWVW
aXNpYmxlKSB7Ci0gICAgdGhpcy4kbWFpbi5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwotICAgIHRo
aXMuJGZvb3Rlci5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwotICAgIH0KLQotICAgIGlmICh0b2Rv
cy50b3RhbCA+IDAgJiYgIWZyYW1lVmlzaWJsZSkgewotICAgIHRoaXMuJG1haW4uc3R5bGUuZGlz
cGxheSA9ICdibG9jayc7Ci0gICAgdGhpcy4kZm9vdGVyLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2sn
OwotICAgIH0KKyAgICAgICAgdmFyIHNlbGYgPSB0aGlzOworICAgICAgICBzZWxmLm1vZGVsLmdl
dENvdW50KGZ1bmN0aW9uICh0b2RvcykgeworICAgICAgICAgICAgc2VsZi52aWV3LnJlbmRlcign
dXBkYXRlRWxlbWVudENvdW50JywgdG9kb3MuYWN0aXZlKTsKKyAgICAgICAgICAgIHNlbGYudmll
dy5yZW5kZXIoJ2NsZWFyQ29tcGxldGVkQnV0dG9uJywgeworICAgICAgICAgICAgICAgIGNvbXBs
ZXRlZDogdG9kb3MuY29tcGxldGVkLAorICAgICAgICAgICAgICAgIHZpc2libGU6IHRvZG9zLmNv
bXBsZXRlZCA+IDAKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBzZWxmLnZpZXcucmVu
ZGVyKCd0b2dnbGVBbGwnLCB7Y2hlY2tlZDogdG9kb3MuY29tcGxldGVkID09PSB0b2Rvcy50b3Rh
bH0pOworICAgICAgICAgICAgc2VsZi52aWV3LnJlbmRlcignY29udGVudEJsb2NrVmlzaWJpbGl0
eScsIHt2aXNpYmxlOiB0b2Rvcy50b3RhbCA+IDB9KTsKKyAgICAgICAgfSk7CiAgICAgfTsKIAog
ICAgIC8qKgpAQCAtMjc4LDUzICsyMzIsMzkgQEAKICAgICAgKiBAcGFyYW0ge2Jvb2xlYW58dW5k
ZWZpbmVkfSBmb3JjZSAgZm9yY2VzIGEgcmUtcGFpbnRpbmcgb2YgdG9kbyBpdGVtcy4KICAgICAg
Ki8KICAgICBDb250cm9sbGVyLnByb3RvdHlwZS5fZmlsdGVyID0gZnVuY3Rpb24gKGZvcmNlKSB7
Ci0gICAgdmFyIGFjdGl2ZVJvdXRlID0gdGhpcy5fYWN0aXZlUm91dGUuY2hhckF0KDApLnRvVXBw
ZXJDYXNlKCkgKyB0aGlzLl9hY3RpdmVSb3V0ZS5zdWJzdHIoMSk7CisgICAgICAgIHZhciBhY3Rp
dmVSb3V0ZSA9IHRoaXMuX2FjdGl2ZVJvdXRlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgdGhp
cy5fYWN0aXZlUm91dGUuc3Vic3RyKDEpOwogCi0gICAgLy8gVXBkYXRlIHRoZSBlbGVtZW50cyBv
biB0aGUgcGFnZSwgd2hpY2ggY2hhbmdlIHdpdGggZWFjaCBjb21wbGV0ZWQgdG9kbwotICAgIHRo
aXMuX3VwZGF0ZUNvdW50KCk7CisgICAgICAgIC8vIFVwZGF0ZSB0aGUgZWxlbWVudHMgb24gdGhl
IHBhZ2UsIHdoaWNoIGNoYW5nZSB3aXRoIGVhY2ggY29tcGxldGVkIHRvZG8KKyAgICAgICAgdGhp
cy5fdXBkYXRlQ291bnQoKTsKIAotICAgIC8vIElmIHRoZSBsYXN0IGFjdGl2ZSByb3V0ZSBpc24n
dCAiQWxsIiwgb3Igd2UncmUgc3dpdGNoaW5nIHJvdXRlcywgd2UKLSAgICAvLyByZS1jcmVhdGUg
dGhlIHRvZG8gaXRlbSBlbGVtZW50cywgY2FsbGluZzoKLSAgICAvLyAgIHRoaXMuc2hvd1tBbGx8
QWN0aXZlfENvbXBsZXRlZF0oKTsKLSAgICBpZiAoZm9yY2UgfHwgdGhpcy5fbGFzdEFjdGl2ZVJv
dXRlICE9PSAnQWxsJyB8fCB0aGlzLl9sYXN0QWN0aXZlUm91dGUgIT09IGFjdGl2ZVJvdXRlKSB7
Ci0gICAgdGhpc1snc2hvdycgKyBhY3RpdmVSb3V0ZV0oKTsKLSAgICB9CisgICAgICAgIC8vIElm
IHRoZSBsYXN0IGFjdGl2ZSByb3V0ZSBpc24ndCAiQWxsIiwgb3Igd2UncmUgc3dpdGNoaW5nIHJv
dXRlcywgd2UKKyAgICAgICAgLy8gcmUtY3JlYXRlIHRoZSB0b2RvIGl0ZW0gZWxlbWVudHMsIGNh
bGxpbmc6CisgICAgICAgIC8vICAgdGhpcy5zaG93W0FsbHxBY3RpdmV8Q29tcGxldGVkXSgpOwor
ICAgICAgICBpZiAoZm9yY2UgfHwgdGhpcy5fbGFzdEFjdGl2ZVJvdXRlICE9PSAnQWxsJyB8fCB0
aGlzLl9sYXN0QWN0aXZlUm91dGUgIT09IGFjdGl2ZVJvdXRlKSB7CisgICAgICAgICAgICB0aGlz
WydzaG93JyArIGFjdGl2ZVJvdXRlXSgpOworICAgICAgICB9CiAKLSAgICB0aGlzLl9sYXN0QWN0
aXZlUm91dGUgPSBhY3RpdmVSb3V0ZTsKKyAgICAgICAgdGhpcy5fbGFzdEFjdGl2ZVJvdXRlID0g
YWN0aXZlUm91dGU7CiAgICAgfTsKIAogICAgIC8qKgogICAgICAqIFNpbXBseSB1cGRhdGVzIHRo
ZSBmaWx0ZXIgbmF2J3Mgc2VsZWN0ZWQgc3RhdGVzCiAgICAgICovCi0gICAgQ29udHJvbGxlci5w
cm90b3R5cGUuX3VwZGF0ZUZpbHRlclN0YXRlID0gZnVuY3Rpb24gKCkgewotICAgIHZhciBjdXJy
ZW50UGFnZSA9IHRoaXMuX2dldEN1cnJlbnRQYWdlKCkgfHwgJyc7Ci0KLSAgICAvLyBTdG9yZSBh
IHJlZmVyZW5jZSB0byB0aGUgYWN0aXZlIHJvdXRlLCBhbGxvd2luZyB1cyB0byByZS1maWx0ZXIg
dG9kbwotICAgIC8vIGl0ZW1zIGFzIHRoZXkgYXJlIG1hcmtlZCBjb21wbGV0ZSBvciBpbmNvbXBs
ZXRlLgotICAgIHRoaXMuX2FjdGl2ZVJvdXRlID0gY3VycmVudFBhZ2U7Ci0KLSAgICBpZiAoY3Vy
cmVudFBhZ2UgPT09ICcnKSB7Ci0gICAgdGhpcy5fYWN0aXZlUm91dGUgPSAnQWxsJzsKLSAgICB9
CisgICAgQ29udHJvbGxlci5wcm90b3R5cGUuX3VwZGF0ZUZpbHRlclN0YXRlID0gZnVuY3Rpb24g
KGN1cnJlbnRQYWdlKSB7CisgICAgICAgIC8vIFN0b3JlIGEgcmVmZXJlbmNlIHRvIHRoZSBhY3Rp
dmUgcm91dGUsIGFsbG93aW5nIHVzIHRvIHJlLWZpbHRlciB0b2RvCisgICAgICAgIC8vIGl0ZW1z
IGFzIHRoZXkgYXJlIG1hcmtlZCBjb21wbGV0ZSBvciBpbmNvbXBsZXRlLgorICAgICAgICB0aGlz
Ll9hY3RpdmVSb3V0ZSA9IGN1cnJlbnRQYWdlOwogCi0gICAgdGhpcy5fZmlsdGVyKCk7CisgICAg
ICAgIGlmIChjdXJyZW50UGFnZSA9PT0gJycpIHsKKyAgICAgICAgICAgIHRoaXMuX2FjdGl2ZVJv
dXRlID0gJ0FsbCc7CisgICAgICAgIH0KIAotICAgIC8vIFJlbW92ZSBhbGwgb3RoZXIgc2VsZWN0
ZWQgc3RhdGVzLiBXZSBsb29wIHRocm91Z2ggYWxsIG9mIHRoZW0gaW4gY2FzZSB0aGUKLSAgICAv
LyBVSSBnZXRzIGluIGEgZnVua3kgc3RhdGUgd2l0aCB0d28gc2VsZWN0ZWQuCi0gICAgJCgnI2Zp
bHRlcnMgLnNlbGVjdGVkJykuZWFjaChmdW5jdGlvbiAoaXRlbSkgewotICAgIGl0ZW0uY2xhc3NO
YW1lID0gJyc7Ci0gICAgfSk7CisgICAgICAgIHRoaXMuX2ZpbHRlcigpOwogCi0gICAgJCQoJyNm
aWx0ZXJzIFtocmVmPSIjLycgKyBjdXJyZW50UGFnZSArICciXScpLmNsYXNzTmFtZSA9ICdzZWxl
Y3RlZCc7Ci0gICAgfTsKLQotICAgIC8qKgotICAgICAqIEEgZ2V0dGVyIGZvciBnZXR0aW5nIHRo
ZSBjdXJyZW50IHBhZ2UKLSAgICAgKi8KLSAgICBDb250cm9sbGVyLnByb3RvdHlwZS5fZ2V0Q3Vy
cmVudFBhZ2UgPSBmdW5jdGlvbiAoKSB7Ci0gICAgcmV0dXJuIGRvY3VtZW50LmxvY2F0aW9uLmhh
c2guc3BsaXQoJy8nKVsxXTsKKyAgICAgICAgdGhpcy52aWV3LnJlbmRlcignc2V0RmlsdGVyJywg
Y3VycmVudFBhZ2UpOwogICAgIH07CiAKICAgICAvLyBFeHBvcnQgdG8gd2luZG93CisgICAgd2lu
ZG93LmFwcCA9IHdpbmRvdy5hcHAgfHwge307CiAgICAgd2luZG93LmFwcC5Db250cm9sbGVyID0g
Q29udHJvbGxlcjsKIH0pKHdpbmRvdyk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL2pz
L2hlbHBlcnMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL2pzL2hlbHBlcnMuanMKaW5kZXggNThhMGU5
ZmUzMjU3OGE5Njg1N2ZlOWI5NGRhZTNhZGYzZjZmNWU5Ni4uMmFmOTU2ZjA2NGQ4ODE4ZGZjNWYx
NTkxZGM2NjdjMWJhODZmZDEwYyAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9qcy9oZWxw
ZXJzLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvanMvaGVscGVycy5qcwpAQCAtMSwxNyArMSw1
MiBAQAorLypnbG9iYWwgTm9kZUxpc3QgKi8KIChmdW5jdGlvbiAod2luZG93KSB7CiAgICAgJ3Vz
ZSBzdHJpY3QnOwogCi0gICAgLy8gQ2FjaGUgdGhlIHF1ZXJ5U2VsZWN0b3IvQWxsIGZvciBlYXNp
ZXIgYW5kIGZhc3RlciByZXVzZQotICAgIHdpbmRvdy4kID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rv
ckFsbC5iaW5kKGRvY3VtZW50KTsKLSAgICB3aW5kb3cuJCQgPSBkb2N1bWVudC5xdWVyeVNlbGVj
dG9yLmJpbmQoZG9jdW1lbnQpOwotCi0gICAgLy8gQWxsb3cgZm9yIGxvb3Bpbmcgb24gT2JqZWN0
cyBieSBjaGFpbmluZzoKLSAgICAvLyAkKCcuZm9vJykuZWFjaChmdW5jdGlvbiAoKSB7fSkKLSAg
ICBPYmplY3QucHJvdG90eXBlLmVhY2ggPSBmdW5jdGlvbiAoY2FsbGJhY2spIHsKLSAgICBmb3Ig
KHZhciB4IGluIHRoaXMpIHsKLSAgICBpZiAodGhpcy5oYXNPd25Qcm9wZXJ0eSh4KSkgewotICAg
IGNhbGxiYWNrLmNhbGwodGhpcywgdGhpc1t4XSk7Ci0gICAgfQotICAgIH0KKyAgICAvLyBHZXQg
ZWxlbWVudChzKSBieSBDU1Mgc2VsZWN0b3I6CisgICAgd2luZG93LnFzID0gZnVuY3Rpb24gKHNl
bGVjdG9yLCBzY29wZSkgeworICAgICAgICByZXR1cm4gKHNjb3BlIHx8IGRvY3VtZW50KS5xdWVy
eVNlbGVjdG9yKHNlbGVjdG9yKTsKICAgICB9OworICAgIHdpbmRvdy5xc2EgPSBmdW5jdGlvbiAo
c2VsZWN0b3IsIHNjb3BlKSB7CisgICAgICAgIHJldHVybiAoc2NvcGUgfHwgZG9jdW1lbnQpLnF1
ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpOworICAgIH07CisKKyAgICAvLyBhZGRFdmVudExpc3Rl
bmVyIHdyYXBwZXI6CisgICAgd2luZG93LiRvbiA9IGZ1bmN0aW9uICh0YXJnZXQsIHR5cGUsIGNh
bGxiYWNrLCB1c2VDYXB0dXJlKSB7CisgICAgICAgIHRhcmdldC5hZGRFdmVudExpc3RlbmVyKHR5
cGUsIGNhbGxiYWNrLCAhIXVzZUNhcHR1cmUpOworICAgIH07CisKKyAgICAvLyBBdHRhY2ggYSBo
YW5kbGVyIHRvIGV2ZW50IGZvciBhbGwgZWxlbWVudHMgdGhhdCBtYXRjaCB0aGUgc2VsZWN0b3Is
CisgICAgLy8gbm93IG9yIGluIHRoZSBmdXR1cmUsIGJhc2VkIG9uIGEgcm9vdCBlbGVtZW50Cisg
ICAgd2luZG93LiRkZWxlZ2F0ZSA9IGZ1bmN0aW9uICh0YXJnZXQsIHNlbGVjdG9yLCB0eXBlLCBo
YW5kbGVyKSB7CisgICAgICAgIGZ1bmN0aW9uIGRpc3BhdGNoRXZlbnQoZXZlbnQpIHsKKyAgICAg
ICAgICAgIHZhciB0YXJnZXRFbGVtZW50ID0gZXZlbnQudGFyZ2V0OworICAgICAgICAgICAgdmFy
IHBvdGVudGlhbEVsZW1lbnRzID0gd2luZG93LnFzYShzZWxlY3RvciwgdGFyZ2V0KTsKKyAgICAg
ICAgICAgIHZhciBoYXNNYXRjaCA9IEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwocG90ZW50
aWFsRWxlbWVudHMsIHRhcmdldEVsZW1lbnQpID49IDA7CisKKyAgICAgICAgICAgIGlmIChoYXNN
YXRjaCkgeworICAgICAgICAgICAgICAgIGhhbmRsZXIuY2FsbCh0YXJnZXRFbGVtZW50LCBldmVu
dCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBodHRwczovL2RldmVs
b3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9FdmVudHMvYmx1cgorICAgICAgICB2YXIg
dXNlQ2FwdHVyZSA9IHR5cGUgPT09ICdibHVyJyB8fCB0eXBlID09PSAnZm9jdXMnOworCisgICAg
ICAgIHdpbmRvdy4kb24odGFyZ2V0LCB0eXBlLCBkaXNwYXRjaEV2ZW50LCB1c2VDYXB0dXJlKTsK
KyAgICB9OworCisgICAgLy8gRmluZCB0aGUgZWxlbWVudCdzIHBhcmVudCB3aXRoIHRoZSBnaXZl
biB0YWcgbmFtZToKKyAgICAvLyAkcGFyZW50KHFzKCdhJyksICdkaXYnKTsKKyAgICB3aW5kb3cu
JHBhcmVudCA9IGZ1bmN0aW9uIChlbGVtZW50LCB0YWdOYW1lKSB7CisgICAgICAgIGlmICghZWxl
bWVudC5wYXJlbnROb2RlKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKGVsZW1lbnQucGFyZW50Tm9kZS50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09IHRhZ05h
bWUudG9Mb3dlckNhc2UoKSkgeworICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQucGFyZW50Tm9k
ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gd2luZG93LiRwYXJlbnQoZWxlbWVudC5wYXJl
bnROb2RlLCB0YWdOYW1lKTsKKyAgICB9OworCisgICAgLy8gQWxsb3cgZm9yIGxvb3Bpbmcgb24g
bm9kZXMgYnkgY2hhaW5pbmc6CisgICAgLy8gcXNhKCcuZm9vJykuZm9yRWFjaChmdW5jdGlvbiAo
KSB7fSkKKyAgICBOb2RlTGlzdC5wcm90b3R5cGUuZm9yRWFjaCA9IEFycmF5LnByb3RvdHlwZS5m
b3JFYWNoOwogfSkod2luZG93KTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvanMvbW9k
ZWwuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3Zh
bmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL2pzL21vZGVsLmpzCmluZGV4IGUwMTQ2NzQ2NWUxNjk5
YmIzNTRjOTNlMWYyMDg2MGUwODU1MTU2MWIuLmQ4YTczMTkxZDJjMmRmNWIyMzcyM2FhYTQxMzM5
ZGI4ZGJhNzliNGYgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvanMvbW9kZWwuanMKKysr
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxh
LWV4YW1wbGVzL3ZhbmlsbGFqcy9qcy9tb2RlbC5qcwpAQCAtOCw3ICs4LDcgQEAKICAgICAgKiBA
cGFyYW0ge29iamVjdH0gc3RvcmFnZSBBIHJlZmVyZW5jZSB0byB0aGUgY2xpZW50IHNpZGUgc3Rv
cmFnZSBjbGFzcwogICAgICAqLwogICAgIGZ1bmN0aW9uIE1vZGVsKHN0b3JhZ2UpIHsKLSAgICB0
aGlzLnN0b3JhZ2UgPSBzdG9yYWdlOworICAgICAgICB0aGlzLnN0b3JhZ2UgPSBzdG9yYWdlOwog
ICAgIH0KIAogICAgIC8qKgpAQCAtMTgsMTUgKzE4LDE1IEBACiAgICAgICogQHBhcmFtIHtmdW5j
dGlvbn0gW2NhbGxiYWNrXSBUaGUgY2FsbGJhY2sgdG8gZmlyZSBhZnRlciB0aGUgbW9kZWwgaXMg
Y3JlYXRlZAogICAgICAqLwogICAgIE1vZGVsLnByb3RvdHlwZS5jcmVhdGUgPSBmdW5jdGlvbiAo
dGl0bGUsIGNhbGxiYWNrKSB7Ci0gICAgdGl0bGUgPSB0aXRsZSB8fCAnJzsKLSAgICBjYWxsYmFj
ayA9IGNhbGxiYWNrIHx8IGZ1bmN0aW9uICgpIHt9OworICAgICAgICB0aXRsZSA9IHRpdGxlIHx8
ICcnOworICAgICAgICBjYWxsYmFjayA9IGNhbGxiYWNrIHx8IGZ1bmN0aW9uICgpIHt9OwogCi0g
ICAgdmFyIG5ld0l0ZW0gPSB7Ci0gICAgdGl0bGU6IHRpdGxlLnRyaW0oKSwKLSAgICBjb21wbGV0
ZWQ6IDAKLSAgICB9OworICAgICAgICB2YXIgbmV3SXRlbSA9IHsKKyAgICAgICAgICAgIHRpdGxl
OiB0aXRsZS50cmltKCksCisgICAgICAgICAgICBjb21wbGV0ZWQ6IGZhbHNlCisgICAgICAgIH07
CiAKLSAgICB0aGlzLnN0b3JhZ2Uuc2F2ZShuZXdJdGVtLCBjYWxsYmFjayk7CisgICAgICAgIHRo
aXMuc3RvcmFnZS5zYXZlKG5ld0l0ZW0sIGNhbGxiYWNrKTsKICAgICB9OwogCiAgICAgLyoqCkBA
IC00NSwxNyArNDUsMTggQEAKICAgICAgKiBtb2RlbC5yZWFkKHsgZm9vOiAnYmFyJywgaGVsbG86
ICd3b3JsZCcgfSk7CiAgICAgICovCiAgICAgTW9kZWwucHJvdG90eXBlLnJlYWQgPSBmdW5jdGlv
biAocXVlcnksIGNhbGxiYWNrKSB7Ci0gICAgdmFyIHF1ZXJ5VHlwZSA9IHR5cGVvZiBxdWVyeTsK
LSAgICBjYWxsYmFjayA9IGNhbGxiYWNrIHx8IGZ1bmN0aW9uICgpIHt9OworICAgICAgICB2YXIg
cXVlcnlUeXBlID0gdHlwZW9mIHF1ZXJ5OworICAgICAgICBjYWxsYmFjayA9IGNhbGxiYWNrIHx8
IGZ1bmN0aW9uICgpIHt9OwogCi0gICAgaWYgKHF1ZXJ5VHlwZSA9PT0gJ2Z1bmN0aW9uJykgewot
ICAgIGNhbGxiYWNrID0gcXVlcnk7Ci0gICAgcmV0dXJuIHRoaXMuc3RvcmFnZS5maW5kQWxsKGNh
bGxiYWNrKTsKLSAgICB9IGVsc2UgaWYgKHF1ZXJ5VHlwZSA9PT0gJ3N0cmluZycgfHwgcXVlcnlU
eXBlID09PSAnbnVtYmVyJykgewotICAgIHRoaXMuc3RvcmFnZS5maW5kKHsgaWQ6IHF1ZXJ5IH0s
IGNhbGxiYWNrKTsKLSAgICB9IGVsc2UgewotICAgIHRoaXMuc3RvcmFnZS5maW5kKHF1ZXJ5LCBj
YWxsYmFjayk7Ci0gICAgfQorICAgICAgICBpZiAocXVlcnlUeXBlID09PSAnZnVuY3Rpb24nKSB7
CisgICAgICAgICAgICBjYWxsYmFjayA9IHF1ZXJ5OworICAgICAgICAgICAgcmV0dXJuIHRoaXMu
c3RvcmFnZS5maW5kQWxsKGNhbGxiYWNrKTsKKyAgICAgICAgfSBlbHNlIGlmIChxdWVyeVR5cGUg
PT09ICdzdHJpbmcnIHx8IHF1ZXJ5VHlwZSA9PT0gJ251bWJlcicpIHsKKyAgICAgICAgICAgIHF1
ZXJ5ID0gcGFyc2VJbnQocXVlcnksIDEwKTsKKyAgICAgICAgICAgIHRoaXMuc3RvcmFnZS5maW5k
KHsgaWQ6IHF1ZXJ5IH0sIGNhbGxiYWNrKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IHRoaXMuc3RvcmFnZS5maW5kKHF1ZXJ5LCBjYWxsYmFjayk7CisgICAgICAgIH0KICAgICB9Owog
CiAgICAgLyoqCkBAIC02Nyw3ICs2OCw3IEBACiAgICAgICogQHBhcmFtIHtmdW5jdGlvbn0gY2Fs
bGJhY2sgVGhlIGNhbGxiYWNrIHRvIGZpcmUgd2hlbiB0aGUgdXBkYXRlIGlzIGNvbXBsZXRlLgog
ICAgICAqLwogICAgIE1vZGVsLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAoaWQsIGRhdGEs
IGNhbGxiYWNrKSB7Ci0gICAgdGhpcy5zdG9yYWdlLnNhdmUoaWQsIGRhdGEsIGNhbGxiYWNrKTsK
KyAgICAgICAgdGhpcy5zdG9yYWdlLnNhdmUoZGF0YSwgY2FsbGJhY2ssIGlkKTsKICAgICB9Owog
CiAgICAgLyoqCkBAIC03Nyw3ICs3OCw3IEBACiAgICAgICogQHBhcmFtIHtmdW5jdGlvbn0gY2Fs
bGJhY2sgVGhlIGNhbGxiYWNrIHRvIGZpcmUgd2hlbiB0aGUgcmVtb3ZhbCBpcyBjb21wbGV0ZS4K
ICAgICAgKi8KICAgICBNb2RlbC5wcm90b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24gKGlkLCBjYWxs
YmFjaykgewotICAgIHRoaXMuc3RvcmFnZS5yZW1vdmUoaWQsIGNhbGxiYWNrKTsKKyAgICAgICAg
dGhpcy5zdG9yYWdlLnJlbW92ZShpZCwgY2FsbGJhY2spOwogICAgIH07CiAKICAgICAvKioKQEAg
LTg2LDM0ICs4NywzNCBAQAogICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIFRoZSBj
YWxsYmFjayB0byBmaXJlIHdoZW4gdGhlIHN0b3JhZ2UgaXMgd2lwZWQuCiAgICAgICovCiAgICAg
TW9kZWwucHJvdG90eXBlLnJlbW92ZUFsbCA9IGZ1bmN0aW9uIChjYWxsYmFjaykgewotICAgIHRo
aXMuc3RvcmFnZS5kcm9wKGNhbGxiYWNrKTsKKyAgICAgICAgdGhpcy5zdG9yYWdlLmRyb3AoY2Fs
bGJhY2spOwogICAgIH07CiAKICAgICAvKioKICAgICAgKiBSZXR1cm5zIGEgY291bnQgb2YgYWxs
IHRvZG9zCiAgICAgICovCi0gICAgTW9kZWwucHJvdG90eXBlLmdldENvdW50ID0gZnVuY3Rpb24g
KCkgewotICAgIHZhciB0b2RvcyA9IHsKLSAgICBhY3RpdmU6IDAsCi0gICAgY29tcGxldGVkOiAw
LAotICAgIHRvdGFsOiAwCi0gICAgfTsKLQotICAgIHRoaXMuc3RvcmFnZS5maW5kQWxsKGZ1bmN0
aW9uIChkYXRhKSB7Ci0gICAgZGF0YS5lYWNoKGZ1bmN0aW9uICh0b2RvKSB7Ci0gICAgaWYgKHRv
ZG8uY29tcGxldGVkID09PSAxKSB7Ci0gICAgdG9kb3MuY29tcGxldGVkKys7Ci0gICAgfSBlbHNl
IHsKLSAgICB0b2Rvcy5hY3RpdmUrKzsKLSAgICB9CisgICAgTW9kZWwucHJvdG90eXBlLmdldENv
dW50ID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7CisgICAgICAgIHZhciB0b2RvcyA9IHsKKyAgICAg
ICAgICAgIGFjdGl2ZTogMCwKKyAgICAgICAgICAgIGNvbXBsZXRlZDogMCwKKyAgICAgICAgICAg
IHRvdGFsOiAwCisgICAgICAgIH07CiAKLSAgICB0b2Rvcy50b3RhbCsrOwotICAgIH0pOwotICAg
IH0pOworICAgICAgICB0aGlzLnN0b3JhZ2UuZmluZEFsbChmdW5jdGlvbiAoZGF0YSkgeworICAg
ICAgICAgICAgZGF0YS5mb3JFYWNoKGZ1bmN0aW9uICh0b2RvKSB7CisgICAgICAgICAgICAgICAg
aWYgKHRvZG8uY29tcGxldGVkKSB7CisgICAgICAgICAgICAgICAgICAgIHRvZG9zLmNvbXBsZXRl
ZCsrOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHRvZG9z
LmFjdGl2ZSsrOworICAgICAgICAgICAgICAgIH0KIAotICAgIHJldHVybiB0b2RvczsKKyAgICAg
ICAgICAgICAgICB0b2Rvcy50b3RhbCsrOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBj
YWxsYmFjayh0b2Rvcyk7CisgICAgICAgIH0pOwogICAgIH07CiAKICAgICAvLyBFeHBvcnQgdG8g
d2luZG93CisgICAgd2luZG93LmFwcCA9IHdpbmRvdy5hcHAgfHwge307CiAgICAgd2luZG93LmFw
cC5Nb2RlbCA9IE1vZGVsOwogfSkod2luZG93KTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxh
anMvanMvc3RvcmUuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL2pzL3N0b3JlLmpzCmluZGV4IDlhN2Rh
MGQ5YmI3N2FhNDFhM2Q4ZTlmZThiYzc2MzZkNjcwYWIxYTcuLmZlNjgyYzg4ZjhhNGU3NTRkMDg2
NzczYzUxZGQ1OWMzMmJiM2YzNzggMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvanMvc3Rv
cmUuanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9qcy9zdG9yZS5qcwpAQCAtMiw4ICsyLDcgQEAK
IChmdW5jdGlvbiAod2luZG93KSB7CiAgICAgJ3VzZSBzdHJpY3QnOwogCi0gICAgdmFyIGxvY2Fs
U3RvcmFnZSA9IHt9OyAvLyBCZW5jaG1hcmsgbW9kaWZpY2F0aW9uOiBBdm9pZCBkaXNrIGFjY2Vz
cy4KLQorICAgIHZhciBNZW1vcnlTdG9yYWdlID0ge307CiAgICAgLyoqCiAgICAgICogQ3JlYXRl
cyBhIG5ldyBjbGllbnQgc2lkZSBzdG9yYWdlIG9iamVjdCBhbmQgd2lsbCBjcmVhdGUgYW4gZW1w
dHkKICAgICAgKiBjb2xsZWN0aW9uIGlmIG5vIGNvbGxlY3Rpb24gYWxyZWFkeSBleGlzdHMuCkBA
IC0xMywyMiArMTIsMTkgQEAKICAgICAgKiByZWFsIGxpZmUgeW91IHByb2JhYmx5IHdvdWxkIGJl
IG1ha2luZyBBSkFYIGNhbGxzCiAgICAgICovCiAgICAgZnVuY3Rpb24gU3RvcmUobmFtZSwgY2Fs
bGJhY2spIHsKLSAgICB2YXIgZGF0YTsKLSAgICB2YXIgZGJOYW1lOwotCi0gICAgY2FsbGJhY2sg
PSBjYWxsYmFjayB8fCBmdW5jdGlvbiAoKSB7fTsKKyAgICAgICAgY2FsbGJhY2sgPSBjYWxsYmFj
ayB8fCBmdW5jdGlvbiAoKSB7fTsKIAotICAgIGRiTmFtZSA9IHRoaXMuX2RiTmFtZSA9IG5hbWU7
CisgICAgICAgIHRoaXMuX2RiTmFtZSA9IG5hbWU7CiAKLSAgICBpZiAoIWxvY2FsU3RvcmFnZVtk
Yk5hbWVdKSB7Ci0gICAgZGF0YSA9IHsKLSAgICB0b2RvczogW10KLSAgICB9OworICAgICAgICBp
ZiAoIU1lbW9yeVN0b3JhZ2VbbmFtZV0pIHsKKyAgICAgICAgICAgIHZhciBkYXRhID0geworICAg
ICAgICAgICAgICAgIHRvZG9zOiBbXQorICAgICAgICAgICAgfTsKIAotICAgIGxvY2FsU3RvcmFn
ZVtkYk5hbWVdID0gSlNPTi5zdHJpbmdpZnkoZGF0YSk7Ci0gICAgfQorICAgICAgICAgICAgTWVt
b3J5U3RvcmFnZVtuYW1lXSA9IEpTT04uc3RyaW5naWZ5KGRhdGEpOworICAgICAgICB9CiAKLSAg
ICBjYWxsYmFjay5jYWxsKHRoaXMsIEpTT04ucGFyc2UobG9jYWxTdG9yYWdlW2RiTmFtZV0pKTsK
KyAgICAgICAgY2FsbGJhY2suY2FsbCh0aGlzLCBKU09OLnBhcnNlKE1lbW9yeVN0b3JhZ2VbbmFt
ZV0pKTsKICAgICB9CiAKICAgICAvKioKQEAgLTQ1LDE3ICs0MSwyMCBAQAogICAgICAqIH0pOwog
ICAgICAqLwogICAgIFN0b3JlLnByb3RvdHlwZS5maW5kID0gZnVuY3Rpb24gKHF1ZXJ5LCBjYWxs
YmFjaykgewotICAgIGlmICghY2FsbGJhY2spIHsKLSAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
dmFyIHRvZG9zID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2VbdGhpcy5fZGJOYW1lXSkudG9kb3M7
Ci0KLSAgICBjYWxsYmFjay5jYWxsKHRoaXMsIHRvZG9zLmZpbHRlcihmdW5jdGlvbiAodG9kbykg
ewotICAgIGZvciAodmFyIHEgaW4gcXVlcnkpIHsKLSAgICByZXR1cm4gcXVlcnlbcV0gPT09IHRv
ZG9bcV07Ci0gICAgfQotICAgIH0pKTsKKyAgICAgICAgaWYgKCFjYWxsYmFjaykgeworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdmFyIHRvZG9zID0gSlNPTi5wYXJz
ZShNZW1vcnlTdG9yYWdlW3RoaXMuX2RiTmFtZV0pLnRvZG9zOworCisgICAgICAgIGNhbGxiYWNr
LmNhbGwodGhpcywgdG9kb3MuZmlsdGVyKGZ1bmN0aW9uICh0b2RvKSB7CisgICAgICAgICAgICBm
b3IgKHZhciBxIGluIHF1ZXJ5KSB7CisgICAgICAgICAgICAgICAgaWYgKHF1ZXJ5W3FdICE9PSB0
b2RvW3FdKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
fSkpOwogICAgIH07CiAKICAgICAvKioKQEAgLTY0LDQ4ICs2Myw0NSBAQAogICAgICAqIEBwYXJh
bSB7ZnVuY3Rpb259IGNhbGxiYWNrIFRoZSBjYWxsYmFjayB0byBmaXJlIHVwb24gcmV0cmlldmlu
ZyBkYXRhCiAgICAgICovCiAgICAgU3RvcmUucHJvdG90eXBlLmZpbmRBbGwgPSBmdW5jdGlvbiAo
Y2FsbGJhY2spIHsKLSAgICBjYWxsYmFjayA9IGNhbGxiYWNrIHx8IGZ1bmN0aW9uICgpIHt9Owot
ICAgIGNhbGxiYWNrLmNhbGwodGhpcywgSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2VbdGhpcy5fZGJO
YW1lXSkudG9kb3MpOworICAgICAgICBjYWxsYmFjayA9IGNhbGxiYWNrIHx8IGZ1bmN0aW9uICgp
IHt9OworICAgICAgICBjYWxsYmFjay5jYWxsKHRoaXMsIEpTT04ucGFyc2UoTWVtb3J5U3RvcmFn
ZVt0aGlzLl9kYk5hbWVdKS50b2Rvcyk7CiAgICAgfTsKIAogICAgIC8qKgogICAgICAqIFdpbGwg
c2F2ZSB0aGUgZ2l2ZW4gZGF0YSB0byB0aGUgREIuIElmIG5vIGl0ZW0gZXhpc3RzIGl0IHdpbGwg
Y3JlYXRlIGEgbmV3CiAgICAgICogaXRlbSwgb3RoZXJ3aXNlIGl0J2xsIHNpbXBseSB1cGRhdGUg
YW4gZXhpc3RpbmcgaXRlbSdzIHByb3BlcnRpZXMKICAgICAgKgotICAgICAqIEBwYXJhbSB7bnVt
YmVyfSBpZCBBbiBvcHRpb25hbCBwYXJhbSB0byBlbnRlciBhbiBJRCBvZiBhbiBpdGVtIHRvIHVw
ZGF0ZQotICAgICAqIEBwYXJhbSB7b2JqZWN0fSBkYXRhIFRoZSBkYXRhIHRvIHNhdmUgYmFjayBp
bnRvIHRoZSBEQgorICAgICAqIEBwYXJhbSB7b2JqZWN0fSB1cGRhdGVEYXRhIFRoZSBkYXRhIHRv
IHNhdmUgYmFjayBpbnRvIHRoZSBEQgogICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNr
IFRoZSBjYWxsYmFjayB0byBmaXJlIGFmdGVyIHNhdmluZworICAgICAqIEBwYXJhbSB7bnVtYmVy
fSBpZCBBbiBvcHRpb25hbCBwYXJhbSB0byBlbnRlciBhbiBJRCBvZiBhbiBpdGVtIHRvIHVwZGF0
ZQogICAgICAqLwotICAgIFN0b3JlLnByb3RvdHlwZS5zYXZlID0gZnVuY3Rpb24gKGlkLCB1cGRh
dGVEYXRhLCBjYWxsYmFjaykgewotICAgIHZhciBkYXRhID0gSlNPTi5wYXJzZShsb2NhbFN0b3Jh
Z2VbdGhpcy5fZGJOYW1lXSk7Ci0gICAgdmFyIHRvZG9zID0gZGF0YS50b2RvczsKLQotICAgIGNh
bGxiYWNrID0gY2FsbGJhY2sgfHwgZnVuY3Rpb24gKCkge307Ci0KLSAgICAvLyBJZiBhbiBJRCB3
YXMgYWN0dWFsbHkgZ2l2ZW4sIGZpbmQgdGhlIGl0ZW0gYW5kIHVwZGF0ZSBlYWNoIHByb3BlcnR5
Ci0gICAgaWYgKHR5cGVvZiBpZCAhPT0gJ29iamVjdCcpIHsKLSAgICBmb3IgKHZhciBpID0gMDsg
aSA8IHRvZG9zLmxlbmd0aDsgaSsrKSB7Ci0gICAgaWYgKHRvZG9zW2ldLmlkID09IGlkKSB7Ci0g
ICAgZm9yICh2YXIgeCBpbiB1cGRhdGVEYXRhKSB7Ci0gICAgdG9kb3NbaV1beF0gPSB1cGRhdGVE
YXRhW3hdOwotICAgIH0KLSAgICB9Ci0gICAgfQotCi0gICAgbG9jYWxTdG9yYWdlW3RoaXMuX2Ri
TmFtZV0gPSBKU09OLnN0cmluZ2lmeShkYXRhKTsKLSAgICBjYWxsYmFjay5jYWxsKHRoaXMsIEpT
T04ucGFyc2UobG9jYWxTdG9yYWdlW3RoaXMuX2RiTmFtZV0pLnRvZG9zKTsKLSAgICB9IGVsc2Ug
ewotICAgIGNhbGxiYWNrID0gdXBkYXRlRGF0YTsKLQotICAgIHVwZGF0ZURhdGEgPSBpZDsKLQot
ICAgIC8vIEdlbmVyYXRlIGFuIElECi0gICAgdXBkYXRlRGF0YS5pZCA9IG5ldyBEYXRlKCkuZ2V0
VGltZSgpOwotCi0gICAgdG9kb3MucHVzaCh1cGRhdGVEYXRhKTsKLSAgICBsb2NhbFN0b3JhZ2Vb
dGhpcy5fZGJOYW1lXSA9IEpTT04uc3RyaW5naWZ5KGRhdGEpOwotICAgIGNhbGxiYWNrLmNhbGwo
dGhpcywgW3VwZGF0ZURhdGFdKTsKLSAgICB9CisgICAgU3RvcmUucHJvdG90eXBlLnNhdmUgPSBm
dW5jdGlvbiAodXBkYXRlRGF0YSwgY2FsbGJhY2ssIGlkKSB7CisgICAgICAgIHZhciBkYXRhID0g
SlNPTi5wYXJzZShNZW1vcnlTdG9yYWdlW3RoaXMuX2RiTmFtZV0pOworICAgICAgICB2YXIgdG9k
b3MgPSBkYXRhLnRvZG9zOworCisgICAgICAgIGNhbGxiYWNrID0gY2FsbGJhY2sgfHwgZnVuY3Rp
b24gKCkge307CisKKyAgICAgICAgLy8gSWYgYW4gSUQgd2FzIGFjdHVhbGx5IGdpdmVuLCBmaW5k
IHRoZSBpdGVtIGFuZCB1cGRhdGUgZWFjaCBwcm9wZXJ0eQorICAgICAgICBpZiAoaWQpIHsKKyAg
ICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdG9kb3MubGVuZ3RoOyBpKyspIHsKKyAgICAg
ICAgICAgICAgICBpZiAodG9kb3NbaV0uaWQgPT09IGlkKSB7CisgICAgICAgICAgICAgICAgICAg
IGZvciAodmFyIGtleSBpbiB1cGRhdGVEYXRhKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0
b2Rvc1tpXVtrZXldID0gdXBkYXRlRGF0YVtrZXldOworICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgTWVtb3J5U3RvcmFnZVt0aGlzLl9kYk5hbWVdID0gSlNPTi5zdHJp
bmdpZnkoZGF0YSk7CisgICAgICAgICAgICBjYWxsYmFjay5jYWxsKHRoaXMsIHRvZG9zKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIEdlbmVyYXRlIGFuIElECisgICAgICAgICAg
ICB1cGRhdGVEYXRhLmlkID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7CisKKyAgICAgICAgICAgIHRv
ZG9zLnB1c2godXBkYXRlRGF0YSk7CisgICAgICAgICAgICBNZW1vcnlTdG9yYWdlW3RoaXMuX2Ri
TmFtZV0gPSBKU09OLnN0cmluZ2lmeShkYXRhKTsKKyAgICAgICAgICAgIGNhbGxiYWNrLmNhbGwo
dGhpcywgW3VwZGF0ZURhdGFdKTsKKyAgICAgICAgfQogICAgIH07CiAKICAgICAvKioKQEAgLTEx
NSwxOCArMTExLDE4IEBACiAgICAgICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGNh
bGxiYWNrIHRvIGZpcmUgYWZ0ZXIgc2F2aW5nCiAgICAgICovCiAgICAgU3RvcmUucHJvdG90eXBl
LnJlbW92ZSA9IGZ1bmN0aW9uIChpZCwgY2FsbGJhY2spIHsKLSAgICB2YXIgZGF0YSA9IEpTT04u
cGFyc2UobG9jYWxTdG9yYWdlW3RoaXMuX2RiTmFtZV0pOwotICAgIHZhciB0b2RvcyA9IGRhdGEu
dG9kb3M7Ci0KLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRvZG9zLmxlbmd0aDsgaSsrKSB7Ci0g
ICAgaWYgKHRvZG9zW2ldLmlkID09IGlkKSB7Ci0gICAgdG9kb3Muc3BsaWNlKGksIDEpOwotICAg
IGJyZWFrOwotICAgIH0KLSAgICB9Ci0KLSAgICBsb2NhbFN0b3JhZ2VbdGhpcy5fZGJOYW1lXSA9
IEpTT04uc3RyaW5naWZ5KGRhdGEpOwotICAgIGNhbGxiYWNrLmNhbGwodGhpcywgSlNPTi5wYXJz
ZShsb2NhbFN0b3JhZ2VbdGhpcy5fZGJOYW1lXSkudG9kb3MpOworICAgICAgICB2YXIgZGF0YSA9
IEpTT04ucGFyc2UoTWVtb3J5U3RvcmFnZVt0aGlzLl9kYk5hbWVdKTsKKyAgICAgICAgdmFyIHRv
ZG9zID0gZGF0YS50b2RvczsKKworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRvZG9zLmxl
bmd0aDsgaSsrKSB7CisgICAgICAgICAgICBpZiAodG9kb3NbaV0uaWQgPT0gaWQpIHsKKyAgICAg
ICAgICAgICAgICB0b2Rvcy5zcGxpY2UoaSwgMSk7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBNZW1vcnlTdG9yYWdlW3RoaXMuX2Ri
TmFtZV0gPSBKU09OLnN0cmluZ2lmeShkYXRhKTsKKyAgICAgICAgY2FsbGJhY2suY2FsbCh0aGlz
LCB0b2Rvcyk7CiAgICAgfTsKIAogICAgIC8qKgpAQCAtMTM1LDEwICsxMzEsMTIgQEAKICAgICAg
KiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgdG8gZmlyZSBhZnRlciBk
cm9wcGluZyB0aGUgZGF0YQogICAgICAqLwogICAgIFN0b3JlLnByb3RvdHlwZS5kcm9wID0gZnVu
Y3Rpb24gKGNhbGxiYWNrKSB7Ci0gICAgbG9jYWxTdG9yYWdlW3RoaXMuX2RiTmFtZV0gPSBKU09O
LnN0cmluZ2lmeSh7dG9kb3M6IFtdfSk7Ci0gICAgY2FsbGJhY2suY2FsbCh0aGlzLCBKU09OLnBh
cnNlKGxvY2FsU3RvcmFnZVt0aGlzLl9kYk5hbWVdKS50b2Rvcyk7CisgICAgICAgIHZhciBkYXRh
ID0ge3RvZG9zOiBbXX07CisgICAgICAgIE1lbW9yeVN0b3JhZ2VbdGhpcy5fZGJOYW1lXSA9IEpT
T04uc3RyaW5naWZ5KGRhdGEpOworICAgICAgICBjYWxsYmFjay5jYWxsKHRoaXMsIGRhdGEudG9k
b3MpOwogICAgIH07CiAKICAgICAvLyBFeHBvcnQgdG8gd2luZG93CisgICAgd2luZG93LmFwcCA9
IHdpbmRvdy5hcHAgfHwge307CiAgICAgd2luZG93LmFwcC5TdG9yZSA9IFN0b3JlOwogfSkod2lu
ZG93KTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvanMvdGVtcGxhdGUuanMgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBs
ZXMvdmFuaWxsYWpzL2pzL3RlbXBsYXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQzNzI0YzY1Mjk1MmI1NTdi
YjYyMWNhMGJhMGRiYTA1ZmQ1Zjk4MDAKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxs
YWpzL2pzL3RlbXBsYXRlLmpzCkBAIC0wLDAgKzEsMTE0IEBACisvKmpzaGludCBsYXhicmVhazp0
cnVlICovCisoZnVuY3Rpb24gKHdpbmRvdykgeworICAgICd1c2Ugc3RyaWN0JzsKKworICAgIHZh
ciBodG1sRXNjYXBlcyA9IHsKKyAgICAgICAgJyYnOiAnJmFtcDsnLAorICAgICAgICAnPCc6ICcm
bHQ7JywKKyAgICAgICAgJz4nOiAnJmd0OycsCisgICAgICAgICciJzogJyZxdW90OycsCisgICAg
ICAgICdcJyc6ICcmI3gyNzsnLAorICAgICAgICAnYCc6ICcmI3g2MDsnCisgICAgfTsKKworICAg
IHZhciBlc2NhcGVIdG1sQ2hhciA9IGZ1bmN0aW9uIChjaHIpIHsKKyAgICAgICAgcmV0dXJuIGh0
bWxFc2NhcGVzW2Nocl07CisgICAgfTsKKworICAgIHZhciByZVVuZXNjYXBlZEh0bWwgPSAvWyY8
PiInYF0vZzsKKyAgICB2YXIgcmVIYXNVbmVzY2FwZWRIdG1sID0gbmV3IFJlZ0V4cChyZVVuZXNj
YXBlZEh0bWwuc291cmNlKTsKKworICAgIHZhciBlc2NhcGUgPSBmdW5jdGlvbiAoc3RyaW5nKSB7
CisgICAgICAgIHJldHVybiAoc3RyaW5nICYmIHJlSGFzVW5lc2NhcGVkSHRtbC50ZXN0KHN0cmlu
ZykpCisgICAgICAgICAgICA/IHN0cmluZy5yZXBsYWNlKHJlVW5lc2NhcGVkSHRtbCwgZXNjYXBl
SHRtbENoYXIpCisgICAgICAgICAgICA6IHN0cmluZzsKKyAgICB9OworCisgICAgLyoqCisgICAg
ICogU2V0cyB1cCBkZWZhdWx0cyBmb3IgYWxsIHRoZSBUZW1wbGF0ZSBtZXRob2RzIHN1Y2ggYXMg
YSBkZWZhdWx0IHRlbXBsYXRlCisgICAgICoKKyAgICAgKiBAY29uc3RydWN0b3IKKyAgICAgKi8K
KyAgICBmdW5jdGlvbiBUZW1wbGF0ZSgpIHsKKyAgICAgICAgdGhpcy5kZWZhdWx0VGVtcGxhdGUK
KyAgICAgICAgPSAgICAnPGxpIGRhdGEtaWQ9Int7aWR9fSIgY2xhc3M9Int7Y29tcGxldGVkfX0i
PicKKyAgICAgICAgKyAgICAgICAgJzxkaXYgY2xhc3M9InZpZXciPicKKyAgICAgICAgKyAgICAg
ICAgICAgICc8aW5wdXQgY2xhc3M9InRvZ2dsZSIgdHlwZT0iY2hlY2tib3giIHt7Y2hlY2tlZH19
PicKKyAgICAgICAgKyAgICAgICAgICAgICc8bGFiZWw+e3t0aXRsZX19PC9sYWJlbD4nCisgICAg
ICAgICsgICAgICAgICAgICAnPGJ1dHRvbiBjbGFzcz0iZGVzdHJveSI+PC9idXR0b24+JworICAg
ICAgICArICAgICAgICAnPC9kaXY+JworICAgICAgICArICAgICc8L2xpPic7CisgICAgfQorCisg
ICAgLyoqCisgICAgICogQ3JlYXRlcyBhbiA8bGk+IEhUTUwgc3RyaW5nIGFuZCByZXR1cm5zIGl0
IGZvciBwbGFjZW1lbnQgaW4geW91ciBhcHAuCisgICAgICoKKyAgICAgKiBOT1RFOiBJbiByZWFs
IGxpZmUgeW91IHNob3VsZCBiZSB1c2luZyBhIHRlbXBsYXRpbmcgZW5naW5lIHN1Y2ggYXMgTXVz
dGFjaGUKKyAgICAgKiBvciBIYW5kbGViYXJzLCBob3dldmVyLCB0aGlzIGlzIGEgdmFuaWxsYSBK
UyBleGFtcGxlLgorICAgICAqCisgICAgICogQHBhcmFtIHtvYmplY3R9IGRhdGEgVGhlIG9iamVj
dCBjb250YWluaW5nIGtleXMgeW91IHdhbnQgdG8gZmluZCBpbiB0aGUKKyAgICAgKiAgICAgICAg
ICAgICAgICAgICAgICB0ZW1wbGF0ZSB0byByZXBsYWNlLgorICAgICAqIEByZXR1cm5zIHtzdHJp
bmd9IEhUTUwgU3RyaW5nIG9mIGFuIDxsaT4gZWxlbWVudAorICAgICAqCisgICAgICogQGV4YW1w
bGUKKyAgICAgKiB2aWV3LnNob3coeworICAgICAqICAgIGlkOiAxLAorICAgICAqICAgIHRpdGxl
OiAiSGVsbG8gV29ybGQiLAorICAgICAqICAgIGNvbXBsZXRlZDogMCwKKyAgICAgKiB9KTsKKyAg
ICAgKi8KKyAgICBUZW1wbGF0ZS5wcm90b3R5cGUuc2hvdyA9IGZ1bmN0aW9uIChkYXRhKSB7Cisg
ICAgICAgIHZhciBpLCBsOworICAgICAgICB2YXIgdmlldyA9ICcnOworCisgICAgICAgIGZvciAo
aSA9IDAsIGwgPSBkYXRhLmxlbmd0aDsgaSA8IGw7IGkrKykgeworICAgICAgICAgICAgdmFyIHRl
bXBsYXRlID0gdGhpcy5kZWZhdWx0VGVtcGxhdGU7CisgICAgICAgICAgICB2YXIgY29tcGxldGVk
ID0gJyc7CisgICAgICAgICAgICB2YXIgY2hlY2tlZCA9ICcnOworCisgICAgICAgICAgICBpZiAo
ZGF0YVtpXS5jb21wbGV0ZWQpIHsKKyAgICAgICAgICAgICAgICBjb21wbGV0ZWQgPSAnY29tcGxl
dGVkJzsKKyAgICAgICAgICAgICAgICBjaGVja2VkID0gJ2NoZWNrZWQnOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB0ZW1wbGF0ZSA9IHRlbXBsYXRlLnJlcGxhY2UoJ3t7aWR9fScsIGRh
dGFbaV0uaWQpOworICAgICAgICAgICAgdGVtcGxhdGUgPSB0ZW1wbGF0ZS5yZXBsYWNlKCd7e3Rp
dGxlfX0nLCBlc2NhcGUoZGF0YVtpXS50aXRsZSkpOworICAgICAgICAgICAgdGVtcGxhdGUgPSB0
ZW1wbGF0ZS5yZXBsYWNlKCd7e2NvbXBsZXRlZH19JywgY29tcGxldGVkKTsKKyAgICAgICAgICAg
IHRlbXBsYXRlID0gdGVtcGxhdGUucmVwbGFjZSgne3tjaGVja2VkfX0nLCBjaGVja2VkKTsKKwor
ICAgICAgICAgICAgdmlldyA9IHZpZXcgKyB0ZW1wbGF0ZTsKKyAgICAgICAgfQorCisgICAgICAg
IHJldHVybiB2aWV3OworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBEaXNwbGF5cyBhIGNvdW50
ZXIgb2YgaG93IG1hbnkgdG8gZG9zIGFyZSBsZWZ0IHRvIGNvbXBsZXRlCisgICAgICoKKyAgICAg
KiBAcGFyYW0ge251bWJlcn0gYWN0aXZlVG9kb3MgVGhlIG51bWJlciBvZiBhY3RpdmUgdG9kb3Mu
CisgICAgICogQHJldHVybnMge3N0cmluZ30gU3RyaW5nIGNvbnRhaW5pbmcgdGhlIGNvdW50Cisg
ICAgICovCisgICAgVGVtcGxhdGUucHJvdG90eXBlLml0ZW1Db3VudGVyID0gZnVuY3Rpb24gKGFj
dGl2ZVRvZG9zKSB7CisgICAgICAgIHZhciBwbHVyYWwgPSBhY3RpdmVUb2RvcyA9PT0gMSA/ICcn
IDogJ3MnOworCisgICAgICAgIHJldHVybiAnPHN0cm9uZz4nICsgYWN0aXZlVG9kb3MgKyAnPC9z
dHJvbmc+IGl0ZW0nICsgcGx1cmFsICsgJyBsZWZ0JzsKKyAgICB9OworCisgICAgLyoqCisgICAg
ICogVXBkYXRlcyB0aGUgdGV4dCB3aXRoaW4gdGhlICJDbGVhciBjb21wbGV0ZWQiIGJ1dHRvbgor
ICAgICAqCisgICAgICogQHBhcmFtICB7W3R5cGVdfSBjb21wbGV0ZWRUb2RvcyBUaGUgbnVtYmVy
IG9mIGNvbXBsZXRlZCB0b2Rvcy4KKyAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBTdHJpbmcgY29u
dGFpbmluZyB0aGUgY291bnQKKyAgICAgKi8KKyAgICBUZW1wbGF0ZS5wcm90b3R5cGUuY2xlYXJD
b21wbGV0ZWRCdXR0b24gPSBmdW5jdGlvbiAoY29tcGxldGVkVG9kb3MpIHsKKyAgICAgICAgaWYg
KGNvbXBsZXRlZFRvZG9zID4gMCkgeworICAgICAgICAgICAgcmV0dXJuICdDbGVhciBjb21wbGV0
ZWQnOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuICcnOworICAgICAgICB9
CisgICAgfTsKKworICAgIC8vIEV4cG9ydCB0byB3aW5kb3cKKyAgICB3aW5kb3cuYXBwID0gd2lu
ZG93LmFwcCB8fCB7fTsKKyAgICB3aW5kb3cuYXBwLlRlbXBsYXRlID0gVGVtcGxhdGU7Cit9KSh3
aW5kb3cpOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9qcy92aWV3LmpzIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVz
L3ZhbmlsbGFqcy9qcy92aWV3LmpzCmluZGV4IGQ4MmIwOTgyN2ZmNDQzYTA2NDY4ZTUzNWIyYTRj
M2NiYjMzNDMxYTIuLjY4ZGU4MzA1MTM2ZDE4YzkwYmQ2MGE2N2RiYjVmNTQzNWE3MTEyZGIgMTAw
NjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
dmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvanMvdmlldy5qcworKysgYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxs
YWpzL2pzL3ZpZXcuanMKQEAgLTEsOTEgKzEsMjE5IEBACi0vKmpzaGludCBsYXhicmVhazp0cnVl
ICovCisvKmdsb2JhbCBxcywgcXNhLCAkb24sICRwYXJlbnQsICRkZWxlZ2F0ZSAqLworCiAoZnVu
Y3Rpb24gKHdpbmRvdykgewogICAgICd1c2Ugc3RyaWN0JzsKIAogICAgIC8qKgotICAgICAqIFNl
dHMgdXAgZGVmYXVsdHMgZm9yIGFsbCB0aGUgVmlldyBtZXRob2RzIHN1Y2ggYXMgYSBkZWZhdWx0
IHRlbXBsYXRlCi0gICAgICoKLSAgICAgKiBAY29uc3RydWN0b3IKLSAgICAgKi8KLSAgICBmdW5j
dGlvbiBWaWV3KCkgewotICAgIHRoaXMuZGVmYXVsdFRlbXBsYXRlCi0gICAgPSAgICAnPGxpIGRh
dGEtaWQ9Int7aWR9fSIgY2xhc3M9Int7Y29tcGxldGVkfX0iPicKLSAgICArICAgICAgICAnPGRp
diBjbGFzcz0idmlldyI+JwotICAgICsgICAgICAgICAgICAnPGlucHV0IGNsYXNzPSJ0b2dnbGUi
IHR5cGU9ImNoZWNrYm94IiB7e2NoZWNrZWR9fT4nCi0gICAgKyAgICAgICAgICAgICc8bGFiZWw+
e3t0aXRsZX19PC9sYWJlbD4nCi0gICAgKyAgICAgICAgICAgICc8YnV0dG9uIGNsYXNzPSJkZXN0
cm95Ij48L2J1dHRvbj4nCi0gICAgKyAgICAgICAgJzwvZGl2PicKLSAgICArICAgICc8L2xpPic7
Ci0gICAgfQorICAgICAgICAgKiBWaWV3IHRoYXQgYWJzdHJhY3RzIGF3YXkgdGhlIGJyb3dzZXIn
cyBET00gY29tcGxldGVseS4KKyAgICAgICAgICogSXQgaGFzIHR3byBzaW1wbGUgZW50cnkgcG9p
bnRzOgorICAgICAgICAgKgorICAgICAgICAgKiAgIC0gYmluZChldmVudE5hbWUsIGhhbmRsZXIp
CisgICAgICAgICAqICAgICBUYWtlcyBhIHRvZG8gYXBwbGljYXRpb24gZXZlbnQgYW5kIHJlZ2lz
dGVycyB0aGUgaGFuZGxlcgorICAgICAgICAgKiAgIC0gcmVuZGVyKGNvbW1hbmQsIHBhcmFtZXRl
ck9iamVjdCkKKyAgICAgICAgICogICAgIFJlbmRlcnMgdGhlIGdpdmVuIGNvbW1hbmQgd2l0aCB0
aGUgb3B0aW9ucworICAgICAgICAgKi8KKyAgICBmdW5jdGlvbiBWaWV3KHRlbXBsYXRlKSB7Cisg
ICAgICAgIHRoaXMudGVtcGxhdGUgPSB0ZW1wbGF0ZTsKIAotICAgIC8qKgotICAgICAqIENyZWF0
ZXMgYW4gPGxpPiBIVE1MIHN0cmluZyBhbmQgcmV0dXJucyBpdCBmb3IgcGxhY2VtZW50IGluIHlv
dXIgYXBwLgotICAgICAqCi0gICAgICogTk9URTogSW4gcmVhbCBsaWZlIHlvdSBzaG91bGQgYmUg
dXNpbmcgYSB0ZW1wbGF0aW5nIGVuZ2luZSBzdWNoIGFzIE11c3RhY2hlCi0gICAgICogb3IgSGFu
ZGxlYmFycywgaG93ZXZlciwgdGhpcyBpcyBhIHZhbmlsbGEgSlMgZXhhbXBsZS4KLSAgICAgKgot
ICAgICAqIEBwYXJhbSB7b2JqZWN0fSBkYXRhIFRoZSBvYmplY3QgY29udGFpbmluZyBrZXlzIHlv
dSB3YW50IHRvIGZpbmQgaW4gdGhlCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgdGVtcGxh
dGUgdG8gcmVwbGFjZS4KLSAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBIVE1MIFN0cmluZyBvZiBh
biA8bGk+IGVsZW1lbnQKLSAgICAgKgotICAgICAqIEBleGFtcGxlCi0gICAgICogdmlldy5zaG93
KHsKLSAgICAgKiAgICBpZDogMSwKLSAgICAgKiAgICB0aXRsZTogIkhlbGxvIFdvcmxkIiwKLSAg
ICAgKiAgICBjb21wbGV0ZWQ6IDAsCi0gICAgICogfSk7Ci0gICAgICovCi0gICAgVmlldy5wcm90
b3R5cGUuc2hvdyA9IGZ1bmN0aW9uIChkYXRhKSB7Ci0gICAgdmFyIGksIGw7Ci0gICAgdmFyIHZp
ZXcgPSAnJzsKLQotICAgIGZvciAoaSA9IDAsIGwgPSBkYXRhLmxlbmd0aDsgaSA8IGw7IGkrKykg
ewotICAgIHZhciB0ZW1wbGF0ZSA9IHRoaXMuZGVmYXVsdFRlbXBsYXRlOwotICAgIHZhciBjb21w
bGV0ZWQgPSAnJzsKLSAgICB2YXIgY2hlY2tlZCA9ICcnOwotCi0gICAgaWYgKGRhdGFbaV0uY29t
cGxldGVkID09PSAxKSB7Ci0gICAgY29tcGxldGVkID0gJ2NvbXBsZXRlZCc7Ci0gICAgY2hlY2tl
ZCA9ICdjaGVja2VkJzsKKyAgICAgICAgdGhpcy5FTlRFUl9LRVkgPSAxMzsKKyAgICAgICAgdGhp
cy5FU0NBUEVfS0VZID0gMjc7CisKKyAgICAgICAgdGhpcy4kdG9kb0xpc3QgPSBxcygnLnRvZG8t
bGlzdCcpOworICAgICAgICB0aGlzLiR0b2RvSXRlbUNvdW50ZXIgPSBxcygnLnRvZG8tY291bnQn
KTsKKyAgICAgICAgdGhpcy4kY2xlYXJDb21wbGV0ZWQgPSBxcygnLmNsZWFyLWNvbXBsZXRlZCcp
OworICAgICAgICB0aGlzLiRtYWluID0gcXMoJy5tYWluJyk7CisgICAgICAgIHRoaXMuJGZvb3Rl
ciA9IHFzKCcuZm9vdGVyJyk7CisgICAgICAgIHRoaXMuJHRvZ2dsZUFsbCA9IHFzKCcudG9nZ2xl
LWFsbCcpOworICAgICAgICB0aGlzLiRuZXdUb2RvID0gcXMoJy5uZXctdG9kbycpOwogICAgIH0K
IAotICAgIHRlbXBsYXRlID0gdGVtcGxhdGUucmVwbGFjZSgne3tpZH19JywgZGF0YVtpXS5pZCk7
Ci0gICAgdGVtcGxhdGUgPSB0ZW1wbGF0ZS5yZXBsYWNlKCd7e3RpdGxlfX0nLCBkYXRhW2ldLnRp
dGxlKTsKLSAgICB0ZW1wbGF0ZSA9IHRlbXBsYXRlLnJlcGxhY2UoJ3t7Y29tcGxldGVkfX0nLCBj
b21wbGV0ZWQpOwotICAgIHRlbXBsYXRlID0gdGVtcGxhdGUucmVwbGFjZSgne3tjaGVja2VkfX0n
LCBjaGVja2VkKTsKKyAgICBWaWV3LnByb3RvdHlwZS5fcmVtb3ZlSXRlbSA9IGZ1bmN0aW9uIChp
ZCkgeworICAgICAgICB2YXIgZWxlbSA9IHFzKCdbZGF0YS1pZD0iJyArIGlkICsgJyJdJyk7CiAK
LSAgICB2aWV3ID0gdmlldyArIHRlbXBsYXRlOwotICAgIH0KKyAgICAgICAgaWYgKGVsZW0pIHsK
KyAgICAgICAgICAgIHRoaXMuJHRvZG9MaXN0LnJlbW92ZUNoaWxkKGVsZW0pOworICAgICAgICB9
CisgICAgfTsKIAotICAgIHJldHVybiB2aWV3OworICAgIFZpZXcucHJvdG90eXBlLl9jbGVhckNv
bXBsZXRlZEJ1dHRvbiA9IGZ1bmN0aW9uIChjb21wbGV0ZWRDb3VudCwgdmlzaWJsZSkgeworICAg
ICAgICB0aGlzLiRjbGVhckNvbXBsZXRlZC5pbm5lckhUTUwgPSB0aGlzLnRlbXBsYXRlLmNsZWFy
Q29tcGxldGVkQnV0dG9uKGNvbXBsZXRlZENvdW50KTsKKyAgICAgICAgdGhpcy4kY2xlYXJDb21w
bGV0ZWQuc3R5bGUuZGlzcGxheSA9IHZpc2libGUgPyAnYmxvY2snIDogJ25vbmUnOwogICAgIH07
CiAKLSAgICAvKioKLSAgICAgKiBEaXNwbGF5cyBhIGNvdW50ZXIgb2YgaG93IG1hbnkgdG8gZG9z
IGFyZSBsZWZ0IHRvIGNvbXBsZXRlCi0gICAgICoKLSAgICAgKiBAcGFyYW0ge251bWJlcn0gYWN0
aXZlVG9kb3MgVGhlIG51bWJlciBvZiBhY3RpdmUgdG9kb3MuCi0gICAgICogQHJldHVybnMge3N0
cmluZ30gU3RyaW5nIGNvbnRhaW5pbmcgdGhlIGNvdW50Ci0gICAgICovCi0gICAgVmlldy5wcm90
b3R5cGUuaXRlbUNvdW50ZXIgPSBmdW5jdGlvbiAoYWN0aXZlVG9kb3MpIHsKLSAgICB2YXIgcGx1
cmFsID0gYWN0aXZlVG9kb3MgPT09IDEgPyAnJyA6ICdzJzsKLQotICAgIHJldHVybiAnPHN0cm9u
Zz4nICsgYWN0aXZlVG9kb3MgKyAnPC9zdHJvbmc+IGl0ZW0nICsgcGx1cmFsICsgJyBsZWZ0JzsK
KyAgICBWaWV3LnByb3RvdHlwZS5fc2V0RmlsdGVyID0gZnVuY3Rpb24gKGN1cnJlbnRQYWdlKSB7
CisgICAgICAgIHFzKCcuZmlsdGVycyAuc2VsZWN0ZWQnKS5jbGFzc05hbWUgPSAnJzsKKyAgICAg
ICAgcXMoJy5maWx0ZXJzIFtocmVmPSIjLycgKyBjdXJyZW50UGFnZSArICciXScpLmNsYXNzTmFt
ZSA9ICdzZWxlY3RlZCc7CiAgICAgfTsKIAotICAgIC8qKgotICAgICAqIFVwZGF0ZXMgdGhlIHRl
eHQgd2l0aGluIHRoZSAiQ2xlYXIgY29tcGxldGVkIiBidXR0b24KLSAgICAgKgotICAgICAqIEBw
YXJhbSAge1t0eXBlXX0gY29tcGxldGVkVG9kb3MgVGhlIG51bWJlciBvZiBjb21wbGV0ZWQgdG9k
b3MuCi0gICAgICogQHJldHVybnMge3N0cmluZ30gU3RyaW5nIGNvbnRhaW5pbmcgdGhlIGNvdW50
Ci0gICAgICovCi0gICAgVmlldy5wcm90b3R5cGUuY2xlYXJDb21wbGV0ZWRCdXR0b24gPSBmdW5j
dGlvbiAoY29tcGxldGVkVG9kb3MpIHsKLSAgICBpZiAoY29tcGxldGVkVG9kb3MgPiAwKSB7Ci0g
ICAgcmV0dXJuICdDbGVhciBjb21wbGV0ZWQgKCcgKyBjb21wbGV0ZWRUb2RvcyArICcpJzsKLSAg
ICB9IGVsc2UgewotICAgIHJldHVybiAnJzsKLSAgICB9CisgICAgVmlldy5wcm90b3R5cGUuX2Vs
ZW1lbnRDb21wbGV0ZSA9IGZ1bmN0aW9uIChpZCwgY29tcGxldGVkKSB7CisgICAgICAgIHZhciBs
aXN0SXRlbSA9IHFzKCdbZGF0YS1pZD0iJyArIGlkICsgJyJdJyk7CisKKyAgICAgICAgaWYgKCFs
aXN0SXRlbSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgbGlz
dEl0ZW0uY2xhc3NOYW1lID0gY29tcGxldGVkID8gJ2NvbXBsZXRlZCcgOiAnJzsKKworICAgICAg
ICAvLyBJbiBjYXNlIGl0IHdhcyB0b2dnbGVkIGZyb20gYW4gZXZlbnQgYW5kIG5vdCBieSBjbGlj
a2luZyB0aGUgY2hlY2tib3gKKyAgICAgICAgcXMoJ2lucHV0JywgbGlzdEl0ZW0pLmNoZWNrZWQg
PSBjb21wbGV0ZWQ7CisgICAgfTsKKworICAgIFZpZXcucHJvdG90eXBlLl9lZGl0SXRlbSA9IGZ1
bmN0aW9uIChpZCwgdGl0bGUpIHsKKyAgICAgICAgdmFyIGxpc3RJdGVtID0gcXMoJ1tkYXRhLWlk
PSInICsgaWQgKyAnIl0nKTsKKworICAgICAgICBpZiAoIWxpc3RJdGVtKSB7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBsaXN0SXRlbS5jbGFzc05hbWUgPSBsaXN0
SXRlbS5jbGFzc05hbWUgKyAnIGVkaXRpbmcnOworCisgICAgICAgIHZhciBpbnB1dCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7CisgICAgICAgIGlucHV0LmNsYXNzTmFtZSA9ICdl
ZGl0JzsKKworICAgICAgICBsaXN0SXRlbS5hcHBlbmRDaGlsZChpbnB1dCk7CisgICAgICAgIGlu
cHV0LmZvY3VzKCk7CisgICAgICAgIGlucHV0LnZhbHVlID0gdGl0bGU7CisgICAgfTsKKworICAg
IFZpZXcucHJvdG90eXBlLl9lZGl0SXRlbURvbmUgPSBmdW5jdGlvbiAoaWQsIHRpdGxlKSB7Cisg
ICAgICAgIHZhciBsaXN0SXRlbSA9IHFzKCdbZGF0YS1pZD0iJyArIGlkICsgJyJdJyk7CisKKyAg
ICAgICAgaWYgKCFsaXN0SXRlbSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgdmFyIGlucHV0ID0gcXMoJ2lucHV0LmVkaXQnLCBsaXN0SXRlbSk7CisgICAgICAg
IGxpc3RJdGVtLnJlbW92ZUNoaWxkKGlucHV0KTsKKworICAgICAgICBsaXN0SXRlbS5jbGFzc05h
bWUgPSBsaXN0SXRlbS5jbGFzc05hbWUucmVwbGFjZSgnZWRpdGluZycsICcnKTsKKworICAgICAg
ICBxc2EoJ2xhYmVsJywgbGlzdEl0ZW0pLmZvckVhY2goZnVuY3Rpb24gKGxhYmVsKSB7CisgICAg
ICAgICAgICBsYWJlbC50ZXh0Q29udGVudCA9IHRpdGxlOworICAgICAgICB9KTsKKyAgICB9Owor
CisgICAgVmlldy5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKHZpZXdDbWQsIHBhcmFtZXRl
cikgeworICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CisgICAgICAgIHZhciB2aWV3Q29tbWFuZHMg
PSB7CisgICAgICAgICAgICBzaG93RW50cmllczogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg
ICAgIHNlbGYuJHRvZG9MaXN0LmlubmVySFRNTCA9IHNlbGYudGVtcGxhdGUuc2hvdyhwYXJhbWV0
ZXIpOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHJlbW92ZUl0ZW06IGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgICAgICAgICBzZWxmLl9yZW1vdmVJdGVtKHBhcmFtZXRlcik7CisgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgdXBkYXRlRWxlbWVudENvdW50OiBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICAgICAgc2VsZi4kdG9kb0l0ZW1Db3VudGVyLmlubmVySFRNTCA9IHNlbGYudGVt
cGxhdGUuaXRlbUNvdW50ZXIocGFyYW1ldGVyKTsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICBjbGVhckNvbXBsZXRlZEJ1dHRvbjogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHNl
bGYuX2NsZWFyQ29tcGxldGVkQnV0dG9uKHBhcmFtZXRlci5jb21wbGV0ZWQsIHBhcmFtZXRlci52
aXNpYmxlKTsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBjb250ZW50QmxvY2tWaXNpYmls
aXR5OiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgc2VsZi4kbWFpbi5zdHlsZS5kaXNw
bGF5ID0gc2VsZi4kZm9vdGVyLnN0eWxlLmRpc3BsYXkgPSBwYXJhbWV0ZXIudmlzaWJsZSA/ICdi
bG9jaycgOiAnbm9uZSc7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgdG9nZ2xlQWxsOiBm
dW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgc2VsZi4kdG9nZ2xlQWxsLmNoZWNrZWQgPSBw
YXJhbWV0ZXIuY2hlY2tlZDsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBzZXRGaWx0ZXI6
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBzZWxmLl9zZXRGaWx0ZXIocGFyYW1ldGVy
KTsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBjbGVhck5ld1RvZG86IGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgICAgICAgICBzZWxmLiRuZXdUb2RvLnZhbHVlID0gJyc7CisgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgZWxlbWVudENvbXBsZXRlOiBmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICAgICAgc2VsZi5fZWxlbWVudENvbXBsZXRlKHBhcmFtZXRlci5pZCwgcGFyYW1ldGVyLmNv
bXBsZXRlZCk7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgZWRpdEl0ZW06IGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgICAgICBzZWxmLl9lZGl0SXRlbShwYXJhbWV0ZXIuaWQsIHBhcmFt
ZXRlci50aXRsZSk7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgZWRpdEl0ZW1Eb25lOiBm
dW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgc2VsZi5fZWRpdEl0ZW1Eb25lKHBhcmFtZXRl
ci5pZCwgcGFyYW1ldGVyLnRpdGxlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAg
ICAgICB2aWV3Q29tbWFuZHNbdmlld0NtZF0oKTsKKyAgICB9OworCisgICAgVmlldy5wcm90b3R5
cGUuX2l0ZW1JZCA9IGZ1bmN0aW9uIChlbGVtZW50KSB7CisgICAgICAgIHZhciBsaSA9ICRwYXJl
bnQoZWxlbWVudCwgJ2xpJyk7CisgICAgICAgIHJldHVybiBwYXJzZUludChsaS5kYXRhc2V0Lmlk
LCAxMCk7CisgICAgfTsKKworICAgIFZpZXcucHJvdG90eXBlLl9iaW5kSXRlbUVkaXREb25lID0g
ZnVuY3Rpb24gKGhhbmRsZXIpIHsKKyAgICAgICAgdmFyIHNlbGYgPSB0aGlzOworICAgICAgICAk
ZGVsZWdhdGUoc2VsZi4kdG9kb0xpc3QsICdsaSAuZWRpdCcsICdibHVyJywgZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgaWYgKCF0aGlzLmRhdGFzZXQuaXNjYW5jZWxlZCkgeworICAgICAgICAg
ICAgICAgIGhhbmRsZXIoeworICAgICAgICAgICAgICAgICAgICBpZDogc2VsZi5faXRlbUlkKHRo
aXMpLAorICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGhpcy52YWx1ZQorICAgICAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKworICAgICAgICAkZGVsZWdhdGUo
c2VsZi4kdG9kb0xpc3QsICdsaSAuZWRpdCcsICdrZXlwcmVzcycsIGZ1bmN0aW9uIChldmVudCkg
eworICAgICAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IHNlbGYuRU5URVJfS0VZKSB7Cisg
ICAgICAgICAgICAgICAgLy8gUmVtb3ZlIHRoZSBjdXJzb3IgZnJvbSB0aGUgaW5wdXQgd2hlbiB5
b3UgaGl0IGVudGVyIGp1c3QgbGlrZSBpZiBpdAorICAgICAgICAgICAgICAgIC8vIHdlcmUgYSBy
ZWFsIGZvcm0KKyAgICAgICAgICAgICAgICB0aGlzLmJsdXIoKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfSk7CisgICAgfTsKKworICAgIFZpZXcucHJvdG90eXBlLl9iaW5kSXRlbUVkaXRDYW5j
ZWwgPSBmdW5jdGlvbiAoaGFuZGxlcikgeworICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CisgICAg
ICAgICRkZWxlZ2F0ZShzZWxmLiR0b2RvTGlzdCwgJ2xpIC5lZGl0JywgJ2tleXVwJywgZnVuY3Rp
b24gKGV2ZW50KSB7CisgICAgICAgICAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0gc2VsZi5FU0NB
UEVfS0VZKSB7CisgICAgICAgICAgICAgICAgdGhpcy5kYXRhc2V0LmlzY2FuY2VsZWQgPSB0cnVl
OworICAgICAgICAgICAgICAgIHRoaXMuYmx1cigpOworCisgICAgICAgICAgICAgICAgaGFuZGxl
cih7aWQ6IHNlbGYuX2l0ZW1JZCh0aGlzKX0pOworICAgICAgICAgICAgfQorICAgICAgICB9KTsK
KyAgICB9OworCisgICAgVmlldy5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uIChldmVudCwgaGFu
ZGxlcikgeworICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CisgICAgICAgIGlmIChldmVudCA9PT0g
J25ld1RvZG8nKSB7CisgICAgICAgICAgICAkb24oc2VsZi4kbmV3VG9kbywgJ2NoYW5nZScsIGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBoYW5kbGVyKHNlbGYuJG5ld1RvZG8udmFsdWUp
OworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgfSBlbHNlIGlmIChldmVudCA9PT0gJ3JlbW92
ZUNvbXBsZXRlZCcpIHsKKyAgICAgICAgICAgICRvbihzZWxmLiRjbGVhckNvbXBsZXRlZCwgJ2Ns
aWNrJywgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGhhbmRsZXIoKTsKKyAgICAgICAg
ICAgIH0pOworCisgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQgPT09ICd0b2dnbGVBbGwnKSB7Cisg
ICAgICAgICAgICAkb24oc2VsZi4kdG9nZ2xlQWxsLCAnY2xpY2snLCBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICAgICAgaGFuZGxlcih7Y29tcGxldGVkOiB0aGlzLmNoZWNrZWR9KTsKKyAgICAg
ICAgICAgIH0pOworCisgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQgPT09ICdpdGVtRWRpdCcpIHsK
KyAgICAgICAgICAgICRkZWxlZ2F0ZShzZWxmLiR0b2RvTGlzdCwgJ2xpIGxhYmVsJywgJ2RibGNs
aWNrJywgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGhhbmRsZXIoe2lkOiBzZWxmLl9p
dGVtSWQodGhpcyl9KTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgIH0gZWxzZSBpZiAoZXZl
bnQgPT09ICdpdGVtUmVtb3ZlJykgeworICAgICAgICAgICAgJGRlbGVnYXRlKHNlbGYuJHRvZG9M
aXN0LCAnLmRlc3Ryb3knLCAnY2xpY2snLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAg
aGFuZGxlcih7aWQ6IHNlbGYuX2l0ZW1JZCh0aGlzKX0pOworICAgICAgICAgICAgfSk7CisKKyAg
ICAgICAgfSBlbHNlIGlmIChldmVudCA9PT0gJ2l0ZW1Ub2dnbGUnKSB7CisgICAgICAgICAgICAk
ZGVsZWdhdGUoc2VsZi4kdG9kb0xpc3QsICcudG9nZ2xlJywgJ2NsaWNrJywgZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgICAgIGhhbmRsZXIoeworICAgICAgICAgICAgICAgICAgICBpZDogc2Vs
Zi5faXRlbUlkKHRoaXMpLAorICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZWQ6IHRoaXMuY2hl
Y2tlZAorICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgfSBl
bHNlIGlmIChldmVudCA9PT0gJ2l0ZW1FZGl0RG9uZScpIHsKKyAgICAgICAgICAgIHNlbGYuX2Jp
bmRJdGVtRWRpdERvbmUoaGFuZGxlcik7CisKKyAgICAgICAgfSBlbHNlIGlmIChldmVudCA9PT0g
J2l0ZW1FZGl0Q2FuY2VsJykgeworICAgICAgICAgICAgc2VsZi5fYmluZEl0ZW1FZGl0Q2FuY2Vs
KGhhbmRsZXIpOworICAgICAgICB9CiAgICAgfTsKIAogICAgIC8vIEV4cG9ydCB0byB3aW5kb3cK
KyAgICB3aW5kb3cuYXBwID0gd2luZG93LmFwcCB8fCB7fTsKICAgICB3aW5kb3cuYXBwLlZpZXcg
PSBWaWV3OwotfSkod2luZG93KTsKK30od2luZG93KSk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFu
aWxsYWpzL25vZGVfbW9kdWxlcy90b2RvbXZjLWFwcC1jc3MvaW5kZXguY3NzIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3Zh
bmlsbGFqcy9ub2RlX21vZHVsZXMvdG9kb212Yy1hcHAtY3NzL2luZGV4LmNzcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yMmFiOWUyY2FkNzY5NjZkZWI4YmU0MmU5NzdjNDMwMjQxYzQzNDc3Ci0tLSAvZGV2L251bGwK
KysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5p
bGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9ub2RlX21vZHVsZXMvdG9kb212Yy1hcHAtY3NzL2luZGV4
LmNzcwpAQCAtMCwwICsxLDM3OCBAQAoraHRtbCwKK2JvZHkgeworICAgIG1hcmdpbjogMDsKKyAg
ICBwYWRkaW5nOiAwOworfQorCitidXR0b24geworICAgIG1hcmdpbjogMDsKKyAgICBwYWRkaW5n
OiAwOworICAgIGJvcmRlcjogMDsKKyAgICBiYWNrZ3JvdW5kOiBub25lOworICAgIGZvbnQtc2l6
ZTogMTAwJTsKKyAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7CisgICAgZm9udC1mYW1pbHk6
IGluaGVyaXQ7CisgICAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7CisgICAgY29sb3I6IGluaGVyaXQ7
CisgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOworICAgIGFwcGVhcmFuY2U6IG5vbmU7Cisg
ICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CisgICAgLW1vei1mb250LXNt
b290aGluZzogYW50aWFsaWFzZWQ7CisgICAgZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwor
fQorCitib2R5IHsKKyAgICBmb250OiAxNHB4ICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwg
QXJpYWwsIHNhbnMtc2VyaWY7CisgICAgbGluZS1oZWlnaHQ6IDEuNGVtOworICAgIGJhY2tncm91
bmQ6ICNmNWY1ZjU7CisgICAgY29sb3I6ICM0ZDRkNGQ7CisgICAgbWluLXdpZHRoOiAyMzBweDsK
KyAgICBtYXgtd2lkdGg6IDU1MHB4OworICAgIG1hcmdpbjogMCBhdXRvOworICAgIC13ZWJraXQt
Zm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOworICAgIC1tb3otZm9udC1zbW9vdGhpbmc6IGFu
dGlhbGlhc2VkOworICAgIGZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKKyAgICBmb250LXdl
aWdodDogMzAwOworfQorCitidXR0b24sCitpbnB1dFt0eXBlPSJjaGVja2JveCJdIHsKKyAgICBv
dXRsaW5lOiBub25lOworfQorCisuaGlkZGVuIHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCisu
dG9kb2FwcCB7CisgICAgYmFja2dyb3VuZDogI2ZmZjsKKyAgICBtYXJnaW46IDEzMHB4IDAgNDBw
eCAwOworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICBib3gtc2hhZG93OiAwIDJweCA0cHgg
MCByZ2JhKDAsIDAsIDAsIDAuMiksCisgICAgICAgICAgICAgICAgMCAyNXB4IDUwcHggMCByZ2Jh
KDAsIDAsIDAsIDAuMSk7Cit9CisKKy50b2RvYXBwIGlucHV0Ojotd2Via2l0LWlucHV0LXBsYWNl
aG9sZGVyIHsKKyAgICBmb250LXN0eWxlOiBpdGFsaWM7CisgICAgZm9udC13ZWlnaHQ6IDMwMDsK
KyAgICBjb2xvcjogI2U2ZTZlNjsKK30KKworLnRvZG9hcHAgaW5wdXQ6Oi1tb3otcGxhY2Vob2xk
ZXIgeworICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKKyAgICBmb250LXdlaWdodDogMzAwOworICAg
IGNvbG9yOiAjZTZlNmU2OworfQorCisudG9kb2FwcCBpbnB1dDo6aW5wdXQtcGxhY2Vob2xkZXIg
eworICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKKyAgICBmb250LXdlaWdodDogMzAwOworICAgIGNv
bG9yOiAjZTZlNmU2OworfQorCisudG9kb2FwcCBoMSB7CisgICAgcG9zaXRpb246IGFic29sdXRl
OworICAgIHRvcDogLTE1NXB4OworICAgIHdpZHRoOiAxMDAlOworICAgIGZvbnQtc2l6ZTogMTAw
cHg7CisgICAgZm9udC13ZWlnaHQ6IDEwMDsKKyAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CisgICAg
Y29sb3I6IHJnYmEoMTc1LCA0NywgNDcsIDAuMTUpOworICAgIC13ZWJraXQtdGV4dC1yZW5kZXJp
bmc6IG9wdGltaXplTGVnaWJpbGl0eTsKKyAgICAtbW96LXRleHQtcmVuZGVyaW5nOiBvcHRpbWl6
ZUxlZ2liaWxpdHk7CisgICAgdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTsKK30K
KworLm5ldy10b2RvLAorLmVkaXQgeworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICBtYXJn
aW46IDA7CisgICAgd2lkdGg6IDEwMCU7CisgICAgZm9udC1zaXplOiAyNHB4OworICAgIGZvbnQt
ZmFtaWx5OiBpbmhlcml0OworICAgIGZvbnQtd2VpZ2h0OiBpbmhlcml0OworICAgIGxpbmUtaGVp
Z2h0OiAxLjRlbTsKKyAgICBib3JkZXI6IDA7CisgICAgb3V0bGluZTogbm9uZTsKKyAgICBjb2xv
cjogaW5oZXJpdDsKKyAgICBwYWRkaW5nOiA2cHg7CisgICAgYm9yZGVyOiAxcHggc29saWQgIzk5
OTsKKyAgICBib3gtc2hhZG93OiBpbnNldCAwIC0xcHggNXB4IDAgcmdiYSgwLCAwLCAwLCAwLjIp
OworICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CisgICAgLXdlYmtpdC1mb250LXNtb290aGlu
ZzogYW50aWFsaWFzZWQ7CisgICAgLW1vei1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7Cisg
ICAgZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOworfQorCisubmV3LXRvZG8geworICAgIHBh
ZGRpbmc6IDE2cHggMTZweCAxNnB4IDYwcHg7CisgICAgYm9yZGVyOiBub25lOworICAgIGJhY2tn
cm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4wMDMpOworICAgIGJveC1zaGFkb3c6IGluc2V0IDAgLTJw
eCAxcHggcmdiYSgwLDAsMCwwLjAzKTsKK30KKworLm1haW4geworICAgIHBvc2l0aW9uOiByZWxh
dGl2ZTsKKyAgICB6LWluZGV4OiAyOworICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZTZlNmU2
OworfQorCitsYWJlbFtmb3I9J3RvZ2dsZS1hbGwnXSB7CisgICAgZGlzcGxheTogbm9uZTsKK30K
KworLnRvZ2dsZS1hbGwgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IC01NXB4
OworICAgIGxlZnQ6IC0xMnB4OworICAgIHdpZHRoOiA2MHB4OworICAgIGhlaWdodDogMzRweDsK
KyAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CisgICAgYm9yZGVyOiBub25lOyAvKiBNb2JpbGUgU2Fm
YXJpICovCit9CisKKy50b2dnbGUtYWxsOmJlZm9yZSB7CisgICAgY29udGVudDogJ+Kdryc7Cisg
ICAgZm9udC1zaXplOiAyMnB4OworICAgIGNvbG9yOiAjZTZlNmU2OworICAgIHBhZGRpbmc6IDEw
cHggMjdweCAxMHB4IDI3cHg7Cit9CisKKy50b2dnbGUtYWxsOmNoZWNrZWQ6YmVmb3JlIHsKKyAg
ICBjb2xvcjogIzczNzM3MzsKK30KKworLnRvZG8tbGlzdCB7CisgICAgbWFyZ2luOiAwOworICAg
IHBhZGRpbmc6IDA7CisgICAgbGlzdC1zdHlsZTogbm9uZTsKK30KKworLnRvZG8tbGlzdCBsaSB7
CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgIGZvbnQtc2l6ZTogMjRweDsKKyAgICBib3Jk
ZXItYm90dG9tOiAxcHggc29saWQgI2VkZWRlZDsKK30KKworLnRvZG8tbGlzdCBsaTpsYXN0LWNo
aWxkIHsKKyAgICBib3JkZXItYm90dG9tOiBub25lOworfQorCisudG9kby1saXN0IGxpLmVkaXRp
bmcgeworICAgIGJvcmRlci1ib3R0b206IG5vbmU7CisgICAgcGFkZGluZzogMDsKK30KKworLnRv
ZG8tbGlzdCBsaS5lZGl0aW5nIC5lZGl0IHsKKyAgICBkaXNwbGF5OiBibG9jazsKKyAgICB3aWR0
aDogNTA2cHg7CisgICAgcGFkZGluZzogMTNweCAxN3B4IDEycHggMTdweDsKKyAgICBtYXJnaW46
IDAgMCAwIDQzcHg7Cit9CisKKy50b2RvLWxpc3QgbGkuZWRpdGluZyAudmlldyB7CisgICAgZGlz
cGxheTogbm9uZTsKK30KKworLnRvZG8tbGlzdCBsaSAudG9nZ2xlIHsKKyAgICB0ZXh0LWFsaWdu
OiBjZW50ZXI7CisgICAgd2lkdGg6IDQwcHg7CisgICAgLyogYXV0bywgc2luY2Ugbm9uLVdlYktp
dCBicm93c2VycyBkb2Vzbid0IHN1cHBvcnQgaW5wdXQgc3R5bGluZyAqLworICAgIGhlaWdodDog
YXV0bzsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiAwOworICAgIGJvdHRvbTog
MDsKKyAgICBtYXJnaW46IGF1dG8gMDsKKyAgICBib3JkZXI6IG5vbmU7IC8qIE1vYmlsZSBTYWZh
cmkgKi8KKyAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CisgICAgYXBwZWFyYW5jZTogbm9u
ZTsKK30KKworLnRvZG8tbGlzdCBsaSAudG9nZ2xlOmFmdGVyIHsKKyAgICBjb250ZW50OiB1cmwo
J2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9Ii0xMCAtMTggMTAwIDEzNSI+
PGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgcj0iNTAiIGZpbGw9Im5vbmUiIHN0cm9rZT0iI2VkZWRl
ZCIgc3Ryb2tlLXdpZHRoPSIzIi8+PC9zdmc+Jyk7Cit9CisKKy50b2RvLWxpc3QgbGkgLnRvZ2ds
ZTpjaGVja2VkOmFmdGVyIHsKKyAgICBjb250ZW50OiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1
dGY4LDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iNDAiIGhl
aWdodD0iNDAiIHZpZXdCb3g9Ii0xMCAtMTggMTAwIDEzNSI+PGNpcmNsZSBjeD0iNTAiIGN5PSI1
MCIgcj0iNTAiIGZpbGw9Im5vbmUiIHN0cm9rZT0iI2JkZGFkNSIgc3Ryb2tlLXdpZHRoPSIzIi8+
PHBhdGggZmlsbD0iIzVkYzJhZiIgZD0iTTcyIDI1TDQyIDcxIDI3IDU2bC00IDQgMjAgMjAgMzQt
NTJ6Ii8+PC9zdmc+Jyk7Cit9CisKKy50b2RvLWxpc3QgbGkgbGFiZWwgeworICAgIHdoaXRlLXNw
YWNlOiBwcmUtbGluZTsKKyAgICB3b3JkLWJyZWFrOiBicmVhay1hbGw7CisgICAgcGFkZGluZzog
MTVweCA2MHB4IDE1cHggMTVweDsKKyAgICBtYXJnaW4tbGVmdDogNDVweDsKKyAgICBkaXNwbGF5
OiBibG9jazsKKyAgICBsaW5lLWhlaWdodDogMS4yOworICAgIHRyYW5zaXRpb246IGNvbG9yIDAu
NHM7Cit9CisKKy50b2RvLWxpc3QgbGkuY29tcGxldGVkIGxhYmVsIHsKKyAgICBjb2xvcjogI2Q5
ZDlkOTsKKyAgICB0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDsKK30KKworLnRvZG8tbGlz
dCBsaSAuZGVzdHJveSB7CisgICAgZGlzcGxheTogbm9uZTsKKyAgICBwb3NpdGlvbjogYWJzb2x1
dGU7CisgICAgdG9wOiAwOworICAgIHJpZ2h0OiAxMHB4OworICAgIGJvdHRvbTogMDsKKyAgICB3
aWR0aDogNDBweDsKKyAgICBoZWlnaHQ6IDQwcHg7CisgICAgbWFyZ2luOiBhdXRvIDA7CisgICAg
Zm9udC1zaXplOiAzMHB4OworICAgIGNvbG9yOiAjY2M5YTlhOworICAgIG1hcmdpbi1ib3R0b206
IDExcHg7CisgICAgdHJhbnNpdGlvbjogY29sb3IgMC4ycyBlYXNlLW91dDsKK30KKworLnRvZG8t
bGlzdCBsaSAuZGVzdHJveTpob3ZlciB7CisgICAgY29sb3I6ICNhZjViNWU7Cit9CisKKy50b2Rv
LWxpc3QgbGkgLmRlc3Ryb3k6YWZ0ZXIgeworICAgIGNvbnRlbnQ6ICfDlyc7Cit9CisKKy50b2Rv
LWxpc3QgbGk6aG92ZXIgLmRlc3Ryb3kgeworICAgIGRpc3BsYXk6IGJsb2NrOworfQorCisudG9k
by1saXN0IGxpIC5lZGl0IHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCisudG9kby1saXN0IGxp
LmVkaXRpbmc6bGFzdC1jaGlsZCB7CisgICAgbWFyZ2luLWJvdHRvbTogLTFweDsKK30KKworLmZv
b3RlciB7CisgICAgY29sb3I6ICM3Nzc7CisgICAgcGFkZGluZzogMTBweCAxNXB4OworICAgIGhl
aWdodDogMjBweDsKKyAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CisgICAgYm9yZGVyLXRvcDogMXB4
IHNvbGlkICNlNmU2ZTY7Cit9CisKKy5mb290ZXI6YmVmb3JlIHsKKyAgICBjb250ZW50OiAnJzsK
KyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgcmlnaHQ6IDA7CisgICAgYm90dG9tOiAwOwor
ICAgIGxlZnQ6IDA7CisgICAgaGVpZ2h0OiA1MHB4OworICAgIG92ZXJmbG93OiBoaWRkZW47Cisg
ICAgYm94LXNoYWRvdzogMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwKKyAgICAgICAgICAg
ICAgICAwIDhweCAwIC0zcHggI2Y2ZjZmNiwKKyAgICAgICAgICAgICAgICAwIDlweCAxcHggLTNw
eCByZ2JhKDAsIDAsIDAsIDAuMiksCisgICAgICAgICAgICAgICAgMCAxNnB4IDAgLTZweCAjZjZm
NmY2LAorICAgICAgICAgICAgICAgIDAgMTdweCAycHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMik7
Cit9CisKKy50b2RvLWNvdW50IHsKKyAgICBmbG9hdDogbGVmdDsKKyAgICB0ZXh0LWFsaWduOiBs
ZWZ0OworfQorCisudG9kby1jb3VudCBzdHJvbmcgeworICAgIGZvbnQtd2VpZ2h0OiAzMDA7Cit9
CisKKy5maWx0ZXJzIHsKKyAgICBtYXJnaW46IDA7CisgICAgcGFkZGluZzogMDsKKyAgICBsaXN0
LXN0eWxlOiBub25lOworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICByaWdodDogMDsKKyAg
ICBsZWZ0OiAwOworfQorCisuZmlsdGVycyBsaSB7CisgICAgZGlzcGxheTogaW5saW5lOworfQor
CisuZmlsdGVycyBsaSBhIHsKKyAgICBjb2xvcjogaW5oZXJpdDsKKyAgICBtYXJnaW46IDNweDsK
KyAgICBwYWRkaW5nOiAzcHggN3B4OworICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKKyAgICBi
b3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKKyAgICBib3JkZXItcmFkaXVzOiAzcHg7Cit9
CisKKy5maWx0ZXJzIGxpIGEuc2VsZWN0ZWQsCisuZmlsdGVycyBsaSBhOmhvdmVyIHsKKyAgICBi
b3JkZXItY29sb3I6IHJnYmEoMTc1LCA0NywgNDcsIDAuMSk7Cit9CisKKy5maWx0ZXJzIGxpIGEu
c2VsZWN0ZWQgeworICAgIGJvcmRlci1jb2xvcjogcmdiYSgxNzUsIDQ3LCA0NywgMC4yKTsKK30K
KworLmNsZWFyLWNvbXBsZXRlZCwKK2h0bWwgLmNsZWFyLWNvbXBsZXRlZDphY3RpdmUgeworICAg
IGZsb2F0OiByaWdodDsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgbGluZS1oZWlnaHQ6
IDIwcHg7CisgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOworICAgIGN1cnNvcjogcG9pbnRlcjsK
KyAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cit9CisKKy5jbGVhci1jb21wbGV0ZWQ6aG92ZXIgewor
ICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOworfQorCisuaW5mbyB7CisgICAgbWFyZ2lu
OiA2NXB4IGF1dG8gMDsKKyAgICBjb2xvcjogI2JmYmZiZjsKKyAgICBmb250LXNpemU6IDEwcHg7
CisgICAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpOworICAg
IHRleHQtYWxpZ246IGNlbnRlcjsKK30KKworLmluZm8gcCB7CisgICAgbGluZS1oZWlnaHQ6IDE7
Cit9CisKKy5pbmZvIGEgeworICAgIGNvbG9yOiBpbmhlcml0OworICAgIHRleHQtZGVjb3JhdGlv
bjogbm9uZTsKKyAgICBmb250LXdlaWdodDogNDAwOworfQorCisuaW5mbyBhOmhvdmVyIHsKKyAg
ICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKK30KKworLyoKKyAgICBIYWNrIHRvIHJlbW92
ZSBiYWNrZ3JvdW5kIGZyb20gTW9iaWxlIFNhZmFyaS4KKyAgICBDYW4ndCB1c2UgaXQgZ2xvYmFs
bHkgc2luY2UgaXQgZGVzdHJveXMgY2hlY2tib3hlcyBpbiBGaXJlZm94CisqLworQG1lZGlhIHNj
cmVlbiBhbmQgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzowKSB7CisgICAgLnRvZ2ds
ZS1hbGwsCisgICAgLnRvZG8tbGlzdCBsaSAudG9nZ2xlIHsKKyAgICAgICAgYmFja2dyb3VuZDog
bm9uZTsKKyAgICB9CisKKyAgICAudG9kby1saXN0IGxpIC50b2dnbGUgeworICAgICAgICBoZWln
aHQ6IDQwcHg7CisgICAgfQorCisgICAgLnRvZ2dsZS1hbGwgeworICAgICAgICAtd2Via2l0LXRy
YW5zZm9ybTogcm90YXRlKDkwZGVnKTsKKyAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcp
OworICAgICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CisgICAgICAgIGFwcGVhcmFuY2U6
IG5vbmU7CisgICAgfQorfQorCitAbWVkaWEgKG1heC13aWR0aDogNDMwcHgpIHsKKyAgICAuZm9v
dGVyIHsKKyAgICAgICAgaGVpZ2h0OiA1MHB4OworICAgIH0KKworICAgIC5maWx0ZXJzIHsKKyAg
ICAgICAgYm90dG9tOiAxMHB4OworICAgIH0KK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxh
anMvbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jhc2UuY3NzIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFq
cy9ub2RlX21vZHVsZXMvdG9kb212Yy1jb21tb24vYmFzZS5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQyNWQz
Yzg0YWM2YzZhZWYyNmI5NjgzYTJiYzEwYzYxZjk2MGM4ZgotLS0gL2Rldi9udWxsCisrKyBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFt
cGxlcy92YW5pbGxhanMvbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jhc2UuY3NzCkBAIC0w
LDAgKzEsMTQxIEBACitociB7CisgICAgbWFyZ2luOiAyMHB4IDA7CisgICAgYm9yZGVyOiAwOwor
ICAgIGJvcmRlci10b3A6IDFweCBkYXNoZWQgI2M1YzVjNTsKKyAgICBib3JkZXItYm90dG9tOiAx
cHggZGFzaGVkICNmN2Y3Zjc7Cit9CisKKy5sZWFybiBhIHsKKyAgICBmb250LXdlaWdodDogbm9y
bWFsOworICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKKyAgICBjb2xvcjogI2I4M2Y0NTsKK30K
KworLmxlYXJuIGE6aG92ZXIgeworICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOworICAg
IGNvbG9yOiAjNzg3ZTdlOworfQorCisubGVhcm4gaDMsCisubGVhcm4gaDQsCisubGVhcm4gaDUg
eworICAgIG1hcmdpbjogMTBweCAwOworICAgIGZvbnQtd2VpZ2h0OiA1MDA7CisgICAgbGluZS1o
ZWlnaHQ6IDEuMjsKKyAgICBjb2xvcjogIzAwMDsKK30KKworLmxlYXJuIGgzIHsKKyAgICBmb250
LXNpemU6IDI0cHg7Cit9CisKKy5sZWFybiBoNCB7CisgICAgZm9udC1zaXplOiAxOHB4OworfQor
CisubGVhcm4gaDUgeworICAgIG1hcmdpbi1ib3R0b206IDA7CisgICAgZm9udC1zaXplOiAxNHB4
OworfQorCisubGVhcm4gdWwgeworICAgIHBhZGRpbmc6IDA7CisgICAgbWFyZ2luOiAwIDAgMzBw
eCAyNXB4OworfQorCisubGVhcm4gbGkgeworICAgIGxpbmUtaGVpZ2h0OiAyMHB4OworfQorCisu
bGVhcm4gcCB7CisgICAgZm9udC1zaXplOiAxNXB4OworICAgIGZvbnQtd2VpZ2h0OiAzMDA7Cisg
ICAgbGluZS1oZWlnaHQ6IDEuMzsKKyAgICBtYXJnaW4tdG9wOiAwOworICAgIG1hcmdpbi1ib3R0
b206IDA7Cit9CisKKyNpc3N1ZS1jb3VudCB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKworLnF1
b3RlIHsKKyAgICBib3JkZXI6IG5vbmU7CisgICAgbWFyZ2luOiAyMHB4IDAgNjBweCAwOworfQor
CisucXVvdGUgcCB7CisgICAgZm9udC1zdHlsZTogaXRhbGljOworfQorCisucXVvdGUgcDpiZWZv
cmUgeworICAgIGNvbnRlbnQ6ICfigJwnOworICAgIGZvbnQtc2l6ZTogNTBweDsKKyAgICBvcGFj
aXR5OiAuMTU7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDogLTIwcHg7CisgICAg
bGVmdDogM3B4OworfQorCisucXVvdGUgcDphZnRlciB7CisgICAgY29udGVudDogJ+KAnSc7Cisg
ICAgZm9udC1zaXplOiA1MHB4OworICAgIG9wYWNpdHk6IC4xNTsKKyAgICBwb3NpdGlvbjogYWJz
b2x1dGU7CisgICAgYm90dG9tOiAtNDJweDsKKyAgICByaWdodDogM3B4OworfQorCisucXVvdGUg
Zm9vdGVyIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgYm90dG9tOiAtNDBweDsKKyAg
ICByaWdodDogMDsKK30KKworLnF1b3RlIGZvb3RlciBpbWcgeworICAgIGJvcmRlci1yYWRpdXM6
IDNweDsKK30KKworLnF1b3RlIGZvb3RlciBhIHsKKyAgICBtYXJnaW4tbGVmdDogNXB4OworICAg
IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cit9CisKKy5zcGVlY2gtYnViYmxlIHsKKyAgICBwb3Np
dGlvbjogcmVsYXRpdmU7CisgICAgcGFkZGluZzogMTBweDsKKyAgICBiYWNrZ3JvdW5kOiByZ2Jh
KDAsIDAsIDAsIC4wNCk7CisgICAgYm9yZGVyLXJhZGl1czogNXB4OworfQorCisuc3BlZWNoLWJ1
YmJsZTphZnRlciB7CisgICAgY29udGVudDogJyc7CisgICAgcG9zaXRpb246IGFic29sdXRlOwor
ICAgIHRvcDogMTAwJTsKKyAgICByaWdodDogMzBweDsKKyAgICBib3JkZXI6IDEzcHggc29saWQg
dHJhbnNwYXJlbnQ7CisgICAgYm9yZGVyLXRvcC1jb2xvcjogcmdiYSgwLCAwLCAwLCAuMDQpOwor
fQorCisubGVhcm4tYmFyID4gLmxlYXJuIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAg
d2lkdGg6IDI3MnB4OworICAgIHRvcDogOHB4OworICAgIGxlZnQ6IC0zMDBweDsKKyAgICBwYWRk
aW5nOiAxMHB4OworICAgIGJvcmRlci1yYWRpdXM6IDVweDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9y
OiByZ2JhKDI1NSwgMjU1LCAyNTUsIC42KTsKKyAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiBsZWZ0
OworICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDUwMG1zOworfQorCitAbWVkaWEgKG1pbi13aWR0
aDogODk5cHgpIHsKKyAgICAubGVhcm4tYmFyIHsKKyAgICAgICAgd2lkdGg6IGF1dG87CisgICAg
ICAgIHBhZGRpbmctbGVmdDogMzAwcHg7CisgICAgfQorCisgICAgLmxlYXJuLWJhciA+IC5sZWFy
biB7CisgICAgICAgIGxlZnQ6IDhweDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFu
aWxsYWpzL25vZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1vbi9iYXNlLmpzIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3Zhbmls
bGFqcy9ub2RlX21vZHVsZXMvdG9kb212Yy1jb21tb24vYmFzZS5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MWUw
MDZiYzUwMmRkYzRjNzRmNDdiZDEzYTgzOTIyNzdmODMwZGI4Ci0tLSAvZGV2L251bGwKKysrIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4
YW1wbGVzL3ZhbmlsbGFqcy9ub2RlX21vZHVsZXMvdG9kb212Yy1jb21tb24vYmFzZS5qcwpAQCAt
MCwwICsxLDI0OSBAQAorLyogZ2xvYmFsIF8gKi8KKyhmdW5jdGlvbiAoKSB7CisgICAgJ3VzZSBz
dHJpY3QnOworCisgICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqLworICAgIC8vIFVuZGVyc2Nv
cmUncyBUZW1wbGF0ZSBNb2R1bGUKKyAgICAvLyBDb3VydGVzeSBvZiB1bmRlcnNjb3JlanMub3Jn
CisgICAgdmFyIF8gPSAoZnVuY3Rpb24gKF8pIHsKKyAgICAgICAgXy5kZWZhdWx0cyA9IGZ1bmN0
aW9uIChvYmplY3QpIHsKKyAgICAgICAgICAgIGlmICghb2JqZWN0KSB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIG9iamVjdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZvciAodmFyIGFy
Z3NJbmRleCA9IDEsIGFyZ3NMZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoOyBhcmdzSW5kZXggPCBh
cmdzTGVuZ3RoOyBhcmdzSW5kZXgrKykgeworICAgICAgICAgICAgICAgIHZhciBpdGVyYWJsZSA9
IGFyZ3VtZW50c1thcmdzSW5kZXhdOworICAgICAgICAgICAgICAgIGlmIChpdGVyYWJsZSkgewor
ICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gaXRlcmFibGUpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChvYmplY3Rba2V5XSA9PSBudWxsKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgb2JqZWN0W2tleV0gPSBpdGVyYWJsZVtrZXldOworICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG9iamVjdDsKKyAgICAgICAgfQorCisg
ICAgICAgIC8vIEJ5IGRlZmF1bHQsIFVuZGVyc2NvcmUgdXNlcyBFUkItc3R5bGUgdGVtcGxhdGUg
ZGVsaW1pdGVycywgY2hhbmdlIHRoZQorICAgICAgICAvLyBmb2xsb3dpbmcgdGVtcGxhdGUgc2V0
dGluZ3MgdG8gdXNlIGFsdGVybmF0aXZlIGRlbGltaXRlcnMuCisgICAgICAgIF8udGVtcGxhdGVT
ZXR0aW5ncyA9IHsKKyAgICAgICAgICAgIGV2YWx1YXRlICAgIDogLzwlKFtcc1xTXSs/KSU+L2cs
CisgICAgICAgICAgICBpbnRlcnBvbGF0ZSA6IC88JT0oW1xzXFNdKz8pJT4vZywKKyAgICAgICAg
ICAgIGVzY2FwZSAgICAgIDogLzwlLShbXHNcU10rPyklPi9nCisgICAgICAgIH07CisKKyAgICAg
ICAgLy8gV2hlbiBjdXN0b21pemluZyBgdGVtcGxhdGVTZXR0aW5nc2AsIGlmIHlvdSBkb24ndCB3
YW50IHRvIGRlZmluZSBhbgorICAgICAgICAvLyBpbnRlcnBvbGF0aW9uLCBldmFsdWF0aW9uIG9y
IGVzY2FwaW5nIHJlZ2V4LCB3ZSBuZWVkIG9uZSB0aGF0IGlzCisgICAgICAgIC8vIGd1YXJhbnRl
ZWQgbm90IHRvIG1hdGNoLgorICAgICAgICB2YXIgbm9NYXRjaCA9IC8oLileLzsKKworICAgICAg
ICAvLyBDZXJ0YWluIGNoYXJhY3RlcnMgbmVlZCB0byBiZSBlc2NhcGVkIHNvIHRoYXQgdGhleSBj
YW4gYmUgcHV0IGludG8gYQorICAgICAgICAvLyBzdHJpbmcgbGl0ZXJhbC4KKyAgICAgICAgdmFy
IGVzY2FwZXMgPSB7CisgICAgICAgICAgICAiJyI6ICAgICAgIiciLAorICAgICAgICAgICAgJ1xc
JzogICAgICdcXCcsCisgICAgICAgICAgICAnXHInOiAgICAgJ3InLAorICAgICAgICAgICAgJ1xu
JzogICAgICduJywKKyAgICAgICAgICAgICdcdCc6ICAgICAndCcsCisgICAgICAgICAgICAnXHUy
MDI4JzogJ3UyMDI4JywKKyAgICAgICAgICAgICdcdTIwMjknOiAndTIwMjknCisgICAgICAgIH07
CisKKyAgICAgICAgdmFyIGVzY2FwZXIgPSAvXFx8J3xccnxcbnxcdHxcdTIwMjh8XHUyMDI5L2c7
CisKKyAgICAgICAgLy8gSmF2YVNjcmlwdCBtaWNyby10ZW1wbGF0aW5nLCBzaW1pbGFyIHRvIEpv
aG4gUmVzaWcncyBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgLy8gVW5kZXJzY29yZSB0ZW1wbGF0
aW5nIGhhbmRsZXMgYXJiaXRyYXJ5IGRlbGltaXRlcnMsIHByZXNlcnZlcyB3aGl0ZXNwYWNlLAor
ICAgICAgICAvLyBhbmQgY29ycmVjdGx5IGVzY2FwZXMgcXVvdGVzIHdpdGhpbiBpbnRlcnBvbGF0
ZWQgY29kZS4KKyAgICAgICAgXy50ZW1wbGF0ZSA9IGZ1bmN0aW9uKHRleHQsIGRhdGEsIHNldHRp
bmdzKSB7CisgICAgICAgICAgICB2YXIgcmVuZGVyOworICAgICAgICAgICAgc2V0dGluZ3MgPSBf
LmRlZmF1bHRzKHt9LCBzZXR0aW5ncywgXy50ZW1wbGF0ZVNldHRpbmdzKTsKKworICAgICAgICAg
ICAgLy8gQ29tYmluZSBkZWxpbWl0ZXJzIGludG8gb25lIHJlZ3VsYXIgZXhwcmVzc2lvbiB2aWEg
YWx0ZXJuYXRpb24uCisgICAgICAgICAgICB2YXIgbWF0Y2hlciA9IG5ldyBSZWdFeHAoWworICAg
ICAgICAgICAgICAgIChzZXR0aW5ncy5lc2NhcGUgfHwgbm9NYXRjaCkuc291cmNlLAorICAgICAg
ICAgICAgICAgIChzZXR0aW5ncy5pbnRlcnBvbGF0ZSB8fCBub01hdGNoKS5zb3VyY2UsCisgICAg
ICAgICAgICAgICAgKHNldHRpbmdzLmV2YWx1YXRlIHx8IG5vTWF0Y2gpLnNvdXJjZQorICAgICAg
ICAgICAgXS5qb2luKCd8JykgKyAnfCQnLCAnZycpOworCisgICAgICAgICAgICAvLyBDb21waWxl
IHRoZSB0ZW1wbGF0ZSBzb3VyY2UsIGVzY2FwaW5nIHN0cmluZyBsaXRlcmFscyBhcHByb3ByaWF0
ZWx5LgorICAgICAgICAgICAgdmFyIGluZGV4ID0gMDsKKyAgICAgICAgICAgIHZhciBzb3VyY2Ug
PSAiX19wKz0nIjsKKyAgICAgICAgICAgIHRleHQucmVwbGFjZShtYXRjaGVyLCBmdW5jdGlvbiht
YXRjaCwgZXNjYXBlLCBpbnRlcnBvbGF0ZSwgZXZhbHVhdGUsIG9mZnNldCkgeworICAgICAgICAg
ICAgICAgIHNvdXJjZSArPSB0ZXh0LnNsaWNlKGluZGV4LCBvZmZzZXQpCisgICAgICAgICAgICAg
ICAgICAgIC5yZXBsYWNlKGVzY2FwZXIsIGZ1bmN0aW9uKG1hdGNoKSB7IHJldHVybiAnXFwnICsg
ZXNjYXBlc1ttYXRjaF07IH0pOworCisgICAgICAgICAgICAgICAgaWYgKGVzY2FwZSkgeworICAg
ICAgICAgICAgICAgICAgICBzb3VyY2UgKz0gIicrXG4oKF9fdD0oIiArIGVzY2FwZSArICIpKT09
bnVsbD8nJzpfLmVzY2FwZShfX3QpKStcbiciOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBpZiAoaW50ZXJwb2xhdGUpIHsKKyAgICAgICAgICAgICAgICAgICAgc291cmNlICs9
ICInK1xuKChfX3Q9KCIgKyBpbnRlcnBvbGF0ZSArICIpKT09bnVsbD8nJzpfX3QpK1xuJyI7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChldmFsdWF0ZSkgeworICAgICAg
ICAgICAgICAgICAgICBzb3VyY2UgKz0gIic7XG4iICsgZXZhbHVhdGUgKyAiXG5fX3ArPSciOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpbmRleCA9IG9mZnNldCArIG1hdGNo
Lmxlbmd0aDsKKyAgICAgICAgICAgICAgICByZXR1cm4gbWF0Y2g7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgIHNvdXJjZSArPSAiJztcbiI7CisKKyAgICAgICAgICAgIC8vIElmIGEgdmFy
aWFibGUgaXMgbm90IHNwZWNpZmllZCwgcGxhY2UgZGF0YSB2YWx1ZXMgaW4gbG9jYWwgc2NvcGUu
CisgICAgICAgICAgICBpZiAoIXNldHRpbmdzLnZhcmlhYmxlKSBzb3VyY2UgPSAnd2l0aChvYmp8
fHt9KXtcbicgKyBzb3VyY2UgKyAnfVxuJzsKKworICAgICAgICAgICAgc291cmNlID0gInZhciBf
X3QsX19wPScnLF9faj1BcnJheS5wcm90b3R5cGUuam9pbiwiICsKKyAgICAgICAgICAgICAgICAi
cHJpbnQ9ZnVuY3Rpb24oKXtfX3ArPV9fai5jYWxsKGFyZ3VtZW50cywnJyk7fTtcbiIgKworICAg
ICAgICAgICAgICAgIHNvdXJjZSArICJyZXR1cm4gX19wO1xuIjsKKworICAgICAgICAgICAgdHJ5
IHsKKyAgICAgICAgICAgICAgICByZW5kZXIgPSBuZXcgRnVuY3Rpb24oc2V0dGluZ3MudmFyaWFi
bGUgfHwgJ29iaicsICdfJywgc291cmNlKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAg
ICAgICAgICAgICAgICBlLnNvdXJjZSA9IHNvdXJjZTsKKyAgICAgICAgICAgICAgICB0aHJvdyBl
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoZGF0YSkgcmV0dXJuIHJlbmRlcihk
YXRhLCBfKTsKKyAgICAgICAgICAgIHZhciB0ZW1wbGF0ZSA9IGZ1bmN0aW9uKGRhdGEpIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gcmVuZGVyLmNhbGwodGhpcywgZGF0YSwgXyk7CisgICAgICAg
ICAgICB9OworCisgICAgICAgICAgICAvLyBQcm92aWRlIHRoZSBjb21waWxlZCBmdW5jdGlvbiBz
b3VyY2UgYXMgYSBjb252ZW5pZW5jZSBmb3IgcHJlY29tcGlsYXRpb24uCisgICAgICAgICAgICB0
ZW1wbGF0ZS5zb3VyY2UgPSAnZnVuY3Rpb24oJyArIChzZXR0aW5ncy52YXJpYWJsZSB8fCAnb2Jq
JykgKyAnKXtcbicgKyBzb3VyY2UgKyAnfSc7CisKKyAgICAgICAgICAgIHJldHVybiB0ZW1wbGF0
ZTsKKyAgICAgICAgfTsKKworICAgICAgICByZXR1cm4gXzsKKyAgICB9KSh7fSk7CisKKyAgICBp
ZiAobG9jYXRpb24uaG9zdG5hbWUgPT09ICd0b2RvbXZjLmNvbScpIHsKKyAgICAgICAgKGZ1bmN0
aW9uKGkscyxvLGcscixhLG0pe2lbJ0dvb2dsZUFuYWx5dGljc09iamVjdCddPXI7aVtyXT1pW3Jd
fHxmdW5jdGlvbigpeworICAgICAgICAoaVtyXS5xPWlbcl0ucXx8W10pLnB1c2goYXJndW1lbnRz
KX0saVtyXS5sPTEqbmV3IERhdGUoKTthPXMuY3JlYXRlRWxlbWVudChvKSwKKyAgICAgICAgbT1z
LmdldEVsZW1lbnRzQnlUYWdOYW1lKG8pWzBdO2EuYXN5bmM9MTthLnNyYz1nO20ucGFyZW50Tm9k
ZS5pbnNlcnRCZWZvcmUoYSxtKQorICAgICAgICB9KSh3aW5kb3csZG9jdW1lbnQsJ3NjcmlwdCcs
J2h0dHBzOi8vd3d3Lmdvb2dsZS1hbmFseXRpY3MuY29tL2FuYWx5dGljcy5qcycsJ2dhJyk7Cisg
ICAgICAgIGdhKCdjcmVhdGUnLCAnVUEtMzEwODEwNjItMScsICdhdXRvJyk7CisgICAgICAgIGdh
KCdzZW5kJywgJ3BhZ2V2aWV3Jyk7CisgICAgfQorICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICov
CisKKyAgICBmdW5jdGlvbiByZWRpcmVjdCgpIHsKKyAgICAgICAgaWYgKGxvY2F0aW9uLmhvc3Ru
YW1lID09PSAndGFzdGVqcy5naXRodWIuaW8nKSB7CisgICAgICAgICAgICBsb2NhdGlvbi5ocmVm
ID0gbG9jYXRpb24uaHJlZi5yZXBsYWNlKCd0YXN0ZWpzLmdpdGh1Yi5pby90b2RvbXZjJywgJ3Rv
ZG9tdmMuY29tJyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiBmaW5kUm9vdCgp
IHsKKyAgICAgICAgdmFyIGJhc2UgPSBsb2NhdGlvbi5ocmVmLmluZGV4T2YoJ2V4YW1wbGVzLycp
OworICAgICAgICByZXR1cm4gbG9jYXRpb24uaHJlZi5zdWJzdHIoMCwgYmFzZSk7CisgICAgfQor
CisgICAgZnVuY3Rpb24gZ2V0RmlsZShmaWxlLCBjYWxsYmFjaykgeworICAgICAgICBpZiAoIWxv
Y2F0aW9uLmhvc3QpIHsKKyAgICAgICAgICAgIHJldHVybiBjb25zb2xlLmluZm8oJ01pc3MgdGhl
IGluZm8gYmFyPyBSdW4gVG9kb01WQyBmcm9tIGEgc2VydmVyIHRvIGF2b2lkIGEgY3Jvc3Mtb3Jp
Z2luIGVycm9yLicpOworICAgICAgICB9CisKKyAgICAgICAgdmFyIHhociA9IG5ldyBYTUxIdHRw
UmVxdWVzdCgpOworCisgICAgICAgIHhoci5vcGVuKCdHRVQnLCBmaW5kUm9vdCgpICsgZmlsZSwg
dHJ1ZSk7CisgICAgICAgIHhoci5zZW5kKCk7CisKKyAgICAgICAgeGhyLm9ubG9hZCA9IGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgIGlmICh4aHIuc3RhdHVzID09PSAyMDAgJiYgY2FsbGJhY2sp
IHsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayh4aHIucmVzcG9uc2VUZXh0KTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBMZWFybihsZWFybkpTT04s
IGNvbmZpZykgeworICAgICAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgTGVhcm4pKSB7CisgICAg
ICAgICAgICByZXR1cm4gbmV3IExlYXJuKGxlYXJuSlNPTiwgY29uZmlnKTsKKyAgICAgICAgfQor
CisgICAgICAgIHZhciB0ZW1wbGF0ZSwgZnJhbWV3b3JrOworCisgICAgICAgIGlmICh0eXBlb2Yg
bGVhcm5KU09OICE9PSAnb2JqZWN0JykgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAg
ICAgICBsZWFybkpTT04gPSBKU09OLnBhcnNlKGxlYXJuSlNPTik7CisgICAgICAgICAgICB9IGNh
dGNoIChlKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisKKyAgICAgICAgaWYgKGNvbmZpZykgeworICAgICAgICAgICAgdGVtcGxhdGUgPSBjb25m
aWcudGVtcGxhdGU7CisgICAgICAgICAgICBmcmFtZXdvcmsgPSBjb25maWcuZnJhbWV3b3JrOwor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0ZW1wbGF0ZSAmJiBsZWFybkpTT04udGVtcGxhdGVz
KSB7CisgICAgICAgICAgICB0ZW1wbGF0ZSA9IGxlYXJuSlNPTi50ZW1wbGF0ZXMudG9kb212YzsK
KyAgICAgICAgfQorCisgICAgICAgIGlmICghZnJhbWV3b3JrICYmIGRvY3VtZW50LnF1ZXJ5U2Vs
ZWN0b3IoJ1tkYXRhLWZyYW1ld29ya10nKSkgeworICAgICAgICAgICAgZnJhbWV3b3JrID0gZG9j
dW1lbnQucXVlcnlTZWxlY3RvcignW2RhdGEtZnJhbWV3b3JrXScpLmRhdGFzZXQuZnJhbWV3b3Jr
OworICAgICAgICB9CisKKyAgICAgICAgdGhpcy50ZW1wbGF0ZSA9IHRlbXBsYXRlOworCisgICAg
ICAgIGlmIChsZWFybkpTT04uYmFja2VuZCkgeworICAgICAgICAgICAgdGhpcy5mcmFtZXdvcmtK
U09OID0gbGVhcm5KU09OLmJhY2tlbmQ7CisgICAgICAgICAgICB0aGlzLmZyYW1ld29ya0pTT04u
aXNzdWVMYWJlbCA9IGZyYW1ld29yazsKKyAgICAgICAgICAgIHRoaXMuYXBwZW5kKHsKKyAgICAg
ICAgICAgICAgICBiYWNrZW5kOiB0cnVlCisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSBlbHNl
IGlmIChsZWFybkpTT05bZnJhbWV3b3JrXSkgeworICAgICAgICAgICAgdGhpcy5mcmFtZXdvcmtK
U09OID0gbGVhcm5KU09OW2ZyYW1ld29ya107CisgICAgICAgICAgICB0aGlzLmZyYW1ld29ya0pT
T04uaXNzdWVMYWJlbCA9IGZyYW1ld29yazsKKyAgICAgICAgICAgIHRoaXMuYXBwZW5kKCk7Cisg
ICAgICAgIH0KKworICAgICAgICB0aGlzLmZldGNoSXNzdWVDb3VudCgpOworICAgIH0KKworICAg
IExlYXJuLnByb3RvdHlwZS5hcHBlbmQgPSBmdW5jdGlvbiAob3B0cykgeworICAgICAgICB2YXIg
YXNpZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhc2lkZScpOworICAgICAgICBhc2lkZS5p
bm5lckhUTUwgPSBfLnRlbXBsYXRlKHRoaXMudGVtcGxhdGUsIHRoaXMuZnJhbWV3b3JrSlNPTik7
CisgICAgICAgIGFzaWRlLmNsYXNzTmFtZSA9ICdsZWFybic7CisKKyAgICAgICAgaWYgKG9wdHMg
JiYgb3B0cy5iYWNrZW5kKSB7CisgICAgICAgICAgICAvLyBSZW1vdmUgZGVtbyBsaW5rCisgICAg
ICAgICAgICB2YXIgc291cmNlTGlua3MgPSBhc2lkZS5xdWVyeVNlbGVjdG9yKCcuc291cmNlLWxp
bmtzJyk7CisgICAgICAgICAgICB2YXIgaGVhZGluZyA9IHNvdXJjZUxpbmtzLmZpcnN0RWxlbWVu
dENoaWxkOworICAgICAgICAgICAgdmFyIHNvdXJjZUxpbmsgPSBzb3VyY2VMaW5rcy5sYXN0RWxl
bWVudENoaWxkOworICAgICAgICAgICAgLy8gQ29ycmVjdCBsaW5rIHBhdGgKKyAgICAgICAgICAg
IHZhciBocmVmID0gc291cmNlTGluay5nZXRBdHRyaWJ1dGUoJ2hyZWYnKTsKKyAgICAgICAgICAg
IHNvdXJjZUxpbmsuc2V0QXR0cmlidXRlKCdocmVmJywgaHJlZi5zdWJzdHIoaHJlZi5sYXN0SW5k
ZXhPZignaHR0cCcpKSk7CisgICAgICAgICAgICBzb3VyY2VMaW5rcy5pbm5lckhUTUwgPSBoZWFk
aW5nLm91dGVySFRNTCArIHNvdXJjZUxpbmsub3V0ZXJIVE1MOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgLy8gTG9jYWxpemUgZGVtbyBsaW5rcworICAgICAgICAgICAgdmFyIGRlbW9M
aW5rcyA9IGFzaWRlLnF1ZXJ5U2VsZWN0b3JBbGwoJy5kZW1vLWxpbmsnKTsKKyAgICAgICAgICAg
IEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoZGVtb0xpbmtzLCBmdW5jdGlvbiAoZGVtb0xp
bmspIHsKKyAgICAgICAgICAgICAgICBpZiAoZGVtb0xpbmsuZ2V0QXR0cmlidXRlKCdocmVmJyku
c3Vic3RyKDAsIDQpICE9PSAnaHR0cCcpIHsKKyAgICAgICAgICAgICAgICAgICAgZGVtb0xpbmsu
c2V0QXR0cmlidXRlKCdocmVmJywgZmluZFJvb3QoKSArIGRlbW9MaW5rLmdldEF0dHJpYnV0ZSgn
aHJlZicpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQor
CisgICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NOYW1lID0gKGRvY3VtZW50LmJvZHkuY2xhc3NO
YW1lICsgJyBsZWFybi1iYXInKS50cmltKCk7CisgICAgICAgIGRvY3VtZW50LmJvZHkuaW5zZXJ0
QWRqYWNlbnRIVE1MKCdhZnRlckJlZ2luJywgYXNpZGUub3V0ZXJIVE1MKTsKKyAgICB9OworCisg
ICAgTGVhcm4ucHJvdG90eXBlLmZldGNoSXNzdWVDb3VudCA9IGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgdmFyIGlzc3VlTGluayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpc3N1ZS1jb3VudC1s
aW5rJyk7CisgICAgICAgIGlmIChpc3N1ZUxpbmspIHsKKyAgICAgICAgICAgIHZhciB1cmwgPSBp
c3N1ZUxpbmsuaHJlZi5yZXBsYWNlKCdodHRwczovL2dpdGh1Yi5jb20nLCAnaHR0cHM6Ly9hcGku
Z2l0aHViLmNvbS9yZXBvcycpOworICAgICAgICAgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVx
dWVzdCgpOworICAgICAgICAgICAgeGhyLm9wZW4oJ0dFVCcsIHVybCwgdHJ1ZSk7CisgICAgICAg
ICAgICB4aHIub25sb2FkID0gZnVuY3Rpb24gKGUpIHsKKyAgICAgICAgICAgICAgICB2YXIgcGFy
c2VkUmVzcG9uc2UgPSBKU09OLnBhcnNlKGUudGFyZ2V0LnJlc3BvbnNlVGV4dCk7CisgICAgICAg
ICAgICAgICAgaWYgKHBhcnNlZFJlc3BvbnNlIGluc3RhbmNlb2YgQXJyYXkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgdmFyIGNvdW50ID0gcGFyc2VkUmVzcG9uc2UubGVuZ3RoOworICAgICAgICAg
ICAgICAgICAgICBpZiAoY291bnQgIT09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlz
c3VlTGluay5pbm5lckhUTUwgPSAnVGhpcyBhcHAgaGFzICcgKyBjb3VudCArICcgb3BlbiBpc3N1
ZXMnOworICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lz
c3VlLWNvdW50Jykuc3R5bGUuZGlzcGxheSA9ICdpbmxpbmUnOworICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIHhoci5z
ZW5kKCk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgcmVkaXJlY3QoKTsKKyAgICBnZXRGaWxl
KCdsZWFybi5qc29uJywgTGVhcm4pOworfSkoKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxh
anMvcGFja2FnZS5qc29uIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9wYWNrYWdlLmpzb24KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNThjNWE4MDYzZDlkYTA5ZWU1YjVjYjJlMjczMzFkZTZiNzMzMGEyZAotLS0gL2Rldi9udWxs
CisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFu
aWxsYS1leGFtcGxlcy92YW5pbGxhanMvcGFja2FnZS5qc29uCkBAIC0wLDAgKzEsMTAgQEAKK3sK
KyAgInByaXZhdGUiOiB0cnVlLAorICAiZGVwZW5kZW5jaWVzIjogeworICAgICJ0b2RvbXZjLWNv
bW1vbiI6ICJeMS4wLjEiLAorICAgICJ0b2RvbXZjLWFwcC1jc3MiOiAiXjIuMC4xIgorICB9LAor
ICAiZGV2RGVwZW5kZW5jaWVzIjogeworICAgICJqYXNtaW5lLWNvcmUiOiAiXjIuMC4wIgorICB9
Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>308636</attachid>
            <date>2017-04-28 18:09:10 -0700</date>
            <delta_ts>2017-05-12 19:43:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170513-20170428180910.patch</filename>
            <type>text/plain</type>
            <size>31255</size>
            <attacher name="Addy Osmani">addyo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1OTYxCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGJmMTgxODE2ODc2
NDhkODA3YzE2NjQyOWQxM2MzMDZkMGM1NTk5NjQuLjRkMTM2MWNhNjQ4MGQ3ZGFkOWRmNGViOWIy
OTU3MTJhODYwOWFkM2YgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTctMDQt
MjggIEFkZHkgT3NtYW5pICA8YWRkeW9zbWFuaUBnbWFpbC5jb20+CisKKyAgICAgICAgVXBkYXRl
IHRvIFNwZWVkb21ldGVyIDIuMCB3L3VwZGF0ZWQgZnJhbWV3b3JrcyArIG5ldyB3b3JrbG9hZHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDUxMwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICBVcGRhdGUgYmVu
Y2htYXJrIHJ1bm5lciB0byBTcGVlZG9tZXRlciAyLjAgdmVyc2lvbgorCisgICAgICAgICogU3Bl
ZWRvbWV0ZXIvRnVsbC5odG1sOgorICAgICAgICAqIFNwZWVkb21ldGVyL0ludGVyYWN0aXZlUnVu
bmVyLmh0bWw6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL21haW4uanM6CisgICAg
ICAgIChjb21wdXRlU2NvcmUpOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90ZXN0
cy5qczoKKyAgICAgICAgKFN1aXRlcy5wdXNoLnByZXBhcmUpOgorICAgICAgICAoU3VpdGVzLnB1
c2guY29udGVudFdpbmRvdy5hcHAuVXRpbHMuc3RvcmUpOgorICAgICAgICAoU3VpdGVzLnB1c2gu
aS5wYXJhbXMuZW1iZXJSdW4pOiBEZWxldGVkLgorICAgICAgICAoU3VpdGVzLnB1c2guY29udGVu
dFdpbmRvdy5VdGlscy5zdG9yZSk6IERlbGV0ZWQuCisKIDIwMTctMDQtMjcgIE1pY2hhZWwgU2Fi
b2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGJhY2sgdGVzdHMgaW5hZHZl
cnRlbnRseSBkZWxldGVkIGluIHIyMDUwMzIuCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL0Z1bGwuaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvRnVs
bC5odG1sCmluZGV4IDQxOWI5ZjIxZGQ3ZmUxZDgzZjVjNjM2NDQzNGNkZGM3NTJkZmY4MmIuLmEw
MjM4ODM3MGNmNjM5NTg0NGFhYWY5OWZkMWVhNzc4NTUzMjU1ZDUgMTAwNjQ0Ci0tLSBhL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvRnVsbC5odG1sCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvRnVsbC5odG1sCkBAIC0yLDcgKzIsNyBAQAogPGh0bWw+CiA8aGVhZD4KICAg
ICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hh
cnNldD11dGYtOCI+Ci0gICAgPHRpdGxlPlNwZWVkb21ldGVyIDEuMDwvdGl0bGU+CisgICAgPHRp
dGxlPlNwZWVkb21ldGVyIDIuMDwvdGl0bGU+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSJyZXNvdXJjZXMvbWFpbi5jc3MiPgogICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvbWFp
bi5qcyIgZGVmZXI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9iZW5jaG1h
cmstcnVubmVyLmpzIiBkZWZlcj48L3NjcmlwdD4KQEAgLTE2LDcgKzE2LDcgQEAKIAogICAgIDxz
ZWN0aW9uIGlkPSJob21lIiBjbGFzcz0ic2VsZWN0ZWQiPgogICAgICAgICA8cD4KLSAgICAgICAg
ICAgIFNwZWVkb21ldGVyIGlzIGEgYnJvd3NlciBiZW5jaG1hcmsgdGhhdCBtZWFzdXJlcyB0aGUg
cmVzcG9uc2l2ZW5lc3Mgb2YgV2ViIGFwcGxpY2F0aW9ucy4KKyAgICAgICAgICAgIFNwZWVkb21l
dGVyIDIuMCBpcyBhIGJyb3dzZXIgYmVuY2htYXJrIHRoYXQgbWVhc3VyZXMgdGhlIHJlc3BvbnNp
dmVuZXNzIG9mIFdlYiBhcHBsaWNhdGlvbnMuCiAgICAgICAgICAgICBJdCB1c2VzIGRlbW8gd2Vi
IGFwcGxpY2F0aW9ucyB0byBzaW11bGF0ZSB1c2VyIGFjdGlvbnMgc3VjaCBhcyBhZGRpbmcgdG8t
ZG8gaXRlbXMuCiAgICAgICAgIDwvcD4KICAgICAgICAgPHAgaWQ9InNjcmVlbi1zaXplLXdhcm5p
bmciPjxzdHJvbmc+CkBAIC02OCw3ICs2OCw3IEBACiAgICAgICAgICAgICBUaGUgY3VycmVudCBi
ZW5jaG1hcmsgdXNlcyBUb2RvTVZDIHRvIHNpbXVsYXRlIHVzZXIgYWN0aW9ucyBmb3IgYWRkaW5n
LCBjb21wbGV0aW5nLCBhbmQgcmVtb3ZpbmcgdG8tZG8gaXRlbXMuCiAgICAgICAgICAgICBTcGVl
ZG9tZXRlciByZXBlYXRzIHRoZSBzYW1lIGFjdGlvbnMgdXNpbmcgRE9NIEFQSXMgJm1kYXNoOwog
ICAgICAgICAgICAgYSBjb3JlIHNldCBvZiB3ZWIgcGxhdGZvcm0gQVBJcyB1c2VkIGV4dGVuc2l2
ZWx5IGluIHdlYiBhcHBsaWNhdGlvbnMgJm1kYXNoOwotICAgICAgICAgICAgYXMgd2VsbCBhcyBz
aXggcG9wdWxhciBKYXZhU2NyaXB0IGZyYW1ld29ya3M6IEVtYmVyLmpzLCBCYWNrYm9uZS5qcywg
alF1ZXJ5LCBBbmd1bGFySlMsIFJlYWN0LCBhbmQgRmxpZ2h0LgorICAgICAgICAgICAgYXMgd2Vs
bCBhcyBzZXZlcmFsIHBvcHVsYXIgSmF2YVNjcmlwdCBmcmFtZXdvcmtzIGFuZCBsaWJyYXJpZXMu
CiAgICAgICAgICAgICBNYW55IG9mIHRoZXNlIGZyYW1ld29ya3MgYXJlIHVzZWQgb24gdGhlIG1v
c3QgcG9wdWxhciB3ZWJzaXRlcyBpbiB0aGUgd29ybGQsIHN1Y2ggYXMgRmFjZWJvb2sgYW5kIFR3
aXR0ZXIuCiAgICAgICAgICAgICBUaGUgcGVyZm9ybWFuY2Ugb2YgdGhlc2UgdHlwZXMgb2Ygb3Bl
cmF0aW9ucyBkZXBlbmRzIG9uIHRoZSBzcGVlZCBvZiB0aGUgRE9NIEFQSXMsIHRoZSBKYXZhU2Ny
aXB0IGVuZ2luZSwKICAgICAgICAgICAgIENTUyBzdHlsZSByZXNvbHV0aW9uLCBsYXlvdXQsIGFu
ZCBvdGhlciB0ZWNobm9sb2dpZXMuCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL0ludGVyYWN0aXZlUnVubmVyLmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL0ludGVyYWN0aXZlUnVubmVyLmh0bWwKaW5kZXggOTIwNzZhNGFjYWJlN2RiY2ViOGIwYjVi
OWU1MzM2ODg2ZDllYzQ1NS4uZmFlODk5NjVmMjM0YWU3ZDllMGU0MmI3NzhhN2FiYmFmYzkxZjVj
OSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9JbnRlcmFjdGl2ZVJ1
bm5lci5odG1sCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvSW50ZXJhY3RpdmVS
dW5uZXIuaHRtbApAQCAtMSw3ICsxLDcgQEAKIDwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVh
ZD4KLTx0aXRsZT5Eb1lvdUV2ZW5CZW5jaDwvdGl0bGU+Cis8dGl0bGU+U3BlZWRvbWV0ZXIgMi4w
IEludGVyYWN0aXZlIFJ1bm5lcjwvdGl0bGU+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JlbmNo
bWFyay1ydW5uZXIuanMiIGRlZmVyPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy90
ZXN0cy5qcyIgZGVmZXI+PC9zY3JpcHQ+CiA8c3R5bGU+CkBAIC02NiwxMyArNjYsNDggQEAgZnVu
Y3Rpb24gY3JlYXRlVUlGb3JTdWl0ZXMoc3VpdGVzLCBvbnN0ZXAsIG9ucnVuKSB7CiAKICAgICB2
YXIgYnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7CiAgICAgYnV0dG9u
LnRleHRDb250ZW50ID0gJ1J1bic7CisgICAgYnV0dG9uLmlkID0gJ3J1blN1aXRlcyc7CiAgICAg
YnV0dG9uLm9uY2xpY2sgPSBvbnJ1bjsKICAgICBjb250cm9sLmFwcGVuZENoaWxkKGJ1dHRvbik7
CiAKICAgICByZXR1cm4gY29udHJvbDsKIH0KIAorLy8gUGFyc2UgcXVlcnkgc3RyaW5nIHBhcmFt
ZXRlcnMgaW4gY2FzZSBhIHNwZWNpZmljICdzdWl0ZScgaXMgc3BlY2lmaWVkCisvLyBQYXJ0IG9m
IGVuYWJsaW5nIEludGVyYWN0aXZlUnVubmVyLmh0bWw/c3VpdGU9UmVhY3QtVG9kb01WQyBzdXBw
b3J0CisvLyBzbyB0aGF0IGFuIGluZGl2aWR1YWwgdGVzdCBjYW4gYmUgYXV0b21hdGljYWxseSBy
dW4gdmlhIGEgVVJMCit2YXIgcXVlcnlTdHJpbmcgPSAoZnVuY3Rpb24oYSkgeworICAgIGlmIChh
ID09ICcnKSByZXR1cm4ge307CisgICAgdmFyIGIgPSB7fTsKKyAgICBmb3IgKHZhciBpID0gMDsg
aSA8IGEubGVuZ3RoOyArK2kpCisgICAgeworICAgICAgICB2YXIgcD1hW2ldLnNwbGl0KCc9Jywg
Mik7CisgICAgICAgIGlmIChwLmxlbmd0aCA9PSAxKQorICAgICAgICAgICAgYltwWzBdXSA9ICcn
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBiW3BbMF1dID0gZGVjb2RlVVJJQ29tcG9uZW50
KHBbMV0ucmVwbGFjZSgvXCsvZywgJyAnKSk7CisgICAgfQorICAgIHJldHVybiBiOworfSkod2lu
ZG93LmxvY2F0aW9uLnNlYXJjaC5zdWJzdHIoMSkuc3BsaXQoJyYnKSk7CisKKy8vIERpc2FibGUg
YWxsIHN1aXRlcyBvdGhlciB0aGFuIGEgc3VpdGUgc3BlY2lmaWVkIHdpdGggYSBxdWVyeSBzdHJp
bmcKK2Z1bmN0aW9uIGRpc2FibGVBbGxTdWl0ZXNFeGNlcHQoc3VpdGVOYW1lKSB7CisgICAgaWYg
KHN1aXRlTmFtZSAhPT0gdW5kZWZpbmVkICYmIHN1aXRlTmFtZSAhPT0gJycpIHsKKyAgICAgICAg
U3VpdGVzLmZvckVhY2goZnVuY3Rpb24oZWxlbWVudCkgeworICAgICAgICAgICAgaWYgKGVsZW1l
bnQubmFtZSAhPT0gc3VpdGVOYW1lKSB7CisgICAgICAgICAgICAgICAgZWxlbWVudC5kaXNhYmxl
ZCA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0KK30KKwogZnVuY3Rp
b24gc3RhcnRUZXN0KCkgeworICAgIHZhciBxdWVyeVBhcmFtID0gcXVlcnlTdHJpbmdbJ3N1aXRl
J107CisgICAgaWYgKHF1ZXJ5UGFyYW0gIT09IHVuZGVmaW5lZCkgeworICAgICAgICAvLyBSZXNl
dCBhbGwgc2VsZWN0ZWQgb3B0aW9ucyBleGNlcHQgc2VsZWN0aW9uCisgICAgICAgIGRpc2FibGVB
bGxTdWl0ZXNFeGNlcHQocXVlcnlQYXJhbSk7CisgICAgfQorCiAgICAgdmFyIHJ1bm5lciA9IG5l
dyBCZW5jaG1hcmtSdW5uZXIoU3VpdGVzLCB7CiAgICAgICAgIHdpbGxSdW5UZXN0OiBmdW5jdGlv
biAoc3VpdGUsIHRlc3QpIHsKICAgICAgICAgICAgIHRlc3QuYW5jaG9yLmNsYXNzTGlzdC5hZGQo
J3J1bm5pbmcnKTsKQEAgLTExMiw2ICsxNDcsMTEgQEAgZnVuY3Rpb24gc3RhcnRUZXN0KCkgewog
ICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY3JlYXRlVUlGb3JTdWl0ZXMoU3VpdGVzLAog
ICAgICAgICBmdW5jdGlvbiAoKSB7IHJ1bm5lci5zdGVwKGN1cnJlbnRTdGF0ZSkudGhlbihmdW5j
dGlvbiAoc3RhdGUpIHsgY3VycmVudFN0YXRlID0gc3RhdGU7IH0pOyB9LAogICAgICAgICBmdW5j
dGlvbiAoKSB7IHJ1bm5lci5ydW5BbGxTdGVwcyhjdXJyZW50U3RhdGUpOyBjdXJyZW50U3RhdGUg
PSBudWxsOyB9KSk7CisKKyAgICBpZiAocXVlcnlQYXJhbSAhPT0gdW5kZWZpbmVkKSB7CisgICAg
ICAgIC8vIEluZGl2aWR1YWxseSBydW4gdGhlIHNwZWNpZmllZCB0ZXN0IGF1dG9tYXRpY2FsbHkK
KyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3J1blN1aXRlcycpLmNsaWNrKCk7Cisg
ICAgfQogfQogCiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIHN0YXJ0VGVzdCk7CmRp
ZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy9tYWluLmpz
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvbWFpbi5qcwppbmRleCBj
MTA3ZjI3OTVmOGVhZjFiN2JhYWViYmNmNTkxNzZmYjA4ZmYxY2JkLi5jMWZjYWJjNDExOTNhNzk4
YjhmNmFmMzMxMzMwYzUwNmEwZGVlNjY2IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy9tYWluLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL21haW4uanMKQEAgLTE1OSw3ICsxNTksNyBAQCBmdW5jdGlvbiBzdGFy
dEJlbmNobWFyaygpIHsKIH0KIAogZnVuY3Rpb24gY29tcHV0ZVNjb3JlKHRpbWUpIHsKLSAgICBy
ZXR1cm4gNjAgKiAxMDAwICogYmVuY2htYXJrQ2xpZW50LnN1aXRlc0NvdW50IC8gdGltZTsKKyAg
ICByZXR1cm4gKCg2MCAqIDEwMDAgKiBiZW5jaG1hcmtDbGllbnQuc3VpdGVzQ291bnQgLyB0aW1l
KSAvIDEwKTsKIH0KIAogZnVuY3Rpb24gc2hvd1NlY3Rpb24oc2VjdGlvbklkZW50aWZpZXIsIHB1
c2hTdGF0ZSkgewpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdGVzdHMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
ZXN0cy5qcwppbmRleCBlNmYyMzljYzk0ZWEyNDdmZGZhZmE4ZWYzMzRhNGZjYjE3NDI4MGQ5Li5m
YzY3MzBmNzQwMjY2ZjQ1MGViZGQyYmJjZWE3N2U5YjM4ZGQxNDNiIDEwMDY0NAotLS0gYS9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90ZXN0cy5qcworKysgYi9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90ZXN0cy5qcwpAQCAtMSwyMSArMSwzNiBA
QAotdmFyIG51bWJlck9mSXRlbXNUb0FkZCA9IDEwMDsKK3ZhciBudW1iZXJPZkl0ZW1zVG9BZGQg
PSAyNTsKIHZhciBTdWl0ZXMgPSBbXTsKIAorZnVuY3Rpb24gdHJpZ2dlcktleWJvYXJkRXZlbnQo
ZWwsIGtleUNvZGUpIHsKKyAgIHZhciBldmVudE9iaiA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50T2Jq
ZWN0ID8KKyAgICAgICBkb2N1bWVudC5jcmVhdGVFdmVudE9iamVjdCgpIDogZG9jdW1lbnQuY3Jl
YXRlRXZlbnQoIkV2ZW50cyIpOworCisgICB2YXIgdGVtcEtleWJvYXJkT2JqID0gZG9jdW1lbnQu
Y3JlYXRlRXZlbnQoIktleWJvYXJkRXZlbnQiKTsKKworICAgaWYgKGV2ZW50T2JqLmluaXRFdmVu
dCkgeworICAgICAgZXZlbnRPYmouaW5pdEV2ZW50KCJrZXlkb3duIiwgdHJ1ZSwgdHJ1ZSk7Cisg
ICB9CisKKyAgIGV2ZW50T2JqLmtleUNvZGUgPSBrZXlDb2RlOworICAgZXZlbnRPYmoud2hpY2gg
PSBrZXlDb2RlOworCisgICBlbC5kaXNwYXRjaEV2ZW50ID8gZWwuZGlzcGF0Y2hFdmVudChldmVu
dE9iaikgOiBlbC5maXJlRXZlbnQoIm9ua2V5ZG93biIsIGV2ZW50T2JqKTsKK30gCisKIFN1aXRl
cy5wdXNoKHsKICAgICBuYW1lOiAnVmFuaWxsYUpTLVRvZG9NVkMnLAogICAgIHVybDogJ3RvZG9t
dmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvaW5kZXguaHRtbCcsCiAgICAgcHJlcGFyZTog
ZnVuY3Rpb24gKHJ1bm5lciwgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7Ci0gICAg
ICAgIHJldHVybiBydW5uZXIud2FpdEZvckVsZW1lbnQoJyNuZXctdG9kbycpLnRoZW4oZnVuY3Rp
b24gKGVsZW1lbnQpIHsKKyAgICAgICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVudCgnLm5l
dy10b2RvJykudGhlbihmdW5jdGlvbiAoZWxlbWVudCkgewogICAgICAgICAgICAgZWxlbWVudC5m
b2N1cygpOwogICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CiAgICAgICAgIH0pOwogICAgIH0s
CiAgICAgdGVzdHM6IFsKICAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdBZGRpbmcnICsg
bnVtYmVyT2ZJdGVtc1RvQWRkICsgJ0l0ZW1zJywgZnVuY3Rpb24gKG5ld1RvZG8sIGNvbnRlbnRX
aW5kb3csIGNvbnRlbnREb2N1bWVudCkgewotICAgICAgICAgICAgdmFyIHRvZG9Db250cm9sbGVy
ID0gY29udGVudFdpbmRvdy50b2RvLmNvbnRyb2xsZXI7CiAgICAgICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IG51bWJlck9mSXRlbXNUb0FkZDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgbmV3
VG9kby52YWx1ZSA9ICdTb21ldGhpbmcgdG8gZG8gJyArIGk7Ci0gICAgICAgICAgICAgICAgdG9k
b0NvbnRyb2xsZXIuYWRkSXRlbSh7a2V5Q29kZTogdG9kb0NvbnRyb2xsZXIuRU5URVJfS0VZLCB0
YXJnZXQ6IG5ld1RvZG99KTsKKyAgICAgICAgICAgICAgICB0cmlnZ2VyS2V5Ym9hcmRFdmVudChu
ZXdUb2RvLCAxMyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0pLAogICAgICAgICBuZXcgQmVu
Y2htYXJrVGVzdFN0ZXAoJ0NvbXBsZXRpbmdBbGxJdGVtcycsIGZ1bmN0aW9uIChuZXdUb2RvLCBj
b250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKQEAgLTMyLDQ1ICs0NywxNjQgQEAgU3Vp
dGVzLnB1c2goewogfSk7CiAKIFN1aXRlcy5wdXNoKHsKLSAgICBuYW1lOiAnRW1iZXJKUy1Ub2Rv
TVZDJywKLSAgICB1cmw6ICd0b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL2lu
ZGV4Lmh0bWwnLAorICAgIG5hbWU6ICdWYW5pbGxhLUVTMjAxNS1Ub2RvTVZDJywKKyAgICB1cmw6
ICd0b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1L2luZGV4Lmh0bWwnLAogICAgIHByZXBh
cmU6IGZ1bmN0aW9uIChydW5uZXIsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgewot
ICAgICAgICByZXR1cm4gcnVubmVyLndhaXRGb3JFbGVtZW50KCcjbmV3LXRvZG8nKS50aGVuKGZ1
bmN0aW9uIChlbGVtZW50KSB7CisgICAgICAgIHJldHVybiBydW5uZXIud2FpdEZvckVsZW1lbnQo
Jy5uZXctdG9kbycpLnRoZW4oZnVuY3Rpb24gKGVsZW1lbnQpIHsKICAgICAgICAgICAgIGVsZW1l
bnQuZm9jdXMoKTsKLSAgICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAgICAgdmlld3M6
IGNvbnRlbnRXaW5kb3cuRW1iZXIuVmlldy52aWV3cywKLSAgICAgICAgICAgICAgICBlbWJlclJ1
bjogY29udGVudFdpbmRvdy5FbWJlci5ydW4sCisgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsK
KyAgICAgICAgfSk7CisgICAgfSwKKyAgICB0ZXN0czogWworICAgICAgICBuZXcgQmVuY2htYXJr
VGVzdFN0ZXAoJ0FkZGluZycgKyBudW1iZXJPZkl0ZW1zVG9BZGQgKyAnSXRlbXMnLCBmdW5jdGlv
biAobmV3VG9kbywgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CisgICAgICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IG51bWJlck9mSXRlbXNUb0FkZDsgaSsrKSB7CisgICAgICAg
ICAgICAgICAgbmV3VG9kby52YWx1ZSA9ICdTb21ldGhpbmcgdG8gZG8nICsgaTsKKyAgICAgICAg
ICAgICAgICB0cmlnZ2VyS2V5Ym9hcmRFdmVudChuZXdUb2RvLCAxMyk7CiAgICAgICAgICAgICB9
CisgICAgICAgIH0pLAorICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0NvbXBsZXRpbmdB
bGxJdGVtcycsIGZ1bmN0aW9uIChwYXJhbXMsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVu
dCkgeworICAgICAgICAgICAgdmFyIGNoZWNrYm94ZXMgPSBjb250ZW50RG9jdW1lbnQucXVlcnlT
ZWxlY3RvckFsbCgnLnRvZ2dsZScpOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBj
aGVja2JveGVzLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgICAgIGNoZWNrYm94ZXNbaV0uY2xp
Y2soKTsKKyAgICAgICAgfSksCisgICAgICAgIG5ldyBCZW5jaG1hcmtUZXN0U3RlcCgnRGVsZXRp
bmdJdGVtcycsIGZ1bmN0aW9uIChwYXJhbXMsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVu
dCkgeworICAgICAgICAgICAgdmFyIGRlbGV0ZUJ1dHRvbnMgPSBjb250ZW50RG9jdW1lbnQucXVl
cnlTZWxlY3RvckFsbCgnLmRlc3Ryb3knKTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgZGVsZXRlQnV0dG9ucy5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgICAgICBkZWxldGVCdXR0
b25zW2ldLmNsaWNrKCk7CisgICAgICAgIH0pLAorICAgIF0KK30pOworCitTdWl0ZXMucHVzaCh7
CisgICAgbmFtZTogJ1ZhbmlsbGEtRVMyMDE1LUJhYmVsLVdlYnBhY2stVG9kb01WQycsCisgICAg
dXJsOiAndG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3Qv
aW5kZXguaHRtbCcsCisgICAgcHJlcGFyZTogZnVuY3Rpb24gKHJ1bm5lciwgY29udGVudFdpbmRv
dywgY29udGVudERvY3VtZW50KSB7CisgICAgICAgIHJldHVybiBydW5uZXIud2FpdEZvckVsZW1l
bnQoJy5uZXctdG9kbycpLnRoZW4oZnVuY3Rpb24gKGVsZW1lbnQpIHsKKyAgICAgICAgICAgIGVs
ZW1lbnQuZm9jdXMoKTsKKyAgICAgICAgICAgIHJldHVybiBlbGVtZW50OwogICAgICAgICB9KTsK
ICAgICB9LAogICAgIHRlc3RzOiBbCi0gICAgICAgIG5ldyBCZW5jaG1hcmtUZXN0U3RlcCgnQWRk
aW5nJyArIG51bWJlck9mSXRlbXNUb0FkZCArICdJdGVtcycsIGZ1bmN0aW9uIChwYXJhbXMpIHsK
KyAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdBZGRpbmcnICsgbnVtYmVyT2ZJdGVtc1Rv
QWRkICsgJ0l0ZW1zJywgZnVuY3Rpb24gKG5ld1RvZG8sIGNvbnRlbnRXaW5kb3csIGNvbnRlbnRE
b2N1bWVudCkgewogICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1iZXJPZkl0ZW1z
VG9BZGQ7IGkrKykgewotICAgICAgICAgICAgICAgIHBhcmFtcy5lbWJlclJ1bihmdW5jdGlvbiAo
KSB7IHBhcmFtcy52aWV3c1sibmV3LXRvZG8iXS5zZXQoJ3ZhbHVlJywgJ1NvbWV0aGluZyB0byBk
bycgKyBpKTsgfSk7Ci0gICAgICAgICAgICAgICAgcGFyYW1zLmVtYmVyUnVuKGZ1bmN0aW9uICgp
IHsgcGFyYW1zLnZpZXdzWyJuZXctdG9kbyJdLmluc2VydE5ld2xpbmUoZG9jdW1lbnQuY3JlYXRl
RXZlbnQoJ0V2ZW50JykpOyB9KTsKKyAgICAgICAgICAgICAgICBuZXdUb2RvLnZhbHVlID0gJ1Nv
bWV0aGluZyB0byBkbycgKyBpOworICAgICAgICAgICAgICAgIHRyaWdnZXJLZXlib2FyZEV2ZW50
KG5ld1RvZG8sIDEzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSksCiAgICAgICAgIG5ldyBC
ZW5jaG1hcmtUZXN0U3RlcCgnQ29tcGxldGluZ0FsbEl0ZW1zJywgZnVuY3Rpb24gKHBhcmFtcywg
Y29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7Ci0gICAgICAgICAgICB2YXIgY2hlY2ti
b3hlcyA9IGNvbnRlbnREb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZW1iZXItY2hlY2tib3gn
KTsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hlY2tib3hlcy5sZW5ndGg7IGkr
KykgewotICAgICAgICAgICAgICAgIHZhciB2aWV3ID0gcGFyYW1zLnZpZXdzW2NoZWNrYm94ZXNb
aV0uaWRdOwotICAgICAgICAgICAgICAgIHBhcmFtcy5lbWJlclJ1bihmdW5jdGlvbiAoKSB7IHZp
ZXcuc2V0KCdjaGVja2VkJywgdHJ1ZSk7IH0pOworICAgICAgICAgICAgdmFyIGNoZWNrYm94ZXMg
PSBjb250ZW50RG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRvZ2dsZScpOworICAgICAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGVja2JveGVzLmxlbmd0aDsgaSsrKQorICAgICAgICAg
ICAgICAgIGNoZWNrYm94ZXNbaV0uY2xpY2soKTsKKyAgICAgICAgfSksCisgICAgICAgIG5ldyBC
ZW5jaG1hcmtUZXN0U3RlcCgnRGVsZXRpbmdJdGVtcycsIGZ1bmN0aW9uIChwYXJhbXMsIGNvbnRl
bnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgeworICAgICAgICAgICAgdmFyIGRlbGV0ZUJ1dHRv
bnMgPSBjb250ZW50RG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmRlc3Ryb3knKTsKKyAgICAg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGVsZXRlQnV0dG9ucy5sZW5ndGg7IGkrKykKKyAg
ICAgICAgICAgICAgICBkZWxldGVCdXR0b25zW2ldLmNsaWNrKCk7CisgICAgICAgIH0pLAorICAg
IF0KK30pOworCitTdWl0ZXMucHVzaCh7CisgICAgbmFtZTogJ1JlYWN0LVRvZG9NVkMnLAorICAg
IHVybDogJ3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L2luZGV4Lmh0bWwnLAor
ICAgIHByZXBhcmU6IGZ1bmN0aW9uIChydW5uZXIsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1
bWVudCkgeworICAgICAgICBjb250ZW50V2luZG93LmFwcC5VdGlscy5zdG9yZSA9IGZ1bmN0aW9u
ICgpIHt9CisgICAgICAgIHJldHVybiBydW5uZXIud2FpdEZvckVsZW1lbnQoJy5uZXctdG9kbycp
LnRoZW4oZnVuY3Rpb24gKGVsZW1lbnQpIHsKKyAgICAgICAgICAgIGVsZW1lbnQuZm9jdXMoKTsK
KyAgICAgICAgICAgIHJldHVybiBlbGVtZW50OworICAgICAgICB9KTsKKyAgICB9LAorICAgIHRl
c3RzOiBbCisgICAgICAgIG5ldyBCZW5jaG1hcmtUZXN0U3RlcCgnQWRkaW5nJyArIG51bWJlck9m
SXRlbXNUb0FkZCArICdJdGVtcycsIGZ1bmN0aW9uIChuZXdUb2RvLCBjb250ZW50V2luZG93LCBj
b250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgICAgIHZhciB0b2RvbXZjID0gY29udGVudFdpbmRv
dy50b2RvbXZjOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1iZXJPZkl0ZW1z
VG9BZGQ7IGkrKykgeworICAgICAgICAgICAgICAgIG5ld1RvZG8udmFsdWUgPSAnU29tZXRoaW5n
IHRvIGRvICcgKyBpOworCisgICAgICAgICAgICAgICAgdmFyIGtleWRvd25FdmVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUV2ZW50KCdFdmVudCcpOworICAgICAgICAgICAgICAgIGtleWRvd25FdmVudC5p
bml0RXZlbnQoJ2tleWRvd24nLCB0cnVlLCB0cnVlKTsKKyAgICAgICAgICAgICAgICBrZXlkb3du
RXZlbnQud2hpY2ggPSAxMzsgLy8gVktfRU5URVIKKyAgICAgICAgICAgICAgICBuZXdUb2RvLmRp
c3BhdGNoRXZlbnQoa2V5ZG93bkV2ZW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSksCisg
ICAgICAgIG5ldyBCZW5jaG1hcmtUZXN0U3RlcCgnQ29tcGxldGluZ0FsbEl0ZW1zJywgZnVuY3Rp
b24gKG5ld1RvZG8sIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgeworICAgICAgICAg
ICAgdmFyIGNoZWNrYm94ZXMgPSBjb250ZW50RG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRv
Z2dsZScpOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGVja2JveGVzLmxlbmd0
aDsgaSsrKQorICAgICAgICAgICAgICAgIGNoZWNrYm94ZXNbaV0uY2xpY2soKTsKKyAgICAgICAg
fSksCisgICAgICAgIG5ldyBCZW5jaG1hcmtUZXN0U3RlcCgnRGVsZXRpbmdBbGxJdGVtcycsIGZ1
bmN0aW9uIChuZXdUb2RvLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAg
ICAgICAgIHZhciBkZWxldGVCdXR0b25zID0gY29udGVudERvY3VtZW50LnF1ZXJ5U2VsZWN0b3JB
bGwoJy5kZXN0cm95Jyk7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRlbGV0ZUJ1
dHRvbnMubGVuZ3RoOyBpKyspCisgICAgICAgICAgICAgICAgZGVsZXRlQnV0dG9uc1tpXS5jbGlj
aygpOworICAgICAgICB9KSwKKyAgICBdCit9KTsKKworU3VpdGVzLnB1c2goeworICAgIG5hbWU6
ICdSZWFjdC1SZWR1eC1Ub2RvTVZDJywKKyAgICB1cmw6ICd0b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9yZWFjdC1yZWR1eC9idWlsZC9pbmRleC5odG1sJywKKyAgICBwcmVwYXJlOiBmdW5j
dGlvbiAocnVubmVyLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAg
cmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVudCgnLm5ldy10b2RvJykudGhlbihmdW5jdGlvbiAo
ZWxlbWVudCkgeworICAgICAgICAgICAgZWxlbWVudC5mb2N1cygpOworICAgICAgICAgICAgcmV0
dXJuIGVsZW1lbnQ7CisgICAgICAgIH0pOworICAgIH0sCisgICAgdGVzdHM6IFsKKyAgICAgICAg
bmV3IEJlbmNobWFya1Rlc3RTdGVwKCdBZGRpbmcnICsgbnVtYmVyT2ZJdGVtc1RvQWRkICsgJ0l0
ZW1zJywgZnVuY3Rpb24gKG5ld1RvZG8sIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkg
eworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1iZXJPZkl0ZW1zVG9BZGQ7IGkr
KykgeworICAgICAgICAgICAgICAgIG5ld1RvZG8udmFsdWUgPSAnU29tZXRoaW5nIHRvIGRvJyAr
IGk7CisgICAgICAgICAgICAgICAgdHJpZ2dlcktleWJvYXJkRXZlbnQobmV3VG9kbywgMTMpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9KSwKKyAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVw
KCdDb21wbGV0aW5nQWxsSXRlbXMnLCBmdW5jdGlvbiAocGFyYW1zLCBjb250ZW50V2luZG93LCBj
b250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgICAgIHZhciBjaGVja2JveGVzID0gY29udGVudERv
Y3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy50b2dnbGUnKTsKKyAgICAgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgY2hlY2tib3hlcy5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgICAgICBjaGVj
a2JveGVzW2ldLmNsaWNrKCk7CisgICAgICAgIH0pLAorICAgICAgICBuZXcgQmVuY2htYXJrVGVz
dFN0ZXAoJ0RlbGV0aW5nSXRlbXMnLCBmdW5jdGlvbiAocGFyYW1zLCBjb250ZW50V2luZG93LCBj
b250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgICAgIHZhciBkZWxldGVCdXR0b25zID0gY29udGVu
dERvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5kZXN0cm95Jyk7CisgICAgICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGRlbGV0ZUJ1dHRvbnMubGVuZ3RoOyBpKyspCisgICAgICAgICAgICAg
ICAgZGVsZXRlQnV0dG9uc1tpXS5jbGljaygpOworICAgICAgICB9KSwKKyAgICBdCit9KTsKKwor
U3VpdGVzLnB1c2goeworICAgIG5hbWU6ICdFbWJlckpTLVRvZG9NVkMnLAorICAgIHVybDogJ3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMnLAorICAgIHByZXBhcmU6IGZ1bmN0
aW9uIChydW5uZXIsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgeworICAgICAgICBy
ZXR1cm4gcnVubmVyLndhaXRGb3JFbGVtZW50KCcjbmV3LXRvZG8nKS50aGVuKGZ1bmN0aW9uIChl
bGVtZW50KSB7CisgICAgICAgICAgICBlbGVtZW50LmZvY3VzKCk7CisgICAgICAgICAgICByZXR1
cm4gZWxlbWVudDsKKyAgICAgICAgfSk7CisgICAgfSwKKyAgICB0ZXN0czogWworICAgICAgICBu
ZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0FkZGluZycgKyBudW1iZXJPZkl0ZW1zVG9BZGQgKyAnSXRl
bXMnLCBmdW5jdGlvbiAobmV3VG9kbywgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7
CisgICAgICAgICAgICB2YXIgYXBwVmlldyA9IGNvbnRlbnRXaW5kb3cuQXBwOworICAgICAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1iZXJPZkl0ZW1zVG9BZGQ7IGkrKykgeworICAgICAg
ICAgICAgICAgIG5ld1RvZG8udmFsdWUgPSAnU29tZXRoaW5nIHRvIGRvJyArIGk7CisgICAgICAg
ICAgICAgICAgdHJpZ2dlcktleWJvYXJkRXZlbnQobmV3VG9kbywgMTMpOwogICAgICAgICAgICAg
fQogICAgICAgICB9KSwKKyAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdDb21wbGV0aW5n
QWxsSXRlbXMnLCBmdW5jdGlvbiAocGFyYW1zLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1l
bnQpIHsKKyAgICAgICAgICAgIHZhciBjaGVja2JveGVzID0gY29udGVudERvY3VtZW50LnF1ZXJ5
U2VsZWN0b3JBbGwoJy50b2dnbGUnKTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
Y2hlY2tib3hlcy5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgICAgICBjaGVja2JveGVzW2ldLmNs
aWNrKCk7CisgICAgICAgIH0pLAogICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0RlbGV0
aW5nSXRlbXMnLCBmdW5jdGlvbiAocGFyYW1zLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1l
bnQpIHsKICAgICAgICAgICAgIHZhciBkZWxldGVCdXR0b25zID0gY29udGVudERvY3VtZW50LnF1
ZXJ5U2VsZWN0b3JBbGwoJy5kZXN0cm95Jyk7CiAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IGRlbGV0ZUJ1dHRvbnMubGVuZ3RoOyBpKyspCi0gICAgICAgICAgICAgICAgcGFyYW1zLmVt
YmVyUnVuKGZ1bmN0aW9uICgpIHsgZGVsZXRlQnV0dG9uc1tpXS5jbGljaygpOyB9KTsKKyAgICAg
ICAgICAgICAgICBkZWxldGVCdXR0b25zW2ldLmNsaWNrKCk7CiAgICAgICAgIH0pLAogICAgIF0K
IH0pOwogCisKIFN1aXRlcy5wdXNoKHsKICAgICBuYW1lOiAnQmFja2JvbmVKUy1Ub2RvTVZDJywK
ICAgICB1cmw6ICd0b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9pbmRleC5o
dG1sJywKICAgICBwcmVwYXJlOiBmdW5jdGlvbiAocnVubmVyLCBjb250ZW50V2luZG93LCBjb250
ZW50RG9jdW1lbnQpIHsKICAgICBjb250ZW50V2luZG93LkJhY2tib25lLnN5bmMgPSBmdW5jdGlv
biAoKSB7fQotICAgICAgICByZXR1cm4gcnVubmVyLndhaXRGb3JFbGVtZW50KCcjbmV3LXRvZG8n
KS50aGVuKGZ1bmN0aW9uIChlbGVtZW50KSB7CisgICAgICAgIHJldHVybiBydW5uZXIud2FpdEZv
ckVsZW1lbnQoJy5uZXctdG9kbycpLnRoZW4oZnVuY3Rpb24gKGVsZW1lbnQpIHsKICAgICAgICAg
ICAgIGVsZW1lbnQuZm9jdXMoKTsKICAgICAgICAgICAgIHJldHVybiBlbGVtZW50OwogICAgICAg
ICB9KTsKQEAgLTc4LDEwICsyMTIsMTEwIEBAIFN1aXRlcy5wdXNoKHsKICAgICB0ZXN0czogWwog
ICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0FkZGluZycgKyBudW1iZXJPZkl0ZW1zVG9B
ZGQgKyAnSXRlbXMnLCBmdW5jdGlvbiAobmV3VG9kbywgY29udGVudFdpbmRvdywgY29udGVudERv
Y3VtZW50KSB7CiAgICAgICAgICAgICB2YXIgYXBwVmlldyA9IGNvbnRlbnRXaW5kb3cuYXBwVmll
dzsKLSAgICAgICAgICAgIHZhciBmYWtlRXZlbnQgPSB7d2hpY2g6IGNvbnRlbnRXaW5kb3cuRU5U
RVJfS0VZfTsKKyAgICAgICAgICAgIHZhciBmYWtlRXZlbnQgPSB7d2hpY2g6IDEzfTsKKyAgICAg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtYmVyT2ZJdGVtc1RvQWRkOyBpKyspIHsKKyAg
ICAgICAgICAgICAgICBuZXdUb2RvLnZhbHVlID0gJ1NvbWV0aGluZyB0byBkbyAnICsgaTsKKyAg
ICAgICAgICAgICAgICB0cmlnZ2VyS2V5Ym9hcmRFdmVudChuZXdUb2RvLCAxMyk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0pLAorICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0NvbXBs
ZXRpbmdBbGxJdGVtcycsIGZ1bmN0aW9uIChuZXdUb2RvLCBjb250ZW50V2luZG93LCBjb250ZW50
RG9jdW1lbnQpIHsKKyAgICAgICAgICAgIHZhciBjaGVja2JveGVzID0gY29udGVudERvY3VtZW50
LnF1ZXJ5U2VsZWN0b3JBbGwoJy50b2dnbGUnKTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgY2hlY2tib3hlcy5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgICAgICBjaGVja2JveGVz
W2ldLmNsaWNrKCk7CisgICAgICAgIH0pLAorICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAo
J0RlbGV0aW5nQWxsSXRlbXMnLCBmdW5jdGlvbiAobmV3VG9kbywgY29udGVudFdpbmRvdywgY29u
dGVudERvY3VtZW50KSB7CisgICAgICAgICAgICB2YXIgZGVsZXRlQnV0dG9ucyA9IGNvbnRlbnRE
b2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZGVzdHJveScpOworICAgICAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBkZWxldGVCdXR0b25zLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgICAg
IGRlbGV0ZUJ1dHRvbnNbaV0uY2xpY2soKTsKKyAgICAgICAgfSksCisgICAgXQorfSk7CisKK1N1
aXRlcy5wdXNoKHsKKyAgICBuYW1lOiAnQW5ndWxhckpTLVRvZG9NVkMnLAorICAgIHVybDogJ3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXJqcy9pbmRleC5odG1sJywKKyAgICBw
cmVwYXJlOiBmdW5jdGlvbiAocnVubmVyLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQp
IHsKKyAgICAgICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVudCgnI25ldy10b2RvJykudGhl
bihmdW5jdGlvbiAoZWxlbWVudCkgeworICAgICAgICAgICAgZWxlbWVudC5mb2N1cygpOworICAg
ICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgICAgIH0pOworICAgIH0sCisgICAgdGVzdHM6
IFsKKyAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdBZGRpbmcnICsgbnVtYmVyT2ZJdGVt
c1RvQWRkICsgJ0l0ZW1zJywgZnVuY3Rpb24gKG5ld1RvZG8sIGNvbnRlbnRXaW5kb3csIGNvbnRl
bnREb2N1bWVudCkgeworICAgICAgICAgICAgdmFyIHRvZG9tdmMgPSBjb250ZW50V2luZG93LnRv
ZG9tdmM7CisgICAgICAgICAgICB2YXIgc3VibWl0RXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVu
dCgnRXZlbnQnKTsKKyAgICAgICAgICAgIHN1Ym1pdEV2ZW50LmluaXRFdmVudCgnc3VibWl0Jywg
dHJ1ZSwgdHJ1ZSk7CisgICAgICAgICAgICB2YXIgaW5wdXRFdmVudCA9IGRvY3VtZW50LmNyZWF0
ZUV2ZW50KCdFdmVudCcpOworICAgICAgICAgICAgaW5wdXRFdmVudC5pbml0RXZlbnQoJ2lucHV0
JywgdHJ1ZSwgdHJ1ZSk7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bWJlck9m
SXRlbXNUb0FkZDsgaSsrKSB7CisgICAgICAgICAgICAgICAgbmV3VG9kby52YWx1ZSA9ICdTb21l
dGhpbmcgdG8gZG8gJyArIGk7CisgICAgICAgICAgICAgICAgbmV3VG9kby5kaXNwYXRjaEV2ZW50
KGlucHV0RXZlbnQpOworICAgICAgICAgICAgICAgIG5ld1RvZG8uZm9ybS5kaXNwYXRjaEV2ZW50
KHN1Ym1pdEV2ZW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSksCisgICAgICAgIG5ldyBC
ZW5jaG1hcmtUZXN0U3RlcCgnQ29tcGxldGluZ0FsbEl0ZW1zJywgZnVuY3Rpb24gKG5ld1RvZG8s
IGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgeworICAgICAgICAgICAgdmFyIGNoZWNr
Ym94ZXMgPSBjb250ZW50RG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRvZ2dsZScpOworICAg
ICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGVja2JveGVzLmxlbmd0aDsgaSsrKQorICAg
ICAgICAgICAgICAgIGNoZWNrYm94ZXNbaV0uY2xpY2soKTsKKyAgICAgICAgfSksCisgICAgICAg
IG5ldyBCZW5jaG1hcmtUZXN0U3RlcCgnRGVsZXRpbmdBbGxJdGVtcycsIGZ1bmN0aW9uIChuZXdU
b2RvLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgICAgIHZhciBk
ZWxldGVCdXR0b25zID0gY29udGVudERvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5kZXN0cm95
Jyk7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRlbGV0ZUJ1dHRvbnMubGVuZ3Ro
OyBpKyspCisgICAgICAgICAgICAgICAgZGVsZXRlQnV0dG9uc1tpXS5jbGljaygpOworICAgICAg
ICB9KSwKKyAgICBdCit9KTsKKworCitTdWl0ZXMucHVzaCh7CisgICAgbmFtZTogJ0FuZ3VsYXIt
VHlwZVNjcmlwdC1Ub2RvTVZDJywKKyAgICB1cmw6ICd0b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9hbmd1bGFyL2Rpc3QvaW5kZXguaHRtbCcsCisgICAgcHJlcGFyZTogZnVuY3Rpb24gKHJ1
bm5lciwgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CisgICAgICAgIHJldHVybiBy
dW5uZXIud2FpdEZvckVsZW1lbnQoJy5uZXctdG9kbycpLnRoZW4oZnVuY3Rpb24gKGVsZW1lbnQp
IHsKKyAgICAgICAgICAgIGVsZW1lbnQuZm9jdXMoKTsKKyAgICAgICAgICAgIHJldHVybiBlbGVt
ZW50OworICAgICAgICB9KTsKKyAgICB9LAorICAgIHRlc3RzOiBbCisgICAgICAgIG5ldyBCZW5j
aG1hcmtUZXN0U3RlcCgnQWRkaW5nJyArIG51bWJlck9mSXRlbXNUb0FkZCArICdJdGVtcycsIGZ1
bmN0aW9uIChuZXdUb2RvLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAg
ICAgICAgIHZhciBhcHBWaWV3ID0gY29udGVudFdpbmRvdy5BcHA7CisgICAgICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IG51bWJlck9mSXRlbXNUb0FkZDsgaSsrKSB7CisgICAgICAgICAgICAg
ICAgbmV3VG9kby52YWx1ZSA9ICdTb21ldGhpbmcgdG8gZG8nICsgaTsKKyAgICAgICAgICAgICAg
ICB0cmlnZ2VyS2V5Ym9hcmRFdmVudChuZXdUb2RvLCAxMyk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0pLAorICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0NvbXBsZXRpbmdBbGxJdGVt
cycsIGZ1bmN0aW9uIChwYXJhbXMsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgewor
ICAgICAgICAgICAgdmFyIGNoZWNrYm94ZXMgPSBjb250ZW50RG9jdW1lbnQucXVlcnlTZWxlY3Rv
ckFsbCgnLnRvZ2dsZScpOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGVja2Jv
eGVzLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgICAgIGNoZWNrYm94ZXNbaV0uY2xpY2soKTsK
KyAgICAgICAgfSksCisgICAgICAgIG5ldyBCZW5jaG1hcmtUZXN0U3RlcCgnRGVsZXRpbmdJdGVt
cycsIGZ1bmN0aW9uIChwYXJhbXMsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgewor
ICAgICAgICAgICAgdmFyIGRlbGV0ZUJ1dHRvbnMgPSBjb250ZW50RG9jdW1lbnQucXVlcnlTZWxl
Y3RvckFsbCgnLmRlc3Ryb3knKTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGVs
ZXRlQnV0dG9ucy5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgICAgICBkZWxldGVCdXR0b25zW2ld
LmNsaWNrKCk7CisgICAgICAgIH0pLAorICAgIF0KK30pOworCitTdWl0ZXMucHVzaCh7CisgICAg
bmFtZTogJ1Z1ZUpTLVRvZG9NVkMnLAorICAgIHVybDogJ3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL3Z1ZWpzLWNsaS9kaXN0L2luZGV4Lmh0bWwnLAorICAgIHByZXBhcmU6IGZ1bmN0aW9u
IChydW5uZXIsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgeworICAgICAgICByZXR1
cm4gcnVubmVyLndhaXRGb3JFbGVtZW50KCcubmV3LXRvZG8nKS50aGVuKGZ1bmN0aW9uIChlbGVt
ZW50KSB7CisgICAgICAgICAgICBlbGVtZW50LmZvY3VzKCk7CisgICAgICAgICAgICByZXR1cm4g
ZWxlbWVudDsKKyAgICAgICAgfSk7CisgICAgfSwKKyAgICB0ZXN0czogWworICAgICAgICBuZXcg
QmVuY2htYXJrVGVzdFN0ZXAoJ0FkZGluZycgKyBudW1iZXJPZkl0ZW1zVG9BZGQgKyAnSXRlbXMn
LCBmdW5jdGlvbiAobmV3VG9kbywgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7Cisg
ICAgICAgICAgICB2YXIgdG9kb212YyA9IGNvbnRlbnRXaW5kb3cudG9kb212YzsKICAgICAgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtYmVyT2ZJdGVtc1RvQWRkOyBpKyspIHsKICAgICAg
ICAgICAgICAgICBuZXdUb2RvLnZhbHVlID0gJ1NvbWV0aGluZyB0byBkbyAnICsgaTsKLSAgICAg
ICAgICAgICAgICBhcHBWaWV3LmNyZWF0ZU9uRW50ZXIoZmFrZUV2ZW50KTsKKworICAgICAgICAg
ICAgICAgIHZhciBrZXlkb3duRXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQnKTsK
KyAgICAgICAgICAgICAgICBrZXlkb3duRXZlbnQuaW5pdEV2ZW50KCdrZXlkb3duJywgdHJ1ZSwg
dHJ1ZSk7CisgICAgICAgICAgICAgICAga2V5ZG93bkV2ZW50LndoaWNoID0gMTM7CisgICAgICAg
ICAgICAgICAgbmV3VG9kby5kaXNwYXRjaEV2ZW50KGtleWRvd25FdmVudCk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0pLAogICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0NvbXBsZXRp
bmdBbGxJdGVtcycsIGZ1bmN0aW9uIChuZXdUb2RvLCBjb250ZW50V2luZG93LCBjb250ZW50RG9j
dW1lbnQpIHsKQEAgLTEwOSwyMCArMzQzLDIwIEBAIFN1aXRlcy5wdXNoKHsKICAgICB0ZXN0czog
WwogICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0FkZGluZycgKyBudW1iZXJPZkl0ZW1z
VG9BZGQgKyAnSXRlbXMnLCBmdW5jdGlvbiAobmV3VG9kbywgY29udGVudFdpbmRvdywgY29udGVu
dERvY3VtZW50KSB7CiAgICAgICAgICAgICB2YXIgYXBwID0gY29udGVudFdpbmRvdy5hcHA7Ci0g
ICAgICAgICAgICB2YXIgZmFrZUV2ZW50ID0ge3doaWNoOiBhcHAuRU5URVJfS0VZfTsKICAgICAg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtYmVyT2ZJdGVtc1RvQWRkOyBpKyspIHsKICAg
ICAgICAgICAgICAgICBuZXdUb2RvLnZhbHVlID0gJ1NvbWV0aGluZyB0byBkbyAnICsgaTsKLSAg
ICAgICAgICAgICAgICBhcHAuY3JlYXRlLmNhbGwobmV3VG9kbywgZmFrZUV2ZW50KTsKKyAgICAg
ICAgICAgICAgICB0cmlnZ2VyS2V5Ym9hcmRFdmVudChuZXdUb2RvLCAxMyk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0pLAogICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0NvbXBsZXRp
bmdBbGxJdGVtcycsIGZ1bmN0aW9uIChuZXdUb2RvLCBjb250ZW50V2luZG93LCBjb250ZW50RG9j
dW1lbnQpIHsKICAgICAgICAgICAgIHZhciBhcHAgPSBjb250ZW50V2luZG93LmFwcDsKLSAgICAg
ICAgICAgIHZhciBjaGVja2JveGVzID0gY29udGVudERvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwo
Jy50b2dnbGUnKTsKKyAgICAgICAgICAgIHZhciBjaGVja2JveGVzID0gY29udGVudERvY3VtZW50
LnF1ZXJ5U2VsZWN0b3JBbGwoJ2lucHV0LnRvZ2dsZScpOwogICAgICAgICAgICAgdmFyICQgPSBj
b250ZW50V2luZG93LiQ7CiAKICAgICAgICAgICAgIGl0ZW1JbmRleFRvSWQgPSBuZXcgQXJyYXko
Y2hlY2tib3hlcy5sZW5ndGgpOwotICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGVj
a2JveGVzLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGVj
a2JveGVzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgaXRlbUluZGV4VG9JZFtpXSA9
ICQoY2hlY2tib3hlc1tpXSkuY2xvc2VzdCgnbGknKS5kYXRhKCdpZCcpOworICAgICAgICAgICAg
fSAKIAogICAgICAgICAgICAgYXBwLmdldFRvZG8gPSBmdW5jdGlvbiAoZWxlbWVudCwgY2FsbGJh
Y2spIHsKICAgICAgICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CkBAIC0xMzcsNTAgKzM3MSw0
NyBAQCBTdWl0ZXMucHVzaCh7CiAKICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hl
Y2tib3hlcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgIGFwcC5jdXJyZW50SXRlbUlu
ZGV4ID0gaTsKLSAgICAgICAgICAgICAgICBhcHAudG9nZ2xlLmNhbGwoY2hlY2tib3hlc1tpXSk7
CisgICAgICAgICAgICAgICAgYXBwLnRvZ2dsZSh7IHRhcmdldDogY2hlY2tib3hlc1tpXSB9KTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfSksCiAgICAgICAgIG5ldyBCZW5jaG1hcmtUZXN0U3Rl
cCgnRGVsZXRpbmdBbGxJdGVtcycsIGZ1bmN0aW9uIChuZXdUb2RvLCBjb250ZW50V2luZG93LCBj
b250ZW50RG9jdW1lbnQpIHsKLSAgICAgICAgICAgIGNvbnRlbnREb2N1bWVudC5xdWVyeVNlbGVj
dG9yKCcjY2xlYXItY29tcGxldGVkJykuY2xpY2soKTsKKyAgICAgICAgICAgIHZhciBjbGVhciA9
IGNvbnRlbnREb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjY2xlYXItY29tcGxldGVkJyk7CisgICAg
ICAgICAgICBpZiAoY2xlYXIgIT09IG51bGwpIHsKKyAgICAgICAgICAgICAgICBjbGVhci5jbGlj
aygpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgdmFyIGFwcCA9IGNvbnRlbnRXaW5kb3cu
YXBwOwogICAgICAgICAgICAgdmFyIGRlbGV0ZUJ1dHRvbnMgPSBjb250ZW50RG9jdW1lbnQucXVl
cnlTZWxlY3RvckFsbCgnLmRlc3Ryb3knKTsKIAogICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBkZWxldGVCdXR0b25zLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgYXBwLmN1
cnJlbnRJdGVtSW5kZXggPSBpOwotICAgICAgICAgICAgICAgIGFwcC5kZXN0cm95LmNhbGwoZGVs
ZXRlQnV0dG9uc1tpXSk7CisgICAgICAgICAgICAgICAgYXBwLmRlc3Ryb3koeyB0YXJnZXQ6IGRl
bGV0ZUJ1dHRvbnNbaV0gfSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0pLAogICAgIF0KIH0p
OwogCiBTdWl0ZXMucHVzaCh7Ci0gICAgbmFtZTogJ0FuZ3VsYXJKUy1Ub2RvTVZDJywKLSAgICB1
cmw6ICd0b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvaW5kZXguaHRtbCcs
CisgICAgbmFtZTogJ1ByZWFjdC1Ub2RvTVZDJywKKyAgICB1cmw6ICd0b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9wcmVhY3QvYnVpbGQvaW5kZXguaHRtbCcsCiAgICAgcHJlcGFyZTogZnVu
Y3Rpb24gKHJ1bm5lciwgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7Ci0gICAgICAg
IHJldHVybiBydW5uZXIud2FpdEZvckVsZW1lbnQoJyNuZXctdG9kbycpLnRoZW4oZnVuY3Rpb24g
KGVsZW1lbnQpIHsKKyAgICAgICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVudCgnLm5ldy10
b2RvJykudGhlbihmdW5jdGlvbiAoZWxlbWVudCkgewogICAgICAgICAgICAgZWxlbWVudC5mb2N1
cygpOwogICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CiAgICAgICAgIH0pOwogICAgIH0sCiAg
ICAgdGVzdHM6IFsKICAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdBZGRpbmcnICsgbnVt
YmVyT2ZJdGVtc1RvQWRkICsgJ0l0ZW1zJywgZnVuY3Rpb24gKG5ld1RvZG8sIGNvbnRlbnRXaW5k
b3csIGNvbnRlbnREb2N1bWVudCkgewotICAgICAgICAgICAgdmFyIHRvZG9tdmMgPSBjb250ZW50
V2luZG93LnRvZG9tdmM7Ci0gICAgICAgICAgICB2YXIgc3VibWl0RXZlbnQgPSBkb2N1bWVudC5j
cmVhdGVFdmVudCgnRXZlbnQnKTsKLSAgICAgICAgICAgIHN1Ym1pdEV2ZW50LmluaXRFdmVudCgn
c3VibWl0JywgdHJ1ZSwgdHJ1ZSk7Ci0gICAgICAgICAgICB2YXIgaW5wdXRFdmVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUV2ZW50KCdFdmVudCcpOwotICAgICAgICAgICAgaW5wdXRFdmVudC5pbml0RXZl
bnQoJ2lucHV0JywgdHJ1ZSwgdHJ1ZSk7CiAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IG51bWJlck9mSXRlbXNUb0FkZDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgbmV3VG9kby52YWx1
ZSA9ICdTb21ldGhpbmcgdG8gZG8gJyArIGk7Ci0gICAgICAgICAgICAgICAgbmV3VG9kby5kaXNw
YXRjaEV2ZW50KGlucHV0RXZlbnQpOwotICAgICAgICAgICAgICAgIG5ld1RvZG8uZm9ybS5kaXNw
YXRjaEV2ZW50KHN1Ym1pdEV2ZW50KTsKKyAgICAgICAgICAgICAgICBuZXdUb2RvLnZhbHVlID0g
J1NvbWV0aGluZyB0byBkbycgKyBpOworICAgICAgICAgICAgICAgIHRyaWdnZXJLZXlib2FyZEV2
ZW50KG5ld1RvZG8sIDEzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSksCi0gICAgICAgIG5l
dyBCZW5jaG1hcmtUZXN0U3RlcCgnQ29tcGxldGluZ0FsbEl0ZW1zJywgZnVuY3Rpb24gKG5ld1Rv
ZG8sIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgeworICAgICAgICBuZXcgQmVuY2ht
YXJrVGVzdFN0ZXAoJ0NvbXBsZXRpbmdBbGxJdGVtcycsIGZ1bmN0aW9uIChwYXJhbXMsIGNvbnRl
bnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgewogICAgICAgICAgICAgdmFyIGNoZWNrYm94ZXMg
PSBjb250ZW50RG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRvZ2dsZScpOwogICAgICAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGVja2JveGVzLmxlbmd0aDsgaSsrKQogICAgICAgICAg
ICAgICAgIGNoZWNrYm94ZXNbaV0uY2xpY2soKTsKICAgICAgICAgfSksCi0gICAgICAgIG5ldyBC
ZW5jaG1hcmtUZXN0U3RlcCgnRGVsZXRpbmdBbGxJdGVtcycsIGZ1bmN0aW9uIChuZXdUb2RvLCBj
b250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgbmV3IEJlbmNobWFya1Rl
c3RTdGVwKCdEZWxldGluZ0l0ZW1zJywgZnVuY3Rpb24gKHBhcmFtcywgY29udGVudFdpbmRvdywg
Y29udGVudERvY3VtZW50KSB7CiAgICAgICAgICAgICB2YXIgZGVsZXRlQnV0dG9ucyA9IGNvbnRl
bnREb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZGVzdHJveScpOwogICAgICAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBkZWxldGVCdXR0b25zLmxlbmd0aDsgaSsrKQogICAgICAgICAgICAg
ICAgIGRlbGV0ZUJ1dHRvbnNbaV0uY2xpY2soKTsKQEAgLTE4OSwzMyArNDIwLDU2IEBAIFN1aXRl
cy5wdXNoKHsKIH0pOwogCiBTdWl0ZXMucHVzaCh7Ci0gICAgbmFtZTogJ1JlYWN0LVRvZG9NVkMn
LAotICAgIHVybDogJ3RvZG9tdmMvbGFicy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QvaW5k
ZXguaHRtbCcsCisgICAgbmFtZTogJ0luZmVybm8tVG9kb01WQycsCisgICAgdXJsOiAndG9kb212
Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3QvaW5kZXguaHRtbCcs
CiAgICAgcHJlcGFyZTogZnVuY3Rpb24gKHJ1bm5lciwgY29udGVudFdpbmRvdywgY29udGVudERv
Y3VtZW50KSB7Ci0gICAgICAgIGNvbnRlbnRXaW5kb3cuVXRpbHMuc3RvcmUgPSBmdW5jdGlvbiAo
KSB7fQotICAgICAgICByZXR1cm4gcnVubmVyLndhaXRGb3JFbGVtZW50KCcjbmV3LXRvZG8nKS50
aGVuKGZ1bmN0aW9uIChlbGVtZW50KSB7CisgICAgICAgIHJldHVybiBydW5uZXIud2FpdEZvckVs
ZW1lbnQoJy5uZXctdG9kbycpLnRoZW4oZnVuY3Rpb24gKGVsZW1lbnQpIHsKICAgICAgICAgICAg
IGVsZW1lbnQuZm9jdXMoKTsKICAgICAgICAgICAgIHJldHVybiBlbGVtZW50OwogICAgICAgICB9
KTsKICAgICB9LAogICAgIHRlc3RzOiBbCiAgICAgICAgIG5ldyBCZW5jaG1hcmtUZXN0U3RlcCgn
QWRkaW5nJyArIG51bWJlck9mSXRlbXNUb0FkZCArICdJdGVtcycsIGZ1bmN0aW9uIChuZXdUb2Rv
LCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKLSAgICAgICAgICAgIHZhciB0b2Rv
bXZjID0gY29udGVudFdpbmRvdy50b2RvbXZjOwogICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBudW1iZXJPZkl0ZW1zVG9BZGQ7IGkrKykgewotICAgICAgICAgICAgICAgIG5ld1RvZG8u
dmFsdWUgPSAnU29tZXRoaW5nIHRvIGRvICcgKyBpOworICAgICAgICAgICAgICAgIG5ld1RvZG8u
dmFsdWUgPSAnU29tZXRoaW5nIHRvIGRvJyArIGk7CisgICAgICAgICAgICAgICAgdHJpZ2dlcktl
eWJvYXJkRXZlbnQobmV3VG9kbywgMTMpOworICAgICAgICAgICAgfQorICAgICAgICB9KSwKKyAg
ICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdDb21wbGV0aW5nQWxsSXRlbXMnLCBmdW5jdGlv
biAocGFyYW1zLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgICAg
IHZhciBjaGVja2JveGVzID0gY29udGVudERvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy50b2dn
bGUnKTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hlY2tib3hlcy5sZW5ndGg7
IGkrKykKKyAgICAgICAgICAgICAgICBjaGVja2JveGVzW2ldLmNsaWNrKCk7CisgICAgICAgIH0p
LAorICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0RlbGV0aW5nSXRlbXMnLCBmdW5jdGlv
biAocGFyYW1zLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgICAg
IHZhciBkZWxldGVCdXR0b25zID0gY29udGVudERvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5k
ZXN0cm95Jyk7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRlbGV0ZUJ1dHRvbnMu
bGVuZ3RoOyBpKyspCisgICAgICAgICAgICAgICAgZGVsZXRlQnV0dG9uc1tpXS5jbGljaygpOwor
ICAgICAgICB9KSwKKyAgICBdCit9KTsKIAotICAgICAgICAgICAgICAgIHZhciBrZXlkb3duRXZl
bnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQnKTsKLSAgICAgICAgICAgICAgICBrZXlk
b3duRXZlbnQuaW5pdEV2ZW50KCdrZXlkb3duJywgdHJ1ZSwgdHJ1ZSk7Ci0gICAgICAgICAgICAg
ICAga2V5ZG93bkV2ZW50LndoaWNoID0gMTM7IC8vIFZLX0VOVEVSCi0gICAgICAgICAgICAgICAg
bmV3VG9kby5kaXNwYXRjaEV2ZW50KGtleWRvd25FdmVudCk7CitTdWl0ZXMucHVzaCh7CisgICAg
bmFtZTogJ0VsbS1Ub2RvTVZDJywKKyAgICB1cmw6ICd0b2RvbXZjL2Z1bmN0aW9uYWwtcHJvZy1l
eGFtcGxlcy9lbG0vaW5kZXguaHRtbCcsCisgICAgcHJlcGFyZTogZnVuY3Rpb24gKHJ1bm5lciwg
Y29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CisgICAgICAgIHJldHVybiBydW5uZXIu
d2FpdEZvckVsZW1lbnQoJy5uZXctdG9kbycpLnRoZW4oZnVuY3Rpb24gKGVsZW1lbnQpIHsKKyAg
ICAgICAgICAgIGVsZW1lbnQuZm9jdXMoKTsKKyAgICAgICAgICAgIHJldHVybiBlbGVtZW50Owor
ICAgICAgICB9KTsKKyAgICB9LAorICAgIHRlc3RzOiBbCisgICAgICAgIG5ldyBCZW5jaG1hcmtU
ZXN0U3RlcCgnQWRkaW5nJyArIG51bWJlck9mSXRlbXNUb0FkZCArICdJdGVtcycsIGZ1bmN0aW9u
IChuZXdUb2RvLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgbnVtYmVyT2ZJdGVtc1RvQWRkOyBpKyspIHsKKyAgICAgICAg
ICAgICAgICBuZXdUb2RvLnZhbHVlID0gJ1NvbWV0aGluZyB0byBkbycgKyBpOworICAgICAgICAg
ICAgICAgIHRyaWdnZXJLZXlib2FyZEV2ZW50KG5ld1RvZG8sIDEzKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfSksCi0gICAgICAgIG5ldyBCZW5jaG1hcmtUZXN0U3RlcCgnQ29tcGxldGluZ0Fs
bEl0ZW1zJywgZnVuY3Rpb24gKG5ld1RvZG8sIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVu
dCkgeworICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0NvbXBsZXRpbmdBbGxJdGVtcycs
IGZ1bmN0aW9uIChwYXJhbXMsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgewogICAg
ICAgICAgICAgdmFyIGNoZWNrYm94ZXMgPSBjb250ZW50RG9jdW1lbnQucXVlcnlTZWxlY3RvckFs
bCgnLnRvZ2dsZScpOwogICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGVja2JveGVz
Lmxlbmd0aDsgaSsrKQogICAgICAgICAgICAgICAgIGNoZWNrYm94ZXNbaV0uY2xpY2soKTsKICAg
ICAgICAgfSksCi0gICAgICAgIG5ldyBCZW5jaG1hcmtUZXN0U3RlcCgnRGVsZXRpbmdBbGxJdGVt
cycsIGZ1bmN0aW9uIChuZXdUb2RvLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsK
KyAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdEZWxldGluZ0l0ZW1zJywgZnVuY3Rpb24g
KHBhcmFtcywgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CiAgICAgICAgICAgICB2
YXIgZGVsZXRlQnV0dG9ucyA9IGNvbnRlbnREb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZGVz
dHJveScpOwogICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkZWxldGVCdXR0b25zLmxl
bmd0aDsgaSsrKQogICAgICAgICAgICAgICAgIGRlbGV0ZUJ1dHRvbnNbaV0uY2xpY2soKTsKQEAg
LTIyNCwzMyArNDc4LDI3IEBAIFN1aXRlcy5wdXNoKHsKIH0pOwogCiBTdWl0ZXMucHVzaCh7Ci0g
ICAgbmFtZTogJ0ZsaWdodEpTLVRvZG9NVkMnLAorICAgIG5hbWU6ICdGbGlnaHQtVG9kb01WQycs
CiAgICAgdXJsOiAndG9kb212Yy9kZXBlbmRlbmN5LWV4YW1wbGVzL2ZsaWdodC9pbmRleC5odG1s
JywKICAgICBwcmVwYXJlOiBmdW5jdGlvbiAocnVubmVyLCBjb250ZW50V2luZG93LCBjb250ZW50
RG9jdW1lbnQpIHsKLSAgICAgICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVudCgnI2FwcElz
UmVhZHknKS50aGVuKGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIHZhciBuZXdUb2RvID0gY29u
dGVudERvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNuZXctdG9kbycpOwotICAgICAgICAgICAgbmV3
VG9kby5mb2N1cygpOwotICAgICAgICAgICAgcmV0dXJuIG5ld1RvZG87Ci0gICAgICAgIH0pOzsK
KyAgICAgICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVudCgnI25ldy10b2RvJykudGhlbihm
dW5jdGlvbiAoZWxlbWVudCkgeworICAgICAgICAgICAgZWxlbWVudC5mb2N1cygpOworICAgICAg
ICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgICAgIH0pOwogICAgIH0sCiAgICAgdGVzdHM6IFsK
ICAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdBZGRpbmcnICsgbnVtYmVyT2ZJdGVtc1Rv
QWRkICsgJ0l0ZW1zJywgZnVuY3Rpb24gKG5ld1RvZG8sIGNvbnRlbnRXaW5kb3csIGNvbnRlbnRE
b2N1bWVudCkgewotICAgICAgICAgICAgdmFyIHRvZG9tdmMgPSBjb250ZW50V2luZG93LnRvZG9t
dmM7CiAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bWJlck9mSXRlbXNUb0FkZDsg
aSsrKSB7Ci0gICAgICAgICAgICAgICAgbmV3VG9kby52YWx1ZSA9ICdTb21ldGhpbmcgdG8gZG8g
JyArIGk7Ci0KLSAgICAgICAgICAgICAgICB2YXIga2V5ZG93bkV2ZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRXZlbnQoJ0V2ZW50Jyk7Ci0gICAgICAgICAgICAgICAga2V5ZG93bkV2ZW50LmluaXRFdmVu
dCgna2V5ZG93bicsIHRydWUsIHRydWUpOwotICAgICAgICAgICAgICAgIGtleWRvd25FdmVudC53
aGljaCA9IDEzOyAvLyBWS19FTlRFUgotICAgICAgICAgICAgICAgIG5ld1RvZG8uZGlzcGF0Y2hF
dmVudChrZXlkb3duRXZlbnQpOworICAgICAgICAgICAgICAgIG5ld1RvZG8udmFsdWUgPSAnU29t
ZXRoaW5nIHRvIGRvJyArIGk7CisgICAgICAgICAgICAgICAgdHJpZ2dlcktleWJvYXJkRXZlbnQo
bmV3VG9kbywgMTMpOwogICAgICAgICAgICAgfQogICAgICAgICB9KSwKLSAgICAgICAgbmV3IEJl
bmNobWFya1Rlc3RTdGVwKCdDb21wbGV0aW5nQWxsSXRlbXMnLCBmdW5jdGlvbiAobmV3VG9kbywg
Y29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CisgICAgICAgIG5ldyBCZW5jaG1hcmtU
ZXN0U3RlcCgnQ29tcGxldGluZ0FsbEl0ZW1zJywgZnVuY3Rpb24gKHBhcmFtcywgY29udGVudFdp
bmRvdywgY29udGVudERvY3VtZW50KSB7CiAgICAgICAgICAgICB2YXIgY2hlY2tib3hlcyA9IGNv
bnRlbnREb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudG9nZ2xlJyk7CiAgICAgICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGNoZWNrYm94ZXMubGVuZ3RoOyBpKyspCiAgICAgICAgICAgICAg
ICAgY2hlY2tib3hlc1tpXS5jbGljaygpOwogICAgICAgICB9KSwKLSAgICAgICAgbmV3IEJlbmNo
bWFya1Rlc3RTdGVwKCdEZWxldGluZ0FsbEl0ZW1zJywgZnVuY3Rpb24gKG5ld1RvZG8sIGNvbnRl
bnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgeworICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0
ZXAoJ0RlbGV0aW5nSXRlbXMnLCBmdW5jdGlvbiAocGFyYW1zLCBjb250ZW50V2luZG93LCBjb250
ZW50RG9jdW1lbnQpIHsKICAgICAgICAgICAgIHZhciBkZWxldGVCdXR0b25zID0gY29udGVudERv
Y3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5kZXN0cm95Jyk7CiAgICAgICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGRlbGV0ZUJ1dHRvbnMubGVuZ3RoOyBpKyspCiAgICAgICAgICAgICAgICAg
ZGVsZXRlQnV0dG9uc1tpXS5jbGljaygpOwpAQCAtMjU4LDcgKzUwNiw3IEBAIFN1aXRlcy5wdXNo
KHsKICAgICBdCiB9KTsKIAotdmFyIGFjdGlvbkNvdW50ID0gNTA7Cit2YXIgYWN0aW9uQ291bnQg
PSAyMDsKIFN1aXRlcy5wdXNoKHsKICAgICBkaXNhYmxlZDogdHJ1ZSwKICAgICBuYW1lOiAnRmxp
Z2h0SlMtTWFpbENsaWVudCcsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309999</attachid>
            <date>2017-05-12 19:43:22 -0700</date>
            <delta_ts>2017-05-12 20:49:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170513-20170512194321.patch</filename>
            <type>text/plain</type>
            <size>75249</size>
            <attacher name="Addy Osmani">addyo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2ODEwCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDU5ZTYwNDhjODMx
OGE3MzczZGZlYzg4MTU5ODgxMDM3MTM0NTMzN2YuLmQ5ZDg3ZDNkYWNmYzIwY2QyM2E2NjYxZTM1
NDk0NTkxYzVhOTZmNjcgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzEgQEAKIDIwMTctMDUt
MTIgIEFkZHkgT3NtYW5pICA8YWRkeW9zbWFuaUBnbWFpbC5jb20+CiAKKyAgICAgICAgVXBkYXRl
IHRvIFNwZWVkb21ldGVyIDIuMCB3L3VwZGF0ZWQgZnJhbWV3b3JrcyArIG5ldyB3b3JrbG9hZHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDUxMwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNwZWVkb21l
dGVyOiByZWZyZXNoIHRlc3QgcnVubmVyIGFuZCBmaXggYXBwcyB0byB3b3JrIHdpdGggaXQKKwor
ICAgICAgICAqIFNwZWVkb21ldGVyL0ludGVyYWN0aXZlUnVubmVyLmh0bWw6CisgICAgICAgICog
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rlc3RzLmpzOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL2Rpc3QvaW5kZXgu
aHRtbDoKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvZW1iZXJqcy9hc3NldHMvdG9kb212Yy5qczoKKyAgICAgICAgKiBTcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9pbmRl
eC5odG1sOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS9hcHAvc2VydmljZXMvbWVtb3J5LmpzOgorICAg
ICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9lbWJlcmpzL3NvdXJjZS9hcHAvc2VydmljZXMvcmVwby5qczoKKyAgICAgICAgKiBTcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy90ZXN0
cy9pbmRleC5odG1sOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvaW5kZXguaHRtbDoKKyAgICAgICAgKiBTcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVf
bW9kdWxlcy9kaXJlY3Rvci9MSUNFTlNFOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxl
cy9kaXJlY3Rvci9ib3dlci5qc29uOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9k
aXJlY3Rvci9kaXN0L2RpcmVjdG9yLmpzOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxl
cy9kaXJlY3Rvci9kaXN0L2RpcmVjdG9yLm1pbi5qczogQWRkZWQuCisgICAgICAgICogU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2Rl
X21vZHVsZXMvZGlyZWN0b3IvZGlzdC9lbmRlci5qczogQWRkZWQuCisgICAgICAgICogU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2Rl
X21vZHVsZXMvZGlyZWN0b3IvcGFja2FnZS5qc29uOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9mdW5jdGlvbmFsLXByb2ctZXhhbXBsZXMvZWxtL2luZGV4
Lmh0bWw6CisKKzIwMTctMDUtMTIgIEFkZHkgT3NtYW5pICA8YWRkeW9zbWFuaUBnbWFpbC5jb20+
CisKICAgICAgICAgU3BlZWRvbWV0ZXI6IEFkZCBhIFJlYWN0LmpzIFRvZG9NVkMgaW1wbGVtZW50
YXRpb24KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
MTQ0NAogCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL0ludGVyYWN0
aXZlUnVubmVyLmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL0ludGVyYWN0aXZl
UnVubmVyLmh0bWwKaW5kZXggOTIwNzZhNGFjYWJlN2RiY2ViOGIwYjViOWU1MzM2ODg2ZDllYzQ1
NS4uMmQ3MWE4YzhhYWM0MDk1ODYyYWU1ZGYwMjAyMTRjODgzOWRiMWZmNiAxMDA2NDQKLS0tIGEv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9JbnRlcmFjdGl2ZVJ1bm5lci5odG1sCisrKyBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvSW50ZXJhY3RpdmVSdW5uZXIuaHRtbApAQCAt
MSw3ICsxLDcgQEAKIDwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KLTx0aXRsZT5Eb1lv
dUV2ZW5CZW5jaDwvdGl0bGU+Cis8dGl0bGU+U3BlZWRvbWV0ZXIgMi4wIEludGVyYWN0aXZlIFJ1
bm5lcjwvdGl0bGU+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JlbmNobWFyay1ydW5uZXIuanMi
IGRlZmVyPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy90ZXN0cy5qcyIgZGVmZXI+
PC9zY3JpcHQ+CiA8c3R5bGU+CkBAIC02NiwxMyArNjYsNDEgQEAgZnVuY3Rpb24gY3JlYXRlVUlG
b3JTdWl0ZXMoc3VpdGVzLCBvbnN0ZXAsIG9ucnVuKSB7CiAKICAgICB2YXIgYnV0dG9uID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7CiAgICAgYnV0dG9uLnRleHRDb250ZW50ID0g
J1J1bic7CisgICAgYnV0dG9uLmlkID0gJ3J1blN1aXRlcyc7CiAgICAgYnV0dG9uLm9uY2xpY2sg
PSBvbnJ1bjsKICAgICBjb250cm9sLmFwcGVuZENoaWxkKGJ1dHRvbik7CiAKICAgICByZXR1cm4g
Y29udHJvbDsKIH0KIAordmFyIHBhcnNlUXVlcnlTdHJpbmcgPSAoZnVuY3Rpb24gKHBhaXJMaXN0
KSB7CisgICAgdmFyIHBhaXJzID0ge307CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYWlyTGlz
dC5sZW5ndGg7ICsraSkKKyAgICB7CisgICAgICAgIHZhciBrZXlWYWx1ZSA9IHBhaXJMaXN0W2ld
LnNwbGl0KCc9JywgMik7CisgICAgICAgIGlmIChrZXlWYWx1ZS5sZW5ndGggPT0gMSkKKyAgICAg
ICAgICAgIHBhaXJzW2tleVZhbHVlWzBdXSA9ICcnOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBwYWlyc1trZXlWYWx1ZVswXV0gPSBkZWNvZGVVUklDb21wb25lbnQoa2V5VmFsdWVbMV0ucmVw
bGFjZSgvXCsvZywgJyAnKSk7CisgICAgfQorICAgIHJldHVybiBwYWlyczsKK30pKHdpbmRvdy5s
b2NhdGlvbi5zZWFyY2guc3Vic3RyKDEpLnNwbGl0KCcmJykpOworCisvLyBEaXNhYmxlIGFsbCBz
dWl0ZXMgb3RoZXIgdGhhbiBhIHN1aXRlIHNwZWNpZmllZCB3aXRoIGEgcXVlcnkgc3RyaW5nCitm
dW5jdGlvbiBkaXNhYmxlQWxsU3VpdGVzRXhjZXB0KHN1aXRlTmFtZSkgeworICAgIGlmIChzdWl0
ZU5hbWUgPT09IHVuZGVmaW5lZCB8fCBzdWl0ZU5hbWUgPT09ICcnKQorICAgICAgICByZXR1cm47
CisgICAgU3VpdGVzLmZvckVhY2goZnVuY3Rpb24oZWxlbWVudCkgeworICAgICAgICBpZiAoZWxl
bWVudC5uYW1lICE9PSBzdWl0ZU5hbWUpCisgICAgICAgICAgICBlbGVtZW50LmRpc2FibGVkID0g
dHJ1ZTsKKyAgICB9KTsKK30KKwogZnVuY3Rpb24gc3RhcnRUZXN0KCkgeworICAgIHZhciBxdWVy
eVBhcmFtID0gcGFyc2VRdWVyeVN0cmluZ1snc3VpdGUnXTsKKyAgICBpZiAocXVlcnlQYXJhbSAh
PT0gdW5kZWZpbmVkKQorICAgICAgICBkaXNhYmxlQWxsU3VpdGVzRXhjZXB0KHF1ZXJ5UGFyYW0p
OworCiAgICAgdmFyIHJ1bm5lciA9IG5ldyBCZW5jaG1hcmtSdW5uZXIoU3VpdGVzLCB7CiAgICAg
ICAgIHdpbGxSdW5UZXN0OiBmdW5jdGlvbiAoc3VpdGUsIHRlc3QpIHsKICAgICAgICAgICAgIHRl
c3QuYW5jaG9yLmNsYXNzTGlzdC5hZGQoJ3J1bm5pbmcnKTsKQEAgLTExMiw2ICsxNDAsOSBAQCBm
dW5jdGlvbiBzdGFydFRlc3QoKSB7CiAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjcmVh
dGVVSUZvclN1aXRlcyhTdWl0ZXMsCiAgICAgICAgIGZ1bmN0aW9uICgpIHsgcnVubmVyLnN0ZXAo
Y3VycmVudFN0YXRlKS50aGVuKGZ1bmN0aW9uIChzdGF0ZSkgeyBjdXJyZW50U3RhdGUgPSBzdGF0
ZTsgfSk7IH0sCiAgICAgICAgIGZ1bmN0aW9uICgpIHsgcnVubmVyLnJ1bkFsbFN0ZXBzKGN1cnJl
bnRTdGF0ZSk7IGN1cnJlbnRTdGF0ZSA9IG51bGw7IH0pKTsKKworICAgIGlmIChwYXJzZVF1ZXJ5
U3RyaW5nWydzdGFydEF1dG9tYXRpY2FsbHknXSAhPT0gdW5kZWZpbmVkKQorICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgncnVuU3VpdGVzJykuY2xpY2soKTsKIH0KIAogd2luZG93LmFk
ZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBzdGFydFRlc3QpOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdGVzdHMuanMgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90ZXN0cy5qcwppbmRleCBlNmYyMzljYzk0ZWEyNDdmZGZh
ZmE4ZWYzMzRhNGZjYjE3NDI4MGQ5Li4zMDY3M2JhYTQzY2QzNTFiNWY2YzY2ODg2ZDk1NDY0YzQz
YzBiMzBhIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90ZXN0cy5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
ZXN0cy5qcwpAQCAtMSwyMSArMSwzNiBAQAogdmFyIG51bWJlck9mSXRlbXNUb0FkZCA9IDEwMDsK
IHZhciBTdWl0ZXMgPSBbXTsKK3ZhciBFTlRFUl9LRVlfQ09ERSA9IDEzOworCit2YXIgZXZlbnRD
YWNoZSA9IHt9OworWydrZXl1cCcsICdrZXlkb3duJywgJ2tleXByZXNzJ10uZm9yRWFjaChmdW5j
dGlvbiAodHlwZSkgeworICAgIHZhciBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdFdmVu
dHMnKTsKKyAgICBldmVudC5pbml0RXZlbnQodHlwZSwgdHJ1ZSwgdHJ1ZSk7CisgICAgT2JqZWN0
LmRlZmluZVByb3BlcnR5KGV2ZW50LCAna2V5Q29kZScsIHt2YWx1ZTogRU5URVJfS0VZX0NPREV9
KTsKKyAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXZlbnQsICd3aGljaCcsIHt2YWx1ZTogRU5U
RVJfS0VZX0NPREV9KTsKKyAgICBldmVudC5rZXkgPSAnRU5URVInOworICAgIGV2ZW50Q2FjaGVb
dHlwZV0gPSBldmVudDsKK30pCisKK3ZhciB0cmlnZ2VyRW50ZXIgPSBmdW5jdGlvbiAoZWxlbWVu
dCwgdHlwZSkgeworICAgIGVsZW1lbnQuZGlzcGF0Y2hFdmVudChldmVudENhY2hlW3R5cGVdKTsK
K30KIAogU3VpdGVzLnB1c2goewogICAgIG5hbWU6ICdWYW5pbGxhSlMtVG9kb01WQycsCiAgICAg
dXJsOiAndG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9pbmRleC5odG1sJywKICAg
ICBwcmVwYXJlOiBmdW5jdGlvbiAocnVubmVyLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1l
bnQpIHsKLSAgICAgICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVudCgnI25ldy10b2RvJyku
dGhlbihmdW5jdGlvbiAoZWxlbWVudCkgeworICAgICAgICByZXR1cm4gcnVubmVyLndhaXRGb3JF
bGVtZW50KCcubmV3LXRvZG8nKS50aGVuKGZ1bmN0aW9uIChlbGVtZW50KSB7CiAgICAgICAgICAg
ICBlbGVtZW50LmZvY3VzKCk7CiAgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKICAgICAgICAg
fSk7CiAgICAgfSwKICAgICB0ZXN0czogWwogICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAo
J0FkZGluZycgKyBudW1iZXJPZkl0ZW1zVG9BZGQgKyAnSXRlbXMnLCBmdW5jdGlvbiAobmV3VG9k
bywgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7Ci0gICAgICAgICAgICB2YXIgdG9k
b0NvbnRyb2xsZXIgPSBjb250ZW50V2luZG93LnRvZG8uY29udHJvbGxlcjsKICAgICAgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgbnVtYmVyT2ZJdGVtc1RvQWRkOyBpKyspIHsKICAgICAgICAg
ICAgICAgICBuZXdUb2RvLnZhbHVlID0gJ1NvbWV0aGluZyB0byBkbyAnICsgaTsKLSAgICAgICAg
ICAgICAgICB0b2RvQ29udHJvbGxlci5hZGRJdGVtKHtrZXlDb2RlOiB0b2RvQ29udHJvbGxlci5F
TlRFUl9LRVksIHRhcmdldDogbmV3VG9kb30pOworICAgICAgICAgICAgICAgIG5ld1RvZG8uZGlz
cGF0Y2hFdmVudChuZXcgRXZlbnQoJ2NoYW5nZScpKTsKKyAgICAgICAgICAgICAgICB0cmlnZ2Vy
RW50ZXIobmV3VG9kbywgJ2tleXByZXNzJyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0pLAog
ICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0NvbXBsZXRpbmdBbGxJdGVtcycsIGZ1bmN0
aW9uIChuZXdUb2RvLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKQEAgLTMyLDU2
ICs0Nyw4NCBAQCBTdWl0ZXMucHVzaCh7CiB9KTsKIAogU3VpdGVzLnB1c2goewotICAgIG5hbWU6
ICdFbWJlckpTLVRvZG9NVkMnLAotICAgIHVybDogJ3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2VtYmVyanMvaW5kZXguaHRtbCcsCisgICAgbmFtZTogJ1ZhbmlsbGEtRVMyMDE1LVRvZG9N
VkMnLAorICAgIHVybDogJ3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUvaW5kZXguaHRt
bCcsCiAgICAgcHJlcGFyZTogZnVuY3Rpb24gKHJ1bm5lciwgY29udGVudFdpbmRvdywgY29udGVu
dERvY3VtZW50KSB7Ci0gICAgICAgIHJldHVybiBydW5uZXIud2FpdEZvckVsZW1lbnQoJyNuZXct
dG9kbycpLnRoZW4oZnVuY3Rpb24gKGVsZW1lbnQpIHsKKyAgICAgICAgcmV0dXJuIHJ1bm5lci53
YWl0Rm9yRWxlbWVudCgnLm5ldy10b2RvJykudGhlbihmdW5jdGlvbiAoZWxlbWVudCkgewogICAg
ICAgICAgICAgZWxlbWVudC5mb2N1cygpOwotICAgICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAg
ICAgICAgICB2aWV3czogY29udGVudFdpbmRvdy5FbWJlci5WaWV3LnZpZXdzLAotICAgICAgICAg
ICAgICAgIGVtYmVyUnVuOiBjb250ZW50V2luZG93LkVtYmVyLnJ1biwKLSAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIHJldHVybiBlbGVtZW50OwogICAgICAgICB9KTsKICAgICB9LAogICAgIHRl
c3RzOiBbCi0gICAgICAgIG5ldyBCZW5jaG1hcmtUZXN0U3RlcCgnQWRkaW5nJyArIG51bWJlck9m
SXRlbXNUb0FkZCArICdJdGVtcycsIGZ1bmN0aW9uIChwYXJhbXMpIHsKKyAgICAgICAgbmV3IEJl
bmNobWFya1Rlc3RTdGVwKCdBZGRpbmcnICsgbnVtYmVyT2ZJdGVtc1RvQWRkICsgJ0l0ZW1zJywg
ZnVuY3Rpb24gKG5ld1RvZG8sIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgewogICAg
ICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1iZXJPZkl0ZW1zVG9BZGQ7IGkrKykgewot
ICAgICAgICAgICAgICAgIHBhcmFtcy5lbWJlclJ1bihmdW5jdGlvbiAoKSB7IHBhcmFtcy52aWV3
c1sibmV3LXRvZG8iXS5zZXQoJ3ZhbHVlJywgJ1NvbWV0aGluZyB0byBkbycgKyBpKTsgfSk7Ci0g
ICAgICAgICAgICAgICAgcGFyYW1zLmVtYmVyUnVuKGZ1bmN0aW9uICgpIHsgcGFyYW1zLnZpZXdz
WyJuZXctdG9kbyJdLmluc2VydE5ld2xpbmUoZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jykp
OyB9KTsKKyAgICAgICAgICAgICAgICBuZXdUb2RvLnZhbHVlID0gJ1NvbWV0aGluZyB0byBkbycg
KyBpOworICAgICAgICAgICAgICAgIG5ld1RvZG8uZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2No
YW5nZScpKTsKKyAgICAgICAgICAgICAgICB0cmlnZ2VyRW50ZXIobmV3VG9kbywgJ2tleXByZXNz
Jyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0pLAogICAgICAgICBuZXcgQmVuY2htYXJrVGVz
dFN0ZXAoJ0NvbXBsZXRpbmdBbGxJdGVtcycsIGZ1bmN0aW9uIChwYXJhbXMsIGNvbnRlbnRXaW5k
b3csIGNvbnRlbnREb2N1bWVudCkgewotICAgICAgICAgICAgdmFyIGNoZWNrYm94ZXMgPSBjb250
ZW50RG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmVtYmVyLWNoZWNrYm94Jyk7Ci0gICAgICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoZWNrYm94ZXMubGVuZ3RoOyBpKyspIHsKLSAgICAg
ICAgICAgICAgICB2YXIgdmlldyA9IHBhcmFtcy52aWV3c1tjaGVja2JveGVzW2ldLmlkXTsKLSAg
ICAgICAgICAgICAgICBwYXJhbXMuZW1iZXJSdW4oZnVuY3Rpb24gKCkgeyB2aWV3LnNldCgnY2hl
Y2tlZCcsIHRydWUpOyB9KTsKKyAgICAgICAgICAgIHZhciBjaGVja2JveGVzID0gY29udGVudERv
Y3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy50b2dnbGUnKTsKKyAgICAgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgY2hlY2tib3hlcy5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgICAgICBjaGVj
a2JveGVzW2ldLmNsaWNrKCk7CisgICAgICAgIH0pLAorICAgICAgICBuZXcgQmVuY2htYXJrVGVz
dFN0ZXAoJ0RlbGV0aW5nSXRlbXMnLCBmdW5jdGlvbiAocGFyYW1zLCBjb250ZW50V2luZG93LCBj
b250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgICAgIHZhciBkZWxldGVCdXR0b25zID0gY29udGVu
dERvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5kZXN0cm95Jyk7CisgICAgICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGRlbGV0ZUJ1dHRvbnMubGVuZ3RoOyBpKyspCisgICAgICAgICAgICAg
ICAgZGVsZXRlQnV0dG9uc1tpXS5jbGljaygpOworICAgICAgICB9KSwKKyAgICBdCit9KTsKKwor
U3VpdGVzLnB1c2goeworICAgIG5hbWU6ICdWYW5pbGxhLUVTMjAxNS1CYWJlbC1XZWJwYWNrLVRv
ZG9NVkMnLAorICAgIHVybDogJ3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwt
d2VicGFjay9kaXN0L2luZGV4Lmh0bWwnLAorICAgIHByZXBhcmU6IGZ1bmN0aW9uIChydW5uZXIs
IGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgeworICAgICAgICByZXR1cm4gcnVubmVy
LndhaXRGb3JFbGVtZW50KCcubmV3LXRvZG8nKS50aGVuKGZ1bmN0aW9uIChlbGVtZW50KSB7Cisg
ICAgICAgICAgICBlbGVtZW50LmZvY3VzKCk7CisgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsK
KyAgICAgICAgfSk7CisgICAgfSwKKyAgICB0ZXN0czogWworICAgICAgICBuZXcgQmVuY2htYXJr
VGVzdFN0ZXAoJ0FkZGluZycgKyBudW1iZXJPZkl0ZW1zVG9BZGQgKyAnSXRlbXMnLCBmdW5jdGlv
biAobmV3VG9kbywgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CisgICAgICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IG51bWJlck9mSXRlbXNUb0FkZDsgaSsrKSB7CisgICAgICAg
ICAgICAgICAgbmV3VG9kby52YWx1ZSA9ICdTb21ldGhpbmcgdG8gZG8nICsgaTsKKyAgICAgICAg
ICAgICAgICBuZXdUb2RvLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdjaGFuZ2UnKSk7CisgICAg
ICAgICAgICAgICAgdHJpZ2dlckVudGVyKG5ld1RvZG8sICdrZXlwcmVzcycpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9KSwKKyAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdDb21wbGV0
aW5nQWxsSXRlbXMnLCBmdW5jdGlvbiAocGFyYW1zLCBjb250ZW50V2luZG93LCBjb250ZW50RG9j
dW1lbnQpIHsKKyAgICAgICAgICAgIHZhciBjaGVja2JveGVzID0gY29udGVudERvY3VtZW50LnF1
ZXJ5U2VsZWN0b3JBbGwoJy50b2dnbGUnKTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgY2hlY2tib3hlcy5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgICAgICBjaGVja2JveGVzW2ld
LmNsaWNrKCk7CisgICAgICAgIH0pLAogICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0Rl
bGV0aW5nSXRlbXMnLCBmdW5jdGlvbiAocGFyYW1zLCBjb250ZW50V2luZG93LCBjb250ZW50RG9j
dW1lbnQpIHsKICAgICAgICAgICAgIHZhciBkZWxldGVCdXR0b25zID0gY29udGVudERvY3VtZW50
LnF1ZXJ5U2VsZWN0b3JBbGwoJy5kZXN0cm95Jyk7CiAgICAgICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGRlbGV0ZUJ1dHRvbnMubGVuZ3RoOyBpKyspCi0gICAgICAgICAgICAgICAgcGFyYW1z
LmVtYmVyUnVuKGZ1bmN0aW9uICgpIHsgZGVsZXRlQnV0dG9uc1tpXS5jbGljaygpOyB9KTsKKyAg
ICAgICAgICAgICAgICBkZWxldGVCdXR0b25zW2ldLmNsaWNrKCk7CiAgICAgICAgIH0pLAogICAg
IF0KIH0pOwogCiBTdWl0ZXMucHVzaCh7Ci0gICAgbmFtZTogJ0JhY2tib25lSlMtVG9kb01WQycs
Ci0gICAgdXJsOiAndG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvaW5kZXgu
aHRtbCcsCisgICAgbmFtZTogJ1JlYWN0LVRvZG9NVkMnLAorICAgIHVybDogJ3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L2luZGV4Lmh0bWwnLAogICAgIHByZXBhcmU6IGZ1bmN0
aW9uIChydW5uZXIsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgewotICAgIGNvbnRl
bnRXaW5kb3cuQmFja2JvbmUuc3luYyA9IGZ1bmN0aW9uICgpIHt9Ci0gICAgICAgIHJldHVybiBy
dW5uZXIud2FpdEZvckVsZW1lbnQoJyNuZXctdG9kbycpLnRoZW4oZnVuY3Rpb24gKGVsZW1lbnQp
IHsKKyAgICAgICAgY29udGVudFdpbmRvdy5hcHAuVXRpbHMuc3RvcmUgPSBmdW5jdGlvbiAoKSB7
fQorICAgICAgICByZXR1cm4gcnVubmVyLndhaXRGb3JFbGVtZW50KCcubmV3LXRvZG8nKS50aGVu
KGZ1bmN0aW9uIChlbGVtZW50KSB7CiAgICAgICAgICAgICBlbGVtZW50LmZvY3VzKCk7CiAgICAg
ICAgICAgICByZXR1cm4gZWxlbWVudDsKICAgICAgICAgfSk7CiAgICAgfSwKICAgICB0ZXN0czog
WwogICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0FkZGluZycgKyBudW1iZXJPZkl0ZW1z
VG9BZGQgKyAnSXRlbXMnLCBmdW5jdGlvbiAobmV3VG9kbywgY29udGVudFdpbmRvdywgY29udGVu
dERvY3VtZW50KSB7Ci0gICAgICAgICAgICB2YXIgYXBwVmlldyA9IGNvbnRlbnRXaW5kb3cuYXBw
VmlldzsKLSAgICAgICAgICAgIHZhciBmYWtlRXZlbnQgPSB7d2hpY2g6IGNvbnRlbnRXaW5kb3cu
RU5URVJfS0VZfTsKICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtYmVyT2ZJdGVt
c1RvQWRkOyBpKyspIHsKICAgICAgICAgICAgICAgICBuZXdUb2RvLnZhbHVlID0gJ1NvbWV0aGlu
ZyB0byBkbyAnICsgaTsKLSAgICAgICAgICAgICAgICBhcHBWaWV3LmNyZWF0ZU9uRW50ZXIoZmFr
ZUV2ZW50KTsKKyAgICAgICAgICAgICAgICBuZXdUb2RvLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50
KCdpbnB1dCcsIHsKKyAgICAgICAgICAgICAgICAgIGJ1YmJsZXM6IHRydWUsCisgICAgICAgICAg
ICAgICAgICBjYW5jZWxhYmxlOiB0cnVlCisgICAgICAgICAgICAgICAgfSkpOworICAgICAgICAg
ICAgICAgIHRyaWdnZXJFbnRlcihuZXdUb2RvLCAna2V5ZG93bicpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9KSwKICAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdDb21wbGV0aW5nQWxs
SXRlbXMnLCBmdW5jdGlvbiAobmV3VG9kbywgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50
KSB7CkBAIC05OCw1NyArMTQxLDkyIEBAIFN1aXRlcy5wdXNoKHsKIH0pOwogCiBTdWl0ZXMucHVz
aCh7Ci0gICAgbmFtZTogJ2pRdWVyeS1Ub2RvTVZDJywKLSAgICB1cmw6ICd0b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvaW5kZXguaHRtbCcsCisgICAgbmFtZTogJ1JlYWN0LVJl
ZHV4LVRvZG9NVkMnLAorICAgIHVybDogJ3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Jl
YWN0LXJlZHV4L2Rpc3QvaW5kZXguaHRtbCcsCiAgICAgcHJlcGFyZTogZnVuY3Rpb24gKHJ1bm5l
ciwgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7Ci0gICAgICAgIHJldHVybiBydW5u
ZXIud2FpdEZvckVsZW1lbnQoJyNuZXctdG9kbycpLnRoZW4oZnVuY3Rpb24gKGVsZW1lbnQpIHsK
KyAgICAgICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVudCgnLm5ldy10b2RvJykudGhlbihm
dW5jdGlvbiAoZWxlbWVudCkgewogICAgICAgICAgICAgZWxlbWVudC5mb2N1cygpOwogICAgICAg
ICAgICAgcmV0dXJuIGVsZW1lbnQ7CiAgICAgICAgIH0pOwogICAgIH0sCiAgICAgdGVzdHM6IFsK
ICAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdBZGRpbmcnICsgbnVtYmVyT2ZJdGVtc1Rv
QWRkICsgJ0l0ZW1zJywgZnVuY3Rpb24gKG5ld1RvZG8sIGNvbnRlbnRXaW5kb3csIGNvbnRlbnRE
b2N1bWVudCkgewotICAgICAgICAgICAgdmFyIGFwcCA9IGNvbnRlbnRXaW5kb3cuYXBwOwotICAg
ICAgICAgICAgdmFyIGZha2VFdmVudCA9IHt3aGljaDogYXBwLkVOVEVSX0tFWX07CiAgICAgICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bWJlck9mSXRlbXNUb0FkZDsgaSsrKSB7Ci0gICAg
ICAgICAgICAgICAgbmV3VG9kby52YWx1ZSA9ICdTb21ldGhpbmcgdG8gZG8gJyArIGk7Ci0gICAg
ICAgICAgICAgICAgYXBwLmNyZWF0ZS5jYWxsKG5ld1RvZG8sIGZha2VFdmVudCk7CisgICAgICAg
ICAgICAgICAgbmV3VG9kby52YWx1ZSA9ICdTb21ldGhpbmcgdG8gZG8nICsgaTsKKyAgICAgICAg
ICAgICAgICB0cmlnZ2VyRW50ZXIobmV3VG9kbywgJ2tleWRvd24nKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfSksCi0gICAgICAgIG5ldyBCZW5jaG1hcmtUZXN0U3RlcCgnQ29tcGxldGluZ0Fs
bEl0ZW1zJywgZnVuY3Rpb24gKG5ld1RvZG8sIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVu
dCkgewotICAgICAgICAgICAgdmFyIGFwcCA9IGNvbnRlbnRXaW5kb3cuYXBwOworICAgICAgICBu
ZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0NvbXBsZXRpbmdBbGxJdGVtcycsIGZ1bmN0aW9uIChwYXJh
bXMsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgewogICAgICAgICAgICAgdmFyIGNo
ZWNrYm94ZXMgPSBjb250ZW50RG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRvZ2dsZScpOwot
ICAgICAgICAgICAgdmFyICQgPSBjb250ZW50V2luZG93LiQ7Ci0KLSAgICAgICAgICAgIGl0ZW1J
bmRleFRvSWQgPSBuZXcgQXJyYXkoY2hlY2tib3hlcy5sZW5ndGgpOwogICAgICAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBjaGVja2JveGVzLmxlbmd0aDsgaSsrKQotICAgICAgICAgICAgICAg
IGl0ZW1JbmRleFRvSWRbaV0gPSAkKGNoZWNrYm94ZXNbaV0pLmNsb3Nlc3QoJ2xpJykuZGF0YSgn
aWQnKTsKKyAgICAgICAgICAgICAgICBjaGVja2JveGVzW2ldLmNsaWNrKCk7CisgICAgICAgIH0p
LAorICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0RlbGV0aW5nSXRlbXMnLCBmdW5jdGlv
biAocGFyYW1zLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgICAg
IHZhciBkZWxldGVCdXR0b25zID0gY29udGVudERvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5k
ZXN0cm95Jyk7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRlbGV0ZUJ1dHRvbnMu
bGVuZ3RoOyBpKyspCisgICAgICAgICAgICAgICAgZGVsZXRlQnV0dG9uc1tpXS5jbGljaygpOwor
ICAgICAgICB9KSwKKyAgICBdCit9KTsKIAotICAgICAgICAgICAgYXBwLmdldFRvZG8gPSBmdW5j
dGlvbiAoZWxlbWVudCwgY2FsbGJhY2spIHsKLSAgICAgICAgICAgICAgICB2YXIgc2VsZiA9IHRo
aXM7Ci0gICAgICAgICAgICAgICAgdmFyIGlkID0gaXRlbUluZGV4VG9JZFt0aGlzLmN1cnJlbnRJ
dGVtSW5kZXhdOwotICAgICAgICAgICAgICAgICQuZWFjaCh0aGlzLnRvZG9zLCBmdW5jdGlvbiAo
aiwgdmFsKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2YWwuaWQgPT09IGlkKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBjYWxsYmFjay5hcHBseShzZWxmLCBhcmd1bWVudHMpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgfSk7CitTdWl0ZXMucHVzaCh7CisgICAgbmFtZTogJ0VtYmVySlMt
VG9kb01WQycsCisgICAgdXJsOiAndG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJq
cycsCisgICAgcHJlcGFyZTogZnVuY3Rpb24gKHJ1bm5lciwgY29udGVudFdpbmRvdywgY29udGVu
dERvY3VtZW50KSB7CisgICAgICAgIHJldHVybiBydW5uZXIud2FpdEZvckVsZW1lbnQoJyNuZXct
dG9kbycpLnRoZW4oZnVuY3Rpb24gKGVsZW1lbnQpIHsKKyAgICAgICAgICAgIGVsZW1lbnQuZm9j
dXMoKTsKKyAgICAgICAgICAgIHJldHVybiBlbGVtZW50OworICAgICAgICB9KTsKKyAgICB9LAor
ICAgIHRlc3RzOiBbCisgICAgICAgIG5ldyBCZW5jaG1hcmtUZXN0U3RlcCgnQWRkaW5nJyArIG51
bWJlck9mSXRlbXNUb0FkZCArICdJdGVtcycsIGZ1bmN0aW9uIChuZXdUb2RvLCBjb250ZW50V2lu
ZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgICAgIHZhciBhcHBWaWV3ID0gY29udGVu
dFdpbmRvdy5BcHA7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bWJlck9mSXRl
bXNUb0FkZDsgaSsrKSB7CisgICAgICAgICAgICAgICAgbmV3VG9kby52YWx1ZSA9ICdTb21ldGhp
bmcgdG8gZG8nICsgaTsKKyAgICAgICAgICAgICAgICB0cmlnZ2VyRW50ZXIobmV3VG9kbywgJ2tl
eWRvd24nKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgfSksCisgICAgICAgIG5ldyBCZW5jaG1h
cmtUZXN0U3RlcCgnQ29tcGxldGluZ0FsbEl0ZW1zJywgZnVuY3Rpb24gKHBhcmFtcywgY29udGVu
dFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CisgICAgICAgICAgICB2YXIgY2hlY2tib3hlcyA9
IGNvbnRlbnREb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudG9nZ2xlJyk7CisgICAgICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IGNoZWNrYm94ZXMubGVuZ3RoOyBpKyspCisgICAgICAgICAg
ICAgICAgY2hlY2tib3hlc1tpXS5jbGljaygpOworICAgICAgICB9KSwKKyAgICAgICAgbmV3IEJl
bmNobWFya1Rlc3RTdGVwKCdEZWxldGluZ0l0ZW1zJywgZnVuY3Rpb24gKHBhcmFtcywgY29udGVu
dFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CisgICAgICAgICAgICB2YXIgZGVsZXRlQnV0dG9u
cyA9IGNvbnRlbnREb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZGVzdHJveScpOworICAgICAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkZWxldGVCdXR0b25zLmxlbmd0aDsgaSsrKQorICAg
ICAgICAgICAgICAgIGRlbGV0ZUJ1dHRvbnNbaV0uY2xpY2soKTsKKyAgICAgICAgfSksCisgICAg
XQorfSk7CiAKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hlY2tib3hlcy5sZW5n
dGg7IGkrKykgewotICAgICAgICAgICAgICAgIGFwcC5jdXJyZW50SXRlbUluZGV4ID0gaTsKLSAg
ICAgICAgICAgICAgICBhcHAudG9nZ2xlLmNhbGwoY2hlY2tib3hlc1tpXSk7CitTdWl0ZXMucHVz
aCh7CisgICAgbmFtZTogJ0JhY2tib25lSlMtVG9kb01WQycsCisgICAgdXJsOiAndG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvaW5kZXguaHRtbCcsCisgICAgcHJlcGFyZTog
ZnVuY3Rpb24gKHJ1bm5lciwgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CisgICAg
Y29udGVudFdpbmRvdy5CYWNrYm9uZS5zeW5jID0gZnVuY3Rpb24gKCkge30KKyAgICAgICAgcmV0
dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVudCgnLm5ldy10b2RvJykudGhlbihmdW5jdGlvbiAoZWxl
bWVudCkgeworICAgICAgICAgICAgZWxlbWVudC5mb2N1cygpOworICAgICAgICAgICAgcmV0dXJu
IGVsZW1lbnQ7CisgICAgICAgIH0pOworICAgIH0sCisgICAgdGVzdHM6IFsKKyAgICAgICAgbmV3
IEJlbmNobWFya1Rlc3RTdGVwKCdBZGRpbmcnICsgbnVtYmVyT2ZJdGVtc1RvQWRkICsgJ0l0ZW1z
JywgZnVuY3Rpb24gKG5ld1RvZG8sIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgewor
ICAgICAgICAgICAgdmFyIGFwcFZpZXcgPSBjb250ZW50V2luZG93LmFwcFZpZXc7CisgICAgICAg
ICAgICB2YXIgZmFrZUV2ZW50ID0ge3doaWNoOiAxM307CisgICAgICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IG51bWJlck9mSXRlbXNUb0FkZDsgaSsrKSB7CisgICAgICAgICAgICAgICAgbmV3
VG9kby52YWx1ZSA9ICdTb21ldGhpbmcgdG8gZG8gJyArIGk7CisgICAgICAgICAgICAgICAgdHJp
Z2dlckVudGVyKG5ld1RvZG8sICdrZXlwcmVzcycpOwogICAgICAgICAgICAgfQogICAgICAgICB9
KSwKKyAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdDb21wbGV0aW5nQWxsSXRlbXMnLCBm
dW5jdGlvbiAobmV3VG9kbywgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CisgICAg
ICAgICAgICB2YXIgY2hlY2tib3hlcyA9IGNvbnRlbnREb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxs
KCcudG9nZ2xlJyk7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoZWNrYm94ZXMu
bGVuZ3RoOyBpKyspCisgICAgICAgICAgICAgICAgY2hlY2tib3hlc1tpXS5jbGljaygpOworICAg
ICAgICB9KSwKICAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdEZWxldGluZ0FsbEl0ZW1z
JywgZnVuY3Rpb24gKG5ld1RvZG8sIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgewot
ICAgICAgICAgICAgY29udGVudERvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNjbGVhci1jb21wbGV0
ZWQnKS5jbGljaygpOwotICAgICAgICAgICAgdmFyIGFwcCA9IGNvbnRlbnRXaW5kb3cuYXBwOwog
ICAgICAgICAgICAgdmFyIGRlbGV0ZUJ1dHRvbnMgPSBjb250ZW50RG9jdW1lbnQucXVlcnlTZWxl
Y3RvckFsbCgnLmRlc3Ryb3knKTsKLQotICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBk
ZWxldGVCdXR0b25zLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgYXBwLmN1cnJlbnRJ
dGVtSW5kZXggPSBpOwotICAgICAgICAgICAgICAgIGFwcC5kZXN0cm95LmNhbGwoZGVsZXRlQnV0
dG9uc1tpXSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGRlbGV0ZUJ1dHRvbnMubGVuZ3RoOyBpKyspCisgICAgICAgICAgICAgICAgZGVsZXRlQnV0dG9u
c1tpXS5jbGljaygpOwogICAgICAgICB9KSwKICAgICBdCiB9KTsKQEAgLTE2NCw3ICsyNDIsNiBA
QCBTdWl0ZXMucHVzaCh7CiAgICAgfSwKICAgICB0ZXN0czogWwogICAgICAgICBuZXcgQmVuY2ht
YXJrVGVzdFN0ZXAoJ0FkZGluZycgKyBudW1iZXJPZkl0ZW1zVG9BZGQgKyAnSXRlbXMnLCBmdW5j
dGlvbiAobmV3VG9kbywgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7Ci0gICAgICAg
ICAgICB2YXIgdG9kb212YyA9IGNvbnRlbnRXaW5kb3cudG9kb212YzsKICAgICAgICAgICAgIHZh
ciBzdWJtaXRFdmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdFdmVudCcpOwogICAgICAgICAg
ICAgc3VibWl0RXZlbnQuaW5pdEV2ZW50KCdzdWJtaXQnLCB0cnVlLCB0cnVlKTsKICAgICAgICAg
ICAgIHZhciBpbnB1dEV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7CkBAIC0x
ODksMTEgKzI2Niw0NCBAQCBTdWl0ZXMucHVzaCh7CiB9KTsKIAogU3VpdGVzLnB1c2goewotICAg
IG5hbWU6ICdSZWFjdC1Ub2RvTVZDJywKLSAgICB1cmw6ICd0b2RvbXZjL2xhYnMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL3JlYWN0L2luZGV4Lmh0bWwnLAorICAgIG5hbWU6ICdBbmd1bGFyMi1UeXBl
U2NyaXB0LVRvZG9NVkMnLAorICAgIHVybDogJ3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2FuZ3VsYXIvZGlzdC9pbmRleC5odG1sJywKICAgICBwcmVwYXJlOiBmdW5jdGlvbiAocnVubmVy
LCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKLSAgICAgICAgY29udGVudFdpbmRv
dy5VdGlscy5zdG9yZSA9IGZ1bmN0aW9uICgpIHt9Ci0gICAgICAgIHJldHVybiBydW5uZXIud2Fp
dEZvckVsZW1lbnQoJyNuZXctdG9kbycpLnRoZW4oZnVuY3Rpb24gKGVsZW1lbnQpIHsKKyAgICAg
ICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVudCgnLm5ldy10b2RvJykudGhlbihmdW5jdGlv
biAoZWxlbWVudCkgeworICAgICAgICAgICAgZWxlbWVudC5mb2N1cygpOworICAgICAgICAgICAg
cmV0dXJuIGVsZW1lbnQ7CisgICAgICAgIH0pOworICAgIH0sCisgICAgdGVzdHM6IFsKKyAgICAg
ICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdBZGRpbmcnICsgbnVtYmVyT2ZJdGVtc1RvQWRkICsg
J0l0ZW1zJywgZnVuY3Rpb24gKG5ld1RvZG8sIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVu
dCkgeworICAgICAgICAgICAgdmFyIGFwcFZpZXcgPSBjb250ZW50V2luZG93LkFwcDsKKyAgICAg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtYmVyT2ZJdGVtc1RvQWRkOyBpKyspIHsKKyAg
ICAgICAgICAgICAgICBuZXdUb2RvLnZhbHVlID0gJ1NvbWV0aGluZyB0byBkbycgKyBpOworICAg
ICAgICAgICAgICAgIG5ld1RvZG8uZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2lucHV0Jywgewor
ICAgICAgICAgICAgICAgICAgYnViYmxlczogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgIGNhbmNl
bGFibGU6IHRydWUKKyAgICAgICAgICAgICAgICB9KSk7CisgICAgICAgICAgICAgICAgdHJpZ2dl
ckVudGVyKG5ld1RvZG8sICdrZXl1cCcpOworICAgICAgICAgICAgfQorICAgICAgICB9KSwKKyAg
ICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdDb21wbGV0aW5nQWxsSXRlbXMnLCBmdW5jdGlv
biAocGFyYW1zLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgICAg
IHZhciBjaGVja2JveGVzID0gY29udGVudERvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy50b2dn
bGUnKTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hlY2tib3hlcy5sZW5ndGg7
IGkrKykKKyAgICAgICAgICAgICAgICBjaGVja2JveGVzW2ldLmNsaWNrKCk7CisgICAgICAgIH0p
LAorICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0RlbGV0aW5nSXRlbXMnLCBmdW5jdGlv
biAocGFyYW1zLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgICAg
IHZhciBkZWxldGVCdXR0b25zID0gY29udGVudERvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5k
ZXN0cm95Jyk7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRlbGV0ZUJ1dHRvbnMu
bGVuZ3RoOyBpKyspCisgICAgICAgICAgICAgICAgZGVsZXRlQnV0dG9uc1tpXS5jbGljaygpOwor
ICAgICAgICB9KSwKKyAgICBdCit9KTsKKworU3VpdGVzLnB1c2goeworICAgIG5hbWU6ICdWdWVK
Uy1Ub2RvTVZDJywKKyAgICB1cmw6ICd0b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVq
cy1jbGkvZGlzdC9pbmRleC5odG1sJywKKyAgICBwcmVwYXJlOiBmdW5jdGlvbiAocnVubmVyLCBj
b250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgcmV0dXJuIHJ1bm5lci53
YWl0Rm9yRWxlbWVudCgnLm5ldy10b2RvJykudGhlbihmdW5jdGlvbiAoZWxlbWVudCkgewogICAg
ICAgICAgICAgZWxlbWVudC5mb2N1cygpOwogICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CiAg
ICAgICAgIH0pOwpAQCAtMjAzLDExICszMTMsMTIgQEAgU3VpdGVzLnB1c2goewogICAgICAgICAg
ICAgdmFyIHRvZG9tdmMgPSBjb250ZW50V2luZG93LnRvZG9tdmM7CiAgICAgICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IG51bWJlck9mSXRlbXNUb0FkZDsgaSsrKSB7CiAgICAgICAgICAgICAg
ICAgbmV3VG9kby52YWx1ZSA9ICdTb21ldGhpbmcgdG8gZG8gJyArIGk7Ci0KLSAgICAgICAgICAg
ICAgICB2YXIga2V5ZG93bkV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7Ci0g
ICAgICAgICAgICAgICAga2V5ZG93bkV2ZW50LmluaXRFdmVudCgna2V5ZG93bicsIHRydWUsIHRy
dWUpOwotICAgICAgICAgICAgICAgIGtleWRvd25FdmVudC53aGljaCA9IDEzOyAvLyBWS19FTlRF
UgotICAgICAgICAgICAgICAgIG5ld1RvZG8uZGlzcGF0Y2hFdmVudChrZXlkb3duRXZlbnQpOwor
ICAgICAgICAgICAgICAgIG5ld1RvZG8udmFsdWUgPSAnU29tZXRoaW5nIHRvIGRvJyArIGk7Cisg
ICAgICAgICAgICAgICAgbmV3VG9kby5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnaW5wdXQnLCB7
CisgICAgICAgICAgICAgICAgICBidWJibGVzOiB0cnVlLAorICAgICAgICAgICAgICAgICAgY2Fu
Y2VsYWJsZTogdHJ1ZQorICAgICAgICAgICAgICAgIH0pKTsKKyAgICAgICAgICAgICAgICB0cmln
Z2VyRW50ZXIobmV3VG9kbywgJ2tleXVwJyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0pLAog
ICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0NvbXBsZXRpbmdBbGxJdGVtcycsIGZ1bmN0
aW9uIChuZXdUb2RvLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKQEAgLTIyNCwz
MyArMzM1LDE2MiBAQCBTdWl0ZXMucHVzaCh7CiB9KTsKIAogU3VpdGVzLnB1c2goewotICAgIG5h
bWU6ICdGbGlnaHRKUy1Ub2RvTVZDJywKLSAgICB1cmw6ICd0b2RvbXZjL2RlcGVuZGVuY3ktZXhh
bXBsZXMvZmxpZ2h0L2luZGV4Lmh0bWwnLAorICAgIG5hbWU6ICdqUXVlcnktVG9kb01WQycsCisg
ICAgdXJsOiAndG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L2luZGV4Lmh0bWwn
LAogICAgIHByZXBhcmU6IGZ1bmN0aW9uIChydW5uZXIsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnRE
b2N1bWVudCkgewotICAgICAgICByZXR1cm4gcnVubmVyLndhaXRGb3JFbGVtZW50KCcjYXBwSXNS
ZWFkeScpLnRoZW4oZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgdmFyIG5ld1RvZG8gPSBjb250
ZW50RG9jdW1lbnQucXVlcnlTZWxlY3RvcignI25ldy10b2RvJyk7Ci0gICAgICAgICAgICBuZXdU
b2RvLmZvY3VzKCk7Ci0gICAgICAgICAgICByZXR1cm4gbmV3VG9kbzsKLSAgICAgICAgfSk7Owor
ICAgICAgICByZXR1cm4gcnVubmVyLndhaXRGb3JFbGVtZW50KCcjbmV3LXRvZG8nKS50aGVuKGZ1
bmN0aW9uIChlbGVtZW50KSB7CisgICAgICAgICAgICBlbGVtZW50LmZvY3VzKCk7CisgICAgICAg
ICAgICByZXR1cm4gZWxlbWVudDsKKyAgICAgICAgfSk7CiAgICAgfSwKICAgICB0ZXN0czogWwog
ICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0FkZGluZycgKyBudW1iZXJPZkl0ZW1zVG9B
ZGQgKyAnSXRlbXMnLCBmdW5jdGlvbiAobmV3VG9kbywgY29udGVudFdpbmRvdywgY29udGVudERv
Y3VtZW50KSB7Ci0gICAgICAgICAgICB2YXIgdG9kb212YyA9IGNvbnRlbnRXaW5kb3cudG9kb212
YzsKKyAgICAgICAgICAgIHZhciBhcHAgPSBjb250ZW50V2luZG93LmFwcDsKICAgICAgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgbnVtYmVyT2ZJdGVtc1RvQWRkOyBpKyspIHsKICAgICAgICAg
ICAgICAgICBuZXdUb2RvLnZhbHVlID0gJ1NvbWV0aGluZyB0byBkbyAnICsgaTsKLQotICAgICAg
ICAgICAgICAgIHZhciBrZXlkb3duRXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQn
KTsKLSAgICAgICAgICAgICAgICBrZXlkb3duRXZlbnQuaW5pdEV2ZW50KCdrZXlkb3duJywgdHJ1
ZSwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAga2V5ZG93bkV2ZW50LndoaWNoID0gMTM7IC8vIFZL
X0VOVEVSCi0gICAgICAgICAgICAgICAgbmV3VG9kby5kaXNwYXRjaEV2ZW50KGtleWRvd25FdmVu
dCk7CisgICAgICAgICAgICAgICAgdHJpZ2dlckVudGVyKG5ld1RvZG8sICdrZXl1cCcpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9KSwKICAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdD
b21wbGV0aW5nQWxsSXRlbXMnLCBmdW5jdGlvbiAobmV3VG9kbywgY29udGVudFdpbmRvdywgY29u
dGVudERvY3VtZW50KSB7CisgICAgICAgICAgICB2YXIgYXBwID0gY29udGVudFdpbmRvdy5hcHA7
CiAgICAgICAgICAgICB2YXIgY2hlY2tib3hlcyA9IGNvbnRlbnREb2N1bWVudC5xdWVyeVNlbGVj
dG9yQWxsKCcudG9nZ2xlJyk7CiAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoZWNr
Ym94ZXMubGVuZ3RoOyBpKyspCiAgICAgICAgICAgICAgICAgY2hlY2tib3hlc1tpXS5jbGljaygp
OwogICAgICAgICB9KSwKICAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdEZWxldGluZ0Fs
bEl0ZW1zJywgZnVuY3Rpb24gKG5ld1RvZG8sIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVu
dCkgeworICAgICAgICAgICAgdmFyIGNsZWFyID0gY29udGVudERvY3VtZW50LnF1ZXJ5U2VsZWN0
b3IoJyNjbGVhci1jb21wbGV0ZWQnKTsKKyAgICAgICAgICAgIGlmIChjbGVhciAhPT0gbnVsbCkg
eworICAgICAgICAgICAgICAgIGNsZWFyLmNsaWNrKCk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICB2YXIgYXBwID0gY29udGVudFdpbmRvdy5hcHA7CisgICAgICAgICAgICB2YXIgZGVsZXRl
QnV0dG9ucyA9IGNvbnRlbnREb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZGVzdHJveScpOwor
CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRlbGV0ZUJ1dHRvbnMubGVuZ3RoOyBp
KyspIHsKKyAgICAgICAgICAgICAgICBhcHAuY3VycmVudEl0ZW1JbmRleCA9IGk7CisgICAgICAg
ICAgICAgICAgYXBwLmRlc3Ryb3koeyB0YXJnZXQ6IGRlbGV0ZUJ1dHRvbnNbaV0gfSk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0pLAorICAgIF0KK30pCisKK1N1aXRlcy5wdXNoKHsKKyAgICBu
YW1lOiAnUHJlYWN0LVRvZG9NVkMnLAorICAgIHVybDogJ3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL3ByZWFjdC9kaXN0L2luZGV4Lmh0bWwnLAorICAgIHByZXBhcmU6IGZ1bmN0aW9uIChy
dW5uZXIsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgeworICAgICAgICByZXR1cm4g
cnVubmVyLndhaXRGb3JFbGVtZW50KCcubmV3LXRvZG8nKS50aGVuKGZ1bmN0aW9uIChlbGVtZW50
KSB7CisgICAgICAgICAgICBlbGVtZW50LmZvY3VzKCk7CisgICAgICAgICAgICByZXR1cm4gZWxl
bWVudDsKKyAgICAgICAgfSk7CisgICAgfSwKKyAgICB0ZXN0czogWworICAgICAgICBuZXcgQmVu
Y2htYXJrVGVzdFN0ZXAoJ0FkZGluZycgKyBudW1iZXJPZkl0ZW1zVG9BZGQgKyAnSXRlbXMnLCBm
dW5jdGlvbiAobmV3VG9kbywgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CisgICAg
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bWJlck9mSXRlbXNUb0FkZDsgaSsrKSB7Cisg
ICAgICAgICAgICAgICAgbmV3VG9kby52YWx1ZSA9ICdTb21ldGhpbmcgdG8gZG8nICsgaTsKKyAg
ICAgICAgICAgICAgICB0cmlnZ2VyRW50ZXIobmV3VG9kbywgJ2tleWRvd24nKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfSksCisgICAgICAgIG5ldyBCZW5jaG1hcmtUZXN0U3RlcCgnQ29tcGxl
dGluZ0FsbEl0ZW1zJywgZnVuY3Rpb24gKHBhcmFtcywgY29udGVudFdpbmRvdywgY29udGVudERv
Y3VtZW50KSB7CisgICAgICAgICAgICB2YXIgY2hlY2tib3hlcyA9IGNvbnRlbnREb2N1bWVudC5x
dWVyeVNlbGVjdG9yQWxsKCcudG9nZ2xlJyk7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IGNoZWNrYm94ZXMubGVuZ3RoOyBpKyspCisgICAgICAgICAgICAgICAgY2hlY2tib3hlc1tp
XS5jbGljaygpOworICAgICAgICB9KSwKKyAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdE
ZWxldGluZ0l0ZW1zJywgZnVuY3Rpb24gKHBhcmFtcywgY29udGVudFdpbmRvdywgY29udGVudERv
Y3VtZW50KSB7CisgICAgICAgICAgICB2YXIgZGVsZXRlQnV0dG9ucyA9IGNvbnRlbnREb2N1bWVu
dC5xdWVyeVNlbGVjdG9yQWxsKCcuZGVzdHJveScpOworICAgICAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBkZWxldGVCdXR0b25zLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgICAgIGRlbGV0
ZUJ1dHRvbnNbaV0uY2xpY2soKTsKKyAgICAgICAgfSksCisgICAgXQorfSk7CisKK1N1aXRlcy5w
dXNoKHsKKyAgICBuYW1lOiAnSW5mZXJuby1Ub2RvTVZDJywKKyAgICB1cmw6ICd0b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9pbmZlcm5vL2luZGV4Lmh0bWwnLAorICAgIHByZXBhcmU6IGZ1
bmN0aW9uIChydW5uZXIsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgeworICAgICAg
ICByZXR1cm4gcnVubmVyLndhaXRGb3JFbGVtZW50KCcubmV3LXRvZG8nKS50aGVuKGZ1bmN0aW9u
IChlbGVtZW50KSB7CisgICAgICAgICAgICBlbGVtZW50LmZvY3VzKCk7CisgICAgICAgICAgICBy
ZXR1cm4gZWxlbWVudDsKKyAgICAgICAgfSk7CisgICAgfSwKKyAgICB0ZXN0czogWworICAgICAg
ICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0FkZGluZycgKyBudW1iZXJPZkl0ZW1zVG9BZGQgKyAn
SXRlbXMnLCBmdW5jdGlvbiAobmV3VG9kbywgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50
KSB7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bWJlck9mSXRlbXNUb0FkZDsg
aSsrKSB7CisgICAgICAgICAgICAgICAgbmV3VG9kby52YWx1ZSA9ICdTb21ldGhpbmcgdG8gZG8n
ICsgaTsKKyAgICAgICAgICAgICAgICBuZXdUb2RvLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdj
aGFuZ2UnLCB7CisgICAgICAgICAgICAgICAgICBidWJibGVzOiB0cnVlLAorICAgICAgICAgICAg
ICAgICAgY2FuY2VsYWJsZTogdHJ1ZQorICAgICAgICAgICAgICAgIH0pKTsKKyAgICAgICAgICAg
ICAgICB0cmlnZ2VyRW50ZXIobmV3VG9kbywgJ2tleWRvd24nKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfSksCisgICAgICAgIG5ldyBCZW5jaG1hcmtUZXN0U3RlcCgnQ29tcGxldGluZ0FsbEl0
ZW1zJywgZnVuY3Rpb24gKHBhcmFtcywgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7
CisgICAgICAgICAgICB2YXIgY2hlY2tib3hlcyA9IGNvbnRlbnREb2N1bWVudC5xdWVyeVNlbGVj
dG9yQWxsKCcudG9nZ2xlJyk7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoZWNr
Ym94ZXMubGVuZ3RoOyBpKyspCisgICAgICAgICAgICAgICAgY2hlY2tib3hlc1tpXS5jbGljaygp
OworICAgICAgICB9KSwKKyAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdEZWxldGluZ0l0
ZW1zJywgZnVuY3Rpb24gKHBhcmFtcywgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7
CisgICAgICAgICAgICB2YXIgZGVsZXRlQnV0dG9ucyA9IGNvbnRlbnREb2N1bWVudC5xdWVyeVNl
bGVjdG9yQWxsKCcuZGVzdHJveScpOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBk
ZWxldGVCdXR0b25zLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgICAgIGRlbGV0ZUJ1dHRvbnNb
aV0uY2xpY2soKTsKKyAgICAgICAgfSksCisgICAgXQorfSk7CisKK1N1aXRlcy5wdXNoKHsKKyAg
ICBuYW1lOiAnRWxtLVRvZG9NVkMnLAorICAgIHVybDogJ3RvZG9tdmMvZnVuY3Rpb25hbC1wcm9n
LWV4YW1wbGVzL2VsbS9pbmRleC5odG1sJywKKyAgICBwcmVwYXJlOiBmdW5jdGlvbiAocnVubmVy
LCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgcmV0dXJuIHJ1bm5l
ci53YWl0Rm9yRWxlbWVudCgnLm5ldy10b2RvJykudGhlbihmdW5jdGlvbiAoZWxlbWVudCkgewor
ICAgICAgICAgICAgZWxlbWVudC5mb2N1cygpOworICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7
CisgICAgICAgIH0pOworICAgIH0sCisgICAgdGVzdHM6IFsKKyAgICAgICAgbmV3IEJlbmNobWFy
a1Rlc3RTdGVwKCdBZGRpbmcnICsgbnVtYmVyT2ZJdGVtc1RvQWRkICsgJ0l0ZW1zJywgZnVuY3Rp
b24gKG5ld1RvZG8sIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgeworICAgICAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1iZXJPZkl0ZW1zVG9BZGQ7IGkrKykgeworICAgICAg
ICAgICAgICAgIG5ld1RvZG8udmFsdWUgPSAnU29tZXRoaW5nIHRvIGRvJyArIGk7CisgICAgICAg
ICAgICAgICAgbmV3VG9kby5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnaW5wdXQnLCB7CisgICAg
ICAgICAgICAgICAgICBidWJibGVzOiB0cnVlLAorICAgICAgICAgICAgICAgICAgY2FuY2VsYWJs
ZTogdHJ1ZQorICAgICAgICAgICAgICAgIH0pKTsKKyAgICAgICAgICAgICAgICB0cmlnZ2VyRW50
ZXIobmV3VG9kbywgJ2tleWRvd24nKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSksCisgICAg
ICAgIG5ldyBCZW5jaG1hcmtUZXN0U3RlcCgnQ29tcGxldGluZ0FsbEl0ZW1zJywgZnVuY3Rpb24g
KHBhcmFtcywgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CisgICAgICAgICAgICB2
YXIgY2hlY2tib3hlcyA9IGNvbnRlbnREb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudG9nZ2xl
Jyk7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoZWNrYm94ZXMubGVuZ3RoOyBp
KyspCisgICAgICAgICAgICAgICAgY2hlY2tib3hlc1tpXS5jbGljaygpOworICAgICAgICB9KSwK
KyAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdEZWxldGluZ0l0ZW1zJywgZnVuY3Rpb24g
KHBhcmFtcywgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CisgICAgICAgICAgICB2
YXIgZGVsZXRlQnV0dG9ucyA9IGNvbnRlbnREb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZGVz
dHJveScpOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkZWxldGVCdXR0b25zLmxl
bmd0aDsgaSsrKQorICAgICAgICAgICAgICAgIGRlbGV0ZUJ1dHRvbnNbaV0uY2xpY2soKTsKKyAg
ICAgICAgfSksCisgICAgXQorfSk7CisKK1N1aXRlcy5wdXNoKHsKKyAgICBkaXNhYmxlZDogdHJ1
ZSwKKyAgICBuYW1lOiAnRmxpZ2h0LVRvZG9NVkMnLAorICAgIHVybDogJ3RvZG9tdmMvZGVwZW5k
ZW5jeS1leGFtcGxlcy9mbGlnaHQvZmxpZ2h0L2luZGV4Lmh0bWwnLAorICAgIHByZXBhcmU6IGZ1
bmN0aW9uIChydW5uZXIsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgeworICAgICAg
ICByZXR1cm4gcnVubmVyLndhaXRGb3JFbGVtZW50KCcjbmV3LXRvZG8nKS50aGVuKGZ1bmN0aW9u
IChlbGVtZW50KSB7CisgICAgICAgICAgICBlbGVtZW50LmZvY3VzKCk7CisgICAgICAgICAgICBy
ZXR1cm4gZWxlbWVudDsKKyAgICAgICAgfSk7CisgICAgfSwKKyAgICB0ZXN0czogWworICAgICAg
ICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0FkZGluZycgKyBudW1iZXJPZkl0ZW1zVG9BZGQgKyAn
SXRlbXMnLCBmdW5jdGlvbiAobmV3VG9kbywgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50
KSB7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bWJlck9mSXRlbXNUb0FkZDsg
aSsrKSB7CisgICAgICAgICAgICAgICAgbmV3VG9kby52YWx1ZSA9ICdTb21ldGhpbmcgdG8gZG8n
ICsgaTsKKyAgICAgICAgICAgICAgICB0cmlnZ2VyRW50ZXIobmV3VG9kbywgJ2tleWRvd24nKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfSksCisgICAgICAgIG5ldyBCZW5jaG1hcmtUZXN0U3Rl
cCgnQ29tcGxldGluZ0FsbEl0ZW1zJywgZnVuY3Rpb24gKHBhcmFtcywgY29udGVudFdpbmRvdywg
Y29udGVudERvY3VtZW50KSB7CisgICAgICAgICAgICB2YXIgY2hlY2tib3hlcyA9IGNvbnRlbnRE
b2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudG9nZ2xlJyk7CisgICAgICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGNoZWNrYm94ZXMubGVuZ3RoOyBpKyspCisgICAgICAgICAgICAgICAgY2hl
Y2tib3hlc1tpXS5jbGljaygpOworICAgICAgICB9KSwKKyAgICAgICAgbmV3IEJlbmNobWFya1Rl
c3RTdGVwKCdEZWxldGluZ0l0ZW1zJywgZnVuY3Rpb24gKHBhcmFtcywgY29udGVudFdpbmRvdywg
Y29udGVudERvY3VtZW50KSB7CiAgICAgICAgICAgICB2YXIgZGVsZXRlQnV0dG9ucyA9IGNvbnRl
bnREb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZGVzdHJveScpOwogICAgICAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBkZWxldGVCdXR0b25zLmxlbmd0aDsgaSsrKQogICAgICAgICAgICAg
ICAgIGRlbGV0ZUJ1dHRvbnNbaV0uY2xpY2soKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2Fu
Z3VsYXIvZGlzdC9pbmRleC5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9kaXN0L2luZGV4Lmh0
bWwKaW5kZXggNzZiZGM4NmNmOGRkNGQ1ZWEwNDg5NTFjODIxYjRjYTFkNmZlZGU3ZC4uM2ExYTll
Mjg3ZDZjYTBjZjZjMTg5ZjJmYTk3OTI1OThhNjhmZDMyZSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvYW5ndWxhci9kaXN0L2luZGV4Lmh0bWwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9kaXN0
L2luZGV4Lmh0bWwKQEAgLTksNyArOSw3IEBACiAgIDxsaW5rIHJlbD0iaWNvbiIgdHlwZT0iaW1h
Z2UveC1pY29uIiBocmVmPSJmYXZpY29uLmljbyI+CiAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iYXNzZXRzL2Nzcy90b2RvbXZjLWNvbW1vbi5jc3MiPgogICA8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9ImFzc2V0cy9jc3MvdG9kb212Yy1hcHAuY3NzIj4KLTxsaW5rIGhyZWY9InN0
eWxlcy5kNDFkOGNkOThmMDBiMjA0ZTk4MC5idW5kbGUuY3NzIiByZWw9InN0eWxlc2hlZXQiLz48
L2hlYWQ+Cis8L2hlYWQ+CiA8Ym9keT4KICAgPGFwcC1yb290PkxvYWRpbmcuLi48L2FwcC1yb290
PgogICA8IS0tIENyZWRpdHM6IEFkZHkgT3NtYW5pIC0tPgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvZW1iZXJqcy9hc3NldHMvdG9kb212Yy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvYXNzZXRz
L3RvZG9tdmMuanMKaW5kZXggNjE5YTAwNGIwZmNmZGY4Mjc1M2QyNDUwYjhiZmMxYmFiYTY1ZWFh
Ni4uN2Q0ZGZiMzZjNzFhZDQ2ZTBlZDRiMWQ0YTUyZDdmZTdlYjYyZTAwNCAxMDA2NDQKLS0tIGEv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvZW1iZXJqcy9hc3NldHMvdG9kb212Yy5qcworKysgYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9l
bWJlcmpzL2Fzc2V0cy90b2RvbXZjLmpzCkBAIC0zNjMsMTkgKzM2MywxNSBAQCBkZWZpbmUoJ3Rv
ZG9tdmMvc2VydmljZXMvbWVtb3J5JywgWydleHBvcnRzJ10sIGZ1bmN0aW9uIChleHBvcnRzKSB7
CiAgICAgICBsb2NhbFN0b3JhZ2VNZW1vcnkubGVuZ3RoID0gMDsKICAgICB9OwogCi0gICAgaWYg
KHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JykgewotICAgICAgbW9kdWxlLmV4cG9ydHMgPSBs
b2NhbFN0b3JhZ2VNZW1vcnk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIHJvb3QubG9jYWxTdG9yYWdl
TWVtb3J5ID0gbG9jYWxTdG9yYWdlTWVtb3J5OwotICAgIH0KLSAgfSkodGhpcyk7CisgICAgcm9v
dC5sb2NhbFN0b3JhZ2VNZW1vcnkgPSBsb2NhbFN0b3JhZ2VNZW1vcnk7CisgIH0pKHdpbmRvdyk7
CiB9KTsKIGRlZmluZSgndG9kb212Yy9zZXJ2aWNlcy9yZXBvJywgWydleHBvcnRzJywgJ2VtYmVy
JywgJ3RvZG9tdmMvc2VydmljZXMvbWVtb3J5J10sIGZ1bmN0aW9uIChleHBvcnRzLCBfZW1iZXIs
IF90b2RvbXZjU2VydmljZXNNZW1vcnkpIHsKICAgICBleHBvcnRzWydkZWZhdWx0J10gPSBfZW1i
ZXJbJ2RlZmF1bHQnXS5TZXJ2aWNlLmV4dGVuZCh7CiAgICAgICAgIGxhc3RJZDogMCwKICAgICAg
ICAgZGF0YTogbnVsbCwKICAgICAgICAgZmluZEFsbDogZnVuY3Rpb24gZmluZEFsbCgpIHsKLSAg
ICAgICAgICAgIHJldHVybiB0aGlzLmdldCgnZGF0YScpIHx8IHRoaXMuc2V0KCdkYXRhJywgSlNP
Ti5wYXJzZShfdG9kb212Y1NlcnZpY2VzTWVtb3J5LmdldEl0ZW0oJ3RvZG9zJykgfHwgJ1tdJykp
OworICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KCdkYXRhJykgfHwgdGhpcy5zZXQoJ2RhdGEn
LCBKU09OLnBhcnNlKHdpbmRvdy5sb2NhbFN0b3JhZ2VNZW1vcnkuZ2V0SXRlbSgndG9kb3MnKSB8
fCAnW10nKSk7CiAgICAgICAgIH0sCiAKICAgICAgICAgYWRkOiBmdW5jdGlvbiBhZGQoYXR0cnMp
IHsKQEAgLTM5MSw3ICszODcsNyBAQCBkZWZpbmUoJ3RvZG9tdmMvc2VydmljZXMvcmVwbycsIFsn
ZXhwb3J0cycsICdlbWJlcicsICd0b2RvbXZjL3NlcnZpY2VzL21lbW9yeSddLAogICAgICAgICB9
LAogCiAgICAgICAgIHBlcnNpc3Q6IGZ1bmN0aW9uIHBlcnNpc3QoKSB7Ci0gICAgICAgICAgICBf
dG9kb212Y1NlcnZpY2VzTWVtb3J5LnNldEl0ZW0oJ3RvZG9zJywgSlNPTi5zdHJpbmdpZnkodGhp
cy5nZXQoJ2RhdGEnKSkpOworICAgICAgICAgICAgd2luZG93LmxvY2FsU3RvcmFnZU1lbW9yeS5z
ZXRJdGVtKCd0b2RvcycsIEpTT04uc3RyaW5naWZ5KHRoaXMuZ2V0KCdkYXRhJykpKTsKICAgICAg
ICAgfQogICAgIH0pOwogfSk7CkBAIC0xMjU3LDcgKzEyNTMsNyBAQCBjYXRjaChlcnIpIHsKIC8q
IGpzaGludCBpZ25vcmU6c3RhcnQgKi8KIAogaWYgKCFydW5uaW5nVGVzdHMpIHsKLSAgcmVxdWly
ZSgidG9kb212Yy9hcHAiKVsiZGVmYXVsdCJdLmNyZWF0ZSh7Im5hbWUiOiJ0b2RvbXZjIiwidmVy
c2lvbiI6IjAuMC4wKzVkYmM1ZmI5In0pOworICByZXF1aXJlKCJ0b2RvbXZjL2FwcCIpWyJkZWZh
dWx0Il0uY3JlYXRlKHsibmFtZSI6InRvZG9tdmMiLCJ2ZXJzaW9uIjoiMC4wLjArIn0pOwogfQog
CiAvKiBqc2hpbnQgaWdub3JlOmVuZCAqLwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJq
cy9pbmRleC5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9pbmRleC5odG1sCmluZGV4IDdlNDhj
MTk5MjdkNTFjZTQ4ZTgzMWE3ZWU1ZjAxNDNmNjY2NTA2NGEuLjc4MWVhNjNhMmU2YzBkN2Q5M2I1
YmIzZDQ1NzZhY2IwYzgzMjkxODMgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvaW5k
ZXguaHRtbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL2luZGV4Lmh0bWwKQEAgLTYsMjEgKzYs
MjAgQEAKICAgICA8dGl0bGU+VG9kb212YzwvdGl0bGU+CiAgICAgPG1ldGEgbmFtZT0iZGVzY3Jp
cHRpb24iIGNvbnRlbnQ9IiI+CiAgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9Indp
ZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xIj4KLSAgICA8YmFzZSBocmVmPSIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvZW1iZXJqcyIgLz4KKyAgICA8YmFzZSBocmVmPSIvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvIiAvPgogICAgIAotPG1l
dGEgbmFtZT0idG9kb212Yy9jb25maWcvZW52aXJvbm1lbnQiIGNvbnRlbnQ9IiU3QiUyMm1vZHVs
ZVByZWZpeCUyMiUzQSUyMnRvZG9tdmMlMjIlMkMlMjJlbnZpcm9ubWVudCUyMiUzQSUyMmRldmVs
b3BtZW50JTIyJTJDJTIyYmFzZVVSTCUyMiUzQW51bGwlMkMlMjJsb2NhdGlvblR5cGUlMjIlM0El
MjJhdXRvJTIyJTJDJTIyRW1iZXJFTlYlMjIlM0ElN0IlMjJGRUFUVVJFUyUyMiUzQSU3QiU3RCU3
RCUyQyUyMkFQUCUyMiUzQSU3QiUyMm5hbWUlMjIlM0ElMjJ0b2RvbXZjJTIyJTJDJTIydmVyc2lv
biUyMiUzQSUyMjAuMC4wKzVkYmM1ZmI5JTIyJTdEJTJDJTIyZXhwb3J0QXBwbGljYXRpb25HbG9i
YWwlMjIlM0F0cnVlJTdEIiAvPgorPG1ldGEgbmFtZT0idG9kb212Yy9jb25maWcvZW52aXJvbm1l
bnQiIGNvbnRlbnQ9IiU3QiUyMm1vZHVsZVByZWZpeCUyMiUzQSUyMnRvZG9tdmMlMjIlMkMlMjJl
bnZpcm9ubWVudCUyMiUzQSUyMmRldmVsb3BtZW50JTIyJTJDJTIyYmFzZVVSTCUyMiUzQW51bGwl
MkMlMjJsb2NhdGlvblR5cGUlMjIlM0ElMjJhdXRvJTIyJTJDJTIyRW1iZXJFTlYlMjIlM0ElN0Il
MjJGRUFUVVJFUyUyMiUzQSU3QiU3RCU3RCUyQyUyMkFQUCUyMiUzQSU3QiUyMm5hbWUlMjIlM0El
MjJ0b2RvbXZjJTIyJTJDJTIydmVyc2lvbiUyMiUzQSUyMjAuMC4wKyUyMiU3RCUyQyUyMmV4cG9y
dEFwcGxpY2F0aW9uR2xvYmFsJTIyJTNBdHJ1ZSU3RCIgLz4KIAotICAgIDxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvYXNzZXRzL3ZlbmRvci5jc3MiPgot
ICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvYXNz
ZXRzL3RvZG9tdmMuY3NzIj4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9ImFzc2V0
cy92ZW5kb3IuY3NzIj4KIAogICAgIAogICA8L2hlYWQ+CiAgIDxib2R5PgogICAgIAogCi0gICAg
PHNjcmlwdCBzcmM9Ii9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL2Fzc2V0cy92ZW5kb3IuanMiPjwvc2Ny
aXB0PgotICAgIDxzY3JpcHQgc3JjPSIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9hc3NldHMvdG9kb212
Yy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9ImFzc2V0cy92ZW5kb3IuanMiPjwvc2Ny
aXB0PgorICAgIDxzY3JpcHQgc3JjPSJhc3NldHMvdG9kb212Yy5qcyI+PC9zY3JpcHQ+CiAKICAg
ICAKICAgPC9ib2R5PgotPC9odG1sPgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNlL2FwcC9zZXJ2aWNlcy9t
ZW1vcnkuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS9hcHAvc2VydmljZXMvbWVtb3J5
LmpzCmluZGV4IDRiOWQ1YWY5ZDZkMWQ4ZDU5YzBjZGIyNjg4YmZlYzJhZGE4MmYzYzIuLjc0YzVj
ZGYxOWZkOWZkYjI2YTkwZjA5YTMwMWQ0M2RiZDM1MjdkNjEgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2VtYmVyanMvc291cmNlL2FwcC9zZXJ2aWNlcy9tZW1vcnkuanMKKysrIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvZW1iZXJqcy9zb3VyY2UvYXBwL3NlcnZpY2VzL21lbW9yeS5qcwpAQCAtNzQsOSArNzQsNSBA
QAogICAgIGxvY2FsU3RvcmFnZU1lbW9yeS5sZW5ndGggPSAwOwogICB9OwogCi0gIGlmICh0eXBl
b2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpIHsKLSAgICBtb2R1bGUuZXhwb3J0cyA9IGxvY2FsU3Rv
cmFnZU1lbW9yeTsKLSAgfSBlbHNlIHsKICAgICByb290LmxvY2FsU3RvcmFnZU1lbW9yeSA9IGxv
Y2FsU3RvcmFnZU1lbW9yeTsKLSAgfQotfSkodGhpcyk7Cit9KSh3aW5kb3cpOwpkaWZmIC0tZ2l0
IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvYXBwL3NlcnZpY2VzL3JlcG8uanMgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9lbWJlcmpzL3NvdXJjZS9hcHAvc2VydmljZXMvcmVwby5qcwppbmRleCAwMTQ3ZmYz
ZWZjN2U4YWFlZjI3YjcxMDA1MDVjMDFhZDExZjlhY2QxLi5jZmZhMzg1OGZkNzdiYmJhNWM0MzVl
YTVjOWM4ODk4YWQxNzczYjhhIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJj
ZS9hcHAvc2VydmljZXMvcmVwby5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS9h
cHAvc2VydmljZXMvcmVwby5qcwpAQCAtMSwxMiArMSwxMiBAQAogaW1wb3J0IEVtYmVyIGZyb20g
J2VtYmVyJzsKLWltcG9ydCAqIGFzIGxvY2FsU3RvcmFnZU1lbW9yeSBmcm9tICcuL21lbW9yeSc7
CitpbXBvcnQgbG9jYWxTdG9yYWdlTWVtb3J5IGZyb20gJy4vbWVtb3J5JzsKIAogZXhwb3J0IGRl
ZmF1bHQgRW1iZXIuU2VydmljZS5leHRlbmQoewogICAgIGxhc3RJZDogMCwKICAgICBkYXRhOiBu
dWxsLAogICAgIGZpbmRBbGwoKSB7CiAgICAgICAgIHJldHVybiB0aGlzLmdldCgnZGF0YScpIHx8
Ci0gICAgICAgICAgICB0aGlzLnNldCgnZGF0YScsIEpTT04ucGFyc2UobG9jYWxTdG9yYWdlTWVt
b3J5LmdldEl0ZW0oJ3RvZG9zJykgfHwgJ1tdJykpOworICAgICAgICAgICAgdGhpcy5zZXQoJ2Rh
dGEnLCBKU09OLnBhcnNlKHdpbmRvdy5sb2NhbFN0b3JhZ2VNZW1vcnkuZ2V0SXRlbSgndG9kb3Mn
KSB8fCAnW10nKSk7CiAgICAgfSwKIAogICAgIGFkZChhdHRycykgewpAQCAtMjIsNiArMjIsNiBA
QCBleHBvcnQgZGVmYXVsdCBFbWJlci5TZXJ2aWNlLmV4dGVuZCh7CiAgICAgfSwKIAogICAgIHBl
cnNpc3QoKSB7Ci0gICAgICAgIGxvY2FsU3RvcmFnZU1lbW9yeS5zZXRJdGVtKCd0b2RvcycsIEpT
T04uc3RyaW5naWZ5KHRoaXMuZ2V0KCdkYXRhJykpKTsKKyAgICAgICAgd2luZG93LmxvY2FsU3Rv
cmFnZU1lbW9yeS5zZXRJdGVtKCd0b2RvcycsIEpTT04uc3RyaW5naWZ5KHRoaXMuZ2V0KCdkYXRh
JykpKTsKICAgICB9CiB9KTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvdGVzdHMv
aW5kZXguaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvdGVzdHMvaW5kZXguaHRtbAppbmRleCBl
MmEyN2MxNDliNmRlMDdjNjkzMzEwOTg0MjVmZGQ4ZDVkN2EyYTBlLi4yYWIyMThlN2E5NTQzZWYy
MGFjZDRhM2U3NmVlNWE1NzA2MzYzNTEzIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpz
L3Rlc3RzL2luZGV4Lmh0bWwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy90ZXN0cy9pbmRleC5o
dG1sCkBAIC04LDcgKzgsNyBAQAogICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3
aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSI+CiAKICAgICA8YmFzZSBocmVmPSIv
IiAvPgotPG1ldGEgbmFtZT0idG9kb212Yy9jb25maWcvZW52aXJvbm1lbnQiIGNvbnRlbnQ9IiU3
QiUyMm1vZHVsZVByZWZpeCUyMiUzQSUyMnRvZG9tdmMlMjIlMkMlMjJlbnZpcm9ubWVudCUyMiUz
QSUyMnRlc3QlMjIlMkMlMjJiYXNlVVJMJTIyJTNBJTIyLyUyMiUyQyUyMmxvY2F0aW9uVHlwZSUy
MiUzQSUyMm5vbmUlMjIlMkMlMjJFbWJlckVOViUyMiUzQSU3QiUyMkZFQVRVUkVTJTIyJTNBJTdC
JTdEJTdEJTJDJTIyQVBQJTIyJTNBJTdCJTIyTE9HX0FDVElWRV9HRU5FUkFUSU9OJTIyJTNBZmFs
c2UlMkMlMjJMT0dfVklFV19MT09LVVBTJTIyJTNBZmFsc2UlMkMlMjJyb290RWxlbWVudCUyMiUz
QSUyMiUyM2VtYmVyLXRlc3RpbmclMjIlMkMlMjJuYW1lJTIyJTNBJTIydG9kb212YyUyMiUyQyUy
MnZlcnNpb24lMjIlM0ElMjIwLjAuMCs1ZGJjNWZiOSUyMiU3RCUyQyUyMmV4cG9ydEFwcGxpY2F0
aW9uR2xvYmFsJTIyJTNBdHJ1ZSU3RCIgLz4KKzxtZXRhIG5hbWU9InRvZG9tdmMvY29uZmlnL2Vu
dmlyb25tZW50IiBjb250ZW50PSIlN0IlMjJtb2R1bGVQcmVmaXglMjIlM0ElMjJ0b2RvbXZjJTIy
JTJDJTIyZW52aXJvbm1lbnQlMjIlM0ElMjJ0ZXN0JTIyJTJDJTIyYmFzZVVSTCUyMiUzQSUyMi8l
MjIlMkMlMjJsb2NhdGlvblR5cGUlMjIlM0ElMjJub25lJTIyJTJDJTIyRW1iZXJFTlYlMjIlM0El
N0IlMjJGRUFUVVJFUyUyMiUzQSU3QiU3RCU3RCUyQyUyMkFQUCUyMiUzQSU3QiUyMkxPR19BQ1RJ
VkVfR0VORVJBVElPTiUyMiUzQWZhbHNlJTJDJTIyTE9HX1ZJRVdfTE9PS1VQUyUyMiUzQWZhbHNl
JTJDJTIycm9vdEVsZW1lbnQlMjIlM0ElMjIlMjNlbWJlci10ZXN0aW5nJTIyJTJDJTIybmFtZSUy
MiUzQSUyMnRvZG9tdmMlMjIlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyMC4wLjArJTIyJTdEJTJDJTIy
ZXhwb3J0QXBwbGljYXRpb25HbG9iYWwlMjIlM0F0cnVlJTdEIiAvPgogICAgIAogCiAgICAgPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJhc3NldHMvdmVuZG9yLmNzcyI+CmRpZmYgLS1naXQg
YS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9qcXVlcnkvaW5kZXguaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9pbmRl
eC5odG1sCmluZGV4IDQxNGFjNThmNjFhYmMyYjcyMmRiNTNmZWVjZTdlMDNlNTJmZDMzNDQuLjFj
ZjgwM2UxNDJhMTMwZTRjY2ZmMWNhYmI4MTI3YzQ3YzcwNmQwZWMgMTAwNjQ0Ci0tLSBhL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2pxdWVyeS9pbmRleC5odG1sCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9pbmRleC5o
dG1sCkBAIC01NSw3ICs1NSw3IEBACiAgICAgICAgIDwhLS0gPHNjcmlwdCBzcmM9Im5vZGVfbW9k
dWxlcy90b2RvbXZjLWNvbW1vbi9iYXNlLmpzIj48L3NjcmlwdD4gLS0+CiAgICAgICAgIDxzY3Jp
cHQgc3JjPSJub2RlX21vZHVsZXMvanF1ZXJ5L2Rpc3QvanF1ZXJ5LmpzIj48L3NjcmlwdD4KICAg
ICAgICAgPHNjcmlwdCBzcmM9Im5vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvaGFuZGxlYmFy
cy5qcyI+PC9zY3JpcHQ+Ci0gICAgICAgIDxzY3JpcHQgc3JjPSJub2RlX21vZHVsZXMvZGlyZWN0
b3IvYnVpbGQvZGlyZWN0b3IuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0ibm9k
ZV9tb2R1bGVzL2RpcmVjdG9yL2Rpc3QvZGlyZWN0b3IuanMiPjwvc2NyaXB0PgogICAgICAgICA8
c2NyaXB0IHNyYz0ianMvYXBwLmpzIj48L3NjcmlwdD4KICAgICA8L2JvZHk+CiA8L2h0bWw+CmRp
ZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL0xJQ0VO
U0UgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL0xJQ0VOU0UKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOGE0OTgxMDg1MDE5ZjkxN2MxMjM3NjlhMGMyN2NkODcwZTM1YTc4NAotLS0gL2Rl
di9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvTElD
RU5TRQpAQCAtMCwwICsxLDE5IEBACitDb3B5cmlnaHQgKGMpIDIwMTEgQ2hhcmxpZSBSb2JiaW5z
LCBQYW9sbyBGcmFnb21lbmksICYgdGhlIENvbnRyaWJ1dG9ycy4KKworUGVybWlzc2lvbiBpcyBo
ZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEg
Y29weQorb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVz
ICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKK2luIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3Ry
aWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKK3RvIHVzZSwg
Y29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5k
L29yIHNlbGwKK2NvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0
byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKworVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5k
IHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KK2FsbCBjb3BpZXMg
b3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorCitUSEUgU09GVFdBUkUg
SVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVT
UyBPUgorSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFksCitGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
TkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKK0FVVEhPUlMgT1IgQ09Q
WVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIK
K0xJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RI
RVJXSVNFLCBBUklTSU5HIEZST00sCitPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBT
T0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOCitUSEUgU09GVFdBUkUuCmRp
ZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL2Jvd2Vy
Lmpzb24gYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL2Jvd2VyLmpz
b24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZjkzOWJiNDcwZWQ2NGRiMTExYWFhOGM2MzNkMjMyZmE5ZWJmY2YwNAot
LS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0
b3IvYm93ZXIuanNvbgpAQCAtMCwwICsxLDkgQEAKK3sKKyAgIm5hbWUiOiAiZGlyZWN0b3IiLAor
ICAidmVyc2lvbiI6ICIxLjIuNyIsCisgICJkZXBlbmRlbmNpZXMiOiB7fSwKKyAgIm1haW4iOiAi
YnVpbGQvZGlyZWN0b3IuanMiLAorICAic2NyaXB0cyI6IFsKKyAgICAiYnVpbGQvZGlyZWN0b3Iu
anMiCisgIF0KK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMv
ZGlyZWN0b3IvZGlzdC9kaXJlY3Rvci5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVs
ZXMvZGlyZWN0b3IvZGlzdC9kaXJlY3Rvci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMDM4ODc4NzIzNWI3MWMw
ZjVjYjk2N2U3OTVjMmM2NjlhNTZmMzY5Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
anF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9kaXN0L2RpcmVjdG9yLmpzCkBAIC0wLDAgKzEs
NzI1IEBACisKKworLy8KKy8vIEdlbmVyYXRlZCBvbiBUdWUgRGVjIDE2IDIwMTQgMTI6MTM6NDcg
R01UKzAxMDAgKENFVCkgYnkgQ2hhcmxpZSBSb2JiaW5zLCBQYW9sbyBGcmFnb21lbmkgJiB0aGUg
Q29udHJpYnV0b3JzIChVc2luZyBDb2Rlc3VyZ2VvbikuCisvLyBWZXJzaW9uIDEuMi42CisvLwor
CisoZnVuY3Rpb24gKGV4cG9ydHMpIHsKKworLyoKKyAqIGJyb3dzZXIuanM6IEJyb3dzZXIgc3Bl
Y2lmaWMgZnVuY3Rpb25hbGl0eSBmb3IgZGlyZWN0b3IuCisgKgorICogKEMpIDIwMTEsIENoYXJs
aWUgUm9iYmlucywgUGFvbG8gRnJhZ29tZW5pLCAmIHRoZSBDb250cmlidXRvcnMuCisgKiBNSVQg
TElDRU5TRQorICoKKyAqLworCit2YXIgZGxvYyA9IGRvY3VtZW50LmxvY2F0aW9uOworCitmdW5j
dGlvbiBkbG9jSGFzaEVtcHR5KCkgeworICAvLyBOb24tSUUgYnJvd3NlcnMgcmV0dXJuICcnIHdo
ZW4gdGhlIGFkZHJlc3MgYmFyIHNob3dzICcjJzsgRGlyZWN0b3IncyBsb2dpYworICAvLyBhc3N1
bWVzIGJvdGggbWVhbiBlbXB0eS4KKyAgcmV0dXJuIGRsb2MuaGFzaCA9PT0gJycgfHwgZGxvYy5o
YXNoID09PSAnIyc7Cit9CisKK3ZhciBsaXN0ZW5lciA9IHsKKyAgbW9kZTogJ21vZGVybicsCisg
IGhhc2g6IGRsb2MuaGFzaCwKKyAgaGlzdG9yeTogZmFsc2UsCisKKyAgY2hlY2s6IGZ1bmN0aW9u
ICgpIHsKKyAgICB2YXIgaCA9IGRsb2MuaGFzaDsKKyAgICBpZiAoaCAhPSB0aGlzLmhhc2gpIHsK
KyAgICAgIHRoaXMuaGFzaCA9IGg7CisgICAgICB0aGlzLm9uSGFzaENoYW5nZWQoKTsKKyAgICB9
CisgIH0sCisKKyAgZmlyZTogZnVuY3Rpb24gKCkgeworICAgIGlmICh0aGlzLm1vZGUgPT09ICdt
b2Rlcm4nKSB7CisgICAgICB0aGlzLmhpc3RvcnkgPT09IHRydWUgPyB3aW5kb3cub25wb3BzdGF0
ZSgpIDogd2luZG93Lm9uaGFzaGNoYW5nZSgpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHRo
aXMub25IYXNoQ2hhbmdlZCgpOworICAgIH0KKyAgfSwKKworICBpbml0OiBmdW5jdGlvbiAoZm4s
IGhpc3RvcnkpIHsKKyAgICB2YXIgc2VsZiA9IHRoaXM7CisgICAgdGhpcy5oaXN0b3J5ID0gaGlz
dG9yeTsKKworICAgIGlmICghUm91dGVyLmxpc3RlbmVycykgeworICAgICAgUm91dGVyLmxpc3Rl
bmVycyA9IFtdOworICAgIH0KKworICAgIGZ1bmN0aW9uIG9uY2hhbmdlKG9uQ2hhbmdlRXZlbnQp
IHsKKyAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gUm91dGVyLmxpc3RlbmVycy5sZW5ndGg7IGkg
PCBsOyBpKyspIHsKKyAgICAgICAgUm91dGVyLmxpc3RlbmVyc1tpXShvbkNoYW5nZUV2ZW50KTsK
KyAgICAgIH0KKyAgICB9CisKKyAgICAvL25vdGUgSUU4IGlzIGJlaW5nIGNvdW50ZWQgYXMgJ21v
ZGVybicgYmVjYXVzZSBpdCBoYXMgdGhlIGhhc2hjaGFuZ2UgZXZlbnQKKyAgICBpZiAoJ29uaGFz
aGNoYW5nZScgaW4gd2luZG93ICYmIChkb2N1bWVudC5kb2N1bWVudE1vZGUgPT09IHVuZGVmaW5l
ZAorICAgICAgfHwgZG9jdW1lbnQuZG9jdW1lbnRNb2RlID4gNykpIHsKKyAgICAgIC8vIEF0IGxl
YXN0IGZvciBub3cgSFRNTDUgaGlzdG9yeSBpcyBhdmFpbGFibGUgZm9yICdtb2Rlcm4nIGJyb3dz
ZXJzIG9ubHkKKyAgICAgIGlmICh0aGlzLmhpc3RvcnkgPT09IHRydWUpIHsKKyAgICAgICAgLy8g
VGhlcmUgaXMgYW4gb2xkIGJ1ZyBpbiBDaHJvbWUgdGhhdCBjYXVzZXMgb25wb3BzdGF0ZSB0byBm
aXJlIGV2ZW4KKyAgICAgICAgLy8gdXBvbiBpbml0aWFsIHBhZ2UgbG9hZC4gU2luY2UgdGhlIGhh
bmRsZXIgaXMgcnVuIG1hbnVhbGx5IGluIGluaXQoKSwKKyAgICAgICAgLy8gdGhpcyB3b3VsZCBj
YXVzZSBDaHJvbWUgdG8gcnVuIGl0IHR3aXNlLiBDdXJyZW50bHkgdGhlIG9ubHkKKyAgICAgICAg
Ly8gd29ya2Fyb3VuZCBzZWVtcyB0byBiZSB0byBzZXQgdGhlIGhhbmRsZXIgYWZ0ZXIgdGhlIGlu
aXRpYWwgcGFnZSBsb2FkCisgICAgICAgIC8vIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9jaHJv
bWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTYzMDQwCisgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7CisgICAgICAgICAgd2luZG93Lm9ucG9wc3RhdGUgPSBvbmNoYW5nZTsKKyAgICAgICAgfSwg
NTAwKTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICB3aW5kb3cub25oYXNoY2hhbmdl
ID0gb25jaGFuZ2U7CisgICAgICB9CisgICAgICB0aGlzLm1vZGUgPSAnbW9kZXJuJzsKKyAgICB9
CisgICAgZWxzZSB7CisgICAgICAvLworICAgICAgLy8gSUUgc3VwcG9ydCwgYmFzZWQgb24gYSBj
b25jZXB0IGJ5IEVyaWsgQXJ2aWRzb24gLi4uCisgICAgICAvLworICAgICAgdmFyIGZyYW1lID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7CisgICAgICBmcmFtZS5pZCA9ICdzdGF0
ZS1mcmFtZSc7CisgICAgICBmcmFtZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOworICAgICAgZG9j
dW1lbnQuYm9keS5hcHBlbmRDaGlsZChmcmFtZSk7CisgICAgICB0aGlzLndyaXRlRnJhbWUoJycp
OworCisgICAgICBpZiAoJ29ucHJvcGVydHljaGFuZ2UnIGluIGRvY3VtZW50ICYmICdhdHRhY2hF
dmVudCcgaW4gZG9jdW1lbnQpIHsKKyAgICAgICAgZG9jdW1lbnQuYXR0YWNoRXZlbnQoJ29ucHJv
cGVydHljaGFuZ2UnLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgaWYgKGV2ZW50LnByb3BlcnR5
TmFtZSA9PT0gJ2xvY2F0aW9uJykgeworICAgICAgICAgICAgc2VsZi5jaGVjaygpOworICAgICAg
ICAgIH0KKyAgICAgICAgfSk7CisgICAgICB9CisKKyAgICAgIHdpbmRvdy5zZXRJbnRlcnZhbChm
dW5jdGlvbiAoKSB7IHNlbGYuY2hlY2soKTsgfSwgNTApOworCisgICAgICB0aGlzLm9uSGFzaENo
YW5nZWQgPSBvbmNoYW5nZTsKKyAgICAgIHRoaXMubW9kZSA9ICdsZWdhY3knOworICAgIH0KKwor
ICAgIFJvdXRlci5saXN0ZW5lcnMucHVzaChmbik7CisKKyAgICByZXR1cm4gdGhpcy5tb2RlOwor
ICB9LAorCisgIGRlc3Ryb3k6IGZ1bmN0aW9uIChmbikgeworICAgIGlmICghUm91dGVyIHx8ICFS
b3V0ZXIubGlzdGVuZXJzKSB7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgdmFyIGxpc3Rl
bmVycyA9IFJvdXRlci5saXN0ZW5lcnM7CisKKyAgICBmb3IgKHZhciBpID0gbGlzdGVuZXJzLmxl
bmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7CisgICAgICBpZiAobGlzdGVuZXJzW2ldID09PSBmbikg
eworICAgICAgICBsaXN0ZW5lcnMuc3BsaWNlKGksIDEpOworICAgICAgfQorICAgIH0KKyAgfSwK
KworICBzZXRIYXNoOiBmdW5jdGlvbiAocykgeworICAgIC8vIE1vemlsbGEgYWx3YXlzIGFkZHMg
YW4gZW50cnkgdG8gdGhlIGhpc3RvcnkKKyAgICBpZiAodGhpcy5tb2RlID09PSAnbGVnYWN5Jykg
eworICAgICAgdGhpcy53cml0ZUZyYW1lKHMpOworICAgIH0KKworICAgIGlmICh0aGlzLmhpc3Rv
cnkgPT09IHRydWUpIHsKKyAgICAgIHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZSh7fSwgZG9jdW1l
bnQudGl0bGUsIHMpOworICAgICAgLy8gRmlyZSBhbiBvbnBvcHN0YXRlIGV2ZW50IG1hbnVhbGx5
IHNpbmNlIHB1c2hpbmcgZG9lcyBub3Qgb2J2aW91c2x5CisgICAgICAvLyB0cmlnZ2VyIHRoZSBw
b3AgZXZlbnQuCisgICAgICB0aGlzLmZpcmUoKTsKKyAgICB9IGVsc2UgeworICAgICAgZGxvYy5o
YXNoID0gKHNbMF0gPT09ICcvJykgPyBzIDogJy8nICsgczsKKyAgICB9CisgICAgcmV0dXJuIHRo
aXM7CisgIH0sCisKKyAgd3JpdGVGcmFtZTogZnVuY3Rpb24gKHMpIHsKKyAgICAvLyBJRSBzdXBw
b3J0Li4uCisgICAgdmFyIGYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3RhdGUtZnJhbWUn
KTsKKyAgICB2YXIgZCA9IGYuY29udGVudERvY3VtZW50IHx8IGYuY29udGVudFdpbmRvdy5kb2N1
bWVudDsKKyAgICBkLm9wZW4oKTsKKyAgICBkLndyaXRlKCI8c2NyaXB0Pl9oYXNoID0gJyIgKyBz
ICsgIic7IG9ubG9hZCA9IHBhcmVudC5saXN0ZW5lci5zeW5jSGFzaDs8c2NyaXB0PiIpOworICAg
IGQuY2xvc2UoKTsKKyAgfSwKKworICBzeW5jSGFzaDogZnVuY3Rpb24gKCkgeworICAgIC8vIElF
IHN1cHBvcnQuLi4KKyAgICB2YXIgcyA9IHRoaXMuX2hhc2g7CisgICAgaWYgKHMgIT0gZGxvYy5o
YXNoKSB7CisgICAgICBkbG9jLmhhc2ggPSBzOworICAgIH0KKyAgICByZXR1cm4gdGhpczsKKyAg
fSwKKworICBvbkhhc2hDaGFuZ2VkOiBmdW5jdGlvbiAoKSB7fQorfTsKKwordmFyIFJvdXRlciA9
IGV4cG9ydHMuUm91dGVyID0gZnVuY3Rpb24gKHJvdXRlcykgeworICBpZiAoISh0aGlzIGluc3Rh
bmNlb2YgUm91dGVyKSkgcmV0dXJuIG5ldyBSb3V0ZXIocm91dGVzKTsKKworICB0aGlzLnBhcmFt
cyAgID0ge307CisgIHRoaXMucm91dGVzICAgPSB7fTsKKyAgdGhpcy5tZXRob2RzICA9IFsnb24n
LCAnb25jZScsICdhZnRlcicsICdiZWZvcmUnXTsKKyAgdGhpcy5zY29wZSAgICA9IFtdOworICB0
aGlzLl9tZXRob2RzID0ge307CisKKyAgdGhpcy5faW5zZXJ0ID0gdGhpcy5pbnNlcnQ7CisgIHRo
aXMuaW5zZXJ0ID0gdGhpcy5pbnNlcnRFeDsKKworICB0aGlzLmhpc3RvcnlTdXBwb3J0ID0gKHdp
bmRvdy5oaXN0b3J5ICE9IG51bGwgPyB3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUgOiBudWxsKSAh
PSBudWxsCisKKyAgdGhpcy5jb25maWd1cmUoKTsKKyAgdGhpcy5tb3VudChyb3V0ZXMgfHwge30p
OworfTsKKworUm91dGVyLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24gKHIpIHsKKyAgdmFyIHNl
bGYgPSB0aGlzCisgICAgLCByb3V0ZVRvOworICB0aGlzLmhhbmRsZXIgPSBmdW5jdGlvbihvbkNo
YW5nZUV2ZW50KSB7CisgICAgdmFyIG5ld1VSTCA9IG9uQ2hhbmdlRXZlbnQgJiYgb25DaGFuZ2VF
dmVudC5uZXdVUkwgfHwgd2luZG93LmxvY2F0aW9uLmhhc2g7CisgICAgdmFyIHVybCA9IHNlbGYu
aGlzdG9yeSA9PT0gdHJ1ZSA/IHNlbGYuZ2V0UGF0aCgpIDogbmV3VVJMLnJlcGxhY2UoLy4qIy8s
ICcnKTsKKyAgICBzZWxmLmRpc3BhdGNoKCdvbicsIHVybC5jaGFyQXQoMCkgPT09ICcvJyA/IHVy
bCA6ICcvJyArIHVybCk7CisgIH07CisKKyAgbGlzdGVuZXIuaW5pdCh0aGlzLmhhbmRsZXIsIHRo
aXMuaGlzdG9yeSk7CisKKyAgaWYgKHRoaXMuaGlzdG9yeSA9PT0gZmFsc2UpIHsKKyAgICBpZiAo
ZGxvY0hhc2hFbXB0eSgpICYmIHIpIHsKKyAgICAgIGRsb2MuaGFzaCA9IHI7CisgICAgfSBlbHNl
IGlmICghZGxvY0hhc2hFbXB0eSgpKSB7CisgICAgICBzZWxmLmRpc3BhdGNoKCdvbicsICcvJyAr
IGRsb2MuaGFzaC5yZXBsYWNlKC9eKCNcL3wjfFwvKS8sICcnKSk7CisgICAgfQorICB9CisgIGVs
c2UgeworICAgIGlmICh0aGlzLmNvbnZlcnRfaGFzaF9pbl9pbml0KSB7CisgICAgICAvLyBVc2Ug
aGFzaCBhcyByb3V0ZQorICAgICAgcm91dGVUbyA9IGRsb2NIYXNoRW1wdHkoKSAmJiByID8gciA6
ICFkbG9jSGFzaEVtcHR5KCkgPyBkbG9jLmhhc2gucmVwbGFjZSgvXiMvLCAnJykgOiBudWxsOwor
ICAgICAgaWYgKHJvdXRlVG8pIHsKKyAgICAgICAgd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRl
KHt9LCBkb2N1bWVudC50aXRsZSwgcm91dGVUbyk7CisgICAgICB9CisgICAgfQorICAgIGVsc2Ug
eworICAgICAgLy8gVXNlIGNhbm9uaWNhbCB1cmwKKyAgICAgIHJvdXRlVG8gPSB0aGlzLmdldFBh
dGgoKTsKKyAgICB9CisKKyAgICAvLyBSb3V0ZXIgaGFzIGJlZW4gaW5pdGlhbGl6ZWQsIGJ1dCBk
dWUgdG8gdGhlIGNocm9tZSBidWcgaXQgd2lsbCBub3QKKyAgICAvLyB5ZXQgYWN0dWFsbHkgcm91
dGUgSFRNTDUgaGlzdG9yeSBzdGF0ZSBjaGFuZ2VzLiBUaHVzLCBkZWNpZGUgaWYgc2hvdWxkIHJv
dXRlLgorICAgIGlmIChyb3V0ZVRvIHx8IHRoaXMucnVuX2luX2luaXQgPT09IHRydWUpIHsKKyAg
ICAgIHRoaXMuaGFuZGxlcigpOworICAgIH0KKyAgfQorCisgIHJldHVybiB0aGlzOworfTsKKwor
Um91dGVyLnByb3RvdHlwZS5leHBsb2RlID0gZnVuY3Rpb24gKCkgeworICB2YXIgdiA9IHRoaXMu
aGlzdG9yeSA9PT0gdHJ1ZSA/IHRoaXMuZ2V0UGF0aCgpIDogZGxvYy5oYXNoOworICBpZiAodi5j
aGFyQXQoMSkgPT09ICcvJykgeyB2PXYuc2xpY2UoMSkgfQorICByZXR1cm4gdi5zbGljZSgxLCB2
Lmxlbmd0aCkuc3BsaXQoIi8iKTsKK307CisKK1JvdXRlci5wcm90b3R5cGUuc2V0Um91dGUgPSBm
dW5jdGlvbiAoaSwgdiwgdmFsKSB7CisgIHZhciB1cmwgPSB0aGlzLmV4cGxvZGUoKTsKKworICBp
ZiAodHlwZW9mIGkgPT09ICdudW1iZXInICYmIHR5cGVvZiB2ID09PSAnc3RyaW5nJykgeworICAg
IHVybFtpXSA9IHY7CisgIH0KKyAgZWxzZSBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHsK
KyAgICB1cmwuc3BsaWNlKGksIHYsIHMpOworICB9CisgIGVsc2UgeworICAgIHVybCA9IFtpXTsK
KyAgfQorCisgIGxpc3RlbmVyLnNldEhhc2godXJsLmpvaW4oJy8nKSk7CisgIHJldHVybiB1cmw7
Cit9OworCisvLworLy8gIyMjIGZ1bmN0aW9uIGluc2VydEV4KG1ldGhvZCwgcGF0aCwgcm91dGUs
IHBhcmVudCkKKy8vICMjIyMgQG1ldGhvZCB7c3RyaW5nfSBNZXRob2QgdG8gaW5zZXJ0IHRoZSBz
cGVjaWZpYyBgcm91dGVgLgorLy8gIyMjIyBAcGF0aCB7QXJyYXl9IFBhcnNlZCBwYXRoIHRvIGlu
c2VydCB0aGUgYHJvdXRlYCBhdC4KKy8vICMjIyMgQHJvdXRlIHtBcnJheXxmdW5jdGlvbn0gUm91
dGUgaGFuZGxlcnMgdG8gaW5zZXJ0LgorLy8gIyMjIyBAcGFyZW50IHtPYmplY3R9ICoqT3B0aW9u
YWwqKiBQYXJlbnQgInJvdXRlcyIgdG8gaW5zZXJ0IGludG8uCisvLyBpbnNlcnQgYSBjYWxsYmFj
ayB0aGF0IHdpbGwgb25seSBvY2N1ciBvbmNlIHBlciB0aGUgbWF0Y2hlZCByb3V0ZS4KKy8vCitS
b3V0ZXIucHJvdG90eXBlLmluc2VydEV4ID0gZnVuY3Rpb24obWV0aG9kLCBwYXRoLCByb3V0ZSwg
cGFyZW50KSB7CisgIGlmIChtZXRob2QgPT09ICJvbmNlIikgeworICAgIG1ldGhvZCA9ICJvbiI7
CisgICAgcm91dGUgPSBmdW5jdGlvbihyb3V0ZSkgeworICAgICAgdmFyIG9uY2UgPSBmYWxzZTsK
KyAgICAgIHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAgaWYgKG9uY2UpIHJldHVybjsKKyAg
ICAgICAgb25jZSA9IHRydWU7CisgICAgICAgIHJldHVybiByb3V0ZS5hcHBseSh0aGlzLCBhcmd1
bWVudHMpOworICAgICAgfTsKKyAgICB9KHJvdXRlKTsKKyAgfQorICByZXR1cm4gdGhpcy5faW5z
ZXJ0KG1ldGhvZCwgcGF0aCwgcm91dGUsIHBhcmVudCk7Cit9OworCitSb3V0ZXIucHJvdG90eXBl
LmdldFJvdXRlID0gZnVuY3Rpb24gKHYpIHsKKyAgdmFyIHJldCA9IHY7CisKKyAgaWYgKHR5cGVv
ZiB2ID09PSAibnVtYmVyIikgeworICAgIHJldCA9IHRoaXMuZXhwbG9kZSgpW3ZdOworICB9Cisg
IGVsc2UgaWYgKHR5cGVvZiB2ID09PSAic3RyaW5nIil7CisgICAgdmFyIGggPSB0aGlzLmV4cGxv
ZGUoKTsKKyAgICByZXQgPSBoLmluZGV4T2Yodik7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0ID0g
dGhpcy5leHBsb2RlKCk7CisgIH0KKworICByZXR1cm4gcmV0OworfTsKKworUm91dGVyLnByb3Rv
dHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkgeworICBsaXN0ZW5lci5kZXN0cm95KHRoaXMuaGFu
ZGxlcik7CisgIHJldHVybiB0aGlzOworfTsKKworUm91dGVyLnByb3RvdHlwZS5nZXRQYXRoID0g
ZnVuY3Rpb24gKCkgeworICB2YXIgcGF0aCA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTsKKyAg
aWYgKHBhdGguc3Vic3RyKDAsIDEpICE9PSAnLycpIHsKKyAgICBwYXRoID0gJy8nICsgcGF0aDsK
KyAgfQorICByZXR1cm4gcGF0aDsKK307CitmdW5jdGlvbiBfZXZlcnkoYXJyLCBpdGVyYXRvcikg
eworICBmb3IgKHZhciBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkgKz0gMSkgeworICAgIGlmIChp
dGVyYXRvcihhcnJbaV0sIGksIGFycikgPT09IGZhbHNlKSB7CisgICAgICByZXR1cm47CisgICAg
fQorICB9Cit9CisKK2Z1bmN0aW9uIF9mbGF0dGVuKGFycikgeworICB2YXIgZmxhdCA9IFtdOwor
ICBmb3IgKHZhciBpID0gMCwgbiA9IGFyci5sZW5ndGg7IGkgPCBuOyBpKyspIHsKKyAgICBmbGF0
ID0gZmxhdC5jb25jYXQoYXJyW2ldKTsKKyAgfQorICByZXR1cm4gZmxhdDsKK30KKworZnVuY3Rp
b24gX2FzeW5jRXZlcnlTZXJpZXMoYXJyLCBpdGVyYXRvciwgY2FsbGJhY2spIHsKKyAgaWYgKCFh
cnIubGVuZ3RoKSB7CisgICAgcmV0dXJuIGNhbGxiYWNrKCk7CisgIH0KKyAgdmFyIGNvbXBsZXRl
ZCA9IDA7CisgIChmdW5jdGlvbiBpdGVyYXRlKCkgeworICAgIGl0ZXJhdG9yKGFycltjb21wbGV0
ZWRdLCBmdW5jdGlvbihlcnIpIHsKKyAgICAgIGlmIChlcnIgfHwgZXJyID09PSBmYWxzZSkgewor
ICAgICAgICBjYWxsYmFjayhlcnIpOworICAgICAgICBjYWxsYmFjayA9IGZ1bmN0aW9uKCkge307
CisgICAgICB9IGVsc2UgeworICAgICAgICBjb21wbGV0ZWQgKz0gMTsKKyAgICAgICAgaWYgKGNv
bXBsZXRlZCA9PT0gYXJyLmxlbmd0aCkgeworICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgaXRlcmF0ZSgpOworICAgICAgICB9CisgICAgICB9CisgICAg
fSk7CisgIH0pKCk7Cit9CisKK2Z1bmN0aW9uIHBhcmFtaWZ5U3RyaW5nKHN0ciwgcGFyYW1zLCBt
b2QpIHsKKyAgbW9kID0gc3RyOworICBmb3IgKHZhciBwYXJhbSBpbiBwYXJhbXMpIHsKKyAgICBp
ZiAocGFyYW1zLmhhc093blByb3BlcnR5KHBhcmFtKSkgeworICAgICAgbW9kID0gcGFyYW1zW3Bh
cmFtXShzdHIpOworICAgICAgaWYgKG1vZCAhPT0gc3RyKSB7CisgICAgICAgIGJyZWFrOworICAg
ICAgfQorICAgIH0KKyAgfQorICByZXR1cm4gbW9kID09PSBzdHIgPyAiKFsuX2EtekEtWjAtOS0l
KCldKykiIDogbW9kOworfQorCitmdW5jdGlvbiByZWdpZnlTdHJpbmcoc3RyLCBwYXJhbXMpIHsK
KyAgdmFyIG1hdGNoZXMsIGxhc3QgPSAwLCBvdXQgPSAiIjsKKyAgd2hpbGUgKG1hdGNoZXMgPSBz
dHIuc3Vic3RyKGxhc3QpLm1hdGNoKC9bXlx3XGRcLSAlQCZdKlwqW15cd1xkXC0gJUAmXSovKSkg
eworICAgIGxhc3QgPSBtYXRjaGVzLmluZGV4ICsgbWF0Y2hlc1swXS5sZW5ndGg7CisgICAgbWF0
Y2hlc1swXSA9IG1hdGNoZXNbMF0ucmVwbGFjZSgvXlwqLywgIihbXy4oKSFcXCAlQCZhLXpBLVow
LTktXSspIik7CisgICAgb3V0ICs9IHN0ci5zdWJzdHIoMCwgbWF0Y2hlcy5pbmRleCkgKyBtYXRj
aGVzWzBdOworICB9CisgIHN0ciA9IG91dCArPSBzdHIuc3Vic3RyKGxhc3QpOworICB2YXIgY2Fw
dHVyZXMgPSBzdHIubWF0Y2goLzooW15cL10rKS9pZyksIGNhcHR1cmUsIGxlbmd0aDsKKyAgaWYg
KGNhcHR1cmVzKSB7CisgICAgbGVuZ3RoID0gY2FwdHVyZXMubGVuZ3RoOworICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgIGNhcHR1cmUgPSBjYXB0dXJlc1tpXTsK
KyAgICAgIGlmIChjYXB0dXJlLnNsaWNlKDAsIDIpID09PSAiOjoiKSB7CisgICAgICAgIHN0ciA9
IGNhcHR1cmUuc2xpY2UoMSk7CisgICAgICB9IGVsc2UgeworICAgICAgICBzdHIgPSBzdHIucmVw
bGFjZShjYXB0dXJlLCBwYXJhbWlmeVN0cmluZyhjYXB0dXJlLCBwYXJhbXMpKTsKKyAgICAgIH0K
KyAgICB9CisgIH0KKyAgcmV0dXJuIHN0cjsKK30KKworZnVuY3Rpb24gdGVybWluYXRvcihyb3V0
ZXMsIGRlbGltaXRlciwgc3RhcnQsIHN0b3ApIHsKKyAgdmFyIGxhc3QgPSAwLCBsZWZ0ID0gMCwg
cmlnaHQgPSAwLCBzdGFydCA9IChzdGFydCB8fCAiKCIpLnRvU3RyaW5nKCksIHN0b3AgPSAoc3Rv
cCB8fCAiKSIpLnRvU3RyaW5nKCksIGk7CisgIGZvciAoaSA9IDA7IGkgPCByb3V0ZXMubGVuZ3Ro
OyBpKyspIHsKKyAgICB2YXIgY2h1bmsgPSByb3V0ZXNbaV07CisgICAgaWYgKGNodW5rLmluZGV4
T2Yoc3RhcnQsIGxhc3QpID4gY2h1bmsuaW5kZXhPZihzdG9wLCBsYXN0KSB8fCB+Y2h1bmsuaW5k
ZXhPZihzdGFydCwgbGFzdCkgJiYgIX5jaHVuay5pbmRleE9mKHN0b3AsIGxhc3QpIHx8ICF+Y2h1
bmsuaW5kZXhPZihzdGFydCwgbGFzdCkgJiYgfmNodW5rLmluZGV4T2Yoc3RvcCwgbGFzdCkpIHsK
KyAgICAgIGxlZnQgPSBjaHVuay5pbmRleE9mKHN0YXJ0LCBsYXN0KTsKKyAgICAgIHJpZ2h0ID0g
Y2h1bmsuaW5kZXhPZihzdG9wLCBsYXN0KTsKKyAgICAgIGlmICh+bGVmdCAmJiAhfnJpZ2h0IHx8
ICF+bGVmdCAmJiB+cmlnaHQpIHsKKyAgICAgICAgdmFyIHRtcCA9IHJvdXRlcy5zbGljZSgwLCAo
aSB8fCAxKSArIDEpLmpvaW4oZGVsaW1pdGVyKTsKKyAgICAgICAgcm91dGVzID0gWyB0bXAgXS5j
b25jYXQocm91dGVzLnNsaWNlKChpIHx8IDEpICsgMSkpOworICAgICAgfQorICAgICAgbGFzdCA9
IChyaWdodCA+IGxlZnQgPyByaWdodCA6IGxlZnQpICsgMTsKKyAgICAgIGkgPSAwOworICAgIH0g
ZWxzZSB7CisgICAgICBsYXN0ID0gMDsKKyAgICB9CisgIH0KKyAgcmV0dXJuIHJvdXRlczsKK30K
KwordmFyIFFVRVJZX1NFUEFSQVRPUiA9IC9cPy4qLzsKKworUm91dGVyLnByb3RvdHlwZS5jb25m
aWd1cmUgPSBmdW5jdGlvbihvcHRpb25zKSB7CisgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9Owor
ICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubWV0aG9kcy5sZW5ndGg7IGkrKykgeworICAgIHRo
aXMuX21ldGhvZHNbdGhpcy5tZXRob2RzW2ldXSA9IHRydWU7CisgIH0KKyAgdGhpcy5yZWN1cnNl
ID0gb3B0aW9ucy5yZWN1cnNlIHx8IHRoaXMucmVjdXJzZSB8fCBmYWxzZTsKKyAgdGhpcy5hc3lu
YyA9IG9wdGlvbnMuYXN5bmMgfHwgZmFsc2U7CisgIHRoaXMuZGVsaW1pdGVyID0gb3B0aW9ucy5k
ZWxpbWl0ZXIgfHwgIi8iOworICB0aGlzLnN0cmljdCA9IHR5cGVvZiBvcHRpb25zLnN0cmljdCA9
PT0gInVuZGVmaW5lZCIgPyB0cnVlIDogb3B0aW9ucy5zdHJpY3Q7CisgIHRoaXMubm90Zm91bmQg
PSBvcHRpb25zLm5vdGZvdW5kOworICB0aGlzLnJlc291cmNlID0gb3B0aW9ucy5yZXNvdXJjZTsK
KyAgdGhpcy5oaXN0b3J5ID0gb3B0aW9ucy5odG1sNWhpc3RvcnkgJiYgdGhpcy5oaXN0b3J5U3Vw
cG9ydCB8fCBmYWxzZTsKKyAgdGhpcy5ydW5faW5faW5pdCA9IHRoaXMuaGlzdG9yeSA9PT0gdHJ1
ZSAmJiBvcHRpb25zLnJ1bl9oYW5kbGVyX2luX2luaXQgIT09IGZhbHNlOworICB0aGlzLmNvbnZl
cnRfaGFzaF9pbl9pbml0ID0gdGhpcy5oaXN0b3J5ID09PSB0cnVlICYmIG9wdGlvbnMuY29udmVy
dF9oYXNoX2luX2luaXQgIT09IGZhbHNlOworICB0aGlzLmV2ZXJ5ID0geworICAgIGFmdGVyOiBv
cHRpb25zLmFmdGVyIHx8IG51bGwsCisgICAgYmVmb3JlOiBvcHRpb25zLmJlZm9yZSB8fCBudWxs
LAorICAgIG9uOiBvcHRpb25zLm9uIHx8IG51bGwKKyAgfTsKKyAgcmV0dXJuIHRoaXM7Cit9Owor
CitSb3V0ZXIucHJvdG90eXBlLnBhcmFtID0gZnVuY3Rpb24odG9rZW4sIG1hdGNoZXIpIHsKKyAg
aWYgKHRva2VuWzBdICE9PSAiOiIpIHsKKyAgICB0b2tlbiA9ICI6IiArIHRva2VuOworICB9Cisg
IHZhciBjb21waWxlZCA9IG5ldyBSZWdFeHAodG9rZW4sICJnIik7CisgIHRoaXMucGFyYW1zW3Rv
a2VuXSA9IGZ1bmN0aW9uKHN0cikgeworICAgIHJldHVybiBzdHIucmVwbGFjZShjb21waWxlZCwg
bWF0Y2hlci5zb3VyY2UgfHwgbWF0Y2hlcik7CisgIH07CisgIHJldHVybiB0aGlzOworfTsKKwor
Um91dGVyLnByb3RvdHlwZS5vbiA9IFJvdXRlci5wcm90b3R5cGUucm91dGUgPSBmdW5jdGlvbiht
ZXRob2QsIHBhdGgsIHJvdXRlKSB7CisgIHZhciBzZWxmID0gdGhpczsKKyAgaWYgKCFyb3V0ZSAm
JiB0eXBlb2YgcGF0aCA9PSAiZnVuY3Rpb24iKSB7CisgICAgcm91dGUgPSBwYXRoOworICAgIHBh
dGggPSBtZXRob2Q7CisgICAgbWV0aG9kID0gIm9uIjsKKyAgfQorICBpZiAoQXJyYXkuaXNBcnJh
eShwYXRoKSkgeworICAgIHJldHVybiBwYXRoLmZvckVhY2goZnVuY3Rpb24ocCkgeworICAgICAg
c2VsZi5vbihtZXRob2QsIHAsIHJvdXRlKTsKKyAgICB9KTsKKyAgfQorICBpZiAocGF0aC5zb3Vy
Y2UpIHsKKyAgICBwYXRoID0gcGF0aC5zb3VyY2UucmVwbGFjZSgvXFxcLy9pZywgIi8iKTsKKyAg
fQorICBpZiAoQXJyYXkuaXNBcnJheShtZXRob2QpKSB7CisgICAgcmV0dXJuIG1ldGhvZC5mb3JF
YWNoKGZ1bmN0aW9uKG0pIHsKKyAgICAgIHNlbGYub24obS50b0xvd2VyQ2FzZSgpLCBwYXRoLCBy
b3V0ZSk7CisgICAgfSk7CisgIH0KKyAgcGF0aCA9IHBhdGguc3BsaXQobmV3IFJlZ0V4cCh0aGlz
LmRlbGltaXRlcikpOworICBwYXRoID0gdGVybWluYXRvcihwYXRoLCB0aGlzLmRlbGltaXRlcik7
CisgIHRoaXMuaW5zZXJ0KG1ldGhvZCwgdGhpcy5zY29wZS5jb25jYXQocGF0aCksIHJvdXRlKTsK
K307CisKK1JvdXRlci5wcm90b3R5cGUucGF0aCA9IGZ1bmN0aW9uKHBhdGgsIHJvdXRlc0ZuKSB7
CisgIHZhciBzZWxmID0gdGhpcywgbGVuZ3RoID0gdGhpcy5zY29wZS5sZW5ndGg7CisgIGlmIChw
YXRoLnNvdXJjZSkgeworICAgIHBhdGggPSBwYXRoLnNvdXJjZS5yZXBsYWNlKC9cXFwvL2lnLCAi
LyIpOworICB9CisgIHBhdGggPSBwYXRoLnNwbGl0KG5ldyBSZWdFeHAodGhpcy5kZWxpbWl0ZXIp
KTsKKyAgcGF0aCA9IHRlcm1pbmF0b3IocGF0aCwgdGhpcy5kZWxpbWl0ZXIpOworICB0aGlzLnNj
b3BlID0gdGhpcy5zY29wZS5jb25jYXQocGF0aCk7CisgIHJvdXRlc0ZuLmNhbGwodGhpcywgdGhp
cyk7CisgIHRoaXMuc2NvcGUuc3BsaWNlKGxlbmd0aCwgcGF0aC5sZW5ndGgpOworfTsKKworUm91
dGVyLnByb3RvdHlwZS5kaXNwYXRjaCA9IGZ1bmN0aW9uKG1ldGhvZCwgcGF0aCwgY2FsbGJhY2sp
IHsKKyAgdmFyIHNlbGYgPSB0aGlzLCBmbnMgPSB0aGlzLnRyYXZlcnNlKG1ldGhvZCwgcGF0aC5y
ZXBsYWNlKFFVRVJZX1NFUEFSQVRPUiwgIiIpLCB0aGlzLnJvdXRlcywgIiIpLCBpbnZva2VkID0g
dGhpcy5faW52b2tlZCwgYWZ0ZXI7CisgIHRoaXMuX2ludm9rZWQgPSB0cnVlOworICBpZiAoIWZu
cyB8fCBmbnMubGVuZ3RoID09PSAwKSB7CisgICAgdGhpcy5sYXN0ID0gW107CisgICAgaWYgKHR5
cGVvZiB0aGlzLm5vdGZvdW5kID09PSAiZnVuY3Rpb24iKSB7CisgICAgICB0aGlzLmludm9rZShb
IHRoaXMubm90Zm91bmQgXSwgeworICAgICAgICBtZXRob2Q6IG1ldGhvZCwKKyAgICAgICAgcGF0
aDogcGF0aAorICAgICAgfSwgY2FsbGJhY2spOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cisg
IH0KKyAgaWYgKHRoaXMucmVjdXJzZSA9PT0gImZvcndhcmQiKSB7CisgICAgZm5zID0gZm5zLnJl
dmVyc2UoKTsKKyAgfQorICBmdW5jdGlvbiB1cGRhdGVBbmRJbnZva2UoKSB7CisgICAgc2VsZi5s
YXN0ID0gZm5zLmFmdGVyOworICAgIHNlbGYuaW52b2tlKHNlbGYucnVubGlzdChmbnMpLCBzZWxm
LCBjYWxsYmFjayk7CisgIH0KKyAgYWZ0ZXIgPSB0aGlzLmV2ZXJ5ICYmIHRoaXMuZXZlcnkuYWZ0
ZXIgPyBbIHRoaXMuZXZlcnkuYWZ0ZXIgXS5jb25jYXQodGhpcy5sYXN0KSA6IFsgdGhpcy5sYXN0
IF07CisgIGlmIChhZnRlciAmJiBhZnRlci5sZW5ndGggPiAwICYmIGludm9rZWQpIHsKKyAgICBp
ZiAodGhpcy5hc3luYykgeworICAgICAgdGhpcy5pbnZva2UoYWZ0ZXIsIHRoaXMsIHVwZGF0ZUFu
ZEludm9rZSk7CisgICAgfSBlbHNlIHsKKyAgICAgIHRoaXMuaW52b2tlKGFmdGVyLCB0aGlzKTsK
KyAgICAgIHVwZGF0ZUFuZEludm9rZSgpOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKKyAgfQor
ICB1cGRhdGVBbmRJbnZva2UoKTsKKyAgcmV0dXJuIHRydWU7Cit9OworCitSb3V0ZXIucHJvdG90
eXBlLmludm9rZSA9IGZ1bmN0aW9uKGZucywgdGhpc0FyZywgY2FsbGJhY2spIHsKKyAgdmFyIHNl
bGYgPSB0aGlzOworICB2YXIgYXBwbHk7CisgIGlmICh0aGlzLmFzeW5jKSB7CisgICAgYXBwbHkg
PSBmdW5jdGlvbihmbiwgbmV4dCkgeworICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZm4pKSB7Cisg
ICAgICAgIHJldHVybiBfYXN5bmNFdmVyeVNlcmllcyhmbiwgYXBwbHksIG5leHQpOworICAgICAg
fSBlbHNlIGlmICh0eXBlb2YgZm4gPT0gImZ1bmN0aW9uIikgeworICAgICAgICBmbi5hcHBseSh0
aGlzQXJnLCAoZm5zLmNhcHR1cmVzIHx8IFtdKS5jb25jYXQobmV4dCkpOworICAgICAgfQorICAg
IH07CisgICAgX2FzeW5jRXZlcnlTZXJpZXMoZm5zLCBhcHBseSwgZnVuY3Rpb24oKSB7CisgICAg
ICBpZiAoY2FsbGJhY2spIHsKKyAgICAgICAgY2FsbGJhY2suYXBwbHkodGhpc0FyZywgYXJndW1l
bnRzKTsKKyAgICAgIH0KKyAgICB9KTsKKyAgfSBlbHNlIHsKKyAgICBhcHBseSA9IGZ1bmN0aW9u
KGZuKSB7CisgICAgICBpZiAoQXJyYXkuaXNBcnJheShmbikpIHsKKyAgICAgICAgcmV0dXJuIF9l
dmVyeShmbiwgYXBwbHkpOworICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZm4gPT09ICJmdW5jdGlv
biIpIHsKKyAgICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXNBcmcsIGZucy5jYXB0dXJlcyB8fCBb
XSk7CisgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBmbiA9PT0gInN0cmluZyIgJiYgc2VsZi5yZXNv
dXJjZSkgeworICAgICAgICBzZWxmLnJlc291cmNlW2ZuXS5hcHBseSh0aGlzQXJnLCBmbnMuY2Fw
dHVyZXMgfHwgW10pOworICAgICAgfQorICAgIH07CisgICAgX2V2ZXJ5KGZucywgYXBwbHkpOwor
ICB9Cit9OworCitSb3V0ZXIucHJvdG90eXBlLnRyYXZlcnNlID0gZnVuY3Rpb24obWV0aG9kLCBw
YXRoLCByb3V0ZXMsIHJlZ2V4cCwgZmlsdGVyKSB7CisgIHZhciBmbnMgPSBbXSwgY3VycmVudCwg
ZXhhY3QsIG1hdGNoLCBuZXh0LCB0aGF0OworICBmdW5jdGlvbiBmaWx0ZXJSb3V0ZXMocm91dGVz
KSB7CisgICAgaWYgKCFmaWx0ZXIpIHsKKyAgICAgIHJldHVybiByb3V0ZXM7CisgICAgfQorICAg
IGZ1bmN0aW9uIGRlZXBDb3B5KHNvdXJjZSkgeworICAgICAgdmFyIHJlc3VsdCA9IFtdOworICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzb3VyY2UubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgcmVz
dWx0W2ldID0gQXJyYXkuaXNBcnJheShzb3VyY2VbaV0pID8gZGVlcENvcHkoc291cmNlW2ldKSA6
IHNvdXJjZVtpXTsKKyAgICAgIH0KKyAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIGZ1
bmN0aW9uIGFwcGx5RmlsdGVyKGZucykgeworICAgICAgZm9yICh2YXIgaSA9IGZucy5sZW5ndGgg
LSAxOyBpID49IDA7IGktLSkgeworICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShmbnNbaV0pKSB7
CisgICAgICAgICAgYXBwbHlGaWx0ZXIoZm5zW2ldKTsKKyAgICAgICAgICBpZiAoZm5zW2ldLmxl
bmd0aCA9PT0gMCkgeworICAgICAgICAgICAgZm5zLnNwbGljZShpLCAxKTsKKyAgICAgICAgICB9
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgaWYgKCFmaWx0ZXIoZm5zW2ldKSkgeworICAg
ICAgICAgICAgZm5zLnNwbGljZShpLCAxKTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
IH0KKyAgICB9CisgICAgdmFyIG5ld1JvdXRlcyA9IGRlZXBDb3B5KHJvdXRlcyk7CisgICAgbmV3
Um91dGVzLm1hdGNoZWQgPSByb3V0ZXMubWF0Y2hlZDsKKyAgICBuZXdSb3V0ZXMuY2FwdHVyZXMg
PSByb3V0ZXMuY2FwdHVyZXM7CisgICAgbmV3Um91dGVzLmFmdGVyID0gcm91dGVzLmFmdGVyLmZp
bHRlcihmaWx0ZXIpOworICAgIGFwcGx5RmlsdGVyKG5ld1JvdXRlcyk7CisgICAgcmV0dXJuIG5l
d1JvdXRlczsKKyAgfQorICBpZiAocGF0aCA9PT0gdGhpcy5kZWxpbWl0ZXIgJiYgcm91dGVzW21l
dGhvZF0pIHsKKyAgICBuZXh0ID0gWyBbIHJvdXRlcy5iZWZvcmUsIHJvdXRlc1ttZXRob2RdIF0u
ZmlsdGVyKEJvb2xlYW4pIF07CisgICAgbmV4dC5hZnRlciA9IFsgcm91dGVzLmFmdGVyIF0uZmls
dGVyKEJvb2xlYW4pOworICAgIG5leHQubWF0Y2hlZCA9IHRydWU7CisgICAgbmV4dC5jYXB0dXJl
cyA9IFtdOworICAgIHJldHVybiBmaWx0ZXJSb3V0ZXMobmV4dCk7CisgIH0KKyAgZm9yICh2YXIg
ciBpbiByb3V0ZXMpIHsKKyAgICBpZiAocm91dGVzLmhhc093blByb3BlcnR5KHIpICYmICghdGhp
cy5fbWV0aG9kc1tyXSB8fCB0aGlzLl9tZXRob2RzW3JdICYmIHR5cGVvZiByb3V0ZXNbcl0gPT09
ICJvYmplY3QiICYmICFBcnJheS5pc0FycmF5KHJvdXRlc1tyXSkpKSB7CisgICAgICBjdXJyZW50
ID0gZXhhY3QgPSByZWdleHAgKyB0aGlzLmRlbGltaXRlciArIHI7CisgICAgICBpZiAoIXRoaXMu
c3RyaWN0KSB7CisgICAgICAgIGV4YWN0ICs9ICJbIiArIHRoaXMuZGVsaW1pdGVyICsgIl0/IjsK
KyAgICAgIH0KKyAgICAgIG1hdGNoID0gcGF0aC5tYXRjaChuZXcgUmVnRXhwKCJeIiArIGV4YWN0
KSk7CisgICAgICBpZiAoIW1hdGNoKSB7CisgICAgICAgIGNvbnRpbnVlOworICAgICAgfQorICAg
ICAgaWYgKG1hdGNoWzBdICYmIG1hdGNoWzBdID09IHBhdGggJiYgcm91dGVzW3JdW21ldGhvZF0p
IHsKKyAgICAgICAgbmV4dCA9IFsgWyByb3V0ZXNbcl0uYmVmb3JlLCByb3V0ZXNbcl1bbWV0aG9k
XSBdLmZpbHRlcihCb29sZWFuKSBdOworICAgICAgICBuZXh0LmFmdGVyID0gWyByb3V0ZXNbcl0u
YWZ0ZXIgXS5maWx0ZXIoQm9vbGVhbik7CisgICAgICAgIG5leHQubWF0Y2hlZCA9IHRydWU7Cisg
ICAgICAgIG5leHQuY2FwdHVyZXMgPSBtYXRjaC5zbGljZSgxKTsKKyAgICAgICAgaWYgKHRoaXMu
cmVjdXJzZSAmJiByb3V0ZXMgPT09IHRoaXMucm91dGVzKSB7CisgICAgICAgICAgbmV4dC5wdXNo
KFsgcm91dGVzLmJlZm9yZSwgcm91dGVzLm9uIF0uZmlsdGVyKEJvb2xlYW4pKTsKKyAgICAgICAg
ICBuZXh0LmFmdGVyID0gbmV4dC5hZnRlci5jb25jYXQoWyByb3V0ZXMuYWZ0ZXIgXS5maWx0ZXIo
Qm9vbGVhbikpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmaWx0ZXJSb3V0ZXMobmV4dCk7
CisgICAgICB9CisgICAgICBuZXh0ID0gdGhpcy50cmF2ZXJzZShtZXRob2QsIHBhdGgsIHJvdXRl
c1tyXSwgY3VycmVudCk7CisgICAgICBpZiAobmV4dC5tYXRjaGVkKSB7CisgICAgICAgIGlmIChu
ZXh0Lmxlbmd0aCA+IDApIHsKKyAgICAgICAgICBmbnMgPSBmbnMuY29uY2F0KG5leHQpOworICAg
ICAgICB9CisgICAgICAgIGlmICh0aGlzLnJlY3Vyc2UpIHsKKyAgICAgICAgICBmbnMucHVzaChb
IHJvdXRlc1tyXS5iZWZvcmUsIHJvdXRlc1tyXS5vbiBdLmZpbHRlcihCb29sZWFuKSk7CisgICAg
ICAgICAgbmV4dC5hZnRlciA9IG5leHQuYWZ0ZXIuY29uY2F0KFsgcm91dGVzW3JdLmFmdGVyIF0u
ZmlsdGVyKEJvb2xlYW4pKTsKKyAgICAgICAgICBpZiAocm91dGVzID09PSB0aGlzLnJvdXRlcykg
eworICAgICAgICAgICAgZm5zLnB1c2goWyByb3V0ZXNbImJlZm9yZSJdLCByb3V0ZXNbIm9uIl0g
XS5maWx0ZXIoQm9vbGVhbikpOworICAgICAgICAgICAgbmV4dC5hZnRlciA9IG5leHQuYWZ0ZXIu
Y29uY2F0KFsgcm91dGVzWyJhZnRlciJdIF0uZmlsdGVyKEJvb2xlYW4pKTsKKyAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgZm5zLm1hdGNoZWQgPSB0cnVlOworICAgICAgICBmbnMuY2Fw
dHVyZXMgPSBuZXh0LmNhcHR1cmVzOworICAgICAgICBmbnMuYWZ0ZXIgPSBuZXh0LmFmdGVyOwor
ICAgICAgICByZXR1cm4gZmlsdGVyUm91dGVzKGZucyk7CisgICAgICB9CisgICAgfQorICB9Cisg
IHJldHVybiBmYWxzZTsKK307CisKK1JvdXRlci5wcm90b3R5cGUuaW5zZXJ0ID0gZnVuY3Rpb24o
bWV0aG9kLCBwYXRoLCByb3V0ZSwgcGFyZW50KSB7CisgIHZhciBtZXRob2RUeXBlLCBwYXJlbnRU
eXBlLCBpc0FycmF5LCBuZXN0ZWQsIHBhcnQ7CisgIHBhdGggPSBwYXRoLmZpbHRlcihmdW5jdGlv
bihwKSB7CisgICAgcmV0dXJuIHAgJiYgcC5sZW5ndGggPiAwOworICB9KTsKKyAgcGFyZW50ID0g
cGFyZW50IHx8IHRoaXMucm91dGVzOworICBwYXJ0ID0gcGF0aC5zaGlmdCgpOworICBpZiAoL1w6
fFwqLy50ZXN0KHBhcnQpICYmICEvXFxkfFxcdy8udGVzdChwYXJ0KSkgeworICAgIHBhcnQgPSBy
ZWdpZnlTdHJpbmcocGFydCwgdGhpcy5wYXJhbXMpOworICB9CisgIGlmIChwYXRoLmxlbmd0aCA+
IDApIHsKKyAgICBwYXJlbnRbcGFydF0gPSBwYXJlbnRbcGFydF0gfHwge307CisgICAgcmV0dXJu
IHRoaXMuaW5zZXJ0KG1ldGhvZCwgcGF0aCwgcm91dGUsIHBhcmVudFtwYXJ0XSk7CisgIH0KKyAg
aWYgKCFwYXJ0ICYmICFwYXRoLmxlbmd0aCAmJiBwYXJlbnQgPT09IHRoaXMucm91dGVzKSB7Cisg
ICAgbWV0aG9kVHlwZSA9IHR5cGVvZiBwYXJlbnRbbWV0aG9kXTsKKyAgICBzd2l0Y2ggKG1ldGhv
ZFR5cGUpIHsKKyAgICAgY2FzZSAiZnVuY3Rpb24iOgorICAgICAgcGFyZW50W21ldGhvZF0gPSBb
IHBhcmVudFttZXRob2RdLCByb3V0ZSBdOworICAgICAgcmV0dXJuOworICAgICBjYXNlICJvYmpl
Y3QiOgorICAgICAgcGFyZW50W21ldGhvZF0ucHVzaChyb3V0ZSk7CisgICAgICByZXR1cm47Cisg
ICAgIGNhc2UgInVuZGVmaW5lZCI6CisgICAgICBwYXJlbnRbbWV0aG9kXSA9IHJvdXRlOworICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICByZXR1cm47CisgIH0KKyAgcGFyZW50VHlwZSA9IHR5cGVv
ZiBwYXJlbnRbcGFydF07CisgIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5KHBhcmVudFtwYXJ0XSk7
CisgIGlmIChwYXJlbnRbcGFydF0gJiYgIWlzQXJyYXkgJiYgcGFyZW50VHlwZSA9PSAib2JqZWN0
IikgeworICAgIG1ldGhvZFR5cGUgPSB0eXBlb2YgcGFyZW50W3BhcnRdW21ldGhvZF07CisgICAg
c3dpdGNoIChtZXRob2RUeXBlKSB7CisgICAgIGNhc2UgImZ1bmN0aW9uIjoKKyAgICAgIHBhcmVu
dFtwYXJ0XVttZXRob2RdID0gWyBwYXJlbnRbcGFydF1bbWV0aG9kXSwgcm91dGUgXTsKKyAgICAg
IHJldHVybjsKKyAgICAgY2FzZSAib2JqZWN0IjoKKyAgICAgIHBhcmVudFtwYXJ0XVttZXRob2Rd
LnB1c2gocm91dGUpOworICAgICAgcmV0dXJuOworICAgICBjYXNlICJ1bmRlZmluZWQiOgorICAg
ICAgcGFyZW50W3BhcnRdW21ldGhvZF0gPSByb3V0ZTsKKyAgICAgIHJldHVybjsKKyAgICB9Cisg
IH0gZWxzZSBpZiAocGFyZW50VHlwZSA9PSAidW5kZWZpbmVkIikgeworICAgIG5lc3RlZCA9IHt9
OworICAgIG5lc3RlZFttZXRob2RdID0gcm91dGU7CisgICAgcGFyZW50W3BhcnRdID0gbmVzdGVk
OworICAgIHJldHVybjsKKyAgfQorICB0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgcm91dGUgY29u
dGV4dDogIiArIHBhcmVudFR5cGUpOworfTsKKworCisKK1JvdXRlci5wcm90b3R5cGUuZXh0ZW5k
ID0gZnVuY3Rpb24obWV0aG9kcykgeworICB2YXIgc2VsZiA9IHRoaXMsIGxlbiA9IG1ldGhvZHMu
bGVuZ3RoLCBpOworICBmdW5jdGlvbiBleHRlbmQobWV0aG9kKSB7CisgICAgc2VsZi5fbWV0aG9k
c1ttZXRob2RdID0gdHJ1ZTsKKyAgICBzZWxmW21ldGhvZF0gPSBmdW5jdGlvbigpIHsKKyAgICAg
IHZhciBleHRyYSA9IGFyZ3VtZW50cy5sZW5ndGggPT09IDEgPyBbIG1ldGhvZCwgIiIgXSA6IFsg
bWV0aG9kIF07CisgICAgICBzZWxmLm9uLmFwcGx5KHNlbGYsIGV4dHJhLmNvbmNhdChBcnJheS5w
cm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpKSk7CisgICAgfTsKKyAgfQorICBmb3IgKGkg
PSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICBleHRlbmQobWV0aG9kc1tpXSk7CisgIH0KK307CisK
K1JvdXRlci5wcm90b3R5cGUucnVubGlzdCA9IGZ1bmN0aW9uKGZucykgeworICB2YXIgcnVubGlz
dCA9IHRoaXMuZXZlcnkgJiYgdGhpcy5ldmVyeS5iZWZvcmUgPyBbIHRoaXMuZXZlcnkuYmVmb3Jl
IF0uY29uY2F0KF9mbGF0dGVuKGZucykpIDogX2ZsYXR0ZW4oZm5zKTsKKyAgaWYgKHRoaXMuZXZl
cnkgJiYgdGhpcy5ldmVyeS5vbikgeworICAgIHJ1bmxpc3QucHVzaCh0aGlzLmV2ZXJ5Lm9uKTsK
KyAgfQorICBydW5saXN0LmNhcHR1cmVzID0gZm5zLmNhcHR1cmVzOworICBydW5saXN0LnNvdXJj
ZSA9IGZucy5zb3VyY2U7CisgIHJldHVybiBydW5saXN0OworfTsKKworUm91dGVyLnByb3RvdHlw
ZS5tb3VudCA9IGZ1bmN0aW9uKHJvdXRlcywgcGF0aCkgeworICBpZiAoIXJvdXRlcyB8fCB0eXBl
b2Ygcm91dGVzICE9PSAib2JqZWN0IiB8fCBBcnJheS5pc0FycmF5KHJvdXRlcykpIHsKKyAgICBy
ZXR1cm47CisgIH0KKyAgdmFyIHNlbGYgPSB0aGlzOworICBwYXRoID0gcGF0aCB8fCBbXTsKKyAg
aWYgKCFBcnJheS5pc0FycmF5KHBhdGgpKSB7CisgICAgcGF0aCA9IHBhdGguc3BsaXQoc2VsZi5k
ZWxpbWl0ZXIpOworICB9CisgIGZ1bmN0aW9uIGluc2VydE9yTW91bnQocm91dGUsIGxvY2FsKSB7
CisgICAgdmFyIHJlbmFtZSA9IHJvdXRlLCBwYXJ0cyA9IHJvdXRlLnNwbGl0KHNlbGYuZGVsaW1p
dGVyKSwgcm91dGVUeXBlID0gdHlwZW9mIHJvdXRlc1tyb3V0ZV0sIGlzUm91dGUgPSBwYXJ0c1sw
XSA9PT0gIiIgfHwgIXNlbGYuX21ldGhvZHNbcGFydHNbMF1dLCBldmVudCA9IGlzUm91dGUgPyAi
b24iIDogcmVuYW1lOworICAgIGlmIChpc1JvdXRlKSB7CisgICAgICByZW5hbWUgPSByZW5hbWUu
c2xpY2UoKHJlbmFtZS5tYXRjaChuZXcgUmVnRXhwKCJeIiArIHNlbGYuZGVsaW1pdGVyKSkgfHwg
WyAiIiBdKVswXS5sZW5ndGgpOworICAgICAgcGFydHMuc2hpZnQoKTsKKyAgICB9CisgICAgaWYg
KGlzUm91dGUgJiYgcm91dGVUeXBlID09PSAib2JqZWN0IiAmJiAhQXJyYXkuaXNBcnJheShyb3V0
ZXNbcm91dGVdKSkgeworICAgICAgbG9jYWwgPSBsb2NhbC5jb25jYXQocGFydHMpOworICAgICAg
c2VsZi5tb3VudChyb3V0ZXNbcm91dGVdLCBsb2NhbCk7CisgICAgICByZXR1cm47CisgICAgfQor
ICAgIGlmIChpc1JvdXRlKSB7CisgICAgICBsb2NhbCA9IGxvY2FsLmNvbmNhdChyZW5hbWUuc3Bs
aXQoc2VsZi5kZWxpbWl0ZXIpKTsKKyAgICAgIGxvY2FsID0gdGVybWluYXRvcihsb2NhbCwgc2Vs
Zi5kZWxpbWl0ZXIpOworICAgIH0KKyAgICBzZWxmLmluc2VydChldmVudCwgbG9jYWwsIHJvdXRl
c1tyb3V0ZV0pOworICB9CisgIGZvciAodmFyIHJvdXRlIGluIHJvdXRlcykgeworICAgIGlmIChy
b3V0ZXMuaGFzT3duUHJvcGVydHkocm91dGUpKSB7CisgICAgICBpbnNlcnRPck1vdW50KHJvdXRl
LCBwYXRoLnNsaWNlKDApKTsKKyAgICB9CisgIH0KK307CisKKworCit9KHR5cGVvZiBleHBvcnRz
ID09PSAib2JqZWN0IiA/IGV4cG9ydHMgOiB3aW5kb3cpKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVj
dG9yL2Rpc3QvZGlyZWN0b3IubWluLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxl
cy9kaXJlY3Rvci9kaXN0L2RpcmVjdG9yLm1pbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOTU2YWY0MDA5NWJj
MjJjNjg4NWYyNzdlZDllZjVmNzQxNmJhZTRmCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9kaXN0L2RpcmVjdG9yLm1pbi5qcwpAQCAt
MCwwICsxLDcgQEAKKworCisvLworLy8gR2VuZXJhdGVkIG9uIFR1ZSBEZWMgMTYgMjAxNCAxMjox
Mzo0NyBHTVQrMDEwMCAoQ0VUKSBieSBDaGFybGllIFJvYmJpbnMsIFBhb2xvIEZyYWdvbWVuaSAm
IHRoZSBDb250cmlidXRvcnMgKFVzaW5nIENvZGVzdXJnZW9uKS4KKy8vIFZlcnNpb24gMS4yLjYK
Ky8vCisoZnVuY3Rpb24oYSl7ZnVuY3Rpb24gayhhLGIsYyxkKXt2YXIgZT0wLGY9MCxnPTAsYz0o
Y3x8IigiKS50b1N0cmluZygpLGQ9KGR8fCIpIikudG9TdHJpbmcoKSxoO2ZvcihoPTA7aDxhLmxl
bmd0aDtoKyspe3ZhciBpPWFbaF07aWYoaS5pbmRleE9mKGMsZSk+aS5pbmRleE9mKGQsZSl8fH5p
LmluZGV4T2YoYyxlKSYmIX5pLmluZGV4T2YoZCxlKXx8IX5pLmluZGV4T2YoYyxlKSYmfmkuaW5k
ZXhPZihkLGUpKXtmPWkuaW5kZXhPZihjLGUpLGc9aS5pbmRleE9mKGQsZSk7aWYofmYmJiF+Z3x8
IX5mJiZ+Zyl7dmFyIGo9YS5zbGljZSgwLChofHwxKSsxKS5qb2luKGIpO2E9W2pdLmNvbmNhdChh
LnNsaWNlKChofHwxKSsxKSl9ZT0oZz5mP2c6ZikrMSxoPTB9ZWxzZSBlPTB9cmV0dXJuIGF9ZnVu
Y3Rpb24gaihhLGIpe3ZhciBjLGQ9MCxlPSIiO3doaWxlKGM9YS5zdWJzdHIoZCkubWF0Y2goL1te
XHdcZFwtICVAJl0qXCpbXlx3XGRcLSAlQCZdKi8pKWQ9Yy5pbmRleCtjWzBdLmxlbmd0aCxjWzBd
PWNbMF0ucmVwbGFjZSgvXlwqLywiKFtfLigpIVxcICVAJmEtekEtWjAtOS1dKykiKSxlKz1hLnN1
YnN0cigwLGMuaW5kZXgpK2NbMF07YT1lKz1hLnN1YnN0cihkKTt2YXIgZj1hLm1hdGNoKC86KFte
XC9dKykvaWcpLGcsaDtpZihmKXtoPWYubGVuZ3RoO2Zvcih2YXIgaj0wO2o8aDtqKyspZz1mW2pd
LGcuc2xpY2UoMCwyKT09PSI6OiI/YT1nLnNsaWNlKDEpOmE9YS5yZXBsYWNlKGcsaShnLGIpKX1y
ZXR1cm4gYX1mdW5jdGlvbiBpKGEsYixjKXtjPWE7Zm9yKHZhciBkIGluIGIpaWYoYi5oYXNPd25Q
cm9wZXJ0eShkKSl7Yz1iW2RdKGEpO2lmKGMhPT1hKWJyZWFrfXJldHVybiBjPT09YT8iKFsuX2Et
ekEtWjAtOS0lKCldKykiOmN9ZnVuY3Rpb24gaChhLGIsYyl7aWYoIWEubGVuZ3RoKXJldHVybiBj
KCk7dmFyIGQ9MDsoZnVuY3Rpb24gZSgpe2IoYVtkXSxmdW5jdGlvbihiKXtifHxiPT09ITE/KGMo
YiksYz1mdW5jdGlvbigpe30pOihkKz0xLGQ9PT1hLmxlbmd0aD9jKCk6ZSgpKX0pfSkoKX1mdW5j
dGlvbiBnKGEpe3ZhciBiPVtdO2Zvcih2YXIgYz0wLGQ9YS5sZW5ndGg7YzxkO2MrKyliPWIuY29u
Y2F0KGFbY10pO3JldHVybiBifWZ1bmN0aW9uIGYoYSxiKXtmb3IodmFyIGM9MDtjPGEubGVuZ3Ro
O2MrPTEpaWYoYihhW2NdLGMsYSk9PT0hMSlyZXR1cm59ZnVuY3Rpb24gYygpe3JldHVybiBiLmhh
c2g9PT0iInx8Yi5oYXNoPT09IiMifXZhciBiPWRvY3VtZW50LmxvY2F0aW9uLGQ9e21vZGU6Im1v
ZGVybiIsaGFzaDpiLmhhc2gsaGlzdG9yeTohMSxjaGVjazpmdW5jdGlvbigpe3ZhciBhPWIuaGFz
aDthIT10aGlzLmhhc2gmJih0aGlzLmhhc2g9YSx0aGlzLm9uSGFzaENoYW5nZWQoKSl9LGZpcmU6
ZnVuY3Rpb24oKXt0aGlzLm1vZGU9PT0ibW9kZXJuIj90aGlzLmhpc3Rvcnk9PT0hMD93aW5kb3cu
b25wb3BzdGF0ZSgpOndpbmRvdy5vbmhhc2hjaGFuZ2UoKTp0aGlzLm9uSGFzaENoYW5nZWQoKX0s
aW5pdDpmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGQoYSl7Zm9yKHZhciBiPTAsYz1lLmxpc3RlbmVy
cy5sZW5ndGg7YjxjO2IrKyllLmxpc3RlbmVyc1tiXShhKX12YXIgYz10aGlzO3RoaXMuaGlzdG9y
eT1iLGUubGlzdGVuZXJzfHwoZS5saXN0ZW5lcnM9W10pO2lmKCJvbmhhc2hjaGFuZ2UiaW4gd2lu
ZG93JiYoZG9jdW1lbnQuZG9jdW1lbnRNb2RlPT09dW5kZWZpbmVkfHxkb2N1bWVudC5kb2N1bWVu
dE1vZGU+NykpdGhpcy5oaXN0b3J5PT09ITA/c2V0VGltZW91dChmdW5jdGlvbigpe3dpbmRvdy5v
bnBvcHN0YXRlPWR9LDUwMCk6d2luZG93Lm9uaGFzaGNoYW5nZT1kLHRoaXMubW9kZT0ibW9kZXJu
IjtlbHNle3ZhciBmPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpO2YuaWQ9InN0YXRl
LWZyYW1lIixmLnN0eWxlLmRpc3BsYXk9Im5vbmUiLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQo
ZiksdGhpcy53cml0ZUZyYW1lKCIiKSwib25wcm9wZXJ0eWNoYW5nZSJpbiBkb2N1bWVudCYmImF0
dGFjaEV2ZW50ImluIGRvY3VtZW50JiZkb2N1bWVudC5hdHRhY2hFdmVudCgib25wcm9wZXJ0eWNo
YW5nZSIsZnVuY3Rpb24oKXtldmVudC5wcm9wZXJ0eU5hbWU9PT0ibG9jYXRpb24iJiZjLmNoZWNr
KCl9KSx3aW5kb3cuc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXtjLmNoZWNrKCl9LDUwKSx0aGlzLm9u
SGFzaENoYW5nZWQ9ZCx0aGlzLm1vZGU9ImxlZ2FjeSJ9ZS5saXN0ZW5lcnMucHVzaChhKTtyZXR1
cm4gdGhpcy5tb2RlfSxkZXN0cm95OmZ1bmN0aW9uKGEpe2lmKCEhZSYmISFlLmxpc3RlbmVycyl7
dmFyIGI9ZS5saXN0ZW5lcnM7Zm9yKHZhciBjPWIubGVuZ3RoLTE7Yz49MDtjLS0pYltjXT09PWEm
JmIuc3BsaWNlKGMsMSl9fSxzZXRIYXNoOmZ1bmN0aW9uKGEpe3RoaXMubW9kZT09PSJsZWdhY3ki
JiZ0aGlzLndyaXRlRnJhbWUoYSksdGhpcy5oaXN0b3J5PT09ITA/KHdpbmRvdy5oaXN0b3J5LnB1
c2hTdGF0ZSh7fSxkb2N1bWVudC50aXRsZSxhKSx0aGlzLmZpcmUoKSk6Yi5oYXNoPWFbMF09PT0i
LyI/YToiLyIrYTtyZXR1cm4gdGhpc30sd3JpdGVGcmFtZTpmdW5jdGlvbihhKXt2YXIgYj1kb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgic3RhdGUtZnJhbWUiKSxjPWIuY29udGVudERvY3VtZW50fHxi
LmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ7Yy5vcGVuKCksYy53cml0ZSgiPHNjcmlwdD5faGFzaCA9
ICciK2ErIic7IG9ubG9hZCA9IHBhcmVudC5saXN0ZW5lci5zeW5jSGFzaDs8c2NyaXB0PiIpLGMu
Y2xvc2UoKX0sc3luY0hhc2g6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLl9oYXNoO2EhPWIuaGFzaCYm
KGIuaGFzaD1hKTtyZXR1cm4gdGhpc30sb25IYXNoQ2hhbmdlZDpmdW5jdGlvbigpe319LGU9YS5S
b3V0ZXI9ZnVuY3Rpb24oYSl7aWYodGhpcyBpbnN0YW5jZW9mIGUpdGhpcy5wYXJhbXM9e30sdGhp
cy5yb3V0ZXM9e30sdGhpcy5tZXRob2RzPVsib24iLCJvbmNlIiwiYWZ0ZXIiLCJiZWZvcmUiXSx0
aGlzLnNjb3BlPVtdLHRoaXMuX21ldGhvZHM9e30sdGhpcy5faW5zZXJ0PXRoaXMuaW5zZXJ0LHRo
aXMuaW5zZXJ0PXRoaXMuaW5zZXJ0RXgsdGhpcy5oaXN0b3J5U3VwcG9ydD0od2luZG93Lmhpc3Rv
cnkhPW51bGw/d2luZG93Lmhpc3RvcnkucHVzaFN0YXRlOm51bGwpIT1udWxsLHRoaXMuY29uZmln
dXJlKCksdGhpcy5tb3VudChhfHx7fSk7ZWxzZSByZXR1cm4gbmV3IGUoYSl9O2UucHJvdG90eXBl
LmluaXQ9ZnVuY3Rpb24oYSl7dmFyIGU9dGhpcyxmO3RoaXMuaGFuZGxlcj1mdW5jdGlvbihhKXt2
YXIgYj1hJiZhLm5ld1VSTHx8d2luZG93LmxvY2F0aW9uLmhhc2gsYz1lLmhpc3Rvcnk9PT0hMD9l
LmdldFBhdGgoKTpiLnJlcGxhY2UoLy4qIy8sIiIpO2UuZGlzcGF0Y2goIm9uIixjLmNoYXJBdCgw
KT09PSIvIj9jOiIvIitjKX0sZC5pbml0KHRoaXMuaGFuZGxlcix0aGlzLmhpc3RvcnkpLHRoaXMu
aGlzdG9yeT09PSExP2MoKSYmYT9iLmhhc2g9YTpjKCl8fGUuZGlzcGF0Y2goIm9uIiwiLyIrYi5o
YXNoLnJlcGxhY2UoL14oI1wvfCN8XC8pLywiIikpOih0aGlzLmNvbnZlcnRfaGFzaF9pbl9pbml0
PyhmPWMoKSYmYT9hOmMoKT9udWxsOmIuaGFzaC5yZXBsYWNlKC9eIy8sIiIpLGYmJndpbmRvdy5o
aXN0b3J5LnJlcGxhY2VTdGF0ZSh7fSxkb2N1bWVudC50aXRsZSxmKSk6Zj10aGlzLmdldFBhdGgo
KSwoZnx8dGhpcy5ydW5faW5faW5pdD09PSEwKSYmdGhpcy5oYW5kbGVyKCkpO3JldHVybiB0aGlz
fSxlLnByb3RvdHlwZS5leHBsb2RlPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5oaXN0b3J5PT09ITA/
dGhpcy5nZXRQYXRoKCk6Yi5oYXNoO2EuY2hhckF0KDEpPT09Ii8iJiYoYT1hLnNsaWNlKDEpKTty
ZXR1cm4gYS5zbGljZSgxLGEubGVuZ3RoKS5zcGxpdCgiLyIpfSxlLnByb3RvdHlwZS5zZXRSb3V0
ZT1mdW5jdGlvbihhLGIsYyl7dmFyIGU9dGhpcy5leHBsb2RlKCk7dHlwZW9mIGE9PSJudW1iZXIi
JiZ0eXBlb2YgYj09InN0cmluZyI/ZVthXT1iOnR5cGVvZiBjPT0ic3RyaW5nIj9lLnNwbGljZShh
LGIscyk6ZT1bYV0sZC5zZXRIYXNoKGUuam9pbigiLyIpKTtyZXR1cm4gZX0sZS5wcm90b3R5cGUu
aW5zZXJ0RXg9ZnVuY3Rpb24oYSxiLGMsZCl7YT09PSJvbmNlIiYmKGE9Im9uIixjPWZ1bmN0aW9u
KGEpe3ZhciBiPSExO3JldHVybiBmdW5jdGlvbigpe2lmKCFiKXtiPSEwO3JldHVybiBhLmFwcGx5
KHRoaXMsYXJndW1lbnRzKX19fShjKSk7cmV0dXJuIHRoaXMuX2luc2VydChhLGIsYyxkKX0sZS5w
cm90b3R5cGUuZ2V0Um91dGU9ZnVuY3Rpb24oYSl7dmFyIGI9YTtpZih0eXBlb2YgYT09Im51bWJl
ciIpYj10aGlzLmV4cGxvZGUoKVthXTtlbHNlIGlmKHR5cGVvZiBhPT0ic3RyaW5nIil7dmFyIGM9
dGhpcy5leHBsb2RlKCk7Yj1jLmluZGV4T2YoYSl9ZWxzZSBiPXRoaXMuZXhwbG9kZSgpO3JldHVy
biBifSxlLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7ZC5kZXN0cm95KHRoaXMuaGFuZGxl
cik7cmV0dXJuIHRoaXN9LGUucHJvdG90eXBlLmdldFBhdGg9ZnVuY3Rpb24oKXt2YXIgYT13aW5k
b3cubG9jYXRpb24ucGF0aG5hbWU7YS5zdWJzdHIoMCwxKSE9PSIvIiYmKGE9Ii8iK2EpO3JldHVy
biBhfTt2YXIgbD0vXD8uKi87ZS5wcm90b3R5cGUuY29uZmlndXJlPWZ1bmN0aW9uKGEpe2E9YXx8
e307Zm9yKHZhciBiPTA7Yjx0aGlzLm1ldGhvZHMubGVuZ3RoO2IrKyl0aGlzLl9tZXRob2RzW3Ro
aXMubWV0aG9kc1tiXV09ITA7dGhpcy5yZWN1cnNlPWEucmVjdXJzZXx8dGhpcy5yZWN1cnNlfHwh
MSx0aGlzLmFzeW5jPWEuYXN5bmN8fCExLHRoaXMuZGVsaW1pdGVyPWEuZGVsaW1pdGVyfHwiLyIs
dGhpcy5zdHJpY3Q9dHlwZW9mIGEuc3RyaWN0PT0idW5kZWZpbmVkIj8hMDphLnN0cmljdCx0aGlz
Lm5vdGZvdW5kPWEubm90Zm91bmQsdGhpcy5yZXNvdXJjZT1hLnJlc291cmNlLHRoaXMuaGlzdG9y
eT1hLmh0bWw1aGlzdG9yeSYmdGhpcy5oaXN0b3J5U3VwcG9ydHx8ITEsdGhpcy5ydW5faW5faW5p
dD10aGlzLmhpc3Rvcnk9PT0hMCYmYS5ydW5faGFuZGxlcl9pbl9pbml0IT09ITEsdGhpcy5jb252
ZXJ0X2hhc2hfaW5faW5pdD10aGlzLmhpc3Rvcnk9PT0hMCYmYS5jb252ZXJ0X2hhc2hfaW5faW5p
dCE9PSExLHRoaXMuZXZlcnk9e2FmdGVyOmEuYWZ0ZXJ8fG51bGwsYmVmb3JlOmEuYmVmb3JlfHxu
dWxsLG9uOmEub258fG51bGx9O3JldHVybiB0aGlzfSxlLnByb3RvdHlwZS5wYXJhbT1mdW5jdGlv
bihhLGIpe2FbMF0hPT0iOiImJihhPSI6IithKTt2YXIgYz1uZXcgUmVnRXhwKGEsImciKTt0aGlz
LnBhcmFtc1thXT1mdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKGMsYi5zb3VyY2V8fGIpfTty
ZXR1cm4gdGhpc30sZS5wcm90b3R5cGUub249ZS5wcm90b3R5cGUucm91dGU9ZnVuY3Rpb24oYSxi
LGMpe3ZhciBkPXRoaXM7IWMmJnR5cGVvZiBiPT0iZnVuY3Rpb24iJiYoYz1iLGI9YSxhPSJvbiIp
O2lmKEFycmF5LmlzQXJyYXkoYikpcmV0dXJuIGIuZm9yRWFjaChmdW5jdGlvbihiKXtkLm9uKGEs
YixjKX0pO2Iuc291cmNlJiYoYj1iLnNvdXJjZS5yZXBsYWNlKC9cXFwvL2lnLCIvIikpO2lmKEFy
cmF5LmlzQXJyYXkoYSkpcmV0dXJuIGEuZm9yRWFjaChmdW5jdGlvbihhKXtkLm9uKGEudG9Mb3dl
ckNhc2UoKSxiLGMpfSk7Yj1iLnNwbGl0KG5ldyBSZWdFeHAodGhpcy5kZWxpbWl0ZXIpKSxiPWso
Yix0aGlzLmRlbGltaXRlciksdGhpcy5pbnNlcnQoYSx0aGlzLnNjb3BlLmNvbmNhdChiKSxjKX0s
ZS5wcm90b3R5cGUucGF0aD1mdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMsZD10aGlzLnNjb3BlLmxl
bmd0aDthLnNvdXJjZSYmKGE9YS5zb3VyY2UucmVwbGFjZSgvXFxcLy9pZywiLyIpKSxhPWEuc3Bs
aXQobmV3IFJlZ0V4cCh0aGlzLmRlbGltaXRlcikpLGE9ayhhLHRoaXMuZGVsaW1pdGVyKSx0aGlz
LnNjb3BlPXRoaXMuc2NvcGUuY29uY2F0KGEpLGIuY2FsbCh0aGlzLHRoaXMpLHRoaXMuc2NvcGUu
c3BsaWNlKGQsYS5sZW5ndGgpfSxlLnByb3RvdHlwZS5kaXNwYXRjaD1mdW5jdGlvbihhLGIsYyl7
ZnVuY3Rpb24gaCgpe2QubGFzdD1lLmFmdGVyLGQuaW52b2tlKGQucnVubGlzdChlKSxkLGMpfXZh
ciBkPXRoaXMsZT10aGlzLnRyYXZlcnNlKGEsYi5yZXBsYWNlKGwsIiIpLHRoaXMucm91dGVzLCIi
KSxmPXRoaXMuX2ludm9rZWQsZzt0aGlzLl9pbnZva2VkPSEwO2lmKCFlfHxlLmxlbmd0aD09PTAp
e3RoaXMubGFzdD1bXSx0eXBlb2YgdGhpcy5ub3Rmb3VuZD09ImZ1bmN0aW9uIiYmdGhpcy5pbnZv
a2UoW3RoaXMubm90Zm91bmRdLHttZXRob2Q6YSxwYXRoOmJ9LGMpO3JldHVybiExfXRoaXMucmVj
dXJzZT09PSJmb3J3YXJkIiYmKGU9ZS5yZXZlcnNlKCkpLGc9dGhpcy5ldmVyeSYmdGhpcy5ldmVy
eS5hZnRlcj9bdGhpcy5ldmVyeS5hZnRlcl0uY29uY2F0KHRoaXMubGFzdCk6W3RoaXMubGFzdF07
aWYoZyYmZy5sZW5ndGg+MCYmZil7dGhpcy5hc3luYz90aGlzLmludm9rZShnLHRoaXMsaCk6KHRo
aXMuaW52b2tlKGcsdGhpcyksaCgpKTtyZXR1cm4hMH1oKCk7cmV0dXJuITB9LGUucHJvdG90eXBl
Lmludm9rZT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcyxlO3RoaXMuYXN5bmM/KGU9ZnVuY3Rp
b24oYyxkKXtpZihBcnJheS5pc0FycmF5KGMpKXJldHVybiBoKGMsZSxkKTt0eXBlb2YgYz09ImZ1
bmN0aW9uIiYmYy5hcHBseShiLChhLmNhcHR1cmVzfHxbXSkuY29uY2F0KGQpKX0saChhLGUsZnVu
Y3Rpb24oKXtjJiZjLmFwcGx5KGIsYXJndW1lbnRzKX0pKTooZT1mdW5jdGlvbihjKXtpZihBcnJh
eS5pc0FycmF5KGMpKXJldHVybiBmKGMsZSk7aWYodHlwZW9mIGM9PSJmdW5jdGlvbiIpcmV0dXJu
IGMuYXBwbHkoYixhLmNhcHR1cmVzfHxbXSk7dHlwZW9mIGM9PSJzdHJpbmciJiZkLnJlc291cmNl
JiZkLnJlc291cmNlW2NdLmFwcGx5KGIsYS5jYXB0dXJlc3x8W10pfSxmKGEsZSkpfSxlLnByb3Rv
dHlwZS50cmF2ZXJzZT1mdW5jdGlvbihhLGIsYyxkLGUpe2Z1bmN0aW9uIGwoYSl7ZnVuY3Rpb24g
YyhhKXtmb3IodmFyIGI9YS5sZW5ndGgtMTtiPj0wO2ItLSlBcnJheS5pc0FycmF5KGFbYl0pPyhj
KGFbYl0pLGFbYl0ubGVuZ3RoPT09MCYmYS5zcGxpY2UoYiwxKSk6ZShhW2JdKXx8YS5zcGxpY2Uo
YiwxKX1mdW5jdGlvbiBiKGEpe3ZhciBjPVtdO2Zvcih2YXIgZD0wO2Q8YS5sZW5ndGg7ZCsrKWNb
ZF09QXJyYXkuaXNBcnJheShhW2RdKT9iKGFbZF0pOmFbZF07cmV0dXJuIGN9aWYoIWUpcmV0dXJu
IGE7dmFyIGQ9YihhKTtkLm1hdGNoZWQ9YS5tYXRjaGVkLGQuY2FwdHVyZXM9YS5jYXB0dXJlcyxk
LmFmdGVyPWEuYWZ0ZXIuZmlsdGVyKGUpLGMoZCk7cmV0dXJuIGR9dmFyIGY9W10sZyxoLGksaixr
O2lmKGI9PT10aGlzLmRlbGltaXRlciYmY1thXSl7aj1bW2MuYmVmb3JlLGNbYV1dLmZpbHRlcihC
b29sZWFuKV0sai5hZnRlcj1bYy5hZnRlcl0uZmlsdGVyKEJvb2xlYW4pLGoubWF0Y2hlZD0hMCxq
LmNhcHR1cmVzPVtdO3JldHVybiBsKGopfWZvcih2YXIgbSBpbiBjKWlmKGMuaGFzT3duUHJvcGVy
dHkobSkmJighdGhpcy5fbWV0aG9kc1ttXXx8dGhpcy5fbWV0aG9kc1ttXSYmdHlwZW9mIGNbbV09
PSJvYmplY3QiJiYhQXJyYXkuaXNBcnJheShjW21dKSkpe2c9aD1kK3RoaXMuZGVsaW1pdGVyK20s
dGhpcy5zdHJpY3R8fChoKz0iWyIrdGhpcy5kZWxpbWl0ZXIrIl0/IiksaT1iLm1hdGNoKG5ldyBS
ZWdFeHAoIl4iK2gpKTtpZighaSljb250aW51ZTtpZihpWzBdJiZpWzBdPT1iJiZjW21dW2FdKXtq
PVtbY1ttXS5iZWZvcmUsY1ttXVthXV0uZmlsdGVyKEJvb2xlYW4pXSxqLmFmdGVyPVtjW21dLmFm
dGVyXS5maWx0ZXIoQm9vbGVhbiksai5tYXRjaGVkPSEwLGouY2FwdHVyZXM9aS5zbGljZSgxKSx0
aGlzLnJlY3Vyc2UmJmM9PT10aGlzLnJvdXRlcyYmKGoucHVzaChbYy5iZWZvcmUsYy5vbl0uZmls
dGVyKEJvb2xlYW4pKSxqLmFmdGVyPWouYWZ0ZXIuY29uY2F0KFtjLmFmdGVyXS5maWx0ZXIoQm9v
bGVhbikpKTtyZXR1cm4gbChqKX1qPXRoaXMudHJhdmVyc2UoYSxiLGNbbV0sZyk7aWYoai5tYXRj
aGVkKXtqLmxlbmd0aD4wJiYoZj1mLmNvbmNhdChqKSksdGhpcy5yZWN1cnNlJiYoZi5wdXNoKFtj
W21dLmJlZm9yZSxjW21dLm9uXS5maWx0ZXIoQm9vbGVhbikpLGouYWZ0ZXI9ai5hZnRlci5jb25j
YXQoW2NbbV0uYWZ0ZXJdLmZpbHRlcihCb29sZWFuKSksYz09PXRoaXMucm91dGVzJiYoZi5wdXNo
KFtjLmJlZm9yZSxjLm9uXS5maWx0ZXIoQm9vbGVhbikpLGouYWZ0ZXI9ai5hZnRlci5jb25jYXQo
W2MuYWZ0ZXJdLmZpbHRlcihCb29sZWFuKSkpKSxmLm1hdGNoZWQ9ITAsZi5jYXB0dXJlcz1qLmNh
cHR1cmVzLGYuYWZ0ZXI9ai5hZnRlcjtyZXR1cm4gbChmKX19cmV0dXJuITF9LGUucHJvdG90eXBl
Lmluc2VydD1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZSxmLGcsaCxpO2I9Yi5maWx0ZXIoZnVuY3Rp
b24oYSl7cmV0dXJuIGEmJmEubGVuZ3RoPjB9KSxkPWR8fHRoaXMucm91dGVzLGk9Yi5zaGlmdCgp
LC9cOnxcKi8udGVzdChpKSYmIS9cXGR8XFx3Ly50ZXN0KGkpJiYoaT1qKGksdGhpcy5wYXJhbXMp
KTtpZihiLmxlbmd0aD4wKXtkW2ldPWRbaV18fHt9O3JldHVybiB0aGlzLmluc2VydChhLGIsYyxk
W2ldKX17aWYoISFpfHwhIWIubGVuZ3RofHxkIT09dGhpcy5yb3V0ZXMpe2Y9dHlwZW9mIGRbaV0s
Zz1BcnJheS5pc0FycmF5KGRbaV0pO2lmKGRbaV0mJiFnJiZmPT0ib2JqZWN0Iil7ZT10eXBlb2Yg
ZFtpXVthXTtzd2l0Y2goZSl7Y2FzZSJmdW5jdGlvbiI6ZFtpXVthXT1bZFtpXVthXSxjXTtyZXR1
cm47Y2FzZSJvYmplY3QiOmRbaV1bYV0ucHVzaChjKTtyZXR1cm47Y2FzZSJ1bmRlZmluZWQiOmRb
aV1bYV09YztyZXR1cm59fWVsc2UgaWYoZj09InVuZGVmaW5lZCIpe2g9e30saFthXT1jLGRbaV09
aDtyZXR1cm59dGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHJvdXRlIGNvbnRleHQ6ICIrZil9ZT10
eXBlb2YgZFthXTtzd2l0Y2goZSl7Y2FzZSJmdW5jdGlvbiI6ZFthXT1bZFthXSxjXTtyZXR1cm47
Y2FzZSJvYmplY3QiOmRbYV0ucHVzaChjKTtyZXR1cm47Y2FzZSJ1bmRlZmluZWQiOmRbYV09Yzty
ZXR1cm59fX0sZS5wcm90b3R5cGUuZXh0ZW5kPWZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGUoYSl7Yi5f
bWV0aG9kc1thXT0hMCxiW2FdPWZ1bmN0aW9uKCl7dmFyIGM9YXJndW1lbnRzLmxlbmd0aD09PTE/
W2EsIiJdOlthXTtiLm9uLmFwcGx5KGIsYy5jb25jYXQoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNh
bGwoYXJndW1lbnRzKSkpfX12YXIgYj10aGlzLGM9YS5sZW5ndGgsZDtmb3IoZD0wO2Q8YztkKysp
ZShhW2RdKX0sZS5wcm90b3R5cGUucnVubGlzdD1mdW5jdGlvbihhKXt2YXIgYj10aGlzLmV2ZXJ5
JiZ0aGlzLmV2ZXJ5LmJlZm9yZT9bdGhpcy5ldmVyeS5iZWZvcmVdLmNvbmNhdChnKGEpKTpnKGEp
O3RoaXMuZXZlcnkmJnRoaXMuZXZlcnkub24mJmIucHVzaCh0aGlzLmV2ZXJ5Lm9uKSxiLmNhcHR1
cmVzPWEuY2FwdHVyZXMsYi5zb3VyY2U9YS5zb3VyY2U7cmV0dXJuIGJ9LGUucHJvdG90eXBlLm1v
dW50PWZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gZChiLGQpe3ZhciBlPWIsZj1iLnNwbGl0KGMuZGVs
aW1pdGVyKSxnPXR5cGVvZiBhW2JdLGg9ZlswXT09PSIifHwhYy5fbWV0aG9kc1tmWzBdXSxpPWg/
Im9uIjplO2gmJihlPWUuc2xpY2UoKGUubWF0Y2gobmV3IFJlZ0V4cCgiXiIrYy5kZWxpbWl0ZXIp
KXx8WyIiXSlbMF0ubGVuZ3RoKSxmLnNoaWZ0KCkpO2gmJmc9PT0ib2JqZWN0IiYmIUFycmF5Lmlz
QXJyYXkoYVtiXSk/KGQ9ZC5jb25jYXQoZiksYy5tb3VudChhW2JdLGQpKTooaCYmKGQ9ZC5jb25j
YXQoZS5zcGxpdChjLmRlbGltaXRlcikpLGQ9ayhkLGMuZGVsaW1pdGVyKSksYy5pbnNlcnQoaSxk
LGFbYl0pKX1pZighIWEmJnR5cGVvZiBhPT0ib2JqZWN0IiYmIUFycmF5LmlzQXJyYXkoYSkpe3Zh
ciBjPXRoaXM7Yj1ifHxbXSxBcnJheS5pc0FycmF5KGIpfHwoYj1iLnNwbGl0KGMuZGVsaW1pdGVy
KSk7Zm9yKHZhciBlIGluIGEpYS5oYXNPd25Qcm9wZXJ0eShlKSYmZChlLGIuc2xpY2UoMCkpfX19
KSh0eXBlb2YgZXhwb3J0cz09Im9iamVjdCI/ZXhwb3J0czp3aW5kb3cpClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxl
cy9kaXJlY3Rvci9kaXN0L2VuZGVyLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxl
cy9kaXJlY3Rvci9kaXN0L2VuZGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlM2ViYzQxYjBiZGUwNjRiZmQz
MzYzZmQ1ZGQwYjM0MDZlZmI5ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVl
cnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL2Rpc3QvZW5kZXIuanMKQEAgLTAsMCArMSwzIEBACisk
LmVuZGVyKHsKKyAgcm91dGVyOiBSb3V0ZXIKK30pOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
anF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9wYWNrYWdlLmpzb24gYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9q
cXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL3BhY2thZ2UuanNvbgpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMGJk
Mjk2MjcyN2Y0NjRkY2JlMDk4MTcyYTk5ZmE4ZGU3NmFiOWJkCi0tLSAvZGV2L251bGwKKysrIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9wYWNrYWdlLmpzb24KQEAg
LTAsMCArMSw0MSBAQAoreworICAibmFtZSI6ICJkaXJlY3RvciIsCisgICJkZXNjcmlwdGlvbiI6
ICJBIGNsaWVudCBTaWRlL1NlcnZlciBTaWRlIFJvdXRlciIsCisgICJhdXRob3IiOiAiQ2hhcmxp
ZSBSb2JiaW5zIDxjaGFybGllLnJvYmJpbnNAZ21haWwuY29tPiIsCisgICJ2ZXJzaW9uIjogIjEu
Mi44IiwKKyAgIm1haW50YWluZXJzIjogWworICAgICJoaWoxbnggPHBhb2xvQG5vZGVqaXRzdS5j
b20+IiwKKyAgICAiYmVhdWd1bmRlcnNvbiA8YmVhdUBiZWF1Z3VuZGVyc29uLmNvbT4iCisgIF0s
CisgICJyZXBvc2l0b3J5IjogeworICAgICJ0eXBlIjogImdpdCIsCisgICAgInVybCI6ICJodHRw
Oi8vZ2l0aHViLmNvbS9mbGF0aXJvbi9kaXJlY3Rvci5naXQiCisgIH0sCisgICJrZXl3b3JkcyI6
IFsKKyAgICAiVVJMIiwKKyAgICAicm91dGVyIiwKKyAgICAiaHR0cCIsCisgICAgImNsaSIsCisg
ICAgImZsYXRpcm9uIiwKKyAgICAiY2xpZW50IHNpZGUiLAorICAgICJlbmRlciIKKyAgXSwKKyAg
ImRldkRlcGVuZGVuY2llcyI6IHsKKyAgICAiYXBpLWVhc3kiOiAiMC40LngiLAorICAgICJjb2Rl
c3VyZ2VvbiI6ICJodHRwczovL2dpdGh1Yi5jb20vaGlqMW54L2NvZGVzdXJnZW9uL3RhcmJhbGwv
bWFzdGVyIiwKKyAgICAiY29sb3JzIjogIjEuMC54IiwKKyAgICAicXVuaXRqcyI6ICIxLjkueCIs
CisgICAgInJlcXVlc3QiOiAiMi40OS54IiwKKyAgICAidWdsaWZ5LWpzIjogIjIuNC54IiwKKyAg
ICAidm93cyI6ICIwLjguMCIKKyAgfSwKKyAgImVuZGVyIjogIi4vYnVpbGQvZW5kZXIuanMiLAor
ICAiYnJvd3NlcmlmeSI6ICIuL2J1aWxkL2RpcmVjdG9yIiwKKyAgIm1haW4iOiAiLi9saWIvZGly
ZWN0b3IiLAorICAiZW5naW5lcyI6IHsKKyAgICAibm9kZSI6ICI+PSAwLjguMCIKKyAgfSwKKyAg
InNjcmlwdHMiOiB7CisgICAgInRlc3QiOiAidm93cyB0ZXN0L3NlcnZlci8qLyotdGVzdC5qcyAt
LXNwZWMiCisgIH0KK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvZnVuY3Rpb25hbC1wcm9nLWV4YW1wbGVzL2VsbS9pbmRleC5odG1s
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9mdW5jdGlv
bmFsLXByb2ctZXhhbXBsZXMvZWxtL2luZGV4Lmh0bWwKaW5kZXggOTUxNGM0Y2Q4YTA2ODFmMjE2
MzE1OGQ4Y2ZhMjk2YWI1ODk4NzdjZi4uOTkxMzRhMjVmYzUzOWM4ZThkNTNlNDExY2Y2OGRiODdl
M2JlZGNmZiAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9mdW5jdGlvbmFsLXByb2ctZXhhbXBsZXMvZWxtL2luZGV4Lmh0bWwKKysrIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9mdW5jdGlvbmFs
LXByb2ctZXhhbXBsZXMvZWxtL2luZGV4Lmh0bWwKQEAgLTE2LDcgKzE2LDcgQEAKIDwvaGVhZD4K
IAogPGJvZHk+Ci08c2NyaXB0IHNyYz0iYnVpbGQvZWxtLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJkaXN0L2VsbS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogICAgIChmdW5jdGlvbiAoKSB7
CiAgICAgICAgIC8vIHZhciByZXN1bHQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZWxtLXRvZG8t
bW9kZWwnKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>310006</attachid>
            <date>2017-05-12 20:49:11 -0700</date>
            <delta_ts>2017-05-12 20:50:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170513-20170512204911.patch</filename>
            <type>text/plain</type>
            <size>74746</size>
            <attacher name="Addy Osmani">addyo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2ODEwCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDU5ZTYwNDhjODMx
OGE3MzczZGZlYzg4MTU5ODgxMDM3MTM0NTMzN2YuLmQ5ZDg3ZDNkYWNmYzIwY2QyM2E2NjYxZTM1
NDk0NTkxYzVhOTZmNjcgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzEgQEAKIDIwMTctMDUt
MTIgIEFkZHkgT3NtYW5pICA8YWRkeW9zbWFuaUBnbWFpbC5jb20+CiAKKyAgICAgICAgVXBkYXRl
IHRvIFNwZWVkb21ldGVyIDIuMCB3L3VwZGF0ZWQgZnJhbWV3b3JrcyArIG5ldyB3b3JrbG9hZHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDUxMwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNwZWVkb21l
dGVyOiByZWZyZXNoIHRlc3QgcnVubmVyIGFuZCBmaXggYXBwcyB0byB3b3JrIHdpdGggaXQKKwor
ICAgICAgICAqIFNwZWVkb21ldGVyL0ludGVyYWN0aXZlUnVubmVyLmh0bWw6CisgICAgICAgICog
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rlc3RzLmpzOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL2Rpc3QvaW5kZXgu
aHRtbDoKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvZW1iZXJqcy9hc3NldHMvdG9kb212Yy5qczoKKyAgICAgICAgKiBTcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9pbmRl
eC5odG1sOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS9hcHAvc2VydmljZXMvbWVtb3J5LmpzOgorICAg
ICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9lbWJlcmpzL3NvdXJjZS9hcHAvc2VydmljZXMvcmVwby5qczoKKyAgICAgICAgKiBTcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy90ZXN0
cy9pbmRleC5odG1sOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvaW5kZXguaHRtbDoKKyAgICAgICAgKiBTcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVf
bW9kdWxlcy9kaXJlY3Rvci9MSUNFTlNFOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxl
cy9kaXJlY3Rvci9ib3dlci5qc29uOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9k
aXJlY3Rvci9kaXN0L2RpcmVjdG9yLmpzOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxl
cy9kaXJlY3Rvci9kaXN0L2RpcmVjdG9yLm1pbi5qczogQWRkZWQuCisgICAgICAgICogU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2Rl
X21vZHVsZXMvZGlyZWN0b3IvZGlzdC9lbmRlci5qczogQWRkZWQuCisgICAgICAgICogU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2Rl
X21vZHVsZXMvZGlyZWN0b3IvcGFja2FnZS5qc29uOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9mdW5jdGlvbmFsLXByb2ctZXhhbXBsZXMvZWxtL2luZGV4
Lmh0bWw6CisKKzIwMTctMDUtMTIgIEFkZHkgT3NtYW5pICA8YWRkeW9zbWFuaUBnbWFpbC5jb20+
CisKICAgICAgICAgU3BlZWRvbWV0ZXI6IEFkZCBhIFJlYWN0LmpzIFRvZG9NVkMgaW1wbGVtZW50
YXRpb24KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
MTQ0NAogCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL0ludGVyYWN0
aXZlUnVubmVyLmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL0ludGVyYWN0aXZl
UnVubmVyLmh0bWwKaW5kZXggOTIwNzZhNGFjYWJlN2RiY2ViOGIwYjViOWU1MzM2ODg2ZDllYzQ1
NS4uNzgwMzY4MGQxN2QxZDliNzc1NzZhMjdhODY4YTA0NDljYjdiOGEzMyAxMDA2NDQKLS0tIGEv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9JbnRlcmFjdGl2ZVJ1bm5lci5odG1sCisrKyBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvSW50ZXJhY3RpdmVSdW5uZXIuaHRtbApAQCAt
MSw3ICsxLDcgQEAKIDwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KLTx0aXRsZT5Eb1lv
dUV2ZW5CZW5jaDwvdGl0bGU+Cis8dGl0bGU+U3BlZWRvbWV0ZXIgMi4wIEludGVyYWN0aXZlIFJ1
bm5lcjwvdGl0bGU+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JlbmNobWFyay1ydW5uZXIuanMi
IGRlZmVyPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy90ZXN0cy5qcyIgZGVmZXI+
PC9zY3JpcHQ+CiA8c3R5bGU+CkBAIC02NiwxMyArNjYsMzkgQEAgZnVuY3Rpb24gY3JlYXRlVUlG
b3JTdWl0ZXMoc3VpdGVzLCBvbnN0ZXAsIG9ucnVuKSB7CiAKICAgICB2YXIgYnV0dG9uID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7CiAgICAgYnV0dG9uLnRleHRDb250ZW50ID0g
J1J1bic7CisgICAgYnV0dG9uLmlkID0gJ3J1blN1aXRlcyc7CiAgICAgYnV0dG9uLm9uY2xpY2sg
PSBvbnJ1bjsKICAgICBjb250cm9sLmFwcGVuZENoaWxkKGJ1dHRvbik7CiAKICAgICByZXR1cm4g
Y29udHJvbDsKIH0KIAordmFyIHBhcnNlUXVlcnlTdHJpbmcgPSAoZnVuY3Rpb24gKHBhaXJMaXN0
KSB7CisgICAgdmFyIHBhaXJzID0ge307CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYWlyTGlz
dC5sZW5ndGg7ICsraSkgeworICAgICAgICB2YXIga2V5VmFsdWUgPSBwYWlyTGlzdFtpXS5zcGxp
dCgnPScsIDIpOworICAgICAgICBpZiAoa2V5VmFsdWUubGVuZ3RoID09IDEpCisgICAgICAgICAg
ICBwYWlyc1trZXlWYWx1ZVswXV0gPSAnJzsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcGFp
cnNba2V5VmFsdWVbMF1dID0gZGVjb2RlVVJJQ29tcG9uZW50KGtleVZhbHVlWzFdLnJlcGxhY2Uo
L1wrL2csICcgJykpOworICAgIH0KKyAgICByZXR1cm4gcGFpcnM7Cit9KSh3aW5kb3cubG9jYXRp
b24uc2VhcmNoLnN1YnN0cigxKS5zcGxpdCgnJicpKTsKKworZnVuY3Rpb24gZGlzYWJsZUFsbFN1
aXRlc0V4Y2VwdChzdWl0ZU5hbWUpIHsKKyAgICBpZiAoc3VpdGVOYW1lID09PSB1bmRlZmluZWQg
fHwgc3VpdGVOYW1lID09PSAnJykKKyAgICAgICAgcmV0dXJuOworICAgIFN1aXRlcy5mb3JFYWNo
KGZ1bmN0aW9uKGVsZW1lbnQpIHsKKyAgICAgICAgaWYgKGVsZW1lbnQubmFtZSAhPT0gc3VpdGVO
YW1lKQorICAgICAgICAgICAgZWxlbWVudC5kaXNhYmxlZCA9IHRydWU7CisgICAgfSk7Cit9CisK
IGZ1bmN0aW9uIHN0YXJ0VGVzdCgpIHsKKyAgICB2YXIgcXVlcnlQYXJhbSA9IHBhcnNlUXVlcnlT
dHJpbmdbJ3N1aXRlJ107CisgICAgaWYgKHF1ZXJ5UGFyYW0gIT09IHVuZGVmaW5lZCkKKyAgICAg
ICAgZGlzYWJsZUFsbFN1aXRlc0V4Y2VwdChxdWVyeVBhcmFtKTsKKwogICAgIHZhciBydW5uZXIg
PSBuZXcgQmVuY2htYXJrUnVubmVyKFN1aXRlcywgewogICAgICAgICB3aWxsUnVuVGVzdDogZnVu
Y3Rpb24gKHN1aXRlLCB0ZXN0KSB7CiAgICAgICAgICAgICB0ZXN0LmFuY2hvci5jbGFzc0xpc3Qu
YWRkKCdydW5uaW5nJyk7CkBAIC0xMTIsNiArMTM4LDkgQEAgZnVuY3Rpb24gc3RhcnRUZXN0KCkg
ewogICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY3JlYXRlVUlGb3JTdWl0ZXMoU3VpdGVz
LAogICAgICAgICBmdW5jdGlvbiAoKSB7IHJ1bm5lci5zdGVwKGN1cnJlbnRTdGF0ZSkudGhlbihm
dW5jdGlvbiAoc3RhdGUpIHsgY3VycmVudFN0YXRlID0gc3RhdGU7IH0pOyB9LAogICAgICAgICBm
dW5jdGlvbiAoKSB7IHJ1bm5lci5ydW5BbGxTdGVwcyhjdXJyZW50U3RhdGUpOyBjdXJyZW50U3Rh
dGUgPSBudWxsOyB9KSk7CisKKyAgICBpZiAocGFyc2VRdWVyeVN0cmluZ1snc3RhcnRBdXRvbWF0
aWNhbGx5J10gIT09IHVuZGVmaW5lZCkKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3J1blN1aXRlcycpLmNsaWNrKCk7CiB9CiAKIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2Fk
Jywgc3RhcnRUZXN0KTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3Rlc3RzLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdGVzdHMuanMKaW5kZXggZTZmMjM5Y2M5NGVhMjQ3ZmRmYWZhOGVmMzM0YTRmY2IxNzQyODBk
OS4uNGE4ODIzZDllMTA4MWNmNGQ5NjA5OGIxY2QxMjIxOGM4MmRhNGU3NyAxMDA2NDQKLS0tIGEv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdGVzdHMuanMKKysrIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdGVzdHMuanMKQEAgLTEsMjEgKzEs
MzEgQEAKIHZhciBudW1iZXJPZkl0ZW1zVG9BZGQgPSAxMDA7CiB2YXIgU3VpdGVzID0gW107Cit2
YXIgRU5URVJfS0VZX0NPREUgPSAxMzsKKwordmFyIHRyaWdnZXJFbnRlciA9IGZ1bmN0aW9uIChl
bGVtZW50LCB0eXBlKSB7CisgICAgdmFyIGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2
ZW50cycpOworICAgIGV2ZW50LmluaXRFdmVudCh0eXBlLCB0cnVlLCB0cnVlKTsKKyAgICBPYmpl
Y3QuZGVmaW5lUHJvcGVydHkoZXZlbnQsICdrZXlDb2RlJywge3ZhbHVlOiBFTlRFUl9LRVlfQ09E
RX0pOworICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShldmVudCwgJ3doaWNoJywge3ZhbHVlOiBF
TlRFUl9LRVlfQ09ERX0pOworICAgIGV2ZW50LmtleSA9ICdFTlRFUic7CisgICAgZWxlbWVudC5k
aXNwYXRjaEV2ZW50KGV2ZW50KTsKK30KIAogU3VpdGVzLnB1c2goewogICAgIG5hbWU6ICdWYW5p
bGxhSlMtVG9kb01WQycsCiAgICAgdXJsOiAndG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3Zhbmls
bGFqcy9pbmRleC5odG1sJywKICAgICBwcmVwYXJlOiBmdW5jdGlvbiAocnVubmVyLCBjb250ZW50
V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKLSAgICAgICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9y
RWxlbWVudCgnI25ldy10b2RvJykudGhlbihmdW5jdGlvbiAoZWxlbWVudCkgeworICAgICAgICBy
ZXR1cm4gcnVubmVyLndhaXRGb3JFbGVtZW50KCcubmV3LXRvZG8nKS50aGVuKGZ1bmN0aW9uIChl
bGVtZW50KSB7CiAgICAgICAgICAgICBlbGVtZW50LmZvY3VzKCk7CiAgICAgICAgICAgICByZXR1
cm4gZWxlbWVudDsKICAgICAgICAgfSk7CiAgICAgfSwKICAgICB0ZXN0czogWwogICAgICAgICBu
ZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0FkZGluZycgKyBudW1iZXJPZkl0ZW1zVG9BZGQgKyAnSXRl
bXMnLCBmdW5jdGlvbiAobmV3VG9kbywgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7
Ci0gICAgICAgICAgICB2YXIgdG9kb0NvbnRyb2xsZXIgPSBjb250ZW50V2luZG93LnRvZG8uY29u
dHJvbGxlcjsKICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtYmVyT2ZJdGVtc1Rv
QWRkOyBpKyspIHsKICAgICAgICAgICAgICAgICBuZXdUb2RvLnZhbHVlID0gJ1NvbWV0aGluZyB0
byBkbyAnICsgaTsKLSAgICAgICAgICAgICAgICB0b2RvQ29udHJvbGxlci5hZGRJdGVtKHtrZXlD
b2RlOiB0b2RvQ29udHJvbGxlci5FTlRFUl9LRVksIHRhcmdldDogbmV3VG9kb30pOworICAgICAg
ICAgICAgICAgIG5ld1RvZG8uZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2NoYW5nZScpKTsKKyAg
ICAgICAgICAgICAgICB0cmlnZ2VyRW50ZXIobmV3VG9kbywgJ2tleXByZXNzJyk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0pLAogICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0NvbXBs
ZXRpbmdBbGxJdGVtcycsIGZ1bmN0aW9uIChuZXdUb2RvLCBjb250ZW50V2luZG93LCBjb250ZW50
RG9jdW1lbnQpIHsKQEAgLTMyLDU2ICs0Miw4NCBAQCBTdWl0ZXMucHVzaCh7CiB9KTsKIAogU3Vp
dGVzLnB1c2goewotICAgIG5hbWU6ICdFbWJlckpTLVRvZG9NVkMnLAotICAgIHVybDogJ3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvaW5kZXguaHRtbCcsCisgICAgbmFtZTog
J1ZhbmlsbGEtRVMyMDE1LVRvZG9NVkMnLAorICAgIHVybDogJ3RvZG9tdmMvdmFuaWxsYS1leGFt
cGxlcy9lczIwMTUvaW5kZXguaHRtbCcsCiAgICAgcHJlcGFyZTogZnVuY3Rpb24gKHJ1bm5lciwg
Y29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7Ci0gICAgICAgIHJldHVybiBydW5uZXIu
d2FpdEZvckVsZW1lbnQoJyNuZXctdG9kbycpLnRoZW4oZnVuY3Rpb24gKGVsZW1lbnQpIHsKKyAg
ICAgICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVudCgnLm5ldy10b2RvJykudGhlbihmdW5j
dGlvbiAoZWxlbWVudCkgewogICAgICAgICAgICAgZWxlbWVudC5mb2N1cygpOwotICAgICAgICAg
ICAgcmV0dXJuIHsKLSAgICAgICAgICAgICAgICB2aWV3czogY29udGVudFdpbmRvdy5FbWJlci5W
aWV3LnZpZXdzLAotICAgICAgICAgICAgICAgIGVtYmVyUnVuOiBjb250ZW50V2luZG93LkVtYmVy
LnJ1biwKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBlbGVtZW50OwogICAgICAg
ICB9KTsKICAgICB9LAogICAgIHRlc3RzOiBbCi0gICAgICAgIG5ldyBCZW5jaG1hcmtUZXN0U3Rl
cCgnQWRkaW5nJyArIG51bWJlck9mSXRlbXNUb0FkZCArICdJdGVtcycsIGZ1bmN0aW9uIChwYXJh
bXMpIHsKKyAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdBZGRpbmcnICsgbnVtYmVyT2ZJ
dGVtc1RvQWRkICsgJ0l0ZW1zJywgZnVuY3Rpb24gKG5ld1RvZG8sIGNvbnRlbnRXaW5kb3csIGNv
bnRlbnREb2N1bWVudCkgewogICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1iZXJP
Zkl0ZW1zVG9BZGQ7IGkrKykgewotICAgICAgICAgICAgICAgIHBhcmFtcy5lbWJlclJ1bihmdW5j
dGlvbiAoKSB7IHBhcmFtcy52aWV3c1sibmV3LXRvZG8iXS5zZXQoJ3ZhbHVlJywgJ1NvbWV0aGlu
ZyB0byBkbycgKyBpKTsgfSk7Ci0gICAgICAgICAgICAgICAgcGFyYW1zLmVtYmVyUnVuKGZ1bmN0
aW9uICgpIHsgcGFyYW1zLnZpZXdzWyJuZXctdG9kbyJdLmluc2VydE5ld2xpbmUoZG9jdW1lbnQu
Y3JlYXRlRXZlbnQoJ0V2ZW50JykpOyB9KTsKKyAgICAgICAgICAgICAgICBuZXdUb2RvLnZhbHVl
ID0gJ1NvbWV0aGluZyB0byBkbycgKyBpOworICAgICAgICAgICAgICAgIG5ld1RvZG8uZGlzcGF0
Y2hFdmVudChuZXcgRXZlbnQoJ2NoYW5nZScpKTsKKyAgICAgICAgICAgICAgICB0cmlnZ2VyRW50
ZXIobmV3VG9kbywgJ2tleXByZXNzJyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0pLAogICAg
ICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0NvbXBsZXRpbmdBbGxJdGVtcycsIGZ1bmN0aW9u
IChwYXJhbXMsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgewotICAgICAgICAgICAg
dmFyIGNoZWNrYm94ZXMgPSBjb250ZW50RG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmVtYmVy
LWNoZWNrYm94Jyk7Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoZWNrYm94ZXMu
bGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgICAgICB2YXIgdmlldyA9IHBhcmFtcy52aWV3c1tj
aGVja2JveGVzW2ldLmlkXTsKLSAgICAgICAgICAgICAgICBwYXJhbXMuZW1iZXJSdW4oZnVuY3Rp
b24gKCkgeyB2aWV3LnNldCgnY2hlY2tlZCcsIHRydWUpOyB9KTsKKyAgICAgICAgICAgIHZhciBj
aGVja2JveGVzID0gY29udGVudERvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy50b2dnbGUnKTsK
KyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hlY2tib3hlcy5sZW5ndGg7IGkrKykK
KyAgICAgICAgICAgICAgICBjaGVja2JveGVzW2ldLmNsaWNrKCk7CisgICAgICAgIH0pLAorICAg
ICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0RlbGV0aW5nSXRlbXMnLCBmdW5jdGlvbiAocGFy
YW1zLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgICAgIHZhciBk
ZWxldGVCdXR0b25zID0gY29udGVudERvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5kZXN0cm95
Jyk7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRlbGV0ZUJ1dHRvbnMubGVuZ3Ro
OyBpKyspCisgICAgICAgICAgICAgICAgZGVsZXRlQnV0dG9uc1tpXS5jbGljaygpOworICAgICAg
ICB9KSwKKyAgICBdCit9KTsKKworU3VpdGVzLnB1c2goeworICAgIG5hbWU6ICdWYW5pbGxhLUVT
MjAxNS1CYWJlbC1XZWJwYWNrLVRvZG9NVkMnLAorICAgIHVybDogJ3RvZG9tdmMvdmFuaWxsYS1l
eGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0L2luZGV4Lmh0bWwnLAorICAgIHByZXBh
cmU6IGZ1bmN0aW9uIChydW5uZXIsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgewor
ICAgICAgICByZXR1cm4gcnVubmVyLndhaXRGb3JFbGVtZW50KCcubmV3LXRvZG8nKS50aGVuKGZ1
bmN0aW9uIChlbGVtZW50KSB7CisgICAgICAgICAgICBlbGVtZW50LmZvY3VzKCk7CisgICAgICAg
ICAgICByZXR1cm4gZWxlbWVudDsKKyAgICAgICAgfSk7CisgICAgfSwKKyAgICB0ZXN0czogWwor
ICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0FkZGluZycgKyBudW1iZXJPZkl0ZW1zVG9B
ZGQgKyAnSXRlbXMnLCBmdW5jdGlvbiAobmV3VG9kbywgY29udGVudFdpbmRvdywgY29udGVudERv
Y3VtZW50KSB7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bWJlck9mSXRlbXNU
b0FkZDsgaSsrKSB7CisgICAgICAgICAgICAgICAgbmV3VG9kby52YWx1ZSA9ICdTb21ldGhpbmcg
dG8gZG8nICsgaTsKKyAgICAgICAgICAgICAgICBuZXdUb2RvLmRpc3BhdGNoRXZlbnQobmV3IEV2
ZW50KCdjaGFuZ2UnKSk7CisgICAgICAgICAgICAgICAgdHJpZ2dlckVudGVyKG5ld1RvZG8sICdr
ZXlwcmVzcycpOwogICAgICAgICAgICAgfQogICAgICAgICB9KSwKKyAgICAgICAgbmV3IEJlbmNo
bWFya1Rlc3RTdGVwKCdDb21wbGV0aW5nQWxsSXRlbXMnLCBmdW5jdGlvbiAocGFyYW1zLCBjb250
ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgICAgIHZhciBjaGVja2JveGVz
ID0gY29udGVudERvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy50b2dnbGUnKTsKKyAgICAgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hlY2tib3hlcy5sZW5ndGg7IGkrKykKKyAgICAgICAg
ICAgICAgICBjaGVja2JveGVzW2ldLmNsaWNrKCk7CisgICAgICAgIH0pLAogICAgICAgICBuZXcg
QmVuY2htYXJrVGVzdFN0ZXAoJ0RlbGV0aW5nSXRlbXMnLCBmdW5jdGlvbiAocGFyYW1zLCBjb250
ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKICAgICAgICAgICAgIHZhciBkZWxldGVCdXR0
b25zID0gY29udGVudERvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5kZXN0cm95Jyk7CiAgICAg
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRlbGV0ZUJ1dHRvbnMubGVuZ3RoOyBpKyspCi0g
ICAgICAgICAgICAgICAgcGFyYW1zLmVtYmVyUnVuKGZ1bmN0aW9uICgpIHsgZGVsZXRlQnV0dG9u
c1tpXS5jbGljaygpOyB9KTsKKyAgICAgICAgICAgICAgICBkZWxldGVCdXR0b25zW2ldLmNsaWNr
KCk7CiAgICAgICAgIH0pLAogICAgIF0KIH0pOwogCiBTdWl0ZXMucHVzaCh7Ci0gICAgbmFtZTog
J0JhY2tib25lSlMtVG9kb01WQycsCi0gICAgdXJsOiAndG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvYmFja2JvbmUvaW5kZXguaHRtbCcsCisgICAgbmFtZTogJ1JlYWN0LVRvZG9NVkMnLAor
ICAgIHVybDogJ3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L2luZGV4Lmh0bWwn
LAogICAgIHByZXBhcmU6IGZ1bmN0aW9uIChydW5uZXIsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnRE
b2N1bWVudCkgewotICAgIGNvbnRlbnRXaW5kb3cuQmFja2JvbmUuc3luYyA9IGZ1bmN0aW9uICgp
IHt9Ci0gICAgICAgIHJldHVybiBydW5uZXIud2FpdEZvckVsZW1lbnQoJyNuZXctdG9kbycpLnRo
ZW4oZnVuY3Rpb24gKGVsZW1lbnQpIHsKKyAgICAgICAgY29udGVudFdpbmRvdy5hcHAuVXRpbHMu
c3RvcmUgPSBmdW5jdGlvbiAoKSB7fQorICAgICAgICByZXR1cm4gcnVubmVyLndhaXRGb3JFbGVt
ZW50KCcubmV3LXRvZG8nKS50aGVuKGZ1bmN0aW9uIChlbGVtZW50KSB7CiAgICAgICAgICAgICBl
bGVtZW50LmZvY3VzKCk7CiAgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKICAgICAgICAgfSk7
CiAgICAgfSwKICAgICB0ZXN0czogWwogICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0Fk
ZGluZycgKyBudW1iZXJPZkl0ZW1zVG9BZGQgKyAnSXRlbXMnLCBmdW5jdGlvbiAobmV3VG9kbywg
Y29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7Ci0gICAgICAgICAgICB2YXIgYXBwVmll
dyA9IGNvbnRlbnRXaW5kb3cuYXBwVmlldzsKLSAgICAgICAgICAgIHZhciBmYWtlRXZlbnQgPSB7
d2hpY2g6IGNvbnRlbnRXaW5kb3cuRU5URVJfS0VZfTsKICAgICAgICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgbnVtYmVyT2ZJdGVtc1RvQWRkOyBpKyspIHsKICAgICAgICAgICAgICAgICBuZXdU
b2RvLnZhbHVlID0gJ1NvbWV0aGluZyB0byBkbyAnICsgaTsKLSAgICAgICAgICAgICAgICBhcHBW
aWV3LmNyZWF0ZU9uRW50ZXIoZmFrZUV2ZW50KTsKKyAgICAgICAgICAgICAgICBuZXdUb2RvLmRp
c3BhdGNoRXZlbnQobmV3IEV2ZW50KCdpbnB1dCcsIHsKKyAgICAgICAgICAgICAgICAgIGJ1YmJs
ZXM6IHRydWUsCisgICAgICAgICAgICAgICAgICBjYW5jZWxhYmxlOiB0cnVlCisgICAgICAgICAg
ICAgICAgfSkpOworICAgICAgICAgICAgICAgIHRyaWdnZXJFbnRlcihuZXdUb2RvLCAna2V5ZG93
bicpOwogICAgICAgICAgICAgfQogICAgICAgICB9KSwKICAgICAgICAgbmV3IEJlbmNobWFya1Rl
c3RTdGVwKCdDb21wbGV0aW5nQWxsSXRlbXMnLCBmdW5jdGlvbiAobmV3VG9kbywgY29udGVudFdp
bmRvdywgY29udGVudERvY3VtZW50KSB7CkBAIC05OCw1NyArMTM2LDkyIEBAIFN1aXRlcy5wdXNo
KHsKIH0pOwogCiBTdWl0ZXMucHVzaCh7Ci0gICAgbmFtZTogJ2pRdWVyeS1Ub2RvTVZDJywKLSAg
ICB1cmw6ICd0b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvaW5kZXguaHRtbCcs
CisgICAgbmFtZTogJ1JlYWN0LVJlZHV4LVRvZG9NVkMnLAorICAgIHVybDogJ3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L2Rpc3QvaW5kZXguaHRtbCcsCiAgICAgcHJl
cGFyZTogZnVuY3Rpb24gKHJ1bm5lciwgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7
Ci0gICAgICAgIHJldHVybiBydW5uZXIud2FpdEZvckVsZW1lbnQoJyNuZXctdG9kbycpLnRoZW4o
ZnVuY3Rpb24gKGVsZW1lbnQpIHsKKyAgICAgICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVu
dCgnLm5ldy10b2RvJykudGhlbihmdW5jdGlvbiAoZWxlbWVudCkgewogICAgICAgICAgICAgZWxl
bWVudC5mb2N1cygpOwogICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CiAgICAgICAgIH0pOwog
ICAgIH0sCiAgICAgdGVzdHM6IFsKICAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdBZGRp
bmcnICsgbnVtYmVyT2ZJdGVtc1RvQWRkICsgJ0l0ZW1zJywgZnVuY3Rpb24gKG5ld1RvZG8sIGNv
bnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgewotICAgICAgICAgICAgdmFyIGFwcCA9IGNv
bnRlbnRXaW5kb3cuYXBwOwotICAgICAgICAgICAgdmFyIGZha2VFdmVudCA9IHt3aGljaDogYXBw
LkVOVEVSX0tFWX07CiAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bWJlck9mSXRl
bXNUb0FkZDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgbmV3VG9kby52YWx1ZSA9ICdTb21ldGhp
bmcgdG8gZG8gJyArIGk7Ci0gICAgICAgICAgICAgICAgYXBwLmNyZWF0ZS5jYWxsKG5ld1RvZG8s
IGZha2VFdmVudCk7CisgICAgICAgICAgICAgICAgbmV3VG9kby52YWx1ZSA9ICdTb21ldGhpbmcg
dG8gZG8nICsgaTsKKyAgICAgICAgICAgICAgICB0cmlnZ2VyRW50ZXIobmV3VG9kbywgJ2tleWRv
d24nKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSksCi0gICAgICAgIG5ldyBCZW5jaG1hcmtU
ZXN0U3RlcCgnQ29tcGxldGluZ0FsbEl0ZW1zJywgZnVuY3Rpb24gKG5ld1RvZG8sIGNvbnRlbnRX
aW5kb3csIGNvbnRlbnREb2N1bWVudCkgewotICAgICAgICAgICAgdmFyIGFwcCA9IGNvbnRlbnRX
aW5kb3cuYXBwOworICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0NvbXBsZXRpbmdBbGxJ
dGVtcycsIGZ1bmN0aW9uIChwYXJhbXMsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkg
ewogICAgICAgICAgICAgdmFyIGNoZWNrYm94ZXMgPSBjb250ZW50RG9jdW1lbnQucXVlcnlTZWxl
Y3RvckFsbCgnLnRvZ2dsZScpOwotICAgICAgICAgICAgdmFyICQgPSBjb250ZW50V2luZG93LiQ7
Ci0KLSAgICAgICAgICAgIGl0ZW1JbmRleFRvSWQgPSBuZXcgQXJyYXkoY2hlY2tib3hlcy5sZW5n
dGgpOwogICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGVja2JveGVzLmxlbmd0aDsg
aSsrKQotICAgICAgICAgICAgICAgIGl0ZW1JbmRleFRvSWRbaV0gPSAkKGNoZWNrYm94ZXNbaV0p
LmNsb3Nlc3QoJ2xpJykuZGF0YSgnaWQnKTsKKyAgICAgICAgICAgICAgICBjaGVja2JveGVzW2ld
LmNsaWNrKCk7CisgICAgICAgIH0pLAorICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0Rl
bGV0aW5nSXRlbXMnLCBmdW5jdGlvbiAocGFyYW1zLCBjb250ZW50V2luZG93LCBjb250ZW50RG9j
dW1lbnQpIHsKKyAgICAgICAgICAgIHZhciBkZWxldGVCdXR0b25zID0gY29udGVudERvY3VtZW50
LnF1ZXJ5U2VsZWN0b3JBbGwoJy5kZXN0cm95Jyk7CisgICAgICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGRlbGV0ZUJ1dHRvbnMubGVuZ3RoOyBpKyspCisgICAgICAgICAgICAgICAgZGVsZXRl
QnV0dG9uc1tpXS5jbGljaygpOworICAgICAgICB9KSwKKyAgICBdCit9KTsKIAotICAgICAgICAg
ICAgYXBwLmdldFRvZG8gPSBmdW5jdGlvbiAoZWxlbWVudCwgY2FsbGJhY2spIHsKLSAgICAgICAg
ICAgICAgICB2YXIgc2VsZiA9IHRoaXM7Ci0gICAgICAgICAgICAgICAgdmFyIGlkID0gaXRlbUlu
ZGV4VG9JZFt0aGlzLmN1cnJlbnRJdGVtSW5kZXhdOwotICAgICAgICAgICAgICAgICQuZWFjaCh0
aGlzLnRvZG9zLCBmdW5jdGlvbiAoaiwgdmFsKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2
YWwuaWQgPT09IGlkKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjay5hcHBseShz
ZWxmLCBhcmd1bWVudHMpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSk7CitTdWl0ZXMucHVzaCh7
CisgICAgbmFtZTogJ0VtYmVySlMtVG9kb01WQycsCisgICAgdXJsOiAndG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvZW1iZXJqcycsCisgICAgcHJlcGFyZTogZnVuY3Rpb24gKHJ1bm5lciwg
Y29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CisgICAgICAgIHJldHVybiBydW5uZXIu
d2FpdEZvckVsZW1lbnQoJyNuZXctdG9kbycpLnRoZW4oZnVuY3Rpb24gKGVsZW1lbnQpIHsKKyAg
ICAgICAgICAgIGVsZW1lbnQuZm9jdXMoKTsKKyAgICAgICAgICAgIHJldHVybiBlbGVtZW50Owor
ICAgICAgICB9KTsKKyAgICB9LAorICAgIHRlc3RzOiBbCisgICAgICAgIG5ldyBCZW5jaG1hcmtU
ZXN0U3RlcCgnQWRkaW5nJyArIG51bWJlck9mSXRlbXNUb0FkZCArICdJdGVtcycsIGZ1bmN0aW9u
IChuZXdUb2RvLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgICAg
IHZhciBhcHBWaWV3ID0gY29udGVudFdpbmRvdy5BcHA7CisgICAgICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IG51bWJlck9mSXRlbXNUb0FkZDsgaSsrKSB7CisgICAgICAgICAgICAgICAgbmV3
VG9kby52YWx1ZSA9ICdTb21ldGhpbmcgdG8gZG8nICsgaTsKKyAgICAgICAgICAgICAgICB0cmln
Z2VyRW50ZXIobmV3VG9kbywgJ2tleWRvd24nKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgfSks
CisgICAgICAgIG5ldyBCZW5jaG1hcmtUZXN0U3RlcCgnQ29tcGxldGluZ0FsbEl0ZW1zJywgZnVu
Y3Rpb24gKHBhcmFtcywgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CisgICAgICAg
ICAgICB2YXIgY2hlY2tib3hlcyA9IGNvbnRlbnREb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcu
dG9nZ2xlJyk7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoZWNrYm94ZXMubGVu
Z3RoOyBpKyspCisgICAgICAgICAgICAgICAgY2hlY2tib3hlc1tpXS5jbGljaygpOworICAgICAg
ICB9KSwKKyAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdEZWxldGluZ0l0ZW1zJywgZnVu
Y3Rpb24gKHBhcmFtcywgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CisgICAgICAg
ICAgICB2YXIgZGVsZXRlQnV0dG9ucyA9IGNvbnRlbnREb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxs
KCcuZGVzdHJveScpOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkZWxldGVCdXR0
b25zLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgICAgIGRlbGV0ZUJ1dHRvbnNbaV0uY2xpY2so
KTsKKyAgICAgICAgfSksCisgICAgXQorfSk7CiAKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgY2hlY2tib3hlcy5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgICAgIGFwcC5jdXJy
ZW50SXRlbUluZGV4ID0gaTsKLSAgICAgICAgICAgICAgICBhcHAudG9nZ2xlLmNhbGwoY2hlY2ti
b3hlc1tpXSk7CitTdWl0ZXMucHVzaCh7CisgICAgbmFtZTogJ0JhY2tib25lSlMtVG9kb01WQycs
CisgICAgdXJsOiAndG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvaW5kZXgu
aHRtbCcsCisgICAgcHJlcGFyZTogZnVuY3Rpb24gKHJ1bm5lciwgY29udGVudFdpbmRvdywgY29u
dGVudERvY3VtZW50KSB7CisgICAgY29udGVudFdpbmRvdy5CYWNrYm9uZS5zeW5jID0gZnVuY3Rp
b24gKCkge30KKyAgICAgICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVudCgnLm5ldy10b2Rv
JykudGhlbihmdW5jdGlvbiAoZWxlbWVudCkgeworICAgICAgICAgICAgZWxlbWVudC5mb2N1cygp
OworICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgICAgIH0pOworICAgIH0sCisgICAg
dGVzdHM6IFsKKyAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdBZGRpbmcnICsgbnVtYmVy
T2ZJdGVtc1RvQWRkICsgJ0l0ZW1zJywgZnVuY3Rpb24gKG5ld1RvZG8sIGNvbnRlbnRXaW5kb3cs
IGNvbnRlbnREb2N1bWVudCkgeworICAgICAgICAgICAgdmFyIGFwcFZpZXcgPSBjb250ZW50V2lu
ZG93LmFwcFZpZXc7CisgICAgICAgICAgICB2YXIgZmFrZUV2ZW50ID0ge3doaWNoOiAxM307Cisg
ICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bWJlck9mSXRlbXNUb0FkZDsgaSsrKSB7
CisgICAgICAgICAgICAgICAgbmV3VG9kby52YWx1ZSA9ICdTb21ldGhpbmcgdG8gZG8gJyArIGk7
CisgICAgICAgICAgICAgICAgdHJpZ2dlckVudGVyKG5ld1RvZG8sICdrZXlwcmVzcycpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9KSwKKyAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdD
b21wbGV0aW5nQWxsSXRlbXMnLCBmdW5jdGlvbiAobmV3VG9kbywgY29udGVudFdpbmRvdywgY29u
dGVudERvY3VtZW50KSB7CisgICAgICAgICAgICB2YXIgY2hlY2tib3hlcyA9IGNvbnRlbnREb2N1
bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudG9nZ2xlJyk7CisgICAgICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGNoZWNrYm94ZXMubGVuZ3RoOyBpKyspCisgICAgICAgICAgICAgICAgY2hlY2ti
b3hlc1tpXS5jbGljaygpOworICAgICAgICB9KSwKICAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RT
dGVwKCdEZWxldGluZ0FsbEl0ZW1zJywgZnVuY3Rpb24gKG5ld1RvZG8sIGNvbnRlbnRXaW5kb3cs
IGNvbnRlbnREb2N1bWVudCkgewotICAgICAgICAgICAgY29udGVudERvY3VtZW50LnF1ZXJ5U2Vs
ZWN0b3IoJyNjbGVhci1jb21wbGV0ZWQnKS5jbGljaygpOwotICAgICAgICAgICAgdmFyIGFwcCA9
IGNvbnRlbnRXaW5kb3cuYXBwOwogICAgICAgICAgICAgdmFyIGRlbGV0ZUJ1dHRvbnMgPSBjb250
ZW50RG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmRlc3Ryb3knKTsKLQotICAgICAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBkZWxldGVCdXR0b25zLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAg
ICAgICAgICAgYXBwLmN1cnJlbnRJdGVtSW5kZXggPSBpOwotICAgICAgICAgICAgICAgIGFwcC5k
ZXN0cm95LmNhbGwoZGVsZXRlQnV0dG9uc1tpXSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IGRlbGV0ZUJ1dHRvbnMubGVuZ3RoOyBpKyspCisgICAgICAg
ICAgICAgICAgZGVsZXRlQnV0dG9uc1tpXS5jbGljaygpOwogICAgICAgICB9KSwKICAgICBdCiB9
KTsKQEAgLTE2NCw3ICsyMzcsNiBAQCBTdWl0ZXMucHVzaCh7CiAgICAgfSwKICAgICB0ZXN0czog
WwogICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0FkZGluZycgKyBudW1iZXJPZkl0ZW1z
VG9BZGQgKyAnSXRlbXMnLCBmdW5jdGlvbiAobmV3VG9kbywgY29udGVudFdpbmRvdywgY29udGVu
dERvY3VtZW50KSB7Ci0gICAgICAgICAgICB2YXIgdG9kb212YyA9IGNvbnRlbnRXaW5kb3cudG9k
b212YzsKICAgICAgICAgICAgIHZhciBzdWJtaXRFdmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50
KCdFdmVudCcpOwogICAgICAgICAgICAgc3VibWl0RXZlbnQuaW5pdEV2ZW50KCdzdWJtaXQnLCB0
cnVlLCB0cnVlKTsKICAgICAgICAgICAgIHZhciBpbnB1dEV2ZW50ID0gZG9jdW1lbnQuY3JlYXRl
RXZlbnQoJ0V2ZW50Jyk7CkBAIC0xODksMTEgKzI2MSw0NCBAQCBTdWl0ZXMucHVzaCh7CiB9KTsK
IAogU3VpdGVzLnB1c2goewotICAgIG5hbWU6ICdSZWFjdC1Ub2RvTVZDJywKLSAgICB1cmw6ICd0
b2RvbXZjL2xhYnMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L2luZGV4Lmh0bWwnLAorICAg
IG5hbWU6ICdBbmd1bGFyMi1UeXBlU2NyaXB0LVRvZG9NVkMnLAorICAgIHVybDogJ3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvZGlzdC9pbmRleC5odG1sJywKICAgICBwcmVw
YXJlOiBmdW5jdGlvbiAocnVubmVyLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsK
LSAgICAgICAgY29udGVudFdpbmRvdy5VdGlscy5zdG9yZSA9IGZ1bmN0aW9uICgpIHt9Ci0gICAg
ICAgIHJldHVybiBydW5uZXIud2FpdEZvckVsZW1lbnQoJyNuZXctdG9kbycpLnRoZW4oZnVuY3Rp
b24gKGVsZW1lbnQpIHsKKyAgICAgICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVudCgnLm5l
dy10b2RvJykudGhlbihmdW5jdGlvbiAoZWxlbWVudCkgeworICAgICAgICAgICAgZWxlbWVudC5m
b2N1cygpOworICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgICAgIH0pOworICAgIH0s
CisgICAgdGVzdHM6IFsKKyAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdBZGRpbmcnICsg
bnVtYmVyT2ZJdGVtc1RvQWRkICsgJ0l0ZW1zJywgZnVuY3Rpb24gKG5ld1RvZG8sIGNvbnRlbnRX
aW5kb3csIGNvbnRlbnREb2N1bWVudCkgeworICAgICAgICAgICAgdmFyIGFwcFZpZXcgPSBjb250
ZW50V2luZG93LkFwcDsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtYmVyT2ZJ
dGVtc1RvQWRkOyBpKyspIHsKKyAgICAgICAgICAgICAgICBuZXdUb2RvLnZhbHVlID0gJ1NvbWV0
aGluZyB0byBkbycgKyBpOworICAgICAgICAgICAgICAgIG5ld1RvZG8uZGlzcGF0Y2hFdmVudChu
ZXcgRXZlbnQoJ2lucHV0JywgeworICAgICAgICAgICAgICAgICAgYnViYmxlczogdHJ1ZSwKKyAg
ICAgICAgICAgICAgICAgIGNhbmNlbGFibGU6IHRydWUKKyAgICAgICAgICAgICAgICB9KSk7Cisg
ICAgICAgICAgICAgICAgdHJpZ2dlckVudGVyKG5ld1RvZG8sICdrZXl1cCcpOworICAgICAgICAg
ICAgfQorICAgICAgICB9KSwKKyAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdDb21wbGV0
aW5nQWxsSXRlbXMnLCBmdW5jdGlvbiAocGFyYW1zLCBjb250ZW50V2luZG93LCBjb250ZW50RG9j
dW1lbnQpIHsKKyAgICAgICAgICAgIHZhciBjaGVja2JveGVzID0gY29udGVudERvY3VtZW50LnF1
ZXJ5U2VsZWN0b3JBbGwoJy50b2dnbGUnKTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgY2hlY2tib3hlcy5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgICAgICBjaGVja2JveGVzW2ld
LmNsaWNrKCk7CisgICAgICAgIH0pLAorICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0Rl
bGV0aW5nSXRlbXMnLCBmdW5jdGlvbiAocGFyYW1zLCBjb250ZW50V2luZG93LCBjb250ZW50RG9j
dW1lbnQpIHsKKyAgICAgICAgICAgIHZhciBkZWxldGVCdXR0b25zID0gY29udGVudERvY3VtZW50
LnF1ZXJ5U2VsZWN0b3JBbGwoJy5kZXN0cm95Jyk7CisgICAgICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGRlbGV0ZUJ1dHRvbnMubGVuZ3RoOyBpKyspCisgICAgICAgICAgICAgICAgZGVsZXRl
QnV0dG9uc1tpXS5jbGljaygpOworICAgICAgICB9KSwKKyAgICBdCit9KTsKKworU3VpdGVzLnB1
c2goeworICAgIG5hbWU6ICdWdWVKUy1Ub2RvTVZDJywKKyAgICB1cmw6ICd0b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvZGlzdC9pbmRleC5odG1sJywKKyAgICBwcmVwYXJl
OiBmdW5jdGlvbiAocnVubmVyLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAg
ICAgICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVudCgnLm5ldy10b2RvJykudGhlbihmdW5j
dGlvbiAoZWxlbWVudCkgewogICAgICAgICAgICAgZWxlbWVudC5mb2N1cygpOwogICAgICAgICAg
ICAgcmV0dXJuIGVsZW1lbnQ7CiAgICAgICAgIH0pOwpAQCAtMjAzLDExICszMDgsMTIgQEAgU3Vp
dGVzLnB1c2goewogICAgICAgICAgICAgdmFyIHRvZG9tdmMgPSBjb250ZW50V2luZG93LnRvZG9t
dmM7CiAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bWJlck9mSXRlbXNUb0FkZDsg
aSsrKSB7CiAgICAgICAgICAgICAgICAgbmV3VG9kby52YWx1ZSA9ICdTb21ldGhpbmcgdG8gZG8g
JyArIGk7Ci0KLSAgICAgICAgICAgICAgICB2YXIga2V5ZG93bkV2ZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRXZlbnQoJ0V2ZW50Jyk7Ci0gICAgICAgICAgICAgICAga2V5ZG93bkV2ZW50LmluaXRFdmVu
dCgna2V5ZG93bicsIHRydWUsIHRydWUpOwotICAgICAgICAgICAgICAgIGtleWRvd25FdmVudC53
aGljaCA9IDEzOyAvLyBWS19FTlRFUgotICAgICAgICAgICAgICAgIG5ld1RvZG8uZGlzcGF0Y2hF
dmVudChrZXlkb3duRXZlbnQpOworICAgICAgICAgICAgICAgIG5ld1RvZG8udmFsdWUgPSAnU29t
ZXRoaW5nIHRvIGRvJyArIGk7CisgICAgICAgICAgICAgICAgbmV3VG9kby5kaXNwYXRjaEV2ZW50
KG5ldyBFdmVudCgnaW5wdXQnLCB7CisgICAgICAgICAgICAgICAgICBidWJibGVzOiB0cnVlLAor
ICAgICAgICAgICAgICAgICAgY2FuY2VsYWJsZTogdHJ1ZQorICAgICAgICAgICAgICAgIH0pKTsK
KyAgICAgICAgICAgICAgICB0cmlnZ2VyRW50ZXIobmV3VG9kbywgJ2tleXVwJyk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0pLAogICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0NvbXBs
ZXRpbmdBbGxJdGVtcycsIGZ1bmN0aW9uIChuZXdUb2RvLCBjb250ZW50V2luZG93LCBjb250ZW50
RG9jdW1lbnQpIHsKQEAgLTIyNCwyNSArMzMwLDE5IEBAIFN1aXRlcy5wdXNoKHsKIH0pOwogCiBT
dWl0ZXMucHVzaCh7Ci0gICAgbmFtZTogJ0ZsaWdodEpTLVRvZG9NVkMnLAotICAgIHVybDogJ3Rv
ZG9tdmMvZGVwZW5kZW5jeS1leGFtcGxlcy9mbGlnaHQvaW5kZXguaHRtbCcsCisgICAgbmFtZTog
J2pRdWVyeS1Ub2RvTVZDJywKKyAgICB1cmw6ICd0b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9qcXVlcnkvaW5kZXguaHRtbCcsCiAgICAgcHJlcGFyZTogZnVuY3Rpb24gKHJ1bm5lciwgY29u
dGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7Ci0gICAgICAgIHJldHVybiBydW5uZXIud2Fp
dEZvckVsZW1lbnQoJyNhcHBJc1JlYWR5JykudGhlbihmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAg
ICB2YXIgbmV3VG9kbyA9IGNvbnRlbnREb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjbmV3LXRvZG8n
KTsKLSAgICAgICAgICAgIG5ld1RvZG8uZm9jdXMoKTsKLSAgICAgICAgICAgIHJldHVybiBuZXdU
b2RvOwotICAgICAgICB9KTs7CisgICAgICAgIHJldHVybiBydW5uZXIud2FpdEZvckVsZW1lbnQo
JyNuZXctdG9kbycpLnRoZW4oZnVuY3Rpb24gKGVsZW1lbnQpIHsKKyAgICAgICAgICAgIGVsZW1l
bnQuZm9jdXMoKTsKKyAgICAgICAgICAgIHJldHVybiBlbGVtZW50OworICAgICAgICB9KTsKICAg
ICB9LAogICAgIHRlc3RzOiBbCiAgICAgICAgIG5ldyBCZW5jaG1hcmtUZXN0U3RlcCgnQWRkaW5n
JyArIG51bWJlck9mSXRlbXNUb0FkZCArICdJdGVtcycsIGZ1bmN0aW9uIChuZXdUb2RvLCBjb250
ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKLSAgICAgICAgICAgIHZhciB0b2RvbXZjID0g
Y29udGVudFdpbmRvdy50b2RvbXZjOwogICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBu
dW1iZXJPZkl0ZW1zVG9BZGQ7IGkrKykgewogICAgICAgICAgICAgICAgIG5ld1RvZG8udmFsdWUg
PSAnU29tZXRoaW5nIHRvIGRvICcgKyBpOwotCi0gICAgICAgICAgICAgICAgdmFyIGtleWRvd25F
dmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdFdmVudCcpOwotICAgICAgICAgICAgICAgIGtl
eWRvd25FdmVudC5pbml0RXZlbnQoJ2tleWRvd24nLCB0cnVlLCB0cnVlKTsKLSAgICAgICAgICAg
ICAgICBrZXlkb3duRXZlbnQud2hpY2ggPSAxMzsgLy8gVktfRU5URVIKLSAgICAgICAgICAgICAg
ICBuZXdUb2RvLmRpc3BhdGNoRXZlbnQoa2V5ZG93bkV2ZW50KTsKKyAgICAgICAgICAgICAgICB0
cmlnZ2VyRW50ZXIobmV3VG9kbywgJ2tleXVwJyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0p
LAogICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0NvbXBsZXRpbmdBbGxJdGVtcycsIGZ1
bmN0aW9uIChuZXdUb2RvLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKQEAgLTI1
MSw2ICszNTEsMTM1IEBAIFN1aXRlcy5wdXNoKHsKICAgICAgICAgICAgICAgICBjaGVja2JveGVz
W2ldLmNsaWNrKCk7CiAgICAgICAgIH0pLAogICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAo
J0RlbGV0aW5nQWxsSXRlbXMnLCBmdW5jdGlvbiAobmV3VG9kbywgY29udGVudFdpbmRvdywgY29u
dGVudERvY3VtZW50KSB7CisgICAgICAgICAgICB2YXIgY2xlYXIgPSBjb250ZW50RG9jdW1lbnQu
cXVlcnlTZWxlY3RvcignI2NsZWFyLWNvbXBsZXRlZCcpOworICAgICAgICAgICAgaWYgKGNsZWFy
ICE9PSBudWxsKQorICAgICAgICAgICAgICAgIGNsZWFyLmNsaWNrKCk7CisgICAgICAgICAgICB2
YXIgYXBwID0gY29udGVudFdpbmRvdy5hcHA7CisgICAgICAgICAgICB2YXIgZGVsZXRlQnV0dG9u
cyA9IGNvbnRlbnREb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZGVzdHJveScpOworCisgICAg
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRlbGV0ZUJ1dHRvbnMubGVuZ3RoOyBpKyspCisg
ICAgICAgICAgICAgICAgZGVsZXRlQnV0dG9uc1tpXS5jbGljaygpOworICAgICAgICB9KSwKKyAg
ICBdCit9KQorCitTdWl0ZXMucHVzaCh7CisgICAgbmFtZTogJ1ByZWFjdC1Ub2RvTVZDJywKKyAg
ICB1cmw6ICd0b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9wcmVhY3QvZGlzdC9pbmRleC5o
dG1sJywKKyAgICBwcmVwYXJlOiBmdW5jdGlvbiAocnVubmVyLCBjb250ZW50V2luZG93LCBjb250
ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVudCgnLm5l
dy10b2RvJykudGhlbihmdW5jdGlvbiAoZWxlbWVudCkgeworICAgICAgICAgICAgZWxlbWVudC5m
b2N1cygpOworICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgICAgIH0pOworICAgIH0s
CisgICAgdGVzdHM6IFsKKyAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdBZGRpbmcnICsg
bnVtYmVyT2ZJdGVtc1RvQWRkICsgJ0l0ZW1zJywgZnVuY3Rpb24gKG5ld1RvZG8sIGNvbnRlbnRX
aW5kb3csIGNvbnRlbnREb2N1bWVudCkgeworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBudW1iZXJPZkl0ZW1zVG9BZGQ7IGkrKykgeworICAgICAgICAgICAgICAgIG5ld1RvZG8udmFs
dWUgPSAnU29tZXRoaW5nIHRvIGRvJyArIGk7CisgICAgICAgICAgICAgICAgdHJpZ2dlckVudGVy
KG5ld1RvZG8sICdrZXlkb3duJyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pLAorICAgICAg
ICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0NvbXBsZXRpbmdBbGxJdGVtcycsIGZ1bmN0aW9uIChw
YXJhbXMsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgeworICAgICAgICAgICAgdmFy
IGNoZWNrYm94ZXMgPSBjb250ZW50RG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRvZ2dsZScp
OworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGVja2JveGVzLmxlbmd0aDsgaSsr
KQorICAgICAgICAgICAgICAgIGNoZWNrYm94ZXNbaV0uY2xpY2soKTsKKyAgICAgICAgfSksCisg
ICAgICAgIG5ldyBCZW5jaG1hcmtUZXN0U3RlcCgnRGVsZXRpbmdJdGVtcycsIGZ1bmN0aW9uIChw
YXJhbXMsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgeworICAgICAgICAgICAgdmFy
IGRlbGV0ZUJ1dHRvbnMgPSBjb250ZW50RG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmRlc3Ry
b3knKTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGVsZXRlQnV0dG9ucy5sZW5n
dGg7IGkrKykKKyAgICAgICAgICAgICAgICBkZWxldGVCdXR0b25zW2ldLmNsaWNrKCk7CisgICAg
ICAgIH0pLAorICAgIF0KK30pOworCitTdWl0ZXMucHVzaCh7CisgICAgbmFtZTogJ0luZmVybm8t
VG9kb01WQycsCisgICAgdXJsOiAndG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvaW5mZXJu
by9pbmRleC5odG1sJywKKyAgICBwcmVwYXJlOiBmdW5jdGlvbiAocnVubmVyLCBjb250ZW50V2lu
ZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxl
bWVudCgnLm5ldy10b2RvJykudGhlbihmdW5jdGlvbiAoZWxlbWVudCkgeworICAgICAgICAgICAg
ZWxlbWVudC5mb2N1cygpOworICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgICAgIH0p
OworICAgIH0sCisgICAgdGVzdHM6IFsKKyAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdB
ZGRpbmcnICsgbnVtYmVyT2ZJdGVtc1RvQWRkICsgJ0l0ZW1zJywgZnVuY3Rpb24gKG5ld1RvZG8s
IGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgeworICAgICAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBudW1iZXJPZkl0ZW1zVG9BZGQ7IGkrKykgeworICAgICAgICAgICAgICAgIG5l
d1RvZG8udmFsdWUgPSAnU29tZXRoaW5nIHRvIGRvJyArIGk7CisgICAgICAgICAgICAgICAgbmV3
VG9kby5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnY2hhbmdlJywgeworICAgICAgICAgICAgICAg
ICAgYnViYmxlczogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgIGNhbmNlbGFibGU6IHRydWUKKyAg
ICAgICAgICAgICAgICB9KSk7CisgICAgICAgICAgICAgICAgdHJpZ2dlckVudGVyKG5ld1RvZG8s
ICdrZXlkb3duJyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pLAorICAgICAgICBuZXcgQmVu
Y2htYXJrVGVzdFN0ZXAoJ0NvbXBsZXRpbmdBbGxJdGVtcycsIGZ1bmN0aW9uIChwYXJhbXMsIGNv
bnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgeworICAgICAgICAgICAgdmFyIGNoZWNrYm94
ZXMgPSBjb250ZW50RG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRvZ2dsZScpOworICAgICAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGVja2JveGVzLmxlbmd0aDsgaSsrKQorICAgICAg
ICAgICAgICAgIGNoZWNrYm94ZXNbaV0uY2xpY2soKTsKKyAgICAgICAgfSksCisgICAgICAgIG5l
dyBCZW5jaG1hcmtUZXN0U3RlcCgnRGVsZXRpbmdJdGVtcycsIGZ1bmN0aW9uIChwYXJhbXMsIGNv
bnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgeworICAgICAgICAgICAgdmFyIGRlbGV0ZUJ1
dHRvbnMgPSBjb250ZW50RG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmRlc3Ryb3knKTsKKyAg
ICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGVsZXRlQnV0dG9ucy5sZW5ndGg7IGkrKykK
KyAgICAgICAgICAgICAgICBkZWxldGVCdXR0b25zW2ldLmNsaWNrKCk7CisgICAgICAgIH0pLAor
ICAgIF0KK30pOworCitTdWl0ZXMucHVzaCh7CisgICAgbmFtZTogJ0VsbS1Ub2RvTVZDJywKKyAg
ICB1cmw6ICd0b2RvbXZjL2Z1bmN0aW9uYWwtcHJvZy1leGFtcGxlcy9lbG0vaW5kZXguaHRtbCcs
CisgICAgcHJlcGFyZTogZnVuY3Rpb24gKHJ1bm5lciwgY29udGVudFdpbmRvdywgY29udGVudERv
Y3VtZW50KSB7CisgICAgICAgIHJldHVybiBydW5uZXIud2FpdEZvckVsZW1lbnQoJy5uZXctdG9k
bycpLnRoZW4oZnVuY3Rpb24gKGVsZW1lbnQpIHsKKyAgICAgICAgICAgIGVsZW1lbnQuZm9jdXMo
KTsKKyAgICAgICAgICAgIHJldHVybiBlbGVtZW50OworICAgICAgICB9KTsKKyAgICB9LAorICAg
IHRlc3RzOiBbCisgICAgICAgIG5ldyBCZW5jaG1hcmtUZXN0U3RlcCgnQWRkaW5nJyArIG51bWJl
ck9mSXRlbXNUb0FkZCArICdJdGVtcycsIGZ1bmN0aW9uIChuZXdUb2RvLCBjb250ZW50V2luZG93
LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVt
YmVyT2ZJdGVtc1RvQWRkOyBpKyspIHsKKyAgICAgICAgICAgICAgICBuZXdUb2RvLnZhbHVlID0g
J1NvbWV0aGluZyB0byBkbycgKyBpOworICAgICAgICAgICAgICAgIG5ld1RvZG8uZGlzcGF0Y2hF
dmVudChuZXcgRXZlbnQoJ2lucHV0JywgeworICAgICAgICAgICAgICAgICAgYnViYmxlczogdHJ1
ZSwKKyAgICAgICAgICAgICAgICAgIGNhbmNlbGFibGU6IHRydWUKKyAgICAgICAgICAgICAgICB9
KSk7CisgICAgICAgICAgICAgICAgdHJpZ2dlckVudGVyKG5ld1RvZG8sICdrZXlkb3duJyk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0pLAorICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAo
J0NvbXBsZXRpbmdBbGxJdGVtcycsIGZ1bmN0aW9uIChwYXJhbXMsIGNvbnRlbnRXaW5kb3csIGNv
bnRlbnREb2N1bWVudCkgeworICAgICAgICAgICAgdmFyIGNoZWNrYm94ZXMgPSBjb250ZW50RG9j
dW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRvZ2dsZScpOworICAgICAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBjaGVja2JveGVzLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgICAgIGNoZWNr
Ym94ZXNbaV0uY2xpY2soKTsKKyAgICAgICAgfSksCisgICAgICAgIG5ldyBCZW5jaG1hcmtUZXN0
U3RlcCgnRGVsZXRpbmdJdGVtcycsIGZ1bmN0aW9uIChwYXJhbXMsIGNvbnRlbnRXaW5kb3csIGNv
bnRlbnREb2N1bWVudCkgeworICAgICAgICAgICAgdmFyIGRlbGV0ZUJ1dHRvbnMgPSBjb250ZW50
RG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmRlc3Ryb3knKTsKKyAgICAgICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgZGVsZXRlQnV0dG9ucy5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgICAg
ICBkZWxldGVCdXR0b25zW2ldLmNsaWNrKCk7CisgICAgICAgIH0pLAorICAgIF0KK30pOworCitT
dWl0ZXMucHVzaCh7CisgICAgbmFtZTogJ0ZsaWdodC1Ub2RvTVZDJywKKyAgICB1cmw6ICd0b2Rv
bXZjL2RlcGVuZGVuY3ktZXhhbXBsZXMvZmxpZ2h0L2ZsaWdodC9pbmRleC5odG1sJywKKyAgICBw
cmVwYXJlOiBmdW5jdGlvbiAocnVubmVyLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQp
IHsKKyAgICAgICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVudCgnI25ldy10b2RvJykudGhl
bihmdW5jdGlvbiAoZWxlbWVudCkgeworICAgICAgICAgICAgZWxlbWVudC5mb2N1cygpOworICAg
ICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgICAgIH0pOworICAgIH0sCisgICAgdGVzdHM6
IFsKKyAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdBZGRpbmcnICsgbnVtYmVyT2ZJdGVt
c1RvQWRkICsgJ0l0ZW1zJywgZnVuY3Rpb24gKG5ld1RvZG8sIGNvbnRlbnRXaW5kb3csIGNvbnRl
bnREb2N1bWVudCkgeworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1iZXJPZkl0
ZW1zVG9BZGQ7IGkrKykgeworICAgICAgICAgICAgICAgIG5ld1RvZG8udmFsdWUgPSAnU29tZXRo
aW5nIHRvIGRvJyArIGk7CisgICAgICAgICAgICAgICAgdHJpZ2dlckVudGVyKG5ld1RvZG8sICdr
ZXlkb3duJyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pLAorICAgICAgICBuZXcgQmVuY2ht
YXJrVGVzdFN0ZXAoJ0NvbXBsZXRpbmdBbGxJdGVtcycsIGZ1bmN0aW9uIChwYXJhbXMsIGNvbnRl
bnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgeworICAgICAgICAgICAgdmFyIGNoZWNrYm94ZXMg
PSBjb250ZW50RG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRvZ2dsZScpOworICAgICAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGVja2JveGVzLmxlbmd0aDsgaSsrKQorICAgICAgICAg
ICAgICAgIGNoZWNrYm94ZXNbaV0uY2xpY2soKTsKKyAgICAgICAgfSksCisgICAgICAgIG5ldyBC
ZW5jaG1hcmtUZXN0U3RlcCgnRGVsZXRpbmdJdGVtcycsIGZ1bmN0aW9uIChwYXJhbXMsIGNvbnRl
bnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgewogICAgICAgICAgICAgdmFyIGRlbGV0ZUJ1dHRv
bnMgPSBjb250ZW50RG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmRlc3Ryb3knKTsKICAgICAg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGVsZXRlQnV0dG9ucy5sZW5ndGg7IGkrKykKICAg
ICAgICAgICAgICAgICBkZWxldGVCdXR0b25zW2ldLmNsaWNrKCk7CmRpZmYgLS1naXQgYS9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9hbmd1bGFyL2Rpc3QvaW5kZXguaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvZGlz
dC9pbmRleC5odG1sCmluZGV4IDc2YmRjODZjZjhkZDRkNWVhMDQ4OTUxYzgyMWI0Y2ExZDZmZWRl
N2QuLjNhMWE5ZTI4N2Q2Y2EwY2Y2YzE4OWYyZmE5NzkyNTk4YTY4ZmQzMmUgMTAwNjQ0Ci0tLSBh
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2FuZ3VsYXIvZGlzdC9pbmRleC5odG1sCisrKyBiL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2Fu
Z3VsYXIvZGlzdC9pbmRleC5odG1sCkBAIC05LDcgKzksNyBAQAogICA8bGluayByZWw9Imljb24i
IHR5cGU9ImltYWdlL3gtaWNvbiIgaHJlZj0iZmF2aWNvbi5pY28iPgogICA8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9ImFzc2V0cy9jc3MvdG9kb212Yy1jb21tb24uY3NzIj4KICAgPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSJhc3NldHMvY3NzL3RvZG9tdmMtYXBwLmNzcyI+Ci08bGlu
ayBocmVmPSJzdHlsZXMuZDQxZDhjZDk4ZjAwYjIwNGU5ODAuYnVuZGxlLmNzcyIgcmVsPSJzdHls
ZXNoZWV0Ii8+PC9oZWFkPgorPC9oZWFkPgogPGJvZHk+CiAgIDxhcHAtcm9vdD5Mb2FkaW5nLi4u
PC9hcHAtcm9vdD4KICAgPCEtLSBDcmVkaXRzOiBBZGR5IE9zbWFuaSAtLT4KZGlmZiAtLWdpdCBh
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2VtYmVyanMvYXNzZXRzL3RvZG9tdmMuanMgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJl
cmpzL2Fzc2V0cy90b2RvbXZjLmpzCmluZGV4IDYxOWEwMDRiMGZjZmRmODI3NTNkMjQ1MGI4YmZj
MWJhYmE2NWVhYTYuLjdkNGRmYjM2YzcxYWQ0NmUwZWQ0YjFkNGE1MmQ3ZmU3ZWI2MmUwMDQgMTAw
NjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvYXNzZXRzL3RvZG9tdmMuanMKKysrIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvZW1iZXJqcy9hc3NldHMvdG9kb212Yy5qcwpAQCAtMzYzLDE5ICszNjMsMTUgQEAg
ZGVmaW5lKCd0b2RvbXZjL3NlcnZpY2VzL21lbW9yeScsIFsnZXhwb3J0cyddLCBmdW5jdGlvbiAo
ZXhwb3J0cykgewogICAgICAgbG9jYWxTdG9yYWdlTWVtb3J5Lmxlbmd0aCA9IDA7CiAgICAgfTsK
IAotICAgIGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpIHsKLSAgICAgIG1vZHVsZS5l
eHBvcnRzID0gbG9jYWxTdG9yYWdlTWVtb3J5OwotICAgIH0gZWxzZSB7Ci0gICAgICByb290Lmxv
Y2FsU3RvcmFnZU1lbW9yeSA9IGxvY2FsU3RvcmFnZU1lbW9yeTsKLSAgICB9Ci0gIH0pKHRoaXMp
OworICAgIHJvb3QubG9jYWxTdG9yYWdlTWVtb3J5ID0gbG9jYWxTdG9yYWdlTWVtb3J5OworICB9
KSh3aW5kb3cpOwogfSk7CiBkZWZpbmUoJ3RvZG9tdmMvc2VydmljZXMvcmVwbycsIFsnZXhwb3J0
cycsICdlbWJlcicsICd0b2RvbXZjL3NlcnZpY2VzL21lbW9yeSddLCBmdW5jdGlvbiAoZXhwb3J0
cywgX2VtYmVyLCBfdG9kb212Y1NlcnZpY2VzTWVtb3J5KSB7CiAgICAgZXhwb3J0c1snZGVmYXVs
dCddID0gX2VtYmVyWydkZWZhdWx0J10uU2VydmljZS5leHRlbmQoewogICAgICAgICBsYXN0SWQ6
IDAsCiAgICAgICAgIGRhdGE6IG51bGwsCiAgICAgICAgIGZpbmRBbGw6IGZ1bmN0aW9uIGZpbmRB
bGwoKSB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXQoJ2RhdGEnKSB8fCB0aGlzLnNldCgn
ZGF0YScsIEpTT04ucGFyc2UoX3RvZG9tdmNTZXJ2aWNlc01lbW9yeS5nZXRJdGVtKCd0b2Rvcycp
IHx8ICdbXScpKTsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLmdldCgnZGF0YScpIHx8IHRoaXMu
c2V0KCdkYXRhJywgSlNPTi5wYXJzZSh3aW5kb3cubG9jYWxTdG9yYWdlTWVtb3J5LmdldEl0ZW0o
J3RvZG9zJykgfHwgJ1tdJykpOwogICAgICAgICB9LAogCiAgICAgICAgIGFkZDogZnVuY3Rpb24g
YWRkKGF0dHJzKSB7CkBAIC0zOTEsNyArMzg3LDcgQEAgZGVmaW5lKCd0b2RvbXZjL3NlcnZpY2Vz
L3JlcG8nLCBbJ2V4cG9ydHMnLCAnZW1iZXInLCAndG9kb212Yy9zZXJ2aWNlcy9tZW1vcnknXSwK
ICAgICAgICAgfSwKIAogICAgICAgICBwZXJzaXN0OiBmdW5jdGlvbiBwZXJzaXN0KCkgewotICAg
ICAgICAgICAgX3RvZG9tdmNTZXJ2aWNlc01lbW9yeS5zZXRJdGVtKCd0b2RvcycsIEpTT04uc3Ry
aW5naWZ5KHRoaXMuZ2V0KCdkYXRhJykpKTsKKyAgICAgICAgICAgIHdpbmRvdy5sb2NhbFN0b3Jh
Z2VNZW1vcnkuc2V0SXRlbSgndG9kb3MnLCBKU09OLnN0cmluZ2lmeSh0aGlzLmdldCgnZGF0YScp
KSk7CiAgICAgICAgIH0KICAgICB9KTsKIH0pOwpAQCAtMTI1Nyw3ICsxMjUzLDcgQEAgY2F0Y2go
ZXJyKSB7CiAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovCiAKIGlmICghcnVubmluZ1Rlc3RzKSB7
Ci0gIHJlcXVpcmUoInRvZG9tdmMvYXBwIilbImRlZmF1bHQiXS5jcmVhdGUoeyJuYW1lIjoidG9k
b212YyIsInZlcnNpb24iOiIwLjAuMCs1ZGJjNWZiOSJ9KTsKKyAgcmVxdWlyZSgidG9kb212Yy9h
cHAiKVsiZGVmYXVsdCJdLmNyZWF0ZSh7Im5hbWUiOiJ0b2RvbXZjIiwidmVyc2lvbiI6IjAuMC4w
KyJ9KTsKIH0KIAogLyoganNoaW50IGlnbm9yZTplbmQgKi8KZGlmZiAtLWdpdCBhL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2VtYmVyanMvaW5kZXguaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvaW5kZXguaHRtbApp
bmRleCA3ZTQ4YzE5OTI3ZDUxY2U0OGU4MzFhN2VlNWYwMTQzZjY2NjUwNjRhLi43ODFlYTYzYTJl
NmMwZDdkOTNiNWJiM2Q0NTc2YWNiMGM4MzI5MTgzIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9l
bWJlcmpzL2luZGV4Lmh0bWwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9pbmRleC5odG1sCkBA
IC02LDIxICs2LDIwIEBACiAgICAgPHRpdGxlPlRvZG9tdmM8L3RpdGxlPgogICAgIDxtZXRhIG5h
bWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSIiPgogICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBj
b250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSI+Ci0gICAgPGJhc2Ug
aHJlZj0iL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMiIC8+CisgICAgPGJhc2UgaHJlZj0iL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzLyIgLz4K
ICAgICAKLTxtZXRhIG5hbWU9InRvZG9tdmMvY29uZmlnL2Vudmlyb25tZW50IiBjb250ZW50PSIl
N0IlMjJtb2R1bGVQcmVmaXglMjIlM0ElMjJ0b2RvbXZjJTIyJTJDJTIyZW52aXJvbm1lbnQlMjIl
M0ElMjJkZXZlbG9wbWVudCUyMiUyQyUyMmJhc2VVUkwlMjIlM0FudWxsJTJDJTIybG9jYXRpb25U
eXBlJTIyJTNBJTIyYXV0byUyMiUyQyUyMkVtYmVyRU5WJTIyJTNBJTdCJTIyRkVBVFVSRVMlMjIl
M0ElN0IlN0QlN0QlMkMlMjJBUFAlMjIlM0ElN0IlMjJuYW1lJTIyJTNBJTIydG9kb212YyUyMiUy
QyUyMnZlcnNpb24lMjIlM0ElMjIwLjAuMCs1ZGJjNWZiOSUyMiU3RCUyQyUyMmV4cG9ydEFwcGxp
Y2F0aW9uR2xvYmFsJTIyJTNBdHJ1ZSU3RCIgLz4KKzxtZXRhIG5hbWU9InRvZG9tdmMvY29uZmln
L2Vudmlyb25tZW50IiBjb250ZW50PSIlN0IlMjJtb2R1bGVQcmVmaXglMjIlM0ElMjJ0b2RvbXZj
JTIyJTJDJTIyZW52aXJvbm1lbnQlMjIlM0ElMjJkZXZlbG9wbWVudCUyMiUyQyUyMmJhc2VVUkwl
MjIlM0FudWxsJTJDJTIybG9jYXRpb25UeXBlJTIyJTNBJTIyYXV0byUyMiUyQyUyMkVtYmVyRU5W
JTIyJTNBJTdCJTIyRkVBVFVSRVMlMjIlM0ElN0IlN0QlN0QlMkMlMjJBUFAlMjIlM0ElN0IlMjJu
YW1lJTIyJTNBJTIydG9kb212YyUyMiUyQyUyMnZlcnNpb24lMjIlM0ElMjIwLjAuMCslMjIlN0Ql
MkMlMjJleHBvcnRBcHBsaWNhdGlvbkdsb2JhbCUyMiUzQXRydWUlN0QiIC8+CiAKLSAgICA8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL2Fzc2V0cy92ZW5k
b3IuY3NzIj4KLSAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9l
bWJlcmpzL2Fzc2V0cy90b2RvbXZjLmNzcyI+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSJhc3NldHMvdmVuZG9yLmNzcyI+CiAKICAgICAKICAgPC9oZWFkPgogICA8Ym9keT4KICAg
ICAKIAotICAgIDxzY3JpcHQgc3JjPSIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9hc3NldHMvdmVuZG9y
LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvYXNz
ZXRzL3RvZG9tdmMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJhc3NldHMvdmVuZG9y
LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iYXNzZXRzL3RvZG9tdmMuanMiPjwvc2Ny
aXB0PgogCiAgICAgCiAgIDwvYm9keT4KLTwvaHRtbD4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS9hcHAv
c2VydmljZXMvbWVtb3J5LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvYXBwL3NlcnZp
Y2VzL21lbW9yeS5qcwppbmRleCA0YjlkNWFmOWQ2ZDFkOGQ1OWMwY2RiMjY4OGJmZWMyYWRhODJm
M2MyLi43NGM1Y2RmMTlmZDlmZGIyNmE5MGYwOWEzMDFkNDNkYmQzNTI3ZDYxIDEwMDY0NAotLS0g
YS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS9hcHAvc2VydmljZXMvbWVtb3J5LmpzCisrKyBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNlL2FwcC9zZXJ2aWNlcy9tZW1vcnkuanMKQEAgLTc0
LDkgKzc0LDUgQEAKICAgICBsb2NhbFN0b3JhZ2VNZW1vcnkubGVuZ3RoID0gMDsKICAgfTsKIAot
ICBpZiAodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKSB7Ci0gICAgbW9kdWxlLmV4cG9ydHMg
PSBsb2NhbFN0b3JhZ2VNZW1vcnk7Ci0gIH0gZWxzZSB7CiAgICAgcm9vdC5sb2NhbFN0b3JhZ2VN
ZW1vcnkgPSBsb2NhbFN0b3JhZ2VNZW1vcnk7Ci0gIH0KLX0pKHRoaXMpOworfSkod2luZG93KTsK
ZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNlL2FwcC9zZXJ2aWNlcy9yZXBv
LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvYXBwL3NlcnZpY2VzL3JlcG8uanMKaW5k
ZXggMDE0N2ZmM2VmYzdlOGFhZWYyN2I3MTAwNTA1YzAxYWQxMWY5YWNkMS4uY2ZmYTM4NThmZDc3
YmJiYTVjNDM1ZWE1YzljODg5OGFkMTc3M2I4YSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1i
ZXJqcy9zb3VyY2UvYXBwL3NlcnZpY2VzL3JlcG8uanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJq
cy9zb3VyY2UvYXBwL3NlcnZpY2VzL3JlcG8uanMKQEAgLTEsMTIgKzEsMTIgQEAKIGltcG9ydCBF
bWJlciBmcm9tICdlbWJlcic7Ci1pbXBvcnQgKiBhcyBsb2NhbFN0b3JhZ2VNZW1vcnkgZnJvbSAn
Li9tZW1vcnknOworaW1wb3J0IGxvY2FsU3RvcmFnZU1lbW9yeSBmcm9tICcuL21lbW9yeSc7CiAK
IGV4cG9ydCBkZWZhdWx0IEVtYmVyLlNlcnZpY2UuZXh0ZW5kKHsKICAgICBsYXN0SWQ6IDAsCiAg
ICAgZGF0YTogbnVsbCwKICAgICBmaW5kQWxsKCkgewogICAgICAgICByZXR1cm4gdGhpcy5nZXQo
J2RhdGEnKSB8fAotICAgICAgICAgICAgdGhpcy5zZXQoJ2RhdGEnLCBKU09OLnBhcnNlKGxvY2Fs
U3RvcmFnZU1lbW9yeS5nZXRJdGVtKCd0b2RvcycpIHx8ICdbXScpKTsKKyAgICAgICAgICAgIHRo
aXMuc2V0KCdkYXRhJywgSlNPTi5wYXJzZSh3aW5kb3cubG9jYWxTdG9yYWdlTWVtb3J5LmdldEl0
ZW0oJ3RvZG9zJykgfHwgJ1tdJykpOwogICAgIH0sCiAKICAgICBhZGQoYXR0cnMpIHsKQEAgLTIy
LDYgKzIyLDYgQEAgZXhwb3J0IGRlZmF1bHQgRW1iZXIuU2VydmljZS5leHRlbmQoewogICAgIH0s
CiAKICAgICBwZXJzaXN0KCkgewotICAgICAgICBsb2NhbFN0b3JhZ2VNZW1vcnkuc2V0SXRlbSgn
dG9kb3MnLCBKU09OLnN0cmluZ2lmeSh0aGlzLmdldCgnZGF0YScpKSk7CisgICAgICAgIHdpbmRv
dy5sb2NhbFN0b3JhZ2VNZW1vcnkuc2V0SXRlbSgndG9kb3MnLCBKU09OLnN0cmluZ2lmeSh0aGlz
LmdldCgnZGF0YScpKSk7CiAgICAgfQogfSk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJl
cmpzL3Rlc3RzL2luZGV4Lmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3Rlc3RzL2luZGV4Lmh0
bWwKaW5kZXggZTJhMjdjMTQ5YjZkZTA3YzY5MzMxMDk4NDI1ZmRkOGQ1ZDdhMmEwZS4uMmFiMjE4
ZTdhOTU0M2VmMjBhY2Q0YTNlNzZlZTVhNTcwNjM2MzUxMyAxMDA2NDQKLS0tIGEvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvZW1iZXJqcy90ZXN0cy9pbmRleC5odG1sCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvdGVz
dHMvaW5kZXguaHRtbApAQCAtOCw3ICs4LDcgQEAKICAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIg
Y29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEiPgogCiAgICAgPGJh
c2UgaHJlZj0iLyIgLz4KLTxtZXRhIG5hbWU9InRvZG9tdmMvY29uZmlnL2Vudmlyb25tZW50IiBj
b250ZW50PSIlN0IlMjJtb2R1bGVQcmVmaXglMjIlM0ElMjJ0b2RvbXZjJTIyJTJDJTIyZW52aXJv
bm1lbnQlMjIlM0ElMjJ0ZXN0JTIyJTJDJTIyYmFzZVVSTCUyMiUzQSUyMi8lMjIlMkMlMjJsb2Nh
dGlvblR5cGUlMjIlM0ElMjJub25lJTIyJTJDJTIyRW1iZXJFTlYlMjIlM0ElN0IlMjJGRUFUVVJF
UyUyMiUzQSU3QiU3RCU3RCUyQyUyMkFQUCUyMiUzQSU3QiUyMkxPR19BQ1RJVkVfR0VORVJBVElP
TiUyMiUzQWZhbHNlJTJDJTIyTE9HX1ZJRVdfTE9PS1VQUyUyMiUzQWZhbHNlJTJDJTIycm9vdEVs
ZW1lbnQlMjIlM0ElMjIlMjNlbWJlci10ZXN0aW5nJTIyJTJDJTIybmFtZSUyMiUzQSUyMnRvZG9t
dmMlMjIlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyMC4wLjArNWRiYzVmYjklMjIlN0QlMkMlMjJleHBv
cnRBcHBsaWNhdGlvbkdsb2JhbCUyMiUzQXRydWUlN0QiIC8+Cis8bWV0YSBuYW1lPSJ0b2RvbXZj
L2NvbmZpZy9lbnZpcm9ubWVudCIgY29udGVudD0iJTdCJTIybW9kdWxlUHJlZml4JTIyJTNBJTIy
dG9kb212YyUyMiUyQyUyMmVudmlyb25tZW50JTIyJTNBJTIydGVzdCUyMiUyQyUyMmJhc2VVUkwl
MjIlM0ElMjIvJTIyJTJDJTIybG9jYXRpb25UeXBlJTIyJTNBJTIybm9uZSUyMiUyQyUyMkVtYmVy
RU5WJTIyJTNBJTdCJTIyRkVBVFVSRVMlMjIlM0ElN0IlN0QlN0QlMkMlMjJBUFAlMjIlM0ElN0Il
MjJMT0dfQUNUSVZFX0dFTkVSQVRJT04lMjIlM0FmYWxzZSUyQyUyMkxPR19WSUVXX0xPT0tVUFMl
MjIlM0FmYWxzZSUyQyUyMnJvb3RFbGVtZW50JTIyJTNBJTIyJTIzZW1iZXItdGVzdGluZyUyMiUy
QyUyMm5hbWUlMjIlM0ElMjJ0b2RvbXZjJTIyJTJDJTIydmVyc2lvbiUyMiUzQSUyMjAuMC4wKyUy
MiU3RCUyQyUyMmV4cG9ydEFwcGxpY2F0aW9uR2xvYmFsJTIyJTNBdHJ1ZSU3RCIgLz4KICAgICAK
IAogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iYXNzZXRzL3ZlbmRvci5jc3MiPgpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L2luZGV4Lmh0bWwgYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9q
cXVlcnkvaW5kZXguaHRtbAppbmRleCA0MTRhYzU4ZjYxYWJjMmI3MjJkYjUzZmVlY2U3ZTAzZTUy
ZmQzMzQ0Li4xY2Y4MDNlMTQyYTEzMGU0Y2NmZjFjYWJiODEyN2M0N2M3MDZkMGVjIDEwMDY0NAot
LS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvaW5kZXguaHRtbAorKysgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVl
cnkvaW5kZXguaHRtbApAQCAtNTUsNyArNTUsNyBAQAogICAgICAgICA8IS0tIDxzY3JpcHQgc3Jj
PSJub2RlX21vZHVsZXMvdG9kb212Yy1jb21tb24vYmFzZS5qcyI+PC9zY3JpcHQ+IC0tPgogICAg
ICAgICA8c2NyaXB0IHNyYz0ibm9kZV9tb2R1bGVzL2pxdWVyeS9kaXN0L2pxdWVyeS5qcyI+PC9z
Y3JpcHQ+CiAgICAgICAgIDxzY3JpcHQgc3JjPSJub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0
L2hhbmRsZWJhcnMuanMiPjwvc2NyaXB0PgotICAgICAgICA8c2NyaXB0IHNyYz0ibm9kZV9tb2R1
bGVzL2RpcmVjdG9yL2J1aWxkL2RpcmVjdG9yLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlw
dCBzcmM9Im5vZGVfbW9kdWxlcy9kaXJlY3Rvci9kaXN0L2RpcmVjdG9yLmpzIj48L3NjcmlwdD4K
ICAgICAgICAgPHNjcmlwdCBzcmM9ImpzL2FwcC5qcyI+PC9zY3JpcHQ+CiAgICAgPC9ib2R5Pgog
PC9odG1sPgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJl
Y3Rvci9MSUNFTlNFIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9M
SUNFTlNFCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjhhNDk4MTA4NTAxOWY5MTdjMTIzNzY5YTBjMjdjZDg3MGUzNWE3
ODQKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2Rp
cmVjdG9yL0xJQ0VOU0UKQEAgLTAsMCArMSwxOSBAQAorQ29weXJpZ2h0IChjKSAyMDExIENoYXJs
aWUgUm9iYmlucywgUGFvbG8gRnJhZ29tZW5pLCAmIHRoZSBDb250cmlidXRvcnMuCisKK1Blcm1p
c3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9i
dGFpbmluZyBhIGNvcHkKK29mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRh
dGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCitpbiB0aGUgU29mdHdhcmUgd2l0
aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRz
Cit0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1Ymxp
Y2Vuc2UsIGFuZC9vciBzZWxsCitjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0
IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKK2Z1cm5pc2hlZCB0byBkbyBzbywgc3Vi
amVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisKK1RoZSBhYm92ZSBjb3B5cmlnaHQg
bm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCith
bGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKworVEhF
IFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJ
TkQsIEVYUFJFU1MgT1IKK0lNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhF
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCitBVVRI
T1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VT
IE9SIE9USEVSCitMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBU
T1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAorT1VUIE9GIE9SIElOIENPTk5FQ1RJT04g
V0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgorVEhFIFNP
RlRXQVJFLgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJl
Y3Rvci9ib3dlci5qc29uIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rv
ci9ib3dlci5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY5MzliYjQ3MGVkNjRkYjExMWFhYThjNjMzZDIzMmZh
OWViZmNmMDQKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1
bGVzL2RpcmVjdG9yL2Jvd2VyLmpzb24KQEAgLTAsMCArMSw5IEBACit7CisgICJuYW1lIjogImRp
cmVjdG9yIiwKKyAgInZlcnNpb24iOiAiMS4yLjciLAorICAiZGVwZW5kZW5jaWVzIjoge30sCisg
ICJtYWluIjogImJ1aWxkL2RpcmVjdG9yLmpzIiwKKyAgInNjcmlwdHMiOiBbCisgICAgImJ1aWxk
L2RpcmVjdG9yLmpzIgorICBdCit9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9k
ZV9tb2R1bGVzL2RpcmVjdG9yL2Rpc3QvZGlyZWN0b3IuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkv
bm9kZV9tb2R1bGVzL2RpcmVjdG9yL2Rpc3QvZGlyZWN0b3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTAzODg3
ODcyMzViNzFjMGY1Y2I5NjdlNzk1YzJjNjY5YTU2ZjM2OQotLS0gL2Rldi9udWxsCisrKyBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvZGlzdC9kaXJlY3Rvci5qcwpA
QCAtMCwwICsxLDcyNSBAQAorCisKKy8vCisvLyBHZW5lcmF0ZWQgb24gVHVlIERlYyAxNiAyMDE0
IDEyOjEzOjQ3IEdNVCswMTAwIChDRVQpIGJ5IENoYXJsaWUgUm9iYmlucywgUGFvbG8gRnJhZ29t
ZW5pICYgdGhlIENvbnRyaWJ1dG9ycyAoVXNpbmcgQ29kZXN1cmdlb24pLgorLy8gVmVyc2lvbiAx
LjIuNgorLy8KKworKGZ1bmN0aW9uIChleHBvcnRzKSB7CisKKy8qCisgKiBicm93c2VyLmpzOiBC
cm93c2VyIHNwZWNpZmljIGZ1bmN0aW9uYWxpdHkgZm9yIGRpcmVjdG9yLgorICoKKyAqIChDKSAy
MDExLCBDaGFybGllIFJvYmJpbnMsIFBhb2xvIEZyYWdvbWVuaSwgJiB0aGUgQ29udHJpYnV0b3Jz
LgorICogTUlUIExJQ0VOU0UKKyAqCisgKi8KKwordmFyIGRsb2MgPSBkb2N1bWVudC5sb2NhdGlv
bjsKKworZnVuY3Rpb24gZGxvY0hhc2hFbXB0eSgpIHsKKyAgLy8gTm9uLUlFIGJyb3dzZXJzIHJl
dHVybiAnJyB3aGVuIHRoZSBhZGRyZXNzIGJhciBzaG93cyAnIyc7IERpcmVjdG9yJ3MgbG9naWMK
KyAgLy8gYXNzdW1lcyBib3RoIG1lYW4gZW1wdHkuCisgIHJldHVybiBkbG9jLmhhc2ggPT09ICcn
IHx8IGRsb2MuaGFzaCA9PT0gJyMnOworfQorCit2YXIgbGlzdGVuZXIgPSB7CisgIG1vZGU6ICdt
b2Rlcm4nLAorICBoYXNoOiBkbG9jLmhhc2gsCisgIGhpc3Rvcnk6IGZhbHNlLAorCisgIGNoZWNr
OiBmdW5jdGlvbiAoKSB7CisgICAgdmFyIGggPSBkbG9jLmhhc2g7CisgICAgaWYgKGggIT0gdGhp
cy5oYXNoKSB7CisgICAgICB0aGlzLmhhc2ggPSBoOworICAgICAgdGhpcy5vbkhhc2hDaGFuZ2Vk
KCk7CisgICAgfQorICB9LAorCisgIGZpcmU6IGZ1bmN0aW9uICgpIHsKKyAgICBpZiAodGhpcy5t
b2RlID09PSAnbW9kZXJuJykgeworICAgICAgdGhpcy5oaXN0b3J5ID09PSB0cnVlID8gd2luZG93
Lm9ucG9wc3RhdGUoKSA6IHdpbmRvdy5vbmhhc2hjaGFuZ2UoKTsKKyAgICB9CisgICAgZWxzZSB7
CisgICAgICB0aGlzLm9uSGFzaENoYW5nZWQoKTsKKyAgICB9CisgIH0sCisKKyAgaW5pdDogZnVu
Y3Rpb24gKGZuLCBoaXN0b3J5KSB7CisgICAgdmFyIHNlbGYgPSB0aGlzOworICAgIHRoaXMuaGlz
dG9yeSA9IGhpc3Rvcnk7CisKKyAgICBpZiAoIVJvdXRlci5saXN0ZW5lcnMpIHsKKyAgICAgIFJv
dXRlci5saXN0ZW5lcnMgPSBbXTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBvbmNoYW5nZShvbkNo
YW5nZUV2ZW50KSB7CisgICAgICBmb3IgKHZhciBpID0gMCwgbCA9IFJvdXRlci5saXN0ZW5lcnMu
bGVuZ3RoOyBpIDwgbDsgaSsrKSB7CisgICAgICAgIFJvdXRlci5saXN0ZW5lcnNbaV0ob25DaGFu
Z2VFdmVudCk7CisgICAgICB9CisgICAgfQorCisgICAgLy9ub3RlIElFOCBpcyBiZWluZyBjb3Vu
dGVkIGFzICdtb2Rlcm4nIGJlY2F1c2UgaXQgaGFzIHRoZSBoYXNoY2hhbmdlIGV2ZW50CisgICAg
aWYgKCdvbmhhc2hjaGFuZ2UnIGluIHdpbmRvdyAmJiAoZG9jdW1lbnQuZG9jdW1lbnRNb2RlID09
PSB1bmRlZmluZWQKKyAgICAgIHx8IGRvY3VtZW50LmRvY3VtZW50TW9kZSA+IDcpKSB7CisgICAg
ICAvLyBBdCBsZWFzdCBmb3Igbm93IEhUTUw1IGhpc3RvcnkgaXMgYXZhaWxhYmxlIGZvciAnbW9k
ZXJuJyBicm93c2VycyBvbmx5CisgICAgICBpZiAodGhpcy5oaXN0b3J5ID09PSB0cnVlKSB7Cisg
ICAgICAgIC8vIFRoZXJlIGlzIGFuIG9sZCBidWcgaW4gQ2hyb21lIHRoYXQgY2F1c2VzIG9ucG9w
c3RhdGUgdG8gZmlyZSBldmVuCisgICAgICAgIC8vIHVwb24gaW5pdGlhbCBwYWdlIGxvYWQuIFNp
bmNlIHRoZSBoYW5kbGVyIGlzIHJ1biBtYW51YWxseSBpbiBpbml0KCksCisgICAgICAgIC8vIHRo
aXMgd291bGQgY2F1c2UgQ2hyb21lIHRvIHJ1biBpdCB0d2lzZS4gQ3VycmVudGx5IHRoZSBvbmx5
CisgICAgICAgIC8vIHdvcmthcm91bmQgc2VlbXMgdG8gYmUgdG8gc2V0IHRoZSBoYW5kbGVyIGFm
dGVyIHRoZSBpbml0aWFsIHBhZ2UgbG9hZAorICAgICAgICAvLyBodHRwOi8vY29kZS5nb29nbGUu
Y29tL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD02MzA0MAorICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeworICAgICAgICAgIHdpbmRvdy5vbnBvcHN0YXRlID0gb25jaGFuZ2U7Cisg
ICAgICAgIH0sIDUwMCk7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgd2luZG93Lm9u
aGFzaGNoYW5nZSA9IG9uY2hhbmdlOworICAgICAgfQorICAgICAgdGhpcy5tb2RlID0gJ21vZGVy
bic7CisgICAgfQorICAgIGVsc2UgeworICAgICAgLy8KKyAgICAgIC8vIElFIHN1cHBvcnQsIGJh
c2VkIG9uIGEgY29uY2VwdCBieSBFcmlrIEFydmlkc29uIC4uLgorICAgICAgLy8KKyAgICAgIHZh
ciBmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpOworICAgICAgZnJhbWUu
aWQgPSAnc3RhdGUtZnJhbWUnOworICAgICAgZnJhbWUuc3R5bGUuZGlzcGxheSA9ICdub25lJzsK
KyAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZnJhbWUpOworICAgICAgdGhpcy53cml0
ZUZyYW1lKCcnKTsKKworICAgICAgaWYgKCdvbnByb3BlcnR5Y2hhbmdlJyBpbiBkb2N1bWVudCAm
JiAnYXR0YWNoRXZlbnQnIGluIGRvY3VtZW50KSB7CisgICAgICAgIGRvY3VtZW50LmF0dGFjaEV2
ZW50KCdvbnByb3BlcnR5Y2hhbmdlJywgZnVuY3Rpb24gKCkgeworICAgICAgICAgIGlmIChldmVu
dC5wcm9wZXJ0eU5hbWUgPT09ICdsb2NhdGlvbicpIHsKKyAgICAgICAgICAgIHNlbGYuY2hlY2so
KTsKKyAgICAgICAgICB9CisgICAgICAgIH0pOworICAgICAgfQorCisgICAgICB3aW5kb3cuc2V0
SW50ZXJ2YWwoZnVuY3Rpb24gKCkgeyBzZWxmLmNoZWNrKCk7IH0sIDUwKTsKKworICAgICAgdGhp
cy5vbkhhc2hDaGFuZ2VkID0gb25jaGFuZ2U7CisgICAgICB0aGlzLm1vZGUgPSAnbGVnYWN5JzsK
KyAgICB9CisKKyAgICBSb3V0ZXIubGlzdGVuZXJzLnB1c2goZm4pOworCisgICAgcmV0dXJuIHRo
aXMubW9kZTsKKyAgfSwKKworICBkZXN0cm95OiBmdW5jdGlvbiAoZm4pIHsKKyAgICBpZiAoIVJv
dXRlciB8fCAhUm91dGVyLmxpc3RlbmVycykgeworICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IHZhciBsaXN0ZW5lcnMgPSBSb3V0ZXIubGlzdGVuZXJzOworCisgICAgZm9yICh2YXIgaSA9IGxp
c3RlbmVycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgeworICAgICAgaWYgKGxpc3RlbmVyc1tp
XSA9PT0gZm4pIHsKKyAgICAgICAgbGlzdGVuZXJzLnNwbGljZShpLCAxKTsKKyAgICAgIH0KKyAg
ICB9CisgIH0sCisKKyAgc2V0SGFzaDogZnVuY3Rpb24gKHMpIHsKKyAgICAvLyBNb3ppbGxhIGFs
d2F5cyBhZGRzIGFuIGVudHJ5IHRvIHRoZSBoaXN0b3J5CisgICAgaWYgKHRoaXMubW9kZSA9PT0g
J2xlZ2FjeScpIHsKKyAgICAgIHRoaXMud3JpdGVGcmFtZShzKTsKKyAgICB9CisKKyAgICBpZiAo
dGhpcy5oaXN0b3J5ID09PSB0cnVlKSB7CisgICAgICB3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUo
e30sIGRvY3VtZW50LnRpdGxlLCBzKTsKKyAgICAgIC8vIEZpcmUgYW4gb25wb3BzdGF0ZSBldmVu
dCBtYW51YWxseSBzaW5jZSBwdXNoaW5nIGRvZXMgbm90IG9idmlvdXNseQorICAgICAgLy8gdHJp
Z2dlciB0aGUgcG9wIGV2ZW50LgorICAgICAgdGhpcy5maXJlKCk7CisgICAgfSBlbHNlIHsKKyAg
ICAgIGRsb2MuaGFzaCA9IChzWzBdID09PSAnLycpID8gcyA6ICcvJyArIHM7CisgICAgfQorICAg
IHJldHVybiB0aGlzOworICB9LAorCisgIHdyaXRlRnJhbWU6IGZ1bmN0aW9uIChzKSB7CisgICAg
Ly8gSUUgc3VwcG9ydC4uLgorICAgIHZhciBmID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0
YXRlLWZyYW1lJyk7CisgICAgdmFyIGQgPSBmLmNvbnRlbnREb2N1bWVudCB8fCBmLmNvbnRlbnRX
aW5kb3cuZG9jdW1lbnQ7CisgICAgZC5vcGVuKCk7CisgICAgZC53cml0ZSgiPHNjcmlwdD5faGFz
aCA9ICciICsgcyArICInOyBvbmxvYWQgPSBwYXJlbnQubGlzdGVuZXIuc3luY0hhc2g7PHNjcmlw
dD4iKTsKKyAgICBkLmNsb3NlKCk7CisgIH0sCisKKyAgc3luY0hhc2g6IGZ1bmN0aW9uICgpIHsK
KyAgICAvLyBJRSBzdXBwb3J0Li4uCisgICAgdmFyIHMgPSB0aGlzLl9oYXNoOworICAgIGlmIChz
ICE9IGRsb2MuaGFzaCkgeworICAgICAgZGxvYy5oYXNoID0gczsKKyAgICB9CisgICAgcmV0dXJu
IHRoaXM7CisgIH0sCisKKyAgb25IYXNoQ2hhbmdlZDogZnVuY3Rpb24gKCkge30KK307CisKK3Zh
ciBSb3V0ZXIgPSBleHBvcnRzLlJvdXRlciA9IGZ1bmN0aW9uIChyb3V0ZXMpIHsKKyAgaWYgKCEo
dGhpcyBpbnN0YW5jZW9mIFJvdXRlcikpIHJldHVybiBuZXcgUm91dGVyKHJvdXRlcyk7CisKKyAg
dGhpcy5wYXJhbXMgICA9IHt9OworICB0aGlzLnJvdXRlcyAgID0ge307CisgIHRoaXMubWV0aG9k
cyAgPSBbJ29uJywgJ29uY2UnLCAnYWZ0ZXInLCAnYmVmb3JlJ107CisgIHRoaXMuc2NvcGUgICAg
PSBbXTsKKyAgdGhpcy5fbWV0aG9kcyA9IHt9OworCisgIHRoaXMuX2luc2VydCA9IHRoaXMuaW5z
ZXJ0OworICB0aGlzLmluc2VydCA9IHRoaXMuaW5zZXJ0RXg7CisKKyAgdGhpcy5oaXN0b3J5U3Vw
cG9ydCA9ICh3aW5kb3cuaGlzdG9yeSAhPSBudWxsID8gd2luZG93Lmhpc3RvcnkucHVzaFN0YXRl
IDogbnVsbCkgIT0gbnVsbAorCisgIHRoaXMuY29uZmlndXJlKCk7CisgIHRoaXMubW91bnQocm91
dGVzIHx8IHt9KTsKK307CisKK1JvdXRlci5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uIChyKSB7
CisgIHZhciBzZWxmID0gdGhpcworICAgICwgcm91dGVUbzsKKyAgdGhpcy5oYW5kbGVyID0gZnVu
Y3Rpb24ob25DaGFuZ2VFdmVudCkgeworICAgIHZhciBuZXdVUkwgPSBvbkNoYW5nZUV2ZW50ICYm
IG9uQ2hhbmdlRXZlbnQubmV3VVJMIHx8IHdpbmRvdy5sb2NhdGlvbi5oYXNoOworICAgIHZhciB1
cmwgPSBzZWxmLmhpc3RvcnkgPT09IHRydWUgPyBzZWxmLmdldFBhdGgoKSA6IG5ld1VSTC5yZXBs
YWNlKC8uKiMvLCAnJyk7CisgICAgc2VsZi5kaXNwYXRjaCgnb24nLCB1cmwuY2hhckF0KDApID09
PSAnLycgPyB1cmwgOiAnLycgKyB1cmwpOworICB9OworCisgIGxpc3RlbmVyLmluaXQodGhpcy5o
YW5kbGVyLCB0aGlzLmhpc3RvcnkpOworCisgIGlmICh0aGlzLmhpc3RvcnkgPT09IGZhbHNlKSB7
CisgICAgaWYgKGRsb2NIYXNoRW1wdHkoKSAmJiByKSB7CisgICAgICBkbG9jLmhhc2ggPSByOwor
ICAgIH0gZWxzZSBpZiAoIWRsb2NIYXNoRW1wdHkoKSkgeworICAgICAgc2VsZi5kaXNwYXRjaCgn
b24nLCAnLycgKyBkbG9jLmhhc2gucmVwbGFjZSgvXigjXC98I3xcLykvLCAnJykpOworICAgIH0K
KyAgfQorICBlbHNlIHsKKyAgICBpZiAodGhpcy5jb252ZXJ0X2hhc2hfaW5faW5pdCkgeworICAg
ICAgLy8gVXNlIGhhc2ggYXMgcm91dGUKKyAgICAgIHJvdXRlVG8gPSBkbG9jSGFzaEVtcHR5KCkg
JiYgciA/IHIgOiAhZGxvY0hhc2hFbXB0eSgpID8gZGxvYy5oYXNoLnJlcGxhY2UoL14jLywgJycp
IDogbnVsbDsKKyAgICAgIGlmIChyb3V0ZVRvKSB7CisgICAgICAgIHdpbmRvdy5oaXN0b3J5LnJl
cGxhY2VTdGF0ZSh7fSwgZG9jdW1lbnQudGl0bGUsIHJvdXRlVG8pOworICAgICAgfQorICAgIH0K
KyAgICBlbHNlIHsKKyAgICAgIC8vIFVzZSBjYW5vbmljYWwgdXJsCisgICAgICByb3V0ZVRvID0g
dGhpcy5nZXRQYXRoKCk7CisgICAgfQorCisgICAgLy8gUm91dGVyIGhhcyBiZWVuIGluaXRpYWxp
emVkLCBidXQgZHVlIHRvIHRoZSBjaHJvbWUgYnVnIGl0IHdpbGwgbm90CisgICAgLy8geWV0IGFj
dHVhbGx5IHJvdXRlIEhUTUw1IGhpc3Rvcnkgc3RhdGUgY2hhbmdlcy4gVGh1cywgZGVjaWRlIGlm
IHNob3VsZCByb3V0ZS4KKyAgICBpZiAocm91dGVUbyB8fCB0aGlzLnJ1bl9pbl9pbml0ID09PSB0
cnVlKSB7CisgICAgICB0aGlzLmhhbmRsZXIoKTsKKyAgICB9CisgIH0KKworICByZXR1cm4gdGhp
czsKK307CisKK1JvdXRlci5wcm90b3R5cGUuZXhwbG9kZSA9IGZ1bmN0aW9uICgpIHsKKyAgdmFy
IHYgPSB0aGlzLmhpc3RvcnkgPT09IHRydWUgPyB0aGlzLmdldFBhdGgoKSA6IGRsb2MuaGFzaDsK
KyAgaWYgKHYuY2hhckF0KDEpID09PSAnLycpIHsgdj12LnNsaWNlKDEpIH0KKyAgcmV0dXJuIHYu
c2xpY2UoMSwgdi5sZW5ndGgpLnNwbGl0KCIvIik7Cit9OworCitSb3V0ZXIucHJvdG90eXBlLnNl
dFJvdXRlID0gZnVuY3Rpb24gKGksIHYsIHZhbCkgeworICB2YXIgdXJsID0gdGhpcy5leHBsb2Rl
KCk7CisKKyAgaWYgKHR5cGVvZiBpID09PSAnbnVtYmVyJyAmJiB0eXBlb2YgdiA9PT0gJ3N0cmlu
ZycpIHsKKyAgICB1cmxbaV0gPSB2OworICB9CisgIGVsc2UgaWYgKHR5cGVvZiB2YWwgPT09ICdz
dHJpbmcnKSB7CisgICAgdXJsLnNwbGljZShpLCB2LCBzKTsKKyAgfQorICBlbHNlIHsKKyAgICB1
cmwgPSBbaV07CisgIH0KKworICBsaXN0ZW5lci5zZXRIYXNoKHVybC5qb2luKCcvJykpOworICBy
ZXR1cm4gdXJsOworfTsKKworLy8KKy8vICMjIyBmdW5jdGlvbiBpbnNlcnRFeChtZXRob2QsIHBh
dGgsIHJvdXRlLCBwYXJlbnQpCisvLyAjIyMjIEBtZXRob2Qge3N0cmluZ30gTWV0aG9kIHRvIGlu
c2VydCB0aGUgc3BlY2lmaWMgYHJvdXRlYC4KKy8vICMjIyMgQHBhdGgge0FycmF5fSBQYXJzZWQg
cGF0aCB0byBpbnNlcnQgdGhlIGByb3V0ZWAgYXQuCisvLyAjIyMjIEByb3V0ZSB7QXJyYXl8ZnVu
Y3Rpb259IFJvdXRlIGhhbmRsZXJzIHRvIGluc2VydC4KKy8vICMjIyMgQHBhcmVudCB7T2JqZWN0
fSAqKk9wdGlvbmFsKiogUGFyZW50ICJyb3V0ZXMiIHRvIGluc2VydCBpbnRvLgorLy8gaW5zZXJ0
IGEgY2FsbGJhY2sgdGhhdCB3aWxsIG9ubHkgb2NjdXIgb25jZSBwZXIgdGhlIG1hdGNoZWQgcm91
dGUuCisvLworUm91dGVyLnByb3RvdHlwZS5pbnNlcnRFeCA9IGZ1bmN0aW9uKG1ldGhvZCwgcGF0
aCwgcm91dGUsIHBhcmVudCkgeworICBpZiAobWV0aG9kID09PSAib25jZSIpIHsKKyAgICBtZXRo
b2QgPSAib24iOworICAgIHJvdXRlID0gZnVuY3Rpb24ocm91dGUpIHsKKyAgICAgIHZhciBvbmNl
ID0gZmFsc2U7CisgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICAgIGlmIChvbmNlKSBy
ZXR1cm47CisgICAgICAgIG9uY2UgPSB0cnVlOworICAgICAgICByZXR1cm4gcm91dGUuYXBwbHko
dGhpcywgYXJndW1lbnRzKTsKKyAgICAgIH07CisgICAgfShyb3V0ZSk7CisgIH0KKyAgcmV0dXJu
IHRoaXMuX2luc2VydChtZXRob2QsIHBhdGgsIHJvdXRlLCBwYXJlbnQpOworfTsKKworUm91dGVy
LnByb3RvdHlwZS5nZXRSb3V0ZSA9IGZ1bmN0aW9uICh2KSB7CisgIHZhciByZXQgPSB2OworCisg
IGlmICh0eXBlb2YgdiA9PT0gIm51bWJlciIpIHsKKyAgICByZXQgPSB0aGlzLmV4cGxvZGUoKVt2
XTsKKyAgfQorICBlbHNlIGlmICh0eXBlb2YgdiA9PT0gInN0cmluZyIpeworICAgIHZhciBoID0g
dGhpcy5leHBsb2RlKCk7CisgICAgcmV0ID0gaC5pbmRleE9mKHYpOworICB9CisgIGVsc2Ugewor
ICAgIHJldCA9IHRoaXMuZXhwbG9kZSgpOworICB9CisKKyAgcmV0dXJuIHJldDsKK307CisKK1Jv
dXRlci5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHsKKyAgbGlzdGVuZXIuZGVzdHJv
eSh0aGlzLmhhbmRsZXIpOworICByZXR1cm4gdGhpczsKK307CisKK1JvdXRlci5wcm90b3R5cGUu
Z2V0UGF0aCA9IGZ1bmN0aW9uICgpIHsKKyAgdmFyIHBhdGggPSB3aW5kb3cubG9jYXRpb24ucGF0
aG5hbWU7CisgIGlmIChwYXRoLnN1YnN0cigwLCAxKSAhPT0gJy8nKSB7CisgICAgcGF0aCA9ICcv
JyArIHBhdGg7CisgIH0KKyAgcmV0dXJuIHBhdGg7Cit9OworZnVuY3Rpb24gX2V2ZXJ5KGFyciwg
aXRlcmF0b3IpIHsKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpICs9IDEpIHsK
KyAgICBpZiAoaXRlcmF0b3IoYXJyW2ldLCBpLCBhcnIpID09PSBmYWxzZSkgeworICAgICAgcmV0
dXJuOworICAgIH0KKyAgfQorfQorCitmdW5jdGlvbiBfZmxhdHRlbihhcnIpIHsKKyAgdmFyIGZs
YXQgPSBbXTsKKyAgZm9yICh2YXIgaSA9IDAsIG4gPSBhcnIubGVuZ3RoOyBpIDwgbjsgaSsrKSB7
CisgICAgZmxhdCA9IGZsYXQuY29uY2F0KGFycltpXSk7CisgIH0KKyAgcmV0dXJuIGZsYXQ7Cit9
CisKK2Z1bmN0aW9uIF9hc3luY0V2ZXJ5U2VyaWVzKGFyciwgaXRlcmF0b3IsIGNhbGxiYWNrKSB7
CisgIGlmICghYXJyLmxlbmd0aCkgeworICAgIHJldHVybiBjYWxsYmFjaygpOworICB9CisgIHZh
ciBjb21wbGV0ZWQgPSAwOworICAoZnVuY3Rpb24gaXRlcmF0ZSgpIHsKKyAgICBpdGVyYXRvcihh
cnJbY29tcGxldGVkXSwgZnVuY3Rpb24oZXJyKSB7CisgICAgICBpZiAoZXJyIHx8IGVyciA9PT0g
ZmFsc2UpIHsKKyAgICAgICAgY2FsbGJhY2soZXJyKTsKKyAgICAgICAgY2FsbGJhY2sgPSBmdW5j
dGlvbigpIHt9OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgY29tcGxldGVkICs9IDE7CisgICAg
ICAgIGlmIChjb21wbGV0ZWQgPT09IGFyci5sZW5ndGgpIHsKKyAgICAgICAgICBjYWxsYmFjaygp
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIGl0ZXJhdGUoKTsKKyAgICAgICAgfQorICAg
ICAgfQorICAgIH0pOworICB9KSgpOworfQorCitmdW5jdGlvbiBwYXJhbWlmeVN0cmluZyhzdHIs
IHBhcmFtcywgbW9kKSB7CisgIG1vZCA9IHN0cjsKKyAgZm9yICh2YXIgcGFyYW0gaW4gcGFyYW1z
KSB7CisgICAgaWYgKHBhcmFtcy5oYXNPd25Qcm9wZXJ0eShwYXJhbSkpIHsKKyAgICAgIG1vZCA9
IHBhcmFtc1twYXJhbV0oc3RyKTsKKyAgICAgIGlmIChtb2QgIT09IHN0cikgeworICAgICAgICBi
cmVhazsKKyAgICAgIH0KKyAgICB9CisgIH0KKyAgcmV0dXJuIG1vZCA9PT0gc3RyID8gIihbLl9h
LXpBLVowLTktJSgpXSspIiA6IG1vZDsKK30KKworZnVuY3Rpb24gcmVnaWZ5U3RyaW5nKHN0ciwg
cGFyYW1zKSB7CisgIHZhciBtYXRjaGVzLCBsYXN0ID0gMCwgb3V0ID0gIiI7CisgIHdoaWxlICht
YXRjaGVzID0gc3RyLnN1YnN0cihsYXN0KS5tYXRjaCgvW15cd1xkXC0gJUAmXSpcKlteXHdcZFwt
ICVAJl0qLykpIHsKKyAgICBsYXN0ID0gbWF0Y2hlcy5pbmRleCArIG1hdGNoZXNbMF0ubGVuZ3Ro
OworICAgIG1hdGNoZXNbMF0gPSBtYXRjaGVzWzBdLnJlcGxhY2UoL15cKi8sICIoW18uKCkhXFwg
JUAmYS16QS1aMC05LV0rKSIpOworICAgIG91dCArPSBzdHIuc3Vic3RyKDAsIG1hdGNoZXMuaW5k
ZXgpICsgbWF0Y2hlc1swXTsKKyAgfQorICBzdHIgPSBvdXQgKz0gc3RyLnN1YnN0cihsYXN0KTsK
KyAgdmFyIGNhcHR1cmVzID0gc3RyLm1hdGNoKC86KFteXC9dKykvaWcpLCBjYXB0dXJlLCBsZW5n
dGg7CisgIGlmIChjYXB0dXJlcykgeworICAgIGxlbmd0aCA9IGNhcHR1cmVzLmxlbmd0aDsKKyAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICBjYXB0dXJlID0gY2Fw
dHVyZXNbaV07CisgICAgICBpZiAoY2FwdHVyZS5zbGljZSgwLCAyKSA9PT0gIjo6IikgeworICAg
ICAgICBzdHIgPSBjYXB0dXJlLnNsaWNlKDEpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgc3Ry
ID0gc3RyLnJlcGxhY2UoY2FwdHVyZSwgcGFyYW1pZnlTdHJpbmcoY2FwdHVyZSwgcGFyYW1zKSk7
CisgICAgICB9CisgICAgfQorICB9CisgIHJldHVybiBzdHI7Cit9CisKK2Z1bmN0aW9uIHRlcm1p
bmF0b3Iocm91dGVzLCBkZWxpbWl0ZXIsIHN0YXJ0LCBzdG9wKSB7CisgIHZhciBsYXN0ID0gMCwg
bGVmdCA9IDAsIHJpZ2h0ID0gMCwgc3RhcnQgPSAoc3RhcnQgfHwgIigiKS50b1N0cmluZygpLCBz
dG9wID0gKHN0b3AgfHwgIikiKS50b1N0cmluZygpLCBpOworICBmb3IgKGkgPSAwOyBpIDwgcm91
dGVzLmxlbmd0aDsgaSsrKSB7CisgICAgdmFyIGNodW5rID0gcm91dGVzW2ldOworICAgIGlmIChj
aHVuay5pbmRleE9mKHN0YXJ0LCBsYXN0KSA+IGNodW5rLmluZGV4T2Yoc3RvcCwgbGFzdCkgfHwg
fmNodW5rLmluZGV4T2Yoc3RhcnQsIGxhc3QpICYmICF+Y2h1bmsuaW5kZXhPZihzdG9wLCBsYXN0
KSB8fCAhfmNodW5rLmluZGV4T2Yoc3RhcnQsIGxhc3QpICYmIH5jaHVuay5pbmRleE9mKHN0b3As
IGxhc3QpKSB7CisgICAgICBsZWZ0ID0gY2h1bmsuaW5kZXhPZihzdGFydCwgbGFzdCk7CisgICAg
ICByaWdodCA9IGNodW5rLmluZGV4T2Yoc3RvcCwgbGFzdCk7CisgICAgICBpZiAofmxlZnQgJiYg
IX5yaWdodCB8fCAhfmxlZnQgJiYgfnJpZ2h0KSB7CisgICAgICAgIHZhciB0bXAgPSByb3V0ZXMu
c2xpY2UoMCwgKGkgfHwgMSkgKyAxKS5qb2luKGRlbGltaXRlcik7CisgICAgICAgIHJvdXRlcyA9
IFsgdG1wIF0uY29uY2F0KHJvdXRlcy5zbGljZSgoaSB8fCAxKSArIDEpKTsKKyAgICAgIH0KKyAg
ICAgIGxhc3QgPSAocmlnaHQgPiBsZWZ0ID8gcmlnaHQgOiBsZWZ0KSArIDE7CisgICAgICBpID0g
MDsKKyAgICB9IGVsc2UgeworICAgICAgbGFzdCA9IDA7CisgICAgfQorICB9CisgIHJldHVybiBy
b3V0ZXM7Cit9CisKK3ZhciBRVUVSWV9TRVBBUkFUT1IgPSAvXD8uKi87CisKK1JvdXRlci5wcm90
b3R5cGUuY29uZmlndXJlID0gZnVuY3Rpb24ob3B0aW9ucykgeworICBvcHRpb25zID0gb3B0aW9u
cyB8fCB7fTsKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLm1ldGhvZHMubGVuZ3RoOyBpKysp
IHsKKyAgICB0aGlzLl9tZXRob2RzW3RoaXMubWV0aG9kc1tpXV0gPSB0cnVlOworICB9CisgIHRo
aXMucmVjdXJzZSA9IG9wdGlvbnMucmVjdXJzZSB8fCB0aGlzLnJlY3Vyc2UgfHwgZmFsc2U7Cisg
IHRoaXMuYXN5bmMgPSBvcHRpb25zLmFzeW5jIHx8IGZhbHNlOworICB0aGlzLmRlbGltaXRlciA9
IG9wdGlvbnMuZGVsaW1pdGVyIHx8ICIvIjsKKyAgdGhpcy5zdHJpY3QgPSB0eXBlb2Ygb3B0aW9u
cy5zdHJpY3QgPT09ICJ1bmRlZmluZWQiID8gdHJ1ZSA6IG9wdGlvbnMuc3RyaWN0OworICB0aGlz
Lm5vdGZvdW5kID0gb3B0aW9ucy5ub3Rmb3VuZDsKKyAgdGhpcy5yZXNvdXJjZSA9IG9wdGlvbnMu
cmVzb3VyY2U7CisgIHRoaXMuaGlzdG9yeSA9IG9wdGlvbnMuaHRtbDVoaXN0b3J5ICYmIHRoaXMu
aGlzdG9yeVN1cHBvcnQgfHwgZmFsc2U7CisgIHRoaXMucnVuX2luX2luaXQgPSB0aGlzLmhpc3Rv
cnkgPT09IHRydWUgJiYgb3B0aW9ucy5ydW5faGFuZGxlcl9pbl9pbml0ICE9PSBmYWxzZTsKKyAg
dGhpcy5jb252ZXJ0X2hhc2hfaW5faW5pdCA9IHRoaXMuaGlzdG9yeSA9PT0gdHJ1ZSAmJiBvcHRp
b25zLmNvbnZlcnRfaGFzaF9pbl9pbml0ICE9PSBmYWxzZTsKKyAgdGhpcy5ldmVyeSA9IHsKKyAg
ICBhZnRlcjogb3B0aW9ucy5hZnRlciB8fCBudWxsLAorICAgIGJlZm9yZTogb3B0aW9ucy5iZWZv
cmUgfHwgbnVsbCwKKyAgICBvbjogb3B0aW9ucy5vbiB8fCBudWxsCisgIH07CisgIHJldHVybiB0
aGlzOworfTsKKworUm91dGVyLnByb3RvdHlwZS5wYXJhbSA9IGZ1bmN0aW9uKHRva2VuLCBtYXRj
aGVyKSB7CisgIGlmICh0b2tlblswXSAhPT0gIjoiKSB7CisgICAgdG9rZW4gPSAiOiIgKyB0b2tl
bjsKKyAgfQorICB2YXIgY29tcGlsZWQgPSBuZXcgUmVnRXhwKHRva2VuLCAiZyIpOworICB0aGlz
LnBhcmFtc1t0b2tlbl0gPSBmdW5jdGlvbihzdHIpIHsKKyAgICByZXR1cm4gc3RyLnJlcGxhY2Uo
Y29tcGlsZWQsIG1hdGNoZXIuc291cmNlIHx8IG1hdGNoZXIpOworICB9OworICByZXR1cm4gdGhp
czsKK307CisKK1JvdXRlci5wcm90b3R5cGUub24gPSBSb3V0ZXIucHJvdG90eXBlLnJvdXRlID0g
ZnVuY3Rpb24obWV0aG9kLCBwYXRoLCByb3V0ZSkgeworICB2YXIgc2VsZiA9IHRoaXM7CisgIGlm
ICghcm91dGUgJiYgdHlwZW9mIHBhdGggPT0gImZ1bmN0aW9uIikgeworICAgIHJvdXRlID0gcGF0
aDsKKyAgICBwYXRoID0gbWV0aG9kOworICAgIG1ldGhvZCA9ICJvbiI7CisgIH0KKyAgaWYgKEFy
cmF5LmlzQXJyYXkocGF0aCkpIHsKKyAgICByZXR1cm4gcGF0aC5mb3JFYWNoKGZ1bmN0aW9uKHAp
IHsKKyAgICAgIHNlbGYub24obWV0aG9kLCBwLCByb3V0ZSk7CisgICAgfSk7CisgIH0KKyAgaWYg
KHBhdGguc291cmNlKSB7CisgICAgcGF0aCA9IHBhdGguc291cmNlLnJlcGxhY2UoL1xcXC8vaWcs
ICIvIik7CisgIH0KKyAgaWYgKEFycmF5LmlzQXJyYXkobWV0aG9kKSkgeworICAgIHJldHVybiBt
ZXRob2QuZm9yRWFjaChmdW5jdGlvbihtKSB7CisgICAgICBzZWxmLm9uKG0udG9Mb3dlckNhc2Uo
KSwgcGF0aCwgcm91dGUpOworICAgIH0pOworICB9CisgIHBhdGggPSBwYXRoLnNwbGl0KG5ldyBS
ZWdFeHAodGhpcy5kZWxpbWl0ZXIpKTsKKyAgcGF0aCA9IHRlcm1pbmF0b3IocGF0aCwgdGhpcy5k
ZWxpbWl0ZXIpOworICB0aGlzLmluc2VydChtZXRob2QsIHRoaXMuc2NvcGUuY29uY2F0KHBhdGgp
LCByb3V0ZSk7Cit9OworCitSb3V0ZXIucHJvdG90eXBlLnBhdGggPSBmdW5jdGlvbihwYXRoLCBy
b3V0ZXNGbikgeworICB2YXIgc2VsZiA9IHRoaXMsIGxlbmd0aCA9IHRoaXMuc2NvcGUubGVuZ3Ro
OworICBpZiAocGF0aC5zb3VyY2UpIHsKKyAgICBwYXRoID0gcGF0aC5zb3VyY2UucmVwbGFjZSgv
XFxcLy9pZywgIi8iKTsKKyAgfQorICBwYXRoID0gcGF0aC5zcGxpdChuZXcgUmVnRXhwKHRoaXMu
ZGVsaW1pdGVyKSk7CisgIHBhdGggPSB0ZXJtaW5hdG9yKHBhdGgsIHRoaXMuZGVsaW1pdGVyKTsK
KyAgdGhpcy5zY29wZSA9IHRoaXMuc2NvcGUuY29uY2F0KHBhdGgpOworICByb3V0ZXNGbi5jYWxs
KHRoaXMsIHRoaXMpOworICB0aGlzLnNjb3BlLnNwbGljZShsZW5ndGgsIHBhdGgubGVuZ3RoKTsK
K307CisKK1JvdXRlci5wcm90b3R5cGUuZGlzcGF0Y2ggPSBmdW5jdGlvbihtZXRob2QsIHBhdGgs
IGNhbGxiYWNrKSB7CisgIHZhciBzZWxmID0gdGhpcywgZm5zID0gdGhpcy50cmF2ZXJzZShtZXRo
b2QsIHBhdGgucmVwbGFjZShRVUVSWV9TRVBBUkFUT1IsICIiKSwgdGhpcy5yb3V0ZXMsICIiKSwg
aW52b2tlZCA9IHRoaXMuX2ludm9rZWQsIGFmdGVyOworICB0aGlzLl9pbnZva2VkID0gdHJ1ZTsK
KyAgaWYgKCFmbnMgfHwgZm5zLmxlbmd0aCA9PT0gMCkgeworICAgIHRoaXMubGFzdCA9IFtdOwor
ICAgIGlmICh0eXBlb2YgdGhpcy5ub3Rmb3VuZCA9PT0gImZ1bmN0aW9uIikgeworICAgICAgdGhp
cy5pbnZva2UoWyB0aGlzLm5vdGZvdW5kIF0sIHsKKyAgICAgICAgbWV0aG9kOiBtZXRob2QsCisg
ICAgICAgIHBhdGg6IHBhdGgKKyAgICAgIH0sIGNhbGxiYWNrKTsKKyAgICB9CisgICAgcmV0dXJu
IGZhbHNlOworICB9CisgIGlmICh0aGlzLnJlY3Vyc2UgPT09ICJmb3J3YXJkIikgeworICAgIGZu
cyA9IGZucy5yZXZlcnNlKCk7CisgIH0KKyAgZnVuY3Rpb24gdXBkYXRlQW5kSW52b2tlKCkgewor
ICAgIHNlbGYubGFzdCA9IGZucy5hZnRlcjsKKyAgICBzZWxmLmludm9rZShzZWxmLnJ1bmxpc3Qo
Zm5zKSwgc2VsZiwgY2FsbGJhY2spOworICB9CisgIGFmdGVyID0gdGhpcy5ldmVyeSAmJiB0aGlz
LmV2ZXJ5LmFmdGVyID8gWyB0aGlzLmV2ZXJ5LmFmdGVyIF0uY29uY2F0KHRoaXMubGFzdCkgOiBb
IHRoaXMubGFzdCBdOworICBpZiAoYWZ0ZXIgJiYgYWZ0ZXIubGVuZ3RoID4gMCAmJiBpbnZva2Vk
KSB7CisgICAgaWYgKHRoaXMuYXN5bmMpIHsKKyAgICAgIHRoaXMuaW52b2tlKGFmdGVyLCB0aGlz
LCB1cGRhdGVBbmRJbnZva2UpOworICAgIH0gZWxzZSB7CisgICAgICB0aGlzLmludm9rZShhZnRl
ciwgdGhpcyk7CisgICAgICB1cGRhdGVBbmRJbnZva2UoKTsKKyAgICB9CisgICAgcmV0dXJuIHRy
dWU7CisgIH0KKyAgdXBkYXRlQW5kSW52b2tlKCk7CisgIHJldHVybiB0cnVlOworfTsKKworUm91
dGVyLnByb3RvdHlwZS5pbnZva2UgPSBmdW5jdGlvbihmbnMsIHRoaXNBcmcsIGNhbGxiYWNrKSB7
CisgIHZhciBzZWxmID0gdGhpczsKKyAgdmFyIGFwcGx5OworICBpZiAodGhpcy5hc3luYykgewor
ICAgIGFwcGx5ID0gZnVuY3Rpb24oZm4sIG5leHQpIHsKKyAgICAgIGlmIChBcnJheS5pc0FycmF5
KGZuKSkgeworICAgICAgICByZXR1cm4gX2FzeW5jRXZlcnlTZXJpZXMoZm4sIGFwcGx5LCBuZXh0
KTsKKyAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGZuID09ICJmdW5jdGlvbiIpIHsKKyAgICAgICAg
Zm4uYXBwbHkodGhpc0FyZywgKGZucy5jYXB0dXJlcyB8fCBbXSkuY29uY2F0KG5leHQpKTsKKyAg
ICAgIH0KKyAgICB9OworICAgIF9hc3luY0V2ZXJ5U2VyaWVzKGZucywgYXBwbHksIGZ1bmN0aW9u
KCkgeworICAgICAgaWYgKGNhbGxiYWNrKSB7CisgICAgICAgIGNhbGxiYWNrLmFwcGx5KHRoaXNB
cmcsIGFyZ3VtZW50cyk7CisgICAgICB9CisgICAgfSk7CisgIH0gZWxzZSB7CisgICAgYXBwbHkg
PSBmdW5jdGlvbihmbikgeworICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZm4pKSB7CisgICAgICAg
IHJldHVybiBfZXZlcnkoZm4sIGFwcGx5KTsKKyAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGZuID09
PSAiZnVuY3Rpb24iKSB7CisgICAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzQXJnLCBmbnMuY2Fw
dHVyZXMgfHwgW10pOworICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZm4gPT09ICJzdHJpbmciICYm
IHNlbGYucmVzb3VyY2UpIHsKKyAgICAgICAgc2VsZi5yZXNvdXJjZVtmbl0uYXBwbHkodGhpc0Fy
ZywgZm5zLmNhcHR1cmVzIHx8IFtdKTsKKyAgICAgIH0KKyAgICB9OworICAgIF9ldmVyeShmbnMs
IGFwcGx5KTsKKyAgfQorfTsKKworUm91dGVyLnByb3RvdHlwZS50cmF2ZXJzZSA9IGZ1bmN0aW9u
KG1ldGhvZCwgcGF0aCwgcm91dGVzLCByZWdleHAsIGZpbHRlcikgeworICB2YXIgZm5zID0gW10s
IGN1cnJlbnQsIGV4YWN0LCBtYXRjaCwgbmV4dCwgdGhhdDsKKyAgZnVuY3Rpb24gZmlsdGVyUm91
dGVzKHJvdXRlcykgeworICAgIGlmICghZmlsdGVyKSB7CisgICAgICByZXR1cm4gcm91dGVzOwor
ICAgIH0KKyAgICBmdW5jdGlvbiBkZWVwQ29weShzb3VyY2UpIHsKKyAgICAgIHZhciByZXN1bHQg
PSBbXTsKKyAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc291cmNlLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICAgIHJlc3VsdFtpXSA9IEFycmF5LmlzQXJyYXkoc291cmNlW2ldKSA/IGRlZXBDb3B5KHNv
dXJjZVtpXSkgOiBzb3VyY2VbaV07CisgICAgICB9CisgICAgICByZXR1cm4gcmVzdWx0OworICAg
IH0KKyAgICBmdW5jdGlvbiBhcHBseUZpbHRlcihmbnMpIHsKKyAgICAgIGZvciAodmFyIGkgPSBm
bnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHsKKyAgICAgICAgaWYgKEFycmF5LmlzQXJyYXko
Zm5zW2ldKSkgeworICAgICAgICAgIGFwcGx5RmlsdGVyKGZuc1tpXSk7CisgICAgICAgICAgaWYg
KGZuc1tpXS5sZW5ndGggPT09IDApIHsKKyAgICAgICAgICAgIGZucy5zcGxpY2UoaSwgMSk7Cisg
ICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgIGlmICghZmlsdGVyKGZuc1tp
XSkpIHsKKyAgICAgICAgICAgIGZucy5zcGxpY2UoaSwgMSk7CisgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICB9CisgICAgfQorICAgIHZhciBuZXdSb3V0ZXMgPSBkZWVwQ29weShyb3V0ZXMp
OworICAgIG5ld1JvdXRlcy5tYXRjaGVkID0gcm91dGVzLm1hdGNoZWQ7CisgICAgbmV3Um91dGVz
LmNhcHR1cmVzID0gcm91dGVzLmNhcHR1cmVzOworICAgIG5ld1JvdXRlcy5hZnRlciA9IHJvdXRl
cy5hZnRlci5maWx0ZXIoZmlsdGVyKTsKKyAgICBhcHBseUZpbHRlcihuZXdSb3V0ZXMpOworICAg
IHJldHVybiBuZXdSb3V0ZXM7CisgIH0KKyAgaWYgKHBhdGggPT09IHRoaXMuZGVsaW1pdGVyICYm
IHJvdXRlc1ttZXRob2RdKSB7CisgICAgbmV4dCA9IFsgWyByb3V0ZXMuYmVmb3JlLCByb3V0ZXNb
bWV0aG9kXSBdLmZpbHRlcihCb29sZWFuKSBdOworICAgIG5leHQuYWZ0ZXIgPSBbIHJvdXRlcy5h
ZnRlciBdLmZpbHRlcihCb29sZWFuKTsKKyAgICBuZXh0Lm1hdGNoZWQgPSB0cnVlOworICAgIG5l
eHQuY2FwdHVyZXMgPSBbXTsKKyAgICByZXR1cm4gZmlsdGVyUm91dGVzKG5leHQpOworICB9Cisg
IGZvciAodmFyIHIgaW4gcm91dGVzKSB7CisgICAgaWYgKHJvdXRlcy5oYXNPd25Qcm9wZXJ0eShy
KSAmJiAoIXRoaXMuX21ldGhvZHNbcl0gfHwgdGhpcy5fbWV0aG9kc1tyXSAmJiB0eXBlb2Ygcm91
dGVzW3JdID09PSAib2JqZWN0IiAmJiAhQXJyYXkuaXNBcnJheShyb3V0ZXNbcl0pKSkgeworICAg
ICAgY3VycmVudCA9IGV4YWN0ID0gcmVnZXhwICsgdGhpcy5kZWxpbWl0ZXIgKyByOworICAgICAg
aWYgKCF0aGlzLnN0cmljdCkgeworICAgICAgICBleGFjdCArPSAiWyIgKyB0aGlzLmRlbGltaXRl
ciArICJdPyI7CisgICAgICB9CisgICAgICBtYXRjaCA9IHBhdGgubWF0Y2gobmV3IFJlZ0V4cCgi
XiIgKyBleGFjdCkpOworICAgICAgaWYgKCFtYXRjaCkgeworICAgICAgICBjb250aW51ZTsKKyAg
ICAgIH0KKyAgICAgIGlmIChtYXRjaFswXSAmJiBtYXRjaFswXSA9PSBwYXRoICYmIHJvdXRlc1ty
XVttZXRob2RdKSB7CisgICAgICAgIG5leHQgPSBbIFsgcm91dGVzW3JdLmJlZm9yZSwgcm91dGVz
W3JdW21ldGhvZF0gXS5maWx0ZXIoQm9vbGVhbikgXTsKKyAgICAgICAgbmV4dC5hZnRlciA9IFsg
cm91dGVzW3JdLmFmdGVyIF0uZmlsdGVyKEJvb2xlYW4pOworICAgICAgICBuZXh0Lm1hdGNoZWQg
PSB0cnVlOworICAgICAgICBuZXh0LmNhcHR1cmVzID0gbWF0Y2guc2xpY2UoMSk7CisgICAgICAg
IGlmICh0aGlzLnJlY3Vyc2UgJiYgcm91dGVzID09PSB0aGlzLnJvdXRlcykgeworICAgICAgICAg
IG5leHQucHVzaChbIHJvdXRlcy5iZWZvcmUsIHJvdXRlcy5vbiBdLmZpbHRlcihCb29sZWFuKSk7
CisgICAgICAgICAgbmV4dC5hZnRlciA9IG5leHQuYWZ0ZXIuY29uY2F0KFsgcm91dGVzLmFmdGVy
IF0uZmlsdGVyKEJvb2xlYW4pKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmlsdGVyUm91
dGVzKG5leHQpOworICAgICAgfQorICAgICAgbmV4dCA9IHRoaXMudHJhdmVyc2UobWV0aG9kLCBw
YXRoLCByb3V0ZXNbcl0sIGN1cnJlbnQpOworICAgICAgaWYgKG5leHQubWF0Y2hlZCkgeworICAg
ICAgICBpZiAobmV4dC5sZW5ndGggPiAwKSB7CisgICAgICAgICAgZm5zID0gZm5zLmNvbmNhdChu
ZXh0KTsKKyAgICAgICAgfQorICAgICAgICBpZiAodGhpcy5yZWN1cnNlKSB7CisgICAgICAgICAg
Zm5zLnB1c2goWyByb3V0ZXNbcl0uYmVmb3JlLCByb3V0ZXNbcl0ub24gXS5maWx0ZXIoQm9vbGVh
bikpOworICAgICAgICAgIG5leHQuYWZ0ZXIgPSBuZXh0LmFmdGVyLmNvbmNhdChbIHJvdXRlc1ty
XS5hZnRlciBdLmZpbHRlcihCb29sZWFuKSk7CisgICAgICAgICAgaWYgKHJvdXRlcyA9PT0gdGhp
cy5yb3V0ZXMpIHsKKyAgICAgICAgICAgIGZucy5wdXNoKFsgcm91dGVzWyJiZWZvcmUiXSwgcm91
dGVzWyJvbiJdIF0uZmlsdGVyKEJvb2xlYW4pKTsKKyAgICAgICAgICAgIG5leHQuYWZ0ZXIgPSBu
ZXh0LmFmdGVyLmNvbmNhdChbIHJvdXRlc1siYWZ0ZXIiXSBdLmZpbHRlcihCb29sZWFuKSk7Cisg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGZucy5tYXRjaGVkID0gdHJ1ZTsKKyAgICAg
ICAgZm5zLmNhcHR1cmVzID0gbmV4dC5jYXB0dXJlczsKKyAgICAgICAgZm5zLmFmdGVyID0gbmV4
dC5hZnRlcjsKKyAgICAgICAgcmV0dXJuIGZpbHRlclJvdXRlcyhmbnMpOworICAgICAgfQorICAg
IH0KKyAgfQorICByZXR1cm4gZmFsc2U7Cit9OworCitSb3V0ZXIucHJvdG90eXBlLmluc2VydCA9
IGZ1bmN0aW9uKG1ldGhvZCwgcGF0aCwgcm91dGUsIHBhcmVudCkgeworICB2YXIgbWV0aG9kVHlw
ZSwgcGFyZW50VHlwZSwgaXNBcnJheSwgbmVzdGVkLCBwYXJ0OworICBwYXRoID0gcGF0aC5maWx0
ZXIoZnVuY3Rpb24ocCkgeworICAgIHJldHVybiBwICYmIHAubGVuZ3RoID4gMDsKKyAgfSk7Cisg
IHBhcmVudCA9IHBhcmVudCB8fCB0aGlzLnJvdXRlczsKKyAgcGFydCA9IHBhdGguc2hpZnQoKTsK
KyAgaWYgKC9cOnxcKi8udGVzdChwYXJ0KSAmJiAhL1xcZHxcXHcvLnRlc3QocGFydCkpIHsKKyAg
ICBwYXJ0ID0gcmVnaWZ5U3RyaW5nKHBhcnQsIHRoaXMucGFyYW1zKTsKKyAgfQorICBpZiAocGF0
aC5sZW5ndGggPiAwKSB7CisgICAgcGFyZW50W3BhcnRdID0gcGFyZW50W3BhcnRdIHx8IHt9Owor
ICAgIHJldHVybiB0aGlzLmluc2VydChtZXRob2QsIHBhdGgsIHJvdXRlLCBwYXJlbnRbcGFydF0p
OworICB9CisgIGlmICghcGFydCAmJiAhcGF0aC5sZW5ndGggJiYgcGFyZW50ID09PSB0aGlzLnJv
dXRlcykgeworICAgIG1ldGhvZFR5cGUgPSB0eXBlb2YgcGFyZW50W21ldGhvZF07CisgICAgc3dp
dGNoIChtZXRob2RUeXBlKSB7CisgICAgIGNhc2UgImZ1bmN0aW9uIjoKKyAgICAgIHBhcmVudFtt
ZXRob2RdID0gWyBwYXJlbnRbbWV0aG9kXSwgcm91dGUgXTsKKyAgICAgIHJldHVybjsKKyAgICAg
Y2FzZSAib2JqZWN0IjoKKyAgICAgIHBhcmVudFttZXRob2RdLnB1c2gocm91dGUpOworICAgICAg
cmV0dXJuOworICAgICBjYXNlICJ1bmRlZmluZWQiOgorICAgICAgcGFyZW50W21ldGhvZF0gPSBy
b3V0ZTsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgcmV0dXJuOworICB9CisgIHBhcmVudFR5
cGUgPSB0eXBlb2YgcGFyZW50W3BhcnRdOworICBpc0FycmF5ID0gQXJyYXkuaXNBcnJheShwYXJl
bnRbcGFydF0pOworICBpZiAocGFyZW50W3BhcnRdICYmICFpc0FycmF5ICYmIHBhcmVudFR5cGUg
PT0gIm9iamVjdCIpIHsKKyAgICBtZXRob2RUeXBlID0gdHlwZW9mIHBhcmVudFtwYXJ0XVttZXRo
b2RdOworICAgIHN3aXRjaCAobWV0aG9kVHlwZSkgeworICAgICBjYXNlICJmdW5jdGlvbiI6Cisg
ICAgICBwYXJlbnRbcGFydF1bbWV0aG9kXSA9IFsgcGFyZW50W3BhcnRdW21ldGhvZF0sIHJvdXRl
IF07CisgICAgICByZXR1cm47CisgICAgIGNhc2UgIm9iamVjdCI6CisgICAgICBwYXJlbnRbcGFy
dF1bbWV0aG9kXS5wdXNoKHJvdXRlKTsKKyAgICAgIHJldHVybjsKKyAgICAgY2FzZSAidW5kZWZp
bmVkIjoKKyAgICAgIHBhcmVudFtwYXJ0XVttZXRob2RdID0gcm91dGU7CisgICAgICByZXR1cm47
CisgICAgfQorICB9IGVsc2UgaWYgKHBhcmVudFR5cGUgPT0gInVuZGVmaW5lZCIpIHsKKyAgICBu
ZXN0ZWQgPSB7fTsKKyAgICBuZXN0ZWRbbWV0aG9kXSA9IHJvdXRlOworICAgIHBhcmVudFtwYXJ0
XSA9IG5lc3RlZDsKKyAgICByZXR1cm47CisgIH0KKyAgdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlk
IHJvdXRlIGNvbnRleHQ6ICIgKyBwYXJlbnRUeXBlKTsKK307CisKKworCitSb3V0ZXIucHJvdG90
eXBlLmV4dGVuZCA9IGZ1bmN0aW9uKG1ldGhvZHMpIHsKKyAgdmFyIHNlbGYgPSB0aGlzLCBsZW4g
PSBtZXRob2RzLmxlbmd0aCwgaTsKKyAgZnVuY3Rpb24gZXh0ZW5kKG1ldGhvZCkgeworICAgIHNl
bGYuX21ldGhvZHNbbWV0aG9kXSA9IHRydWU7CisgICAgc2VsZlttZXRob2RdID0gZnVuY3Rpb24o
KSB7CisgICAgICB2YXIgZXh0cmEgPSBhcmd1bWVudHMubGVuZ3RoID09PSAxID8gWyBtZXRob2Qs
ICIiIF0gOiBbIG1ldGhvZCBdOworICAgICAgc2VsZi5vbi5hcHBseShzZWxmLCBleHRyYS5jb25j
YXQoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSkpOworICAgIH07CisgIH0K
KyAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgZXh0ZW5kKG1ldGhvZHNbaV0pOwor
ICB9Cit9OworCitSb3V0ZXIucHJvdG90eXBlLnJ1bmxpc3QgPSBmdW5jdGlvbihmbnMpIHsKKyAg
dmFyIHJ1bmxpc3QgPSB0aGlzLmV2ZXJ5ICYmIHRoaXMuZXZlcnkuYmVmb3JlID8gWyB0aGlzLmV2
ZXJ5LmJlZm9yZSBdLmNvbmNhdChfZmxhdHRlbihmbnMpKSA6IF9mbGF0dGVuKGZucyk7CisgIGlm
ICh0aGlzLmV2ZXJ5ICYmIHRoaXMuZXZlcnkub24pIHsKKyAgICBydW5saXN0LnB1c2godGhpcy5l
dmVyeS5vbik7CisgIH0KKyAgcnVubGlzdC5jYXB0dXJlcyA9IGZucy5jYXB0dXJlczsKKyAgcnVu
bGlzdC5zb3VyY2UgPSBmbnMuc291cmNlOworICByZXR1cm4gcnVubGlzdDsKK307CisKK1JvdXRl
ci5wcm90b3R5cGUubW91bnQgPSBmdW5jdGlvbihyb3V0ZXMsIHBhdGgpIHsKKyAgaWYgKCFyb3V0
ZXMgfHwgdHlwZW9mIHJvdXRlcyAhPT0gIm9iamVjdCIgfHwgQXJyYXkuaXNBcnJheShyb3V0ZXMp
KSB7CisgICAgcmV0dXJuOworICB9CisgIHZhciBzZWxmID0gdGhpczsKKyAgcGF0aCA9IHBhdGgg
fHwgW107CisgIGlmICghQXJyYXkuaXNBcnJheShwYXRoKSkgeworICAgIHBhdGggPSBwYXRoLnNw
bGl0KHNlbGYuZGVsaW1pdGVyKTsKKyAgfQorICBmdW5jdGlvbiBpbnNlcnRPck1vdW50KHJvdXRl
LCBsb2NhbCkgeworICAgIHZhciByZW5hbWUgPSByb3V0ZSwgcGFydHMgPSByb3V0ZS5zcGxpdChz
ZWxmLmRlbGltaXRlciksIHJvdXRlVHlwZSA9IHR5cGVvZiByb3V0ZXNbcm91dGVdLCBpc1JvdXRl
ID0gcGFydHNbMF0gPT09ICIiIHx8ICFzZWxmLl9tZXRob2RzW3BhcnRzWzBdXSwgZXZlbnQgPSBp
c1JvdXRlID8gIm9uIiA6IHJlbmFtZTsKKyAgICBpZiAoaXNSb3V0ZSkgeworICAgICAgcmVuYW1l
ID0gcmVuYW1lLnNsaWNlKChyZW5hbWUubWF0Y2gobmV3IFJlZ0V4cCgiXiIgKyBzZWxmLmRlbGlt
aXRlcikpIHx8IFsgIiIgXSlbMF0ubGVuZ3RoKTsKKyAgICAgIHBhcnRzLnNoaWZ0KCk7CisgICAg
fQorICAgIGlmIChpc1JvdXRlICYmIHJvdXRlVHlwZSA9PT0gIm9iamVjdCIgJiYgIUFycmF5Lmlz
QXJyYXkocm91dGVzW3JvdXRlXSkpIHsKKyAgICAgIGxvY2FsID0gbG9jYWwuY29uY2F0KHBhcnRz
KTsKKyAgICAgIHNlbGYubW91bnQocm91dGVzW3JvdXRlXSwgbG9jYWwpOworICAgICAgcmV0dXJu
OworICAgIH0KKyAgICBpZiAoaXNSb3V0ZSkgeworICAgICAgbG9jYWwgPSBsb2NhbC5jb25jYXQo
cmVuYW1lLnNwbGl0KHNlbGYuZGVsaW1pdGVyKSk7CisgICAgICBsb2NhbCA9IHRlcm1pbmF0b3Io
bG9jYWwsIHNlbGYuZGVsaW1pdGVyKTsKKyAgICB9CisgICAgc2VsZi5pbnNlcnQoZXZlbnQsIGxv
Y2FsLCByb3V0ZXNbcm91dGVdKTsKKyAgfQorICBmb3IgKHZhciByb3V0ZSBpbiByb3V0ZXMpIHsK
KyAgICBpZiAocm91dGVzLmhhc093blByb3BlcnR5KHJvdXRlKSkgeworICAgICAgaW5zZXJ0T3JN
b3VudChyb3V0ZSwgcGF0aC5zbGljZSgwKSk7CisgICAgfQorICB9Cit9OworCisKKworfSh0eXBl
b2YgZXhwb3J0cyA9PT0gIm9iamVjdCIgPyBleHBvcnRzIDogd2luZG93KSk7ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9k
dWxlcy9kaXJlY3Rvci9kaXN0L2RpcmVjdG9yLm1pbi5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9u
b2RlX21vZHVsZXMvZGlyZWN0b3IvZGlzdC9kaXJlY3Rvci5taW4uanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzk1
NmFmNDAwOTViYzIyYzY4ODVmMjc3ZWQ5ZWY1Zjc0MTZiYWU0ZgotLS0gL2Rldi9udWxsCisrKyBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvZGlzdC9kaXJlY3Rvci5t
aW4uanMKQEAgLTAsMCArMSw3IEBACisKKworLy8KKy8vIEdlbmVyYXRlZCBvbiBUdWUgRGVjIDE2
IDIwMTQgMTI6MTM6NDcgR01UKzAxMDAgKENFVCkgYnkgQ2hhcmxpZSBSb2JiaW5zLCBQYW9sbyBG
cmFnb21lbmkgJiB0aGUgQ29udHJpYnV0b3JzIChVc2luZyBDb2Rlc3VyZ2VvbikuCisvLyBWZXJz
aW9uIDEuMi42CisvLworKGZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGsoYSxiLGMsZCl7dmFyIGU9MCxm
PTAsZz0wLGM9KGN8fCIoIikudG9TdHJpbmcoKSxkPShkfHwiKSIpLnRvU3RyaW5nKCksaDtmb3Io
aD0wO2g8YS5sZW5ndGg7aCsrKXt2YXIgaT1hW2hdO2lmKGkuaW5kZXhPZihjLGUpPmkuaW5kZXhP
ZihkLGUpfHx+aS5pbmRleE9mKGMsZSkmJiF+aS5pbmRleE9mKGQsZSl8fCF+aS5pbmRleE9mKGMs
ZSkmJn5pLmluZGV4T2YoZCxlKSl7Zj1pLmluZGV4T2YoYyxlKSxnPWkuaW5kZXhPZihkLGUpO2lm
KH5mJiYhfmd8fCF+ZiYmfmcpe3ZhciBqPWEuc2xpY2UoMCwoaHx8MSkrMSkuam9pbihiKTthPVtq
XS5jb25jYXQoYS5zbGljZSgoaHx8MSkrMSkpfWU9KGc+Zj9nOmYpKzEsaD0wfWVsc2UgZT0wfXJl
dHVybiBhfWZ1bmN0aW9uIGooYSxiKXt2YXIgYyxkPTAsZT0iIjt3aGlsZShjPWEuc3Vic3RyKGQp
Lm1hdGNoKC9bXlx3XGRcLSAlQCZdKlwqW15cd1xkXC0gJUAmXSovKSlkPWMuaW5kZXgrY1swXS5s
ZW5ndGgsY1swXT1jWzBdLnJlcGxhY2UoL15cKi8sIihbXy4oKSFcXCAlQCZhLXpBLVowLTktXSsp
IiksZSs9YS5zdWJzdHIoMCxjLmluZGV4KStjWzBdO2E9ZSs9YS5zdWJzdHIoZCk7dmFyIGY9YS5t
YXRjaCgvOihbXlwvXSspL2lnKSxnLGg7aWYoZil7aD1mLmxlbmd0aDtmb3IodmFyIGo9MDtqPGg7
aisrKWc9ZltqXSxnLnNsaWNlKDAsMik9PT0iOjoiP2E9Zy5zbGljZSgxKTphPWEucmVwbGFjZShn
LGkoZyxiKSl9cmV0dXJuIGF9ZnVuY3Rpb24gaShhLGIsYyl7Yz1hO2Zvcih2YXIgZCBpbiBiKWlm
KGIuaGFzT3duUHJvcGVydHkoZCkpe2M9YltkXShhKTtpZihjIT09YSlicmVha31yZXR1cm4gYz09
PWE/IihbLl9hLXpBLVowLTktJSgpXSspIjpjfWZ1bmN0aW9uIGgoYSxiLGMpe2lmKCFhLmxlbmd0
aClyZXR1cm4gYygpO3ZhciBkPTA7KGZ1bmN0aW9uIGUoKXtiKGFbZF0sZnVuY3Rpb24oYil7Ynx8
Yj09PSExPyhjKGIpLGM9ZnVuY3Rpb24oKXt9KTooZCs9MSxkPT09YS5sZW5ndGg/YygpOmUoKSl9
KX0pKCl9ZnVuY3Rpb24gZyhhKXt2YXIgYj1bXTtmb3IodmFyIGM9MCxkPWEubGVuZ3RoO2M8ZDtj
KyspYj1iLmNvbmNhdChhW2NdKTtyZXR1cm4gYn1mdW5jdGlvbiBmKGEsYil7Zm9yKHZhciBjPTA7
YzxhLmxlbmd0aDtjKz0xKWlmKGIoYVtjXSxjLGEpPT09ITEpcmV0dXJufWZ1bmN0aW9uIGMoKXty
ZXR1cm4gYi5oYXNoPT09IiJ8fGIuaGFzaD09PSIjIn12YXIgYj1kb2N1bWVudC5sb2NhdGlvbixk
PXttb2RlOiJtb2Rlcm4iLGhhc2g6Yi5oYXNoLGhpc3Rvcnk6ITEsY2hlY2s6ZnVuY3Rpb24oKXt2
YXIgYT1iLmhhc2g7YSE9dGhpcy5oYXNoJiYodGhpcy5oYXNoPWEsdGhpcy5vbkhhc2hDaGFuZ2Vk
KCkpfSxmaXJlOmZ1bmN0aW9uKCl7dGhpcy5tb2RlPT09Im1vZGVybiI/dGhpcy5oaXN0b3J5PT09
ITA/d2luZG93Lm9ucG9wc3RhdGUoKTp3aW5kb3cub25oYXNoY2hhbmdlKCk6dGhpcy5vbkhhc2hD
aGFuZ2VkKCl9LGluaXQ6ZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBkKGEpe2Zvcih2YXIgYj0wLGM9
ZS5saXN0ZW5lcnMubGVuZ3RoO2I8YztiKyspZS5saXN0ZW5lcnNbYl0oYSl9dmFyIGM9dGhpczt0
aGlzLmhpc3Rvcnk9YixlLmxpc3RlbmVyc3x8KGUubGlzdGVuZXJzPVtdKTtpZigib25oYXNoY2hh
bmdlImluIHdpbmRvdyYmKGRvY3VtZW50LmRvY3VtZW50TW9kZT09PXVuZGVmaW5lZHx8ZG9jdW1l
bnQuZG9jdW1lbnRNb2RlPjcpKXRoaXMuaGlzdG9yeT09PSEwP3NldFRpbWVvdXQoZnVuY3Rpb24o
KXt3aW5kb3cub25wb3BzdGF0ZT1kfSw1MDApOndpbmRvdy5vbmhhc2hjaGFuZ2U9ZCx0aGlzLm1v
ZGU9Im1vZGVybiI7ZWxzZXt2YXIgZj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTtm
LmlkPSJzdGF0ZS1mcmFtZSIsZi5zdHlsZS5kaXNwbGF5PSJub25lIixkb2N1bWVudC5ib2R5LmFw
cGVuZENoaWxkKGYpLHRoaXMud3JpdGVGcmFtZSgiIiksIm9ucHJvcGVydHljaGFuZ2UiaW4gZG9j
dW1lbnQmJiJhdHRhY2hFdmVudCJpbiBkb2N1bWVudCYmZG9jdW1lbnQuYXR0YWNoRXZlbnQoIm9u
cHJvcGVydHljaGFuZ2UiLGZ1bmN0aW9uKCl7ZXZlbnQucHJvcGVydHlOYW1lPT09ImxvY2F0aW9u
IiYmYy5jaGVjaygpfSksd2luZG93LnNldEludGVydmFsKGZ1bmN0aW9uKCl7Yy5jaGVjaygpfSw1
MCksdGhpcy5vbkhhc2hDaGFuZ2VkPWQsdGhpcy5tb2RlPSJsZWdhY3kifWUubGlzdGVuZXJzLnB1
c2goYSk7cmV0dXJuIHRoaXMubW9kZX0sZGVzdHJveTpmdW5jdGlvbihhKXtpZighIWUmJiEhZS5s
aXN0ZW5lcnMpe3ZhciBiPWUubGlzdGVuZXJzO2Zvcih2YXIgYz1iLmxlbmd0aC0xO2M+PTA7Yy0t
KWJbY109PT1hJiZiLnNwbGljZShjLDEpfX0sc2V0SGFzaDpmdW5jdGlvbihhKXt0aGlzLm1vZGU9
PT0ibGVnYWN5IiYmdGhpcy53cml0ZUZyYW1lKGEpLHRoaXMuaGlzdG9yeT09PSEwPyh3aW5kb3cu
aGlzdG9yeS5wdXNoU3RhdGUoe30sZG9jdW1lbnQudGl0bGUsYSksdGhpcy5maXJlKCkpOmIuaGFz
aD1hWzBdPT09Ii8iP2E6Ii8iK2E7cmV0dXJuIHRoaXN9LHdyaXRlRnJhbWU6ZnVuY3Rpb24oYSl7
dmFyIGI9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0YXRlLWZyYW1lIiksYz1iLmNvbnRlbnRE
b2N1bWVudHx8Yi5jb250ZW50V2luZG93LmRvY3VtZW50O2Mub3BlbigpLGMud3JpdGUoIjxzY3Jp
cHQ+X2hhc2ggPSAnIithKyInOyBvbmxvYWQgPSBwYXJlbnQubGlzdGVuZXIuc3luY0hhc2g7PHNj
cmlwdD4iKSxjLmNsb3NlKCl9LHN5bmNIYXNoOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5faGFzaDth
IT1iLmhhc2gmJihiLmhhc2g9YSk7cmV0dXJuIHRoaXN9LG9uSGFzaENoYW5nZWQ6ZnVuY3Rpb24o
KXt9fSxlPWEuUm91dGVyPWZ1bmN0aW9uKGEpe2lmKHRoaXMgaW5zdGFuY2VvZiBlKXRoaXMucGFy
YW1zPXt9LHRoaXMucm91dGVzPXt9LHRoaXMubWV0aG9kcz1bIm9uIiwib25jZSIsImFmdGVyIiwi
YmVmb3JlIl0sdGhpcy5zY29wZT1bXSx0aGlzLl9tZXRob2RzPXt9LHRoaXMuX2luc2VydD10aGlz
Lmluc2VydCx0aGlzLmluc2VydD10aGlzLmluc2VydEV4LHRoaXMuaGlzdG9yeVN1cHBvcnQ9KHdp
bmRvdy5oaXN0b3J5IT1udWxsP3dpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZTpudWxsKSE9bnVsbCx0
aGlzLmNvbmZpZ3VyZSgpLHRoaXMubW91bnQoYXx8e30pO2Vsc2UgcmV0dXJuIG5ldyBlKGEpfTtl
LnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKGEpe3ZhciBlPXRoaXMsZjt0aGlzLmhhbmRsZXI9ZnVu
Y3Rpb24oYSl7dmFyIGI9YSYmYS5uZXdVUkx8fHdpbmRvdy5sb2NhdGlvbi5oYXNoLGM9ZS5oaXN0
b3J5PT09ITA/ZS5nZXRQYXRoKCk6Yi5yZXBsYWNlKC8uKiMvLCIiKTtlLmRpc3BhdGNoKCJvbiIs
Yy5jaGFyQXQoMCk9PT0iLyI/YzoiLyIrYyl9LGQuaW5pdCh0aGlzLmhhbmRsZXIsdGhpcy5oaXN0
b3J5KSx0aGlzLmhpc3Rvcnk9PT0hMT9jKCkmJmE/Yi5oYXNoPWE6YygpfHxlLmRpc3BhdGNoKCJv
biIsIi8iK2IuaGFzaC5yZXBsYWNlKC9eKCNcL3wjfFwvKS8sIiIpKToodGhpcy5jb252ZXJ0X2hh
c2hfaW5faW5pdD8oZj1jKCkmJmE/YTpjKCk/bnVsbDpiLmhhc2gucmVwbGFjZSgvXiMvLCIiKSxm
JiZ3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUoe30sZG9jdW1lbnQudGl0bGUsZikpOmY9dGhp
cy5nZXRQYXRoKCksKGZ8fHRoaXMucnVuX2luX2luaXQ9PT0hMCkmJnRoaXMuaGFuZGxlcigpKTty
ZXR1cm4gdGhpc30sZS5wcm90b3R5cGUuZXhwbG9kZT1mdW5jdGlvbigpe3ZhciBhPXRoaXMuaGlz
dG9yeT09PSEwP3RoaXMuZ2V0UGF0aCgpOmIuaGFzaDthLmNoYXJBdCgxKT09PSIvIiYmKGE9YS5z
bGljZSgxKSk7cmV0dXJuIGEuc2xpY2UoMSxhLmxlbmd0aCkuc3BsaXQoIi8iKX0sZS5wcm90b3R5
cGUuc2V0Um91dGU9ZnVuY3Rpb24oYSxiLGMpe3ZhciBlPXRoaXMuZXhwbG9kZSgpO3R5cGVvZiBh
PT0ibnVtYmVyIiYmdHlwZW9mIGI9PSJzdHJpbmciP2VbYV09Yjp0eXBlb2YgYz09InN0cmluZyI/
ZS5zcGxpY2UoYSxiLHMpOmU9W2FdLGQuc2V0SGFzaChlLmpvaW4oIi8iKSk7cmV0dXJuIGV9LGUu
cHJvdG90eXBlLmluc2VydEV4PWZ1bmN0aW9uKGEsYixjLGQpe2E9PT0ib25jZSImJihhPSJvbiIs
Yz1mdW5jdGlvbihhKXt2YXIgYj0hMTtyZXR1cm4gZnVuY3Rpb24oKXtpZighYil7Yj0hMDtyZXR1
cm4gYS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fX0oYykpO3JldHVybiB0aGlzLl9pbnNlcnQoYSxi
LGMsZCl9LGUucHJvdG90eXBlLmdldFJvdXRlPWZ1bmN0aW9uKGEpe3ZhciBiPWE7aWYodHlwZW9m
IGE9PSJudW1iZXIiKWI9dGhpcy5leHBsb2RlKClbYV07ZWxzZSBpZih0eXBlb2YgYT09InN0cmlu
ZyIpe3ZhciBjPXRoaXMuZXhwbG9kZSgpO2I9Yy5pbmRleE9mKGEpfWVsc2UgYj10aGlzLmV4cGxv
ZGUoKTtyZXR1cm4gYn0sZS5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe2QuZGVzdHJveSh0
aGlzLmhhbmRsZXIpO3JldHVybiB0aGlzfSxlLnByb3RvdHlwZS5nZXRQYXRoPWZ1bmN0aW9uKCl7
dmFyIGE9d2luZG93LmxvY2F0aW9uLnBhdGhuYW1lO2Euc3Vic3RyKDAsMSkhPT0iLyImJihhPSIv
IithKTtyZXR1cm4gYX07dmFyIGw9L1w/LiovO2UucHJvdG90eXBlLmNvbmZpZ3VyZT1mdW5jdGlv
bihhKXthPWF8fHt9O2Zvcih2YXIgYj0wO2I8dGhpcy5tZXRob2RzLmxlbmd0aDtiKyspdGhpcy5f
bWV0aG9kc1t0aGlzLm1ldGhvZHNbYl1dPSEwO3RoaXMucmVjdXJzZT1hLnJlY3Vyc2V8fHRoaXMu
cmVjdXJzZXx8ITEsdGhpcy5hc3luYz1hLmFzeW5jfHwhMSx0aGlzLmRlbGltaXRlcj1hLmRlbGlt
aXRlcnx8Ii8iLHRoaXMuc3RyaWN0PXR5cGVvZiBhLnN0cmljdD09InVuZGVmaW5lZCI/ITA6YS5z
dHJpY3QsdGhpcy5ub3Rmb3VuZD1hLm5vdGZvdW5kLHRoaXMucmVzb3VyY2U9YS5yZXNvdXJjZSx0
aGlzLmhpc3Rvcnk9YS5odG1sNWhpc3RvcnkmJnRoaXMuaGlzdG9yeVN1cHBvcnR8fCExLHRoaXMu
cnVuX2luX2luaXQ9dGhpcy5oaXN0b3J5PT09ITAmJmEucnVuX2hhbmRsZXJfaW5faW5pdCE9PSEx
LHRoaXMuY29udmVydF9oYXNoX2luX2luaXQ9dGhpcy5oaXN0b3J5PT09ITAmJmEuY29udmVydF9o
YXNoX2luX2luaXQhPT0hMSx0aGlzLmV2ZXJ5PXthZnRlcjphLmFmdGVyfHxudWxsLGJlZm9yZTph
LmJlZm9yZXx8bnVsbCxvbjphLm9ufHxudWxsfTtyZXR1cm4gdGhpc30sZS5wcm90b3R5cGUucGFy
YW09ZnVuY3Rpb24oYSxiKXthWzBdIT09IjoiJiYoYT0iOiIrYSk7dmFyIGM9bmV3IFJlZ0V4cChh
LCJnIik7dGhpcy5wYXJhbXNbYV09ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZShjLGIuc291
cmNlfHxiKX07cmV0dXJuIHRoaXN9LGUucHJvdG90eXBlLm9uPWUucHJvdG90eXBlLnJvdXRlPWZ1
bmN0aW9uKGEsYixjKXt2YXIgZD10aGlzOyFjJiZ0eXBlb2YgYj09ImZ1bmN0aW9uIiYmKGM9Yixi
PWEsYT0ib24iKTtpZihBcnJheS5pc0FycmF5KGIpKXJldHVybiBiLmZvckVhY2goZnVuY3Rpb24o
Yil7ZC5vbihhLGIsYyl9KTtiLnNvdXJjZSYmKGI9Yi5zb3VyY2UucmVwbGFjZSgvXFxcLy9pZywi
LyIpKTtpZihBcnJheS5pc0FycmF5KGEpKXJldHVybiBhLmZvckVhY2goZnVuY3Rpb24oYSl7ZC5v
bihhLnRvTG93ZXJDYXNlKCksYixjKX0pO2I9Yi5zcGxpdChuZXcgUmVnRXhwKHRoaXMuZGVsaW1p
dGVyKSksYj1rKGIsdGhpcy5kZWxpbWl0ZXIpLHRoaXMuaW5zZXJ0KGEsdGhpcy5zY29wZS5jb25j
YXQoYiksYyl9LGUucHJvdG90eXBlLnBhdGg9ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLGQ9dGhp
cy5zY29wZS5sZW5ndGg7YS5zb3VyY2UmJihhPWEuc291cmNlLnJlcGxhY2UoL1xcXC8vaWcsIi8i
KSksYT1hLnNwbGl0KG5ldyBSZWdFeHAodGhpcy5kZWxpbWl0ZXIpKSxhPWsoYSx0aGlzLmRlbGlt
aXRlciksdGhpcy5zY29wZT10aGlzLnNjb3BlLmNvbmNhdChhKSxiLmNhbGwodGhpcyx0aGlzKSx0
aGlzLnNjb3BlLnNwbGljZShkLGEubGVuZ3RoKX0sZS5wcm90b3R5cGUuZGlzcGF0Y2g9ZnVuY3Rp
b24oYSxiLGMpe2Z1bmN0aW9uIGgoKXtkLmxhc3Q9ZS5hZnRlcixkLmludm9rZShkLnJ1bmxpc3Qo
ZSksZCxjKX12YXIgZD10aGlzLGU9dGhpcy50cmF2ZXJzZShhLGIucmVwbGFjZShsLCIiKSx0aGlz
LnJvdXRlcywiIiksZj10aGlzLl9pbnZva2VkLGc7dGhpcy5faW52b2tlZD0hMDtpZighZXx8ZS5s
ZW5ndGg9PT0wKXt0aGlzLmxhc3Q9W10sdHlwZW9mIHRoaXMubm90Zm91bmQ9PSJmdW5jdGlvbiIm
JnRoaXMuaW52b2tlKFt0aGlzLm5vdGZvdW5kXSx7bWV0aG9kOmEscGF0aDpifSxjKTtyZXR1cm4h
MX10aGlzLnJlY3Vyc2U9PT0iZm9yd2FyZCImJihlPWUucmV2ZXJzZSgpKSxnPXRoaXMuZXZlcnkm
JnRoaXMuZXZlcnkuYWZ0ZXI/W3RoaXMuZXZlcnkuYWZ0ZXJdLmNvbmNhdCh0aGlzLmxhc3QpOlt0
aGlzLmxhc3RdO2lmKGcmJmcubGVuZ3RoPjAmJmYpe3RoaXMuYXN5bmM/dGhpcy5pbnZva2UoZyx0
aGlzLGgpOih0aGlzLmludm9rZShnLHRoaXMpLGgoKSk7cmV0dXJuITB9aCgpO3JldHVybiEwfSxl
LnByb3RvdHlwZS5pbnZva2U9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMsZTt0aGlzLmFzeW5j
PyhlPWZ1bmN0aW9uKGMsZCl7aWYoQXJyYXkuaXNBcnJheShjKSlyZXR1cm4gaChjLGUsZCk7dHlw
ZW9mIGM9PSJmdW5jdGlvbiImJmMuYXBwbHkoYiwoYS5jYXB0dXJlc3x8W10pLmNvbmNhdChkKSl9
LGgoYSxlLGZ1bmN0aW9uKCl7YyYmYy5hcHBseShiLGFyZ3VtZW50cyl9KSk6KGU9ZnVuY3Rpb24o
Yyl7aWYoQXJyYXkuaXNBcnJheShjKSlyZXR1cm4gZihjLGUpO2lmKHR5cGVvZiBjPT0iZnVuY3Rp
b24iKXJldHVybiBjLmFwcGx5KGIsYS5jYXB0dXJlc3x8W10pO3R5cGVvZiBjPT0ic3RyaW5nIiYm
ZC5yZXNvdXJjZSYmZC5yZXNvdXJjZVtjXS5hcHBseShiLGEuY2FwdHVyZXN8fFtdKX0sZihhLGUp
KX0sZS5wcm90b3R5cGUudHJhdmVyc2U9ZnVuY3Rpb24oYSxiLGMsZCxlKXtmdW5jdGlvbiBsKGEp
e2Z1bmN0aW9uIGMoYSl7Zm9yKHZhciBiPWEubGVuZ3RoLTE7Yj49MDtiLS0pQXJyYXkuaXNBcnJh
eShhW2JdKT8oYyhhW2JdKSxhW2JdLmxlbmd0aD09PTAmJmEuc3BsaWNlKGIsMSkpOmUoYVtiXSl8
fGEuc3BsaWNlKGIsMSl9ZnVuY3Rpb24gYihhKXt2YXIgYz1bXTtmb3IodmFyIGQ9MDtkPGEubGVu
Z3RoO2QrKyljW2RdPUFycmF5LmlzQXJyYXkoYVtkXSk/YihhW2RdKTphW2RdO3JldHVybiBjfWlm
KCFlKXJldHVybiBhO3ZhciBkPWIoYSk7ZC5tYXRjaGVkPWEubWF0Y2hlZCxkLmNhcHR1cmVzPWEu
Y2FwdHVyZXMsZC5hZnRlcj1hLmFmdGVyLmZpbHRlcihlKSxjKGQpO3JldHVybiBkfXZhciBmPVtd
LGcsaCxpLGosaztpZihiPT09dGhpcy5kZWxpbWl0ZXImJmNbYV0pe2o9W1tjLmJlZm9yZSxjW2Fd
XS5maWx0ZXIoQm9vbGVhbildLGouYWZ0ZXI9W2MuYWZ0ZXJdLmZpbHRlcihCb29sZWFuKSxqLm1h
dGNoZWQ9ITAsai5jYXB0dXJlcz1bXTtyZXR1cm4gbChqKX1mb3IodmFyIG0gaW4gYylpZihjLmhh
c093blByb3BlcnR5KG0pJiYoIXRoaXMuX21ldGhvZHNbbV18fHRoaXMuX21ldGhvZHNbbV0mJnR5
cGVvZiBjW21dPT0ib2JqZWN0IiYmIUFycmF5LmlzQXJyYXkoY1ttXSkpKXtnPWg9ZCt0aGlzLmRl
bGltaXRlcittLHRoaXMuc3RyaWN0fHwoaCs9IlsiK3RoaXMuZGVsaW1pdGVyKyJdPyIpLGk9Yi5t
YXRjaChuZXcgUmVnRXhwKCJeIitoKSk7aWYoIWkpY29udGludWU7aWYoaVswXSYmaVswXT09YiYm
Y1ttXVthXSl7aj1bW2NbbV0uYmVmb3JlLGNbbV1bYV1dLmZpbHRlcihCb29sZWFuKV0sai5hZnRl
cj1bY1ttXS5hZnRlcl0uZmlsdGVyKEJvb2xlYW4pLGoubWF0Y2hlZD0hMCxqLmNhcHR1cmVzPWku
c2xpY2UoMSksdGhpcy5yZWN1cnNlJiZjPT09dGhpcy5yb3V0ZXMmJihqLnB1c2goW2MuYmVmb3Jl
LGMub25dLmZpbHRlcihCb29sZWFuKSksai5hZnRlcj1qLmFmdGVyLmNvbmNhdChbYy5hZnRlcl0u
ZmlsdGVyKEJvb2xlYW4pKSk7cmV0dXJuIGwoail9aj10aGlzLnRyYXZlcnNlKGEsYixjW21dLGcp
O2lmKGoubWF0Y2hlZCl7ai5sZW5ndGg+MCYmKGY9Zi5jb25jYXQoaikpLHRoaXMucmVjdXJzZSYm
KGYucHVzaChbY1ttXS5iZWZvcmUsY1ttXS5vbl0uZmlsdGVyKEJvb2xlYW4pKSxqLmFmdGVyPWou
YWZ0ZXIuY29uY2F0KFtjW21dLmFmdGVyXS5maWx0ZXIoQm9vbGVhbikpLGM9PT10aGlzLnJvdXRl
cyYmKGYucHVzaChbYy5iZWZvcmUsYy5vbl0uZmlsdGVyKEJvb2xlYW4pKSxqLmFmdGVyPWouYWZ0
ZXIuY29uY2F0KFtjLmFmdGVyXS5maWx0ZXIoQm9vbGVhbikpKSksZi5tYXRjaGVkPSEwLGYuY2Fw
dHVyZXM9ai5jYXB0dXJlcyxmLmFmdGVyPWouYWZ0ZXI7cmV0dXJuIGwoZil9fXJldHVybiExfSxl
LnByb3RvdHlwZS5pbnNlcnQ9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGUsZixnLGgsaTtiPWIuZmls
dGVyKGZ1bmN0aW9uKGEpe3JldHVybiBhJiZhLmxlbmd0aD4wfSksZD1kfHx0aGlzLnJvdXRlcyxp
PWIuc2hpZnQoKSwvXDp8XCovLnRlc3QoaSkmJiEvXFxkfFxcdy8udGVzdChpKSYmKGk9aihpLHRo
aXMucGFyYW1zKSk7aWYoYi5sZW5ndGg+MCl7ZFtpXT1kW2ldfHx7fTtyZXR1cm4gdGhpcy5pbnNl
cnQoYSxiLGMsZFtpXSl9e2lmKCEhaXx8ISFiLmxlbmd0aHx8ZCE9PXRoaXMucm91dGVzKXtmPXR5
cGVvZiBkW2ldLGc9QXJyYXkuaXNBcnJheShkW2ldKTtpZihkW2ldJiYhZyYmZj09Im9iamVjdCIp
e2U9dHlwZW9mIGRbaV1bYV07c3dpdGNoKGUpe2Nhc2UiZnVuY3Rpb24iOmRbaV1bYV09W2RbaV1b
YV0sY107cmV0dXJuO2Nhc2Uib2JqZWN0IjpkW2ldW2FdLnB1c2goYyk7cmV0dXJuO2Nhc2UidW5k
ZWZpbmVkIjpkW2ldW2FdPWM7cmV0dXJufX1lbHNlIGlmKGY9PSJ1bmRlZmluZWQiKXtoPXt9LGhb
YV09YyxkW2ldPWg7cmV0dXJufXRocm93IG5ldyBFcnJvcigiSW52YWxpZCByb3V0ZSBjb250ZXh0
OiAiK2YpfWU9dHlwZW9mIGRbYV07c3dpdGNoKGUpe2Nhc2UiZnVuY3Rpb24iOmRbYV09W2RbYV0s
Y107cmV0dXJuO2Nhc2Uib2JqZWN0IjpkW2FdLnB1c2goYyk7cmV0dXJuO2Nhc2UidW5kZWZpbmVk
IjpkW2FdPWM7cmV0dXJufX19LGUucHJvdG90eXBlLmV4dGVuZD1mdW5jdGlvbihhKXtmdW5jdGlv
biBlKGEpe2IuX21ldGhvZHNbYV09ITAsYlthXT1mdW5jdGlvbigpe3ZhciBjPWFyZ3VtZW50cy5s
ZW5ndGg9PT0xP1thLCIiXTpbYV07Yi5vbi5hcHBseShiLGMuY29uY2F0KEFycmF5LnByb3RvdHlw
ZS5zbGljZS5jYWxsKGFyZ3VtZW50cykpKX19dmFyIGI9dGhpcyxjPWEubGVuZ3RoLGQ7Zm9yKGQ9
MDtkPGM7ZCsrKWUoYVtkXSl9LGUucHJvdG90eXBlLnJ1bmxpc3Q9ZnVuY3Rpb24oYSl7dmFyIGI9
dGhpcy5ldmVyeSYmdGhpcy5ldmVyeS5iZWZvcmU/W3RoaXMuZXZlcnkuYmVmb3JlXS5jb25jYXQo
ZyhhKSk6ZyhhKTt0aGlzLmV2ZXJ5JiZ0aGlzLmV2ZXJ5Lm9uJiZiLnB1c2godGhpcy5ldmVyeS5v
biksYi5jYXB0dXJlcz1hLmNhcHR1cmVzLGIuc291cmNlPWEuc291cmNlO3JldHVybiBifSxlLnBy
b3RvdHlwZS5tb3VudD1mdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGQoYixkKXt2YXIgZT1iLGY9Yi5z
cGxpdChjLmRlbGltaXRlciksZz10eXBlb2YgYVtiXSxoPWZbMF09PT0iInx8IWMuX21ldGhvZHNb
ZlswXV0saT1oPyJvbiI6ZTtoJiYoZT1lLnNsaWNlKChlLm1hdGNoKG5ldyBSZWdFeHAoIl4iK2Mu
ZGVsaW1pdGVyKSl8fFsiIl0pWzBdLmxlbmd0aCksZi5zaGlmdCgpKTtoJiZnPT09Im9iamVjdCIm
JiFBcnJheS5pc0FycmF5KGFbYl0pPyhkPWQuY29uY2F0KGYpLGMubW91bnQoYVtiXSxkKSk6KGgm
JihkPWQuY29uY2F0KGUuc3BsaXQoYy5kZWxpbWl0ZXIpKSxkPWsoZCxjLmRlbGltaXRlcikpLGMu
aW5zZXJ0KGksZCxhW2JdKSl9aWYoISFhJiZ0eXBlb2YgYT09Im9iamVjdCImJiFBcnJheS5pc0Fy
cmF5KGEpKXt2YXIgYz10aGlzO2I9Ynx8W10sQXJyYXkuaXNBcnJheShiKXx8KGI9Yi5zcGxpdChj
LmRlbGltaXRlcikpO2Zvcih2YXIgZSBpbiBhKWEuaGFzT3duUHJvcGVydHkoZSkmJmQoZSxiLnNs
aWNlKDApKX19fSkodHlwZW9mIGV4cG9ydHM9PSJvYmplY3QiP2V4cG9ydHM6d2luZG93KQpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9u
b2RlX21vZHVsZXMvZGlyZWN0b3IvZGlzdC9lbmRlci5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9u
b2RlX21vZHVsZXMvZGlyZWN0b3IvZGlzdC9lbmRlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZTNlYmM0MWIw
YmRlMDY0YmZkMzM2M2ZkNWRkMGIzNDA2ZWZiOWVmCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9kaXN0L2VuZGVyLmpzCkBAIC0wLDAg
KzEsMyBAQAorJC5lbmRlcih7CisgIHJvdXRlcjogUm91dGVyCit9KTsKZGlmZiAtLWdpdCBhL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvcGFja2FnZS5qc29uIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9wYWNrYWdlLmpzb24KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTBiZDI5NjI3MjdmNDY0ZGNiZTA5ODE3MmE5OWZhOGRlNzZhYjliZAotLS0gL2Rldi9u
dWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvcGFja2Fn
ZS5qc29uCkBAIC0wLDAgKzEsNDEgQEAKK3sKKyAgIm5hbWUiOiAiZGlyZWN0b3IiLAorICAiZGVz
Y3JpcHRpb24iOiAiQSBjbGllbnQgU2lkZS9TZXJ2ZXIgU2lkZSBSb3V0ZXIiLAorICAiYXV0aG9y
IjogIkNoYXJsaWUgUm9iYmlucyA8Y2hhcmxpZS5yb2JiaW5zQGdtYWlsLmNvbT4iLAorICAidmVy
c2lvbiI6ICIxLjIuOCIsCisgICJtYWludGFpbmVycyI6IFsKKyAgICAiaGlqMW54IDxwYW9sb0Bu
b2Rlaml0c3UuY29tPiIsCisgICAgImJlYXVndW5kZXJzb24gPGJlYXVAYmVhdWd1bmRlcnNvbi5j
b20+IgorICBdLAorICAicmVwb3NpdG9yeSI6IHsKKyAgICAidHlwZSI6ICJnaXQiLAorICAgICJ1
cmwiOiAiaHR0cDovL2dpdGh1Yi5jb20vZmxhdGlyb24vZGlyZWN0b3IuZ2l0IgorICB9LAorICAi
a2V5d29yZHMiOiBbCisgICAgIlVSTCIsCisgICAgInJvdXRlciIsCisgICAgImh0dHAiLAorICAg
ICJjbGkiLAorICAgICJmbGF0aXJvbiIsCisgICAgImNsaWVudCBzaWRlIiwKKyAgICAiZW5kZXIi
CisgIF0sCisgICJkZXZEZXBlbmRlbmNpZXMiOiB7CisgICAgImFwaS1lYXN5IjogIjAuNC54IiwK
KyAgICAiY29kZXN1cmdlb24iOiAiaHR0cHM6Ly9naXRodWIuY29tL2hpajFueC9jb2Rlc3VyZ2Vv
bi90YXJiYWxsL21hc3RlciIsCisgICAgImNvbG9ycyI6ICIxLjAueCIsCisgICAgInF1bml0anMi
OiAiMS45LngiLAorICAgICJyZXF1ZXN0IjogIjIuNDkueCIsCisgICAgInVnbGlmeS1qcyI6ICIy
LjQueCIsCisgICAgInZvd3MiOiAiMC44LjAiCisgIH0sCisgICJlbmRlciI6ICIuL2J1aWxkL2Vu
ZGVyLmpzIiwKKyAgImJyb3dzZXJpZnkiOiAiLi9idWlsZC9kaXJlY3RvciIsCisgICJtYWluIjog
Ii4vbGliL2RpcmVjdG9yIiwKKyAgImVuZ2luZXMiOiB7CisgICAgIm5vZGUiOiAiPj0gMC44LjAi
CisgIH0sCisgICJzY3JpcHRzIjogeworICAgICJ0ZXN0IjogInZvd3MgdGVzdC9zZXJ2ZXIvKi8q
LXRlc3QuanMgLS1zcGVjIgorICB9Cit9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Z1bmN0aW9uYWwtcHJvZy1leGFtcGxlcy9lbG0v
aW5kZXguaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvZnVuY3Rpb25hbC1wcm9nLWV4YW1wbGVzL2VsbS9pbmRleC5odG1sCmluZGV4IDk1MTRjNGNk
OGEwNjgxZjIxNjMxNThkOGNmYTI5NmFiNTg5ODc3Y2YuLjk5MTM0YTI1ZmM1MzljOGU4ZDUzZTQx
MWNmNjhkYjg3ZTNiZWRjZmYgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZnVuY3Rpb25hbC1wcm9nLWV4YW1wbGVzL2VsbS9pbmRleC5o
dG1sCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
ZnVuY3Rpb25hbC1wcm9nLWV4YW1wbGVzL2VsbS9pbmRleC5odG1sCkBAIC0xNiw3ICsxNiw3IEBA
CiA8L2hlYWQ+CiAKIDxib2R5PgotPHNjcmlwdCBzcmM9ImJ1aWxkL2VsbS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iZGlzdC9lbG0uanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KICAgICAoZnVu
Y3Rpb24gKCkgewogICAgICAgICAvLyB2YXIgcmVzdWx0ID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0o
J2VsbS10b2RvLW1vZGVsJyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>310007</attachid>
            <date>2017-05-12 20:50:53 -0700</date>
            <delta_ts>2017-05-12 21:11:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170513-20170512205053.patch</filename>
            <type>text/plain</type>
            <size>74704</size>
            <attacher name="Addy Osmani">addyo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2ODEwCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDU5ZTYwNDhjODMx
OGE3MzczZGZlYzg4MTU5ODgxMDM3MTM0NTMzN2YuLmQ5ZDg3ZDNkYWNmYzIwY2QyM2E2NjYxZTM1
NDk0NTkxYzVhOTZmNjcgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzEgQEAKIDIwMTctMDUt
MTIgIEFkZHkgT3NtYW5pICA8YWRkeW9zbWFuaUBnbWFpbC5jb20+CiAKKyAgICAgICAgVXBkYXRl
IHRvIFNwZWVkb21ldGVyIDIuMCB3L3VwZGF0ZWQgZnJhbWV3b3JrcyArIG5ldyB3b3JrbG9hZHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDUxMwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNwZWVkb21l
dGVyOiByZWZyZXNoIHRlc3QgcnVubmVyIGFuZCBmaXggYXBwcyB0byB3b3JrIHdpdGggaXQKKwor
ICAgICAgICAqIFNwZWVkb21ldGVyL0ludGVyYWN0aXZlUnVubmVyLmh0bWw6CisgICAgICAgICog
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rlc3RzLmpzOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL2Rpc3QvaW5kZXgu
aHRtbDoKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvZW1iZXJqcy9hc3NldHMvdG9kb212Yy5qczoKKyAgICAgICAgKiBTcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9pbmRl
eC5odG1sOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS9hcHAvc2VydmljZXMvbWVtb3J5LmpzOgorICAg
ICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9lbWJlcmpzL3NvdXJjZS9hcHAvc2VydmljZXMvcmVwby5qczoKKyAgICAgICAgKiBTcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy90ZXN0
cy9pbmRleC5odG1sOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvaW5kZXguaHRtbDoKKyAgICAgICAgKiBTcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVf
bW9kdWxlcy9kaXJlY3Rvci9MSUNFTlNFOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxl
cy9kaXJlY3Rvci9ib3dlci5qc29uOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9k
aXJlY3Rvci9kaXN0L2RpcmVjdG9yLmpzOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxl
cy9kaXJlY3Rvci9kaXN0L2RpcmVjdG9yLm1pbi5qczogQWRkZWQuCisgICAgICAgICogU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2Rl
X21vZHVsZXMvZGlyZWN0b3IvZGlzdC9lbmRlci5qczogQWRkZWQuCisgICAgICAgICogU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2Rl
X21vZHVsZXMvZGlyZWN0b3IvcGFja2FnZS5qc29uOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9mdW5jdGlvbmFsLXByb2ctZXhhbXBsZXMvZWxtL2luZGV4
Lmh0bWw6CisKKzIwMTctMDUtMTIgIEFkZHkgT3NtYW5pICA8YWRkeW9zbWFuaUBnbWFpbC5jb20+
CisKICAgICAgICAgU3BlZWRvbWV0ZXI6IEFkZCBhIFJlYWN0LmpzIFRvZG9NVkMgaW1wbGVtZW50
YXRpb24KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
MTQ0NAogCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL0ludGVyYWN0
aXZlUnVubmVyLmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL0ludGVyYWN0aXZl
UnVubmVyLmh0bWwKaW5kZXggOTIwNzZhNGFjYWJlN2RiY2ViOGIwYjViOWU1MzM2ODg2ZDllYzQ1
NS4uNzgwMzY4MGQxN2QxZDliNzc1NzZhMjdhODY4YTA0NDljYjdiOGEzMyAxMDA2NDQKLS0tIGEv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9JbnRlcmFjdGl2ZVJ1bm5lci5odG1sCisrKyBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvSW50ZXJhY3RpdmVSdW5uZXIuaHRtbApAQCAt
MSw3ICsxLDcgQEAKIDwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KLTx0aXRsZT5Eb1lv
dUV2ZW5CZW5jaDwvdGl0bGU+Cis8dGl0bGU+U3BlZWRvbWV0ZXIgMi4wIEludGVyYWN0aXZlIFJ1
bm5lcjwvdGl0bGU+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JlbmNobWFyay1ydW5uZXIuanMi
IGRlZmVyPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy90ZXN0cy5qcyIgZGVmZXI+
PC9zY3JpcHQ+CiA8c3R5bGU+CkBAIC02NiwxMyArNjYsMzkgQEAgZnVuY3Rpb24gY3JlYXRlVUlG
b3JTdWl0ZXMoc3VpdGVzLCBvbnN0ZXAsIG9ucnVuKSB7CiAKICAgICB2YXIgYnV0dG9uID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7CiAgICAgYnV0dG9uLnRleHRDb250ZW50ID0g
J1J1bic7CisgICAgYnV0dG9uLmlkID0gJ3J1blN1aXRlcyc7CiAgICAgYnV0dG9uLm9uY2xpY2sg
PSBvbnJ1bjsKICAgICBjb250cm9sLmFwcGVuZENoaWxkKGJ1dHRvbik7CiAKICAgICByZXR1cm4g
Y29udHJvbDsKIH0KIAordmFyIHBhcnNlUXVlcnlTdHJpbmcgPSAoZnVuY3Rpb24gKHBhaXJMaXN0
KSB7CisgICAgdmFyIHBhaXJzID0ge307CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYWlyTGlz
dC5sZW5ndGg7ICsraSkgeworICAgICAgICB2YXIga2V5VmFsdWUgPSBwYWlyTGlzdFtpXS5zcGxp
dCgnPScsIDIpOworICAgICAgICBpZiAoa2V5VmFsdWUubGVuZ3RoID09IDEpCisgICAgICAgICAg
ICBwYWlyc1trZXlWYWx1ZVswXV0gPSAnJzsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcGFp
cnNba2V5VmFsdWVbMF1dID0gZGVjb2RlVVJJQ29tcG9uZW50KGtleVZhbHVlWzFdLnJlcGxhY2Uo
L1wrL2csICcgJykpOworICAgIH0KKyAgICByZXR1cm4gcGFpcnM7Cit9KSh3aW5kb3cubG9jYXRp
b24uc2VhcmNoLnN1YnN0cigxKS5zcGxpdCgnJicpKTsKKworZnVuY3Rpb24gZGlzYWJsZUFsbFN1
aXRlc0V4Y2VwdChzdWl0ZU5hbWUpIHsKKyAgICBpZiAoc3VpdGVOYW1lID09PSB1bmRlZmluZWQg
fHwgc3VpdGVOYW1lID09PSAnJykKKyAgICAgICAgcmV0dXJuOworICAgIFN1aXRlcy5mb3JFYWNo
KGZ1bmN0aW9uKGVsZW1lbnQpIHsKKyAgICAgICAgaWYgKGVsZW1lbnQubmFtZSAhPT0gc3VpdGVO
YW1lKQorICAgICAgICAgICAgZWxlbWVudC5kaXNhYmxlZCA9IHRydWU7CisgICAgfSk7Cit9CisK
IGZ1bmN0aW9uIHN0YXJ0VGVzdCgpIHsKKyAgICB2YXIgcXVlcnlQYXJhbSA9IHBhcnNlUXVlcnlT
dHJpbmdbJ3N1aXRlJ107CisgICAgaWYgKHF1ZXJ5UGFyYW0gIT09IHVuZGVmaW5lZCkKKyAgICAg
ICAgZGlzYWJsZUFsbFN1aXRlc0V4Y2VwdChxdWVyeVBhcmFtKTsKKwogICAgIHZhciBydW5uZXIg
PSBuZXcgQmVuY2htYXJrUnVubmVyKFN1aXRlcywgewogICAgICAgICB3aWxsUnVuVGVzdDogZnVu
Y3Rpb24gKHN1aXRlLCB0ZXN0KSB7CiAgICAgICAgICAgICB0ZXN0LmFuY2hvci5jbGFzc0xpc3Qu
YWRkKCdydW5uaW5nJyk7CkBAIC0xMTIsNiArMTM4LDkgQEAgZnVuY3Rpb24gc3RhcnRUZXN0KCkg
ewogICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY3JlYXRlVUlGb3JTdWl0ZXMoU3VpdGVz
LAogICAgICAgICBmdW5jdGlvbiAoKSB7IHJ1bm5lci5zdGVwKGN1cnJlbnRTdGF0ZSkudGhlbihm
dW5jdGlvbiAoc3RhdGUpIHsgY3VycmVudFN0YXRlID0gc3RhdGU7IH0pOyB9LAogICAgICAgICBm
dW5jdGlvbiAoKSB7IHJ1bm5lci5ydW5BbGxTdGVwcyhjdXJyZW50U3RhdGUpOyBjdXJyZW50U3Rh
dGUgPSBudWxsOyB9KSk7CisKKyAgICBpZiAocGFyc2VRdWVyeVN0cmluZ1snc3RhcnRBdXRvbWF0
aWNhbGx5J10gIT09IHVuZGVmaW5lZCkKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3J1blN1aXRlcycpLmNsaWNrKCk7CiB9CiAKIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2Fk
Jywgc3RhcnRUZXN0KTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3Rlc3RzLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdGVzdHMuanMKaW5kZXggZTZmMjM5Y2M5NGVhMjQ3ZmRmYWZhOGVmMzM0YTRmY2IxNzQyODBk
OS4uMDkxNzQxOGY4OWE4NDM1YWFkMmQxZjFmYzcyOGJiODQwMGU0NmJmMCAxMDA2NDQKLS0tIGEv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdGVzdHMuanMKKysrIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdGVzdHMuanMKQEAgLTEsMjEgKzEs
MzEgQEAKIHZhciBudW1iZXJPZkl0ZW1zVG9BZGQgPSAxMDA7CiB2YXIgU3VpdGVzID0gW107Cit2
YXIgRU5URVJfS0VZX0NPREUgPSAxMzsKKwordmFyIHRyaWdnZXJFbnRlciA9IGZ1bmN0aW9uIChl
bGVtZW50LCB0eXBlKSB7CisgICAgdmFyIGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2
ZW50cycpOworICAgIGV2ZW50LmluaXRFdmVudCh0eXBlLCB0cnVlLCB0cnVlKTsKKyAgICBPYmpl
Y3QuZGVmaW5lUHJvcGVydHkoZXZlbnQsICdrZXlDb2RlJywge3ZhbHVlOiBFTlRFUl9LRVlfQ09E
RX0pOworICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShldmVudCwgJ3doaWNoJywge3ZhbHVlOiBF
TlRFUl9LRVlfQ09ERX0pOworICAgIGV2ZW50LmtleSA9ICdFTlRFUic7CisgICAgZWxlbWVudC5k
aXNwYXRjaEV2ZW50KGV2ZW50KTsKK30KIAogU3VpdGVzLnB1c2goewogICAgIG5hbWU6ICdWYW5p
bGxhSlMtVG9kb01WQycsCiAgICAgdXJsOiAndG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3Zhbmls
bGFqcy9pbmRleC5odG1sJywKICAgICBwcmVwYXJlOiBmdW5jdGlvbiAocnVubmVyLCBjb250ZW50
V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKLSAgICAgICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9y
RWxlbWVudCgnI25ldy10b2RvJykudGhlbihmdW5jdGlvbiAoZWxlbWVudCkgeworICAgICAgICBy
ZXR1cm4gcnVubmVyLndhaXRGb3JFbGVtZW50KCcubmV3LXRvZG8nKS50aGVuKGZ1bmN0aW9uIChl
bGVtZW50KSB7CiAgICAgICAgICAgICBlbGVtZW50LmZvY3VzKCk7CiAgICAgICAgICAgICByZXR1
cm4gZWxlbWVudDsKICAgICAgICAgfSk7CiAgICAgfSwKICAgICB0ZXN0czogWwogICAgICAgICBu
ZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0FkZGluZycgKyBudW1iZXJPZkl0ZW1zVG9BZGQgKyAnSXRl
bXMnLCBmdW5jdGlvbiAobmV3VG9kbywgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7
Ci0gICAgICAgICAgICB2YXIgdG9kb0NvbnRyb2xsZXIgPSBjb250ZW50V2luZG93LnRvZG8uY29u
dHJvbGxlcjsKICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtYmVyT2ZJdGVtc1Rv
QWRkOyBpKyspIHsKICAgICAgICAgICAgICAgICBuZXdUb2RvLnZhbHVlID0gJ1NvbWV0aGluZyB0
byBkbyAnICsgaTsKLSAgICAgICAgICAgICAgICB0b2RvQ29udHJvbGxlci5hZGRJdGVtKHtrZXlD
b2RlOiB0b2RvQ29udHJvbGxlci5FTlRFUl9LRVksIHRhcmdldDogbmV3VG9kb30pOworICAgICAg
ICAgICAgICAgIG5ld1RvZG8uZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2NoYW5nZScpKTsKKyAg
ICAgICAgICAgICAgICB0cmlnZ2VyRW50ZXIobmV3VG9kbywgJ2tleXByZXNzJyk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0pLAogICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0NvbXBs
ZXRpbmdBbGxJdGVtcycsIGZ1bmN0aW9uIChuZXdUb2RvLCBjb250ZW50V2luZG93LCBjb250ZW50
RG9jdW1lbnQpIHsKQEAgLTMyLDU2ICs0Miw4NCBAQCBTdWl0ZXMucHVzaCh7CiB9KTsKIAogU3Vp
dGVzLnB1c2goewotICAgIG5hbWU6ICdFbWJlckpTLVRvZG9NVkMnLAotICAgIHVybDogJ3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvaW5kZXguaHRtbCcsCisgICAgbmFtZTog
J1ZhbmlsbGEtRVMyMDE1LVRvZG9NVkMnLAorICAgIHVybDogJ3RvZG9tdmMvdmFuaWxsYS1leGFt
cGxlcy9lczIwMTUvaW5kZXguaHRtbCcsCiAgICAgcHJlcGFyZTogZnVuY3Rpb24gKHJ1bm5lciwg
Y29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7Ci0gICAgICAgIHJldHVybiBydW5uZXIu
d2FpdEZvckVsZW1lbnQoJyNuZXctdG9kbycpLnRoZW4oZnVuY3Rpb24gKGVsZW1lbnQpIHsKKyAg
ICAgICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVudCgnLm5ldy10b2RvJykudGhlbihmdW5j
dGlvbiAoZWxlbWVudCkgewogICAgICAgICAgICAgZWxlbWVudC5mb2N1cygpOwotICAgICAgICAg
ICAgcmV0dXJuIHsKLSAgICAgICAgICAgICAgICB2aWV3czogY29udGVudFdpbmRvdy5FbWJlci5W
aWV3LnZpZXdzLAotICAgICAgICAgICAgICAgIGVtYmVyUnVuOiBjb250ZW50V2luZG93LkVtYmVy
LnJ1biwKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBlbGVtZW50OwogICAgICAg
ICB9KTsKICAgICB9LAogICAgIHRlc3RzOiBbCi0gICAgICAgIG5ldyBCZW5jaG1hcmtUZXN0U3Rl
cCgnQWRkaW5nJyArIG51bWJlck9mSXRlbXNUb0FkZCArICdJdGVtcycsIGZ1bmN0aW9uIChwYXJh
bXMpIHsKKyAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdBZGRpbmcnICsgbnVtYmVyT2ZJ
dGVtc1RvQWRkICsgJ0l0ZW1zJywgZnVuY3Rpb24gKG5ld1RvZG8sIGNvbnRlbnRXaW5kb3csIGNv
bnRlbnREb2N1bWVudCkgewogICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1iZXJP
Zkl0ZW1zVG9BZGQ7IGkrKykgewotICAgICAgICAgICAgICAgIHBhcmFtcy5lbWJlclJ1bihmdW5j
dGlvbiAoKSB7IHBhcmFtcy52aWV3c1sibmV3LXRvZG8iXS5zZXQoJ3ZhbHVlJywgJ1NvbWV0aGlu
ZyB0byBkbycgKyBpKTsgfSk7Ci0gICAgICAgICAgICAgICAgcGFyYW1zLmVtYmVyUnVuKGZ1bmN0
aW9uICgpIHsgcGFyYW1zLnZpZXdzWyJuZXctdG9kbyJdLmluc2VydE5ld2xpbmUoZG9jdW1lbnQu
Y3JlYXRlRXZlbnQoJ0V2ZW50JykpOyB9KTsKKyAgICAgICAgICAgICAgICBuZXdUb2RvLnZhbHVl
ID0gJ1NvbWV0aGluZyB0byBkbycgKyBpOworICAgICAgICAgICAgICAgIG5ld1RvZG8uZGlzcGF0
Y2hFdmVudChuZXcgRXZlbnQoJ2NoYW5nZScpKTsKKyAgICAgICAgICAgICAgICB0cmlnZ2VyRW50
ZXIobmV3VG9kbywgJ2tleXByZXNzJyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0pLAogICAg
ICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0NvbXBsZXRpbmdBbGxJdGVtcycsIGZ1bmN0aW9u
IChwYXJhbXMsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgewotICAgICAgICAgICAg
dmFyIGNoZWNrYm94ZXMgPSBjb250ZW50RG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmVtYmVy
LWNoZWNrYm94Jyk7Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoZWNrYm94ZXMu
bGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgICAgICB2YXIgdmlldyA9IHBhcmFtcy52aWV3c1tj
aGVja2JveGVzW2ldLmlkXTsKLSAgICAgICAgICAgICAgICBwYXJhbXMuZW1iZXJSdW4oZnVuY3Rp
b24gKCkgeyB2aWV3LnNldCgnY2hlY2tlZCcsIHRydWUpOyB9KTsKKyAgICAgICAgICAgIHZhciBj
aGVja2JveGVzID0gY29udGVudERvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy50b2dnbGUnKTsK
KyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hlY2tib3hlcy5sZW5ndGg7IGkrKykK
KyAgICAgICAgICAgICAgICBjaGVja2JveGVzW2ldLmNsaWNrKCk7CisgICAgICAgIH0pLAorICAg
ICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0RlbGV0aW5nSXRlbXMnLCBmdW5jdGlvbiAocGFy
YW1zLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgICAgIHZhciBk
ZWxldGVCdXR0b25zID0gY29udGVudERvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5kZXN0cm95
Jyk7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRlbGV0ZUJ1dHRvbnMubGVuZ3Ro
OyBpKyspCisgICAgICAgICAgICAgICAgZGVsZXRlQnV0dG9uc1tpXS5jbGljaygpOworICAgICAg
ICB9KSwKKyAgICBdCit9KTsKKworU3VpdGVzLnB1c2goeworICAgIG5hbWU6ICdWYW5pbGxhLUVT
MjAxNS1CYWJlbC1XZWJwYWNrLVRvZG9NVkMnLAorICAgIHVybDogJ3RvZG9tdmMvdmFuaWxsYS1l
eGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0L2luZGV4Lmh0bWwnLAorICAgIHByZXBh
cmU6IGZ1bmN0aW9uIChydW5uZXIsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgewor
ICAgICAgICByZXR1cm4gcnVubmVyLndhaXRGb3JFbGVtZW50KCcubmV3LXRvZG8nKS50aGVuKGZ1
bmN0aW9uIChlbGVtZW50KSB7CisgICAgICAgICAgICBlbGVtZW50LmZvY3VzKCk7CisgICAgICAg
ICAgICByZXR1cm4gZWxlbWVudDsKKyAgICAgICAgfSk7CisgICAgfSwKKyAgICB0ZXN0czogWwor
ICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0FkZGluZycgKyBudW1iZXJPZkl0ZW1zVG9B
ZGQgKyAnSXRlbXMnLCBmdW5jdGlvbiAobmV3VG9kbywgY29udGVudFdpbmRvdywgY29udGVudERv
Y3VtZW50KSB7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bWJlck9mSXRlbXNU
b0FkZDsgaSsrKSB7CisgICAgICAgICAgICAgICAgbmV3VG9kby52YWx1ZSA9ICdTb21ldGhpbmcg
dG8gZG8nICsgaTsKKyAgICAgICAgICAgICAgICBuZXdUb2RvLmRpc3BhdGNoRXZlbnQobmV3IEV2
ZW50KCdjaGFuZ2UnKSk7CisgICAgICAgICAgICAgICAgdHJpZ2dlckVudGVyKG5ld1RvZG8sICdr
ZXlwcmVzcycpOwogICAgICAgICAgICAgfQogICAgICAgICB9KSwKKyAgICAgICAgbmV3IEJlbmNo
bWFya1Rlc3RTdGVwKCdDb21wbGV0aW5nQWxsSXRlbXMnLCBmdW5jdGlvbiAocGFyYW1zLCBjb250
ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgICAgIHZhciBjaGVja2JveGVz
ID0gY29udGVudERvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy50b2dnbGUnKTsKKyAgICAgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hlY2tib3hlcy5sZW5ndGg7IGkrKykKKyAgICAgICAg
ICAgICAgICBjaGVja2JveGVzW2ldLmNsaWNrKCk7CisgICAgICAgIH0pLAogICAgICAgICBuZXcg
QmVuY2htYXJrVGVzdFN0ZXAoJ0RlbGV0aW5nSXRlbXMnLCBmdW5jdGlvbiAocGFyYW1zLCBjb250
ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKICAgICAgICAgICAgIHZhciBkZWxldGVCdXR0
b25zID0gY29udGVudERvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5kZXN0cm95Jyk7CiAgICAg
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRlbGV0ZUJ1dHRvbnMubGVuZ3RoOyBpKyspCi0g
ICAgICAgICAgICAgICAgcGFyYW1zLmVtYmVyUnVuKGZ1bmN0aW9uICgpIHsgZGVsZXRlQnV0dG9u
c1tpXS5jbGljaygpOyB9KTsKKyAgICAgICAgICAgICAgICBkZWxldGVCdXR0b25zW2ldLmNsaWNr
KCk7CiAgICAgICAgIH0pLAogICAgIF0KIH0pOwogCiBTdWl0ZXMucHVzaCh7Ci0gICAgbmFtZTog
J0JhY2tib25lSlMtVG9kb01WQycsCi0gICAgdXJsOiAndG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvYmFja2JvbmUvaW5kZXguaHRtbCcsCisgICAgbmFtZTogJ1JlYWN0LVRvZG9NVkMnLAor
ICAgIHVybDogJ3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L2luZGV4Lmh0bWwn
LAogICAgIHByZXBhcmU6IGZ1bmN0aW9uIChydW5uZXIsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnRE
b2N1bWVudCkgewotICAgIGNvbnRlbnRXaW5kb3cuQmFja2JvbmUuc3luYyA9IGZ1bmN0aW9uICgp
IHt9Ci0gICAgICAgIHJldHVybiBydW5uZXIud2FpdEZvckVsZW1lbnQoJyNuZXctdG9kbycpLnRo
ZW4oZnVuY3Rpb24gKGVsZW1lbnQpIHsKKyAgICAgICAgY29udGVudFdpbmRvdy5hcHAuVXRpbHMu
c3RvcmUgPSBmdW5jdGlvbiAoKSB7fQorICAgICAgICByZXR1cm4gcnVubmVyLndhaXRGb3JFbGVt
ZW50KCcubmV3LXRvZG8nKS50aGVuKGZ1bmN0aW9uIChlbGVtZW50KSB7CiAgICAgICAgICAgICBl
bGVtZW50LmZvY3VzKCk7CiAgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKICAgICAgICAgfSk7
CiAgICAgfSwKICAgICB0ZXN0czogWwogICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0Fk
ZGluZycgKyBudW1iZXJPZkl0ZW1zVG9BZGQgKyAnSXRlbXMnLCBmdW5jdGlvbiAobmV3VG9kbywg
Y29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7Ci0gICAgICAgICAgICB2YXIgYXBwVmll
dyA9IGNvbnRlbnRXaW5kb3cuYXBwVmlldzsKLSAgICAgICAgICAgIHZhciBmYWtlRXZlbnQgPSB7
d2hpY2g6IGNvbnRlbnRXaW5kb3cuRU5URVJfS0VZfTsKICAgICAgICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgbnVtYmVyT2ZJdGVtc1RvQWRkOyBpKyspIHsKICAgICAgICAgICAgICAgICBuZXdU
b2RvLnZhbHVlID0gJ1NvbWV0aGluZyB0byBkbyAnICsgaTsKLSAgICAgICAgICAgICAgICBhcHBW
aWV3LmNyZWF0ZU9uRW50ZXIoZmFrZUV2ZW50KTsKKyAgICAgICAgICAgICAgICBuZXdUb2RvLmRp
c3BhdGNoRXZlbnQobmV3IEV2ZW50KCdpbnB1dCcsIHsKKyAgICAgICAgICAgICAgICAgIGJ1YmJs
ZXM6IHRydWUsCisgICAgICAgICAgICAgICAgICBjYW5jZWxhYmxlOiB0cnVlCisgICAgICAgICAg
ICAgICAgfSkpOworICAgICAgICAgICAgICAgIHRyaWdnZXJFbnRlcihuZXdUb2RvLCAna2V5ZG93
bicpOwogICAgICAgICAgICAgfQogICAgICAgICB9KSwKICAgICAgICAgbmV3IEJlbmNobWFya1Rl
c3RTdGVwKCdDb21wbGV0aW5nQWxsSXRlbXMnLCBmdW5jdGlvbiAobmV3VG9kbywgY29udGVudFdp
bmRvdywgY29udGVudERvY3VtZW50KSB7CkBAIC05OCw1NyArMTM2LDkyIEBAIFN1aXRlcy5wdXNo
KHsKIH0pOwogCiBTdWl0ZXMucHVzaCh7Ci0gICAgbmFtZTogJ2pRdWVyeS1Ub2RvTVZDJywKLSAg
ICB1cmw6ICd0b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvaW5kZXguaHRtbCcs
CisgICAgbmFtZTogJ1JlYWN0LVJlZHV4LVRvZG9NVkMnLAorICAgIHVybDogJ3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L2Rpc3QvaW5kZXguaHRtbCcsCiAgICAgcHJl
cGFyZTogZnVuY3Rpb24gKHJ1bm5lciwgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7
Ci0gICAgICAgIHJldHVybiBydW5uZXIud2FpdEZvckVsZW1lbnQoJyNuZXctdG9kbycpLnRoZW4o
ZnVuY3Rpb24gKGVsZW1lbnQpIHsKKyAgICAgICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVu
dCgnLm5ldy10b2RvJykudGhlbihmdW5jdGlvbiAoZWxlbWVudCkgewogICAgICAgICAgICAgZWxl
bWVudC5mb2N1cygpOwogICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CiAgICAgICAgIH0pOwog
ICAgIH0sCiAgICAgdGVzdHM6IFsKICAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdBZGRp
bmcnICsgbnVtYmVyT2ZJdGVtc1RvQWRkICsgJ0l0ZW1zJywgZnVuY3Rpb24gKG5ld1RvZG8sIGNv
bnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgewotICAgICAgICAgICAgdmFyIGFwcCA9IGNv
bnRlbnRXaW5kb3cuYXBwOwotICAgICAgICAgICAgdmFyIGZha2VFdmVudCA9IHt3aGljaDogYXBw
LkVOVEVSX0tFWX07CiAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bWJlck9mSXRl
bXNUb0FkZDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgbmV3VG9kby52YWx1ZSA9ICdTb21ldGhp
bmcgdG8gZG8gJyArIGk7Ci0gICAgICAgICAgICAgICAgYXBwLmNyZWF0ZS5jYWxsKG5ld1RvZG8s
IGZha2VFdmVudCk7CisgICAgICAgICAgICAgICAgbmV3VG9kby52YWx1ZSA9ICdTb21ldGhpbmcg
dG8gZG8nICsgaTsKKyAgICAgICAgICAgICAgICB0cmlnZ2VyRW50ZXIobmV3VG9kbywgJ2tleWRv
d24nKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSksCi0gICAgICAgIG5ldyBCZW5jaG1hcmtU
ZXN0U3RlcCgnQ29tcGxldGluZ0FsbEl0ZW1zJywgZnVuY3Rpb24gKG5ld1RvZG8sIGNvbnRlbnRX
aW5kb3csIGNvbnRlbnREb2N1bWVudCkgewotICAgICAgICAgICAgdmFyIGFwcCA9IGNvbnRlbnRX
aW5kb3cuYXBwOworICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0NvbXBsZXRpbmdBbGxJ
dGVtcycsIGZ1bmN0aW9uIChwYXJhbXMsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkg
ewogICAgICAgICAgICAgdmFyIGNoZWNrYm94ZXMgPSBjb250ZW50RG9jdW1lbnQucXVlcnlTZWxl
Y3RvckFsbCgnLnRvZ2dsZScpOwotICAgICAgICAgICAgdmFyICQgPSBjb250ZW50V2luZG93LiQ7
Ci0KLSAgICAgICAgICAgIGl0ZW1JbmRleFRvSWQgPSBuZXcgQXJyYXkoY2hlY2tib3hlcy5sZW5n
dGgpOwogICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGVja2JveGVzLmxlbmd0aDsg
aSsrKQotICAgICAgICAgICAgICAgIGl0ZW1JbmRleFRvSWRbaV0gPSAkKGNoZWNrYm94ZXNbaV0p
LmNsb3Nlc3QoJ2xpJykuZGF0YSgnaWQnKTsKKyAgICAgICAgICAgICAgICBjaGVja2JveGVzW2ld
LmNsaWNrKCk7CisgICAgICAgIH0pLAorICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0Rl
bGV0aW5nSXRlbXMnLCBmdW5jdGlvbiAocGFyYW1zLCBjb250ZW50V2luZG93LCBjb250ZW50RG9j
dW1lbnQpIHsKKyAgICAgICAgICAgIHZhciBkZWxldGVCdXR0b25zID0gY29udGVudERvY3VtZW50
LnF1ZXJ5U2VsZWN0b3JBbGwoJy5kZXN0cm95Jyk7CisgICAgICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGRlbGV0ZUJ1dHRvbnMubGVuZ3RoOyBpKyspCisgICAgICAgICAgICAgICAgZGVsZXRl
QnV0dG9uc1tpXS5jbGljaygpOworICAgICAgICB9KSwKKyAgICBdCit9KTsKIAotICAgICAgICAg
ICAgYXBwLmdldFRvZG8gPSBmdW5jdGlvbiAoZWxlbWVudCwgY2FsbGJhY2spIHsKLSAgICAgICAg
ICAgICAgICB2YXIgc2VsZiA9IHRoaXM7Ci0gICAgICAgICAgICAgICAgdmFyIGlkID0gaXRlbUlu
ZGV4VG9JZFt0aGlzLmN1cnJlbnRJdGVtSW5kZXhdOwotICAgICAgICAgICAgICAgICQuZWFjaCh0
aGlzLnRvZG9zLCBmdW5jdGlvbiAoaiwgdmFsKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2
YWwuaWQgPT09IGlkKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjay5hcHBseShz
ZWxmLCBhcmd1bWVudHMpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSk7CitTdWl0ZXMucHVzaCh7
CisgICAgbmFtZTogJ0VtYmVySlMtVG9kb01WQycsCisgICAgdXJsOiAndG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvZW1iZXJqcycsCisgICAgcHJlcGFyZTogZnVuY3Rpb24gKHJ1bm5lciwg
Y29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CisgICAgICAgIHJldHVybiBydW5uZXIu
d2FpdEZvckVsZW1lbnQoJyNuZXctdG9kbycpLnRoZW4oZnVuY3Rpb24gKGVsZW1lbnQpIHsKKyAg
ICAgICAgICAgIGVsZW1lbnQuZm9jdXMoKTsKKyAgICAgICAgICAgIHJldHVybiBlbGVtZW50Owor
ICAgICAgICB9KTsKKyAgICB9LAorICAgIHRlc3RzOiBbCisgICAgICAgIG5ldyBCZW5jaG1hcmtU
ZXN0U3RlcCgnQWRkaW5nJyArIG51bWJlck9mSXRlbXNUb0FkZCArICdJdGVtcycsIGZ1bmN0aW9u
IChuZXdUb2RvLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgICAg
IHZhciBhcHBWaWV3ID0gY29udGVudFdpbmRvdy5BcHA7CisgICAgICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IG51bWJlck9mSXRlbXNUb0FkZDsgaSsrKSB7CisgICAgICAgICAgICAgICAgbmV3
VG9kby52YWx1ZSA9ICdTb21ldGhpbmcgdG8gZG8nICsgaTsKKyAgICAgICAgICAgICAgICB0cmln
Z2VyRW50ZXIobmV3VG9kbywgJ2tleWRvd24nKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgfSks
CisgICAgICAgIG5ldyBCZW5jaG1hcmtUZXN0U3RlcCgnQ29tcGxldGluZ0FsbEl0ZW1zJywgZnVu
Y3Rpb24gKHBhcmFtcywgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CisgICAgICAg
ICAgICB2YXIgY2hlY2tib3hlcyA9IGNvbnRlbnREb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcu
dG9nZ2xlJyk7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoZWNrYm94ZXMubGVu
Z3RoOyBpKyspCisgICAgICAgICAgICAgICAgY2hlY2tib3hlc1tpXS5jbGljaygpOworICAgICAg
ICB9KSwKKyAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdEZWxldGluZ0l0ZW1zJywgZnVu
Y3Rpb24gKHBhcmFtcywgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CisgICAgICAg
ICAgICB2YXIgZGVsZXRlQnV0dG9ucyA9IGNvbnRlbnREb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxs
KCcuZGVzdHJveScpOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkZWxldGVCdXR0
b25zLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgICAgIGRlbGV0ZUJ1dHRvbnNbaV0uY2xpY2so
KTsKKyAgICAgICAgfSksCisgICAgXQorfSk7CiAKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgY2hlY2tib3hlcy5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgICAgIGFwcC5jdXJy
ZW50SXRlbUluZGV4ID0gaTsKLSAgICAgICAgICAgICAgICBhcHAudG9nZ2xlLmNhbGwoY2hlY2ti
b3hlc1tpXSk7CitTdWl0ZXMucHVzaCh7CisgICAgbmFtZTogJ0JhY2tib25lSlMtVG9kb01WQycs
CisgICAgdXJsOiAndG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvaW5kZXgu
aHRtbCcsCisgICAgcHJlcGFyZTogZnVuY3Rpb24gKHJ1bm5lciwgY29udGVudFdpbmRvdywgY29u
dGVudERvY3VtZW50KSB7CisgICAgY29udGVudFdpbmRvdy5CYWNrYm9uZS5zeW5jID0gZnVuY3Rp
b24gKCkge30KKyAgICAgICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVudCgnLm5ldy10b2Rv
JykudGhlbihmdW5jdGlvbiAoZWxlbWVudCkgeworICAgICAgICAgICAgZWxlbWVudC5mb2N1cygp
OworICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgICAgIH0pOworICAgIH0sCisgICAg
dGVzdHM6IFsKKyAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdBZGRpbmcnICsgbnVtYmVy
T2ZJdGVtc1RvQWRkICsgJ0l0ZW1zJywgZnVuY3Rpb24gKG5ld1RvZG8sIGNvbnRlbnRXaW5kb3cs
IGNvbnRlbnREb2N1bWVudCkgeworICAgICAgICAgICAgdmFyIGFwcFZpZXcgPSBjb250ZW50V2lu
ZG93LmFwcFZpZXc7CisgICAgICAgICAgICB2YXIgZmFrZUV2ZW50ID0ge3doaWNoOiAxM307Cisg
ICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bWJlck9mSXRlbXNUb0FkZDsgaSsrKSB7
CisgICAgICAgICAgICAgICAgbmV3VG9kby52YWx1ZSA9ICdTb21ldGhpbmcgdG8gZG8gJyArIGk7
CisgICAgICAgICAgICAgICAgdHJpZ2dlckVudGVyKG5ld1RvZG8sICdrZXlwcmVzcycpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9KSwKKyAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdD
b21wbGV0aW5nQWxsSXRlbXMnLCBmdW5jdGlvbiAobmV3VG9kbywgY29udGVudFdpbmRvdywgY29u
dGVudERvY3VtZW50KSB7CisgICAgICAgICAgICB2YXIgY2hlY2tib3hlcyA9IGNvbnRlbnREb2N1
bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudG9nZ2xlJyk7CisgICAgICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGNoZWNrYm94ZXMubGVuZ3RoOyBpKyspCisgICAgICAgICAgICAgICAgY2hlY2ti
b3hlc1tpXS5jbGljaygpOworICAgICAgICB9KSwKICAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RT
dGVwKCdEZWxldGluZ0FsbEl0ZW1zJywgZnVuY3Rpb24gKG5ld1RvZG8sIGNvbnRlbnRXaW5kb3cs
IGNvbnRlbnREb2N1bWVudCkgewotICAgICAgICAgICAgY29udGVudERvY3VtZW50LnF1ZXJ5U2Vs
ZWN0b3IoJyNjbGVhci1jb21wbGV0ZWQnKS5jbGljaygpOwotICAgICAgICAgICAgdmFyIGFwcCA9
IGNvbnRlbnRXaW5kb3cuYXBwOwogICAgICAgICAgICAgdmFyIGRlbGV0ZUJ1dHRvbnMgPSBjb250
ZW50RG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmRlc3Ryb3knKTsKLQotICAgICAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBkZWxldGVCdXR0b25zLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAg
ICAgICAgICAgYXBwLmN1cnJlbnRJdGVtSW5kZXggPSBpOwotICAgICAgICAgICAgICAgIGFwcC5k
ZXN0cm95LmNhbGwoZGVsZXRlQnV0dG9uc1tpXSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IGRlbGV0ZUJ1dHRvbnMubGVuZ3RoOyBpKyspCisgICAgICAg
ICAgICAgICAgZGVsZXRlQnV0dG9uc1tpXS5jbGljaygpOwogICAgICAgICB9KSwKICAgICBdCiB9
KTsKQEAgLTE2NCw3ICsyMzcsNiBAQCBTdWl0ZXMucHVzaCh7CiAgICAgfSwKICAgICB0ZXN0czog
WwogICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0FkZGluZycgKyBudW1iZXJPZkl0ZW1z
VG9BZGQgKyAnSXRlbXMnLCBmdW5jdGlvbiAobmV3VG9kbywgY29udGVudFdpbmRvdywgY29udGVu
dERvY3VtZW50KSB7Ci0gICAgICAgICAgICB2YXIgdG9kb212YyA9IGNvbnRlbnRXaW5kb3cudG9k
b212YzsKICAgICAgICAgICAgIHZhciBzdWJtaXRFdmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50
KCdFdmVudCcpOwogICAgICAgICAgICAgc3VibWl0RXZlbnQuaW5pdEV2ZW50KCdzdWJtaXQnLCB0
cnVlLCB0cnVlKTsKICAgICAgICAgICAgIHZhciBpbnB1dEV2ZW50ID0gZG9jdW1lbnQuY3JlYXRl
RXZlbnQoJ0V2ZW50Jyk7CkBAIC0xODksMTEgKzI2MSw0NCBAQCBTdWl0ZXMucHVzaCh7CiB9KTsK
IAogU3VpdGVzLnB1c2goewotICAgIG5hbWU6ICdSZWFjdC1Ub2RvTVZDJywKLSAgICB1cmw6ICd0
b2RvbXZjL2xhYnMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L2luZGV4Lmh0bWwnLAorICAg
IG5hbWU6ICdBbmd1bGFyMi1UeXBlU2NyaXB0LVRvZG9NVkMnLAorICAgIHVybDogJ3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvZGlzdC9pbmRleC5odG1sJywKICAgICBwcmVw
YXJlOiBmdW5jdGlvbiAocnVubmVyLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsK
LSAgICAgICAgY29udGVudFdpbmRvdy5VdGlscy5zdG9yZSA9IGZ1bmN0aW9uICgpIHt9Ci0gICAg
ICAgIHJldHVybiBydW5uZXIud2FpdEZvckVsZW1lbnQoJyNuZXctdG9kbycpLnRoZW4oZnVuY3Rp
b24gKGVsZW1lbnQpIHsKKyAgICAgICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVudCgnLm5l
dy10b2RvJykudGhlbihmdW5jdGlvbiAoZWxlbWVudCkgeworICAgICAgICAgICAgZWxlbWVudC5m
b2N1cygpOworICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgICAgIH0pOworICAgIH0s
CisgICAgdGVzdHM6IFsKKyAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdBZGRpbmcnICsg
bnVtYmVyT2ZJdGVtc1RvQWRkICsgJ0l0ZW1zJywgZnVuY3Rpb24gKG5ld1RvZG8sIGNvbnRlbnRX
aW5kb3csIGNvbnRlbnREb2N1bWVudCkgeworICAgICAgICAgICAgdmFyIGFwcFZpZXcgPSBjb250
ZW50V2luZG93LkFwcDsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtYmVyT2ZJ
dGVtc1RvQWRkOyBpKyspIHsKKyAgICAgICAgICAgICAgICBuZXdUb2RvLnZhbHVlID0gJ1NvbWV0
aGluZyB0byBkbycgKyBpOworICAgICAgICAgICAgICAgIG5ld1RvZG8uZGlzcGF0Y2hFdmVudChu
ZXcgRXZlbnQoJ2lucHV0JywgeworICAgICAgICAgICAgICAgICAgYnViYmxlczogdHJ1ZSwKKyAg
ICAgICAgICAgICAgICAgIGNhbmNlbGFibGU6IHRydWUKKyAgICAgICAgICAgICAgICB9KSk7Cisg
ICAgICAgICAgICAgICAgdHJpZ2dlckVudGVyKG5ld1RvZG8sICdrZXl1cCcpOworICAgICAgICAg
ICAgfQorICAgICAgICB9KSwKKyAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdDb21wbGV0
aW5nQWxsSXRlbXMnLCBmdW5jdGlvbiAocGFyYW1zLCBjb250ZW50V2luZG93LCBjb250ZW50RG9j
dW1lbnQpIHsKKyAgICAgICAgICAgIHZhciBjaGVja2JveGVzID0gY29udGVudERvY3VtZW50LnF1
ZXJ5U2VsZWN0b3JBbGwoJy50b2dnbGUnKTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgY2hlY2tib3hlcy5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgICAgICBjaGVja2JveGVzW2ld
LmNsaWNrKCk7CisgICAgICAgIH0pLAorICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0Rl
bGV0aW5nSXRlbXMnLCBmdW5jdGlvbiAocGFyYW1zLCBjb250ZW50V2luZG93LCBjb250ZW50RG9j
dW1lbnQpIHsKKyAgICAgICAgICAgIHZhciBkZWxldGVCdXR0b25zID0gY29udGVudERvY3VtZW50
LnF1ZXJ5U2VsZWN0b3JBbGwoJy5kZXN0cm95Jyk7CisgICAgICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGRlbGV0ZUJ1dHRvbnMubGVuZ3RoOyBpKyspCisgICAgICAgICAgICAgICAgZGVsZXRl
QnV0dG9uc1tpXS5jbGljaygpOworICAgICAgICB9KSwKKyAgICBdCit9KTsKKworU3VpdGVzLnB1
c2goeworICAgIG5hbWU6ICdWdWVKUy1Ub2RvTVZDJywKKyAgICB1cmw6ICd0b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvZGlzdC9pbmRleC5odG1sJywKKyAgICBwcmVwYXJl
OiBmdW5jdGlvbiAocnVubmVyLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAg
ICAgICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVudCgnLm5ldy10b2RvJykudGhlbihmdW5j
dGlvbiAoZWxlbWVudCkgewogICAgICAgICAgICAgZWxlbWVudC5mb2N1cygpOwogICAgICAgICAg
ICAgcmV0dXJuIGVsZW1lbnQ7CiAgICAgICAgIH0pOwpAQCAtMjAzLDExICszMDgsMTIgQEAgU3Vp
dGVzLnB1c2goewogICAgICAgICAgICAgdmFyIHRvZG9tdmMgPSBjb250ZW50V2luZG93LnRvZG9t
dmM7CiAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bWJlck9mSXRlbXNUb0FkZDsg
aSsrKSB7CiAgICAgICAgICAgICAgICAgbmV3VG9kby52YWx1ZSA9ICdTb21ldGhpbmcgdG8gZG8g
JyArIGk7Ci0KLSAgICAgICAgICAgICAgICB2YXIga2V5ZG93bkV2ZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRXZlbnQoJ0V2ZW50Jyk7Ci0gICAgICAgICAgICAgICAga2V5ZG93bkV2ZW50LmluaXRFdmVu
dCgna2V5ZG93bicsIHRydWUsIHRydWUpOwotICAgICAgICAgICAgICAgIGtleWRvd25FdmVudC53
aGljaCA9IDEzOyAvLyBWS19FTlRFUgotICAgICAgICAgICAgICAgIG5ld1RvZG8uZGlzcGF0Y2hF
dmVudChrZXlkb3duRXZlbnQpOworICAgICAgICAgICAgICAgIG5ld1RvZG8udmFsdWUgPSAnU29t
ZXRoaW5nIHRvIGRvJyArIGk7CisgICAgICAgICAgICAgICAgbmV3VG9kby5kaXNwYXRjaEV2ZW50
KG5ldyBFdmVudCgnaW5wdXQnLCB7CisgICAgICAgICAgICAgICAgICBidWJibGVzOiB0cnVlLAor
ICAgICAgICAgICAgICAgICAgY2FuY2VsYWJsZTogdHJ1ZQorICAgICAgICAgICAgICAgIH0pKTsK
KyAgICAgICAgICAgICAgICB0cmlnZ2VyRW50ZXIobmV3VG9kbywgJ2tleXVwJyk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0pLAogICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0NvbXBs
ZXRpbmdBbGxJdGVtcycsIGZ1bmN0aW9uIChuZXdUb2RvLCBjb250ZW50V2luZG93LCBjb250ZW50
RG9jdW1lbnQpIHsKQEAgLTIyNCwyNSArMzMwLDE5IEBAIFN1aXRlcy5wdXNoKHsKIH0pOwogCiBT
dWl0ZXMucHVzaCh7Ci0gICAgbmFtZTogJ0ZsaWdodEpTLVRvZG9NVkMnLAotICAgIHVybDogJ3Rv
ZG9tdmMvZGVwZW5kZW5jeS1leGFtcGxlcy9mbGlnaHQvaW5kZXguaHRtbCcsCisgICAgbmFtZTog
J2pRdWVyeS1Ub2RvTVZDJywKKyAgICB1cmw6ICd0b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9qcXVlcnkvaW5kZXguaHRtbCcsCiAgICAgcHJlcGFyZTogZnVuY3Rpb24gKHJ1bm5lciwgY29u
dGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7Ci0gICAgICAgIHJldHVybiBydW5uZXIud2Fp
dEZvckVsZW1lbnQoJyNhcHBJc1JlYWR5JykudGhlbihmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAg
ICB2YXIgbmV3VG9kbyA9IGNvbnRlbnREb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjbmV3LXRvZG8n
KTsKLSAgICAgICAgICAgIG5ld1RvZG8uZm9jdXMoKTsKLSAgICAgICAgICAgIHJldHVybiBuZXdU
b2RvOwotICAgICAgICB9KTs7CisgICAgICAgIHJldHVybiBydW5uZXIud2FpdEZvckVsZW1lbnQo
JyNuZXctdG9kbycpLnRoZW4oZnVuY3Rpb24gKGVsZW1lbnQpIHsKKyAgICAgICAgICAgIGVsZW1l
bnQuZm9jdXMoKTsKKyAgICAgICAgICAgIHJldHVybiBlbGVtZW50OworICAgICAgICB9KTsKICAg
ICB9LAogICAgIHRlc3RzOiBbCiAgICAgICAgIG5ldyBCZW5jaG1hcmtUZXN0U3RlcCgnQWRkaW5n
JyArIG51bWJlck9mSXRlbXNUb0FkZCArICdJdGVtcycsIGZ1bmN0aW9uIChuZXdUb2RvLCBjb250
ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKLSAgICAgICAgICAgIHZhciB0b2RvbXZjID0g
Y29udGVudFdpbmRvdy50b2RvbXZjOwogICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBu
dW1iZXJPZkl0ZW1zVG9BZGQ7IGkrKykgewogICAgICAgICAgICAgICAgIG5ld1RvZG8udmFsdWUg
PSAnU29tZXRoaW5nIHRvIGRvICcgKyBpOwotCi0gICAgICAgICAgICAgICAgdmFyIGtleWRvd25F
dmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdFdmVudCcpOwotICAgICAgICAgICAgICAgIGtl
eWRvd25FdmVudC5pbml0RXZlbnQoJ2tleWRvd24nLCB0cnVlLCB0cnVlKTsKLSAgICAgICAgICAg
ICAgICBrZXlkb3duRXZlbnQud2hpY2ggPSAxMzsgLy8gVktfRU5URVIKLSAgICAgICAgICAgICAg
ICBuZXdUb2RvLmRpc3BhdGNoRXZlbnQoa2V5ZG93bkV2ZW50KTsKKyAgICAgICAgICAgICAgICB0
cmlnZ2VyRW50ZXIobmV3VG9kbywgJ2tleXVwJyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0p
LAogICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0NvbXBsZXRpbmdBbGxJdGVtcycsIGZ1
bmN0aW9uIChuZXdUb2RvLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKQEAgLTI1
MSw2ICszNTEsMTM0IEBAIFN1aXRlcy5wdXNoKHsKICAgICAgICAgICAgICAgICBjaGVja2JveGVz
W2ldLmNsaWNrKCk7CiAgICAgICAgIH0pLAogICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAo
J0RlbGV0aW5nQWxsSXRlbXMnLCBmdW5jdGlvbiAobmV3VG9kbywgY29udGVudFdpbmRvdywgY29u
dGVudERvY3VtZW50KSB7CisgICAgICAgICAgICB2YXIgY2xlYXIgPSBjb250ZW50RG9jdW1lbnQu
cXVlcnlTZWxlY3RvcignI2NsZWFyLWNvbXBsZXRlZCcpOworICAgICAgICAgICAgaWYgKGNsZWFy
ICE9PSBudWxsKQorICAgICAgICAgICAgICAgIGNsZWFyLmNsaWNrKCk7CisgICAgICAgICAgICB2
YXIgZGVsZXRlQnV0dG9ucyA9IGNvbnRlbnREb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZGVz
dHJveScpOworCisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRlbGV0ZUJ1dHRvbnMu
bGVuZ3RoOyBpKyspCisgICAgICAgICAgICAgICAgZGVsZXRlQnV0dG9uc1tpXS5jbGljaygpOwor
ICAgICAgICB9KSwKKyAgICBdCit9KQorCitTdWl0ZXMucHVzaCh7CisgICAgbmFtZTogJ1ByZWFj
dC1Ub2RvTVZDJywKKyAgICB1cmw6ICd0b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9wcmVh
Y3QvZGlzdC9pbmRleC5odG1sJywKKyAgICBwcmVwYXJlOiBmdW5jdGlvbiAocnVubmVyLCBjb250
ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgcmV0dXJuIHJ1bm5lci53YWl0
Rm9yRWxlbWVudCgnLm5ldy10b2RvJykudGhlbihmdW5jdGlvbiAoZWxlbWVudCkgeworICAgICAg
ICAgICAgZWxlbWVudC5mb2N1cygpOworICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAg
ICAgIH0pOworICAgIH0sCisgICAgdGVzdHM6IFsKKyAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RT
dGVwKCdBZGRpbmcnICsgbnVtYmVyT2ZJdGVtc1RvQWRkICsgJ0l0ZW1zJywgZnVuY3Rpb24gKG5l
d1RvZG8sIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgeworICAgICAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBudW1iZXJPZkl0ZW1zVG9BZGQ7IGkrKykgeworICAgICAgICAgICAg
ICAgIG5ld1RvZG8udmFsdWUgPSAnU29tZXRoaW5nIHRvIGRvJyArIGk7CisgICAgICAgICAgICAg
ICAgdHJpZ2dlckVudGVyKG5ld1RvZG8sICdrZXlkb3duJyk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0pLAorICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0NvbXBsZXRpbmdBbGxJdGVt
cycsIGZ1bmN0aW9uIChwYXJhbXMsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgewor
ICAgICAgICAgICAgdmFyIGNoZWNrYm94ZXMgPSBjb250ZW50RG9jdW1lbnQucXVlcnlTZWxlY3Rv
ckFsbCgnLnRvZ2dsZScpOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGVja2Jv
eGVzLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgICAgIGNoZWNrYm94ZXNbaV0uY2xpY2soKTsK
KyAgICAgICAgfSksCisgICAgICAgIG5ldyBCZW5jaG1hcmtUZXN0U3RlcCgnRGVsZXRpbmdJdGVt
cycsIGZ1bmN0aW9uIChwYXJhbXMsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgewor
ICAgICAgICAgICAgdmFyIGRlbGV0ZUJ1dHRvbnMgPSBjb250ZW50RG9jdW1lbnQucXVlcnlTZWxl
Y3RvckFsbCgnLmRlc3Ryb3knKTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGVs
ZXRlQnV0dG9ucy5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgICAgICBkZWxldGVCdXR0b25zW2ld
LmNsaWNrKCk7CisgICAgICAgIH0pLAorICAgIF0KK30pOworCitTdWl0ZXMucHVzaCh7CisgICAg
bmFtZTogJ0luZmVybm8tVG9kb01WQycsCisgICAgdXJsOiAndG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvaW5mZXJuby9pbmRleC5odG1sJywKKyAgICBwcmVwYXJlOiBmdW5jdGlvbiAocnVu
bmVyLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgcmV0dXJuIHJ1
bm5lci53YWl0Rm9yRWxlbWVudCgnLm5ldy10b2RvJykudGhlbihmdW5jdGlvbiAoZWxlbWVudCkg
eworICAgICAgICAgICAgZWxlbWVudC5mb2N1cygpOworICAgICAgICAgICAgcmV0dXJuIGVsZW1l
bnQ7CisgICAgICAgIH0pOworICAgIH0sCisgICAgdGVzdHM6IFsKKyAgICAgICAgbmV3IEJlbmNo
bWFya1Rlc3RTdGVwKCdBZGRpbmcnICsgbnVtYmVyT2ZJdGVtc1RvQWRkICsgJ0l0ZW1zJywgZnVu
Y3Rpb24gKG5ld1RvZG8sIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgeworICAgICAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1iZXJPZkl0ZW1zVG9BZGQ7IGkrKykgeworICAg
ICAgICAgICAgICAgIG5ld1RvZG8udmFsdWUgPSAnU29tZXRoaW5nIHRvIGRvJyArIGk7CisgICAg
ICAgICAgICAgICAgbmV3VG9kby5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnY2hhbmdlJywgewor
ICAgICAgICAgICAgICAgICAgYnViYmxlczogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgIGNhbmNl
bGFibGU6IHRydWUKKyAgICAgICAgICAgICAgICB9KSk7CisgICAgICAgICAgICAgICAgdHJpZ2dl
ckVudGVyKG5ld1RvZG8sICdrZXlkb3duJyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pLAor
ICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0NvbXBsZXRpbmdBbGxJdGVtcycsIGZ1bmN0
aW9uIChwYXJhbXMsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgeworICAgICAgICAg
ICAgdmFyIGNoZWNrYm94ZXMgPSBjb250ZW50RG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRv
Z2dsZScpOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGVja2JveGVzLmxlbmd0
aDsgaSsrKQorICAgICAgICAgICAgICAgIGNoZWNrYm94ZXNbaV0uY2xpY2soKTsKKyAgICAgICAg
fSksCisgICAgICAgIG5ldyBCZW5jaG1hcmtUZXN0U3RlcCgnRGVsZXRpbmdJdGVtcycsIGZ1bmN0
aW9uIChwYXJhbXMsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgeworICAgICAgICAg
ICAgdmFyIGRlbGV0ZUJ1dHRvbnMgPSBjb250ZW50RG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgn
LmRlc3Ryb3knKTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGVsZXRlQnV0dG9u
cy5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgICAgICBkZWxldGVCdXR0b25zW2ldLmNsaWNrKCk7
CisgICAgICAgIH0pLAorICAgIF0KK30pOworCitTdWl0ZXMucHVzaCh7CisgICAgbmFtZTogJ0Vs
bS1Ub2RvTVZDJywKKyAgICB1cmw6ICd0b2RvbXZjL2Z1bmN0aW9uYWwtcHJvZy1leGFtcGxlcy9l
bG0vaW5kZXguaHRtbCcsCisgICAgcHJlcGFyZTogZnVuY3Rpb24gKHJ1bm5lciwgY29udGVudFdp
bmRvdywgY29udGVudERvY3VtZW50KSB7CisgICAgICAgIHJldHVybiBydW5uZXIud2FpdEZvckVs
ZW1lbnQoJy5uZXctdG9kbycpLnRoZW4oZnVuY3Rpb24gKGVsZW1lbnQpIHsKKyAgICAgICAgICAg
IGVsZW1lbnQuZm9jdXMoKTsKKyAgICAgICAgICAgIHJldHVybiBlbGVtZW50OworICAgICAgICB9
KTsKKyAgICB9LAorICAgIHRlc3RzOiBbCisgICAgICAgIG5ldyBCZW5jaG1hcmtUZXN0U3RlcCgn
QWRkaW5nJyArIG51bWJlck9mSXRlbXNUb0FkZCArICdJdGVtcycsIGZ1bmN0aW9uIChuZXdUb2Rv
LCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgbnVtYmVyT2ZJdGVtc1RvQWRkOyBpKyspIHsKKyAgICAgICAgICAgICAgICBu
ZXdUb2RvLnZhbHVlID0gJ1NvbWV0aGluZyB0byBkbycgKyBpOworICAgICAgICAgICAgICAgIG5l
d1RvZG8uZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2lucHV0JywgeworICAgICAgICAgICAgICAg
ICAgYnViYmxlczogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgIGNhbmNlbGFibGU6IHRydWUKKyAg
ICAgICAgICAgICAgICB9KSk7CisgICAgICAgICAgICAgICAgdHJpZ2dlckVudGVyKG5ld1RvZG8s
ICdrZXlkb3duJyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pLAorICAgICAgICBuZXcgQmVu
Y2htYXJrVGVzdFN0ZXAoJ0NvbXBsZXRpbmdBbGxJdGVtcycsIGZ1bmN0aW9uIChwYXJhbXMsIGNv
bnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgeworICAgICAgICAgICAgdmFyIGNoZWNrYm94
ZXMgPSBjb250ZW50RG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRvZ2dsZScpOworICAgICAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGVja2JveGVzLmxlbmd0aDsgaSsrKQorICAgICAg
ICAgICAgICAgIGNoZWNrYm94ZXNbaV0uY2xpY2soKTsKKyAgICAgICAgfSksCisgICAgICAgIG5l
dyBCZW5jaG1hcmtUZXN0U3RlcCgnRGVsZXRpbmdJdGVtcycsIGZ1bmN0aW9uIChwYXJhbXMsIGNv
bnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgeworICAgICAgICAgICAgdmFyIGRlbGV0ZUJ1
dHRvbnMgPSBjb250ZW50RG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmRlc3Ryb3knKTsKKyAg
ICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGVsZXRlQnV0dG9ucy5sZW5ndGg7IGkrKykK
KyAgICAgICAgICAgICAgICBkZWxldGVCdXR0b25zW2ldLmNsaWNrKCk7CisgICAgICAgIH0pLAor
ICAgIF0KK30pOworCitTdWl0ZXMucHVzaCh7CisgICAgbmFtZTogJ0ZsaWdodC1Ub2RvTVZDJywK
KyAgICB1cmw6ICd0b2RvbXZjL2RlcGVuZGVuY3ktZXhhbXBsZXMvZmxpZ2h0L2ZsaWdodC9pbmRl
eC5odG1sJywKKyAgICBwcmVwYXJlOiBmdW5jdGlvbiAocnVubmVyLCBjb250ZW50V2luZG93LCBj
b250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVudCgn
I25ldy10b2RvJykudGhlbihmdW5jdGlvbiAoZWxlbWVudCkgeworICAgICAgICAgICAgZWxlbWVu
dC5mb2N1cygpOworICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgICAgIH0pOworICAg
IH0sCisgICAgdGVzdHM6IFsKKyAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdBZGRpbmcn
ICsgbnVtYmVyT2ZJdGVtc1RvQWRkICsgJ0l0ZW1zJywgZnVuY3Rpb24gKG5ld1RvZG8sIGNvbnRl
bnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgeworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBudW1iZXJPZkl0ZW1zVG9BZGQ7IGkrKykgeworICAgICAgICAgICAgICAgIG5ld1RvZG8u
dmFsdWUgPSAnU29tZXRoaW5nIHRvIGRvJyArIGk7CisgICAgICAgICAgICAgICAgdHJpZ2dlckVu
dGVyKG5ld1RvZG8sICdrZXlkb3duJyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pLAorICAg
ICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0NvbXBsZXRpbmdBbGxJdGVtcycsIGZ1bmN0aW9u
IChwYXJhbXMsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgeworICAgICAgICAgICAg
dmFyIGNoZWNrYm94ZXMgPSBjb250ZW50RG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRvZ2ds
ZScpOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGVja2JveGVzLmxlbmd0aDsg
aSsrKQorICAgICAgICAgICAgICAgIGNoZWNrYm94ZXNbaV0uY2xpY2soKTsKKyAgICAgICAgfSks
CisgICAgICAgIG5ldyBCZW5jaG1hcmtUZXN0U3RlcCgnRGVsZXRpbmdJdGVtcycsIGZ1bmN0aW9u
IChwYXJhbXMsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgewogICAgICAgICAgICAg
dmFyIGRlbGV0ZUJ1dHRvbnMgPSBjb250ZW50RG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmRl
c3Ryb3knKTsKICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGVsZXRlQnV0dG9ucy5s
ZW5ndGg7IGkrKykKICAgICAgICAgICAgICAgICBkZWxldGVCdXR0b25zW2ldLmNsaWNrKCk7CmRp
ZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL2Rpc3QvaW5kZXguaHRtbCBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2FuZ3VsYXIvZGlzdC9pbmRleC5odG1sCmluZGV4IDc2YmRjODZjZjhkZDRkNWVhMDQ4OTUx
YzgyMWI0Y2ExZDZmZWRlN2QuLjNhMWE5ZTI4N2Q2Y2EwY2Y2YzE4OWYyZmE5NzkyNTk4YTY4ZmQz
MmUgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvZGlzdC9pbmRleC5odG1sCisrKyBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2FuZ3VsYXIvZGlzdC9pbmRleC5odG1sCkBAIC05LDcgKzksNyBAQAogICA8
bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3gtaWNvbiIgaHJlZj0iZmF2aWNvbi5pY28iPgog
ICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9ImFzc2V0cy9jc3MvdG9kb212Yy1jb21tb24u
Y3NzIj4KICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJhc3NldHMvY3NzL3RvZG9tdmMt
YXBwLmNzcyI+Ci08bGluayBocmVmPSJzdHlsZXMuZDQxZDhjZDk4ZjAwYjIwNGU5ODAuYnVuZGxl
LmNzcyIgcmVsPSJzdHlsZXNoZWV0Ii8+PC9oZWFkPgorPC9oZWFkPgogPGJvZHk+CiAgIDxhcHAt
cm9vdD5Mb2FkaW5nLi4uPC9hcHAtcm9vdD4KICAgPCEtLSBDcmVkaXRzOiBBZGR5IE9zbWFuaSAt
LT4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvYXNzZXRzL3RvZG9tdmMuanMgYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9lbWJlcmpzL2Fzc2V0cy90b2RvbXZjLmpzCmluZGV4IDYxOWEwMDRiMGZjZmRm
ODI3NTNkMjQ1MGI4YmZjMWJhYmE2NWVhYTYuLjdkNGRmYjM2YzcxYWQ0NmUwZWQ0YjFkNGE1MmQ3
ZmU3ZWI2MmUwMDQgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvYXNzZXRzL3RvZG9t
dmMuanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9hc3NldHMvdG9kb212Yy5qcwpAQCAtMzYz
LDE5ICszNjMsMTUgQEAgZGVmaW5lKCd0b2RvbXZjL3NlcnZpY2VzL21lbW9yeScsIFsnZXhwb3J0
cyddLCBmdW5jdGlvbiAoZXhwb3J0cykgewogICAgICAgbG9jYWxTdG9yYWdlTWVtb3J5Lmxlbmd0
aCA9IDA7CiAgICAgfTsKIAotICAgIGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpIHsK
LSAgICAgIG1vZHVsZS5leHBvcnRzID0gbG9jYWxTdG9yYWdlTWVtb3J5OwotICAgIH0gZWxzZSB7
Ci0gICAgICByb290LmxvY2FsU3RvcmFnZU1lbW9yeSA9IGxvY2FsU3RvcmFnZU1lbW9yeTsKLSAg
ICB9Ci0gIH0pKHRoaXMpOworICAgIHJvb3QubG9jYWxTdG9yYWdlTWVtb3J5ID0gbG9jYWxTdG9y
YWdlTWVtb3J5OworICB9KSh3aW5kb3cpOwogfSk7CiBkZWZpbmUoJ3RvZG9tdmMvc2VydmljZXMv
cmVwbycsIFsnZXhwb3J0cycsICdlbWJlcicsICd0b2RvbXZjL3NlcnZpY2VzL21lbW9yeSddLCBm
dW5jdGlvbiAoZXhwb3J0cywgX2VtYmVyLCBfdG9kb212Y1NlcnZpY2VzTWVtb3J5KSB7CiAgICAg
ZXhwb3J0c1snZGVmYXVsdCddID0gX2VtYmVyWydkZWZhdWx0J10uU2VydmljZS5leHRlbmQoewog
ICAgICAgICBsYXN0SWQ6IDAsCiAgICAgICAgIGRhdGE6IG51bGwsCiAgICAgICAgIGZpbmRBbGw6
IGZ1bmN0aW9uIGZpbmRBbGwoKSB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXQoJ2RhdGEn
KSB8fCB0aGlzLnNldCgnZGF0YScsIEpTT04ucGFyc2UoX3RvZG9tdmNTZXJ2aWNlc01lbW9yeS5n
ZXRJdGVtKCd0b2RvcycpIHx8ICdbXScpKTsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLmdldCgn
ZGF0YScpIHx8IHRoaXMuc2V0KCdkYXRhJywgSlNPTi5wYXJzZSh3aW5kb3cubG9jYWxTdG9yYWdl
TWVtb3J5LmdldEl0ZW0oJ3RvZG9zJykgfHwgJ1tdJykpOwogICAgICAgICB9LAogCiAgICAgICAg
IGFkZDogZnVuY3Rpb24gYWRkKGF0dHJzKSB7CkBAIC0zOTEsNyArMzg3LDcgQEAgZGVmaW5lKCd0
b2RvbXZjL3NlcnZpY2VzL3JlcG8nLCBbJ2V4cG9ydHMnLCAnZW1iZXInLCAndG9kb212Yy9zZXJ2
aWNlcy9tZW1vcnknXSwKICAgICAgICAgfSwKIAogICAgICAgICBwZXJzaXN0OiBmdW5jdGlvbiBw
ZXJzaXN0KCkgewotICAgICAgICAgICAgX3RvZG9tdmNTZXJ2aWNlc01lbW9yeS5zZXRJdGVtKCd0
b2RvcycsIEpTT04uc3RyaW5naWZ5KHRoaXMuZ2V0KCdkYXRhJykpKTsKKyAgICAgICAgICAgIHdp
bmRvdy5sb2NhbFN0b3JhZ2VNZW1vcnkuc2V0SXRlbSgndG9kb3MnLCBKU09OLnN0cmluZ2lmeSh0
aGlzLmdldCgnZGF0YScpKSk7CiAgICAgICAgIH0KICAgICB9KTsKIH0pOwpAQCAtMTI1Nyw3ICsx
MjUzLDcgQEAgY2F0Y2goZXJyKSB7CiAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovCiAKIGlmICgh
cnVubmluZ1Rlc3RzKSB7Ci0gIHJlcXVpcmUoInRvZG9tdmMvYXBwIilbImRlZmF1bHQiXS5jcmVh
dGUoeyJuYW1lIjoidG9kb212YyIsInZlcnNpb24iOiIwLjAuMCs1ZGJjNWZiOSJ9KTsKKyAgcmVx
dWlyZSgidG9kb212Yy9hcHAiKVsiZGVmYXVsdCJdLmNyZWF0ZSh7Im5hbWUiOiJ0b2RvbXZjIiwi
dmVyc2lvbiI6IjAuMC4wKyJ9KTsKIH0KIAogLyoganNoaW50IGlnbm9yZTplbmQgKi8KZGlmZiAt
LWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvaW5kZXguaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVy
anMvaW5kZXguaHRtbAppbmRleCA3ZTQ4YzE5OTI3ZDUxY2U0OGU4MzFhN2VlNWYwMTQzZjY2NjUw
NjRhLi43ODFlYTYzYTJlNmMwZDdkOTNiNWJiM2Q0NTc2YWNiMGM4MzI5MTgzIDEwMDY0NAotLS0g
YS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9lbWJlcmpzL2luZGV4Lmh0bWwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJq
cy9pbmRleC5odG1sCkBAIC02LDIxICs2LDIwIEBACiAgICAgPHRpdGxlPlRvZG9tdmM8L3RpdGxl
PgogICAgIDxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSIiPgogICAgIDxtZXRhIG5h
bWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9
MSI+Ci0gICAgPGJhc2UgaHJlZj0iL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMiIC8+CisgICAgPGJhc2Ug
aHJlZj0iL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9lbWJlcmpzLyIgLz4KICAgICAKLTxtZXRhIG5hbWU9InRvZG9tdmMvY29uZmlnL2Vudmlyb25t
ZW50IiBjb250ZW50PSIlN0IlMjJtb2R1bGVQcmVmaXglMjIlM0ElMjJ0b2RvbXZjJTIyJTJDJTIy
ZW52aXJvbm1lbnQlMjIlM0ElMjJkZXZlbG9wbWVudCUyMiUyQyUyMmJhc2VVUkwlMjIlM0FudWxs
JTJDJTIybG9jYXRpb25UeXBlJTIyJTNBJTIyYXV0byUyMiUyQyUyMkVtYmVyRU5WJTIyJTNBJTdC
JTIyRkVBVFVSRVMlMjIlM0ElN0IlN0QlN0QlMkMlMjJBUFAlMjIlM0ElN0IlMjJuYW1lJTIyJTNB
JTIydG9kb212YyUyMiUyQyUyMnZlcnNpb24lMjIlM0ElMjIwLjAuMCs1ZGJjNWZiOSUyMiU3RCUy
QyUyMmV4cG9ydEFwcGxpY2F0aW9uR2xvYmFsJTIyJTNBdHJ1ZSU3RCIgLz4KKzxtZXRhIG5hbWU9
InRvZG9tdmMvY29uZmlnL2Vudmlyb25tZW50IiBjb250ZW50PSIlN0IlMjJtb2R1bGVQcmVmaXgl
MjIlM0ElMjJ0b2RvbXZjJTIyJTJDJTIyZW52aXJvbm1lbnQlMjIlM0ElMjJkZXZlbG9wbWVudCUy
MiUyQyUyMmJhc2VVUkwlMjIlM0FudWxsJTJDJTIybG9jYXRpb25UeXBlJTIyJTNBJTIyYXV0byUy
MiUyQyUyMkVtYmVyRU5WJTIyJTNBJTdCJTIyRkVBVFVSRVMlMjIlM0ElN0IlN0QlN0QlMkMlMjJB
UFAlMjIlM0ElN0IlMjJuYW1lJTIyJTNBJTIydG9kb212YyUyMiUyQyUyMnZlcnNpb24lMjIlM0El
MjIwLjAuMCslMjIlN0QlMkMlMjJleHBvcnRBcHBsaWNhdGlvbkdsb2JhbCUyMiUzQXRydWUlN0Qi
IC8+CiAKLSAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJl
cmpzL2Fzc2V0cy92ZW5kb3IuY3NzIj4KLSAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9lbWJlcmpzL2Fzc2V0cy90b2RvbXZjLmNzcyI+CisgICAgPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSJhc3NldHMvdmVuZG9yLmNzcyI+CiAKICAgICAKICAgPC9oZWFk
PgogICA8Ym9keT4KICAgICAKIAotICAgIDxzY3JpcHQgc3JjPSIvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJq
cy9hc3NldHMvdmVuZG9yLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2VtYmVyanMvYXNzZXRzL3RvZG9tdmMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3Jj
PSJhc3NldHMvdmVuZG9yLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iYXNzZXRzL3Rv
ZG9tdmMuanMiPjwvc2NyaXB0PgogCiAgICAgCiAgIDwvYm9keT4KLTwvaHRtbD4KKzwvaHRtbD4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJl
cmpzL3NvdXJjZS9hcHAvc2VydmljZXMvbWVtb3J5LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9z
b3VyY2UvYXBwL3NlcnZpY2VzL21lbW9yeS5qcwppbmRleCA0YjlkNWFmOWQ2ZDFkOGQ1OWMwY2Ri
MjY4OGJmZWMyYWRhODJmM2MyLi43NGM1Y2RmMTlmZDlmZGIyNmE5MGYwOWEzMDFkNDNkYmQzNTI3
ZDYxIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS9hcHAvc2VydmljZXMv
bWVtb3J5LmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNlL2FwcC9zZXJ2aWNlcy9t
ZW1vcnkuanMKQEAgLTc0LDkgKzc0LDUgQEAKICAgICBsb2NhbFN0b3JhZ2VNZW1vcnkubGVuZ3Ro
ID0gMDsKICAgfTsKIAotICBpZiAodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKSB7Ci0gICAg
bW9kdWxlLmV4cG9ydHMgPSBsb2NhbFN0b3JhZ2VNZW1vcnk7Ci0gIH0gZWxzZSB7CiAgICAgcm9v
dC5sb2NhbFN0b3JhZ2VNZW1vcnkgPSBsb2NhbFN0b3JhZ2VNZW1vcnk7Ci0gIH0KLX0pKHRoaXMp
OworfSkod2luZG93KTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNlL2Fw
cC9zZXJ2aWNlcy9yZXBvLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvYXBwL3NlcnZp
Y2VzL3JlcG8uanMKaW5kZXggMDE0N2ZmM2VmYzdlOGFhZWYyN2I3MTAwNTA1YzAxYWQxMWY5YWNk
MS4uY2ZmYTM4NThmZDc3YmJiYTVjNDM1ZWE1YzljODg5OGFkMTc3M2I4YSAxMDA2NDQKLS0tIGEv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvYXBwL3NlcnZpY2VzL3JlcG8uanMKKysrIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvYXBwL3NlcnZpY2VzL3JlcG8uanMKQEAgLTEsMTIgKzEs
MTIgQEAKIGltcG9ydCBFbWJlciBmcm9tICdlbWJlcic7Ci1pbXBvcnQgKiBhcyBsb2NhbFN0b3Jh
Z2VNZW1vcnkgZnJvbSAnLi9tZW1vcnknOworaW1wb3J0IGxvY2FsU3RvcmFnZU1lbW9yeSBmcm9t
ICcuL21lbW9yeSc7CiAKIGV4cG9ydCBkZWZhdWx0IEVtYmVyLlNlcnZpY2UuZXh0ZW5kKHsKICAg
ICBsYXN0SWQ6IDAsCiAgICAgZGF0YTogbnVsbCwKICAgICBmaW5kQWxsKCkgewogICAgICAgICBy
ZXR1cm4gdGhpcy5nZXQoJ2RhdGEnKSB8fAotICAgICAgICAgICAgdGhpcy5zZXQoJ2RhdGEnLCBK
U09OLnBhcnNlKGxvY2FsU3RvcmFnZU1lbW9yeS5nZXRJdGVtKCd0b2RvcycpIHx8ICdbXScpKTsK
KyAgICAgICAgICAgIHRoaXMuc2V0KCdkYXRhJywgSlNPTi5wYXJzZSh3aW5kb3cubG9jYWxTdG9y
YWdlTWVtb3J5LmdldEl0ZW0oJ3RvZG9zJykgfHwgJ1tdJykpOwogICAgIH0sCiAKICAgICBhZGQo
YXR0cnMpIHsKQEAgLTIyLDYgKzIyLDYgQEAgZXhwb3J0IGRlZmF1bHQgRW1iZXIuU2VydmljZS5l
eHRlbmQoewogICAgIH0sCiAKICAgICBwZXJzaXN0KCkgewotICAgICAgICBsb2NhbFN0b3JhZ2VN
ZW1vcnkuc2V0SXRlbSgndG9kb3MnLCBKU09OLnN0cmluZ2lmeSh0aGlzLmdldCgnZGF0YScpKSk7
CisgICAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2VNZW1vcnkuc2V0SXRlbSgndG9kb3MnLCBKU09O
LnN0cmluZ2lmeSh0aGlzLmdldCgnZGF0YScpKSk7CiAgICAgfQogfSk7CmRpZmYgLS1naXQgYS9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9lbWJlcmpzL3Rlc3RzL2luZGV4Lmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpz
L3Rlc3RzL2luZGV4Lmh0bWwKaW5kZXggZTJhMjdjMTQ5YjZkZTA3YzY5MzMxMDk4NDI1ZmRkOGQ1
ZDdhMmEwZS4uMmFiMjE4ZTdhOTU0M2VmMjBhY2Q0YTNlNzZlZTVhNTcwNjM2MzUxMyAxMDA2NDQK
LS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy90ZXN0cy9pbmRleC5odG1sCisrKyBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2VtYmVyanMvdGVzdHMvaW5kZXguaHRtbApAQCAtOCw3ICs4LDcgQEAKICAgICA8bWV0YSBu
YW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxl
PTEiPgogCiAgICAgPGJhc2UgaHJlZj0iLyIgLz4KLTxtZXRhIG5hbWU9InRvZG9tdmMvY29uZmln
L2Vudmlyb25tZW50IiBjb250ZW50PSIlN0IlMjJtb2R1bGVQcmVmaXglMjIlM0ElMjJ0b2RvbXZj
JTIyJTJDJTIyZW52aXJvbm1lbnQlMjIlM0ElMjJ0ZXN0JTIyJTJDJTIyYmFzZVVSTCUyMiUzQSUy
Mi8lMjIlMkMlMjJsb2NhdGlvblR5cGUlMjIlM0ElMjJub25lJTIyJTJDJTIyRW1iZXJFTlYlMjIl
M0ElN0IlMjJGRUFUVVJFUyUyMiUzQSU3QiU3RCU3RCUyQyUyMkFQUCUyMiUzQSU3QiUyMkxPR19B
Q1RJVkVfR0VORVJBVElPTiUyMiUzQWZhbHNlJTJDJTIyTE9HX1ZJRVdfTE9PS1VQUyUyMiUzQWZh
bHNlJTJDJTIycm9vdEVsZW1lbnQlMjIlM0ElMjIlMjNlbWJlci10ZXN0aW5nJTIyJTJDJTIybmFt
ZSUyMiUzQSUyMnRvZG9tdmMlMjIlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyMC4wLjArNWRiYzVmYjkl
MjIlN0QlMkMlMjJleHBvcnRBcHBsaWNhdGlvbkdsb2JhbCUyMiUzQXRydWUlN0QiIC8+Cis8bWV0
YSBuYW1lPSJ0b2RvbXZjL2NvbmZpZy9lbnZpcm9ubWVudCIgY29udGVudD0iJTdCJTIybW9kdWxl
UHJlZml4JTIyJTNBJTIydG9kb212YyUyMiUyQyUyMmVudmlyb25tZW50JTIyJTNBJTIydGVzdCUy
MiUyQyUyMmJhc2VVUkwlMjIlM0ElMjIvJTIyJTJDJTIybG9jYXRpb25UeXBlJTIyJTNBJTIybm9u
ZSUyMiUyQyUyMkVtYmVyRU5WJTIyJTNBJTdCJTIyRkVBVFVSRVMlMjIlM0ElN0IlN0QlN0QlMkMl
MjJBUFAlMjIlM0ElN0IlMjJMT0dfQUNUSVZFX0dFTkVSQVRJT04lMjIlM0FmYWxzZSUyQyUyMkxP
R19WSUVXX0xPT0tVUFMlMjIlM0FmYWxzZSUyQyUyMnJvb3RFbGVtZW50JTIyJTNBJTIyJTIzZW1i
ZXItdGVzdGluZyUyMiUyQyUyMm5hbWUlMjIlM0ElMjJ0b2RvbXZjJTIyJTJDJTIydmVyc2lvbiUy
MiUzQSUyMjAuMC4wKyUyMiU3RCUyQyUyMmV4cG9ydEFwcGxpY2F0aW9uR2xvYmFsJTIyJTNBdHJ1
ZSU3RCIgLz4KICAgICAKIAogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iYXNzZXRz
L3ZlbmRvci5jc3MiPgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L2luZGV4Lmh0bWwg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9qcXVlcnkvaW5kZXguaHRtbAppbmRleCA0MTRhYzU4ZjYxYWJjMmI3MjJk
YjUzZmVlY2U3ZTAzZTUyZmQzMzQ0Li4xY2Y4MDNlMTQyYTEzMGU0Y2NmZjFjYWJiODEyN2M0N2M3
MDZkMGVjIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvaW5kZXguaHRtbAorKysgYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9qcXVlcnkvaW5kZXguaHRtbApAQCAtNTUsNyArNTUsNyBAQAogICAgICAgICA8
IS0tIDxzY3JpcHQgc3JjPSJub2RlX21vZHVsZXMvdG9kb212Yy1jb21tb24vYmFzZS5qcyI+PC9z
Y3JpcHQ+IC0tPgogICAgICAgICA8c2NyaXB0IHNyYz0ibm9kZV9tb2R1bGVzL2pxdWVyeS9kaXN0
L2pxdWVyeS5qcyI+PC9zY3JpcHQ+CiAgICAgICAgIDxzY3JpcHQgc3JjPSJub2RlX21vZHVsZXMv
aGFuZGxlYmFycy9kaXN0L2hhbmRsZWJhcnMuanMiPjwvc2NyaXB0PgotICAgICAgICA8c2NyaXB0
IHNyYz0ibm9kZV9tb2R1bGVzL2RpcmVjdG9yL2J1aWxkL2RpcmVjdG9yLmpzIj48L3NjcmlwdD4K
KyAgICAgICAgPHNjcmlwdCBzcmM9Im5vZGVfbW9kdWxlcy9kaXJlY3Rvci9kaXN0L2RpcmVjdG9y
LmpzIj48L3NjcmlwdD4KICAgICAgICAgPHNjcmlwdCBzcmM9ImpzL2FwcC5qcyI+PC9zY3JpcHQ+
CiAgICAgPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25v
ZGVfbW9kdWxlcy9kaXJlY3Rvci9MSUNFTlNFIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9k
dWxlcy9kaXJlY3Rvci9MSUNFTlNFCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhhNDk4MTA4NTAxOWY5MTdjMTIzNzY5
YTBjMjdjZDg3MGUzNWE3ODQKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkv
bm9kZV9tb2R1bGVzL2RpcmVjdG9yL0xJQ0VOU0UKQEAgLTAsMCArMSwxOSBAQAorQ29weXJpZ2h0
IChjKSAyMDExIENoYXJsaWUgUm9iYmlucywgUGFvbG8gRnJhZ29tZW5pLCAmIHRoZSBDb250cmli
dXRvcnMuCisKK1Blcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0
byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKK29mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29j
aWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCitpbiB0
aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRh
dGlvbiB0aGUgcmlnaHRzCit0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRp
c3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCitjb3BpZXMgb2YgdGhlIFNvZnR3YXJl
LCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKK2Z1cm5pc2hl
ZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisKK1RoZSBh
Ym92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJl
IGluY2x1ZGVkIGluCithbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBT
b2Z0d2FyZS4KKworVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FS
UkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKK0lNUExJRUQsIElOQ0xVRElORyBCVVQgTk9U
IExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFCitBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5Z
IENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCitMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9O
IE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAorT1VUIE9GIE9S
IElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFM
SU5HUyBJTgorVEhFIFNPRlRXQVJFLgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25v
ZGVfbW9kdWxlcy9kaXJlY3Rvci9ib3dlci5qc29uIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVf
bW9kdWxlcy9kaXJlY3Rvci9ib3dlci5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY5MzliYjQ3MGVkNjRkYjEx
MWFhYThjNjMzZDIzMmZhOWViZmNmMDQKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9q
cXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL2Jvd2VyLmpzb24KQEAgLTAsMCArMSw5IEBACit7
CisgICJuYW1lIjogImRpcmVjdG9yIiwKKyAgInZlcnNpb24iOiAiMS4yLjciLAorICAiZGVwZW5k
ZW5jaWVzIjoge30sCisgICJtYWluIjogImJ1aWxkL2RpcmVjdG9yLmpzIiwKKyAgInNjcmlwdHMi
OiBbCisgICAgImJ1aWxkL2RpcmVjdG9yLmpzIgorICBdCit9CmRpZmYgLS1naXQgYS9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL2Rpc3QvZGlyZWN0b3IuanMgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL2Rpc3QvZGlyZWN0b3IuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTAzODg3ODcyMzViNzFjMGY1Y2I5NjdlNzk1YzJjNjY5YTU2ZjM2OQotLS0gL2Rl
di9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvZGlz
dC9kaXJlY3Rvci5qcwpAQCAtMCwwICsxLDcyNSBAQAorCisKKy8vCisvLyBHZW5lcmF0ZWQgb24g
VHVlIERlYyAxNiAyMDE0IDEyOjEzOjQ3IEdNVCswMTAwIChDRVQpIGJ5IENoYXJsaWUgUm9iYmlu
cywgUGFvbG8gRnJhZ29tZW5pICYgdGhlIENvbnRyaWJ1dG9ycyAoVXNpbmcgQ29kZXN1cmdlb24p
LgorLy8gVmVyc2lvbiAxLjIuNgorLy8KKworKGZ1bmN0aW9uIChleHBvcnRzKSB7CisKKy8qCisg
KiBicm93c2VyLmpzOiBCcm93c2VyIHNwZWNpZmljIGZ1bmN0aW9uYWxpdHkgZm9yIGRpcmVjdG9y
LgorICoKKyAqIChDKSAyMDExLCBDaGFybGllIFJvYmJpbnMsIFBhb2xvIEZyYWdvbWVuaSwgJiB0
aGUgQ29udHJpYnV0b3JzLgorICogTUlUIExJQ0VOU0UKKyAqCisgKi8KKwordmFyIGRsb2MgPSBk
b2N1bWVudC5sb2NhdGlvbjsKKworZnVuY3Rpb24gZGxvY0hhc2hFbXB0eSgpIHsKKyAgLy8gTm9u
LUlFIGJyb3dzZXJzIHJldHVybiAnJyB3aGVuIHRoZSBhZGRyZXNzIGJhciBzaG93cyAnIyc7IERp
cmVjdG9yJ3MgbG9naWMKKyAgLy8gYXNzdW1lcyBib3RoIG1lYW4gZW1wdHkuCisgIHJldHVybiBk
bG9jLmhhc2ggPT09ICcnIHx8IGRsb2MuaGFzaCA9PT0gJyMnOworfQorCit2YXIgbGlzdGVuZXIg
PSB7CisgIG1vZGU6ICdtb2Rlcm4nLAorICBoYXNoOiBkbG9jLmhhc2gsCisgIGhpc3Rvcnk6IGZh
bHNlLAorCisgIGNoZWNrOiBmdW5jdGlvbiAoKSB7CisgICAgdmFyIGggPSBkbG9jLmhhc2g7Cisg
ICAgaWYgKGggIT0gdGhpcy5oYXNoKSB7CisgICAgICB0aGlzLmhhc2ggPSBoOworICAgICAgdGhp
cy5vbkhhc2hDaGFuZ2VkKCk7CisgICAgfQorICB9LAorCisgIGZpcmU6IGZ1bmN0aW9uICgpIHsK
KyAgICBpZiAodGhpcy5tb2RlID09PSAnbW9kZXJuJykgeworICAgICAgdGhpcy5oaXN0b3J5ID09
PSB0cnVlID8gd2luZG93Lm9ucG9wc3RhdGUoKSA6IHdpbmRvdy5vbmhhc2hjaGFuZ2UoKTsKKyAg
ICB9CisgICAgZWxzZSB7CisgICAgICB0aGlzLm9uSGFzaENoYW5nZWQoKTsKKyAgICB9CisgIH0s
CisKKyAgaW5pdDogZnVuY3Rpb24gKGZuLCBoaXN0b3J5KSB7CisgICAgdmFyIHNlbGYgPSB0aGlz
OworICAgIHRoaXMuaGlzdG9yeSA9IGhpc3Rvcnk7CisKKyAgICBpZiAoIVJvdXRlci5saXN0ZW5l
cnMpIHsKKyAgICAgIFJvdXRlci5saXN0ZW5lcnMgPSBbXTsKKyAgICB9CisKKyAgICBmdW5jdGlv
biBvbmNoYW5nZShvbkNoYW5nZUV2ZW50KSB7CisgICAgICBmb3IgKHZhciBpID0gMCwgbCA9IFJv
dXRlci5saXN0ZW5lcnMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CisgICAgICAgIFJvdXRlci5saXN0
ZW5lcnNbaV0ob25DaGFuZ2VFdmVudCk7CisgICAgICB9CisgICAgfQorCisgICAgLy9ub3RlIElF
OCBpcyBiZWluZyBjb3VudGVkIGFzICdtb2Rlcm4nIGJlY2F1c2UgaXQgaGFzIHRoZSBoYXNoY2hh
bmdlIGV2ZW50CisgICAgaWYgKCdvbmhhc2hjaGFuZ2UnIGluIHdpbmRvdyAmJiAoZG9jdW1lbnQu
ZG9jdW1lbnRNb2RlID09PSB1bmRlZmluZWQKKyAgICAgIHx8IGRvY3VtZW50LmRvY3VtZW50TW9k
ZSA+IDcpKSB7CisgICAgICAvLyBBdCBsZWFzdCBmb3Igbm93IEhUTUw1IGhpc3RvcnkgaXMgYXZh
aWxhYmxlIGZvciAnbW9kZXJuJyBicm93c2VycyBvbmx5CisgICAgICBpZiAodGhpcy5oaXN0b3J5
ID09PSB0cnVlKSB7CisgICAgICAgIC8vIFRoZXJlIGlzIGFuIG9sZCBidWcgaW4gQ2hyb21lIHRo
YXQgY2F1c2VzIG9ucG9wc3RhdGUgdG8gZmlyZSBldmVuCisgICAgICAgIC8vIHVwb24gaW5pdGlh
bCBwYWdlIGxvYWQuIFNpbmNlIHRoZSBoYW5kbGVyIGlzIHJ1biBtYW51YWxseSBpbiBpbml0KCks
CisgICAgICAgIC8vIHRoaXMgd291bGQgY2F1c2UgQ2hyb21lIHRvIHJ1biBpdCB0d2lzZS4gQ3Vy
cmVudGx5IHRoZSBvbmx5CisgICAgICAgIC8vIHdvcmthcm91bmQgc2VlbXMgdG8gYmUgdG8gc2V0
IHRoZSBoYW5kbGVyIGFmdGVyIHRoZSBpbml0aWFsIHBhZ2UgbG9hZAorICAgICAgICAvLyBodHRw
Oi8vY29kZS5nb29nbGUuY29tL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD02MzA0MAorICAg
ICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgIHdpbmRvdy5vbnBvcHN0YXRl
ID0gb25jaGFuZ2U7CisgICAgICAgIH0sIDUwMCk7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAg
ICAgICAgd2luZG93Lm9uaGFzaGNoYW5nZSA9IG9uY2hhbmdlOworICAgICAgfQorICAgICAgdGhp
cy5tb2RlID0gJ21vZGVybic7CisgICAgfQorICAgIGVsc2UgeworICAgICAgLy8KKyAgICAgIC8v
IElFIHN1cHBvcnQsIGJhc2VkIG9uIGEgY29uY2VwdCBieSBFcmlrIEFydmlkc29uIC4uLgorICAg
ICAgLy8KKyAgICAgIHZhciBmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScp
OworICAgICAgZnJhbWUuaWQgPSAnc3RhdGUtZnJhbWUnOworICAgICAgZnJhbWUuc3R5bGUuZGlz
cGxheSA9ICdub25lJzsKKyAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZnJhbWUpOwor
ICAgICAgdGhpcy53cml0ZUZyYW1lKCcnKTsKKworICAgICAgaWYgKCdvbnByb3BlcnR5Y2hhbmdl
JyBpbiBkb2N1bWVudCAmJiAnYXR0YWNoRXZlbnQnIGluIGRvY3VtZW50KSB7CisgICAgICAgIGRv
Y3VtZW50LmF0dGFjaEV2ZW50KCdvbnByb3BlcnR5Y2hhbmdlJywgZnVuY3Rpb24gKCkgeworICAg
ICAgICAgIGlmIChldmVudC5wcm9wZXJ0eU5hbWUgPT09ICdsb2NhdGlvbicpIHsKKyAgICAgICAg
ICAgIHNlbGYuY2hlY2soKTsKKyAgICAgICAgICB9CisgICAgICAgIH0pOworICAgICAgfQorCisg
ICAgICB3aW5kb3cuc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkgeyBzZWxmLmNoZWNrKCk7IH0sIDUw
KTsKKworICAgICAgdGhpcy5vbkhhc2hDaGFuZ2VkID0gb25jaGFuZ2U7CisgICAgICB0aGlzLm1v
ZGUgPSAnbGVnYWN5JzsKKyAgICB9CisKKyAgICBSb3V0ZXIubGlzdGVuZXJzLnB1c2goZm4pOwor
CisgICAgcmV0dXJuIHRoaXMubW9kZTsKKyAgfSwKKworICBkZXN0cm95OiBmdW5jdGlvbiAoZm4p
IHsKKyAgICBpZiAoIVJvdXRlciB8fCAhUm91dGVyLmxpc3RlbmVycykgeworICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIHZhciBsaXN0ZW5lcnMgPSBSb3V0ZXIubGlzdGVuZXJzOworCisgICAg
Zm9yICh2YXIgaSA9IGxpc3RlbmVycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgeworICAgICAg
aWYgKGxpc3RlbmVyc1tpXSA9PT0gZm4pIHsKKyAgICAgICAgbGlzdGVuZXJzLnNwbGljZShpLCAx
KTsKKyAgICAgIH0KKyAgICB9CisgIH0sCisKKyAgc2V0SGFzaDogZnVuY3Rpb24gKHMpIHsKKyAg
ICAvLyBNb3ppbGxhIGFsd2F5cyBhZGRzIGFuIGVudHJ5IHRvIHRoZSBoaXN0b3J5CisgICAgaWYg
KHRoaXMubW9kZSA9PT0gJ2xlZ2FjeScpIHsKKyAgICAgIHRoaXMud3JpdGVGcmFtZShzKTsKKyAg
ICB9CisKKyAgICBpZiAodGhpcy5oaXN0b3J5ID09PSB0cnVlKSB7CisgICAgICB3aW5kb3cuaGlz
dG9yeS5wdXNoU3RhdGUoe30sIGRvY3VtZW50LnRpdGxlLCBzKTsKKyAgICAgIC8vIEZpcmUgYW4g
b25wb3BzdGF0ZSBldmVudCBtYW51YWxseSBzaW5jZSBwdXNoaW5nIGRvZXMgbm90IG9idmlvdXNs
eQorICAgICAgLy8gdHJpZ2dlciB0aGUgcG9wIGV2ZW50LgorICAgICAgdGhpcy5maXJlKCk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgIGRsb2MuaGFzaCA9IChzWzBdID09PSAnLycpID8gcyA6ICcvJyAr
IHM7CisgICAgfQorICAgIHJldHVybiB0aGlzOworICB9LAorCisgIHdyaXRlRnJhbWU6IGZ1bmN0
aW9uIChzKSB7CisgICAgLy8gSUUgc3VwcG9ydC4uLgorICAgIHZhciBmID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3N0YXRlLWZyYW1lJyk7CisgICAgdmFyIGQgPSBmLmNvbnRlbnREb2N1bWVu
dCB8fCBmLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ7CisgICAgZC5vcGVuKCk7CisgICAgZC53cml0
ZSgiPHNjcmlwdD5faGFzaCA9ICciICsgcyArICInOyBvbmxvYWQgPSBwYXJlbnQubGlzdGVuZXIu
c3luY0hhc2g7PHNjcmlwdD4iKTsKKyAgICBkLmNsb3NlKCk7CisgIH0sCisKKyAgc3luY0hhc2g6
IGZ1bmN0aW9uICgpIHsKKyAgICAvLyBJRSBzdXBwb3J0Li4uCisgICAgdmFyIHMgPSB0aGlzLl9o
YXNoOworICAgIGlmIChzICE9IGRsb2MuaGFzaCkgeworICAgICAgZGxvYy5oYXNoID0gczsKKyAg
ICB9CisgICAgcmV0dXJuIHRoaXM7CisgIH0sCisKKyAgb25IYXNoQ2hhbmdlZDogZnVuY3Rpb24g
KCkge30KK307CisKK3ZhciBSb3V0ZXIgPSBleHBvcnRzLlJvdXRlciA9IGZ1bmN0aW9uIChyb3V0
ZXMpIHsKKyAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFJvdXRlcikpIHJldHVybiBuZXcgUm91dGVy
KHJvdXRlcyk7CisKKyAgdGhpcy5wYXJhbXMgICA9IHt9OworICB0aGlzLnJvdXRlcyAgID0ge307
CisgIHRoaXMubWV0aG9kcyAgPSBbJ29uJywgJ29uY2UnLCAnYWZ0ZXInLCAnYmVmb3JlJ107Cisg
IHRoaXMuc2NvcGUgICAgPSBbXTsKKyAgdGhpcy5fbWV0aG9kcyA9IHt9OworCisgIHRoaXMuX2lu
c2VydCA9IHRoaXMuaW5zZXJ0OworICB0aGlzLmluc2VydCA9IHRoaXMuaW5zZXJ0RXg7CisKKyAg
dGhpcy5oaXN0b3J5U3VwcG9ydCA9ICh3aW5kb3cuaGlzdG9yeSAhPSBudWxsID8gd2luZG93Lmhp
c3RvcnkucHVzaFN0YXRlIDogbnVsbCkgIT0gbnVsbAorCisgIHRoaXMuY29uZmlndXJlKCk7Cisg
IHRoaXMubW91bnQocm91dGVzIHx8IHt9KTsKK307CisKK1JvdXRlci5wcm90b3R5cGUuaW5pdCA9
IGZ1bmN0aW9uIChyKSB7CisgIHZhciBzZWxmID0gdGhpcworICAgICwgcm91dGVUbzsKKyAgdGhp
cy5oYW5kbGVyID0gZnVuY3Rpb24ob25DaGFuZ2VFdmVudCkgeworICAgIHZhciBuZXdVUkwgPSBv
bkNoYW5nZUV2ZW50ICYmIG9uQ2hhbmdlRXZlbnQubmV3VVJMIHx8IHdpbmRvdy5sb2NhdGlvbi5o
YXNoOworICAgIHZhciB1cmwgPSBzZWxmLmhpc3RvcnkgPT09IHRydWUgPyBzZWxmLmdldFBhdGgo
KSA6IG5ld1VSTC5yZXBsYWNlKC8uKiMvLCAnJyk7CisgICAgc2VsZi5kaXNwYXRjaCgnb24nLCB1
cmwuY2hhckF0KDApID09PSAnLycgPyB1cmwgOiAnLycgKyB1cmwpOworICB9OworCisgIGxpc3Rl
bmVyLmluaXQodGhpcy5oYW5kbGVyLCB0aGlzLmhpc3RvcnkpOworCisgIGlmICh0aGlzLmhpc3Rv
cnkgPT09IGZhbHNlKSB7CisgICAgaWYgKGRsb2NIYXNoRW1wdHkoKSAmJiByKSB7CisgICAgICBk
bG9jLmhhc2ggPSByOworICAgIH0gZWxzZSBpZiAoIWRsb2NIYXNoRW1wdHkoKSkgeworICAgICAg
c2VsZi5kaXNwYXRjaCgnb24nLCAnLycgKyBkbG9jLmhhc2gucmVwbGFjZSgvXigjXC98I3xcLykv
LCAnJykpOworICAgIH0KKyAgfQorICBlbHNlIHsKKyAgICBpZiAodGhpcy5jb252ZXJ0X2hhc2hf
aW5faW5pdCkgeworICAgICAgLy8gVXNlIGhhc2ggYXMgcm91dGUKKyAgICAgIHJvdXRlVG8gPSBk
bG9jSGFzaEVtcHR5KCkgJiYgciA/IHIgOiAhZGxvY0hhc2hFbXB0eSgpID8gZGxvYy5oYXNoLnJl
cGxhY2UoL14jLywgJycpIDogbnVsbDsKKyAgICAgIGlmIChyb3V0ZVRvKSB7CisgICAgICAgIHdp
bmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZSh7fSwgZG9jdW1lbnQudGl0bGUsIHJvdXRlVG8pOwor
ICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIC8vIFVzZSBjYW5vbmljYWwgdXJsCisg
ICAgICByb3V0ZVRvID0gdGhpcy5nZXRQYXRoKCk7CisgICAgfQorCisgICAgLy8gUm91dGVyIGhh
cyBiZWVuIGluaXRpYWxpemVkLCBidXQgZHVlIHRvIHRoZSBjaHJvbWUgYnVnIGl0IHdpbGwgbm90
CisgICAgLy8geWV0IGFjdHVhbGx5IHJvdXRlIEhUTUw1IGhpc3Rvcnkgc3RhdGUgY2hhbmdlcy4g
VGh1cywgZGVjaWRlIGlmIHNob3VsZCByb3V0ZS4KKyAgICBpZiAocm91dGVUbyB8fCB0aGlzLnJ1
bl9pbl9pbml0ID09PSB0cnVlKSB7CisgICAgICB0aGlzLmhhbmRsZXIoKTsKKyAgICB9CisgIH0K
KworICByZXR1cm4gdGhpczsKK307CisKK1JvdXRlci5wcm90b3R5cGUuZXhwbG9kZSA9IGZ1bmN0
aW9uICgpIHsKKyAgdmFyIHYgPSB0aGlzLmhpc3RvcnkgPT09IHRydWUgPyB0aGlzLmdldFBhdGgo
KSA6IGRsb2MuaGFzaDsKKyAgaWYgKHYuY2hhckF0KDEpID09PSAnLycpIHsgdj12LnNsaWNlKDEp
IH0KKyAgcmV0dXJuIHYuc2xpY2UoMSwgdi5sZW5ndGgpLnNwbGl0KCIvIik7Cit9OworCitSb3V0
ZXIucHJvdG90eXBlLnNldFJvdXRlID0gZnVuY3Rpb24gKGksIHYsIHZhbCkgeworICB2YXIgdXJs
ID0gdGhpcy5leHBsb2RlKCk7CisKKyAgaWYgKHR5cGVvZiBpID09PSAnbnVtYmVyJyAmJiB0eXBl
b2YgdiA9PT0gJ3N0cmluZycpIHsKKyAgICB1cmxbaV0gPSB2OworICB9CisgIGVsc2UgaWYgKHR5
cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7CisgICAgdXJsLnNwbGljZShpLCB2LCBzKTsKKyAgfQor
ICBlbHNlIHsKKyAgICB1cmwgPSBbaV07CisgIH0KKworICBsaXN0ZW5lci5zZXRIYXNoKHVybC5q
b2luKCcvJykpOworICByZXR1cm4gdXJsOworfTsKKworLy8KKy8vICMjIyBmdW5jdGlvbiBpbnNl
cnRFeChtZXRob2QsIHBhdGgsIHJvdXRlLCBwYXJlbnQpCisvLyAjIyMjIEBtZXRob2Qge3N0cmlu
Z30gTWV0aG9kIHRvIGluc2VydCB0aGUgc3BlY2lmaWMgYHJvdXRlYC4KKy8vICMjIyMgQHBhdGgg
e0FycmF5fSBQYXJzZWQgcGF0aCB0byBpbnNlcnQgdGhlIGByb3V0ZWAgYXQuCisvLyAjIyMjIEBy
b3V0ZSB7QXJyYXl8ZnVuY3Rpb259IFJvdXRlIGhhbmRsZXJzIHRvIGluc2VydC4KKy8vICMjIyMg
QHBhcmVudCB7T2JqZWN0fSAqKk9wdGlvbmFsKiogUGFyZW50ICJyb3V0ZXMiIHRvIGluc2VydCBp
bnRvLgorLy8gaW5zZXJ0IGEgY2FsbGJhY2sgdGhhdCB3aWxsIG9ubHkgb2NjdXIgb25jZSBwZXIg
dGhlIG1hdGNoZWQgcm91dGUuCisvLworUm91dGVyLnByb3RvdHlwZS5pbnNlcnRFeCA9IGZ1bmN0
aW9uKG1ldGhvZCwgcGF0aCwgcm91dGUsIHBhcmVudCkgeworICBpZiAobWV0aG9kID09PSAib25j
ZSIpIHsKKyAgICBtZXRob2QgPSAib24iOworICAgIHJvdXRlID0gZnVuY3Rpb24ocm91dGUpIHsK
KyAgICAgIHZhciBvbmNlID0gZmFsc2U7CisgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAg
ICAgIGlmIChvbmNlKSByZXR1cm47CisgICAgICAgIG9uY2UgPSB0cnVlOworICAgICAgICByZXR1
cm4gcm91dGUuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKKyAgICAgIH07CisgICAgfShyb3V0ZSk7
CisgIH0KKyAgcmV0dXJuIHRoaXMuX2luc2VydChtZXRob2QsIHBhdGgsIHJvdXRlLCBwYXJlbnQp
OworfTsKKworUm91dGVyLnByb3RvdHlwZS5nZXRSb3V0ZSA9IGZ1bmN0aW9uICh2KSB7CisgIHZh
ciByZXQgPSB2OworCisgIGlmICh0eXBlb2YgdiA9PT0gIm51bWJlciIpIHsKKyAgICByZXQgPSB0
aGlzLmV4cGxvZGUoKVt2XTsKKyAgfQorICBlbHNlIGlmICh0eXBlb2YgdiA9PT0gInN0cmluZyIp
eworICAgIHZhciBoID0gdGhpcy5leHBsb2RlKCk7CisgICAgcmV0ID0gaC5pbmRleE9mKHYpOwor
ICB9CisgIGVsc2UgeworICAgIHJldCA9IHRoaXMuZXhwbG9kZSgpOworICB9CisKKyAgcmV0dXJu
IHJldDsKK307CisKK1JvdXRlci5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHsKKyAg
bGlzdGVuZXIuZGVzdHJveSh0aGlzLmhhbmRsZXIpOworICByZXR1cm4gdGhpczsKK307CisKK1Jv
dXRlci5wcm90b3R5cGUuZ2V0UGF0aCA9IGZ1bmN0aW9uICgpIHsKKyAgdmFyIHBhdGggPSB3aW5k
b3cubG9jYXRpb24ucGF0aG5hbWU7CisgIGlmIChwYXRoLnN1YnN0cigwLCAxKSAhPT0gJy8nKSB7
CisgICAgcGF0aCA9ICcvJyArIHBhdGg7CisgIH0KKyAgcmV0dXJuIHBhdGg7Cit9OworZnVuY3Rp
b24gX2V2ZXJ5KGFyciwgaXRlcmF0b3IpIHsKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnIubGVu
Z3RoOyBpICs9IDEpIHsKKyAgICBpZiAoaXRlcmF0b3IoYXJyW2ldLCBpLCBhcnIpID09PSBmYWxz
ZSkgeworICAgICAgcmV0dXJuOworICAgIH0KKyAgfQorfQorCitmdW5jdGlvbiBfZmxhdHRlbihh
cnIpIHsKKyAgdmFyIGZsYXQgPSBbXTsKKyAgZm9yICh2YXIgaSA9IDAsIG4gPSBhcnIubGVuZ3Ro
OyBpIDwgbjsgaSsrKSB7CisgICAgZmxhdCA9IGZsYXQuY29uY2F0KGFycltpXSk7CisgIH0KKyAg
cmV0dXJuIGZsYXQ7Cit9CisKK2Z1bmN0aW9uIF9hc3luY0V2ZXJ5U2VyaWVzKGFyciwgaXRlcmF0
b3IsIGNhbGxiYWNrKSB7CisgIGlmICghYXJyLmxlbmd0aCkgeworICAgIHJldHVybiBjYWxsYmFj
aygpOworICB9CisgIHZhciBjb21wbGV0ZWQgPSAwOworICAoZnVuY3Rpb24gaXRlcmF0ZSgpIHsK
KyAgICBpdGVyYXRvcihhcnJbY29tcGxldGVkXSwgZnVuY3Rpb24oZXJyKSB7CisgICAgICBpZiAo
ZXJyIHx8IGVyciA9PT0gZmFsc2UpIHsKKyAgICAgICAgY2FsbGJhY2soZXJyKTsKKyAgICAgICAg
Y2FsbGJhY2sgPSBmdW5jdGlvbigpIHt9OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgY29tcGxl
dGVkICs9IDE7CisgICAgICAgIGlmIChjb21wbGV0ZWQgPT09IGFyci5sZW5ndGgpIHsKKyAgICAg
ICAgICBjYWxsYmFjaygpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIGl0ZXJhdGUoKTsK
KyAgICAgICAgfQorICAgICAgfQorICAgIH0pOworICB9KSgpOworfQorCitmdW5jdGlvbiBwYXJh
bWlmeVN0cmluZyhzdHIsIHBhcmFtcywgbW9kKSB7CisgIG1vZCA9IHN0cjsKKyAgZm9yICh2YXIg
cGFyYW0gaW4gcGFyYW1zKSB7CisgICAgaWYgKHBhcmFtcy5oYXNPd25Qcm9wZXJ0eShwYXJhbSkp
IHsKKyAgICAgIG1vZCA9IHBhcmFtc1twYXJhbV0oc3RyKTsKKyAgICAgIGlmIChtb2QgIT09IHN0
cikgeworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICB9CisgIH0KKyAgcmV0dXJuIG1vZCA9
PT0gc3RyID8gIihbLl9hLXpBLVowLTktJSgpXSspIiA6IG1vZDsKK30KKworZnVuY3Rpb24gcmVn
aWZ5U3RyaW5nKHN0ciwgcGFyYW1zKSB7CisgIHZhciBtYXRjaGVzLCBsYXN0ID0gMCwgb3V0ID0g
IiI7CisgIHdoaWxlIChtYXRjaGVzID0gc3RyLnN1YnN0cihsYXN0KS5tYXRjaCgvW15cd1xkXC0g
JUAmXSpcKlteXHdcZFwtICVAJl0qLykpIHsKKyAgICBsYXN0ID0gbWF0Y2hlcy5pbmRleCArIG1h
dGNoZXNbMF0ubGVuZ3RoOworICAgIG1hdGNoZXNbMF0gPSBtYXRjaGVzWzBdLnJlcGxhY2UoL15c
Ki8sICIoW18uKCkhXFwgJUAmYS16QS1aMC05LV0rKSIpOworICAgIG91dCArPSBzdHIuc3Vic3Ry
KDAsIG1hdGNoZXMuaW5kZXgpICsgbWF0Y2hlc1swXTsKKyAgfQorICBzdHIgPSBvdXQgKz0gc3Ry
LnN1YnN0cihsYXN0KTsKKyAgdmFyIGNhcHR1cmVzID0gc3RyLm1hdGNoKC86KFteXC9dKykvaWcp
LCBjYXB0dXJlLCBsZW5ndGg7CisgIGlmIChjYXB0dXJlcykgeworICAgIGxlbmd0aCA9IGNhcHR1
cmVzLmxlbmd0aDsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAg
ICBjYXB0dXJlID0gY2FwdHVyZXNbaV07CisgICAgICBpZiAoY2FwdHVyZS5zbGljZSgwLCAyKSA9
PT0gIjo6IikgeworICAgICAgICBzdHIgPSBjYXB0dXJlLnNsaWNlKDEpOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgc3RyID0gc3RyLnJlcGxhY2UoY2FwdHVyZSwgcGFyYW1pZnlTdHJpbmcoY2Fw
dHVyZSwgcGFyYW1zKSk7CisgICAgICB9CisgICAgfQorICB9CisgIHJldHVybiBzdHI7Cit9CisK
K2Z1bmN0aW9uIHRlcm1pbmF0b3Iocm91dGVzLCBkZWxpbWl0ZXIsIHN0YXJ0LCBzdG9wKSB7Cisg
IHZhciBsYXN0ID0gMCwgbGVmdCA9IDAsIHJpZ2h0ID0gMCwgc3RhcnQgPSAoc3RhcnQgfHwgIigi
KS50b1N0cmluZygpLCBzdG9wID0gKHN0b3AgfHwgIikiKS50b1N0cmluZygpLCBpOworICBmb3Ig
KGkgPSAwOyBpIDwgcm91dGVzLmxlbmd0aDsgaSsrKSB7CisgICAgdmFyIGNodW5rID0gcm91dGVz
W2ldOworICAgIGlmIChjaHVuay5pbmRleE9mKHN0YXJ0LCBsYXN0KSA+IGNodW5rLmluZGV4T2Yo
c3RvcCwgbGFzdCkgfHwgfmNodW5rLmluZGV4T2Yoc3RhcnQsIGxhc3QpICYmICF+Y2h1bmsuaW5k
ZXhPZihzdG9wLCBsYXN0KSB8fCAhfmNodW5rLmluZGV4T2Yoc3RhcnQsIGxhc3QpICYmIH5jaHVu
ay5pbmRleE9mKHN0b3AsIGxhc3QpKSB7CisgICAgICBsZWZ0ID0gY2h1bmsuaW5kZXhPZihzdGFy
dCwgbGFzdCk7CisgICAgICByaWdodCA9IGNodW5rLmluZGV4T2Yoc3RvcCwgbGFzdCk7CisgICAg
ICBpZiAofmxlZnQgJiYgIX5yaWdodCB8fCAhfmxlZnQgJiYgfnJpZ2h0KSB7CisgICAgICAgIHZh
ciB0bXAgPSByb3V0ZXMuc2xpY2UoMCwgKGkgfHwgMSkgKyAxKS5qb2luKGRlbGltaXRlcik7Cisg
ICAgICAgIHJvdXRlcyA9IFsgdG1wIF0uY29uY2F0KHJvdXRlcy5zbGljZSgoaSB8fCAxKSArIDEp
KTsKKyAgICAgIH0KKyAgICAgIGxhc3QgPSAocmlnaHQgPiBsZWZ0ID8gcmlnaHQgOiBsZWZ0KSAr
IDE7CisgICAgICBpID0gMDsKKyAgICB9IGVsc2UgeworICAgICAgbGFzdCA9IDA7CisgICAgfQor
ICB9CisgIHJldHVybiByb3V0ZXM7Cit9CisKK3ZhciBRVUVSWV9TRVBBUkFUT1IgPSAvXD8uKi87
CisKK1JvdXRlci5wcm90b3R5cGUuY29uZmlndXJlID0gZnVuY3Rpb24ob3B0aW9ucykgeworICBv
cHRpb25zID0gb3B0aW9ucyB8fCB7fTsKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLm1ldGhv
ZHMubGVuZ3RoOyBpKyspIHsKKyAgICB0aGlzLl9tZXRob2RzW3RoaXMubWV0aG9kc1tpXV0gPSB0
cnVlOworICB9CisgIHRoaXMucmVjdXJzZSA9IG9wdGlvbnMucmVjdXJzZSB8fCB0aGlzLnJlY3Vy
c2UgfHwgZmFsc2U7CisgIHRoaXMuYXN5bmMgPSBvcHRpb25zLmFzeW5jIHx8IGZhbHNlOworICB0
aGlzLmRlbGltaXRlciA9IG9wdGlvbnMuZGVsaW1pdGVyIHx8ICIvIjsKKyAgdGhpcy5zdHJpY3Qg
PSB0eXBlb2Ygb3B0aW9ucy5zdHJpY3QgPT09ICJ1bmRlZmluZWQiID8gdHJ1ZSA6IG9wdGlvbnMu
c3RyaWN0OworICB0aGlzLm5vdGZvdW5kID0gb3B0aW9ucy5ub3Rmb3VuZDsKKyAgdGhpcy5yZXNv
dXJjZSA9IG9wdGlvbnMucmVzb3VyY2U7CisgIHRoaXMuaGlzdG9yeSA9IG9wdGlvbnMuaHRtbDVo
aXN0b3J5ICYmIHRoaXMuaGlzdG9yeVN1cHBvcnQgfHwgZmFsc2U7CisgIHRoaXMucnVuX2luX2lu
aXQgPSB0aGlzLmhpc3RvcnkgPT09IHRydWUgJiYgb3B0aW9ucy5ydW5faGFuZGxlcl9pbl9pbml0
ICE9PSBmYWxzZTsKKyAgdGhpcy5jb252ZXJ0X2hhc2hfaW5faW5pdCA9IHRoaXMuaGlzdG9yeSA9
PT0gdHJ1ZSAmJiBvcHRpb25zLmNvbnZlcnRfaGFzaF9pbl9pbml0ICE9PSBmYWxzZTsKKyAgdGhp
cy5ldmVyeSA9IHsKKyAgICBhZnRlcjogb3B0aW9ucy5hZnRlciB8fCBudWxsLAorICAgIGJlZm9y
ZTogb3B0aW9ucy5iZWZvcmUgfHwgbnVsbCwKKyAgICBvbjogb3B0aW9ucy5vbiB8fCBudWxsCisg
IH07CisgIHJldHVybiB0aGlzOworfTsKKworUm91dGVyLnByb3RvdHlwZS5wYXJhbSA9IGZ1bmN0
aW9uKHRva2VuLCBtYXRjaGVyKSB7CisgIGlmICh0b2tlblswXSAhPT0gIjoiKSB7CisgICAgdG9r
ZW4gPSAiOiIgKyB0b2tlbjsKKyAgfQorICB2YXIgY29tcGlsZWQgPSBuZXcgUmVnRXhwKHRva2Vu
LCAiZyIpOworICB0aGlzLnBhcmFtc1t0b2tlbl0gPSBmdW5jdGlvbihzdHIpIHsKKyAgICByZXR1
cm4gc3RyLnJlcGxhY2UoY29tcGlsZWQsIG1hdGNoZXIuc291cmNlIHx8IG1hdGNoZXIpOworICB9
OworICByZXR1cm4gdGhpczsKK307CisKK1JvdXRlci5wcm90b3R5cGUub24gPSBSb3V0ZXIucHJv
dG90eXBlLnJvdXRlID0gZnVuY3Rpb24obWV0aG9kLCBwYXRoLCByb3V0ZSkgeworICB2YXIgc2Vs
ZiA9IHRoaXM7CisgIGlmICghcm91dGUgJiYgdHlwZW9mIHBhdGggPT0gImZ1bmN0aW9uIikgewor
ICAgIHJvdXRlID0gcGF0aDsKKyAgICBwYXRoID0gbWV0aG9kOworICAgIG1ldGhvZCA9ICJvbiI7
CisgIH0KKyAgaWYgKEFycmF5LmlzQXJyYXkocGF0aCkpIHsKKyAgICByZXR1cm4gcGF0aC5mb3JF
YWNoKGZ1bmN0aW9uKHApIHsKKyAgICAgIHNlbGYub24obWV0aG9kLCBwLCByb3V0ZSk7CisgICAg
fSk7CisgIH0KKyAgaWYgKHBhdGguc291cmNlKSB7CisgICAgcGF0aCA9IHBhdGguc291cmNlLnJl
cGxhY2UoL1xcXC8vaWcsICIvIik7CisgIH0KKyAgaWYgKEFycmF5LmlzQXJyYXkobWV0aG9kKSkg
eworICAgIHJldHVybiBtZXRob2QuZm9yRWFjaChmdW5jdGlvbihtKSB7CisgICAgICBzZWxmLm9u
KG0udG9Mb3dlckNhc2UoKSwgcGF0aCwgcm91dGUpOworICAgIH0pOworICB9CisgIHBhdGggPSBw
YXRoLnNwbGl0KG5ldyBSZWdFeHAodGhpcy5kZWxpbWl0ZXIpKTsKKyAgcGF0aCA9IHRlcm1pbmF0
b3IocGF0aCwgdGhpcy5kZWxpbWl0ZXIpOworICB0aGlzLmluc2VydChtZXRob2QsIHRoaXMuc2Nv
cGUuY29uY2F0KHBhdGgpLCByb3V0ZSk7Cit9OworCitSb3V0ZXIucHJvdG90eXBlLnBhdGggPSBm
dW5jdGlvbihwYXRoLCByb3V0ZXNGbikgeworICB2YXIgc2VsZiA9IHRoaXMsIGxlbmd0aCA9IHRo
aXMuc2NvcGUubGVuZ3RoOworICBpZiAocGF0aC5zb3VyY2UpIHsKKyAgICBwYXRoID0gcGF0aC5z
b3VyY2UucmVwbGFjZSgvXFxcLy9pZywgIi8iKTsKKyAgfQorICBwYXRoID0gcGF0aC5zcGxpdChu
ZXcgUmVnRXhwKHRoaXMuZGVsaW1pdGVyKSk7CisgIHBhdGggPSB0ZXJtaW5hdG9yKHBhdGgsIHRo
aXMuZGVsaW1pdGVyKTsKKyAgdGhpcy5zY29wZSA9IHRoaXMuc2NvcGUuY29uY2F0KHBhdGgpOwor
ICByb3V0ZXNGbi5jYWxsKHRoaXMsIHRoaXMpOworICB0aGlzLnNjb3BlLnNwbGljZShsZW5ndGgs
IHBhdGgubGVuZ3RoKTsKK307CisKK1JvdXRlci5wcm90b3R5cGUuZGlzcGF0Y2ggPSBmdW5jdGlv
bihtZXRob2QsIHBhdGgsIGNhbGxiYWNrKSB7CisgIHZhciBzZWxmID0gdGhpcywgZm5zID0gdGhp
cy50cmF2ZXJzZShtZXRob2QsIHBhdGgucmVwbGFjZShRVUVSWV9TRVBBUkFUT1IsICIiKSwgdGhp
cy5yb3V0ZXMsICIiKSwgaW52b2tlZCA9IHRoaXMuX2ludm9rZWQsIGFmdGVyOworICB0aGlzLl9p
bnZva2VkID0gdHJ1ZTsKKyAgaWYgKCFmbnMgfHwgZm5zLmxlbmd0aCA9PT0gMCkgeworICAgIHRo
aXMubGFzdCA9IFtdOworICAgIGlmICh0eXBlb2YgdGhpcy5ub3Rmb3VuZCA9PT0gImZ1bmN0aW9u
IikgeworICAgICAgdGhpcy5pbnZva2UoWyB0aGlzLm5vdGZvdW5kIF0sIHsKKyAgICAgICAgbWV0
aG9kOiBtZXRob2QsCisgICAgICAgIHBhdGg6IHBhdGgKKyAgICAgIH0sIGNhbGxiYWNrKTsKKyAg
ICB9CisgICAgcmV0dXJuIGZhbHNlOworICB9CisgIGlmICh0aGlzLnJlY3Vyc2UgPT09ICJmb3J3
YXJkIikgeworICAgIGZucyA9IGZucy5yZXZlcnNlKCk7CisgIH0KKyAgZnVuY3Rpb24gdXBkYXRl
QW5kSW52b2tlKCkgeworICAgIHNlbGYubGFzdCA9IGZucy5hZnRlcjsKKyAgICBzZWxmLmludm9r
ZShzZWxmLnJ1bmxpc3QoZm5zKSwgc2VsZiwgY2FsbGJhY2spOworICB9CisgIGFmdGVyID0gdGhp
cy5ldmVyeSAmJiB0aGlzLmV2ZXJ5LmFmdGVyID8gWyB0aGlzLmV2ZXJ5LmFmdGVyIF0uY29uY2F0
KHRoaXMubGFzdCkgOiBbIHRoaXMubGFzdCBdOworICBpZiAoYWZ0ZXIgJiYgYWZ0ZXIubGVuZ3Ro
ID4gMCAmJiBpbnZva2VkKSB7CisgICAgaWYgKHRoaXMuYXN5bmMpIHsKKyAgICAgIHRoaXMuaW52
b2tlKGFmdGVyLCB0aGlzLCB1cGRhdGVBbmRJbnZva2UpOworICAgIH0gZWxzZSB7CisgICAgICB0
aGlzLmludm9rZShhZnRlciwgdGhpcyk7CisgICAgICB1cGRhdGVBbmRJbnZva2UoKTsKKyAgICB9
CisgICAgcmV0dXJuIHRydWU7CisgIH0KKyAgdXBkYXRlQW5kSW52b2tlKCk7CisgIHJldHVybiB0
cnVlOworfTsKKworUm91dGVyLnByb3RvdHlwZS5pbnZva2UgPSBmdW5jdGlvbihmbnMsIHRoaXNB
cmcsIGNhbGxiYWNrKSB7CisgIHZhciBzZWxmID0gdGhpczsKKyAgdmFyIGFwcGx5OworICBpZiAo
dGhpcy5hc3luYykgeworICAgIGFwcGx5ID0gZnVuY3Rpb24oZm4sIG5leHQpIHsKKyAgICAgIGlm
IChBcnJheS5pc0FycmF5KGZuKSkgeworICAgICAgICByZXR1cm4gX2FzeW5jRXZlcnlTZXJpZXMo
Zm4sIGFwcGx5LCBuZXh0KTsKKyAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGZuID09ICJmdW5jdGlv
biIpIHsKKyAgICAgICAgZm4uYXBwbHkodGhpc0FyZywgKGZucy5jYXB0dXJlcyB8fCBbXSkuY29u
Y2F0KG5leHQpKTsKKyAgICAgIH0KKyAgICB9OworICAgIF9hc3luY0V2ZXJ5U2VyaWVzKGZucywg
YXBwbHksIGZ1bmN0aW9uKCkgeworICAgICAgaWYgKGNhbGxiYWNrKSB7CisgICAgICAgIGNhbGxi
YWNrLmFwcGx5KHRoaXNBcmcsIGFyZ3VtZW50cyk7CisgICAgICB9CisgICAgfSk7CisgIH0gZWxz
ZSB7CisgICAgYXBwbHkgPSBmdW5jdGlvbihmbikgeworICAgICAgaWYgKEFycmF5LmlzQXJyYXko
Zm4pKSB7CisgICAgICAgIHJldHVybiBfZXZlcnkoZm4sIGFwcGx5KTsKKyAgICAgIH0gZWxzZSBp
ZiAodHlwZW9mIGZuID09PSAiZnVuY3Rpb24iKSB7CisgICAgICAgIHJldHVybiBmbi5hcHBseSh0
aGlzQXJnLCBmbnMuY2FwdHVyZXMgfHwgW10pOworICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZm4g
PT09ICJzdHJpbmciICYmIHNlbGYucmVzb3VyY2UpIHsKKyAgICAgICAgc2VsZi5yZXNvdXJjZVtm
bl0uYXBwbHkodGhpc0FyZywgZm5zLmNhcHR1cmVzIHx8IFtdKTsKKyAgICAgIH0KKyAgICB9Owor
ICAgIF9ldmVyeShmbnMsIGFwcGx5KTsKKyAgfQorfTsKKworUm91dGVyLnByb3RvdHlwZS50cmF2
ZXJzZSA9IGZ1bmN0aW9uKG1ldGhvZCwgcGF0aCwgcm91dGVzLCByZWdleHAsIGZpbHRlcikgewor
ICB2YXIgZm5zID0gW10sIGN1cnJlbnQsIGV4YWN0LCBtYXRjaCwgbmV4dCwgdGhhdDsKKyAgZnVu
Y3Rpb24gZmlsdGVyUm91dGVzKHJvdXRlcykgeworICAgIGlmICghZmlsdGVyKSB7CisgICAgICBy
ZXR1cm4gcm91dGVzOworICAgIH0KKyAgICBmdW5jdGlvbiBkZWVwQ29weShzb3VyY2UpIHsKKyAg
ICAgIHZhciByZXN1bHQgPSBbXTsKKyAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc291cmNlLmxl
bmd0aDsgaSsrKSB7CisgICAgICAgIHJlc3VsdFtpXSA9IEFycmF5LmlzQXJyYXkoc291cmNlW2ld
KSA/IGRlZXBDb3B5KHNvdXJjZVtpXSkgOiBzb3VyY2VbaV07CisgICAgICB9CisgICAgICByZXR1
cm4gcmVzdWx0OworICAgIH0KKyAgICBmdW5jdGlvbiBhcHBseUZpbHRlcihmbnMpIHsKKyAgICAg
IGZvciAodmFyIGkgPSBmbnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHsKKyAgICAgICAgaWYg
KEFycmF5LmlzQXJyYXkoZm5zW2ldKSkgeworICAgICAgICAgIGFwcGx5RmlsdGVyKGZuc1tpXSk7
CisgICAgICAgICAgaWYgKGZuc1tpXS5sZW5ndGggPT09IDApIHsKKyAgICAgICAgICAgIGZucy5z
cGxpY2UoaSwgMSk7CisgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgIGlm
ICghZmlsdGVyKGZuc1tpXSkpIHsKKyAgICAgICAgICAgIGZucy5zcGxpY2UoaSwgMSk7CisgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfQorICAgIHZhciBuZXdSb3V0ZXMgPSBk
ZWVwQ29weShyb3V0ZXMpOworICAgIG5ld1JvdXRlcy5tYXRjaGVkID0gcm91dGVzLm1hdGNoZWQ7
CisgICAgbmV3Um91dGVzLmNhcHR1cmVzID0gcm91dGVzLmNhcHR1cmVzOworICAgIG5ld1JvdXRl
cy5hZnRlciA9IHJvdXRlcy5hZnRlci5maWx0ZXIoZmlsdGVyKTsKKyAgICBhcHBseUZpbHRlcihu
ZXdSb3V0ZXMpOworICAgIHJldHVybiBuZXdSb3V0ZXM7CisgIH0KKyAgaWYgKHBhdGggPT09IHRo
aXMuZGVsaW1pdGVyICYmIHJvdXRlc1ttZXRob2RdKSB7CisgICAgbmV4dCA9IFsgWyByb3V0ZXMu
YmVmb3JlLCByb3V0ZXNbbWV0aG9kXSBdLmZpbHRlcihCb29sZWFuKSBdOworICAgIG5leHQuYWZ0
ZXIgPSBbIHJvdXRlcy5hZnRlciBdLmZpbHRlcihCb29sZWFuKTsKKyAgICBuZXh0Lm1hdGNoZWQg
PSB0cnVlOworICAgIG5leHQuY2FwdHVyZXMgPSBbXTsKKyAgICByZXR1cm4gZmlsdGVyUm91dGVz
KG5leHQpOworICB9CisgIGZvciAodmFyIHIgaW4gcm91dGVzKSB7CisgICAgaWYgKHJvdXRlcy5o
YXNPd25Qcm9wZXJ0eShyKSAmJiAoIXRoaXMuX21ldGhvZHNbcl0gfHwgdGhpcy5fbWV0aG9kc1ty
XSAmJiB0eXBlb2Ygcm91dGVzW3JdID09PSAib2JqZWN0IiAmJiAhQXJyYXkuaXNBcnJheShyb3V0
ZXNbcl0pKSkgeworICAgICAgY3VycmVudCA9IGV4YWN0ID0gcmVnZXhwICsgdGhpcy5kZWxpbWl0
ZXIgKyByOworICAgICAgaWYgKCF0aGlzLnN0cmljdCkgeworICAgICAgICBleGFjdCArPSAiWyIg
KyB0aGlzLmRlbGltaXRlciArICJdPyI7CisgICAgICB9CisgICAgICBtYXRjaCA9IHBhdGgubWF0
Y2gobmV3IFJlZ0V4cCgiXiIgKyBleGFjdCkpOworICAgICAgaWYgKCFtYXRjaCkgeworICAgICAg
ICBjb250aW51ZTsKKyAgICAgIH0KKyAgICAgIGlmIChtYXRjaFswXSAmJiBtYXRjaFswXSA9PSBw
YXRoICYmIHJvdXRlc1tyXVttZXRob2RdKSB7CisgICAgICAgIG5leHQgPSBbIFsgcm91dGVzW3Jd
LmJlZm9yZSwgcm91dGVzW3JdW21ldGhvZF0gXS5maWx0ZXIoQm9vbGVhbikgXTsKKyAgICAgICAg
bmV4dC5hZnRlciA9IFsgcm91dGVzW3JdLmFmdGVyIF0uZmlsdGVyKEJvb2xlYW4pOworICAgICAg
ICBuZXh0Lm1hdGNoZWQgPSB0cnVlOworICAgICAgICBuZXh0LmNhcHR1cmVzID0gbWF0Y2guc2xp
Y2UoMSk7CisgICAgICAgIGlmICh0aGlzLnJlY3Vyc2UgJiYgcm91dGVzID09PSB0aGlzLnJvdXRl
cykgeworICAgICAgICAgIG5leHQucHVzaChbIHJvdXRlcy5iZWZvcmUsIHJvdXRlcy5vbiBdLmZp
bHRlcihCb29sZWFuKSk7CisgICAgICAgICAgbmV4dC5hZnRlciA9IG5leHQuYWZ0ZXIuY29uY2F0
KFsgcm91dGVzLmFmdGVyIF0uZmlsdGVyKEJvb2xlYW4pKTsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm4gZmlsdGVyUm91dGVzKG5leHQpOworICAgICAgfQorICAgICAgbmV4dCA9IHRoaXMudHJh
dmVyc2UobWV0aG9kLCBwYXRoLCByb3V0ZXNbcl0sIGN1cnJlbnQpOworICAgICAgaWYgKG5leHQu
bWF0Y2hlZCkgeworICAgICAgICBpZiAobmV4dC5sZW5ndGggPiAwKSB7CisgICAgICAgICAgZm5z
ID0gZm5zLmNvbmNhdChuZXh0KTsKKyAgICAgICAgfQorICAgICAgICBpZiAodGhpcy5yZWN1cnNl
KSB7CisgICAgICAgICAgZm5zLnB1c2goWyByb3V0ZXNbcl0uYmVmb3JlLCByb3V0ZXNbcl0ub24g
XS5maWx0ZXIoQm9vbGVhbikpOworICAgICAgICAgIG5leHQuYWZ0ZXIgPSBuZXh0LmFmdGVyLmNv
bmNhdChbIHJvdXRlc1tyXS5hZnRlciBdLmZpbHRlcihCb29sZWFuKSk7CisgICAgICAgICAgaWYg
KHJvdXRlcyA9PT0gdGhpcy5yb3V0ZXMpIHsKKyAgICAgICAgICAgIGZucy5wdXNoKFsgcm91dGVz
WyJiZWZvcmUiXSwgcm91dGVzWyJvbiJdIF0uZmlsdGVyKEJvb2xlYW4pKTsKKyAgICAgICAgICAg
IG5leHQuYWZ0ZXIgPSBuZXh0LmFmdGVyLmNvbmNhdChbIHJvdXRlc1siYWZ0ZXIiXSBdLmZpbHRl
cihCb29sZWFuKSk7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGZucy5tYXRjaGVk
ID0gdHJ1ZTsKKyAgICAgICAgZm5zLmNhcHR1cmVzID0gbmV4dC5jYXB0dXJlczsKKyAgICAgICAg
Zm5zLmFmdGVyID0gbmV4dC5hZnRlcjsKKyAgICAgICAgcmV0dXJuIGZpbHRlclJvdXRlcyhmbnMp
OworICAgICAgfQorICAgIH0KKyAgfQorICByZXR1cm4gZmFsc2U7Cit9OworCitSb3V0ZXIucHJv
dG90eXBlLmluc2VydCA9IGZ1bmN0aW9uKG1ldGhvZCwgcGF0aCwgcm91dGUsIHBhcmVudCkgewor
ICB2YXIgbWV0aG9kVHlwZSwgcGFyZW50VHlwZSwgaXNBcnJheSwgbmVzdGVkLCBwYXJ0OworICBw
YXRoID0gcGF0aC5maWx0ZXIoZnVuY3Rpb24ocCkgeworICAgIHJldHVybiBwICYmIHAubGVuZ3Ro
ID4gMDsKKyAgfSk7CisgIHBhcmVudCA9IHBhcmVudCB8fCB0aGlzLnJvdXRlczsKKyAgcGFydCA9
IHBhdGguc2hpZnQoKTsKKyAgaWYgKC9cOnxcKi8udGVzdChwYXJ0KSAmJiAhL1xcZHxcXHcvLnRl
c3QocGFydCkpIHsKKyAgICBwYXJ0ID0gcmVnaWZ5U3RyaW5nKHBhcnQsIHRoaXMucGFyYW1zKTsK
KyAgfQorICBpZiAocGF0aC5sZW5ndGggPiAwKSB7CisgICAgcGFyZW50W3BhcnRdID0gcGFyZW50
W3BhcnRdIHx8IHt9OworICAgIHJldHVybiB0aGlzLmluc2VydChtZXRob2QsIHBhdGgsIHJvdXRl
LCBwYXJlbnRbcGFydF0pOworICB9CisgIGlmICghcGFydCAmJiAhcGF0aC5sZW5ndGggJiYgcGFy
ZW50ID09PSB0aGlzLnJvdXRlcykgeworICAgIG1ldGhvZFR5cGUgPSB0eXBlb2YgcGFyZW50W21l
dGhvZF07CisgICAgc3dpdGNoIChtZXRob2RUeXBlKSB7CisgICAgIGNhc2UgImZ1bmN0aW9uIjoK
KyAgICAgIHBhcmVudFttZXRob2RdID0gWyBwYXJlbnRbbWV0aG9kXSwgcm91dGUgXTsKKyAgICAg
IHJldHVybjsKKyAgICAgY2FzZSAib2JqZWN0IjoKKyAgICAgIHBhcmVudFttZXRob2RdLnB1c2go
cm91dGUpOworICAgICAgcmV0dXJuOworICAgICBjYXNlICJ1bmRlZmluZWQiOgorICAgICAgcGFy
ZW50W21ldGhvZF0gPSByb3V0ZTsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgcmV0dXJuOwor
ICB9CisgIHBhcmVudFR5cGUgPSB0eXBlb2YgcGFyZW50W3BhcnRdOworICBpc0FycmF5ID0gQXJy
YXkuaXNBcnJheShwYXJlbnRbcGFydF0pOworICBpZiAocGFyZW50W3BhcnRdICYmICFpc0FycmF5
ICYmIHBhcmVudFR5cGUgPT0gIm9iamVjdCIpIHsKKyAgICBtZXRob2RUeXBlID0gdHlwZW9mIHBh
cmVudFtwYXJ0XVttZXRob2RdOworICAgIHN3aXRjaCAobWV0aG9kVHlwZSkgeworICAgICBjYXNl
ICJmdW5jdGlvbiI6CisgICAgICBwYXJlbnRbcGFydF1bbWV0aG9kXSA9IFsgcGFyZW50W3BhcnRd
W21ldGhvZF0sIHJvdXRlIF07CisgICAgICByZXR1cm47CisgICAgIGNhc2UgIm9iamVjdCI6Cisg
ICAgICBwYXJlbnRbcGFydF1bbWV0aG9kXS5wdXNoKHJvdXRlKTsKKyAgICAgIHJldHVybjsKKyAg
ICAgY2FzZSAidW5kZWZpbmVkIjoKKyAgICAgIHBhcmVudFtwYXJ0XVttZXRob2RdID0gcm91dGU7
CisgICAgICByZXR1cm47CisgICAgfQorICB9IGVsc2UgaWYgKHBhcmVudFR5cGUgPT0gInVuZGVm
aW5lZCIpIHsKKyAgICBuZXN0ZWQgPSB7fTsKKyAgICBuZXN0ZWRbbWV0aG9kXSA9IHJvdXRlOwor
ICAgIHBhcmVudFtwYXJ0XSA9IG5lc3RlZDsKKyAgICByZXR1cm47CisgIH0KKyAgdGhyb3cgbmV3
IEVycm9yKCJJbnZhbGlkIHJvdXRlIGNvbnRleHQ6ICIgKyBwYXJlbnRUeXBlKTsKK307CisKKwor
CitSb3V0ZXIucHJvdG90eXBlLmV4dGVuZCA9IGZ1bmN0aW9uKG1ldGhvZHMpIHsKKyAgdmFyIHNl
bGYgPSB0aGlzLCBsZW4gPSBtZXRob2RzLmxlbmd0aCwgaTsKKyAgZnVuY3Rpb24gZXh0ZW5kKG1l
dGhvZCkgeworICAgIHNlbGYuX21ldGhvZHNbbWV0aG9kXSA9IHRydWU7CisgICAgc2VsZlttZXRo
b2RdID0gZnVuY3Rpb24oKSB7CisgICAgICB2YXIgZXh0cmEgPSBhcmd1bWVudHMubGVuZ3RoID09
PSAxID8gWyBtZXRob2QsICIiIF0gOiBbIG1ldGhvZCBdOworICAgICAgc2VsZi5vbi5hcHBseShz
ZWxmLCBleHRyYS5jb25jYXQoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSkp
OworICAgIH07CisgIH0KKyAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgZXh0ZW5k
KG1ldGhvZHNbaV0pOworICB9Cit9OworCitSb3V0ZXIucHJvdG90eXBlLnJ1bmxpc3QgPSBmdW5j
dGlvbihmbnMpIHsKKyAgdmFyIHJ1bmxpc3QgPSB0aGlzLmV2ZXJ5ICYmIHRoaXMuZXZlcnkuYmVm
b3JlID8gWyB0aGlzLmV2ZXJ5LmJlZm9yZSBdLmNvbmNhdChfZmxhdHRlbihmbnMpKSA6IF9mbGF0
dGVuKGZucyk7CisgIGlmICh0aGlzLmV2ZXJ5ICYmIHRoaXMuZXZlcnkub24pIHsKKyAgICBydW5s
aXN0LnB1c2godGhpcy5ldmVyeS5vbik7CisgIH0KKyAgcnVubGlzdC5jYXB0dXJlcyA9IGZucy5j
YXB0dXJlczsKKyAgcnVubGlzdC5zb3VyY2UgPSBmbnMuc291cmNlOworICByZXR1cm4gcnVubGlz
dDsKK307CisKK1JvdXRlci5wcm90b3R5cGUubW91bnQgPSBmdW5jdGlvbihyb3V0ZXMsIHBhdGgp
IHsKKyAgaWYgKCFyb3V0ZXMgfHwgdHlwZW9mIHJvdXRlcyAhPT0gIm9iamVjdCIgfHwgQXJyYXku
aXNBcnJheShyb3V0ZXMpKSB7CisgICAgcmV0dXJuOworICB9CisgIHZhciBzZWxmID0gdGhpczsK
KyAgcGF0aCA9IHBhdGggfHwgW107CisgIGlmICghQXJyYXkuaXNBcnJheShwYXRoKSkgeworICAg
IHBhdGggPSBwYXRoLnNwbGl0KHNlbGYuZGVsaW1pdGVyKTsKKyAgfQorICBmdW5jdGlvbiBpbnNl
cnRPck1vdW50KHJvdXRlLCBsb2NhbCkgeworICAgIHZhciByZW5hbWUgPSByb3V0ZSwgcGFydHMg
PSByb3V0ZS5zcGxpdChzZWxmLmRlbGltaXRlciksIHJvdXRlVHlwZSA9IHR5cGVvZiByb3V0ZXNb
cm91dGVdLCBpc1JvdXRlID0gcGFydHNbMF0gPT09ICIiIHx8ICFzZWxmLl9tZXRob2RzW3BhcnRz
WzBdXSwgZXZlbnQgPSBpc1JvdXRlID8gIm9uIiA6IHJlbmFtZTsKKyAgICBpZiAoaXNSb3V0ZSkg
eworICAgICAgcmVuYW1lID0gcmVuYW1lLnNsaWNlKChyZW5hbWUubWF0Y2gobmV3IFJlZ0V4cCgi
XiIgKyBzZWxmLmRlbGltaXRlcikpIHx8IFsgIiIgXSlbMF0ubGVuZ3RoKTsKKyAgICAgIHBhcnRz
LnNoaWZ0KCk7CisgICAgfQorICAgIGlmIChpc1JvdXRlICYmIHJvdXRlVHlwZSA9PT0gIm9iamVj
dCIgJiYgIUFycmF5LmlzQXJyYXkocm91dGVzW3JvdXRlXSkpIHsKKyAgICAgIGxvY2FsID0gbG9j
YWwuY29uY2F0KHBhcnRzKTsKKyAgICAgIHNlbGYubW91bnQocm91dGVzW3JvdXRlXSwgbG9jYWwp
OworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoaXNSb3V0ZSkgeworICAgICAgbG9jYWwg
PSBsb2NhbC5jb25jYXQocmVuYW1lLnNwbGl0KHNlbGYuZGVsaW1pdGVyKSk7CisgICAgICBsb2Nh
bCA9IHRlcm1pbmF0b3IobG9jYWwsIHNlbGYuZGVsaW1pdGVyKTsKKyAgICB9CisgICAgc2VsZi5p
bnNlcnQoZXZlbnQsIGxvY2FsLCByb3V0ZXNbcm91dGVdKTsKKyAgfQorICBmb3IgKHZhciByb3V0
ZSBpbiByb3V0ZXMpIHsKKyAgICBpZiAocm91dGVzLmhhc093blByb3BlcnR5KHJvdXRlKSkgewor
ICAgICAgaW5zZXJ0T3JNb3VudChyb3V0ZSwgcGF0aC5zbGljZSgwKSk7CisgICAgfQorICB9Cit9
OworCisKKworfSh0eXBlb2YgZXhwb3J0cyA9PT0gIm9iamVjdCIgPyBleHBvcnRzIDogd2luZG93
KSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
anF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9kaXN0L2RpcmVjdG9yLm1pbi5qcyBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvZGlzdC9kaXJlY3Rvci5taW4uanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYzk1NmFmNDAwOTViYzIyYzY4ODVmMjc3ZWQ5ZWY1Zjc0MTZiYWU0ZgotLS0g
L2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3Iv
ZGlzdC9kaXJlY3Rvci5taW4uanMKQEAgLTAsMCArMSw3IEBACisKKworLy8KKy8vIEdlbmVyYXRl
ZCBvbiBUdWUgRGVjIDE2IDIwMTQgMTI6MTM6NDcgR01UKzAxMDAgKENFVCkgYnkgQ2hhcmxpZSBS
b2JiaW5zLCBQYW9sbyBGcmFnb21lbmkgJiB0aGUgQ29udHJpYnV0b3JzIChVc2luZyBDb2Rlc3Vy
Z2VvbikuCisvLyBWZXJzaW9uIDEuMi42CisvLworKGZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGsoYSxi
LGMsZCl7dmFyIGU9MCxmPTAsZz0wLGM9KGN8fCIoIikudG9TdHJpbmcoKSxkPShkfHwiKSIpLnRv
U3RyaW5nKCksaDtmb3IoaD0wO2g8YS5sZW5ndGg7aCsrKXt2YXIgaT1hW2hdO2lmKGkuaW5kZXhP
ZihjLGUpPmkuaW5kZXhPZihkLGUpfHx+aS5pbmRleE9mKGMsZSkmJiF+aS5pbmRleE9mKGQsZSl8
fCF+aS5pbmRleE9mKGMsZSkmJn5pLmluZGV4T2YoZCxlKSl7Zj1pLmluZGV4T2YoYyxlKSxnPWku
aW5kZXhPZihkLGUpO2lmKH5mJiYhfmd8fCF+ZiYmfmcpe3ZhciBqPWEuc2xpY2UoMCwoaHx8MSkr
MSkuam9pbihiKTthPVtqXS5jb25jYXQoYS5zbGljZSgoaHx8MSkrMSkpfWU9KGc+Zj9nOmYpKzEs
aD0wfWVsc2UgZT0wfXJldHVybiBhfWZ1bmN0aW9uIGooYSxiKXt2YXIgYyxkPTAsZT0iIjt3aGls
ZShjPWEuc3Vic3RyKGQpLm1hdGNoKC9bXlx3XGRcLSAlQCZdKlwqW15cd1xkXC0gJUAmXSovKSlk
PWMuaW5kZXgrY1swXS5sZW5ndGgsY1swXT1jWzBdLnJlcGxhY2UoL15cKi8sIihbXy4oKSFcXCAl
QCZhLXpBLVowLTktXSspIiksZSs9YS5zdWJzdHIoMCxjLmluZGV4KStjWzBdO2E9ZSs9YS5zdWJz
dHIoZCk7dmFyIGY9YS5tYXRjaCgvOihbXlwvXSspL2lnKSxnLGg7aWYoZil7aD1mLmxlbmd0aDtm
b3IodmFyIGo9MDtqPGg7aisrKWc9ZltqXSxnLnNsaWNlKDAsMik9PT0iOjoiP2E9Zy5zbGljZSgx
KTphPWEucmVwbGFjZShnLGkoZyxiKSl9cmV0dXJuIGF9ZnVuY3Rpb24gaShhLGIsYyl7Yz1hO2Zv
cih2YXIgZCBpbiBiKWlmKGIuaGFzT3duUHJvcGVydHkoZCkpe2M9YltkXShhKTtpZihjIT09YSli
cmVha31yZXR1cm4gYz09PWE/IihbLl9hLXpBLVowLTktJSgpXSspIjpjfWZ1bmN0aW9uIGgoYSxi
LGMpe2lmKCFhLmxlbmd0aClyZXR1cm4gYygpO3ZhciBkPTA7KGZ1bmN0aW9uIGUoKXtiKGFbZF0s
ZnVuY3Rpb24oYil7Ynx8Yj09PSExPyhjKGIpLGM9ZnVuY3Rpb24oKXt9KTooZCs9MSxkPT09YS5s
ZW5ndGg/YygpOmUoKSl9KX0pKCl9ZnVuY3Rpb24gZyhhKXt2YXIgYj1bXTtmb3IodmFyIGM9MCxk
PWEubGVuZ3RoO2M8ZDtjKyspYj1iLmNvbmNhdChhW2NdKTtyZXR1cm4gYn1mdW5jdGlvbiBmKGEs
Yil7Zm9yKHZhciBjPTA7YzxhLmxlbmd0aDtjKz0xKWlmKGIoYVtjXSxjLGEpPT09ITEpcmV0dXJu
fWZ1bmN0aW9uIGMoKXtyZXR1cm4gYi5oYXNoPT09IiJ8fGIuaGFzaD09PSIjIn12YXIgYj1kb2N1
bWVudC5sb2NhdGlvbixkPXttb2RlOiJtb2Rlcm4iLGhhc2g6Yi5oYXNoLGhpc3Rvcnk6ITEsY2hl
Y2s6ZnVuY3Rpb24oKXt2YXIgYT1iLmhhc2g7YSE9dGhpcy5oYXNoJiYodGhpcy5oYXNoPWEsdGhp
cy5vbkhhc2hDaGFuZ2VkKCkpfSxmaXJlOmZ1bmN0aW9uKCl7dGhpcy5tb2RlPT09Im1vZGVybiI/
dGhpcy5oaXN0b3J5PT09ITA/d2luZG93Lm9ucG9wc3RhdGUoKTp3aW5kb3cub25oYXNoY2hhbmdl
KCk6dGhpcy5vbkhhc2hDaGFuZ2VkKCl9LGluaXQ6ZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBkKGEp
e2Zvcih2YXIgYj0wLGM9ZS5saXN0ZW5lcnMubGVuZ3RoO2I8YztiKyspZS5saXN0ZW5lcnNbYl0o
YSl9dmFyIGM9dGhpczt0aGlzLmhpc3Rvcnk9YixlLmxpc3RlbmVyc3x8KGUubGlzdGVuZXJzPVtd
KTtpZigib25oYXNoY2hhbmdlImluIHdpbmRvdyYmKGRvY3VtZW50LmRvY3VtZW50TW9kZT09PXVu
ZGVmaW5lZHx8ZG9jdW1lbnQuZG9jdW1lbnRNb2RlPjcpKXRoaXMuaGlzdG9yeT09PSEwP3NldFRp
bWVvdXQoZnVuY3Rpb24oKXt3aW5kb3cub25wb3BzdGF0ZT1kfSw1MDApOndpbmRvdy5vbmhhc2hj
aGFuZ2U9ZCx0aGlzLm1vZGU9Im1vZGVybiI7ZWxzZXt2YXIgZj1kb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJpZnJhbWUiKTtmLmlkPSJzdGF0ZS1mcmFtZSIsZi5zdHlsZS5kaXNwbGF5PSJub25lIixk
b2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGYpLHRoaXMud3JpdGVGcmFtZSgiIiksIm9ucHJvcGVy
dHljaGFuZ2UiaW4gZG9jdW1lbnQmJiJhdHRhY2hFdmVudCJpbiBkb2N1bWVudCYmZG9jdW1lbnQu
YXR0YWNoRXZlbnQoIm9ucHJvcGVydHljaGFuZ2UiLGZ1bmN0aW9uKCl7ZXZlbnQucHJvcGVydHlO
YW1lPT09ImxvY2F0aW9uIiYmYy5jaGVjaygpfSksd2luZG93LnNldEludGVydmFsKGZ1bmN0aW9u
KCl7Yy5jaGVjaygpfSw1MCksdGhpcy5vbkhhc2hDaGFuZ2VkPWQsdGhpcy5tb2RlPSJsZWdhY3ki
fWUubGlzdGVuZXJzLnB1c2goYSk7cmV0dXJuIHRoaXMubW9kZX0sZGVzdHJveTpmdW5jdGlvbihh
KXtpZighIWUmJiEhZS5saXN0ZW5lcnMpe3ZhciBiPWUubGlzdGVuZXJzO2Zvcih2YXIgYz1iLmxl
bmd0aC0xO2M+PTA7Yy0tKWJbY109PT1hJiZiLnNwbGljZShjLDEpfX0sc2V0SGFzaDpmdW5jdGlv
bihhKXt0aGlzLm1vZGU9PT0ibGVnYWN5IiYmdGhpcy53cml0ZUZyYW1lKGEpLHRoaXMuaGlzdG9y
eT09PSEwPyh3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUoe30sZG9jdW1lbnQudGl0bGUsYSksdGhp
cy5maXJlKCkpOmIuaGFzaD1hWzBdPT09Ii8iP2E6Ii8iK2E7cmV0dXJuIHRoaXN9LHdyaXRlRnJh
bWU6ZnVuY3Rpb24oYSl7dmFyIGI9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0YXRlLWZyYW1l
IiksYz1iLmNvbnRlbnREb2N1bWVudHx8Yi5jb250ZW50V2luZG93LmRvY3VtZW50O2Mub3Blbigp
LGMud3JpdGUoIjxzY3JpcHQ+X2hhc2ggPSAnIithKyInOyBvbmxvYWQgPSBwYXJlbnQubGlzdGVu
ZXIuc3luY0hhc2g7PHNjcmlwdD4iKSxjLmNsb3NlKCl9LHN5bmNIYXNoOmZ1bmN0aW9uKCl7dmFy
IGE9dGhpcy5faGFzaDthIT1iLmhhc2gmJihiLmhhc2g9YSk7cmV0dXJuIHRoaXN9LG9uSGFzaENo
YW5nZWQ6ZnVuY3Rpb24oKXt9fSxlPWEuUm91dGVyPWZ1bmN0aW9uKGEpe2lmKHRoaXMgaW5zdGFu
Y2VvZiBlKXRoaXMucGFyYW1zPXt9LHRoaXMucm91dGVzPXt9LHRoaXMubWV0aG9kcz1bIm9uIiwi
b25jZSIsImFmdGVyIiwiYmVmb3JlIl0sdGhpcy5zY29wZT1bXSx0aGlzLl9tZXRob2RzPXt9LHRo
aXMuX2luc2VydD10aGlzLmluc2VydCx0aGlzLmluc2VydD10aGlzLmluc2VydEV4LHRoaXMuaGlz
dG9yeVN1cHBvcnQ9KHdpbmRvdy5oaXN0b3J5IT1udWxsP3dpbmRvdy5oaXN0b3J5LnB1c2hTdGF0
ZTpudWxsKSE9bnVsbCx0aGlzLmNvbmZpZ3VyZSgpLHRoaXMubW91bnQoYXx8e30pO2Vsc2UgcmV0
dXJuIG5ldyBlKGEpfTtlLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKGEpe3ZhciBlPXRoaXMsZjt0
aGlzLmhhbmRsZXI9ZnVuY3Rpb24oYSl7dmFyIGI9YSYmYS5uZXdVUkx8fHdpbmRvdy5sb2NhdGlv
bi5oYXNoLGM9ZS5oaXN0b3J5PT09ITA/ZS5nZXRQYXRoKCk6Yi5yZXBsYWNlKC8uKiMvLCIiKTtl
LmRpc3BhdGNoKCJvbiIsYy5jaGFyQXQoMCk9PT0iLyI/YzoiLyIrYyl9LGQuaW5pdCh0aGlzLmhh
bmRsZXIsdGhpcy5oaXN0b3J5KSx0aGlzLmhpc3Rvcnk9PT0hMT9jKCkmJmE/Yi5oYXNoPWE6Yygp
fHxlLmRpc3BhdGNoKCJvbiIsIi8iK2IuaGFzaC5yZXBsYWNlKC9eKCNcL3wjfFwvKS8sIiIpKToo
dGhpcy5jb252ZXJ0X2hhc2hfaW5faW5pdD8oZj1jKCkmJmE/YTpjKCk/bnVsbDpiLmhhc2gucmVw
bGFjZSgvXiMvLCIiKSxmJiZ3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUoe30sZG9jdW1lbnQu
dGl0bGUsZikpOmY9dGhpcy5nZXRQYXRoKCksKGZ8fHRoaXMucnVuX2luX2luaXQ9PT0hMCkmJnRo
aXMuaGFuZGxlcigpKTtyZXR1cm4gdGhpc30sZS5wcm90b3R5cGUuZXhwbG9kZT1mdW5jdGlvbigp
e3ZhciBhPXRoaXMuaGlzdG9yeT09PSEwP3RoaXMuZ2V0UGF0aCgpOmIuaGFzaDthLmNoYXJBdCgx
KT09PSIvIiYmKGE9YS5zbGljZSgxKSk7cmV0dXJuIGEuc2xpY2UoMSxhLmxlbmd0aCkuc3BsaXQo
Ii8iKX0sZS5wcm90b3R5cGUuc2V0Um91dGU9ZnVuY3Rpb24oYSxiLGMpe3ZhciBlPXRoaXMuZXhw
bG9kZSgpO3R5cGVvZiBhPT0ibnVtYmVyIiYmdHlwZW9mIGI9PSJzdHJpbmciP2VbYV09Yjp0eXBl
b2YgYz09InN0cmluZyI/ZS5zcGxpY2UoYSxiLHMpOmU9W2FdLGQuc2V0SGFzaChlLmpvaW4oIi8i
KSk7cmV0dXJuIGV9LGUucHJvdG90eXBlLmluc2VydEV4PWZ1bmN0aW9uKGEsYixjLGQpe2E9PT0i
b25jZSImJihhPSJvbiIsYz1mdW5jdGlvbihhKXt2YXIgYj0hMTtyZXR1cm4gZnVuY3Rpb24oKXtp
ZighYil7Yj0hMDtyZXR1cm4gYS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fX0oYykpO3JldHVybiB0
aGlzLl9pbnNlcnQoYSxiLGMsZCl9LGUucHJvdG90eXBlLmdldFJvdXRlPWZ1bmN0aW9uKGEpe3Zh
ciBiPWE7aWYodHlwZW9mIGE9PSJudW1iZXIiKWI9dGhpcy5leHBsb2RlKClbYV07ZWxzZSBpZih0
eXBlb2YgYT09InN0cmluZyIpe3ZhciBjPXRoaXMuZXhwbG9kZSgpO2I9Yy5pbmRleE9mKGEpfWVs
c2UgYj10aGlzLmV4cGxvZGUoKTtyZXR1cm4gYn0sZS5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlv
bigpe2QuZGVzdHJveSh0aGlzLmhhbmRsZXIpO3JldHVybiB0aGlzfSxlLnByb3RvdHlwZS5nZXRQ
YXRoPWZ1bmN0aW9uKCl7dmFyIGE9d2luZG93LmxvY2F0aW9uLnBhdGhuYW1lO2Euc3Vic3RyKDAs
MSkhPT0iLyImJihhPSIvIithKTtyZXR1cm4gYX07dmFyIGw9L1w/LiovO2UucHJvdG90eXBlLmNv
bmZpZ3VyZT1mdW5jdGlvbihhKXthPWF8fHt9O2Zvcih2YXIgYj0wO2I8dGhpcy5tZXRob2RzLmxl
bmd0aDtiKyspdGhpcy5fbWV0aG9kc1t0aGlzLm1ldGhvZHNbYl1dPSEwO3RoaXMucmVjdXJzZT1h
LnJlY3Vyc2V8fHRoaXMucmVjdXJzZXx8ITEsdGhpcy5hc3luYz1hLmFzeW5jfHwhMSx0aGlzLmRl
bGltaXRlcj1hLmRlbGltaXRlcnx8Ii8iLHRoaXMuc3RyaWN0PXR5cGVvZiBhLnN0cmljdD09InVu
ZGVmaW5lZCI/ITA6YS5zdHJpY3QsdGhpcy5ub3Rmb3VuZD1hLm5vdGZvdW5kLHRoaXMucmVzb3Vy
Y2U9YS5yZXNvdXJjZSx0aGlzLmhpc3Rvcnk9YS5odG1sNWhpc3RvcnkmJnRoaXMuaGlzdG9yeVN1
cHBvcnR8fCExLHRoaXMucnVuX2luX2luaXQ9dGhpcy5oaXN0b3J5PT09ITAmJmEucnVuX2hhbmRs
ZXJfaW5faW5pdCE9PSExLHRoaXMuY29udmVydF9oYXNoX2luX2luaXQ9dGhpcy5oaXN0b3J5PT09
ITAmJmEuY29udmVydF9oYXNoX2luX2luaXQhPT0hMSx0aGlzLmV2ZXJ5PXthZnRlcjphLmFmdGVy
fHxudWxsLGJlZm9yZTphLmJlZm9yZXx8bnVsbCxvbjphLm9ufHxudWxsfTtyZXR1cm4gdGhpc30s
ZS5wcm90b3R5cGUucGFyYW09ZnVuY3Rpb24oYSxiKXthWzBdIT09IjoiJiYoYT0iOiIrYSk7dmFy
IGM9bmV3IFJlZ0V4cChhLCJnIik7dGhpcy5wYXJhbXNbYV09ZnVuY3Rpb24oYSl7cmV0dXJuIGEu
cmVwbGFjZShjLGIuc291cmNlfHxiKX07cmV0dXJuIHRoaXN9LGUucHJvdG90eXBlLm9uPWUucHJv
dG90eXBlLnJvdXRlPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD10aGlzOyFjJiZ0eXBlb2YgYj09ImZ1
bmN0aW9uIiYmKGM9YixiPWEsYT0ib24iKTtpZihBcnJheS5pc0FycmF5KGIpKXJldHVybiBiLmZv
ckVhY2goZnVuY3Rpb24oYil7ZC5vbihhLGIsYyl9KTtiLnNvdXJjZSYmKGI9Yi5zb3VyY2UucmVw
bGFjZSgvXFxcLy9pZywiLyIpKTtpZihBcnJheS5pc0FycmF5KGEpKXJldHVybiBhLmZvckVhY2go
ZnVuY3Rpb24oYSl7ZC5vbihhLnRvTG93ZXJDYXNlKCksYixjKX0pO2I9Yi5zcGxpdChuZXcgUmVn
RXhwKHRoaXMuZGVsaW1pdGVyKSksYj1rKGIsdGhpcy5kZWxpbWl0ZXIpLHRoaXMuaW5zZXJ0KGEs
dGhpcy5zY29wZS5jb25jYXQoYiksYyl9LGUucHJvdG90eXBlLnBhdGg9ZnVuY3Rpb24oYSxiKXt2
YXIgYz10aGlzLGQ9dGhpcy5zY29wZS5sZW5ndGg7YS5zb3VyY2UmJihhPWEuc291cmNlLnJlcGxh
Y2UoL1xcXC8vaWcsIi8iKSksYT1hLnNwbGl0KG5ldyBSZWdFeHAodGhpcy5kZWxpbWl0ZXIpKSxh
PWsoYSx0aGlzLmRlbGltaXRlciksdGhpcy5zY29wZT10aGlzLnNjb3BlLmNvbmNhdChhKSxiLmNh
bGwodGhpcyx0aGlzKSx0aGlzLnNjb3BlLnNwbGljZShkLGEubGVuZ3RoKX0sZS5wcm90b3R5cGUu
ZGlzcGF0Y2g9ZnVuY3Rpb24oYSxiLGMpe2Z1bmN0aW9uIGgoKXtkLmxhc3Q9ZS5hZnRlcixkLmlu
dm9rZShkLnJ1bmxpc3QoZSksZCxjKX12YXIgZD10aGlzLGU9dGhpcy50cmF2ZXJzZShhLGIucmVw
bGFjZShsLCIiKSx0aGlzLnJvdXRlcywiIiksZj10aGlzLl9pbnZva2VkLGc7dGhpcy5faW52b2tl
ZD0hMDtpZighZXx8ZS5sZW5ndGg9PT0wKXt0aGlzLmxhc3Q9W10sdHlwZW9mIHRoaXMubm90Zm91
bmQ9PSJmdW5jdGlvbiImJnRoaXMuaW52b2tlKFt0aGlzLm5vdGZvdW5kXSx7bWV0aG9kOmEscGF0
aDpifSxjKTtyZXR1cm4hMX10aGlzLnJlY3Vyc2U9PT0iZm9yd2FyZCImJihlPWUucmV2ZXJzZSgp
KSxnPXRoaXMuZXZlcnkmJnRoaXMuZXZlcnkuYWZ0ZXI/W3RoaXMuZXZlcnkuYWZ0ZXJdLmNvbmNh
dCh0aGlzLmxhc3QpOlt0aGlzLmxhc3RdO2lmKGcmJmcubGVuZ3RoPjAmJmYpe3RoaXMuYXN5bmM/
dGhpcy5pbnZva2UoZyx0aGlzLGgpOih0aGlzLmludm9rZShnLHRoaXMpLGgoKSk7cmV0dXJuITB9
aCgpO3JldHVybiEwfSxlLnByb3RvdHlwZS5pbnZva2U9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRo
aXMsZTt0aGlzLmFzeW5jPyhlPWZ1bmN0aW9uKGMsZCl7aWYoQXJyYXkuaXNBcnJheShjKSlyZXR1
cm4gaChjLGUsZCk7dHlwZW9mIGM9PSJmdW5jdGlvbiImJmMuYXBwbHkoYiwoYS5jYXB0dXJlc3x8
W10pLmNvbmNhdChkKSl9LGgoYSxlLGZ1bmN0aW9uKCl7YyYmYy5hcHBseShiLGFyZ3VtZW50cyl9
KSk6KGU9ZnVuY3Rpb24oYyl7aWYoQXJyYXkuaXNBcnJheShjKSlyZXR1cm4gZihjLGUpO2lmKHR5
cGVvZiBjPT0iZnVuY3Rpb24iKXJldHVybiBjLmFwcGx5KGIsYS5jYXB0dXJlc3x8W10pO3R5cGVv
ZiBjPT0ic3RyaW5nIiYmZC5yZXNvdXJjZSYmZC5yZXNvdXJjZVtjXS5hcHBseShiLGEuY2FwdHVy
ZXN8fFtdKX0sZihhLGUpKX0sZS5wcm90b3R5cGUudHJhdmVyc2U9ZnVuY3Rpb24oYSxiLGMsZCxl
KXtmdW5jdGlvbiBsKGEpe2Z1bmN0aW9uIGMoYSl7Zm9yKHZhciBiPWEubGVuZ3RoLTE7Yj49MDti
LS0pQXJyYXkuaXNBcnJheShhW2JdKT8oYyhhW2JdKSxhW2JdLmxlbmd0aD09PTAmJmEuc3BsaWNl
KGIsMSkpOmUoYVtiXSl8fGEuc3BsaWNlKGIsMSl9ZnVuY3Rpb24gYihhKXt2YXIgYz1bXTtmb3Io
dmFyIGQ9MDtkPGEubGVuZ3RoO2QrKyljW2RdPUFycmF5LmlzQXJyYXkoYVtkXSk/YihhW2RdKTph
W2RdO3JldHVybiBjfWlmKCFlKXJldHVybiBhO3ZhciBkPWIoYSk7ZC5tYXRjaGVkPWEubWF0Y2hl
ZCxkLmNhcHR1cmVzPWEuY2FwdHVyZXMsZC5hZnRlcj1hLmFmdGVyLmZpbHRlcihlKSxjKGQpO3Jl
dHVybiBkfXZhciBmPVtdLGcsaCxpLGosaztpZihiPT09dGhpcy5kZWxpbWl0ZXImJmNbYV0pe2o9
W1tjLmJlZm9yZSxjW2FdXS5maWx0ZXIoQm9vbGVhbildLGouYWZ0ZXI9W2MuYWZ0ZXJdLmZpbHRl
cihCb29sZWFuKSxqLm1hdGNoZWQ9ITAsai5jYXB0dXJlcz1bXTtyZXR1cm4gbChqKX1mb3IodmFy
IG0gaW4gYylpZihjLmhhc093blByb3BlcnR5KG0pJiYoIXRoaXMuX21ldGhvZHNbbV18fHRoaXMu
X21ldGhvZHNbbV0mJnR5cGVvZiBjW21dPT0ib2JqZWN0IiYmIUFycmF5LmlzQXJyYXkoY1ttXSkp
KXtnPWg9ZCt0aGlzLmRlbGltaXRlcittLHRoaXMuc3RyaWN0fHwoaCs9IlsiK3RoaXMuZGVsaW1p
dGVyKyJdPyIpLGk9Yi5tYXRjaChuZXcgUmVnRXhwKCJeIitoKSk7aWYoIWkpY29udGludWU7aWYo
aVswXSYmaVswXT09YiYmY1ttXVthXSl7aj1bW2NbbV0uYmVmb3JlLGNbbV1bYV1dLmZpbHRlcihC
b29sZWFuKV0sai5hZnRlcj1bY1ttXS5hZnRlcl0uZmlsdGVyKEJvb2xlYW4pLGoubWF0Y2hlZD0h
MCxqLmNhcHR1cmVzPWkuc2xpY2UoMSksdGhpcy5yZWN1cnNlJiZjPT09dGhpcy5yb3V0ZXMmJihq
LnB1c2goW2MuYmVmb3JlLGMub25dLmZpbHRlcihCb29sZWFuKSksai5hZnRlcj1qLmFmdGVyLmNv
bmNhdChbYy5hZnRlcl0uZmlsdGVyKEJvb2xlYW4pKSk7cmV0dXJuIGwoail9aj10aGlzLnRyYXZl
cnNlKGEsYixjW21dLGcpO2lmKGoubWF0Y2hlZCl7ai5sZW5ndGg+MCYmKGY9Zi5jb25jYXQoaikp
LHRoaXMucmVjdXJzZSYmKGYucHVzaChbY1ttXS5iZWZvcmUsY1ttXS5vbl0uZmlsdGVyKEJvb2xl
YW4pKSxqLmFmdGVyPWouYWZ0ZXIuY29uY2F0KFtjW21dLmFmdGVyXS5maWx0ZXIoQm9vbGVhbikp
LGM9PT10aGlzLnJvdXRlcyYmKGYucHVzaChbYy5iZWZvcmUsYy5vbl0uZmlsdGVyKEJvb2xlYW4p
KSxqLmFmdGVyPWouYWZ0ZXIuY29uY2F0KFtjLmFmdGVyXS5maWx0ZXIoQm9vbGVhbikpKSksZi5t
YXRjaGVkPSEwLGYuY2FwdHVyZXM9ai5jYXB0dXJlcyxmLmFmdGVyPWouYWZ0ZXI7cmV0dXJuIGwo
Zil9fXJldHVybiExfSxlLnByb3RvdHlwZS5pbnNlcnQ9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGUs
ZixnLGgsaTtiPWIuZmlsdGVyKGZ1bmN0aW9uKGEpe3JldHVybiBhJiZhLmxlbmd0aD4wfSksZD1k
fHx0aGlzLnJvdXRlcyxpPWIuc2hpZnQoKSwvXDp8XCovLnRlc3QoaSkmJiEvXFxkfFxcdy8udGVz
dChpKSYmKGk9aihpLHRoaXMucGFyYW1zKSk7aWYoYi5sZW5ndGg+MCl7ZFtpXT1kW2ldfHx7fTty
ZXR1cm4gdGhpcy5pbnNlcnQoYSxiLGMsZFtpXSl9e2lmKCEhaXx8ISFiLmxlbmd0aHx8ZCE9PXRo
aXMucm91dGVzKXtmPXR5cGVvZiBkW2ldLGc9QXJyYXkuaXNBcnJheShkW2ldKTtpZihkW2ldJiYh
ZyYmZj09Im9iamVjdCIpe2U9dHlwZW9mIGRbaV1bYV07c3dpdGNoKGUpe2Nhc2UiZnVuY3Rpb24i
OmRbaV1bYV09W2RbaV1bYV0sY107cmV0dXJuO2Nhc2Uib2JqZWN0IjpkW2ldW2FdLnB1c2goYyk7
cmV0dXJuO2Nhc2UidW5kZWZpbmVkIjpkW2ldW2FdPWM7cmV0dXJufX1lbHNlIGlmKGY9PSJ1bmRl
ZmluZWQiKXtoPXt9LGhbYV09YyxkW2ldPWg7cmV0dXJufXRocm93IG5ldyBFcnJvcigiSW52YWxp
ZCByb3V0ZSBjb250ZXh0OiAiK2YpfWU9dHlwZW9mIGRbYV07c3dpdGNoKGUpe2Nhc2UiZnVuY3Rp
b24iOmRbYV09W2RbYV0sY107cmV0dXJuO2Nhc2Uib2JqZWN0IjpkW2FdLnB1c2goYyk7cmV0dXJu
O2Nhc2UidW5kZWZpbmVkIjpkW2FdPWM7cmV0dXJufX19LGUucHJvdG90eXBlLmV4dGVuZD1mdW5j
dGlvbihhKXtmdW5jdGlvbiBlKGEpe2IuX21ldGhvZHNbYV09ITAsYlthXT1mdW5jdGlvbigpe3Zh
ciBjPWFyZ3VtZW50cy5sZW5ndGg9PT0xP1thLCIiXTpbYV07Yi5vbi5hcHBseShiLGMuY29uY2F0
KEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cykpKX19dmFyIGI9dGhpcyxjPWEu
bGVuZ3RoLGQ7Zm9yKGQ9MDtkPGM7ZCsrKWUoYVtkXSl9LGUucHJvdG90eXBlLnJ1bmxpc3Q9ZnVu
Y3Rpb24oYSl7dmFyIGI9dGhpcy5ldmVyeSYmdGhpcy5ldmVyeS5iZWZvcmU/W3RoaXMuZXZlcnku
YmVmb3JlXS5jb25jYXQoZyhhKSk6ZyhhKTt0aGlzLmV2ZXJ5JiZ0aGlzLmV2ZXJ5Lm9uJiZiLnB1
c2godGhpcy5ldmVyeS5vbiksYi5jYXB0dXJlcz1hLmNhcHR1cmVzLGIuc291cmNlPWEuc291cmNl
O3JldHVybiBifSxlLnByb3RvdHlwZS5tb3VudD1mdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGQoYixk
KXt2YXIgZT1iLGY9Yi5zcGxpdChjLmRlbGltaXRlciksZz10eXBlb2YgYVtiXSxoPWZbMF09PT0i
Inx8IWMuX21ldGhvZHNbZlswXV0saT1oPyJvbiI6ZTtoJiYoZT1lLnNsaWNlKChlLm1hdGNoKG5l
dyBSZWdFeHAoIl4iK2MuZGVsaW1pdGVyKSl8fFsiIl0pWzBdLmxlbmd0aCksZi5zaGlmdCgpKTto
JiZnPT09Im9iamVjdCImJiFBcnJheS5pc0FycmF5KGFbYl0pPyhkPWQuY29uY2F0KGYpLGMubW91
bnQoYVtiXSxkKSk6KGgmJihkPWQuY29uY2F0KGUuc3BsaXQoYy5kZWxpbWl0ZXIpKSxkPWsoZCxj
LmRlbGltaXRlcikpLGMuaW5zZXJ0KGksZCxhW2JdKSl9aWYoISFhJiZ0eXBlb2YgYT09Im9iamVj
dCImJiFBcnJheS5pc0FycmF5KGEpKXt2YXIgYz10aGlzO2I9Ynx8W10sQXJyYXkuaXNBcnJheShi
KXx8KGI9Yi5zcGxpdChjLmRlbGltaXRlcikpO2Zvcih2YXIgZSBpbiBhKWEuaGFzT3duUHJvcGVy
dHkoZSkmJmQoZSxiLnNsaWNlKDApKX19fSkodHlwZW9mIGV4cG9ydHM9PSJvYmplY3QiP2V4cG9y
dHM6d2luZG93KQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvZGlzdC9lbmRlci5qcyBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvZGlzdC9lbmRlci5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mZTNlYmM0MWIwYmRlMDY0YmZkMzM2M2ZkNWRkMGIzNDA2ZWZiOWVmCi0tLSAvZGV2L251
bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9kaXN0L2Vu
ZGVyLmpzCkBAIC0wLDAgKzEsMyBAQAorJC5lbmRlcih7CisgIHJvdXRlcjogUm91dGVyCit9KTsK
ZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvcGFj
a2FnZS5qc29uIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9wYWNr
YWdlLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTBiZDI5NjI3MjdmNDY0ZGNiZTA5ODE3MmE5OWZhOGRlNzZh
YjliZAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMv
ZGlyZWN0b3IvcGFja2FnZS5qc29uCkBAIC0wLDAgKzEsNDEgQEAKK3sKKyAgIm5hbWUiOiAiZGly
ZWN0b3IiLAorICAiZGVzY3JpcHRpb24iOiAiQSBjbGllbnQgU2lkZS9TZXJ2ZXIgU2lkZSBSb3V0
ZXIiLAorICAiYXV0aG9yIjogIkNoYXJsaWUgUm9iYmlucyA8Y2hhcmxpZS5yb2JiaW5zQGdtYWls
LmNvbT4iLAorICAidmVyc2lvbiI6ICIxLjIuOCIsCisgICJtYWludGFpbmVycyI6IFsKKyAgICAi
aGlqMW54IDxwYW9sb0Bub2Rlaml0c3UuY29tPiIsCisgICAgImJlYXVndW5kZXJzb24gPGJlYXVA
YmVhdWd1bmRlcnNvbi5jb20+IgorICBdLAorICAicmVwb3NpdG9yeSI6IHsKKyAgICAidHlwZSI6
ICJnaXQiLAorICAgICJ1cmwiOiAiaHR0cDovL2dpdGh1Yi5jb20vZmxhdGlyb24vZGlyZWN0b3Iu
Z2l0IgorICB9LAorICAia2V5d29yZHMiOiBbCisgICAgIlVSTCIsCisgICAgInJvdXRlciIsCisg
ICAgImh0dHAiLAorICAgICJjbGkiLAorICAgICJmbGF0aXJvbiIsCisgICAgImNsaWVudCBzaWRl
IiwKKyAgICAiZW5kZXIiCisgIF0sCisgICJkZXZEZXBlbmRlbmNpZXMiOiB7CisgICAgImFwaS1l
YXN5IjogIjAuNC54IiwKKyAgICAiY29kZXN1cmdlb24iOiAiaHR0cHM6Ly9naXRodWIuY29tL2hp
ajFueC9jb2Rlc3VyZ2Vvbi90YXJiYWxsL21hc3RlciIsCisgICAgImNvbG9ycyI6ICIxLjAueCIs
CisgICAgInF1bml0anMiOiAiMS45LngiLAorICAgICJyZXF1ZXN0IjogIjIuNDkueCIsCisgICAg
InVnbGlmeS1qcyI6ICIyLjQueCIsCisgICAgInZvd3MiOiAiMC44LjAiCisgIH0sCisgICJlbmRl
ciI6ICIuL2J1aWxkL2VuZGVyLmpzIiwKKyAgImJyb3dzZXJpZnkiOiAiLi9idWlsZC9kaXJlY3Rv
ciIsCisgICJtYWluIjogIi4vbGliL2RpcmVjdG9yIiwKKyAgImVuZ2luZXMiOiB7CisgICAgIm5v
ZGUiOiAiPj0gMC44LjAiCisgIH0sCisgICJzY3JpcHRzIjogeworICAgICJ0ZXN0IjogInZvd3Mg
dGVzdC9zZXJ2ZXIvKi8qLXRlc3QuanMgLS1zcGVjIgorICB9Cit9CmRpZmYgLS1naXQgYS9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Z1bmN0aW9uYWwtcHJv
Zy1leGFtcGxlcy9lbG0vaW5kZXguaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvZnVuY3Rpb25hbC1wcm9nLWV4YW1wbGVzL2VsbS9pbmRleC5odG1s
CmluZGV4IDk1MTRjNGNkOGEwNjgxZjIxNjMxNThkOGNmYTI5NmFiNTg5ODc3Y2YuLjk5MTM0YTI1
ZmM1MzljOGU4ZDUzZTQxMWNmNjhkYjg3ZTNiZWRjZmYgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZnVuY3Rpb25hbC1wcm9nLWV4YW1w
bGVzL2VsbS9pbmRleC5odG1sCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvZnVuY3Rpb25hbC1wcm9nLWV4YW1wbGVzL2VsbS9pbmRleC5odG1sCkBA
IC0xNiw3ICsxNiw3IEBACiA8L2hlYWQ+CiAKIDxib2R5PgotPHNjcmlwdCBzcmM9ImJ1aWxkL2Vs
bS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iZGlzdC9lbG0uanMiPjwvc2NyaXB0PgogPHNj
cmlwdD4KICAgICAoZnVuY3Rpb24gKCkgewogICAgICAgICAvLyB2YXIgcmVzdWx0ID0gbG9jYWxT
dG9yYWdlLmdldEl0ZW0oJ2VsbS10b2RvLW1vZGVsJyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>310008</attachid>
            <date>2017-05-12 21:02:33 -0700</date>
            <delta_ts>2017-05-12 22:18:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170513-20170512210232.patch</filename>
            <type>text/plain</type>
            <size>74612</size>
            <attacher name="Addy Osmani">addyo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2ODEwCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDU5ZTYwNDhjODMx
OGE3MzczZGZlYzg4MTU5ODgxMDM3MTM0NTMzN2YuLmQ5ZDg3ZDNkYWNmYzIwY2QyM2E2NjYxZTM1
NDk0NTkxYzVhOTZmNjcgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzEgQEAKIDIwMTctMDUt
MTIgIEFkZHkgT3NtYW5pICA8YWRkeW9zbWFuaUBnbWFpbC5jb20+CiAKKyAgICAgICAgVXBkYXRl
IHRvIFNwZWVkb21ldGVyIDIuMCB3L3VwZGF0ZWQgZnJhbWV3b3JrcyArIG5ldyB3b3JrbG9hZHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDUxMwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNwZWVkb21l
dGVyOiByZWZyZXNoIHRlc3QgcnVubmVyIGFuZCBmaXggYXBwcyB0byB3b3JrIHdpdGggaXQKKwor
ICAgICAgICAqIFNwZWVkb21ldGVyL0ludGVyYWN0aXZlUnVubmVyLmh0bWw6CisgICAgICAgICog
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rlc3RzLmpzOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL2Rpc3QvaW5kZXgu
aHRtbDoKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvZW1iZXJqcy9hc3NldHMvdG9kb212Yy5qczoKKyAgICAgICAgKiBTcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9pbmRl
eC5odG1sOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS9hcHAvc2VydmljZXMvbWVtb3J5LmpzOgorICAg
ICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9lbWJlcmpzL3NvdXJjZS9hcHAvc2VydmljZXMvcmVwby5qczoKKyAgICAgICAgKiBTcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy90ZXN0
cy9pbmRleC5odG1sOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvaW5kZXguaHRtbDoKKyAgICAgICAgKiBTcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVf
bW9kdWxlcy9kaXJlY3Rvci9MSUNFTlNFOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxl
cy9kaXJlY3Rvci9ib3dlci5qc29uOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9k
aXJlY3Rvci9kaXN0L2RpcmVjdG9yLmpzOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxl
cy9kaXJlY3Rvci9kaXN0L2RpcmVjdG9yLm1pbi5qczogQWRkZWQuCisgICAgICAgICogU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2Rl
X21vZHVsZXMvZGlyZWN0b3IvZGlzdC9lbmRlci5qczogQWRkZWQuCisgICAgICAgICogU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2Rl
X21vZHVsZXMvZGlyZWN0b3IvcGFja2FnZS5qc29uOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9mdW5jdGlvbmFsLXByb2ctZXhhbXBsZXMvZWxtL2luZGV4
Lmh0bWw6CisKKzIwMTctMDUtMTIgIEFkZHkgT3NtYW5pICA8YWRkeW9zbWFuaUBnbWFpbC5jb20+
CisKICAgICAgICAgU3BlZWRvbWV0ZXI6IEFkZCBhIFJlYWN0LmpzIFRvZG9NVkMgaW1wbGVtZW50
YXRpb24KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
MTQ0NAogCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL0ludGVyYWN0
aXZlUnVubmVyLmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL0ludGVyYWN0aXZl
UnVubmVyLmh0bWwKaW5kZXggOTIwNzZhNGFjYWJlN2RiY2ViOGIwYjViOWU1MzM2ODg2ZDllYzQ1
NS4uNzgwMzY4MGQxN2QxZDliNzc1NzZhMjdhODY4YTA0NDljYjdiOGEzMyAxMDA2NDQKLS0tIGEv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9JbnRlcmFjdGl2ZVJ1bm5lci5odG1sCisrKyBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvSW50ZXJhY3RpdmVSdW5uZXIuaHRtbApAQCAt
MSw3ICsxLDcgQEAKIDwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KLTx0aXRsZT5Eb1lv
dUV2ZW5CZW5jaDwvdGl0bGU+Cis8dGl0bGU+U3BlZWRvbWV0ZXIgMi4wIEludGVyYWN0aXZlIFJ1
bm5lcjwvdGl0bGU+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JlbmNobWFyay1ydW5uZXIuanMi
IGRlZmVyPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy90ZXN0cy5qcyIgZGVmZXI+
PC9zY3JpcHQ+CiA8c3R5bGU+CkBAIC02NiwxMyArNjYsMzkgQEAgZnVuY3Rpb24gY3JlYXRlVUlG
b3JTdWl0ZXMoc3VpdGVzLCBvbnN0ZXAsIG9ucnVuKSB7CiAKICAgICB2YXIgYnV0dG9uID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7CiAgICAgYnV0dG9uLnRleHRDb250ZW50ID0g
J1J1bic7CisgICAgYnV0dG9uLmlkID0gJ3J1blN1aXRlcyc7CiAgICAgYnV0dG9uLm9uY2xpY2sg
PSBvbnJ1bjsKICAgICBjb250cm9sLmFwcGVuZENoaWxkKGJ1dHRvbik7CiAKICAgICByZXR1cm4g
Y29udHJvbDsKIH0KIAordmFyIHBhcnNlUXVlcnlTdHJpbmcgPSAoZnVuY3Rpb24gKHBhaXJMaXN0
KSB7CisgICAgdmFyIHBhaXJzID0ge307CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYWlyTGlz
dC5sZW5ndGg7ICsraSkgeworICAgICAgICB2YXIga2V5VmFsdWUgPSBwYWlyTGlzdFtpXS5zcGxp
dCgnPScsIDIpOworICAgICAgICBpZiAoa2V5VmFsdWUubGVuZ3RoID09IDEpCisgICAgICAgICAg
ICBwYWlyc1trZXlWYWx1ZVswXV0gPSAnJzsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcGFp
cnNba2V5VmFsdWVbMF1dID0gZGVjb2RlVVJJQ29tcG9uZW50KGtleVZhbHVlWzFdLnJlcGxhY2Uo
L1wrL2csICcgJykpOworICAgIH0KKyAgICByZXR1cm4gcGFpcnM7Cit9KSh3aW5kb3cubG9jYXRp
b24uc2VhcmNoLnN1YnN0cigxKS5zcGxpdCgnJicpKTsKKworZnVuY3Rpb24gZGlzYWJsZUFsbFN1
aXRlc0V4Y2VwdChzdWl0ZU5hbWUpIHsKKyAgICBpZiAoc3VpdGVOYW1lID09PSB1bmRlZmluZWQg
fHwgc3VpdGVOYW1lID09PSAnJykKKyAgICAgICAgcmV0dXJuOworICAgIFN1aXRlcy5mb3JFYWNo
KGZ1bmN0aW9uKGVsZW1lbnQpIHsKKyAgICAgICAgaWYgKGVsZW1lbnQubmFtZSAhPT0gc3VpdGVO
YW1lKQorICAgICAgICAgICAgZWxlbWVudC5kaXNhYmxlZCA9IHRydWU7CisgICAgfSk7Cit9CisK
IGZ1bmN0aW9uIHN0YXJ0VGVzdCgpIHsKKyAgICB2YXIgcXVlcnlQYXJhbSA9IHBhcnNlUXVlcnlT
dHJpbmdbJ3N1aXRlJ107CisgICAgaWYgKHF1ZXJ5UGFyYW0gIT09IHVuZGVmaW5lZCkKKyAgICAg
ICAgZGlzYWJsZUFsbFN1aXRlc0V4Y2VwdChxdWVyeVBhcmFtKTsKKwogICAgIHZhciBydW5uZXIg
PSBuZXcgQmVuY2htYXJrUnVubmVyKFN1aXRlcywgewogICAgICAgICB3aWxsUnVuVGVzdDogZnVu
Y3Rpb24gKHN1aXRlLCB0ZXN0KSB7CiAgICAgICAgICAgICB0ZXN0LmFuY2hvci5jbGFzc0xpc3Qu
YWRkKCdydW5uaW5nJyk7CkBAIC0xMTIsNiArMTM4LDkgQEAgZnVuY3Rpb24gc3RhcnRUZXN0KCkg
ewogICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY3JlYXRlVUlGb3JTdWl0ZXMoU3VpdGVz
LAogICAgICAgICBmdW5jdGlvbiAoKSB7IHJ1bm5lci5zdGVwKGN1cnJlbnRTdGF0ZSkudGhlbihm
dW5jdGlvbiAoc3RhdGUpIHsgY3VycmVudFN0YXRlID0gc3RhdGU7IH0pOyB9LAogICAgICAgICBm
dW5jdGlvbiAoKSB7IHJ1bm5lci5ydW5BbGxTdGVwcyhjdXJyZW50U3RhdGUpOyBjdXJyZW50U3Rh
dGUgPSBudWxsOyB9KSk7CisKKyAgICBpZiAocGFyc2VRdWVyeVN0cmluZ1snc3RhcnRBdXRvbWF0
aWNhbGx5J10gIT09IHVuZGVmaW5lZCkKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3J1blN1aXRlcycpLmNsaWNrKCk7CiB9CiAKIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2Fk
Jywgc3RhcnRUZXN0KTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3Rlc3RzLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdGVzdHMuanMKaW5kZXggZTZmMjM5Y2M5NGVhMjQ3ZmRmYWZhOGVmMzM0YTRmY2IxNzQyODBk
OS4uMWI0OWJiNzJiZmY0MzYyYjA0MjgzMWFhNzI0MDQ3MjZhNGQyN2U0ZSAxMDA2NDQKLS0tIGEv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdGVzdHMuanMKKysrIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdGVzdHMuanMKQEAgLTEsMjEgKzEs
MzEgQEAKIHZhciBudW1iZXJPZkl0ZW1zVG9BZGQgPSAxMDA7CiB2YXIgU3VpdGVzID0gW107Cit2
YXIgRU5URVJfS0VZX0NPREUgPSAxMzsKKwordmFyIHRyaWdnZXJFbnRlciA9IGZ1bmN0aW9uIChl
bGVtZW50LCB0eXBlKSB7CisgICAgdmFyIGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2
ZW50cycpOworICAgIGV2ZW50LmluaXRFdmVudCh0eXBlLCB0cnVlLCB0cnVlKTsKKyAgICBPYmpl
Y3QuZGVmaW5lUHJvcGVydHkoZXZlbnQsICdrZXlDb2RlJywge3ZhbHVlOiBFTlRFUl9LRVlfQ09E
RX0pOworICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShldmVudCwgJ3doaWNoJywge3ZhbHVlOiBF
TlRFUl9LRVlfQ09ERX0pOworICAgIGV2ZW50LmtleSA9ICdFTlRFUic7CisgICAgZWxlbWVudC5k
aXNwYXRjaEV2ZW50KGV2ZW50KTsKK30KIAogU3VpdGVzLnB1c2goewogICAgIG5hbWU6ICdWYW5p
bGxhSlMtVG9kb01WQycsCiAgICAgdXJsOiAndG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3Zhbmls
bGFqcy9pbmRleC5odG1sJywKICAgICBwcmVwYXJlOiBmdW5jdGlvbiAocnVubmVyLCBjb250ZW50
V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKLSAgICAgICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9y
RWxlbWVudCgnI25ldy10b2RvJykudGhlbihmdW5jdGlvbiAoZWxlbWVudCkgeworICAgICAgICBy
ZXR1cm4gcnVubmVyLndhaXRGb3JFbGVtZW50KCcubmV3LXRvZG8nKS50aGVuKGZ1bmN0aW9uIChl
bGVtZW50KSB7CiAgICAgICAgICAgICBlbGVtZW50LmZvY3VzKCk7CiAgICAgICAgICAgICByZXR1
cm4gZWxlbWVudDsKICAgICAgICAgfSk7CiAgICAgfSwKICAgICB0ZXN0czogWwogICAgICAgICBu
ZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0FkZGluZycgKyBudW1iZXJPZkl0ZW1zVG9BZGQgKyAnSXRl
bXMnLCBmdW5jdGlvbiAobmV3VG9kbywgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7
Ci0gICAgICAgICAgICB2YXIgdG9kb0NvbnRyb2xsZXIgPSBjb250ZW50V2luZG93LnRvZG8uY29u
dHJvbGxlcjsKICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtYmVyT2ZJdGVtc1Rv
QWRkOyBpKyspIHsKICAgICAgICAgICAgICAgICBuZXdUb2RvLnZhbHVlID0gJ1NvbWV0aGluZyB0
byBkbyAnICsgaTsKLSAgICAgICAgICAgICAgICB0b2RvQ29udHJvbGxlci5hZGRJdGVtKHtrZXlD
b2RlOiB0b2RvQ29udHJvbGxlci5FTlRFUl9LRVksIHRhcmdldDogbmV3VG9kb30pOworICAgICAg
ICAgICAgICAgIG5ld1RvZG8uZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2NoYW5nZScpKTsKKyAg
ICAgICAgICAgICAgICB0cmlnZ2VyRW50ZXIobmV3VG9kbywgJ2tleXByZXNzJyk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0pLAogICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0NvbXBs
ZXRpbmdBbGxJdGVtcycsIGZ1bmN0aW9uIChuZXdUb2RvLCBjb250ZW50V2luZG93LCBjb250ZW50
RG9jdW1lbnQpIHsKQEAgLTMyLDU2ICs0Miw4NCBAQCBTdWl0ZXMucHVzaCh7CiB9KTsKIAogU3Vp
dGVzLnB1c2goewotICAgIG5hbWU6ICdFbWJlckpTLVRvZG9NVkMnLAotICAgIHVybDogJ3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvaW5kZXguaHRtbCcsCisgICAgbmFtZTog
J1ZhbmlsbGEtRVMyMDE1LVRvZG9NVkMnLAorICAgIHVybDogJ3RvZG9tdmMvdmFuaWxsYS1leGFt
cGxlcy9lczIwMTUvaW5kZXguaHRtbCcsCiAgICAgcHJlcGFyZTogZnVuY3Rpb24gKHJ1bm5lciwg
Y29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7Ci0gICAgICAgIHJldHVybiBydW5uZXIu
d2FpdEZvckVsZW1lbnQoJyNuZXctdG9kbycpLnRoZW4oZnVuY3Rpb24gKGVsZW1lbnQpIHsKKyAg
ICAgICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVudCgnLm5ldy10b2RvJykudGhlbihmdW5j
dGlvbiAoZWxlbWVudCkgewogICAgICAgICAgICAgZWxlbWVudC5mb2N1cygpOwotICAgICAgICAg
ICAgcmV0dXJuIHsKLSAgICAgICAgICAgICAgICB2aWV3czogY29udGVudFdpbmRvdy5FbWJlci5W
aWV3LnZpZXdzLAotICAgICAgICAgICAgICAgIGVtYmVyUnVuOiBjb250ZW50V2luZG93LkVtYmVy
LnJ1biwKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBlbGVtZW50OwogICAgICAg
ICB9KTsKICAgICB9LAogICAgIHRlc3RzOiBbCi0gICAgICAgIG5ldyBCZW5jaG1hcmtUZXN0U3Rl
cCgnQWRkaW5nJyArIG51bWJlck9mSXRlbXNUb0FkZCArICdJdGVtcycsIGZ1bmN0aW9uIChwYXJh
bXMpIHsKKyAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdBZGRpbmcnICsgbnVtYmVyT2ZJ
dGVtc1RvQWRkICsgJ0l0ZW1zJywgZnVuY3Rpb24gKG5ld1RvZG8sIGNvbnRlbnRXaW5kb3csIGNv
bnRlbnREb2N1bWVudCkgewogICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1iZXJP
Zkl0ZW1zVG9BZGQ7IGkrKykgewotICAgICAgICAgICAgICAgIHBhcmFtcy5lbWJlclJ1bihmdW5j
dGlvbiAoKSB7IHBhcmFtcy52aWV3c1sibmV3LXRvZG8iXS5zZXQoJ3ZhbHVlJywgJ1NvbWV0aGlu
ZyB0byBkbycgKyBpKTsgfSk7Ci0gICAgICAgICAgICAgICAgcGFyYW1zLmVtYmVyUnVuKGZ1bmN0
aW9uICgpIHsgcGFyYW1zLnZpZXdzWyJuZXctdG9kbyJdLmluc2VydE5ld2xpbmUoZG9jdW1lbnQu
Y3JlYXRlRXZlbnQoJ0V2ZW50JykpOyB9KTsKKyAgICAgICAgICAgICAgICBuZXdUb2RvLnZhbHVl
ID0gJ1NvbWV0aGluZyB0byBkbycgKyBpOworICAgICAgICAgICAgICAgIG5ld1RvZG8uZGlzcGF0
Y2hFdmVudChuZXcgRXZlbnQoJ2NoYW5nZScpKTsKKyAgICAgICAgICAgICAgICB0cmlnZ2VyRW50
ZXIobmV3VG9kbywgJ2tleXByZXNzJyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0pLAogICAg
ICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0NvbXBsZXRpbmdBbGxJdGVtcycsIGZ1bmN0aW9u
IChwYXJhbXMsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgewotICAgICAgICAgICAg
dmFyIGNoZWNrYm94ZXMgPSBjb250ZW50RG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmVtYmVy
LWNoZWNrYm94Jyk7Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoZWNrYm94ZXMu
bGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgICAgICB2YXIgdmlldyA9IHBhcmFtcy52aWV3c1tj
aGVja2JveGVzW2ldLmlkXTsKLSAgICAgICAgICAgICAgICBwYXJhbXMuZW1iZXJSdW4oZnVuY3Rp
b24gKCkgeyB2aWV3LnNldCgnY2hlY2tlZCcsIHRydWUpOyB9KTsKKyAgICAgICAgICAgIHZhciBj
aGVja2JveGVzID0gY29udGVudERvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy50b2dnbGUnKTsK
KyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hlY2tib3hlcy5sZW5ndGg7IGkrKykK
KyAgICAgICAgICAgICAgICBjaGVja2JveGVzW2ldLmNsaWNrKCk7CisgICAgICAgIH0pLAorICAg
ICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0RlbGV0aW5nSXRlbXMnLCBmdW5jdGlvbiAocGFy
YW1zLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgICAgIHZhciBk
ZWxldGVCdXR0b25zID0gY29udGVudERvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5kZXN0cm95
Jyk7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRlbGV0ZUJ1dHRvbnMubGVuZ3Ro
OyBpKyspCisgICAgICAgICAgICAgICAgZGVsZXRlQnV0dG9uc1tpXS5jbGljaygpOworICAgICAg
ICB9KSwKKyAgICBdCit9KTsKKworU3VpdGVzLnB1c2goeworICAgIG5hbWU6ICdWYW5pbGxhLUVT
MjAxNS1CYWJlbC1XZWJwYWNrLVRvZG9NVkMnLAorICAgIHVybDogJ3RvZG9tdmMvdmFuaWxsYS1l
eGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0L2luZGV4Lmh0bWwnLAorICAgIHByZXBh
cmU6IGZ1bmN0aW9uIChydW5uZXIsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgewor
ICAgICAgICByZXR1cm4gcnVubmVyLndhaXRGb3JFbGVtZW50KCcubmV3LXRvZG8nKS50aGVuKGZ1
bmN0aW9uIChlbGVtZW50KSB7CisgICAgICAgICAgICBlbGVtZW50LmZvY3VzKCk7CisgICAgICAg
ICAgICByZXR1cm4gZWxlbWVudDsKKyAgICAgICAgfSk7CisgICAgfSwKKyAgICB0ZXN0czogWwor
ICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0FkZGluZycgKyBudW1iZXJPZkl0ZW1zVG9B
ZGQgKyAnSXRlbXMnLCBmdW5jdGlvbiAobmV3VG9kbywgY29udGVudFdpbmRvdywgY29udGVudERv
Y3VtZW50KSB7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bWJlck9mSXRlbXNU
b0FkZDsgaSsrKSB7CisgICAgICAgICAgICAgICAgbmV3VG9kby52YWx1ZSA9ICdTb21ldGhpbmcg
dG8gZG8nICsgaTsKKyAgICAgICAgICAgICAgICBuZXdUb2RvLmRpc3BhdGNoRXZlbnQobmV3IEV2
ZW50KCdjaGFuZ2UnKSk7CisgICAgICAgICAgICAgICAgdHJpZ2dlckVudGVyKG5ld1RvZG8sICdr
ZXlwcmVzcycpOwogICAgICAgICAgICAgfQogICAgICAgICB9KSwKKyAgICAgICAgbmV3IEJlbmNo
bWFya1Rlc3RTdGVwKCdDb21wbGV0aW5nQWxsSXRlbXMnLCBmdW5jdGlvbiAocGFyYW1zLCBjb250
ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgICAgIHZhciBjaGVja2JveGVz
ID0gY29udGVudERvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy50b2dnbGUnKTsKKyAgICAgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hlY2tib3hlcy5sZW5ndGg7IGkrKykKKyAgICAgICAg
ICAgICAgICBjaGVja2JveGVzW2ldLmNsaWNrKCk7CisgICAgICAgIH0pLAogICAgICAgICBuZXcg
QmVuY2htYXJrVGVzdFN0ZXAoJ0RlbGV0aW5nSXRlbXMnLCBmdW5jdGlvbiAocGFyYW1zLCBjb250
ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKICAgICAgICAgICAgIHZhciBkZWxldGVCdXR0
b25zID0gY29udGVudERvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5kZXN0cm95Jyk7CiAgICAg
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRlbGV0ZUJ1dHRvbnMubGVuZ3RoOyBpKyspCi0g
ICAgICAgICAgICAgICAgcGFyYW1zLmVtYmVyUnVuKGZ1bmN0aW9uICgpIHsgZGVsZXRlQnV0dG9u
c1tpXS5jbGljaygpOyB9KTsKKyAgICAgICAgICAgICAgICBkZWxldGVCdXR0b25zW2ldLmNsaWNr
KCk7CiAgICAgICAgIH0pLAogICAgIF0KIH0pOwogCiBTdWl0ZXMucHVzaCh7Ci0gICAgbmFtZTog
J0JhY2tib25lSlMtVG9kb01WQycsCi0gICAgdXJsOiAndG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvYmFja2JvbmUvaW5kZXguaHRtbCcsCisgICAgbmFtZTogJ1JlYWN0LVRvZG9NVkMnLAor
ICAgIHVybDogJ3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L2luZGV4Lmh0bWwn
LAogICAgIHByZXBhcmU6IGZ1bmN0aW9uIChydW5uZXIsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnRE
b2N1bWVudCkgewotICAgIGNvbnRlbnRXaW5kb3cuQmFja2JvbmUuc3luYyA9IGZ1bmN0aW9uICgp
IHt9Ci0gICAgICAgIHJldHVybiBydW5uZXIud2FpdEZvckVsZW1lbnQoJyNuZXctdG9kbycpLnRo
ZW4oZnVuY3Rpb24gKGVsZW1lbnQpIHsKKyAgICAgICAgY29udGVudFdpbmRvdy5hcHAuVXRpbHMu
c3RvcmUgPSBmdW5jdGlvbiAoKSB7fQorICAgICAgICByZXR1cm4gcnVubmVyLndhaXRGb3JFbGVt
ZW50KCcubmV3LXRvZG8nKS50aGVuKGZ1bmN0aW9uIChlbGVtZW50KSB7CiAgICAgICAgICAgICBl
bGVtZW50LmZvY3VzKCk7CiAgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKICAgICAgICAgfSk7
CiAgICAgfSwKICAgICB0ZXN0czogWwogICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0Fk
ZGluZycgKyBudW1iZXJPZkl0ZW1zVG9BZGQgKyAnSXRlbXMnLCBmdW5jdGlvbiAobmV3VG9kbywg
Y29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7Ci0gICAgICAgICAgICB2YXIgYXBwVmll
dyA9IGNvbnRlbnRXaW5kb3cuYXBwVmlldzsKLSAgICAgICAgICAgIHZhciBmYWtlRXZlbnQgPSB7
d2hpY2g6IGNvbnRlbnRXaW5kb3cuRU5URVJfS0VZfTsKICAgICAgICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgbnVtYmVyT2ZJdGVtc1RvQWRkOyBpKyspIHsKICAgICAgICAgICAgICAgICBuZXdU
b2RvLnZhbHVlID0gJ1NvbWV0aGluZyB0byBkbyAnICsgaTsKLSAgICAgICAgICAgICAgICBhcHBW
aWV3LmNyZWF0ZU9uRW50ZXIoZmFrZUV2ZW50KTsKKyAgICAgICAgICAgICAgICBuZXdUb2RvLmRp
c3BhdGNoRXZlbnQobmV3IEV2ZW50KCdpbnB1dCcsIHsKKyAgICAgICAgICAgICAgICAgIGJ1YmJs
ZXM6IHRydWUsCisgICAgICAgICAgICAgICAgICBjYW5jZWxhYmxlOiB0cnVlCisgICAgICAgICAg
ICAgICAgfSkpOworICAgICAgICAgICAgICAgIHRyaWdnZXJFbnRlcihuZXdUb2RvLCAna2V5ZG93
bicpOwogICAgICAgICAgICAgfQogICAgICAgICB9KSwKICAgICAgICAgbmV3IEJlbmNobWFya1Rl
c3RTdGVwKCdDb21wbGV0aW5nQWxsSXRlbXMnLCBmdW5jdGlvbiAobmV3VG9kbywgY29udGVudFdp
bmRvdywgY29udGVudERvY3VtZW50KSB7CkBAIC05OCw1NyArMTM2LDkwIEBAIFN1aXRlcy5wdXNo
KHsKIH0pOwogCiBTdWl0ZXMucHVzaCh7Ci0gICAgbmFtZTogJ2pRdWVyeS1Ub2RvTVZDJywKLSAg
ICB1cmw6ICd0b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvaW5kZXguaHRtbCcs
CisgICAgbmFtZTogJ1JlYWN0LVJlZHV4LVRvZG9NVkMnLAorICAgIHVybDogJ3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L2Rpc3QvaW5kZXguaHRtbCcsCiAgICAgcHJl
cGFyZTogZnVuY3Rpb24gKHJ1bm5lciwgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7
Ci0gICAgICAgIHJldHVybiBydW5uZXIud2FpdEZvckVsZW1lbnQoJyNuZXctdG9kbycpLnRoZW4o
ZnVuY3Rpb24gKGVsZW1lbnQpIHsKKyAgICAgICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVu
dCgnLm5ldy10b2RvJykudGhlbihmdW5jdGlvbiAoZWxlbWVudCkgewogICAgICAgICAgICAgZWxl
bWVudC5mb2N1cygpOwogICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CiAgICAgICAgIH0pOwog
ICAgIH0sCiAgICAgdGVzdHM6IFsKICAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdBZGRp
bmcnICsgbnVtYmVyT2ZJdGVtc1RvQWRkICsgJ0l0ZW1zJywgZnVuY3Rpb24gKG5ld1RvZG8sIGNv
bnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgewotICAgICAgICAgICAgdmFyIGFwcCA9IGNv
bnRlbnRXaW5kb3cuYXBwOwotICAgICAgICAgICAgdmFyIGZha2VFdmVudCA9IHt3aGljaDogYXBw
LkVOVEVSX0tFWX07CiAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bWJlck9mSXRl
bXNUb0FkZDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgbmV3VG9kby52YWx1ZSA9ICdTb21ldGhp
bmcgdG8gZG8gJyArIGk7Ci0gICAgICAgICAgICAgICAgYXBwLmNyZWF0ZS5jYWxsKG5ld1RvZG8s
IGZha2VFdmVudCk7CisgICAgICAgICAgICAgICAgbmV3VG9kby52YWx1ZSA9ICdTb21ldGhpbmcg
dG8gZG8nICsgaTsKKyAgICAgICAgICAgICAgICB0cmlnZ2VyRW50ZXIobmV3VG9kbywgJ2tleWRv
d24nKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSksCi0gICAgICAgIG5ldyBCZW5jaG1hcmtU
ZXN0U3RlcCgnQ29tcGxldGluZ0FsbEl0ZW1zJywgZnVuY3Rpb24gKG5ld1RvZG8sIGNvbnRlbnRX
aW5kb3csIGNvbnRlbnREb2N1bWVudCkgewotICAgICAgICAgICAgdmFyIGFwcCA9IGNvbnRlbnRX
aW5kb3cuYXBwOworICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0NvbXBsZXRpbmdBbGxJ
dGVtcycsIGZ1bmN0aW9uIChwYXJhbXMsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkg
ewogICAgICAgICAgICAgdmFyIGNoZWNrYm94ZXMgPSBjb250ZW50RG9jdW1lbnQucXVlcnlTZWxl
Y3RvckFsbCgnLnRvZ2dsZScpOwotICAgICAgICAgICAgdmFyICQgPSBjb250ZW50V2luZG93LiQ7
Ci0KLSAgICAgICAgICAgIGl0ZW1JbmRleFRvSWQgPSBuZXcgQXJyYXkoY2hlY2tib3hlcy5sZW5n
dGgpOwogICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGVja2JveGVzLmxlbmd0aDsg
aSsrKQotICAgICAgICAgICAgICAgIGl0ZW1JbmRleFRvSWRbaV0gPSAkKGNoZWNrYm94ZXNbaV0p
LmNsb3Nlc3QoJ2xpJykuZGF0YSgnaWQnKTsKKyAgICAgICAgICAgICAgICBjaGVja2JveGVzW2ld
LmNsaWNrKCk7CisgICAgICAgIH0pLAorICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0Rl
bGV0aW5nSXRlbXMnLCBmdW5jdGlvbiAocGFyYW1zLCBjb250ZW50V2luZG93LCBjb250ZW50RG9j
dW1lbnQpIHsKKyAgICAgICAgICAgIHZhciBkZWxldGVCdXR0b25zID0gY29udGVudERvY3VtZW50
LnF1ZXJ5U2VsZWN0b3JBbGwoJy5kZXN0cm95Jyk7CisgICAgICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGRlbGV0ZUJ1dHRvbnMubGVuZ3RoOyBpKyspCisgICAgICAgICAgICAgICAgZGVsZXRl
QnV0dG9uc1tpXS5jbGljaygpOworICAgICAgICB9KSwKKyAgICBdCit9KTsKIAotICAgICAgICAg
ICAgYXBwLmdldFRvZG8gPSBmdW5jdGlvbiAoZWxlbWVudCwgY2FsbGJhY2spIHsKLSAgICAgICAg
ICAgICAgICB2YXIgc2VsZiA9IHRoaXM7Ci0gICAgICAgICAgICAgICAgdmFyIGlkID0gaXRlbUlu
ZGV4VG9JZFt0aGlzLmN1cnJlbnRJdGVtSW5kZXhdOwotICAgICAgICAgICAgICAgICQuZWFjaCh0
aGlzLnRvZG9zLCBmdW5jdGlvbiAoaiwgdmFsKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2
YWwuaWQgPT09IGlkKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjay5hcHBseShz
ZWxmLCBhcmd1bWVudHMpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSk7CitTdWl0ZXMucHVzaCh7
CisgICAgbmFtZTogJ0VtYmVySlMtVG9kb01WQycsCisgICAgdXJsOiAndG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvZW1iZXJqcycsCisgICAgcHJlcGFyZTogZnVuY3Rpb24gKHJ1bm5lciwg
Y29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CisgICAgICAgIHJldHVybiBydW5uZXIu
d2FpdEZvckVsZW1lbnQoJyNuZXctdG9kbycpLnRoZW4oZnVuY3Rpb24gKGVsZW1lbnQpIHsKKyAg
ICAgICAgICAgIGVsZW1lbnQuZm9jdXMoKTsKKyAgICAgICAgICAgIHJldHVybiBlbGVtZW50Owor
ICAgICAgICB9KTsKKyAgICB9LAorICAgIHRlc3RzOiBbCisgICAgICAgIG5ldyBCZW5jaG1hcmtU
ZXN0U3RlcCgnQWRkaW5nJyArIG51bWJlck9mSXRlbXNUb0FkZCArICdJdGVtcycsIGZ1bmN0aW9u
IChuZXdUb2RvLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgICAg
IHZhciBhcHBWaWV3ID0gY29udGVudFdpbmRvdy5BcHA7CisgICAgICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IG51bWJlck9mSXRlbXNUb0FkZDsgaSsrKSB7CisgICAgICAgICAgICAgICAgbmV3
VG9kby52YWx1ZSA9ICdTb21ldGhpbmcgdG8gZG8nICsgaTsKKyAgICAgICAgICAgICAgICB0cmln
Z2VyRW50ZXIobmV3VG9kbywgJ2tleWRvd24nKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgfSks
CisgICAgICAgIG5ldyBCZW5jaG1hcmtUZXN0U3RlcCgnQ29tcGxldGluZ0FsbEl0ZW1zJywgZnVu
Y3Rpb24gKHBhcmFtcywgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CisgICAgICAg
ICAgICB2YXIgY2hlY2tib3hlcyA9IGNvbnRlbnREb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcu
dG9nZ2xlJyk7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoZWNrYm94ZXMubGVu
Z3RoOyBpKyspCisgICAgICAgICAgICAgICAgY2hlY2tib3hlc1tpXS5jbGljaygpOworICAgICAg
ICB9KSwKKyAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdEZWxldGluZ0l0ZW1zJywgZnVu
Y3Rpb24gKHBhcmFtcywgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CisgICAgICAg
ICAgICB2YXIgZGVsZXRlQnV0dG9ucyA9IGNvbnRlbnREb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxs
KCcuZGVzdHJveScpOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkZWxldGVCdXR0
b25zLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgICAgIGRlbGV0ZUJ1dHRvbnNbaV0uY2xpY2so
KTsKKyAgICAgICAgfSksCisgICAgXQorfSk7CiAKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgY2hlY2tib3hlcy5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgICAgIGFwcC5jdXJy
ZW50SXRlbUluZGV4ID0gaTsKLSAgICAgICAgICAgICAgICBhcHAudG9nZ2xlLmNhbGwoY2hlY2ti
b3hlc1tpXSk7CitTdWl0ZXMucHVzaCh7CisgICAgbmFtZTogJ0JhY2tib25lSlMtVG9kb01WQycs
CisgICAgdXJsOiAndG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvaW5kZXgu
aHRtbCcsCisgICAgcHJlcGFyZTogZnVuY3Rpb24gKHJ1bm5lciwgY29udGVudFdpbmRvdywgY29u
dGVudERvY3VtZW50KSB7CisgICAgY29udGVudFdpbmRvdy5CYWNrYm9uZS5zeW5jID0gZnVuY3Rp
b24gKCkge30KKyAgICAgICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVudCgnLm5ldy10b2Rv
JykudGhlbihmdW5jdGlvbiAoZWxlbWVudCkgeworICAgICAgICAgICAgZWxlbWVudC5mb2N1cygp
OworICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgICAgIH0pOworICAgIH0sCisgICAg
dGVzdHM6IFsKKyAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdBZGRpbmcnICsgbnVtYmVy
T2ZJdGVtc1RvQWRkICsgJ0l0ZW1zJywgZnVuY3Rpb24gKG5ld1RvZG8sIGNvbnRlbnRXaW5kb3cs
IGNvbnRlbnREb2N1bWVudCkgeworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1i
ZXJPZkl0ZW1zVG9BZGQ7IGkrKykgeworICAgICAgICAgICAgICAgIG5ld1RvZG8udmFsdWUgPSAn
U29tZXRoaW5nIHRvIGRvICcgKyBpOworICAgICAgICAgICAgICAgIHRyaWdnZXJFbnRlcihuZXdU
b2RvLCAna2V5cHJlc3MnKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSksCisgICAgICAgIG5l
dyBCZW5jaG1hcmtUZXN0U3RlcCgnQ29tcGxldGluZ0FsbEl0ZW1zJywgZnVuY3Rpb24gKG5ld1Rv
ZG8sIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgeworICAgICAgICAgICAgdmFyIGNo
ZWNrYm94ZXMgPSBjb250ZW50RG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRvZ2dsZScpOwor
ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGVja2JveGVzLmxlbmd0aDsgaSsrKQor
ICAgICAgICAgICAgICAgIGNoZWNrYm94ZXNbaV0uY2xpY2soKTsKKyAgICAgICAgfSksCiAgICAg
ICAgIG5ldyBCZW5jaG1hcmtUZXN0U3RlcCgnRGVsZXRpbmdBbGxJdGVtcycsIGZ1bmN0aW9uIChu
ZXdUb2RvLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKLSAgICAgICAgICAgIGNv
bnRlbnREb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjY2xlYXItY29tcGxldGVkJykuY2xpY2soKTsK
LSAgICAgICAgICAgIHZhciBhcHAgPSBjb250ZW50V2luZG93LmFwcDsKICAgICAgICAgICAgIHZh
ciBkZWxldGVCdXR0b25zID0gY29udGVudERvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5kZXN0
cm95Jyk7Ci0KLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGVsZXRlQnV0dG9ucy5s
ZW5ndGg7IGkrKykgewotICAgICAgICAgICAgICAgIGFwcC5jdXJyZW50SXRlbUluZGV4ID0gaTsK
LSAgICAgICAgICAgICAgICBhcHAuZGVzdHJveS5jYWxsKGRlbGV0ZUJ1dHRvbnNbaV0pOwotICAg
ICAgICAgICAgfQorICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkZWxldGVCdXR0b25z
Lmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgICAgIGRlbGV0ZUJ1dHRvbnNbaV0uY2xpY2soKTsK
ICAgICAgICAgfSksCiAgICAgXQogfSk7CkBAIC0xNjQsNyArMjM1LDYgQEAgU3VpdGVzLnB1c2go
ewogICAgIH0sCiAgICAgdGVzdHM6IFsKICAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdB
ZGRpbmcnICsgbnVtYmVyT2ZJdGVtc1RvQWRkICsgJ0l0ZW1zJywgZnVuY3Rpb24gKG5ld1RvZG8s
IGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgewotICAgICAgICAgICAgdmFyIHRvZG9t
dmMgPSBjb250ZW50V2luZG93LnRvZG9tdmM7CiAgICAgICAgICAgICB2YXIgc3VibWl0RXZlbnQg
PSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQnKTsKICAgICAgICAgICAgIHN1Ym1pdEV2ZW50
LmluaXRFdmVudCgnc3VibWl0JywgdHJ1ZSwgdHJ1ZSk7CiAgICAgICAgICAgICB2YXIgaW5wdXRF
dmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdFdmVudCcpOwpAQCAtMTg5LDExICsyNTksNDQg
QEAgU3VpdGVzLnB1c2goewogfSk7CiAKIFN1aXRlcy5wdXNoKHsKLSAgICBuYW1lOiAnUmVhY3Qt
VG9kb01WQycsCi0gICAgdXJsOiAndG9kb212Yy9sYWJzL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9y
ZWFjdC9pbmRleC5odG1sJywKKyAgICBuYW1lOiAnQW5ndWxhcjItVHlwZVNjcmlwdC1Ub2RvTVZD
JywKKyAgICB1cmw6ICd0b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL2Rpc3Qv
aW5kZXguaHRtbCcsCiAgICAgcHJlcGFyZTogZnVuY3Rpb24gKHJ1bm5lciwgY29udGVudFdpbmRv
dywgY29udGVudERvY3VtZW50KSB7Ci0gICAgICAgIGNvbnRlbnRXaW5kb3cuVXRpbHMuc3RvcmUg
PSBmdW5jdGlvbiAoKSB7fQotICAgICAgICByZXR1cm4gcnVubmVyLndhaXRGb3JFbGVtZW50KCcj
bmV3LXRvZG8nKS50aGVuKGZ1bmN0aW9uIChlbGVtZW50KSB7CisgICAgICAgIHJldHVybiBydW5u
ZXIud2FpdEZvckVsZW1lbnQoJy5uZXctdG9kbycpLnRoZW4oZnVuY3Rpb24gKGVsZW1lbnQpIHsK
KyAgICAgICAgICAgIGVsZW1lbnQuZm9jdXMoKTsKKyAgICAgICAgICAgIHJldHVybiBlbGVtZW50
OworICAgICAgICB9KTsKKyAgICB9LAorICAgIHRlc3RzOiBbCisgICAgICAgIG5ldyBCZW5jaG1h
cmtUZXN0U3RlcCgnQWRkaW5nJyArIG51bWJlck9mSXRlbXNUb0FkZCArICdJdGVtcycsIGZ1bmN0
aW9uIChuZXdUb2RvLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAg
ICAgIHZhciBhcHBWaWV3ID0gY29udGVudFdpbmRvdy5BcHA7CisgICAgICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IG51bWJlck9mSXRlbXNUb0FkZDsgaSsrKSB7CisgICAgICAgICAgICAgICAg
bmV3VG9kby52YWx1ZSA9ICdTb21ldGhpbmcgdG8gZG8nICsgaTsKKyAgICAgICAgICAgICAgICBu
ZXdUb2RvLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdpbnB1dCcsIHsKKyAgICAgICAgICAgICAg
ICAgIGJ1YmJsZXM6IHRydWUsCisgICAgICAgICAgICAgICAgICBjYW5jZWxhYmxlOiB0cnVlCisg
ICAgICAgICAgICAgICAgfSkpOworICAgICAgICAgICAgICAgIHRyaWdnZXJFbnRlcihuZXdUb2Rv
LCAna2V5dXAnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSksCisgICAgICAgIG5ldyBCZW5j
aG1hcmtUZXN0U3RlcCgnQ29tcGxldGluZ0FsbEl0ZW1zJywgZnVuY3Rpb24gKHBhcmFtcywgY29u
dGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CisgICAgICAgICAgICB2YXIgY2hlY2tib3hl
cyA9IGNvbnRlbnREb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudG9nZ2xlJyk7CisgICAgICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoZWNrYm94ZXMubGVuZ3RoOyBpKyspCisgICAgICAg
ICAgICAgICAgY2hlY2tib3hlc1tpXS5jbGljaygpOworICAgICAgICB9KSwKKyAgICAgICAgbmV3
IEJlbmNobWFya1Rlc3RTdGVwKCdEZWxldGluZ0l0ZW1zJywgZnVuY3Rpb24gKHBhcmFtcywgY29u
dGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CisgICAgICAgICAgICB2YXIgZGVsZXRlQnV0
dG9ucyA9IGNvbnRlbnREb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZGVzdHJveScpOworICAg
ICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkZWxldGVCdXR0b25zLmxlbmd0aDsgaSsrKQor
ICAgICAgICAgICAgICAgIGRlbGV0ZUJ1dHRvbnNbaV0uY2xpY2soKTsKKyAgICAgICAgfSksCisg
ICAgXQorfSk7CisKK1N1aXRlcy5wdXNoKHsKKyAgICBuYW1lOiAnVnVlSlMtVG9kb01WQycsCisg
ICAgdXJsOiAndG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2Rpc3QvaW5k
ZXguaHRtbCcsCisgICAgcHJlcGFyZTogZnVuY3Rpb24gKHJ1bm5lciwgY29udGVudFdpbmRvdywg
Y29udGVudERvY3VtZW50KSB7CisgICAgICAgIHJldHVybiBydW5uZXIud2FpdEZvckVsZW1lbnQo
Jy5uZXctdG9kbycpLnRoZW4oZnVuY3Rpb24gKGVsZW1lbnQpIHsKICAgICAgICAgICAgIGVsZW1l
bnQuZm9jdXMoKTsKICAgICAgICAgICAgIHJldHVybiBlbGVtZW50OwogICAgICAgICB9KTsKQEAg
LTIwMywxMSArMzA2LDEyIEBAIFN1aXRlcy5wdXNoKHsKICAgICAgICAgICAgIHZhciB0b2RvbXZj
ID0gY29udGVudFdpbmRvdy50b2RvbXZjOwogICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBudW1iZXJPZkl0ZW1zVG9BZGQ7IGkrKykgewogICAgICAgICAgICAgICAgIG5ld1RvZG8udmFs
dWUgPSAnU29tZXRoaW5nIHRvIGRvICcgKyBpOwotCi0gICAgICAgICAgICAgICAgdmFyIGtleWRv
d25FdmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdFdmVudCcpOwotICAgICAgICAgICAgICAg
IGtleWRvd25FdmVudC5pbml0RXZlbnQoJ2tleWRvd24nLCB0cnVlLCB0cnVlKTsKLSAgICAgICAg
ICAgICAgICBrZXlkb3duRXZlbnQud2hpY2ggPSAxMzsgLy8gVktfRU5URVIKLSAgICAgICAgICAg
ICAgICBuZXdUb2RvLmRpc3BhdGNoRXZlbnQoa2V5ZG93bkV2ZW50KTsKKyAgICAgICAgICAgICAg
ICBuZXdUb2RvLnZhbHVlID0gJ1NvbWV0aGluZyB0byBkbycgKyBpOworICAgICAgICAgICAgICAg
IG5ld1RvZG8uZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2lucHV0JywgeworICAgICAgICAgICAg
ICAgICAgYnViYmxlczogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgIGNhbmNlbGFibGU6IHRydWUK
KyAgICAgICAgICAgICAgICB9KSk7CisgICAgICAgICAgICAgICAgdHJpZ2dlckVudGVyKG5ld1Rv
ZG8sICdrZXl1cCcpOwogICAgICAgICAgICAgfQogICAgICAgICB9KSwKICAgICAgICAgbmV3IEJl
bmNobWFya1Rlc3RTdGVwKCdDb21wbGV0aW5nQWxsSXRlbXMnLCBmdW5jdGlvbiAobmV3VG9kbywg
Y29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CkBAIC0yMjQsMjUgKzMyOCwxOSBAQCBT
dWl0ZXMucHVzaCh7CiB9KTsKIAogU3VpdGVzLnB1c2goewotICAgIG5hbWU6ICdGbGlnaHRKUy1U
b2RvTVZDJywKLSAgICB1cmw6ICd0b2RvbXZjL2RlcGVuZGVuY3ktZXhhbXBsZXMvZmxpZ2h0L2lu
ZGV4Lmh0bWwnLAorICAgIG5hbWU6ICdqUXVlcnktVG9kb01WQycsCisgICAgdXJsOiAndG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L2luZGV4Lmh0bWwnLAogICAgIHByZXBhcmU6
IGZ1bmN0aW9uIChydW5uZXIsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgewotICAg
ICAgICByZXR1cm4gcnVubmVyLndhaXRGb3JFbGVtZW50KCcjYXBwSXNSZWFkeScpLnRoZW4oZnVu
Y3Rpb24gKCkgewotICAgICAgICAgICAgdmFyIG5ld1RvZG8gPSBjb250ZW50RG9jdW1lbnQucXVl
cnlTZWxlY3RvcignI25ldy10b2RvJyk7Ci0gICAgICAgICAgICBuZXdUb2RvLmZvY3VzKCk7Ci0g
ICAgICAgICAgICByZXR1cm4gbmV3VG9kbzsKLSAgICAgICAgfSk7OworICAgICAgICByZXR1cm4g
cnVubmVyLndhaXRGb3JFbGVtZW50KCcjbmV3LXRvZG8nKS50aGVuKGZ1bmN0aW9uIChlbGVtZW50
KSB7CisgICAgICAgICAgICBlbGVtZW50LmZvY3VzKCk7CisgICAgICAgICAgICByZXR1cm4gZWxl
bWVudDsKKyAgICAgICAgfSk7CiAgICAgfSwKICAgICB0ZXN0czogWwogICAgICAgICBuZXcgQmVu
Y2htYXJrVGVzdFN0ZXAoJ0FkZGluZycgKyBudW1iZXJPZkl0ZW1zVG9BZGQgKyAnSXRlbXMnLCBm
dW5jdGlvbiAobmV3VG9kbywgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7Ci0gICAg
ICAgICAgICB2YXIgdG9kb212YyA9IGNvbnRlbnRXaW5kb3cudG9kb212YzsKICAgICAgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgbnVtYmVyT2ZJdGVtc1RvQWRkOyBpKyspIHsKICAgICAgICAg
ICAgICAgICBuZXdUb2RvLnZhbHVlID0gJ1NvbWV0aGluZyB0byBkbyAnICsgaTsKLQotICAgICAg
ICAgICAgICAgIHZhciBrZXlkb3duRXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQn
KTsKLSAgICAgICAgICAgICAgICBrZXlkb3duRXZlbnQuaW5pdEV2ZW50KCdrZXlkb3duJywgdHJ1
ZSwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAga2V5ZG93bkV2ZW50LndoaWNoID0gMTM7IC8vIFZL
X0VOVEVSCi0gICAgICAgICAgICAgICAgbmV3VG9kby5kaXNwYXRjaEV2ZW50KGtleWRvd25FdmVu
dCk7CisgICAgICAgICAgICAgICAgdHJpZ2dlckVudGVyKG5ld1RvZG8sICdrZXl1cCcpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9KSwKICAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdD
b21wbGV0aW5nQWxsSXRlbXMnLCBmdW5jdGlvbiAobmV3VG9kbywgY29udGVudFdpbmRvdywgY29u
dGVudERvY3VtZW50KSB7CkBAIC0yNTEsNiArMzQ5LDEzNCBAQCBTdWl0ZXMucHVzaCh7CiAgICAg
ICAgICAgICAgICAgY2hlY2tib3hlc1tpXS5jbGljaygpOwogICAgICAgICB9KSwKICAgICAgICAg
bmV3IEJlbmNobWFya1Rlc3RTdGVwKCdEZWxldGluZ0FsbEl0ZW1zJywgZnVuY3Rpb24gKG5ld1Rv
ZG8sIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgeworICAgICAgICAgICAgdmFyIGNs
ZWFyID0gY29udGVudERvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNjbGVhci1jb21wbGV0ZWQnKTsK
KyAgICAgICAgICAgIGlmIChjbGVhciAhPT0gbnVsbCkKKyAgICAgICAgICAgICAgICBjbGVhci5j
bGljaygpOworICAgICAgICAgICAgdmFyIGRlbGV0ZUJ1dHRvbnMgPSBjb250ZW50RG9jdW1lbnQu
cXVlcnlTZWxlY3RvckFsbCgnLmRlc3Ryb3knKTsKKworICAgICAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBkZWxldGVCdXR0b25zLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgICAgIGRlbGV0
ZUJ1dHRvbnNbaV0uY2xpY2soKTsKKyAgICAgICAgfSksCisgICAgXQorfSkKKworU3VpdGVzLnB1
c2goeworICAgIG5hbWU6ICdQcmVhY3QtVG9kb01WQycsCisgICAgdXJsOiAndG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvcHJlYWN0L2Rpc3QvaW5kZXguaHRtbCcsCisgICAgcHJlcGFyZTog
ZnVuY3Rpb24gKHJ1bm5lciwgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CisgICAg
ICAgIHJldHVybiBydW5uZXIud2FpdEZvckVsZW1lbnQoJy5uZXctdG9kbycpLnRoZW4oZnVuY3Rp
b24gKGVsZW1lbnQpIHsKKyAgICAgICAgICAgIGVsZW1lbnQuZm9jdXMoKTsKKyAgICAgICAgICAg
IHJldHVybiBlbGVtZW50OworICAgICAgICB9KTsKKyAgICB9LAorICAgIHRlc3RzOiBbCisgICAg
ICAgIG5ldyBCZW5jaG1hcmtUZXN0U3RlcCgnQWRkaW5nJyArIG51bWJlck9mSXRlbXNUb0FkZCAr
ICdJdGVtcycsIGZ1bmN0aW9uIChuZXdUb2RvLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1l
bnQpIHsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtYmVyT2ZJdGVtc1RvQWRk
OyBpKyspIHsKKyAgICAgICAgICAgICAgICBuZXdUb2RvLnZhbHVlID0gJ1NvbWV0aGluZyB0byBk
bycgKyBpOworICAgICAgICAgICAgICAgIHRyaWdnZXJFbnRlcihuZXdUb2RvLCAna2V5ZG93bicp
OworICAgICAgICAgICAgfQorICAgICAgICB9KSwKKyAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RT
dGVwKCdDb21wbGV0aW5nQWxsSXRlbXMnLCBmdW5jdGlvbiAocGFyYW1zLCBjb250ZW50V2luZG93
LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgICAgIHZhciBjaGVja2JveGVzID0gY29udGVu
dERvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy50b2dnbGUnKTsKKyAgICAgICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgY2hlY2tib3hlcy5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgICAgICBj
aGVja2JveGVzW2ldLmNsaWNrKCk7CisgICAgICAgIH0pLAorICAgICAgICBuZXcgQmVuY2htYXJr
VGVzdFN0ZXAoJ0RlbGV0aW5nSXRlbXMnLCBmdW5jdGlvbiAocGFyYW1zLCBjb250ZW50V2luZG93
LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgICAgIHZhciBkZWxldGVCdXR0b25zID0gY29u
dGVudERvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5kZXN0cm95Jyk7CisgICAgICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGRlbGV0ZUJ1dHRvbnMubGVuZ3RoOyBpKyspCisgICAgICAgICAg
ICAgICAgZGVsZXRlQnV0dG9uc1tpXS5jbGljaygpOworICAgICAgICB9KSwKKyAgICBdCit9KTsK
KworU3VpdGVzLnB1c2goeworICAgIG5hbWU6ICdJbmZlcm5vLVRvZG9NVkMnLAorICAgIHVybDog
J3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2luZmVybm8vaW5kZXguaHRtbCcsCisgICAg
cHJlcGFyZTogZnVuY3Rpb24gKHJ1bm5lciwgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50
KSB7CisgICAgICAgIHJldHVybiBydW5uZXIud2FpdEZvckVsZW1lbnQoJy5uZXctdG9kbycpLnRo
ZW4oZnVuY3Rpb24gKGVsZW1lbnQpIHsKKyAgICAgICAgICAgIGVsZW1lbnQuZm9jdXMoKTsKKyAg
ICAgICAgICAgIHJldHVybiBlbGVtZW50OworICAgICAgICB9KTsKKyAgICB9LAorICAgIHRlc3Rz
OiBbCisgICAgICAgIG5ldyBCZW5jaG1hcmtUZXN0U3RlcCgnQWRkaW5nJyArIG51bWJlck9mSXRl
bXNUb0FkZCArICdJdGVtcycsIGZ1bmN0aW9uIChuZXdUb2RvLCBjb250ZW50V2luZG93LCBjb250
ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtYmVyT2ZJ
dGVtc1RvQWRkOyBpKyspIHsKKyAgICAgICAgICAgICAgICBuZXdUb2RvLnZhbHVlID0gJ1NvbWV0
aGluZyB0byBkbycgKyBpOworICAgICAgICAgICAgICAgIG5ld1RvZG8uZGlzcGF0Y2hFdmVudChu
ZXcgRXZlbnQoJ2NoYW5nZScsIHsKKyAgICAgICAgICAgICAgICAgIGJ1YmJsZXM6IHRydWUsCisg
ICAgICAgICAgICAgICAgICBjYW5jZWxhYmxlOiB0cnVlCisgICAgICAgICAgICAgICAgfSkpOwor
ICAgICAgICAgICAgICAgIHRyaWdnZXJFbnRlcihuZXdUb2RvLCAna2V5ZG93bicpOworICAgICAg
ICAgICAgfQorICAgICAgICB9KSwKKyAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdDb21w
bGV0aW5nQWxsSXRlbXMnLCBmdW5jdGlvbiAocGFyYW1zLCBjb250ZW50V2luZG93LCBjb250ZW50
RG9jdW1lbnQpIHsKKyAgICAgICAgICAgIHZhciBjaGVja2JveGVzID0gY29udGVudERvY3VtZW50
LnF1ZXJ5U2VsZWN0b3JBbGwoJy50b2dnbGUnKTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgY2hlY2tib3hlcy5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgICAgICBjaGVja2JveGVz
W2ldLmNsaWNrKCk7CisgICAgICAgIH0pLAorICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAo
J0RlbGV0aW5nSXRlbXMnLCBmdW5jdGlvbiAocGFyYW1zLCBjb250ZW50V2luZG93LCBjb250ZW50
RG9jdW1lbnQpIHsKKyAgICAgICAgICAgIHZhciBkZWxldGVCdXR0b25zID0gY29udGVudERvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5kZXN0cm95Jyk7CisgICAgICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGRlbGV0ZUJ1dHRvbnMubGVuZ3RoOyBpKyspCisgICAgICAgICAgICAgICAgZGVs
ZXRlQnV0dG9uc1tpXS5jbGljaygpOworICAgICAgICB9KSwKKyAgICBdCit9KTsKKworU3VpdGVz
LnB1c2goeworICAgIG5hbWU6ICdFbG0tVG9kb01WQycsCisgICAgdXJsOiAndG9kb212Yy9mdW5j
dGlvbmFsLXByb2ctZXhhbXBsZXMvZWxtL2luZGV4Lmh0bWwnLAorICAgIHByZXBhcmU6IGZ1bmN0
aW9uIChydW5uZXIsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgeworICAgICAgICBy
ZXR1cm4gcnVubmVyLndhaXRGb3JFbGVtZW50KCcubmV3LXRvZG8nKS50aGVuKGZ1bmN0aW9uIChl
bGVtZW50KSB7CisgICAgICAgICAgICBlbGVtZW50LmZvY3VzKCk7CisgICAgICAgICAgICByZXR1
cm4gZWxlbWVudDsKKyAgICAgICAgfSk7CisgICAgfSwKKyAgICB0ZXN0czogWworICAgICAgICBu
ZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0FkZGluZycgKyBudW1iZXJPZkl0ZW1zVG9BZGQgKyAnSXRl
bXMnLCBmdW5jdGlvbiAobmV3VG9kbywgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7
CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bWJlck9mSXRlbXNUb0FkZDsgaSsr
KSB7CisgICAgICAgICAgICAgICAgbmV3VG9kby52YWx1ZSA9ICdTb21ldGhpbmcgdG8gZG8nICsg
aTsKKyAgICAgICAgICAgICAgICBuZXdUb2RvLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdpbnB1
dCcsIHsKKyAgICAgICAgICAgICAgICAgIGJ1YmJsZXM6IHRydWUsCisgICAgICAgICAgICAgICAg
ICBjYW5jZWxhYmxlOiB0cnVlCisgICAgICAgICAgICAgICAgfSkpOworICAgICAgICAgICAgICAg
IHRyaWdnZXJFbnRlcihuZXdUb2RvLCAna2V5ZG93bicpOworICAgICAgICAgICAgfQorICAgICAg
ICB9KSwKKyAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdDb21wbGV0aW5nQWxsSXRlbXMn
LCBmdW5jdGlvbiAocGFyYW1zLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAg
ICAgICAgICAgIHZhciBjaGVja2JveGVzID0gY29udGVudERvY3VtZW50LnF1ZXJ5U2VsZWN0b3JB
bGwoJy50b2dnbGUnKTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hlY2tib3hl
cy5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgICAgICBjaGVja2JveGVzW2ldLmNsaWNrKCk7Cisg
ICAgICAgIH0pLAorICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0RlbGV0aW5nSXRlbXMn
LCBmdW5jdGlvbiAocGFyYW1zLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAg
ICAgICAgICAgIHZhciBkZWxldGVCdXR0b25zID0gY29udGVudERvY3VtZW50LnF1ZXJ5U2VsZWN0
b3JBbGwoJy5kZXN0cm95Jyk7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRlbGV0
ZUJ1dHRvbnMubGVuZ3RoOyBpKyspCisgICAgICAgICAgICAgICAgZGVsZXRlQnV0dG9uc1tpXS5j
bGljaygpOworICAgICAgICB9KSwKKyAgICBdCit9KTsKKworU3VpdGVzLnB1c2goeworICAgIG5h
bWU6ICdGbGlnaHQtVG9kb01WQycsCisgICAgdXJsOiAndG9kb212Yy9kZXBlbmRlbmN5LWV4YW1w
bGVzL2ZsaWdodC9mbGlnaHQvaW5kZXguaHRtbCcsCisgICAgcHJlcGFyZTogZnVuY3Rpb24gKHJ1
bm5lciwgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CisgICAgICAgIHJldHVybiBy
dW5uZXIud2FpdEZvckVsZW1lbnQoJyNuZXctdG9kbycpLnRoZW4oZnVuY3Rpb24gKGVsZW1lbnQp
IHsKKyAgICAgICAgICAgIGVsZW1lbnQuZm9jdXMoKTsKKyAgICAgICAgICAgIHJldHVybiBlbGVt
ZW50OworICAgICAgICB9KTsKKyAgICB9LAorICAgIHRlc3RzOiBbCisgICAgICAgIG5ldyBCZW5j
aG1hcmtUZXN0U3RlcCgnQWRkaW5nJyArIG51bWJlck9mSXRlbXNUb0FkZCArICdJdGVtcycsIGZ1
bmN0aW9uIChuZXdUb2RvLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtYmVyT2ZJdGVtc1RvQWRkOyBpKyspIHsKKyAg
ICAgICAgICAgICAgICBuZXdUb2RvLnZhbHVlID0gJ1NvbWV0aGluZyB0byBkbycgKyBpOworICAg
ICAgICAgICAgICAgIHRyaWdnZXJFbnRlcihuZXdUb2RvLCAna2V5ZG93bicpOworICAgICAgICAg
ICAgfQorICAgICAgICB9KSwKKyAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdDb21wbGV0
aW5nQWxsSXRlbXMnLCBmdW5jdGlvbiAocGFyYW1zLCBjb250ZW50V2luZG93LCBjb250ZW50RG9j
dW1lbnQpIHsKKyAgICAgICAgICAgIHZhciBjaGVja2JveGVzID0gY29udGVudERvY3VtZW50LnF1
ZXJ5U2VsZWN0b3JBbGwoJy50b2dnbGUnKTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgY2hlY2tib3hlcy5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgICAgICBjaGVja2JveGVzW2ld
LmNsaWNrKCk7CisgICAgICAgIH0pLAorICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0Rl
bGV0aW5nSXRlbXMnLCBmdW5jdGlvbiAocGFyYW1zLCBjb250ZW50V2luZG93LCBjb250ZW50RG9j
dW1lbnQpIHsKICAgICAgICAgICAgIHZhciBkZWxldGVCdXR0b25zID0gY29udGVudERvY3VtZW50
LnF1ZXJ5U2VsZWN0b3JBbGwoJy5kZXN0cm95Jyk7CiAgICAgICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGRlbGV0ZUJ1dHRvbnMubGVuZ3RoOyBpKyspCiAgICAgICAgICAgICAgICAgZGVsZXRl
QnV0dG9uc1tpXS5jbGljaygpOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9kaXN0
L2luZGV4Lmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL2Rpc3QvaW5kZXguaHRtbAppbmRleCA3
NmJkYzg2Y2Y4ZGQ0ZDVlYTA0ODk1MWM4MjFiNGNhMWQ2ZmVkZTdkLi4zYTFhOWUyODdkNmNhMGNm
NmMxODlmMmZhOTc5MjU5OGE2OGZkMzJlIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFy
L2Rpc3QvaW5kZXguaHRtbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL2Rpc3QvaW5kZXguaHRt
bApAQCAtOSw3ICs5LDcgQEAKICAgPGxpbmsgcmVsPSJpY29uIiB0eXBlPSJpbWFnZS94LWljb24i
IGhyZWY9ImZhdmljb24uaWNvIj4KICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJhc3Nl
dHMvY3NzL3RvZG9tdmMtY29tbW9uLmNzcyI+CiAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iYXNzZXRzL2Nzcy90b2RvbXZjLWFwcC5jc3MiPgotPGxpbmsgaHJlZj0ic3R5bGVzLmQ0MWQ4
Y2Q5OGYwMGIyMDRlOTgwLmJ1bmRsZS5jc3MiIHJlbD0ic3R5bGVzaGVldCIvPjwvaGVhZD4KKzwv
aGVhZD4KIDxib2R5PgogICA8YXBwLXJvb3Q+TG9hZGluZy4uLjwvYXBwLXJvb3Q+CiAgIDwhLS0g
Q3JlZGl0czogQWRkeSBPc21hbmkgLS0+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpz
L2Fzc2V0cy90b2RvbXZjLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9hc3NldHMvdG9kb212Yy5q
cwppbmRleCA2MTlhMDA0YjBmY2ZkZjgyNzUzZDI0NTBiOGJmYzFiYWJhNjVlYWE2Li43ZDRkZmIz
NmM3MWFkNDZlMGVkNGIxZDRhNTJkN2ZlN2ViNjJlMDA0IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9lbWJlcmpzL2Fzc2V0cy90b2RvbXZjLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvYXNz
ZXRzL3RvZG9tdmMuanMKQEAgLTM2MywxOSArMzYzLDE1IEBAIGRlZmluZSgndG9kb212Yy9zZXJ2
aWNlcy9tZW1vcnknLCBbJ2V4cG9ydHMnXSwgZnVuY3Rpb24gKGV4cG9ydHMpIHsKICAgICAgIGxv
Y2FsU3RvcmFnZU1lbW9yeS5sZW5ndGggPSAwOwogICAgIH07CiAKLSAgICBpZiAodHlwZW9mIGV4
cG9ydHMgPT09ICdvYmplY3QnKSB7Ci0gICAgICBtb2R1bGUuZXhwb3J0cyA9IGxvY2FsU3RvcmFn
ZU1lbW9yeTsKLSAgICB9IGVsc2UgewotICAgICAgcm9vdC5sb2NhbFN0b3JhZ2VNZW1vcnkgPSBs
b2NhbFN0b3JhZ2VNZW1vcnk7Ci0gICAgfQotICB9KSh0aGlzKTsKKyAgICByb290LmxvY2FsU3Rv
cmFnZU1lbW9yeSA9IGxvY2FsU3RvcmFnZU1lbW9yeTsKKyAgfSkod2luZG93KTsKIH0pOwogZGVm
aW5lKCd0b2RvbXZjL3NlcnZpY2VzL3JlcG8nLCBbJ2V4cG9ydHMnLCAnZW1iZXInLCAndG9kb212
Yy9zZXJ2aWNlcy9tZW1vcnknXSwgZnVuY3Rpb24gKGV4cG9ydHMsIF9lbWJlciwgX3RvZG9tdmNT
ZXJ2aWNlc01lbW9yeSkgewogICAgIGV4cG9ydHNbJ2RlZmF1bHQnXSA9IF9lbWJlclsnZGVmYXVs
dCddLlNlcnZpY2UuZXh0ZW5kKHsKICAgICAgICAgbGFzdElkOiAwLAogICAgICAgICBkYXRhOiBu
dWxsLAogICAgICAgICBmaW5kQWxsOiBmdW5jdGlvbiBmaW5kQWxsKCkgewotICAgICAgICAgICAg
cmV0dXJuIHRoaXMuZ2V0KCdkYXRhJykgfHwgdGhpcy5zZXQoJ2RhdGEnLCBKU09OLnBhcnNlKF90
b2RvbXZjU2VydmljZXNNZW1vcnkuZ2V0SXRlbSgndG9kb3MnKSB8fCAnW10nKSk7CisgICAgICAg
ICAgICByZXR1cm4gdGhpcy5nZXQoJ2RhdGEnKSB8fCB0aGlzLnNldCgnZGF0YScsIEpTT04ucGFy
c2Uod2luZG93LmxvY2FsU3RvcmFnZU1lbW9yeS5nZXRJdGVtKCd0b2RvcycpIHx8ICdbXScpKTsK
ICAgICAgICAgfSwKIAogICAgICAgICBhZGQ6IGZ1bmN0aW9uIGFkZChhdHRycykgewpAQCAtMzkx
LDcgKzM4Nyw3IEBAIGRlZmluZSgndG9kb212Yy9zZXJ2aWNlcy9yZXBvJywgWydleHBvcnRzJywg
J2VtYmVyJywgJ3RvZG9tdmMvc2VydmljZXMvbWVtb3J5J10sCiAgICAgICAgIH0sCiAKICAgICAg
ICAgcGVyc2lzdDogZnVuY3Rpb24gcGVyc2lzdCgpIHsKLSAgICAgICAgICAgIF90b2RvbXZjU2Vy
dmljZXNNZW1vcnkuc2V0SXRlbSgndG9kb3MnLCBKU09OLnN0cmluZ2lmeSh0aGlzLmdldCgnZGF0
YScpKSk7CisgICAgICAgICAgICB3aW5kb3cubG9jYWxTdG9yYWdlTWVtb3J5LnNldEl0ZW0oJ3Rv
ZG9zJywgSlNPTi5zdHJpbmdpZnkodGhpcy5nZXQoJ2RhdGEnKSkpOwogICAgICAgICB9CiAgICAg
fSk7CiB9KTsKQEAgLTEyNTcsNyArMTI1Myw3IEBAIGNhdGNoKGVycikgewogLyoganNoaW50IGln
bm9yZTpzdGFydCAqLwogCiBpZiAoIXJ1bm5pbmdUZXN0cykgewotICByZXF1aXJlKCJ0b2RvbXZj
L2FwcCIpWyJkZWZhdWx0Il0uY3JlYXRlKHsibmFtZSI6InRvZG9tdmMiLCJ2ZXJzaW9uIjoiMC4w
LjArNWRiYzVmYjkifSk7CisgIHJlcXVpcmUoInRvZG9tdmMvYXBwIilbImRlZmF1bHQiXS5jcmVh
dGUoeyJuYW1lIjoidG9kb212YyIsInZlcnNpb24iOiIwLjAuMCsifSk7CiB9CiAKIC8qIGpzaGlu
dCBpZ25vcmU6ZW5kICovCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL2luZGV4Lmh0
bWwgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL2luZGV4Lmh0bWwKaW5kZXggN2U0OGMxOTkyN2Q1MWNl
NDhlODMxYTdlZTVmMDE0M2Y2NjY1MDY0YS4uNzgxZWE2M2EyZTZjMGQ3ZDkzYjViYjNkNDU3NmFj
YjBjODMyOTE4MyAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9pbmRleC5odG1sCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvaW5kZXguaHRtbApAQCAtNiwyMSArNiwyMCBAQAogICAg
IDx0aXRsZT5Ub2RvbXZjPC90aXRsZT4KICAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29u
dGVudD0iIj4KICAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNl
LXdpZHRoLCBpbml0aWFsLXNjYWxlPTEiPgotICAgIDxiYXNlIGhyZWY9Ii9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9l
bWJlcmpzIiAvPgorICAgIDxiYXNlIGhyZWY9Ii9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy8iIC8+CiAgICAgCi08bWV0YSBuYW1lPSJ0
b2RvbXZjL2NvbmZpZy9lbnZpcm9ubWVudCIgY29udGVudD0iJTdCJTIybW9kdWxlUHJlZml4JTIy
JTNBJTIydG9kb212YyUyMiUyQyUyMmVudmlyb25tZW50JTIyJTNBJTIyZGV2ZWxvcG1lbnQlMjIl
MkMlMjJiYXNlVVJMJTIyJTNBbnVsbCUyQyUyMmxvY2F0aW9uVHlwZSUyMiUzQSUyMmF1dG8lMjIl
MkMlMjJFbWJlckVOViUyMiUzQSU3QiUyMkZFQVRVUkVTJTIyJTNBJTdCJTdEJTdEJTJDJTIyQVBQ
JTIyJTNBJTdCJTIybmFtZSUyMiUzQSUyMnRvZG9tdmMlMjIlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIy
MC4wLjArNWRiYzVmYjklMjIlN0QlMkMlMjJleHBvcnRBcHBsaWNhdGlvbkdsb2JhbCUyMiUzQXRy
dWUlN0QiIC8+Cis8bWV0YSBuYW1lPSJ0b2RvbXZjL2NvbmZpZy9lbnZpcm9ubWVudCIgY29udGVu
dD0iJTdCJTIybW9kdWxlUHJlZml4JTIyJTNBJTIydG9kb212YyUyMiUyQyUyMmVudmlyb25tZW50
JTIyJTNBJTIyZGV2ZWxvcG1lbnQlMjIlMkMlMjJiYXNlVVJMJTIyJTNBbnVsbCUyQyUyMmxvY2F0
aW9uVHlwZSUyMiUzQSUyMmF1dG8lMjIlMkMlMjJFbWJlckVOViUyMiUzQSU3QiUyMkZFQVRVUkVT
JTIyJTNBJTdCJTdEJTdEJTJDJTIyQVBQJTIyJTNBJTdCJTIybmFtZSUyMiUzQSUyMnRvZG9tdmMl
MjIlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyMC4wLjArJTIyJTdEJTJDJTIyZXhwb3J0QXBwbGljYXRp
b25HbG9iYWwlMjIlM0F0cnVlJTdEIiAvPgogCi0gICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9hc3NldHMvdmVuZG9yLmNzcyI+Ci0gICAgPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9hc3NldHMvdG9kb212
Yy5jc3MiPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iYXNzZXRzL3ZlbmRvci5j
c3MiPgogCiAgICAgCiAgIDwvaGVhZD4KICAgPGJvZHk+CiAgICAgCiAKLSAgICA8c2NyaXB0IHNy
Yz0iL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvYXNzZXRzL3ZlbmRvci5qcyI+PC9zY3JpcHQ+Ci0gICAg
PHNjcmlwdCBzcmM9Ii9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL2Fzc2V0cy90b2RvbXZjLmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iYXNzZXRzL3ZlbmRvci5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdCBzcmM9ImFzc2V0cy90b2RvbXZjLmpzIj48L3NjcmlwdD4KIAogICAgIAogICA8L2Jv
ZHk+Ci08L2h0bWw+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvYXBwL3NlcnZpY2VzL21lbW9yeS5qcyBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNlL2FwcC9zZXJ2aWNlcy9tZW1vcnkuanMKaW5kZXgg
NGI5ZDVhZjlkNmQxZDhkNTljMGNkYjI2ODhiZmVjMmFkYTgyZjNjMi4uNzRjNWNkZjE5ZmQ5ZmRi
MjZhOTBmMDlhMzAxZDQzZGJkMzUyN2Q2MSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJq
cy9zb3VyY2UvYXBwL3NlcnZpY2VzL21lbW9yeS5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpz
L3NvdXJjZS9hcHAvc2VydmljZXMvbWVtb3J5LmpzCkBAIC03NCw5ICs3NCw1IEBACiAgICAgbG9j
YWxTdG9yYWdlTWVtb3J5Lmxlbmd0aCA9IDA7CiAgIH07CiAKLSAgaWYgKHR5cGVvZiBleHBvcnRz
ID09PSAnb2JqZWN0JykgewotICAgIG1vZHVsZS5leHBvcnRzID0gbG9jYWxTdG9yYWdlTWVtb3J5
OwotICB9IGVsc2UgewogICAgIHJvb3QubG9jYWxTdG9yYWdlTWVtb3J5ID0gbG9jYWxTdG9yYWdl
TWVtb3J5OwotICB9Ci19KSh0aGlzKTsKK30pKHdpbmRvdyk7CmRpZmYgLS1naXQgYS9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9lbWJlcmpzL3NvdXJjZS9hcHAvc2VydmljZXMvcmVwby5qcyBiL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2Vt
YmVyanMvc291cmNlL2FwcC9zZXJ2aWNlcy9yZXBvLmpzCmluZGV4IDAxNDdmZjNlZmM3ZThhYWVm
MjdiNzEwMDUwNWMwMWFkMTFmOWFjZDEuLmNmZmEzODU4ZmQ3N2JiYmE1YzQzNWVhNWM5Yzg4OThh
ZDE3NzNiOGEgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNlL2FwcC9zZXJ2
aWNlcy9yZXBvLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNlL2FwcC9zZXJ2aWNl
cy9yZXBvLmpzCkBAIC0xLDEyICsxLDEyIEBACiBpbXBvcnQgRW1iZXIgZnJvbSAnZW1iZXInOwot
aW1wb3J0ICogYXMgbG9jYWxTdG9yYWdlTWVtb3J5IGZyb20gJy4vbWVtb3J5JzsKK2ltcG9ydCBs
b2NhbFN0b3JhZ2VNZW1vcnkgZnJvbSAnLi9tZW1vcnknOwogCiBleHBvcnQgZGVmYXVsdCBFbWJl
ci5TZXJ2aWNlLmV4dGVuZCh7CiAgICAgbGFzdElkOiAwLAogICAgIGRhdGE6IG51bGwsCiAgICAg
ZmluZEFsbCgpIHsKICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KCdkYXRhJykgfHwKLSAgICAgICAg
ICAgIHRoaXMuc2V0KCdkYXRhJywgSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2VNZW1vcnkuZ2V0SXRl
bSgndG9kb3MnKSB8fCAnW10nKSk7CisgICAgICAgICAgICB0aGlzLnNldCgnZGF0YScsIEpTT04u
cGFyc2Uod2luZG93LmxvY2FsU3RvcmFnZU1lbW9yeS5nZXRJdGVtKCd0b2RvcycpIHx8ICdbXScp
KTsKICAgICB9LAogCiAgICAgYWRkKGF0dHJzKSB7CkBAIC0yMiw2ICsyMiw2IEBAIGV4cG9ydCBk
ZWZhdWx0IEVtYmVyLlNlcnZpY2UuZXh0ZW5kKHsKICAgICB9LAogCiAgICAgcGVyc2lzdCgpIHsK
LSAgICAgICAgbG9jYWxTdG9yYWdlTWVtb3J5LnNldEl0ZW0oJ3RvZG9zJywgSlNPTi5zdHJpbmdp
ZnkodGhpcy5nZXQoJ2RhdGEnKSkpOworICAgICAgICB3aW5kb3cubG9jYWxTdG9yYWdlTWVtb3J5
LnNldEl0ZW0oJ3RvZG9zJywgSlNPTi5zdHJpbmdpZnkodGhpcy5nZXQoJ2RhdGEnKSkpOwogICAg
IH0KIH0pOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy90ZXN0cy9pbmRleC5odG1s
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvZW1iZXJqcy90ZXN0cy9pbmRleC5odG1sCmluZGV4IGUyYTI3YzE0OWI2
ZGUwN2M2OTMzMTA5ODQyNWZkZDhkNWQ3YTJhMGUuLjJhYjIxOGU3YTk1NDNlZjIwYWNkNGEzZTc2
ZWU1YTU3MDYzNjM1MTMgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvdGVzdHMvaW5k
ZXguaHRtbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3Rlc3RzL2luZGV4Lmh0bWwKQEAgLTgs
NyArOCw3IEBACiAgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmlj
ZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xIj4KIAogICAgIDxiYXNlIGhyZWY9Ii8iIC8+Ci08bWV0
YSBuYW1lPSJ0b2RvbXZjL2NvbmZpZy9lbnZpcm9ubWVudCIgY29udGVudD0iJTdCJTIybW9kdWxl
UHJlZml4JTIyJTNBJTIydG9kb212YyUyMiUyQyUyMmVudmlyb25tZW50JTIyJTNBJTIydGVzdCUy
MiUyQyUyMmJhc2VVUkwlMjIlM0ElMjIvJTIyJTJDJTIybG9jYXRpb25UeXBlJTIyJTNBJTIybm9u
ZSUyMiUyQyUyMkVtYmVyRU5WJTIyJTNBJTdCJTIyRkVBVFVSRVMlMjIlM0ElN0IlN0QlN0QlMkMl
MjJBUFAlMjIlM0ElN0IlMjJMT0dfQUNUSVZFX0dFTkVSQVRJT04lMjIlM0FmYWxzZSUyQyUyMkxP
R19WSUVXX0xPT0tVUFMlMjIlM0FmYWxzZSUyQyUyMnJvb3RFbGVtZW50JTIyJTNBJTIyJTIzZW1i
ZXItdGVzdGluZyUyMiUyQyUyMm5hbWUlMjIlM0ElMjJ0b2RvbXZjJTIyJTJDJTIydmVyc2lvbiUy
MiUzQSUyMjAuMC4wKzVkYmM1ZmI5JTIyJTdEJTJDJTIyZXhwb3J0QXBwbGljYXRpb25HbG9iYWwl
MjIlM0F0cnVlJTdEIiAvPgorPG1ldGEgbmFtZT0idG9kb212Yy9jb25maWcvZW52aXJvbm1lbnQi
IGNvbnRlbnQ9IiU3QiUyMm1vZHVsZVByZWZpeCUyMiUzQSUyMnRvZG9tdmMlMjIlMkMlMjJlbnZp
cm9ubWVudCUyMiUzQSUyMnRlc3QlMjIlMkMlMjJiYXNlVVJMJTIyJTNBJTIyLyUyMiUyQyUyMmxv
Y2F0aW9uVHlwZSUyMiUzQSUyMm5vbmUlMjIlMkMlMjJFbWJlckVOViUyMiUzQSU3QiUyMkZFQVRV
UkVTJTIyJTNBJTdCJTdEJTdEJTJDJTIyQVBQJTIyJTNBJTdCJTIyTE9HX0FDVElWRV9HRU5FUkFU
SU9OJTIyJTNBZmFsc2UlMkMlMjJMT0dfVklFV19MT09LVVBTJTIyJTNBZmFsc2UlMkMlMjJyb290
RWxlbWVudCUyMiUzQSUyMiUyM2VtYmVyLXRlc3RpbmclMjIlMkMlMjJuYW1lJTIyJTNBJTIydG9k
b212YyUyMiUyQyUyMnZlcnNpb24lMjIlM0ElMjIwLjAuMCslMjIlN0QlMkMlMjJleHBvcnRBcHBs
aWNhdGlvbkdsb2JhbCUyMiUzQXRydWUlN0QiIC8+CiAgICAgCiAKICAgICA8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9ImFzc2V0cy92ZW5kb3IuY3NzIj4KZGlmZiAtLWdpdCBhL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2pxdWVyeS9pbmRleC5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L2luZGV4Lmh0bWwKaW5k
ZXggNDE0YWM1OGY2MWFiYzJiNzIyZGI1M2ZlZWNlN2UwM2U1MmZkMzM0NC4uMWNmODAzZTE0MmEx
MzBlNGNjZmYxY2FiYjgxMjdjNDdjNzA2ZDBlYyAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1
ZXJ5L2luZGV4Lmh0bWwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L2luZGV4Lmh0bWwKQEAgLTU1
LDcgKzU1LDcgQEAKICAgICAgICAgPCEtLSA8c2NyaXB0IHNyYz0ibm9kZV9tb2R1bGVzL3RvZG9t
dmMtY29tbW9uL2Jhc2UuanMiPjwvc2NyaXB0PiAtLT4KICAgICAgICAgPHNjcmlwdCBzcmM9Im5v
ZGVfbW9kdWxlcy9qcXVlcnkvZGlzdC9qcXVlcnkuanMiPjwvc2NyaXB0PgogICAgICAgICA8c2Ny
aXB0IHNyYz0ibm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9oYW5kbGViYXJzLmpzIj48L3Nj
cmlwdD4KLSAgICAgICAgPHNjcmlwdCBzcmM9Im5vZGVfbW9kdWxlcy9kaXJlY3Rvci9idWlsZC9k
aXJlY3Rvci5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSJub2RlX21vZHVsZXMv
ZGlyZWN0b3IvZGlzdC9kaXJlY3Rvci5qcyI+PC9zY3JpcHQ+CiAgICAgICAgIDxzY3JpcHQgc3Jj
PSJqcy9hcHAuanMiPjwvc2NyaXB0PgogICAgIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBh
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvTElDRU5TRSBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvTElDRU5TRQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
YTQ5ODEwODUwMTlmOTE3YzEyMzc2OWEwYzI3Y2Q4NzBlMzVhNzg0Ci0tLSAvZGV2L251bGwKKysr
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9MSUNFTlNFCkBAIC0w
LDAgKzEsMTkgQEAKK0NvcHlyaWdodCAoYykgMjAxMSBDaGFybGllIFJvYmJpbnMsIFBhb2xvIEZy
YWdvbWVuaSwgJiB0aGUgQ29udHJpYnV0b3JzLgorCitQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFu
dGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CitvZiB0
aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29m
dHdhcmUiKSwgdG8gZGVhbAoraW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGlu
Y2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwordG8gdXNlLCBjb3B5LCBtb2Rp
ZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAor
Y29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhl
IFNvZnR3YXJlIGlzCitmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zOgorCitUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJt
aXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorYWxsIGNvcGllcyBvciBzdWJzdGFu
dGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisKK1RIRSBTT0ZUV0FSRSBJUyBQUk9WSURF
RCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCitJTVBM
SUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSwKK0ZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZS
SU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9M
REVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorTElBQklMSVRZ
LCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFS
SVNJTkcgRlJPTSwKK09VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9S
IFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4KK1RIRSBTT0ZUV0FSRS4KZGlmZiAtLWdpdCBh
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvYm93ZXIuanNvbiBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvYm93ZXIuanNvbgpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mOTM5YmI0NzBlZDY0ZGIxMTFhYWE4YzYzM2QyMzJmYTllYmZjZjA0Ci0tLSAvZGV2L251
bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9ib3dlci5q
c29uCkBAIC0wLDAgKzEsOSBAQAoreworICAibmFtZSI6ICJkaXJlY3RvciIsCisgICJ2ZXJzaW9u
IjogIjEuMi43IiwKKyAgImRlcGVuZGVuY2llcyI6IHt9LAorICAibWFpbiI6ICJidWlsZC9kaXJl
Y3Rvci5qcyIsCisgICJzY3JpcHRzIjogWworICAgICJidWlsZC9kaXJlY3Rvci5qcyIKKyAgXQor
fQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9k
aXN0L2RpcmVjdG9yLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rv
ci9kaXN0L2RpcmVjdG9yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEwMzg4Nzg3MjM1YjcxYzBmNWNiOTY3ZTc5
NWMyYzY2OWE1NmYzNjkKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9k
ZV9tb2R1bGVzL2RpcmVjdG9yL2Rpc3QvZGlyZWN0b3IuanMKQEAgLTAsMCArMSw3MjUgQEAKKwor
CisvLworLy8gR2VuZXJhdGVkIG9uIFR1ZSBEZWMgMTYgMjAxNCAxMjoxMzo0NyBHTVQrMDEwMCAo
Q0VUKSBieSBDaGFybGllIFJvYmJpbnMsIFBhb2xvIEZyYWdvbWVuaSAmIHRoZSBDb250cmlidXRv
cnMgKFVzaW5nIENvZGVzdXJnZW9uKS4KKy8vIFZlcnNpb24gMS4yLjYKKy8vCisKKyhmdW5jdGlv
biAoZXhwb3J0cykgeworCisvKgorICogYnJvd3Nlci5qczogQnJvd3NlciBzcGVjaWZpYyBmdW5j
dGlvbmFsaXR5IGZvciBkaXJlY3Rvci4KKyAqCisgKiAoQykgMjAxMSwgQ2hhcmxpZSBSb2JiaW5z
LCBQYW9sbyBGcmFnb21lbmksICYgdGhlIENvbnRyaWJ1dG9ycy4KKyAqIE1JVCBMSUNFTlNFCisg
KgorICovCisKK3ZhciBkbG9jID0gZG9jdW1lbnQubG9jYXRpb247CisKK2Z1bmN0aW9uIGRsb2NI
YXNoRW1wdHkoKSB7CisgIC8vIE5vbi1JRSBicm93c2VycyByZXR1cm4gJycgd2hlbiB0aGUgYWRk
cmVzcyBiYXIgc2hvd3MgJyMnOyBEaXJlY3RvcidzIGxvZ2ljCisgIC8vIGFzc3VtZXMgYm90aCBt
ZWFuIGVtcHR5LgorICByZXR1cm4gZGxvYy5oYXNoID09PSAnJyB8fCBkbG9jLmhhc2ggPT09ICcj
JzsKK30KKwordmFyIGxpc3RlbmVyID0geworICBtb2RlOiAnbW9kZXJuJywKKyAgaGFzaDogZGxv
Yy5oYXNoLAorICBoaXN0b3J5OiBmYWxzZSwKKworICBjaGVjazogZnVuY3Rpb24gKCkgeworICAg
IHZhciBoID0gZGxvYy5oYXNoOworICAgIGlmIChoICE9IHRoaXMuaGFzaCkgeworICAgICAgdGhp
cy5oYXNoID0gaDsKKyAgICAgIHRoaXMub25IYXNoQ2hhbmdlZCgpOworICAgIH0KKyAgfSwKKwor
ICBmaXJlOiBmdW5jdGlvbiAoKSB7CisgICAgaWYgKHRoaXMubW9kZSA9PT0gJ21vZGVybicpIHsK
KyAgICAgIHRoaXMuaGlzdG9yeSA9PT0gdHJ1ZSA/IHdpbmRvdy5vbnBvcHN0YXRlKCkgOiB3aW5k
b3cub25oYXNoY2hhbmdlKCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgdGhpcy5vbkhhc2hD
aGFuZ2VkKCk7CisgICAgfQorICB9LAorCisgIGluaXQ6IGZ1bmN0aW9uIChmbiwgaGlzdG9yeSkg
eworICAgIHZhciBzZWxmID0gdGhpczsKKyAgICB0aGlzLmhpc3RvcnkgPSBoaXN0b3J5OworCisg
ICAgaWYgKCFSb3V0ZXIubGlzdGVuZXJzKSB7CisgICAgICBSb3V0ZXIubGlzdGVuZXJzID0gW107
CisgICAgfQorCisgICAgZnVuY3Rpb24gb25jaGFuZ2Uob25DaGFuZ2VFdmVudCkgeworICAgICAg
Zm9yICh2YXIgaSA9IDAsIGwgPSBSb3V0ZXIubGlzdGVuZXJzLmxlbmd0aDsgaSA8IGw7IGkrKykg
eworICAgICAgICBSb3V0ZXIubGlzdGVuZXJzW2ldKG9uQ2hhbmdlRXZlbnQpOworICAgICAgfQor
ICAgIH0KKworICAgIC8vbm90ZSBJRTggaXMgYmVpbmcgY291bnRlZCBhcyAnbW9kZXJuJyBiZWNh
dXNlIGl0IGhhcyB0aGUgaGFzaGNoYW5nZSBldmVudAorICAgIGlmICgnb25oYXNoY2hhbmdlJyBp
biB3aW5kb3cgJiYgKGRvY3VtZW50LmRvY3VtZW50TW9kZSA9PT0gdW5kZWZpbmVkCisgICAgICB8
fCBkb2N1bWVudC5kb2N1bWVudE1vZGUgPiA3KSkgeworICAgICAgLy8gQXQgbGVhc3QgZm9yIG5v
dyBIVE1MNSBoaXN0b3J5IGlzIGF2YWlsYWJsZSBmb3IgJ21vZGVybicgYnJvd3NlcnMgb25seQor
ICAgICAgaWYgKHRoaXMuaGlzdG9yeSA9PT0gdHJ1ZSkgeworICAgICAgICAvLyBUaGVyZSBpcyBh
biBvbGQgYnVnIGluIENocm9tZSB0aGF0IGNhdXNlcyBvbnBvcHN0YXRlIHRvIGZpcmUgZXZlbgor
ICAgICAgICAvLyB1cG9uIGluaXRpYWwgcGFnZSBsb2FkLiBTaW5jZSB0aGUgaGFuZGxlciBpcyBy
dW4gbWFudWFsbHkgaW4gaW5pdCgpLAorICAgICAgICAvLyB0aGlzIHdvdWxkIGNhdXNlIENocm9t
ZSB0byBydW4gaXQgdHdpc2UuIEN1cnJlbnRseSB0aGUgb25seQorICAgICAgICAvLyB3b3JrYXJv
dW5kIHNlZW1zIHRvIGJlIHRvIHNldCB0aGUgaGFuZGxlciBhZnRlciB0aGUgaW5pdGlhbCBwYWdl
IGxvYWQKKyAgICAgICAgLy8gaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nocm9taXVtL2lzc3Vl
cy9kZXRhaWw/aWQ9NjMwNDAKKyAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAg
ICAgICB3aW5kb3cub25wb3BzdGF0ZSA9IG9uY2hhbmdlOworICAgICAgICB9LCA1MDApOworICAg
ICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHdpbmRvdy5vbmhhc2hjaGFuZ2UgPSBvbmNoYW5n
ZTsKKyAgICAgIH0KKyAgICAgIHRoaXMubW9kZSA9ICdtb2Rlcm4nOworICAgIH0KKyAgICBlbHNl
IHsKKyAgICAgIC8vCisgICAgICAvLyBJRSBzdXBwb3J0LCBiYXNlZCBvbiBhIGNvbmNlcHQgYnkg
RXJpayBBcnZpZHNvbiAuLi4KKyAgICAgIC8vCisgICAgICB2YXIgZnJhbWUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdpZnJhbWUnKTsKKyAgICAgIGZyYW1lLmlkID0gJ3N0YXRlLWZyYW1lJzsK
KyAgICAgIGZyYW1lLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CisgICAgICBkb2N1bWVudC5ib2R5
LmFwcGVuZENoaWxkKGZyYW1lKTsKKyAgICAgIHRoaXMud3JpdGVGcmFtZSgnJyk7CisKKyAgICAg
IGlmICgnb25wcm9wZXJ0eWNoYW5nZScgaW4gZG9jdW1lbnQgJiYgJ2F0dGFjaEV2ZW50JyBpbiBk
b2N1bWVudCkgeworICAgICAgICBkb2N1bWVudC5hdHRhY2hFdmVudCgnb25wcm9wZXJ0eWNoYW5n
ZScsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICBpZiAoZXZlbnQucHJvcGVydHlOYW1lID09PSAn
bG9jYXRpb24nKSB7CisgICAgICAgICAgICBzZWxmLmNoZWNrKCk7CisgICAgICAgICAgfQorICAg
ICAgICB9KTsKKyAgICAgIH0KKworICAgICAgd2luZG93LnNldEludGVydmFsKGZ1bmN0aW9uICgp
IHsgc2VsZi5jaGVjaygpOyB9LCA1MCk7CisKKyAgICAgIHRoaXMub25IYXNoQ2hhbmdlZCA9IG9u
Y2hhbmdlOworICAgICAgdGhpcy5tb2RlID0gJ2xlZ2FjeSc7CisgICAgfQorCisgICAgUm91dGVy
Lmxpc3RlbmVycy5wdXNoKGZuKTsKKworICAgIHJldHVybiB0aGlzLm1vZGU7CisgIH0sCisKKyAg
ZGVzdHJveTogZnVuY3Rpb24gKGZuKSB7CisgICAgaWYgKCFSb3V0ZXIgfHwgIVJvdXRlci5saXN0
ZW5lcnMpIHsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2YXIgbGlzdGVuZXJzID0gUm91
dGVyLmxpc3RlbmVyczsKKworICAgIGZvciAodmFyIGkgPSBsaXN0ZW5lcnMubGVuZ3RoIC0gMTsg
aSA+PSAwOyBpLS0pIHsKKyAgICAgIGlmIChsaXN0ZW5lcnNbaV0gPT09IGZuKSB7CisgICAgICAg
IGxpc3RlbmVycy5zcGxpY2UoaSwgMSk7CisgICAgICB9CisgICAgfQorICB9LAorCisgIHNldEhh
c2g6IGZ1bmN0aW9uIChzKSB7CisgICAgLy8gTW96aWxsYSBhbHdheXMgYWRkcyBhbiBlbnRyeSB0
byB0aGUgaGlzdG9yeQorICAgIGlmICh0aGlzLm1vZGUgPT09ICdsZWdhY3knKSB7CisgICAgICB0
aGlzLndyaXRlRnJhbWUocyk7CisgICAgfQorCisgICAgaWYgKHRoaXMuaGlzdG9yeSA9PT0gdHJ1
ZSkgeworICAgICAgd2luZG93Lmhpc3RvcnkucHVzaFN0YXRlKHt9LCBkb2N1bWVudC50aXRsZSwg
cyk7CisgICAgICAvLyBGaXJlIGFuIG9ucG9wc3RhdGUgZXZlbnQgbWFudWFsbHkgc2luY2UgcHVz
aGluZyBkb2VzIG5vdCBvYnZpb3VzbHkKKyAgICAgIC8vIHRyaWdnZXIgdGhlIHBvcCBldmVudC4K
KyAgICAgIHRoaXMuZmlyZSgpOworICAgIH0gZWxzZSB7CisgICAgICBkbG9jLmhhc2ggPSAoc1sw
XSA9PT0gJy8nKSA/IHMgOiAnLycgKyBzOworICAgIH0KKyAgICByZXR1cm4gdGhpczsKKyAgfSwK
KworICB3cml0ZUZyYW1lOiBmdW5jdGlvbiAocykgeworICAgIC8vIElFIHN1cHBvcnQuLi4KKyAg
ICB2YXIgZiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdGF0ZS1mcmFtZScpOworICAgIHZh
ciBkID0gZi5jb250ZW50RG9jdW1lbnQgfHwgZi5jb250ZW50V2luZG93LmRvY3VtZW50OworICAg
IGQub3BlbigpOworICAgIGQud3JpdGUoIjxzY3JpcHQ+X2hhc2ggPSAnIiArIHMgKyAiJzsgb25s
b2FkID0gcGFyZW50Lmxpc3RlbmVyLnN5bmNIYXNoOzxzY3JpcHQ+Iik7CisgICAgZC5jbG9zZSgp
OworICB9LAorCisgIHN5bmNIYXNoOiBmdW5jdGlvbiAoKSB7CisgICAgLy8gSUUgc3VwcG9ydC4u
LgorICAgIHZhciBzID0gdGhpcy5faGFzaDsKKyAgICBpZiAocyAhPSBkbG9jLmhhc2gpIHsKKyAg
ICAgIGRsb2MuaGFzaCA9IHM7CisgICAgfQorICAgIHJldHVybiB0aGlzOworICB9LAorCisgIG9u
SGFzaENoYW5nZWQ6IGZ1bmN0aW9uICgpIHt9Cit9OworCit2YXIgUm91dGVyID0gZXhwb3J0cy5S
b3V0ZXIgPSBmdW5jdGlvbiAocm91dGVzKSB7CisgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBSb3V0
ZXIpKSByZXR1cm4gbmV3IFJvdXRlcihyb3V0ZXMpOworCisgIHRoaXMucGFyYW1zICAgPSB7fTsK
KyAgdGhpcy5yb3V0ZXMgICA9IHt9OworICB0aGlzLm1ldGhvZHMgID0gWydvbicsICdvbmNlJywg
J2FmdGVyJywgJ2JlZm9yZSddOworICB0aGlzLnNjb3BlICAgID0gW107CisgIHRoaXMuX21ldGhv
ZHMgPSB7fTsKKworICB0aGlzLl9pbnNlcnQgPSB0aGlzLmluc2VydDsKKyAgdGhpcy5pbnNlcnQg
PSB0aGlzLmluc2VydEV4OworCisgIHRoaXMuaGlzdG9yeVN1cHBvcnQgPSAod2luZG93Lmhpc3Rv
cnkgIT0gbnVsbCA/IHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZSA6IG51bGwpICE9IG51bGwKKwor
ICB0aGlzLmNvbmZpZ3VyZSgpOworICB0aGlzLm1vdW50KHJvdXRlcyB8fCB7fSk7Cit9OworCitS
b3V0ZXIucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAocikgeworICB2YXIgc2VsZiA9IHRoaXMK
KyAgICAsIHJvdXRlVG87CisgIHRoaXMuaGFuZGxlciA9IGZ1bmN0aW9uKG9uQ2hhbmdlRXZlbnQp
IHsKKyAgICB2YXIgbmV3VVJMID0gb25DaGFuZ2VFdmVudCAmJiBvbkNoYW5nZUV2ZW50Lm5ld1VS
TCB8fCB3aW5kb3cubG9jYXRpb24uaGFzaDsKKyAgICB2YXIgdXJsID0gc2VsZi5oaXN0b3J5ID09
PSB0cnVlID8gc2VsZi5nZXRQYXRoKCkgOiBuZXdVUkwucmVwbGFjZSgvLiojLywgJycpOworICAg
IHNlbGYuZGlzcGF0Y2goJ29uJywgdXJsLmNoYXJBdCgwKSA9PT0gJy8nID8gdXJsIDogJy8nICsg
dXJsKTsKKyAgfTsKKworICBsaXN0ZW5lci5pbml0KHRoaXMuaGFuZGxlciwgdGhpcy5oaXN0b3J5
KTsKKworICBpZiAodGhpcy5oaXN0b3J5ID09PSBmYWxzZSkgeworICAgIGlmIChkbG9jSGFzaEVt
cHR5KCkgJiYgcikgeworICAgICAgZGxvYy5oYXNoID0gcjsKKyAgICB9IGVsc2UgaWYgKCFkbG9j
SGFzaEVtcHR5KCkpIHsKKyAgICAgIHNlbGYuZGlzcGF0Y2goJ29uJywgJy8nICsgZGxvYy5oYXNo
LnJlcGxhY2UoL14oI1wvfCN8XC8pLywgJycpKTsKKyAgICB9CisgIH0KKyAgZWxzZSB7CisgICAg
aWYgKHRoaXMuY29udmVydF9oYXNoX2luX2luaXQpIHsKKyAgICAgIC8vIFVzZSBoYXNoIGFzIHJv
dXRlCisgICAgICByb3V0ZVRvID0gZGxvY0hhc2hFbXB0eSgpICYmIHIgPyByIDogIWRsb2NIYXNo
RW1wdHkoKSA/IGRsb2MuaGFzaC5yZXBsYWNlKC9eIy8sICcnKSA6IG51bGw7CisgICAgICBpZiAo
cm91dGVUbykgeworICAgICAgICB3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUoe30sIGRvY3Vt
ZW50LnRpdGxlLCByb3V0ZVRvKTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAv
LyBVc2UgY2Fub25pY2FsIHVybAorICAgICAgcm91dGVUbyA9IHRoaXMuZ2V0UGF0aCgpOworICAg
IH0KKworICAgIC8vIFJvdXRlciBoYXMgYmVlbiBpbml0aWFsaXplZCwgYnV0IGR1ZSB0byB0aGUg
Y2hyb21lIGJ1ZyBpdCB3aWxsIG5vdAorICAgIC8vIHlldCBhY3R1YWxseSByb3V0ZSBIVE1MNSBo
aXN0b3J5IHN0YXRlIGNoYW5nZXMuIFRodXMsIGRlY2lkZSBpZiBzaG91bGQgcm91dGUuCisgICAg
aWYgKHJvdXRlVG8gfHwgdGhpcy5ydW5faW5faW5pdCA9PT0gdHJ1ZSkgeworICAgICAgdGhpcy5o
YW5kbGVyKCk7CisgICAgfQorICB9CisKKyAgcmV0dXJuIHRoaXM7Cit9OworCitSb3V0ZXIucHJv
dG90eXBlLmV4cGxvZGUgPSBmdW5jdGlvbiAoKSB7CisgIHZhciB2ID0gdGhpcy5oaXN0b3J5ID09
PSB0cnVlID8gdGhpcy5nZXRQYXRoKCkgOiBkbG9jLmhhc2g7CisgIGlmICh2LmNoYXJBdCgxKSA9
PT0gJy8nKSB7IHY9di5zbGljZSgxKSB9CisgIHJldHVybiB2LnNsaWNlKDEsIHYubGVuZ3RoKS5z
cGxpdCgiLyIpOworfTsKKworUm91dGVyLnByb3RvdHlwZS5zZXRSb3V0ZSA9IGZ1bmN0aW9uIChp
LCB2LCB2YWwpIHsKKyAgdmFyIHVybCA9IHRoaXMuZXhwbG9kZSgpOworCisgIGlmICh0eXBlb2Yg
aSA9PT0gJ251bWJlcicgJiYgdHlwZW9mIHYgPT09ICdzdHJpbmcnKSB7CisgICAgdXJsW2ldID0g
djsKKyAgfQorICBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5nJykgeworICAgIHVybC5z
cGxpY2UoaSwgdiwgcyk7CisgIH0KKyAgZWxzZSB7CisgICAgdXJsID0gW2ldOworICB9CisKKyAg
bGlzdGVuZXIuc2V0SGFzaCh1cmwuam9pbignLycpKTsKKyAgcmV0dXJuIHVybDsKK307CisKKy8v
CisvLyAjIyMgZnVuY3Rpb24gaW5zZXJ0RXgobWV0aG9kLCBwYXRoLCByb3V0ZSwgcGFyZW50KQor
Ly8gIyMjIyBAbWV0aG9kIHtzdHJpbmd9IE1ldGhvZCB0byBpbnNlcnQgdGhlIHNwZWNpZmljIGBy
b3V0ZWAuCisvLyAjIyMjIEBwYXRoIHtBcnJheX0gUGFyc2VkIHBhdGggdG8gaW5zZXJ0IHRoZSBg
cm91dGVgIGF0LgorLy8gIyMjIyBAcm91dGUge0FycmF5fGZ1bmN0aW9ufSBSb3V0ZSBoYW5kbGVy
cyB0byBpbnNlcnQuCisvLyAjIyMjIEBwYXJlbnQge09iamVjdH0gKipPcHRpb25hbCoqIFBhcmVu
dCAicm91dGVzIiB0byBpbnNlcnQgaW50by4KKy8vIGluc2VydCBhIGNhbGxiYWNrIHRoYXQgd2ls
bCBvbmx5IG9jY3VyIG9uY2UgcGVyIHRoZSBtYXRjaGVkIHJvdXRlLgorLy8KK1JvdXRlci5wcm90
b3R5cGUuaW5zZXJ0RXggPSBmdW5jdGlvbihtZXRob2QsIHBhdGgsIHJvdXRlLCBwYXJlbnQpIHsK
KyAgaWYgKG1ldGhvZCA9PT0gIm9uY2UiKSB7CisgICAgbWV0aG9kID0gIm9uIjsKKyAgICByb3V0
ZSA9IGZ1bmN0aW9uKHJvdXRlKSB7CisgICAgICB2YXIgb25jZSA9IGZhbHNlOworICAgICAgcmV0
dXJuIGZ1bmN0aW9uKCkgeworICAgICAgICBpZiAob25jZSkgcmV0dXJuOworICAgICAgICBvbmNl
ID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIHJvdXRlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7Cisg
ICAgICB9OworICAgIH0ocm91dGUpOworICB9CisgIHJldHVybiB0aGlzLl9pbnNlcnQobWV0aG9k
LCBwYXRoLCByb3V0ZSwgcGFyZW50KTsKK307CisKK1JvdXRlci5wcm90b3R5cGUuZ2V0Um91dGUg
PSBmdW5jdGlvbiAodikgeworICB2YXIgcmV0ID0gdjsKKworICBpZiAodHlwZW9mIHYgPT09ICJu
dW1iZXIiKSB7CisgICAgcmV0ID0gdGhpcy5leHBsb2RlKClbdl07CisgIH0KKyAgZWxzZSBpZiAo
dHlwZW9mIHYgPT09ICJzdHJpbmciKXsKKyAgICB2YXIgaCA9IHRoaXMuZXhwbG9kZSgpOworICAg
IHJldCA9IGguaW5kZXhPZih2KTsKKyAgfQorICBlbHNlIHsKKyAgICByZXQgPSB0aGlzLmV4cGxv
ZGUoKTsKKyAgfQorCisgIHJldHVybiByZXQ7Cit9OworCitSb3V0ZXIucHJvdG90eXBlLmRlc3Ry
b3kgPSBmdW5jdGlvbiAoKSB7CisgIGxpc3RlbmVyLmRlc3Ryb3kodGhpcy5oYW5kbGVyKTsKKyAg
cmV0dXJuIHRoaXM7Cit9OworCitSb3V0ZXIucHJvdG90eXBlLmdldFBhdGggPSBmdW5jdGlvbiAo
KSB7CisgIHZhciBwYXRoID0gd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lOworICBpZiAocGF0aC5z
dWJzdHIoMCwgMSkgIT09ICcvJykgeworICAgIHBhdGggPSAnLycgKyBwYXRoOworICB9CisgIHJl
dHVybiBwYXRoOworfTsKK2Z1bmN0aW9uIF9ldmVyeShhcnIsIGl0ZXJhdG9yKSB7CisgIGZvciAo
dmFyIGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSArPSAxKSB7CisgICAgaWYgKGl0ZXJhdG9yKGFy
cltpXSwgaSwgYXJyKSA9PT0gZmFsc2UpIHsKKyAgICAgIHJldHVybjsKKyAgICB9CisgIH0KK30K
KworZnVuY3Rpb24gX2ZsYXR0ZW4oYXJyKSB7CisgIHZhciBmbGF0ID0gW107CisgIGZvciAodmFy
IGkgPSAwLCBuID0gYXJyLmxlbmd0aDsgaSA8IG47IGkrKykgeworICAgIGZsYXQgPSBmbGF0LmNv
bmNhdChhcnJbaV0pOworICB9CisgIHJldHVybiBmbGF0OworfQorCitmdW5jdGlvbiBfYXN5bmNF
dmVyeVNlcmllcyhhcnIsIGl0ZXJhdG9yLCBjYWxsYmFjaykgeworICBpZiAoIWFyci5sZW5ndGgp
IHsKKyAgICByZXR1cm4gY2FsbGJhY2soKTsKKyAgfQorICB2YXIgY29tcGxldGVkID0gMDsKKyAg
KGZ1bmN0aW9uIGl0ZXJhdGUoKSB7CisgICAgaXRlcmF0b3IoYXJyW2NvbXBsZXRlZF0sIGZ1bmN0
aW9uKGVycikgeworICAgICAgaWYgKGVyciB8fCBlcnIgPT09IGZhbHNlKSB7CisgICAgICAgIGNh
bGxiYWNrKGVycik7CisgICAgICAgIGNhbGxiYWNrID0gZnVuY3Rpb24oKSB7fTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIGNvbXBsZXRlZCArPSAxOworICAgICAgICBpZiAoY29tcGxldGVkID09
PSBhcnIubGVuZ3RoKSB7CisgICAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICBpdGVyYXRlKCk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9KTsKKyAgfSko
KTsKK30KKworZnVuY3Rpb24gcGFyYW1pZnlTdHJpbmcoc3RyLCBwYXJhbXMsIG1vZCkgeworICBt
b2QgPSBzdHI7CisgIGZvciAodmFyIHBhcmFtIGluIHBhcmFtcykgeworICAgIGlmIChwYXJhbXMu
aGFzT3duUHJvcGVydHkocGFyYW0pKSB7CisgICAgICBtb2QgPSBwYXJhbXNbcGFyYW1dKHN0cik7
CisgICAgICBpZiAobW9kICE9PSBzdHIpIHsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAg
fQorICB9CisgIHJldHVybiBtb2QgPT09IHN0ciA/ICIoWy5fYS16QS1aMC05LSUoKV0rKSIgOiBt
b2Q7Cit9CisKK2Z1bmN0aW9uIHJlZ2lmeVN0cmluZyhzdHIsIHBhcmFtcykgeworICB2YXIgbWF0
Y2hlcywgbGFzdCA9IDAsIG91dCA9ICIiOworICB3aGlsZSAobWF0Y2hlcyA9IHN0ci5zdWJzdHIo
bGFzdCkubWF0Y2goL1teXHdcZFwtICVAJl0qXCpbXlx3XGRcLSAlQCZdKi8pKSB7CisgICAgbGFz
dCA9IG1hdGNoZXMuaW5kZXggKyBtYXRjaGVzWzBdLmxlbmd0aDsKKyAgICBtYXRjaGVzWzBdID0g
bWF0Y2hlc1swXS5yZXBsYWNlKC9eXCovLCAiKFtfLigpIVxcICVAJmEtekEtWjAtOS1dKykiKTsK
KyAgICBvdXQgKz0gc3RyLnN1YnN0cigwLCBtYXRjaGVzLmluZGV4KSArIG1hdGNoZXNbMF07Cisg
IH0KKyAgc3RyID0gb3V0ICs9IHN0ci5zdWJzdHIobGFzdCk7CisgIHZhciBjYXB0dXJlcyA9IHN0
ci5tYXRjaCgvOihbXlwvXSspL2lnKSwgY2FwdHVyZSwgbGVuZ3RoOworICBpZiAoY2FwdHVyZXMp
IHsKKyAgICBsZW5ndGggPSBjYXB0dXJlcy5sZW5ndGg7CisgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBsZW5ndGg7IGkrKykgeworICAgICAgY2FwdHVyZSA9IGNhcHR1cmVzW2ldOworICAgICAgaWYg
KGNhcHR1cmUuc2xpY2UoMCwgMikgPT09ICI6OiIpIHsKKyAgICAgICAgc3RyID0gY2FwdHVyZS5z
bGljZSgxKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHN0ciA9IHN0ci5yZXBsYWNlKGNhcHR1
cmUsIHBhcmFtaWZ5U3RyaW5nKGNhcHR1cmUsIHBhcmFtcykpOworICAgICAgfQorICAgIH0KKyAg
fQorICByZXR1cm4gc3RyOworfQorCitmdW5jdGlvbiB0ZXJtaW5hdG9yKHJvdXRlcywgZGVsaW1p
dGVyLCBzdGFydCwgc3RvcCkgeworICB2YXIgbGFzdCA9IDAsIGxlZnQgPSAwLCByaWdodCA9IDAs
IHN0YXJ0ID0gKHN0YXJ0IHx8ICIoIikudG9TdHJpbmcoKSwgc3RvcCA9IChzdG9wIHx8ICIpIiku
dG9TdHJpbmcoKSwgaTsKKyAgZm9yIChpID0gMDsgaSA8IHJvdXRlcy5sZW5ndGg7IGkrKykgewor
ICAgIHZhciBjaHVuayA9IHJvdXRlc1tpXTsKKyAgICBpZiAoY2h1bmsuaW5kZXhPZihzdGFydCwg
bGFzdCkgPiBjaHVuay5pbmRleE9mKHN0b3AsIGxhc3QpIHx8IH5jaHVuay5pbmRleE9mKHN0YXJ0
LCBsYXN0KSAmJiAhfmNodW5rLmluZGV4T2Yoc3RvcCwgbGFzdCkgfHwgIX5jaHVuay5pbmRleE9m
KHN0YXJ0LCBsYXN0KSAmJiB+Y2h1bmsuaW5kZXhPZihzdG9wLCBsYXN0KSkgeworICAgICAgbGVm
dCA9IGNodW5rLmluZGV4T2Yoc3RhcnQsIGxhc3QpOworICAgICAgcmlnaHQgPSBjaHVuay5pbmRl
eE9mKHN0b3AsIGxhc3QpOworICAgICAgaWYgKH5sZWZ0ICYmICF+cmlnaHQgfHwgIX5sZWZ0ICYm
IH5yaWdodCkgeworICAgICAgICB2YXIgdG1wID0gcm91dGVzLnNsaWNlKDAsIChpIHx8IDEpICsg
MSkuam9pbihkZWxpbWl0ZXIpOworICAgICAgICByb3V0ZXMgPSBbIHRtcCBdLmNvbmNhdChyb3V0
ZXMuc2xpY2UoKGkgfHwgMSkgKyAxKSk7CisgICAgICB9CisgICAgICBsYXN0ID0gKHJpZ2h0ID4g
bGVmdCA/IHJpZ2h0IDogbGVmdCkgKyAxOworICAgICAgaSA9IDA7CisgICAgfSBlbHNlIHsKKyAg
ICAgIGxhc3QgPSAwOworICAgIH0KKyAgfQorICByZXR1cm4gcm91dGVzOworfQorCit2YXIgUVVF
UllfU0VQQVJBVE9SID0gL1w/LiovOworCitSb3V0ZXIucHJvdG90eXBlLmNvbmZpZ3VyZSA9IGZ1
bmN0aW9uKG9wdGlvbnMpIHsKKyAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307CisgIGZvciAodmFy
IGkgPSAwOyBpIDwgdGhpcy5tZXRob2RzLmxlbmd0aDsgaSsrKSB7CisgICAgdGhpcy5fbWV0aG9k
c1t0aGlzLm1ldGhvZHNbaV1dID0gdHJ1ZTsKKyAgfQorICB0aGlzLnJlY3Vyc2UgPSBvcHRpb25z
LnJlY3Vyc2UgfHwgdGhpcy5yZWN1cnNlIHx8IGZhbHNlOworICB0aGlzLmFzeW5jID0gb3B0aW9u
cy5hc3luYyB8fCBmYWxzZTsKKyAgdGhpcy5kZWxpbWl0ZXIgPSBvcHRpb25zLmRlbGltaXRlciB8
fCAiLyI7CisgIHRoaXMuc3RyaWN0ID0gdHlwZW9mIG9wdGlvbnMuc3RyaWN0ID09PSAidW5kZWZp
bmVkIiA/IHRydWUgOiBvcHRpb25zLnN0cmljdDsKKyAgdGhpcy5ub3Rmb3VuZCA9IG9wdGlvbnMu
bm90Zm91bmQ7CisgIHRoaXMucmVzb3VyY2UgPSBvcHRpb25zLnJlc291cmNlOworICB0aGlzLmhp
c3RvcnkgPSBvcHRpb25zLmh0bWw1aGlzdG9yeSAmJiB0aGlzLmhpc3RvcnlTdXBwb3J0IHx8IGZh
bHNlOworICB0aGlzLnJ1bl9pbl9pbml0ID0gdGhpcy5oaXN0b3J5ID09PSB0cnVlICYmIG9wdGlv
bnMucnVuX2hhbmRsZXJfaW5faW5pdCAhPT0gZmFsc2U7CisgIHRoaXMuY29udmVydF9oYXNoX2lu
X2luaXQgPSB0aGlzLmhpc3RvcnkgPT09IHRydWUgJiYgb3B0aW9ucy5jb252ZXJ0X2hhc2hfaW5f
aW5pdCAhPT0gZmFsc2U7CisgIHRoaXMuZXZlcnkgPSB7CisgICAgYWZ0ZXI6IG9wdGlvbnMuYWZ0
ZXIgfHwgbnVsbCwKKyAgICBiZWZvcmU6IG9wdGlvbnMuYmVmb3JlIHx8IG51bGwsCisgICAgb246
IG9wdGlvbnMub24gfHwgbnVsbAorICB9OworICByZXR1cm4gdGhpczsKK307CisKK1JvdXRlci5w
cm90b3R5cGUucGFyYW0gPSBmdW5jdGlvbih0b2tlbiwgbWF0Y2hlcikgeworICBpZiAodG9rZW5b
MF0gIT09ICI6IikgeworICAgIHRva2VuID0gIjoiICsgdG9rZW47CisgIH0KKyAgdmFyIGNvbXBp
bGVkID0gbmV3IFJlZ0V4cCh0b2tlbiwgImciKTsKKyAgdGhpcy5wYXJhbXNbdG9rZW5dID0gZnVu
Y3Rpb24oc3RyKSB7CisgICAgcmV0dXJuIHN0ci5yZXBsYWNlKGNvbXBpbGVkLCBtYXRjaGVyLnNv
dXJjZSB8fCBtYXRjaGVyKTsKKyAgfTsKKyAgcmV0dXJuIHRoaXM7Cit9OworCitSb3V0ZXIucHJv
dG90eXBlLm9uID0gUm91dGVyLnByb3RvdHlwZS5yb3V0ZSA9IGZ1bmN0aW9uKG1ldGhvZCwgcGF0
aCwgcm91dGUpIHsKKyAgdmFyIHNlbGYgPSB0aGlzOworICBpZiAoIXJvdXRlICYmIHR5cGVvZiBw
YXRoID09ICJmdW5jdGlvbiIpIHsKKyAgICByb3V0ZSA9IHBhdGg7CisgICAgcGF0aCA9IG1ldGhv
ZDsKKyAgICBtZXRob2QgPSAib24iOworICB9CisgIGlmIChBcnJheS5pc0FycmF5KHBhdGgpKSB7
CisgICAgcmV0dXJuIHBhdGguZm9yRWFjaChmdW5jdGlvbihwKSB7CisgICAgICBzZWxmLm9uKG1l
dGhvZCwgcCwgcm91dGUpOworICAgIH0pOworICB9CisgIGlmIChwYXRoLnNvdXJjZSkgeworICAg
IHBhdGggPSBwYXRoLnNvdXJjZS5yZXBsYWNlKC9cXFwvL2lnLCAiLyIpOworICB9CisgIGlmIChB
cnJheS5pc0FycmF5KG1ldGhvZCkpIHsKKyAgICByZXR1cm4gbWV0aG9kLmZvckVhY2goZnVuY3Rp
b24obSkgeworICAgICAgc2VsZi5vbihtLnRvTG93ZXJDYXNlKCksIHBhdGgsIHJvdXRlKTsKKyAg
ICB9KTsKKyAgfQorICBwYXRoID0gcGF0aC5zcGxpdChuZXcgUmVnRXhwKHRoaXMuZGVsaW1pdGVy
KSk7CisgIHBhdGggPSB0ZXJtaW5hdG9yKHBhdGgsIHRoaXMuZGVsaW1pdGVyKTsKKyAgdGhpcy5p
bnNlcnQobWV0aG9kLCB0aGlzLnNjb3BlLmNvbmNhdChwYXRoKSwgcm91dGUpOworfTsKKworUm91
dGVyLnByb3RvdHlwZS5wYXRoID0gZnVuY3Rpb24ocGF0aCwgcm91dGVzRm4pIHsKKyAgdmFyIHNl
bGYgPSB0aGlzLCBsZW5ndGggPSB0aGlzLnNjb3BlLmxlbmd0aDsKKyAgaWYgKHBhdGguc291cmNl
KSB7CisgICAgcGF0aCA9IHBhdGguc291cmNlLnJlcGxhY2UoL1xcXC8vaWcsICIvIik7CisgIH0K
KyAgcGF0aCA9IHBhdGguc3BsaXQobmV3IFJlZ0V4cCh0aGlzLmRlbGltaXRlcikpOworICBwYXRo
ID0gdGVybWluYXRvcihwYXRoLCB0aGlzLmRlbGltaXRlcik7CisgIHRoaXMuc2NvcGUgPSB0aGlz
LnNjb3BlLmNvbmNhdChwYXRoKTsKKyAgcm91dGVzRm4uY2FsbCh0aGlzLCB0aGlzKTsKKyAgdGhp
cy5zY29wZS5zcGxpY2UobGVuZ3RoLCBwYXRoLmxlbmd0aCk7Cit9OworCitSb3V0ZXIucHJvdG90
eXBlLmRpc3BhdGNoID0gZnVuY3Rpb24obWV0aG9kLCBwYXRoLCBjYWxsYmFjaykgeworICB2YXIg
c2VsZiA9IHRoaXMsIGZucyA9IHRoaXMudHJhdmVyc2UobWV0aG9kLCBwYXRoLnJlcGxhY2UoUVVF
UllfU0VQQVJBVE9SLCAiIiksIHRoaXMucm91dGVzLCAiIiksIGludm9rZWQgPSB0aGlzLl9pbnZv
a2VkLCBhZnRlcjsKKyAgdGhpcy5faW52b2tlZCA9IHRydWU7CisgIGlmICghZm5zIHx8IGZucy5s
ZW5ndGggPT09IDApIHsKKyAgICB0aGlzLmxhc3QgPSBbXTsKKyAgICBpZiAodHlwZW9mIHRoaXMu
bm90Zm91bmQgPT09ICJmdW5jdGlvbiIpIHsKKyAgICAgIHRoaXMuaW52b2tlKFsgdGhpcy5ub3Rm
b3VuZCBdLCB7CisgICAgICAgIG1ldGhvZDogbWV0aG9kLAorICAgICAgICBwYXRoOiBwYXRoCisg
ICAgICB9LCBjYWxsYmFjayk7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKKyAgfQorICBpZiAo
dGhpcy5yZWN1cnNlID09PSAiZm9yd2FyZCIpIHsKKyAgICBmbnMgPSBmbnMucmV2ZXJzZSgpOwor
ICB9CisgIGZ1bmN0aW9uIHVwZGF0ZUFuZEludm9rZSgpIHsKKyAgICBzZWxmLmxhc3QgPSBmbnMu
YWZ0ZXI7CisgICAgc2VsZi5pbnZva2Uoc2VsZi5ydW5saXN0KGZucyksIHNlbGYsIGNhbGxiYWNr
KTsKKyAgfQorICBhZnRlciA9IHRoaXMuZXZlcnkgJiYgdGhpcy5ldmVyeS5hZnRlciA/IFsgdGhp
cy5ldmVyeS5hZnRlciBdLmNvbmNhdCh0aGlzLmxhc3QpIDogWyB0aGlzLmxhc3QgXTsKKyAgaWYg
KGFmdGVyICYmIGFmdGVyLmxlbmd0aCA+IDAgJiYgaW52b2tlZCkgeworICAgIGlmICh0aGlzLmFz
eW5jKSB7CisgICAgICB0aGlzLmludm9rZShhZnRlciwgdGhpcywgdXBkYXRlQW5kSW52b2tlKTsK
KyAgICB9IGVsc2UgeworICAgICAgdGhpcy5pbnZva2UoYWZ0ZXIsIHRoaXMpOworICAgICAgdXBk
YXRlQW5kSW52b2tlKCk7CisgICAgfQorICAgIHJldHVybiB0cnVlOworICB9CisgIHVwZGF0ZUFu
ZEludm9rZSgpOworICByZXR1cm4gdHJ1ZTsKK307CisKK1JvdXRlci5wcm90b3R5cGUuaW52b2tl
ID0gZnVuY3Rpb24oZm5zLCB0aGlzQXJnLCBjYWxsYmFjaykgeworICB2YXIgc2VsZiA9IHRoaXM7
CisgIHZhciBhcHBseTsKKyAgaWYgKHRoaXMuYXN5bmMpIHsKKyAgICBhcHBseSA9IGZ1bmN0aW9u
KGZuLCBuZXh0KSB7CisgICAgICBpZiAoQXJyYXkuaXNBcnJheShmbikpIHsKKyAgICAgICAgcmV0
dXJuIF9hc3luY0V2ZXJ5U2VyaWVzKGZuLCBhcHBseSwgbmV4dCk7CisgICAgICB9IGVsc2UgaWYg
KHR5cGVvZiBmbiA9PSAiZnVuY3Rpb24iKSB7CisgICAgICAgIGZuLmFwcGx5KHRoaXNBcmcsIChm
bnMuY2FwdHVyZXMgfHwgW10pLmNvbmNhdChuZXh0KSk7CisgICAgICB9CisgICAgfTsKKyAgICBf
YXN5bmNFdmVyeVNlcmllcyhmbnMsIGFwcGx5LCBmdW5jdGlvbigpIHsKKyAgICAgIGlmIChjYWxs
YmFjaykgeworICAgICAgICBjYWxsYmFjay5hcHBseSh0aGlzQXJnLCBhcmd1bWVudHMpOworICAg
ICAgfQorICAgIH0pOworICB9IGVsc2UgeworICAgIGFwcGx5ID0gZnVuY3Rpb24oZm4pIHsKKyAg
ICAgIGlmIChBcnJheS5pc0FycmF5KGZuKSkgeworICAgICAgICByZXR1cm4gX2V2ZXJ5KGZuLCBh
cHBseSk7CisgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBmbiA9PT0gImZ1bmN0aW9uIikgeworICAg
ICAgICByZXR1cm4gZm4uYXBwbHkodGhpc0FyZywgZm5zLmNhcHR1cmVzIHx8IFtdKTsKKyAgICAg
IH0gZWxzZSBpZiAodHlwZW9mIGZuID09PSAic3RyaW5nIiAmJiBzZWxmLnJlc291cmNlKSB7Cisg
ICAgICAgIHNlbGYucmVzb3VyY2VbZm5dLmFwcGx5KHRoaXNBcmcsIGZucy5jYXB0dXJlcyB8fCBb
XSk7CisgICAgICB9CisgICAgfTsKKyAgICBfZXZlcnkoZm5zLCBhcHBseSk7CisgIH0KK307CisK
K1JvdXRlci5wcm90b3R5cGUudHJhdmVyc2UgPSBmdW5jdGlvbihtZXRob2QsIHBhdGgsIHJvdXRl
cywgcmVnZXhwLCBmaWx0ZXIpIHsKKyAgdmFyIGZucyA9IFtdLCBjdXJyZW50LCBleGFjdCwgbWF0
Y2gsIG5leHQsIHRoYXQ7CisgIGZ1bmN0aW9uIGZpbHRlclJvdXRlcyhyb3V0ZXMpIHsKKyAgICBp
ZiAoIWZpbHRlcikgeworICAgICAgcmV0dXJuIHJvdXRlczsKKyAgICB9CisgICAgZnVuY3Rpb24g
ZGVlcENvcHkoc291cmNlKSB7CisgICAgICB2YXIgcmVzdWx0ID0gW107CisgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IHNvdXJjZS5sZW5ndGg7IGkrKykgeworICAgICAgICByZXN1bHRbaV0gPSBB
cnJheS5pc0FycmF5KHNvdXJjZVtpXSkgPyBkZWVwQ29weShzb3VyY2VbaV0pIDogc291cmNlW2ld
OworICAgICAgfQorICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgZnVuY3Rpb24gYXBw
bHlGaWx0ZXIoZm5zKSB7CisgICAgICBmb3IgKHZhciBpID0gZm5zLmxlbmd0aCAtIDE7IGkgPj0g
MDsgaS0tKSB7CisgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGZuc1tpXSkpIHsKKyAgICAgICAg
ICBhcHBseUZpbHRlcihmbnNbaV0pOworICAgICAgICAgIGlmIChmbnNbaV0ubGVuZ3RoID09PSAw
KSB7CisgICAgICAgICAgICBmbnMuc3BsaWNlKGksIDEpOworICAgICAgICAgIH0KKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICBpZiAoIWZpbHRlcihmbnNbaV0pKSB7CisgICAgICAgICAgICBm
bnMuc3BsaWNlKGksIDEpOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0K
KyAgICB2YXIgbmV3Um91dGVzID0gZGVlcENvcHkocm91dGVzKTsKKyAgICBuZXdSb3V0ZXMubWF0
Y2hlZCA9IHJvdXRlcy5tYXRjaGVkOworICAgIG5ld1JvdXRlcy5jYXB0dXJlcyA9IHJvdXRlcy5j
YXB0dXJlczsKKyAgICBuZXdSb3V0ZXMuYWZ0ZXIgPSByb3V0ZXMuYWZ0ZXIuZmlsdGVyKGZpbHRl
cik7CisgICAgYXBwbHlGaWx0ZXIobmV3Um91dGVzKTsKKyAgICByZXR1cm4gbmV3Um91dGVzOwor
ICB9CisgIGlmIChwYXRoID09PSB0aGlzLmRlbGltaXRlciAmJiByb3V0ZXNbbWV0aG9kXSkgewor
ICAgIG5leHQgPSBbIFsgcm91dGVzLmJlZm9yZSwgcm91dGVzW21ldGhvZF0gXS5maWx0ZXIoQm9v
bGVhbikgXTsKKyAgICBuZXh0LmFmdGVyID0gWyByb3V0ZXMuYWZ0ZXIgXS5maWx0ZXIoQm9vbGVh
bik7CisgICAgbmV4dC5tYXRjaGVkID0gdHJ1ZTsKKyAgICBuZXh0LmNhcHR1cmVzID0gW107Cisg
ICAgcmV0dXJuIGZpbHRlclJvdXRlcyhuZXh0KTsKKyAgfQorICBmb3IgKHZhciByIGluIHJvdXRl
cykgeworICAgIGlmIChyb3V0ZXMuaGFzT3duUHJvcGVydHkocikgJiYgKCF0aGlzLl9tZXRob2Rz
W3JdIHx8IHRoaXMuX21ldGhvZHNbcl0gJiYgdHlwZW9mIHJvdXRlc1tyXSA9PT0gIm9iamVjdCIg
JiYgIUFycmF5LmlzQXJyYXkocm91dGVzW3JdKSkpIHsKKyAgICAgIGN1cnJlbnQgPSBleGFjdCA9
IHJlZ2V4cCArIHRoaXMuZGVsaW1pdGVyICsgcjsKKyAgICAgIGlmICghdGhpcy5zdHJpY3QpIHsK
KyAgICAgICAgZXhhY3QgKz0gIlsiICsgdGhpcy5kZWxpbWl0ZXIgKyAiXT8iOworICAgICAgfQor
ICAgICAgbWF0Y2ggPSBwYXRoLm1hdGNoKG5ldyBSZWdFeHAoIl4iICsgZXhhY3QpKTsKKyAgICAg
IGlmICghbWF0Y2gpIHsKKyAgICAgICAgY29udGludWU7CisgICAgICB9CisgICAgICBpZiAobWF0
Y2hbMF0gJiYgbWF0Y2hbMF0gPT0gcGF0aCAmJiByb3V0ZXNbcl1bbWV0aG9kXSkgeworICAgICAg
ICBuZXh0ID0gWyBbIHJvdXRlc1tyXS5iZWZvcmUsIHJvdXRlc1tyXVttZXRob2RdIF0uZmlsdGVy
KEJvb2xlYW4pIF07CisgICAgICAgIG5leHQuYWZ0ZXIgPSBbIHJvdXRlc1tyXS5hZnRlciBdLmZp
bHRlcihCb29sZWFuKTsKKyAgICAgICAgbmV4dC5tYXRjaGVkID0gdHJ1ZTsKKyAgICAgICAgbmV4
dC5jYXB0dXJlcyA9IG1hdGNoLnNsaWNlKDEpOworICAgICAgICBpZiAodGhpcy5yZWN1cnNlICYm
IHJvdXRlcyA9PT0gdGhpcy5yb3V0ZXMpIHsKKyAgICAgICAgICBuZXh0LnB1c2goWyByb3V0ZXMu
YmVmb3JlLCByb3V0ZXMub24gXS5maWx0ZXIoQm9vbGVhbikpOworICAgICAgICAgIG5leHQuYWZ0
ZXIgPSBuZXh0LmFmdGVyLmNvbmNhdChbIHJvdXRlcy5hZnRlciBdLmZpbHRlcihCb29sZWFuKSk7
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZpbHRlclJvdXRlcyhuZXh0KTsKKyAgICAgIH0K
KyAgICAgIG5leHQgPSB0aGlzLnRyYXZlcnNlKG1ldGhvZCwgcGF0aCwgcm91dGVzW3JdLCBjdXJy
ZW50KTsKKyAgICAgIGlmIChuZXh0Lm1hdGNoZWQpIHsKKyAgICAgICAgaWYgKG5leHQubGVuZ3Ro
ID4gMCkgeworICAgICAgICAgIGZucyA9IGZucy5jb25jYXQobmV4dCk7CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKHRoaXMucmVjdXJzZSkgeworICAgICAgICAgIGZucy5wdXNoKFsgcm91dGVzW3Jd
LmJlZm9yZSwgcm91dGVzW3JdLm9uIF0uZmlsdGVyKEJvb2xlYW4pKTsKKyAgICAgICAgICBuZXh0
LmFmdGVyID0gbmV4dC5hZnRlci5jb25jYXQoWyByb3V0ZXNbcl0uYWZ0ZXIgXS5maWx0ZXIoQm9v
bGVhbikpOworICAgICAgICAgIGlmIChyb3V0ZXMgPT09IHRoaXMucm91dGVzKSB7CisgICAgICAg
ICAgICBmbnMucHVzaChbIHJvdXRlc1siYmVmb3JlIl0sIHJvdXRlc1sib24iXSBdLmZpbHRlcihC
b29sZWFuKSk7CisgICAgICAgICAgICBuZXh0LmFmdGVyID0gbmV4dC5hZnRlci5jb25jYXQoWyBy
b3V0ZXNbImFmdGVyIl0gXS5maWx0ZXIoQm9vbGVhbikpOworICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICBmbnMubWF0Y2hlZCA9IHRydWU7CisgICAgICAgIGZucy5jYXB0dXJlcyA9IG5l
eHQuY2FwdHVyZXM7CisgICAgICAgIGZucy5hZnRlciA9IG5leHQuYWZ0ZXI7CisgICAgICAgIHJl
dHVybiBmaWx0ZXJSb3V0ZXMoZm5zKTsKKyAgICAgIH0KKyAgICB9CisgIH0KKyAgcmV0dXJuIGZh
bHNlOworfTsKKworUm91dGVyLnByb3RvdHlwZS5pbnNlcnQgPSBmdW5jdGlvbihtZXRob2QsIHBh
dGgsIHJvdXRlLCBwYXJlbnQpIHsKKyAgdmFyIG1ldGhvZFR5cGUsIHBhcmVudFR5cGUsIGlzQXJy
YXksIG5lc3RlZCwgcGFydDsKKyAgcGF0aCA9IHBhdGguZmlsdGVyKGZ1bmN0aW9uKHApIHsKKyAg
ICByZXR1cm4gcCAmJiBwLmxlbmd0aCA+IDA7CisgIH0pOworICBwYXJlbnQgPSBwYXJlbnQgfHwg
dGhpcy5yb3V0ZXM7CisgIHBhcnQgPSBwYXRoLnNoaWZ0KCk7CisgIGlmICgvXDp8XCovLnRlc3Qo
cGFydCkgJiYgIS9cXGR8XFx3Ly50ZXN0KHBhcnQpKSB7CisgICAgcGFydCA9IHJlZ2lmeVN0cmlu
ZyhwYXJ0LCB0aGlzLnBhcmFtcyk7CisgIH0KKyAgaWYgKHBhdGgubGVuZ3RoID4gMCkgeworICAg
IHBhcmVudFtwYXJ0XSA9IHBhcmVudFtwYXJ0XSB8fCB7fTsKKyAgICByZXR1cm4gdGhpcy5pbnNl
cnQobWV0aG9kLCBwYXRoLCByb3V0ZSwgcGFyZW50W3BhcnRdKTsKKyAgfQorICBpZiAoIXBhcnQg
JiYgIXBhdGgubGVuZ3RoICYmIHBhcmVudCA9PT0gdGhpcy5yb3V0ZXMpIHsKKyAgICBtZXRob2RU
eXBlID0gdHlwZW9mIHBhcmVudFttZXRob2RdOworICAgIHN3aXRjaCAobWV0aG9kVHlwZSkgewor
ICAgICBjYXNlICJmdW5jdGlvbiI6CisgICAgICBwYXJlbnRbbWV0aG9kXSA9IFsgcGFyZW50W21l
dGhvZF0sIHJvdXRlIF07CisgICAgICByZXR1cm47CisgICAgIGNhc2UgIm9iamVjdCI6CisgICAg
ICBwYXJlbnRbbWV0aG9kXS5wdXNoKHJvdXRlKTsKKyAgICAgIHJldHVybjsKKyAgICAgY2FzZSAi
dW5kZWZpbmVkIjoKKyAgICAgIHBhcmVudFttZXRob2RdID0gcm91dGU7CisgICAgICByZXR1cm47
CisgICAgfQorICAgIHJldHVybjsKKyAgfQorICBwYXJlbnRUeXBlID0gdHlwZW9mIHBhcmVudFtw
YXJ0XTsKKyAgaXNBcnJheSA9IEFycmF5LmlzQXJyYXkocGFyZW50W3BhcnRdKTsKKyAgaWYgKHBh
cmVudFtwYXJ0XSAmJiAhaXNBcnJheSAmJiBwYXJlbnRUeXBlID09ICJvYmplY3QiKSB7CisgICAg
bWV0aG9kVHlwZSA9IHR5cGVvZiBwYXJlbnRbcGFydF1bbWV0aG9kXTsKKyAgICBzd2l0Y2ggKG1l
dGhvZFR5cGUpIHsKKyAgICAgY2FzZSAiZnVuY3Rpb24iOgorICAgICAgcGFyZW50W3BhcnRdW21l
dGhvZF0gPSBbIHBhcmVudFtwYXJ0XVttZXRob2RdLCByb3V0ZSBdOworICAgICAgcmV0dXJuOwor
ICAgICBjYXNlICJvYmplY3QiOgorICAgICAgcGFyZW50W3BhcnRdW21ldGhvZF0ucHVzaChyb3V0
ZSk7CisgICAgICByZXR1cm47CisgICAgIGNhc2UgInVuZGVmaW5lZCI6CisgICAgICBwYXJlbnRb
cGFydF1bbWV0aG9kXSA9IHJvdXRlOworICAgICAgcmV0dXJuOworICAgIH0KKyAgfSBlbHNlIGlm
IChwYXJlbnRUeXBlID09ICJ1bmRlZmluZWQiKSB7CisgICAgbmVzdGVkID0ge307CisgICAgbmVz
dGVkW21ldGhvZF0gPSByb3V0ZTsKKyAgICBwYXJlbnRbcGFydF0gPSBuZXN0ZWQ7CisgICAgcmV0
dXJuOworICB9CisgIHRocm93IG5ldyBFcnJvcigiSW52YWxpZCByb3V0ZSBjb250ZXh0OiAiICsg
cGFyZW50VHlwZSk7Cit9OworCisKKworUm91dGVyLnByb3RvdHlwZS5leHRlbmQgPSBmdW5jdGlv
bihtZXRob2RzKSB7CisgIHZhciBzZWxmID0gdGhpcywgbGVuID0gbWV0aG9kcy5sZW5ndGgsIGk7
CisgIGZ1bmN0aW9uIGV4dGVuZChtZXRob2QpIHsKKyAgICBzZWxmLl9tZXRob2RzW21ldGhvZF0g
PSB0cnVlOworICAgIHNlbGZbbWV0aG9kXSA9IGZ1bmN0aW9uKCkgeworICAgICAgdmFyIGV4dHJh
ID0gYXJndW1lbnRzLmxlbmd0aCA9PT0gMSA/IFsgbWV0aG9kLCAiIiBdIDogWyBtZXRob2QgXTsK
KyAgICAgIHNlbGYub24uYXBwbHkoc2VsZiwgZXh0cmEuY29uY2F0KEFycmF5LnByb3RvdHlwZS5z
bGljZS5jYWxsKGFyZ3VtZW50cykpKTsKKyAgICB9OworICB9CisgIGZvciAoaSA9IDA7IGkgPCBs
ZW47IGkrKykgeworICAgIGV4dGVuZChtZXRob2RzW2ldKTsKKyAgfQorfTsKKworUm91dGVyLnBy
b3RvdHlwZS5ydW5saXN0ID0gZnVuY3Rpb24oZm5zKSB7CisgIHZhciBydW5saXN0ID0gdGhpcy5l
dmVyeSAmJiB0aGlzLmV2ZXJ5LmJlZm9yZSA/IFsgdGhpcy5ldmVyeS5iZWZvcmUgXS5jb25jYXQo
X2ZsYXR0ZW4oZm5zKSkgOiBfZmxhdHRlbihmbnMpOworICBpZiAodGhpcy5ldmVyeSAmJiB0aGlz
LmV2ZXJ5Lm9uKSB7CisgICAgcnVubGlzdC5wdXNoKHRoaXMuZXZlcnkub24pOworICB9CisgIHJ1
bmxpc3QuY2FwdHVyZXMgPSBmbnMuY2FwdHVyZXM7CisgIHJ1bmxpc3Quc291cmNlID0gZm5zLnNv
dXJjZTsKKyAgcmV0dXJuIHJ1bmxpc3Q7Cit9OworCitSb3V0ZXIucHJvdG90eXBlLm1vdW50ID0g
ZnVuY3Rpb24ocm91dGVzLCBwYXRoKSB7CisgIGlmICghcm91dGVzIHx8IHR5cGVvZiByb3V0ZXMg
IT09ICJvYmplY3QiIHx8IEFycmF5LmlzQXJyYXkocm91dGVzKSkgeworICAgIHJldHVybjsKKyAg
fQorICB2YXIgc2VsZiA9IHRoaXM7CisgIHBhdGggPSBwYXRoIHx8IFtdOworICBpZiAoIUFycmF5
LmlzQXJyYXkocGF0aCkpIHsKKyAgICBwYXRoID0gcGF0aC5zcGxpdChzZWxmLmRlbGltaXRlcik7
CisgIH0KKyAgZnVuY3Rpb24gaW5zZXJ0T3JNb3VudChyb3V0ZSwgbG9jYWwpIHsKKyAgICB2YXIg
cmVuYW1lID0gcm91dGUsIHBhcnRzID0gcm91dGUuc3BsaXQoc2VsZi5kZWxpbWl0ZXIpLCByb3V0
ZVR5cGUgPSB0eXBlb2Ygcm91dGVzW3JvdXRlXSwgaXNSb3V0ZSA9IHBhcnRzWzBdID09PSAiIiB8
fCAhc2VsZi5fbWV0aG9kc1twYXJ0c1swXV0sIGV2ZW50ID0gaXNSb3V0ZSA/ICJvbiIgOiByZW5h
bWU7CisgICAgaWYgKGlzUm91dGUpIHsKKyAgICAgIHJlbmFtZSA9IHJlbmFtZS5zbGljZSgocmVu
YW1lLm1hdGNoKG5ldyBSZWdFeHAoIl4iICsgc2VsZi5kZWxpbWl0ZXIpKSB8fCBbICIiIF0pWzBd
Lmxlbmd0aCk7CisgICAgICBwYXJ0cy5zaGlmdCgpOworICAgIH0KKyAgICBpZiAoaXNSb3V0ZSAm
JiByb3V0ZVR5cGUgPT09ICJvYmplY3QiICYmICFBcnJheS5pc0FycmF5KHJvdXRlc1tyb3V0ZV0p
KSB7CisgICAgICBsb2NhbCA9IGxvY2FsLmNvbmNhdChwYXJ0cyk7CisgICAgICBzZWxmLm1vdW50
KHJvdXRlc1tyb3V0ZV0sIGxvY2FsKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGlz
Um91dGUpIHsKKyAgICAgIGxvY2FsID0gbG9jYWwuY29uY2F0KHJlbmFtZS5zcGxpdChzZWxmLmRl
bGltaXRlcikpOworICAgICAgbG9jYWwgPSB0ZXJtaW5hdG9yKGxvY2FsLCBzZWxmLmRlbGltaXRl
cik7CisgICAgfQorICAgIHNlbGYuaW5zZXJ0KGV2ZW50LCBsb2NhbCwgcm91dGVzW3JvdXRlXSk7
CisgIH0KKyAgZm9yICh2YXIgcm91dGUgaW4gcm91dGVzKSB7CisgICAgaWYgKHJvdXRlcy5oYXNP
d25Qcm9wZXJ0eShyb3V0ZSkpIHsKKyAgICAgIGluc2VydE9yTW91bnQocm91dGUsIHBhdGguc2xp
Y2UoMCkpOworICAgIH0KKyAgfQorfTsKKworCisKK30odHlwZW9mIGV4cG9ydHMgPT09ICJvYmpl
Y3QiID8gZXhwb3J0cyA6IHdpbmRvdykpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvZGlzdC9k
aXJlY3Rvci5taW4uanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9y
L2Rpc3QvZGlyZWN0b3IubWluLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5NTZhZjQwMDk1YmMyMmM2ODg1ZjI3
N2VkOWVmNWY3NDE2YmFlNGYKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkv
bm9kZV9tb2R1bGVzL2RpcmVjdG9yL2Rpc3QvZGlyZWN0b3IubWluLmpzCkBAIC0wLDAgKzEsNyBA
QAorCisKKy8vCisvLyBHZW5lcmF0ZWQgb24gVHVlIERlYyAxNiAyMDE0IDEyOjEzOjQ3IEdNVCsw
MTAwIChDRVQpIGJ5IENoYXJsaWUgUm9iYmlucywgUGFvbG8gRnJhZ29tZW5pICYgdGhlIENvbnRy
aWJ1dG9ycyAoVXNpbmcgQ29kZXN1cmdlb24pLgorLy8gVmVyc2lvbiAxLjIuNgorLy8KKyhmdW5j
dGlvbihhKXtmdW5jdGlvbiBrKGEsYixjLGQpe3ZhciBlPTAsZj0wLGc9MCxjPShjfHwiKCIpLnRv
U3RyaW5nKCksZD0oZHx8IikiKS50b1N0cmluZygpLGg7Zm9yKGg9MDtoPGEubGVuZ3RoO2grKyl7
dmFyIGk9YVtoXTtpZihpLmluZGV4T2YoYyxlKT5pLmluZGV4T2YoZCxlKXx8fmkuaW5kZXhPZihj
LGUpJiYhfmkuaW5kZXhPZihkLGUpfHwhfmkuaW5kZXhPZihjLGUpJiZ+aS5pbmRleE9mKGQsZSkp
e2Y9aS5pbmRleE9mKGMsZSksZz1pLmluZGV4T2YoZCxlKTtpZih+ZiYmIX5nfHwhfmYmJn5nKXt2
YXIgaj1hLnNsaWNlKDAsKGh8fDEpKzEpLmpvaW4oYik7YT1bal0uY29uY2F0KGEuc2xpY2UoKGh8
fDEpKzEpKX1lPShnPmY/ZzpmKSsxLGg9MH1lbHNlIGU9MH1yZXR1cm4gYX1mdW5jdGlvbiBqKGEs
Yil7dmFyIGMsZD0wLGU9IiI7d2hpbGUoYz1hLnN1YnN0cihkKS5tYXRjaCgvW15cd1xkXC0gJUAm
XSpcKlteXHdcZFwtICVAJl0qLykpZD1jLmluZGV4K2NbMF0ubGVuZ3RoLGNbMF09Y1swXS5yZXBs
YWNlKC9eXCovLCIoW18uKCkhXFwgJUAmYS16QS1aMC05LV0rKSIpLGUrPWEuc3Vic3RyKDAsYy5p
bmRleCkrY1swXTthPWUrPWEuc3Vic3RyKGQpO3ZhciBmPWEubWF0Y2goLzooW15cL10rKS9pZyks
ZyxoO2lmKGYpe2g9Zi5sZW5ndGg7Zm9yKHZhciBqPTA7ajxoO2orKylnPWZbal0sZy5zbGljZSgw
LDIpPT09Ijo6Ij9hPWcuc2xpY2UoMSk6YT1hLnJlcGxhY2UoZyxpKGcsYikpfXJldHVybiBhfWZ1
bmN0aW9uIGkoYSxiLGMpe2M9YTtmb3IodmFyIGQgaW4gYilpZihiLmhhc093blByb3BlcnR5KGQp
KXtjPWJbZF0oYSk7aWYoYyE9PWEpYnJlYWt9cmV0dXJuIGM9PT1hPyIoWy5fYS16QS1aMC05LSUo
KV0rKSI6Y31mdW5jdGlvbiBoKGEsYixjKXtpZighYS5sZW5ndGgpcmV0dXJuIGMoKTt2YXIgZD0w
OyhmdW5jdGlvbiBlKCl7YihhW2RdLGZ1bmN0aW9uKGIpe2J8fGI9PT0hMT8oYyhiKSxjPWZ1bmN0
aW9uKCl7fSk6KGQrPTEsZD09PWEubGVuZ3RoP2MoKTplKCkpfSl9KSgpfWZ1bmN0aW9uIGcoYSl7
dmFyIGI9W107Zm9yKHZhciBjPTAsZD1hLmxlbmd0aDtjPGQ7YysrKWI9Yi5jb25jYXQoYVtjXSk7
cmV0dXJuIGJ9ZnVuY3Rpb24gZihhLGIpe2Zvcih2YXIgYz0wO2M8YS5sZW5ndGg7Yys9MSlpZihi
KGFbY10sYyxhKT09PSExKXJldHVybn1mdW5jdGlvbiBjKCl7cmV0dXJuIGIuaGFzaD09PSIifHxi
Lmhhc2g9PT0iIyJ9dmFyIGI9ZG9jdW1lbnQubG9jYXRpb24sZD17bW9kZToibW9kZXJuIixoYXNo
OmIuaGFzaCxoaXN0b3J5OiExLGNoZWNrOmZ1bmN0aW9uKCl7dmFyIGE9Yi5oYXNoO2EhPXRoaXMu
aGFzaCYmKHRoaXMuaGFzaD1hLHRoaXMub25IYXNoQ2hhbmdlZCgpKX0sZmlyZTpmdW5jdGlvbigp
e3RoaXMubW9kZT09PSJtb2Rlcm4iP3RoaXMuaGlzdG9yeT09PSEwP3dpbmRvdy5vbnBvcHN0YXRl
KCk6d2luZG93Lm9uaGFzaGNoYW5nZSgpOnRoaXMub25IYXNoQ2hhbmdlZCgpfSxpbml0OmZ1bmN0
aW9uKGEsYil7ZnVuY3Rpb24gZChhKXtmb3IodmFyIGI9MCxjPWUubGlzdGVuZXJzLmxlbmd0aDti
PGM7YisrKWUubGlzdGVuZXJzW2JdKGEpfXZhciBjPXRoaXM7dGhpcy5oaXN0b3J5PWIsZS5saXN0
ZW5lcnN8fChlLmxpc3RlbmVycz1bXSk7aWYoIm9uaGFzaGNoYW5nZSJpbiB3aW5kb3cmJihkb2N1
bWVudC5kb2N1bWVudE1vZGU9PT11bmRlZmluZWR8fGRvY3VtZW50LmRvY3VtZW50TW9kZT43KSl0
aGlzLmhpc3Rvcnk9PT0hMD9zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7d2luZG93Lm9ucG9wc3RhdGU9
ZH0sNTAwKTp3aW5kb3cub25oYXNoY2hhbmdlPWQsdGhpcy5tb2RlPSJtb2Rlcm4iO2Vsc2V7dmFy
IGY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7Zi5pZD0ic3RhdGUtZnJhbWUiLGYu
c3R5bGUuZGlzcGxheT0ibm9uZSIsZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChmKSx0aGlzLndy
aXRlRnJhbWUoIiIpLCJvbnByb3BlcnR5Y2hhbmdlImluIGRvY3VtZW50JiYiYXR0YWNoRXZlbnQi
aW4gZG9jdW1lbnQmJmRvY3VtZW50LmF0dGFjaEV2ZW50KCJvbnByb3BlcnR5Y2hhbmdlIixmdW5j
dGlvbigpe2V2ZW50LnByb3BlcnR5TmFtZT09PSJsb2NhdGlvbiImJmMuY2hlY2soKX0pLHdpbmRv
dy5zZXRJbnRlcnZhbChmdW5jdGlvbigpe2MuY2hlY2soKX0sNTApLHRoaXMub25IYXNoQ2hhbmdl
ZD1kLHRoaXMubW9kZT0ibGVnYWN5In1lLmxpc3RlbmVycy5wdXNoKGEpO3JldHVybiB0aGlzLm1v
ZGV9LGRlc3Ryb3k6ZnVuY3Rpb24oYSl7aWYoISFlJiYhIWUubGlzdGVuZXJzKXt2YXIgYj1lLmxp
c3RlbmVycztmb3IodmFyIGM9Yi5sZW5ndGgtMTtjPj0wO2MtLSliW2NdPT09YSYmYi5zcGxpY2Uo
YywxKX19LHNldEhhc2g6ZnVuY3Rpb24oYSl7dGhpcy5tb2RlPT09ImxlZ2FjeSImJnRoaXMud3Jp
dGVGcmFtZShhKSx0aGlzLmhpc3Rvcnk9PT0hMD8od2luZG93Lmhpc3RvcnkucHVzaFN0YXRlKHt9
LGRvY3VtZW50LnRpdGxlLGEpLHRoaXMuZmlyZSgpKTpiLmhhc2g9YVswXT09PSIvIj9hOiIvIith
O3JldHVybiB0aGlzfSx3cml0ZUZyYW1lOmZ1bmN0aW9uKGEpe3ZhciBiPWRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJzdGF0ZS1mcmFtZSIpLGM9Yi5jb250ZW50RG9jdW1lbnR8fGIuY29udGVudFdp
bmRvdy5kb2N1bWVudDtjLm9wZW4oKSxjLndyaXRlKCI8c2NyaXB0Pl9oYXNoID0gJyIrYSsiJzsg
b25sb2FkID0gcGFyZW50Lmxpc3RlbmVyLnN5bmNIYXNoOzxzY3JpcHQ+IiksYy5jbG9zZSgpfSxz
eW5jSGFzaDpmdW5jdGlvbigpe3ZhciBhPXRoaXMuX2hhc2g7YSE9Yi5oYXNoJiYoYi5oYXNoPWEp
O3JldHVybiB0aGlzfSxvbkhhc2hDaGFuZ2VkOmZ1bmN0aW9uKCl7fX0sZT1hLlJvdXRlcj1mdW5j
dGlvbihhKXtpZih0aGlzIGluc3RhbmNlb2YgZSl0aGlzLnBhcmFtcz17fSx0aGlzLnJvdXRlcz17
fSx0aGlzLm1ldGhvZHM9WyJvbiIsIm9uY2UiLCJhZnRlciIsImJlZm9yZSJdLHRoaXMuc2NvcGU9
W10sdGhpcy5fbWV0aG9kcz17fSx0aGlzLl9pbnNlcnQ9dGhpcy5pbnNlcnQsdGhpcy5pbnNlcnQ9
dGhpcy5pbnNlcnRFeCx0aGlzLmhpc3RvcnlTdXBwb3J0PSh3aW5kb3cuaGlzdG9yeSE9bnVsbD93
aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGU6bnVsbCkhPW51bGwsdGhpcy5jb25maWd1cmUoKSx0aGlz
Lm1vdW50KGF8fHt9KTtlbHNlIHJldHVybiBuZXcgZShhKX07ZS5wcm90b3R5cGUuaW5pdD1mdW5j
dGlvbihhKXt2YXIgZT10aGlzLGY7dGhpcy5oYW5kbGVyPWZ1bmN0aW9uKGEpe3ZhciBiPWEmJmEu
bmV3VVJMfHx3aW5kb3cubG9jYXRpb24uaGFzaCxjPWUuaGlzdG9yeT09PSEwP2UuZ2V0UGF0aCgp
OmIucmVwbGFjZSgvLiojLywiIik7ZS5kaXNwYXRjaCgib24iLGMuY2hhckF0KDApPT09Ii8iP2M6
Ii8iK2MpfSxkLmluaXQodGhpcy5oYW5kbGVyLHRoaXMuaGlzdG9yeSksdGhpcy5oaXN0b3J5PT09
ITE/YygpJiZhP2IuaGFzaD1hOmMoKXx8ZS5kaXNwYXRjaCgib24iLCIvIitiLmhhc2gucmVwbGFj
ZSgvXigjXC98I3xcLykvLCIiKSk6KHRoaXMuY29udmVydF9oYXNoX2luX2luaXQ/KGY9YygpJiZh
P2E6YygpP251bGw6Yi5oYXNoLnJlcGxhY2UoL14jLywiIiksZiYmd2luZG93Lmhpc3RvcnkucmVw
bGFjZVN0YXRlKHt9LGRvY3VtZW50LnRpdGxlLGYpKTpmPXRoaXMuZ2V0UGF0aCgpLChmfHx0aGlz
LnJ1bl9pbl9pbml0PT09ITApJiZ0aGlzLmhhbmRsZXIoKSk7cmV0dXJuIHRoaXN9LGUucHJvdG90
eXBlLmV4cGxvZGU9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmhpc3Rvcnk9PT0hMD90aGlzLmdldFBh
dGgoKTpiLmhhc2g7YS5jaGFyQXQoMSk9PT0iLyImJihhPWEuc2xpY2UoMSkpO3JldHVybiBhLnNs
aWNlKDEsYS5sZW5ndGgpLnNwbGl0KCIvIil9LGUucHJvdG90eXBlLnNldFJvdXRlPWZ1bmN0aW9u
KGEsYixjKXt2YXIgZT10aGlzLmV4cGxvZGUoKTt0eXBlb2YgYT09Im51bWJlciImJnR5cGVvZiBi
PT0ic3RyaW5nIj9lW2FdPWI6dHlwZW9mIGM9PSJzdHJpbmciP2Uuc3BsaWNlKGEsYixzKTplPVth
XSxkLnNldEhhc2goZS5qb2luKCIvIikpO3JldHVybiBlfSxlLnByb3RvdHlwZS5pbnNlcnRFeD1m
dW5jdGlvbihhLGIsYyxkKXthPT09Im9uY2UiJiYoYT0ib24iLGM9ZnVuY3Rpb24oYSl7dmFyIGI9
ITE7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoIWIpe2I9ITA7cmV0dXJuIGEuYXBwbHkodGhpcyxhcmd1
bWVudHMpfX19KGMpKTtyZXR1cm4gdGhpcy5faW5zZXJ0KGEsYixjLGQpfSxlLnByb3RvdHlwZS5n
ZXRSb3V0ZT1mdW5jdGlvbihhKXt2YXIgYj1hO2lmKHR5cGVvZiBhPT0ibnVtYmVyIiliPXRoaXMu
ZXhwbG9kZSgpW2FdO2Vsc2UgaWYodHlwZW9mIGE9PSJzdHJpbmciKXt2YXIgYz10aGlzLmV4cGxv
ZGUoKTtiPWMuaW5kZXhPZihhKX1lbHNlIGI9dGhpcy5leHBsb2RlKCk7cmV0dXJuIGJ9LGUucHJv
dG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXtkLmRlc3Ryb3kodGhpcy5oYW5kbGVyKTtyZXR1cm4g
dGhpc30sZS5wcm90b3R5cGUuZ2V0UGF0aD1mdW5jdGlvbigpe3ZhciBhPXdpbmRvdy5sb2NhdGlv
bi5wYXRobmFtZTthLnN1YnN0cigwLDEpIT09Ii8iJiYoYT0iLyIrYSk7cmV0dXJuIGF9O3ZhciBs
PS9cPy4qLztlLnByb3RvdHlwZS5jb25maWd1cmU9ZnVuY3Rpb24oYSl7YT1hfHx7fTtmb3IodmFy
IGI9MDtiPHRoaXMubWV0aG9kcy5sZW5ndGg7YisrKXRoaXMuX21ldGhvZHNbdGhpcy5tZXRob2Rz
W2JdXT0hMDt0aGlzLnJlY3Vyc2U9YS5yZWN1cnNlfHx0aGlzLnJlY3Vyc2V8fCExLHRoaXMuYXN5
bmM9YS5hc3luY3x8ITEsdGhpcy5kZWxpbWl0ZXI9YS5kZWxpbWl0ZXJ8fCIvIix0aGlzLnN0cmlj
dD10eXBlb2YgYS5zdHJpY3Q9PSJ1bmRlZmluZWQiPyEwOmEuc3RyaWN0LHRoaXMubm90Zm91bmQ9
YS5ub3Rmb3VuZCx0aGlzLnJlc291cmNlPWEucmVzb3VyY2UsdGhpcy5oaXN0b3J5PWEuaHRtbDVo
aXN0b3J5JiZ0aGlzLmhpc3RvcnlTdXBwb3J0fHwhMSx0aGlzLnJ1bl9pbl9pbml0PXRoaXMuaGlz
dG9yeT09PSEwJiZhLnJ1bl9oYW5kbGVyX2luX2luaXQhPT0hMSx0aGlzLmNvbnZlcnRfaGFzaF9p
bl9pbml0PXRoaXMuaGlzdG9yeT09PSEwJiZhLmNvbnZlcnRfaGFzaF9pbl9pbml0IT09ITEsdGhp
cy5ldmVyeT17YWZ0ZXI6YS5hZnRlcnx8bnVsbCxiZWZvcmU6YS5iZWZvcmV8fG51bGwsb246YS5v
bnx8bnVsbH07cmV0dXJuIHRoaXN9LGUucHJvdG90eXBlLnBhcmFtPWZ1bmN0aW9uKGEsYil7YVsw
XSE9PSI6IiYmKGE9IjoiK2EpO3ZhciBjPW5ldyBSZWdFeHAoYSwiZyIpO3RoaXMucGFyYW1zW2Fd
PWZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoYyxiLnNvdXJjZXx8Yil9O3JldHVybiB0aGlz
fSxlLnByb3RvdHlwZS5vbj1lLnByb3RvdHlwZS5yb3V0ZT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9
dGhpczshYyYmdHlwZW9mIGI9PSJmdW5jdGlvbiImJihjPWIsYj1hLGE9Im9uIik7aWYoQXJyYXku
aXNBcnJheShiKSlyZXR1cm4gYi5mb3JFYWNoKGZ1bmN0aW9uKGIpe2Qub24oYSxiLGMpfSk7Yi5z
b3VyY2UmJihiPWIuc291cmNlLnJlcGxhY2UoL1xcXC8vaWcsIi8iKSk7aWYoQXJyYXkuaXNBcnJh
eShhKSlyZXR1cm4gYS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2Qub24oYS50b0xvd2VyQ2FzZSgpLGIs
Yyl9KTtiPWIuc3BsaXQobmV3IFJlZ0V4cCh0aGlzLmRlbGltaXRlcikpLGI9ayhiLHRoaXMuZGVs
aW1pdGVyKSx0aGlzLmluc2VydChhLHRoaXMuc2NvcGUuY29uY2F0KGIpLGMpfSxlLnByb3RvdHlw
ZS5wYXRoPWZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcyxkPXRoaXMuc2NvcGUubGVuZ3RoO2Euc291
cmNlJiYoYT1hLnNvdXJjZS5yZXBsYWNlKC9cXFwvL2lnLCIvIikpLGE9YS5zcGxpdChuZXcgUmVn
RXhwKHRoaXMuZGVsaW1pdGVyKSksYT1rKGEsdGhpcy5kZWxpbWl0ZXIpLHRoaXMuc2NvcGU9dGhp
cy5zY29wZS5jb25jYXQoYSksYi5jYWxsKHRoaXMsdGhpcyksdGhpcy5zY29wZS5zcGxpY2UoZCxh
Lmxlbmd0aCl9LGUucHJvdG90eXBlLmRpc3BhdGNoPWZ1bmN0aW9uKGEsYixjKXtmdW5jdGlvbiBo
KCl7ZC5sYXN0PWUuYWZ0ZXIsZC5pbnZva2UoZC5ydW5saXN0KGUpLGQsYyl9dmFyIGQ9dGhpcyxl
PXRoaXMudHJhdmVyc2UoYSxiLnJlcGxhY2UobCwiIiksdGhpcy5yb3V0ZXMsIiIpLGY9dGhpcy5f
aW52b2tlZCxnO3RoaXMuX2ludm9rZWQ9ITA7aWYoIWV8fGUubGVuZ3RoPT09MCl7dGhpcy5sYXN0
PVtdLHR5cGVvZiB0aGlzLm5vdGZvdW5kPT0iZnVuY3Rpb24iJiZ0aGlzLmludm9rZShbdGhpcy5u
b3Rmb3VuZF0se21ldGhvZDphLHBhdGg6Yn0sYyk7cmV0dXJuITF9dGhpcy5yZWN1cnNlPT09ImZv
cndhcmQiJiYoZT1lLnJldmVyc2UoKSksZz10aGlzLmV2ZXJ5JiZ0aGlzLmV2ZXJ5LmFmdGVyP1t0
aGlzLmV2ZXJ5LmFmdGVyXS5jb25jYXQodGhpcy5sYXN0KTpbdGhpcy5sYXN0XTtpZihnJiZnLmxl
bmd0aD4wJiZmKXt0aGlzLmFzeW5jP3RoaXMuaW52b2tlKGcsdGhpcyxoKToodGhpcy5pbnZva2Uo
Zyx0aGlzKSxoKCkpO3JldHVybiEwfWgoKTtyZXR1cm4hMH0sZS5wcm90b3R5cGUuaW52b2tlPWZ1
bmN0aW9uKGEsYixjKXt2YXIgZD10aGlzLGU7dGhpcy5hc3luYz8oZT1mdW5jdGlvbihjLGQpe2lm
KEFycmF5LmlzQXJyYXkoYykpcmV0dXJuIGgoYyxlLGQpO3R5cGVvZiBjPT0iZnVuY3Rpb24iJiZj
LmFwcGx5KGIsKGEuY2FwdHVyZXN8fFtdKS5jb25jYXQoZCkpfSxoKGEsZSxmdW5jdGlvbigpe2Mm
JmMuYXBwbHkoYixhcmd1bWVudHMpfSkpOihlPWZ1bmN0aW9uKGMpe2lmKEFycmF5LmlzQXJyYXko
YykpcmV0dXJuIGYoYyxlKTtpZih0eXBlb2YgYz09ImZ1bmN0aW9uIilyZXR1cm4gYy5hcHBseShi
LGEuY2FwdHVyZXN8fFtdKTt0eXBlb2YgYz09InN0cmluZyImJmQucmVzb3VyY2UmJmQucmVzb3Vy
Y2VbY10uYXBwbHkoYixhLmNhcHR1cmVzfHxbXSl9LGYoYSxlKSl9LGUucHJvdG90eXBlLnRyYXZl
cnNlPWZ1bmN0aW9uKGEsYixjLGQsZSl7ZnVuY3Rpb24gbChhKXtmdW5jdGlvbiBjKGEpe2Zvcih2
YXIgYj1hLmxlbmd0aC0xO2I+PTA7Yi0tKUFycmF5LmlzQXJyYXkoYVtiXSk/KGMoYVtiXSksYVti
XS5sZW5ndGg9PT0wJiZhLnNwbGljZShiLDEpKTplKGFbYl0pfHxhLnNwbGljZShiLDEpfWZ1bmN0
aW9uIGIoYSl7dmFyIGM9W107Zm9yKHZhciBkPTA7ZDxhLmxlbmd0aDtkKyspY1tkXT1BcnJheS5p
c0FycmF5KGFbZF0pP2IoYVtkXSk6YVtkXTtyZXR1cm4gY31pZighZSlyZXR1cm4gYTt2YXIgZD1i
KGEpO2QubWF0Y2hlZD1hLm1hdGNoZWQsZC5jYXB0dXJlcz1hLmNhcHR1cmVzLGQuYWZ0ZXI9YS5h
ZnRlci5maWx0ZXIoZSksYyhkKTtyZXR1cm4gZH12YXIgZj1bXSxnLGgsaSxqLGs7aWYoYj09PXRo
aXMuZGVsaW1pdGVyJiZjW2FdKXtqPVtbYy5iZWZvcmUsY1thXV0uZmlsdGVyKEJvb2xlYW4pXSxq
LmFmdGVyPVtjLmFmdGVyXS5maWx0ZXIoQm9vbGVhbiksai5tYXRjaGVkPSEwLGouY2FwdHVyZXM9
W107cmV0dXJuIGwoail9Zm9yKHZhciBtIGluIGMpaWYoYy5oYXNPd25Qcm9wZXJ0eShtKSYmKCF0
aGlzLl9tZXRob2RzW21dfHx0aGlzLl9tZXRob2RzW21dJiZ0eXBlb2YgY1ttXT09Im9iamVjdCIm
JiFBcnJheS5pc0FycmF5KGNbbV0pKSl7Zz1oPWQrdGhpcy5kZWxpbWl0ZXIrbSx0aGlzLnN0cmlj
dHx8KGgrPSJbIit0aGlzLmRlbGltaXRlcisiXT8iKSxpPWIubWF0Y2gobmV3IFJlZ0V4cCgiXiIr
aCkpO2lmKCFpKWNvbnRpbnVlO2lmKGlbMF0mJmlbMF09PWImJmNbbV1bYV0pe2o9W1tjW21dLmJl
Zm9yZSxjW21dW2FdXS5maWx0ZXIoQm9vbGVhbildLGouYWZ0ZXI9W2NbbV0uYWZ0ZXJdLmZpbHRl
cihCb29sZWFuKSxqLm1hdGNoZWQ9ITAsai5jYXB0dXJlcz1pLnNsaWNlKDEpLHRoaXMucmVjdXJz
ZSYmYz09PXRoaXMucm91dGVzJiYoai5wdXNoKFtjLmJlZm9yZSxjLm9uXS5maWx0ZXIoQm9vbGVh
bikpLGouYWZ0ZXI9ai5hZnRlci5jb25jYXQoW2MuYWZ0ZXJdLmZpbHRlcihCb29sZWFuKSkpO3Jl
dHVybiBsKGopfWo9dGhpcy50cmF2ZXJzZShhLGIsY1ttXSxnKTtpZihqLm1hdGNoZWQpe2oubGVu
Z3RoPjAmJihmPWYuY29uY2F0KGopKSx0aGlzLnJlY3Vyc2UmJihmLnB1c2goW2NbbV0uYmVmb3Jl
LGNbbV0ub25dLmZpbHRlcihCb29sZWFuKSksai5hZnRlcj1qLmFmdGVyLmNvbmNhdChbY1ttXS5h
ZnRlcl0uZmlsdGVyKEJvb2xlYW4pKSxjPT09dGhpcy5yb3V0ZXMmJihmLnB1c2goW2MuYmVmb3Jl
LGMub25dLmZpbHRlcihCb29sZWFuKSksai5hZnRlcj1qLmFmdGVyLmNvbmNhdChbYy5hZnRlcl0u
ZmlsdGVyKEJvb2xlYW4pKSkpLGYubWF0Y2hlZD0hMCxmLmNhcHR1cmVzPWouY2FwdHVyZXMsZi5h
ZnRlcj1qLmFmdGVyO3JldHVybiBsKGYpfX1yZXR1cm4hMX0sZS5wcm90b3R5cGUuaW5zZXJ0PWZ1
bmN0aW9uKGEsYixjLGQpe3ZhciBlLGYsZyxoLGk7Yj1iLmZpbHRlcihmdW5jdGlvbihhKXtyZXR1
cm4gYSYmYS5sZW5ndGg+MH0pLGQ9ZHx8dGhpcy5yb3V0ZXMsaT1iLnNoaWZ0KCksL1w6fFwqLy50
ZXN0KGkpJiYhL1xcZHxcXHcvLnRlc3QoaSkmJihpPWooaSx0aGlzLnBhcmFtcykpO2lmKGIubGVu
Z3RoPjApe2RbaV09ZFtpXXx8e307cmV0dXJuIHRoaXMuaW5zZXJ0KGEsYixjLGRbaV0pfXtpZigh
IWl8fCEhYi5sZW5ndGh8fGQhPT10aGlzLnJvdXRlcyl7Zj10eXBlb2YgZFtpXSxnPUFycmF5Lmlz
QXJyYXkoZFtpXSk7aWYoZFtpXSYmIWcmJmY9PSJvYmplY3QiKXtlPXR5cGVvZiBkW2ldW2FdO3N3
aXRjaChlKXtjYXNlImZ1bmN0aW9uIjpkW2ldW2FdPVtkW2ldW2FdLGNdO3JldHVybjtjYXNlIm9i
amVjdCI6ZFtpXVthXS5wdXNoKGMpO3JldHVybjtjYXNlInVuZGVmaW5lZCI6ZFtpXVthXT1jO3Jl
dHVybn19ZWxzZSBpZihmPT0idW5kZWZpbmVkIil7aD17fSxoW2FdPWMsZFtpXT1oO3JldHVybn10
aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgcm91dGUgY29udGV4dDogIitmKX1lPXR5cGVvZiBkW2Fd
O3N3aXRjaChlKXtjYXNlImZ1bmN0aW9uIjpkW2FdPVtkW2FdLGNdO3JldHVybjtjYXNlIm9iamVj
dCI6ZFthXS5wdXNoKGMpO3JldHVybjtjYXNlInVuZGVmaW5lZCI6ZFthXT1jO3JldHVybn19fSxl
LnByb3RvdHlwZS5leHRlbmQ9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gZShhKXtiLl9tZXRob2RzW2Fd
PSEwLGJbYV09ZnVuY3Rpb24oKXt2YXIgYz1hcmd1bWVudHMubGVuZ3RoPT09MT9bYSwiIl06W2Fd
O2Iub24uYXBwbHkoYixjLmNvbmNhdChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVu
dHMpKSl9fXZhciBiPXRoaXMsYz1hLmxlbmd0aCxkO2ZvcihkPTA7ZDxjO2QrKyllKGFbZF0pfSxl
LnByb3RvdHlwZS5ydW5saXN0PWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuZXZlcnkmJnRoaXMuZXZl
cnkuYmVmb3JlP1t0aGlzLmV2ZXJ5LmJlZm9yZV0uY29uY2F0KGcoYSkpOmcoYSk7dGhpcy5ldmVy
eSYmdGhpcy5ldmVyeS5vbiYmYi5wdXNoKHRoaXMuZXZlcnkub24pLGIuY2FwdHVyZXM9YS5jYXB0
dXJlcyxiLnNvdXJjZT1hLnNvdXJjZTtyZXR1cm4gYn0sZS5wcm90b3R5cGUubW91bnQ9ZnVuY3Rp
b24oYSxiKXtmdW5jdGlvbiBkKGIsZCl7dmFyIGU9YixmPWIuc3BsaXQoYy5kZWxpbWl0ZXIpLGc9
dHlwZW9mIGFbYl0saD1mWzBdPT09IiJ8fCFjLl9tZXRob2RzW2ZbMF1dLGk9aD8ib24iOmU7aCYm
KGU9ZS5zbGljZSgoZS5tYXRjaChuZXcgUmVnRXhwKCJeIitjLmRlbGltaXRlcikpfHxbIiJdKVsw
XS5sZW5ndGgpLGYuc2hpZnQoKSk7aCYmZz09PSJvYmplY3QiJiYhQXJyYXkuaXNBcnJheShhW2Jd
KT8oZD1kLmNvbmNhdChmKSxjLm1vdW50KGFbYl0sZCkpOihoJiYoZD1kLmNvbmNhdChlLnNwbGl0
KGMuZGVsaW1pdGVyKSksZD1rKGQsYy5kZWxpbWl0ZXIpKSxjLmluc2VydChpLGQsYVtiXSkpfWlm
KCEhYSYmdHlwZW9mIGE9PSJvYmplY3QiJiYhQXJyYXkuaXNBcnJheShhKSl7dmFyIGM9dGhpczti
PWJ8fFtdLEFycmF5LmlzQXJyYXkoYil8fChiPWIuc3BsaXQoYy5kZWxpbWl0ZXIpKTtmb3IodmFy
IGUgaW4gYSlhLmhhc093blByb3BlcnR5KGUpJiZkKGUsYi5zbGljZSgwKSl9fX0pKHR5cGVvZiBl
eHBvcnRzPT0ib2JqZWN0Ij9leHBvcnRzOndpbmRvdykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9y
L2Rpc3QvZW5kZXIuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9y
L2Rpc3QvZW5kZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmUzZWJjNDFiMGJkZTA2NGJmZDMzNjNmZDVkZDBi
MzQwNmVmYjllZgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21v
ZHVsZXMvZGlyZWN0b3IvZGlzdC9lbmRlci5qcwpAQCAtMCwwICsxLDMgQEAKKyQuZW5kZXIoewor
ICByb3V0ZXI6IFJvdXRlcgorfSk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9k
ZV9tb2R1bGVzL2RpcmVjdG9yL3BhY2thZ2UuanNvbiBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2Rl
X21vZHVsZXMvZGlyZWN0b3IvcGFja2FnZS5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEwYmQyOTYyNzI3ZjQ2
NGRjYmUwOTgxNzJhOTlmYThkZTc2YWI5YmQKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL3BhY2thZ2UuanNvbgpAQCAtMCwwICsxLDQx
IEBACit7CisgICJuYW1lIjogImRpcmVjdG9yIiwKKyAgImRlc2NyaXB0aW9uIjogIkEgY2xpZW50
IFNpZGUvU2VydmVyIFNpZGUgUm91dGVyIiwKKyAgImF1dGhvciI6ICJDaGFybGllIFJvYmJpbnMg
PGNoYXJsaWUucm9iYmluc0BnbWFpbC5jb20+IiwKKyAgInZlcnNpb24iOiAiMS4yLjgiLAorICAi
bWFpbnRhaW5lcnMiOiBbCisgICAgImhpajFueCA8cGFvbG9Abm9kZWppdHN1LmNvbT4iLAorICAg
ICJiZWF1Z3VuZGVyc29uIDxiZWF1QGJlYXVndW5kZXJzb24uY29tPiIKKyAgXSwKKyAgInJlcG9z
aXRvcnkiOiB7CisgICAgInR5cGUiOiAiZ2l0IiwKKyAgICAidXJsIjogImh0dHA6Ly9naXRodWIu
Y29tL2ZsYXRpcm9uL2RpcmVjdG9yLmdpdCIKKyAgfSwKKyAgImtleXdvcmRzIjogWworICAgICJV
UkwiLAorICAgICJyb3V0ZXIiLAorICAgICJodHRwIiwKKyAgICAiY2xpIiwKKyAgICAiZmxhdGly
b24iLAorICAgICJjbGllbnQgc2lkZSIsCisgICAgImVuZGVyIgorICBdLAorICAiZGV2RGVwZW5k
ZW5jaWVzIjogeworICAgICJhcGktZWFzeSI6ICIwLjQueCIsCisgICAgImNvZGVzdXJnZW9uIjog
Imh0dHBzOi8vZ2l0aHViLmNvbS9oaWoxbngvY29kZXN1cmdlb24vdGFyYmFsbC9tYXN0ZXIiLAor
ICAgICJjb2xvcnMiOiAiMS4wLngiLAorICAgICJxdW5pdGpzIjogIjEuOS54IiwKKyAgICAicmVx
dWVzdCI6ICIyLjQ5LngiLAorICAgICJ1Z2xpZnktanMiOiAiMi40LngiLAorICAgICJ2b3dzIjog
IjAuOC4wIgorICB9LAorICAiZW5kZXIiOiAiLi9idWlsZC9lbmRlci5qcyIsCisgICJicm93c2Vy
aWZ5IjogIi4vYnVpbGQvZGlyZWN0b3IiLAorICAibWFpbiI6ICIuL2xpYi9kaXJlY3RvciIsCisg
ICJlbmdpbmVzIjogeworICAgICJub2RlIjogIj49IDAuOC4wIgorICB9LAorICAic2NyaXB0cyI6
IHsKKyAgICAidGVzdCI6ICJ2b3dzIHRlc3Qvc2VydmVyLyovKi10ZXN0LmpzIC0tc3BlYyIKKyAg
fQorfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9mdW5jdGlvbmFsLXByb2ctZXhhbXBsZXMvZWxtL2luZGV4Lmh0bWwgYi9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Z1bmN0aW9uYWwtcHJvZy1l
eGFtcGxlcy9lbG0vaW5kZXguaHRtbAppbmRleCA5NTE0YzRjZDhhMDY4MWYyMTYzMTU4ZDhjZmEy
OTZhYjU4OTg3N2NmLi45OTEzNGEyNWZjNTM5YzhlOGQ1M2U0MTFjZjY4ZGI4N2UzYmVkY2ZmIDEw
MDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2Z1bmN0aW9uYWwtcHJvZy1leGFtcGxlcy9lbG0vaW5kZXguaHRtbAorKysgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Z1bmN0aW9uYWwtcHJvZy1leGFt
cGxlcy9lbG0vaW5kZXguaHRtbApAQCAtMTYsNyArMTYsNyBAQAogPC9oZWFkPgogCiA8Ym9keT4K
LTxzY3JpcHQgc3JjPSJidWlsZC9lbG0uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9ImRpc3Qv
ZWxtLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiAgICAgKGZ1bmN0aW9uICgpIHsKICAgICAgICAg
Ly8gdmFyIHJlc3VsdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdlbG0tdG9kby1tb2RlbCcpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>310011</attachid>
            <date>2017-05-12 22:18:15 -0700</date>
            <delta_ts>2017-05-13 20:47:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170513-20170512221814.patch</filename>
            <type>text/plain</type>
            <size>74828</size>
            <attacher name="Addy Osmani">addyo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2ODEwCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDU5ZTYwNDhjODMx
OGE3MzczZGZlYzg4MTU5ODgxMDM3MTM0NTMzN2YuLmMyN2ZiNDI3ZTQ0ZDA3NDllZDMwOTU5NWZm
YzgxOGM0Nzg3YWJjZjkgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzggQEAKIDIwMTctMDUt
MTIgIEFkZHkgT3NtYW5pICA8YWRkeW9zbWFuaUBnbWFpbC5jb20+CiAKKyAgICAgICAgVXBkYXRl
IHRvIFNwZWVkb21ldGVyIDIuMCB3L3VwZGF0ZWQgZnJhbWV3b3JrcyArIG5ldyB3b3JrbG9hZHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDUxMwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNwZWVkb21l
dGVyOiByZWZyZXNoIHRlc3QgcnVubmVyIGFuZCBmaXggYXBwcyB0byB3b3JrIHdpdGggaXQKKwor
ICAgICAgICAqIFNwZWVkb21ldGVyL0ludGVyYWN0aXZlUnVubmVyLmh0bWw6CisgICAgICAgIChw
YXJzZVF1ZXJ5U3RyaW5nKTogQWRkcyBzdXBwb3J0IGZvciBzdGFydEF1dG9tYXRpY2FsbHkgcGFy
YW0KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdGVzdHMuanM6CisgICAgICAgICh0
cmlnZ2VyRW50ZXIpOiBSZWZhY3RvciBldmVudCB0cmlnZ2VyaW5nIGJlaGF2aW9yIGZvciB0ZXN0
cworICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9hbmd1bGFyL2Rpc3QvaW5kZXguaHRtbDoKKyAgICAgICAgKENTUyk6IERyb3AgcmVm
ZXJlbmNlIHRvIGV4dHJhbmVvdXMgc3R5bGVzaGVldCBpbiBBbmd1bGFyIFRvZG9NVkMKKyAgICAg
ICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
ZW1iZXJqcy9hc3NldHMvdG9kb212Yy5qczoKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9pbmRleC5odG1sOgorICAg
ICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9lbWJlcmpzL3NvdXJjZS9hcHAvc2VydmljZXMvbWVtb3J5LmpzOgorICAgICAgICAobG9jYWxT
dG9yYWdlTWVtb3J5KTogQ29ycmVjdCBpbXBvcnQgcGF0aCBhbmQgc3dpdGNoIHRvIHdpbmRvdy5s
b2NhbFN0b3JhZ2VNZW1vcnkgdG8gZml4IEVtYmVyIGZhaWx1cmVzCisgICAgICAgICogU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvc291
cmNlL2FwcC9zZXJ2aWNlcy9yZXBvLmpzOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3Rlc3RzL2luZGV4Lmh0bWw6
CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2pxdWVyeS9pbmRleC5odG1sOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVj
dG9yL0xJQ0VOU0U6IEFkZGVkLgorICAgICAgICAoTElDRU5TRSk6IEFkZCBtaXNzaW5nIG1ldGFk
YXRhIGFuZCBMSUNFTlNFIGZpbGVzIGFzIHBhcnQgb2YgZGlyZWN0b3IuanMgcGFja2FnZSBmb3Ig
alF1ZXJ5IFRvZG9NVkMKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9ib3dlci5q
c29uOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9kaXN0L2RpcmVj
dG9yLmpzOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9kaXN0L2Rp
cmVjdG9yLm1pbi5qczogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3Iv
ZGlzdC9lbmRlci5qczogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3Iv
cGFja2FnZS5qc29uOiBBZGRlZC4KKyAgICAgICAgKGRpcmVjdG9yKTogQWRkIG1pc3NpbmcgZGly
ZWN0b3IuanMgZGVwZW5kZW5jeSBmb3IgalF1ZXJ5IFRvZG9NVkMgaW1wbGVtZW50YXRpb24KKyAg
ICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9mdW5jdGlvbmFsLXByb2ctZXhh
bXBsZXMvZWxtL2luZGV4Lmh0bWw6CisgICAgICAgIChwYXRoKTogRml4IHBhdGggdG8gYnVpbHQg
RWxtIFRvZG9NVkMgc2NyaXB0cyAoYnVpbGQgLT4gZGlzdCkKKworMjAxNy0wNS0xMiAgQWRkeSBP
c21hbmkgIDxhZGR5b3NtYW5pQGdtYWlsLmNvbT4KKwogICAgICAgICBTcGVlZG9tZXRlcjogQWRk
IGEgUmVhY3QuanMgVG9kb01WQyBpbXBsZW1lbnRhdGlvbgogICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxNDQ0CiAKZGlmZiAtLWdpdCBhL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvSW50ZXJhY3RpdmVSdW5uZXIuaHRtbCBiL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvSW50ZXJhY3RpdmVSdW5uZXIuaHRtbAppbmRleCA5MjA3NmE0YWNh
YmU3ZGJjZWI4YjBiNWI5ZTUzMzY4ODZkOWVjNDU1Li43ODAzNjgwZDE3ZDFkOWI3NzU3NmEyN2E4
NjhhMDQ0OWNiN2I4YTMzIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L0ludGVyYWN0aXZlUnVubmVyLmh0bWwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9JbnRlcmFjdGl2ZVJ1bm5lci5odG1sCkBAIC0xLDcgKzEsNyBAQAogPCFET0NUWVBFIGh0bWw+
CiA8aHRtbD4KIDxoZWFkPgotPHRpdGxlPkRvWW91RXZlbkJlbmNoPC90aXRsZT4KKzx0aXRsZT5T
cGVlZG9tZXRlciAyLjAgSW50ZXJhY3RpdmUgUnVubmVyPC90aXRsZT4KIDxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvYmVuY2htYXJrLXJ1bm5lci5qcyIgZGVmZXI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3Rlc3RzLmpzIiBkZWZlcj48L3NjcmlwdD4KIDxzdHlsZT4KQEAgLTY2LDEz
ICs2NiwzOSBAQCBmdW5jdGlvbiBjcmVhdGVVSUZvclN1aXRlcyhzdWl0ZXMsIG9uc3RlcCwgb25y
dW4pIHsKIAogICAgIHZhciBidXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24n
KTsKICAgICBidXR0b24udGV4dENvbnRlbnQgPSAnUnVuJzsKKyAgICBidXR0b24uaWQgPSAncnVu
U3VpdGVzJzsKICAgICBidXR0b24ub25jbGljayA9IG9ucnVuOwogICAgIGNvbnRyb2wuYXBwZW5k
Q2hpbGQoYnV0dG9uKTsKIAogICAgIHJldHVybiBjb250cm9sOwogfQogCit2YXIgcGFyc2VRdWVy
eVN0cmluZyA9IChmdW5jdGlvbiAocGFpckxpc3QpIHsKKyAgICB2YXIgcGFpcnMgPSB7fTsKKyAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IHBhaXJMaXN0Lmxlbmd0aDsgKytpKSB7CisgICAgICAgIHZh
ciBrZXlWYWx1ZSA9IHBhaXJMaXN0W2ldLnNwbGl0KCc9JywgMik7CisgICAgICAgIGlmIChrZXlW
YWx1ZS5sZW5ndGggPT0gMSkKKyAgICAgICAgICAgIHBhaXJzW2tleVZhbHVlWzBdXSA9ICcnOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBwYWlyc1trZXlWYWx1ZVswXV0gPSBkZWNvZGVVUklD
b21wb25lbnQoa2V5VmFsdWVbMV0ucmVwbGFjZSgvXCsvZywgJyAnKSk7CisgICAgfQorICAgIHJl
dHVybiBwYWlyczsKK30pKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2guc3Vic3RyKDEpLnNwbGl0KCcm
JykpOworCitmdW5jdGlvbiBkaXNhYmxlQWxsU3VpdGVzRXhjZXB0KHN1aXRlTmFtZSkgeworICAg
IGlmIChzdWl0ZU5hbWUgPT09IHVuZGVmaW5lZCB8fCBzdWl0ZU5hbWUgPT09ICcnKQorICAgICAg
ICByZXR1cm47CisgICAgU3VpdGVzLmZvckVhY2goZnVuY3Rpb24oZWxlbWVudCkgeworICAgICAg
ICBpZiAoZWxlbWVudC5uYW1lICE9PSBzdWl0ZU5hbWUpCisgICAgICAgICAgICBlbGVtZW50LmRp
c2FibGVkID0gdHJ1ZTsKKyAgICB9KTsKK30KKwogZnVuY3Rpb24gc3RhcnRUZXN0KCkgeworICAg
IHZhciBxdWVyeVBhcmFtID0gcGFyc2VRdWVyeVN0cmluZ1snc3VpdGUnXTsKKyAgICBpZiAocXVl
cnlQYXJhbSAhPT0gdW5kZWZpbmVkKQorICAgICAgICBkaXNhYmxlQWxsU3VpdGVzRXhjZXB0KHF1
ZXJ5UGFyYW0pOworCiAgICAgdmFyIHJ1bm5lciA9IG5ldyBCZW5jaG1hcmtSdW5uZXIoU3VpdGVz
LCB7CiAgICAgICAgIHdpbGxSdW5UZXN0OiBmdW5jdGlvbiAoc3VpdGUsIHRlc3QpIHsKICAgICAg
ICAgICAgIHRlc3QuYW5jaG9yLmNsYXNzTGlzdC5hZGQoJ3J1bm5pbmcnKTsKQEAgLTExMiw2ICsx
MzgsOSBAQCBmdW5jdGlvbiBzdGFydFRlc3QoKSB7CiAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRD
aGlsZChjcmVhdGVVSUZvclN1aXRlcyhTdWl0ZXMsCiAgICAgICAgIGZ1bmN0aW9uICgpIHsgcnVu
bmVyLnN0ZXAoY3VycmVudFN0YXRlKS50aGVuKGZ1bmN0aW9uIChzdGF0ZSkgeyBjdXJyZW50U3Rh
dGUgPSBzdGF0ZTsgfSk7IH0sCiAgICAgICAgIGZ1bmN0aW9uICgpIHsgcnVubmVyLnJ1bkFsbFN0
ZXBzKGN1cnJlbnRTdGF0ZSk7IGN1cnJlbnRTdGF0ZSA9IG51bGw7IH0pKTsKKworICAgIGlmIChw
YXJzZVF1ZXJ5U3RyaW5nWydzdGFydEF1dG9tYXRpY2FsbHknXSAhPT0gdW5kZWZpbmVkKQorICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncnVuU3VpdGVzJykuY2xpY2soKTsKIH0KIAog
d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBzdGFydFRlc3QpOwpkaWZmIC0tZ2l0IGEv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdGVzdHMuanMgYi9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90ZXN0cy5qcwppbmRleCBlNmYyMzljYzk0
ZWEyNDdmZGZhZmE4ZWYzMzRhNGZjYjE3NDI4MGQ5Li4xNjY4MWFkMTA3NDRlOTViYzExNmRjZmIy
NWQxZGNlMjY2YmFhYWQ2IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90ZXN0cy5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90ZXN0cy5qcwpAQCAtMSwyMSArMSwzMSBAQAogdmFyIG51bWJlck9mSXRlbXNUb0Fk
ZCA9IDEwMDsKIHZhciBTdWl0ZXMgPSBbXTsKK3ZhciBFTlRFUl9LRVlfQ09ERSA9IDEzOworCit2
YXIgdHJpZ2dlckVudGVyID0gZnVuY3Rpb24gKGVsZW1lbnQsIHR5cGUpIHsKKyAgICB2YXIgZXZl
bnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnRzJyk7CisgICAgZXZlbnQuaW5pdEV2ZW50
KHR5cGUsIHRydWUsIHRydWUpOworICAgIGV2ZW50LmtleUNvZGUgPSBFTlRFUl9LRVlfQ09ERTsK
KyAgICBldmVudC53aGljaCA9IEVOVEVSX0tFWV9DT0RFOworICAgIGV2ZW50LmtleSA9ICdFTlRF
Uic7CisgICAgZWxlbWVudC5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKK30KIAogU3VpdGVzLnB1c2go
ewogICAgIG5hbWU6ICdWYW5pbGxhSlMtVG9kb01WQycsCiAgICAgdXJsOiAndG9kb212Yy92YW5p
bGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9pbmRleC5odG1sJywKICAgICBwcmVwYXJlOiBmdW5jdGlv
biAocnVubmVyLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKLSAgICAgICAgcmV0
dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVudCgnI25ldy10b2RvJykudGhlbihmdW5jdGlvbiAoZWxl
bWVudCkgeworICAgICAgICByZXR1cm4gcnVubmVyLndhaXRGb3JFbGVtZW50KCcubmV3LXRvZG8n
KS50aGVuKGZ1bmN0aW9uIChlbGVtZW50KSB7CiAgICAgICAgICAgICBlbGVtZW50LmZvY3VzKCk7
CiAgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKICAgICAgICAgfSk7CiAgICAgfSwKICAgICB0
ZXN0czogWwogICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0FkZGluZycgKyBudW1iZXJP
Zkl0ZW1zVG9BZGQgKyAnSXRlbXMnLCBmdW5jdGlvbiAobmV3VG9kbywgY29udGVudFdpbmRvdywg
Y29udGVudERvY3VtZW50KSB7Ci0gICAgICAgICAgICB2YXIgdG9kb0NvbnRyb2xsZXIgPSBjb250
ZW50V2luZG93LnRvZG8uY29udHJvbGxlcjsKICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgbnVtYmVyT2ZJdGVtc1RvQWRkOyBpKyspIHsKICAgICAgICAgICAgICAgICBuZXdUb2RvLnZh
bHVlID0gJ1NvbWV0aGluZyB0byBkbyAnICsgaTsKLSAgICAgICAgICAgICAgICB0b2RvQ29udHJv
bGxlci5hZGRJdGVtKHtrZXlDb2RlOiB0b2RvQ29udHJvbGxlci5FTlRFUl9LRVksIHRhcmdldDog
bmV3VG9kb30pOworICAgICAgICAgICAgICAgIG5ld1RvZG8uZGlzcGF0Y2hFdmVudChuZXcgRXZl
bnQoJ2NoYW5nZScpKTsKKyAgICAgICAgICAgICAgICB0cmlnZ2VyRW50ZXIobmV3VG9kbywgJ2tl
eXByZXNzJyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0pLAogICAgICAgICBuZXcgQmVuY2ht
YXJrVGVzdFN0ZXAoJ0NvbXBsZXRpbmdBbGxJdGVtcycsIGZ1bmN0aW9uIChuZXdUb2RvLCBjb250
ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKQEAgLTMyLDU2ICs0Miw4NCBAQCBTdWl0ZXMu
cHVzaCh7CiB9KTsKIAogU3VpdGVzLnB1c2goewotICAgIG5hbWU6ICdFbWJlckpTLVRvZG9NVkMn
LAotICAgIHVybDogJ3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvaW5kZXgu
aHRtbCcsCisgICAgbmFtZTogJ1ZhbmlsbGEtRVMyMDE1LVRvZG9NVkMnLAorICAgIHVybDogJ3Rv
ZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUvaW5kZXguaHRtbCcsCiAgICAgcHJlcGFyZTog
ZnVuY3Rpb24gKHJ1bm5lciwgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7Ci0gICAg
ICAgIHJldHVybiBydW5uZXIud2FpdEZvckVsZW1lbnQoJyNuZXctdG9kbycpLnRoZW4oZnVuY3Rp
b24gKGVsZW1lbnQpIHsKKyAgICAgICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVudCgnLm5l
dy10b2RvJykudGhlbihmdW5jdGlvbiAoZWxlbWVudCkgewogICAgICAgICAgICAgZWxlbWVudC5m
b2N1cygpOwotICAgICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgICAgICB2aWV3czogY29u
dGVudFdpbmRvdy5FbWJlci5WaWV3LnZpZXdzLAotICAgICAgICAgICAgICAgIGVtYmVyUnVuOiBj
b250ZW50V2luZG93LkVtYmVyLnJ1biwKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVy
biBlbGVtZW50OwogICAgICAgICB9KTsKICAgICB9LAogICAgIHRlc3RzOiBbCi0gICAgICAgIG5l
dyBCZW5jaG1hcmtUZXN0U3RlcCgnQWRkaW5nJyArIG51bWJlck9mSXRlbXNUb0FkZCArICdJdGVt
cycsIGZ1bmN0aW9uIChwYXJhbXMpIHsKKyAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdB
ZGRpbmcnICsgbnVtYmVyT2ZJdGVtc1RvQWRkICsgJ0l0ZW1zJywgZnVuY3Rpb24gKG5ld1RvZG8s
IGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgewogICAgICAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBudW1iZXJPZkl0ZW1zVG9BZGQ7IGkrKykgewotICAgICAgICAgICAgICAgIHBh
cmFtcy5lbWJlclJ1bihmdW5jdGlvbiAoKSB7IHBhcmFtcy52aWV3c1sibmV3LXRvZG8iXS5zZXQo
J3ZhbHVlJywgJ1NvbWV0aGluZyB0byBkbycgKyBpKTsgfSk7Ci0gICAgICAgICAgICAgICAgcGFy
YW1zLmVtYmVyUnVuKGZ1bmN0aW9uICgpIHsgcGFyYW1zLnZpZXdzWyJuZXctdG9kbyJdLmluc2Vy
dE5ld2xpbmUoZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50JykpOyB9KTsKKyAgICAgICAgICAg
ICAgICBuZXdUb2RvLnZhbHVlID0gJ1NvbWV0aGluZyB0byBkbycgKyBpOworICAgICAgICAgICAg
ICAgIG5ld1RvZG8uZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2NoYW5nZScpKTsKKyAgICAgICAg
ICAgICAgICB0cmlnZ2VyRW50ZXIobmV3VG9kbywgJ2tleXByZXNzJyk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0pLAogICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0NvbXBsZXRpbmdB
bGxJdGVtcycsIGZ1bmN0aW9uIChwYXJhbXMsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVu
dCkgewotICAgICAgICAgICAgdmFyIGNoZWNrYm94ZXMgPSBjb250ZW50RG9jdW1lbnQucXVlcnlT
ZWxlY3RvckFsbCgnLmVtYmVyLWNoZWNrYm94Jyk7Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGNoZWNrYm94ZXMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgICAgICB2YXIgdmll
dyA9IHBhcmFtcy52aWV3c1tjaGVja2JveGVzW2ldLmlkXTsKLSAgICAgICAgICAgICAgICBwYXJh
bXMuZW1iZXJSdW4oZnVuY3Rpb24gKCkgeyB2aWV3LnNldCgnY2hlY2tlZCcsIHRydWUpOyB9KTsK
KyAgICAgICAgICAgIHZhciBjaGVja2JveGVzID0gY29udGVudERvY3VtZW50LnF1ZXJ5U2VsZWN0
b3JBbGwoJy50b2dnbGUnKTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hlY2ti
b3hlcy5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgICAgICBjaGVja2JveGVzW2ldLmNsaWNrKCk7
CisgICAgICAgIH0pLAorICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0RlbGV0aW5nSXRl
bXMnLCBmdW5jdGlvbiAocGFyYW1zLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsK
KyAgICAgICAgICAgIHZhciBkZWxldGVCdXR0b25zID0gY29udGVudERvY3VtZW50LnF1ZXJ5U2Vs
ZWN0b3JBbGwoJy5kZXN0cm95Jyk7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRl
bGV0ZUJ1dHRvbnMubGVuZ3RoOyBpKyspCisgICAgICAgICAgICAgICAgZGVsZXRlQnV0dG9uc1tp
XS5jbGljaygpOworICAgICAgICB9KSwKKyAgICBdCit9KTsKKworU3VpdGVzLnB1c2goeworICAg
IG5hbWU6ICdWYW5pbGxhLUVTMjAxNS1CYWJlbC1XZWJwYWNrLVRvZG9NVkMnLAorICAgIHVybDog
J3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0L2luZGV4
Lmh0bWwnLAorICAgIHByZXBhcmU6IGZ1bmN0aW9uIChydW5uZXIsIGNvbnRlbnRXaW5kb3csIGNv
bnRlbnREb2N1bWVudCkgeworICAgICAgICByZXR1cm4gcnVubmVyLndhaXRGb3JFbGVtZW50KCcu
bmV3LXRvZG8nKS50aGVuKGZ1bmN0aW9uIChlbGVtZW50KSB7CisgICAgICAgICAgICBlbGVtZW50
LmZvY3VzKCk7CisgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKKyAgICAgICAgfSk7CisgICAg
fSwKKyAgICB0ZXN0czogWworICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0FkZGluZycg
KyBudW1iZXJPZkl0ZW1zVG9BZGQgKyAnSXRlbXMnLCBmdW5jdGlvbiAobmV3VG9kbywgY29udGVu
dFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IG51bWJlck9mSXRlbXNUb0FkZDsgaSsrKSB7CisgICAgICAgICAgICAgICAgbmV3VG9kby52
YWx1ZSA9ICdTb21ldGhpbmcgdG8gZG8nICsgaTsKKyAgICAgICAgICAgICAgICBuZXdUb2RvLmRp
c3BhdGNoRXZlbnQobmV3IEV2ZW50KCdjaGFuZ2UnKSk7CisgICAgICAgICAgICAgICAgdHJpZ2dl
ckVudGVyKG5ld1RvZG8sICdrZXlwcmVzcycpOwogICAgICAgICAgICAgfQogICAgICAgICB9KSwK
KyAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdDb21wbGV0aW5nQWxsSXRlbXMnLCBmdW5j
dGlvbiAocGFyYW1zLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAg
ICAgIHZhciBjaGVja2JveGVzID0gY29udGVudERvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy50
b2dnbGUnKTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hlY2tib3hlcy5sZW5n
dGg7IGkrKykKKyAgICAgICAgICAgICAgICBjaGVja2JveGVzW2ldLmNsaWNrKCk7CisgICAgICAg
IH0pLAogICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0RlbGV0aW5nSXRlbXMnLCBmdW5j
dGlvbiAocGFyYW1zLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKICAgICAgICAg
ICAgIHZhciBkZWxldGVCdXR0b25zID0gY29udGVudERvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwo
Jy5kZXN0cm95Jyk7CiAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRlbGV0ZUJ1dHRv
bnMubGVuZ3RoOyBpKyspCi0gICAgICAgICAgICAgICAgcGFyYW1zLmVtYmVyUnVuKGZ1bmN0aW9u
ICgpIHsgZGVsZXRlQnV0dG9uc1tpXS5jbGljaygpOyB9KTsKKyAgICAgICAgICAgICAgICBkZWxl
dGVCdXR0b25zW2ldLmNsaWNrKCk7CiAgICAgICAgIH0pLAogICAgIF0KIH0pOwogCiBTdWl0ZXMu
cHVzaCh7Ci0gICAgbmFtZTogJ0JhY2tib25lSlMtVG9kb01WQycsCi0gICAgdXJsOiAndG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvaW5kZXguaHRtbCcsCisgICAgbmFtZTog
J1JlYWN0LVRvZG9NVkMnLAorICAgIHVybDogJ3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L3JlYWN0L2luZGV4Lmh0bWwnLAogICAgIHByZXBhcmU6IGZ1bmN0aW9uIChydW5uZXIsIGNvbnRl
bnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgewotICAgIGNvbnRlbnRXaW5kb3cuQmFja2JvbmUu
c3luYyA9IGZ1bmN0aW9uICgpIHt9Ci0gICAgICAgIHJldHVybiBydW5uZXIud2FpdEZvckVsZW1l
bnQoJyNuZXctdG9kbycpLnRoZW4oZnVuY3Rpb24gKGVsZW1lbnQpIHsKKyAgICAgICAgY29udGVu
dFdpbmRvdy5hcHAuVXRpbHMuc3RvcmUgPSBmdW5jdGlvbiAoKSB7fQorICAgICAgICByZXR1cm4g
cnVubmVyLndhaXRGb3JFbGVtZW50KCcubmV3LXRvZG8nKS50aGVuKGZ1bmN0aW9uIChlbGVtZW50
KSB7CiAgICAgICAgICAgICBlbGVtZW50LmZvY3VzKCk7CiAgICAgICAgICAgICByZXR1cm4gZWxl
bWVudDsKICAgICAgICAgfSk7CiAgICAgfSwKICAgICB0ZXN0czogWwogICAgICAgICBuZXcgQmVu
Y2htYXJrVGVzdFN0ZXAoJ0FkZGluZycgKyBudW1iZXJPZkl0ZW1zVG9BZGQgKyAnSXRlbXMnLCBm
dW5jdGlvbiAobmV3VG9kbywgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7Ci0gICAg
ICAgICAgICB2YXIgYXBwVmlldyA9IGNvbnRlbnRXaW5kb3cuYXBwVmlldzsKLSAgICAgICAgICAg
IHZhciBmYWtlRXZlbnQgPSB7d2hpY2g6IGNvbnRlbnRXaW5kb3cuRU5URVJfS0VZfTsKICAgICAg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtYmVyT2ZJdGVtc1RvQWRkOyBpKyspIHsKICAg
ICAgICAgICAgICAgICBuZXdUb2RvLnZhbHVlID0gJ1NvbWV0aGluZyB0byBkbyAnICsgaTsKLSAg
ICAgICAgICAgICAgICBhcHBWaWV3LmNyZWF0ZU9uRW50ZXIoZmFrZUV2ZW50KTsKKyAgICAgICAg
ICAgICAgICBuZXdUb2RvLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdpbnB1dCcsIHsKKyAgICAg
ICAgICAgICAgICAgIGJ1YmJsZXM6IHRydWUsCisgICAgICAgICAgICAgICAgICBjYW5jZWxhYmxl
OiB0cnVlCisgICAgICAgICAgICAgICAgfSkpOworICAgICAgICAgICAgICAgIHRyaWdnZXJFbnRl
cihuZXdUb2RvLCAna2V5ZG93bicpOwogICAgICAgICAgICAgfQogICAgICAgICB9KSwKICAgICAg
ICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdDb21wbGV0aW5nQWxsSXRlbXMnLCBmdW5jdGlvbiAo
bmV3VG9kbywgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CkBAIC05OCw1NyArMTM2
LDg5IEBAIFN1aXRlcy5wdXNoKHsKIH0pOwogCiBTdWl0ZXMucHVzaCh7Ci0gICAgbmFtZTogJ2pR
dWVyeS1Ub2RvTVZDJywKLSAgICB1cmw6ICd0b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9q
cXVlcnkvaW5kZXguaHRtbCcsCisgICAgbmFtZTogJ1JlYWN0LVJlZHV4LVRvZG9NVkMnLAorICAg
IHVybDogJ3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L2Rpc3QvaW5k
ZXguaHRtbCcsCiAgICAgcHJlcGFyZTogZnVuY3Rpb24gKHJ1bm5lciwgY29udGVudFdpbmRvdywg
Y29udGVudERvY3VtZW50KSB7Ci0gICAgICAgIHJldHVybiBydW5uZXIud2FpdEZvckVsZW1lbnQo
JyNuZXctdG9kbycpLnRoZW4oZnVuY3Rpb24gKGVsZW1lbnQpIHsKKyAgICAgICAgcmV0dXJuIHJ1
bm5lci53YWl0Rm9yRWxlbWVudCgnLm5ldy10b2RvJykudGhlbihmdW5jdGlvbiAoZWxlbWVudCkg
ewogICAgICAgICAgICAgZWxlbWVudC5mb2N1cygpOwogICAgICAgICAgICAgcmV0dXJuIGVsZW1l
bnQ7CiAgICAgICAgIH0pOwogICAgIH0sCiAgICAgdGVzdHM6IFsKICAgICAgICAgbmV3IEJlbmNo
bWFya1Rlc3RTdGVwKCdBZGRpbmcnICsgbnVtYmVyT2ZJdGVtc1RvQWRkICsgJ0l0ZW1zJywgZnVu
Y3Rpb24gKG5ld1RvZG8sIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgewotICAgICAg
ICAgICAgdmFyIGFwcCA9IGNvbnRlbnRXaW5kb3cuYXBwOwotICAgICAgICAgICAgdmFyIGZha2VF
dmVudCA9IHt3aGljaDogYXBwLkVOVEVSX0tFWX07CiAgICAgICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IG51bWJlck9mSXRlbXNUb0FkZDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgbmV3VG9k
by52YWx1ZSA9ICdTb21ldGhpbmcgdG8gZG8gJyArIGk7Ci0gICAgICAgICAgICAgICAgYXBwLmNy
ZWF0ZS5jYWxsKG5ld1RvZG8sIGZha2VFdmVudCk7CisgICAgICAgICAgICAgICAgbmV3VG9kby52
YWx1ZSA9ICdTb21ldGhpbmcgdG8gZG8nICsgaTsKKyAgICAgICAgICAgICAgICB0cmlnZ2VyRW50
ZXIobmV3VG9kbywgJ2tleWRvd24nKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSksCi0gICAg
ICAgIG5ldyBCZW5jaG1hcmtUZXN0U3RlcCgnQ29tcGxldGluZ0FsbEl0ZW1zJywgZnVuY3Rpb24g
KG5ld1RvZG8sIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgewotICAgICAgICAgICAg
dmFyIGFwcCA9IGNvbnRlbnRXaW5kb3cuYXBwOworICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0
ZXAoJ0NvbXBsZXRpbmdBbGxJdGVtcycsIGZ1bmN0aW9uIChwYXJhbXMsIGNvbnRlbnRXaW5kb3cs
IGNvbnRlbnREb2N1bWVudCkgewogICAgICAgICAgICAgdmFyIGNoZWNrYm94ZXMgPSBjb250ZW50
RG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRvZ2dsZScpOwotICAgICAgICAgICAgdmFyICQg
PSBjb250ZW50V2luZG93LiQ7Ci0KLSAgICAgICAgICAgIGl0ZW1JbmRleFRvSWQgPSBuZXcgQXJy
YXkoY2hlY2tib3hlcy5sZW5ndGgpOwogICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBj
aGVja2JveGVzLmxlbmd0aDsgaSsrKQotICAgICAgICAgICAgICAgIGl0ZW1JbmRleFRvSWRbaV0g
PSAkKGNoZWNrYm94ZXNbaV0pLmNsb3Nlc3QoJ2xpJykuZGF0YSgnaWQnKTsKKyAgICAgICAgICAg
ICAgICBjaGVja2JveGVzW2ldLmNsaWNrKCk7CisgICAgICAgIH0pLAorICAgICAgICBuZXcgQmVu
Y2htYXJrVGVzdFN0ZXAoJ0RlbGV0aW5nSXRlbXMnLCBmdW5jdGlvbiAocGFyYW1zLCBjb250ZW50
V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgICAgIHZhciBkZWxldGVCdXR0b25z
ID0gY29udGVudERvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5kZXN0cm95Jyk7CisgICAgICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRlbGV0ZUJ1dHRvbnMubGVuZ3RoOyBpKyspCisgICAg
ICAgICAgICAgICAgZGVsZXRlQnV0dG9uc1tpXS5jbGljaygpOworICAgICAgICB9KSwKKyAgICBd
Cit9KTsKIAotICAgICAgICAgICAgYXBwLmdldFRvZG8gPSBmdW5jdGlvbiAoZWxlbWVudCwgY2Fs
bGJhY2spIHsKLSAgICAgICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXM7Ci0gICAgICAgICAgICAg
ICAgdmFyIGlkID0gaXRlbUluZGV4VG9JZFt0aGlzLmN1cnJlbnRJdGVtSW5kZXhdOwotICAgICAg
ICAgICAgICAgICQuZWFjaCh0aGlzLnRvZG9zLCBmdW5jdGlvbiAoaiwgdmFsKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmICh2YWwuaWQgPT09IGlkKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBjYWxsYmFjay5hcHBseShzZWxmLCBhcmd1bWVudHMpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
fSk7CitTdWl0ZXMucHVzaCh7CisgICAgbmFtZTogJ0VtYmVySlMtVG9kb01WQycsCisgICAgdXJs
OiAndG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcycsCisgICAgcHJlcGFyZTog
ZnVuY3Rpb24gKHJ1bm5lciwgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CisgICAg
ICAgIHJldHVybiBydW5uZXIud2FpdEZvckVsZW1lbnQoJyNuZXctdG9kbycpLnRoZW4oZnVuY3Rp
b24gKGVsZW1lbnQpIHsKKyAgICAgICAgICAgIGVsZW1lbnQuZm9jdXMoKTsKKyAgICAgICAgICAg
IHJldHVybiBlbGVtZW50OworICAgICAgICB9KTsKKyAgICB9LAorICAgIHRlc3RzOiBbCisgICAg
ICAgIG5ldyBCZW5jaG1hcmtUZXN0U3RlcCgnQWRkaW5nJyArIG51bWJlck9mSXRlbXNUb0FkZCAr
ICdJdGVtcycsIGZ1bmN0aW9uIChuZXdUb2RvLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1l
bnQpIHsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtYmVyT2ZJdGVtc1RvQWRk
OyBpKyspIHsKKyAgICAgICAgICAgICAgICBuZXdUb2RvLnZhbHVlID0gJ1NvbWV0aGluZyB0byBk
bycgKyBpOworICAgICAgICAgICAgICAgIHRyaWdnZXJFbnRlcihuZXdUb2RvLCAna2V5ZG93bicp
OwogICAgICAgICAgICAgfQorICAgICAgICB9KSwKKyAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RT
dGVwKCdDb21wbGV0aW5nQWxsSXRlbXMnLCBmdW5jdGlvbiAocGFyYW1zLCBjb250ZW50V2luZG93
LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgICAgIHZhciBjaGVja2JveGVzID0gY29udGVu
dERvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy50b2dnbGUnKTsKKyAgICAgICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgY2hlY2tib3hlcy5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgICAgICBj
aGVja2JveGVzW2ldLmNsaWNrKCk7CisgICAgICAgIH0pLAorICAgICAgICBuZXcgQmVuY2htYXJr
VGVzdFN0ZXAoJ0RlbGV0aW5nSXRlbXMnLCBmdW5jdGlvbiAocGFyYW1zLCBjb250ZW50V2luZG93
LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgICAgIHZhciBkZWxldGVCdXR0b25zID0gY29u
dGVudERvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5kZXN0cm95Jyk7CisgICAgICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGRlbGV0ZUJ1dHRvbnMubGVuZ3RoOyBpKyspCisgICAgICAgICAg
ICAgICAgZGVsZXRlQnV0dG9uc1tpXS5jbGljaygpOworICAgICAgICB9KSwKKyAgICBdCit9KTsK
IAotICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGVja2JveGVzLmxlbmd0aDsgaSsr
KSB7Ci0gICAgICAgICAgICAgICAgYXBwLmN1cnJlbnRJdGVtSW5kZXggPSBpOwotICAgICAgICAg
ICAgICAgIGFwcC50b2dnbGUuY2FsbChjaGVja2JveGVzW2ldKTsKK1N1aXRlcy5wdXNoKHsKKyAg
ICBuYW1lOiAnQmFja2JvbmVKUy1Ub2RvTVZDJywKKyAgICB1cmw6ICd0b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9iYWNrYm9uZS9pbmRleC5odG1sJywKKyAgICBwcmVwYXJlOiBmdW5jdGlv
biAocnVubmVyLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICBjb250ZW50
V2luZG93LkJhY2tib25lLnN5bmMgPSBmdW5jdGlvbiAoKSB7fQorICAgICAgICByZXR1cm4gcnVu
bmVyLndhaXRGb3JFbGVtZW50KCcubmV3LXRvZG8nKS50aGVuKGZ1bmN0aW9uIChlbGVtZW50KSB7
CisgICAgICAgICAgICBlbGVtZW50LmZvY3VzKCk7CisgICAgICAgICAgICByZXR1cm4gZWxlbWVu
dDsKKyAgICAgICAgfSk7CisgICAgfSwKKyAgICB0ZXN0czogWworICAgICAgICBuZXcgQmVuY2ht
YXJrVGVzdFN0ZXAoJ0FkZGluZycgKyBudW1iZXJPZkl0ZW1zVG9BZGQgKyAnSXRlbXMnLCBmdW5j
dGlvbiAobmV3VG9kbywgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CisgICAgICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bWJlck9mSXRlbXNUb0FkZDsgaSsrKSB7CisgICAg
ICAgICAgICAgICAgbmV3VG9kby52YWx1ZSA9ICdTb21ldGhpbmcgdG8gZG8gJyArIGk7CisgICAg
ICAgICAgICAgICAgdHJpZ2dlckVudGVyKG5ld1RvZG8sICdrZXlwcmVzcycpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9KSwKKyAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdDb21wbGV0
aW5nQWxsSXRlbXMnLCBmdW5jdGlvbiAobmV3VG9kbywgY29udGVudFdpbmRvdywgY29udGVudERv
Y3VtZW50KSB7CisgICAgICAgICAgICB2YXIgY2hlY2tib3hlcyA9IGNvbnRlbnREb2N1bWVudC5x
dWVyeVNlbGVjdG9yQWxsKCcudG9nZ2xlJyk7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IGNoZWNrYm94ZXMubGVuZ3RoOyBpKyspCisgICAgICAgICAgICAgICAgY2hlY2tib3hlc1tp
XS5jbGljaygpOworICAgICAgICB9KSwKICAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdE
ZWxldGluZ0FsbEl0ZW1zJywgZnVuY3Rpb24gKG5ld1RvZG8sIGNvbnRlbnRXaW5kb3csIGNvbnRl
bnREb2N1bWVudCkgewotICAgICAgICAgICAgY29udGVudERvY3VtZW50LnF1ZXJ5U2VsZWN0b3Io
JyNjbGVhci1jb21wbGV0ZWQnKS5jbGljaygpOwotICAgICAgICAgICAgdmFyIGFwcCA9IGNvbnRl
bnRXaW5kb3cuYXBwOwogICAgICAgICAgICAgdmFyIGRlbGV0ZUJ1dHRvbnMgPSBjb250ZW50RG9j
dW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmRlc3Ryb3knKTsKLQotICAgICAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBkZWxldGVCdXR0b25zLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICAg
ICAgYXBwLmN1cnJlbnRJdGVtSW5kZXggPSBpOwotICAgICAgICAgICAgICAgIGFwcC5kZXN0cm95
LmNhbGwoZGVsZXRlQnV0dG9uc1tpXSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGRlbGV0ZUJ1dHRvbnMubGVuZ3RoOyBpKyspCisgICAgICAgICAgICAg
ICAgZGVsZXRlQnV0dG9uc1tpXS5jbGljaygpOwogICAgICAgICB9KSwKICAgICBdCiB9KTsKQEAg
LTE2NCw3ICsyMzQsNiBAQCBTdWl0ZXMucHVzaCh7CiAgICAgfSwKICAgICB0ZXN0czogWwogICAg
ICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0FkZGluZycgKyBudW1iZXJPZkl0ZW1zVG9BZGQg
KyAnSXRlbXMnLCBmdW5jdGlvbiAobmV3VG9kbywgY29udGVudFdpbmRvdywgY29udGVudERvY3Vt
ZW50KSB7Ci0gICAgICAgICAgICB2YXIgdG9kb212YyA9IGNvbnRlbnRXaW5kb3cudG9kb212YzsK
ICAgICAgICAgICAgIHZhciBzdWJtaXRFdmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdFdmVu
dCcpOwogICAgICAgICAgICAgc3VibWl0RXZlbnQuaW5pdEV2ZW50KCdzdWJtaXQnLCB0cnVlLCB0
cnVlKTsKICAgICAgICAgICAgIHZhciBpbnB1dEV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQo
J0V2ZW50Jyk7CkBAIC0xODksMjUgKzI1OCw1NyBAQCBTdWl0ZXMucHVzaCh7CiB9KTsKIAogU3Vp
dGVzLnB1c2goewotICAgIG5hbWU6ICdSZWFjdC1Ub2RvTVZDJywKLSAgICB1cmw6ICd0b2RvbXZj
L2xhYnMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L2luZGV4Lmh0bWwnLAorICAgIG5hbWU6
ICdBbmd1bGFyMi1UeXBlU2NyaXB0LVRvZG9NVkMnLAorICAgIHVybDogJ3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvZGlzdC9pbmRleC5odG1sJywKICAgICBwcmVwYXJlOiBm
dW5jdGlvbiAocnVubmVyLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKLSAgICAg
ICAgY29udGVudFdpbmRvdy5VdGlscy5zdG9yZSA9IGZ1bmN0aW9uICgpIHt9Ci0gICAgICAgIHJl
dHVybiBydW5uZXIud2FpdEZvckVsZW1lbnQoJyNuZXctdG9kbycpLnRoZW4oZnVuY3Rpb24gKGVs
ZW1lbnQpIHsKKyAgICAgICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVudCgnLm5ldy10b2Rv
JykudGhlbihmdW5jdGlvbiAoZWxlbWVudCkgewogICAgICAgICAgICAgZWxlbWVudC5mb2N1cygp
OwogICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CiAgICAgICAgIH0pOwogICAgIH0sCiAgICAg
dGVzdHM6IFsKICAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdBZGRpbmcnICsgbnVtYmVy
T2ZJdGVtc1RvQWRkICsgJ0l0ZW1zJywgZnVuY3Rpb24gKG5ld1RvZG8sIGNvbnRlbnRXaW5kb3cs
IGNvbnRlbnREb2N1bWVudCkgewotICAgICAgICAgICAgdmFyIHRvZG9tdmMgPSBjb250ZW50V2lu
ZG93LnRvZG9tdmM7CiAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bWJlck9mSXRl
bXNUb0FkZDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgbmV3VG9kby52YWx1ZSA9ICdTb21ldGhp
bmcgdG8gZG8gJyArIGk7CisgICAgICAgICAgICAgICAgbmV3VG9kby52YWx1ZSA9ICdTb21ldGhp
bmcgdG8gZG8nICsgaTsKKyAgICAgICAgICAgICAgICBuZXdUb2RvLmRpc3BhdGNoRXZlbnQobmV3
IEV2ZW50KCdpbnB1dCcsIHsKKyAgICAgICAgICAgICAgICAgIGJ1YmJsZXM6IHRydWUsCisgICAg
ICAgICAgICAgICAgICBjYW5jZWxhYmxlOiB0cnVlCisgICAgICAgICAgICAgICAgfSkpOworICAg
ICAgICAgICAgICAgIHRyaWdnZXJFbnRlcihuZXdUb2RvLCAna2V5dXAnKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfSksCisgICAgICAgIG5ldyBCZW5jaG1hcmtUZXN0U3RlcCgnQ29tcGxldGlu
Z0FsbEl0ZW1zJywgZnVuY3Rpb24gKHBhcmFtcywgY29udGVudFdpbmRvdywgY29udGVudERvY3Vt
ZW50KSB7CisgICAgICAgICAgICB2YXIgY2hlY2tib3hlcyA9IGNvbnRlbnREb2N1bWVudC5xdWVy
eVNlbGVjdG9yQWxsKCcudG9nZ2xlJyk7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGNoZWNrYm94ZXMubGVuZ3RoOyBpKyspCisgICAgICAgICAgICAgICAgY2hlY2tib3hlc1tpXS5j
bGljaygpOworICAgICAgICB9KSwKKyAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdEZWxl
dGluZ0l0ZW1zJywgZnVuY3Rpb24gKHBhcmFtcywgY29udGVudFdpbmRvdywgY29udGVudERvY3Vt
ZW50KSB7CisgICAgICAgICAgICB2YXIgZGVsZXRlQnV0dG9ucyA9IGNvbnRlbnREb2N1bWVudC5x
dWVyeVNlbGVjdG9yQWxsKCcuZGVzdHJveScpOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBkZWxldGVCdXR0b25zLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgICAgIGRlbGV0ZUJ1
dHRvbnNbaV0uY2xpY2soKTsKKyAgICAgICAgfSksCisgICAgXQorfSk7CiAKLSAgICAgICAgICAg
ICAgICB2YXIga2V5ZG93bkV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7Ci0g
ICAgICAgICAgICAgICAga2V5ZG93bkV2ZW50LmluaXRFdmVudCgna2V5ZG93bicsIHRydWUsIHRy
dWUpOwotICAgICAgICAgICAgICAgIGtleWRvd25FdmVudC53aGljaCA9IDEzOyAvLyBWS19FTlRF
UgotICAgICAgICAgICAgICAgIG5ld1RvZG8uZGlzcGF0Y2hFdmVudChrZXlkb3duRXZlbnQpOwor
U3VpdGVzLnB1c2goeworICAgIG5hbWU6ICdWdWVKUy1Ub2RvTVZDJywKKyAgICB1cmw6ICd0b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvZGlzdC9pbmRleC5odG1sJywKKyAg
ICBwcmVwYXJlOiBmdW5jdGlvbiAocnVubmVyLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1l
bnQpIHsKKyAgICAgICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVudCgnLm5ldy10b2RvJyku
dGhlbihmdW5jdGlvbiAoZWxlbWVudCkgeworICAgICAgICAgICAgZWxlbWVudC5mb2N1cygpOwor
ICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgICAgIH0pOworICAgIH0sCisgICAgdGVz
dHM6IFsKKyAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdBZGRpbmcnICsgbnVtYmVyT2ZJ
dGVtc1RvQWRkICsgJ0l0ZW1zJywgZnVuY3Rpb24gKG5ld1RvZG8sIGNvbnRlbnRXaW5kb3csIGNv
bnRlbnREb2N1bWVudCkgeworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1iZXJP
Zkl0ZW1zVG9BZGQ7IGkrKykgeworICAgICAgICAgICAgICAgIG5ld1RvZG8udmFsdWUgPSAnU29t
ZXRoaW5nIHRvIGRvICcgKyBpOworICAgICAgICAgICAgICAgIG5ld1RvZG8udmFsdWUgPSAnU29t
ZXRoaW5nIHRvIGRvJyArIGk7CisgICAgICAgICAgICAgICAgbmV3VG9kby5kaXNwYXRjaEV2ZW50
KG5ldyBFdmVudCgnaW5wdXQnLCB7CisgICAgICAgICAgICAgICAgICBidWJibGVzOiB0cnVlLAor
ICAgICAgICAgICAgICAgICAgY2FuY2VsYWJsZTogdHJ1ZQorICAgICAgICAgICAgICAgIH0pKTsK
KyAgICAgICAgICAgICAgICB0cmlnZ2VyRW50ZXIobmV3VG9kbywgJ2tleXVwJyk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0pLAogICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0NvbXBs
ZXRpbmdBbGxJdGVtcycsIGZ1bmN0aW9uIChuZXdUb2RvLCBjb250ZW50V2luZG93LCBjb250ZW50
RG9jdW1lbnQpIHsKQEAgLTIyNCwyNSArMzI1LDE5IEBAIFN1aXRlcy5wdXNoKHsKIH0pOwogCiBT
dWl0ZXMucHVzaCh7Ci0gICAgbmFtZTogJ0ZsaWdodEpTLVRvZG9NVkMnLAotICAgIHVybDogJ3Rv
ZG9tdmMvZGVwZW5kZW5jeS1leGFtcGxlcy9mbGlnaHQvaW5kZXguaHRtbCcsCisgICAgbmFtZTog
J2pRdWVyeS1Ub2RvTVZDJywKKyAgICB1cmw6ICd0b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9qcXVlcnkvaW5kZXguaHRtbCcsCiAgICAgcHJlcGFyZTogZnVuY3Rpb24gKHJ1bm5lciwgY29u
dGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7Ci0gICAgICAgIHJldHVybiBydW5uZXIud2Fp
dEZvckVsZW1lbnQoJyNhcHBJc1JlYWR5JykudGhlbihmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAg
ICB2YXIgbmV3VG9kbyA9IGNvbnRlbnREb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjbmV3LXRvZG8n
KTsKLSAgICAgICAgICAgIG5ld1RvZG8uZm9jdXMoKTsKLSAgICAgICAgICAgIHJldHVybiBuZXdU
b2RvOwotICAgICAgICB9KTs7CisgICAgICAgIHJldHVybiBydW5uZXIud2FpdEZvckVsZW1lbnQo
JyNuZXctdG9kbycpLnRoZW4oZnVuY3Rpb24gKGVsZW1lbnQpIHsKKyAgICAgICAgICAgIGVsZW1l
bnQuZm9jdXMoKTsKKyAgICAgICAgICAgIHJldHVybiBlbGVtZW50OworICAgICAgICB9KTsKICAg
ICB9LAogICAgIHRlc3RzOiBbCiAgICAgICAgIG5ldyBCZW5jaG1hcmtUZXN0U3RlcCgnQWRkaW5n
JyArIG51bWJlck9mSXRlbXNUb0FkZCArICdJdGVtcycsIGZ1bmN0aW9uIChuZXdUb2RvLCBjb250
ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKLSAgICAgICAgICAgIHZhciB0b2RvbXZjID0g
Y29udGVudFdpbmRvdy50b2RvbXZjOwogICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBu
dW1iZXJPZkl0ZW1zVG9BZGQ7IGkrKykgewogICAgICAgICAgICAgICAgIG5ld1RvZG8udmFsdWUg
PSAnU29tZXRoaW5nIHRvIGRvICcgKyBpOwotCi0gICAgICAgICAgICAgICAgdmFyIGtleWRvd25F
dmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdFdmVudCcpOwotICAgICAgICAgICAgICAgIGtl
eWRvd25FdmVudC5pbml0RXZlbnQoJ2tleWRvd24nLCB0cnVlLCB0cnVlKTsKLSAgICAgICAgICAg
ICAgICBrZXlkb3duRXZlbnQud2hpY2ggPSAxMzsgLy8gVktfRU5URVIKLSAgICAgICAgICAgICAg
ICBuZXdUb2RvLmRpc3BhdGNoRXZlbnQoa2V5ZG93bkV2ZW50KTsKKyAgICAgICAgICAgICAgICB0
cmlnZ2VyRW50ZXIobmV3VG9kbywgJ2tleXVwJyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0p
LAogICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0NvbXBsZXRpbmdBbGxJdGVtcycsIGZ1
bmN0aW9uIChuZXdUb2RvLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKQEAgLTI1
Niw2ICszNTEsMTMwIEBAIFN1aXRlcy5wdXNoKHsKICAgICAgICAgICAgICAgICBkZWxldGVCdXR0
b25zW2ldLmNsaWNrKCk7CiAgICAgICAgIH0pLAogICAgIF0KK30pCisKK1N1aXRlcy5wdXNoKHsK
KyAgICBuYW1lOiAnUHJlYWN0LVRvZG9NVkMnLAorICAgIHVybDogJ3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL3ByZWFjdC9kaXN0L2luZGV4Lmh0bWwnLAorICAgIHByZXBhcmU6IGZ1bmN0
aW9uIChydW5uZXIsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgeworICAgICAgICBy
ZXR1cm4gcnVubmVyLndhaXRGb3JFbGVtZW50KCcubmV3LXRvZG8nKS50aGVuKGZ1bmN0aW9uIChl
bGVtZW50KSB7CisgICAgICAgICAgICBlbGVtZW50LmZvY3VzKCk7CisgICAgICAgICAgICByZXR1
cm4gZWxlbWVudDsKKyAgICAgICAgfSk7CisgICAgfSwKKyAgICB0ZXN0czogWworICAgICAgICBu
ZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0FkZGluZycgKyBudW1iZXJPZkl0ZW1zVG9BZGQgKyAnSXRl
bXMnLCBmdW5jdGlvbiAobmV3VG9kbywgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7
CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bWJlck9mSXRlbXNUb0FkZDsgaSsr
KSB7CisgICAgICAgICAgICAgICAgbmV3VG9kby52YWx1ZSA9ICdTb21ldGhpbmcgdG8gZG8nICsg
aTsKKyAgICAgICAgICAgICAgICB0cmlnZ2VyRW50ZXIobmV3VG9kbywgJ2tleWRvd24nKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfSksCisgICAgICAgIG5ldyBCZW5jaG1hcmtUZXN0U3RlcCgn
Q29tcGxldGluZ0FsbEl0ZW1zJywgZnVuY3Rpb24gKHBhcmFtcywgY29udGVudFdpbmRvdywgY29u
dGVudERvY3VtZW50KSB7CisgICAgICAgICAgICB2YXIgY2hlY2tib3hlcyA9IGNvbnRlbnREb2N1
bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudG9nZ2xlJyk7CisgICAgICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGNoZWNrYm94ZXMubGVuZ3RoOyBpKyspCisgICAgICAgICAgICAgICAgY2hlY2ti
b3hlc1tpXS5jbGljaygpOworICAgICAgICB9KSwKKyAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RT
dGVwKCdEZWxldGluZ0l0ZW1zJywgZnVuY3Rpb24gKHBhcmFtcywgY29udGVudFdpbmRvdywgY29u
dGVudERvY3VtZW50KSB7CisgICAgICAgICAgICB2YXIgZGVsZXRlQnV0dG9ucyA9IGNvbnRlbnRE
b2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZGVzdHJveScpOworICAgICAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBkZWxldGVCdXR0b25zLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgICAg
IGRlbGV0ZUJ1dHRvbnNbaV0uY2xpY2soKTsKKyAgICAgICAgfSksCisgICAgXQorfSk7CisKK1N1
aXRlcy5wdXNoKHsKKyAgICBuYW1lOiAnSW5mZXJuby1Ub2RvTVZDJywKKyAgICB1cmw6ICd0b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9pbmZlcm5vL2luZGV4Lmh0bWwnLAorICAgIHByZXBh
cmU6IGZ1bmN0aW9uIChydW5uZXIsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgewor
ICAgICAgICByZXR1cm4gcnVubmVyLndhaXRGb3JFbGVtZW50KCcubmV3LXRvZG8nKS50aGVuKGZ1
bmN0aW9uIChlbGVtZW50KSB7CisgICAgICAgICAgICBlbGVtZW50LmZvY3VzKCk7CisgICAgICAg
ICAgICByZXR1cm4gZWxlbWVudDsKKyAgICAgICAgfSk7CisgICAgfSwKKyAgICB0ZXN0czogWwor
ICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0FkZGluZycgKyBudW1iZXJPZkl0ZW1zVG9B
ZGQgKyAnSXRlbXMnLCBmdW5jdGlvbiAobmV3VG9kbywgY29udGVudFdpbmRvdywgY29udGVudERv
Y3VtZW50KSB7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bWJlck9mSXRlbXNU
b0FkZDsgaSsrKSB7CisgICAgICAgICAgICAgICAgbmV3VG9kby52YWx1ZSA9ICdTb21ldGhpbmcg
dG8gZG8nICsgaTsKKyAgICAgICAgICAgICAgICBuZXdUb2RvLmRpc3BhdGNoRXZlbnQobmV3IEV2
ZW50KCdjaGFuZ2UnLCB7CisgICAgICAgICAgICAgICAgICBidWJibGVzOiB0cnVlLAorICAgICAg
ICAgICAgICAgICAgY2FuY2VsYWJsZTogdHJ1ZQorICAgICAgICAgICAgICAgIH0pKTsKKyAgICAg
ICAgICAgICAgICB0cmlnZ2VyRW50ZXIobmV3VG9kbywgJ2tleWRvd24nKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfSksCisgICAgICAgIG5ldyBCZW5jaG1hcmtUZXN0U3RlcCgnQ29tcGxldGlu
Z0FsbEl0ZW1zJywgZnVuY3Rpb24gKHBhcmFtcywgY29udGVudFdpbmRvdywgY29udGVudERvY3Vt
ZW50KSB7CisgICAgICAgICAgICB2YXIgY2hlY2tib3hlcyA9IGNvbnRlbnREb2N1bWVudC5xdWVy
eVNlbGVjdG9yQWxsKCcudG9nZ2xlJyk7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGNoZWNrYm94ZXMubGVuZ3RoOyBpKyspCisgICAgICAgICAgICAgICAgY2hlY2tib3hlc1tpXS5j
bGljaygpOworICAgICAgICB9KSwKKyAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdEZWxl
dGluZ0l0ZW1zJywgZnVuY3Rpb24gKHBhcmFtcywgY29udGVudFdpbmRvdywgY29udGVudERvY3Vt
ZW50KSB7CisgICAgICAgICAgICB2YXIgZGVsZXRlQnV0dG9ucyA9IGNvbnRlbnREb2N1bWVudC5x
dWVyeVNlbGVjdG9yQWxsKCcuZGVzdHJveScpOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBkZWxldGVCdXR0b25zLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgICAgIGRlbGV0ZUJ1
dHRvbnNbaV0uY2xpY2soKTsKKyAgICAgICAgfSksCisgICAgXQorfSk7CisKK1N1aXRlcy5wdXNo
KHsKKyAgICBuYW1lOiAnRWxtLVRvZG9NVkMnLAorICAgIHVybDogJ3RvZG9tdmMvZnVuY3Rpb25h
bC1wcm9nLWV4YW1wbGVzL2VsbS9pbmRleC5odG1sJywKKyAgICBwcmVwYXJlOiBmdW5jdGlvbiAo
cnVubmVyLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgcmV0dXJu
IHJ1bm5lci53YWl0Rm9yRWxlbWVudCgnLm5ldy10b2RvJykudGhlbihmdW5jdGlvbiAoZWxlbWVu
dCkgeworICAgICAgICAgICAgZWxlbWVudC5mb2N1cygpOworICAgICAgICAgICAgcmV0dXJuIGVs
ZW1lbnQ7CisgICAgICAgIH0pOworICAgIH0sCisgICAgdGVzdHM6IFsKKyAgICAgICAgbmV3IEJl
bmNobWFya1Rlc3RTdGVwKCdBZGRpbmcnICsgbnVtYmVyT2ZJdGVtc1RvQWRkICsgJ0l0ZW1zJywg
ZnVuY3Rpb24gKG5ld1RvZG8sIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgeworICAg
ICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1iZXJPZkl0ZW1zVG9BZGQ7IGkrKykgewor
ICAgICAgICAgICAgICAgIG5ld1RvZG8udmFsdWUgPSAnU29tZXRoaW5nIHRvIGRvJyArIGk7Cisg
ICAgICAgICAgICAgICAgbmV3VG9kby5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnaW5wdXQnLCB7
CisgICAgICAgICAgICAgICAgICBidWJibGVzOiB0cnVlLAorICAgICAgICAgICAgICAgICAgY2Fu
Y2VsYWJsZTogdHJ1ZQorICAgICAgICAgICAgICAgIH0pKTsKKyAgICAgICAgICAgICAgICB0cmln
Z2VyRW50ZXIobmV3VG9kbywgJ2tleWRvd24nKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSks
CisgICAgICAgIG5ldyBCZW5jaG1hcmtUZXN0U3RlcCgnQ29tcGxldGluZ0FsbEl0ZW1zJywgZnVu
Y3Rpb24gKHBhcmFtcywgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CisgICAgICAg
ICAgICB2YXIgY2hlY2tib3hlcyA9IGNvbnRlbnREb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcu
dG9nZ2xlJyk7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoZWNrYm94ZXMubGVu
Z3RoOyBpKyspCisgICAgICAgICAgICAgICAgY2hlY2tib3hlc1tpXS5jbGljaygpOworICAgICAg
ICB9KSwKKyAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdEZWxldGluZ0l0ZW1zJywgZnVu
Y3Rpb24gKHBhcmFtcywgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CisgICAgICAg
ICAgICB2YXIgZGVsZXRlQnV0dG9ucyA9IGNvbnRlbnREb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxs
KCcuZGVzdHJveScpOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkZWxldGVCdXR0
b25zLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgICAgIGRlbGV0ZUJ1dHRvbnNbaV0uY2xpY2so
KTsKKyAgICAgICAgfSksCisgICAgXQorfSk7CisKK1N1aXRlcy5wdXNoKHsKKyAgICBuYW1lOiAn
RmxpZ2h0LVRvZG9NVkMnLAorICAgIHVybDogJ3RvZG9tdmMvZGVwZW5kZW5jeS1leGFtcGxlcy9m
bGlnaHQvZmxpZ2h0L2luZGV4Lmh0bWwnLAorICAgIHByZXBhcmU6IGZ1bmN0aW9uIChydW5uZXIs
IGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgeworICAgICAgICByZXR1cm4gcnVubmVy
LndhaXRGb3JFbGVtZW50KCcjbmV3LXRvZG8nKS50aGVuKGZ1bmN0aW9uIChlbGVtZW50KSB7Cisg
ICAgICAgICAgICBlbGVtZW50LmZvY3VzKCk7CisgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsK
KyAgICAgICAgfSk7CisgICAgfSwKKyAgICB0ZXN0czogWworICAgICAgICBuZXcgQmVuY2htYXJr
VGVzdFN0ZXAoJ0FkZGluZycgKyBudW1iZXJPZkl0ZW1zVG9BZGQgKyAnSXRlbXMnLCBmdW5jdGlv
biAobmV3VG9kbywgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CisgICAgICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IG51bWJlck9mSXRlbXNUb0FkZDsgaSsrKSB7CisgICAgICAg
ICAgICAgICAgbmV3VG9kby52YWx1ZSA9ICdTb21ldGhpbmcgdG8gZG8nICsgaTsKKyAgICAgICAg
ICAgICAgICB0cmlnZ2VyRW50ZXIobmV3VG9kbywgJ2tleWRvd24nKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfSksCisgICAgICAgIG5ldyBCZW5jaG1hcmtUZXN0U3RlcCgnQ29tcGxldGluZ0Fs
bEl0ZW1zJywgZnVuY3Rpb24gKHBhcmFtcywgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50
KSB7CisgICAgICAgICAgICB2YXIgY2hlY2tib3hlcyA9IGNvbnRlbnREb2N1bWVudC5xdWVyeVNl
bGVjdG9yQWxsKCcudG9nZ2xlJyk7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNo
ZWNrYm94ZXMubGVuZ3RoOyBpKyspCisgICAgICAgICAgICAgICAgY2hlY2tib3hlc1tpXS5jbGlj
aygpOworICAgICAgICB9KSwKKyAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdEZWxldGlu
Z0l0ZW1zJywgZnVuY3Rpb24gKHBhcmFtcywgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50
KSB7CisgICAgICAgICAgICB2YXIgZGVsZXRlQnV0dG9ucyA9IGNvbnRlbnREb2N1bWVudC5xdWVy
eVNlbGVjdG9yQWxsKCcuZGVzdHJveScpOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBkZWxldGVCdXR0b25zLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgICAgIGRlbGV0ZUJ1dHRv
bnNbaV0uY2xpY2soKTsKKyAgICAgICAgfSksCisgICAgXQogfSk7CiAKIHZhciBhY3Rpb25Db3Vu
dCA9IDUwOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9kaXN0L2luZGV4Lmh0bWwg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9hbmd1bGFyL2Rpc3QvaW5kZXguaHRtbAppbmRleCA3NmJkYzg2Y2Y4ZGQ0
ZDVlYTA0ODk1MWM4MjFiNGNhMWQ2ZmVkZTdkLi4zYTFhOWUyODdkNmNhMGNmNmMxODlmMmZhOTc5
MjU5OGE2OGZkMzJlIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL2Rpc3QvaW5kZXgu
aHRtbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL2Rpc3QvaW5kZXguaHRtbApAQCAtOSw3ICs5
LDcgQEAKICAgPGxpbmsgcmVsPSJpY29uIiB0eXBlPSJpbWFnZS94LWljb24iIGhyZWY9ImZhdmlj
b24uaWNvIj4KICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJhc3NldHMvY3NzL3RvZG9t
dmMtY29tbW9uLmNzcyI+CiAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iYXNzZXRzL2Nz
cy90b2RvbXZjLWFwcC5jc3MiPgotPGxpbmsgaHJlZj0ic3R5bGVzLmQ0MWQ4Y2Q5OGYwMGIyMDRl
OTgwLmJ1bmRsZS5jc3MiIHJlbD0ic3R5bGVzaGVldCIvPjwvaGVhZD4KKzwvaGVhZD4KIDxib2R5
PgogICA8YXBwLXJvb3Q+TG9hZGluZy4uLjwvYXBwLXJvb3Q+CiAgIDwhLS0gQ3JlZGl0czogQWRk
eSBPc21hbmkgLS0+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL2Fzc2V0cy90b2Rv
bXZjLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9hc3NldHMvdG9kb212Yy5qcwppbmRleCA2MTlh
MDA0YjBmY2ZkZjgyNzUzZDI0NTBiOGJmYzFiYWJhNjVlYWE2Li43ZDRkZmIzNmM3MWFkNDZlMGVk
NGIxZDRhNTJkN2ZlN2ViNjJlMDA0IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL2Fz
c2V0cy90b2RvbXZjLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvYXNzZXRzL3RvZG9tdmMu
anMKQEAgLTM2MywxOSArMzYzLDE1IEBAIGRlZmluZSgndG9kb212Yy9zZXJ2aWNlcy9tZW1vcnkn
LCBbJ2V4cG9ydHMnXSwgZnVuY3Rpb24gKGV4cG9ydHMpIHsKICAgICAgIGxvY2FsU3RvcmFnZU1l
bW9yeS5sZW5ndGggPSAwOwogICAgIH07CiAKLSAgICBpZiAodHlwZW9mIGV4cG9ydHMgPT09ICdv
YmplY3QnKSB7Ci0gICAgICBtb2R1bGUuZXhwb3J0cyA9IGxvY2FsU3RvcmFnZU1lbW9yeTsKLSAg
ICB9IGVsc2UgewotICAgICAgcm9vdC5sb2NhbFN0b3JhZ2VNZW1vcnkgPSBsb2NhbFN0b3JhZ2VN
ZW1vcnk7Ci0gICAgfQotICB9KSh0aGlzKTsKKyAgICByb290LmxvY2FsU3RvcmFnZU1lbW9yeSA9
IGxvY2FsU3RvcmFnZU1lbW9yeTsKKyAgfSkod2luZG93KTsKIH0pOwogZGVmaW5lKCd0b2RvbXZj
L3NlcnZpY2VzL3JlcG8nLCBbJ2V4cG9ydHMnLCAnZW1iZXInLCAndG9kb212Yy9zZXJ2aWNlcy9t
ZW1vcnknXSwgZnVuY3Rpb24gKGV4cG9ydHMsIF9lbWJlciwgX3RvZG9tdmNTZXJ2aWNlc01lbW9y
eSkgewogICAgIGV4cG9ydHNbJ2RlZmF1bHQnXSA9IF9lbWJlclsnZGVmYXVsdCddLlNlcnZpY2Uu
ZXh0ZW5kKHsKICAgICAgICAgbGFzdElkOiAwLAogICAgICAgICBkYXRhOiBudWxsLAogICAgICAg
ICBmaW5kQWxsOiBmdW5jdGlvbiBmaW5kQWxsKCkgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMu
Z2V0KCdkYXRhJykgfHwgdGhpcy5zZXQoJ2RhdGEnLCBKU09OLnBhcnNlKF90b2RvbXZjU2Vydmlj
ZXNNZW1vcnkuZ2V0SXRlbSgndG9kb3MnKSB8fCAnW10nKSk7CisgICAgICAgICAgICByZXR1cm4g
dGhpcy5nZXQoJ2RhdGEnKSB8fCB0aGlzLnNldCgnZGF0YScsIEpTT04ucGFyc2Uod2luZG93Lmxv
Y2FsU3RvcmFnZU1lbW9yeS5nZXRJdGVtKCd0b2RvcycpIHx8ICdbXScpKTsKICAgICAgICAgfSwK
IAogICAgICAgICBhZGQ6IGZ1bmN0aW9uIGFkZChhdHRycykgewpAQCAtMzkxLDcgKzM4Nyw3IEBA
IGRlZmluZSgndG9kb212Yy9zZXJ2aWNlcy9yZXBvJywgWydleHBvcnRzJywgJ2VtYmVyJywgJ3Rv
ZG9tdmMvc2VydmljZXMvbWVtb3J5J10sCiAgICAgICAgIH0sCiAKICAgICAgICAgcGVyc2lzdDog
ZnVuY3Rpb24gcGVyc2lzdCgpIHsKLSAgICAgICAgICAgIF90b2RvbXZjU2VydmljZXNNZW1vcnku
c2V0SXRlbSgndG9kb3MnLCBKU09OLnN0cmluZ2lmeSh0aGlzLmdldCgnZGF0YScpKSk7CisgICAg
ICAgICAgICB3aW5kb3cubG9jYWxTdG9yYWdlTWVtb3J5LnNldEl0ZW0oJ3RvZG9zJywgSlNPTi5z
dHJpbmdpZnkodGhpcy5nZXQoJ2RhdGEnKSkpOwogICAgICAgICB9CiAgICAgfSk7CiB9KTsKQEAg
LTEyNTcsNyArMTI1Myw3IEBAIGNhdGNoKGVycikgewogLyoganNoaW50IGlnbm9yZTpzdGFydCAq
LwogCiBpZiAoIXJ1bm5pbmdUZXN0cykgewotICByZXF1aXJlKCJ0b2RvbXZjL2FwcCIpWyJkZWZh
dWx0Il0uY3JlYXRlKHsibmFtZSI6InRvZG9tdmMiLCJ2ZXJzaW9uIjoiMC4wLjArNWRiYzVmYjki
fSk7CisgIHJlcXVpcmUoInRvZG9tdmMvYXBwIilbImRlZmF1bHQiXS5jcmVhdGUoeyJuYW1lIjoi
dG9kb212YyIsInZlcnNpb24iOiIwLjAuMCsifSk7CiB9CiAKIC8qIGpzaGludCBpZ25vcmU6ZW5k
ICovCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL2luZGV4Lmh0bWwgYi9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9lbWJlcmpzL2luZGV4Lmh0bWwKaW5kZXggN2U0OGMxOTkyN2Q1MWNlNDhlODMxYTdlZTVm
MDE0M2Y2NjY1MDY0YS4uNzgxZWE2M2EyZTZjMGQ3ZDkzYjViYjNkNDU3NmFjYjBjODMyOTE4MyAx
MDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9pbmRleC5odG1sCisrKyBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2VtYmVyanMvaW5kZXguaHRtbApAQCAtNiwyMSArNiwyMCBAQAogICAgIDx0aXRsZT5Ub2Rv
bXZjPC90aXRsZT4KICAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iIj4KICAg
ICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0
aWFsLXNjYWxlPTEiPgotICAgIDxiYXNlIGhyZWY9Ii9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzIiAvPgor
ICAgIDxiYXNlIGhyZWY9Ii9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvZW1iZXJqcy8iIC8+CiAgICAgCi08bWV0YSBuYW1lPSJ0b2RvbXZjL2NvbmZp
Zy9lbnZpcm9ubWVudCIgY29udGVudD0iJTdCJTIybW9kdWxlUHJlZml4JTIyJTNBJTIydG9kb212
YyUyMiUyQyUyMmVudmlyb25tZW50JTIyJTNBJTIyZGV2ZWxvcG1lbnQlMjIlMkMlMjJiYXNlVVJM
JTIyJTNBbnVsbCUyQyUyMmxvY2F0aW9uVHlwZSUyMiUzQSUyMmF1dG8lMjIlMkMlMjJFbWJlckVO
ViUyMiUzQSU3QiUyMkZFQVRVUkVTJTIyJTNBJTdCJTdEJTdEJTJDJTIyQVBQJTIyJTNBJTdCJTIy
bmFtZSUyMiUzQSUyMnRvZG9tdmMlMjIlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyMC4wLjArNWRiYzVm
YjklMjIlN0QlMkMlMjJleHBvcnRBcHBsaWNhdGlvbkdsb2JhbCUyMiUzQXRydWUlN0QiIC8+Cis8
bWV0YSBuYW1lPSJ0b2RvbXZjL2NvbmZpZy9lbnZpcm9ubWVudCIgY29udGVudD0iJTdCJTIybW9k
dWxlUHJlZml4JTIyJTNBJTIydG9kb212YyUyMiUyQyUyMmVudmlyb25tZW50JTIyJTNBJTIyZGV2
ZWxvcG1lbnQlMjIlMkMlMjJiYXNlVVJMJTIyJTNBbnVsbCUyQyUyMmxvY2F0aW9uVHlwZSUyMiUz
QSUyMmF1dG8lMjIlMkMlMjJFbWJlckVOViUyMiUzQSU3QiUyMkZFQVRVUkVTJTIyJTNBJTdCJTdE
JTdEJTJDJTIyQVBQJTIyJTNBJTdCJTIybmFtZSUyMiUzQSUyMnRvZG9tdmMlMjIlMkMlMjJ2ZXJz
aW9uJTIyJTNBJTIyMC4wLjArJTIyJTdEJTJDJTIyZXhwb3J0QXBwbGljYXRpb25HbG9iYWwlMjIl
M0F0cnVlJTdEIiAvPgogCi0gICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvZW1iZXJqcy9hc3NldHMvdmVuZG9yLmNzcyI+Ci0gICAgPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9hc3NldHMvdG9kb212Yy5jc3MiPgorICAg
IDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iYXNzZXRzL3ZlbmRvci5jc3MiPgogCiAgICAg
CiAgIDwvaGVhZD4KICAgPGJvZHk+CiAgICAgCiAKLSAgICA8c2NyaXB0IHNyYz0iL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2VtYmVyanMvYXNzZXRzL3ZlbmRvci5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9
Ii9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9lbWJlcmpzL2Fzc2V0cy90b2RvbXZjLmpzIj48L3NjcmlwdD4KKyAgICA8
c2NyaXB0IHNyYz0iYXNzZXRzL3ZlbmRvci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9
ImFzc2V0cy90b2RvbXZjLmpzIj48L3NjcmlwdD4KIAogICAgIAogICA8L2JvZHk+Ci08L2h0bWw+
Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvZW1iZXJqcy9zb3VyY2UvYXBwL3NlcnZpY2VzL21lbW9yeS5qcyBiL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2VtYmVyanMvc291cmNlL2FwcC9zZXJ2aWNlcy9tZW1vcnkuanMKaW5kZXggNGI5ZDVhZjlkNmQx
ZDhkNTljMGNkYjI2ODhiZmVjMmFkYTgyZjNjMi4uNzRjNWNkZjE5ZmQ5ZmRiMjZhOTBmMDlhMzAx
ZDQzZGJkMzUyN2Q2MSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvYXBw
L3NlcnZpY2VzL21lbW9yeS5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS9hcHAv
c2VydmljZXMvbWVtb3J5LmpzCkBAIC03NCw5ICs3NCw1IEBACiAgICAgbG9jYWxTdG9yYWdlTWVt
b3J5Lmxlbmd0aCA9IDA7CiAgIH07CiAKLSAgaWYgKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0
JykgewotICAgIG1vZHVsZS5leHBvcnRzID0gbG9jYWxTdG9yYWdlTWVtb3J5OwotICB9IGVsc2Ug
ewogICAgIHJvb3QubG9jYWxTdG9yYWdlTWVtb3J5ID0gbG9jYWxTdG9yYWdlTWVtb3J5OwotICB9
Ci19KSh0aGlzKTsKK30pKHdpbmRvdyk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpz
L3NvdXJjZS9hcHAvc2VydmljZXMvcmVwby5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNl
L2FwcC9zZXJ2aWNlcy9yZXBvLmpzCmluZGV4IDAxNDdmZjNlZmM3ZThhYWVmMjdiNzEwMDUwNWMw
MWFkMTFmOWFjZDEuLmNmZmEzODU4ZmQ3N2JiYmE1YzQzNWVhNWM5Yzg4OThhZDE3NzNiOGEgMTAw
NjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNlL2FwcC9zZXJ2aWNlcy9yZXBvLmpz
CisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNlL2FwcC9zZXJ2aWNlcy9yZXBvLmpzCkBA
IC0xLDEyICsxLDEyIEBACiBpbXBvcnQgRW1iZXIgZnJvbSAnZW1iZXInOwotaW1wb3J0ICogYXMg
bG9jYWxTdG9yYWdlTWVtb3J5IGZyb20gJy4vbWVtb3J5JzsKK2ltcG9ydCBsb2NhbFN0b3JhZ2VN
ZW1vcnkgZnJvbSAnLi9tZW1vcnknOwogCiBleHBvcnQgZGVmYXVsdCBFbWJlci5TZXJ2aWNlLmV4
dGVuZCh7CiAgICAgbGFzdElkOiAwLAogICAgIGRhdGE6IG51bGwsCiAgICAgZmluZEFsbCgpIHsK
ICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KCdkYXRhJykgfHwKLSAgICAgICAgICAgIHRoaXMuc2V0
KCdkYXRhJywgSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2VNZW1vcnkuZ2V0SXRlbSgndG9kb3MnKSB8
fCAnW10nKSk7CisgICAgICAgICAgICB0aGlzLnNldCgnZGF0YScsIEpTT04ucGFyc2Uod2luZG93
LmxvY2FsU3RvcmFnZU1lbW9yeS5nZXRJdGVtKCd0b2RvcycpIHx8ICdbXScpKTsKICAgICB9LAog
CiAgICAgYWRkKGF0dHJzKSB7CkBAIC0yMiw2ICsyMiw2IEBAIGV4cG9ydCBkZWZhdWx0IEVtYmVy
LlNlcnZpY2UuZXh0ZW5kKHsKICAgICB9LAogCiAgICAgcGVyc2lzdCgpIHsKLSAgICAgICAgbG9j
YWxTdG9yYWdlTWVtb3J5LnNldEl0ZW0oJ3RvZG9zJywgSlNPTi5zdHJpbmdpZnkodGhpcy5nZXQo
J2RhdGEnKSkpOworICAgICAgICB3aW5kb3cubG9jYWxTdG9yYWdlTWVtb3J5LnNldEl0ZW0oJ3Rv
ZG9zJywgSlNPTi5zdHJpbmdpZnkodGhpcy5nZXQoJ2RhdGEnKSkpOwogICAgIH0KIH0pOwpkaWZm
IC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy90ZXN0cy9pbmRleC5odG1sIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvZW1iZXJqcy90ZXN0cy9pbmRleC5odG1sCmluZGV4IGUyYTI3YzE0OWI2ZGUwN2M2OTMzMTA5
ODQyNWZkZDhkNWQ3YTJhMGUuLjJhYjIxOGU3YTk1NDNlZjIwYWNkNGEzZTc2ZWU1YTU3MDYzNjM1
MTMgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvdGVzdHMvaW5kZXguaHRtbAorKysg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9lbWJlcmpzL3Rlc3RzL2luZGV4Lmh0bWwKQEAgLTgsNyArOCw3IEBACiAg
ICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5p
dGlhbC1zY2FsZT0xIj4KIAogICAgIDxiYXNlIGhyZWY9Ii8iIC8+Ci08bWV0YSBuYW1lPSJ0b2Rv
bXZjL2NvbmZpZy9lbnZpcm9ubWVudCIgY29udGVudD0iJTdCJTIybW9kdWxlUHJlZml4JTIyJTNB
JTIydG9kb212YyUyMiUyQyUyMmVudmlyb25tZW50JTIyJTNBJTIydGVzdCUyMiUyQyUyMmJhc2VV
UkwlMjIlM0ElMjIvJTIyJTJDJTIybG9jYXRpb25UeXBlJTIyJTNBJTIybm9uZSUyMiUyQyUyMkVt
YmVyRU5WJTIyJTNBJTdCJTIyRkVBVFVSRVMlMjIlM0ElN0IlN0QlN0QlMkMlMjJBUFAlMjIlM0El
N0IlMjJMT0dfQUNUSVZFX0dFTkVSQVRJT04lMjIlM0FmYWxzZSUyQyUyMkxPR19WSUVXX0xPT0tV
UFMlMjIlM0FmYWxzZSUyQyUyMnJvb3RFbGVtZW50JTIyJTNBJTIyJTIzZW1iZXItdGVzdGluZyUy
MiUyQyUyMm5hbWUlMjIlM0ElMjJ0b2RvbXZjJTIyJTJDJTIydmVyc2lvbiUyMiUzQSUyMjAuMC4w
KzVkYmM1ZmI5JTIyJTdEJTJDJTIyZXhwb3J0QXBwbGljYXRpb25HbG9iYWwlMjIlM0F0cnVlJTdE
IiAvPgorPG1ldGEgbmFtZT0idG9kb212Yy9jb25maWcvZW52aXJvbm1lbnQiIGNvbnRlbnQ9IiU3
QiUyMm1vZHVsZVByZWZpeCUyMiUzQSUyMnRvZG9tdmMlMjIlMkMlMjJlbnZpcm9ubWVudCUyMiUz
QSUyMnRlc3QlMjIlMkMlMjJiYXNlVVJMJTIyJTNBJTIyLyUyMiUyQyUyMmxvY2F0aW9uVHlwZSUy
MiUzQSUyMm5vbmUlMjIlMkMlMjJFbWJlckVOViUyMiUzQSU3QiUyMkZFQVRVUkVTJTIyJTNBJTdC
JTdEJTdEJTJDJTIyQVBQJTIyJTNBJTdCJTIyTE9HX0FDVElWRV9HRU5FUkFUSU9OJTIyJTNBZmFs
c2UlMkMlMjJMT0dfVklFV19MT09LVVBTJTIyJTNBZmFsc2UlMkMlMjJyb290RWxlbWVudCUyMiUz
QSUyMiUyM2VtYmVyLXRlc3RpbmclMjIlMkMlMjJuYW1lJTIyJTNBJTIydG9kb212YyUyMiUyQyUy
MnZlcnNpb24lMjIlM0ElMjIwLjAuMCslMjIlN0QlMkMlMjJleHBvcnRBcHBsaWNhdGlvbkdsb2Jh
bCUyMiUzQXRydWUlN0QiIC8+CiAgICAgCiAKICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9ImFzc2V0cy92ZW5kb3IuY3NzIj4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9p
bmRleC5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L2luZGV4Lmh0bWwKaW5kZXggNDE0YWM1OGY2
MWFiYzJiNzIyZGI1M2ZlZWNlN2UwM2U1MmZkMzM0NC4uMWNmODAzZTE0MmExMzBlNGNjZmYxY2Fi
YjgxMjdjNDdjNzA2ZDBlYyAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L2luZGV4Lmh0
bWwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L2luZGV4Lmh0bWwKQEAgLTU1LDcgKzU1LDcgQEAK
ICAgICAgICAgPCEtLSA8c2NyaXB0IHNyYz0ibm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jh
c2UuanMiPjwvc2NyaXB0PiAtLT4KICAgICAgICAgPHNjcmlwdCBzcmM9Im5vZGVfbW9kdWxlcy9q
cXVlcnkvZGlzdC9qcXVlcnkuanMiPjwvc2NyaXB0PgogICAgICAgICA8c2NyaXB0IHNyYz0ibm9k
ZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9oYW5kbGViYXJzLmpzIj48L3NjcmlwdD4KLSAgICAg
ICAgPHNjcmlwdCBzcmM9Im5vZGVfbW9kdWxlcy9kaXJlY3Rvci9idWlsZC9kaXJlY3Rvci5qcyI+
PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSJub2RlX21vZHVsZXMvZGlyZWN0b3IvZGlz
dC9kaXJlY3Rvci5qcyI+PC9zY3JpcHQ+CiAgICAgICAgIDxzY3JpcHQgc3JjPSJqcy9hcHAuanMi
Pjwvc2NyaXB0PgogICAgIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvTElDRU5TRSBiL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVy
eS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvTElDRU5TRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YTQ5ODEwODUwMTlm
OTE3YzEyMzc2OWEwYzI3Y2Q4NzBlMzVhNzg0Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9MSUNFTlNFCkBAIC0wLDAgKzEsMTkgQEAK
K0NvcHlyaWdodCAoYykgMjAxMSBDaGFybGllIFJvYmJpbnMsIFBhb2xvIEZyYWdvbWVuaSwgJiB0
aGUgQ29udHJpYnV0b3JzLgorCitQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9m
IGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CitvZiB0aGlzIHNvZnR3YXJl
IGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8g
ZGVhbAoraW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRo
b3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwordG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBw
dWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAorY29waWVzIG9mIHRo
ZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlz
CitmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
OgorCitUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGlj
ZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9u
cyBvZiB0aGUgU29mdHdhcmUuCisKK1RIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBX
SVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCitJTVBMSUVELCBJTkNMVURJ
TkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwK
K0ZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRQorQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFC
TEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorTElBQklMSVRZLCBXSEVUSEVSIElO
IEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwK
K09VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1Ig
T1RIRVIgREVBTElOR1MgSU4KK1RIRSBTT0ZUV0FSRS4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvYm93ZXIuanNvbiBiL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2px
dWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvYm93ZXIuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOTM5YmI0
NzBlZDY0ZGIxMTFhYWE4YzYzM2QyMzJmYTllYmZjZjA0Ci0tLSAvZGV2L251bGwKKysrIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9ib3dlci5qc29uCkBAIC0wLDAg
KzEsOSBAQAoreworICAibmFtZSI6ICJkaXJlY3RvciIsCisgICJ2ZXJzaW9uIjogIjEuMi43IiwK
KyAgImRlcGVuZGVuY2llcyI6IHt9LAorICAibWFpbiI6ICJidWlsZC9kaXJlY3Rvci5qcyIsCisg
ICJzY3JpcHRzIjogWworICAgICJidWlsZC9kaXJlY3Rvci5qcyIKKyAgXQorfQpkaWZmIC0tZ2l0
IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9kaXN0L2RpcmVjdG9y
LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9kaXN0L2RpcmVj
dG9yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjEwMzg4Nzg3MjM1YjcxYzBmNWNiOTY3ZTc5NWMyYzY2OWE1NmYz
NjkKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2Rp
cmVjdG9yL2Rpc3QvZGlyZWN0b3IuanMKQEAgLTAsMCArMSw3MjUgQEAKKworCisvLworLy8gR2Vu
ZXJhdGVkIG9uIFR1ZSBEZWMgMTYgMjAxNCAxMjoxMzo0NyBHTVQrMDEwMCAoQ0VUKSBieSBDaGFy
bGllIFJvYmJpbnMsIFBhb2xvIEZyYWdvbWVuaSAmIHRoZSBDb250cmlidXRvcnMgKFVzaW5nIENv
ZGVzdXJnZW9uKS4KKy8vIFZlcnNpb24gMS4yLjYKKy8vCisKKyhmdW5jdGlvbiAoZXhwb3J0cykg
eworCisvKgorICogYnJvd3Nlci5qczogQnJvd3NlciBzcGVjaWZpYyBmdW5jdGlvbmFsaXR5IGZv
ciBkaXJlY3Rvci4KKyAqCisgKiAoQykgMjAxMSwgQ2hhcmxpZSBSb2JiaW5zLCBQYW9sbyBGcmFn
b21lbmksICYgdGhlIENvbnRyaWJ1dG9ycy4KKyAqIE1JVCBMSUNFTlNFCisgKgorICovCisKK3Zh
ciBkbG9jID0gZG9jdW1lbnQubG9jYXRpb247CisKK2Z1bmN0aW9uIGRsb2NIYXNoRW1wdHkoKSB7
CisgIC8vIE5vbi1JRSBicm93c2VycyByZXR1cm4gJycgd2hlbiB0aGUgYWRkcmVzcyBiYXIgc2hv
d3MgJyMnOyBEaXJlY3RvcidzIGxvZ2ljCisgIC8vIGFzc3VtZXMgYm90aCBtZWFuIGVtcHR5Lgor
ICByZXR1cm4gZGxvYy5oYXNoID09PSAnJyB8fCBkbG9jLmhhc2ggPT09ICcjJzsKK30KKwordmFy
IGxpc3RlbmVyID0geworICBtb2RlOiAnbW9kZXJuJywKKyAgaGFzaDogZGxvYy5oYXNoLAorICBo
aXN0b3J5OiBmYWxzZSwKKworICBjaGVjazogZnVuY3Rpb24gKCkgeworICAgIHZhciBoID0gZGxv
Yy5oYXNoOworICAgIGlmIChoICE9IHRoaXMuaGFzaCkgeworICAgICAgdGhpcy5oYXNoID0gaDsK
KyAgICAgIHRoaXMub25IYXNoQ2hhbmdlZCgpOworICAgIH0KKyAgfSwKKworICBmaXJlOiBmdW5j
dGlvbiAoKSB7CisgICAgaWYgKHRoaXMubW9kZSA9PT0gJ21vZGVybicpIHsKKyAgICAgIHRoaXMu
aGlzdG9yeSA9PT0gdHJ1ZSA/IHdpbmRvdy5vbnBvcHN0YXRlKCkgOiB3aW5kb3cub25oYXNoY2hh
bmdlKCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgdGhpcy5vbkhhc2hDaGFuZ2VkKCk7Cisg
ICAgfQorICB9LAorCisgIGluaXQ6IGZ1bmN0aW9uIChmbiwgaGlzdG9yeSkgeworICAgIHZhciBz
ZWxmID0gdGhpczsKKyAgICB0aGlzLmhpc3RvcnkgPSBoaXN0b3J5OworCisgICAgaWYgKCFSb3V0
ZXIubGlzdGVuZXJzKSB7CisgICAgICBSb3V0ZXIubGlzdGVuZXJzID0gW107CisgICAgfQorCisg
ICAgZnVuY3Rpb24gb25jaGFuZ2Uob25DaGFuZ2VFdmVudCkgeworICAgICAgZm9yICh2YXIgaSA9
IDAsIGwgPSBSb3V0ZXIubGlzdGVuZXJzLmxlbmd0aDsgaSA8IGw7IGkrKykgeworICAgICAgICBS
b3V0ZXIubGlzdGVuZXJzW2ldKG9uQ2hhbmdlRXZlbnQpOworICAgICAgfQorICAgIH0KKworICAg
IC8vbm90ZSBJRTggaXMgYmVpbmcgY291bnRlZCBhcyAnbW9kZXJuJyBiZWNhdXNlIGl0IGhhcyB0
aGUgaGFzaGNoYW5nZSBldmVudAorICAgIGlmICgnb25oYXNoY2hhbmdlJyBpbiB3aW5kb3cgJiYg
KGRvY3VtZW50LmRvY3VtZW50TW9kZSA9PT0gdW5kZWZpbmVkCisgICAgICB8fCBkb2N1bWVudC5k
b2N1bWVudE1vZGUgPiA3KSkgeworICAgICAgLy8gQXQgbGVhc3QgZm9yIG5vdyBIVE1MNSBoaXN0
b3J5IGlzIGF2YWlsYWJsZSBmb3IgJ21vZGVybicgYnJvd3NlcnMgb25seQorICAgICAgaWYgKHRo
aXMuaGlzdG9yeSA9PT0gdHJ1ZSkgeworICAgICAgICAvLyBUaGVyZSBpcyBhbiBvbGQgYnVnIGlu
IENocm9tZSB0aGF0IGNhdXNlcyBvbnBvcHN0YXRlIHRvIGZpcmUgZXZlbgorICAgICAgICAvLyB1
cG9uIGluaXRpYWwgcGFnZSBsb2FkLiBTaW5jZSB0aGUgaGFuZGxlciBpcyBydW4gbWFudWFsbHkg
aW4gaW5pdCgpLAorICAgICAgICAvLyB0aGlzIHdvdWxkIGNhdXNlIENocm9tZSB0byBydW4gaXQg
dHdpc2UuIEN1cnJlbnRseSB0aGUgb25seQorICAgICAgICAvLyB3b3JrYXJvdW5kIHNlZW1zIHRv
IGJlIHRvIHNldCB0aGUgaGFuZGxlciBhZnRlciB0aGUgaW5pdGlhbCBwYWdlIGxvYWQKKyAgICAg
ICAgLy8gaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9
NjMwNDAKKyAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICB3aW5kb3cu
b25wb3BzdGF0ZSA9IG9uY2hhbmdlOworICAgICAgICB9LCA1MDApOworICAgICAgfQorICAgICAg
ZWxzZSB7CisgICAgICAgIHdpbmRvdy5vbmhhc2hjaGFuZ2UgPSBvbmNoYW5nZTsKKyAgICAgIH0K
KyAgICAgIHRoaXMubW9kZSA9ICdtb2Rlcm4nOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIC8v
CisgICAgICAvLyBJRSBzdXBwb3J0LCBiYXNlZCBvbiBhIGNvbmNlcHQgYnkgRXJpayBBcnZpZHNv
biAuLi4KKyAgICAgIC8vCisgICAgICB2YXIgZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdpZnJhbWUnKTsKKyAgICAgIGZyYW1lLmlkID0gJ3N0YXRlLWZyYW1lJzsKKyAgICAgIGZyYW1l
LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CisgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxk
KGZyYW1lKTsKKyAgICAgIHRoaXMud3JpdGVGcmFtZSgnJyk7CisKKyAgICAgIGlmICgnb25wcm9w
ZXJ0eWNoYW5nZScgaW4gZG9jdW1lbnQgJiYgJ2F0dGFjaEV2ZW50JyBpbiBkb2N1bWVudCkgewor
ICAgICAgICBkb2N1bWVudC5hdHRhY2hFdmVudCgnb25wcm9wZXJ0eWNoYW5nZScsIGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICBpZiAoZXZlbnQucHJvcGVydHlOYW1lID09PSAnbG9jYXRpb24nKSB7
CisgICAgICAgICAgICBzZWxmLmNoZWNrKCk7CisgICAgICAgICAgfQorICAgICAgICB9KTsKKyAg
ICAgIH0KKworICAgICAgd2luZG93LnNldEludGVydmFsKGZ1bmN0aW9uICgpIHsgc2VsZi5jaGVj
aygpOyB9LCA1MCk7CisKKyAgICAgIHRoaXMub25IYXNoQ2hhbmdlZCA9IG9uY2hhbmdlOworICAg
ICAgdGhpcy5tb2RlID0gJ2xlZ2FjeSc7CisgICAgfQorCisgICAgUm91dGVyLmxpc3RlbmVycy5w
dXNoKGZuKTsKKworICAgIHJldHVybiB0aGlzLm1vZGU7CisgIH0sCisKKyAgZGVzdHJveTogZnVu
Y3Rpb24gKGZuKSB7CisgICAgaWYgKCFSb3V0ZXIgfHwgIVJvdXRlci5saXN0ZW5lcnMpIHsKKyAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2YXIgbGlzdGVuZXJzID0gUm91dGVyLmxpc3RlbmVy
czsKKworICAgIGZvciAodmFyIGkgPSBsaXN0ZW5lcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0p
IHsKKyAgICAgIGlmIChsaXN0ZW5lcnNbaV0gPT09IGZuKSB7CisgICAgICAgIGxpc3RlbmVycy5z
cGxpY2UoaSwgMSk7CisgICAgICB9CisgICAgfQorICB9LAorCisgIHNldEhhc2g6IGZ1bmN0aW9u
IChzKSB7CisgICAgLy8gTW96aWxsYSBhbHdheXMgYWRkcyBhbiBlbnRyeSB0byB0aGUgaGlzdG9y
eQorICAgIGlmICh0aGlzLm1vZGUgPT09ICdsZWdhY3knKSB7CisgICAgICB0aGlzLndyaXRlRnJh
bWUocyk7CisgICAgfQorCisgICAgaWYgKHRoaXMuaGlzdG9yeSA9PT0gdHJ1ZSkgeworICAgICAg
d2luZG93Lmhpc3RvcnkucHVzaFN0YXRlKHt9LCBkb2N1bWVudC50aXRsZSwgcyk7CisgICAgICAv
LyBGaXJlIGFuIG9ucG9wc3RhdGUgZXZlbnQgbWFudWFsbHkgc2luY2UgcHVzaGluZyBkb2VzIG5v
dCBvYnZpb3VzbHkKKyAgICAgIC8vIHRyaWdnZXIgdGhlIHBvcCBldmVudC4KKyAgICAgIHRoaXMu
ZmlyZSgpOworICAgIH0gZWxzZSB7CisgICAgICBkbG9jLmhhc2ggPSAoc1swXSA9PT0gJy8nKSA/
IHMgOiAnLycgKyBzOworICAgIH0KKyAgICByZXR1cm4gdGhpczsKKyAgfSwKKworICB3cml0ZUZy
YW1lOiBmdW5jdGlvbiAocykgeworICAgIC8vIElFIHN1cHBvcnQuLi4KKyAgICB2YXIgZiA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdGF0ZS1mcmFtZScpOworICAgIHZhciBkID0gZi5jb250
ZW50RG9jdW1lbnQgfHwgZi5jb250ZW50V2luZG93LmRvY3VtZW50OworICAgIGQub3BlbigpOwor
ICAgIGQud3JpdGUoIjxzY3JpcHQ+X2hhc2ggPSAnIiArIHMgKyAiJzsgb25sb2FkID0gcGFyZW50
Lmxpc3RlbmVyLnN5bmNIYXNoOzxzY3JpcHQ+Iik7CisgICAgZC5jbG9zZSgpOworICB9LAorCisg
IHN5bmNIYXNoOiBmdW5jdGlvbiAoKSB7CisgICAgLy8gSUUgc3VwcG9ydC4uLgorICAgIHZhciBz
ID0gdGhpcy5faGFzaDsKKyAgICBpZiAocyAhPSBkbG9jLmhhc2gpIHsKKyAgICAgIGRsb2MuaGFz
aCA9IHM7CisgICAgfQorICAgIHJldHVybiB0aGlzOworICB9LAorCisgIG9uSGFzaENoYW5nZWQ6
IGZ1bmN0aW9uICgpIHt9Cit9OworCit2YXIgUm91dGVyID0gZXhwb3J0cy5Sb3V0ZXIgPSBmdW5j
dGlvbiAocm91dGVzKSB7CisgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBSb3V0ZXIpKSByZXR1cm4g
bmV3IFJvdXRlcihyb3V0ZXMpOworCisgIHRoaXMucGFyYW1zICAgPSB7fTsKKyAgdGhpcy5yb3V0
ZXMgICA9IHt9OworICB0aGlzLm1ldGhvZHMgID0gWydvbicsICdvbmNlJywgJ2FmdGVyJywgJ2Jl
Zm9yZSddOworICB0aGlzLnNjb3BlICAgID0gW107CisgIHRoaXMuX21ldGhvZHMgPSB7fTsKKwor
ICB0aGlzLl9pbnNlcnQgPSB0aGlzLmluc2VydDsKKyAgdGhpcy5pbnNlcnQgPSB0aGlzLmluc2Vy
dEV4OworCisgIHRoaXMuaGlzdG9yeVN1cHBvcnQgPSAod2luZG93Lmhpc3RvcnkgIT0gbnVsbCA/
IHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZSA6IG51bGwpICE9IG51bGwKKworICB0aGlzLmNvbmZp
Z3VyZSgpOworICB0aGlzLm1vdW50KHJvdXRlcyB8fCB7fSk7Cit9OworCitSb3V0ZXIucHJvdG90
eXBlLmluaXQgPSBmdW5jdGlvbiAocikgeworICB2YXIgc2VsZiA9IHRoaXMKKyAgICAsIHJvdXRl
VG87CisgIHRoaXMuaGFuZGxlciA9IGZ1bmN0aW9uKG9uQ2hhbmdlRXZlbnQpIHsKKyAgICB2YXIg
bmV3VVJMID0gb25DaGFuZ2VFdmVudCAmJiBvbkNoYW5nZUV2ZW50Lm5ld1VSTCB8fCB3aW5kb3cu
bG9jYXRpb24uaGFzaDsKKyAgICB2YXIgdXJsID0gc2VsZi5oaXN0b3J5ID09PSB0cnVlID8gc2Vs
Zi5nZXRQYXRoKCkgOiBuZXdVUkwucmVwbGFjZSgvLiojLywgJycpOworICAgIHNlbGYuZGlzcGF0
Y2goJ29uJywgdXJsLmNoYXJBdCgwKSA9PT0gJy8nID8gdXJsIDogJy8nICsgdXJsKTsKKyAgfTsK
KworICBsaXN0ZW5lci5pbml0KHRoaXMuaGFuZGxlciwgdGhpcy5oaXN0b3J5KTsKKworICBpZiAo
dGhpcy5oaXN0b3J5ID09PSBmYWxzZSkgeworICAgIGlmIChkbG9jSGFzaEVtcHR5KCkgJiYgcikg
eworICAgICAgZGxvYy5oYXNoID0gcjsKKyAgICB9IGVsc2UgaWYgKCFkbG9jSGFzaEVtcHR5KCkp
IHsKKyAgICAgIHNlbGYuZGlzcGF0Y2goJ29uJywgJy8nICsgZGxvYy5oYXNoLnJlcGxhY2UoL14o
I1wvfCN8XC8pLywgJycpKTsKKyAgICB9CisgIH0KKyAgZWxzZSB7CisgICAgaWYgKHRoaXMuY29u
dmVydF9oYXNoX2luX2luaXQpIHsKKyAgICAgIC8vIFVzZSBoYXNoIGFzIHJvdXRlCisgICAgICBy
b3V0ZVRvID0gZGxvY0hhc2hFbXB0eSgpICYmIHIgPyByIDogIWRsb2NIYXNoRW1wdHkoKSA/IGRs
b2MuaGFzaC5yZXBsYWNlKC9eIy8sICcnKSA6IG51bGw7CisgICAgICBpZiAocm91dGVUbykgewor
ICAgICAgICB3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUoe30sIGRvY3VtZW50LnRpdGxlLCBy
b3V0ZVRvKTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAvLyBVc2UgY2Fub25p
Y2FsIHVybAorICAgICAgcm91dGVUbyA9IHRoaXMuZ2V0UGF0aCgpOworICAgIH0KKworICAgIC8v
IFJvdXRlciBoYXMgYmVlbiBpbml0aWFsaXplZCwgYnV0IGR1ZSB0byB0aGUgY2hyb21lIGJ1ZyBp
dCB3aWxsIG5vdAorICAgIC8vIHlldCBhY3R1YWxseSByb3V0ZSBIVE1MNSBoaXN0b3J5IHN0YXRl
IGNoYW5nZXMuIFRodXMsIGRlY2lkZSBpZiBzaG91bGQgcm91dGUuCisgICAgaWYgKHJvdXRlVG8g
fHwgdGhpcy5ydW5faW5faW5pdCA9PT0gdHJ1ZSkgeworICAgICAgdGhpcy5oYW5kbGVyKCk7Cisg
ICAgfQorICB9CisKKyAgcmV0dXJuIHRoaXM7Cit9OworCitSb3V0ZXIucHJvdG90eXBlLmV4cGxv
ZGUgPSBmdW5jdGlvbiAoKSB7CisgIHZhciB2ID0gdGhpcy5oaXN0b3J5ID09PSB0cnVlID8gdGhp
cy5nZXRQYXRoKCkgOiBkbG9jLmhhc2g7CisgIGlmICh2LmNoYXJBdCgxKSA9PT0gJy8nKSB7IHY9
di5zbGljZSgxKSB9CisgIHJldHVybiB2LnNsaWNlKDEsIHYubGVuZ3RoKS5zcGxpdCgiLyIpOwor
fTsKKworUm91dGVyLnByb3RvdHlwZS5zZXRSb3V0ZSA9IGZ1bmN0aW9uIChpLCB2LCB2YWwpIHsK
KyAgdmFyIHVybCA9IHRoaXMuZXhwbG9kZSgpOworCisgIGlmICh0eXBlb2YgaSA9PT0gJ251bWJl
cicgJiYgdHlwZW9mIHYgPT09ICdzdHJpbmcnKSB7CisgICAgdXJsW2ldID0gdjsKKyAgfQorICBl
bHNlIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5nJykgeworICAgIHVybC5zcGxpY2UoaSwgdiwg
cyk7CisgIH0KKyAgZWxzZSB7CisgICAgdXJsID0gW2ldOworICB9CisKKyAgbGlzdGVuZXIuc2V0
SGFzaCh1cmwuam9pbignLycpKTsKKyAgcmV0dXJuIHVybDsKK307CisKKy8vCisvLyAjIyMgZnVu
Y3Rpb24gaW5zZXJ0RXgobWV0aG9kLCBwYXRoLCByb3V0ZSwgcGFyZW50KQorLy8gIyMjIyBAbWV0
aG9kIHtzdHJpbmd9IE1ldGhvZCB0byBpbnNlcnQgdGhlIHNwZWNpZmljIGByb3V0ZWAuCisvLyAj
IyMjIEBwYXRoIHtBcnJheX0gUGFyc2VkIHBhdGggdG8gaW5zZXJ0IHRoZSBgcm91dGVgIGF0Lgor
Ly8gIyMjIyBAcm91dGUge0FycmF5fGZ1bmN0aW9ufSBSb3V0ZSBoYW5kbGVycyB0byBpbnNlcnQu
CisvLyAjIyMjIEBwYXJlbnQge09iamVjdH0gKipPcHRpb25hbCoqIFBhcmVudCAicm91dGVzIiB0
byBpbnNlcnQgaW50by4KKy8vIGluc2VydCBhIGNhbGxiYWNrIHRoYXQgd2lsbCBvbmx5IG9jY3Vy
IG9uY2UgcGVyIHRoZSBtYXRjaGVkIHJvdXRlLgorLy8KK1JvdXRlci5wcm90b3R5cGUuaW5zZXJ0
RXggPSBmdW5jdGlvbihtZXRob2QsIHBhdGgsIHJvdXRlLCBwYXJlbnQpIHsKKyAgaWYgKG1ldGhv
ZCA9PT0gIm9uY2UiKSB7CisgICAgbWV0aG9kID0gIm9uIjsKKyAgICByb3V0ZSA9IGZ1bmN0aW9u
KHJvdXRlKSB7CisgICAgICB2YXIgb25jZSA9IGZhbHNlOworICAgICAgcmV0dXJuIGZ1bmN0aW9u
KCkgeworICAgICAgICBpZiAob25jZSkgcmV0dXJuOworICAgICAgICBvbmNlID0gdHJ1ZTsKKyAg
ICAgICAgcmV0dXJuIHJvdXRlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CisgICAgICB9OworICAg
IH0ocm91dGUpOworICB9CisgIHJldHVybiB0aGlzLl9pbnNlcnQobWV0aG9kLCBwYXRoLCByb3V0
ZSwgcGFyZW50KTsKK307CisKK1JvdXRlci5wcm90b3R5cGUuZ2V0Um91dGUgPSBmdW5jdGlvbiAo
dikgeworICB2YXIgcmV0ID0gdjsKKworICBpZiAodHlwZW9mIHYgPT09ICJudW1iZXIiKSB7Cisg
ICAgcmV0ID0gdGhpcy5leHBsb2RlKClbdl07CisgIH0KKyAgZWxzZSBpZiAodHlwZW9mIHYgPT09
ICJzdHJpbmciKXsKKyAgICB2YXIgaCA9IHRoaXMuZXhwbG9kZSgpOworICAgIHJldCA9IGguaW5k
ZXhPZih2KTsKKyAgfQorICBlbHNlIHsKKyAgICByZXQgPSB0aGlzLmV4cGxvZGUoKTsKKyAgfQor
CisgIHJldHVybiByZXQ7Cit9OworCitSb3V0ZXIucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlv
biAoKSB7CisgIGxpc3RlbmVyLmRlc3Ryb3kodGhpcy5oYW5kbGVyKTsKKyAgcmV0dXJuIHRoaXM7
Cit9OworCitSb3V0ZXIucHJvdG90eXBlLmdldFBhdGggPSBmdW5jdGlvbiAoKSB7CisgIHZhciBw
YXRoID0gd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lOworICBpZiAocGF0aC5zdWJzdHIoMCwgMSkg
IT09ICcvJykgeworICAgIHBhdGggPSAnLycgKyBwYXRoOworICB9CisgIHJldHVybiBwYXRoOwor
fTsKK2Z1bmN0aW9uIF9ldmVyeShhcnIsIGl0ZXJhdG9yKSB7CisgIGZvciAodmFyIGkgPSAwOyBp
IDwgYXJyLmxlbmd0aDsgaSArPSAxKSB7CisgICAgaWYgKGl0ZXJhdG9yKGFycltpXSwgaSwgYXJy
KSA9PT0gZmFsc2UpIHsKKyAgICAgIHJldHVybjsKKyAgICB9CisgIH0KK30KKworZnVuY3Rpb24g
X2ZsYXR0ZW4oYXJyKSB7CisgIHZhciBmbGF0ID0gW107CisgIGZvciAodmFyIGkgPSAwLCBuID0g
YXJyLmxlbmd0aDsgaSA8IG47IGkrKykgeworICAgIGZsYXQgPSBmbGF0LmNvbmNhdChhcnJbaV0p
OworICB9CisgIHJldHVybiBmbGF0OworfQorCitmdW5jdGlvbiBfYXN5bmNFdmVyeVNlcmllcyhh
cnIsIGl0ZXJhdG9yLCBjYWxsYmFjaykgeworICBpZiAoIWFyci5sZW5ndGgpIHsKKyAgICByZXR1
cm4gY2FsbGJhY2soKTsKKyAgfQorICB2YXIgY29tcGxldGVkID0gMDsKKyAgKGZ1bmN0aW9uIGl0
ZXJhdGUoKSB7CisgICAgaXRlcmF0b3IoYXJyW2NvbXBsZXRlZF0sIGZ1bmN0aW9uKGVycikgewor
ICAgICAgaWYgKGVyciB8fCBlcnIgPT09IGZhbHNlKSB7CisgICAgICAgIGNhbGxiYWNrKGVycik7
CisgICAgICAgIGNhbGxiYWNrID0gZnVuY3Rpb24oKSB7fTsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIGNvbXBsZXRlZCArPSAxOworICAgICAgICBpZiAoY29tcGxldGVkID09PSBhcnIubGVuZ3Ro
KSB7CisgICAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBp
dGVyYXRlKCk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9KTsKKyAgfSkoKTsKK30KKworZnVu
Y3Rpb24gcGFyYW1pZnlTdHJpbmcoc3RyLCBwYXJhbXMsIG1vZCkgeworICBtb2QgPSBzdHI7Cisg
IGZvciAodmFyIHBhcmFtIGluIHBhcmFtcykgeworICAgIGlmIChwYXJhbXMuaGFzT3duUHJvcGVy
dHkocGFyYW0pKSB7CisgICAgICBtb2QgPSBwYXJhbXNbcGFyYW1dKHN0cik7CisgICAgICBpZiAo
bW9kICE9PSBzdHIpIHsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgfQorICB9CisgIHJl
dHVybiBtb2QgPT09IHN0ciA/ICIoWy5fYS16QS1aMC05LSUoKV0rKSIgOiBtb2Q7Cit9CisKK2Z1
bmN0aW9uIHJlZ2lmeVN0cmluZyhzdHIsIHBhcmFtcykgeworICB2YXIgbWF0Y2hlcywgbGFzdCA9
IDAsIG91dCA9ICIiOworICB3aGlsZSAobWF0Y2hlcyA9IHN0ci5zdWJzdHIobGFzdCkubWF0Y2go
L1teXHdcZFwtICVAJl0qXCpbXlx3XGRcLSAlQCZdKi8pKSB7CisgICAgbGFzdCA9IG1hdGNoZXMu
aW5kZXggKyBtYXRjaGVzWzBdLmxlbmd0aDsKKyAgICBtYXRjaGVzWzBdID0gbWF0Y2hlc1swXS5y
ZXBsYWNlKC9eXCovLCAiKFtfLigpIVxcICVAJmEtekEtWjAtOS1dKykiKTsKKyAgICBvdXQgKz0g
c3RyLnN1YnN0cigwLCBtYXRjaGVzLmluZGV4KSArIG1hdGNoZXNbMF07CisgIH0KKyAgc3RyID0g
b3V0ICs9IHN0ci5zdWJzdHIobGFzdCk7CisgIHZhciBjYXB0dXJlcyA9IHN0ci5tYXRjaCgvOihb
XlwvXSspL2lnKSwgY2FwdHVyZSwgbGVuZ3RoOworICBpZiAoY2FwdHVyZXMpIHsKKyAgICBsZW5n
dGggPSBjYXB0dXJlcy5sZW5ndGg7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkr
KykgeworICAgICAgY2FwdHVyZSA9IGNhcHR1cmVzW2ldOworICAgICAgaWYgKGNhcHR1cmUuc2xp
Y2UoMCwgMikgPT09ICI6OiIpIHsKKyAgICAgICAgc3RyID0gY2FwdHVyZS5zbGljZSgxKTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHN0ciA9IHN0ci5yZXBsYWNlKGNhcHR1cmUsIHBhcmFtaWZ5
U3RyaW5nKGNhcHR1cmUsIHBhcmFtcykpOworICAgICAgfQorICAgIH0KKyAgfQorICByZXR1cm4g
c3RyOworfQorCitmdW5jdGlvbiB0ZXJtaW5hdG9yKHJvdXRlcywgZGVsaW1pdGVyLCBzdGFydCwg
c3RvcCkgeworICB2YXIgbGFzdCA9IDAsIGxlZnQgPSAwLCByaWdodCA9IDAsIHN0YXJ0ID0gKHN0
YXJ0IHx8ICIoIikudG9TdHJpbmcoKSwgc3RvcCA9IChzdG9wIHx8ICIpIikudG9TdHJpbmcoKSwg
aTsKKyAgZm9yIChpID0gMDsgaSA8IHJvdXRlcy5sZW5ndGg7IGkrKykgeworICAgIHZhciBjaHVu
ayA9IHJvdXRlc1tpXTsKKyAgICBpZiAoY2h1bmsuaW5kZXhPZihzdGFydCwgbGFzdCkgPiBjaHVu
ay5pbmRleE9mKHN0b3AsIGxhc3QpIHx8IH5jaHVuay5pbmRleE9mKHN0YXJ0LCBsYXN0KSAmJiAh
fmNodW5rLmluZGV4T2Yoc3RvcCwgbGFzdCkgfHwgIX5jaHVuay5pbmRleE9mKHN0YXJ0LCBsYXN0
KSAmJiB+Y2h1bmsuaW5kZXhPZihzdG9wLCBsYXN0KSkgeworICAgICAgbGVmdCA9IGNodW5rLmlu
ZGV4T2Yoc3RhcnQsIGxhc3QpOworICAgICAgcmlnaHQgPSBjaHVuay5pbmRleE9mKHN0b3AsIGxh
c3QpOworICAgICAgaWYgKH5sZWZ0ICYmICF+cmlnaHQgfHwgIX5sZWZ0ICYmIH5yaWdodCkgewor
ICAgICAgICB2YXIgdG1wID0gcm91dGVzLnNsaWNlKDAsIChpIHx8IDEpICsgMSkuam9pbihkZWxp
bWl0ZXIpOworICAgICAgICByb3V0ZXMgPSBbIHRtcCBdLmNvbmNhdChyb3V0ZXMuc2xpY2UoKGkg
fHwgMSkgKyAxKSk7CisgICAgICB9CisgICAgICBsYXN0ID0gKHJpZ2h0ID4gbGVmdCA/IHJpZ2h0
IDogbGVmdCkgKyAxOworICAgICAgaSA9IDA7CisgICAgfSBlbHNlIHsKKyAgICAgIGxhc3QgPSAw
OworICAgIH0KKyAgfQorICByZXR1cm4gcm91dGVzOworfQorCit2YXIgUVVFUllfU0VQQVJBVE9S
ID0gL1w/LiovOworCitSb3V0ZXIucHJvdG90eXBlLmNvbmZpZ3VyZSA9IGZ1bmN0aW9uKG9wdGlv
bnMpIHsKKyAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307CisgIGZvciAodmFyIGkgPSAwOyBpIDwg
dGhpcy5tZXRob2RzLmxlbmd0aDsgaSsrKSB7CisgICAgdGhpcy5fbWV0aG9kc1t0aGlzLm1ldGhv
ZHNbaV1dID0gdHJ1ZTsKKyAgfQorICB0aGlzLnJlY3Vyc2UgPSBvcHRpb25zLnJlY3Vyc2UgfHwg
dGhpcy5yZWN1cnNlIHx8IGZhbHNlOworICB0aGlzLmFzeW5jID0gb3B0aW9ucy5hc3luYyB8fCBm
YWxzZTsKKyAgdGhpcy5kZWxpbWl0ZXIgPSBvcHRpb25zLmRlbGltaXRlciB8fCAiLyI7CisgIHRo
aXMuc3RyaWN0ID0gdHlwZW9mIG9wdGlvbnMuc3RyaWN0ID09PSAidW5kZWZpbmVkIiA/IHRydWUg
OiBvcHRpb25zLnN0cmljdDsKKyAgdGhpcy5ub3Rmb3VuZCA9IG9wdGlvbnMubm90Zm91bmQ7Cisg
IHRoaXMucmVzb3VyY2UgPSBvcHRpb25zLnJlc291cmNlOworICB0aGlzLmhpc3RvcnkgPSBvcHRp
b25zLmh0bWw1aGlzdG9yeSAmJiB0aGlzLmhpc3RvcnlTdXBwb3J0IHx8IGZhbHNlOworICB0aGlz
LnJ1bl9pbl9pbml0ID0gdGhpcy5oaXN0b3J5ID09PSB0cnVlICYmIG9wdGlvbnMucnVuX2hhbmRs
ZXJfaW5faW5pdCAhPT0gZmFsc2U7CisgIHRoaXMuY29udmVydF9oYXNoX2luX2luaXQgPSB0aGlz
Lmhpc3RvcnkgPT09IHRydWUgJiYgb3B0aW9ucy5jb252ZXJ0X2hhc2hfaW5faW5pdCAhPT0gZmFs
c2U7CisgIHRoaXMuZXZlcnkgPSB7CisgICAgYWZ0ZXI6IG9wdGlvbnMuYWZ0ZXIgfHwgbnVsbCwK
KyAgICBiZWZvcmU6IG9wdGlvbnMuYmVmb3JlIHx8IG51bGwsCisgICAgb246IG9wdGlvbnMub24g
fHwgbnVsbAorICB9OworICByZXR1cm4gdGhpczsKK307CisKK1JvdXRlci5wcm90b3R5cGUucGFy
YW0gPSBmdW5jdGlvbih0b2tlbiwgbWF0Y2hlcikgeworICBpZiAodG9rZW5bMF0gIT09ICI6Iikg
eworICAgIHRva2VuID0gIjoiICsgdG9rZW47CisgIH0KKyAgdmFyIGNvbXBpbGVkID0gbmV3IFJl
Z0V4cCh0b2tlbiwgImciKTsKKyAgdGhpcy5wYXJhbXNbdG9rZW5dID0gZnVuY3Rpb24oc3RyKSB7
CisgICAgcmV0dXJuIHN0ci5yZXBsYWNlKGNvbXBpbGVkLCBtYXRjaGVyLnNvdXJjZSB8fCBtYXRj
aGVyKTsKKyAgfTsKKyAgcmV0dXJuIHRoaXM7Cit9OworCitSb3V0ZXIucHJvdG90eXBlLm9uID0g
Um91dGVyLnByb3RvdHlwZS5yb3V0ZSA9IGZ1bmN0aW9uKG1ldGhvZCwgcGF0aCwgcm91dGUpIHsK
KyAgdmFyIHNlbGYgPSB0aGlzOworICBpZiAoIXJvdXRlICYmIHR5cGVvZiBwYXRoID09ICJmdW5j
dGlvbiIpIHsKKyAgICByb3V0ZSA9IHBhdGg7CisgICAgcGF0aCA9IG1ldGhvZDsKKyAgICBtZXRo
b2QgPSAib24iOworICB9CisgIGlmIChBcnJheS5pc0FycmF5KHBhdGgpKSB7CisgICAgcmV0dXJu
IHBhdGguZm9yRWFjaChmdW5jdGlvbihwKSB7CisgICAgICBzZWxmLm9uKG1ldGhvZCwgcCwgcm91
dGUpOworICAgIH0pOworICB9CisgIGlmIChwYXRoLnNvdXJjZSkgeworICAgIHBhdGggPSBwYXRo
LnNvdXJjZS5yZXBsYWNlKC9cXFwvL2lnLCAiLyIpOworICB9CisgIGlmIChBcnJheS5pc0FycmF5
KG1ldGhvZCkpIHsKKyAgICByZXR1cm4gbWV0aG9kLmZvckVhY2goZnVuY3Rpb24obSkgeworICAg
ICAgc2VsZi5vbihtLnRvTG93ZXJDYXNlKCksIHBhdGgsIHJvdXRlKTsKKyAgICB9KTsKKyAgfQor
ICBwYXRoID0gcGF0aC5zcGxpdChuZXcgUmVnRXhwKHRoaXMuZGVsaW1pdGVyKSk7CisgIHBhdGgg
PSB0ZXJtaW5hdG9yKHBhdGgsIHRoaXMuZGVsaW1pdGVyKTsKKyAgdGhpcy5pbnNlcnQobWV0aG9k
LCB0aGlzLnNjb3BlLmNvbmNhdChwYXRoKSwgcm91dGUpOworfTsKKworUm91dGVyLnByb3RvdHlw
ZS5wYXRoID0gZnVuY3Rpb24ocGF0aCwgcm91dGVzRm4pIHsKKyAgdmFyIHNlbGYgPSB0aGlzLCBs
ZW5ndGggPSB0aGlzLnNjb3BlLmxlbmd0aDsKKyAgaWYgKHBhdGguc291cmNlKSB7CisgICAgcGF0
aCA9IHBhdGguc291cmNlLnJlcGxhY2UoL1xcXC8vaWcsICIvIik7CisgIH0KKyAgcGF0aCA9IHBh
dGguc3BsaXQobmV3IFJlZ0V4cCh0aGlzLmRlbGltaXRlcikpOworICBwYXRoID0gdGVybWluYXRv
cihwYXRoLCB0aGlzLmRlbGltaXRlcik7CisgIHRoaXMuc2NvcGUgPSB0aGlzLnNjb3BlLmNvbmNh
dChwYXRoKTsKKyAgcm91dGVzRm4uY2FsbCh0aGlzLCB0aGlzKTsKKyAgdGhpcy5zY29wZS5zcGxp
Y2UobGVuZ3RoLCBwYXRoLmxlbmd0aCk7Cit9OworCitSb3V0ZXIucHJvdG90eXBlLmRpc3BhdGNo
ID0gZnVuY3Rpb24obWV0aG9kLCBwYXRoLCBjYWxsYmFjaykgeworICB2YXIgc2VsZiA9IHRoaXMs
IGZucyA9IHRoaXMudHJhdmVyc2UobWV0aG9kLCBwYXRoLnJlcGxhY2UoUVVFUllfU0VQQVJBVE9S
LCAiIiksIHRoaXMucm91dGVzLCAiIiksIGludm9rZWQgPSB0aGlzLl9pbnZva2VkLCBhZnRlcjsK
KyAgdGhpcy5faW52b2tlZCA9IHRydWU7CisgIGlmICghZm5zIHx8IGZucy5sZW5ndGggPT09IDAp
IHsKKyAgICB0aGlzLmxhc3QgPSBbXTsKKyAgICBpZiAodHlwZW9mIHRoaXMubm90Zm91bmQgPT09
ICJmdW5jdGlvbiIpIHsKKyAgICAgIHRoaXMuaW52b2tlKFsgdGhpcy5ub3Rmb3VuZCBdLCB7Cisg
ICAgICAgIG1ldGhvZDogbWV0aG9kLAorICAgICAgICBwYXRoOiBwYXRoCisgICAgICB9LCBjYWxs
YmFjayk7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKKyAgfQorICBpZiAodGhpcy5yZWN1cnNl
ID09PSAiZm9yd2FyZCIpIHsKKyAgICBmbnMgPSBmbnMucmV2ZXJzZSgpOworICB9CisgIGZ1bmN0
aW9uIHVwZGF0ZUFuZEludm9rZSgpIHsKKyAgICBzZWxmLmxhc3QgPSBmbnMuYWZ0ZXI7CisgICAg
c2VsZi5pbnZva2Uoc2VsZi5ydW5saXN0KGZucyksIHNlbGYsIGNhbGxiYWNrKTsKKyAgfQorICBh
ZnRlciA9IHRoaXMuZXZlcnkgJiYgdGhpcy5ldmVyeS5hZnRlciA/IFsgdGhpcy5ldmVyeS5hZnRl
ciBdLmNvbmNhdCh0aGlzLmxhc3QpIDogWyB0aGlzLmxhc3QgXTsKKyAgaWYgKGFmdGVyICYmIGFm
dGVyLmxlbmd0aCA+IDAgJiYgaW52b2tlZCkgeworICAgIGlmICh0aGlzLmFzeW5jKSB7CisgICAg
ICB0aGlzLmludm9rZShhZnRlciwgdGhpcywgdXBkYXRlQW5kSW52b2tlKTsKKyAgICB9IGVsc2Ug
eworICAgICAgdGhpcy5pbnZva2UoYWZ0ZXIsIHRoaXMpOworICAgICAgdXBkYXRlQW5kSW52b2tl
KCk7CisgICAgfQorICAgIHJldHVybiB0cnVlOworICB9CisgIHVwZGF0ZUFuZEludm9rZSgpOwor
ICByZXR1cm4gdHJ1ZTsKK307CisKK1JvdXRlci5wcm90b3R5cGUuaW52b2tlID0gZnVuY3Rpb24o
Zm5zLCB0aGlzQXJnLCBjYWxsYmFjaykgeworICB2YXIgc2VsZiA9IHRoaXM7CisgIHZhciBhcHBs
eTsKKyAgaWYgKHRoaXMuYXN5bmMpIHsKKyAgICBhcHBseSA9IGZ1bmN0aW9uKGZuLCBuZXh0KSB7
CisgICAgICBpZiAoQXJyYXkuaXNBcnJheShmbikpIHsKKyAgICAgICAgcmV0dXJuIF9hc3luY0V2
ZXJ5U2VyaWVzKGZuLCBhcHBseSwgbmV4dCk7CisgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBmbiA9
PSAiZnVuY3Rpb24iKSB7CisgICAgICAgIGZuLmFwcGx5KHRoaXNBcmcsIChmbnMuY2FwdHVyZXMg
fHwgW10pLmNvbmNhdChuZXh0KSk7CisgICAgICB9CisgICAgfTsKKyAgICBfYXN5bmNFdmVyeVNl
cmllcyhmbnMsIGFwcGx5LCBmdW5jdGlvbigpIHsKKyAgICAgIGlmIChjYWxsYmFjaykgeworICAg
ICAgICBjYWxsYmFjay5hcHBseSh0aGlzQXJnLCBhcmd1bWVudHMpOworICAgICAgfQorICAgIH0p
OworICB9IGVsc2UgeworICAgIGFwcGx5ID0gZnVuY3Rpb24oZm4pIHsKKyAgICAgIGlmIChBcnJh
eS5pc0FycmF5KGZuKSkgeworICAgICAgICByZXR1cm4gX2V2ZXJ5KGZuLCBhcHBseSk7CisgICAg
ICB9IGVsc2UgaWYgKHR5cGVvZiBmbiA9PT0gImZ1bmN0aW9uIikgeworICAgICAgICByZXR1cm4g
Zm4uYXBwbHkodGhpc0FyZywgZm5zLmNhcHR1cmVzIHx8IFtdKTsKKyAgICAgIH0gZWxzZSBpZiAo
dHlwZW9mIGZuID09PSAic3RyaW5nIiAmJiBzZWxmLnJlc291cmNlKSB7CisgICAgICAgIHNlbGYu
cmVzb3VyY2VbZm5dLmFwcGx5KHRoaXNBcmcsIGZucy5jYXB0dXJlcyB8fCBbXSk7CisgICAgICB9
CisgICAgfTsKKyAgICBfZXZlcnkoZm5zLCBhcHBseSk7CisgIH0KK307CisKK1JvdXRlci5wcm90
b3R5cGUudHJhdmVyc2UgPSBmdW5jdGlvbihtZXRob2QsIHBhdGgsIHJvdXRlcywgcmVnZXhwLCBm
aWx0ZXIpIHsKKyAgdmFyIGZucyA9IFtdLCBjdXJyZW50LCBleGFjdCwgbWF0Y2gsIG5leHQsIHRo
YXQ7CisgIGZ1bmN0aW9uIGZpbHRlclJvdXRlcyhyb3V0ZXMpIHsKKyAgICBpZiAoIWZpbHRlcikg
eworICAgICAgcmV0dXJuIHJvdXRlczsKKyAgICB9CisgICAgZnVuY3Rpb24gZGVlcENvcHkoc291
cmNlKSB7CisgICAgICB2YXIgcmVzdWx0ID0gW107CisgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IHNvdXJjZS5sZW5ndGg7IGkrKykgeworICAgICAgICByZXN1bHRbaV0gPSBBcnJheS5pc0FycmF5
KHNvdXJjZVtpXSkgPyBkZWVwQ29weShzb3VyY2VbaV0pIDogc291cmNlW2ldOworICAgICAgfQor
ICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgZnVuY3Rpb24gYXBwbHlGaWx0ZXIoZm5z
KSB7CisgICAgICBmb3IgKHZhciBpID0gZm5zLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7Cisg
ICAgICAgIGlmIChBcnJheS5pc0FycmF5KGZuc1tpXSkpIHsKKyAgICAgICAgICBhcHBseUZpbHRl
cihmbnNbaV0pOworICAgICAgICAgIGlmIChmbnNbaV0ubGVuZ3RoID09PSAwKSB7CisgICAgICAg
ICAgICBmbnMuc3BsaWNlKGksIDEpOworICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICBpZiAoIWZpbHRlcihmbnNbaV0pKSB7CisgICAgICAgICAgICBmbnMuc3BsaWNlKGks
IDEpOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgICB2YXIgbmV3
Um91dGVzID0gZGVlcENvcHkocm91dGVzKTsKKyAgICBuZXdSb3V0ZXMubWF0Y2hlZCA9IHJvdXRl
cy5tYXRjaGVkOworICAgIG5ld1JvdXRlcy5jYXB0dXJlcyA9IHJvdXRlcy5jYXB0dXJlczsKKyAg
ICBuZXdSb3V0ZXMuYWZ0ZXIgPSByb3V0ZXMuYWZ0ZXIuZmlsdGVyKGZpbHRlcik7CisgICAgYXBw
bHlGaWx0ZXIobmV3Um91dGVzKTsKKyAgICByZXR1cm4gbmV3Um91dGVzOworICB9CisgIGlmIChw
YXRoID09PSB0aGlzLmRlbGltaXRlciAmJiByb3V0ZXNbbWV0aG9kXSkgeworICAgIG5leHQgPSBb
IFsgcm91dGVzLmJlZm9yZSwgcm91dGVzW21ldGhvZF0gXS5maWx0ZXIoQm9vbGVhbikgXTsKKyAg
ICBuZXh0LmFmdGVyID0gWyByb3V0ZXMuYWZ0ZXIgXS5maWx0ZXIoQm9vbGVhbik7CisgICAgbmV4
dC5tYXRjaGVkID0gdHJ1ZTsKKyAgICBuZXh0LmNhcHR1cmVzID0gW107CisgICAgcmV0dXJuIGZp
bHRlclJvdXRlcyhuZXh0KTsKKyAgfQorICBmb3IgKHZhciByIGluIHJvdXRlcykgeworICAgIGlm
IChyb3V0ZXMuaGFzT3duUHJvcGVydHkocikgJiYgKCF0aGlzLl9tZXRob2RzW3JdIHx8IHRoaXMu
X21ldGhvZHNbcl0gJiYgdHlwZW9mIHJvdXRlc1tyXSA9PT0gIm9iamVjdCIgJiYgIUFycmF5Lmlz
QXJyYXkocm91dGVzW3JdKSkpIHsKKyAgICAgIGN1cnJlbnQgPSBleGFjdCA9IHJlZ2V4cCArIHRo
aXMuZGVsaW1pdGVyICsgcjsKKyAgICAgIGlmICghdGhpcy5zdHJpY3QpIHsKKyAgICAgICAgZXhh
Y3QgKz0gIlsiICsgdGhpcy5kZWxpbWl0ZXIgKyAiXT8iOworICAgICAgfQorICAgICAgbWF0Y2gg
PSBwYXRoLm1hdGNoKG5ldyBSZWdFeHAoIl4iICsgZXhhY3QpKTsKKyAgICAgIGlmICghbWF0Y2gp
IHsKKyAgICAgICAgY29udGludWU7CisgICAgICB9CisgICAgICBpZiAobWF0Y2hbMF0gJiYgbWF0
Y2hbMF0gPT0gcGF0aCAmJiByb3V0ZXNbcl1bbWV0aG9kXSkgeworICAgICAgICBuZXh0ID0gWyBb
IHJvdXRlc1tyXS5iZWZvcmUsIHJvdXRlc1tyXVttZXRob2RdIF0uZmlsdGVyKEJvb2xlYW4pIF07
CisgICAgICAgIG5leHQuYWZ0ZXIgPSBbIHJvdXRlc1tyXS5hZnRlciBdLmZpbHRlcihCb29sZWFu
KTsKKyAgICAgICAgbmV4dC5tYXRjaGVkID0gdHJ1ZTsKKyAgICAgICAgbmV4dC5jYXB0dXJlcyA9
IG1hdGNoLnNsaWNlKDEpOworICAgICAgICBpZiAodGhpcy5yZWN1cnNlICYmIHJvdXRlcyA9PT0g
dGhpcy5yb3V0ZXMpIHsKKyAgICAgICAgICBuZXh0LnB1c2goWyByb3V0ZXMuYmVmb3JlLCByb3V0
ZXMub24gXS5maWx0ZXIoQm9vbGVhbikpOworICAgICAgICAgIG5leHQuYWZ0ZXIgPSBuZXh0LmFm
dGVyLmNvbmNhdChbIHJvdXRlcy5hZnRlciBdLmZpbHRlcihCb29sZWFuKSk7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIGZpbHRlclJvdXRlcyhuZXh0KTsKKyAgICAgIH0KKyAgICAgIG5leHQg
PSB0aGlzLnRyYXZlcnNlKG1ldGhvZCwgcGF0aCwgcm91dGVzW3JdLCBjdXJyZW50KTsKKyAgICAg
IGlmIChuZXh0Lm1hdGNoZWQpIHsKKyAgICAgICAgaWYgKG5leHQubGVuZ3RoID4gMCkgeworICAg
ICAgICAgIGZucyA9IGZucy5jb25jYXQobmV4dCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHRo
aXMucmVjdXJzZSkgeworICAgICAgICAgIGZucy5wdXNoKFsgcm91dGVzW3JdLmJlZm9yZSwgcm91
dGVzW3JdLm9uIF0uZmlsdGVyKEJvb2xlYW4pKTsKKyAgICAgICAgICBuZXh0LmFmdGVyID0gbmV4
dC5hZnRlci5jb25jYXQoWyByb3V0ZXNbcl0uYWZ0ZXIgXS5maWx0ZXIoQm9vbGVhbikpOworICAg
ICAgICAgIGlmIChyb3V0ZXMgPT09IHRoaXMucm91dGVzKSB7CisgICAgICAgICAgICBmbnMucHVz
aChbIHJvdXRlc1siYmVmb3JlIl0sIHJvdXRlc1sib24iXSBdLmZpbHRlcihCb29sZWFuKSk7Cisg
ICAgICAgICAgICBuZXh0LmFmdGVyID0gbmV4dC5hZnRlci5jb25jYXQoWyByb3V0ZXNbImFmdGVy
Il0gXS5maWx0ZXIoQm9vbGVhbikpOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBm
bnMubWF0Y2hlZCA9IHRydWU7CisgICAgICAgIGZucy5jYXB0dXJlcyA9IG5leHQuY2FwdHVyZXM7
CisgICAgICAgIGZucy5hZnRlciA9IG5leHQuYWZ0ZXI7CisgICAgICAgIHJldHVybiBmaWx0ZXJS
b3V0ZXMoZm5zKTsKKyAgICAgIH0KKyAgICB9CisgIH0KKyAgcmV0dXJuIGZhbHNlOworfTsKKwor
Um91dGVyLnByb3RvdHlwZS5pbnNlcnQgPSBmdW5jdGlvbihtZXRob2QsIHBhdGgsIHJvdXRlLCBw
YXJlbnQpIHsKKyAgdmFyIG1ldGhvZFR5cGUsIHBhcmVudFR5cGUsIGlzQXJyYXksIG5lc3RlZCwg
cGFydDsKKyAgcGF0aCA9IHBhdGguZmlsdGVyKGZ1bmN0aW9uKHApIHsKKyAgICByZXR1cm4gcCAm
JiBwLmxlbmd0aCA+IDA7CisgIH0pOworICBwYXJlbnQgPSBwYXJlbnQgfHwgdGhpcy5yb3V0ZXM7
CisgIHBhcnQgPSBwYXRoLnNoaWZ0KCk7CisgIGlmICgvXDp8XCovLnRlc3QocGFydCkgJiYgIS9c
XGR8XFx3Ly50ZXN0KHBhcnQpKSB7CisgICAgcGFydCA9IHJlZ2lmeVN0cmluZyhwYXJ0LCB0aGlz
LnBhcmFtcyk7CisgIH0KKyAgaWYgKHBhdGgubGVuZ3RoID4gMCkgeworICAgIHBhcmVudFtwYXJ0
XSA9IHBhcmVudFtwYXJ0XSB8fCB7fTsKKyAgICByZXR1cm4gdGhpcy5pbnNlcnQobWV0aG9kLCBw
YXRoLCByb3V0ZSwgcGFyZW50W3BhcnRdKTsKKyAgfQorICBpZiAoIXBhcnQgJiYgIXBhdGgubGVu
Z3RoICYmIHBhcmVudCA9PT0gdGhpcy5yb3V0ZXMpIHsKKyAgICBtZXRob2RUeXBlID0gdHlwZW9m
IHBhcmVudFttZXRob2RdOworICAgIHN3aXRjaCAobWV0aG9kVHlwZSkgeworICAgICBjYXNlICJm
dW5jdGlvbiI6CisgICAgICBwYXJlbnRbbWV0aG9kXSA9IFsgcGFyZW50W21ldGhvZF0sIHJvdXRl
IF07CisgICAgICByZXR1cm47CisgICAgIGNhc2UgIm9iamVjdCI6CisgICAgICBwYXJlbnRbbWV0
aG9kXS5wdXNoKHJvdXRlKTsKKyAgICAgIHJldHVybjsKKyAgICAgY2FzZSAidW5kZWZpbmVkIjoK
KyAgICAgIHBhcmVudFttZXRob2RdID0gcm91dGU7CisgICAgICByZXR1cm47CisgICAgfQorICAg
IHJldHVybjsKKyAgfQorICBwYXJlbnRUeXBlID0gdHlwZW9mIHBhcmVudFtwYXJ0XTsKKyAgaXNB
cnJheSA9IEFycmF5LmlzQXJyYXkocGFyZW50W3BhcnRdKTsKKyAgaWYgKHBhcmVudFtwYXJ0XSAm
JiAhaXNBcnJheSAmJiBwYXJlbnRUeXBlID09ICJvYmplY3QiKSB7CisgICAgbWV0aG9kVHlwZSA9
IHR5cGVvZiBwYXJlbnRbcGFydF1bbWV0aG9kXTsKKyAgICBzd2l0Y2ggKG1ldGhvZFR5cGUpIHsK
KyAgICAgY2FzZSAiZnVuY3Rpb24iOgorICAgICAgcGFyZW50W3BhcnRdW21ldGhvZF0gPSBbIHBh
cmVudFtwYXJ0XVttZXRob2RdLCByb3V0ZSBdOworICAgICAgcmV0dXJuOworICAgICBjYXNlICJv
YmplY3QiOgorICAgICAgcGFyZW50W3BhcnRdW21ldGhvZF0ucHVzaChyb3V0ZSk7CisgICAgICBy
ZXR1cm47CisgICAgIGNhc2UgInVuZGVmaW5lZCI6CisgICAgICBwYXJlbnRbcGFydF1bbWV0aG9k
XSA9IHJvdXRlOworICAgICAgcmV0dXJuOworICAgIH0KKyAgfSBlbHNlIGlmIChwYXJlbnRUeXBl
ID09ICJ1bmRlZmluZWQiKSB7CisgICAgbmVzdGVkID0ge307CisgICAgbmVzdGVkW21ldGhvZF0g
PSByb3V0ZTsKKyAgICBwYXJlbnRbcGFydF0gPSBuZXN0ZWQ7CisgICAgcmV0dXJuOworICB9Cisg
IHRocm93IG5ldyBFcnJvcigiSW52YWxpZCByb3V0ZSBjb250ZXh0OiAiICsgcGFyZW50VHlwZSk7
Cit9OworCisKKworUm91dGVyLnByb3RvdHlwZS5leHRlbmQgPSBmdW5jdGlvbihtZXRob2RzKSB7
CisgIHZhciBzZWxmID0gdGhpcywgbGVuID0gbWV0aG9kcy5sZW5ndGgsIGk7CisgIGZ1bmN0aW9u
IGV4dGVuZChtZXRob2QpIHsKKyAgICBzZWxmLl9tZXRob2RzW21ldGhvZF0gPSB0cnVlOworICAg
IHNlbGZbbWV0aG9kXSA9IGZ1bmN0aW9uKCkgeworICAgICAgdmFyIGV4dHJhID0gYXJndW1lbnRz
Lmxlbmd0aCA9PT0gMSA/IFsgbWV0aG9kLCAiIiBdIDogWyBtZXRob2QgXTsKKyAgICAgIHNlbGYu
b24uYXBwbHkoc2VsZiwgZXh0cmEuY29uY2F0KEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFy
Z3VtZW50cykpKTsKKyAgICB9OworICB9CisgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgewor
ICAgIGV4dGVuZChtZXRob2RzW2ldKTsKKyAgfQorfTsKKworUm91dGVyLnByb3RvdHlwZS5ydW5s
aXN0ID0gZnVuY3Rpb24oZm5zKSB7CisgIHZhciBydW5saXN0ID0gdGhpcy5ldmVyeSAmJiB0aGlz
LmV2ZXJ5LmJlZm9yZSA/IFsgdGhpcy5ldmVyeS5iZWZvcmUgXS5jb25jYXQoX2ZsYXR0ZW4oZm5z
KSkgOiBfZmxhdHRlbihmbnMpOworICBpZiAodGhpcy5ldmVyeSAmJiB0aGlzLmV2ZXJ5Lm9uKSB7
CisgICAgcnVubGlzdC5wdXNoKHRoaXMuZXZlcnkub24pOworICB9CisgIHJ1bmxpc3QuY2FwdHVy
ZXMgPSBmbnMuY2FwdHVyZXM7CisgIHJ1bmxpc3Quc291cmNlID0gZm5zLnNvdXJjZTsKKyAgcmV0
dXJuIHJ1bmxpc3Q7Cit9OworCitSb3V0ZXIucHJvdG90eXBlLm1vdW50ID0gZnVuY3Rpb24ocm91
dGVzLCBwYXRoKSB7CisgIGlmICghcm91dGVzIHx8IHR5cGVvZiByb3V0ZXMgIT09ICJvYmplY3Qi
IHx8IEFycmF5LmlzQXJyYXkocm91dGVzKSkgeworICAgIHJldHVybjsKKyAgfQorICB2YXIgc2Vs
ZiA9IHRoaXM7CisgIHBhdGggPSBwYXRoIHx8IFtdOworICBpZiAoIUFycmF5LmlzQXJyYXkocGF0
aCkpIHsKKyAgICBwYXRoID0gcGF0aC5zcGxpdChzZWxmLmRlbGltaXRlcik7CisgIH0KKyAgZnVu
Y3Rpb24gaW5zZXJ0T3JNb3VudChyb3V0ZSwgbG9jYWwpIHsKKyAgICB2YXIgcmVuYW1lID0gcm91
dGUsIHBhcnRzID0gcm91dGUuc3BsaXQoc2VsZi5kZWxpbWl0ZXIpLCByb3V0ZVR5cGUgPSB0eXBl
b2Ygcm91dGVzW3JvdXRlXSwgaXNSb3V0ZSA9IHBhcnRzWzBdID09PSAiIiB8fCAhc2VsZi5fbWV0
aG9kc1twYXJ0c1swXV0sIGV2ZW50ID0gaXNSb3V0ZSA/ICJvbiIgOiByZW5hbWU7CisgICAgaWYg
KGlzUm91dGUpIHsKKyAgICAgIHJlbmFtZSA9IHJlbmFtZS5zbGljZSgocmVuYW1lLm1hdGNoKG5l
dyBSZWdFeHAoIl4iICsgc2VsZi5kZWxpbWl0ZXIpKSB8fCBbICIiIF0pWzBdLmxlbmd0aCk7Cisg
ICAgICBwYXJ0cy5zaGlmdCgpOworICAgIH0KKyAgICBpZiAoaXNSb3V0ZSAmJiByb3V0ZVR5cGUg
PT09ICJvYmplY3QiICYmICFBcnJheS5pc0FycmF5KHJvdXRlc1tyb3V0ZV0pKSB7CisgICAgICBs
b2NhbCA9IGxvY2FsLmNvbmNhdChwYXJ0cyk7CisgICAgICBzZWxmLm1vdW50KHJvdXRlc1tyb3V0
ZV0sIGxvY2FsKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGlzUm91dGUpIHsKKyAg
ICAgIGxvY2FsID0gbG9jYWwuY29uY2F0KHJlbmFtZS5zcGxpdChzZWxmLmRlbGltaXRlcikpOwor
ICAgICAgbG9jYWwgPSB0ZXJtaW5hdG9yKGxvY2FsLCBzZWxmLmRlbGltaXRlcik7CisgICAgfQor
ICAgIHNlbGYuaW5zZXJ0KGV2ZW50LCBsb2NhbCwgcm91dGVzW3JvdXRlXSk7CisgIH0KKyAgZm9y
ICh2YXIgcm91dGUgaW4gcm91dGVzKSB7CisgICAgaWYgKHJvdXRlcy5oYXNPd25Qcm9wZXJ0eShy
b3V0ZSkpIHsKKyAgICAgIGluc2VydE9yTW91bnQocm91dGUsIHBhdGguc2xpY2UoMCkpOworICAg
IH0KKyAgfQorfTsKKworCisKK30odHlwZW9mIGV4cG9ydHMgPT09ICJvYmplY3QiID8gZXhwb3J0
cyA6IHdpbmRvdykpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvZGlzdC9kaXJlY3Rvci5taW4u
anMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL2Rpc3QvZGlyZWN0
b3IubWluLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5NTZhZjQwMDk1YmMyMmM2ODg1ZjI3N2VkOWVmNWY3NDE2
YmFlNGYKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVz
L2RpcmVjdG9yL2Rpc3QvZGlyZWN0b3IubWluLmpzCkBAIC0wLDAgKzEsNyBAQAorCisKKy8vCisv
LyBHZW5lcmF0ZWQgb24gVHVlIERlYyAxNiAyMDE0IDEyOjEzOjQ3IEdNVCswMTAwIChDRVQpIGJ5
IENoYXJsaWUgUm9iYmlucywgUGFvbG8gRnJhZ29tZW5pICYgdGhlIENvbnRyaWJ1dG9ycyAoVXNp
bmcgQ29kZXN1cmdlb24pLgorLy8gVmVyc2lvbiAxLjIuNgorLy8KKyhmdW5jdGlvbihhKXtmdW5j
dGlvbiBrKGEsYixjLGQpe3ZhciBlPTAsZj0wLGc9MCxjPShjfHwiKCIpLnRvU3RyaW5nKCksZD0o
ZHx8IikiKS50b1N0cmluZygpLGg7Zm9yKGg9MDtoPGEubGVuZ3RoO2grKyl7dmFyIGk9YVtoXTtp
ZihpLmluZGV4T2YoYyxlKT5pLmluZGV4T2YoZCxlKXx8fmkuaW5kZXhPZihjLGUpJiYhfmkuaW5k
ZXhPZihkLGUpfHwhfmkuaW5kZXhPZihjLGUpJiZ+aS5pbmRleE9mKGQsZSkpe2Y9aS5pbmRleE9m
KGMsZSksZz1pLmluZGV4T2YoZCxlKTtpZih+ZiYmIX5nfHwhfmYmJn5nKXt2YXIgaj1hLnNsaWNl
KDAsKGh8fDEpKzEpLmpvaW4oYik7YT1bal0uY29uY2F0KGEuc2xpY2UoKGh8fDEpKzEpKX1lPShn
PmY/ZzpmKSsxLGg9MH1lbHNlIGU9MH1yZXR1cm4gYX1mdW5jdGlvbiBqKGEsYil7dmFyIGMsZD0w
LGU9IiI7d2hpbGUoYz1hLnN1YnN0cihkKS5tYXRjaCgvW15cd1xkXC0gJUAmXSpcKlteXHdcZFwt
ICVAJl0qLykpZD1jLmluZGV4K2NbMF0ubGVuZ3RoLGNbMF09Y1swXS5yZXBsYWNlKC9eXCovLCIo
W18uKCkhXFwgJUAmYS16QS1aMC05LV0rKSIpLGUrPWEuc3Vic3RyKDAsYy5pbmRleCkrY1swXTth
PWUrPWEuc3Vic3RyKGQpO3ZhciBmPWEubWF0Y2goLzooW15cL10rKS9pZyksZyxoO2lmKGYpe2g9
Zi5sZW5ndGg7Zm9yKHZhciBqPTA7ajxoO2orKylnPWZbal0sZy5zbGljZSgwLDIpPT09Ijo6Ij9h
PWcuc2xpY2UoMSk6YT1hLnJlcGxhY2UoZyxpKGcsYikpfXJldHVybiBhfWZ1bmN0aW9uIGkoYSxi
LGMpe2M9YTtmb3IodmFyIGQgaW4gYilpZihiLmhhc093blByb3BlcnR5KGQpKXtjPWJbZF0oYSk7
aWYoYyE9PWEpYnJlYWt9cmV0dXJuIGM9PT1hPyIoWy5fYS16QS1aMC05LSUoKV0rKSI6Y31mdW5j
dGlvbiBoKGEsYixjKXtpZighYS5sZW5ndGgpcmV0dXJuIGMoKTt2YXIgZD0wOyhmdW5jdGlvbiBl
KCl7YihhW2RdLGZ1bmN0aW9uKGIpe2J8fGI9PT0hMT8oYyhiKSxjPWZ1bmN0aW9uKCl7fSk6KGQr
PTEsZD09PWEubGVuZ3RoP2MoKTplKCkpfSl9KSgpfWZ1bmN0aW9uIGcoYSl7dmFyIGI9W107Zm9y
KHZhciBjPTAsZD1hLmxlbmd0aDtjPGQ7YysrKWI9Yi5jb25jYXQoYVtjXSk7cmV0dXJuIGJ9ZnVu
Y3Rpb24gZihhLGIpe2Zvcih2YXIgYz0wO2M8YS5sZW5ndGg7Yys9MSlpZihiKGFbY10sYyxhKT09
PSExKXJldHVybn1mdW5jdGlvbiBjKCl7cmV0dXJuIGIuaGFzaD09PSIifHxiLmhhc2g9PT0iIyJ9
dmFyIGI9ZG9jdW1lbnQubG9jYXRpb24sZD17bW9kZToibW9kZXJuIixoYXNoOmIuaGFzaCxoaXN0
b3J5OiExLGNoZWNrOmZ1bmN0aW9uKCl7dmFyIGE9Yi5oYXNoO2EhPXRoaXMuaGFzaCYmKHRoaXMu
aGFzaD1hLHRoaXMub25IYXNoQ2hhbmdlZCgpKX0sZmlyZTpmdW5jdGlvbigpe3RoaXMubW9kZT09
PSJtb2Rlcm4iP3RoaXMuaGlzdG9yeT09PSEwP3dpbmRvdy5vbnBvcHN0YXRlKCk6d2luZG93Lm9u
aGFzaGNoYW5nZSgpOnRoaXMub25IYXNoQ2hhbmdlZCgpfSxpbml0OmZ1bmN0aW9uKGEsYil7ZnVu
Y3Rpb24gZChhKXtmb3IodmFyIGI9MCxjPWUubGlzdGVuZXJzLmxlbmd0aDtiPGM7YisrKWUubGlz
dGVuZXJzW2JdKGEpfXZhciBjPXRoaXM7dGhpcy5oaXN0b3J5PWIsZS5saXN0ZW5lcnN8fChlLmxp
c3RlbmVycz1bXSk7aWYoIm9uaGFzaGNoYW5nZSJpbiB3aW5kb3cmJihkb2N1bWVudC5kb2N1bWVu
dE1vZGU9PT11bmRlZmluZWR8fGRvY3VtZW50LmRvY3VtZW50TW9kZT43KSl0aGlzLmhpc3Rvcnk9
PT0hMD9zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7d2luZG93Lm9ucG9wc3RhdGU9ZH0sNTAwKTp3aW5k
b3cub25oYXNoY2hhbmdlPWQsdGhpcy5tb2RlPSJtb2Rlcm4iO2Vsc2V7dmFyIGY9ZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiaWZyYW1lIik7Zi5pZD0ic3RhdGUtZnJhbWUiLGYuc3R5bGUuZGlzcGxh
eT0ibm9uZSIsZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChmKSx0aGlzLndyaXRlRnJhbWUoIiIp
LCJvbnByb3BlcnR5Y2hhbmdlImluIGRvY3VtZW50JiYiYXR0YWNoRXZlbnQiaW4gZG9jdW1lbnQm
JmRvY3VtZW50LmF0dGFjaEV2ZW50KCJvbnByb3BlcnR5Y2hhbmdlIixmdW5jdGlvbigpe2V2ZW50
LnByb3BlcnR5TmFtZT09PSJsb2NhdGlvbiImJmMuY2hlY2soKX0pLHdpbmRvdy5zZXRJbnRlcnZh
bChmdW5jdGlvbigpe2MuY2hlY2soKX0sNTApLHRoaXMub25IYXNoQ2hhbmdlZD1kLHRoaXMubW9k
ZT0ibGVnYWN5In1lLmxpc3RlbmVycy5wdXNoKGEpO3JldHVybiB0aGlzLm1vZGV9LGRlc3Ryb3k6
ZnVuY3Rpb24oYSl7aWYoISFlJiYhIWUubGlzdGVuZXJzKXt2YXIgYj1lLmxpc3RlbmVycztmb3Io
dmFyIGM9Yi5sZW5ndGgtMTtjPj0wO2MtLSliW2NdPT09YSYmYi5zcGxpY2UoYywxKX19LHNldEhh
c2g6ZnVuY3Rpb24oYSl7dGhpcy5tb2RlPT09ImxlZ2FjeSImJnRoaXMud3JpdGVGcmFtZShhKSx0
aGlzLmhpc3Rvcnk9PT0hMD8od2luZG93Lmhpc3RvcnkucHVzaFN0YXRlKHt9LGRvY3VtZW50LnRp
dGxlLGEpLHRoaXMuZmlyZSgpKTpiLmhhc2g9YVswXT09PSIvIj9hOiIvIithO3JldHVybiB0aGlz
fSx3cml0ZUZyYW1lOmZ1bmN0aW9uKGEpe3ZhciBiPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJz
dGF0ZS1mcmFtZSIpLGM9Yi5jb250ZW50RG9jdW1lbnR8fGIuY29udGVudFdpbmRvdy5kb2N1bWVu
dDtjLm9wZW4oKSxjLndyaXRlKCI8c2NyaXB0Pl9oYXNoID0gJyIrYSsiJzsgb25sb2FkID0gcGFy
ZW50Lmxpc3RlbmVyLnN5bmNIYXNoOzxzY3JpcHQ+IiksYy5jbG9zZSgpfSxzeW5jSGFzaDpmdW5j
dGlvbigpe3ZhciBhPXRoaXMuX2hhc2g7YSE9Yi5oYXNoJiYoYi5oYXNoPWEpO3JldHVybiB0aGlz
fSxvbkhhc2hDaGFuZ2VkOmZ1bmN0aW9uKCl7fX0sZT1hLlJvdXRlcj1mdW5jdGlvbihhKXtpZih0
aGlzIGluc3RhbmNlb2YgZSl0aGlzLnBhcmFtcz17fSx0aGlzLnJvdXRlcz17fSx0aGlzLm1ldGhv
ZHM9WyJvbiIsIm9uY2UiLCJhZnRlciIsImJlZm9yZSJdLHRoaXMuc2NvcGU9W10sdGhpcy5fbWV0
aG9kcz17fSx0aGlzLl9pbnNlcnQ9dGhpcy5pbnNlcnQsdGhpcy5pbnNlcnQ9dGhpcy5pbnNlcnRF
eCx0aGlzLmhpc3RvcnlTdXBwb3J0PSh3aW5kb3cuaGlzdG9yeSE9bnVsbD93aW5kb3cuaGlzdG9y
eS5wdXNoU3RhdGU6bnVsbCkhPW51bGwsdGhpcy5jb25maWd1cmUoKSx0aGlzLm1vdW50KGF8fHt9
KTtlbHNlIHJldHVybiBuZXcgZShhKX07ZS5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihhKXt2YXIg
ZT10aGlzLGY7dGhpcy5oYW5kbGVyPWZ1bmN0aW9uKGEpe3ZhciBiPWEmJmEubmV3VVJMfHx3aW5k
b3cubG9jYXRpb24uaGFzaCxjPWUuaGlzdG9yeT09PSEwP2UuZ2V0UGF0aCgpOmIucmVwbGFjZSgv
LiojLywiIik7ZS5kaXNwYXRjaCgib24iLGMuY2hhckF0KDApPT09Ii8iP2M6Ii8iK2MpfSxkLmlu
aXQodGhpcy5oYW5kbGVyLHRoaXMuaGlzdG9yeSksdGhpcy5oaXN0b3J5PT09ITE/YygpJiZhP2Iu
aGFzaD1hOmMoKXx8ZS5kaXNwYXRjaCgib24iLCIvIitiLmhhc2gucmVwbGFjZSgvXigjXC98I3xc
LykvLCIiKSk6KHRoaXMuY29udmVydF9oYXNoX2luX2luaXQ/KGY9YygpJiZhP2E6YygpP251bGw6
Yi5oYXNoLnJlcGxhY2UoL14jLywiIiksZiYmd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKHt9
LGRvY3VtZW50LnRpdGxlLGYpKTpmPXRoaXMuZ2V0UGF0aCgpLChmfHx0aGlzLnJ1bl9pbl9pbml0
PT09ITApJiZ0aGlzLmhhbmRsZXIoKSk7cmV0dXJuIHRoaXN9LGUucHJvdG90eXBlLmV4cGxvZGU9
ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmhpc3Rvcnk9PT0hMD90aGlzLmdldFBhdGgoKTpiLmhhc2g7
YS5jaGFyQXQoMSk9PT0iLyImJihhPWEuc2xpY2UoMSkpO3JldHVybiBhLnNsaWNlKDEsYS5sZW5n
dGgpLnNwbGl0KCIvIil9LGUucHJvdG90eXBlLnNldFJvdXRlPWZ1bmN0aW9uKGEsYixjKXt2YXIg
ZT10aGlzLmV4cGxvZGUoKTt0eXBlb2YgYT09Im51bWJlciImJnR5cGVvZiBiPT0ic3RyaW5nIj9l
W2FdPWI6dHlwZW9mIGM9PSJzdHJpbmciP2Uuc3BsaWNlKGEsYixzKTplPVthXSxkLnNldEhhc2go
ZS5qb2luKCIvIikpO3JldHVybiBlfSxlLnByb3RvdHlwZS5pbnNlcnRFeD1mdW5jdGlvbihhLGIs
YyxkKXthPT09Im9uY2UiJiYoYT0ib24iLGM9ZnVuY3Rpb24oYSl7dmFyIGI9ITE7cmV0dXJuIGZ1
bmN0aW9uKCl7aWYoIWIpe2I9ITA7cmV0dXJuIGEuYXBwbHkodGhpcyxhcmd1bWVudHMpfX19KGMp
KTtyZXR1cm4gdGhpcy5faW5zZXJ0KGEsYixjLGQpfSxlLnByb3RvdHlwZS5nZXRSb3V0ZT1mdW5j
dGlvbihhKXt2YXIgYj1hO2lmKHR5cGVvZiBhPT0ibnVtYmVyIiliPXRoaXMuZXhwbG9kZSgpW2Fd
O2Vsc2UgaWYodHlwZW9mIGE9PSJzdHJpbmciKXt2YXIgYz10aGlzLmV4cGxvZGUoKTtiPWMuaW5k
ZXhPZihhKX1lbHNlIGI9dGhpcy5leHBsb2RlKCk7cmV0dXJuIGJ9LGUucHJvdG90eXBlLmRlc3Ry
b3k9ZnVuY3Rpb24oKXtkLmRlc3Ryb3kodGhpcy5oYW5kbGVyKTtyZXR1cm4gdGhpc30sZS5wcm90
b3R5cGUuZ2V0UGF0aD1mdW5jdGlvbigpe3ZhciBhPXdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTth
LnN1YnN0cigwLDEpIT09Ii8iJiYoYT0iLyIrYSk7cmV0dXJuIGF9O3ZhciBsPS9cPy4qLztlLnBy
b3RvdHlwZS5jb25maWd1cmU9ZnVuY3Rpb24oYSl7YT1hfHx7fTtmb3IodmFyIGI9MDtiPHRoaXMu
bWV0aG9kcy5sZW5ndGg7YisrKXRoaXMuX21ldGhvZHNbdGhpcy5tZXRob2RzW2JdXT0hMDt0aGlz
LnJlY3Vyc2U9YS5yZWN1cnNlfHx0aGlzLnJlY3Vyc2V8fCExLHRoaXMuYXN5bmM9YS5hc3luY3x8
ITEsdGhpcy5kZWxpbWl0ZXI9YS5kZWxpbWl0ZXJ8fCIvIix0aGlzLnN0cmljdD10eXBlb2YgYS5z
dHJpY3Q9PSJ1bmRlZmluZWQiPyEwOmEuc3RyaWN0LHRoaXMubm90Zm91bmQ9YS5ub3Rmb3VuZCx0
aGlzLnJlc291cmNlPWEucmVzb3VyY2UsdGhpcy5oaXN0b3J5PWEuaHRtbDVoaXN0b3J5JiZ0aGlz
Lmhpc3RvcnlTdXBwb3J0fHwhMSx0aGlzLnJ1bl9pbl9pbml0PXRoaXMuaGlzdG9yeT09PSEwJiZh
LnJ1bl9oYW5kbGVyX2luX2luaXQhPT0hMSx0aGlzLmNvbnZlcnRfaGFzaF9pbl9pbml0PXRoaXMu
aGlzdG9yeT09PSEwJiZhLmNvbnZlcnRfaGFzaF9pbl9pbml0IT09ITEsdGhpcy5ldmVyeT17YWZ0
ZXI6YS5hZnRlcnx8bnVsbCxiZWZvcmU6YS5iZWZvcmV8fG51bGwsb246YS5vbnx8bnVsbH07cmV0
dXJuIHRoaXN9LGUucHJvdG90eXBlLnBhcmFtPWZ1bmN0aW9uKGEsYil7YVswXSE9PSI6IiYmKGE9
IjoiK2EpO3ZhciBjPW5ldyBSZWdFeHAoYSwiZyIpO3RoaXMucGFyYW1zW2FdPWZ1bmN0aW9uKGEp
e3JldHVybiBhLnJlcGxhY2UoYyxiLnNvdXJjZXx8Yil9O3JldHVybiB0aGlzfSxlLnByb3RvdHlw
ZS5vbj1lLnByb3RvdHlwZS5yb3V0ZT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpczshYyYmdHlw
ZW9mIGI9PSJmdW5jdGlvbiImJihjPWIsYj1hLGE9Im9uIik7aWYoQXJyYXkuaXNBcnJheShiKSly
ZXR1cm4gYi5mb3JFYWNoKGZ1bmN0aW9uKGIpe2Qub24oYSxiLGMpfSk7Yi5zb3VyY2UmJihiPWIu
c291cmNlLnJlcGxhY2UoL1xcXC8vaWcsIi8iKSk7aWYoQXJyYXkuaXNBcnJheShhKSlyZXR1cm4g
YS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2Qub24oYS50b0xvd2VyQ2FzZSgpLGIsYyl9KTtiPWIuc3Bs
aXQobmV3IFJlZ0V4cCh0aGlzLmRlbGltaXRlcikpLGI9ayhiLHRoaXMuZGVsaW1pdGVyKSx0aGlz
Lmluc2VydChhLHRoaXMuc2NvcGUuY29uY2F0KGIpLGMpfSxlLnByb3RvdHlwZS5wYXRoPWZ1bmN0
aW9uKGEsYil7dmFyIGM9dGhpcyxkPXRoaXMuc2NvcGUubGVuZ3RoO2Euc291cmNlJiYoYT1hLnNv
dXJjZS5yZXBsYWNlKC9cXFwvL2lnLCIvIikpLGE9YS5zcGxpdChuZXcgUmVnRXhwKHRoaXMuZGVs
aW1pdGVyKSksYT1rKGEsdGhpcy5kZWxpbWl0ZXIpLHRoaXMuc2NvcGU9dGhpcy5zY29wZS5jb25j
YXQoYSksYi5jYWxsKHRoaXMsdGhpcyksdGhpcy5zY29wZS5zcGxpY2UoZCxhLmxlbmd0aCl9LGUu
cHJvdG90eXBlLmRpc3BhdGNoPWZ1bmN0aW9uKGEsYixjKXtmdW5jdGlvbiBoKCl7ZC5sYXN0PWUu
YWZ0ZXIsZC5pbnZva2UoZC5ydW5saXN0KGUpLGQsYyl9dmFyIGQ9dGhpcyxlPXRoaXMudHJhdmVy
c2UoYSxiLnJlcGxhY2UobCwiIiksdGhpcy5yb3V0ZXMsIiIpLGY9dGhpcy5faW52b2tlZCxnO3Ro
aXMuX2ludm9rZWQ9ITA7aWYoIWV8fGUubGVuZ3RoPT09MCl7dGhpcy5sYXN0PVtdLHR5cGVvZiB0
aGlzLm5vdGZvdW5kPT0iZnVuY3Rpb24iJiZ0aGlzLmludm9rZShbdGhpcy5ub3Rmb3VuZF0se21l
dGhvZDphLHBhdGg6Yn0sYyk7cmV0dXJuITF9dGhpcy5yZWN1cnNlPT09ImZvcndhcmQiJiYoZT1l
LnJldmVyc2UoKSksZz10aGlzLmV2ZXJ5JiZ0aGlzLmV2ZXJ5LmFmdGVyP1t0aGlzLmV2ZXJ5LmFm
dGVyXS5jb25jYXQodGhpcy5sYXN0KTpbdGhpcy5sYXN0XTtpZihnJiZnLmxlbmd0aD4wJiZmKXt0
aGlzLmFzeW5jP3RoaXMuaW52b2tlKGcsdGhpcyxoKToodGhpcy5pbnZva2UoZyx0aGlzKSxoKCkp
O3JldHVybiEwfWgoKTtyZXR1cm4hMH0sZS5wcm90b3R5cGUuaW52b2tlPWZ1bmN0aW9uKGEsYixj
KXt2YXIgZD10aGlzLGU7dGhpcy5hc3luYz8oZT1mdW5jdGlvbihjLGQpe2lmKEFycmF5LmlzQXJy
YXkoYykpcmV0dXJuIGgoYyxlLGQpO3R5cGVvZiBjPT0iZnVuY3Rpb24iJiZjLmFwcGx5KGIsKGEu
Y2FwdHVyZXN8fFtdKS5jb25jYXQoZCkpfSxoKGEsZSxmdW5jdGlvbigpe2MmJmMuYXBwbHkoYixh
cmd1bWVudHMpfSkpOihlPWZ1bmN0aW9uKGMpe2lmKEFycmF5LmlzQXJyYXkoYykpcmV0dXJuIGYo
YyxlKTtpZih0eXBlb2YgYz09ImZ1bmN0aW9uIilyZXR1cm4gYy5hcHBseShiLGEuY2FwdHVyZXN8
fFtdKTt0eXBlb2YgYz09InN0cmluZyImJmQucmVzb3VyY2UmJmQucmVzb3VyY2VbY10uYXBwbHko
YixhLmNhcHR1cmVzfHxbXSl9LGYoYSxlKSl9LGUucHJvdG90eXBlLnRyYXZlcnNlPWZ1bmN0aW9u
KGEsYixjLGQsZSl7ZnVuY3Rpb24gbChhKXtmdW5jdGlvbiBjKGEpe2Zvcih2YXIgYj1hLmxlbmd0
aC0xO2I+PTA7Yi0tKUFycmF5LmlzQXJyYXkoYVtiXSk/KGMoYVtiXSksYVtiXS5sZW5ndGg9PT0w
JiZhLnNwbGljZShiLDEpKTplKGFbYl0pfHxhLnNwbGljZShiLDEpfWZ1bmN0aW9uIGIoYSl7dmFy
IGM9W107Zm9yKHZhciBkPTA7ZDxhLmxlbmd0aDtkKyspY1tkXT1BcnJheS5pc0FycmF5KGFbZF0p
P2IoYVtkXSk6YVtkXTtyZXR1cm4gY31pZighZSlyZXR1cm4gYTt2YXIgZD1iKGEpO2QubWF0Y2hl
ZD1hLm1hdGNoZWQsZC5jYXB0dXJlcz1hLmNhcHR1cmVzLGQuYWZ0ZXI9YS5hZnRlci5maWx0ZXIo
ZSksYyhkKTtyZXR1cm4gZH12YXIgZj1bXSxnLGgsaSxqLGs7aWYoYj09PXRoaXMuZGVsaW1pdGVy
JiZjW2FdKXtqPVtbYy5iZWZvcmUsY1thXV0uZmlsdGVyKEJvb2xlYW4pXSxqLmFmdGVyPVtjLmFm
dGVyXS5maWx0ZXIoQm9vbGVhbiksai5tYXRjaGVkPSEwLGouY2FwdHVyZXM9W107cmV0dXJuIGwo
ail9Zm9yKHZhciBtIGluIGMpaWYoYy5oYXNPd25Qcm9wZXJ0eShtKSYmKCF0aGlzLl9tZXRob2Rz
W21dfHx0aGlzLl9tZXRob2RzW21dJiZ0eXBlb2YgY1ttXT09Im9iamVjdCImJiFBcnJheS5pc0Fy
cmF5KGNbbV0pKSl7Zz1oPWQrdGhpcy5kZWxpbWl0ZXIrbSx0aGlzLnN0cmljdHx8KGgrPSJbIit0
aGlzLmRlbGltaXRlcisiXT8iKSxpPWIubWF0Y2gobmV3IFJlZ0V4cCgiXiIraCkpO2lmKCFpKWNv
bnRpbnVlO2lmKGlbMF0mJmlbMF09PWImJmNbbV1bYV0pe2o9W1tjW21dLmJlZm9yZSxjW21dW2Fd
XS5maWx0ZXIoQm9vbGVhbildLGouYWZ0ZXI9W2NbbV0uYWZ0ZXJdLmZpbHRlcihCb29sZWFuKSxq
Lm1hdGNoZWQ9ITAsai5jYXB0dXJlcz1pLnNsaWNlKDEpLHRoaXMucmVjdXJzZSYmYz09PXRoaXMu
cm91dGVzJiYoai5wdXNoKFtjLmJlZm9yZSxjLm9uXS5maWx0ZXIoQm9vbGVhbikpLGouYWZ0ZXI9
ai5hZnRlci5jb25jYXQoW2MuYWZ0ZXJdLmZpbHRlcihCb29sZWFuKSkpO3JldHVybiBsKGopfWo9
dGhpcy50cmF2ZXJzZShhLGIsY1ttXSxnKTtpZihqLm1hdGNoZWQpe2oubGVuZ3RoPjAmJihmPWYu
Y29uY2F0KGopKSx0aGlzLnJlY3Vyc2UmJihmLnB1c2goW2NbbV0uYmVmb3JlLGNbbV0ub25dLmZp
bHRlcihCb29sZWFuKSksai5hZnRlcj1qLmFmdGVyLmNvbmNhdChbY1ttXS5hZnRlcl0uZmlsdGVy
KEJvb2xlYW4pKSxjPT09dGhpcy5yb3V0ZXMmJihmLnB1c2goW2MuYmVmb3JlLGMub25dLmZpbHRl
cihCb29sZWFuKSksai5hZnRlcj1qLmFmdGVyLmNvbmNhdChbYy5hZnRlcl0uZmlsdGVyKEJvb2xl
YW4pKSkpLGYubWF0Y2hlZD0hMCxmLmNhcHR1cmVzPWouY2FwdHVyZXMsZi5hZnRlcj1qLmFmdGVy
O3JldHVybiBsKGYpfX1yZXR1cm4hMX0sZS5wcm90b3R5cGUuaW5zZXJ0PWZ1bmN0aW9uKGEsYixj
LGQpe3ZhciBlLGYsZyxoLGk7Yj1iLmZpbHRlcihmdW5jdGlvbihhKXtyZXR1cm4gYSYmYS5sZW5n
dGg+MH0pLGQ9ZHx8dGhpcy5yb3V0ZXMsaT1iLnNoaWZ0KCksL1w6fFwqLy50ZXN0KGkpJiYhL1xc
ZHxcXHcvLnRlc3QoaSkmJihpPWooaSx0aGlzLnBhcmFtcykpO2lmKGIubGVuZ3RoPjApe2RbaV09
ZFtpXXx8e307cmV0dXJuIHRoaXMuaW5zZXJ0KGEsYixjLGRbaV0pfXtpZighIWl8fCEhYi5sZW5n
dGh8fGQhPT10aGlzLnJvdXRlcyl7Zj10eXBlb2YgZFtpXSxnPUFycmF5LmlzQXJyYXkoZFtpXSk7
aWYoZFtpXSYmIWcmJmY9PSJvYmplY3QiKXtlPXR5cGVvZiBkW2ldW2FdO3N3aXRjaChlKXtjYXNl
ImZ1bmN0aW9uIjpkW2ldW2FdPVtkW2ldW2FdLGNdO3JldHVybjtjYXNlIm9iamVjdCI6ZFtpXVth
XS5wdXNoKGMpO3JldHVybjtjYXNlInVuZGVmaW5lZCI6ZFtpXVthXT1jO3JldHVybn19ZWxzZSBp
ZihmPT0idW5kZWZpbmVkIil7aD17fSxoW2FdPWMsZFtpXT1oO3JldHVybn10aHJvdyBuZXcgRXJy
b3IoIkludmFsaWQgcm91dGUgY29udGV4dDogIitmKX1lPXR5cGVvZiBkW2FdO3N3aXRjaChlKXtj
YXNlImZ1bmN0aW9uIjpkW2FdPVtkW2FdLGNdO3JldHVybjtjYXNlIm9iamVjdCI6ZFthXS5wdXNo
KGMpO3JldHVybjtjYXNlInVuZGVmaW5lZCI6ZFthXT1jO3JldHVybn19fSxlLnByb3RvdHlwZS5l
eHRlbmQ9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gZShhKXtiLl9tZXRob2RzW2FdPSEwLGJbYV09ZnVu
Y3Rpb24oKXt2YXIgYz1hcmd1bWVudHMubGVuZ3RoPT09MT9bYSwiIl06W2FdO2Iub24uYXBwbHko
YixjLmNvbmNhdChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpKSl9fXZhciBi
PXRoaXMsYz1hLmxlbmd0aCxkO2ZvcihkPTA7ZDxjO2QrKyllKGFbZF0pfSxlLnByb3RvdHlwZS5y
dW5saXN0PWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuZXZlcnkmJnRoaXMuZXZlcnkuYmVmb3JlP1t0
aGlzLmV2ZXJ5LmJlZm9yZV0uY29uY2F0KGcoYSkpOmcoYSk7dGhpcy5ldmVyeSYmdGhpcy5ldmVy
eS5vbiYmYi5wdXNoKHRoaXMuZXZlcnkub24pLGIuY2FwdHVyZXM9YS5jYXB0dXJlcyxiLnNvdXJj
ZT1hLnNvdXJjZTtyZXR1cm4gYn0sZS5wcm90b3R5cGUubW91bnQ9ZnVuY3Rpb24oYSxiKXtmdW5j
dGlvbiBkKGIsZCl7dmFyIGU9YixmPWIuc3BsaXQoYy5kZWxpbWl0ZXIpLGc9dHlwZW9mIGFbYl0s
aD1mWzBdPT09IiJ8fCFjLl9tZXRob2RzW2ZbMF1dLGk9aD8ib24iOmU7aCYmKGU9ZS5zbGljZSgo
ZS5tYXRjaChuZXcgUmVnRXhwKCJeIitjLmRlbGltaXRlcikpfHxbIiJdKVswXS5sZW5ndGgpLGYu
c2hpZnQoKSk7aCYmZz09PSJvYmplY3QiJiYhQXJyYXkuaXNBcnJheShhW2JdKT8oZD1kLmNvbmNh
dChmKSxjLm1vdW50KGFbYl0sZCkpOihoJiYoZD1kLmNvbmNhdChlLnNwbGl0KGMuZGVsaW1pdGVy
KSksZD1rKGQsYy5kZWxpbWl0ZXIpKSxjLmluc2VydChpLGQsYVtiXSkpfWlmKCEhYSYmdHlwZW9m
IGE9PSJvYmplY3QiJiYhQXJyYXkuaXNBcnJheShhKSl7dmFyIGM9dGhpcztiPWJ8fFtdLEFycmF5
LmlzQXJyYXkoYil8fChiPWIuc3BsaXQoYy5kZWxpbWl0ZXIpKTtmb3IodmFyIGUgaW4gYSlhLmhh
c093blByb3BlcnR5KGUpJiZkKGUsYi5zbGljZSgwKSl9fX0pKHR5cGVvZiBleHBvcnRzPT0ib2Jq
ZWN0Ij9leHBvcnRzOndpbmRvdykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL2Rpc3QvZW5kZXIu
anMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL2Rpc3QvZW5kZXIu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZmUzZWJjNDFiMGJkZTA2NGJmZDMzNjNmZDVkZDBiMzQwNmVmYjllZgot
LS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0
b3IvZGlzdC9lbmRlci5qcwpAQCAtMCwwICsxLDMgQEAKKyQuZW5kZXIoeworICByb3V0ZXI6IFJv
dXRlcgorfSk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2Rp
cmVjdG9yL3BhY2thZ2UuanNvbiBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGly
ZWN0b3IvcGFja2FnZS5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEwYmQyOTYyNzI3ZjQ2NGRjYmUwOTgxNzJh
OTlmYThkZTc2YWI5YmQKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9k
ZV9tb2R1bGVzL2RpcmVjdG9yL3BhY2thZ2UuanNvbgpAQCAtMCwwICsxLDQxIEBACit7CisgICJu
YW1lIjogImRpcmVjdG9yIiwKKyAgImRlc2NyaXB0aW9uIjogIkEgY2xpZW50IFNpZGUvU2VydmVy
IFNpZGUgUm91dGVyIiwKKyAgImF1dGhvciI6ICJDaGFybGllIFJvYmJpbnMgPGNoYXJsaWUucm9i
Ymluc0BnbWFpbC5jb20+IiwKKyAgInZlcnNpb24iOiAiMS4yLjgiLAorICAibWFpbnRhaW5lcnMi
OiBbCisgICAgImhpajFueCA8cGFvbG9Abm9kZWppdHN1LmNvbT4iLAorICAgICJiZWF1Z3VuZGVy
c29uIDxiZWF1QGJlYXVndW5kZXJzb24uY29tPiIKKyAgXSwKKyAgInJlcG9zaXRvcnkiOiB7Cisg
ICAgInR5cGUiOiAiZ2l0IiwKKyAgICAidXJsIjogImh0dHA6Ly9naXRodWIuY29tL2ZsYXRpcm9u
L2RpcmVjdG9yLmdpdCIKKyAgfSwKKyAgImtleXdvcmRzIjogWworICAgICJVUkwiLAorICAgICJy
b3V0ZXIiLAorICAgICJodHRwIiwKKyAgICAiY2xpIiwKKyAgICAiZmxhdGlyb24iLAorICAgICJj
bGllbnQgc2lkZSIsCisgICAgImVuZGVyIgorICBdLAorICAiZGV2RGVwZW5kZW5jaWVzIjogewor
ICAgICJhcGktZWFzeSI6ICIwLjQueCIsCisgICAgImNvZGVzdXJnZW9uIjogImh0dHBzOi8vZ2l0
aHViLmNvbS9oaWoxbngvY29kZXN1cmdlb24vdGFyYmFsbC9tYXN0ZXIiLAorICAgICJjb2xvcnMi
OiAiMS4wLngiLAorICAgICJxdW5pdGpzIjogIjEuOS54IiwKKyAgICAicmVxdWVzdCI6ICIyLjQ5
LngiLAorICAgICJ1Z2xpZnktanMiOiAiMi40LngiLAorICAgICJ2b3dzIjogIjAuOC4wIgorICB9
LAorICAiZW5kZXIiOiAiLi9idWlsZC9lbmRlci5qcyIsCisgICJicm93c2VyaWZ5IjogIi4vYnVp
bGQvZGlyZWN0b3IiLAorICAibWFpbiI6ICIuL2xpYi9kaXJlY3RvciIsCisgICJlbmdpbmVzIjog
eworICAgICJub2RlIjogIj49IDAuOC4wIgorICB9LAorICAic2NyaXB0cyI6IHsKKyAgICAidGVz
dCI6ICJ2b3dzIHRlc3Qvc2VydmVyLyovKi10ZXN0LmpzIC0tc3BlYyIKKyAgfQorfQpkaWZmIC0t
Z2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9mdW5j
dGlvbmFsLXByb2ctZXhhbXBsZXMvZWxtL2luZGV4Lmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Z1bmN0aW9uYWwtcHJvZy1leGFtcGxlcy9lbG0v
aW5kZXguaHRtbAppbmRleCA5NTE0YzRjZDhhMDY4MWYyMTYzMTU4ZDhjZmEyOTZhYjU4OTg3N2Nm
Li45OTEzNGEyNWZjNTM5YzhlOGQ1M2U0MTFjZjY4ZGI4N2UzYmVkY2ZmIDEwMDY0NAotLS0gYS9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Z1bmN0aW9uYWwt
cHJvZy1leGFtcGxlcy9lbG0vaW5kZXguaHRtbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Z1bmN0aW9uYWwtcHJvZy1leGFtcGxlcy9lbG0vaW5k
ZXguaHRtbApAQCAtMTYsNyArMTYsNyBAQAogPC9oZWFkPgogCiA8Ym9keT4KLTxzY3JpcHQgc3Jj
PSJidWlsZC9lbG0uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9ImRpc3QvZWxtLmpzIj48L3Nj
cmlwdD4KIDxzY3JpcHQ+CiAgICAgKGZ1bmN0aW9uICgpIHsKICAgICAgICAgLy8gdmFyIHJlc3Vs
dCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdlbG0tdG9kby1tb2RlbCcpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>310057</attachid>
            <date>2017-05-13 20:47:17 -0700</date>
            <delta_ts>2017-05-16 00:03:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170513-20170513204716.patch</filename>
            <type>text/plain</type>
            <size>76472</size>
            <attacher name="Addy Osmani">addyo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2ODEwCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDU5ZTYwNDhjODMx
OGE3MzczZGZlYzg4MTU5ODgxMDM3MTM0NTMzN2YuLjdhOTUxY2U2NGM5ZTYyNzcyMjkyMDY3MzZk
ODM1ODBkNmU1NGE5MTIgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzkgQEAKIDIwMTctMDUt
MTIgIEFkZHkgT3NtYW5pICA8YWRkeW9zbWFuaUBnbWFpbC5jb20+CiAKKyAgICAgICAgVXBkYXRl
IHRvIFNwZWVkb21ldGVyIDIuMCB3L3VwZGF0ZWQgZnJhbWV3b3JrcyArIG5ldyB3b3JrbG9hZHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDUxMwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNwZWVkb21l
dGVyOiByZWZyZXNoIHRlc3QgcnVubmVyIGFuZCBmaXggYXBwcyB0byB3b3JrIHdpdGggaXQKKwor
ICAgICAgICAqIFNwZWVkb21ldGVyL0ludGVyYWN0aXZlUnVubmVyLmh0bWw6CisgICAgICAgIChw
YXJzZVF1ZXJ5U3RyaW5nKTogQWRkcyBzdXBwb3J0IGZvciBzdGFydEF1dG9tYXRpY2FsbHkgcGFy
YW0KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdGVzdHMuanM6CisgICAgICAgICh0
cmlnZ2VyRW50ZXIpOiBSZWZhY3RvciBldmVudCB0cmlnZ2VyaW5nIGJlaGF2aW9yIGZvciB0ZXN0
cworICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9hbmd1bGFyL2Rpc3QvaW5kZXguaHRtbDoKKyAgICAgICAgKENTUyk6IERyb3AgcmVm
ZXJlbmNlIHRvIGV4dHJhbmVvdXMgc3R5bGVzaGVldCBpbiBBbmd1bGFyIFRvZG9NVkMKKyAgICAg
ICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
ZW1iZXJqcy9hc3NldHMvdG9kb212Yy5qczoKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9pbmRleC5odG1sOgorICAg
ICAgICAoYmFzZSk6IGVuYWJsZSBFbWJlciBUb2RvTVZDIHRvIGJlIHJ1biBmcm9tIGFueSBkaXJl
Y3RvcnkvbGV2ZWwKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvYXBwL3NlcnZpY2VzL21lbW9yeS5qczoK
KyAgICAgICAgKGxvY2FsU3RvcmFnZU1lbW9yeSk6IENvcnJlY3QgaW1wb3J0IHBhdGggYW5kIHN3
aXRjaCB0byB3aW5kb3cubG9jYWxTdG9yYWdlTWVtb3J5IHRvIGZpeCBFbWJlciBmYWlsdXJlcwor
ICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9lbWJlcmpzL3NvdXJjZS9hcHAvc2VydmljZXMvcmVwby5qczoKKyAgICAgICAgKiBTcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy90
ZXN0cy9pbmRleC5odG1sOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvaW5kZXguaHRtbDoKKyAgICAgICAgKiBTcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25v
ZGVfbW9kdWxlcy9kaXJlY3Rvci9MSUNFTlNFOiBBZGRlZC4KKyAgICAgICAgKExJQ0VOU0UpOiBB
ZGQgbWlzc2luZyBtZXRhZGF0YSBhbmQgTElDRU5TRSBmaWxlcyBhcyBwYXJ0IG9mIGRpcmVjdG9y
LmpzIHBhY2thZ2UgZm9yIGpRdWVyeSBUb2RvTVZDCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMv
ZGlyZWN0b3IvYm93ZXIuanNvbjogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGly
ZWN0b3IvZGlzdC9kaXJlY3Rvci5qczogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMv
ZGlyZWN0b3IvZGlzdC9kaXJlY3Rvci5taW4uanM6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9t
b2R1bGVzL2RpcmVjdG9yL2Rpc3QvZW5kZXIuanM6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9t
b2R1bGVzL2RpcmVjdG9yL3BhY2thZ2UuanNvbjogQWRkZWQuCisgICAgICAgIChkaXJlY3Rvcik6
IEFkZCBtaXNzaW5nIGRpcmVjdG9yLmpzIGRlcGVuZGVuY3kgZm9yIGpRdWVyeSBUb2RvTVZDIGlt
cGxlbWVudGF0aW9uCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZnVu
Y3Rpb25hbC1wcm9nLWV4YW1wbGVzL2VsbS9pbmRleC5odG1sOgorICAgICAgICAocGF0aCk6IEZp
eCBwYXRoIHRvIGJ1aWx0IEVsbSBUb2RvTVZDIHNjcmlwdHMgKGJ1aWxkIC0+IGRpc3QpCisKKzIw
MTctMDUtMTIgIEFkZHkgT3NtYW5pICA8YWRkeW9zbWFuaUBnbWFpbC5jb20+CisKICAgICAgICAg
U3BlZWRvbWV0ZXI6IEFkZCBhIFJlYWN0LmpzIFRvZG9NVkMgaW1wbGVtZW50YXRpb24KICAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTQ0NAogCmRpZmYg
LS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL0ludGVyYWN0aXZlUnVubmVyLmh0
bWwgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL0ludGVyYWN0aXZlUnVubmVyLmh0bWwK
aW5kZXggOTIwNzZhNGFjYWJlN2RiY2ViOGIwYjViOWU1MzM2ODg2ZDllYzQ1NS4uNzgwMzY4MGQx
N2QxZDliNzc1NzZhMjdhODY4YTA0NDljYjdiOGEzMyAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9JbnRlcmFjdGl2ZVJ1bm5lci5odG1sCisrKyBiL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvSW50ZXJhY3RpdmVSdW5uZXIuaHRtbApAQCAtMSw3ICsxLDcgQEAK
IDwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KLTx0aXRsZT5Eb1lvdUV2ZW5CZW5jaDwv
dGl0bGU+Cis8dGl0bGU+U3BlZWRvbWV0ZXIgMi4wIEludGVyYWN0aXZlIFJ1bm5lcjwvdGl0bGU+
CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JlbmNobWFyay1ydW5uZXIuanMiIGRlZmVyPjwvc2Ny
aXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy90ZXN0cy5qcyIgZGVmZXI+PC9zY3JpcHQ+CiA8
c3R5bGU+CkBAIC02NiwxMyArNjYsMzkgQEAgZnVuY3Rpb24gY3JlYXRlVUlGb3JTdWl0ZXMoc3Vp
dGVzLCBvbnN0ZXAsIG9ucnVuKSB7CiAKICAgICB2YXIgYnV0dG9uID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnYnV0dG9uJyk7CiAgICAgYnV0dG9uLnRleHRDb250ZW50ID0gJ1J1bic7CisgICAg
YnV0dG9uLmlkID0gJ3J1blN1aXRlcyc7CiAgICAgYnV0dG9uLm9uY2xpY2sgPSBvbnJ1bjsKICAg
ICBjb250cm9sLmFwcGVuZENoaWxkKGJ1dHRvbik7CiAKICAgICByZXR1cm4gY29udHJvbDsKIH0K
IAordmFyIHBhcnNlUXVlcnlTdHJpbmcgPSAoZnVuY3Rpb24gKHBhaXJMaXN0KSB7CisgICAgdmFy
IHBhaXJzID0ge307CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYWlyTGlzdC5sZW5ndGg7ICsr
aSkgeworICAgICAgICB2YXIga2V5VmFsdWUgPSBwYWlyTGlzdFtpXS5zcGxpdCgnPScsIDIpOwor
ICAgICAgICBpZiAoa2V5VmFsdWUubGVuZ3RoID09IDEpCisgICAgICAgICAgICBwYWlyc1trZXlW
YWx1ZVswXV0gPSAnJzsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcGFpcnNba2V5VmFsdWVb
MF1dID0gZGVjb2RlVVJJQ29tcG9uZW50KGtleVZhbHVlWzFdLnJlcGxhY2UoL1wrL2csICcgJykp
OworICAgIH0KKyAgICByZXR1cm4gcGFpcnM7Cit9KSh3aW5kb3cubG9jYXRpb24uc2VhcmNoLnN1
YnN0cigxKS5zcGxpdCgnJicpKTsKKworZnVuY3Rpb24gZGlzYWJsZUFsbFN1aXRlc0V4Y2VwdChz
dWl0ZU5hbWUpIHsKKyAgICBpZiAoc3VpdGVOYW1lID09PSB1bmRlZmluZWQgfHwgc3VpdGVOYW1l
ID09PSAnJykKKyAgICAgICAgcmV0dXJuOworICAgIFN1aXRlcy5mb3JFYWNoKGZ1bmN0aW9uKGVs
ZW1lbnQpIHsKKyAgICAgICAgaWYgKGVsZW1lbnQubmFtZSAhPT0gc3VpdGVOYW1lKQorICAgICAg
ICAgICAgZWxlbWVudC5kaXNhYmxlZCA9IHRydWU7CisgICAgfSk7Cit9CisKIGZ1bmN0aW9uIHN0
YXJ0VGVzdCgpIHsKKyAgICB2YXIgcXVlcnlQYXJhbSA9IHBhcnNlUXVlcnlTdHJpbmdbJ3N1aXRl
J107CisgICAgaWYgKHF1ZXJ5UGFyYW0gIT09IHVuZGVmaW5lZCkKKyAgICAgICAgZGlzYWJsZUFs
bFN1aXRlc0V4Y2VwdChxdWVyeVBhcmFtKTsKKwogICAgIHZhciBydW5uZXIgPSBuZXcgQmVuY2ht
YXJrUnVubmVyKFN1aXRlcywgewogICAgICAgICB3aWxsUnVuVGVzdDogZnVuY3Rpb24gKHN1aXRl
LCB0ZXN0KSB7CiAgICAgICAgICAgICB0ZXN0LmFuY2hvci5jbGFzc0xpc3QuYWRkKCdydW5uaW5n
Jyk7CkBAIC0xMTIsNiArMTM4LDkgQEAgZnVuY3Rpb24gc3RhcnRUZXN0KCkgewogICAgIGRvY3Vt
ZW50LmJvZHkuYXBwZW5kQ2hpbGQoY3JlYXRlVUlGb3JTdWl0ZXMoU3VpdGVzLAogICAgICAgICBm
dW5jdGlvbiAoKSB7IHJ1bm5lci5zdGVwKGN1cnJlbnRTdGF0ZSkudGhlbihmdW5jdGlvbiAoc3Rh
dGUpIHsgY3VycmVudFN0YXRlID0gc3RhdGU7IH0pOyB9LAogICAgICAgICBmdW5jdGlvbiAoKSB7
IHJ1bm5lci5ydW5BbGxTdGVwcyhjdXJyZW50U3RhdGUpOyBjdXJyZW50U3RhdGUgPSBudWxsOyB9
KSk7CisKKyAgICBpZiAocGFyc2VRdWVyeVN0cmluZ1snc3RhcnRBdXRvbWF0aWNhbGx5J10gIT09
IHVuZGVmaW5lZCkKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3J1blN1aXRlcycp
LmNsaWNrKCk7CiB9CiAKIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgc3RhcnRUZXN0
KTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rl
c3RzLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdGVzdHMuanMK
aW5kZXggZTZmMjM5Y2M5NGVhMjQ3ZmRmYWZhOGVmMzM0YTRmY2IxNzQyODBkOS4uMTY2ODFhZDEw
NzQ0ZTk1YmMxMTZkY2ZiMjVkMWRjZTI2NmJhYWFkNiAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdGVzdHMuanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdGVzdHMuanMKQEAgLTEsMjEgKzEsMzEgQEAKIHZhciBu
dW1iZXJPZkl0ZW1zVG9BZGQgPSAxMDA7CiB2YXIgU3VpdGVzID0gW107Cit2YXIgRU5URVJfS0VZ
X0NPREUgPSAxMzsKKwordmFyIHRyaWdnZXJFbnRlciA9IGZ1bmN0aW9uIChlbGVtZW50LCB0eXBl
KSB7CisgICAgdmFyIGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50cycpOworICAg
IGV2ZW50LmluaXRFdmVudCh0eXBlLCB0cnVlLCB0cnVlKTsKKyAgICBldmVudC5rZXlDb2RlID0g
RU5URVJfS0VZX0NPREU7CisgICAgZXZlbnQud2hpY2ggPSBFTlRFUl9LRVlfQ09ERTsKKyAgICBl
dmVudC5rZXkgPSAnRU5URVInOworICAgIGVsZW1lbnQuZGlzcGF0Y2hFdmVudChldmVudCk7Cit9
CiAKIFN1aXRlcy5wdXNoKHsKICAgICBuYW1lOiAnVmFuaWxsYUpTLVRvZG9NVkMnLAogICAgIHVy
bDogJ3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvaW5kZXguaHRtbCcsCiAgICAg
cHJlcGFyZTogZnVuY3Rpb24gKHJ1bm5lciwgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50
KSB7Ci0gICAgICAgIHJldHVybiBydW5uZXIud2FpdEZvckVsZW1lbnQoJyNuZXctdG9kbycpLnRo
ZW4oZnVuY3Rpb24gKGVsZW1lbnQpIHsKKyAgICAgICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxl
bWVudCgnLm5ldy10b2RvJykudGhlbihmdW5jdGlvbiAoZWxlbWVudCkgewogICAgICAgICAgICAg
ZWxlbWVudC5mb2N1cygpOwogICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CiAgICAgICAgIH0p
OwogICAgIH0sCiAgICAgdGVzdHM6IFsKICAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdB
ZGRpbmcnICsgbnVtYmVyT2ZJdGVtc1RvQWRkICsgJ0l0ZW1zJywgZnVuY3Rpb24gKG5ld1RvZG8s
IGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgewotICAgICAgICAgICAgdmFyIHRvZG9D
b250cm9sbGVyID0gY29udGVudFdpbmRvdy50b2RvLmNvbnRyb2xsZXI7CiAgICAgICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IG51bWJlck9mSXRlbXNUb0FkZDsgaSsrKSB7CiAgICAgICAgICAg
ICAgICAgbmV3VG9kby52YWx1ZSA9ICdTb21ldGhpbmcgdG8gZG8gJyArIGk7Ci0gICAgICAgICAg
ICAgICAgdG9kb0NvbnRyb2xsZXIuYWRkSXRlbSh7a2V5Q29kZTogdG9kb0NvbnRyb2xsZXIuRU5U
RVJfS0VZLCB0YXJnZXQ6IG5ld1RvZG99KTsKKyAgICAgICAgICAgICAgICBuZXdUb2RvLmRpc3Bh
dGNoRXZlbnQobmV3IEV2ZW50KCdjaGFuZ2UnKSk7CisgICAgICAgICAgICAgICAgdHJpZ2dlckVu
dGVyKG5ld1RvZG8sICdrZXlwcmVzcycpOwogICAgICAgICAgICAgfQogICAgICAgICB9KSwKICAg
ICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdDb21wbGV0aW5nQWxsSXRlbXMnLCBmdW5jdGlv
biAobmV3VG9kbywgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CkBAIC0zMiw1NiAr
NDIsODQgQEAgU3VpdGVzLnB1c2goewogfSk7CiAKIFN1aXRlcy5wdXNoKHsKLSAgICBuYW1lOiAn
RW1iZXJKUy1Ub2RvTVZDJywKLSAgICB1cmw6ICd0b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9lbWJlcmpzL2luZGV4Lmh0bWwnLAorICAgIG5hbWU6ICdWYW5pbGxhLUVTMjAxNS1Ub2RvTVZD
JywKKyAgICB1cmw6ICd0b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1L2luZGV4Lmh0bWwn
LAogICAgIHByZXBhcmU6IGZ1bmN0aW9uIChydW5uZXIsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnRE
b2N1bWVudCkgewotICAgICAgICByZXR1cm4gcnVubmVyLndhaXRGb3JFbGVtZW50KCcjbmV3LXRv
ZG8nKS50aGVuKGZ1bmN0aW9uIChlbGVtZW50KSB7CisgICAgICAgIHJldHVybiBydW5uZXIud2Fp
dEZvckVsZW1lbnQoJy5uZXctdG9kbycpLnRoZW4oZnVuY3Rpb24gKGVsZW1lbnQpIHsKICAgICAg
ICAgICAgIGVsZW1lbnQuZm9jdXMoKTsKLSAgICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAg
ICAgICAgdmlld3M6IGNvbnRlbnRXaW5kb3cuRW1iZXIuVmlldy52aWV3cywKLSAgICAgICAgICAg
ICAgICBlbWJlclJ1bjogY29udGVudFdpbmRvdy5FbWJlci5ydW4sCi0gICAgICAgICAgICB9Cisg
ICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKICAgICAgICAgfSk7CiAgICAgfSwKICAgICB0ZXN0
czogWwotICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0FkZGluZycgKyBudW1iZXJPZkl0
ZW1zVG9BZGQgKyAnSXRlbXMnLCBmdW5jdGlvbiAocGFyYW1zKSB7CisgICAgICAgIG5ldyBCZW5j
aG1hcmtUZXN0U3RlcCgnQWRkaW5nJyArIG51bWJlck9mSXRlbXNUb0FkZCArICdJdGVtcycsIGZ1
bmN0aW9uIChuZXdUb2RvLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKICAgICAg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtYmVyT2ZJdGVtc1RvQWRkOyBpKyspIHsKLSAg
ICAgICAgICAgICAgICBwYXJhbXMuZW1iZXJSdW4oZnVuY3Rpb24gKCkgeyBwYXJhbXMudmlld3Nb
Im5ldy10b2RvIl0uc2V0KCd2YWx1ZScsICdTb21ldGhpbmcgdG8gZG8nICsgaSk7IH0pOwotICAg
ICAgICAgICAgICAgIHBhcmFtcy5lbWJlclJ1bihmdW5jdGlvbiAoKSB7IHBhcmFtcy52aWV3c1si
bmV3LXRvZG8iXS5pbnNlcnROZXdsaW5lKGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdFdmVudCcpKTsg
fSk7CisgICAgICAgICAgICAgICAgbmV3VG9kby52YWx1ZSA9ICdTb21ldGhpbmcgdG8gZG8nICsg
aTsKKyAgICAgICAgICAgICAgICBuZXdUb2RvLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdjaGFu
Z2UnKSk7CisgICAgICAgICAgICAgICAgdHJpZ2dlckVudGVyKG5ld1RvZG8sICdrZXlwcmVzcycp
OwogICAgICAgICAgICAgfQogICAgICAgICB9KSwKICAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RT
dGVwKCdDb21wbGV0aW5nQWxsSXRlbXMnLCBmdW5jdGlvbiAocGFyYW1zLCBjb250ZW50V2luZG93
LCBjb250ZW50RG9jdW1lbnQpIHsKLSAgICAgICAgICAgIHZhciBjaGVja2JveGVzID0gY29udGVu
dERvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5lbWJlci1jaGVja2JveCcpOwotICAgICAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGVja2JveGVzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAg
ICAgICAgICAgdmFyIHZpZXcgPSBwYXJhbXMudmlld3NbY2hlY2tib3hlc1tpXS5pZF07Ci0gICAg
ICAgICAgICAgICAgcGFyYW1zLmVtYmVyUnVuKGZ1bmN0aW9uICgpIHsgdmlldy5zZXQoJ2NoZWNr
ZWQnLCB0cnVlKTsgfSk7CisgICAgICAgICAgICB2YXIgY2hlY2tib3hlcyA9IGNvbnRlbnREb2N1
bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudG9nZ2xlJyk7CisgICAgICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGNoZWNrYm94ZXMubGVuZ3RoOyBpKyspCisgICAgICAgICAgICAgICAgY2hlY2ti
b3hlc1tpXS5jbGljaygpOworICAgICAgICB9KSwKKyAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RT
dGVwKCdEZWxldGluZ0l0ZW1zJywgZnVuY3Rpb24gKHBhcmFtcywgY29udGVudFdpbmRvdywgY29u
dGVudERvY3VtZW50KSB7CisgICAgICAgICAgICB2YXIgZGVsZXRlQnV0dG9ucyA9IGNvbnRlbnRE
b2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZGVzdHJveScpOworICAgICAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBkZWxldGVCdXR0b25zLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgICAg
IGRlbGV0ZUJ1dHRvbnNbaV0uY2xpY2soKTsKKyAgICAgICAgfSksCisgICAgXQorfSk7CisKK1N1
aXRlcy5wdXNoKHsKKyAgICBuYW1lOiAnVmFuaWxsYS1FUzIwMTUtQmFiZWwtV2VicGFjay1Ub2Rv
TVZDJywKKyAgICB1cmw6ICd0b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdl
YnBhY2svZGlzdC9pbmRleC5odG1sJywKKyAgICBwcmVwYXJlOiBmdW5jdGlvbiAocnVubmVyLCBj
b250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgcmV0dXJuIHJ1bm5lci53
YWl0Rm9yRWxlbWVudCgnLm5ldy10b2RvJykudGhlbihmdW5jdGlvbiAoZWxlbWVudCkgeworICAg
ICAgICAgICAgZWxlbWVudC5mb2N1cygpOworICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7Cisg
ICAgICAgIH0pOworICAgIH0sCisgICAgdGVzdHM6IFsKKyAgICAgICAgbmV3IEJlbmNobWFya1Rl
c3RTdGVwKCdBZGRpbmcnICsgbnVtYmVyT2ZJdGVtc1RvQWRkICsgJ0l0ZW1zJywgZnVuY3Rpb24g
KG5ld1RvZG8sIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgeworICAgICAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBudW1iZXJPZkl0ZW1zVG9BZGQ7IGkrKykgeworICAgICAgICAg
ICAgICAgIG5ld1RvZG8udmFsdWUgPSAnU29tZXRoaW5nIHRvIGRvJyArIGk7CisgICAgICAgICAg
ICAgICAgbmV3VG9kby5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnY2hhbmdlJykpOworICAgICAg
ICAgICAgICAgIHRyaWdnZXJFbnRlcihuZXdUb2RvLCAna2V5cHJlc3MnKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfSksCisgICAgICAgIG5ldyBCZW5jaG1hcmtUZXN0U3RlcCgnQ29tcGxldGlu
Z0FsbEl0ZW1zJywgZnVuY3Rpb24gKHBhcmFtcywgY29udGVudFdpbmRvdywgY29udGVudERvY3Vt
ZW50KSB7CisgICAgICAgICAgICB2YXIgY2hlY2tib3hlcyA9IGNvbnRlbnREb2N1bWVudC5xdWVy
eVNlbGVjdG9yQWxsKCcudG9nZ2xlJyk7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGNoZWNrYm94ZXMubGVuZ3RoOyBpKyspCisgICAgICAgICAgICAgICAgY2hlY2tib3hlc1tpXS5j
bGljaygpOworICAgICAgICB9KSwKICAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdEZWxl
dGluZ0l0ZW1zJywgZnVuY3Rpb24gKHBhcmFtcywgY29udGVudFdpbmRvdywgY29udGVudERvY3Vt
ZW50KSB7CiAgICAgICAgICAgICB2YXIgZGVsZXRlQnV0dG9ucyA9IGNvbnRlbnREb2N1bWVudC5x
dWVyeVNlbGVjdG9yQWxsKCcuZGVzdHJveScpOwogICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBkZWxldGVCdXR0b25zLmxlbmd0aDsgaSsrKQotICAgICAgICAgICAgICAgIHBhcmFtcy5l
bWJlclJ1bihmdW5jdGlvbiAoKSB7IGRlbGV0ZUJ1dHRvbnNbaV0uY2xpY2soKTsgfSk7CisgICAg
ICAgICAgICAgICAgZGVsZXRlQnV0dG9uc1tpXS5jbGljaygpOwogICAgICAgICB9KSwKICAgICBd
CiB9KTsKIAogU3VpdGVzLnB1c2goewotICAgIG5hbWU6ICdCYWNrYm9uZUpTLVRvZG9NVkMnLAot
ICAgIHVybDogJ3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL2luZGV4Lmh0
bWwnLAorICAgIG5hbWU6ICdSZWFjdC1Ub2RvTVZDJywKKyAgICB1cmw6ICd0b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9yZWFjdC9pbmRleC5odG1sJywKICAgICBwcmVwYXJlOiBmdW5jdGlv
biAocnVubmVyLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKLSAgICBjb250ZW50
V2luZG93LkJhY2tib25lLnN5bmMgPSBmdW5jdGlvbiAoKSB7fQotICAgICAgICByZXR1cm4gcnVu
bmVyLndhaXRGb3JFbGVtZW50KCcjbmV3LXRvZG8nKS50aGVuKGZ1bmN0aW9uIChlbGVtZW50KSB7
CisgICAgICAgIGNvbnRlbnRXaW5kb3cuYXBwLlV0aWxzLnN0b3JlID0gZnVuY3Rpb24gKCkge30K
KyAgICAgICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVudCgnLm5ldy10b2RvJykudGhlbihm
dW5jdGlvbiAoZWxlbWVudCkgewogICAgICAgICAgICAgZWxlbWVudC5mb2N1cygpOwogICAgICAg
ICAgICAgcmV0dXJuIGVsZW1lbnQ7CiAgICAgICAgIH0pOwogICAgIH0sCiAgICAgdGVzdHM6IFsK
ICAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdBZGRpbmcnICsgbnVtYmVyT2ZJdGVtc1Rv
QWRkICsgJ0l0ZW1zJywgZnVuY3Rpb24gKG5ld1RvZG8sIGNvbnRlbnRXaW5kb3csIGNvbnRlbnRE
b2N1bWVudCkgewotICAgICAgICAgICAgdmFyIGFwcFZpZXcgPSBjb250ZW50V2luZG93LmFwcFZp
ZXc7Ci0gICAgICAgICAgICB2YXIgZmFrZUV2ZW50ID0ge3doaWNoOiBjb250ZW50V2luZG93LkVO
VEVSX0tFWX07CiAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bWJlck9mSXRlbXNU
b0FkZDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgbmV3VG9kby52YWx1ZSA9ICdTb21ldGhpbmcg
dG8gZG8gJyArIGk7Ci0gICAgICAgICAgICAgICAgYXBwVmlldy5jcmVhdGVPbkVudGVyKGZha2VF
dmVudCk7CisgICAgICAgICAgICAgICAgbmV3VG9kby5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgn
aW5wdXQnLCB7CisgICAgICAgICAgICAgICAgICBidWJibGVzOiB0cnVlLAorICAgICAgICAgICAg
ICAgICAgY2FuY2VsYWJsZTogdHJ1ZQorICAgICAgICAgICAgICAgIH0pKTsKKyAgICAgICAgICAg
ICAgICB0cmlnZ2VyRW50ZXIobmV3VG9kbywgJ2tleWRvd24nKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfSksCiAgICAgICAgIG5ldyBCZW5jaG1hcmtUZXN0U3RlcCgnQ29tcGxldGluZ0FsbEl0
ZW1zJywgZnVuY3Rpb24gKG5ld1RvZG8sIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkg
ewpAQCAtOTgsNTcgKzEzNiw4OSBAQCBTdWl0ZXMucHVzaCh7CiB9KTsKIAogU3VpdGVzLnB1c2go
ewotICAgIG5hbWU6ICdqUXVlcnktVG9kb01WQycsCi0gICAgdXJsOiAndG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvanF1ZXJ5L2luZGV4Lmh0bWwnLAorICAgIG5hbWU6ICdSZWFjdC1SZWR1
eC1Ub2RvTVZDJywKKyAgICB1cmw6ICd0b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFj
dC1yZWR1eC9kaXN0L2luZGV4Lmh0bWwnLAogICAgIHByZXBhcmU6IGZ1bmN0aW9uIChydW5uZXIs
IGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgewotICAgICAgICByZXR1cm4gcnVubmVy
LndhaXRGb3JFbGVtZW50KCcjbmV3LXRvZG8nKS50aGVuKGZ1bmN0aW9uIChlbGVtZW50KSB7Cisg
ICAgICAgIHJldHVybiBydW5uZXIud2FpdEZvckVsZW1lbnQoJy5uZXctdG9kbycpLnRoZW4oZnVu
Y3Rpb24gKGVsZW1lbnQpIHsKICAgICAgICAgICAgIGVsZW1lbnQuZm9jdXMoKTsKICAgICAgICAg
ICAgIHJldHVybiBlbGVtZW50OwogICAgICAgICB9KTsKICAgICB9LAogICAgIHRlc3RzOiBbCiAg
ICAgICAgIG5ldyBCZW5jaG1hcmtUZXN0U3RlcCgnQWRkaW5nJyArIG51bWJlck9mSXRlbXNUb0Fk
ZCArICdJdGVtcycsIGZ1bmN0aW9uIChuZXdUb2RvLCBjb250ZW50V2luZG93LCBjb250ZW50RG9j
dW1lbnQpIHsKLSAgICAgICAgICAgIHZhciBhcHAgPSBjb250ZW50V2luZG93LmFwcDsKLSAgICAg
ICAgICAgIHZhciBmYWtlRXZlbnQgPSB7d2hpY2g6IGFwcC5FTlRFUl9LRVl9OwogICAgICAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1iZXJPZkl0ZW1zVG9BZGQ7IGkrKykgewotICAgICAg
ICAgICAgICAgIG5ld1RvZG8udmFsdWUgPSAnU29tZXRoaW5nIHRvIGRvICcgKyBpOwotICAgICAg
ICAgICAgICAgIGFwcC5jcmVhdGUuY2FsbChuZXdUb2RvLCBmYWtlRXZlbnQpOworICAgICAgICAg
ICAgICAgIG5ld1RvZG8udmFsdWUgPSAnU29tZXRoaW5nIHRvIGRvJyArIGk7CisgICAgICAgICAg
ICAgICAgdHJpZ2dlckVudGVyKG5ld1RvZG8sICdrZXlkb3duJyk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0pLAotICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0NvbXBsZXRpbmdBbGxJ
dGVtcycsIGZ1bmN0aW9uIChuZXdUb2RvLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQp
IHsKLSAgICAgICAgICAgIHZhciBhcHAgPSBjb250ZW50V2luZG93LmFwcDsKKyAgICAgICAgbmV3
IEJlbmNobWFya1Rlc3RTdGVwKCdDb21wbGV0aW5nQWxsSXRlbXMnLCBmdW5jdGlvbiAocGFyYW1z
LCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKICAgICAgICAgICAgIHZhciBjaGVj
a2JveGVzID0gY29udGVudERvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy50b2dnbGUnKTsKLSAg
ICAgICAgICAgIHZhciAkID0gY29udGVudFdpbmRvdy4kOwotCi0gICAgICAgICAgICBpdGVtSW5k
ZXhUb0lkID0gbmV3IEFycmF5KGNoZWNrYm94ZXMubGVuZ3RoKTsKICAgICAgICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgY2hlY2tib3hlcy5sZW5ndGg7IGkrKykKLSAgICAgICAgICAgICAgICBp
dGVtSW5kZXhUb0lkW2ldID0gJChjaGVja2JveGVzW2ldKS5jbG9zZXN0KCdsaScpLmRhdGEoJ2lk
Jyk7CisgICAgICAgICAgICAgICAgY2hlY2tib3hlc1tpXS5jbGljaygpOworICAgICAgICB9KSwK
KyAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdEZWxldGluZ0l0ZW1zJywgZnVuY3Rpb24g
KHBhcmFtcywgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CisgICAgICAgICAgICB2
YXIgZGVsZXRlQnV0dG9ucyA9IGNvbnRlbnREb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZGVz
dHJveScpOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkZWxldGVCdXR0b25zLmxl
bmd0aDsgaSsrKQorICAgICAgICAgICAgICAgIGRlbGV0ZUJ1dHRvbnNbaV0uY2xpY2soKTsKKyAg
ICAgICAgfSksCisgICAgXQorfSk7CiAKLSAgICAgICAgICAgIGFwcC5nZXRUb2RvID0gZnVuY3Rp
b24gKGVsZW1lbnQsIGNhbGxiYWNrKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlz
OwotICAgICAgICAgICAgICAgIHZhciBpZCA9IGl0ZW1JbmRleFRvSWRbdGhpcy5jdXJyZW50SXRl
bUluZGV4XTsKLSAgICAgICAgICAgICAgICAkLmVhY2godGhpcy50b2RvcywgZnVuY3Rpb24gKGos
IHZhbCkgewotICAgICAgICAgICAgICAgICAgICBpZiAodmFsLmlkID09PSBpZCkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgY2FsbGJhY2suYXBwbHkoc2VsZiwgYXJndW1lbnRzKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIH0pOworU3VpdGVzLnB1c2goeworICAgIG5hbWU6ICdFbWJlckpTLVRv
ZG9NVkMnLAorICAgIHVybDogJ3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMn
LAorICAgIHByZXBhcmU6IGZ1bmN0aW9uIChydW5uZXIsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnRE
b2N1bWVudCkgeworICAgICAgICByZXR1cm4gcnVubmVyLndhaXRGb3JFbGVtZW50KCcjbmV3LXRv
ZG8nKS50aGVuKGZ1bmN0aW9uIChlbGVtZW50KSB7CisgICAgICAgICAgICBlbGVtZW50LmZvY3Vz
KCk7CisgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKKyAgICAgICAgfSk7CisgICAgfSwKKyAg
ICB0ZXN0czogWworICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0FkZGluZycgKyBudW1i
ZXJPZkl0ZW1zVG9BZGQgKyAnSXRlbXMnLCBmdW5jdGlvbiAobmV3VG9kbywgY29udGVudFdpbmRv
dywgY29udGVudERvY3VtZW50KSB7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51
bWJlck9mSXRlbXNUb0FkZDsgaSsrKSB7CisgICAgICAgICAgICAgICAgbmV3VG9kby52YWx1ZSA9
ICdTb21ldGhpbmcgdG8gZG8nICsgaTsKKyAgICAgICAgICAgICAgICB0cmlnZ2VyRW50ZXIobmV3
VG9kbywgJ2tleWRvd24nKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgfSksCisgICAgICAgIG5l
dyBCZW5jaG1hcmtUZXN0U3RlcCgnQ29tcGxldGluZ0FsbEl0ZW1zJywgZnVuY3Rpb24gKHBhcmFt
cywgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CisgICAgICAgICAgICB2YXIgY2hl
Y2tib3hlcyA9IGNvbnRlbnREb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudG9nZ2xlJyk7Cisg
ICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoZWNrYm94ZXMubGVuZ3RoOyBpKyspCisg
ICAgICAgICAgICAgICAgY2hlY2tib3hlc1tpXS5jbGljaygpOworICAgICAgICB9KSwKKyAgICAg
ICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdEZWxldGluZ0l0ZW1zJywgZnVuY3Rpb24gKHBhcmFt
cywgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CisgICAgICAgICAgICB2YXIgZGVs
ZXRlQnV0dG9ucyA9IGNvbnRlbnREb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZGVzdHJveScp
OworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkZWxldGVCdXR0b25zLmxlbmd0aDsg
aSsrKQorICAgICAgICAgICAgICAgIGRlbGV0ZUJ1dHRvbnNbaV0uY2xpY2soKTsKKyAgICAgICAg
fSksCisgICAgXQorfSk7CiAKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hlY2ti
b3hlcy5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgICAgIGFwcC5jdXJyZW50SXRlbUluZGV4
ID0gaTsKLSAgICAgICAgICAgICAgICBhcHAudG9nZ2xlLmNhbGwoY2hlY2tib3hlc1tpXSk7CitT
dWl0ZXMucHVzaCh7CisgICAgbmFtZTogJ0JhY2tib25lSlMtVG9kb01WQycsCisgICAgdXJsOiAn
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvaW5kZXguaHRtbCcsCisgICAg
cHJlcGFyZTogZnVuY3Rpb24gKHJ1bm5lciwgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50
KSB7CisgICAgY29udGVudFdpbmRvdy5CYWNrYm9uZS5zeW5jID0gZnVuY3Rpb24gKCkge30KKyAg
ICAgICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVudCgnLm5ldy10b2RvJykudGhlbihmdW5j
dGlvbiAoZWxlbWVudCkgeworICAgICAgICAgICAgZWxlbWVudC5mb2N1cygpOworICAgICAgICAg
ICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgICAgIH0pOworICAgIH0sCisgICAgdGVzdHM6IFsKKyAg
ICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdBZGRpbmcnICsgbnVtYmVyT2ZJdGVtc1RvQWRk
ICsgJ0l0ZW1zJywgZnVuY3Rpb24gKG5ld1RvZG8sIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1
bWVudCkgeworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1iZXJPZkl0ZW1zVG9B
ZGQ7IGkrKykgeworICAgICAgICAgICAgICAgIG5ld1RvZG8udmFsdWUgPSAnU29tZXRoaW5nIHRv
IGRvICcgKyBpOworICAgICAgICAgICAgICAgIHRyaWdnZXJFbnRlcihuZXdUb2RvLCAna2V5cHJl
c3MnKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSksCisgICAgICAgIG5ldyBCZW5jaG1hcmtU
ZXN0U3RlcCgnQ29tcGxldGluZ0FsbEl0ZW1zJywgZnVuY3Rpb24gKG5ld1RvZG8sIGNvbnRlbnRX
aW5kb3csIGNvbnRlbnREb2N1bWVudCkgeworICAgICAgICAgICAgdmFyIGNoZWNrYm94ZXMgPSBj
b250ZW50RG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRvZ2dsZScpOworICAgICAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBjaGVja2JveGVzLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAg
ICAgIGNoZWNrYm94ZXNbaV0uY2xpY2soKTsKKyAgICAgICAgfSksCiAgICAgICAgIG5ldyBCZW5j
aG1hcmtUZXN0U3RlcCgnRGVsZXRpbmdBbGxJdGVtcycsIGZ1bmN0aW9uIChuZXdUb2RvLCBjb250
ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKLSAgICAgICAgICAgIGNvbnRlbnREb2N1bWVu
dC5xdWVyeVNlbGVjdG9yKCcjY2xlYXItY29tcGxldGVkJykuY2xpY2soKTsKLSAgICAgICAgICAg
IHZhciBhcHAgPSBjb250ZW50V2luZG93LmFwcDsKICAgICAgICAgICAgIHZhciBkZWxldGVCdXR0
b25zID0gY29udGVudERvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5kZXN0cm95Jyk7Ci0KLSAg
ICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGVsZXRlQnV0dG9ucy5sZW5ndGg7IGkrKykg
ewotICAgICAgICAgICAgICAgIGFwcC5jdXJyZW50SXRlbUluZGV4ID0gaTsKLSAgICAgICAgICAg
ICAgICBhcHAuZGVzdHJveS5jYWxsKGRlbGV0ZUJ1dHRvbnNbaV0pOwotICAgICAgICAgICAgfQor
ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkZWxldGVCdXR0b25zLmxlbmd0aDsgaSsr
KQorICAgICAgICAgICAgICAgIGRlbGV0ZUJ1dHRvbnNbaV0uY2xpY2soKTsKICAgICAgICAgfSks
CiAgICAgXQogfSk7CkBAIC0xNjQsNyArMjM0LDYgQEAgU3VpdGVzLnB1c2goewogICAgIH0sCiAg
ICAgdGVzdHM6IFsKICAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdBZGRpbmcnICsgbnVt
YmVyT2ZJdGVtc1RvQWRkICsgJ0l0ZW1zJywgZnVuY3Rpb24gKG5ld1RvZG8sIGNvbnRlbnRXaW5k
b3csIGNvbnRlbnREb2N1bWVudCkgewotICAgICAgICAgICAgdmFyIHRvZG9tdmMgPSBjb250ZW50
V2luZG93LnRvZG9tdmM7CiAgICAgICAgICAgICB2YXIgc3VibWl0RXZlbnQgPSBkb2N1bWVudC5j
cmVhdGVFdmVudCgnRXZlbnQnKTsKICAgICAgICAgICAgIHN1Ym1pdEV2ZW50LmluaXRFdmVudCgn
c3VibWl0JywgdHJ1ZSwgdHJ1ZSk7CiAgICAgICAgICAgICB2YXIgaW5wdXRFdmVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUV2ZW50KCdFdmVudCcpOwpAQCAtMTg5LDI1ICsyNTgsNTcgQEAgU3VpdGVzLnB1
c2goewogfSk7CiAKIFN1aXRlcy5wdXNoKHsKLSAgICBuYW1lOiAnUmVhY3QtVG9kb01WQycsCi0g
ICAgdXJsOiAndG9kb212Yy9sYWJzL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9pbmRleC5o
dG1sJywKKyAgICBuYW1lOiAnQW5ndWxhcjItVHlwZVNjcmlwdC1Ub2RvTVZDJywKKyAgICB1cmw6
ICd0b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyL2Rpc3QvaW5kZXguaHRtbCcs
CiAgICAgcHJlcGFyZTogZnVuY3Rpb24gKHJ1bm5lciwgY29udGVudFdpbmRvdywgY29udGVudERv
Y3VtZW50KSB7Ci0gICAgICAgIGNvbnRlbnRXaW5kb3cuVXRpbHMuc3RvcmUgPSBmdW5jdGlvbiAo
KSB7fQotICAgICAgICByZXR1cm4gcnVubmVyLndhaXRGb3JFbGVtZW50KCcjbmV3LXRvZG8nKS50
aGVuKGZ1bmN0aW9uIChlbGVtZW50KSB7CisgICAgICAgIHJldHVybiBydW5uZXIud2FpdEZvckVs
ZW1lbnQoJy5uZXctdG9kbycpLnRoZW4oZnVuY3Rpb24gKGVsZW1lbnQpIHsKICAgICAgICAgICAg
IGVsZW1lbnQuZm9jdXMoKTsKICAgICAgICAgICAgIHJldHVybiBlbGVtZW50OwogICAgICAgICB9
KTsKICAgICB9LAogICAgIHRlc3RzOiBbCiAgICAgICAgIG5ldyBCZW5jaG1hcmtUZXN0U3RlcCgn
QWRkaW5nJyArIG51bWJlck9mSXRlbXNUb0FkZCArICdJdGVtcycsIGZ1bmN0aW9uIChuZXdUb2Rv
LCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKLSAgICAgICAgICAgIHZhciB0b2Rv
bXZjID0gY29udGVudFdpbmRvdy50b2RvbXZjOwogICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBudW1iZXJPZkl0ZW1zVG9BZGQ7IGkrKykgewotICAgICAgICAgICAgICAgIG5ld1RvZG8u
dmFsdWUgPSAnU29tZXRoaW5nIHRvIGRvICcgKyBpOworICAgICAgICAgICAgICAgIG5ld1RvZG8u
dmFsdWUgPSAnU29tZXRoaW5nIHRvIGRvJyArIGk7CisgICAgICAgICAgICAgICAgbmV3VG9kby5k
aXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnaW5wdXQnLCB7CisgICAgICAgICAgICAgICAgICBidWJi
bGVzOiB0cnVlLAorICAgICAgICAgICAgICAgICAgY2FuY2VsYWJsZTogdHJ1ZQorICAgICAgICAg
ICAgICAgIH0pKTsKKyAgICAgICAgICAgICAgICB0cmlnZ2VyRW50ZXIobmV3VG9kbywgJ2tleXVw
Jyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pLAorICAgICAgICBuZXcgQmVuY2htYXJrVGVz
dFN0ZXAoJ0NvbXBsZXRpbmdBbGxJdGVtcycsIGZ1bmN0aW9uIChwYXJhbXMsIGNvbnRlbnRXaW5k
b3csIGNvbnRlbnREb2N1bWVudCkgeworICAgICAgICAgICAgdmFyIGNoZWNrYm94ZXMgPSBjb250
ZW50RG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRvZ2dsZScpOworICAgICAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBjaGVja2JveGVzLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgICAg
IGNoZWNrYm94ZXNbaV0uY2xpY2soKTsKKyAgICAgICAgfSksCisgICAgICAgIG5ldyBCZW5jaG1h
cmtUZXN0U3RlcCgnRGVsZXRpbmdJdGVtcycsIGZ1bmN0aW9uIChwYXJhbXMsIGNvbnRlbnRXaW5k
b3csIGNvbnRlbnREb2N1bWVudCkgeworICAgICAgICAgICAgdmFyIGRlbGV0ZUJ1dHRvbnMgPSBj
b250ZW50RG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmRlc3Ryb3knKTsKKyAgICAgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgZGVsZXRlQnV0dG9ucy5sZW5ndGg7IGkrKykKKyAgICAgICAg
ICAgICAgICBkZWxldGVCdXR0b25zW2ldLmNsaWNrKCk7CisgICAgICAgIH0pLAorICAgIF0KK30p
OwogCi0gICAgICAgICAgICAgICAgdmFyIGtleWRvd25FdmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2
ZW50KCdFdmVudCcpOwotICAgICAgICAgICAgICAgIGtleWRvd25FdmVudC5pbml0RXZlbnQoJ2tl
eWRvd24nLCB0cnVlLCB0cnVlKTsKLSAgICAgICAgICAgICAgICBrZXlkb3duRXZlbnQud2hpY2gg
PSAxMzsgLy8gVktfRU5URVIKLSAgICAgICAgICAgICAgICBuZXdUb2RvLmRpc3BhdGNoRXZlbnQo
a2V5ZG93bkV2ZW50KTsKK1N1aXRlcy5wdXNoKHsKKyAgICBuYW1lOiAnVnVlSlMtVG9kb01WQycs
CisgICAgdXJsOiAndG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2Rpc3Qv
aW5kZXguaHRtbCcsCisgICAgcHJlcGFyZTogZnVuY3Rpb24gKHJ1bm5lciwgY29udGVudFdpbmRv
dywgY29udGVudERvY3VtZW50KSB7CisgICAgICAgIHJldHVybiBydW5uZXIud2FpdEZvckVsZW1l
bnQoJy5uZXctdG9kbycpLnRoZW4oZnVuY3Rpb24gKGVsZW1lbnQpIHsKKyAgICAgICAgICAgIGVs
ZW1lbnQuZm9jdXMoKTsKKyAgICAgICAgICAgIHJldHVybiBlbGVtZW50OworICAgICAgICB9KTsK
KyAgICB9LAorICAgIHRlc3RzOiBbCisgICAgICAgIG5ldyBCZW5jaG1hcmtUZXN0U3RlcCgnQWRk
aW5nJyArIG51bWJlck9mSXRlbXNUb0FkZCArICdJdGVtcycsIGZ1bmN0aW9uIChuZXdUb2RvLCBj
b250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgbnVtYmVyT2ZJdGVtc1RvQWRkOyBpKyspIHsKKyAgICAgICAgICAgICAgICBuZXdU
b2RvLnZhbHVlID0gJ1NvbWV0aGluZyB0byBkbyAnICsgaTsKKyAgICAgICAgICAgICAgICBuZXdU
b2RvLnZhbHVlID0gJ1NvbWV0aGluZyB0byBkbycgKyBpOworICAgICAgICAgICAgICAgIG5ld1Rv
ZG8uZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2lucHV0JywgeworICAgICAgICAgICAgICAgICAg
YnViYmxlczogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgIGNhbmNlbGFibGU6IHRydWUKKyAgICAg
ICAgICAgICAgICB9KSk7CisgICAgICAgICAgICAgICAgdHJpZ2dlckVudGVyKG5ld1RvZG8sICdr
ZXl1cCcpOwogICAgICAgICAgICAgfQogICAgICAgICB9KSwKICAgICAgICAgbmV3IEJlbmNobWFy
a1Rlc3RTdGVwKCdDb21wbGV0aW5nQWxsSXRlbXMnLCBmdW5jdGlvbiAobmV3VG9kbywgY29udGVu
dFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CkBAIC0yMjQsMjUgKzMyNSwxOSBAQCBTdWl0ZXMu
cHVzaCh7CiB9KTsKIAogU3VpdGVzLnB1c2goewotICAgIG5hbWU6ICdGbGlnaHRKUy1Ub2RvTVZD
JywKLSAgICB1cmw6ICd0b2RvbXZjL2RlcGVuZGVuY3ktZXhhbXBsZXMvZmxpZ2h0L2luZGV4Lmh0
bWwnLAorICAgIG5hbWU6ICdqUXVlcnktVG9kb01WQycsCisgICAgdXJsOiAndG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L2luZGV4Lmh0bWwnLAogICAgIHByZXBhcmU6IGZ1bmN0
aW9uIChydW5uZXIsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgewotICAgICAgICBy
ZXR1cm4gcnVubmVyLndhaXRGb3JFbGVtZW50KCcjYXBwSXNSZWFkeScpLnRoZW4oZnVuY3Rpb24g
KCkgewotICAgICAgICAgICAgdmFyIG5ld1RvZG8gPSBjb250ZW50RG9jdW1lbnQucXVlcnlTZWxl
Y3RvcignI25ldy10b2RvJyk7Ci0gICAgICAgICAgICBuZXdUb2RvLmZvY3VzKCk7Ci0gICAgICAg
ICAgICByZXR1cm4gbmV3VG9kbzsKLSAgICAgICAgfSk7OworICAgICAgICByZXR1cm4gcnVubmVy
LndhaXRGb3JFbGVtZW50KCcjbmV3LXRvZG8nKS50aGVuKGZ1bmN0aW9uIChlbGVtZW50KSB7Cisg
ICAgICAgICAgICBlbGVtZW50LmZvY3VzKCk7CisgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsK
KyAgICAgICAgfSk7CiAgICAgfSwKICAgICB0ZXN0czogWwogICAgICAgICBuZXcgQmVuY2htYXJr
VGVzdFN0ZXAoJ0FkZGluZycgKyBudW1iZXJPZkl0ZW1zVG9BZGQgKyAnSXRlbXMnLCBmdW5jdGlv
biAobmV3VG9kbywgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7Ci0gICAgICAgICAg
ICB2YXIgdG9kb212YyA9IGNvbnRlbnRXaW5kb3cudG9kb212YzsKICAgICAgICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgbnVtYmVyT2ZJdGVtc1RvQWRkOyBpKyspIHsKICAgICAgICAgICAgICAg
ICBuZXdUb2RvLnZhbHVlID0gJ1NvbWV0aGluZyB0byBkbyAnICsgaTsKLQotICAgICAgICAgICAg
ICAgIHZhciBrZXlkb3duRXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQnKTsKLSAg
ICAgICAgICAgICAgICBrZXlkb3duRXZlbnQuaW5pdEV2ZW50KCdrZXlkb3duJywgdHJ1ZSwgdHJ1
ZSk7Ci0gICAgICAgICAgICAgICAga2V5ZG93bkV2ZW50LndoaWNoID0gMTM7IC8vIFZLX0VOVEVS
Ci0gICAgICAgICAgICAgICAgbmV3VG9kby5kaXNwYXRjaEV2ZW50KGtleWRvd25FdmVudCk7Cisg
ICAgICAgICAgICAgICAgdHJpZ2dlckVudGVyKG5ld1RvZG8sICdrZXl1cCcpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9KSwKICAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdDb21wbGV0
aW5nQWxsSXRlbXMnLCBmdW5jdGlvbiAobmV3VG9kbywgY29udGVudFdpbmRvdywgY29udGVudERv
Y3VtZW50KSB7CkBAIC0yNTYsNiArMzUxLDEzMCBAQCBTdWl0ZXMucHVzaCh7CiAgICAgICAgICAg
ICAgICAgZGVsZXRlQnV0dG9uc1tpXS5jbGljaygpOwogICAgICAgICB9KSwKICAgICBdCit9KQor
CitTdWl0ZXMucHVzaCh7CisgICAgbmFtZTogJ1ByZWFjdC1Ub2RvTVZDJywKKyAgICB1cmw6ICd0
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9wcmVhY3QvZGlzdC9pbmRleC5odG1sJywKKyAg
ICBwcmVwYXJlOiBmdW5jdGlvbiAocnVubmVyLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1l
bnQpIHsKKyAgICAgICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVudCgnLm5ldy10b2RvJyku
dGhlbihmdW5jdGlvbiAoZWxlbWVudCkgeworICAgICAgICAgICAgZWxlbWVudC5mb2N1cygpOwor
ICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgICAgIH0pOworICAgIH0sCisgICAgdGVz
dHM6IFsKKyAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdBZGRpbmcnICsgbnVtYmVyT2ZJ
dGVtc1RvQWRkICsgJ0l0ZW1zJywgZnVuY3Rpb24gKG5ld1RvZG8sIGNvbnRlbnRXaW5kb3csIGNv
bnRlbnREb2N1bWVudCkgeworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1iZXJP
Zkl0ZW1zVG9BZGQ7IGkrKykgeworICAgICAgICAgICAgICAgIG5ld1RvZG8udmFsdWUgPSAnU29t
ZXRoaW5nIHRvIGRvJyArIGk7CisgICAgICAgICAgICAgICAgdHJpZ2dlckVudGVyKG5ld1RvZG8s
ICdrZXlkb3duJyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pLAorICAgICAgICBuZXcgQmVu
Y2htYXJrVGVzdFN0ZXAoJ0NvbXBsZXRpbmdBbGxJdGVtcycsIGZ1bmN0aW9uIChwYXJhbXMsIGNv
bnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgeworICAgICAgICAgICAgdmFyIGNoZWNrYm94
ZXMgPSBjb250ZW50RG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRvZ2dsZScpOworICAgICAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGVja2JveGVzLmxlbmd0aDsgaSsrKQorICAgICAg
ICAgICAgICAgIGNoZWNrYm94ZXNbaV0uY2xpY2soKTsKKyAgICAgICAgfSksCisgICAgICAgIG5l
dyBCZW5jaG1hcmtUZXN0U3RlcCgnRGVsZXRpbmdJdGVtcycsIGZ1bmN0aW9uIChwYXJhbXMsIGNv
bnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgeworICAgICAgICAgICAgdmFyIGRlbGV0ZUJ1
dHRvbnMgPSBjb250ZW50RG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmRlc3Ryb3knKTsKKyAg
ICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGVsZXRlQnV0dG9ucy5sZW5ndGg7IGkrKykK
KyAgICAgICAgICAgICAgICBkZWxldGVCdXR0b25zW2ldLmNsaWNrKCk7CisgICAgICAgIH0pLAor
ICAgIF0KK30pOworCitTdWl0ZXMucHVzaCh7CisgICAgbmFtZTogJ0luZmVybm8tVG9kb01WQycs
CisgICAgdXJsOiAndG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvaW5mZXJuby9pbmRleC5o
dG1sJywKKyAgICBwcmVwYXJlOiBmdW5jdGlvbiAocnVubmVyLCBjb250ZW50V2luZG93LCBjb250
ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVudCgnLm5l
dy10b2RvJykudGhlbihmdW5jdGlvbiAoZWxlbWVudCkgeworICAgICAgICAgICAgZWxlbWVudC5m
b2N1cygpOworICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgICAgIH0pOworICAgIH0s
CisgICAgdGVzdHM6IFsKKyAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdBZGRpbmcnICsg
bnVtYmVyT2ZJdGVtc1RvQWRkICsgJ0l0ZW1zJywgZnVuY3Rpb24gKG5ld1RvZG8sIGNvbnRlbnRX
aW5kb3csIGNvbnRlbnREb2N1bWVudCkgeworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBudW1iZXJPZkl0ZW1zVG9BZGQ7IGkrKykgeworICAgICAgICAgICAgICAgIG5ld1RvZG8udmFs
dWUgPSAnU29tZXRoaW5nIHRvIGRvJyArIGk7CisgICAgICAgICAgICAgICAgbmV3VG9kby5kaXNw
YXRjaEV2ZW50KG5ldyBFdmVudCgnY2hhbmdlJywgeworICAgICAgICAgICAgICAgICAgYnViYmxl
czogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgIGNhbmNlbGFibGU6IHRydWUKKyAgICAgICAgICAg
ICAgICB9KSk7CisgICAgICAgICAgICAgICAgdHJpZ2dlckVudGVyKG5ld1RvZG8sICdrZXlkb3du
Jyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pLAorICAgICAgICBuZXcgQmVuY2htYXJrVGVz
dFN0ZXAoJ0NvbXBsZXRpbmdBbGxJdGVtcycsIGZ1bmN0aW9uIChwYXJhbXMsIGNvbnRlbnRXaW5k
b3csIGNvbnRlbnREb2N1bWVudCkgeworICAgICAgICAgICAgdmFyIGNoZWNrYm94ZXMgPSBjb250
ZW50RG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRvZ2dsZScpOworICAgICAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBjaGVja2JveGVzLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgICAg
IGNoZWNrYm94ZXNbaV0uY2xpY2soKTsKKyAgICAgICAgfSksCisgICAgICAgIG5ldyBCZW5jaG1h
cmtUZXN0U3RlcCgnRGVsZXRpbmdJdGVtcycsIGZ1bmN0aW9uIChwYXJhbXMsIGNvbnRlbnRXaW5k
b3csIGNvbnRlbnREb2N1bWVudCkgeworICAgICAgICAgICAgdmFyIGRlbGV0ZUJ1dHRvbnMgPSBj
b250ZW50RG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmRlc3Ryb3knKTsKKyAgICAgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgZGVsZXRlQnV0dG9ucy5sZW5ndGg7IGkrKykKKyAgICAgICAg
ICAgICAgICBkZWxldGVCdXR0b25zW2ldLmNsaWNrKCk7CisgICAgICAgIH0pLAorICAgIF0KK30p
OworCitTdWl0ZXMucHVzaCh7CisgICAgbmFtZTogJ0VsbS1Ub2RvTVZDJywKKyAgICB1cmw6ICd0
b2RvbXZjL2Z1bmN0aW9uYWwtcHJvZy1leGFtcGxlcy9lbG0vaW5kZXguaHRtbCcsCisgICAgcHJl
cGFyZTogZnVuY3Rpb24gKHJ1bm5lciwgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7
CisgICAgICAgIHJldHVybiBydW5uZXIud2FpdEZvckVsZW1lbnQoJy5uZXctdG9kbycpLnRoZW4o
ZnVuY3Rpb24gKGVsZW1lbnQpIHsKKyAgICAgICAgICAgIGVsZW1lbnQuZm9jdXMoKTsKKyAgICAg
ICAgICAgIHJldHVybiBlbGVtZW50OworICAgICAgICB9KTsKKyAgICB9LAorICAgIHRlc3RzOiBb
CisgICAgICAgIG5ldyBCZW5jaG1hcmtUZXN0U3RlcCgnQWRkaW5nJyArIG51bWJlck9mSXRlbXNU
b0FkZCArICdJdGVtcycsIGZ1bmN0aW9uIChuZXdUb2RvLCBjb250ZW50V2luZG93LCBjb250ZW50
RG9jdW1lbnQpIHsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtYmVyT2ZJdGVt
c1RvQWRkOyBpKyspIHsKKyAgICAgICAgICAgICAgICBuZXdUb2RvLnZhbHVlID0gJ1NvbWV0aGlu
ZyB0byBkbycgKyBpOworICAgICAgICAgICAgICAgIG5ld1RvZG8uZGlzcGF0Y2hFdmVudChuZXcg
RXZlbnQoJ2lucHV0JywgeworICAgICAgICAgICAgICAgICAgYnViYmxlczogdHJ1ZSwKKyAgICAg
ICAgICAgICAgICAgIGNhbmNlbGFibGU6IHRydWUKKyAgICAgICAgICAgICAgICB9KSk7CisgICAg
ICAgICAgICAgICAgdHJpZ2dlckVudGVyKG5ld1RvZG8sICdrZXlkb3duJyk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0pLAorICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0NvbXBsZXRp
bmdBbGxJdGVtcycsIGZ1bmN0aW9uIChwYXJhbXMsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1
bWVudCkgeworICAgICAgICAgICAgdmFyIGNoZWNrYm94ZXMgPSBjb250ZW50RG9jdW1lbnQucXVl
cnlTZWxlY3RvckFsbCgnLnRvZ2dsZScpOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBjaGVja2JveGVzLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgICAgIGNoZWNrYm94ZXNbaV0u
Y2xpY2soKTsKKyAgICAgICAgfSksCisgICAgICAgIG5ldyBCZW5jaG1hcmtUZXN0U3RlcCgnRGVs
ZXRpbmdJdGVtcycsIGZ1bmN0aW9uIChwYXJhbXMsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1
bWVudCkgeworICAgICAgICAgICAgdmFyIGRlbGV0ZUJ1dHRvbnMgPSBjb250ZW50RG9jdW1lbnQu
cXVlcnlTZWxlY3RvckFsbCgnLmRlc3Ryb3knKTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgZGVsZXRlQnV0dG9ucy5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgICAgICBkZWxldGVC
dXR0b25zW2ldLmNsaWNrKCk7CisgICAgICAgIH0pLAorICAgIF0KK30pOworCitTdWl0ZXMucHVz
aCh7CisgICAgbmFtZTogJ0ZsaWdodC1Ub2RvTVZDJywKKyAgICB1cmw6ICd0b2RvbXZjL2RlcGVu
ZGVuY3ktZXhhbXBsZXMvZmxpZ2h0L2ZsaWdodC9pbmRleC5odG1sJywKKyAgICBwcmVwYXJlOiBm
dW5jdGlvbiAocnVubmVyLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAg
ICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVudCgnI25ldy10b2RvJykudGhlbihmdW5jdGlv
biAoZWxlbWVudCkgeworICAgICAgICAgICAgZWxlbWVudC5mb2N1cygpOworICAgICAgICAgICAg
cmV0dXJuIGVsZW1lbnQ7CisgICAgICAgIH0pOworICAgIH0sCisgICAgdGVzdHM6IFsKKyAgICAg
ICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdBZGRpbmcnICsgbnVtYmVyT2ZJdGVtc1RvQWRkICsg
J0l0ZW1zJywgZnVuY3Rpb24gKG5ld1RvZG8sIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVu
dCkgeworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1iZXJPZkl0ZW1zVG9BZGQ7
IGkrKykgeworICAgICAgICAgICAgICAgIG5ld1RvZG8udmFsdWUgPSAnU29tZXRoaW5nIHRvIGRv
JyArIGk7CisgICAgICAgICAgICAgICAgdHJpZ2dlckVudGVyKG5ld1RvZG8sICdrZXlkb3duJyk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0pLAorICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0
ZXAoJ0NvbXBsZXRpbmdBbGxJdGVtcycsIGZ1bmN0aW9uIChwYXJhbXMsIGNvbnRlbnRXaW5kb3cs
IGNvbnRlbnREb2N1bWVudCkgeworICAgICAgICAgICAgdmFyIGNoZWNrYm94ZXMgPSBjb250ZW50
RG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRvZ2dsZScpOworICAgICAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBjaGVja2JveGVzLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgICAgIGNo
ZWNrYm94ZXNbaV0uY2xpY2soKTsKKyAgICAgICAgfSksCisgICAgICAgIG5ldyBCZW5jaG1hcmtU
ZXN0U3RlcCgnRGVsZXRpbmdJdGVtcycsIGZ1bmN0aW9uIChwYXJhbXMsIGNvbnRlbnRXaW5kb3cs
IGNvbnRlbnREb2N1bWVudCkgeworICAgICAgICAgICAgdmFyIGRlbGV0ZUJ1dHRvbnMgPSBjb250
ZW50RG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmRlc3Ryb3knKTsKKyAgICAgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgZGVsZXRlQnV0dG9ucy5sZW5ndGg7IGkrKykKKyAgICAgICAgICAg
ICAgICBkZWxldGVCdXR0b25zW2ldLmNsaWNrKCk7CisgICAgICAgIH0pLAorICAgIF0KIH0pOwog
CiB2YXIgYWN0aW9uQ291bnQgPSA1MDsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIv
ZGlzdC9pbmRleC5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9kaXN0L2luZGV4Lmh0bWwKaW5k
ZXggNzZiZGM4NmNmOGRkNGQ1ZWEwNDg5NTFjODIxYjRjYTFkNmZlZGU3ZC4uM2ExYTllMjg3ZDZj
YTBjZjZjMTg5ZjJmYTk3OTI1OThhNjhmZDMyZSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5n
dWxhci9kaXN0L2luZGV4Lmh0bWwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9kaXN0L2luZGV4
Lmh0bWwKQEAgLTksNyArOSw3IEBACiAgIDxsaW5rIHJlbD0iaWNvbiIgdHlwZT0iaW1hZ2UveC1p
Y29uIiBocmVmPSJmYXZpY29uLmljbyI+CiAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
YXNzZXRzL2Nzcy90b2RvbXZjLWNvbW1vbi5jc3MiPgogICA8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9ImFzc2V0cy9jc3MvdG9kb212Yy1hcHAuY3NzIj4KLTxsaW5rIGhyZWY9InN0eWxlcy5k
NDFkOGNkOThmMDBiMjA0ZTk4MC5idW5kbGUuY3NzIiByZWw9InN0eWxlc2hlZXQiLz48L2hlYWQ+
Cis8L2hlYWQ+CiA8Ym9keT4KICAgPGFwcC1yb290PkxvYWRpbmcuLi48L2FwcC1yb290PgogICA8
IS0tIENyZWRpdHM6IEFkZHkgT3NtYW5pIC0tPgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1i
ZXJqcy9hc3NldHMvdG9kb212Yy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvYXNzZXRzL3RvZG9t
dmMuanMKaW5kZXggNjE5YTAwNGIwZmNmZGY4Mjc1M2QyNDUwYjhiZmMxYmFiYTY1ZWFhNi4uN2Q0
ZGZiMzZjNzFhZDQ2ZTBlZDRiMWQ0YTUyZDdmZTdlYjYyZTAwNCAxMDA2NDQKLS0tIGEvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvZW1iZXJqcy9hc3NldHMvdG9kb212Yy5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpz
L2Fzc2V0cy90b2RvbXZjLmpzCkBAIC0zNjMsMTkgKzM2MywxNSBAQCBkZWZpbmUoJ3RvZG9tdmMv
c2VydmljZXMvbWVtb3J5JywgWydleHBvcnRzJ10sIGZ1bmN0aW9uIChleHBvcnRzKSB7CiAgICAg
ICBsb2NhbFN0b3JhZ2VNZW1vcnkubGVuZ3RoID0gMDsKICAgICB9OwogCi0gICAgaWYgKHR5cGVv
ZiBleHBvcnRzID09PSAnb2JqZWN0JykgewotICAgICAgbW9kdWxlLmV4cG9ydHMgPSBsb2NhbFN0
b3JhZ2VNZW1vcnk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIHJvb3QubG9jYWxTdG9yYWdlTWVtb3J5
ID0gbG9jYWxTdG9yYWdlTWVtb3J5OwotICAgIH0KLSAgfSkodGhpcyk7CisgICAgcm9vdC5sb2Nh
bFN0b3JhZ2VNZW1vcnkgPSBsb2NhbFN0b3JhZ2VNZW1vcnk7CisgIH0pKHdpbmRvdyk7CiB9KTsK
IGRlZmluZSgndG9kb212Yy9zZXJ2aWNlcy9yZXBvJywgWydleHBvcnRzJywgJ2VtYmVyJywgJ3Rv
ZG9tdmMvc2VydmljZXMvbWVtb3J5J10sIGZ1bmN0aW9uIChleHBvcnRzLCBfZW1iZXIsIF90b2Rv
bXZjU2VydmljZXNNZW1vcnkpIHsKICAgICBleHBvcnRzWydkZWZhdWx0J10gPSBfZW1iZXJbJ2Rl
ZmF1bHQnXS5TZXJ2aWNlLmV4dGVuZCh7CiAgICAgICAgIGxhc3RJZDogMCwKICAgICAgICAgZGF0
YTogbnVsbCwKICAgICAgICAgZmluZEFsbDogZnVuY3Rpb24gZmluZEFsbCgpIHsKLSAgICAgICAg
ICAgIHJldHVybiB0aGlzLmdldCgnZGF0YScpIHx8IHRoaXMuc2V0KCdkYXRhJywgSlNPTi5wYXJz
ZShfdG9kb212Y1NlcnZpY2VzTWVtb3J5LmdldEl0ZW0oJ3RvZG9zJykgfHwgJ1tdJykpOworICAg
ICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KCdkYXRhJykgfHwgdGhpcy5zZXQoJ2RhdGEnLCBKU09O
LnBhcnNlKHdpbmRvdy5sb2NhbFN0b3JhZ2VNZW1vcnkuZ2V0SXRlbSgndG9kb3MnKSB8fCAnW10n
KSk7CiAgICAgICAgIH0sCiAKICAgICAgICAgYWRkOiBmdW5jdGlvbiBhZGQoYXR0cnMpIHsKQEAg
LTM5MSw3ICszODcsNyBAQCBkZWZpbmUoJ3RvZG9tdmMvc2VydmljZXMvcmVwbycsIFsnZXhwb3J0
cycsICdlbWJlcicsICd0b2RvbXZjL3NlcnZpY2VzL21lbW9yeSddLAogICAgICAgICB9LAogCiAg
ICAgICAgIHBlcnNpc3Q6IGZ1bmN0aW9uIHBlcnNpc3QoKSB7Ci0gICAgICAgICAgICBfdG9kb212
Y1NlcnZpY2VzTWVtb3J5LnNldEl0ZW0oJ3RvZG9zJywgSlNPTi5zdHJpbmdpZnkodGhpcy5nZXQo
J2RhdGEnKSkpOworICAgICAgICAgICAgd2luZG93LmxvY2FsU3RvcmFnZU1lbW9yeS5zZXRJdGVt
KCd0b2RvcycsIEpTT04uc3RyaW5naWZ5KHRoaXMuZ2V0KCdkYXRhJykpKTsKICAgICAgICAgfQog
ICAgIH0pOwogfSk7CkBAIC0xMjU3LDcgKzEyNTMsNyBAQCBjYXRjaChlcnIpIHsKIC8qIGpzaGlu
dCBpZ25vcmU6c3RhcnQgKi8KIAogaWYgKCFydW5uaW5nVGVzdHMpIHsKLSAgcmVxdWlyZSgidG9k
b212Yy9hcHAiKVsiZGVmYXVsdCJdLmNyZWF0ZSh7Im5hbWUiOiJ0b2RvbXZjIiwidmVyc2lvbiI6
IjAuMC4wKzVkYmM1ZmI5In0pOworICByZXF1aXJlKCJ0b2RvbXZjL2FwcCIpWyJkZWZhdWx0Il0u
Y3JlYXRlKHsibmFtZSI6InRvZG9tdmMiLCJ2ZXJzaW9uIjoiMC4wLjArIn0pOwogfQogCiAvKiBq
c2hpbnQgaWdub3JlOmVuZCAqLwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9pbmRl
eC5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9pbmRleC5odG1sCmluZGV4IDdlNDhjMTk5Mjdk
NTFjZTQ4ZTgzMWE3ZWU1ZjAxNDNmNjY2NTA2NGEuLmVkMmExY2YyMzVjYzMyZjgxNTg2OTU1ZTg2
ODRjZjgxNmNmMjY0ZGEgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvaW5kZXguaHRt
bAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL2luZGV4Lmh0bWwKQEAgLTYsMjEgKzYsMTkgQEAK
ICAgICA8dGl0bGU+VG9kb212YzwvdGl0bGU+CiAgICAgPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24i
IGNvbnRlbnQ9IiI+CiAgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRl
dmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xIj4KLSAgICA8YmFzZSBocmVmPSIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvZW1iZXJqcyIgLz4KLSAgICAKLTxtZXRhIG5hbWU9InRvZG9tdmMvY29uZmlnL2Vudmlyb25t
ZW50IiBjb250ZW50PSIlN0IlMjJtb2R1bGVQcmVmaXglMjIlM0ElMjJ0b2RvbXZjJTIyJTJDJTIy
ZW52aXJvbm1lbnQlMjIlM0ElMjJkZXZlbG9wbWVudCUyMiUyQyUyMmJhc2VVUkwlMjIlM0FudWxs
JTJDJTIybG9jYXRpb25UeXBlJTIyJTNBJTIyYXV0byUyMiUyQyUyMkVtYmVyRU5WJTIyJTNBJTdC
JTIyRkVBVFVSRVMlMjIlM0ElN0IlN0QlN0QlMkMlMjJBUFAlMjIlM0ElN0IlMjJuYW1lJTIyJTNB
JTIydG9kb212YyUyMiUyQyUyMnZlcnNpb24lMjIlM0ElMjIwLjAuMCs1ZGJjNWZiOSUyMiU3RCUy
QyUyMmV4cG9ydEFwcGxpY2F0aW9uR2xvYmFsJTIyJTNBdHJ1ZSU3RCIgLz4KKyAgIAorPG1ldGEg
bmFtZT0idG9kb212Yy9jb25maWcvZW52aXJvbm1lbnQiIGNvbnRlbnQ9IiU3QiUyMm1vZHVsZVBy
ZWZpeCUyMiUzQSUyMnRvZG9tdmMlMjIlMkMlMjJlbnZpcm9ubWVudCUyMiUzQSUyMmRldmVsb3Bt
ZW50JTIyJTJDJTIybG9jYXRpb25UeXBlJTIyJTNBJTIybm9uZSUyMiUyQyUyMkVtYmVyRU5WJTIy
JTNBJTdCJTIyRkVBVFVSRVMlMjIlM0ElN0IlN0QlN0QlMkMlMjJBUFAlMjIlM0ElN0IlMjJuYW1l
JTIyJTNBJTIydG9kb212YyUyMiUyQyUyMnZlcnNpb24lMjIlM0ElMjIwLjAuMCUyMDJjM2Y4MTU4
JTIyJTdEJTJDJTIyZXhwb3J0QXBwbGljYXRpb25HbG9iYWwlMjIlM0F0cnVlJTdEIiAvPgogCi0g
ICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9hc3Nl
dHMvdmVuZG9yLmNzcyI+Ci0gICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvZW1iZXJqcy9hc3NldHMvdG9kb212Yy5jc3MiPgorICAgIDxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iYXNzZXRzL3ZlbmRvci5jc3MiPgogCiAgICAgCiAgIDwvaGVhZD4KICAgPGJv
ZHk+CiAgICAgCiAKLSAgICA8c2NyaXB0IHNyYz0iL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvYXNzZXRz
L3ZlbmRvci5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJl
cmpzL2Fzc2V0cy90b2RvbXZjLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iYXNzZXRz
L3ZlbmRvci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9ImFzc2V0cy90b2RvbXZjLmpz
Ij48L3NjcmlwdD4KIAogICAgIAogICA8L2JvZHk+Ci08L2h0bWw+Cis8L2h0bWw+ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3Vy
Y2UvYXBwL2luZGV4Lmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS9hcHAvaW5kZXgu
aHRtbAppbmRleCBiYTZmNjQ2M2UwNDZkZDM3ZTA5ZGM3NzRkNTk3MDY2N2EzMDExMTU5Li5iMTcz
MGZiYjY3Zjg5ZGEyYTU3OGM0ZjFmMTU4ZmQ0MWQ0ZmFiM2M1IDEwMDY0NAotLS0gYS9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9lbWJlcmpzL3NvdXJjZS9hcHAvaW5kZXguaHRtbAorKysgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJl
cmpzL3NvdXJjZS9hcHAvaW5kZXguaHRtbApAQCAtNiwxOSArNiwxOCBAQAogICAgIDx0aXRsZT5U
b2RvbXZjPC90aXRsZT4KICAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iIj4K
ICAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBp
bml0aWFsLXNjYWxlPTEiPgotICAgIDxiYXNlIGhyZWY9Ii9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzIiAv
PgogICAgIHt7Y29udGVudC1mb3IgImhlYWQifX0KIAotICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvYXNzZXRzL3ZlbmRvci5jc3MiPgotICAgIDxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvYXNzZXRzL3Rv
ZG9tdmMuY3NzIj4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9ImFzc2V0cy92ZW5k
b3IuY3NzIj4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9ImFzc2V0cy90b2RvbXZj
LmNzcyI+CiAKICAgICB7e2NvbnRlbnQtZm9yICJoZWFkLWZvb3RlciJ9fQogICA8L2hlYWQ+CiAg
IDxib2R5PgogICAgIHt7Y29udGVudC1mb3IgImJvZHkifX0KIAotICAgIDxzY3JpcHQgc3JjPSIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvZW1iZXJqcy9hc3NldHMvdmVuZG9yLmpzIj48L3NjcmlwdD4KLSAgICA8c2Ny
aXB0IHNyYz0iL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvYXNzZXRzL3RvZG9tdmMuanMiPjwvc2NyaXB0
PgorICAgIDxzY3JpcHQgc3JjPSJhc3NldHMvdmVuZG9yLmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHNyYz0iYXNzZXRzL3RvZG9tdmMuanMiPjwvc2NyaXB0PgogCiAgICAge3tjb250ZW50LWZv
ciAiYm9keS1mb290ZXIifX0KICAgPC9ib2R5PgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1i
ZXJqcy9zb3VyY2UvYXBwL3NlcnZpY2VzL21lbW9yeS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMv
c291cmNlL2FwcC9zZXJ2aWNlcy9tZW1vcnkuanMKaW5kZXggNGI5ZDVhZjlkNmQxZDhkNTljMGNk
YjI2ODhiZmVjMmFkYTgyZjNjMi4uNzRjNWNkZjE5ZmQ5ZmRiMjZhOTBmMDlhMzAxZDQzZGJkMzUy
N2Q2MSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvYXBwL3NlcnZpY2Vz
L21lbW9yeS5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS9hcHAvc2VydmljZXMv
bWVtb3J5LmpzCkBAIC03NCw5ICs3NCw1IEBACiAgICAgbG9jYWxTdG9yYWdlTWVtb3J5Lmxlbmd0
aCA9IDA7CiAgIH07CiAKLSAgaWYgKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JykgewotICAg
IG1vZHVsZS5leHBvcnRzID0gbG9jYWxTdG9yYWdlTWVtb3J5OwotICB9IGVsc2UgewogICAgIHJv
b3QubG9jYWxTdG9yYWdlTWVtb3J5ID0gbG9jYWxTdG9yYWdlTWVtb3J5OwotICB9Ci19KSh0aGlz
KTsKK30pKHdpbmRvdyk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS9h
cHAvc2VydmljZXMvcmVwby5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNlL2FwcC9zZXJ2
aWNlcy9yZXBvLmpzCmluZGV4IDAxNDdmZjNlZmM3ZThhYWVmMjdiNzEwMDUwNWMwMWFkMTFmOWFj
ZDEuLmNmZmEzODU4ZmQ3N2JiYmE1YzQzNWVhNWM5Yzg4OThhZDE3NzNiOGEgMTAwNjQ0Ci0tLSBh
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNlL2FwcC9zZXJ2aWNlcy9yZXBvLmpzCisrKyBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2VtYmVyanMvc291cmNlL2FwcC9zZXJ2aWNlcy9yZXBvLmpzCkBAIC0xLDEyICsx
LDEyIEBACiBpbXBvcnQgRW1iZXIgZnJvbSAnZW1iZXInOwotaW1wb3J0ICogYXMgbG9jYWxTdG9y
YWdlTWVtb3J5IGZyb20gJy4vbWVtb3J5JzsKK2ltcG9ydCBsb2NhbFN0b3JhZ2VNZW1vcnkgZnJv
bSAnLi9tZW1vcnknOwogCiBleHBvcnQgZGVmYXVsdCBFbWJlci5TZXJ2aWNlLmV4dGVuZCh7CiAg
ICAgbGFzdElkOiAwLAogICAgIGRhdGE6IG51bGwsCiAgICAgZmluZEFsbCgpIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuZ2V0KCdkYXRhJykgfHwKLSAgICAgICAgICAgIHRoaXMuc2V0KCdkYXRhJywg
SlNPTi5wYXJzZShsb2NhbFN0b3JhZ2VNZW1vcnkuZ2V0SXRlbSgndG9kb3MnKSB8fCAnW10nKSk7
CisgICAgICAgICAgICB0aGlzLnNldCgnZGF0YScsIEpTT04ucGFyc2Uod2luZG93LmxvY2FsU3Rv
cmFnZU1lbW9yeS5nZXRJdGVtKCd0b2RvcycpIHx8ICdbXScpKTsKICAgICB9LAogCiAgICAgYWRk
KGF0dHJzKSB7CkBAIC0yMiw2ICsyMiw2IEBAIGV4cG9ydCBkZWZhdWx0IEVtYmVyLlNlcnZpY2Uu
ZXh0ZW5kKHsKICAgICB9LAogCiAgICAgcGVyc2lzdCgpIHsKLSAgICAgICAgbG9jYWxTdG9yYWdl
TWVtb3J5LnNldEl0ZW0oJ3RvZG9zJywgSlNPTi5zdHJpbmdpZnkodGhpcy5nZXQoJ2RhdGEnKSkp
OworICAgICAgICB3aW5kb3cubG9jYWxTdG9yYWdlTWVtb3J5LnNldEl0ZW0oJ3RvZG9zJywgSlNP
Ti5zdHJpbmdpZnkodGhpcy5nZXQoJ2RhdGEnKSkpOwogICAgIH0KIH0pOwpkaWZmIC0tZ2l0IGEv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvZW1iZXJqcy90ZXN0cy9pbmRleC5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJq
cy90ZXN0cy9pbmRleC5odG1sCmluZGV4IGUyYTI3YzE0OWI2ZGUwN2M2OTMzMTA5ODQyNWZkZDhk
NWQ3YTJhMGUuLjJhYjIxOGU3YTk1NDNlZjIwYWNkNGEzZTc2ZWU1YTU3MDYzNjM1MTMgMTAwNjQ0
Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvdGVzdHMvaW5kZXguaHRtbAorKysgYi9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9lbWJlcmpzL3Rlc3RzL2luZGV4Lmh0bWwKQEAgLTgsNyArOCw3IEBACiAgICAgPG1ldGEg
bmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2Fs
ZT0xIj4KIAogICAgIDxiYXNlIGhyZWY9Ii8iIC8+Ci08bWV0YSBuYW1lPSJ0b2RvbXZjL2NvbmZp
Zy9lbnZpcm9ubWVudCIgY29udGVudD0iJTdCJTIybW9kdWxlUHJlZml4JTIyJTNBJTIydG9kb212
YyUyMiUyQyUyMmVudmlyb25tZW50JTIyJTNBJTIydGVzdCUyMiUyQyUyMmJhc2VVUkwlMjIlM0El
MjIvJTIyJTJDJTIybG9jYXRpb25UeXBlJTIyJTNBJTIybm9uZSUyMiUyQyUyMkVtYmVyRU5WJTIy
JTNBJTdCJTIyRkVBVFVSRVMlMjIlM0ElN0IlN0QlN0QlMkMlMjJBUFAlMjIlM0ElN0IlMjJMT0df
QUNUSVZFX0dFTkVSQVRJT04lMjIlM0FmYWxzZSUyQyUyMkxPR19WSUVXX0xPT0tVUFMlMjIlM0Fm
YWxzZSUyQyUyMnJvb3RFbGVtZW50JTIyJTNBJTIyJTIzZW1iZXItdGVzdGluZyUyMiUyQyUyMm5h
bWUlMjIlM0ElMjJ0b2RvbXZjJTIyJTJDJTIydmVyc2lvbiUyMiUzQSUyMjAuMC4wKzVkYmM1ZmI5
JTIyJTdEJTJDJTIyZXhwb3J0QXBwbGljYXRpb25HbG9iYWwlMjIlM0F0cnVlJTdEIiAvPgorPG1l
dGEgbmFtZT0idG9kb212Yy9jb25maWcvZW52aXJvbm1lbnQiIGNvbnRlbnQ9IiU3QiUyMm1vZHVs
ZVByZWZpeCUyMiUzQSUyMnRvZG9tdmMlMjIlMkMlMjJlbnZpcm9ubWVudCUyMiUzQSUyMnRlc3Ql
MjIlMkMlMjJiYXNlVVJMJTIyJTNBJTIyLyUyMiUyQyUyMmxvY2F0aW9uVHlwZSUyMiUzQSUyMm5v
bmUlMjIlMkMlMjJFbWJlckVOViUyMiUzQSU3QiUyMkZFQVRVUkVTJTIyJTNBJTdCJTdEJTdEJTJD
JTIyQVBQJTIyJTNBJTdCJTIyTE9HX0FDVElWRV9HRU5FUkFUSU9OJTIyJTNBZmFsc2UlMkMlMjJM
T0dfVklFV19MT09LVVBTJTIyJTNBZmFsc2UlMkMlMjJyb290RWxlbWVudCUyMiUzQSUyMiUyM2Vt
YmVyLXRlc3RpbmclMjIlMkMlMjJuYW1lJTIyJTNBJTIydG9kb212YyUyMiUyQyUyMnZlcnNpb24l
MjIlM0ElMjIwLjAuMCslMjIlN0QlMkMlMjJleHBvcnRBcHBsaWNhdGlvbkdsb2JhbCUyMiUzQXRy
dWUlN0QiIC8+CiAgICAgCiAKICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9ImFzc2V0
cy92ZW5kb3IuY3NzIj4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9pbmRleC5odG1s
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvanF1ZXJ5L2luZGV4Lmh0bWwKaW5kZXggNDE0YWM1OGY2MWFiYzJiNzIy
ZGI1M2ZlZWNlN2UwM2U1MmZkMzM0NC4uMWNmODAzZTE0MmExMzBlNGNjZmYxY2FiYjgxMjdjNDdj
NzA2ZDBlYyAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L2luZGV4Lmh0bWwKKysrIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvanF1ZXJ5L2luZGV4Lmh0bWwKQEAgLTU1LDcgKzU1LDcgQEAKICAgICAgICAg
PCEtLSA8c2NyaXB0IHNyYz0ibm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jhc2UuanMiPjwv
c2NyaXB0PiAtLT4KICAgICAgICAgPHNjcmlwdCBzcmM9Im5vZGVfbW9kdWxlcy9qcXVlcnkvZGlz
dC9qcXVlcnkuanMiPjwvc2NyaXB0PgogICAgICAgICA8c2NyaXB0IHNyYz0ibm9kZV9tb2R1bGVz
L2hhbmRsZWJhcnMvZGlzdC9oYW5kbGViYXJzLmpzIj48L3NjcmlwdD4KLSAgICAgICAgPHNjcmlw
dCBzcmM9Im5vZGVfbW9kdWxlcy9kaXJlY3Rvci9idWlsZC9kaXJlY3Rvci5qcyI+PC9zY3JpcHQ+
CisgICAgICAgIDxzY3JpcHQgc3JjPSJub2RlX21vZHVsZXMvZGlyZWN0b3IvZGlzdC9kaXJlY3Rv
ci5qcyI+PC9zY3JpcHQ+CiAgICAgICAgIDxzY3JpcHQgc3JjPSJqcy9hcHAuanMiPjwvc2NyaXB0
PgogICAgIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9u
b2RlX21vZHVsZXMvZGlyZWN0b3IvTElDRU5TRSBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21v
ZHVsZXMvZGlyZWN0b3IvTElDRU5TRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YTQ5ODEwODUwMTlmOTE3YzEyMzc2
OWEwYzI3Y2Q4NzBlMzVhNzg0Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5
L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9MSUNFTlNFCkBAIC0wLDAgKzEsMTkgQEAKK0NvcHlyaWdo
dCAoYykgMjAxMSBDaGFybGllIFJvYmJpbnMsIFBhb2xvIEZyYWdvbWVuaSwgJiB0aGUgQ29udHJp
YnV0b3JzLgorCitQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwg
dG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CitvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3Nv
Y2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAoraW4g
dGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0
YXRpb24gdGhlIHJpZ2h0cwordG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBk
aXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAorY29waWVzIG9mIHRoZSBTb2Z0d2Fy
ZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCitmdXJuaXNo
ZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorCitUaGUg
YWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBi
ZSBpbmNsdWRlZCBpbgorYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUg
U29mdHdhcmUuCisKK1RIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdB
UlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCitJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5P
VCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKK0ZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRQorQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFO
WSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElP
TiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKK09VVCBPRiBP
UiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVB
TElOR1MgSU4KK1RIRSBTT0ZUV0FSRS4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9u
b2RlX21vZHVsZXMvZGlyZWN0b3IvYm93ZXIuanNvbiBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2Rl
X21vZHVsZXMvZGlyZWN0b3IvYm93ZXIuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOTM5YmI0NzBlZDY0ZGIx
MTFhYWE4YzYzM2QyMzJmYTllYmZjZjA0Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
anF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9ib3dlci5qc29uCkBAIC0wLDAgKzEsOSBAQAor
eworICAibmFtZSI6ICJkaXJlY3RvciIsCisgICJ2ZXJzaW9uIjogIjEuMi43IiwKKyAgImRlcGVu
ZGVuY2llcyI6IHt9LAorICAibWFpbiI6ICJidWlsZC9kaXJlY3Rvci5qcyIsCisgICJzY3JpcHRz
IjogWworICAgICJidWlsZC9kaXJlY3Rvci5qcyIKKyAgXQorfQpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9kaXN0L2RpcmVjdG9yLmpzIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9kaXN0L2RpcmVjdG9yLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjEwMzg4Nzg3MjM1YjcxYzBmNWNiOTY3ZTc5NWMyYzY2OWE1NmYzNjkKLS0tIC9k
ZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL2Rp
c3QvZGlyZWN0b3IuanMKQEAgLTAsMCArMSw3MjUgQEAKKworCisvLworLy8gR2VuZXJhdGVkIG9u
IFR1ZSBEZWMgMTYgMjAxNCAxMjoxMzo0NyBHTVQrMDEwMCAoQ0VUKSBieSBDaGFybGllIFJvYmJp
bnMsIFBhb2xvIEZyYWdvbWVuaSAmIHRoZSBDb250cmlidXRvcnMgKFVzaW5nIENvZGVzdXJnZW9u
KS4KKy8vIFZlcnNpb24gMS4yLjYKKy8vCisKKyhmdW5jdGlvbiAoZXhwb3J0cykgeworCisvKgor
ICogYnJvd3Nlci5qczogQnJvd3NlciBzcGVjaWZpYyBmdW5jdGlvbmFsaXR5IGZvciBkaXJlY3Rv
ci4KKyAqCisgKiAoQykgMjAxMSwgQ2hhcmxpZSBSb2JiaW5zLCBQYW9sbyBGcmFnb21lbmksICYg
dGhlIENvbnRyaWJ1dG9ycy4KKyAqIE1JVCBMSUNFTlNFCisgKgorICovCisKK3ZhciBkbG9jID0g
ZG9jdW1lbnQubG9jYXRpb247CisKK2Z1bmN0aW9uIGRsb2NIYXNoRW1wdHkoKSB7CisgIC8vIE5v
bi1JRSBicm93c2VycyByZXR1cm4gJycgd2hlbiB0aGUgYWRkcmVzcyBiYXIgc2hvd3MgJyMnOyBE
aXJlY3RvcidzIGxvZ2ljCisgIC8vIGFzc3VtZXMgYm90aCBtZWFuIGVtcHR5LgorICByZXR1cm4g
ZGxvYy5oYXNoID09PSAnJyB8fCBkbG9jLmhhc2ggPT09ICcjJzsKK30KKwordmFyIGxpc3RlbmVy
ID0geworICBtb2RlOiAnbW9kZXJuJywKKyAgaGFzaDogZGxvYy5oYXNoLAorICBoaXN0b3J5OiBm
YWxzZSwKKworICBjaGVjazogZnVuY3Rpb24gKCkgeworICAgIHZhciBoID0gZGxvYy5oYXNoOwor
ICAgIGlmIChoICE9IHRoaXMuaGFzaCkgeworICAgICAgdGhpcy5oYXNoID0gaDsKKyAgICAgIHRo
aXMub25IYXNoQ2hhbmdlZCgpOworICAgIH0KKyAgfSwKKworICBmaXJlOiBmdW5jdGlvbiAoKSB7
CisgICAgaWYgKHRoaXMubW9kZSA9PT0gJ21vZGVybicpIHsKKyAgICAgIHRoaXMuaGlzdG9yeSA9
PT0gdHJ1ZSA/IHdpbmRvdy5vbnBvcHN0YXRlKCkgOiB3aW5kb3cub25oYXNoY2hhbmdlKCk7Cisg
ICAgfQorICAgIGVsc2UgeworICAgICAgdGhpcy5vbkhhc2hDaGFuZ2VkKCk7CisgICAgfQorICB9
LAorCisgIGluaXQ6IGZ1bmN0aW9uIChmbiwgaGlzdG9yeSkgeworICAgIHZhciBzZWxmID0gdGhp
czsKKyAgICB0aGlzLmhpc3RvcnkgPSBoaXN0b3J5OworCisgICAgaWYgKCFSb3V0ZXIubGlzdGVu
ZXJzKSB7CisgICAgICBSb3V0ZXIubGlzdGVuZXJzID0gW107CisgICAgfQorCisgICAgZnVuY3Rp
b24gb25jaGFuZ2Uob25DaGFuZ2VFdmVudCkgeworICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBS
b3V0ZXIubGlzdGVuZXJzLmxlbmd0aDsgaSA8IGw7IGkrKykgeworICAgICAgICBSb3V0ZXIubGlz
dGVuZXJzW2ldKG9uQ2hhbmdlRXZlbnQpOworICAgICAgfQorICAgIH0KKworICAgIC8vbm90ZSBJ
RTggaXMgYmVpbmcgY291bnRlZCBhcyAnbW9kZXJuJyBiZWNhdXNlIGl0IGhhcyB0aGUgaGFzaGNo
YW5nZSBldmVudAorICAgIGlmICgnb25oYXNoY2hhbmdlJyBpbiB3aW5kb3cgJiYgKGRvY3VtZW50
LmRvY3VtZW50TW9kZSA9PT0gdW5kZWZpbmVkCisgICAgICB8fCBkb2N1bWVudC5kb2N1bWVudE1v
ZGUgPiA3KSkgeworICAgICAgLy8gQXQgbGVhc3QgZm9yIG5vdyBIVE1MNSBoaXN0b3J5IGlzIGF2
YWlsYWJsZSBmb3IgJ21vZGVybicgYnJvd3NlcnMgb25seQorICAgICAgaWYgKHRoaXMuaGlzdG9y
eSA9PT0gdHJ1ZSkgeworICAgICAgICAvLyBUaGVyZSBpcyBhbiBvbGQgYnVnIGluIENocm9tZSB0
aGF0IGNhdXNlcyBvbnBvcHN0YXRlIHRvIGZpcmUgZXZlbgorICAgICAgICAvLyB1cG9uIGluaXRp
YWwgcGFnZSBsb2FkLiBTaW5jZSB0aGUgaGFuZGxlciBpcyBydW4gbWFudWFsbHkgaW4gaW5pdCgp
LAorICAgICAgICAvLyB0aGlzIHdvdWxkIGNhdXNlIENocm9tZSB0byBydW4gaXQgdHdpc2UuIEN1
cnJlbnRseSB0aGUgb25seQorICAgICAgICAvLyB3b3JrYXJvdW5kIHNlZW1zIHRvIGJlIHRvIHNl
dCB0aGUgaGFuZGxlciBhZnRlciB0aGUgaW5pdGlhbCBwYWdlIGxvYWQKKyAgICAgICAgLy8gaHR0
cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9NjMwNDAKKyAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICB3aW5kb3cub25wb3BzdGF0
ZSA9IG9uY2hhbmdlOworICAgICAgICB9LCA1MDApOworICAgICAgfQorICAgICAgZWxzZSB7Cisg
ICAgICAgIHdpbmRvdy5vbmhhc2hjaGFuZ2UgPSBvbmNoYW5nZTsKKyAgICAgIH0KKyAgICAgIHRo
aXMubW9kZSA9ICdtb2Rlcm4nOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIC8vCisgICAgICAv
LyBJRSBzdXBwb3J0LCBiYXNlZCBvbiBhIGNvbmNlcHQgYnkgRXJpayBBcnZpZHNvbiAuLi4KKyAg
ICAgIC8vCisgICAgICB2YXIgZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUn
KTsKKyAgICAgIGZyYW1lLmlkID0gJ3N0YXRlLWZyYW1lJzsKKyAgICAgIGZyYW1lLnN0eWxlLmRp
c3BsYXkgPSAnbm9uZSc7CisgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGZyYW1lKTsK
KyAgICAgIHRoaXMud3JpdGVGcmFtZSgnJyk7CisKKyAgICAgIGlmICgnb25wcm9wZXJ0eWNoYW5n
ZScgaW4gZG9jdW1lbnQgJiYgJ2F0dGFjaEV2ZW50JyBpbiBkb2N1bWVudCkgeworICAgICAgICBk
b2N1bWVudC5hdHRhY2hFdmVudCgnb25wcm9wZXJ0eWNoYW5nZScsIGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgICBpZiAoZXZlbnQucHJvcGVydHlOYW1lID09PSAnbG9jYXRpb24nKSB7CisgICAgICAg
ICAgICBzZWxmLmNoZWNrKCk7CisgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICAgIH0KKwor
ICAgICAgd2luZG93LnNldEludGVydmFsKGZ1bmN0aW9uICgpIHsgc2VsZi5jaGVjaygpOyB9LCA1
MCk7CisKKyAgICAgIHRoaXMub25IYXNoQ2hhbmdlZCA9IG9uY2hhbmdlOworICAgICAgdGhpcy5t
b2RlID0gJ2xlZ2FjeSc7CisgICAgfQorCisgICAgUm91dGVyLmxpc3RlbmVycy5wdXNoKGZuKTsK
KworICAgIHJldHVybiB0aGlzLm1vZGU7CisgIH0sCisKKyAgZGVzdHJveTogZnVuY3Rpb24gKGZu
KSB7CisgICAgaWYgKCFSb3V0ZXIgfHwgIVJvdXRlci5saXN0ZW5lcnMpIHsKKyAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICB2YXIgbGlzdGVuZXJzID0gUm91dGVyLmxpc3RlbmVyczsKKworICAg
IGZvciAodmFyIGkgPSBsaXN0ZW5lcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHsKKyAgICAg
IGlmIChsaXN0ZW5lcnNbaV0gPT09IGZuKSB7CisgICAgICAgIGxpc3RlbmVycy5zcGxpY2UoaSwg
MSk7CisgICAgICB9CisgICAgfQorICB9LAorCisgIHNldEhhc2g6IGZ1bmN0aW9uIChzKSB7Cisg
ICAgLy8gTW96aWxsYSBhbHdheXMgYWRkcyBhbiBlbnRyeSB0byB0aGUgaGlzdG9yeQorICAgIGlm
ICh0aGlzLm1vZGUgPT09ICdsZWdhY3knKSB7CisgICAgICB0aGlzLndyaXRlRnJhbWUocyk7Cisg
ICAgfQorCisgICAgaWYgKHRoaXMuaGlzdG9yeSA9PT0gdHJ1ZSkgeworICAgICAgd2luZG93Lmhp
c3RvcnkucHVzaFN0YXRlKHt9LCBkb2N1bWVudC50aXRsZSwgcyk7CisgICAgICAvLyBGaXJlIGFu
IG9ucG9wc3RhdGUgZXZlbnQgbWFudWFsbHkgc2luY2UgcHVzaGluZyBkb2VzIG5vdCBvYnZpb3Vz
bHkKKyAgICAgIC8vIHRyaWdnZXIgdGhlIHBvcCBldmVudC4KKyAgICAgIHRoaXMuZmlyZSgpOwor
ICAgIH0gZWxzZSB7CisgICAgICBkbG9jLmhhc2ggPSAoc1swXSA9PT0gJy8nKSA/IHMgOiAnLycg
KyBzOworICAgIH0KKyAgICByZXR1cm4gdGhpczsKKyAgfSwKKworICB3cml0ZUZyYW1lOiBmdW5j
dGlvbiAocykgeworICAgIC8vIElFIHN1cHBvcnQuLi4KKyAgICB2YXIgZiA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdzdGF0ZS1mcmFtZScpOworICAgIHZhciBkID0gZi5jb250ZW50RG9jdW1l
bnQgfHwgZi5jb250ZW50V2luZG93LmRvY3VtZW50OworICAgIGQub3BlbigpOworICAgIGQud3Jp
dGUoIjxzY3JpcHQ+X2hhc2ggPSAnIiArIHMgKyAiJzsgb25sb2FkID0gcGFyZW50Lmxpc3RlbmVy
LnN5bmNIYXNoOzxzY3JpcHQ+Iik7CisgICAgZC5jbG9zZSgpOworICB9LAorCisgIHN5bmNIYXNo
OiBmdW5jdGlvbiAoKSB7CisgICAgLy8gSUUgc3VwcG9ydC4uLgorICAgIHZhciBzID0gdGhpcy5f
aGFzaDsKKyAgICBpZiAocyAhPSBkbG9jLmhhc2gpIHsKKyAgICAgIGRsb2MuaGFzaCA9IHM7Cisg
ICAgfQorICAgIHJldHVybiB0aGlzOworICB9LAorCisgIG9uSGFzaENoYW5nZWQ6IGZ1bmN0aW9u
ICgpIHt9Cit9OworCit2YXIgUm91dGVyID0gZXhwb3J0cy5Sb3V0ZXIgPSBmdW5jdGlvbiAocm91
dGVzKSB7CisgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBSb3V0ZXIpKSByZXR1cm4gbmV3IFJvdXRl
cihyb3V0ZXMpOworCisgIHRoaXMucGFyYW1zICAgPSB7fTsKKyAgdGhpcy5yb3V0ZXMgICA9IHt9
OworICB0aGlzLm1ldGhvZHMgID0gWydvbicsICdvbmNlJywgJ2FmdGVyJywgJ2JlZm9yZSddOwor
ICB0aGlzLnNjb3BlICAgID0gW107CisgIHRoaXMuX21ldGhvZHMgPSB7fTsKKworICB0aGlzLl9p
bnNlcnQgPSB0aGlzLmluc2VydDsKKyAgdGhpcy5pbnNlcnQgPSB0aGlzLmluc2VydEV4OworCisg
IHRoaXMuaGlzdG9yeVN1cHBvcnQgPSAod2luZG93Lmhpc3RvcnkgIT0gbnVsbCA/IHdpbmRvdy5o
aXN0b3J5LnB1c2hTdGF0ZSA6IG51bGwpICE9IG51bGwKKworICB0aGlzLmNvbmZpZ3VyZSgpOwor
ICB0aGlzLm1vdW50KHJvdXRlcyB8fCB7fSk7Cit9OworCitSb3V0ZXIucHJvdG90eXBlLmluaXQg
PSBmdW5jdGlvbiAocikgeworICB2YXIgc2VsZiA9IHRoaXMKKyAgICAsIHJvdXRlVG87CisgIHRo
aXMuaGFuZGxlciA9IGZ1bmN0aW9uKG9uQ2hhbmdlRXZlbnQpIHsKKyAgICB2YXIgbmV3VVJMID0g
b25DaGFuZ2VFdmVudCAmJiBvbkNoYW5nZUV2ZW50Lm5ld1VSTCB8fCB3aW5kb3cubG9jYXRpb24u
aGFzaDsKKyAgICB2YXIgdXJsID0gc2VsZi5oaXN0b3J5ID09PSB0cnVlID8gc2VsZi5nZXRQYXRo
KCkgOiBuZXdVUkwucmVwbGFjZSgvLiojLywgJycpOworICAgIHNlbGYuZGlzcGF0Y2goJ29uJywg
dXJsLmNoYXJBdCgwKSA9PT0gJy8nID8gdXJsIDogJy8nICsgdXJsKTsKKyAgfTsKKworICBsaXN0
ZW5lci5pbml0KHRoaXMuaGFuZGxlciwgdGhpcy5oaXN0b3J5KTsKKworICBpZiAodGhpcy5oaXN0
b3J5ID09PSBmYWxzZSkgeworICAgIGlmIChkbG9jSGFzaEVtcHR5KCkgJiYgcikgeworICAgICAg
ZGxvYy5oYXNoID0gcjsKKyAgICB9IGVsc2UgaWYgKCFkbG9jSGFzaEVtcHR5KCkpIHsKKyAgICAg
IHNlbGYuZGlzcGF0Y2goJ29uJywgJy8nICsgZGxvYy5oYXNoLnJlcGxhY2UoL14oI1wvfCN8XC8p
LywgJycpKTsKKyAgICB9CisgIH0KKyAgZWxzZSB7CisgICAgaWYgKHRoaXMuY29udmVydF9oYXNo
X2luX2luaXQpIHsKKyAgICAgIC8vIFVzZSBoYXNoIGFzIHJvdXRlCisgICAgICByb3V0ZVRvID0g
ZGxvY0hhc2hFbXB0eSgpICYmIHIgPyByIDogIWRsb2NIYXNoRW1wdHkoKSA/IGRsb2MuaGFzaC5y
ZXBsYWNlKC9eIy8sICcnKSA6IG51bGw7CisgICAgICBpZiAocm91dGVUbykgeworICAgICAgICB3
aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUoe30sIGRvY3VtZW50LnRpdGxlLCByb3V0ZVRvKTsK
KyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAvLyBVc2UgY2Fub25pY2FsIHVybAor
ICAgICAgcm91dGVUbyA9IHRoaXMuZ2V0UGF0aCgpOworICAgIH0KKworICAgIC8vIFJvdXRlciBo
YXMgYmVlbiBpbml0aWFsaXplZCwgYnV0IGR1ZSB0byB0aGUgY2hyb21lIGJ1ZyBpdCB3aWxsIG5v
dAorICAgIC8vIHlldCBhY3R1YWxseSByb3V0ZSBIVE1MNSBoaXN0b3J5IHN0YXRlIGNoYW5nZXMu
IFRodXMsIGRlY2lkZSBpZiBzaG91bGQgcm91dGUuCisgICAgaWYgKHJvdXRlVG8gfHwgdGhpcy5y
dW5faW5faW5pdCA9PT0gdHJ1ZSkgeworICAgICAgdGhpcy5oYW5kbGVyKCk7CisgICAgfQorICB9
CisKKyAgcmV0dXJuIHRoaXM7Cit9OworCitSb3V0ZXIucHJvdG90eXBlLmV4cGxvZGUgPSBmdW5j
dGlvbiAoKSB7CisgIHZhciB2ID0gdGhpcy5oaXN0b3J5ID09PSB0cnVlID8gdGhpcy5nZXRQYXRo
KCkgOiBkbG9jLmhhc2g7CisgIGlmICh2LmNoYXJBdCgxKSA9PT0gJy8nKSB7IHY9di5zbGljZSgx
KSB9CisgIHJldHVybiB2LnNsaWNlKDEsIHYubGVuZ3RoKS5zcGxpdCgiLyIpOworfTsKKworUm91
dGVyLnByb3RvdHlwZS5zZXRSb3V0ZSA9IGZ1bmN0aW9uIChpLCB2LCB2YWwpIHsKKyAgdmFyIHVy
bCA9IHRoaXMuZXhwbG9kZSgpOworCisgIGlmICh0eXBlb2YgaSA9PT0gJ251bWJlcicgJiYgdHlw
ZW9mIHYgPT09ICdzdHJpbmcnKSB7CisgICAgdXJsW2ldID0gdjsKKyAgfQorICBlbHNlIGlmICh0
eXBlb2YgdmFsID09PSAnc3RyaW5nJykgeworICAgIHVybC5zcGxpY2UoaSwgdiwgcyk7CisgIH0K
KyAgZWxzZSB7CisgICAgdXJsID0gW2ldOworICB9CisKKyAgbGlzdGVuZXIuc2V0SGFzaCh1cmwu
am9pbignLycpKTsKKyAgcmV0dXJuIHVybDsKK307CisKKy8vCisvLyAjIyMgZnVuY3Rpb24gaW5z
ZXJ0RXgobWV0aG9kLCBwYXRoLCByb3V0ZSwgcGFyZW50KQorLy8gIyMjIyBAbWV0aG9kIHtzdHJp
bmd9IE1ldGhvZCB0byBpbnNlcnQgdGhlIHNwZWNpZmljIGByb3V0ZWAuCisvLyAjIyMjIEBwYXRo
IHtBcnJheX0gUGFyc2VkIHBhdGggdG8gaW5zZXJ0IHRoZSBgcm91dGVgIGF0LgorLy8gIyMjIyBA
cm91dGUge0FycmF5fGZ1bmN0aW9ufSBSb3V0ZSBoYW5kbGVycyB0byBpbnNlcnQuCisvLyAjIyMj
IEBwYXJlbnQge09iamVjdH0gKipPcHRpb25hbCoqIFBhcmVudCAicm91dGVzIiB0byBpbnNlcnQg
aW50by4KKy8vIGluc2VydCBhIGNhbGxiYWNrIHRoYXQgd2lsbCBvbmx5IG9jY3VyIG9uY2UgcGVy
IHRoZSBtYXRjaGVkIHJvdXRlLgorLy8KK1JvdXRlci5wcm90b3R5cGUuaW5zZXJ0RXggPSBmdW5j
dGlvbihtZXRob2QsIHBhdGgsIHJvdXRlLCBwYXJlbnQpIHsKKyAgaWYgKG1ldGhvZCA9PT0gIm9u
Y2UiKSB7CisgICAgbWV0aG9kID0gIm9uIjsKKyAgICByb3V0ZSA9IGZ1bmN0aW9uKHJvdXRlKSB7
CisgICAgICB2YXIgb25jZSA9IGZhbHNlOworICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAg
ICAgICBpZiAob25jZSkgcmV0dXJuOworICAgICAgICBvbmNlID0gdHJ1ZTsKKyAgICAgICAgcmV0
dXJuIHJvdXRlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CisgICAgICB9OworICAgIH0ocm91dGUp
OworICB9CisgIHJldHVybiB0aGlzLl9pbnNlcnQobWV0aG9kLCBwYXRoLCByb3V0ZSwgcGFyZW50
KTsKK307CisKK1JvdXRlci5wcm90b3R5cGUuZ2V0Um91dGUgPSBmdW5jdGlvbiAodikgeworICB2
YXIgcmV0ID0gdjsKKworICBpZiAodHlwZW9mIHYgPT09ICJudW1iZXIiKSB7CisgICAgcmV0ID0g
dGhpcy5leHBsb2RlKClbdl07CisgIH0KKyAgZWxzZSBpZiAodHlwZW9mIHYgPT09ICJzdHJpbmci
KXsKKyAgICB2YXIgaCA9IHRoaXMuZXhwbG9kZSgpOworICAgIHJldCA9IGguaW5kZXhPZih2KTsK
KyAgfQorICBlbHNlIHsKKyAgICByZXQgPSB0aGlzLmV4cGxvZGUoKTsKKyAgfQorCisgIHJldHVy
biByZXQ7Cit9OworCitSb3V0ZXIucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7Cisg
IGxpc3RlbmVyLmRlc3Ryb3kodGhpcy5oYW5kbGVyKTsKKyAgcmV0dXJuIHRoaXM7Cit9OworCitS
b3V0ZXIucHJvdG90eXBlLmdldFBhdGggPSBmdW5jdGlvbiAoKSB7CisgIHZhciBwYXRoID0gd2lu
ZG93LmxvY2F0aW9uLnBhdGhuYW1lOworICBpZiAocGF0aC5zdWJzdHIoMCwgMSkgIT09ICcvJykg
eworICAgIHBhdGggPSAnLycgKyBwYXRoOworICB9CisgIHJldHVybiBwYXRoOworfTsKK2Z1bmN0
aW9uIF9ldmVyeShhcnIsIGl0ZXJhdG9yKSB7CisgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyLmxl
bmd0aDsgaSArPSAxKSB7CisgICAgaWYgKGl0ZXJhdG9yKGFycltpXSwgaSwgYXJyKSA9PT0gZmFs
c2UpIHsKKyAgICAgIHJldHVybjsKKyAgICB9CisgIH0KK30KKworZnVuY3Rpb24gX2ZsYXR0ZW4o
YXJyKSB7CisgIHZhciBmbGF0ID0gW107CisgIGZvciAodmFyIGkgPSAwLCBuID0gYXJyLmxlbmd0
aDsgaSA8IG47IGkrKykgeworICAgIGZsYXQgPSBmbGF0LmNvbmNhdChhcnJbaV0pOworICB9Cisg
IHJldHVybiBmbGF0OworfQorCitmdW5jdGlvbiBfYXN5bmNFdmVyeVNlcmllcyhhcnIsIGl0ZXJh
dG9yLCBjYWxsYmFjaykgeworICBpZiAoIWFyci5sZW5ndGgpIHsKKyAgICByZXR1cm4gY2FsbGJh
Y2soKTsKKyAgfQorICB2YXIgY29tcGxldGVkID0gMDsKKyAgKGZ1bmN0aW9uIGl0ZXJhdGUoKSB7
CisgICAgaXRlcmF0b3IoYXJyW2NvbXBsZXRlZF0sIGZ1bmN0aW9uKGVycikgeworICAgICAgaWYg
KGVyciB8fCBlcnIgPT09IGZhbHNlKSB7CisgICAgICAgIGNhbGxiYWNrKGVycik7CisgICAgICAg
IGNhbGxiYWNrID0gZnVuY3Rpb24oKSB7fTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGNvbXBs
ZXRlZCArPSAxOworICAgICAgICBpZiAoY29tcGxldGVkID09PSBhcnIubGVuZ3RoKSB7CisgICAg
ICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBpdGVyYXRlKCk7
CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9KTsKKyAgfSkoKTsKK30KKworZnVuY3Rpb24gcGFy
YW1pZnlTdHJpbmcoc3RyLCBwYXJhbXMsIG1vZCkgeworICBtb2QgPSBzdHI7CisgIGZvciAodmFy
IHBhcmFtIGluIHBhcmFtcykgeworICAgIGlmIChwYXJhbXMuaGFzT3duUHJvcGVydHkocGFyYW0p
KSB7CisgICAgICBtb2QgPSBwYXJhbXNbcGFyYW1dKHN0cik7CisgICAgICBpZiAobW9kICE9PSBz
dHIpIHsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgfQorICB9CisgIHJldHVybiBtb2Qg
PT09IHN0ciA/ICIoWy5fYS16QS1aMC05LSUoKV0rKSIgOiBtb2Q7Cit9CisKK2Z1bmN0aW9uIHJl
Z2lmeVN0cmluZyhzdHIsIHBhcmFtcykgeworICB2YXIgbWF0Y2hlcywgbGFzdCA9IDAsIG91dCA9
ICIiOworICB3aGlsZSAobWF0Y2hlcyA9IHN0ci5zdWJzdHIobGFzdCkubWF0Y2goL1teXHdcZFwt
ICVAJl0qXCpbXlx3XGRcLSAlQCZdKi8pKSB7CisgICAgbGFzdCA9IG1hdGNoZXMuaW5kZXggKyBt
YXRjaGVzWzBdLmxlbmd0aDsKKyAgICBtYXRjaGVzWzBdID0gbWF0Y2hlc1swXS5yZXBsYWNlKC9e
XCovLCAiKFtfLigpIVxcICVAJmEtekEtWjAtOS1dKykiKTsKKyAgICBvdXQgKz0gc3RyLnN1YnN0
cigwLCBtYXRjaGVzLmluZGV4KSArIG1hdGNoZXNbMF07CisgIH0KKyAgc3RyID0gb3V0ICs9IHN0
ci5zdWJzdHIobGFzdCk7CisgIHZhciBjYXB0dXJlcyA9IHN0ci5tYXRjaCgvOihbXlwvXSspL2ln
KSwgY2FwdHVyZSwgbGVuZ3RoOworICBpZiAoY2FwdHVyZXMpIHsKKyAgICBsZW5ndGggPSBjYXB0
dXJlcy5sZW5ndGg7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAg
ICAgY2FwdHVyZSA9IGNhcHR1cmVzW2ldOworICAgICAgaWYgKGNhcHR1cmUuc2xpY2UoMCwgMikg
PT09ICI6OiIpIHsKKyAgICAgICAgc3RyID0gY2FwdHVyZS5zbGljZSgxKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHN0ciA9IHN0ci5yZXBsYWNlKGNhcHR1cmUsIHBhcmFtaWZ5U3RyaW5nKGNh
cHR1cmUsIHBhcmFtcykpOworICAgICAgfQorICAgIH0KKyAgfQorICByZXR1cm4gc3RyOworfQor
CitmdW5jdGlvbiB0ZXJtaW5hdG9yKHJvdXRlcywgZGVsaW1pdGVyLCBzdGFydCwgc3RvcCkgewor
ICB2YXIgbGFzdCA9IDAsIGxlZnQgPSAwLCByaWdodCA9IDAsIHN0YXJ0ID0gKHN0YXJ0IHx8ICIo
IikudG9TdHJpbmcoKSwgc3RvcCA9IChzdG9wIHx8ICIpIikudG9TdHJpbmcoKSwgaTsKKyAgZm9y
IChpID0gMDsgaSA8IHJvdXRlcy5sZW5ndGg7IGkrKykgeworICAgIHZhciBjaHVuayA9IHJvdXRl
c1tpXTsKKyAgICBpZiAoY2h1bmsuaW5kZXhPZihzdGFydCwgbGFzdCkgPiBjaHVuay5pbmRleE9m
KHN0b3AsIGxhc3QpIHx8IH5jaHVuay5pbmRleE9mKHN0YXJ0LCBsYXN0KSAmJiAhfmNodW5rLmlu
ZGV4T2Yoc3RvcCwgbGFzdCkgfHwgIX5jaHVuay5pbmRleE9mKHN0YXJ0LCBsYXN0KSAmJiB+Y2h1
bmsuaW5kZXhPZihzdG9wLCBsYXN0KSkgeworICAgICAgbGVmdCA9IGNodW5rLmluZGV4T2Yoc3Rh
cnQsIGxhc3QpOworICAgICAgcmlnaHQgPSBjaHVuay5pbmRleE9mKHN0b3AsIGxhc3QpOworICAg
ICAgaWYgKH5sZWZ0ICYmICF+cmlnaHQgfHwgIX5sZWZ0ICYmIH5yaWdodCkgeworICAgICAgICB2
YXIgdG1wID0gcm91dGVzLnNsaWNlKDAsIChpIHx8IDEpICsgMSkuam9pbihkZWxpbWl0ZXIpOwor
ICAgICAgICByb3V0ZXMgPSBbIHRtcCBdLmNvbmNhdChyb3V0ZXMuc2xpY2UoKGkgfHwgMSkgKyAx
KSk7CisgICAgICB9CisgICAgICBsYXN0ID0gKHJpZ2h0ID4gbGVmdCA/IHJpZ2h0IDogbGVmdCkg
KyAxOworICAgICAgaSA9IDA7CisgICAgfSBlbHNlIHsKKyAgICAgIGxhc3QgPSAwOworICAgIH0K
KyAgfQorICByZXR1cm4gcm91dGVzOworfQorCit2YXIgUVVFUllfU0VQQVJBVE9SID0gL1w/Liov
OworCitSb3V0ZXIucHJvdG90eXBlLmNvbmZpZ3VyZSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHsKKyAg
b3B0aW9ucyA9IG9wdGlvbnMgfHwge307CisgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5tZXRo
b2RzLmxlbmd0aDsgaSsrKSB7CisgICAgdGhpcy5fbWV0aG9kc1t0aGlzLm1ldGhvZHNbaV1dID0g
dHJ1ZTsKKyAgfQorICB0aGlzLnJlY3Vyc2UgPSBvcHRpb25zLnJlY3Vyc2UgfHwgdGhpcy5yZWN1
cnNlIHx8IGZhbHNlOworICB0aGlzLmFzeW5jID0gb3B0aW9ucy5hc3luYyB8fCBmYWxzZTsKKyAg
dGhpcy5kZWxpbWl0ZXIgPSBvcHRpb25zLmRlbGltaXRlciB8fCAiLyI7CisgIHRoaXMuc3RyaWN0
ID0gdHlwZW9mIG9wdGlvbnMuc3RyaWN0ID09PSAidW5kZWZpbmVkIiA/IHRydWUgOiBvcHRpb25z
LnN0cmljdDsKKyAgdGhpcy5ub3Rmb3VuZCA9IG9wdGlvbnMubm90Zm91bmQ7CisgIHRoaXMucmVz
b3VyY2UgPSBvcHRpb25zLnJlc291cmNlOworICB0aGlzLmhpc3RvcnkgPSBvcHRpb25zLmh0bWw1
aGlzdG9yeSAmJiB0aGlzLmhpc3RvcnlTdXBwb3J0IHx8IGZhbHNlOworICB0aGlzLnJ1bl9pbl9p
bml0ID0gdGhpcy5oaXN0b3J5ID09PSB0cnVlICYmIG9wdGlvbnMucnVuX2hhbmRsZXJfaW5faW5p
dCAhPT0gZmFsc2U7CisgIHRoaXMuY29udmVydF9oYXNoX2luX2luaXQgPSB0aGlzLmhpc3Rvcnkg
PT09IHRydWUgJiYgb3B0aW9ucy5jb252ZXJ0X2hhc2hfaW5faW5pdCAhPT0gZmFsc2U7CisgIHRo
aXMuZXZlcnkgPSB7CisgICAgYWZ0ZXI6IG9wdGlvbnMuYWZ0ZXIgfHwgbnVsbCwKKyAgICBiZWZv
cmU6IG9wdGlvbnMuYmVmb3JlIHx8IG51bGwsCisgICAgb246IG9wdGlvbnMub24gfHwgbnVsbAor
ICB9OworICByZXR1cm4gdGhpczsKK307CisKK1JvdXRlci5wcm90b3R5cGUucGFyYW0gPSBmdW5j
dGlvbih0b2tlbiwgbWF0Y2hlcikgeworICBpZiAodG9rZW5bMF0gIT09ICI6IikgeworICAgIHRv
a2VuID0gIjoiICsgdG9rZW47CisgIH0KKyAgdmFyIGNvbXBpbGVkID0gbmV3IFJlZ0V4cCh0b2tl
biwgImciKTsKKyAgdGhpcy5wYXJhbXNbdG9rZW5dID0gZnVuY3Rpb24oc3RyKSB7CisgICAgcmV0
dXJuIHN0ci5yZXBsYWNlKGNvbXBpbGVkLCBtYXRjaGVyLnNvdXJjZSB8fCBtYXRjaGVyKTsKKyAg
fTsKKyAgcmV0dXJuIHRoaXM7Cit9OworCitSb3V0ZXIucHJvdG90eXBlLm9uID0gUm91dGVyLnBy
b3RvdHlwZS5yb3V0ZSA9IGZ1bmN0aW9uKG1ldGhvZCwgcGF0aCwgcm91dGUpIHsKKyAgdmFyIHNl
bGYgPSB0aGlzOworICBpZiAoIXJvdXRlICYmIHR5cGVvZiBwYXRoID09ICJmdW5jdGlvbiIpIHsK
KyAgICByb3V0ZSA9IHBhdGg7CisgICAgcGF0aCA9IG1ldGhvZDsKKyAgICBtZXRob2QgPSAib24i
OworICB9CisgIGlmIChBcnJheS5pc0FycmF5KHBhdGgpKSB7CisgICAgcmV0dXJuIHBhdGguZm9y
RWFjaChmdW5jdGlvbihwKSB7CisgICAgICBzZWxmLm9uKG1ldGhvZCwgcCwgcm91dGUpOworICAg
IH0pOworICB9CisgIGlmIChwYXRoLnNvdXJjZSkgeworICAgIHBhdGggPSBwYXRoLnNvdXJjZS5y
ZXBsYWNlKC9cXFwvL2lnLCAiLyIpOworICB9CisgIGlmIChBcnJheS5pc0FycmF5KG1ldGhvZCkp
IHsKKyAgICByZXR1cm4gbWV0aG9kLmZvckVhY2goZnVuY3Rpb24obSkgeworICAgICAgc2VsZi5v
bihtLnRvTG93ZXJDYXNlKCksIHBhdGgsIHJvdXRlKTsKKyAgICB9KTsKKyAgfQorICBwYXRoID0g
cGF0aC5zcGxpdChuZXcgUmVnRXhwKHRoaXMuZGVsaW1pdGVyKSk7CisgIHBhdGggPSB0ZXJtaW5h
dG9yKHBhdGgsIHRoaXMuZGVsaW1pdGVyKTsKKyAgdGhpcy5pbnNlcnQobWV0aG9kLCB0aGlzLnNj
b3BlLmNvbmNhdChwYXRoKSwgcm91dGUpOworfTsKKworUm91dGVyLnByb3RvdHlwZS5wYXRoID0g
ZnVuY3Rpb24ocGF0aCwgcm91dGVzRm4pIHsKKyAgdmFyIHNlbGYgPSB0aGlzLCBsZW5ndGggPSB0
aGlzLnNjb3BlLmxlbmd0aDsKKyAgaWYgKHBhdGguc291cmNlKSB7CisgICAgcGF0aCA9IHBhdGgu
c291cmNlLnJlcGxhY2UoL1xcXC8vaWcsICIvIik7CisgIH0KKyAgcGF0aCA9IHBhdGguc3BsaXQo
bmV3IFJlZ0V4cCh0aGlzLmRlbGltaXRlcikpOworICBwYXRoID0gdGVybWluYXRvcihwYXRoLCB0
aGlzLmRlbGltaXRlcik7CisgIHRoaXMuc2NvcGUgPSB0aGlzLnNjb3BlLmNvbmNhdChwYXRoKTsK
KyAgcm91dGVzRm4uY2FsbCh0aGlzLCB0aGlzKTsKKyAgdGhpcy5zY29wZS5zcGxpY2UobGVuZ3Ro
LCBwYXRoLmxlbmd0aCk7Cit9OworCitSb3V0ZXIucHJvdG90eXBlLmRpc3BhdGNoID0gZnVuY3Rp
b24obWV0aG9kLCBwYXRoLCBjYWxsYmFjaykgeworICB2YXIgc2VsZiA9IHRoaXMsIGZucyA9IHRo
aXMudHJhdmVyc2UobWV0aG9kLCBwYXRoLnJlcGxhY2UoUVVFUllfU0VQQVJBVE9SLCAiIiksIHRo
aXMucm91dGVzLCAiIiksIGludm9rZWQgPSB0aGlzLl9pbnZva2VkLCBhZnRlcjsKKyAgdGhpcy5f
aW52b2tlZCA9IHRydWU7CisgIGlmICghZm5zIHx8IGZucy5sZW5ndGggPT09IDApIHsKKyAgICB0
aGlzLmxhc3QgPSBbXTsKKyAgICBpZiAodHlwZW9mIHRoaXMubm90Zm91bmQgPT09ICJmdW5jdGlv
biIpIHsKKyAgICAgIHRoaXMuaW52b2tlKFsgdGhpcy5ub3Rmb3VuZCBdLCB7CisgICAgICAgIG1l
dGhvZDogbWV0aG9kLAorICAgICAgICBwYXRoOiBwYXRoCisgICAgICB9LCBjYWxsYmFjayk7Cisg
ICAgfQorICAgIHJldHVybiBmYWxzZTsKKyAgfQorICBpZiAodGhpcy5yZWN1cnNlID09PSAiZm9y
d2FyZCIpIHsKKyAgICBmbnMgPSBmbnMucmV2ZXJzZSgpOworICB9CisgIGZ1bmN0aW9uIHVwZGF0
ZUFuZEludm9rZSgpIHsKKyAgICBzZWxmLmxhc3QgPSBmbnMuYWZ0ZXI7CisgICAgc2VsZi5pbnZv
a2Uoc2VsZi5ydW5saXN0KGZucyksIHNlbGYsIGNhbGxiYWNrKTsKKyAgfQorICBhZnRlciA9IHRo
aXMuZXZlcnkgJiYgdGhpcy5ldmVyeS5hZnRlciA/IFsgdGhpcy5ldmVyeS5hZnRlciBdLmNvbmNh
dCh0aGlzLmxhc3QpIDogWyB0aGlzLmxhc3QgXTsKKyAgaWYgKGFmdGVyICYmIGFmdGVyLmxlbmd0
aCA+IDAgJiYgaW52b2tlZCkgeworICAgIGlmICh0aGlzLmFzeW5jKSB7CisgICAgICB0aGlzLmlu
dm9rZShhZnRlciwgdGhpcywgdXBkYXRlQW5kSW52b2tlKTsKKyAgICB9IGVsc2UgeworICAgICAg
dGhpcy5pbnZva2UoYWZ0ZXIsIHRoaXMpOworICAgICAgdXBkYXRlQW5kSW52b2tlKCk7CisgICAg
fQorICAgIHJldHVybiB0cnVlOworICB9CisgIHVwZGF0ZUFuZEludm9rZSgpOworICByZXR1cm4g
dHJ1ZTsKK307CisKK1JvdXRlci5wcm90b3R5cGUuaW52b2tlID0gZnVuY3Rpb24oZm5zLCB0aGlz
QXJnLCBjYWxsYmFjaykgeworICB2YXIgc2VsZiA9IHRoaXM7CisgIHZhciBhcHBseTsKKyAgaWYg
KHRoaXMuYXN5bmMpIHsKKyAgICBhcHBseSA9IGZ1bmN0aW9uKGZuLCBuZXh0KSB7CisgICAgICBp
ZiAoQXJyYXkuaXNBcnJheShmbikpIHsKKyAgICAgICAgcmV0dXJuIF9hc3luY0V2ZXJ5U2VyaWVz
KGZuLCBhcHBseSwgbmV4dCk7CisgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBmbiA9PSAiZnVuY3Rp
b24iKSB7CisgICAgICAgIGZuLmFwcGx5KHRoaXNBcmcsIChmbnMuY2FwdHVyZXMgfHwgW10pLmNv
bmNhdChuZXh0KSk7CisgICAgICB9CisgICAgfTsKKyAgICBfYXN5bmNFdmVyeVNlcmllcyhmbnMs
IGFwcGx5LCBmdW5jdGlvbigpIHsKKyAgICAgIGlmIChjYWxsYmFjaykgeworICAgICAgICBjYWxs
YmFjay5hcHBseSh0aGlzQXJnLCBhcmd1bWVudHMpOworICAgICAgfQorICAgIH0pOworICB9IGVs
c2UgeworICAgIGFwcGx5ID0gZnVuY3Rpb24oZm4pIHsKKyAgICAgIGlmIChBcnJheS5pc0FycmF5
KGZuKSkgeworICAgICAgICByZXR1cm4gX2V2ZXJ5KGZuLCBhcHBseSk7CisgICAgICB9IGVsc2Ug
aWYgKHR5cGVvZiBmbiA9PT0gImZ1bmN0aW9uIikgeworICAgICAgICByZXR1cm4gZm4uYXBwbHko
dGhpc0FyZywgZm5zLmNhcHR1cmVzIHx8IFtdKTsKKyAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGZu
ID09PSAic3RyaW5nIiAmJiBzZWxmLnJlc291cmNlKSB7CisgICAgICAgIHNlbGYucmVzb3VyY2Vb
Zm5dLmFwcGx5KHRoaXNBcmcsIGZucy5jYXB0dXJlcyB8fCBbXSk7CisgICAgICB9CisgICAgfTsK
KyAgICBfZXZlcnkoZm5zLCBhcHBseSk7CisgIH0KK307CisKK1JvdXRlci5wcm90b3R5cGUudHJh
dmVyc2UgPSBmdW5jdGlvbihtZXRob2QsIHBhdGgsIHJvdXRlcywgcmVnZXhwLCBmaWx0ZXIpIHsK
KyAgdmFyIGZucyA9IFtdLCBjdXJyZW50LCBleGFjdCwgbWF0Y2gsIG5leHQsIHRoYXQ7CisgIGZ1
bmN0aW9uIGZpbHRlclJvdXRlcyhyb3V0ZXMpIHsKKyAgICBpZiAoIWZpbHRlcikgeworICAgICAg
cmV0dXJuIHJvdXRlczsKKyAgICB9CisgICAgZnVuY3Rpb24gZGVlcENvcHkoc291cmNlKSB7Cisg
ICAgICB2YXIgcmVzdWx0ID0gW107CisgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNvdXJjZS5s
ZW5ndGg7IGkrKykgeworICAgICAgICByZXN1bHRbaV0gPSBBcnJheS5pc0FycmF5KHNvdXJjZVtp
XSkgPyBkZWVwQ29weShzb3VyY2VbaV0pIDogc291cmNlW2ldOworICAgICAgfQorICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICB9CisgICAgZnVuY3Rpb24gYXBwbHlGaWx0ZXIoZm5zKSB7CisgICAg
ICBmb3IgKHZhciBpID0gZm5zLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7CisgICAgICAgIGlm
IChBcnJheS5pc0FycmF5KGZuc1tpXSkpIHsKKyAgICAgICAgICBhcHBseUZpbHRlcihmbnNbaV0p
OworICAgICAgICAgIGlmIChmbnNbaV0ubGVuZ3RoID09PSAwKSB7CisgICAgICAgICAgICBmbnMu
c3BsaWNlKGksIDEpOworICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBp
ZiAoIWZpbHRlcihmbnNbaV0pKSB7CisgICAgICAgICAgICBmbnMuc3BsaWNlKGksIDEpOworICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgICB2YXIgbmV3Um91dGVzID0g
ZGVlcENvcHkocm91dGVzKTsKKyAgICBuZXdSb3V0ZXMubWF0Y2hlZCA9IHJvdXRlcy5tYXRjaGVk
OworICAgIG5ld1JvdXRlcy5jYXB0dXJlcyA9IHJvdXRlcy5jYXB0dXJlczsKKyAgICBuZXdSb3V0
ZXMuYWZ0ZXIgPSByb3V0ZXMuYWZ0ZXIuZmlsdGVyKGZpbHRlcik7CisgICAgYXBwbHlGaWx0ZXIo
bmV3Um91dGVzKTsKKyAgICByZXR1cm4gbmV3Um91dGVzOworICB9CisgIGlmIChwYXRoID09PSB0
aGlzLmRlbGltaXRlciAmJiByb3V0ZXNbbWV0aG9kXSkgeworICAgIG5leHQgPSBbIFsgcm91dGVz
LmJlZm9yZSwgcm91dGVzW21ldGhvZF0gXS5maWx0ZXIoQm9vbGVhbikgXTsKKyAgICBuZXh0LmFm
dGVyID0gWyByb3V0ZXMuYWZ0ZXIgXS5maWx0ZXIoQm9vbGVhbik7CisgICAgbmV4dC5tYXRjaGVk
ID0gdHJ1ZTsKKyAgICBuZXh0LmNhcHR1cmVzID0gW107CisgICAgcmV0dXJuIGZpbHRlclJvdXRl
cyhuZXh0KTsKKyAgfQorICBmb3IgKHZhciByIGluIHJvdXRlcykgeworICAgIGlmIChyb3V0ZXMu
aGFzT3duUHJvcGVydHkocikgJiYgKCF0aGlzLl9tZXRob2RzW3JdIHx8IHRoaXMuX21ldGhvZHNb
cl0gJiYgdHlwZW9mIHJvdXRlc1tyXSA9PT0gIm9iamVjdCIgJiYgIUFycmF5LmlzQXJyYXkocm91
dGVzW3JdKSkpIHsKKyAgICAgIGN1cnJlbnQgPSBleGFjdCA9IHJlZ2V4cCArIHRoaXMuZGVsaW1p
dGVyICsgcjsKKyAgICAgIGlmICghdGhpcy5zdHJpY3QpIHsKKyAgICAgICAgZXhhY3QgKz0gIlsi
ICsgdGhpcy5kZWxpbWl0ZXIgKyAiXT8iOworICAgICAgfQorICAgICAgbWF0Y2ggPSBwYXRoLm1h
dGNoKG5ldyBSZWdFeHAoIl4iICsgZXhhY3QpKTsKKyAgICAgIGlmICghbWF0Y2gpIHsKKyAgICAg
ICAgY29udGludWU7CisgICAgICB9CisgICAgICBpZiAobWF0Y2hbMF0gJiYgbWF0Y2hbMF0gPT0g
cGF0aCAmJiByb3V0ZXNbcl1bbWV0aG9kXSkgeworICAgICAgICBuZXh0ID0gWyBbIHJvdXRlc1ty
XS5iZWZvcmUsIHJvdXRlc1tyXVttZXRob2RdIF0uZmlsdGVyKEJvb2xlYW4pIF07CisgICAgICAg
IG5leHQuYWZ0ZXIgPSBbIHJvdXRlc1tyXS5hZnRlciBdLmZpbHRlcihCb29sZWFuKTsKKyAgICAg
ICAgbmV4dC5tYXRjaGVkID0gdHJ1ZTsKKyAgICAgICAgbmV4dC5jYXB0dXJlcyA9IG1hdGNoLnNs
aWNlKDEpOworICAgICAgICBpZiAodGhpcy5yZWN1cnNlICYmIHJvdXRlcyA9PT0gdGhpcy5yb3V0
ZXMpIHsKKyAgICAgICAgICBuZXh0LnB1c2goWyByb3V0ZXMuYmVmb3JlLCByb3V0ZXMub24gXS5m
aWx0ZXIoQm9vbGVhbikpOworICAgICAgICAgIG5leHQuYWZ0ZXIgPSBuZXh0LmFmdGVyLmNvbmNh
dChbIHJvdXRlcy5hZnRlciBdLmZpbHRlcihCb29sZWFuKSk7CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIGZpbHRlclJvdXRlcyhuZXh0KTsKKyAgICAgIH0KKyAgICAgIG5leHQgPSB0aGlzLnRy
YXZlcnNlKG1ldGhvZCwgcGF0aCwgcm91dGVzW3JdLCBjdXJyZW50KTsKKyAgICAgIGlmIChuZXh0
Lm1hdGNoZWQpIHsKKyAgICAgICAgaWYgKG5leHQubGVuZ3RoID4gMCkgeworICAgICAgICAgIGZu
cyA9IGZucy5jb25jYXQobmV4dCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHRoaXMucmVjdXJz
ZSkgeworICAgICAgICAgIGZucy5wdXNoKFsgcm91dGVzW3JdLmJlZm9yZSwgcm91dGVzW3JdLm9u
IF0uZmlsdGVyKEJvb2xlYW4pKTsKKyAgICAgICAgICBuZXh0LmFmdGVyID0gbmV4dC5hZnRlci5j
b25jYXQoWyByb3V0ZXNbcl0uYWZ0ZXIgXS5maWx0ZXIoQm9vbGVhbikpOworICAgICAgICAgIGlm
IChyb3V0ZXMgPT09IHRoaXMucm91dGVzKSB7CisgICAgICAgICAgICBmbnMucHVzaChbIHJvdXRl
c1siYmVmb3JlIl0sIHJvdXRlc1sib24iXSBdLmZpbHRlcihCb29sZWFuKSk7CisgICAgICAgICAg
ICBuZXh0LmFmdGVyID0gbmV4dC5hZnRlci5jb25jYXQoWyByb3V0ZXNbImFmdGVyIl0gXS5maWx0
ZXIoQm9vbGVhbikpOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBmbnMubWF0Y2hl
ZCA9IHRydWU7CisgICAgICAgIGZucy5jYXB0dXJlcyA9IG5leHQuY2FwdHVyZXM7CisgICAgICAg
IGZucy5hZnRlciA9IG5leHQuYWZ0ZXI7CisgICAgICAgIHJldHVybiBmaWx0ZXJSb3V0ZXMoZm5z
KTsKKyAgICAgIH0KKyAgICB9CisgIH0KKyAgcmV0dXJuIGZhbHNlOworfTsKKworUm91dGVyLnBy
b3RvdHlwZS5pbnNlcnQgPSBmdW5jdGlvbihtZXRob2QsIHBhdGgsIHJvdXRlLCBwYXJlbnQpIHsK
KyAgdmFyIG1ldGhvZFR5cGUsIHBhcmVudFR5cGUsIGlzQXJyYXksIG5lc3RlZCwgcGFydDsKKyAg
cGF0aCA9IHBhdGguZmlsdGVyKGZ1bmN0aW9uKHApIHsKKyAgICByZXR1cm4gcCAmJiBwLmxlbmd0
aCA+IDA7CisgIH0pOworICBwYXJlbnQgPSBwYXJlbnQgfHwgdGhpcy5yb3V0ZXM7CisgIHBhcnQg
PSBwYXRoLnNoaWZ0KCk7CisgIGlmICgvXDp8XCovLnRlc3QocGFydCkgJiYgIS9cXGR8XFx3Ly50
ZXN0KHBhcnQpKSB7CisgICAgcGFydCA9IHJlZ2lmeVN0cmluZyhwYXJ0LCB0aGlzLnBhcmFtcyk7
CisgIH0KKyAgaWYgKHBhdGgubGVuZ3RoID4gMCkgeworICAgIHBhcmVudFtwYXJ0XSA9IHBhcmVu
dFtwYXJ0XSB8fCB7fTsKKyAgICByZXR1cm4gdGhpcy5pbnNlcnQobWV0aG9kLCBwYXRoLCByb3V0
ZSwgcGFyZW50W3BhcnRdKTsKKyAgfQorICBpZiAoIXBhcnQgJiYgIXBhdGgubGVuZ3RoICYmIHBh
cmVudCA9PT0gdGhpcy5yb3V0ZXMpIHsKKyAgICBtZXRob2RUeXBlID0gdHlwZW9mIHBhcmVudFtt
ZXRob2RdOworICAgIHN3aXRjaCAobWV0aG9kVHlwZSkgeworICAgICBjYXNlICJmdW5jdGlvbiI6
CisgICAgICBwYXJlbnRbbWV0aG9kXSA9IFsgcGFyZW50W21ldGhvZF0sIHJvdXRlIF07CisgICAg
ICByZXR1cm47CisgICAgIGNhc2UgIm9iamVjdCI6CisgICAgICBwYXJlbnRbbWV0aG9kXS5wdXNo
KHJvdXRlKTsKKyAgICAgIHJldHVybjsKKyAgICAgY2FzZSAidW5kZWZpbmVkIjoKKyAgICAgIHBh
cmVudFttZXRob2RdID0gcm91dGU7CisgICAgICByZXR1cm47CisgICAgfQorICAgIHJldHVybjsK
KyAgfQorICBwYXJlbnRUeXBlID0gdHlwZW9mIHBhcmVudFtwYXJ0XTsKKyAgaXNBcnJheSA9IEFy
cmF5LmlzQXJyYXkocGFyZW50W3BhcnRdKTsKKyAgaWYgKHBhcmVudFtwYXJ0XSAmJiAhaXNBcnJh
eSAmJiBwYXJlbnRUeXBlID09ICJvYmplY3QiKSB7CisgICAgbWV0aG9kVHlwZSA9IHR5cGVvZiBw
YXJlbnRbcGFydF1bbWV0aG9kXTsKKyAgICBzd2l0Y2ggKG1ldGhvZFR5cGUpIHsKKyAgICAgY2Fz
ZSAiZnVuY3Rpb24iOgorICAgICAgcGFyZW50W3BhcnRdW21ldGhvZF0gPSBbIHBhcmVudFtwYXJ0
XVttZXRob2RdLCByb3V0ZSBdOworICAgICAgcmV0dXJuOworICAgICBjYXNlICJvYmplY3QiOgor
ICAgICAgcGFyZW50W3BhcnRdW21ldGhvZF0ucHVzaChyb3V0ZSk7CisgICAgICByZXR1cm47Cisg
ICAgIGNhc2UgInVuZGVmaW5lZCI6CisgICAgICBwYXJlbnRbcGFydF1bbWV0aG9kXSA9IHJvdXRl
OworICAgICAgcmV0dXJuOworICAgIH0KKyAgfSBlbHNlIGlmIChwYXJlbnRUeXBlID09ICJ1bmRl
ZmluZWQiKSB7CisgICAgbmVzdGVkID0ge307CisgICAgbmVzdGVkW21ldGhvZF0gPSByb3V0ZTsK
KyAgICBwYXJlbnRbcGFydF0gPSBuZXN0ZWQ7CisgICAgcmV0dXJuOworICB9CisgIHRocm93IG5l
dyBFcnJvcigiSW52YWxpZCByb3V0ZSBjb250ZXh0OiAiICsgcGFyZW50VHlwZSk7Cit9OworCisK
KworUm91dGVyLnByb3RvdHlwZS5leHRlbmQgPSBmdW5jdGlvbihtZXRob2RzKSB7CisgIHZhciBz
ZWxmID0gdGhpcywgbGVuID0gbWV0aG9kcy5sZW5ndGgsIGk7CisgIGZ1bmN0aW9uIGV4dGVuZCht
ZXRob2QpIHsKKyAgICBzZWxmLl9tZXRob2RzW21ldGhvZF0gPSB0cnVlOworICAgIHNlbGZbbWV0
aG9kXSA9IGZ1bmN0aW9uKCkgeworICAgICAgdmFyIGV4dHJhID0gYXJndW1lbnRzLmxlbmd0aCA9
PT0gMSA/IFsgbWV0aG9kLCAiIiBdIDogWyBtZXRob2QgXTsKKyAgICAgIHNlbGYub24uYXBwbHko
c2VsZiwgZXh0cmEuY29uY2F0KEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cykp
KTsKKyAgICB9OworICB9CisgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgIGV4dGVu
ZChtZXRob2RzW2ldKTsKKyAgfQorfTsKKworUm91dGVyLnByb3RvdHlwZS5ydW5saXN0ID0gZnVu
Y3Rpb24oZm5zKSB7CisgIHZhciBydW5saXN0ID0gdGhpcy5ldmVyeSAmJiB0aGlzLmV2ZXJ5LmJl
Zm9yZSA/IFsgdGhpcy5ldmVyeS5iZWZvcmUgXS5jb25jYXQoX2ZsYXR0ZW4oZm5zKSkgOiBfZmxh
dHRlbihmbnMpOworICBpZiAodGhpcy5ldmVyeSAmJiB0aGlzLmV2ZXJ5Lm9uKSB7CisgICAgcnVu
bGlzdC5wdXNoKHRoaXMuZXZlcnkub24pOworICB9CisgIHJ1bmxpc3QuY2FwdHVyZXMgPSBmbnMu
Y2FwdHVyZXM7CisgIHJ1bmxpc3Quc291cmNlID0gZm5zLnNvdXJjZTsKKyAgcmV0dXJuIHJ1bmxp
c3Q7Cit9OworCitSb3V0ZXIucHJvdG90eXBlLm1vdW50ID0gZnVuY3Rpb24ocm91dGVzLCBwYXRo
KSB7CisgIGlmICghcm91dGVzIHx8IHR5cGVvZiByb3V0ZXMgIT09ICJvYmplY3QiIHx8IEFycmF5
LmlzQXJyYXkocm91dGVzKSkgeworICAgIHJldHVybjsKKyAgfQorICB2YXIgc2VsZiA9IHRoaXM7
CisgIHBhdGggPSBwYXRoIHx8IFtdOworICBpZiAoIUFycmF5LmlzQXJyYXkocGF0aCkpIHsKKyAg
ICBwYXRoID0gcGF0aC5zcGxpdChzZWxmLmRlbGltaXRlcik7CisgIH0KKyAgZnVuY3Rpb24gaW5z
ZXJ0T3JNb3VudChyb3V0ZSwgbG9jYWwpIHsKKyAgICB2YXIgcmVuYW1lID0gcm91dGUsIHBhcnRz
ID0gcm91dGUuc3BsaXQoc2VsZi5kZWxpbWl0ZXIpLCByb3V0ZVR5cGUgPSB0eXBlb2Ygcm91dGVz
W3JvdXRlXSwgaXNSb3V0ZSA9IHBhcnRzWzBdID09PSAiIiB8fCAhc2VsZi5fbWV0aG9kc1twYXJ0
c1swXV0sIGV2ZW50ID0gaXNSb3V0ZSA/ICJvbiIgOiByZW5hbWU7CisgICAgaWYgKGlzUm91dGUp
IHsKKyAgICAgIHJlbmFtZSA9IHJlbmFtZS5zbGljZSgocmVuYW1lLm1hdGNoKG5ldyBSZWdFeHAo
Il4iICsgc2VsZi5kZWxpbWl0ZXIpKSB8fCBbICIiIF0pWzBdLmxlbmd0aCk7CisgICAgICBwYXJ0
cy5zaGlmdCgpOworICAgIH0KKyAgICBpZiAoaXNSb3V0ZSAmJiByb3V0ZVR5cGUgPT09ICJvYmpl
Y3QiICYmICFBcnJheS5pc0FycmF5KHJvdXRlc1tyb3V0ZV0pKSB7CisgICAgICBsb2NhbCA9IGxv
Y2FsLmNvbmNhdChwYXJ0cyk7CisgICAgICBzZWxmLm1vdW50KHJvdXRlc1tyb3V0ZV0sIGxvY2Fs
KTsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGlzUm91dGUpIHsKKyAgICAgIGxvY2Fs
ID0gbG9jYWwuY29uY2F0KHJlbmFtZS5zcGxpdChzZWxmLmRlbGltaXRlcikpOworICAgICAgbG9j
YWwgPSB0ZXJtaW5hdG9yKGxvY2FsLCBzZWxmLmRlbGltaXRlcik7CisgICAgfQorICAgIHNlbGYu
aW5zZXJ0KGV2ZW50LCBsb2NhbCwgcm91dGVzW3JvdXRlXSk7CisgIH0KKyAgZm9yICh2YXIgcm91
dGUgaW4gcm91dGVzKSB7CisgICAgaWYgKHJvdXRlcy5oYXNPd25Qcm9wZXJ0eShyb3V0ZSkpIHsK
KyAgICAgIGluc2VydE9yTW91bnQocm91dGUsIHBhdGguc2xpY2UoMCkpOworICAgIH0KKyAgfQor
fTsKKworCisKK30odHlwZW9mIGV4cG9ydHMgPT09ICJvYmplY3QiID8gZXhwb3J0cyA6IHdpbmRv
dykpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvZGlzdC9kaXJlY3Rvci5taW4uanMgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL2Rpc3QvZGlyZWN0b3IubWluLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmM5NTZhZjQwMDk1YmMyMmM2ODg1ZjI3N2VkOWVmNWY3NDE2YmFlNGYKLS0t
IC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9y
L2Rpc3QvZGlyZWN0b3IubWluLmpzCkBAIC0wLDAgKzEsNyBAQAorCisKKy8vCisvLyBHZW5lcmF0
ZWQgb24gVHVlIERlYyAxNiAyMDE0IDEyOjEzOjQ3IEdNVCswMTAwIChDRVQpIGJ5IENoYXJsaWUg
Um9iYmlucywgUGFvbG8gRnJhZ29tZW5pICYgdGhlIENvbnRyaWJ1dG9ycyAoVXNpbmcgQ29kZXN1
cmdlb24pLgorLy8gVmVyc2lvbiAxLjIuNgorLy8KKyhmdW5jdGlvbihhKXtmdW5jdGlvbiBrKGEs
YixjLGQpe3ZhciBlPTAsZj0wLGc9MCxjPShjfHwiKCIpLnRvU3RyaW5nKCksZD0oZHx8IikiKS50
b1N0cmluZygpLGg7Zm9yKGg9MDtoPGEubGVuZ3RoO2grKyl7dmFyIGk9YVtoXTtpZihpLmluZGV4
T2YoYyxlKT5pLmluZGV4T2YoZCxlKXx8fmkuaW5kZXhPZihjLGUpJiYhfmkuaW5kZXhPZihkLGUp
fHwhfmkuaW5kZXhPZihjLGUpJiZ+aS5pbmRleE9mKGQsZSkpe2Y9aS5pbmRleE9mKGMsZSksZz1p
LmluZGV4T2YoZCxlKTtpZih+ZiYmIX5nfHwhfmYmJn5nKXt2YXIgaj1hLnNsaWNlKDAsKGh8fDEp
KzEpLmpvaW4oYik7YT1bal0uY29uY2F0KGEuc2xpY2UoKGh8fDEpKzEpKX1lPShnPmY/ZzpmKSsx
LGg9MH1lbHNlIGU9MH1yZXR1cm4gYX1mdW5jdGlvbiBqKGEsYil7dmFyIGMsZD0wLGU9IiI7d2hp
bGUoYz1hLnN1YnN0cihkKS5tYXRjaCgvW15cd1xkXC0gJUAmXSpcKlteXHdcZFwtICVAJl0qLykp
ZD1jLmluZGV4K2NbMF0ubGVuZ3RoLGNbMF09Y1swXS5yZXBsYWNlKC9eXCovLCIoW18uKCkhXFwg
JUAmYS16QS1aMC05LV0rKSIpLGUrPWEuc3Vic3RyKDAsYy5pbmRleCkrY1swXTthPWUrPWEuc3Vi
c3RyKGQpO3ZhciBmPWEubWF0Y2goLzooW15cL10rKS9pZyksZyxoO2lmKGYpe2g9Zi5sZW5ndGg7
Zm9yKHZhciBqPTA7ajxoO2orKylnPWZbal0sZy5zbGljZSgwLDIpPT09Ijo6Ij9hPWcuc2xpY2Uo
MSk6YT1hLnJlcGxhY2UoZyxpKGcsYikpfXJldHVybiBhfWZ1bmN0aW9uIGkoYSxiLGMpe2M9YTtm
b3IodmFyIGQgaW4gYilpZihiLmhhc093blByb3BlcnR5KGQpKXtjPWJbZF0oYSk7aWYoYyE9PWEp
YnJlYWt9cmV0dXJuIGM9PT1hPyIoWy5fYS16QS1aMC05LSUoKV0rKSI6Y31mdW5jdGlvbiBoKGEs
YixjKXtpZighYS5sZW5ndGgpcmV0dXJuIGMoKTt2YXIgZD0wOyhmdW5jdGlvbiBlKCl7YihhW2Rd
LGZ1bmN0aW9uKGIpe2J8fGI9PT0hMT8oYyhiKSxjPWZ1bmN0aW9uKCl7fSk6KGQrPTEsZD09PWEu
bGVuZ3RoP2MoKTplKCkpfSl9KSgpfWZ1bmN0aW9uIGcoYSl7dmFyIGI9W107Zm9yKHZhciBjPTAs
ZD1hLmxlbmd0aDtjPGQ7YysrKWI9Yi5jb25jYXQoYVtjXSk7cmV0dXJuIGJ9ZnVuY3Rpb24gZihh
LGIpe2Zvcih2YXIgYz0wO2M8YS5sZW5ndGg7Yys9MSlpZihiKGFbY10sYyxhKT09PSExKXJldHVy
bn1mdW5jdGlvbiBjKCl7cmV0dXJuIGIuaGFzaD09PSIifHxiLmhhc2g9PT0iIyJ9dmFyIGI9ZG9j
dW1lbnQubG9jYXRpb24sZD17bW9kZToibW9kZXJuIixoYXNoOmIuaGFzaCxoaXN0b3J5OiExLGNo
ZWNrOmZ1bmN0aW9uKCl7dmFyIGE9Yi5oYXNoO2EhPXRoaXMuaGFzaCYmKHRoaXMuaGFzaD1hLHRo
aXMub25IYXNoQ2hhbmdlZCgpKX0sZmlyZTpmdW5jdGlvbigpe3RoaXMubW9kZT09PSJtb2Rlcm4i
P3RoaXMuaGlzdG9yeT09PSEwP3dpbmRvdy5vbnBvcHN0YXRlKCk6d2luZG93Lm9uaGFzaGNoYW5n
ZSgpOnRoaXMub25IYXNoQ2hhbmdlZCgpfSxpbml0OmZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gZChh
KXtmb3IodmFyIGI9MCxjPWUubGlzdGVuZXJzLmxlbmd0aDtiPGM7YisrKWUubGlzdGVuZXJzW2Jd
KGEpfXZhciBjPXRoaXM7dGhpcy5oaXN0b3J5PWIsZS5saXN0ZW5lcnN8fChlLmxpc3RlbmVycz1b
XSk7aWYoIm9uaGFzaGNoYW5nZSJpbiB3aW5kb3cmJihkb2N1bWVudC5kb2N1bWVudE1vZGU9PT11
bmRlZmluZWR8fGRvY3VtZW50LmRvY3VtZW50TW9kZT43KSl0aGlzLmhpc3Rvcnk9PT0hMD9zZXRU
aW1lb3V0KGZ1bmN0aW9uKCl7d2luZG93Lm9ucG9wc3RhdGU9ZH0sNTAwKTp3aW5kb3cub25oYXNo
Y2hhbmdlPWQsdGhpcy5tb2RlPSJtb2Rlcm4iO2Vsc2V7dmFyIGY9ZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiaWZyYW1lIik7Zi5pZD0ic3RhdGUtZnJhbWUiLGYuc3R5bGUuZGlzcGxheT0ibm9uZSIs
ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChmKSx0aGlzLndyaXRlRnJhbWUoIiIpLCJvbnByb3Bl
cnR5Y2hhbmdlImluIGRvY3VtZW50JiYiYXR0YWNoRXZlbnQiaW4gZG9jdW1lbnQmJmRvY3VtZW50
LmF0dGFjaEV2ZW50KCJvbnByb3BlcnR5Y2hhbmdlIixmdW5jdGlvbigpe2V2ZW50LnByb3BlcnR5
TmFtZT09PSJsb2NhdGlvbiImJmMuY2hlY2soKX0pLHdpbmRvdy5zZXRJbnRlcnZhbChmdW5jdGlv
bigpe2MuY2hlY2soKX0sNTApLHRoaXMub25IYXNoQ2hhbmdlZD1kLHRoaXMubW9kZT0ibGVnYWN5
In1lLmxpc3RlbmVycy5wdXNoKGEpO3JldHVybiB0aGlzLm1vZGV9LGRlc3Ryb3k6ZnVuY3Rpb24o
YSl7aWYoISFlJiYhIWUubGlzdGVuZXJzKXt2YXIgYj1lLmxpc3RlbmVycztmb3IodmFyIGM9Yi5s
ZW5ndGgtMTtjPj0wO2MtLSliW2NdPT09YSYmYi5zcGxpY2UoYywxKX19LHNldEhhc2g6ZnVuY3Rp
b24oYSl7dGhpcy5tb2RlPT09ImxlZ2FjeSImJnRoaXMud3JpdGVGcmFtZShhKSx0aGlzLmhpc3Rv
cnk9PT0hMD8od2luZG93Lmhpc3RvcnkucHVzaFN0YXRlKHt9LGRvY3VtZW50LnRpdGxlLGEpLHRo
aXMuZmlyZSgpKTpiLmhhc2g9YVswXT09PSIvIj9hOiIvIithO3JldHVybiB0aGlzfSx3cml0ZUZy
YW1lOmZ1bmN0aW9uKGEpe3ZhciBiPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdGF0ZS1mcmFt
ZSIpLGM9Yi5jb250ZW50RG9jdW1lbnR8fGIuY29udGVudFdpbmRvdy5kb2N1bWVudDtjLm9wZW4o
KSxjLndyaXRlKCI8c2NyaXB0Pl9oYXNoID0gJyIrYSsiJzsgb25sb2FkID0gcGFyZW50Lmxpc3Rl
bmVyLnN5bmNIYXNoOzxzY3JpcHQ+IiksYy5jbG9zZSgpfSxzeW5jSGFzaDpmdW5jdGlvbigpe3Zh
ciBhPXRoaXMuX2hhc2g7YSE9Yi5oYXNoJiYoYi5oYXNoPWEpO3JldHVybiB0aGlzfSxvbkhhc2hD
aGFuZ2VkOmZ1bmN0aW9uKCl7fX0sZT1hLlJvdXRlcj1mdW5jdGlvbihhKXtpZih0aGlzIGluc3Rh
bmNlb2YgZSl0aGlzLnBhcmFtcz17fSx0aGlzLnJvdXRlcz17fSx0aGlzLm1ldGhvZHM9WyJvbiIs
Im9uY2UiLCJhZnRlciIsImJlZm9yZSJdLHRoaXMuc2NvcGU9W10sdGhpcy5fbWV0aG9kcz17fSx0
aGlzLl9pbnNlcnQ9dGhpcy5pbnNlcnQsdGhpcy5pbnNlcnQ9dGhpcy5pbnNlcnRFeCx0aGlzLmhp
c3RvcnlTdXBwb3J0PSh3aW5kb3cuaGlzdG9yeSE9bnVsbD93aW5kb3cuaGlzdG9yeS5wdXNoU3Rh
dGU6bnVsbCkhPW51bGwsdGhpcy5jb25maWd1cmUoKSx0aGlzLm1vdW50KGF8fHt9KTtlbHNlIHJl
dHVybiBuZXcgZShhKX07ZS5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihhKXt2YXIgZT10aGlzLGY7
dGhpcy5oYW5kbGVyPWZ1bmN0aW9uKGEpe3ZhciBiPWEmJmEubmV3VVJMfHx3aW5kb3cubG9jYXRp
b24uaGFzaCxjPWUuaGlzdG9yeT09PSEwP2UuZ2V0UGF0aCgpOmIucmVwbGFjZSgvLiojLywiIik7
ZS5kaXNwYXRjaCgib24iLGMuY2hhckF0KDApPT09Ii8iP2M6Ii8iK2MpfSxkLmluaXQodGhpcy5o
YW5kbGVyLHRoaXMuaGlzdG9yeSksdGhpcy5oaXN0b3J5PT09ITE/YygpJiZhP2IuaGFzaD1hOmMo
KXx8ZS5kaXNwYXRjaCgib24iLCIvIitiLmhhc2gucmVwbGFjZSgvXigjXC98I3xcLykvLCIiKSk6
KHRoaXMuY29udmVydF9oYXNoX2luX2luaXQ/KGY9YygpJiZhP2E6YygpP251bGw6Yi5oYXNoLnJl
cGxhY2UoL14jLywiIiksZiYmd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKHt9LGRvY3VtZW50
LnRpdGxlLGYpKTpmPXRoaXMuZ2V0UGF0aCgpLChmfHx0aGlzLnJ1bl9pbl9pbml0PT09ITApJiZ0
aGlzLmhhbmRsZXIoKSk7cmV0dXJuIHRoaXN9LGUucHJvdG90eXBlLmV4cGxvZGU9ZnVuY3Rpb24o
KXt2YXIgYT10aGlzLmhpc3Rvcnk9PT0hMD90aGlzLmdldFBhdGgoKTpiLmhhc2g7YS5jaGFyQXQo
MSk9PT0iLyImJihhPWEuc2xpY2UoMSkpO3JldHVybiBhLnNsaWNlKDEsYS5sZW5ndGgpLnNwbGl0
KCIvIil9LGUucHJvdG90eXBlLnNldFJvdXRlPWZ1bmN0aW9uKGEsYixjKXt2YXIgZT10aGlzLmV4
cGxvZGUoKTt0eXBlb2YgYT09Im51bWJlciImJnR5cGVvZiBiPT0ic3RyaW5nIj9lW2FdPWI6dHlw
ZW9mIGM9PSJzdHJpbmciP2Uuc3BsaWNlKGEsYixzKTplPVthXSxkLnNldEhhc2goZS5qb2luKCIv
IikpO3JldHVybiBlfSxlLnByb3RvdHlwZS5pbnNlcnRFeD1mdW5jdGlvbihhLGIsYyxkKXthPT09
Im9uY2UiJiYoYT0ib24iLGM9ZnVuY3Rpb24oYSl7dmFyIGI9ITE7cmV0dXJuIGZ1bmN0aW9uKCl7
aWYoIWIpe2I9ITA7cmV0dXJuIGEuYXBwbHkodGhpcyxhcmd1bWVudHMpfX19KGMpKTtyZXR1cm4g
dGhpcy5faW5zZXJ0KGEsYixjLGQpfSxlLnByb3RvdHlwZS5nZXRSb3V0ZT1mdW5jdGlvbihhKXt2
YXIgYj1hO2lmKHR5cGVvZiBhPT0ibnVtYmVyIiliPXRoaXMuZXhwbG9kZSgpW2FdO2Vsc2UgaWYo
dHlwZW9mIGE9PSJzdHJpbmciKXt2YXIgYz10aGlzLmV4cGxvZGUoKTtiPWMuaW5kZXhPZihhKX1l
bHNlIGI9dGhpcy5leHBsb2RlKCk7cmV0dXJuIGJ9LGUucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rp
b24oKXtkLmRlc3Ryb3kodGhpcy5oYW5kbGVyKTtyZXR1cm4gdGhpc30sZS5wcm90b3R5cGUuZ2V0
UGF0aD1mdW5jdGlvbigpe3ZhciBhPXdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTthLnN1YnN0cigw
LDEpIT09Ii8iJiYoYT0iLyIrYSk7cmV0dXJuIGF9O3ZhciBsPS9cPy4qLztlLnByb3RvdHlwZS5j
b25maWd1cmU9ZnVuY3Rpb24oYSl7YT1hfHx7fTtmb3IodmFyIGI9MDtiPHRoaXMubWV0aG9kcy5s
ZW5ndGg7YisrKXRoaXMuX21ldGhvZHNbdGhpcy5tZXRob2RzW2JdXT0hMDt0aGlzLnJlY3Vyc2U9
YS5yZWN1cnNlfHx0aGlzLnJlY3Vyc2V8fCExLHRoaXMuYXN5bmM9YS5hc3luY3x8ITEsdGhpcy5k
ZWxpbWl0ZXI9YS5kZWxpbWl0ZXJ8fCIvIix0aGlzLnN0cmljdD10eXBlb2YgYS5zdHJpY3Q9PSJ1
bmRlZmluZWQiPyEwOmEuc3RyaWN0LHRoaXMubm90Zm91bmQ9YS5ub3Rmb3VuZCx0aGlzLnJlc291
cmNlPWEucmVzb3VyY2UsdGhpcy5oaXN0b3J5PWEuaHRtbDVoaXN0b3J5JiZ0aGlzLmhpc3RvcnlT
dXBwb3J0fHwhMSx0aGlzLnJ1bl9pbl9pbml0PXRoaXMuaGlzdG9yeT09PSEwJiZhLnJ1bl9oYW5k
bGVyX2luX2luaXQhPT0hMSx0aGlzLmNvbnZlcnRfaGFzaF9pbl9pbml0PXRoaXMuaGlzdG9yeT09
PSEwJiZhLmNvbnZlcnRfaGFzaF9pbl9pbml0IT09ITEsdGhpcy5ldmVyeT17YWZ0ZXI6YS5hZnRl
cnx8bnVsbCxiZWZvcmU6YS5iZWZvcmV8fG51bGwsb246YS5vbnx8bnVsbH07cmV0dXJuIHRoaXN9
LGUucHJvdG90eXBlLnBhcmFtPWZ1bmN0aW9uKGEsYil7YVswXSE9PSI6IiYmKGE9IjoiK2EpO3Zh
ciBjPW5ldyBSZWdFeHAoYSwiZyIpO3RoaXMucGFyYW1zW2FdPWZ1bmN0aW9uKGEpe3JldHVybiBh
LnJlcGxhY2UoYyxiLnNvdXJjZXx8Yil9O3JldHVybiB0aGlzfSxlLnByb3RvdHlwZS5vbj1lLnBy
b3RvdHlwZS5yb3V0ZT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpczshYyYmdHlwZW9mIGI9PSJm
dW5jdGlvbiImJihjPWIsYj1hLGE9Im9uIik7aWYoQXJyYXkuaXNBcnJheShiKSlyZXR1cm4gYi5m
b3JFYWNoKGZ1bmN0aW9uKGIpe2Qub24oYSxiLGMpfSk7Yi5zb3VyY2UmJihiPWIuc291cmNlLnJl
cGxhY2UoL1xcXC8vaWcsIi8iKSk7aWYoQXJyYXkuaXNBcnJheShhKSlyZXR1cm4gYS5mb3JFYWNo
KGZ1bmN0aW9uKGEpe2Qub24oYS50b0xvd2VyQ2FzZSgpLGIsYyl9KTtiPWIuc3BsaXQobmV3IFJl
Z0V4cCh0aGlzLmRlbGltaXRlcikpLGI9ayhiLHRoaXMuZGVsaW1pdGVyKSx0aGlzLmluc2VydChh
LHRoaXMuc2NvcGUuY29uY2F0KGIpLGMpfSxlLnByb3RvdHlwZS5wYXRoPWZ1bmN0aW9uKGEsYil7
dmFyIGM9dGhpcyxkPXRoaXMuc2NvcGUubGVuZ3RoO2Euc291cmNlJiYoYT1hLnNvdXJjZS5yZXBs
YWNlKC9cXFwvL2lnLCIvIikpLGE9YS5zcGxpdChuZXcgUmVnRXhwKHRoaXMuZGVsaW1pdGVyKSks
YT1rKGEsdGhpcy5kZWxpbWl0ZXIpLHRoaXMuc2NvcGU9dGhpcy5zY29wZS5jb25jYXQoYSksYi5j
YWxsKHRoaXMsdGhpcyksdGhpcy5zY29wZS5zcGxpY2UoZCxhLmxlbmd0aCl9LGUucHJvdG90eXBl
LmRpc3BhdGNoPWZ1bmN0aW9uKGEsYixjKXtmdW5jdGlvbiBoKCl7ZC5sYXN0PWUuYWZ0ZXIsZC5p
bnZva2UoZC5ydW5saXN0KGUpLGQsYyl9dmFyIGQ9dGhpcyxlPXRoaXMudHJhdmVyc2UoYSxiLnJl
cGxhY2UobCwiIiksdGhpcy5yb3V0ZXMsIiIpLGY9dGhpcy5faW52b2tlZCxnO3RoaXMuX2ludm9r
ZWQ9ITA7aWYoIWV8fGUubGVuZ3RoPT09MCl7dGhpcy5sYXN0PVtdLHR5cGVvZiB0aGlzLm5vdGZv
dW5kPT0iZnVuY3Rpb24iJiZ0aGlzLmludm9rZShbdGhpcy5ub3Rmb3VuZF0se21ldGhvZDphLHBh
dGg6Yn0sYyk7cmV0dXJuITF9dGhpcy5yZWN1cnNlPT09ImZvcndhcmQiJiYoZT1lLnJldmVyc2Uo
KSksZz10aGlzLmV2ZXJ5JiZ0aGlzLmV2ZXJ5LmFmdGVyP1t0aGlzLmV2ZXJ5LmFmdGVyXS5jb25j
YXQodGhpcy5sYXN0KTpbdGhpcy5sYXN0XTtpZihnJiZnLmxlbmd0aD4wJiZmKXt0aGlzLmFzeW5j
P3RoaXMuaW52b2tlKGcsdGhpcyxoKToodGhpcy5pbnZva2UoZyx0aGlzKSxoKCkpO3JldHVybiEw
fWgoKTtyZXR1cm4hMH0sZS5wcm90b3R5cGUuaW52b2tlPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD10
aGlzLGU7dGhpcy5hc3luYz8oZT1mdW5jdGlvbihjLGQpe2lmKEFycmF5LmlzQXJyYXkoYykpcmV0
dXJuIGgoYyxlLGQpO3R5cGVvZiBjPT0iZnVuY3Rpb24iJiZjLmFwcGx5KGIsKGEuY2FwdHVyZXN8
fFtdKS5jb25jYXQoZCkpfSxoKGEsZSxmdW5jdGlvbigpe2MmJmMuYXBwbHkoYixhcmd1bWVudHMp
fSkpOihlPWZ1bmN0aW9uKGMpe2lmKEFycmF5LmlzQXJyYXkoYykpcmV0dXJuIGYoYyxlKTtpZih0
eXBlb2YgYz09ImZ1bmN0aW9uIilyZXR1cm4gYy5hcHBseShiLGEuY2FwdHVyZXN8fFtdKTt0eXBl
b2YgYz09InN0cmluZyImJmQucmVzb3VyY2UmJmQucmVzb3VyY2VbY10uYXBwbHkoYixhLmNhcHR1
cmVzfHxbXSl9LGYoYSxlKSl9LGUucHJvdG90eXBlLnRyYXZlcnNlPWZ1bmN0aW9uKGEsYixjLGQs
ZSl7ZnVuY3Rpb24gbChhKXtmdW5jdGlvbiBjKGEpe2Zvcih2YXIgYj1hLmxlbmd0aC0xO2I+PTA7
Yi0tKUFycmF5LmlzQXJyYXkoYVtiXSk/KGMoYVtiXSksYVtiXS5sZW5ndGg9PT0wJiZhLnNwbGlj
ZShiLDEpKTplKGFbYl0pfHxhLnNwbGljZShiLDEpfWZ1bmN0aW9uIGIoYSl7dmFyIGM9W107Zm9y
KHZhciBkPTA7ZDxhLmxlbmd0aDtkKyspY1tkXT1BcnJheS5pc0FycmF5KGFbZF0pP2IoYVtkXSk6
YVtkXTtyZXR1cm4gY31pZighZSlyZXR1cm4gYTt2YXIgZD1iKGEpO2QubWF0Y2hlZD1hLm1hdGNo
ZWQsZC5jYXB0dXJlcz1hLmNhcHR1cmVzLGQuYWZ0ZXI9YS5hZnRlci5maWx0ZXIoZSksYyhkKTty
ZXR1cm4gZH12YXIgZj1bXSxnLGgsaSxqLGs7aWYoYj09PXRoaXMuZGVsaW1pdGVyJiZjW2FdKXtq
PVtbYy5iZWZvcmUsY1thXV0uZmlsdGVyKEJvb2xlYW4pXSxqLmFmdGVyPVtjLmFmdGVyXS5maWx0
ZXIoQm9vbGVhbiksai5tYXRjaGVkPSEwLGouY2FwdHVyZXM9W107cmV0dXJuIGwoail9Zm9yKHZh
ciBtIGluIGMpaWYoYy5oYXNPd25Qcm9wZXJ0eShtKSYmKCF0aGlzLl9tZXRob2RzW21dfHx0aGlz
Ll9tZXRob2RzW21dJiZ0eXBlb2YgY1ttXT09Im9iamVjdCImJiFBcnJheS5pc0FycmF5KGNbbV0p
KSl7Zz1oPWQrdGhpcy5kZWxpbWl0ZXIrbSx0aGlzLnN0cmljdHx8KGgrPSJbIit0aGlzLmRlbGlt
aXRlcisiXT8iKSxpPWIubWF0Y2gobmV3IFJlZ0V4cCgiXiIraCkpO2lmKCFpKWNvbnRpbnVlO2lm
KGlbMF0mJmlbMF09PWImJmNbbV1bYV0pe2o9W1tjW21dLmJlZm9yZSxjW21dW2FdXS5maWx0ZXIo
Qm9vbGVhbildLGouYWZ0ZXI9W2NbbV0uYWZ0ZXJdLmZpbHRlcihCb29sZWFuKSxqLm1hdGNoZWQ9
ITAsai5jYXB0dXJlcz1pLnNsaWNlKDEpLHRoaXMucmVjdXJzZSYmYz09PXRoaXMucm91dGVzJiYo
ai5wdXNoKFtjLmJlZm9yZSxjLm9uXS5maWx0ZXIoQm9vbGVhbikpLGouYWZ0ZXI9ai5hZnRlci5j
b25jYXQoW2MuYWZ0ZXJdLmZpbHRlcihCb29sZWFuKSkpO3JldHVybiBsKGopfWo9dGhpcy50cmF2
ZXJzZShhLGIsY1ttXSxnKTtpZihqLm1hdGNoZWQpe2oubGVuZ3RoPjAmJihmPWYuY29uY2F0KGop
KSx0aGlzLnJlY3Vyc2UmJihmLnB1c2goW2NbbV0uYmVmb3JlLGNbbV0ub25dLmZpbHRlcihCb29s
ZWFuKSksai5hZnRlcj1qLmFmdGVyLmNvbmNhdChbY1ttXS5hZnRlcl0uZmlsdGVyKEJvb2xlYW4p
KSxjPT09dGhpcy5yb3V0ZXMmJihmLnB1c2goW2MuYmVmb3JlLGMub25dLmZpbHRlcihCb29sZWFu
KSksai5hZnRlcj1qLmFmdGVyLmNvbmNhdChbYy5hZnRlcl0uZmlsdGVyKEJvb2xlYW4pKSkpLGYu
bWF0Y2hlZD0hMCxmLmNhcHR1cmVzPWouY2FwdHVyZXMsZi5hZnRlcj1qLmFmdGVyO3JldHVybiBs
KGYpfX1yZXR1cm4hMX0sZS5wcm90b3R5cGUuaW5zZXJ0PWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBl
LGYsZyxoLGk7Yj1iLmZpbHRlcihmdW5jdGlvbihhKXtyZXR1cm4gYSYmYS5sZW5ndGg+MH0pLGQ9
ZHx8dGhpcy5yb3V0ZXMsaT1iLnNoaWZ0KCksL1w6fFwqLy50ZXN0KGkpJiYhL1xcZHxcXHcvLnRl
c3QoaSkmJihpPWooaSx0aGlzLnBhcmFtcykpO2lmKGIubGVuZ3RoPjApe2RbaV09ZFtpXXx8e307
cmV0dXJuIHRoaXMuaW5zZXJ0KGEsYixjLGRbaV0pfXtpZighIWl8fCEhYi5sZW5ndGh8fGQhPT10
aGlzLnJvdXRlcyl7Zj10eXBlb2YgZFtpXSxnPUFycmF5LmlzQXJyYXkoZFtpXSk7aWYoZFtpXSYm
IWcmJmY9PSJvYmplY3QiKXtlPXR5cGVvZiBkW2ldW2FdO3N3aXRjaChlKXtjYXNlImZ1bmN0aW9u
IjpkW2ldW2FdPVtkW2ldW2FdLGNdO3JldHVybjtjYXNlIm9iamVjdCI6ZFtpXVthXS5wdXNoKGMp
O3JldHVybjtjYXNlInVuZGVmaW5lZCI6ZFtpXVthXT1jO3JldHVybn19ZWxzZSBpZihmPT0idW5k
ZWZpbmVkIil7aD17fSxoW2FdPWMsZFtpXT1oO3JldHVybn10aHJvdyBuZXcgRXJyb3IoIkludmFs
aWQgcm91dGUgY29udGV4dDogIitmKX1lPXR5cGVvZiBkW2FdO3N3aXRjaChlKXtjYXNlImZ1bmN0
aW9uIjpkW2FdPVtkW2FdLGNdO3JldHVybjtjYXNlIm9iamVjdCI6ZFthXS5wdXNoKGMpO3JldHVy
bjtjYXNlInVuZGVmaW5lZCI6ZFthXT1jO3JldHVybn19fSxlLnByb3RvdHlwZS5leHRlbmQ9ZnVu
Y3Rpb24oYSl7ZnVuY3Rpb24gZShhKXtiLl9tZXRob2RzW2FdPSEwLGJbYV09ZnVuY3Rpb24oKXt2
YXIgYz1hcmd1bWVudHMubGVuZ3RoPT09MT9bYSwiIl06W2FdO2Iub24uYXBwbHkoYixjLmNvbmNh
dChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpKSl9fXZhciBiPXRoaXMsYz1h
Lmxlbmd0aCxkO2ZvcihkPTA7ZDxjO2QrKyllKGFbZF0pfSxlLnByb3RvdHlwZS5ydW5saXN0PWZ1
bmN0aW9uKGEpe3ZhciBiPXRoaXMuZXZlcnkmJnRoaXMuZXZlcnkuYmVmb3JlP1t0aGlzLmV2ZXJ5
LmJlZm9yZV0uY29uY2F0KGcoYSkpOmcoYSk7dGhpcy5ldmVyeSYmdGhpcy5ldmVyeS5vbiYmYi5w
dXNoKHRoaXMuZXZlcnkub24pLGIuY2FwdHVyZXM9YS5jYXB0dXJlcyxiLnNvdXJjZT1hLnNvdXJj
ZTtyZXR1cm4gYn0sZS5wcm90b3R5cGUubW91bnQ9ZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBkKGIs
ZCl7dmFyIGU9YixmPWIuc3BsaXQoYy5kZWxpbWl0ZXIpLGc9dHlwZW9mIGFbYl0saD1mWzBdPT09
IiJ8fCFjLl9tZXRob2RzW2ZbMF1dLGk9aD8ib24iOmU7aCYmKGU9ZS5zbGljZSgoZS5tYXRjaChu
ZXcgUmVnRXhwKCJeIitjLmRlbGltaXRlcikpfHxbIiJdKVswXS5sZW5ndGgpLGYuc2hpZnQoKSk7
aCYmZz09PSJvYmplY3QiJiYhQXJyYXkuaXNBcnJheShhW2JdKT8oZD1kLmNvbmNhdChmKSxjLm1v
dW50KGFbYl0sZCkpOihoJiYoZD1kLmNvbmNhdChlLnNwbGl0KGMuZGVsaW1pdGVyKSksZD1rKGQs
Yy5kZWxpbWl0ZXIpKSxjLmluc2VydChpLGQsYVtiXSkpfWlmKCEhYSYmdHlwZW9mIGE9PSJvYmpl
Y3QiJiYhQXJyYXkuaXNBcnJheShhKSl7dmFyIGM9dGhpcztiPWJ8fFtdLEFycmF5LmlzQXJyYXko
Yil8fChiPWIuc3BsaXQoYy5kZWxpbWl0ZXIpKTtmb3IodmFyIGUgaW4gYSlhLmhhc093blByb3Bl
cnR5KGUpJiZkKGUsYi5zbGljZSgwKSl9fX0pKHR5cGVvZiBleHBvcnRzPT0ib2JqZWN0Ij9leHBv
cnRzOndpbmRvdykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL2Rpc3QvZW5kZXIuanMgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL2Rpc3QvZW5kZXIuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZmUzZWJjNDFiMGJkZTA2NGJmZDMzNjNmZDVkZDBiMzQwNmVmYjllZgotLS0gL2Rldi9u
dWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvZGlzdC9l
bmRlci5qcwpAQCAtMCwwICsxLDMgQEAKKyQuZW5kZXIoeworICByb3V0ZXI6IFJvdXRlcgorfSk7
CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL3Bh
Y2thZ2UuanNvbiBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvcGFj
a2FnZS5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEwYmQyOTYyNzI3ZjQ2NGRjYmUwOTgxNzJhOTlmYThkZTc2
YWI5YmQKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVz
L2RpcmVjdG9yL3BhY2thZ2UuanNvbgpAQCAtMCwwICsxLDQxIEBACit7CisgICJuYW1lIjogImRp
cmVjdG9yIiwKKyAgImRlc2NyaXB0aW9uIjogIkEgY2xpZW50IFNpZGUvU2VydmVyIFNpZGUgUm91
dGVyIiwKKyAgImF1dGhvciI6ICJDaGFybGllIFJvYmJpbnMgPGNoYXJsaWUucm9iYmluc0BnbWFp
bC5jb20+IiwKKyAgInZlcnNpb24iOiAiMS4yLjgiLAorICAibWFpbnRhaW5lcnMiOiBbCisgICAg
ImhpajFueCA8cGFvbG9Abm9kZWppdHN1LmNvbT4iLAorICAgICJiZWF1Z3VuZGVyc29uIDxiZWF1
QGJlYXVndW5kZXJzb24uY29tPiIKKyAgXSwKKyAgInJlcG9zaXRvcnkiOiB7CisgICAgInR5cGUi
OiAiZ2l0IiwKKyAgICAidXJsIjogImh0dHA6Ly9naXRodWIuY29tL2ZsYXRpcm9uL2RpcmVjdG9y
LmdpdCIKKyAgfSwKKyAgImtleXdvcmRzIjogWworICAgICJVUkwiLAorICAgICJyb3V0ZXIiLAor
ICAgICJodHRwIiwKKyAgICAiY2xpIiwKKyAgICAiZmxhdGlyb24iLAorICAgICJjbGllbnQgc2lk
ZSIsCisgICAgImVuZGVyIgorICBdLAorICAiZGV2RGVwZW5kZW5jaWVzIjogeworICAgICJhcGkt
ZWFzeSI6ICIwLjQueCIsCisgICAgImNvZGVzdXJnZW9uIjogImh0dHBzOi8vZ2l0aHViLmNvbS9o
aWoxbngvY29kZXN1cmdlb24vdGFyYmFsbC9tYXN0ZXIiLAorICAgICJjb2xvcnMiOiAiMS4wLngi
LAorICAgICJxdW5pdGpzIjogIjEuOS54IiwKKyAgICAicmVxdWVzdCI6ICIyLjQ5LngiLAorICAg
ICJ1Z2xpZnktanMiOiAiMi40LngiLAorICAgICJ2b3dzIjogIjAuOC4wIgorICB9LAorICAiZW5k
ZXIiOiAiLi9idWlsZC9lbmRlci5qcyIsCisgICJicm93c2VyaWZ5IjogIi4vYnVpbGQvZGlyZWN0
b3IiLAorICAibWFpbiI6ICIuL2xpYi9kaXJlY3RvciIsCisgICJlbmdpbmVzIjogeworICAgICJu
b2RlIjogIj49IDAuOC4wIgorICB9LAorICAic2NyaXB0cyI6IHsKKyAgICAidGVzdCI6ICJ2b3dz
IHRlc3Qvc2VydmVyLyovKi10ZXN0LmpzIC0tc3BlYyIKKyAgfQorfQpkaWZmIC0tZ2l0IGEvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9mdW5jdGlvbmFsLXBy
b2ctZXhhbXBsZXMvZWxtL2luZGV4Lmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2Z1bmN0aW9uYWwtcHJvZy1leGFtcGxlcy9lbG0vaW5kZXguaHRt
bAppbmRleCA5NTE0YzRjZDhhMDY4MWYyMTYzMTU4ZDhjZmEyOTZhYjU4OTg3N2NmLi45OTEzNGEy
NWZjNTM5YzhlOGQ1M2U0MTFjZjY4ZGI4N2UzYmVkY2ZmIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Z1bmN0aW9uYWwtcHJvZy1leGFt
cGxlcy9lbG0vaW5kZXguaHRtbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2Z1bmN0aW9uYWwtcHJvZy1leGFtcGxlcy9lbG0vaW5kZXguaHRtbApA
QCAtMTYsNyArMTYsNyBAQAogPC9oZWFkPgogCiA8Ym9keT4KLTxzY3JpcHQgc3JjPSJidWlsZC9l
bG0uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9ImRpc3QvZWxtLmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQ+CiAgICAgKGZ1bmN0aW9uICgpIHsKICAgICAgICAgLy8gdmFyIHJlc3VsdCA9IGxvY2Fs
U3RvcmFnZS5nZXRJdGVtKCdlbG0tdG9kby1tb2RlbCcpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>310234</attachid>
            <date>2017-05-16 00:03:52 -0700</date>
            <delta_ts>2017-05-16 14:16:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170513-20170516000351.patch</filename>
            <type>text/plain</type>
            <size>76194</size>
            <attacher name="Addy Osmani">addyo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2ODEwCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDU5ZTYwNDhjODMx
OGE3MzczZGZlYzg4MTU5ODgxMDM3MTM0NTMzN2YuLjczNzIyZTRhYjA0YjZhODQ5OGM0OTI4NDBl
ODRhOGU2MmI0MWUxOTIgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzggQEAKIDIwMTctMDUt
MTIgIEFkZHkgT3NtYW5pICA8YWRkeW9zbWFuaUBnbWFpbC5jb20+CiAKKyAgICAgICAgVXBkYXRl
IHRvIFNwZWVkb21ldGVyIDIuMCB3L3VwZGF0ZWQgZnJhbWV3b3JrcyArIG5ldyB3b3JrbG9hZHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDUxMwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZnJlc2gg
dGVzdCBydW5uZXIgYW5kIGZpeCBhcHBzIHRvIHdvcmsgd2l0aCBpdC4KKworICAgICAgICAqIFNw
ZWVkb21ldGVyL0ludGVyYWN0aXZlUnVubmVyLmh0bWw6CisgICAgICAgIChwYXJzZVF1ZXJ5U3Ry
aW5nKTogQWRkcyBzdXBwb3J0IGZvciBzdGFydEF1dG9tYXRpY2FsbHkgcXVlcnkgcGFyYW1ldGVy
LgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90ZXN0cy5qczoKKyAgICAgICAgKHRy
aWdnZXJFbnRlcik6IFJlZmFjdG9yIGV2ZW50IHRyaWdnZXJpbmcgYmVoYXZpb3IgZm9yIHRlc3Rz
LgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9hbmd1bGFyL2Rpc3QvaW5kZXguaHRtbDoKKyAgICAgICAgKENTUyk6IERyb3AgcmVm
ZXJlbmNlIHRvIGV4dHJhbmVvdXMgc3R5bGVzaGVldCBpbiBBbmd1bGFyIFRvZG9NVkMuCisgICAg
ICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2VtYmVyanMvYXNzZXRzL3RvZG9tdmMuanM6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvaW5kZXguaHRtbDoKKyAg
ICAgICAgKGJhc2UpOiBFbmFibGUgRW1iZXIgVG9kb01WQyB0byBiZSBydW4gZnJvbSBhbnkgZGly
ZWN0b3J5L2xldmVsLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS9hcHAvc2VydmljZXMvbWVtb3J5Lmpz
OgorICAgICAgICAobG9jYWxTdG9yYWdlTWVtb3J5KTogQ29ycmVjdCBpbXBvcnQgcGF0aCBhbmQg
c3dpdGNoIHRvIHdpbmRvdy5sb2NhbFN0b3JhZ2VNZW1vcnkgdG8gZml4IEVtYmVyIGZhaWx1cmVz
LgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9lbWJlcmpzL3NvdXJjZS9hcHAvc2VydmljZXMvcmVwby5qczoKKyAgICAgICAgKiBT
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJq
cy90ZXN0cy9pbmRleC5odG1sOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvaW5kZXguaHRtbDoKKyAgICAgICAgKiBT
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5
L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9MSUNFTlNFOiBBZGRlZC4KKyAgICAgICAgKExJQ0VOU0Up
OiBBZGQgbWlzc2luZyBtZXRhZGF0YSBhbmQgTElDRU5TRSBmaWxlcyBhcyBwYXJ0IG9mIGRpcmVj
dG9yLmpzIHBhY2thZ2UgZm9yIGpRdWVyeSBUb2RvTVZDCisgICAgICAgICogU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVs
ZXMvZGlyZWN0b3IvYm93ZXIuanNvbjogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMv
ZGlyZWN0b3IvZGlzdC9kaXJlY3Rvci5qczogQWRkIG1pc3NpbmcgCisgICAgICAgIGRpcmVjdG9y
LmpzIGRlcGVuZGVuY3kgZm9yIGpRdWVyeSBUb2RvTVZDIGltcGxlbWVudGF0aW9uLgorICAgICAg
ICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9q
cXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL2Rpc3QvZGlyZWN0b3IubWluLmpzOiBBZGRlZC4K
KyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9kaXN0L2VuZGVyLmpzOiBBZGRlZC4K
KyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9wYWNrYWdlLmpzb246IEFkZGVkLgor
ICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Z1bmN0aW9uYWwtcHJvZy1l
eGFtcGxlcy9lbG0vaW5kZXguaHRtbDogRml4IHBhdGggdG8gYnVpbHQgRWxtIFRvZG9NVkMgc2Ny
aXB0cy4KKworMjAxNy0wNS0xMiAgQWRkeSBPc21hbmkgIDxhZGR5b3NtYW5pQGdtYWlsLmNvbT4K
KwogICAgICAgICBTcGVlZG9tZXRlcjogQWRkIGEgUmVhY3QuanMgVG9kb01WQyBpbXBsZW1lbnRh
dGlvbgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcx
NDQ0CiAKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvSW50ZXJhY3Rp
dmVSdW5uZXIuaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvSW50ZXJhY3RpdmVS
dW5uZXIuaHRtbAppbmRleCA5MjA3NmE0YWNhYmU3ZGJjZWI4YjBiNWI5ZTUzMzY4ODZkOWVjNDU1
Li43ZTVmZTJhZGMxYjQzMDYwMTkxZTcwYTMyYzI1ODhiMjNlZTg4NDdkIDEwMDY0NAotLS0gYS9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL0ludGVyYWN0aXZlUnVubmVyLmh0bWwKKysrIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9JbnRlcmFjdGl2ZVJ1bm5lci5odG1sCkBAIC0x
LDcgKzEsNyBAQAogPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgotPHRpdGxlPkRvWW91
RXZlbkJlbmNoPC90aXRsZT4KKzx0aXRsZT5TcGVlZG9tZXRlciAyLjAgSW50ZXJhY3RpdmUgUnVu
bmVyPC90aXRsZT4KIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYmVuY2htYXJrLXJ1bm5lci5qcyIg
ZGVmZXI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3Rlc3RzLmpzIiBkZWZlcj48
L3NjcmlwdD4KIDxzdHlsZT4KQEAgLTY2LDEzICs2NiwzNyBAQCBmdW5jdGlvbiBjcmVhdGVVSUZv
clN1aXRlcyhzdWl0ZXMsIG9uc3RlcCwgb25ydW4pIHsKIAogICAgIHZhciBidXR0b24gPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTsKICAgICBidXR0b24udGV4dENvbnRlbnQgPSAn
UnVuJzsKKyAgICBidXR0b24uaWQgPSAncnVuU3VpdGVzJzsKICAgICBidXR0b24ub25jbGljayA9
IG9ucnVuOwogICAgIGNvbnRyb2wuYXBwZW5kQ2hpbGQoYnV0dG9uKTsKIAogICAgIHJldHVybiBj
b250cm9sOwogfQogCit2YXIgcGFyc2VRdWVyeVN0cmluZyA9IChmdW5jdGlvbiAocGFpckxpc3Qp
IHsKKyAgICB2YXIgcGFpcnMgPSB7fTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhaXJMaXN0
Lmxlbmd0aDsgKytpKSB7CisgICAgICAgIHZhciBrZXlWYWx1ZSA9IHBhaXJMaXN0W2ldLnNwbGl0
KCc9JywgMik7CisgICAgICAgIGlmIChrZXlWYWx1ZS5sZW5ndGggPT0gMSkKKyAgICAgICAgICAg
IHBhaXJzW2tleVZhbHVlWzBdXSA9ICcnOworICAgICAgICBlbHNlCisgICAgICAgICAgICBwYWly
c1trZXlWYWx1ZVswXV0gPSBkZWNvZGVVUklDb21wb25lbnQoa2V5VmFsdWVbMV0ucmVwbGFjZSgv
XCsvZywgJyAnKSk7CisgICAgfQorICAgIHJldHVybiBwYWlyczsKK30pKHdpbmRvdy5sb2NhdGlv
bi5zZWFyY2guc3Vic3RyKDEpLnNwbGl0KCcmJykpOworCitmdW5jdGlvbiBkaXNhYmxlQWxsU3Vp
dGVzRXhjZXB0KHN1aXRlTmFtZSkgeworICAgIFN1aXRlcy5mb3JFYWNoKGZ1bmN0aW9uKGVsZW1l
bnQpIHsKKyAgICAgICAgaWYgKGVsZW1lbnQubmFtZSAhPT0gc3VpdGVOYW1lKQorICAgICAgICAg
ICAgZWxlbWVudC5kaXNhYmxlZCA9IHRydWU7CisgICAgfSk7Cit9CisKIGZ1bmN0aW9uIHN0YXJ0
VGVzdCgpIHsKKyAgICB2YXIgcXVlcnlQYXJhbSA9IHBhcnNlUXVlcnlTdHJpbmdbJ3N1aXRlJ107
CisgICAgaWYgKHF1ZXJ5UGFyYW0gIT09IHVuZGVmaW5lZCkKKyAgICAgICAgZGlzYWJsZUFsbFN1
aXRlc0V4Y2VwdChxdWVyeVBhcmFtKTsKKwogICAgIHZhciBydW5uZXIgPSBuZXcgQmVuY2htYXJr
UnVubmVyKFN1aXRlcywgewogICAgICAgICB3aWxsUnVuVGVzdDogZnVuY3Rpb24gKHN1aXRlLCB0
ZXN0KSB7CiAgICAgICAgICAgICB0ZXN0LmFuY2hvci5jbGFzc0xpc3QuYWRkKCdydW5uaW5nJyk7
CkBAIC0xMTIsNiArMTM2LDkgQEAgZnVuY3Rpb24gc3RhcnRUZXN0KCkgewogICAgIGRvY3VtZW50
LmJvZHkuYXBwZW5kQ2hpbGQoY3JlYXRlVUlGb3JTdWl0ZXMoU3VpdGVzLAogICAgICAgICBmdW5j
dGlvbiAoKSB7IHJ1bm5lci5zdGVwKGN1cnJlbnRTdGF0ZSkudGhlbihmdW5jdGlvbiAoc3RhdGUp
IHsgY3VycmVudFN0YXRlID0gc3RhdGU7IH0pOyB9LAogICAgICAgICBmdW5jdGlvbiAoKSB7IHJ1
bm5lci5ydW5BbGxTdGVwcyhjdXJyZW50U3RhdGUpOyBjdXJyZW50U3RhdGUgPSBudWxsOyB9KSk7
CisKKyAgICBpZiAocGFyc2VRdWVyeVN0cmluZ1snc3RhcnRBdXRvbWF0aWNhbGx5J10gIT09IHVu
ZGVmaW5lZCkKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3J1blN1aXRlcycpLmNs
aWNrKCk7CiB9CiAKIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgc3RhcnRUZXN0KTsK
ZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rlc3Rz
LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdGVzdHMuanMKaW5k
ZXggZTZmMjM5Y2M5NGVhMjQ3ZmRmYWZhOGVmMzM0YTRmY2IxNzQyODBkOS4uYzYwYjhlYzYxMjJh
OTcyY2ZmYTBhNWI2N2RhMGQ0ZDY5YWJmN2NjOSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdGVzdHMuanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdGVzdHMuanMKQEAgLTEsMjEgKzEsMzEgQEAKIHZhciBudW1i
ZXJPZkl0ZW1zVG9BZGQgPSAxMDA7CiB2YXIgU3VpdGVzID0gW107Cit2YXIgRU5URVJfS0VZX0NP
REUgPSAxMzsKKwordmFyIHRyaWdnZXJFbnRlciA9IGZ1bmN0aW9uIChlbGVtZW50LCB0eXBlKSB7
CisgICAgdmFyIGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50cycpOworICAgIGV2
ZW50LmluaXRFdmVudCh0eXBlLCB0cnVlLCB0cnVlKTsKKyAgICBldmVudC5rZXlDb2RlID0gRU5U
RVJfS0VZX0NPREU7CisgICAgZXZlbnQud2hpY2ggPSBFTlRFUl9LRVlfQ09ERTsKKyAgICBldmVu
dC5rZXkgPSAnRU5URVInOworICAgIGVsZW1lbnQuZGlzcGF0Y2hFdmVudChldmVudCk7Cit9CiAK
IFN1aXRlcy5wdXNoKHsKICAgICBuYW1lOiAnVmFuaWxsYUpTLVRvZG9NVkMnLAogICAgIHVybDog
J3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvaW5kZXguaHRtbCcsCiAgICAgcHJl
cGFyZTogZnVuY3Rpb24gKHJ1bm5lciwgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7
Ci0gICAgICAgIHJldHVybiBydW5uZXIud2FpdEZvckVsZW1lbnQoJyNuZXctdG9kbycpLnRoZW4o
ZnVuY3Rpb24gKGVsZW1lbnQpIHsKKyAgICAgICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVu
dCgnLm5ldy10b2RvJykudGhlbihmdW5jdGlvbiAoZWxlbWVudCkgewogICAgICAgICAgICAgZWxl
bWVudC5mb2N1cygpOwogICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CiAgICAgICAgIH0pOwog
ICAgIH0sCiAgICAgdGVzdHM6IFsKICAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdBZGRp
bmcnICsgbnVtYmVyT2ZJdGVtc1RvQWRkICsgJ0l0ZW1zJywgZnVuY3Rpb24gKG5ld1RvZG8sIGNv
bnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgewotICAgICAgICAgICAgdmFyIHRvZG9Db250
cm9sbGVyID0gY29udGVudFdpbmRvdy50b2RvLmNvbnRyb2xsZXI7CiAgICAgICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IG51bWJlck9mSXRlbXNUb0FkZDsgaSsrKSB7CiAgICAgICAgICAgICAg
ICAgbmV3VG9kby52YWx1ZSA9ICdTb21ldGhpbmcgdG8gZG8gJyArIGk7Ci0gICAgICAgICAgICAg
ICAgdG9kb0NvbnRyb2xsZXIuYWRkSXRlbSh7a2V5Q29kZTogdG9kb0NvbnRyb2xsZXIuRU5URVJf
S0VZLCB0YXJnZXQ6IG5ld1RvZG99KTsKKyAgICAgICAgICAgICAgICBuZXdUb2RvLmRpc3BhdGNo
RXZlbnQobmV3IEV2ZW50KCdjaGFuZ2UnKSk7CisgICAgICAgICAgICAgICAgdHJpZ2dlckVudGVy
KG5ld1RvZG8sICdrZXlwcmVzcycpOwogICAgICAgICAgICAgfQogICAgICAgICB9KSwKICAgICAg
ICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdDb21wbGV0aW5nQWxsSXRlbXMnLCBmdW5jdGlvbiAo
bmV3VG9kbywgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CkBAIC0zMiw1NiArNDIs
ODQgQEAgU3VpdGVzLnB1c2goewogfSk7CiAKIFN1aXRlcy5wdXNoKHsKLSAgICBuYW1lOiAnRW1i
ZXJKUy1Ub2RvTVZDJywKLSAgICB1cmw6ICd0b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9l
bWJlcmpzL2luZGV4Lmh0bWwnLAorICAgIG5hbWU6ICdWYW5pbGxhLUVTMjAxNS1Ub2RvTVZDJywK
KyAgICB1cmw6ICd0b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1L2luZGV4Lmh0bWwnLAog
ICAgIHByZXBhcmU6IGZ1bmN0aW9uIChydW5uZXIsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1
bWVudCkgewotICAgICAgICByZXR1cm4gcnVubmVyLndhaXRGb3JFbGVtZW50KCcjbmV3LXRvZG8n
KS50aGVuKGZ1bmN0aW9uIChlbGVtZW50KSB7CisgICAgICAgIHJldHVybiBydW5uZXIud2FpdEZv
ckVsZW1lbnQoJy5uZXctdG9kbycpLnRoZW4oZnVuY3Rpb24gKGVsZW1lbnQpIHsKICAgICAgICAg
ICAgIGVsZW1lbnQuZm9jdXMoKTsKLSAgICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAg
ICAgdmlld3M6IGNvbnRlbnRXaW5kb3cuRW1iZXIuVmlldy52aWV3cywKLSAgICAgICAgICAgICAg
ICBlbWJlclJ1bjogY29udGVudFdpbmRvdy5FbWJlci5ydW4sCi0gICAgICAgICAgICB9CisgICAg
ICAgICAgICByZXR1cm4gZWxlbWVudDsKICAgICAgICAgfSk7CiAgICAgfSwKICAgICB0ZXN0czog
WwotICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0FkZGluZycgKyBudW1iZXJPZkl0ZW1z
VG9BZGQgKyAnSXRlbXMnLCBmdW5jdGlvbiAocGFyYW1zKSB7CisgICAgICAgIG5ldyBCZW5jaG1h
cmtUZXN0U3RlcCgnQWRkaW5nJyArIG51bWJlck9mSXRlbXNUb0FkZCArICdJdGVtcycsIGZ1bmN0
aW9uIChuZXdUb2RvLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKICAgICAgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtYmVyT2ZJdGVtc1RvQWRkOyBpKyspIHsKLSAgICAg
ICAgICAgICAgICBwYXJhbXMuZW1iZXJSdW4oZnVuY3Rpb24gKCkgeyBwYXJhbXMudmlld3NbIm5l
dy10b2RvIl0uc2V0KCd2YWx1ZScsICdTb21ldGhpbmcgdG8gZG8nICsgaSk7IH0pOwotICAgICAg
ICAgICAgICAgIHBhcmFtcy5lbWJlclJ1bihmdW5jdGlvbiAoKSB7IHBhcmFtcy52aWV3c1sibmV3
LXRvZG8iXS5pbnNlcnROZXdsaW5lKGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdFdmVudCcpKTsgfSk7
CisgICAgICAgICAgICAgICAgbmV3VG9kby52YWx1ZSA9ICdTb21ldGhpbmcgdG8gZG8gJyArIGk7
CisgICAgICAgICAgICAgICAgbmV3VG9kby5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnY2hhbmdl
JykpOworICAgICAgICAgICAgICAgIHRyaWdnZXJFbnRlcihuZXdUb2RvLCAna2V5cHJlc3MnKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfSksCiAgICAgICAgIG5ldyBCZW5jaG1hcmtUZXN0U3Rl
cCgnQ29tcGxldGluZ0FsbEl0ZW1zJywgZnVuY3Rpb24gKHBhcmFtcywgY29udGVudFdpbmRvdywg
Y29udGVudERvY3VtZW50KSB7Ci0gICAgICAgICAgICB2YXIgY2hlY2tib3hlcyA9IGNvbnRlbnRE
b2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZW1iZXItY2hlY2tib3gnKTsKLSAgICAgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgY2hlY2tib3hlcy5sZW5ndGg7IGkrKykgewotICAgICAgICAg
ICAgICAgIHZhciB2aWV3ID0gcGFyYW1zLnZpZXdzW2NoZWNrYm94ZXNbaV0uaWRdOwotICAgICAg
ICAgICAgICAgIHBhcmFtcy5lbWJlclJ1bihmdW5jdGlvbiAoKSB7IHZpZXcuc2V0KCdjaGVja2Vk
JywgdHJ1ZSk7IH0pOworICAgICAgICAgICAgdmFyIGNoZWNrYm94ZXMgPSBjb250ZW50RG9jdW1l
bnQucXVlcnlTZWxlY3RvckFsbCgnLnRvZ2dsZScpOworICAgICAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBjaGVja2JveGVzLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgICAgIGNoZWNrYm94
ZXNbaV0uY2xpY2soKTsKKyAgICAgICAgfSksCisgICAgICAgIG5ldyBCZW5jaG1hcmtUZXN0U3Rl
cCgnRGVsZXRpbmdJdGVtcycsIGZ1bmN0aW9uIChwYXJhbXMsIGNvbnRlbnRXaW5kb3csIGNvbnRl
bnREb2N1bWVudCkgeworICAgICAgICAgICAgdmFyIGRlbGV0ZUJ1dHRvbnMgPSBjb250ZW50RG9j
dW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmRlc3Ryb3knKTsKKyAgICAgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgZGVsZXRlQnV0dG9ucy5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgICAgICBk
ZWxldGVCdXR0b25zW2ldLmNsaWNrKCk7CisgICAgICAgIH0pLAorICAgIF0KK30pOworCitTdWl0
ZXMucHVzaCh7CisgICAgbmFtZTogJ1ZhbmlsbGEtRVMyMDE1LUJhYmVsLVdlYnBhY2stVG9kb01W
QycsCisgICAgdXJsOiAndG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJw
YWNrL2Rpc3QvaW5kZXguaHRtbCcsCisgICAgcHJlcGFyZTogZnVuY3Rpb24gKHJ1bm5lciwgY29u
dGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CisgICAgICAgIHJldHVybiBydW5uZXIud2Fp
dEZvckVsZW1lbnQoJy5uZXctdG9kbycpLnRoZW4oZnVuY3Rpb24gKGVsZW1lbnQpIHsKKyAgICAg
ICAgICAgIGVsZW1lbnQuZm9jdXMoKTsKKyAgICAgICAgICAgIHJldHVybiBlbGVtZW50OworICAg
ICAgICB9KTsKKyAgICB9LAorICAgIHRlc3RzOiBbCisgICAgICAgIG5ldyBCZW5jaG1hcmtUZXN0
U3RlcCgnQWRkaW5nJyArIG51bWJlck9mSXRlbXNUb0FkZCArICdJdGVtcycsIGZ1bmN0aW9uIChu
ZXdUb2RvLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgbnVtYmVyT2ZJdGVtc1RvQWRkOyBpKyspIHsKKyAgICAgICAgICAg
ICAgICBuZXdUb2RvLnZhbHVlID0gJ1NvbWV0aGluZyB0byBkbyAnICsgaTsKKyAgICAgICAgICAg
ICAgICBuZXdUb2RvLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdjaGFuZ2UnKSk7CisgICAgICAg
ICAgICAgICAgdHJpZ2dlckVudGVyKG5ld1RvZG8sICdrZXlwcmVzcycpOwogICAgICAgICAgICAg
fQogICAgICAgICB9KSwKKyAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdDb21wbGV0aW5n
QWxsSXRlbXMnLCBmdW5jdGlvbiAocGFyYW1zLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1l
bnQpIHsKKyAgICAgICAgICAgIHZhciBjaGVja2JveGVzID0gY29udGVudERvY3VtZW50LnF1ZXJ5
U2VsZWN0b3JBbGwoJy50b2dnbGUnKTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
Y2hlY2tib3hlcy5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgICAgICBjaGVja2JveGVzW2ldLmNs
aWNrKCk7CisgICAgICAgIH0pLAogICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0RlbGV0
aW5nSXRlbXMnLCBmdW5jdGlvbiAocGFyYW1zLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1l
bnQpIHsKICAgICAgICAgICAgIHZhciBkZWxldGVCdXR0b25zID0gY29udGVudERvY3VtZW50LnF1
ZXJ5U2VsZWN0b3JBbGwoJy5kZXN0cm95Jyk7CiAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IGRlbGV0ZUJ1dHRvbnMubGVuZ3RoOyBpKyspCi0gICAgICAgICAgICAgICAgcGFyYW1zLmVt
YmVyUnVuKGZ1bmN0aW9uICgpIHsgZGVsZXRlQnV0dG9uc1tpXS5jbGljaygpOyB9KTsKKyAgICAg
ICAgICAgICAgICBkZWxldGVCdXR0b25zW2ldLmNsaWNrKCk7CiAgICAgICAgIH0pLAogICAgIF0K
IH0pOwogCiBTdWl0ZXMucHVzaCh7Ci0gICAgbmFtZTogJ0JhY2tib25lSlMtVG9kb01WQycsCi0g
ICAgdXJsOiAndG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvaW5kZXguaHRt
bCcsCisgICAgbmFtZTogJ1JlYWN0LVRvZG9NVkMnLAorICAgIHVybDogJ3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L2luZGV4Lmh0bWwnLAogICAgIHByZXBhcmU6IGZ1bmN0aW9u
IChydW5uZXIsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgewotICAgIGNvbnRlbnRX
aW5kb3cuQmFja2JvbmUuc3luYyA9IGZ1bmN0aW9uICgpIHt9Ci0gICAgICAgIHJldHVybiBydW5u
ZXIud2FpdEZvckVsZW1lbnQoJyNuZXctdG9kbycpLnRoZW4oZnVuY3Rpb24gKGVsZW1lbnQpIHsK
KyAgICAgICAgY29udGVudFdpbmRvdy5hcHAuVXRpbHMuc3RvcmUgPSBmdW5jdGlvbiAoKSB7fQor
ICAgICAgICByZXR1cm4gcnVubmVyLndhaXRGb3JFbGVtZW50KCcubmV3LXRvZG8nKS50aGVuKGZ1
bmN0aW9uIChlbGVtZW50KSB7CiAgICAgICAgICAgICBlbGVtZW50LmZvY3VzKCk7CiAgICAgICAg
ICAgICByZXR1cm4gZWxlbWVudDsKICAgICAgICAgfSk7CiAgICAgfSwKICAgICB0ZXN0czogWwog
ICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0FkZGluZycgKyBudW1iZXJPZkl0ZW1zVG9B
ZGQgKyAnSXRlbXMnLCBmdW5jdGlvbiAobmV3VG9kbywgY29udGVudFdpbmRvdywgY29udGVudERv
Y3VtZW50KSB7Ci0gICAgICAgICAgICB2YXIgYXBwVmlldyA9IGNvbnRlbnRXaW5kb3cuYXBwVmll
dzsKLSAgICAgICAgICAgIHZhciBmYWtlRXZlbnQgPSB7d2hpY2g6IGNvbnRlbnRXaW5kb3cuRU5U
RVJfS0VZfTsKICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtYmVyT2ZJdGVtc1Rv
QWRkOyBpKyspIHsKICAgICAgICAgICAgICAgICBuZXdUb2RvLnZhbHVlID0gJ1NvbWV0aGluZyB0
byBkbyAnICsgaTsKLSAgICAgICAgICAgICAgICBhcHBWaWV3LmNyZWF0ZU9uRW50ZXIoZmFrZUV2
ZW50KTsKKyAgICAgICAgICAgICAgICBuZXdUb2RvLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdp
bnB1dCcsIHsKKyAgICAgICAgICAgICAgICAgIGJ1YmJsZXM6IHRydWUsCisgICAgICAgICAgICAg
ICAgICBjYW5jZWxhYmxlOiB0cnVlCisgICAgICAgICAgICAgICAgfSkpOworICAgICAgICAgICAg
ICAgIHRyaWdnZXJFbnRlcihuZXdUb2RvLCAna2V5ZG93bicpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9KSwKICAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdDb21wbGV0aW5nQWxsSXRl
bXMnLCBmdW5jdGlvbiAobmV3VG9kbywgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7
CkBAIC05OCw1NyArMTM2LDg5IEBAIFN1aXRlcy5wdXNoKHsKIH0pOwogCiBTdWl0ZXMucHVzaCh7
Ci0gICAgbmFtZTogJ2pRdWVyeS1Ub2RvTVZDJywKLSAgICB1cmw6ICd0b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9qcXVlcnkvaW5kZXguaHRtbCcsCisgICAgbmFtZTogJ1JlYWN0LVJlZHV4
LVRvZG9NVkMnLAorICAgIHVybDogJ3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0
LXJlZHV4L2Rpc3QvaW5kZXguaHRtbCcsCiAgICAgcHJlcGFyZTogZnVuY3Rpb24gKHJ1bm5lciwg
Y29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7Ci0gICAgICAgIHJldHVybiBydW5uZXIu
d2FpdEZvckVsZW1lbnQoJyNuZXctdG9kbycpLnRoZW4oZnVuY3Rpb24gKGVsZW1lbnQpIHsKKyAg
ICAgICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVudCgnLm5ldy10b2RvJykudGhlbihmdW5j
dGlvbiAoZWxlbWVudCkgewogICAgICAgICAgICAgZWxlbWVudC5mb2N1cygpOwogICAgICAgICAg
ICAgcmV0dXJuIGVsZW1lbnQ7CiAgICAgICAgIH0pOwogICAgIH0sCiAgICAgdGVzdHM6IFsKICAg
ICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdBZGRpbmcnICsgbnVtYmVyT2ZJdGVtc1RvQWRk
ICsgJ0l0ZW1zJywgZnVuY3Rpb24gKG5ld1RvZG8sIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1
bWVudCkgewotICAgICAgICAgICAgdmFyIGFwcCA9IGNvbnRlbnRXaW5kb3cuYXBwOwotICAgICAg
ICAgICAgdmFyIGZha2VFdmVudCA9IHt3aGljaDogYXBwLkVOVEVSX0tFWX07CiAgICAgICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IG51bWJlck9mSXRlbXNUb0FkZDsgaSsrKSB7CiAgICAgICAg
ICAgICAgICAgbmV3VG9kby52YWx1ZSA9ICdTb21ldGhpbmcgdG8gZG8gJyArIGk7Ci0gICAgICAg
ICAgICAgICAgYXBwLmNyZWF0ZS5jYWxsKG5ld1RvZG8sIGZha2VFdmVudCk7CisgICAgICAgICAg
ICAgICAgdHJpZ2dlckVudGVyKG5ld1RvZG8sICdrZXlkb3duJyk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0pLAotICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0NvbXBsZXRpbmdBbGxJ
dGVtcycsIGZ1bmN0aW9uIChuZXdUb2RvLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQp
IHsKLSAgICAgICAgICAgIHZhciBhcHAgPSBjb250ZW50V2luZG93LmFwcDsKKyAgICAgICAgbmV3
IEJlbmNobWFya1Rlc3RTdGVwKCdDb21wbGV0aW5nQWxsSXRlbXMnLCBmdW5jdGlvbiAocGFyYW1z
LCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKICAgICAgICAgICAgIHZhciBjaGVj
a2JveGVzID0gY29udGVudERvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy50b2dnbGUnKTsKLSAg
ICAgICAgICAgIHZhciAkID0gY29udGVudFdpbmRvdy4kOwotCi0gICAgICAgICAgICBpdGVtSW5k
ZXhUb0lkID0gbmV3IEFycmF5KGNoZWNrYm94ZXMubGVuZ3RoKTsKICAgICAgICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgY2hlY2tib3hlcy5sZW5ndGg7IGkrKykKLSAgICAgICAgICAgICAgICBp
dGVtSW5kZXhUb0lkW2ldID0gJChjaGVja2JveGVzW2ldKS5jbG9zZXN0KCdsaScpLmRhdGEoJ2lk
Jyk7CisgICAgICAgICAgICAgICAgY2hlY2tib3hlc1tpXS5jbGljaygpOworICAgICAgICB9KSwK
KyAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdEZWxldGluZ0l0ZW1zJywgZnVuY3Rpb24g
KHBhcmFtcywgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CisgICAgICAgICAgICB2
YXIgZGVsZXRlQnV0dG9ucyA9IGNvbnRlbnREb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZGVz
dHJveScpOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkZWxldGVCdXR0b25zLmxl
bmd0aDsgaSsrKQorICAgICAgICAgICAgICAgIGRlbGV0ZUJ1dHRvbnNbaV0uY2xpY2soKTsKKyAg
ICAgICAgfSksCisgICAgXQorfSk7CiAKLSAgICAgICAgICAgIGFwcC5nZXRUb2RvID0gZnVuY3Rp
b24gKGVsZW1lbnQsIGNhbGxiYWNrKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlz
OwotICAgICAgICAgICAgICAgIHZhciBpZCA9IGl0ZW1JbmRleFRvSWRbdGhpcy5jdXJyZW50SXRl
bUluZGV4XTsKLSAgICAgICAgICAgICAgICAkLmVhY2godGhpcy50b2RvcywgZnVuY3Rpb24gKGos
IHZhbCkgewotICAgICAgICAgICAgICAgICAgICBpZiAodmFsLmlkID09PSBpZCkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgY2FsbGJhY2suYXBwbHkoc2VsZiwgYXJndW1lbnRzKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIH0pOworU3VpdGVzLnB1c2goeworICAgIG5hbWU6ICdFbWJlckpTLVRv
ZG9NVkMnLAorICAgIHVybDogJ3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMn
LAorICAgIHByZXBhcmU6IGZ1bmN0aW9uIChydW5uZXIsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnRE
b2N1bWVudCkgeworICAgICAgICByZXR1cm4gcnVubmVyLndhaXRGb3JFbGVtZW50KCcjbmV3LXRv
ZG8nKS50aGVuKGZ1bmN0aW9uIChlbGVtZW50KSB7CisgICAgICAgICAgICBlbGVtZW50LmZvY3Vz
KCk7CisgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKKyAgICAgICAgfSk7CisgICAgfSwKKyAg
ICB0ZXN0czogWworICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0FkZGluZycgKyBudW1i
ZXJPZkl0ZW1zVG9BZGQgKyAnSXRlbXMnLCBmdW5jdGlvbiAobmV3VG9kbywgY29udGVudFdpbmRv
dywgY29udGVudERvY3VtZW50KSB7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51
bWJlck9mSXRlbXNUb0FkZDsgaSsrKSB7CisgICAgICAgICAgICAgICAgbmV3VG9kby52YWx1ZSA9
ICdTb21ldGhpbmcgdG8gZG8gJyArIGk7CisgICAgICAgICAgICAgICAgdHJpZ2dlckVudGVyKG5l
d1RvZG8sICdrZXlkb3duJyk7CiAgICAgICAgICAgICB9CisgICAgICAgIH0pLAorICAgICAgICBu
ZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0NvbXBsZXRpbmdBbGxJdGVtcycsIGZ1bmN0aW9uIChwYXJh
bXMsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgeworICAgICAgICAgICAgdmFyIGNo
ZWNrYm94ZXMgPSBjb250ZW50RG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRvZ2dsZScpOwor
ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGVja2JveGVzLmxlbmd0aDsgaSsrKQor
ICAgICAgICAgICAgICAgIGNoZWNrYm94ZXNbaV0uY2xpY2soKTsKKyAgICAgICAgfSksCisgICAg
ICAgIG5ldyBCZW5jaG1hcmtUZXN0U3RlcCgnRGVsZXRpbmdJdGVtcycsIGZ1bmN0aW9uIChwYXJh
bXMsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgeworICAgICAgICAgICAgdmFyIGRl
bGV0ZUJ1dHRvbnMgPSBjb250ZW50RG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmRlc3Ryb3kn
KTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGVsZXRlQnV0dG9ucy5sZW5ndGg7
IGkrKykKKyAgICAgICAgICAgICAgICBkZWxldGVCdXR0b25zW2ldLmNsaWNrKCk7CisgICAgICAg
IH0pLAorICAgIF0KK30pOwogCi0gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoZWNr
Ym94ZXMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgICAgICBhcHAuY3VycmVudEl0ZW1JbmRl
eCA9IGk7Ci0gICAgICAgICAgICAgICAgYXBwLnRvZ2dsZS5jYWxsKGNoZWNrYm94ZXNbaV0pOwor
U3VpdGVzLnB1c2goeworICAgIG5hbWU6ICdCYWNrYm9uZUpTLVRvZG9NVkMnLAorICAgIHVybDog
J3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2JhY2tib25lL2luZGV4Lmh0bWwnLAorICAg
IHByZXBhcmU6IGZ1bmN0aW9uIChydW5uZXIsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVu
dCkgeworICAgIGNvbnRlbnRXaW5kb3cuQmFja2JvbmUuc3luYyA9IGZ1bmN0aW9uICgpIHt9Cisg
ICAgICAgIHJldHVybiBydW5uZXIud2FpdEZvckVsZW1lbnQoJy5uZXctdG9kbycpLnRoZW4oZnVu
Y3Rpb24gKGVsZW1lbnQpIHsKKyAgICAgICAgICAgIGVsZW1lbnQuZm9jdXMoKTsKKyAgICAgICAg
ICAgIHJldHVybiBlbGVtZW50OworICAgICAgICB9KTsKKyAgICB9LAorICAgIHRlc3RzOiBbCisg
ICAgICAgIG5ldyBCZW5jaG1hcmtUZXN0U3RlcCgnQWRkaW5nJyArIG51bWJlck9mSXRlbXNUb0Fk
ZCArICdJdGVtcycsIGZ1bmN0aW9uIChuZXdUb2RvLCBjb250ZW50V2luZG93LCBjb250ZW50RG9j
dW1lbnQpIHsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtYmVyT2ZJdGVtc1Rv
QWRkOyBpKyspIHsKKyAgICAgICAgICAgICAgICBuZXdUb2RvLnZhbHVlID0gJ1NvbWV0aGluZyB0
byBkbyAnICsgaTsKKyAgICAgICAgICAgICAgICB0cmlnZ2VyRW50ZXIobmV3VG9kbywgJ2tleXBy
ZXNzJyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0pLAorICAgICAgICBuZXcgQmVuY2htYXJr
VGVzdFN0ZXAoJ0NvbXBsZXRpbmdBbGxJdGVtcycsIGZ1bmN0aW9uIChuZXdUb2RvLCBjb250ZW50
V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgICAgIHZhciBjaGVja2JveGVzID0g
Y29udGVudERvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy50b2dnbGUnKTsKKyAgICAgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgY2hlY2tib3hlcy5sZW5ndGg7IGkrKykKKyAgICAgICAgICAg
ICAgICBjaGVja2JveGVzW2ldLmNsaWNrKCk7CisgICAgICAgIH0pLAogICAgICAgICBuZXcgQmVu
Y2htYXJrVGVzdFN0ZXAoJ0RlbGV0aW5nQWxsSXRlbXMnLCBmdW5jdGlvbiAobmV3VG9kbywgY29u
dGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7Ci0gICAgICAgICAgICBjb250ZW50RG9jdW1l
bnQucXVlcnlTZWxlY3RvcignI2NsZWFyLWNvbXBsZXRlZCcpLmNsaWNrKCk7Ci0gICAgICAgICAg
ICB2YXIgYXBwID0gY29udGVudFdpbmRvdy5hcHA7CiAgICAgICAgICAgICB2YXIgZGVsZXRlQnV0
dG9ucyA9IGNvbnRlbnREb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZGVzdHJveScpOwotCi0g
ICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRlbGV0ZUJ1dHRvbnMubGVuZ3RoOyBpKysp
IHsKLSAgICAgICAgICAgICAgICBhcHAuY3VycmVudEl0ZW1JbmRleCA9IGk7Ci0gICAgICAgICAg
ICAgICAgYXBwLmRlc3Ryb3kuY2FsbChkZWxldGVCdXR0b25zW2ldKTsKLSAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGVsZXRlQnV0dG9ucy5sZW5ndGg7IGkr
KykKKyAgICAgICAgICAgICAgICBkZWxldGVCdXR0b25zW2ldLmNsaWNrKCk7CiAgICAgICAgIH0p
LAogICAgIF0KIH0pOwpAQCAtMTY0LDcgKzIzNCw2IEBAIFN1aXRlcy5wdXNoKHsKICAgICB9LAog
ICAgIHRlc3RzOiBbCiAgICAgICAgIG5ldyBCZW5jaG1hcmtUZXN0U3RlcCgnQWRkaW5nJyArIG51
bWJlck9mSXRlbXNUb0FkZCArICdJdGVtcycsIGZ1bmN0aW9uIChuZXdUb2RvLCBjb250ZW50V2lu
ZG93LCBjb250ZW50RG9jdW1lbnQpIHsKLSAgICAgICAgICAgIHZhciB0b2RvbXZjID0gY29udGVu
dFdpbmRvdy50b2RvbXZjOwogICAgICAgICAgICAgdmFyIHN1Ym1pdEV2ZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRXZlbnQoJ0V2ZW50Jyk7CiAgICAgICAgICAgICBzdWJtaXRFdmVudC5pbml0RXZlbnQo
J3N1Ym1pdCcsIHRydWUsIHRydWUpOwogICAgICAgICAgICAgdmFyIGlucHV0RXZlbnQgPSBkb2N1
bWVudC5jcmVhdGVFdmVudCgnRXZlbnQnKTsKQEAgLTE4OSwyNSArMjU4LDU2IEBAIFN1aXRlcy5w
dXNoKHsKIH0pOwogCiBTdWl0ZXMucHVzaCh7Ci0gICAgbmFtZTogJ1JlYWN0LVRvZG9NVkMnLAot
ICAgIHVybDogJ3RvZG9tdmMvbGFicy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QvaW5kZXgu
aHRtbCcsCisgICAgbmFtZTogJ0FuZ3VsYXIyLVR5cGVTY3JpcHQtVG9kb01WQycsCisgICAgdXJs
OiAndG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYW5ndWxhci9kaXN0L2luZGV4Lmh0bWwn
LAogICAgIHByZXBhcmU6IGZ1bmN0aW9uIChydW5uZXIsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnRE
b2N1bWVudCkgewotICAgICAgICBjb250ZW50V2luZG93LlV0aWxzLnN0b3JlID0gZnVuY3Rpb24g
KCkge30KLSAgICAgICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVudCgnI25ldy10b2RvJyku
dGhlbihmdW5jdGlvbiAoZWxlbWVudCkgeworICAgICAgICByZXR1cm4gcnVubmVyLndhaXRGb3JF
bGVtZW50KCcubmV3LXRvZG8nKS50aGVuKGZ1bmN0aW9uIChlbGVtZW50KSB7CiAgICAgICAgICAg
ICBlbGVtZW50LmZvY3VzKCk7CiAgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKICAgICAgICAg
fSk7CiAgICAgfSwKICAgICB0ZXN0czogWwogICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAo
J0FkZGluZycgKyBudW1iZXJPZkl0ZW1zVG9BZGQgKyAnSXRlbXMnLCBmdW5jdGlvbiAobmV3VG9k
bywgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7Ci0gICAgICAgICAgICB2YXIgdG9k
b212YyA9IGNvbnRlbnRXaW5kb3cudG9kb212YzsKICAgICAgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgbnVtYmVyT2ZJdGVtc1RvQWRkOyBpKyspIHsKICAgICAgICAgICAgICAgICBuZXdUb2Rv
LnZhbHVlID0gJ1NvbWV0aGluZyB0byBkbyAnICsgaTsKKyAgICAgICAgICAgICAgICBuZXdUb2Rv
LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdpbnB1dCcsIHsKKyAgICAgICAgICAgICAgICAgIGJ1
YmJsZXM6IHRydWUsCisgICAgICAgICAgICAgICAgICBjYW5jZWxhYmxlOiB0cnVlCisgICAgICAg
ICAgICAgICAgfSkpOworICAgICAgICAgICAgICAgIHRyaWdnZXJFbnRlcihuZXdUb2RvLCAna2V5
dXAnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSksCisgICAgICAgIG5ldyBCZW5jaG1hcmtU
ZXN0U3RlcCgnQ29tcGxldGluZ0FsbEl0ZW1zJywgZnVuY3Rpb24gKHBhcmFtcywgY29udGVudFdp
bmRvdywgY29udGVudERvY3VtZW50KSB7CisgICAgICAgICAgICB2YXIgY2hlY2tib3hlcyA9IGNv
bnRlbnREb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudG9nZ2xlJyk7CisgICAgICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGNoZWNrYm94ZXMubGVuZ3RoOyBpKyspCisgICAgICAgICAgICAg
ICAgY2hlY2tib3hlc1tpXS5jbGljaygpOworICAgICAgICB9KSwKKyAgICAgICAgbmV3IEJlbmNo
bWFya1Rlc3RTdGVwKCdEZWxldGluZ0l0ZW1zJywgZnVuY3Rpb24gKHBhcmFtcywgY29udGVudFdp
bmRvdywgY29udGVudERvY3VtZW50KSB7CisgICAgICAgICAgICB2YXIgZGVsZXRlQnV0dG9ucyA9
IGNvbnRlbnREb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZGVzdHJveScpOworICAgICAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkZWxldGVCdXR0b25zLmxlbmd0aDsgaSsrKQorICAgICAg
ICAgICAgICAgIGRlbGV0ZUJ1dHRvbnNbaV0uY2xpY2soKTsKKyAgICAgICAgfSksCisgICAgXQor
fSk7CiAKLSAgICAgICAgICAgICAgICB2YXIga2V5ZG93bkV2ZW50ID0gZG9jdW1lbnQuY3JlYXRl
RXZlbnQoJ0V2ZW50Jyk7Ci0gICAgICAgICAgICAgICAga2V5ZG93bkV2ZW50LmluaXRFdmVudCgn
a2V5ZG93bicsIHRydWUsIHRydWUpOwotICAgICAgICAgICAgICAgIGtleWRvd25FdmVudC53aGlj
aCA9IDEzOyAvLyBWS19FTlRFUgotICAgICAgICAgICAgICAgIG5ld1RvZG8uZGlzcGF0Y2hFdmVu
dChrZXlkb3duRXZlbnQpOworU3VpdGVzLnB1c2goeworICAgIG5hbWU6ICdWdWVKUy1Ub2RvTVZD
JywKKyAgICB1cmw6ICd0b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvZGlz
dC9pbmRleC5odG1sJywKKyAgICBwcmVwYXJlOiBmdW5jdGlvbiAocnVubmVyLCBjb250ZW50V2lu
ZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxl
bWVudCgnLm5ldy10b2RvJykudGhlbihmdW5jdGlvbiAoZWxlbWVudCkgeworICAgICAgICAgICAg
ZWxlbWVudC5mb2N1cygpOworICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgICAgIH0p
OworICAgIH0sCisgICAgdGVzdHM6IFsKKyAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdB
ZGRpbmcnICsgbnVtYmVyT2ZJdGVtc1RvQWRkICsgJ0l0ZW1zJywgZnVuY3Rpb24gKG5ld1RvZG8s
IGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgeworICAgICAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBudW1iZXJPZkl0ZW1zVG9BZGQ7IGkrKykgeworICAgICAgICAgICAgICAgIG5l
d1RvZG8udmFsdWUgPSAnU29tZXRoaW5nIHRvIGRvICcgKyBpOworICAgICAgICAgICAgICAgIG5l
d1RvZG8uZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2lucHV0JywgeworICAgICAgICAgICAgICAg
ICAgYnViYmxlczogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgIGNhbmNlbGFibGU6IHRydWUKKyAg
ICAgICAgICAgICAgICB9KSk7CisgICAgICAgICAgICAgICAgdHJpZ2dlckVudGVyKG5ld1RvZG8s
ICdrZXl1cCcpOwogICAgICAgICAgICAgfQogICAgICAgICB9KSwKICAgICAgICAgbmV3IEJlbmNo
bWFya1Rlc3RTdGVwKCdDb21wbGV0aW5nQWxsSXRlbXMnLCBmdW5jdGlvbiAobmV3VG9kbywgY29u
dGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CkBAIC0yMjQsMjUgKzMyNCwxOSBAQCBTdWl0
ZXMucHVzaCh7CiB9KTsKIAogU3VpdGVzLnB1c2goewotICAgIG5hbWU6ICdGbGlnaHRKUy1Ub2Rv
TVZDJywKLSAgICB1cmw6ICd0b2RvbXZjL2RlcGVuZGVuY3ktZXhhbXBsZXMvZmxpZ2h0L2luZGV4
Lmh0bWwnLAorICAgIG5hbWU6ICdqUXVlcnktVG9kb01WQycsCisgICAgdXJsOiAndG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L2luZGV4Lmh0bWwnLAogICAgIHByZXBhcmU6IGZ1
bmN0aW9uIChydW5uZXIsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgewotICAgICAg
ICByZXR1cm4gcnVubmVyLndhaXRGb3JFbGVtZW50KCcjYXBwSXNSZWFkeScpLnRoZW4oZnVuY3Rp
b24gKCkgewotICAgICAgICAgICAgdmFyIG5ld1RvZG8gPSBjb250ZW50RG9jdW1lbnQucXVlcnlT
ZWxlY3RvcignI25ldy10b2RvJyk7Ci0gICAgICAgICAgICBuZXdUb2RvLmZvY3VzKCk7Ci0gICAg
ICAgICAgICByZXR1cm4gbmV3VG9kbzsKLSAgICAgICAgfSk7OworICAgICAgICByZXR1cm4gcnVu
bmVyLndhaXRGb3JFbGVtZW50KCcjbmV3LXRvZG8nKS50aGVuKGZ1bmN0aW9uIChlbGVtZW50KSB7
CisgICAgICAgICAgICBlbGVtZW50LmZvY3VzKCk7CisgICAgICAgICAgICByZXR1cm4gZWxlbWVu
dDsKKyAgICAgICAgfSk7CiAgICAgfSwKICAgICB0ZXN0czogWwogICAgICAgICBuZXcgQmVuY2ht
YXJrVGVzdFN0ZXAoJ0FkZGluZycgKyBudW1iZXJPZkl0ZW1zVG9BZGQgKyAnSXRlbXMnLCBmdW5j
dGlvbiAobmV3VG9kbywgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7Ci0gICAgICAg
ICAgICB2YXIgdG9kb212YyA9IGNvbnRlbnRXaW5kb3cudG9kb212YzsKICAgICAgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgbnVtYmVyT2ZJdGVtc1RvQWRkOyBpKyspIHsKICAgICAgICAgICAg
ICAgICBuZXdUb2RvLnZhbHVlID0gJ1NvbWV0aGluZyB0byBkbyAnICsgaTsKLQotICAgICAgICAg
ICAgICAgIHZhciBrZXlkb3duRXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQnKTsK
LSAgICAgICAgICAgICAgICBrZXlkb3duRXZlbnQuaW5pdEV2ZW50KCdrZXlkb3duJywgdHJ1ZSwg
dHJ1ZSk7Ci0gICAgICAgICAgICAgICAga2V5ZG93bkV2ZW50LndoaWNoID0gMTM7IC8vIFZLX0VO
VEVSCi0gICAgICAgICAgICAgICAgbmV3VG9kby5kaXNwYXRjaEV2ZW50KGtleWRvd25FdmVudCk7
CisgICAgICAgICAgICAgICAgdHJpZ2dlckVudGVyKG5ld1RvZG8sICdrZXl1cCcpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9KSwKICAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdDb21w
bGV0aW5nQWxsSXRlbXMnLCBmdW5jdGlvbiAobmV3VG9kbywgY29udGVudFdpbmRvdywgY29udGVu
dERvY3VtZW50KSB7CkBAIC0yNTYsNiArMzUwLDEzMCBAQCBTdWl0ZXMucHVzaCh7CiAgICAgICAg
ICAgICAgICAgZGVsZXRlQnV0dG9uc1tpXS5jbGljaygpOwogICAgICAgICB9KSwKICAgICBdCit9
KQorCitTdWl0ZXMucHVzaCh7CisgICAgbmFtZTogJ1ByZWFjdC1Ub2RvTVZDJywKKyAgICB1cmw6
ICd0b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9wcmVhY3QvZGlzdC9pbmRleC5odG1sJywK
KyAgICBwcmVwYXJlOiBmdW5jdGlvbiAocnVubmVyLCBjb250ZW50V2luZG93LCBjb250ZW50RG9j
dW1lbnQpIHsKKyAgICAgICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVudCgnLm5ldy10b2Rv
JykudGhlbihmdW5jdGlvbiAoZWxlbWVudCkgeworICAgICAgICAgICAgZWxlbWVudC5mb2N1cygp
OworICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgICAgIH0pOworICAgIH0sCisgICAg
dGVzdHM6IFsKKyAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdBZGRpbmcnICsgbnVtYmVy
T2ZJdGVtc1RvQWRkICsgJ0l0ZW1zJywgZnVuY3Rpb24gKG5ld1RvZG8sIGNvbnRlbnRXaW5kb3cs
IGNvbnRlbnREb2N1bWVudCkgeworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1i
ZXJPZkl0ZW1zVG9BZGQ7IGkrKykgeworICAgICAgICAgICAgICAgIG5ld1RvZG8udmFsdWUgPSAn
U29tZXRoaW5nIHRvIGRvICcgKyBpOworICAgICAgICAgICAgICAgIHRyaWdnZXJFbnRlcihuZXdU
b2RvLCAna2V5ZG93bicpOworICAgICAgICAgICAgfQorICAgICAgICB9KSwKKyAgICAgICAgbmV3
IEJlbmNobWFya1Rlc3RTdGVwKCdDb21wbGV0aW5nQWxsSXRlbXMnLCBmdW5jdGlvbiAocGFyYW1z
LCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgICAgIHZhciBjaGVj
a2JveGVzID0gY29udGVudERvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy50b2dnbGUnKTsKKyAg
ICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hlY2tib3hlcy5sZW5ndGg7IGkrKykKKyAg
ICAgICAgICAgICAgICBjaGVja2JveGVzW2ldLmNsaWNrKCk7CisgICAgICAgIH0pLAorICAgICAg
ICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0RlbGV0aW5nSXRlbXMnLCBmdW5jdGlvbiAocGFyYW1z
LCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgICAgIHZhciBkZWxl
dGVCdXR0b25zID0gY29udGVudERvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5kZXN0cm95Jyk7
CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRlbGV0ZUJ1dHRvbnMubGVuZ3RoOyBp
KyspCisgICAgICAgICAgICAgICAgZGVsZXRlQnV0dG9uc1tpXS5jbGljaygpOworICAgICAgICB9
KSwKKyAgICBdCit9KTsKKworU3VpdGVzLnB1c2goeworICAgIG5hbWU6ICdJbmZlcm5vLVRvZG9N
VkMnLAorICAgIHVybDogJ3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2luZmVybm8vaW5k
ZXguaHRtbCcsCisgICAgcHJlcGFyZTogZnVuY3Rpb24gKHJ1bm5lciwgY29udGVudFdpbmRvdywg
Y29udGVudERvY3VtZW50KSB7CisgICAgICAgIHJldHVybiBydW5uZXIud2FpdEZvckVsZW1lbnQo
Jy5uZXctdG9kbycpLnRoZW4oZnVuY3Rpb24gKGVsZW1lbnQpIHsKKyAgICAgICAgICAgIGVsZW1l
bnQuZm9jdXMoKTsKKyAgICAgICAgICAgIHJldHVybiBlbGVtZW50OworICAgICAgICB9KTsKKyAg
ICB9LAorICAgIHRlc3RzOiBbCisgICAgICAgIG5ldyBCZW5jaG1hcmtUZXN0U3RlcCgnQWRkaW5n
JyArIG51bWJlck9mSXRlbXNUb0FkZCArICdJdGVtcycsIGZ1bmN0aW9uIChuZXdUb2RvLCBjb250
ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgbnVtYmVyT2ZJdGVtc1RvQWRkOyBpKyspIHsKKyAgICAgICAgICAgICAgICBuZXdUb2Rv
LnZhbHVlID0gJ1NvbWV0aGluZyB0byBkbyAnICsgaTsKKyAgICAgICAgICAgICAgICBuZXdUb2Rv
LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdjaGFuZ2UnLCB7CisgICAgICAgICAgICAgICAgICBi
dWJibGVzOiB0cnVlLAorICAgICAgICAgICAgICAgICAgY2FuY2VsYWJsZTogdHJ1ZQorICAgICAg
ICAgICAgICAgIH0pKTsKKyAgICAgICAgICAgICAgICB0cmlnZ2VyRW50ZXIobmV3VG9kbywgJ2tl
eWRvd24nKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSksCisgICAgICAgIG5ldyBCZW5jaG1h
cmtUZXN0U3RlcCgnQ29tcGxldGluZ0FsbEl0ZW1zJywgZnVuY3Rpb24gKHBhcmFtcywgY29udGVu
dFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CisgICAgICAgICAgICB2YXIgY2hlY2tib3hlcyA9
IGNvbnRlbnREb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudG9nZ2xlJyk7CisgICAgICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IGNoZWNrYm94ZXMubGVuZ3RoOyBpKyspCisgICAgICAgICAg
ICAgICAgY2hlY2tib3hlc1tpXS5jbGljaygpOworICAgICAgICB9KSwKKyAgICAgICAgbmV3IEJl
bmNobWFya1Rlc3RTdGVwKCdEZWxldGluZ0l0ZW1zJywgZnVuY3Rpb24gKHBhcmFtcywgY29udGVu
dFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CisgICAgICAgICAgICB2YXIgZGVsZXRlQnV0dG9u
cyA9IGNvbnRlbnREb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZGVzdHJveScpOworICAgICAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkZWxldGVCdXR0b25zLmxlbmd0aDsgaSsrKQorICAg
ICAgICAgICAgICAgIGRlbGV0ZUJ1dHRvbnNbaV0uY2xpY2soKTsKKyAgICAgICAgfSksCisgICAg
XQorfSk7CisKK1N1aXRlcy5wdXNoKHsKKyAgICBuYW1lOiAnRWxtLVRvZG9NVkMnLAorICAgIHVy
bDogJ3RvZG9tdmMvZnVuY3Rpb25hbC1wcm9nLWV4YW1wbGVzL2VsbS9pbmRleC5odG1sJywKKyAg
ICBwcmVwYXJlOiBmdW5jdGlvbiAocnVubmVyLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1l
bnQpIHsKKyAgICAgICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVudCgnLm5ldy10b2RvJyku
dGhlbihmdW5jdGlvbiAoZWxlbWVudCkgeworICAgICAgICAgICAgZWxlbWVudC5mb2N1cygpOwor
ICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgICAgIH0pOworICAgIH0sCisgICAgdGVz
dHM6IFsKKyAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdBZGRpbmcnICsgbnVtYmVyT2ZJ
dGVtc1RvQWRkICsgJ0l0ZW1zJywgZnVuY3Rpb24gKG5ld1RvZG8sIGNvbnRlbnRXaW5kb3csIGNv
bnRlbnREb2N1bWVudCkgeworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1iZXJP
Zkl0ZW1zVG9BZGQ7IGkrKykgeworICAgICAgICAgICAgICAgIG5ld1RvZG8udmFsdWUgPSAnU29t
ZXRoaW5nIHRvIGRvICcgKyBpOworICAgICAgICAgICAgICAgIG5ld1RvZG8uZGlzcGF0Y2hFdmVu
dChuZXcgRXZlbnQoJ2lucHV0JywgeworICAgICAgICAgICAgICAgICAgYnViYmxlczogdHJ1ZSwK
KyAgICAgICAgICAgICAgICAgIGNhbmNlbGFibGU6IHRydWUKKyAgICAgICAgICAgICAgICB9KSk7
CisgICAgICAgICAgICAgICAgdHJpZ2dlckVudGVyKG5ld1RvZG8sICdrZXlkb3duJyk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0pLAorICAgICAgICBuZXcgQmVuY2htYXJrVGVzdFN0ZXAoJ0Nv
bXBsZXRpbmdBbGxJdGVtcycsIGZ1bmN0aW9uIChwYXJhbXMsIGNvbnRlbnRXaW5kb3csIGNvbnRl
bnREb2N1bWVudCkgeworICAgICAgICAgICAgdmFyIGNoZWNrYm94ZXMgPSBjb250ZW50RG9jdW1l
bnQucXVlcnlTZWxlY3RvckFsbCgnLnRvZ2dsZScpOworICAgICAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBjaGVja2JveGVzLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgICAgIGNoZWNrYm94
ZXNbaV0uY2xpY2soKTsKKyAgICAgICAgfSksCisgICAgICAgIG5ldyBCZW5jaG1hcmtUZXN0U3Rl
cCgnRGVsZXRpbmdJdGVtcycsIGZ1bmN0aW9uIChwYXJhbXMsIGNvbnRlbnRXaW5kb3csIGNvbnRl
bnREb2N1bWVudCkgeworICAgICAgICAgICAgdmFyIGRlbGV0ZUJ1dHRvbnMgPSBjb250ZW50RG9j
dW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmRlc3Ryb3knKTsKKyAgICAgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgZGVsZXRlQnV0dG9ucy5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgICAgICBk
ZWxldGVCdXR0b25zW2ldLmNsaWNrKCk7CisgICAgICAgIH0pLAorICAgIF0KK30pOworCitTdWl0
ZXMucHVzaCh7CisgICAgbmFtZTogJ0ZsaWdodC1Ub2RvTVZDJywKKyAgICB1cmw6ICd0b2RvbXZj
L2RlcGVuZGVuY3ktZXhhbXBsZXMvZmxpZ2h0L2ZsaWdodC9pbmRleC5odG1sJywKKyAgICBwcmVw
YXJlOiBmdW5jdGlvbiAocnVubmVyLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsK
KyAgICAgICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVudCgnI25ldy10b2RvJykudGhlbihm
dW5jdGlvbiAoZWxlbWVudCkgeworICAgICAgICAgICAgZWxlbWVudC5mb2N1cygpOworICAgICAg
ICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgICAgIH0pOworICAgIH0sCisgICAgdGVzdHM6IFsK
KyAgICAgICAgbmV3IEJlbmNobWFya1Rlc3RTdGVwKCdBZGRpbmcnICsgbnVtYmVyT2ZJdGVtc1Rv
QWRkICsgJ0l0ZW1zJywgZnVuY3Rpb24gKG5ld1RvZG8sIGNvbnRlbnRXaW5kb3csIGNvbnRlbnRE
b2N1bWVudCkgeworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1iZXJPZkl0ZW1z
VG9BZGQ7IGkrKykgeworICAgICAgICAgICAgICAgIG5ld1RvZG8udmFsdWUgPSAnU29tZXRoaW5n
IHRvIGRvICcgKyBpOworICAgICAgICAgICAgICAgIHRyaWdnZXJFbnRlcihuZXdUb2RvLCAna2V5
ZG93bicpOworICAgICAgICAgICAgfQorICAgICAgICB9KSwKKyAgICAgICAgbmV3IEJlbmNobWFy
a1Rlc3RTdGVwKCdDb21wbGV0aW5nQWxsSXRlbXMnLCBmdW5jdGlvbiAocGFyYW1zLCBjb250ZW50
V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgICAgIHZhciBjaGVja2JveGVzID0g
Y29udGVudERvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy50b2dnbGUnKTsKKyAgICAgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgY2hlY2tib3hlcy5sZW5ndGg7IGkrKykKKyAgICAgICAgICAg
ICAgICBjaGVja2JveGVzW2ldLmNsaWNrKCk7CisgICAgICAgIH0pLAorICAgICAgICBuZXcgQmVu
Y2htYXJrVGVzdFN0ZXAoJ0RlbGV0aW5nSXRlbXMnLCBmdW5jdGlvbiAocGFyYW1zLCBjb250ZW50
V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgICAgIHZhciBkZWxldGVCdXR0b25z
ID0gY29udGVudERvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5kZXN0cm95Jyk7CisgICAgICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRlbGV0ZUJ1dHRvbnMubGVuZ3RoOyBpKyspCisgICAg
ICAgICAgICAgICAgZGVsZXRlQnV0dG9uc1tpXS5jbGljaygpOworICAgICAgICB9KSwKKyAgICBd
CiB9KTsKIAogdmFyIGFjdGlvbkNvdW50ID0gNTA7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9h
bmd1bGFyL2Rpc3QvaW5kZXguaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvZGlzdC9pbmRleC5o
dG1sCmluZGV4IDc2YmRjODZjZjhkZDRkNWVhMDQ4OTUxYzgyMWI0Y2ExZDZmZWRlN2QuLjNhMWE5
ZTI4N2Q2Y2EwY2Y2YzE4OWYyZmE5NzkyNTk4YTY4ZmQzMmUgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2FuZ3VsYXIvZGlzdC9pbmRleC5odG1sCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvZGlz
dC9pbmRleC5odG1sCkBAIC05LDcgKzksNyBAQAogICA8bGluayByZWw9Imljb24iIHR5cGU9Imlt
YWdlL3gtaWNvbiIgaHJlZj0iZmF2aWNvbi5pY28iPgogICA8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9ImFzc2V0cy9jc3MvdG9kb212Yy1jb21tb24uY3NzIj4KICAgPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSJhc3NldHMvY3NzL3RvZG9tdmMtYXBwLmNzcyI+Ci08bGluayBocmVmPSJz
dHlsZXMuZDQxZDhjZDk4ZjAwYjIwNGU5ODAuYnVuZGxlLmNzcyIgcmVsPSJzdHlsZXNoZWV0Ii8+
PC9oZWFkPgorPC9oZWFkPgogPGJvZHk+CiAgIDxhcHAtcm9vdD5Mb2FkaW5nLi4uPC9hcHAtcm9v
dD4KICAgPCEtLSBDcmVkaXRzOiBBZGR5IE9zbWFuaSAtLT4KZGlmZiAtLWdpdCBhL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2VtYmVyanMvYXNzZXRzL3RvZG9tdmMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL2Fzc2V0
cy90b2RvbXZjLmpzCmluZGV4IDYxOWEwMDRiMGZjZmRmODI3NTNkMjQ1MGI4YmZjMWJhYmE2NWVh
YTYuLjdkNGRmYjM2YzcxYWQ0NmUwZWQ0YjFkNGE1MmQ3ZmU3ZWI2MmUwMDQgMTAwNjQ0Ci0tLSBh
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2VtYmVyanMvYXNzZXRzL3RvZG9tdmMuanMKKysrIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
ZW1iZXJqcy9hc3NldHMvdG9kb212Yy5qcwpAQCAtMzYzLDE5ICszNjMsMTUgQEAgZGVmaW5lKCd0
b2RvbXZjL3NlcnZpY2VzL21lbW9yeScsIFsnZXhwb3J0cyddLCBmdW5jdGlvbiAoZXhwb3J0cykg
ewogICAgICAgbG9jYWxTdG9yYWdlTWVtb3J5Lmxlbmd0aCA9IDA7CiAgICAgfTsKIAotICAgIGlm
ICh0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpIHsKLSAgICAgIG1vZHVsZS5leHBvcnRzID0g
bG9jYWxTdG9yYWdlTWVtb3J5OwotICAgIH0gZWxzZSB7Ci0gICAgICByb290LmxvY2FsU3RvcmFn
ZU1lbW9yeSA9IGxvY2FsU3RvcmFnZU1lbW9yeTsKLSAgICB9Ci0gIH0pKHRoaXMpOworICAgIHJv
b3QubG9jYWxTdG9yYWdlTWVtb3J5ID0gbG9jYWxTdG9yYWdlTWVtb3J5OworICB9KSh3aW5kb3cp
OwogfSk7CiBkZWZpbmUoJ3RvZG9tdmMvc2VydmljZXMvcmVwbycsIFsnZXhwb3J0cycsICdlbWJl
cicsICd0b2RvbXZjL3NlcnZpY2VzL21lbW9yeSddLCBmdW5jdGlvbiAoZXhwb3J0cywgX2VtYmVy
LCBfdG9kb212Y1NlcnZpY2VzTWVtb3J5KSB7CiAgICAgZXhwb3J0c1snZGVmYXVsdCddID0gX2Vt
YmVyWydkZWZhdWx0J10uU2VydmljZS5leHRlbmQoewogICAgICAgICBsYXN0SWQ6IDAsCiAgICAg
ICAgIGRhdGE6IG51bGwsCiAgICAgICAgIGZpbmRBbGw6IGZ1bmN0aW9uIGZpbmRBbGwoKSB7Ci0g
ICAgICAgICAgICByZXR1cm4gdGhpcy5nZXQoJ2RhdGEnKSB8fCB0aGlzLnNldCgnZGF0YScsIEpT
T04ucGFyc2UoX3RvZG9tdmNTZXJ2aWNlc01lbW9yeS5nZXRJdGVtKCd0b2RvcycpIHx8ICdbXScp
KTsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLmdldCgnZGF0YScpIHx8IHRoaXMuc2V0KCdkYXRh
JywgSlNPTi5wYXJzZSh3aW5kb3cubG9jYWxTdG9yYWdlTWVtb3J5LmdldEl0ZW0oJ3RvZG9zJykg
fHwgJ1tdJykpOwogICAgICAgICB9LAogCiAgICAgICAgIGFkZDogZnVuY3Rpb24gYWRkKGF0dHJz
KSB7CkBAIC0zOTEsNyArMzg3LDcgQEAgZGVmaW5lKCd0b2RvbXZjL3NlcnZpY2VzL3JlcG8nLCBb
J2V4cG9ydHMnLCAnZW1iZXInLCAndG9kb212Yy9zZXJ2aWNlcy9tZW1vcnknXSwKICAgICAgICAg
fSwKIAogICAgICAgICBwZXJzaXN0OiBmdW5jdGlvbiBwZXJzaXN0KCkgewotICAgICAgICAgICAg
X3RvZG9tdmNTZXJ2aWNlc01lbW9yeS5zZXRJdGVtKCd0b2RvcycsIEpTT04uc3RyaW5naWZ5KHRo
aXMuZ2V0KCdkYXRhJykpKTsKKyAgICAgICAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2VNZW1vcnku
c2V0SXRlbSgndG9kb3MnLCBKU09OLnN0cmluZ2lmeSh0aGlzLmdldCgnZGF0YScpKSk7CiAgICAg
ICAgIH0KICAgICB9KTsKIH0pOwpAQCAtMTI1Nyw3ICsxMjUzLDcgQEAgY2F0Y2goZXJyKSB7CiAv
KiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovCiAKIGlmICghcnVubmluZ1Rlc3RzKSB7Ci0gIHJlcXVp
cmUoInRvZG9tdmMvYXBwIilbImRlZmF1bHQiXS5jcmVhdGUoeyJuYW1lIjoidG9kb212YyIsInZl
cnNpb24iOiIwLjAuMCs1ZGJjNWZiOSJ9KTsKKyAgcmVxdWlyZSgidG9kb212Yy9hcHAiKVsiZGVm
YXVsdCJdLmNyZWF0ZSh7Im5hbWUiOiJ0b2RvbXZjIiwidmVyc2lvbiI6IjAuMC4wKyJ9KTsKIH0K
IAogLyoganNoaW50IGlnbm9yZTplbmQgKi8KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVy
anMvaW5kZXguaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvaW5kZXguaHRtbAppbmRleCA3ZTQ4
YzE5OTI3ZDUxY2U0OGU4MzFhN2VlNWYwMTQzZjY2NjUwNjRhLi5lZDJhMWNmMjM1Y2MzMmY4MTU4
Njk1NWU4Njg0Y2Y4MTZjZjI2NGRhIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL2lu
ZGV4Lmh0bWwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9pbmRleC5odG1sCkBAIC02LDIxICs2
LDE5IEBACiAgICAgPHRpdGxlPlRvZG9tdmM8L3RpdGxlPgogICAgIDxtZXRhIG5hbWU9ImRlc2Ny
aXB0aW9uIiBjb250ZW50PSIiPgogICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3
aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSI+Ci0gICAgPGJhc2UgaHJlZj0iL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL2VtYmVyanMiIC8+Ci0gICAgCi08bWV0YSBuYW1lPSJ0b2RvbXZjL2NvbmZpZy9l
bnZpcm9ubWVudCIgY29udGVudD0iJTdCJTIybW9kdWxlUHJlZml4JTIyJTNBJTIydG9kb212YyUy
MiUyQyUyMmVudmlyb25tZW50JTIyJTNBJTIyZGV2ZWxvcG1lbnQlMjIlMkMlMjJiYXNlVVJMJTIy
JTNBbnVsbCUyQyUyMmxvY2F0aW9uVHlwZSUyMiUzQSUyMmF1dG8lMjIlMkMlMjJFbWJlckVOViUy
MiUzQSU3QiUyMkZFQVRVUkVTJTIyJTNBJTdCJTdEJTdEJTJDJTIyQVBQJTIyJTNBJTdCJTIybmFt
ZSUyMiUzQSUyMnRvZG9tdmMlMjIlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyMC4wLjArNWRiYzVmYjkl
MjIlN0QlMkMlMjJleHBvcnRBcHBsaWNhdGlvbkdsb2JhbCUyMiUzQXRydWUlN0QiIC8+CisgICAK
KzxtZXRhIG5hbWU9InRvZG9tdmMvY29uZmlnL2Vudmlyb25tZW50IiBjb250ZW50PSIlN0IlMjJt
b2R1bGVQcmVmaXglMjIlM0ElMjJ0b2RvbXZjJTIyJTJDJTIyZW52aXJvbm1lbnQlMjIlM0ElMjJk
ZXZlbG9wbWVudCUyMiUyQyUyMmxvY2F0aW9uVHlwZSUyMiUzQSUyMm5vbmUlMjIlMkMlMjJFbWJl
ckVOViUyMiUzQSU3QiUyMkZFQVRVUkVTJTIyJTNBJTdCJTdEJTdEJTJDJTIyQVBQJTIyJTNBJTdC
JTIybmFtZSUyMiUzQSUyMnRvZG9tdmMlMjIlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyMC4wLjAlMjAy
YzNmODE1OCUyMiU3RCUyQyUyMmV4cG9ydEFwcGxpY2F0aW9uR2xvYmFsJTIyJTNBdHJ1ZSU3RCIg
Lz4KIAotICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVy
anMvYXNzZXRzL3ZlbmRvci5jc3MiPgotICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2VtYmVyanMvYXNzZXRzL3RvZG9tdmMuY3NzIj4KKyAgICA8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9ImFzc2V0cy92ZW5kb3IuY3NzIj4KIAogICAgIAogICA8L2hlYWQ+
CiAgIDxib2R5PgogICAgIAogCi0gICAgPHNjcmlwdCBzcmM9Ii9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpz
L2Fzc2V0cy92ZW5kb3IuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvZW1iZXJqcy9hc3NldHMvdG9kb212Yy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9
ImFzc2V0cy92ZW5kb3IuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJhc3NldHMvdG9k
b212Yy5qcyI+PC9zY3JpcHQ+CiAKICAgICAKICAgPC9ib2R5PgotPC9odG1sPgorPC9odG1sPgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVy
anMvc291cmNlL2FwcC9pbmRleC5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvYXBw
L2luZGV4Lmh0bWwKaW5kZXggYmE2ZjY0NjNlMDQ2ZGQzN2UwOWRjNzc0ZDU5NzA2NjdhMzAxMTE1
OS4uYjE3MzBmYmI2N2Y4OWRhMmE1NzhjNGYxZjE1OGZkNDFkNGZhYjNjNSAxMDA2NDQKLS0tIGEv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvYXBwL2luZGV4Lmh0bWwKKysrIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvZW1iZXJqcy9zb3VyY2UvYXBwL2luZGV4Lmh0bWwKQEAgLTYsMTkgKzYsMTggQEAKICAgICA8
dGl0bGU+VG9kb212YzwvdGl0bGU+CiAgICAgPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRl
bnQ9IiI+CiAgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13
aWR0aCwgaW5pdGlhbC1zY2FsZT0xIj4KLSAgICA8YmFzZSBocmVmPSIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1i
ZXJqcyIgLz4KICAgICB7e2NvbnRlbnQtZm9yICJoZWFkIn19CiAKLSAgICA8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL2Fzc2V0cy92ZW5kb3IuY3NzIj4K
LSAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL2Fz
c2V0cy90b2RvbXZjLmNzcyI+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJhc3Nl
dHMvdmVuZG9yLmNzcyI+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJhc3NldHMv
dG9kb212Yy5jc3MiPgogCiAgICAge3tjb250ZW50LWZvciAiaGVhZC1mb290ZXIifX0KICAgPC9o
ZWFkPgogICA8Ym9keT4KICAgICB7e2NvbnRlbnQtZm9yICJib2R5In19CiAKLSAgICA8c2NyaXB0
IHNyYz0iL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvYXNzZXRzL3ZlbmRvci5qcyI+PC9zY3JpcHQ+Ci0g
ICAgPHNjcmlwdCBzcmM9Ii9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL2Fzc2V0cy90b2RvbXZjLmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iYXNzZXRzL3ZlbmRvci5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdCBzcmM9ImFzc2V0cy90b2RvbXZjLmpzIj48L3NjcmlwdD4KIAogICAgIHt7Y29u
dGVudC1mb3IgImJvZHktZm9vdGVyIn19CiAgIDwvYm9keT4KZGlmZiAtLWdpdCBhL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL2VtYmVyanMvc291cmNlL2FwcC9zZXJ2aWNlcy9tZW1vcnkuanMgYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9l
bWJlcmpzL3NvdXJjZS9hcHAvc2VydmljZXMvbWVtb3J5LmpzCmluZGV4IDRiOWQ1YWY5ZDZkMWQ4
ZDU5YzBjZGIyNjg4YmZlYzJhZGE4MmYzYzIuLjc0YzVjZGYxOWZkOWZkYjI2YTkwZjA5YTMwMWQ0
M2RiZDM1MjdkNjEgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvc291cmNlL2FwcC9z
ZXJ2aWNlcy9tZW1vcnkuanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9zb3VyY2UvYXBwL3Nl
cnZpY2VzL21lbW9yeS5qcwpAQCAtNzQsOSArNzQsNSBAQAogICAgIGxvY2FsU3RvcmFnZU1lbW9y
eS5sZW5ndGggPSAwOwogICB9OwogCi0gIGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcp
IHsKLSAgICBtb2R1bGUuZXhwb3J0cyA9IGxvY2FsU3RvcmFnZU1lbW9yeTsKLSAgfSBlbHNlIHsK
ICAgICByb290LmxvY2FsU3RvcmFnZU1lbW9yeSA9IGxvY2FsU3RvcmFnZU1lbW9yeTsKLSAgfQot
fSkodGhpcyk7Cit9KSh3aW5kb3cpOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvZW1iZXJqcy9z
b3VyY2UvYXBwL3NlcnZpY2VzL3JlcG8uanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS9h
cHAvc2VydmljZXMvcmVwby5qcwppbmRleCAwMTQ3ZmYzZWZjN2U4YWFlZjI3YjcxMDA1MDVjMDFh
ZDExZjlhY2QxLi5jZmZhMzg1OGZkNzdiYmJhNWM0MzVlYTVjOWM4ODk4YWQxNzczYjhhIDEwMDY0
NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS9hcHAvc2VydmljZXMvcmVwby5qcwor
KysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3NvdXJjZS9hcHAvc2VydmljZXMvcmVwby5qcwpAQCAt
MSwxMiArMSwxMiBAQAogaW1wb3J0IEVtYmVyIGZyb20gJ2VtYmVyJzsKLWltcG9ydCAqIGFzIGxv
Y2FsU3RvcmFnZU1lbW9yeSBmcm9tICcuL21lbW9yeSc7CitpbXBvcnQgbG9jYWxTdG9yYWdlTWVt
b3J5IGZyb20gJy4vbWVtb3J5JzsKIAogZXhwb3J0IGRlZmF1bHQgRW1iZXIuU2VydmljZS5leHRl
bmQoewogICAgIGxhc3RJZDogMCwKICAgICBkYXRhOiBudWxsLAogICAgIGZpbmRBbGwoKSB7CiAg
ICAgICAgIHJldHVybiB0aGlzLmdldCgnZGF0YScpIHx8Ci0gICAgICAgICAgICB0aGlzLnNldCgn
ZGF0YScsIEpTT04ucGFyc2UobG9jYWxTdG9yYWdlTWVtb3J5LmdldEl0ZW0oJ3RvZG9zJykgfHwg
J1tdJykpOworICAgICAgICAgICAgdGhpcy5zZXQoJ2RhdGEnLCBKU09OLnBhcnNlKHdpbmRvdy5s
b2NhbFN0b3JhZ2VNZW1vcnkuZ2V0SXRlbSgndG9kb3MnKSB8fCAnW10nKSk7CiAgICAgfSwKIAog
ICAgIGFkZChhdHRycykgewpAQCAtMjIsNiArMjIsNiBAQCBleHBvcnQgZGVmYXVsdCBFbWJlci5T
ZXJ2aWNlLmV4dGVuZCh7CiAgICAgfSwKIAogICAgIHBlcnNpc3QoKSB7Ci0gICAgICAgIGxvY2Fs
U3RvcmFnZU1lbW9yeS5zZXRJdGVtKCd0b2RvcycsIEpTT04uc3RyaW5naWZ5KHRoaXMuZ2V0KCdk
YXRhJykpKTsKKyAgICAgICAgd2luZG93LmxvY2FsU3RvcmFnZU1lbW9yeS5zZXRJdGVtKCd0b2Rv
cycsIEpTT04uc3RyaW5naWZ5KHRoaXMuZ2V0KCdkYXRhJykpKTsKICAgICB9CiB9KTsKZGlmZiAt
LWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvdGVzdHMvaW5kZXguaHRtbCBiL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2VtYmVyanMvdGVzdHMvaW5kZXguaHRtbAppbmRleCBlMmEyN2MxNDliNmRlMDdjNjkzMzEwOTg0
MjVmZGQ4ZDVkN2EyYTBlLi4yYWIyMThlN2E5NTQzZWYyMGFjZDRhM2U3NmVlNWE1NzA2MzYzNTEz
IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9lbWJlcmpzL3Rlc3RzL2luZGV4Lmh0bWwKKysrIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvZW1iZXJqcy90ZXN0cy9pbmRleC5odG1sCkBAIC04LDcgKzgsNyBAQAogICAg
IDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRp
YWwtc2NhbGU9MSI+CiAKICAgICA8YmFzZSBocmVmPSIvIiAvPgotPG1ldGEgbmFtZT0idG9kb212
Yy9jb25maWcvZW52aXJvbm1lbnQiIGNvbnRlbnQ9IiU3QiUyMm1vZHVsZVByZWZpeCUyMiUzQSUy
MnRvZG9tdmMlMjIlMkMlMjJlbnZpcm9ubWVudCUyMiUzQSUyMnRlc3QlMjIlMkMlMjJiYXNlVVJM
JTIyJTNBJTIyLyUyMiUyQyUyMmxvY2F0aW9uVHlwZSUyMiUzQSUyMm5vbmUlMjIlMkMlMjJFbWJl
ckVOViUyMiUzQSU3QiUyMkZFQVRVUkVTJTIyJTNBJTdCJTdEJTdEJTJDJTIyQVBQJTIyJTNBJTdC
JTIyTE9HX0FDVElWRV9HRU5FUkFUSU9OJTIyJTNBZmFsc2UlMkMlMjJMT0dfVklFV19MT09LVVBT
JTIyJTNBZmFsc2UlMkMlMjJyb290RWxlbWVudCUyMiUzQSUyMiUyM2VtYmVyLXRlc3RpbmclMjIl
MkMlMjJuYW1lJTIyJTNBJTIydG9kb212YyUyMiUyQyUyMnZlcnNpb24lMjIlM0ElMjIwLjAuMCs1
ZGJjNWZiOSUyMiU3RCUyQyUyMmV4cG9ydEFwcGxpY2F0aW9uR2xvYmFsJTIyJTNBdHJ1ZSU3RCIg
Lz4KKzxtZXRhIG5hbWU9InRvZG9tdmMvY29uZmlnL2Vudmlyb25tZW50IiBjb250ZW50PSIlN0Il
MjJtb2R1bGVQcmVmaXglMjIlM0ElMjJ0b2RvbXZjJTIyJTJDJTIyZW52aXJvbm1lbnQlMjIlM0El
MjJ0ZXN0JTIyJTJDJTIyYmFzZVVSTCUyMiUzQSUyMi8lMjIlMkMlMjJsb2NhdGlvblR5cGUlMjIl
M0ElMjJub25lJTIyJTJDJTIyRW1iZXJFTlYlMjIlM0ElN0IlMjJGRUFUVVJFUyUyMiUzQSU3QiU3
RCU3RCUyQyUyMkFQUCUyMiUzQSU3QiUyMkxPR19BQ1RJVkVfR0VORVJBVElPTiUyMiUzQWZhbHNl
JTJDJTIyTE9HX1ZJRVdfTE9PS1VQUyUyMiUzQWZhbHNlJTJDJTIycm9vdEVsZW1lbnQlMjIlM0El
MjIlMjNlbWJlci10ZXN0aW5nJTIyJTJDJTIybmFtZSUyMiUzQSUyMnRvZG9tdmMlMjIlMkMlMjJ2
ZXJzaW9uJTIyJTNBJTIyMC4wLjArJTIyJTdEJTJDJTIyZXhwb3J0QXBwbGljYXRpb25HbG9iYWwl
MjIlM0F0cnVlJTdEIiAvPgogICAgIAogCiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSJhc3NldHMvdmVuZG9yLmNzcyI+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvaW5k
ZXguaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9pbmRleC5odG1sCmluZGV4IDQxNGFjNThmNjFh
YmMyYjcyMmRiNTNmZWVjZTdlMDNlNTJmZDMzNDQuLjFjZjgwM2UxNDJhMTMwZTRjY2ZmMWNhYmI4
MTI3YzQ3YzcwNmQwZWMgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9pbmRleC5odG1s
CisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9pbmRleC5odG1sCkBAIC01NSw3ICs1NSw3IEBACiAg
ICAgICAgIDwhLS0gPHNjcmlwdCBzcmM9Im5vZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1vbi9iYXNl
LmpzIj48L3NjcmlwdD4gLS0+CiAgICAgICAgIDxzY3JpcHQgc3JjPSJub2RlX21vZHVsZXMvanF1
ZXJ5L2Rpc3QvanF1ZXJ5LmpzIj48L3NjcmlwdD4KICAgICAgICAgPHNjcmlwdCBzcmM9Im5vZGVf
bW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvaGFuZGxlYmFycy5qcyI+PC9zY3JpcHQ+Ci0gICAgICAg
IDxzY3JpcHQgc3JjPSJub2RlX21vZHVsZXMvZGlyZWN0b3IvYnVpbGQvZGlyZWN0b3IuanMiPjwv
c2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0ibm9kZV9tb2R1bGVzL2RpcmVjdG9yL2Rpc3Qv
ZGlyZWN0b3IuanMiPjwvc2NyaXB0PgogICAgICAgICA8c2NyaXB0IHNyYz0ianMvYXBwLmpzIj48
L3NjcmlwdD4KICAgICA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9q
cXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL0xJQ0VOU0UgYi9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkv
bm9kZV9tb2R1bGVzL2RpcmVjdG9yL0xJQ0VOU0UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGE0OTgxMDg1MDE5Zjkx
N2MxMjM3NjlhMGMyN2NkODcwZTM1YTc4NAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvTElDRU5TRQpAQCAtMCwwICsxLDE5IEBACitD
b3B5cmlnaHQgKGMpIDIwMTEgQ2hhcmxpZSBSb2JiaW5zLCBQYW9sbyBGcmFnb21lbmksICYgdGhl
IENvbnRyaWJ1dG9ycy4KKworUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBj
aGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQorb2YgdGhpcyBzb2Z0d2FyZSBh
bmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRl
YWwKK2luIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91
dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKK3RvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVi
bGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKK2NvcGllcyBvZiB0aGUg
U29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwor
ZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoK
KworVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ug
c2hhbGwgYmUgaW5jbHVkZWQgaW4KK2FsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMg
b2YgdGhlIFNvZnR3YXJlLgorCitUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lU
SE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorSU1QTElFRCwgSU5DTFVESU5H
IEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCitG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUKK0FVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxF
IEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKK0xJQUJJTElUWSwgV0hFVEhFUiBJTiBB
TiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCitP
VVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9U
SEVSIERFQUxJTkdTIElOCitUSEUgU09GVFdBUkUuCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9q
cXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL2Jvd2VyLmpzb24gYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVl
cnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL2Jvd2VyLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjkzOWJiNDcw
ZWQ2NGRiMTExYWFhOGM2MzNkMjMyZmE5ZWJmY2YwNAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvYm93ZXIuanNvbgpAQCAtMCwwICsx
LDkgQEAKK3sKKyAgIm5hbWUiOiAiZGlyZWN0b3IiLAorICAidmVyc2lvbiI6ICIxLjIuNyIsCisg
ICJkZXBlbmRlbmNpZXMiOiB7fSwKKyAgIm1haW4iOiAiYnVpbGQvZGlyZWN0b3IuanMiLAorICAi
c2NyaXB0cyI6IFsKKyAgICAiYnVpbGQvZGlyZWN0b3IuanMiCisgIF0KK30KZGlmZiAtLWdpdCBh
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvZGlzdC9kaXJlY3Rvci5q
cyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL2pxdWVyeS9ub2RlX21vZHVsZXMvZGlyZWN0b3IvZGlzdC9kaXJlY3Rv
ci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xMDM4ODc4NzIzNWI3MWMwZjVjYjk2N2U3OTVjMmM2NjlhNTZmMzY5
Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJl
Y3Rvci9kaXN0L2RpcmVjdG9yLmpzCkBAIC0wLDAgKzEsNzI1IEBACisKKworLy8KKy8vIEdlbmVy
YXRlZCBvbiBUdWUgRGVjIDE2IDIwMTQgMTI6MTM6NDcgR01UKzAxMDAgKENFVCkgYnkgQ2hhcmxp
ZSBSb2JiaW5zLCBQYW9sbyBGcmFnb21lbmkgJiB0aGUgQ29udHJpYnV0b3JzIChVc2luZyBDb2Rl
c3VyZ2VvbikuCisvLyBWZXJzaW9uIDEuMi42CisvLworCisoZnVuY3Rpb24gKGV4cG9ydHMpIHsK
KworLyoKKyAqIGJyb3dzZXIuanM6IEJyb3dzZXIgc3BlY2lmaWMgZnVuY3Rpb25hbGl0eSBmb3Ig
ZGlyZWN0b3IuCisgKgorICogKEMpIDIwMTEsIENoYXJsaWUgUm9iYmlucywgUGFvbG8gRnJhZ29t
ZW5pLCAmIHRoZSBDb250cmlidXRvcnMuCisgKiBNSVQgTElDRU5TRQorICoKKyAqLworCit2YXIg
ZGxvYyA9IGRvY3VtZW50LmxvY2F0aW9uOworCitmdW5jdGlvbiBkbG9jSGFzaEVtcHR5KCkgewor
ICAvLyBOb24tSUUgYnJvd3NlcnMgcmV0dXJuICcnIHdoZW4gdGhlIGFkZHJlc3MgYmFyIHNob3dz
ICcjJzsgRGlyZWN0b3IncyBsb2dpYworICAvLyBhc3N1bWVzIGJvdGggbWVhbiBlbXB0eS4KKyAg
cmV0dXJuIGRsb2MuaGFzaCA9PT0gJycgfHwgZGxvYy5oYXNoID09PSAnIyc7Cit9CisKK3ZhciBs
aXN0ZW5lciA9IHsKKyAgbW9kZTogJ21vZGVybicsCisgIGhhc2g6IGRsb2MuaGFzaCwKKyAgaGlz
dG9yeTogZmFsc2UsCisKKyAgY2hlY2s6IGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgaCA9IGRsb2Mu
aGFzaDsKKyAgICBpZiAoaCAhPSB0aGlzLmhhc2gpIHsKKyAgICAgIHRoaXMuaGFzaCA9IGg7Cisg
ICAgICB0aGlzLm9uSGFzaENoYW5nZWQoKTsKKyAgICB9CisgIH0sCisKKyAgZmlyZTogZnVuY3Rp
b24gKCkgeworICAgIGlmICh0aGlzLm1vZGUgPT09ICdtb2Rlcm4nKSB7CisgICAgICB0aGlzLmhp
c3RvcnkgPT09IHRydWUgPyB3aW5kb3cub25wb3BzdGF0ZSgpIDogd2luZG93Lm9uaGFzaGNoYW5n
ZSgpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHRoaXMub25IYXNoQ2hhbmdlZCgpOworICAg
IH0KKyAgfSwKKworICBpbml0OiBmdW5jdGlvbiAoZm4sIGhpc3RvcnkpIHsKKyAgICB2YXIgc2Vs
ZiA9IHRoaXM7CisgICAgdGhpcy5oaXN0b3J5ID0gaGlzdG9yeTsKKworICAgIGlmICghUm91dGVy
Lmxpc3RlbmVycykgeworICAgICAgUm91dGVyLmxpc3RlbmVycyA9IFtdOworICAgIH0KKworICAg
IGZ1bmN0aW9uIG9uY2hhbmdlKG9uQ2hhbmdlRXZlbnQpIHsKKyAgICAgIGZvciAodmFyIGkgPSAw
LCBsID0gUm91dGVyLmxpc3RlbmVycy5sZW5ndGg7IGkgPCBsOyBpKyspIHsKKyAgICAgICAgUm91
dGVyLmxpc3RlbmVyc1tpXShvbkNoYW5nZUV2ZW50KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICAv
L25vdGUgSUU4IGlzIGJlaW5nIGNvdW50ZWQgYXMgJ21vZGVybicgYmVjYXVzZSBpdCBoYXMgdGhl
IGhhc2hjaGFuZ2UgZXZlbnQKKyAgICBpZiAoJ29uaGFzaGNoYW5nZScgaW4gd2luZG93ICYmIChk
b2N1bWVudC5kb2N1bWVudE1vZGUgPT09IHVuZGVmaW5lZAorICAgICAgfHwgZG9jdW1lbnQuZG9j
dW1lbnRNb2RlID4gNykpIHsKKyAgICAgIC8vIEF0IGxlYXN0IGZvciBub3cgSFRNTDUgaGlzdG9y
eSBpcyBhdmFpbGFibGUgZm9yICdtb2Rlcm4nIGJyb3dzZXJzIG9ubHkKKyAgICAgIGlmICh0aGlz
Lmhpc3RvcnkgPT09IHRydWUpIHsKKyAgICAgICAgLy8gVGhlcmUgaXMgYW4gb2xkIGJ1ZyBpbiBD
aHJvbWUgdGhhdCBjYXVzZXMgb25wb3BzdGF0ZSB0byBmaXJlIGV2ZW4KKyAgICAgICAgLy8gdXBv
biBpbml0aWFsIHBhZ2UgbG9hZC4gU2luY2UgdGhlIGhhbmRsZXIgaXMgcnVuIG1hbnVhbGx5IGlu
IGluaXQoKSwKKyAgICAgICAgLy8gdGhpcyB3b3VsZCBjYXVzZSBDaHJvbWUgdG8gcnVuIGl0IHR3
aXNlLiBDdXJyZW50bHkgdGhlIG9ubHkKKyAgICAgICAgLy8gd29ya2Fyb3VuZCBzZWVtcyB0byBi
ZSB0byBzZXQgdGhlIGhhbmRsZXIgYWZ0ZXIgdGhlIGluaXRpYWwgcGFnZSBsb2FkCisgICAgICAg
IC8vIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTYz
MDQwCisgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgd2luZG93Lm9u
cG9wc3RhdGUgPSBvbmNoYW5nZTsKKyAgICAgICAgfSwgNTAwKTsKKyAgICAgIH0KKyAgICAgIGVs
c2UgeworICAgICAgICB3aW5kb3cub25oYXNoY2hhbmdlID0gb25jaGFuZ2U7CisgICAgICB9Cisg
ICAgICB0aGlzLm1vZGUgPSAnbW9kZXJuJzsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAvLwor
ICAgICAgLy8gSUUgc3VwcG9ydCwgYmFzZWQgb24gYSBjb25jZXB0IGJ5IEVyaWsgQXJ2aWRzb24g
Li4uCisgICAgICAvLworICAgICAgdmFyIGZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
aWZyYW1lJyk7CisgICAgICBmcmFtZS5pZCA9ICdzdGF0ZS1mcmFtZSc7CisgICAgICBmcmFtZS5z
dHlsZS5kaXNwbGF5ID0gJ25vbmUnOworICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChm
cmFtZSk7CisgICAgICB0aGlzLndyaXRlRnJhbWUoJycpOworCisgICAgICBpZiAoJ29ucHJvcGVy
dHljaGFuZ2UnIGluIGRvY3VtZW50ICYmICdhdHRhY2hFdmVudCcgaW4gZG9jdW1lbnQpIHsKKyAg
ICAgICAgZG9jdW1lbnQuYXR0YWNoRXZlbnQoJ29ucHJvcGVydHljaGFuZ2UnLCBmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgaWYgKGV2ZW50LnByb3BlcnR5TmFtZSA9PT0gJ2xvY2F0aW9uJykgewor
ICAgICAgICAgICAgc2VsZi5jaGVjaygpOworICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAg
ICB9CisKKyAgICAgIHdpbmRvdy5zZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7IHNlbGYuY2hlY2so
KTsgfSwgNTApOworCisgICAgICB0aGlzLm9uSGFzaENoYW5nZWQgPSBvbmNoYW5nZTsKKyAgICAg
IHRoaXMubW9kZSA9ICdsZWdhY3knOworICAgIH0KKworICAgIFJvdXRlci5saXN0ZW5lcnMucHVz
aChmbik7CisKKyAgICByZXR1cm4gdGhpcy5tb2RlOworICB9LAorCisgIGRlc3Ryb3k6IGZ1bmN0
aW9uIChmbikgeworICAgIGlmICghUm91dGVyIHx8ICFSb3V0ZXIubGlzdGVuZXJzKSB7CisgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgdmFyIGxpc3RlbmVycyA9IFJvdXRlci5saXN0ZW5lcnM7
CisKKyAgICBmb3IgKHZhciBpID0gbGlzdGVuZXJzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7
CisgICAgICBpZiAobGlzdGVuZXJzW2ldID09PSBmbikgeworICAgICAgICBsaXN0ZW5lcnMuc3Bs
aWNlKGksIDEpOworICAgICAgfQorICAgIH0KKyAgfSwKKworICBzZXRIYXNoOiBmdW5jdGlvbiAo
cykgeworICAgIC8vIE1vemlsbGEgYWx3YXlzIGFkZHMgYW4gZW50cnkgdG8gdGhlIGhpc3RvcnkK
KyAgICBpZiAodGhpcy5tb2RlID09PSAnbGVnYWN5JykgeworICAgICAgdGhpcy53cml0ZUZyYW1l
KHMpOworICAgIH0KKworICAgIGlmICh0aGlzLmhpc3RvcnkgPT09IHRydWUpIHsKKyAgICAgIHdp
bmRvdy5oaXN0b3J5LnB1c2hTdGF0ZSh7fSwgZG9jdW1lbnQudGl0bGUsIHMpOworICAgICAgLy8g
RmlyZSBhbiBvbnBvcHN0YXRlIGV2ZW50IG1hbnVhbGx5IHNpbmNlIHB1c2hpbmcgZG9lcyBub3Qg
b2J2aW91c2x5CisgICAgICAvLyB0cmlnZ2VyIHRoZSBwb3AgZXZlbnQuCisgICAgICB0aGlzLmZp
cmUoKTsKKyAgICB9IGVsc2UgeworICAgICAgZGxvYy5oYXNoID0gKHNbMF0gPT09ICcvJykgPyBz
IDogJy8nICsgczsKKyAgICB9CisgICAgcmV0dXJuIHRoaXM7CisgIH0sCisKKyAgd3JpdGVGcmFt
ZTogZnVuY3Rpb24gKHMpIHsKKyAgICAvLyBJRSBzdXBwb3J0Li4uCisgICAgdmFyIGYgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnc3RhdGUtZnJhbWUnKTsKKyAgICB2YXIgZCA9IGYuY29udGVu
dERvY3VtZW50IHx8IGYuY29udGVudFdpbmRvdy5kb2N1bWVudDsKKyAgICBkLm9wZW4oKTsKKyAg
ICBkLndyaXRlKCI8c2NyaXB0Pl9oYXNoID0gJyIgKyBzICsgIic7IG9ubG9hZCA9IHBhcmVudC5s
aXN0ZW5lci5zeW5jSGFzaDs8c2NyaXB0PiIpOworICAgIGQuY2xvc2UoKTsKKyAgfSwKKworICBz
eW5jSGFzaDogZnVuY3Rpb24gKCkgeworICAgIC8vIElFIHN1cHBvcnQuLi4KKyAgICB2YXIgcyA9
IHRoaXMuX2hhc2g7CisgICAgaWYgKHMgIT0gZGxvYy5oYXNoKSB7CisgICAgICBkbG9jLmhhc2gg
PSBzOworICAgIH0KKyAgICByZXR1cm4gdGhpczsKKyAgfSwKKworICBvbkhhc2hDaGFuZ2VkOiBm
dW5jdGlvbiAoKSB7fQorfTsKKwordmFyIFJvdXRlciA9IGV4cG9ydHMuUm91dGVyID0gZnVuY3Rp
b24gKHJvdXRlcykgeworICBpZiAoISh0aGlzIGluc3RhbmNlb2YgUm91dGVyKSkgcmV0dXJuIG5l
dyBSb3V0ZXIocm91dGVzKTsKKworICB0aGlzLnBhcmFtcyAgID0ge307CisgIHRoaXMucm91dGVz
ICAgPSB7fTsKKyAgdGhpcy5tZXRob2RzICA9IFsnb24nLCAnb25jZScsICdhZnRlcicsICdiZWZv
cmUnXTsKKyAgdGhpcy5zY29wZSAgICA9IFtdOworICB0aGlzLl9tZXRob2RzID0ge307CisKKyAg
dGhpcy5faW5zZXJ0ID0gdGhpcy5pbnNlcnQ7CisgIHRoaXMuaW5zZXJ0ID0gdGhpcy5pbnNlcnRF
eDsKKworICB0aGlzLmhpc3RvcnlTdXBwb3J0ID0gKHdpbmRvdy5oaXN0b3J5ICE9IG51bGwgPyB3
aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUgOiBudWxsKSAhPSBudWxsCisKKyAgdGhpcy5jb25maWd1
cmUoKTsKKyAgdGhpcy5tb3VudChyb3V0ZXMgfHwge30pOworfTsKKworUm91dGVyLnByb3RvdHlw
ZS5pbml0ID0gZnVuY3Rpb24gKHIpIHsKKyAgdmFyIHNlbGYgPSB0aGlzCisgICAgLCByb3V0ZVRv
OworICB0aGlzLmhhbmRsZXIgPSBmdW5jdGlvbihvbkNoYW5nZUV2ZW50KSB7CisgICAgdmFyIG5l
d1VSTCA9IG9uQ2hhbmdlRXZlbnQgJiYgb25DaGFuZ2VFdmVudC5uZXdVUkwgfHwgd2luZG93Lmxv
Y2F0aW9uLmhhc2g7CisgICAgdmFyIHVybCA9IHNlbGYuaGlzdG9yeSA9PT0gdHJ1ZSA/IHNlbGYu
Z2V0UGF0aCgpIDogbmV3VVJMLnJlcGxhY2UoLy4qIy8sICcnKTsKKyAgICBzZWxmLmRpc3BhdGNo
KCdvbicsIHVybC5jaGFyQXQoMCkgPT09ICcvJyA/IHVybCA6ICcvJyArIHVybCk7CisgIH07CisK
KyAgbGlzdGVuZXIuaW5pdCh0aGlzLmhhbmRsZXIsIHRoaXMuaGlzdG9yeSk7CisKKyAgaWYgKHRo
aXMuaGlzdG9yeSA9PT0gZmFsc2UpIHsKKyAgICBpZiAoZGxvY0hhc2hFbXB0eSgpICYmIHIpIHsK
KyAgICAgIGRsb2MuaGFzaCA9IHI7CisgICAgfSBlbHNlIGlmICghZGxvY0hhc2hFbXB0eSgpKSB7
CisgICAgICBzZWxmLmRpc3BhdGNoKCdvbicsICcvJyArIGRsb2MuaGFzaC5yZXBsYWNlKC9eKCNc
L3wjfFwvKS8sICcnKSk7CisgICAgfQorICB9CisgIGVsc2UgeworICAgIGlmICh0aGlzLmNvbnZl
cnRfaGFzaF9pbl9pbml0KSB7CisgICAgICAvLyBVc2UgaGFzaCBhcyByb3V0ZQorICAgICAgcm91
dGVUbyA9IGRsb2NIYXNoRW1wdHkoKSAmJiByID8gciA6ICFkbG9jSGFzaEVtcHR5KCkgPyBkbG9j
Lmhhc2gucmVwbGFjZSgvXiMvLCAnJykgOiBudWxsOworICAgICAgaWYgKHJvdXRlVG8pIHsKKyAg
ICAgICAgd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKHt9LCBkb2N1bWVudC50aXRsZSwgcm91
dGVUbyk7CisgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgLy8gVXNlIGNhbm9uaWNh
bCB1cmwKKyAgICAgIHJvdXRlVG8gPSB0aGlzLmdldFBhdGgoKTsKKyAgICB9CisKKyAgICAvLyBS
b3V0ZXIgaGFzIGJlZW4gaW5pdGlhbGl6ZWQsIGJ1dCBkdWUgdG8gdGhlIGNocm9tZSBidWcgaXQg
d2lsbCBub3QKKyAgICAvLyB5ZXQgYWN0dWFsbHkgcm91dGUgSFRNTDUgaGlzdG9yeSBzdGF0ZSBj
aGFuZ2VzLiBUaHVzLCBkZWNpZGUgaWYgc2hvdWxkIHJvdXRlLgorICAgIGlmIChyb3V0ZVRvIHx8
IHRoaXMucnVuX2luX2luaXQgPT09IHRydWUpIHsKKyAgICAgIHRoaXMuaGFuZGxlcigpOworICAg
IH0KKyAgfQorCisgIHJldHVybiB0aGlzOworfTsKKworUm91dGVyLnByb3RvdHlwZS5leHBsb2Rl
ID0gZnVuY3Rpb24gKCkgeworICB2YXIgdiA9IHRoaXMuaGlzdG9yeSA9PT0gdHJ1ZSA/IHRoaXMu
Z2V0UGF0aCgpIDogZGxvYy5oYXNoOworICBpZiAodi5jaGFyQXQoMSkgPT09ICcvJykgeyB2PXYu
c2xpY2UoMSkgfQorICByZXR1cm4gdi5zbGljZSgxLCB2Lmxlbmd0aCkuc3BsaXQoIi8iKTsKK307
CisKK1JvdXRlci5wcm90b3R5cGUuc2V0Um91dGUgPSBmdW5jdGlvbiAoaSwgdiwgdmFsKSB7Cisg
IHZhciB1cmwgPSB0aGlzLmV4cGxvZGUoKTsKKworICBpZiAodHlwZW9mIGkgPT09ICdudW1iZXIn
ICYmIHR5cGVvZiB2ID09PSAnc3RyaW5nJykgeworICAgIHVybFtpXSA9IHY7CisgIH0KKyAgZWxz
ZSBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHsKKyAgICB1cmwuc3BsaWNlKGksIHYsIHMp
OworICB9CisgIGVsc2UgeworICAgIHVybCA9IFtpXTsKKyAgfQorCisgIGxpc3RlbmVyLnNldEhh
c2godXJsLmpvaW4oJy8nKSk7CisgIHJldHVybiB1cmw7Cit9OworCisvLworLy8gIyMjIGZ1bmN0
aW9uIGluc2VydEV4KG1ldGhvZCwgcGF0aCwgcm91dGUsIHBhcmVudCkKKy8vICMjIyMgQG1ldGhv
ZCB7c3RyaW5nfSBNZXRob2QgdG8gaW5zZXJ0IHRoZSBzcGVjaWZpYyBgcm91dGVgLgorLy8gIyMj
IyBAcGF0aCB7QXJyYXl9IFBhcnNlZCBwYXRoIHRvIGluc2VydCB0aGUgYHJvdXRlYCBhdC4KKy8v
ICMjIyMgQHJvdXRlIHtBcnJheXxmdW5jdGlvbn0gUm91dGUgaGFuZGxlcnMgdG8gaW5zZXJ0Lgor
Ly8gIyMjIyBAcGFyZW50IHtPYmplY3R9ICoqT3B0aW9uYWwqKiBQYXJlbnQgInJvdXRlcyIgdG8g
aW5zZXJ0IGludG8uCisvLyBpbnNlcnQgYSBjYWxsYmFjayB0aGF0IHdpbGwgb25seSBvY2N1ciBv
bmNlIHBlciB0aGUgbWF0Y2hlZCByb3V0ZS4KKy8vCitSb3V0ZXIucHJvdG90eXBlLmluc2VydEV4
ID0gZnVuY3Rpb24obWV0aG9kLCBwYXRoLCByb3V0ZSwgcGFyZW50KSB7CisgIGlmIChtZXRob2Qg
PT09ICJvbmNlIikgeworICAgIG1ldGhvZCA9ICJvbiI7CisgICAgcm91dGUgPSBmdW5jdGlvbihy
b3V0ZSkgeworICAgICAgdmFyIG9uY2UgPSBmYWxzZTsKKyAgICAgIHJldHVybiBmdW5jdGlvbigp
IHsKKyAgICAgICAgaWYgKG9uY2UpIHJldHVybjsKKyAgICAgICAgb25jZSA9IHRydWU7CisgICAg
ICAgIHJldHVybiByb3V0ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOworICAgICAgfTsKKyAgICB9
KHJvdXRlKTsKKyAgfQorICByZXR1cm4gdGhpcy5faW5zZXJ0KG1ldGhvZCwgcGF0aCwgcm91dGUs
IHBhcmVudCk7Cit9OworCitSb3V0ZXIucHJvdG90eXBlLmdldFJvdXRlID0gZnVuY3Rpb24gKHYp
IHsKKyAgdmFyIHJldCA9IHY7CisKKyAgaWYgKHR5cGVvZiB2ID09PSAibnVtYmVyIikgeworICAg
IHJldCA9IHRoaXMuZXhwbG9kZSgpW3ZdOworICB9CisgIGVsc2UgaWYgKHR5cGVvZiB2ID09PSAi
c3RyaW5nIil7CisgICAgdmFyIGggPSB0aGlzLmV4cGxvZGUoKTsKKyAgICByZXQgPSBoLmluZGV4
T2Yodik7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0ID0gdGhpcy5leHBsb2RlKCk7CisgIH0KKwor
ICByZXR1cm4gcmV0OworfTsKKworUm91dGVyLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24g
KCkgeworICBsaXN0ZW5lci5kZXN0cm95KHRoaXMuaGFuZGxlcik7CisgIHJldHVybiB0aGlzOwor
fTsKKworUm91dGVyLnByb3RvdHlwZS5nZXRQYXRoID0gZnVuY3Rpb24gKCkgeworICB2YXIgcGF0
aCA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTsKKyAgaWYgKHBhdGguc3Vic3RyKDAsIDEpICE9
PSAnLycpIHsKKyAgICBwYXRoID0gJy8nICsgcGF0aDsKKyAgfQorICByZXR1cm4gcGF0aDsKK307
CitmdW5jdGlvbiBfZXZlcnkoYXJyLCBpdGVyYXRvcikgeworICBmb3IgKHZhciBpID0gMDsgaSA8
IGFyci5sZW5ndGg7IGkgKz0gMSkgeworICAgIGlmIChpdGVyYXRvcihhcnJbaV0sIGksIGFycikg
PT09IGZhbHNlKSB7CisgICAgICByZXR1cm47CisgICAgfQorICB9Cit9CisKK2Z1bmN0aW9uIF9m
bGF0dGVuKGFycikgeworICB2YXIgZmxhdCA9IFtdOworICBmb3IgKHZhciBpID0gMCwgbiA9IGFy
ci5sZW5ndGg7IGkgPCBuOyBpKyspIHsKKyAgICBmbGF0ID0gZmxhdC5jb25jYXQoYXJyW2ldKTsK
KyAgfQorICByZXR1cm4gZmxhdDsKK30KKworZnVuY3Rpb24gX2FzeW5jRXZlcnlTZXJpZXMoYXJy
LCBpdGVyYXRvciwgY2FsbGJhY2spIHsKKyAgaWYgKCFhcnIubGVuZ3RoKSB7CisgICAgcmV0dXJu
IGNhbGxiYWNrKCk7CisgIH0KKyAgdmFyIGNvbXBsZXRlZCA9IDA7CisgIChmdW5jdGlvbiBpdGVy
YXRlKCkgeworICAgIGl0ZXJhdG9yKGFycltjb21wbGV0ZWRdLCBmdW5jdGlvbihlcnIpIHsKKyAg
ICAgIGlmIChlcnIgfHwgZXJyID09PSBmYWxzZSkgeworICAgICAgICBjYWxsYmFjayhlcnIpOwor
ICAgICAgICBjYWxsYmFjayA9IGZ1bmN0aW9uKCkge307CisgICAgICB9IGVsc2UgeworICAgICAg
ICBjb21wbGV0ZWQgKz0gMTsKKyAgICAgICAgaWYgKGNvbXBsZXRlZCA9PT0gYXJyLmxlbmd0aCkg
eworICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgaXRl
cmF0ZSgpOworICAgICAgICB9CisgICAgICB9CisgICAgfSk7CisgIH0pKCk7Cit9CisKK2Z1bmN0
aW9uIHBhcmFtaWZ5U3RyaW5nKHN0ciwgcGFyYW1zLCBtb2QpIHsKKyAgbW9kID0gc3RyOworICBm
b3IgKHZhciBwYXJhbSBpbiBwYXJhbXMpIHsKKyAgICBpZiAocGFyYW1zLmhhc093blByb3BlcnR5
KHBhcmFtKSkgeworICAgICAgbW9kID0gcGFyYW1zW3BhcmFtXShzdHIpOworICAgICAgaWYgKG1v
ZCAhPT0gc3RyKSB7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgIH0KKyAgfQorICByZXR1
cm4gbW9kID09PSBzdHIgPyAiKFsuX2EtekEtWjAtOS0lKCldKykiIDogbW9kOworfQorCitmdW5j
dGlvbiByZWdpZnlTdHJpbmcoc3RyLCBwYXJhbXMpIHsKKyAgdmFyIG1hdGNoZXMsIGxhc3QgPSAw
LCBvdXQgPSAiIjsKKyAgd2hpbGUgKG1hdGNoZXMgPSBzdHIuc3Vic3RyKGxhc3QpLm1hdGNoKC9b
Xlx3XGRcLSAlQCZdKlwqW15cd1xkXC0gJUAmXSovKSkgeworICAgIGxhc3QgPSBtYXRjaGVzLmlu
ZGV4ICsgbWF0Y2hlc1swXS5sZW5ndGg7CisgICAgbWF0Y2hlc1swXSA9IG1hdGNoZXNbMF0ucmVw
bGFjZSgvXlwqLywgIihbXy4oKSFcXCAlQCZhLXpBLVowLTktXSspIik7CisgICAgb3V0ICs9IHN0
ci5zdWJzdHIoMCwgbWF0Y2hlcy5pbmRleCkgKyBtYXRjaGVzWzBdOworICB9CisgIHN0ciA9IG91
dCArPSBzdHIuc3Vic3RyKGxhc3QpOworICB2YXIgY2FwdHVyZXMgPSBzdHIubWF0Y2goLzooW15c
L10rKS9pZyksIGNhcHR1cmUsIGxlbmd0aDsKKyAgaWYgKGNhcHR1cmVzKSB7CisgICAgbGVuZ3Ro
ID0gY2FwdHVyZXMubGVuZ3RoOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKysp
IHsKKyAgICAgIGNhcHR1cmUgPSBjYXB0dXJlc1tpXTsKKyAgICAgIGlmIChjYXB0dXJlLnNsaWNl
KDAsIDIpID09PSAiOjoiKSB7CisgICAgICAgIHN0ciA9IGNhcHR1cmUuc2xpY2UoMSk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBzdHIgPSBzdHIucmVwbGFjZShjYXB0dXJlLCBwYXJhbWlmeVN0
cmluZyhjYXB0dXJlLCBwYXJhbXMpKTsKKyAgICAgIH0KKyAgICB9CisgIH0KKyAgcmV0dXJuIHN0
cjsKK30KKworZnVuY3Rpb24gdGVybWluYXRvcihyb3V0ZXMsIGRlbGltaXRlciwgc3RhcnQsIHN0
b3ApIHsKKyAgdmFyIGxhc3QgPSAwLCBsZWZ0ID0gMCwgcmlnaHQgPSAwLCBzdGFydCA9IChzdGFy
dCB8fCAiKCIpLnRvU3RyaW5nKCksIHN0b3AgPSAoc3RvcCB8fCAiKSIpLnRvU3RyaW5nKCksIGk7
CisgIGZvciAoaSA9IDA7IGkgPCByb3V0ZXMubGVuZ3RoOyBpKyspIHsKKyAgICB2YXIgY2h1bmsg
PSByb3V0ZXNbaV07CisgICAgaWYgKGNodW5rLmluZGV4T2Yoc3RhcnQsIGxhc3QpID4gY2h1bmsu
aW5kZXhPZihzdG9wLCBsYXN0KSB8fCB+Y2h1bmsuaW5kZXhPZihzdGFydCwgbGFzdCkgJiYgIX5j
aHVuay5pbmRleE9mKHN0b3AsIGxhc3QpIHx8ICF+Y2h1bmsuaW5kZXhPZihzdGFydCwgbGFzdCkg
JiYgfmNodW5rLmluZGV4T2Yoc3RvcCwgbGFzdCkpIHsKKyAgICAgIGxlZnQgPSBjaHVuay5pbmRl
eE9mKHN0YXJ0LCBsYXN0KTsKKyAgICAgIHJpZ2h0ID0gY2h1bmsuaW5kZXhPZihzdG9wLCBsYXN0
KTsKKyAgICAgIGlmICh+bGVmdCAmJiAhfnJpZ2h0IHx8ICF+bGVmdCAmJiB+cmlnaHQpIHsKKyAg
ICAgICAgdmFyIHRtcCA9IHJvdXRlcy5zbGljZSgwLCAoaSB8fCAxKSArIDEpLmpvaW4oZGVsaW1p
dGVyKTsKKyAgICAgICAgcm91dGVzID0gWyB0bXAgXS5jb25jYXQocm91dGVzLnNsaWNlKChpIHx8
IDEpICsgMSkpOworICAgICAgfQorICAgICAgbGFzdCA9IChyaWdodCA+IGxlZnQgPyByaWdodCA6
IGxlZnQpICsgMTsKKyAgICAgIGkgPSAwOworICAgIH0gZWxzZSB7CisgICAgICBsYXN0ID0gMDsK
KyAgICB9CisgIH0KKyAgcmV0dXJuIHJvdXRlczsKK30KKwordmFyIFFVRVJZX1NFUEFSQVRPUiA9
IC9cPy4qLzsKKworUm91dGVyLnByb3RvdHlwZS5jb25maWd1cmUgPSBmdW5jdGlvbihvcHRpb25z
KSB7CisgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OworICBmb3IgKHZhciBpID0gMDsgaSA8IHRo
aXMubWV0aG9kcy5sZW5ndGg7IGkrKykgeworICAgIHRoaXMuX21ldGhvZHNbdGhpcy5tZXRob2Rz
W2ldXSA9IHRydWU7CisgIH0KKyAgdGhpcy5yZWN1cnNlID0gb3B0aW9ucy5yZWN1cnNlIHx8IHRo
aXMucmVjdXJzZSB8fCBmYWxzZTsKKyAgdGhpcy5hc3luYyA9IG9wdGlvbnMuYXN5bmMgfHwgZmFs
c2U7CisgIHRoaXMuZGVsaW1pdGVyID0gb3B0aW9ucy5kZWxpbWl0ZXIgfHwgIi8iOworICB0aGlz
LnN0cmljdCA9IHR5cGVvZiBvcHRpb25zLnN0cmljdCA9PT0gInVuZGVmaW5lZCIgPyB0cnVlIDog
b3B0aW9ucy5zdHJpY3Q7CisgIHRoaXMubm90Zm91bmQgPSBvcHRpb25zLm5vdGZvdW5kOworICB0
aGlzLnJlc291cmNlID0gb3B0aW9ucy5yZXNvdXJjZTsKKyAgdGhpcy5oaXN0b3J5ID0gb3B0aW9u
cy5odG1sNWhpc3RvcnkgJiYgdGhpcy5oaXN0b3J5U3VwcG9ydCB8fCBmYWxzZTsKKyAgdGhpcy5y
dW5faW5faW5pdCA9IHRoaXMuaGlzdG9yeSA9PT0gdHJ1ZSAmJiBvcHRpb25zLnJ1bl9oYW5kbGVy
X2luX2luaXQgIT09IGZhbHNlOworICB0aGlzLmNvbnZlcnRfaGFzaF9pbl9pbml0ID0gdGhpcy5o
aXN0b3J5ID09PSB0cnVlICYmIG9wdGlvbnMuY29udmVydF9oYXNoX2luX2luaXQgIT09IGZhbHNl
OworICB0aGlzLmV2ZXJ5ID0geworICAgIGFmdGVyOiBvcHRpb25zLmFmdGVyIHx8IG51bGwsCisg
ICAgYmVmb3JlOiBvcHRpb25zLmJlZm9yZSB8fCBudWxsLAorICAgIG9uOiBvcHRpb25zLm9uIHx8
IG51bGwKKyAgfTsKKyAgcmV0dXJuIHRoaXM7Cit9OworCitSb3V0ZXIucHJvdG90eXBlLnBhcmFt
ID0gZnVuY3Rpb24odG9rZW4sIG1hdGNoZXIpIHsKKyAgaWYgKHRva2VuWzBdICE9PSAiOiIpIHsK
KyAgICB0b2tlbiA9ICI6IiArIHRva2VuOworICB9CisgIHZhciBjb21waWxlZCA9IG5ldyBSZWdF
eHAodG9rZW4sICJnIik7CisgIHRoaXMucGFyYW1zW3Rva2VuXSA9IGZ1bmN0aW9uKHN0cikgewor
ICAgIHJldHVybiBzdHIucmVwbGFjZShjb21waWxlZCwgbWF0Y2hlci5zb3VyY2UgfHwgbWF0Y2hl
cik7CisgIH07CisgIHJldHVybiB0aGlzOworfTsKKworUm91dGVyLnByb3RvdHlwZS5vbiA9IFJv
dXRlci5wcm90b3R5cGUucm91dGUgPSBmdW5jdGlvbihtZXRob2QsIHBhdGgsIHJvdXRlKSB7Cisg
IHZhciBzZWxmID0gdGhpczsKKyAgaWYgKCFyb3V0ZSAmJiB0eXBlb2YgcGF0aCA9PSAiZnVuY3Rp
b24iKSB7CisgICAgcm91dGUgPSBwYXRoOworICAgIHBhdGggPSBtZXRob2Q7CisgICAgbWV0aG9k
ID0gIm9uIjsKKyAgfQorICBpZiAoQXJyYXkuaXNBcnJheShwYXRoKSkgeworICAgIHJldHVybiBw
YXRoLmZvckVhY2goZnVuY3Rpb24ocCkgeworICAgICAgc2VsZi5vbihtZXRob2QsIHAsIHJvdXRl
KTsKKyAgICB9KTsKKyAgfQorICBpZiAocGF0aC5zb3VyY2UpIHsKKyAgICBwYXRoID0gcGF0aC5z
b3VyY2UucmVwbGFjZSgvXFxcLy9pZywgIi8iKTsKKyAgfQorICBpZiAoQXJyYXkuaXNBcnJheSht
ZXRob2QpKSB7CisgICAgcmV0dXJuIG1ldGhvZC5mb3JFYWNoKGZ1bmN0aW9uKG0pIHsKKyAgICAg
IHNlbGYub24obS50b0xvd2VyQ2FzZSgpLCBwYXRoLCByb3V0ZSk7CisgICAgfSk7CisgIH0KKyAg
cGF0aCA9IHBhdGguc3BsaXQobmV3IFJlZ0V4cCh0aGlzLmRlbGltaXRlcikpOworICBwYXRoID0g
dGVybWluYXRvcihwYXRoLCB0aGlzLmRlbGltaXRlcik7CisgIHRoaXMuaW5zZXJ0KG1ldGhvZCwg
dGhpcy5zY29wZS5jb25jYXQocGF0aCksIHJvdXRlKTsKK307CisKK1JvdXRlci5wcm90b3R5cGUu
cGF0aCA9IGZ1bmN0aW9uKHBhdGgsIHJvdXRlc0ZuKSB7CisgIHZhciBzZWxmID0gdGhpcywgbGVu
Z3RoID0gdGhpcy5zY29wZS5sZW5ndGg7CisgIGlmIChwYXRoLnNvdXJjZSkgeworICAgIHBhdGgg
PSBwYXRoLnNvdXJjZS5yZXBsYWNlKC9cXFwvL2lnLCAiLyIpOworICB9CisgIHBhdGggPSBwYXRo
LnNwbGl0KG5ldyBSZWdFeHAodGhpcy5kZWxpbWl0ZXIpKTsKKyAgcGF0aCA9IHRlcm1pbmF0b3Io
cGF0aCwgdGhpcy5kZWxpbWl0ZXIpOworICB0aGlzLnNjb3BlID0gdGhpcy5zY29wZS5jb25jYXQo
cGF0aCk7CisgIHJvdXRlc0ZuLmNhbGwodGhpcywgdGhpcyk7CisgIHRoaXMuc2NvcGUuc3BsaWNl
KGxlbmd0aCwgcGF0aC5sZW5ndGgpOworfTsKKworUm91dGVyLnByb3RvdHlwZS5kaXNwYXRjaCA9
IGZ1bmN0aW9uKG1ldGhvZCwgcGF0aCwgY2FsbGJhY2spIHsKKyAgdmFyIHNlbGYgPSB0aGlzLCBm
bnMgPSB0aGlzLnRyYXZlcnNlKG1ldGhvZCwgcGF0aC5yZXBsYWNlKFFVRVJZX1NFUEFSQVRPUiwg
IiIpLCB0aGlzLnJvdXRlcywgIiIpLCBpbnZva2VkID0gdGhpcy5faW52b2tlZCwgYWZ0ZXI7Cisg
IHRoaXMuX2ludm9rZWQgPSB0cnVlOworICBpZiAoIWZucyB8fCBmbnMubGVuZ3RoID09PSAwKSB7
CisgICAgdGhpcy5sYXN0ID0gW107CisgICAgaWYgKHR5cGVvZiB0aGlzLm5vdGZvdW5kID09PSAi
ZnVuY3Rpb24iKSB7CisgICAgICB0aGlzLmludm9rZShbIHRoaXMubm90Zm91bmQgXSwgeworICAg
ICAgICBtZXRob2Q6IG1ldGhvZCwKKyAgICAgICAgcGF0aDogcGF0aAorICAgICAgfSwgY2FsbGJh
Y2spOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKyAgaWYgKHRoaXMucmVjdXJzZSA9
PT0gImZvcndhcmQiKSB7CisgICAgZm5zID0gZm5zLnJldmVyc2UoKTsKKyAgfQorICBmdW5jdGlv
biB1cGRhdGVBbmRJbnZva2UoKSB7CisgICAgc2VsZi5sYXN0ID0gZm5zLmFmdGVyOworICAgIHNl
bGYuaW52b2tlKHNlbGYucnVubGlzdChmbnMpLCBzZWxmLCBjYWxsYmFjayk7CisgIH0KKyAgYWZ0
ZXIgPSB0aGlzLmV2ZXJ5ICYmIHRoaXMuZXZlcnkuYWZ0ZXIgPyBbIHRoaXMuZXZlcnkuYWZ0ZXIg
XS5jb25jYXQodGhpcy5sYXN0KSA6IFsgdGhpcy5sYXN0IF07CisgIGlmIChhZnRlciAmJiBhZnRl
ci5sZW5ndGggPiAwICYmIGludm9rZWQpIHsKKyAgICBpZiAodGhpcy5hc3luYykgeworICAgICAg
dGhpcy5pbnZva2UoYWZ0ZXIsIHRoaXMsIHVwZGF0ZUFuZEludm9rZSk7CisgICAgfSBlbHNlIHsK
KyAgICAgIHRoaXMuaW52b2tlKGFmdGVyLCB0aGlzKTsKKyAgICAgIHVwZGF0ZUFuZEludm9rZSgp
OworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKKyAgfQorICB1cGRhdGVBbmRJbnZva2UoKTsKKyAg
cmV0dXJuIHRydWU7Cit9OworCitSb3V0ZXIucHJvdG90eXBlLmludm9rZSA9IGZ1bmN0aW9uKGZu
cywgdGhpc0FyZywgY2FsbGJhY2spIHsKKyAgdmFyIHNlbGYgPSB0aGlzOworICB2YXIgYXBwbHk7
CisgIGlmICh0aGlzLmFzeW5jKSB7CisgICAgYXBwbHkgPSBmdW5jdGlvbihmbiwgbmV4dCkgewor
ICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZm4pKSB7CisgICAgICAgIHJldHVybiBfYXN5bmNFdmVy
eVNlcmllcyhmbiwgYXBwbHksIG5leHQpOworICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZm4gPT0g
ImZ1bmN0aW9uIikgeworICAgICAgICBmbi5hcHBseSh0aGlzQXJnLCAoZm5zLmNhcHR1cmVzIHx8
IFtdKS5jb25jYXQobmV4dCkpOworICAgICAgfQorICAgIH07CisgICAgX2FzeW5jRXZlcnlTZXJp
ZXMoZm5zLCBhcHBseSwgZnVuY3Rpb24oKSB7CisgICAgICBpZiAoY2FsbGJhY2spIHsKKyAgICAg
ICAgY2FsbGJhY2suYXBwbHkodGhpc0FyZywgYXJndW1lbnRzKTsKKyAgICAgIH0KKyAgICB9KTsK
KyAgfSBlbHNlIHsKKyAgICBhcHBseSA9IGZ1bmN0aW9uKGZuKSB7CisgICAgICBpZiAoQXJyYXku
aXNBcnJheShmbikpIHsKKyAgICAgICAgcmV0dXJuIF9ldmVyeShmbiwgYXBwbHkpOworICAgICAg
fSBlbHNlIGlmICh0eXBlb2YgZm4gPT09ICJmdW5jdGlvbiIpIHsKKyAgICAgICAgcmV0dXJuIGZu
LmFwcGx5KHRoaXNBcmcsIGZucy5jYXB0dXJlcyB8fCBbXSk7CisgICAgICB9IGVsc2UgaWYgKHR5
cGVvZiBmbiA9PT0gInN0cmluZyIgJiYgc2VsZi5yZXNvdXJjZSkgeworICAgICAgICBzZWxmLnJl
c291cmNlW2ZuXS5hcHBseSh0aGlzQXJnLCBmbnMuY2FwdHVyZXMgfHwgW10pOworICAgICAgfQor
ICAgIH07CisgICAgX2V2ZXJ5KGZucywgYXBwbHkpOworICB9Cit9OworCitSb3V0ZXIucHJvdG90
eXBlLnRyYXZlcnNlID0gZnVuY3Rpb24obWV0aG9kLCBwYXRoLCByb3V0ZXMsIHJlZ2V4cCwgZmls
dGVyKSB7CisgIHZhciBmbnMgPSBbXSwgY3VycmVudCwgZXhhY3QsIG1hdGNoLCBuZXh0LCB0aGF0
OworICBmdW5jdGlvbiBmaWx0ZXJSb3V0ZXMocm91dGVzKSB7CisgICAgaWYgKCFmaWx0ZXIpIHsK
KyAgICAgIHJldHVybiByb3V0ZXM7CisgICAgfQorICAgIGZ1bmN0aW9uIGRlZXBDb3B5KHNvdXJj
ZSkgeworICAgICAgdmFyIHJlc3VsdCA9IFtdOworICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBz
b3VyY2UubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgcmVzdWx0W2ldID0gQXJyYXkuaXNBcnJheShz
b3VyY2VbaV0pID8gZGVlcENvcHkoc291cmNlW2ldKSA6IHNvdXJjZVtpXTsKKyAgICAgIH0KKyAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIGZ1bmN0aW9uIGFwcGx5RmlsdGVyKGZucykg
eworICAgICAgZm9yICh2YXIgaSA9IGZucy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgeworICAg
ICAgICBpZiAoQXJyYXkuaXNBcnJheShmbnNbaV0pKSB7CisgICAgICAgICAgYXBwbHlGaWx0ZXIo
Zm5zW2ldKTsKKyAgICAgICAgICBpZiAoZm5zW2ldLmxlbmd0aCA9PT0gMCkgeworICAgICAgICAg
ICAgZm5zLnNwbGljZShpLCAxKTsKKyAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgaWYgKCFmaWx0ZXIoZm5zW2ldKSkgeworICAgICAgICAgICAgZm5zLnNwbGljZShpLCAx
KTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgICAgdmFyIG5ld1Jv
dXRlcyA9IGRlZXBDb3B5KHJvdXRlcyk7CisgICAgbmV3Um91dGVzLm1hdGNoZWQgPSByb3V0ZXMu
bWF0Y2hlZDsKKyAgICBuZXdSb3V0ZXMuY2FwdHVyZXMgPSByb3V0ZXMuY2FwdHVyZXM7CisgICAg
bmV3Um91dGVzLmFmdGVyID0gcm91dGVzLmFmdGVyLmZpbHRlcihmaWx0ZXIpOworICAgIGFwcGx5
RmlsdGVyKG5ld1JvdXRlcyk7CisgICAgcmV0dXJuIG5ld1JvdXRlczsKKyAgfQorICBpZiAocGF0
aCA9PT0gdGhpcy5kZWxpbWl0ZXIgJiYgcm91dGVzW21ldGhvZF0pIHsKKyAgICBuZXh0ID0gWyBb
IHJvdXRlcy5iZWZvcmUsIHJvdXRlc1ttZXRob2RdIF0uZmlsdGVyKEJvb2xlYW4pIF07CisgICAg
bmV4dC5hZnRlciA9IFsgcm91dGVzLmFmdGVyIF0uZmlsdGVyKEJvb2xlYW4pOworICAgIG5leHQu
bWF0Y2hlZCA9IHRydWU7CisgICAgbmV4dC5jYXB0dXJlcyA9IFtdOworICAgIHJldHVybiBmaWx0
ZXJSb3V0ZXMobmV4dCk7CisgIH0KKyAgZm9yICh2YXIgciBpbiByb3V0ZXMpIHsKKyAgICBpZiAo
cm91dGVzLmhhc093blByb3BlcnR5KHIpICYmICghdGhpcy5fbWV0aG9kc1tyXSB8fCB0aGlzLl9t
ZXRob2RzW3JdICYmIHR5cGVvZiByb3V0ZXNbcl0gPT09ICJvYmplY3QiICYmICFBcnJheS5pc0Fy
cmF5KHJvdXRlc1tyXSkpKSB7CisgICAgICBjdXJyZW50ID0gZXhhY3QgPSByZWdleHAgKyB0aGlz
LmRlbGltaXRlciArIHI7CisgICAgICBpZiAoIXRoaXMuc3RyaWN0KSB7CisgICAgICAgIGV4YWN0
ICs9ICJbIiArIHRoaXMuZGVsaW1pdGVyICsgIl0/IjsKKyAgICAgIH0KKyAgICAgIG1hdGNoID0g
cGF0aC5tYXRjaChuZXcgUmVnRXhwKCJeIiArIGV4YWN0KSk7CisgICAgICBpZiAoIW1hdGNoKSB7
CisgICAgICAgIGNvbnRpbnVlOworICAgICAgfQorICAgICAgaWYgKG1hdGNoWzBdICYmIG1hdGNo
WzBdID09IHBhdGggJiYgcm91dGVzW3JdW21ldGhvZF0pIHsKKyAgICAgICAgbmV4dCA9IFsgWyBy
b3V0ZXNbcl0uYmVmb3JlLCByb3V0ZXNbcl1bbWV0aG9kXSBdLmZpbHRlcihCb29sZWFuKSBdOwor
ICAgICAgICBuZXh0LmFmdGVyID0gWyByb3V0ZXNbcl0uYWZ0ZXIgXS5maWx0ZXIoQm9vbGVhbik7
CisgICAgICAgIG5leHQubWF0Y2hlZCA9IHRydWU7CisgICAgICAgIG5leHQuY2FwdHVyZXMgPSBt
YXRjaC5zbGljZSgxKTsKKyAgICAgICAgaWYgKHRoaXMucmVjdXJzZSAmJiByb3V0ZXMgPT09IHRo
aXMucm91dGVzKSB7CisgICAgICAgICAgbmV4dC5wdXNoKFsgcm91dGVzLmJlZm9yZSwgcm91dGVz
Lm9uIF0uZmlsdGVyKEJvb2xlYW4pKTsKKyAgICAgICAgICBuZXh0LmFmdGVyID0gbmV4dC5hZnRl
ci5jb25jYXQoWyByb3V0ZXMuYWZ0ZXIgXS5maWx0ZXIoQm9vbGVhbikpOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybiBmaWx0ZXJSb3V0ZXMobmV4dCk7CisgICAgICB9CisgICAgICBuZXh0ID0g
dGhpcy50cmF2ZXJzZShtZXRob2QsIHBhdGgsIHJvdXRlc1tyXSwgY3VycmVudCk7CisgICAgICBp
ZiAobmV4dC5tYXRjaGVkKSB7CisgICAgICAgIGlmIChuZXh0Lmxlbmd0aCA+IDApIHsKKyAgICAg
ICAgICBmbnMgPSBmbnMuY29uY2F0KG5leHQpOworICAgICAgICB9CisgICAgICAgIGlmICh0aGlz
LnJlY3Vyc2UpIHsKKyAgICAgICAgICBmbnMucHVzaChbIHJvdXRlc1tyXS5iZWZvcmUsIHJvdXRl
c1tyXS5vbiBdLmZpbHRlcihCb29sZWFuKSk7CisgICAgICAgICAgbmV4dC5hZnRlciA9IG5leHQu
YWZ0ZXIuY29uY2F0KFsgcm91dGVzW3JdLmFmdGVyIF0uZmlsdGVyKEJvb2xlYW4pKTsKKyAgICAg
ICAgICBpZiAocm91dGVzID09PSB0aGlzLnJvdXRlcykgeworICAgICAgICAgICAgZm5zLnB1c2go
WyByb3V0ZXNbImJlZm9yZSJdLCByb3V0ZXNbIm9uIl0gXS5maWx0ZXIoQm9vbGVhbikpOworICAg
ICAgICAgICAgbmV4dC5hZnRlciA9IG5leHQuYWZ0ZXIuY29uY2F0KFsgcm91dGVzWyJhZnRlciJd
IF0uZmlsdGVyKEJvb2xlYW4pKTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZm5z
Lm1hdGNoZWQgPSB0cnVlOworICAgICAgICBmbnMuY2FwdHVyZXMgPSBuZXh0LmNhcHR1cmVzOwor
ICAgICAgICBmbnMuYWZ0ZXIgPSBuZXh0LmFmdGVyOworICAgICAgICByZXR1cm4gZmlsdGVyUm91
dGVzKGZucyk7CisgICAgICB9CisgICAgfQorICB9CisgIHJldHVybiBmYWxzZTsKK307CisKK1Jv
dXRlci5wcm90b3R5cGUuaW5zZXJ0ID0gZnVuY3Rpb24obWV0aG9kLCBwYXRoLCByb3V0ZSwgcGFy
ZW50KSB7CisgIHZhciBtZXRob2RUeXBlLCBwYXJlbnRUeXBlLCBpc0FycmF5LCBuZXN0ZWQsIHBh
cnQ7CisgIHBhdGggPSBwYXRoLmZpbHRlcihmdW5jdGlvbihwKSB7CisgICAgcmV0dXJuIHAgJiYg
cC5sZW5ndGggPiAwOworICB9KTsKKyAgcGFyZW50ID0gcGFyZW50IHx8IHRoaXMucm91dGVzOwor
ICBwYXJ0ID0gcGF0aC5zaGlmdCgpOworICBpZiAoL1w6fFwqLy50ZXN0KHBhcnQpICYmICEvXFxk
fFxcdy8udGVzdChwYXJ0KSkgeworICAgIHBhcnQgPSByZWdpZnlTdHJpbmcocGFydCwgdGhpcy5w
YXJhbXMpOworICB9CisgIGlmIChwYXRoLmxlbmd0aCA+IDApIHsKKyAgICBwYXJlbnRbcGFydF0g
PSBwYXJlbnRbcGFydF0gfHwge307CisgICAgcmV0dXJuIHRoaXMuaW5zZXJ0KG1ldGhvZCwgcGF0
aCwgcm91dGUsIHBhcmVudFtwYXJ0XSk7CisgIH0KKyAgaWYgKCFwYXJ0ICYmICFwYXRoLmxlbmd0
aCAmJiBwYXJlbnQgPT09IHRoaXMucm91dGVzKSB7CisgICAgbWV0aG9kVHlwZSA9IHR5cGVvZiBw
YXJlbnRbbWV0aG9kXTsKKyAgICBzd2l0Y2ggKG1ldGhvZFR5cGUpIHsKKyAgICAgY2FzZSAiZnVu
Y3Rpb24iOgorICAgICAgcGFyZW50W21ldGhvZF0gPSBbIHBhcmVudFttZXRob2RdLCByb3V0ZSBd
OworICAgICAgcmV0dXJuOworICAgICBjYXNlICJvYmplY3QiOgorICAgICAgcGFyZW50W21ldGhv
ZF0ucHVzaChyb3V0ZSk7CisgICAgICByZXR1cm47CisgICAgIGNhc2UgInVuZGVmaW5lZCI6Cisg
ICAgICBwYXJlbnRbbWV0aG9kXSA9IHJvdXRlOworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBy
ZXR1cm47CisgIH0KKyAgcGFyZW50VHlwZSA9IHR5cGVvZiBwYXJlbnRbcGFydF07CisgIGlzQXJy
YXkgPSBBcnJheS5pc0FycmF5KHBhcmVudFtwYXJ0XSk7CisgIGlmIChwYXJlbnRbcGFydF0gJiYg
IWlzQXJyYXkgJiYgcGFyZW50VHlwZSA9PSAib2JqZWN0IikgeworICAgIG1ldGhvZFR5cGUgPSB0
eXBlb2YgcGFyZW50W3BhcnRdW21ldGhvZF07CisgICAgc3dpdGNoIChtZXRob2RUeXBlKSB7Cisg
ICAgIGNhc2UgImZ1bmN0aW9uIjoKKyAgICAgIHBhcmVudFtwYXJ0XVttZXRob2RdID0gWyBwYXJl
bnRbcGFydF1bbWV0aG9kXSwgcm91dGUgXTsKKyAgICAgIHJldHVybjsKKyAgICAgY2FzZSAib2Jq
ZWN0IjoKKyAgICAgIHBhcmVudFtwYXJ0XVttZXRob2RdLnB1c2gocm91dGUpOworICAgICAgcmV0
dXJuOworICAgICBjYXNlICJ1bmRlZmluZWQiOgorICAgICAgcGFyZW50W3BhcnRdW21ldGhvZF0g
PSByb3V0ZTsKKyAgICAgIHJldHVybjsKKyAgICB9CisgIH0gZWxzZSBpZiAocGFyZW50VHlwZSA9
PSAidW5kZWZpbmVkIikgeworICAgIG5lc3RlZCA9IHt9OworICAgIG5lc3RlZFttZXRob2RdID0g
cm91dGU7CisgICAgcGFyZW50W3BhcnRdID0gbmVzdGVkOworICAgIHJldHVybjsKKyAgfQorICB0
aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgcm91dGUgY29udGV4dDogIiArIHBhcmVudFR5cGUpOwor
fTsKKworCisKK1JvdXRlci5wcm90b3R5cGUuZXh0ZW5kID0gZnVuY3Rpb24obWV0aG9kcykgewor
ICB2YXIgc2VsZiA9IHRoaXMsIGxlbiA9IG1ldGhvZHMubGVuZ3RoLCBpOworICBmdW5jdGlvbiBl
eHRlbmQobWV0aG9kKSB7CisgICAgc2VsZi5fbWV0aG9kc1ttZXRob2RdID0gdHJ1ZTsKKyAgICBz
ZWxmW21ldGhvZF0gPSBmdW5jdGlvbigpIHsKKyAgICAgIHZhciBleHRyYSA9IGFyZ3VtZW50cy5s
ZW5ndGggPT09IDEgPyBbIG1ldGhvZCwgIiIgXSA6IFsgbWV0aG9kIF07CisgICAgICBzZWxmLm9u
LmFwcGx5KHNlbGYsIGV4dHJhLmNvbmNhdChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1
bWVudHMpKSk7CisgICAgfTsKKyAgfQorICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAg
ICBleHRlbmQobWV0aG9kc1tpXSk7CisgIH0KK307CisKK1JvdXRlci5wcm90b3R5cGUucnVubGlz
dCA9IGZ1bmN0aW9uKGZucykgeworICB2YXIgcnVubGlzdCA9IHRoaXMuZXZlcnkgJiYgdGhpcy5l
dmVyeS5iZWZvcmUgPyBbIHRoaXMuZXZlcnkuYmVmb3JlIF0uY29uY2F0KF9mbGF0dGVuKGZucykp
IDogX2ZsYXR0ZW4oZm5zKTsKKyAgaWYgKHRoaXMuZXZlcnkgJiYgdGhpcy5ldmVyeS5vbikgewor
ICAgIHJ1bmxpc3QucHVzaCh0aGlzLmV2ZXJ5Lm9uKTsKKyAgfQorICBydW5saXN0LmNhcHR1cmVz
ID0gZm5zLmNhcHR1cmVzOworICBydW5saXN0LnNvdXJjZSA9IGZucy5zb3VyY2U7CisgIHJldHVy
biBydW5saXN0OworfTsKKworUm91dGVyLnByb3RvdHlwZS5tb3VudCA9IGZ1bmN0aW9uKHJvdXRl
cywgcGF0aCkgeworICBpZiAoIXJvdXRlcyB8fCB0eXBlb2Ygcm91dGVzICE9PSAib2JqZWN0IiB8
fCBBcnJheS5pc0FycmF5KHJvdXRlcykpIHsKKyAgICByZXR1cm47CisgIH0KKyAgdmFyIHNlbGYg
PSB0aGlzOworICBwYXRoID0gcGF0aCB8fCBbXTsKKyAgaWYgKCFBcnJheS5pc0FycmF5KHBhdGgp
KSB7CisgICAgcGF0aCA9IHBhdGguc3BsaXQoc2VsZi5kZWxpbWl0ZXIpOworICB9CisgIGZ1bmN0
aW9uIGluc2VydE9yTW91bnQocm91dGUsIGxvY2FsKSB7CisgICAgdmFyIHJlbmFtZSA9IHJvdXRl
LCBwYXJ0cyA9IHJvdXRlLnNwbGl0KHNlbGYuZGVsaW1pdGVyKSwgcm91dGVUeXBlID0gdHlwZW9m
IHJvdXRlc1tyb3V0ZV0sIGlzUm91dGUgPSBwYXJ0c1swXSA9PT0gIiIgfHwgIXNlbGYuX21ldGhv
ZHNbcGFydHNbMF1dLCBldmVudCA9IGlzUm91dGUgPyAib24iIDogcmVuYW1lOworICAgIGlmIChp
c1JvdXRlKSB7CisgICAgICByZW5hbWUgPSByZW5hbWUuc2xpY2UoKHJlbmFtZS5tYXRjaChuZXcg
UmVnRXhwKCJeIiArIHNlbGYuZGVsaW1pdGVyKSkgfHwgWyAiIiBdKVswXS5sZW5ndGgpOworICAg
ICAgcGFydHMuc2hpZnQoKTsKKyAgICB9CisgICAgaWYgKGlzUm91dGUgJiYgcm91dGVUeXBlID09
PSAib2JqZWN0IiAmJiAhQXJyYXkuaXNBcnJheShyb3V0ZXNbcm91dGVdKSkgeworICAgICAgbG9j
YWwgPSBsb2NhbC5jb25jYXQocGFydHMpOworICAgICAgc2VsZi5tb3VudChyb3V0ZXNbcm91dGVd
LCBsb2NhbCk7CisgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChpc1JvdXRlKSB7CisgICAg
ICBsb2NhbCA9IGxvY2FsLmNvbmNhdChyZW5hbWUuc3BsaXQoc2VsZi5kZWxpbWl0ZXIpKTsKKyAg
ICAgIGxvY2FsID0gdGVybWluYXRvcihsb2NhbCwgc2VsZi5kZWxpbWl0ZXIpOworICAgIH0KKyAg
ICBzZWxmLmluc2VydChldmVudCwgbG9jYWwsIHJvdXRlc1tyb3V0ZV0pOworICB9CisgIGZvciAo
dmFyIHJvdXRlIGluIHJvdXRlcykgeworICAgIGlmIChyb3V0ZXMuaGFzT3duUHJvcGVydHkocm91
dGUpKSB7CisgICAgICBpbnNlcnRPck1vdW50KHJvdXRlLCBwYXRoLnNsaWNlKDApKTsKKyAgICB9
CisgIH0KK307CisKKworCit9KHR5cGVvZiBleHBvcnRzID09PSAib2JqZWN0IiA/IGV4cG9ydHMg
OiB3aW5kb3cpKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL2Rpc3QvZGlyZWN0b3IubWluLmpz
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9kaXN0L2RpcmVjdG9y
Lm1pbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jOTU2YWY0MDA5NWJjMjJjNjg4NWYyNzdlZDllZjVmNzQxNmJh
ZTRmCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9k
aXJlY3Rvci9kaXN0L2RpcmVjdG9yLm1pbi5qcwpAQCAtMCwwICsxLDcgQEAKKworCisvLworLy8g
R2VuZXJhdGVkIG9uIFR1ZSBEZWMgMTYgMjAxNCAxMjoxMzo0NyBHTVQrMDEwMCAoQ0VUKSBieSBD
aGFybGllIFJvYmJpbnMsIFBhb2xvIEZyYWdvbWVuaSAmIHRoZSBDb250cmlidXRvcnMgKFVzaW5n
IENvZGVzdXJnZW9uKS4KKy8vIFZlcnNpb24gMS4yLjYKKy8vCisoZnVuY3Rpb24oYSl7ZnVuY3Rp
b24gayhhLGIsYyxkKXt2YXIgZT0wLGY9MCxnPTAsYz0oY3x8IigiKS50b1N0cmluZygpLGQ9KGR8
fCIpIikudG9TdHJpbmcoKSxoO2ZvcihoPTA7aDxhLmxlbmd0aDtoKyspe3ZhciBpPWFbaF07aWYo
aS5pbmRleE9mKGMsZSk+aS5pbmRleE9mKGQsZSl8fH5pLmluZGV4T2YoYyxlKSYmIX5pLmluZGV4
T2YoZCxlKXx8IX5pLmluZGV4T2YoYyxlKSYmfmkuaW5kZXhPZihkLGUpKXtmPWkuaW5kZXhPZihj
LGUpLGc9aS5pbmRleE9mKGQsZSk7aWYofmYmJiF+Z3x8IX5mJiZ+Zyl7dmFyIGo9YS5zbGljZSgw
LChofHwxKSsxKS5qb2luKGIpO2E9W2pdLmNvbmNhdChhLnNsaWNlKChofHwxKSsxKSl9ZT0oZz5m
P2c6ZikrMSxoPTB9ZWxzZSBlPTB9cmV0dXJuIGF9ZnVuY3Rpb24gaihhLGIpe3ZhciBjLGQ9MCxl
PSIiO3doaWxlKGM9YS5zdWJzdHIoZCkubWF0Y2goL1teXHdcZFwtICVAJl0qXCpbXlx3XGRcLSAl
QCZdKi8pKWQ9Yy5pbmRleCtjWzBdLmxlbmd0aCxjWzBdPWNbMF0ucmVwbGFjZSgvXlwqLywiKFtf
LigpIVxcICVAJmEtekEtWjAtOS1dKykiKSxlKz1hLnN1YnN0cigwLGMuaW5kZXgpK2NbMF07YT1l
Kz1hLnN1YnN0cihkKTt2YXIgZj1hLm1hdGNoKC86KFteXC9dKykvaWcpLGcsaDtpZihmKXtoPWYu
bGVuZ3RoO2Zvcih2YXIgaj0wO2o8aDtqKyspZz1mW2pdLGcuc2xpY2UoMCwyKT09PSI6OiI/YT1n
LnNsaWNlKDEpOmE9YS5yZXBsYWNlKGcsaShnLGIpKX1yZXR1cm4gYX1mdW5jdGlvbiBpKGEsYixj
KXtjPWE7Zm9yKHZhciBkIGluIGIpaWYoYi5oYXNPd25Qcm9wZXJ0eShkKSl7Yz1iW2RdKGEpO2lm
KGMhPT1hKWJyZWFrfXJldHVybiBjPT09YT8iKFsuX2EtekEtWjAtOS0lKCldKykiOmN9ZnVuY3Rp
b24gaChhLGIsYyl7aWYoIWEubGVuZ3RoKXJldHVybiBjKCk7dmFyIGQ9MDsoZnVuY3Rpb24gZSgp
e2IoYVtkXSxmdW5jdGlvbihiKXtifHxiPT09ITE/KGMoYiksYz1mdW5jdGlvbigpe30pOihkKz0x
LGQ9PT1hLmxlbmd0aD9jKCk6ZSgpKX0pfSkoKX1mdW5jdGlvbiBnKGEpe3ZhciBiPVtdO2Zvcih2
YXIgYz0wLGQ9YS5sZW5ndGg7YzxkO2MrKyliPWIuY29uY2F0KGFbY10pO3JldHVybiBifWZ1bmN0
aW9uIGYoYSxiKXtmb3IodmFyIGM9MDtjPGEubGVuZ3RoO2MrPTEpaWYoYihhW2NdLGMsYSk9PT0h
MSlyZXR1cm59ZnVuY3Rpb24gYygpe3JldHVybiBiLmhhc2g9PT0iInx8Yi5oYXNoPT09IiMifXZh
ciBiPWRvY3VtZW50LmxvY2F0aW9uLGQ9e21vZGU6Im1vZGVybiIsaGFzaDpiLmhhc2gsaGlzdG9y
eTohMSxjaGVjazpmdW5jdGlvbigpe3ZhciBhPWIuaGFzaDthIT10aGlzLmhhc2gmJih0aGlzLmhh
c2g9YSx0aGlzLm9uSGFzaENoYW5nZWQoKSl9LGZpcmU6ZnVuY3Rpb24oKXt0aGlzLm1vZGU9PT0i
bW9kZXJuIj90aGlzLmhpc3Rvcnk9PT0hMD93aW5kb3cub25wb3BzdGF0ZSgpOndpbmRvdy5vbmhh
c2hjaGFuZ2UoKTp0aGlzLm9uSGFzaENoYW5nZWQoKX0saW5pdDpmdW5jdGlvbihhLGIpe2Z1bmN0
aW9uIGQoYSl7Zm9yKHZhciBiPTAsYz1lLmxpc3RlbmVycy5sZW5ndGg7YjxjO2IrKyllLmxpc3Rl
bmVyc1tiXShhKX12YXIgYz10aGlzO3RoaXMuaGlzdG9yeT1iLGUubGlzdGVuZXJzfHwoZS5saXN0
ZW5lcnM9W10pO2lmKCJvbmhhc2hjaGFuZ2UiaW4gd2luZG93JiYoZG9jdW1lbnQuZG9jdW1lbnRN
b2RlPT09dW5kZWZpbmVkfHxkb2N1bWVudC5kb2N1bWVudE1vZGU+NykpdGhpcy5oaXN0b3J5PT09
ITA/c2V0VGltZW91dChmdW5jdGlvbigpe3dpbmRvdy5vbnBvcHN0YXRlPWR9LDUwMCk6d2luZG93
Lm9uaGFzaGNoYW5nZT1kLHRoaXMubW9kZT0ibW9kZXJuIjtlbHNle3ZhciBmPWRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImlmcmFtZSIpO2YuaWQ9InN0YXRlLWZyYW1lIixmLnN0eWxlLmRpc3BsYXk9
Im5vbmUiLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZiksdGhpcy53cml0ZUZyYW1lKCIiKSwi
b25wcm9wZXJ0eWNoYW5nZSJpbiBkb2N1bWVudCYmImF0dGFjaEV2ZW50ImluIGRvY3VtZW50JiZk
b2N1bWVudC5hdHRhY2hFdmVudCgib25wcm9wZXJ0eWNoYW5nZSIsZnVuY3Rpb24oKXtldmVudC5w
cm9wZXJ0eU5hbWU9PT0ibG9jYXRpb24iJiZjLmNoZWNrKCl9KSx3aW5kb3cuc2V0SW50ZXJ2YWwo
ZnVuY3Rpb24oKXtjLmNoZWNrKCl9LDUwKSx0aGlzLm9uSGFzaENoYW5nZWQ9ZCx0aGlzLm1vZGU9
ImxlZ2FjeSJ9ZS5saXN0ZW5lcnMucHVzaChhKTtyZXR1cm4gdGhpcy5tb2RlfSxkZXN0cm95OmZ1
bmN0aW9uKGEpe2lmKCEhZSYmISFlLmxpc3RlbmVycyl7dmFyIGI9ZS5saXN0ZW5lcnM7Zm9yKHZh
ciBjPWIubGVuZ3RoLTE7Yz49MDtjLS0pYltjXT09PWEmJmIuc3BsaWNlKGMsMSl9fSxzZXRIYXNo
OmZ1bmN0aW9uKGEpe3RoaXMubW9kZT09PSJsZWdhY3kiJiZ0aGlzLndyaXRlRnJhbWUoYSksdGhp
cy5oaXN0b3J5PT09ITA/KHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZSh7fSxkb2N1bWVudC50aXRs
ZSxhKSx0aGlzLmZpcmUoKSk6Yi5oYXNoPWFbMF09PT0iLyI/YToiLyIrYTtyZXR1cm4gdGhpc30s
d3JpdGVGcmFtZTpmdW5jdGlvbihhKXt2YXIgYj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3Rh
dGUtZnJhbWUiKSxjPWIuY29udGVudERvY3VtZW50fHxiLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ7
Yy5vcGVuKCksYy53cml0ZSgiPHNjcmlwdD5faGFzaCA9ICciK2ErIic7IG9ubG9hZCA9IHBhcmVu
dC5saXN0ZW5lci5zeW5jSGFzaDs8c2NyaXB0PiIpLGMuY2xvc2UoKX0sc3luY0hhc2g6ZnVuY3Rp
b24oKXt2YXIgYT10aGlzLl9oYXNoO2EhPWIuaGFzaCYmKGIuaGFzaD1hKTtyZXR1cm4gdGhpc30s
b25IYXNoQ2hhbmdlZDpmdW5jdGlvbigpe319LGU9YS5Sb3V0ZXI9ZnVuY3Rpb24oYSl7aWYodGhp
cyBpbnN0YW5jZW9mIGUpdGhpcy5wYXJhbXM9e30sdGhpcy5yb3V0ZXM9e30sdGhpcy5tZXRob2Rz
PVsib24iLCJvbmNlIiwiYWZ0ZXIiLCJiZWZvcmUiXSx0aGlzLnNjb3BlPVtdLHRoaXMuX21ldGhv
ZHM9e30sdGhpcy5faW5zZXJ0PXRoaXMuaW5zZXJ0LHRoaXMuaW5zZXJ0PXRoaXMuaW5zZXJ0RXgs
dGhpcy5oaXN0b3J5U3VwcG9ydD0od2luZG93Lmhpc3RvcnkhPW51bGw/d2luZG93Lmhpc3Rvcnku
cHVzaFN0YXRlOm51bGwpIT1udWxsLHRoaXMuY29uZmlndXJlKCksdGhpcy5tb3VudChhfHx7fSk7
ZWxzZSByZXR1cm4gbmV3IGUoYSl9O2UucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oYSl7dmFyIGU9
dGhpcyxmO3RoaXMuaGFuZGxlcj1mdW5jdGlvbihhKXt2YXIgYj1hJiZhLm5ld1VSTHx8d2luZG93
LmxvY2F0aW9uLmhhc2gsYz1lLmhpc3Rvcnk9PT0hMD9lLmdldFBhdGgoKTpiLnJlcGxhY2UoLy4q
Iy8sIiIpO2UuZGlzcGF0Y2goIm9uIixjLmNoYXJBdCgwKT09PSIvIj9jOiIvIitjKX0sZC5pbml0
KHRoaXMuaGFuZGxlcix0aGlzLmhpc3RvcnkpLHRoaXMuaGlzdG9yeT09PSExP2MoKSYmYT9iLmhh
c2g9YTpjKCl8fGUuZGlzcGF0Y2goIm9uIiwiLyIrYi5oYXNoLnJlcGxhY2UoL14oI1wvfCN8XC8p
LywiIikpOih0aGlzLmNvbnZlcnRfaGFzaF9pbl9pbml0PyhmPWMoKSYmYT9hOmMoKT9udWxsOmIu
aGFzaC5yZXBsYWNlKC9eIy8sIiIpLGYmJndpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZSh7fSxk
b2N1bWVudC50aXRsZSxmKSk6Zj10aGlzLmdldFBhdGgoKSwoZnx8dGhpcy5ydW5faW5faW5pdD09
PSEwKSYmdGhpcy5oYW5kbGVyKCkpO3JldHVybiB0aGlzfSxlLnByb3RvdHlwZS5leHBsb2RlPWZ1
bmN0aW9uKCl7dmFyIGE9dGhpcy5oaXN0b3J5PT09ITA/dGhpcy5nZXRQYXRoKCk6Yi5oYXNoO2Eu
Y2hhckF0KDEpPT09Ii8iJiYoYT1hLnNsaWNlKDEpKTtyZXR1cm4gYS5zbGljZSgxLGEubGVuZ3Ro
KS5zcGxpdCgiLyIpfSxlLnByb3RvdHlwZS5zZXRSb3V0ZT1mdW5jdGlvbihhLGIsYyl7dmFyIGU9
dGhpcy5leHBsb2RlKCk7dHlwZW9mIGE9PSJudW1iZXIiJiZ0eXBlb2YgYj09InN0cmluZyI/ZVth
XT1iOnR5cGVvZiBjPT0ic3RyaW5nIj9lLnNwbGljZShhLGIscyk6ZT1bYV0sZC5zZXRIYXNoKGUu
am9pbigiLyIpKTtyZXR1cm4gZX0sZS5wcm90b3R5cGUuaW5zZXJ0RXg9ZnVuY3Rpb24oYSxiLGMs
ZCl7YT09PSJvbmNlIiYmKGE9Im9uIixjPWZ1bmN0aW9uKGEpe3ZhciBiPSExO3JldHVybiBmdW5j
dGlvbigpe2lmKCFiKXtiPSEwO3JldHVybiBhLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19fShjKSk7
cmV0dXJuIHRoaXMuX2luc2VydChhLGIsYyxkKX0sZS5wcm90b3R5cGUuZ2V0Um91dGU9ZnVuY3Rp
b24oYSl7dmFyIGI9YTtpZih0eXBlb2YgYT09Im51bWJlciIpYj10aGlzLmV4cGxvZGUoKVthXTtl
bHNlIGlmKHR5cGVvZiBhPT0ic3RyaW5nIil7dmFyIGM9dGhpcy5leHBsb2RlKCk7Yj1jLmluZGV4
T2YoYSl9ZWxzZSBiPXRoaXMuZXhwbG9kZSgpO3JldHVybiBifSxlLnByb3RvdHlwZS5kZXN0cm95
PWZ1bmN0aW9uKCl7ZC5kZXN0cm95KHRoaXMuaGFuZGxlcik7cmV0dXJuIHRoaXN9LGUucHJvdG90
eXBlLmdldFBhdGg9ZnVuY3Rpb24oKXt2YXIgYT13aW5kb3cubG9jYXRpb24ucGF0aG5hbWU7YS5z
dWJzdHIoMCwxKSE9PSIvIiYmKGE9Ii8iK2EpO3JldHVybiBhfTt2YXIgbD0vXD8uKi87ZS5wcm90
b3R5cGUuY29uZmlndXJlPWZ1bmN0aW9uKGEpe2E9YXx8e307Zm9yKHZhciBiPTA7Yjx0aGlzLm1l
dGhvZHMubGVuZ3RoO2IrKyl0aGlzLl9tZXRob2RzW3RoaXMubWV0aG9kc1tiXV09ITA7dGhpcy5y
ZWN1cnNlPWEucmVjdXJzZXx8dGhpcy5yZWN1cnNlfHwhMSx0aGlzLmFzeW5jPWEuYXN5bmN8fCEx
LHRoaXMuZGVsaW1pdGVyPWEuZGVsaW1pdGVyfHwiLyIsdGhpcy5zdHJpY3Q9dHlwZW9mIGEuc3Ry
aWN0PT0idW5kZWZpbmVkIj8hMDphLnN0cmljdCx0aGlzLm5vdGZvdW5kPWEubm90Zm91bmQsdGhp
cy5yZXNvdXJjZT1hLnJlc291cmNlLHRoaXMuaGlzdG9yeT1hLmh0bWw1aGlzdG9yeSYmdGhpcy5o
aXN0b3J5U3VwcG9ydHx8ITEsdGhpcy5ydW5faW5faW5pdD10aGlzLmhpc3Rvcnk9PT0hMCYmYS5y
dW5faGFuZGxlcl9pbl9pbml0IT09ITEsdGhpcy5jb252ZXJ0X2hhc2hfaW5faW5pdD10aGlzLmhp
c3Rvcnk9PT0hMCYmYS5jb252ZXJ0X2hhc2hfaW5faW5pdCE9PSExLHRoaXMuZXZlcnk9e2FmdGVy
OmEuYWZ0ZXJ8fG51bGwsYmVmb3JlOmEuYmVmb3JlfHxudWxsLG9uOmEub258fG51bGx9O3JldHVy
biB0aGlzfSxlLnByb3RvdHlwZS5wYXJhbT1mdW5jdGlvbihhLGIpe2FbMF0hPT0iOiImJihhPSI6
IithKTt2YXIgYz1uZXcgUmVnRXhwKGEsImciKTt0aGlzLnBhcmFtc1thXT1mdW5jdGlvbihhKXty
ZXR1cm4gYS5yZXBsYWNlKGMsYi5zb3VyY2V8fGIpfTtyZXR1cm4gdGhpc30sZS5wcm90b3R5cGUu
b249ZS5wcm90b3R5cGUucm91dGU9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXM7IWMmJnR5cGVv
ZiBiPT0iZnVuY3Rpb24iJiYoYz1iLGI9YSxhPSJvbiIpO2lmKEFycmF5LmlzQXJyYXkoYikpcmV0
dXJuIGIuZm9yRWFjaChmdW5jdGlvbihiKXtkLm9uKGEsYixjKX0pO2Iuc291cmNlJiYoYj1iLnNv
dXJjZS5yZXBsYWNlKC9cXFwvL2lnLCIvIikpO2lmKEFycmF5LmlzQXJyYXkoYSkpcmV0dXJuIGEu
Zm9yRWFjaChmdW5jdGlvbihhKXtkLm9uKGEudG9Mb3dlckNhc2UoKSxiLGMpfSk7Yj1iLnNwbGl0
KG5ldyBSZWdFeHAodGhpcy5kZWxpbWl0ZXIpKSxiPWsoYix0aGlzLmRlbGltaXRlciksdGhpcy5p
bnNlcnQoYSx0aGlzLnNjb3BlLmNvbmNhdChiKSxjKX0sZS5wcm90b3R5cGUucGF0aD1mdW5jdGlv
bihhLGIpe3ZhciBjPXRoaXMsZD10aGlzLnNjb3BlLmxlbmd0aDthLnNvdXJjZSYmKGE9YS5zb3Vy
Y2UucmVwbGFjZSgvXFxcLy9pZywiLyIpKSxhPWEuc3BsaXQobmV3IFJlZ0V4cCh0aGlzLmRlbGlt
aXRlcikpLGE9ayhhLHRoaXMuZGVsaW1pdGVyKSx0aGlzLnNjb3BlPXRoaXMuc2NvcGUuY29uY2F0
KGEpLGIuY2FsbCh0aGlzLHRoaXMpLHRoaXMuc2NvcGUuc3BsaWNlKGQsYS5sZW5ndGgpfSxlLnBy
b3RvdHlwZS5kaXNwYXRjaD1mdW5jdGlvbihhLGIsYyl7ZnVuY3Rpb24gaCgpe2QubGFzdD1lLmFm
dGVyLGQuaW52b2tlKGQucnVubGlzdChlKSxkLGMpfXZhciBkPXRoaXMsZT10aGlzLnRyYXZlcnNl
KGEsYi5yZXBsYWNlKGwsIiIpLHRoaXMucm91dGVzLCIiKSxmPXRoaXMuX2ludm9rZWQsZzt0aGlz
Ll9pbnZva2VkPSEwO2lmKCFlfHxlLmxlbmd0aD09PTApe3RoaXMubGFzdD1bXSx0eXBlb2YgdGhp
cy5ub3Rmb3VuZD09ImZ1bmN0aW9uIiYmdGhpcy5pbnZva2UoW3RoaXMubm90Zm91bmRdLHttZXRo
b2Q6YSxwYXRoOmJ9LGMpO3JldHVybiExfXRoaXMucmVjdXJzZT09PSJmb3J3YXJkIiYmKGU9ZS5y
ZXZlcnNlKCkpLGc9dGhpcy5ldmVyeSYmdGhpcy5ldmVyeS5hZnRlcj9bdGhpcy5ldmVyeS5hZnRl
cl0uY29uY2F0KHRoaXMubGFzdCk6W3RoaXMubGFzdF07aWYoZyYmZy5sZW5ndGg+MCYmZil7dGhp
cy5hc3luYz90aGlzLmludm9rZShnLHRoaXMsaCk6KHRoaXMuaW52b2tlKGcsdGhpcyksaCgpKTty
ZXR1cm4hMH1oKCk7cmV0dXJuITB9LGUucHJvdG90eXBlLmludm9rZT1mdW5jdGlvbihhLGIsYyl7
dmFyIGQ9dGhpcyxlO3RoaXMuYXN5bmM/KGU9ZnVuY3Rpb24oYyxkKXtpZihBcnJheS5pc0FycmF5
KGMpKXJldHVybiBoKGMsZSxkKTt0eXBlb2YgYz09ImZ1bmN0aW9uIiYmYy5hcHBseShiLChhLmNh
cHR1cmVzfHxbXSkuY29uY2F0KGQpKX0saChhLGUsZnVuY3Rpb24oKXtjJiZjLmFwcGx5KGIsYXJn
dW1lbnRzKX0pKTooZT1mdW5jdGlvbihjKXtpZihBcnJheS5pc0FycmF5KGMpKXJldHVybiBmKGMs
ZSk7aWYodHlwZW9mIGM9PSJmdW5jdGlvbiIpcmV0dXJuIGMuYXBwbHkoYixhLmNhcHR1cmVzfHxb
XSk7dHlwZW9mIGM9PSJzdHJpbmciJiZkLnJlc291cmNlJiZkLnJlc291cmNlW2NdLmFwcGx5KGIs
YS5jYXB0dXJlc3x8W10pfSxmKGEsZSkpfSxlLnByb3RvdHlwZS50cmF2ZXJzZT1mdW5jdGlvbihh
LGIsYyxkLGUpe2Z1bmN0aW9uIGwoYSl7ZnVuY3Rpb24gYyhhKXtmb3IodmFyIGI9YS5sZW5ndGgt
MTtiPj0wO2ItLSlBcnJheS5pc0FycmF5KGFbYl0pPyhjKGFbYl0pLGFbYl0ubGVuZ3RoPT09MCYm
YS5zcGxpY2UoYiwxKSk6ZShhW2JdKXx8YS5zcGxpY2UoYiwxKX1mdW5jdGlvbiBiKGEpe3ZhciBj
PVtdO2Zvcih2YXIgZD0wO2Q8YS5sZW5ndGg7ZCsrKWNbZF09QXJyYXkuaXNBcnJheShhW2RdKT9i
KGFbZF0pOmFbZF07cmV0dXJuIGN9aWYoIWUpcmV0dXJuIGE7dmFyIGQ9YihhKTtkLm1hdGNoZWQ9
YS5tYXRjaGVkLGQuY2FwdHVyZXM9YS5jYXB0dXJlcyxkLmFmdGVyPWEuYWZ0ZXIuZmlsdGVyKGUp
LGMoZCk7cmV0dXJuIGR9dmFyIGY9W10sZyxoLGksaixrO2lmKGI9PT10aGlzLmRlbGltaXRlciYm
Y1thXSl7aj1bW2MuYmVmb3JlLGNbYV1dLmZpbHRlcihCb29sZWFuKV0sai5hZnRlcj1bYy5hZnRl
cl0uZmlsdGVyKEJvb2xlYW4pLGoubWF0Y2hlZD0hMCxqLmNhcHR1cmVzPVtdO3JldHVybiBsKGop
fWZvcih2YXIgbSBpbiBjKWlmKGMuaGFzT3duUHJvcGVydHkobSkmJighdGhpcy5fbWV0aG9kc1tt
XXx8dGhpcy5fbWV0aG9kc1ttXSYmdHlwZW9mIGNbbV09PSJvYmplY3QiJiYhQXJyYXkuaXNBcnJh
eShjW21dKSkpe2c9aD1kK3RoaXMuZGVsaW1pdGVyK20sdGhpcy5zdHJpY3R8fChoKz0iWyIrdGhp
cy5kZWxpbWl0ZXIrIl0/IiksaT1iLm1hdGNoKG5ldyBSZWdFeHAoIl4iK2gpKTtpZighaSljb250
aW51ZTtpZihpWzBdJiZpWzBdPT1iJiZjW21dW2FdKXtqPVtbY1ttXS5iZWZvcmUsY1ttXVthXV0u
ZmlsdGVyKEJvb2xlYW4pXSxqLmFmdGVyPVtjW21dLmFmdGVyXS5maWx0ZXIoQm9vbGVhbiksai5t
YXRjaGVkPSEwLGouY2FwdHVyZXM9aS5zbGljZSgxKSx0aGlzLnJlY3Vyc2UmJmM9PT10aGlzLnJv
dXRlcyYmKGoucHVzaChbYy5iZWZvcmUsYy5vbl0uZmlsdGVyKEJvb2xlYW4pKSxqLmFmdGVyPWou
YWZ0ZXIuY29uY2F0KFtjLmFmdGVyXS5maWx0ZXIoQm9vbGVhbikpKTtyZXR1cm4gbChqKX1qPXRo
aXMudHJhdmVyc2UoYSxiLGNbbV0sZyk7aWYoai5tYXRjaGVkKXtqLmxlbmd0aD4wJiYoZj1mLmNv
bmNhdChqKSksdGhpcy5yZWN1cnNlJiYoZi5wdXNoKFtjW21dLmJlZm9yZSxjW21dLm9uXS5maWx0
ZXIoQm9vbGVhbikpLGouYWZ0ZXI9ai5hZnRlci5jb25jYXQoW2NbbV0uYWZ0ZXJdLmZpbHRlcihC
b29sZWFuKSksYz09PXRoaXMucm91dGVzJiYoZi5wdXNoKFtjLmJlZm9yZSxjLm9uXS5maWx0ZXIo
Qm9vbGVhbikpLGouYWZ0ZXI9ai5hZnRlci5jb25jYXQoW2MuYWZ0ZXJdLmZpbHRlcihCb29sZWFu
KSkpKSxmLm1hdGNoZWQ9ITAsZi5jYXB0dXJlcz1qLmNhcHR1cmVzLGYuYWZ0ZXI9ai5hZnRlcjty
ZXR1cm4gbChmKX19cmV0dXJuITF9LGUucHJvdG90eXBlLmluc2VydD1mdW5jdGlvbihhLGIsYyxk
KXt2YXIgZSxmLGcsaCxpO2I9Yi5maWx0ZXIoZnVuY3Rpb24oYSl7cmV0dXJuIGEmJmEubGVuZ3Ro
PjB9KSxkPWR8fHRoaXMucm91dGVzLGk9Yi5zaGlmdCgpLC9cOnxcKi8udGVzdChpKSYmIS9cXGR8
XFx3Ly50ZXN0KGkpJiYoaT1qKGksdGhpcy5wYXJhbXMpKTtpZihiLmxlbmd0aD4wKXtkW2ldPWRb
aV18fHt9O3JldHVybiB0aGlzLmluc2VydChhLGIsYyxkW2ldKX17aWYoISFpfHwhIWIubGVuZ3Ro
fHxkIT09dGhpcy5yb3V0ZXMpe2Y9dHlwZW9mIGRbaV0sZz1BcnJheS5pc0FycmF5KGRbaV0pO2lm
KGRbaV0mJiFnJiZmPT0ib2JqZWN0Iil7ZT10eXBlb2YgZFtpXVthXTtzd2l0Y2goZSl7Y2FzZSJm
dW5jdGlvbiI6ZFtpXVthXT1bZFtpXVthXSxjXTtyZXR1cm47Y2FzZSJvYmplY3QiOmRbaV1bYV0u
cHVzaChjKTtyZXR1cm47Y2FzZSJ1bmRlZmluZWQiOmRbaV1bYV09YztyZXR1cm59fWVsc2UgaWYo
Zj09InVuZGVmaW5lZCIpe2g9e30saFthXT1jLGRbaV09aDtyZXR1cm59dGhyb3cgbmV3IEVycm9y
KCJJbnZhbGlkIHJvdXRlIGNvbnRleHQ6ICIrZil9ZT10eXBlb2YgZFthXTtzd2l0Y2goZSl7Y2Fz
ZSJmdW5jdGlvbiI6ZFthXT1bZFthXSxjXTtyZXR1cm47Y2FzZSJvYmplY3QiOmRbYV0ucHVzaChj
KTtyZXR1cm47Y2FzZSJ1bmRlZmluZWQiOmRbYV09YztyZXR1cm59fX0sZS5wcm90b3R5cGUuZXh0
ZW5kPWZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGUoYSl7Yi5fbWV0aG9kc1thXT0hMCxiW2FdPWZ1bmN0
aW9uKCl7dmFyIGM9YXJndW1lbnRzLmxlbmd0aD09PTE/W2EsIiJdOlthXTtiLm9uLmFwcGx5KGIs
Yy5jb25jYXQoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSkpfX12YXIgYj10
aGlzLGM9YS5sZW5ndGgsZDtmb3IoZD0wO2Q8YztkKyspZShhW2RdKX0sZS5wcm90b3R5cGUucnVu
bGlzdD1mdW5jdGlvbihhKXt2YXIgYj10aGlzLmV2ZXJ5JiZ0aGlzLmV2ZXJ5LmJlZm9yZT9bdGhp
cy5ldmVyeS5iZWZvcmVdLmNvbmNhdChnKGEpKTpnKGEpO3RoaXMuZXZlcnkmJnRoaXMuZXZlcnku
b24mJmIucHVzaCh0aGlzLmV2ZXJ5Lm9uKSxiLmNhcHR1cmVzPWEuY2FwdHVyZXMsYi5zb3VyY2U9
YS5zb3VyY2U7cmV0dXJuIGJ9LGUucHJvdG90eXBlLm1vdW50PWZ1bmN0aW9uKGEsYil7ZnVuY3Rp
b24gZChiLGQpe3ZhciBlPWIsZj1iLnNwbGl0KGMuZGVsaW1pdGVyKSxnPXR5cGVvZiBhW2JdLGg9
ZlswXT09PSIifHwhYy5fbWV0aG9kc1tmWzBdXSxpPWg/Im9uIjplO2gmJihlPWUuc2xpY2UoKGUu
bWF0Y2gobmV3IFJlZ0V4cCgiXiIrYy5kZWxpbWl0ZXIpKXx8WyIiXSlbMF0ubGVuZ3RoKSxmLnNo
aWZ0KCkpO2gmJmc9PT0ib2JqZWN0IiYmIUFycmF5LmlzQXJyYXkoYVtiXSk/KGQ9ZC5jb25jYXQo
ZiksYy5tb3VudChhW2JdLGQpKTooaCYmKGQ9ZC5jb25jYXQoZS5zcGxpdChjLmRlbGltaXRlcikp
LGQ9ayhkLGMuZGVsaW1pdGVyKSksYy5pbnNlcnQoaSxkLGFbYl0pKX1pZighIWEmJnR5cGVvZiBh
PT0ib2JqZWN0IiYmIUFycmF5LmlzQXJyYXkoYSkpe3ZhciBjPXRoaXM7Yj1ifHxbXSxBcnJheS5p
c0FycmF5KGIpfHwoYj1iLnNwbGl0KGMuZGVsaW1pdGVyKSk7Zm9yKHZhciBlIGluIGEpYS5oYXNP
d25Qcm9wZXJ0eShlKSYmZChlLGIuc2xpY2UoMCkpfX19KSh0eXBlb2YgZXhwb3J0cz09Im9iamVj
dCI/ZXhwb3J0czp3aW5kb3cpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9kaXN0L2VuZGVyLmpz
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJlY3Rvci9kaXN0L2VuZGVyLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmZlM2ViYzQxYjBiZGUwNjRiZmQzMzYzZmQ1ZGQwYjM0MDZlZmI5ZWYKLS0t
IC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVjdG9y
L2Rpc3QvZW5kZXIuanMKQEAgLTAsMCArMSwzIEBACiskLmVuZGVyKHsKKyAgcm91dGVyOiBSb3V0
ZXIKK30pOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVfbW9kdWxlcy9kaXJl
Y3Rvci9wYWNrYWdlLmpzb24gYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9qcXVlcnkvbm9kZV9tb2R1bGVzL2RpcmVj
dG9yL3BhY2thZ2UuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMGJkMjk2MjcyN2Y0NjRkY2JlMDk4MTcyYTk5
ZmE4ZGU3NmFiOWJkCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvanF1ZXJ5L25vZGVf
bW9kdWxlcy9kaXJlY3Rvci9wYWNrYWdlLmpzb24KQEAgLTAsMCArMSw0MSBAQAoreworICAibmFt
ZSI6ICJkaXJlY3RvciIsCisgICJkZXNjcmlwdGlvbiI6ICJBIGNsaWVudCBTaWRlL1NlcnZlciBT
aWRlIFJvdXRlciIsCisgICJhdXRob3IiOiAiQ2hhcmxpZSBSb2JiaW5zIDxjaGFybGllLnJvYmJp
bnNAZ21haWwuY29tPiIsCisgICJ2ZXJzaW9uIjogIjEuMi44IiwKKyAgIm1haW50YWluZXJzIjog
WworICAgICJoaWoxbnggPHBhb2xvQG5vZGVqaXRzdS5jb20+IiwKKyAgICAiYmVhdWd1bmRlcnNv
biA8YmVhdUBiZWF1Z3VuZGVyc29uLmNvbT4iCisgIF0sCisgICJyZXBvc2l0b3J5IjogeworICAg
ICJ0eXBlIjogImdpdCIsCisgICAgInVybCI6ICJodHRwOi8vZ2l0aHViLmNvbS9mbGF0aXJvbi9k
aXJlY3Rvci5naXQiCisgIH0sCisgICJrZXl3b3JkcyI6IFsKKyAgICAiVVJMIiwKKyAgICAicm91
dGVyIiwKKyAgICAiaHR0cCIsCisgICAgImNsaSIsCisgICAgImZsYXRpcm9uIiwKKyAgICAiY2xp
ZW50IHNpZGUiLAorICAgICJlbmRlciIKKyAgXSwKKyAgImRldkRlcGVuZGVuY2llcyI6IHsKKyAg
ICAiYXBpLWVhc3kiOiAiMC40LngiLAorICAgICJjb2Rlc3VyZ2VvbiI6ICJodHRwczovL2dpdGh1
Yi5jb20vaGlqMW54L2NvZGVzdXJnZW9uL3RhcmJhbGwvbWFzdGVyIiwKKyAgICAiY29sb3JzIjog
IjEuMC54IiwKKyAgICAicXVuaXRqcyI6ICIxLjkueCIsCisgICAgInJlcXVlc3QiOiAiMi40OS54
IiwKKyAgICAidWdsaWZ5LWpzIjogIjIuNC54IiwKKyAgICAidm93cyI6ICIwLjguMCIKKyAgfSwK
KyAgImVuZGVyIjogIi4vYnVpbGQvZW5kZXIuanMiLAorICAiYnJvd3NlcmlmeSI6ICIuL2J1aWxk
L2RpcmVjdG9yIiwKKyAgIm1haW4iOiAiLi9saWIvZGlyZWN0b3IiLAorICAiZW5naW5lcyI6IHsK
KyAgICAibm9kZSI6ICI+PSAwLjguMCIKKyAgfSwKKyAgInNjcmlwdHMiOiB7CisgICAgInRlc3Qi
OiAidm93cyB0ZXN0L3NlcnZlci8qLyotdGVzdC5qcyAtLXNwZWMiCisgIH0KK30KZGlmZiAtLWdp
dCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvZnVuY3Rp
b25hbC1wcm9nLWV4YW1wbGVzL2VsbS9pbmRleC5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9mdW5jdGlvbmFsLXByb2ctZXhhbXBsZXMvZWxtL2lu
ZGV4Lmh0bWwKaW5kZXggOTUxNGM0Y2Q4YTA2ODFmMjE2MzE1OGQ4Y2ZhMjk2YWI1ODk4NzdjZi4u
OTkxMzRhMjVmYzUzOWM4ZThkNTNlNDExY2Y2OGRiODdlM2JlZGNmZiAxMDA2NDQKLS0tIGEvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9mdW5jdGlvbmFsLXBy
b2ctZXhhbXBsZXMvZWxtL2luZGV4Lmh0bWwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9mdW5jdGlvbmFsLXByb2ctZXhhbXBsZXMvZWxtL2luZGV4
Lmh0bWwKQEAgLTE2LDcgKzE2LDcgQEAKIDwvaGVhZD4KIAogPGJvZHk+Ci08c2NyaXB0IHNyYz0i
YnVpbGQvZWxtLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJkaXN0L2VsbS5qcyI+PC9zY3Jp
cHQ+CiA8c2NyaXB0PgogICAgIChmdW5jdGlvbiAoKSB7CiAgICAgICAgIC8vIHZhciByZXN1bHQg
PSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZWxtLXRvZG8tbW9kZWwnKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>